diff --git a/google-breakpad/AUTHORS b/google-breakpad/AUTHORS
new file mode 100644
index 0000000..4858b37
--- /dev/null
+++ b/google-breakpad/AUTHORS
@@ -0,0 +1 @@
+opensource@google.com
diff --git a/google-breakpad/Android.mk b/google-breakpad/Android.mk
new file mode 100644
index 0000000..a181dc7
--- /dev/null
+++ b/google-breakpad/Android.mk
@@ -0,0 +1,186 @@
+# Copyright (C) 2015 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+LOCAL_PATH := $(call my-dir)
+
+# Static library.
+# =================================================
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := breakpad_client
+
+LOCAL_CPP_EXTENSION := .cc
+
+LOCAL_SRC_FILES := \
+    src/client/linux/dump_writer_common/seccomp_unwinder.cc \
+    src/client/linux/dump_writer_common/thread_info.cc \
+    src/client/linux/dump_writer_common/ucontext_reader.cc \
+    src/client/linux/handler/minidump_descriptor.cc \
+    src/client/linux/minidump_writer/linux_core_dumper.cc \
+    src/client/linux/minidump_writer/linux_dumper.cc \
+    src/client/linux/minidump_writer/linux_ptrace_dumper.cc \
+    src/client/linux/minidump_writer/minidump_writer.cc \
+    src/client/minidump_file_writer.cc \
+    src/common/convert_UTF.c \
+    src/common/linux/elf_core_dump.cc \
+    src/common/linux/elfutils.cc \
+    src/common/linux/file_id.cc \
+    src/common/linux/guid_creator.cc \
+    src/common/linux/linux_libc_support.cc \
+    src/common/linux/memory_mapped_file.cc \
+    src/common/linux/safe_readlink.cc \
+    src/common/string_conversion.cc \
+
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH)/src/common/android/include \
+    $(LOCAL_PATH)/src \
+
+LOCAL_CFLAGS := \
+    -Wno-unused-parameter \
+    -Wno-tautological-compare
+
+LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_C_INCLUDES)
+
+# Work around b/25435766 core2md segfault.
+LOCAL_CLANG_CFLAGS_x86 += -mno-stackrealign
+LOCAL_CLANG := true
+
+include $(BUILD_STATIC_LIBRARY)
+
+# core2md binary.
+# =================================================
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := core2md
+
+LOCAL_CPP_EXTENSION := .cc
+
+LOCAL_SRC_FILES := src/tools/linux/core2md/core2md.cc
+
+LOCAL_STATIC_LIBRARIES := breakpad_client
+
+# Work around b/25435766 core2md segfault.
+LOCAL_CLANG_CFLAGS_x86 += -mno-stackrealign
+LOCAL_CLANG := true
+
+include $(BUILD_EXECUTABLE)
+
+# core2md binary (32-bit)
+# =================================================
+include $(CLEAR_VARS)
+LOCAL_32_BIT_ONLY := true
+LOCAL_MODULE := core2md_32
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_SRC_FILES := src/tools/linux/core2md/core2md.cc
+LOCAL_STATIC_LIBRARIES := breakpad_client
+
+# Work around b/25435766 core2md segfault.
+LOCAL_CLANG_CFLAGS_x86 += -mno-stackrealign
+LOCAL_CLANG := true
+include $(BUILD_EXECUTABLE)
+
+# dump_syms host tool.
+# =================================================
+include $(CLEAR_VARS)
+LOCAL_MODULE := dump_syms
+LOCAL_MODULE_HOST_OS := linux
+LOCAL_CLANG := true
+LOCAL_CPPFLAGS_linux := -DHAVE_A_OUT_H -Wno-unused-parameter
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH)/src
+LOCAL_SRC_FILES := \
+    src/common/dwarf/bytereader.cc \
+    src/common/dwarf/dwarf2diehandler.cc \
+    src/common/dwarf/dwarf2reader.cc \
+    src/common/dwarf_cfi_to_module.cc \
+    src/common/dwarf_cu_to_module.cc \
+    src/common/dwarf_line_to_module.cc \
+    src/common/language.cc \
+    src/common/module.cc \
+    src/common/stabs_reader.cc \
+    src/common/stabs_to_module.cc
+LOCAL_SRC_FILES_linux := \
+    src/common/linux/crc32.cc \
+    src/common/linux/dump_symbols.cc \
+    src/common/linux/elfutils.cc \
+    src/common/linux/elf_symbols_to_module.cc \
+    src/common/linux/file_id.cc \
+    src/common/linux/linux_libc_support.cc \
+    src/common/linux/memory_mapped_file.cc \
+    src/tools/linux/dump_syms/dump_syms.cc
+include $(BUILD_HOST_EXECUTABLE)
+
+# minidump_stackwalk host tool.
+# =================================================
+include $(CLEAR_VARS)
+LOCAL_MODULE := minidump_stackwalk
+LOCAL_MODULE_HOST_OS := linux
+LOCAL_CLANG := true
+LOCAL_CPPFLAGS_linux := -DHAVE_A_OUT_H -Wno-unused-parameter
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_C_INCLUDES := \
+    $(LOCAL_PATH)/src
+
+# libdisasm
+LOCAL_SRC_FILES += \
+		src/third_party/libdisasm/ia32_implicit.c \
+		src/third_party/libdisasm/ia32_insn.c \
+		src/third_party/libdisasm/ia32_invariant.c \
+		src/third_party/libdisasm/ia32_modrm.c \
+		src/third_party/libdisasm/ia32_opcode_tables.c \
+		src/third_party/libdisasm/ia32_operand.c \
+		src/third_party/libdisasm/ia32_reg.c \
+		src/third_party/libdisasm/ia32_settings.c \
+		src/third_party/libdisasm/x86_disasm.c \
+		src/third_party/libdisasm/x86_format.c \
+		src/third_party/libdisasm/x86_imm.c \
+		src/third_party/libdisasm/x86_insn.c \
+		src/third_party/libdisasm/x86_misc.c \
+		src/third_party/libdisasm/x86_operand_list.c \
+
+LOCAL_SRC_FILES += \
+    src/processor/minidump_stackwalk.cc \
+		src/processor/basic_code_modules.cc \
+		src/processor/basic_source_line_resolver.cc \
+		src/processor/call_stack.cc \
+		src/processor/cfi_frame_info.cc \
+		src/processor/disassembler_x86.cc \
+		src/processor/dump_context.cc \
+		src/processor/dump_object.cc \
+		src/processor/exploitability.cc \
+		src/processor/exploitability_win.cc \
+		src/processor/exploitability_linux.cc \
+		src/processor/logging.cc \
+		src/processor/minidump.cc \
+		src/processor/minidump_processor.cc \
+		src/processor/pathname_stripper.cc \
+		src/processor/process_state.cc \
+		src/processor/simple_symbol_supplier.cc \
+		src/processor/source_line_resolver_base.cc \
+		src/processor/stackwalk_common.cc \
+		src/processor/stackwalker.cc \
+		src/processor/stackwalker_amd64.cc \
+		src/processor/stackwalker_arm.cc \
+		src/processor/stackwalker_arm64.cc \
+		src/processor/stackwalker_mips.cc \
+		src/processor/stackwalker_ppc.cc \
+		src/processor/stackwalker_ppc64.cc \
+		src/processor/stackwalker_sparc.cc \
+		src/processor/stackwalker_x86.cc \
+		src/processor/stack_frame_symbolizer.cc \
+		src/processor/symbolic_constants_win.cc \
+		src/processor/tokenize.cc \
+
+include $(BUILD_HOST_EXECUTABLE)
diff --git a/google-breakpad/ChangeLog b/google-breakpad/ChangeLog
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/google-breakpad/ChangeLog
diff --git a/google-breakpad/DEPS b/google-breakpad/DEPS
new file mode 100644
index 0000000..b63afa6
--- /dev/null
+++ b/google-breakpad/DEPS
@@ -0,0 +1,66 @@
+# Copyright 2010 Google Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# This is used to mimic the svn:externals mechanism for gclient (both Git and
+# SVN) based checkouts of Breakpad. As such, its use is entirely optional. If
+# using a manually managed SVN checkout as opposed to a gclient managed checkout
+# you can still use the hooks mechanism for generating project files by calling
+# 'gclient runhooks' rather than 'gclient sync'.
+
+deps = {
+  # Logging code.
+  "src/src/third_party/glog":
+    "http://google-glog.googlecode.com/svn/trunk@97",
+
+  # Testing libraries and utilities.
+  "src/src/testing": "http://googlemock.googlecode.com/svn/trunk@408",
+  "src/src/testing/gtest": "http://googletest.googlecode.com/svn/trunk@615",
+
+  # Protobuf.
+  "src/src/third_party/protobuf/protobuf":
+    "http://protobuf.googlecode.com/svn/trunk@407",
+
+  # GYP project generator.
+  "src/src/tools/gyp": "http://gyp.googlecode.com/svn/trunk@1886",
+
+  # Linux syscall support.
+  "src/src/third_party/lss":
+    "http://linux-syscall-support.googlecode.com/svn/trunk/lss@24",
+}
+
+hooks = [
+  {
+    # TODO(chrisha): Fix the GYP files so that they work without
+    # --no-circular-check.
+    "pattern": ".",
+    "action": ["python",
+               "src/src/tools/gyp/gyp_main.py",
+               "--no-circular-check",
+               "src/src/client/windows/breakpad_client.gyp"],
+  },
+]
diff --git a/google-breakpad/INSTALL b/google-breakpad/INSTALL
new file mode 100644
index 0000000..007e939
--- /dev/null
+++ b/google-breakpad/INSTALL
@@ -0,0 +1,370 @@
+Installation Instructions
+*************************
+
+Copyright (C) 1994-1996, 1999-2002, 2004-2013 Free Software Foundation,
+Inc.
+
+   Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.  This file is offered as-is,
+without warranty of any kind.
+
+Basic Installation
+==================
+
+   Briefly, the shell commands `./configure; make; make install' should
+configure, build, and install this package.  The following
+more-detailed instructions are generic; see the `README' file for
+instructions specific to this package.  Some packages provide this
+`INSTALL' file but do not implement all of the features documented
+below.  The lack of an optional feature in a given package is not
+necessarily a bug.  More recommendations for GNU packages can be found
+in *note Makefile Conventions: (standards)Makefile Conventions.
+
+   The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation.  It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions.  Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
+
+   It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring.  Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.
+
+   If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release.  If you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+   The file `configure.ac' (or `configure.in') is used to create
+`configure' by a program called `autoconf'.  You need `configure.ac' if
+you want to change it or regenerate `configure' using a newer version
+of `autoconf'.
+
+   The simplest way to compile this package is:
+
+  1. `cd' to the directory containing the package's source code and type
+     `./configure' to configure the package for your system.
+
+     Running `configure' might take a while.  While running, it prints
+     some messages telling which features it is checking for.
+
+  2. Type `make' to compile the package.
+
+  3. Optionally, type `make check' to run any self-tests that come with
+     the package, generally using the just-built uninstalled binaries.
+
+  4. Type `make install' to install the programs and any data files and
+     documentation.  When installing into a prefix owned by root, it is
+     recommended that the package be configured and built as a regular
+     user, and only the `make install' phase executed with root
+     privileges.
+
+  5. Optionally, type `make installcheck' to repeat any self-tests, but
+     this time using the binaries in their final installed location.
+     This target does not install anything.  Running this target as a
+     regular user, particularly if the prior `make install' required
+     root privileges, verifies that the installation completed
+     correctly.
+
+  6. You can remove the program binaries and object files from the
+     source code directory by typing `make clean'.  To also remove the
+     files that `configure' created (so you can compile the package for
+     a different kind of computer), type `make distclean'.  There is
+     also a `make maintainer-clean' target, but that is intended mainly
+     for the package's developers.  If you use it, you may have to get
+     all sorts of other programs in order to regenerate files that came
+     with the distribution.
+
+  7. Often, you can also type `make uninstall' to remove the installed
+     files again.  In practice, not all packages have tested that
+     uninstallation works correctly, even though it is required by the
+     GNU Coding Standards.
+
+  8. Some packages, particularly those that use Automake, provide `make
+     distcheck', which can by used by developers to test that all other
+     targets like `make install' and `make uninstall' work correctly.
+     This target is generally not run by end users.
+
+Compilers and Options
+=====================
+
+   Some systems require unusual options for compilation or linking that
+the `configure' script does not know about.  Run `./configure --help'
+for details on some of the pertinent environment variables.
+
+   You can give `configure' initial values for configuration parameters
+by setting variables in the command line or in the environment.  Here
+is an example:
+
+     ./configure CC=c99 CFLAGS=-g LIBS=-lposix
+
+   *Note Defining Variables::, for more details.
+
+Compiling For Multiple Architectures
+====================================
+
+   You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory.  To do this, you can use GNU `make'.  `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script.  `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.  This
+is known as a "VPATH" build.
+
+   With a non-GNU `make', it is safer to compile the package for one
+architecture at a time in the source code directory.  After you have
+installed the package for one architecture, use `make distclean' before
+reconfiguring for another architecture.
+
+   On MacOS X 10.5 and later systems, you can create libraries and
+executables that work on multiple system types--known as "fat" or
+"universal" binaries--by specifying multiple `-arch' options to the
+compiler but only a single `-arch' option to the preprocessor.  Like
+this:
+
+     ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+                 CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+                 CPP="gcc -E" CXXCPP="g++ -E"
+
+   This is not guaranteed to produce working output in all cases, you
+may have to build one architecture at a time and combine the results
+using the `lipo' tool if you have problems.
+
+Installation Names
+==================
+
+   By default, `make install' installs the package's commands under
+`/usr/local/bin', include files under `/usr/local/include', etc.  You
+can specify an installation prefix other than `/usr/local' by giving
+`configure' the option `--prefix=PREFIX', where PREFIX must be an
+absolute file name.
+
+   You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files.  If you
+pass the option `--exec-prefix=PREFIX' to `configure', the package uses
+PREFIX as the prefix for installing programs and libraries.
+Documentation and other data files still use the regular prefix.
+
+   In addition, if you use an unusual directory layout you can give
+options like `--bindir=DIR' to specify different values for particular
+kinds of files.  Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them.  In general, the
+default for these options is expressed in terms of `${prefix}', so that
+specifying just `--prefix' will affect all of the other directory
+specifications that were not explicitly provided.
+
+   The most portable way to affect installation locations is to pass the
+correct locations to `configure'; however, many packages provide one or
+both of the following shortcuts of passing variable assignments to the
+`make install' command line to change installation locations without
+having to reconfigure or recompile.
+
+   The first method involves providing an override variable for each
+affected directory.  For example, `make install
+prefix=/alternate/directory' will choose an alternate location for all
+directory configuration variables that were expressed in terms of
+`${prefix}'.  Any directories that were specified during `configure',
+but not in terms of `${prefix}', must each be overridden at install
+time for the entire installation to be relocated.  The approach of
+makefile variable overrides for each directory variable is required by
+the GNU Coding Standards, and ideally causes no recompilation.
+However, some platforms have known limitations with the semantics of
+shared libraries that end up requiring recompilation when using this
+method, particularly noticeable in packages that use GNU Libtool.
+
+   The second method involves providing the `DESTDIR' variable.  For
+example, `make install DESTDIR=/alternate/directory' will prepend
+`/alternate/directory' before all installation names.  The approach of
+`DESTDIR' overrides is not required by the GNU Coding Standards, and
+does not work on platforms that have drive letters.  On the other hand,
+it does better at avoiding recompilation issues, and works well even
+when some directory options were not specified in terms of `${prefix}'
+at `configure' time.
+
+Optional Features
+=================
+
+   If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+   Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System).  The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+   For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+   Some packages offer the ability to configure how verbose the
+execution of `make' will be.  For these packages, running `./configure
+--enable-silent-rules' sets the default to minimal output, which can be
+overridden with `make V=1'; while running `./configure
+--disable-silent-rules' sets the default to verbose, which can be
+overridden with `make V=0'.
+
+Particular systems
+==================
+
+   On HP-UX, the default C compiler is not ANSI C compatible.  If GNU
+CC is not installed, it is recommended to use the following options in
+order to use an ANSI C compiler:
+
+     ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
+
+and if that doesn't work, install pre-built binaries of GCC for HP-UX.
+
+   HP-UX `make' updates targets which have the same time stamps as
+their prerequisites, which makes it generally unusable when shipped
+generated files such as `configure' are involved.  Use GNU `make'
+instead.
+
+   On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
+parse its `<wchar.h>' header file.  The option `-nodtk' can be used as
+a workaround.  If GNU CC is not installed, it is therefore recommended
+to try
+
+     ./configure CC="cc"
+
+and if that doesn't work, try
+
+     ./configure CC="cc -nodtk"
+
+   On Solaris, don't put `/usr/ucb' early in your `PATH'.  This
+directory contains several dysfunctional programs; working variants of
+these programs are available in `/usr/bin'.  So, if you need `/usr/ucb'
+in your `PATH', put it _after_ `/usr/bin'.
+
+   On Haiku, software installed for all users goes in `/boot/common',
+not `/usr/local'.  It is recommended to use the following options:
+
+     ./configure --prefix=/boot/common
+
+Specifying the System Type
+==========================
+
+   There may be some features `configure' cannot figure out
+automatically, but needs to determine by the type of machine the package
+will run on.  Usually, assuming the package is built to be run on the
+_same_ architectures, `configure' can figure that out, but if it prints
+a message saying it cannot guess the machine type, give it the
+`--build=TYPE' option.  TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
+
+     CPU-COMPANY-SYSTEM
+
+where SYSTEM can have one of these forms:
+
+     OS
+     KERNEL-OS
+
+   See the file `config.sub' for the possible values of each field.  If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the machine type.
+
+   If you are _building_ compiler tools for cross-compiling, you should
+use the option `--target=TYPE' to select the type of system they will
+produce code for.
+
+   If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with `--host=TYPE'.
+
+Sharing Defaults
+================
+
+   If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists.  Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Defining Variables
+==================
+
+   Variables not defined in a site shell script can be set in the
+environment passed to `configure'.  However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost.  In order to avoid this problem, you should set
+them in the `configure' command line, using `VAR=value'.  For example:
+
+     ./configure CC=/usr/local2/bin/gcc
+
+causes the specified `gcc' to be used as the C compiler (unless it is
+overridden in the site shell script).
+
+Unfortunately, this technique does not work for `CONFIG_SHELL' due to
+an Autoconf limitation.  Until the limitation is lifted, you can use
+this workaround:
+
+     CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
+
+`configure' Invocation
+======================
+
+   `configure' recognizes the following options to control how it
+operates.
+
+`--help'
+`-h'
+     Print a summary of all of the options to `configure', and exit.
+
+`--help=short'
+`--help=recursive'
+     Print a summary of the options unique to this package's
+     `configure', and exit.  The `short' variant lists options used
+     only in the top level, while the `recursive' variant lists options
+     also present in any nested packages.
+
+`--version'
+`-V'
+     Print the version of Autoconf used to generate the `configure'
+     script, and exit.
+
+`--cache-file=FILE'
+     Enable the cache: use and save the results of the tests in FILE,
+     traditionally `config.cache'.  FILE defaults to `/dev/null' to
+     disable caching.
+
+`--config-cache'
+`-C'
+     Alias for `--cache-file=config.cache'.
+
+`--quiet'
+`--silent'
+`-q'
+     Do not print messages saying which checks are being made.  To
+     suppress all normal output, redirect it to `/dev/null' (any error
+     messages will still be shown).
+
+`--srcdir=DIR'
+     Look for the package's source code in directory DIR.  Usually
+     `configure' can determine that directory automatically.
+
+`--prefix=DIR'
+     Use DIR as the installation prefix.  *note Installation Names::
+     for more details, including other options available for fine-tuning
+     the installation locations.
+
+`--no-create'
+`-n'
+     Run the configure checks, but stop before creating any output
+     files.
+
+`configure' also accepts some other, not widely useful, options.  Run
+`configure --help' for more details.
diff --git a/google-breakpad/LICENSE b/google-breakpad/LICENSE
new file mode 100644
index 0000000..95207bd
--- /dev/null
+++ b/google-breakpad/LICENSE
@@ -0,0 +1,50 @@
+Copyright (c) 2006, Google Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+    * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+    * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+--------------------------------------------------------------------
+
+Copyright 2001-2004 Unicode, Inc.
+
+Disclaimer
+
+This source code is provided as is by Unicode, Inc. No claims are
+made as to fitness for any particular purpose. No warranties of any
+kind are expressed or implied. The recipient agrees to determine
+applicability of information provided. If this file has been
+purchased on magnetic or optical media from Unicode, Inc., the
+sole remedy for any claim will be exchange of defective media
+within 90 days of receipt.
+
+Limitations on Rights to Redistribute This Code
+
+Unicode, Inc. hereby grants the right to freely use the information
+supplied in this file in the creation of products supporting the
+Unicode Standard, and to make copies of this file in any form
+for internal or external distribution as long as this notice
+remains attached.
diff --git a/google-breakpad/MODULE_LICENSE_GOOGLE b/google-breakpad/MODULE_LICENSE_GOOGLE
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/google-breakpad/MODULE_LICENSE_GOOGLE
diff --git a/google-breakpad/Makefile.am b/google-breakpad/Makefile.am
new file mode 100644
index 0000000..fe5848d
--- /dev/null
+++ b/google-breakpad/Makefile.am
@@ -0,0 +1,1356 @@
+## Process this file with automake to produce Makefile.in
+
+# Copyright (c) 2011, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+# This allows #includes to be relative to src/
+AM_CPPFLAGS = -I$(top_srcdir)/src
+AM_CFLAGS =
+AM_CXXFLAGS =
+
+if ANDROID_HOST
+# This allows using fixed NDK headers when building for Android.
+AM_CXXFLAGS += -I$(top_srcdir)/src/common/android/include
+# This is only necessary for building the unit tests until GTest is upgraded
+# to a future version.
+AM_CXXFLAGS += -I$(top_srcdir)/src/common/android/testing/include
+endif
+
+if GCC
+# These are good warnings to be treated as errors
+AM_CXXFLAGS += \
+	-Werror=missing-braces \
+	-Werror=non-virtual-dtor \
+	-Werror=overloaded-virtual \
+	-Werror=reorder \
+	-Werror=sign-compare \
+	-Werror=unused-variable \
+	-Werror=vla
+endif
+
+if LINUX_HOST
+# Build as PIC on Linux, for linux_client_unittest_shlib
+AM_CFLAGS += -fPIC
+AM_CXXFLAGS += -fPIC
+endif
+
+# Specify include paths for ac macros
+ACLOCAL_AMFLAGS = -I m4
+
+# License file is called LICENSE not COPYING
+AUTOMAKE_OPTIONS = foreign
+
+## Documentation
+docdir = $(prefix)/share/doc/$(PACKAGE)-$(VERSION)
+
+dist_doc_DATA = \
+	AUTHORS \
+	ChangeLog \
+	INSTALL \
+	LICENSE \
+	NEWS \
+	README
+
+## Headers
+if LINUX_HOST
+includeclhdir = $(includedir)/$(PACKAGE)/client/linux/handler
+includeclh_HEADERS = $(top_srcdir)/src/client/linux/handler/*.h
+
+includeclmdir = $(includedir)/$(PACKAGE)/client/linux/minidump_writer
+includeclm_HEADERS = $(top_srcdir)/src/client/linux/minidump_writer/*.h
+
+includeclcdir = $(includedir)/$(PACKAGE)/client/linux/crash_generation
+includeclc_HEADERS = $(top_srcdir)/src/client/linux/crash_generation/*.h
+
+includelssdir = $(includedir)/$(PACKAGE)/third_party/lss
+includelss_HEADERS = $(top_srcdir)/src/third_party/lss/*.h
+
+includecldir = $(includedir)/$(PACKAGE)/common/linux
+includecl_HEADERS = $(top_srcdir)/src/common/linux/*.h
+endif
+
+includegbcdir = $(includedir)/$(PACKAGE)/google_breakpad/common
+includegbc_HEADERS = $(top_srcdir)/src/google_breakpad/common/*.h
+
+includecdir = $(includedir)/$(PACKAGE)/common
+includec_HEADERS = $(top_srcdir)/src/common/*.h
+
+includepdir = $(includedir)/$(PACKAGE)/processor
+includep_HEADERS = $(top_srcdir)/src/processor/*.h
+
+## pkgconfig files
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA =
+
+## Libraries
+noinst_LIBRARIES =
+lib_LIBRARIES =
+bin_PROGRAMS =
+check_PROGRAMS =
+
+if !DISABLE_PROCESSOR
+lib_LIBRARIES += src/libbreakpad.a
+pkgconfig_DATA += breakpad.pc
+noinst_LIBRARIES += src/third_party/libdisasm/libdisasm.a
+endif
+
+if LINUX_HOST
+lib_LIBRARIES += src/client/linux/libbreakpad_client.a
+pkgconfig_DATA += breakpad-client.pc
+
+src_client_linux_libbreakpad_client_a_SOURCES = \
+	src/client/linux/crash_generation/crash_generation_client.cc \
+	src/client/linux/crash_generation/crash_generation_server.cc \
+	src/client/linux/dump_writer_common/seccomp_unwinder.cc \
+	src/client/linux/dump_writer_common/thread_info.cc \
+	src/client/linux/dump_writer_common/ucontext_reader.cc \
+	src/client/linux/handler/exception_handler.cc \
+	src/client/linux/handler/minidump_descriptor.cc \
+	src/client/linux/log/log.cc \
+	src/client/linux/microdump_writer/microdump_writer.cc \
+	src/client/linux/minidump_writer/linux_dumper.cc \
+	src/client/linux/minidump_writer/linux_ptrace_dumper.cc \
+	src/client/linux/minidump_writer/minidump_writer.cc \
+	src/client/minidump_file_writer.cc \
+	src/common/convert_UTF.c \
+	src/common/md5.cc \
+	src/common/string_conversion.cc \
+	src/common/linux/elfutils.cc \
+	src/common/linux/file_id.cc \
+	src/common/linux/guid_creator.cc \
+	src/common/linux/linux_libc_support.cc \
+	src/common/linux/memory_mapped_file.cc \
+	src/common/linux/safe_readlink.cc
+if ANDROID_HOST
+src_client_linux_libbreakpad_client_a_SOURCES += \
+	src/common/android/breakpad_getcontext.S
+endif
+endif LINUX_HOST
+
+if !DISABLE_PROCESSOR
+src_libbreakpad_a_SOURCES = \
+	src/google_breakpad/common/breakpad_types.h \
+	src/google_breakpad/common/minidump_format.h \
+	src/google_breakpad/common/minidump_size.h \
+	src/google_breakpad/processor/basic_source_line_resolver.h \
+	src/google_breakpad/processor/call_stack.h \
+	src/google_breakpad/processor/code_module.h \
+	src/google_breakpad/processor/code_modules.h \
+	src/google_breakpad/processor/dump_context.h \
+	src/google_breakpad/processor/dump_object.h \
+	src/google_breakpad/processor/exploitability.h \
+	src/google_breakpad/processor/fast_source_line_resolver.h \
+	src/google_breakpad/processor/memory_region.h \
+	src/google_breakpad/processor/microdump.h \
+	src/google_breakpad/processor/microdump_processor.h \
+	src/google_breakpad/processor/minidump.h \
+	src/google_breakpad/processor/minidump_processor.h \
+	src/google_breakpad/processor/process_result.h \
+	src/google_breakpad/processor/process_state.h \
+	src/google_breakpad/processor/source_line_resolver_base.h \
+	src/google_breakpad/processor/source_line_resolver_interface.h \
+	src/google_breakpad/processor/stack_frame.h \
+	src/google_breakpad/processor/stack_frame_cpu.h \
+	src/google_breakpad/processor/stack_frame_symbolizer.h \
+	src/google_breakpad/processor/stackwalker.h \
+	src/google_breakpad/processor/symbol_supplier.h \
+	src/google_breakpad/processor/system_info.h \
+	src/processor/address_map-inl.h \
+	src/processor/address_map.h \
+	src/processor/basic_code_module.h \
+	src/processor/basic_code_modules.cc \
+	src/processor/basic_code_modules.h \
+	src/processor/basic_source_line_resolver_types.h \
+	src/processor/basic_source_line_resolver.cc \
+	src/processor/binarystream.h \
+	src/processor/binarystream.cc \
+	src/processor/call_stack.cc \
+	src/processor/cfi_frame_info.cc \
+	src/processor/cfi_frame_info.h \
+	src/processor/contained_range_map-inl.h \
+	src/processor/contained_range_map.h \
+	src/processor/disassembler_x86.h \
+	src/processor/disassembler_x86.cc \
+	src/processor/dump_context.cc \
+	src/processor/dump_object.cc \
+	src/processor/exploitability.cc \
+	src/processor/exploitability_linux.h \
+	src/processor/exploitability_linux.cc \
+	src/processor/exploitability_win.h \
+	src/processor/exploitability_win.cc \
+	src/processor/fast_source_line_resolver_types.h \
+	src/processor/fast_source_line_resolver.cc \
+	src/processor/linked_ptr.h \
+	src/processor/logging.h \
+	src/processor/logging.cc \
+	src/processor/map_serializers-inl.h \
+	src/processor/map_serializers.h \
+	src/processor/microdump.cc \
+	src/processor/microdump_processor.cc \
+	src/processor/minidump.cc \
+	src/processor/minidump_processor.cc \
+	src/processor/module_comparer.cc \
+	src/processor/module_comparer.h \
+	src/processor/module_factory.h \
+	src/processor/module_serializer.cc \
+	src/processor/module_serializer.h \
+	src/processor/pathname_stripper.cc \
+	src/processor/pathname_stripper.h \
+	src/processor/postfix_evaluator-inl.h \
+	src/processor/postfix_evaluator.h \
+	src/processor/process_state.cc \
+	src/processor/range_map-inl.h \
+	src/processor/range_map.h \
+	src/processor/simple_serializer-inl.h \
+	src/processor/simple_serializer.h \
+	src/processor/simple_symbol_supplier.cc \
+	src/processor/simple_symbol_supplier.h \
+	src/processor/windows_frame_info.h \
+	src/processor/source_line_resolver_base_types.h \
+	src/processor/source_line_resolver_base.cc \
+	src/processor/stack_frame_cpu.cc \
+	src/processor/stack_frame_symbolizer.cc \
+	src/processor/stackwalker.cc \
+	src/processor/stackwalker_amd64.cc \
+	src/processor/stackwalker_amd64.h \
+	src/processor/stackwalker_arm.cc \
+	src/processor/stackwalker_arm.h \
+	src/processor/stackwalker_arm64.cc \
+	src/processor/stackwalker_arm64.h \
+	src/processor/stackwalker_address_list.cc \
+	src/processor/stackwalker_address_list.h \
+	src/processor/stackwalker_mips.cc \
+	src/processor/stackwalker_mips.h \
+	src/processor/stackwalker_ppc.cc \
+	src/processor/stackwalker_ppc.h \
+	src/processor/stackwalker_ppc64.cc \
+	src/processor/stackwalker_ppc64.h \
+	src/processor/stackwalker_sparc.cc \
+	src/processor/stackwalker_sparc.h \
+	src/processor/stackwalker_x86.cc \
+	src/processor/stackwalker_x86.h \
+	src/processor/static_address_map-inl.h \
+	src/processor/static_address_map.h \
+	src/processor/static_contained_range_map-inl.h \
+	src/processor/static_contained_range_map.h \
+	src/processor/static_map_iterator-inl.h \
+	src/processor/static_map_iterator.h \
+	src/processor/static_map-inl.h \
+	src/processor/static_map.h \
+	src/processor/static_range_map-inl.h \
+	src/processor/static_range_map.h \
+	src/processor/symbolic_constants_win.cc \
+	src/processor/symbolic_constants_win.h \
+	src/processor/tokenize.cc \
+	src/processor/tokenize.h
+
+src_libbreakpad_a_LIBADD = src/third_party/libdisasm/libdisasm.a
+
+src_third_party_libdisasm_libdisasm_a_SOURCES = \
+	src/third_party/libdisasm/ia32_implicit.c \
+	src/third_party/libdisasm/ia32_implicit.h \
+	src/third_party/libdisasm/ia32_insn.c \
+	src/third_party/libdisasm/ia32_insn.h \
+	src/third_party/libdisasm/ia32_invariant.c \
+	src/third_party/libdisasm/ia32_invariant.h \
+	src/third_party/libdisasm/ia32_modrm.c \
+	src/third_party/libdisasm/ia32_modrm.h \
+	src/third_party/libdisasm/ia32_opcode_tables.c \
+	src/third_party/libdisasm/ia32_opcode_tables.h \
+	src/third_party/libdisasm/ia32_operand.c \
+	src/third_party/libdisasm/ia32_operand.h \
+	src/third_party/libdisasm/ia32_reg.c \
+	src/third_party/libdisasm/ia32_reg.h \
+	src/third_party/libdisasm/ia32_settings.c \
+	src/third_party/libdisasm/ia32_settings.h \
+	src/third_party/libdisasm/libdis.h \
+	src/third_party/libdisasm/qword.h \
+	src/third_party/libdisasm/x86_disasm.c \
+	src/third_party/libdisasm/x86_format.c \
+	src/third_party/libdisasm/x86_imm.c \
+	src/third_party/libdisasm/x86_imm.h \
+	src/third_party/libdisasm/x86_insn.c \
+	src/third_party/libdisasm/x86_misc.c \
+	src/third_party/libdisasm/x86_operand_list.c \
+	src/third_party/libdisasm/x86_operand_list.h
+
+## Programs
+bin_PROGRAMS += \
+	src/processor/microdump_stackwalk \
+	src/processor/minidump_dump \
+	src/processor/minidump_stackwalk
+endif !DISABLE_PROCESSOR
+
+if LINUX_HOST
+bin_PROGRAMS += \
+	src/client/linux/linux_dumper_unittest_helper
+
+if !DISABLE_TOOLS
+bin_PROGRAMS += \
+	src/tools/linux/core2md/core2md \
+	src/tools/linux/dump_syms/dump_syms \
+	src/tools/linux/md2core/minidump-2-core \
+	src/tools/linux/symupload/minidump_upload \
+	src/tools/linux/symupload/sym_upload
+endif
+endif LINUX_HOST
+
+
+## Tests
+if !DISABLE_PROCESSOR
+check_PROGRAMS += \
+	src/common/test_assembler_unittest \
+	src/processor/address_map_unittest \
+	src/processor/binarystream_unittest \
+	src/processor/basic_source_line_resolver_unittest \
+	src/processor/cfi_frame_info_unittest \
+	src/processor/contained_range_map_unittest \
+	src/processor/disassembler_x86_unittest \
+	src/processor/exploitability_unittest \
+	src/processor/fast_source_line_resolver_unittest \
+	src/processor/map_serializers_unittest \
+	src/processor/microdump_processor_unittest \
+	src/processor/minidump_processor_unittest \
+	src/processor/minidump_unittest \
+	src/processor/static_address_map_unittest \
+	src/processor/static_contained_range_map_unittest \
+	src/processor/static_map_unittest \
+	src/processor/static_range_map_unittest \
+	src/processor/pathname_stripper_unittest \
+	src/processor/postfix_evaluator_unittest \
+	src/processor/range_map_unittest \
+	src/processor/stackwalker_amd64_unittest \
+	src/processor/stackwalker_arm_unittest \
+	src/processor/stackwalker_arm64_unittest \
+	src/processor/stackwalker_address_list_unittest \
+	src/processor/stackwalker_mips_unittest \
+	src/processor/stackwalker_x86_unittest \
+	src/processor/synth_minidump_unittest
+endif
+
+if LINUX_HOST
+EXTRA_PROGRAMS = \
+	src/client/linux/linux_client_unittest_shlib
+
+check_PROGRAMS += \
+	src/client/linux/linux_client_unittest
+
+if !DISABLE_TOOLS
+check_PROGRAMS += \
+	src/common/dumper_unittest \
+	src/tools/linux/md2core/minidump_2_core_unittest
+endif
+endif LINUX_HOST
+
+if !DISABLE_PROCESSOR
+if SELFTEST
+check_PROGRAMS += \
+	src/processor/stackwalker_selftest
+endif SELFTEST
+endif !DISABLE_PROCESSOR
+
+if !DISABLE_PROCESSOR
+check_SCRIPTS = \
+	src/processor/microdump_stackwalk_test \
+	src/processor/microdump_stackwalk_machine_readable_test \
+	src/processor/minidump_dump_test \
+	src/processor/minidump_stackwalk_test \
+	src/processor/minidump_stackwalk_machine_readable_test
+endif
+
+TESTS = $(check_PROGRAMS) $(check_SCRIPTS)
+
+if ANDROID_HOST
+# Since Autotools 1.2, tests are run through a special "test driver" script.
+# Unfortunately, it's not possible anymore to specify an alternative shell to
+# run them on connected devices, so use a slightly modified version of the
+# driver for Android.
+LOG_DRIVER = $(top_srcdir)/android/test-driver
+else
+# The default Autotools test driver script.
+LOG_DRIVER = $(top_srcdir)/autotools/test-driver
+endif
+
+if LINUX_HOST
+src_client_linux_linux_dumper_unittest_helper_SOURCES = \
+	src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc
+src_client_linux_linux_dumper_unittest_helper_LDFLAGS=$(PTHREAD_CFLAGS)
+src_client_linux_linux_dumper_unittest_helper_CC=$(PTHREAD_CC)
+if ANDROID_HOST
+# On Android PTHREAD_CFLAGS is empty, and adding src/common/android/include
+# to the include path is necessary to build this program.
+src_client_linux_linux_dumper_unittest_helper_CXXFLAGS=$(AM_CXXFLAGS)
+else
+src_client_linux_linux_dumper_unittest_helper_CXXFLAGS=$(PTHREAD_CFLAGS)
+endif
+
+src_client_linux_linux_client_unittest_shlib_SOURCES = \
+	src/client/linux/handler/exception_handler_unittest.cc \
+	src/client/linux/minidump_writer/directory_reader_unittest.cc \
+	src/client/linux/minidump_writer/cpu_set_unittest.cc \
+	src/client/linux/minidump_writer/line_reader_unittest.cc \
+	src/client/linux/minidump_writer/linux_core_dumper.cc \
+	src/client/linux/minidump_writer/linux_core_dumper_unittest.cc \
+	src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc \
+	src/client/linux/minidump_writer/minidump_writer_unittest.cc \
+	src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc \
+	src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc \
+	src/common/linux/elf_core_dump.cc \
+	src/common/linux/linux_libc_support_unittest.cc \
+	src/common/linux/tests/crash_generator.cc \
+	src/common/memory_unittest.cc \
+	src/common/tests/file_utils.cc \
+	src/testing/gtest/src/gtest-all.cc \
+	src/testing/gtest/src/gtest_main.cc \
+	src/testing/src/gmock-all.cc \
+	src/processor/basic_code_modules.cc \
+	src/processor/dump_context.cc \
+	src/processor/dump_object.cc \
+	src/processor/logging.cc \
+	src/processor/minidump.cc \
+	src/processor/pathname_stripper.cc
+if ANDROID_HOST
+src_client_linux_linux_client_unittest_shlib_SOURCES += \
+	src/common/android/breakpad_getcontext.S
+endif
+if LINUX_HOST
+src_client_linux_linux_client_unittest_shlib_SOURCES += \
+	src/client/linux/microdump_writer/microdump_writer_unittest.cc
+endif
+
+src_client_linux_linux_client_unittest_shlib_CPPFLAGS = \
+	-I$(top_srcdir)/src \
+	-I$(top_srcdir)/src/testing/include \
+	-I$(top_srcdir)/src/testing/gtest/include \
+	-I$(top_srcdir)/src/testing/gtest \
+	-I$(top_srcdir)/src/testing
+src_client_linux_linux_client_unittest_shlib_LDFLAGS = \
+	-shared \
+	-Wl,-h,linux_client_unittest_shlib
+src_client_linux_linux_client_unittest_shlib_LDADD = \
+	src/client/linux/crash_generation/crash_generation_client.o \
+	src/client/linux/dump_writer_common/seccomp_unwinder.o \
+	src/client/linux/dump_writer_common/thread_info.o \
+	src/client/linux/dump_writer_common/ucontext_reader.o \
+	src/client/linux/handler/exception_handler.o \
+	src/client/linux/handler/minidump_descriptor.o \
+	src/client/linux/log/log.o \
+	src/client/linux/microdump_writer/microdump_writer.o \
+	src/client/linux/minidump_writer/linux_dumper.o \
+	src/client/linux/minidump_writer/linux_ptrace_dumper.o \
+	src/client/linux/minidump_writer/minidump_writer.o \
+	src/client/minidump_file_writer.o \
+	src/common/convert_UTF.o \
+	src/common/md5.o \
+	src/common/linux/elfutils.o \
+	src/common/linux/file_id.o \
+	src/common/linux/guid_creator.o \
+	src/common/linux/linux_libc_support.o \
+	src/common/linux/memory_mapped_file.o \
+	src/common/linux/safe_readlink.o \
+	src/common/string_conversion.o \
+	$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+if ANDROID_HOST
+src_client_linux_linux_client_unittest_shlib_SOURCES += \
+	src/common/android/breakpad_getcontext_unittest.cc
+src_client_linux_linux_client_unittest_shlib_LDFLAGS += \
+	-llog -lm
+endif
+
+src_client_linux_linux_client_unittest_shlib_DEPENDENCIES = \
+	src/client/linux/linux_dumper_unittest_helper \
+	src/client/linux/libbreakpad_client.a \
+	src/libbreakpad.a
+
+src_client_linux_linux_client_unittest_SOURCES =
+src_client_linux_linux_client_unittest_LDFLAGS = \
+	-Wl,-rpath,'$$ORIGIN'
+if ANDROID_HOST
+src_client_linux_linux_client_unittest_LDFLAGS += \
+        -llog
+endif
+
+src_client_linux_linux_client_unittest_LDADD = \
+	src/client/linux/linux_client_unittest_shlib
+
+src_client_linux_linux_client_unittest_DEPENDENCIES = \
+	src/client/linux/linux_client_unittest_shlib
+
+if !DISABLE_TOOLS
+src_tools_linux_core2md_core2md_SOURCES = \
+	src/tools/linux/core2md/core2md.cc \
+	src/client/linux/minidump_writer/linux_core_dumper.cc \
+	src/common/linux/elf_core_dump.cc
+
+src_tools_linux_core2md_core2md_LDADD = \
+	src/client/linux/libbreakpad_client.a
+
+src_tools_linux_dump_syms_dump_syms_SOURCES = \
+	src/common/dwarf_cfi_to_module.cc \
+	src/common/dwarf_cu_to_module.cc \
+	src/common/dwarf_line_to_module.cc \
+	src/common/language.cc \
+	src/common/module.cc \
+	src/common/stabs_reader.cc \
+	src/common/stabs_to_module.cc \
+	src/common/dwarf/bytereader.cc \
+	src/common/dwarf/dwarf2diehandler.cc \
+	src/common/dwarf/dwarf2reader.cc \
+	src/common/linux/crc32.cc \
+	src/common/linux/dump_symbols.cc \
+	src/common/linux/elf_symbols_to_module.cc \
+	src/common/linux/elfutils.cc \
+	src/common/linux/file_id.cc \
+	src/common/linux/linux_libc_support.cc \
+	src/common/linux/memory_mapped_file.cc \
+	src/common/linux/safe_readlink.cc \
+	src/tools/linux/dump_syms/dump_syms.cc
+
+src_tools_linux_md2core_minidump_2_core_SOURCES = \
+	src/common/linux/memory_mapped_file.cc \
+	src/tools/linux/md2core/minidump-2-core.cc
+
+src_tools_linux_symupload_minidump_upload_SOURCES = \
+	src/common/linux/http_upload.cc \
+	src/tools/linux/symupload/minidump_upload.cc
+src_tools_linux_symupload_minidump_upload_LDADD = -ldl
+
+src_tools_linux_symupload_sym_upload_SOURCES = \
+	src/common/linux/http_upload.cc \
+	src/tools/linux/symupload/sym_upload.cc
+src_tools_linux_symupload_sym_upload_LDADD = -ldl
+
+src_common_dumper_unittest_SOURCES = \
+	src/common/byte_cursor_unittest.cc \
+	src/common/dwarf_cfi_to_module.cc \
+	src/common/dwarf_cfi_to_module_unittest.cc \
+	src/common/dwarf_cu_to_module.cc \
+	src/common/dwarf_cu_to_module_unittest.cc \
+	src/common/dwarf_line_to_module.cc \
+	src/common/dwarf_line_to_module_unittest.cc \
+	src/common/language.cc \
+	src/common/memory_range_unittest.cc \
+	src/common/module.cc \
+	src/common/module_unittest.cc \
+	src/common/stabs_reader.cc \
+	src/common/stabs_reader_unittest.cc \
+	src/common/stabs_to_module.cc \
+	src/common/stabs_to_module_unittest.cc \
+	src/common/test_assembler.cc \
+	src/common/dwarf/bytereader.cc \
+	src/common/dwarf/bytereader_unittest.cc \
+	src/common/dwarf/cfi_assembler.cc \
+	src/common/dwarf/dwarf2diehandler.cc \
+	src/common/dwarf/dwarf2diehandler_unittest.cc \
+	src/common/dwarf/dwarf2reader.cc \
+	src/common/dwarf/dwarf2reader_cfi_unittest.cc \
+	src/common/dwarf/dwarf2reader_die_unittest.cc \
+	src/common/linux/crc32.cc \
+	src/common/linux/dump_symbols.cc \
+	src/common/linux/dump_symbols_unittest.cc \
+	src/common/linux/elf_core_dump.cc \
+	src/common/linux/elf_core_dump_unittest.cc \
+	src/common/linux/elf_symbols_to_module.cc \
+	src/common/linux/elf_symbols_to_module_unittest.cc \
+	src/common/linux/elfutils.cc \
+	src/common/linux/file_id.cc \
+	src/common/linux/file_id_unittest.cc \
+	src/common/linux/linux_libc_support.cc \
+	src/common/linux/memory_mapped_file.cc \
+	src/common/linux/memory_mapped_file_unittest.cc \
+	src/common/linux/safe_readlink.cc \
+	src/common/linux/safe_readlink_unittest.cc \
+	src/common/linux/synth_elf.cc \
+	src/common/linux/synth_elf_unittest.cc \
+	src/common/linux/tests/crash_generator.cc \
+	src/common/tests/file_utils.cc \
+	src/testing/gtest/src/gtest-all.cc \
+	src/testing/gtest/src/gtest_main.cc \
+	src/testing/src/gmock-all.cc
+src_common_dumper_unittest_CPPFLAGS = \
+	-I$(top_srcdir)/src \
+	-I$(top_srcdir)/src/testing/include \
+	-I$(top_srcdir)/src/testing/gtest/include \
+	-I$(top_srcdir)/src/testing/gtest \
+	-I$(top_srcdir)/src/testing \
+	$(PTHREAD_CFLAGS)
+src_common_dumper_unittest_LDADD = $(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+endif
+
+src_tools_linux_md2core_minidump_2_core_unittest_SOURCES = \
+	src/testing/gtest/src/gtest-all.cc \
+	src/testing/gtest/src/gtest_main.cc \
+	src/testing/src/gmock-all.cc \
+	src/tools/linux/md2core/minidump_memory_range_unittest.cc
+src_tools_linux_md2core_minidump_2_core_unittest_CPPFLAGS = \
+	-I$(top_srcdir)/src \
+	-I$(top_srcdir)/src/testing/include \
+	-I$(top_srcdir)/src/testing/gtest/include \
+	-I$(top_srcdir)/src/testing/gtest \
+	-I$(top_srcdir)/src/testing
+src_tools_linux_md2core_minidump_2_core_unittest_LDADD = \
+	$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+
+endif LINUX_HOST
+
+if !DISABLE_PROCESSOR
+src_processor_address_map_unittest_SOURCES = \
+	src/processor/address_map_unittest.cc
+src_processor_address_map_unittest_LDADD = \
+	src/processor/logging.o \
+	src/processor/pathname_stripper.o
+
+src_processor_binarystream_unittest_SOURCES = \
+	src/processor/binarystream_unittest.cc \
+	src/testing/gtest/src/gtest-all.cc \
+	src/testing/src/gmock-all.cc
+src_processor_binarystream_unittest_CPPFLAGS = \
+	-I$(top_srcdir)/src \
+	-I$(top_srcdir)/src/testing/include \
+	-I$(top_srcdir)/src/testing/gtest/include \
+	-I$(top_srcdir)/src/testing/gtest \
+	-I$(top_srcdir)/src/testing
+src_processor_binarystream_unittest_LDADD = \
+	src/processor/binarystream.o \
+	$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+
+src_processor_basic_source_line_resolver_unittest_SOURCES = \
+	src/processor/basic_source_line_resolver_unittest.cc \
+	src/testing/gtest/src/gtest-all.cc \
+	src/testing/src/gmock-all.cc
+src_processor_basic_source_line_resolver_unittest_CPPFLAGS = \
+	-I$(top_srcdir)/src \
+	-I$(top_srcdir)/src/testing/include \
+	-I$(top_srcdir)/src/testing/gtest/include \
+	-I$(top_srcdir)/src/testing/gtest \
+	-I$(top_srcdir)/src/testing
+src_processor_basic_source_line_resolver_unittest_LDADD = \
+	src/processor/basic_source_line_resolver.o \
+	src/processor/cfi_frame_info.o \
+	src/processor/pathname_stripper.o \
+	src/processor/logging.o \
+	src/processor/source_line_resolver_base.o \
+	src/processor/tokenize.o \
+	$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+
+src_processor_cfi_frame_info_unittest_SOURCES = \
+	src/processor/cfi_frame_info_unittest.cc \
+	src/testing/gtest/src/gtest-all.cc \
+	src/testing/gtest/src/gtest_main.cc \
+	src/testing/src/gmock-all.cc
+src_processor_cfi_frame_info_unittest_LDADD = \
+	src/processor/cfi_frame_info.o \
+	src/processor/logging.o \
+	src/processor/pathname_stripper.o \
+	$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+src_processor_cfi_frame_info_unittest_CPPFLAGS = \
+	-I$(top_srcdir)/src \
+	-I$(top_srcdir)/src/testing/include \
+	-I$(top_srcdir)/src/testing/gtest/include \
+	-I$(top_srcdir)/src/testing/gtest \
+	-I$(top_srcdir)/src/testing
+
+src_processor_contained_range_map_unittest_SOURCES = \
+	src/processor/contained_range_map_unittest.cc
+src_processor_contained_range_map_unittest_LDADD = \
+	src/processor/logging.o \
+	src/processor/pathname_stripper.o
+
+src_processor_exploitability_unittest_SOURCES = \
+	src/processor/exploitability_unittest.cc \
+	src/testing/gtest/src/gtest-all.cc \
+	src/testing/gtest/src/gtest_main.cc \
+	src/testing/src/gmock-all.cc
+src_processor_exploitability_unittest_CPPFLAGS = \
+	-I$(top_srcdir)/src \
+	-I$(top_srcdir)/src/testing/include \
+	-I$(top_srcdir)/src/testing/gtest/include \
+	-I$(top_srcdir)/src/testing/gtest \
+	-I$(top_srcdir)/src/testing
+src_processor_exploitability_unittest_LDADD = \
+	src/processor/minidump_processor.o \
+	src/processor/process_state.o \
+	src/processor/disassembler_x86.o \
+	src/processor/exploitability.o \
+	src/processor/exploitability_linux.o \
+	src/processor/exploitability_win.o \
+	src/processor/basic_code_modules.o \
+	src/processor/basic_source_line_resolver.o \
+	src/processor/call_stack.o \
+	src/processor/cfi_frame_info.o \
+	src/processor/dump_context.o \
+	src/processor/dump_object.o \
+	src/processor/logging.o \
+	src/processor/minidump.o \
+	src/processor/pathname_stripper.o \
+	src/processor/simple_symbol_supplier.o \
+	src/processor/source_line_resolver_base.o \
+	src/processor/stack_frame_cpu.o \
+	src/processor/stack_frame_symbolizer.o \
+	src/processor/stackwalker.o \
+	src/processor/stackwalker_address_list.o \
+	src/processor/stackwalker_amd64.o \
+	src/processor/stackwalker_arm.o \
+	src/processor/stackwalker_arm64.o \
+	src/processor/stackwalker_mips.o \
+	src/processor/stackwalker_ppc.o \
+	src/processor/stackwalker_ppc64.o \
+	src/processor/stackwalker_sparc.o \
+	src/processor/stackwalker_x86.o \
+	src/processor/symbolic_constants_win.o \
+	src/processor/tokenize.o \
+	src/third_party/libdisasm/libdisasm.a \
+	$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+
+src_processor_disassembler_x86_unittest_SOURCES = \
+	src/processor/disassembler_x86_unittest.cc \
+	src/testing/gtest/src/gtest-all.cc \
+	src/testing/gtest/src/gtest_main.cc \
+	src/testing/src/gmock-all.cc
+src_processor_disassembler_x86_unittest_CPPFLAGS = \
+	-I$(top_srcdir)/src \
+	-I$(top_srcdir)/src/testing/include \
+	-I$(top_srcdir)/src/testing/gtest/include \
+	-I$(top_srcdir)/src/testing/gtest \
+	-I$(top_srcdir)/src/testing
+src_processor_disassembler_x86_unittest_LDADD = \
+	src/processor/disassembler_x86.o \
+	src/third_party/libdisasm/libdisasm.a \
+	$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+
+src_processor_fast_source_line_resolver_unittest_SOURCES = \
+	src/processor/fast_source_line_resolver_unittest.cc \
+	src/testing/gtest/src/gtest-all.cc \
+	src/testing/src/gmock-all.cc
+src_processor_fast_source_line_resolver_unittest_CPPFLAGS = \
+	-I$(top_srcdir)/src \
+	-I$(top_srcdir)/src/testing/include \
+	-I$(top_srcdir)/src/testing/gtest/include \
+	-I$(top_srcdir)/src/testing/gtest \
+	-I$(top_srcdir)/src/testing
+src_processor_fast_source_line_resolver_unittest_LDADD = \
+	src/processor/fast_source_line_resolver.o \
+	src/processor/basic_source_line_resolver.o \
+	src/processor/cfi_frame_info.o \
+	src/processor/module_comparer.o \
+	src/processor/module_serializer.o \
+	src/processor/pathname_stripper.o \
+	src/processor/logging.o \
+	src/processor/source_line_resolver_base.o \
+	src/processor/tokenize.o \
+	$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+
+src_processor_map_serializers_unittest_SOURCES = \
+	src/processor/map_serializers_unittest.cc \
+	src/testing/gtest/src/gtest-all.cc \
+	src/testing/src/gmock-all.cc
+src_processor_map_serializers_unittest_CPPFLAGS = \
+	-I$(top_srcdir)/src \
+	-I$(top_srcdir)/src/testing/include \
+	-I$(top_srcdir)/src/testing/gtest/include \
+	-I$(top_srcdir)/src/testing/gtest \
+	-I$(top_srcdir)/src/testing
+src_processor_map_serializers_unittest_LDADD = \
+	src/processor/logging.o \
+	src/processor/pathname_stripper.o \
+	$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+
+src_processor_microdump_processor_unittest_SOURCES = \
+	src/processor/microdump_processor_unittest.cc \
+	src/testing/gtest/src/gtest-all.cc \
+	src/testing/src/gmock-all.cc
+src_processor_microdump_processor_unittest_CPPFLAGS = \
+	-I$(top_srcdir)/src \
+	-I$(top_srcdir)/src/testing/include \
+	-I$(top_srcdir)/src/testing/gtest/include \
+	-I$(top_srcdir)/src/testing/gtest \
+	-I$(top_srcdir)/src/testing
+src_processor_microdump_processor_unittest_LDADD = \
+	src/processor/basic_code_modules.o \
+	src/processor/basic_source_line_resolver.o \
+	src/processor/call_stack.o \
+	src/processor/cfi_frame_info.o \
+	src/processor/dump_context.o \
+	src/processor/dump_object.o \
+	src/processor/logging.o \
+	src/processor/microdump.o \
+	src/processor/microdump_processor.o \
+	src/processor/pathname_stripper.o \
+	src/processor/process_state.o \
+	src/processor/simple_symbol_supplier.o \
+	src/processor/source_line_resolver_base.o \
+	src/processor/stack_frame_symbolizer.o \
+	src/processor/stackwalker.o \
+	src/processor/stackwalker_address_list.o \
+	src/processor/stackwalker_amd64.o \
+	src/processor/stackwalker_arm.o \
+	src/processor/stackwalker_arm64.o \
+	src/processor/stackwalker_mips.o \
+	src/processor/stackwalker_ppc.o \
+	src/processor/stackwalker_ppc64.o \
+	src/processor/stackwalker_sparc.o \
+	src/processor/stackwalker_x86.o \
+	src/processor/tokenize.o \
+  	$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+
+src_processor_minidump_processor_unittest_SOURCES = \
+	src/processor/minidump_processor_unittest.cc \
+	src/testing/gtest/src/gtest-all.cc \
+	src/testing/src/gmock-all.cc
+src_processor_minidump_processor_unittest_CPPFLAGS = \
+	-I$(top_srcdir)/src \
+	-I$(top_srcdir)/src/testing/include \
+	-I$(top_srcdir)/src/testing/gtest/include \
+	-I$(top_srcdir)/src/testing/gtest \
+	-I$(top_srcdir)/src/testing
+src_processor_minidump_processor_unittest_LDADD = \
+	src/processor/basic_code_modules.o \
+	src/processor/basic_source_line_resolver.o \
+	src/processor/call_stack.o \
+	src/processor/cfi_frame_info.o \
+	src/processor/disassembler_x86.o \
+	src/processor/dump_context.o \
+	src/processor/dump_object.o \
+	src/processor/exploitability.o \
+	src/processor/exploitability_linux.o \
+	src/processor/exploitability_win.o \
+	src/processor/logging.o \
+	src/processor/minidump_processor.o \
+	src/processor/minidump.o \
+	src/processor/pathname_stripper.o \
+	src/processor/process_state.o \
+	src/processor/source_line_resolver_base.o \
+	src/processor/stack_frame_cpu.o \
+	src/processor/stack_frame_symbolizer.o \
+	src/processor/stackwalker.o \
+	src/processor/stackwalker_address_list.o \
+	src/processor/stackwalker_amd64.o \
+	src/processor/stackwalker_arm.o \
+	src/processor/stackwalker_arm64.o \
+	src/processor/stackwalker_mips.o \
+	src/processor/stackwalker_ppc.o \
+	src/processor/stackwalker_ppc64.o \
+	src/processor/stackwalker_sparc.o \
+	src/processor/stackwalker_x86.o \
+	src/processor/symbolic_constants_win.o \
+	src/processor/tokenize.o \
+	src/third_party/libdisasm/libdisasm.a \
+	$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+
+src_processor_minidump_unittest_SOURCES = \
+	src/common/test_assembler.cc \
+	src/processor/minidump_unittest.cc \
+	src/processor/synth_minidump.cc \
+	src/testing/gtest/src/gtest-all.cc \
+	src/testing/gtest/src/gtest_main.cc \
+	src/testing/src/gmock-all.cc
+src_processor_minidump_unittest_CPPFLAGS = \
+	-I$(top_srcdir)/src \
+	-I$(top_srcdir)/src/testing/include \
+	-I$(top_srcdir)/src/testing/gtest/include \
+	-I$(top_srcdir)/src/testing/gtest \
+	-I$(top_srcdir)/src/testing
+src_processor_minidump_unittest_LDADD = \
+	src/processor/basic_code_modules.o \
+	src/processor/dump_context.o \
+	src/processor/dump_object.o \
+	src/processor/logging.o \
+	src/processor/minidump.o \
+	src/processor/pathname_stripper.o \
+	$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+
+src_processor_static_address_map_unittest_SOURCES = \
+	src/processor/static_address_map_unittest.cc \
+	src/testing/gtest/src/gtest-all.cc \
+	src/testing/src/gmock-all.cc
+src_processor_static_address_map_unittest_CPPFLAGS = \
+	-I$(top_srcdir)/src \
+	-I$(top_srcdir)/src/testing/include \
+	-I$(top_srcdir)/src/testing/gtest/include \
+	-I$(top_srcdir)/src/testing/gtest \
+	-I$(top_srcdir)/src/testing
+src_processor_static_address_map_unittest_LDADD = \
+	src/processor/logging.o \
+	src/processor/pathname_stripper.o \
+	$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+
+src_processor_static_contained_range_map_unittest_SOURCES = \
+	src/processor/static_contained_range_map_unittest.cc \
+	src/testing/gtest/src/gtest-all.cc \
+	src/testing/src/gmock-all.cc
+src_processor_static_contained_range_map_unittest_CPPFLAGS = \
+	-I$(top_srcdir)/src \
+	-I$(top_srcdir)/src/testing/include \
+	-I$(top_srcdir)/src/testing/gtest/include \
+	-I$(top_srcdir)/src/testing/gtest \
+	-I$(top_srcdir)/src/testing
+src_processor_static_contained_range_map_unittest_LDADD = \
+	src/processor/logging.o \
+	src/processor/pathname_stripper.o \
+	$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+
+src_processor_static_map_unittest_SOURCES = \
+	src/processor/static_map_unittest.cc \
+	src/testing/gtest/src/gtest-all.cc \
+	src/testing/src/gmock-all.cc
+src_processor_static_map_unittest_CPPFLAGS = \
+	-I$(top_srcdir)/src \
+	-I$(top_srcdir)/src/testing/include \
+	-I$(top_srcdir)/src/testing/gtest/include \
+	-I$(top_srcdir)/src/testing/gtest \
+	-I$(top_srcdir)/src/testing
+src_processor_static_map_unittest_LDADD = \
+	src/processor/logging.o \
+	src/processor/pathname_stripper.o \
+	$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+
+src_processor_static_range_map_unittest_SOURCES = \
+	src/processor/static_range_map_unittest.cc \
+	src/testing/gtest/src/gtest-all.cc \
+	src/testing/src/gmock-all.cc
+src_processor_static_range_map_unittest_CPPFLAGS = \
+	-I$(top_srcdir)/src \
+	-I$(top_srcdir)/src/testing/include \
+	-I$(top_srcdir)/src/testing/gtest/include \
+	-I$(top_srcdir)/src/testing/gtest \
+	-I$(top_srcdir)/src/testing
+src_processor_static_range_map_unittest_LDADD = \
+	src/processor/logging.o \
+	src/processor/pathname_stripper.o \
+	$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+
+src_processor_pathname_stripper_unittest_SOURCES = \
+	src/processor/pathname_stripper_unittest.cc
+src_processor_pathname_stripper_unittest_LDADD = \
+	src/processor/pathname_stripper.o \
+	$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+
+src_processor_postfix_evaluator_unittest_SOURCES = \
+	src/processor/postfix_evaluator_unittest.cc
+src_processor_postfix_evaluator_unittest_LDADD = \
+	src/processor/logging.o \
+	src/processor/pathname_stripper.o \
+	$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+
+src_processor_range_map_unittest_SOURCES = \
+	src/processor/range_map_unittest.cc
+src_processor_range_map_unittest_LDADD = \
+	src/processor/logging.o \
+	src/processor/pathname_stripper.o \
+	$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+
+src_processor_stackwalker_selftest_SOURCES = \
+	src/processor/stackwalker_selftest.cc
+src_processor_stackwalker_selftest_LDADD = \
+	src/processor/basic_code_modules.o \
+	src/processor/basic_source_line_resolver.o \
+	src/processor/call_stack.o \
+	src/processor/disassembler_x86.o \
+	src/processor/exploitability.o \
+	src/processor/exploitability_linux.o \
+	src/processor/exploitability_win.o \
+	src/processor/logging.o \
+	src/processor/minidump.o \
+	src/processor/pathname_stripper.o \
+	src/processor/source_line_resolver_base.o \
+	src/processor/stack_frame_cpu.o \
+	src/processor/stack_frame_symbolizer.o \
+	src/processor/stackwalker.o \
+	src/processor/stackwalker_address_list.o \
+	src/processor/stackwalker_amd64.o \
+	src/processor/stackwalker_arm.o \
+	src/processor/stackwalker_arm64.o \
+	src/processor/stackwalker_mips.o \
+	src/processor/stackwalker_ppc.o \
+	src/processor/stackwalker_ppc64.o \
+	src/processor/stackwalker_sparc.o \
+	src/processor/stackwalker_x86.o \
+	src/processor/tokenize.o \
+	$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+
+src_processor_stackwalker_amd64_unittest_SOURCES = \
+	src/common/test_assembler.cc \
+	src/processor/stackwalker_amd64_unittest.cc \
+	src/testing/gtest/src/gtest-all.cc \
+	src/testing/gtest/src/gtest_main.cc \
+	src/testing/src/gmock-all.cc
+src_processor_stackwalker_amd64_unittest_LDADD = \
+	src/libbreakpad.a \
+	$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+src_processor_stackwalker_amd64_unittest_CPPFLAGS = \
+	-I$(top_srcdir)/src \
+	-I$(top_srcdir)/src/testing/include \
+	-I$(top_srcdir)/src/testing/gtest/include \
+	-I$(top_srcdir)/src/testing/gtest \
+	-I$(top_srcdir)/src/testing
+
+src_processor_stackwalker_arm_unittest_SOURCES = \
+	src/common/test_assembler.cc \
+	src/processor/stackwalker_arm_unittest.cc \
+	src/testing/gtest/src/gtest-all.cc \
+	src/testing/gtest/src/gtest_main.cc \
+	src/testing/src/gmock-all.cc
+src_processor_stackwalker_arm_unittest_LDADD = \
+	src/libbreakpad.a \
+	$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+src_processor_stackwalker_arm_unittest_CPPFLAGS = \
+	-I$(top_srcdir)/src \
+	-I$(top_srcdir)/src/testing/include \
+	-I$(top_srcdir)/src/testing/gtest/include \
+	-I$(top_srcdir)/src/testing/gtest \
+	-I$(top_srcdir)/src/testing
+
+src_processor_stackwalker_arm64_unittest_SOURCES = \
+	src/common/test_assembler.cc \
+	src/processor/stackwalker_arm64_unittest.cc \
+	src/testing/gtest/src/gtest-all.cc \
+	src/testing/gtest/src/gtest_main.cc \
+	src/testing/src/gmock-all.cc
+src_processor_stackwalker_arm64_unittest_LDADD = \
+	src/libbreakpad.a \
+	$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+src_processor_stackwalker_arm64_unittest_CPPFLAGS = \
+	-I$(top_srcdir)/src \
+	-I$(top_srcdir)/src/testing/include \
+	-I$(top_srcdir)/src/testing/gtest/include \
+	-I$(top_srcdir)/src/testing/gtest \
+	-I$(top_srcdir)/src/testing
+
+src_processor_stackwalker_address_list_unittest_SOURCES = \
+	src/common/test_assembler.cc \
+	src/processor/stackwalker_address_list_unittest.cc \
+	src/testing/gtest/src/gtest-all.cc \
+	src/testing/gtest/src/gtest_main.cc \
+	src/testing/src/gmock-all.cc
+src_processor_stackwalker_address_list_unittest_LDADD = \
+	src/libbreakpad.a \
+	$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+src_processor_stackwalker_address_list_unittest_CPPFLAGS = \
+	-I$(top_srcdir)/src \
+	-I$(top_srcdir)/src/testing/include \
+	-I$(top_srcdir)/src/testing/gtest/include \
+	-I$(top_srcdir)/src/testing/gtest \
+	-I$(top_srcdir)/src/testing
+
+src_processor_stackwalker_mips_unittest_SOURCES = \
+	src/common/test_assembler.cc \
+	src/processor/stackwalker_mips_unittest.cc \
+	src/testing/gtest/src/gtest-all.cc \
+	src/testing/gtest/src/gtest_main.cc \
+	src/testing/src/gmock-all.cc
+src_processor_stackwalker_mips_unittest_LDADD = \
+	src/libbreakpad.a \
+	$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+src_processor_stackwalker_mips_unittest_CPPFLAGS = \
+	-I$(top_srcdir)/src \
+	-I$(top_srcdir)/src/testing/include \
+	-I$(top_srcdir)/src/testing/gtest/include \
+	-I$(top_srcdir)/src/testing/gtest \
+	-I$(top_srcdir)/src/testing
+
+src_processor_stackwalker_x86_unittest_SOURCES = \
+	src/common/test_assembler.cc \
+	src/processor/stackwalker_x86_unittest.cc \
+	src/testing/gtest/src/gtest-all.cc \
+	src/testing/gtest/src/gtest_main.cc \
+	src/testing/src/gmock-all.cc
+src_processor_stackwalker_x86_unittest_LDADD = \
+	src/libbreakpad.a \
+	$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+src_processor_stackwalker_x86_unittest_CPPFLAGS = \
+	-I$(top_srcdir)/src \
+	-I$(top_srcdir)/src/testing/include \
+	-I$(top_srcdir)/src/testing/gtest/include \
+	-I$(top_srcdir)/src/testing/gtest \
+	-I$(top_srcdir)/src/testing
+
+src_processor_synth_minidump_unittest_SOURCES = \
+	src/common/test_assembler.cc \
+	src/common/test_assembler.h \
+	src/processor/synth_minidump_unittest.cc \
+	src/testing/gtest/src/gtest-all.cc \
+	src/testing/gtest/src/gtest_main.cc \
+	src/testing/src/gmock-all.cc \
+	src/processor/synth_minidump.cc \
+	src/processor/synth_minidump.h
+src_processor_synth_minidump_unittest_CPPFLAGS = \
+	-I$(top_srcdir)/src \
+	-I$(top_srcdir)/src/testing/include \
+	-I$(top_srcdir)/src/testing/gtest/include \
+	-I$(top_srcdir)/src/testing/gtest \
+	-I$(top_srcdir)/src/testing
+src_processor_synth_minidump_unittest_LDADD = $(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+
+src_common_test_assembler_unittest_SOURCES = \
+	src/common/test_assembler.cc \
+	src/common/test_assembler.h \
+	src/common/test_assembler_unittest.cc \
+	src/testing/gtest/src/gtest-all.cc \
+	src/testing/gtest/src/gtest_main.cc \
+	src/testing/src/gmock-all.cc
+src_common_test_assembler_unittest_CPPFLAGS = \
+	-I$(top_srcdir)/src \
+	-I$(top_srcdir)/src/testing/include \
+	-I$(top_srcdir)/src/testing/gtest/include \
+	-I$(top_srcdir)/src/testing/gtest \
+	-I$(top_srcdir)/src/testing
+src_common_test_assembler_unittest_LDADD = $(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+
+## Non-installables
+noinst_PROGRAMS =
+noinst_SCRIPTS = $(check_SCRIPTS)
+
+src_processor_minidump_dump_SOURCES = \
+	src/processor/minidump_dump.cc
+src_processor_minidump_dump_LDADD = \
+	src/processor/basic_code_modules.o \
+	src/processor/dump_context.o \
+	src/processor/dump_object.o \
+	src/processor/logging.o \
+	src/processor/minidump.o \
+	src/processor/pathname_stripper.o
+
+src_processor_microdump_stackwalk_SOURCES = \
+	src/processor/microdump_stackwalk.cc
+src_processor_microdump_stackwalk_LDADD = \
+	src/processor/basic_code_modules.o \
+	src/processor/basic_source_line_resolver.o \
+	src/processor/binarystream.o \
+	src/processor/call_stack.o \
+	src/processor/cfi_frame_info.o \
+	src/processor/disassembler_x86.o \
+	src/processor/dump_context.o \
+	src/processor/dump_object.o \
+	src/processor/logging.o \
+	src/processor/microdump.o \
+	src/processor/microdump_processor.o \
+	src/processor/pathname_stripper.o \
+	src/processor/process_state.o \
+	src/processor/simple_symbol_supplier.o \
+	src/processor/source_line_resolver_base.o \
+	src/processor/stack_frame_cpu.o \
+	src/processor/stack_frame_symbolizer.o \
+	src/processor/stackwalk_common.o \
+	src/processor/stackwalker.o \
+	src/processor/stackwalker_address_list.o \
+	src/processor/stackwalker_amd64.o \
+	src/processor/stackwalker_arm.o \
+	src/processor/stackwalker_arm64.o \
+	src/processor/stackwalker_mips.o \
+	src/processor/stackwalker_ppc.o \
+	src/processor/stackwalker_ppc64.o \
+	src/processor/stackwalker_sparc.o \
+	src/processor/stackwalker_x86.o \
+	src/processor/tokenize.o \
+	src/third_party/libdisasm/libdisasm.a
+
+src_processor_minidump_stackwalk_SOURCES = \
+	src/processor/minidump_stackwalk.cc
+src_processor_minidump_stackwalk_LDADD = \
+	src/processor/basic_code_modules.o \
+	src/processor/basic_source_line_resolver.o \
+	src/processor/binarystream.o \
+	src/processor/call_stack.o \
+	src/processor/cfi_frame_info.o \
+	src/processor/disassembler_x86.o \
+	src/processor/dump_context.o \
+	src/processor/dump_object.o \
+	src/processor/exploitability.o \
+	src/processor/exploitability_linux.o \
+	src/processor/exploitability_win.o \
+	src/processor/logging.o \
+	src/processor/minidump.o \
+	src/processor/minidump_processor.o \
+	src/processor/pathname_stripper.o \
+	src/processor/process_state.o \
+	src/processor/simple_symbol_supplier.o \
+	src/processor/source_line_resolver_base.o \
+	src/processor/stack_frame_cpu.o \
+	src/processor/stack_frame_symbolizer.o \
+	src/processor/stackwalk_common.o \
+	src/processor/stackwalker.o \
+	src/processor/stackwalker_address_list.o \
+	src/processor/stackwalker_amd64.o \
+	src/processor/stackwalker_arm.o \
+	src/processor/stackwalker_arm64.o \
+	src/processor/stackwalker_mips.o \
+	src/processor/stackwalker_ppc.o \
+	src/processor/stackwalker_ppc64.o \
+	src/processor/stackwalker_sparc.o \
+	src/processor/stackwalker_x86.o \
+	src/processor/symbolic_constants_win.o \
+	src/processor/tokenize.o \
+	src/third_party/libdisasm/libdisasm.a
+
+endif !DISABLE_PROCESSOR
+
+## Additional files to be included in a source distribution
+##
+## find src/client src/common src/processor/testdata src/tools \
+##     -type f \! -path '*/.svn/*' -print | sort | \
+##     sed -e s/'^\(.*\)$'/'\t\1 \\'/
+EXTRA_DIST = \
+	$(SCRIPTS) \
+	src/processor/stackwalk_selftest_sol.s \
+	src/client/linux/handler/Makefile \
+	src/client/linux/handler/exception_handler.cc \
+	src/client/linux/handler/exception_handler.h \
+	src/client/linux/handler/minidump_descriptor.cc \
+	src/client/linux/handler/minidump_descriptor.h \
+	src/client/linux/handler/exception_handler_test.cc \
+	src/client/linux/handler/linux_thread.cc \
+	src/client/linux/handler/linux_thread.h \
+	src/client/linux/handler/linux_thread_test.cc \
+	src/client/linux/handler/minidump_generator.cc \
+	src/client/linux/handler/minidump_generator.h \
+	src/client/linux/handler/minidump_test.cc \
+	src/client/mac/handler/dynamic_images.cc \
+	src/client/mac/handler/dynamic_images.h \
+	src/client/mac/handler/exception_handler.cc \
+	src/client/mac/handler/exception_handler.h \
+	src/client/mac/handler/exception_handler_test.cc \
+	src/client/mac/handler/minidump_generator.cc \
+	src/client/mac/handler/minidump_generator.h \
+	src/client/mac/handler/minidump_generator_test.cc \
+	src/client/mac/handler/minidump_test.xcodeproj/project.pbxproj \
+	src/client/mac/handler/protected_memory_allocator.cc \
+	src/client/mac/handler/protected_memory_allocator.h \
+	src/client/minidump_file_writer-inl.h \
+	src/client/minidump_file_writer.cc \
+	src/client/minidump_file_writer.h \
+	src/client/minidump_file_writer_unittest.cc \
+	src/client/solaris/handler/Makefile \
+	src/client/solaris/handler/exception_handler.cc \
+	src/client/solaris/handler/exception_handler.h \
+	src/client/solaris/handler/exception_handler_test.cc \
+	src/client/solaris/handler/minidump_generator.cc \
+	src/client/solaris/handler/minidump_generator.h \
+	src/client/solaris/handler/minidump_test.cc \
+	src/client/solaris/handler/solaris_lwp.cc \
+	src/client/solaris/handler/solaris_lwp.h \
+	src/client/windows/breakpad_client.sln \
+	src/client/windows/handler/exception_handler.cc \
+	src/client/windows/handler/exception_handler.h \
+	src/client/windows/handler/exception_handler.vcproj \
+	src/client/windows/sender/crash_report_sender.cc \
+	src/client/windows/sender/crash_report_sender.h \
+	src/client/windows/sender/crash_report_sender.vcproj \
+	src/common/convert_UTF.c \
+	src/common/convert_UTF.h \
+	src/common/linux/crc32.cc \
+	src/common/linux/dump_symbols.cc \
+	src/common/linux/dump_symbols.h \
+	src/common/linux/elf_symbols_to_module.cc \
+	src/common/linux/elf_symbols_to_module.h \
+	src/common/linux/elfutils.cc \
+	src/common/linux/elfutils.h \
+	src/common/linux/file_id.cc \
+	src/common/linux/file_id.h \
+	src/common/linux/guid_creator.cc \
+	src/common/linux/guid_creator.h \
+	src/common/linux/http_upload.cc \
+	src/common/linux/http_upload.h \
+	src/common/mac/HTTPMultipartUpload.h \
+	src/common/mac/HTTPMultipartUpload.m \
+	src/common/mac/dump_syms.h \
+	src/common/mac/dump_syms.mm \
+	src/common/mac/file_id.cc \
+	src/common/mac/file_id.h \
+	src/common/mac/macho_id.cc \
+	src/common/mac/macho_id.h \
+	src/common/mac/macho_utilities.cc \
+	src/common/mac/macho_utilities.h \
+	src/common/mac/macho_walker.cc \
+	src/common/mac/macho_walker.h \
+	src/common/mac/string_utilities.cc \
+	src/common/mac/string_utilities.h \
+	src/common/md5.cc \
+	src/common/md5.h \
+	src/common/scoped_ptr.h \
+	src/common/solaris/dump_symbols.cc \
+	src/common/solaris/dump_symbols.h \
+	src/common/solaris/file_id.cc \
+	src/common/solaris/file_id.h \
+	src/common/solaris/guid_creator.cc \
+	src/common/solaris/guid_creator.h \
+	src/common/solaris/message_output.h \
+	src/common/string_conversion.cc \
+	src/common/string_conversion.h \
+	src/common/windows/guid_string.cc \
+	src/common/windows/guid_string.h \
+	src/common/windows/http_upload.cc \
+	src/common/windows/http_upload.h \
+	src/common/windows/pdb_source_line_writer.cc \
+	src/common/windows/pdb_source_line_writer.h \
+	src/common/windows/string_utils-inl.h \
+	src/common/windows/string_utils.cc \
+	src/processor/testdata/minidump2.dmp \
+	src/processor/testdata/minidump2.dump.out \
+	src/processor/testdata/minidump2.stackwalk.machine_readable.out \
+	src/processor/testdata/minidump2.stackwalk.out \
+	src/processor/testdata/module1.out \
+	src/processor/testdata/module2.out \
+	src/processor/testdata/module3_bad.out \
+	src/processor/testdata/module4_bad.out \
+	src/processor/testdata/symbols/kernel32.pdb/BCE8785C57B44245A669896B6A19B9542/kernel32.sym \
+	src/processor/testdata/symbols/test_app.pdb/5A9832E5287241C1838ED98914E9B7FF1/test_app.sym \
+	src/processor/testdata/test_app.cc \
+	src/tools/linux/dump_syms/Makefile \
+	src/tools/linux/dump_syms/dump_syms.cc \
+	src/tools/linux/symupload/Makefile \
+	src/tools/linux/symupload/minidump_upload.cc \
+	src/tools/linux/symupload/sym_upload.cc \
+	src/tools/mac/crash_report/crash_report.mm \
+	src/tools/mac/crash_report/crash_report.xcodeproj/project.pbxproj \
+	src/tools/mac/crash_report/on_demand_symbol_supplier.h \
+	src/tools/mac/crash_report/on_demand_symbol_supplier.mm \
+	src/tools/mac/dump_syms/dump_syms.xcodeproj/project.pbxproj \
+	src/tools/mac/dump_syms/dump_syms_tool.m \
+	src/tools/mac/symupload/minidump_upload.m \
+	src/tools/mac/symupload/symupload.m \
+	src/tools/mac/symupload/symupload.xcodeproj/project.pbxproj \
+	src/tools/solaris/dump_syms/Makefile \
+	src/tools/solaris/dump_syms/dump_syms.cc \
+	src/tools/solaris/dump_syms/run_regtest.sh \
+	src/tools/solaris/dump_syms/testdata/dump_syms_regtest.cc \
+	src/tools/solaris/dump_syms/testdata/dump_syms_regtest.o \
+	src/tools/solaris/dump_syms/testdata/dump_syms_regtest.stabs \
+	src/tools/solaris/dump_syms/testdata/dump_syms_regtest.sym \
+	src/tools/windows/converter/ms_symbol_server_converter.cc \
+	src/tools/windows/converter/ms_symbol_server_converter.h \
+	src/tools/windows/converter/ms_symbol_server_converter.vcproj \
+	src/tools/windows/dump_syms/dump_syms.cc \
+	src/tools/windows/dump_syms/dump_syms.vcproj \
+	src/tools/windows/dump_syms/run_regtest.sh \
+	src/tools/windows/dump_syms/testdata/dump_syms_regtest.cc \
+	src/tools/windows/dump_syms/testdata/dump_syms_regtest.pdb \
+	src/tools/windows/dump_syms/testdata/dump_syms_regtest.sym \
+	src/tools/windows/symupload/symupload.cc \
+	src/tools/windows/symupload/symupload.vcproj
diff --git a/google-breakpad/Makefile.in b/google-breakpad/Makefile.in
new file mode 100644
index 0000000..f65165c
--- /dev/null
+++ b/google-breakpad/Makefile.in
@@ -0,0 +1,8061 @@
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Copyright (c) 2011, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+
+
+VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+
+# This allows using fixed NDK headers when building for Android.
+# This is only necessary for building the unit tests until GTest is upgraded
+# to a future version.
+@ANDROID_HOST_TRUE@am__append_1 =  \
+@ANDROID_HOST_TRUE@	-I$(top_srcdir)/src/common/android/include \
+@ANDROID_HOST_TRUE@	-I$(top_srcdir)/src/common/android/testing/include
+
+# These are good warnings to be treated as errors
+@GCC_TRUE@am__append_2 = \
+@GCC_TRUE@	-Werror=missing-braces \
+@GCC_TRUE@	-Werror=non-virtual-dtor \
+@GCC_TRUE@	-Werror=overloaded-virtual \
+@GCC_TRUE@	-Werror=reorder \
+@GCC_TRUE@	-Werror=sign-compare \
+@GCC_TRUE@	-Werror=unused-variable \
+@GCC_TRUE@	-Werror=vla
+
+
+# Build as PIC on Linux, for linux_client_unittest_shlib
+@LINUX_HOST_TRUE@am__append_3 = -fPIC
+@LINUX_HOST_TRUE@am__append_4 = -fPIC
+bin_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3)
+check_PROGRAMS = $(am__EXEEXT_4) $(am__EXEEXT_5) $(am__EXEEXT_6) \
+	$(am__EXEEXT_7)
+@DISABLE_PROCESSOR_FALSE@am__append_5 = src/libbreakpad.a
+@DISABLE_PROCESSOR_FALSE@am__append_6 = breakpad.pc
+@DISABLE_PROCESSOR_FALSE@am__append_7 = src/third_party/libdisasm/libdisasm.a
+@LINUX_HOST_TRUE@am__append_8 = src/client/linux/libbreakpad_client.a
+@LINUX_HOST_TRUE@am__append_9 = breakpad-client.pc
+@ANDROID_HOST_TRUE@@LINUX_HOST_TRUE@am__append_10 = \
+@ANDROID_HOST_TRUE@@LINUX_HOST_TRUE@	src/common/android/breakpad_getcontext.S
+
+@DISABLE_PROCESSOR_FALSE@am__append_11 = \
+@DISABLE_PROCESSOR_FALSE@	src/processor/microdump_stackwalk \
+@DISABLE_PROCESSOR_FALSE@	src/processor/minidump_dump \
+@DISABLE_PROCESSOR_FALSE@	src/processor/minidump_stackwalk
+
+@LINUX_HOST_TRUE@am__append_12 = \
+@LINUX_HOST_TRUE@	src/client/linux/linux_dumper_unittest_helper
+
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@am__append_13 = \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/tools/linux/core2md/core2md \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/tools/linux/dump_syms/dump_syms \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/tools/linux/md2core/minidump-2-core \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/tools/linux/symupload/minidump_upload \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/tools/linux/symupload/sym_upload
+
+@DISABLE_PROCESSOR_FALSE@am__append_14 = \
+@DISABLE_PROCESSOR_FALSE@	src/common/test_assembler_unittest \
+@DISABLE_PROCESSOR_FALSE@	src/processor/address_map_unittest \
+@DISABLE_PROCESSOR_FALSE@	src/processor/binarystream_unittest \
+@DISABLE_PROCESSOR_FALSE@	src/processor/basic_source_line_resolver_unittest \
+@DISABLE_PROCESSOR_FALSE@	src/processor/cfi_frame_info_unittest \
+@DISABLE_PROCESSOR_FALSE@	src/processor/contained_range_map_unittest \
+@DISABLE_PROCESSOR_FALSE@	src/processor/disassembler_x86_unittest \
+@DISABLE_PROCESSOR_FALSE@	src/processor/exploitability_unittest \
+@DISABLE_PROCESSOR_FALSE@	src/processor/fast_source_line_resolver_unittest \
+@DISABLE_PROCESSOR_FALSE@	src/processor/map_serializers_unittest \
+@DISABLE_PROCESSOR_FALSE@	src/processor/microdump_processor_unittest \
+@DISABLE_PROCESSOR_FALSE@	src/processor/minidump_processor_unittest \
+@DISABLE_PROCESSOR_FALSE@	src/processor/minidump_unittest \
+@DISABLE_PROCESSOR_FALSE@	src/processor/static_address_map_unittest \
+@DISABLE_PROCESSOR_FALSE@	src/processor/static_contained_range_map_unittest \
+@DISABLE_PROCESSOR_FALSE@	src/processor/static_map_unittest \
+@DISABLE_PROCESSOR_FALSE@	src/processor/static_range_map_unittest \
+@DISABLE_PROCESSOR_FALSE@	src/processor/pathname_stripper_unittest \
+@DISABLE_PROCESSOR_FALSE@	src/processor/postfix_evaluator_unittest \
+@DISABLE_PROCESSOR_FALSE@	src/processor/range_map_unittest \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_amd64_unittest \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_arm_unittest \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_arm64_unittest \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_address_list_unittest \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_mips_unittest \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_x86_unittest \
+@DISABLE_PROCESSOR_FALSE@	src/processor/synth_minidump_unittest
+
+@LINUX_HOST_TRUE@EXTRA_PROGRAMS = src/client/linux/linux_client_unittest_shlib$(EXEEXT)
+@LINUX_HOST_TRUE@am__append_15 = \
+@LINUX_HOST_TRUE@	src/client/linux/linux_client_unittest
+
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@am__append_16 = \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/dumper_unittest \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/tools/linux/md2core/minidump_2_core_unittest
+
+@DISABLE_PROCESSOR_FALSE@@SELFTEST_TRUE@am__append_17 = \
+@DISABLE_PROCESSOR_FALSE@@SELFTEST_TRUE@	src/processor/stackwalker_selftest
+
+@ANDROID_HOST_TRUE@@LINUX_HOST_TRUE@am__append_18 = \
+@ANDROID_HOST_TRUE@@LINUX_HOST_TRUE@	src/common/android/breakpad_getcontext.S
+
+@ANDROID_HOST_TRUE@@LINUX_HOST_TRUE@am__append_19 = \
+@ANDROID_HOST_TRUE@@LINUX_HOST_TRUE@	src/common/android/breakpad_getcontext_unittest.cc
+
+@ANDROID_HOST_TRUE@@LINUX_HOST_TRUE@am__append_20 = \
+@ANDROID_HOST_TRUE@@LINUX_HOST_TRUE@	-llog -lm
+
+@ANDROID_HOST_TRUE@@LINUX_HOST_TRUE@am__append_21 = \
+@ANDROID_HOST_TRUE@@LINUX_HOST_TRUE@        -llog
+
+noinst_PROGRAMS =
+subdir = .
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+	$(top_srcdir)/configure $(am__configure_deps) \
+	$(top_srcdir)/src/config.h.in $(srcdir)/breakpad.pc.in \
+	$(srcdir)/breakpad-client.pc.in \
+	$(top_srcdir)/autotools/depcomp $(dist_doc_DATA) \
+	$(includec_HEADERS) $(am__includecl_HEADERS_DIST) \
+	$(am__includeclc_HEADERS_DIST) $(am__includeclh_HEADERS_DIST) \
+	$(am__includeclm_HEADERS_DIST) $(includegbc_HEADERS) \
+	$(am__includelss_HEADERS_DIST) $(includep_HEADERS) \
+	$(top_srcdir)/autotools/test-driver AUTHORS ChangeLog INSTALL \
+	NEWS README autotools/compile autotools/config.guess \
+	autotools/config.sub autotools/depcomp autotools/install-sh \
+	autotools/missing autotools/ltmain.sh \
+	$(top_srcdir)/autotools/compile \
+	$(top_srcdir)/autotools/config.guess \
+	$(top_srcdir)/autotools/config.sub \
+	$(top_srcdir)/autotools/install-sh \
+	$(top_srcdir)/autotools/missing
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/src/config.h
+CONFIG_CLEAN_FILES = breakpad.pc breakpad-client.pc
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \
+	"$(DESTDIR)$(docdir)" "$(DESTDIR)$(pkgconfigdir)" \
+	"$(DESTDIR)$(includecdir)" "$(DESTDIR)$(includecldir)" \
+	"$(DESTDIR)$(includeclcdir)" "$(DESTDIR)$(includeclhdir)" \
+	"$(DESTDIR)$(includeclmdir)" "$(DESTDIR)$(includegbcdir)" \
+	"$(DESTDIR)$(includelssdir)" "$(DESTDIR)$(includepdir)"
+LIBRARIES = $(lib_LIBRARIES) $(noinst_LIBRARIES)
+AR = ar
+ARFLAGS = cru
+AM_V_AR = $(am__v_AR_@AM_V@)
+am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
+am__v_AR_0 = @echo "  AR      " $@;
+am__v_AR_1 = 
+src_client_linux_libbreakpad_client_a_AR = $(AR) $(ARFLAGS)
+src_client_linux_libbreakpad_client_a_LIBADD =
+am__src_client_linux_libbreakpad_client_a_SOURCES_DIST =  \
+	src/client/linux/crash_generation/crash_generation_client.cc \
+	src/client/linux/crash_generation/crash_generation_server.cc \
+	src/client/linux/dump_writer_common/seccomp_unwinder.cc \
+	src/client/linux/dump_writer_common/thread_info.cc \
+	src/client/linux/dump_writer_common/ucontext_reader.cc \
+	src/client/linux/handler/exception_handler.cc \
+	src/client/linux/handler/minidump_descriptor.cc \
+	src/client/linux/log/log.cc \
+	src/client/linux/microdump_writer/microdump_writer.cc \
+	src/client/linux/minidump_writer/linux_dumper.cc \
+	src/client/linux/minidump_writer/linux_ptrace_dumper.cc \
+	src/client/linux/minidump_writer/minidump_writer.cc \
+	src/client/minidump_file_writer.cc src/common/convert_UTF.c \
+	src/common/md5.cc src/common/string_conversion.cc \
+	src/common/linux/elfutils.cc src/common/linux/file_id.cc \
+	src/common/linux/guid_creator.cc \
+	src/common/linux/linux_libc_support.cc \
+	src/common/linux/memory_mapped_file.cc \
+	src/common/linux/safe_readlink.cc \
+	src/common/android/breakpad_getcontext.S
+am__dirstamp = $(am__leading_dot)dirstamp
+@ANDROID_HOST_TRUE@@LINUX_HOST_TRUE@am__objects_1 = src/common/android/breakpad_getcontext.$(OBJEXT)
+@LINUX_HOST_TRUE@am_src_client_linux_libbreakpad_client_a_OBJECTS = src/client/linux/crash_generation/crash_generation_client.$(OBJEXT) \
+@LINUX_HOST_TRUE@	src/client/linux/crash_generation/crash_generation_server.$(OBJEXT) \
+@LINUX_HOST_TRUE@	src/client/linux/dump_writer_common/seccomp_unwinder.$(OBJEXT) \
+@LINUX_HOST_TRUE@	src/client/linux/dump_writer_common/thread_info.$(OBJEXT) \
+@LINUX_HOST_TRUE@	src/client/linux/dump_writer_common/ucontext_reader.$(OBJEXT) \
+@LINUX_HOST_TRUE@	src/client/linux/handler/exception_handler.$(OBJEXT) \
+@LINUX_HOST_TRUE@	src/client/linux/handler/minidump_descriptor.$(OBJEXT) \
+@LINUX_HOST_TRUE@	src/client/linux/log/log.$(OBJEXT) \
+@LINUX_HOST_TRUE@	src/client/linux/microdump_writer/microdump_writer.$(OBJEXT) \
+@LINUX_HOST_TRUE@	src/client/linux/minidump_writer/linux_dumper.$(OBJEXT) \
+@LINUX_HOST_TRUE@	src/client/linux/minidump_writer/linux_ptrace_dumper.$(OBJEXT) \
+@LINUX_HOST_TRUE@	src/client/linux/minidump_writer/minidump_writer.$(OBJEXT) \
+@LINUX_HOST_TRUE@	src/client/minidump_file_writer.$(OBJEXT) \
+@LINUX_HOST_TRUE@	src/common/convert_UTF.$(OBJEXT) \
+@LINUX_HOST_TRUE@	src/common/md5.$(OBJEXT) \
+@LINUX_HOST_TRUE@	src/common/string_conversion.$(OBJEXT) \
+@LINUX_HOST_TRUE@	src/common/linux/elfutils.$(OBJEXT) \
+@LINUX_HOST_TRUE@	src/common/linux/file_id.$(OBJEXT) \
+@LINUX_HOST_TRUE@	src/common/linux/guid_creator.$(OBJEXT) \
+@LINUX_HOST_TRUE@	src/common/linux/linux_libc_support.$(OBJEXT) \
+@LINUX_HOST_TRUE@	src/common/linux/memory_mapped_file.$(OBJEXT) \
+@LINUX_HOST_TRUE@	src/common/linux/safe_readlink.$(OBJEXT) \
+@LINUX_HOST_TRUE@	$(am__objects_1)
+src_client_linux_libbreakpad_client_a_OBJECTS =  \
+	$(am_src_client_linux_libbreakpad_client_a_OBJECTS)
+src_libbreakpad_a_AR = $(AR) $(ARFLAGS)
+@DISABLE_PROCESSOR_FALSE@src_libbreakpad_a_DEPENDENCIES = src/third_party/libdisasm/libdisasm.a
+am__src_libbreakpad_a_SOURCES_DIST =  \
+	src/google_breakpad/common/breakpad_types.h \
+	src/google_breakpad/common/minidump_format.h \
+	src/google_breakpad/common/minidump_size.h \
+	src/google_breakpad/processor/basic_source_line_resolver.h \
+	src/google_breakpad/processor/call_stack.h \
+	src/google_breakpad/processor/code_module.h \
+	src/google_breakpad/processor/code_modules.h \
+	src/google_breakpad/processor/dump_context.h \
+	src/google_breakpad/processor/dump_object.h \
+	src/google_breakpad/processor/exploitability.h \
+	src/google_breakpad/processor/fast_source_line_resolver.h \
+	src/google_breakpad/processor/memory_region.h \
+	src/google_breakpad/processor/microdump.h \
+	src/google_breakpad/processor/microdump_processor.h \
+	src/google_breakpad/processor/minidump.h \
+	src/google_breakpad/processor/minidump_processor.h \
+	src/google_breakpad/processor/process_result.h \
+	src/google_breakpad/processor/process_state.h \
+	src/google_breakpad/processor/source_line_resolver_base.h \
+	src/google_breakpad/processor/source_line_resolver_interface.h \
+	src/google_breakpad/processor/stack_frame.h \
+	src/google_breakpad/processor/stack_frame_cpu.h \
+	src/google_breakpad/processor/stack_frame_symbolizer.h \
+	src/google_breakpad/processor/stackwalker.h \
+	src/google_breakpad/processor/symbol_supplier.h \
+	src/google_breakpad/processor/system_info.h \
+	src/processor/address_map-inl.h src/processor/address_map.h \
+	src/processor/basic_code_module.h \
+	src/processor/basic_code_modules.cc \
+	src/processor/basic_code_modules.h \
+	src/processor/basic_source_line_resolver_types.h \
+	src/processor/basic_source_line_resolver.cc \
+	src/processor/binarystream.h src/processor/binarystream.cc \
+	src/processor/call_stack.cc src/processor/cfi_frame_info.cc \
+	src/processor/cfi_frame_info.h \
+	src/processor/contained_range_map-inl.h \
+	src/processor/contained_range_map.h \
+	src/processor/disassembler_x86.h \
+	src/processor/disassembler_x86.cc \
+	src/processor/dump_context.cc src/processor/dump_object.cc \
+	src/processor/exploitability.cc \
+	src/processor/exploitability_linux.h \
+	src/processor/exploitability_linux.cc \
+	src/processor/exploitability_win.h \
+	src/processor/exploitability_win.cc \
+	src/processor/fast_source_line_resolver_types.h \
+	src/processor/fast_source_line_resolver.cc \
+	src/processor/linked_ptr.h src/processor/logging.h \
+	src/processor/logging.cc src/processor/map_serializers-inl.h \
+	src/processor/map_serializers.h src/processor/microdump.cc \
+	src/processor/microdump_processor.cc src/processor/minidump.cc \
+	src/processor/minidump_processor.cc \
+	src/processor/module_comparer.cc \
+	src/processor/module_comparer.h src/processor/module_factory.h \
+	src/processor/module_serializer.cc \
+	src/processor/module_serializer.h \
+	src/processor/pathname_stripper.cc \
+	src/processor/pathname_stripper.h \
+	src/processor/postfix_evaluator-inl.h \
+	src/processor/postfix_evaluator.h \
+	src/processor/process_state.cc src/processor/range_map-inl.h \
+	src/processor/range_map.h \
+	src/processor/simple_serializer-inl.h \
+	src/processor/simple_serializer.h \
+	src/processor/simple_symbol_supplier.cc \
+	src/processor/simple_symbol_supplier.h \
+	src/processor/windows_frame_info.h \
+	src/processor/source_line_resolver_base_types.h \
+	src/processor/source_line_resolver_base.cc \
+	src/processor/stack_frame_cpu.cc \
+	src/processor/stack_frame_symbolizer.cc \
+	src/processor/stackwalker.cc \
+	src/processor/stackwalker_amd64.cc \
+	src/processor/stackwalker_amd64.h \
+	src/processor/stackwalker_arm.cc \
+	src/processor/stackwalker_arm.h \
+	src/processor/stackwalker_arm64.cc \
+	src/processor/stackwalker_arm64.h \
+	src/processor/stackwalker_address_list.cc \
+	src/processor/stackwalker_address_list.h \
+	src/processor/stackwalker_mips.cc \
+	src/processor/stackwalker_mips.h \
+	src/processor/stackwalker_ppc.cc \
+	src/processor/stackwalker_ppc.h \
+	src/processor/stackwalker_ppc64.cc \
+	src/processor/stackwalker_ppc64.h \
+	src/processor/stackwalker_sparc.cc \
+	src/processor/stackwalker_sparc.h \
+	src/processor/stackwalker_x86.cc \
+	src/processor/stackwalker_x86.h \
+	src/processor/static_address_map-inl.h \
+	src/processor/static_address_map.h \
+	src/processor/static_contained_range_map-inl.h \
+	src/processor/static_contained_range_map.h \
+	src/processor/static_map_iterator-inl.h \
+	src/processor/static_map_iterator.h \
+	src/processor/static_map-inl.h src/processor/static_map.h \
+	src/processor/static_range_map-inl.h \
+	src/processor/static_range_map.h \
+	src/processor/symbolic_constants_win.cc \
+	src/processor/symbolic_constants_win.h \
+	src/processor/tokenize.cc src/processor/tokenize.h
+@DISABLE_PROCESSOR_FALSE@am_src_libbreakpad_a_OBJECTS = src/processor/basic_code_modules.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/basic_source_line_resolver.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/binarystream.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/call_stack.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/cfi_frame_info.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/disassembler_x86.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/dump_context.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/dump_object.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/exploitability.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/exploitability_linux.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/exploitability_win.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/fast_source_line_resolver.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/logging.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/microdump.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/microdump_processor.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/minidump.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/minidump_processor.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/module_comparer.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/module_serializer.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/pathname_stripper.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/process_state.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/simple_symbol_supplier.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/source_line_resolver_base.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stack_frame_cpu.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stack_frame_symbolizer.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_amd64.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_arm.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_arm64.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_address_list.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_mips.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_ppc.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_ppc64.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_sparc.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_x86.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/symbolic_constants_win.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/tokenize.$(OBJEXT)
+src_libbreakpad_a_OBJECTS = $(am_src_libbreakpad_a_OBJECTS)
+src_third_party_libdisasm_libdisasm_a_AR = $(AR) $(ARFLAGS)
+src_third_party_libdisasm_libdisasm_a_LIBADD =
+am__src_third_party_libdisasm_libdisasm_a_SOURCES_DIST =  \
+	src/third_party/libdisasm/ia32_implicit.c \
+	src/third_party/libdisasm/ia32_implicit.h \
+	src/third_party/libdisasm/ia32_insn.c \
+	src/third_party/libdisasm/ia32_insn.h \
+	src/third_party/libdisasm/ia32_invariant.c \
+	src/third_party/libdisasm/ia32_invariant.h \
+	src/third_party/libdisasm/ia32_modrm.c \
+	src/third_party/libdisasm/ia32_modrm.h \
+	src/third_party/libdisasm/ia32_opcode_tables.c \
+	src/third_party/libdisasm/ia32_opcode_tables.h \
+	src/third_party/libdisasm/ia32_operand.c \
+	src/third_party/libdisasm/ia32_operand.h \
+	src/third_party/libdisasm/ia32_reg.c \
+	src/third_party/libdisasm/ia32_reg.h \
+	src/third_party/libdisasm/ia32_settings.c \
+	src/third_party/libdisasm/ia32_settings.h \
+	src/third_party/libdisasm/libdis.h \
+	src/third_party/libdisasm/qword.h \
+	src/third_party/libdisasm/x86_disasm.c \
+	src/third_party/libdisasm/x86_format.c \
+	src/third_party/libdisasm/x86_imm.c \
+	src/third_party/libdisasm/x86_imm.h \
+	src/third_party/libdisasm/x86_insn.c \
+	src/third_party/libdisasm/x86_misc.c \
+	src/third_party/libdisasm/x86_operand_list.c \
+	src/third_party/libdisasm/x86_operand_list.h
+@DISABLE_PROCESSOR_FALSE@am_src_third_party_libdisasm_libdisasm_a_OBJECTS = src/third_party/libdisasm/ia32_implicit.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/third_party/libdisasm/ia32_insn.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/third_party/libdisasm/ia32_invariant.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/third_party/libdisasm/ia32_modrm.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/third_party/libdisasm/ia32_opcode_tables.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/third_party/libdisasm/ia32_operand.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/third_party/libdisasm/ia32_reg.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/third_party/libdisasm/ia32_settings.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/third_party/libdisasm/x86_disasm.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/third_party/libdisasm/x86_format.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/third_party/libdisasm/x86_imm.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/third_party/libdisasm/x86_insn.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/third_party/libdisasm/x86_misc.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/third_party/libdisasm/x86_operand_list.$(OBJEXT)
+src_third_party_libdisasm_libdisasm_a_OBJECTS =  \
+	$(am_src_third_party_libdisasm_libdisasm_a_OBJECTS)
+@DISABLE_PROCESSOR_FALSE@am__EXEEXT_1 = src/processor/microdump_stackwalk$(EXEEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/minidump_dump$(EXEEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/minidump_stackwalk$(EXEEXT)
+@LINUX_HOST_TRUE@am__EXEEXT_2 = src/client/linux/linux_dumper_unittest_helper$(EXEEXT)
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@am__EXEEXT_3 = src/tools/linux/core2md/core2md$(EXEEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/tools/linux/dump_syms/dump_syms$(EXEEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/tools/linux/md2core/minidump-2-core$(EXEEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/tools/linux/symupload/minidump_upload$(EXEEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/tools/linux/symupload/sym_upload$(EXEEXT)
+@DISABLE_PROCESSOR_FALSE@am__EXEEXT_4 = src/common/test_assembler_unittest$(EXEEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/address_map_unittest$(EXEEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/binarystream_unittest$(EXEEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/basic_source_line_resolver_unittest$(EXEEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/cfi_frame_info_unittest$(EXEEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/contained_range_map_unittest$(EXEEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/disassembler_x86_unittest$(EXEEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/exploitability_unittest$(EXEEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/fast_source_line_resolver_unittest$(EXEEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/map_serializers_unittest$(EXEEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/microdump_processor_unittest$(EXEEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/minidump_processor_unittest$(EXEEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/minidump_unittest$(EXEEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/static_address_map_unittest$(EXEEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/static_contained_range_map_unittest$(EXEEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/static_map_unittest$(EXEEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/static_range_map_unittest$(EXEEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/pathname_stripper_unittest$(EXEEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/postfix_evaluator_unittest$(EXEEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/range_map_unittest$(EXEEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_amd64_unittest$(EXEEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_arm_unittest$(EXEEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_arm64_unittest$(EXEEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_address_list_unittest$(EXEEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_mips_unittest$(EXEEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_x86_unittest$(EXEEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/synth_minidump_unittest$(EXEEXT)
+@LINUX_HOST_TRUE@am__EXEEXT_5 = src/client/linux/linux_client_unittest$(EXEEXT)
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@am__EXEEXT_6 = src/common/dumper_unittest$(EXEEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/tools/linux/md2core/minidump_2_core_unittest$(EXEEXT)
+@DISABLE_PROCESSOR_FALSE@@SELFTEST_TRUE@am__EXEEXT_7 = src/processor/stackwalker_selftest$(EXEEXT)
+PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS)
+am_src_client_linux_linux_client_unittest_OBJECTS =
+src_client_linux_linux_client_unittest_OBJECTS =  \
+	$(am_src_client_linux_linux_client_unittest_OBJECTS)
+src_client_linux_linux_client_unittest_LINK = $(CCLD) $(AM_CFLAGS) \
+	$(CFLAGS) $(src_client_linux_linux_client_unittest_LDFLAGS) \
+	$(LDFLAGS) -o $@
+am__src_client_linux_linux_client_unittest_shlib_SOURCES_DIST =  \
+	src/client/linux/handler/exception_handler_unittest.cc \
+	src/client/linux/minidump_writer/directory_reader_unittest.cc \
+	src/client/linux/minidump_writer/cpu_set_unittest.cc \
+	src/client/linux/minidump_writer/line_reader_unittest.cc \
+	src/client/linux/minidump_writer/linux_core_dumper.cc \
+	src/client/linux/minidump_writer/linux_core_dumper_unittest.cc \
+	src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc \
+	src/client/linux/minidump_writer/minidump_writer_unittest.cc \
+	src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc \
+	src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc \
+	src/common/linux/elf_core_dump.cc \
+	src/common/linux/linux_libc_support_unittest.cc \
+	src/common/linux/tests/crash_generator.cc \
+	src/common/memory_unittest.cc src/common/tests/file_utils.cc \
+	src/testing/gtest/src/gtest-all.cc \
+	src/testing/gtest/src/gtest_main.cc \
+	src/testing/src/gmock-all.cc \
+	src/processor/basic_code_modules.cc \
+	src/processor/dump_context.cc src/processor/dump_object.cc \
+	src/processor/logging.cc src/processor/minidump.cc \
+	src/processor/pathname_stripper.cc \
+	src/common/android/breakpad_getcontext.S \
+	src/client/linux/microdump_writer/microdump_writer_unittest.cc \
+	src/common/android/breakpad_getcontext_unittest.cc
+@ANDROID_HOST_TRUE@@LINUX_HOST_TRUE@am__objects_2 = src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.$(OBJEXT)
+@ANDROID_HOST_TRUE@@LINUX_HOST_TRUE@am__objects_3 = src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.$(OBJEXT)
+@LINUX_HOST_TRUE@am_src_client_linux_linux_client_unittest_shlib_OBJECTS = src/client/linux/handler/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.$(OBJEXT) \
+@LINUX_HOST_TRUE@	src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.$(OBJEXT) \
+@LINUX_HOST_TRUE@	src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.$(OBJEXT) \
+@LINUX_HOST_TRUE@	src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.$(OBJEXT) \
+@LINUX_HOST_TRUE@	src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.$(OBJEXT) \
+@LINUX_HOST_TRUE@	src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.$(OBJEXT) \
+@LINUX_HOST_TRUE@	src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.$(OBJEXT) \
+@LINUX_HOST_TRUE@	src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.$(OBJEXT) \
+@LINUX_HOST_TRUE@	src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.$(OBJEXT) \
+@LINUX_HOST_TRUE@	src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.$(OBJEXT) \
+@LINUX_HOST_TRUE@	src/common/linux/src_client_linux_linux_client_unittest_shlib-elf_core_dump.$(OBJEXT) \
+@LINUX_HOST_TRUE@	src/common/linux/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.$(OBJEXT) \
+@LINUX_HOST_TRUE@	src/common/linux/tests/src_client_linux_linux_client_unittest_shlib-crash_generator.$(OBJEXT) \
+@LINUX_HOST_TRUE@	src/common/src_client_linux_linux_client_unittest_shlib-memory_unittest.$(OBJEXT) \
+@LINUX_HOST_TRUE@	src/common/tests/src_client_linux_linux_client_unittest_shlib-file_utils.$(OBJEXT) \
+@LINUX_HOST_TRUE@	src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest-all.$(OBJEXT) \
+@LINUX_HOST_TRUE@	src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest_main.$(OBJEXT) \
+@LINUX_HOST_TRUE@	src/testing/src/src_client_linux_linux_client_unittest_shlib-gmock-all.$(OBJEXT) \
+@LINUX_HOST_TRUE@	src/processor/src_client_linux_linux_client_unittest_shlib-basic_code_modules.$(OBJEXT) \
+@LINUX_HOST_TRUE@	src/processor/src_client_linux_linux_client_unittest_shlib-dump_context.$(OBJEXT) \
+@LINUX_HOST_TRUE@	src/processor/src_client_linux_linux_client_unittest_shlib-dump_object.$(OBJEXT) \
+@LINUX_HOST_TRUE@	src/processor/src_client_linux_linux_client_unittest_shlib-logging.$(OBJEXT) \
+@LINUX_HOST_TRUE@	src/processor/src_client_linux_linux_client_unittest_shlib-minidump.$(OBJEXT) \
+@LINUX_HOST_TRUE@	src/processor/src_client_linux_linux_client_unittest_shlib-pathname_stripper.$(OBJEXT) \
+@LINUX_HOST_TRUE@	$(am__objects_2) \
+@LINUX_HOST_TRUE@	src/client/linux/microdump_writer/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.$(OBJEXT) \
+@LINUX_HOST_TRUE@	$(am__objects_3)
+src_client_linux_linux_client_unittest_shlib_OBJECTS =  \
+	$(am_src_client_linux_linux_client_unittest_shlib_OBJECTS)
+am__DEPENDENCIES_1 =
+src_client_linux_linux_client_unittest_shlib_LINK = $(CXXLD) \
+	$(AM_CXXFLAGS) $(CXXFLAGS) \
+	$(src_client_linux_linux_client_unittest_shlib_LDFLAGS) \
+	$(LDFLAGS) -o $@
+am__src_client_linux_linux_dumper_unittest_helper_SOURCES_DIST = src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc
+@LINUX_HOST_TRUE@am_src_client_linux_linux_dumper_unittest_helper_OBJECTS = src/client/linux/minidump_writer/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.$(OBJEXT)
+src_client_linux_linux_dumper_unittest_helper_OBJECTS =  \
+	$(am_src_client_linux_linux_dumper_unittest_helper_OBJECTS)
+src_client_linux_linux_dumper_unittest_helper_LDADD = $(LDADD)
+src_client_linux_linux_dumper_unittest_helper_LINK = $(CXXLD) \
+	$(src_client_linux_linux_dumper_unittest_helper_CXXFLAGS) \
+	$(CXXFLAGS) \
+	$(src_client_linux_linux_dumper_unittest_helper_LDFLAGS) \
+	$(LDFLAGS) -o $@
+am__src_common_dumper_unittest_SOURCES_DIST =  \
+	src/common/byte_cursor_unittest.cc \
+	src/common/dwarf_cfi_to_module.cc \
+	src/common/dwarf_cfi_to_module_unittest.cc \
+	src/common/dwarf_cu_to_module.cc \
+	src/common/dwarf_cu_to_module_unittest.cc \
+	src/common/dwarf_line_to_module.cc \
+	src/common/dwarf_line_to_module_unittest.cc \
+	src/common/language.cc src/common/memory_range_unittest.cc \
+	src/common/module.cc src/common/module_unittest.cc \
+	src/common/stabs_reader.cc src/common/stabs_reader_unittest.cc \
+	src/common/stabs_to_module.cc \
+	src/common/stabs_to_module_unittest.cc \
+	src/common/test_assembler.cc src/common/dwarf/bytereader.cc \
+	src/common/dwarf/bytereader_unittest.cc \
+	src/common/dwarf/cfi_assembler.cc \
+	src/common/dwarf/dwarf2diehandler.cc \
+	src/common/dwarf/dwarf2diehandler_unittest.cc \
+	src/common/dwarf/dwarf2reader.cc \
+	src/common/dwarf/dwarf2reader_cfi_unittest.cc \
+	src/common/dwarf/dwarf2reader_die_unittest.cc \
+	src/common/linux/crc32.cc src/common/linux/dump_symbols.cc \
+	src/common/linux/dump_symbols_unittest.cc \
+	src/common/linux/elf_core_dump.cc \
+	src/common/linux/elf_core_dump_unittest.cc \
+	src/common/linux/elf_symbols_to_module.cc \
+	src/common/linux/elf_symbols_to_module_unittest.cc \
+	src/common/linux/elfutils.cc src/common/linux/file_id.cc \
+	src/common/linux/file_id_unittest.cc \
+	src/common/linux/linux_libc_support.cc \
+	src/common/linux/memory_mapped_file.cc \
+	src/common/linux/memory_mapped_file_unittest.cc \
+	src/common/linux/safe_readlink.cc \
+	src/common/linux/safe_readlink_unittest.cc \
+	src/common/linux/synth_elf.cc \
+	src/common/linux/synth_elf_unittest.cc \
+	src/common/linux/tests/crash_generator.cc \
+	src/common/tests/file_utils.cc \
+	src/testing/gtest/src/gtest-all.cc \
+	src/testing/gtest/src/gtest_main.cc \
+	src/testing/src/gmock-all.cc
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@am_src_common_dumper_unittest_OBJECTS = src/common/src_common_dumper_unittest-byte_cursor_unittest.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/src_common_dumper_unittest-dwarf_cfi_to_module.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/src_common_dumper_unittest-dwarf_cu_to_module.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/src_common_dumper_unittest-dwarf_cu_to_module_unittest.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/src_common_dumper_unittest-dwarf_line_to_module.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/src_common_dumper_unittest-dwarf_line_to_module_unittest.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/src_common_dumper_unittest-language.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/src_common_dumper_unittest-memory_range_unittest.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/src_common_dumper_unittest-module.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/src_common_dumper_unittest-module_unittest.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/src_common_dumper_unittest-stabs_reader.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/src_common_dumper_unittest-stabs_reader_unittest.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/src_common_dumper_unittest-stabs_to_module.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/src_common_dumper_unittest-stabs_to_module_unittest.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/src_common_dumper_unittest-test_assembler.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/dwarf/src_common_dumper_unittest-bytereader.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/dwarf/src_common_dumper_unittest-bytereader_unittest.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/dwarf/src_common_dumper_unittest-cfi_assembler.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler_unittest.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/dwarf/src_common_dumper_unittest-dwarf2reader.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/dwarf/src_common_dumper_unittest-dwarf2reader_cfi_unittest.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/dwarf/src_common_dumper_unittest-dwarf2reader_die_unittest.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/src_common_dumper_unittest-crc32.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/src_common_dumper_unittest-dump_symbols.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/src_common_dumper_unittest-dump_symbols_unittest.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/src_common_dumper_unittest-elf_core_dump.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/src_common_dumper_unittest-elf_core_dump_unittest.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/src_common_dumper_unittest-elf_symbols_to_module.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/src_common_dumper_unittest-elf_symbols_to_module_unittest.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/src_common_dumper_unittest-elfutils.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/src_common_dumper_unittest-file_id.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/src_common_dumper_unittest-file_id_unittest.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/src_common_dumper_unittest-linux_libc_support.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/src_common_dumper_unittest-memory_mapped_file.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/src_common_dumper_unittest-memory_mapped_file_unittest.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/src_common_dumper_unittest-safe_readlink.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/src_common_dumper_unittest-safe_readlink_unittest.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/src_common_dumper_unittest-synth_elf.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/src_common_dumper_unittest-synth_elf_unittest.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/tests/src_common_dumper_unittest-crash_generator.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/tests/src_common_dumper_unittest-file_utils.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/testing/gtest/src/src_common_dumper_unittest-gtest-all.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/testing/gtest/src/src_common_dumper_unittest-gtest_main.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/testing/src/src_common_dumper_unittest-gmock-all.$(OBJEXT)
+src_common_dumper_unittest_OBJECTS =  \
+	$(am_src_common_dumper_unittest_OBJECTS)
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@src_common_dumper_unittest_DEPENDENCIES =  \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	$(am__DEPENDENCIES_1) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	$(am__DEPENDENCIES_1)
+am__src_common_test_assembler_unittest_SOURCES_DIST =  \
+	src/common/test_assembler.cc src/common/test_assembler.h \
+	src/common/test_assembler_unittest.cc \
+	src/testing/gtest/src/gtest-all.cc \
+	src/testing/gtest/src/gtest_main.cc \
+	src/testing/src/gmock-all.cc
+@DISABLE_PROCESSOR_FALSE@am_src_common_test_assembler_unittest_OBJECTS = src/common/src_common_test_assembler_unittest-test_assembler.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/common/src_common_test_assembler_unittest-test_assembler_unittest.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/src_common_test_assembler_unittest-gtest-all.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/src_common_test_assembler_unittest-gtest_main.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/src/src_common_test_assembler_unittest-gmock-all.$(OBJEXT)
+src_common_test_assembler_unittest_OBJECTS =  \
+	$(am_src_common_test_assembler_unittest_OBJECTS)
+@DISABLE_PROCESSOR_FALSE@src_common_test_assembler_unittest_DEPENDENCIES =  \
+@DISABLE_PROCESSOR_FALSE@	$(am__DEPENDENCIES_1) \
+@DISABLE_PROCESSOR_FALSE@	$(am__DEPENDENCIES_1)
+am__src_processor_address_map_unittest_SOURCES_DIST =  \
+	src/processor/address_map_unittest.cc
+@DISABLE_PROCESSOR_FALSE@am_src_processor_address_map_unittest_OBJECTS = src/processor/address_map_unittest.$(OBJEXT)
+src_processor_address_map_unittest_OBJECTS =  \
+	$(am_src_processor_address_map_unittest_OBJECTS)
+@DISABLE_PROCESSOR_FALSE@src_processor_address_map_unittest_DEPENDENCIES =  \
+@DISABLE_PROCESSOR_FALSE@	src/processor/logging.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/pathname_stripper.o
+am__src_processor_basic_source_line_resolver_unittest_SOURCES_DIST =  \
+	src/processor/basic_source_line_resolver_unittest.cc \
+	src/testing/gtest/src/gtest-all.cc \
+	src/testing/src/gmock-all.cc
+@DISABLE_PROCESSOR_FALSE@am_src_processor_basic_source_line_resolver_unittest_OBJECTS = src/processor/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/src_processor_basic_source_line_resolver_unittest-gtest-all.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/src/src_processor_basic_source_line_resolver_unittest-gmock-all.$(OBJEXT)
+src_processor_basic_source_line_resolver_unittest_OBJECTS = $(am_src_processor_basic_source_line_resolver_unittest_OBJECTS)
+@DISABLE_PROCESSOR_FALSE@src_processor_basic_source_line_resolver_unittest_DEPENDENCIES = src/processor/basic_source_line_resolver.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/cfi_frame_info.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/pathname_stripper.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/logging.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/source_line_resolver_base.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/tokenize.o \
+@DISABLE_PROCESSOR_FALSE@	$(am__DEPENDENCIES_1) \
+@DISABLE_PROCESSOR_FALSE@	$(am__DEPENDENCIES_1)
+am__src_processor_binarystream_unittest_SOURCES_DIST =  \
+	src/processor/binarystream_unittest.cc \
+	src/testing/gtest/src/gtest-all.cc \
+	src/testing/src/gmock-all.cc
+@DISABLE_PROCESSOR_FALSE@am_src_processor_binarystream_unittest_OBJECTS = src/processor/src_processor_binarystream_unittest-binarystream_unittest.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/src_processor_binarystream_unittest-gtest-all.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/src/src_processor_binarystream_unittest-gmock-all.$(OBJEXT)
+src_processor_binarystream_unittest_OBJECTS =  \
+	$(am_src_processor_binarystream_unittest_OBJECTS)
+@DISABLE_PROCESSOR_FALSE@src_processor_binarystream_unittest_DEPENDENCIES =  \
+@DISABLE_PROCESSOR_FALSE@	src/processor/binarystream.o \
+@DISABLE_PROCESSOR_FALSE@	$(am__DEPENDENCIES_1) \
+@DISABLE_PROCESSOR_FALSE@	$(am__DEPENDENCIES_1)
+am__src_processor_cfi_frame_info_unittest_SOURCES_DIST =  \
+	src/processor/cfi_frame_info_unittest.cc \
+	src/testing/gtest/src/gtest-all.cc \
+	src/testing/gtest/src/gtest_main.cc \
+	src/testing/src/gmock-all.cc
+@DISABLE_PROCESSOR_FALSE@am_src_processor_cfi_frame_info_unittest_OBJECTS = src/processor/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/src_processor_cfi_frame_info_unittest-gtest-all.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/src_processor_cfi_frame_info_unittest-gtest_main.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/src/src_processor_cfi_frame_info_unittest-gmock-all.$(OBJEXT)
+src_processor_cfi_frame_info_unittest_OBJECTS =  \
+	$(am_src_processor_cfi_frame_info_unittest_OBJECTS)
+@DISABLE_PROCESSOR_FALSE@src_processor_cfi_frame_info_unittest_DEPENDENCIES =  \
+@DISABLE_PROCESSOR_FALSE@	src/processor/cfi_frame_info.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/logging.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/pathname_stripper.o \
+@DISABLE_PROCESSOR_FALSE@	$(am__DEPENDENCIES_1) \
+@DISABLE_PROCESSOR_FALSE@	$(am__DEPENDENCIES_1)
+am__src_processor_contained_range_map_unittest_SOURCES_DIST =  \
+	src/processor/contained_range_map_unittest.cc
+@DISABLE_PROCESSOR_FALSE@am_src_processor_contained_range_map_unittest_OBJECTS = src/processor/contained_range_map_unittest.$(OBJEXT)
+src_processor_contained_range_map_unittest_OBJECTS =  \
+	$(am_src_processor_contained_range_map_unittest_OBJECTS)
+@DISABLE_PROCESSOR_FALSE@src_processor_contained_range_map_unittest_DEPENDENCIES =  \
+@DISABLE_PROCESSOR_FALSE@	src/processor/logging.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/pathname_stripper.o
+am__src_processor_disassembler_x86_unittest_SOURCES_DIST =  \
+	src/processor/disassembler_x86_unittest.cc \
+	src/testing/gtest/src/gtest-all.cc \
+	src/testing/gtest/src/gtest_main.cc \
+	src/testing/src/gmock-all.cc
+@DISABLE_PROCESSOR_FALSE@am_src_processor_disassembler_x86_unittest_OBJECTS = src/processor/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/src_processor_disassembler_x86_unittest-gtest-all.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/src_processor_disassembler_x86_unittest-gtest_main.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/src/src_processor_disassembler_x86_unittest-gmock-all.$(OBJEXT)
+src_processor_disassembler_x86_unittest_OBJECTS =  \
+	$(am_src_processor_disassembler_x86_unittest_OBJECTS)
+@DISABLE_PROCESSOR_FALSE@src_processor_disassembler_x86_unittest_DEPENDENCIES =  \
+@DISABLE_PROCESSOR_FALSE@	src/processor/disassembler_x86.o \
+@DISABLE_PROCESSOR_FALSE@	src/third_party/libdisasm/libdisasm.a \
+@DISABLE_PROCESSOR_FALSE@	$(am__DEPENDENCIES_1) \
+@DISABLE_PROCESSOR_FALSE@	$(am__DEPENDENCIES_1)
+am__src_processor_exploitability_unittest_SOURCES_DIST =  \
+	src/processor/exploitability_unittest.cc \
+	src/testing/gtest/src/gtest-all.cc \
+	src/testing/gtest/src/gtest_main.cc \
+	src/testing/src/gmock-all.cc
+@DISABLE_PROCESSOR_FALSE@am_src_processor_exploitability_unittest_OBJECTS = src/processor/src_processor_exploitability_unittest-exploitability_unittest.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/src_processor_exploitability_unittest-gtest-all.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/src_processor_exploitability_unittest-gtest_main.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/src/src_processor_exploitability_unittest-gmock-all.$(OBJEXT)
+src_processor_exploitability_unittest_OBJECTS =  \
+	$(am_src_processor_exploitability_unittest_OBJECTS)
+@DISABLE_PROCESSOR_FALSE@src_processor_exploitability_unittest_DEPENDENCIES =  \
+@DISABLE_PROCESSOR_FALSE@	src/processor/minidump_processor.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/process_state.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/disassembler_x86.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/exploitability.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/exploitability_linux.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/exploitability_win.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/basic_code_modules.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/basic_source_line_resolver.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/call_stack.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/cfi_frame_info.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/dump_context.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/dump_object.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/logging.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/minidump.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/pathname_stripper.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/simple_symbol_supplier.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/source_line_resolver_base.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stack_frame_cpu.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stack_frame_symbolizer.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_address_list.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_amd64.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_arm.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_arm64.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_mips.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_ppc.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_ppc64.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_sparc.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_x86.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/symbolic_constants_win.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/tokenize.o \
+@DISABLE_PROCESSOR_FALSE@	src/third_party/libdisasm/libdisasm.a \
+@DISABLE_PROCESSOR_FALSE@	$(am__DEPENDENCIES_1) \
+@DISABLE_PROCESSOR_FALSE@	$(am__DEPENDENCIES_1)
+am__src_processor_fast_source_line_resolver_unittest_SOURCES_DIST =  \
+	src/processor/fast_source_line_resolver_unittest.cc \
+	src/testing/gtest/src/gtest-all.cc \
+	src/testing/src/gmock-all.cc
+@DISABLE_PROCESSOR_FALSE@am_src_processor_fast_source_line_resolver_unittest_OBJECTS = src/processor/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/src_processor_fast_source_line_resolver_unittest-gtest-all.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/src/src_processor_fast_source_line_resolver_unittest-gmock-all.$(OBJEXT)
+src_processor_fast_source_line_resolver_unittest_OBJECTS = $(am_src_processor_fast_source_line_resolver_unittest_OBJECTS)
+@DISABLE_PROCESSOR_FALSE@src_processor_fast_source_line_resolver_unittest_DEPENDENCIES = src/processor/fast_source_line_resolver.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/basic_source_line_resolver.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/cfi_frame_info.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/module_comparer.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/module_serializer.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/pathname_stripper.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/logging.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/source_line_resolver_base.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/tokenize.o \
+@DISABLE_PROCESSOR_FALSE@	$(am__DEPENDENCIES_1) \
+@DISABLE_PROCESSOR_FALSE@	$(am__DEPENDENCIES_1)
+am__src_processor_map_serializers_unittest_SOURCES_DIST =  \
+	src/processor/map_serializers_unittest.cc \
+	src/testing/gtest/src/gtest-all.cc \
+	src/testing/src/gmock-all.cc
+@DISABLE_PROCESSOR_FALSE@am_src_processor_map_serializers_unittest_OBJECTS = src/processor/src_processor_map_serializers_unittest-map_serializers_unittest.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/src_processor_map_serializers_unittest-gtest-all.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/src/src_processor_map_serializers_unittest-gmock-all.$(OBJEXT)
+src_processor_map_serializers_unittest_OBJECTS =  \
+	$(am_src_processor_map_serializers_unittest_OBJECTS)
+@DISABLE_PROCESSOR_FALSE@src_processor_map_serializers_unittest_DEPENDENCIES =  \
+@DISABLE_PROCESSOR_FALSE@	src/processor/logging.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/pathname_stripper.o \
+@DISABLE_PROCESSOR_FALSE@	$(am__DEPENDENCIES_1) \
+@DISABLE_PROCESSOR_FALSE@	$(am__DEPENDENCIES_1)
+am__src_processor_microdump_processor_unittest_SOURCES_DIST =  \
+	src/processor/microdump_processor_unittest.cc \
+	src/testing/gtest/src/gtest-all.cc \
+	src/testing/src/gmock-all.cc
+@DISABLE_PROCESSOR_FALSE@am_src_processor_microdump_processor_unittest_OBJECTS = src/processor/src_processor_microdump_processor_unittest-microdump_processor_unittest.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/src_processor_microdump_processor_unittest-gtest-all.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/src/src_processor_microdump_processor_unittest-gmock-all.$(OBJEXT)
+src_processor_microdump_processor_unittest_OBJECTS =  \
+	$(am_src_processor_microdump_processor_unittest_OBJECTS)
+@DISABLE_PROCESSOR_FALSE@src_processor_microdump_processor_unittest_DEPENDENCIES =  \
+@DISABLE_PROCESSOR_FALSE@	src/processor/basic_code_modules.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/basic_source_line_resolver.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/call_stack.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/cfi_frame_info.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/dump_context.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/dump_object.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/logging.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/microdump.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/microdump_processor.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/pathname_stripper.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/process_state.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/simple_symbol_supplier.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/source_line_resolver_base.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stack_frame_symbolizer.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_address_list.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_amd64.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_arm.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_arm64.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_mips.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_ppc.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_ppc64.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_sparc.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_x86.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/tokenize.o \
+@DISABLE_PROCESSOR_FALSE@	$(am__DEPENDENCIES_1) \
+@DISABLE_PROCESSOR_FALSE@	$(am__DEPENDENCIES_1)
+am__src_processor_microdump_stackwalk_SOURCES_DIST =  \
+	src/processor/microdump_stackwalk.cc
+@DISABLE_PROCESSOR_FALSE@am_src_processor_microdump_stackwalk_OBJECTS = src/processor/microdump_stackwalk.$(OBJEXT)
+src_processor_microdump_stackwalk_OBJECTS =  \
+	$(am_src_processor_microdump_stackwalk_OBJECTS)
+@DISABLE_PROCESSOR_FALSE@src_processor_microdump_stackwalk_DEPENDENCIES =  \
+@DISABLE_PROCESSOR_FALSE@	src/processor/basic_code_modules.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/basic_source_line_resolver.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/binarystream.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/call_stack.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/cfi_frame_info.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/disassembler_x86.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/dump_context.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/dump_object.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/logging.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/microdump.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/microdump_processor.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/pathname_stripper.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/process_state.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/simple_symbol_supplier.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/source_line_resolver_base.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stack_frame_cpu.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stack_frame_symbolizer.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalk_common.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_address_list.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_amd64.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_arm.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_arm64.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_mips.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_ppc.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_ppc64.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_sparc.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_x86.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/tokenize.o \
+@DISABLE_PROCESSOR_FALSE@	src/third_party/libdisasm/libdisasm.a
+am__src_processor_minidump_dump_SOURCES_DIST =  \
+	src/processor/minidump_dump.cc
+@DISABLE_PROCESSOR_FALSE@am_src_processor_minidump_dump_OBJECTS = src/processor/minidump_dump.$(OBJEXT)
+src_processor_minidump_dump_OBJECTS =  \
+	$(am_src_processor_minidump_dump_OBJECTS)
+@DISABLE_PROCESSOR_FALSE@src_processor_minidump_dump_DEPENDENCIES =  \
+@DISABLE_PROCESSOR_FALSE@	src/processor/basic_code_modules.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/dump_context.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/dump_object.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/logging.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/minidump.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/pathname_stripper.o
+am__src_processor_minidump_processor_unittest_SOURCES_DIST =  \
+	src/processor/minidump_processor_unittest.cc \
+	src/testing/gtest/src/gtest-all.cc \
+	src/testing/src/gmock-all.cc
+@DISABLE_PROCESSOR_FALSE@am_src_processor_minidump_processor_unittest_OBJECTS = src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/src_processor_minidump_processor_unittest-gtest-all.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/src/src_processor_minidump_processor_unittest-gmock-all.$(OBJEXT)
+src_processor_minidump_processor_unittest_OBJECTS =  \
+	$(am_src_processor_minidump_processor_unittest_OBJECTS)
+@DISABLE_PROCESSOR_FALSE@src_processor_minidump_processor_unittest_DEPENDENCIES =  \
+@DISABLE_PROCESSOR_FALSE@	src/processor/basic_code_modules.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/basic_source_line_resolver.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/call_stack.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/cfi_frame_info.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/disassembler_x86.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/dump_context.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/dump_object.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/exploitability.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/exploitability_linux.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/exploitability_win.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/logging.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/minidump_processor.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/minidump.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/pathname_stripper.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/process_state.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/source_line_resolver_base.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stack_frame_cpu.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stack_frame_symbolizer.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_address_list.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_amd64.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_arm.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_arm64.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_mips.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_ppc.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_ppc64.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_sparc.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_x86.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/symbolic_constants_win.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/tokenize.o \
+@DISABLE_PROCESSOR_FALSE@	src/third_party/libdisasm/libdisasm.a \
+@DISABLE_PROCESSOR_FALSE@	$(am__DEPENDENCIES_1) \
+@DISABLE_PROCESSOR_FALSE@	$(am__DEPENDENCIES_1)
+am__src_processor_minidump_stackwalk_SOURCES_DIST =  \
+	src/processor/minidump_stackwalk.cc
+@DISABLE_PROCESSOR_FALSE@am_src_processor_minidump_stackwalk_OBJECTS = src/processor/minidump_stackwalk.$(OBJEXT)
+src_processor_minidump_stackwalk_OBJECTS =  \
+	$(am_src_processor_minidump_stackwalk_OBJECTS)
+@DISABLE_PROCESSOR_FALSE@src_processor_minidump_stackwalk_DEPENDENCIES =  \
+@DISABLE_PROCESSOR_FALSE@	src/processor/basic_code_modules.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/basic_source_line_resolver.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/binarystream.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/call_stack.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/cfi_frame_info.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/disassembler_x86.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/dump_context.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/dump_object.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/exploitability.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/exploitability_linux.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/exploitability_win.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/logging.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/minidump.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/minidump_processor.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/pathname_stripper.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/process_state.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/simple_symbol_supplier.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/source_line_resolver_base.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stack_frame_cpu.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stack_frame_symbolizer.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalk_common.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_address_list.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_amd64.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_arm.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_arm64.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_mips.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_ppc.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_ppc64.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_sparc.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_x86.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/symbolic_constants_win.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/tokenize.o \
+@DISABLE_PROCESSOR_FALSE@	src/third_party/libdisasm/libdisasm.a
+am__src_processor_minidump_unittest_SOURCES_DIST =  \
+	src/common/test_assembler.cc \
+	src/processor/minidump_unittest.cc \
+	src/processor/synth_minidump.cc \
+	src/testing/gtest/src/gtest-all.cc \
+	src/testing/gtest/src/gtest_main.cc \
+	src/testing/src/gmock-all.cc
+@DISABLE_PROCESSOR_FALSE@am_src_processor_minidump_unittest_OBJECTS = src/common/src_processor_minidump_unittest-test_assembler.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/src_processor_minidump_unittest-minidump_unittest.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/src_processor_minidump_unittest-synth_minidump.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/src_processor_minidump_unittest-gtest-all.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/src_processor_minidump_unittest-gtest_main.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/src/src_processor_minidump_unittest-gmock-all.$(OBJEXT)
+src_processor_minidump_unittest_OBJECTS =  \
+	$(am_src_processor_minidump_unittest_OBJECTS)
+@DISABLE_PROCESSOR_FALSE@src_processor_minidump_unittest_DEPENDENCIES =  \
+@DISABLE_PROCESSOR_FALSE@	src/processor/basic_code_modules.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/dump_context.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/dump_object.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/logging.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/minidump.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/pathname_stripper.o \
+@DISABLE_PROCESSOR_FALSE@	$(am__DEPENDENCIES_1) \
+@DISABLE_PROCESSOR_FALSE@	$(am__DEPENDENCIES_1)
+am__src_processor_pathname_stripper_unittest_SOURCES_DIST =  \
+	src/processor/pathname_stripper_unittest.cc
+@DISABLE_PROCESSOR_FALSE@am_src_processor_pathname_stripper_unittest_OBJECTS = src/processor/pathname_stripper_unittest.$(OBJEXT)
+src_processor_pathname_stripper_unittest_OBJECTS =  \
+	$(am_src_processor_pathname_stripper_unittest_OBJECTS)
+@DISABLE_PROCESSOR_FALSE@src_processor_pathname_stripper_unittest_DEPENDENCIES =  \
+@DISABLE_PROCESSOR_FALSE@	src/processor/pathname_stripper.o \
+@DISABLE_PROCESSOR_FALSE@	$(am__DEPENDENCIES_1) \
+@DISABLE_PROCESSOR_FALSE@	$(am__DEPENDENCIES_1)
+am__src_processor_postfix_evaluator_unittest_SOURCES_DIST =  \
+	src/processor/postfix_evaluator_unittest.cc
+@DISABLE_PROCESSOR_FALSE@am_src_processor_postfix_evaluator_unittest_OBJECTS = src/processor/postfix_evaluator_unittest.$(OBJEXT)
+src_processor_postfix_evaluator_unittest_OBJECTS =  \
+	$(am_src_processor_postfix_evaluator_unittest_OBJECTS)
+@DISABLE_PROCESSOR_FALSE@src_processor_postfix_evaluator_unittest_DEPENDENCIES =  \
+@DISABLE_PROCESSOR_FALSE@	src/processor/logging.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/pathname_stripper.o \
+@DISABLE_PROCESSOR_FALSE@	$(am__DEPENDENCIES_1) \
+@DISABLE_PROCESSOR_FALSE@	$(am__DEPENDENCIES_1)
+am__src_processor_range_map_unittest_SOURCES_DIST =  \
+	src/processor/range_map_unittest.cc
+@DISABLE_PROCESSOR_FALSE@am_src_processor_range_map_unittest_OBJECTS = src/processor/range_map_unittest.$(OBJEXT)
+src_processor_range_map_unittest_OBJECTS =  \
+	$(am_src_processor_range_map_unittest_OBJECTS)
+@DISABLE_PROCESSOR_FALSE@src_processor_range_map_unittest_DEPENDENCIES =  \
+@DISABLE_PROCESSOR_FALSE@	src/processor/logging.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/pathname_stripper.o \
+@DISABLE_PROCESSOR_FALSE@	$(am__DEPENDENCIES_1) \
+@DISABLE_PROCESSOR_FALSE@	$(am__DEPENDENCIES_1)
+am__src_processor_stackwalker_address_list_unittest_SOURCES_DIST =  \
+	src/common/test_assembler.cc \
+	src/processor/stackwalker_address_list_unittest.cc \
+	src/testing/gtest/src/gtest-all.cc \
+	src/testing/gtest/src/gtest_main.cc \
+	src/testing/src/gmock-all.cc
+@DISABLE_PROCESSOR_FALSE@am_src_processor_stackwalker_address_list_unittest_OBJECTS = src/common/src_processor_stackwalker_address_list_unittest-test_assembler.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/src_processor_stackwalker_address_list_unittest-gtest-all.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/src_processor_stackwalker_address_list_unittest-gtest_main.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/src/src_processor_stackwalker_address_list_unittest-gmock-all.$(OBJEXT)
+src_processor_stackwalker_address_list_unittest_OBJECTS =  \
+	$(am_src_processor_stackwalker_address_list_unittest_OBJECTS)
+@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_address_list_unittest_DEPENDENCIES =  \
+@DISABLE_PROCESSOR_FALSE@	src/libbreakpad.a \
+@DISABLE_PROCESSOR_FALSE@	$(am__DEPENDENCIES_1) \
+@DISABLE_PROCESSOR_FALSE@	$(am__DEPENDENCIES_1)
+am__src_processor_stackwalker_amd64_unittest_SOURCES_DIST =  \
+	src/common/test_assembler.cc \
+	src/processor/stackwalker_amd64_unittest.cc \
+	src/testing/gtest/src/gtest-all.cc \
+	src/testing/gtest/src/gtest_main.cc \
+	src/testing/src/gmock-all.cc
+@DISABLE_PROCESSOR_FALSE@am_src_processor_stackwalker_amd64_unittest_OBJECTS = src/common/src_processor_stackwalker_amd64_unittest-test_assembler.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/src_processor_stackwalker_amd64_unittest-gtest-all.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/src_processor_stackwalker_amd64_unittest-gtest_main.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/src/src_processor_stackwalker_amd64_unittest-gmock-all.$(OBJEXT)
+src_processor_stackwalker_amd64_unittest_OBJECTS =  \
+	$(am_src_processor_stackwalker_amd64_unittest_OBJECTS)
+@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_amd64_unittest_DEPENDENCIES =  \
+@DISABLE_PROCESSOR_FALSE@	src/libbreakpad.a \
+@DISABLE_PROCESSOR_FALSE@	$(am__DEPENDENCIES_1) \
+@DISABLE_PROCESSOR_FALSE@	$(am__DEPENDENCIES_1)
+am__src_processor_stackwalker_arm64_unittest_SOURCES_DIST =  \
+	src/common/test_assembler.cc \
+	src/processor/stackwalker_arm64_unittest.cc \
+	src/testing/gtest/src/gtest-all.cc \
+	src/testing/gtest/src/gtest_main.cc \
+	src/testing/src/gmock-all.cc
+@DISABLE_PROCESSOR_FALSE@am_src_processor_stackwalker_arm64_unittest_OBJECTS = src/common/src_processor_stackwalker_arm64_unittest-test_assembler.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/src_processor_stackwalker_arm64_unittest-gtest-all.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/src_processor_stackwalker_arm64_unittest-gtest_main.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/src/src_processor_stackwalker_arm64_unittest-gmock-all.$(OBJEXT)
+src_processor_stackwalker_arm64_unittest_OBJECTS =  \
+	$(am_src_processor_stackwalker_arm64_unittest_OBJECTS)
+@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_arm64_unittest_DEPENDENCIES =  \
+@DISABLE_PROCESSOR_FALSE@	src/libbreakpad.a \
+@DISABLE_PROCESSOR_FALSE@	$(am__DEPENDENCIES_1) \
+@DISABLE_PROCESSOR_FALSE@	$(am__DEPENDENCIES_1)
+am__src_processor_stackwalker_arm_unittest_SOURCES_DIST =  \
+	src/common/test_assembler.cc \
+	src/processor/stackwalker_arm_unittest.cc \
+	src/testing/gtest/src/gtest-all.cc \
+	src/testing/gtest/src/gtest_main.cc \
+	src/testing/src/gmock-all.cc
+@DISABLE_PROCESSOR_FALSE@am_src_processor_stackwalker_arm_unittest_OBJECTS = src/common/src_processor_stackwalker_arm_unittest-test_assembler.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/src_processor_stackwalker_arm_unittest-gtest-all.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/src_processor_stackwalker_arm_unittest-gtest_main.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/src/src_processor_stackwalker_arm_unittest-gmock-all.$(OBJEXT)
+src_processor_stackwalker_arm_unittest_OBJECTS =  \
+	$(am_src_processor_stackwalker_arm_unittest_OBJECTS)
+@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_arm_unittest_DEPENDENCIES =  \
+@DISABLE_PROCESSOR_FALSE@	src/libbreakpad.a \
+@DISABLE_PROCESSOR_FALSE@	$(am__DEPENDENCIES_1) \
+@DISABLE_PROCESSOR_FALSE@	$(am__DEPENDENCIES_1)
+am__src_processor_stackwalker_mips_unittest_SOURCES_DIST =  \
+	src/common/test_assembler.cc \
+	src/processor/stackwalker_mips_unittest.cc \
+	src/testing/gtest/src/gtest-all.cc \
+	src/testing/gtest/src/gtest_main.cc \
+	src/testing/src/gmock-all.cc
+@DISABLE_PROCESSOR_FALSE@am_src_processor_stackwalker_mips_unittest_OBJECTS = src/common/src_processor_stackwalker_mips_unittest-test_assembler.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/src_processor_stackwalker_mips_unittest-gtest-all.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/src_processor_stackwalker_mips_unittest-gtest_main.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/src/src_processor_stackwalker_mips_unittest-gmock-all.$(OBJEXT)
+src_processor_stackwalker_mips_unittest_OBJECTS =  \
+	$(am_src_processor_stackwalker_mips_unittest_OBJECTS)
+@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_mips_unittest_DEPENDENCIES =  \
+@DISABLE_PROCESSOR_FALSE@	src/libbreakpad.a \
+@DISABLE_PROCESSOR_FALSE@	$(am__DEPENDENCIES_1) \
+@DISABLE_PROCESSOR_FALSE@	$(am__DEPENDENCIES_1)
+am__src_processor_stackwalker_selftest_SOURCES_DIST =  \
+	src/processor/stackwalker_selftest.cc
+@DISABLE_PROCESSOR_FALSE@am_src_processor_stackwalker_selftest_OBJECTS = src/processor/stackwalker_selftest.$(OBJEXT)
+src_processor_stackwalker_selftest_OBJECTS =  \
+	$(am_src_processor_stackwalker_selftest_OBJECTS)
+@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_selftest_DEPENDENCIES =  \
+@DISABLE_PROCESSOR_FALSE@	src/processor/basic_code_modules.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/basic_source_line_resolver.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/call_stack.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/disassembler_x86.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/exploitability.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/exploitability_linux.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/exploitability_win.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/logging.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/minidump.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/pathname_stripper.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/source_line_resolver_base.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stack_frame_cpu.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stack_frame_symbolizer.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_address_list.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_amd64.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_arm.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_arm64.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_mips.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_ppc.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_ppc64.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_sparc.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_x86.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/tokenize.o \
+@DISABLE_PROCESSOR_FALSE@	$(am__DEPENDENCIES_1) \
+@DISABLE_PROCESSOR_FALSE@	$(am__DEPENDENCIES_1)
+am__src_processor_stackwalker_x86_unittest_SOURCES_DIST =  \
+	src/common/test_assembler.cc \
+	src/processor/stackwalker_x86_unittest.cc \
+	src/testing/gtest/src/gtest-all.cc \
+	src/testing/gtest/src/gtest_main.cc \
+	src/testing/src/gmock-all.cc
+@DISABLE_PROCESSOR_FALSE@am_src_processor_stackwalker_x86_unittest_OBJECTS = src/common/src_processor_stackwalker_x86_unittest-test_assembler.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/src_processor_stackwalker_x86_unittest-gtest-all.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/src_processor_stackwalker_x86_unittest-gtest_main.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/src/src_processor_stackwalker_x86_unittest-gmock-all.$(OBJEXT)
+src_processor_stackwalker_x86_unittest_OBJECTS =  \
+	$(am_src_processor_stackwalker_x86_unittest_OBJECTS)
+@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_x86_unittest_DEPENDENCIES =  \
+@DISABLE_PROCESSOR_FALSE@	src/libbreakpad.a \
+@DISABLE_PROCESSOR_FALSE@	$(am__DEPENDENCIES_1) \
+@DISABLE_PROCESSOR_FALSE@	$(am__DEPENDENCIES_1)
+am__src_processor_static_address_map_unittest_SOURCES_DIST =  \
+	src/processor/static_address_map_unittest.cc \
+	src/testing/gtest/src/gtest-all.cc \
+	src/testing/src/gmock-all.cc
+@DISABLE_PROCESSOR_FALSE@am_src_processor_static_address_map_unittest_OBJECTS = src/processor/src_processor_static_address_map_unittest-static_address_map_unittest.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/src_processor_static_address_map_unittest-gtest-all.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/src/src_processor_static_address_map_unittest-gmock-all.$(OBJEXT)
+src_processor_static_address_map_unittest_OBJECTS =  \
+	$(am_src_processor_static_address_map_unittest_OBJECTS)
+@DISABLE_PROCESSOR_FALSE@src_processor_static_address_map_unittest_DEPENDENCIES =  \
+@DISABLE_PROCESSOR_FALSE@	src/processor/logging.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/pathname_stripper.o \
+@DISABLE_PROCESSOR_FALSE@	$(am__DEPENDENCIES_1) \
+@DISABLE_PROCESSOR_FALSE@	$(am__DEPENDENCIES_1)
+am__src_processor_static_contained_range_map_unittest_SOURCES_DIST =  \
+	src/processor/static_contained_range_map_unittest.cc \
+	src/testing/gtest/src/gtest-all.cc \
+	src/testing/src/gmock-all.cc
+@DISABLE_PROCESSOR_FALSE@am_src_processor_static_contained_range_map_unittest_OBJECTS = src/processor/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/src_processor_static_contained_range_map_unittest-gtest-all.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/src/src_processor_static_contained_range_map_unittest-gmock-all.$(OBJEXT)
+src_processor_static_contained_range_map_unittest_OBJECTS = $(am_src_processor_static_contained_range_map_unittest_OBJECTS)
+@DISABLE_PROCESSOR_FALSE@src_processor_static_contained_range_map_unittest_DEPENDENCIES =  \
+@DISABLE_PROCESSOR_FALSE@	src/processor/logging.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/pathname_stripper.o \
+@DISABLE_PROCESSOR_FALSE@	$(am__DEPENDENCIES_1) \
+@DISABLE_PROCESSOR_FALSE@	$(am__DEPENDENCIES_1)
+am__src_processor_static_map_unittest_SOURCES_DIST =  \
+	src/processor/static_map_unittest.cc \
+	src/testing/gtest/src/gtest-all.cc \
+	src/testing/src/gmock-all.cc
+@DISABLE_PROCESSOR_FALSE@am_src_processor_static_map_unittest_OBJECTS = src/processor/src_processor_static_map_unittest-static_map_unittest.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/src_processor_static_map_unittest-gtest-all.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/src/src_processor_static_map_unittest-gmock-all.$(OBJEXT)
+src_processor_static_map_unittest_OBJECTS =  \
+	$(am_src_processor_static_map_unittest_OBJECTS)
+@DISABLE_PROCESSOR_FALSE@src_processor_static_map_unittest_DEPENDENCIES =  \
+@DISABLE_PROCESSOR_FALSE@	src/processor/logging.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/pathname_stripper.o \
+@DISABLE_PROCESSOR_FALSE@	$(am__DEPENDENCIES_1) \
+@DISABLE_PROCESSOR_FALSE@	$(am__DEPENDENCIES_1)
+am__src_processor_static_range_map_unittest_SOURCES_DIST =  \
+	src/processor/static_range_map_unittest.cc \
+	src/testing/gtest/src/gtest-all.cc \
+	src/testing/src/gmock-all.cc
+@DISABLE_PROCESSOR_FALSE@am_src_processor_static_range_map_unittest_OBJECTS = src/processor/src_processor_static_range_map_unittest-static_range_map_unittest.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/src_processor_static_range_map_unittest-gtest-all.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/src/src_processor_static_range_map_unittest-gmock-all.$(OBJEXT)
+src_processor_static_range_map_unittest_OBJECTS =  \
+	$(am_src_processor_static_range_map_unittest_OBJECTS)
+@DISABLE_PROCESSOR_FALSE@src_processor_static_range_map_unittest_DEPENDENCIES =  \
+@DISABLE_PROCESSOR_FALSE@	src/processor/logging.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/pathname_stripper.o \
+@DISABLE_PROCESSOR_FALSE@	$(am__DEPENDENCIES_1) \
+@DISABLE_PROCESSOR_FALSE@	$(am__DEPENDENCIES_1)
+am__src_processor_synth_minidump_unittest_SOURCES_DIST =  \
+	src/common/test_assembler.cc src/common/test_assembler.h \
+	src/processor/synth_minidump_unittest.cc \
+	src/testing/gtest/src/gtest-all.cc \
+	src/testing/gtest/src/gtest_main.cc \
+	src/testing/src/gmock-all.cc src/processor/synth_minidump.cc \
+	src/processor/synth_minidump.h
+@DISABLE_PROCESSOR_FALSE@am_src_processor_synth_minidump_unittest_OBJECTS = src/common/src_processor_synth_minidump_unittest-test_assembler.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/src_processor_synth_minidump_unittest-synth_minidump_unittest.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/src_processor_synth_minidump_unittest-gtest-all.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/src_processor_synth_minidump_unittest-gtest_main.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/testing/src/src_processor_synth_minidump_unittest-gmock-all.$(OBJEXT) \
+@DISABLE_PROCESSOR_FALSE@	src/processor/src_processor_synth_minidump_unittest-synth_minidump.$(OBJEXT)
+src_processor_synth_minidump_unittest_OBJECTS =  \
+	$(am_src_processor_synth_minidump_unittest_OBJECTS)
+@DISABLE_PROCESSOR_FALSE@src_processor_synth_minidump_unittest_DEPENDENCIES =  \
+@DISABLE_PROCESSOR_FALSE@	$(am__DEPENDENCIES_1) \
+@DISABLE_PROCESSOR_FALSE@	$(am__DEPENDENCIES_1)
+am__src_tools_linux_core2md_core2md_SOURCES_DIST =  \
+	src/tools/linux/core2md/core2md.cc \
+	src/client/linux/minidump_writer/linux_core_dumper.cc \
+	src/common/linux/elf_core_dump.cc
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@am_src_tools_linux_core2md_core2md_OBJECTS = src/tools/linux/core2md/core2md.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/client/linux/minidump_writer/linux_core_dumper.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/elf_core_dump.$(OBJEXT)
+src_tools_linux_core2md_core2md_OBJECTS =  \
+	$(am_src_tools_linux_core2md_core2md_OBJECTS)
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@src_tools_linux_core2md_core2md_DEPENDENCIES = src/client/linux/libbreakpad_client.a
+am__src_tools_linux_dump_syms_dump_syms_SOURCES_DIST =  \
+	src/common/dwarf_cfi_to_module.cc \
+	src/common/dwarf_cu_to_module.cc \
+	src/common/dwarf_line_to_module.cc src/common/language.cc \
+	src/common/module.cc src/common/stabs_reader.cc \
+	src/common/stabs_to_module.cc src/common/dwarf/bytereader.cc \
+	src/common/dwarf/dwarf2diehandler.cc \
+	src/common/dwarf/dwarf2reader.cc src/common/linux/crc32.cc \
+	src/common/linux/dump_symbols.cc \
+	src/common/linux/elf_symbols_to_module.cc \
+	src/common/linux/elfutils.cc src/common/linux/file_id.cc \
+	src/common/linux/linux_libc_support.cc \
+	src/common/linux/memory_mapped_file.cc \
+	src/common/linux/safe_readlink.cc \
+	src/tools/linux/dump_syms/dump_syms.cc
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@am_src_tools_linux_dump_syms_dump_syms_OBJECTS = src/common/dwarf_cfi_to_module.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/dwarf_cu_to_module.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/dwarf_line_to_module.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/language.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/module.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/stabs_reader.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/stabs_to_module.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/dwarf/bytereader.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/dwarf/dwarf2diehandler.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/dwarf/dwarf2reader.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/crc32.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/dump_symbols.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/elf_symbols_to_module.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/elfutils.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/file_id.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/linux_libc_support.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/memory_mapped_file.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/safe_readlink.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/tools/linux/dump_syms/dump_syms.$(OBJEXT)
+src_tools_linux_dump_syms_dump_syms_OBJECTS =  \
+	$(am_src_tools_linux_dump_syms_dump_syms_OBJECTS)
+src_tools_linux_dump_syms_dump_syms_LDADD = $(LDADD)
+am__src_tools_linux_md2core_minidump_2_core_SOURCES_DIST =  \
+	src/common/linux/memory_mapped_file.cc \
+	src/tools/linux/md2core/minidump-2-core.cc
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@am_src_tools_linux_md2core_minidump_2_core_OBJECTS = src/common/linux/memory_mapped_file.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/tools/linux/md2core/minidump-2-core.$(OBJEXT)
+src_tools_linux_md2core_minidump_2_core_OBJECTS =  \
+	$(am_src_tools_linux_md2core_minidump_2_core_OBJECTS)
+src_tools_linux_md2core_minidump_2_core_LDADD = $(LDADD)
+am__src_tools_linux_md2core_minidump_2_core_unittest_SOURCES_DIST =  \
+	src/testing/gtest/src/gtest-all.cc \
+	src/testing/gtest/src/gtest_main.cc \
+	src/testing/src/gmock-all.cc \
+	src/tools/linux/md2core/minidump_memory_range_unittest.cc
+@LINUX_HOST_TRUE@am_src_tools_linux_md2core_minidump_2_core_unittest_OBJECTS = src/testing/gtest/src/src_tools_linux_md2core_minidump_2_core_unittest-gtest-all.$(OBJEXT) \
+@LINUX_HOST_TRUE@	src/testing/gtest/src/src_tools_linux_md2core_minidump_2_core_unittest-gtest_main.$(OBJEXT) \
+@LINUX_HOST_TRUE@	src/testing/src/src_tools_linux_md2core_minidump_2_core_unittest-gmock-all.$(OBJEXT) \
+@LINUX_HOST_TRUE@	src/tools/linux/md2core/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.$(OBJEXT)
+src_tools_linux_md2core_minidump_2_core_unittest_OBJECTS = $(am_src_tools_linux_md2core_minidump_2_core_unittest_OBJECTS)
+@LINUX_HOST_TRUE@src_tools_linux_md2core_minidump_2_core_unittest_DEPENDENCIES =  \
+@LINUX_HOST_TRUE@	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+am__src_tools_linux_symupload_minidump_upload_SOURCES_DIST =  \
+	src/common/linux/http_upload.cc \
+	src/tools/linux/symupload/minidump_upload.cc
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@am_src_tools_linux_symupload_minidump_upload_OBJECTS = src/common/linux/http_upload.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/tools/linux/symupload/minidump_upload.$(OBJEXT)
+src_tools_linux_symupload_minidump_upload_OBJECTS =  \
+	$(am_src_tools_linux_symupload_minidump_upload_OBJECTS)
+src_tools_linux_symupload_minidump_upload_DEPENDENCIES =
+am__src_tools_linux_symupload_sym_upload_SOURCES_DIST =  \
+	src/common/linux/http_upload.cc \
+	src/tools/linux/symupload/sym_upload.cc
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@am_src_tools_linux_symupload_sym_upload_OBJECTS = src/common/linux/http_upload.$(OBJEXT) \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/tools/linux/symupload/sym_upload.$(OBJEXT)
+src_tools_linux_symupload_sym_upload_OBJECTS =  \
+	$(am_src_tools_linux_symupload_sym_upload_OBJECTS)
+src_tools_linux_symupload_sym_upload_DEPENDENCIES =
+SCRIPTS = $(noinst_SCRIPTS)
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/src
+depcomp = $(SHELL) $(top_srcdir)/autotools/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
+CPPASCOMPILE = $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS)
+AM_V_CPPAS = $(am__v_CPPAS_@AM_V@)
+am__v_CPPAS_ = $(am__v_CPPAS_@AM_DEFAULT_V@)
+am__v_CPPAS_0 = @echo "  CPPAS   " $@;
+am__v_CPPAS_1 = 
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_@AM_V@)
+am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
+am__v_CXX_0 = @echo "  CXX     " $@;
+am__v_CXX_1 = 
+CXXLD = $(CXX)
+CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+	-o $@
+AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo "  CXXLD   " $@;
+am__v_CXXLD_1 = 
+SOURCES = $(src_client_linux_libbreakpad_client_a_SOURCES) \
+	$(src_libbreakpad_a_SOURCES) \
+	$(src_third_party_libdisasm_libdisasm_a_SOURCES) \
+	$(src_client_linux_linux_client_unittest_SOURCES) \
+	$(src_client_linux_linux_client_unittest_shlib_SOURCES) \
+	$(src_client_linux_linux_dumper_unittest_helper_SOURCES) \
+	$(src_common_dumper_unittest_SOURCES) \
+	$(src_common_test_assembler_unittest_SOURCES) \
+	$(src_processor_address_map_unittest_SOURCES) \
+	$(src_processor_basic_source_line_resolver_unittest_SOURCES) \
+	$(src_processor_binarystream_unittest_SOURCES) \
+	$(src_processor_cfi_frame_info_unittest_SOURCES) \
+	$(src_processor_contained_range_map_unittest_SOURCES) \
+	$(src_processor_disassembler_x86_unittest_SOURCES) \
+	$(src_processor_exploitability_unittest_SOURCES) \
+	$(src_processor_fast_source_line_resolver_unittest_SOURCES) \
+	$(src_processor_map_serializers_unittest_SOURCES) \
+	$(src_processor_microdump_processor_unittest_SOURCES) \
+	$(src_processor_microdump_stackwalk_SOURCES) \
+	$(src_processor_minidump_dump_SOURCES) \
+	$(src_processor_minidump_processor_unittest_SOURCES) \
+	$(src_processor_minidump_stackwalk_SOURCES) \
+	$(src_processor_minidump_unittest_SOURCES) \
+	$(src_processor_pathname_stripper_unittest_SOURCES) \
+	$(src_processor_postfix_evaluator_unittest_SOURCES) \
+	$(src_processor_range_map_unittest_SOURCES) \
+	$(src_processor_stackwalker_address_list_unittest_SOURCES) \
+	$(src_processor_stackwalker_amd64_unittest_SOURCES) \
+	$(src_processor_stackwalker_arm64_unittest_SOURCES) \
+	$(src_processor_stackwalker_arm_unittest_SOURCES) \
+	$(src_processor_stackwalker_mips_unittest_SOURCES) \
+	$(src_processor_stackwalker_selftest_SOURCES) \
+	$(src_processor_stackwalker_x86_unittest_SOURCES) \
+	$(src_processor_static_address_map_unittest_SOURCES) \
+	$(src_processor_static_contained_range_map_unittest_SOURCES) \
+	$(src_processor_static_map_unittest_SOURCES) \
+	$(src_processor_static_range_map_unittest_SOURCES) \
+	$(src_processor_synth_minidump_unittest_SOURCES) \
+	$(src_tools_linux_core2md_core2md_SOURCES) \
+	$(src_tools_linux_dump_syms_dump_syms_SOURCES) \
+	$(src_tools_linux_md2core_minidump_2_core_SOURCES) \
+	$(src_tools_linux_md2core_minidump_2_core_unittest_SOURCES) \
+	$(src_tools_linux_symupload_minidump_upload_SOURCES) \
+	$(src_tools_linux_symupload_sym_upload_SOURCES)
+DIST_SOURCES =  \
+	$(am__src_client_linux_libbreakpad_client_a_SOURCES_DIST) \
+	$(am__src_libbreakpad_a_SOURCES_DIST) \
+	$(am__src_third_party_libdisasm_libdisasm_a_SOURCES_DIST) \
+	$(src_client_linux_linux_client_unittest_SOURCES) \
+	$(am__src_client_linux_linux_client_unittest_shlib_SOURCES_DIST) \
+	$(am__src_client_linux_linux_dumper_unittest_helper_SOURCES_DIST) \
+	$(am__src_common_dumper_unittest_SOURCES_DIST) \
+	$(am__src_common_test_assembler_unittest_SOURCES_DIST) \
+	$(am__src_processor_address_map_unittest_SOURCES_DIST) \
+	$(am__src_processor_basic_source_line_resolver_unittest_SOURCES_DIST) \
+	$(am__src_processor_binarystream_unittest_SOURCES_DIST) \
+	$(am__src_processor_cfi_frame_info_unittest_SOURCES_DIST) \
+	$(am__src_processor_contained_range_map_unittest_SOURCES_DIST) \
+	$(am__src_processor_disassembler_x86_unittest_SOURCES_DIST) \
+	$(am__src_processor_exploitability_unittest_SOURCES_DIST) \
+	$(am__src_processor_fast_source_line_resolver_unittest_SOURCES_DIST) \
+	$(am__src_processor_map_serializers_unittest_SOURCES_DIST) \
+	$(am__src_processor_microdump_processor_unittest_SOURCES_DIST) \
+	$(am__src_processor_microdump_stackwalk_SOURCES_DIST) \
+	$(am__src_processor_minidump_dump_SOURCES_DIST) \
+	$(am__src_processor_minidump_processor_unittest_SOURCES_DIST) \
+	$(am__src_processor_minidump_stackwalk_SOURCES_DIST) \
+	$(am__src_processor_minidump_unittest_SOURCES_DIST) \
+	$(am__src_processor_pathname_stripper_unittest_SOURCES_DIST) \
+	$(am__src_processor_postfix_evaluator_unittest_SOURCES_DIST) \
+	$(am__src_processor_range_map_unittest_SOURCES_DIST) \
+	$(am__src_processor_stackwalker_address_list_unittest_SOURCES_DIST) \
+	$(am__src_processor_stackwalker_amd64_unittest_SOURCES_DIST) \
+	$(am__src_processor_stackwalker_arm64_unittest_SOURCES_DIST) \
+	$(am__src_processor_stackwalker_arm_unittest_SOURCES_DIST) \
+	$(am__src_processor_stackwalker_mips_unittest_SOURCES_DIST) \
+	$(am__src_processor_stackwalker_selftest_SOURCES_DIST) \
+	$(am__src_processor_stackwalker_x86_unittest_SOURCES_DIST) \
+	$(am__src_processor_static_address_map_unittest_SOURCES_DIST) \
+	$(am__src_processor_static_contained_range_map_unittest_SOURCES_DIST) \
+	$(am__src_processor_static_map_unittest_SOURCES_DIST) \
+	$(am__src_processor_static_range_map_unittest_SOURCES_DIST) \
+	$(am__src_processor_synth_minidump_unittest_SOURCES_DIST) \
+	$(am__src_tools_linux_core2md_core2md_SOURCES_DIST) \
+	$(am__src_tools_linux_dump_syms_dump_syms_SOURCES_DIST) \
+	$(am__src_tools_linux_md2core_minidump_2_core_SOURCES_DIST) \
+	$(am__src_tools_linux_md2core_minidump_2_core_unittest_SOURCES_DIST) \
+	$(am__src_tools_linux_symupload_minidump_upload_SOURCES_DIST) \
+	$(am__src_tools_linux_symupload_sym_upload_SOURCES_DIST)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+DATA = $(dist_doc_DATA) $(pkgconfig_DATA)
+am__includecl_HEADERS_DIST = $(top_srcdir)/src/common/linux/*.h
+am__includeclc_HEADERS_DIST =  \
+	$(top_srcdir)/src/client/linux/crash_generation/*.h
+am__includeclh_HEADERS_DIST =  \
+	$(top_srcdir)/src/client/linux/handler/*.h
+am__includeclm_HEADERS_DIST =  \
+	$(top_srcdir)/src/client/linux/minidump_writer/*.h
+am__includelss_HEADERS_DIST = $(top_srcdir)/src/third_party/lss/*.h
+HEADERS = $(includec_HEADERS) $(includecl_HEADERS) \
+	$(includeclc_HEADERS) $(includeclh_HEADERS) \
+	$(includeclm_HEADERS) $(includegbc_HEADERS) \
+	$(includelss_HEADERS) $(includep_HEADERS)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+CSCOPE = cscope
+AM_RECURSIVE_TARGETS = cscope check recheck
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red='[0;31m'; \
+    grn='[0;32m'; \
+    lgn='[1;32m'; \
+    blu='[1;34m'; \
+    mgn='[0;35m'; \
+    brg='[1m'; \
+    std='[m'; \
+  fi; \
+}
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/autotools/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+  if test -d "$(distdir)"; then \
+    find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+      && rm -rf "$(distdir)" \
+      || { sleep 5 && rm -rf "$(distdir)"; }; \
+  else :; fi
+am__post_remove_distdir = $(am__remove_distdir)
+DIST_ARCHIVES = $(distdir).tar.gz
+GZIP_ENV = --best
+DIST_TARGETS = dist-gzip
+distuninstallcheck_listfiles = find . -type f -print
+am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
+  | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
+distcleancheck_listfiles = find . -type f -print
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCAS = @CCAS@
+CCASDEPMODE = @CCASDEPMODE@
+CCASFLAGS = @CCASFLAGS@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = $(prefix)/share/doc/$(PACKAGE)-$(VERSION)
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+
+# This allows #includes to be relative to src/
+AM_CPPFLAGS = -I$(top_srcdir)/src
+AM_CFLAGS = $(am__append_3)
+AM_CXXFLAGS = $(am__append_1) $(am__append_2) $(am__append_4)
+
+# Specify include paths for ac macros
+ACLOCAL_AMFLAGS = -I m4
+
+# License file is called LICENSE not COPYING
+AUTOMAKE_OPTIONS = foreign
+dist_doc_DATA = \
+	AUTHORS \
+	ChangeLog \
+	INSTALL \
+	LICENSE \
+	NEWS \
+	README
+
+@LINUX_HOST_TRUE@includeclhdir = $(includedir)/$(PACKAGE)/client/linux/handler
+@LINUX_HOST_TRUE@includeclh_HEADERS = $(top_srcdir)/src/client/linux/handler/*.h
+@LINUX_HOST_TRUE@includeclmdir = $(includedir)/$(PACKAGE)/client/linux/minidump_writer
+@LINUX_HOST_TRUE@includeclm_HEADERS = $(top_srcdir)/src/client/linux/minidump_writer/*.h
+@LINUX_HOST_TRUE@includeclcdir = $(includedir)/$(PACKAGE)/client/linux/crash_generation
+@LINUX_HOST_TRUE@includeclc_HEADERS = $(top_srcdir)/src/client/linux/crash_generation/*.h
+@LINUX_HOST_TRUE@includelssdir = $(includedir)/$(PACKAGE)/third_party/lss
+@LINUX_HOST_TRUE@includelss_HEADERS = $(top_srcdir)/src/third_party/lss/*.h
+@LINUX_HOST_TRUE@includecldir = $(includedir)/$(PACKAGE)/common/linux
+@LINUX_HOST_TRUE@includecl_HEADERS = $(top_srcdir)/src/common/linux/*.h
+includegbcdir = $(includedir)/$(PACKAGE)/google_breakpad/common
+includegbc_HEADERS = $(top_srcdir)/src/google_breakpad/common/*.h
+includecdir = $(includedir)/$(PACKAGE)/common
+includec_HEADERS = $(top_srcdir)/src/common/*.h
+includepdir = $(includedir)/$(PACKAGE)/processor
+includep_HEADERS = $(top_srcdir)/src/processor/*.h
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = $(am__append_6) $(am__append_9)
+noinst_LIBRARIES = $(am__append_7)
+lib_LIBRARIES = $(am__append_5) $(am__append_8)
+@LINUX_HOST_TRUE@src_client_linux_libbreakpad_client_a_SOURCES = src/client/linux/crash_generation/crash_generation_client.cc \
+@LINUX_HOST_TRUE@	src/client/linux/crash_generation/crash_generation_server.cc \
+@LINUX_HOST_TRUE@	src/client/linux/dump_writer_common/seccomp_unwinder.cc \
+@LINUX_HOST_TRUE@	src/client/linux/dump_writer_common/thread_info.cc \
+@LINUX_HOST_TRUE@	src/client/linux/dump_writer_common/ucontext_reader.cc \
+@LINUX_HOST_TRUE@	src/client/linux/handler/exception_handler.cc \
+@LINUX_HOST_TRUE@	src/client/linux/handler/minidump_descriptor.cc \
+@LINUX_HOST_TRUE@	src/client/linux/log/log.cc \
+@LINUX_HOST_TRUE@	src/client/linux/microdump_writer/microdump_writer.cc \
+@LINUX_HOST_TRUE@	src/client/linux/minidump_writer/linux_dumper.cc \
+@LINUX_HOST_TRUE@	src/client/linux/minidump_writer/linux_ptrace_dumper.cc \
+@LINUX_HOST_TRUE@	src/client/linux/minidump_writer/minidump_writer.cc \
+@LINUX_HOST_TRUE@	src/client/minidump_file_writer.cc \
+@LINUX_HOST_TRUE@	src/common/convert_UTF.c src/common/md5.cc \
+@LINUX_HOST_TRUE@	src/common/string_conversion.cc \
+@LINUX_HOST_TRUE@	src/common/linux/elfutils.cc \
+@LINUX_HOST_TRUE@	src/common/linux/file_id.cc \
+@LINUX_HOST_TRUE@	src/common/linux/guid_creator.cc \
+@LINUX_HOST_TRUE@	src/common/linux/linux_libc_support.cc \
+@LINUX_HOST_TRUE@	src/common/linux/memory_mapped_file.cc \
+@LINUX_HOST_TRUE@	src/common/linux/safe_readlink.cc \
+@LINUX_HOST_TRUE@	$(am__append_10)
+@DISABLE_PROCESSOR_FALSE@src_libbreakpad_a_SOURCES = \
+@DISABLE_PROCESSOR_FALSE@	src/google_breakpad/common/breakpad_types.h \
+@DISABLE_PROCESSOR_FALSE@	src/google_breakpad/common/minidump_format.h \
+@DISABLE_PROCESSOR_FALSE@	src/google_breakpad/common/minidump_size.h \
+@DISABLE_PROCESSOR_FALSE@	src/google_breakpad/processor/basic_source_line_resolver.h \
+@DISABLE_PROCESSOR_FALSE@	src/google_breakpad/processor/call_stack.h \
+@DISABLE_PROCESSOR_FALSE@	src/google_breakpad/processor/code_module.h \
+@DISABLE_PROCESSOR_FALSE@	src/google_breakpad/processor/code_modules.h \
+@DISABLE_PROCESSOR_FALSE@	src/google_breakpad/processor/dump_context.h \
+@DISABLE_PROCESSOR_FALSE@	src/google_breakpad/processor/dump_object.h \
+@DISABLE_PROCESSOR_FALSE@	src/google_breakpad/processor/exploitability.h \
+@DISABLE_PROCESSOR_FALSE@	src/google_breakpad/processor/fast_source_line_resolver.h \
+@DISABLE_PROCESSOR_FALSE@	src/google_breakpad/processor/memory_region.h \
+@DISABLE_PROCESSOR_FALSE@	src/google_breakpad/processor/microdump.h \
+@DISABLE_PROCESSOR_FALSE@	src/google_breakpad/processor/microdump_processor.h \
+@DISABLE_PROCESSOR_FALSE@	src/google_breakpad/processor/minidump.h \
+@DISABLE_PROCESSOR_FALSE@	src/google_breakpad/processor/minidump_processor.h \
+@DISABLE_PROCESSOR_FALSE@	src/google_breakpad/processor/process_result.h \
+@DISABLE_PROCESSOR_FALSE@	src/google_breakpad/processor/process_state.h \
+@DISABLE_PROCESSOR_FALSE@	src/google_breakpad/processor/source_line_resolver_base.h \
+@DISABLE_PROCESSOR_FALSE@	src/google_breakpad/processor/source_line_resolver_interface.h \
+@DISABLE_PROCESSOR_FALSE@	src/google_breakpad/processor/stack_frame.h \
+@DISABLE_PROCESSOR_FALSE@	src/google_breakpad/processor/stack_frame_cpu.h \
+@DISABLE_PROCESSOR_FALSE@	src/google_breakpad/processor/stack_frame_symbolizer.h \
+@DISABLE_PROCESSOR_FALSE@	src/google_breakpad/processor/stackwalker.h \
+@DISABLE_PROCESSOR_FALSE@	src/google_breakpad/processor/symbol_supplier.h \
+@DISABLE_PROCESSOR_FALSE@	src/google_breakpad/processor/system_info.h \
+@DISABLE_PROCESSOR_FALSE@	src/processor/address_map-inl.h \
+@DISABLE_PROCESSOR_FALSE@	src/processor/address_map.h \
+@DISABLE_PROCESSOR_FALSE@	src/processor/basic_code_module.h \
+@DISABLE_PROCESSOR_FALSE@	src/processor/basic_code_modules.cc \
+@DISABLE_PROCESSOR_FALSE@	src/processor/basic_code_modules.h \
+@DISABLE_PROCESSOR_FALSE@	src/processor/basic_source_line_resolver_types.h \
+@DISABLE_PROCESSOR_FALSE@	src/processor/basic_source_line_resolver.cc \
+@DISABLE_PROCESSOR_FALSE@	src/processor/binarystream.h \
+@DISABLE_PROCESSOR_FALSE@	src/processor/binarystream.cc \
+@DISABLE_PROCESSOR_FALSE@	src/processor/call_stack.cc \
+@DISABLE_PROCESSOR_FALSE@	src/processor/cfi_frame_info.cc \
+@DISABLE_PROCESSOR_FALSE@	src/processor/cfi_frame_info.h \
+@DISABLE_PROCESSOR_FALSE@	src/processor/contained_range_map-inl.h \
+@DISABLE_PROCESSOR_FALSE@	src/processor/contained_range_map.h \
+@DISABLE_PROCESSOR_FALSE@	src/processor/disassembler_x86.h \
+@DISABLE_PROCESSOR_FALSE@	src/processor/disassembler_x86.cc \
+@DISABLE_PROCESSOR_FALSE@	src/processor/dump_context.cc \
+@DISABLE_PROCESSOR_FALSE@	src/processor/dump_object.cc \
+@DISABLE_PROCESSOR_FALSE@	src/processor/exploitability.cc \
+@DISABLE_PROCESSOR_FALSE@	src/processor/exploitability_linux.h \
+@DISABLE_PROCESSOR_FALSE@	src/processor/exploitability_linux.cc \
+@DISABLE_PROCESSOR_FALSE@	src/processor/exploitability_win.h \
+@DISABLE_PROCESSOR_FALSE@	src/processor/exploitability_win.cc \
+@DISABLE_PROCESSOR_FALSE@	src/processor/fast_source_line_resolver_types.h \
+@DISABLE_PROCESSOR_FALSE@	src/processor/fast_source_line_resolver.cc \
+@DISABLE_PROCESSOR_FALSE@	src/processor/linked_ptr.h \
+@DISABLE_PROCESSOR_FALSE@	src/processor/logging.h \
+@DISABLE_PROCESSOR_FALSE@	src/processor/logging.cc \
+@DISABLE_PROCESSOR_FALSE@	src/processor/map_serializers-inl.h \
+@DISABLE_PROCESSOR_FALSE@	src/processor/map_serializers.h \
+@DISABLE_PROCESSOR_FALSE@	src/processor/microdump.cc \
+@DISABLE_PROCESSOR_FALSE@	src/processor/microdump_processor.cc \
+@DISABLE_PROCESSOR_FALSE@	src/processor/minidump.cc \
+@DISABLE_PROCESSOR_FALSE@	src/processor/minidump_processor.cc \
+@DISABLE_PROCESSOR_FALSE@	src/processor/module_comparer.cc \
+@DISABLE_PROCESSOR_FALSE@	src/processor/module_comparer.h \
+@DISABLE_PROCESSOR_FALSE@	src/processor/module_factory.h \
+@DISABLE_PROCESSOR_FALSE@	src/processor/module_serializer.cc \
+@DISABLE_PROCESSOR_FALSE@	src/processor/module_serializer.h \
+@DISABLE_PROCESSOR_FALSE@	src/processor/pathname_stripper.cc \
+@DISABLE_PROCESSOR_FALSE@	src/processor/pathname_stripper.h \
+@DISABLE_PROCESSOR_FALSE@	src/processor/postfix_evaluator-inl.h \
+@DISABLE_PROCESSOR_FALSE@	src/processor/postfix_evaluator.h \
+@DISABLE_PROCESSOR_FALSE@	src/processor/process_state.cc \
+@DISABLE_PROCESSOR_FALSE@	src/processor/range_map-inl.h \
+@DISABLE_PROCESSOR_FALSE@	src/processor/range_map.h \
+@DISABLE_PROCESSOR_FALSE@	src/processor/simple_serializer-inl.h \
+@DISABLE_PROCESSOR_FALSE@	src/processor/simple_serializer.h \
+@DISABLE_PROCESSOR_FALSE@	src/processor/simple_symbol_supplier.cc \
+@DISABLE_PROCESSOR_FALSE@	src/processor/simple_symbol_supplier.h \
+@DISABLE_PROCESSOR_FALSE@	src/processor/windows_frame_info.h \
+@DISABLE_PROCESSOR_FALSE@	src/processor/source_line_resolver_base_types.h \
+@DISABLE_PROCESSOR_FALSE@	src/processor/source_line_resolver_base.cc \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stack_frame_cpu.cc \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stack_frame_symbolizer.cc \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker.cc \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_amd64.cc \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_amd64.h \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_arm.cc \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_arm.h \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_arm64.cc \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_arm64.h \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_address_list.cc \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_address_list.h \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_mips.cc \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_mips.h \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_ppc.cc \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_ppc.h \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_ppc64.cc \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_ppc64.h \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_sparc.cc \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_sparc.h \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_x86.cc \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_x86.h \
+@DISABLE_PROCESSOR_FALSE@	src/processor/static_address_map-inl.h \
+@DISABLE_PROCESSOR_FALSE@	src/processor/static_address_map.h \
+@DISABLE_PROCESSOR_FALSE@	src/processor/static_contained_range_map-inl.h \
+@DISABLE_PROCESSOR_FALSE@	src/processor/static_contained_range_map.h \
+@DISABLE_PROCESSOR_FALSE@	src/processor/static_map_iterator-inl.h \
+@DISABLE_PROCESSOR_FALSE@	src/processor/static_map_iterator.h \
+@DISABLE_PROCESSOR_FALSE@	src/processor/static_map-inl.h \
+@DISABLE_PROCESSOR_FALSE@	src/processor/static_map.h \
+@DISABLE_PROCESSOR_FALSE@	src/processor/static_range_map-inl.h \
+@DISABLE_PROCESSOR_FALSE@	src/processor/static_range_map.h \
+@DISABLE_PROCESSOR_FALSE@	src/processor/symbolic_constants_win.cc \
+@DISABLE_PROCESSOR_FALSE@	src/processor/symbolic_constants_win.h \
+@DISABLE_PROCESSOR_FALSE@	src/processor/tokenize.cc \
+@DISABLE_PROCESSOR_FALSE@	src/processor/tokenize.h
+
+@DISABLE_PROCESSOR_FALSE@src_libbreakpad_a_LIBADD = src/third_party/libdisasm/libdisasm.a
+@DISABLE_PROCESSOR_FALSE@src_third_party_libdisasm_libdisasm_a_SOURCES = \
+@DISABLE_PROCESSOR_FALSE@	src/third_party/libdisasm/ia32_implicit.c \
+@DISABLE_PROCESSOR_FALSE@	src/third_party/libdisasm/ia32_implicit.h \
+@DISABLE_PROCESSOR_FALSE@	src/third_party/libdisasm/ia32_insn.c \
+@DISABLE_PROCESSOR_FALSE@	src/third_party/libdisasm/ia32_insn.h \
+@DISABLE_PROCESSOR_FALSE@	src/third_party/libdisasm/ia32_invariant.c \
+@DISABLE_PROCESSOR_FALSE@	src/third_party/libdisasm/ia32_invariant.h \
+@DISABLE_PROCESSOR_FALSE@	src/third_party/libdisasm/ia32_modrm.c \
+@DISABLE_PROCESSOR_FALSE@	src/third_party/libdisasm/ia32_modrm.h \
+@DISABLE_PROCESSOR_FALSE@	src/third_party/libdisasm/ia32_opcode_tables.c \
+@DISABLE_PROCESSOR_FALSE@	src/third_party/libdisasm/ia32_opcode_tables.h \
+@DISABLE_PROCESSOR_FALSE@	src/third_party/libdisasm/ia32_operand.c \
+@DISABLE_PROCESSOR_FALSE@	src/third_party/libdisasm/ia32_operand.h \
+@DISABLE_PROCESSOR_FALSE@	src/third_party/libdisasm/ia32_reg.c \
+@DISABLE_PROCESSOR_FALSE@	src/third_party/libdisasm/ia32_reg.h \
+@DISABLE_PROCESSOR_FALSE@	src/third_party/libdisasm/ia32_settings.c \
+@DISABLE_PROCESSOR_FALSE@	src/third_party/libdisasm/ia32_settings.h \
+@DISABLE_PROCESSOR_FALSE@	src/third_party/libdisasm/libdis.h \
+@DISABLE_PROCESSOR_FALSE@	src/third_party/libdisasm/qword.h \
+@DISABLE_PROCESSOR_FALSE@	src/third_party/libdisasm/x86_disasm.c \
+@DISABLE_PROCESSOR_FALSE@	src/third_party/libdisasm/x86_format.c \
+@DISABLE_PROCESSOR_FALSE@	src/third_party/libdisasm/x86_imm.c \
+@DISABLE_PROCESSOR_FALSE@	src/third_party/libdisasm/x86_imm.h \
+@DISABLE_PROCESSOR_FALSE@	src/third_party/libdisasm/x86_insn.c \
+@DISABLE_PROCESSOR_FALSE@	src/third_party/libdisasm/x86_misc.c \
+@DISABLE_PROCESSOR_FALSE@	src/third_party/libdisasm/x86_operand_list.c \
+@DISABLE_PROCESSOR_FALSE@	src/third_party/libdisasm/x86_operand_list.h
+
+@DISABLE_PROCESSOR_FALSE@check_SCRIPTS = \
+@DISABLE_PROCESSOR_FALSE@	src/processor/microdump_stackwalk_test \
+@DISABLE_PROCESSOR_FALSE@	src/processor/microdump_stackwalk_machine_readable_test \
+@DISABLE_PROCESSOR_FALSE@	src/processor/minidump_dump_test \
+@DISABLE_PROCESSOR_FALSE@	src/processor/minidump_stackwalk_test \
+@DISABLE_PROCESSOR_FALSE@	src/processor/minidump_stackwalk_machine_readable_test
+
+TESTS = $(check_PROGRAMS) $(check_SCRIPTS)
+# The default Autotools test driver script.
+@ANDROID_HOST_FALSE@LOG_DRIVER = $(top_srcdir)/autotools/test-driver
+
+# Since Autotools 1.2, tests are run through a special "test driver" script.
+# Unfortunately, it's not possible anymore to specify an alternative shell to
+# run them on connected devices, so use a slightly modified version of the
+# driver for Android.
+@ANDROID_HOST_TRUE@LOG_DRIVER = $(top_srcdir)/android/test-driver
+@LINUX_HOST_TRUE@src_client_linux_linux_dumper_unittest_helper_SOURCES = \
+@LINUX_HOST_TRUE@	src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc
+
+@LINUX_HOST_TRUE@src_client_linux_linux_dumper_unittest_helper_LDFLAGS = $(PTHREAD_CFLAGS)
+@LINUX_HOST_TRUE@src_client_linux_linux_dumper_unittest_helper_CC = $(PTHREAD_CC)
+@ANDROID_HOST_FALSE@@LINUX_HOST_TRUE@src_client_linux_linux_dumper_unittest_helper_CXXFLAGS = $(PTHREAD_CFLAGS)
+# On Android PTHREAD_CFLAGS is empty, and adding src/common/android/include
+# to the include path is necessary to build this program.
+@ANDROID_HOST_TRUE@@LINUX_HOST_TRUE@src_client_linux_linux_dumper_unittest_helper_CXXFLAGS = $(AM_CXXFLAGS)
+@LINUX_HOST_TRUE@src_client_linux_linux_client_unittest_shlib_SOURCES = src/client/linux/handler/exception_handler_unittest.cc \
+@LINUX_HOST_TRUE@	src/client/linux/minidump_writer/directory_reader_unittest.cc \
+@LINUX_HOST_TRUE@	src/client/linux/minidump_writer/cpu_set_unittest.cc \
+@LINUX_HOST_TRUE@	src/client/linux/minidump_writer/line_reader_unittest.cc \
+@LINUX_HOST_TRUE@	src/client/linux/minidump_writer/linux_core_dumper.cc \
+@LINUX_HOST_TRUE@	src/client/linux/minidump_writer/linux_core_dumper_unittest.cc \
+@LINUX_HOST_TRUE@	src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc \
+@LINUX_HOST_TRUE@	src/client/linux/minidump_writer/minidump_writer_unittest.cc \
+@LINUX_HOST_TRUE@	src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc \
+@LINUX_HOST_TRUE@	src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc \
+@LINUX_HOST_TRUE@	src/common/linux/elf_core_dump.cc \
+@LINUX_HOST_TRUE@	src/common/linux/linux_libc_support_unittest.cc \
+@LINUX_HOST_TRUE@	src/common/linux/tests/crash_generator.cc \
+@LINUX_HOST_TRUE@	src/common/memory_unittest.cc \
+@LINUX_HOST_TRUE@	src/common/tests/file_utils.cc \
+@LINUX_HOST_TRUE@	src/testing/gtest/src/gtest-all.cc \
+@LINUX_HOST_TRUE@	src/testing/gtest/src/gtest_main.cc \
+@LINUX_HOST_TRUE@	src/testing/src/gmock-all.cc \
+@LINUX_HOST_TRUE@	src/processor/basic_code_modules.cc \
+@LINUX_HOST_TRUE@	src/processor/dump_context.cc \
+@LINUX_HOST_TRUE@	src/processor/dump_object.cc \
+@LINUX_HOST_TRUE@	src/processor/logging.cc \
+@LINUX_HOST_TRUE@	src/processor/minidump.cc \
+@LINUX_HOST_TRUE@	src/processor/pathname_stripper.cc \
+@LINUX_HOST_TRUE@	$(am__append_18) \
+@LINUX_HOST_TRUE@	src/client/linux/microdump_writer/microdump_writer_unittest.cc \
+@LINUX_HOST_TRUE@	$(am__append_19)
+@LINUX_HOST_TRUE@src_client_linux_linux_client_unittest_shlib_CPPFLAGS = \
+@LINUX_HOST_TRUE@	-I$(top_srcdir)/src \
+@LINUX_HOST_TRUE@	-I$(top_srcdir)/src/testing/include \
+@LINUX_HOST_TRUE@	-I$(top_srcdir)/src/testing/gtest/include \
+@LINUX_HOST_TRUE@	-I$(top_srcdir)/src/testing/gtest \
+@LINUX_HOST_TRUE@	-I$(top_srcdir)/src/testing
+
+@LINUX_HOST_TRUE@src_client_linux_linux_client_unittest_shlib_LDFLAGS =  \
+@LINUX_HOST_TRUE@	-shared -Wl,-h,linux_client_unittest_shlib \
+@LINUX_HOST_TRUE@	$(am__append_20)
+@LINUX_HOST_TRUE@src_client_linux_linux_client_unittest_shlib_LDADD = \
+@LINUX_HOST_TRUE@	src/client/linux/crash_generation/crash_generation_client.o \
+@LINUX_HOST_TRUE@	src/client/linux/dump_writer_common/seccomp_unwinder.o \
+@LINUX_HOST_TRUE@	src/client/linux/dump_writer_common/thread_info.o \
+@LINUX_HOST_TRUE@	src/client/linux/dump_writer_common/ucontext_reader.o \
+@LINUX_HOST_TRUE@	src/client/linux/handler/exception_handler.o \
+@LINUX_HOST_TRUE@	src/client/linux/handler/minidump_descriptor.o \
+@LINUX_HOST_TRUE@	src/client/linux/log/log.o \
+@LINUX_HOST_TRUE@	src/client/linux/microdump_writer/microdump_writer.o \
+@LINUX_HOST_TRUE@	src/client/linux/minidump_writer/linux_dumper.o \
+@LINUX_HOST_TRUE@	src/client/linux/minidump_writer/linux_ptrace_dumper.o \
+@LINUX_HOST_TRUE@	src/client/linux/minidump_writer/minidump_writer.o \
+@LINUX_HOST_TRUE@	src/client/minidump_file_writer.o \
+@LINUX_HOST_TRUE@	src/common/convert_UTF.o \
+@LINUX_HOST_TRUE@	src/common/md5.o \
+@LINUX_HOST_TRUE@	src/common/linux/elfutils.o \
+@LINUX_HOST_TRUE@	src/common/linux/file_id.o \
+@LINUX_HOST_TRUE@	src/common/linux/guid_creator.o \
+@LINUX_HOST_TRUE@	src/common/linux/linux_libc_support.o \
+@LINUX_HOST_TRUE@	src/common/linux/memory_mapped_file.o \
+@LINUX_HOST_TRUE@	src/common/linux/safe_readlink.o \
+@LINUX_HOST_TRUE@	src/common/string_conversion.o \
+@LINUX_HOST_TRUE@	$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+
+@LINUX_HOST_TRUE@src_client_linux_linux_client_unittest_shlib_DEPENDENCIES = \
+@LINUX_HOST_TRUE@	src/client/linux/linux_dumper_unittest_helper \
+@LINUX_HOST_TRUE@	src/client/linux/libbreakpad_client.a \
+@LINUX_HOST_TRUE@	src/libbreakpad.a
+
+@LINUX_HOST_TRUE@src_client_linux_linux_client_unittest_SOURCES = 
+@LINUX_HOST_TRUE@src_client_linux_linux_client_unittest_LDFLAGS =  \
+@LINUX_HOST_TRUE@	-Wl,-rpath,'$$ORIGIN' $(am__append_21)
+@LINUX_HOST_TRUE@src_client_linux_linux_client_unittest_LDADD = \
+@LINUX_HOST_TRUE@	src/client/linux/linux_client_unittest_shlib
+
+@LINUX_HOST_TRUE@src_client_linux_linux_client_unittest_DEPENDENCIES = \
+@LINUX_HOST_TRUE@	src/client/linux/linux_client_unittest_shlib
+
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@src_tools_linux_core2md_core2md_SOURCES = \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/tools/linux/core2md/core2md.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/client/linux/minidump_writer/linux_core_dumper.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/elf_core_dump.cc
+
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@src_tools_linux_core2md_core2md_LDADD = \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/client/linux/libbreakpad_client.a
+
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@src_tools_linux_dump_syms_dump_syms_SOURCES = \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/dwarf_cfi_to_module.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/dwarf_cu_to_module.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/dwarf_line_to_module.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/language.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/module.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/stabs_reader.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/stabs_to_module.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/dwarf/bytereader.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/dwarf/dwarf2diehandler.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/dwarf/dwarf2reader.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/crc32.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/dump_symbols.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/elf_symbols_to_module.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/elfutils.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/file_id.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/linux_libc_support.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/memory_mapped_file.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/safe_readlink.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/tools/linux/dump_syms/dump_syms.cc
+
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@src_tools_linux_md2core_minidump_2_core_SOURCES = \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/memory_mapped_file.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/tools/linux/md2core/minidump-2-core.cc
+
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@src_tools_linux_symupload_minidump_upload_SOURCES = \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/http_upload.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/tools/linux/symupload/minidump_upload.cc
+
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@src_tools_linux_symupload_minidump_upload_LDADD = -ldl
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@src_tools_linux_symupload_sym_upload_SOURCES = \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/http_upload.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/tools/linux/symupload/sym_upload.cc
+
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@src_tools_linux_symupload_sym_upload_LDADD = -ldl
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@src_common_dumper_unittest_SOURCES = \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/byte_cursor_unittest.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/dwarf_cfi_to_module.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/dwarf_cfi_to_module_unittest.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/dwarf_cu_to_module.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/dwarf_cu_to_module_unittest.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/dwarf_line_to_module.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/dwarf_line_to_module_unittest.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/language.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/memory_range_unittest.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/module.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/module_unittest.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/stabs_reader.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/stabs_reader_unittest.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/stabs_to_module.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/stabs_to_module_unittest.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/test_assembler.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/dwarf/bytereader.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/dwarf/bytereader_unittest.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/dwarf/cfi_assembler.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/dwarf/dwarf2diehandler.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/dwarf/dwarf2diehandler_unittest.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/dwarf/dwarf2reader.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/dwarf/dwarf2reader_cfi_unittest.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/dwarf/dwarf2reader_die_unittest.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/crc32.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/dump_symbols.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/dump_symbols_unittest.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/elf_core_dump.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/elf_core_dump_unittest.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/elf_symbols_to_module.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/elf_symbols_to_module_unittest.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/elfutils.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/file_id.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/file_id_unittest.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/linux_libc_support.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/memory_mapped_file.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/memory_mapped_file_unittest.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/safe_readlink.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/safe_readlink_unittest.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/synth_elf.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/synth_elf_unittest.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/linux/tests/crash_generator.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/common/tests/file_utils.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/testing/gtest/src/gtest-all.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/testing/gtest/src/gtest_main.cc \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	src/testing/src/gmock-all.cc
+
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@src_common_dumper_unittest_CPPFLAGS = \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	-I$(top_srcdir)/src \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	-I$(top_srcdir)/src/testing/include \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	-I$(top_srcdir)/src/testing/gtest/include \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	-I$(top_srcdir)/src/testing/gtest \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	-I$(top_srcdir)/src/testing \
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@	$(PTHREAD_CFLAGS)
+
+@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@src_common_dumper_unittest_LDADD = $(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+@LINUX_HOST_TRUE@src_tools_linux_md2core_minidump_2_core_unittest_SOURCES = \
+@LINUX_HOST_TRUE@	src/testing/gtest/src/gtest-all.cc \
+@LINUX_HOST_TRUE@	src/testing/gtest/src/gtest_main.cc \
+@LINUX_HOST_TRUE@	src/testing/src/gmock-all.cc \
+@LINUX_HOST_TRUE@	src/tools/linux/md2core/minidump_memory_range_unittest.cc
+
+@LINUX_HOST_TRUE@src_tools_linux_md2core_minidump_2_core_unittest_CPPFLAGS = \
+@LINUX_HOST_TRUE@	-I$(top_srcdir)/src \
+@LINUX_HOST_TRUE@	-I$(top_srcdir)/src/testing/include \
+@LINUX_HOST_TRUE@	-I$(top_srcdir)/src/testing/gtest/include \
+@LINUX_HOST_TRUE@	-I$(top_srcdir)/src/testing/gtest \
+@LINUX_HOST_TRUE@	-I$(top_srcdir)/src/testing
+
+@LINUX_HOST_TRUE@src_tools_linux_md2core_minidump_2_core_unittest_LDADD = \
+@LINUX_HOST_TRUE@	$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+
+@DISABLE_PROCESSOR_FALSE@src_processor_address_map_unittest_SOURCES = \
+@DISABLE_PROCESSOR_FALSE@	src/processor/address_map_unittest.cc
+
+@DISABLE_PROCESSOR_FALSE@src_processor_address_map_unittest_LDADD = \
+@DISABLE_PROCESSOR_FALSE@	src/processor/logging.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/pathname_stripper.o
+
+@DISABLE_PROCESSOR_FALSE@src_processor_binarystream_unittest_SOURCES = \
+@DISABLE_PROCESSOR_FALSE@	src/processor/binarystream_unittest.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/gtest-all.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/src/gmock-all.cc
+
+@DISABLE_PROCESSOR_FALSE@src_processor_binarystream_unittest_CPPFLAGS = \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/include \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/gtest/include \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/gtest \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing
+
+@DISABLE_PROCESSOR_FALSE@src_processor_binarystream_unittest_LDADD = \
+@DISABLE_PROCESSOR_FALSE@	src/processor/binarystream.o \
+@DISABLE_PROCESSOR_FALSE@	$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+
+@DISABLE_PROCESSOR_FALSE@src_processor_basic_source_line_resolver_unittest_SOURCES = \
+@DISABLE_PROCESSOR_FALSE@	src/processor/basic_source_line_resolver_unittest.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/gtest-all.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/src/gmock-all.cc
+
+@DISABLE_PROCESSOR_FALSE@src_processor_basic_source_line_resolver_unittest_CPPFLAGS = \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/include \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/gtest/include \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/gtest \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing
+
+@DISABLE_PROCESSOR_FALSE@src_processor_basic_source_line_resolver_unittest_LDADD = \
+@DISABLE_PROCESSOR_FALSE@	src/processor/basic_source_line_resolver.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/cfi_frame_info.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/pathname_stripper.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/logging.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/source_line_resolver_base.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/tokenize.o \
+@DISABLE_PROCESSOR_FALSE@	$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+
+@DISABLE_PROCESSOR_FALSE@src_processor_cfi_frame_info_unittest_SOURCES = \
+@DISABLE_PROCESSOR_FALSE@	src/processor/cfi_frame_info_unittest.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/gtest-all.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/gtest_main.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/src/gmock-all.cc
+
+@DISABLE_PROCESSOR_FALSE@src_processor_cfi_frame_info_unittest_LDADD = \
+@DISABLE_PROCESSOR_FALSE@	src/processor/cfi_frame_info.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/logging.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/pathname_stripper.o \
+@DISABLE_PROCESSOR_FALSE@	$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+
+@DISABLE_PROCESSOR_FALSE@src_processor_cfi_frame_info_unittest_CPPFLAGS = \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/include \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/gtest/include \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/gtest \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing
+
+@DISABLE_PROCESSOR_FALSE@src_processor_contained_range_map_unittest_SOURCES = \
+@DISABLE_PROCESSOR_FALSE@	src/processor/contained_range_map_unittest.cc
+
+@DISABLE_PROCESSOR_FALSE@src_processor_contained_range_map_unittest_LDADD = \
+@DISABLE_PROCESSOR_FALSE@	src/processor/logging.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/pathname_stripper.o
+
+@DISABLE_PROCESSOR_FALSE@src_processor_exploitability_unittest_SOURCES = \
+@DISABLE_PROCESSOR_FALSE@	src/processor/exploitability_unittest.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/gtest-all.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/gtest_main.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/src/gmock-all.cc
+
+@DISABLE_PROCESSOR_FALSE@src_processor_exploitability_unittest_CPPFLAGS = \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/include \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/gtest/include \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/gtest \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing
+
+@DISABLE_PROCESSOR_FALSE@src_processor_exploitability_unittest_LDADD = \
+@DISABLE_PROCESSOR_FALSE@	src/processor/minidump_processor.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/process_state.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/disassembler_x86.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/exploitability.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/exploitability_linux.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/exploitability_win.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/basic_code_modules.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/basic_source_line_resolver.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/call_stack.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/cfi_frame_info.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/dump_context.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/dump_object.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/logging.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/minidump.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/pathname_stripper.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/simple_symbol_supplier.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/source_line_resolver_base.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stack_frame_cpu.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stack_frame_symbolizer.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_address_list.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_amd64.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_arm.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_arm64.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_mips.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_ppc.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_ppc64.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_sparc.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_x86.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/symbolic_constants_win.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/tokenize.o \
+@DISABLE_PROCESSOR_FALSE@	src/third_party/libdisasm/libdisasm.a \
+@DISABLE_PROCESSOR_FALSE@	$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+
+@DISABLE_PROCESSOR_FALSE@src_processor_disassembler_x86_unittest_SOURCES = \
+@DISABLE_PROCESSOR_FALSE@	src/processor/disassembler_x86_unittest.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/gtest-all.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/gtest_main.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/src/gmock-all.cc
+
+@DISABLE_PROCESSOR_FALSE@src_processor_disassembler_x86_unittest_CPPFLAGS = \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/include \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/gtest/include \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/gtest \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing
+
+@DISABLE_PROCESSOR_FALSE@src_processor_disassembler_x86_unittest_LDADD = \
+@DISABLE_PROCESSOR_FALSE@	src/processor/disassembler_x86.o \
+@DISABLE_PROCESSOR_FALSE@	src/third_party/libdisasm/libdisasm.a \
+@DISABLE_PROCESSOR_FALSE@	$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+
+@DISABLE_PROCESSOR_FALSE@src_processor_fast_source_line_resolver_unittest_SOURCES = \
+@DISABLE_PROCESSOR_FALSE@	src/processor/fast_source_line_resolver_unittest.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/gtest-all.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/src/gmock-all.cc
+
+@DISABLE_PROCESSOR_FALSE@src_processor_fast_source_line_resolver_unittest_CPPFLAGS = \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/include \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/gtest/include \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/gtest \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing
+
+@DISABLE_PROCESSOR_FALSE@src_processor_fast_source_line_resolver_unittest_LDADD = \
+@DISABLE_PROCESSOR_FALSE@	src/processor/fast_source_line_resolver.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/basic_source_line_resolver.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/cfi_frame_info.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/module_comparer.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/module_serializer.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/pathname_stripper.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/logging.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/source_line_resolver_base.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/tokenize.o \
+@DISABLE_PROCESSOR_FALSE@	$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+
+@DISABLE_PROCESSOR_FALSE@src_processor_map_serializers_unittest_SOURCES = \
+@DISABLE_PROCESSOR_FALSE@	src/processor/map_serializers_unittest.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/gtest-all.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/src/gmock-all.cc
+
+@DISABLE_PROCESSOR_FALSE@src_processor_map_serializers_unittest_CPPFLAGS = \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/include \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/gtest/include \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/gtest \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing
+
+@DISABLE_PROCESSOR_FALSE@src_processor_map_serializers_unittest_LDADD = \
+@DISABLE_PROCESSOR_FALSE@	src/processor/logging.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/pathname_stripper.o \
+@DISABLE_PROCESSOR_FALSE@	$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+
+@DISABLE_PROCESSOR_FALSE@src_processor_microdump_processor_unittest_SOURCES = \
+@DISABLE_PROCESSOR_FALSE@	src/processor/microdump_processor_unittest.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/gtest-all.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/src/gmock-all.cc
+
+@DISABLE_PROCESSOR_FALSE@src_processor_microdump_processor_unittest_CPPFLAGS = \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/include \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/gtest/include \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/gtest \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing
+
+@DISABLE_PROCESSOR_FALSE@src_processor_microdump_processor_unittest_LDADD = \
+@DISABLE_PROCESSOR_FALSE@	src/processor/basic_code_modules.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/basic_source_line_resolver.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/call_stack.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/cfi_frame_info.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/dump_context.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/dump_object.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/logging.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/microdump.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/microdump_processor.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/pathname_stripper.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/process_state.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/simple_symbol_supplier.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/source_line_resolver_base.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stack_frame_symbolizer.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_address_list.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_amd64.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_arm.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_arm64.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_mips.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_ppc.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_ppc64.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_sparc.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_x86.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/tokenize.o \
+@DISABLE_PROCESSOR_FALSE@  	$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+
+@DISABLE_PROCESSOR_FALSE@src_processor_minidump_processor_unittest_SOURCES = \
+@DISABLE_PROCESSOR_FALSE@	src/processor/minidump_processor_unittest.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/gtest-all.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/src/gmock-all.cc
+
+@DISABLE_PROCESSOR_FALSE@src_processor_minidump_processor_unittest_CPPFLAGS = \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/include \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/gtest/include \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/gtest \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing
+
+@DISABLE_PROCESSOR_FALSE@src_processor_minidump_processor_unittest_LDADD = \
+@DISABLE_PROCESSOR_FALSE@	src/processor/basic_code_modules.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/basic_source_line_resolver.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/call_stack.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/cfi_frame_info.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/disassembler_x86.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/dump_context.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/dump_object.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/exploitability.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/exploitability_linux.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/exploitability_win.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/logging.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/minidump_processor.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/minidump.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/pathname_stripper.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/process_state.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/source_line_resolver_base.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stack_frame_cpu.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stack_frame_symbolizer.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_address_list.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_amd64.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_arm.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_arm64.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_mips.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_ppc.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_ppc64.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_sparc.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_x86.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/symbolic_constants_win.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/tokenize.o \
+@DISABLE_PROCESSOR_FALSE@	src/third_party/libdisasm/libdisasm.a \
+@DISABLE_PROCESSOR_FALSE@	$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+
+@DISABLE_PROCESSOR_FALSE@src_processor_minidump_unittest_SOURCES = \
+@DISABLE_PROCESSOR_FALSE@	src/common/test_assembler.cc \
+@DISABLE_PROCESSOR_FALSE@	src/processor/minidump_unittest.cc \
+@DISABLE_PROCESSOR_FALSE@	src/processor/synth_minidump.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/gtest-all.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/gtest_main.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/src/gmock-all.cc
+
+@DISABLE_PROCESSOR_FALSE@src_processor_minidump_unittest_CPPFLAGS = \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/include \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/gtest/include \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/gtest \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing
+
+@DISABLE_PROCESSOR_FALSE@src_processor_minidump_unittest_LDADD = \
+@DISABLE_PROCESSOR_FALSE@	src/processor/basic_code_modules.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/dump_context.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/dump_object.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/logging.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/minidump.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/pathname_stripper.o \
+@DISABLE_PROCESSOR_FALSE@	$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+
+@DISABLE_PROCESSOR_FALSE@src_processor_static_address_map_unittest_SOURCES = \
+@DISABLE_PROCESSOR_FALSE@	src/processor/static_address_map_unittest.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/gtest-all.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/src/gmock-all.cc
+
+@DISABLE_PROCESSOR_FALSE@src_processor_static_address_map_unittest_CPPFLAGS = \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/include \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/gtest/include \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/gtest \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing
+
+@DISABLE_PROCESSOR_FALSE@src_processor_static_address_map_unittest_LDADD = \
+@DISABLE_PROCESSOR_FALSE@	src/processor/logging.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/pathname_stripper.o \
+@DISABLE_PROCESSOR_FALSE@	$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+
+@DISABLE_PROCESSOR_FALSE@src_processor_static_contained_range_map_unittest_SOURCES = \
+@DISABLE_PROCESSOR_FALSE@	src/processor/static_contained_range_map_unittest.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/gtest-all.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/src/gmock-all.cc
+
+@DISABLE_PROCESSOR_FALSE@src_processor_static_contained_range_map_unittest_CPPFLAGS = \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/include \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/gtest/include \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/gtest \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing
+
+@DISABLE_PROCESSOR_FALSE@src_processor_static_contained_range_map_unittest_LDADD = \
+@DISABLE_PROCESSOR_FALSE@	src/processor/logging.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/pathname_stripper.o \
+@DISABLE_PROCESSOR_FALSE@	$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+
+@DISABLE_PROCESSOR_FALSE@src_processor_static_map_unittest_SOURCES = \
+@DISABLE_PROCESSOR_FALSE@	src/processor/static_map_unittest.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/gtest-all.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/src/gmock-all.cc
+
+@DISABLE_PROCESSOR_FALSE@src_processor_static_map_unittest_CPPFLAGS = \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/include \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/gtest/include \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/gtest \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing
+
+@DISABLE_PROCESSOR_FALSE@src_processor_static_map_unittest_LDADD = \
+@DISABLE_PROCESSOR_FALSE@	src/processor/logging.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/pathname_stripper.o \
+@DISABLE_PROCESSOR_FALSE@	$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+
+@DISABLE_PROCESSOR_FALSE@src_processor_static_range_map_unittest_SOURCES = \
+@DISABLE_PROCESSOR_FALSE@	src/processor/static_range_map_unittest.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/gtest-all.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/src/gmock-all.cc
+
+@DISABLE_PROCESSOR_FALSE@src_processor_static_range_map_unittest_CPPFLAGS = \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/include \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/gtest/include \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/gtest \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing
+
+@DISABLE_PROCESSOR_FALSE@src_processor_static_range_map_unittest_LDADD = \
+@DISABLE_PROCESSOR_FALSE@	src/processor/logging.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/pathname_stripper.o \
+@DISABLE_PROCESSOR_FALSE@	$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+
+@DISABLE_PROCESSOR_FALSE@src_processor_pathname_stripper_unittest_SOURCES = \
+@DISABLE_PROCESSOR_FALSE@	src/processor/pathname_stripper_unittest.cc
+
+@DISABLE_PROCESSOR_FALSE@src_processor_pathname_stripper_unittest_LDADD = \
+@DISABLE_PROCESSOR_FALSE@	src/processor/pathname_stripper.o \
+@DISABLE_PROCESSOR_FALSE@	$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+
+@DISABLE_PROCESSOR_FALSE@src_processor_postfix_evaluator_unittest_SOURCES = \
+@DISABLE_PROCESSOR_FALSE@	src/processor/postfix_evaluator_unittest.cc
+
+@DISABLE_PROCESSOR_FALSE@src_processor_postfix_evaluator_unittest_LDADD = \
+@DISABLE_PROCESSOR_FALSE@	src/processor/logging.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/pathname_stripper.o \
+@DISABLE_PROCESSOR_FALSE@	$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+
+@DISABLE_PROCESSOR_FALSE@src_processor_range_map_unittest_SOURCES = \
+@DISABLE_PROCESSOR_FALSE@	src/processor/range_map_unittest.cc
+
+@DISABLE_PROCESSOR_FALSE@src_processor_range_map_unittest_LDADD = \
+@DISABLE_PROCESSOR_FALSE@	src/processor/logging.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/pathname_stripper.o \
+@DISABLE_PROCESSOR_FALSE@	$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+
+@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_selftest_SOURCES = \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_selftest.cc
+
+@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_selftest_LDADD = \
+@DISABLE_PROCESSOR_FALSE@	src/processor/basic_code_modules.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/basic_source_line_resolver.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/call_stack.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/disassembler_x86.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/exploitability.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/exploitability_linux.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/exploitability_win.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/logging.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/minidump.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/pathname_stripper.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/source_line_resolver_base.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stack_frame_cpu.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stack_frame_symbolizer.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_address_list.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_amd64.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_arm.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_arm64.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_mips.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_ppc.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_ppc64.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_sparc.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_x86.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/tokenize.o \
+@DISABLE_PROCESSOR_FALSE@	$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+
+@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_amd64_unittest_SOURCES = \
+@DISABLE_PROCESSOR_FALSE@	src/common/test_assembler.cc \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_amd64_unittest.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/gtest-all.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/gtest_main.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/src/gmock-all.cc
+
+@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_amd64_unittest_LDADD = \
+@DISABLE_PROCESSOR_FALSE@	src/libbreakpad.a \
+@DISABLE_PROCESSOR_FALSE@	$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+
+@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_amd64_unittest_CPPFLAGS = \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/include \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/gtest/include \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/gtest \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing
+
+@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_arm_unittest_SOURCES = \
+@DISABLE_PROCESSOR_FALSE@	src/common/test_assembler.cc \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_arm_unittest.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/gtest-all.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/gtest_main.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/src/gmock-all.cc
+
+@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_arm_unittest_LDADD = \
+@DISABLE_PROCESSOR_FALSE@	src/libbreakpad.a \
+@DISABLE_PROCESSOR_FALSE@	$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+
+@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_arm_unittest_CPPFLAGS = \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/include \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/gtest/include \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/gtest \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing
+
+@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_arm64_unittest_SOURCES = \
+@DISABLE_PROCESSOR_FALSE@	src/common/test_assembler.cc \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_arm64_unittest.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/gtest-all.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/gtest_main.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/src/gmock-all.cc
+
+@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_arm64_unittest_LDADD = \
+@DISABLE_PROCESSOR_FALSE@	src/libbreakpad.a \
+@DISABLE_PROCESSOR_FALSE@	$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+
+@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_arm64_unittest_CPPFLAGS = \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/include \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/gtest/include \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/gtest \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing
+
+@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_address_list_unittest_SOURCES = \
+@DISABLE_PROCESSOR_FALSE@	src/common/test_assembler.cc \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_address_list_unittest.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/gtest-all.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/gtest_main.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/src/gmock-all.cc
+
+@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_address_list_unittest_LDADD = \
+@DISABLE_PROCESSOR_FALSE@	src/libbreakpad.a \
+@DISABLE_PROCESSOR_FALSE@	$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+
+@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_address_list_unittest_CPPFLAGS = \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/include \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/gtest/include \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/gtest \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing
+
+@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_mips_unittest_SOURCES = \
+@DISABLE_PROCESSOR_FALSE@	src/common/test_assembler.cc \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_mips_unittest.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/gtest-all.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/gtest_main.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/src/gmock-all.cc
+
+@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_mips_unittest_LDADD = \
+@DISABLE_PROCESSOR_FALSE@	src/libbreakpad.a \
+@DISABLE_PROCESSOR_FALSE@	$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+
+@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_mips_unittest_CPPFLAGS = \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/include \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/gtest/include \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/gtest \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing
+
+@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_x86_unittest_SOURCES = \
+@DISABLE_PROCESSOR_FALSE@	src/common/test_assembler.cc \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_x86_unittest.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/gtest-all.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/gtest_main.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/src/gmock-all.cc
+
+@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_x86_unittest_LDADD = \
+@DISABLE_PROCESSOR_FALSE@	src/libbreakpad.a \
+@DISABLE_PROCESSOR_FALSE@	$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+
+@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_x86_unittest_CPPFLAGS = \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/include \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/gtest/include \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/gtest \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing
+
+@DISABLE_PROCESSOR_FALSE@src_processor_synth_minidump_unittest_SOURCES = \
+@DISABLE_PROCESSOR_FALSE@	src/common/test_assembler.cc \
+@DISABLE_PROCESSOR_FALSE@	src/common/test_assembler.h \
+@DISABLE_PROCESSOR_FALSE@	src/processor/synth_minidump_unittest.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/gtest-all.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/gtest_main.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/src/gmock-all.cc \
+@DISABLE_PROCESSOR_FALSE@	src/processor/synth_minidump.cc \
+@DISABLE_PROCESSOR_FALSE@	src/processor/synth_minidump.h
+
+@DISABLE_PROCESSOR_FALSE@src_processor_synth_minidump_unittest_CPPFLAGS = \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/include \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/gtest/include \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/gtest \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing
+
+@DISABLE_PROCESSOR_FALSE@src_processor_synth_minidump_unittest_LDADD = $(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+@DISABLE_PROCESSOR_FALSE@src_common_test_assembler_unittest_SOURCES = \
+@DISABLE_PROCESSOR_FALSE@	src/common/test_assembler.cc \
+@DISABLE_PROCESSOR_FALSE@	src/common/test_assembler.h \
+@DISABLE_PROCESSOR_FALSE@	src/common/test_assembler_unittest.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/gtest-all.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/gtest/src/gtest_main.cc \
+@DISABLE_PROCESSOR_FALSE@	src/testing/src/gmock-all.cc
+
+@DISABLE_PROCESSOR_FALSE@src_common_test_assembler_unittest_CPPFLAGS = \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/include \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/gtest/include \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing/gtest \
+@DISABLE_PROCESSOR_FALSE@	-I$(top_srcdir)/src/testing
+
+@DISABLE_PROCESSOR_FALSE@src_common_test_assembler_unittest_LDADD = $(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
+@DISABLE_PROCESSOR_FALSE@noinst_SCRIPTS = $(check_SCRIPTS)
+@DISABLE_PROCESSOR_FALSE@src_processor_minidump_dump_SOURCES = \
+@DISABLE_PROCESSOR_FALSE@	src/processor/minidump_dump.cc
+
+@DISABLE_PROCESSOR_FALSE@src_processor_minidump_dump_LDADD = \
+@DISABLE_PROCESSOR_FALSE@	src/processor/basic_code_modules.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/dump_context.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/dump_object.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/logging.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/minidump.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/pathname_stripper.o
+
+@DISABLE_PROCESSOR_FALSE@src_processor_microdump_stackwalk_SOURCES = \
+@DISABLE_PROCESSOR_FALSE@	src/processor/microdump_stackwalk.cc
+
+@DISABLE_PROCESSOR_FALSE@src_processor_microdump_stackwalk_LDADD = \
+@DISABLE_PROCESSOR_FALSE@	src/processor/basic_code_modules.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/basic_source_line_resolver.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/binarystream.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/call_stack.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/cfi_frame_info.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/disassembler_x86.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/dump_context.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/dump_object.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/logging.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/microdump.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/microdump_processor.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/pathname_stripper.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/process_state.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/simple_symbol_supplier.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/source_line_resolver_base.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stack_frame_cpu.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stack_frame_symbolizer.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalk_common.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_address_list.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_amd64.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_arm.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_arm64.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_mips.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_ppc.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_ppc64.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_sparc.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_x86.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/tokenize.o \
+@DISABLE_PROCESSOR_FALSE@	src/third_party/libdisasm/libdisasm.a
+
+@DISABLE_PROCESSOR_FALSE@src_processor_minidump_stackwalk_SOURCES = \
+@DISABLE_PROCESSOR_FALSE@	src/processor/minidump_stackwalk.cc
+
+@DISABLE_PROCESSOR_FALSE@src_processor_minidump_stackwalk_LDADD = \
+@DISABLE_PROCESSOR_FALSE@	src/processor/basic_code_modules.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/basic_source_line_resolver.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/binarystream.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/call_stack.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/cfi_frame_info.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/disassembler_x86.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/dump_context.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/dump_object.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/exploitability.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/exploitability_linux.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/exploitability_win.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/logging.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/minidump.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/minidump_processor.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/pathname_stripper.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/process_state.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/simple_symbol_supplier.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/source_line_resolver_base.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stack_frame_cpu.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stack_frame_symbolizer.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalk_common.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_address_list.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_amd64.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_arm.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_arm64.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_mips.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_ppc.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_ppc64.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_sparc.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/stackwalker_x86.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/symbolic_constants_win.o \
+@DISABLE_PROCESSOR_FALSE@	src/processor/tokenize.o \
+@DISABLE_PROCESSOR_FALSE@	src/third_party/libdisasm/libdisasm.a
+
+EXTRA_DIST = \
+	$(SCRIPTS) \
+	src/processor/stackwalk_selftest_sol.s \
+	src/client/linux/handler/Makefile \
+	src/client/linux/handler/exception_handler.cc \
+	src/client/linux/handler/exception_handler.h \
+	src/client/linux/handler/minidump_descriptor.cc \
+	src/client/linux/handler/minidump_descriptor.h \
+	src/client/linux/handler/exception_handler_test.cc \
+	src/client/linux/handler/linux_thread.cc \
+	src/client/linux/handler/linux_thread.h \
+	src/client/linux/handler/linux_thread_test.cc \
+	src/client/linux/handler/minidump_generator.cc \
+	src/client/linux/handler/minidump_generator.h \
+	src/client/linux/handler/minidump_test.cc \
+	src/client/mac/handler/dynamic_images.cc \
+	src/client/mac/handler/dynamic_images.h \
+	src/client/mac/handler/exception_handler.cc \
+	src/client/mac/handler/exception_handler.h \
+	src/client/mac/handler/exception_handler_test.cc \
+	src/client/mac/handler/minidump_generator.cc \
+	src/client/mac/handler/minidump_generator.h \
+	src/client/mac/handler/minidump_generator_test.cc \
+	src/client/mac/handler/minidump_test.xcodeproj/project.pbxproj \
+	src/client/mac/handler/protected_memory_allocator.cc \
+	src/client/mac/handler/protected_memory_allocator.h \
+	src/client/minidump_file_writer-inl.h \
+	src/client/minidump_file_writer.cc \
+	src/client/minidump_file_writer.h \
+	src/client/minidump_file_writer_unittest.cc \
+	src/client/solaris/handler/Makefile \
+	src/client/solaris/handler/exception_handler.cc \
+	src/client/solaris/handler/exception_handler.h \
+	src/client/solaris/handler/exception_handler_test.cc \
+	src/client/solaris/handler/minidump_generator.cc \
+	src/client/solaris/handler/minidump_generator.h \
+	src/client/solaris/handler/minidump_test.cc \
+	src/client/solaris/handler/solaris_lwp.cc \
+	src/client/solaris/handler/solaris_lwp.h \
+	src/client/windows/breakpad_client.sln \
+	src/client/windows/handler/exception_handler.cc \
+	src/client/windows/handler/exception_handler.h \
+	src/client/windows/handler/exception_handler.vcproj \
+	src/client/windows/sender/crash_report_sender.cc \
+	src/client/windows/sender/crash_report_sender.h \
+	src/client/windows/sender/crash_report_sender.vcproj \
+	src/common/convert_UTF.c \
+	src/common/convert_UTF.h \
+	src/common/linux/crc32.cc \
+	src/common/linux/dump_symbols.cc \
+	src/common/linux/dump_symbols.h \
+	src/common/linux/elf_symbols_to_module.cc \
+	src/common/linux/elf_symbols_to_module.h \
+	src/common/linux/elfutils.cc \
+	src/common/linux/elfutils.h \
+	src/common/linux/file_id.cc \
+	src/common/linux/file_id.h \
+	src/common/linux/guid_creator.cc \
+	src/common/linux/guid_creator.h \
+	src/common/linux/http_upload.cc \
+	src/common/linux/http_upload.h \
+	src/common/mac/HTTPMultipartUpload.h \
+	src/common/mac/HTTPMultipartUpload.m \
+	src/common/mac/dump_syms.h \
+	src/common/mac/dump_syms.mm \
+	src/common/mac/file_id.cc \
+	src/common/mac/file_id.h \
+	src/common/mac/macho_id.cc \
+	src/common/mac/macho_id.h \
+	src/common/mac/macho_utilities.cc \
+	src/common/mac/macho_utilities.h \
+	src/common/mac/macho_walker.cc \
+	src/common/mac/macho_walker.h \
+	src/common/mac/string_utilities.cc \
+	src/common/mac/string_utilities.h \
+	src/common/md5.cc \
+	src/common/md5.h \
+	src/common/scoped_ptr.h \
+	src/common/solaris/dump_symbols.cc \
+	src/common/solaris/dump_symbols.h \
+	src/common/solaris/file_id.cc \
+	src/common/solaris/file_id.h \
+	src/common/solaris/guid_creator.cc \
+	src/common/solaris/guid_creator.h \
+	src/common/solaris/message_output.h \
+	src/common/string_conversion.cc \
+	src/common/string_conversion.h \
+	src/common/windows/guid_string.cc \
+	src/common/windows/guid_string.h \
+	src/common/windows/http_upload.cc \
+	src/common/windows/http_upload.h \
+	src/common/windows/pdb_source_line_writer.cc \
+	src/common/windows/pdb_source_line_writer.h \
+	src/common/windows/string_utils-inl.h \
+	src/common/windows/string_utils.cc \
+	src/processor/testdata/minidump2.dmp \
+	src/processor/testdata/minidump2.dump.out \
+	src/processor/testdata/minidump2.stackwalk.machine_readable.out \
+	src/processor/testdata/minidump2.stackwalk.out \
+	src/processor/testdata/module1.out \
+	src/processor/testdata/module2.out \
+	src/processor/testdata/module3_bad.out \
+	src/processor/testdata/module4_bad.out \
+	src/processor/testdata/symbols/kernel32.pdb/BCE8785C57B44245A669896B6A19B9542/kernel32.sym \
+	src/processor/testdata/symbols/test_app.pdb/5A9832E5287241C1838ED98914E9B7FF1/test_app.sym \
+	src/processor/testdata/test_app.cc \
+	src/tools/linux/dump_syms/Makefile \
+	src/tools/linux/dump_syms/dump_syms.cc \
+	src/tools/linux/symupload/Makefile \
+	src/tools/linux/symupload/minidump_upload.cc \
+	src/tools/linux/symupload/sym_upload.cc \
+	src/tools/mac/crash_report/crash_report.mm \
+	src/tools/mac/crash_report/crash_report.xcodeproj/project.pbxproj \
+	src/tools/mac/crash_report/on_demand_symbol_supplier.h \
+	src/tools/mac/crash_report/on_demand_symbol_supplier.mm \
+	src/tools/mac/dump_syms/dump_syms.xcodeproj/project.pbxproj \
+	src/tools/mac/dump_syms/dump_syms_tool.m \
+	src/tools/mac/symupload/minidump_upload.m \
+	src/tools/mac/symupload/symupload.m \
+	src/tools/mac/symupload/symupload.xcodeproj/project.pbxproj \
+	src/tools/solaris/dump_syms/Makefile \
+	src/tools/solaris/dump_syms/dump_syms.cc \
+	src/tools/solaris/dump_syms/run_regtest.sh \
+	src/tools/solaris/dump_syms/testdata/dump_syms_regtest.cc \
+	src/tools/solaris/dump_syms/testdata/dump_syms_regtest.o \
+	src/tools/solaris/dump_syms/testdata/dump_syms_regtest.stabs \
+	src/tools/solaris/dump_syms/testdata/dump_syms_regtest.sym \
+	src/tools/windows/converter/ms_symbol_server_converter.cc \
+	src/tools/windows/converter/ms_symbol_server_converter.h \
+	src/tools/windows/converter/ms_symbol_server_converter.vcproj \
+	src/tools/windows/dump_syms/dump_syms.cc \
+	src/tools/windows/dump_syms/dump_syms.vcproj \
+	src/tools/windows/dump_syms/run_regtest.sh \
+	src/tools/windows/dump_syms/testdata/dump_syms_regtest.cc \
+	src/tools/windows/dump_syms/testdata/dump_syms_regtest.pdb \
+	src/tools/windows/dump_syms/testdata/dump_syms_regtest.sym \
+	src/tools/windows/symupload/symupload.cc \
+	src/tools/windows/symupload/symupload.vcproj
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .S .c .cc .log .o .obj .test .test$(EXEEXT) .trs
+am--refresh: Makefile
+	@:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \
+	      $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --foreign Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    echo ' $(SHELL) ./config.status'; \
+	    $(SHELL) ./config.status;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	$(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	$(am__cd) $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+$(am__aclocal_m4_deps):
+
+src/config.h: src/stamp-h1
+	@test -f $@ || rm -f src/stamp-h1
+	@test -f $@ || $(MAKE) $(AM_MAKEFLAGS) src/stamp-h1
+
+src/stamp-h1: $(top_srcdir)/src/config.h.in $(top_builddir)/config.status
+	@rm -f src/stamp-h1
+	cd $(top_builddir) && $(SHELL) ./config.status src/config.h
+$(top_srcdir)/src/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) 
+	($(am__cd) $(top_srcdir) && $(AUTOHEADER))
+	rm -f src/stamp-h1
+	touch $@
+
+distclean-hdr:
+	-rm -f src/config.h src/stamp-h1
+breakpad.pc: $(top_builddir)/config.status $(srcdir)/breakpad.pc.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
+breakpad-client.pc: $(top_builddir)/config.status $(srcdir)/breakpad-client.pc.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
+install-libLIBRARIES: $(lib_LIBRARIES)
+	@$(NORMAL_INSTALL)
+	@list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
+	list2=; for p in $$list; do \
+	  if test -f $$p; then \
+	    list2="$$list2 $$p"; \
+	  else :; fi; \
+	done; \
+	test -z "$$list2" || { \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
+	  echo " $(INSTALL_DATA) $$list2 '$(DESTDIR)$(libdir)'"; \
+	  $(INSTALL_DATA) $$list2 "$(DESTDIR)$(libdir)" || exit $$?; }
+	@$(POST_INSTALL)
+	@list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
+	for p in $$list; do \
+	  if test -f $$p; then \
+	    $(am__strip_dir) \
+	    echo " ( cd '$(DESTDIR)$(libdir)' && $(RANLIB) $$f )"; \
+	    ( cd "$(DESTDIR)$(libdir)" && $(RANLIB) $$f ) || exit $$?; \
+	  else :; fi; \
+	done
+
+uninstall-libLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(libdir)'; $(am__uninstall_files_from_dir)
+
+clean-libLIBRARIES:
+	-test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES)
+
+clean-noinstLIBRARIES:
+	-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+src/client/linux/crash_generation/$(am__dirstamp):
+	@$(MKDIR_P) src/client/linux/crash_generation
+	@: > src/client/linux/crash_generation/$(am__dirstamp)
+src/client/linux/crash_generation/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) src/client/linux/crash_generation/$(DEPDIR)
+	@: > src/client/linux/crash_generation/$(DEPDIR)/$(am__dirstamp)
+src/client/linux/crash_generation/crash_generation_client.$(OBJEXT):  \
+	src/client/linux/crash_generation/$(am__dirstamp) \
+	src/client/linux/crash_generation/$(DEPDIR)/$(am__dirstamp)
+src/client/linux/crash_generation/crash_generation_server.$(OBJEXT):  \
+	src/client/linux/crash_generation/$(am__dirstamp) \
+	src/client/linux/crash_generation/$(DEPDIR)/$(am__dirstamp)
+src/client/linux/dump_writer_common/$(am__dirstamp):
+	@$(MKDIR_P) src/client/linux/dump_writer_common
+	@: > src/client/linux/dump_writer_common/$(am__dirstamp)
+src/client/linux/dump_writer_common/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) src/client/linux/dump_writer_common/$(DEPDIR)
+	@: > src/client/linux/dump_writer_common/$(DEPDIR)/$(am__dirstamp)
+src/client/linux/dump_writer_common/seccomp_unwinder.$(OBJEXT):  \
+	src/client/linux/dump_writer_common/$(am__dirstamp) \
+	src/client/linux/dump_writer_common/$(DEPDIR)/$(am__dirstamp)
+src/client/linux/dump_writer_common/thread_info.$(OBJEXT):  \
+	src/client/linux/dump_writer_common/$(am__dirstamp) \
+	src/client/linux/dump_writer_common/$(DEPDIR)/$(am__dirstamp)
+src/client/linux/dump_writer_common/ucontext_reader.$(OBJEXT):  \
+	src/client/linux/dump_writer_common/$(am__dirstamp) \
+	src/client/linux/dump_writer_common/$(DEPDIR)/$(am__dirstamp)
+src/client/linux/handler/$(am__dirstamp):
+	@$(MKDIR_P) src/client/linux/handler
+	@: > src/client/linux/handler/$(am__dirstamp)
+src/client/linux/handler/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) src/client/linux/handler/$(DEPDIR)
+	@: > src/client/linux/handler/$(DEPDIR)/$(am__dirstamp)
+src/client/linux/handler/exception_handler.$(OBJEXT):  \
+	src/client/linux/handler/$(am__dirstamp) \
+	src/client/linux/handler/$(DEPDIR)/$(am__dirstamp)
+src/client/linux/handler/minidump_descriptor.$(OBJEXT):  \
+	src/client/linux/handler/$(am__dirstamp) \
+	src/client/linux/handler/$(DEPDIR)/$(am__dirstamp)
+src/client/linux/log/$(am__dirstamp):
+	@$(MKDIR_P) src/client/linux/log
+	@: > src/client/linux/log/$(am__dirstamp)
+src/client/linux/log/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) src/client/linux/log/$(DEPDIR)
+	@: > src/client/linux/log/$(DEPDIR)/$(am__dirstamp)
+src/client/linux/log/log.$(OBJEXT):  \
+	src/client/linux/log/$(am__dirstamp) \
+	src/client/linux/log/$(DEPDIR)/$(am__dirstamp)
+src/client/linux/microdump_writer/$(am__dirstamp):
+	@$(MKDIR_P) src/client/linux/microdump_writer
+	@: > src/client/linux/microdump_writer/$(am__dirstamp)
+src/client/linux/microdump_writer/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) src/client/linux/microdump_writer/$(DEPDIR)
+	@: > src/client/linux/microdump_writer/$(DEPDIR)/$(am__dirstamp)
+src/client/linux/microdump_writer/microdump_writer.$(OBJEXT):  \
+	src/client/linux/microdump_writer/$(am__dirstamp) \
+	src/client/linux/microdump_writer/$(DEPDIR)/$(am__dirstamp)
+src/client/linux/minidump_writer/$(am__dirstamp):
+	@$(MKDIR_P) src/client/linux/minidump_writer
+	@: > src/client/linux/minidump_writer/$(am__dirstamp)
+src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) src/client/linux/minidump_writer/$(DEPDIR)
+	@: > src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp)
+src/client/linux/minidump_writer/linux_dumper.$(OBJEXT):  \
+	src/client/linux/minidump_writer/$(am__dirstamp) \
+	src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp)
+src/client/linux/minidump_writer/linux_ptrace_dumper.$(OBJEXT):  \
+	src/client/linux/minidump_writer/$(am__dirstamp) \
+	src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp)
+src/client/linux/minidump_writer/minidump_writer.$(OBJEXT):  \
+	src/client/linux/minidump_writer/$(am__dirstamp) \
+	src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp)
+src/client/$(am__dirstamp):
+	@$(MKDIR_P) src/client
+	@: > src/client/$(am__dirstamp)
+src/client/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) src/client/$(DEPDIR)
+	@: > src/client/$(DEPDIR)/$(am__dirstamp)
+src/client/minidump_file_writer.$(OBJEXT): src/client/$(am__dirstamp) \
+	src/client/$(DEPDIR)/$(am__dirstamp)
+src/common/$(am__dirstamp):
+	@$(MKDIR_P) src/common
+	@: > src/common/$(am__dirstamp)
+src/common/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) src/common/$(DEPDIR)
+	@: > src/common/$(DEPDIR)/$(am__dirstamp)
+src/common/convert_UTF.$(OBJEXT): src/common/$(am__dirstamp) \
+	src/common/$(DEPDIR)/$(am__dirstamp)
+src/common/md5.$(OBJEXT): src/common/$(am__dirstamp) \
+	src/common/$(DEPDIR)/$(am__dirstamp)
+src/common/string_conversion.$(OBJEXT): src/common/$(am__dirstamp) \
+	src/common/$(DEPDIR)/$(am__dirstamp)
+src/common/linux/$(am__dirstamp):
+	@$(MKDIR_P) src/common/linux
+	@: > src/common/linux/$(am__dirstamp)
+src/common/linux/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) src/common/linux/$(DEPDIR)
+	@: > src/common/linux/$(DEPDIR)/$(am__dirstamp)
+src/common/linux/elfutils.$(OBJEXT): src/common/linux/$(am__dirstamp) \
+	src/common/linux/$(DEPDIR)/$(am__dirstamp)
+src/common/linux/file_id.$(OBJEXT): src/common/linux/$(am__dirstamp) \
+	src/common/linux/$(DEPDIR)/$(am__dirstamp)
+src/common/linux/guid_creator.$(OBJEXT):  \
+	src/common/linux/$(am__dirstamp) \
+	src/common/linux/$(DEPDIR)/$(am__dirstamp)
+src/common/linux/linux_libc_support.$(OBJEXT):  \
+	src/common/linux/$(am__dirstamp) \
+	src/common/linux/$(DEPDIR)/$(am__dirstamp)
+src/common/linux/memory_mapped_file.$(OBJEXT):  \
+	src/common/linux/$(am__dirstamp) \
+	src/common/linux/$(DEPDIR)/$(am__dirstamp)
+src/common/linux/safe_readlink.$(OBJEXT):  \
+	src/common/linux/$(am__dirstamp) \
+	src/common/linux/$(DEPDIR)/$(am__dirstamp)
+src/common/android/$(am__dirstamp):
+	@$(MKDIR_P) src/common/android
+	@: > src/common/android/$(am__dirstamp)
+src/common/android/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) src/common/android/$(DEPDIR)
+	@: > src/common/android/$(DEPDIR)/$(am__dirstamp)
+src/common/android/breakpad_getcontext.$(OBJEXT):  \
+	src/common/android/$(am__dirstamp) \
+	src/common/android/$(DEPDIR)/$(am__dirstamp)
+src/client/linux/$(am__dirstamp):
+	@$(MKDIR_P) src/client/linux
+	@: > src/client/linux/$(am__dirstamp)
+
+src/client/linux/libbreakpad_client.a: $(src_client_linux_libbreakpad_client_a_OBJECTS) $(src_client_linux_libbreakpad_client_a_DEPENDENCIES) $(EXTRA_src_client_linux_libbreakpad_client_a_DEPENDENCIES) src/client/linux/$(am__dirstamp)
+	$(AM_V_at)-rm -f src/client/linux/libbreakpad_client.a
+	$(AM_V_AR)$(src_client_linux_libbreakpad_client_a_AR) src/client/linux/libbreakpad_client.a $(src_client_linux_libbreakpad_client_a_OBJECTS) $(src_client_linux_libbreakpad_client_a_LIBADD)
+	$(AM_V_at)$(RANLIB) src/client/linux/libbreakpad_client.a
+src/processor/$(am__dirstamp):
+	@$(MKDIR_P) src/processor
+	@: > src/processor/$(am__dirstamp)
+src/processor/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) src/processor/$(DEPDIR)
+	@: > src/processor/$(DEPDIR)/$(am__dirstamp)
+src/processor/basic_code_modules.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/processor/basic_source_line_resolver.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/processor/binarystream.$(OBJEXT): src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/processor/call_stack.$(OBJEXT): src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/processor/cfi_frame_info.$(OBJEXT): src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/processor/disassembler_x86.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/processor/dump_context.$(OBJEXT): src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/processor/dump_object.$(OBJEXT): src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/processor/exploitability.$(OBJEXT): src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/processor/exploitability_linux.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/processor/exploitability_win.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/processor/fast_source_line_resolver.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/processor/logging.$(OBJEXT): src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/processor/microdump.$(OBJEXT): src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/processor/microdump_processor.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/processor/minidump.$(OBJEXT): src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/processor/minidump_processor.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/processor/module_comparer.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/processor/module_serializer.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/processor/pathname_stripper.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/processor/process_state.$(OBJEXT): src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/processor/simple_symbol_supplier.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/processor/source_line_resolver_base.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/processor/stack_frame_cpu.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/processor/stack_frame_symbolizer.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/processor/stackwalker.$(OBJEXT): src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/processor/stackwalker_amd64.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/processor/stackwalker_arm.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/processor/stackwalker_arm64.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/processor/stackwalker_address_list.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/processor/stackwalker_mips.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/processor/stackwalker_ppc.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/processor/stackwalker_ppc64.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/processor/stackwalker_sparc.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/processor/stackwalker_x86.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/processor/symbolic_constants_win.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/processor/tokenize.$(OBJEXT): src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/$(am__dirstamp):
+	@$(MKDIR_P) src
+	@: > src/$(am__dirstamp)
+
+src/libbreakpad.a: $(src_libbreakpad_a_OBJECTS) $(src_libbreakpad_a_DEPENDENCIES) $(EXTRA_src_libbreakpad_a_DEPENDENCIES) src/$(am__dirstamp)
+	$(AM_V_at)-rm -f src/libbreakpad.a
+	$(AM_V_AR)$(src_libbreakpad_a_AR) src/libbreakpad.a $(src_libbreakpad_a_OBJECTS) $(src_libbreakpad_a_LIBADD)
+	$(AM_V_at)$(RANLIB) src/libbreakpad.a
+src/third_party/libdisasm/$(am__dirstamp):
+	@$(MKDIR_P) src/third_party/libdisasm
+	@: > src/third_party/libdisasm/$(am__dirstamp)
+src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) src/third_party/libdisasm/$(DEPDIR)
+	@: > src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp)
+src/third_party/libdisasm/ia32_implicit.$(OBJEXT):  \
+	src/third_party/libdisasm/$(am__dirstamp) \
+	src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp)
+src/third_party/libdisasm/ia32_insn.$(OBJEXT):  \
+	src/third_party/libdisasm/$(am__dirstamp) \
+	src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp)
+src/third_party/libdisasm/ia32_invariant.$(OBJEXT):  \
+	src/third_party/libdisasm/$(am__dirstamp) \
+	src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp)
+src/third_party/libdisasm/ia32_modrm.$(OBJEXT):  \
+	src/third_party/libdisasm/$(am__dirstamp) \
+	src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp)
+src/third_party/libdisasm/ia32_opcode_tables.$(OBJEXT):  \
+	src/third_party/libdisasm/$(am__dirstamp) \
+	src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp)
+src/third_party/libdisasm/ia32_operand.$(OBJEXT):  \
+	src/third_party/libdisasm/$(am__dirstamp) \
+	src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp)
+src/third_party/libdisasm/ia32_reg.$(OBJEXT):  \
+	src/third_party/libdisasm/$(am__dirstamp) \
+	src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp)
+src/third_party/libdisasm/ia32_settings.$(OBJEXT):  \
+	src/third_party/libdisasm/$(am__dirstamp) \
+	src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp)
+src/third_party/libdisasm/x86_disasm.$(OBJEXT):  \
+	src/third_party/libdisasm/$(am__dirstamp) \
+	src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp)
+src/third_party/libdisasm/x86_format.$(OBJEXT):  \
+	src/third_party/libdisasm/$(am__dirstamp) \
+	src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp)
+src/third_party/libdisasm/x86_imm.$(OBJEXT):  \
+	src/third_party/libdisasm/$(am__dirstamp) \
+	src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp)
+src/third_party/libdisasm/x86_insn.$(OBJEXT):  \
+	src/third_party/libdisasm/$(am__dirstamp) \
+	src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp)
+src/third_party/libdisasm/x86_misc.$(OBJEXT):  \
+	src/third_party/libdisasm/$(am__dirstamp) \
+	src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp)
+src/third_party/libdisasm/x86_operand_list.$(OBJEXT):  \
+	src/third_party/libdisasm/$(am__dirstamp) \
+	src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp)
+
+src/third_party/libdisasm/libdisasm.a: $(src_third_party_libdisasm_libdisasm_a_OBJECTS) $(src_third_party_libdisasm_libdisasm_a_DEPENDENCIES) $(EXTRA_src_third_party_libdisasm_libdisasm_a_DEPENDENCIES) src/third_party/libdisasm/$(am__dirstamp)
+	$(AM_V_at)-rm -f src/third_party/libdisasm/libdisasm.a
+	$(AM_V_AR)$(src_third_party_libdisasm_libdisasm_a_AR) src/third_party/libdisasm/libdisasm.a $(src_third_party_libdisasm_libdisasm_a_OBJECTS) $(src_third_party_libdisasm_libdisasm_a_LIBADD)
+	$(AM_V_at)$(RANLIB) src/third_party/libdisasm/libdisasm.a
+install-binPROGRAMS: $(bin_PROGRAMS)
+	@$(NORMAL_INSTALL)
+	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+	fi; \
+	for p in $$list; do echo "$$p $$p"; done | \
+	sed 's/$(EXEEXT)$$//' | \
+	while read p p1; do if test -f $$p \
+	  ; then echo "$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n;h' \
+	    -e 's|.*|.|' \
+	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+	sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) files[d] = files[d] " " $$1; \
+	    else { print "f", $$3 "/" $$4, $$1; } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	    if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	    test -z "$$files" || { \
+	      echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+	      $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+	    } \
+	; done
+
+uninstall-binPROGRAMS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+	      -e 's/$$/$(EXEEXT)/' \
+	`; \
+	test -n "$$list" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(bindir)" && rm -f $$files
+
+clean-binPROGRAMS:
+	-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+
+clean-checkPROGRAMS:
+	-test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS)
+
+clean-noinstPROGRAMS:
+	-test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
+
+src/client/linux/linux_client_unittest$(EXEEXT): $(src_client_linux_linux_client_unittest_OBJECTS) $(src_client_linux_linux_client_unittest_DEPENDENCIES) $(EXTRA_src_client_linux_linux_client_unittest_DEPENDENCIES) src/client/linux/$(am__dirstamp)
+	@rm -f src/client/linux/linux_client_unittest$(EXEEXT)
+	$(AM_V_CCLD)$(src_client_linux_linux_client_unittest_LINK) $(src_client_linux_linux_client_unittest_OBJECTS) $(src_client_linux_linux_client_unittest_LDADD) $(LIBS)
+src/client/linux/handler/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.$(OBJEXT):  \
+	src/client/linux/handler/$(am__dirstamp) \
+	src/client/linux/handler/$(DEPDIR)/$(am__dirstamp)
+src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.$(OBJEXT):  \
+	src/client/linux/minidump_writer/$(am__dirstamp) \
+	src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp)
+src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.$(OBJEXT):  \
+	src/client/linux/minidump_writer/$(am__dirstamp) \
+	src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp)
+src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.$(OBJEXT):  \
+	src/client/linux/minidump_writer/$(am__dirstamp) \
+	src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp)
+src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.$(OBJEXT):  \
+	src/client/linux/minidump_writer/$(am__dirstamp) \
+	src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp)
+src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.$(OBJEXT):  \
+	src/client/linux/minidump_writer/$(am__dirstamp) \
+	src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp)
+src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.$(OBJEXT):  \
+	src/client/linux/minidump_writer/$(am__dirstamp) \
+	src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp)
+src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.$(OBJEXT):  \
+	src/client/linux/minidump_writer/$(am__dirstamp) \
+	src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp)
+src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.$(OBJEXT):  \
+	src/client/linux/minidump_writer/$(am__dirstamp) \
+	src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp)
+src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.$(OBJEXT):  \
+	src/client/linux/minidump_writer/$(am__dirstamp) \
+	src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp)
+src/common/linux/src_client_linux_linux_client_unittest_shlib-elf_core_dump.$(OBJEXT):  \
+	src/common/linux/$(am__dirstamp) \
+	src/common/linux/$(DEPDIR)/$(am__dirstamp)
+src/common/linux/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.$(OBJEXT):  \
+	src/common/linux/$(am__dirstamp) \
+	src/common/linux/$(DEPDIR)/$(am__dirstamp)
+src/common/linux/tests/$(am__dirstamp):
+	@$(MKDIR_P) src/common/linux/tests
+	@: > src/common/linux/tests/$(am__dirstamp)
+src/common/linux/tests/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) src/common/linux/tests/$(DEPDIR)
+	@: > src/common/linux/tests/$(DEPDIR)/$(am__dirstamp)
+src/common/linux/tests/src_client_linux_linux_client_unittest_shlib-crash_generator.$(OBJEXT):  \
+	src/common/linux/tests/$(am__dirstamp) \
+	src/common/linux/tests/$(DEPDIR)/$(am__dirstamp)
+src/common/src_client_linux_linux_client_unittest_shlib-memory_unittest.$(OBJEXT):  \
+	src/common/$(am__dirstamp) \
+	src/common/$(DEPDIR)/$(am__dirstamp)
+src/common/tests/$(am__dirstamp):
+	@$(MKDIR_P) src/common/tests
+	@: > src/common/tests/$(am__dirstamp)
+src/common/tests/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) src/common/tests/$(DEPDIR)
+	@: > src/common/tests/$(DEPDIR)/$(am__dirstamp)
+src/common/tests/src_client_linux_linux_client_unittest_shlib-file_utils.$(OBJEXT):  \
+	src/common/tests/$(am__dirstamp) \
+	src/common/tests/$(DEPDIR)/$(am__dirstamp)
+src/testing/gtest/src/$(am__dirstamp):
+	@$(MKDIR_P) src/testing/gtest/src
+	@: > src/testing/gtest/src/$(am__dirstamp)
+src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) src/testing/gtest/src/$(DEPDIR)
+	@: > src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp)
+src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest-all.$(OBJEXT):  \
+	src/testing/gtest/src/$(am__dirstamp) \
+	src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp)
+src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest_main.$(OBJEXT):  \
+	src/testing/gtest/src/$(am__dirstamp) \
+	src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp)
+src/testing/src/$(am__dirstamp):
+	@$(MKDIR_P) src/testing/src
+	@: > src/testing/src/$(am__dirstamp)
+src/testing/src/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) src/testing/src/$(DEPDIR)
+	@: > src/testing/src/$(DEPDIR)/$(am__dirstamp)
+src/testing/src/src_client_linux_linux_client_unittest_shlib-gmock-all.$(OBJEXT):  \
+	src/testing/src/$(am__dirstamp) \
+	src/testing/src/$(DEPDIR)/$(am__dirstamp)
+src/processor/src_client_linux_linux_client_unittest_shlib-basic_code_modules.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/processor/src_client_linux_linux_client_unittest_shlib-dump_context.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/processor/src_client_linux_linux_client_unittest_shlib-dump_object.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/processor/src_client_linux_linux_client_unittest_shlib-logging.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/processor/src_client_linux_linux_client_unittest_shlib-minidump.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/processor/src_client_linux_linux_client_unittest_shlib-pathname_stripper.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.$(OBJEXT):  \
+	src/common/android/$(am__dirstamp) \
+	src/common/android/$(DEPDIR)/$(am__dirstamp)
+src/client/linux/microdump_writer/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.$(OBJEXT):  \
+	src/client/linux/microdump_writer/$(am__dirstamp) \
+	src/client/linux/microdump_writer/$(DEPDIR)/$(am__dirstamp)
+src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.$(OBJEXT):  \
+	src/common/android/$(am__dirstamp) \
+	src/common/android/$(DEPDIR)/$(am__dirstamp)
+
+src/client/linux/linux_client_unittest_shlib$(EXEEXT): $(src_client_linux_linux_client_unittest_shlib_OBJECTS) $(src_client_linux_linux_client_unittest_shlib_DEPENDENCIES) $(EXTRA_src_client_linux_linux_client_unittest_shlib_DEPENDENCIES) src/client/linux/$(am__dirstamp)
+	@rm -f src/client/linux/linux_client_unittest_shlib$(EXEEXT)
+	$(AM_V_CXXLD)$(src_client_linux_linux_client_unittest_shlib_LINK) $(src_client_linux_linux_client_unittest_shlib_OBJECTS) $(src_client_linux_linux_client_unittest_shlib_LDADD) $(LIBS)
+src/client/linux/minidump_writer/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.$(OBJEXT):  \
+	src/client/linux/minidump_writer/$(am__dirstamp) \
+	src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp)
+
+src/client/linux/linux_dumper_unittest_helper$(EXEEXT): $(src_client_linux_linux_dumper_unittest_helper_OBJECTS) $(src_client_linux_linux_dumper_unittest_helper_DEPENDENCIES) $(EXTRA_src_client_linux_linux_dumper_unittest_helper_DEPENDENCIES) src/client/linux/$(am__dirstamp)
+	@rm -f src/client/linux/linux_dumper_unittest_helper$(EXEEXT)
+	$(AM_V_CXXLD)$(src_client_linux_linux_dumper_unittest_helper_LINK) $(src_client_linux_linux_dumper_unittest_helper_OBJECTS) $(src_client_linux_linux_dumper_unittest_helper_LDADD) $(LIBS)
+src/common/src_common_dumper_unittest-byte_cursor_unittest.$(OBJEXT):  \
+	src/common/$(am__dirstamp) \
+	src/common/$(DEPDIR)/$(am__dirstamp)
+src/common/src_common_dumper_unittest-dwarf_cfi_to_module.$(OBJEXT):  \
+	src/common/$(am__dirstamp) \
+	src/common/$(DEPDIR)/$(am__dirstamp)
+src/common/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.$(OBJEXT):  \
+	src/common/$(am__dirstamp) \
+	src/common/$(DEPDIR)/$(am__dirstamp)
+src/common/src_common_dumper_unittest-dwarf_cu_to_module.$(OBJEXT):  \
+	src/common/$(am__dirstamp) \
+	src/common/$(DEPDIR)/$(am__dirstamp)
+src/common/src_common_dumper_unittest-dwarf_cu_to_module_unittest.$(OBJEXT):  \
+	src/common/$(am__dirstamp) \
+	src/common/$(DEPDIR)/$(am__dirstamp)
+src/common/src_common_dumper_unittest-dwarf_line_to_module.$(OBJEXT):  \
+	src/common/$(am__dirstamp) \
+	src/common/$(DEPDIR)/$(am__dirstamp)
+src/common/src_common_dumper_unittest-dwarf_line_to_module_unittest.$(OBJEXT):  \
+	src/common/$(am__dirstamp) \
+	src/common/$(DEPDIR)/$(am__dirstamp)
+src/common/src_common_dumper_unittest-language.$(OBJEXT):  \
+	src/common/$(am__dirstamp) \
+	src/common/$(DEPDIR)/$(am__dirstamp)
+src/common/src_common_dumper_unittest-memory_range_unittest.$(OBJEXT):  \
+	src/common/$(am__dirstamp) \
+	src/common/$(DEPDIR)/$(am__dirstamp)
+src/common/src_common_dumper_unittest-module.$(OBJEXT):  \
+	src/common/$(am__dirstamp) \
+	src/common/$(DEPDIR)/$(am__dirstamp)
+src/common/src_common_dumper_unittest-module_unittest.$(OBJEXT):  \
+	src/common/$(am__dirstamp) \
+	src/common/$(DEPDIR)/$(am__dirstamp)
+src/common/src_common_dumper_unittest-stabs_reader.$(OBJEXT):  \
+	src/common/$(am__dirstamp) \
+	src/common/$(DEPDIR)/$(am__dirstamp)
+src/common/src_common_dumper_unittest-stabs_reader_unittest.$(OBJEXT):  \
+	src/common/$(am__dirstamp) \
+	src/common/$(DEPDIR)/$(am__dirstamp)
+src/common/src_common_dumper_unittest-stabs_to_module.$(OBJEXT):  \
+	src/common/$(am__dirstamp) \
+	src/common/$(DEPDIR)/$(am__dirstamp)
+src/common/src_common_dumper_unittest-stabs_to_module_unittest.$(OBJEXT):  \
+	src/common/$(am__dirstamp) \
+	src/common/$(DEPDIR)/$(am__dirstamp)
+src/common/src_common_dumper_unittest-test_assembler.$(OBJEXT):  \
+	src/common/$(am__dirstamp) \
+	src/common/$(DEPDIR)/$(am__dirstamp)
+src/common/dwarf/$(am__dirstamp):
+	@$(MKDIR_P) src/common/dwarf
+	@: > src/common/dwarf/$(am__dirstamp)
+src/common/dwarf/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) src/common/dwarf/$(DEPDIR)
+	@: > src/common/dwarf/$(DEPDIR)/$(am__dirstamp)
+src/common/dwarf/src_common_dumper_unittest-bytereader.$(OBJEXT):  \
+	src/common/dwarf/$(am__dirstamp) \
+	src/common/dwarf/$(DEPDIR)/$(am__dirstamp)
+src/common/dwarf/src_common_dumper_unittest-bytereader_unittest.$(OBJEXT):  \
+	src/common/dwarf/$(am__dirstamp) \
+	src/common/dwarf/$(DEPDIR)/$(am__dirstamp)
+src/common/dwarf/src_common_dumper_unittest-cfi_assembler.$(OBJEXT):  \
+	src/common/dwarf/$(am__dirstamp) \
+	src/common/dwarf/$(DEPDIR)/$(am__dirstamp)
+src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler.$(OBJEXT):  \
+	src/common/dwarf/$(am__dirstamp) \
+	src/common/dwarf/$(DEPDIR)/$(am__dirstamp)
+src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler_unittest.$(OBJEXT):  \
+	src/common/dwarf/$(am__dirstamp) \
+	src/common/dwarf/$(DEPDIR)/$(am__dirstamp)
+src/common/dwarf/src_common_dumper_unittest-dwarf2reader.$(OBJEXT):  \
+	src/common/dwarf/$(am__dirstamp) \
+	src/common/dwarf/$(DEPDIR)/$(am__dirstamp)
+src/common/dwarf/src_common_dumper_unittest-dwarf2reader_cfi_unittest.$(OBJEXT):  \
+	src/common/dwarf/$(am__dirstamp) \
+	src/common/dwarf/$(DEPDIR)/$(am__dirstamp)
+src/common/dwarf/src_common_dumper_unittest-dwarf2reader_die_unittest.$(OBJEXT):  \
+	src/common/dwarf/$(am__dirstamp) \
+	src/common/dwarf/$(DEPDIR)/$(am__dirstamp)
+src/common/linux/src_common_dumper_unittest-crc32.$(OBJEXT):  \
+	src/common/linux/$(am__dirstamp) \
+	src/common/linux/$(DEPDIR)/$(am__dirstamp)
+src/common/linux/src_common_dumper_unittest-dump_symbols.$(OBJEXT):  \
+	src/common/linux/$(am__dirstamp) \
+	src/common/linux/$(DEPDIR)/$(am__dirstamp)
+src/common/linux/src_common_dumper_unittest-dump_symbols_unittest.$(OBJEXT):  \
+	src/common/linux/$(am__dirstamp) \
+	src/common/linux/$(DEPDIR)/$(am__dirstamp)
+src/common/linux/src_common_dumper_unittest-elf_core_dump.$(OBJEXT):  \
+	src/common/linux/$(am__dirstamp) \
+	src/common/linux/$(DEPDIR)/$(am__dirstamp)
+src/common/linux/src_common_dumper_unittest-elf_core_dump_unittest.$(OBJEXT):  \
+	src/common/linux/$(am__dirstamp) \
+	src/common/linux/$(DEPDIR)/$(am__dirstamp)
+src/common/linux/src_common_dumper_unittest-elf_symbols_to_module.$(OBJEXT):  \
+	src/common/linux/$(am__dirstamp) \
+	src/common/linux/$(DEPDIR)/$(am__dirstamp)
+src/common/linux/src_common_dumper_unittest-elf_symbols_to_module_unittest.$(OBJEXT):  \
+	src/common/linux/$(am__dirstamp) \
+	src/common/linux/$(DEPDIR)/$(am__dirstamp)
+src/common/linux/src_common_dumper_unittest-elfutils.$(OBJEXT):  \
+	src/common/linux/$(am__dirstamp) \
+	src/common/linux/$(DEPDIR)/$(am__dirstamp)
+src/common/linux/src_common_dumper_unittest-file_id.$(OBJEXT):  \
+	src/common/linux/$(am__dirstamp) \
+	src/common/linux/$(DEPDIR)/$(am__dirstamp)
+src/common/linux/src_common_dumper_unittest-file_id_unittest.$(OBJEXT):  \
+	src/common/linux/$(am__dirstamp) \
+	src/common/linux/$(DEPDIR)/$(am__dirstamp)
+src/common/linux/src_common_dumper_unittest-linux_libc_support.$(OBJEXT):  \
+	src/common/linux/$(am__dirstamp) \
+	src/common/linux/$(DEPDIR)/$(am__dirstamp)
+src/common/linux/src_common_dumper_unittest-memory_mapped_file.$(OBJEXT):  \
+	src/common/linux/$(am__dirstamp) \
+	src/common/linux/$(DEPDIR)/$(am__dirstamp)
+src/common/linux/src_common_dumper_unittest-memory_mapped_file_unittest.$(OBJEXT):  \
+	src/common/linux/$(am__dirstamp) \
+	src/common/linux/$(DEPDIR)/$(am__dirstamp)
+src/common/linux/src_common_dumper_unittest-safe_readlink.$(OBJEXT):  \
+	src/common/linux/$(am__dirstamp) \
+	src/common/linux/$(DEPDIR)/$(am__dirstamp)
+src/common/linux/src_common_dumper_unittest-safe_readlink_unittest.$(OBJEXT):  \
+	src/common/linux/$(am__dirstamp) \
+	src/common/linux/$(DEPDIR)/$(am__dirstamp)
+src/common/linux/src_common_dumper_unittest-synth_elf.$(OBJEXT):  \
+	src/common/linux/$(am__dirstamp) \
+	src/common/linux/$(DEPDIR)/$(am__dirstamp)
+src/common/linux/src_common_dumper_unittest-synth_elf_unittest.$(OBJEXT):  \
+	src/common/linux/$(am__dirstamp) \
+	src/common/linux/$(DEPDIR)/$(am__dirstamp)
+src/common/linux/tests/src_common_dumper_unittest-crash_generator.$(OBJEXT):  \
+	src/common/linux/tests/$(am__dirstamp) \
+	src/common/linux/tests/$(DEPDIR)/$(am__dirstamp)
+src/common/tests/src_common_dumper_unittest-file_utils.$(OBJEXT):  \
+	src/common/tests/$(am__dirstamp) \
+	src/common/tests/$(DEPDIR)/$(am__dirstamp)
+src/testing/gtest/src/src_common_dumper_unittest-gtest-all.$(OBJEXT):  \
+	src/testing/gtest/src/$(am__dirstamp) \
+	src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp)
+src/testing/gtest/src/src_common_dumper_unittest-gtest_main.$(OBJEXT):  \
+	src/testing/gtest/src/$(am__dirstamp) \
+	src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp)
+src/testing/src/src_common_dumper_unittest-gmock-all.$(OBJEXT):  \
+	src/testing/src/$(am__dirstamp) \
+	src/testing/src/$(DEPDIR)/$(am__dirstamp)
+
+src/common/dumper_unittest$(EXEEXT): $(src_common_dumper_unittest_OBJECTS) $(src_common_dumper_unittest_DEPENDENCIES) $(EXTRA_src_common_dumper_unittest_DEPENDENCIES) src/common/$(am__dirstamp)
+	@rm -f src/common/dumper_unittest$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(src_common_dumper_unittest_OBJECTS) $(src_common_dumper_unittest_LDADD) $(LIBS)
+src/common/src_common_test_assembler_unittest-test_assembler.$(OBJEXT):  \
+	src/common/$(am__dirstamp) \
+	src/common/$(DEPDIR)/$(am__dirstamp)
+src/common/src_common_test_assembler_unittest-test_assembler_unittest.$(OBJEXT):  \
+	src/common/$(am__dirstamp) \
+	src/common/$(DEPDIR)/$(am__dirstamp)
+src/testing/gtest/src/src_common_test_assembler_unittest-gtest-all.$(OBJEXT):  \
+	src/testing/gtest/src/$(am__dirstamp) \
+	src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp)
+src/testing/gtest/src/src_common_test_assembler_unittest-gtest_main.$(OBJEXT):  \
+	src/testing/gtest/src/$(am__dirstamp) \
+	src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp)
+src/testing/src/src_common_test_assembler_unittest-gmock-all.$(OBJEXT):  \
+	src/testing/src/$(am__dirstamp) \
+	src/testing/src/$(DEPDIR)/$(am__dirstamp)
+
+src/common/test_assembler_unittest$(EXEEXT): $(src_common_test_assembler_unittest_OBJECTS) $(src_common_test_assembler_unittest_DEPENDENCIES) $(EXTRA_src_common_test_assembler_unittest_DEPENDENCIES) src/common/$(am__dirstamp)
+	@rm -f src/common/test_assembler_unittest$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(src_common_test_assembler_unittest_OBJECTS) $(src_common_test_assembler_unittest_LDADD) $(LIBS)
+src/processor/address_map_unittest.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+
+src/processor/address_map_unittest$(EXEEXT): $(src_processor_address_map_unittest_OBJECTS) $(src_processor_address_map_unittest_DEPENDENCIES) $(EXTRA_src_processor_address_map_unittest_DEPENDENCIES) src/processor/$(am__dirstamp)
+	@rm -f src/processor/address_map_unittest$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(src_processor_address_map_unittest_OBJECTS) $(src_processor_address_map_unittest_LDADD) $(LIBS)
+src/processor/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/testing/gtest/src/src_processor_basic_source_line_resolver_unittest-gtest-all.$(OBJEXT):  \
+	src/testing/gtest/src/$(am__dirstamp) \
+	src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp)
+src/testing/src/src_processor_basic_source_line_resolver_unittest-gmock-all.$(OBJEXT):  \
+	src/testing/src/$(am__dirstamp) \
+	src/testing/src/$(DEPDIR)/$(am__dirstamp)
+
+src/processor/basic_source_line_resolver_unittest$(EXEEXT): $(src_processor_basic_source_line_resolver_unittest_OBJECTS) $(src_processor_basic_source_line_resolver_unittest_DEPENDENCIES) $(EXTRA_src_processor_basic_source_line_resolver_unittest_DEPENDENCIES) src/processor/$(am__dirstamp)
+	@rm -f src/processor/basic_source_line_resolver_unittest$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(src_processor_basic_source_line_resolver_unittest_OBJECTS) $(src_processor_basic_source_line_resolver_unittest_LDADD) $(LIBS)
+src/processor/src_processor_binarystream_unittest-binarystream_unittest.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/testing/gtest/src/src_processor_binarystream_unittest-gtest-all.$(OBJEXT):  \
+	src/testing/gtest/src/$(am__dirstamp) \
+	src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp)
+src/testing/src/src_processor_binarystream_unittest-gmock-all.$(OBJEXT):  \
+	src/testing/src/$(am__dirstamp) \
+	src/testing/src/$(DEPDIR)/$(am__dirstamp)
+
+src/processor/binarystream_unittest$(EXEEXT): $(src_processor_binarystream_unittest_OBJECTS) $(src_processor_binarystream_unittest_DEPENDENCIES) $(EXTRA_src_processor_binarystream_unittest_DEPENDENCIES) src/processor/$(am__dirstamp)
+	@rm -f src/processor/binarystream_unittest$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(src_processor_binarystream_unittest_OBJECTS) $(src_processor_binarystream_unittest_LDADD) $(LIBS)
+src/processor/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/testing/gtest/src/src_processor_cfi_frame_info_unittest-gtest-all.$(OBJEXT):  \
+	src/testing/gtest/src/$(am__dirstamp) \
+	src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp)
+src/testing/gtest/src/src_processor_cfi_frame_info_unittest-gtest_main.$(OBJEXT):  \
+	src/testing/gtest/src/$(am__dirstamp) \
+	src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp)
+src/testing/src/src_processor_cfi_frame_info_unittest-gmock-all.$(OBJEXT):  \
+	src/testing/src/$(am__dirstamp) \
+	src/testing/src/$(DEPDIR)/$(am__dirstamp)
+
+src/processor/cfi_frame_info_unittest$(EXEEXT): $(src_processor_cfi_frame_info_unittest_OBJECTS) $(src_processor_cfi_frame_info_unittest_DEPENDENCIES) $(EXTRA_src_processor_cfi_frame_info_unittest_DEPENDENCIES) src/processor/$(am__dirstamp)
+	@rm -f src/processor/cfi_frame_info_unittest$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(src_processor_cfi_frame_info_unittest_OBJECTS) $(src_processor_cfi_frame_info_unittest_LDADD) $(LIBS)
+src/processor/contained_range_map_unittest.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+
+src/processor/contained_range_map_unittest$(EXEEXT): $(src_processor_contained_range_map_unittest_OBJECTS) $(src_processor_contained_range_map_unittest_DEPENDENCIES) $(EXTRA_src_processor_contained_range_map_unittest_DEPENDENCIES) src/processor/$(am__dirstamp)
+	@rm -f src/processor/contained_range_map_unittest$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(src_processor_contained_range_map_unittest_OBJECTS) $(src_processor_contained_range_map_unittest_LDADD) $(LIBS)
+src/processor/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/testing/gtest/src/src_processor_disassembler_x86_unittest-gtest-all.$(OBJEXT):  \
+	src/testing/gtest/src/$(am__dirstamp) \
+	src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp)
+src/testing/gtest/src/src_processor_disassembler_x86_unittest-gtest_main.$(OBJEXT):  \
+	src/testing/gtest/src/$(am__dirstamp) \
+	src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp)
+src/testing/src/src_processor_disassembler_x86_unittest-gmock-all.$(OBJEXT):  \
+	src/testing/src/$(am__dirstamp) \
+	src/testing/src/$(DEPDIR)/$(am__dirstamp)
+
+src/processor/disassembler_x86_unittest$(EXEEXT): $(src_processor_disassembler_x86_unittest_OBJECTS) $(src_processor_disassembler_x86_unittest_DEPENDENCIES) $(EXTRA_src_processor_disassembler_x86_unittest_DEPENDENCIES) src/processor/$(am__dirstamp)
+	@rm -f src/processor/disassembler_x86_unittest$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(src_processor_disassembler_x86_unittest_OBJECTS) $(src_processor_disassembler_x86_unittest_LDADD) $(LIBS)
+src/processor/src_processor_exploitability_unittest-exploitability_unittest.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/testing/gtest/src/src_processor_exploitability_unittest-gtest-all.$(OBJEXT):  \
+	src/testing/gtest/src/$(am__dirstamp) \
+	src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp)
+src/testing/gtest/src/src_processor_exploitability_unittest-gtest_main.$(OBJEXT):  \
+	src/testing/gtest/src/$(am__dirstamp) \
+	src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp)
+src/testing/src/src_processor_exploitability_unittest-gmock-all.$(OBJEXT):  \
+	src/testing/src/$(am__dirstamp) \
+	src/testing/src/$(DEPDIR)/$(am__dirstamp)
+
+src/processor/exploitability_unittest$(EXEEXT): $(src_processor_exploitability_unittest_OBJECTS) $(src_processor_exploitability_unittest_DEPENDENCIES) $(EXTRA_src_processor_exploitability_unittest_DEPENDENCIES) src/processor/$(am__dirstamp)
+	@rm -f src/processor/exploitability_unittest$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(src_processor_exploitability_unittest_OBJECTS) $(src_processor_exploitability_unittest_LDADD) $(LIBS)
+src/processor/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/testing/gtest/src/src_processor_fast_source_line_resolver_unittest-gtest-all.$(OBJEXT):  \
+	src/testing/gtest/src/$(am__dirstamp) \
+	src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp)
+src/testing/src/src_processor_fast_source_line_resolver_unittest-gmock-all.$(OBJEXT):  \
+	src/testing/src/$(am__dirstamp) \
+	src/testing/src/$(DEPDIR)/$(am__dirstamp)
+
+src/processor/fast_source_line_resolver_unittest$(EXEEXT): $(src_processor_fast_source_line_resolver_unittest_OBJECTS) $(src_processor_fast_source_line_resolver_unittest_DEPENDENCIES) $(EXTRA_src_processor_fast_source_line_resolver_unittest_DEPENDENCIES) src/processor/$(am__dirstamp)
+	@rm -f src/processor/fast_source_line_resolver_unittest$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(src_processor_fast_source_line_resolver_unittest_OBJECTS) $(src_processor_fast_source_line_resolver_unittest_LDADD) $(LIBS)
+src/processor/src_processor_map_serializers_unittest-map_serializers_unittest.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/testing/gtest/src/src_processor_map_serializers_unittest-gtest-all.$(OBJEXT):  \
+	src/testing/gtest/src/$(am__dirstamp) \
+	src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp)
+src/testing/src/src_processor_map_serializers_unittest-gmock-all.$(OBJEXT):  \
+	src/testing/src/$(am__dirstamp) \
+	src/testing/src/$(DEPDIR)/$(am__dirstamp)
+
+src/processor/map_serializers_unittest$(EXEEXT): $(src_processor_map_serializers_unittest_OBJECTS) $(src_processor_map_serializers_unittest_DEPENDENCIES) $(EXTRA_src_processor_map_serializers_unittest_DEPENDENCIES) src/processor/$(am__dirstamp)
+	@rm -f src/processor/map_serializers_unittest$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(src_processor_map_serializers_unittest_OBJECTS) $(src_processor_map_serializers_unittest_LDADD) $(LIBS)
+src/processor/src_processor_microdump_processor_unittest-microdump_processor_unittest.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/testing/gtest/src/src_processor_microdump_processor_unittest-gtest-all.$(OBJEXT):  \
+	src/testing/gtest/src/$(am__dirstamp) \
+	src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp)
+src/testing/src/src_processor_microdump_processor_unittest-gmock-all.$(OBJEXT):  \
+	src/testing/src/$(am__dirstamp) \
+	src/testing/src/$(DEPDIR)/$(am__dirstamp)
+
+src/processor/microdump_processor_unittest$(EXEEXT): $(src_processor_microdump_processor_unittest_OBJECTS) $(src_processor_microdump_processor_unittest_DEPENDENCIES) $(EXTRA_src_processor_microdump_processor_unittest_DEPENDENCIES) src/processor/$(am__dirstamp)
+	@rm -f src/processor/microdump_processor_unittest$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(src_processor_microdump_processor_unittest_OBJECTS) $(src_processor_microdump_processor_unittest_LDADD) $(LIBS)
+src/processor/microdump_stackwalk.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+
+src/processor/microdump_stackwalk$(EXEEXT): $(src_processor_microdump_stackwalk_OBJECTS) $(src_processor_microdump_stackwalk_DEPENDENCIES) $(EXTRA_src_processor_microdump_stackwalk_DEPENDENCIES) src/processor/$(am__dirstamp)
+	@rm -f src/processor/microdump_stackwalk$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(src_processor_microdump_stackwalk_OBJECTS) $(src_processor_microdump_stackwalk_LDADD) $(LIBS)
+src/processor/minidump_dump.$(OBJEXT): src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+
+src/processor/minidump_dump$(EXEEXT): $(src_processor_minidump_dump_OBJECTS) $(src_processor_minidump_dump_DEPENDENCIES) $(EXTRA_src_processor_minidump_dump_DEPENDENCIES) src/processor/$(am__dirstamp)
+	@rm -f src/processor/minidump_dump$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(src_processor_minidump_dump_OBJECTS) $(src_processor_minidump_dump_LDADD) $(LIBS)
+src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/testing/gtest/src/src_processor_minidump_processor_unittest-gtest-all.$(OBJEXT):  \
+	src/testing/gtest/src/$(am__dirstamp) \
+	src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp)
+src/testing/src/src_processor_minidump_processor_unittest-gmock-all.$(OBJEXT):  \
+	src/testing/src/$(am__dirstamp) \
+	src/testing/src/$(DEPDIR)/$(am__dirstamp)
+
+src/processor/minidump_processor_unittest$(EXEEXT): $(src_processor_minidump_processor_unittest_OBJECTS) $(src_processor_minidump_processor_unittest_DEPENDENCIES) $(EXTRA_src_processor_minidump_processor_unittest_DEPENDENCIES) src/processor/$(am__dirstamp)
+	@rm -f src/processor/minidump_processor_unittest$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(src_processor_minidump_processor_unittest_OBJECTS) $(src_processor_minidump_processor_unittest_LDADD) $(LIBS)
+src/processor/minidump_stackwalk.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+
+src/processor/minidump_stackwalk$(EXEEXT): $(src_processor_minidump_stackwalk_OBJECTS) $(src_processor_minidump_stackwalk_DEPENDENCIES) $(EXTRA_src_processor_minidump_stackwalk_DEPENDENCIES) src/processor/$(am__dirstamp)
+	@rm -f src/processor/minidump_stackwalk$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(src_processor_minidump_stackwalk_OBJECTS) $(src_processor_minidump_stackwalk_LDADD) $(LIBS)
+src/common/src_processor_minidump_unittest-test_assembler.$(OBJEXT):  \
+	src/common/$(am__dirstamp) \
+	src/common/$(DEPDIR)/$(am__dirstamp)
+src/processor/src_processor_minidump_unittest-minidump_unittest.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/processor/src_processor_minidump_unittest-synth_minidump.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/testing/gtest/src/src_processor_minidump_unittest-gtest-all.$(OBJEXT):  \
+	src/testing/gtest/src/$(am__dirstamp) \
+	src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp)
+src/testing/gtest/src/src_processor_minidump_unittest-gtest_main.$(OBJEXT):  \
+	src/testing/gtest/src/$(am__dirstamp) \
+	src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp)
+src/testing/src/src_processor_minidump_unittest-gmock-all.$(OBJEXT):  \
+	src/testing/src/$(am__dirstamp) \
+	src/testing/src/$(DEPDIR)/$(am__dirstamp)
+
+src/processor/minidump_unittest$(EXEEXT): $(src_processor_minidump_unittest_OBJECTS) $(src_processor_minidump_unittest_DEPENDENCIES) $(EXTRA_src_processor_minidump_unittest_DEPENDENCIES) src/processor/$(am__dirstamp)
+	@rm -f src/processor/minidump_unittest$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(src_processor_minidump_unittest_OBJECTS) $(src_processor_minidump_unittest_LDADD) $(LIBS)
+src/processor/pathname_stripper_unittest.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+
+src/processor/pathname_stripper_unittest$(EXEEXT): $(src_processor_pathname_stripper_unittest_OBJECTS) $(src_processor_pathname_stripper_unittest_DEPENDENCIES) $(EXTRA_src_processor_pathname_stripper_unittest_DEPENDENCIES) src/processor/$(am__dirstamp)
+	@rm -f src/processor/pathname_stripper_unittest$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(src_processor_pathname_stripper_unittest_OBJECTS) $(src_processor_pathname_stripper_unittest_LDADD) $(LIBS)
+src/processor/postfix_evaluator_unittest.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+
+src/processor/postfix_evaluator_unittest$(EXEEXT): $(src_processor_postfix_evaluator_unittest_OBJECTS) $(src_processor_postfix_evaluator_unittest_DEPENDENCIES) $(EXTRA_src_processor_postfix_evaluator_unittest_DEPENDENCIES) src/processor/$(am__dirstamp)
+	@rm -f src/processor/postfix_evaluator_unittest$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(src_processor_postfix_evaluator_unittest_OBJECTS) $(src_processor_postfix_evaluator_unittest_LDADD) $(LIBS)
+src/processor/range_map_unittest.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+
+src/processor/range_map_unittest$(EXEEXT): $(src_processor_range_map_unittest_OBJECTS) $(src_processor_range_map_unittest_DEPENDENCIES) $(EXTRA_src_processor_range_map_unittest_DEPENDENCIES) src/processor/$(am__dirstamp)
+	@rm -f src/processor/range_map_unittest$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(src_processor_range_map_unittest_OBJECTS) $(src_processor_range_map_unittest_LDADD) $(LIBS)
+src/common/src_processor_stackwalker_address_list_unittest-test_assembler.$(OBJEXT):  \
+	src/common/$(am__dirstamp) \
+	src/common/$(DEPDIR)/$(am__dirstamp)
+src/processor/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/testing/gtest/src/src_processor_stackwalker_address_list_unittest-gtest-all.$(OBJEXT):  \
+	src/testing/gtest/src/$(am__dirstamp) \
+	src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp)
+src/testing/gtest/src/src_processor_stackwalker_address_list_unittest-gtest_main.$(OBJEXT):  \
+	src/testing/gtest/src/$(am__dirstamp) \
+	src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp)
+src/testing/src/src_processor_stackwalker_address_list_unittest-gmock-all.$(OBJEXT):  \
+	src/testing/src/$(am__dirstamp) \
+	src/testing/src/$(DEPDIR)/$(am__dirstamp)
+
+src/processor/stackwalker_address_list_unittest$(EXEEXT): $(src_processor_stackwalker_address_list_unittest_OBJECTS) $(src_processor_stackwalker_address_list_unittest_DEPENDENCIES) $(EXTRA_src_processor_stackwalker_address_list_unittest_DEPENDENCIES) src/processor/$(am__dirstamp)
+	@rm -f src/processor/stackwalker_address_list_unittest$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(src_processor_stackwalker_address_list_unittest_OBJECTS) $(src_processor_stackwalker_address_list_unittest_LDADD) $(LIBS)
+src/common/src_processor_stackwalker_amd64_unittest-test_assembler.$(OBJEXT):  \
+	src/common/$(am__dirstamp) \
+	src/common/$(DEPDIR)/$(am__dirstamp)
+src/processor/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/testing/gtest/src/src_processor_stackwalker_amd64_unittest-gtest-all.$(OBJEXT):  \
+	src/testing/gtest/src/$(am__dirstamp) \
+	src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp)
+src/testing/gtest/src/src_processor_stackwalker_amd64_unittest-gtest_main.$(OBJEXT):  \
+	src/testing/gtest/src/$(am__dirstamp) \
+	src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp)
+src/testing/src/src_processor_stackwalker_amd64_unittest-gmock-all.$(OBJEXT):  \
+	src/testing/src/$(am__dirstamp) \
+	src/testing/src/$(DEPDIR)/$(am__dirstamp)
+
+src/processor/stackwalker_amd64_unittest$(EXEEXT): $(src_processor_stackwalker_amd64_unittest_OBJECTS) $(src_processor_stackwalker_amd64_unittest_DEPENDENCIES) $(EXTRA_src_processor_stackwalker_amd64_unittest_DEPENDENCIES) src/processor/$(am__dirstamp)
+	@rm -f src/processor/stackwalker_amd64_unittest$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(src_processor_stackwalker_amd64_unittest_OBJECTS) $(src_processor_stackwalker_amd64_unittest_LDADD) $(LIBS)
+src/common/src_processor_stackwalker_arm64_unittest-test_assembler.$(OBJEXT):  \
+	src/common/$(am__dirstamp) \
+	src/common/$(DEPDIR)/$(am__dirstamp)
+src/processor/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/testing/gtest/src/src_processor_stackwalker_arm64_unittest-gtest-all.$(OBJEXT):  \
+	src/testing/gtest/src/$(am__dirstamp) \
+	src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp)
+src/testing/gtest/src/src_processor_stackwalker_arm64_unittest-gtest_main.$(OBJEXT):  \
+	src/testing/gtest/src/$(am__dirstamp) \
+	src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp)
+src/testing/src/src_processor_stackwalker_arm64_unittest-gmock-all.$(OBJEXT):  \
+	src/testing/src/$(am__dirstamp) \
+	src/testing/src/$(DEPDIR)/$(am__dirstamp)
+
+src/processor/stackwalker_arm64_unittest$(EXEEXT): $(src_processor_stackwalker_arm64_unittest_OBJECTS) $(src_processor_stackwalker_arm64_unittest_DEPENDENCIES) $(EXTRA_src_processor_stackwalker_arm64_unittest_DEPENDENCIES) src/processor/$(am__dirstamp)
+	@rm -f src/processor/stackwalker_arm64_unittest$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(src_processor_stackwalker_arm64_unittest_OBJECTS) $(src_processor_stackwalker_arm64_unittest_LDADD) $(LIBS)
+src/common/src_processor_stackwalker_arm_unittest-test_assembler.$(OBJEXT):  \
+	src/common/$(am__dirstamp) \
+	src/common/$(DEPDIR)/$(am__dirstamp)
+src/processor/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/testing/gtest/src/src_processor_stackwalker_arm_unittest-gtest-all.$(OBJEXT):  \
+	src/testing/gtest/src/$(am__dirstamp) \
+	src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp)
+src/testing/gtest/src/src_processor_stackwalker_arm_unittest-gtest_main.$(OBJEXT):  \
+	src/testing/gtest/src/$(am__dirstamp) \
+	src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp)
+src/testing/src/src_processor_stackwalker_arm_unittest-gmock-all.$(OBJEXT):  \
+	src/testing/src/$(am__dirstamp) \
+	src/testing/src/$(DEPDIR)/$(am__dirstamp)
+
+src/processor/stackwalker_arm_unittest$(EXEEXT): $(src_processor_stackwalker_arm_unittest_OBJECTS) $(src_processor_stackwalker_arm_unittest_DEPENDENCIES) $(EXTRA_src_processor_stackwalker_arm_unittest_DEPENDENCIES) src/processor/$(am__dirstamp)
+	@rm -f src/processor/stackwalker_arm_unittest$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(src_processor_stackwalker_arm_unittest_OBJECTS) $(src_processor_stackwalker_arm_unittest_LDADD) $(LIBS)
+src/common/src_processor_stackwalker_mips_unittest-test_assembler.$(OBJEXT):  \
+	src/common/$(am__dirstamp) \
+	src/common/$(DEPDIR)/$(am__dirstamp)
+src/processor/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/testing/gtest/src/src_processor_stackwalker_mips_unittest-gtest-all.$(OBJEXT):  \
+	src/testing/gtest/src/$(am__dirstamp) \
+	src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp)
+src/testing/gtest/src/src_processor_stackwalker_mips_unittest-gtest_main.$(OBJEXT):  \
+	src/testing/gtest/src/$(am__dirstamp) \
+	src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp)
+src/testing/src/src_processor_stackwalker_mips_unittest-gmock-all.$(OBJEXT):  \
+	src/testing/src/$(am__dirstamp) \
+	src/testing/src/$(DEPDIR)/$(am__dirstamp)
+
+src/processor/stackwalker_mips_unittest$(EXEEXT): $(src_processor_stackwalker_mips_unittest_OBJECTS) $(src_processor_stackwalker_mips_unittest_DEPENDENCIES) $(EXTRA_src_processor_stackwalker_mips_unittest_DEPENDENCIES) src/processor/$(am__dirstamp)
+	@rm -f src/processor/stackwalker_mips_unittest$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(src_processor_stackwalker_mips_unittest_OBJECTS) $(src_processor_stackwalker_mips_unittest_LDADD) $(LIBS)
+src/processor/stackwalker_selftest.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+
+src/processor/stackwalker_selftest$(EXEEXT): $(src_processor_stackwalker_selftest_OBJECTS) $(src_processor_stackwalker_selftest_DEPENDENCIES) $(EXTRA_src_processor_stackwalker_selftest_DEPENDENCIES) src/processor/$(am__dirstamp)
+	@rm -f src/processor/stackwalker_selftest$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(src_processor_stackwalker_selftest_OBJECTS) $(src_processor_stackwalker_selftest_LDADD) $(LIBS)
+src/common/src_processor_stackwalker_x86_unittest-test_assembler.$(OBJEXT):  \
+	src/common/$(am__dirstamp) \
+	src/common/$(DEPDIR)/$(am__dirstamp)
+src/processor/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/testing/gtest/src/src_processor_stackwalker_x86_unittest-gtest-all.$(OBJEXT):  \
+	src/testing/gtest/src/$(am__dirstamp) \
+	src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp)
+src/testing/gtest/src/src_processor_stackwalker_x86_unittest-gtest_main.$(OBJEXT):  \
+	src/testing/gtest/src/$(am__dirstamp) \
+	src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp)
+src/testing/src/src_processor_stackwalker_x86_unittest-gmock-all.$(OBJEXT):  \
+	src/testing/src/$(am__dirstamp) \
+	src/testing/src/$(DEPDIR)/$(am__dirstamp)
+
+src/processor/stackwalker_x86_unittest$(EXEEXT): $(src_processor_stackwalker_x86_unittest_OBJECTS) $(src_processor_stackwalker_x86_unittest_DEPENDENCIES) $(EXTRA_src_processor_stackwalker_x86_unittest_DEPENDENCIES) src/processor/$(am__dirstamp)
+	@rm -f src/processor/stackwalker_x86_unittest$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(src_processor_stackwalker_x86_unittest_OBJECTS) $(src_processor_stackwalker_x86_unittest_LDADD) $(LIBS)
+src/processor/src_processor_static_address_map_unittest-static_address_map_unittest.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/testing/gtest/src/src_processor_static_address_map_unittest-gtest-all.$(OBJEXT):  \
+	src/testing/gtest/src/$(am__dirstamp) \
+	src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp)
+src/testing/src/src_processor_static_address_map_unittest-gmock-all.$(OBJEXT):  \
+	src/testing/src/$(am__dirstamp) \
+	src/testing/src/$(DEPDIR)/$(am__dirstamp)
+
+src/processor/static_address_map_unittest$(EXEEXT): $(src_processor_static_address_map_unittest_OBJECTS) $(src_processor_static_address_map_unittest_DEPENDENCIES) $(EXTRA_src_processor_static_address_map_unittest_DEPENDENCIES) src/processor/$(am__dirstamp)
+	@rm -f src/processor/static_address_map_unittest$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(src_processor_static_address_map_unittest_OBJECTS) $(src_processor_static_address_map_unittest_LDADD) $(LIBS)
+src/processor/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/testing/gtest/src/src_processor_static_contained_range_map_unittest-gtest-all.$(OBJEXT):  \
+	src/testing/gtest/src/$(am__dirstamp) \
+	src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp)
+src/testing/src/src_processor_static_contained_range_map_unittest-gmock-all.$(OBJEXT):  \
+	src/testing/src/$(am__dirstamp) \
+	src/testing/src/$(DEPDIR)/$(am__dirstamp)
+
+src/processor/static_contained_range_map_unittest$(EXEEXT): $(src_processor_static_contained_range_map_unittest_OBJECTS) $(src_processor_static_contained_range_map_unittest_DEPENDENCIES) $(EXTRA_src_processor_static_contained_range_map_unittest_DEPENDENCIES) src/processor/$(am__dirstamp)
+	@rm -f src/processor/static_contained_range_map_unittest$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(src_processor_static_contained_range_map_unittest_OBJECTS) $(src_processor_static_contained_range_map_unittest_LDADD) $(LIBS)
+src/processor/src_processor_static_map_unittest-static_map_unittest.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/testing/gtest/src/src_processor_static_map_unittest-gtest-all.$(OBJEXT):  \
+	src/testing/gtest/src/$(am__dirstamp) \
+	src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp)
+src/testing/src/src_processor_static_map_unittest-gmock-all.$(OBJEXT):  \
+	src/testing/src/$(am__dirstamp) \
+	src/testing/src/$(DEPDIR)/$(am__dirstamp)
+
+src/processor/static_map_unittest$(EXEEXT): $(src_processor_static_map_unittest_OBJECTS) $(src_processor_static_map_unittest_DEPENDENCIES) $(EXTRA_src_processor_static_map_unittest_DEPENDENCIES) src/processor/$(am__dirstamp)
+	@rm -f src/processor/static_map_unittest$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(src_processor_static_map_unittest_OBJECTS) $(src_processor_static_map_unittest_LDADD) $(LIBS)
+src/processor/src_processor_static_range_map_unittest-static_range_map_unittest.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/testing/gtest/src/src_processor_static_range_map_unittest-gtest-all.$(OBJEXT):  \
+	src/testing/gtest/src/$(am__dirstamp) \
+	src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp)
+src/testing/src/src_processor_static_range_map_unittest-gmock-all.$(OBJEXT):  \
+	src/testing/src/$(am__dirstamp) \
+	src/testing/src/$(DEPDIR)/$(am__dirstamp)
+
+src/processor/static_range_map_unittest$(EXEEXT): $(src_processor_static_range_map_unittest_OBJECTS) $(src_processor_static_range_map_unittest_DEPENDENCIES) $(EXTRA_src_processor_static_range_map_unittest_DEPENDENCIES) src/processor/$(am__dirstamp)
+	@rm -f src/processor/static_range_map_unittest$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(src_processor_static_range_map_unittest_OBJECTS) $(src_processor_static_range_map_unittest_LDADD) $(LIBS)
+src/common/src_processor_synth_minidump_unittest-test_assembler.$(OBJEXT):  \
+	src/common/$(am__dirstamp) \
+	src/common/$(DEPDIR)/$(am__dirstamp)
+src/processor/src_processor_synth_minidump_unittest-synth_minidump_unittest.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+src/testing/gtest/src/src_processor_synth_minidump_unittest-gtest-all.$(OBJEXT):  \
+	src/testing/gtest/src/$(am__dirstamp) \
+	src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp)
+src/testing/gtest/src/src_processor_synth_minidump_unittest-gtest_main.$(OBJEXT):  \
+	src/testing/gtest/src/$(am__dirstamp) \
+	src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp)
+src/testing/src/src_processor_synth_minidump_unittest-gmock-all.$(OBJEXT):  \
+	src/testing/src/$(am__dirstamp) \
+	src/testing/src/$(DEPDIR)/$(am__dirstamp)
+src/processor/src_processor_synth_minidump_unittest-synth_minidump.$(OBJEXT):  \
+	src/processor/$(am__dirstamp) \
+	src/processor/$(DEPDIR)/$(am__dirstamp)
+
+src/processor/synth_minidump_unittest$(EXEEXT): $(src_processor_synth_minidump_unittest_OBJECTS) $(src_processor_synth_minidump_unittest_DEPENDENCIES) $(EXTRA_src_processor_synth_minidump_unittest_DEPENDENCIES) src/processor/$(am__dirstamp)
+	@rm -f src/processor/synth_minidump_unittest$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(src_processor_synth_minidump_unittest_OBJECTS) $(src_processor_synth_minidump_unittest_LDADD) $(LIBS)
+src/tools/linux/core2md/$(am__dirstamp):
+	@$(MKDIR_P) src/tools/linux/core2md
+	@: > src/tools/linux/core2md/$(am__dirstamp)
+src/tools/linux/core2md/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) src/tools/linux/core2md/$(DEPDIR)
+	@: > src/tools/linux/core2md/$(DEPDIR)/$(am__dirstamp)
+src/tools/linux/core2md/core2md.$(OBJEXT):  \
+	src/tools/linux/core2md/$(am__dirstamp) \
+	src/tools/linux/core2md/$(DEPDIR)/$(am__dirstamp)
+src/client/linux/minidump_writer/linux_core_dumper.$(OBJEXT):  \
+	src/client/linux/minidump_writer/$(am__dirstamp) \
+	src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp)
+src/common/linux/elf_core_dump.$(OBJEXT):  \
+	src/common/linux/$(am__dirstamp) \
+	src/common/linux/$(DEPDIR)/$(am__dirstamp)
+
+src/tools/linux/core2md/core2md$(EXEEXT): $(src_tools_linux_core2md_core2md_OBJECTS) $(src_tools_linux_core2md_core2md_DEPENDENCIES) $(EXTRA_src_tools_linux_core2md_core2md_DEPENDENCIES) src/tools/linux/core2md/$(am__dirstamp)
+	@rm -f src/tools/linux/core2md/core2md$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(src_tools_linux_core2md_core2md_OBJECTS) $(src_tools_linux_core2md_core2md_LDADD) $(LIBS)
+src/common/dwarf_cfi_to_module.$(OBJEXT): src/common/$(am__dirstamp) \
+	src/common/$(DEPDIR)/$(am__dirstamp)
+src/common/dwarf_cu_to_module.$(OBJEXT): src/common/$(am__dirstamp) \
+	src/common/$(DEPDIR)/$(am__dirstamp)
+src/common/dwarf_line_to_module.$(OBJEXT): src/common/$(am__dirstamp) \
+	src/common/$(DEPDIR)/$(am__dirstamp)
+src/common/language.$(OBJEXT): src/common/$(am__dirstamp) \
+	src/common/$(DEPDIR)/$(am__dirstamp)
+src/common/module.$(OBJEXT): src/common/$(am__dirstamp) \
+	src/common/$(DEPDIR)/$(am__dirstamp)
+src/common/stabs_reader.$(OBJEXT): src/common/$(am__dirstamp) \
+	src/common/$(DEPDIR)/$(am__dirstamp)
+src/common/stabs_to_module.$(OBJEXT): src/common/$(am__dirstamp) \
+	src/common/$(DEPDIR)/$(am__dirstamp)
+src/common/dwarf/bytereader.$(OBJEXT):  \
+	src/common/dwarf/$(am__dirstamp) \
+	src/common/dwarf/$(DEPDIR)/$(am__dirstamp)
+src/common/dwarf/dwarf2diehandler.$(OBJEXT):  \
+	src/common/dwarf/$(am__dirstamp) \
+	src/common/dwarf/$(DEPDIR)/$(am__dirstamp)
+src/common/dwarf/dwarf2reader.$(OBJEXT):  \
+	src/common/dwarf/$(am__dirstamp) \
+	src/common/dwarf/$(DEPDIR)/$(am__dirstamp)
+src/common/linux/crc32.$(OBJEXT): src/common/linux/$(am__dirstamp) \
+	src/common/linux/$(DEPDIR)/$(am__dirstamp)
+src/common/linux/dump_symbols.$(OBJEXT):  \
+	src/common/linux/$(am__dirstamp) \
+	src/common/linux/$(DEPDIR)/$(am__dirstamp)
+src/common/linux/elf_symbols_to_module.$(OBJEXT):  \
+	src/common/linux/$(am__dirstamp) \
+	src/common/linux/$(DEPDIR)/$(am__dirstamp)
+src/tools/linux/dump_syms/$(am__dirstamp):
+	@$(MKDIR_P) src/tools/linux/dump_syms
+	@: > src/tools/linux/dump_syms/$(am__dirstamp)
+src/tools/linux/dump_syms/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) src/tools/linux/dump_syms/$(DEPDIR)
+	@: > src/tools/linux/dump_syms/$(DEPDIR)/$(am__dirstamp)
+src/tools/linux/dump_syms/dump_syms.$(OBJEXT):  \
+	src/tools/linux/dump_syms/$(am__dirstamp) \
+	src/tools/linux/dump_syms/$(DEPDIR)/$(am__dirstamp)
+
+src/tools/linux/dump_syms/dump_syms$(EXEEXT): $(src_tools_linux_dump_syms_dump_syms_OBJECTS) $(src_tools_linux_dump_syms_dump_syms_DEPENDENCIES) $(EXTRA_src_tools_linux_dump_syms_dump_syms_DEPENDENCIES) src/tools/linux/dump_syms/$(am__dirstamp)
+	@rm -f src/tools/linux/dump_syms/dump_syms$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(src_tools_linux_dump_syms_dump_syms_OBJECTS) $(src_tools_linux_dump_syms_dump_syms_LDADD) $(LIBS)
+src/tools/linux/md2core/$(am__dirstamp):
+	@$(MKDIR_P) src/tools/linux/md2core
+	@: > src/tools/linux/md2core/$(am__dirstamp)
+src/tools/linux/md2core/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) src/tools/linux/md2core/$(DEPDIR)
+	@: > src/tools/linux/md2core/$(DEPDIR)/$(am__dirstamp)
+src/tools/linux/md2core/minidump-2-core.$(OBJEXT):  \
+	src/tools/linux/md2core/$(am__dirstamp) \
+	src/tools/linux/md2core/$(DEPDIR)/$(am__dirstamp)
+
+src/tools/linux/md2core/minidump-2-core$(EXEEXT): $(src_tools_linux_md2core_minidump_2_core_OBJECTS) $(src_tools_linux_md2core_minidump_2_core_DEPENDENCIES) $(EXTRA_src_tools_linux_md2core_minidump_2_core_DEPENDENCIES) src/tools/linux/md2core/$(am__dirstamp)
+	@rm -f src/tools/linux/md2core/minidump-2-core$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(src_tools_linux_md2core_minidump_2_core_OBJECTS) $(src_tools_linux_md2core_minidump_2_core_LDADD) $(LIBS)
+src/testing/gtest/src/src_tools_linux_md2core_minidump_2_core_unittest-gtest-all.$(OBJEXT):  \
+	src/testing/gtest/src/$(am__dirstamp) \
+	src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp)
+src/testing/gtest/src/src_tools_linux_md2core_minidump_2_core_unittest-gtest_main.$(OBJEXT):  \
+	src/testing/gtest/src/$(am__dirstamp) \
+	src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp)
+src/testing/src/src_tools_linux_md2core_minidump_2_core_unittest-gmock-all.$(OBJEXT):  \
+	src/testing/src/$(am__dirstamp) \
+	src/testing/src/$(DEPDIR)/$(am__dirstamp)
+src/tools/linux/md2core/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.$(OBJEXT):  \
+	src/tools/linux/md2core/$(am__dirstamp) \
+	src/tools/linux/md2core/$(DEPDIR)/$(am__dirstamp)
+
+src/tools/linux/md2core/minidump_2_core_unittest$(EXEEXT): $(src_tools_linux_md2core_minidump_2_core_unittest_OBJECTS) $(src_tools_linux_md2core_minidump_2_core_unittest_DEPENDENCIES) $(EXTRA_src_tools_linux_md2core_minidump_2_core_unittest_DEPENDENCIES) src/tools/linux/md2core/$(am__dirstamp)
+	@rm -f src/tools/linux/md2core/minidump_2_core_unittest$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(src_tools_linux_md2core_minidump_2_core_unittest_OBJECTS) $(src_tools_linux_md2core_minidump_2_core_unittest_LDADD) $(LIBS)
+src/common/linux/http_upload.$(OBJEXT):  \
+	src/common/linux/$(am__dirstamp) \
+	src/common/linux/$(DEPDIR)/$(am__dirstamp)
+src/tools/linux/symupload/$(am__dirstamp):
+	@$(MKDIR_P) src/tools/linux/symupload
+	@: > src/tools/linux/symupload/$(am__dirstamp)
+src/tools/linux/symupload/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) src/tools/linux/symupload/$(DEPDIR)
+	@: > src/tools/linux/symupload/$(DEPDIR)/$(am__dirstamp)
+src/tools/linux/symupload/minidump_upload.$(OBJEXT):  \
+	src/tools/linux/symupload/$(am__dirstamp) \
+	src/tools/linux/symupload/$(DEPDIR)/$(am__dirstamp)
+
+src/tools/linux/symupload/minidump_upload$(EXEEXT): $(src_tools_linux_symupload_minidump_upload_OBJECTS) $(src_tools_linux_symupload_minidump_upload_DEPENDENCIES) $(EXTRA_src_tools_linux_symupload_minidump_upload_DEPENDENCIES) src/tools/linux/symupload/$(am__dirstamp)
+	@rm -f src/tools/linux/symupload/minidump_upload$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(src_tools_linux_symupload_minidump_upload_OBJECTS) $(src_tools_linux_symupload_minidump_upload_LDADD) $(LIBS)
+src/tools/linux/symupload/sym_upload.$(OBJEXT):  \
+	src/tools/linux/symupload/$(am__dirstamp) \
+	src/tools/linux/symupload/$(DEPDIR)/$(am__dirstamp)
+
+src/tools/linux/symupload/sym_upload$(EXEEXT): $(src_tools_linux_symupload_sym_upload_OBJECTS) $(src_tools_linux_symupload_sym_upload_DEPENDENCIES) $(EXTRA_src_tools_linux_symupload_sym_upload_DEPENDENCIES) src/tools/linux/symupload/$(am__dirstamp)
+	@rm -f src/tools/linux/symupload/sym_upload$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(src_tools_linux_symupload_sym_upload_OBJECTS) $(src_tools_linux_symupload_sym_upload_LDADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+	-rm -f src/client/*.$(OBJEXT)
+	-rm -f src/client/linux/crash_generation/*.$(OBJEXT)
+	-rm -f src/client/linux/dump_writer_common/*.$(OBJEXT)
+	-rm -f src/client/linux/handler/*.$(OBJEXT)
+	-rm -f src/client/linux/log/*.$(OBJEXT)
+	-rm -f src/client/linux/microdump_writer/*.$(OBJEXT)
+	-rm -f src/client/linux/minidump_writer/*.$(OBJEXT)
+	-rm -f src/common/*.$(OBJEXT)
+	-rm -f src/common/android/*.$(OBJEXT)
+	-rm -f src/common/dwarf/*.$(OBJEXT)
+	-rm -f src/common/linux/*.$(OBJEXT)
+	-rm -f src/common/linux/tests/*.$(OBJEXT)
+	-rm -f src/common/tests/*.$(OBJEXT)
+	-rm -f src/processor/*.$(OBJEXT)
+	-rm -f src/testing/gtest/src/*.$(OBJEXT)
+	-rm -f src/testing/src/*.$(OBJEXT)
+	-rm -f src/third_party/libdisasm/*.$(OBJEXT)
+	-rm -f src/tools/linux/core2md/*.$(OBJEXT)
+	-rm -f src/tools/linux/dump_syms/*.$(OBJEXT)
+	-rm -f src/tools/linux/md2core/*.$(OBJEXT)
+	-rm -f src/tools/linux/symupload/*.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@src/client/$(DEPDIR)/minidump_file_writer.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/crash_generation/$(DEPDIR)/crash_generation_client.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/crash_generation/$(DEPDIR)/crash_generation_server.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/dump_writer_common/$(DEPDIR)/seccomp_unwinder.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/dump_writer_common/$(DEPDIR)/thread_info.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/dump_writer_common/$(DEPDIR)/ucontext_reader.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/handler/$(DEPDIR)/exception_handler.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/handler/$(DEPDIR)/minidump_descriptor.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/handler/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/log/$(DEPDIR)/log.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/microdump_writer/$(DEPDIR)/microdump_writer.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/microdump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/minidump_writer/$(DEPDIR)/linux_core_dumper.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/minidump_writer/$(DEPDIR)/linux_dumper.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/minidump_writer/$(DEPDIR)/linux_ptrace_dumper.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/minidump_writer/$(DEPDIR)/minidump_writer.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/convert_UTF.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/dwarf_cfi_to_module.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/dwarf_cu_to_module.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/dwarf_line_to_module.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/language.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/md5.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/module.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-memory_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_dumper_unittest-byte_cursor_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cfi_to_module.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cu_to_module.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cu_to_module_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_line_to_module.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_line_to_module_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_dumper_unittest-language.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_dumper_unittest-memory_range_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_dumper_unittest-module.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_dumper_unittest-module_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_reader.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_reader_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_to_module.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_to_module_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_dumper_unittest-test_assembler.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_test_assembler_unittest-test_assembler.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_test_assembler_unittest-test_assembler_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_processor_minidump_unittest-test_assembler.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-test_assembler.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-test_assembler.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-test_assembler.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_processor_stackwalker_arm_unittest-test_assembler.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_processor_stackwalker_mips_unittest-test_assembler.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_processor_stackwalker_x86_unittest-test_assembler.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_processor_synth_minidump_unittest-test_assembler.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/stabs_reader.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/stabs_to_module.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/string_conversion.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/android/$(DEPDIR)/breakpad_getcontext.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/android/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/android/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/bytereader.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/dwarf2diehandler.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/dwarf2reader.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-bytereader.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-bytereader_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-cfi_assembler.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2diehandler.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2diehandler_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader_cfi_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader_die_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/crc32.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/dump_symbols.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/elf_core_dump.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/elf_symbols_to_module.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/elfutils.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/file_id.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/guid_creator.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/http_upload.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/linux_libc_support.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/memory_mapped_file.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/safe_readlink.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-elf_core_dump.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_common_dumper_unittest-crc32.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_common_dumper_unittest-dump_symbols.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_common_dumper_unittest-dump_symbols_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_core_dump.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_core_dump_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_symbols_to_module.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_symbols_to_module_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elfutils.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_common_dumper_unittest-file_id.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_common_dumper_unittest-file_id_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_common_dumper_unittest-linux_libc_support.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_common_dumper_unittest-memory_mapped_file.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_common_dumper_unittest-memory_mapped_file_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_common_dumper_unittest-safe_readlink.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_common_dumper_unittest-safe_readlink_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_common_dumper_unittest-synth_elf.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_common_dumper_unittest-synth_elf_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/tests/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-crash_generator.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/tests/$(DEPDIR)/src_common_dumper_unittest-crash_generator.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/tests/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-file_utils.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/common/tests/$(DEPDIR)/src_common_dumper_unittest-file_utils.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/address_map_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/basic_code_modules.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/basic_source_line_resolver.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/binarystream.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/call_stack.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/cfi_frame_info.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/contained_range_map_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/disassembler_x86.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/dump_context.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/dump_object.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/exploitability.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/exploitability_linux.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/exploitability_win.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/fast_source_line_resolver.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/logging.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/microdump.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/microdump_processor.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/microdump_stackwalk.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/minidump.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/minidump_dump.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/minidump_processor.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/minidump_stackwalk.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/module_comparer.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/module_serializer.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/pathname_stripper.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/pathname_stripper_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/postfix_evaluator_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/process_state.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/range_map_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/simple_symbol_supplier.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/source_line_resolver_base.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-basic_code_modules.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-dump_context.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-dump_object.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-logging.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-pathname_stripper.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_binarystream_unittest-binarystream_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_exploitability_unittest-exploitability_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_map_serializers_unittest-map_serializers_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_microdump_processor_unittest-microdump_processor_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_minidump_processor_unittest-minidump_processor_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_minidump_unittest-minidump_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_minidump_unittest-synth_minidump.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_static_address_map_unittest-static_address_map_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_static_map_unittest-static_map_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_static_range_map_unittest-static_range_map_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_synth_minidump_unittest-synth_minidump.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_synth_minidump_unittest-synth_minidump_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stack_frame_cpu.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stack_frame_symbolizer.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stackwalker.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stackwalker_address_list.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stackwalker_amd64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stackwalker_arm.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stackwalker_arm64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stackwalker_mips.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stackwalker_ppc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stackwalker_ppc64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stackwalker_selftest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stackwalker_sparc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stackwalker_x86.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/symbolic_constants_win.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/tokenize.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/gtest/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gtest-all.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/gtest/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gtest_main.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/gtest/src/$(DEPDIR)/src_common_dumper_unittest-gtest-all.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/gtest/src/$(DEPDIR)/src_common_dumper_unittest-gtest_main.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/gtest/src/$(DEPDIR)/src_common_test_assembler_unittest-gtest-all.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/gtest/src/$(DEPDIR)/src_common_test_assembler_unittest-gtest_main.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/gtest/src/$(DEPDIR)/src_processor_basic_source_line_resolver_unittest-gtest-all.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/gtest/src/$(DEPDIR)/src_processor_binarystream_unittest-gtest-all.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/gtest/src/$(DEPDIR)/src_processor_cfi_frame_info_unittest-gtest-all.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/gtest/src/$(DEPDIR)/src_processor_cfi_frame_info_unittest-gtest_main.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/gtest/src/$(DEPDIR)/src_processor_disassembler_x86_unittest-gtest-all.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/gtest/src/$(DEPDIR)/src_processor_disassembler_x86_unittest-gtest_main.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/gtest/src/$(DEPDIR)/src_processor_exploitability_unittest-gtest-all.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/gtest/src/$(DEPDIR)/src_processor_exploitability_unittest-gtest_main.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/gtest/src/$(DEPDIR)/src_processor_fast_source_line_resolver_unittest-gtest-all.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/gtest/src/$(DEPDIR)/src_processor_map_serializers_unittest-gtest-all.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/gtest/src/$(DEPDIR)/src_processor_microdump_processor_unittest-gtest-all.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/gtest/src/$(DEPDIR)/src_processor_minidump_processor_unittest-gtest-all.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/gtest/src/$(DEPDIR)/src_processor_minidump_unittest-gtest-all.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/gtest/src/$(DEPDIR)/src_processor_minidump_unittest-gtest_main.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-gtest-all.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-gtest_main.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-gtest-all.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-gtest_main.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-gtest-all.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-gtest_main.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_arm_unittest-gtest-all.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_arm_unittest-gtest_main.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_mips_unittest-gtest-all.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_mips_unittest-gtest_main.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_x86_unittest-gtest-all.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_x86_unittest-gtest_main.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/gtest/src/$(DEPDIR)/src_processor_static_address_map_unittest-gtest-all.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/gtest/src/$(DEPDIR)/src_processor_static_contained_range_map_unittest-gtest-all.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/gtest/src/$(DEPDIR)/src_processor_static_map_unittest-gtest-all.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/gtest/src/$(DEPDIR)/src_processor_static_range_map_unittest-gtest-all.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/gtest/src/$(DEPDIR)/src_processor_synth_minidump_unittest-gtest-all.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/gtest/src/$(DEPDIR)/src_processor_synth_minidump_unittest-gtest_main.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/gtest/src/$(DEPDIR)/src_tools_linux_md2core_minidump_2_core_unittest-gtest-all.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/gtest/src/$(DEPDIR)/src_tools_linux_md2core_minidump_2_core_unittest-gtest_main.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gmock-all.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/src/$(DEPDIR)/src_common_dumper_unittest-gmock-all.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/src/$(DEPDIR)/src_common_test_assembler_unittest-gmock-all.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/src/$(DEPDIR)/src_processor_basic_source_line_resolver_unittest-gmock-all.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/src/$(DEPDIR)/src_processor_binarystream_unittest-gmock-all.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/src/$(DEPDIR)/src_processor_cfi_frame_info_unittest-gmock-all.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/src/$(DEPDIR)/src_processor_disassembler_x86_unittest-gmock-all.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/src/$(DEPDIR)/src_processor_exploitability_unittest-gmock-all.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/src/$(DEPDIR)/src_processor_fast_source_line_resolver_unittest-gmock-all.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/src/$(DEPDIR)/src_processor_map_serializers_unittest-gmock-all.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/src/$(DEPDIR)/src_processor_microdump_processor_unittest-gmock-all.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/src/$(DEPDIR)/src_processor_minidump_processor_unittest-gmock-all.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/src/$(DEPDIR)/src_processor_minidump_unittest-gmock-all.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/src/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-gmock-all.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/src/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-gmock-all.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/src/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-gmock-all.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/src/$(DEPDIR)/src_processor_stackwalker_arm_unittest-gmock-all.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/src/$(DEPDIR)/src_processor_stackwalker_mips_unittest-gmock-all.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/src/$(DEPDIR)/src_processor_stackwalker_x86_unittest-gmock-all.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/src/$(DEPDIR)/src_processor_static_address_map_unittest-gmock-all.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/src/$(DEPDIR)/src_processor_static_contained_range_map_unittest-gmock-all.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/src/$(DEPDIR)/src_processor_static_map_unittest-gmock-all.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/src/$(DEPDIR)/src_processor_static_range_map_unittest-gmock-all.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/src/$(DEPDIR)/src_processor_synth_minidump_unittest-gmock-all.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testing/src/$(DEPDIR)/src_tools_linux_md2core_minidump_2_core_unittest-gmock-all.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/third_party/libdisasm/$(DEPDIR)/ia32_implicit.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/third_party/libdisasm/$(DEPDIR)/ia32_insn.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/third_party/libdisasm/$(DEPDIR)/ia32_invariant.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/third_party/libdisasm/$(DEPDIR)/ia32_modrm.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/third_party/libdisasm/$(DEPDIR)/ia32_opcode_tables.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/third_party/libdisasm/$(DEPDIR)/ia32_operand.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/third_party/libdisasm/$(DEPDIR)/ia32_reg.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/third_party/libdisasm/$(DEPDIR)/ia32_settings.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/third_party/libdisasm/$(DEPDIR)/x86_disasm.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/third_party/libdisasm/$(DEPDIR)/x86_format.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/third_party/libdisasm/$(DEPDIR)/x86_imm.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/third_party/libdisasm/$(DEPDIR)/x86_insn.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/third_party/libdisasm/$(DEPDIR)/x86_misc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/third_party/libdisasm/$(DEPDIR)/x86_operand_list.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/tools/linux/core2md/$(DEPDIR)/core2md.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/tools/linux/dump_syms/$(DEPDIR)/dump_syms.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/tools/linux/md2core/$(DEPDIR)/minidump-2-core.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/tools/linux/md2core/$(DEPDIR)/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/tools/linux/symupload/$(DEPDIR)/minidump_upload.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/tools/linux/symupload/$(DEPDIR)/sym_upload.Po@am__quote@
+
+.S.o:
+@am__fastdepCCAS_TRUE@	$(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCCAS_TRUE@	$(CPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCCAS_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	$(AM_V_CPPAS)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCCAS_FALSE@	$(AM_V_CPPAS@am__nodep@)$(CPPASCOMPILE) -c -o $@ $<
+
+.S.obj:
+@am__fastdepCCAS_TRUE@	$(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCCAS_TRUE@	$(CPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCCAS_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	$(AM_V_CPPAS)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCCAS_FALSE@	$(AM_V_CPPAS@am__nodep@)$(CPPASCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.o: src/common/android/breakpad_getcontext.S
+@am__fastdepCCAS_TRUE@	$(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -MT src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.o -MD -MP -MF src/common/android/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.Tpo -c -o src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.o `test -f 'src/common/android/breakpad_getcontext.S' || echo '$(srcdir)/'`src/common/android/breakpad_getcontext.S
+@am__fastdepCCAS_TRUE@	$(AM_V_at)$(am__mv) src/common/android/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.Tpo src/common/android/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.Po
+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	$(AM_V_CPPAS)source='src/common/android/breakpad_getcontext.S' object='src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCCAS_FALSE@	$(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -c -o src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.o `test -f 'src/common/android/breakpad_getcontext.S' || echo '$(srcdir)/'`src/common/android/breakpad_getcontext.S
+
+src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.obj: src/common/android/breakpad_getcontext.S
+@am__fastdepCCAS_TRUE@	$(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -MT src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.obj -MD -MP -MF src/common/android/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.Tpo -c -o src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.obj `if test -f 'src/common/android/breakpad_getcontext.S'; then $(CYGPATH_W) 'src/common/android/breakpad_getcontext.S'; else $(CYGPATH_W) '$(srcdir)/src/common/android/breakpad_getcontext.S'; fi`
+@am__fastdepCCAS_TRUE@	$(AM_V_at)$(am__mv) src/common/android/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.Tpo src/common/android/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.Po
+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	$(AM_V_CPPAS)source='src/common/android/breakpad_getcontext.S' object='src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@	DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCCAS_FALSE@	$(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -c -o src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.obj `if test -f 'src/common/android/breakpad_getcontext.S'; then $(CYGPATH_W) 'src/common/android/breakpad_getcontext.S'; else $(CYGPATH_W) '$(srcdir)/src/common/android/breakpad_getcontext.S'; fi`
+
+.c.o:
+@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cc.o:
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+
+.cc.obj:
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+src/client/linux/handler/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.o: src/client/linux/handler/exception_handler_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/handler/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.o -MD -MP -MF src/client/linux/handler/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.Tpo -c -o src/client/linux/handler/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.o `test -f 'src/client/linux/handler/exception_handler_unittest.cc' || echo '$(srcdir)/'`src/client/linux/handler/exception_handler_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/client/linux/handler/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.Tpo src/client/linux/handler/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/client/linux/handler/exception_handler_unittest.cc' object='src/client/linux/handler/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/handler/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.o `test -f 'src/client/linux/handler/exception_handler_unittest.cc' || echo '$(srcdir)/'`src/client/linux/handler/exception_handler_unittest.cc
+
+src/client/linux/handler/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.obj: src/client/linux/handler/exception_handler_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/handler/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.obj -MD -MP -MF src/client/linux/handler/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.Tpo -c -o src/client/linux/handler/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.obj `if test -f 'src/client/linux/handler/exception_handler_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/handler/exception_handler_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/handler/exception_handler_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/client/linux/handler/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.Tpo src/client/linux/handler/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/client/linux/handler/exception_handler_unittest.cc' object='src/client/linux/handler/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/handler/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.obj `if test -f 'src/client/linux/handler/exception_handler_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/handler/exception_handler_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/handler/exception_handler_unittest.cc'; fi`
+
+src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.o: src/client/linux/minidump_writer/directory_reader_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.o -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.o `test -f 'src/client/linux/minidump_writer/directory_reader_unittest.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/directory_reader_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/client/linux/minidump_writer/directory_reader_unittest.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.o `test -f 'src/client/linux/minidump_writer/directory_reader_unittest.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/directory_reader_unittest.cc
+
+src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.obj: src/client/linux/minidump_writer/directory_reader_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.obj -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.obj `if test -f 'src/client/linux/minidump_writer/directory_reader_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/directory_reader_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/directory_reader_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/client/linux/minidump_writer/directory_reader_unittest.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.obj `if test -f 'src/client/linux/minidump_writer/directory_reader_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/directory_reader_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/directory_reader_unittest.cc'; fi`
+
+src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.o: src/client/linux/minidump_writer/cpu_set_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.o -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.o `test -f 'src/client/linux/minidump_writer/cpu_set_unittest.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/cpu_set_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/client/linux/minidump_writer/cpu_set_unittest.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.o `test -f 'src/client/linux/minidump_writer/cpu_set_unittest.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/cpu_set_unittest.cc
+
+src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.obj: src/client/linux/minidump_writer/cpu_set_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.obj -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.obj `if test -f 'src/client/linux/minidump_writer/cpu_set_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/cpu_set_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/cpu_set_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/client/linux/minidump_writer/cpu_set_unittest.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.obj `if test -f 'src/client/linux/minidump_writer/cpu_set_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/cpu_set_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/cpu_set_unittest.cc'; fi`
+
+src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.o: src/client/linux/minidump_writer/line_reader_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.o -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.o `test -f 'src/client/linux/minidump_writer/line_reader_unittest.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/line_reader_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/client/linux/minidump_writer/line_reader_unittest.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.o `test -f 'src/client/linux/minidump_writer/line_reader_unittest.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/line_reader_unittest.cc
+
+src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.obj: src/client/linux/minidump_writer/line_reader_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.obj -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.obj `if test -f 'src/client/linux/minidump_writer/line_reader_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/line_reader_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/line_reader_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/client/linux/minidump_writer/line_reader_unittest.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.obj `if test -f 'src/client/linux/minidump_writer/line_reader_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/line_reader_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/line_reader_unittest.cc'; fi`
+
+src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.o: src/client/linux/minidump_writer/linux_core_dumper.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.o -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.o `test -f 'src/client/linux/minidump_writer/linux_core_dumper.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/linux_core_dumper.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/client/linux/minidump_writer/linux_core_dumper.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.o `test -f 'src/client/linux/minidump_writer/linux_core_dumper.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/linux_core_dumper.cc
+
+src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.obj: src/client/linux/minidump_writer/linux_core_dumper.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.obj -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.obj `if test -f 'src/client/linux/minidump_writer/linux_core_dumper.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/linux_core_dumper.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/linux_core_dumper.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/client/linux/minidump_writer/linux_core_dumper.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.obj `if test -f 'src/client/linux/minidump_writer/linux_core_dumper.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/linux_core_dumper.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/linux_core_dumper.cc'; fi`
+
+src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.o: src/client/linux/minidump_writer/linux_core_dumper_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.o -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.o `test -f 'src/client/linux/minidump_writer/linux_core_dumper_unittest.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/linux_core_dumper_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/client/linux/minidump_writer/linux_core_dumper_unittest.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.o `test -f 'src/client/linux/minidump_writer/linux_core_dumper_unittest.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/linux_core_dumper_unittest.cc
+
+src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.obj: src/client/linux/minidump_writer/linux_core_dumper_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.obj -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.obj `if test -f 'src/client/linux/minidump_writer/linux_core_dumper_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/linux_core_dumper_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/linux_core_dumper_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/client/linux/minidump_writer/linux_core_dumper_unittest.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.obj `if test -f 'src/client/linux/minidump_writer/linux_core_dumper_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/linux_core_dumper_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/linux_core_dumper_unittest.cc'; fi`
+
+src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.o: src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.o -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.o `test -f 'src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.o `test -f 'src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc
+
+src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.obj: src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.obj -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.obj `if test -f 'src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.obj `if test -f 'src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc'; fi`
+
+src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.o: src/client/linux/minidump_writer/minidump_writer_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.o -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.o `test -f 'src/client/linux/minidump_writer/minidump_writer_unittest.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/minidump_writer_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/client/linux/minidump_writer/minidump_writer_unittest.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.o `test -f 'src/client/linux/minidump_writer/minidump_writer_unittest.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/minidump_writer_unittest.cc
+
+src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.obj: src/client/linux/minidump_writer/minidump_writer_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.obj -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.obj `if test -f 'src/client/linux/minidump_writer/minidump_writer_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/minidump_writer_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/minidump_writer_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/client/linux/minidump_writer/minidump_writer_unittest.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.obj `if test -f 'src/client/linux/minidump_writer/minidump_writer_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/minidump_writer_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/minidump_writer_unittest.cc'; fi`
+
+src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.o: src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.o -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.o `test -f 'src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.o `test -f 'src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc
+
+src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.obj: src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.obj -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.obj `if test -f 'src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.obj `if test -f 'src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc'; fi`
+
+src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.o: src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.o -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.o `test -f 'src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.o `test -f 'src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc
+
+src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.obj: src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.obj -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.obj `if test -f 'src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.obj `if test -f 'src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc'; fi`
+
+src/common/linux/src_client_linux_linux_client_unittest_shlib-elf_core_dump.o: src/common/linux/elf_core_dump.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_client_linux_linux_client_unittest_shlib-elf_core_dump.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-elf_core_dump.Tpo -c -o src/common/linux/src_client_linux_linux_client_unittest_shlib-elf_core_dump.o `test -f 'src/common/linux/elf_core_dump.cc' || echo '$(srcdir)/'`src/common/linux/elf_core_dump.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-elf_core_dump.Tpo src/common/linux/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-elf_core_dump.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/linux/elf_core_dump.cc' object='src/common/linux/src_client_linux_linux_client_unittest_shlib-elf_core_dump.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_client_linux_linux_client_unittest_shlib-elf_core_dump.o `test -f 'src/common/linux/elf_core_dump.cc' || echo '$(srcdir)/'`src/common/linux/elf_core_dump.cc
+
+src/common/linux/src_client_linux_linux_client_unittest_shlib-elf_core_dump.obj: src/common/linux/elf_core_dump.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_client_linux_linux_client_unittest_shlib-elf_core_dump.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-elf_core_dump.Tpo -c -o src/common/linux/src_client_linux_linux_client_unittest_shlib-elf_core_dump.obj `if test -f 'src/common/linux/elf_core_dump.cc'; then $(CYGPATH_W) 'src/common/linux/elf_core_dump.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/elf_core_dump.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-elf_core_dump.Tpo src/common/linux/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-elf_core_dump.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/linux/elf_core_dump.cc' object='src/common/linux/src_client_linux_linux_client_unittest_shlib-elf_core_dump.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_client_linux_linux_client_unittest_shlib-elf_core_dump.obj `if test -f 'src/common/linux/elf_core_dump.cc'; then $(CYGPATH_W) 'src/common/linux/elf_core_dump.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/elf_core_dump.cc'; fi`
+
+src/common/linux/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.o: src/common/linux/linux_libc_support_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.Tpo -c -o src/common/linux/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.o `test -f 'src/common/linux/linux_libc_support_unittest.cc' || echo '$(srcdir)/'`src/common/linux/linux_libc_support_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.Tpo src/common/linux/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/linux/linux_libc_support_unittest.cc' object='src/common/linux/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.o `test -f 'src/common/linux/linux_libc_support_unittest.cc' || echo '$(srcdir)/'`src/common/linux/linux_libc_support_unittest.cc
+
+src/common/linux/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.obj: src/common/linux/linux_libc_support_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.Tpo -c -o src/common/linux/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.obj `if test -f 'src/common/linux/linux_libc_support_unittest.cc'; then $(CYGPATH_W) 'src/common/linux/linux_libc_support_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/linux_libc_support_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.Tpo src/common/linux/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/linux/linux_libc_support_unittest.cc' object='src/common/linux/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.obj `if test -f 'src/common/linux/linux_libc_support_unittest.cc'; then $(CYGPATH_W) 'src/common/linux/linux_libc_support_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/linux_libc_support_unittest.cc'; fi`
+
+src/common/linux/tests/src_client_linux_linux_client_unittest_shlib-crash_generator.o: src/common/linux/tests/crash_generator.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/tests/src_client_linux_linux_client_unittest_shlib-crash_generator.o -MD -MP -MF src/common/linux/tests/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-crash_generator.Tpo -c -o src/common/linux/tests/src_client_linux_linux_client_unittest_shlib-crash_generator.o `test -f 'src/common/linux/tests/crash_generator.cc' || echo '$(srcdir)/'`src/common/linux/tests/crash_generator.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/linux/tests/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-crash_generator.Tpo src/common/linux/tests/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-crash_generator.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/linux/tests/crash_generator.cc' object='src/common/linux/tests/src_client_linux_linux_client_unittest_shlib-crash_generator.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/tests/src_client_linux_linux_client_unittest_shlib-crash_generator.o `test -f 'src/common/linux/tests/crash_generator.cc' || echo '$(srcdir)/'`src/common/linux/tests/crash_generator.cc
+
+src/common/linux/tests/src_client_linux_linux_client_unittest_shlib-crash_generator.obj: src/common/linux/tests/crash_generator.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/tests/src_client_linux_linux_client_unittest_shlib-crash_generator.obj -MD -MP -MF src/common/linux/tests/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-crash_generator.Tpo -c -o src/common/linux/tests/src_client_linux_linux_client_unittest_shlib-crash_generator.obj `if test -f 'src/common/linux/tests/crash_generator.cc'; then $(CYGPATH_W) 'src/common/linux/tests/crash_generator.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/tests/crash_generator.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/linux/tests/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-crash_generator.Tpo src/common/linux/tests/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-crash_generator.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/linux/tests/crash_generator.cc' object='src/common/linux/tests/src_client_linux_linux_client_unittest_shlib-crash_generator.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/tests/src_client_linux_linux_client_unittest_shlib-crash_generator.obj `if test -f 'src/common/linux/tests/crash_generator.cc'; then $(CYGPATH_W) 'src/common/linux/tests/crash_generator.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/tests/crash_generator.cc'; fi`
+
+src/common/src_client_linux_linux_client_unittest_shlib-memory_unittest.o: src/common/memory_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_client_linux_linux_client_unittest_shlib-memory_unittest.o -MD -MP -MF src/common/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-memory_unittest.Tpo -c -o src/common/src_client_linux_linux_client_unittest_shlib-memory_unittest.o `test -f 'src/common/memory_unittest.cc' || echo '$(srcdir)/'`src/common/memory_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-memory_unittest.Tpo src/common/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-memory_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/memory_unittest.cc' object='src/common/src_client_linux_linux_client_unittest_shlib-memory_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_client_linux_linux_client_unittest_shlib-memory_unittest.o `test -f 'src/common/memory_unittest.cc' || echo '$(srcdir)/'`src/common/memory_unittest.cc
+
+src/common/src_client_linux_linux_client_unittest_shlib-memory_unittest.obj: src/common/memory_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_client_linux_linux_client_unittest_shlib-memory_unittest.obj -MD -MP -MF src/common/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-memory_unittest.Tpo -c -o src/common/src_client_linux_linux_client_unittest_shlib-memory_unittest.obj `if test -f 'src/common/memory_unittest.cc'; then $(CYGPATH_W) 'src/common/memory_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/memory_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-memory_unittest.Tpo src/common/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-memory_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/memory_unittest.cc' object='src/common/src_client_linux_linux_client_unittest_shlib-memory_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_client_linux_linux_client_unittest_shlib-memory_unittest.obj `if test -f 'src/common/memory_unittest.cc'; then $(CYGPATH_W) 'src/common/memory_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/memory_unittest.cc'; fi`
+
+src/common/tests/src_client_linux_linux_client_unittest_shlib-file_utils.o: src/common/tests/file_utils.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/tests/src_client_linux_linux_client_unittest_shlib-file_utils.o -MD -MP -MF src/common/tests/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-file_utils.Tpo -c -o src/common/tests/src_client_linux_linux_client_unittest_shlib-file_utils.o `test -f 'src/common/tests/file_utils.cc' || echo '$(srcdir)/'`src/common/tests/file_utils.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/tests/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-file_utils.Tpo src/common/tests/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-file_utils.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/tests/file_utils.cc' object='src/common/tests/src_client_linux_linux_client_unittest_shlib-file_utils.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/tests/src_client_linux_linux_client_unittest_shlib-file_utils.o `test -f 'src/common/tests/file_utils.cc' || echo '$(srcdir)/'`src/common/tests/file_utils.cc
+
+src/common/tests/src_client_linux_linux_client_unittest_shlib-file_utils.obj: src/common/tests/file_utils.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/tests/src_client_linux_linux_client_unittest_shlib-file_utils.obj -MD -MP -MF src/common/tests/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-file_utils.Tpo -c -o src/common/tests/src_client_linux_linux_client_unittest_shlib-file_utils.obj `if test -f 'src/common/tests/file_utils.cc'; then $(CYGPATH_W) 'src/common/tests/file_utils.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/tests/file_utils.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/tests/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-file_utils.Tpo src/common/tests/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-file_utils.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/tests/file_utils.cc' object='src/common/tests/src_client_linux_linux_client_unittest_shlib-file_utils.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/tests/src_client_linux_linux_client_unittest_shlib-file_utils.obj `if test -f 'src/common/tests/file_utils.cc'; then $(CYGPATH_W) 'src/common/tests/file_utils.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/tests/file_utils.cc'; fi`
+
+src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest-all.o: src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest-all.o -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gtest-all.Tpo -c -o src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gtest-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest-all.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc
+
+src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest-all.obj: src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest-all.obj -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gtest-all.Tpo -c -o src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gtest-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest-all.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi`
+
+src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest_main.o: src/testing/gtest/src/gtest_main.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest_main.o -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gtest_main.Tpo -c -o src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest_main.o `test -f 'src/testing/gtest/src/gtest_main.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest_main.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gtest_main.Tpo src/testing/gtest/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gtest_main.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest_main.cc' object='src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest_main.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest_main.o `test -f 'src/testing/gtest/src/gtest_main.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest_main.cc
+
+src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest_main.obj: src/testing/gtest/src/gtest_main.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest_main.obj -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gtest_main.Tpo -c -o src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest_main.obj `if test -f 'src/testing/gtest/src/gtest_main.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest_main.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest_main.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gtest_main.Tpo src/testing/gtest/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gtest_main.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest_main.cc' object='src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest_main.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest_main.obj `if test -f 'src/testing/gtest/src/gtest_main.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest_main.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest_main.cc'; fi`
+
+src/testing/src/src_client_linux_linux_client_unittest_shlib-gmock-all.o: src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_client_linux_linux_client_unittest_shlib-gmock-all.o -MD -MP -MF src/testing/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gmock-all.Tpo -c -o src/testing/src/src_client_linux_linux_client_unittest_shlib-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gmock-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_client_linux_linux_client_unittest_shlib-gmock-all.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_client_linux_linux_client_unittest_shlib-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc
+
+src/testing/src/src_client_linux_linux_client_unittest_shlib-gmock-all.obj: src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_client_linux_linux_client_unittest_shlib-gmock-all.obj -MD -MP -MF src/testing/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gmock-all.Tpo -c -o src/testing/src/src_client_linux_linux_client_unittest_shlib-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gmock-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_client_linux_linux_client_unittest_shlib-gmock-all.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_client_linux_linux_client_unittest_shlib-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi`
+
+src/processor/src_client_linux_linux_client_unittest_shlib-basic_code_modules.o: src/processor/basic_code_modules.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_client_linux_linux_client_unittest_shlib-basic_code_modules.o -MD -MP -MF src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-basic_code_modules.Tpo -c -o src/processor/src_client_linux_linux_client_unittest_shlib-basic_code_modules.o `test -f 'src/processor/basic_code_modules.cc' || echo '$(srcdir)/'`src/processor/basic_code_modules.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-basic_code_modules.Tpo src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-basic_code_modules.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/basic_code_modules.cc' object='src/processor/src_client_linux_linux_client_unittest_shlib-basic_code_modules.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_client_linux_linux_client_unittest_shlib-basic_code_modules.o `test -f 'src/processor/basic_code_modules.cc' || echo '$(srcdir)/'`src/processor/basic_code_modules.cc
+
+src/processor/src_client_linux_linux_client_unittest_shlib-basic_code_modules.obj: src/processor/basic_code_modules.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_client_linux_linux_client_unittest_shlib-basic_code_modules.obj -MD -MP -MF src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-basic_code_modules.Tpo -c -o src/processor/src_client_linux_linux_client_unittest_shlib-basic_code_modules.obj `if test -f 'src/processor/basic_code_modules.cc'; then $(CYGPATH_W) 'src/processor/basic_code_modules.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/basic_code_modules.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-basic_code_modules.Tpo src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-basic_code_modules.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/basic_code_modules.cc' object='src/processor/src_client_linux_linux_client_unittest_shlib-basic_code_modules.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_client_linux_linux_client_unittest_shlib-basic_code_modules.obj `if test -f 'src/processor/basic_code_modules.cc'; then $(CYGPATH_W) 'src/processor/basic_code_modules.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/basic_code_modules.cc'; fi`
+
+src/processor/src_client_linux_linux_client_unittest_shlib-dump_context.o: src/processor/dump_context.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_client_linux_linux_client_unittest_shlib-dump_context.o -MD -MP -MF src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-dump_context.Tpo -c -o src/processor/src_client_linux_linux_client_unittest_shlib-dump_context.o `test -f 'src/processor/dump_context.cc' || echo '$(srcdir)/'`src/processor/dump_context.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-dump_context.Tpo src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-dump_context.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/dump_context.cc' object='src/processor/src_client_linux_linux_client_unittest_shlib-dump_context.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_client_linux_linux_client_unittest_shlib-dump_context.o `test -f 'src/processor/dump_context.cc' || echo '$(srcdir)/'`src/processor/dump_context.cc
+
+src/processor/src_client_linux_linux_client_unittest_shlib-dump_context.obj: src/processor/dump_context.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_client_linux_linux_client_unittest_shlib-dump_context.obj -MD -MP -MF src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-dump_context.Tpo -c -o src/processor/src_client_linux_linux_client_unittest_shlib-dump_context.obj `if test -f 'src/processor/dump_context.cc'; then $(CYGPATH_W) 'src/processor/dump_context.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/dump_context.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-dump_context.Tpo src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-dump_context.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/dump_context.cc' object='src/processor/src_client_linux_linux_client_unittest_shlib-dump_context.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_client_linux_linux_client_unittest_shlib-dump_context.obj `if test -f 'src/processor/dump_context.cc'; then $(CYGPATH_W) 'src/processor/dump_context.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/dump_context.cc'; fi`
+
+src/processor/src_client_linux_linux_client_unittest_shlib-dump_object.o: src/processor/dump_object.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_client_linux_linux_client_unittest_shlib-dump_object.o -MD -MP -MF src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-dump_object.Tpo -c -o src/processor/src_client_linux_linux_client_unittest_shlib-dump_object.o `test -f 'src/processor/dump_object.cc' || echo '$(srcdir)/'`src/processor/dump_object.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-dump_object.Tpo src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-dump_object.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/dump_object.cc' object='src/processor/src_client_linux_linux_client_unittest_shlib-dump_object.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_client_linux_linux_client_unittest_shlib-dump_object.o `test -f 'src/processor/dump_object.cc' || echo '$(srcdir)/'`src/processor/dump_object.cc
+
+src/processor/src_client_linux_linux_client_unittest_shlib-dump_object.obj: src/processor/dump_object.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_client_linux_linux_client_unittest_shlib-dump_object.obj -MD -MP -MF src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-dump_object.Tpo -c -o src/processor/src_client_linux_linux_client_unittest_shlib-dump_object.obj `if test -f 'src/processor/dump_object.cc'; then $(CYGPATH_W) 'src/processor/dump_object.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/dump_object.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-dump_object.Tpo src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-dump_object.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/dump_object.cc' object='src/processor/src_client_linux_linux_client_unittest_shlib-dump_object.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_client_linux_linux_client_unittest_shlib-dump_object.obj `if test -f 'src/processor/dump_object.cc'; then $(CYGPATH_W) 'src/processor/dump_object.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/dump_object.cc'; fi`
+
+src/processor/src_client_linux_linux_client_unittest_shlib-logging.o: src/processor/logging.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_client_linux_linux_client_unittest_shlib-logging.o -MD -MP -MF src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-logging.Tpo -c -o src/processor/src_client_linux_linux_client_unittest_shlib-logging.o `test -f 'src/processor/logging.cc' || echo '$(srcdir)/'`src/processor/logging.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-logging.Tpo src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-logging.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/logging.cc' object='src/processor/src_client_linux_linux_client_unittest_shlib-logging.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_client_linux_linux_client_unittest_shlib-logging.o `test -f 'src/processor/logging.cc' || echo '$(srcdir)/'`src/processor/logging.cc
+
+src/processor/src_client_linux_linux_client_unittest_shlib-logging.obj: src/processor/logging.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_client_linux_linux_client_unittest_shlib-logging.obj -MD -MP -MF src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-logging.Tpo -c -o src/processor/src_client_linux_linux_client_unittest_shlib-logging.obj `if test -f 'src/processor/logging.cc'; then $(CYGPATH_W) 'src/processor/logging.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/logging.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-logging.Tpo src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-logging.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/logging.cc' object='src/processor/src_client_linux_linux_client_unittest_shlib-logging.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_client_linux_linux_client_unittest_shlib-logging.obj `if test -f 'src/processor/logging.cc'; then $(CYGPATH_W) 'src/processor/logging.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/logging.cc'; fi`
+
+src/processor/src_client_linux_linux_client_unittest_shlib-minidump.o: src/processor/minidump.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_client_linux_linux_client_unittest_shlib-minidump.o -MD -MP -MF src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump.Tpo -c -o src/processor/src_client_linux_linux_client_unittest_shlib-minidump.o `test -f 'src/processor/minidump.cc' || echo '$(srcdir)/'`src/processor/minidump.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump.Tpo src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/minidump.cc' object='src/processor/src_client_linux_linux_client_unittest_shlib-minidump.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_client_linux_linux_client_unittest_shlib-minidump.o `test -f 'src/processor/minidump.cc' || echo '$(srcdir)/'`src/processor/minidump.cc
+
+src/processor/src_client_linux_linux_client_unittest_shlib-minidump.obj: src/processor/minidump.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_client_linux_linux_client_unittest_shlib-minidump.obj -MD -MP -MF src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump.Tpo -c -o src/processor/src_client_linux_linux_client_unittest_shlib-minidump.obj `if test -f 'src/processor/minidump.cc'; then $(CYGPATH_W) 'src/processor/minidump.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/minidump.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump.Tpo src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/minidump.cc' object='src/processor/src_client_linux_linux_client_unittest_shlib-minidump.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_client_linux_linux_client_unittest_shlib-minidump.obj `if test -f 'src/processor/minidump.cc'; then $(CYGPATH_W) 'src/processor/minidump.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/minidump.cc'; fi`
+
+src/processor/src_client_linux_linux_client_unittest_shlib-pathname_stripper.o: src/processor/pathname_stripper.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_client_linux_linux_client_unittest_shlib-pathname_stripper.o -MD -MP -MF src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-pathname_stripper.Tpo -c -o src/processor/src_client_linux_linux_client_unittest_shlib-pathname_stripper.o `test -f 'src/processor/pathname_stripper.cc' || echo '$(srcdir)/'`src/processor/pathname_stripper.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-pathname_stripper.Tpo src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-pathname_stripper.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/pathname_stripper.cc' object='src/processor/src_client_linux_linux_client_unittest_shlib-pathname_stripper.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_client_linux_linux_client_unittest_shlib-pathname_stripper.o `test -f 'src/processor/pathname_stripper.cc' || echo '$(srcdir)/'`src/processor/pathname_stripper.cc
+
+src/processor/src_client_linux_linux_client_unittest_shlib-pathname_stripper.obj: src/processor/pathname_stripper.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_client_linux_linux_client_unittest_shlib-pathname_stripper.obj -MD -MP -MF src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-pathname_stripper.Tpo -c -o src/processor/src_client_linux_linux_client_unittest_shlib-pathname_stripper.obj `if test -f 'src/processor/pathname_stripper.cc'; then $(CYGPATH_W) 'src/processor/pathname_stripper.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/pathname_stripper.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-pathname_stripper.Tpo src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-pathname_stripper.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/pathname_stripper.cc' object='src/processor/src_client_linux_linux_client_unittest_shlib-pathname_stripper.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_client_linux_linux_client_unittest_shlib-pathname_stripper.obj `if test -f 'src/processor/pathname_stripper.cc'; then $(CYGPATH_W) 'src/processor/pathname_stripper.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/pathname_stripper.cc'; fi`
+
+src/client/linux/microdump_writer/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.o: src/client/linux/microdump_writer/microdump_writer_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/microdump_writer/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.o -MD -MP -MF src/client/linux/microdump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.Tpo -c -o src/client/linux/microdump_writer/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.o `test -f 'src/client/linux/microdump_writer/microdump_writer_unittest.cc' || echo '$(srcdir)/'`src/client/linux/microdump_writer/microdump_writer_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/client/linux/microdump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.Tpo src/client/linux/microdump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/client/linux/microdump_writer/microdump_writer_unittest.cc' object='src/client/linux/microdump_writer/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/microdump_writer/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.o `test -f 'src/client/linux/microdump_writer/microdump_writer_unittest.cc' || echo '$(srcdir)/'`src/client/linux/microdump_writer/microdump_writer_unittest.cc
+
+src/client/linux/microdump_writer/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.obj: src/client/linux/microdump_writer/microdump_writer_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/microdump_writer/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.obj -MD -MP -MF src/client/linux/microdump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.Tpo -c -o src/client/linux/microdump_writer/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.obj `if test -f 'src/client/linux/microdump_writer/microdump_writer_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/microdump_writer/microdump_writer_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/microdump_writer/microdump_writer_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/client/linux/microdump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.Tpo src/client/linux/microdump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/client/linux/microdump_writer/microdump_writer_unittest.cc' object='src/client/linux/microdump_writer/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/microdump_writer/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.obj `if test -f 'src/client/linux/microdump_writer/microdump_writer_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/microdump_writer/microdump_writer_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/microdump_writer/microdump_writer_unittest.cc'; fi`
+
+src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.o: src/common/android/breakpad_getcontext_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.o -MD -MP -MF src/common/android/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.Tpo -c -o src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.o `test -f 'src/common/android/breakpad_getcontext_unittest.cc' || echo '$(srcdir)/'`src/common/android/breakpad_getcontext_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/android/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.Tpo src/common/android/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/android/breakpad_getcontext_unittest.cc' object='src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.o `test -f 'src/common/android/breakpad_getcontext_unittest.cc' || echo '$(srcdir)/'`src/common/android/breakpad_getcontext_unittest.cc
+
+src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.obj: src/common/android/breakpad_getcontext_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.obj -MD -MP -MF src/common/android/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.Tpo -c -o src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.obj `if test -f 'src/common/android/breakpad_getcontext_unittest.cc'; then $(CYGPATH_W) 'src/common/android/breakpad_getcontext_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/android/breakpad_getcontext_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/android/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.Tpo src/common/android/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/android/breakpad_getcontext_unittest.cc' object='src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.obj `if test -f 'src/common/android/breakpad_getcontext_unittest.cc'; then $(CYGPATH_W) 'src/common/android/breakpad_getcontext_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/android/breakpad_getcontext_unittest.cc'; fi`
+
+src/client/linux/minidump_writer/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.o: src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_client_linux_linux_dumper_unittest_helper_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.o -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.o `test -f 'src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_client_linux_linux_dumper_unittest_helper_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.o `test -f 'src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc
+
+src/client/linux/minidump_writer/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.obj: src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_client_linux_linux_dumper_unittest_helper_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.obj -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.obj `if test -f 'src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_client_linux_linux_dumper_unittest_helper_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.obj `if test -f 'src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc'; fi`
+
+src/common/src_common_dumper_unittest-byte_cursor_unittest.o: src/common/byte_cursor_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-byte_cursor_unittest.o -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-byte_cursor_unittest.Tpo -c -o src/common/src_common_dumper_unittest-byte_cursor_unittest.o `test -f 'src/common/byte_cursor_unittest.cc' || echo '$(srcdir)/'`src/common/byte_cursor_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-byte_cursor_unittest.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-byte_cursor_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/byte_cursor_unittest.cc' object='src/common/src_common_dumper_unittest-byte_cursor_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-byte_cursor_unittest.o `test -f 'src/common/byte_cursor_unittest.cc' || echo '$(srcdir)/'`src/common/byte_cursor_unittest.cc
+
+src/common/src_common_dumper_unittest-byte_cursor_unittest.obj: src/common/byte_cursor_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-byte_cursor_unittest.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-byte_cursor_unittest.Tpo -c -o src/common/src_common_dumper_unittest-byte_cursor_unittest.obj `if test -f 'src/common/byte_cursor_unittest.cc'; then $(CYGPATH_W) 'src/common/byte_cursor_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/byte_cursor_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-byte_cursor_unittest.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-byte_cursor_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/byte_cursor_unittest.cc' object='src/common/src_common_dumper_unittest-byte_cursor_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-byte_cursor_unittest.obj `if test -f 'src/common/byte_cursor_unittest.cc'; then $(CYGPATH_W) 'src/common/byte_cursor_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/byte_cursor_unittest.cc'; fi`
+
+src/common/src_common_dumper_unittest-dwarf_cfi_to_module.o: src/common/dwarf_cfi_to_module.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-dwarf_cfi_to_module.o -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cfi_to_module.Tpo -c -o src/common/src_common_dumper_unittest-dwarf_cfi_to_module.o `test -f 'src/common/dwarf_cfi_to_module.cc' || echo '$(srcdir)/'`src/common/dwarf_cfi_to_module.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cfi_to_module.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cfi_to_module.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/dwarf_cfi_to_module.cc' object='src/common/src_common_dumper_unittest-dwarf_cfi_to_module.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-dwarf_cfi_to_module.o `test -f 'src/common/dwarf_cfi_to_module.cc' || echo '$(srcdir)/'`src/common/dwarf_cfi_to_module.cc
+
+src/common/src_common_dumper_unittest-dwarf_cfi_to_module.obj: src/common/dwarf_cfi_to_module.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-dwarf_cfi_to_module.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cfi_to_module.Tpo -c -o src/common/src_common_dumper_unittest-dwarf_cfi_to_module.obj `if test -f 'src/common/dwarf_cfi_to_module.cc'; then $(CYGPATH_W) 'src/common/dwarf_cfi_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_cfi_to_module.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cfi_to_module.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cfi_to_module.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/dwarf_cfi_to_module.cc' object='src/common/src_common_dumper_unittest-dwarf_cfi_to_module.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-dwarf_cfi_to_module.obj `if test -f 'src/common/dwarf_cfi_to_module.cc'; then $(CYGPATH_W) 'src/common/dwarf_cfi_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_cfi_to_module.cc'; fi`
+
+src/common/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.o: src/common/dwarf_cfi_to_module_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.o -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.Tpo -c -o src/common/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.o `test -f 'src/common/dwarf_cfi_to_module_unittest.cc' || echo '$(srcdir)/'`src/common/dwarf_cfi_to_module_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/dwarf_cfi_to_module_unittest.cc' object='src/common/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.o `test -f 'src/common/dwarf_cfi_to_module_unittest.cc' || echo '$(srcdir)/'`src/common/dwarf_cfi_to_module_unittest.cc
+
+src/common/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.obj: src/common/dwarf_cfi_to_module_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.Tpo -c -o src/common/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.obj `if test -f 'src/common/dwarf_cfi_to_module_unittest.cc'; then $(CYGPATH_W) 'src/common/dwarf_cfi_to_module_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_cfi_to_module_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/dwarf_cfi_to_module_unittest.cc' object='src/common/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.obj `if test -f 'src/common/dwarf_cfi_to_module_unittest.cc'; then $(CYGPATH_W) 'src/common/dwarf_cfi_to_module_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_cfi_to_module_unittest.cc'; fi`
+
+src/common/src_common_dumper_unittest-dwarf_cu_to_module.o: src/common/dwarf_cu_to_module.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-dwarf_cu_to_module.o -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cu_to_module.Tpo -c -o src/common/src_common_dumper_unittest-dwarf_cu_to_module.o `test -f 'src/common/dwarf_cu_to_module.cc' || echo '$(srcdir)/'`src/common/dwarf_cu_to_module.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cu_to_module.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cu_to_module.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/dwarf_cu_to_module.cc' object='src/common/src_common_dumper_unittest-dwarf_cu_to_module.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-dwarf_cu_to_module.o `test -f 'src/common/dwarf_cu_to_module.cc' || echo '$(srcdir)/'`src/common/dwarf_cu_to_module.cc
+
+src/common/src_common_dumper_unittest-dwarf_cu_to_module.obj: src/common/dwarf_cu_to_module.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-dwarf_cu_to_module.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cu_to_module.Tpo -c -o src/common/src_common_dumper_unittest-dwarf_cu_to_module.obj `if test -f 'src/common/dwarf_cu_to_module.cc'; then $(CYGPATH_W) 'src/common/dwarf_cu_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_cu_to_module.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cu_to_module.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cu_to_module.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/dwarf_cu_to_module.cc' object='src/common/src_common_dumper_unittest-dwarf_cu_to_module.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-dwarf_cu_to_module.obj `if test -f 'src/common/dwarf_cu_to_module.cc'; then $(CYGPATH_W) 'src/common/dwarf_cu_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_cu_to_module.cc'; fi`
+
+src/common/src_common_dumper_unittest-dwarf_cu_to_module_unittest.o: src/common/dwarf_cu_to_module_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-dwarf_cu_to_module_unittest.o -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cu_to_module_unittest.Tpo -c -o src/common/src_common_dumper_unittest-dwarf_cu_to_module_unittest.o `test -f 'src/common/dwarf_cu_to_module_unittest.cc' || echo '$(srcdir)/'`src/common/dwarf_cu_to_module_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cu_to_module_unittest.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cu_to_module_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/dwarf_cu_to_module_unittest.cc' object='src/common/src_common_dumper_unittest-dwarf_cu_to_module_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-dwarf_cu_to_module_unittest.o `test -f 'src/common/dwarf_cu_to_module_unittest.cc' || echo '$(srcdir)/'`src/common/dwarf_cu_to_module_unittest.cc
+
+src/common/src_common_dumper_unittest-dwarf_cu_to_module_unittest.obj: src/common/dwarf_cu_to_module_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-dwarf_cu_to_module_unittest.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cu_to_module_unittest.Tpo -c -o src/common/src_common_dumper_unittest-dwarf_cu_to_module_unittest.obj `if test -f 'src/common/dwarf_cu_to_module_unittest.cc'; then $(CYGPATH_W) 'src/common/dwarf_cu_to_module_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_cu_to_module_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cu_to_module_unittest.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cu_to_module_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/dwarf_cu_to_module_unittest.cc' object='src/common/src_common_dumper_unittest-dwarf_cu_to_module_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-dwarf_cu_to_module_unittest.obj `if test -f 'src/common/dwarf_cu_to_module_unittest.cc'; then $(CYGPATH_W) 'src/common/dwarf_cu_to_module_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_cu_to_module_unittest.cc'; fi`
+
+src/common/src_common_dumper_unittest-dwarf_line_to_module.o: src/common/dwarf_line_to_module.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-dwarf_line_to_module.o -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_line_to_module.Tpo -c -o src/common/src_common_dumper_unittest-dwarf_line_to_module.o `test -f 'src/common/dwarf_line_to_module.cc' || echo '$(srcdir)/'`src/common/dwarf_line_to_module.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_line_to_module.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_line_to_module.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/dwarf_line_to_module.cc' object='src/common/src_common_dumper_unittest-dwarf_line_to_module.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-dwarf_line_to_module.o `test -f 'src/common/dwarf_line_to_module.cc' || echo '$(srcdir)/'`src/common/dwarf_line_to_module.cc
+
+src/common/src_common_dumper_unittest-dwarf_line_to_module.obj: src/common/dwarf_line_to_module.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-dwarf_line_to_module.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_line_to_module.Tpo -c -o src/common/src_common_dumper_unittest-dwarf_line_to_module.obj `if test -f 'src/common/dwarf_line_to_module.cc'; then $(CYGPATH_W) 'src/common/dwarf_line_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_line_to_module.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_line_to_module.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_line_to_module.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/dwarf_line_to_module.cc' object='src/common/src_common_dumper_unittest-dwarf_line_to_module.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-dwarf_line_to_module.obj `if test -f 'src/common/dwarf_line_to_module.cc'; then $(CYGPATH_W) 'src/common/dwarf_line_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_line_to_module.cc'; fi`
+
+src/common/src_common_dumper_unittest-dwarf_line_to_module_unittest.o: src/common/dwarf_line_to_module_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-dwarf_line_to_module_unittest.o -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_line_to_module_unittest.Tpo -c -o src/common/src_common_dumper_unittest-dwarf_line_to_module_unittest.o `test -f 'src/common/dwarf_line_to_module_unittest.cc' || echo '$(srcdir)/'`src/common/dwarf_line_to_module_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_line_to_module_unittest.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_line_to_module_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/dwarf_line_to_module_unittest.cc' object='src/common/src_common_dumper_unittest-dwarf_line_to_module_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-dwarf_line_to_module_unittest.o `test -f 'src/common/dwarf_line_to_module_unittest.cc' || echo '$(srcdir)/'`src/common/dwarf_line_to_module_unittest.cc
+
+src/common/src_common_dumper_unittest-dwarf_line_to_module_unittest.obj: src/common/dwarf_line_to_module_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-dwarf_line_to_module_unittest.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_line_to_module_unittest.Tpo -c -o src/common/src_common_dumper_unittest-dwarf_line_to_module_unittest.obj `if test -f 'src/common/dwarf_line_to_module_unittest.cc'; then $(CYGPATH_W) 'src/common/dwarf_line_to_module_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_line_to_module_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_line_to_module_unittest.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_line_to_module_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/dwarf_line_to_module_unittest.cc' object='src/common/src_common_dumper_unittest-dwarf_line_to_module_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-dwarf_line_to_module_unittest.obj `if test -f 'src/common/dwarf_line_to_module_unittest.cc'; then $(CYGPATH_W) 'src/common/dwarf_line_to_module_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_line_to_module_unittest.cc'; fi`
+
+src/common/src_common_dumper_unittest-language.o: src/common/language.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-language.o -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-language.Tpo -c -o src/common/src_common_dumper_unittest-language.o `test -f 'src/common/language.cc' || echo '$(srcdir)/'`src/common/language.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-language.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-language.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/language.cc' object='src/common/src_common_dumper_unittest-language.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-language.o `test -f 'src/common/language.cc' || echo '$(srcdir)/'`src/common/language.cc
+
+src/common/src_common_dumper_unittest-language.obj: src/common/language.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-language.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-language.Tpo -c -o src/common/src_common_dumper_unittest-language.obj `if test -f 'src/common/language.cc'; then $(CYGPATH_W) 'src/common/language.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/language.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-language.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-language.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/language.cc' object='src/common/src_common_dumper_unittest-language.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-language.obj `if test -f 'src/common/language.cc'; then $(CYGPATH_W) 'src/common/language.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/language.cc'; fi`
+
+src/common/src_common_dumper_unittest-memory_range_unittest.o: src/common/memory_range_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-memory_range_unittest.o -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-memory_range_unittest.Tpo -c -o src/common/src_common_dumper_unittest-memory_range_unittest.o `test -f 'src/common/memory_range_unittest.cc' || echo '$(srcdir)/'`src/common/memory_range_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-memory_range_unittest.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-memory_range_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/memory_range_unittest.cc' object='src/common/src_common_dumper_unittest-memory_range_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-memory_range_unittest.o `test -f 'src/common/memory_range_unittest.cc' || echo '$(srcdir)/'`src/common/memory_range_unittest.cc
+
+src/common/src_common_dumper_unittest-memory_range_unittest.obj: src/common/memory_range_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-memory_range_unittest.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-memory_range_unittest.Tpo -c -o src/common/src_common_dumper_unittest-memory_range_unittest.obj `if test -f 'src/common/memory_range_unittest.cc'; then $(CYGPATH_W) 'src/common/memory_range_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/memory_range_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-memory_range_unittest.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-memory_range_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/memory_range_unittest.cc' object='src/common/src_common_dumper_unittest-memory_range_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-memory_range_unittest.obj `if test -f 'src/common/memory_range_unittest.cc'; then $(CYGPATH_W) 'src/common/memory_range_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/memory_range_unittest.cc'; fi`
+
+src/common/src_common_dumper_unittest-module.o: src/common/module.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-module.o -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-module.Tpo -c -o src/common/src_common_dumper_unittest-module.o `test -f 'src/common/module.cc' || echo '$(srcdir)/'`src/common/module.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-module.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-module.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/module.cc' object='src/common/src_common_dumper_unittest-module.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-module.o `test -f 'src/common/module.cc' || echo '$(srcdir)/'`src/common/module.cc
+
+src/common/src_common_dumper_unittest-module.obj: src/common/module.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-module.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-module.Tpo -c -o src/common/src_common_dumper_unittest-module.obj `if test -f 'src/common/module.cc'; then $(CYGPATH_W) 'src/common/module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/module.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-module.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-module.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/module.cc' object='src/common/src_common_dumper_unittest-module.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-module.obj `if test -f 'src/common/module.cc'; then $(CYGPATH_W) 'src/common/module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/module.cc'; fi`
+
+src/common/src_common_dumper_unittest-module_unittest.o: src/common/module_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-module_unittest.o -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-module_unittest.Tpo -c -o src/common/src_common_dumper_unittest-module_unittest.o `test -f 'src/common/module_unittest.cc' || echo '$(srcdir)/'`src/common/module_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-module_unittest.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-module_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/module_unittest.cc' object='src/common/src_common_dumper_unittest-module_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-module_unittest.o `test -f 'src/common/module_unittest.cc' || echo '$(srcdir)/'`src/common/module_unittest.cc
+
+src/common/src_common_dumper_unittest-module_unittest.obj: src/common/module_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-module_unittest.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-module_unittest.Tpo -c -o src/common/src_common_dumper_unittest-module_unittest.obj `if test -f 'src/common/module_unittest.cc'; then $(CYGPATH_W) 'src/common/module_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/module_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-module_unittest.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-module_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/module_unittest.cc' object='src/common/src_common_dumper_unittest-module_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-module_unittest.obj `if test -f 'src/common/module_unittest.cc'; then $(CYGPATH_W) 'src/common/module_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/module_unittest.cc'; fi`
+
+src/common/src_common_dumper_unittest-stabs_reader.o: src/common/stabs_reader.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-stabs_reader.o -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_reader.Tpo -c -o src/common/src_common_dumper_unittest-stabs_reader.o `test -f 'src/common/stabs_reader.cc' || echo '$(srcdir)/'`src/common/stabs_reader.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_reader.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_reader.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/stabs_reader.cc' object='src/common/src_common_dumper_unittest-stabs_reader.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-stabs_reader.o `test -f 'src/common/stabs_reader.cc' || echo '$(srcdir)/'`src/common/stabs_reader.cc
+
+src/common/src_common_dumper_unittest-stabs_reader.obj: src/common/stabs_reader.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-stabs_reader.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_reader.Tpo -c -o src/common/src_common_dumper_unittest-stabs_reader.obj `if test -f 'src/common/stabs_reader.cc'; then $(CYGPATH_W) 'src/common/stabs_reader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/stabs_reader.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_reader.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_reader.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/stabs_reader.cc' object='src/common/src_common_dumper_unittest-stabs_reader.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-stabs_reader.obj `if test -f 'src/common/stabs_reader.cc'; then $(CYGPATH_W) 'src/common/stabs_reader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/stabs_reader.cc'; fi`
+
+src/common/src_common_dumper_unittest-stabs_reader_unittest.o: src/common/stabs_reader_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-stabs_reader_unittest.o -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_reader_unittest.Tpo -c -o src/common/src_common_dumper_unittest-stabs_reader_unittest.o `test -f 'src/common/stabs_reader_unittest.cc' || echo '$(srcdir)/'`src/common/stabs_reader_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_reader_unittest.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_reader_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/stabs_reader_unittest.cc' object='src/common/src_common_dumper_unittest-stabs_reader_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-stabs_reader_unittest.o `test -f 'src/common/stabs_reader_unittest.cc' || echo '$(srcdir)/'`src/common/stabs_reader_unittest.cc
+
+src/common/src_common_dumper_unittest-stabs_reader_unittest.obj: src/common/stabs_reader_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-stabs_reader_unittest.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_reader_unittest.Tpo -c -o src/common/src_common_dumper_unittest-stabs_reader_unittest.obj `if test -f 'src/common/stabs_reader_unittest.cc'; then $(CYGPATH_W) 'src/common/stabs_reader_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/stabs_reader_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_reader_unittest.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_reader_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/stabs_reader_unittest.cc' object='src/common/src_common_dumper_unittest-stabs_reader_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-stabs_reader_unittest.obj `if test -f 'src/common/stabs_reader_unittest.cc'; then $(CYGPATH_W) 'src/common/stabs_reader_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/stabs_reader_unittest.cc'; fi`
+
+src/common/src_common_dumper_unittest-stabs_to_module.o: src/common/stabs_to_module.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-stabs_to_module.o -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_to_module.Tpo -c -o src/common/src_common_dumper_unittest-stabs_to_module.o `test -f 'src/common/stabs_to_module.cc' || echo '$(srcdir)/'`src/common/stabs_to_module.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_to_module.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_to_module.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/stabs_to_module.cc' object='src/common/src_common_dumper_unittest-stabs_to_module.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-stabs_to_module.o `test -f 'src/common/stabs_to_module.cc' || echo '$(srcdir)/'`src/common/stabs_to_module.cc
+
+src/common/src_common_dumper_unittest-stabs_to_module.obj: src/common/stabs_to_module.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-stabs_to_module.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_to_module.Tpo -c -o src/common/src_common_dumper_unittest-stabs_to_module.obj `if test -f 'src/common/stabs_to_module.cc'; then $(CYGPATH_W) 'src/common/stabs_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/stabs_to_module.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_to_module.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_to_module.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/stabs_to_module.cc' object='src/common/src_common_dumper_unittest-stabs_to_module.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-stabs_to_module.obj `if test -f 'src/common/stabs_to_module.cc'; then $(CYGPATH_W) 'src/common/stabs_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/stabs_to_module.cc'; fi`
+
+src/common/src_common_dumper_unittest-stabs_to_module_unittest.o: src/common/stabs_to_module_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-stabs_to_module_unittest.o -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_to_module_unittest.Tpo -c -o src/common/src_common_dumper_unittest-stabs_to_module_unittest.o `test -f 'src/common/stabs_to_module_unittest.cc' || echo '$(srcdir)/'`src/common/stabs_to_module_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_to_module_unittest.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_to_module_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/stabs_to_module_unittest.cc' object='src/common/src_common_dumper_unittest-stabs_to_module_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-stabs_to_module_unittest.o `test -f 'src/common/stabs_to_module_unittest.cc' || echo '$(srcdir)/'`src/common/stabs_to_module_unittest.cc
+
+src/common/src_common_dumper_unittest-stabs_to_module_unittest.obj: src/common/stabs_to_module_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-stabs_to_module_unittest.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_to_module_unittest.Tpo -c -o src/common/src_common_dumper_unittest-stabs_to_module_unittest.obj `if test -f 'src/common/stabs_to_module_unittest.cc'; then $(CYGPATH_W) 'src/common/stabs_to_module_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/stabs_to_module_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_to_module_unittest.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_to_module_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/stabs_to_module_unittest.cc' object='src/common/src_common_dumper_unittest-stabs_to_module_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-stabs_to_module_unittest.obj `if test -f 'src/common/stabs_to_module_unittest.cc'; then $(CYGPATH_W) 'src/common/stabs_to_module_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/stabs_to_module_unittest.cc'; fi`
+
+src/common/src_common_dumper_unittest-test_assembler.o: src/common/test_assembler.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-test_assembler.o -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-test_assembler.Tpo -c -o src/common/src_common_dumper_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-test_assembler.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_common_dumper_unittest-test_assembler.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc
+
+src/common/src_common_dumper_unittest-test_assembler.obj: src/common/test_assembler.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-test_assembler.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-test_assembler.Tpo -c -o src/common/src_common_dumper_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-test_assembler.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_common_dumper_unittest-test_assembler.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi`
+
+src/common/dwarf/src_common_dumper_unittest-bytereader.o: src/common/dwarf/bytereader.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_dumper_unittest-bytereader.o -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-bytereader.Tpo -c -o src/common/dwarf/src_common_dumper_unittest-bytereader.o `test -f 'src/common/dwarf/bytereader.cc' || echo '$(srcdir)/'`src/common/dwarf/bytereader.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-bytereader.Tpo src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-bytereader.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/dwarf/bytereader.cc' object='src/common/dwarf/src_common_dumper_unittest-bytereader.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_dumper_unittest-bytereader.o `test -f 'src/common/dwarf/bytereader.cc' || echo '$(srcdir)/'`src/common/dwarf/bytereader.cc
+
+src/common/dwarf/src_common_dumper_unittest-bytereader.obj: src/common/dwarf/bytereader.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_dumper_unittest-bytereader.obj -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-bytereader.Tpo -c -o src/common/dwarf/src_common_dumper_unittest-bytereader.obj `if test -f 'src/common/dwarf/bytereader.cc'; then $(CYGPATH_W) 'src/common/dwarf/bytereader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/bytereader.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-bytereader.Tpo src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-bytereader.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/dwarf/bytereader.cc' object='src/common/dwarf/src_common_dumper_unittest-bytereader.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_dumper_unittest-bytereader.obj `if test -f 'src/common/dwarf/bytereader.cc'; then $(CYGPATH_W) 'src/common/dwarf/bytereader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/bytereader.cc'; fi`
+
+src/common/dwarf/src_common_dumper_unittest-bytereader_unittest.o: src/common/dwarf/bytereader_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_dumper_unittest-bytereader_unittest.o -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-bytereader_unittest.Tpo -c -o src/common/dwarf/src_common_dumper_unittest-bytereader_unittest.o `test -f 'src/common/dwarf/bytereader_unittest.cc' || echo '$(srcdir)/'`src/common/dwarf/bytereader_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-bytereader_unittest.Tpo src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-bytereader_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/dwarf/bytereader_unittest.cc' object='src/common/dwarf/src_common_dumper_unittest-bytereader_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_dumper_unittest-bytereader_unittest.o `test -f 'src/common/dwarf/bytereader_unittest.cc' || echo '$(srcdir)/'`src/common/dwarf/bytereader_unittest.cc
+
+src/common/dwarf/src_common_dumper_unittest-bytereader_unittest.obj: src/common/dwarf/bytereader_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_dumper_unittest-bytereader_unittest.obj -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-bytereader_unittest.Tpo -c -o src/common/dwarf/src_common_dumper_unittest-bytereader_unittest.obj `if test -f 'src/common/dwarf/bytereader_unittest.cc'; then $(CYGPATH_W) 'src/common/dwarf/bytereader_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/bytereader_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-bytereader_unittest.Tpo src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-bytereader_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/dwarf/bytereader_unittest.cc' object='src/common/dwarf/src_common_dumper_unittest-bytereader_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_dumper_unittest-bytereader_unittest.obj `if test -f 'src/common/dwarf/bytereader_unittest.cc'; then $(CYGPATH_W) 'src/common/dwarf/bytereader_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/bytereader_unittest.cc'; fi`
+
+src/common/dwarf/src_common_dumper_unittest-cfi_assembler.o: src/common/dwarf/cfi_assembler.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_dumper_unittest-cfi_assembler.o -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-cfi_assembler.Tpo -c -o src/common/dwarf/src_common_dumper_unittest-cfi_assembler.o `test -f 'src/common/dwarf/cfi_assembler.cc' || echo '$(srcdir)/'`src/common/dwarf/cfi_assembler.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-cfi_assembler.Tpo src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-cfi_assembler.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/dwarf/cfi_assembler.cc' object='src/common/dwarf/src_common_dumper_unittest-cfi_assembler.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_dumper_unittest-cfi_assembler.o `test -f 'src/common/dwarf/cfi_assembler.cc' || echo '$(srcdir)/'`src/common/dwarf/cfi_assembler.cc
+
+src/common/dwarf/src_common_dumper_unittest-cfi_assembler.obj: src/common/dwarf/cfi_assembler.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_dumper_unittest-cfi_assembler.obj -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-cfi_assembler.Tpo -c -o src/common/dwarf/src_common_dumper_unittest-cfi_assembler.obj `if test -f 'src/common/dwarf/cfi_assembler.cc'; then $(CYGPATH_W) 'src/common/dwarf/cfi_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/cfi_assembler.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-cfi_assembler.Tpo src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-cfi_assembler.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/dwarf/cfi_assembler.cc' object='src/common/dwarf/src_common_dumper_unittest-cfi_assembler.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_dumper_unittest-cfi_assembler.obj `if test -f 'src/common/dwarf/cfi_assembler.cc'; then $(CYGPATH_W) 'src/common/dwarf/cfi_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/cfi_assembler.cc'; fi`
+
+src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler.o: src/common/dwarf/dwarf2diehandler.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler.o -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2diehandler.Tpo -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler.o `test -f 'src/common/dwarf/dwarf2diehandler.cc' || echo '$(srcdir)/'`src/common/dwarf/dwarf2diehandler.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2diehandler.Tpo src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2diehandler.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/dwarf/dwarf2diehandler.cc' object='src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler.o `test -f 'src/common/dwarf/dwarf2diehandler.cc' || echo '$(srcdir)/'`src/common/dwarf/dwarf2diehandler.cc
+
+src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler.obj: src/common/dwarf/dwarf2diehandler.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler.obj -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2diehandler.Tpo -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler.obj `if test -f 'src/common/dwarf/dwarf2diehandler.cc'; then $(CYGPATH_W) 'src/common/dwarf/dwarf2diehandler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/dwarf2diehandler.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2diehandler.Tpo src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2diehandler.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/dwarf/dwarf2diehandler.cc' object='src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler.obj `if test -f 'src/common/dwarf/dwarf2diehandler.cc'; then $(CYGPATH_W) 'src/common/dwarf/dwarf2diehandler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/dwarf2diehandler.cc'; fi`
+
+src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler_unittest.o: src/common/dwarf/dwarf2diehandler_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler_unittest.o -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2diehandler_unittest.Tpo -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler_unittest.o `test -f 'src/common/dwarf/dwarf2diehandler_unittest.cc' || echo '$(srcdir)/'`src/common/dwarf/dwarf2diehandler_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2diehandler_unittest.Tpo src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2diehandler_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/dwarf/dwarf2diehandler_unittest.cc' object='src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler_unittest.o `test -f 'src/common/dwarf/dwarf2diehandler_unittest.cc' || echo '$(srcdir)/'`src/common/dwarf/dwarf2diehandler_unittest.cc
+
+src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler_unittest.obj: src/common/dwarf/dwarf2diehandler_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler_unittest.obj -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2diehandler_unittest.Tpo -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler_unittest.obj `if test -f 'src/common/dwarf/dwarf2diehandler_unittest.cc'; then $(CYGPATH_W) 'src/common/dwarf/dwarf2diehandler_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/dwarf2diehandler_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2diehandler_unittest.Tpo src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2diehandler_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/dwarf/dwarf2diehandler_unittest.cc' object='src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler_unittest.obj `if test -f 'src/common/dwarf/dwarf2diehandler_unittest.cc'; then $(CYGPATH_W) 'src/common/dwarf/dwarf2diehandler_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/dwarf2diehandler_unittest.cc'; fi`
+
+src/common/dwarf/src_common_dumper_unittest-dwarf2reader.o: src/common/dwarf/dwarf2reader.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_dumper_unittest-dwarf2reader.o -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader.Tpo -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2reader.o `test -f 'src/common/dwarf/dwarf2reader.cc' || echo '$(srcdir)/'`src/common/dwarf/dwarf2reader.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader.Tpo src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/dwarf/dwarf2reader.cc' object='src/common/dwarf/src_common_dumper_unittest-dwarf2reader.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2reader.o `test -f 'src/common/dwarf/dwarf2reader.cc' || echo '$(srcdir)/'`src/common/dwarf/dwarf2reader.cc
+
+src/common/dwarf/src_common_dumper_unittest-dwarf2reader.obj: src/common/dwarf/dwarf2reader.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_dumper_unittest-dwarf2reader.obj -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader.Tpo -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2reader.obj `if test -f 'src/common/dwarf/dwarf2reader.cc'; then $(CYGPATH_W) 'src/common/dwarf/dwarf2reader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/dwarf2reader.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader.Tpo src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/dwarf/dwarf2reader.cc' object='src/common/dwarf/src_common_dumper_unittest-dwarf2reader.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2reader.obj `if test -f 'src/common/dwarf/dwarf2reader.cc'; then $(CYGPATH_W) 'src/common/dwarf/dwarf2reader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/dwarf2reader.cc'; fi`
+
+src/common/dwarf/src_common_dumper_unittest-dwarf2reader_cfi_unittest.o: src/common/dwarf/dwarf2reader_cfi_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_dumper_unittest-dwarf2reader_cfi_unittest.o -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader_cfi_unittest.Tpo -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2reader_cfi_unittest.o `test -f 'src/common/dwarf/dwarf2reader_cfi_unittest.cc' || echo '$(srcdir)/'`src/common/dwarf/dwarf2reader_cfi_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader_cfi_unittest.Tpo src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader_cfi_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/dwarf/dwarf2reader_cfi_unittest.cc' object='src/common/dwarf/src_common_dumper_unittest-dwarf2reader_cfi_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2reader_cfi_unittest.o `test -f 'src/common/dwarf/dwarf2reader_cfi_unittest.cc' || echo '$(srcdir)/'`src/common/dwarf/dwarf2reader_cfi_unittest.cc
+
+src/common/dwarf/src_common_dumper_unittest-dwarf2reader_cfi_unittest.obj: src/common/dwarf/dwarf2reader_cfi_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_dumper_unittest-dwarf2reader_cfi_unittest.obj -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader_cfi_unittest.Tpo -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2reader_cfi_unittest.obj `if test -f 'src/common/dwarf/dwarf2reader_cfi_unittest.cc'; then $(CYGPATH_W) 'src/common/dwarf/dwarf2reader_cfi_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/dwarf2reader_cfi_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader_cfi_unittest.Tpo src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader_cfi_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/dwarf/dwarf2reader_cfi_unittest.cc' object='src/common/dwarf/src_common_dumper_unittest-dwarf2reader_cfi_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2reader_cfi_unittest.obj `if test -f 'src/common/dwarf/dwarf2reader_cfi_unittest.cc'; then $(CYGPATH_W) 'src/common/dwarf/dwarf2reader_cfi_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/dwarf2reader_cfi_unittest.cc'; fi`
+
+src/common/dwarf/src_common_dumper_unittest-dwarf2reader_die_unittest.o: src/common/dwarf/dwarf2reader_die_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_dumper_unittest-dwarf2reader_die_unittest.o -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader_die_unittest.Tpo -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2reader_die_unittest.o `test -f 'src/common/dwarf/dwarf2reader_die_unittest.cc' || echo '$(srcdir)/'`src/common/dwarf/dwarf2reader_die_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader_die_unittest.Tpo src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader_die_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/dwarf/dwarf2reader_die_unittest.cc' object='src/common/dwarf/src_common_dumper_unittest-dwarf2reader_die_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2reader_die_unittest.o `test -f 'src/common/dwarf/dwarf2reader_die_unittest.cc' || echo '$(srcdir)/'`src/common/dwarf/dwarf2reader_die_unittest.cc
+
+src/common/dwarf/src_common_dumper_unittest-dwarf2reader_die_unittest.obj: src/common/dwarf/dwarf2reader_die_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_dumper_unittest-dwarf2reader_die_unittest.obj -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader_die_unittest.Tpo -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2reader_die_unittest.obj `if test -f 'src/common/dwarf/dwarf2reader_die_unittest.cc'; then $(CYGPATH_W) 'src/common/dwarf/dwarf2reader_die_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/dwarf2reader_die_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader_die_unittest.Tpo src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader_die_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/dwarf/dwarf2reader_die_unittest.cc' object='src/common/dwarf/src_common_dumper_unittest-dwarf2reader_die_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2reader_die_unittest.obj `if test -f 'src/common/dwarf/dwarf2reader_die_unittest.cc'; then $(CYGPATH_W) 'src/common/dwarf/dwarf2reader_die_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/dwarf2reader_die_unittest.cc'; fi`
+
+src/common/linux/src_common_dumper_unittest-crc32.o: src/common/linux/crc32.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-crc32.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-crc32.Tpo -c -o src/common/linux/src_common_dumper_unittest-crc32.o `test -f 'src/common/linux/crc32.cc' || echo '$(srcdir)/'`src/common/linux/crc32.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-crc32.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-crc32.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/linux/crc32.cc' object='src/common/linux/src_common_dumper_unittest-crc32.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-crc32.o `test -f 'src/common/linux/crc32.cc' || echo '$(srcdir)/'`src/common/linux/crc32.cc
+
+src/common/linux/src_common_dumper_unittest-crc32.obj: src/common/linux/crc32.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-crc32.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-crc32.Tpo -c -o src/common/linux/src_common_dumper_unittest-crc32.obj `if test -f 'src/common/linux/crc32.cc'; then $(CYGPATH_W) 'src/common/linux/crc32.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/crc32.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-crc32.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-crc32.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/linux/crc32.cc' object='src/common/linux/src_common_dumper_unittest-crc32.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-crc32.obj `if test -f 'src/common/linux/crc32.cc'; then $(CYGPATH_W) 'src/common/linux/crc32.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/crc32.cc'; fi`
+
+src/common/linux/src_common_dumper_unittest-dump_symbols.o: src/common/linux/dump_symbols.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-dump_symbols.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-dump_symbols.Tpo -c -o src/common/linux/src_common_dumper_unittest-dump_symbols.o `test -f 'src/common/linux/dump_symbols.cc' || echo '$(srcdir)/'`src/common/linux/dump_symbols.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-dump_symbols.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-dump_symbols.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/linux/dump_symbols.cc' object='src/common/linux/src_common_dumper_unittest-dump_symbols.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-dump_symbols.o `test -f 'src/common/linux/dump_symbols.cc' || echo '$(srcdir)/'`src/common/linux/dump_symbols.cc
+
+src/common/linux/src_common_dumper_unittest-dump_symbols.obj: src/common/linux/dump_symbols.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-dump_symbols.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-dump_symbols.Tpo -c -o src/common/linux/src_common_dumper_unittest-dump_symbols.obj `if test -f 'src/common/linux/dump_symbols.cc'; then $(CYGPATH_W) 'src/common/linux/dump_symbols.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/dump_symbols.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-dump_symbols.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-dump_symbols.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/linux/dump_symbols.cc' object='src/common/linux/src_common_dumper_unittest-dump_symbols.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-dump_symbols.obj `if test -f 'src/common/linux/dump_symbols.cc'; then $(CYGPATH_W) 'src/common/linux/dump_symbols.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/dump_symbols.cc'; fi`
+
+src/common/linux/src_common_dumper_unittest-dump_symbols_unittest.o: src/common/linux/dump_symbols_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-dump_symbols_unittest.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-dump_symbols_unittest.Tpo -c -o src/common/linux/src_common_dumper_unittest-dump_symbols_unittest.o `test -f 'src/common/linux/dump_symbols_unittest.cc' || echo '$(srcdir)/'`src/common/linux/dump_symbols_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-dump_symbols_unittest.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-dump_symbols_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/linux/dump_symbols_unittest.cc' object='src/common/linux/src_common_dumper_unittest-dump_symbols_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-dump_symbols_unittest.o `test -f 'src/common/linux/dump_symbols_unittest.cc' || echo '$(srcdir)/'`src/common/linux/dump_symbols_unittest.cc
+
+src/common/linux/src_common_dumper_unittest-dump_symbols_unittest.obj: src/common/linux/dump_symbols_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-dump_symbols_unittest.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-dump_symbols_unittest.Tpo -c -o src/common/linux/src_common_dumper_unittest-dump_symbols_unittest.obj `if test -f 'src/common/linux/dump_symbols_unittest.cc'; then $(CYGPATH_W) 'src/common/linux/dump_symbols_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/dump_symbols_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-dump_symbols_unittest.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-dump_symbols_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/linux/dump_symbols_unittest.cc' object='src/common/linux/src_common_dumper_unittest-dump_symbols_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-dump_symbols_unittest.obj `if test -f 'src/common/linux/dump_symbols_unittest.cc'; then $(CYGPATH_W) 'src/common/linux/dump_symbols_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/dump_symbols_unittest.cc'; fi`
+
+src/common/linux/src_common_dumper_unittest-elf_core_dump.o: src/common/linux/elf_core_dump.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-elf_core_dump.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_core_dump.Tpo -c -o src/common/linux/src_common_dumper_unittest-elf_core_dump.o `test -f 'src/common/linux/elf_core_dump.cc' || echo '$(srcdir)/'`src/common/linux/elf_core_dump.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_core_dump.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_core_dump.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/linux/elf_core_dump.cc' object='src/common/linux/src_common_dumper_unittest-elf_core_dump.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-elf_core_dump.o `test -f 'src/common/linux/elf_core_dump.cc' || echo '$(srcdir)/'`src/common/linux/elf_core_dump.cc
+
+src/common/linux/src_common_dumper_unittest-elf_core_dump.obj: src/common/linux/elf_core_dump.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-elf_core_dump.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_core_dump.Tpo -c -o src/common/linux/src_common_dumper_unittest-elf_core_dump.obj `if test -f 'src/common/linux/elf_core_dump.cc'; then $(CYGPATH_W) 'src/common/linux/elf_core_dump.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/elf_core_dump.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_core_dump.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_core_dump.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/linux/elf_core_dump.cc' object='src/common/linux/src_common_dumper_unittest-elf_core_dump.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-elf_core_dump.obj `if test -f 'src/common/linux/elf_core_dump.cc'; then $(CYGPATH_W) 'src/common/linux/elf_core_dump.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/elf_core_dump.cc'; fi`
+
+src/common/linux/src_common_dumper_unittest-elf_core_dump_unittest.o: src/common/linux/elf_core_dump_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-elf_core_dump_unittest.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_core_dump_unittest.Tpo -c -o src/common/linux/src_common_dumper_unittest-elf_core_dump_unittest.o `test -f 'src/common/linux/elf_core_dump_unittest.cc' || echo '$(srcdir)/'`src/common/linux/elf_core_dump_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_core_dump_unittest.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_core_dump_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/linux/elf_core_dump_unittest.cc' object='src/common/linux/src_common_dumper_unittest-elf_core_dump_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-elf_core_dump_unittest.o `test -f 'src/common/linux/elf_core_dump_unittest.cc' || echo '$(srcdir)/'`src/common/linux/elf_core_dump_unittest.cc
+
+src/common/linux/src_common_dumper_unittest-elf_core_dump_unittest.obj: src/common/linux/elf_core_dump_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-elf_core_dump_unittest.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_core_dump_unittest.Tpo -c -o src/common/linux/src_common_dumper_unittest-elf_core_dump_unittest.obj `if test -f 'src/common/linux/elf_core_dump_unittest.cc'; then $(CYGPATH_W) 'src/common/linux/elf_core_dump_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/elf_core_dump_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_core_dump_unittest.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_core_dump_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/linux/elf_core_dump_unittest.cc' object='src/common/linux/src_common_dumper_unittest-elf_core_dump_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-elf_core_dump_unittest.obj `if test -f 'src/common/linux/elf_core_dump_unittest.cc'; then $(CYGPATH_W) 'src/common/linux/elf_core_dump_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/elf_core_dump_unittest.cc'; fi`
+
+src/common/linux/src_common_dumper_unittest-elf_symbols_to_module.o: src/common/linux/elf_symbols_to_module.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-elf_symbols_to_module.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_symbols_to_module.Tpo -c -o src/common/linux/src_common_dumper_unittest-elf_symbols_to_module.o `test -f 'src/common/linux/elf_symbols_to_module.cc' || echo '$(srcdir)/'`src/common/linux/elf_symbols_to_module.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_symbols_to_module.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_symbols_to_module.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/linux/elf_symbols_to_module.cc' object='src/common/linux/src_common_dumper_unittest-elf_symbols_to_module.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-elf_symbols_to_module.o `test -f 'src/common/linux/elf_symbols_to_module.cc' || echo '$(srcdir)/'`src/common/linux/elf_symbols_to_module.cc
+
+src/common/linux/src_common_dumper_unittest-elf_symbols_to_module.obj: src/common/linux/elf_symbols_to_module.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-elf_symbols_to_module.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_symbols_to_module.Tpo -c -o src/common/linux/src_common_dumper_unittest-elf_symbols_to_module.obj `if test -f 'src/common/linux/elf_symbols_to_module.cc'; then $(CYGPATH_W) 'src/common/linux/elf_symbols_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/elf_symbols_to_module.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_symbols_to_module.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_symbols_to_module.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/linux/elf_symbols_to_module.cc' object='src/common/linux/src_common_dumper_unittest-elf_symbols_to_module.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-elf_symbols_to_module.obj `if test -f 'src/common/linux/elf_symbols_to_module.cc'; then $(CYGPATH_W) 'src/common/linux/elf_symbols_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/elf_symbols_to_module.cc'; fi`
+
+src/common/linux/src_common_dumper_unittest-elf_symbols_to_module_unittest.o: src/common/linux/elf_symbols_to_module_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-elf_symbols_to_module_unittest.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_symbols_to_module_unittest.Tpo -c -o src/common/linux/src_common_dumper_unittest-elf_symbols_to_module_unittest.o `test -f 'src/common/linux/elf_symbols_to_module_unittest.cc' || echo '$(srcdir)/'`src/common/linux/elf_symbols_to_module_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_symbols_to_module_unittest.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_symbols_to_module_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/linux/elf_symbols_to_module_unittest.cc' object='src/common/linux/src_common_dumper_unittest-elf_symbols_to_module_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-elf_symbols_to_module_unittest.o `test -f 'src/common/linux/elf_symbols_to_module_unittest.cc' || echo '$(srcdir)/'`src/common/linux/elf_symbols_to_module_unittest.cc
+
+src/common/linux/src_common_dumper_unittest-elf_symbols_to_module_unittest.obj: src/common/linux/elf_symbols_to_module_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-elf_symbols_to_module_unittest.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_symbols_to_module_unittest.Tpo -c -o src/common/linux/src_common_dumper_unittest-elf_symbols_to_module_unittest.obj `if test -f 'src/common/linux/elf_symbols_to_module_unittest.cc'; then $(CYGPATH_W) 'src/common/linux/elf_symbols_to_module_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/elf_symbols_to_module_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_symbols_to_module_unittest.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_symbols_to_module_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/linux/elf_symbols_to_module_unittest.cc' object='src/common/linux/src_common_dumper_unittest-elf_symbols_to_module_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-elf_symbols_to_module_unittest.obj `if test -f 'src/common/linux/elf_symbols_to_module_unittest.cc'; then $(CYGPATH_W) 'src/common/linux/elf_symbols_to_module_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/elf_symbols_to_module_unittest.cc'; fi`
+
+src/common/linux/src_common_dumper_unittest-elfutils.o: src/common/linux/elfutils.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-elfutils.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elfutils.Tpo -c -o src/common/linux/src_common_dumper_unittest-elfutils.o `test -f 'src/common/linux/elfutils.cc' || echo '$(srcdir)/'`src/common/linux/elfutils.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elfutils.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elfutils.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/linux/elfutils.cc' object='src/common/linux/src_common_dumper_unittest-elfutils.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-elfutils.o `test -f 'src/common/linux/elfutils.cc' || echo '$(srcdir)/'`src/common/linux/elfutils.cc
+
+src/common/linux/src_common_dumper_unittest-elfutils.obj: src/common/linux/elfutils.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-elfutils.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elfutils.Tpo -c -o src/common/linux/src_common_dumper_unittest-elfutils.obj `if test -f 'src/common/linux/elfutils.cc'; then $(CYGPATH_W) 'src/common/linux/elfutils.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/elfutils.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elfutils.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elfutils.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/linux/elfutils.cc' object='src/common/linux/src_common_dumper_unittest-elfutils.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-elfutils.obj `if test -f 'src/common/linux/elfutils.cc'; then $(CYGPATH_W) 'src/common/linux/elfutils.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/elfutils.cc'; fi`
+
+src/common/linux/src_common_dumper_unittest-file_id.o: src/common/linux/file_id.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-file_id.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-file_id.Tpo -c -o src/common/linux/src_common_dumper_unittest-file_id.o `test -f 'src/common/linux/file_id.cc' || echo '$(srcdir)/'`src/common/linux/file_id.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-file_id.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-file_id.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/linux/file_id.cc' object='src/common/linux/src_common_dumper_unittest-file_id.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-file_id.o `test -f 'src/common/linux/file_id.cc' || echo '$(srcdir)/'`src/common/linux/file_id.cc
+
+src/common/linux/src_common_dumper_unittest-file_id.obj: src/common/linux/file_id.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-file_id.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-file_id.Tpo -c -o src/common/linux/src_common_dumper_unittest-file_id.obj `if test -f 'src/common/linux/file_id.cc'; then $(CYGPATH_W) 'src/common/linux/file_id.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/file_id.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-file_id.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-file_id.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/linux/file_id.cc' object='src/common/linux/src_common_dumper_unittest-file_id.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-file_id.obj `if test -f 'src/common/linux/file_id.cc'; then $(CYGPATH_W) 'src/common/linux/file_id.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/file_id.cc'; fi`
+
+src/common/linux/src_common_dumper_unittest-file_id_unittest.o: src/common/linux/file_id_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-file_id_unittest.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-file_id_unittest.Tpo -c -o src/common/linux/src_common_dumper_unittest-file_id_unittest.o `test -f 'src/common/linux/file_id_unittest.cc' || echo '$(srcdir)/'`src/common/linux/file_id_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-file_id_unittest.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-file_id_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/linux/file_id_unittest.cc' object='src/common/linux/src_common_dumper_unittest-file_id_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-file_id_unittest.o `test -f 'src/common/linux/file_id_unittest.cc' || echo '$(srcdir)/'`src/common/linux/file_id_unittest.cc
+
+src/common/linux/src_common_dumper_unittest-file_id_unittest.obj: src/common/linux/file_id_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-file_id_unittest.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-file_id_unittest.Tpo -c -o src/common/linux/src_common_dumper_unittest-file_id_unittest.obj `if test -f 'src/common/linux/file_id_unittest.cc'; then $(CYGPATH_W) 'src/common/linux/file_id_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/file_id_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-file_id_unittest.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-file_id_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/linux/file_id_unittest.cc' object='src/common/linux/src_common_dumper_unittest-file_id_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-file_id_unittest.obj `if test -f 'src/common/linux/file_id_unittest.cc'; then $(CYGPATH_W) 'src/common/linux/file_id_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/file_id_unittest.cc'; fi`
+
+src/common/linux/src_common_dumper_unittest-linux_libc_support.o: src/common/linux/linux_libc_support.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-linux_libc_support.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-linux_libc_support.Tpo -c -o src/common/linux/src_common_dumper_unittest-linux_libc_support.o `test -f 'src/common/linux/linux_libc_support.cc' || echo '$(srcdir)/'`src/common/linux/linux_libc_support.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-linux_libc_support.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-linux_libc_support.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/linux/linux_libc_support.cc' object='src/common/linux/src_common_dumper_unittest-linux_libc_support.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-linux_libc_support.o `test -f 'src/common/linux/linux_libc_support.cc' || echo '$(srcdir)/'`src/common/linux/linux_libc_support.cc
+
+src/common/linux/src_common_dumper_unittest-linux_libc_support.obj: src/common/linux/linux_libc_support.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-linux_libc_support.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-linux_libc_support.Tpo -c -o src/common/linux/src_common_dumper_unittest-linux_libc_support.obj `if test -f 'src/common/linux/linux_libc_support.cc'; then $(CYGPATH_W) 'src/common/linux/linux_libc_support.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/linux_libc_support.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-linux_libc_support.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-linux_libc_support.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/linux/linux_libc_support.cc' object='src/common/linux/src_common_dumper_unittest-linux_libc_support.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-linux_libc_support.obj `if test -f 'src/common/linux/linux_libc_support.cc'; then $(CYGPATH_W) 'src/common/linux/linux_libc_support.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/linux_libc_support.cc'; fi`
+
+src/common/linux/src_common_dumper_unittest-memory_mapped_file.o: src/common/linux/memory_mapped_file.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-memory_mapped_file.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-memory_mapped_file.Tpo -c -o src/common/linux/src_common_dumper_unittest-memory_mapped_file.o `test -f 'src/common/linux/memory_mapped_file.cc' || echo '$(srcdir)/'`src/common/linux/memory_mapped_file.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-memory_mapped_file.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-memory_mapped_file.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/linux/memory_mapped_file.cc' object='src/common/linux/src_common_dumper_unittest-memory_mapped_file.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-memory_mapped_file.o `test -f 'src/common/linux/memory_mapped_file.cc' || echo '$(srcdir)/'`src/common/linux/memory_mapped_file.cc
+
+src/common/linux/src_common_dumper_unittest-memory_mapped_file.obj: src/common/linux/memory_mapped_file.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-memory_mapped_file.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-memory_mapped_file.Tpo -c -o src/common/linux/src_common_dumper_unittest-memory_mapped_file.obj `if test -f 'src/common/linux/memory_mapped_file.cc'; then $(CYGPATH_W) 'src/common/linux/memory_mapped_file.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/memory_mapped_file.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-memory_mapped_file.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-memory_mapped_file.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/linux/memory_mapped_file.cc' object='src/common/linux/src_common_dumper_unittest-memory_mapped_file.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-memory_mapped_file.obj `if test -f 'src/common/linux/memory_mapped_file.cc'; then $(CYGPATH_W) 'src/common/linux/memory_mapped_file.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/memory_mapped_file.cc'; fi`
+
+src/common/linux/src_common_dumper_unittest-memory_mapped_file_unittest.o: src/common/linux/memory_mapped_file_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-memory_mapped_file_unittest.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-memory_mapped_file_unittest.Tpo -c -o src/common/linux/src_common_dumper_unittest-memory_mapped_file_unittest.o `test -f 'src/common/linux/memory_mapped_file_unittest.cc' || echo '$(srcdir)/'`src/common/linux/memory_mapped_file_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-memory_mapped_file_unittest.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-memory_mapped_file_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/linux/memory_mapped_file_unittest.cc' object='src/common/linux/src_common_dumper_unittest-memory_mapped_file_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-memory_mapped_file_unittest.o `test -f 'src/common/linux/memory_mapped_file_unittest.cc' || echo '$(srcdir)/'`src/common/linux/memory_mapped_file_unittest.cc
+
+src/common/linux/src_common_dumper_unittest-memory_mapped_file_unittest.obj: src/common/linux/memory_mapped_file_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-memory_mapped_file_unittest.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-memory_mapped_file_unittest.Tpo -c -o src/common/linux/src_common_dumper_unittest-memory_mapped_file_unittest.obj `if test -f 'src/common/linux/memory_mapped_file_unittest.cc'; then $(CYGPATH_W) 'src/common/linux/memory_mapped_file_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/memory_mapped_file_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-memory_mapped_file_unittest.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-memory_mapped_file_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/linux/memory_mapped_file_unittest.cc' object='src/common/linux/src_common_dumper_unittest-memory_mapped_file_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-memory_mapped_file_unittest.obj `if test -f 'src/common/linux/memory_mapped_file_unittest.cc'; then $(CYGPATH_W) 'src/common/linux/memory_mapped_file_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/memory_mapped_file_unittest.cc'; fi`
+
+src/common/linux/src_common_dumper_unittest-safe_readlink.o: src/common/linux/safe_readlink.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-safe_readlink.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-safe_readlink.Tpo -c -o src/common/linux/src_common_dumper_unittest-safe_readlink.o `test -f 'src/common/linux/safe_readlink.cc' || echo '$(srcdir)/'`src/common/linux/safe_readlink.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-safe_readlink.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-safe_readlink.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/linux/safe_readlink.cc' object='src/common/linux/src_common_dumper_unittest-safe_readlink.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-safe_readlink.o `test -f 'src/common/linux/safe_readlink.cc' || echo '$(srcdir)/'`src/common/linux/safe_readlink.cc
+
+src/common/linux/src_common_dumper_unittest-safe_readlink.obj: src/common/linux/safe_readlink.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-safe_readlink.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-safe_readlink.Tpo -c -o src/common/linux/src_common_dumper_unittest-safe_readlink.obj `if test -f 'src/common/linux/safe_readlink.cc'; then $(CYGPATH_W) 'src/common/linux/safe_readlink.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/safe_readlink.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-safe_readlink.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-safe_readlink.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/linux/safe_readlink.cc' object='src/common/linux/src_common_dumper_unittest-safe_readlink.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-safe_readlink.obj `if test -f 'src/common/linux/safe_readlink.cc'; then $(CYGPATH_W) 'src/common/linux/safe_readlink.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/safe_readlink.cc'; fi`
+
+src/common/linux/src_common_dumper_unittest-safe_readlink_unittest.o: src/common/linux/safe_readlink_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-safe_readlink_unittest.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-safe_readlink_unittest.Tpo -c -o src/common/linux/src_common_dumper_unittest-safe_readlink_unittest.o `test -f 'src/common/linux/safe_readlink_unittest.cc' || echo '$(srcdir)/'`src/common/linux/safe_readlink_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-safe_readlink_unittest.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-safe_readlink_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/linux/safe_readlink_unittest.cc' object='src/common/linux/src_common_dumper_unittest-safe_readlink_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-safe_readlink_unittest.o `test -f 'src/common/linux/safe_readlink_unittest.cc' || echo '$(srcdir)/'`src/common/linux/safe_readlink_unittest.cc
+
+src/common/linux/src_common_dumper_unittest-safe_readlink_unittest.obj: src/common/linux/safe_readlink_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-safe_readlink_unittest.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-safe_readlink_unittest.Tpo -c -o src/common/linux/src_common_dumper_unittest-safe_readlink_unittest.obj `if test -f 'src/common/linux/safe_readlink_unittest.cc'; then $(CYGPATH_W) 'src/common/linux/safe_readlink_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/safe_readlink_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-safe_readlink_unittest.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-safe_readlink_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/linux/safe_readlink_unittest.cc' object='src/common/linux/src_common_dumper_unittest-safe_readlink_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-safe_readlink_unittest.obj `if test -f 'src/common/linux/safe_readlink_unittest.cc'; then $(CYGPATH_W) 'src/common/linux/safe_readlink_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/safe_readlink_unittest.cc'; fi`
+
+src/common/linux/src_common_dumper_unittest-synth_elf.o: src/common/linux/synth_elf.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-synth_elf.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-synth_elf.Tpo -c -o src/common/linux/src_common_dumper_unittest-synth_elf.o `test -f 'src/common/linux/synth_elf.cc' || echo '$(srcdir)/'`src/common/linux/synth_elf.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-synth_elf.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-synth_elf.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/linux/synth_elf.cc' object='src/common/linux/src_common_dumper_unittest-synth_elf.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-synth_elf.o `test -f 'src/common/linux/synth_elf.cc' || echo '$(srcdir)/'`src/common/linux/synth_elf.cc
+
+src/common/linux/src_common_dumper_unittest-synth_elf.obj: src/common/linux/synth_elf.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-synth_elf.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-synth_elf.Tpo -c -o src/common/linux/src_common_dumper_unittest-synth_elf.obj `if test -f 'src/common/linux/synth_elf.cc'; then $(CYGPATH_W) 'src/common/linux/synth_elf.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/synth_elf.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-synth_elf.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-synth_elf.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/linux/synth_elf.cc' object='src/common/linux/src_common_dumper_unittest-synth_elf.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-synth_elf.obj `if test -f 'src/common/linux/synth_elf.cc'; then $(CYGPATH_W) 'src/common/linux/synth_elf.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/synth_elf.cc'; fi`
+
+src/common/linux/src_common_dumper_unittest-synth_elf_unittest.o: src/common/linux/synth_elf_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-synth_elf_unittest.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-synth_elf_unittest.Tpo -c -o src/common/linux/src_common_dumper_unittest-synth_elf_unittest.o `test -f 'src/common/linux/synth_elf_unittest.cc' || echo '$(srcdir)/'`src/common/linux/synth_elf_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-synth_elf_unittest.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-synth_elf_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/linux/synth_elf_unittest.cc' object='src/common/linux/src_common_dumper_unittest-synth_elf_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-synth_elf_unittest.o `test -f 'src/common/linux/synth_elf_unittest.cc' || echo '$(srcdir)/'`src/common/linux/synth_elf_unittest.cc
+
+src/common/linux/src_common_dumper_unittest-synth_elf_unittest.obj: src/common/linux/synth_elf_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-synth_elf_unittest.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-synth_elf_unittest.Tpo -c -o src/common/linux/src_common_dumper_unittest-synth_elf_unittest.obj `if test -f 'src/common/linux/synth_elf_unittest.cc'; then $(CYGPATH_W) 'src/common/linux/synth_elf_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/synth_elf_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-synth_elf_unittest.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-synth_elf_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/linux/synth_elf_unittest.cc' object='src/common/linux/src_common_dumper_unittest-synth_elf_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-synth_elf_unittest.obj `if test -f 'src/common/linux/synth_elf_unittest.cc'; then $(CYGPATH_W) 'src/common/linux/synth_elf_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/synth_elf_unittest.cc'; fi`
+
+src/common/linux/tests/src_common_dumper_unittest-crash_generator.o: src/common/linux/tests/crash_generator.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/tests/src_common_dumper_unittest-crash_generator.o -MD -MP -MF src/common/linux/tests/$(DEPDIR)/src_common_dumper_unittest-crash_generator.Tpo -c -o src/common/linux/tests/src_common_dumper_unittest-crash_generator.o `test -f 'src/common/linux/tests/crash_generator.cc' || echo '$(srcdir)/'`src/common/linux/tests/crash_generator.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/linux/tests/$(DEPDIR)/src_common_dumper_unittest-crash_generator.Tpo src/common/linux/tests/$(DEPDIR)/src_common_dumper_unittest-crash_generator.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/linux/tests/crash_generator.cc' object='src/common/linux/tests/src_common_dumper_unittest-crash_generator.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/tests/src_common_dumper_unittest-crash_generator.o `test -f 'src/common/linux/tests/crash_generator.cc' || echo '$(srcdir)/'`src/common/linux/tests/crash_generator.cc
+
+src/common/linux/tests/src_common_dumper_unittest-crash_generator.obj: src/common/linux/tests/crash_generator.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/tests/src_common_dumper_unittest-crash_generator.obj -MD -MP -MF src/common/linux/tests/$(DEPDIR)/src_common_dumper_unittest-crash_generator.Tpo -c -o src/common/linux/tests/src_common_dumper_unittest-crash_generator.obj `if test -f 'src/common/linux/tests/crash_generator.cc'; then $(CYGPATH_W) 'src/common/linux/tests/crash_generator.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/tests/crash_generator.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/linux/tests/$(DEPDIR)/src_common_dumper_unittest-crash_generator.Tpo src/common/linux/tests/$(DEPDIR)/src_common_dumper_unittest-crash_generator.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/linux/tests/crash_generator.cc' object='src/common/linux/tests/src_common_dumper_unittest-crash_generator.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/tests/src_common_dumper_unittest-crash_generator.obj `if test -f 'src/common/linux/tests/crash_generator.cc'; then $(CYGPATH_W) 'src/common/linux/tests/crash_generator.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/tests/crash_generator.cc'; fi`
+
+src/common/tests/src_common_dumper_unittest-file_utils.o: src/common/tests/file_utils.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/tests/src_common_dumper_unittest-file_utils.o -MD -MP -MF src/common/tests/$(DEPDIR)/src_common_dumper_unittest-file_utils.Tpo -c -o src/common/tests/src_common_dumper_unittest-file_utils.o `test -f 'src/common/tests/file_utils.cc' || echo '$(srcdir)/'`src/common/tests/file_utils.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/tests/$(DEPDIR)/src_common_dumper_unittest-file_utils.Tpo src/common/tests/$(DEPDIR)/src_common_dumper_unittest-file_utils.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/tests/file_utils.cc' object='src/common/tests/src_common_dumper_unittest-file_utils.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/tests/src_common_dumper_unittest-file_utils.o `test -f 'src/common/tests/file_utils.cc' || echo '$(srcdir)/'`src/common/tests/file_utils.cc
+
+src/common/tests/src_common_dumper_unittest-file_utils.obj: src/common/tests/file_utils.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/tests/src_common_dumper_unittest-file_utils.obj -MD -MP -MF src/common/tests/$(DEPDIR)/src_common_dumper_unittest-file_utils.Tpo -c -o src/common/tests/src_common_dumper_unittest-file_utils.obj `if test -f 'src/common/tests/file_utils.cc'; then $(CYGPATH_W) 'src/common/tests/file_utils.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/tests/file_utils.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/tests/$(DEPDIR)/src_common_dumper_unittest-file_utils.Tpo src/common/tests/$(DEPDIR)/src_common_dumper_unittest-file_utils.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/tests/file_utils.cc' object='src/common/tests/src_common_dumper_unittest-file_utils.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/tests/src_common_dumper_unittest-file_utils.obj `if test -f 'src/common/tests/file_utils.cc'; then $(CYGPATH_W) 'src/common/tests/file_utils.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/tests/file_utils.cc'; fi`
+
+src/testing/gtest/src/src_common_dumper_unittest-gtest-all.o: src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_common_dumper_unittest-gtest-all.o -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_common_dumper_unittest-gtest-all.Tpo -c -o src/testing/gtest/src/src_common_dumper_unittest-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_common_dumper_unittest-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_common_dumper_unittest-gtest-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_common_dumper_unittest-gtest-all.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_common_dumper_unittest-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc
+
+src/testing/gtest/src/src_common_dumper_unittest-gtest-all.obj: src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_common_dumper_unittest-gtest-all.obj -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_common_dumper_unittest-gtest-all.Tpo -c -o src/testing/gtest/src/src_common_dumper_unittest-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_common_dumper_unittest-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_common_dumper_unittest-gtest-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_common_dumper_unittest-gtest-all.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_common_dumper_unittest-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi`
+
+src/testing/gtest/src/src_common_dumper_unittest-gtest_main.o: src/testing/gtest/src/gtest_main.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_common_dumper_unittest-gtest_main.o -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_common_dumper_unittest-gtest_main.Tpo -c -o src/testing/gtest/src/src_common_dumper_unittest-gtest_main.o `test -f 'src/testing/gtest/src/gtest_main.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest_main.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_common_dumper_unittest-gtest_main.Tpo src/testing/gtest/src/$(DEPDIR)/src_common_dumper_unittest-gtest_main.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest_main.cc' object='src/testing/gtest/src/src_common_dumper_unittest-gtest_main.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_common_dumper_unittest-gtest_main.o `test -f 'src/testing/gtest/src/gtest_main.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest_main.cc
+
+src/testing/gtest/src/src_common_dumper_unittest-gtest_main.obj: src/testing/gtest/src/gtest_main.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_common_dumper_unittest-gtest_main.obj -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_common_dumper_unittest-gtest_main.Tpo -c -o src/testing/gtest/src/src_common_dumper_unittest-gtest_main.obj `if test -f 'src/testing/gtest/src/gtest_main.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest_main.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest_main.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_common_dumper_unittest-gtest_main.Tpo src/testing/gtest/src/$(DEPDIR)/src_common_dumper_unittest-gtest_main.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest_main.cc' object='src/testing/gtest/src/src_common_dumper_unittest-gtest_main.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_common_dumper_unittest-gtest_main.obj `if test -f 'src/testing/gtest/src/gtest_main.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest_main.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest_main.cc'; fi`
+
+src/testing/src/src_common_dumper_unittest-gmock-all.o: src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_common_dumper_unittest-gmock-all.o -MD -MP -MF src/testing/src/$(DEPDIR)/src_common_dumper_unittest-gmock-all.Tpo -c -o src/testing/src/src_common_dumper_unittest-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_common_dumper_unittest-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_common_dumper_unittest-gmock-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_common_dumper_unittest-gmock-all.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_common_dumper_unittest-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc
+
+src/testing/src/src_common_dumper_unittest-gmock-all.obj: src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_common_dumper_unittest-gmock-all.obj -MD -MP -MF src/testing/src/$(DEPDIR)/src_common_dumper_unittest-gmock-all.Tpo -c -o src/testing/src/src_common_dumper_unittest-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_common_dumper_unittest-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_common_dumper_unittest-gmock-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_common_dumper_unittest-gmock-all.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_common_dumper_unittest-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi`
+
+src/common/src_common_test_assembler_unittest-test_assembler.o: src/common/test_assembler.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_test_assembler_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_test_assembler_unittest-test_assembler.o -MD -MP -MF src/common/$(DEPDIR)/src_common_test_assembler_unittest-test_assembler.Tpo -c -o src/common/src_common_test_assembler_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_test_assembler_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_common_test_assembler_unittest-test_assembler.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_common_test_assembler_unittest-test_assembler.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_test_assembler_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_test_assembler_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc
+
+src/common/src_common_test_assembler_unittest-test_assembler.obj: src/common/test_assembler.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_test_assembler_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_test_assembler_unittest-test_assembler.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_test_assembler_unittest-test_assembler.Tpo -c -o src/common/src_common_test_assembler_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_test_assembler_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_common_test_assembler_unittest-test_assembler.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_common_test_assembler_unittest-test_assembler.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_test_assembler_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_test_assembler_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi`
+
+src/common/src_common_test_assembler_unittest-test_assembler_unittest.o: src/common/test_assembler_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_test_assembler_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_test_assembler_unittest-test_assembler_unittest.o -MD -MP -MF src/common/$(DEPDIR)/src_common_test_assembler_unittest-test_assembler_unittest.Tpo -c -o src/common/src_common_test_assembler_unittest-test_assembler_unittest.o `test -f 'src/common/test_assembler_unittest.cc' || echo '$(srcdir)/'`src/common/test_assembler_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_test_assembler_unittest-test_assembler_unittest.Tpo src/common/$(DEPDIR)/src_common_test_assembler_unittest-test_assembler_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/test_assembler_unittest.cc' object='src/common/src_common_test_assembler_unittest-test_assembler_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_test_assembler_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_test_assembler_unittest-test_assembler_unittest.o `test -f 'src/common/test_assembler_unittest.cc' || echo '$(srcdir)/'`src/common/test_assembler_unittest.cc
+
+src/common/src_common_test_assembler_unittest-test_assembler_unittest.obj: src/common/test_assembler_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_test_assembler_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_test_assembler_unittest-test_assembler_unittest.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_test_assembler_unittest-test_assembler_unittest.Tpo -c -o src/common/src_common_test_assembler_unittest-test_assembler_unittest.obj `if test -f 'src/common/test_assembler_unittest.cc'; then $(CYGPATH_W) 'src/common/test_assembler_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_test_assembler_unittest-test_assembler_unittest.Tpo src/common/$(DEPDIR)/src_common_test_assembler_unittest-test_assembler_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/test_assembler_unittest.cc' object='src/common/src_common_test_assembler_unittest-test_assembler_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_test_assembler_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_test_assembler_unittest-test_assembler_unittest.obj `if test -f 'src/common/test_assembler_unittest.cc'; then $(CYGPATH_W) 'src/common/test_assembler_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler_unittest.cc'; fi`
+
+src/testing/gtest/src/src_common_test_assembler_unittest-gtest-all.o: src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_test_assembler_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_common_test_assembler_unittest-gtest-all.o -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_common_test_assembler_unittest-gtest-all.Tpo -c -o src/testing/gtest/src/src_common_test_assembler_unittest-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_common_test_assembler_unittest-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_common_test_assembler_unittest-gtest-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_common_test_assembler_unittest-gtest-all.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_test_assembler_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_common_test_assembler_unittest-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc
+
+src/testing/gtest/src/src_common_test_assembler_unittest-gtest-all.obj: src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_test_assembler_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_common_test_assembler_unittest-gtest-all.obj -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_common_test_assembler_unittest-gtest-all.Tpo -c -o src/testing/gtest/src/src_common_test_assembler_unittest-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_common_test_assembler_unittest-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_common_test_assembler_unittest-gtest-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_common_test_assembler_unittest-gtest-all.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_test_assembler_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_common_test_assembler_unittest-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi`
+
+src/testing/gtest/src/src_common_test_assembler_unittest-gtest_main.o: src/testing/gtest/src/gtest_main.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_test_assembler_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_common_test_assembler_unittest-gtest_main.o -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_common_test_assembler_unittest-gtest_main.Tpo -c -o src/testing/gtest/src/src_common_test_assembler_unittest-gtest_main.o `test -f 'src/testing/gtest/src/gtest_main.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest_main.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_common_test_assembler_unittest-gtest_main.Tpo src/testing/gtest/src/$(DEPDIR)/src_common_test_assembler_unittest-gtest_main.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest_main.cc' object='src/testing/gtest/src/src_common_test_assembler_unittest-gtest_main.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_test_assembler_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_common_test_assembler_unittest-gtest_main.o `test -f 'src/testing/gtest/src/gtest_main.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest_main.cc
+
+src/testing/gtest/src/src_common_test_assembler_unittest-gtest_main.obj: src/testing/gtest/src/gtest_main.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_test_assembler_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_common_test_assembler_unittest-gtest_main.obj -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_common_test_assembler_unittest-gtest_main.Tpo -c -o src/testing/gtest/src/src_common_test_assembler_unittest-gtest_main.obj `if test -f 'src/testing/gtest/src/gtest_main.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest_main.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest_main.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_common_test_assembler_unittest-gtest_main.Tpo src/testing/gtest/src/$(DEPDIR)/src_common_test_assembler_unittest-gtest_main.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest_main.cc' object='src/testing/gtest/src/src_common_test_assembler_unittest-gtest_main.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_test_assembler_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_common_test_assembler_unittest-gtest_main.obj `if test -f 'src/testing/gtest/src/gtest_main.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest_main.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest_main.cc'; fi`
+
+src/testing/src/src_common_test_assembler_unittest-gmock-all.o: src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_test_assembler_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_common_test_assembler_unittest-gmock-all.o -MD -MP -MF src/testing/src/$(DEPDIR)/src_common_test_assembler_unittest-gmock-all.Tpo -c -o src/testing/src/src_common_test_assembler_unittest-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_common_test_assembler_unittest-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_common_test_assembler_unittest-gmock-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_common_test_assembler_unittest-gmock-all.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_test_assembler_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_common_test_assembler_unittest-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc
+
+src/testing/src/src_common_test_assembler_unittest-gmock-all.obj: src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_test_assembler_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_common_test_assembler_unittest-gmock-all.obj -MD -MP -MF src/testing/src/$(DEPDIR)/src_common_test_assembler_unittest-gmock-all.Tpo -c -o src/testing/src/src_common_test_assembler_unittest-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_common_test_assembler_unittest-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_common_test_assembler_unittest-gmock-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_common_test_assembler_unittest-gmock-all.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_test_assembler_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_common_test_assembler_unittest-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi`
+
+src/processor/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.o: src/processor/basic_source_line_resolver_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_basic_source_line_resolver_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.Tpo -c -o src/processor/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.o `test -f 'src/processor/basic_source_line_resolver_unittest.cc' || echo '$(srcdir)/'`src/processor/basic_source_line_resolver_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.Tpo src/processor/$(DEPDIR)/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/basic_source_line_resolver_unittest.cc' object='src/processor/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_basic_source_line_resolver_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.o `test -f 'src/processor/basic_source_line_resolver_unittest.cc' || echo '$(srcdir)/'`src/processor/basic_source_line_resolver_unittest.cc
+
+src/processor/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.obj: src/processor/basic_source_line_resolver_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_basic_source_line_resolver_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.Tpo -c -o src/processor/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.obj `if test -f 'src/processor/basic_source_line_resolver_unittest.cc'; then $(CYGPATH_W) 'src/processor/basic_source_line_resolver_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/basic_source_line_resolver_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.Tpo src/processor/$(DEPDIR)/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/basic_source_line_resolver_unittest.cc' object='src/processor/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_basic_source_line_resolver_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.obj `if test -f 'src/processor/basic_source_line_resolver_unittest.cc'; then $(CYGPATH_W) 'src/processor/basic_source_line_resolver_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/basic_source_line_resolver_unittest.cc'; fi`
+
+src/testing/gtest/src/src_processor_basic_source_line_resolver_unittest-gtest-all.o: src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_basic_source_line_resolver_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_basic_source_line_resolver_unittest-gtest-all.o -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_basic_source_line_resolver_unittest-gtest-all.Tpo -c -o src/testing/gtest/src/src_processor_basic_source_line_resolver_unittest-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_basic_source_line_resolver_unittest-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_basic_source_line_resolver_unittest-gtest-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_processor_basic_source_line_resolver_unittest-gtest-all.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_basic_source_line_resolver_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_basic_source_line_resolver_unittest-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc
+
+src/testing/gtest/src/src_processor_basic_source_line_resolver_unittest-gtest-all.obj: src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_basic_source_line_resolver_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_basic_source_line_resolver_unittest-gtest-all.obj -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_basic_source_line_resolver_unittest-gtest-all.Tpo -c -o src/testing/gtest/src/src_processor_basic_source_line_resolver_unittest-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_basic_source_line_resolver_unittest-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_basic_source_line_resolver_unittest-gtest-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_processor_basic_source_line_resolver_unittest-gtest-all.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_basic_source_line_resolver_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_basic_source_line_resolver_unittest-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi`
+
+src/testing/src/src_processor_basic_source_line_resolver_unittest-gmock-all.o: src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_basic_source_line_resolver_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_processor_basic_source_line_resolver_unittest-gmock-all.o -MD -MP -MF src/testing/src/$(DEPDIR)/src_processor_basic_source_line_resolver_unittest-gmock-all.Tpo -c -o src/testing/src/src_processor_basic_source_line_resolver_unittest-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_processor_basic_source_line_resolver_unittest-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_processor_basic_source_line_resolver_unittest-gmock-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_processor_basic_source_line_resolver_unittest-gmock-all.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_basic_source_line_resolver_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_processor_basic_source_line_resolver_unittest-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc
+
+src/testing/src/src_processor_basic_source_line_resolver_unittest-gmock-all.obj: src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_basic_source_line_resolver_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_processor_basic_source_line_resolver_unittest-gmock-all.obj -MD -MP -MF src/testing/src/$(DEPDIR)/src_processor_basic_source_line_resolver_unittest-gmock-all.Tpo -c -o src/testing/src/src_processor_basic_source_line_resolver_unittest-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_processor_basic_source_line_resolver_unittest-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_processor_basic_source_line_resolver_unittest-gmock-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_processor_basic_source_line_resolver_unittest-gmock-all.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_basic_source_line_resolver_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_processor_basic_source_line_resolver_unittest-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi`
+
+src/processor/src_processor_binarystream_unittest-binarystream_unittest.o: src/processor/binarystream_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_binarystream_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_binarystream_unittest-binarystream_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_binarystream_unittest-binarystream_unittest.Tpo -c -o src/processor/src_processor_binarystream_unittest-binarystream_unittest.o `test -f 'src/processor/binarystream_unittest.cc' || echo '$(srcdir)/'`src/processor/binarystream_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_binarystream_unittest-binarystream_unittest.Tpo src/processor/$(DEPDIR)/src_processor_binarystream_unittest-binarystream_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/binarystream_unittest.cc' object='src/processor/src_processor_binarystream_unittest-binarystream_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_binarystream_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_binarystream_unittest-binarystream_unittest.o `test -f 'src/processor/binarystream_unittest.cc' || echo '$(srcdir)/'`src/processor/binarystream_unittest.cc
+
+src/processor/src_processor_binarystream_unittest-binarystream_unittest.obj: src/processor/binarystream_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_binarystream_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_binarystream_unittest-binarystream_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_binarystream_unittest-binarystream_unittest.Tpo -c -o src/processor/src_processor_binarystream_unittest-binarystream_unittest.obj `if test -f 'src/processor/binarystream_unittest.cc'; then $(CYGPATH_W) 'src/processor/binarystream_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/binarystream_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_binarystream_unittest-binarystream_unittest.Tpo src/processor/$(DEPDIR)/src_processor_binarystream_unittest-binarystream_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/binarystream_unittest.cc' object='src/processor/src_processor_binarystream_unittest-binarystream_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_binarystream_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_binarystream_unittest-binarystream_unittest.obj `if test -f 'src/processor/binarystream_unittest.cc'; then $(CYGPATH_W) 'src/processor/binarystream_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/binarystream_unittest.cc'; fi`
+
+src/testing/gtest/src/src_processor_binarystream_unittest-gtest-all.o: src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_binarystream_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_binarystream_unittest-gtest-all.o -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_binarystream_unittest-gtest-all.Tpo -c -o src/testing/gtest/src/src_processor_binarystream_unittest-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_binarystream_unittest-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_binarystream_unittest-gtest-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_processor_binarystream_unittest-gtest-all.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_binarystream_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_binarystream_unittest-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc
+
+src/testing/gtest/src/src_processor_binarystream_unittest-gtest-all.obj: src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_binarystream_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_binarystream_unittest-gtest-all.obj -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_binarystream_unittest-gtest-all.Tpo -c -o src/testing/gtest/src/src_processor_binarystream_unittest-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_binarystream_unittest-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_binarystream_unittest-gtest-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_processor_binarystream_unittest-gtest-all.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_binarystream_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_binarystream_unittest-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi`
+
+src/testing/src/src_processor_binarystream_unittest-gmock-all.o: src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_binarystream_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_processor_binarystream_unittest-gmock-all.o -MD -MP -MF src/testing/src/$(DEPDIR)/src_processor_binarystream_unittest-gmock-all.Tpo -c -o src/testing/src/src_processor_binarystream_unittest-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_processor_binarystream_unittest-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_processor_binarystream_unittest-gmock-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_processor_binarystream_unittest-gmock-all.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_binarystream_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_processor_binarystream_unittest-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc
+
+src/testing/src/src_processor_binarystream_unittest-gmock-all.obj: src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_binarystream_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_processor_binarystream_unittest-gmock-all.obj -MD -MP -MF src/testing/src/$(DEPDIR)/src_processor_binarystream_unittest-gmock-all.Tpo -c -o src/testing/src/src_processor_binarystream_unittest-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_processor_binarystream_unittest-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_processor_binarystream_unittest-gmock-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_processor_binarystream_unittest-gmock-all.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_binarystream_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_processor_binarystream_unittest-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi`
+
+src/processor/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.o: src/processor/cfi_frame_info_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_cfi_frame_info_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.Tpo -c -o src/processor/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.o `test -f 'src/processor/cfi_frame_info_unittest.cc' || echo '$(srcdir)/'`src/processor/cfi_frame_info_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.Tpo src/processor/$(DEPDIR)/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/cfi_frame_info_unittest.cc' object='src/processor/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_cfi_frame_info_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.o `test -f 'src/processor/cfi_frame_info_unittest.cc' || echo '$(srcdir)/'`src/processor/cfi_frame_info_unittest.cc
+
+src/processor/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.obj: src/processor/cfi_frame_info_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_cfi_frame_info_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.Tpo -c -o src/processor/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.obj `if test -f 'src/processor/cfi_frame_info_unittest.cc'; then $(CYGPATH_W) 'src/processor/cfi_frame_info_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/cfi_frame_info_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.Tpo src/processor/$(DEPDIR)/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/cfi_frame_info_unittest.cc' object='src/processor/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_cfi_frame_info_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.obj `if test -f 'src/processor/cfi_frame_info_unittest.cc'; then $(CYGPATH_W) 'src/processor/cfi_frame_info_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/cfi_frame_info_unittest.cc'; fi`
+
+src/testing/gtest/src/src_processor_cfi_frame_info_unittest-gtest-all.o: src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_cfi_frame_info_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_cfi_frame_info_unittest-gtest-all.o -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_cfi_frame_info_unittest-gtest-all.Tpo -c -o src/testing/gtest/src/src_processor_cfi_frame_info_unittest-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_cfi_frame_info_unittest-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_cfi_frame_info_unittest-gtest-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_processor_cfi_frame_info_unittest-gtest-all.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_cfi_frame_info_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_cfi_frame_info_unittest-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc
+
+src/testing/gtest/src/src_processor_cfi_frame_info_unittest-gtest-all.obj: src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_cfi_frame_info_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_cfi_frame_info_unittest-gtest-all.obj -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_cfi_frame_info_unittest-gtest-all.Tpo -c -o src/testing/gtest/src/src_processor_cfi_frame_info_unittest-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_cfi_frame_info_unittest-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_cfi_frame_info_unittest-gtest-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_processor_cfi_frame_info_unittest-gtest-all.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_cfi_frame_info_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_cfi_frame_info_unittest-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi`
+
+src/testing/gtest/src/src_processor_cfi_frame_info_unittest-gtest_main.o: src/testing/gtest/src/gtest_main.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_cfi_frame_info_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_cfi_frame_info_unittest-gtest_main.o -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_cfi_frame_info_unittest-gtest_main.Tpo -c -o src/testing/gtest/src/src_processor_cfi_frame_info_unittest-gtest_main.o `test -f 'src/testing/gtest/src/gtest_main.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest_main.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_cfi_frame_info_unittest-gtest_main.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_cfi_frame_info_unittest-gtest_main.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest_main.cc' object='src/testing/gtest/src/src_processor_cfi_frame_info_unittest-gtest_main.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_cfi_frame_info_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_cfi_frame_info_unittest-gtest_main.o `test -f 'src/testing/gtest/src/gtest_main.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest_main.cc
+
+src/testing/gtest/src/src_processor_cfi_frame_info_unittest-gtest_main.obj: src/testing/gtest/src/gtest_main.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_cfi_frame_info_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_cfi_frame_info_unittest-gtest_main.obj -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_cfi_frame_info_unittest-gtest_main.Tpo -c -o src/testing/gtest/src/src_processor_cfi_frame_info_unittest-gtest_main.obj `if test -f 'src/testing/gtest/src/gtest_main.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest_main.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest_main.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_cfi_frame_info_unittest-gtest_main.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_cfi_frame_info_unittest-gtest_main.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest_main.cc' object='src/testing/gtest/src/src_processor_cfi_frame_info_unittest-gtest_main.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_cfi_frame_info_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_cfi_frame_info_unittest-gtest_main.obj `if test -f 'src/testing/gtest/src/gtest_main.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest_main.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest_main.cc'; fi`
+
+src/testing/src/src_processor_cfi_frame_info_unittest-gmock-all.o: src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_cfi_frame_info_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_processor_cfi_frame_info_unittest-gmock-all.o -MD -MP -MF src/testing/src/$(DEPDIR)/src_processor_cfi_frame_info_unittest-gmock-all.Tpo -c -o src/testing/src/src_processor_cfi_frame_info_unittest-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_processor_cfi_frame_info_unittest-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_processor_cfi_frame_info_unittest-gmock-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_processor_cfi_frame_info_unittest-gmock-all.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_cfi_frame_info_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_processor_cfi_frame_info_unittest-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc
+
+src/testing/src/src_processor_cfi_frame_info_unittest-gmock-all.obj: src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_cfi_frame_info_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_processor_cfi_frame_info_unittest-gmock-all.obj -MD -MP -MF src/testing/src/$(DEPDIR)/src_processor_cfi_frame_info_unittest-gmock-all.Tpo -c -o src/testing/src/src_processor_cfi_frame_info_unittest-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_processor_cfi_frame_info_unittest-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_processor_cfi_frame_info_unittest-gmock-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_processor_cfi_frame_info_unittest-gmock-all.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_cfi_frame_info_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_processor_cfi_frame_info_unittest-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi`
+
+src/processor/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.o: src/processor/disassembler_x86_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_disassembler_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.Tpo -c -o src/processor/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.o `test -f 'src/processor/disassembler_x86_unittest.cc' || echo '$(srcdir)/'`src/processor/disassembler_x86_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.Tpo src/processor/$(DEPDIR)/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/disassembler_x86_unittest.cc' object='src/processor/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_disassembler_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.o `test -f 'src/processor/disassembler_x86_unittest.cc' || echo '$(srcdir)/'`src/processor/disassembler_x86_unittest.cc
+
+src/processor/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.obj: src/processor/disassembler_x86_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_disassembler_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.Tpo -c -o src/processor/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.obj `if test -f 'src/processor/disassembler_x86_unittest.cc'; then $(CYGPATH_W) 'src/processor/disassembler_x86_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/disassembler_x86_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.Tpo src/processor/$(DEPDIR)/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/disassembler_x86_unittest.cc' object='src/processor/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_disassembler_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.obj `if test -f 'src/processor/disassembler_x86_unittest.cc'; then $(CYGPATH_W) 'src/processor/disassembler_x86_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/disassembler_x86_unittest.cc'; fi`
+
+src/testing/gtest/src/src_processor_disassembler_x86_unittest-gtest-all.o: src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_disassembler_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_disassembler_x86_unittest-gtest-all.o -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_disassembler_x86_unittest-gtest-all.Tpo -c -o src/testing/gtest/src/src_processor_disassembler_x86_unittest-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_disassembler_x86_unittest-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_disassembler_x86_unittest-gtest-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_processor_disassembler_x86_unittest-gtest-all.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_disassembler_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_disassembler_x86_unittest-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc
+
+src/testing/gtest/src/src_processor_disassembler_x86_unittest-gtest-all.obj: src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_disassembler_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_disassembler_x86_unittest-gtest-all.obj -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_disassembler_x86_unittest-gtest-all.Tpo -c -o src/testing/gtest/src/src_processor_disassembler_x86_unittest-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_disassembler_x86_unittest-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_disassembler_x86_unittest-gtest-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_processor_disassembler_x86_unittest-gtest-all.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_disassembler_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_disassembler_x86_unittest-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi`
+
+src/testing/gtest/src/src_processor_disassembler_x86_unittest-gtest_main.o: src/testing/gtest/src/gtest_main.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_disassembler_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_disassembler_x86_unittest-gtest_main.o -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_disassembler_x86_unittest-gtest_main.Tpo -c -o src/testing/gtest/src/src_processor_disassembler_x86_unittest-gtest_main.o `test -f 'src/testing/gtest/src/gtest_main.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest_main.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_disassembler_x86_unittest-gtest_main.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_disassembler_x86_unittest-gtest_main.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest_main.cc' object='src/testing/gtest/src/src_processor_disassembler_x86_unittest-gtest_main.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_disassembler_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_disassembler_x86_unittest-gtest_main.o `test -f 'src/testing/gtest/src/gtest_main.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest_main.cc
+
+src/testing/gtest/src/src_processor_disassembler_x86_unittest-gtest_main.obj: src/testing/gtest/src/gtest_main.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_disassembler_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_disassembler_x86_unittest-gtest_main.obj -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_disassembler_x86_unittest-gtest_main.Tpo -c -o src/testing/gtest/src/src_processor_disassembler_x86_unittest-gtest_main.obj `if test -f 'src/testing/gtest/src/gtest_main.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest_main.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest_main.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_disassembler_x86_unittest-gtest_main.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_disassembler_x86_unittest-gtest_main.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest_main.cc' object='src/testing/gtest/src/src_processor_disassembler_x86_unittest-gtest_main.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_disassembler_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_disassembler_x86_unittest-gtest_main.obj `if test -f 'src/testing/gtest/src/gtest_main.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest_main.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest_main.cc'; fi`
+
+src/testing/src/src_processor_disassembler_x86_unittest-gmock-all.o: src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_disassembler_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_processor_disassembler_x86_unittest-gmock-all.o -MD -MP -MF src/testing/src/$(DEPDIR)/src_processor_disassembler_x86_unittest-gmock-all.Tpo -c -o src/testing/src/src_processor_disassembler_x86_unittest-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_processor_disassembler_x86_unittest-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_processor_disassembler_x86_unittest-gmock-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_processor_disassembler_x86_unittest-gmock-all.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_disassembler_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_processor_disassembler_x86_unittest-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc
+
+src/testing/src/src_processor_disassembler_x86_unittest-gmock-all.obj: src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_disassembler_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_processor_disassembler_x86_unittest-gmock-all.obj -MD -MP -MF src/testing/src/$(DEPDIR)/src_processor_disassembler_x86_unittest-gmock-all.Tpo -c -o src/testing/src/src_processor_disassembler_x86_unittest-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_processor_disassembler_x86_unittest-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_processor_disassembler_x86_unittest-gmock-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_processor_disassembler_x86_unittest-gmock-all.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_disassembler_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_processor_disassembler_x86_unittest-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi`
+
+src/processor/src_processor_exploitability_unittest-exploitability_unittest.o: src/processor/exploitability_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_exploitability_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_exploitability_unittest-exploitability_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_exploitability_unittest-exploitability_unittest.Tpo -c -o src/processor/src_processor_exploitability_unittest-exploitability_unittest.o `test -f 'src/processor/exploitability_unittest.cc' || echo '$(srcdir)/'`src/processor/exploitability_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_exploitability_unittest-exploitability_unittest.Tpo src/processor/$(DEPDIR)/src_processor_exploitability_unittest-exploitability_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/exploitability_unittest.cc' object='src/processor/src_processor_exploitability_unittest-exploitability_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_exploitability_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_exploitability_unittest-exploitability_unittest.o `test -f 'src/processor/exploitability_unittest.cc' || echo '$(srcdir)/'`src/processor/exploitability_unittest.cc
+
+src/processor/src_processor_exploitability_unittest-exploitability_unittest.obj: src/processor/exploitability_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_exploitability_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_exploitability_unittest-exploitability_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_exploitability_unittest-exploitability_unittest.Tpo -c -o src/processor/src_processor_exploitability_unittest-exploitability_unittest.obj `if test -f 'src/processor/exploitability_unittest.cc'; then $(CYGPATH_W) 'src/processor/exploitability_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/exploitability_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_exploitability_unittest-exploitability_unittest.Tpo src/processor/$(DEPDIR)/src_processor_exploitability_unittest-exploitability_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/exploitability_unittest.cc' object='src/processor/src_processor_exploitability_unittest-exploitability_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_exploitability_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_exploitability_unittest-exploitability_unittest.obj `if test -f 'src/processor/exploitability_unittest.cc'; then $(CYGPATH_W) 'src/processor/exploitability_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/exploitability_unittest.cc'; fi`
+
+src/testing/gtest/src/src_processor_exploitability_unittest-gtest-all.o: src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_exploitability_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_exploitability_unittest-gtest-all.o -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_exploitability_unittest-gtest-all.Tpo -c -o src/testing/gtest/src/src_processor_exploitability_unittest-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_exploitability_unittest-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_exploitability_unittest-gtest-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_processor_exploitability_unittest-gtest-all.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_exploitability_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_exploitability_unittest-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc
+
+src/testing/gtest/src/src_processor_exploitability_unittest-gtest-all.obj: src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_exploitability_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_exploitability_unittest-gtest-all.obj -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_exploitability_unittest-gtest-all.Tpo -c -o src/testing/gtest/src/src_processor_exploitability_unittest-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_exploitability_unittest-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_exploitability_unittest-gtest-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_processor_exploitability_unittest-gtest-all.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_exploitability_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_exploitability_unittest-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi`
+
+src/testing/gtest/src/src_processor_exploitability_unittest-gtest_main.o: src/testing/gtest/src/gtest_main.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_exploitability_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_exploitability_unittest-gtest_main.o -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_exploitability_unittest-gtest_main.Tpo -c -o src/testing/gtest/src/src_processor_exploitability_unittest-gtest_main.o `test -f 'src/testing/gtest/src/gtest_main.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest_main.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_exploitability_unittest-gtest_main.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_exploitability_unittest-gtest_main.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest_main.cc' object='src/testing/gtest/src/src_processor_exploitability_unittest-gtest_main.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_exploitability_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_exploitability_unittest-gtest_main.o `test -f 'src/testing/gtest/src/gtest_main.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest_main.cc
+
+src/testing/gtest/src/src_processor_exploitability_unittest-gtest_main.obj: src/testing/gtest/src/gtest_main.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_exploitability_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_exploitability_unittest-gtest_main.obj -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_exploitability_unittest-gtest_main.Tpo -c -o src/testing/gtest/src/src_processor_exploitability_unittest-gtest_main.obj `if test -f 'src/testing/gtest/src/gtest_main.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest_main.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest_main.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_exploitability_unittest-gtest_main.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_exploitability_unittest-gtest_main.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest_main.cc' object='src/testing/gtest/src/src_processor_exploitability_unittest-gtest_main.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_exploitability_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_exploitability_unittest-gtest_main.obj `if test -f 'src/testing/gtest/src/gtest_main.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest_main.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest_main.cc'; fi`
+
+src/testing/src/src_processor_exploitability_unittest-gmock-all.o: src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_exploitability_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_processor_exploitability_unittest-gmock-all.o -MD -MP -MF src/testing/src/$(DEPDIR)/src_processor_exploitability_unittest-gmock-all.Tpo -c -o src/testing/src/src_processor_exploitability_unittest-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_processor_exploitability_unittest-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_processor_exploitability_unittest-gmock-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_processor_exploitability_unittest-gmock-all.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_exploitability_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_processor_exploitability_unittest-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc
+
+src/testing/src/src_processor_exploitability_unittest-gmock-all.obj: src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_exploitability_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_processor_exploitability_unittest-gmock-all.obj -MD -MP -MF src/testing/src/$(DEPDIR)/src_processor_exploitability_unittest-gmock-all.Tpo -c -o src/testing/src/src_processor_exploitability_unittest-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_processor_exploitability_unittest-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_processor_exploitability_unittest-gmock-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_processor_exploitability_unittest-gmock-all.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_exploitability_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_processor_exploitability_unittest-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi`
+
+src/processor/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.o: src/processor/fast_source_line_resolver_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_fast_source_line_resolver_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.Tpo -c -o src/processor/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.o `test -f 'src/processor/fast_source_line_resolver_unittest.cc' || echo '$(srcdir)/'`src/processor/fast_source_line_resolver_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.Tpo src/processor/$(DEPDIR)/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/fast_source_line_resolver_unittest.cc' object='src/processor/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_fast_source_line_resolver_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.o `test -f 'src/processor/fast_source_line_resolver_unittest.cc' || echo '$(srcdir)/'`src/processor/fast_source_line_resolver_unittest.cc
+
+src/processor/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.obj: src/processor/fast_source_line_resolver_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_fast_source_line_resolver_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.Tpo -c -o src/processor/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.obj `if test -f 'src/processor/fast_source_line_resolver_unittest.cc'; then $(CYGPATH_W) 'src/processor/fast_source_line_resolver_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/fast_source_line_resolver_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.Tpo src/processor/$(DEPDIR)/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/fast_source_line_resolver_unittest.cc' object='src/processor/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_fast_source_line_resolver_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.obj `if test -f 'src/processor/fast_source_line_resolver_unittest.cc'; then $(CYGPATH_W) 'src/processor/fast_source_line_resolver_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/fast_source_line_resolver_unittest.cc'; fi`
+
+src/testing/gtest/src/src_processor_fast_source_line_resolver_unittest-gtest-all.o: src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_fast_source_line_resolver_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_fast_source_line_resolver_unittest-gtest-all.o -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_fast_source_line_resolver_unittest-gtest-all.Tpo -c -o src/testing/gtest/src/src_processor_fast_source_line_resolver_unittest-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_fast_source_line_resolver_unittest-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_fast_source_line_resolver_unittest-gtest-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_processor_fast_source_line_resolver_unittest-gtest-all.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_fast_source_line_resolver_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_fast_source_line_resolver_unittest-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc
+
+src/testing/gtest/src/src_processor_fast_source_line_resolver_unittest-gtest-all.obj: src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_fast_source_line_resolver_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_fast_source_line_resolver_unittest-gtest-all.obj -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_fast_source_line_resolver_unittest-gtest-all.Tpo -c -o src/testing/gtest/src/src_processor_fast_source_line_resolver_unittest-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_fast_source_line_resolver_unittest-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_fast_source_line_resolver_unittest-gtest-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_processor_fast_source_line_resolver_unittest-gtest-all.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_fast_source_line_resolver_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_fast_source_line_resolver_unittest-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi`
+
+src/testing/src/src_processor_fast_source_line_resolver_unittest-gmock-all.o: src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_fast_source_line_resolver_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_processor_fast_source_line_resolver_unittest-gmock-all.o -MD -MP -MF src/testing/src/$(DEPDIR)/src_processor_fast_source_line_resolver_unittest-gmock-all.Tpo -c -o src/testing/src/src_processor_fast_source_line_resolver_unittest-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_processor_fast_source_line_resolver_unittest-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_processor_fast_source_line_resolver_unittest-gmock-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_processor_fast_source_line_resolver_unittest-gmock-all.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_fast_source_line_resolver_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_processor_fast_source_line_resolver_unittest-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc
+
+src/testing/src/src_processor_fast_source_line_resolver_unittest-gmock-all.obj: src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_fast_source_line_resolver_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_processor_fast_source_line_resolver_unittest-gmock-all.obj -MD -MP -MF src/testing/src/$(DEPDIR)/src_processor_fast_source_line_resolver_unittest-gmock-all.Tpo -c -o src/testing/src/src_processor_fast_source_line_resolver_unittest-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_processor_fast_source_line_resolver_unittest-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_processor_fast_source_line_resolver_unittest-gmock-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_processor_fast_source_line_resolver_unittest-gmock-all.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_fast_source_line_resolver_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_processor_fast_source_line_resolver_unittest-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi`
+
+src/processor/src_processor_map_serializers_unittest-map_serializers_unittest.o: src/processor/map_serializers_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_map_serializers_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_map_serializers_unittest-map_serializers_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_map_serializers_unittest-map_serializers_unittest.Tpo -c -o src/processor/src_processor_map_serializers_unittest-map_serializers_unittest.o `test -f 'src/processor/map_serializers_unittest.cc' || echo '$(srcdir)/'`src/processor/map_serializers_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_map_serializers_unittest-map_serializers_unittest.Tpo src/processor/$(DEPDIR)/src_processor_map_serializers_unittest-map_serializers_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/map_serializers_unittest.cc' object='src/processor/src_processor_map_serializers_unittest-map_serializers_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_map_serializers_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_map_serializers_unittest-map_serializers_unittest.o `test -f 'src/processor/map_serializers_unittest.cc' || echo '$(srcdir)/'`src/processor/map_serializers_unittest.cc
+
+src/processor/src_processor_map_serializers_unittest-map_serializers_unittest.obj: src/processor/map_serializers_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_map_serializers_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_map_serializers_unittest-map_serializers_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_map_serializers_unittest-map_serializers_unittest.Tpo -c -o src/processor/src_processor_map_serializers_unittest-map_serializers_unittest.obj `if test -f 'src/processor/map_serializers_unittest.cc'; then $(CYGPATH_W) 'src/processor/map_serializers_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/map_serializers_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_map_serializers_unittest-map_serializers_unittest.Tpo src/processor/$(DEPDIR)/src_processor_map_serializers_unittest-map_serializers_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/map_serializers_unittest.cc' object='src/processor/src_processor_map_serializers_unittest-map_serializers_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_map_serializers_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_map_serializers_unittest-map_serializers_unittest.obj `if test -f 'src/processor/map_serializers_unittest.cc'; then $(CYGPATH_W) 'src/processor/map_serializers_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/map_serializers_unittest.cc'; fi`
+
+src/testing/gtest/src/src_processor_map_serializers_unittest-gtest-all.o: src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_map_serializers_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_map_serializers_unittest-gtest-all.o -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_map_serializers_unittest-gtest-all.Tpo -c -o src/testing/gtest/src/src_processor_map_serializers_unittest-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_map_serializers_unittest-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_map_serializers_unittest-gtest-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_processor_map_serializers_unittest-gtest-all.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_map_serializers_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_map_serializers_unittest-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc
+
+src/testing/gtest/src/src_processor_map_serializers_unittest-gtest-all.obj: src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_map_serializers_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_map_serializers_unittest-gtest-all.obj -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_map_serializers_unittest-gtest-all.Tpo -c -o src/testing/gtest/src/src_processor_map_serializers_unittest-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_map_serializers_unittest-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_map_serializers_unittest-gtest-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_processor_map_serializers_unittest-gtest-all.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_map_serializers_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_map_serializers_unittest-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi`
+
+src/testing/src/src_processor_map_serializers_unittest-gmock-all.o: src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_map_serializers_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_processor_map_serializers_unittest-gmock-all.o -MD -MP -MF src/testing/src/$(DEPDIR)/src_processor_map_serializers_unittest-gmock-all.Tpo -c -o src/testing/src/src_processor_map_serializers_unittest-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_processor_map_serializers_unittest-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_processor_map_serializers_unittest-gmock-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_processor_map_serializers_unittest-gmock-all.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_map_serializers_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_processor_map_serializers_unittest-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc
+
+src/testing/src/src_processor_map_serializers_unittest-gmock-all.obj: src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_map_serializers_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_processor_map_serializers_unittest-gmock-all.obj -MD -MP -MF src/testing/src/$(DEPDIR)/src_processor_map_serializers_unittest-gmock-all.Tpo -c -o src/testing/src/src_processor_map_serializers_unittest-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_processor_map_serializers_unittest-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_processor_map_serializers_unittest-gmock-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_processor_map_serializers_unittest-gmock-all.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_map_serializers_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_processor_map_serializers_unittest-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi`
+
+src/processor/src_processor_microdump_processor_unittest-microdump_processor_unittest.o: src/processor/microdump_processor_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_microdump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_microdump_processor_unittest-microdump_processor_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_microdump_processor_unittest-microdump_processor_unittest.Tpo -c -o src/processor/src_processor_microdump_processor_unittest-microdump_processor_unittest.o `test -f 'src/processor/microdump_processor_unittest.cc' || echo '$(srcdir)/'`src/processor/microdump_processor_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_microdump_processor_unittest-microdump_processor_unittest.Tpo src/processor/$(DEPDIR)/src_processor_microdump_processor_unittest-microdump_processor_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/microdump_processor_unittest.cc' object='src/processor/src_processor_microdump_processor_unittest-microdump_processor_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_microdump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_microdump_processor_unittest-microdump_processor_unittest.o `test -f 'src/processor/microdump_processor_unittest.cc' || echo '$(srcdir)/'`src/processor/microdump_processor_unittest.cc
+
+src/processor/src_processor_microdump_processor_unittest-microdump_processor_unittest.obj: src/processor/microdump_processor_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_microdump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_microdump_processor_unittest-microdump_processor_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_microdump_processor_unittest-microdump_processor_unittest.Tpo -c -o src/processor/src_processor_microdump_processor_unittest-microdump_processor_unittest.obj `if test -f 'src/processor/microdump_processor_unittest.cc'; then $(CYGPATH_W) 'src/processor/microdump_processor_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/microdump_processor_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_microdump_processor_unittest-microdump_processor_unittest.Tpo src/processor/$(DEPDIR)/src_processor_microdump_processor_unittest-microdump_processor_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/microdump_processor_unittest.cc' object='src/processor/src_processor_microdump_processor_unittest-microdump_processor_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_microdump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_microdump_processor_unittest-microdump_processor_unittest.obj `if test -f 'src/processor/microdump_processor_unittest.cc'; then $(CYGPATH_W) 'src/processor/microdump_processor_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/microdump_processor_unittest.cc'; fi`
+
+src/testing/gtest/src/src_processor_microdump_processor_unittest-gtest-all.o: src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_microdump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_microdump_processor_unittest-gtest-all.o -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_microdump_processor_unittest-gtest-all.Tpo -c -o src/testing/gtest/src/src_processor_microdump_processor_unittest-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_microdump_processor_unittest-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_microdump_processor_unittest-gtest-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_processor_microdump_processor_unittest-gtest-all.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_microdump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_microdump_processor_unittest-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc
+
+src/testing/gtest/src/src_processor_microdump_processor_unittest-gtest-all.obj: src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_microdump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_microdump_processor_unittest-gtest-all.obj -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_microdump_processor_unittest-gtest-all.Tpo -c -o src/testing/gtest/src/src_processor_microdump_processor_unittest-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_microdump_processor_unittest-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_microdump_processor_unittest-gtest-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_processor_microdump_processor_unittest-gtest-all.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_microdump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_microdump_processor_unittest-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi`
+
+src/testing/src/src_processor_microdump_processor_unittest-gmock-all.o: src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_microdump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_processor_microdump_processor_unittest-gmock-all.o -MD -MP -MF src/testing/src/$(DEPDIR)/src_processor_microdump_processor_unittest-gmock-all.Tpo -c -o src/testing/src/src_processor_microdump_processor_unittest-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_processor_microdump_processor_unittest-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_processor_microdump_processor_unittest-gmock-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_processor_microdump_processor_unittest-gmock-all.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_microdump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_processor_microdump_processor_unittest-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc
+
+src/testing/src/src_processor_microdump_processor_unittest-gmock-all.obj: src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_microdump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_processor_microdump_processor_unittest-gmock-all.obj -MD -MP -MF src/testing/src/$(DEPDIR)/src_processor_microdump_processor_unittest-gmock-all.Tpo -c -o src/testing/src/src_processor_microdump_processor_unittest-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_processor_microdump_processor_unittest-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_processor_microdump_processor_unittest-gmock-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_processor_microdump_processor_unittest-gmock-all.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_microdump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_processor_microdump_processor_unittest-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi`
+
+src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.o: src/processor/minidump_processor_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_minidump_processor_unittest-minidump_processor_unittest.Tpo -c -o src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.o `test -f 'src/processor/minidump_processor_unittest.cc' || echo '$(srcdir)/'`src/processor/minidump_processor_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_minidump_processor_unittest-minidump_processor_unittest.Tpo src/processor/$(DEPDIR)/src_processor_minidump_processor_unittest-minidump_processor_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/minidump_processor_unittest.cc' object='src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.o `test -f 'src/processor/minidump_processor_unittest.cc' || echo '$(srcdir)/'`src/processor/minidump_processor_unittest.cc
+
+src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.obj: src/processor/minidump_processor_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_minidump_processor_unittest-minidump_processor_unittest.Tpo -c -o src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.obj `if test -f 'src/processor/minidump_processor_unittest.cc'; then $(CYGPATH_W) 'src/processor/minidump_processor_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/minidump_processor_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_minidump_processor_unittest-minidump_processor_unittest.Tpo src/processor/$(DEPDIR)/src_processor_minidump_processor_unittest-minidump_processor_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/minidump_processor_unittest.cc' object='src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.obj `if test -f 'src/processor/minidump_processor_unittest.cc'; then $(CYGPATH_W) 'src/processor/minidump_processor_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/minidump_processor_unittest.cc'; fi`
+
+src/testing/gtest/src/src_processor_minidump_processor_unittest-gtest-all.o: src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_minidump_processor_unittest-gtest-all.o -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_minidump_processor_unittest-gtest-all.Tpo -c -o src/testing/gtest/src/src_processor_minidump_processor_unittest-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_minidump_processor_unittest-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_minidump_processor_unittest-gtest-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_processor_minidump_processor_unittest-gtest-all.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_minidump_processor_unittest-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc
+
+src/testing/gtest/src/src_processor_minidump_processor_unittest-gtest-all.obj: src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_minidump_processor_unittest-gtest-all.obj -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_minidump_processor_unittest-gtest-all.Tpo -c -o src/testing/gtest/src/src_processor_minidump_processor_unittest-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_minidump_processor_unittest-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_minidump_processor_unittest-gtest-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_processor_minidump_processor_unittest-gtest-all.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_minidump_processor_unittest-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi`
+
+src/testing/src/src_processor_minidump_processor_unittest-gmock-all.o: src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_processor_minidump_processor_unittest-gmock-all.o -MD -MP -MF src/testing/src/$(DEPDIR)/src_processor_minidump_processor_unittest-gmock-all.Tpo -c -o src/testing/src/src_processor_minidump_processor_unittest-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_processor_minidump_processor_unittest-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_processor_minidump_processor_unittest-gmock-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_processor_minidump_processor_unittest-gmock-all.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_processor_minidump_processor_unittest-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc
+
+src/testing/src/src_processor_minidump_processor_unittest-gmock-all.obj: src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_processor_minidump_processor_unittest-gmock-all.obj -MD -MP -MF src/testing/src/$(DEPDIR)/src_processor_minidump_processor_unittest-gmock-all.Tpo -c -o src/testing/src/src_processor_minidump_processor_unittest-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_processor_minidump_processor_unittest-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_processor_minidump_processor_unittest-gmock-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_processor_minidump_processor_unittest-gmock-all.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_processor_minidump_processor_unittest-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi`
+
+src/common/src_processor_minidump_unittest-test_assembler.o: src/common/test_assembler.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_processor_minidump_unittest-test_assembler.o -MD -MP -MF src/common/$(DEPDIR)/src_processor_minidump_unittest-test_assembler.Tpo -c -o src/common/src_processor_minidump_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_processor_minidump_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_processor_minidump_unittest-test_assembler.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_processor_minidump_unittest-test_assembler.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_processor_minidump_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc
+
+src/common/src_processor_minidump_unittest-test_assembler.obj: src/common/test_assembler.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_processor_minidump_unittest-test_assembler.obj -MD -MP -MF src/common/$(DEPDIR)/src_processor_minidump_unittest-test_assembler.Tpo -c -o src/common/src_processor_minidump_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_processor_minidump_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_processor_minidump_unittest-test_assembler.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_processor_minidump_unittest-test_assembler.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_processor_minidump_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi`
+
+src/processor/src_processor_minidump_unittest-minidump_unittest.o: src/processor/minidump_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_minidump_unittest-minidump_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_minidump_unittest-minidump_unittest.Tpo -c -o src/processor/src_processor_minidump_unittest-minidump_unittest.o `test -f 'src/processor/minidump_unittest.cc' || echo '$(srcdir)/'`src/processor/minidump_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_minidump_unittest-minidump_unittest.Tpo src/processor/$(DEPDIR)/src_processor_minidump_unittest-minidump_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/minidump_unittest.cc' object='src/processor/src_processor_minidump_unittest-minidump_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_minidump_unittest-minidump_unittest.o `test -f 'src/processor/minidump_unittest.cc' || echo '$(srcdir)/'`src/processor/minidump_unittest.cc
+
+src/processor/src_processor_minidump_unittest-minidump_unittest.obj: src/processor/minidump_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_minidump_unittest-minidump_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_minidump_unittest-minidump_unittest.Tpo -c -o src/processor/src_processor_minidump_unittest-minidump_unittest.obj `if test -f 'src/processor/minidump_unittest.cc'; then $(CYGPATH_W) 'src/processor/minidump_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/minidump_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_minidump_unittest-minidump_unittest.Tpo src/processor/$(DEPDIR)/src_processor_minidump_unittest-minidump_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/minidump_unittest.cc' object='src/processor/src_processor_minidump_unittest-minidump_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_minidump_unittest-minidump_unittest.obj `if test -f 'src/processor/minidump_unittest.cc'; then $(CYGPATH_W) 'src/processor/minidump_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/minidump_unittest.cc'; fi`
+
+src/processor/src_processor_minidump_unittest-synth_minidump.o: src/processor/synth_minidump.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_minidump_unittest-synth_minidump.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_minidump_unittest-synth_minidump.Tpo -c -o src/processor/src_processor_minidump_unittest-synth_minidump.o `test -f 'src/processor/synth_minidump.cc' || echo '$(srcdir)/'`src/processor/synth_minidump.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_minidump_unittest-synth_minidump.Tpo src/processor/$(DEPDIR)/src_processor_minidump_unittest-synth_minidump.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/synth_minidump.cc' object='src/processor/src_processor_minidump_unittest-synth_minidump.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_minidump_unittest-synth_minidump.o `test -f 'src/processor/synth_minidump.cc' || echo '$(srcdir)/'`src/processor/synth_minidump.cc
+
+src/processor/src_processor_minidump_unittest-synth_minidump.obj: src/processor/synth_minidump.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_minidump_unittest-synth_minidump.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_minidump_unittest-synth_minidump.Tpo -c -o src/processor/src_processor_minidump_unittest-synth_minidump.obj `if test -f 'src/processor/synth_minidump.cc'; then $(CYGPATH_W) 'src/processor/synth_minidump.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/synth_minidump.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_minidump_unittest-synth_minidump.Tpo src/processor/$(DEPDIR)/src_processor_minidump_unittest-synth_minidump.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/synth_minidump.cc' object='src/processor/src_processor_minidump_unittest-synth_minidump.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_minidump_unittest-synth_minidump.obj `if test -f 'src/processor/synth_minidump.cc'; then $(CYGPATH_W) 'src/processor/synth_minidump.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/synth_minidump.cc'; fi`
+
+src/testing/gtest/src/src_processor_minidump_unittest-gtest-all.o: src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_minidump_unittest-gtest-all.o -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_minidump_unittest-gtest-all.Tpo -c -o src/testing/gtest/src/src_processor_minidump_unittest-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_minidump_unittest-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_minidump_unittest-gtest-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_processor_minidump_unittest-gtest-all.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_minidump_unittest-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc
+
+src/testing/gtest/src/src_processor_minidump_unittest-gtest-all.obj: src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_minidump_unittest-gtest-all.obj -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_minidump_unittest-gtest-all.Tpo -c -o src/testing/gtest/src/src_processor_minidump_unittest-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_minidump_unittest-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_minidump_unittest-gtest-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_processor_minidump_unittest-gtest-all.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_minidump_unittest-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi`
+
+src/testing/gtest/src/src_processor_minidump_unittest-gtest_main.o: src/testing/gtest/src/gtest_main.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_minidump_unittest-gtest_main.o -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_minidump_unittest-gtest_main.Tpo -c -o src/testing/gtest/src/src_processor_minidump_unittest-gtest_main.o `test -f 'src/testing/gtest/src/gtest_main.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest_main.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_minidump_unittest-gtest_main.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_minidump_unittest-gtest_main.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest_main.cc' object='src/testing/gtest/src/src_processor_minidump_unittest-gtest_main.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_minidump_unittest-gtest_main.o `test -f 'src/testing/gtest/src/gtest_main.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest_main.cc
+
+src/testing/gtest/src/src_processor_minidump_unittest-gtest_main.obj: src/testing/gtest/src/gtest_main.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_minidump_unittest-gtest_main.obj -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_minidump_unittest-gtest_main.Tpo -c -o src/testing/gtest/src/src_processor_minidump_unittest-gtest_main.obj `if test -f 'src/testing/gtest/src/gtest_main.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest_main.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest_main.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_minidump_unittest-gtest_main.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_minidump_unittest-gtest_main.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest_main.cc' object='src/testing/gtest/src/src_processor_minidump_unittest-gtest_main.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_minidump_unittest-gtest_main.obj `if test -f 'src/testing/gtest/src/gtest_main.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest_main.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest_main.cc'; fi`
+
+src/testing/src/src_processor_minidump_unittest-gmock-all.o: src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_processor_minidump_unittest-gmock-all.o -MD -MP -MF src/testing/src/$(DEPDIR)/src_processor_minidump_unittest-gmock-all.Tpo -c -o src/testing/src/src_processor_minidump_unittest-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_processor_minidump_unittest-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_processor_minidump_unittest-gmock-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_processor_minidump_unittest-gmock-all.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_processor_minidump_unittest-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc
+
+src/testing/src/src_processor_minidump_unittest-gmock-all.obj: src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_processor_minidump_unittest-gmock-all.obj -MD -MP -MF src/testing/src/$(DEPDIR)/src_processor_minidump_unittest-gmock-all.Tpo -c -o src/testing/src/src_processor_minidump_unittest-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_processor_minidump_unittest-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_processor_minidump_unittest-gmock-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_processor_minidump_unittest-gmock-all.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_processor_minidump_unittest-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi`
+
+src/common/src_processor_stackwalker_address_list_unittest-test_assembler.o: src/common/test_assembler.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_address_list_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_processor_stackwalker_address_list_unittest-test_assembler.o -MD -MP -MF src/common/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-test_assembler.Tpo -c -o src/common/src_processor_stackwalker_address_list_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-test_assembler.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_processor_stackwalker_address_list_unittest-test_assembler.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_address_list_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_processor_stackwalker_address_list_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc
+
+src/common/src_processor_stackwalker_address_list_unittest-test_assembler.obj: src/common/test_assembler.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_address_list_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_processor_stackwalker_address_list_unittest-test_assembler.obj -MD -MP -MF src/common/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-test_assembler.Tpo -c -o src/common/src_processor_stackwalker_address_list_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-test_assembler.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_processor_stackwalker_address_list_unittest-test_assembler.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_address_list_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_processor_stackwalker_address_list_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi`
+
+src/processor/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.o: src/processor/stackwalker_address_list_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_address_list_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.Tpo -c -o src/processor/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.o `test -f 'src/processor/stackwalker_address_list_unittest.cc' || echo '$(srcdir)/'`src/processor/stackwalker_address_list_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.Tpo src/processor/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/stackwalker_address_list_unittest.cc' object='src/processor/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_address_list_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.o `test -f 'src/processor/stackwalker_address_list_unittest.cc' || echo '$(srcdir)/'`src/processor/stackwalker_address_list_unittest.cc
+
+src/processor/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.obj: src/processor/stackwalker_address_list_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_address_list_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.Tpo -c -o src/processor/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.obj `if test -f 'src/processor/stackwalker_address_list_unittest.cc'; then $(CYGPATH_W) 'src/processor/stackwalker_address_list_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/stackwalker_address_list_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.Tpo src/processor/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/stackwalker_address_list_unittest.cc' object='src/processor/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_address_list_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.obj `if test -f 'src/processor/stackwalker_address_list_unittest.cc'; then $(CYGPATH_W) 'src/processor/stackwalker_address_list_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/stackwalker_address_list_unittest.cc'; fi`
+
+src/testing/gtest/src/src_processor_stackwalker_address_list_unittest-gtest-all.o: src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_address_list_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_stackwalker_address_list_unittest-gtest-all.o -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-gtest-all.Tpo -c -o src/testing/gtest/src/src_processor_stackwalker_address_list_unittest-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-gtest-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_processor_stackwalker_address_list_unittest-gtest-all.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_address_list_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_stackwalker_address_list_unittest-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc
+
+src/testing/gtest/src/src_processor_stackwalker_address_list_unittest-gtest-all.obj: src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_address_list_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_stackwalker_address_list_unittest-gtest-all.obj -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-gtest-all.Tpo -c -o src/testing/gtest/src/src_processor_stackwalker_address_list_unittest-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-gtest-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_processor_stackwalker_address_list_unittest-gtest-all.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_address_list_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_stackwalker_address_list_unittest-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi`
+
+src/testing/gtest/src/src_processor_stackwalker_address_list_unittest-gtest_main.o: src/testing/gtest/src/gtest_main.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_address_list_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_stackwalker_address_list_unittest-gtest_main.o -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-gtest_main.Tpo -c -o src/testing/gtest/src/src_processor_stackwalker_address_list_unittest-gtest_main.o `test -f 'src/testing/gtest/src/gtest_main.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest_main.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-gtest_main.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-gtest_main.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest_main.cc' object='src/testing/gtest/src/src_processor_stackwalker_address_list_unittest-gtest_main.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_address_list_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_stackwalker_address_list_unittest-gtest_main.o `test -f 'src/testing/gtest/src/gtest_main.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest_main.cc
+
+src/testing/gtest/src/src_processor_stackwalker_address_list_unittest-gtest_main.obj: src/testing/gtest/src/gtest_main.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_address_list_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_stackwalker_address_list_unittest-gtest_main.obj -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-gtest_main.Tpo -c -o src/testing/gtest/src/src_processor_stackwalker_address_list_unittest-gtest_main.obj `if test -f 'src/testing/gtest/src/gtest_main.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest_main.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest_main.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-gtest_main.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-gtest_main.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest_main.cc' object='src/testing/gtest/src/src_processor_stackwalker_address_list_unittest-gtest_main.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_address_list_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_stackwalker_address_list_unittest-gtest_main.obj `if test -f 'src/testing/gtest/src/gtest_main.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest_main.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest_main.cc'; fi`
+
+src/testing/src/src_processor_stackwalker_address_list_unittest-gmock-all.o: src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_address_list_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_processor_stackwalker_address_list_unittest-gmock-all.o -MD -MP -MF src/testing/src/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-gmock-all.Tpo -c -o src/testing/src/src_processor_stackwalker_address_list_unittest-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-gmock-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_processor_stackwalker_address_list_unittest-gmock-all.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_address_list_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_processor_stackwalker_address_list_unittest-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc
+
+src/testing/src/src_processor_stackwalker_address_list_unittest-gmock-all.obj: src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_address_list_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_processor_stackwalker_address_list_unittest-gmock-all.obj -MD -MP -MF src/testing/src/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-gmock-all.Tpo -c -o src/testing/src/src_processor_stackwalker_address_list_unittest-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-gmock-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_processor_stackwalker_address_list_unittest-gmock-all.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_address_list_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_processor_stackwalker_address_list_unittest-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi`
+
+src/common/src_processor_stackwalker_amd64_unittest-test_assembler.o: src/common/test_assembler.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_amd64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_processor_stackwalker_amd64_unittest-test_assembler.o -MD -MP -MF src/common/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-test_assembler.Tpo -c -o src/common/src_processor_stackwalker_amd64_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-test_assembler.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_processor_stackwalker_amd64_unittest-test_assembler.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_amd64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_processor_stackwalker_amd64_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc
+
+src/common/src_processor_stackwalker_amd64_unittest-test_assembler.obj: src/common/test_assembler.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_amd64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_processor_stackwalker_amd64_unittest-test_assembler.obj -MD -MP -MF src/common/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-test_assembler.Tpo -c -o src/common/src_processor_stackwalker_amd64_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-test_assembler.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_processor_stackwalker_amd64_unittest-test_assembler.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_amd64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_processor_stackwalker_amd64_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi`
+
+src/processor/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.o: src/processor/stackwalker_amd64_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_amd64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.Tpo -c -o src/processor/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.o `test -f 'src/processor/stackwalker_amd64_unittest.cc' || echo '$(srcdir)/'`src/processor/stackwalker_amd64_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.Tpo src/processor/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/stackwalker_amd64_unittest.cc' object='src/processor/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_amd64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.o `test -f 'src/processor/stackwalker_amd64_unittest.cc' || echo '$(srcdir)/'`src/processor/stackwalker_amd64_unittest.cc
+
+src/processor/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.obj: src/processor/stackwalker_amd64_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_amd64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.Tpo -c -o src/processor/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.obj `if test -f 'src/processor/stackwalker_amd64_unittest.cc'; then $(CYGPATH_W) 'src/processor/stackwalker_amd64_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/stackwalker_amd64_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.Tpo src/processor/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/stackwalker_amd64_unittest.cc' object='src/processor/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_amd64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.obj `if test -f 'src/processor/stackwalker_amd64_unittest.cc'; then $(CYGPATH_W) 'src/processor/stackwalker_amd64_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/stackwalker_amd64_unittest.cc'; fi`
+
+src/testing/gtest/src/src_processor_stackwalker_amd64_unittest-gtest-all.o: src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_amd64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_stackwalker_amd64_unittest-gtest-all.o -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-gtest-all.Tpo -c -o src/testing/gtest/src/src_processor_stackwalker_amd64_unittest-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-gtest-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_processor_stackwalker_amd64_unittest-gtest-all.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_amd64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_stackwalker_amd64_unittest-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc
+
+src/testing/gtest/src/src_processor_stackwalker_amd64_unittest-gtest-all.obj: src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_amd64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_stackwalker_amd64_unittest-gtest-all.obj -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-gtest-all.Tpo -c -o src/testing/gtest/src/src_processor_stackwalker_amd64_unittest-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-gtest-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_processor_stackwalker_amd64_unittest-gtest-all.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_amd64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_stackwalker_amd64_unittest-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi`
+
+src/testing/gtest/src/src_processor_stackwalker_amd64_unittest-gtest_main.o: src/testing/gtest/src/gtest_main.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_amd64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_stackwalker_amd64_unittest-gtest_main.o -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-gtest_main.Tpo -c -o src/testing/gtest/src/src_processor_stackwalker_amd64_unittest-gtest_main.o `test -f 'src/testing/gtest/src/gtest_main.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest_main.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-gtest_main.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-gtest_main.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest_main.cc' object='src/testing/gtest/src/src_processor_stackwalker_amd64_unittest-gtest_main.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_amd64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_stackwalker_amd64_unittest-gtest_main.o `test -f 'src/testing/gtest/src/gtest_main.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest_main.cc
+
+src/testing/gtest/src/src_processor_stackwalker_amd64_unittest-gtest_main.obj: src/testing/gtest/src/gtest_main.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_amd64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_stackwalker_amd64_unittest-gtest_main.obj -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-gtest_main.Tpo -c -o src/testing/gtest/src/src_processor_stackwalker_amd64_unittest-gtest_main.obj `if test -f 'src/testing/gtest/src/gtest_main.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest_main.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest_main.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-gtest_main.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-gtest_main.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest_main.cc' object='src/testing/gtest/src/src_processor_stackwalker_amd64_unittest-gtest_main.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_amd64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_stackwalker_amd64_unittest-gtest_main.obj `if test -f 'src/testing/gtest/src/gtest_main.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest_main.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest_main.cc'; fi`
+
+src/testing/src/src_processor_stackwalker_amd64_unittest-gmock-all.o: src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_amd64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_processor_stackwalker_amd64_unittest-gmock-all.o -MD -MP -MF src/testing/src/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-gmock-all.Tpo -c -o src/testing/src/src_processor_stackwalker_amd64_unittest-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-gmock-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_processor_stackwalker_amd64_unittest-gmock-all.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_amd64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_processor_stackwalker_amd64_unittest-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc
+
+src/testing/src/src_processor_stackwalker_amd64_unittest-gmock-all.obj: src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_amd64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_processor_stackwalker_amd64_unittest-gmock-all.obj -MD -MP -MF src/testing/src/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-gmock-all.Tpo -c -o src/testing/src/src_processor_stackwalker_amd64_unittest-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-gmock-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_processor_stackwalker_amd64_unittest-gmock-all.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_amd64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_processor_stackwalker_amd64_unittest-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi`
+
+src/common/src_processor_stackwalker_arm64_unittest-test_assembler.o: src/common/test_assembler.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_processor_stackwalker_arm64_unittest-test_assembler.o -MD -MP -MF src/common/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-test_assembler.Tpo -c -o src/common/src_processor_stackwalker_arm64_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-test_assembler.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_processor_stackwalker_arm64_unittest-test_assembler.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_processor_stackwalker_arm64_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc
+
+src/common/src_processor_stackwalker_arm64_unittest-test_assembler.obj: src/common/test_assembler.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_processor_stackwalker_arm64_unittest-test_assembler.obj -MD -MP -MF src/common/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-test_assembler.Tpo -c -o src/common/src_processor_stackwalker_arm64_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-test_assembler.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_processor_stackwalker_arm64_unittest-test_assembler.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_processor_stackwalker_arm64_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi`
+
+src/processor/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.o: src/processor/stackwalker_arm64_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.Tpo -c -o src/processor/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.o `test -f 'src/processor/stackwalker_arm64_unittest.cc' || echo '$(srcdir)/'`src/processor/stackwalker_arm64_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.Tpo src/processor/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/stackwalker_arm64_unittest.cc' object='src/processor/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.o `test -f 'src/processor/stackwalker_arm64_unittest.cc' || echo '$(srcdir)/'`src/processor/stackwalker_arm64_unittest.cc
+
+src/processor/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.obj: src/processor/stackwalker_arm64_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.Tpo -c -o src/processor/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.obj `if test -f 'src/processor/stackwalker_arm64_unittest.cc'; then $(CYGPATH_W) 'src/processor/stackwalker_arm64_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/stackwalker_arm64_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.Tpo src/processor/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/stackwalker_arm64_unittest.cc' object='src/processor/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.obj `if test -f 'src/processor/stackwalker_arm64_unittest.cc'; then $(CYGPATH_W) 'src/processor/stackwalker_arm64_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/stackwalker_arm64_unittest.cc'; fi`
+
+src/testing/gtest/src/src_processor_stackwalker_arm64_unittest-gtest-all.o: src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_stackwalker_arm64_unittest-gtest-all.o -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-gtest-all.Tpo -c -o src/testing/gtest/src/src_processor_stackwalker_arm64_unittest-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-gtest-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_processor_stackwalker_arm64_unittest-gtest-all.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_stackwalker_arm64_unittest-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc
+
+src/testing/gtest/src/src_processor_stackwalker_arm64_unittest-gtest-all.obj: src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_stackwalker_arm64_unittest-gtest-all.obj -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-gtest-all.Tpo -c -o src/testing/gtest/src/src_processor_stackwalker_arm64_unittest-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-gtest-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_processor_stackwalker_arm64_unittest-gtest-all.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_stackwalker_arm64_unittest-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi`
+
+src/testing/gtest/src/src_processor_stackwalker_arm64_unittest-gtest_main.o: src/testing/gtest/src/gtest_main.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_stackwalker_arm64_unittest-gtest_main.o -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-gtest_main.Tpo -c -o src/testing/gtest/src/src_processor_stackwalker_arm64_unittest-gtest_main.o `test -f 'src/testing/gtest/src/gtest_main.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest_main.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-gtest_main.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-gtest_main.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest_main.cc' object='src/testing/gtest/src/src_processor_stackwalker_arm64_unittest-gtest_main.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_stackwalker_arm64_unittest-gtest_main.o `test -f 'src/testing/gtest/src/gtest_main.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest_main.cc
+
+src/testing/gtest/src/src_processor_stackwalker_arm64_unittest-gtest_main.obj: src/testing/gtest/src/gtest_main.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_stackwalker_arm64_unittest-gtest_main.obj -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-gtest_main.Tpo -c -o src/testing/gtest/src/src_processor_stackwalker_arm64_unittest-gtest_main.obj `if test -f 'src/testing/gtest/src/gtest_main.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest_main.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest_main.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-gtest_main.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-gtest_main.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest_main.cc' object='src/testing/gtest/src/src_processor_stackwalker_arm64_unittest-gtest_main.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_stackwalker_arm64_unittest-gtest_main.obj `if test -f 'src/testing/gtest/src/gtest_main.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest_main.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest_main.cc'; fi`
+
+src/testing/src/src_processor_stackwalker_arm64_unittest-gmock-all.o: src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_processor_stackwalker_arm64_unittest-gmock-all.o -MD -MP -MF src/testing/src/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-gmock-all.Tpo -c -o src/testing/src/src_processor_stackwalker_arm64_unittest-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-gmock-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_processor_stackwalker_arm64_unittest-gmock-all.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_processor_stackwalker_arm64_unittest-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc
+
+src/testing/src/src_processor_stackwalker_arm64_unittest-gmock-all.obj: src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_processor_stackwalker_arm64_unittest-gmock-all.obj -MD -MP -MF src/testing/src/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-gmock-all.Tpo -c -o src/testing/src/src_processor_stackwalker_arm64_unittest-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-gmock-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_processor_stackwalker_arm64_unittest-gmock-all.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_processor_stackwalker_arm64_unittest-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi`
+
+src/common/src_processor_stackwalker_arm_unittest-test_assembler.o: src/common/test_assembler.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_processor_stackwalker_arm_unittest-test_assembler.o -MD -MP -MF src/common/$(DEPDIR)/src_processor_stackwalker_arm_unittest-test_assembler.Tpo -c -o src/common/src_processor_stackwalker_arm_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_processor_stackwalker_arm_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_processor_stackwalker_arm_unittest-test_assembler.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_processor_stackwalker_arm_unittest-test_assembler.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_processor_stackwalker_arm_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc
+
+src/common/src_processor_stackwalker_arm_unittest-test_assembler.obj: src/common/test_assembler.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_processor_stackwalker_arm_unittest-test_assembler.obj -MD -MP -MF src/common/$(DEPDIR)/src_processor_stackwalker_arm_unittest-test_assembler.Tpo -c -o src/common/src_processor_stackwalker_arm_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_processor_stackwalker_arm_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_processor_stackwalker_arm_unittest-test_assembler.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_processor_stackwalker_arm_unittest-test_assembler.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_processor_stackwalker_arm_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi`
+
+src/processor/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.o: src/processor/stackwalker_arm_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.Tpo -c -o src/processor/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.o `test -f 'src/processor/stackwalker_arm_unittest.cc' || echo '$(srcdir)/'`src/processor/stackwalker_arm_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.Tpo src/processor/$(DEPDIR)/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/stackwalker_arm_unittest.cc' object='src/processor/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.o `test -f 'src/processor/stackwalker_arm_unittest.cc' || echo '$(srcdir)/'`src/processor/stackwalker_arm_unittest.cc
+
+src/processor/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.obj: src/processor/stackwalker_arm_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.Tpo -c -o src/processor/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.obj `if test -f 'src/processor/stackwalker_arm_unittest.cc'; then $(CYGPATH_W) 'src/processor/stackwalker_arm_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/stackwalker_arm_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.Tpo src/processor/$(DEPDIR)/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/stackwalker_arm_unittest.cc' object='src/processor/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.obj `if test -f 'src/processor/stackwalker_arm_unittest.cc'; then $(CYGPATH_W) 'src/processor/stackwalker_arm_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/stackwalker_arm_unittest.cc'; fi`
+
+src/testing/gtest/src/src_processor_stackwalker_arm_unittest-gtest-all.o: src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_stackwalker_arm_unittest-gtest-all.o -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_arm_unittest-gtest-all.Tpo -c -o src/testing/gtest/src/src_processor_stackwalker_arm_unittest-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_arm_unittest-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_arm_unittest-gtest-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_processor_stackwalker_arm_unittest-gtest-all.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_stackwalker_arm_unittest-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc
+
+src/testing/gtest/src/src_processor_stackwalker_arm_unittest-gtest-all.obj: src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_stackwalker_arm_unittest-gtest-all.obj -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_arm_unittest-gtest-all.Tpo -c -o src/testing/gtest/src/src_processor_stackwalker_arm_unittest-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_arm_unittest-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_arm_unittest-gtest-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_processor_stackwalker_arm_unittest-gtest-all.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_stackwalker_arm_unittest-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi`
+
+src/testing/gtest/src/src_processor_stackwalker_arm_unittest-gtest_main.o: src/testing/gtest/src/gtest_main.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_stackwalker_arm_unittest-gtest_main.o -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_arm_unittest-gtest_main.Tpo -c -o src/testing/gtest/src/src_processor_stackwalker_arm_unittest-gtest_main.o `test -f 'src/testing/gtest/src/gtest_main.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest_main.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_arm_unittest-gtest_main.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_arm_unittest-gtest_main.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest_main.cc' object='src/testing/gtest/src/src_processor_stackwalker_arm_unittest-gtest_main.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_stackwalker_arm_unittest-gtest_main.o `test -f 'src/testing/gtest/src/gtest_main.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest_main.cc
+
+src/testing/gtest/src/src_processor_stackwalker_arm_unittest-gtest_main.obj: src/testing/gtest/src/gtest_main.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_stackwalker_arm_unittest-gtest_main.obj -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_arm_unittest-gtest_main.Tpo -c -o src/testing/gtest/src/src_processor_stackwalker_arm_unittest-gtest_main.obj `if test -f 'src/testing/gtest/src/gtest_main.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest_main.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest_main.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_arm_unittest-gtest_main.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_arm_unittest-gtest_main.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest_main.cc' object='src/testing/gtest/src/src_processor_stackwalker_arm_unittest-gtest_main.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_stackwalker_arm_unittest-gtest_main.obj `if test -f 'src/testing/gtest/src/gtest_main.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest_main.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest_main.cc'; fi`
+
+src/testing/src/src_processor_stackwalker_arm_unittest-gmock-all.o: src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_processor_stackwalker_arm_unittest-gmock-all.o -MD -MP -MF src/testing/src/$(DEPDIR)/src_processor_stackwalker_arm_unittest-gmock-all.Tpo -c -o src/testing/src/src_processor_stackwalker_arm_unittest-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_processor_stackwalker_arm_unittest-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_processor_stackwalker_arm_unittest-gmock-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_processor_stackwalker_arm_unittest-gmock-all.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_processor_stackwalker_arm_unittest-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc
+
+src/testing/src/src_processor_stackwalker_arm_unittest-gmock-all.obj: src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_processor_stackwalker_arm_unittest-gmock-all.obj -MD -MP -MF src/testing/src/$(DEPDIR)/src_processor_stackwalker_arm_unittest-gmock-all.Tpo -c -o src/testing/src/src_processor_stackwalker_arm_unittest-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_processor_stackwalker_arm_unittest-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_processor_stackwalker_arm_unittest-gmock-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_processor_stackwalker_arm_unittest-gmock-all.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_processor_stackwalker_arm_unittest-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi`
+
+src/common/src_processor_stackwalker_mips_unittest-test_assembler.o: src/common/test_assembler.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_mips_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_processor_stackwalker_mips_unittest-test_assembler.o -MD -MP -MF src/common/$(DEPDIR)/src_processor_stackwalker_mips_unittest-test_assembler.Tpo -c -o src/common/src_processor_stackwalker_mips_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_processor_stackwalker_mips_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_processor_stackwalker_mips_unittest-test_assembler.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_processor_stackwalker_mips_unittest-test_assembler.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_mips_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_processor_stackwalker_mips_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc
+
+src/common/src_processor_stackwalker_mips_unittest-test_assembler.obj: src/common/test_assembler.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_mips_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_processor_stackwalker_mips_unittest-test_assembler.obj -MD -MP -MF src/common/$(DEPDIR)/src_processor_stackwalker_mips_unittest-test_assembler.Tpo -c -o src/common/src_processor_stackwalker_mips_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_processor_stackwalker_mips_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_processor_stackwalker_mips_unittest-test_assembler.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_processor_stackwalker_mips_unittest-test_assembler.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_mips_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_processor_stackwalker_mips_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi`
+
+src/processor/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.o: src/processor/stackwalker_mips_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_mips_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.Tpo -c -o src/processor/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.o `test -f 'src/processor/stackwalker_mips_unittest.cc' || echo '$(srcdir)/'`src/processor/stackwalker_mips_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.Tpo src/processor/$(DEPDIR)/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/stackwalker_mips_unittest.cc' object='src/processor/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_mips_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.o `test -f 'src/processor/stackwalker_mips_unittest.cc' || echo '$(srcdir)/'`src/processor/stackwalker_mips_unittest.cc
+
+src/processor/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.obj: src/processor/stackwalker_mips_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_mips_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.Tpo -c -o src/processor/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.obj `if test -f 'src/processor/stackwalker_mips_unittest.cc'; then $(CYGPATH_W) 'src/processor/stackwalker_mips_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/stackwalker_mips_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.Tpo src/processor/$(DEPDIR)/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/stackwalker_mips_unittest.cc' object='src/processor/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_mips_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.obj `if test -f 'src/processor/stackwalker_mips_unittest.cc'; then $(CYGPATH_W) 'src/processor/stackwalker_mips_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/stackwalker_mips_unittest.cc'; fi`
+
+src/testing/gtest/src/src_processor_stackwalker_mips_unittest-gtest-all.o: src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_mips_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_stackwalker_mips_unittest-gtest-all.o -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_mips_unittest-gtest-all.Tpo -c -o src/testing/gtest/src/src_processor_stackwalker_mips_unittest-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_mips_unittest-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_mips_unittest-gtest-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_processor_stackwalker_mips_unittest-gtest-all.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_mips_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_stackwalker_mips_unittest-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc
+
+src/testing/gtest/src/src_processor_stackwalker_mips_unittest-gtest-all.obj: src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_mips_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_stackwalker_mips_unittest-gtest-all.obj -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_mips_unittest-gtest-all.Tpo -c -o src/testing/gtest/src/src_processor_stackwalker_mips_unittest-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_mips_unittest-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_mips_unittest-gtest-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_processor_stackwalker_mips_unittest-gtest-all.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_mips_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_stackwalker_mips_unittest-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi`
+
+src/testing/gtest/src/src_processor_stackwalker_mips_unittest-gtest_main.o: src/testing/gtest/src/gtest_main.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_mips_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_stackwalker_mips_unittest-gtest_main.o -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_mips_unittest-gtest_main.Tpo -c -o src/testing/gtest/src/src_processor_stackwalker_mips_unittest-gtest_main.o `test -f 'src/testing/gtest/src/gtest_main.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest_main.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_mips_unittest-gtest_main.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_mips_unittest-gtest_main.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest_main.cc' object='src/testing/gtest/src/src_processor_stackwalker_mips_unittest-gtest_main.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_mips_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_stackwalker_mips_unittest-gtest_main.o `test -f 'src/testing/gtest/src/gtest_main.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest_main.cc
+
+src/testing/gtest/src/src_processor_stackwalker_mips_unittest-gtest_main.obj: src/testing/gtest/src/gtest_main.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_mips_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_stackwalker_mips_unittest-gtest_main.obj -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_mips_unittest-gtest_main.Tpo -c -o src/testing/gtest/src/src_processor_stackwalker_mips_unittest-gtest_main.obj `if test -f 'src/testing/gtest/src/gtest_main.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest_main.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest_main.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_mips_unittest-gtest_main.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_mips_unittest-gtest_main.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest_main.cc' object='src/testing/gtest/src/src_processor_stackwalker_mips_unittest-gtest_main.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_mips_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_stackwalker_mips_unittest-gtest_main.obj `if test -f 'src/testing/gtest/src/gtest_main.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest_main.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest_main.cc'; fi`
+
+src/testing/src/src_processor_stackwalker_mips_unittest-gmock-all.o: src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_mips_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_processor_stackwalker_mips_unittest-gmock-all.o -MD -MP -MF src/testing/src/$(DEPDIR)/src_processor_stackwalker_mips_unittest-gmock-all.Tpo -c -o src/testing/src/src_processor_stackwalker_mips_unittest-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_processor_stackwalker_mips_unittest-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_processor_stackwalker_mips_unittest-gmock-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_processor_stackwalker_mips_unittest-gmock-all.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_mips_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_processor_stackwalker_mips_unittest-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc
+
+src/testing/src/src_processor_stackwalker_mips_unittest-gmock-all.obj: src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_mips_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_processor_stackwalker_mips_unittest-gmock-all.obj -MD -MP -MF src/testing/src/$(DEPDIR)/src_processor_stackwalker_mips_unittest-gmock-all.Tpo -c -o src/testing/src/src_processor_stackwalker_mips_unittest-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_processor_stackwalker_mips_unittest-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_processor_stackwalker_mips_unittest-gmock-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_processor_stackwalker_mips_unittest-gmock-all.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_mips_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_processor_stackwalker_mips_unittest-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi`
+
+src/common/src_processor_stackwalker_x86_unittest-test_assembler.o: src/common/test_assembler.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_processor_stackwalker_x86_unittest-test_assembler.o -MD -MP -MF src/common/$(DEPDIR)/src_processor_stackwalker_x86_unittest-test_assembler.Tpo -c -o src/common/src_processor_stackwalker_x86_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_processor_stackwalker_x86_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_processor_stackwalker_x86_unittest-test_assembler.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_processor_stackwalker_x86_unittest-test_assembler.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_processor_stackwalker_x86_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc
+
+src/common/src_processor_stackwalker_x86_unittest-test_assembler.obj: src/common/test_assembler.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_processor_stackwalker_x86_unittest-test_assembler.obj -MD -MP -MF src/common/$(DEPDIR)/src_processor_stackwalker_x86_unittest-test_assembler.Tpo -c -o src/common/src_processor_stackwalker_x86_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_processor_stackwalker_x86_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_processor_stackwalker_x86_unittest-test_assembler.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_processor_stackwalker_x86_unittest-test_assembler.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_processor_stackwalker_x86_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi`
+
+src/processor/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.o: src/processor/stackwalker_x86_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.Tpo -c -o src/processor/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.o `test -f 'src/processor/stackwalker_x86_unittest.cc' || echo '$(srcdir)/'`src/processor/stackwalker_x86_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.Tpo src/processor/$(DEPDIR)/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/stackwalker_x86_unittest.cc' object='src/processor/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.o `test -f 'src/processor/stackwalker_x86_unittest.cc' || echo '$(srcdir)/'`src/processor/stackwalker_x86_unittest.cc
+
+src/processor/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.obj: src/processor/stackwalker_x86_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.Tpo -c -o src/processor/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.obj `if test -f 'src/processor/stackwalker_x86_unittest.cc'; then $(CYGPATH_W) 'src/processor/stackwalker_x86_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/stackwalker_x86_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.Tpo src/processor/$(DEPDIR)/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/stackwalker_x86_unittest.cc' object='src/processor/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.obj `if test -f 'src/processor/stackwalker_x86_unittest.cc'; then $(CYGPATH_W) 'src/processor/stackwalker_x86_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/stackwalker_x86_unittest.cc'; fi`
+
+src/testing/gtest/src/src_processor_stackwalker_x86_unittest-gtest-all.o: src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_stackwalker_x86_unittest-gtest-all.o -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_x86_unittest-gtest-all.Tpo -c -o src/testing/gtest/src/src_processor_stackwalker_x86_unittest-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_x86_unittest-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_x86_unittest-gtest-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_processor_stackwalker_x86_unittest-gtest-all.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_stackwalker_x86_unittest-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc
+
+src/testing/gtest/src/src_processor_stackwalker_x86_unittest-gtest-all.obj: src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_stackwalker_x86_unittest-gtest-all.obj -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_x86_unittest-gtest-all.Tpo -c -o src/testing/gtest/src/src_processor_stackwalker_x86_unittest-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_x86_unittest-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_x86_unittest-gtest-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_processor_stackwalker_x86_unittest-gtest-all.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_stackwalker_x86_unittest-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi`
+
+src/testing/gtest/src/src_processor_stackwalker_x86_unittest-gtest_main.o: src/testing/gtest/src/gtest_main.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_stackwalker_x86_unittest-gtest_main.o -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_x86_unittest-gtest_main.Tpo -c -o src/testing/gtest/src/src_processor_stackwalker_x86_unittest-gtest_main.o `test -f 'src/testing/gtest/src/gtest_main.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest_main.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_x86_unittest-gtest_main.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_x86_unittest-gtest_main.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest_main.cc' object='src/testing/gtest/src/src_processor_stackwalker_x86_unittest-gtest_main.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_stackwalker_x86_unittest-gtest_main.o `test -f 'src/testing/gtest/src/gtest_main.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest_main.cc
+
+src/testing/gtest/src/src_processor_stackwalker_x86_unittest-gtest_main.obj: src/testing/gtest/src/gtest_main.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_stackwalker_x86_unittest-gtest_main.obj -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_x86_unittest-gtest_main.Tpo -c -o src/testing/gtest/src/src_processor_stackwalker_x86_unittest-gtest_main.obj `if test -f 'src/testing/gtest/src/gtest_main.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest_main.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest_main.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_x86_unittest-gtest_main.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_stackwalker_x86_unittest-gtest_main.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest_main.cc' object='src/testing/gtest/src/src_processor_stackwalker_x86_unittest-gtest_main.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_stackwalker_x86_unittest-gtest_main.obj `if test -f 'src/testing/gtest/src/gtest_main.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest_main.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest_main.cc'; fi`
+
+src/testing/src/src_processor_stackwalker_x86_unittest-gmock-all.o: src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_processor_stackwalker_x86_unittest-gmock-all.o -MD -MP -MF src/testing/src/$(DEPDIR)/src_processor_stackwalker_x86_unittest-gmock-all.Tpo -c -o src/testing/src/src_processor_stackwalker_x86_unittest-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_processor_stackwalker_x86_unittest-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_processor_stackwalker_x86_unittest-gmock-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_processor_stackwalker_x86_unittest-gmock-all.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_processor_stackwalker_x86_unittest-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc
+
+src/testing/src/src_processor_stackwalker_x86_unittest-gmock-all.obj: src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_processor_stackwalker_x86_unittest-gmock-all.obj -MD -MP -MF src/testing/src/$(DEPDIR)/src_processor_stackwalker_x86_unittest-gmock-all.Tpo -c -o src/testing/src/src_processor_stackwalker_x86_unittest-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_processor_stackwalker_x86_unittest-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_processor_stackwalker_x86_unittest-gmock-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_processor_stackwalker_x86_unittest-gmock-all.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_processor_stackwalker_x86_unittest-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi`
+
+src/processor/src_processor_static_address_map_unittest-static_address_map_unittest.o: src/processor/static_address_map_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_address_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_static_address_map_unittest-static_address_map_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_static_address_map_unittest-static_address_map_unittest.Tpo -c -o src/processor/src_processor_static_address_map_unittest-static_address_map_unittest.o `test -f 'src/processor/static_address_map_unittest.cc' || echo '$(srcdir)/'`src/processor/static_address_map_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_static_address_map_unittest-static_address_map_unittest.Tpo src/processor/$(DEPDIR)/src_processor_static_address_map_unittest-static_address_map_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/static_address_map_unittest.cc' object='src/processor/src_processor_static_address_map_unittest-static_address_map_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_address_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_static_address_map_unittest-static_address_map_unittest.o `test -f 'src/processor/static_address_map_unittest.cc' || echo '$(srcdir)/'`src/processor/static_address_map_unittest.cc
+
+src/processor/src_processor_static_address_map_unittest-static_address_map_unittest.obj: src/processor/static_address_map_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_address_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_static_address_map_unittest-static_address_map_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_static_address_map_unittest-static_address_map_unittest.Tpo -c -o src/processor/src_processor_static_address_map_unittest-static_address_map_unittest.obj `if test -f 'src/processor/static_address_map_unittest.cc'; then $(CYGPATH_W) 'src/processor/static_address_map_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/static_address_map_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_static_address_map_unittest-static_address_map_unittest.Tpo src/processor/$(DEPDIR)/src_processor_static_address_map_unittest-static_address_map_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/static_address_map_unittest.cc' object='src/processor/src_processor_static_address_map_unittest-static_address_map_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_address_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_static_address_map_unittest-static_address_map_unittest.obj `if test -f 'src/processor/static_address_map_unittest.cc'; then $(CYGPATH_W) 'src/processor/static_address_map_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/static_address_map_unittest.cc'; fi`
+
+src/testing/gtest/src/src_processor_static_address_map_unittest-gtest-all.o: src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_address_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_static_address_map_unittest-gtest-all.o -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_static_address_map_unittest-gtest-all.Tpo -c -o src/testing/gtest/src/src_processor_static_address_map_unittest-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_static_address_map_unittest-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_static_address_map_unittest-gtest-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_processor_static_address_map_unittest-gtest-all.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_address_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_static_address_map_unittest-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc
+
+src/testing/gtest/src/src_processor_static_address_map_unittest-gtest-all.obj: src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_address_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_static_address_map_unittest-gtest-all.obj -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_static_address_map_unittest-gtest-all.Tpo -c -o src/testing/gtest/src/src_processor_static_address_map_unittest-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_static_address_map_unittest-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_static_address_map_unittest-gtest-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_processor_static_address_map_unittest-gtest-all.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_address_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_static_address_map_unittest-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi`
+
+src/testing/src/src_processor_static_address_map_unittest-gmock-all.o: src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_address_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_processor_static_address_map_unittest-gmock-all.o -MD -MP -MF src/testing/src/$(DEPDIR)/src_processor_static_address_map_unittest-gmock-all.Tpo -c -o src/testing/src/src_processor_static_address_map_unittest-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_processor_static_address_map_unittest-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_processor_static_address_map_unittest-gmock-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_processor_static_address_map_unittest-gmock-all.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_address_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_processor_static_address_map_unittest-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc
+
+src/testing/src/src_processor_static_address_map_unittest-gmock-all.obj: src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_address_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_processor_static_address_map_unittest-gmock-all.obj -MD -MP -MF src/testing/src/$(DEPDIR)/src_processor_static_address_map_unittest-gmock-all.Tpo -c -o src/testing/src/src_processor_static_address_map_unittest-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_processor_static_address_map_unittest-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_processor_static_address_map_unittest-gmock-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_processor_static_address_map_unittest-gmock-all.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_address_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_processor_static_address_map_unittest-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi`
+
+src/processor/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.o: src/processor/static_contained_range_map_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_contained_range_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.Tpo -c -o src/processor/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.o `test -f 'src/processor/static_contained_range_map_unittest.cc' || echo '$(srcdir)/'`src/processor/static_contained_range_map_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.Tpo src/processor/$(DEPDIR)/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/static_contained_range_map_unittest.cc' object='src/processor/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_contained_range_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.o `test -f 'src/processor/static_contained_range_map_unittest.cc' || echo '$(srcdir)/'`src/processor/static_contained_range_map_unittest.cc
+
+src/processor/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.obj: src/processor/static_contained_range_map_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_contained_range_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.Tpo -c -o src/processor/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.obj `if test -f 'src/processor/static_contained_range_map_unittest.cc'; then $(CYGPATH_W) 'src/processor/static_contained_range_map_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/static_contained_range_map_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.Tpo src/processor/$(DEPDIR)/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/static_contained_range_map_unittest.cc' object='src/processor/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_contained_range_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.obj `if test -f 'src/processor/static_contained_range_map_unittest.cc'; then $(CYGPATH_W) 'src/processor/static_contained_range_map_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/static_contained_range_map_unittest.cc'; fi`
+
+src/testing/gtest/src/src_processor_static_contained_range_map_unittest-gtest-all.o: src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_contained_range_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_static_contained_range_map_unittest-gtest-all.o -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_static_contained_range_map_unittest-gtest-all.Tpo -c -o src/testing/gtest/src/src_processor_static_contained_range_map_unittest-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_static_contained_range_map_unittest-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_static_contained_range_map_unittest-gtest-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_processor_static_contained_range_map_unittest-gtest-all.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_contained_range_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_static_contained_range_map_unittest-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc
+
+src/testing/gtest/src/src_processor_static_contained_range_map_unittest-gtest-all.obj: src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_contained_range_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_static_contained_range_map_unittest-gtest-all.obj -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_static_contained_range_map_unittest-gtest-all.Tpo -c -o src/testing/gtest/src/src_processor_static_contained_range_map_unittest-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_static_contained_range_map_unittest-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_static_contained_range_map_unittest-gtest-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_processor_static_contained_range_map_unittest-gtest-all.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_contained_range_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_static_contained_range_map_unittest-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi`
+
+src/testing/src/src_processor_static_contained_range_map_unittest-gmock-all.o: src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_contained_range_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_processor_static_contained_range_map_unittest-gmock-all.o -MD -MP -MF src/testing/src/$(DEPDIR)/src_processor_static_contained_range_map_unittest-gmock-all.Tpo -c -o src/testing/src/src_processor_static_contained_range_map_unittest-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_processor_static_contained_range_map_unittest-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_processor_static_contained_range_map_unittest-gmock-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_processor_static_contained_range_map_unittest-gmock-all.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_contained_range_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_processor_static_contained_range_map_unittest-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc
+
+src/testing/src/src_processor_static_contained_range_map_unittest-gmock-all.obj: src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_contained_range_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_processor_static_contained_range_map_unittest-gmock-all.obj -MD -MP -MF src/testing/src/$(DEPDIR)/src_processor_static_contained_range_map_unittest-gmock-all.Tpo -c -o src/testing/src/src_processor_static_contained_range_map_unittest-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_processor_static_contained_range_map_unittest-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_processor_static_contained_range_map_unittest-gmock-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_processor_static_contained_range_map_unittest-gmock-all.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_contained_range_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_processor_static_contained_range_map_unittest-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi`
+
+src/processor/src_processor_static_map_unittest-static_map_unittest.o: src/processor/static_map_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_static_map_unittest-static_map_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_static_map_unittest-static_map_unittest.Tpo -c -o src/processor/src_processor_static_map_unittest-static_map_unittest.o `test -f 'src/processor/static_map_unittest.cc' || echo '$(srcdir)/'`src/processor/static_map_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_static_map_unittest-static_map_unittest.Tpo src/processor/$(DEPDIR)/src_processor_static_map_unittest-static_map_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/static_map_unittest.cc' object='src/processor/src_processor_static_map_unittest-static_map_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_static_map_unittest-static_map_unittest.o `test -f 'src/processor/static_map_unittest.cc' || echo '$(srcdir)/'`src/processor/static_map_unittest.cc
+
+src/processor/src_processor_static_map_unittest-static_map_unittest.obj: src/processor/static_map_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_static_map_unittest-static_map_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_static_map_unittest-static_map_unittest.Tpo -c -o src/processor/src_processor_static_map_unittest-static_map_unittest.obj `if test -f 'src/processor/static_map_unittest.cc'; then $(CYGPATH_W) 'src/processor/static_map_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/static_map_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_static_map_unittest-static_map_unittest.Tpo src/processor/$(DEPDIR)/src_processor_static_map_unittest-static_map_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/static_map_unittest.cc' object='src/processor/src_processor_static_map_unittest-static_map_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_static_map_unittest-static_map_unittest.obj `if test -f 'src/processor/static_map_unittest.cc'; then $(CYGPATH_W) 'src/processor/static_map_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/static_map_unittest.cc'; fi`
+
+src/testing/gtest/src/src_processor_static_map_unittest-gtest-all.o: src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_static_map_unittest-gtest-all.o -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_static_map_unittest-gtest-all.Tpo -c -o src/testing/gtest/src/src_processor_static_map_unittest-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_static_map_unittest-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_static_map_unittest-gtest-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_processor_static_map_unittest-gtest-all.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_static_map_unittest-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc
+
+src/testing/gtest/src/src_processor_static_map_unittest-gtest-all.obj: src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_static_map_unittest-gtest-all.obj -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_static_map_unittest-gtest-all.Tpo -c -o src/testing/gtest/src/src_processor_static_map_unittest-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_static_map_unittest-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_static_map_unittest-gtest-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_processor_static_map_unittest-gtest-all.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_static_map_unittest-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi`
+
+src/testing/src/src_processor_static_map_unittest-gmock-all.o: src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_processor_static_map_unittest-gmock-all.o -MD -MP -MF src/testing/src/$(DEPDIR)/src_processor_static_map_unittest-gmock-all.Tpo -c -o src/testing/src/src_processor_static_map_unittest-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_processor_static_map_unittest-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_processor_static_map_unittest-gmock-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_processor_static_map_unittest-gmock-all.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_processor_static_map_unittest-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc
+
+src/testing/src/src_processor_static_map_unittest-gmock-all.obj: src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_processor_static_map_unittest-gmock-all.obj -MD -MP -MF src/testing/src/$(DEPDIR)/src_processor_static_map_unittest-gmock-all.Tpo -c -o src/testing/src/src_processor_static_map_unittest-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_processor_static_map_unittest-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_processor_static_map_unittest-gmock-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_processor_static_map_unittest-gmock-all.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_processor_static_map_unittest-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi`
+
+src/processor/src_processor_static_range_map_unittest-static_range_map_unittest.o: src/processor/static_range_map_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_range_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_static_range_map_unittest-static_range_map_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_static_range_map_unittest-static_range_map_unittest.Tpo -c -o src/processor/src_processor_static_range_map_unittest-static_range_map_unittest.o `test -f 'src/processor/static_range_map_unittest.cc' || echo '$(srcdir)/'`src/processor/static_range_map_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_static_range_map_unittest-static_range_map_unittest.Tpo src/processor/$(DEPDIR)/src_processor_static_range_map_unittest-static_range_map_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/static_range_map_unittest.cc' object='src/processor/src_processor_static_range_map_unittest-static_range_map_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_range_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_static_range_map_unittest-static_range_map_unittest.o `test -f 'src/processor/static_range_map_unittest.cc' || echo '$(srcdir)/'`src/processor/static_range_map_unittest.cc
+
+src/processor/src_processor_static_range_map_unittest-static_range_map_unittest.obj: src/processor/static_range_map_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_range_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_static_range_map_unittest-static_range_map_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_static_range_map_unittest-static_range_map_unittest.Tpo -c -o src/processor/src_processor_static_range_map_unittest-static_range_map_unittest.obj `if test -f 'src/processor/static_range_map_unittest.cc'; then $(CYGPATH_W) 'src/processor/static_range_map_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/static_range_map_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_static_range_map_unittest-static_range_map_unittest.Tpo src/processor/$(DEPDIR)/src_processor_static_range_map_unittest-static_range_map_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/static_range_map_unittest.cc' object='src/processor/src_processor_static_range_map_unittest-static_range_map_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_range_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_static_range_map_unittest-static_range_map_unittest.obj `if test -f 'src/processor/static_range_map_unittest.cc'; then $(CYGPATH_W) 'src/processor/static_range_map_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/static_range_map_unittest.cc'; fi`
+
+src/testing/gtest/src/src_processor_static_range_map_unittest-gtest-all.o: src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_range_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_static_range_map_unittest-gtest-all.o -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_static_range_map_unittest-gtest-all.Tpo -c -o src/testing/gtest/src/src_processor_static_range_map_unittest-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_static_range_map_unittest-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_static_range_map_unittest-gtest-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_processor_static_range_map_unittest-gtest-all.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_range_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_static_range_map_unittest-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc
+
+src/testing/gtest/src/src_processor_static_range_map_unittest-gtest-all.obj: src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_range_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_static_range_map_unittest-gtest-all.obj -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_static_range_map_unittest-gtest-all.Tpo -c -o src/testing/gtest/src/src_processor_static_range_map_unittest-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_static_range_map_unittest-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_static_range_map_unittest-gtest-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_processor_static_range_map_unittest-gtest-all.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_range_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_static_range_map_unittest-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi`
+
+src/testing/src/src_processor_static_range_map_unittest-gmock-all.o: src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_range_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_processor_static_range_map_unittest-gmock-all.o -MD -MP -MF src/testing/src/$(DEPDIR)/src_processor_static_range_map_unittest-gmock-all.Tpo -c -o src/testing/src/src_processor_static_range_map_unittest-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_processor_static_range_map_unittest-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_processor_static_range_map_unittest-gmock-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_processor_static_range_map_unittest-gmock-all.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_range_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_processor_static_range_map_unittest-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc
+
+src/testing/src/src_processor_static_range_map_unittest-gmock-all.obj: src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_range_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_processor_static_range_map_unittest-gmock-all.obj -MD -MP -MF src/testing/src/$(DEPDIR)/src_processor_static_range_map_unittest-gmock-all.Tpo -c -o src/testing/src/src_processor_static_range_map_unittest-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_processor_static_range_map_unittest-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_processor_static_range_map_unittest-gmock-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_processor_static_range_map_unittest-gmock-all.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_range_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_processor_static_range_map_unittest-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi`
+
+src/common/src_processor_synth_minidump_unittest-test_assembler.o: src/common/test_assembler.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_synth_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_processor_synth_minidump_unittest-test_assembler.o -MD -MP -MF src/common/$(DEPDIR)/src_processor_synth_minidump_unittest-test_assembler.Tpo -c -o src/common/src_processor_synth_minidump_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_processor_synth_minidump_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_processor_synth_minidump_unittest-test_assembler.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_processor_synth_minidump_unittest-test_assembler.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_synth_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_processor_synth_minidump_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc
+
+src/common/src_processor_synth_minidump_unittest-test_assembler.obj: src/common/test_assembler.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_synth_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_processor_synth_minidump_unittest-test_assembler.obj -MD -MP -MF src/common/$(DEPDIR)/src_processor_synth_minidump_unittest-test_assembler.Tpo -c -o src/common/src_processor_synth_minidump_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_processor_synth_minidump_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_processor_synth_minidump_unittest-test_assembler.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_processor_synth_minidump_unittest-test_assembler.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_synth_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_processor_synth_minidump_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi`
+
+src/processor/src_processor_synth_minidump_unittest-synth_minidump_unittest.o: src/processor/synth_minidump_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_synth_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_synth_minidump_unittest-synth_minidump_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_synth_minidump_unittest-synth_minidump_unittest.Tpo -c -o src/processor/src_processor_synth_minidump_unittest-synth_minidump_unittest.o `test -f 'src/processor/synth_minidump_unittest.cc' || echo '$(srcdir)/'`src/processor/synth_minidump_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_synth_minidump_unittest-synth_minidump_unittest.Tpo src/processor/$(DEPDIR)/src_processor_synth_minidump_unittest-synth_minidump_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/synth_minidump_unittest.cc' object='src/processor/src_processor_synth_minidump_unittest-synth_minidump_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_synth_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_synth_minidump_unittest-synth_minidump_unittest.o `test -f 'src/processor/synth_minidump_unittest.cc' || echo '$(srcdir)/'`src/processor/synth_minidump_unittest.cc
+
+src/processor/src_processor_synth_minidump_unittest-synth_minidump_unittest.obj: src/processor/synth_minidump_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_synth_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_synth_minidump_unittest-synth_minidump_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_synth_minidump_unittest-synth_minidump_unittest.Tpo -c -o src/processor/src_processor_synth_minidump_unittest-synth_minidump_unittest.obj `if test -f 'src/processor/synth_minidump_unittest.cc'; then $(CYGPATH_W) 'src/processor/synth_minidump_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/synth_minidump_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_synth_minidump_unittest-synth_minidump_unittest.Tpo src/processor/$(DEPDIR)/src_processor_synth_minidump_unittest-synth_minidump_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/synth_minidump_unittest.cc' object='src/processor/src_processor_synth_minidump_unittest-synth_minidump_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_synth_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_synth_minidump_unittest-synth_minidump_unittest.obj `if test -f 'src/processor/synth_minidump_unittest.cc'; then $(CYGPATH_W) 'src/processor/synth_minidump_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/synth_minidump_unittest.cc'; fi`
+
+src/testing/gtest/src/src_processor_synth_minidump_unittest-gtest-all.o: src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_synth_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_synth_minidump_unittest-gtest-all.o -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_synth_minidump_unittest-gtest-all.Tpo -c -o src/testing/gtest/src/src_processor_synth_minidump_unittest-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_synth_minidump_unittest-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_synth_minidump_unittest-gtest-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_processor_synth_minidump_unittest-gtest-all.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_synth_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_synth_minidump_unittest-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc
+
+src/testing/gtest/src/src_processor_synth_minidump_unittest-gtest-all.obj: src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_synth_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_synth_minidump_unittest-gtest-all.obj -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_synth_minidump_unittest-gtest-all.Tpo -c -o src/testing/gtest/src/src_processor_synth_minidump_unittest-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_synth_minidump_unittest-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_synth_minidump_unittest-gtest-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_processor_synth_minidump_unittest-gtest-all.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_synth_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_synth_minidump_unittest-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi`
+
+src/testing/gtest/src/src_processor_synth_minidump_unittest-gtest_main.o: src/testing/gtest/src/gtest_main.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_synth_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_synth_minidump_unittest-gtest_main.o -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_synth_minidump_unittest-gtest_main.Tpo -c -o src/testing/gtest/src/src_processor_synth_minidump_unittest-gtest_main.o `test -f 'src/testing/gtest/src/gtest_main.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest_main.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_synth_minidump_unittest-gtest_main.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_synth_minidump_unittest-gtest_main.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest_main.cc' object='src/testing/gtest/src/src_processor_synth_minidump_unittest-gtest_main.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_synth_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_synth_minidump_unittest-gtest_main.o `test -f 'src/testing/gtest/src/gtest_main.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest_main.cc
+
+src/testing/gtest/src/src_processor_synth_minidump_unittest-gtest_main.obj: src/testing/gtest/src/gtest_main.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_synth_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_synth_minidump_unittest-gtest_main.obj -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_synth_minidump_unittest-gtest_main.Tpo -c -o src/testing/gtest/src/src_processor_synth_minidump_unittest-gtest_main.obj `if test -f 'src/testing/gtest/src/gtest_main.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest_main.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest_main.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_processor_synth_minidump_unittest-gtest_main.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_synth_minidump_unittest-gtest_main.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest_main.cc' object='src/testing/gtest/src/src_processor_synth_minidump_unittest-gtest_main.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_synth_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_synth_minidump_unittest-gtest_main.obj `if test -f 'src/testing/gtest/src/gtest_main.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest_main.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest_main.cc'; fi`
+
+src/testing/src/src_processor_synth_minidump_unittest-gmock-all.o: src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_synth_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_processor_synth_minidump_unittest-gmock-all.o -MD -MP -MF src/testing/src/$(DEPDIR)/src_processor_synth_minidump_unittest-gmock-all.Tpo -c -o src/testing/src/src_processor_synth_minidump_unittest-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_processor_synth_minidump_unittest-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_processor_synth_minidump_unittest-gmock-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_processor_synth_minidump_unittest-gmock-all.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_synth_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_processor_synth_minidump_unittest-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc
+
+src/testing/src/src_processor_synth_minidump_unittest-gmock-all.obj: src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_synth_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_processor_synth_minidump_unittest-gmock-all.obj -MD -MP -MF src/testing/src/$(DEPDIR)/src_processor_synth_minidump_unittest-gmock-all.Tpo -c -o src/testing/src/src_processor_synth_minidump_unittest-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_processor_synth_minidump_unittest-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_processor_synth_minidump_unittest-gmock-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_processor_synth_minidump_unittest-gmock-all.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_synth_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_processor_synth_minidump_unittest-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi`
+
+src/processor/src_processor_synth_minidump_unittest-synth_minidump.o: src/processor/synth_minidump.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_synth_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_synth_minidump_unittest-synth_minidump.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_synth_minidump_unittest-synth_minidump.Tpo -c -o src/processor/src_processor_synth_minidump_unittest-synth_minidump.o `test -f 'src/processor/synth_minidump.cc' || echo '$(srcdir)/'`src/processor/synth_minidump.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_synth_minidump_unittest-synth_minidump.Tpo src/processor/$(DEPDIR)/src_processor_synth_minidump_unittest-synth_minidump.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/synth_minidump.cc' object='src/processor/src_processor_synth_minidump_unittest-synth_minidump.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_synth_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_synth_minidump_unittest-synth_minidump.o `test -f 'src/processor/synth_minidump.cc' || echo '$(srcdir)/'`src/processor/synth_minidump.cc
+
+src/processor/src_processor_synth_minidump_unittest-synth_minidump.obj: src/processor/synth_minidump.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_synth_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_synth_minidump_unittest-synth_minidump.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_synth_minidump_unittest-synth_minidump.Tpo -c -o src/processor/src_processor_synth_minidump_unittest-synth_minidump.obj `if test -f 'src/processor/synth_minidump.cc'; then $(CYGPATH_W) 'src/processor/synth_minidump.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/synth_minidump.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_synth_minidump_unittest-synth_minidump.Tpo src/processor/$(DEPDIR)/src_processor_synth_minidump_unittest-synth_minidump.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/processor/synth_minidump.cc' object='src/processor/src_processor_synth_minidump_unittest-synth_minidump.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_synth_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_synth_minidump_unittest-synth_minidump.obj `if test -f 'src/processor/synth_minidump.cc'; then $(CYGPATH_W) 'src/processor/synth_minidump.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/synth_minidump.cc'; fi`
+
+src/testing/gtest/src/src_tools_linux_md2core_minidump_2_core_unittest-gtest-all.o: src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_tools_linux_md2core_minidump_2_core_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_tools_linux_md2core_minidump_2_core_unittest-gtest-all.o -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_tools_linux_md2core_minidump_2_core_unittest-gtest-all.Tpo -c -o src/testing/gtest/src/src_tools_linux_md2core_minidump_2_core_unittest-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_tools_linux_md2core_minidump_2_core_unittest-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_tools_linux_md2core_minidump_2_core_unittest-gtest-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_tools_linux_md2core_minidump_2_core_unittest-gtest-all.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_tools_linux_md2core_minidump_2_core_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_tools_linux_md2core_minidump_2_core_unittest-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc
+
+src/testing/gtest/src/src_tools_linux_md2core_minidump_2_core_unittest-gtest-all.obj: src/testing/gtest/src/gtest-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_tools_linux_md2core_minidump_2_core_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_tools_linux_md2core_minidump_2_core_unittest-gtest-all.obj -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_tools_linux_md2core_minidump_2_core_unittest-gtest-all.Tpo -c -o src/testing/gtest/src/src_tools_linux_md2core_minidump_2_core_unittest-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_tools_linux_md2core_minidump_2_core_unittest-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_tools_linux_md2core_minidump_2_core_unittest-gtest-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_tools_linux_md2core_minidump_2_core_unittest-gtest-all.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_tools_linux_md2core_minidump_2_core_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_tools_linux_md2core_minidump_2_core_unittest-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi`
+
+src/testing/gtest/src/src_tools_linux_md2core_minidump_2_core_unittest-gtest_main.o: src/testing/gtest/src/gtest_main.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_tools_linux_md2core_minidump_2_core_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_tools_linux_md2core_minidump_2_core_unittest-gtest_main.o -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_tools_linux_md2core_minidump_2_core_unittest-gtest_main.Tpo -c -o src/testing/gtest/src/src_tools_linux_md2core_minidump_2_core_unittest-gtest_main.o `test -f 'src/testing/gtest/src/gtest_main.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest_main.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_tools_linux_md2core_minidump_2_core_unittest-gtest_main.Tpo src/testing/gtest/src/$(DEPDIR)/src_tools_linux_md2core_minidump_2_core_unittest-gtest_main.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest_main.cc' object='src/testing/gtest/src/src_tools_linux_md2core_minidump_2_core_unittest-gtest_main.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_tools_linux_md2core_minidump_2_core_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_tools_linux_md2core_minidump_2_core_unittest-gtest_main.o `test -f 'src/testing/gtest/src/gtest_main.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest_main.cc
+
+src/testing/gtest/src/src_tools_linux_md2core_minidump_2_core_unittest-gtest_main.obj: src/testing/gtest/src/gtest_main.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_tools_linux_md2core_minidump_2_core_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_tools_linux_md2core_minidump_2_core_unittest-gtest_main.obj -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_tools_linux_md2core_minidump_2_core_unittest-gtest_main.Tpo -c -o src/testing/gtest/src/src_tools_linux_md2core_minidump_2_core_unittest-gtest_main.obj `if test -f 'src/testing/gtest/src/gtest_main.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest_main.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest_main.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_tools_linux_md2core_minidump_2_core_unittest-gtest_main.Tpo src/testing/gtest/src/$(DEPDIR)/src_tools_linux_md2core_minidump_2_core_unittest-gtest_main.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/gtest/src/gtest_main.cc' object='src/testing/gtest/src/src_tools_linux_md2core_minidump_2_core_unittest-gtest_main.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_tools_linux_md2core_minidump_2_core_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_tools_linux_md2core_minidump_2_core_unittest-gtest_main.obj `if test -f 'src/testing/gtest/src/gtest_main.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest_main.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest_main.cc'; fi`
+
+src/testing/src/src_tools_linux_md2core_minidump_2_core_unittest-gmock-all.o: src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_tools_linux_md2core_minidump_2_core_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_tools_linux_md2core_minidump_2_core_unittest-gmock-all.o -MD -MP -MF src/testing/src/$(DEPDIR)/src_tools_linux_md2core_minidump_2_core_unittest-gmock-all.Tpo -c -o src/testing/src/src_tools_linux_md2core_minidump_2_core_unittest-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_tools_linux_md2core_minidump_2_core_unittest-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_tools_linux_md2core_minidump_2_core_unittest-gmock-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_tools_linux_md2core_minidump_2_core_unittest-gmock-all.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_tools_linux_md2core_minidump_2_core_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_tools_linux_md2core_minidump_2_core_unittest-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc
+
+src/testing/src/src_tools_linux_md2core_minidump_2_core_unittest-gmock-all.obj: src/testing/src/gmock-all.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_tools_linux_md2core_minidump_2_core_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_tools_linux_md2core_minidump_2_core_unittest-gmock-all.obj -MD -MP -MF src/testing/src/$(DEPDIR)/src_tools_linux_md2core_minidump_2_core_unittest-gmock-all.Tpo -c -o src/testing/src/src_tools_linux_md2core_minidump_2_core_unittest-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_tools_linux_md2core_minidump_2_core_unittest-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_tools_linux_md2core_minidump_2_core_unittest-gmock-all.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_tools_linux_md2core_minidump_2_core_unittest-gmock-all.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_tools_linux_md2core_minidump_2_core_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_tools_linux_md2core_minidump_2_core_unittest-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi`
+
+src/tools/linux/md2core/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.o: src/tools/linux/md2core/minidump_memory_range_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_tools_linux_md2core_minidump_2_core_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/tools/linux/md2core/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.o -MD -MP -MF src/tools/linux/md2core/$(DEPDIR)/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.Tpo -c -o src/tools/linux/md2core/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.o `test -f 'src/tools/linux/md2core/minidump_memory_range_unittest.cc' || echo '$(srcdir)/'`src/tools/linux/md2core/minidump_memory_range_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/tools/linux/md2core/$(DEPDIR)/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.Tpo src/tools/linux/md2core/$(DEPDIR)/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/tools/linux/md2core/minidump_memory_range_unittest.cc' object='src/tools/linux/md2core/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_tools_linux_md2core_minidump_2_core_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/tools/linux/md2core/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.o `test -f 'src/tools/linux/md2core/minidump_memory_range_unittest.cc' || echo '$(srcdir)/'`src/tools/linux/md2core/minidump_memory_range_unittest.cc
+
+src/tools/linux/md2core/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.obj: src/tools/linux/md2core/minidump_memory_range_unittest.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_tools_linux_md2core_minidump_2_core_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/tools/linux/md2core/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.obj -MD -MP -MF src/tools/linux/md2core/$(DEPDIR)/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.Tpo -c -o src/tools/linux/md2core/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.obj `if test -f 'src/tools/linux/md2core/minidump_memory_range_unittest.cc'; then $(CYGPATH_W) 'src/tools/linux/md2core/minidump_memory_range_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/tools/linux/md2core/minidump_memory_range_unittest.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) src/tools/linux/md2core/$(DEPDIR)/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.Tpo src/tools/linux/md2core/$(DEPDIR)/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='src/tools/linux/md2core/minidump_memory_range_unittest.cc' object='src/tools/linux/md2core/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_tools_linux_md2core_minidump_2_core_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/tools/linux/md2core/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.obj `if test -f 'src/tools/linux/md2core/minidump_memory_range_unittest.cc'; then $(CYGPATH_W) 'src/tools/linux/md2core/minidump_memory_range_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/tools/linux/md2core/minidump_memory_range_unittest.cc'; fi`
+install-dist_docDATA: $(dist_doc_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \
+	done
+
+uninstall-dist_docDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir)
+install-pkgconfigDATA: $(pkgconfig_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \
+	done
+
+uninstall-pkgconfigDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir)
+install-includecHEADERS: $(includec_HEADERS)
+	@$(NORMAL_INSTALL)
+	@list='$(includec_HEADERS)'; test -n "$(includecdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(includecdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(includecdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includecdir)'"; \
+	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(includecdir)" || exit $$?; \
+	done
+
+uninstall-includecHEADERS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(includec_HEADERS)'; test -n "$(includecdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(includecdir)'; $(am__uninstall_files_from_dir)
+install-includeclHEADERS: $(includecl_HEADERS)
+	@$(NORMAL_INSTALL)
+	@list='$(includecl_HEADERS)'; test -n "$(includecldir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(includecldir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(includecldir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includecldir)'"; \
+	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(includecldir)" || exit $$?; \
+	done
+
+uninstall-includeclHEADERS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(includecl_HEADERS)'; test -n "$(includecldir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(includecldir)'; $(am__uninstall_files_from_dir)
+install-includeclcHEADERS: $(includeclc_HEADERS)
+	@$(NORMAL_INSTALL)
+	@list='$(includeclc_HEADERS)'; test -n "$(includeclcdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(includeclcdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(includeclcdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includeclcdir)'"; \
+	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(includeclcdir)" || exit $$?; \
+	done
+
+uninstall-includeclcHEADERS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(includeclc_HEADERS)'; test -n "$(includeclcdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(includeclcdir)'; $(am__uninstall_files_from_dir)
+install-includeclhHEADERS: $(includeclh_HEADERS)
+	@$(NORMAL_INSTALL)
+	@list='$(includeclh_HEADERS)'; test -n "$(includeclhdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(includeclhdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(includeclhdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includeclhdir)'"; \
+	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(includeclhdir)" || exit $$?; \
+	done
+
+uninstall-includeclhHEADERS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(includeclh_HEADERS)'; test -n "$(includeclhdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(includeclhdir)'; $(am__uninstall_files_from_dir)
+install-includeclmHEADERS: $(includeclm_HEADERS)
+	@$(NORMAL_INSTALL)
+	@list='$(includeclm_HEADERS)'; test -n "$(includeclmdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(includeclmdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(includeclmdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includeclmdir)'"; \
+	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(includeclmdir)" || exit $$?; \
+	done
+
+uninstall-includeclmHEADERS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(includeclm_HEADERS)'; test -n "$(includeclmdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(includeclmdir)'; $(am__uninstall_files_from_dir)
+install-includegbcHEADERS: $(includegbc_HEADERS)
+	@$(NORMAL_INSTALL)
+	@list='$(includegbc_HEADERS)'; test -n "$(includegbcdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(includegbcdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(includegbcdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includegbcdir)'"; \
+	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(includegbcdir)" || exit $$?; \
+	done
+
+uninstall-includegbcHEADERS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(includegbc_HEADERS)'; test -n "$(includegbcdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(includegbcdir)'; $(am__uninstall_files_from_dir)
+install-includelssHEADERS: $(includelss_HEADERS)
+	@$(NORMAL_INSTALL)
+	@list='$(includelss_HEADERS)'; test -n "$(includelssdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(includelssdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(includelssdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includelssdir)'"; \
+	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(includelssdir)" || exit $$?; \
+	done
+
+uninstall-includelssHEADERS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(includelss_HEADERS)'; test -n "$(includelssdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(includelssdir)'; $(am__uninstall_files_from_dir)
+install-includepHEADERS: $(includep_HEADERS)
+	@$(NORMAL_INSTALL)
+	@list='$(includep_HEADERS)'; test -n "$(includepdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(includepdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(includepdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includepdir)'"; \
+	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(includepdir)" || exit $$?; \
+	done
+
+uninstall-includepHEADERS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(includep_HEADERS)'; test -n "$(includepdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(includepdir)'; $(am__uninstall_files_from_dir)
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscope: cscope.files
+	test ! -s cscope.files \
+	  || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
+clean-cscope:
+	-rm -f cscope.files
+cscope.files: clean-cscope cscopelist
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+	-rm -f cscope.out cscope.in.out cscope.po.out cscope.files
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+	  fi; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	else \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
+	    else \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+	    fi; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
+	    else \
+	      color_start= color_end=; \
+	    fi; \
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all $(check_PROGRAMS) $(check_SCRIPTS)
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+src/common/test_assembler_unittest.log: src/common/test_assembler_unittest$(EXEEXT)
+	@p='src/common/test_assembler_unittest$(EXEEXT)'; \
+	b='src/common/test_assembler_unittest'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+src/processor/address_map_unittest.log: src/processor/address_map_unittest$(EXEEXT)
+	@p='src/processor/address_map_unittest$(EXEEXT)'; \
+	b='src/processor/address_map_unittest'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+src/processor/binarystream_unittest.log: src/processor/binarystream_unittest$(EXEEXT)
+	@p='src/processor/binarystream_unittest$(EXEEXT)'; \
+	b='src/processor/binarystream_unittest'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+src/processor/basic_source_line_resolver_unittest.log: src/processor/basic_source_line_resolver_unittest$(EXEEXT)
+	@p='src/processor/basic_source_line_resolver_unittest$(EXEEXT)'; \
+	b='src/processor/basic_source_line_resolver_unittest'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+src/processor/cfi_frame_info_unittest.log: src/processor/cfi_frame_info_unittest$(EXEEXT)
+	@p='src/processor/cfi_frame_info_unittest$(EXEEXT)'; \
+	b='src/processor/cfi_frame_info_unittest'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+src/processor/contained_range_map_unittest.log: src/processor/contained_range_map_unittest$(EXEEXT)
+	@p='src/processor/contained_range_map_unittest$(EXEEXT)'; \
+	b='src/processor/contained_range_map_unittest'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+src/processor/disassembler_x86_unittest.log: src/processor/disassembler_x86_unittest$(EXEEXT)
+	@p='src/processor/disassembler_x86_unittest$(EXEEXT)'; \
+	b='src/processor/disassembler_x86_unittest'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+src/processor/exploitability_unittest.log: src/processor/exploitability_unittest$(EXEEXT)
+	@p='src/processor/exploitability_unittest$(EXEEXT)'; \
+	b='src/processor/exploitability_unittest'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+src/processor/fast_source_line_resolver_unittest.log: src/processor/fast_source_line_resolver_unittest$(EXEEXT)
+	@p='src/processor/fast_source_line_resolver_unittest$(EXEEXT)'; \
+	b='src/processor/fast_source_line_resolver_unittest'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+src/processor/map_serializers_unittest.log: src/processor/map_serializers_unittest$(EXEEXT)
+	@p='src/processor/map_serializers_unittest$(EXEEXT)'; \
+	b='src/processor/map_serializers_unittest'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+src/processor/microdump_processor_unittest.log: src/processor/microdump_processor_unittest$(EXEEXT)
+	@p='src/processor/microdump_processor_unittest$(EXEEXT)'; \
+	b='src/processor/microdump_processor_unittest'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+src/processor/minidump_processor_unittest.log: src/processor/minidump_processor_unittest$(EXEEXT)
+	@p='src/processor/minidump_processor_unittest$(EXEEXT)'; \
+	b='src/processor/minidump_processor_unittest'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+src/processor/minidump_unittest.log: src/processor/minidump_unittest$(EXEEXT)
+	@p='src/processor/minidump_unittest$(EXEEXT)'; \
+	b='src/processor/minidump_unittest'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+src/processor/static_address_map_unittest.log: src/processor/static_address_map_unittest$(EXEEXT)
+	@p='src/processor/static_address_map_unittest$(EXEEXT)'; \
+	b='src/processor/static_address_map_unittest'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+src/processor/static_contained_range_map_unittest.log: src/processor/static_contained_range_map_unittest$(EXEEXT)
+	@p='src/processor/static_contained_range_map_unittest$(EXEEXT)'; \
+	b='src/processor/static_contained_range_map_unittest'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+src/processor/static_map_unittest.log: src/processor/static_map_unittest$(EXEEXT)
+	@p='src/processor/static_map_unittest$(EXEEXT)'; \
+	b='src/processor/static_map_unittest'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+src/processor/static_range_map_unittest.log: src/processor/static_range_map_unittest$(EXEEXT)
+	@p='src/processor/static_range_map_unittest$(EXEEXT)'; \
+	b='src/processor/static_range_map_unittest'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+src/processor/pathname_stripper_unittest.log: src/processor/pathname_stripper_unittest$(EXEEXT)
+	@p='src/processor/pathname_stripper_unittest$(EXEEXT)'; \
+	b='src/processor/pathname_stripper_unittest'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+src/processor/postfix_evaluator_unittest.log: src/processor/postfix_evaluator_unittest$(EXEEXT)
+	@p='src/processor/postfix_evaluator_unittest$(EXEEXT)'; \
+	b='src/processor/postfix_evaluator_unittest'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+src/processor/range_map_unittest.log: src/processor/range_map_unittest$(EXEEXT)
+	@p='src/processor/range_map_unittest$(EXEEXT)'; \
+	b='src/processor/range_map_unittest'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+src/processor/stackwalker_amd64_unittest.log: src/processor/stackwalker_amd64_unittest$(EXEEXT)
+	@p='src/processor/stackwalker_amd64_unittest$(EXEEXT)'; \
+	b='src/processor/stackwalker_amd64_unittest'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+src/processor/stackwalker_arm_unittest.log: src/processor/stackwalker_arm_unittest$(EXEEXT)
+	@p='src/processor/stackwalker_arm_unittest$(EXEEXT)'; \
+	b='src/processor/stackwalker_arm_unittest'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+src/processor/stackwalker_arm64_unittest.log: src/processor/stackwalker_arm64_unittest$(EXEEXT)
+	@p='src/processor/stackwalker_arm64_unittest$(EXEEXT)'; \
+	b='src/processor/stackwalker_arm64_unittest'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+src/processor/stackwalker_address_list_unittest.log: src/processor/stackwalker_address_list_unittest$(EXEEXT)
+	@p='src/processor/stackwalker_address_list_unittest$(EXEEXT)'; \
+	b='src/processor/stackwalker_address_list_unittest'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+src/processor/stackwalker_mips_unittest.log: src/processor/stackwalker_mips_unittest$(EXEEXT)
+	@p='src/processor/stackwalker_mips_unittest$(EXEEXT)'; \
+	b='src/processor/stackwalker_mips_unittest'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+src/processor/stackwalker_x86_unittest.log: src/processor/stackwalker_x86_unittest$(EXEEXT)
+	@p='src/processor/stackwalker_x86_unittest$(EXEEXT)'; \
+	b='src/processor/stackwalker_x86_unittest'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+src/processor/synth_minidump_unittest.log: src/processor/synth_minidump_unittest$(EXEEXT)
+	@p='src/processor/synth_minidump_unittest$(EXEEXT)'; \
+	b='src/processor/synth_minidump_unittest'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+src/client/linux/linux_client_unittest.log: src/client/linux/linux_client_unittest$(EXEEXT)
+	@p='src/client/linux/linux_client_unittest$(EXEEXT)'; \
+	b='src/client/linux/linux_client_unittest'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+src/common/dumper_unittest.log: src/common/dumper_unittest$(EXEEXT)
+	@p='src/common/dumper_unittest$(EXEEXT)'; \
+	b='src/common/dumper_unittest'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+src/tools/linux/md2core/minidump_2_core_unittest.log: src/tools/linux/md2core/minidump_2_core_unittest$(EXEEXT)
+	@p='src/tools/linux/md2core/minidump_2_core_unittest$(EXEEXT)'; \
+	b='src/tools/linux/md2core/minidump_2_core_unittest'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+src/processor/stackwalker_selftest.log: src/processor/stackwalker_selftest$(EXEEXT)
+	@p='src/processor/stackwalker_selftest$(EXEEXT)'; \
+	b='src/processor/stackwalker_selftest'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+src/processor/microdump_stackwalk_test.log: src/processor/microdump_stackwalk_test
+	@p='src/processor/microdump_stackwalk_test'; \
+	b='src/processor/microdump_stackwalk_test'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+src/processor/microdump_stackwalk_machine_readable_test.log: src/processor/microdump_stackwalk_machine_readable_test
+	@p='src/processor/microdump_stackwalk_machine_readable_test'; \
+	b='src/processor/microdump_stackwalk_machine_readable_test'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+src/processor/minidump_dump_test.log: src/processor/minidump_dump_test
+	@p='src/processor/minidump_dump_test'; \
+	b='src/processor/minidump_dump_test'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+src/processor/minidump_stackwalk_test.log: src/processor/minidump_stackwalk_test
+	@p='src/processor/minidump_stackwalk_test'; \
+	b='src/processor/minidump_stackwalk_test'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+src/processor/minidump_stackwalk_machine_readable_test.log: src/processor/minidump_stackwalk_machine_readable_test
+	@p='src/processor/minidump_stackwalk_machine_readable_test'; \
+	b='src/processor/minidump_stackwalk_machine_readable_test'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+@am__EXEEXT_TRUE@.test$(EXEEXT).log:
+@am__EXEEXT_TRUE@	@p='$<'; \
+@am__EXEEXT_TRUE@	$(am__set_b); \
+@am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+@am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+@am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+@am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+	$(am__remove_distdir)
+	test -d "$(distdir)" || mkdir "$(distdir)"
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+	-test -n "$(am__skip_mode_fix)" \
+	|| find "$(distdir)" -type d ! -perm -755 \
+		-exec chmod u+rwx,go+rx {} \; -o \
+	  ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+	  ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+	  ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+	|| chmod -R a+r "$(distdir)"
+dist-gzip: distdir
+	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+	$(am__post_remove_distdir)
+
+dist-bzip2: distdir
+	tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
+	$(am__post_remove_distdir)
+
+dist-lzip: distdir
+	tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
+	$(am__post_remove_distdir)
+
+dist-xz: distdir
+	tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
+	$(am__post_remove_distdir)
+
+dist-tarZ: distdir
+	@echo WARNING: "Support for shar distribution archives is" \
+	               "deprecated." >&2
+	@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
+	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+	$(am__post_remove_distdir)
+
+dist-shar: distdir
+	@echo WARNING: "Support for distribution archives compressed with" \
+		       "legacy program 'compress' is deprecated." >&2
+	@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
+	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+	$(am__post_remove_distdir)
+
+dist-zip: distdir
+	-rm -f $(distdir).zip
+	zip -rq $(distdir).zip $(distdir)
+	$(am__post_remove_distdir)
+
+dist dist-all:
+	$(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
+	$(am__post_remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration.  Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+	case '$(DIST_ARCHIVES)' in \
+	*.tar.gz*) \
+	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
+	*.tar.bz2*) \
+	  bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
+	*.tar.lz*) \
+	  lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
+	*.tar.xz*) \
+	  xz -dc $(distdir).tar.xz | $(am__untar) ;;\
+	*.tar.Z*) \
+	  uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+	*.shar.gz*) \
+	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
+	*.zip*) \
+	  unzip $(distdir).zip ;;\
+	esac
+	chmod -R a-w $(distdir)
+	chmod u+w $(distdir)
+	mkdir $(distdir)/_build $(distdir)/_inst
+	chmod a-w $(distdir)
+	test -d $(distdir)/_build || exit 0; \
+	dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+	  && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+	  && am__cwd=`pwd` \
+	  && $(am__cd) $(distdir)/_build \
+	  && ../configure \
+	    $(AM_DISTCHECK_CONFIGURE_FLAGS) \
+	    $(DISTCHECK_CONFIGURE_FLAGS) \
+	    --srcdir=.. --prefix="$$dc_install_base" \
+	  && $(MAKE) $(AM_MAKEFLAGS) \
+	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
+	  && $(MAKE) $(AM_MAKEFLAGS) check \
+	  && $(MAKE) $(AM_MAKEFLAGS) install \
+	  && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+	  && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+	  && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+	        distuninstallcheck \
+	  && chmod -R a-w "$$dc_install_base" \
+	  && ({ \
+	       (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+	            distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+	      } || { rm -rf "$$dc_destdir"; exit 1; }) \
+	  && rm -rf "$$dc_destdir" \
+	  && $(MAKE) $(AM_MAKEFLAGS) dist \
+	  && rm -rf $(DIST_ARCHIVES) \
+	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
+	  && cd "$$am__cwd" \
+	  || exit 1
+	$(am__post_remove_distdir)
+	@(echo "$(distdir) archives ready for distribution: "; \
+	  list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+	  sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
+distuninstallcheck:
+	@test -n '$(distuninstallcheck_dir)' || { \
+	  echo 'ERROR: trying to run $@ with an empty' \
+	       '$$(distuninstallcheck_dir)' >&2; \
+	  exit 1; \
+	}; \
+	$(am__cd) '$(distuninstallcheck_dir)' || { \
+	  echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
+	  exit 1; \
+	}; \
+	test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
+	   || { echo "ERROR: files left after uninstall:" ; \
+	        if test -n "$(DESTDIR)"; then \
+	          echo "  (check DESTDIR support)"; \
+	        fi ; \
+	        $(distuninstallcheck_listfiles) ; \
+	        exit 1; } >&2
+distcleancheck: distclean
+	@if test '$(srcdir)' = . ; then \
+	  echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+	  exit 1 ; \
+	fi
+	@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+	  || { echo "ERROR: files left in build directory after distclean:" ; \
+	       $(distcleancheck_listfiles) ; \
+	       exit 1; } >&2
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(check_SCRIPTS)
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(SCRIPTS) $(DATA) \
+		$(HEADERS)
+installdirs:
+	for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(docdir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(includecdir)" "$(DESTDIR)$(includecldir)" "$(DESTDIR)$(includeclcdir)" "$(DESTDIR)$(includeclhdir)" "$(DESTDIR)$(includeclmdir)" "$(DESTDIR)$(includegbcdir)" "$(DESTDIR)$(includelssdir)" "$(DESTDIR)$(includepdir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+	-rm -f src/$(am__dirstamp)
+	-rm -f src/client/$(DEPDIR)/$(am__dirstamp)
+	-rm -f src/client/$(am__dirstamp)
+	-rm -f src/client/linux/$(am__dirstamp)
+	-rm -f src/client/linux/crash_generation/$(DEPDIR)/$(am__dirstamp)
+	-rm -f src/client/linux/crash_generation/$(am__dirstamp)
+	-rm -f src/client/linux/dump_writer_common/$(DEPDIR)/$(am__dirstamp)
+	-rm -f src/client/linux/dump_writer_common/$(am__dirstamp)
+	-rm -f src/client/linux/handler/$(DEPDIR)/$(am__dirstamp)
+	-rm -f src/client/linux/handler/$(am__dirstamp)
+	-rm -f src/client/linux/log/$(DEPDIR)/$(am__dirstamp)
+	-rm -f src/client/linux/log/$(am__dirstamp)
+	-rm -f src/client/linux/microdump_writer/$(DEPDIR)/$(am__dirstamp)
+	-rm -f src/client/linux/microdump_writer/$(am__dirstamp)
+	-rm -f src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp)
+	-rm -f src/client/linux/minidump_writer/$(am__dirstamp)
+	-rm -f src/common/$(DEPDIR)/$(am__dirstamp)
+	-rm -f src/common/$(am__dirstamp)
+	-rm -f src/common/android/$(DEPDIR)/$(am__dirstamp)
+	-rm -f src/common/android/$(am__dirstamp)
+	-rm -f src/common/dwarf/$(DEPDIR)/$(am__dirstamp)
+	-rm -f src/common/dwarf/$(am__dirstamp)
+	-rm -f src/common/linux/$(DEPDIR)/$(am__dirstamp)
+	-rm -f src/common/linux/$(am__dirstamp)
+	-rm -f src/common/linux/tests/$(DEPDIR)/$(am__dirstamp)
+	-rm -f src/common/linux/tests/$(am__dirstamp)
+	-rm -f src/common/tests/$(DEPDIR)/$(am__dirstamp)
+	-rm -f src/common/tests/$(am__dirstamp)
+	-rm -f src/processor/$(DEPDIR)/$(am__dirstamp)
+	-rm -f src/processor/$(am__dirstamp)
+	-rm -f src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp)
+	-rm -f src/testing/gtest/src/$(am__dirstamp)
+	-rm -f src/testing/src/$(DEPDIR)/$(am__dirstamp)
+	-rm -f src/testing/src/$(am__dirstamp)
+	-rm -f src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp)
+	-rm -f src/third_party/libdisasm/$(am__dirstamp)
+	-rm -f src/tools/linux/core2md/$(DEPDIR)/$(am__dirstamp)
+	-rm -f src/tools/linux/core2md/$(am__dirstamp)
+	-rm -f src/tools/linux/dump_syms/$(DEPDIR)/$(am__dirstamp)
+	-rm -f src/tools/linux/dump_syms/$(am__dirstamp)
+	-rm -f src/tools/linux/md2core/$(DEPDIR)/$(am__dirstamp)
+	-rm -f src/tools/linux/md2core/$(am__dirstamp)
+	-rm -f src/tools/linux/symupload/$(DEPDIR)/$(am__dirstamp)
+	-rm -f src/tools/linux/symupload/$(am__dirstamp)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-binPROGRAMS clean-checkPROGRAMS clean-generic \
+	clean-libLIBRARIES clean-noinstLIBRARIES clean-noinstPROGRAMS \
+	mostlyclean-am
+
+distclean: distclean-am
+	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
+	-rm -rf src/client/$(DEPDIR) src/client/linux/crash_generation/$(DEPDIR) src/client/linux/dump_writer_common/$(DEPDIR) src/client/linux/handler/$(DEPDIR) src/client/linux/log/$(DEPDIR) src/client/linux/microdump_writer/$(DEPDIR) src/client/linux/minidump_writer/$(DEPDIR) src/common/$(DEPDIR) src/common/android/$(DEPDIR) src/common/dwarf/$(DEPDIR) src/common/linux/$(DEPDIR) src/common/linux/tests/$(DEPDIR) src/common/tests/$(DEPDIR) src/processor/$(DEPDIR) src/testing/gtest/src/$(DEPDIR) src/testing/src/$(DEPDIR) src/third_party/libdisasm/$(DEPDIR) src/tools/linux/core2md/$(DEPDIR) src/tools/linux/dump_syms/$(DEPDIR) src/tools/linux/md2core/$(DEPDIR) src/tools/linux/symupload/$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-hdr distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-dist_docDATA install-includecHEADERS \
+	install-includeclHEADERS install-includeclcHEADERS \
+	install-includeclhHEADERS install-includeclmHEADERS \
+	install-includegbcHEADERS install-includelssHEADERS \
+	install-includepHEADERS install-pkgconfigDATA
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-binPROGRAMS install-libLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
+	-rm -rf $(top_srcdir)/autom4te.cache
+	-rm -rf src/client/$(DEPDIR) src/client/linux/crash_generation/$(DEPDIR) src/client/linux/dump_writer_common/$(DEPDIR) src/client/linux/handler/$(DEPDIR) src/client/linux/log/$(DEPDIR) src/client/linux/microdump_writer/$(DEPDIR) src/client/linux/minidump_writer/$(DEPDIR) src/common/$(DEPDIR) src/common/android/$(DEPDIR) src/common/dwarf/$(DEPDIR) src/common/linux/$(DEPDIR) src/common/linux/tests/$(DEPDIR) src/common/tests/$(DEPDIR) src/processor/$(DEPDIR) src/testing/gtest/src/$(DEPDIR) src/testing/src/$(DEPDIR) src/third_party/libdisasm/$(DEPDIR) src/tools/linux/core2md/$(DEPDIR) src/tools/linux/dump_syms/$(DEPDIR) src/tools/linux/md2core/$(DEPDIR) src/tools/linux/symupload/$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS uninstall-dist_docDATA \
+	uninstall-includecHEADERS uninstall-includeclHEADERS \
+	uninstall-includeclcHEADERS uninstall-includeclhHEADERS \
+	uninstall-includeclmHEADERS uninstall-includegbcHEADERS \
+	uninstall-includelssHEADERS uninstall-includepHEADERS \
+	uninstall-libLIBRARIES uninstall-pkgconfigDATA
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am am--refresh check check-TESTS \
+	check-am clean clean-binPROGRAMS clean-checkPROGRAMS \
+	clean-cscope clean-generic clean-libLIBRARIES \
+	clean-noinstLIBRARIES clean-noinstPROGRAMS cscope \
+	cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \
+	dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \
+	distcheck distclean distclean-compile distclean-generic \
+	distclean-hdr distclean-tags distcleancheck distdir \
+	distuninstallcheck dvi dvi-am html html-am info info-am \
+	install install-am install-binPROGRAMS install-data \
+	install-data-am install-dist_docDATA install-dvi \
+	install-dvi-am install-exec install-exec-am install-html \
+	install-html-am install-includecHEADERS \
+	install-includeclHEADERS install-includeclcHEADERS \
+	install-includeclhHEADERS install-includeclmHEADERS \
+	install-includegbcHEADERS install-includelssHEADERS \
+	install-includepHEADERS install-info install-info-am \
+	install-libLIBRARIES install-man install-pdf install-pdf-am \
+	install-pkgconfigDATA install-ps install-ps-am install-strip \
+	installcheck installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic pdf pdf-am ps ps-am recheck tags tags-am \
+	uninstall uninstall-am uninstall-binPROGRAMS \
+	uninstall-dist_docDATA uninstall-includecHEADERS \
+	uninstall-includeclHEADERS uninstall-includeclcHEADERS \
+	uninstall-includeclhHEADERS uninstall-includeclmHEADERS \
+	uninstall-includegbcHEADERS uninstall-includelssHEADERS \
+	uninstall-includepHEADERS uninstall-libLIBRARIES \
+	uninstall-pkgconfigDATA
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/google-breakpad/NEWS b/google-breakpad/NEWS
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/google-breakpad/NEWS
diff --git a/google-breakpad/OWNERS b/google-breakpad/OWNERS
new file mode 100644
index 0000000..5f9a4ba
--- /dev/null
+++ b/google-breakpad/OWNERS
@@ -0,0 +1,3 @@
+set noparent
+benchan@chromium.org
+vapier@chromium.org
diff --git a/google-breakpad/PRESUBMIT.cfg b/google-breakpad/PRESUBMIT.cfg
new file mode 100644
index 0000000..4018941
--- /dev/null
+++ b/google-breakpad/PRESUBMIT.cfg
@@ -0,0 +1,4 @@
+# Disable hooks not relevant to upstream project.
+[Hook Overrides]
+cros_license_check: false
+
diff --git a/google-breakpad/README b/google-breakpad/README
new file mode 100644
index 0000000..3bccd4b
--- /dev/null
+++ b/google-breakpad/README
@@ -0,0 +1,43 @@
+Breakpad is a set of client and server components which implement a
+crash-reporting system.
+
+
+-----
+Getting started in 32-bit mode (from trunk)
+Configure: CXXFLAGS=-m32 CFLAGS=-m32 CPPFLAGS=-m32 ./configure
+    Build: make
+     Test: make check
+  Install: make install
+
+If you need to reconfigure your build be sure to run "make distclean" first.
+
+
+-----
+To request change review:
+0. Get access to a read-write copy of source.
+   Owners at http://code.google.com/p/google-breakpad/ are able to grant
+   this access.
+
+1. Check out a read-write copy of source using instructions at
+   http://code.google.com/p/google-breakpad/source/checkout
+
+2. Make changes. Build and test your changes.
+   For core code like processor use methods above.
+   For linux/mac/windows, there are test targets in each project file.
+
+3. Download http://codereview.appspot.com/static/upload.py
+
+4. Run upload.py from the 'src' directory:
+   upload.py --server=breakpad.appspot.com
+
+   You will be prompted for credential and a description.
+
+5. At http://breakpad.appspot.com you'll find your issue listed; click on it,
+   and select Publish+Mail, and enter in the code reviewer and CC
+   google-breakpad-dev@googlegroups.com
+
+6. When applying code review feedback, specify the '-i' option when running
+   upload.py again and pass the issue number so it updates the existing issue,
+   rather than creating a new one.
+   Be sure to rerun upload.py from the same directory as you did for previous
+   uploads to allow for proper diff calculations.
diff --git a/google-breakpad/README.ANDROID b/google-breakpad/README.ANDROID
new file mode 100644
index 0000000..f7eacdd
--- /dev/null
+++ b/google-breakpad/README.ANDROID
@@ -0,0 +1,139 @@
+Google Breakpad for Android
+===========================
+
+This document explains how to use the Google Breakpad client library
+on Android, and later generate valid stack traces from the minidumps
+it generates.
+
+This release supports ARM, x86 and MIPS based Android systems.
+This release requires NDK release r10c or higher.
+
+I. Building the client library:
+===============================
+
+The Android client is built as a static library that you can
+link into your own Android native code. There are two ways to
+build it:
+
+I.1. Building with ndk-build:
+-----------------------------
+
+If you're using the ndk-build build system, you can follow
+these simple steps:
+
+  1/ Include android/google_breakpad/Android.mk from your own
+     project's Android.mk
+
+     This can be done either directly, or using ndk-build's
+     import-module feature.
+
+  2/ Link the library to one of your modules by using:
+
+     LOCAL_STATIC_LIBRARIES += breakpad_client
+
+NOTE: The client library requires a C++ STL implementation,
+      which you can select with APP_STL in your Application.mk
+
+      It has been tested succesfully with both STLport and GNU libstdc++
+
+
+I.2. Building with a standalone Android toolchain:
+--------------------------------------------------
+
+All you need to do is configure your build with the right 'host'
+value, and disable the processor and tools, as in:
+
+  $GOOGLE_BREAKPAD_PATH/configure --host=arm-linux-androideabi \
+                                  --disable-processor \
+                                  --disable-tools
+  make -j4
+
+The library will be under src/client/linux/libbreakpad_client.a
+
+You can also use 'make check' to run the test suite on a connected
+Android device. This requires the Android 'adb' tool to be in your
+path.
+
+II. Using the client library in Android:
+========================================
+
+The usage instructions are very similar to the Linux ones that are
+found at http://code.google.com/p/google-breakpad/wiki/LinuxStarterGuide
+
+1/ You need to include "client/linux/handler/exception_handler.h" from a C++
+   source file.
+
+2/ If you're not using ndk-build, you also need to:
+
+   - add the following to your compiler include search paths:
+       $GOOGLE_BREAKPAD_PATH/src
+       $GOOGLE_BREAKPAD_PATH/src/common/android/include
+
+   - add -llog to your linker flags
+
+   Note that ndk-build does that for your automatically.
+
+3/ Keep in mind that there is no /tmp directory on Android.
+
+   If you use the library from a regular Android applications, specify a
+   path under your app-specific storage directory. An alternative is to
+   store them on the SDCard, but this requires a specific permission.
+
+For a concrete example, see the sample test application under
+android/sample_app. See its README for more information.
+
+
+III. Getting a stack trace on the host:
+=======================================
+
+This process is similar to other platforms, but here's a quick example:
+
+1/ Retrieve the minidumps on your development machine.
+
+2/ Dump the symbols for your native libraries with the 'dump_syms' tool.
+   This first requires building the host version of Google Breakpad, then
+   calling:
+
+      dump_syms $PROJECT_PATH/obj/local/$ABI/libfoo.so > libfoo.so.sym
+
+3/ Create the symbol directory hierarchy.
+
+   The first line of the generated libfoo.so.sym will have a "MODULE"
+   entry that carries a hexadecimal version number, e.g.:
+
+     MODULE Linux arm D51B4A5504974FA6ECC1869CAEE3603B0 test_google_breakpad
+
+   Note: The second field could be either 'Linux' or 'Android'.
+
+   Extract the version number, and a 'symbol' directory, for example:
+
+      $PROJECT_PATH/symbols/libfoo.so/$VERSION/
+
+   Copy/Move your libfoo.sym file there.
+
+4/ Invoke minidump_stackwalk to create the stack trace:
+
+     minidump_stackwalk $MINIDUMP_FILE $PROJECT_PATH/symbols
+
+Note that various helper scripts can be found on the web to automate these
+steps.
+
+IV. Verifying the Android build library:
+========================================
+
+If you modify Google Breakpad and want to check that it still works correctly
+on Android, please run the android/run-checks.sh script which will do all
+necessary verifications for you. This includes:
+
+  - Rebuilding the full host binaries.
+  - Rebuilding the full Android binaries with configure/make.
+  - Rebuilding the client library unit tests, and running them on a device.
+  - Rebuilding the client library with ndk-build.
+  - Building, installing and running a test crasher program on a device.
+  - Extracting the corresponding minidump, dumping the test program symbols
+    and generating a stack trace.
+  - Checking the generated stack trace for valid source locations.
+
+For more details, please run:
+
+  android/run-checks.sh --help-all
diff --git a/google-breakpad/aclocal.m4 b/google-breakpad/aclocal.m4
new file mode 100644
index 0000000..b397b89
--- /dev/null
+++ b/google-breakpad/aclocal.m4
@@ -0,0 +1,1234 @@
+# generated automatically by aclocal 1.14.1 -*- Autoconf -*-
+
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
+m4_ifndef([AC_AUTOCONF_VERSION],
+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
+[m4_warning([this file was generated for autoconf 2.69.
+You have another version of autoconf.  It may work, but is not guaranteed to.
+If you have problems, you may need to regenerate the build system entirely.
+To do so, use the procedure documented by the package, typically 'autoreconf'.])])
+
+# Copyright (C) 2002-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+# (This private macro should not be called outside this file.)
+AC_DEFUN([AM_AUTOMAKE_VERSION],
+[am__api_version='1.14'
+dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+dnl require some minimum version.  Point them to the right macro.
+m4_if([$1], [1.14.1], [],
+      [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+
+# _AM_AUTOCONF_VERSION(VERSION)
+# -----------------------------
+# aclocal traces this macro to find the Autoconf version.
+# This is a private macro too.  Using m4_define simplifies
+# the logic in aclocal, which can simply ignore this definition.
+m4_define([_AM_AUTOCONF_VERSION], [])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
+# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+[AM_AUTOMAKE_VERSION([1.14.1])dnl
+m4_ifndef([AC_AUTOCONF_VERSION],
+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
+
+# Figure out how to run the assembler.                      -*- Autoconf -*-
+
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_AS
+# ----------
+AC_DEFUN([AM_PROG_AS],
+[# By default we simply use the C compiler to build assembly code.
+AC_REQUIRE([AC_PROG_CC])
+test "${CCAS+set}" = set || CCAS=$CC
+test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS
+AC_ARG_VAR([CCAS],      [assembler compiler command (defaults to CC)])
+AC_ARG_VAR([CCASFLAGS], [assembler compiler flags (defaults to CFLAGS)])
+_AM_IF_OPTION([no-dependencies],, [_AM_DEPENDENCIES([CCAS])])dnl
+])
+
+# AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
+
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to '$srcdir/foo'.  In other projects, it is set to
+# '$srcdir', '$srcdir/..', or '$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory.  The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run.  This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+#    fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+#    fails if $ac_aux_dir is absolute,
+#    fails when called from a subdirectory in a VPATH build with
+#          a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir.  In an in-source build this is usually
+# harmless because $srcdir is '.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir.  That would be:
+#   am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+#   MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH.  The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[dnl Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])dnl
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+])
+
+# AM_CONDITIONAL                                            -*- Autoconf -*-
+
+# Copyright (C) 1997-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ([2.52])dnl
+ m4_if([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
+       [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+m4_define([_AM_COND_VALUE_$1], [$2])dnl
+if $2; then
+  $1_TRUE=
+  $1_FALSE='#'
+else
+  $1_TRUE='#'
+  $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+  AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+
+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+
+# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be
+# written in clear, in which case automake, when reading aclocal.m4,
+# will think it sees a *use*, and therefore will trigger all it's
+# C support machinery.  Also note that it means that autoscan, seeing
+# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
+# _AM_DEPENDENCIES(NAME)
+# ----------------------
+# See how the compiler implements dependency checking.
+# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC".
+# We try a few techniques and use that to set a single cache variable.
+#
+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+# dependency, and given that the user is not expected to run this macro,
+# just rely on AC_PROG_CC.
+AC_DEFUN([_AM_DEPENDENCIES],
+[AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+m4_if([$1], [CC],   [depcc="$CC"   am_compiler_list=],
+      [$1], [CXX],  [depcc="$CXX"  am_compiler_list=],
+      [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+      [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'],
+      [$1], [UPC],  [depcc="$UPC"  am_compiler_list=],
+      [$1], [GCJ],  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
+                    [depcc="$$1"   am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+               [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_$1_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+  fi
+  am__universal=false
+  m4_case([$1], [CC],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac],
+    [CXX],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac])
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok '-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_$1_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+
+
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES.
+AC_DEFUN([AM_SET_DEPDIR],
+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+
+
+# AM_DEP_TRACK
+# ------------
+AC_DEFUN([AM_DEP_TRACK],
+[AC_ARG_ENABLE([dependency-tracking], [dnl
+AS_HELP_STRING(
+  [--enable-dependency-tracking],
+  [do not reject slow dependency extractors])
+AS_HELP_STRING(
+  [--disable-dependency-tracking],
+  [speeds up one-time build])])
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+  am__nodep='_no'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+AC_SUBST([am__nodep])dnl
+_AM_SUBST_NOTMAKE([am__nodep])dnl
+])
+
+# Generate code to set up dependency tracking.              -*- Autoconf -*-
+
+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[{
+  # Older Autoconf quotes --file arguments for eval, but not when files
+  # are listed without --file.  Let's play safe and only enable the eval
+  # if we detect the quoting.
+  case $CONFIG_FILES in
+  *\'*) eval set x "$CONFIG_FILES" ;;
+  *)   set x $CONFIG_FILES ;;
+  esac
+  shift
+  for mf
+  do
+    # Strip MF so we end up with the name of the file.
+    mf=`echo "$mf" | sed -e 's/:.*$//'`
+    # Check whether this is an Automake generated Makefile or not.
+    # We used to match only the files named 'Makefile.in', but
+    # some people rename them; so instead we look at the file content.
+    # Grep'ing the first line is not enough: some people post-process
+    # each Makefile.in and add a new line on top of each file to say so.
+    # Grep'ing the whole file is not good either: AIX grep has a line
+    # limit of 2048, but all sed's we know have understand at least 4000.
+    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+      dirpart=`AS_DIRNAME("$mf")`
+    else
+      continue
+    fi
+    # Extract the definition of DEPDIR, am__include, and am__quote
+    # from the Makefile without running 'make'.
+    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+    test -z "$DEPDIR" && continue
+    am__include=`sed -n 's/^am__include = //p' < "$mf"`
+    test -z "$am__include" && continue
+    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+    # Find all dependency output files, they are included files with
+    # $(DEPDIR) in their names.  We invoke sed twice because it is the
+    # simplest approach to changing $(DEPDIR) to its actual value in the
+    # expansion.
+    for file in `sed -n "
+      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
+      # Make sure the directory exists.
+      test -f "$dirpart/$file" && continue
+      fdir=`AS_DIRNAME(["$file"])`
+      AS_MKDIR_P([$dirpart/$fdir])
+      # echo "creating $dirpart/$file"
+      echo '# dummy' > "$dirpart/$file"
+    done
+  done
+}
+])# _AM_OUTPUT_DEPENDENCY_COMMANDS
+
+
+# AM_OUTPUT_DEPENDENCY_COMMANDS
+# -----------------------------
+# This macro should only be invoked once -- use via AC_REQUIRE.
+#
+# This code is only required when automatic dependency tracking
+# is enabled.  FIXME.  This creates each '.P' file that we will
+# need in order to bootstrap the dependency handling code.
+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+[AC_CONFIG_COMMANDS([depfiles],
+     [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+     [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+])
+
+# Do all the work for Automake.                             -*- Autoconf -*-
+
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This macro actually does too much.  Some checks are only needed if
+# your package does certain things.  But this isn't really a big deal.
+
+dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O.
+m4_define([AC_PROG_CC],
+m4_defn([AC_PROG_CC])
+[_AM_PROG_CC_C_O
+])
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out.  PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition.  After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.65])dnl
+dnl Autoconf wants to disallow AM_ names.  We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+  # is not polluted with repeated "-I."
+  AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+  # test to see if srcdir already configured
+  if test -f $srcdir/config.status; then
+    AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+  fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[AC_DIAGNOSE([obsolete],
+             [$0: two- and three-arguments forms are deprecated.])
+m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(
+  m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
+  [ok:ok],,
+  [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
+ AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
+AM_MISSING_PROG([AUTOCONF], [autoconf])
+AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
+AM_MISSING_PROG([AUTOHEADER], [autoheader])
+AM_MISSING_PROG([MAKEINFO], [makeinfo])
+AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+# For better backward compatibility.  To be removed once Automake 1.9.x
+# dies out for good.  For more background, see:
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
+# We need awk for the "check" target.  The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+	      [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+			     [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+		  [_AM_DEPENDENCIES([CC])],
+		  [m4_define([AC_PROG_CC],
+			     m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+		  [_AM_DEPENDENCIES([CXX])],
+		  [m4_define([AC_PROG_CXX],
+			     m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+		  [_AM_DEPENDENCIES([OBJC])],
+		  [m4_define([AC_PROG_OBJC],
+			     m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
+		  [_AM_DEPENDENCIES([OBJCXX])],
+		  [m4_define([AC_PROG_OBJCXX],
+			     m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
+])
+AC_REQUIRE([AM_SILENT_RULES])dnl
+dnl The testsuite driver may need to know about EXEEXT, so add the
+dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This
+dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_CONFIG_COMMANDS_PRE(dnl
+[m4_provide_if([_AM_COMPILER_EXEEXT],
+  [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
+
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes.  So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+  cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present.  This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell bug-automake@gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message.  This
+can help us improve future automake versions.
+
+END
+  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+    echo 'Configuration will proceed anyway, since you have set the' >&2
+    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+    echo >&2
+  else
+    cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <http://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+    AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
+  fi
+fi])
+
+dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
+dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
+dnl mangled by Autoconf and run in a shell conditional statement.
+m4_define([_AC_COMPILER_EXEEXT],
+m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated.  The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_arg=$1
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $_am_arg | $_am_arg:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+if test x"${install_sh}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
+AC_SUBST([install_sh])])
+
+# Copyright (C) 2003-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Check whether the underlying file-system supports filenames
+# with a leading dot.  For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# Add --enable-maintainer-mode option to configure.         -*- Autoconf -*-
+# From Jim Meyering
+
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_MAINTAINER_MODE([DEFAULT-MODE])
+# ----------------------------------
+# Control maintainer-specific portions of Makefiles.
+# Default is to disable them, unless 'enable' is passed literally.
+# For symmetry, 'disable' may be passed as well.  Anyway, the user
+# can override the default with the --enable/--disable switch.
+AC_DEFUN([AM_MAINTAINER_MODE],
+[m4_case(m4_default([$1], [disable]),
+       [enable], [m4_define([am_maintainer_other], [disable])],
+       [disable], [m4_define([am_maintainer_other], [enable])],
+       [m4_define([am_maintainer_other], [enable])
+        m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])])
+AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
+  dnl maintainer-mode's default is 'disable' unless 'enable' is passed
+  AC_ARG_ENABLE([maintainer-mode],
+    [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode],
+      am_maintainer_other[ make rules and dependencies not useful
+      (and sometimes confusing) to the casual installer])],
+    [USE_MAINTAINER_MODE=$enableval],
+    [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
+  AC_MSG_RESULT([$USE_MAINTAINER_MODE])
+  AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
+  MAINT=$MAINTAINER_MODE_TRUE
+  AC_SUBST([MAINT])dnl
+]
+)
+
+# Check to see how 'make' treats includes.	            -*- Autoconf -*-
+
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check to see how make treats includes.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+	@echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from 'make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+  am__include=include
+  am__quote=
+  _am_result=GNU
+  ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   case `$am_make -s -f confmf 2> /dev/null` in #(
+   *the\ am__doit\ target*)
+     am__include=.include
+     am__quote="\""
+     _am_result=BSD
+     ;;
+   esac
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+
+# Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
+
+# Copyright (C) 1997-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it is modern enough.
+# If it is, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([missing])dnl
+if test x"${MISSING+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --is-lightweight"; then
+  am_missing_run="$MISSING "
+else
+  am_missing_run=
+  AC_MSG_WARN(['missing' script is too old or missing])
+fi
+])
+
+#  -*- Autoconf -*-
+# Obsolete and "removed" macros, that must however still report explicit
+# error messages when used, to smooth transition.
+#
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([AM_CONFIG_HEADER],
+[AC_DIAGNOSE([obsolete],
+['$0': this macro is obsolete.
+You should use the 'AC][_CONFIG_HEADERS' macro instead.])dnl
+AC_CONFIG_HEADERS($@)])
+
+AC_DEFUN([AM_PROG_CC_STDC],
+[AC_PROG_CC
+am_cv_prog_cc_stdc=$ac_cv_prog_cc_stdc
+AC_DIAGNOSE([obsolete],
+['$0': this macro is obsolete.
+You should simply use the 'AC][_PROG_CC' macro instead.
+Also, your code should no longer depend upon 'am_cv_prog_cc_stdc',
+but upon 'ac_cv_prog_cc_stdc'.])])
+
+AC_DEFUN([AM_C_PROTOTYPES],
+         [AC_FATAL([automatic de-ANSI-fication support has been removed])])
+AU_DEFUN([fp_C_PROTOTYPES], [AM_C_PROTOTYPES])
+
+# Helper functions for option handling.                     -*- Autoconf -*-
+
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# --------------------
+# Set option NAME.  Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), [1])])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_PROG_CC_C_O
+# ---------------
+# Like AC_PROG_CC_C_O, but changed for automake.  We rewrite AC_PROG_CC
+# to automatically call this.
+AC_DEFUN([_AM_PROG_CC_C_O],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([compile])dnl
+AC_LANG_PUSH([C])dnl
+AC_CACHE_CHECK(
+  [whether $CC understands -c and -o together],
+  [am_cv_prog_cc_c_o],
+  [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])])
+  # Make sure it works both with $CC and with simple cc.
+  # Following AC_PROG_CC_C_O, we do the test twice because some
+  # compilers refuse to overwrite an existing .o file with -o,
+  # though they will create one.
+  am_cv_prog_cc_c_o=yes
+  for am_i in 1 2; do
+    if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \
+         && test -f conftest2.$ac_objext; then
+      : OK
+    else
+      am_cv_prog_cc_c_o=no
+      break
+    fi
+  done
+  rm -f core conftest*
+  unset am_i])
+if test "$am_cv_prog_cc_c_o" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+AC_LANG_POP([C])])
+
+# For backward compatibility.
+AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
+
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_RUN_LOG(COMMAND)
+# -------------------
+# Run COMMAND, save the exit status in ac_status, and log it.
+# (This has been adapted from Autoconf's _AC_RUN_LOG macro.)
+AC_DEFUN([AM_RUN_LOG],
+[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
+   ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   (exit $ac_status); }])
+
+# Check to make sure that the build environment is sane.    -*- Autoconf -*-
+
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name.  Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+  *[[\\\"\#\$\&\'\`$am_lf]]*)
+    AC_MSG_ERROR([unsafe absolute working directory name]);;
+esac
+case $srcdir in
+  *[[\\\"\#\$\&\'\`$am_lf\ \	]]*)
+    AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
+esac
+
+# Do 'set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   am_has_slept=no
+   for am_try in 1 2; do
+     echo "timestamp, slept: $am_has_slept" > conftest.file
+     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+     if test "$[*]" = "X"; then
+	# -L didn't work.
+	set X `ls -t "$srcdir/configure" conftest.file`
+     fi
+     if test "$[*]" != "X $srcdir/configure conftest.file" \
+	&& test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+	# If neither matched, then we have a broken ls.  This can happen
+	# if, for instance, CONFIG_SHELL is bash and it inherits a
+	# broken ls alias from the environment.  This has actually
+	# happened.  Such a system could not be considered "sane".
+	AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
+  alias in your environment])
+     fi
+     if test "$[2]" = conftest.file || test $am_try -eq 2; then
+       break
+     fi
+     # Just in case.
+     sleep 1
+     am_has_slept=yes
+   done
+   test "$[2]" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT([yes])
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+  ( sleep 1 ) &
+  am_sleep_pid=$!
+fi
+AC_CONFIG_COMMANDS_PRE(
+  [AC_MSG_CHECKING([that generated files are newer than configure])
+   if test -n "$am_sleep_pid"; then
+     # Hide warnings about reused PIDs.
+     wait $am_sleep_pid 2>/dev/null
+   fi
+   AC_MSG_RESULT([done])])
+rm -f conftest.file
+])
+
+# Copyright (C) 2009-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_SILENT_RULES([DEFAULT])
+# --------------------------
+# Enable less verbose build rules; with the default set to DEFAULT
+# ("yes" being less verbose, "no" or empty being verbose).
+AC_DEFUN([AM_SILENT_RULES],
+[AC_ARG_ENABLE([silent-rules], [dnl
+AS_HELP_STRING(
+  [--enable-silent-rules],
+  [less verbose build output (undo: "make V=1")])
+AS_HELP_STRING(
+  [--disable-silent-rules],
+  [verbose build output (undo: "make V=0")])dnl
+])
+case $enable_silent_rules in @%:@ (((
+  yes) AM_DEFAULT_VERBOSITY=0;;
+   no) AM_DEFAULT_VERBOSITY=1;;
+    *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
+esac
+dnl
+dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
+dnl do not support nested variable expansions.
+dnl See automake bug#9928 and bug#10237.
+am_make=${MAKE-make}
+AC_CACHE_CHECK([whether $am_make supports nested variables],
+   [am_cv_make_support_nested_variables],
+   [if AS_ECHO([['TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+	@$(TRUE)
+.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
+  am_cv_make_support_nested_variables=yes
+else
+  am_cv_make_support_nested_variables=no
+fi])
+if test $am_cv_make_support_nested_variables = yes; then
+  dnl Using '$V' instead of '$(V)' breaks IRIX make.
+  AM_V='$(V)'
+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+  AM_V=$AM_DEFAULT_VERBOSITY
+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AC_SUBST([AM_V])dnl
+AM_SUBST_NOTMAKE([AM_V])dnl
+AC_SUBST([AM_DEFAULT_V])dnl
+AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
+AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
+AM_BACKSLASH='\'
+AC_SUBST([AM_BACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
+])
+
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor 'install' (even GNU) is that you can't
+# specify the program used to strip binaries.  This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in "make install-strip", and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip".  However 'strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the 'STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
+if test "$cross_compiling" != no; then
+  AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Copyright (C) 2006-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
+# This macro is traced by Automake.
+AC_DEFUN([_AM_SUBST_NOTMAKE])
+
+# AM_SUBST_NOTMAKE(VARIABLE)
+# --------------------------
+# Public sister of _AM_SUBST_NOTMAKE.
+AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+
+# Check how to create a tarball.                            -*- Autoconf -*-
+
+# Copyright (C) 2004-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of 'v7', 'ustar', or 'pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+#     tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+#     $(am__untar) < result.tar
+#
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility.  Yes, it's still used
+# in the wild :-(  We should find a proper way to deprecate it ...
+AC_SUBST([AMTAR], ['$${TAR-tar}'])
+
+# We'll loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+
+m4_if([$1], [v7],
+  [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
+
+  [m4_case([$1],
+    [ustar],
+     [# The POSIX 1988 'ustar' format is defined with fixed-size fields.
+      # There is notably a 21 bits limit for the UID and the GID.  In fact,
+      # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
+      # and bug#13588).
+      am_max_uid=2097151 # 2^21 - 1
+      am_max_gid=$am_max_uid
+      # The $UID and $GID variables are not portable, so we need to resort
+      # to the POSIX-mandated id(1) utility.  Errors in the 'id' calls
+      # below are definitely unexpected, so allow the users to see them
+      # (that is, avoid stderr redirection).
+      am_uid=`id -u || echo unknown`
+      am_gid=`id -g || echo unknown`
+      AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
+      if test $am_uid -le $am_max_uid; then
+         AC_MSG_RESULT([yes])
+      else
+         AC_MSG_RESULT([no])
+         _am_tools=none
+      fi
+      AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
+      if test $am_gid -le $am_max_gid; then
+         AC_MSG_RESULT([yes])
+      else
+        AC_MSG_RESULT([no])
+        _am_tools=none
+      fi],
+
+  [pax],
+    [],
+
+  [m4_fatal([Unknown tar format])])
+
+  AC_MSG_CHECKING([how to create a $1 tar archive])
+
+  # Go ahead even if we have the value already cached.  We do so because we
+  # need to set the values for the 'am__tar' and 'am__untar' variables.
+  _am_tools=${am_cv_prog_tar_$1-$_am_tools}
+
+  for _am_tool in $_am_tools; do
+    case $_am_tool in
+    gnutar)
+      for _am_tar in tar gnutar gtar; do
+        AM_RUN_LOG([$_am_tar --version]) && break
+      done
+      am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+      am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+      am__untar="$_am_tar -xf -"
+      ;;
+    plaintar)
+      # Must skip GNU tar: if it does not support --format= it doesn't create
+      # ustar tarball either.
+      (tar --version) >/dev/null 2>&1 && continue
+      am__tar='tar chf - "$$tardir"'
+      am__tar_='tar chf - "$tardir"'
+      am__untar='tar xf -'
+      ;;
+    pax)
+      am__tar='pax -L -x $1 -w "$$tardir"'
+      am__tar_='pax -L -x $1 -w "$tardir"'
+      am__untar='pax -r'
+      ;;
+    cpio)
+      am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+      am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+      am__untar='cpio -i -H $1 -d'
+      ;;
+    none)
+      am__tar=false
+      am__tar_=false
+      am__untar=false
+      ;;
+    esac
+
+    # If the value was cached, stop now.  We just wanted to have am__tar
+    # and am__untar set.
+    test -n "${am_cv_prog_tar_$1}" && break
+
+    # tar/untar a dummy directory, and stop if the command works.
+    rm -rf conftest.dir
+    mkdir conftest.dir
+    echo GrepMe > conftest.dir/file
+    AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+    rm -rf conftest.dir
+    if test -s conftest.tar; then
+      AM_RUN_LOG([$am__untar <conftest.tar])
+      AM_RUN_LOG([cat conftest.dir/file])
+      grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+    fi
+  done
+  rm -rf conftest.dir
+
+  AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+  AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+
diff --git a/google-breakpad/android/common-functions.sh b/google-breakpad/android/common-functions.sh
new file mode 100755
index 0000000..c00e34f
--- /dev/null
+++ b/google-breakpad/android/common-functions.sh
@@ -0,0 +1,372 @@
+# Copyright (c) 2012 Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# Collection of common shell functions for 'run-checks.sh' et 'test-shell.sh'
+
+# All internal variables and functions use an underscore as a prefix
+# (e.g. _VERBOSE, _ALL_CLEANUPS, etc..).
+
+# Sanitize the environment
+export LANG=C
+export LC_ALL=C
+
+if [ "$BASH_VERSION" ]; then
+  set -o posix
+fi
+
+# Utility functions
+
+_ALL_CLEANUPS=
+
+# Register a function to be called when the script exits, even in case of
+# Ctrl-C, logout, etc.
+# $1: function name.
+atexit () {
+  if [ -z "$_ALL_CLEANUPS" ]; then
+    _ALL_CLEANUPS=$1
+    # Ensure a clean exit when the script is:
+    #  - Exiting normally (EXIT)
+    #  - Interrupted by Ctrl-C (INT)
+    #  - Interrupted by log out (HUP)
+    #  - Being asked to quit nicely (TERM)
+    #  - Being asked to quit and dump core (QUIT)
+    trap "_exit_cleanups \$?" EXIT INT HUP QUIT TERM
+  else
+    _ALL_CLEANUPS="$_ALL_CLEANUPS $1"
+  fi
+}
+
+# Called on exit if at least one function was registered with atexit
+# $1: final exit status code
+_exit_cleanups () {
+  local CLEANUP CLEANUPS
+  # Ignore calls to atexit during cleanups
+  CLEANUPS=$_ALL_CLEANUPS
+  _ALL_CLEANUPS=
+  for CLEANUP in $CLEANUPS; do
+    ($CLEANUP)
+  done
+  exit "$@"
+}
+
+
+
+
+# Dump a panic message then exit.
+# $1+: message
+panic () {
+  echo "ERROR: $@" >&2
+  exit 1
+}
+
+# If the previous command failed, dump a panic message then exit.
+# $1+: message.
+fail_panic () {
+  if [ $? != 0 ]; then
+    panic "$@"
+  fi;
+}
+
+_VERBOSE=0
+
+# Increase verbosity for dump/log/run/run2 functions
+increase_verbosity () {
+  _VERBOSE=$(( $_VERBOSE + 1 ))
+}
+
+# Decrease verbosity
+decrease_verbosity () {
+  _VERBOSE=$(( $_VERBOSE - 1 ))
+}
+
+# Returns success iff verbosity level is higher than a specific value
+# $1: verbosity level
+verbosity_is_higher_than () {
+  [ "$_VERBOSE" -gt "$1" ]
+}
+
+# Returns success iff verbosity level is lower than a specific value
+# $1: verbosity level
+verbosity_is_lower_than () {
+  [ "$_VERBOSE" -le "$1" ]
+}
+
+# Dump message to stdout, unless verbosity is < 0, i.e. --quiet was called
+# $1+: message
+dump () {
+  if [ "$_VERBOSE" -ge 0 ]; then
+    printf "%s\n" "$*"
+  fi
+}
+
+# If --verbose was used, dump a message to stdout.
+# $1+: message
+log () {
+  if [ "$_VERBOSE" -ge 1 ]; then
+    printf "%s\n" "$*"
+  fi
+}
+
+_RUN_LOG=
+
+# Set a run log file that can be used to collect the output of commands that
+# are not displayed.
+set_run_log () {
+  _RUN_LOG=$1
+}
+
+# Run a command. Output depends on $_VERBOSE:
+#   $_VERBOSE <= 0:  Run command, store output into the run log
+#   $_VERBOSE >= 1:  Dump command, run it, output goest to stdout
+# Note: Ideally, the command's output would go to the run log for $_VERBOSE >= 1
+#       but the 'tee' tool doesn't preserve the status code of its input pipe
+#       in case of error.
+run () {
+  local LOGILE
+  if [ "$_RUN_LOG" ]; then
+    LOGFILE=$_RUN_LOG
+  else
+    LOGFILE=/dev/null
+  fi
+
+  if [ "$_VERBOSE" -ge 1 ]; then
+    echo "COMMAND: $@"
+    "$@"
+  else
+    "$@" >>$LOGFILE 2>&1
+  fi
+}
+
+# Same as run(), but only dump command output for $_VERBOSE >= 2
+run2 () {
+  local LOGILE
+  if [ "$_RUN_LOG" ]; then
+    LOGFILE=$_RUN_LOG
+  else
+    LOGFILE=/dev/null
+  fi
+
+  if [ "$_VERBOSE" -ge 1 ]; then
+    echo "COMMAND: $@"
+  fi
+  if [ "$_VERBOSE" -ge 2 ]; then
+    "$@"
+  else
+    "$@" >>$LOGFILE 2>&1
+  fi
+}
+
+# Extract number of cores to speed up the builds
+# Out: number of CPU cores
+get_core_count () {
+  case $(uname -s) in
+    Linux)
+      grep -c -e '^processor' /proc/cpuinfo
+      ;;
+    Darwin)
+      sysctl -n hw.ncpu
+      ;;
+    CYGWIN*|*_NT-*)
+      echo $NUMBER_OF_PROCESSORS
+      ;;
+    *)
+      echo 1
+      ;;
+  esac
+}
+
+
+# Check for the Android ADB program.
+#
+# On success, return nothing, but updates internal variables so later calls to
+# adb_shell, adb_push, etc.. will work. You can get the path to the ADB program
+# with adb_get_program if needed.
+#
+# On failure, returns 1, and updates the internal adb error message, which can
+# be retrieved with adb_get_error.
+#
+# $1: optional ADB program path.
+# Return: success or failure.
+_ADB=
+_ADB_STATUS=
+_ADB_ERROR=
+
+adb_check () {
+  # First, try to find the executable in the path, or the SDK install dir.
+  _ADB=$1
+  if [ -z "$_ADB" ]; then
+    _ADB=$(which adb 2>/dev/null)
+    if [ -z "$_ADB" -a "$ANDROID_SDK_ROOT" ]; then
+      _ADB=$ANDROID_SDK_ROOT/platform-tools/adb
+      if [ ! -f "$_ADB" ]; then
+        _ADB=
+      fi
+    fi
+    if [ -z "$_ADB" ]; then
+      _ADB_STATUS=1
+      _ADB_ERROR="The Android 'adb' tool is not in your path."
+      return 1
+    fi
+  fi
+
+  log "Found ADB program: $_ADB"
+
+  # Check that it works correctly
+  local ADB_VERSION
+  ADB_VERSION=$("$_ADB" version 2>/dev/null)
+  case $ADB_VERSION in
+    "Android Debug Bridge "*) # Pass
+      log "Found ADB version: $ADB_VERSION"
+      ;;
+    *) # Fail
+      _ADB_ERROR="Your ADB binary reports a bad version ($ADB_VERSION): $_ADB"
+      _ADB_STATUS=1
+      return 1
+  esac
+
+  _ADB_STATUS=0
+  return 0
+}
+
+
+# Return the path to the Android ADB program, if correctly detected.
+# On failure, return the empty string.
+# Out: ADB program path (or empty on failure)
+# Return: success or failure.
+adb_get_program () {
+  # Return cached value as soon as possible.
+  if [ -z "$_ADB_STATUS" ]; then
+    adb_check $1
+  fi
+  echo "$_ADB"
+  return $_ADB_STATUS
+}
+
+# Return the error corresponding to the last ADB function failure.
+adb_get_error () {
+  echo "$_ADB_ERROR"
+}
+
+# Check that there is one device connected through ADB.
+# In case of failure, use adb_get_error to know why this failed.
+# $1: Optional adb program path
+# Return: success or failure.
+_ADB_DEVICE=
+_ADB_DEVICE_STATUS=
+adb_check_device () {
+  if [ "$_ADB_DEVICE_STATUS" ]; then
+    return $_ADB_DEVICE_STATUS
+  fi
+
+  # Check for ADB.
+  if ! adb_check $1; then
+    _ADB_DEVICE_STATUS=$_ADB_STATUS
+    return 1
+  fi
+
+  local ADB_DEVICES NUM_DEVICES FINGERPRINT
+
+  # Count the number of connected devices.
+  ADB_DEVICES=$("$_ADB" devices 2>/dev/null | awk '$2 == "device" { print $1; }')
+  NUM_DEVICES=$(echo "$ADB_DEVICES" | wc -l)
+  case $NUM_DEVICES in
+    0)
+      _ADB_ERROR="No Android device connected. Please connect one to your machine."
+      _ADB_DEVICE_STATUS=1
+      return 1
+      ;;
+    1) # Pass
+      # Ensure the same device will be called in later adb_shell calls.
+      export ANDROID_SERIAL=$ADB_DEVICES
+      ;;
+    *) # 2 or more devices.
+      if [ "$ANDROID_SERIAL" ]; then
+        ADB_DEVICES=$ANDROID_SERIAL
+        NUM_DEVICES=1
+      else
+        _ADB_ERROR="More than one Android device connected. \
+Please define ANDROID_SERIAL in your environment"
+        _ADB_DEVICE_STATUS=1
+        return 1
+      fi
+      ;;
+  esac
+
+  _ADB_DEVICE_STATUS=0
+  _ADB_DEVICE=$ADB_DEVICES
+
+  FINGERPRINT=$(adb_shell getprop ro.build.fingerprint)
+  log "Using ADB device: $ANDROID_SERIAL ($FINGERPRINT)"
+  return 0
+}
+
+# The 'adb shell' command is pretty hopeless, try to make sense of it by:
+#   1/ Removing trailing \r from line endings.
+#   2/ Ensuring the function returns the command's status code.
+#
+# $1+: Command
+# Out: command output (stdout + stderr combined)
+# Return: command exit status
+adb_shell () {
+  local RET ADB_LOG
+  # Check for ADB device.
+  adb_check_device || return 1
+  ADB_LOG=$(mktemp "${TMPDIR:-/tmp}/adb-XXXXXXXX")
+  "$_ADB" shell "$@" ";" echo \$? > "$ADB_LOG" 2>&1
+  sed -i -e 's![[:cntrl:]]!!g' "$ADB_LOG"  # Remove \r.
+  RET=$(sed -e '$!d' "$ADB_LOG")           # Last line contains status code.
+  sed -e '$d' "$ADB_LOG"                   # Print everything except last line.
+  rm -f "$ADB_LOG"
+  return $RET
+}
+
+# Push a file to a device.
+# $1: source file path
+# $2: device target file path
+# Return: success or failure.
+adb_push () {
+  adb_check_device || return 1
+  run "$_ADB" push "$1" "$2"
+}
+
+# Pull a file from a device
+# $1: device file path
+# $2: target host file path
+# Return: success or failure.
+adb_pull () {
+  adb_check_device || return 1
+  run "$_ADB" pull "$1" "$2"
+}
+
+# Same as adb_push, but will panic if the operations didn't succeed.
+adb_install () {
+  adb_push "$@"
+  fail_panic "Failed to install $1 to the Android device at $2"
+}
+
diff --git a/google-breakpad/android/google_breakpad/Android.mk b/google-breakpad/android/google_breakpad/Android.mk
new file mode 100644
index 0000000..52fa5e4
--- /dev/null
+++ b/google-breakpad/android/google_breakpad/Android.mk
@@ -0,0 +1,100 @@
+# Copyright (c) 2012, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# ndk-build module definition for the Google Breakpad client library
+#
+# To use this file, do the following:
+#
+#   1/ Include this file from your own Android.mk, either directly
+#      or with through the NDK's import-module function.
+#
+#   2/ Use the client static library in your project with:
+#
+#      LOCAL_STATIC_LIBRARIES += breakpad_client
+#
+#   3/ In your source code, include "src/client/linux/exception_handler.h"
+#      and use the Linux instructions to use it.
+#
+# This module works with either the STLport or GNU libstdc++, but you need
+# to select one in your Application.mk
+#
+
+# The top Google Breakpad directory.
+# We assume this Android.mk to be under 'android/google_breakpad'
+
+LOCAL_PATH := $(call my-dir)/../..
+
+# Defube the client library module, as a simple static library that
+# exports the right include path / linker flags to its users.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := breakpad_client
+
+LOCAL_CPP_EXTENSION := .cc
+
+# Breakpad uses inline ARM assembly that requires the library
+# to be built in ARM mode. Otherwise, the build will fail with
+# cryptic assembler messages like:
+#   Compile++ thumb  : google_breakpad_client <= crash_generation_client.cc
+#   /tmp/cc8aMSoD.s: Assembler messages:
+#   /tmp/cc8aMSoD.s:132: Error: invalid immediate: 288 is out of range
+#   /tmp/cc8aMSoD.s:244: Error: invalid immediate: 296 is out of range
+LOCAL_ARM_MODE := arm
+
+# List of client source files, directly taken from Makefile.am
+LOCAL_SRC_FILES := \
+    src/client/linux/crash_generation/crash_generation_client.cc \
+    src/client/linux/handler/exception_handler.cc \
+    src/client/linux/handler/minidump_descriptor.cc \
+    src/client/linux/log/log.cc \
+    src/client/linux/minidump_writer/linux_dumper.cc \
+    src/client/linux/minidump_writer/linux_ptrace_dumper.cc \
+    src/client/linux/minidump_writer/minidump_writer.cc \
+    src/client/minidump_file_writer.cc \
+    src/common/android/breakpad_getcontext.S \
+    src/common/convert_UTF.c \
+    src/common/md5.cc \
+    src/common/string_conversion.cc \
+    src/common/linux/elfutils.cc \
+    src/common/linux/file_id.cc \
+    src/common/linux/guid_creator.cc \
+    src/common/linux/linux_libc_support.cc \
+    src/common/linux/memory_mapped_file.cc \
+    src/common/linux/safe_readlink.cc
+
+LOCAL_C_INCLUDES        := $(LOCAL_PATH)/src/common/android/include \
+                           $(LOCAL_PATH)/src
+
+LOCAL_EXPORT_C_INCLUDES := $(LOCAL_C_INCLUDES)
+LOCAL_EXPORT_LDLIBS     := -llog
+
+include $(BUILD_STATIC_LIBRARY)
+
+# Done.
\ No newline at end of file
diff --git a/google-breakpad/android/run-checks.sh b/google-breakpad/android/run-checks.sh
new file mode 100755
index 0000000..51d2d50
--- /dev/null
+++ b/google-breakpad/android/run-checks.sh
@@ -0,0 +1,555 @@
+#!/bin/sh
+# Copyright (c) 2012 Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# Sanitize the environment
+export LANG=C
+export LC_ALL=C
+
+if [ "$BASH_VERSION" ]; then
+  set -o posix
+fi
+
+PROGDIR=$(dirname "$0")
+PROGDIR=$(cd "$PROGDIR" && pwd)
+PROGNAME=$(basename "$0")
+
+. $PROGDIR/common-functions.sh
+
+DEFAULT_ABI="armeabi"
+VALID_ABIS="armeabi armeabi-v7a x86 mips"
+
+ABI=
+ADB=
+ALL_TESTS=
+ENABLE_M32=
+HELP=
+HELP_ALL=
+NDK_DIR=
+NO_CLEANUP=
+NO_DEVICE=
+NUM_JOBS=$(get_core_count)
+TMPDIR=
+
+for opt do
+  # The following extracts the value if the option is like --name=<value>.
+  optarg=$(expr -- $opt : '^--[^=]*=\(.*\)$')
+  case $opt in
+    --abi=*) ABI=$optarg;;
+    --adb=*) ADB=$optarg;;
+    --all-tests) ALL_TESTS=true;;
+    --enable-m32) ENABLE_M32=true;;
+    --help|-h|-?) HELP=TRUE;;
+    --help-all) HELP_ALL=true;;
+    --jobs=*) NUM_JOBS=$optarg;;
+    --ndk-dir=*) NDK_DIR=$optarg;;
+    --tmp-dir=*) TMPDIR=$optarg;;
+    --no-cleanup) NO_CLEANUP=true;;
+    --no-device) NO_DEVICE=true;;
+    --quiet) decrease_verbosity;;
+    --verbose) increase_verbosity;;
+    -*) panic "Invalid option '$opt', see --help for details.";;
+    *) panic "This script doesn't take any parameters. See --help for details."
+       ;;
+  esac
+done
+
+if [ "$HELP" -o "$HELP_ALL" ]; then
+  echo "\
+  Usage: $PROGNAME [options]
+
+  This script is used to check that your Google Breakpad source tree can
+  be properly built for Android, and that the client library and host tools
+  work properly together.
+"
+  if [ "$HELP_ALL" ]; then
+    echo "\
+  In more details, this script will:
+
+  - Rebuild the host version of Google Breakpad in a temporary
+    directory (with the Auto-tools based build system).
+
+  - Rebuild the Android client library with the Google Breakpad build
+    system (using autotools/configure). This requires that you define
+    ANDROID_NDK_ROOT in your environment to point to a valid Android NDK
+    installation directory, or use the --ndk-dir=<path> option.
+
+  - Rebuild the Android client library and a test crashing program with the
+    Android NDK build system (ndk-build).
+
+  - Require an Android device connected to your machine, and the 'adb'
+    tool in your path. They are used to:
+
+      - Install and  run a test crashing program.
+      - Extract the corresponding minidump from the device.
+      - Dump the symbols from the test program on the host with 'dump_syms'
+      - Generate a stack trace with 'minidump_stackwalk'
+      - Check the stack trace content for valid source file locations.
+
+    You can however skip this requirement and only test the builds by using
+    the --no-device flag.
+
+    By default, all generated files will be created in a temporary directory
+    that is removed when the script completion. If you want to inspect the
+    files, use the --no-cleanup option.
+
+    Finally, use --verbose to increase the verbosity level, this will help
+    you see which exact commands are being issues and their result. Use the
+    flag twice for even more output. Use --quiet to decrease verbosity
+    instead and run the script silently.
+
+    If you have a device connected, the script will probe it to determine
+    its primary CPU ABI, and build the test program for it. You can however
+    use the --abi=<name> option to override this (this can be useful to check
+    the secondary ABI, e.g. using --abi=armeabi to check that such a program
+    works correctly on an ARMv7-A device).
+
+    If you don't have a device connected, the test program will be built (but
+    not run) with the default '$DEFAULT_ABI' ABI. Again, you can use
+    --abi=<name> to override this. Valid ABI names are:
+
+        $VALID_ABIS
+
+    The script will only run the client library unit test on the device
+    by default. You can use --all-tests to also build and run the unit
+    tests for the Breakpad tools and processor, but be warned that this
+    adds several minutes of testing time. --all-tests will also run the
+    host unit tests suite.
+"
+
+  fi  # HELP_ALL
+
+  echo "\
+  Valid options:
+
+      --help|-h|-?     Display this message.
+      --help-all       Display extended help.
+      --enable-m32     Build 32-bit version of host tools.
+      --abi=<name>     Specify target CPU ABI [auto-detected].
+      --jobs=<count>   Run <count> build tasks in parallel [$NUM_JOBS].
+      --ndk-dir=<path> Specify NDK installation directory.
+      --tmp-dir=<path> Specify temporary directory (will be wiped-out).
+      --adb=<path>     Specify adb program path.
+      --no-cleanup     Don't remove temporary directory after completion.
+      --no-device      Do not try to detect devices, nor run crash test.
+      --all-tests      Run all unit tests (i.e. tools and processor ones too).
+      --verbose        Increase verbosity.
+      --quiet          Decrease verbosity."
+
+  exit 0
+fi
+
+TESTAPP_DIR=$PROGDIR/sample_app
+
+# Select NDK install directory.
+if [ -z "$NDK_DIR" ]; then
+  if [ -z "$ANDROID_NDK_ROOT" ]; then
+    panic "Please define ANDROID_NDK_ROOT in your environment, or use \
+--ndk-dir=<path>."
+  fi
+  NDK_DIR="$ANDROID_NDK_ROOT"
+  log "Found NDK directory: $NDK_DIR"
+else
+  log "Using NDK directory: $NDK_DIR"
+fi
+# Small sanity check.
+NDK_BUILD="$NDK_DIR/ndk-build"
+if [ ! -f "$NDK_BUILD" ]; then
+  panic "Your NDK directory is not valid (missing ndk-build): $NDK_DIR"
+fi
+
+# Ensure the temporary directory is deleted on exit, except if the --no-cleanup
+# option is used.
+
+clean_tmpdir () {
+  if [ "$TMPDIR" ]; then
+    if [ -z "$NO_CLEANUP" ]; then
+      log "Cleaning up: $TMPDIR"
+      rm -rf "$TMPDIR"
+    else
+      dump "Temporary directory contents preserved: $TMPDIR"
+    fi
+  fi
+  exit "$@"
+}
+
+atexit clean_tmpdir
+
+# If --tmp-dir=<path> is not used, create a temporary directory.
+# Otherwise, start by cleaning up the user-provided path.
+if [ -z "$TMPDIR" ]; then
+  TMPDIR=$(mktemp -d /tmp/$PROGNAME.XXXXXXXX)
+  fail_panic "Can't create temporary directory!"
+  log "Using temporary directory: $TMPDIR"
+else
+  if [ ! -d "$TMPDIR" ]; then
+    mkdir -p "$TMPDIR"
+    fail_panic "Can't create temporary directory: $TMPDIR"
+  else
+    log "Cleaning up temporary directory: $TMPDIR"
+    rm -rf "$TMPDIR"/*
+    fail_panic "Cannot cleanup temporary directory!"
+  fi
+fi
+
+if [ -z "$NO_DEVICE" ]; then
+  if ! adb_check_device $ADB; then
+    echo "$(adb_get_error)"
+    echo "Use --no-device to build the code without running any tests."
+    exit 1
+  fi
+fi
+
+BUILD_LOG="$TMPDIR/build.log"
+RUN_LOG="$TMPDIR/run.log"
+CRASH_LOG="$TMPDIR/crash.log"
+
+set_run_log "$RUN_LOG"
+
+TMPHOST="$TMPDIR/host-local"
+
+cd "$TMPDIR"
+
+# Build host version of the tools
+dump "Building host binaries."
+CONFIGURE_FLAGS=
+if [ "$ENABLE_M32" ]; then
+  CONFIGURE_FLAGS="$CONFIGURE_FLAGS --enable-m32"
+fi
+(
+  run mkdir "$TMPDIR/build-host" &&
+  run cd "$TMPDIR/build-host" &&
+  run2 "$PROGDIR/../configure" --prefix="$TMPHOST" $CONFIGURE_FLAGS &&
+  run2 make -j$NUM_JOBS install
+)
+fail_panic "Can't build host binaries!"
+
+if [ "$ALL_TESTS" ]; then
+  dump "Running host unit tests."
+  (
+    run cd "$TMPDIR/build-host" &&
+    run2 make -j$NUM_JOBS check
+  )
+  fail_panic "Host unit tests failed!!"
+fi
+
+TMPBIN=$TMPHOST/bin
+
+# Generate a stand-alone NDK toolchain
+
+# Extract CPU ABI and architecture from device, if any.
+if adb_check_device; then
+  DEVICE_ABI=$(adb_shell getprop ro.product.cpu.abi)
+  DEVICE_ABI2=$(adb_shell getprop ro.product.cpu.abi2)
+  if [ -z "$DEVICE_ABI" ]; then
+    panic "Can't extract ABI from connected device!"
+  fi
+  if [ "$DEVICE_ABI2" ]; then
+    dump "Found device ABIs: $DEVICE_ABI $DEVICE_ABI2"
+  else
+    dump "Found device ABI: $DEVICE_ABI"
+    DEVICE_ABI2=$DEVICE_ABI
+  fi
+
+  # If --abi=<name> is used, check that the device supports it.
+  if [ "$ABI" -a "$DEVICE_ABI" != "$ABI" -a "$DEVICE_ABI2" != "$ABI" ]; then
+    dump  "ERROR: Device ABI(s) do not match --abi command-line value ($ABI)!"
+    panic "Please use --no-device to skip device tests."
+  fi
+
+  if [ -z "$ABI" ]; then
+    ABI=$DEVICE_ABI
+    dump "Using CPU ABI: $ABI (device)"
+  else
+    dump "Using CPU ABI: $ABI (command-line)"
+  fi
+else
+  if [ -z "$ABI" ]; then
+    # No device connected, choose default ABI
+    ABI=$DEFAULT_ABI
+    dump "Using CPU ABI: $ABI (default)"
+  else
+    dump "Using CPU ABI: $ABI (command-line)"
+  fi
+fi
+
+# Check the ABI value
+VALID=
+for VALID_ABI in $VALID_ABIS; do
+  if [ "$ABI" = "$VALID_ABI" ]; then
+    VALID=true
+    break
+  fi
+done
+
+if [ -z "$VALID" ]; then
+  panic "Unknown CPU ABI '$ABI'. Valid values are: $VALID_ABIS"
+fi
+
+# Extract architecture name from ABI
+case $ABI in
+  armeabi*) ARCH=arm;;
+  *) ARCH=$ABI;;
+esac
+
+# Extract GNU configuration name
+case $ARCH in
+  arm)
+    GNU_CONFIG=arm-linux-androideabi
+    ;;
+  x86)
+    GNU_CONFIG=i686-linux-android
+    ;;
+  mips)
+    GNU_CONFIG=mipsel-linux-android
+    ;;
+  *)
+    GNU_CONFIG="$ARCH-linux-android"
+    ;;
+esac
+
+# Generate standalone NDK toolchain installation
+NDK_STANDALONE="$TMPDIR/ndk-$ARCH-toolchain"
+echo "Generating NDK standalone toolchain installation"
+mkdir -p "$NDK_STANDALONE"
+# NOTE: The --platform=android-9 is required to provide <regex.h> for GTest.
+run "$NDK_DIR/build/tools/make-standalone-toolchain.sh" \
+      --arch="$ARCH" \
+      --platform=android-9 \
+      --install-dir="$NDK_STANDALONE"
+fail_panic "Can't generate standalone NDK toolchain installation!"
+
+# Rebuild the client library, processor and tools with the auto-tools based
+# build system. Even though it's not going to be used, this checks that this
+# still works correctly.
+echo "Building full Android binaries with configure/make"
+TMPTARGET="$TMPDIR/target-local"
+(
+  PATH="$NDK_STANDALONE/bin:$PATH"
+  run mkdir "$TMPTARGET" &&
+  run mkdir "$TMPDIR"/build-target &&
+  run cd "$TMPDIR"/build-target &&
+  run2 "$PROGDIR"/../configure --prefix="$TMPTARGET" \
+                               --host="$GNU_CONFIG" &&
+  run2 make -j$NUM_JOBS install
+)
+fail_panic "Could not rebuild Android binaries!"
+
+# Build and/or run unit test suite.
+# If --no-device is used, only rebuild it, otherwise, run in on the
+# connected device.
+if [ "$NO_DEVICE" ]; then
+  ACTION="Building"
+  # This is a trick to force the Makefile to ignore running the scripts.
+  TESTS_ENVIRONMENT="TESTS_ENVIRONMENT=true"
+else
+  ACTION="Running"
+  TESTS_ENVIRONMENT=
+fi
+
+(
+  PATH="$NDK_STANDALONE/bin:$PATH"
+  run cd "$TMPDIR"/build-target &&
+  # Reconfigure to only run the client unit test suite.
+  # This one should _never_ fail.
+  dump "$ACTION Android client library unit tests."
+  run2 "$PROGDIR"/../configure --prefix="$TMPTARGET" \
+                               --host="$GNU_CONFIG" \
+                               --disable-tools \
+                               --disable-processor &&
+  run make -j$NUM_JOBS check $TESTS_ENVIRONMENT || exit $?
+
+  if [ "$ALL_TESTS" ]; then
+    dump "$ACTION Tools and processor unit tests."
+    # Reconfigure to run the processor and tools tests.
+    # Most of these fail for now, so do not worry about it.
+    run2 "$PROGDIR"/../configure --prefix="$TMPTARGET" \
+                                 --host="$GNU_CONFIG" &&
+    run make -j$NUM_JOBS check $TESTS_ENVIRONMENT
+    if [ $? != 0 ]; then
+      dump "Tools and processor unit tests failed as expected. \
+Use --verbose for results."
+    fi                           
+  fi
+)
+fail_panic "Client library unit test suite failed!"
+
+# Copy sources to temporary directory
+PROJECT_DIR=$TMPDIR/project
+dump "Copying test program sources to: $PROJECT_DIR"
+run cp -r "$TESTAPP_DIR" "$PROJECT_DIR" &&
+run rm -rf "$PROJECT_DIR/obj" &&
+run rm -rf "$PROJECT_DIR/libs"
+fail_panic "Could not copy test program sources to: $PROJECT_DIR"
+
+# Build the test program with ndk-build.
+dump "Building test program with ndk-build"
+export NDK_MODULE_PATH="$PROGDIR"
+NDK_BUILD_FLAGS="-j$NUM_JOBS"
+if verbosity_is_higher_than 1; then
+  NDK_BUILD_FLAGS="$NDK_BUILD_FLAGS NDK_LOG=1 V=1"
+fi
+run "$NDK_DIR/ndk-build" -C "$PROJECT_DIR" $NDK_BUILD_FLAGS APP_ABI=$ABI
+fail_panic "Can't build test program!"
+
+# Unless --no-device was used, stop right here if ADB isn't in the path,
+# or there is no connected device.
+if [ "$NO_DEVICE" ]; then
+  dump "Done. Please connect a device to run all tests!"
+  clean_exit 0
+fi
+
+# Push the program to the device.
+TESTAPP=test_google_breakpad
+TESTAPP_FILE="$PROJECT_DIR/libs/$ABI/test_google_breakpad"
+if [ ! -f "$TESTAPP_FILE" ]; then
+  panic "Device requires '$ABI' binaries. None found!"
+fi
+
+# Run the program there
+dump "Installing test program on device"
+DEVICE_TMP=/data/local/tmp
+adb_push "$TESTAPP_FILE" "$DEVICE_TMP/"
+fail_panic "Cannot push test program to device!"
+
+dump "Running test program on device"
+adb_shell cd "$DEVICE_TMP" "&&" ./$TESTAPP > "$CRASH_LOG" 2>/dev/null
+if [ $? = 0 ]; then
+  panic "Test program did *not* crash as expected!"
+fi
+if verbosity_is_higher_than 0; then
+  echo -n "Crash log: "
+  cat "$CRASH_LOG"
+fi
+
+# Extract minidump from device
+MINIDUMP_NAME=$(awk '$1 == "Dump" && $2 == "path:" { print $3; }' "$CRASH_LOG")
+MINIDUMP_NAME=$(basename "$MINIDUMP_NAME")
+if [ -z "$MINIDUMP_NAME" ]; then
+  panic "Test program didn't write minidump properly!"
+fi
+
+dump "Extracting minidump: $MINIDUMP_NAME"
+adb_pull "$DEVICE_TMP/$MINIDUMP_NAME" .
+fail_panic "Can't extract minidump!"
+
+dump "Parsing test program symbols"
+if verbosity_is_higher_than 1; then
+  log "COMMAND: $TMPBIN/dump_syms \
+                $PROJECT_DIR/obj/local/$ABI/$TESTAPP >$TESTAPP.sym"
+fi
+"$TMPBIN/dump_syms" "$PROJECT_DIR/obj/local/$ABI/$TESTAPP" > $TESTAPP.sym
+fail_panic "dump_syms doesn't work!"
+
+VERSION=$(awk '$1 == "MODULE" { print $4; }' $TESTAPP.sym)
+dump "Found module version: $VERSION"
+if [ -z "$VERSION" ]; then
+  echo "ERROR: Can't find proper module version from symbol dump!"
+  head -n5 $TESTAPP.sym
+  clean_exit 1
+fi
+
+run mkdir -p "$TMPDIR/symbols/$TESTAPP/$VERSION"
+run mv $TESTAPP.sym "$TMPDIR/symbols/$TESTAPP/$VERSION/"
+
+dump "Generating stack trace"
+# Don't use 'run' to be able to send stdout and stderr to two different files.
+log "COMMAND: $TMPBIN/minidump_stackwalk $MINIDUMP_NAME symbols"
+"$TMPBIN/minidump_stackwalk" $MINIDUMP_NAME \
+                             "$TMPDIR/symbols" \
+                             > "$BUILD_LOG" 2>>"$RUN_LOG"
+fail_panic "minidump_stackwalk doesn't work!"
+
+dump "Checking stack trace content"
+
+if verbosity_is_higher_than 1; then
+  cat "$BUILD_LOG"
+fi
+
+# The generated stack trace should look like the following:
+#
+# Thread 0 (crashed)
+#  0  test_google_breakpad!crash [test_breakpad.cpp : 17 + 0x4]
+#      r4 = 0x00015530    r5 = 0xbea2cbe4    r6 = 0xffffff38    r7 = 0xbea2cb5c
+#      r8 = 0x00000000    r9 = 0x00000000   r10 = 0x00000000    fp = 0x00000000
+#      sp = 0xbea2cb50    lr = 0x00009025    pc = 0x00008f84
+#     Found by: given as instruction pointer in context
+#  1  test_google_breakpad!main [test_breakpad.cpp : 25 + 0x3]
+#      r4 = 0x00015530    r5 = 0xbea2cbe4    r6 = 0xffffff38    r7 = 0xbea2cb5c
+#      r8 = 0x00000000    r9 = 0x00000000   r10 = 0x00000000    fp = 0x00000000
+#      sp = 0xbea2cb50    pc = 0x00009025
+#     Found by: call frame info
+#  2  libc.so + 0x164e5
+#      r4 = 0x00008f64    r5 = 0xbea2cc34    r6 = 0x00000001    r7 = 0xbea2cc3c
+#      r8 = 0x00000000    r9 = 0x00000000   r10 = 0x00000000    fp = 0x00000000
+#      sp = 0xbea2cc18    pc = 0x400c34e7
+#     Found by: call frame info
+# ...
+#
+# The most important part for us is ensuring that the source location could
+# be extracted, so look at the 'test_breakpad.cpp' references here.
+#
+# First, extract all the lines with test_google_breakpad! in them, and
+# dump the corresponding crash location.
+#
+# Note that if the source location can't be extracted, the second field
+# will only be 'test_google_breakpad' without the exclamation mark.
+#
+LOCATIONS=$(awk '$2 ~ "^test_google_breakpad!.*" { print $3; }' "$BUILD_LOG")
+
+if [ -z "$LOCATIONS" ]; then
+  if verbosity_is_lower_than 1; then
+    cat "$BUILD_LOG"
+  fi
+  panic "No source location found in stack trace!"
+fi
+
+# Now check that they all match "[<source file>"
+BAD_LOCATIONS=
+for LOCATION in $LOCATIONS; do
+  case $LOCATION in
+    # Escape the opening bracket, or some shells like Dash will not
+    # match them properly.
+    \[*.cpp|\[*.cc|\[*.h) # These are valid source locations in our executable
+      ;;
+    *) # Everything else is not!
+      BAD_LOCATIONS="$BAD_LOCATIONS $LOCATION"
+      ;;
+  esac
+done
+
+if [ "$BAD_LOCATIONS" ]; then
+  dump "ERROR: Generated stack trace doesn't contain valid source locations:"
+  cat "$BUILD_LOG"
+  echo "Bad locations are: $BAD_LOCATIONS"
+  exit 1
+fi
+
+echo "All clear! Congratulations."
+
diff --git a/google-breakpad/android/sample_app/README b/google-breakpad/android/sample_app/README
new file mode 100644
index 0000000..aa19dbb
--- /dev/null
+++ b/google-breakpad/android/sample_app/README
@@ -0,0 +1,32 @@
+This is a sample Android executable that can be used to test the
+Google Breakpad client library on Android.
+
+Its purpose is simply to crash and generate a minidump under /data/local/tmp.
+
+Build instructions:
+
+   cd android/sample_app
+   $NDK/ndk-build
+
+  Where $NDK points to a valid Android NDK installation.
+
+Usage instructions:
+
+   After buildind the test program, send it to a device, then run it as
+   the shell UID:
+
+     adb push libs/armeabi/test_google_breakpad /data/local/tmp
+     adb shell /data/local/tmp/test_google_breakpad
+
+   This will simply crash after dumping the name of the generated minidump
+   file.
+
+   See jni/test_breakpad.cpp for details.
+
+   Use 'armeabi-v7a' instead of 'armeabi' above to test the ARMv7-A version
+   of the binary.
+
+Note:
+   If you plan to use the library in a regular Android application, store
+   the minidump files either to your app-specific directory, or to the SDCard
+   (the latter requiring a specific permission).
diff --git a/google-breakpad/android/sample_app/jni/Android.mk b/google-breakpad/android/sample_app/jni/Android.mk
new file mode 100644
index 0000000..61487b5
--- /dev/null
+++ b/google-breakpad/android/sample_app/jni/Android.mk
@@ -0,0 +1,44 @@
+# Copyright (c) 2012, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := test_google_breakpad
+LOCAL_SRC_FILES := test_breakpad.cpp
+LOCAL_STATIC_LIBRARIES += breakpad_client
+include $(BUILD_EXECUTABLE)
+
+# If NDK_MODULE_PATH is defined, import the module, otherwise do a direct
+# includes. This allows us to build in all scenarios easily.
+ifneq ($(NDK_MODULE_PATH),)
+  $(call import-module,google_breakpad)
+else
+  include $(LOCAL_PATH)/../../google_breakpad/Android.mk
+endif
diff --git a/google-breakpad/android/sample_app/jni/Application.mk b/google-breakpad/android/sample_app/jni/Application.mk
new file mode 100644
index 0000000..366ce29
--- /dev/null
+++ b/google-breakpad/android/sample_app/jni/Application.mk
@@ -0,0 +1,31 @@
+# Copyright (c) 2012, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+APP_STL := stlport_static
+APP_ABI := all
diff --git a/google-breakpad/android/sample_app/jni/test_breakpad.cpp b/google-breakpad/android/sample_app/jni/test_breakpad.cpp
new file mode 100644
index 0000000..9c4ebbb
--- /dev/null
+++ b/google-breakpad/android/sample_app/jni/test_breakpad.cpp
@@ -0,0 +1,57 @@
+// Copyright (c) 2012, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include <stdio.h>
+
+#include "client/linux/handler/exception_handler.h"
+#include "client/linux/handler/minidump_descriptor.h"
+
+namespace {
+
+bool DumpCallback(const google_breakpad::MinidumpDescriptor& descriptor,
+                  void* context,
+                  bool succeeded) {
+  printf("Dump path: %s\n", descriptor.path());
+  return succeeded;
+}
+
+void Crash() {
+  volatile int* a = reinterpret_cast<volatile int*>(NULL);
+  *a = 1;
+}
+
+}  // namespace
+
+int main(int argc, char* argv[]) {
+  google_breakpad::MinidumpDescriptor descriptor(".");
+  google_breakpad::ExceptionHandler eh(descriptor, NULL, DumpCallback,
+                                       NULL, true, -1);
+  Crash();
+  return 0;
+}
diff --git a/google-breakpad/android/test-driver b/google-breakpad/android/test-driver
new file mode 100755
index 0000000..eaaac6b
--- /dev/null
+++ b/google-breakpad/android/test-driver
@@ -0,0 +1,131 @@
+#! /bin/sh
+# test-driver - basic testsuite driver script.
+
+# Slightly modified for Android, see ANDROID comment below.
+
+scriptversion=2012-06-27.10; # UTC
+
+# Copyright (C) 2011-2013 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+# Make unconditional expansion of undefined variables an error.  This
+# helps a lot in preventing typo-related bugs.
+set -u
+
+usage_error ()
+{
+  echo "$0: $*" >&2
+  print_usage >&2
+  exit 2
+}
+
+print_usage ()
+{
+  cat <<END
+Usage:
+  test-driver --test-name=NAME --log-file=PATH --trs-file=PATH
+              [--expect-failure={yes|no}] [--color-tests={yes|no}]
+              [--enable-hard-errors={yes|no}] [--] TEST-SCRIPT
+The '--test-name', '--log-file' and '--trs-file' options are mandatory.
+END
+}
+
+# TODO: better error handling in option parsing (in particular, ensure
+# TODO: $log_file, $trs_file and $test_name are defined).
+test_name= # Used for reporting.
+log_file=  # Where to save the output of the test script.
+trs_file=  # Where to save the metadata of the test run.
+expect_failure=no
+color_tests=no
+enable_hard_errors=yes
+while test $# -gt 0; do
+  case $1 in
+  --help) print_usage; exit $?;;
+  --version) echo "test-driver $scriptversion"; exit $?;;
+  --test-name) test_name=$2; shift;;
+  --log-file) log_file=$2; shift;;
+  --trs-file) trs_file=$2; shift;;
+  --color-tests) color_tests=$2; shift;;
+  --expect-failure) expect_failure=$2; shift;;
+  --enable-hard-errors) enable_hard_errors=$2; shift;;
+  --) shift; break;;
+  -*) usage_error "invalid option: '$1'";;
+  esac
+  shift
+done
+
+if test $color_tests = yes; then
+  # Keep this in sync with 'lib/am/check.am:$(am__tty_colors)'.
+  red='[0;31m' # Red.
+  grn='[0;32m' # Green.
+  lgn='[1;32m' # Light green.
+  blu='[1;34m' # Blue.
+  mgn='[0;35m' # Magenta.
+  std='[m'     # No color.
+else
+  red= grn= lgn= blu= mgn= std=
+fi
+
+do_exit='rm -f $log_file $trs_file; (exit $st); exit $st'
+trap "st=129; $do_exit" 1
+trap "st=130; $do_exit" 2
+trap "st=141; $do_exit" 13
+trap "st=143; $do_exit" 15
+
+# Test script is run here.
+# ANDROID: old line was: "$@" > $log_file 2>&1
+progdir=$(dirname "$0")
+"$progdir/test-shell.sh" "$@" > $log_file 2>&1
+estatus=$?
+if test $enable_hard_errors = no && test $estatus -eq 99; then
+  estatus=1
+fi
+
+case $estatus:$expect_failure in
+  0:yes) col=$red res=XPASS recheck=yes gcopy=yes;;
+  0:*)   col=$grn res=PASS  recheck=no  gcopy=no;;
+  77:*)  col=$blu res=SKIP  recheck=no  gcopy=yes;;
+  99:*)  col=$mgn res=ERROR recheck=yes gcopy=yes;;
+  *:yes) col=$lgn res=XFAIL recheck=no  gcopy=yes;;
+  *:*)   col=$red res=FAIL  recheck=yes gcopy=yes;;
+esac
+
+# Report outcome to console.
+echo "${col}${res}${std}: $test_name"
+
+# Register the test result, and other relevant metadata.
+echo ":test-result: $res" > $trs_file
+echo ":global-test-result: $res" >> $trs_file
+echo ":recheck: $recheck" >> $trs_file
+echo ":copy-in-global-log: $gcopy" >> $trs_file
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/google-breakpad/android/test-shell.sh b/google-breakpad/android/test-shell.sh
new file mode 100755
index 0000000..3677d87
--- /dev/null
+++ b/google-breakpad/android/test-shell.sh
@@ -0,0 +1,131 @@
+#!/bin/sh
+#
+# Copyright (c) 2012 Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# A special shell wrapper that can be used to run the Google Breakpad unit
+# tests on a connected Android device.
+#
+# This is designed to be called from the Makefile during 'make check'
+#
+
+PROGDIR=$(dirname "$0")
+PROGNAME=$(basename "$0")
+. $PROGDIR/common-functions.sh
+
+# Extract test program name first.
+TEST_PROGRAM=$1
+shift
+
+if [ -z "$TEST_PROGRAM" ]; then
+  panic "No test program/script name on the command-line!"
+fi
+
+if [ ! -f "$TEST_PROGRAM" ]; then
+  panic "Can't find test program/script: $TEST_PROGRAM"
+fi
+
+# Create test directory on the device
+TEST_DIR=/data/local/tmp/test-google-breakpad-$$
+adb_shell mkdir "$TEST_DIR" ||
+    panic "Can't create test directory on device: $TEST_DIR"
+
+# Ensure that it is always removed when the script exits.
+clean_test_dir () {
+  # Don't care about success/failure, use '$ADB shell' directly.
+  adb_shell rm -r "$TEST_DIR"
+}
+
+atexit clean_test_dir
+
+TEST_PROGRAM_NAME=$(basename "$TEST_PROGRAM")
+TEST_PROGRAM_DIR=$(dirname "$TEST_PROGRAM")
+
+# Handle special case(s) here.
+DATA_FILES=
+case $TEST_PROGRAM_NAME in
+  linux_client_unittest)
+    # linux_client_unittest will call another executable at runtime, ensure
+    # it is installed too.
+    adb_install "$TEST_PROGRAM_DIR/linux_dumper_unittest_helper" "$TEST_DIR"
+    # linux_client_unittest loads a shared library at runtime, ensure it is
+    # installed too.
+    adb_install "$TEST_PROGRAM_DIR/linux_client_unittest_shlib" "$TEST_DIR"
+    ;;
+  basic_source_line_resolver_unittest)
+    DATA_FILES="module1.out \
+                module2.out \
+                module3_bad.out \
+                module4_bad.out"
+    ;;
+  exploitability_unittest)
+    DATA_FILES="scii_read_av.dmp \
+                ascii_read_av_block_write.dmp \
+                ascii_read_av_clobber_write.dmp \
+                ascii_read_av_conditional.dmp \
+                ascii_read_av_non_null.dmp \
+                ascii_read_av_then_jmp.dmp \
+                ascii_read_av_xchg_write.dmp \
+                ascii_write_av.dmp \
+                ascii_write_av_arg_to_call.dmp \
+                exec_av_on_stack.dmp \
+                null_read_av.dmp \
+                null_write_av.dmp \
+                read_av.dmp \
+                null_read_av.dmp \
+                write_av_non_null.dmp"
+    ;;
+  fast_source_line_resolver_unittest)
+    DATA_FILES="module0.out \
+                module1.out \
+                module2.out \
+                module3_bad.out \
+                module4_bad.out"
+    ;;
+  minidump_processor_unittest|minidump_unittest)
+    DATA_FILES="src/processor/testdata/minidump2.dmp"
+    ;;
+esac
+
+# Install the data files, their path is relative to the environment
+# variable 'srcdir'
+for FILE in $DATA_FILES; do
+  FILEDIR=src/processor/testdata/$(dirname "$FILE")
+  adb_shell mkdir -p "$TEST_DIR/$FILEDIR"
+  adb_install "${srcdir:-.}/$FILE" "$TEST_DIR"/"$FILE"
+done
+
+# Copy test program to device
+adb_install "$TEST_PROGRAM" "$TEST_DIR"
+
+# Run it
+adb_shell "cd $TEST_DIR && LD_LIBRARY_PATH=. ./$TEST_PROGRAM_NAME $@"
+
+# Note: exiting here will call cleanup_exit which will remove the temporary
+#       files from the device.
diff --git a/google-breakpad/autotools/compile b/google-breakpad/autotools/compile
new file mode 100755
index 0000000..531136b
--- /dev/null
+++ b/google-breakpad/autotools/compile
@@ -0,0 +1,347 @@
+#! /bin/sh
+# Wrapper for compilers which do not understand '-c -o'.
+
+scriptversion=2012-10-14.11; # UTC
+
+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Written by Tom Tromey <tromey@cygnus.com>.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+nl='
+'
+
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent tools from complaining about whitespace usage.
+IFS=" ""	$nl"
+
+file_conv=
+
+# func_file_conv build_file lazy
+# Convert a $build file to $host form and store it in $file
+# Currently only supports Windows hosts. If the determined conversion
+# type is listed in (the comma separated) LAZY, no conversion will
+# take place.
+func_file_conv ()
+{
+  file=$1
+  case $file in
+    / | /[!/]*) # absolute file, and not a UNC file
+      if test -z "$file_conv"; then
+	# lazily determine how to convert abs files
+	case `uname -s` in
+	  MINGW*)
+	    file_conv=mingw
+	    ;;
+	  CYGWIN*)
+	    file_conv=cygwin
+	    ;;
+	  *)
+	    file_conv=wine
+	    ;;
+	esac
+      fi
+      case $file_conv/,$2, in
+	*,$file_conv,*)
+	  ;;
+	mingw/*)
+	  file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
+	  ;;
+	cygwin/*)
+	  file=`cygpath -m "$file" || echo "$file"`
+	  ;;
+	wine/*)
+	  file=`winepath -w "$file" || echo "$file"`
+	  ;;
+      esac
+      ;;
+  esac
+}
+
+# func_cl_dashL linkdir
+# Make cl look for libraries in LINKDIR
+func_cl_dashL ()
+{
+  func_file_conv "$1"
+  if test -z "$lib_path"; then
+    lib_path=$file
+  else
+    lib_path="$lib_path;$file"
+  fi
+  linker_opts="$linker_opts -LIBPATH:$file"
+}
+
+# func_cl_dashl library
+# Do a library search-path lookup for cl
+func_cl_dashl ()
+{
+  lib=$1
+  found=no
+  save_IFS=$IFS
+  IFS=';'
+  for dir in $lib_path $LIB
+  do
+    IFS=$save_IFS
+    if $shared && test -f "$dir/$lib.dll.lib"; then
+      found=yes
+      lib=$dir/$lib.dll.lib
+      break
+    fi
+    if test -f "$dir/$lib.lib"; then
+      found=yes
+      lib=$dir/$lib.lib
+      break
+    fi
+    if test -f "$dir/lib$lib.a"; then
+      found=yes
+      lib=$dir/lib$lib.a
+      break
+    fi
+  done
+  IFS=$save_IFS
+
+  if test "$found" != yes; then
+    lib=$lib.lib
+  fi
+}
+
+# func_cl_wrapper cl arg...
+# Adjust compile command to suit cl
+func_cl_wrapper ()
+{
+  # Assume a capable shell
+  lib_path=
+  shared=:
+  linker_opts=
+  for arg
+  do
+    if test -n "$eat"; then
+      eat=
+    else
+      case $1 in
+	-o)
+	  # configure might choose to run compile as 'compile cc -o foo foo.c'.
+	  eat=1
+	  case $2 in
+	    *.o | *.[oO][bB][jJ])
+	      func_file_conv "$2"
+	      set x "$@" -Fo"$file"
+	      shift
+	      ;;
+	    *)
+	      func_file_conv "$2"
+	      set x "$@" -Fe"$file"
+	      shift
+	      ;;
+	  esac
+	  ;;
+	-I)
+	  eat=1
+	  func_file_conv "$2" mingw
+	  set x "$@" -I"$file"
+	  shift
+	  ;;
+	-I*)
+	  func_file_conv "${1#-I}" mingw
+	  set x "$@" -I"$file"
+	  shift
+	  ;;
+	-l)
+	  eat=1
+	  func_cl_dashl "$2"
+	  set x "$@" "$lib"
+	  shift
+	  ;;
+	-l*)
+	  func_cl_dashl "${1#-l}"
+	  set x "$@" "$lib"
+	  shift
+	  ;;
+	-L)
+	  eat=1
+	  func_cl_dashL "$2"
+	  ;;
+	-L*)
+	  func_cl_dashL "${1#-L}"
+	  ;;
+	-static)
+	  shared=false
+	  ;;
+	-Wl,*)
+	  arg=${1#-Wl,}
+	  save_ifs="$IFS"; IFS=','
+	  for flag in $arg; do
+	    IFS="$save_ifs"
+	    linker_opts="$linker_opts $flag"
+	  done
+	  IFS="$save_ifs"
+	  ;;
+	-Xlinker)
+	  eat=1
+	  linker_opts="$linker_opts $2"
+	  ;;
+	-*)
+	  set x "$@" "$1"
+	  shift
+	  ;;
+	*.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
+	  func_file_conv "$1"
+	  set x "$@" -Tp"$file"
+	  shift
+	  ;;
+	*.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
+	  func_file_conv "$1" mingw
+	  set x "$@" "$file"
+	  shift
+	  ;;
+	*)
+	  set x "$@" "$1"
+	  shift
+	  ;;
+      esac
+    fi
+    shift
+  done
+  if test -n "$linker_opts"; then
+    linker_opts="-link$linker_opts"
+  fi
+  exec "$@" $linker_opts
+  exit 1
+}
+
+eat=
+
+case $1 in
+  '')
+     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
+     exit 1;
+     ;;
+  -h | --h*)
+    cat <<\EOF
+Usage: compile [--help] [--version] PROGRAM [ARGS]
+
+Wrapper for compilers which do not understand '-c -o'.
+Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
+arguments, and rename the output as expected.
+
+If you are trying to build a whole package this is not the
+right script to run: please start by reading the file 'INSTALL'.
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "compile $scriptversion"
+    exit $?
+    ;;
+  cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
+    func_cl_wrapper "$@"      # Doesn't return...
+    ;;
+esac
+
+ofile=
+cfile=
+
+for arg
+do
+  if test -n "$eat"; then
+    eat=
+  else
+    case $1 in
+      -o)
+	# configure might choose to run compile as 'compile cc -o foo foo.c'.
+	# So we strip '-o arg' only if arg is an object.
+	eat=1
+	case $2 in
+	  *.o | *.obj)
+	    ofile=$2
+	    ;;
+	  *)
+	    set x "$@" -o "$2"
+	    shift
+	    ;;
+	esac
+	;;
+      *.c)
+	cfile=$1
+	set x "$@" "$1"
+	shift
+	;;
+      *)
+	set x "$@" "$1"
+	shift
+	;;
+    esac
+  fi
+  shift
+done
+
+if test -z "$ofile" || test -z "$cfile"; then
+  # If no '-o' option was seen then we might have been invoked from a
+  # pattern rule where we don't need one.  That is ok -- this is a
+  # normal compilation that the losing compiler can handle.  If no
+  # '.c' file was seen then we are probably linking.  That is also
+  # ok.
+  exec "$@"
+fi
+
+# Name of file we expect compiler to create.
+cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
+
+# Create the lock directory.
+# Note: use '[/\\:.-]' here to ensure that we don't use the same name
+# that we are using for the .o file.  Also, base the name on the expected
+# object file name, since that is what matters with a parallel build.
+lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
+while true; do
+  if mkdir "$lockdir" >/dev/null 2>&1; then
+    break
+  fi
+  sleep 1
+done
+# FIXME: race condition here if user kills between mkdir and trap.
+trap "rmdir '$lockdir'; exit 1" 1 2 15
+
+# Run the compile.
+"$@"
+ret=$?
+
+if test -f "$cofile"; then
+  test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
+elif test -f "${cofile}bj"; then
+  test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
+fi
+
+rmdir "$lockdir"
+exit $ret
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/google-breakpad/autotools/config.guess b/google-breakpad/autotools/config.guess
new file mode 100755
index 0000000..94fcdfe
--- /dev/null
+++ b/google-breakpad/autotools/config.guess
@@ -0,0 +1,1431 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+#   Copyright 1992-2014 Free Software Foundation, Inc.
+
+timestamp='2014-03-23'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that
+# program.  This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
+#
+# Originally written by Per Bothner.
+#
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+#
+# Please send patches with a ChangeLog entry to config-patches@gnu.org.
+
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright 1992-2014 Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit ;;
+    --version | -v )
+       echo "$version" ; exit ;;
+    --help | --h* | -h )
+       echo "$usage"; exit ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )	# Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help" >&2
+       exit 1 ;;
+    * )
+       break ;;
+  esac
+done
+
+if test $# != 0; then
+  echo "$me: too many arguments$help" >&2
+  exit 1
+fi
+
+trap 'exit 1' 1 2 15
+
+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
+# compiler to aid in system detection is discouraged as it requires
+# temporary files to be created and, as you can see below, it is a
+# headache to deal with in a portable fashion.
+
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+# Portable tmp directory creation inspired by the Autoconf team.
+
+set_cc_for_build='
+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+: ${TMPDIR=/tmp} ;
+ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
+dummy=$tmp/dummy ;
+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
+case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,)    echo "int x;" > $dummy.c ;
+	for c in cc gcc c89 c99 ; do
+	  if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
+	     CC_FOR_BUILD="$c"; break ;
+	  fi ;
+	done ;
+	if test x"$CC_FOR_BUILD" = x ; then
+	  CC_FOR_BUILD=no_compiler_found ;
+	fi
+	;;
+ ,,*)   CC_FOR_BUILD=$CC ;;
+ ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
+esac ; set_cc_for_build= ;'
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi@noc.rutgers.edu 1994-08-24)
+if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+	PATH=$PATH:/.attbin ; export PATH
+fi
+
+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+
+case "${UNAME_SYSTEM}" in
+Linux|GNU|GNU/*)
+	# If the system lacks a compiler, then just pick glibc.
+	# We could probably try harder.
+	LIBC=gnu
+
+	eval $set_cc_for_build
+	cat <<-EOF > $dummy.c
+	#include <features.h>
+	#if defined(__UCLIBC__)
+	LIBC=uclibc
+	#elif defined(__dietlibc__)
+	LIBC=dietlibc
+	#else
+	LIBC=gnu
+	#endif
+	EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
+	;;
+esac
+
+# Note: order is significant - the case branches are not exclusive.
+
+case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+    *:NetBSD:*:*)
+	# NetBSD (nbsd) targets should (where applicable) match one or
+	# more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
+	# *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
+	# switched to ELF, *-*-netbsd* would select the old
+	# object file format.  This provides both forward
+	# compatibility and a consistent mechanism for selecting the
+	# object file format.
+	#
+	# Note: NetBSD doesn't particularly care about the vendor
+	# portion of the name.  We always set it to "unknown".
+	sysctl="sysctl -n hw.machine_arch"
+	UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
+	    /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
+	case "${UNAME_MACHINE_ARCH}" in
+	    armeb) machine=armeb-unknown ;;
+	    arm*) machine=arm-unknown ;;
+	    sh3el) machine=shl-unknown ;;
+	    sh3eb) machine=sh-unknown ;;
+	    sh5el) machine=sh5le-unknown ;;
+	    *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+	esac
+	# The Operating System including object format, if it has switched
+	# to ELF recently, or will in the future.
+	case "${UNAME_MACHINE_ARCH}" in
+	    arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+		eval $set_cc_for_build
+		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+			| grep -q __ELF__
+		then
+		    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+		    # Return netbsd for either.  FIX?
+		    os=netbsd
+		else
+		    os=netbsdelf
+		fi
+		;;
+	    *)
+		os=netbsd
+		;;
+	esac
+	# The OS release
+	# Debian GNU/NetBSD machines have a different userland, and
+	# thus, need a distinct triplet. However, they do not need
+	# kernel version information, so it can be replaced with a
+	# suitable tag, in the style of linux-gnu.
+	case "${UNAME_VERSION}" in
+	    Debian*)
+		release='-gnu'
+		;;
+	    *)
+		release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+		;;
+	esac
+	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+	# contains redundant information, the shorter form:
+	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+	echo "${machine}-${os}${release}"
+	exit ;;
+    *:Bitrig:*:*)
+	UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
+	echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
+	exit ;;
+    *:OpenBSD:*:*)
+	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+	echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+	exit ;;
+    *:ekkoBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+	exit ;;
+    *:SolidBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
+	exit ;;
+    macppc:MirBSD:*:*)
+	echo powerpc-unknown-mirbsd${UNAME_RELEASE}
+	exit ;;
+    *:MirBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+	exit ;;
+    alpha:OSF1:*:*)
+	case $UNAME_RELEASE in
+	*4.0)
+		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+		;;
+	*5.*)
+		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+		;;
+	esac
+	# According to Compaq, /usr/sbin/psrinfo has been available on
+	# OSF/1 and Tru64 systems produced since 1995.  I hope that
+	# covers most systems running today.  This code pipes the CPU
+	# types through head -n 1, so we only detect the type of CPU 0.
+	ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
+	case "$ALPHA_CPU_TYPE" in
+	    "EV4 (21064)")
+		UNAME_MACHINE="alpha" ;;
+	    "EV4.5 (21064)")
+		UNAME_MACHINE="alpha" ;;
+	    "LCA4 (21066/21068)")
+		UNAME_MACHINE="alpha" ;;
+	    "EV5 (21164)")
+		UNAME_MACHINE="alphaev5" ;;
+	    "EV5.6 (21164A)")
+		UNAME_MACHINE="alphaev56" ;;
+	    "EV5.6 (21164PC)")
+		UNAME_MACHINE="alphapca56" ;;
+	    "EV5.7 (21164PC)")
+		UNAME_MACHINE="alphapca57" ;;
+	    "EV6 (21264)")
+		UNAME_MACHINE="alphaev6" ;;
+	    "EV6.7 (21264A)")
+		UNAME_MACHINE="alphaev67" ;;
+	    "EV6.8CB (21264C)")
+		UNAME_MACHINE="alphaev68" ;;
+	    "EV6.8AL (21264B)")
+		UNAME_MACHINE="alphaev68" ;;
+	    "EV6.8CX (21264D)")
+		UNAME_MACHINE="alphaev68" ;;
+	    "EV6.9A (21264/EV69A)")
+		UNAME_MACHINE="alphaev69" ;;
+	    "EV7 (21364)")
+		UNAME_MACHINE="alphaev7" ;;
+	    "EV7.9 (21364A)")
+		UNAME_MACHINE="alphaev79" ;;
+	esac
+	# A Pn.n version is a patched version.
+	# A Vn.n version is a released version.
+	# A Tn.n version is a released field test version.
+	# A Xn.n version is an unreleased experimental baselevel.
+	# 1.2 uses "1.2" for uname -r.
+	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+	# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
+	exitcode=$?
+	trap '' 0
+	exit $exitcode ;;
+    Alpha\ *:Windows_NT*:*)
+	# How do we know it's Interix rather than the generic POSIX subsystem?
+	# Should we change UNAME_MACHINE based on the output of uname instead
+	# of the specific Alpha model?
+	echo alpha-pc-interix
+	exit ;;
+    21064:Windows_NT:50:3)
+	echo alpha-dec-winnt3.5
+	exit ;;
+    Amiga*:UNIX_System_V:4.0:*)
+	echo m68k-unknown-sysv4
+	exit ;;
+    *:[Aa]miga[Oo][Ss]:*:*)
+	echo ${UNAME_MACHINE}-unknown-amigaos
+	exit ;;
+    *:[Mm]orph[Oo][Ss]:*:*)
+	echo ${UNAME_MACHINE}-unknown-morphos
+	exit ;;
+    *:OS/390:*:*)
+	echo i370-ibm-openedition
+	exit ;;
+    *:z/VM:*:*)
+	echo s390-ibm-zvmoe
+	exit ;;
+    *:OS400:*:*)
+	echo powerpc-ibm-os400
+	exit ;;
+    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+	echo arm-acorn-riscix${UNAME_RELEASE}
+	exit ;;
+    arm*:riscos:*:*|arm*:RISCOS:*:*)
+	echo arm-unknown-riscos
+	exit ;;
+    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+	echo hppa1.1-hitachi-hiuxmpp
+	exit ;;
+    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+	# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+	if test "`(/bin/universe) 2>/dev/null`" = att ; then
+		echo pyramid-pyramid-sysv3
+	else
+		echo pyramid-pyramid-bsd
+	fi
+	exit ;;
+    NILE*:*:*:dcosx)
+	echo pyramid-pyramid-svr4
+	exit ;;
+    DRS?6000:unix:4.0:6*)
+	echo sparc-icl-nx6
+	exit ;;
+    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
+	case `/usr/bin/uname -p` in
+	    sparc) echo sparc-icl-nx7; exit ;;
+	esac ;;
+    s390x:SunOS:*:*)
+	echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4H:SunOS:5.*:*)
+	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
+	echo i386-pc-auroraux${UNAME_RELEASE}
+	exit ;;
+    i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
+	eval $set_cc_for_build
+	SUN_ARCH="i386"
+	# If there is a compiler, see if it is configured for 64-bit objects.
+	# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
+	# This test works for both compilers.
+	if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+	    if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
+		(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+		grep IS_64BIT_ARCH >/dev/null
+	    then
+		SUN_ARCH="x86_64"
+	    fi
+	fi
+	echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4*:SunOS:6*:*)
+	# According to config.sub, this is the proper way to canonicalize
+	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but
+	# it's likely to be more like Solaris than SunOS4.
+	echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4*:SunOS:*:*)
+	case "`/usr/bin/arch -k`" in
+	    Series*|S4*)
+		UNAME_RELEASE=`uname -v`
+		;;
+	esac
+	# Japanese Language versions have a version number like `4.1.3-JL'.
+	echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+	exit ;;
+    sun3*:SunOS:*:*)
+	echo m68k-sun-sunos${UNAME_RELEASE}
+	exit ;;
+    sun*:*:4.2BSD:*)
+	UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+	test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+	case "`/bin/arch`" in
+	    sun3)
+		echo m68k-sun-sunos${UNAME_RELEASE}
+		;;
+	    sun4)
+		echo sparc-sun-sunos${UNAME_RELEASE}
+		;;
+	esac
+	exit ;;
+    aushp:SunOS:*:*)
+	echo sparc-auspex-sunos${UNAME_RELEASE}
+	exit ;;
+    # The situation for MiNT is a little confusing.  The machine name
+    # can be virtually everything (everything which is not
+    # "atarist" or "atariste" at least should have a processor
+    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
+    # to the lowercase version "mint" (or "freemint").  Finally
+    # the system name "TOS" denotes a system which is actually not
+    # MiNT.  But MiNT is downward compatible to TOS, so this should
+    # be no problem.
+    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+	echo m68k-atari-mint${UNAME_RELEASE}
+	exit ;;
+    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+	echo m68k-atari-mint${UNAME_RELEASE}
+	exit ;;
+    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+	echo m68k-atari-mint${UNAME_RELEASE}
+	exit ;;
+    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+	echo m68k-milan-mint${UNAME_RELEASE}
+	exit ;;
+    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+	echo m68k-hades-mint${UNAME_RELEASE}
+	exit ;;
+    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+	echo m68k-unknown-mint${UNAME_RELEASE}
+	exit ;;
+    m68k:machten:*:*)
+	echo m68k-apple-machten${UNAME_RELEASE}
+	exit ;;
+    powerpc:machten:*:*)
+	echo powerpc-apple-machten${UNAME_RELEASE}
+	exit ;;
+    RISC*:Mach:*:*)
+	echo mips-dec-mach_bsd4.3
+	exit ;;
+    RISC*:ULTRIX:*:*)
+	echo mips-dec-ultrix${UNAME_RELEASE}
+	exit ;;
+    VAX*:ULTRIX*:*:*)
+	echo vax-dec-ultrix${UNAME_RELEASE}
+	exit ;;
+    2020:CLIX:*:* | 2430:CLIX:*:*)
+	echo clipper-intergraph-clix${UNAME_RELEASE}
+	exit ;;
+    mips:*:*:UMIPS | mips:*:*:RISCos)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h>  /* for printf() prototype */
+	int main (int argc, char *argv[]) {
+#else
+	int main (argc, argv) int argc; char *argv[]; {
+#endif
+	#if defined (host_mips) && defined (MIPSEB)
+	#if defined (SYSTYPE_SYSV)
+	  printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+	#endif
+	#if defined (SYSTYPE_SVR4)
+	  printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+	#endif
+	#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
+	  printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+	#endif
+	#endif
+	  exit (-1);
+	}
+EOF
+	$CC_FOR_BUILD -o $dummy $dummy.c &&
+	  dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+	  SYSTEM_NAME=`$dummy $dummyarg` &&
+	    { echo "$SYSTEM_NAME"; exit; }
+	echo mips-mips-riscos${UNAME_RELEASE}
+	exit ;;
+    Motorola:PowerMAX_OS:*:*)
+	echo powerpc-motorola-powermax
+	exit ;;
+    Motorola:*:4.3:PL8-*)
+	echo powerpc-harris-powermax
+	exit ;;
+    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+	echo powerpc-harris-powermax
+	exit ;;
+    Night_Hawk:Power_UNIX:*:*)
+	echo powerpc-harris-powerunix
+	exit ;;
+    m88k:CX/UX:7*:*)
+	echo m88k-harris-cxux7
+	exit ;;
+    m88k:*:4*:R4*)
+	echo m88k-motorola-sysv4
+	exit ;;
+    m88k:*:3*:R3*)
+	echo m88k-motorola-sysv3
+	exit ;;
+    AViiON:dgux:*:*)
+	# DG/UX returns AViiON for all architectures
+	UNAME_PROCESSOR=`/usr/bin/uname -p`
+	if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+	then
+	    if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+	       [ ${TARGET_BINARY_INTERFACE}x = x ]
+	    then
+		echo m88k-dg-dgux${UNAME_RELEASE}
+	    else
+		echo m88k-dg-dguxbcs${UNAME_RELEASE}
+	    fi
+	else
+	    echo i586-dg-dgux${UNAME_RELEASE}
+	fi
+	exit ;;
+    M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
+	echo m88k-dolphin-sysv3
+	exit ;;
+    M88*:*:R3*:*)
+	# Delta 88k system running SVR3
+	echo m88k-motorola-sysv3
+	exit ;;
+    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+	echo m88k-tektronix-sysv3
+	exit ;;
+    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+	echo m68k-tektronix-bsd
+	exit ;;
+    *:IRIX*:*:*)
+	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+	exit ;;
+    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+	echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
+	exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
+    i*86:AIX:*:*)
+	echo i386-ibm-aix
+	exit ;;
+    ia64:AIX:*:*)
+	if [ -x /usr/bin/oslevel ] ; then
+		IBM_REV=`/usr/bin/oslevel`
+	else
+		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+	fi
+	echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+	exit ;;
+    *:AIX:2:3)
+	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+		eval $set_cc_for_build
+		sed 's/^		//' << EOF >$dummy.c
+		#include <sys/systemcfg.h>
+
+		main()
+			{
+			if (!__power_pc())
+				exit(1);
+			puts("powerpc-ibm-aix3.2.5");
+			exit(0);
+			}
+EOF
+		if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
+		then
+			echo "$SYSTEM_NAME"
+		else
+			echo rs6000-ibm-aix3.2.5
+		fi
+	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+		echo rs6000-ibm-aix3.2.4
+	else
+		echo rs6000-ibm-aix3.2
+	fi
+	exit ;;
+    *:AIX:*:[4567])
+	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+		IBM_ARCH=rs6000
+	else
+		IBM_ARCH=powerpc
+	fi
+	if [ -x /usr/bin/oslevel ] ; then
+		IBM_REV=`/usr/bin/oslevel`
+	else
+		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+	fi
+	echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+	exit ;;
+    *:AIX:*:*)
+	echo rs6000-ibm-aix
+	exit ;;
+    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+	echo romp-ibm-bsd4.4
+	exit ;;
+    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
+	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
+	exit ;;                             # report: romp-ibm BSD 4.3
+    *:BOSX:*:*)
+	echo rs6000-bull-bosx
+	exit ;;
+    DPX/2?00:B.O.S.:*:*)
+	echo m68k-bull-sysv3
+	exit ;;
+    9000/[34]??:4.3bsd:1.*:*)
+	echo m68k-hp-bsd
+	exit ;;
+    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+	echo m68k-hp-bsd4.4
+	exit ;;
+    9000/[34678]??:HP-UX:*:*)
+	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+	case "${UNAME_MACHINE}" in
+	    9000/31? )            HP_ARCH=m68000 ;;
+	    9000/[34]?? )         HP_ARCH=m68k ;;
+	    9000/[678][0-9][0-9])
+		if [ -x /usr/bin/getconf ]; then
+		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+		    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+		    case "${sc_cpu_version}" in
+		      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+		      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+		      532)                      # CPU_PA_RISC2_0
+			case "${sc_kernel_bits}" in
+			  32) HP_ARCH="hppa2.0n" ;;
+			  64) HP_ARCH="hppa2.0w" ;;
+			  '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
+			esac ;;
+		    esac
+		fi
+		if [ "${HP_ARCH}" = "" ]; then
+		    eval $set_cc_for_build
+		    sed 's/^		//' << EOF >$dummy.c
+
+		#define _HPUX_SOURCE
+		#include <stdlib.h>
+		#include <unistd.h>
+
+		int main ()
+		{
+		#if defined(_SC_KERNEL_BITS)
+		    long bits = sysconf(_SC_KERNEL_BITS);
+		#endif
+		    long cpu  = sysconf (_SC_CPU_VERSION);
+
+		    switch (cpu)
+			{
+			case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+			case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+			case CPU_PA_RISC2_0:
+		#if defined(_SC_KERNEL_BITS)
+			    switch (bits)
+				{
+				case 64: puts ("hppa2.0w"); break;
+				case 32: puts ("hppa2.0n"); break;
+				default: puts ("hppa2.0"); break;
+				} break;
+		#else  /* !defined(_SC_KERNEL_BITS) */
+			    puts ("hppa2.0"); break;
+		#endif
+			default: puts ("hppa1.0"); break;
+			}
+		    exit (0);
+		}
+EOF
+		    (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+		    test -z "$HP_ARCH" && HP_ARCH=hppa
+		fi ;;
+	esac
+	if [ ${HP_ARCH} = "hppa2.0w" ]
+	then
+	    eval $set_cc_for_build
+
+	    # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
+	    # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
+	    # generating 64-bit code.  GNU and HP use different nomenclature:
+	    #
+	    # $ CC_FOR_BUILD=cc ./config.guess
+	    # => hppa2.0w-hp-hpux11.23
+	    # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
+	    # => hppa64-hp-hpux11.23
+
+	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
+		grep -q __LP64__
+	    then
+		HP_ARCH="hppa2.0w"
+	    else
+		HP_ARCH="hppa64"
+	    fi
+	fi
+	echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+	exit ;;
+    ia64:HP-UX:*:*)
+	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+	echo ia64-hp-hpux${HPUX_REV}
+	exit ;;
+    3050*:HI-UX:*:*)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#include <unistd.h>
+	int
+	main ()
+	{
+	  long cpu = sysconf (_SC_CPU_VERSION);
+	  /* The order matters, because CPU_IS_HP_MC68K erroneously returns
+	     true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
+	     results, however.  */
+	  if (CPU_IS_PA_RISC (cpu))
+	    {
+	      switch (cpu)
+		{
+		  case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
+		  case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
+		  case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
+		  default: puts ("hppa-hitachi-hiuxwe2"); break;
+		}
+	    }
+	  else if (CPU_IS_HP_MC68K (cpu))
+	    puts ("m68k-hitachi-hiuxwe2");
+	  else puts ("unknown-hitachi-hiuxwe2");
+	  exit (0);
+	}
+EOF
+	$CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
+		{ echo "$SYSTEM_NAME"; exit; }
+	echo unknown-hitachi-hiuxwe2
+	exit ;;
+    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+	echo hppa1.1-hp-bsd
+	exit ;;
+    9000/8??:4.3bsd:*:*)
+	echo hppa1.0-hp-bsd
+	exit ;;
+    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+	echo hppa1.0-hp-mpeix
+	exit ;;
+    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+	echo hppa1.1-hp-osf
+	exit ;;
+    hp8??:OSF1:*:*)
+	echo hppa1.0-hp-osf
+	exit ;;
+    i*86:OSF1:*:*)
+	if [ -x /usr/sbin/sysversion ] ; then
+	    echo ${UNAME_MACHINE}-unknown-osf1mk
+	else
+	    echo ${UNAME_MACHINE}-unknown-osf1
+	fi
+	exit ;;
+    parisc*:Lites*:*:*)
+	echo hppa1.1-hp-lites
+	exit ;;
+    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+	echo c1-convex-bsd
+	exit ;;
+    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+	if getsysinfo -f scalar_acc
+	then echo c32-convex-bsd
+	else echo c2-convex-bsd
+	fi
+	exit ;;
+    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+	echo c34-convex-bsd
+	exit ;;
+    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+	echo c38-convex-bsd
+	exit ;;
+    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+	echo c4-convex-bsd
+	exit ;;
+    CRAY*Y-MP:*:*:*)
+	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*[A-Z]90:*:*:*)
+	echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+	      -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*TS:*:*:*)
+	echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*T3E:*:*:*)
+	echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*SV1:*:*:*)
+	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    *:UNICOS/mp:*:*)
+	echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+	FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+	FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+	echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+	exit ;;
+    5000:UNIX_System_V:4.*:*)
+	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+	FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+	echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+	exit ;;
+    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+	exit ;;
+    sparc*:BSD/OS:*:*)
+	echo sparc-unknown-bsdi${UNAME_RELEASE}
+	exit ;;
+    *:BSD/OS:*:*)
+	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+	exit ;;
+    *:FreeBSD:*:*)
+	UNAME_PROCESSOR=`/usr/bin/uname -p`
+	case ${UNAME_PROCESSOR} in
+	    amd64)
+		echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+	    *)
+		echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+	esac
+	exit ;;
+    i*:CYGWIN*:*)
+	echo ${UNAME_MACHINE}-pc-cygwin
+	exit ;;
+    *:MINGW64*:*)
+	echo ${UNAME_MACHINE}-pc-mingw64
+	exit ;;
+    *:MINGW*:*)
+	echo ${UNAME_MACHINE}-pc-mingw32
+	exit ;;
+    *:MSYS*:*)
+	echo ${UNAME_MACHINE}-pc-msys
+	exit ;;
+    i*:windows32*:*)
+	# uname -m includes "-pc" on this system.
+	echo ${UNAME_MACHINE}-mingw32
+	exit ;;
+    i*:PW*:*)
+	echo ${UNAME_MACHINE}-pc-pw32
+	exit ;;
+    *:Interix*:*)
+	case ${UNAME_MACHINE} in
+	    x86)
+		echo i586-pc-interix${UNAME_RELEASE}
+		exit ;;
+	    authenticamd | genuineintel | EM64T)
+		echo x86_64-unknown-interix${UNAME_RELEASE}
+		exit ;;
+	    IA64)
+		echo ia64-unknown-interix${UNAME_RELEASE}
+		exit ;;
+	esac ;;
+    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+	echo i${UNAME_MACHINE}-pc-mks
+	exit ;;
+    8664:Windows_NT:*)
+	echo x86_64-pc-mks
+	exit ;;
+    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+	# How do we know it's Interix rather than the generic POSIX subsystem?
+	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+	# UNAME_MACHINE based on the output of uname instead of i386?
+	echo i586-pc-interix
+	exit ;;
+    i*:UWIN*:*)
+	echo ${UNAME_MACHINE}-pc-uwin
+	exit ;;
+    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
+	echo x86_64-unknown-cygwin
+	exit ;;
+    p*:CYGWIN*:*)
+	echo powerpcle-unknown-cygwin
+	exit ;;
+    prep*:SunOS:5.*:*)
+	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    *:GNU:*:*)
+	# the GNU system
+	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+	exit ;;
+    *:GNU/*:*:*)
+	# other systems with GNU libc and userland
+	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
+	exit ;;
+    i*86:Minix:*:*)
+	echo ${UNAME_MACHINE}-pc-minix
+	exit ;;
+    aarch64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    aarch64_be:Linux:*:*)
+	UNAME_MACHINE=aarch64_be
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    alpha:Linux:*:*)
+	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+	  EV5)   UNAME_MACHINE=alphaev5 ;;
+	  EV56)  UNAME_MACHINE=alphaev56 ;;
+	  PCA56) UNAME_MACHINE=alphapca56 ;;
+	  PCA57) UNAME_MACHINE=alphapca56 ;;
+	  EV6)   UNAME_MACHINE=alphaev6 ;;
+	  EV67)  UNAME_MACHINE=alphaev67 ;;
+	  EV68*) UNAME_MACHINE=alphaev68 ;;
+	esac
+	objdump --private-headers /bin/sh | grep -q ld.so.1
+	if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    arc:Linux:*:* | arceb:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    arm*:Linux:*:*)
+	eval $set_cc_for_build
+	if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
+	    | grep -q __ARM_EABI__
+	then
+	    echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	else
+	    if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
+		| grep -q __ARM_PCS_VFP
+	    then
+		echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
+	    else
+		echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
+	    fi
+	fi
+	exit ;;
+    avr32*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    cris:Linux:*:*)
+	echo ${UNAME_MACHINE}-axis-linux-${LIBC}
+	exit ;;
+    crisv32:Linux:*:*)
+	echo ${UNAME_MACHINE}-axis-linux-${LIBC}
+	exit ;;
+    frv:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    hexagon:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    i*86:Linux:*:*)
+	echo ${UNAME_MACHINE}-pc-linux-${LIBC}
+	exit ;;
+    ia64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    m32r*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    m68*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    mips:Linux:*:* | mips64:Linux:*:*)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#undef CPU
+	#undef ${UNAME_MACHINE}
+	#undef ${UNAME_MACHINE}el
+	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+	CPU=${UNAME_MACHINE}el
+	#else
+	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+	CPU=${UNAME_MACHINE}
+	#else
+	CPU=
+	#endif
+	#endif
+EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
+	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
+	;;
+    openrisc*:Linux:*:*)
+	echo or1k-unknown-linux-${LIBC}
+	exit ;;
+    or32:Linux:*:* | or1k*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    padre:Linux:*:*)
+	echo sparc-unknown-linux-${LIBC}
+	exit ;;
+    parisc64:Linux:*:* | hppa64:Linux:*:*)
+	echo hppa64-unknown-linux-${LIBC}
+	exit ;;
+    parisc:Linux:*:* | hppa:Linux:*:*)
+	# Look for CPU level
+	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+	  PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
+	  PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
+	  *)    echo hppa-unknown-linux-${LIBC} ;;
+	esac
+	exit ;;
+    ppc64:Linux:*:*)
+	echo powerpc64-unknown-linux-${LIBC}
+	exit ;;
+    ppc:Linux:*:*)
+	echo powerpc-unknown-linux-${LIBC}
+	exit ;;
+    ppc64le:Linux:*:*)
+	echo powerpc64le-unknown-linux-${LIBC}
+	exit ;;
+    ppcle:Linux:*:*)
+	echo powerpcle-unknown-linux-${LIBC}
+	exit ;;
+    s390:Linux:*:* | s390x:Linux:*:*)
+	echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
+	exit ;;
+    sh64*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    sh*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    sparc:Linux:*:* | sparc64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    tile*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    vax:Linux:*:*)
+	echo ${UNAME_MACHINE}-dec-linux-${LIBC}
+	exit ;;
+    x86_64:Linux:*:*)
+	eval $set_cc_for_build
+	X86_64_ABI=
+	# If there is a compiler, see if it is configured for 32-bit objects.
+	if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+	    if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \
+		(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+		grep IS_X32 >/dev/null
+	    then
+		X86_64_ABI=x32
+	    fi
+	fi
+	echo x86_64-unknown-linux-gnu${X86_64_ABI}
+	exit ;;
+    xtensa*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    i*86:DYNIX/ptx:4*:*)
+	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+	# earlier versions are messed up and put the nodename in both
+	# sysname and nodename.
+	echo i386-sequent-sysv4
+	exit ;;
+    i*86:UNIX_SV:4.2MP:2.*)
+	# Unixware is an offshoot of SVR4, but it has its own version
+	# number series starting with 2...
+	# I am not positive that other SVR4 systems won't match this,
+	# I just have to hope.  -- rms.
+	# Use sysv4.2uw... so that sysv4* matches it.
+	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+	exit ;;
+    i*86:OS/2:*:*)
+	# If we were able to find `uname', then EMX Unix compatibility
+	# is probably installed.
+	echo ${UNAME_MACHINE}-pc-os2-emx
+	exit ;;
+    i*86:XTS-300:*:STOP)
+	echo ${UNAME_MACHINE}-unknown-stop
+	exit ;;
+    i*86:atheos:*:*)
+	echo ${UNAME_MACHINE}-unknown-atheos
+	exit ;;
+    i*86:syllable:*:*)
+	echo ${UNAME_MACHINE}-pc-syllable
+	exit ;;
+    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
+	echo i386-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    i*86:*DOS:*:*)
+	echo ${UNAME_MACHINE}-pc-msdosdjgpp
+	exit ;;
+    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+	UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+		echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+	else
+		echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+	fi
+	exit ;;
+    i*86:*:5:[678]*)
+	# UnixWare 7.x, OpenUNIX and OpenServer 6.
+	case `/bin/uname -X | grep "^Machine"` in
+	    *486*)	     UNAME_MACHINE=i486 ;;
+	    *Pentium)	     UNAME_MACHINE=i586 ;;
+	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+	esac
+	echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+	exit ;;
+    i*86:*:3.2:*)
+	if test -f /usr/options/cb.name; then
+		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+		echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+	elif /bin/uname -X 2>/dev/null >/dev/null ; then
+		UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
+		(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
+		(/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
+			&& UNAME_MACHINE=i586
+		(/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
+			&& UNAME_MACHINE=i686
+		(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
+			&& UNAME_MACHINE=i686
+		echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+	else
+		echo ${UNAME_MACHINE}-pc-sysv32
+	fi
+	exit ;;
+    pc:*:*:*)
+	# Left here for compatibility:
+	# uname -m prints for DJGPP always 'pc', but it prints nothing about
+	# the processor, so we play safe by assuming i586.
+	# Note: whatever this is, it MUST be the same as what config.sub
+	# prints for the "djgpp" host, or else GDB configury will decide that
+	# this is a cross-build.
+	echo i586-pc-msdosdjgpp
+	exit ;;
+    Intel:Mach:3*:*)
+	echo i386-pc-mach3
+	exit ;;
+    paragon:*:*:*)
+	echo i860-intel-osf1
+	exit ;;
+    i860:*:4.*:*) # i860-SVR4
+	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+	  echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+	else # Add other i860-SVR4 vendors below as they are discovered.
+	  echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
+	fi
+	exit ;;
+    mini*:CTIX:SYS*5:*)
+	# "miniframe"
+	echo m68010-convergent-sysv
+	exit ;;
+    mc68k:UNIX:SYSTEM5:3.51m)
+	echo m68k-convergent-sysv
+	exit ;;
+    M680?0:D-NIX:5.3:*)
+	echo m68k-diab-dnix
+	exit ;;
+    M68*:*:R3V[5678]*:*)
+	test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
+    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
+	OS_REL=''
+	test -r /etc/.relid \
+	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+	  && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+	  && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+	  && { echo i486-ncr-sysv4; exit; } ;;
+    NCR*:*:4.2:* | MPRAS*:*:4.2:*)
+	OS_REL='.3'
+	test -r /etc/.relid \
+	    && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+	    && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
+	/bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
+	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+	echo m68k-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    mc68030:UNIX_System_V:4.*:*)
+	echo m68k-atari-sysv4
+	exit ;;
+    TSUNAMI:LynxOS:2.*:*)
+	echo sparc-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    rs6000:LynxOS:2.*:*)
+	echo rs6000-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
+	echo powerpc-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    SM[BE]S:UNIX_SV:*:*)
+	echo mips-dde-sysv${UNAME_RELEASE}
+	exit ;;
+    RM*:ReliantUNIX-*:*:*)
+	echo mips-sni-sysv4
+	exit ;;
+    RM*:SINIX-*:*:*)
+	echo mips-sni-sysv4
+	exit ;;
+    *:SINIX-*:*:*)
+	if uname -p 2>/dev/null >/dev/null ; then
+		UNAME_MACHINE=`(uname -p) 2>/dev/null`
+		echo ${UNAME_MACHINE}-sni-sysv4
+	else
+		echo ns32k-sni-sysv
+	fi
+	exit ;;
+    PENTIUM:*:4.0*:*)	# Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+			# says <Richard.M.Bartel@ccMail.Census.GOV>
+	echo i586-unisys-sysv4
+	exit ;;
+    *:UNIX_System_V:4*:FTX*)
+	# From Gerald Hewes <hewes@openmarket.com>.
+	# How about differentiating between stratus architectures? -djm
+	echo hppa1.1-stratus-sysv4
+	exit ;;
+    *:*:*:FTX*)
+	# From seanf@swdc.stratus.com.
+	echo i860-stratus-sysv4
+	exit ;;
+    i*86:VOS:*:*)
+	# From Paul.Green@stratus.com.
+	echo ${UNAME_MACHINE}-stratus-vos
+	exit ;;
+    *:VOS:*:*)
+	# From Paul.Green@stratus.com.
+	echo hppa1.1-stratus-vos
+	exit ;;
+    mc68*:A/UX:*:*)
+	echo m68k-apple-aux${UNAME_RELEASE}
+	exit ;;
+    news*:NEWS-OS:6*:*)
+	echo mips-sony-newsos6
+	exit ;;
+    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+	if [ -d /usr/nec ]; then
+		echo mips-nec-sysv${UNAME_RELEASE}
+	else
+		echo mips-unknown-sysv${UNAME_RELEASE}
+	fi
+	exit ;;
+    BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
+	echo powerpc-be-beos
+	exit ;;
+    BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.
+	echo powerpc-apple-beos
+	exit ;;
+    BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
+	echo i586-pc-beos
+	exit ;;
+    BePC:Haiku:*:*)	# Haiku running on Intel PC compatible.
+	echo i586-pc-haiku
+	exit ;;
+    x86_64:Haiku:*:*)
+	echo x86_64-unknown-haiku
+	exit ;;
+    SX-4:SUPER-UX:*:*)
+	echo sx4-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-5:SUPER-UX:*:*)
+	echo sx5-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-6:SUPER-UX:*:*)
+	echo sx6-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-7:SUPER-UX:*:*)
+	echo sx7-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-8:SUPER-UX:*:*)
+	echo sx8-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-8R:SUPER-UX:*:*)
+	echo sx8r-nec-superux${UNAME_RELEASE}
+	exit ;;
+    Power*:Rhapsody:*:*)
+	echo powerpc-apple-rhapsody${UNAME_RELEASE}
+	exit ;;
+    *:Rhapsody:*:*)
+	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+	exit ;;
+    *:Darwin:*:*)
+	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+	eval $set_cc_for_build
+	if test "$UNAME_PROCESSOR" = unknown ; then
+	    UNAME_PROCESSOR=powerpc
+	fi
+	if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
+	    if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+		if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+		    (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+		    grep IS_64BIT_ARCH >/dev/null
+		then
+		    case $UNAME_PROCESSOR in
+			i386) UNAME_PROCESSOR=x86_64 ;;
+			powerpc) UNAME_PROCESSOR=powerpc64 ;;
+		    esac
+		fi
+	    fi
+	elif test "$UNAME_PROCESSOR" = i386 ; then
+	    # Avoid executing cc on OS X 10.9, as it ships with a stub
+	    # that puts up a graphical alert prompting to install
+	    # developer tools.  Any system running Mac OS X 10.7 or
+	    # later (Darwin 11 and later) is required to have a 64-bit
+	    # processor. This is not true of the ARM version of Darwin
+	    # that Apple uses in portable devices.
+	    UNAME_PROCESSOR=x86_64
+	fi
+	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+	exit ;;
+    *:procnto*:*:* | *:QNX:[0123456789]*:*)
+	UNAME_PROCESSOR=`uname -p`
+	if test "$UNAME_PROCESSOR" = "x86"; then
+		UNAME_PROCESSOR=i386
+		UNAME_MACHINE=pc
+	fi
+	echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+	exit ;;
+    *:QNX:*:4*)
+	echo i386-pc-qnx
+	exit ;;
+    NEO-?:NONSTOP_KERNEL:*:*)
+	echo neo-tandem-nsk${UNAME_RELEASE}
+	exit ;;
+    NSE-*:NONSTOP_KERNEL:*:*)
+	echo nse-tandem-nsk${UNAME_RELEASE}
+	exit ;;
+    NSR-?:NONSTOP_KERNEL:*:*)
+	echo nsr-tandem-nsk${UNAME_RELEASE}
+	exit ;;
+    *:NonStop-UX:*:*)
+	echo mips-compaq-nonstopux
+	exit ;;
+    BS2000:POSIX*:*:*)
+	echo bs2000-siemens-sysv
+	exit ;;
+    DS/*:UNIX_System_V:*:*)
+	echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+	exit ;;
+    *:Plan9:*:*)
+	# "uname -m" is not consistent, so use $cputype instead. 386
+	# is converted to i386 for consistency with other x86
+	# operating systems.
+	if test "$cputype" = "386"; then
+	    UNAME_MACHINE=i386
+	else
+	    UNAME_MACHINE="$cputype"
+	fi
+	echo ${UNAME_MACHINE}-unknown-plan9
+	exit ;;
+    *:TOPS-10:*:*)
+	echo pdp10-unknown-tops10
+	exit ;;
+    *:TENEX:*:*)
+	echo pdp10-unknown-tenex
+	exit ;;
+    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+	echo pdp10-dec-tops20
+	exit ;;
+    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+	echo pdp10-xkl-tops20
+	exit ;;
+    *:TOPS-20:*:*)
+	echo pdp10-unknown-tops20
+	exit ;;
+    *:ITS:*:*)
+	echo pdp10-unknown-its
+	exit ;;
+    SEI:*:*:SEIUX)
+	echo mips-sei-seiux${UNAME_RELEASE}
+	exit ;;
+    *:DragonFly:*:*)
+	echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+	exit ;;
+    *:*VMS:*:*)
+	UNAME_MACHINE=`(uname -p) 2>/dev/null`
+	case "${UNAME_MACHINE}" in
+	    A*) echo alpha-dec-vms ; exit ;;
+	    I*) echo ia64-dec-vms ; exit ;;
+	    V*) echo vax-dec-vms ; exit ;;
+	esac ;;
+    *:XENIX:*:SysV)
+	echo i386-pc-xenix
+	exit ;;
+    i*86:skyos:*:*)
+	echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+	exit ;;
+    i*86:rdos:*:*)
+	echo ${UNAME_MACHINE}-pc-rdos
+	exit ;;
+    i*86:AROS:*:*)
+	echo ${UNAME_MACHINE}-pc-aros
+	exit ;;
+    x86_64:VMkernel:*:*)
+	echo ${UNAME_MACHINE}-unknown-esx
+	exit ;;
+esac
+
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+and
+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches@gnu.org> in order to provide the needed
+information to handle your system.
+
+config.guess timestamp = $timestamp
+
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo               = `(hostinfo) 2>/dev/null`
+/bin/universe          = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch              = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE = ${UNAME_MACHINE}
+UNAME_RELEASE = ${UNAME_RELEASE}
+UNAME_SYSTEM  = ${UNAME_SYSTEM}
+UNAME_VERSION = ${UNAME_VERSION}
+EOF
+
+exit 1
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/google-breakpad/autotools/config.sub b/google-breakpad/autotools/config.sub
new file mode 100755
index 0000000..3f5d45d
--- /dev/null
+++ b/google-breakpad/autotools/config.sub
@@ -0,0 +1,1816 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+#   Copyright 1992-2014 Free Software Foundation, Inc.
+
+timestamp='2014-07-28'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that
+# program.  This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
+
+
+# Please send patches with a ChangeLog entry to config-patches@gnu.org.
+#
+# Configuration subroutine to validate and canonicalize a configuration type.
+# Supply the specified configuration type as an argument.
+# If it is invalid, we print an error message on stderr and exit with code 1.
+# Otherwise, we print the canonical config type on stdout and succeed.
+
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
+# This file is supposed to be the same for all GNU packages
+# and recognize all the CPU types, system types and aliases
+# that are meaningful with *any* GNU software.
+# Each package is responsible for reporting which valid configurations
+# it does not support.  The user should be able to distinguish
+# a failure to support a valid configuration from a meaningless
+# configuration.
+
+# The goal of this file is to map all the various variations of a given
+# machine specification into a single specification in the form:
+#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or in some cases, the newer four-part form:
+#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# It is wrong to echo any other type of specification.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+       $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright 1992-2014 Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit ;;
+    --version | -v )
+       echo "$version" ; exit ;;
+    --help | --h* | -h )
+       echo "$usage"; exit ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )	# Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help"
+       exit 1 ;;
+
+    *local*)
+       # First pass through any local machine types.
+       echo $1
+       exit ;;
+
+    * )
+       break ;;
+  esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+    exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+    exit 1;;
+esac
+
+# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
+# Here we must recognize all the valid KERNEL-OS combinations.
+maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+case $maybe_os in
+  nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
+  linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
+  knetbsd*-gnu* | netbsd*-gnu* | \
+  kopensolaris*-gnu* | \
+  storm-chaos* | os2-emx* | rtmk-nova*)
+    os=-$maybe_os
+    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+    ;;
+  android-linux)
+    os=-linux-android
+    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
+    ;;
+  *)
+    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
+    if [ $basic_machine != $1 ]
+    then os=`echo $1 | sed 's/.*-/-/'`
+    else os=; fi
+    ;;
+esac
+
+### Let's recognize common machines as not being operating systems so
+### that things like config.sub decstation-3100 work.  We also
+### recognize some manufacturers as not being operating systems, so we
+### can provide default operating systems below.
+case $os in
+	-sun*os*)
+		# Prevent following clause from handling this invalid input.
+		;;
+	-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
+	-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
+	-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
+	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+	-apple | -axis | -knuth | -cray | -microblaze*)
+		os=
+		basic_machine=$1
+		;;
+	-bluegene*)
+		os=-cnk
+		;;
+	-sim | -cisco | -oki | -wec | -winbond)
+		os=
+		basic_machine=$1
+		;;
+	-scout)
+		;;
+	-wrs)
+		os=-vxworks
+		basic_machine=$1
+		;;
+	-chorusos*)
+		os=-chorusos
+		basic_machine=$1
+		;;
+	-chorusrdb)
+		os=-chorusrdb
+		basic_machine=$1
+		;;
+	-hiux*)
+		os=-hiuxwe2
+		;;
+	-sco6)
+		os=-sco5v6
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco5)
+		os=-sco3.2v5
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco4)
+		os=-sco3.2v4
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco3.2.[4-9]*)
+		os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco3.2v[4-9]*)
+		# Don't forget version if it is 3.2v4 or newer.
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco5v6*)
+		# Don't forget version if it is 3.2v4 or newer.
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco*)
+		os=-sco3.2v2
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-udk*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-isc)
+		os=-isc2.2
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-clix*)
+		basic_machine=clipper-intergraph
+		;;
+	-isc*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-lynx*178)
+		os=-lynxos178
+		;;
+	-lynx*5)
+		os=-lynxos5
+		;;
+	-lynx*)
+		os=-lynxos
+		;;
+	-ptx*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+		;;
+	-windowsnt*)
+		os=`echo $os | sed -e 's/windowsnt/winnt/'`
+		;;
+	-psos*)
+		os=-psos
+		;;
+	-mint | -mint[0-9]*)
+		basic_machine=m68k-atari
+		os=-mint
+		;;
+esac
+
+# Decode aliases for certain CPU-COMPANY combinations.
+case $basic_machine in
+	# Recognize the basic CPU types without company name.
+	# Some are omitted here because they have special meanings below.
+	1750a | 580 \
+	| a29k \
+	| aarch64 | aarch64_be \
+	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+	| am33_2.0 \
+	| arc | arceb \
+	| arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
+	| avr | avr32 \
+	| be32 | be64 \
+	| bfin \
+	| c4x | c8051 | clipper \
+	| d10v | d30v | dlx | dsp16xx | dvp \
+	| epiphany \
+	| fido | fr30 | frv \
+	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+	| hexagon \
+	| i370 | i860 | i960 | ia64 \
+	| ip2k | iq2000 \
+	| k1om \
+	| le32 | le64 \
+	| lm32 \
+	| m32c | m32r | m32rle | m68000 | m68k | m88k \
+	| maxq | mb | microblaze | microblazeel | mcore | mep | metag \
+	| mips | mipsbe | mipseb | mipsel | mipsle \
+	| mips16 \
+	| mips64 | mips64el \
+	| mips64octeon | mips64octeonel \
+	| mips64orion | mips64orionel \
+	| mips64r5900 | mips64r5900el \
+	| mips64vr | mips64vrel \
+	| mips64vr4100 | mips64vr4100el \
+	| mips64vr4300 | mips64vr4300el \
+	| mips64vr5000 | mips64vr5000el \
+	| mips64vr5900 | mips64vr5900el \
+	| mipsisa32 | mipsisa32el \
+	| mipsisa32r2 | mipsisa32r2el \
+	| mipsisa32r6 | mipsisa32r6el \
+	| mipsisa64 | mipsisa64el \
+	| mipsisa64r2 | mipsisa64r2el \
+	| mipsisa64r6 | mipsisa64r6el \
+	| mipsisa64sb1 | mipsisa64sb1el \
+	| mipsisa64sr71k | mipsisa64sr71kel \
+	| mipsr5900 | mipsr5900el \
+	| mipstx39 | mipstx39el \
+	| mn10200 | mn10300 \
+	| moxie \
+	| mt \
+	| msp430 \
+	| nds32 | nds32le | nds32be \
+	| nios | nios2 | nios2eb | nios2el \
+	| ns16k | ns32k \
+	| open8 | or1k | or1knd | or32 \
+	| pdp10 | pdp11 | pj | pjl \
+	| powerpc | powerpc64 | powerpc64le | powerpcle \
+	| pyramid \
+	| rl78 | rx \
+	| score \
+	| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+	| sh64 | sh64le \
+	| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
+	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
+	| spu \
+	| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
+	| ubicom32 \
+	| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
+	| we32k \
+	| x86 | xc16x | xstormy16 | xtensa \
+	| z8k | z80)
+		basic_machine=$basic_machine-unknown
+		;;
+	c54x)
+		basic_machine=tic54x-unknown
+		;;
+	c55x)
+		basic_machine=tic55x-unknown
+		;;
+	c6x)
+		basic_machine=tic6x-unknown
+		;;
+	m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
+		basic_machine=$basic_machine-unknown
+		os=-none
+		;;
+	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+		;;
+	ms1)
+		basic_machine=mt-unknown
+		;;
+
+	strongarm | thumb | xscale)
+		basic_machine=arm-unknown
+		;;
+	xgate)
+		basic_machine=$basic_machine-unknown
+		os=-none
+		;;
+	xscaleeb)
+		basic_machine=armeb-unknown
+		;;
+
+	xscaleel)
+		basic_machine=armel-unknown
+		;;
+
+	# We use `pc' rather than `unknown'
+	# because (1) that's what they normally are, and
+	# (2) the word "unknown" tends to confuse beginning users.
+	i*86 | x86_64)
+	  basic_machine=$basic_machine-pc
+	  ;;
+	# Object if more than one company name word.
+	*-*-*)
+		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+		exit 1
+		;;
+	# Recognize the basic CPU types with company name.
+	580-* \
+	| a29k-* \
+	| aarch64-* | aarch64_be-* \
+	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
+	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
+	| avr-* | avr32-* \
+	| be32-* | be64-* \
+	| bfin-* | bs2000-* \
+	| c[123]* | c30-* | [cjt]90-* | c4x-* \
+	| c8051-* | clipper-* | craynv-* | cydra-* \
+	| d10v-* | d30v-* | dlx-* \
+	| elxsi-* \
+	| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
+	| h8300-* | h8500-* \
+	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+	| hexagon-* \
+	| i*86-* | i860-* | i960-* | ia64-* \
+	| ip2k-* | iq2000-* \
+	| k1om-* \
+	| le32-* | le64-* \
+	| lm32-* \
+	| m32c-* | m32r-* | m32rle-* \
+	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+	| m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
+	| microblaze-* | microblazeel-* \
+	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+	| mips16-* \
+	| mips64-* | mips64el-* \
+	| mips64octeon-* | mips64octeonel-* \
+	| mips64orion-* | mips64orionel-* \
+	| mips64r5900-* | mips64r5900el-* \
+	| mips64vr-* | mips64vrel-* \
+	| mips64vr4100-* | mips64vr4100el-* \
+	| mips64vr4300-* | mips64vr4300el-* \
+	| mips64vr5000-* | mips64vr5000el-* \
+	| mips64vr5900-* | mips64vr5900el-* \
+	| mipsisa32-* | mipsisa32el-* \
+	| mipsisa32r2-* | mipsisa32r2el-* \
+	| mipsisa32r6-* | mipsisa32r6el-* \
+	| mipsisa64-* | mipsisa64el-* \
+	| mipsisa64r2-* | mipsisa64r2el-* \
+	| mipsisa64r6-* | mipsisa64r6el-* \
+	| mipsisa64sb1-* | mipsisa64sb1el-* \
+	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
+	| mipsr5900-* | mipsr5900el-* \
+	| mipstx39-* | mipstx39el-* \
+	| mmix-* \
+	| mt-* \
+	| msp430-* \
+	| nds32-* | nds32le-* | nds32be-* \
+	| nios-* | nios2-* | nios2eb-* | nios2el-* \
+	| none-* | np1-* | ns16k-* | ns32k-* \
+	| open8-* \
+	| or1k*-* \
+	| orion-* \
+	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
+	| pyramid-* \
+	| rl78-* | romp-* | rs6000-* | rx-* \
+	| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
+	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+	| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
+	| sparclite-* \
+	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
+	| tahoe-* \
+	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+	| tile*-* \
+	| tron-* \
+	| ubicom32-* \
+	| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
+	| vax-* \
+	| we32k-* \
+	| x86-* | x86_64-* | xc16x-* | xps100-* \
+	| xstormy16-* | xtensa*-* \
+	| ymp-* \
+	| z8k-* | z80-*)
+		;;
+	# Recognize the basic CPU types without company name, with glob match.
+	xtensa*)
+		basic_machine=$basic_machine-unknown
+		;;
+	# Recognize the various machine names and aliases which stand
+	# for a CPU type and a company and sometimes even an OS.
+	386bsd)
+		basic_machine=i386-unknown
+		os=-bsd
+		;;
+	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+		basic_machine=m68000-att
+		;;
+	3b*)
+		basic_machine=we32k-att
+		;;
+	a29khif)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+	abacus)
+		basic_machine=abacus-unknown
+		;;
+	adobe68k)
+		basic_machine=m68010-adobe
+		os=-scout
+		;;
+	alliant | fx80)
+		basic_machine=fx80-alliant
+		;;
+	altos | altos3068)
+		basic_machine=m68k-altos
+		;;
+	am29k)
+		basic_machine=a29k-none
+		os=-bsd
+		;;
+	amd64)
+		basic_machine=x86_64-pc
+		;;
+	amd64-*)
+		basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	amdahl)
+		basic_machine=580-amdahl
+		os=-sysv
+		;;
+	amiga | amiga-*)
+		basic_machine=m68k-unknown
+		;;
+	amigaos | amigados)
+		basic_machine=m68k-unknown
+		os=-amigaos
+		;;
+	amigaunix | amix)
+		basic_machine=m68k-unknown
+		os=-sysv4
+		;;
+	apollo68)
+		basic_machine=m68k-apollo
+		os=-sysv
+		;;
+	apollo68bsd)
+		basic_machine=m68k-apollo
+		os=-bsd
+		;;
+	aros)
+		basic_machine=i386-pc
+		os=-aros
+		;;
+	aux)
+		basic_machine=m68k-apple
+		os=-aux
+		;;
+	balance)
+		basic_machine=ns32k-sequent
+		os=-dynix
+		;;
+	blackfin)
+		basic_machine=bfin-unknown
+		os=-linux
+		;;
+	blackfin-*)
+		basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
+		os=-linux
+		;;
+	bluegene*)
+		basic_machine=powerpc-ibm
+		os=-cnk
+		;;
+	c54x-*)
+		basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	c55x-*)
+		basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	c6x-*)
+		basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	c90)
+		basic_machine=c90-cray
+		os=-unicos
+		;;
+	cegcc)
+		basic_machine=arm-unknown
+		os=-cegcc
+		;;
+	convex-c1)
+		basic_machine=c1-convex
+		os=-bsd
+		;;
+	convex-c2)
+		basic_machine=c2-convex
+		os=-bsd
+		;;
+	convex-c32)
+		basic_machine=c32-convex
+		os=-bsd
+		;;
+	convex-c34)
+		basic_machine=c34-convex
+		os=-bsd
+		;;
+	convex-c38)
+		basic_machine=c38-convex
+		os=-bsd
+		;;
+	cray | j90)
+		basic_machine=j90-cray
+		os=-unicos
+		;;
+	craynv)
+		basic_machine=craynv-cray
+		os=-unicosmp
+		;;
+	cr16 | cr16-*)
+		basic_machine=cr16-unknown
+		os=-elf
+		;;
+	crds | unos)
+		basic_machine=m68k-crds
+		;;
+	crisv32 | crisv32-* | etraxfs*)
+		basic_machine=crisv32-axis
+		;;
+	cris | cris-* | etrax*)
+		basic_machine=cris-axis
+		;;
+	crx)
+		basic_machine=crx-unknown
+		os=-elf
+		;;
+	da30 | da30-*)
+		basic_machine=m68k-da30
+		;;
+	decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+		basic_machine=mips-dec
+		;;
+	decsystem10* | dec10*)
+		basic_machine=pdp10-dec
+		os=-tops10
+		;;
+	decsystem20* | dec20*)
+		basic_machine=pdp10-dec
+		os=-tops20
+		;;
+	delta | 3300 | motorola-3300 | motorola-delta \
+	      | 3300-motorola | delta-motorola)
+		basic_machine=m68k-motorola
+		;;
+	delta88)
+		basic_machine=m88k-motorola
+		os=-sysv3
+		;;
+	dicos)
+		basic_machine=i686-pc
+		os=-dicos
+		;;
+	djgpp)
+		basic_machine=i586-pc
+		os=-msdosdjgpp
+		;;
+	dpx20 | dpx20-*)
+		basic_machine=rs6000-bull
+		os=-bosx
+		;;
+	dpx2* | dpx2*-bull)
+		basic_machine=m68k-bull
+		os=-sysv3
+		;;
+	ebmon29k)
+		basic_machine=a29k-amd
+		os=-ebmon
+		;;
+	elxsi)
+		basic_machine=elxsi-elxsi
+		os=-bsd
+		;;
+	encore | umax | mmax)
+		basic_machine=ns32k-encore
+		;;
+	es1800 | OSE68k | ose68k | ose | OSE)
+		basic_machine=m68k-ericsson
+		os=-ose
+		;;
+	fx2800)
+		basic_machine=i860-alliant
+		;;
+	genix)
+		basic_machine=ns32k-ns
+		;;
+	gmicro)
+		basic_machine=tron-gmicro
+		os=-sysv
+		;;
+	go32)
+		basic_machine=i386-pc
+		os=-go32
+		;;
+	h3050r* | hiux*)
+		basic_machine=hppa1.1-hitachi
+		os=-hiuxwe2
+		;;
+	h8300hms)
+		basic_machine=h8300-hitachi
+		os=-hms
+		;;
+	h8300xray)
+		basic_machine=h8300-hitachi
+		os=-xray
+		;;
+	h8500hms)
+		basic_machine=h8500-hitachi
+		os=-hms
+		;;
+	harris)
+		basic_machine=m88k-harris
+		os=-sysv3
+		;;
+	hp300-*)
+		basic_machine=m68k-hp
+		;;
+	hp300bsd)
+		basic_machine=m68k-hp
+		os=-bsd
+		;;
+	hp300hpux)
+		basic_machine=m68k-hp
+		os=-hpux
+		;;
+	hp3k9[0-9][0-9] | hp9[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hp9k2[0-9][0-9] | hp9k31[0-9])
+		basic_machine=m68000-hp
+		;;
+	hp9k3[2-9][0-9])
+		basic_machine=m68k-hp
+		;;
+	hp9k6[0-9][0-9] | hp6[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hp9k7[0-79][0-9] | hp7[0-79][0-9])
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k78[0-9] | hp78[0-9])
+		# FIXME: really hppa2.0-hp
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
+		# FIXME: really hppa2.0-hp
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[0-9][13679] | hp8[0-9][13679])
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[0-9][0-9] | hp8[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hppa-next)
+		os=-nextstep3
+		;;
+	hppaosf)
+		basic_machine=hppa1.1-hp
+		os=-osf
+		;;
+	hppro)
+		basic_machine=hppa1.1-hp
+		os=-proelf
+		;;
+	i370-ibm* | ibm*)
+		basic_machine=i370-ibm
+		;;
+	i*86v32)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv32
+		;;
+	i*86v4*)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv4
+		;;
+	i*86v)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv
+		;;
+	i*86sol2)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-solaris2
+		;;
+	i386mach)
+		basic_machine=i386-mach
+		os=-mach
+		;;
+	i386-vsta | vsta)
+		basic_machine=i386-unknown
+		os=-vsta
+		;;
+	iris | iris4d)
+		basic_machine=mips-sgi
+		case $os in
+		    -irix*)
+			;;
+		    *)
+			os=-irix4
+			;;
+		esac
+		;;
+	isi68 | isi)
+		basic_machine=m68k-isi
+		os=-sysv
+		;;
+	m68knommu)
+		basic_machine=m68k-unknown
+		os=-linux
+		;;
+	m68knommu-*)
+		basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
+		os=-linux
+		;;
+	m88k-omron*)
+		basic_machine=m88k-omron
+		;;
+	magnum | m3230)
+		basic_machine=mips-mips
+		os=-sysv
+		;;
+	merlin)
+		basic_machine=ns32k-utek
+		os=-sysv
+		;;
+	microblaze*)
+		basic_machine=microblaze-xilinx
+		;;
+	mingw64)
+		basic_machine=x86_64-pc
+		os=-mingw64
+		;;
+	mingw32)
+		basic_machine=i686-pc
+		os=-mingw32
+		;;
+	mingw32ce)
+		basic_machine=arm-unknown
+		os=-mingw32ce
+		;;
+	miniframe)
+		basic_machine=m68000-convergent
+		;;
+	*mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+		basic_machine=m68k-atari
+		os=-mint
+		;;
+	mipsEE* | ee | ps2)
+		basic_machine=mips64r5900el-scei
+		case $os in
+		    -linux*)
+			;;
+		    *)
+			os=-elf
+			;;
+		esac
+		;;
+	iop)
+		basic_machine=mipsel-scei
+		os=-irx
+		;;
+	dvp)
+		basic_machine=dvp-scei
+		os=-elf
+		;;
+	mips3*-*)
+		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+		;;
+	mips3*)
+		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+		;;
+	monitor)
+		basic_machine=m68k-rom68k
+		os=-coff
+		;;
+	morphos)
+		basic_machine=powerpc-unknown
+		os=-morphos
+		;;
+	moxiebox)
+		basic_machine=moxie-unknown
+		os=-moxiebox
+		;;
+	msdos)
+		basic_machine=i386-pc
+		os=-msdos
+		;;
+	ms1-*)
+		basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
+		;;
+	msys)
+		basic_machine=i686-pc
+		os=-msys
+		;;
+	mvs)
+		basic_machine=i370-ibm
+		os=-mvs
+		;;
+	nacl)
+		basic_machine=le32-unknown
+		os=-nacl
+		;;
+	ncr3000)
+		basic_machine=i486-ncr
+		os=-sysv4
+		;;
+	netbsd386)
+		basic_machine=i386-unknown
+		os=-netbsd
+		;;
+	netwinder)
+		basic_machine=armv4l-rebel
+		os=-linux
+		;;
+	news | news700 | news800 | news900)
+		basic_machine=m68k-sony
+		os=-newsos
+		;;
+	news1000)
+		basic_machine=m68030-sony
+		os=-newsos
+		;;
+	news-3600 | risc-news)
+		basic_machine=mips-sony
+		os=-newsos
+		;;
+	necv70)
+		basic_machine=v70-nec
+		os=-sysv
+		;;
+	next | m*-next )
+		basic_machine=m68k-next
+		case $os in
+		    -nextstep* )
+			;;
+		    -ns2*)
+		      os=-nextstep2
+			;;
+		    *)
+		      os=-nextstep3
+			;;
+		esac
+		;;
+	nh3000)
+		basic_machine=m68k-harris
+		os=-cxux
+		;;
+	nh[45]000)
+		basic_machine=m88k-harris
+		os=-cxux
+		;;
+	nindy960)
+		basic_machine=i960-intel
+		os=-nindy
+		;;
+	mon960)
+		basic_machine=i960-intel
+		os=-mon960
+		;;
+	nonstopux)
+		basic_machine=mips-compaq
+		os=-nonstopux
+		;;
+	np1)
+		basic_machine=np1-gould
+		;;
+	neo-tandem)
+		basic_machine=neo-tandem
+		;;
+	nse-tandem)
+		basic_machine=nse-tandem
+		;;
+	nsr-tandem)
+		basic_machine=nsr-tandem
+		;;
+	op50n-* | op60c-*)
+		basic_machine=hppa1.1-oki
+		os=-proelf
+		;;
+	openrisc | openrisc-*)
+		basic_machine=or32-unknown
+		;;
+	os400)
+		basic_machine=powerpc-ibm
+		os=-os400
+		;;
+	OSE68000 | ose68000)
+		basic_machine=m68000-ericsson
+		os=-ose
+		;;
+	os68k)
+		basic_machine=m68k-none
+		os=-os68k
+		;;
+	pa-hitachi)
+		basic_machine=hppa1.1-hitachi
+		os=-hiuxwe2
+		;;
+	paragon)
+		basic_machine=i860-intel
+		os=-osf
+		;;
+	parisc)
+		basic_machine=hppa-unknown
+		os=-linux
+		;;
+	parisc-*)
+		basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
+		os=-linux
+		;;
+	pbd)
+		basic_machine=sparc-tti
+		;;
+	pbb)
+		basic_machine=m68k-tti
+		;;
+	pc532 | pc532-*)
+		basic_machine=ns32k-pc532
+		;;
+	pc98)
+		basic_machine=i386-pc
+		;;
+	pc98-*)
+		basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentium | p5 | k5 | k6 | nexgen | viac3)
+		basic_machine=i586-pc
+		;;
+	pentiumpro | p6 | 6x86 | athlon | athlon_*)
+		basic_machine=i686-pc
+		;;
+	pentiumii | pentium2 | pentiumiii | pentium3)
+		basic_machine=i686-pc
+		;;
+	pentium4)
+		basic_machine=i786-pc
+		;;
+	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+		basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentiumpro-* | p6-* | 6x86-* | athlon-*)
+		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentium4-*)
+		basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pn)
+		basic_machine=pn-gould
+		;;
+	power)	basic_machine=power-ibm
+		;;
+	ppc | ppcbe)	basic_machine=powerpc-unknown
+		;;
+	ppc-* | ppcbe-*)
+		basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppcle | powerpclittle | ppc-le | powerpc-little)
+		basic_machine=powerpcle-unknown
+		;;
+	ppcle-* | powerpclittle-*)
+		basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppc64)	basic_machine=powerpc64-unknown
+		;;
+	ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+		basic_machine=powerpc64le-unknown
+		;;
+	ppc64le-* | powerpc64little-*)
+		basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ps2)
+		basic_machine=i386-ibm
+		;;
+	pw32)
+		basic_machine=i586-unknown
+		os=-pw32
+		;;
+	rdos | rdos64)
+		basic_machine=x86_64-pc
+		os=-rdos
+		;;
+	rdos32)
+		basic_machine=i386-pc
+		os=-rdos
+		;;
+	rom68k)
+		basic_machine=m68k-rom68k
+		os=-coff
+		;;
+	rm[46]00)
+		basic_machine=mips-siemens
+		;;
+	rtpc | rtpc-*)
+		basic_machine=romp-ibm
+		;;
+	s390 | s390-*)
+		basic_machine=s390-ibm
+		;;
+	s390x | s390x-*)
+		basic_machine=s390x-ibm
+		;;
+	sa29200)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+	sb1)
+		basic_machine=mipsisa64sb1-unknown
+		;;
+	sb1el)
+		basic_machine=mipsisa64sb1el-unknown
+		;;
+	sde)
+		basic_machine=mipsisa32-sde
+		os=-elf
+		;;
+	sei)
+		basic_machine=mips-sei
+		os=-seiux
+		;;
+	sequent)
+		basic_machine=i386-sequent
+		;;
+	sh)
+		basic_machine=sh-hitachi
+		os=-hms
+		;;
+	sh5el)
+		basic_machine=sh5le-unknown
+		;;
+	sh64)
+		basic_machine=sh64-unknown
+		;;
+	sparclite-wrs | simso-wrs)
+		basic_machine=sparclite-wrs
+		os=-vxworks
+		;;
+	sps7)
+		basic_machine=m68k-bull
+		os=-sysv2
+		;;
+	spur)
+		basic_machine=spur-unknown
+		;;
+	st2000)
+		basic_machine=m68k-tandem
+		;;
+	stratus)
+		basic_machine=i860-stratus
+		os=-sysv4
+		;;
+	strongarm-* | thumb-*)
+		basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	sun2)
+		basic_machine=m68000-sun
+		;;
+	sun2os3)
+		basic_machine=m68000-sun
+		os=-sunos3
+		;;
+	sun2os4)
+		basic_machine=m68000-sun
+		os=-sunos4
+		;;
+	sun3os3)
+		basic_machine=m68k-sun
+		os=-sunos3
+		;;
+	sun3os4)
+		basic_machine=m68k-sun
+		os=-sunos4
+		;;
+	sun4os3)
+		basic_machine=sparc-sun
+		os=-sunos3
+		;;
+	sun4os4)
+		basic_machine=sparc-sun
+		os=-sunos4
+		;;
+	sun4sol2)
+		basic_machine=sparc-sun
+		os=-solaris2
+		;;
+	sun3 | sun3-*)
+		basic_machine=m68k-sun
+		;;
+	sun4)
+		basic_machine=sparc-sun
+		;;
+	sun386 | sun386i | roadrunner)
+		basic_machine=i386-sun
+		;;
+	sv1)
+		basic_machine=sv1-cray
+		os=-unicos
+		;;
+	symmetry)
+		basic_machine=i386-sequent
+		os=-dynix
+		;;
+	t3e)
+		basic_machine=alphaev5-cray
+		os=-unicos
+		;;
+	t90)
+		basic_machine=t90-cray
+		os=-unicos
+		;;
+	tile*)
+		basic_machine=$basic_machine-unknown
+		os=-linux-gnu
+		;;
+	tx39)
+		basic_machine=mipstx39-unknown
+		;;
+	tx39el)
+		basic_machine=mipstx39el-unknown
+		;;
+	toad1)
+		basic_machine=pdp10-xkl
+		os=-tops20
+		;;
+	tower | tower-32)
+		basic_machine=m68k-ncr
+		;;
+	tpf)
+		basic_machine=s390x-ibm
+		os=-tpf
+		;;
+	udi29k)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+	ultra3)
+		basic_machine=a29k-nyu
+		os=-sym1
+		;;
+	v810 | necv810)
+		basic_machine=v810-nec
+		os=-none
+		;;
+	vaxv)
+		basic_machine=vax-dec
+		os=-sysv
+		;;
+	vms)
+		basic_machine=vax-dec
+		os=-vms
+		;;
+	vpp*|vx|vx-*)
+		basic_machine=f301-fujitsu
+		;;
+	vxworks960)
+		basic_machine=i960-wrs
+		os=-vxworks
+		;;
+	vxworks68)
+		basic_machine=m68k-wrs
+		os=-vxworks
+		;;
+	vxworks29k)
+		basic_machine=a29k-wrs
+		os=-vxworks
+		;;
+	w65*)
+		basic_machine=w65-wdc
+		os=-none
+		;;
+	w89k-*)
+		basic_machine=hppa1.1-winbond
+		os=-proelf
+		;;
+	xbox)
+		basic_machine=i686-pc
+		os=-mingw32
+		;;
+	xps | xps100)
+		basic_machine=xps100-honeywell
+		;;
+	xscale-* | xscalee[bl]-*)
+		basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
+		;;
+	ymp)
+		basic_machine=ymp-cray
+		os=-unicos
+		;;
+	z8k-*-coff)
+		basic_machine=z8k-unknown
+		os=-sim
+		;;
+	z80-*-coff)
+		basic_machine=z80-unknown
+		os=-sim
+		;;
+	none)
+		basic_machine=none-none
+		os=-none
+		;;
+
+# Here we handle the default manufacturer of certain CPU types.  It is in
+# some cases the only manufacturer, in others, it is the most popular.
+	w89k)
+		basic_machine=hppa1.1-winbond
+		;;
+	op50n)
+		basic_machine=hppa1.1-oki
+		;;
+	op60c)
+		basic_machine=hppa1.1-oki
+		;;
+	romp)
+		basic_machine=romp-ibm
+		;;
+	mmix)
+		basic_machine=mmix-knuth
+		;;
+	rs6000)
+		basic_machine=rs6000-ibm
+		;;
+	vax)
+		basic_machine=vax-dec
+		;;
+	pdp10)
+		# there are many clones, so DEC is not a safe bet
+		basic_machine=pdp10-unknown
+		;;
+	pdp11)
+		basic_machine=pdp11-dec
+		;;
+	we32k)
+		basic_machine=we32k-att
+		;;
+	sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
+		basic_machine=sh-unknown
+		;;
+	sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
+		basic_machine=sparc-sun
+		;;
+	cydra)
+		basic_machine=cydra-cydrome
+		;;
+	orion)
+		basic_machine=orion-highlevel
+		;;
+	orion105)
+		basic_machine=clipper-highlevel
+		;;
+	mac | mpw | mac-mpw)
+		basic_machine=m68k-apple
+		;;
+	pmac | pmac-mpw)
+		basic_machine=powerpc-apple
+		;;
+	*-unknown)
+		# Make sure to match an already-canonicalized machine name.
+		;;
+	*)
+		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+		exit 1
+		;;
+esac
+
+# Here we canonicalize certain aliases for manufacturers.
+case $basic_machine in
+	*-digital*)
+		basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+		;;
+	*-commodore*)
+		basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+		;;
+	*)
+		;;
+esac
+
+# Decode manufacturer-specific aliases for certain operating systems.
+
+if [ x"$os" != x"" ]
+then
+case $os in
+	# First match some system type aliases
+	# that might get confused with valid system types.
+	# -solaris* is a basic system type, with this one exception.
+	-auroraux)
+		os=-auroraux
+		;;
+	-solaris1 | -solaris1.*)
+		os=`echo $os | sed -e 's|solaris1|sunos4|'`
+		;;
+	-solaris)
+		os=-solaris2
+		;;
+	-svr4*)
+		os=-sysv4
+		;;
+	-unixware*)
+		os=-sysv4.2uw
+		;;
+	-gnu/linux*)
+		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+		;;
+	# First accept the basic system types.
+	# The portable systems comes first.
+	# Each alternative MUST END IN A *, to match a version number.
+	# -sysv* is not here because it comes later, after sysvr4.
+	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
+	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
+	      | -sym* | -kopensolaris* | -plan9* \
+	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+	      | -aos* | -aros* \
+	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
+	      | -bitrig* | -openbsd* | -solidbsd* \
+	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+	      | -chorusos* | -chorusrdb* | -cegcc* \
+	      | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+	      | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
+	      | -linux-newlib* | -linux-musl* | -linux-uclibc* \
+	      | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
+	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* | -irx* \
+	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
+	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*)
+	# Remember, each alternative MUST END IN *, to match a version number.
+		;;
+	-qnx*)
+		case $basic_machine in
+		    x86-* | i*86-*)
+			;;
+		    *)
+			os=-nto$os
+			;;
+		esac
+		;;
+	-nto-qnx*)
+		;;
+	-nto*)
+		os=`echo $os | sed -e 's|nto|nto-qnx|'`
+		;;
+	-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
+	      | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+		;;
+	-mac*)
+		os=`echo $os | sed -e 's|mac|macos|'`
+		;;
+	-linux-dietlibc)
+		os=-linux-dietlibc
+		;;
+	-linux*)
+		os=`echo $os | sed -e 's|linux|linux-gnu|'`
+		;;
+	-sunos5*)
+		os=`echo $os | sed -e 's|sunos5|solaris2|'`
+		;;
+	-sunos6*)
+		os=`echo $os | sed -e 's|sunos6|solaris3|'`
+		;;
+	-opened*)
+		os=-openedition
+		;;
+	-os400*)
+		os=-os400
+		;;
+	-wince*)
+		os=-wince
+		;;
+	-osfrose*)
+		os=-osfrose
+		;;
+	-osf*)
+		os=-osf
+		;;
+	-utek*)
+		os=-bsd
+		;;
+	-dynix*)
+		os=-bsd
+		;;
+	-acis*)
+		os=-aos
+		;;
+	-atheos*)
+		os=-atheos
+		;;
+	-syllable*)
+		os=-syllable
+		;;
+	-386bsd)
+		os=-bsd
+		;;
+	-ctix* | -uts*)
+		os=-sysv
+		;;
+	-nova*)
+		os=-rtmk-nova
+		;;
+	-ns2 )
+		os=-nextstep2
+		;;
+	-nsk*)
+		os=-nsk
+		;;
+	# Preserve the version number of sinix5.
+	-sinix5.*)
+		os=`echo $os | sed -e 's|sinix|sysv|'`
+		;;
+	-sinix*)
+		os=-sysv4
+		;;
+	-tpf*)
+		os=-tpf
+		;;
+	-triton*)
+		os=-sysv3
+		;;
+	-oss*)
+		os=-sysv3
+		;;
+	-svr4)
+		os=-sysv4
+		;;
+	-svr3)
+		os=-sysv3
+		;;
+	-sysvr4)
+		os=-sysv4
+		;;
+	# This must come after -sysvr4.
+	-sysv*)
+		;;
+	-ose*)
+		os=-ose
+		;;
+	-es1800*)
+		os=-ose
+		;;
+	-xenix)
+		os=-xenix
+		;;
+	-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+		os=-mint
+		;;
+	-aros*)
+		os=-aros
+		;;
+	-zvmoe)
+		os=-zvmoe
+		;;
+	-dicos*)
+		os=-dicos
+		;;
+	-nacl*)
+		;;
+	-none)
+		;;
+	*)
+		# Get rid of the `-' at the beginning of $os.
+		os=`echo $os | sed 's/[^-]*-//'`
+		echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+		exit 1
+		;;
+esac
+else
+
+# Here we handle the default operating systems that come with various machines.
+# The value should be what the vendor currently ships out the door with their
+# machine or put another way, the most popular os provided with the machine.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system.  Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+case $basic_machine in
+	score-*)
+		os=-elf
+		;;
+	spu-*)
+		os=-elf
+		;;
+	*-acorn)
+		os=-riscix1.2
+		;;
+	arm*-rebel)
+		os=-linux
+		;;
+	arm*-semi)
+		os=-aout
+		;;
+	c4x-* | tic4x-*)
+		os=-coff
+		;;
+	c8051-*)
+		os=-elf
+		;;
+	hexagon-*)
+		os=-elf
+		;;
+	tic54x-*)
+		os=-coff
+		;;
+	tic55x-*)
+		os=-coff
+		;;
+	tic6x-*)
+		os=-coff
+		;;
+	# This must come before the *-dec entry.
+	pdp10-*)
+		os=-tops20
+		;;
+	pdp11-*)
+		os=-none
+		;;
+	*-dec | vax-*)
+		os=-ultrix4.2
+		;;
+	m68*-apollo)
+		os=-domain
+		;;
+	i386-sun)
+		os=-sunos4.0.2
+		;;
+	m68000-sun)
+		os=-sunos3
+		;;
+	m68*-cisco)
+		os=-aout
+		;;
+	mep-*)
+		os=-elf
+		;;
+	mips*-cisco)
+		os=-elf
+		;;
+	mips*-*)
+		os=-elf
+		;;
+	or32-*)
+		os=-coff
+		;;
+	*-tti)	# must be before sparc entry or we get the wrong os.
+		os=-sysv3
+		;;
+	sparc-* | *-sun)
+		os=-sunos4.1.1
+		;;
+	*-be)
+		os=-beos
+		;;
+	*-haiku)
+		os=-haiku
+		;;
+	*-ibm)
+		os=-aix
+		;;
+	*-knuth)
+		os=-mmixware
+		;;
+	*-wec)
+		os=-proelf
+		;;
+	*-winbond)
+		os=-proelf
+		;;
+	*-oki)
+		os=-proelf
+		;;
+	*-hp)
+		os=-hpux
+		;;
+	*-hitachi)
+		os=-hiux
+		;;
+	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+		os=-sysv
+		;;
+	*-cbm)
+		os=-amigaos
+		;;
+	*-dg)
+		os=-dgux
+		;;
+	*-dolphin)
+		os=-sysv3
+		;;
+	m68k-ccur)
+		os=-rtu
+		;;
+	m88k-omron*)
+		os=-luna
+		;;
+	*-next )
+		os=-nextstep
+		;;
+	*-sequent)
+		os=-ptx
+		;;
+	*-crds)
+		os=-unos
+		;;
+	*-ns)
+		os=-genix
+		;;
+	i370-*)
+		os=-mvs
+		;;
+	*-next)
+		os=-nextstep3
+		;;
+	*-gould)
+		os=-sysv
+		;;
+	*-highlevel)
+		os=-bsd
+		;;
+	*-encore)
+		os=-bsd
+		;;
+	*-sgi)
+		os=-irix
+		;;
+	*-siemens)
+		os=-sysv4
+		;;
+	*-masscomp)
+		os=-rtu
+		;;
+	f30[01]-fujitsu | f700-fujitsu)
+		os=-uxpv
+		;;
+	*-rom68k)
+		os=-coff
+		;;
+	*-*bug)
+		os=-coff
+		;;
+	*-apple)
+		os=-macos
+		;;
+	*-atari*)
+		os=-mint
+		;;
+	*)
+		os=-none
+		;;
+esac
+fi
+
+# Here we handle the case where we know the os, and the CPU type, but not the
+# manufacturer.  We pick the logical manufacturer.
+vendor=unknown
+case $basic_machine in
+	*-unknown)
+		case $os in
+			-riscix*)
+				vendor=acorn
+				;;
+			-sunos*)
+				vendor=sun
+				;;
+			-cnk*|-aix*)
+				vendor=ibm
+				;;
+			-beos*)
+				vendor=be
+				;;
+			-hpux*)
+				vendor=hp
+				;;
+			-mpeix*)
+				vendor=hp
+				;;
+			-hiux*)
+				vendor=hitachi
+				;;
+			-unos*)
+				vendor=crds
+				;;
+			-dgux*)
+				vendor=dg
+				;;
+			-luna*)
+				vendor=omron
+				;;
+			-genix*)
+				vendor=ns
+				;;
+			-mvs* | -opened*)
+				vendor=ibm
+				;;
+			-os400*)
+				vendor=ibm
+				;;
+			-ptx*)
+				vendor=sequent
+				;;
+			-tpf*)
+				vendor=ibm
+				;;
+			-vxsim* | -vxworks* | -windiss*)
+				vendor=wrs
+				;;
+			-aux*)
+				vendor=apple
+				;;
+			-hms*)
+				vendor=hitachi
+				;;
+			-mpw* | -macos*)
+				vendor=apple
+				;;
+			-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+				vendor=atari
+				;;
+			-vos*)
+				vendor=stratus
+				;;
+		esac
+		basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+		;;
+esac
+
+echo $basic_machine$os
+exit
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/google-breakpad/autotools/depcomp b/google-breakpad/autotools/depcomp
new file mode 100755
index 0000000..4ebd5b3
--- /dev/null
+++ b/google-breakpad/autotools/depcomp
@@ -0,0 +1,791 @@
+#! /bin/sh
+# depcomp - compile a program generating dependencies as side-effects
+
+scriptversion=2013-05-30.07; # UTC
+
+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
+
+case $1 in
+  '')
+    echo "$0: No command.  Try '$0 --help' for more information." 1>&2
+    exit 1;
+    ;;
+  -h | --h*)
+    cat <<\EOF
+Usage: depcomp [--help] [--version] PROGRAM [ARGS]
+
+Run PROGRAMS ARGS to compile a file, generating dependencies
+as side-effects.
+
+Environment variables:
+  depmode     Dependency tracking mode.
+  source      Source file read by 'PROGRAMS ARGS'.
+  object      Object file output by 'PROGRAMS ARGS'.
+  DEPDIR      directory where to store dependencies.
+  depfile     Dependency file to output.
+  tmpdepfile  Temporary file to use when outputting dependencies.
+  libtool     Whether libtool is used (yes/no).
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "depcomp $scriptversion"
+    exit $?
+    ;;
+esac
+
+# Get the directory component of the given path, and save it in the
+# global variables '$dir'.  Note that this directory component will
+# be either empty or ending with a '/' character.  This is deliberate.
+set_dir_from ()
+{
+  case $1 in
+    */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;;
+      *) dir=;;
+  esac
+}
+
+# Get the suffix-stripped basename of the given path, and save it the
+# global variable '$base'.
+set_base_from ()
+{
+  base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'`
+}
+
+# If no dependency file was actually created by the compiler invocation,
+# we still have to create a dummy depfile, to avoid errors with the
+# Makefile "include basename.Plo" scheme.
+make_dummy_depfile ()
+{
+  echo "#dummy" > "$depfile"
+}
+
+# Factor out some common post-processing of the generated depfile.
+# Requires the auxiliary global variable '$tmpdepfile' to be set.
+aix_post_process_depfile ()
+{
+  # If the compiler actually managed to produce a dependency file,
+  # post-process it.
+  if test -f "$tmpdepfile"; then
+    # Each line is of the form 'foo.o: dependency.h'.
+    # Do two passes, one to just change these to
+    #   $object: dependency.h
+    # and one to simply output
+    #   dependency.h:
+    # which is needed to avoid the deleted-header problem.
+    { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile"
+      sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
+    } > "$depfile"
+    rm -f "$tmpdepfile"
+  else
+    make_dummy_depfile
+  fi
+}
+
+# A tabulation character.
+tab='	'
+# A newline character.
+nl='
+'
+# Character ranges might be problematic outside the C locale.
+# These definitions help.
+upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
+lower=abcdefghijklmnopqrstuvwxyz
+digits=0123456789
+alpha=${upper}${lower}
+
+if test -z "$depmode" || test -z "$source" || test -z "$object"; then
+  echo "depcomp: Variables source, object and depmode must be set" 1>&2
+  exit 1
+fi
+
+# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
+depfile=${depfile-`echo "$object" |
+  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
+tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
+
+rm -f "$tmpdepfile"
+
+# Avoid interferences from the environment.
+gccflag= dashmflag=
+
+# Some modes work just like other modes, but use different flags.  We
+# parameterize here, but still list the modes in the big case below,
+# to make depend.m4 easier to write.  Note that we *cannot* use a case
+# here, because this file can only contain one case statement.
+if test "$depmode" = hp; then
+  # HP compiler uses -M and no extra arg.
+  gccflag=-M
+  depmode=gcc
+fi
+
+if test "$depmode" = dashXmstdout; then
+  # This is just like dashmstdout with a different argument.
+  dashmflag=-xM
+  depmode=dashmstdout
+fi
+
+cygpath_u="cygpath -u -f -"
+if test "$depmode" = msvcmsys; then
+  # This is just like msvisualcpp but w/o cygpath translation.
+  # Just convert the backslash-escaped backslashes to single forward
+  # slashes to satisfy depend.m4
+  cygpath_u='sed s,\\\\,/,g'
+  depmode=msvisualcpp
+fi
+
+if test "$depmode" = msvc7msys; then
+  # This is just like msvc7 but w/o cygpath translation.
+  # Just convert the backslash-escaped backslashes to single forward
+  # slashes to satisfy depend.m4
+  cygpath_u='sed s,\\\\,/,g'
+  depmode=msvc7
+fi
+
+if test "$depmode" = xlc; then
+  # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
+  gccflag=-qmakedep=gcc,-MF
+  depmode=gcc
+fi
+
+case "$depmode" in
+gcc3)
+## gcc 3 implements dependency tracking that does exactly what
+## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
+## it if -MD -MP comes after the -MF stuff.  Hmm.
+## Unfortunately, FreeBSD c89 acceptance of flags depends upon
+## the command line argument order; so add the flags where they
+## appear in depend2.am.  Note that the slowdown incurred here
+## affects only configure: in makefiles, %FASTDEP% shortcuts this.
+  for arg
+  do
+    case $arg in
+    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
+    *)  set fnord "$@" "$arg" ;;
+    esac
+    shift # fnord
+    shift # $arg
+  done
+  "$@"
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  mv "$tmpdepfile" "$depfile"
+  ;;
+
+gcc)
+## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
+## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
+## (see the conditional assignment to $gccflag above).
+## There are various ways to get dependency output from gcc.  Here's
+## why we pick this rather obscure method:
+## - Don't want to use -MD because we'd like the dependencies to end
+##   up in a subdir.  Having to rename by hand is ugly.
+##   (We might end up doing this anyway to support other compilers.)
+## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
+##   -MM, not -M (despite what the docs say).  Also, it might not be
+##   supported by the other compilers which use the 'gcc' depmode.
+## - Using -M directly means running the compiler twice (even worse
+##   than renaming).
+  if test -z "$gccflag"; then
+    gccflag=-MD,
+  fi
+  "$@" -Wp,"$gccflag$tmpdepfile"
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  # The second -e expression handles DOS-style file names with drive
+  # letters.
+  sed -e 's/^[^:]*: / /' \
+      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
+## This next piece of magic avoids the "deleted header file" problem.
+## The problem is that when a header file which appears in a .P file
+## is deleted, the dependency causes make to die (because there is
+## typically no way to rebuild the header).  We avoid this by adding
+## dummy dependencies for each header file.  Too bad gcc doesn't do
+## this for us directly.
+## Some versions of gcc put a space before the ':'.  On the theory
+## that the space means something, we add a space to the output as
+## well.  hp depmode also adds that space, but also prefixes the VPATH
+## to the object.  Take care to not repeat it in the output.
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+  tr ' ' "$nl" < "$tmpdepfile" \
+    | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
+    | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+hp)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+sgi)
+  if test "$libtool" = yes; then
+    "$@" "-Wp,-MDupdate,$tmpdepfile"
+  else
+    "$@" -MDupdate "$tmpdepfile"
+  fi
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+
+  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
+    echo "$object : \\" > "$depfile"
+    # Clip off the initial element (the dependent).  Don't try to be
+    # clever and replace this with sed code, as IRIX sed won't handle
+    # lines with more than a fixed number of characters (4096 in
+    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
+    # the IRIX cc adds comments like '#:fec' to the end of the
+    # dependency line.
+    tr ' ' "$nl" < "$tmpdepfile" \
+      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
+      | tr "$nl" ' ' >> "$depfile"
+    echo >> "$depfile"
+    # The second pass generates a dummy entry for each header file.
+    tr ' ' "$nl" < "$tmpdepfile" \
+      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+      >> "$depfile"
+  else
+    make_dummy_depfile
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
+xlc)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+aix)
+  # The C for AIX Compiler uses -M and outputs the dependencies
+  # in a .u file.  In older versions, this file always lives in the
+  # current directory.  Also, the AIX compiler puts '$object:' at the
+  # start of each line; $object doesn't have directory information.
+  # Version 6 uses the directory in both cases.
+  set_dir_from "$object"
+  set_base_from "$object"
+  if test "$libtool" = yes; then
+    tmpdepfile1=$dir$base.u
+    tmpdepfile2=$base.u
+    tmpdepfile3=$dir.libs/$base.u
+    "$@" -Wc,-M
+  else
+    tmpdepfile1=$dir$base.u
+    tmpdepfile2=$dir$base.u
+    tmpdepfile3=$dir$base.u
+    "$@" -M
+  fi
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+    exit $stat
+  fi
+
+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+  do
+    test -f "$tmpdepfile" && break
+  done
+  aix_post_process_depfile
+  ;;
+
+tcc)
+  # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26
+  # FIXME: That version still under development at the moment of writing.
+  #        Make that this statement remains true also for stable, released
+  #        versions.
+  # It will wrap lines (doesn't matter whether long or short) with a
+  # trailing '\', as in:
+  #
+  #   foo.o : \
+  #    foo.c \
+  #    foo.h \
+  #
+  # It will put a trailing '\' even on the last line, and will use leading
+  # spaces rather than leading tabs (at least since its commit 0394caf7
+  # "Emit spaces for -MD").
+  "$@" -MD -MF "$tmpdepfile"
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'.
+  # We have to change lines of the first kind to '$object: \'.
+  sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile"
+  # And for each line of the second kind, we have to emit a 'dep.h:'
+  # dummy dependency, to avoid the deleted-header problem.
+  sed -n -e 's|^  *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+## The order of this option in the case statement is important, since the
+## shell code in configure will try each of these formats in the order
+## listed in this file.  A plain '-MD' option would be understood by many
+## compilers, so we must ensure this comes after the gcc and icc options.
+pgcc)
+  # Portland's C compiler understands '-MD'.
+  # Will always output deps to 'file.d' where file is the root name of the
+  # source file under compilation, even if file resides in a subdirectory.
+  # The object file name does not affect the name of the '.d' file.
+  # pgcc 10.2 will output
+  #    foo.o: sub/foo.c sub/foo.h
+  # and will wrap long lines using '\' :
+  #    foo.o: sub/foo.c ... \
+  #     sub/foo.h ... \
+  #     ...
+  set_dir_from "$object"
+  # Use the source, not the object, to determine the base name, since
+  # that's sadly what pgcc will do too.
+  set_base_from "$source"
+  tmpdepfile=$base.d
+
+  # For projects that build the same source file twice into different object
+  # files, the pgcc approach of using the *source* file root name can cause
+  # problems in parallel builds.  Use a locking strategy to avoid stomping on
+  # the same $tmpdepfile.
+  lockdir=$base.d-lock
+  trap "
+    echo '$0: caught signal, cleaning up...' >&2
+    rmdir '$lockdir'
+    exit 1
+  " 1 2 13 15
+  numtries=100
+  i=$numtries
+  while test $i -gt 0; do
+    # mkdir is a portable test-and-set.
+    if mkdir "$lockdir" 2>/dev/null; then
+      # This process acquired the lock.
+      "$@" -MD
+      stat=$?
+      # Release the lock.
+      rmdir "$lockdir"
+      break
+    else
+      # If the lock is being held by a different process, wait
+      # until the winning process is done or we timeout.
+      while test -d "$lockdir" && test $i -gt 0; do
+        sleep 1
+        i=`expr $i - 1`
+      done
+    fi
+    i=`expr $i - 1`
+  done
+  trap - 1 2 13 15
+  if test $i -le 0; then
+    echo "$0: failed to acquire lock after $numtries attempts" >&2
+    echo "$0: check lockdir '$lockdir'" >&2
+    exit 1
+  fi
+
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  # Each line is of the form `foo.o: dependent.h',
+  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
+  # Do two passes, one to just change these to
+  # `$object: dependent.h' and one to simply `dependent.h:'.
+  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process this invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
+    | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+hp2)
+  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
+  # compilers, which have integrated preprocessors.  The correct option
+  # to use with these is +Maked; it writes dependencies to a file named
+  # 'foo.d', which lands next to the object file, wherever that
+  # happens to be.
+  # Much of this is similar to the tru64 case; see comments there.
+  set_dir_from  "$object"
+  set_base_from "$object"
+  if test "$libtool" = yes; then
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir.libs/$base.d
+    "$@" -Wc,+Maked
+  else
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir$base.d
+    "$@" +Maked
+  fi
+  stat=$?
+  if test $stat -ne 0; then
+     rm -f "$tmpdepfile1" "$tmpdepfile2"
+     exit $stat
+  fi
+
+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
+  do
+    test -f "$tmpdepfile" && break
+  done
+  if test -f "$tmpdepfile"; then
+    sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
+    # Add 'dependent.h:' lines.
+    sed -ne '2,${
+               s/^ *//
+               s/ \\*$//
+               s/$/:/
+               p
+             }' "$tmpdepfile" >> "$depfile"
+  else
+    make_dummy_depfile
+  fi
+  rm -f "$tmpdepfile" "$tmpdepfile2"
+  ;;
+
+tru64)
+  # The Tru64 compiler uses -MD to generate dependencies as a side
+  # effect.  'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
+  # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+  # dependencies in 'foo.d' instead, so we check for that too.
+  # Subdirectories are respected.
+  set_dir_from  "$object"
+  set_base_from "$object"
+
+  if test "$libtool" = yes; then
+    # Libtool generates 2 separate objects for the 2 libraries.  These
+    # two compilations output dependencies in $dir.libs/$base.o.d and
+    # in $dir$base.o.d.  We have to check for both files, because
+    # one of the two compilations can be disabled.  We should prefer
+    # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+    # automatically cleaned when .libs/ is deleted, while ignoring
+    # the former would cause a distcleancheck panic.
+    tmpdepfile1=$dir$base.o.d          # libtool 1.5
+    tmpdepfile2=$dir.libs/$base.o.d    # Likewise.
+    tmpdepfile3=$dir.libs/$base.d      # Compaq CCC V6.2-504
+    "$@" -Wc,-MD
+  else
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir$base.d
+    tmpdepfile3=$dir$base.d
+    "$@" -MD
+  fi
+
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+    exit $stat
+  fi
+
+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+  do
+    test -f "$tmpdepfile" && break
+  done
+  # Same post-processing that is required for AIX mode.
+  aix_post_process_depfile
+  ;;
+
+msvc7)
+  if test "$libtool" = yes; then
+    showIncludes=-Wc,-showIncludes
+  else
+    showIncludes=-showIncludes
+  fi
+  "$@" $showIncludes > "$tmpdepfile"
+  stat=$?
+  grep -v '^Note: including file: ' "$tmpdepfile"
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  # The first sed program below extracts the file names and escapes
+  # backslashes for cygpath.  The second sed program outputs the file
+  # name when reading, but also accumulates all include files in the
+  # hold buffer in order to output them again at the end.  This only
+  # works with sed implementations that can handle large buffers.
+  sed < "$tmpdepfile" -n '
+/^Note: including file:  *\(.*\)/ {
+  s//\1/
+  s/\\/\\\\/g
+  p
+}' | $cygpath_u | sort -u | sed -n '
+s/ /\\ /g
+s/\(.*\)/'"$tab"'\1 \\/p
+s/.\(.*\) \\/\1:/
+H
+$ {
+  s/.*/'"$tab"'/
+  G
+  p
+}' >> "$depfile"
+  echo >> "$depfile" # make sure the fragment doesn't end with a backslash
+  rm -f "$tmpdepfile"
+  ;;
+
+msvc7msys)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+#nosideeffect)
+  # This comment above is used by automake to tell side-effect
+  # dependency tracking mechanisms from slower ones.
+
+dashmstdout)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout, regardless of -o.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove '-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  test -z "$dashmflag" && dashmflag=-M
+  # Require at least two characters before searching for ':'
+  # in the target name.  This is to cope with DOS-style filenames:
+  # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
+  "$@" $dashmflag |
+    sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
+  rm -f "$depfile"
+  cat < "$tmpdepfile" > "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process this sed invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  tr ' ' "$nl" < "$tmpdepfile" \
+    | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
+    | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+dashXmstdout)
+  # This case only exists to satisfy depend.m4.  It is never actually
+  # run, as this mode is specially recognized in the preamble.
+  exit 1
+  ;;
+
+makedepend)
+  "$@" || exit $?
+  # Remove any Libtool call
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+  # X makedepend
+  shift
+  cleared=no eat=no
+  for arg
+  do
+    case $cleared in
+    no)
+      set ""; shift
+      cleared=yes ;;
+    esac
+    if test $eat = yes; then
+      eat=no
+      continue
+    fi
+    case "$arg" in
+    -D*|-I*)
+      set fnord "$@" "$arg"; shift ;;
+    # Strip any option that makedepend may not understand.  Remove
+    # the object too, otherwise makedepend will parse it as a source file.
+    -arch)
+      eat=yes ;;
+    -*|$object)
+      ;;
+    *)
+      set fnord "$@" "$arg"; shift ;;
+    esac
+  done
+  obj_suffix=`echo "$object" | sed 's/^.*\././'`
+  touch "$tmpdepfile"
+  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
+  rm -f "$depfile"
+  # makedepend may prepend the VPATH from the source file name to the object.
+  # No need to regex-escape $object, excess matching of '.' is harmless.
+  sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process the last invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  sed '1,2d' "$tmpdepfile" \
+    | tr ' ' "$nl" \
+    | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
+    | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile" "$tmpdepfile".bak
+  ;;
+
+cpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove '-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  "$@" -E \
+    | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+             -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+    | sed '$ s: \\$::' > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  cat < "$tmpdepfile" >> "$depfile"
+  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvisualcpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  IFS=" "
+  for arg
+  do
+    case "$arg" in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
+        set fnord "$@"
+        shift
+        shift
+        ;;
+    *)
+        set fnord "$@" "$arg"
+        shift
+        shift
+        ;;
+    esac
+  done
+  "$@" -E 2>/dev/null |
+  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
+  echo "$tab" >> "$depfile"
+  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvcmsys)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+none)
+  exec "$@"
+  ;;
+
+*)
+  echo "Unknown depmode $depmode" 1>&2
+  exit 1
+  ;;
+esac
+
+exit 0
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/google-breakpad/autotools/install-sh b/google-breakpad/autotools/install-sh
new file mode 100755
index 0000000..377bb86
--- /dev/null
+++ b/google-breakpad/autotools/install-sh
@@ -0,0 +1,527 @@
+#!/bin/sh
+# install - install a program, script, or datafile
+
+scriptversion=2011-11-20.07; # UTC
+
+# This originates from X11R5 (mit/util/scripts/install.sh), which was
+# later released in X11R6 (xc/config/util/install.sh) with the
+# following copyright and license.
+#
+# Copyright (C) 1994 X Consortium
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# Except as contained in this notice, the name of the X Consortium shall not
+# be used in advertising or otherwise to promote the sale, use or other deal-
+# ings in this Software without prior written authorization from the X Consor-
+# tium.
+#
+#
+# FSF changes to this file are in the public domain.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# 'make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch.
+
+nl='
+'
+IFS=" ""	$nl"
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit=${DOITPROG-}
+if test -z "$doit"; then
+  doit_exec=exec
+else
+  doit_exec=$doit
+fi
+
+# Put in absolute file names if you don't have them in your path;
+# or use environment vars.
+
+chgrpprog=${CHGRPPROG-chgrp}
+chmodprog=${CHMODPROG-chmod}
+chownprog=${CHOWNPROG-chown}
+cmpprog=${CMPPROG-cmp}
+cpprog=${CPPROG-cp}
+mkdirprog=${MKDIRPROG-mkdir}
+mvprog=${MVPROG-mv}
+rmprog=${RMPROG-rm}
+stripprog=${STRIPPROG-strip}
+
+posix_glob='?'
+initialize_posix_glob='
+  test "$posix_glob" != "?" || {
+    if (set -f) 2>/dev/null; then
+      posix_glob=
+    else
+      posix_glob=:
+    fi
+  }
+'
+
+posix_mkdir=
+
+# Desired mode of installed file.
+mode=0755
+
+chgrpcmd=
+chmodcmd=$chmodprog
+chowncmd=
+mvcmd=$mvprog
+rmcmd="$rmprog -f"
+stripcmd=
+
+src=
+dst=
+dir_arg=
+dst_arg=
+
+copy_on_change=false
+no_target_directory=
+
+usage="\
+Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
+   or: $0 [OPTION]... SRCFILES... DIRECTORY
+   or: $0 [OPTION]... -t DIRECTORY SRCFILES...
+   or: $0 [OPTION]... -d DIRECTORIES...
+
+In the 1st form, copy SRCFILE to DSTFILE.
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
+In the 4th, create DIRECTORIES.
+
+Options:
+     --help     display this help and exit.
+     --version  display version info and exit.
+
+  -c            (ignored)
+  -C            install only if different (preserve the last data modification time)
+  -d            create directories instead of installing files.
+  -g GROUP      $chgrpprog installed files to GROUP.
+  -m MODE       $chmodprog installed files to MODE.
+  -o USER       $chownprog installed files to USER.
+  -s            $stripprog installed files.
+  -t DIRECTORY  install into DIRECTORY.
+  -T            report an error if DSTFILE is a directory.
+
+Environment variables override the default commands:
+  CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
+  RMPROG STRIPPROG
+"
+
+while test $# -ne 0; do
+  case $1 in
+    -c) ;;
+
+    -C) copy_on_change=true;;
+
+    -d) dir_arg=true;;
+
+    -g) chgrpcmd="$chgrpprog $2"
+	shift;;
+
+    --help) echo "$usage"; exit $?;;
+
+    -m) mode=$2
+	case $mode in
+	  *' '* | *'	'* | *'
+'*	  | *'*'* | *'?'* | *'['*)
+	    echo "$0: invalid mode: $mode" >&2
+	    exit 1;;
+	esac
+	shift;;
+
+    -o) chowncmd="$chownprog $2"
+	shift;;
+
+    -s) stripcmd=$stripprog;;
+
+    -t) dst_arg=$2
+	# Protect names problematic for 'test' and other utilities.
+	case $dst_arg in
+	  -* | [=\(\)!]) dst_arg=./$dst_arg;;
+	esac
+	shift;;
+
+    -T) no_target_directory=true;;
+
+    --version) echo "$0 $scriptversion"; exit $?;;
+
+    --)	shift
+	break;;
+
+    -*)	echo "$0: invalid option: $1" >&2
+	exit 1;;
+
+    *)  break;;
+  esac
+  shift
+done
+
+if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
+  # When -d is used, all remaining arguments are directories to create.
+  # When -t is used, the destination is already specified.
+  # Otherwise, the last argument is the destination.  Remove it from $@.
+  for arg
+  do
+    if test -n "$dst_arg"; then
+      # $@ is not empty: it contains at least $arg.
+      set fnord "$@" "$dst_arg"
+      shift # fnord
+    fi
+    shift # arg
+    dst_arg=$arg
+    # Protect names problematic for 'test' and other utilities.
+    case $dst_arg in
+      -* | [=\(\)!]) dst_arg=./$dst_arg;;
+    esac
+  done
+fi
+
+if test $# -eq 0; then
+  if test -z "$dir_arg"; then
+    echo "$0: no input file specified." >&2
+    exit 1
+  fi
+  # It's OK to call 'install-sh -d' without argument.
+  # This can happen when creating conditional directories.
+  exit 0
+fi
+
+if test -z "$dir_arg"; then
+  do_exit='(exit $ret); exit $ret'
+  trap "ret=129; $do_exit" 1
+  trap "ret=130; $do_exit" 2
+  trap "ret=141; $do_exit" 13
+  trap "ret=143; $do_exit" 15
+
+  # Set umask so as not to create temps with too-generous modes.
+  # However, 'strip' requires both read and write access to temps.
+  case $mode in
+    # Optimize common cases.
+    *644) cp_umask=133;;
+    *755) cp_umask=22;;
+
+    *[0-7])
+      if test -z "$stripcmd"; then
+	u_plus_rw=
+      else
+	u_plus_rw='% 200'
+      fi
+      cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
+    *)
+      if test -z "$stripcmd"; then
+	u_plus_rw=
+      else
+	u_plus_rw=,u+rw
+      fi
+      cp_umask=$mode$u_plus_rw;;
+  esac
+fi
+
+for src
+do
+  # Protect names problematic for 'test' and other utilities.
+  case $src in
+    -* | [=\(\)!]) src=./$src;;
+  esac
+
+  if test -n "$dir_arg"; then
+    dst=$src
+    dstdir=$dst
+    test -d "$dstdir"
+    dstdir_status=$?
+  else
+
+    # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
+    # might cause directories to be created, which would be especially bad
+    # if $src (and thus $dsttmp) contains '*'.
+    if test ! -f "$src" && test ! -d "$src"; then
+      echo "$0: $src does not exist." >&2
+      exit 1
+    fi
+
+    if test -z "$dst_arg"; then
+      echo "$0: no destination specified." >&2
+      exit 1
+    fi
+    dst=$dst_arg
+
+    # If destination is a directory, append the input filename; won't work
+    # if double slashes aren't ignored.
+    if test -d "$dst"; then
+      if test -n "$no_target_directory"; then
+	echo "$0: $dst_arg: Is a directory" >&2
+	exit 1
+      fi
+      dstdir=$dst
+      dst=$dstdir/`basename "$src"`
+      dstdir_status=0
+    else
+      # Prefer dirname, but fall back on a substitute if dirname fails.
+      dstdir=`
+	(dirname "$dst") 2>/dev/null ||
+	expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	     X"$dst" : 'X\(//\)[^/]' \| \
+	     X"$dst" : 'X\(//\)$' \| \
+	     X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
+	echo X"$dst" |
+	    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+		   s//\1/
+		   q
+		 }
+		 /^X\(\/\/\)[^/].*/{
+		   s//\1/
+		   q
+		 }
+		 /^X\(\/\/\)$/{
+		   s//\1/
+		   q
+		 }
+		 /^X\(\/\).*/{
+		   s//\1/
+		   q
+		 }
+		 s/.*/./; q'
+      `
+
+      test -d "$dstdir"
+      dstdir_status=$?
+    fi
+  fi
+
+  obsolete_mkdir_used=false
+
+  if test $dstdir_status != 0; then
+    case $posix_mkdir in
+      '')
+	# Create intermediate dirs using mode 755 as modified by the umask.
+	# This is like FreeBSD 'install' as of 1997-10-28.
+	umask=`umask`
+	case $stripcmd.$umask in
+	  # Optimize common cases.
+	  *[2367][2367]) mkdir_umask=$umask;;
+	  .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
+
+	  *[0-7])
+	    mkdir_umask=`expr $umask + 22 \
+	      - $umask % 100 % 40 + $umask % 20 \
+	      - $umask % 10 % 4 + $umask % 2
+	    `;;
+	  *) mkdir_umask=$umask,go-w;;
+	esac
+
+	# With -d, create the new directory with the user-specified mode.
+	# Otherwise, rely on $mkdir_umask.
+	if test -n "$dir_arg"; then
+	  mkdir_mode=-m$mode
+	else
+	  mkdir_mode=
+	fi
+
+	posix_mkdir=false
+	case $umask in
+	  *[123567][0-7][0-7])
+	    # POSIX mkdir -p sets u+wx bits regardless of umask, which
+	    # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
+	    ;;
+	  *)
+	    tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+	    trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
+
+	    if (umask $mkdir_umask &&
+		exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
+	    then
+	      if test -z "$dir_arg" || {
+		   # Check for POSIX incompatibilities with -m.
+		   # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+		   # other-writable bit of parent directory when it shouldn't.
+		   # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+		   ls_ld_tmpdir=`ls -ld "$tmpdir"`
+		   case $ls_ld_tmpdir in
+		     d????-?r-*) different_mode=700;;
+		     d????-?--*) different_mode=755;;
+		     *) false;;
+		   esac &&
+		   $mkdirprog -m$different_mode -p -- "$tmpdir" && {
+		     ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
+		     test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+		   }
+		 }
+	      then posix_mkdir=:
+	      fi
+	      rmdir "$tmpdir/d" "$tmpdir"
+	    else
+	      # Remove any dirs left behind by ancient mkdir implementations.
+	      rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
+	    fi
+	    trap '' 0;;
+	esac;;
+    esac
+
+    if
+      $posix_mkdir && (
+	umask $mkdir_umask &&
+	$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+      )
+    then :
+    else
+
+      # The umask is ridiculous, or mkdir does not conform to POSIX,
+      # or it failed possibly due to a race condition.  Create the
+      # directory the slow way, step by step, checking for races as we go.
+
+      case $dstdir in
+	/*) prefix='/';;
+	[-=\(\)!]*) prefix='./';;
+	*)  prefix='';;
+      esac
+
+      eval "$initialize_posix_glob"
+
+      oIFS=$IFS
+      IFS=/
+      $posix_glob set -f
+      set fnord $dstdir
+      shift
+      $posix_glob set +f
+      IFS=$oIFS
+
+      prefixes=
+
+      for d
+      do
+	test X"$d" = X && continue
+
+	prefix=$prefix$d
+	if test -d "$prefix"; then
+	  prefixes=
+	else
+	  if $posix_mkdir; then
+	    (umask=$mkdir_umask &&
+	     $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
+	    # Don't fail if two instances are running concurrently.
+	    test -d "$prefix" || exit 1
+	  else
+	    case $prefix in
+	      *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
+	      *) qprefix=$prefix;;
+	    esac
+	    prefixes="$prefixes '$qprefix'"
+	  fi
+	fi
+	prefix=$prefix/
+      done
+
+      if test -n "$prefixes"; then
+	# Don't fail if two instances are running concurrently.
+	(umask $mkdir_umask &&
+	 eval "\$doit_exec \$mkdirprog $prefixes") ||
+	  test -d "$dstdir" || exit 1
+	obsolete_mkdir_used=true
+      fi
+    fi
+  fi
+
+  if test -n "$dir_arg"; then
+    { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
+    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
+    { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
+      test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
+  else
+
+    # Make a couple of temp file names in the proper directory.
+    dsttmp=$dstdir/_inst.$$_
+    rmtmp=$dstdir/_rm.$$_
+
+    # Trap to clean up those temp files at exit.
+    trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
+
+    # Copy the file name to the temp name.
+    (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
+
+    # and set any options; do chmod last to preserve setuid bits.
+    #
+    # If any of these fail, we abort the whole thing.  If we want to
+    # ignore errors from any of these, just make sure not to ignore
+    # errors from the above "$doit $cpprog $src $dsttmp" command.
+    #
+    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
+    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
+    { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
+    { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
+
+    # If -C, don't bother to copy if it wouldn't change the file.
+    if $copy_on_change &&
+       old=`LC_ALL=C ls -dlL "$dst"	2>/dev/null` &&
+       new=`LC_ALL=C ls -dlL "$dsttmp"	2>/dev/null` &&
+
+       eval "$initialize_posix_glob" &&
+       $posix_glob set -f &&
+       set X $old && old=:$2:$4:$5:$6 &&
+       set X $new && new=:$2:$4:$5:$6 &&
+       $posix_glob set +f &&
+
+       test "$old" = "$new" &&
+       $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
+    then
+      rm -f "$dsttmp"
+    else
+      # Rename the file to the real destination.
+      $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
+
+      # The rename failed, perhaps because mv can't rename something else
+      # to itself, or perhaps because mv is so ancient that it does not
+      # support -f.
+      {
+	# Now remove or move aside any old file at destination location.
+	# We try this two ways since rm can't unlink itself on some
+	# systems and the destination file might be busy for other
+	# reasons.  In this case, the final cleanup might fail but the new
+	# file should still install successfully.
+	{
+	  test ! -f "$dst" ||
+	  $doit $rmcmd -f "$dst" 2>/dev/null ||
+	  { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
+	    { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
+	  } ||
+	  { echo "$0: cannot unlink or rename $dst" >&2
+	    (exit 1); exit 1
+	  }
+	} &&
+
+	# Now rename the file to the real destination.
+	$doit $mvcmd "$dsttmp" "$dst"
+      }
+    fi || exit 1
+
+    trap '' 0
+  fi
+done
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/google-breakpad/autotools/ltmain.sh b/google-breakpad/autotools/ltmain.sh
new file mode 100755
index 0000000..a72f2fd
--- /dev/null
+++ b/google-breakpad/autotools/ltmain.sh
@@ -0,0 +1,8406 @@
+# Generated from ltmain.m4sh.
+
+# ltmain.sh (GNU libtool) 2.2.6b
+# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc.
+# This is free software; see the source for copying conditions.  There is NO
+# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+# GNU Libtool is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
+#
+# GNU Libtool is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Libtool; see the file COPYING.  If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html,
+# or obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+# Usage: $progname [OPTION]... [MODE-ARG]...
+#
+# Provide generalized library-building support services.
+#
+#     --config             show all configuration variables
+#     --debug              enable verbose shell tracing
+# -n, --dry-run            display commands without modifying any files
+#     --features           display basic configuration information and exit
+#     --mode=MODE          use operation mode MODE
+#     --preserve-dup-deps  don't remove duplicate dependency libraries
+#     --quiet, --silent    don't print informational messages
+#     --tag=TAG            use configuration variables from tag TAG
+# -v, --verbose            print informational messages (default)
+#     --version            print version information
+# -h, --help               print short or long help message
+#
+# MODE must be one of the following:
+#
+#       clean              remove files from the build directory
+#       compile            compile a source file into a libtool object
+#       execute            automatically set library path, then run a program
+#       finish             complete the installation of libtool libraries
+#       install            install libraries or executables
+#       link               create a library or an executable
+#       uninstall          remove libraries from an installed directory
+#
+# MODE-ARGS vary depending on the MODE.
+# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
+#
+# When reporting a bug, please describe a test case to reproduce it and
+# include the following information:
+#
+#       host-triplet:	$host
+#       shell:		$SHELL
+#       compiler:		$LTCC
+#       compiler flags:		$LTCFLAGS
+#       linker:		$LD (gnu? $with_gnu_ld)
+#       $progname:		(GNU libtool) 2.2.6b
+#       automake:		$automake_version
+#       autoconf:		$autoconf_version
+#
+# Report bugs to <bug-libtool@gnu.org>.
+
+PROGRAM=ltmain.sh
+PACKAGE=libtool
+VERSION=2.2.6b
+TIMESTAMP=""
+package_revision=1.3017
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# NLS nuisances: We save the old values to restore during execute mode.
+# Only set LANG and LC_ALL to C if already set.
+# These must not be set unconditionally because not all systems understand
+# e.g. LANG=C (notably SCO).
+lt_user_locale=
+lt_safe_locale=
+for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+do
+  eval "if test \"\${$lt_var+set}\" = set; then
+          save_$lt_var=\$$lt_var
+          $lt_var=C
+	  export $lt_var
+	  lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
+	  lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
+	fi"
+done
+
+$lt_unset CDPATH
+
+
+
+
+
+: ${CP="cp -f"}
+: ${ECHO="echo"}
+: ${EGREP="/bin/grep -E"}
+: ${FGREP="/bin/grep -F"}
+: ${GREP="/bin/grep"}
+: ${LN_S="ln -s"}
+: ${MAKE="make"}
+: ${MKDIR="mkdir"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+: ${SED="/bin/sed"}
+: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
+: ${Xsed="$SED -e 1s/^X//"}
+
+# Global variables:
+EXIT_SUCCESS=0
+EXIT_FAILURE=1
+EXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
+EXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
+
+exit_status=$EXIT_SUCCESS
+
+# Make sure IFS has a sensible default
+lt_nl='
+'
+IFS=" 	$lt_nl"
+
+dirname="s,/[^/]*$,,"
+basename="s,^.*/,,"
+
+# func_dirname_and_basename file append nondir_replacement
+# perform func_basename and func_dirname in a single function
+# call:
+#   dirname:  Compute the dirname of FILE.  If nonempty,
+#             add APPEND to the result, otherwise set result
+#             to NONDIR_REPLACEMENT.
+#             value returned in "$func_dirname_result"
+#   basename: Compute filename of FILE.
+#             value retuned in "$func_basename_result"
+# Implementation must be kept synchronized with func_dirname
+# and func_basename. For efficiency, we do not delegate to
+# those functions but instead duplicate the functionality here.
+func_dirname_and_basename ()
+{
+  # Extract subdirectory from the argument.
+  func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
+  if test "X$func_dirname_result" = "X${1}"; then
+    func_dirname_result="${3}"
+  else
+    func_dirname_result="$func_dirname_result${2}"
+  fi
+  func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
+}
+
+# Generated shell functions inserted here.
+
+# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
+# is ksh but when the shell is invoked as "sh" and the current value of
+# the _XPG environment variable is not equal to 1 (one), the special
+# positional parameter $0, within a function call, is the name of the
+# function.
+progpath="$0"
+
+# The name of this program:
+# In the unlikely event $progname began with a '-', it would play havoc with
+# func_echo (imagine progname=-n), so we prepend ./ in that case:
+func_dirname_and_basename "$progpath"
+progname=$func_basename_result
+case $progname in
+  -*) progname=./$progname ;;
+esac
+
+# Make sure we have an absolute path for reexecution:
+case $progpath in
+  [\\/]*|[A-Za-z]:\\*) ;;
+  *[\\/]*)
+     progdir=$func_dirname_result
+     progdir=`cd "$progdir" && pwd`
+     progpath="$progdir/$progname"
+     ;;
+  *)
+     save_IFS="$IFS"
+     IFS=:
+     for progdir in $PATH; do
+       IFS="$save_IFS"
+       test -x "$progdir/$progname" && break
+     done
+     IFS="$save_IFS"
+     test -n "$progdir" || progdir=`pwd`
+     progpath="$progdir/$progname"
+     ;;
+esac
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed="${SED}"' -e 1s/^X//'
+sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\(["`\\]\)/\\\1/g'
+
+# Re-`\' parameter expansions in output of double_quote_subst that were
+# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
+# in input to double_quote_subst, that '$' was protected from expansion.
+# Since each input `\' is now two `\'s, look for any number of runs of
+# four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
+bs='\\'
+bs2='\\\\'
+bs4='\\\\\\\\'
+dollar='\$'
+sed_double_backslash="\
+  s/$bs4/&\\
+/g
+  s/^$bs2$dollar/$bs&/
+  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
+  s/\n//g"
+
+# Standard options:
+opt_dry_run=false
+opt_help=false
+opt_quiet=false
+opt_verbose=false
+opt_warning=:
+
+# func_echo arg...
+# Echo program name prefixed message, along with the current mode
+# name if it has been set yet.
+func_echo ()
+{
+    $ECHO "$progname${mode+: }$mode: $*"
+}
+
+# func_verbose arg...
+# Echo program name prefixed message in verbose mode only.
+func_verbose ()
+{
+    $opt_verbose && func_echo ${1+"$@"}
+
+    # A bug in bash halts the script if the last line of a function
+    # fails when set -e is in force, so we need another command to
+    # work around that:
+    :
+}
+
+# func_error arg...
+# Echo program name prefixed message to standard error.
+func_error ()
+{
+    $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2
+}
+
+# func_warning arg...
+# Echo program name prefixed warning message to standard error.
+func_warning ()
+{
+    $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2
+
+    # bash bug again:
+    :
+}
+
+# func_fatal_error arg...
+# Echo program name prefixed message to standard error, and exit.
+func_fatal_error ()
+{
+    func_error ${1+"$@"}
+    exit $EXIT_FAILURE
+}
+
+# func_fatal_help arg...
+# Echo program name prefixed message to standard error, followed by
+# a help hint, and exit.
+func_fatal_help ()
+{
+    func_error ${1+"$@"}
+    func_fatal_error "$help"
+}
+help="Try \`$progname --help' for more information."  ## default
+
+
+# func_grep expression filename
+# Check whether EXPRESSION matches any line of FILENAME, without output.
+func_grep ()
+{
+    $GREP "$1" "$2" >/dev/null 2>&1
+}
+
+
+# func_mkdir_p directory-path
+# Make sure the entire path to DIRECTORY-PATH is available.
+func_mkdir_p ()
+{
+    my_directory_path="$1"
+    my_dir_list=
+
+    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
+
+      # Protect directory names starting with `-'
+      case $my_directory_path in
+        -*) my_directory_path="./$my_directory_path" ;;
+      esac
+
+      # While some portion of DIR does not yet exist...
+      while test ! -d "$my_directory_path"; do
+        # ...make a list in topmost first order.  Use a colon delimited
+	# list incase some portion of path contains whitespace.
+        my_dir_list="$my_directory_path:$my_dir_list"
+
+        # If the last portion added has no slash in it, the list is done
+        case $my_directory_path in */*) ;; *) break ;; esac
+
+        # ...otherwise throw away the child directory and loop
+        my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"`
+      done
+      my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'`
+
+      save_mkdir_p_IFS="$IFS"; IFS=':'
+      for my_dir in $my_dir_list; do
+	IFS="$save_mkdir_p_IFS"
+        # mkdir can fail with a `File exist' error if two processes
+        # try to create one of the directories concurrently.  Don't
+        # stop in that case!
+        $MKDIR "$my_dir" 2>/dev/null || :
+      done
+      IFS="$save_mkdir_p_IFS"
+
+      # Bail out if we (or some other process) failed to create a directory.
+      test -d "$my_directory_path" || \
+        func_fatal_error "Failed to create \`$1'"
+    fi
+}
+
+
+# func_mktempdir [string]
+# Make a temporary directory that won't clash with other running
+# libtool processes, and avoids race conditions if possible.  If
+# given, STRING is the basename for that directory.
+func_mktempdir ()
+{
+    my_template="${TMPDIR-/tmp}/${1-$progname}"
+
+    if test "$opt_dry_run" = ":"; then
+      # Return a directory name, but don't create it in dry-run mode
+      my_tmpdir="${my_template}-$$"
+    else
+
+      # If mktemp works, use that first and foremost
+      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
+
+      if test ! -d "$my_tmpdir"; then
+        # Failing that, at least try and use $RANDOM to avoid a race
+        my_tmpdir="${my_template}-${RANDOM-0}$$"
+
+        save_mktempdir_umask=`umask`
+        umask 0077
+        $MKDIR "$my_tmpdir"
+        umask $save_mktempdir_umask
+      fi
+
+      # If we're not in dry-run mode, bomb out on failure
+      test -d "$my_tmpdir" || \
+        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
+    fi
+
+    $ECHO "X$my_tmpdir" | $Xsed
+}
+
+
+# func_quote_for_eval arg
+# Aesthetically quote ARG to be evaled later.
+# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
+# is double-quoted, suitable for a subsequent eval, whereas
+# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
+# which are still active within double quotes backslashified.
+func_quote_for_eval ()
+{
+    case $1 in
+      *[\\\`\"\$]*)
+	func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;;
+      *)
+        func_quote_for_eval_unquoted_result="$1" ;;
+    esac
+
+    case $func_quote_for_eval_unquoted_result in
+      # Double-quote args containing shell metacharacters to delay
+      # word splitting, command substitution and and variable
+      # expansion for a subsequent eval.
+      # Many Bourne shells cannot handle close brackets correctly
+      # in scan sets, so we specify it separately.
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+        func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
+        ;;
+      *)
+        func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
+    esac
+}
+
+
+# func_quote_for_expand arg
+# Aesthetically quote ARG to be evaled later; same as above,
+# but do not quote variable references.
+func_quote_for_expand ()
+{
+    case $1 in
+      *[\\\`\"]*)
+	my_arg=`$ECHO "X$1" | $Xsed \
+	    -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
+      *)
+        my_arg="$1" ;;
+    esac
+
+    case $my_arg in
+      # Double-quote args containing shell metacharacters to delay
+      # word splitting and command substitution for a subsequent eval.
+      # Many Bourne shells cannot handle close brackets correctly
+      # in scan sets, so we specify it separately.
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+        my_arg="\"$my_arg\""
+        ;;
+    esac
+
+    func_quote_for_expand_result="$my_arg"
+}
+
+
+# func_show_eval cmd [fail_exp]
+# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
+# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
+# is given, then evaluate it.
+func_show_eval ()
+{
+    my_cmd="$1"
+    my_fail_exp="${2-:}"
+
+    ${opt_silent-false} || {
+      func_quote_for_expand "$my_cmd"
+      eval "func_echo $func_quote_for_expand_result"
+    }
+
+    if ${opt_dry_run-false}; then :; else
+      eval "$my_cmd"
+      my_status=$?
+      if test "$my_status" -eq 0; then :; else
+	eval "(exit $my_status); $my_fail_exp"
+      fi
+    fi
+}
+
+
+# func_show_eval_locale cmd [fail_exp]
+# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
+# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
+# is given, then evaluate it.  Use the saved locale for evaluation.
+func_show_eval_locale ()
+{
+    my_cmd="$1"
+    my_fail_exp="${2-:}"
+
+    ${opt_silent-false} || {
+      func_quote_for_expand "$my_cmd"
+      eval "func_echo $func_quote_for_expand_result"
+    }
+
+    if ${opt_dry_run-false}; then :; else
+      eval "$lt_user_locale
+	    $my_cmd"
+      my_status=$?
+      eval "$lt_safe_locale"
+      if test "$my_status" -eq 0; then :; else
+	eval "(exit $my_status); $my_fail_exp"
+      fi
+    fi
+}
+
+
+
+
+
+# func_version
+# Echo version message to standard output and exit.
+func_version ()
+{
+    $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / {
+        s/^# //
+	s/^# *$//
+        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
+        p
+     }' < "$progpath"
+     exit $?
+}
+
+# func_usage
+# Echo short help message to standard output and exit.
+func_usage ()
+{
+    $SED -n '/^# Usage:/,/# -h/ {
+        s/^# //
+	s/^# *$//
+	s/\$progname/'$progname'/
+	p
+    }' < "$progpath"
+    $ECHO
+    $ECHO "run \`$progname --help | more' for full usage"
+    exit $?
+}
+
+# func_help
+# Echo long help message to standard output and exit.
+func_help ()
+{
+    $SED -n '/^# Usage:/,/# Report bugs to/ {
+        s/^# //
+	s/^# *$//
+	s*\$progname*'$progname'*
+	s*\$host*'"$host"'*
+	s*\$SHELL*'"$SHELL"'*
+	s*\$LTCC*'"$LTCC"'*
+	s*\$LTCFLAGS*'"$LTCFLAGS"'*
+	s*\$LD*'"$LD"'*
+	s/\$with_gnu_ld/'"$with_gnu_ld"'/
+	s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
+	s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
+	p
+     }' < "$progpath"
+    exit $?
+}
+
+# func_missing_arg argname
+# Echo program name prefixed message to standard error and set global
+# exit_cmd.
+func_missing_arg ()
+{
+    func_error "missing argument for $1"
+    exit_cmd=exit
+}
+
+exit_cmd=:
+
+
+
+
+
+# Check that we have a working $ECHO.
+if test "X$1" = X--no-reexec; then
+  # Discard the --no-reexec flag, and continue.
+  shift
+elif test "X$1" = X--fallback-echo; then
+  # Avoid inline document here, it may be left over
+  :
+elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then
+  # Yippee, $ECHO works!
+  :
+else
+  # Restart under the correct shell, and then maybe $ECHO will work.
+  exec $SHELL "$progpath" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+  # used as fallback echo
+  shift
+  cat <<EOF
+$*
+EOF
+  exit $EXIT_SUCCESS
+fi
+
+magic="%%%MAGIC variable%%%"
+magic_exe="%%%MAGIC EXE variable%%%"
+
+# Global variables.
+# $mode is unset
+nonopt=
+execute_dlfiles=
+preserve_args=
+lo2o="s/\\.lo\$/.${objext}/"
+o2lo="s/\\.${objext}\$/.lo/"
+extracted_archives=
+extracted_serial=0
+
+opt_dry_run=false
+opt_duplicate_deps=false
+opt_silent=false
+opt_debug=:
+
+# If this variable is set in any of the actions, the command in it
+# will be execed at the end.  This prevents here-documents from being
+# left over by shells.
+exec_cmd=
+
+# func_fatal_configuration arg...
+# Echo program name prefixed message to standard error, followed by
+# a configuration failure hint, and exit.
+func_fatal_configuration ()
+{
+    func_error ${1+"$@"}
+    func_error "See the $PACKAGE documentation for more information."
+    func_fatal_error "Fatal configuration error."
+}
+
+
+# func_config
+# Display the configuration for all the tags in this script.
+func_config ()
+{
+    re_begincf='^# ### BEGIN LIBTOOL'
+    re_endcf='^# ### END LIBTOOL'
+
+    # Default configuration.
+    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
+
+    # Now print the configurations for the tags.
+    for tagname in $taglist; do
+      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
+    done
+
+    exit $?
+}
+
+# func_features
+# Display the features supported by this script.
+func_features ()
+{
+    $ECHO "host: $host"
+    if test "$build_libtool_libs" = yes; then
+      $ECHO "enable shared libraries"
+    else
+      $ECHO "disable shared libraries"
+    fi
+    if test "$build_old_libs" = yes; then
+      $ECHO "enable static libraries"
+    else
+      $ECHO "disable static libraries"
+    fi
+
+    exit $?
+}
+
+# func_enable_tag tagname
+# Verify that TAGNAME is valid, and either flag an error and exit, or
+# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
+# variable here.
+func_enable_tag ()
+{
+  # Global variable:
+  tagname="$1"
+
+  re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
+  re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
+  sed_extractcf="/$re_begincf/,/$re_endcf/p"
+
+  # Validate tagname.
+  case $tagname in
+    *[!-_A-Za-z0-9,/]*)
+      func_fatal_error "invalid tag name: $tagname"
+      ;;
+  esac
+
+  # Don't test for the "default" C tag, as we know it's
+  # there but not specially marked.
+  case $tagname in
+    CC) ;;
+    *)
+      if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
+	taglist="$taglist $tagname"
+
+	# Evaluate the configuration.  Be careful to quote the path
+	# and the sed script, to avoid splitting on whitespace, but
+	# also don't use non-portable quotes within backquotes within
+	# quotes we have to do it in 2 steps:
+	extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
+	eval "$extractedcf"
+      else
+	func_error "ignoring unknown tag $tagname"
+      fi
+      ;;
+  esac
+}
+
+# Parse options once, thoroughly.  This comes as soon as possible in
+# the script to make things like `libtool --version' happen quickly.
+{
+
+  # Shorthand for --mode=foo, only valid as the first argument
+  case $1 in
+  clean|clea|cle|cl)
+    shift; set dummy --mode clean ${1+"$@"}; shift
+    ;;
+  compile|compil|compi|comp|com|co|c)
+    shift; set dummy --mode compile ${1+"$@"}; shift
+    ;;
+  execute|execut|execu|exec|exe|ex|e)
+    shift; set dummy --mode execute ${1+"$@"}; shift
+    ;;
+  finish|finis|fini|fin|fi|f)
+    shift; set dummy --mode finish ${1+"$@"}; shift
+    ;;
+  install|instal|insta|inst|ins|in|i)
+    shift; set dummy --mode install ${1+"$@"}; shift
+    ;;
+  link|lin|li|l)
+    shift; set dummy --mode link ${1+"$@"}; shift
+    ;;
+  uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
+    shift; set dummy --mode uninstall ${1+"$@"}; shift
+    ;;
+  esac
+
+  # Parse non-mode specific arguments:
+  while test "$#" -gt 0; do
+    opt="$1"
+    shift
+
+    case $opt in
+      --config)		func_config					;;
+
+      --debug)		preserve_args="$preserve_args $opt"
+			func_echo "enabling shell trace mode"
+			opt_debug='set -x'
+			$opt_debug
+			;;
+
+      -dlopen)		test "$#" -eq 0 && func_missing_arg "$opt" && break
+			execute_dlfiles="$execute_dlfiles $1"
+			shift
+			;;
+
+      --dry-run | -n)	opt_dry_run=:					;;
+      --features)       func_features					;;
+      --finish)		mode="finish"					;;
+
+      --mode)		test "$#" -eq 0 && func_missing_arg "$opt" && break
+			case $1 in
+			  # Valid mode arguments:
+			  clean)	;;
+			  compile)	;;
+			  execute)	;;
+			  finish)	;;
+			  install)	;;
+			  link)		;;
+			  relink)	;;
+			  uninstall)	;;
+
+			  # Catch anything else as an error
+			  *) func_error "invalid argument for $opt"
+			     exit_cmd=exit
+			     break
+			     ;;
+		        esac
+
+			mode="$1"
+			shift
+			;;
+
+      --preserve-dup-deps)
+			opt_duplicate_deps=:				;;
+
+      --quiet|--silent)	preserve_args="$preserve_args $opt"
+			opt_silent=:
+			;;
+
+      --verbose| -v)	preserve_args="$preserve_args $opt"
+			opt_silent=false
+			;;
+
+      --tag)		test "$#" -eq 0 && func_missing_arg "$opt" && break
+			preserve_args="$preserve_args $opt $1"
+			func_enable_tag "$1"	# tagname is set here
+			shift
+			;;
+
+      # Separate optargs to long options:
+      -dlopen=*|--mode=*|--tag=*)
+			func_opt_split "$opt"
+			set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"}
+			shift
+			;;
+
+      -\?|-h)		func_usage					;;
+      --help)		opt_help=:					;;
+      --version)	func_version					;;
+
+      -*)		func_fatal_help "unrecognized option \`$opt'"	;;
+
+      *)		nonopt="$opt"
+			break
+			;;
+    esac
+  done
+
+
+  case $host in
+    *cygwin* | *mingw* | *pw32* | *cegcc*)
+      # don't eliminate duplications in $postdeps and $predeps
+      opt_duplicate_compiler_generated_deps=:
+      ;;
+    *)
+      opt_duplicate_compiler_generated_deps=$opt_duplicate_deps
+      ;;
+  esac
+
+  # Having warned about all mis-specified options, bail out if
+  # anything was wrong.
+  $exit_cmd $EXIT_FAILURE
+}
+
+# func_check_version_match
+# Ensure that we are using m4 macros, and libtool script from the same
+# release of libtool.
+func_check_version_match ()
+{
+  if test "$package_revision" != "$macro_revision"; then
+    if test "$VERSION" != "$macro_version"; then
+      if test -z "$macro_version"; then
+        cat >&2 <<_LT_EOF
+$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
+$progname: definition of this LT_INIT comes from an older release.
+$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
+$progname: and run autoconf again.
+_LT_EOF
+      else
+        cat >&2 <<_LT_EOF
+$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
+$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
+$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
+$progname: and run autoconf again.
+_LT_EOF
+      fi
+    else
+      cat >&2 <<_LT_EOF
+$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
+$progname: but the definition of this LT_INIT comes from revision $macro_revision.
+$progname: You should recreate aclocal.m4 with macros from revision $package_revision
+$progname: of $PACKAGE $VERSION and run autoconf again.
+_LT_EOF
+    fi
+
+    exit $EXIT_MISMATCH
+  fi
+}
+
+
+## ----------- ##
+##    Main.    ##
+## ----------- ##
+
+$opt_help || {
+  # Sanity checks first:
+  func_check_version_match
+
+  if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+    func_fatal_configuration "not configured to build any kind of library"
+  fi
+
+  test -z "$mode" && func_fatal_error "error: you must specify a MODE."
+
+
+  # Darwin sucks
+  eval std_shrext=\"$shrext_cmds\"
+
+
+  # Only execute mode is allowed to have -dlopen flags.
+  if test -n "$execute_dlfiles" && test "$mode" != execute; then
+    func_error "unrecognized option \`-dlopen'"
+    $ECHO "$help" 1>&2
+    exit $EXIT_FAILURE
+  fi
+
+  # Change the help message to a mode-specific one.
+  generic_help="$help"
+  help="Try \`$progname --help --mode=$mode' for more information."
+}
+
+
+# func_lalib_p file
+# True iff FILE is a libtool `.la' library or `.lo' object file.
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_lalib_p ()
+{
+    test -f "$1" &&
+      $SED -e 4q "$1" 2>/dev/null \
+        | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
+}
+
+# func_lalib_unsafe_p file
+# True iff FILE is a libtool `.la' library or `.lo' object file.
+# This function implements the same check as func_lalib_p without
+# resorting to external programs.  To this end, it redirects stdin and
+# closes it afterwards, without saving the original file descriptor.
+# As a safety measure, use it only where a negative result would be
+# fatal anyway.  Works if `file' does not exist.
+func_lalib_unsafe_p ()
+{
+    lalib_p=no
+    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
+	for lalib_p_l in 1 2 3 4
+	do
+	    read lalib_p_line
+	    case "$lalib_p_line" in
+		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
+	    esac
+	done
+	exec 0<&5 5<&-
+    fi
+    test "$lalib_p" = yes
+}
+
+# func_ltwrapper_script_p file
+# True iff FILE is a libtool wrapper script
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_ltwrapper_script_p ()
+{
+    func_lalib_p "$1"
+}
+
+# func_ltwrapper_executable_p file
+# True iff FILE is a libtool wrapper executable
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_ltwrapper_executable_p ()
+{
+    func_ltwrapper_exec_suffix=
+    case $1 in
+    *.exe) ;;
+    *) func_ltwrapper_exec_suffix=.exe ;;
+    esac
+    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
+}
+
+# func_ltwrapper_scriptname file
+# Assumes file is an ltwrapper_executable
+# uses $file to determine the appropriate filename for a
+# temporary ltwrapper_script.
+func_ltwrapper_scriptname ()
+{
+    func_ltwrapper_scriptname_result=""
+    if func_ltwrapper_executable_p "$1"; then
+	func_dirname_and_basename "$1" "" "."
+	func_stripname '' '.exe' "$func_basename_result"
+	func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
+    fi
+}
+
+# func_ltwrapper_p file
+# True iff FILE is a libtool wrapper script or wrapper executable
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_ltwrapper_p ()
+{
+    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
+}
+
+
+# func_execute_cmds commands fail_cmd
+# Execute tilde-delimited COMMANDS.
+# If FAIL_CMD is given, eval that upon failure.
+# FAIL_CMD may read-access the current command in variable CMD!
+func_execute_cmds ()
+{
+    $opt_debug
+    save_ifs=$IFS; IFS='~'
+    for cmd in $1; do
+      IFS=$save_ifs
+      eval cmd=\"$cmd\"
+      func_show_eval "$cmd" "${2-:}"
+    done
+    IFS=$save_ifs
+}
+
+
+# func_source file
+# Source FILE, adding directory component if necessary.
+# Note that it is not necessary on cygwin/mingw to append a dot to
+# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
+# behavior happens only for exec(3), not for open(2)!  Also, sourcing
+# `FILE.' does not work on cygwin managed mounts.
+func_source ()
+{
+    $opt_debug
+    case $1 in
+    */* | *\\*)	. "$1" ;;
+    *)		. "./$1" ;;
+    esac
+}
+
+
+# func_infer_tag arg
+# Infer tagged configuration to use if any are available and
+# if one wasn't chosen via the "--tag" command line option.
+# Only attempt this if the compiler in the base compile
+# command doesn't match the default compiler.
+# arg is usually of the form 'gcc ...'
+func_infer_tag ()
+{
+    $opt_debug
+    if test -n "$available_tags" && test -z "$tagname"; then
+      CC_quoted=
+      for arg in $CC; do
+        func_quote_for_eval "$arg"
+	CC_quoted="$CC_quoted $func_quote_for_eval_result"
+      done
+      case $@ in
+      # Blanks in the command may have been stripped by the calling shell,
+      # but not from the CC environment variable when configure was run.
+      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;;
+      # Blanks at the start of $base_compile will cause this to fail
+      # if we don't check for them as well.
+      *)
+	for z in $available_tags; do
+	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
+	    # Evaluate the configuration.
+	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
+	    CC_quoted=
+	    for arg in $CC; do
+	      # Double-quote args containing other shell metacharacters.
+	      func_quote_for_eval "$arg"
+	      CC_quoted="$CC_quoted $func_quote_for_eval_result"
+	    done
+	    case "$@ " in
+	      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*)
+	      # The compiler in the base compile command matches
+	      # the one in the tagged configuration.
+	      # Assume this is the tagged configuration we want.
+	      tagname=$z
+	      break
+	      ;;
+	    esac
+	  fi
+	done
+	# If $tagname still isn't set, then no tagged configuration
+	# was found and let the user know that the "--tag" command
+	# line option must be used.
+	if test -z "$tagname"; then
+	  func_echo "unable to infer tagged configuration"
+	  func_fatal_error "specify a tag with \`--tag'"
+#	else
+#	  func_verbose "using $tagname tagged configuration"
+	fi
+	;;
+      esac
+    fi
+}
+
+
+
+# func_write_libtool_object output_name pic_name nonpic_name
+# Create a libtool object file (analogous to a ".la" file),
+# but don't create it if we're doing a dry run.
+func_write_libtool_object ()
+{
+    write_libobj=${1}
+    if test "$build_libtool_libs" = yes; then
+      write_lobj=\'${2}\'
+    else
+      write_lobj=none
+    fi
+
+    if test "$build_old_libs" = yes; then
+      write_oldobj=\'${3}\'
+    else
+      write_oldobj=none
+    fi
+
+    $opt_dry_run || {
+      cat >${write_libobj}T <<EOF
+# $write_libobj - a libtool object file
+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object=$write_lobj
+
+# Name of the non-PIC object
+non_pic_object=$write_oldobj
+
+EOF
+      $MV "${write_libobj}T" "${write_libobj}"
+    }
+}
+
+# func_mode_compile arg...
+func_mode_compile ()
+{
+    $opt_debug
+    # Get the compilation command and the source file.
+    base_compile=
+    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
+    suppress_opt=yes
+    suppress_output=
+    arg_mode=normal
+    libobj=
+    later=
+    pie_flag=
+
+    for arg
+    do
+      case $arg_mode in
+      arg  )
+	# do not "continue".  Instead, add this to base_compile
+	lastarg="$arg"
+	arg_mode=normal
+	;;
+
+      target )
+	libobj="$arg"
+	arg_mode=normal
+	continue
+	;;
+
+      normal )
+	# Accept any command-line options.
+	case $arg in
+	-o)
+	  test -n "$libobj" && \
+	    func_fatal_error "you cannot specify \`-o' more than once"
+	  arg_mode=target
+	  continue
+	  ;;
+
+	-pie | -fpie | -fPIE)
+          pie_flag="$pie_flag $arg"
+	  continue
+	  ;;
+
+	-shared | -static | -prefer-pic | -prefer-non-pic)
+	  later="$later $arg"
+	  continue
+	  ;;
+
+	-no-suppress)
+	  suppress_opt=no
+	  continue
+	  ;;
+
+	-Xcompiler)
+	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
+	  continue      #  The current "srcfile" will either be retained or
+	  ;;            #  replaced later.  I would guess that would be a bug.
+
+	-Wc,*)
+	  func_stripname '-Wc,' '' "$arg"
+	  args=$func_stripname_result
+	  lastarg=
+	  save_ifs="$IFS"; IFS=','
+	  for arg in $args; do
+	    IFS="$save_ifs"
+	    func_quote_for_eval "$arg"
+	    lastarg="$lastarg $func_quote_for_eval_result"
+	  done
+	  IFS="$save_ifs"
+	  func_stripname ' ' '' "$lastarg"
+	  lastarg=$func_stripname_result
+
+	  # Add the arguments to base_compile.
+	  base_compile="$base_compile $lastarg"
+	  continue
+	  ;;
+
+	*)
+	  # Accept the current argument as the source file.
+	  # The previous "srcfile" becomes the current argument.
+	  #
+	  lastarg="$srcfile"
+	  srcfile="$arg"
+	  ;;
+	esac  #  case $arg
+	;;
+      esac    #  case $arg_mode
+
+      # Aesthetically quote the previous argument.
+      func_quote_for_eval "$lastarg"
+      base_compile="$base_compile $func_quote_for_eval_result"
+    done # for arg
+
+    case $arg_mode in
+    arg)
+      func_fatal_error "you must specify an argument for -Xcompile"
+      ;;
+    target)
+      func_fatal_error "you must specify a target with \`-o'"
+      ;;
+    *)
+      # Get the name of the library object.
+      test -z "$libobj" && {
+	func_basename "$srcfile"
+	libobj="$func_basename_result"
+      }
+      ;;
+    esac
+
+    # Recognize several different file suffixes.
+    # If the user specifies -o file.o, it is replaced with file.lo
+    case $libobj in
+    *.[cCFSifmso] | \
+    *.ada | *.adb | *.ads | *.asm | \
+    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
+    *.[fF][09]? | *.for | *.java | *.obj | *.sx)
+      func_xform "$libobj"
+      libobj=$func_xform_result
+      ;;
+    esac
+
+    case $libobj in
+    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
+    *)
+      func_fatal_error "cannot determine name of library object from \`$libobj'"
+      ;;
+    esac
+
+    func_infer_tag $base_compile
+
+    for arg in $later; do
+      case $arg in
+      -shared)
+	test "$build_libtool_libs" != yes && \
+	  func_fatal_configuration "can not build a shared library"
+	build_old_libs=no
+	continue
+	;;
+
+      -static)
+	build_libtool_libs=no
+	build_old_libs=yes
+	continue
+	;;
+
+      -prefer-pic)
+	pic_mode=yes
+	continue
+	;;
+
+      -prefer-non-pic)
+	pic_mode=no
+	continue
+	;;
+      esac
+    done
+
+    func_quote_for_eval "$libobj"
+    test "X$libobj" != "X$func_quote_for_eval_result" \
+      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \
+      && func_warning "libobj name \`$libobj' may not contain shell special characters."
+    func_dirname_and_basename "$obj" "/" ""
+    objname="$func_basename_result"
+    xdir="$func_dirname_result"
+    lobj=${xdir}$objdir/$objname
+
+    test -z "$base_compile" && \
+      func_fatal_help "you must specify a compilation command"
+
+    # Delete any leftover library objects.
+    if test "$build_old_libs" = yes; then
+      removelist="$obj $lobj $libobj ${libobj}T"
+    else
+      removelist="$lobj $libobj ${libobj}T"
+    fi
+
+    # On Cygwin there's no "real" PIC flag so we must build both object types
+    case $host_os in
+    cygwin* | mingw* | pw32* | os2* | cegcc*)
+      pic_mode=default
+      ;;
+    esac
+    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
+      # non-PIC code in shared libraries is not supported
+      pic_mode=default
+    fi
+
+    # Calculate the filename of the output object if compiler does
+    # not support -o with -c
+    if test "$compiler_c_o" = no; then
+      output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
+      lockfile="$output_obj.lock"
+    else
+      output_obj=
+      need_locks=no
+      lockfile=
+    fi
+
+    # Lock this critical section if it is needed
+    # We use this script file to make the link, it avoids creating a new file
+    if test "$need_locks" = yes; then
+      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
+	func_echo "Waiting for $lockfile to be removed"
+	sleep 2
+      done
+    elif test "$need_locks" = warn; then
+      if test -f "$lockfile"; then
+	$ECHO "\
+*** ERROR, $lockfile exists and contains:
+`cat $lockfile 2>/dev/null`
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+	$opt_dry_run || $RM $removelist
+	exit $EXIT_FAILURE
+      fi
+      removelist="$removelist $output_obj"
+      $ECHO "$srcfile" > "$lockfile"
+    fi
+
+    $opt_dry_run || $RM $removelist
+    removelist="$removelist $lockfile"
+    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
+
+    if test -n "$fix_srcfile_path"; then
+      eval srcfile=\"$fix_srcfile_path\"
+    fi
+    func_quote_for_eval "$srcfile"
+    qsrcfile=$func_quote_for_eval_result
+
+    # Only build a PIC object if we are building libtool libraries.
+    if test "$build_libtool_libs" = yes; then
+      # Without this assignment, base_compile gets emptied.
+      fbsd_hideous_sh_bug=$base_compile
+
+      if test "$pic_mode" != no; then
+	command="$base_compile $qsrcfile $pic_flag"
+      else
+	# Don't build PIC code
+	command="$base_compile $qsrcfile"
+      fi
+
+      func_mkdir_p "$xdir$objdir"
+
+      if test -z "$output_obj"; then
+	# Place PIC objects in $objdir
+	command="$command -o $lobj"
+      fi
+
+      func_show_eval_locale "$command"	\
+          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
+
+      if test "$need_locks" = warn &&
+	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+	$ECHO "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+	$opt_dry_run || $RM $removelist
+	exit $EXIT_FAILURE
+      fi
+
+      # Just move the object if needed, then go on to compile the next one
+      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
+	func_show_eval '$MV "$output_obj" "$lobj"' \
+	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
+      fi
+
+      # Allow error messages only from the first compilation.
+      if test "$suppress_opt" = yes; then
+	suppress_output=' >/dev/null 2>&1'
+      fi
+    fi
+
+    # Only build a position-dependent object if we build old libraries.
+    if test "$build_old_libs" = yes; then
+      if test "$pic_mode" != yes; then
+	# Don't build PIC code
+	command="$base_compile $qsrcfile$pie_flag"
+      else
+	command="$base_compile $qsrcfile $pic_flag"
+      fi
+      if test "$compiler_c_o" = yes; then
+	command="$command -o $obj"
+      fi
+
+      # Suppress compiler output if we already did a PIC compilation.
+      command="$command$suppress_output"
+      func_show_eval_locale "$command" \
+        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
+
+      if test "$need_locks" = warn &&
+	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+	$ECHO "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+	$opt_dry_run || $RM $removelist
+	exit $EXIT_FAILURE
+      fi
+
+      # Just move the object if needed
+      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
+	func_show_eval '$MV "$output_obj" "$obj"' \
+	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
+      fi
+    fi
+
+    $opt_dry_run || {
+      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
+
+      # Unlock the critical section if it was locked
+      if test "$need_locks" != no; then
+	removelist=$lockfile
+        $RM "$lockfile"
+      fi
+    }
+
+    exit $EXIT_SUCCESS
+}
+
+$opt_help || {
+test "$mode" = compile && func_mode_compile ${1+"$@"}
+}
+
+func_mode_help ()
+{
+    # We need to display help for each of the modes.
+    case $mode in
+      "")
+        # Generic help is extracted from the usage comments
+        # at the start of this file.
+        func_help
+        ;;
+
+      clean)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
+
+Remove files from the build directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, object or program, all the files associated
+with it are deleted. Otherwise, only FILE itself is deleted using RM."
+        ;;
+
+      compile)
+      $ECHO \
+"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
+
+Compile a source file into a libtool library object.
+
+This mode accepts the following additional options:
+
+  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
+  -no-suppress      do not suppress compiler output for multiple passes
+  -prefer-pic       try to building PIC objects only
+  -prefer-non-pic   try to building non-PIC objects only
+  -shared           do not build a \`.o' file suitable for static linking
+  -static           only build a \`.o' file suitable for static linking
+
+COMPILE-COMMAND is a command to be used in creating a \`standard' object file
+from the given SOURCEFILE.
+
+The output file name is determined by removing the directory component from
+SOURCEFILE, then substituting the C source code suffix \`.c' with the
+library object suffix, \`.lo'."
+        ;;
+
+      execute)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
+
+Automatically set library path, then run a program.
+
+This mode accepts the following additional options:
+
+  -dlopen FILE      add the directory containing FILE to the library path
+
+This mode sets the library path environment variable according to \`-dlopen'
+flags.
+
+If any of the ARGS are libtool executable wrappers, then they are translated
+into their corresponding uninstalled binary, and any of their required library
+directories are added to the library path.
+
+Then, COMMAND is executed, with ARGS as arguments."
+        ;;
+
+      finish)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
+
+Complete the installation of libtool libraries.
+
+Each LIBDIR is a directory that contains libtool libraries.
+
+The commands that this mode executes may require superuser privileges.  Use
+the \`--dry-run' option if you just want to see what would be executed."
+        ;;
+
+      install)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
+
+Install executables or libraries.
+
+INSTALL-COMMAND is the installation command.  The first component should be
+either the \`install' or \`cp' program.
+
+The following components of INSTALL-COMMAND are treated specially:
+
+  -inst-prefix PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
+
+The rest of the components are interpreted as arguments to that command (only
+BSD-compatible install options are recognized)."
+        ;;
+
+      link)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
+
+Link object files or libraries together to form another library, or to
+create an executable program.
+
+LINK-COMMAND is a command using the C compiler that you would use to create
+a program from several object files.
+
+The following components of LINK-COMMAND are treated specially:
+
+  -all-static       do not do any dynamic linking at all
+  -avoid-version    do not add a version suffix if possible
+  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
+  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
+  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
+  -export-symbols SYMFILE
+                    try to export only the symbols listed in SYMFILE
+  -export-symbols-regex REGEX
+                    try to export only the symbols matching REGEX
+  -LLIBDIR          search LIBDIR for required installed libraries
+  -lNAME            OUTPUT-FILE requires the installed library libNAME
+  -module           build a library that can dlopened
+  -no-fast-install  disable the fast-install mode
+  -no-install       link a not-installable executable
+  -no-undefined     declare that a library does not refer to external symbols
+  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
+  -objectlist FILE  Use a list of object files found in FILE to specify objects
+  -precious-files-regex REGEX
+                    don't remove output files matching REGEX
+  -release RELEASE  specify package release information
+  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
+  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
+  -shared           only do dynamic linking of libtool libraries
+  -shrext SUFFIX    override the standard shared library file extension
+  -static           do not do any dynamic linking of uninstalled libtool libraries
+  -static-libtool-libs
+                    do not do any dynamic linking of libtool libraries
+  -version-info CURRENT[:REVISION[:AGE]]
+                    specify library version info [each variable defaults to 0]
+  -weak LIBNAME     declare that the target provides the LIBNAME interface
+
+All other options (arguments beginning with \`-') are ignored.
+
+Every other argument is treated as a filename.  Files ending in \`.la' are
+treated as uninstalled libtool libraries, other files are standard or library
+object files.
+
+If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
+only library objects (\`.lo' files) may be specified, and \`-rpath' is
+required, except when creating a convenience library.
+
+If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
+using \`ar' and \`ranlib', or on Windows using \`lib'.
+
+If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
+is created, otherwise an executable program is created."
+        ;;
+
+      uninstall)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
+
+Remove libraries from an installation directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, all the files associated with it are deleted.
+Otherwise, only FILE itself is deleted using RM."
+        ;;
+
+      *)
+        func_fatal_help "invalid operation mode \`$mode'"
+        ;;
+    esac
+
+    $ECHO
+    $ECHO "Try \`$progname --help' for more information about other modes."
+
+    exit $?
+}
+
+  # Now that we've collected a possible --mode arg, show help if necessary
+  $opt_help && func_mode_help
+
+
+# func_mode_execute arg...
+func_mode_execute ()
+{
+    $opt_debug
+    # The first argument is the command name.
+    cmd="$nonopt"
+    test -z "$cmd" && \
+      func_fatal_help "you must specify a COMMAND"
+
+    # Handle -dlopen flags immediately.
+    for file in $execute_dlfiles; do
+      test -f "$file" \
+	|| func_fatal_help "\`$file' is not a file"
+
+      dir=
+      case $file in
+      *.la)
+	# Check to see that this really is a libtool archive.
+	func_lalib_unsafe_p "$file" \
+	  || func_fatal_help "\`$lib' is not a valid libtool archive"
+
+	# Read the libtool library.
+	dlname=
+	library_names=
+	func_source "$file"
+
+	# Skip this library if it cannot be dlopened.
+	if test -z "$dlname"; then
+	  # Warn if it was a shared library.
+	  test -n "$library_names" && \
+	    func_warning "\`$file' was not linked with \`-export-dynamic'"
+	  continue
+	fi
+
+	func_dirname "$file" "" "."
+	dir="$func_dirname_result"
+
+	if test -f "$dir/$objdir/$dlname"; then
+	  dir="$dir/$objdir"
+	else
+	  if test ! -f "$dir/$dlname"; then
+	    func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
+	  fi
+	fi
+	;;
+
+      *.lo)
+	# Just add the directory containing the .lo file.
+	func_dirname "$file" "" "."
+	dir="$func_dirname_result"
+	;;
+
+      *)
+	func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
+	continue
+	;;
+      esac
+
+      # Get the absolute pathname.
+      absdir=`cd "$dir" && pwd`
+      test -n "$absdir" && dir="$absdir"
+
+      # Now add the directory to shlibpath_var.
+      if eval "test -z \"\$$shlibpath_var\""; then
+	eval "$shlibpath_var=\"\$dir\""
+      else
+	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
+      fi
+    done
+
+    # This variable tells wrapper scripts just to set shlibpath_var
+    # rather than running their programs.
+    libtool_execute_magic="$magic"
+
+    # Check if any of the arguments is a wrapper script.
+    args=
+    for file
+    do
+      case $file in
+      -*) ;;
+      *)
+	# Do a test to see if this is really a libtool program.
+	if func_ltwrapper_script_p "$file"; then
+	  func_source "$file"
+	  # Transform arg to wrapped name.
+	  file="$progdir/$program"
+	elif func_ltwrapper_executable_p "$file"; then
+	  func_ltwrapper_scriptname "$file"
+	  func_source "$func_ltwrapper_scriptname_result"
+	  # Transform arg to wrapped name.
+	  file="$progdir/$program"
+	fi
+	;;
+      esac
+      # Quote arguments (to preserve shell metacharacters).
+      func_quote_for_eval "$file"
+      args="$args $func_quote_for_eval_result"
+    done
+
+    if test "X$opt_dry_run" = Xfalse; then
+      if test -n "$shlibpath_var"; then
+	# Export the shlibpath_var.
+	eval "export $shlibpath_var"
+      fi
+
+      # Restore saved environment variables
+      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+      do
+	eval "if test \"\${save_$lt_var+set}\" = set; then
+                $lt_var=\$save_$lt_var; export $lt_var
+	      else
+		$lt_unset $lt_var
+	      fi"
+      done
+
+      # Now prepare to actually exec the command.
+      exec_cmd="\$cmd$args"
+    else
+      # Display what would be done.
+      if test -n "$shlibpath_var"; then
+	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
+	$ECHO "export $shlibpath_var"
+      fi
+      $ECHO "$cmd$args"
+      exit $EXIT_SUCCESS
+    fi
+}
+
+test "$mode" = execute && func_mode_execute ${1+"$@"}
+
+
+# func_mode_finish arg...
+func_mode_finish ()
+{
+    $opt_debug
+    libdirs="$nonopt"
+    admincmds=
+
+    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+      for dir
+      do
+	libdirs="$libdirs $dir"
+      done
+
+      for libdir in $libdirs; do
+	if test -n "$finish_cmds"; then
+	  # Do each command in the finish commands.
+	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
+'"$cmd"'"'
+	fi
+	if test -n "$finish_eval"; then
+	  # Do the single finish_eval.
+	  eval cmds=\"$finish_eval\"
+	  $opt_dry_run || eval "$cmds" || admincmds="$admincmds
+       $cmds"
+	fi
+      done
+    fi
+
+    # Exit here if they wanted silent mode.
+    $opt_silent && exit $EXIT_SUCCESS
+
+    $ECHO "X----------------------------------------------------------------------" | $Xsed
+    $ECHO "Libraries have been installed in:"
+    for libdir in $libdirs; do
+      $ECHO "   $libdir"
+    done
+    $ECHO
+    $ECHO "If you ever happen to want to link against installed libraries"
+    $ECHO "in a given directory, LIBDIR, you must either use libtool, and"
+    $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'"
+    $ECHO "flag during linking and do at least one of the following:"
+    if test -n "$shlibpath_var"; then
+      $ECHO "   - add LIBDIR to the \`$shlibpath_var' environment variable"
+      $ECHO "     during execution"
+    fi
+    if test -n "$runpath_var"; then
+      $ECHO "   - add LIBDIR to the \`$runpath_var' environment variable"
+      $ECHO "     during linking"
+    fi
+    if test -n "$hardcode_libdir_flag_spec"; then
+      libdir=LIBDIR
+      eval flag=\"$hardcode_libdir_flag_spec\"
+
+      $ECHO "   - use the \`$flag' linker flag"
+    fi
+    if test -n "$admincmds"; then
+      $ECHO "   - have your system administrator run these commands:$admincmds"
+    fi
+    if test -f /etc/ld.so.conf; then
+      $ECHO "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
+    fi
+    $ECHO
+
+    $ECHO "See any operating system documentation about shared libraries for"
+    case $host in
+      solaris2.[6789]|solaris2.1[0-9])
+        $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual"
+	$ECHO "pages."
+	;;
+      *)
+        $ECHO "more information, such as the ld(1) and ld.so(8) manual pages."
+        ;;
+    esac
+    $ECHO "X----------------------------------------------------------------------" | $Xsed
+    exit $EXIT_SUCCESS
+}
+
+test "$mode" = finish && func_mode_finish ${1+"$@"}
+
+
+# func_mode_install arg...
+func_mode_install ()
+{
+    $opt_debug
+    # There may be an optional sh(1) argument at the beginning of
+    # install_prog (especially on Windows NT).
+    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
+       # Allow the use of GNU shtool's install command.
+       $ECHO "X$nonopt" | $GREP shtool >/dev/null; then
+      # Aesthetically quote it.
+      func_quote_for_eval "$nonopt"
+      install_prog="$func_quote_for_eval_result "
+      arg=$1
+      shift
+    else
+      install_prog=
+      arg=$nonopt
+    fi
+
+    # The real first argument should be the name of the installation program.
+    # Aesthetically quote it.
+    func_quote_for_eval "$arg"
+    install_prog="$install_prog$func_quote_for_eval_result"
+
+    # We need to accept at least all the BSD install flags.
+    dest=
+    files=
+    opts=
+    prev=
+    install_type=
+    isdir=no
+    stripme=
+    for arg
+    do
+      if test -n "$dest"; then
+	files="$files $dest"
+	dest=$arg
+	continue
+      fi
+
+      case $arg in
+      -d) isdir=yes ;;
+      -f)
+	case " $install_prog " in
+	*[\\\ /]cp\ *) ;;
+	*) prev=$arg ;;
+	esac
+	;;
+      -g | -m | -o)
+	prev=$arg
+	;;
+      -s)
+	stripme=" -s"
+	continue
+	;;
+      -*)
+	;;
+      *)
+	# If the previous option needed an argument, then skip it.
+	if test -n "$prev"; then
+	  prev=
+	else
+	  dest=$arg
+	  continue
+	fi
+	;;
+      esac
+
+      # Aesthetically quote the argument.
+      func_quote_for_eval "$arg"
+      install_prog="$install_prog $func_quote_for_eval_result"
+    done
+
+    test -z "$install_prog" && \
+      func_fatal_help "you must specify an install program"
+
+    test -n "$prev" && \
+      func_fatal_help "the \`$prev' option requires an argument"
+
+    if test -z "$files"; then
+      if test -z "$dest"; then
+	func_fatal_help "no file or destination specified"
+      else
+	func_fatal_help "you must specify a destination"
+      fi
+    fi
+
+    # Strip any trailing slash from the destination.
+    func_stripname '' '/' "$dest"
+    dest=$func_stripname_result
+
+    # Check to see that the destination is a directory.
+    test -d "$dest" && isdir=yes
+    if test "$isdir" = yes; then
+      destdir="$dest"
+      destname=
+    else
+      func_dirname_and_basename "$dest" "" "."
+      destdir="$func_dirname_result"
+      destname="$func_basename_result"
+
+      # Not a directory, so check to see that there is only one file specified.
+      set dummy $files; shift
+      test "$#" -gt 1 && \
+	func_fatal_help "\`$dest' is not a directory"
+    fi
+    case $destdir in
+    [\\/]* | [A-Za-z]:[\\/]*) ;;
+    *)
+      for file in $files; do
+	case $file in
+	*.lo) ;;
+	*)
+	  func_fatal_help "\`$destdir' must be an absolute directory name"
+	  ;;
+	esac
+      done
+      ;;
+    esac
+
+    # This variable tells wrapper scripts just to set variables rather
+    # than running their programs.
+    libtool_install_magic="$magic"
+
+    staticlibs=
+    future_libdirs=
+    current_libdirs=
+    for file in $files; do
+
+      # Do each installation.
+      case $file in
+      *.$libext)
+	# Do the static libraries later.
+	staticlibs="$staticlibs $file"
+	;;
+
+      *.la)
+	# Check to see that this really is a libtool archive.
+	func_lalib_unsafe_p "$file" \
+	  || func_fatal_help "\`$file' is not a valid libtool archive"
+
+	library_names=
+	old_library=
+	relink_command=
+	func_source "$file"
+
+	# Add the libdir to current_libdirs if it is the destination.
+	if test "X$destdir" = "X$libdir"; then
+	  case "$current_libdirs " in
+	  *" $libdir "*) ;;
+	  *) current_libdirs="$current_libdirs $libdir" ;;
+	  esac
+	else
+	  # Note the libdir as a future libdir.
+	  case "$future_libdirs " in
+	  *" $libdir "*) ;;
+	  *) future_libdirs="$future_libdirs $libdir" ;;
+	  esac
+	fi
+
+	func_dirname "$file" "/" ""
+	dir="$func_dirname_result"
+	dir="$dir$objdir"
+
+	if test -n "$relink_command"; then
+	  # Determine the prefix the user has applied to our future dir.
+	  inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"`
+
+	  # Don't allow the user to place us outside of our expected
+	  # location b/c this prevents finding dependent libraries that
+	  # are installed to the same prefix.
+	  # At present, this check doesn't affect windows .dll's that
+	  # are installed into $libdir/../bin (currently, that works fine)
+	  # but it's something to keep an eye on.
+	  test "$inst_prefix_dir" = "$destdir" && \
+	    func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
+
+	  if test -n "$inst_prefix_dir"; then
+	    # Stick the inst_prefix_dir data into the link command.
+	    relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
+	  else
+	    relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"`
+	  fi
+
+	  func_warning "relinking \`$file'"
+	  func_show_eval "$relink_command" \
+	    'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
+	fi
+
+	# See the names of the shared library.
+	set dummy $library_names; shift
+	if test -n "$1"; then
+	  realname="$1"
+	  shift
+
+	  srcname="$realname"
+	  test -n "$relink_command" && srcname="$realname"T
+
+	  # Install the shared library and build the symlinks.
+	  func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \
+	      'exit $?'
+	  tstripme="$stripme"
+	  case $host_os in
+	  cygwin* | mingw* | pw32* | cegcc*)
+	    case $realname in
+	    *.dll.a)
+	      tstripme=""
+	      ;;
+	    esac
+	    ;;
+	  esac
+	  if test -n "$tstripme" && test -n "$striplib"; then
+	    func_show_eval "$striplib $destdir/$realname" 'exit $?'
+	  fi
+
+	  if test "$#" -gt 0; then
+	    # Delete the old symlinks, and create new ones.
+	    # Try `ln -sf' first, because the `ln' binary might depend on
+	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
+	    # so we also need to try rm && ln -s.
+	    for linkname
+	    do
+	      test "$linkname" != "$realname" \
+		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
+	    done
+	  fi
+
+	  # Do each command in the postinstall commands.
+	  lib="$destdir/$realname"
+	  func_execute_cmds "$postinstall_cmds" 'exit $?'
+	fi
+
+	# Install the pseudo-library for information purposes.
+	func_basename "$file"
+	name="$func_basename_result"
+	instname="$dir/$name"i
+	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
+
+	# Maybe install the static library, too.
+	test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
+	;;
+
+      *.lo)
+	# Install (i.e. copy) a libtool object.
+
+	# Figure out destination file name, if it wasn't already specified.
+	if test -n "$destname"; then
+	  destfile="$destdir/$destname"
+	else
+	  func_basename "$file"
+	  destfile="$func_basename_result"
+	  destfile="$destdir/$destfile"
+	fi
+
+	# Deduce the name of the destination old-style object file.
+	case $destfile in
+	*.lo)
+	  func_lo2o "$destfile"
+	  staticdest=$func_lo2o_result
+	  ;;
+	*.$objext)
+	  staticdest="$destfile"
+	  destfile=
+	  ;;
+	*)
+	  func_fatal_help "cannot copy a libtool object to \`$destfile'"
+	  ;;
+	esac
+
+	# Install the libtool object if requested.
+	test -n "$destfile" && \
+	  func_show_eval "$install_prog $file $destfile" 'exit $?'
+
+	# Install the old object if enabled.
+	if test "$build_old_libs" = yes; then
+	  # Deduce the name of the old-style object file.
+	  func_lo2o "$file"
+	  staticobj=$func_lo2o_result
+	  func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
+	fi
+	exit $EXIT_SUCCESS
+	;;
+
+      *)
+	# Figure out destination file name, if it wasn't already specified.
+	if test -n "$destname"; then
+	  destfile="$destdir/$destname"
+	else
+	  func_basename "$file"
+	  destfile="$func_basename_result"
+	  destfile="$destdir/$destfile"
+	fi
+
+	# If the file is missing, and there is a .exe on the end, strip it
+	# because it is most likely a libtool script we actually want to
+	# install
+	stripped_ext=""
+	case $file in
+	  *.exe)
+	    if test ! -f "$file"; then
+	      func_stripname '' '.exe' "$file"
+	      file=$func_stripname_result
+	      stripped_ext=".exe"
+	    fi
+	    ;;
+	esac
+
+	# Do a test to see if this is really a libtool program.
+	case $host in
+	*cygwin* | *mingw*)
+	    if func_ltwrapper_executable_p "$file"; then
+	      func_ltwrapper_scriptname "$file"
+	      wrapper=$func_ltwrapper_scriptname_result
+	    else
+	      func_stripname '' '.exe' "$file"
+	      wrapper=$func_stripname_result
+	    fi
+	    ;;
+	*)
+	    wrapper=$file
+	    ;;
+	esac
+	if func_ltwrapper_script_p "$wrapper"; then
+	  notinst_deplibs=
+	  relink_command=
+
+	  func_source "$wrapper"
+
+	  # Check the variables that should have been set.
+	  test -z "$generated_by_libtool_version" && \
+	    func_fatal_error "invalid libtool wrapper script \`$wrapper'"
+
+	  finalize=yes
+	  for lib in $notinst_deplibs; do
+	    # Check to see that each library is installed.
+	    libdir=
+	    if test -f "$lib"; then
+	      func_source "$lib"
+	    fi
+	    libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
+	    if test -n "$libdir" && test ! -f "$libfile"; then
+	      func_warning "\`$lib' has not been installed in \`$libdir'"
+	      finalize=no
+	    fi
+	  done
+
+	  relink_command=
+	  func_source "$wrapper"
+
+	  outputname=
+	  if test "$fast_install" = no && test -n "$relink_command"; then
+	    $opt_dry_run || {
+	      if test "$finalize" = yes; then
+	        tmpdir=`func_mktempdir`
+		func_basename "$file$stripped_ext"
+		file="$func_basename_result"
+	        outputname="$tmpdir/$file"
+	        # Replace the output file specification.
+	        relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
+
+	        $opt_silent || {
+	          func_quote_for_expand "$relink_command"
+		  eval "func_echo $func_quote_for_expand_result"
+	        }
+	        if eval "$relink_command"; then :
+	          else
+		  func_error "error: relink \`$file' with the above command before installing it"
+		  $opt_dry_run || ${RM}r "$tmpdir"
+		  continue
+	        fi
+	        file="$outputname"
+	      else
+	        func_warning "cannot relink \`$file'"
+	      fi
+	    }
+	  else
+	    # Install the binary that we compiled earlier.
+	    file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
+	  fi
+	fi
+
+	# remove .exe since cygwin /usr/bin/install will append another
+	# one anyway
+	case $install_prog,$host in
+	*/usr/bin/install*,*cygwin*)
+	  case $file:$destfile in
+	  *.exe:*.exe)
+	    # this is ok
+	    ;;
+	  *.exe:*)
+	    destfile=$destfile.exe
+	    ;;
+	  *:*.exe)
+	    func_stripname '' '.exe' "$destfile"
+	    destfile=$func_stripname_result
+	    ;;
+	  esac
+	  ;;
+	esac
+	func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
+	$opt_dry_run || if test -n "$outputname"; then
+	  ${RM}r "$tmpdir"
+	fi
+	;;
+      esac
+    done
+
+    for file in $staticlibs; do
+      func_basename "$file"
+      name="$func_basename_result"
+
+      # Set up the ranlib parameters.
+      oldlib="$destdir/$name"
+
+      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
+
+      if test -n "$stripme" && test -n "$old_striplib"; then
+	func_show_eval "$old_striplib $oldlib" 'exit $?'
+      fi
+
+      # Do each command in the postinstall commands.
+      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
+    done
+
+    test -n "$future_libdirs" && \
+      func_warning "remember to run \`$progname --finish$future_libdirs'"
+
+    if test -n "$current_libdirs"; then
+      # Maybe just do a dry run.
+      $opt_dry_run && current_libdirs=" -n$current_libdirs"
+      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
+    else
+      exit $EXIT_SUCCESS
+    fi
+}
+
+test "$mode" = install && func_mode_install ${1+"$@"}
+
+
+# func_generate_dlsyms outputname originator pic_p
+# Extract symbols from dlprefiles and create ${outputname}S.o with
+# a dlpreopen symbol table.
+func_generate_dlsyms ()
+{
+    $opt_debug
+    my_outputname="$1"
+    my_originator="$2"
+    my_pic_p="${3-no}"
+    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
+    my_dlsyms=
+
+    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+      if test -n "$NM" && test -n "$global_symbol_pipe"; then
+	my_dlsyms="${my_outputname}S.c"
+      else
+	func_error "not configured to extract global symbols from dlpreopened files"
+      fi
+    fi
+
+    if test -n "$my_dlsyms"; then
+      case $my_dlsyms in
+      "") ;;
+      *.c)
+	# Discover the nlist of each of the dlfiles.
+	nlist="$output_objdir/${my_outputname}.nm"
+
+	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
+
+	# Parse the name list into a source file.
+	func_verbose "creating $output_objdir/$my_dlsyms"
+
+	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
+/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
+/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
+
+#ifdef __cplusplus
+extern \"C\" {
+#endif
+
+/* External symbol declarations for the compiler. */\
+"
+
+	if test "$dlself" = yes; then
+	  func_verbose "generating symbol list for \`$output'"
+
+	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
+
+	  # Add our own program objects to the symbol list.
+	  progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+	  for progfile in $progfiles; do
+	    func_verbose "extracting global C symbols from \`$progfile'"
+	    $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'"
+	  done
+
+	  if test -n "$exclude_expsyms"; then
+	    $opt_dry_run || {
+	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
+	      eval '$MV "$nlist"T "$nlist"'
+	    }
+	  fi
+
+	  if test -n "$export_symbols_regex"; then
+	    $opt_dry_run || {
+	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
+	      eval '$MV "$nlist"T "$nlist"'
+	    }
+	  fi
+
+	  # Prepare the list of exported symbols
+	  if test -z "$export_symbols"; then
+	    export_symbols="$output_objdir/$outputname.exp"
+	    $opt_dry_run || {
+	      $RM $export_symbols
+	      eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+	      case $host in
+	      *cygwin* | *mingw* | *cegcc* )
+                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
+	        ;;
+	      esac
+	    }
+	  else
+	    $opt_dry_run || {
+	      eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
+	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
+	      eval '$MV "$nlist"T "$nlist"'
+	      case $host in
+	        *cygwin | *mingw* | *cegcc* )
+	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
+	          ;;
+	      esac
+	    }
+	  fi
+	fi
+
+	for dlprefile in $dlprefiles; do
+	  func_verbose "extracting global C symbols from \`$dlprefile'"
+	  func_basename "$dlprefile"
+	  name="$func_basename_result"
+	  $opt_dry_run || {
+	    eval '$ECHO ": $name " >> "$nlist"'
+	    eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'"
+	  }
+	done
+
+	$opt_dry_run || {
+	  # Make sure we have at least an empty file.
+	  test -f "$nlist" || : > "$nlist"
+
+	  if test -n "$exclude_expsyms"; then
+	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
+	    $MV "$nlist"T "$nlist"
+	  fi
+
+	  # Try sorting and uniquifying the output.
+	  if $GREP -v "^: " < "$nlist" |
+	      if sort -k 3 </dev/null >/dev/null 2>&1; then
+		sort -k 3
+	      else
+		sort +2
+	      fi |
+	      uniq > "$nlist"S; then
+	    :
+	  else
+	    $GREP -v "^: " < "$nlist" > "$nlist"S
+	  fi
+
+	  if test -f "$nlist"S; then
+	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
+	  else
+	    $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms"
+	  fi
+
+	  $ECHO >> "$output_objdir/$my_dlsyms" "\
+
+/* The mapping between symbol names and symbols.  */
+typedef struct {
+  const char *name;
+  void *address;
+} lt_dlsymlist;
+"
+	  case $host in
+	  *cygwin* | *mingw* | *cegcc* )
+	    $ECHO >> "$output_objdir/$my_dlsyms" "\
+/* DATA imports from DLLs on WIN32 con't be const, because
+   runtime relocations are performed -- see ld's documentation
+   on pseudo-relocs.  */"
+	    lt_dlsym_const= ;;
+	  *osf5*)
+	    echo >> "$output_objdir/$my_dlsyms" "\
+/* This system does not cope well with relocations in const data */"
+	    lt_dlsym_const= ;;
+	  *)
+	    lt_dlsym_const=const ;;
+	  esac
+
+	  $ECHO >> "$output_objdir/$my_dlsyms" "\
+extern $lt_dlsym_const lt_dlsymlist
+lt_${my_prefix}_LTX_preloaded_symbols[];
+$lt_dlsym_const lt_dlsymlist
+lt_${my_prefix}_LTX_preloaded_symbols[] =
+{\
+  { \"$my_originator\", (void *) 0 },"
+
+	  case $need_lib_prefix in
+	  no)
+	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
+	    ;;
+	  *)
+	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
+	    ;;
+	  esac
+	  $ECHO >> "$output_objdir/$my_dlsyms" "\
+  {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+  return lt_${my_prefix}_LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif\
+"
+	} # !$opt_dry_run
+
+	pic_flag_for_symtable=
+	case "$compile_command " in
+	*" -static "*) ;;
+	*)
+	  case $host in
+	  # compiling the symbol table file with pic_flag works around
+	  # a FreeBSD bug that causes programs to crash when -lm is
+	  # linked before any other PIC object.  But we must not use
+	  # pic_flag when linking with -static.  The problem exists in
+	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
+	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
+	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
+	  *-*-hpux*)
+	    pic_flag_for_symtable=" $pic_flag"  ;;
+	  *)
+	    if test "X$my_pic_p" != Xno; then
+	      pic_flag_for_symtable=" $pic_flag"
+	    fi
+	    ;;
+	  esac
+	  ;;
+	esac
+	symtab_cflags=
+	for arg in $LTCFLAGS; do
+	  case $arg in
+	  -pie | -fpie | -fPIE) ;;
+	  *) symtab_cflags="$symtab_cflags $arg" ;;
+	  esac
+	done
+
+	# Now compile the dynamic symbol file.
+	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
+
+	# Clean up the generated files.
+	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
+
+	# Transform the symbol file into the correct name.
+	symfileobj="$output_objdir/${my_outputname}S.$objext"
+	case $host in
+	*cygwin* | *mingw* | *cegcc* )
+	  if test -f "$output_objdir/$my_outputname.def"; then
+	    compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
+	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
+	  else
+	    compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
+	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
+	  fi
+	  ;;
+	*)
+	  compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
+	  finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
+	  ;;
+	esac
+	;;
+      *)
+	func_fatal_error "unknown suffix for \`$my_dlsyms'"
+	;;
+      esac
+    else
+      # We keep going just in case the user didn't refer to
+      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
+      # really was required.
+
+      # Nullify the symbol file.
+      compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
+      finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
+    fi
+}
+
+# func_win32_libid arg
+# return the library type of file 'arg'
+#
+# Need a lot of goo to handle *both* DLLs and import libs
+# Has to be a shell function in order to 'eat' the argument
+# that is supplied when $file_magic_command is called.
+func_win32_libid ()
+{
+  $opt_debug
+  win32_libid_type="unknown"
+  win32_fileres=`file -L $1 2>/dev/null`
+  case $win32_fileres in
+  *ar\ archive\ import\ library*) # definitely import
+    win32_libid_type="x86 archive import"
+    ;;
+  *ar\ archive*) # could be an import, or static
+    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
+       $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
+      win32_nmres=`eval $NM -f posix -A $1 |
+	$SED -n -e '
+	    1,100{
+		/ I /{
+		    s,.*,import,
+		    p
+		    q
+		}
+	    }'`
+      case $win32_nmres in
+      import*)  win32_libid_type="x86 archive import";;
+      *)        win32_libid_type="x86 archive static";;
+      esac
+    fi
+    ;;
+  *DLL*)
+    win32_libid_type="x86 DLL"
+    ;;
+  *executable*) # but shell scripts are "executable" too...
+    case $win32_fileres in
+    *MS\ Windows\ PE\ Intel*)
+      win32_libid_type="x86 DLL"
+      ;;
+    esac
+    ;;
+  esac
+  $ECHO "$win32_libid_type"
+}
+
+
+
+# func_extract_an_archive dir oldlib
+func_extract_an_archive ()
+{
+    $opt_debug
+    f_ex_an_ar_dir="$1"; shift
+    f_ex_an_ar_oldlib="$1"
+    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?'
+    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
+     :
+    else
+      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
+    fi
+}
+
+
+# func_extract_archives gentop oldlib ...
+func_extract_archives ()
+{
+    $opt_debug
+    my_gentop="$1"; shift
+    my_oldlibs=${1+"$@"}
+    my_oldobjs=""
+    my_xlib=""
+    my_xabs=""
+    my_xdir=""
+
+    for my_xlib in $my_oldlibs; do
+      # Extract the objects.
+      case $my_xlib in
+	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
+	*) my_xabs=`pwd`"/$my_xlib" ;;
+      esac
+      func_basename "$my_xlib"
+      my_xlib="$func_basename_result"
+      my_xlib_u=$my_xlib
+      while :; do
+        case " $extracted_archives " in
+	*" $my_xlib_u "*)
+	  func_arith $extracted_serial + 1
+	  extracted_serial=$func_arith_result
+	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
+	*) break ;;
+	esac
+      done
+      extracted_archives="$extracted_archives $my_xlib_u"
+      my_xdir="$my_gentop/$my_xlib_u"
+
+      func_mkdir_p "$my_xdir"
+
+      case $host in
+      *-darwin*)
+	func_verbose "Extracting $my_xabs"
+	# Do not bother doing anything if just a dry run
+	$opt_dry_run || {
+	  darwin_orig_dir=`pwd`
+	  cd $my_xdir || exit $?
+	  darwin_archive=$my_xabs
+	  darwin_curdir=`pwd`
+	  darwin_base_archive=`basename "$darwin_archive"`
+	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
+	  if test -n "$darwin_arches"; then
+	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
+	    darwin_arch=
+	    func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
+	    for darwin_arch in  $darwin_arches ; do
+	      func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+	      $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
+	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
+	      cd "$darwin_curdir"
+	      $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
+	    done # $darwin_arches
+            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
+	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
+	    darwin_file=
+	    darwin_files=
+	    for darwin_file in $darwin_filelist; do
+	      darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
+	      $LIPO -create -output "$darwin_file" $darwin_files
+	    done # $darwin_filelist
+	    $RM -rf unfat-$$
+	    cd "$darwin_orig_dir"
+	  else
+	    cd $darwin_orig_dir
+	    func_extract_an_archive "$my_xdir" "$my_xabs"
+	  fi # $darwin_arches
+	} # !$opt_dry_run
+	;;
+      *)
+        func_extract_an_archive "$my_xdir" "$my_xabs"
+	;;
+      esac
+      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
+    done
+
+    func_extract_archives_result="$my_oldobjs"
+}
+
+
+
+# func_emit_wrapper_part1 [arg=no]
+#
+# Emit the first part of a libtool wrapper script on stdout.
+# For more information, see the description associated with
+# func_emit_wrapper(), below.
+func_emit_wrapper_part1 ()
+{
+	func_emit_wrapper_part1_arg1=no
+	if test -n "$1" ; then
+	  func_emit_wrapper_part1_arg1=$1
+	fi
+
+	$ECHO "\
+#! $SHELL
+
+# $output - temporary wrapper script for $objdir/$outputname
+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+#
+# The $output program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='${SED} -e 1s/^X//'
+sed_quote_subst='$sed_quote_subst'
+
+# Be Bourne compatible
+if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
+  setopt NO_GLOB_SUBST
+else
+  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command=\"$relink_command\"
+
+# This environment variable determines our operation mode.
+if test \"\$libtool_install_magic\" = \"$magic\"; then
+  # install mode needs the following variables:
+  generated_by_libtool_version='$macro_version'
+  notinst_deplibs='$notinst_deplibs'
+else
+  # When we are sourced in execute mode, \$file and \$ECHO are already set.
+  if test \"\$libtool_execute_magic\" != \"$magic\"; then
+    ECHO=\"$qecho\"
+    file=\"\$0\"
+    # Make sure echo works.
+    if test \"X\$1\" = X--no-reexec; then
+      # Discard the --no-reexec flag, and continue.
+      shift
+    elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then
+      # Yippee, \$ECHO works!
+      :
+    else
+      # Restart under the correct shell, and then maybe \$ECHO will work.
+      exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
+    fi
+  fi\
+"
+	$ECHO "\
+
+  # Find the directory that this script lives in.
+  thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
+  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
+  while test -n \"\$file\"; do
+    destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
+
+    # If there was a directory component, then change thisdir.
+    if test \"x\$destdir\" != \"x\$file\"; then
+      case \"\$destdir\" in
+      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
+      *) thisdir=\"\$thisdir/\$destdir\" ;;
+      esac
+    fi
+
+    file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
+    file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
+  done
+"
+}
+# end: func_emit_wrapper_part1
+
+# func_emit_wrapper_part2 [arg=no]
+#
+# Emit the second part of a libtool wrapper script on stdout.
+# For more information, see the description associated with
+# func_emit_wrapper(), below.
+func_emit_wrapper_part2 ()
+{
+	func_emit_wrapper_part2_arg1=no
+	if test -n "$1" ; then
+	  func_emit_wrapper_part2_arg1=$1
+	fi
+
+	$ECHO "\
+
+  # Usually 'no', except on cygwin/mingw when embedded into
+  # the cwrapper.
+  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1
+  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
+    # special case for '.'
+    if test \"\$thisdir\" = \".\"; then
+      thisdir=\`pwd\`
+    fi
+    # remove .libs from thisdir
+    case \"\$thisdir\" in
+    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;;
+    $objdir )   thisdir=. ;;
+    esac
+  fi
+
+  # Try to get the absolute directory name.
+  absdir=\`cd \"\$thisdir\" && pwd\`
+  test -n \"\$absdir\" && thisdir=\"\$absdir\"
+"
+
+	if test "$fast_install" = yes; then
+	  $ECHO "\
+  program=lt-'$outputname'$exeext
+  progdir=\"\$thisdir/$objdir\"
+
+  if test ! -f \"\$progdir/\$program\" ||
+     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
+       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
+
+    file=\"\$\$-\$program\"
+
+    if test ! -d \"\$progdir\"; then
+      $MKDIR \"\$progdir\"
+    else
+      $RM \"\$progdir/\$file\"
+    fi"
+
+	  $ECHO "\
+
+    # relink executable if necessary
+    if test -n \"\$relink_command\"; then
+      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
+      else
+	$ECHO \"\$relink_command_output\" >&2
+	$RM \"\$progdir/\$file\"
+	exit 1
+      fi
+    fi
+
+    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
+    { $RM \"\$progdir/\$program\";
+      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
+    $RM \"\$progdir/\$file\"
+  fi"
+	else
+	  $ECHO "\
+  program='$outputname'
+  progdir=\"\$thisdir/$objdir\"
+"
+	fi
+
+	$ECHO "\
+
+  if test -f \"\$progdir/\$program\"; then"
+
+	# Export our shlibpath_var if we have one.
+	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+	  $ECHO "\
+    # Add our own library path to $shlibpath_var
+    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
+
+    # Some systems cannot cope with colon-terminated $shlibpath_var
+    # The second colon is a workaround for a bug in BeOS R4 sed
+    $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
+
+    export $shlibpath_var
+"
+	fi
+
+	# fixup the dll searchpath if we need to.
+	if test -n "$dllsearchpath"; then
+	  $ECHO "\
+    # Add the dll search path components to the executable PATH
+    PATH=$dllsearchpath:\$PATH
+"
+	fi
+
+	$ECHO "\
+    if test \"\$libtool_execute_magic\" != \"$magic\"; then
+      # Run the actual program with our arguments.
+"
+	case $host in
+	# Backslashes separate directories on plain windows
+	*-*-mingw | *-*-os2* | *-cegcc*)
+	  $ECHO "\
+      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
+"
+	  ;;
+
+	*)
+	  $ECHO "\
+      exec \"\$progdir/\$program\" \${1+\"\$@\"}
+"
+	  ;;
+	esac
+	$ECHO "\
+      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
+      exit 1
+    fi
+  else
+    # The program doesn't exist.
+    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
+    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
+    $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
+    exit 1
+  fi
+fi\
+"
+}
+# end: func_emit_wrapper_part2
+
+
+# func_emit_wrapper [arg=no]
+#
+# Emit a libtool wrapper script on stdout.
+# Don't directly open a file because we may want to
+# incorporate the script contents within a cygwin/mingw
+# wrapper executable.  Must ONLY be called from within
+# func_mode_link because it depends on a number of variables
+# set therein.
+#
+# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
+# variable will take.  If 'yes', then the emitted script
+# will assume that the directory in which it is stored is
+# the $objdir directory.  This is a cygwin/mingw-specific
+# behavior.
+func_emit_wrapper ()
+{
+	func_emit_wrapper_arg1=no
+	if test -n "$1" ; then
+	  func_emit_wrapper_arg1=$1
+	fi
+
+	# split this up so that func_emit_cwrapperexe_src
+	# can call each part independently.
+	func_emit_wrapper_part1 "${func_emit_wrapper_arg1}"
+	func_emit_wrapper_part2 "${func_emit_wrapper_arg1}"
+}
+
+
+# func_to_host_path arg
+#
+# Convert paths to host format when used with build tools.
+# Intended for use with "native" mingw (where libtool itself
+# is running under the msys shell), or in the following cross-
+# build environments:
+#    $build          $host
+#    mingw (msys)    mingw  [e.g. native]
+#    cygwin          mingw
+#    *nix + wine     mingw
+# where wine is equipped with the `winepath' executable.
+# In the native mingw case, the (msys) shell automatically
+# converts paths for any non-msys applications it launches,
+# but that facility isn't available from inside the cwrapper.
+# Similar accommodations are necessary for $host mingw and
+# $build cygwin.  Calling this function does no harm for other
+# $host/$build combinations not listed above.
+#
+# ARG is the path (on $build) that should be converted to
+# the proper representation for $host. The result is stored
+# in $func_to_host_path_result.
+func_to_host_path ()
+{
+  func_to_host_path_result="$1"
+  if test -n "$1" ; then
+    case $host in
+      *mingw* )
+        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
+        case $build in
+          *mingw* ) # actually, msys
+            # awkward: cmd appends spaces to result
+            lt_sed_strip_trailing_spaces="s/[ ]*\$//"
+            func_to_host_path_tmp1=`( cmd //c echo "$1" |\
+              $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
+            func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
+              $SED -e "$lt_sed_naive_backslashify"`
+            ;;
+          *cygwin* )
+            func_to_host_path_tmp1=`cygpath -w "$1"`
+            func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
+              $SED -e "$lt_sed_naive_backslashify"`
+            ;;
+          * )
+            # Unfortunately, winepath does not exit with a non-zero
+            # error code, so we are forced to check the contents of
+            # stdout. On the other hand, if the command is not
+            # found, the shell will set an exit code of 127 and print
+            # *an error message* to stdout. So we must check for both
+            # error code of zero AND non-empty stdout, which explains
+            # the odd construction:
+            func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null`
+            if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then
+              func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
+                $SED -e "$lt_sed_naive_backslashify"`
+            else
+              # Allow warning below.
+              func_to_host_path_result=""
+            fi
+            ;;
+        esac
+        if test -z "$func_to_host_path_result" ; then
+          func_error "Could not determine host path corresponding to"
+          func_error "  '$1'"
+          func_error "Continuing, but uninstalled executables may not work."
+          # Fallback:
+          func_to_host_path_result="$1"
+        fi
+        ;;
+    esac
+  fi
+}
+# end: func_to_host_path
+
+# func_to_host_pathlist arg
+#
+# Convert pathlists to host format when used with build tools.
+# See func_to_host_path(), above. This function supports the
+# following $build/$host combinations (but does no harm for
+# combinations not listed here):
+#    $build          $host
+#    mingw (msys)    mingw  [e.g. native]
+#    cygwin          mingw
+#    *nix + wine     mingw
+#
+# Path separators are also converted from $build format to
+# $host format. If ARG begins or ends with a path separator
+# character, it is preserved (but converted to $host format)
+# on output.
+#
+# ARG is a pathlist (on $build) that should be converted to
+# the proper representation on $host. The result is stored
+# in $func_to_host_pathlist_result.
+func_to_host_pathlist ()
+{
+  func_to_host_pathlist_result="$1"
+  if test -n "$1" ; then
+    case $host in
+      *mingw* )
+        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
+        # Remove leading and trailing path separator characters from
+        # ARG. msys behavior is inconsistent here, cygpath turns them
+        # into '.;' and ';.', and winepath ignores them completely.
+        func_to_host_pathlist_tmp2="$1"
+        # Once set for this call, this variable should not be
+        # reassigned. It is used in tha fallback case.
+        func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\
+          $SED -e 's|^:*||' -e 's|:*$||'`
+        case $build in
+          *mingw* ) # Actually, msys.
+            # Awkward: cmd appends spaces to result.
+            lt_sed_strip_trailing_spaces="s/[ ]*\$//"
+            func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\
+              $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
+            func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
+              $SED -e "$lt_sed_naive_backslashify"`
+            ;;
+          *cygwin* )
+            func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"`
+            func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
+              $SED -e "$lt_sed_naive_backslashify"`
+            ;;
+          * )
+            # unfortunately, winepath doesn't convert pathlists
+            func_to_host_pathlist_result=""
+            func_to_host_pathlist_oldIFS=$IFS
+            IFS=:
+            for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do
+              IFS=$func_to_host_pathlist_oldIFS
+              if test -n "$func_to_host_pathlist_f" ; then
+                func_to_host_path "$func_to_host_pathlist_f"
+                if test -n "$func_to_host_path_result" ; then
+                  if test -z "$func_to_host_pathlist_result" ; then
+                    func_to_host_pathlist_result="$func_to_host_path_result"
+                  else
+                    func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result"
+                  fi
+                fi
+              fi
+              IFS=:
+            done
+            IFS=$func_to_host_pathlist_oldIFS
+            ;;
+        esac
+        if test -z "$func_to_host_pathlist_result" ; then
+          func_error "Could not determine the host path(s) corresponding to"
+          func_error "  '$1'"
+          func_error "Continuing, but uninstalled executables may not work."
+          # Fallback. This may break if $1 contains DOS-style drive
+          # specifications. The fix is not to complicate the expression
+          # below, but for the user to provide a working wine installation
+          # with winepath so that path translation in the cross-to-mingw
+          # case works properly.
+          lt_replace_pathsep_nix_to_dos="s|:|;|g"
+          func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\
+            $SED -e "$lt_replace_pathsep_nix_to_dos"`
+        fi
+        # Now, add the leading and trailing path separators back
+        case "$1" in
+          :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result"
+            ;;
+        esac
+        case "$1" in
+          *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;"
+            ;;
+        esac
+        ;;
+    esac
+  fi
+}
+# end: func_to_host_pathlist
+
+# func_emit_cwrapperexe_src
+# emit the source code for a wrapper executable on stdout
+# Must ONLY be called from within func_mode_link because
+# it depends on a number of variable set therein.
+func_emit_cwrapperexe_src ()
+{
+	cat <<EOF
+
+/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
+   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+
+   The $output program cannot be directly executed until all the libtool
+   libraries that it depends on are installed.
+
+   This wrapper executable should never be moved out of the build directory.
+   If it is, it will not operate correctly.
+
+   Currently, it simply execs the wrapper *script* "$SHELL $output",
+   but could eventually absorb all of the scripts functionality and
+   exec $objdir/$outputname directly.
+*/
+EOF
+	    cat <<"EOF"
+#include <stdio.h>
+#include <stdlib.h>
+#ifdef _MSC_VER
+# include <direct.h>
+# include <process.h>
+# include <io.h>
+# define setmode _setmode
+#else
+# include <unistd.h>
+# include <stdint.h>
+# ifdef __CYGWIN__
+#  include <io.h>
+#  define HAVE_SETENV
+#  ifdef __STRICT_ANSI__
+char *realpath (const char *, char *);
+int putenv (char *);
+int setenv (const char *, const char *, int);
+#  endif
+# endif
+#endif
+#include <malloc.h>
+#include <stdarg.h>
+#include <assert.h>
+#include <string.h>
+#include <ctype.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+
+#if defined(PATH_MAX)
+# define LT_PATHMAX PATH_MAX
+#elif defined(MAXPATHLEN)
+# define LT_PATHMAX MAXPATHLEN
+#else
+# define LT_PATHMAX 1024
+#endif
+
+#ifndef S_IXOTH
+# define S_IXOTH 0
+#endif
+#ifndef S_IXGRP
+# define S_IXGRP 0
+#endif
+
+#ifdef _MSC_VER
+# define S_IXUSR _S_IEXEC
+# define stat _stat
+# ifndef _INTPTR_T_DEFINED
+#  define intptr_t int
+# endif
+#endif
+
+#ifndef DIR_SEPARATOR
+# define DIR_SEPARATOR '/'
+# define PATH_SEPARATOR ':'
+#endif
+
+#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
+  defined (__OS2__)
+# define HAVE_DOS_BASED_FILE_SYSTEM
+# define FOPEN_WB "wb"
+# ifndef DIR_SEPARATOR_2
+#  define DIR_SEPARATOR_2 '\\'
+# endif
+# ifndef PATH_SEPARATOR_2
+#  define PATH_SEPARATOR_2 ';'
+# endif
+#endif
+
+#ifndef DIR_SEPARATOR_2
+# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
+#else /* DIR_SEPARATOR_2 */
+# define IS_DIR_SEPARATOR(ch) \
+	(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
+#endif /* DIR_SEPARATOR_2 */
+
+#ifndef PATH_SEPARATOR_2
+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
+#else /* PATH_SEPARATOR_2 */
+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
+#endif /* PATH_SEPARATOR_2 */
+
+#ifdef __CYGWIN__
+# define FOPEN_WB "wb"
+#endif
+
+#ifndef FOPEN_WB
+# define FOPEN_WB "w"
+#endif
+#ifndef _O_BINARY
+# define _O_BINARY 0
+#endif
+
+#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
+#define XFREE(stale) do { \
+  if (stale) { free ((void *) stale); stale = 0; } \
+} while (0)
+
+#undef LTWRAPPER_DEBUGPRINTF
+#if defined DEBUGWRAPPER
+# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args
+static void
+ltwrapper_debugprintf (const char *fmt, ...)
+{
+    va_list args;
+    va_start (args, fmt);
+    (void) vfprintf (stderr, fmt, args);
+    va_end (args);
+}
+#else
+# define LTWRAPPER_DEBUGPRINTF(args)
+#endif
+
+const char *program_name = NULL;
+
+void *xmalloc (size_t num);
+char *xstrdup (const char *string);
+const char *base_name (const char *name);
+char *find_executable (const char *wrapper);
+char *chase_symlinks (const char *pathspec);
+int make_executable (const char *path);
+int check_executable (const char *path);
+char *strendzap (char *str, const char *pat);
+void lt_fatal (const char *message, ...);
+void lt_setenv (const char *name, const char *value);
+char *lt_extend_str (const char *orig_value, const char *add, int to_end);
+void lt_opt_process_env_set (const char *arg);
+void lt_opt_process_env_prepend (const char *arg);
+void lt_opt_process_env_append (const char *arg);
+int lt_split_name_value (const char *arg, char** name, char** value);
+void lt_update_exe_path (const char *name, const char *value);
+void lt_update_lib_path (const char *name, const char *value);
+
+static const char *script_text_part1 =
+EOF
+
+	    func_emit_wrapper_part1 yes |
+	        $SED -e 's/\([\\"]\)/\\\1/g' \
+	             -e 's/^/  "/' -e 's/$/\\n"/'
+	    echo ";"
+	    cat <<EOF
+
+static const char *script_text_part2 =
+EOF
+	    func_emit_wrapper_part2 yes |
+	        $SED -e 's/\([\\"]\)/\\\1/g' \
+	             -e 's/^/  "/' -e 's/$/\\n"/'
+	    echo ";"
+
+	    cat <<EOF
+const char * MAGIC_EXE = "$magic_exe";
+const char * LIB_PATH_VARNAME = "$shlibpath_var";
+EOF
+
+	    if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+              func_to_host_pathlist "$temp_rpath"
+	      cat <<EOF
+const char * LIB_PATH_VALUE   = "$func_to_host_pathlist_result";
+EOF
+	    else
+	      cat <<"EOF"
+const char * LIB_PATH_VALUE   = "";
+EOF
+	    fi
+
+	    if test -n "$dllsearchpath"; then
+              func_to_host_pathlist "$dllsearchpath:"
+	      cat <<EOF
+const char * EXE_PATH_VARNAME = "PATH";
+const char * EXE_PATH_VALUE   = "$func_to_host_pathlist_result";
+EOF
+	    else
+	      cat <<"EOF"
+const char * EXE_PATH_VARNAME = "";
+const char * EXE_PATH_VALUE   = "";
+EOF
+	    fi
+
+	    if test "$fast_install" = yes; then
+	      cat <<EOF
+const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
+EOF
+	    else
+	      cat <<EOF
+const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
+EOF
+	    fi
+
+
+	    cat <<"EOF"
+
+#define LTWRAPPER_OPTION_PREFIX         "--lt-"
+#define LTWRAPPER_OPTION_PREFIX_LENGTH  5
+
+static const size_t opt_prefix_len         = LTWRAPPER_OPTION_PREFIX_LENGTH;
+static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
+
+static const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
+
+static const size_t env_set_opt_len     = LTWRAPPER_OPTION_PREFIX_LENGTH + 7;
+static const char *env_set_opt          = LTWRAPPER_OPTION_PREFIX "env-set";
+  /* argument is putenv-style "foo=bar", value of foo is set to bar */
+
+static const size_t env_prepend_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 11;
+static const char *env_prepend_opt      = LTWRAPPER_OPTION_PREFIX "env-prepend";
+  /* argument is putenv-style "foo=bar", new value of foo is bar${foo} */
+
+static const size_t env_append_opt_len  = LTWRAPPER_OPTION_PREFIX_LENGTH + 10;
+static const char *env_append_opt       = LTWRAPPER_OPTION_PREFIX "env-append";
+  /* argument is putenv-style "foo=bar", new value of foo is ${foo}bar */
+
+int
+main (int argc, char *argv[])
+{
+  char **newargz;
+  int  newargc;
+  char *tmp_pathspec;
+  char *actual_cwrapper_path;
+  char *actual_cwrapper_name;
+  char *target_name;
+  char *lt_argv_zero;
+  intptr_t rval = 127;
+
+  int i;
+
+  program_name = (char *) xstrdup (base_name (argv[0]));
+  LTWRAPPER_DEBUGPRINTF (("(main) argv[0]      : %s\n", argv[0]));
+  LTWRAPPER_DEBUGPRINTF (("(main) program_name : %s\n", program_name));
+
+  /* very simple arg parsing; don't want to rely on getopt */
+  for (i = 1; i < argc; i++)
+    {
+      if (strcmp (argv[i], dumpscript_opt) == 0)
+	{
+EOF
+	    case "$host" in
+	      *mingw* | *cygwin* )
+		# make stdout use "unix" line endings
+		echo "          setmode(1,_O_BINARY);"
+		;;
+	      esac
+
+	    cat <<"EOF"
+	  printf ("%s", script_text_part1);
+	  printf ("%s", script_text_part2);
+	  return 0;
+	}
+    }
+
+  newargz = XMALLOC (char *, argc + 1);
+  tmp_pathspec = find_executable (argv[0]);
+  if (tmp_pathspec == NULL)
+    lt_fatal ("Couldn't find %s", argv[0]);
+  LTWRAPPER_DEBUGPRINTF (("(main) found exe (before symlink chase) at : %s\n",
+			  tmp_pathspec));
+
+  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
+  LTWRAPPER_DEBUGPRINTF (("(main) found exe (after symlink chase) at : %s\n",
+			  actual_cwrapper_path));
+  XFREE (tmp_pathspec);
+
+  actual_cwrapper_name = xstrdup( base_name (actual_cwrapper_path));
+  strendzap (actual_cwrapper_path, actual_cwrapper_name);
+
+  /* wrapper name transforms */
+  strendzap (actual_cwrapper_name, ".exe");
+  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
+  XFREE (actual_cwrapper_name);
+  actual_cwrapper_name = tmp_pathspec;
+  tmp_pathspec = 0;
+
+  /* target_name transforms -- use actual target program name; might have lt- prefix */
+  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
+  strendzap (target_name, ".exe");
+  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
+  XFREE (target_name);
+  target_name = tmp_pathspec;
+  tmp_pathspec = 0;
+
+  LTWRAPPER_DEBUGPRINTF (("(main) libtool target name: %s\n",
+			  target_name));
+EOF
+
+	    cat <<EOF
+  newargz[0] =
+    XMALLOC (char, (strlen (actual_cwrapper_path) +
+		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
+  strcpy (newargz[0], actual_cwrapper_path);
+  strcat (newargz[0], "$objdir");
+  strcat (newargz[0], "/");
+EOF
+
+	    cat <<"EOF"
+  /* stop here, and copy so we don't have to do this twice */
+  tmp_pathspec = xstrdup (newargz[0]);
+
+  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
+  strcat (newargz[0], actual_cwrapper_name);
+
+  /* DO want the lt- prefix here if it exists, so use target_name */
+  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
+  XFREE (tmp_pathspec);
+  tmp_pathspec = NULL;
+EOF
+
+	    case $host_os in
+	      mingw*)
+	    cat <<"EOF"
+  {
+    char* p;
+    while ((p = strchr (newargz[0], '\\')) != NULL)
+      {
+	*p = '/';
+      }
+    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
+      {
+	*p = '/';
+      }
+  }
+EOF
+	    ;;
+	    esac
+
+	    cat <<"EOF"
+  XFREE (target_name);
+  XFREE (actual_cwrapper_path);
+  XFREE (actual_cwrapper_name);
+
+  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
+  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
+  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
+  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
+
+  newargc=0;
+  for (i = 1; i < argc; i++)
+    {
+      if (strncmp (argv[i], env_set_opt, env_set_opt_len) == 0)
+        {
+          if (argv[i][env_set_opt_len] == '=')
+            {
+              const char *p = argv[i] + env_set_opt_len + 1;
+              lt_opt_process_env_set (p);
+            }
+          else if (argv[i][env_set_opt_len] == '\0' && i + 1 < argc)
+            {
+              lt_opt_process_env_set (argv[++i]); /* don't copy */
+            }
+          else
+            lt_fatal ("%s missing required argument", env_set_opt);
+          continue;
+        }
+      if (strncmp (argv[i], env_prepend_opt, env_prepend_opt_len) == 0)
+        {
+          if (argv[i][env_prepend_opt_len] == '=')
+            {
+              const char *p = argv[i] + env_prepend_opt_len + 1;
+              lt_opt_process_env_prepend (p);
+            }
+          else if (argv[i][env_prepend_opt_len] == '\0' && i + 1 < argc)
+            {
+              lt_opt_process_env_prepend (argv[++i]); /* don't copy */
+            }
+          else
+            lt_fatal ("%s missing required argument", env_prepend_opt);
+          continue;
+        }
+      if (strncmp (argv[i], env_append_opt, env_append_opt_len) == 0)
+        {
+          if (argv[i][env_append_opt_len] == '=')
+            {
+              const char *p = argv[i] + env_append_opt_len + 1;
+              lt_opt_process_env_append (p);
+            }
+          else if (argv[i][env_append_opt_len] == '\0' && i + 1 < argc)
+            {
+              lt_opt_process_env_append (argv[++i]); /* don't copy */
+            }
+          else
+            lt_fatal ("%s missing required argument", env_append_opt);
+          continue;
+        }
+      if (strncmp (argv[i], ltwrapper_option_prefix, opt_prefix_len) == 0)
+        {
+          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
+             namespace, but it is not one of the ones we know about and
+             have already dealt with, above (inluding dump-script), then
+             report an error. Otherwise, targets might begin to believe
+             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
+             namespace. The first time any user complains about this, we'll
+             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
+             or a configure.ac-settable value.
+           */
+          lt_fatal ("Unrecognized option in %s namespace: '%s'",
+                    ltwrapper_option_prefix, argv[i]);
+        }
+      /* otherwise ... */
+      newargz[++newargc] = xstrdup (argv[i]);
+    }
+  newargz[++newargc] = NULL;
+
+  LTWRAPPER_DEBUGPRINTF     (("(main) lt_argv_zero : %s\n", (lt_argv_zero ? lt_argv_zero : "<NULL>")));
+  for (i = 0; i < newargc; i++)
+    {
+      LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d]   : %s\n", i, (newargz[i] ? newargz[i] : "<NULL>")));
+    }
+
+EOF
+
+	    case $host_os in
+	      mingw*)
+		cat <<"EOF"
+  /* execv doesn't actually work on mingw as expected on unix */
+  rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
+  if (rval == -1)
+    {
+      /* failed to start process */
+      LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno));
+      return 127;
+    }
+  return rval;
+EOF
+		;;
+	      *)
+		cat <<"EOF"
+  execv (lt_argv_zero, newargz);
+  return rval; /* =127, but avoids unused variable warning */
+EOF
+		;;
+	    esac
+
+	    cat <<"EOF"
+}
+
+void *
+xmalloc (size_t num)
+{
+  void *p = (void *) malloc (num);
+  if (!p)
+    lt_fatal ("Memory exhausted");
+
+  return p;
+}
+
+char *
+xstrdup (const char *string)
+{
+  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
+			  string) : NULL;
+}
+
+const char *
+base_name (const char *name)
+{
+  const char *base;
+
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+  /* Skip over the disk name in MSDOS pathnames. */
+  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
+    name += 2;
+#endif
+
+  for (base = name; *name; name++)
+    if (IS_DIR_SEPARATOR (*name))
+      base = name + 1;
+  return base;
+}
+
+int
+check_executable (const char *path)
+{
+  struct stat st;
+
+  LTWRAPPER_DEBUGPRINTF (("(check_executable)  : %s\n",
+			  path ? (*path ? path : "EMPTY!") : "NULL!"));
+  if ((!path) || (!*path))
+    return 0;
+
+  if ((stat (path, &st) >= 0)
+      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
+    return 1;
+  else
+    return 0;
+}
+
+int
+make_executable (const char *path)
+{
+  int rval = 0;
+  struct stat st;
+
+  LTWRAPPER_DEBUGPRINTF (("(make_executable)   : %s\n",
+			  path ? (*path ? path : "EMPTY!") : "NULL!"));
+  if ((!path) || (!*path))
+    return 0;
+
+  if (stat (path, &st) >= 0)
+    {
+      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
+    }
+  return rval;
+}
+
+/* Searches for the full path of the wrapper.  Returns
+   newly allocated full path name if found, NULL otherwise
+   Does not chase symlinks, even on platforms that support them.
+*/
+char *
+find_executable (const char *wrapper)
+{
+  int has_slash = 0;
+  const char *p;
+  const char *p_next;
+  /* static buffer for getcwd */
+  char tmp[LT_PATHMAX + 1];
+  int tmp_len;
+  char *concat_name;
+
+  LTWRAPPER_DEBUGPRINTF (("(find_executable)   : %s\n",
+			  wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"));
+
+  if ((wrapper == NULL) || (*wrapper == '\0'))
+    return NULL;
+
+  /* Absolute path? */
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
+    {
+      concat_name = xstrdup (wrapper);
+      if (check_executable (concat_name))
+	return concat_name;
+      XFREE (concat_name);
+    }
+  else
+    {
+#endif
+      if (IS_DIR_SEPARATOR (wrapper[0]))
+	{
+	  concat_name = xstrdup (wrapper);
+	  if (check_executable (concat_name))
+	    return concat_name;
+	  XFREE (concat_name);
+	}
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+    }
+#endif
+
+  for (p = wrapper; *p; p++)
+    if (*p == '/')
+      {
+	has_slash = 1;
+	break;
+      }
+  if (!has_slash)
+    {
+      /* no slashes; search PATH */
+      const char *path = getenv ("PATH");
+      if (path != NULL)
+	{
+	  for (p = path; *p; p = p_next)
+	    {
+	      const char *q;
+	      size_t p_len;
+	      for (q = p; *q; q++)
+		if (IS_PATH_SEPARATOR (*q))
+		  break;
+	      p_len = q - p;
+	      p_next = (*q == '\0' ? q : q + 1);
+	      if (p_len == 0)
+		{
+		  /* empty path: current directory */
+		  if (getcwd (tmp, LT_PATHMAX) == NULL)
+		    lt_fatal ("getcwd failed");
+		  tmp_len = strlen (tmp);
+		  concat_name =
+		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
+		  memcpy (concat_name, tmp, tmp_len);
+		  concat_name[tmp_len] = '/';
+		  strcpy (concat_name + tmp_len + 1, wrapper);
+		}
+	      else
+		{
+		  concat_name =
+		    XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
+		  memcpy (concat_name, p, p_len);
+		  concat_name[p_len] = '/';
+		  strcpy (concat_name + p_len + 1, wrapper);
+		}
+	      if (check_executable (concat_name))
+		return concat_name;
+	      XFREE (concat_name);
+	    }
+	}
+      /* not found in PATH; assume curdir */
+    }
+  /* Relative path | not found in path: prepend cwd */
+  if (getcwd (tmp, LT_PATHMAX) == NULL)
+    lt_fatal ("getcwd failed");
+  tmp_len = strlen (tmp);
+  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
+  memcpy (concat_name, tmp, tmp_len);
+  concat_name[tmp_len] = '/';
+  strcpy (concat_name + tmp_len + 1, wrapper);
+
+  if (check_executable (concat_name))
+    return concat_name;
+  XFREE (concat_name);
+  return NULL;
+}
+
+char *
+chase_symlinks (const char *pathspec)
+{
+#ifndef S_ISLNK
+  return xstrdup (pathspec);
+#else
+  char buf[LT_PATHMAX];
+  struct stat s;
+  char *tmp_pathspec = xstrdup (pathspec);
+  char *p;
+  int has_symlinks = 0;
+  while (strlen (tmp_pathspec) && !has_symlinks)
+    {
+      LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n",
+			      tmp_pathspec));
+      if (lstat (tmp_pathspec, &s) == 0)
+	{
+	  if (S_ISLNK (s.st_mode) != 0)
+	    {
+	      has_symlinks = 1;
+	      break;
+	    }
+
+	  /* search backwards for last DIR_SEPARATOR */
+	  p = tmp_pathspec + strlen (tmp_pathspec) - 1;
+	  while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
+	    p--;
+	  if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
+	    {
+	      /* no more DIR_SEPARATORS left */
+	      break;
+	    }
+	  *p = '\0';
+	}
+      else
+	{
+	  char *errstr = strerror (errno);
+	  lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr);
+	}
+    }
+  XFREE (tmp_pathspec);
+
+  if (!has_symlinks)
+    {
+      return xstrdup (pathspec);
+    }
+
+  tmp_pathspec = realpath (pathspec, buf);
+  if (tmp_pathspec == 0)
+    {
+      lt_fatal ("Could not follow symlinks for %s", pathspec);
+    }
+  return xstrdup (tmp_pathspec);
+#endif
+}
+
+char *
+strendzap (char *str, const char *pat)
+{
+  size_t len, patlen;
+
+  assert (str != NULL);
+  assert (pat != NULL);
+
+  len = strlen (str);
+  patlen = strlen (pat);
+
+  if (patlen <= len)
+    {
+      str += len - patlen;
+      if (strcmp (str, pat) == 0)
+	*str = '\0';
+    }
+  return str;
+}
+
+static void
+lt_error_core (int exit_status, const char *mode,
+	       const char *message, va_list ap)
+{
+  fprintf (stderr, "%s: %s: ", program_name, mode);
+  vfprintf (stderr, message, ap);
+  fprintf (stderr, ".\n");
+
+  if (exit_status >= 0)
+    exit (exit_status);
+}
+
+void
+lt_fatal (const char *message, ...)
+{
+  va_list ap;
+  va_start (ap, message);
+  lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
+  va_end (ap);
+}
+
+void
+lt_setenv (const char *name, const char *value)
+{
+  LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n",
+                          (name ? name : "<NULL>"),
+                          (value ? value : "<NULL>")));
+  {
+#ifdef HAVE_SETENV
+    /* always make a copy, for consistency with !HAVE_SETENV */
+    char *str = xstrdup (value);
+    setenv (name, str, 1);
+#else
+    int len = strlen (name) + 1 + strlen (value) + 1;
+    char *str = XMALLOC (char, len);
+    sprintf (str, "%s=%s", name, value);
+    if (putenv (str) != EXIT_SUCCESS)
+      {
+        XFREE (str);
+      }
+#endif
+  }
+}
+
+char *
+lt_extend_str (const char *orig_value, const char *add, int to_end)
+{
+  char *new_value;
+  if (orig_value && *orig_value)
+    {
+      int orig_value_len = strlen (orig_value);
+      int add_len = strlen (add);
+      new_value = XMALLOC (char, add_len + orig_value_len + 1);
+      if (to_end)
+        {
+          strcpy (new_value, orig_value);
+          strcpy (new_value + orig_value_len, add);
+        }
+      else
+        {
+          strcpy (new_value, add);
+          strcpy (new_value + add_len, orig_value);
+        }
+    }
+  else
+    {
+      new_value = xstrdup (add);
+    }
+  return new_value;
+}
+
+int
+lt_split_name_value (const char *arg, char** name, char** value)
+{
+  const char *p;
+  int len;
+  if (!arg || !*arg)
+    return 1;
+
+  p = strchr (arg, (int)'=');
+
+  if (!p)
+    return 1;
+
+  *value = xstrdup (++p);
+
+  len = strlen (arg) - strlen (*value);
+  *name = XMALLOC (char, len);
+  strncpy (*name, arg, len-1);
+  (*name)[len - 1] = '\0';
+
+  return 0;
+}
+
+void
+lt_opt_process_env_set (const char *arg)
+{
+  char *name = NULL;
+  char *value = NULL;
+
+  if (lt_split_name_value (arg, &name, &value) != 0)
+    {
+      XFREE (name);
+      XFREE (value);
+      lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg);
+    }
+
+  lt_setenv (name, value);
+  XFREE (name);
+  XFREE (value);
+}
+
+void
+lt_opt_process_env_prepend (const char *arg)
+{
+  char *name = NULL;
+  char *value = NULL;
+  char *new_value = NULL;
+
+  if (lt_split_name_value (arg, &name, &value) != 0)
+    {
+      XFREE (name);
+      XFREE (value);
+      lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg);
+    }
+
+  new_value = lt_extend_str (getenv (name), value, 0);
+  lt_setenv (name, new_value);
+  XFREE (new_value);
+  XFREE (name);
+  XFREE (value);
+}
+
+void
+lt_opt_process_env_append (const char *arg)
+{
+  char *name = NULL;
+  char *value = NULL;
+  char *new_value = NULL;
+
+  if (lt_split_name_value (arg, &name, &value) != 0)
+    {
+      XFREE (name);
+      XFREE (value);
+      lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg);
+    }
+
+  new_value = lt_extend_str (getenv (name), value, 1);
+  lt_setenv (name, new_value);
+  XFREE (new_value);
+  XFREE (name);
+  XFREE (value);
+}
+
+void
+lt_update_exe_path (const char *name, const char *value)
+{
+  LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
+                          (name ? name : "<NULL>"),
+                          (value ? value : "<NULL>")));
+
+  if (name && *name && value && *value)
+    {
+      char *new_value = lt_extend_str (getenv (name), value, 0);
+      /* some systems can't cope with a ':'-terminated path #' */
+      int len = strlen (new_value);
+      while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
+        {
+          new_value[len-1] = '\0';
+        }
+      lt_setenv (name, new_value);
+      XFREE (new_value);
+    }
+}
+
+void
+lt_update_lib_path (const char *name, const char *value)
+{
+  LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
+                          (name ? name : "<NULL>"),
+                          (value ? value : "<NULL>")));
+
+  if (name && *name && value && *value)
+    {
+      char *new_value = lt_extend_str (getenv (name), value, 0);
+      lt_setenv (name, new_value);
+      XFREE (new_value);
+    }
+}
+
+
+EOF
+}
+# end: func_emit_cwrapperexe_src
+
+# func_mode_link arg...
+func_mode_link ()
+{
+    $opt_debug
+    case $host in
+    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+      # It is impossible to link a dll without this setting, and
+      # we shouldn't force the makefile maintainer to figure out
+      # which system we are compiling for in order to pass an extra
+      # flag for every libtool invocation.
+      # allow_undefined=no
+
+      # FIXME: Unfortunately, there are problems with the above when trying
+      # to make a dll which has undefined symbols, in which case not
+      # even a static library is built.  For now, we need to specify
+      # -no-undefined on the libtool link line when we can be certain
+      # that all symbols are satisfied, otherwise we get a static library.
+      allow_undefined=yes
+      ;;
+    *)
+      allow_undefined=yes
+      ;;
+    esac
+    libtool_args=$nonopt
+    base_compile="$nonopt $@"
+    compile_command=$nonopt
+    finalize_command=$nonopt
+
+    compile_rpath=
+    finalize_rpath=
+    compile_shlibpath=
+    finalize_shlibpath=
+    convenience=
+    old_convenience=
+    deplibs=
+    old_deplibs=
+    compiler_flags=
+    linker_flags=
+    dllsearchpath=
+    lib_search_path=`pwd`
+    inst_prefix_dir=
+    new_inherited_linker_flags=
+
+    avoid_version=no
+    dlfiles=
+    dlprefiles=
+    dlself=no
+    export_dynamic=no
+    export_symbols=
+    export_symbols_regex=
+    generated=
+    libobjs=
+    ltlibs=
+    module=no
+    no_install=no
+    objs=
+    non_pic_objects=
+    precious_files_regex=
+    prefer_static_libs=no
+    preload=no
+    prev=
+    prevarg=
+    release=
+    rpath=
+    xrpath=
+    perm_rpath=
+    temp_rpath=
+    thread_safe=no
+    vinfo=
+    vinfo_number=no
+    weak_libs=
+    single_module="${wl}-single_module"
+    func_infer_tag $base_compile
+
+    # We need to know -static, to get the right output filenames.
+    for arg
+    do
+      case $arg in
+      -shared)
+	test "$build_libtool_libs" != yes && \
+	  func_fatal_configuration "can not build a shared library"
+	build_old_libs=no
+	break
+	;;
+      -all-static | -static | -static-libtool-libs)
+	case $arg in
+	-all-static)
+	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
+	    func_warning "complete static linking is impossible in this configuration"
+	  fi
+	  if test -n "$link_static_flag"; then
+	    dlopen_self=$dlopen_self_static
+	  fi
+	  prefer_static_libs=yes
+	  ;;
+	-static)
+	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
+	    dlopen_self=$dlopen_self_static
+	  fi
+	  prefer_static_libs=built
+	  ;;
+	-static-libtool-libs)
+	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
+	    dlopen_self=$dlopen_self_static
+	  fi
+	  prefer_static_libs=yes
+	  ;;
+	esac
+	build_libtool_libs=no
+	build_old_libs=yes
+	break
+	;;
+      esac
+    done
+
+    # See if our shared archives depend on static archives.
+    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
+
+    # Go through the arguments, transforming them on the way.
+    while test "$#" -gt 0; do
+      arg="$1"
+      shift
+      func_quote_for_eval "$arg"
+      qarg=$func_quote_for_eval_unquoted_result
+      func_append libtool_args " $func_quote_for_eval_result"
+
+      # If the previous option needs an argument, assign it.
+      if test -n "$prev"; then
+	case $prev in
+	output)
+	  func_append compile_command " @OUTPUT@"
+	  func_append finalize_command " @OUTPUT@"
+	  ;;
+	esac
+
+	case $prev in
+	dlfiles|dlprefiles)
+	  if test "$preload" = no; then
+	    # Add the symbol object into the linking commands.
+	    func_append compile_command " @SYMFILE@"
+	    func_append finalize_command " @SYMFILE@"
+	    preload=yes
+	  fi
+	  case $arg in
+	  *.la | *.lo) ;;  # We handle these cases below.
+	  force)
+	    if test "$dlself" = no; then
+	      dlself=needless
+	      export_dynamic=yes
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  self)
+	    if test "$prev" = dlprefiles; then
+	      dlself=yes
+	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
+	      dlself=yes
+	    else
+	      dlself=needless
+	      export_dynamic=yes
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  *)
+	    if test "$prev" = dlfiles; then
+	      dlfiles="$dlfiles $arg"
+	    else
+	      dlprefiles="$dlprefiles $arg"
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  esac
+	  ;;
+	expsyms)
+	  export_symbols="$arg"
+	  test -f "$arg" \
+	    || func_fatal_error "symbol file \`$arg' does not exist"
+	  prev=
+	  continue
+	  ;;
+	expsyms_regex)
+	  export_symbols_regex="$arg"
+	  prev=
+	  continue
+	  ;;
+	framework)
+	  case $host in
+	    *-*-darwin*)
+	      case "$deplibs " in
+		*" $qarg.ltframework "*) ;;
+		*) deplibs="$deplibs $qarg.ltframework" # this is fixed later
+		   ;;
+	      esac
+	      ;;
+	  esac
+	  prev=
+	  continue
+	  ;;
+	inst_prefix)
+	  inst_prefix_dir="$arg"
+	  prev=
+	  continue
+	  ;;
+	objectlist)
+	  if test -f "$arg"; then
+	    save_arg=$arg
+	    moreargs=
+	    for fil in `cat "$save_arg"`
+	    do
+#	      moreargs="$moreargs $fil"
+	      arg=$fil
+	      # A libtool-controlled object.
+
+	      # Check to see that this really is a libtool object.
+	      if func_lalib_unsafe_p "$arg"; then
+		pic_object=
+		non_pic_object=
+
+		# Read the .lo file
+		func_source "$arg"
+
+		if test -z "$pic_object" ||
+		   test -z "$non_pic_object" ||
+		   test "$pic_object" = none &&
+		   test "$non_pic_object" = none; then
+		  func_fatal_error "cannot find name of object for \`$arg'"
+		fi
+
+		# Extract subdirectory from the argument.
+		func_dirname "$arg" "/" ""
+		xdir="$func_dirname_result"
+
+		if test "$pic_object" != none; then
+		  # Prepend the subdirectory the object is found in.
+		  pic_object="$xdir$pic_object"
+
+		  if test "$prev" = dlfiles; then
+		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+		      dlfiles="$dlfiles $pic_object"
+		      prev=
+		      continue
+		    else
+		      # If libtool objects are unsupported, then we need to preload.
+		      prev=dlprefiles
+		    fi
+		  fi
+
+		  # CHECK ME:  I think I busted this.  -Ossama
+		  if test "$prev" = dlprefiles; then
+		    # Preload the old-style object.
+		    dlprefiles="$dlprefiles $pic_object"
+		    prev=
+		  fi
+
+		  # A PIC object.
+		  func_append libobjs " $pic_object"
+		  arg="$pic_object"
+		fi
+
+		# Non-PIC object.
+		if test "$non_pic_object" != none; then
+		  # Prepend the subdirectory the object is found in.
+		  non_pic_object="$xdir$non_pic_object"
+
+		  # A standard non-PIC object
+		  func_append non_pic_objects " $non_pic_object"
+		  if test -z "$pic_object" || test "$pic_object" = none ; then
+		    arg="$non_pic_object"
+		  fi
+		else
+		  # If the PIC object exists, use it instead.
+		  # $xdir was prepended to $pic_object above.
+		  non_pic_object="$pic_object"
+		  func_append non_pic_objects " $non_pic_object"
+		fi
+	      else
+		# Only an error if not doing a dry-run.
+		if $opt_dry_run; then
+		  # Extract subdirectory from the argument.
+		  func_dirname "$arg" "/" ""
+		  xdir="$func_dirname_result"
+
+		  func_lo2o "$arg"
+		  pic_object=$xdir$objdir/$func_lo2o_result
+		  non_pic_object=$xdir$func_lo2o_result
+		  func_append libobjs " $pic_object"
+		  func_append non_pic_objects " $non_pic_object"
+	        else
+		  func_fatal_error "\`$arg' is not a valid libtool object"
+		fi
+	      fi
+	    done
+	  else
+	    func_fatal_error "link input file \`$arg' does not exist"
+	  fi
+	  arg=$save_arg
+	  prev=
+	  continue
+	  ;;
+	precious_regex)
+	  precious_files_regex="$arg"
+	  prev=
+	  continue
+	  ;;
+	release)
+	  release="-$arg"
+	  prev=
+	  continue
+	  ;;
+	rpath | xrpath)
+	  # We need an absolute path.
+	  case $arg in
+	  [\\/]* | [A-Za-z]:[\\/]*) ;;
+	  *)
+	    func_fatal_error "only absolute run-paths are allowed"
+	    ;;
+	  esac
+	  if test "$prev" = rpath; then
+	    case "$rpath " in
+	    *" $arg "*) ;;
+	    *) rpath="$rpath $arg" ;;
+	    esac
+	  else
+	    case "$xrpath " in
+	    *" $arg "*) ;;
+	    *) xrpath="$xrpath $arg" ;;
+	    esac
+	  fi
+	  prev=
+	  continue
+	  ;;
+	shrext)
+	  shrext_cmds="$arg"
+	  prev=
+	  continue
+	  ;;
+	weak)
+	  weak_libs="$weak_libs $arg"
+	  prev=
+	  continue
+	  ;;
+	xcclinker)
+	  linker_flags="$linker_flags $qarg"
+	  compiler_flags="$compiler_flags $qarg"
+	  prev=
+	  func_append compile_command " $qarg"
+	  func_append finalize_command " $qarg"
+	  continue
+	  ;;
+	xcompiler)
+	  compiler_flags="$compiler_flags $qarg"
+	  prev=
+	  func_append compile_command " $qarg"
+	  func_append finalize_command " $qarg"
+	  continue
+	  ;;
+	xlinker)
+	  linker_flags="$linker_flags $qarg"
+	  compiler_flags="$compiler_flags $wl$qarg"
+	  prev=
+	  func_append compile_command " $wl$qarg"
+	  func_append finalize_command " $wl$qarg"
+	  continue
+	  ;;
+	*)
+	  eval "$prev=\"\$arg\""
+	  prev=
+	  continue
+	  ;;
+	esac
+      fi # test -n "$prev"
+
+      prevarg="$arg"
+
+      case $arg in
+      -all-static)
+	if test -n "$link_static_flag"; then
+	  # See comment for -static flag below, for more details.
+	  func_append compile_command " $link_static_flag"
+	  func_append finalize_command " $link_static_flag"
+	fi
+	continue
+	;;
+
+      -allow-undefined)
+	# FIXME: remove this flag sometime in the future.
+	func_fatal_error "\`-allow-undefined' must not be used because it is the default"
+	;;
+
+      -avoid-version)
+	avoid_version=yes
+	continue
+	;;
+
+      -dlopen)
+	prev=dlfiles
+	continue
+	;;
+
+      -dlpreopen)
+	prev=dlprefiles
+	continue
+	;;
+
+      -export-dynamic)
+	export_dynamic=yes
+	continue
+	;;
+
+      -export-symbols | -export-symbols-regex)
+	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+	  func_fatal_error "more than one -exported-symbols argument is not allowed"
+	fi
+	if test "X$arg" = "X-export-symbols"; then
+	  prev=expsyms
+	else
+	  prev=expsyms_regex
+	fi
+	continue
+	;;
+
+      -framework)
+	prev=framework
+	continue
+	;;
+
+      -inst-prefix-dir)
+	prev=inst_prefix
+	continue
+	;;
+
+      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
+      # so, if we see these flags be careful not to treat them like -L
+      -L[A-Z][A-Z]*:*)
+	case $with_gcc/$host in
+	no/*-*-irix* | /*-*-irix*)
+	  func_append compile_command " $arg"
+	  func_append finalize_command " $arg"
+	  ;;
+	esac
+	continue
+	;;
+
+      -L*)
+	func_stripname '-L' '' "$arg"
+	dir=$func_stripname_result
+	if test -z "$dir"; then
+	  if test "$#" -gt 0; then
+	    func_fatal_error "require no space between \`-L' and \`$1'"
+	  else
+	    func_fatal_error "need path for \`-L' option"
+	  fi
+	fi
+	# We need an absolute path.
+	case $dir in
+	[\\/]* | [A-Za-z]:[\\/]*) ;;
+	*)
+	  absdir=`cd "$dir" && pwd`
+	  test -z "$absdir" && \
+	    func_fatal_error "cannot determine absolute directory name of \`$dir'"
+	  dir="$absdir"
+	  ;;
+	esac
+	case "$deplibs " in
+	*" -L$dir "*) ;;
+	*)
+	  deplibs="$deplibs -L$dir"
+	  lib_search_path="$lib_search_path $dir"
+	  ;;
+	esac
+	case $host in
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+	  testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'`
+	  case :$dllsearchpath: in
+	  *":$dir:"*) ;;
+	  ::) dllsearchpath=$dir;;
+	  *) dllsearchpath="$dllsearchpath:$dir";;
+	  esac
+	  case :$dllsearchpath: in
+	  *":$testbindir:"*) ;;
+	  ::) dllsearchpath=$testbindir;;
+	  *) dllsearchpath="$dllsearchpath:$testbindir";;
+	  esac
+	  ;;
+	esac
+	continue
+	;;
+
+      -l*)
+	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
+	  case $host in
+	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*)
+	    # These systems don't actually have a C or math library (as such)
+	    continue
+	    ;;
+	  *-*-os2*)
+	    # These systems don't actually have a C library (as such)
+	    test "X$arg" = "X-lc" && continue
+	    ;;
+	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+	    # Do not include libc due to us having libc/libc_r.
+	    test "X$arg" = "X-lc" && continue
+	    ;;
+	  *-*-rhapsody* | *-*-darwin1.[012])
+	    # Rhapsody C and math libraries are in the System framework
+	    deplibs="$deplibs System.ltframework"
+	    continue
+	    ;;
+	  *-*-sco3.2v5* | *-*-sco5v6*)
+	    # Causes problems with __ctype
+	    test "X$arg" = "X-lc" && continue
+	    ;;
+	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+	    # Compiler inserts libc in the correct place for threads to work
+	    test "X$arg" = "X-lc" && continue
+	    ;;
+	  esac
+	elif test "X$arg" = "X-lc_r"; then
+	 case $host in
+	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+	   # Do not include libc_r directly, use -pthread flag.
+	   continue
+	   ;;
+	 esac
+	fi
+	deplibs="$deplibs $arg"
+	continue
+	;;
+
+      -module)
+	module=yes
+	continue
+	;;
+
+      # Tru64 UNIX uses -model [arg] to determine the layout of C++
+      # classes, name mangling, and exception handling.
+      # Darwin uses the -arch flag to determine output architecture.
+      -model|-arch|-isysroot)
+	compiler_flags="$compiler_flags $arg"
+	func_append compile_command " $arg"
+	func_append finalize_command " $arg"
+	prev=xcompiler
+	continue
+	;;
+
+      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
+	compiler_flags="$compiler_flags $arg"
+	func_append compile_command " $arg"
+	func_append finalize_command " $arg"
+	case "$new_inherited_linker_flags " in
+	    *" $arg "*) ;;
+	    * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;;
+	esac
+	continue
+	;;
+
+      -multi_module)
+	single_module="${wl}-multi_module"
+	continue
+	;;
+
+      -no-fast-install)
+	fast_install=no
+	continue
+	;;
+
+      -no-install)
+	case $host in
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
+	  # The PATH hackery in wrapper scripts is required on Windows
+	  # and Darwin in order for the loader to find any dlls it needs.
+	  func_warning "\`-no-install' is ignored for $host"
+	  func_warning "assuming \`-no-fast-install' instead"
+	  fast_install=no
+	  ;;
+	*) no_install=yes ;;
+	esac
+	continue
+	;;
+
+      -no-undefined)
+	allow_undefined=no
+	continue
+	;;
+
+      -objectlist)
+	prev=objectlist
+	continue
+	;;
+
+      -o) prev=output ;;
+
+      -precious-files-regex)
+	prev=precious_regex
+	continue
+	;;
+
+      -release)
+	prev=release
+	continue
+	;;
+
+      -rpath)
+	prev=rpath
+	continue
+	;;
+
+      -R)
+	prev=xrpath
+	continue
+	;;
+
+      -R*)
+	func_stripname '-R' '' "$arg"
+	dir=$func_stripname_result
+	# We need an absolute path.
+	case $dir in
+	[\\/]* | [A-Za-z]:[\\/]*) ;;
+	*)
+	  func_fatal_error "only absolute run-paths are allowed"
+	  ;;
+	esac
+	case "$xrpath " in
+	*" $dir "*) ;;
+	*) xrpath="$xrpath $dir" ;;
+	esac
+	continue
+	;;
+
+      -shared)
+	# The effects of -shared are defined in a previous loop.
+	continue
+	;;
+
+      -shrext)
+	prev=shrext
+	continue
+	;;
+
+      -static | -static-libtool-libs)
+	# The effects of -static are defined in a previous loop.
+	# We used to do the same as -all-static on platforms that
+	# didn't have a PIC flag, but the assumption that the effects
+	# would be equivalent was wrong.  It would break on at least
+	# Digital Unix and AIX.
+	continue
+	;;
+
+      -thread-safe)
+	thread_safe=yes
+	continue
+	;;
+
+      -version-info)
+	prev=vinfo
+	continue
+	;;
+
+      -version-number)
+	prev=vinfo
+	vinfo_number=yes
+	continue
+	;;
+
+      -weak)
+        prev=weak
+	continue
+	;;
+
+      -Wc,*)
+	func_stripname '-Wc,' '' "$arg"
+	args=$func_stripname_result
+	arg=
+	save_ifs="$IFS"; IFS=','
+	for flag in $args; do
+	  IFS="$save_ifs"
+          func_quote_for_eval "$flag"
+	  arg="$arg $wl$func_quote_for_eval_result"
+	  compiler_flags="$compiler_flags $func_quote_for_eval_result"
+	done
+	IFS="$save_ifs"
+	func_stripname ' ' '' "$arg"
+	arg=$func_stripname_result
+	;;
+
+      -Wl,*)
+	func_stripname '-Wl,' '' "$arg"
+	args=$func_stripname_result
+	arg=
+	save_ifs="$IFS"; IFS=','
+	for flag in $args; do
+	  IFS="$save_ifs"
+          func_quote_for_eval "$flag"
+	  arg="$arg $wl$func_quote_for_eval_result"
+	  compiler_flags="$compiler_flags $wl$func_quote_for_eval_result"
+	  linker_flags="$linker_flags $func_quote_for_eval_result"
+	done
+	IFS="$save_ifs"
+	func_stripname ' ' '' "$arg"
+	arg=$func_stripname_result
+	;;
+
+      -Xcompiler)
+	prev=xcompiler
+	continue
+	;;
+
+      -Xlinker)
+	prev=xlinker
+	continue
+	;;
+
+      -XCClinker)
+	prev=xcclinker
+	continue
+	;;
+
+      # -msg_* for osf cc
+      -msg_*)
+	func_quote_for_eval "$arg"
+	arg="$func_quote_for_eval_result"
+	;;
+
+      # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
+      # -r[0-9][0-9]* specifies the processor on the SGI compiler
+      # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
+      # +DA*, +DD* enable 64-bit mode on the HP compiler
+      # -q* pass through compiler args for the IBM compiler
+      # -m*, -t[45]*, -txscale* pass through architecture-specific
+      # compiler args for GCC
+      # -F/path gives path to uninstalled frameworks, gcc on darwin
+      # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
+      # @file GCC response files
+      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
+      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
+        func_quote_for_eval "$arg"
+	arg="$func_quote_for_eval_result"
+        func_append compile_command " $arg"
+        func_append finalize_command " $arg"
+        compiler_flags="$compiler_flags $arg"
+        continue
+        ;;
+
+      # Some other compiler flag.
+      -* | +*)
+        func_quote_for_eval "$arg"
+	arg="$func_quote_for_eval_result"
+	;;
+
+      *.$objext)
+	# A standard object.
+	objs="$objs $arg"
+	;;
+
+      *.lo)
+	# A libtool-controlled object.
+
+	# Check to see that this really is a libtool object.
+	if func_lalib_unsafe_p "$arg"; then
+	  pic_object=
+	  non_pic_object=
+
+	  # Read the .lo file
+	  func_source "$arg"
+
+	  if test -z "$pic_object" ||
+	     test -z "$non_pic_object" ||
+	     test "$pic_object" = none &&
+	     test "$non_pic_object" = none; then
+	    func_fatal_error "cannot find name of object for \`$arg'"
+	  fi
+
+	  # Extract subdirectory from the argument.
+	  func_dirname "$arg" "/" ""
+	  xdir="$func_dirname_result"
+
+	  if test "$pic_object" != none; then
+	    # Prepend the subdirectory the object is found in.
+	    pic_object="$xdir$pic_object"
+
+	    if test "$prev" = dlfiles; then
+	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+		dlfiles="$dlfiles $pic_object"
+		prev=
+		continue
+	      else
+		# If libtool objects are unsupported, then we need to preload.
+		prev=dlprefiles
+	      fi
+	    fi
+
+	    # CHECK ME:  I think I busted this.  -Ossama
+	    if test "$prev" = dlprefiles; then
+	      # Preload the old-style object.
+	      dlprefiles="$dlprefiles $pic_object"
+	      prev=
+	    fi
+
+	    # A PIC object.
+	    func_append libobjs " $pic_object"
+	    arg="$pic_object"
+	  fi
+
+	  # Non-PIC object.
+	  if test "$non_pic_object" != none; then
+	    # Prepend the subdirectory the object is found in.
+	    non_pic_object="$xdir$non_pic_object"
+
+	    # A standard non-PIC object
+	    func_append non_pic_objects " $non_pic_object"
+	    if test -z "$pic_object" || test "$pic_object" = none ; then
+	      arg="$non_pic_object"
+	    fi
+	  else
+	    # If the PIC object exists, use it instead.
+	    # $xdir was prepended to $pic_object above.
+	    non_pic_object="$pic_object"
+	    func_append non_pic_objects " $non_pic_object"
+	  fi
+	else
+	  # Only an error if not doing a dry-run.
+	  if $opt_dry_run; then
+	    # Extract subdirectory from the argument.
+	    func_dirname "$arg" "/" ""
+	    xdir="$func_dirname_result"
+
+	    func_lo2o "$arg"
+	    pic_object=$xdir$objdir/$func_lo2o_result
+	    non_pic_object=$xdir$func_lo2o_result
+	    func_append libobjs " $pic_object"
+	    func_append non_pic_objects " $non_pic_object"
+	  else
+	    func_fatal_error "\`$arg' is not a valid libtool object"
+	  fi
+	fi
+	;;
+
+      *.$libext)
+	# An archive.
+	deplibs="$deplibs $arg"
+	old_deplibs="$old_deplibs $arg"
+	continue
+	;;
+
+      *.la)
+	# A libtool-controlled library.
+
+	if test "$prev" = dlfiles; then
+	  # This library was specified with -dlopen.
+	  dlfiles="$dlfiles $arg"
+	  prev=
+	elif test "$prev" = dlprefiles; then
+	  # The library was specified with -dlpreopen.
+	  dlprefiles="$dlprefiles $arg"
+	  prev=
+	else
+	  deplibs="$deplibs $arg"
+	fi
+	continue
+	;;
+
+      # Some other compiler argument.
+      *)
+	# Unknown arguments in both finalize_command and compile_command need
+	# to be aesthetically quoted because they are evaled later.
+	func_quote_for_eval "$arg"
+	arg="$func_quote_for_eval_result"
+	;;
+      esac # arg
+
+      # Now actually substitute the argument into the commands.
+      if test -n "$arg"; then
+	func_append compile_command " $arg"
+	func_append finalize_command " $arg"
+      fi
+    done # argument parsing loop
+
+    test -n "$prev" && \
+      func_fatal_help "the \`$prevarg' option requires an argument"
+
+    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
+      eval arg=\"$export_dynamic_flag_spec\"
+      func_append compile_command " $arg"
+      func_append finalize_command " $arg"
+    fi
+
+    oldlibs=
+    # calculate the name of the file, without its directory
+    func_basename "$output"
+    outputname="$func_basename_result"
+    libobjs_save="$libobjs"
+
+    if test -n "$shlibpath_var"; then
+      # get the directories listed in $shlibpath_var
+      eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
+    else
+      shlib_search_path=
+    fi
+    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
+    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
+
+    func_dirname "$output" "/" ""
+    output_objdir="$func_dirname_result$objdir"
+    # Create the object directory.
+    func_mkdir_p "$output_objdir"
+
+    # Determine the type of output
+    case $output in
+    "")
+      func_fatal_help "you must specify an output file"
+      ;;
+    *.$libext) linkmode=oldlib ;;
+    *.lo | *.$objext) linkmode=obj ;;
+    *.la) linkmode=lib ;;
+    *) linkmode=prog ;; # Anything else should be a program.
+    esac
+
+    specialdeplibs=
+
+    libs=
+    # Find all interdependent deplibs by searching for libraries
+    # that are linked more than once (e.g. -la -lb -la)
+    for deplib in $deplibs; do
+      if $opt_duplicate_deps ; then
+	case "$libs " in
+	*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	esac
+      fi
+      libs="$libs $deplib"
+    done
+
+    if test "$linkmode" = lib; then
+      libs="$predeps $libs $compiler_lib_search_path $postdeps"
+
+      # Compute libraries that are listed more than once in $predeps
+      # $postdeps and mark them as special (i.e., whose duplicates are
+      # not to be eliminated).
+      pre_post_deps=
+      if $opt_duplicate_compiler_generated_deps; then
+	for pre_post_dep in $predeps $postdeps; do
+	  case "$pre_post_deps " in
+	  *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
+	  esac
+	  pre_post_deps="$pre_post_deps $pre_post_dep"
+	done
+      fi
+      pre_post_deps=
+    fi
+
+    deplibs=
+    newdependency_libs=
+    newlib_search_path=
+    need_relink=no # whether we're linking any uninstalled libtool libraries
+    notinst_deplibs= # not-installed libtool libraries
+    notinst_path= # paths that contain not-installed libtool libraries
+
+    case $linkmode in
+    lib)
+	passes="conv dlpreopen link"
+	for file in $dlfiles $dlprefiles; do
+	  case $file in
+	  *.la) ;;
+	  *)
+	    func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
+	    ;;
+	  esac
+	done
+	;;
+    prog)
+	compile_deplibs=
+	finalize_deplibs=
+	alldeplibs=no
+	newdlfiles=
+	newdlprefiles=
+	passes="conv scan dlopen dlpreopen link"
+	;;
+    *)  passes="conv"
+	;;
+    esac
+
+    for pass in $passes; do
+      # The preopen pass in lib mode reverses $deplibs; put it back here
+      # so that -L comes before libs that need it for instance...
+      if test "$linkmode,$pass" = "lib,link"; then
+	## FIXME: Find the place where the list is rebuilt in the wrong
+	##        order, and fix it there properly
+        tmp_deplibs=
+	for deplib in $deplibs; do
+	  tmp_deplibs="$deplib $tmp_deplibs"
+	done
+	deplibs="$tmp_deplibs"
+      fi
+
+      if test "$linkmode,$pass" = "lib,link" ||
+	 test "$linkmode,$pass" = "prog,scan"; then
+	libs="$deplibs"
+	deplibs=
+      fi
+      if test "$linkmode" = prog; then
+	case $pass in
+	dlopen) libs="$dlfiles" ;;
+	dlpreopen) libs="$dlprefiles" ;;
+	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
+	esac
+      fi
+      if test "$linkmode,$pass" = "lib,dlpreopen"; then
+	# Collect and forward deplibs of preopened libtool libs
+	for lib in $dlprefiles; do
+	  # Ignore non-libtool-libs
+	  dependency_libs=
+	  case $lib in
+	  *.la)	func_source "$lib" ;;
+	  esac
+
+	  # Collect preopened libtool deplibs, except any this library
+	  # has declared as weak libs
+	  for deplib in $dependency_libs; do
+            deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"`
+	    case " $weak_libs " in
+	    *" $deplib_base "*) ;;
+	    *) deplibs="$deplibs $deplib" ;;
+	    esac
+	  done
+	done
+	libs="$dlprefiles"
+      fi
+      if test "$pass" = dlopen; then
+	# Collect dlpreopened libraries
+	save_deplibs="$deplibs"
+	deplibs=
+      fi
+
+      for deplib in $libs; do
+	lib=
+	found=no
+	case $deplib in
+	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
+	  if test "$linkmode,$pass" = "prog,link"; then
+	    compile_deplibs="$deplib $compile_deplibs"
+	    finalize_deplibs="$deplib $finalize_deplibs"
+	  else
+	    compiler_flags="$compiler_flags $deplib"
+	    if test "$linkmode" = lib ; then
+		case "$new_inherited_linker_flags " in
+		    *" $deplib "*) ;;
+		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
+		esac
+	    fi
+	  fi
+	  continue
+	  ;;
+	-l*)
+	  if test "$linkmode" != lib && test "$linkmode" != prog; then
+	    func_warning "\`-l' is ignored for archives/objects"
+	    continue
+	  fi
+	  func_stripname '-l' '' "$deplib"
+	  name=$func_stripname_result
+	  if test "$linkmode" = lib; then
+	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
+	  else
+	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
+	  fi
+	  for searchdir in $searchdirs; do
+	    for search_ext in .la $std_shrext .so .a; do
+	      # Search the libtool library
+	      lib="$searchdir/lib${name}${search_ext}"
+	      if test -f "$lib"; then
+		if test "$search_ext" = ".la"; then
+		  found=yes
+		else
+		  found=no
+		fi
+		break 2
+	      fi
+	    done
+	  done
+	  if test "$found" != yes; then
+	    # deplib doesn't seem to be a libtool library
+	    if test "$linkmode,$pass" = "prog,link"; then
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    else
+	      deplibs="$deplib $deplibs"
+	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+	    fi
+	    continue
+	  else # deplib is a libtool library
+	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
+	    # We need to do some special things here, and not later.
+	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+	      case " $predeps $postdeps " in
+	      *" $deplib "*)
+		if func_lalib_p "$lib"; then
+		  library_names=
+		  old_library=
+		  func_source "$lib"
+		  for l in $old_library $library_names; do
+		    ll="$l"
+		  done
+		  if test "X$ll" = "X$old_library" ; then # only static version available
+		    found=no
+		    func_dirname "$lib" "" "."
+		    ladir="$func_dirname_result"
+		    lib=$ladir/$old_library
+		    if test "$linkmode,$pass" = "prog,link"; then
+		      compile_deplibs="$deplib $compile_deplibs"
+		      finalize_deplibs="$deplib $finalize_deplibs"
+		    else
+		      deplibs="$deplib $deplibs"
+		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+		    fi
+		    continue
+		  fi
+		fi
+		;;
+	      *) ;;
+	      esac
+	    fi
+	  fi
+	  ;; # -l
+	*.ltframework)
+	  if test "$linkmode,$pass" = "prog,link"; then
+	    compile_deplibs="$deplib $compile_deplibs"
+	    finalize_deplibs="$deplib $finalize_deplibs"
+	  else
+	    deplibs="$deplib $deplibs"
+	    if test "$linkmode" = lib ; then
+		case "$new_inherited_linker_flags " in
+		    *" $deplib "*) ;;
+		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
+		esac
+	    fi
+	  fi
+	  continue
+	  ;;
+	-L*)
+	  case $linkmode in
+	  lib)
+	    deplibs="$deplib $deplibs"
+	    test "$pass" = conv && continue
+	    newdependency_libs="$deplib $newdependency_libs"
+	    func_stripname '-L' '' "$deplib"
+	    newlib_search_path="$newlib_search_path $func_stripname_result"
+	    ;;
+	  prog)
+	    if test "$pass" = conv; then
+	      deplibs="$deplib $deplibs"
+	      continue
+	    fi
+	    if test "$pass" = scan; then
+	      deplibs="$deplib $deplibs"
+	    else
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    fi
+	    func_stripname '-L' '' "$deplib"
+	    newlib_search_path="$newlib_search_path $func_stripname_result"
+	    ;;
+	  *)
+	    func_warning "\`-L' is ignored for archives/objects"
+	    ;;
+	  esac # linkmode
+	  continue
+	  ;; # -L
+	-R*)
+	  if test "$pass" = link; then
+	    func_stripname '-R' '' "$deplib"
+	    dir=$func_stripname_result
+	    # Make sure the xrpath contains only unique directories.
+	    case "$xrpath " in
+	    *" $dir "*) ;;
+	    *) xrpath="$xrpath $dir" ;;
+	    esac
+	  fi
+	  deplibs="$deplib $deplibs"
+	  continue
+	  ;;
+	*.la) lib="$deplib" ;;
+	*.$libext)
+	  if test "$pass" = conv; then
+	    deplibs="$deplib $deplibs"
+	    continue
+	  fi
+	  case $linkmode in
+	  lib)
+	    # Linking convenience modules into shared libraries is allowed,
+	    # but linking other static libraries is non-portable.
+	    case " $dlpreconveniencelibs " in
+	    *" $deplib "*) ;;
+	    *)
+	      valid_a_lib=no
+	      case $deplibs_check_method in
+		match_pattern*)
+		  set dummy $deplibs_check_method; shift
+		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+		  if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \
+		    | $EGREP "$match_pattern_regex" > /dev/null; then
+		    valid_a_lib=yes
+		  fi
+		;;
+		pass_all)
+		  valid_a_lib=yes
+		;;
+	      esac
+	      if test "$valid_a_lib" != yes; then
+		$ECHO
+		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
+		$ECHO "*** I have the capability to make that library automatically link in when"
+		$ECHO "*** you link to this library.  But I can only do this if you have a"
+		$ECHO "*** shared version of the library, which you do not appear to have"
+		$ECHO "*** because the file extensions .$libext of this argument makes me believe"
+		$ECHO "*** that it is just a static archive that I should not use here."
+	      else
+		$ECHO
+		$ECHO "*** Warning: Linking the shared library $output against the"
+		$ECHO "*** static library $deplib is not portable!"
+		deplibs="$deplib $deplibs"
+	      fi
+	      ;;
+	    esac
+	    continue
+	    ;;
+	  prog)
+	    if test "$pass" != link; then
+	      deplibs="$deplib $deplibs"
+	    else
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    fi
+	    continue
+	    ;;
+	  esac # linkmode
+	  ;; # *.$libext
+	*.lo | *.$objext)
+	  if test "$pass" = conv; then
+	    deplibs="$deplib $deplibs"
+	  elif test "$linkmode" = prog; then
+	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
+	      # If there is no dlopen support or we're linking statically,
+	      # we need to preload.
+	      newdlprefiles="$newdlprefiles $deplib"
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    else
+	      newdlfiles="$newdlfiles $deplib"
+	    fi
+	  fi
+	  continue
+	  ;;
+	%DEPLIBS%)
+	  alldeplibs=yes
+	  continue
+	  ;;
+	esac # case $deplib
+
+	if test "$found" = yes || test -f "$lib"; then :
+	else
+	  func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
+	fi
+
+	# Check to see that this really is a libtool archive.
+	func_lalib_unsafe_p "$lib" \
+	  || func_fatal_error "\`$lib' is not a valid libtool archive"
+
+	func_dirname "$lib" "" "."
+	ladir="$func_dirname_result"
+
+	dlname=
+	dlopen=
+	dlpreopen=
+	libdir=
+	library_names=
+	old_library=
+	inherited_linker_flags=
+	# If the library was installed with an old release of libtool,
+	# it will not redefine variables installed, or shouldnotlink
+	installed=yes
+	shouldnotlink=no
+	avoidtemprpath=
+
+
+	# Read the .la file
+	func_source "$lib"
+
+	# Convert "-framework foo" to "foo.ltframework"
+	if test -n "$inherited_linker_flags"; then
+	  tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'`
+	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
+	    case " $new_inherited_linker_flags " in
+	      *" $tmp_inherited_linker_flag "*) ;;
+	      *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";;
+	    esac
+	  done
+	fi
+	dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
+	if test "$linkmode,$pass" = "lib,link" ||
+	   test "$linkmode,$pass" = "prog,scan" ||
+	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
+	  test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
+	  test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
+	fi
+
+	if test "$pass" = conv; then
+	  # Only check for convenience libraries
+	  deplibs="$lib $deplibs"
+	  if test -z "$libdir"; then
+	    if test -z "$old_library"; then
+	      func_fatal_error "cannot find name of link library for \`$lib'"
+	    fi
+	    # It is a libtool convenience library, so add in its objects.
+	    convenience="$convenience $ladir/$objdir/$old_library"
+	    old_convenience="$old_convenience $ladir/$objdir/$old_library"
+	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
+	    func_fatal_error "\`$lib' is not a convenience library"
+	  fi
+	  tmp_libs=
+	  for deplib in $dependency_libs; do
+	    deplibs="$deplib $deplibs"
+	    if $opt_duplicate_deps ; then
+	      case "$tmp_libs " in
+	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	      esac
+	    fi
+	    tmp_libs="$tmp_libs $deplib"
+	  done
+	  continue
+	fi # $pass = conv
+
+
+	# Get the name of the library we link against.
+	linklib=
+	for l in $old_library $library_names; do
+	  linklib="$l"
+	done
+	if test -z "$linklib"; then
+	  func_fatal_error "cannot find name of link library for \`$lib'"
+	fi
+
+	# This library was specified with -dlopen.
+	if test "$pass" = dlopen; then
+	  if test -z "$libdir"; then
+	    func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
+	  fi
+	  if test -z "$dlname" ||
+	     test "$dlopen_support" != yes ||
+	     test "$build_libtool_libs" = no; then
+	    # If there is no dlname, no dlopen support or we're linking
+	    # statically, we need to preload.  We also need to preload any
+	    # dependent libraries so libltdl's deplib preloader doesn't
+	    # bomb out in the load deplibs phase.
+	    dlprefiles="$dlprefiles $lib $dependency_libs"
+	  else
+	    newdlfiles="$newdlfiles $lib"
+	  fi
+	  continue
+	fi # $pass = dlopen
+
+	# We need an absolute path.
+	case $ladir in
+	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
+	*)
+	  abs_ladir=`cd "$ladir" && pwd`
+	  if test -z "$abs_ladir"; then
+	    func_warning "cannot determine absolute directory name of \`$ladir'"
+	    func_warning "passing it literally to the linker, although it might fail"
+	    abs_ladir="$ladir"
+	  fi
+	  ;;
+	esac
+	func_basename "$lib"
+	laname="$func_basename_result"
+
+	# Find the relevant object directory and library name.
+	if test "X$installed" = Xyes; then
+	  if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+	    func_warning "library \`$lib' was moved."
+	    dir="$ladir"
+	    absdir="$abs_ladir"
+	    libdir="$abs_ladir"
+	  else
+	    dir="$libdir"
+	    absdir="$libdir"
+	  fi
+	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
+	else
+	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+	    dir="$ladir"
+	    absdir="$abs_ladir"
+	    # Remove this search path later
+	    notinst_path="$notinst_path $abs_ladir"
+	  else
+	    dir="$ladir/$objdir"
+	    absdir="$abs_ladir/$objdir"
+	    # Remove this search path later
+	    notinst_path="$notinst_path $abs_ladir"
+	  fi
+	fi # $installed = yes
+	func_stripname 'lib' '.la' "$laname"
+	name=$func_stripname_result
+
+	# This library was specified with -dlpreopen.
+	if test "$pass" = dlpreopen; then
+	  if test -z "$libdir" && test "$linkmode" = prog; then
+	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
+	  fi
+	  # Prefer using a static library (so that no silly _DYNAMIC symbols
+	  # are required to link).
+	  if test -n "$old_library"; then
+	    newdlprefiles="$newdlprefiles $dir/$old_library"
+	    # Keep a list of preopened convenience libraries to check
+	    # that they are being used correctly in the link pass.
+	    test -z "$libdir" && \
+		dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library"
+	  # Otherwise, use the dlname, so that lt_dlopen finds it.
+	  elif test -n "$dlname"; then
+	    newdlprefiles="$newdlprefiles $dir/$dlname"
+	  else
+	    newdlprefiles="$newdlprefiles $dir/$linklib"
+	  fi
+	fi # $pass = dlpreopen
+
+	if test -z "$libdir"; then
+	  # Link the convenience library
+	  if test "$linkmode" = lib; then
+	    deplibs="$dir/$old_library $deplibs"
+	  elif test "$linkmode,$pass" = "prog,link"; then
+	    compile_deplibs="$dir/$old_library $compile_deplibs"
+	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
+	  else
+	    deplibs="$lib $deplibs" # used for prog,scan pass
+	  fi
+	  continue
+	fi
+
+
+	if test "$linkmode" = prog && test "$pass" != link; then
+	  newlib_search_path="$newlib_search_path $ladir"
+	  deplibs="$lib $deplibs"
+
+	  linkalldeplibs=no
+	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
+	     test "$build_libtool_libs" = no; then
+	    linkalldeplibs=yes
+	  fi
+
+	  tmp_libs=
+	  for deplib in $dependency_libs; do
+	    case $deplib in
+	    -L*) func_stripname '-L' '' "$deplib"
+	         newlib_search_path="$newlib_search_path $func_stripname_result"
+		 ;;
+	    esac
+	    # Need to link against all dependency_libs?
+	    if test "$linkalldeplibs" = yes; then
+	      deplibs="$deplib $deplibs"
+	    else
+	      # Need to hardcode shared library paths
+	      # or/and link against static libraries
+	      newdependency_libs="$deplib $newdependency_libs"
+	    fi
+	    if $opt_duplicate_deps ; then
+	      case "$tmp_libs " in
+	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	      esac
+	    fi
+	    tmp_libs="$tmp_libs $deplib"
+	  done # for deplib
+	  continue
+	fi # $linkmode = prog...
+
+	if test "$linkmode,$pass" = "prog,link"; then
+	  if test -n "$library_names" &&
+	     { { test "$prefer_static_libs" = no ||
+	         test "$prefer_static_libs,$installed" = "built,yes"; } ||
+	       test -z "$old_library"; }; then
+	    # We need to hardcode the library path
+	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
+	      # Make sure the rpath contains only unique directories.
+	      case "$temp_rpath:" in
+	      *"$absdir:"*) ;;
+	      *) temp_rpath="$temp_rpath$absdir:" ;;
+	      esac
+	    fi
+
+	    # Hardcode the library path.
+	    # Skip directories that are in the system default run-time
+	    # search path.
+	    case " $sys_lib_dlsearch_path " in
+	    *" $absdir "*) ;;
+	    *)
+	      case "$compile_rpath " in
+	      *" $absdir "*) ;;
+	      *) compile_rpath="$compile_rpath $absdir"
+	      esac
+	      ;;
+	    esac
+	    case " $sys_lib_dlsearch_path " in
+	    *" $libdir "*) ;;
+	    *)
+	      case "$finalize_rpath " in
+	      *" $libdir "*) ;;
+	      *) finalize_rpath="$finalize_rpath $libdir"
+	      esac
+	      ;;
+	    esac
+	  fi # $linkmode,$pass = prog,link...
+
+	  if test "$alldeplibs" = yes &&
+	     { test "$deplibs_check_method" = pass_all ||
+	       { test "$build_libtool_libs" = yes &&
+		 test -n "$library_names"; }; }; then
+	    # We only need to search for static libraries
+	    continue
+	  fi
+	fi
+
+	link_static=no # Whether the deplib will be linked statically
+	use_static_libs=$prefer_static_libs
+	if test "$use_static_libs" = built && test "$installed" = yes; then
+	  use_static_libs=no
+	fi
+	if test -n "$library_names" &&
+	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
+	  case $host in
+	  *cygwin* | *mingw* | *cegcc*)
+	      # No point in relinking DLLs because paths are not encoded
+	      notinst_deplibs="$notinst_deplibs $lib"
+	      need_relink=no
+	    ;;
+	  *)
+	    if test "$installed" = no; then
+	      notinst_deplibs="$notinst_deplibs $lib"
+	      need_relink=yes
+	    fi
+	    ;;
+	  esac
+	  # This is a shared library
+
+	  # Warn about portability, can't link against -module's on some
+	  # systems (darwin).  Don't bleat about dlopened modules though!
+	  dlopenmodule=""
+	  for dlpremoduletest in $dlprefiles; do
+	    if test "X$dlpremoduletest" = "X$lib"; then
+	      dlopenmodule="$dlpremoduletest"
+	      break
+	    fi
+	  done
+	  if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
+	    $ECHO
+	    if test "$linkmode" = prog; then
+	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
+	    else
+	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
+	    fi
+	    $ECHO "*** $linklib is not portable!"
+	  fi
+	  if test "$linkmode" = lib &&
+	     test "$hardcode_into_libs" = yes; then
+	    # Hardcode the library path.
+	    # Skip directories that are in the system default run-time
+	    # search path.
+	    case " $sys_lib_dlsearch_path " in
+	    *" $absdir "*) ;;
+	    *)
+	      case "$compile_rpath " in
+	      *" $absdir "*) ;;
+	      *) compile_rpath="$compile_rpath $absdir"
+	      esac
+	      ;;
+	    esac
+	    case " $sys_lib_dlsearch_path " in
+	    *" $libdir "*) ;;
+	    *)
+	      case "$finalize_rpath " in
+	      *" $libdir "*) ;;
+	      *) finalize_rpath="$finalize_rpath $libdir"
+	      esac
+	      ;;
+	    esac
+	  fi
+
+	  if test -n "$old_archive_from_expsyms_cmds"; then
+	    # figure out the soname
+	    set dummy $library_names
+	    shift
+	    realname="$1"
+	    shift
+	    libname=`eval "\\$ECHO \"$libname_spec\""`
+	    # use dlname if we got it. it's perfectly good, no?
+	    if test -n "$dlname"; then
+	      soname="$dlname"
+	    elif test -n "$soname_spec"; then
+	      # bleh windows
+	      case $host in
+	      *cygwin* | mingw* | *cegcc*)
+	        func_arith $current - $age
+		major=$func_arith_result
+		versuffix="-$major"
+		;;
+	      esac
+	      eval soname=\"$soname_spec\"
+	    else
+	      soname="$realname"
+	    fi
+
+	    # Make a new name for the extract_expsyms_cmds to use
+	    soroot="$soname"
+	    func_basename "$soroot"
+	    soname="$func_basename_result"
+	    func_stripname 'lib' '.dll' "$soname"
+	    newlib=libimp-$func_stripname_result.a
+
+	    # If the library has no export list, then create one now
+	    if test -f "$output_objdir/$soname-def"; then :
+	    else
+	      func_verbose "extracting exported symbol list from \`$soname'"
+	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
+	    fi
+
+	    # Create $newlib
+	    if test -f "$output_objdir/$newlib"; then :; else
+	      func_verbose "generating import library for \`$soname'"
+	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
+	    fi
+	    # make sure the library variables are pointing to the new library
+	    dir=$output_objdir
+	    linklib=$newlib
+	  fi # test -n "$old_archive_from_expsyms_cmds"
+
+	  if test "$linkmode" = prog || test "$mode" != relink; then
+	    add_shlibpath=
+	    add_dir=
+	    add=
+	    lib_linked=yes
+	    case $hardcode_action in
+	    immediate | unsupported)
+	      if test "$hardcode_direct" = no; then
+		add="$dir/$linklib"
+		case $host in
+		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
+		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
+		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
+		    *-*-unixware7*) add_dir="-L$dir" ;;
+		  *-*-darwin* )
+		    # if the lib is a (non-dlopened) module then we can not
+		    # link against it, someone is ignoring the earlier warnings
+		    if /usr/bin/file -L $add 2> /dev/null |
+			 $GREP ": [^:]* bundle" >/dev/null ; then
+		      if test "X$dlopenmodule" != "X$lib"; then
+			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
+			if test -z "$old_library" ; then
+			  $ECHO
+			  $ECHO "*** And there doesn't seem to be a static archive available"
+			  $ECHO "*** The link will probably fail, sorry"
+			else
+			  add="$dir/$old_library"
+			fi
+		      elif test -n "$old_library"; then
+			add="$dir/$old_library"
+		      fi
+		    fi
+		esac
+	      elif test "$hardcode_minus_L" = no; then
+		case $host in
+		*-*-sunos*) add_shlibpath="$dir" ;;
+		esac
+		add_dir="-L$dir"
+		add="-l$name"
+	      elif test "$hardcode_shlibpath_var" = no; then
+		add_shlibpath="$dir"
+		add="-l$name"
+	      else
+		lib_linked=no
+	      fi
+	      ;;
+	    relink)
+	      if test "$hardcode_direct" = yes &&
+	         test "$hardcode_direct_absolute" = no; then
+		add="$dir/$linklib"
+	      elif test "$hardcode_minus_L" = yes; then
+		add_dir="-L$dir"
+		# Try looking first in the location we're being installed to.
+		if test -n "$inst_prefix_dir"; then
+		  case $libdir in
+		    [\\/]*)
+		      add_dir="$add_dir -L$inst_prefix_dir$libdir"
+		      ;;
+		  esac
+		fi
+		add="-l$name"
+	      elif test "$hardcode_shlibpath_var" = yes; then
+		add_shlibpath="$dir"
+		add="-l$name"
+	      else
+		lib_linked=no
+	      fi
+	      ;;
+	    *) lib_linked=no ;;
+	    esac
+
+	    if test "$lib_linked" != yes; then
+	      func_fatal_configuration "unsupported hardcode properties"
+	    fi
+
+	    if test -n "$add_shlibpath"; then
+	      case :$compile_shlibpath: in
+	      *":$add_shlibpath:"*) ;;
+	      *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
+	      esac
+	    fi
+	    if test "$linkmode" = prog; then
+	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
+	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
+	    else
+	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
+	      test -n "$add" && deplibs="$add $deplibs"
+	      if test "$hardcode_direct" != yes &&
+		 test "$hardcode_minus_L" != yes &&
+		 test "$hardcode_shlibpath_var" = yes; then
+		case :$finalize_shlibpath: in
+		*":$libdir:"*) ;;
+		*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+		esac
+	      fi
+	    fi
+	  fi
+
+	  if test "$linkmode" = prog || test "$mode" = relink; then
+	    add_shlibpath=
+	    add_dir=
+	    add=
+	    # Finalize command for both is simple: just hardcode it.
+	    if test "$hardcode_direct" = yes &&
+	       test "$hardcode_direct_absolute" = no; then
+	      add="$libdir/$linklib"
+	    elif test "$hardcode_minus_L" = yes; then
+	      add_dir="-L$libdir"
+	      add="-l$name"
+	    elif test "$hardcode_shlibpath_var" = yes; then
+	      case :$finalize_shlibpath: in
+	      *":$libdir:"*) ;;
+	      *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+	      esac
+	      add="-l$name"
+	    elif test "$hardcode_automatic" = yes; then
+	      if test -n "$inst_prefix_dir" &&
+		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
+		add="$inst_prefix_dir$libdir/$linklib"
+	      else
+		add="$libdir/$linklib"
+	      fi
+	    else
+	      # We cannot seem to hardcode it, guess we'll fake it.
+	      add_dir="-L$libdir"
+	      # Try looking first in the location we're being installed to.
+	      if test -n "$inst_prefix_dir"; then
+		case $libdir in
+		  [\\/]*)
+		    add_dir="$add_dir -L$inst_prefix_dir$libdir"
+		    ;;
+		esac
+	      fi
+	      add="-l$name"
+	    fi
+
+	    if test "$linkmode" = prog; then
+	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
+	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
+	    else
+	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
+	      test -n "$add" && deplibs="$add $deplibs"
+	    fi
+	  fi
+	elif test "$linkmode" = prog; then
+	  # Here we assume that one of hardcode_direct or hardcode_minus_L
+	  # is not unsupported.  This is valid on all known static and
+	  # shared platforms.
+	  if test "$hardcode_direct" != unsupported; then
+	    test -n "$old_library" && linklib="$old_library"
+	    compile_deplibs="$dir/$linklib $compile_deplibs"
+	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
+	  else
+	    compile_deplibs="-l$name -L$dir $compile_deplibs"
+	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
+	  fi
+	elif test "$build_libtool_libs" = yes; then
+	  # Not a shared library
+	  if test "$deplibs_check_method" != pass_all; then
+	    # We're trying link a shared library against a static one
+	    # but the system doesn't support it.
+
+	    # Just print a warning and add the library to dependency_libs so
+	    # that the program can be linked against the static library.
+	    $ECHO
+	    $ECHO "*** Warning: This system can not link to static lib archive $lib."
+	    $ECHO "*** I have the capability to make that library automatically link in when"
+	    $ECHO "*** you link to this library.  But I can only do this if you have a"
+	    $ECHO "*** shared version of the library, which you do not appear to have."
+	    if test "$module" = yes; then
+	      $ECHO "*** But as you try to build a module library, libtool will still create "
+	      $ECHO "*** a static module, that should work as long as the dlopening application"
+	      $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime."
+	      if test -z "$global_symbol_pipe"; then
+		$ECHO
+		$ECHO "*** However, this would only work if libtool was able to extract symbol"
+		$ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
+		$ECHO "*** not find such a program.  So, this module is probably useless."
+		$ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
+	      fi
+	      if test "$build_old_libs" = no; then
+		build_libtool_libs=module
+		build_old_libs=yes
+	      else
+		build_libtool_libs=no
+	      fi
+	    fi
+	  else
+	    deplibs="$dir/$old_library $deplibs"
+	    link_static=yes
+	  fi
+	fi # link shared/static library?
+
+	if test "$linkmode" = lib; then
+	  if test -n "$dependency_libs" &&
+	     { test "$hardcode_into_libs" != yes ||
+	       test "$build_old_libs" = yes ||
+	       test "$link_static" = yes; }; then
+	    # Extract -R from dependency_libs
+	    temp_deplibs=
+	    for libdir in $dependency_libs; do
+	      case $libdir in
+	      -R*) func_stripname '-R' '' "$libdir"
+	           temp_xrpath=$func_stripname_result
+		   case " $xrpath " in
+		   *" $temp_xrpath "*) ;;
+		   *) xrpath="$xrpath $temp_xrpath";;
+		   esac;;
+	      *) temp_deplibs="$temp_deplibs $libdir";;
+	      esac
+	    done
+	    dependency_libs="$temp_deplibs"
+	  fi
+
+	  newlib_search_path="$newlib_search_path $absdir"
+	  # Link against this library
+	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
+	  # ... and its dependency_libs
+	  tmp_libs=
+	  for deplib in $dependency_libs; do
+	    newdependency_libs="$deplib $newdependency_libs"
+	    if $opt_duplicate_deps ; then
+	      case "$tmp_libs " in
+	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	      esac
+	    fi
+	    tmp_libs="$tmp_libs $deplib"
+	  done
+
+	  if test "$link_all_deplibs" != no; then
+	    # Add the search paths of all dependency libraries
+	    for deplib in $dependency_libs; do
+	      case $deplib in
+	      -L*) path="$deplib" ;;
+	      *.la)
+	        func_dirname "$deplib" "" "."
+		dir="$func_dirname_result"
+		# We need an absolute path.
+		case $dir in
+		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
+		*)
+		  absdir=`cd "$dir" && pwd`
+		  if test -z "$absdir"; then
+		    func_warning "cannot determine absolute directory name of \`$dir'"
+		    absdir="$dir"
+		  fi
+		  ;;
+		esac
+		if $GREP "^installed=no" $deplib > /dev/null; then
+		case $host in
+		*-*-darwin*)
+		  depdepl=
+		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
+		  if test -n "$deplibrary_names" ; then
+		    for tmp in $deplibrary_names ; do
+		      depdepl=$tmp
+		    done
+		    if test -f "$absdir/$objdir/$depdepl" ; then
+		      depdepl="$absdir/$objdir/$depdepl"
+		      darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
+                      if test -z "$darwin_install_name"; then
+                          darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
+                      fi
+		      compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
+		      linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}"
+		      path=
+		    fi
+		  fi
+		  ;;
+		*)
+		  path="-L$absdir/$objdir"
+		  ;;
+		esac
+		else
+		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+		  test -z "$libdir" && \
+		    func_fatal_error "\`$deplib' is not a valid libtool archive"
+		  test "$absdir" != "$libdir" && \
+		    func_warning "\`$deplib' seems to be moved"
+
+		  path="-L$absdir"
+		fi
+		;;
+	      esac
+	      case " $deplibs " in
+	      *" $path "*) ;;
+	      *) deplibs="$path $deplibs" ;;
+	      esac
+	    done
+	  fi # link_all_deplibs != no
+	fi # linkmode = lib
+      done # for deplib in $libs
+      if test "$pass" = link; then
+	if test "$linkmode" = "prog"; then
+	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
+	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
+	else
+	  compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
+	fi
+      fi
+      dependency_libs="$newdependency_libs"
+      if test "$pass" = dlpreopen; then
+	# Link the dlpreopened libraries before other libraries
+	for deplib in $save_deplibs; do
+	  deplibs="$deplib $deplibs"
+	done
+      fi
+      if test "$pass" != dlopen; then
+	if test "$pass" != conv; then
+	  # Make sure lib_search_path contains only unique directories.
+	  lib_search_path=
+	  for dir in $newlib_search_path; do
+	    case "$lib_search_path " in
+	    *" $dir "*) ;;
+	    *) lib_search_path="$lib_search_path $dir" ;;
+	    esac
+	  done
+	  newlib_search_path=
+	fi
+
+	if test "$linkmode,$pass" != "prog,link"; then
+	  vars="deplibs"
+	else
+	  vars="compile_deplibs finalize_deplibs"
+	fi
+	for var in $vars dependency_libs; do
+	  # Add libraries to $var in reverse order
+	  eval tmp_libs=\"\$$var\"
+	  new_libs=
+	  for deplib in $tmp_libs; do
+	    # FIXME: Pedantically, this is the right thing to do, so
+	    #        that some nasty dependency loop isn't accidentally
+	    #        broken:
+	    #new_libs="$deplib $new_libs"
+	    # Pragmatically, this seems to cause very few problems in
+	    # practice:
+	    case $deplib in
+	    -L*) new_libs="$deplib $new_libs" ;;
+	    -R*) ;;
+	    *)
+	      # And here is the reason: when a library appears more
+	      # than once as an explicit dependence of a library, or
+	      # is implicitly linked in more than once by the
+	      # compiler, it is considered special, and multiple
+	      # occurrences thereof are not removed.  Compare this
+	      # with having the same library being listed as a
+	      # dependency of multiple other libraries: in this case,
+	      # we know (pedantically, we assume) the library does not
+	      # need to be listed more than once, so we keep only the
+	      # last copy.  This is not always right, but it is rare
+	      # enough that we require users that really mean to play
+	      # such unportable linking tricks to link the library
+	      # using -Wl,-lname, so that libtool does not consider it
+	      # for duplicate removal.
+	      case " $specialdeplibs " in
+	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
+	      *)
+		case " $new_libs " in
+		*" $deplib "*) ;;
+		*) new_libs="$deplib $new_libs" ;;
+		esac
+		;;
+	      esac
+	      ;;
+	    esac
+	  done
+	  tmp_libs=
+	  for deplib in $new_libs; do
+	    case $deplib in
+	    -L*)
+	      case " $tmp_libs " in
+	      *" $deplib "*) ;;
+	      *) tmp_libs="$tmp_libs $deplib" ;;
+	      esac
+	      ;;
+	    *) tmp_libs="$tmp_libs $deplib" ;;
+	    esac
+	  done
+	  eval $var=\"$tmp_libs\"
+	done # for var
+      fi
+      # Last step: remove runtime libs from dependency_libs
+      # (they stay in deplibs)
+      tmp_libs=
+      for i in $dependency_libs ; do
+	case " $predeps $postdeps $compiler_lib_search_path " in
+	*" $i "*)
+	  i=""
+	  ;;
+	esac
+	if test -n "$i" ; then
+	  tmp_libs="$tmp_libs $i"
+	fi
+      done
+      dependency_libs=$tmp_libs
+    done # for pass
+    if test "$linkmode" = prog; then
+      dlfiles="$newdlfiles"
+    fi
+    if test "$linkmode" = prog || test "$linkmode" = lib; then
+      dlprefiles="$newdlprefiles"
+    fi
+
+    case $linkmode in
+    oldlib)
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+	func_warning "\`-dlopen' is ignored for archives"
+      fi
+
+      case " $deplibs" in
+      *\ -l* | *\ -L*)
+	func_warning "\`-l' and \`-L' are ignored for archives" ;;
+      esac
+
+      test -n "$rpath" && \
+	func_warning "\`-rpath' is ignored for archives"
+
+      test -n "$xrpath" && \
+	func_warning "\`-R' is ignored for archives"
+
+      test -n "$vinfo" && \
+	func_warning "\`-version-info/-version-number' is ignored for archives"
+
+      test -n "$release" && \
+	func_warning "\`-release' is ignored for archives"
+
+      test -n "$export_symbols$export_symbols_regex" && \
+	func_warning "\`-export-symbols' is ignored for archives"
+
+      # Now set the variables for building old libraries.
+      build_libtool_libs=no
+      oldlibs="$output"
+      objs="$objs$old_deplibs"
+      ;;
+
+    lib)
+      # Make sure we only generate libraries of the form `libNAME.la'.
+      case $outputname in
+      lib*)
+	func_stripname 'lib' '.la' "$outputname"
+	name=$func_stripname_result
+	eval shared_ext=\"$shrext_cmds\"
+	eval libname=\"$libname_spec\"
+	;;
+      *)
+	test "$module" = no && \
+	  func_fatal_help "libtool library \`$output' must begin with \`lib'"
+
+	if test "$need_lib_prefix" != no; then
+	  # Add the "lib" prefix for modules if required
+	  func_stripname '' '.la' "$outputname"
+	  name=$func_stripname_result
+	  eval shared_ext=\"$shrext_cmds\"
+	  eval libname=\"$libname_spec\"
+	else
+	  func_stripname '' '.la' "$outputname"
+	  libname=$func_stripname_result
+	fi
+	;;
+      esac
+
+      if test -n "$objs"; then
+	if test "$deplibs_check_method" != pass_all; then
+	  func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
+	else
+	  $ECHO
+	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
+	  $ECHO "*** objects $objs is not portable!"
+	  libobjs="$libobjs $objs"
+	fi
+      fi
+
+      test "$dlself" != no && \
+	func_warning "\`-dlopen self' is ignored for libtool libraries"
+
+      set dummy $rpath
+      shift
+      test "$#" -gt 1 && \
+	func_warning "ignoring multiple \`-rpath's for a libtool library"
+
+      install_libdir="$1"
+
+      oldlibs=
+      if test -z "$rpath"; then
+	if test "$build_libtool_libs" = yes; then
+	  # Building a libtool convenience library.
+	  # Some compilers have problems with a `.al' extension so
+	  # convenience libraries should have the same extension an
+	  # archive normally would.
+	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
+	  build_libtool_libs=convenience
+	  build_old_libs=yes
+	fi
+
+	test -n "$vinfo" && \
+	  func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
+
+	test -n "$release" && \
+	  func_warning "\`-release' is ignored for convenience libraries"
+      else
+
+	# Parse the version information argument.
+	save_ifs="$IFS"; IFS=':'
+	set dummy $vinfo 0 0 0
+	shift
+	IFS="$save_ifs"
+
+	test -n "$7" && \
+	  func_fatal_help "too many parameters to \`-version-info'"
+
+	# convert absolute version numbers to libtool ages
+	# this retains compatibility with .la files and attempts
+	# to make the code below a bit more comprehensible
+
+	case $vinfo_number in
+	yes)
+	  number_major="$1"
+	  number_minor="$2"
+	  number_revision="$3"
+	  #
+	  # There are really only two kinds -- those that
+	  # use the current revision as the major version
+	  # and those that subtract age and use age as
+	  # a minor version.  But, then there is irix
+	  # which has an extra 1 added just for fun
+	  #
+	  case $version_type in
+	  darwin|linux|osf|windows|none)
+	    func_arith $number_major + $number_minor
+	    current=$func_arith_result
+	    age="$number_minor"
+	    revision="$number_revision"
+	    ;;
+	  freebsd-aout|freebsd-elf|sunos)
+	    current="$number_major"
+	    revision="$number_minor"
+	    age="0"
+	    ;;
+	  irix|nonstopux)
+	    func_arith $number_major + $number_minor
+	    current=$func_arith_result
+	    age="$number_minor"
+	    revision="$number_minor"
+	    lt_irix_increment=no
+	    ;;
+	  esac
+	  ;;
+	no)
+	  current="$1"
+	  revision="$2"
+	  age="$3"
+	  ;;
+	esac
+
+	# Check that each of the things are valid numbers.
+	case $current in
+	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+	*)
+	  func_error "CURRENT \`$current' must be a nonnegative integer"
+	  func_fatal_error "\`$vinfo' is not valid version information"
+	  ;;
+	esac
+
+	case $revision in
+	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+	*)
+	  func_error "REVISION \`$revision' must be a nonnegative integer"
+	  func_fatal_error "\`$vinfo' is not valid version information"
+	  ;;
+	esac
+
+	case $age in
+	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+	*)
+	  func_error "AGE \`$age' must be a nonnegative integer"
+	  func_fatal_error "\`$vinfo' is not valid version information"
+	  ;;
+	esac
+
+	if test "$age" -gt "$current"; then
+	  func_error "AGE \`$age' is greater than the current interface number \`$current'"
+	  func_fatal_error "\`$vinfo' is not valid version information"
+	fi
+
+	# Calculate the version variables.
+	major=
+	versuffix=
+	verstring=
+	case $version_type in
+	none) ;;
+
+	darwin)
+	  # Like Linux, but with the current version available in
+	  # verstring for coding it into the library header
+	  func_arith $current - $age
+	  major=.$func_arith_result
+	  versuffix="$major.$age.$revision"
+	  # Darwin ld doesn't like 0 for these options...
+	  func_arith $current + 1
+	  minor_current=$func_arith_result
+	  xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
+	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+	  ;;
+
+	freebsd-aout)
+	  major=".$current"
+	  versuffix=".$current.$revision";
+	  ;;
+
+	freebsd-elf)
+	  major=".$current"
+	  versuffix=".$current"
+	  ;;
+
+	irix | nonstopux)
+	  if test "X$lt_irix_increment" = "Xno"; then
+	    func_arith $current - $age
+	  else
+	    func_arith $current - $age + 1
+	  fi
+	  major=$func_arith_result
+
+	  case $version_type in
+	    nonstopux) verstring_prefix=nonstopux ;;
+	    *)         verstring_prefix=sgi ;;
+	  esac
+	  verstring="$verstring_prefix$major.$revision"
+
+	  # Add in all the interfaces that we are compatible with.
+	  loop=$revision
+	  while test "$loop" -ne 0; do
+	    func_arith $revision - $loop
+	    iface=$func_arith_result
+	    func_arith $loop - 1
+	    loop=$func_arith_result
+	    verstring="$verstring_prefix$major.$iface:$verstring"
+	  done
+
+	  # Before this point, $major must not contain `.'.
+	  major=.$major
+	  versuffix="$major.$revision"
+	  ;;
+
+	linux)
+	  func_arith $current - $age
+	  major=.$func_arith_result
+	  versuffix="$major.$age.$revision"
+	  ;;
+
+	osf)
+	  func_arith $current - $age
+	  major=.$func_arith_result
+	  versuffix=".$current.$age.$revision"
+	  verstring="$current.$age.$revision"
+
+	  # Add in all the interfaces that we are compatible with.
+	  loop=$age
+	  while test "$loop" -ne 0; do
+	    func_arith $current - $loop
+	    iface=$func_arith_result
+	    func_arith $loop - 1
+	    loop=$func_arith_result
+	    verstring="$verstring:${iface}.0"
+	  done
+
+	  # Make executables depend on our current version.
+	  verstring="$verstring:${current}.0"
+	  ;;
+
+	qnx)
+	  major=".$current"
+	  versuffix=".$current"
+	  ;;
+
+	sunos)
+	  major=".$current"
+	  versuffix=".$current.$revision"
+	  ;;
+
+	windows)
+	  # Use '-' rather than '.', since we only want one
+	  # extension on DOS 8.3 filesystems.
+	  func_arith $current - $age
+	  major=$func_arith_result
+	  versuffix="-$major"
+	  ;;
+
+	*)
+	  func_fatal_configuration "unknown library version type \`$version_type'"
+	  ;;
+	esac
+
+	# Clear the version info if we defaulted, and they specified a release.
+	if test -z "$vinfo" && test -n "$release"; then
+	  major=
+	  case $version_type in
+	  darwin)
+	    # we can't check for "0.0" in archive_cmds due to quoting
+	    # problems, so we reset it completely
+	    verstring=
+	    ;;
+	  *)
+	    verstring="0.0"
+	    ;;
+	  esac
+	  if test "$need_version" = no; then
+	    versuffix=
+	  else
+	    versuffix=".0.0"
+	  fi
+	fi
+
+	# Remove version info from name if versioning should be avoided
+	if test "$avoid_version" = yes && test "$need_version" = no; then
+	  major=
+	  versuffix=
+	  verstring=""
+	fi
+
+	# Check to see if the archive will have undefined symbols.
+	if test "$allow_undefined" = yes; then
+	  if test "$allow_undefined_flag" = unsupported; then
+	    func_warning "undefined symbols not allowed in $host shared libraries"
+	    build_libtool_libs=no
+	    build_old_libs=yes
+	  fi
+	else
+	  # Don't allow undefined symbols.
+	  allow_undefined_flag="$no_undefined_flag"
+	fi
+
+      fi
+
+      func_generate_dlsyms "$libname" "$libname" "yes"
+      libobjs="$libobjs $symfileobj"
+      test "X$libobjs" = "X " && libobjs=
+
+      if test "$mode" != relink; then
+	# Remove our outputs, but don't remove object files since they
+	# may have been created when compiling PIC objects.
+	removelist=
+	tempremovelist=`$ECHO "$output_objdir/*"`
+	for p in $tempremovelist; do
+	  case $p in
+	    *.$objext | *.gcno)
+	       ;;
+	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
+	       if test "X$precious_files_regex" != "X"; then
+		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
+		 then
+		   continue
+		 fi
+	       fi
+	       removelist="$removelist $p"
+	       ;;
+	    *) ;;
+	  esac
+	done
+	test -n "$removelist" && \
+	  func_show_eval "${RM}r \$removelist"
+      fi
+
+      # Now set the variables for building old libraries.
+      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
+	oldlibs="$oldlibs $output_objdir/$libname.$libext"
+
+	# Transform .lo files to .o files.
+	oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
+      fi
+
+      # Eliminate all temporary directories.
+      #for path in $notinst_path; do
+      #	lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"`
+      #	deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"`
+      #	dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"`
+      #done
+
+      if test -n "$xrpath"; then
+	# If the user specified any rpath flags, then add them.
+	temp_xrpath=
+	for libdir in $xrpath; do
+	  temp_xrpath="$temp_xrpath -R$libdir"
+	  case "$finalize_rpath " in
+	  *" $libdir "*) ;;
+	  *) finalize_rpath="$finalize_rpath $libdir" ;;
+	  esac
+	done
+	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
+	  dependency_libs="$temp_xrpath $dependency_libs"
+	fi
+      fi
+
+      # Make sure dlfiles contains only unique files that won't be dlpreopened
+      old_dlfiles="$dlfiles"
+      dlfiles=
+      for lib in $old_dlfiles; do
+	case " $dlprefiles $dlfiles " in
+	*" $lib "*) ;;
+	*) dlfiles="$dlfiles $lib" ;;
+	esac
+      done
+
+      # Make sure dlprefiles contains only unique files
+      old_dlprefiles="$dlprefiles"
+      dlprefiles=
+      for lib in $old_dlprefiles; do
+	case "$dlprefiles " in
+	*" $lib "*) ;;
+	*) dlprefiles="$dlprefiles $lib" ;;
+	esac
+      done
+
+      if test "$build_libtool_libs" = yes; then
+	if test -n "$rpath"; then
+	  case $host in
+	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*)
+	    # these systems don't actually have a c library (as such)!
+	    ;;
+	  *-*-rhapsody* | *-*-darwin1.[012])
+	    # Rhapsody C library is in the System framework
+	    deplibs="$deplibs System.ltframework"
+	    ;;
+	  *-*-netbsd*)
+	    # Don't link with libc until the a.out ld.so is fixed.
+	    ;;
+	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+	    # Do not include libc due to us having libc/libc_r.
+	    ;;
+	  *-*-sco3.2v5* | *-*-sco5v6*)
+	    # Causes problems with __ctype
+	    ;;
+	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+	    # Compiler inserts libc in the correct place for threads to work
+	    ;;
+	  *)
+	    # Add libc to deplibs on all other systems if necessary.
+	    if test "$build_libtool_need_lc" = "yes"; then
+	      deplibs="$deplibs -lc"
+	    fi
+	    ;;
+	  esac
+	fi
+
+	# Transform deplibs into only deplibs that can be linked in shared.
+	name_save=$name
+	libname_save=$libname
+	release_save=$release
+	versuffix_save=$versuffix
+	major_save=$major
+	# I'm not sure if I'm treating the release correctly.  I think
+	# release should show up in the -l (ie -lgmp5) so we don't want to
+	# add it in twice.  Is that correct?
+	release=""
+	versuffix=""
+	major=""
+	newdeplibs=
+	droppeddeps=no
+	case $deplibs_check_method in
+	pass_all)
+	  # Don't check for shared/static.  Everything works.
+	  # This might be a little naive.  We might want to check
+	  # whether the library exists or not.  But this is on
+	  # osf3 & osf4 and I'm not really sure... Just
+	  # implementing what was already the behavior.
+	  newdeplibs=$deplibs
+	  ;;
+	test_compile)
+	  # This code stresses the "libraries are programs" paradigm to its
+	  # limits. Maybe even breaks it.  We compile a program, linking it
+	  # against the deplibs as a proxy for the library.  Then we can check
+	  # whether they linked in statically or dynamically with ldd.
+	  $opt_dry_run || $RM conftest.c
+	  cat > conftest.c <<EOF
+	  int main() { return 0; }
+EOF
+	  $opt_dry_run || $RM conftest
+	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
+	    ldd_output=`ldd conftest`
+	    for i in $deplibs; do
+	      case $i in
+	      -l*)
+		func_stripname -l '' "$i"
+		name=$func_stripname_result
+		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+		  case " $predeps $postdeps " in
+		  *" $i "*)
+		    newdeplibs="$newdeplibs $i"
+		    i=""
+		    ;;
+		  esac
+		fi
+		if test -n "$i" ; then
+		  libname=`eval "\\$ECHO \"$libname_spec\""`
+		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
+		  set dummy $deplib_matches; shift
+		  deplib_match=$1
+		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+		    newdeplibs="$newdeplibs $i"
+		  else
+		    droppeddeps=yes
+		    $ECHO
+		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
+		    $ECHO "*** I have the capability to make that library automatically link in when"
+		    $ECHO "*** you link to this library.  But I can only do this if you have a"
+		    $ECHO "*** shared version of the library, which I believe you do not have"
+		    $ECHO "*** because a test_compile did reveal that the linker did not use it for"
+		    $ECHO "*** its dynamic dependency list that programs get resolved with at runtime."
+		  fi
+		fi
+		;;
+	      *)
+		newdeplibs="$newdeplibs $i"
+		;;
+	      esac
+	    done
+	  else
+	    # Error occurred in the first compile.  Let's try to salvage
+	    # the situation: Compile a separate program for each library.
+	    for i in $deplibs; do
+	      case $i in
+	      -l*)
+		func_stripname -l '' "$i"
+		name=$func_stripname_result
+		$opt_dry_run || $RM conftest
+		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
+		  ldd_output=`ldd conftest`
+		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+		    case " $predeps $postdeps " in
+		    *" $i "*)
+		      newdeplibs="$newdeplibs $i"
+		      i=""
+		      ;;
+		    esac
+		  fi
+		  if test -n "$i" ; then
+		    libname=`eval "\\$ECHO \"$libname_spec\""`
+		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
+		    set dummy $deplib_matches; shift
+		    deplib_match=$1
+		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+		      newdeplibs="$newdeplibs $i"
+		    else
+		      droppeddeps=yes
+		      $ECHO
+		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
+		      $ECHO "*** I have the capability to make that library automatically link in when"
+		      $ECHO "*** you link to this library.  But I can only do this if you have a"
+		      $ECHO "*** shared version of the library, which you do not appear to have"
+		      $ECHO "*** because a test_compile did reveal that the linker did not use this one"
+		      $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime."
+		    fi
+		  fi
+		else
+		  droppeddeps=yes
+		  $ECHO
+		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
+		  $ECHO "*** make it link in!  You will probably need to install it or some"
+		  $ECHO "*** library that it depends on before this library will be fully"
+		  $ECHO "*** functional.  Installing it before continuing would be even better."
+		fi
+		;;
+	      *)
+		newdeplibs="$newdeplibs $i"
+		;;
+	      esac
+	    done
+	  fi
+	  ;;
+	file_magic*)
+	  set dummy $deplibs_check_method; shift
+	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+	  for a_deplib in $deplibs; do
+	    case $a_deplib in
+	    -l*)
+	      func_stripname -l '' "$a_deplib"
+	      name=$func_stripname_result
+	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+		case " $predeps $postdeps " in
+		*" $a_deplib "*)
+		  newdeplibs="$newdeplibs $a_deplib"
+		  a_deplib=""
+		  ;;
+		esac
+	      fi
+	      if test -n "$a_deplib" ; then
+		libname=`eval "\\$ECHO \"$libname_spec\""`
+		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+		  for potent_lib in $potential_libs; do
+		      # Follow soft links.
+		      if ls -lLd "$potent_lib" 2>/dev/null |
+			 $GREP " -> " >/dev/null; then
+			continue
+		      fi
+		      # The statement above tries to avoid entering an
+		      # endless loop below, in case of cyclic links.
+		      # We might still enter an endless loop, since a link
+		      # loop can be closed while we follow links,
+		      # but so what?
+		      potlib="$potent_lib"
+		      while test -h "$potlib" 2>/dev/null; do
+			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
+			case $potliblink in
+			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
+			*) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
+			esac
+		      done
+		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
+			 $SED -e 10q |
+			 $EGREP "$file_magic_regex" > /dev/null; then
+			newdeplibs="$newdeplibs $a_deplib"
+			a_deplib=""
+			break 2
+		      fi
+		  done
+		done
+	      fi
+	      if test -n "$a_deplib" ; then
+		droppeddeps=yes
+		$ECHO
+		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
+		$ECHO "*** I have the capability to make that library automatically link in when"
+		$ECHO "*** you link to this library.  But I can only do this if you have a"
+		$ECHO "*** shared version of the library, which you do not appear to have"
+		$ECHO "*** because I did check the linker path looking for a file starting"
+		if test -z "$potlib" ; then
+		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
+		else
+		  $ECHO "*** with $libname and none of the candidates passed a file format test"
+		  $ECHO "*** using a file magic. Last file checked: $potlib"
+		fi
+	      fi
+	      ;;
+	    *)
+	      # Add a -L argument.
+	      newdeplibs="$newdeplibs $a_deplib"
+	      ;;
+	    esac
+	  done # Gone through all deplibs.
+	  ;;
+	match_pattern*)
+	  set dummy $deplibs_check_method; shift
+	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+	  for a_deplib in $deplibs; do
+	    case $a_deplib in
+	    -l*)
+	      func_stripname -l '' "$a_deplib"
+	      name=$func_stripname_result
+	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+		case " $predeps $postdeps " in
+		*" $a_deplib "*)
+		  newdeplibs="$newdeplibs $a_deplib"
+		  a_deplib=""
+		  ;;
+		esac
+	      fi
+	      if test -n "$a_deplib" ; then
+		libname=`eval "\\$ECHO \"$libname_spec\""`
+		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+		  for potent_lib in $potential_libs; do
+		    potlib="$potent_lib" # see symlink-check above in file_magic test
+		    if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \
+		       $EGREP "$match_pattern_regex" > /dev/null; then
+		      newdeplibs="$newdeplibs $a_deplib"
+		      a_deplib=""
+		      break 2
+		    fi
+		  done
+		done
+	      fi
+	      if test -n "$a_deplib" ; then
+		droppeddeps=yes
+		$ECHO
+		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
+		$ECHO "*** I have the capability to make that library automatically link in when"
+		$ECHO "*** you link to this library.  But I can only do this if you have a"
+		$ECHO "*** shared version of the library, which you do not appear to have"
+		$ECHO "*** because I did check the linker path looking for a file starting"
+		if test -z "$potlib" ; then
+		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
+		else
+		  $ECHO "*** with $libname and none of the candidates passed a file format test"
+		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
+		fi
+	      fi
+	      ;;
+	    *)
+	      # Add a -L argument.
+	      newdeplibs="$newdeplibs $a_deplib"
+	      ;;
+	    esac
+	  done # Gone through all deplibs.
+	  ;;
+	none | unknown | *)
+	  newdeplibs=""
+	  tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \
+	      -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'`
+	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+	    for i in $predeps $postdeps ; do
+	      # can't use Xsed below, because $i might contain '/'
+	      tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"`
+	    done
+	  fi
+	  if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[	 ]//g' |
+	     $GREP . >/dev/null; then
+	    $ECHO
+	    if test "X$deplibs_check_method" = "Xnone"; then
+	      $ECHO "*** Warning: inter-library dependencies are not supported in this platform."
+	    else
+	      $ECHO "*** Warning: inter-library dependencies are not known to be supported."
+	    fi
+	    $ECHO "*** All declared inter-library dependencies are being dropped."
+	    droppeddeps=yes
+	  fi
+	  ;;
+	esac
+	versuffix=$versuffix_save
+	major=$major_save
+	release=$release_save
+	libname=$libname_save
+	name=$name_save
+
+	case $host in
+	*-*-rhapsody* | *-*-darwin1.[012])
+	  # On Rhapsody replace the C library with the System framework
+	  newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
+	  ;;
+	esac
+
+	if test "$droppeddeps" = yes; then
+	  if test "$module" = yes; then
+	    $ECHO
+	    $ECHO "*** Warning: libtool could not satisfy all declared inter-library"
+	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
+	    $ECHO "*** a static module, that should work as long as the dlopening"
+	    $ECHO "*** application is linked with the -dlopen flag."
+	    if test -z "$global_symbol_pipe"; then
+	      $ECHO
+	      $ECHO "*** However, this would only work if libtool was able to extract symbol"
+	      $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
+	      $ECHO "*** not find such a program.  So, this module is probably useless."
+	      $ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
+	    fi
+	    if test "$build_old_libs" = no; then
+	      oldlibs="$output_objdir/$libname.$libext"
+	      build_libtool_libs=module
+	      build_old_libs=yes
+	    else
+	      build_libtool_libs=no
+	    fi
+	  else
+	    $ECHO "*** The inter-library dependencies that have been dropped here will be"
+	    $ECHO "*** automatically added whenever a program is linked with this library"
+	    $ECHO "*** or is declared to -dlopen it."
+
+	    if test "$allow_undefined" = no; then
+	      $ECHO
+	      $ECHO "*** Since this library must not contain undefined symbols,"
+	      $ECHO "*** because either the platform does not support them or"
+	      $ECHO "*** it was explicitly requested with -no-undefined,"
+	      $ECHO "*** libtool will only create a static version of it."
+	      if test "$build_old_libs" = no; then
+		oldlibs="$output_objdir/$libname.$libext"
+		build_libtool_libs=module
+		build_old_libs=yes
+	      else
+		build_libtool_libs=no
+	      fi
+	    fi
+	  fi
+	fi
+	# Done checking deplibs!
+	deplibs=$newdeplibs
+      fi
+      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
+      case $host in
+	*-*-darwin*)
+	  newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
+	  new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
+	  deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
+	  ;;
+      esac
+
+      # move library search paths that coincide with paths to not yet
+      # installed libraries to the beginning of the library search list
+      new_libs=
+      for path in $notinst_path; do
+	case " $new_libs " in
+	*" -L$path/$objdir "*) ;;
+	*)
+	  case " $deplibs " in
+	  *" -L$path/$objdir "*)
+	    new_libs="$new_libs -L$path/$objdir" ;;
+	  esac
+	  ;;
+	esac
+      done
+      for deplib in $deplibs; do
+	case $deplib in
+	-L*)
+	  case " $new_libs " in
+	  *" $deplib "*) ;;
+	  *) new_libs="$new_libs $deplib" ;;
+	  esac
+	  ;;
+	*) new_libs="$new_libs $deplib" ;;
+	esac
+      done
+      deplibs="$new_libs"
+
+      # All the library-specific variables (install_libdir is set above).
+      library_names=
+      old_library=
+      dlname=
+
+      # Test again, we may have decided not to build it any more
+      if test "$build_libtool_libs" = yes; then
+	if test "$hardcode_into_libs" = yes; then
+	  # Hardcode the library paths
+	  hardcode_libdirs=
+	  dep_rpath=
+	  rpath="$finalize_rpath"
+	  test "$mode" != relink && rpath="$compile_rpath$rpath"
+	  for libdir in $rpath; do
+	    if test -n "$hardcode_libdir_flag_spec"; then
+	      if test -n "$hardcode_libdir_separator"; then
+		if test -z "$hardcode_libdirs"; then
+		  hardcode_libdirs="$libdir"
+		else
+		  # Just accumulate the unique libdirs.
+		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		    ;;
+		  *)
+		    hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+		    ;;
+		  esac
+		fi
+	      else
+		eval flag=\"$hardcode_libdir_flag_spec\"
+		dep_rpath="$dep_rpath $flag"
+	      fi
+	    elif test -n "$runpath_var"; then
+	      case "$perm_rpath " in
+	      *" $libdir "*) ;;
+	      *) perm_rpath="$perm_rpath $libdir" ;;
+	      esac
+	    fi
+	  done
+	  # Substitute the hardcoded libdirs into the rpath.
+	  if test -n "$hardcode_libdir_separator" &&
+	     test -n "$hardcode_libdirs"; then
+	    libdir="$hardcode_libdirs"
+	    if test -n "$hardcode_libdir_flag_spec_ld"; then
+	      eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
+	    else
+	      eval dep_rpath=\"$hardcode_libdir_flag_spec\"
+	    fi
+	  fi
+	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
+	    # We should set the runpath_var.
+	    rpath=
+	    for dir in $perm_rpath; do
+	      rpath="$rpath$dir:"
+	    done
+	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
+	  fi
+	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
+	fi
+
+	shlibpath="$finalize_shlibpath"
+	test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
+	if test -n "$shlibpath"; then
+	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
+	fi
+
+	# Get the real and link names of the library.
+	eval shared_ext=\"$shrext_cmds\"
+	eval library_names=\"$library_names_spec\"
+	set dummy $library_names
+	shift
+	realname="$1"
+	shift
+
+	if test -n "$soname_spec"; then
+	  eval soname=\"$soname_spec\"
+	else
+	  soname="$realname"
+	fi
+	if test -z "$dlname"; then
+	  dlname=$soname
+	fi
+
+	lib="$output_objdir/$realname"
+	linknames=
+	for link
+	do
+	  linknames="$linknames $link"
+	done
+
+	# Use standard objects if they are pic
+	test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+	test "X$libobjs" = "X " && libobjs=
+
+	delfiles=
+	if test -n "$export_symbols" && test -n "$include_expsyms"; then
+	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
+	  export_symbols="$output_objdir/$libname.uexp"
+	  delfiles="$delfiles $export_symbols"
+	fi
+
+	orig_export_symbols=
+	case $host_os in
+	cygwin* | mingw* | cegcc*)
+	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
+	    # exporting using user supplied symfile
+	    if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
+	      # and it's NOT already a .def file. Must figure out
+	      # which of the given symbols are data symbols and tag
+	      # them as such. So, trigger use of export_symbols_cmds.
+	      # export_symbols gets reassigned inside the "prepare
+	      # the list of exported symbols" if statement, so the
+	      # include_expsyms logic still works.
+	      orig_export_symbols="$export_symbols"
+	      export_symbols=
+	      always_export_symbols=yes
+	    fi
+	  fi
+	  ;;
+	esac
+
+	# Prepare the list of exported symbols
+	if test -z "$export_symbols"; then
+	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
+	    func_verbose "generating symbol list for \`$libname.la'"
+	    export_symbols="$output_objdir/$libname.exp"
+	    $opt_dry_run || $RM $export_symbols
+	    cmds=$export_symbols_cmds
+	    save_ifs="$IFS"; IFS='~'
+	    for cmd in $cmds; do
+	      IFS="$save_ifs"
+	      eval cmd=\"$cmd\"
+	      func_len " $cmd"
+	      len=$func_len_result
+	      if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+		func_show_eval "$cmd" 'exit $?'
+		skipped_export=false
+	      else
+		# The command line is too long to execute in one step.
+		func_verbose "using reloadable object file for export list..."
+		skipped_export=:
+		# Break out early, otherwise skipped_export may be
+		# set to false by a later but shorter cmd.
+		break
+	      fi
+	    done
+	    IFS="$save_ifs"
+	    if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
+	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
+	    fi
+	  fi
+	fi
+
+	if test -n "$export_symbols" && test -n "$include_expsyms"; then
+	  tmp_export_symbols="$export_symbols"
+	  test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
+	  $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
+	fi
+
+	if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
+	  # The given exports_symbols file has to be filtered, so filter it.
+	  func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
+	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
+	  # 's' commands which not all seds can handle. GNU sed should be fine
+	  # though. Also, the filter scales superlinearly with the number of
+	  # global variables. join(1) would be nice here, but unfortunately
+	  # isn't a blessed tool.
+	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
+	  delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
+	  export_symbols=$output_objdir/$libname.def
+	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
+	fi
+
+	tmp_deplibs=
+	for test_deplib in $deplibs; do
+	  case " $convenience " in
+	  *" $test_deplib "*) ;;
+	  *)
+	    tmp_deplibs="$tmp_deplibs $test_deplib"
+	    ;;
+	  esac
+	done
+	deplibs="$tmp_deplibs"
+
+	if test -n "$convenience"; then
+	  if test -n "$whole_archive_flag_spec" &&
+	    test "$compiler_needs_object" = yes &&
+	    test -z "$libobjs"; then
+	    # extract the archives, so we have objects to list.
+	    # TODO: could optimize this to just extract one archive.
+	    whole_archive_flag_spec=
+	  fi
+	  if test -n "$whole_archive_flag_spec"; then
+	    save_libobjs=$libobjs
+	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+	    test "X$libobjs" = "X " && libobjs=
+	  else
+	    gentop="$output_objdir/${outputname}x"
+	    generated="$generated $gentop"
+
+	    func_extract_archives $gentop $convenience
+	    libobjs="$libobjs $func_extract_archives_result"
+	    test "X$libobjs" = "X " && libobjs=
+	  fi
+	fi
+
+	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
+	  eval flag=\"$thread_safe_flag_spec\"
+	  linker_flags="$linker_flags $flag"
+	fi
+
+	# Make a backup of the uninstalled library when relinking
+	if test "$mode" = relink; then
+	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
+	fi
+
+	# Do each of the archive commands.
+	if test "$module" = yes && test -n "$module_cmds" ; then
+	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+	    eval test_cmds=\"$module_expsym_cmds\"
+	    cmds=$module_expsym_cmds
+	  else
+	    eval test_cmds=\"$module_cmds\"
+	    cmds=$module_cmds
+	  fi
+	else
+	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+	    eval test_cmds=\"$archive_expsym_cmds\"
+	    cmds=$archive_expsym_cmds
+	  else
+	    eval test_cmds=\"$archive_cmds\"
+	    cmds=$archive_cmds
+	  fi
+	fi
+
+	if test "X$skipped_export" != "X:" &&
+	   func_len " $test_cmds" &&
+	   len=$func_len_result &&
+	   test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+	  :
+	else
+	  # The command line is too long to link in one step, link piecewise
+	  # or, if using GNU ld and skipped_export is not :, use a linker
+	  # script.
+
+	  # Save the value of $output and $libobjs because we want to
+	  # use them later.  If we have whole_archive_flag_spec, we
+	  # want to use save_libobjs as it was before
+	  # whole_archive_flag_spec was expanded, because we can't
+	  # assume the linker understands whole_archive_flag_spec.
+	  # This may have to be revisited, in case too many
+	  # convenience libraries get linked in and end up exceeding
+	  # the spec.
+	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
+	    save_libobjs=$libobjs
+	  fi
+	  save_output=$output
+	  output_la=`$ECHO "X$output" | $Xsed -e "$basename"`
+
+	  # Clear the reloadable object creation command queue and
+	  # initialize k to one.
+	  test_cmds=
+	  concat_cmds=
+	  objlist=
+	  last_robj=
+	  k=1
+
+	  if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
+	    output=${output_objdir}/${output_la}.lnkscript
+	    func_verbose "creating GNU ld script: $output"
+	    $ECHO 'INPUT (' > $output
+	    for obj in $save_libobjs
+	    do
+	      $ECHO "$obj" >> $output
+	    done
+	    $ECHO ')' >> $output
+	    delfiles="$delfiles $output"
+	  elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
+	    output=${output_objdir}/${output_la}.lnk
+	    func_verbose "creating linker input file list: $output"
+	    : > $output
+	    set x $save_libobjs
+	    shift
+	    firstobj=
+	    if test "$compiler_needs_object" = yes; then
+	      firstobj="$1 "
+	      shift
+	    fi
+	    for obj
+	    do
+	      $ECHO "$obj" >> $output
+	    done
+	    delfiles="$delfiles $output"
+	    output=$firstobj\"$file_list_spec$output\"
+	  else
+	    if test -n "$save_libobjs"; then
+	      func_verbose "creating reloadable object files..."
+	      output=$output_objdir/$output_la-${k}.$objext
+	      eval test_cmds=\"$reload_cmds\"
+	      func_len " $test_cmds"
+	      len0=$func_len_result
+	      len=$len0
+
+	      # Loop over the list of objects to be linked.
+	      for obj in $save_libobjs
+	      do
+		func_len " $obj"
+		func_arith $len + $func_len_result
+		len=$func_arith_result
+		if test "X$objlist" = X ||
+		   test "$len" -lt "$max_cmd_len"; then
+		  func_append objlist " $obj"
+		else
+		  # The command $test_cmds is almost too long, add a
+		  # command to the queue.
+		  if test "$k" -eq 1 ; then
+		    # The first file doesn't have a previous command to add.
+		    eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
+		  else
+		    # All subsequent reloadable object files will link in
+		    # the last one created.
+		    eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\"
+		  fi
+		  last_robj=$output_objdir/$output_la-${k}.$objext
+		  func_arith $k + 1
+		  k=$func_arith_result
+		  output=$output_objdir/$output_la-${k}.$objext
+		  objlist=$obj
+		  func_len " $last_robj"
+		  func_arith $len0 + $func_len_result
+		  len=$func_arith_result
+		fi
+	      done
+	      # Handle the remaining objects by creating one last
+	      # reloadable object file.  All subsequent reloadable object
+	      # files will link in the last one created.
+	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+	      eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
+	      if test -n "$last_robj"; then
+	        eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
+	      fi
+	      delfiles="$delfiles $output"
+
+	    else
+	      output=
+	    fi
+
+	    if ${skipped_export-false}; then
+	      func_verbose "generating symbol list for \`$libname.la'"
+	      export_symbols="$output_objdir/$libname.exp"
+	      $opt_dry_run || $RM $export_symbols
+	      libobjs=$output
+	      # Append the command to create the export file.
+	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+	      eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
+	      if test -n "$last_robj"; then
+		eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
+	      fi
+	    fi
+
+	    test -n "$save_libobjs" &&
+	      func_verbose "creating a temporary reloadable object file: $output"
+
+	    # Loop through the commands generated above and execute them.
+	    save_ifs="$IFS"; IFS='~'
+	    for cmd in $concat_cmds; do
+	      IFS="$save_ifs"
+	      $opt_silent || {
+		  func_quote_for_expand "$cmd"
+		  eval "func_echo $func_quote_for_expand_result"
+	      }
+	      $opt_dry_run || eval "$cmd" || {
+		lt_exit=$?
+
+		# Restore the uninstalled library and exit
+		if test "$mode" = relink; then
+		  ( cd "$output_objdir" && \
+		    $RM "${realname}T" && \
+		    $MV "${realname}U" "$realname" )
+		fi
+
+		exit $lt_exit
+	      }
+	    done
+	    IFS="$save_ifs"
+
+	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
+	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
+	    fi
+	  fi
+
+          if ${skipped_export-false}; then
+	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
+	      tmp_export_symbols="$export_symbols"
+	      test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
+	      $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
+	    fi
+
+	    if test -n "$orig_export_symbols"; then
+	      # The given exports_symbols file has to be filtered, so filter it.
+	      func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
+	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
+	      # 's' commands which not all seds can handle. GNU sed should be fine
+	      # though. Also, the filter scales superlinearly with the number of
+	      # global variables. join(1) would be nice here, but unfortunately
+	      # isn't a blessed tool.
+	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
+	      delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
+	      export_symbols=$output_objdir/$libname.def
+	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
+	    fi
+	  fi
+
+	  libobjs=$output
+	  # Restore the value of output.
+	  output=$save_output
+
+	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
+	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+	    test "X$libobjs" = "X " && libobjs=
+	  fi
+	  # Expand the library linking commands again to reset the
+	  # value of $libobjs for piecewise linking.
+
+	  # Do each of the archive commands.
+	  if test "$module" = yes && test -n "$module_cmds" ; then
+	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+	      cmds=$module_expsym_cmds
+	    else
+	      cmds=$module_cmds
+	    fi
+	  else
+	    if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+	      cmds=$archive_expsym_cmds
+	    else
+	      cmds=$archive_cmds
+	    fi
+	  fi
+	fi
+
+	if test -n "$delfiles"; then
+	  # Append the command to remove temporary files to $cmds.
+	  eval cmds=\"\$cmds~\$RM $delfiles\"
+	fi
+
+	# Add any objects from preloaded convenience libraries
+	if test -n "$dlprefiles"; then
+	  gentop="$output_objdir/${outputname}x"
+	  generated="$generated $gentop"
+
+	  func_extract_archives $gentop $dlprefiles
+	  libobjs="$libobjs $func_extract_archives_result"
+	  test "X$libobjs" = "X " && libobjs=
+	fi
+
+	save_ifs="$IFS"; IFS='~'
+	for cmd in $cmds; do
+	  IFS="$save_ifs"
+	  eval cmd=\"$cmd\"
+	  $opt_silent || {
+	    func_quote_for_expand "$cmd"
+	    eval "func_echo $func_quote_for_expand_result"
+	  }
+	  $opt_dry_run || eval "$cmd" || {
+	    lt_exit=$?
+
+	    # Restore the uninstalled library and exit
+	    if test "$mode" = relink; then
+	      ( cd "$output_objdir" && \
+	        $RM "${realname}T" && \
+		$MV "${realname}U" "$realname" )
+	    fi
+
+	    exit $lt_exit
+	  }
+	done
+	IFS="$save_ifs"
+
+	# Restore the uninstalled library and exit
+	if test "$mode" = relink; then
+	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
+
+	  if test -n "$convenience"; then
+	    if test -z "$whole_archive_flag_spec"; then
+	      func_show_eval '${RM}r "$gentop"'
+	    fi
+	  fi
+
+	  exit $EXIT_SUCCESS
+	fi
+
+	# Create links to the real library.
+	for linkname in $linknames; do
+	  if test "$realname" != "$linkname"; then
+	    func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
+	  fi
+	done
+
+	# If -module or -export-dynamic was specified, set the dlname.
+	if test "$module" = yes || test "$export_dynamic" = yes; then
+	  # On all known operating systems, these are identical.
+	  dlname="$soname"
+	fi
+      fi
+      ;;
+
+    obj)
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+	func_warning "\`-dlopen' is ignored for objects"
+      fi
+
+      case " $deplibs" in
+      *\ -l* | *\ -L*)
+	func_warning "\`-l' and \`-L' are ignored for objects" ;;
+      esac
+
+      test -n "$rpath" && \
+	func_warning "\`-rpath' is ignored for objects"
+
+      test -n "$xrpath" && \
+	func_warning "\`-R' is ignored for objects"
+
+      test -n "$vinfo" && \
+	func_warning "\`-version-info' is ignored for objects"
+
+      test -n "$release" && \
+	func_warning "\`-release' is ignored for objects"
+
+      case $output in
+      *.lo)
+	test -n "$objs$old_deplibs" && \
+	  func_fatal_error "cannot build library object \`$output' from non-libtool objects"
+
+	libobj=$output
+	func_lo2o "$libobj"
+	obj=$func_lo2o_result
+	;;
+      *)
+	libobj=
+	obj="$output"
+	;;
+      esac
+
+      # Delete the old objects.
+      $opt_dry_run || $RM $obj $libobj
+
+      # Objects from convenience libraries.  This assumes
+      # single-version convenience libraries.  Whenever we create
+      # different ones for PIC/non-PIC, this we'll have to duplicate
+      # the extraction.
+      reload_conv_objs=
+      gentop=
+      # reload_cmds runs $LD directly, so let us get rid of
+      # -Wl from whole_archive_flag_spec and hope we can get by with
+      # turning comma into space..
+      wl=
+
+      if test -n "$convenience"; then
+	if test -n "$whole_archive_flag_spec"; then
+	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
+	  reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
+	else
+	  gentop="$output_objdir/${obj}x"
+	  generated="$generated $gentop"
+
+	  func_extract_archives $gentop $convenience
+	  reload_conv_objs="$reload_objs $func_extract_archives_result"
+	fi
+      fi
+
+      # Create the old-style object.
+      reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
+
+      output="$obj"
+      func_execute_cmds "$reload_cmds" 'exit $?'
+
+      # Exit if we aren't doing a library object file.
+      if test -z "$libobj"; then
+	if test -n "$gentop"; then
+	  func_show_eval '${RM}r "$gentop"'
+	fi
+
+	exit $EXIT_SUCCESS
+      fi
+
+      if test "$build_libtool_libs" != yes; then
+	if test -n "$gentop"; then
+	  func_show_eval '${RM}r "$gentop"'
+	fi
+
+	# Create an invalid libtool object if no PIC, so that we don't
+	# accidentally link it into a program.
+	# $show "echo timestamp > $libobj"
+	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
+	exit $EXIT_SUCCESS
+      fi
+
+      if test -n "$pic_flag" || test "$pic_mode" != default; then
+	# Only do commands if we really have different PIC objects.
+	reload_objs="$libobjs $reload_conv_objs"
+	output="$libobj"
+	func_execute_cmds "$reload_cmds" 'exit $?'
+      fi
+
+      if test -n "$gentop"; then
+	func_show_eval '${RM}r "$gentop"'
+      fi
+
+      exit $EXIT_SUCCESS
+      ;;
+
+    prog)
+      case $host in
+	*cygwin*) func_stripname '' '.exe' "$output"
+	          output=$func_stripname_result.exe;;
+      esac
+      test -n "$vinfo" && \
+	func_warning "\`-version-info' is ignored for programs"
+
+      test -n "$release" && \
+	func_warning "\`-release' is ignored for programs"
+
+      test "$preload" = yes \
+        && test "$dlopen_support" = unknown \
+	&& test "$dlopen_self" = unknown \
+	&& test "$dlopen_self_static" = unknown && \
+	  func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
+
+      case $host in
+      *-*-rhapsody* | *-*-darwin1.[012])
+	# On Rhapsody replace the C library is the System framework
+	compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
+	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
+	;;
+      esac
+
+      case $host in
+      *-*-darwin*)
+	# Don't allow lazy linking, it breaks C++ global constructors
+	# But is supposedly fixed on 10.4 or later (yay!).
+	if test "$tagname" = CXX ; then
+	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
+	    10.[0123])
+	      compile_command="$compile_command ${wl}-bind_at_load"
+	      finalize_command="$finalize_command ${wl}-bind_at_load"
+	    ;;
+	  esac
+	fi
+	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
+	compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
+	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
+	;;
+      esac
+
+
+      # move library search paths that coincide with paths to not yet
+      # installed libraries to the beginning of the library search list
+      new_libs=
+      for path in $notinst_path; do
+	case " $new_libs " in
+	*" -L$path/$objdir "*) ;;
+	*)
+	  case " $compile_deplibs " in
+	  *" -L$path/$objdir "*)
+	    new_libs="$new_libs -L$path/$objdir" ;;
+	  esac
+	  ;;
+	esac
+      done
+      for deplib in $compile_deplibs; do
+	case $deplib in
+	-L*)
+	  case " $new_libs " in
+	  *" $deplib "*) ;;
+	  *) new_libs="$new_libs $deplib" ;;
+	  esac
+	  ;;
+	*) new_libs="$new_libs $deplib" ;;
+	esac
+      done
+      compile_deplibs="$new_libs"
+
+
+      compile_command="$compile_command $compile_deplibs"
+      finalize_command="$finalize_command $finalize_deplibs"
+
+      if test -n "$rpath$xrpath"; then
+	# If the user specified any rpath flags, then add them.
+	for libdir in $rpath $xrpath; do
+	  # This is the magic to use -rpath.
+	  case "$finalize_rpath " in
+	  *" $libdir "*) ;;
+	  *) finalize_rpath="$finalize_rpath $libdir" ;;
+	  esac
+	done
+      fi
+
+      # Now hardcode the library paths
+      rpath=
+      hardcode_libdirs=
+      for libdir in $compile_rpath $finalize_rpath; do
+	if test -n "$hardcode_libdir_flag_spec"; then
+	  if test -n "$hardcode_libdir_separator"; then
+	    if test -z "$hardcode_libdirs"; then
+	      hardcode_libdirs="$libdir"
+	    else
+	      # Just accumulate the unique libdirs.
+	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		;;
+	      *)
+		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+		;;
+	      esac
+	    fi
+	  else
+	    eval flag=\"$hardcode_libdir_flag_spec\"
+	    rpath="$rpath $flag"
+	  fi
+	elif test -n "$runpath_var"; then
+	  case "$perm_rpath " in
+	  *" $libdir "*) ;;
+	  *) perm_rpath="$perm_rpath $libdir" ;;
+	  esac
+	fi
+	case $host in
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+	  testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
+	  case :$dllsearchpath: in
+	  *":$libdir:"*) ;;
+	  ::) dllsearchpath=$libdir;;
+	  *) dllsearchpath="$dllsearchpath:$libdir";;
+	  esac
+	  case :$dllsearchpath: in
+	  *":$testbindir:"*) ;;
+	  ::) dllsearchpath=$testbindir;;
+	  *) dllsearchpath="$dllsearchpath:$testbindir";;
+	  esac
+	  ;;
+	esac
+      done
+      # Substitute the hardcoded libdirs into the rpath.
+      if test -n "$hardcode_libdir_separator" &&
+	 test -n "$hardcode_libdirs"; then
+	libdir="$hardcode_libdirs"
+	eval rpath=\" $hardcode_libdir_flag_spec\"
+      fi
+      compile_rpath="$rpath"
+
+      rpath=
+      hardcode_libdirs=
+      for libdir in $finalize_rpath; do
+	if test -n "$hardcode_libdir_flag_spec"; then
+	  if test -n "$hardcode_libdir_separator"; then
+	    if test -z "$hardcode_libdirs"; then
+	      hardcode_libdirs="$libdir"
+	    else
+	      # Just accumulate the unique libdirs.
+	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		;;
+	      *)
+		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+		;;
+	      esac
+	    fi
+	  else
+	    eval flag=\"$hardcode_libdir_flag_spec\"
+	    rpath="$rpath $flag"
+	  fi
+	elif test -n "$runpath_var"; then
+	  case "$finalize_perm_rpath " in
+	  *" $libdir "*) ;;
+	  *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
+	  esac
+	fi
+      done
+      # Substitute the hardcoded libdirs into the rpath.
+      if test -n "$hardcode_libdir_separator" &&
+	 test -n "$hardcode_libdirs"; then
+	libdir="$hardcode_libdirs"
+	eval rpath=\" $hardcode_libdir_flag_spec\"
+      fi
+      finalize_rpath="$rpath"
+
+      if test -n "$libobjs" && test "$build_old_libs" = yes; then
+	# Transform all the library objects into standard objects.
+	compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+	finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+      fi
+
+      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
+
+      # template prelinking step
+      if test -n "$prelink_cmds"; then
+	func_execute_cmds "$prelink_cmds" 'exit $?'
+      fi
+
+      wrappers_required=yes
+      case $host in
+      *cygwin* | *mingw* )
+        if test "$build_libtool_libs" != yes; then
+          wrappers_required=no
+        fi
+        ;;
+      *cegcc)
+        # Disable wrappers for cegcc, we are cross compiling anyway.
+        wrappers_required=no
+        ;;
+      *)
+        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
+          wrappers_required=no
+        fi
+        ;;
+      esac
+      if test "$wrappers_required" = no; then
+	# Replace the output file specification.
+	compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+	link_command="$compile_command$compile_rpath"
+
+	# We have no uninstalled library dependencies, so finalize right now.
+	exit_status=0
+	func_show_eval "$link_command" 'exit_status=$?'
+
+	# Delete the generated files.
+	if test -f "$output_objdir/${outputname}S.${objext}"; then
+	  func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
+	fi
+
+	exit $exit_status
+      fi
+
+      if test -n "$compile_shlibpath$finalize_shlibpath"; then
+	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
+      fi
+      if test -n "$finalize_shlibpath"; then
+	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
+      fi
+
+      compile_var=
+      finalize_var=
+      if test -n "$runpath_var"; then
+	if test -n "$perm_rpath"; then
+	  # We should set the runpath_var.
+	  rpath=
+	  for dir in $perm_rpath; do
+	    rpath="$rpath$dir:"
+	  done
+	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
+	fi
+	if test -n "$finalize_perm_rpath"; then
+	  # We should set the runpath_var.
+	  rpath=
+	  for dir in $finalize_perm_rpath; do
+	    rpath="$rpath$dir:"
+	  done
+	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
+	fi
+      fi
+
+      if test "$no_install" = yes; then
+	# We don't need to create a wrapper script.
+	link_command="$compile_var$compile_command$compile_rpath"
+	# Replace the output file specification.
+	link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+	# Delete the old output file.
+	$opt_dry_run || $RM $output
+	# Link the executable and exit
+	func_show_eval "$link_command" 'exit $?'
+	exit $EXIT_SUCCESS
+      fi
+
+      if test "$hardcode_action" = relink; then
+	# Fast installation is not supported
+	link_command="$compile_var$compile_command$compile_rpath"
+	relink_command="$finalize_var$finalize_command$finalize_rpath"
+
+	func_warning "this platform does not like uninstalled shared libraries"
+	func_warning "\`$output' will be relinked during installation"
+      else
+	if test "$fast_install" != no; then
+	  link_command="$finalize_var$compile_command$finalize_rpath"
+	  if test "$fast_install" = yes; then
+	    relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
+	  else
+	    # fast_install is set to needless
+	    relink_command=
+	  fi
+	else
+	  link_command="$compile_var$compile_command$compile_rpath"
+	  relink_command="$finalize_var$finalize_command$finalize_rpath"
+	fi
+      fi
+
+      # Replace the output file specification.
+      link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
+
+      # Delete the old output files.
+      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
+
+      func_show_eval "$link_command" 'exit $?'
+
+      # Now create the wrapper script.
+      func_verbose "creating $output"
+
+      # Quote the relink command for shipping.
+      if test -n "$relink_command"; then
+	# Preserve any variables that may affect compiler behavior
+	for var in $variables_saved_for_relink; do
+	  if eval test -z \"\${$var+set}\"; then
+	    relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
+	  elif eval var_value=\$$var; test -z "$var_value"; then
+	    relink_command="$var=; export $var; $relink_command"
+	  else
+	    func_quote_for_eval "$var_value"
+	    relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
+	  fi
+	done
+	relink_command="(cd `pwd`; $relink_command)"
+	relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+      fi
+
+      # Quote $ECHO for shipping.
+      if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then
+	case $progpath in
+	[\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
+	*) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
+	esac
+	qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"`
+      else
+	qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"`
+      fi
+
+      # Only actually do things if not in dry run mode.
+      $opt_dry_run || {
+	# win32 will think the script is a binary if it has
+	# a .exe suffix, so we strip it off here.
+	case $output in
+	  *.exe) func_stripname '' '.exe' "$output"
+	         output=$func_stripname_result ;;
+	esac
+	# test for cygwin because mv fails w/o .exe extensions
+	case $host in
+	  *cygwin*)
+	    exeext=.exe
+	    func_stripname '' '.exe' "$outputname"
+	    outputname=$func_stripname_result ;;
+	  *) exeext= ;;
+	esac
+	case $host in
+	  *cygwin* | *mingw* )
+	    func_dirname_and_basename "$output" "" "."
+	    output_name=$func_basename_result
+	    output_path=$func_dirname_result
+	    cwrappersource="$output_path/$objdir/lt-$output_name.c"
+	    cwrapper="$output_path/$output_name.exe"
+	    $RM $cwrappersource $cwrapper
+	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
+
+	    func_emit_cwrapperexe_src > $cwrappersource
+
+	    # The wrapper executable is built using the $host compiler,
+	    # because it contains $host paths and files. If cross-
+	    # compiling, it, like the target executable, must be
+	    # executed on the $host or under an emulation environment.
+	    $opt_dry_run || {
+	      $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
+	      $STRIP $cwrapper
+	    }
+
+	    # Now, create the wrapper script for func_source use:
+	    func_ltwrapper_scriptname $cwrapper
+	    $RM $func_ltwrapper_scriptname_result
+	    trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
+	    $opt_dry_run || {
+	      # note: this script will not be executed, so do not chmod.
+	      if test "x$build" = "x$host" ; then
+		$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
+	      else
+		func_emit_wrapper no > $func_ltwrapper_scriptname_result
+	      fi
+	    }
+	  ;;
+	  * )
+	    $RM $output
+	    trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
+
+	    func_emit_wrapper no > $output
+	    chmod +x $output
+	  ;;
+	esac
+      }
+      exit $EXIT_SUCCESS
+      ;;
+    esac
+
+    # See if we need to build an old-fashioned archive.
+    for oldlib in $oldlibs; do
+
+      if test "$build_libtool_libs" = convenience; then
+	oldobjs="$libobjs_save $symfileobj"
+	addlibs="$convenience"
+	build_libtool_libs=no
+      else
+	if test "$build_libtool_libs" = module; then
+	  oldobjs="$libobjs_save"
+	  build_libtool_libs=no
+	else
+	  oldobjs="$old_deplibs $non_pic_objects"
+	  if test "$preload" = yes && test -f "$symfileobj"; then
+	    oldobjs="$oldobjs $symfileobj"
+	  fi
+	fi
+	addlibs="$old_convenience"
+      fi
+
+      if test -n "$addlibs"; then
+	gentop="$output_objdir/${outputname}x"
+	generated="$generated $gentop"
+
+	func_extract_archives $gentop $addlibs
+	oldobjs="$oldobjs $func_extract_archives_result"
+      fi
+
+      # Do each command in the archive commands.
+      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
+	cmds=$old_archive_from_new_cmds
+      else
+
+	# Add any objects from preloaded convenience libraries
+	if test -n "$dlprefiles"; then
+	  gentop="$output_objdir/${outputname}x"
+	  generated="$generated $gentop"
+
+	  func_extract_archives $gentop $dlprefiles
+	  oldobjs="$oldobjs $func_extract_archives_result"
+	fi
+
+	# POSIX demands no paths to be encoded in archives.  We have
+	# to avoid creating archives with duplicate basenames if we
+	# might have to extract them afterwards, e.g., when creating a
+	# static archive out of a convenience library, or when linking
+	# the entirety of a libtool archive into another (currently
+	# not supported by libtool).
+	if (for obj in $oldobjs
+	    do
+	      func_basename "$obj"
+	      $ECHO "$func_basename_result"
+	    done | sort | sort -uc >/dev/null 2>&1); then
+	  :
+	else
+	  $ECHO "copying selected object files to avoid basename conflicts..."
+	  gentop="$output_objdir/${outputname}x"
+	  generated="$generated $gentop"
+	  func_mkdir_p "$gentop"
+	  save_oldobjs=$oldobjs
+	  oldobjs=
+	  counter=1
+	  for obj in $save_oldobjs
+	  do
+	    func_basename "$obj"
+	    objbase="$func_basename_result"
+	    case " $oldobjs " in
+	    " ") oldobjs=$obj ;;
+	    *[\ /]"$objbase "*)
+	      while :; do
+		# Make sure we don't pick an alternate name that also
+		# overlaps.
+		newobj=lt$counter-$objbase
+		func_arith $counter + 1
+		counter=$func_arith_result
+		case " $oldobjs " in
+		*[\ /]"$newobj "*) ;;
+		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
+		esac
+	      done
+	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
+	      oldobjs="$oldobjs $gentop/$newobj"
+	      ;;
+	    *) oldobjs="$oldobjs $obj" ;;
+	    esac
+	  done
+	fi
+	eval cmds=\"$old_archive_cmds\"
+
+	func_len " $cmds"
+	len=$func_len_result
+	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+	  cmds=$old_archive_cmds
+	else
+	  # the command line is too long to link in one step, link in parts
+	  func_verbose "using piecewise archive linking..."
+	  save_RANLIB=$RANLIB
+	  RANLIB=:
+	  objlist=
+	  concat_cmds=
+	  save_oldobjs=$oldobjs
+	  oldobjs=
+	  # Is there a better way of finding the last object in the list?
+	  for obj in $save_oldobjs
+	  do
+	    last_oldobj=$obj
+	  done
+	  eval test_cmds=\"$old_archive_cmds\"
+	  func_len " $test_cmds"
+	  len0=$func_len_result
+	  len=$len0
+	  for obj in $save_oldobjs
+	  do
+	    func_len " $obj"
+	    func_arith $len + $func_len_result
+	    len=$func_arith_result
+	    func_append objlist " $obj"
+	    if test "$len" -lt "$max_cmd_len"; then
+	      :
+	    else
+	      # the above command should be used before it gets too long
+	      oldobjs=$objlist
+	      if test "$obj" = "$last_oldobj" ; then
+		RANLIB=$save_RANLIB
+	      fi
+	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
+	      objlist=
+	      len=$len0
+	    fi
+	  done
+	  RANLIB=$save_RANLIB
+	  oldobjs=$objlist
+	  if test "X$oldobjs" = "X" ; then
+	    eval cmds=\"\$concat_cmds\"
+	  else
+	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
+	  fi
+	fi
+      fi
+      func_execute_cmds "$cmds" 'exit $?'
+    done
+
+    test -n "$generated" && \
+      func_show_eval "${RM}r$generated"
+
+    # Now create the libtool archive.
+    case $output in
+    *.la)
+      old_library=
+      test "$build_old_libs" = yes && old_library="$libname.$libext"
+      func_verbose "creating $output"
+
+      # Preserve any variables that may affect compiler behavior
+      for var in $variables_saved_for_relink; do
+	if eval test -z \"\${$var+set}\"; then
+	  relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
+	elif eval var_value=\$$var; test -z "$var_value"; then
+	  relink_command="$var=; export $var; $relink_command"
+	else
+	  func_quote_for_eval "$var_value"
+	  relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
+	fi
+      done
+      # Quote the link command for shipping.
+      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
+      relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+      if test "$hardcode_automatic" = yes ; then
+	relink_command=
+      fi
+
+      # Only create the output if not a dry run.
+      $opt_dry_run || {
+	for installed in no yes; do
+	  if test "$installed" = yes; then
+	    if test -z "$install_libdir"; then
+	      break
+	    fi
+	    output="$output_objdir/$outputname"i
+	    # Replace all uninstalled libtool libraries with the installed ones
+	    newdependency_libs=
+	    for deplib in $dependency_libs; do
+	      case $deplib in
+	      *.la)
+		func_basename "$deplib"
+		name="$func_basename_result"
+		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+		test -z "$libdir" && \
+		  func_fatal_error "\`$deplib' is not a valid libtool archive"
+		newdependency_libs="$newdependency_libs $libdir/$name"
+		;;
+	      *) newdependency_libs="$newdependency_libs $deplib" ;;
+	      esac
+	    done
+	    dependency_libs="$newdependency_libs"
+	    newdlfiles=
+
+	    for lib in $dlfiles; do
+	      case $lib in
+	      *.la)
+	        func_basename "$lib"
+		name="$func_basename_result"
+		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+		test -z "$libdir" && \
+		  func_fatal_error "\`$lib' is not a valid libtool archive"
+		newdlfiles="$newdlfiles $libdir/$name"
+		;;
+	      *) newdlfiles="$newdlfiles $lib" ;;
+	      esac
+	    done
+	    dlfiles="$newdlfiles"
+	    newdlprefiles=
+	    for lib in $dlprefiles; do
+	      case $lib in
+	      *.la)
+		# Only pass preopened files to the pseudo-archive (for
+		# eventual linking with the app. that links it) if we
+		# didn't already link the preopened objects directly into
+		# the library:
+		func_basename "$lib"
+		name="$func_basename_result"
+		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+		test -z "$libdir" && \
+		  func_fatal_error "\`$lib' is not a valid libtool archive"
+		newdlprefiles="$newdlprefiles $libdir/$name"
+		;;
+	      esac
+	    done
+	    dlprefiles="$newdlprefiles"
+	  else
+	    newdlfiles=
+	    for lib in $dlfiles; do
+	      case $lib in
+		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+		*) abs=`pwd`"/$lib" ;;
+	      esac
+	      newdlfiles="$newdlfiles $abs"
+	    done
+	    dlfiles="$newdlfiles"
+	    newdlprefiles=
+	    for lib in $dlprefiles; do
+	      case $lib in
+		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+		*) abs=`pwd`"/$lib" ;;
+	      esac
+	      newdlprefiles="$newdlprefiles $abs"
+	    done
+	    dlprefiles="$newdlprefiles"
+	  fi
+	  $RM $output
+	  # place dlname in correct position for cygwin
+	  tdlname=$dlname
+	  case $host,$output,$installed,$module,$dlname in
+	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
+	  esac
+	  $ECHO > $output "\
+# $outputname - a libtool library file
+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname='$tdlname'
+
+# Names of this library.
+library_names='$library_names'
+
+# The name of the static archive.
+old_library='$old_library'
+
+# Linker flags that can not go in dependency_libs.
+inherited_linker_flags='$new_inherited_linker_flags'
+
+# Libraries that this one depends upon.
+dependency_libs='$dependency_libs'
+
+# Names of additional weak libraries provided by this library
+weak_library_names='$weak_libs'
+
+# Version information for $libname.
+current=$current
+age=$age
+revision=$revision
+
+# Is this an already installed library?
+installed=$installed
+
+# Should we warn about portability when linking against -modules?
+shouldnotlink=$module
+
+# Files to dlopen/dlpreopen
+dlopen='$dlfiles'
+dlpreopen='$dlprefiles'
+
+# Directory that this library needs to be installed in:
+libdir='$install_libdir'"
+	  if test "$installed" = no && test "$need_relink" = yes; then
+	    $ECHO >> $output "\
+relink_command=\"$relink_command\""
+	  fi
+	done
+      }
+
+      # Do a symbolic link so that the libtool archive can be found in
+      # LD_LIBRARY_PATH before the program is installed.
+      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
+      ;;
+    esac
+    exit $EXIT_SUCCESS
+}
+
+{ test "$mode" = link || test "$mode" = relink; } &&
+    func_mode_link ${1+"$@"}
+
+
+# func_mode_uninstall arg...
+func_mode_uninstall ()
+{
+    $opt_debug
+    RM="$nonopt"
+    files=
+    rmforce=
+    exit_status=0
+
+    # This variable tells wrapper scripts just to set variables rather
+    # than running their programs.
+    libtool_install_magic="$magic"
+
+    for arg
+    do
+      case $arg in
+      -f) RM="$RM $arg"; rmforce=yes ;;
+      -*) RM="$RM $arg" ;;
+      *) files="$files $arg" ;;
+      esac
+    done
+
+    test -z "$RM" && \
+      func_fatal_help "you must specify an RM program"
+
+    rmdirs=
+
+    origobjdir="$objdir"
+    for file in $files; do
+      func_dirname "$file" "" "."
+      dir="$func_dirname_result"
+      if test "X$dir" = X.; then
+	objdir="$origobjdir"
+      else
+	objdir="$dir/$origobjdir"
+      fi
+      func_basename "$file"
+      name="$func_basename_result"
+      test "$mode" = uninstall && objdir="$dir"
+
+      # Remember objdir for removal later, being careful to avoid duplicates
+      if test "$mode" = clean; then
+	case " $rmdirs " in
+	  *" $objdir "*) ;;
+	  *) rmdirs="$rmdirs $objdir" ;;
+	esac
+      fi
+
+      # Don't error if the file doesn't exist and rm -f was used.
+      if { test -L "$file"; } >/dev/null 2>&1 ||
+	 { test -h "$file"; } >/dev/null 2>&1 ||
+	 test -f "$file"; then
+	:
+      elif test -d "$file"; then
+	exit_status=1
+	continue
+      elif test "$rmforce" = yes; then
+	continue
+      fi
+
+      rmfiles="$file"
+
+      case $name in
+      *.la)
+	# Possibly a libtool archive, so verify it.
+	if func_lalib_p "$file"; then
+	  func_source $dir/$name
+
+	  # Delete the libtool libraries and symlinks.
+	  for n in $library_names; do
+	    rmfiles="$rmfiles $objdir/$n"
+	  done
+	  test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
+
+	  case "$mode" in
+	  clean)
+	    case "  $library_names " in
+	    # "  " in the beginning catches empty $dlname
+	    *" $dlname "*) ;;
+	    *) rmfiles="$rmfiles $objdir/$dlname" ;;
+	    esac
+	    test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
+	    ;;
+	  uninstall)
+	    if test -n "$library_names"; then
+	      # Do each command in the postuninstall commands.
+	      func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
+	    fi
+
+	    if test -n "$old_library"; then
+	      # Do each command in the old_postuninstall commands.
+	      func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
+	    fi
+	    # FIXME: should reinstall the best remaining shared library.
+	    ;;
+	  esac
+	fi
+	;;
+
+      *.lo)
+	# Possibly a libtool object, so verify it.
+	if func_lalib_p "$file"; then
+
+	  # Read the .lo file
+	  func_source $dir/$name
+
+	  # Add PIC object to the list of files to remove.
+	  if test -n "$pic_object" &&
+	     test "$pic_object" != none; then
+	    rmfiles="$rmfiles $dir/$pic_object"
+	  fi
+
+	  # Add non-PIC object to the list of files to remove.
+	  if test -n "$non_pic_object" &&
+	     test "$non_pic_object" != none; then
+	    rmfiles="$rmfiles $dir/$non_pic_object"
+	  fi
+	fi
+	;;
+
+      *)
+	if test "$mode" = clean ; then
+	  noexename=$name
+	  case $file in
+	  *.exe)
+	    func_stripname '' '.exe' "$file"
+	    file=$func_stripname_result
+	    func_stripname '' '.exe' "$name"
+	    noexename=$func_stripname_result
+	    # $file with .exe has already been added to rmfiles,
+	    # add $file without .exe
+	    rmfiles="$rmfiles $file"
+	    ;;
+	  esac
+	  # Do a test to see if this is a libtool program.
+	  if func_ltwrapper_p "$file"; then
+	    if func_ltwrapper_executable_p "$file"; then
+	      func_ltwrapper_scriptname "$file"
+	      relink_command=
+	      func_source $func_ltwrapper_scriptname_result
+	      rmfiles="$rmfiles $func_ltwrapper_scriptname_result"
+	    else
+	      relink_command=
+	      func_source $dir/$noexename
+	    fi
+
+	    # note $name still contains .exe if it was in $file originally
+	    # as does the version of $file that was added into $rmfiles
+	    rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
+	    if test "$fast_install" = yes && test -n "$relink_command"; then
+	      rmfiles="$rmfiles $objdir/lt-$name"
+	    fi
+	    if test "X$noexename" != "X$name" ; then
+	      rmfiles="$rmfiles $objdir/lt-${noexename}.c"
+	    fi
+	  fi
+	fi
+	;;
+      esac
+      func_show_eval "$RM $rmfiles" 'exit_status=1'
+    done
+    objdir="$origobjdir"
+
+    # Try to remove the ${objdir}s in the directories where we deleted files
+    for dir in $rmdirs; do
+      if test -d "$dir"; then
+	func_show_eval "rmdir $dir >/dev/null 2>&1"
+      fi
+    done
+
+    exit $exit_status
+}
+
+{ test "$mode" = uninstall || test "$mode" = clean; } &&
+    func_mode_uninstall ${1+"$@"}
+
+test -z "$mode" && {
+  help="$generic_help"
+  func_fatal_help "you must specify a MODE"
+}
+
+test -z "$exec_cmd" && \
+  func_fatal_help "invalid operation mode \`$mode'"
+
+if test -n "$exec_cmd"; then
+  eval exec "$exec_cmd"
+  exit $EXIT_FAILURE
+fi
+
+exit $exit_status
+
+
+# The TAGs below are defined such that we never get into a situation
+# in which we disable both kinds of libraries.  Given conflicting
+# choices, we go for a static library, that is the most portable,
+# since we can't tell whether shared libraries were disabled because
+# the user asked for that or because the platform doesn't support
+# them.  This is particularly important on AIX, because we don't
+# support having both static and shared libraries enabled at the same
+# time on that platform, so we default to a shared-only configuration.
+# If a disable-shared tag is given, we'll fallback to a static-only
+# configuration.  But we'll never go from static-only to shared-only.
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
+build_libtool_libs=no
+build_old_libs=yes
+# ### END LIBTOOL TAG CONFIG: disable-shared
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-static
+build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
+# ### END LIBTOOL TAG CONFIG: disable-static
+
+# Local Variables:
+# mode:shell-script
+# sh-indentation:2
+# End:
+# vi:sw=2
+
diff --git a/google-breakpad/autotools/missing b/google-breakpad/autotools/missing
new file mode 100755
index 0000000..db98974
--- /dev/null
+++ b/google-breakpad/autotools/missing
@@ -0,0 +1,215 @@
+#! /bin/sh
+# Common wrapper for a few potentially missing GNU programs.
+
+scriptversion=2013-10-28.13; # UTC
+
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+if test $# -eq 0; then
+  echo 1>&2 "Try '$0 --help' for more information"
+  exit 1
+fi
+
+case $1 in
+
+  --is-lightweight)
+    # Used by our autoconf macros to check whether the available missing
+    # script is modern enough.
+    exit 0
+    ;;
+
+  --run)
+    # Back-compat with the calling convention used by older automake.
+    shift
+    ;;
+
+  -h|--h|--he|--hel|--help)
+    echo "\
+$0 [OPTION]... PROGRAM [ARGUMENT]...
+
+Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
+to PROGRAM being missing or too old.
+
+Options:
+  -h, --help      display this help and exit
+  -v, --version   output version information and exit
+
+Supported PROGRAM values:
+  aclocal   autoconf  autoheader   autom4te  automake  makeinfo
+  bison     yacc      flex         lex       help2man
+
+Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
+'g' are ignored when checking the name.
+
+Send bug reports to <bug-automake@gnu.org>."
+    exit $?
+    ;;
+
+  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
+    echo "missing $scriptversion (GNU Automake)"
+    exit $?
+    ;;
+
+  -*)
+    echo 1>&2 "$0: unknown '$1' option"
+    echo 1>&2 "Try '$0 --help' for more information"
+    exit 1
+    ;;
+
+esac
+
+# Run the given program, remember its exit status.
+"$@"; st=$?
+
+# If it succeeded, we are done.
+test $st -eq 0 && exit 0
+
+# Also exit now if we it failed (or wasn't found), and '--version' was
+# passed; such an option is passed most likely to detect whether the
+# program is present and works.
+case $2 in --version|--help) exit $st;; esac
+
+# Exit code 63 means version mismatch.  This often happens when the user
+# tries to use an ancient version of a tool on a file that requires a
+# minimum version.
+if test $st -eq 63; then
+  msg="probably too old"
+elif test $st -eq 127; then
+  # Program was missing.
+  msg="missing on your system"
+else
+  # Program was found and executed, but failed.  Give up.
+  exit $st
+fi
+
+perl_URL=http://www.perl.org/
+flex_URL=http://flex.sourceforge.net/
+gnu_software_URL=http://www.gnu.org/software
+
+program_details ()
+{
+  case $1 in
+    aclocal|automake)
+      echo "The '$1' program is part of the GNU Automake package:"
+      echo "<$gnu_software_URL/automake>"
+      echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
+      echo "<$gnu_software_URL/autoconf>"
+      echo "<$gnu_software_URL/m4/>"
+      echo "<$perl_URL>"
+      ;;
+    autoconf|autom4te|autoheader)
+      echo "The '$1' program is part of the GNU Autoconf package:"
+      echo "<$gnu_software_URL/autoconf/>"
+      echo "It also requires GNU m4 and Perl in order to run:"
+      echo "<$gnu_software_URL/m4/>"
+      echo "<$perl_URL>"
+      ;;
+  esac
+}
+
+give_advice ()
+{
+  # Normalize program name to check for.
+  normalized_program=`echo "$1" | sed '
+    s/^gnu-//; t
+    s/^gnu//; t
+    s/^g//; t'`
+
+  printf '%s\n' "'$1' is $msg."
+
+  configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
+  case $normalized_program in
+    autoconf*)
+      echo "You should only need it if you modified 'configure.ac',"
+      echo "or m4 files included by it."
+      program_details 'autoconf'
+      ;;
+    autoheader*)
+      echo "You should only need it if you modified 'acconfig.h' or"
+      echo "$configure_deps."
+      program_details 'autoheader'
+      ;;
+    automake*)
+      echo "You should only need it if you modified 'Makefile.am' or"
+      echo "$configure_deps."
+      program_details 'automake'
+      ;;
+    aclocal*)
+      echo "You should only need it if you modified 'acinclude.m4' or"
+      echo "$configure_deps."
+      program_details 'aclocal'
+      ;;
+   autom4te*)
+      echo "You might have modified some maintainer files that require"
+      echo "the 'autom4te' program to be rebuilt."
+      program_details 'autom4te'
+      ;;
+    bison*|yacc*)
+      echo "You should only need it if you modified a '.y' file."
+      echo "You may want to install the GNU Bison package:"
+      echo "<$gnu_software_URL/bison/>"
+      ;;
+    lex*|flex*)
+      echo "You should only need it if you modified a '.l' file."
+      echo "You may want to install the Fast Lexical Analyzer package:"
+      echo "<$flex_URL>"
+      ;;
+    help2man*)
+      echo "You should only need it if you modified a dependency" \
+           "of a man page."
+      echo "You may want to install the GNU Help2man package:"
+      echo "<$gnu_software_URL/help2man/>"
+    ;;
+    makeinfo*)
+      echo "You should only need it if you modified a '.texi' file, or"
+      echo "any other file indirectly affecting the aspect of the manual."
+      echo "You might want to install the Texinfo package:"
+      echo "<$gnu_software_URL/texinfo/>"
+      echo "The spurious makeinfo call might also be the consequence of"
+      echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
+      echo "want to install GNU make:"
+      echo "<$gnu_software_URL/make/>"
+      ;;
+    *)
+      echo "You might have modified some files without having the proper"
+      echo "tools for further handling them.  Check the 'README' file, it"
+      echo "often tells you about the needed prerequisites for installing"
+      echo "this package.  You may also peek at any GNU archive site, in"
+      echo "case some other package contains this missing '$1' program."
+      ;;
+  esac
+}
+
+give_advice "$1" | sed -e '1s/^/WARNING: /' \
+                       -e '2,$s/^/         /' >&2
+
+# Propagate the correct exit status (expected to be 127 for a program
+# not found, 63 for a program that failed due to version mismatch).
+exit $st
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/google-breakpad/autotools/test-driver b/google-breakpad/autotools/test-driver
new file mode 100755
index 0000000..d306056
--- /dev/null
+++ b/google-breakpad/autotools/test-driver
@@ -0,0 +1,139 @@
+#! /bin/sh
+# test-driver - basic testsuite driver script.
+
+scriptversion=2013-07-13.22; # UTC
+
+# Copyright (C) 2011-2013 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+# Make unconditional expansion of undefined variables an error.  This
+# helps a lot in preventing typo-related bugs.
+set -u
+
+usage_error ()
+{
+  echo "$0: $*" >&2
+  print_usage >&2
+  exit 2
+}
+
+print_usage ()
+{
+  cat <<END
+Usage:
+  test-driver --test-name=NAME --log-file=PATH --trs-file=PATH
+              [--expect-failure={yes|no}] [--color-tests={yes|no}]
+              [--enable-hard-errors={yes|no}] [--]
+              TEST-SCRIPT [TEST-SCRIPT-ARGUMENTS]
+The '--test-name', '--log-file' and '--trs-file' options are mandatory.
+END
+}
+
+test_name= # Used for reporting.
+log_file=  # Where to save the output of the test script.
+trs_file=  # Where to save the metadata of the test run.
+expect_failure=no
+color_tests=no
+enable_hard_errors=yes
+while test $# -gt 0; do
+  case $1 in
+  --help) print_usage; exit $?;;
+  --version) echo "test-driver $scriptversion"; exit $?;;
+  --test-name) test_name=$2; shift;;
+  --log-file) log_file=$2; shift;;
+  --trs-file) trs_file=$2; shift;;
+  --color-tests) color_tests=$2; shift;;
+  --expect-failure) expect_failure=$2; shift;;
+  --enable-hard-errors) enable_hard_errors=$2; shift;;
+  --) shift; break;;
+  -*) usage_error "invalid option: '$1'";;
+   *) break;;
+  esac
+  shift
+done
+
+missing_opts=
+test x"$test_name" = x && missing_opts="$missing_opts --test-name"
+test x"$log_file"  = x && missing_opts="$missing_opts --log-file"
+test x"$trs_file"  = x && missing_opts="$missing_opts --trs-file"
+if test x"$missing_opts" != x; then
+  usage_error "the following mandatory options are missing:$missing_opts"
+fi
+
+if test $# -eq 0; then
+  usage_error "missing argument"
+fi
+
+if test $color_tests = yes; then
+  # Keep this in sync with 'lib/am/check.am:$(am__tty_colors)'.
+  red='[0;31m' # Red.
+  grn='[0;32m' # Green.
+  lgn='[1;32m' # Light green.
+  blu='[1;34m' # Blue.
+  mgn='[0;35m' # Magenta.
+  std='[m'     # No color.
+else
+  red= grn= lgn= blu= mgn= std=
+fi
+
+do_exit='rm -f $log_file $trs_file; (exit $st); exit $st'
+trap "st=129; $do_exit" 1
+trap "st=130; $do_exit" 2
+trap "st=141; $do_exit" 13
+trap "st=143; $do_exit" 15
+
+# Test script is run here.
+"$@" >$log_file 2>&1
+estatus=$?
+if test $enable_hard_errors = no && test $estatus -eq 99; then
+  estatus=1
+fi
+
+case $estatus:$expect_failure in
+  0:yes) col=$red res=XPASS recheck=yes gcopy=yes;;
+  0:*)   col=$grn res=PASS  recheck=no  gcopy=no;;
+  77:*)  col=$blu res=SKIP  recheck=no  gcopy=yes;;
+  99:*)  col=$mgn res=ERROR recheck=yes gcopy=yes;;
+  *:yes) col=$lgn res=XFAIL recheck=no  gcopy=yes;;
+  *:*)   col=$red res=FAIL  recheck=yes gcopy=yes;;
+esac
+
+# Report outcome to console.
+echo "${col}${res}${std}: $test_name"
+
+# Register the test result, and other relevant metadata.
+echo ":test-result: $res" > $trs_file
+echo ":global-test-result: $res" >> $trs_file
+echo ":recheck: $recheck" >> $trs_file
+echo ":copy-in-global-log: $gcopy" >> $trs_file
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/google-breakpad/breakpad-client.pc.in b/google-breakpad/breakpad-client.pc.in
new file mode 100644
index 0000000..fcd2fa2
--- /dev/null
+++ b/google-breakpad/breakpad-client.pc.in
@@ -0,0 +1,10 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@/@PACKAGE_NAME@
+
+Name: google-breakpad-client
+Description: An open-source multi-platform crash reporting system
+Version: @PACKAGE_VERSION@
+Libs: -L${libdir} -lbreakpad_client @PTHREAD_LIBS@
+Cflags: -I${includedir} @PTHREAD_CFLAGS@
diff --git a/google-breakpad/breakpad.pc.in b/google-breakpad/breakpad.pc.in
new file mode 100644
index 0000000..9aec9f8
--- /dev/null
+++ b/google-breakpad/breakpad.pc.in
@@ -0,0 +1,10 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@/@PACKAGE_NAME@
+
+Name: google-breakpad
+Description: An open-source multi-platform crash reporting system
+Version: @PACKAGE_VERSION@
+Libs: -L${libdir} -lbreakpad @PTHREAD_LIBS@
+Cflags: -I${includedir} @PTHREAD_CFLAGS@
diff --git a/google-breakpad/configure b/google-breakpad/configure
new file mode 100755
index 0000000..72647b0
--- /dev/null
+++ b/google-breakpad/configure
@@ -0,0 +1,8082 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.69 for breakpad 0.1.
+#
+# Report bugs to <google-breakpad-dev@googlegroups.com>.
+#
+#
+# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+#
+#
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+	expr "X$arg" : "X\\(.*\\)$as_nl";
+	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""	$as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# Use a proper internal environment variable to ensure we don't fall
+  # into an infinite loop, continuously re-executing ourselves.
+  if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+    _as_can_reexec=no; export _as_can_reexec;
+    # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+as_fn_exit 255
+  fi
+  # We don't want this to propagate to other subprocesses.
+          { _as_can_reexec=; unset _as_can_reexec;}
+if test "x$CONFIG_SHELL" = x; then
+  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
+  setopt NO_GLOB_SUBST
+else
+  case \`(set -o) 2>/dev/null\` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+"
+  as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+
+else
+  exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1
+test -x / || exit 1"
+  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
+test \$(( 1 + 1 )) = 2 || exit 1"
+  if (eval "$as_required") 2>/dev/null; then :
+  as_have_required=yes
+else
+  as_have_required=no
+fi
+  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  as_found=:
+  case $as_dir in #(
+	 /*)
+	   for as_base in sh bash ksh sh5; do
+	     # Try only shells that exist, to save several forks.
+	     as_shell=$as_dir/$as_base
+	     if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+		    { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  CONFIG_SHELL=$as_shell as_have_required=yes
+		   if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  break 2
+fi
+fi
+	   done;;
+       esac
+  as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+	      { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+  CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+      if test "x$CONFIG_SHELL" != x; then :
+  export CONFIG_SHELL
+             # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
+fi
+
+    if test x$as_have_required = xno; then :
+  $as_echo "$0: This script requires a shell more modern than all"
+  $as_echo "$0: the shells that I found on your system."
+  if test x${ZSH_VERSION+set} = xset ; then
+    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+  else
+    $as_echo "$0: Please tell bug-autoconf@gnu.org and
+$0: google-breakpad-dev@googlegroups.com about your system,
+$0: including any error possibly output before this
+$0: message. Then install a modern shell, or manually run
+$0: the script under such a shell if you do have one."
+  fi
+  exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+
+  as_lineno_1=$LINENO as_lineno_1a=$LINENO
+  as_lineno_2=$LINENO as_lineno_2a=$LINENO
+  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+  # already done that, so ensure we don't try to do so again and fall
+  # in an infinite loop.  This has already happened in practice.
+  _as_can_reexec=no; export _as_can_reexec
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='	';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -pR'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -pR'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -pR'
+  fi
+else
+  as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+
+# Identity of this package.
+PACKAGE_NAME='breakpad'
+PACKAGE_TARNAME='breakpad'
+PACKAGE_VERSION='0.1'
+PACKAGE_STRING='breakpad 0.1'
+PACKAGE_BUGREPORT='google-breakpad-dev@googlegroups.com'
+PACKAGE_URL=''
+
+ac_unique_file="README"
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+#  include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+#  include <memory.h>
+# endif
+# include <string.h>
+#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_subst_vars='am__EXEEXT_FALSE
+am__EXEEXT_TRUE
+LTLIBOBJS
+LIBOBJS
+SELFTEST_FALSE
+SELFTEST_TRUE
+DISABLE_TOOLS_FALSE
+DISABLE_TOOLS_TRUE
+DISABLE_PROCESSOR_FALSE
+DISABLE_PROCESSOR_TRUE
+ANDROID_HOST_FALSE
+ANDROID_HOST_TRUE
+LINUX_HOST_FALSE
+LINUX_HOST_TRUE
+PTHREAD_CFLAGS
+PTHREAD_LIBS
+PTHREAD_CC
+ax_pthread_config
+EGREP
+GREP
+GCC_FALSE
+GCC_TRUE
+RANLIB
+am__fastdepCXX_FALSE
+am__fastdepCXX_TRUE
+CXXDEPMODE
+ac_ct_CXX
+CXXFLAGS
+CXX
+CPP
+am__fastdepCCAS_FALSE
+am__fastdepCCAS_TRUE
+CCASDEPMODE
+CCASFLAGS
+CCAS
+am__fastdepCC_FALSE
+am__fastdepCC_TRUE
+CCDEPMODE
+am__nodep
+AMDEPBACKSLASH
+AMDEP_FALSE
+AMDEP_TRUE
+am__quote
+am__include
+DEPDIR
+OBJEXT
+EXEEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
+MAINT
+MAINTAINER_MODE_FALSE
+MAINTAINER_MODE_TRUE
+AM_BACKSLASH
+AM_DEFAULT_VERBOSITY
+AM_DEFAULT_V
+AM_V
+am__untar
+am__tar
+AMTAR
+am__leading_dot
+SET_MAKE
+AWK
+mkdir_p
+MKDIR_P
+INSTALL_STRIP_PROGRAM
+STRIP
+install_sh
+MAKEINFO
+AUTOHEADER
+AUTOMAKE
+AUTOCONF
+ACLOCAL
+VERSION
+PACKAGE
+CYGPATH_W
+am__isrc
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+enable_silent_rules
+enable_maintainer_mode
+enable_dependency_tracking
+enable_m32
+enable_largefile
+enable_processor
+enable_tools
+enable_selftest
+'
+      ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+CCAS
+CCASFLAGS
+CPP
+CXX
+CXXFLAGS
+CCC'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval $ac_prev=\$ac_option
+    ac_prev=
+    continue
+  fi
+
+  case $ac_option in
+  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+  *=)   ac_optarg= ;;
+  *)    ac_optarg=yes ;;
+  esac
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  case $ac_dashdash$ac_option in
+  --)
+    ac_dashdash=yes ;;
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir=$ac_optarg ;;
+
+  -build | --build | --buil | --bui | --bu)
+    ac_prev=build_alias ;;
+  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+    build_alias=$ac_optarg ;;
+
+  -cache-file | --cache-file | --cache-fil | --cache-fi \
+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+    ac_prev=cache_file ;;
+  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+    cache_file=$ac_optarg ;;
+
+  --config-cache | -C)
+    cache_file=config.cache ;;
+
+  -datadir | --datadir | --datadi | --datad)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=*)
+    datadir=$ac_optarg ;;
+
+  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+  | --dataroo | --dataro | --datar)
+    ac_prev=datarootdir ;;
+  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+    datarootdir=$ac_optarg ;;
+
+  -disable-* | --disable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=no ;;
+
+  -docdir | --docdir | --docdi | --doc | --do)
+    ac_prev=docdir ;;
+  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+    docdir=$ac_optarg ;;
+
+  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+    ac_prev=dvidir ;;
+  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+    dvidir=$ac_optarg ;;
+
+  -enable-* | --enable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=\$ac_optarg ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix=$ac_optarg ;;
+
+  -gas | --gas | --ga | --g)
+    # Obsolete; use --with-gas.
+    with_gas=yes ;;
+
+  -help | --help | --hel | --he | -h)
+    ac_init_help=long ;;
+  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+    ac_init_help=recursive ;;
+  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+    ac_init_help=short ;;
+
+  -host | --host | --hos | --ho)
+    ac_prev=host_alias ;;
+  -host=* | --host=* | --hos=* | --ho=*)
+    host_alias=$ac_optarg ;;
+
+  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+    ac_prev=htmldir ;;
+  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+  | --ht=*)
+    htmldir=$ac_optarg ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=includedir ;;
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+  | --includ=* | --inclu=* | --incl=* | --inc=*)
+    includedir=$ac_optarg ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=infodir ;;
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+    infodir=$ac_optarg ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=libdir ;;
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)
+    libdir=$ac_optarg ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=libexecdir ;;
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+  | --libexe=* | --libex=* | --libe=*)
+    libexecdir=$ac_optarg ;;
+
+  -localedir | --localedir | --localedi | --localed | --locale)
+    ac_prev=localedir ;;
+  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+    localedir=$ac_optarg ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst | --locals)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+    localstatedir=$ac_optarg ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=mandir ;;
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+    mandir=$ac_optarg ;;
+
+  -nfp | --nfp | --nf)
+    # Obsolete; use --without-fp.
+    with_fp=no ;;
+
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c | -n)
+    no_create=yes ;;
+
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+    no_recursion=yes ;;
+
+  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+  | --oldin | --oldi | --old | --ol | --o)
+    ac_prev=oldincludedir ;;
+  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+    oldincludedir=$ac_optarg ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix=$ac_optarg ;;
+
+  -program-prefix | --program-prefix | --program-prefi | --program-pref \
+  | --program-pre | --program-pr | --program-p)
+    ac_prev=program_prefix ;;
+  -program-prefix=* | --program-prefix=* | --program-prefi=* \
+  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+    program_prefix=$ac_optarg ;;
+
+  -program-suffix | --program-suffix | --program-suffi | --program-suff \
+  | --program-suf | --program-su | --program-s)
+    ac_prev=program_suffix ;;
+  -program-suffix=* | --program-suffix=* | --program-suffi=* \
+  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+    program_suffix=$ac_optarg ;;
+
+  -program-transform-name | --program-transform-name \
+  | --program-transform-nam | --program-transform-na \
+  | --program-transform-n | --program-transform- \
+  | --program-transform | --program-transfor \
+  | --program-transfo | --program-transf \
+  | --program-trans | --program-tran \
+  | --progr-tra | --program-tr | --program-t)
+    ac_prev=program_transform_name ;;
+  -program-transform-name=* | --program-transform-name=* \
+  | --program-transform-nam=* | --program-transform-na=* \
+  | --program-transform-n=* | --program-transform-=* \
+  | --program-transform=* | --program-transfor=* \
+  | --program-transfo=* | --program-transf=* \
+  | --program-trans=* | --program-tran=* \
+  | --progr-tra=* | --program-tr=* | --program-t=*)
+    program_transform_name=$ac_optarg ;;
+
+  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+    ac_prev=pdfdir ;;
+  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+    pdfdir=$ac_optarg ;;
+
+  -psdir | --psdir | --psdi | --psd | --ps)
+    ac_prev=psdir ;;
+  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+    psdir=$ac_optarg ;;
+
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil)
+    silent=yes ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir=$ac_optarg ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir=$ac_optarg ;;
+
+  -site | --site | --sit)
+    ac_prev=site ;;
+  -site=* | --site=* | --sit=*)
+    site=$ac_optarg ;;
+
+  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+    ac_prev=srcdir ;;
+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+    srcdir=$ac_optarg ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir=$ac_optarg ;;
+
+  -target | --target | --targe | --targ | --tar | --ta | --t)
+    ac_prev=target_alias ;;
+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+    target_alias=$ac_optarg ;;
+
+  -v | -verbose | --verbose | --verbos | --verbo | --verb)
+    verbose=yes ;;
+
+  -version | --version | --versio | --versi | --vers | -V)
+    ac_init_version=: ;;
+
+  -with-* | --with-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=\$ac_optarg ;;
+
+  -without-* | --without-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=no ;;
+
+  --x)
+    # Obsolete; use --with-x.
+    with_x=yes ;;
+
+  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+  | --x-incl | --x-inc | --x-in | --x-i)
+    ac_prev=x_includes ;;
+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+    x_includes=$ac_optarg ;;
+
+  -x-libraries | --x-libraries | --x-librarie | --x-librari \
+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+    ac_prev=x_libraries ;;
+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+    x_libraries=$ac_optarg ;;
+
+  -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
+    ;;
+
+  *=*)
+    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+    # Reject names that are not valid shell variable names.
+    case $ac_envvar in #(
+      '' | [0-9]* | *[!_$as_cr_alnum]* )
+      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+    esac
+    eval $ac_envvar=\$ac_optarg
+    export $ac_envvar ;;
+
+  *)
+    # FIXME: should be removed in autoconf 3.0.
+    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
+    ;;
+
+  esac
+done
+
+if test -n "$ac_prev"; then
+  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+  as_fn_error $? "missing argument to $ac_option"
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+  case $enable_option_checking in
+    no) ;;
+    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
+    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+  esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
+		datadir sysconfdir sharedstatedir localstatedir includedir \
+		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+		libdir localedir mandir
+do
+  eval ac_val=\$$ac_var
+  # Remove trailing slashes.
+  case $ac_val in
+    */ )
+      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+      eval $ac_var=\$ac_val;;
+  esac
+  # Be sure to have absolute directory names.
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* )  continue;;
+    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+  esac
+  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+  if test "x$build_alias" = x; then
+    cross_compiling=maybe
+  elif test "x$build_alias" != "x$host_alias"; then
+    cross_compiling=yes
+  fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+  as_fn_error $? "working directory cannot be determined"
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+  as_fn_error $? "pwd does not report name of working directory"
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+  ac_srcdir_defaulted=yes
+  # Try the directory containing this script, then the parent directory.
+  ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_myself" : 'X\(//\)[^/]' \| \
+	 X"$as_myself" : 'X\(//\)$' \| \
+	 X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+  srcdir=$ac_confdir
+  if test ! -r "$srcdir/$ac_unique_file"; then
+    srcdir=..
+  fi
+else
+  ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
+	pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+  srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+  eval ac_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_env_${ac_var}_value=\$${ac_var}
+  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+  # Omit some internal or obsolete options to make the list less imposing.
+  # This message is too long to be a string in the A/UX 3.1 sh.
+  cat <<_ACEOF
+\`configure' configures breakpad 0.1 to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE.  See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+  -h, --help              display this help and exit
+      --help=short        display options specific to this package
+      --help=recursive    display the short help of all the included packages
+  -V, --version           display version information and exit
+  -q, --quiet, --silent   do not print \`checking ...' messages
+      --cache-file=FILE   cache test results in FILE [disabled]
+  -C, --config-cache      alias for \`--cache-file=config.cache'
+  -n, --no-create         do not create output files
+      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+  --prefix=PREFIX         install architecture-independent files in PREFIX
+                          [$ac_default_prefix]
+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+                          [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+  --bindir=DIR            user executables [EPREFIX/bin]
+  --sbindir=DIR           system admin executables [EPREFIX/sbin]
+  --libexecdir=DIR        program executables [EPREFIX/libexec]
+  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --libdir=DIR            object code libraries [EPREFIX/lib]
+  --includedir=DIR        C header files [PREFIX/include]
+  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
+  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
+  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
+  --infodir=DIR           info documentation [DATAROOTDIR/info]
+  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
+  --mandir=DIR            man documentation [DATAROOTDIR/man]
+  --docdir=DIR            documentation root [DATAROOTDIR/doc/breakpad]
+  --htmldir=DIR           html documentation [DOCDIR]
+  --dvidir=DIR            dvi documentation [DOCDIR]
+  --pdfdir=DIR            pdf documentation [DOCDIR]
+  --psdir=DIR             ps documentation [DOCDIR]
+_ACEOF
+
+  cat <<\_ACEOF
+
+Program names:
+  --program-prefix=PREFIX            prepend PREFIX to installed program names
+  --program-suffix=SUFFIX            append SUFFIX to installed program names
+  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names
+
+System types:
+  --build=BUILD     configure for building on BUILD [guessed]
+  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+  case $ac_init_help in
+     short | recursive ) echo "Configuration of breakpad 0.1:";;
+   esac
+  cat <<\_ACEOF
+
+Optional Features:
+  --disable-option-checking  ignore unrecognized --enable/--with options
+  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
+  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --enable-silent-rules   less verbose build output (undo: "make V=1")
+  --disable-silent-rules  verbose build output (undo: "make V=0")
+  --enable-maintainer-mode
+                          enable make rules and dependencies not useful (and
+                          sometimes confusing) to the casual installer
+  --enable-dependency-tracking
+                          do not reject slow dependency extractors
+  --disable-dependency-tracking
+                          speeds up one-time build
+  --enable-m32            Compile/build with -m32 (default is no)
+  --disable-largefile     omit support for large files
+  --disable-processor     Don't build processor library (default is no)
+  --disable-tools         Don't build tool binaries (default is no)
+  --enable-selftest       Run extra tests with "make check" (may conflict with
+                          optimizations) (default is no)
+
+Some influential environment variables:
+  CC          C compiler command
+  CFLAGS      C compiler flags
+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+              nonstandard directory <lib dir>
+  LIBS        libraries to pass to the linker, e.g. -l<library>
+  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
+              you have headers in a nonstandard directory <include dir>
+  CCAS        assembler compiler command (defaults to CC)
+  CCASFLAGS   assembler compiler flags (defaults to CFLAGS)
+  CPP         C preprocessor
+  CXX         C++ compiler command
+  CXXFLAGS    C++ compiler flags
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to <google-breakpad-dev@googlegroups.com>.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+  # If there are subdirs, report their specific --help.
+  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+    test -d "$ac_dir" ||
+      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+      continue
+    ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+    cd "$ac_dir" || { ac_status=$?; continue; }
+    # Check for guested configure.
+    if test -f "$ac_srcdir/configure.gnu"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+    elif test -f "$ac_srcdir/configure"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure" --help=recursive
+    else
+      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+    fi || ac_status=$?
+    cd "$ac_pwd" || { ac_status=$?; break; }
+  done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+  cat <<\_ACEOF
+breakpad configure 0.1
+generated by GNU Autoconf 2.69
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+  exit
+fi
+
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
+
+# ac_fn_c_try_compile LINENO
+# --------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_compile
+
+# ac_fn_c_try_cpp LINENO
+# ----------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } > conftest.i && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+    ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_cpp
+
+# ac_fn_cxx_try_compile LINENO
+# ----------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_try_compile
+
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+# that executables *can* be run.
+ac_fn_c_try_run ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+       $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=$ac_status
+fi
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_run
+
+# ac_fn_c_try_link LINENO
+# -----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext conftest$ac_exeext
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 test -x conftest$ac_exeext
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+  # interfere with the next link command; also delete a directory that is
+  # left behind by Apple's compiler.  We do this before executing the actions.
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_link
+
+# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_c_check_header_mongrel ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if eval \${$3+:} false; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_header_compiler=yes
+else
+  ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <$2>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  ac_header_preproc=yes
+else
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
+  yes:no: )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+( $as_echo "## --------------------------------------------------- ##
+## Report this to google-breakpad-dev@googlegroups.com ##
+## --------------------------------------------------- ##"
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_mongrel
+
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_compile
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by breakpad $as_me 0.1, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
+
+  $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+
+/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    $as_echo "PATH: $as_dir"
+  done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+  for ac_arg
+  do
+    case $ac_arg in
+    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+    | -silent | --silent | --silen | --sile | --sil)
+      continue ;;
+    *\'*)
+      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    case $ac_pass in
+    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
+    2)
+      as_fn_append ac_configure_args1 " '$ac_arg'"
+      if test $ac_must_keep_next = true; then
+	ac_must_keep_next=false # Got value, back to normal.
+      else
+	case $ac_arg in
+	  *=* | --config-cache | -C | -disable-* | --disable-* \
+	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+	  | -with-* | --with-* | -without-* | --without-* | --x)
+	    case "$ac_configure_args0 " in
+	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+	    esac
+	    ;;
+	  -* ) ac_must_keep_next=true ;;
+	esac
+      fi
+      as_fn_append ac_configure_args " '$ac_arg'"
+      ;;
+    esac
+  done
+done
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log.  We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+  # Save into config.log some information that might help in debugging.
+  {
+    echo
+
+    $as_echo "## ---------------- ##
+## Cache variables. ##
+## ---------------- ##"
+    echo
+    # The following way of writing the cache mishandles newlines in values,
+(
+  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+  (set) 2>&1 |
+    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      sed -n \
+	"s/'\''/'\''\\\\'\'''\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+      ;; #(
+    *)
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+)
+    echo
+
+    $as_echo "## ----------------- ##
+## Output variables. ##
+## ----------------- ##"
+    echo
+    for ac_var in $ac_subst_vars
+    do
+      eval ac_val=\$$ac_var
+      case $ac_val in
+      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+      esac
+      $as_echo "$ac_var='\''$ac_val'\''"
+    done | sort
+    echo
+
+    if test -n "$ac_subst_files"; then
+      $as_echo "## ------------------- ##
+## File substitutions. ##
+## ------------------- ##"
+      echo
+      for ac_var in $ac_subst_files
+      do
+	eval ac_val=\$$ac_var
+	case $ac_val in
+	*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+	esac
+	$as_echo "$ac_var='\''$ac_val'\''"
+      done | sort
+      echo
+    fi
+
+    if test -s confdefs.h; then
+      $as_echo "## ----------- ##
+## confdefs.h. ##
+## ----------- ##"
+      echo
+      cat confdefs.h
+      echo
+    fi
+    test "$ac_signal" != 0 &&
+      $as_echo "$as_me: caught signal $ac_signal"
+    $as_echo "$as_me: exit $exit_status"
+  } >&5
+  rm -f core *.core core.conftest.* &&
+    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+    exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+$as_echo "/* confdefs.h */" > confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+  # We do not want a PATH search for config.site.
+  case $CONFIG_SITE in #((
+    -*)  ac_site_file1=./$CONFIG_SITE;;
+    */*) ac_site_file1=$CONFIG_SITE;;
+    *)   ac_site_file1=./$CONFIG_SITE;;
+  esac
+elif test "x$prefix" != xNONE; then
+  ac_site_file1=$prefix/share/config.site
+  ac_site_file2=$prefix/etc/config.site
+else
+  ac_site_file1=$ac_default_prefix/share/config.site
+  ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+  test "x$ac_site_file" = xNONE && continue
+  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+    sed 's/^/| /' "$ac_site_file" >&5
+    . "$ac_site_file" \
+      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5; }
+  fi
+done
+
+if test -r "$cache_file"; then
+  # Some versions of bash will fail to source /dev/null (special files
+  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
+  if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . "$cache_file";;
+      *)                      . "./$cache_file";;
+    esac
+  fi
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+  eval ac_old_set=\$ac_cv_env_${ac_var}_set
+  eval ac_new_set=\$ac_env_${ac_var}_set
+  eval ac_old_val=\$ac_cv_env_${ac_var}_value
+  eval ac_new_val=\$ac_env_${ac_var}_value
+  case $ac_old_set,$ac_new_set in
+    set,)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+	# differences in whitespace do not lead to failure.
+	ac_old_val_w=`echo x $ac_old_val`
+	ac_new_val_w=`echo x $ac_new_val`
+	if test "$ac_old_val_w" != "$ac_new_val_w"; then
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+	  ac_cache_corrupted=:
+	else
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+	  eval $ac_var=\$ac_old_val
+	fi
+	{ $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
+$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
+	{ $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
+$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
+      fi;;
+  esac
+  # Pass precious variables to config.status.
+  if test "$ac_new_set" = set; then
+    case $ac_new_val in
+    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *) ac_arg=$ac_var=$ac_new_val ;;
+    esac
+    case " $ac_configure_args " in
+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
+      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+ac_aux_dir=
+for ac_dir in autotools "$srcdir"/autotools; do
+  if test -f "$ac_dir/install-sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install-sh -c"
+    break
+  elif test -f "$ac_dir/install.sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install.sh -c"
+    break
+  elif test -f "$ac_dir/shtool"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/shtool install -c"
+    break
+  fi
+done
+if test -z "$ac_aux_dir"; then
+  as_fn_error $? "cannot find install-sh, install.sh, or shtool in autotools \"$srcdir\"/autotools" "$LINENO" 5
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
+
+
+
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+  as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if ${ac_cv_build+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+  as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+  as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if ${ac_cv_host+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "x$host_alias" = x; then
+  ac_cv_host=$ac_cv_build
+else
+  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+
+am__api_version='1.14'
+
+# Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if ${ac_cv_path_install+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in #((
+  ./ | .// | /[cC]/* | \
+  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+  ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
+  /usr/ucb/* ) ;;
+  *)
+    # OSF1 and SCO ODT 3.0 have their own names for install.
+    # Don't use installbsd from OSF since it installs stuff as root
+    # by default.
+    for ac_prog in ginstall scoinst install; do
+      for ac_exec_ext in '' $ac_executable_extensions; do
+	if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+	  if test $ac_prog = install &&
+	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # AIX install.  It has an incompatible calling convention.
+	    :
+	  elif test $ac_prog = install &&
+	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # program-specific install script used by HP pwplus--don't use.
+	    :
+	  else
+	    rm -rf conftest.one conftest.two conftest.dir
+	    echo one > conftest.one
+	    echo two > conftest.two
+	    mkdir conftest.dir
+	    if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+	      test -s conftest.one && test -s conftest.two &&
+	      test -s conftest.dir/conftest.one &&
+	      test -s conftest.dir/conftest.two
+	    then
+	      ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+	      break 3
+	    fi
+	  fi
+	fi
+      done
+    done
+    ;;
+esac
+
+  done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+  if test "${ac_cv_path_install+set}" = set; then
+    INSTALL=$ac_cv_path_install
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    INSTALL=$ac_install_sh
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
+$as_echo_n "checking whether build environment is sane... " >&6; }
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name.  Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+  *[\\\"\#\$\&\'\`$am_lf]*)
+    as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;;
+esac
+case $srcdir in
+  *[\\\"\#\$\&\'\`$am_lf\ \	]*)
+    as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;;
+esac
+
+# Do 'set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   am_has_slept=no
+   for am_try in 1 2; do
+     echo "timestamp, slept: $am_has_slept" > conftest.file
+     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+     if test "$*" = "X"; then
+	# -L didn't work.
+	set X `ls -t "$srcdir/configure" conftest.file`
+     fi
+     if test "$*" != "X $srcdir/configure conftest.file" \
+	&& test "$*" != "X conftest.file $srcdir/configure"; then
+
+	# If neither matched, then we have a broken ls.  This can happen
+	# if, for instance, CONFIG_SHELL is bash and it inherits a
+	# broken ls alias from the environment.  This has actually
+	# happened.  Such a system could not be considered "sane".
+	as_fn_error $? "ls -t appears to fail.  Make sure there is not a broken
+  alias in your environment" "$LINENO" 5
+     fi
+     if test "$2" = conftest.file || test $am_try -eq 2; then
+       break
+     fi
+     # Just in case.
+     sleep 1
+     am_has_slept=yes
+   done
+   test "$2" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   as_fn_error $? "newly created file is older than distributed files!
+Check your system clock" "$LINENO" 5
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+  ( sleep 1 ) &
+  am_sleep_pid=$!
+fi
+
+rm -f conftest.file
+
+test "$program_prefix" != NONE &&
+  program_transform_name="s&^&$program_prefix&;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+  program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+# Double any \ or $.
+# By default was `s,x,x', remove it if useless.
+ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
+program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
+
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+
+if test x"${MISSING+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --is-lightweight"; then
+  am_missing_run="$MISSING "
+else
+  am_missing_run=
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
+fi
+
+if test x"${install_sh}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
+
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip".  However 'strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the 'STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_STRIP" = x; then
+    STRIP=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    STRIP=$ac_ct_STRIP
+  fi
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+  if ${ac_cv_path_mkdir+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in mkdir gmkdir; do
+	 for ac_exec_ext in '' $ac_executable_extensions; do
+	   as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
+	   case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+	     'mkdir (GNU coreutils) '* | \
+	     'mkdir (coreutils) '* | \
+	     'mkdir (fileutils) '4.1*)
+	       ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+	       break 3;;
+	   esac
+	 done
+       done
+  done
+IFS=$as_save_IFS
+
+fi
+
+  test -d ./--version && rmdir ./--version
+  if test "${ac_cv_path_mkdir+set}" = set; then
+    MKDIR_P="$ac_cv_path_mkdir -p"
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for MKDIR_P within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    MKDIR_P="$ac_install_sh -d"
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+for ac_prog in gawk mawk nawk awk
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AWK+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AWK"; then
+  ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_AWK="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$AWK" && break
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+	@echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+  *@@@%%%=?*=@@@%%%*)
+    eval ac_cv_prog_make_${ac_make}_set=yes;;
+  *)
+    eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+  SET_MAKE=
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+  SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+# Check whether --enable-silent-rules was given.
+if test "${enable_silent_rules+set}" = set; then :
+  enableval=$enable_silent_rules;
+fi
+
+case $enable_silent_rules in # (((
+  yes) AM_DEFAULT_VERBOSITY=0;;
+   no) AM_DEFAULT_VERBOSITY=1;;
+    *) AM_DEFAULT_VERBOSITY=1;;
+esac
+am_make=${MAKE-make}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
+$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
+if ${am_cv_make_support_nested_variables+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if $as_echo 'TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+	@$(TRUE)
+.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
+  am_cv_make_support_nested_variables=yes
+else
+  am_cv_make_support_nested_variables=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
+$as_echo "$am_cv_make_support_nested_variables" >&6; }
+if test $am_cv_make_support_nested_variables = yes; then
+    AM_V='$(V)'
+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+  AM_V=$AM_DEFAULT_VERBOSITY
+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AM_BACKSLASH='\'
+
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+  # is not polluted with repeated "-I."
+  am__isrc=' -I$(srcdir)'
+  # test to see if srcdir already configured
+  if test -f $srcdir/config.status; then
+    as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
+  fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE='breakpad'
+ VERSION='0.1'
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE "$PACKAGE"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define VERSION "$VERSION"
+_ACEOF
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+# For better backward compatibility.  To be removed once Automake 1.9.x
+# dies out for good.  For more background, see:
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+mkdir_p='$(MKDIR_P)'
+
+# We need awk for the "check" target.  The system "awk" is bad on
+# some platforms.
+# Always define AMTAR for backward compatibility.  Yes, it's still used
+# in the wild :-(  We should find a proper way to deprecate it ...
+AMTAR='$${TAR-tar}'
+
+
+# We'll loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar plaintar pax cpio none'
+
+# The POSIX 1988 'ustar' format is defined with fixed-size fields.
+      # There is notably a 21 bits limit for the UID and the GID.  In fact,
+      # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
+      # and bug#13588).
+      am_max_uid=2097151 # 2^21 - 1
+      am_max_gid=$am_max_uid
+      # The $UID and $GID variables are not portable, so we need to resort
+      # to the POSIX-mandated id(1) utility.  Errors in the 'id' calls
+      # below are definitely unexpected, so allow the users to see them
+      # (that is, avoid stderr redirection).
+      am_uid=`id -u || echo unknown`
+      am_gid=`id -g || echo unknown`
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether UID '$am_uid' is supported by ustar format" >&5
+$as_echo_n "checking whether UID '$am_uid' is supported by ustar format... " >&6; }
+      if test $am_uid -le $am_max_uid; then
+         { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+      else
+         { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+         _am_tools=none
+      fi
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether GID '$am_gid' is supported by ustar format" >&5
+$as_echo_n "checking whether GID '$am_gid' is supported by ustar format... " >&6; }
+      if test $am_gid -le $am_max_gid; then
+         { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+        _am_tools=none
+      fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create a ustar tar archive" >&5
+$as_echo_n "checking how to create a ustar tar archive... " >&6; }
+
+  # Go ahead even if we have the value already cached.  We do so because we
+  # need to set the values for the 'am__tar' and 'am__untar' variables.
+  _am_tools=${am_cv_prog_tar_ustar-$_am_tools}
+
+  for _am_tool in $_am_tools; do
+    case $_am_tool in
+    gnutar)
+      for _am_tar in tar gnutar gtar; do
+        { echo "$as_me:$LINENO: $_am_tar --version" >&5
+   ($_am_tar --version) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); } && break
+      done
+      am__tar="$_am_tar --format=ustar -chf - "'"$$tardir"'
+      am__tar_="$_am_tar --format=ustar -chf - "'"$tardir"'
+      am__untar="$_am_tar -xf -"
+      ;;
+    plaintar)
+      # Must skip GNU tar: if it does not support --format= it doesn't create
+      # ustar tarball either.
+      (tar --version) >/dev/null 2>&1 && continue
+      am__tar='tar chf - "$$tardir"'
+      am__tar_='tar chf - "$tardir"'
+      am__untar='tar xf -'
+      ;;
+    pax)
+      am__tar='pax -L -x ustar -w "$$tardir"'
+      am__tar_='pax -L -x ustar -w "$tardir"'
+      am__untar='pax -r'
+      ;;
+    cpio)
+      am__tar='find "$$tardir" -print | cpio -o -H ustar -L'
+      am__tar_='find "$tardir" -print | cpio -o -H ustar -L'
+      am__untar='cpio -i -H ustar -d'
+      ;;
+    none)
+      am__tar=false
+      am__tar_=false
+      am__untar=false
+      ;;
+    esac
+
+    # If the value was cached, stop now.  We just wanted to have am__tar
+    # and am__untar set.
+    test -n "${am_cv_prog_tar_ustar}" && break
+
+    # tar/untar a dummy directory, and stop if the command works.
+    rm -rf conftest.dir
+    mkdir conftest.dir
+    echo GrepMe > conftest.dir/file
+    { echo "$as_me:$LINENO: tardir=conftest.dir && eval $am__tar_ >conftest.tar" >&5
+   (tardir=conftest.dir && eval $am__tar_ >conftest.tar) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); }
+    rm -rf conftest.dir
+    if test -s conftest.tar; then
+      { echo "$as_me:$LINENO: $am__untar <conftest.tar" >&5
+   ($am__untar <conftest.tar) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); }
+      { echo "$as_me:$LINENO: cat conftest.dir/file" >&5
+   (cat conftest.dir/file) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); }
+      grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+    fi
+  done
+  rm -rf conftest.dir
+
+  if ${am_cv_prog_tar_ustar+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  am_cv_prog_tar_ustar=$_am_tool
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_ustar" >&5
+$as_echo "$am_cv_prog_tar_ustar" >&6; }
+
+
+
+
+
+
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes.  So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+  cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present.  This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell bug-automake@gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message.  This
+can help us improve future automake versions.
+
+END
+  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+    echo 'Configuration will proceed anyway, since you have set the' >&2
+    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+    echo >&2
+  else
+    cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <http://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+    as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5
+  fi
+fi
+ac_config_headers="$ac_config_headers src/config.h"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
+$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
+    # Check whether --enable-maintainer-mode was given.
+if test "${enable_maintainer_mode+set}" = set; then :
+  enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
+else
+  USE_MAINTAINER_MODE=no
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5
+$as_echo "$USE_MAINTAINER_MODE" >&6; }
+   if test $USE_MAINTAINER_MODE = yes; then
+  MAINTAINER_MODE_TRUE=
+  MAINTAINER_MODE_FALSE='#'
+else
+  MAINTAINER_MODE_TRUE='#'
+  MAINTAINER_MODE_FALSE=
+fi
+
+  MAINT=$MAINTAINER_MODE_TRUE
+
+
+
+DEPDIR="${am__leading_dot}deps"
+
+ac_config_commands="$ac_config_commands depfiles"
+
+
+am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+	@echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
+$as_echo_n "checking for style of include used by $am_make... " >&6; }
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from 'make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+  am__include=include
+  am__quote=
+  _am_result=GNU
+  ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   case `$am_make -s -f confmf 2> /dev/null` in #(
+   *the\ am__doit\ target*)
+     am__include=.include
+     am__quote="\""
+     _am_result=BSD
+     ;;
+   esac
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
+$as_echo "$_am_result" >&6; }
+rm -f confinc confmf
+
+# Check whether --enable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then :
+  enableval=$enable_dependency_tracking;
+fi
+
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+  am__nodep='_no'
+fi
+ if test "x$enable_dependency_tracking" != xno; then
+  AMDEP_TRUE=
+  AMDEP_FALSE='#'
+else
+  AMDEP_TRUE='#'
+  AMDEP_FALSE=
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+          if test -n "$ac_tool_prefix"; then
+    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+       ac_prog_rejected=yes
+       continue
+     fi
+    ac_cv_prog_CC="cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $# != 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+  fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl.exe
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl.exe
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CC" && break
+done
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+  esac
+done
+rm -f $ac_rmfiles
+
+if { { ac_try="$ac_link_default"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link_default") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile.  We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+	;;
+    [ab].out )
+	# We found the default executable, but exeext='' is most
+	# certainly right.
+	break;;
+    *.* )
+	if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+	then :; else
+	   ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	fi
+	# We set ac_cv_exeext here because the later test for it is not
+	# safe: cross compilers may not add the suffix if given an `-o'
+	# argument, so we may need to know it at that point already.
+	# Even if this section looks crufty: it has the advantage of
+	# actually working.
+	break;;
+    * )
+	break;;
+  esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+  ac_file=''
+fi
+if test -z "$ac_file"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "C compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+ac_exeext=$ac_cv_exeext
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	  break;;
+    * ) break;;
+  esac
+done
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdio.h>
+int
+main ()
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+  { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+  if { ac_try='./conftest$ac_cv_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+	cross_compiling=yes
+    else
+	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details" "$LINENO" 5; }
+    fi
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if ${ac_cv_objext+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  for ac_file in conftest.o conftest.obj conftest.*; do
+  test -f "$ac_file" || continue;
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GCC=yes
+else
+  GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if ${ac_cv_prog_cc_g+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_c_werror_flag=$ac_c_werror_flag
+   ac_c_werror_flag=yes
+   ac_cv_prog_cc_g=no
+   CFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+else
+  CFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  ac_c_werror_flag=$ac_save_c_werror_flag
+	 CFLAGS="-g"
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+struct stat;
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
+$as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
+if ${am_cv_prog_cc_c_o+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+  # Make sure it works both with $CC and with simple cc.
+  # Following AC_PROG_CC_C_O, we do the test twice because some
+  # compilers refuse to overwrite an existing .o file with -o,
+  # though they will create one.
+  am_cv_prog_cc_c_o=yes
+  for am_i in 1 2; do
+    if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5
+   ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); } \
+         && test -f conftest2.$ac_objext; then
+      : OK
+    else
+      am_cv_prog_cc_c_o=no
+      break
+    fi
+  done
+  rm -f core conftest*
+  unset am_i
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
+$as_echo "$am_cv_prog_cc_c_o" >&6; }
+if test "$am_cv_prog_cc_c_o" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+depcc="$CC"   am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CC_dependencies_compiler_type+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CC_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  am__universal=false
+  case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok '-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_CC_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+  am__fastdepCC_TRUE=
+  am__fastdepCC_FALSE='#'
+else
+  am__fastdepCC_TRUE='#'
+  am__fastdepCC_FALSE=
+fi
+
+
+# By default we simply use the C compiler to build assembly code.
+
+test "${CCAS+set}" = set || CCAS=$CC
+test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS
+
+
+
+depcc="$CCAS"   am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CCAS_dependencies_compiler_type+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CCAS_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  am__universal=false
+
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok '-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_CCAS_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CCAS_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CCAS_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CCAS_dependencies_compiler_type" >&6; }
+CCASDEPMODE=depmode=$am_cv_CCAS_dependencies_compiler_type
+
+ if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CCAS_dependencies_compiler_type" = gcc3; then
+  am__fastdepCCAS_TRUE=
+  am__fastdepCCAS_FALSE='#'
+else
+  am__fastdepCCAS_TRUE='#'
+  am__fastdepCCAS_FALSE=
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+          if test -n "$ac_tool_prefix"; then
+    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+       ac_prog_rejected=yes
+       continue
+     fi
+    ac_cv_prog_CC="cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $# != 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+  fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl.exe
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl.exe
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CC" && break
+done
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GCC=yes
+else
+  GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if ${ac_cv_prog_cc_g+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_c_werror_flag=$ac_c_werror_flag
+   ac_c_werror_flag=yes
+   ac_cv_prog_cc_g=no
+   CFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+else
+  CFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  ac_c_werror_flag=$ac_save_c_werror_flag
+	 CFLAGS="-g"
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+struct stat;
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
+$as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
+if ${am_cv_prog_cc_c_o+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+  # Make sure it works both with $CC and with simple cc.
+  # Following AC_PROG_CC_C_O, we do the test twice because some
+  # compilers refuse to overwrite an existing .o file with -o,
+  # though they will create one.
+  am_cv_prog_cc_c_o=yes
+  for am_i in 1 2; do
+    if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5
+   ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); } \
+         && test -f conftest2.$ac_objext; then
+      : OK
+    else
+      am_cv_prog_cc_c_o=no
+      break
+    fi
+  done
+  rm -f core conftest*
+  unset am_i
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
+$as_echo "$am_cv_prog_cc_c_o" >&6; }
+if test "$am_cv_prog_cc_c_o" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+depcc="$CC"   am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CC_dependencies_compiler_type+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CC_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  am__universal=false
+  case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok '-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_CC_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+  am__fastdepCC_TRUE=
+  am__fastdepCC_FALSE='#'
+else
+  am__fastdepCC_TRUE='#'
+  am__fastdepCC_FALSE=
+fi
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+  if ${ac_cv_prog_CPP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+      # Double quotes because CPP needs to be expanded
+    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+  break
+fi
+
+    done
+    ac_cv_prog_CPP=$CPP
+
+fi
+  CPP=$ac_cv_prog_CPP
+else
+  ac_cv_prog_CPP=$CPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+if test -z "$CXX"; then
+  if test -n "$CCC"; then
+    CXX=$CCC
+  else
+    if test -n "$ac_tool_prefix"; then
+  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CXX"; then
+  ac_cv_prog_CXX="$CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CXX=$ac_cv_prog_CXX
+if test -n "$CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
+$as_echo "$CXX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CXX" && break
+  done
+fi
+if test -z "$CXX"; then
+  ac_ct_CXX=$CXX
+  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CXX"; then
+  ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CXX="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+if test -n "$ac_ct_CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5
+$as_echo "$ac_ct_CXX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CXX" && break
+done
+
+  if test "x$ac_ct_CXX" = x; then
+    CXX="g++"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CXX=$ac_ct_CXX
+  fi
+fi
+
+  fi
+fi
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5
+$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; }
+if ${ac_cv_cxx_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5
+$as_echo "$ac_cv_cxx_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GXX=yes
+else
+  GXX=
+fi
+ac_test_CXXFLAGS=${CXXFLAGS+set}
+ac_save_CXXFLAGS=$CXXFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5
+$as_echo_n "checking whether $CXX accepts -g... " >&6; }
+if ${ac_cv_prog_cxx_g+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_cxx_werror_flag=$ac_cxx_werror_flag
+   ac_cxx_werror_flag=yes
+   ac_cv_prog_cxx_g=no
+   CXXFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_cv_prog_cxx_g=yes
+else
+  CXXFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+
+else
+  ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+	 CXXFLAGS="-g"
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_cv_prog_cxx_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5
+$as_echo "$ac_cv_prog_cxx_g" >&6; }
+if test "$ac_test_CXXFLAGS" = set; then
+  CXXFLAGS=$ac_save_CXXFLAGS
+elif test $ac_cv_prog_cxx_g = yes; then
+  if test "$GXX" = yes; then
+    CXXFLAGS="-g -O2"
+  else
+    CXXFLAGS="-g"
+  fi
+else
+  if test "$GXX" = yes; then
+    CXXFLAGS="-O2"
+  else
+    CXXFLAGS=
+  fi
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+depcc="$CXX"  am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CXX_dependencies_compiler_type+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CXX_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  am__universal=false
+  case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok '-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_CXX_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CXX_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; }
+CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
+
+ if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
+  am__fastdepCXX_TRUE=
+  am__fastdepCXX_FALSE='#'
+else
+  am__fastdepCXX_TRUE='#'
+  am__fastdepCXX_FALSE=
+fi
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_RANLIB+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_RANLIB="ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_RANLIB" = x; then
+    RANLIB=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    RANLIB=$ac_ct_RANLIB
+  fi
+else
+  RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+ if test "$GCC" = yes; then
+  GCC_TRUE=
+  GCC_FALSE='#'
+else
+  GCC_TRUE='#'
+  GCC_FALSE=
+fi
+   # let the Makefile know if we're gcc
+
+# Check whether --enable-m32 was given.
+if test "${enable_m32+set}" = set; then :
+  enableval=$enable_m32; case "${enableval}" in
+                 yes)
+                   CFLAGS="${CFLAGS} -m32"
+                   CXXFLAGS="${CXXFLAGS} -m32"
+                   usem32=true
+                   ;;
+                 no)
+                   usem32=false
+                   ;;
+                 *)
+                   as_fn_error $? "bad value ${enableval} for --enable-m32" "$LINENO" 5
+                   ;;
+               esac
+else
+  usem32=false
+fi
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if ${ac_cv_path_GREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$GREP"; then
+  ac_path_GREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in grep ggrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_GREP" || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+  # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'GREP' >> "conftest.nl"
+    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_GREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_GREP="$ac_path_GREP"
+      ac_path_GREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_GREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_GREP"; then
+    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if ${ac_cv_path_EGREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+   then ac_cv_path_EGREP="$GREP -E"
+   else
+     if test -z "$EGREP"; then
+  ac_path_EGREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in egrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_EGREP" || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+  # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'EGREP' >> "conftest.nl"
+    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_EGREP="$ac_path_EGREP"
+      ac_path_EGREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_EGREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_EGREP"; then
+    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_EGREP=$EGREP
+fi
+
+   fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if ${ac_cv_header_stdc+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_header_stdc=yes
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+		   (('a' <= (c) && (c) <= 'i') \
+		     || ('j' <= (c) && (c) <= 'r') \
+		     || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+	|| toupper (i) != TOUPPER (i))
+      return 2;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+
+fi
+
+# Check whether --enable-largefile was given.
+if test "${enable_largefile+set}" = set; then :
+  enableval=$enable_largefile;
+fi
+
+if test "$enable_largefile" != no; then
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
+$as_echo_n "checking for special C compiler options needed for large files... " >&6; }
+if ${ac_cv_sys_largefile_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_sys_largefile_CC=no
+     if test "$GCC" != yes; then
+       ac_save_CC=$CC
+       while :; do
+	 # IRIX 6.2 and later do not support large files by default,
+	 # so use the C compiler's -n32 option if that helps.
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+    since some C++ compilers masquerading as C compilers
+    incorrectly reject 9223372036854775807.  */
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+		       && LARGE_OFF_T % 2147483647 == 1)
+		      ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+	 if ac_fn_c_try_compile "$LINENO"; then :
+  break
+fi
+rm -f core conftest.err conftest.$ac_objext
+	 CC="$CC -n32"
+	 if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_sys_largefile_CC=' -n32'; break
+fi
+rm -f core conftest.err conftest.$ac_objext
+	 break
+       done
+       CC=$ac_save_CC
+       rm -f conftest.$ac_ext
+    fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5
+$as_echo "$ac_cv_sys_largefile_CC" >&6; }
+  if test "$ac_cv_sys_largefile_CC" != no; then
+    CC=$CC$ac_cv_sys_largefile_CC
+  fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
+$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
+if ${ac_cv_sys_file_offset_bits+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  while :; do
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+    since some C++ compilers masquerading as C compilers
+    incorrectly reject 9223372036854775807.  */
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+		       && LARGE_OFF_T % 2147483647 == 1)
+		      ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_sys_file_offset_bits=no; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#define _FILE_OFFSET_BITS 64
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+    since some C++ compilers masquerading as C compilers
+    incorrectly reject 9223372036854775807.  */
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+		       && LARGE_OFF_T % 2147483647 == 1)
+		      ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_sys_file_offset_bits=64; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  ac_cv_sys_file_offset_bits=unknown
+  break
+done
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5
+$as_echo "$ac_cv_sys_file_offset_bits" >&6; }
+case $ac_cv_sys_file_offset_bits in #(
+  no | unknown) ;;
+  *)
+cat >>confdefs.h <<_ACEOF
+#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
+_ACEOF
+;;
+esac
+rm -rf conftest*
+  if test $ac_cv_sys_file_offset_bits = unknown; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5
+$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; }
+if ${ac_cv_sys_large_files+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  while :; do
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+    since some C++ compilers masquerading as C compilers
+    incorrectly reject 9223372036854775807.  */
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+		       && LARGE_OFF_T % 2147483647 == 1)
+		      ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_sys_large_files=no; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#define _LARGE_FILES 1
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+    since some C++ compilers masquerading as C compilers
+    incorrectly reject 9223372036854775807.  */
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+		       && LARGE_OFF_T % 2147483647 == 1)
+		      ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_sys_large_files=1; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  ac_cv_sys_large_files=unknown
+  break
+done
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5
+$as_echo "$ac_cv_sys_large_files" >&6; }
+case $ac_cv_sys_large_files in #(
+  no | unknown) ;;
+  *)
+cat >>confdefs.h <<_ACEOF
+#define _LARGE_FILES $ac_cv_sys_large_files
+_ACEOF
+;;
+esac
+rm -rf conftest*
+  fi
+
+
+fi
+
+# ===========================================================================
+#           http://www.nongnu.org/autoconf-archive/ax_pthread.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+#
+# DESCRIPTION
+#
+#   This macro figures out how to build C programs using POSIX threads. It
+#   sets the PTHREAD_LIBS output variable to the threads library and linker
+#   flags, and the PTHREAD_CFLAGS output variable to any special C compiler
+#   flags that are needed. (The user can also force certain compiler
+#   flags/libs to be tested by setting these environment variables.)
+#
+#   Also sets PTHREAD_CC to any special C compiler that is needed for
+#   multi-threaded programs (defaults to the value of CC otherwise). (This
+#   is necessary on AIX to use the special cc_r compiler alias.)
+#
+#   NOTE: You are assumed to not only compile your program with these flags,
+#   but also link it with them as well. e.g. you should link with
+#   $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS
+#
+#   If you are only building threads programs, you may wish to use these
+#   variables in your default LIBS, CFLAGS, and CC:
+#
+#     LIBS="$PTHREAD_LIBS $LIBS"
+#     CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+#     CC="$PTHREAD_CC"
+#
+#   In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant
+#   has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to that name
+#   (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
+#
+#   ACTION-IF-FOUND is a list of shell commands to run if a threads library
+#   is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it
+#   is not found. If ACTION-IF-FOUND is not specified, the default action
+#   will define HAVE_PTHREAD.
+#
+#   Please let the authors know if this macro fails on any platform, or if
+#   you have any other suggestions or comments. This macro was based on work
+#   by SGJ on autoconf scripts for FFTW (http://www.fftw.org/) (with help
+#   from M. Frigo), as well as ac_pthread and hb_pthread macros posted by
+#   Alejandro Forero Cuervo to the autoconf macro repository. We are also
+#   grateful for the helpful feedback of numerous users.
+#
+# LICENSE
+#
+#   Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
+#
+#   This program is free software: you can redistribute it and/or modify it
+#   under the terms of the GNU General Public License as published by the
+#   Free Software Foundation, either version 3 of the License, or (at your
+#   option) any later version.
+#
+#   This program is distributed in the hope that it will be useful, but
+#   WITHOUT ANY WARRANTY; without even the implied warranty of
+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+#   Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License along
+#   with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+#   As a special exception, the respective Autoconf Macro's copyright owner
+#   gives unlimited permission to copy, distribute and modify the configure
+#   scripts that are the output of Autoconf when processing the Macro. You
+#   need not follow the terms of the GNU General Public License when using
+#   or distributing such scripts, even though portions of the text of the
+#   Macro appear in them. The GNU General Public License (GPL) does govern
+#   all other use of the material that constitutes the Autoconf Macro.
+#
+#   This special exception to the GPL applies to versions of the Autoconf
+#   Macro released by the Autoconf Archive. When you make and distribute a
+#   modified version of the Autoconf Macro, you may extend this special
+#   exception to the GPL to apply to your modified version as well.
+
+#serial 6
+
+# This is what autoupdate's m4 run will expand.  It fires
+# the warning (with _au_warn_XXX), outputs it into the
+# updated configure.ac (with AC_DIAGNOSE), and then outputs
+# the replacement expansion.
+
+
+# This is an auxiliary macro that is also run when
+# autoupdate runs m4.  It simply calls m4_warning, but
+# we need a wrapper so that each warning is emitted only
+# once.  We break the quoting in m4_warning's argument in
+# order to expand this macro's arguments, not AU_DEFUN's.
+
+
+# Finally, this is the expansion that is picked up by
+# autoconf.  It tells the user to run autoupdate, and
+# then outputs the replacement expansion.  We do not care
+# about autoupdate's warning because that contains
+# information on what to do *after* running autoupdate.
+
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ax_pthread_ok=no
+
+# We used to check for pthread.h first, but this fails if pthread.h
+# requires special compiler flags (e.g. on True64 or Sequent).
+# It gets checked for in the link test anyway.
+
+# First of all, check if the user has set any of the PTHREAD_LIBS,
+# etcetera environment variables, and if threads linking works using
+# them:
+if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
+        save_CFLAGS="$CFLAGS"
+        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+        save_LIBS="$LIBS"
+        LIBS="$PTHREAD_LIBS $LIBS"
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS" >&5
+$as_echo_n "checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS... " >&6; }
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pthread_join ();
+int
+main ()
+{
+return pthread_join ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ax_pthread_ok=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5
+$as_echo "$ax_pthread_ok" >&6; }
+        if test x"$ax_pthread_ok" = xno; then
+                PTHREAD_LIBS=""
+                PTHREAD_CFLAGS=""
+        fi
+        LIBS="$save_LIBS"
+        CFLAGS="$save_CFLAGS"
+fi
+
+# We must check for the threads library under a number of different
+# names; the ordering is very important because some systems
+# (e.g. DEC) have both -lpthread and -lpthreads, where one of the
+# libraries is broken (non-POSIX).
+
+# Create a list of thread flags to try.  Items starting with a "-" are
+# C compiler flags, and other items are library names, except for "none"
+# which indicates that we try without any flags at all, and "pthread-config"
+# which is a program returning the flags for the Pth emulation library.
+
+ax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
+
+# The ordering *is* (sometimes) important.  Some notes on the
+# individual items follow:
+
+# pthreads: AIX (must check this before -lpthread)
+# none: in case threads are in libc; should be tried before -Kthread and
+#       other compiler flags to prevent continual compiler warnings
+# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
+# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
+# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
+# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
+# -pthreads: Solaris/gcc
+# -mthreads: Mingw32/gcc, Lynx/gcc
+# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
+#      doesn't hurt to check since this sometimes defines pthreads too;
+#      also defines -D_REENTRANT)
+#      ... -mt is also the pthreads flag for HP/aCC
+# pthread: Linux, etcetera
+# --thread-safe: KAI C++
+# pthread-config: use pthread-config program (for GNU Pth library)
+
+case "${host_cpu}-${host_os}" in
+        *solaris*)
+
+        # On Solaris (at least, for some versions), libc contains stubbed
+        # (non-functional) versions of the pthreads routines, so link-based
+        # tests will erroneously succeed.  (We need to link with -pthreads/-mt/
+        # -lpthread.)  (The stubs are missing pthread_cleanup_push, or rather
+        # a function called by this macro, so we could check for that, but
+        # who knows whether they'll stub that too in a future libc.)  So,
+        # we'll just look for -pthreads and -lpthread first:
+
+        ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags"
+        ;;
+
+	*-darwin*)
+	acx_pthread_flags="-pthread $acx_pthread_flags"
+	;;
+esac
+
+if test x"$ax_pthread_ok" = xno; then
+for flag in $ax_pthread_flags; do
+
+        case $flag in
+                none)
+                { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work without any flags" >&5
+$as_echo_n "checking whether pthreads work without any flags... " >&6; }
+                ;;
+
+                -*)
+                { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with $flag" >&5
+$as_echo_n "checking whether pthreads work with $flag... " >&6; }
+                PTHREAD_CFLAGS="$flag"
+                ;;
+
+		pthread-config)
+		# Extract the first word of "pthread-config", so it can be a program name with args.
+set dummy pthread-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ax_pthread_config+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ax_pthread_config"; then
+  ac_cv_prog_ax_pthread_config="$ax_pthread_config" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ax_pthread_config="yes"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_prog_ax_pthread_config" && ac_cv_prog_ax_pthread_config="no"
+fi
+fi
+ax_pthread_config=$ac_cv_prog_ax_pthread_config
+if test -n "$ax_pthread_config"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_config" >&5
+$as_echo "$ax_pthread_config" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+		if test x"$ax_pthread_config" = xno; then continue; fi
+		PTHREAD_CFLAGS="`pthread-config --cflags`"
+		PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
+		;;
+
+                *)
+                { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the pthreads library -l$flag" >&5
+$as_echo_n "checking for the pthreads library -l$flag... " >&6; }
+                PTHREAD_LIBS="-l$flag"
+                ;;
+        esac
+
+        save_LIBS="$LIBS"
+        save_CFLAGS="$CFLAGS"
+        LIBS="$PTHREAD_LIBS $LIBS"
+        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+
+        # Check for various functions.  We must include pthread.h,
+        # since some functions may be macros.  (On the Sequent, we
+        # need a special flag -Kthread to make this header compile.)
+        # We check for pthread_join because it is in -lpthread on IRIX
+        # while pthread_create is in libc.  We check for pthread_attr_init
+        # due to DEC craziness with -lpthreads.  We check for
+        # pthread_cleanup_push because it is one of the few pthread
+        # functions on Solaris that doesn't have a non-functional libc stub.
+        # We try pthread_create on general principles.
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <pthread.h>
+	             static void routine(void* a) {a=0;}
+	             static void* start_routine(void* a) {return a;}
+int
+main ()
+{
+pthread_t th; pthread_attr_t attr;
+                     pthread_join(th, 0);
+                     pthread_attr_init(&attr);
+                     pthread_cleanup_push(routine, 0);
+                     pthread_create(&th,0,start_routine,0);
+                     pthread_cleanup_pop(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ax_pthread_ok=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+        LIBS="$save_LIBS"
+        CFLAGS="$save_CFLAGS"
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5
+$as_echo "$ax_pthread_ok" >&6; }
+        if test "x$ax_pthread_ok" = xyes; then
+                break;
+        fi
+
+        PTHREAD_LIBS=""
+        PTHREAD_CFLAGS=""
+done
+fi
+
+# Various other checks:
+if test "x$ax_pthread_ok" = xyes; then
+        save_LIBS="$LIBS"
+        LIBS="$PTHREAD_LIBS $LIBS"
+        save_CFLAGS="$CFLAGS"
+        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+
+        # Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for joinable pthread attribute" >&5
+$as_echo_n "checking for joinable pthread attribute... " >&6; }
+	attr_name=unknown
+	for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
+	    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <pthread.h>
+int
+main ()
+{
+int attr=$attr; return attr;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  attr_name=$attr; break
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+	done
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $attr_name" >&5
+$as_echo "$attr_name" >&6; }
+        if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then
+
+cat >>confdefs.h <<_ACEOF
+#define PTHREAD_CREATE_JOINABLE $attr_name
+_ACEOF
+
+        fi
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking if more special flags are required for pthreads" >&5
+$as_echo_n "checking if more special flags are required for pthreads... " >&6; }
+        flag=no
+        case "${host_cpu}-${host_os}" in
+            *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";;
+            *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";;
+        esac
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${flag}" >&5
+$as_echo "${flag}" >&6; }
+        if test "x$flag" != xno; then
+            PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
+        fi
+
+        LIBS="$save_LIBS"
+        CFLAGS="$save_CFLAGS"
+
+        # More AIX lossage: must compile with xlc_r or cc_r
+	if test x"$GCC" != xyes; then
+          for ac_prog in xlc_r cc_r
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_PTHREAD_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$PTHREAD_CC"; then
+  ac_cv_prog_PTHREAD_CC="$PTHREAD_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_PTHREAD_CC="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+PTHREAD_CC=$ac_cv_prog_PTHREAD_CC
+if test -n "$PTHREAD_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CC" >&5
+$as_echo "$PTHREAD_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$PTHREAD_CC" && break
+done
+test -n "$PTHREAD_CC" || PTHREAD_CC="${CC}"
+
+        else
+          PTHREAD_CC=$CC
+	fi
+else
+        PTHREAD_CC="$CC"
+fi
+
+
+
+
+
+# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
+if test x"$ax_pthread_ok" = xyes; then
+
+$as_echo "#define HAVE_PTHREAD 1" >>confdefs.h
+
+        :
+else
+        ax_pthread_ok=no
+
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+		  inttypes.h stdint.h unistd.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+for ac_header in a.out.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "a.out.h" "ac_cv_header_a_out_h" "$ac_includes_default"
+if test "x$ac_cv_header_a_out_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_A_OUT_H 1
+_ACEOF
+
+fi
+
+done
+
+
+# Only build Linux client libs when compiling for Linux
+case $host in
+  *-*-linux* | *-android* )
+    LINUX_HOST=true
+    ;;
+esac
+ if test x$LINUX_HOST = xtrue; then
+  LINUX_HOST_TRUE=
+  LINUX_HOST_FALSE='#'
+else
+  LINUX_HOST_TRUE='#'
+  LINUX_HOST_FALSE=
+fi
+
+
+# Only use Android support headers when compiling for Android
+case $host in
+  *-android*)
+    ANDROID_HOST=true
+    ;;
+esac
+ if test x$ANDROID_HOST = xtrue; then
+  ANDROID_HOST_TRUE=
+  ANDROID_HOST_FALSE='#'
+else
+  ANDROID_HOST_TRUE='#'
+  ANDROID_HOST_FALSE=
+fi
+
+
+# Check whether --enable-processor was given.
+if test "${enable_processor+set}" = set; then :
+  enableval=$enable_processor; case "${enableval}" in
+                 yes)
+                   disable_processor=false
+                   ;;
+                 no)
+                   disable_processor=true
+                   ;;
+                 *)
+                   as_fn_error $? "bad value ${enableval} for --disable-processor" "$LINENO" 5
+                   ;;
+               esac
+else
+  disable_processor=false
+fi
+
+ if test x$disable_processor = xtrue; then
+  DISABLE_PROCESSOR_TRUE=
+  DISABLE_PROCESSOR_FALSE='#'
+else
+  DISABLE_PROCESSOR_TRUE='#'
+  DISABLE_PROCESSOR_FALSE=
+fi
+
+
+# Check whether --enable-tools was given.
+if test "${enable_tools+set}" = set; then :
+  enableval=$enable_tools; case "${enableval}" in
+                 yes)
+                   disable_tools=false
+                   ;;
+                 no)
+                   disable_tools=true
+                   ;;
+                 *)
+                   as_fn_error $? "bad value ${enableval} for --disable-tools" "$LINENO" 5
+                   ;;
+               esac
+else
+  disable_tools=false
+fi
+
+ if test x$disable_tools = xtrue; then
+  DISABLE_TOOLS_TRUE=
+  DISABLE_TOOLS_FALSE='#'
+else
+  DISABLE_TOOLS_TRUE='#'
+  DISABLE_TOOLS_FALSE=
+fi
+
+
+if test x$LINUX_HOST = xfalse -a x$disable_processor = xtrue -a x$disable_tools = xtrue; then
+   as_fn_error $? "--disable-processor and --disable-tools were specified, and not building for Linux. Nothing to build!" "$LINENO" 5
+fi
+
+# Check whether --enable-selftest was given.
+if test "${enable_selftest+set}" = set; then :
+  enableval=$enable_selftest; case "${enableval}" in
+                 yes)
+                   selftest=true
+                   ;;
+                 no)
+                   selftest=false
+                   ;;
+                 *)
+                   as_fn_error $? "bad value ${enableval} for --enable-selftest" "$LINENO" 5
+                   ;;
+               esac
+else
+  selftest=false
+fi
+
+ if test x$selftest = xtrue; then
+  SELFTEST_TRUE=
+  SELFTEST_FALSE='#'
+else
+  SELFTEST_TRUE='#'
+  SELFTEST_FALSE=
+fi
+
+
+ac_config_files="$ac_config_files breakpad.pc breakpad-client.pc Makefile"
+
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+
+  (set) 2>&1 |
+    case $as_nl`(ac_space=' '; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      # `set' does not quote correctly, so add quotes: double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \.
+      sed -n \
+	"s/'/'\\\\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+      ;; #(
+    *)
+      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+) |
+  sed '
+     /^ac_cv_env_/b end
+     t clear
+     :clear
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     t end
+     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+  if test -w "$cache_file"; then
+    if test "x$cache_file" != "x/dev/null"; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+      if test ! -f "$cache_file" || test -h "$cache_file"; then
+	cat confcache >"$cache_file"
+      else
+        case $cache_file in #(
+        */* | ?:*)
+	  mv -f confcache "$cache_file"$$ &&
+	  mv -f "$cache_file"$$ "$cache_file" ;; #(
+        *)
+	  mv -f confcache "$cache_file" ;;
+	esac
+      fi
+    fi
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+  fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+DEFS=-DHAVE_CONFIG_H
+
+ac_libobjs=
+ac_ltlibobjs=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+  # 1. Remove the extension, and $U if already installed.
+  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
+  #    will be set to the directory where LIBOBJS objects are built.
+  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
+$as_echo_n "checking that generated files are newer than configure... " >&6; }
+   if test -n "$am_sleep_pid"; then
+     # Hide warnings about reused PIDs.
+     wait $am_sleep_pid 2>/dev/null
+   fi
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
+$as_echo "done" >&6; }
+ if test -n "$EXEEXT"; then
+  am__EXEEXT_TRUE=
+  am__EXEEXT_FALSE='#'
+else
+  am__EXEEXT_TRUE='#'
+  am__EXEEXT_FALSE=
+fi
+
+if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
+  as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
+  as_fn_error $? "conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+  as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCCAS_TRUE}" && test -z "${am__fastdepCCAS_FALSE}"; then
+  as_fn_error $? "conditional \"am__fastdepCCAS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+  as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
+  as_fn_error $? "conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${GCC_TRUE}" && test -z "${GCC_FALSE}"; then
+  as_fn_error $? "conditional \"GCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${LINUX_HOST_TRUE}" && test -z "${LINUX_HOST_FALSE}"; then
+  as_fn_error $? "conditional \"LINUX_HOST\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${ANDROID_HOST_TRUE}" && test -z "${ANDROID_HOST_FALSE}"; then
+  as_fn_error $? "conditional \"ANDROID_HOST\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${DISABLE_PROCESSOR_TRUE}" && test -z "${DISABLE_PROCESSOR_FALSE}"; then
+  as_fn_error $? "conditional \"DISABLE_PROCESSOR\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${DISABLE_TOOLS_TRUE}" && test -z "${DISABLE_TOOLS_FALSE}"; then
+  as_fn_error $? "conditional \"DISABLE_TOOLS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${SELFTEST_TRUE}" && test -z "${SELFTEST_FALSE}"; then
+  as_fn_error $? "conditional \"SELFTEST\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+
+: "${CONFIG_STATUS=./config.status}"
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+	expr "X$arg" : "X\\(.*\\)$as_nl";
+	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""	$as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='	';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -pR'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -pR'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -pR'
+  fi
+else
+  as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by breakpad $as_me 0.1, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
+
+  CONFIG_FILES    = $CONFIG_FILES
+  CONFIG_HEADERS  = $CONFIG_HEADERS
+  CONFIG_LINKS    = $CONFIG_LINKS
+  CONFIG_COMMANDS = $CONFIG_COMMANDS
+  $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+case $ac_config_headers in *"
+"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
+esac
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+config_headers="$ac_config_headers"
+config_commands="$ac_config_commands"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ac_cs_usage="\
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration.  Unless the files
+and actions are specified as TAGs, all are instantiated by default.
+
+Usage: $0 [OPTION]... [TAG]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number and configuration settings, then exit
+      --config     print configuration, then exit
+  -q, --quiet, --silent
+                   do not print progress messages
+  -d, --debug      don't remove temporary files
+      --recheck    update $as_me by reconfiguring in the same conditions
+      --file=FILE[:TEMPLATE]
+                   instantiate the configuration file FILE
+      --header=FILE[:TEMPLATE]
+                   instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Configuration commands:
+$config_commands
+
+Report bugs to <google-breakpad-dev@googlegroups.com>."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_version="\\
+breakpad config.status 0.1
+configured by $0, generated by GNU Autoconf 2.69,
+  with options \\"\$ac_cs_config\\"
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+INSTALL='$INSTALL'
+MKDIR_P='$MKDIR_P'
+AWK='$AWK'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+  case $1 in
+  --*=?*)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+    ac_shift=:
+    ;;
+  --*=)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=
+    ac_shift=:
+    ;;
+  *)
+    ac_option=$1
+    ac_optarg=$2
+    ac_shift=shift
+    ;;
+  esac
+
+  case $ac_option in
+  # Handling of the options.
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    ac_cs_recheck=: ;;
+  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+    $as_echo "$ac_cs_version"; exit ;;
+  --config | --confi | --conf | --con | --co | --c )
+    $as_echo "$ac_cs_config"; exit ;;
+  --debug | --debu | --deb | --de | --d | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    '') as_fn_error $? "missing file argument" ;;
+    esac
+    as_fn_append CONFIG_FILES " '$ac_optarg'"
+    ac_need_defaults=false;;
+  --header | --heade | --head | --hea )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    as_fn_append CONFIG_HEADERS " '$ac_optarg'"
+    ac_need_defaults=false;;
+  --he | --h)
+    # Conflict between --help and --header
+    as_fn_error $? "ambiguous option: \`$1'
+Try \`$0 --help' for more information.";;
+  --help | --hel | -h )
+    $as_echo "$ac_cs_usage"; exit ;;
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil | --si | --s)
+    ac_cs_silent=: ;;
+
+  # This is an error.
+  -*) as_fn_error $? "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
+
+  *) as_fn_append ac_config_targets " $1"
+     ac_need_defaults=false ;;
+
+  esac
+  shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+  exec 6>/dev/null
+  ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+if \$ac_cs_recheck; then
+  set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+  shift
+  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+  CONFIG_SHELL='$SHELL'
+  export CONFIG_SHELL
+  exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+  $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+#
+# INIT-COMMANDS
+#
+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+  case $ac_config_target in
+    "src/config.h") CONFIG_HEADERS="$CONFIG_HEADERS src/config.h" ;;
+    "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+    "breakpad.pc") CONFIG_FILES="$CONFIG_FILES breakpad.pc" ;;
+    "breakpad-client.pc") CONFIG_FILES="$CONFIG_FILES breakpad-client.pc" ;;
+    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+
+  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+  esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used.  Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience.  Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+  tmp= ac_tmp=
+  trap 'exit_status=$?
+  : "${ac_tmp:=$tmp}"
+  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
+' 0
+  trap 'as_fn_exit 1' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+  test -d "$tmp"
+}  ||
+{
+  tmp=./conf$$-$RANDOM
+  (umask 077 && mkdir "$tmp")
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ac_tmp=$tmp
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+  eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+  ac_cs_awk_cr='\\r'
+else
+  ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+  echo "cat >conf$$subs.awk <<_ACEOF" &&
+  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+  echo "_ACEOF"
+} >conf$$subs.sh ||
+  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+  . ./conf$$subs.sh ||
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+
+  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+  if test $ac_delim_n = $ac_delim_num; then
+    break
+  elif $ac_last_try; then
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\)..*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\)..*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+  N
+  s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
+  for (key in S) S_is_set[key] = 1
+  FS = ""
+
+}
+{
+  line = $ 0
+  nfields = split(line, field, "@")
+  substed = 0
+  len = length(field[1])
+  for (i = 2; i < nfields; i++) {
+    key = field[i]
+    keylen = length(key)
+    if (S_is_set[key]) {
+      value = S[key]
+      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+      len += length(value) + length(field[++i])
+      substed = 1
+    } else
+      len += 1 + keylen
+  }
+
+  print line
+}
+
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+  cat
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
+  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+  ac_vpsub='/^[	 ]*VPATH[	 ]*=[	 ]*/{
+h
+s///
+s/^/:/
+s/[	 ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
+s/:*$//
+x
+s/\(=[	 ]*\).*/\1/
+G
+s/\n//
+s/^[^=]*=[	 ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+# Set up the scripts for CONFIG_HEADERS section.
+# No need to generate them if there are no CONFIG_HEADERS.
+# This happens for instance with `./config.status Makefile'.
+if test -n "$CONFIG_HEADERS"; then
+cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
+BEGIN {
+_ACEOF
+
+# Transform confdefs.h into an awk script `defines.awk', embedded as
+# here-document in config.status, that substitutes the proper values into
+# config.h.in to produce config.h.
+
+# Create a delimiter string that does not exist in confdefs.h, to ease
+# handling of long lines.
+ac_delim='%!_!# '
+for ac_last_try in false false :; do
+  ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
+  if test -z "$ac_tt"; then
+    break
+  elif $ac_last_try; then
+    as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+
+# For the awk script, D is an array of macro values keyed by name,
+# likewise P contains macro parameters if any.  Preserve backslash
+# newline sequences.
+
+ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
+sed -n '
+s/.\{148\}/&'"$ac_delim"'/g
+t rset
+:rset
+s/^[	 ]*#[	 ]*define[	 ][	 ]*/ /
+t def
+d
+:def
+s/\\$//
+t bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3"/p
+s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2"/p
+d
+:bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3\\\\\\n"\\/p
+t cont
+s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
+t cont
+d
+:cont
+n
+s/.\{148\}/&'"$ac_delim"'/g
+t clear
+:clear
+s/\\$//
+t bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/"/p
+d
+:bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
+b cont
+' <confdefs.h | sed '
+s/'"$ac_delim"'/"\\\
+"/g' >>$CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  for (key in D) D_is_set[key] = 1
+  FS = ""
+}
+/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
+  line = \$ 0
+  split(line, arg, " ")
+  if (arg[1] == "#") {
+    defundef = arg[2]
+    mac1 = arg[3]
+  } else {
+    defundef = substr(arg[1], 2)
+    mac1 = arg[2]
+  }
+  split(mac1, mac2, "(") #)
+  macro = mac2[1]
+  prefix = substr(line, 1, index(line, defundef) - 1)
+  if (D_is_set[macro]) {
+    # Preserve the white space surrounding the "#".
+    print prefix "define", macro P[macro] D[macro]
+    next
+  } else {
+    # Replace #undef with comments.  This is necessary, for example,
+    # in the case of _POSIX_SOURCE, which is predefined and required
+    # on some systems where configure will not decide to define it.
+    if (defundef == "undef") {
+      print "/*", prefix defundef, macro, "*/"
+      next
+    }
+  }
+}
+{ print }
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+  as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
+fi # test -n "$CONFIG_HEADERS"
+
+
+eval set X "  :F $CONFIG_FILES  :H $CONFIG_HEADERS    :C $CONFIG_COMMANDS"
+shift
+for ac_tag
+do
+  case $ac_tag in
+  :[FHLC]) ac_mode=$ac_tag; continue;;
+  esac
+  case $ac_mode$ac_tag in
+  :[FHL]*:*);;
+  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
+  :[FH]-) ac_tag=-:-;;
+  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+  esac
+  ac_save_IFS=$IFS
+  IFS=:
+  set x $ac_tag
+  IFS=$ac_save_IFS
+  shift
+  ac_file=$1
+  shift
+
+  case $ac_mode in
+  :L) ac_source=$1;;
+  :[FH])
+    ac_file_inputs=
+    for ac_f
+    do
+      case $ac_f in
+      -) ac_f="$ac_tmp/stdin";;
+      *) # Look for the file first in the build tree, then in the source tree
+	 # (if the path is not absolute).  The absolute path cannot be DOS-style,
+	 # because $ac_f cannot contain `:'.
+	 test -f "$ac_f" ||
+	   case $ac_f in
+	   [\\/$]*) false;;
+	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+	   esac ||
+	   as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+      esac
+      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+      as_fn_append ac_file_inputs " '$ac_f'"
+    done
+
+    # Let's still pretend it is `configure' which instantiates (i.e., don't
+    # use $as_me), people would be surprised to read:
+    #    /* config.h.  Generated by config.status.  */
+    configure_input='Generated from '`
+	  $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+	`' by configure.'
+    if test x"$ac_file" != x-; then
+      configure_input="$ac_file.  $configure_input"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+    fi
+    # Neutralize special characters interpreted by sed in replacement strings.
+    case $configure_input in #(
+    *\&* | *\|* | *\\* )
+       ac_sed_conf_input=`$as_echo "$configure_input" |
+       sed 's/[\\\\&|]/\\\\&/g'`;; #(
+    *) ac_sed_conf_input=$configure_input;;
+    esac
+
+    case $ac_tag in
+    *:-:* | *:-) cat >"$ac_tmp/stdin" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
+    esac
+    ;;
+  esac
+
+  ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$ac_file" : 'X\(//\)[^/]' \| \
+	 X"$ac_file" : 'X\(//\)$' \| \
+	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+  as_dir="$ac_dir"; as_fn_mkdir_p
+  ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+  case $ac_mode in
+  :F)
+  #
+  # CONFIG_FILE
+  #
+
+  case $INSTALL in
+  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+  esac
+  ac_MKDIR_P=$MKDIR_P
+  case $MKDIR_P in
+  [\\/$]* | ?:[\\/]* ) ;;
+  */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
+  esac
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+ac_sed_dataroot='
+/datarootdir/ {
+  p
+  q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  ac_datarootdir_hack='
+  s&@datadir@&$datadir&g
+  s&@docdir@&$docdir&g
+  s&@infodir@&$infodir&g
+  s&@localedir@&$localedir&g
+  s&@mandir@&$mandir&g
+  s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+s&@MKDIR_P@&$ac_MKDIR_P&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
+  >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+  { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
+  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' \
+      "$ac_tmp/out"`; test -z "$ac_out"; } &&
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&2;}
+
+  rm -f "$ac_tmp/stdin"
+  case $ac_file in
+  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
+  esac \
+  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ ;;
+  :H)
+  #
+  # CONFIG_HEADER
+  #
+  if test x"$ac_file" != x-; then
+    {
+      $as_echo "/* $configure_input  */" \
+      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
+    } >"$ac_tmp/config.h" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+    if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
+$as_echo "$as_me: $ac_file is unchanged" >&6;}
+    else
+      rm -f "$ac_file"
+      mv "$ac_tmp/config.h" "$ac_file" \
+	|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
+    fi
+  else
+    $as_echo "/* $configure_input  */" \
+      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
+      || as_fn_error $? "could not create -" "$LINENO" 5
+  fi
+# Compute "$ac_file"'s index in $config_headers.
+_am_arg="$ac_file"
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $_am_arg | $_am_arg:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||
+$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$_am_arg" : 'X\(//\)[^/]' \| \
+	 X"$_am_arg" : 'X\(//\)$' \| \
+	 X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$_am_arg" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`/stamp-h$_am_stamp_count
+ ;;
+
+  :C)  { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
+$as_echo "$as_me: executing $ac_file commands" >&6;}
+ ;;
+  esac
+
+
+  case $ac_file$ac_mode in
+    "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
+  # Older Autoconf quotes --file arguments for eval, but not when files
+  # are listed without --file.  Let's play safe and only enable the eval
+  # if we detect the quoting.
+  case $CONFIG_FILES in
+  *\'*) eval set x "$CONFIG_FILES" ;;
+  *)   set x $CONFIG_FILES ;;
+  esac
+  shift
+  for mf
+  do
+    # Strip MF so we end up with the name of the file.
+    mf=`echo "$mf" | sed -e 's/:.*$//'`
+    # Check whether this is an Automake generated Makefile or not.
+    # We used to match only the files named 'Makefile.in', but
+    # some people rename them; so instead we look at the file content.
+    # Grep'ing the first line is not enough: some people post-process
+    # each Makefile.in and add a new line on top of each file to say so.
+    # Grep'ing the whole file is not good either: AIX grep has a line
+    # limit of 2048, but all sed's we know have understand at least 4000.
+    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+      dirpart=`$as_dirname -- "$mf" ||
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$mf" : 'X\(//\)[^/]' \| \
+	 X"$mf" : 'X\(//\)$' \| \
+	 X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$mf" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+    else
+      continue
+    fi
+    # Extract the definition of DEPDIR, am__include, and am__quote
+    # from the Makefile without running 'make'.
+    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+    test -z "$DEPDIR" && continue
+    am__include=`sed -n 's/^am__include = //p' < "$mf"`
+    test -z "$am__include" && continue
+    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+    # Find all dependency output files, they are included files with
+    # $(DEPDIR) in their names.  We invoke sed twice because it is the
+    # simplest approach to changing $(DEPDIR) to its actual value in the
+    # expansion.
+    for file in `sed -n "
+      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
+      # Make sure the directory exists.
+      test -f "$dirpart/$file" && continue
+      fdir=`$as_dirname -- "$file" ||
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$file" : 'X\(//\)[^/]' \| \
+	 X"$file" : 'X\(//\)$' \| \
+	 X"$file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      as_dir=$dirpart/$fdir; as_fn_mkdir_p
+      # echo "creating $dirpart/$file"
+      echo '# dummy' > "$dirpart/$file"
+    done
+  done
+}
+ ;;
+
+  esac
+done # for ac_tag
+
+
+as_fn_exit 0
+_ACEOF
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded.  So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status.  When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+  ac_cs_success=:
+  ac_config_status_args=
+  test "$silent" = yes &&
+    ac_config_status_args="$ac_config_status_args --quiet"
+  exec 5>/dev/null
+  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+  exec 5>>config.log
+  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+  # would make configure fail if this is the last instruction.
+  $ac_cs_success || as_fn_exit 1
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
diff --git a/google-breakpad/configure.ac b/google-breakpad/configure.ac
new file mode 100644
index 0000000..8c02f51
--- /dev/null
+++ b/google-breakpad/configure.ac
@@ -0,0 +1,159 @@
+# Copyright (c) 2006, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+AC_PREREQ(2.57)
+
+AC_INIT(breakpad, 0.1, google-breakpad-dev@googlegroups.com)
+dnl Sanity check: the argument is just a file that should exist.
+AC_CONFIG_SRCDIR(README)
+AC_CONFIG_AUX_DIR(autotools)
+AC_CONFIG_MACRO_DIR([m4])
+AC_CANONICAL_HOST
+
+AM_INIT_AUTOMAKE(subdir-objects tar-ustar 1.11.1)
+AM_CONFIG_HEADER(src/config.h)
+AM_MAINTAINER_MODE
+
+AM_PROG_AS
+AC_PROG_CC
+AM_PROG_CC_C_O
+AC_PROG_CPP
+AC_PROG_CXX
+AC_PROG_RANLIB
+AM_CONDITIONAL(GCC, test "$GCC" = yes)   # let the Makefile know if we're gcc
+
+dnl This must come before all the feature tests below.
+AC_ARG_ENABLE(m32,
+              AS_HELP_STRING([--enable-m32],
+                             [Compile/build with -m32]
+                             [(default is no)]),
+              [case "${enableval}" in
+                 yes)
+                   CFLAGS="${CFLAGS} -m32"
+                   CXXFLAGS="${CXXFLAGS} -m32"
+                   usem32=true
+                   ;;
+                 no)
+                   usem32=false
+                   ;;
+                 *)
+                   AC_MSG_ERROR(bad value ${enableval} for --enable-m32)
+                   ;;
+               esac],
+              [usem32=false])
+
+AC_HEADER_STDC
+AC_SYS_LARGEFILE
+m4_include(m4/ax_pthread.m4)
+AX_PTHREAD
+AC_CHECK_HEADERS([a.out.h])
+
+# Only build Linux client libs when compiling for Linux
+case $host in
+  *-*-linux* | *-android* )
+    LINUX_HOST=true
+    ;;
+esac
+AM_CONDITIONAL(LINUX_HOST, test x$LINUX_HOST = xtrue)
+
+# Only use Android support headers when compiling for Android
+case $host in
+  *-android*)
+    ANDROID_HOST=true
+    ;;
+esac
+AM_CONDITIONAL(ANDROID_HOST, test x$ANDROID_HOST = xtrue)
+
+AC_ARG_ENABLE(processor,
+              AS_HELP_STRING([--disable-processor],
+                             [Don't build processor library]
+                             [(default is no)]),
+              [case "${enableval}" in
+                 yes)
+                   disable_processor=false
+                   ;;
+                 no)
+                   disable_processor=true
+                   ;;
+                 *)
+                   AC_MSG_ERROR(bad value ${enableval} for --disable-processor)
+                   ;;
+               esac],
+              [disable_processor=false])
+AM_CONDITIONAL(DISABLE_PROCESSOR, test x$disable_processor = xtrue)
+
+AC_ARG_ENABLE(tools,
+              AS_HELP_STRING([--disable-tools],
+                             [Don't build tool binaries]
+                             [(default is no)]),
+              [case "${enableval}" in
+                 yes)
+                   disable_tools=false
+                   ;;
+                 no)
+                   disable_tools=true
+                   ;;
+                 *)
+                   AC_MSG_ERROR(bad value ${enableval} for --disable-tools)
+                   ;;
+               esac],
+              [disable_tools=false])
+AM_CONDITIONAL(DISABLE_TOOLS, test x$disable_tools = xtrue)
+
+if test x$LINUX_HOST = xfalse -a x$disable_processor = xtrue -a x$disable_tools = xtrue; then
+   AC_MSG_ERROR([--disable-processor and --disable-tools were specified, and not building for Linux. Nothing to build!])
+fi
+
+AC_ARG_ENABLE(selftest,
+              AS_HELP_STRING([--enable-selftest],
+                             [Run extra tests with "make check" ]
+                             [(may conflict with optimizations) ]
+                             [(default is no)]),
+              [case "${enableval}" in
+                 yes)
+                   selftest=true
+                   ;;
+                 no)
+                   selftest=false
+                   ;;
+                 *)
+                   AC_MSG_ERROR(bad value ${enableval} for --enable-selftest)
+                   ;;
+               esac],
+              [selftest=false])
+AM_CONDITIONAL(SELFTEST, test x$selftest = xtrue)
+
+AC_CONFIG_FILES(m4_flatten([
+  breakpad.pc
+  breakpad-client.pc
+  Makefile
+]))
+
+AC_OUTPUT
diff --git a/google-breakpad/inherit-review-settings-ok b/google-breakpad/inherit-review-settings-ok
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/google-breakpad/inherit-review-settings-ok
diff --git a/google-breakpad/m4/ax_pthread.m4 b/google-breakpad/m4/ax_pthread.m4
new file mode 100644
index 0000000..ca164eb
--- /dev/null
+++ b/google-breakpad/m4/ax_pthread.m4
@@ -0,0 +1,283 @@
+# ===========================================================================
+#           http://www.nongnu.org/autoconf-archive/ax_pthread.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+#
+# DESCRIPTION
+#
+#   This macro figures out how to build C programs using POSIX threads. It
+#   sets the PTHREAD_LIBS output variable to the threads library and linker
+#   flags, and the PTHREAD_CFLAGS output variable to any special C compiler
+#   flags that are needed. (The user can also force certain compiler
+#   flags/libs to be tested by setting these environment variables.)
+#
+#   Also sets PTHREAD_CC to any special C compiler that is needed for
+#   multi-threaded programs (defaults to the value of CC otherwise). (This
+#   is necessary on AIX to use the special cc_r compiler alias.)
+#
+#   NOTE: You are assumed to not only compile your program with these flags,
+#   but also link it with them as well. e.g. you should link with
+#   $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS
+#
+#   If you are only building threads programs, you may wish to use these
+#   variables in your default LIBS, CFLAGS, and CC:
+#
+#     LIBS="$PTHREAD_LIBS $LIBS"
+#     CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+#     CC="$PTHREAD_CC"
+#
+#   In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant
+#   has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to that name
+#   (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
+#
+#   ACTION-IF-FOUND is a list of shell commands to run if a threads library
+#   is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it
+#   is not found. If ACTION-IF-FOUND is not specified, the default action
+#   will define HAVE_PTHREAD.
+#
+#   Please let the authors know if this macro fails on any platform, or if
+#   you have any other suggestions or comments. This macro was based on work
+#   by SGJ on autoconf scripts for FFTW (http://www.fftw.org/) (with help
+#   from M. Frigo), as well as ac_pthread and hb_pthread macros posted by
+#   Alejandro Forero Cuervo to the autoconf macro repository. We are also
+#   grateful for the helpful feedback of numerous users.
+#
+# LICENSE
+#
+#   Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
+#
+#   This program is free software: you can redistribute it and/or modify it
+#   under the terms of the GNU General Public License as published by the
+#   Free Software Foundation, either version 3 of the License, or (at your
+#   option) any later version.
+#
+#   This program is distributed in the hope that it will be useful, but
+#   WITHOUT ANY WARRANTY; without even the implied warranty of
+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+#   Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License along
+#   with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+#   As a special exception, the respective Autoconf Macro's copyright owner
+#   gives unlimited permission to copy, distribute and modify the configure
+#   scripts that are the output of Autoconf when processing the Macro. You
+#   need not follow the terms of the GNU General Public License when using
+#   or distributing such scripts, even though portions of the text of the
+#   Macro appear in them. The GNU General Public License (GPL) does govern
+#   all other use of the material that constitutes the Autoconf Macro.
+#
+#   This special exception to the GPL applies to versions of the Autoconf
+#   Macro released by the Autoconf Archive. When you make and distribute a
+#   modified version of the Autoconf Macro, you may extend this special
+#   exception to the GPL to apply to your modified version as well.
+
+#serial 6
+
+AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD])
+AC_DEFUN([AX_PTHREAD], [
+AC_REQUIRE([AC_CANONICAL_HOST])
+AC_LANG_SAVE
+AC_LANG_C
+ax_pthread_ok=no
+
+# We used to check for pthread.h first, but this fails if pthread.h
+# requires special compiler flags (e.g. on True64 or Sequent).
+# It gets checked for in the link test anyway.
+
+# First of all, check if the user has set any of the PTHREAD_LIBS,
+# etcetera environment variables, and if threads linking works using
+# them:
+if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
+        save_CFLAGS="$CFLAGS"
+        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+        save_LIBS="$LIBS"
+        LIBS="$PTHREAD_LIBS $LIBS"
+        AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS])
+        AC_TRY_LINK_FUNC(pthread_join, ax_pthread_ok=yes)
+        AC_MSG_RESULT($ax_pthread_ok)
+        if test x"$ax_pthread_ok" = xno; then
+                PTHREAD_LIBS=""
+                PTHREAD_CFLAGS=""
+        fi
+        LIBS="$save_LIBS"
+        CFLAGS="$save_CFLAGS"
+fi
+
+# We must check for the threads library under a number of different
+# names; the ordering is very important because some systems
+# (e.g. DEC) have both -lpthread and -lpthreads, where one of the
+# libraries is broken (non-POSIX).
+
+# Create a list of thread flags to try.  Items starting with a "-" are
+# C compiler flags, and other items are library names, except for "none"
+# which indicates that we try without any flags at all, and "pthread-config"
+# which is a program returning the flags for the Pth emulation library.
+
+ax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
+
+# The ordering *is* (sometimes) important.  Some notes on the
+# individual items follow:
+
+# pthreads: AIX (must check this before -lpthread)
+# none: in case threads are in libc; should be tried before -Kthread and
+#       other compiler flags to prevent continual compiler warnings
+# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
+# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
+# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
+# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
+# -pthreads: Solaris/gcc
+# -mthreads: Mingw32/gcc, Lynx/gcc
+# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
+#      doesn't hurt to check since this sometimes defines pthreads too;
+#      also defines -D_REENTRANT)
+#      ... -mt is also the pthreads flag for HP/aCC
+# pthread: Linux, etcetera
+# --thread-safe: KAI C++
+# pthread-config: use pthread-config program (for GNU Pth library)
+
+case "${host_cpu}-${host_os}" in
+        *solaris*)
+
+        # On Solaris (at least, for some versions), libc contains stubbed
+        # (non-functional) versions of the pthreads routines, so link-based
+        # tests will erroneously succeed.  (We need to link with -pthreads/-mt/
+        # -lpthread.)  (The stubs are missing pthread_cleanup_push, or rather
+        # a function called by this macro, so we could check for that, but
+        # who knows whether they'll stub that too in a future libc.)  So,
+        # we'll just look for -pthreads and -lpthread first:
+
+        ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags"
+        ;;
+
+	*-darwin*)
+	acx_pthread_flags="-pthread $acx_pthread_flags"
+	;;
+esac
+
+if test x"$ax_pthread_ok" = xno; then
+for flag in $ax_pthread_flags; do
+
+        case $flag in
+                none)
+                AC_MSG_CHECKING([whether pthreads work without any flags])
+                ;;
+
+                -*)
+                AC_MSG_CHECKING([whether pthreads work with $flag])
+                PTHREAD_CFLAGS="$flag"
+                ;;
+
+		pthread-config)
+		AC_CHECK_PROG(ax_pthread_config, pthread-config, yes, no)
+		if test x"$ax_pthread_config" = xno; then continue; fi
+		PTHREAD_CFLAGS="`pthread-config --cflags`"
+		PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
+		;;
+
+                *)
+                AC_MSG_CHECKING([for the pthreads library -l$flag])
+                PTHREAD_LIBS="-l$flag"
+                ;;
+        esac
+
+        save_LIBS="$LIBS"
+        save_CFLAGS="$CFLAGS"
+        LIBS="$PTHREAD_LIBS $LIBS"
+        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+
+        # Check for various functions.  We must include pthread.h,
+        # since some functions may be macros.  (On the Sequent, we
+        # need a special flag -Kthread to make this header compile.)
+        # We check for pthread_join because it is in -lpthread on IRIX
+        # while pthread_create is in libc.  We check for pthread_attr_init
+        # due to DEC craziness with -lpthreads.  We check for
+        # pthread_cleanup_push because it is one of the few pthread
+        # functions on Solaris that doesn't have a non-functional libc stub.
+        # We try pthread_create on general principles.
+        AC_TRY_LINK([#include <pthread.h>
+	             static void routine(void* a) {a=0;}
+	             static void* start_routine(void* a) {return a;}],
+                    [pthread_t th; pthread_attr_t attr;
+                     pthread_join(th, 0);
+                     pthread_attr_init(&attr);
+                     pthread_cleanup_push(routine, 0);
+                     pthread_create(&th,0,start_routine,0);
+                     pthread_cleanup_pop(0); ],
+                    [ax_pthread_ok=yes])
+
+        LIBS="$save_LIBS"
+        CFLAGS="$save_CFLAGS"
+
+        AC_MSG_RESULT($ax_pthread_ok)
+        if test "x$ax_pthread_ok" = xyes; then
+                break;
+        fi
+
+        PTHREAD_LIBS=""
+        PTHREAD_CFLAGS=""
+done
+fi
+
+# Various other checks:
+if test "x$ax_pthread_ok" = xyes; then
+        save_LIBS="$LIBS"
+        LIBS="$PTHREAD_LIBS $LIBS"
+        save_CFLAGS="$CFLAGS"
+        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+
+        # Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
+	AC_MSG_CHECKING([for joinable pthread attribute])
+	attr_name=unknown
+	for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
+	    AC_TRY_LINK([#include <pthread.h>], [int attr=$attr; return attr;],
+                        [attr_name=$attr; break])
+	done
+        AC_MSG_RESULT($attr_name)
+        if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then
+            AC_DEFINE_UNQUOTED(PTHREAD_CREATE_JOINABLE, $attr_name,
+                               [Define to necessary symbol if this constant
+                                uses a non-standard name on your system.])
+        fi
+
+        AC_MSG_CHECKING([if more special flags are required for pthreads])
+        flag=no
+        case "${host_cpu}-${host_os}" in
+            *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";;
+            *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";;
+        esac
+        AC_MSG_RESULT(${flag})
+        if test "x$flag" != xno; then
+            PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
+        fi
+
+        LIBS="$save_LIBS"
+        CFLAGS="$save_CFLAGS"
+
+        # More AIX lossage: must compile with xlc_r or cc_r
+	if test x"$GCC" != xyes; then
+          AC_CHECK_PROGS(PTHREAD_CC, xlc_r cc_r, ${CC})
+        else
+          PTHREAD_CC=$CC
+	fi
+else
+        PTHREAD_CC="$CC"
+fi
+
+AC_SUBST(PTHREAD_LIBS)
+AC_SUBST(PTHREAD_CFLAGS)
+AC_SUBST(PTHREAD_CC)
+
+# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
+if test x"$ax_pthread_ok" = xyes; then
+        ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1])
+        :
+else
+        ax_pthread_ok=no
+        $2
+fi
+AC_LANG_RESTORE
+])dnl AX_PTHREAD
\ No newline at end of file
diff --git a/google-breakpad/m4/libtool.m4 b/google-breakpad/m4/libtool.m4
new file mode 100644
index 0000000..a3fee53
--- /dev/null
+++ b/google-breakpad/m4/libtool.m4
@@ -0,0 +1,7377 @@
+# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
+#
+#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+#                 2006, 2007, 2008 Free Software Foundation, Inc.
+#   Written by Gordon Matzigkeit, 1996
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+m4_define([_LT_COPYING], [dnl
+#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+#                 2006, 2007, 2008 Free Software Foundation, Inc.
+#   Written by Gordon Matzigkeit, 1996
+#
+#   This file is part of GNU Libtool.
+#
+# GNU Libtool is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
+#
+# GNU Libtool is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Libtool; see the file COPYING.  If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
+# obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+])
+
+# serial 56 LT_INIT
+
+
+# LT_PREREQ(VERSION)
+# ------------------
+# Complain and exit if this libtool version is less that VERSION.
+m4_defun([LT_PREREQ],
+[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1,
+       [m4_default([$3],
+		   [m4_fatal([Libtool version $1 or higher is required],
+		             63)])],
+       [$2])])
+
+
+# _LT_CHECK_BUILDDIR
+# ------------------
+# Complain if the absolute build directory name contains unusual characters
+m4_defun([_LT_CHECK_BUILDDIR],
+[case `pwd` in
+  *\ * | *\	*)
+    AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;;
+esac
+])
+
+
+# LT_INIT([OPTIONS])
+# ------------------
+AC_DEFUN([LT_INIT],
+[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT
+AC_BEFORE([$0], [LT_LANG])dnl
+AC_BEFORE([$0], [LT_OUTPUT])dnl
+AC_BEFORE([$0], [LTDL_INIT])dnl
+m4_require([_LT_CHECK_BUILDDIR])dnl
+
+dnl Autoconf doesn't catch unexpanded LT_ macros by default:
+m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl
+m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl
+dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4
+dnl unless we require an AC_DEFUNed macro:
+AC_REQUIRE([LTOPTIONS_VERSION])dnl
+AC_REQUIRE([LTSUGAR_VERSION])dnl
+AC_REQUIRE([LTVERSION_VERSION])dnl
+AC_REQUIRE([LTOBSOLETE_VERSION])dnl
+m4_require([_LT_PROG_LTMAIN])dnl
+
+dnl Parse OPTIONS
+_LT_SET_OPTIONS([$0], [$1])
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ltmain"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+AC_SUBST(LIBTOOL)dnl
+
+_LT_SETUP
+
+# Only expand once:
+m4_define([LT_INIT])
+])# LT_INIT
+
+# Old names:
+AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT])
+AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_PROG_LIBTOOL], [])
+dnl AC_DEFUN([AM_PROG_LIBTOOL], [])
+
+
+# _LT_CC_BASENAME(CC)
+# -------------------
+# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
+m4_defun([_LT_CC_BASENAME],
+[for cc_temp in $1""; do
+  case $cc_temp in
+    compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
+    distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+])
+
+
+# _LT_FILEUTILS_DEFAULTS
+# ----------------------
+# It is okay to use these file commands and assume they have been set
+# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'.
+m4_defun([_LT_FILEUTILS_DEFAULTS],
+[: ${CP="cp -f"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+])# _LT_FILEUTILS_DEFAULTS
+
+
+# _LT_SETUP
+# ---------
+m4_defun([_LT_SETUP],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+_LT_DECL([], [host_alias], [0], [The host system])dnl
+_LT_DECL([], [host], [0])dnl
+_LT_DECL([], [host_os], [0])dnl
+dnl
+_LT_DECL([], [build_alias], [0], [The build system])dnl
+_LT_DECL([], [build], [0])dnl
+_LT_DECL([], [build_os], [0])dnl
+dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([LT_PATH_LD])dnl
+AC_REQUIRE([LT_PATH_NM])dnl
+dnl
+AC_REQUIRE([AC_PROG_LN_S])dnl
+test -z "$LN_S" && LN_S="ln -s"
+_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl
+dnl
+AC_REQUIRE([LT_CMD_MAX_LEN])dnl
+_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl
+_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl
+dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_CHECK_SHELL_FEATURES])dnl
+m4_require([_LT_CMD_RELOAD])dnl
+m4_require([_LT_CHECK_MAGIC_METHOD])dnl
+m4_require([_LT_CMD_OLD_ARCHIVE])dnl
+m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
+
+_LT_CONFIG_LIBTOOL_INIT([
+# See if we are running on zsh, and set the options which allow our
+# commands through without removal of \ escapes INIT.
+if test -n "\${ZSH_VERSION+set}" ; then
+   setopt NO_GLOB_SUBST
+fi
+])
+if test -n "${ZSH_VERSION+set}" ; then
+   setopt NO_GLOB_SUBST
+fi
+
+_LT_CHECK_OBJDIR
+
+m4_require([_LT_TAG_COMPILER])dnl
+_LT_PROG_ECHO_BACKSLASH
+
+case $host_os in
+aix3*)
+  # AIX sometimes has problems with the GCC collect2 program.  For some
+  # reason, if we set the COLLECT_NAMES environment variable, the problems
+  # vanish in a puff of smoke.
+  if test "X${COLLECT_NAMES+set}" != Xset; then
+    COLLECT_NAMES=
+    export COLLECT_NAMES
+  fi
+  ;;
+esac
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s/\([["`$\\]]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\([["`\\]]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to delay expansion of an escaped single quote.
+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+# Global variables:
+ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$LD" && LD=ld
+test -z "$ac_objext" && ac_objext=o
+
+_LT_CC_BASENAME([$compiler])
+
+# Only perform the check for file, if the check method requires it
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+case $deplibs_check_method in
+file_magic*)
+  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+    _LT_PATH_MAGIC
+  fi
+  ;;
+esac
+
+# Use C for the default configuration in the libtool script
+LT_SUPPORTED_TAG([CC])
+_LT_LANG_C_CONFIG
+_LT_LANG_DEFAULT_CONFIG
+_LT_CONFIG_COMMANDS
+])# _LT_SETUP
+
+
+# _LT_PROG_LTMAIN
+# ---------------
+# Note that this code is called both from `configure', and `config.status'
+# now that we use AC_CONFIG_COMMANDS to generate libtool.  Notably,
+# `config.status' has no value for ac_aux_dir unless we are using Automake,
+# so we pass a copy along to make sure it has a sensible value anyway.
+m4_defun([_LT_PROG_LTMAIN],
+[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl
+_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir'])
+ltmain="$ac_aux_dir/ltmain.sh"
+])# _LT_PROG_LTMAIN
+
+
+## ------------------------------------- ##
+## Accumulate code for creating libtool. ##
+## ------------------------------------- ##
+
+# So that we can recreate a full libtool script including additional
+# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS
+# in macros and then make a single call at the end using the `libtool'
+# label.
+
+
+# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS])
+# ----------------------------------------
+# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later.
+m4_define([_LT_CONFIG_LIBTOOL_INIT],
+[m4_ifval([$1],
+          [m4_append([_LT_OUTPUT_LIBTOOL_INIT],
+                     [$1
+])])])
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_INIT])
+
+
+# _LT_CONFIG_LIBTOOL([COMMANDS])
+# ------------------------------
+# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later.
+m4_define([_LT_CONFIG_LIBTOOL],
+[m4_ifval([$1],
+          [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS],
+                     [$1
+])])])
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS])
+
+
+# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS])
+# -----------------------------------------------------
+m4_defun([_LT_CONFIG_SAVE_COMMANDS],
+[_LT_CONFIG_LIBTOOL([$1])
+_LT_CONFIG_LIBTOOL_INIT([$2])
+])
+
+
+# _LT_FORMAT_COMMENT([COMMENT])
+# -----------------------------
+# Add leading comment marks to the start of each line, and a trailing
+# full-stop to the whole comment if one is not present already.
+m4_define([_LT_FORMAT_COMMENT],
+[m4_ifval([$1], [
+m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])],
+              [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.])
+)])
+
+
+
+## ------------------------ ##
+## FIXME: Eliminate VARNAME ##
+## ------------------------ ##
+
+
+# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?])
+# -------------------------------------------------------------------
+# CONFIGNAME is the name given to the value in the libtool script.
+# VARNAME is the (base) name used in the configure script.
+# VALUE may be 0, 1 or 2 for a computed quote escaped value based on
+# VARNAME.  Any other value will be used directly.
+m4_define([_LT_DECL],
+[lt_if_append_uniq([lt_decl_varnames], [$2], [, ],
+    [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name],
+	[m4_ifval([$1], [$1], [$2])])
+    lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3])
+    m4_ifval([$4],
+	[lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])])
+    lt_dict_add_subkey([lt_decl_dict], [$2],
+	[tagged?], [m4_ifval([$5], [yes], [no])])])
+])
+
+
+# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION])
+# --------------------------------------------------------
+m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])])
+
+
+# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...])
+# ------------------------------------------------
+m4_define([lt_decl_tag_varnames],
+[_lt_decl_filter([tagged?], [yes], $@)])
+
+
+# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..])
+# ---------------------------------------------------------
+m4_define([_lt_decl_filter],
+[m4_case([$#],
+  [0], [m4_fatal([$0: too few arguments: $#])],
+  [1], [m4_fatal([$0: too few arguments: $#: $1])],
+  [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)],
+  [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)],
+  [lt_dict_filter([lt_decl_dict], $@)])[]dnl
+])
+
+
+# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...])
+# --------------------------------------------------
+m4_define([lt_decl_quote_varnames],
+[_lt_decl_filter([value], [1], $@)])
+
+
+# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...])
+# ---------------------------------------------------
+m4_define([lt_decl_dquote_varnames],
+[_lt_decl_filter([value], [2], $@)])
+
+
+# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...])
+# ---------------------------------------------------
+m4_define([lt_decl_varnames_tagged],
+[m4_assert([$# <= 2])dnl
+_$0(m4_quote(m4_default([$1], [[, ]])),
+    m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]),
+    m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))])
+m4_define([_lt_decl_varnames_tagged],
+[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])])
+
+
+# lt_decl_all_varnames([SEPARATOR], [VARNAME1...])
+# ------------------------------------------------
+m4_define([lt_decl_all_varnames],
+[_$0(m4_quote(m4_default([$1], [[, ]])),
+     m4_if([$2], [],
+	   m4_quote(lt_decl_varnames),
+	m4_quote(m4_shift($@))))[]dnl
+])
+m4_define([_lt_decl_all_varnames],
+[lt_join($@, lt_decl_varnames_tagged([$1],
+			lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl
+])
+
+
+# _LT_CONFIG_STATUS_DECLARE([VARNAME])
+# ------------------------------------
+# Quote a variable value, and forward it to `config.status' so that its
+# declaration there will have the same value as in `configure'.  VARNAME
+# must have a single quote delimited value for this to work.
+m4_define([_LT_CONFIG_STATUS_DECLARE],
+[$1='`$ECHO "X$][$1" | $Xsed -e "$delay_single_quote_subst"`'])
+
+
+# _LT_CONFIG_STATUS_DECLARATIONS
+# ------------------------------
+# We delimit libtool config variables with single quotes, so when
+# we write them to config.status, we have to be sure to quote all
+# embedded single quotes properly.  In configure, this macro expands
+# each variable declared with _LT_DECL (and _LT_TAGDECL) into:
+#
+#    <var>='`$ECHO "X$<var>" | $Xsed -e "$delay_single_quote_subst"`'
+m4_defun([_LT_CONFIG_STATUS_DECLARATIONS],
+[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames),
+    [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])])
+
+
+# _LT_LIBTOOL_TAGS
+# ----------------
+# Output comment and list of tags supported by the script
+m4_defun([_LT_LIBTOOL_TAGS],
+[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl
+available_tags="_LT_TAGS"dnl
+])
+
+
+# _LT_LIBTOOL_DECLARE(VARNAME, [TAG])
+# -----------------------------------
+# Extract the dictionary values for VARNAME (optionally with TAG) and
+# expand to a commented shell variable setting:
+#
+#    # Some comment about what VAR is for.
+#    visible_name=$lt_internal_name
+m4_define([_LT_LIBTOOL_DECLARE],
+[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1],
+					   [description])))[]dnl
+m4_pushdef([_libtool_name],
+    m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl
+m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])),
+    [0], [_libtool_name=[$]$1],
+    [1], [_libtool_name=$lt_[]$1],
+    [2], [_libtool_name=$lt_[]$1],
+    [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl
+m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl
+])
+
+
+# _LT_LIBTOOL_CONFIG_VARS
+# -----------------------
+# Produce commented declarations of non-tagged libtool config variables
+# suitable for insertion in the LIBTOOL CONFIG section of the `libtool'
+# script.  Tagged libtool config variables (even for the LIBTOOL CONFIG
+# section) are produced by _LT_LIBTOOL_TAG_VARS.
+m4_defun([_LT_LIBTOOL_CONFIG_VARS],
+[m4_foreach([_lt_var],
+    m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)),
+    [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])])
+
+
+# _LT_LIBTOOL_TAG_VARS(TAG)
+# -------------------------
+m4_define([_LT_LIBTOOL_TAG_VARS],
+[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames),
+    [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])])
+
+
+# _LT_TAGVAR(VARNAME, [TAGNAME])
+# ------------------------------
+m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])])
+
+
+# _LT_CONFIG_COMMANDS
+# -------------------
+# Send accumulated output to $CONFIG_STATUS.  Thanks to the lists of
+# variables for single and double quote escaping we saved from calls
+# to _LT_DECL, we can put quote escaped variables declarations
+# into `config.status', and then the shell code to quote escape them in
+# for loops in `config.status'.  Finally, any additional code accumulated
+# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded.
+m4_defun([_LT_CONFIG_COMMANDS],
+[AC_PROVIDE_IFELSE([LT_OUTPUT],
+	dnl If the libtool generation code has been placed in $CONFIG_LT,
+	dnl instead of duplicating it all over again into config.status,
+	dnl then we will have config.status run $CONFIG_LT later, so it
+	dnl needs to know what name is stored there:
+        [AC_CONFIG_COMMANDS([libtool],
+            [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])],
+    dnl If the libtool generation code is destined for config.status,
+    dnl expand the accumulated commands and init code now:
+    [AC_CONFIG_COMMANDS([libtool],
+        [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])])
+])#_LT_CONFIG_COMMANDS
+
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT],
+[
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+sed_quote_subst='$sed_quote_subst'
+double_quote_subst='$double_quote_subst'
+delay_variable_subst='$delay_variable_subst'
+_LT_CONFIG_STATUS_DECLARATIONS
+LTCC='$LTCC'
+LTCFLAGS='$LTCFLAGS'
+compiler='$compiler_DEFAULT'
+
+# Quote evaled strings.
+for var in lt_decl_all_varnames([[ \
+]], lt_decl_quote_varnames); do
+    case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
+    *[[\\\\\\\`\\"\\\$]]*)
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
+      ;;
+    *)
+      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+      ;;
+    esac
+done
+
+# Double-quote double-evaled strings.
+for var in lt_decl_all_varnames([[ \
+]], lt_decl_dquote_varnames); do
+    case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
+    *[[\\\\\\\`\\"\\\$]]*)
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
+      ;;
+    *)
+      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+      ;;
+    esac
+done
+
+# Fix-up fallback echo if it was mangled by the above quoting rules.
+case \$lt_ECHO in
+*'\\\[$]0 --fallback-echo"')dnl "
+  lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\[$]0 --fallback-echo"\[$]/\[$]0 --fallback-echo"/'\`
+  ;;
+esac
+
+_LT_OUTPUT_LIBTOOL_INIT
+])
+
+
+# LT_OUTPUT
+# ---------
+# This macro allows early generation of the libtool script (before
+# AC_OUTPUT is called), incase it is used in configure for compilation
+# tests.
+AC_DEFUN([LT_OUTPUT],
+[: ${CONFIG_LT=./config.lt}
+AC_MSG_NOTICE([creating $CONFIG_LT])
+cat >"$CONFIG_LT" <<_LTEOF
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate a libtool stub with the current configuration.
+
+lt_cl_silent=false
+SHELL=\${CONFIG_SHELL-$SHELL}
+_LTEOF
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+AS_SHELL_SANITIZE
+_AS_PREPARE
+
+exec AS_MESSAGE_FD>&1
+exec AS_MESSAGE_LOG_FD>>config.log
+{
+  echo
+  AS_BOX([Running $as_me.])
+} >&AS_MESSAGE_LOG_FD
+
+lt_cl_help="\
+\`$as_me' creates a local libtool stub from the current configuration,
+for use in further configure time tests before the real libtool is
+generated.
+
+Usage: $[0] [[OPTIONS]]
+
+  -h, --help      print this help, then exit
+  -V, --version   print version number, then exit
+  -q, --quiet     do not print progress messages
+  -d, --debug     don't remove temporary files
+
+Report bugs to <bug-libtool@gnu.org>."
+
+lt_cl_version="\
+m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
+m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
+configured by $[0], generated by m4_PACKAGE_STRING.
+
+Copyright (C) 2008 Free Software Foundation, Inc.
+This config.lt script is free software; the Free Software Foundation
+gives unlimited permision to copy, distribute and modify it."
+
+while test $[#] != 0
+do
+  case $[1] in
+    --version | --v* | -V )
+      echo "$lt_cl_version"; exit 0 ;;
+    --help | --h* | -h )
+      echo "$lt_cl_help"; exit 0 ;;
+    --debug | --d* | -d )
+      debug=: ;;
+    --quiet | --q* | --silent | --s* | -q )
+      lt_cl_silent=: ;;
+
+    -*) AC_MSG_ERROR([unrecognized option: $[1]
+Try \`$[0] --help' for more information.]) ;;
+
+    *) AC_MSG_ERROR([unrecognized argument: $[1]
+Try \`$[0] --help' for more information.]) ;;
+  esac
+  shift
+done
+
+if $lt_cl_silent; then
+  exec AS_MESSAGE_FD>/dev/null
+fi
+_LTEOF
+
+cat >>"$CONFIG_LT" <<_LTEOF
+_LT_OUTPUT_LIBTOOL_COMMANDS_INIT
+_LTEOF
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+AC_MSG_NOTICE([creating $ofile])
+_LT_OUTPUT_LIBTOOL_COMMANDS
+AS_EXIT(0)
+_LTEOF
+chmod +x "$CONFIG_LT"
+
+# configure is writing to config.log, but config.lt does its own redirection,
+# appending to config.log, which fails on DOS, as config.log is still kept
+# open by configure.  Here we exec the FD to /dev/null, effectively closing
+# config.log, so it can be properly (re)opened and appended to by config.lt.
+if test "$no_create" != yes; then
+  lt_cl_success=:
+  test "$silent" = yes &&
+    lt_config_lt_args="$lt_config_lt_args --quiet"
+  exec AS_MESSAGE_LOG_FD>/dev/null
+  $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
+  exec AS_MESSAGE_LOG_FD>>config.log
+  $lt_cl_success || AS_EXIT(1)
+fi
+])# LT_OUTPUT
+
+
+# _LT_CONFIG(TAG)
+# ---------------
+# If TAG is the built-in tag, create an initial libtool script with a
+# default configuration from the untagged config vars.  Otherwise add code
+# to config.status for appending the configuration named by TAG from the
+# matching tagged config vars.
+m4_defun([_LT_CONFIG],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+_LT_CONFIG_SAVE_COMMANDS([
+  m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl
+  m4_if(_LT_TAG, [C], [
+    # See if we are running on zsh, and set the options which allow our
+    # commands through without removal of \ escapes.
+    if test -n "${ZSH_VERSION+set}" ; then
+      setopt NO_GLOB_SUBST
+    fi
+
+    cfgfile="${ofile}T"
+    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
+    $RM "$cfgfile"
+
+    cat <<_LT_EOF >> "$cfgfile"
+#! $SHELL
+
+# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+_LT_COPYING
+_LT_LIBTOOL_TAGS
+
+# ### BEGIN LIBTOOL CONFIG
+_LT_LIBTOOL_CONFIG_VARS
+_LT_LIBTOOL_TAG_VARS
+# ### END LIBTOOL CONFIG
+
+_LT_EOF
+
+  case $host_os in
+  aix3*)
+    cat <<\_LT_EOF >> "$cfgfile"
+# AIX sometimes has problems with the GCC collect2 program.  For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+  COLLECT_NAMES=
+  export COLLECT_NAMES
+fi
+_LT_EOF
+    ;;
+  esac
+
+  _LT_PROG_LTMAIN
+
+  # We use sed instead of cat because bash on DJGPP gets confused if
+  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
+  # text mode, it properly converts lines to CR/LF.  This bash problem
+  # is reportedly fixed, but why not run on old versions too?
+  sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
+    || (rm -f "$cfgfile"; exit 1)
+
+  _LT_PROG_XSI_SHELLFNS
+
+  sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
+    || (rm -f "$cfgfile"; exit 1)
+
+  mv -f "$cfgfile" "$ofile" ||
+    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+  chmod +x "$ofile"
+],
+[cat <<_LT_EOF >> "$ofile"
+
+dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded
+dnl in a comment (ie after a #).
+# ### BEGIN LIBTOOL TAG CONFIG: $1
+_LT_LIBTOOL_TAG_VARS(_LT_TAG)
+# ### END LIBTOOL TAG CONFIG: $1
+_LT_EOF
+])dnl /m4_if
+],
+[m4_if([$1], [], [
+    PACKAGE='$PACKAGE'
+    VERSION='$VERSION'
+    TIMESTAMP='$TIMESTAMP'
+    RM='$RM'
+    ofile='$ofile'], [])
+])dnl /_LT_CONFIG_SAVE_COMMANDS
+])# _LT_CONFIG
+
+
+# LT_SUPPORTED_TAG(TAG)
+# ---------------------
+# Trace this macro to discover what tags are supported by the libtool
+# --tag option, using:
+#    autoconf --trace 'LT_SUPPORTED_TAG:$1'
+AC_DEFUN([LT_SUPPORTED_TAG], [])
+
+
+# C support is built-in for now
+m4_define([_LT_LANG_C_enabled], [])
+m4_define([_LT_TAGS], [])
+
+
+# LT_LANG(LANG)
+# -------------
+# Enable libtool support for the given language if not already enabled.
+AC_DEFUN([LT_LANG],
+[AC_BEFORE([$0], [LT_OUTPUT])dnl
+m4_case([$1],
+  [C],			[_LT_LANG(C)],
+  [C++],		[_LT_LANG(CXX)],
+  [Java],		[_LT_LANG(GCJ)],
+  [Fortran 77],		[_LT_LANG(F77)],
+  [Fortran],		[_LT_LANG(FC)],
+  [Windows Resource],	[_LT_LANG(RC)],
+  [m4_ifdef([_LT_LANG_]$1[_CONFIG],
+    [_LT_LANG($1)],
+    [m4_fatal([$0: unsupported language: "$1"])])])dnl
+])# LT_LANG
+
+
+# _LT_LANG(LANGNAME)
+# ------------------
+m4_defun([_LT_LANG],
+[m4_ifdef([_LT_LANG_]$1[_enabled], [],
+  [LT_SUPPORTED_TAG([$1])dnl
+  m4_append([_LT_TAGS], [$1 ])dnl
+  m4_define([_LT_LANG_]$1[_enabled], [])dnl
+  _LT_LANG_$1_CONFIG($1)])dnl
+])# _LT_LANG
+
+
+# _LT_LANG_DEFAULT_CONFIG
+# -----------------------
+m4_defun([_LT_LANG_DEFAULT_CONFIG],
+[AC_PROVIDE_IFELSE([AC_PROG_CXX],
+  [LT_LANG(CXX)],
+  [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])])
+
+AC_PROVIDE_IFELSE([AC_PROG_F77],
+  [LT_LANG(F77)],
+  [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])])
+
+AC_PROVIDE_IFELSE([AC_PROG_FC],
+  [LT_LANG(FC)],
+  [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])])
+
+dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal
+dnl pulling things in needlessly.
+AC_PROVIDE_IFELSE([AC_PROG_GCJ],
+  [LT_LANG(GCJ)],
+  [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
+    [LT_LANG(GCJ)],
+    [AC_PROVIDE_IFELSE([LT_PROG_GCJ],
+      [LT_LANG(GCJ)],
+      [m4_ifdef([AC_PROG_GCJ],
+	[m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])])
+       m4_ifdef([A][M_PROG_GCJ],
+	[m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])])
+       m4_ifdef([LT_PROG_GCJ],
+	[m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])])
+
+AC_PROVIDE_IFELSE([LT_PROG_RC],
+  [LT_LANG(RC)],
+  [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])])
+])# _LT_LANG_DEFAULT_CONFIG
+
+# Obsolete macros:
+AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)])
+AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)])
+AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)])
+AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_CXX], [])
+dnl AC_DEFUN([AC_LIBTOOL_F77], [])
+dnl AC_DEFUN([AC_LIBTOOL_FC], [])
+dnl AC_DEFUN([AC_LIBTOOL_GCJ], [])
+
+
+# _LT_TAG_COMPILER
+# ----------------
+m4_defun([_LT_TAG_COMPILER],
+[AC_REQUIRE([AC_PROG_CC])dnl
+
+_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl
+_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl
+_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl
+_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+])# _LT_TAG_COMPILER
+
+
+# _LT_COMPILER_BOILERPLATE
+# ------------------------
+# Check for compiler boilerplate output or warnings with
+# the simple compiler test code.
+m4_defun([_LT_COMPILER_BOILERPLATE],
+[m4_require([_LT_DECL_SED])dnl
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
+])# _LT_COMPILER_BOILERPLATE
+
+
+# _LT_LINKER_BOILERPLATE
+# ----------------------
+# Check for linker boilerplate output or warnings with
+# the simple link test code.
+m4_defun([_LT_LINKER_BOILERPLATE],
+[m4_require([_LT_DECL_SED])dnl
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
+])# _LT_LINKER_BOILERPLATE
+
+# _LT_REQUIRED_DARWIN_CHECKS
+# -------------------------
+m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
+  case $host_os in
+    rhapsody* | darwin*)
+    AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:])
+    AC_CHECK_TOOL([NMEDIT], [nmedit], [:])
+    AC_CHECK_TOOL([LIPO], [lipo], [:])
+    AC_CHECK_TOOL([OTOOL], [otool], [:])
+    AC_CHECK_TOOL([OTOOL64], [otool64], [:])
+    _LT_DECL([], [DSYMUTIL], [1],
+      [Tool to manipulate archived DWARF debug symbol files on Mac OS X])
+    _LT_DECL([], [NMEDIT], [1],
+      [Tool to change global to local symbols on Mac OS X])
+    _LT_DECL([], [LIPO], [1],
+      [Tool to manipulate fat objects and archives on Mac OS X])
+    _LT_DECL([], [OTOOL], [1],
+      [ldd/readelf like tool for Mach-O binaries on Mac OS X])
+    _LT_DECL([], [OTOOL64], [1],
+      [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4])
+
+    AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod],
+      [lt_cv_apple_cc_single_mod=no
+      if test -z "${LT_MULTI_MODULE}"; then
+	# By default we will add the -single_module flag. You can override
+	# by either setting the environment variable LT_MULTI_MODULE
+	# non-empty at configure time, or by adding -multi_module to the
+	# link flags.
+	rm -rf libconftest.dylib*
+	echo "int foo(void){return 1;}" > conftest.c
+	echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD
+	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
+        _lt_result=$?
+	if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
+	  lt_cv_apple_cc_single_mod=yes
+	else
+	  cat conftest.err >&AS_MESSAGE_LOG_FD
+	fi
+	rm -rf libconftest.dylib*
+	rm -f conftest.*
+      fi])
+    AC_CACHE_CHECK([for -exported_symbols_list linker flag],
+      [lt_cv_ld_exported_symbols_list],
+      [lt_cv_ld_exported_symbols_list=no
+      save_LDFLAGS=$LDFLAGS
+      echo "_main" > conftest.sym
+      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
+      AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
+	[lt_cv_ld_exported_symbols_list=yes],
+	[lt_cv_ld_exported_symbols_list=no])
+	LDFLAGS="$save_LDFLAGS"
+    ])
+    case $host_os in
+    rhapsody* | darwin1.[[012]])
+      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
+    darwin1.*)
+      _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+    darwin*) # darwin 5.x on
+      # if running on 10.5 or later, the deployment target defaults
+      # to the OS version, if on x86, and 10.4, the deployment
+      # target defaults to 10.4. Don't you love it?
+      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
+	10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
+	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+	10.[[012]]*)
+	  _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+	10.*)
+	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+      esac
+    ;;
+  esac
+    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
+      _lt_dar_single_mod='$single_module'
+    fi
+    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
+      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
+    else
+      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    fi
+    if test "$DSYMUTIL" != ":"; then
+      _lt_dsymutil='~$DSYMUTIL $lib || :'
+    else
+      _lt_dsymutil=
+    fi
+    ;;
+  esac
+])
+
+
+# _LT_DARWIN_LINKER_FEATURES
+# --------------------------
+# Checks for linker and compiler features on darwin
+m4_defun([_LT_DARWIN_LINKER_FEATURES],
+[
+  m4_require([_LT_REQUIRED_DARWIN_CHECKS])
+  _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+  _LT_TAGVAR(hardcode_direct, $1)=no
+  _LT_TAGVAR(hardcode_automatic, $1)=yes
+  _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+  _LT_TAGVAR(whole_archive_flag_spec, $1)=''
+  _LT_TAGVAR(link_all_deplibs, $1)=yes
+  _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined"
+  case $cc_basename in
+     ifort*) _lt_dar_can_shared=yes ;;
+     *) _lt_dar_can_shared=$GCC ;;
+  esac
+  if test "$_lt_dar_can_shared" = "yes"; then
+    output_verbose_link_cmd=echo
+    _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+    _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+    _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+    _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+    m4_if([$1], [CXX],
+[   if test "$lt_cv_apple_cc_single_mod" != "yes"; then
+      _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
+      _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
+    fi
+],[])
+  else
+  _LT_TAGVAR(ld_shlibs, $1)=no
+  fi
+])
+
+# _LT_SYS_MODULE_PATH_AIX
+# -----------------------
+# Links a minimal program and checks the executable
+# for the system default hardcoded library path. In most cases,
+# this is /usr/lib:/lib, but when the MPI compilers are used
+# the location of the communication and MPI libs are included too.
+# If we don't find anything, use the default library path according
+# to the aix ld manual.
+m4_defun([_LT_SYS_MODULE_PATH_AIX],
+[m4_require([_LT_DECL_SED])dnl
+AC_LINK_IFELSE(AC_LANG_PROGRAM,[
+lt_aix_libpath_sed='
+    /Import File Strings/,/^$/ {
+	/^0/ {
+	    s/^0  *\(.*\)$/\1/
+	    p
+	}
+    }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then
+  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi],[])
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+])# _LT_SYS_MODULE_PATH_AIX
+
+
+# _LT_SHELL_INIT(ARG)
+# -------------------
+m4_define([_LT_SHELL_INIT],
+[ifdef([AC_DIVERSION_NOTICE],
+	     [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
+	 [AC_DIVERT_PUSH(NOTICE)])
+$1
+AC_DIVERT_POP
+])# _LT_SHELL_INIT
+
+
+# _LT_PROG_ECHO_BACKSLASH
+# -----------------------
+# Add some code to the start of the generated configure script which
+# will find an echo command which doesn't interpret backslashes.
+m4_defun([_LT_PROG_ECHO_BACKSLASH],
+[_LT_SHELL_INIT([
+# Check that we are running under the correct shell.
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+case X$lt_ECHO in
+X*--fallback-echo)
+  # Remove one level of quotation (which was required for Make).
+  ECHO=`echo "$lt_ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','`
+  ;;
+esac
+
+ECHO=${lt_ECHO-echo}
+if test "X[$]1" = X--no-reexec; then
+  # Discard the --no-reexec flag, and continue.
+  shift
+elif test "X[$]1" = X--fallback-echo; then
+  # Avoid inline document here, it may be left over
+  :
+elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then
+  # Yippee, $ECHO works!
+  :
+else
+  # Restart under the correct shell.
+  exec $SHELL "[$]0" --no-reexec ${1+"[$]@"}
+fi
+
+if test "X[$]1" = X--fallback-echo; then
+  # used as fallback echo
+  shift
+  cat <<_LT_EOF
+[$]*
+_LT_EOF
+  exit 0
+fi
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+if test -z "$lt_ECHO"; then
+  if test "X${echo_test_string+set}" != Xset; then
+    # find a string as large as possible, as long as the shell can cope with it
+    for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do
+      # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+      if { echo_test_string=`eval $cmd`; } 2>/dev/null &&
+	 { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null
+      then
+        break
+      fi
+    done
+  fi
+
+  if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
+     echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
+     test "X$echo_testing_string" = "X$echo_test_string"; then
+    :
+  else
+    # The Solaris, AIX, and Digital Unix default echo programs unquote
+    # backslashes.  This makes it impossible to quote backslashes using
+    #   echo "$something" | sed 's/\\/\\\\/g'
+    #
+    # So, first we look for a working echo in the user's PATH.
+
+    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+    for dir in $PATH /usr/ucb; do
+      IFS="$lt_save_ifs"
+      if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
+         test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
+         echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
+         test "X$echo_testing_string" = "X$echo_test_string"; then
+        ECHO="$dir/echo"
+        break
+      fi
+    done
+    IFS="$lt_save_ifs"
+
+    if test "X$ECHO" = Xecho; then
+      # We didn't find a better echo, so look for alternatives.
+      if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' &&
+         echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` &&
+         test "X$echo_testing_string" = "X$echo_test_string"; then
+        # This shell has a builtin print -r that does the trick.
+        ECHO='print -r'
+      elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } &&
+	   test "X$CONFIG_SHELL" != X/bin/ksh; then
+        # If we have ksh, try running configure again with it.
+        ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
+        export ORIGINAL_CONFIG_SHELL
+        CONFIG_SHELL=/bin/ksh
+        export CONFIG_SHELL
+        exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"}
+      else
+        # Try using printf.
+        ECHO='printf %s\n'
+        if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
+	   echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
+	   test "X$echo_testing_string" = "X$echo_test_string"; then
+	  # Cool, printf works
+	  :
+        elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
+	     test "X$echo_testing_string" = 'X\t' &&
+	     echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+	     test "X$echo_testing_string" = "X$echo_test_string"; then
+	  CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
+	  export CONFIG_SHELL
+	  SHELL="$CONFIG_SHELL"
+	  export SHELL
+	  ECHO="$CONFIG_SHELL [$]0 --fallback-echo"
+        elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
+	     test "X$echo_testing_string" = 'X\t' &&
+	     echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+	     test "X$echo_testing_string" = "X$echo_test_string"; then
+	  ECHO="$CONFIG_SHELL [$]0 --fallback-echo"
+        else
+	  # maybe with a smaller string...
+	  prev=:
+
+	  for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do
+	    if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null
+	    then
+	      break
+	    fi
+	    prev="$cmd"
+	  done
+
+	  if test "$prev" != 'sed 50q "[$]0"'; then
+	    echo_test_string=`eval $prev`
+	    export echo_test_string
+	    exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"}
+	  else
+	    # Oops.  We lost completely, so just stick with echo.
+	    ECHO=echo
+	  fi
+        fi
+      fi
+    fi
+  fi
+fi
+
+# Copy echo and quote the copy suitably for passing to libtool from
+# the Makefile, instead of quoting the original, which is used later.
+lt_ECHO=$ECHO
+if test "X$lt_ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then
+   lt_ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo"
+fi
+
+AC_SUBST(lt_ECHO)
+])
+_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts])
+_LT_DECL([], [ECHO], [1],
+    [An echo program that does not interpret backslashes])
+])# _LT_PROG_ECHO_BACKSLASH
+
+
+# _LT_ENABLE_LOCK
+# ---------------
+m4_defun([_LT_ENABLE_LOCK],
+[AC_ARG_ENABLE([libtool-lock],
+  [AS_HELP_STRING([--disable-libtool-lock],
+    [avoid locking (might break parallel builds)])])
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    case `/usr/bin/file conftest.$ac_objext` in
+      *ELF-32*)
+	HPUX_IA64_MODE="32"
+	;;
+      *ELF-64*)
+	HPUX_IA64_MODE="64"
+	;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+*-*-irix6*)
+  # Find out which ABI we are using.
+  echo '[#]line __oline__ "configure"' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    if test "$lt_cv_prog_gnu_ld" = yes; then
+      case `/usr/bin/file conftest.$ac_objext` in
+	*32-bit*)
+	  LD="${LD-ld} -melf32bsmip"
+	  ;;
+	*N32*)
+	  LD="${LD-ld} -melf32bmipn32"
+	  ;;
+	*64-bit*)
+	  LD="${LD-ld} -melf64bmip"
+	;;
+      esac
+    else
+      case `/usr/bin/file conftest.$ac_objext` in
+	*32-bit*)
+	  LD="${LD-ld} -32"
+	  ;;
+	*N32*)
+	  LD="${LD-ld} -n32"
+	  ;;
+	*64-bit*)
+	  LD="${LD-ld} -64"
+	  ;;
+      esac
+    fi
+  fi
+  rm -rf conftest*
+  ;;
+
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    case `/usr/bin/file conftest.o` in
+      *32-bit*)
+	case $host in
+	  x86_64-*kfreebsd*-gnu)
+	    LD="${LD-ld} -m elf_i386_fbsd"
+	    ;;
+	  x86_64-*linux*)
+	    LD="${LD-ld} -m elf_i386"
+	    ;;
+	  ppc64-*linux*|powerpc64-*linux*)
+	    LD="${LD-ld} -m elf32ppclinux"
+	    ;;
+	  s390x-*linux*)
+	    LD="${LD-ld} -m elf_s390"
+	    ;;
+	  sparc64-*linux*)
+	    LD="${LD-ld} -m elf32_sparc"
+	    ;;
+	esac
+	;;
+      *64-bit*)
+	case $host in
+	  x86_64-*kfreebsd*-gnu)
+	    LD="${LD-ld} -m elf_x86_64_fbsd"
+	    ;;
+	  x86_64-*linux*)
+	    LD="${LD-ld} -m elf_x86_64"
+	    ;;
+	  ppc*-*linux*|powerpc*-*linux*)
+	    LD="${LD-ld} -m elf64ppc"
+	    ;;
+	  s390*-*linux*|s390*-*tpf*)
+	    LD="${LD-ld} -m elf64_s390"
+	    ;;
+	  sparc*-*linux*)
+	    LD="${LD-ld} -m elf64_sparc"
+	    ;;
+	esac
+	;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+
+*-*-sco3.2v5*)
+  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+  SAVE_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -belf"
+  AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
+    [AC_LANG_PUSH(C)
+     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
+     AC_LANG_POP])
+  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+    CFLAGS="$SAVE_CFLAGS"
+  fi
+  ;;
+sparc*-*solaris*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    case `/usr/bin/file conftest.o` in
+    *64-bit*)
+      case $lt_cv_prog_gnu_ld in
+      yes*) LD="${LD-ld} -m elf64_sparc" ;;
+      *)
+	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
+	  LD="${LD-ld} -64"
+	fi
+	;;
+      esac
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+esac
+
+need_locks="$enable_libtool_lock"
+])# _LT_ENABLE_LOCK
+
+
+# _LT_CMD_OLD_ARCHIVE
+# -------------------
+m4_defun([_LT_CMD_OLD_ARCHIVE],
+[AC_CHECK_TOOL(AR, ar, false)
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+_LT_DECL([], [AR], [1], [The archiver])
+_LT_DECL([], [AR_FLAGS], [1])
+
+AC_CHECK_TOOL(STRIP, strip, :)
+test -z "$STRIP" && STRIP=:
+_LT_DECL([], [STRIP], [1], [A symbol stripping program])
+
+AC_CHECK_TOOL(RANLIB, ranlib, :)
+test -z "$RANLIB" && RANLIB=:
+_LT_DECL([], [RANLIB], [1],
+    [Commands used to install an old-style archive])
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+  case $host_os in
+  openbsd*)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+    ;;
+  *)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+    ;;
+  esac
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
+_LT_DECL([], [old_postinstall_cmds], [2])
+_LT_DECL([], [old_postuninstall_cmds], [2])
+_LT_TAGDECL([], [old_archive_cmds], [2],
+    [Commands used to build an old-style archive])
+])# _LT_CMD_OLD_ARCHIVE
+
+
+# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+#		[OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------------------
+# Check whether the given compiler option works
+AC_DEFUN([_LT_COMPILER_OPTION],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_CACHE_CHECK([$1], [$2],
+  [$2=no
+   m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$3"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&AS_MESSAGE_LOG_FD
+   echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       $2=yes
+     fi
+   fi
+   $RM conftest*
+])
+
+if test x"[$]$2" = xyes; then
+    m4_if([$5], , :, [$5])
+else
+    m4_if([$6], , :, [$6])
+fi
+])# _LT_COMPILER_OPTION
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [])
+
+
+# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+#                  [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------
+# Check whether the given linker option works
+AC_DEFUN([_LT_LINKER_OPTION],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_CACHE_CHECK([$1], [$2],
+  [$2=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $3"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&AS_MESSAGE_LOG_FD
+       $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         $2=yes
+       fi
+     else
+       $2=yes
+     fi
+   fi
+   $RM -r conftest*
+   LDFLAGS="$save_LDFLAGS"
+])
+
+if test x"[$]$2" = xyes; then
+    m4_if([$4], , :, [$4])
+else
+    m4_if([$5], , :, [$5])
+fi
+])# _LT_LINKER_OPTION
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [])
+
+
+# LT_CMD_MAX_LEN
+#---------------
+AC_DEFUN([LT_CMD_MAX_LEN],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+# find the maximum length of command line arguments
+AC_MSG_CHECKING([the maximum length of command line arguments])
+AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
+  i=0
+  teststring="ABCD"
+
+  case $build_os in
+  msdosdjgpp*)
+    # On DJGPP, this test can blow up pretty badly due to problems in libc
+    # (any single argument exceeding 2000 bytes causes a buffer overrun
+    # during glob expansion).  Even if it were fixed, the result of this
+    # check would be larger than it should be.
+    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
+    ;;
+
+  gnu*)
+    # Under GNU Hurd, this test is not required because there is
+    # no limit to the length of command line arguments.
+    # Libtool will interpret -1 as no limit whatsoever
+    lt_cv_sys_max_cmd_len=-1;
+    ;;
+
+  cygwin* | mingw* | cegcc*)
+    # On Win9x/ME, this test blows up -- it succeeds, but takes
+    # about 5 minutes as the teststring grows exponentially.
+    # Worse, since 9x/ME are not pre-emptively multitasking,
+    # you end up with a "frozen" computer, even though with patience
+    # the test eventually succeeds (with a max line length of 256k).
+    # Instead, let's just punt: use the minimum linelength reported by
+    # all of the supported platforms: 8192 (on NT/2K/XP).
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  amigaos*)
+    # On AmigaOS with pdksh, this test takes hours, literally.
+    # So we just punt and use a minimum line length of 8192.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+    # This has been around since 386BSD, at least.  Likely further.
+    if test -x /sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+    elif test -x /usr/sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+    else
+      lt_cv_sys_max_cmd_len=65536	# usable default for all BSDs
+    fi
+    # And add a safety zone
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    ;;
+
+  interix*)
+    # We know the value 262144 and hardcode it with a safety zone (like BSD)
+    lt_cv_sys_max_cmd_len=196608
+    ;;
+
+  osf*)
+    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+    # nice to cause kernel panics so lets avoid the loop below.
+    # First set a reasonable default.
+    lt_cv_sys_max_cmd_len=16384
+    #
+    if test -x /sbin/sysconfig; then
+      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+        *1*) lt_cv_sys_max_cmd_len=-1 ;;
+      esac
+    fi
+    ;;
+  sco3.2v5*)
+    lt_cv_sys_max_cmd_len=102400
+    ;;
+  sysv5* | sco5v6* | sysv4.2uw2*)
+    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+    if test -n "$kargmax"; then
+      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[	 ]]//'`
+    else
+      lt_cv_sys_max_cmd_len=32768
+    fi
+    ;;
+  *)
+    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+    if test -n "$lt_cv_sys_max_cmd_len"; then
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    else
+      # Make teststring a little bigger before we do anything with it.
+      # a 1K string should be a reasonable start.
+      for i in 1 2 3 4 5 6 7 8 ; do
+        teststring=$teststring$teststring
+      done
+      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+      # If test is not a shell built-in, we'll probably end up computing a
+      # maximum length that is only half of the actual maximum length, but
+      # we can't tell.
+      while { test "X"`$SHELL [$]0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \
+	         = "XX$teststring$teststring"; } >/dev/null 2>&1 &&
+	      test $i != 17 # 1/2 MB should be enough
+      do
+        i=`expr $i + 1`
+        teststring=$teststring$teststring
+      done
+      # Only check the string length outside the loop.
+      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
+      teststring=
+      # Add a significant safety factor because C++ compilers can tack on
+      # massive amounts of additional arguments before passing them to the
+      # linker.  It appears as though 1/2 is a usable value.
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+    fi
+    ;;
+  esac
+])
+if test -n $lt_cv_sys_max_cmd_len ; then
+  AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
+else
+  AC_MSG_RESULT(none)
+fi
+max_cmd_len=$lt_cv_sys_max_cmd_len
+_LT_DECL([], [max_cmd_len], [0],
+    [What is the maximum length of a command?])
+])# LT_CMD_MAX_LEN
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [])
+
+
+# _LT_HEADER_DLFCN
+# ----------------
+m4_defun([_LT_HEADER_DLFCN],
+[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl
+])# _LT_HEADER_DLFCN
+
+
+# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
+#                      ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
+# ----------------------------------------------------------------
+m4_defun([_LT_TRY_DLOPEN_SELF],
+[m4_require([_LT_HEADER_DLFCN])dnl
+if test "$cross_compiling" = yes; then :
+  [$4]
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<_LT_EOF
+[#line __oline__ "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+  else
+    puts (dlerror ());
+
+  return status;
+}]
+_LT_EOF
+  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) $1 ;;
+      x$lt_dlneed_uscore) $2 ;;
+      x$lt_dlunknown|x*) $3 ;;
+    esac
+  else :
+    # compilation failed
+    $3
+  fi
+fi
+rm -fr conftest*
+])# _LT_TRY_DLOPEN_SELF
+
+
+# LT_SYS_DLOPEN_SELF
+# ------------------
+AC_DEFUN([LT_SYS_DLOPEN_SELF],
+[m4_require([_LT_HEADER_DLFCN])dnl
+if test "x$enable_dlopen" != xyes; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+  lt_cv_dlopen=no
+  lt_cv_dlopen_libs=
+
+  case $host_os in
+  beos*)
+    lt_cv_dlopen="load_add_on"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ;;
+
+  mingw* | pw32* | cegcc*)
+    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen_libs=
+    ;;
+
+  cygwin*)
+    lt_cv_dlopen="dlopen"
+    lt_cv_dlopen_libs=
+    ;;
+
+  darwin*)
+  # if libdl is installed we need to link against it
+    AC_CHECK_LIB([dl], [dlopen],
+		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
+    lt_cv_dlopen="dyld"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ])
+    ;;
+
+  *)
+    AC_CHECK_FUNC([shl_load],
+	  [lt_cv_dlopen="shl_load"],
+      [AC_CHECK_LIB([dld], [shl_load],
+	    [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"],
+	[AC_CHECK_FUNC([dlopen],
+	      [lt_cv_dlopen="dlopen"],
+	  [AC_CHECK_LIB([dl], [dlopen],
+		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
+	    [AC_CHECK_LIB([svld], [dlopen],
+		  [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
+	      [AC_CHECK_LIB([dld], [dld_link],
+		    [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"])
+	      ])
+	    ])
+	  ])
+	])
+      ])
+    ;;
+  esac
+
+  if test "x$lt_cv_dlopen" != xno; then
+    enable_dlopen=yes
+  else
+    enable_dlopen=no
+  fi
+
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS="$CPPFLAGS"
+    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+    save_LDFLAGS="$LDFLAGS"
+    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS="$LIBS"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    AC_CACHE_CHECK([whether a program can dlopen itself],
+	  lt_cv_dlopen_self, [dnl
+	  _LT_TRY_DLOPEN_SELF(
+	    lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
+	    lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
+    ])
+
+    if test "x$lt_cv_dlopen_self" = xyes; then
+      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+      AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
+	  lt_cv_dlopen_self_static, [dnl
+	  _LT_TRY_DLOPEN_SELF(
+	    lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
+	    lt_cv_dlopen_self_static=no,  lt_cv_dlopen_self_static=cross)
+      ])
+    fi
+
+    CPPFLAGS="$save_CPPFLAGS"
+    LDFLAGS="$save_LDFLAGS"
+    LIBS="$save_LIBS"
+    ;;
+  esac
+
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+_LT_DECL([dlopen_support], [enable_dlopen], [0],
+	 [Whether dlopen is supported])
+_LT_DECL([dlopen_self], [enable_dlopen_self], [0],
+	 [Whether dlopen of programs is supported])
+_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0],
+	 [Whether dlopen of statically linked programs is supported])
+])# LT_SYS_DLOPEN_SELF
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [])
+
+
+# _LT_COMPILER_C_O([TAGNAME])
+# ---------------------------
+# Check to see if options -c and -o are simultaneously supported by compiler.
+# This macro does not hard code the compiler like AC_PROG_CC_C_O.
+m4_defun([_LT_COMPILER_C_O],
+[m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_TAG_COMPILER])dnl
+AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
+  [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
+  [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&AS_MESSAGE_LOG_FD
+   echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+     fi
+   fi
+   chmod u+w . 2>&AS_MESSAGE_LOG_FD
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
+])
+_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1],
+	[Does compiler simultaneously support -c and -o options?])
+])# _LT_COMPILER_C_O
+
+
+# _LT_COMPILER_FILE_LOCKS([TAGNAME])
+# ----------------------------------
+# Check to see if we can do hard links to lock some files if needed
+m4_defun([_LT_COMPILER_FILE_LOCKS],
+[m4_require([_LT_ENABLE_LOCK])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+_LT_COMPILER_C_O([$1])
+
+hard_links="nottested"
+if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  AC_MSG_CHECKING([if we can lock with hard links])
+  hard_links=yes
+  $RM conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  AC_MSG_RESULT([$hard_links])
+  if test "$hard_links" = no; then
+    AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?])
+])# _LT_COMPILER_FILE_LOCKS
+
+
+# _LT_CHECK_OBJDIR
+# ----------------
+m4_defun([_LT_CHECK_OBJDIR],
+[AC_CACHE_CHECK([for objdir], [lt_cv_objdir],
+[rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+  lt_cv_objdir=.libs
+else
+  # MS-DOS does not allow filenames that begin with a dot.
+  lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null])
+objdir=$lt_cv_objdir
+_LT_DECL([], [objdir], [0],
+         [The name of the directory that contains temporary libtool files])dnl
+m4_pattern_allow([LT_OBJDIR])dnl
+AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/",
+  [Define to the sub-directory in which libtool stores uninstalled libraries.])
+])# _LT_CHECK_OBJDIR
+
+
+# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME])
+# --------------------------------------
+# Check hardcoding attributes.
+m4_defun([_LT_LINKER_HARDCODE_LIBPATH],
+[AC_MSG_CHECKING([how to hardcode library paths into programs])
+_LT_TAGVAR(hardcode_action, $1)=
+if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" ||
+   test -n "$_LT_TAGVAR(runpath_var, $1)" ||
+   test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
+
+  # We can hardcode non-existent directories.
+  if test "$_LT_TAGVAR(hardcode_direct, $1)" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
+     test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then
+    # Linking always hardcodes the temporary library directory.
+    _LT_TAGVAR(hardcode_action, $1)=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    _LT_TAGVAR(hardcode_action, $1)=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  _LT_TAGVAR(hardcode_action, $1)=unsupported
+fi
+AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)])
+
+if test "$_LT_TAGVAR(hardcode_action, $1)" = relink ||
+   test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+_LT_TAGDECL([], [hardcode_action], [0],
+    [How to hardcode a shared library path into an executable])
+])# _LT_LINKER_HARDCODE_LIBPATH
+
+
+# _LT_CMD_STRIPLIB
+# ----------------
+m4_defun([_LT_CMD_STRIPLIB],
+[m4_require([_LT_DECL_EGREP])
+striplib=
+old_striplib=
+AC_MSG_CHECKING([whether stripping libraries is possible])
+if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  AC_MSG_RESULT([yes])
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+  case $host_os in
+  darwin*)
+    if test -n "$STRIP" ; then
+      striplib="$STRIP -x"
+      old_striplib="$STRIP -S"
+      AC_MSG_RESULT([yes])
+    else
+      AC_MSG_RESULT([no])
+    fi
+    ;;
+  *)
+    AC_MSG_RESULT([no])
+    ;;
+  esac
+fi
+_LT_DECL([], [old_striplib], [1], [Commands to strip libraries])
+_LT_DECL([], [striplib], [1])
+])# _LT_CMD_STRIPLIB
+
+
+# _LT_SYS_DYNAMIC_LINKER([TAG])
+# -----------------------------
+# PORTME Fill in your ld.so characteristics
+m4_defun([_LT_SYS_DYNAMIC_LINKER],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_OBJDUMP])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_MSG_CHECKING([dynamic linker characteristics])
+m4_if([$1],
+	[], [
+if test "$GCC" = yes; then
+  case $host_os in
+    darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
+    *) lt_awk_arg="/^libraries:/" ;;
+  esac
+  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+  if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'`
+  else
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+  fi
+  # Ok, now we have the path, separated by spaces, we can step through it
+  # and add multilib dir if necessary.
+  lt_tmp_lt_search_path_spec=
+  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+  for lt_sys_path in $lt_search_path_spec; do
+    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
+      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
+    else
+      test -d "$lt_sys_path" && \
+	lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
+    fi
+  done
+  lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk '
+BEGIN {RS=" "; FS="/|\n";} {
+  lt_foo="";
+  lt_count=0;
+  for (lt_i = NF; lt_i > 0; lt_i--) {
+    if ($lt_i != "" && $lt_i != ".") {
+      if ($lt_i == "..") {
+        lt_count++;
+      } else {
+        if (lt_count == 0) {
+          lt_foo="/" $lt_i lt_foo;
+        } else {
+          lt_count--;
+        }
+      }
+    }
+  }
+  if (lt_foo != "") { lt_freq[[lt_foo]]++; }
+  if (lt_freq[[lt_foo]] == 1) { print lt_foo; }
+}'`
+  sys_lib_search_path_spec=`$ECHO $lt_search_path_spec`
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi])
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix[[4-9]]*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[[01]] | aix4.[[01]].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+	   echo ' yes '
+	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
+	:
+      else
+	can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  case $host_cpu in
+  powerpc)
+    # Since July 2007 AmigaOS4 officially supports .so libraries.
+    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    ;;
+  m68k)
+    library_names_spec='$libname.ixlibrary $libname.a'
+    # Create ${libname}_ixlibrary.a entries in /sys/libs.
+    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+    ;;
+  esac
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi[[45]]*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32* | cegcc*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname~
+      chmod a+x \$dldir/$dlname~
+      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+      fi'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+      ;;
+    mingw* | cegcc*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+      if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
+        # It is most probably a Windows format PATH printed by
+        # mingw gcc, but we are running on Cygwin. Gcc prints its search
+        # path with ; separators, and with drive letters. We can handle the
+        # drive letters (cygwin fileutils understands them), so leave them,
+        # especially as we might pass files found there to a mingw objdump,
+        # which wouldn't understand a cygwinified path. Ahh.
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    ;;
+
+  *)
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    ;;
+  esac
+  dynamic_linker='Win32 ld.exe'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+m4_if([$1], [],[
+  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"])
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  if test -x /usr/bin/objformat; then
+    objformat=`/usr/bin/objformat`
+  else
+    case $host_os in
+    freebsd[[123]]*) objformat=aout ;;
+    *) objformat=elf ;;
+    esac
+  fi
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.[[01]]* | freebsdelf3.[[01]]*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \
+  freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1)
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  *) # from 4.6 on, and DragonFly
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case $host_cpu in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  hppa*64*)
+    shrext_cmds='.sl'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  postinstall_cmds='chmod 555 $lib'
+  ;;
+
+interix[[3-9]]*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+	if test "$lt_cv_prog_gnu_ld" = yes; then
+		version_type=linux
+	else
+		version_type=irix
+	fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  # Some binutils ld are patched to set DT_RUNPATH
+  save_LDFLAGS=$LDFLAGS
+  save_libdir=$libdir
+  eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \
+       LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\""
+  AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
+    [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null],
+       [shlibpath_overrides_runpath=yes])])
+  LDFLAGS=$save_LDFLAGS
+  libdir=$save_libdir
+
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsdelf*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='NetBSD ld.elf_so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+*nto* | *qnx*)
+  version_type=qnx
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='ldqnx.so'
+  ;;
+
+openbsd*)
+  version_type=sunos
+  sys_lib_dlsearch_path_spec="/usr/lib"
+  need_lib_prefix=no
+  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+  case $host_os in
+    openbsd3.3 | openbsd3.3.*)	need_version=yes ;;
+    *)				need_version=no  ;;
+  esac
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[[89]] | openbsd2.[[89]].*)
+	shlibpath_overrides_runpath=no
+	;;
+      *)
+	shlibpath_overrides_runpath=yes
+	;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+rdos*)
+  dynamic_linker=no
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  version_type=freebsd-elf
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  if test "$with_gnu_ld" = yes; then
+    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+  else
+    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+    case $host_os in
+      sco3.2v5*)
+        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+	;;
+    esac
+  fi
+  sys_lib_dlsearch_path_spec='/usr/lib'
+  ;;
+
+tpf*)
+  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+AC_MSG_RESULT([$dynamic_linker])
+test "$dynamic_linker" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+fi
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+fi
+
+_LT_DECL([], [variables_saved_for_relink], [1],
+    [Variables whose values should be saved in libtool wrapper scripts and
+    restored at link time])
+_LT_DECL([], [need_lib_prefix], [0],
+    [Do we need the "lib" prefix for modules?])
+_LT_DECL([], [need_version], [0], [Do we need a version for libraries?])
+_LT_DECL([], [version_type], [0], [Library versioning type])
+_LT_DECL([], [runpath_var], [0],  [Shared library runtime path variable])
+_LT_DECL([], [shlibpath_var], [0],[Shared library path variable])
+_LT_DECL([], [shlibpath_overrides_runpath], [0],
+    [Is shlibpath searched before the hard-coded library search path?])
+_LT_DECL([], [libname_spec], [1], [Format of library name prefix])
+_LT_DECL([], [library_names_spec], [1],
+    [[List of archive names.  First name is the real one, the rest are links.
+    The last name is the one that the linker finds with -lNAME]])
+_LT_DECL([], [soname_spec], [1],
+    [[The coded name of the library, if different from the real name]])
+_LT_DECL([], [postinstall_cmds], [2],
+    [Command to use after installation of a shared archive])
+_LT_DECL([], [postuninstall_cmds], [2],
+    [Command to use after uninstallation of a shared archive])
+_LT_DECL([], [finish_cmds], [2],
+    [Commands used to finish a libtool library installation in a directory])
+_LT_DECL([], [finish_eval], [1],
+    [[As "finish_cmds", except a single script fragment to be evaled but
+    not shown]])
+_LT_DECL([], [hardcode_into_libs], [0],
+    [Whether we should hardcode library paths into libraries])
+_LT_DECL([], [sys_lib_search_path_spec], [2],
+    [Compile-time system search path for libraries])
+_LT_DECL([], [sys_lib_dlsearch_path_spec], [2],
+    [Run-time system search path for libraries])
+])# _LT_SYS_DYNAMIC_LINKER
+
+
+# _LT_PATH_TOOL_PREFIX(TOOL)
+# --------------------------
+# find a file program which can recognize shared library
+AC_DEFUN([_LT_PATH_TOOL_PREFIX],
+[m4_require([_LT_DECL_EGREP])dnl
+AC_MSG_CHECKING([for $1])
+AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
+[case $MAGIC_CMD in
+[[\\/*] |  ?:[\\/]*])
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD="$MAGIC_CMD"
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+dnl $ac_dummy forces splitting on constant user-supplied paths.
+dnl POSIX.2 word splitting is done only on the output of word expansions,
+dnl not every word.  This closes a longstanding sh security hole.
+  ac_dummy="m4_if([$2], , $PATH, [$2])"
+  for ac_dir in $ac_dummy; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$1; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/$1"
+      if test -n "$file_magic_test_file"; then
+	case $deplibs_check_method in
+	"file_magic "*)
+	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+	    $EGREP "$file_magic_regex" > /dev/null; then
+	    :
+	  else
+	    cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+_LT_EOF
+	  fi ;;
+	esac
+      fi
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  ;;
+esac])
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  AC_MSG_RESULT($MAGIC_CMD)
+else
+  AC_MSG_RESULT(no)
+fi
+_LT_DECL([], [MAGIC_CMD], [0],
+	 [Used to examine libraries when file_magic_cmd begins with "file"])dnl
+])# _LT_PATH_TOOL_PREFIX
+
+# Old name:
+AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], [])
+
+
+# _LT_PATH_MAGIC
+# --------------
+# find a file program which can recognize a shared library
+m4_defun([_LT_PATH_MAGIC],
+[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+  if test -n "$ac_tool_prefix"; then
+    _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
+  else
+    MAGIC_CMD=:
+  fi
+fi
+])# _LT_PATH_MAGIC
+
+
+# LT_PATH_LD
+# ----------
+# find the pathname to the GNU or non-GNU linker
+AC_DEFUN([LT_PATH_LD],
+[AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_DECL_EGREP])dnl
+
+AC_ARG_WITH([gnu-ld],
+    [AS_HELP_STRING([--with-gnu-ld],
+	[assume the C compiler uses GNU ld @<:@default=no@:>@])],
+    [test "$withval" = no || with_gnu_ld=yes],
+    [with_gnu_ld=no])dnl
+
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  AC_MSG_CHECKING([for ld used by $CC])
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [[\\/]]* | ?:[[\\/]]*)
+      re_direlt='/[[^/]][[^/]]*/\.\./'
+      # Canonicalize the pathname of ld
+      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  AC_MSG_CHECKING([for GNU ld])
+else
+  AC_MSG_CHECKING([for non-GNU ld])
+fi
+AC_CACHE_VAL(lt_cv_path_LD,
+[if test -z "$LD"; then
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some variants of GNU ld only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+	test "$with_gnu_ld" != no && break
+	;;
+      *)
+	test "$with_gnu_ld" != yes && break
+	;;
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi])
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  AC_MSG_RESULT($LD)
+else
+  AC_MSG_RESULT(no)
+fi
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+_LT_PATH_LD_GNU
+AC_SUBST([LD])
+
+_LT_TAGDECL([], [LD], [1], [The linker used to build libraries])
+])# LT_PATH_LD
+
+# Old names:
+AU_ALIAS([AM_PROG_LD], [LT_PATH_LD])
+AU_ALIAS([AC_PROG_LD], [LT_PATH_LD])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_PROG_LD], [])
+dnl AC_DEFUN([AC_PROG_LD], [])
+
+
+# _LT_PATH_LD_GNU
+#- --------------
+m4_defun([_LT_PATH_LD_GNU],
+[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
+[# I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac])
+with_gnu_ld=$lt_cv_prog_gnu_ld
+])# _LT_PATH_LD_GNU
+
+
+# _LT_CMD_RELOAD
+# --------------
+# find reload flag for linker
+#   -- PORTME Some linkers may need a different reload flag.
+m4_defun([_LT_CMD_RELOAD],
+[AC_CACHE_CHECK([for $LD option to reload object files],
+  lt_cv_ld_reload_flag,
+  [lt_cv_ld_reload_flag='-r'])
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+  darwin*)
+    if test "$GCC" = yes; then
+      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+    else
+      reload_cmds='$LD$reload_flag -o $output$reload_objs'
+    fi
+    ;;
+esac
+_LT_DECL([], [reload_flag], [1], [How to create reloadable object files])dnl
+_LT_DECL([], [reload_cmds], [2])dnl
+])# _LT_CMD_RELOAD
+
+
+# _LT_CHECK_MAGIC_METHOD
+# ----------------------
+# how to check for library dependencies
+#  -- PORTME fill in with the dynamic library characteristics
+m4_defun([_LT_CHECK_MAGIC_METHOD],
+[m4_require([_LT_DECL_EGREP])
+m4_require([_LT_DECL_OBJDUMP])
+AC_CACHE_CHECK([how to recognize dependent libraries],
+lt_cv_deplibs_check_method,
+[lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix[[4-9]]*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+beos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+bsdi[[45]]*)
+  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
+  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  lt_cv_file_magic_test_file=/shlib/libc.so
+  ;;
+
+cygwin*)
+  # func_win32_libid is a shell function defined in ltmain.sh
+  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+  lt_cv_file_magic_cmd='func_win32_libid'
+  ;;
+
+mingw* | pw32*)
+  # Base MSYS/MinGW do not provide the 'file' command needed by
+  # func_win32_libid shell function, so use a weaker test based on 'objdump',
+  # unless we find 'file', for example because we are cross-compiling.
+  if ( file / ) >/dev/null 2>&1; then
+    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+    lt_cv_file_magic_cmd='func_win32_libid'
+  else
+    lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+    lt_cv_file_magic_cmd='$OBJDUMP -f'
+  fi
+  ;;
+
+cegcc)
+  # use the weaker test based on 'objdump'. See mingw*.
+  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
+  lt_cv_file_magic_cmd='$OBJDUMP -f'
+  ;;
+
+darwin* | rhapsody*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+freebsd* | dragonfly*)
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+    case $host_cpu in
+    i*86 )
+      # Not sure whether the presence of OpenBSD here was a mistake.
+      # Let's accept both of them until this is cleared up.
+      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
+      lt_cv_file_magic_cmd=/usr/bin/file
+      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+      ;;
+    esac
+  else
+    lt_cv_deplibs_check_method=pass_all
+  fi
+  ;;
+
+gnu*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+hpux10.20* | hpux11*)
+  lt_cv_file_magic_cmd=/usr/bin/file
+  case $host_cpu in
+  ia64*)
+    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
+    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+    ;;
+  hppa*64*)
+    [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]']
+    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+    ;;
+  *)
+    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library'
+    lt_cv_file_magic_test_file=/usr/lib/libc.sl
+    ;;
+  esac
+  ;;
+
+interix[[3-9]]*)
+  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+  lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$'
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $LD in
+  *-32|*"-32 ") libmagic=32-bit;;
+  *-n32|*"-n32 ") libmagic=N32;;
+  *-64|*"-64 ") libmagic=64-bit;;
+  *) libmagic=never-match;;
+  esac
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+netbsd* | netbsdelf*-gnu)
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$'
+  fi
+  ;;
+
+newos6*)
+  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=/usr/lib/libnls.so
+  ;;
+
+*nto* | *qnx*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+openbsd*)
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+  fi
+  ;;
+
+osf3* | osf4* | osf5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+rdos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+solaris*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv4 | sysv4.3*)
+  case $host_vendor in
+  motorola)
+    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
+    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+    ;;
+  ncr)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  sequent)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
+    ;;
+  sni)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
+    lt_cv_file_magic_test_file=/lib/libc.so
+    ;;
+  siemens)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  pc)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  esac
+  ;;
+
+tpf*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+esac
+])
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+_LT_DECL([], [deplibs_check_method], [1],
+    [Method to check whether dependent libraries are shared objects])
+_LT_DECL([], [file_magic_cmd], [1],
+    [Command to use when deplibs_check_method == "file_magic"])
+])# _LT_CHECK_MAGIC_METHOD
+
+
+# LT_PATH_NM
+# ----------
+# find the pathname to a BSD- or MS-compatible name lister
+AC_DEFUN([LT_PATH_NM],
+[AC_REQUIRE([AC_PROG_CC])dnl
+AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM,
+[if test -n "$NM"; then
+  # Let the user override the test.
+  lt_cv_path_NM="$NM"
+else
+  lt_nm_to_check="${ac_tool_prefix}nm"
+  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+    lt_nm_to_check="$lt_nm_to_check nm"
+  fi
+  for lt_tmp_nm in $lt_nm_to_check; do
+    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+      IFS="$lt_save_ifs"
+      test -z "$ac_dir" && ac_dir=.
+      tmp_nm="$ac_dir/$lt_tmp_nm"
+      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+	# Check to see if the nm accepts a BSD-compat flag.
+	# Adding the `sed 1q' prevents false positives on HP-UX, which says:
+	#   nm: unknown option "B" ignored
+	# Tru64's nm complains that /dev/null is an invalid object file
+	case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+	*/dev/null* | *'Invalid file or object type'*)
+	  lt_cv_path_NM="$tmp_nm -B"
+	  break
+	  ;;
+	*)
+	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+	  */dev/null*)
+	    lt_cv_path_NM="$tmp_nm -p"
+	    break
+	    ;;
+	  *)
+	    lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+	    continue # so that we can try to find one that supports BSD flags
+	    ;;
+	  esac
+	  ;;
+	esac
+      fi
+    done
+    IFS="$lt_save_ifs"
+  done
+  : ${lt_cv_path_NM=no}
+fi])
+if test "$lt_cv_path_NM" != "no"; then
+  NM="$lt_cv_path_NM"
+else
+  # Didn't find any BSD compatible name lister, look for dumpbin.
+  AC_CHECK_TOOLS(DUMPBIN, ["dumpbin -symbols" "link -dump -symbols"], :)
+  AC_SUBST([DUMPBIN])
+  if test "$DUMPBIN" != ":"; then
+    NM="$DUMPBIN"
+  fi
+fi
+test -z "$NM" && NM=nm
+AC_SUBST([NM])
+_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl
+
+AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface],
+  [lt_cv_nm_interface="BSD nm"
+  echo "int some_variable = 0;" > conftest.$ac_ext
+  (eval echo "\"\$as_me:__oline__: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
+  (eval "$ac_compile" 2>conftest.err)
+  cat conftest.err >&AS_MESSAGE_LOG_FD
+  (eval echo "\"\$as_me:__oline__: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
+  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+  cat conftest.err >&AS_MESSAGE_LOG_FD
+  (eval echo "\"\$as_me:__oline__: output\"" >&AS_MESSAGE_LOG_FD)
+  cat conftest.out >&AS_MESSAGE_LOG_FD
+  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
+    lt_cv_nm_interface="MS dumpbin"
+  fi
+  rm -f conftest*])
+])# LT_PATH_NM
+
+# Old names:
+AU_ALIAS([AM_PROG_NM], [LT_PATH_NM])
+AU_ALIAS([AC_PROG_NM], [LT_PATH_NM])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_PROG_NM], [])
+dnl AC_DEFUN([AC_PROG_NM], [])
+
+
+# LT_LIB_M
+# --------
+# check for math library
+AC_DEFUN([LT_LIB_M],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+LIBM=
+case $host in
+*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*)
+  # These system don't have libm, or don't need it
+  ;;
+*-ncr-sysv4.3*)
+  AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
+  AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
+  ;;
+*)
+  AC_CHECK_LIB(m, cos, LIBM="-lm")
+  ;;
+esac
+AC_SUBST([LIBM])
+])# LT_LIB_M
+
+# Old name:
+AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_CHECK_LIBM], [])
+
+
+# _LT_COMPILER_NO_RTTI([TAGNAME])
+# -------------------------------
+m4_defun([_LT_COMPILER_NO_RTTI],
+[m4_require([_LT_TAG_COMPILER])dnl
+
+_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+
+if test "$GCC" = yes; then
+  _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+
+  _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
+    lt_cv_prog_compiler_rtti_exceptions,
+    [-fno-rtti -fno-exceptions], [],
+    [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
+fi
+_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1],
+	[Compiler flag to turn off builtin functions])
+])# _LT_COMPILER_NO_RTTI
+
+
+# _LT_CMD_GLOBAL_SYMBOLS
+# ----------------------
+m4_defun([_LT_CMD_GLOBAL_SYMBOLS],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([LT_PATH_NM])dnl
+AC_REQUIRE([LT_PATH_LD])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_TAG_COMPILER])dnl
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+AC_MSG_CHECKING([command to parse $NM output from $compiler object])
+AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe],
+[
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[[BCDEGRST]]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+  symcode='[[BCDT]]'
+  ;;
+cygwin* | mingw* | pw32* | cegcc*)
+  symcode='[[ABCDGISTW]]'
+  ;;
+hpux*)
+  if test "$host_cpu" = ia64; then
+    symcode='[[ABCDEGRST]]'
+  fi
+  ;;
+irix* | nonstopux*)
+  symcode='[[BCDEGRST]]'
+  ;;
+osf*)
+  symcode='[[BCDEGQRST]]'
+  ;;
+solaris*)
+  symcode='[[BDRT]]'
+  ;;
+sco3.2v5*)
+  symcode='[[DT]]'
+  ;;
+sysv4.2uw2*)
+  symcode='[[DT]]'
+  ;;
+sysv5* | sco5v6* | unixware* | OpenUNIX*)
+  symcode='[[ABDT]]'
+  ;;
+sysv4)
+  symcode='[[DFNSTU]]'
+  ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+  symcode='[[ABCDGIRSTW]]' ;;
+esac
+
+# Transform an extracted symbol line into a proper C declaration.
+# Some systems (esp. on ia64) link data and code symbols differently,
+# so use this general approach.
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p'"
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+  opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+  ;;
+esac
+
+# Try without a prefix underscore, then with it.
+for ac_symprfx in "" "_"; do
+
+  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+  symxfrm="\\1 $ac_symprfx\\2 \\2"
+
+  # Write the raw and C identifiers.
+  if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+    # Fake it for dumpbin and say T for any non-static function
+    # and D for any global variable.
+    # Also find C++ and __fastcall symbols from MSVC++,
+    # which start with @ or ?.
+    lt_cv_sys_global_symbol_pipe="$AWK ['"\
+"     {last_section=section; section=\$ 3};"\
+"     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
+"     \$ 0!~/External *\|/{next};"\
+"     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
+"     {if(hide[section]) next};"\
+"     {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
+"     {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
+"     s[1]~/^[@?]/{print s[1], s[1]; next};"\
+"     s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
+"     ' prfx=^$ac_symprfx]"
+  else
+    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[	 ]]\($symcode$symcode*\)[[	 ]][[	 ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+  fi
+
+  # Check to see that the pipe works correctly.
+  pipe_works=no
+
+  rm -f conftest*
+  cat > conftest.$ac_ext <<_LT_EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(void);
+void nm_test_func(void){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+_LT_EOF
+
+  if AC_TRY_EVAL(ac_compile); then
+    # Now try to grab the symbols.
+    nlist=conftest.nm
+    if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then
+      # Try sorting and uniquifying the output.
+      if sort "$nlist" | uniq > "$nlist"T; then
+	mv -f "$nlist"T "$nlist"
+      else
+	rm -f "$nlist"T
+      fi
+
+      # Make sure that we snagged all the symbols we need.
+      if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
+	if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
+	  cat <<_LT_EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+_LT_EOF
+	  # Now generate the symbol file.
+	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
+
+	  cat <<_LT_EOF >> conftest.$ac_ext
+
+/* The mapping between symbol names and symbols.  */
+const struct {
+  const char *name;
+  void       *address;
+}
+lt__PROGRAM__LTX_preloaded_symbols[[]] =
+{
+  { "@PROGRAM@", (void *) 0 },
+_LT_EOF
+	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
+	  cat <<\_LT_EOF >> conftest.$ac_ext
+  {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+  return lt__PROGRAM__LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+_LT_EOF
+	  # Now try linking the two files.
+	  mv conftest.$ac_objext conftstm.$ac_objext
+	  lt_save_LIBS="$LIBS"
+	  lt_save_CFLAGS="$CFLAGS"
+	  LIBS="conftstm.$ac_objext"
+	  CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
+	  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
+	    pipe_works=yes
+	  fi
+	  LIBS="$lt_save_LIBS"
+	  CFLAGS="$lt_save_CFLAGS"
+	else
+	  echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
+	fi
+      else
+	echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD
+      fi
+    else
+      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
+    fi
+  else
+    echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD
+    cat conftest.$ac_ext >&5
+  fi
+  rm -rf conftest* conftst*
+
+  # Do not use the global_symbol_pipe unless it works.
+  if test "$pipe_works" = yes; then
+    break
+  else
+    lt_cv_sys_global_symbol_pipe=
+  fi
+done
+])
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+  lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+  AC_MSG_RESULT(failed)
+else
+  AC_MSG_RESULT(ok)
+fi
+
+_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1],
+    [Take the output of nm and produce a listing of raw symbols and C names])
+_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1],
+    [Transform the output of nm in a proper C declaration])
+_LT_DECL([global_symbol_to_c_name_address],
+    [lt_cv_sys_global_symbol_to_c_name_address], [1],
+    [Transform the output of nm in a C name address pair])
+_LT_DECL([global_symbol_to_c_name_address_lib_prefix],
+    [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1],
+    [Transform the output of nm in a C name address pair when lib prefix is needed])
+]) # _LT_CMD_GLOBAL_SYMBOLS
+
+
+# _LT_COMPILER_PIC([TAGNAME])
+# ---------------------------
+m4_defun([_LT_COMPILER_PIC],
+[m4_require([_LT_TAG_COMPILER])dnl
+_LT_TAGVAR(lt_prog_compiler_wl, $1)=
+_LT_TAGVAR(lt_prog_compiler_pic, $1)=
+_LT_TAGVAR(lt_prog_compiler_static, $1)=
+
+AC_MSG_CHECKING([for $compiler option to produce PIC])
+m4_if([$1], [CXX], [
+  # C++ specific cases for pic, static, wl, etc.
+  if test "$GXX" = yes; then
+    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+    case $host_os in
+    aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+        ;;
+      m68k)
+            # FIXME: we need at least 68020 code to build shared libraries, but
+            # adding the `-m68020' flag to GCC prevents building anything better,
+            # like `-m68040'.
+            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+        ;;
+      esac
+      ;;
+
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+    mingw* | cygwin* | os2* | pw32* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
+      m4_if([$1], [GCJ], [],
+	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+      ;;
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+      ;;
+    *djgpp*)
+      # DJGPP does not support shared libraries at all
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+      ;;
+    interix[[3-9]]*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+      fi
+      ;;
+    hpux*)
+      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
+      # sets the default TLS model and affects inlining.
+      case $host_cpu in
+      hppa*64*)
+	;;
+      *)
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	;;
+      esac
+      ;;
+    *qnx* | *nto*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+      ;;
+    *)
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+      ;;
+    esac
+  else
+    case $host_os in
+      aix[[4-9]]*)
+	# All AIX code is PIC.
+	if test "$host_cpu" = ia64; then
+	  # AIX 5 now supports IA64 processor
+	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	else
+	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+	fi
+	;;
+      chorus*)
+	case $cc_basename in
+	cxch68*)
+	  # Green Hills C++ Compiler
+	  # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+	  ;;
+	esac
+	;;
+      dgux*)
+	case $cc_basename in
+	  ec++*)
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    ;;
+	  ghcx*)
+	    # Green Hills C++ Compiler
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      freebsd* | dragonfly*)
+	# FreeBSD uses GNU C++
+	;;
+      hpux9* | hpux10* | hpux11*)
+	case $cc_basename in
+	  CC*)
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+	    if test "$host_cpu" != ia64; then
+	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+	    fi
+	    ;;
+	  aCC*)
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+	    case $host_cpu in
+	    hppa*64*|ia64*)
+	      # +Z the default
+	      ;;
+	    *)
+	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+	      ;;
+	    esac
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      interix*)
+	# This is c89, which is MS Visual C++ (no shared libs)
+	# Anyone wants to do a port?
+	;;
+      irix5* | irix6* | nonstopux*)
+	case $cc_basename in
+	  CC*)
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+	    # CC pic flag -KPIC is the default.
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      linux* | k*bsd*-gnu | kopensolaris*-gnu)
+	case $cc_basename in
+	  KCC*)
+	    # KAI C++ Compiler
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	    ;;
+	  ecpc* )
+	    # old Intel C++ for x86_64 which still supported -KPIC.
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+	    ;;
+	  icpc* )
+	    # Intel C++, used to be incompatible with GCC.
+	    # ICC 10 doesn't accept -KPIC any more.
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+	    ;;
+	  pgCC* | pgcpp*)
+	    # Portland Group C++ compiler
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	    ;;
+	  cxx*)
+	    # Compaq C++
+	    # Make sure the PIC flag is empty.  It appears that all Alpha
+	    # Linux and Compaq Tru64 Unix objects are PIC.
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+	    ;;
+	  xlc* | xlC*)
+	    # IBM XL 8.0 on PPC
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
+	    ;;
+	  *)
+	    case `$CC -V 2>&1 | sed 5q` in
+	    *Sun\ C*)
+	      # Sun C++ 5.9
+	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+	      ;;
+	    esac
+	    ;;
+	esac
+	;;
+      lynxos*)
+	;;
+      m88k*)
+	;;
+      mvs*)
+	case $cc_basename in
+	  cxx*)
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      netbsd* | netbsdelf*-gnu)
+	;;
+      *qnx* | *nto*)
+        # QNX uses GNU C++, but need to define -shared option too, otherwise
+        # it will coredump.
+        _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+        ;;
+      osf3* | osf4* | osf5*)
+	case $cc_basename in
+	  KCC*)
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+	    ;;
+	  RCC*)
+	    # Rational C++ 2.4.1
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+	    ;;
+	  cxx*)
+	    # Digital/Compaq C++
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    # Make sure the PIC flag is empty.  It appears that all Alpha
+	    # Linux and Compaq Tru64 Unix objects are PIC.
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      psos*)
+	;;
+      solaris*)
+	case $cc_basename in
+	  CC*)
+	    # Sun C++ 4.2, 5.x and Centerline C++
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+	    ;;
+	  gcx*)
+	    # Green Hills C++ Compiler
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      sunos4*)
+	case $cc_basename in
+	  CC*)
+	    # Sun C++ 4.x
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	    ;;
+	  lcc*)
+	    # Lucid
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+	case $cc_basename in
+	  CC*)
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	    ;;
+	esac
+	;;
+      tandem*)
+	case $cc_basename in
+	  NCC*)
+	    # NonStop-UX NCC 3.20
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      vxworks*)
+	;;
+      *)
+	_LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+	;;
+    esac
+  fi
+],
+[
+  if test "$GCC" = yes; then
+    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+        ;;
+      m68k)
+            # FIXME: we need at least 68020 code to build shared libraries, but
+            # adding the `-m68020' flag to GCC prevents building anything better,
+            # like `-m68040'.
+            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+        ;;
+      esac
+      ;;
+
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | cygwin* | pw32* | os2* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
+      m4_if([$1], [GCJ], [],
+	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+      ;;
+
+    hpux*)
+      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
+      # sets the default TLS model and affects inlining.
+      case $host_cpu in
+      hppa*64*)
+	# +Z the default
+	;;
+      *)
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	;;
+      esac
+      ;;
+
+    interix[[3-9]]*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
+
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+      enable_shared=no
+      ;;
+
+    *nto* | *qnx*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+      fi
+      ;;
+
+    *)
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      else
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+
+    mingw* | cygwin* | pw32* | os2* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      m4_if([$1], [GCJ], [],
+	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case $host_cpu in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+	;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      # PIC (with -KPIC) is the default.
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+      ;;
+
+    linux* | k*bsd*-gnu | kopensolaris*-gnu)
+      case $cc_basename in
+      # old Intel for x86_64 which still supported -KPIC.
+      ecc*)
+	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+        ;;
+      # icc used to be incompatible with GCC.
+      # ICC 10 doesn't accept -KPIC any more.
+      icc* | ifort*)
+	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+        ;;
+      # Lahey Fortran 8.1.
+      lf95*)
+	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared'
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='--static'
+	;;
+      pgcc* | pgf77* | pgf90* | pgf95*)
+        # Portland Group compilers (*not* the Pentium gcc compiler,
+	# which looks to be a dead project)
+	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+        ;;
+      ccc*)
+        _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+        # All Alpha code is PIC.
+        _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+        ;;
+      xl*)
+	# IBM XL C 8.0/Fortran 10.1 on PPC
+	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
+	;;
+      *)
+	case `$CC -V 2>&1 | sed 5q` in
+	*Sun\ C*)
+	  # Sun C 5.9
+	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	  ;;
+	*Sun\ F*)
+	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
+	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	  _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
+	  ;;
+	esac
+	;;
+      esac
+      ;;
+
+    newsos6)
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    *nto* | *qnx*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+      ;;
+
+    osf3* | osf4* | osf5*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      # All OSF/1 code is PIC.
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+      ;;
+
+    rdos*)
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+      ;;
+
+    solaris*)
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      case $cc_basename in
+      f77* | f90* | f95*)
+	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
+      *)
+	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
+      esac
+      ;;
+
+    sunos4*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      fi
+      ;;
+
+    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    unicos*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+      ;;
+
+    uts4*)
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    *)
+      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+      ;;
+    esac
+  fi
+])
+case $host_os in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+    ;;
+  *)
+    _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])"
+    ;;
+esac
+AC_MSG_RESULT([$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
+_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
+	[How to pass a linker flag through the compiler])
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
+  _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works],
+    [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)],
+    [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [],
+    [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in
+     "" | " "*) ;;
+     *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;;
+     esac],
+    [_LT_TAGVAR(lt_prog_compiler_pic, $1)=
+     _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
+fi
+_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1],
+	[Additional compiler flags for building library objects])
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\"
+_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
+  _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1),
+  $lt_tmp_static_flag,
+  [],
+  [_LT_TAGVAR(lt_prog_compiler_static, $1)=])
+_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1],
+	[Compiler flag to prevent dynamic linking])
+])# _LT_COMPILER_PIC
+
+
+# _LT_LINKER_SHLIBS([TAGNAME])
+# ----------------------------
+# See if the linker supports building shared libraries.
+m4_defun([_LT_LINKER_SHLIBS],
+[AC_REQUIRE([LT_PATH_LD])dnl
+AC_REQUIRE([LT_PATH_NM])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
+m4_require([_LT_TAG_COMPILER])dnl
+AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+m4_if([$1], [CXX], [
+  _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  case $host_os in
+  aix[[4-9]]*)
+    # If we're using GNU nm, then we don't want the "-C" option.
+    # -C means demangle to AIX nm, but means don't demangle with GNU nm
+    if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+    else
+      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+    fi
+    ;;
+  pw32*)
+    _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
+  ;;
+  cygwin* | mingw* | cegcc*)
+    _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
+  ;;
+  linux* | k*bsd*-gnu)
+    _LT_TAGVAR(link_all_deplibs, $1)=no
+  ;;
+  *)
+    _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  ;;
+  esac
+  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
+], [
+  runpath_var=
+  _LT_TAGVAR(allow_undefined_flag, $1)=
+  _LT_TAGVAR(always_export_symbols, $1)=no
+  _LT_TAGVAR(archive_cmds, $1)=
+  _LT_TAGVAR(archive_expsym_cmds, $1)=
+  _LT_TAGVAR(compiler_needs_object, $1)=no
+  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+  _LT_TAGVAR(export_dynamic_flag_spec, $1)=
+  _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  _LT_TAGVAR(hardcode_automatic, $1)=no
+  _LT_TAGVAR(hardcode_direct, $1)=no
+  _LT_TAGVAR(hardcode_direct_absolute, $1)=no
+  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+  _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+  _LT_TAGVAR(hardcode_libdir_separator, $1)=
+  _LT_TAGVAR(hardcode_minus_L, $1)=no
+  _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+  _LT_TAGVAR(inherit_rpath, $1)=no
+  _LT_TAGVAR(link_all_deplibs, $1)=unknown
+  _LT_TAGVAR(module_cmds, $1)=
+  _LT_TAGVAR(module_expsym_cmds, $1)=
+  _LT_TAGVAR(old_archive_from_new_cmds, $1)=
+  _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)=
+  _LT_TAGVAR(thread_safe_flag_spec, $1)=
+  _LT_TAGVAR(whole_archive_flag_spec, $1)=
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  _LT_TAGVAR(include_expsyms, $1)=
+  # exclude_expsyms can be an extended regexp of symbols to exclude
+  # it will be wrapped by ` (' and `)$', so one must not match beginning or
+  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+  # as well as any symbol that contains `d'.
+  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
+  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+  # platforms (ab)use it in PIC code, but their linkers get confused if
+  # the symbol is explicitly referenced.  Since portable code cannot
+  # rely on this symbol name, it's probably fine to never include it in
+  # preloaded symbol tables.
+  # Exclude shared library initialization/finalization symbols.
+dnl Note also adjust exclude_expsyms for C++ above.
+  extract_expsyms_cmds=
+
+  case $host_os in
+  cygwin* | mingw* | pw32* | cegcc*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test "$GCC" != yes; then
+      with_gnu_ld=no
+    fi
+    ;;
+  interix*)
+    # we just hope/assume this is gcc and not c89 (= MSVC++)
+    with_gnu_ld=yes
+    ;;
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+  linux* | k*bsd*-gnu)
+    _LT_TAGVAR(link_all_deplibs, $1)=no
+    ;;
+  esac
+
+  _LT_TAGVAR(ld_shlibs, $1)=yes
+  if test "$with_gnu_ld" = yes; then
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    wlarc='${wl}'
+
+    # Set some defaults for GNU ld with shared library support. These
+    # are reset later if shared libraries are not supported. Putting them
+    # here allows them to be overridden if necessary.
+    runpath_var=LD_RUN_PATH
+    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
+      _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+    else
+      _LT_TAGVAR(whole_archive_flag_spec, $1)=
+    fi
+    supports_anon_versioning=no
+    case `$LD -v 2>&1` in
+      *GNU\ gold*) supports_anon_versioning=yes ;;
+      *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
+      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+      *\ 2.11.*) ;; # other 2.11 versions
+      *) supports_anon_versioning=yes ;;
+    esac
+
+    # See if GNU ld supports shared libraries.
+    case $host_os in
+    aix[[3-9]]*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+	_LT_TAGVAR(ld_shlibs, $1)=no
+	cat <<_LT_EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+_LT_EOF
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+            _LT_TAGVAR(archive_expsym_cmds, $1)=''
+        ;;
+      m68k)
+            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+            _LT_TAGVAR(hardcode_minus_L, $1)=yes
+        ;;
+      esac
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+	# Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+	# support --undefined.  This deserves some investigation.  FIXME
+	_LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      else
+	_LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32* | cegcc*)
+      # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+      # as there is no search path for DLLs.
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+      _LT_TAGVAR(always_export_symbols, $1)=no
+      _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+      _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
+
+      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+	# If the export-symbols file already is a .def file (1st line
+	# is EXPORTS), use it as is; otherwise, prepend...
+	_LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	  cp $export_symbols $output_objdir/$soname.def;
+	else
+	  echo EXPORTS > $output_objdir/$soname.def;
+	  cat $export_symbols >> $output_objdir/$soname.def;
+	fi~
+	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+      else
+	_LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    interix[[3-9]]*)
+      _LT_TAGVAR(hardcode_direct, $1)=no
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+      # Instead, shared libraries are loaded at an image base (0x10000000 by
+      # default) and relocated if they conflict, which is a slow very memory
+      # consuming and fragmenting process.  To avoid this, we pick a random,
+      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      ;;
+
+    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
+      tmp_diet=no
+      if test "$host_os" = linux-dietlibc; then
+	case $cc_basename in
+	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
+	esac
+      fi
+      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
+	 && test "$tmp_diet" = no
+      then
+	tmp_addflag=
+	tmp_sharedflag='-shared'
+	case $cc_basename,$host_cpu in
+        pgcc*)				# Portland Group C compiler
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_addflag=' $pic_flag'
+	  ;;
+	pgf77* | pgf90* | pgf95*)	# Portland Group f77 and f90 compilers
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_addflag=' $pic_flag -Mnomain' ;;
+	ecc*,ia64* | icc*,ia64*)	# Intel C compiler on ia64
+	  tmp_addflag=' -i_dynamic' ;;
+	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
+	  tmp_addflag=' -i_dynamic -nofor_main' ;;
+	ifc* | ifort*)			# Intel Fortran compiler
+	  tmp_addflag=' -nofor_main' ;;
+	lf95*)				# Lahey Fortran 8.1
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)=
+	  tmp_sharedflag='--shared' ;;
+	xl[[cC]]*)			# IBM XL C 8.0 on PPC (deal with xlf below)
+	  tmp_sharedflag='-qmkshrobj'
+	  tmp_addflag= ;;
+	esac
+	case `$CC -V 2>&1 | sed 5q` in
+	*Sun\ C*)			# Sun C 5.9
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+	  _LT_TAGVAR(compiler_needs_object, $1)=yes
+	  tmp_sharedflag='-G' ;;
+	*Sun\ F*)			# Sun Fortran 8.3
+	  tmp_sharedflag='-G' ;;
+	esac
+	_LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+        if test "x$supports_anon_versioning" = xyes; then
+          _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+	    echo "local: *; };" >> $output_objdir/$libname.ver~
+	    $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+        fi
+
+	case $cc_basename in
+	xlf*)
+	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+	  _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
+	  _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
+	  if test "x$supports_anon_versioning" = xyes; then
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+	      cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+	      echo "local: *; };" >> $output_objdir/$libname.ver~
+	      $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+	  fi
+	  ;;
+	esac
+      else
+        _LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    netbsd* | netbsdelf*-gnu)
+      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+	_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+	wlarc=
+      else
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
+      ;;
+
+    solaris*)
+      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
+	_LT_TAGVAR(ld_shlibs, $1)=no
+	cat <<_LT_EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	_LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+      case `$LD -v 2>&1` in
+        *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
+	_LT_TAGVAR(ld_shlibs, $1)=no
+	cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+	;;
+	*)
+	  # For security reasons, it is highly recommended that you always
+	  # use absolute paths for naming shared libraries, and exclude the
+	  # DT_RUNPATH tag from executables and libraries.  But doing so
+	  # requires that you compile everything twice, which is a pain.
+	  if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	  else
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	  fi
+	;;
+      esac
+      ;;
+
+    sunos4*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    *)
+      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	_LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+    esac
+
+    if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then
+      runpath_var=
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)=
+      _LT_TAGVAR(whole_archive_flag_spec, $1)=
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+      _LT_TAGVAR(always_export_symbols, $1)=yes
+      _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      _LT_TAGVAR(hardcode_minus_L, $1)=yes
+      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+	# Neither direct hardcoding nor static linking is supported with a
+	# broken collect2.
+	_LT_TAGVAR(hardcode_direct, $1)=unsupported
+      fi
+      ;;
+
+    aix[[4-9]]*)
+      if test "$host_cpu" = ia64; then
+	# On IA64, the linker does run time linking by default, so we don't
+	# have to do anything special.
+	aix_use_runtimelinking=no
+	exp_sym_flag='-Bexport'
+	no_entry_flag=""
+      else
+	# If we're using GNU nm, then we don't want the "-C" option.
+	# -C means demangle to AIX nm, but means don't demangle with GNU nm
+	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+	  _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+	else
+	  _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+	fi
+	aix_use_runtimelinking=no
+
+	# Test if we are trying to use run time linking or normal
+	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
+	# need to do runtime linking.
+	case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
+	  for ld_flag in $LDFLAGS; do
+	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+	    aix_use_runtimelinking=yes
+	    break
+	  fi
+	  done
+	  ;;
+	esac
+
+	exp_sym_flag='-bexport'
+	no_entry_flag='-bnoentry'
+      fi
+
+      # When large executables or shared objects are built, AIX ld can
+      # have problems creating the table of contents.  If linking a library
+      # or program results in "error TOC overflow" add -mminimal-toc to
+      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+      _LT_TAGVAR(archive_cmds, $1)=''
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+      _LT_TAGVAR(link_all_deplibs, $1)=yes
+      _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
+
+      if test "$GCC" = yes; then
+	case $host_os in aix4.[[012]]|aix4.[[012]].*)
+	# We only want to do this on AIX 4.2 and lower, the check
+	# below for broken collect2 doesn't work under 4.3+
+	  collect2name=`${CC} -print-prog-name=collect2`
+	  if test -f "$collect2name" &&
+	   strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+	  then
+	  # We have reworked collect2
+	  :
+	  else
+	  # We have old collect2
+	  _LT_TAGVAR(hardcode_direct, $1)=unsupported
+	  # It fails to find uninstalled libraries when the uninstalled
+	  # path is not listed in the libpath.  Setting hardcode_minus_L
+	  # to unsupported forces relinking
+	  _LT_TAGVAR(hardcode_minus_L, $1)=yes
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+	  _LT_TAGVAR(hardcode_libdir_separator, $1)=
+	  fi
+	  ;;
+	esac
+	shared_flag='-shared'
+	if test "$aix_use_runtimelinking" = yes; then
+	  shared_flag="$shared_flag "'${wl}-G'
+	fi
+	_LT_TAGVAR(link_all_deplibs, $1)=no
+      else
+	# not using gcc
+	if test "$host_cpu" = ia64; then
+	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+	# chokes on -Wl,-G. The following line is correct:
+	  shared_flag='-G'
+	else
+	  if test "$aix_use_runtimelinking" = yes; then
+	    shared_flag='${wl}-G'
+	  else
+	    shared_flag='${wl}-bM:SRE'
+	  fi
+	fi
+      fi
+
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      _LT_TAGVAR(always_export_symbols, $1)=yes
+      if test "$aix_use_runtimelinking" = yes; then
+	# Warning - without using the other runtime loading flags (-brtl),
+	# -berok will link without error, but may produce a broken library.
+	_LT_TAGVAR(allow_undefined_flag, $1)='-berok'
+        # Determine the default libpath from the value encoded in an
+        # empty executable.
+        _LT_SYS_MODULE_PATH_AIX
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+      else
+	if test "$host_cpu" = ia64; then
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+	  _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+	  _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+	else
+	 # Determine the default libpath from the value encoded in an
+	 # empty executable.
+	 _LT_SYS_MODULE_PATH_AIX
+	 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+	  # Warning - without using the other run time loading flags,
+	  # -berok will link without error, but may produce a broken library.
+	  _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+	  _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+	  # Exported symbols can be pulled into shared objects from archives
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+	  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+	  # This is similar to how AIX traditionally builds its shared libraries.
+	  _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+	fi
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+            _LT_TAGVAR(archive_expsym_cmds, $1)=''
+        ;;
+      m68k)
+            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+            _LT_TAGVAR(hardcode_minus_L, $1)=yes
+        ;;
+      esac
+      ;;
+
+    bsdi[[45]]*)
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
+      ;;
+
+    cygwin* | mingw* | pw32* | cegcc*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+      # Tell ltmain to make .lib files, not .a files.
+      libext=lib
+      # Tell ltmain to make .dll files, not .so files.
+      shrext_cmds=".dll"
+      # FIXME: Setting linknames here is a bad hack.
+      _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames='
+      # The linker will automatically build a .lib file if we build a DLL.
+      _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+      # FIXME: Should let the user specify the lib program.
+      _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
+      _LT_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`'
+      _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+      ;;
+
+    darwin* | rhapsody*)
+      _LT_DARWIN_LINKER_FEATURES($1)
+      ;;
+
+    dgux*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    freebsd1*)
+      _LT_TAGVAR(ld_shlibs, $1)=no
+      ;;
+
+    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+    # support.  Future versions do this automatically, but an explicit c++rt0.o
+    # does not break anything, and helps significantly (at the cost of a little
+    # extra space).
+    freebsd2.2*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | dragonfly*)
+      _LT_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    hpux9*)
+      if test "$GCC" = yes; then
+	_LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+	_LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      fi
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      _LT_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+      ;;
+
+    hpux10*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      if test "$with_gnu_ld" = no; then
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+	_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
+	_LT_TAGVAR(hardcode_libdir_separator, $1)=:
+	_LT_TAGVAR(hardcode_direct, $1)=yes
+	_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+	# hardcode_minus_L: Not really in the search PATH,
+	# but as the default location of the library.
+	_LT_TAGVAR(hardcode_minus_L, $1)=yes
+      fi
+      ;;
+
+    hpux11*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+	case $host_cpu in
+	hppa*64*)
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	esac
+      else
+	case $host_cpu in
+	hppa*64*)
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	esac
+      fi
+      if test "$with_gnu_ld" = no; then
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+	_LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	case $host_cpu in
+	hppa*64*|ia64*)
+	  _LT_TAGVAR(hardcode_direct, $1)=no
+	  _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+	  ;;
+	*)
+	  _LT_TAGVAR(hardcode_direct, $1)=yes
+	  _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  _LT_TAGVAR(hardcode_minus_L, $1)=yes
+	  ;;
+	esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test "$GCC" = yes; then
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	# Try to use the -exported_symbol ld option, if it does not
+	# work, assume that -exports_file does not work either and
+	# implicitly export all symbols.
+        save_LDFLAGS="$LDFLAGS"
+        LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+        AC_LINK_IFELSE(int foo(void) {},
+          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+        )
+        LDFLAGS="$save_LDFLAGS"
+      else
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+      fi
+      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+      _LT_TAGVAR(inherit_rpath, $1)=yes
+      _LT_TAGVAR(link_all_deplibs, $1)=yes
+      ;;
+
+    netbsd* | netbsdelf*-gnu)
+      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+	_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+	_LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    newsos6)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    *nto* | *qnx*)
+      ;;
+
+    openbsd*)
+      if test -f /usr/libexec/ld.so; then
+	_LT_TAGVAR(hardcode_direct, $1)=yes
+	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+	_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+	else
+	  case $host_os in
+	   openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
+	     _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+	     _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+	     ;;
+	   *)
+	     _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	     _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	     ;;
+	  esac
+	fi
+      else
+	_LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    os2*)
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+      _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      ;;
+
+    osf3*)
+      if test "$GCC" = yes; then
+	_LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+      fi
+      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+      ;;
+
+    osf4* | osf5*)	# as osf3* with the addition of -msym flag
+      if test "$GCC" = yes; then
+	_LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      else
+	_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
+	$CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
+
+	# Both c and cxx compiler support -rpath directly
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+      fi
+      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+      ;;
+
+    solaris*)
+      _LT_TAGVAR(no_undefined_flag, $1)=' -z defs'
+      if test "$GCC" = yes; then
+	wlarc='${wl}'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+	  $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+      else
+	case `$CC -V 2>&1` in
+	*"Compilers 5.0"*)
+	  wlarc=''
+	  _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+	  $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
+	  ;;
+	*)
+	  wlarc='${wl}'
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
+	  _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+	  $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+	  ;;
+	esac
+      fi
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      case $host_os in
+      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+      *)
+	# The compiler driver will combine and reorder linker options,
+	# but understands `-z linker_flag'.  GCC discards it without `$wl',
+	# but is careful enough not to reorder.
+	# Supported since Solaris 2.6 (maybe 2.5.1?)
+	if test "$GCC" = yes; then
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+	else
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
+	fi
+	;;
+      esac
+      _LT_TAGVAR(link_all_deplibs, $1)=yes
+      ;;
+
+    sunos4*)
+      if test "x$host_vendor" = xsequent; then
+	# Use $CC to link under sequent, because it throws in some extra .o
+	# files that make .init and .fini sections work.
+	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	_LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+	sni)
+	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true???
+	;;
+	siemens)
+	  ## LD is ld it makes a PLAMLIB
+	  ## CC just makes a GrossModule.
+	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+	  _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
+	  _LT_TAGVAR(hardcode_direct, $1)=no
+        ;;
+	motorola)
+	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
+	;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    sysv4.3*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	_LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+	runpath_var=LD_RUN_PATH
+	hardcode_runpath_var=yes
+	_LT_TAGVAR(ld_shlibs, $1)=yes
+      fi
+      ;;
+
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
+      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6*)
+      # Note: We can NOT use -z defs as we might desire, because we do not
+      # link with -lc, and that would cause any symbols used from libc to
+      # always be unresolved, which means just about no library would
+      # ever link correctly.  If we're not using GNU ld we use -z text
+      # though, which does catch some bad symbols but isn't as heavy-handed
+      # as -z defs.
+      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+      _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+      _LT_TAGVAR(link_all_deplibs, $1)=yes
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    uts4*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    *)
+      _LT_TAGVAR(ld_shlibs, $1)=no
+      ;;
+    esac
+
+    if test x$host_vendor = xsni; then
+      case $host in
+      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym'
+	;;
+      esac
+    fi
+  fi
+])
+AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
+test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld
+
+_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl
+_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl
+_LT_DECL([], [extract_expsyms_cmds], [2],
+    [The commands to extract the exported symbol list from a shared archive])
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in
+x|xyes)
+  # Assume -lc should be added
+  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $_LT_TAGVAR(archive_cmds, $1) in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      AC_MSG_CHECKING([whether -lc should be explicitly linked in])
+      $RM conftest*
+      echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+      if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
+        soname=conftest
+        lib=conftest
+        libobjs=conftest.$ac_objext
+        deplibs=
+        wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1)
+	pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1)
+        compiler_flags=-v
+        linker_flags=-v
+        verstring=
+        output_objdir=.
+        libname=conftest
+        lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1)
+        _LT_TAGVAR(allow_undefined_flag, $1)=
+        if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1)
+        then
+	  _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+        else
+	  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+        fi
+        _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
+      else
+        cat conftest.err 1>&5
+      fi
+      $RM conftest*
+      AC_MSG_RESULT([$_LT_TAGVAR(archive_cmds_need_lc, $1)])
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0],
+    [Whether or not to add -lc for building shared libraries])
+_LT_TAGDECL([allow_libtool_libs_with_static_runtimes],
+    [enable_shared_with_static_runtimes], [0],
+    [Whether or not to disallow shared libs when runtime libs are static])
+_LT_TAGDECL([], [export_dynamic_flag_spec], [1],
+    [Compiler flag to allow reflexive dlopens])
+_LT_TAGDECL([], [whole_archive_flag_spec], [1],
+    [Compiler flag to generate shared objects directly from archives])
+_LT_TAGDECL([], [compiler_needs_object], [1],
+    [Whether the compiler copes with passing no objects directly])
+_LT_TAGDECL([], [old_archive_from_new_cmds], [2],
+    [Create an old-style archive from a shared archive])
+_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2],
+    [Create a temporary old-style archive to link instead of a shared archive])
+_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive])
+_LT_TAGDECL([], [archive_expsym_cmds], [2])
+_LT_TAGDECL([], [module_cmds], [2],
+    [Commands used to build a loadable module if different from building
+    a shared archive.])
+_LT_TAGDECL([], [module_expsym_cmds], [2])
+_LT_TAGDECL([], [with_gnu_ld], [1],
+    [Whether we are building with GNU ld or not])
+_LT_TAGDECL([], [allow_undefined_flag], [1],
+    [Flag that allows shared libraries with undefined symbols to be built])
+_LT_TAGDECL([], [no_undefined_flag], [1],
+    [Flag that enforces no undefined symbols])
+_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1],
+    [Flag to hardcode $libdir into a binary during linking.
+    This must work even if $libdir does not exist])
+_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1],
+    [[If ld is used when linking, flag to hardcode $libdir into a binary
+    during linking.  This must work even if $libdir does not exist]])
+_LT_TAGDECL([], [hardcode_libdir_separator], [1],
+    [Whether we need a single "-rpath" flag with a separated argument])
+_LT_TAGDECL([], [hardcode_direct], [0],
+    [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
+    DIR into the resulting binary])
+_LT_TAGDECL([], [hardcode_direct_absolute], [0],
+    [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
+    DIR into the resulting binary and the resulting library dependency is
+    "absolute", i.e impossible to change by setting ${shlibpath_var} if the
+    library is relocated])
+_LT_TAGDECL([], [hardcode_minus_L], [0],
+    [Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+    into the resulting binary])
+_LT_TAGDECL([], [hardcode_shlibpath_var], [0],
+    [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+    into the resulting binary])
+_LT_TAGDECL([], [hardcode_automatic], [0],
+    [Set to "yes" if building a shared library automatically hardcodes DIR
+    into the library and all subsequent libraries and executables linked
+    against it])
+_LT_TAGDECL([], [inherit_rpath], [0],
+    [Set to yes if linker adds runtime paths of dependent libraries
+    to runtime path list])
+_LT_TAGDECL([], [link_all_deplibs], [0],
+    [Whether libtool must link a program against all its dependency libraries])
+_LT_TAGDECL([], [fix_srcfile_path], [1],
+    [Fix the shell variable $srcfile for the compiler])
+_LT_TAGDECL([], [always_export_symbols], [0],
+    [Set to "yes" if exported symbols are required])
+_LT_TAGDECL([], [export_symbols_cmds], [2],
+    [The commands to list exported symbols])
+_LT_TAGDECL([], [exclude_expsyms], [1],
+    [Symbols that should not be listed in the preloaded symbols])
+_LT_TAGDECL([], [include_expsyms], [1],
+    [Symbols that must always be exported])
+_LT_TAGDECL([], [prelink_cmds], [2],
+    [Commands necessary for linking programs (against libraries) with templates])
+_LT_TAGDECL([], [file_list_spec], [1],
+    [Specify filename containing input files])
+dnl FIXME: Not yet implemented
+dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1],
+dnl    [Compiler flag to generate thread safe objects])
+])# _LT_LINKER_SHLIBS
+
+
+# _LT_LANG_C_CONFIG([TAG])
+# ------------------------
+# Ensure that the configuration variables for a C compiler are suitably
+# defined.  These variables are subsequently used by _LT_CONFIG to write
+# the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_C_CONFIG],
+[m4_require([_LT_DECL_EGREP])dnl
+lt_save_CC="$CC"
+AC_LANG_PUSH(C)
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}'
+
+_LT_TAG_COMPILER
+# Save the default compiler, since it gets overwritten when the other
+# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
+compiler_DEFAULT=$CC
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+  _LT_COMPILER_NO_RTTI($1)
+  _LT_COMPILER_PIC($1)
+  _LT_COMPILER_C_O($1)
+  _LT_COMPILER_FILE_LOCKS($1)
+  _LT_LINKER_SHLIBS($1)
+  _LT_SYS_DYNAMIC_LINKER($1)
+  _LT_LINKER_HARDCODE_LIBPATH($1)
+  LT_SYS_DLOPEN_SELF
+  _LT_CMD_STRIPLIB
+
+  # Report which library types will actually be built
+  AC_MSG_CHECKING([if libtool supports shared libraries])
+  AC_MSG_RESULT([$can_build_shared])
+
+  AC_MSG_CHECKING([whether to build shared libraries])
+  test "$can_build_shared" = "no" && enable_shared=no
+
+  # On AIX, shared libraries and static libraries use the same namespace, and
+  # are all built from PIC.
+  case $host_os in
+  aix3*)
+    test "$enable_shared" = yes && enable_static=no
+    if test -n "$RANLIB"; then
+      archive_cmds="$archive_cmds~\$RANLIB \$lib"
+      postinstall_cmds='$RANLIB $lib'
+    fi
+    ;;
+
+  aix[[4-9]]*)
+    if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+      test "$enable_shared" = yes && enable_static=no
+    fi
+    ;;
+  esac
+  AC_MSG_RESULT([$enable_shared])
+
+  AC_MSG_CHECKING([whether to build static libraries])
+  # Make sure either enable_shared or enable_static is yes.
+  test "$enable_shared" = yes || enable_static=yes
+  AC_MSG_RESULT([$enable_static])
+
+  _LT_CONFIG($1)
+fi
+AC_LANG_POP
+CC="$lt_save_CC"
+])# _LT_LANG_C_CONFIG
+
+
+# _LT_PROG_CXX
+# ------------
+# Since AC_PROG_CXX is broken, in that it returns g++ if there is no c++
+# compiler, we have our own version here.
+m4_defun([_LT_PROG_CXX],
+[
+pushdef([AC_MSG_ERROR], [_lt_caught_CXX_error=yes])
+AC_PROG_CXX
+if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+    (test "X$CXX" != "Xg++"))) ; then
+  AC_PROG_CXXCPP
+else
+  _lt_caught_CXX_error=yes
+fi
+popdef([AC_MSG_ERROR])
+])# _LT_PROG_CXX
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([_LT_PROG_CXX], [])
+
+
+# _LT_LANG_CXX_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for a C++ compiler are suitably
+# defined.  These variables are subsequently used by _LT_CONFIG to write
+# the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_CXX_CONFIG],
+[AC_REQUIRE([_LT_PROG_CXX])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_EGREP])dnl
+
+AC_LANG_PUSH(C++)
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_TAGVAR(allow_undefined_flag, $1)=
+_LT_TAGVAR(always_export_symbols, $1)=no
+_LT_TAGVAR(archive_expsym_cmds, $1)=
+_LT_TAGVAR(compiler_needs_object, $1)=no
+_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_TAGVAR(hardcode_minus_L, $1)=no
+_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+_LT_TAGVAR(hardcode_automatic, $1)=no
+_LT_TAGVAR(inherit_rpath, $1)=no
+_LT_TAGVAR(module_cmds, $1)=
+_LT_TAGVAR(module_expsym_cmds, $1)=
+_LT_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(no_undefined_flag, $1)=
+_LT_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for C++ test sources.
+ac_ext=cpp
+
+# Object file extension for compiled C++ test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# No sense in running all these tests if we already determined that
+# the CXX compiler isn't working.  Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test "$_lt_caught_CXX_error" != yes; then
+  # Code to be used in simple compile tests
+  lt_simple_compile_test_code="int some_variable = 0;"
+
+  # Code to be used in simple link tests
+  lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }'
+
+  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+  _LT_TAG_COMPILER
+
+  # save warnings/boilerplate of simple test code
+  _LT_COMPILER_BOILERPLATE
+  _LT_LINKER_BOILERPLATE
+
+  # Allow CC to be a program name with arguments.
+  lt_save_CC=$CC
+  lt_save_LD=$LD
+  lt_save_GCC=$GCC
+  GCC=$GXX
+  lt_save_with_gnu_ld=$with_gnu_ld
+  lt_save_path_LD=$lt_cv_path_LD
+  if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+    lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+  else
+    $as_unset lt_cv_prog_gnu_ld
+  fi
+  if test -n "${lt_cv_path_LDCXX+set}"; then
+    lt_cv_path_LD=$lt_cv_path_LDCXX
+  else
+    $as_unset lt_cv_path_LD
+  fi
+  test -z "${LDCXX+set}" || LD=$LDCXX
+  CC=${CXX-"c++"}
+  compiler=$CC
+  _LT_TAGVAR(compiler, $1)=$CC
+  _LT_CC_BASENAME([$compiler])
+
+  if test -n "$compiler"; then
+    # We don't want -fno-exception when compiling C++ code, so set the
+    # no_builtin_flag separately
+    if test "$GXX" = yes; then
+      _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+    else
+      _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+    fi
+
+    if test "$GXX" = yes; then
+      # Set up default GNU C++ configuration
+
+      LT_PATH_LD
+
+      # Check if GNU C++ uses GNU ld as the underlying linker, since the
+      # archiving commands below assume that GNU ld is being used.
+      if test "$with_gnu_ld" = yes; then
+        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+
+        # If archive_cmds runs LD, not CC, wlarc should be empty
+        # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
+        #     investigate it a little bit more. (MM)
+        wlarc='${wl}'
+
+        # ancient GNU ld didn't support --whole-archive et. al.
+        if eval "`$CC -print-prog-name=ld` --help 2>&1" |
+	  $GREP 'no-whole-archive' > /dev/null; then
+          _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+        else
+          _LT_TAGVAR(whole_archive_flag_spec, $1)=
+        fi
+      else
+        with_gnu_ld=no
+        wlarc=
+
+        # A generic and very simple default shared library creation
+        # command for GNU C++ for the case where it uses the native
+        # linker, instead of GNU ld.  If possible, this setting should
+        # overridden to take advantage of the native linker features on
+        # the platform it is being used on.
+        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+      fi
+
+      # Commands to make compiler produce verbose output that lists
+      # what "hidden" libraries, object files and flags are used when
+      # linking a shared library.
+      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
+
+    else
+      GXX=no
+      with_gnu_ld=no
+      wlarc=
+    fi
+
+    # PORTME: fill in a description of your system's C++ link characteristics
+    AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+    _LT_TAGVAR(ld_shlibs, $1)=yes
+    case $host_os in
+      aix3*)
+        # FIXME: insert proper C++ library support
+        _LT_TAGVAR(ld_shlibs, $1)=no
+        ;;
+      aix[[4-9]]*)
+        if test "$host_cpu" = ia64; then
+          # On IA64, the linker does run time linking by default, so we don't
+          # have to do anything special.
+          aix_use_runtimelinking=no
+          exp_sym_flag='-Bexport'
+          no_entry_flag=""
+        else
+          aix_use_runtimelinking=no
+
+          # Test if we are trying to use run time linking or normal
+          # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+          # need to do runtime linking.
+          case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
+	    for ld_flag in $LDFLAGS; do
+	      case $ld_flag in
+	      *-brtl*)
+	        aix_use_runtimelinking=yes
+	        break
+	        ;;
+	      esac
+	    done
+	    ;;
+          esac
+
+          exp_sym_flag='-bexport'
+          no_entry_flag='-bnoentry'
+        fi
+
+        # When large executables or shared objects are built, AIX ld can
+        # have problems creating the table of contents.  If linking a library
+        # or program results in "error TOC overflow" add -mminimal-toc to
+        # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+        # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+        _LT_TAGVAR(archive_cmds, $1)=''
+        _LT_TAGVAR(hardcode_direct, $1)=yes
+        _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+        _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+        _LT_TAGVAR(link_all_deplibs, $1)=yes
+        _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
+
+        if test "$GXX" = yes; then
+          case $host_os in aix4.[[012]]|aix4.[[012]].*)
+          # We only want to do this on AIX 4.2 and lower, the check
+          # below for broken collect2 doesn't work under 4.3+
+	  collect2name=`${CC} -print-prog-name=collect2`
+	  if test -f "$collect2name" &&
+	     strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+	  then
+	    # We have reworked collect2
+	    :
+	  else
+	    # We have old collect2
+	    _LT_TAGVAR(hardcode_direct, $1)=unsupported
+	    # It fails to find uninstalled libraries when the uninstalled
+	    # path is not listed in the libpath.  Setting hardcode_minus_L
+	    # to unsupported forces relinking
+	    _LT_TAGVAR(hardcode_minus_L, $1)=yes
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+	    _LT_TAGVAR(hardcode_libdir_separator, $1)=
+	  fi
+          esac
+          shared_flag='-shared'
+	  if test "$aix_use_runtimelinking" = yes; then
+	    shared_flag="$shared_flag "'${wl}-G'
+	  fi
+        else
+          # not using gcc
+          if test "$host_cpu" = ia64; then
+	  # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+	  # chokes on -Wl,-G. The following line is correct:
+	  shared_flag='-G'
+          else
+	    if test "$aix_use_runtimelinking" = yes; then
+	      shared_flag='${wl}-G'
+	    else
+	      shared_flag='${wl}-bM:SRE'
+	    fi
+          fi
+        fi
+
+        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
+        # It seems that -bexpall does not export symbols beginning with
+        # underscore (_), so it is better to generate a list of symbols to
+	# export.
+        _LT_TAGVAR(always_export_symbols, $1)=yes
+        if test "$aix_use_runtimelinking" = yes; then
+          # Warning - without using the other runtime loading flags (-brtl),
+          # -berok will link without error, but may produce a broken library.
+          _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
+          # Determine the default libpath from the value encoded in an empty
+          # executable.
+          _LT_SYS_MODULE_PATH_AIX
+          _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+        else
+          if test "$host_cpu" = ia64; then
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+	    _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+	    _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+          else
+	    # Determine the default libpath from the value encoded in an
+	    # empty executable.
+	    _LT_SYS_MODULE_PATH_AIX
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+	    # Warning - without using the other run time loading flags,
+	    # -berok will link without error, but may produce a broken library.
+	    _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+	    _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+	    # Exported symbols can be pulled into shared objects from archives
+	    _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+	    _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+	    # This is similar to how AIX traditionally builds its shared
+	    # libraries.
+	    _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+          fi
+        fi
+        ;;
+
+      beos*)
+	if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	  _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+	  # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+	  # support --undefined.  This deserves some investigation.  FIXME
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	else
+	  _LT_TAGVAR(ld_shlibs, $1)=no
+	fi
+	;;
+
+      chorus*)
+        case $cc_basename in
+          *)
+	  # FIXME: insert proper C++ library support
+	  _LT_TAGVAR(ld_shlibs, $1)=no
+	  ;;
+        esac
+        ;;
+
+      cygwin* | mingw* | pw32* | cegcc*)
+        # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+        # as there is no search path for DLLs.
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+        _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+        _LT_TAGVAR(always_export_symbols, $1)=no
+        _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+
+        if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+          _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+          # If the export-symbols file already is a .def file (1st line
+          # is EXPORTS), use it as is; otherwise, prepend...
+          _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	    cp $export_symbols $output_objdir/$soname.def;
+          else
+	    echo EXPORTS > $output_objdir/$soname.def;
+	    cat $export_symbols >> $output_objdir/$soname.def;
+          fi~
+          $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+        else
+          _LT_TAGVAR(ld_shlibs, $1)=no
+        fi
+        ;;
+      darwin* | rhapsody*)
+        _LT_DARWIN_LINKER_FEATURES($1)
+	;;
+
+      dgux*)
+        case $cc_basename in
+          ec++*)
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+          ghcx*)
+	    # Green Hills C++ Compiler
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+          *)
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+        esac
+        ;;
+
+      freebsd[[12]]*)
+        # C++ shared libraries reported to be fairly broken before
+	# switch to ELF
+        _LT_TAGVAR(ld_shlibs, $1)=no
+        ;;
+
+      freebsd-elf*)
+        _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+        ;;
+
+      freebsd* | dragonfly*)
+        # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+        # conventions
+        _LT_TAGVAR(ld_shlibs, $1)=yes
+        ;;
+
+      gnu*)
+        ;;
+
+      hpux9*)
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+        _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+        _LT_TAGVAR(hardcode_direct, $1)=yes
+        _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+				             # but as the default
+				             # location of the library.
+
+        case $cc_basename in
+          CC*)
+            # FIXME: insert proper C++ library support
+            _LT_TAGVAR(ld_shlibs, $1)=no
+            ;;
+          aCC*)
+            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+            # Commands to make compiler produce verbose output that lists
+            # what "hidden" libraries, object files and flags are used when
+            # linking a shared library.
+            #
+            # There doesn't appear to be a way to prevent this compiler from
+            # explicitly linking system object files so we need to strip them
+            # from the output so that they don't get included in the library
+            # dependencies.
+            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+            ;;
+          *)
+            if test "$GXX" = yes; then
+              _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+            else
+              # FIXME: insert proper C++ library support
+              _LT_TAGVAR(ld_shlibs, $1)=no
+            fi
+            ;;
+        esac
+        ;;
+
+      hpux10*|hpux11*)
+        if test $with_gnu_ld = no; then
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+	  _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+          case $host_cpu in
+            hppa*64*|ia64*)
+              ;;
+            *)
+	      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+              ;;
+          esac
+        fi
+        case $host_cpu in
+          hppa*64*|ia64*)
+            _LT_TAGVAR(hardcode_direct, $1)=no
+            _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+            ;;
+          *)
+            _LT_TAGVAR(hardcode_direct, $1)=yes
+            _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+            _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+					         # but as the default
+					         # location of the library.
+            ;;
+        esac
+
+        case $cc_basename in
+          CC*)
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+          aCC*)
+	    case $host_cpu in
+	      hppa*64*)
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	        ;;
+	      ia64*)
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	        ;;
+	      *)
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	        ;;
+	    esac
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    #
+	    # There doesn't appear to be a way to prevent this compiler from
+	    # explicitly linking system object files so we need to strip them
+	    # from the output so that they don't get included in the library
+	    # dependencies.
+	    output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+	    ;;
+          *)
+	    if test "$GXX" = yes; then
+	      if test $with_gnu_ld = no; then
+	        case $host_cpu in
+	          hppa*64*)
+	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	            ;;
+	          ia64*)
+	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	            ;;
+	          *)
+	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	            ;;
+	        esac
+	      fi
+	    else
+	      # FIXME: insert proper C++ library support
+	      _LT_TAGVAR(ld_shlibs, $1)=no
+	    fi
+	    ;;
+        esac
+        ;;
+
+      interix[[3-9]]*)
+	_LT_TAGVAR(hardcode_direct, $1)=no
+	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+	# Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+	# Instead, shared libraries are loaded at an image base (0x10000000 by
+	# default) and relocated if they conflict, which is a slow very memory
+	# consuming and fragmenting process.  To avoid this, we pick a random,
+	# 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+	# time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+	;;
+      irix5* | irix6*)
+        case $cc_basename in
+          CC*)
+	    # SGI C++
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+
+	    # Archives containing C++ object files must be created using
+	    # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
+	    # necessary to make sure instantiated templates are included
+	    # in the archive.
+	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
+	    ;;
+          *)
+	    if test "$GXX" = yes; then
+	      if test "$with_gnu_ld" = no; then
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	      else
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib'
+	      fi
+	    fi
+	    _LT_TAGVAR(link_all_deplibs, $1)=yes
+	    ;;
+        esac
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+        _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+        _LT_TAGVAR(inherit_rpath, $1)=yes
+        ;;
+
+      linux* | k*bsd*-gnu | kopensolaris*-gnu)
+        case $cc_basename in
+          KCC*)
+	    # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	    # KCC will only create a shared library if the output file
+	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
+	    # to its proper name (with version) after linking.
+	    _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    #
+	    # There doesn't appear to be a way to prevent this compiler from
+	    # explicitly linking system object files so we need to strip them
+	    # from the output so that they don't get included in the library
+	    # dependencies.
+	    output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+
+	    # Archives containing C++ object files must be created using
+	    # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+	    ;;
+	  icpc* | ecpc* )
+	    # Intel C++
+	    with_gnu_ld=yes
+	    # version 8.0 and above of icpc choke on multiply defined symbols
+	    # if we add $predep_objects and $postdep_objects, however 7.1 and
+	    # earlier do not add the objects themselves.
+	    case `$CC -V 2>&1` in
+	      *"Version 7."*)
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+		_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+		;;
+	      *)  # Version 8.0 or newer
+	        tmp_idyn=
+	        case $host_cpu in
+		  ia64*) tmp_idyn=' -i_dynamic';;
+		esac
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+		_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+		;;
+	    esac
+	    _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+	    _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+	    ;;
+          pgCC* | pgcpp*)
+            # Portland Group C++ compiler
+	    case `$CC -V` in
+	    *pgCC\ [[1-5]]* | *pgcpp\ [[1-5]]*)
+	      _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~
+		rm -rf $tpldir~
+		$CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
+		compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"'
+	      _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~
+		rm -rf $tpldir~
+		$CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
+		$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~
+		$RANLIB $oldlib'
+	      _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~
+		rm -rf $tpldir~
+		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+	      _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~
+		rm -rf $tpldir~
+		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+	      ;;
+	    *) # Version 6 will use weak symbols
+	      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+	      _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+	      ;;
+	    esac
+
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+	    _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+            ;;
+	  cxx*)
+	    # Compaq C++
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+
+	    runpath_var=LD_RUN_PATH
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+	    _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    #
+	    # There doesn't appear to be a way to prevent this compiler from
+	    # explicitly linking system object files so we need to strip them
+	    # from the output so that they don't get included in the library
+	    # dependencies.
+	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+	    ;;
+	  xl*)
+	    # IBM XL 8.0 on PPC, with GNU ld
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	    if test "x$supports_anon_versioning" = xyes; then
+	      _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+		cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+		echo "local: *; };" >> $output_objdir/$libname.ver~
+		$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+	    fi
+	    ;;
+	  *)
+	    case `$CC -V 2>&1 | sed 5q` in
+	    *Sun\ C*)
+	      # Sun C++ 5.9
+	      _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+	      _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	      _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
+	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+	      _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+	      _LT_TAGVAR(compiler_needs_object, $1)=yes
+
+	      # Not sure whether something based on
+	      # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
+	      # would be better.
+	      output_verbose_link_cmd='echo'
+
+	      # Archives containing C++ object files must be created using
+	      # "CC -xar", where "CC" is the Sun C++ compiler.  This is
+	      # necessary to make sure instantiated templates are included
+	      # in the archive.
+	      _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+	      ;;
+	    esac
+	    ;;
+	esac
+	;;
+
+      lynxos*)
+        # FIXME: insert proper C++ library support
+	_LT_TAGVAR(ld_shlibs, $1)=no
+	;;
+
+      m88k*)
+        # FIXME: insert proper C++ library support
+        _LT_TAGVAR(ld_shlibs, $1)=no
+	;;
+
+      mvs*)
+        case $cc_basename in
+          cxx*)
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+	  *)
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+	esac
+	;;
+
+      netbsd*)
+        if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+	  _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+	  wlarc=
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+	  _LT_TAGVAR(hardcode_direct, $1)=yes
+	  _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+	fi
+	# Workaround some broken pre-1.5 toolchains
+	output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+	;;
+
+      *nto* | *qnx*)
+        _LT_TAGVAR(ld_shlibs, $1)=yes
+	;;
+
+      openbsd2*)
+        # C++ shared libraries are fairly broken
+	_LT_TAGVAR(ld_shlibs, $1)=no
+	;;
+
+      openbsd*)
+	if test -f /usr/libexec/ld.so; then
+	  _LT_TAGVAR(hardcode_direct, $1)=yes
+	  _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+	  _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+	    _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+	  fi
+	  output_verbose_link_cmd=echo
+	else
+	  _LT_TAGVAR(ld_shlibs, $1)=no
+	fi
+	;;
+
+      osf3* | osf4* | osf5*)
+        case $cc_basename in
+          KCC*)
+	    # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	    # KCC will only create a shared library if the output file
+	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
+	    # to its proper name (with version) after linking.
+	    _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	    _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	    # Archives containing C++ object files must be created using
+	    # the KAI C++ compiler.
+	    case $host in
+	      osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;;
+	      *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;;
+	    esac
+	    ;;
+          RCC*)
+	    # Rational C++ 2.4.1
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+          cxx*)
+	    case $host in
+	      osf3*)
+	        _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+	        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+		;;
+	      *)
+	        _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+	        _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+	          echo "-hidden">> $lib.exp~
+	          $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp  `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~
+	          $RM $lib.exp'
+	        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+		;;
+	    esac
+
+	    _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    #
+	    # There doesn't appear to be a way to prevent this compiler from
+	    # explicitly linking system object files so we need to strip them
+	    # from the output so that they don't get included in the library
+	    # dependencies.
+	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+	    ;;
+	  *)
+	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	      _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+	      case $host in
+	        osf3*)
+	          _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+		  ;;
+	        *)
+	          _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+		  ;;
+	      esac
+
+	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+	      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	      # Commands to make compiler produce verbose output that lists
+	      # what "hidden" libraries, object files and flags are used when
+	      # linking a shared library.
+	      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
+
+	    else
+	      # FIXME: insert proper C++ library support
+	      _LT_TAGVAR(ld_shlibs, $1)=no
+	    fi
+	    ;;
+        esac
+        ;;
+
+      psos*)
+        # FIXME: insert proper C++ library support
+        _LT_TAGVAR(ld_shlibs, $1)=no
+        ;;
+
+      sunos4*)
+        case $cc_basename in
+          CC*)
+	    # Sun C++ 4.x
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+          lcc*)
+	    # Lucid
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+          *)
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+        esac
+        ;;
+
+      solaris*)
+        case $cc_basename in
+          CC*)
+	    # Sun C++ 4.2, 5.x and Centerline C++
+            _LT_TAGVAR(archive_cmds_need_lc,$1)=yes
+	    _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+	      $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+	    _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+	    case $host_os in
+	      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+	      *)
+		# The compiler driver will combine and reorder linker options,
+		# but understands `-z linker_flag'.
+	        # Supported since Solaris 2.6 (maybe 2.5.1?)
+		_LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
+	        ;;
+	    esac
+	    _LT_TAGVAR(link_all_deplibs, $1)=yes
+
+	    output_verbose_link_cmd='echo'
+
+	    # Archives containing C++ object files must be created using
+	    # "CC -xar", where "CC" is the Sun C++ compiler.  This is
+	    # necessary to make sure instantiated templates are included
+	    # in the archive.
+	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+	    ;;
+          gcx*)
+	    # Green Hills C++ Compiler
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+
+	    # The C++ compiler must be used to create the archive.
+	    _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+	    ;;
+          *)
+	    # GNU C++ compiler with Solaris linker
+	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	      _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
+	      if $CC --version | $GREP -v '^2\.7' > /dev/null; then
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	        _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+		  $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+	        # Commands to make compiler produce verbose output that lists
+	        # what "hidden" libraries, object files and flags are used when
+	        # linking a shared library.
+	        output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
+	      else
+	        # g++ 2.7 appears to require `-G' NOT `-shared' on this
+	        # platform.
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	        _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+		  $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+	        # Commands to make compiler produce verbose output that lists
+	        # what "hidden" libraries, object files and flags are used when
+	        # linking a shared library.
+	        output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
+	      fi
+
+	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
+	      case $host_os in
+		solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+		*)
+		  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+		  ;;
+	      esac
+	    fi
+	    ;;
+        esac
+        ;;
+
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
+      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      runpath_var='LD_RUN_PATH'
+
+      case $cc_basename in
+        CC*)
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+      esac
+      ;;
+
+      sysv5* | sco3.2v5* | sco5v6*)
+	# Note: We can NOT use -z defs as we might desire, because we do not
+	# link with -lc, and that would cause any symbols used from libc to
+	# always be unresolved, which means just about no library would
+	# ever link correctly.  If we're not using GNU ld we use -z text
+	# though, which does catch some bad symbols but isn't as heavy-handed
+	# as -z defs.
+	_LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+	_LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+	_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
+	_LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+	_LT_TAGVAR(link_all_deplibs, $1)=yes
+	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+	runpath_var='LD_RUN_PATH'
+
+	case $cc_basename in
+          CC*)
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    ;;
+	  *)
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    ;;
+	esac
+      ;;
+
+      tandem*)
+        case $cc_basename in
+          NCC*)
+	    # NonStop-UX NCC 3.20
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+          *)
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+        esac
+        ;;
+
+      vxworks*)
+        # FIXME: insert proper C++ library support
+        _LT_TAGVAR(ld_shlibs, $1)=no
+        ;;
+
+      *)
+        # FIXME: insert proper C++ library support
+        _LT_TAGVAR(ld_shlibs, $1)=no
+        ;;
+    esac
+
+    AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
+    test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+    _LT_TAGVAR(GCC, $1)="$GXX"
+    _LT_TAGVAR(LD, $1)="$LD"
+
+    ## CAVEAT EMPTOR:
+    ## There is no encapsulation within the following macros, do not change
+    ## the running order or otherwise move them around unless you know exactly
+    ## what you are doing...
+    _LT_SYS_HIDDEN_LIBDEPS($1)
+    _LT_COMPILER_PIC($1)
+    _LT_COMPILER_C_O($1)
+    _LT_COMPILER_FILE_LOCKS($1)
+    _LT_LINKER_SHLIBS($1)
+    _LT_SYS_DYNAMIC_LINKER($1)
+    _LT_LINKER_HARDCODE_LIBPATH($1)
+
+    _LT_CONFIG($1)
+  fi # test -n "$compiler"
+
+  CC=$lt_save_CC
+  LDCXX=$LD
+  LD=$lt_save_LD
+  GCC=$lt_save_GCC
+  with_gnu_ld=$lt_save_with_gnu_ld
+  lt_cv_path_LDCXX=$lt_cv_path_LD
+  lt_cv_path_LD=$lt_save_path_LD
+  lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+  lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+fi # test "$_lt_caught_CXX_error" != yes
+
+AC_LANG_POP
+])# _LT_LANG_CXX_CONFIG
+
+
+# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME])
+# ---------------------------------
+# Figure out "hidden" library dependencies from verbose
+# compiler output when linking a shared library.
+# Parse the compiler output and extract the necessary
+# objects, libraries and library flags.
+m4_defun([_LT_SYS_HIDDEN_LIBDEPS],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+# Dependencies to place before and after the object being linked:
+_LT_TAGVAR(predep_objects, $1)=
+_LT_TAGVAR(postdep_objects, $1)=
+_LT_TAGVAR(predeps, $1)=
+_LT_TAGVAR(postdeps, $1)=
+_LT_TAGVAR(compiler_lib_search_path, $1)=
+
+dnl we can't use the lt_simple_compile_test_code here,
+dnl because it contains code intended for an executable,
+dnl not a library.  It's possible we should let each
+dnl tag define a new lt_????_link_test_code variable,
+dnl but it's only used here...
+m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF
+int a;
+void foo (void) { a = 0; }
+_LT_EOF
+], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF
+class Foo
+{
+public:
+  Foo (void) { a = 0; }
+private:
+  int a;
+};
+_LT_EOF
+], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF
+      subroutine foo
+      implicit none
+      integer*4 a
+      a=0
+      return
+      end
+_LT_EOF
+], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF
+      subroutine foo
+      implicit none
+      integer a
+      a=0
+      return
+      end
+_LT_EOF
+], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF
+public class foo {
+  private int a;
+  public void bar (void) {
+    a = 0;
+  }
+};
+_LT_EOF
+])
+dnl Parse the compiler output and extract the necessary
+dnl objects, libraries and library flags.
+if AC_TRY_EVAL(ac_compile); then
+  # Parse the compiler output and extract the necessary
+  # objects, libraries and library flags.
+
+  # Sentinel used to keep track of whether or not we are before
+  # the conftest object file.
+  pre_test_object_deps_done=no
+
+  for p in `eval "$output_verbose_link_cmd"`; do
+    case $p in
+
+    -L* | -R* | -l*)
+       # Some compilers place space between "-{L,R}" and the path.
+       # Remove the space.
+       if test $p = "-L" ||
+          test $p = "-R"; then
+	 prev=$p
+	 continue
+       else
+	 prev=
+       fi
+
+       if test "$pre_test_object_deps_done" = no; then
+	 case $p in
+	 -L* | -R*)
+	   # Internal compiler library paths should come after those
+	   # provided the user.  The postdeps already come after the
+	   # user supplied libs so there is no need to process them.
+	   if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then
+	     _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
+	   else
+	     _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}"
+	   fi
+	   ;;
+	 # The "-l" case would never come before the object being
+	 # linked, so don't bother handling this case.
+	 esac
+       else
+	 if test -z "$_LT_TAGVAR(postdeps, $1)"; then
+	   _LT_TAGVAR(postdeps, $1)="${prev}${p}"
+	 else
+	   _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}"
+	 fi
+       fi
+       ;;
+
+    *.$objext)
+       # This assumes that the test object file only shows up
+       # once in the compiler output.
+       if test "$p" = "conftest.$objext"; then
+	 pre_test_object_deps_done=yes
+	 continue
+       fi
+
+       if test "$pre_test_object_deps_done" = no; then
+	 if test -z "$_LT_TAGVAR(predep_objects, $1)"; then
+	   _LT_TAGVAR(predep_objects, $1)="$p"
+	 else
+	   _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p"
+	 fi
+       else
+	 if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then
+	   _LT_TAGVAR(postdep_objects, $1)="$p"
+	 else
+	   _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p"
+	 fi
+       fi
+       ;;
+
+    *) ;; # Ignore the rest.
+
+    esac
+  done
+
+  # Clean up.
+  rm -f a.out a.exe
+else
+  echo "libtool.m4: error: problem compiling $1 test program"
+fi
+
+$RM -f confest.$objext
+
+# PORTME: override above test on systems where it is broken
+m4_if([$1], [CXX],
+[case $host_os in
+interix[[3-9]]*)
+  # Interix 3.5 installs completely hosed .la files for C++, so rather than
+  # hack all around it, let's just trust "g++" to DTRT.
+  _LT_TAGVAR(predep_objects,$1)=
+  _LT_TAGVAR(postdep_objects,$1)=
+  _LT_TAGVAR(postdeps,$1)=
+  ;;
+
+linux*)
+  case `$CC -V 2>&1 | sed 5q` in
+  *Sun\ C*)
+    # Sun C++ 5.9
+
+    # The more standards-conforming stlport4 library is
+    # incompatible with the Cstd library. Avoid specifying
+    # it if it's in CXXFLAGS. Ignore libCrun as
+    # -library=stlport4 depends on it.
+    case " $CXX $CXXFLAGS " in
+    *" -library=stlport4 "*)
+      solaris_use_stlport4=yes
+      ;;
+    esac
+
+    if test "$solaris_use_stlport4" != yes; then
+      _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
+    fi
+    ;;
+  esac
+  ;;
+
+solaris*)
+  case $cc_basename in
+  CC*)
+    # The more standards-conforming stlport4 library is
+    # incompatible with the Cstd library. Avoid specifying
+    # it if it's in CXXFLAGS. Ignore libCrun as
+    # -library=stlport4 depends on it.
+    case " $CXX $CXXFLAGS " in
+    *" -library=stlport4 "*)
+      solaris_use_stlport4=yes
+      ;;
+    esac
+
+    # Adding this requires a known-good setup of shared libraries for
+    # Sun compiler versions before 5.6, else PIC objects from an old
+    # archive will be linked into the output, leading to subtle bugs.
+    if test "$solaris_use_stlport4" != yes; then
+      _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
+    fi
+    ;;
+  esac
+  ;;
+esac
+])
+
+case " $_LT_TAGVAR(postdeps, $1) " in
+*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;;
+esac
+ _LT_TAGVAR(compiler_lib_search_dirs, $1)=
+if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then
+ _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
+fi
+_LT_TAGDECL([], [compiler_lib_search_dirs], [1],
+    [The directories searched by this compiler when creating a shared library])
+_LT_TAGDECL([], [predep_objects], [1],
+    [Dependencies to place before and after the objects being linked to
+    create a shared library])
+_LT_TAGDECL([], [postdep_objects], [1])
+_LT_TAGDECL([], [predeps], [1])
+_LT_TAGDECL([], [postdeps], [1])
+_LT_TAGDECL([], [compiler_lib_search_path], [1],
+    [The library search path used internally by the compiler when linking
+    a shared library])
+])# _LT_SYS_HIDDEN_LIBDEPS
+
+
+# _LT_PROG_F77
+# ------------
+# Since AC_PROG_F77 is broken, in that it returns the empty string
+# if there is no fortran compiler, we have our own version here.
+m4_defun([_LT_PROG_F77],
+[
+pushdef([AC_MSG_ERROR], [_lt_disable_F77=yes])
+AC_PROG_F77
+if test -z "$F77" || test "X$F77" = "Xno"; then
+  _lt_disable_F77=yes
+fi
+popdef([AC_MSG_ERROR])
+])# _LT_PROG_F77
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([_LT_PROG_F77], [])
+
+
+# _LT_LANG_F77_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for a Fortran 77 compiler are
+# suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_F77_CONFIG],
+[AC_REQUIRE([_LT_PROG_F77])dnl
+AC_LANG_PUSH(Fortran 77)
+
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_TAGVAR(allow_undefined_flag, $1)=
+_LT_TAGVAR(always_export_symbols, $1)=no
+_LT_TAGVAR(archive_expsym_cmds, $1)=
+_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_TAGVAR(hardcode_minus_L, $1)=no
+_LT_TAGVAR(hardcode_automatic, $1)=no
+_LT_TAGVAR(inherit_rpath, $1)=no
+_LT_TAGVAR(module_cmds, $1)=
+_LT_TAGVAR(module_expsym_cmds, $1)=
+_LT_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(no_undefined_flag, $1)=
+_LT_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for f77 test sources.
+ac_ext=f
+
+# Object file extension for compiled f77 test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# No sense in running all these tests if we already determined that
+# the F77 compiler isn't working.  Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test "$_lt_disable_F77" != yes; then
+  # Code to be used in simple compile tests
+  lt_simple_compile_test_code="\
+      subroutine t
+      return
+      end
+"
+
+  # Code to be used in simple link tests
+  lt_simple_link_test_code="\
+      program t
+      end
+"
+
+  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+  _LT_TAG_COMPILER
+
+  # save warnings/boilerplate of simple test code
+  _LT_COMPILER_BOILERPLATE
+  _LT_LINKER_BOILERPLATE
+
+  # Allow CC to be a program name with arguments.
+  lt_save_CC="$CC"
+  lt_save_GCC=$GCC
+  CC=${F77-"f77"}
+  compiler=$CC
+  _LT_TAGVAR(compiler, $1)=$CC
+  _LT_CC_BASENAME([$compiler])
+  GCC=$G77
+  if test -n "$compiler"; then
+    AC_MSG_CHECKING([if libtool supports shared libraries])
+    AC_MSG_RESULT([$can_build_shared])
+
+    AC_MSG_CHECKING([whether to build shared libraries])
+    test "$can_build_shared" = "no" && enable_shared=no
+
+    # On AIX, shared libraries and static libraries use the same namespace, and
+    # are all built from PIC.
+    case $host_os in
+      aix3*)
+        test "$enable_shared" = yes && enable_static=no
+        if test -n "$RANLIB"; then
+          archive_cmds="$archive_cmds~\$RANLIB \$lib"
+          postinstall_cmds='$RANLIB $lib'
+        fi
+        ;;
+      aix[[4-9]]*)
+	if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+	  test "$enable_shared" = yes && enable_static=no
+	fi
+        ;;
+    esac
+    AC_MSG_RESULT([$enable_shared])
+
+    AC_MSG_CHECKING([whether to build static libraries])
+    # Make sure either enable_shared or enable_static is yes.
+    test "$enable_shared" = yes || enable_static=yes
+    AC_MSG_RESULT([$enable_static])
+
+    _LT_TAGVAR(GCC, $1)="$G77"
+    _LT_TAGVAR(LD, $1)="$LD"
+
+    ## CAVEAT EMPTOR:
+    ## There is no encapsulation within the following macros, do not change
+    ## the running order or otherwise move them around unless you know exactly
+    ## what you are doing...
+    _LT_COMPILER_PIC($1)
+    _LT_COMPILER_C_O($1)
+    _LT_COMPILER_FILE_LOCKS($1)
+    _LT_LINKER_SHLIBS($1)
+    _LT_SYS_DYNAMIC_LINKER($1)
+    _LT_LINKER_HARDCODE_LIBPATH($1)
+
+    _LT_CONFIG($1)
+  fi # test -n "$compiler"
+
+  GCC=$lt_save_GCC
+  CC="$lt_save_CC"
+fi # test "$_lt_disable_F77" != yes
+
+AC_LANG_POP
+])# _LT_LANG_F77_CONFIG
+
+
+# _LT_PROG_FC
+# -----------
+# Since AC_PROG_FC is broken, in that it returns the empty string
+# if there is no fortran compiler, we have our own version here.
+m4_defun([_LT_PROG_FC],
+[
+pushdef([AC_MSG_ERROR], [_lt_disable_FC=yes])
+AC_PROG_FC
+if test -z "$FC" || test "X$FC" = "Xno"; then
+  _lt_disable_FC=yes
+fi
+popdef([AC_MSG_ERROR])
+])# _LT_PROG_FC
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([_LT_PROG_FC], [])
+
+
+# _LT_LANG_FC_CONFIG([TAG])
+# -------------------------
+# Ensure that the configuration variables for a Fortran compiler are
+# suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_FC_CONFIG],
+[AC_REQUIRE([_LT_PROG_FC])dnl
+AC_LANG_PUSH(Fortran)
+
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_TAGVAR(allow_undefined_flag, $1)=
+_LT_TAGVAR(always_export_symbols, $1)=no
+_LT_TAGVAR(archive_expsym_cmds, $1)=
+_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_TAGVAR(hardcode_minus_L, $1)=no
+_LT_TAGVAR(hardcode_automatic, $1)=no
+_LT_TAGVAR(inherit_rpath, $1)=no
+_LT_TAGVAR(module_cmds, $1)=
+_LT_TAGVAR(module_expsym_cmds, $1)=
+_LT_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(no_undefined_flag, $1)=
+_LT_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for fc test sources.
+ac_ext=${ac_fc_srcext-f}
+
+# Object file extension for compiled fc test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# No sense in running all these tests if we already determined that
+# the FC compiler isn't working.  Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test "$_lt_disable_FC" != yes; then
+  # Code to be used in simple compile tests
+  lt_simple_compile_test_code="\
+      subroutine t
+      return
+      end
+"
+
+  # Code to be used in simple link tests
+  lt_simple_link_test_code="\
+      program t
+      end
+"
+
+  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+  _LT_TAG_COMPILER
+
+  # save warnings/boilerplate of simple test code
+  _LT_COMPILER_BOILERPLATE
+  _LT_LINKER_BOILERPLATE
+
+  # Allow CC to be a program name with arguments.
+  lt_save_CC="$CC"
+  lt_save_GCC=$GCC
+  CC=${FC-"f95"}
+  compiler=$CC
+  GCC=$ac_cv_fc_compiler_gnu
+
+  _LT_TAGVAR(compiler, $1)=$CC
+  _LT_CC_BASENAME([$compiler])
+
+  if test -n "$compiler"; then
+    AC_MSG_CHECKING([if libtool supports shared libraries])
+    AC_MSG_RESULT([$can_build_shared])
+
+    AC_MSG_CHECKING([whether to build shared libraries])
+    test "$can_build_shared" = "no" && enable_shared=no
+
+    # On AIX, shared libraries and static libraries use the same namespace, and
+    # are all built from PIC.
+    case $host_os in
+      aix3*)
+        test "$enable_shared" = yes && enable_static=no
+        if test -n "$RANLIB"; then
+          archive_cmds="$archive_cmds~\$RANLIB \$lib"
+          postinstall_cmds='$RANLIB $lib'
+        fi
+        ;;
+      aix[[4-9]]*)
+	if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+	  test "$enable_shared" = yes && enable_static=no
+	fi
+        ;;
+    esac
+    AC_MSG_RESULT([$enable_shared])
+
+    AC_MSG_CHECKING([whether to build static libraries])
+    # Make sure either enable_shared or enable_static is yes.
+    test "$enable_shared" = yes || enable_static=yes
+    AC_MSG_RESULT([$enable_static])
+
+    _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu"
+    _LT_TAGVAR(LD, $1)="$LD"
+
+    ## CAVEAT EMPTOR:
+    ## There is no encapsulation within the following macros, do not change
+    ## the running order or otherwise move them around unless you know exactly
+    ## what you are doing...
+    _LT_SYS_HIDDEN_LIBDEPS($1)
+    _LT_COMPILER_PIC($1)
+    _LT_COMPILER_C_O($1)
+    _LT_COMPILER_FILE_LOCKS($1)
+    _LT_LINKER_SHLIBS($1)
+    _LT_SYS_DYNAMIC_LINKER($1)
+    _LT_LINKER_HARDCODE_LIBPATH($1)
+
+    _LT_CONFIG($1)
+  fi # test -n "$compiler"
+
+  GCC=$lt_save_GCC
+  CC="$lt_save_CC"
+fi # test "$_lt_disable_FC" != yes
+
+AC_LANG_POP
+])# _LT_LANG_FC_CONFIG
+
+
+# _LT_LANG_GCJ_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for the GNU Java Compiler compiler
+# are suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_GCJ_CONFIG],
+[AC_REQUIRE([LT_PROG_GCJ])dnl
+AC_LANG_SAVE
+
+# Source file extension for Java test sources.
+ac_ext=java
+
+# Object file extension for compiled Java test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="class foo {}"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_TAG_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+lt_save_GCC=$GCC
+GCC=yes
+CC=${GCJ-"gcj"}
+compiler=$CC
+_LT_TAGVAR(compiler, $1)=$CC
+_LT_TAGVAR(LD, $1)="$LD"
+_LT_CC_BASENAME([$compiler])
+
+# GCJ did not exist at the time GCC didn't implicitly link libc in.
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+  _LT_COMPILER_NO_RTTI($1)
+  _LT_COMPILER_PIC($1)
+  _LT_COMPILER_C_O($1)
+  _LT_COMPILER_FILE_LOCKS($1)
+  _LT_LINKER_SHLIBS($1)
+  _LT_LINKER_HARDCODE_LIBPATH($1)
+
+  _LT_CONFIG($1)
+fi
+
+AC_LANG_RESTORE
+
+GCC=$lt_save_GCC
+CC="$lt_save_CC"
+])# _LT_LANG_GCJ_CONFIG
+
+
+# _LT_LANG_RC_CONFIG([TAG])
+# -------------------------
+# Ensure that the configuration variables for the Windows resource compiler
+# are suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_RC_CONFIG],
+[AC_REQUIRE([LT_PROG_RC])dnl
+AC_LANG_SAVE
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="$lt_simple_compile_test_code"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_TAG_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+lt_save_GCC=$GCC
+GCC=
+CC=${RC-"windres"}
+compiler=$CC
+_LT_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+
+if test -n "$compiler"; then
+  :
+  _LT_CONFIG($1)
+fi
+
+GCC=$lt_save_GCC
+AC_LANG_RESTORE
+CC="$lt_save_CC"
+])# _LT_LANG_RC_CONFIG
+
+
+# LT_PROG_GCJ
+# -----------
+AC_DEFUN([LT_PROG_GCJ],
+[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ],
+  [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ],
+    [AC_CHECK_TOOL(GCJ, gcj,)
+      test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
+      AC_SUBST(GCJFLAGS)])])[]dnl
+])
+
+# Old name:
+AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([LT_AC_PROG_GCJ], [])
+
+
+# LT_PROG_RC
+# ----------
+AC_DEFUN([LT_PROG_RC],
+[AC_CHECK_TOOL(RC, windres,)
+])
+
+# Old name:
+AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([LT_AC_PROG_RC], [])
+
+
+# _LT_DECL_EGREP
+# --------------
+# If we don't have a new enough Autoconf to choose the best grep
+# available, choose the one first in the user's PATH.
+m4_defun([_LT_DECL_EGREP],
+[AC_REQUIRE([AC_PROG_EGREP])dnl
+AC_REQUIRE([AC_PROG_FGREP])dnl
+test -z "$GREP" && GREP=grep
+_LT_DECL([], [GREP], [1], [A grep program that handles long lines])
+_LT_DECL([], [EGREP], [1], [An ERE matcher])
+_LT_DECL([], [FGREP], [1], [A literal string matcher])
+dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too
+AC_SUBST([GREP])
+])
+
+
+# _LT_DECL_OBJDUMP
+# --------------
+# If we don't have a new enough Autoconf to choose the best objdump
+# available, choose the one first in the user's PATH.
+m4_defun([_LT_DECL_OBJDUMP],
+[AC_CHECK_TOOL(OBJDUMP, objdump, false)
+test -z "$OBJDUMP" && OBJDUMP=objdump
+_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper])
+AC_SUBST([OBJDUMP])
+])
+
+
+# _LT_DECL_SED
+# ------------
+# Check for a fully-functional sed program, that truncates
+# as few characters as possible.  Prefer GNU sed if found.
+m4_defun([_LT_DECL_SED],
+[AC_PROG_SED
+test -z "$SED" && SED=sed
+Xsed="$SED -e 1s/^X//"
+_LT_DECL([], [SED], [1], [A sed program that does not truncate output])
+_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"],
+    [Sed that helps us avoid accidentally triggering echo(1) options like -n])
+])# _LT_DECL_SED
+
+m4_ifndef([AC_PROG_SED], [
+############################################################
+# NOTE: This macro has been submitted for inclusion into   #
+#  GNU Autoconf as AC_PROG_SED.  When it is available in   #
+#  a released version of Autoconf we should remove this    #
+#  macro and use it instead.                               #
+############################################################
+
+m4_defun([AC_PROG_SED],
+[AC_MSG_CHECKING([for a sed that does not truncate output])
+AC_CACHE_VAL(lt_cv_path_SED,
+[# Loop through the user's path and test for sed and gsed.
+# Then use that list of sed's as ones to test for truncation.
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for lt_ac_prog in sed gsed; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
+        lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
+      fi
+    done
+  done
+done
+IFS=$as_save_IFS
+lt_ac_max=0
+lt_ac_count=0
+# Add /usr/xpg4/bin/sed as it is typically found on Solaris
+# along with /bin/sed that truncates output.
+for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
+  test ! -f $lt_ac_sed && continue
+  cat /dev/null > conftest.in
+  lt_ac_count=0
+  echo $ECHO_N "0123456789$ECHO_C" >conftest.in
+  # Check for GNU sed and select it if it is found.
+  if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
+    lt_cv_path_SED=$lt_ac_sed
+    break
+  fi
+  while true; do
+    cat conftest.in conftest.in >conftest.tmp
+    mv conftest.tmp conftest.in
+    cp conftest.in conftest.nl
+    echo >>conftest.nl
+    $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
+    cmp -s conftest.out conftest.nl || break
+    # 10000 chars as input seems more than enough
+    test $lt_ac_count -gt 10 && break
+    lt_ac_count=`expr $lt_ac_count + 1`
+    if test $lt_ac_count -gt $lt_ac_max; then
+      lt_ac_max=$lt_ac_count
+      lt_cv_path_SED=$lt_ac_sed
+    fi
+  done
+done
+])
+SED=$lt_cv_path_SED
+AC_SUBST([SED])
+AC_MSG_RESULT([$SED])
+])#AC_PROG_SED
+])#m4_ifndef
+
+# Old name:
+AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([LT_AC_PROG_SED], [])
+
+
+# _LT_CHECK_SHELL_FEATURES
+# ------------------------
+# Find out whether the shell is Bourne or XSI compatible,
+# or has some other useful features.
+m4_defun([_LT_CHECK_SHELL_FEATURES],
+[AC_MSG_CHECKING([whether the shell understands some XSI constructs])
+# Try some XSI features
+xsi_shell=no
+( _lt_dummy="a/b/c"
+  test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
+      = c,a/b,, \
+    && eval 'test $(( 1 + 1 )) -eq 2 \
+    && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+  && xsi_shell=yes
+AC_MSG_RESULT([$xsi_shell])
+_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell'])
+
+AC_MSG_CHECKING([whether the shell understands "+="])
+lt_shell_append=no
+( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \
+    >/dev/null 2>&1 \
+  && lt_shell_append=yes
+AC_MSG_RESULT([$lt_shell_append])
+_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append'])
+
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  lt_unset=unset
+else
+  lt_unset=false
+fi
+_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl
+
+# test EBCDIC or ASCII
+case `echo X|tr X '\101'` in
+ A) # ASCII based system
+    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+  lt_SP2NL='tr \040 \012'
+  lt_NL2SP='tr \015\012 \040\040'
+  ;;
+ *) # EBCDIC based system
+  lt_SP2NL='tr \100 \n'
+  lt_NL2SP='tr \r\n \100\100'
+  ;;
+esac
+_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl
+_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl
+])# _LT_CHECK_SHELL_FEATURES
+
+
+# _LT_PROG_XSI_SHELLFNS
+# ---------------------
+# Bourne and XSI compatible variants of some useful shell functions.
+m4_defun([_LT_PROG_XSI_SHELLFNS],
+[case $xsi_shell in
+  yes)
+    cat << \_LT_EOF >> "$cfgfile"
+
+# func_dirname file append nondir_replacement
+# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+func_dirname ()
+{
+  case ${1} in
+    */*) func_dirname_result="${1%/*}${2}" ;;
+    *  ) func_dirname_result="${3}" ;;
+  esac
+}
+
+# func_basename file
+func_basename ()
+{
+  func_basename_result="${1##*/}"
+}
+
+# func_dirname_and_basename file append nondir_replacement
+# perform func_basename and func_dirname in a single function
+# call:
+#   dirname:  Compute the dirname of FILE.  If nonempty,
+#             add APPEND to the result, otherwise set result
+#             to NONDIR_REPLACEMENT.
+#             value returned in "$func_dirname_result"
+#   basename: Compute filename of FILE.
+#             value retuned in "$func_basename_result"
+# Implementation must be kept synchronized with func_dirname
+# and func_basename. For efficiency, we do not delegate to
+# those functions but instead duplicate the functionality here.
+func_dirname_and_basename ()
+{
+  case ${1} in
+    */*) func_dirname_result="${1%/*}${2}" ;;
+    *  ) func_dirname_result="${3}" ;;
+  esac
+  func_basename_result="${1##*/}"
+}
+
+# func_stripname prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+func_stripname ()
+{
+  # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+  # positional parameters, so assign one to ordinary parameter first.
+  func_stripname_result=${3}
+  func_stripname_result=${func_stripname_result#"${1}"}
+  func_stripname_result=${func_stripname_result%"${2}"}
+}
+
+# func_opt_split
+func_opt_split ()
+{
+  func_opt_split_opt=${1%%=*}
+  func_opt_split_arg=${1#*=}
+}
+
+# func_lo2o object
+func_lo2o ()
+{
+  case ${1} in
+    *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
+    *)    func_lo2o_result=${1} ;;
+  esac
+}
+
+# func_xform libobj-or-source
+func_xform ()
+{
+  func_xform_result=${1%.*}.lo
+}
+
+# func_arith arithmetic-term...
+func_arith ()
+{
+  func_arith_result=$(( $[*] ))
+}
+
+# func_len string
+# STRING may not start with a hyphen.
+func_len ()
+{
+  func_len_result=${#1}
+}
+
+_LT_EOF
+    ;;
+  *) # Bourne compatible functions.
+    cat << \_LT_EOF >> "$cfgfile"
+
+# func_dirname file append nondir_replacement
+# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+func_dirname ()
+{
+  # Extract subdirectory from the argument.
+  func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
+  if test "X$func_dirname_result" = "X${1}"; then
+    func_dirname_result="${3}"
+  else
+    func_dirname_result="$func_dirname_result${2}"
+  fi
+}
+
+# func_basename file
+func_basename ()
+{
+  func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
+}
+
+dnl func_dirname_and_basename
+dnl A portable version of this function is already defined in general.m4sh
+dnl so there is no need for it here.
+
+# func_stripname prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+# func_strip_suffix prefix name
+func_stripname ()
+{
+  case ${2} in
+    .*) func_stripname_result=`$ECHO "X${3}" \
+           | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;;
+    *)  func_stripname_result=`$ECHO "X${3}" \
+           | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;;
+  esac
+}
+
+# sed scripts:
+my_sed_long_opt='1s/^\(-[[^=]]*\)=.*/\1/;q'
+my_sed_long_arg='1s/^-[[^=]]*=//'
+
+# func_opt_split
+func_opt_split ()
+{
+  func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"`
+  func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"`
+}
+
+# func_lo2o object
+func_lo2o ()
+{
+  func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"`
+}
+
+# func_xform libobj-or-source
+func_xform ()
+{
+  func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[[^.]]*$/.lo/'`
+}
+
+# func_arith arithmetic-term...
+func_arith ()
+{
+  func_arith_result=`expr "$[@]"`
+}
+
+# func_len string
+# STRING may not start with a hyphen.
+func_len ()
+{
+  func_len_result=`expr "$[1]" : ".*" 2>/dev/null || echo $max_cmd_len`
+}
+
+_LT_EOF
+esac
+
+case $lt_shell_append in
+  yes)
+    cat << \_LT_EOF >> "$cfgfile"
+
+# func_append var value
+# Append VALUE to the end of shell variable VAR.
+func_append ()
+{
+  eval "$[1]+=\$[2]"
+}
+_LT_EOF
+    ;;
+  *)
+    cat << \_LT_EOF >> "$cfgfile"
+
+# func_append var value
+# Append VALUE to the end of shell variable VAR.
+func_append ()
+{
+  eval "$[1]=\$$[1]\$[2]"
+}
+
+_LT_EOF
+    ;;
+  esac
+])
diff --git a/google-breakpad/m4/ltoptions.m4 b/google-breakpad/m4/ltoptions.m4
new file mode 100644
index 0000000..34151a3
--- /dev/null
+++ b/google-breakpad/m4/ltoptions.m4
@@ -0,0 +1,368 @@
+# Helper functions for option handling.                    -*- Autoconf -*-
+#
+#   Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
+#   Written by Gary V. Vaughan, 2004
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 6 ltoptions.m4
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
+
+
+# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
+# ------------------------------------------
+m4_define([_LT_MANGLE_OPTION],
+[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])])
+
+
+# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
+# ---------------------------------------
+# Set option OPTION-NAME for macro MACRO-NAME, and if there is a
+# matching handler defined, dispatch to it.  Other OPTION-NAMEs are
+# saved as a flag.
+m4_define([_LT_SET_OPTION],
+[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
+m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
+        _LT_MANGLE_DEFUN([$1], [$2]),
+    [m4_warning([Unknown $1 option `$2'])])[]dnl
+])
+
+
+# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
+# ------------------------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+m4_define([_LT_IF_OPTION],
+[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])])
+
+
+# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
+# -------------------------------------------------------
+# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
+# are set.
+m4_define([_LT_UNLESS_OPTIONS],
+[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
+	    [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option),
+		      [m4_define([$0_found])])])[]dnl
+m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3
+])[]dnl
+])
+
+
+# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
+# ----------------------------------------
+# OPTION-LIST is a space-separated list of Libtool options associated
+# with MACRO-NAME.  If any OPTION has a matching handler declared with
+# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about
+# the unknown option and exit.
+m4_defun([_LT_SET_OPTIONS],
+[# Set options
+m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
+    [_LT_SET_OPTION([$1], _LT_Option)])
+
+m4_if([$1],[LT_INIT],[
+  dnl
+  dnl Simply set some default values (i.e off) if boolean options were not
+  dnl specified:
+  _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no
+  ])
+  _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no
+  ])
+  dnl
+  dnl If no reference was made to various pairs of opposing options, then
+  dnl we run the default mode handler for the pair.  For example, if neither
+  dnl `shared' nor `disable-shared' was passed, we enable building of shared
+  dnl archives by default:
+  _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
+  _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
+  _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
+  _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
+  		   [_LT_ENABLE_FAST_INSTALL])
+  ])
+])# _LT_SET_OPTIONS
+
+
+## --------------------------------- ##
+## Macros to handle LT_INIT options. ##
+## --------------------------------- ##
+
+# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
+# -----------------------------------------
+m4_define([_LT_MANGLE_DEFUN],
+[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])
+
+
+# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
+# -----------------------------------------------
+m4_define([LT_OPTION_DEFINE],
+[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl
+])# LT_OPTION_DEFINE
+
+
+# dlopen
+# ------
+LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes
+])
+
+AU_DEFUN([AC_LIBTOOL_DLOPEN],
+[_LT_SET_OPTION([LT_INIT], [dlopen])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `dlopen' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], [])
+
+
+# win32-dll
+# ---------
+# Declare package support for building win32 dll's.
+LT_OPTION_DEFINE([LT_INIT], [win32-dll],
+[enable_win32_dll=yes
+
+case $host in
+*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*)
+  AC_CHECK_TOOL(AS, as, false)
+  AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+  AC_CHECK_TOOL(OBJDUMP, objdump, false)
+  ;;
+esac
+
+test -z "$AS" && AS=as
+_LT_DECL([], [AS],      [0], [Assembler program])dnl
+
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+_LT_DECL([], [DLLTOOL], [0], [DLL creation program])dnl
+
+test -z "$OBJDUMP" && OBJDUMP=objdump
+_LT_DECL([], [OBJDUMP], [0], [Object dumper program])dnl
+])# win32-dll
+
+AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+_LT_SET_OPTION([LT_INIT], [win32-dll])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `win32-dll' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
+
+
+# _LT_ENABLE_SHARED([DEFAULT])
+# ----------------------------
+# implement the --enable-shared flag, and supports the `shared' and
+# `disable-shared' LT_INIT options.
+# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+m4_define([_LT_ENABLE_SHARED],
+[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
+AC_ARG_ENABLE([shared],
+    [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
+	[build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])],
+    [p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_shared=yes ;;
+    no) enable_shared=no ;;
+    *)
+      enable_shared=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_shared=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac],
+    [enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
+
+    _LT_DECL([build_libtool_libs], [enable_shared], [0],
+	[Whether or not to build shared libraries])
+])# _LT_ENABLE_SHARED
+
+LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
+
+# Old names:
+AC_DEFUN([AC_ENABLE_SHARED],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
+])
+
+AC_DEFUN([AC_DISABLE_SHARED],
+[_LT_SET_OPTION([LT_INIT], [disable-shared])
+])
+
+AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
+AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_ENABLE_SHARED], [])
+dnl AC_DEFUN([AM_DISABLE_SHARED], [])
+
+
+
+# _LT_ENABLE_STATIC([DEFAULT])
+# ----------------------------
+# implement the --enable-static flag, and support the `static' and
+# `disable-static' LT_INIT options.
+# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+m4_define([_LT_ENABLE_STATIC],
+[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
+AC_ARG_ENABLE([static],
+    [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@],
+	[build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])],
+    [p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_static=yes ;;
+    no) enable_static=no ;;
+    *)
+     enable_static=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_static=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac],
+    [enable_static=]_LT_ENABLE_STATIC_DEFAULT)
+
+    _LT_DECL([build_old_libs], [enable_static], [0],
+	[Whether or not to build static libraries])
+])# _LT_ENABLE_STATIC
+
+LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
+
+# Old names:
+AC_DEFUN([AC_ENABLE_STATIC],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
+])
+
+AC_DEFUN([AC_DISABLE_STATIC],
+[_LT_SET_OPTION([LT_INIT], [disable-static])
+])
+
+AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
+AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_ENABLE_STATIC], [])
+dnl AC_DEFUN([AM_DISABLE_STATIC], [])
+
+
+
+# _LT_ENABLE_FAST_INSTALL([DEFAULT])
+# ----------------------------------
+# implement the --enable-fast-install flag, and support the `fast-install'
+# and `disable-fast-install' LT_INIT options.
+# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+m4_define([_LT_ENABLE_FAST_INSTALL],
+[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
+AC_ARG_ENABLE([fast-install],
+    [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
+    [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
+    [p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_fast_install=yes ;;
+    no) enable_fast_install=no ;;
+    *)
+      enable_fast_install=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_fast_install=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac],
+    [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
+
+_LT_DECL([fast_install], [enable_fast_install], [0],
+	 [Whether or not to optimize for fast installation])dnl
+])# _LT_ENABLE_FAST_INSTALL
+
+LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
+
+# Old names:
+AU_DEFUN([AC_ENABLE_FAST_INSTALL],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you put
+the `fast-install' option into LT_INIT's first parameter.])
+])
+
+AU_DEFUN([AC_DISABLE_FAST_INSTALL],
+[_LT_SET_OPTION([LT_INIT], [disable-fast-install])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you put
+the `disable-fast-install' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])
+dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
+
+
+# _LT_WITH_PIC([MODE])
+# --------------------
+# implement the --with-pic flag, and support the `pic-only' and `no-pic'
+# LT_INIT options.
+# MODE is either `yes' or `no'.  If omitted, it defaults to `both'.
+m4_define([_LT_WITH_PIC],
+[AC_ARG_WITH([pic],
+    [AS_HELP_STRING([--with-pic],
+	[try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
+    [pic_mode="$withval"],
+    [pic_mode=default])
+
+test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
+
+_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
+])# _LT_WITH_PIC
+
+LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
+LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
+
+# Old name:
+AU_DEFUN([AC_LIBTOOL_PICMODE],
+[_LT_SET_OPTION([LT_INIT], [pic-only])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `pic-only' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
+
+## ----------------- ##
+## LTDL_INIT Options ##
+## ----------------- ##
+
+m4_define([_LTDL_MODE], [])
+LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
+		 [m4_define([_LTDL_MODE], [nonrecursive])])
+LT_OPTION_DEFINE([LTDL_INIT], [recursive],
+		 [m4_define([_LTDL_MODE], [recursive])])
+LT_OPTION_DEFINE([LTDL_INIT], [subproject],
+		 [m4_define([_LTDL_MODE], [subproject])])
+
+m4_define([_LTDL_TYPE], [])
+LT_OPTION_DEFINE([LTDL_INIT], [installable],
+		 [m4_define([_LTDL_TYPE], [installable])])
+LT_OPTION_DEFINE([LTDL_INIT], [convenience],
+		 [m4_define([_LTDL_TYPE], [convenience])])
diff --git a/google-breakpad/m4/ltsugar.m4 b/google-breakpad/m4/ltsugar.m4
new file mode 100644
index 0000000..9000a05
--- /dev/null
+++ b/google-breakpad/m4/ltsugar.m4
@@ -0,0 +1,123 @@
+# ltsugar.m4 -- libtool m4 base layer.                         -*-Autoconf-*-
+#
+# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
+# Written by Gary V. Vaughan, 2004
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 6 ltsugar.m4
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
+
+
+# lt_join(SEP, ARG1, [ARG2...])
+# -----------------------------
+# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
+# associated separator.
+# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier
+# versions in m4sugar had bugs.
+m4_define([lt_join],
+[m4_if([$#], [1], [],
+       [$#], [2], [[$2]],
+       [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])])
+m4_define([_lt_join],
+[m4_if([$#$2], [2], [],
+       [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])])
+
+
+# lt_car(LIST)
+# lt_cdr(LIST)
+# ------------
+# Manipulate m4 lists.
+# These macros are necessary as long as will still need to support
+# Autoconf-2.59 which quotes differently.
+m4_define([lt_car], [[$1]])
+m4_define([lt_cdr],
+[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
+       [$#], 1, [],
+       [m4_dquote(m4_shift($@))])])
+m4_define([lt_unquote], $1)
+
+
+# lt_append(MACRO-NAME, STRING, [SEPARATOR])
+# ------------------------------------------
+# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'.
+# Note that neither SEPARATOR nor STRING are expanded; they are appended
+# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
+# No SEPARATOR is output if MACRO-NAME was previously undefined (different
+# than defined and empty).
+#
+# This macro is needed until we can rely on Autoconf 2.62, since earlier
+# versions of m4sugar mistakenly expanded SEPARATOR but not STRING.
+m4_define([lt_append],
+[m4_define([$1],
+	   m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])])
+
+
+
+# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
+# ----------------------------------------------------------
+# Produce a SEP delimited list of all paired combinations of elements of
+# PREFIX-LIST with SUFFIX1 through SUFFIXn.  Each element of the list
+# has the form PREFIXmINFIXSUFFIXn.
+# Needed until we can rely on m4_combine added in Autoconf 2.62.
+m4_define([lt_combine],
+[m4_if(m4_eval([$# > 3]), [1],
+       [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl
+[[m4_foreach([_Lt_prefix], [$2],
+	     [m4_foreach([_Lt_suffix],
+		]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[,
+	[_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])])
+
+
+# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
+# -----------------------------------------------------------------------
+# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
+# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
+m4_define([lt_if_append_uniq],
+[m4_ifdef([$1],
+	  [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1],
+		 [lt_append([$1], [$2], [$3])$4],
+		 [$5])],
+	  [lt_append([$1], [$2], [$3])$4])])
+
+
+# lt_dict_add(DICT, KEY, VALUE)
+# -----------------------------
+m4_define([lt_dict_add],
+[m4_define([$1($2)], [$3])])
+
+
+# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
+# --------------------------------------------
+m4_define([lt_dict_add_subkey],
+[m4_define([$1($2:$3)], [$4])])
+
+
+# lt_dict_fetch(DICT, KEY, [SUBKEY])
+# ----------------------------------
+m4_define([lt_dict_fetch],
+[m4_ifval([$3],
+	m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]),
+    m4_ifdef([$1($2)], [m4_defn([$1($2)])]))])
+
+
+# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
+# -----------------------------------------------------------------
+m4_define([lt_if_dict_fetch],
+[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4],
+	[$5],
+    [$6])])
+
+
+# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...])
+# --------------------------------------------------------------
+m4_define([lt_dict_filter],
+[m4_if([$5], [], [],
+  [lt_join(m4_quote(m4_default([$4], [[, ]])),
+           lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]),
+		      [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl
+])
diff --git a/google-breakpad/m4/ltversion.m4 b/google-breakpad/m4/ltversion.m4
new file mode 100644
index 0000000..f3c5309
--- /dev/null
+++ b/google-breakpad/m4/ltversion.m4
@@ -0,0 +1,23 @@
+# ltversion.m4 -- version numbers			-*- Autoconf -*-
+#
+#   Copyright (C) 2004 Free Software Foundation, Inc.
+#   Written by Scott James Remnant, 2004
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# Generated from ltversion.in.
+
+# serial 3017 ltversion.m4
+# This file is part of GNU Libtool
+
+m4_define([LT_PACKAGE_VERSION], [2.2.6b])
+m4_define([LT_PACKAGE_REVISION], [1.3017])
+
+AC_DEFUN([LTVERSION_VERSION],
+[macro_version='2.2.6b'
+macro_revision='1.3017'
+_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
+_LT_DECL(, macro_revision, 0)
+])
diff --git a/google-breakpad/m4/lt~obsolete.m4 b/google-breakpad/m4/lt~obsolete.m4
new file mode 100644
index 0000000..637bb20
--- /dev/null
+++ b/google-breakpad/m4/lt~obsolete.m4
@@ -0,0 +1,92 @@
+# lt~obsolete.m4 -- aclocal satisfying obsolete definitions.    -*-Autoconf-*-
+#
+#   Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc.
+#   Written by Scott James Remnant, 2004.
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 4 lt~obsolete.m4
+
+# These exist entirely to fool aclocal when bootstrapping libtool.
+#
+# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN)
+# which have later been changed to m4_define as they aren't part of the
+# exported API, or moved to Autoconf or Automake where they belong.
+#
+# The trouble is, aclocal is a bit thick.  It'll see the old AC_DEFUN
+# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us
+# using a macro with the same name in our local m4/libtool.m4 it'll
+# pull the old libtool.m4 in (it doesn't see our shiny new m4_define
+# and doesn't know about Autoconf macros at all.)
+#
+# So we provide this file, which has a silly filename so it's always
+# included after everything else.  This provides aclocal with the
+# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
+# because those macros already exist, or will be overwritten later.
+# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. 
+#
+# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
+# Yes, that means every name once taken will need to remain here until
+# we give up compatibility with versions before 1.7, at which point
+# we need to keep only those names which we still refer to.
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
+
+m4_ifndef([AC_LIBTOOL_LINKER_OPTION],	[AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])])
+m4_ifndef([AC_PROG_EGREP],		[AC_DEFUN([AC_PROG_EGREP])])
+m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH],	[AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])])
+m4_ifndef([_LT_AC_SHELL_INIT],		[AC_DEFUN([_LT_AC_SHELL_INIT])])
+m4_ifndef([_LT_AC_SYS_LIBPATH_AIX],	[AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])])
+m4_ifndef([_LT_PROG_LTMAIN],		[AC_DEFUN([_LT_PROG_LTMAIN])])
+m4_ifndef([_LT_AC_TAGVAR],		[AC_DEFUN([_LT_AC_TAGVAR])])
+m4_ifndef([AC_LTDL_ENABLE_INSTALL],	[AC_DEFUN([AC_LTDL_ENABLE_INSTALL])])
+m4_ifndef([AC_LTDL_PREOPEN],		[AC_DEFUN([AC_LTDL_PREOPEN])])
+m4_ifndef([_LT_AC_SYS_COMPILER],	[AC_DEFUN([_LT_AC_SYS_COMPILER])])
+m4_ifndef([_LT_AC_LOCK],		[AC_DEFUN([_LT_AC_LOCK])])
+m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE],	[AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])])
+m4_ifndef([_LT_AC_TRY_DLOPEN_SELF],	[AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])])
+m4_ifndef([AC_LIBTOOL_PROG_CC_C_O],	[AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])])
+m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])])
+m4_ifndef([AC_LIBTOOL_OBJDIR],		[AC_DEFUN([AC_LIBTOOL_OBJDIR])])
+m4_ifndef([AC_LTDL_OBJDIR],		[AC_DEFUN([AC_LTDL_OBJDIR])])
+m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])])
+m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP],	[AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])])
+m4_ifndef([AC_PATH_MAGIC],		[AC_DEFUN([AC_PATH_MAGIC])])
+m4_ifndef([AC_PROG_LD_GNU],		[AC_DEFUN([AC_PROG_LD_GNU])])
+m4_ifndef([AC_PROG_LD_RELOAD_FLAG],	[AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])])
+m4_ifndef([AC_DEPLIBS_CHECK_METHOD],	[AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])])
+m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])])
+m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])])
+m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])])
+m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS],	[AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])])
+m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP],	[AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])])
+m4_ifndef([LT_AC_PROG_EGREP],		[AC_DEFUN([LT_AC_PROG_EGREP])])
+m4_ifndef([LT_AC_PROG_SED],		[AC_DEFUN([LT_AC_PROG_SED])])
+m4_ifndef([_LT_CC_BASENAME],		[AC_DEFUN([_LT_CC_BASENAME])])
+m4_ifndef([_LT_COMPILER_BOILERPLATE],	[AC_DEFUN([_LT_COMPILER_BOILERPLATE])])
+m4_ifndef([_LT_LINKER_BOILERPLATE],	[AC_DEFUN([_LT_LINKER_BOILERPLATE])])
+m4_ifndef([_AC_PROG_LIBTOOL],		[AC_DEFUN([_AC_PROG_LIBTOOL])])
+m4_ifndef([AC_LIBTOOL_SETUP],		[AC_DEFUN([AC_LIBTOOL_SETUP])])
+m4_ifndef([_LT_AC_CHECK_DLFCN],		[AC_DEFUN([_LT_AC_CHECK_DLFCN])])
+m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER],	[AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])])
+m4_ifndef([_LT_AC_TAGCONFIG],		[AC_DEFUN([_LT_AC_TAGCONFIG])])
+m4_ifndef([AC_DISABLE_FAST_INSTALL],	[AC_DEFUN([AC_DISABLE_FAST_INSTALL])])
+m4_ifndef([_LT_AC_LANG_CXX],		[AC_DEFUN([_LT_AC_LANG_CXX])])
+m4_ifndef([_LT_AC_LANG_F77],		[AC_DEFUN([_LT_AC_LANG_F77])])
+m4_ifndef([_LT_AC_LANG_GCJ],		[AC_DEFUN([_LT_AC_LANG_GCJ])])
+m4_ifndef([AC_LIBTOOL_RC],		[AC_DEFUN([AC_LIBTOOL_RC])])
+m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
+m4_ifndef([_LT_AC_LANG_C_CONFIG],	[AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
+m4_ifndef([_LT_AC_LANG_CXX_CONFIG],	[AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])])
+m4_ifndef([_LT_AC_LANG_F77_CONFIG],	[AC_DEFUN([_LT_AC_LANG_F77_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])])
+m4_ifndef([_LT_AC_LANG_GCJ_CONFIG],	[AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])])
+m4_ifndef([_LT_AC_LANG_RC_CONFIG],	[AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
+m4_ifndef([AC_LIBTOOL_CONFIG],		[AC_DEFUN([AC_LIBTOOL_CONFIG])])
+m4_ifndef([_LT_AC_FILE_LTDLL_C],	[AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
diff --git a/google-breakpad/src/breakpad_googletest_includes.h b/google-breakpad/src/breakpad_googletest_includes.h
new file mode 100644
index 0000000..1cc324b
--- /dev/null
+++ b/google-breakpad/src/breakpad_googletest_includes.h
@@ -0,0 +1,57 @@
+// Copyright (c) 2009, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef BREAKPAD_GOOGLETEST_INCLUDES_H__
+#define BREAKPAD_GOOGLETEST_INCLUDES_H__
+
+#include "testing/gtest/include/gtest/gtest.h"
+#include "testing/include/gmock/gmock.h"
+
+// If AddressSanitizer is used, NULL pointer dereferences generate SIGILL
+// (illegal instruction) instead of SIGSEGV (segmentation fault).  Also,
+// the number of memory regions differs, so there is no point in running
+// this test if AddressSanitizer is used.
+//
+// Ideally we'd use this attribute to disable ASAN on a per-func basis,
+// but this doesn't seem to actually work, and it's changed names over
+// time.  So just stick with disabling the actual tests.
+// http://crbug.com/304575
+//#define NO_ASAN __attribute__((no_sanitize_address))
+#if defined(__clang__) && defined(__has_feature)
+// Have to keep this check sep from above as newer gcc will barf on it.
+# if __has_feature(address_sanitizer)
+#  define ADDRESS_SANITIZER
+# endif
+#elif defined(__GNUC__) && defined(__SANITIZE_ADDRESS__)
+# define ADDRESS_SANITIZER
+#else
+# undef ADDRESS_SANITIZER
+#endif
+
+#endif  // BREAKPAD_GOOGLETEST_INCLUDES_H__
diff --git a/google-breakpad/src/build/all.gyp b/google-breakpad/src/build/all.gyp
new file mode 100644
index 0000000..4b59d91
--- /dev/null
+++ b/google-breakpad/src/build/all.gyp
@@ -0,0 +1,41 @@
+# Copyright 2014 Google Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+{
+  'targets': [
+    {
+      'target_name': 'All',
+      'type': 'none',
+      'dependencies': [
+        '../common/common.gyp:*',
+        '../processor/processor.gyp:*',
+        '../tools/tools.gyp:*',
+      ],
+    },
+  ],
+}
diff --git a/google-breakpad/src/build/common.gypi b/google-breakpad/src/build/common.gypi
new file mode 100644
index 0000000..b9466a3
--- /dev/null
+++ b/google-breakpad/src/build/common.gypi
@@ -0,0 +1,1045 @@
+# Copyright 2010 Google Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# IMPORTANT:
+# Please don't directly include this file if you are building via gyp_chromium,
+# since gyp_chromium is automatically forcing its inclusion.
+{
+  'variables': {
+    # Variables expected to be overriden on the GYP command line (-D) or by
+    # ~/.gyp/include.gypi.
+
+    # Putting a variables dict inside another variables dict looks kind of
+    # weird. This is necessary to get these variables defined for the conditions
+    # within this variables dict that operate on these variables.
+    'variables': {
+      'variables': {
+        # Compute the architecture that we're building on.
+        'conditions': [
+          [ 'OS=="linux" or OS=="freebsd" or OS=="openbsd"', {
+            # This handles the Linux platforms we generally deal with. Anything
+            # else gets passed through, which probably won't work very well; such
+            # hosts should pass an explicit target_arch to gyp.
+            'host_arch%':
+              '<!(uname -m | sed -e "s/i.86/ia32/;s/x86_64/x64/;s/amd64/x64/;s/arm.*/arm/")',
+          }, {  # OS!="linux"
+            'host_arch%': 'ia32',
+          }],
+        ],
+      },
+
+      'host_arch%': '<(host_arch)',
+
+      # Default architecture we're building for is the architecture we're
+      # building on.
+      'target_arch%': '<(host_arch)',
+
+      # This variable tells WebCore.gyp and JavaScriptCore.gyp whether they are
+      # are built under a chromium full build (1) or a webkit.org chromium
+      # build (0).
+      'inside_chromium_build%': 1,
+
+      # Set to 1 compile with -fPIC cflag on linux. This is a must for shared
+      # libraries on linux x86-64 and arm.
+      'linux_fpic%': 0,
+
+      # Python version.
+      'python_ver%': '2.5',
+
+      # Determine ARM compilation flags.
+      'arm_version%': 7,
+
+      # Set Neon compilation flags (only meaningful if arm_version==7).
+      'arm_neon%': 1,
+
+      # The system root for cross-compiles. Default: none.
+      'sysroot%': '',
+
+      # On Linux, we build with sse2 for Chromium builds.
+      'disable_sse2%': 0,
+    },
+
+    'target_arch%': '<(target_arch)',
+    'host_arch%': '<(host_arch)',
+    'inside_chromium_build%': '<(inside_chromium_build)',
+    'linux_fpic%': '<(linux_fpic)',
+    'python_ver%': '<(python_ver)',
+    'arm_version%': '<(arm_version)',
+    'arm_neon%': '<(arm_neon)',
+    'sysroot%': '<(sysroot)',
+    'disable_sse2%': '<(disable_sse2)',
+
+    # The release channel that this build targets. This is used to restrict
+    # channel-specific build options, like which installer packages to create.
+    # The default is 'all', which does no channel-specific filtering.
+    'channel%': 'all',
+
+    # Override chromium_mac_pch and set it to 0 to suppress the use of
+    # precompiled headers on the Mac.  Prefix header injection may still be
+    # used, but prefix headers will not be precompiled.  This is useful when
+    # using distcc to distribute a build to compile slaves that don't
+    # share the same compiler executable as the system driving the compilation,
+    # because precompiled headers rely on pointers into a specific compiler
+    # executable's image.  Setting this to 0 is needed to use an experimental
+    # Linux-Mac cross compiler distcc farm.
+    'chromium_mac_pch%': 1,
+
+    # Mac OS X SDK and deployment target support.
+    # The SDK identifies the version of the system headers that will be used,
+    # and corresponds to the MAC_OS_X_VERSION_MAX_ALLOWED compile-time macro.
+    # "Maximum allowed" refers to the operating system version whose APIs are
+    # available in the headers.
+    # The deployment target identifies the minimum system version that the
+    # built products are expected to function on.  It corresponds to the
+    # MAC_OS_X_VERSION_MIN_REQUIRED compile-time macro.
+    # To ensure these macros are available, #include <AvailabilityMacros.h>.
+    # Additional documentation on these macros is available at
+    # http://developer.apple.com/mac/library/technotes/tn2002/tn2064.html#SECTION3
+    # Chrome normally builds with the Mac OS X 10.5 SDK and sets the
+    # deployment target to 10.5.  Other projects, such as O3D, may override
+    # these defaults.
+    'mac_sdk%': '10.5',
+    'mac_deployment_target%': '10.5',
+
+    # Set to 1 to enable code coverage.  In addition to build changes
+    # (e.g. extra CFLAGS), also creates a new target in the src/chrome
+    # project file called "coverage".
+    # Currently ignored on Windows.
+    'coverage%': 0,
+
+    # Although base/allocator lets you select a heap library via an
+    # environment variable, the libcmt shim it uses sometimes gets in
+    # the way.  To disable it entirely, and switch to normal msvcrt, do e.g.
+    #  'win_use_allocator_shim': 0,
+    #  'win_release_RuntimeLibrary': 2
+    # to ~/.gyp/include.gypi, gclient runhooks --force, and do a release build.
+    'win_use_allocator_shim%': 1, # 0 = shim allocator via libcmt; 1 = msvcrt
+
+    # Whether usage of OpenMAX is enabled.
+    'enable_openmax%': 0,
+
+    # TODO(bradnelson): eliminate this when possible.
+    # To allow local gyp files to prevent release.vsprops from being included.
+    # Yes(1) means include release.vsprops.
+    # Once all vsprops settings are migrated into gyp, this can go away.
+    'msvs_use_common_release%': 1,
+
+    # TODO(bradnelson): eliminate this when possible.
+    # To allow local gyp files to override additional linker options for msvs.
+    # Yes(1) means set use the common linker options.
+    'msvs_use_common_linker_extras%': 1,
+
+    # TODO(sgk): eliminate this if possible.
+    # It would be nicer to support this via a setting in 'target_defaults'
+    # in chrome/app/locales/locales.gypi overriding the setting in the
+    # 'Debug' configuration in the 'target_defaults' dict below,
+    # but that doesn't work as we'd like.
+    'msvs_debug_link_incremental%': '2',
+
+    # This is the location of the sandbox binary. Chrome looks for this before
+    # running the zygote process. If found, and SUID, it will be used to
+    # sandbox the zygote process and, thus, all renderer processes.
+    'linux_sandbox_path%': '',
+
+    # Set this to true to enable SELinux support.
+    'selinux%': 0,
+
+    # Strip the binary after dumping symbols.
+    'linux_strip_binary%': 0,
+
+    # Enable TCMalloc.
+    'linux_use_tcmalloc%': 1,
+
+    # Disable TCMalloc's debugallocation.
+    'linux_use_debugallocation%': 0,
+
+    # Disable TCMalloc's heapchecker.
+    'linux_use_heapchecker%': 0,
+
+    # Set to 1 to turn on seccomp sandbox by default.
+    # (Note: this is ignored for official builds.)
+    'linux_use_seccomp_sandbox%': 0,
+
+    # Set to select the Title Case versions of strings in GRD files.
+    'use_titlecase_in_grd%': 0,
+
+    # Used to disable Native Client at compile time, for platforms where it
+    # isn't supported
+    'disable_nacl%': 0,
+
+    # Set Thumb compilation flags.
+    'arm_thumb%': 0,
+
+    # Set ARM fpu compilation flags (only meaningful if arm_version==7 and
+    # arm_neon==0).
+    'arm_fpu%': 'vfpv3',
+
+    # Enable new NPDevice API.
+    'enable_new_npdevice_api%': 0,
+
+    'conditions': [
+      # Whether to use multiple cores to compile with visual studio. This is
+      # optional because it sometimes causes corruption on VS 2005.
+      # It is on by default on VS 2008 and off on VS 2005.
+      ['OS=="win"', {
+        'conditions': [
+          ['MSVS_VERSION=="2005"', {
+            'msvs_multi_core_compile%': 0,
+          },{
+            'msvs_multi_core_compile%': 1,
+          }],
+          # Don't do incremental linking for large modules on 32-bit.
+          ['MSVS_OS_BITS==32', {
+            'msvs_large_module_debug_link_mode%': '1',  # No
+          },{
+            'msvs_large_module_debug_link_mode%': '2',  # Yes
+          }],
+        ],
+        'nacl_win64_defines': [
+          # This flag is used to minimize dependencies when building
+          # Native Client loader for 64-bit Windows.
+          'NACL_WIN64',
+        ],
+      }],
+    ],
+
+    # NOTE: When these end up in the Mac bundle, we need to replace '-' for '_'
+    # so Cocoa is happy (http://crbug.com/20441).
+    'locales': [
+      'am', 'ar', 'bg', 'bn', 'ca', 'cs', 'da', 'de', 'el', 'en-GB',
+      'en-US', 'es-419', 'es', 'et', 'fi', 'fil', 'fr', 'gu', 'he',
+      'hi', 'hr', 'hu', 'id', 'it', 'ja', 'kn', 'ko', 'lt', 'lv',
+      'ml', 'mr', 'nb', 'nl', 'pl', 'pt-BR', 'pt-PT', 'ro', 'ru',
+      'sk', 'sl', 'sr', 'sv', 'sw', 'ta', 'te', 'th', 'tr', 'uk',
+      'vi', 'zh-CN', 'zh-TW',
+    ],
+  },
+  'target_defaults': {
+    'includes': [
+      'filename_rules.gypi',
+    ],
+    'variables': {
+      # See http://gcc.gnu.org/onlinedocs/gcc-4.4.2/gcc/Optimize-Options.html
+      'mac_release_optimization%': '3', # Use -O3 unless overridden
+      'mac_debug_optimization%': '0',   # Use -O0 unless overridden
+      # See http://msdn.microsoft.com/en-us/library/aa652360(VS.71).aspx
+      'win_release_Optimization%': '2', # 2 = /Os
+      'win_debug_Optimization%': '0',   # 0 = /Od
+      # See http://msdn.microsoft.com/en-us/library/aa652367(VS.71).aspx
+      'win_release_RuntimeLibrary%': '0', # 0 = /MT (nondebug static)
+      'win_debug_RuntimeLibrary%': '1',   # 1 = /MTd (debug static)
+
+      'release_extra_cflags%': '',
+      'debug_extra_cflags%': '',
+      'release_valgrind_build%': 0,
+    },
+    'conditions': [
+      ['selinux==1', {
+        'defines': ['CHROMIUM_SELINUX=1'],
+      }],
+      ['win_use_allocator_shim==0', {
+        'conditions': [
+          ['OS=="win"', {
+            'defines': ['NO_TCMALLOC'],
+          }],
+        ],
+      }],
+      ['coverage!=0', {
+        'conditions': [
+          ['OS=="mac"', {
+            'xcode_settings': {
+              'GCC_INSTRUMENT_PROGRAM_FLOW_ARCS': 'YES',  # -fprofile-arcs
+              'GCC_GENERATE_TEST_COVERAGE_FILES': 'YES',  # -ftest-coverage
+            },
+            # Add -lgcov for types executable, shared_library, and
+            # loadable_module; not for static_library.
+            # This is a delayed conditional.
+            'target_conditions': [
+              ['_type!="static_library"', {
+                'xcode_settings': { 'OTHER_LDFLAGS': [ '-lgcov' ] },
+              }],
+            ],
+          }],
+          # Linux gyp (into scons) doesn't like target_conditions?
+          # TODO(???): track down why 'target_conditions' doesn't work
+          # on Linux gyp into scons like it does on Mac gyp into xcodeproj.
+          ['OS=="linux"', {
+            'cflags': [ '-ftest-coverage',
+                        '-fprofile-arcs' ],
+            'link_settings': { 'libraries': [ '-lgcov' ] },
+          }],
+          # Finally, for Windows, we simply turn on profiling.
+          ['OS=="win"', {
+            'msvs_settings': {
+              'VCLinkerTool': {
+                'Profile': 'true',
+              },
+              'VCCLCompilerTool': {
+                # /Z7, not /Zi, so coverage is happyb
+                'DebugInformationFormat': '1',
+                'AdditionalOptions': ['/Yd'],
+              }
+            }
+         }],  # OS==win
+        ],  # conditions for coverage
+      }],  # coverage!=0
+    ],  # conditions for 'target_defaults'
+    'target_conditions': [
+      [ 'OS=="linux" or OS=="freebsd" or OS=="openbsd"', {
+        'cflags!': [
+          '-Wall',
+          '-Wextra',
+          '-Werror',
+        ],
+      }],
+      [ 'OS=="win"', {
+        'defines': [
+          '_CRT_SECURE_NO_DEPRECATE',
+          '_CRT_NONSTDC_NO_WARNINGS',
+          '_CRT_NONSTDC_NO_DEPRECATE',
+          # This is required for ATL to use XP-safe versions of its functions.
+          '_USING_V110_SDK71_',
+        ],
+        'msvs_disabled_warnings': [4800],
+        'msvs_settings': {
+          'VCCLCompilerTool': {
+            'WarnAsError': 'true',
+            'Detect64BitPortabilityProblems': 'false',
+          },
+        },
+      }],
+      [ 'OS=="mac"', {
+        'xcode_settings': {
+          'GCC_TREAT_WARNINGS_AS_ERRORS': 'NO',
+          'WARNING_CFLAGS!': ['-Wall'],
+        },
+      }],
+    ],  # target_conditions for 'target_defaults'
+    'default_configuration': 'Debug',
+    'configurations': {
+      # VCLinkerTool LinkIncremental values below:
+      #   0 == default
+      #   1 == /INCREMENTAL:NO
+      #   2 == /INCREMENTAL
+      # Debug links incremental, Release does not.
+      #
+      # Abstract base configurations to cover common
+      # attributes.
+      #
+      'Common_Base': {
+        'abstract': 1,
+        'msvs_configuration_attributes': {
+          'OutputDirectory': '$(SolutionDir)$(ConfigurationName)',
+          'IntermediateDirectory': '$(OutDir)\\obj\\$(ProjectName)',
+          'CharacterSet': '1',
+        },
+      },
+      'x86_Base': {
+        'abstract': 1,
+        'msvs_settings': {
+          'VCLinkerTool': {
+            'MinimumRequiredVersion': '5.01',  # XP.
+            'TargetMachine': '1',
+          },
+        },
+        'msvs_configuration_platform': 'Win32',
+      },
+      'x64_Base': {
+        'abstract': 1,
+        'msvs_configuration_platform': 'x64',
+        'msvs_settings': {
+          'VCLinkerTool': {
+            'TargetMachine': '17', # x86 - 64
+            'AdditionalLibraryDirectories!':
+              ['<(DEPTH)/third_party/platformsdk_win7/files/Lib'],
+            'AdditionalLibraryDirectories':
+              ['<(DEPTH)/third_party/platformsdk_win7/files/Lib/x64'],
+          },
+          'VCLibrarianTool': {
+            'AdditionalLibraryDirectories!':
+              ['<(DEPTH)/third_party/platformsdk_win7/files/Lib'],
+            'AdditionalLibraryDirectories':
+              ['<(DEPTH)/third_party/platformsdk_win7/files/Lib/x64'],
+          },
+        },
+        'defines': [
+          # Not sure if tcmalloc works on 64-bit Windows.
+          'NO_TCMALLOC',
+        ],
+      },
+      'Debug_Base': {
+        'abstract': 1,
+        'xcode_settings': {
+          'COPY_PHASE_STRIP': 'NO',
+          'GCC_OPTIMIZATION_LEVEL': '<(mac_debug_optimization)',
+          'OTHER_CFLAGS': [ '<@(debug_extra_cflags)', ],
+        },
+        'msvs_settings': {
+          'VCCLCompilerTool': {
+            'Optimization': '<(win_debug_Optimization)',
+            'PreprocessorDefinitions': ['_DEBUG'],
+            'BasicRuntimeChecks': '3',
+            'RuntimeLibrary': '<(win_debug_RuntimeLibrary)',
+          },
+          'VCLinkerTool': {
+            'LinkIncremental': '<(msvs_debug_link_incremental)',
+          },
+          'VCResourceCompilerTool': {
+            'PreprocessorDefinitions': ['_DEBUG'],
+          },
+        },
+        'conditions': [
+          ['OS=="linux"', {
+            'cflags': [
+              '<@(debug_extra_cflags)',
+            ],
+          }],
+        ],
+      },
+      'Release_Base': {
+        'abstract': 1,
+        'defines': [
+          'NDEBUG',
+        ],
+        'xcode_settings': {
+          'DEAD_CODE_STRIPPING': 'YES',  # -Wl,-dead_strip
+          'GCC_OPTIMIZATION_LEVEL': '<(mac_release_optimization)',
+          'OTHER_CFLAGS': [ '<@(release_extra_cflags)', ],
+        },
+        'msvs_settings': {
+          'VCCLCompilerTool': {
+            'Optimization': '<(win_release_Optimization)',
+            'RuntimeLibrary': '<(win_release_RuntimeLibrary)',
+          },
+          'VCLinkerTool': {
+            'LinkIncremental': '1',
+          },
+        },
+        'conditions': [
+          ['release_valgrind_build==0', {
+            'defines': ['NVALGRIND'],
+          }],
+          ['win_use_allocator_shim==0', {
+            'defines': ['NO_TCMALLOC'],
+          }],
+          ['win_release_RuntimeLibrary==2', {
+            # Visual C++ 2008 barfs when building anything with /MD (msvcrt):
+            #  VC\include\typeinfo(139) : warning C4275: non dll-interface
+            #  class 'stdext::exception' used as base for dll-interface
+            #  class 'std::bad_cast'
+            'msvs_disabled_warnings': [4275],
+          }],
+          ['OS=="linux"', {
+            'cflags': [
+             '<@(release_extra_cflags)',
+            ],
+          }],
+        ],
+      },
+      'Purify_Base': {
+        'abstract': 1,
+        'defines': [
+          'PURIFY',
+          'NO_TCMALLOC',
+        ],
+        'msvs_settings': {
+          'VCCLCompilerTool': {
+            'Optimization': '0',
+            'RuntimeLibrary': '0',
+            'BufferSecurityCheck': 'false',
+          },
+          'VCLinkerTool': {
+            'EnableCOMDATFolding': '1',
+            'LinkIncremental': '1',
+          },
+        },
+      },
+      #
+      # Concrete configurations
+      #
+      'Debug': {
+        'inherit_from': ['Common_Base', 'x86_Base', 'Debug_Base'],
+      },
+      'Release': {
+        'inherit_from': ['Common_Base', 'x86_Base', 'Release_Base'],
+        'conditions': [
+          ['msvs_use_common_release', {
+            'defines': ['OFFICIAL_BUILD'],
+            'msvs_settings': {
+              'VCCLCompilerTool': {
+                'Optimization': '3',
+                'StringPooling': 'true',
+                'OmitFramePointers': 'true',
+                'InlineFunctionExpansion': '2',
+                'EnableIntrinsicFunctions': 'true',
+                'FavorSizeOrSpeed': '2',
+                'OmitFramePointers': 'true',
+                'EnableFiberSafeOptimizations': 'true',
+                'WholeProgramOptimization': 'true',
+              },
+              'VCLibrarianTool': {
+                'AdditionalOptions': ['/ltcg', '/expectedoutputsize:120000000'],
+              },
+              'VCLinkerTool': {
+                'LinkIncremental': '1',
+                'OptimizeReferences': '2',
+                'EnableCOMDATFolding': '2',
+                'OptimizeForWindows98': '1',
+                'LinkTimeCodeGeneration': '1',
+              },
+            },
+          }],
+        ]
+      },
+      'conditions': [
+        [ 'OS=="win"', {
+          # TODO(bradnelson): add a gyp mechanism to make this more graceful.
+          'Purify': {
+            'inherit_from': ['Common_Base', 'x86_Base', 'Release_Base', 'Purify'],
+          },
+          'Debug_x64': {
+            'inherit_from': ['Common_Base', 'x64_Base', 'Debug_Base'],
+          },
+          'Release_x64': {
+            'inherit_from': ['Common_Base', 'x64_Base', 'Release_Base'],
+          },
+          'Purify_x64': {
+            'inherit_from': ['Common_Base', 'x64_Base', 'Release_Base', 'Purify_Base'],
+          },
+        }],
+      ],
+    },
+  },
+  'conditions': [
+    ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris"', {
+      'target_defaults': {
+        # Enable -Werror by default, but put it in a variable so it can
+        # be disabled in ~/.gyp/include.gypi on the valgrind builders.
+        'variables': {
+          # Use -fno-strict-aliasing by default since gcc 4.4 has periodic
+          # issues that slip through the cracks. We could do this just for
+          # gcc 4.4 but it makes more sense to be consistent on all
+          # compilers in use. TODO(Craig): turn this off again when
+          # there is some 4.4 test infrastructure in place and existing
+          # aliasing issues have been fixed.
+          'no_strict_aliasing%': 1,
+          'conditions': [['OS=="linux"', {'werror%': '-Werror',}],
+                         ['OS=="freebsd"', {'werror%': '',}],
+                         ['OS=="openbsd"', {'werror%': '',}],
+          ],
+        },
+        'cflags': [
+          '<(werror)',  # See note above about the werror variable.
+          '-pthread',
+          '-fno-exceptions',
+          '-Wall',
+          # TODO(evan): turn this back on once all the builds work.
+          # '-Wextra',
+          # Don't warn about unused function params.  We use those everywhere.
+          '-Wno-unused-parameter',
+          # Don't warn about the "struct foo f = {0};" initialization pattern.
+          '-Wno-missing-field-initializers',
+          '-D_FILE_OFFSET_BITS=64',
+          # Don't export any symbols (for example, to plugins we dlopen()).
+          # Note: this is *required* to make some plugins work.
+          '-fvisibility=hidden',
+        ],
+        'cflags_cc': [
+          '-frtti',
+          '-fno-threadsafe-statics',
+          # Make inline functions have hidden visiblity by default.
+          # Surprisingly, not covered by -fvisibility=hidden.
+          '-fvisibility-inlines-hidden',
+        ],
+        'ldflags': [
+          '-pthread', '-Wl,-z,noexecstack',
+        ],
+        'scons_variable_settings': {
+          'LIBPATH': ['$LIB_DIR'],
+          # Linking of large files uses lots of RAM, so serialize links
+          # using the handy flock command from util-linux.
+          'FLOCK_LINK': ['flock', '$TOP_BUILDDIR/linker.lock', '$LINK'],
+          'FLOCK_SHLINK': ['flock', '$TOP_BUILDDIR/linker.lock', '$SHLINK'],
+          'FLOCK_LDMODULE': ['flock', '$TOP_BUILDDIR/linker.lock', '$LDMODULE'],
+
+          # We have several cases where archives depend on each other in
+          # a cyclic fashion.  Since the GNU linker does only a single
+          # pass over the archives we surround the libraries with
+          # --start-group and --end-group (aka -( and -) ). That causes
+          # ld to loop over the group until no more undefined symbols
+          # are found. In an ideal world we would only make groups from
+          # those libraries which we knew to be in cycles. However,
+          # that's tough with SCons, so we bodge it by making all the
+          # archives a group by redefining the linking command here.
+          #
+          # TODO:  investigate whether we still have cycles that
+          # require --{start,end}-group.  There has been a lot of
+          # refactoring since this was first coded, which might have
+          # eliminated the circular dependencies.
+          #
+          # Note:  $_LIBDIRFLAGS comes before ${LINK,SHLINK,LDMODULE}FLAGS
+          # so that we prefer our own built libraries (e.g. -lpng) to
+          # system versions of libraries that pkg-config might turn up.
+          # TODO(sgk): investigate handling this not by re-ordering the
+          # flags this way, but by adding a hook to use the SCons
+          # ParseFlags() option on the output from pkg-config.
+          'LINKCOM': [['$FLOCK_LINK', '-o', '$TARGET',
+                       '$_LIBDIRFLAGS', '$LINKFLAGS', '$SOURCES',
+                       '-Wl,--start-group', '$_LIBFLAGS', '-Wl,--end-group']],
+          'SHLINKCOM': [['$FLOCK_SHLINK', '-o', '$TARGET',
+                         '$_LIBDIRFLAGS', '$SHLINKFLAGS', '$SOURCES',
+                         '-Wl,--start-group', '$_LIBFLAGS', '-Wl,--end-group']],
+          'LDMODULECOM': [['$FLOCK_LDMODULE', '-o', '$TARGET',
+                           '$_LIBDIRFLAGS', '$LDMODULEFLAGS', '$SOURCES',
+                           '-Wl,--start-group', '$_LIBFLAGS', '-Wl,--end-group']],
+          'IMPLICIT_COMMAND_DEPENDENCIES': 0,
+        },
+        'scons_import_variables': [
+          'AS',
+          'CC',
+          'CXX',
+          'LINK',
+        ],
+        'scons_propagate_variables': [
+          'AS',
+          'CC',
+          'CCACHE_DIR',
+          'CXX',
+          'DISTCC_DIR',
+          'DISTCC_HOSTS',
+          'HOME',
+          'INCLUDE_SERVER_ARGS',
+          'INCLUDE_SERVER_PORT',
+          'LINK',
+          'CHROME_BUILD_TYPE',
+          'CHROMIUM_BUILD',
+          'OFFICIAL_BUILD',
+        ],
+        'configurations': {
+          'Debug_Base': {
+            'variables': {
+              'debug_optimize%': '0',
+            },
+            'defines': [
+              '_DEBUG',
+            ],
+            'cflags': [
+              '-O>(debug_optimize)',
+              '-g',
+              # One can use '-gstabs' to enable building the debugging
+              # information in STABS format for breakpad's dumpsyms.
+            ],
+            'ldflags': [
+              '-rdynamic',  # Allows backtrace to resolve symbols.
+            ],
+          },
+          'Release_Base': {
+            'variables': {
+              'release_optimize%': '2',
+            },
+            'cflags': [
+              '-O>(release_optimize)',
+              # Don't emit the GCC version ident directives, they just end up
+              # in the .comment section taking up binary size.
+              '-fno-ident',
+              # Put data and code in their own sections, so that unused symbols
+              # can be removed at link time with --gc-sections.
+              '-fdata-sections',
+              '-ffunction-sections',
+            ],
+            'ldflags': [
+              '-Wl,--gc-sections',
+            ],
+          },
+        },
+        'variants': {
+          'coverage': {
+            'cflags': ['-fprofile-arcs', '-ftest-coverage'],
+            'ldflags': ['-fprofile-arcs'],
+          },
+          'profile': {
+            'cflags': ['-pg', '-g'],
+            'ldflags': ['-pg'],
+          },
+          'symbols': {
+            'cflags': ['-g'],
+          },
+        },
+        'conditions': [
+          [ 'target_arch=="ia32"', {
+            'asflags': [
+              # Needed so that libs with .s files (e.g. libicudata.a)
+              # are compatible with the general 32-bit-ness.
+              '-32',
+            ],
+            # All floating-point computations on x87 happens in 80-bit
+            # precision.  Because the C and C++ language standards allow
+            # the compiler to keep the floating-point values in higher
+            # precision than what's specified in the source and doing so
+            # is more efficient than constantly rounding up to 64-bit or
+            # 32-bit precision as specified in the source, the compiler,
+            # especially in the optimized mode, tries very hard to keep
+            # values in x87 floating-point stack (in 80-bit precision)
+            # as long as possible. This has important side effects, that
+            # the real value used in computation may change depending on
+            # how the compiler did the optimization - that is, the value
+            # kept in 80-bit is different than the value rounded down to
+            # 64-bit or 32-bit. There are possible compiler options to make
+            # this behavior consistent (e.g. -ffloat-store would keep all
+            # floating-values in the memory, thus force them to be rounded
+            # to its original precision) but they have significant runtime
+            # performance penalty.
+            #
+            # -mfpmath=sse -msse2 makes the compiler use SSE instructions
+            # which keep floating-point values in SSE registers in its
+            # native precision (32-bit for single precision, and 64-bit for
+            # double precision values). This means the floating-point value
+            # used during computation does not change depending on how the
+            # compiler optimized the code, since the value is always kept
+            # in its specified precision.
+            'conditions': [
+              ['disable_sse2==0', {
+                'cflags': [
+                  '-march=pentium4',
+                  '-msse2',
+                  '-mfpmath=sse',
+                ],
+              }],
+            ],
+            # -mmmx allows mmintrin.h to be used for mmx intrinsics.
+            # video playback is mmx and sse2 optimized.
+            'cflags': [
+              '-m32',
+              '-mmmx',
+            ],
+            'ldflags': [
+              '-m32',
+            ],
+          }],
+          ['target_arch=="arm"', {
+            'target_conditions': [
+              ['_toolset=="target"', {
+                'cflags_cc': [
+                  # The codesourcery arm-2009q3 toolchain warns at that the ABI
+                  # has changed whenever it encounters a varargs function. This
+                  # silences those warnings, as they are not helpful and
+                  # clutter legitimate warnings.
+                  '-Wno-abi',
+                ],
+                'conditions': [
+                  ['arm_thumb == 1', {
+                    'cflags': [
+                    '-mthumb',
+                    # TODO(piman): -Wa,-mimplicit-it=thumb is needed for
+                    # inline assembly that uses condition codes but it's
+                    # suboptimal. Better would be to #ifdef __thumb__ at the
+                    # right place and have a separate thumb path.
+                    '-Wa,-mimplicit-it=thumb',
+                    ]
+                  }],
+                  ['arm_version==7', {
+                    'cflags': [
+                      '-march=armv7-a',
+                      '-mtune=cortex-a8',
+                      '-mfloat-abi=softfp',
+                    ],
+                    'conditions': [
+                      ['arm_neon==1', {
+                        'cflags': [ '-mfpu=neon', ],
+                      }, {
+                        'cflags': [ '-mfpu=<(arm_fpu)', ],
+                      }]
+                    ],
+                  }],
+                ],
+              }],
+            ],
+          }],
+          ['linux_fpic==1', {
+            'cflags': [
+              '-fPIC',
+            ],
+          }],
+          ['sysroot!=""', {
+            'target_conditions': [
+              ['_toolset=="target"', {
+                'cflags': [
+                  '--sysroot=<(sysroot)',
+                ],
+                'ldflags': [
+                  '--sysroot=<(sysroot)',
+                ],
+              }]]
+          }],
+          ['no_strict_aliasing==1', {
+            'cflags': [
+              '-fno-strict-aliasing',
+            ],
+          }],
+          ['linux_use_heapchecker==1', {
+            'variables': {'linux_use_tcmalloc%': 1},
+          }],
+          ['linux_use_tcmalloc==0', {
+            'defines': ['NO_TCMALLOC'],
+          }],
+          ['linux_use_heapchecker==0', {
+            'defines': ['NO_HEAPCHECKER'],
+          }],
+        ],
+      },
+    }],
+    # FreeBSD-specific options; note that most FreeBSD options are set above,
+    # with Linux.
+    ['OS=="freebsd"', {
+      'target_defaults': {
+        'ldflags': [
+          '-Wl,--no-keep-memory',
+        ],
+      },
+    }],
+    ['OS=="solaris"', {
+      'cflags!': ['-fvisibility=hidden'],
+      'cflags_cc!': ['-fvisibility-inlines-hidden'],
+    }],
+    ['OS=="mac"', {
+      'target_defaults': {
+        'variables': {
+          # This should be 'mac_real_dsym%', but there seems to be a bug
+          # with % in variables that are intended to be set to different
+          # values in different targets, like this one.
+          'mac_real_dsym': 0,  # Fake .dSYMs are fine in most cases.
+        },
+        'mac_bundle': 0,
+        'xcode_settings': {
+          'ALWAYS_SEARCH_USER_PATHS': 'NO',
+          'GCC_C_LANGUAGE_STANDARD': 'c99',         # -std=c99
+          'GCC_CW_ASM_SYNTAX': 'NO',                # No -fasm-blocks
+          'GCC_DYNAMIC_NO_PIC': 'NO',               # No -mdynamic-no-pic
+                                                    # (Equivalent to -fPIC)
+          'GCC_ENABLE_CPP_EXCEPTIONS': 'NO',        # -fno-exceptions
+          'GCC_ENABLE_CPP_RTTI': 'YES',             # -frtti
+          'GCC_ENABLE_PASCAL_STRINGS': 'NO',        # No -mpascal-strings
+          # GCC_INLINES_ARE_PRIVATE_EXTERN maps to -fvisibility-inlines-hidden
+          'GCC_INLINES_ARE_PRIVATE_EXTERN': 'YES',
+          'GCC_OBJC_CALL_CXX_CDTORS': 'YES',        # -fobjc-call-cxx-cdtors
+          'GCC_SYMBOLS_PRIVATE_EXTERN': 'YES',      # -fvisibility=hidden
+          'GCC_THREADSAFE_STATICS': 'NO',           # -fno-threadsafe-statics
+          'GCC_TREAT_WARNINGS_AS_ERRORS': 'YES',    # -Werror
+          'GCC_VERSION': '4.2',
+          'GCC_WARN_ABOUT_MISSING_NEWLINE': 'YES',  # -Wnewline-eof
+          # MACOSX_DEPLOYMENT_TARGET maps to -mmacosx-version-min
+          'MACOSX_DEPLOYMENT_TARGET': '<(mac_deployment_target)',
+          'PREBINDING': 'NO',                       # No -Wl,-prebind
+          'USE_HEADERMAP': 'NO',
+          'WARNING_CFLAGS': ['-Wall', '-Wendif-labels'],
+          'conditions': [
+            ['chromium_mac_pch', {'GCC_PRECOMPILE_PREFIX_HEADER': 'YES'},
+                                 {'GCC_PRECOMPILE_PREFIX_HEADER': 'NO'}
+            ],
+          ],
+        },
+        'target_conditions': [
+          ['_type!="static_library"', {
+            'xcode_settings': {'OTHER_LDFLAGS': ['-Wl,-search_paths_first']},
+          }],
+          ['_mac_bundle', {
+            'xcode_settings': {'OTHER_LDFLAGS': ['-Wl,-ObjC']},
+          }],
+        ],  # target_conditions
+      },  # target_defaults
+    }],  # OS=="mac"
+    ['OS=="win"', {
+      'target_defaults': {
+        'defines': [
+          '_WIN32_WINNT=0x0600',
+          'WINVER=0x0600',
+          'WIN32',
+          '_WINDOWS',
+          '_HAS_EXCEPTIONS=0',
+          'NOMINMAX',
+          '_CRT_RAND_S',
+          'CERT_CHAIN_PARA_HAS_EXTRA_FIELDS',
+          'WIN32_LEAN_AND_MEAN',
+          '_SECURE_ATL',
+          '_HAS_TR1=0',
+        ],
+        'msvs_system_include_dirs': [
+          '<(DEPTH)/third_party/platformsdk_win7/files/Include',
+          '$(VSInstallDir)/VC/atlmfc/include',
+        ],
+        'msvs_cygwin_dirs': ['<(DEPTH)/third_party/cygwin'],
+        'msvs_disabled_warnings': [
+          4100, 4127, 4396, 4503, 4512, 4819, 4995, 4702
+        ],
+        'msvs_settings': {
+          'VCCLCompilerTool': {
+            'MinimalRebuild': 'false',
+            'ExceptionHandling': '0',
+            'BufferSecurityCheck': 'true',
+            'EnableFunctionLevelLinking': 'true',
+            'RuntimeTypeInfo': 'false',
+            'WarningLevel': '4',
+            'WarnAsError': 'true',
+            'DebugInformationFormat': '3',
+            'conditions': [
+              [ 'msvs_multi_core_compile', {
+                'AdditionalOptions': ['/MP'],
+              }],
+            ],
+          },
+          'VCLibrarianTool': {
+            'AdditionalOptions': ['/ignore:4221'],
+            'AdditionalLibraryDirectories':
+              ['<(DEPTH)/third_party/platformsdk_win7/files/Lib'],
+          },
+          'VCLinkerTool': {
+            'AdditionalDependencies': [
+              'wininet.lib',
+              'version.lib',
+              'msimg32.lib',
+              'ws2_32.lib',
+              'usp10.lib',
+              'psapi.lib',
+              'dbghelp.lib',
+            ],
+            'AdditionalLibraryDirectories':
+              ['<(DEPTH)/third_party/platformsdk_win7/files/Lib'],
+            'GenerateDebugInformation': 'true',
+            'MapFileName': '$(OutDir)\\$(TargetName).map',
+            'ImportLibrary': '$(OutDir)\\lib\\$(TargetName).lib',
+            'FixedBaseAddress': '1',
+            # SubSystem values:
+            #   0 == not set
+            #   1 == /SUBSYSTEM:CONSOLE
+            #   2 == /SUBSYSTEM:WINDOWS
+            # Most of the executables we'll ever create are tests
+            # and utilities with console output.
+            'SubSystem': '1',
+          },
+          'VCMIDLTool': {
+            'GenerateStublessProxies': 'true',
+            'TypeLibraryName': '$(InputName).tlb',
+            'OutputDirectory': '$(IntDir)',
+            'HeaderFileName': '$(InputName).h',
+            'DLLDataFileName': 'dlldata.c',
+            'InterfaceIdentifierFileName': '$(InputName)_i.c',
+            'ProxyFileName': '$(InputName)_p.c',
+          },
+          'VCResourceCompilerTool': {
+            'Culture' : '1033',
+            'AdditionalIncludeDirectories': ['<(DEPTH)'],
+          },
+        },
+      },
+    }],
+    ['disable_nacl==1 or OS=="freebsd" or OS=="openbsd" or OS=="solaris"', {
+      'target_defaults': {
+        'defines': [
+          'DISABLE_NACL',
+        ],
+      },
+    }],
+    ['OS=="win" and msvs_use_common_linker_extras', {
+      'target_defaults': {
+        'msvs_settings': {
+          'VCLinkerTool': {
+            'DelayLoadDLLs': [
+              'dbghelp.dll',
+              'dwmapi.dll',
+              'uxtheme.dll',
+            ],
+          },
+        },
+        'configurations': {
+          'x86_Base': {
+            'msvs_settings': {
+              'VCLinkerTool': {
+                'AdditionalOptions': [
+                  '/safeseh',
+                  '/dynamicbase',
+                  '/ignore:4199',
+                  '/ignore:4221',
+                  '/nxcompat',
+                ],
+              },
+            },
+          },
+          'x64_Base': {
+            'msvs_settings': {
+              'VCLinkerTool': {
+                'AdditionalOptions': [
+                  # safeseh is not compatible with x64
+                  '/dynamicbase',
+                  '/ignore:4199',
+                  '/ignore:4221',
+                  '/nxcompat',
+                ],
+              },
+            },
+          },
+        },
+      },
+    }],
+    ['enable_new_npdevice_api==1', {
+      'target_defaults': {
+        'defines': [
+          'ENABLE_NEW_NPDEVICE_API',
+        ],
+      },
+    }],
+  ],
+  'scons_settings': {
+    'sconsbuild_dir': '<(DEPTH)/sconsbuild',
+    'tools': ['ar', 'as', 'gcc', 'g++', 'gnulink', 'chromium_builders'],
+  },
+  'xcode_settings': {
+    # DON'T ADD ANYTHING NEW TO THIS BLOCK UNLESS YOU REALLY REALLY NEED IT!
+    # This block adds *project-wide* configuration settings to each project
+    # file.  It's almost always wrong to put things here.  Specify your
+    # custom xcode_settings in target_defaults to add them to targets instead.
+
+    # In an Xcode Project Info window, the "Base SDK for All Configurations"
+    # setting sets the SDK on a project-wide basis.  In order to get the
+    # configured SDK to show properly in the Xcode UI, SDKROOT must be set
+    # here at the project level.
+    'SDKROOT': 'macosx<(mac_sdk)',  # -isysroot
+
+    # The Xcode generator will look for an xcode_settings section at the root
+    # of each dict and use it to apply settings on a file-wide basis.  Most
+    # settings should not be here, they should be in target-specific
+    # xcode_settings sections, or better yet, should use non-Xcode-specific
+    # settings in target dicts.  SYMROOT is a special case, because many other
+    # Xcode variables depend on it, including variables such as
+    # PROJECT_DERIVED_FILE_DIR.  When a source group corresponding to something
+    # like PROJECT_DERIVED_FILE_DIR is added to a project, in order for the
+    # files to appear (when present) in the UI as actual files and not red
+    # red "missing file" proxies, the correct path to PROJECT_DERIVED_FILE_DIR,
+    # and therefore SYMROOT, needs to be set at the project level.
+    'SYMROOT': '<(DEPTH)/xcodebuild',
+  },
+}
diff --git a/google-breakpad/src/build/filename_rules.gypi b/google-breakpad/src/build/filename_rules.gypi
new file mode 100644
index 0000000..78cd180
--- /dev/null
+++ b/google-breakpad/src/build/filename_rules.gypi
@@ -0,0 +1,57 @@
+# Copyright 2014 Google Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+{
+  'target_conditions': [
+    ['OS!="win"', {
+      'sources/': [
+        ['exclude', '(^|/)windows/'],
+      ],
+    }],
+    ['OS!="linux"', {
+      'sources/': [
+        ['exclude', '(^|/)linux/'],
+      ],
+    }],
+    ['OS!="mac"', {
+      'sources/': [
+        ['exclude', '(^|/)mac/'],
+      ],
+    }],
+    ['OS!="android"', {
+      'sources/': [
+        ['exclude', '(^|/)android/'],
+      ],
+    }],
+    ['OS!="solaris"', {
+      'sources/': [
+        ['exclude', '(^|/)solaris/'],
+      ],
+    }],
+  ],
+}
diff --git a/google-breakpad/src/build/gyp_breakpad b/google-breakpad/src/build/gyp_breakpad
new file mode 100755
index 0000000..0b8077d
--- /dev/null
+++ b/google-breakpad/src/build/gyp_breakpad
@@ -0,0 +1,67 @@
+#!/usr/bin/env python
+
+# Copyright 2014 Google Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+import os
+import platform
+import sys
+
+script_dir = os.path.dirname(os.path.realpath(__file__))
+breakpad_root = os.path.abspath(os.path.join(script_dir, os.pardir))
+
+sys.path.insert(0, os.path.join(breakpad_root, 'tools', 'gyp', 'pylib'))
+import gyp
+
+def run_gyp(args):
+  rc = gyp.main(args)
+  if rc != 0:
+    print 'Error running GYP'
+    sys.exit(rc)
+
+
+def main():
+  args = sys.argv[1:]
+  args.append(os.path.join(script_dir, 'all.gyp'))
+
+  args.append('-I')
+  args.append(os.path.join(breakpad_root, 'build', 'common.gypi'))
+
+  args.extend(['-D', 'gyp_output_dir=out'])
+
+  # Set the GYP DEPTH variable to the root of the project.
+  args.append('--depth=' + os.path.relpath(breakpad_root))
+
+  print 'Updating projects from gyp files...'
+  sys.stdout.flush()
+
+  run_gyp(args)
+
+
+if __name__ == '__main__':
+  sys.exit(main())
diff --git a/google-breakpad/src/build/testing.gypi b/google-breakpad/src/build/testing.gypi
new file mode 100644
index 0000000..3a77230
--- /dev/null
+++ b/google-breakpad/src/build/testing.gypi
@@ -0,0 +1,90 @@
+# Copyright 2014 Google Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+{
+  'targets': [
+    {
+      'target_name': 'gtest',
+      'type': 'static_library',
+      'sources': [
+        '../testing/gtest/src/gtest-all.cc',
+      ],
+      'include_dirs': [
+        '../testing/gtest',
+        '../testing/gtest/include',
+      ],
+      'direct_dependent_settings': {
+        'include_dirs': [
+          '../testing/gtest/include',
+        ],
+      },
+    },
+    {
+      'target_name': 'gtest_main',
+      'type': 'static_library',
+      'dependencies': [
+        'gtest',
+      ],
+      'sources': [
+        'gtest/src/gtest_main.cc',
+      ],
+    },
+    {
+      'target_name': 'gmock',
+      'type': 'static_library',
+      'dependencies': [
+        'gtest',
+      ],
+      'sources': [
+        '../testing/src/gmock-all.cc',
+      ],
+      'include_dirs': [
+        '../testing',
+        '../testing/include',
+      ],
+      'direct_dependent_settings': {
+        'include_dirs': [
+          '../testing/include',
+        ],
+      },
+      'export_dependent_settings': [
+        'gtest',
+      ],
+    },
+    {
+      'target_name': 'gmock_main',
+      'type': 'static_library',
+      'dependencies': [
+        'gmock',
+      ],
+      'sources': [
+        '../testing/src/gmock_main.cc',
+      ],
+    },
+  ],
+}
diff --git a/google-breakpad/src/client/apple/Framework/BreakpadDefines.h b/google-breakpad/src/client/apple/Framework/BreakpadDefines.h
new file mode 100644
index 0000000..410a5a6
--- /dev/null
+++ b/google-breakpad/src/client/apple/Framework/BreakpadDefines.h
@@ -0,0 +1,73 @@
+// Copyright (c) 2011, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Keys for configuration file
+#define kReporterMinidumpDirectoryKey "MinidumpDir"
+#define kReporterMinidumpIDKey        "MinidumpID"
+
+// Filename for recording uploaded IDs
+#define kReporterLogFilename          "uploads.log"
+
+// The default subdirectory of the Library to put crash dumps in
+// The subdirectory is
+//  ~/Library/<kDefaultLibrarySubdirectory>/<GoogleBreakpadProduct>
+#define kDefaultLibrarySubdirectory   "Breakpad"
+
+// Specify some special keys to be used in the configuration file that is
+// generated by Breakpad and consumed by the crash_sender.
+#define BREAKPAD_PRODUCT               "BreakpadProduct"
+#define BREAKPAD_PRODUCT_DISPLAY       "BreakpadProductDisplay"
+#define BREAKPAD_VERSION               "BreakpadVersion"
+#define BREAKPAD_VENDOR                "BreakpadVendor"
+#define BREAKPAD_URL                   "BreakpadURL"
+#define BREAKPAD_REPORT_INTERVAL       "BreakpadReportInterval"
+#define BREAKPAD_SKIP_CONFIRM          "BreakpadSkipConfirm"
+#define BREAKPAD_CONFIRM_TIMEOUT       "BreakpadConfirmTimeout"
+#define BREAKPAD_SEND_AND_EXIT         "BreakpadSendAndExit"
+#define BREAKPAD_DUMP_DIRECTORY        "BreakpadMinidumpLocation"
+#define BREAKPAD_INSPECTOR_LOCATION    "BreakpadInspectorLocation"
+#define BREAKPAD_REPORTER_EXE_LOCATION \
+  "BreakpadReporterExeLocation"
+#define BREAKPAD_LOGFILES              "BreakpadLogFiles"
+#define BREAKPAD_LOGFILE_UPLOAD_SIZE   "BreakpadLogFileTailSize"
+#define BREAKPAD_REQUEST_COMMENTS      "BreakpadRequestComments"
+#define BREAKPAD_COMMENTS              "BreakpadComments"
+#define BREAKPAD_REQUEST_EMAIL         "BreakpadRequestEmail"
+#define BREAKPAD_EMAIL                 "BreakpadEmail"
+#define BREAKPAD_SERVER_TYPE           "BreakpadServerType"
+#define BREAKPAD_SERVER_PARAMETER_DICT "BreakpadServerParameters"
+#define BREAKPAD_IN_PROCESS            "BreakpadInProcess"
+
+// The keys below are NOT user supplied, and are used internally.
+#define BREAKPAD_PROCESS_START_TIME       "BreakpadProcStartTime"
+#define BREAKPAD_PROCESS_UP_TIME          "BreakpadProcessUpTime"
+#define BREAKPAD_PROCESS_CRASH_TIME       "BreakpadProcessCrashTime"
+#define BREAKPAD_LOGFILE_KEY_PREFIX       "BreakpadAppLogFile"
+#define BREAKPAD_SERVER_PARAMETER_PREFIX  "BreakpadServerParameterPrefix_"
+#define BREAKPAD_ON_DEMAND                "BreakpadOnDemand"
diff --git a/google-breakpad/src/client/ios/Breakpad.h b/google-breakpad/src/client/ios/Breakpad.h
new file mode 100644
index 0000000..c099ad0
--- /dev/null
+++ b/google-breakpad/src/client/ios/Breakpad.h
@@ -0,0 +1,246 @@
+// Copyright (c) 2011, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Framework to provide a simple C API to crash reporting for
+// applications.  By default, if any machine-level exception (e.g.,
+// EXC_BAD_ACCESS) occurs, it will be handled by the BreakpadRef
+// object as follows:
+//
+// 1. Create a minidump file (see Breakpad for details)
+// 2. Create a config file.
+//
+// These files can then be uploaded to a server.
+
+typedef void *BreakpadRef;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <Foundation/Foundation.h>
+
+#include <client/apple/Framework/BreakpadDefines.h>
+
+// The keys in the dictionary returned by |BreakpadGenerateReport|.
+#define BREAKPAD_OUTPUT_DUMP_FILE   "BreakpadDumpFile"
+#define BREAKPAD_OUTPUT_CONFIG_FILE "BreakpadConfigFile"
+
+// Optional user-defined function to decide if we should handle this crash or
+// forward it along.
+// Return true if you want Breakpad to handle it.
+// Return false if you want Breakpad to skip it
+// The exception handler always returns false, as if SEND_AND_EXIT were false
+// (which means the next exception handler will take the exception)
+typedef bool (*BreakpadFilterCallback)(int exception_type,
+                                       int exception_code,
+                                       mach_port_t crashing_thread,
+                                       void *context);
+
+// Create a new BreakpadRef object and install it as an exception
+// handler.  The |parameters| will typically be the contents of your
+// bundle's Info.plist.
+//
+// You can also specify these additional keys for customizable behavior:
+// Key:                           Value:
+// BREAKPAD_PRODUCT               Product name (e.g., "MyAwesomeProduct")
+//                                This one is used as the key to identify
+//                                the product when uploading. Falls back to
+//                                CFBundleName if not specified.
+//                                REQUIRED
+//
+// BREAKPAD_PRODUCT_DISPLAY       This is the display name, e.g. a pretty
+//                                name for the product when the crash_sender
+//                                pops up UI for the user. Falls back first to
+//                                CFBundleDisplayName and then to
+//                                BREAKPAD_PRODUCT if not specified.
+//
+// BREAKPAD_VERSION               Product version (e.g., 1.2.3), used
+//                                as metadata for crash report. Falls back to
+//                                CFBundleVersion if not specified.
+//                                REQUIRED
+//
+// BREAKPAD_VENDOR                Vendor name, used in UI (e.g. "A report has
+//                                been created that you can send to <vendor>")
+//
+// BREAKPAD_URL                   URL destination for reporting
+//                                REQUIRED
+//
+// BREAKPAD_DUMP_DIRECTORY        The directory to store crash-dumps
+//                                in. By default, we use
+//                                ~/Library/Cache/Breakpad/<BREAKPAD_PRODUCT>
+//                                The path you specify here is tilde-expanded.
+//
+// BREAKPAD_SERVER_TYPE           A parameter that tells Breakpad how to
+//                                rewrite the upload parameters for a specific
+//                                server type.  The currently valid values are
+//                                'socorro' or 'google'.  If you want to add
+//                                other types, see the function in
+//                                crash_report_sender.m that maps parameters to
+//                                URL parameters.  Defaults to 'google'.
+//
+// BREAKPAD_SERVER_PARAMETER_DICT A plist dictionary of static
+//                                parameters that are uploaded to the
+//                                server.  The parameters are sent as
+//                                is to the crash server.  Their
+//                                content isn't added to the minidump
+//                                but pass as URL parameters when
+//                                uploading theminidump to the crash
+//                                server.
+//=============================================================================
+// The BREAKPAD_PRODUCT, BREAKPAD_VERSION and BREAKPAD_URL are
+// required to have non-NULL values.  By default, the BREAKPAD_PRODUCT
+// will be the CFBundleName and the BREAKPAD_VERSION will be the
+// CFBundleVersion when these keys are present in the bundle's
+// Info.plist, which is usually passed in to BreakpadCreate() as an
+// NSDictionary (you could also pass in another dictionary that had
+// the same keys configured).  If the BREAKPAD_PRODUCT or
+// BREAKPAD_VERSION are ultimately undefined, BreakpadCreate() will
+// fail.  You have been warned.
+//
+// If you are running in a debugger, Breakpad will not install, unless the
+// BREAKPAD_IGNORE_DEBUGGER envionment variable is set and/or non-zero.
+//
+//=============================================================================
+// The following are NOT user-supplied but are documented here for
+// completeness.  They are calculated by Breakpad during initialization &
+// crash-dump generation, or entered in by the user.
+//
+// BREAKPAD_PROCESS_START_TIME       The time, in seconds since the Epoch, the
+//                                   process started
+//
+// BREAKPAD_PROCESS_CRASH_TIME       The time, in seconds since the Epoch, the
+//                                   process crashed.
+//
+// BREAKPAD_PROCESS_UP_TIME          The total time in milliseconds the process
+//                                   has been running.  This parameter is not
+//                                   set until the crash-dump-generation phase.
+//
+// BREAKPAD_SERVER_PARAMETER_PREFIX  This prefix is used by Breakpad
+//                                   internally, because Breakpad uses
+//                                   the same dictionary internally to
+//                                   track both its internal
+//                                   configuration parameters and
+//                                   parameters meant to be uploaded
+//                                   to the server.  This string is
+//                                   used internally by Breakpad to
+//                                   prefix user-supplied parameter
+//                                   names so those can be sent to the
+//                                   server without leaking Breakpad's
+//                                   internal values.
+
+// Returns a new BreakpadRef object on success, NULL otherwise.
+BreakpadRef BreakpadCreate(NSDictionary *parameters);
+
+// Uninstall and release the data associated with |ref|.
+void BreakpadRelease(BreakpadRef ref);
+
+// User defined key and value string storage.  Generally this is used
+// to configure Breakpad's internal operation, such as whether the
+// crash_sender should prompt the user, or the filesystem location for
+// the minidump file.  See Breakpad.h for some parameters that can be
+// set.  Anything longer than 255 bytes will be truncated. Note that
+// the string is converted to UTF8 before truncation, so any multibyte
+// character that straddles the 255(256 - 1 for terminator) byte limit
+// will be mangled.
+//
+// A maximum number of 64 key/value pairs are supported.  An assert()
+// will fire if more than this number are set.  Unfortunately, right
+// now, the same dictionary is used for both Breakpad's parameters AND
+// the Upload parameters.
+//
+// TODO (nealsid): Investigate how necessary this is if we don't
+// automatically upload parameters to the server anymore.
+// TODO (nealsid): separate server parameter dictionary from the
+// dictionary used to configure Breakpad, and document limits for each
+// independently.
+void BreakpadSetKeyValue(BreakpadRef ref, NSString *key, NSString *value);
+NSString *BreakpadKeyValue(BreakpadRef ref, NSString *key);
+void BreakpadRemoveKeyValue(BreakpadRef ref, NSString *key);
+
+// You can use this method to specify parameters that will be uploaded
+// to the crash server.  They will be automatically encoded as
+// necessary.  Note that as mentioned above there are limits on both
+// the number of keys and their length.
+void BreakpadAddUploadParameter(BreakpadRef ref, NSString *key,
+                                NSString *value);
+
+// This method will remove a previously-added parameter from the
+// upload parameter set.
+void BreakpadRemoveUploadParameter(BreakpadRef ref, NSString *key);
+
+// Method to handle uploading data to the server
+
+// Returns the number of crash reports waiting to send to the server.
+int BreakpadGetCrashReportCount(BreakpadRef ref);
+
+// Returns the next upload configuration. The report file is deleted.
+NSDictionary *BreakpadGetNextReportConfiguration(BreakpadRef ref);
+
+// Upload next report to the server.
+void BreakpadUploadNextReport(BreakpadRef ref);
+
+// Upload next report to the server.
+// |server_parameters| is additional server parameters to send.
+void BreakpadUploadNextReportWithParameters(BreakpadRef ref,
+                                            NSDictionary *server_parameters);
+
+// Upload a report to the server.
+// |server_parameters| is additional server parameters to send.
+// |configuration| is the configuration of the breakpad report to send.
+void BreakpadUploadReportWithParametersAndConfiguration(
+    BreakpadRef ref,
+    NSDictionary *server_parameters,
+    NSDictionary *configuration);
+
+// Handles the network response of a breakpad upload. This function is needed if
+// the actual upload is done by the Breakpad client.
+// |configuration| is the configuration of the upload. It must contain the same
+// fields as the configuration passed to
+// BreakpadUploadReportWithParametersAndConfiguration.
+// |data| and |error| contain the network response.
+void BreakpadHandleNetworkResponse(BreakpadRef ref,
+                                   NSDictionary *configuration,
+                                   NSData *data,
+                                   NSError *error);
+
+// Upload a file to the server. |data| is the content of the file to sent.
+// |server_parameters| is additional server parameters to send.
+void BreakpadUploadData(BreakpadRef ref, NSData *data, NSString *name,
+                        NSDictionary *server_parameters);
+
+// Generate a breakpad minidump and configuration file in the dump directory.
+// The report will be available for uploading. The paths of the created files
+// are returned in the dictionary. |server_parameters| is additional server
+// parameters to add in the config file.
+NSDictionary *BreakpadGenerateReport(BreakpadRef ref,
+                                     NSDictionary *server_parameters);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/google-breakpad/src/client/ios/Breakpad.mm b/google-breakpad/src/client/ios/Breakpad.mm
new file mode 100644
index 0000000..c56a640
--- /dev/null
+++ b/google-breakpad/src/client/ios/Breakpad.mm
@@ -0,0 +1,916 @@
+// Copyright (c) 2011, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#define IGNORE_DEBUGGER "BREAKPAD_IGNORE_DEBUGGER"
+
+#import "client/ios/Breakpad.h"
+
+#include <assert.h>
+#import <Foundation/Foundation.h>
+#include <pthread.h>
+#include <sys/stat.h>
+#include <sys/sysctl.h>
+
+#import "client/ios/handler/ios_exception_minidump_generator.h"
+#import "client/mac/crash_generation/ConfigFile.h"
+#import "client/mac/handler/exception_handler.h"
+#import "client/mac/handler/minidump_generator.h"
+#import "client/mac/sender/uploader.h"
+#import "client/mac/handler/protected_memory_allocator.h"
+#import "common/simple_string_dictionary.h"
+
+#if !defined(__EXCEPTIONS) || (__clang__ && !__has_feature(cxx_exceptions))
+// This file uses C++ try/catch (but shouldn't). Duplicate the macros from
+// <c++/4.2.1/exception_defines.h> allowing this file to work properly with
+// exceptions disabled even when other C++ libraries are used. #undef the try
+// and catch macros first in case libstdc++ is in use and has already provided
+// its own definitions.
+#undef try
+#define try       if (true)
+#undef catch
+#define catch(X)  if (false)
+#endif  // __EXCEPTIONS
+
+using google_breakpad::ConfigFile;
+using google_breakpad::EnsureDirectoryPathExists;
+using google_breakpad::SimpleStringDictionary;
+
+//=============================================================================
+// We want any memory allocations which are used by breakpad during the
+// exception handling process (after a crash has happened) to be read-only
+// to prevent them from being smashed before a crash occurs.  Unfortunately
+// we cannot protect against smashes to our exception handling thread's
+// stack.
+//
+// NOTE: Any memory allocations which are not used during the exception
+// handling process may be allocated in the normal ways.
+//
+// The ProtectedMemoryAllocator class provides an Allocate() method which
+// we'll using in conjunction with placement operator new() to control
+// allocation of C++ objects.  Note that we don't use operator delete()
+// but instead call the objects destructor directly:  object->~ClassName();
+//
+ProtectedMemoryAllocator *gMasterAllocator = NULL;
+ProtectedMemoryAllocator *gKeyValueAllocator = NULL;
+ProtectedMemoryAllocator *gBreakpadAllocator = NULL;
+
+// Mutex for thread-safe access to the key/value dictionary used by breakpad.
+// It's a global instead of an instance variable of Breakpad
+// since it can't live in a protected memory area.
+pthread_mutex_t gDictionaryMutex;
+
+//=============================================================================
+// Stack-based object for thread-safe access to a memory-protected region.
+// It's assumed that normally the memory block (allocated by the allocator)
+// is protected (read-only).  Creating a stack-based instance of
+// ProtectedMemoryLocker will unprotect this block after taking the lock.
+// Its destructor will first re-protect the memory then release the lock.
+class ProtectedMemoryLocker {
+ public:
+  ProtectedMemoryLocker(pthread_mutex_t *mutex,
+                        ProtectedMemoryAllocator *allocator)
+      : mutex_(mutex),
+        allocator_(allocator) {
+    // Lock the mutex
+    __attribute__((unused)) int rv = pthread_mutex_lock(mutex_);
+    assert(rv == 0);
+
+    // Unprotect the memory
+    allocator_->Unprotect();
+  }
+
+  ~ProtectedMemoryLocker() {
+    // First protect the memory
+    allocator_->Protect();
+
+    // Then unlock the mutex
+    __attribute__((unused)) int rv = pthread_mutex_unlock(mutex_);
+    assert(rv == 0);
+  };
+
+ private:
+  ProtectedMemoryLocker();
+  ProtectedMemoryLocker(const ProtectedMemoryLocker&);
+  ProtectedMemoryLocker& operator=(const ProtectedMemoryLocker&);
+
+  pthread_mutex_t           *mutex_;
+  ProtectedMemoryAllocator  *allocator_;
+};
+
+//=============================================================================
+class Breakpad {
+ public:
+  // factory method
+  static Breakpad *Create(NSDictionary *parameters) {
+    // Allocate from our special allocation pool
+    Breakpad *breakpad =
+      new (gBreakpadAllocator->Allocate(sizeof(Breakpad)))
+        Breakpad();
+
+    if (!breakpad)
+      return NULL;
+
+    if (!breakpad->Initialize(parameters)) {
+      // Don't use operator delete() here since we allocated from special pool
+      breakpad->~Breakpad();
+      return NULL;
+    }
+
+    return breakpad;
+  }
+
+  ~Breakpad();
+
+  void SetKeyValue(NSString *key, NSString *value);
+  NSString *KeyValue(NSString *key);
+  void RemoveKeyValue(NSString *key);
+  NSArray *CrashReportsToUpload();
+  NSString *NextCrashReportToUpload();
+  NSDictionary *NextCrashReportConfiguration();
+  void UploadNextReport(NSDictionary *server_parameters);
+  void UploadReportWithConfiguration(NSDictionary *configuration,
+                                     NSDictionary *server_parameters);
+  void UploadData(NSData *data, NSString *name,
+                  NSDictionary *server_parameters);
+  void HandleNetworkResponse(NSDictionary *configuration,
+                             NSData *data,
+                             NSError *error);
+  NSDictionary *GenerateReport(NSDictionary *server_parameters);
+
+ private:
+  Breakpad()
+    : handler_(NULL),
+      config_params_(NULL) {}
+
+  bool Initialize(NSDictionary *parameters);
+
+  bool ExtractParameters(NSDictionary *parameters);
+
+  // Dispatches to HandleMinidump()
+  static bool HandleMinidumpCallback(const char *dump_dir,
+                                     const char *minidump_id,
+                                     void *context, bool succeeded);
+
+  bool HandleMinidump(const char *dump_dir,
+                      const char *minidump_id);
+
+  // NSException handler
+  static void UncaughtExceptionHandler(NSException *exception);
+
+  // Handle an uncaught NSException.
+  void HandleUncaughtException(NSException *exception);
+
+  // Since ExceptionHandler (w/o namespace) is defined as typedef in OSX's
+  // MachineExceptions.h, we have to explicitly name the handler.
+  google_breakpad::ExceptionHandler *handler_; // The actual handler (STRONG)
+
+  SimpleStringDictionary  *config_params_; // Create parameters (STRONG)
+
+  ConfigFile config_file_;
+
+  // A static reference to the current Breakpad instance. Used for handling
+  // NSException.
+  static Breakpad *current_breakpad_;
+};
+
+Breakpad *Breakpad::current_breakpad_ = NULL;
+
+#pragma mark -
+#pragma mark Helper functions
+
+//=============================================================================
+// Helper functions
+
+//=============================================================================
+static BOOL IsDebuggerActive() {
+  BOOL result = NO;
+  NSUserDefaults *stdDefaults = [NSUserDefaults standardUserDefaults];
+
+  // We check both defaults and the environment variable here
+
+  BOOL ignoreDebugger = [stdDefaults boolForKey:@IGNORE_DEBUGGER];
+
+  if (!ignoreDebugger) {
+    char *ignoreDebuggerStr = getenv(IGNORE_DEBUGGER);
+    ignoreDebugger =
+        (ignoreDebuggerStr ? strtol(ignoreDebuggerStr, NULL, 10) : 0) != 0;
+  }
+
+  if (!ignoreDebugger) {
+    pid_t pid = getpid();
+    int mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_PID, pid};
+    int mibSize = sizeof(mib) / sizeof(int);
+    size_t actualSize;
+
+    if (sysctl(mib, mibSize, NULL, &actualSize, NULL, 0) == 0) {
+      struct kinfo_proc *info = (struct kinfo_proc *)malloc(actualSize);
+
+      if (info) {
+        // This comes from looking at the Darwin xnu Kernel
+        if (sysctl(mib, mibSize, info, &actualSize, NULL, 0) == 0)
+          result = (info->kp_proc.p_flag & P_TRACED) ? YES : NO;
+
+        free(info);
+      }
+    }
+  }
+
+  return result;
+}
+
+//=============================================================================
+bool Breakpad::HandleMinidumpCallback(const char *dump_dir,
+                                      const char *minidump_id,
+                                      void *context, bool succeeded) {
+  Breakpad *breakpad = (Breakpad *)context;
+
+  // If our context is damaged or something, just return false to indicate that
+  // the handler should continue without us.
+  if (!breakpad || !succeeded)
+    return false;
+
+  return breakpad->HandleMinidump(dump_dir, minidump_id);
+}
+
+//=============================================================================
+void Breakpad::UncaughtExceptionHandler(NSException *exception) {
+  NSSetUncaughtExceptionHandler(NULL);
+  if (current_breakpad_) {
+    current_breakpad_->HandleUncaughtException(exception);
+  }
+  BreakpadRelease(current_breakpad_);
+}
+
+//=============================================================================
+#pragma mark -
+
+//=============================================================================
+bool Breakpad::Initialize(NSDictionary *parameters) {
+  // Initialize
+  current_breakpad_ = this;
+  config_params_ = NULL;
+  handler_ = NULL;
+
+  // Gather any user specified parameters
+  if (!ExtractParameters(parameters)) {
+    return false;
+  }
+
+  // Check for debugger
+  if (IsDebuggerActive()) {
+    return true;
+  }
+
+  // Create the handler (allocating it in our special protected pool)
+  handler_ =
+      new (gBreakpadAllocator->Allocate(
+          sizeof(google_breakpad::ExceptionHandler)))
+          google_breakpad::ExceptionHandler(
+              config_params_->GetValueForKey(BREAKPAD_DUMP_DIRECTORY),
+              0, &HandleMinidumpCallback, this, true, 0);
+  NSSetUncaughtExceptionHandler(&Breakpad::UncaughtExceptionHandler);
+  return true;
+}
+
+//=============================================================================
+Breakpad::~Breakpad() {
+  NSSetUncaughtExceptionHandler(NULL);
+  current_breakpad_ = NULL;
+  // Note that we don't use operator delete() on these pointers,
+  // since they were allocated by ProtectedMemoryAllocator objects.
+  //
+  if (config_params_) {
+    config_params_->~SimpleStringDictionary();
+  }
+
+  if (handler_)
+    handler_->~ExceptionHandler();
+}
+
+//=============================================================================
+bool Breakpad::ExtractParameters(NSDictionary *parameters) {
+  NSString *serverType = [parameters objectForKey:@BREAKPAD_SERVER_TYPE];
+  NSString *display = [parameters objectForKey:@BREAKPAD_PRODUCT_DISPLAY];
+  NSString *product = [parameters objectForKey:@BREAKPAD_PRODUCT];
+  NSString *version = [parameters objectForKey:@BREAKPAD_VERSION];
+  NSString *urlStr = [parameters objectForKey:@BREAKPAD_URL];
+  NSString *vendor =
+      [parameters objectForKey:@BREAKPAD_VENDOR];
+  // We check both parameters and the environment variable here.
+  char *envVarDumpSubdirectory = getenv(BREAKPAD_DUMP_DIRECTORY);
+  NSString *dumpSubdirectory = envVarDumpSubdirectory ?
+      [NSString stringWithUTF8String:envVarDumpSubdirectory] :
+          [parameters objectForKey:@BREAKPAD_DUMP_DIRECTORY];
+
+  NSDictionary *serverParameters =
+      [parameters objectForKey:@BREAKPAD_SERVER_PARAMETER_DICT];
+
+  if (!product)
+    product = [parameters objectForKey:@"CFBundleName"];
+
+  if (!display) {
+    display = [parameters objectForKey:@"CFBundleDisplayName"];
+    if (!display) {
+      display = product;
+    }
+  }
+
+  if (!version)
+    version = [parameters objectForKey:@"CFBundleVersion"];
+
+  if (!vendor) {
+    vendor = @"Vendor not specified";
+  }
+
+  if (!dumpSubdirectory) {
+    NSString *cachePath =
+        [NSSearchPathForDirectoriesInDomains(NSCachesDirectory,
+                                             NSUserDomainMask,
+                                             YES)
+            objectAtIndex:0];
+    dumpSubdirectory =
+        [cachePath stringByAppendingPathComponent:@kDefaultLibrarySubdirectory];
+
+    EnsureDirectoryPathExists(dumpSubdirectory);
+  }
+
+  // The product, version, and URL are required values.
+  if (![product length]) {
+    return false;
+  }
+
+  if (![version length]) {
+    return false;
+  }
+
+  if (![urlStr length]) {
+    return false;
+  }
+
+  config_params_ =
+      new (gKeyValueAllocator->Allocate(sizeof(SimpleStringDictionary)) )
+        SimpleStringDictionary();
+
+  SimpleStringDictionary &dictionary = *config_params_;
+
+  dictionary.SetKeyValue(BREAKPAD_SERVER_TYPE,     [serverType UTF8String]);
+  dictionary.SetKeyValue(BREAKPAD_PRODUCT_DISPLAY, [display UTF8String]);
+  dictionary.SetKeyValue(BREAKPAD_PRODUCT,         [product UTF8String]);
+  dictionary.SetKeyValue(BREAKPAD_VERSION,         [version UTF8String]);
+  dictionary.SetKeyValue(BREAKPAD_URL,             [urlStr UTF8String]);
+  dictionary.SetKeyValue(BREAKPAD_VENDOR,          [vendor UTF8String]);
+  dictionary.SetKeyValue(BREAKPAD_DUMP_DIRECTORY,
+                         [dumpSubdirectory UTF8String]);
+
+  struct timeval tv;
+  gettimeofday(&tv, NULL);
+  char timeStartedString[32];
+  sprintf(timeStartedString, "%zd", tv.tv_sec);
+  dictionary.SetKeyValue(BREAKPAD_PROCESS_START_TIME, timeStartedString);
+
+  if (serverParameters) {
+    // For each key-value pair, call BreakpadAddUploadParameter()
+    NSEnumerator *keyEnumerator = [serverParameters keyEnumerator];
+    NSString *aParameter;
+    while ((aParameter = [keyEnumerator nextObject])) {
+      BreakpadAddUploadParameter(this, aParameter,
+				 [serverParameters objectForKey:aParameter]);
+    }
+  }
+  return true;
+}
+
+//=============================================================================
+void Breakpad::SetKeyValue(NSString *key, NSString *value) {
+  // We allow nil values. This is the same as removing the keyvalue.
+  if (!config_params_ || !key)
+    return;
+
+  config_params_->SetKeyValue([key UTF8String], [value UTF8String]);
+}
+
+//=============================================================================
+NSString *Breakpad::KeyValue(NSString *key) {
+  if (!config_params_ || !key)
+    return nil;
+
+  const char *value = config_params_->GetValueForKey([key UTF8String]);
+  return value ? [NSString stringWithUTF8String:value] : nil;
+}
+
+//=============================================================================
+void Breakpad::RemoveKeyValue(NSString *key) {
+  if (!config_params_ || !key) return;
+
+  config_params_->RemoveKey([key UTF8String]);
+}
+
+//=============================================================================
+NSArray *Breakpad::CrashReportsToUpload() {
+  NSString *directory = KeyValue(@BREAKPAD_DUMP_DIRECTORY);
+  if (!directory)
+    return nil;
+  NSArray *dirContents = [[NSFileManager defaultManager]
+      contentsOfDirectoryAtPath:directory error:nil];
+  NSArray *configs = [dirContents filteredArrayUsingPredicate:[NSPredicate
+      predicateWithFormat:@"self BEGINSWITH 'Config-'"]];
+  return configs;
+}
+
+//=============================================================================
+NSString *Breakpad::NextCrashReportToUpload() {
+  NSString *directory = KeyValue(@BREAKPAD_DUMP_DIRECTORY);
+  if (!directory)
+    return nil;
+  NSString *config = [CrashReportsToUpload() lastObject];
+  if (!config)
+    return nil;
+  return [NSString stringWithFormat:@"%@/%@", directory, config];
+}
+
+//=============================================================================
+NSDictionary *Breakpad::NextCrashReportConfiguration() {
+  return [Uploader readConfigurationDataFromFile:NextCrashReportToUpload()];
+}
+
+//=============================================================================
+void Breakpad::HandleNetworkResponse(NSDictionary *configuration,
+                                     NSData *data,
+                                     NSError *error) {
+  Uploader *uploader = [[[Uploader alloc]
+      initWithConfig:configuration] autorelease];
+  [uploader handleNetworkResponse:data withError:error];
+}
+
+//=============================================================================
+void Breakpad::UploadReportWithConfiguration(NSDictionary *configuration,
+                                             NSDictionary *server_parameters) {
+  Uploader *uploader = [[[Uploader alloc]
+      initWithConfig:configuration] autorelease];
+  if (!uploader)
+    return;
+  for (NSString *key in server_parameters) {
+    [uploader addServerParameter:[server_parameters objectForKey:key]
+                          forKey:key];
+  }
+  [uploader report];
+}
+
+//=============================================================================
+void Breakpad::UploadNextReport(NSDictionary *server_parameters) {
+  NSDictionary *configuration = NextCrashReportConfiguration();
+  if (configuration) {
+    return UploadReportWithConfiguration(configuration, server_parameters);
+  }
+}
+
+//=============================================================================
+void Breakpad::UploadData(NSData *data, NSString *name,
+                          NSDictionary *server_parameters) {
+  NSMutableDictionary *config = [NSMutableDictionary dictionary];
+
+  SimpleStringDictionary::Iterator it(*config_params_);
+  while (const SimpleStringDictionary::Entry *next = it.Next()) {
+    [config setValue:[NSString stringWithUTF8String:next->value]
+              forKey:[NSString stringWithUTF8String:next->key]];
+  }
+
+  Uploader *uploader =
+      [[[Uploader alloc] initWithConfig:config] autorelease];
+  for (NSString *key in server_parameters) {
+    [uploader addServerParameter:[server_parameters objectForKey:key]
+                          forKey:key];
+  }
+  [uploader uploadData:data name:name];
+}
+
+//=============================================================================
+NSDictionary *Breakpad::GenerateReport(NSDictionary *server_parameters) {
+  NSString *dumpDirAsNSString = KeyValue(@BREAKPAD_DUMP_DIRECTORY);
+  if (!dumpDirAsNSString)
+    return nil;
+  const char *dumpDir = [dumpDirAsNSString UTF8String];
+
+  google_breakpad::MinidumpGenerator generator(mach_task_self(),
+                                               MACH_PORT_NULL);
+  std::string dumpId;
+  std::string dumpFilename = generator.UniqueNameInDirectory(dumpDir, &dumpId);
+  bool success = generator.Write(dumpFilename.c_str());
+  if (!success)
+    return nil;
+
+  SimpleStringDictionary params = *config_params_;
+  for (NSString *key in server_parameters) {
+    params.SetKeyValue([key UTF8String],
+                       [[server_parameters objectForKey:key] UTF8String]);
+  }
+  ConfigFile config_file;
+  config_file.WriteFile(dumpDir, &params, dumpDir, dumpId.c_str());
+
+  // Handle results.
+  NSMutableDictionary *result = [NSMutableDictionary dictionary];
+  NSString *dumpFullPath = [NSString stringWithUTF8String:dumpFilename.c_str()];
+  [result setValue:dumpFullPath
+            forKey:@BREAKPAD_OUTPUT_DUMP_FILE];
+  [result setValue:[NSString stringWithUTF8String:config_file.GetFilePath()]
+            forKey:@BREAKPAD_OUTPUT_CONFIG_FILE];
+  return result;
+}
+
+//=============================================================================
+bool Breakpad::HandleMinidump(const char *dump_dir,
+                              const char *minidump_id) {
+  config_file_.WriteFile(dump_dir,
+                         config_params_,
+                         dump_dir,
+                         minidump_id);
+
+  // Return true here to indicate that we've processed things as much as we
+  // want.
+  return true;
+}
+
+//=============================================================================
+void Breakpad::HandleUncaughtException(NSException *exception) {
+  // Generate the minidump.
+  google_breakpad::IosExceptionMinidumpGenerator generator(exception);
+  const char *minidump_path =
+      config_params_->GetValueForKey(BREAKPAD_DUMP_DIRECTORY);
+  std::string minidump_id;
+  std::string minidump_filename = generator.UniqueNameInDirectory(minidump_path,
+                                                                  &minidump_id);
+  generator.Write(minidump_filename.c_str());
+
+  // Copy the config params and our custom parameter. This is necessary for 2
+  // reasons:
+  // 1- config_params_ is protected.
+  // 2- If the application crash while trying to handle this exception, a usual
+  //    report will be generated. This report must not contain these special
+  //    keys.
+  SimpleStringDictionary params = *config_params_;
+  params.SetKeyValue(BREAKPAD_SERVER_PARAMETER_PREFIX "type", "exception");
+  params.SetKeyValue(BREAKPAD_SERVER_PARAMETER_PREFIX "exceptionName",
+                     [[exception name] UTF8String]);
+  params.SetKeyValue(BREAKPAD_SERVER_PARAMETER_PREFIX "exceptionReason",
+                     [[exception reason] UTF8String]);
+
+  // And finally write the config file.
+  ConfigFile config_file;
+  config_file.WriteFile(minidump_path,
+                        &params,
+                        minidump_path,
+                        minidump_id.c_str());
+}
+
+//=============================================================================
+
+#pragma mark -
+#pragma mark Public API
+
+//=============================================================================
+BreakpadRef BreakpadCreate(NSDictionary *parameters) {
+  try {
+    // This is confusing.  Our two main allocators for breakpad memory are:
+    //    - gKeyValueAllocator for the key/value memory
+    //    - gBreakpadAllocator for the Breakpad, ExceptionHandler, and other
+    //      breakpad allocations which are accessed at exception handling time.
+    //
+    // But in order to avoid these two allocators themselves from being smashed,
+    // we'll protect them as well by allocating them with gMasterAllocator.
+    //
+    // gMasterAllocator itself will NOT be protected, but this doesn't matter,
+    // since once it does its allocations and locks the memory, smashes to
+    // itself don't affect anything we care about.
+    gMasterAllocator =
+        new ProtectedMemoryAllocator(sizeof(ProtectedMemoryAllocator) * 2);
+
+    gKeyValueAllocator =
+        new (gMasterAllocator->Allocate(sizeof(ProtectedMemoryAllocator)))
+            ProtectedMemoryAllocator(sizeof(SimpleStringDictionary));
+
+    // Create a mutex for use in accessing the SimpleStringDictionary
+    int mutexResult = pthread_mutex_init(&gDictionaryMutex, NULL);
+    if (mutexResult == 0) {
+
+      // With the current compiler, gBreakpadAllocator is allocating 1444 bytes.
+      // Let's round up to the nearest page size.
+      //
+      int breakpad_pool_size = 4096;
+
+      /*
+       sizeof(Breakpad)
+       + sizeof(google_breakpad::ExceptionHandler)
+       + sizeof( STUFF ALLOCATED INSIDE ExceptionHandler )
+       */
+
+      gBreakpadAllocator =
+          new (gMasterAllocator->Allocate(sizeof(ProtectedMemoryAllocator)))
+              ProtectedMemoryAllocator(breakpad_pool_size);
+
+      // Stack-based autorelease pool for Breakpad::Create() obj-c code.
+      NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
+      Breakpad *breakpad = Breakpad::Create(parameters);
+
+      if (breakpad) {
+        // Make read-only to protect against memory smashers
+        gMasterAllocator->Protect();
+        gKeyValueAllocator->Protect();
+        gBreakpadAllocator->Protect();
+        // Can uncomment this line to figure out how much space was actually
+        // allocated using this allocator
+        //     printf("gBreakpadAllocator allocated size = %d\n",
+        //         gBreakpadAllocator->GetAllocatedSize() );
+        [pool release];
+        return (BreakpadRef)breakpad;
+      }
+
+      [pool release];
+    }
+  } catch(...) {    // don't let exceptions leave this C API
+    fprintf(stderr, "BreakpadCreate() : error\n");
+  }
+
+  if (gKeyValueAllocator) {
+    gKeyValueAllocator->~ProtectedMemoryAllocator();
+    gKeyValueAllocator = NULL;
+  }
+
+  if (gBreakpadAllocator) {
+    gBreakpadAllocator->~ProtectedMemoryAllocator();
+    gBreakpadAllocator = NULL;
+  }
+
+  delete gMasterAllocator;
+  gMasterAllocator = NULL;
+
+  return NULL;
+}
+
+//=============================================================================
+void BreakpadRelease(BreakpadRef ref) {
+  try {
+    Breakpad *breakpad = (Breakpad *)ref;
+
+    if (gMasterAllocator) {
+      gMasterAllocator->Unprotect();
+      gKeyValueAllocator->Unprotect();
+      gBreakpadAllocator->Unprotect();
+
+      breakpad->~Breakpad();
+
+      // Unfortunately, it's not possible to deallocate this stuff
+      // because the exception handling thread is still finishing up
+      // asynchronously at this point...  OK, it could be done with
+      // locks, etc.  But since BreakpadRelease() should usually only
+      // be called right before the process exits, it's not worth
+      // deallocating this stuff.
+#if 0
+      gKeyValueAllocator->~ProtectedMemoryAllocator();
+      gBreakpadAllocator->~ProtectedMemoryAllocator();
+      delete gMasterAllocator;
+
+      gMasterAllocator = NULL;
+      gKeyValueAllocator = NULL;
+      gBreakpadAllocator = NULL;
+#endif
+
+      pthread_mutex_destroy(&gDictionaryMutex);
+    }
+  } catch(...) {    // don't let exceptions leave this C API
+    fprintf(stderr, "BreakpadRelease() : error\n");
+  }
+}
+
+//=============================================================================
+void BreakpadSetKeyValue(BreakpadRef ref, NSString *key, NSString *value) {
+  try {
+    // Not called at exception time
+    Breakpad *breakpad = (Breakpad *)ref;
+
+    if (breakpad && key && gKeyValueAllocator) {
+      ProtectedMemoryLocker locker(&gDictionaryMutex, gKeyValueAllocator);
+
+      breakpad->SetKeyValue(key, value);
+    }
+  } catch(...) {    // don't let exceptions leave this C API
+    fprintf(stderr, "BreakpadSetKeyValue() : error\n");
+  }
+}
+
+void BreakpadAddUploadParameter(BreakpadRef ref,
+                                NSString *key,
+                                NSString *value) {
+  // The only difference, internally, between an upload parameter and
+  // a key value one that is set with BreakpadSetKeyValue is that we
+  // prepend the keyname with a special prefix.  This informs the
+  // crash sender that the parameter should be sent along with the
+  // POST of the crash dump upload.
+  try {
+    Breakpad *breakpad = (Breakpad *)ref;
+
+    if (breakpad && key && gKeyValueAllocator) {
+      ProtectedMemoryLocker locker(&gDictionaryMutex, gKeyValueAllocator);
+
+      NSString *prefixedKey = [@BREAKPAD_SERVER_PARAMETER_PREFIX
+				stringByAppendingString:key];
+      breakpad->SetKeyValue(prefixedKey, value);
+    }
+  } catch(...) {    // don't let exceptions leave this C API
+    fprintf(stderr, "BreakpadSetKeyValue() : error\n");
+  }
+}
+
+void BreakpadRemoveUploadParameter(BreakpadRef ref,
+                                   NSString *key) {
+  try {
+    // Not called at exception time
+    Breakpad *breakpad = (Breakpad *)ref;
+
+    if (breakpad && key && gKeyValueAllocator) {
+      ProtectedMemoryLocker locker(&gDictionaryMutex, gKeyValueAllocator);
+
+      NSString *prefixedKey = [NSString stringWithFormat:@"%@%@",
+                                        @BREAKPAD_SERVER_PARAMETER_PREFIX, key];
+      breakpad->RemoveKeyValue(prefixedKey);
+    }
+  } catch(...) {    // don't let exceptions leave this C API
+    fprintf(stderr, "BreakpadRemoveKeyValue() : error\n");
+  }
+}
+//=============================================================================
+NSString *BreakpadKeyValue(BreakpadRef ref, NSString *key) {
+  NSString *value = nil;
+
+  try {
+    // Not called at exception time
+    Breakpad *breakpad = (Breakpad *)ref;
+
+    if (!breakpad || !key || !gKeyValueAllocator)
+      return nil;
+
+    ProtectedMemoryLocker locker(&gDictionaryMutex, gKeyValueAllocator);
+
+    value = breakpad->KeyValue(key);
+  } catch(...) {    // don't let exceptions leave this C API
+    fprintf(stderr, "BreakpadKeyValue() : error\n");
+  }
+
+  return value;
+}
+
+//=============================================================================
+void BreakpadRemoveKeyValue(BreakpadRef ref, NSString *key) {
+  try {
+    // Not called at exception time
+    Breakpad *breakpad = (Breakpad *)ref;
+
+    if (breakpad && key && gKeyValueAllocator) {
+      ProtectedMemoryLocker locker(&gDictionaryMutex, gKeyValueAllocator);
+
+      breakpad->RemoveKeyValue(key);
+    }
+  } catch(...) {    // don't let exceptions leave this C API
+    fprintf(stderr, "BreakpadRemoveKeyValue() : error\n");
+  }
+}
+
+//=============================================================================
+int BreakpadGetCrashReportCount(BreakpadRef ref) {
+  try {
+    // Not called at exception time
+    Breakpad *breakpad = (Breakpad *)ref;
+
+    if (breakpad) {
+       return static_cast<int>([breakpad->CrashReportsToUpload() count]);
+    }
+  } catch(...) {    // don't let exceptions leave this C API
+    fprintf(stderr, "BreakpadGetCrashReportCount() : error\n");
+  }
+  return false;
+}
+
+//=============================================================================
+void BreakpadUploadNextReport(BreakpadRef ref) {
+  BreakpadUploadNextReportWithParameters(ref, nil);
+}
+
+//=============================================================================
+NSDictionary *BreakpadGetNextReportConfiguration(BreakpadRef ref) {
+  try {
+    Breakpad *breakpad = (Breakpad *)ref;
+    if (breakpad)
+      return breakpad->NextCrashReportConfiguration();
+  } catch(...) {    // don't let exceptions leave this C API
+    fprintf(stderr, "BreakpadGetNextReportConfiguration() : error\n");
+  }
+  return nil;
+}
+
+//=============================================================================
+void BreakpadUploadReportWithParametersAndConfiguration(
+    BreakpadRef ref,
+    NSDictionary *server_parameters,
+    NSDictionary *configuration) {
+  try {
+    Breakpad *breakpad = (Breakpad *)ref;
+    if (!breakpad || !configuration)
+      return;
+    breakpad->UploadReportWithConfiguration(configuration, server_parameters);
+  } catch(...) {    // don't let exceptions leave this C API
+    fprintf(stderr,
+        "BreakpadUploadReportWithParametersAndConfiguration() : error\n");
+  }
+
+}
+
+//=============================================================================
+void BreakpadUploadNextReportWithParameters(BreakpadRef ref,
+                                            NSDictionary *server_parameters) {
+  try {
+    Breakpad *breakpad = (Breakpad *)ref;
+    if (!breakpad)
+      return;
+    NSDictionary *configuration = breakpad->NextCrashReportConfiguration();
+    if (!configuration)
+      return;
+    return BreakpadUploadReportWithParametersAndConfiguration(ref,
+                                                              server_parameters,
+                                                              configuration);
+  } catch(...) {    // don't let exceptions leave this C API
+    fprintf(stderr, "BreakpadUploadNextReportWithParameters() : error\n");
+  }
+}
+
+void BreakpadHandleNetworkResponse(BreakpadRef ref,
+                                   NSDictionary *configuration,
+                                   NSData *data,
+                                   NSError *error) {
+  try {
+    // Not called at exception time
+    Breakpad *breakpad = (Breakpad *)ref;
+    if (breakpad && configuration)
+      breakpad->HandleNetworkResponse(configuration,data, error);
+
+  } catch(...) {    // don't let exceptions leave this C API
+    fprintf(stderr, "BreakpadHandleNetworkResponse() : error\n");
+  }
+}
+
+//=============================================================================
+void BreakpadUploadData(BreakpadRef ref, NSData *data, NSString *name,
+                        NSDictionary *server_parameters) {
+  try {
+    // Not called at exception time
+    Breakpad *breakpad = (Breakpad *)ref;
+
+    if (breakpad) {
+      breakpad->UploadData(data, name, server_parameters);
+    }
+  } catch(...) {    // don't let exceptions leave this C API
+    fprintf(stderr, "BreakpadUploadData() : error\n");
+  }
+}
+
+//=============================================================================
+NSDictionary *BreakpadGenerateReport(BreakpadRef ref,
+                                     NSDictionary *server_parameters) {
+  try {
+    // Not called at exception time
+    Breakpad *breakpad = (Breakpad *)ref;
+
+    if (breakpad) {
+      return breakpad->GenerateReport(server_parameters);
+    } else {
+      return nil;
+    }
+  } catch(...) {    // don't let exceptions leave this C API
+    fprintf(stderr, "BreakpadGenerateReport() : error\n");
+    return nil;
+  }
+}
diff --git a/google-breakpad/src/client/ios/Breakpad.xcodeproj/project.pbxproj b/google-breakpad/src/client/ios/Breakpad.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..e9fcae3
--- /dev/null
+++ b/google-breakpad/src/client/ios/Breakpad.xcodeproj/project.pbxproj
@@ -0,0 +1,578 @@
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 46;
+	objects = {
+
+/* Begin PBXBuildFile section */
+		14569321182CE29F0029C465 /* ucontext_compat.h in Headers */ = {isa = PBXBuildFile; fileRef = 14569320182CE29F0029C465 /* ucontext_compat.h */; };
+		14569323182CE2C10029C465 /* mach_vm_compat.h in Headers */ = {isa = PBXBuildFile; fileRef = 14569322182CE2C10029C465 /* mach_vm_compat.h */; };
+		16BFA67014E195E9009704F8 /* ios_exception_minidump_generator.h in Headers */ = {isa = PBXBuildFile; fileRef = 16BFA66E14E195E9009704F8 /* ios_exception_minidump_generator.h */; };
+		16BFA67214E1965A009704F8 /* ios_exception_minidump_generator.mm in Sources */ = {isa = PBXBuildFile; fileRef = 16BFA67114E1965A009704F8 /* ios_exception_minidump_generator.mm */; };
+		16C7CCCB147D4A4300776EAD /* BreakpadDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 16C7C968147D4A4200776EAD /* BreakpadDefines.h */; };
+		16C7CCCC147D4A4300776EAD /* Breakpad.h in Headers */ = {isa = PBXBuildFile; fileRef = 16C7C96A147D4A4200776EAD /* Breakpad.h */; };
+		16C7CCCD147D4A4300776EAD /* Breakpad.mm in Sources */ = {isa = PBXBuildFile; fileRef = 16C7C96B147D4A4200776EAD /* Breakpad.mm */; };
+		16C7CDE8147D4A4300776EAD /* ConfigFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 16C7CB9E147D4A4300776EAD /* ConfigFile.h */; };
+		16C7CDE9147D4A4300776EAD /* ConfigFile.mm in Sources */ = {isa = PBXBuildFile; fileRef = 16C7CB9F147D4A4300776EAD /* ConfigFile.mm */; };
+		16C7CDF5147D4A4300776EAD /* breakpad_nlist_64.cc in Sources */ = {isa = PBXBuildFile; fileRef = 16C7CBAD147D4A4300776EAD /* breakpad_nlist_64.cc */; };
+		16C7CDF6147D4A4300776EAD /* breakpad_nlist_64.h in Headers */ = {isa = PBXBuildFile; fileRef = 16C7CBAE147D4A4300776EAD /* breakpad_nlist_64.h */; };
+		16C7CDF7147D4A4300776EAD /* dynamic_images.cc in Sources */ = {isa = PBXBuildFile; fileRef = 16C7CBAF147D4A4300776EAD /* dynamic_images.cc */; };
+		16C7CDF8147D4A4300776EAD /* dynamic_images.h in Headers */ = {isa = PBXBuildFile; fileRef = 16C7CBB0147D4A4300776EAD /* dynamic_images.h */; };
+		16C7CDF9147D4A4300776EAD /* exception_handler.cc in Sources */ = {isa = PBXBuildFile; fileRef = 16C7CBB1147D4A4300776EAD /* exception_handler.cc */; };
+		16C7CDFA147D4A4300776EAD /* exception_handler.h in Headers */ = {isa = PBXBuildFile; fileRef = 16C7CBB2147D4A4300776EAD /* exception_handler.h */; };
+		16C7CDFC147D4A4300776EAD /* minidump_generator.cc in Sources */ = {isa = PBXBuildFile; fileRef = 16C7CBB4147D4A4300776EAD /* minidump_generator.cc */; };
+		16C7CDFD147D4A4300776EAD /* minidump_generator.h in Headers */ = {isa = PBXBuildFile; fileRef = 16C7CBB5147D4A4300776EAD /* minidump_generator.h */; };
+		16C7CDFE147D4A4300776EAD /* protected_memory_allocator.cc in Sources */ = {isa = PBXBuildFile; fileRef = 16C7CBBC147D4A4300776EAD /* protected_memory_allocator.cc */; };
+		16C7CDFF147D4A4300776EAD /* protected_memory_allocator.h in Headers */ = {isa = PBXBuildFile; fileRef = 16C7CBBD147D4A4300776EAD /* protected_memory_allocator.h */; };
+		16C7CE08147D4A4300776EAD /* uploader.h in Headers */ = {isa = PBXBuildFile; fileRef = 16C7CBEA147D4A4300776EAD /* uploader.h */; };
+		16C7CE09147D4A4300776EAD /* uploader.mm in Sources */ = {isa = PBXBuildFile; fileRef = 16C7CBEB147D4A4300776EAD /* uploader.mm */; };
+		16C7CE18147D4A4300776EAD /* minidump_file_writer-inl.h in Headers */ = {isa = PBXBuildFile; fileRef = 16C7CC04147D4A4300776EAD /* minidump_file_writer-inl.h */; };
+		16C7CE19147D4A4300776EAD /* minidump_file_writer.cc in Sources */ = {isa = PBXBuildFile; fileRef = 16C7CC05147D4A4300776EAD /* minidump_file_writer.cc */; };
+		16C7CE1A147D4A4300776EAD /* minidump_file_writer.h in Headers */ = {isa = PBXBuildFile; fileRef = 16C7CC06147D4A4300776EAD /* minidump_file_writer.h */; };
+		16C7CE40147D4A4300776EAD /* convert_UTF.c in Sources */ = {isa = PBXBuildFile; fileRef = 16C7CC4A147D4A4300776EAD /* convert_UTF.c */; };
+		16C7CE41147D4A4300776EAD /* convert_UTF.h in Headers */ = {isa = PBXBuildFile; fileRef = 16C7CC4B147D4A4300776EAD /* convert_UTF.h */; };
+		16C7CE78147D4A4300776EAD /* GTMLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 16C7CC88147D4A4300776EAD /* GTMLogger.h */; };
+		16C7CE79147D4A4300776EAD /* GTMLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 16C7CC89147D4A4300776EAD /* GTMLogger.m */; };
+		16C7CE7A147D4A4300776EAD /* HTTPMultipartUpload.h in Headers */ = {isa = PBXBuildFile; fileRef = 16C7CC8A147D4A4300776EAD /* HTTPMultipartUpload.h */; };
+		16C7CE7B147D4A4300776EAD /* HTTPMultipartUpload.m in Sources */ = {isa = PBXBuildFile; fileRef = 16C7CC8B147D4A4300776EAD /* HTTPMultipartUpload.m */; };
+		16C7CE83147D4A4300776EAD /* file_id.cc in Sources */ = {isa = PBXBuildFile; fileRef = 16C7CC93147D4A4300776EAD /* file_id.cc */; };
+		16C7CE84147D4A4300776EAD /* file_id.h in Headers */ = {isa = PBXBuildFile; fileRef = 16C7CC94147D4A4300776EAD /* file_id.h */; };
+		16C7CE85147D4A4300776EAD /* macho_id.cc in Sources */ = {isa = PBXBuildFile; fileRef = 16C7CC95147D4A4300776EAD /* macho_id.cc */; };
+		16C7CE86147D4A4300776EAD /* macho_id.h in Headers */ = {isa = PBXBuildFile; fileRef = 16C7CC96147D4A4300776EAD /* macho_id.h */; };
+		16C7CE8A147D4A4300776EAD /* macho_utilities.cc in Sources */ = {isa = PBXBuildFile; fileRef = 16C7CC9A147D4A4300776EAD /* macho_utilities.cc */; };
+		16C7CE8B147D4A4300776EAD /* macho_utilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 16C7CC9B147D4A4300776EAD /* macho_utilities.h */; };
+		16C7CE8C147D4A4300776EAD /* macho_walker.cc in Sources */ = {isa = PBXBuildFile; fileRef = 16C7CC9C147D4A4300776EAD /* macho_walker.cc */; };
+		16C7CE8D147D4A4300776EAD /* macho_walker.h in Headers */ = {isa = PBXBuildFile; fileRef = 16C7CC9D147D4A4300776EAD /* macho_walker.h */; };
+		16C7CE8F147D4A4300776EAD /* string_utilities.cc in Sources */ = {isa = PBXBuildFile; fileRef = 16C7CC9F147D4A4300776EAD /* string_utilities.cc */; };
+		16C7CE90147D4A4300776EAD /* string_utilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 16C7CCA0147D4A4300776EAD /* string_utilities.h */; };
+		16C7CE93147D4A4300776EAD /* md5.cc in Sources */ = {isa = PBXBuildFile; fileRef = 16C7CCA4147D4A4300776EAD /* md5.cc */; };
+		16C7CE94147D4A4300776EAD /* md5.h in Headers */ = {isa = PBXBuildFile; fileRef = 16C7CCA5147D4A4300776EAD /* md5.h */; };
+		16C7CEA7147D4A4300776EAD /* string_conversion.cc in Sources */ = {isa = PBXBuildFile; fileRef = 16C7CCB9147D4A4300776EAD /* string_conversion.cc */; };
+		16C7CEA8147D4A4300776EAD /* string_conversion.h in Headers */ = {isa = PBXBuildFile; fileRef = 16C7CCBA147D4A4300776EAD /* string_conversion.h */; };
+		16C92FAD150DF8330053D7BA /* BreakpadController.h in Headers */ = {isa = PBXBuildFile; fileRef = 16C92FAB150DF8330053D7BA /* BreakpadController.h */; };
+		16C92FAE150DF8330053D7BA /* BreakpadController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 16C92FAC150DF8330053D7BA /* BreakpadController.mm */; };
+		1EEEB60F1720821900F7E689 /* simple_string_dictionary.cc in Sources */ = {isa = PBXBuildFile; fileRef = 1EEEB60C1720821900F7E689 /* simple_string_dictionary.cc */; };
+		1EEEB6101720821900F7E689 /* simple_string_dictionary.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EEEB60D1720821900F7E689 /* simple_string_dictionary.h */; };
+		AA747D9F0F9514B9006C5449 /* Breakpad_Prefix.pch in Headers */ = {isa = PBXBuildFile; fileRef = AA747D9E0F9514B9006C5449 /* Breakpad_Prefix.pch */; };
+		AACBBE4A0F95108600F1A2B1 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AACBBE490F95108600F1A2B1 /* Foundation.framework */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+		14569320182CE29F0029C465 /* ucontext_compat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ucontext_compat.h; sourceTree = "<group>"; };
+		14569322182CE2C10029C465 /* mach_vm_compat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mach_vm_compat.h; sourceTree = "<group>"; };
+		16BFA66E14E195E9009704F8 /* ios_exception_minidump_generator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ios_exception_minidump_generator.h; sourceTree = "<group>"; };
+		16BFA67114E1965A009704F8 /* ios_exception_minidump_generator.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ios_exception_minidump_generator.mm; sourceTree = "<group>"; };
+		16C7C968147D4A4200776EAD /* BreakpadDefines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BreakpadDefines.h; sourceTree = "<group>"; };
+		16C7C96A147D4A4200776EAD /* Breakpad.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Breakpad.h; sourceTree = "<group>"; };
+		16C7C96B147D4A4200776EAD /* Breakpad.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = Breakpad.mm; sourceTree = "<group>"; };
+		16C7CB9E147D4A4300776EAD /* ConfigFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConfigFile.h; sourceTree = "<group>"; };
+		16C7CB9F147D4A4300776EAD /* ConfigFile.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ConfigFile.mm; sourceTree = "<group>"; };
+		16C7CBAD147D4A4300776EAD /* breakpad_nlist_64.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = breakpad_nlist_64.cc; sourceTree = "<group>"; };
+		16C7CBAE147D4A4300776EAD /* breakpad_nlist_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = breakpad_nlist_64.h; sourceTree = "<group>"; };
+		16C7CBAF147D4A4300776EAD /* dynamic_images.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dynamic_images.cc; sourceTree = "<group>"; };
+		16C7CBB0147D4A4300776EAD /* dynamic_images.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dynamic_images.h; sourceTree = "<group>"; };
+		16C7CBB1147D4A4300776EAD /* exception_handler.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = exception_handler.cc; sourceTree = "<group>"; };
+		16C7CBB2147D4A4300776EAD /* exception_handler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = exception_handler.h; sourceTree = "<group>"; };
+		16C7CBB4147D4A4300776EAD /* minidump_generator.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = minidump_generator.cc; sourceTree = "<group>"; };
+		16C7CBB5147D4A4300776EAD /* minidump_generator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = minidump_generator.h; sourceTree = "<group>"; };
+		16C7CBBC147D4A4300776EAD /* protected_memory_allocator.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = protected_memory_allocator.cc; sourceTree = "<group>"; };
+		16C7CBBD147D4A4300776EAD /* protected_memory_allocator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = protected_memory_allocator.h; sourceTree = "<group>"; };
+		16C7CBEA147D4A4300776EAD /* uploader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uploader.h; sourceTree = "<group>"; };
+		16C7CBEB147D4A4300776EAD /* uploader.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = uploader.mm; sourceTree = "<group>"; };
+		16C7CC04147D4A4300776EAD /* minidump_file_writer-inl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "minidump_file_writer-inl.h"; sourceTree = "<group>"; };
+		16C7CC05147D4A4300776EAD /* minidump_file_writer.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = minidump_file_writer.cc; sourceTree = "<group>"; };
+		16C7CC06147D4A4300776EAD /* minidump_file_writer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = minidump_file_writer.h; sourceTree = "<group>"; };
+		16C7CC07147D4A4300776EAD /* minidump_file_writer_unittest.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = minidump_file_writer_unittest.cc; sourceTree = "<group>"; };
+		16C7CC4A147D4A4300776EAD /* convert_UTF.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = convert_UTF.c; sourceTree = "<group>"; };
+		16C7CC4B147D4A4300776EAD /* convert_UTF.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = convert_UTF.h; sourceTree = "<group>"; };
+		16C7CC88147D4A4300776EAD /* GTMLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMLogger.h; sourceTree = "<group>"; };
+		16C7CC89147D4A4300776EAD /* GTMLogger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMLogger.m; sourceTree = "<group>"; };
+		16C7CC8A147D4A4300776EAD /* HTTPMultipartUpload.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTTPMultipartUpload.h; sourceTree = "<group>"; };
+		16C7CC8B147D4A4300776EAD /* HTTPMultipartUpload.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HTTPMultipartUpload.m; sourceTree = "<group>"; };
+		16C7CC93147D4A4300776EAD /* file_id.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = file_id.cc; sourceTree = "<group>"; };
+		16C7CC94147D4A4300776EAD /* file_id.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = file_id.h; sourceTree = "<group>"; };
+		16C7CC95147D4A4300776EAD /* macho_id.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = macho_id.cc; sourceTree = "<group>"; };
+		16C7CC96147D4A4300776EAD /* macho_id.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = macho_id.h; sourceTree = "<group>"; };
+		16C7CC9A147D4A4300776EAD /* macho_utilities.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = macho_utilities.cc; sourceTree = "<group>"; };
+		16C7CC9B147D4A4300776EAD /* macho_utilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = macho_utilities.h; sourceTree = "<group>"; };
+		16C7CC9C147D4A4300776EAD /* macho_walker.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = macho_walker.cc; sourceTree = "<group>"; };
+		16C7CC9D147D4A4300776EAD /* macho_walker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = macho_walker.h; sourceTree = "<group>"; };
+		16C7CC9F147D4A4300776EAD /* string_utilities.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = string_utilities.cc; sourceTree = "<group>"; };
+		16C7CCA0147D4A4300776EAD /* string_utilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = string_utilities.h; sourceTree = "<group>"; };
+		16C7CCA4147D4A4300776EAD /* md5.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = md5.cc; sourceTree = "<group>"; };
+		16C7CCA5147D4A4300776EAD /* md5.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = md5.h; sourceTree = "<group>"; };
+		16C7CCB9147D4A4300776EAD /* string_conversion.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = string_conversion.cc; sourceTree = "<group>"; };
+		16C7CCBA147D4A4300776EAD /* string_conversion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = string_conversion.h; sourceTree = "<group>"; };
+		16C92FAB150DF8330053D7BA /* BreakpadController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BreakpadController.h; sourceTree = "<group>"; };
+		16C92FAC150DF8330053D7BA /* BreakpadController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = BreakpadController.mm; sourceTree = "<group>"; };
+		1EEEB60C1720821900F7E689 /* simple_string_dictionary.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = simple_string_dictionary.cc; sourceTree = "<group>"; };
+		1EEEB60D1720821900F7E689 /* simple_string_dictionary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simple_string_dictionary.h; sourceTree = "<group>"; };
+		AA747D9E0F9514B9006C5449 /* Breakpad_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Breakpad_Prefix.pch; sourceTree = SOURCE_ROOT; };
+		AACBBE490F95108600F1A2B1 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+		D2AAC07E0554694100DB518D /* libBreakpad.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libBreakpad.a; sourceTree = BUILT_PRODUCTS_DIR; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+		D2AAC07C0554694100DB518D /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				AACBBE4A0F95108600F1A2B1 /* Foundation.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+		034768DFFF38A50411DB9C8B /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				D2AAC07E0554694100DB518D /* libBreakpad.a */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		0867D691FE84028FC02AAC07 /* Breakpad */ = {
+			isa = PBXGroup;
+			children = (
+				08FB77AEFE84172EC02AAC07 /* Classes */,
+				32C88DFF0371C24200C91783 /* Other Sources */,
+				0867D69AFE84028FC02AAC07 /* Frameworks */,
+				034768DFFF38A50411DB9C8B /* Products */,
+			);
+			name = Breakpad;
+			sourceTree = "<group>";
+		};
+		0867D69AFE84028FC02AAC07 /* Frameworks */ = {
+			isa = PBXGroup;
+			children = (
+				AACBBE490F95108600F1A2B1 /* Foundation.framework */,
+			);
+			name = Frameworks;
+			sourceTree = "<group>";
+		};
+		08FB77AEFE84172EC02AAC07 /* Classes */ = {
+			isa = PBXGroup;
+			children = (
+				16C7C965147D4A4200776EAD /* client */,
+				16C7CC47147D4A4300776EAD /* common */,
+			);
+			name = Classes;
+			sourceTree = "<group>";
+		};
+		16BFA66A14E195E9009704F8 /* handler */ = {
+			isa = PBXGroup;
+			children = (
+				16BFA67114E1965A009704F8 /* ios_exception_minidump_generator.mm */,
+				16BFA66E14E195E9009704F8 /* ios_exception_minidump_generator.h */,
+			);
+			path = handler;
+			sourceTree = "<group>";
+		};
+		16C7C965147D4A4200776EAD /* client */ = {
+			isa = PBXGroup;
+			children = (
+				16C7C966147D4A4200776EAD /* apple */,
+				16C7C969147D4A4200776EAD /* ios */,
+				16C7C99E147D4A4200776EAD /* mac */,
+				16C7CC04147D4A4300776EAD /* minidump_file_writer-inl.h */,
+				16C7CC05147D4A4300776EAD /* minidump_file_writer.cc */,
+				16C7CC06147D4A4300776EAD /* minidump_file_writer.h */,
+				16C7CC07147D4A4300776EAD /* minidump_file_writer_unittest.cc */,
+			);
+			name = client;
+			path = ..;
+			sourceTree = SOURCE_ROOT;
+		};
+		16C7C966147D4A4200776EAD /* apple */ = {
+			isa = PBXGroup;
+			children = (
+				16C7C967147D4A4200776EAD /* Framework */,
+			);
+			path = apple;
+			sourceTree = "<group>";
+		};
+		16C7C967147D4A4200776EAD /* Framework */ = {
+			isa = PBXGroup;
+			children = (
+				16C7C968147D4A4200776EAD /* BreakpadDefines.h */,
+			);
+			path = Framework;
+			sourceTree = "<group>";
+		};
+		16C7C969147D4A4200776EAD /* ios */ = {
+			isa = PBXGroup;
+			children = (
+				16C92FAB150DF8330053D7BA /* BreakpadController.h */,
+				16C92FAC150DF8330053D7BA /* BreakpadController.mm */,
+				16BFA66A14E195E9009704F8 /* handler */,
+				16C7C96A147D4A4200776EAD /* Breakpad.h */,
+				16C7C96B147D4A4200776EAD /* Breakpad.mm */,
+			);
+			path = ios;
+			sourceTree = "<group>";
+		};
+		16C7C99E147D4A4200776EAD /* mac */ = {
+			isa = PBXGroup;
+			children = (
+				16C7CB9D147D4A4300776EAD /* crash_generation */,
+				16C7CBAA147D4A4300776EAD /* handler */,
+				16C7CBC8147D4A4300776EAD /* sender */,
+			);
+			path = mac;
+			sourceTree = "<group>";
+		};
+		16C7CB9D147D4A4300776EAD /* crash_generation */ = {
+			isa = PBXGroup;
+			children = (
+				16C7CB9E147D4A4300776EAD /* ConfigFile.h */,
+				16C7CB9F147D4A4300776EAD /* ConfigFile.mm */,
+			);
+			path = crash_generation;
+			sourceTree = "<group>";
+		};
+		16C7CBAA147D4A4300776EAD /* handler */ = {
+			isa = PBXGroup;
+			children = (
+				16C7CBAD147D4A4300776EAD /* breakpad_nlist_64.cc */,
+				16C7CBAE147D4A4300776EAD /* breakpad_nlist_64.h */,
+				16C7CBAF147D4A4300776EAD /* dynamic_images.cc */,
+				16C7CBB0147D4A4300776EAD /* dynamic_images.h */,
+				16C7CBB1147D4A4300776EAD /* exception_handler.cc */,
+				16C7CBB2147D4A4300776EAD /* exception_handler.h */,
+				14569322182CE2C10029C465 /* mach_vm_compat.h */,
+				16C7CBB4147D4A4300776EAD /* minidump_generator.cc */,
+				16C7CBB5147D4A4300776EAD /* minidump_generator.h */,
+				16C7CBBC147D4A4300776EAD /* protected_memory_allocator.cc */,
+				16C7CBBD147D4A4300776EAD /* protected_memory_allocator.h */,
+				14569320182CE29F0029C465 /* ucontext_compat.h */,
+			);
+			path = handler;
+			sourceTree = "<group>";
+		};
+		16C7CBC8147D4A4300776EAD /* sender */ = {
+			isa = PBXGroup;
+			children = (
+				16C7CBEA147D4A4300776EAD /* uploader.h */,
+				16C7CBEB147D4A4300776EAD /* uploader.mm */,
+			);
+			path = sender;
+			sourceTree = "<group>";
+		};
+		16C7CC47147D4A4300776EAD /* common */ = {
+			isa = PBXGroup;
+			children = (
+				1EEEB60C1720821900F7E689 /* simple_string_dictionary.cc */,
+				1EEEB60D1720821900F7E689 /* simple_string_dictionary.h */,
+				16C7CC4A147D4A4300776EAD /* convert_UTF.c */,
+				16C7CC4B147D4A4300776EAD /* convert_UTF.h */,
+				16C7CC82147D4A4300776EAD /* mac */,
+				16C7CCA4147D4A4300776EAD /* md5.cc */,
+				16C7CCA5147D4A4300776EAD /* md5.h */,
+				16C7CCB9147D4A4300776EAD /* string_conversion.cc */,
+				16C7CCBA147D4A4300776EAD /* string_conversion.h */,
+			);
+			name = common;
+			path = ../../common;
+			sourceTree = SOURCE_ROOT;
+		};
+		16C7CC82147D4A4300776EAD /* mac */ = {
+			isa = PBXGroup;
+			children = (
+				16C7CC88147D4A4300776EAD /* GTMLogger.h */,
+				16C7CC89147D4A4300776EAD /* GTMLogger.m */,
+				16C7CC8A147D4A4300776EAD /* HTTPMultipartUpload.h */,
+				16C7CC8B147D4A4300776EAD /* HTTPMultipartUpload.m */,
+				16C7CC93147D4A4300776EAD /* file_id.cc */,
+				16C7CC94147D4A4300776EAD /* file_id.h */,
+				16C7CC95147D4A4300776EAD /* macho_id.cc */,
+				16C7CC96147D4A4300776EAD /* macho_id.h */,
+				16C7CC9A147D4A4300776EAD /* macho_utilities.cc */,
+				16C7CC9B147D4A4300776EAD /* macho_utilities.h */,
+				16C7CC9C147D4A4300776EAD /* macho_walker.cc */,
+				16C7CC9D147D4A4300776EAD /* macho_walker.h */,
+				16C7CC9F147D4A4300776EAD /* string_utilities.cc */,
+				16C7CCA0147D4A4300776EAD /* string_utilities.h */,
+			);
+			path = mac;
+			sourceTree = "<group>";
+		};
+		32C88DFF0371C24200C91783 /* Other Sources */ = {
+			isa = PBXGroup;
+			children = (
+				AA747D9E0F9514B9006C5449 /* Breakpad_Prefix.pch */,
+			);
+			name = "Other Sources";
+			sourceTree = "<group>";
+		};
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+		D2AAC07A0554694100DB518D /* Headers */ = {
+			isa = PBXHeadersBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				AA747D9F0F9514B9006C5449 /* Breakpad_Prefix.pch in Headers */,
+				16C7CCCB147D4A4300776EAD /* BreakpadDefines.h in Headers */,
+				16C7CCCC147D4A4300776EAD /* Breakpad.h in Headers */,
+				16C7CDE8147D4A4300776EAD /* ConfigFile.h in Headers */,
+				14569321182CE29F0029C465 /* ucontext_compat.h in Headers */,
+				16C7CDF6147D4A4300776EAD /* breakpad_nlist_64.h in Headers */,
+				16C7CDF8147D4A4300776EAD /* dynamic_images.h in Headers */,
+				16C7CDFA147D4A4300776EAD /* exception_handler.h in Headers */,
+				16C7CDFD147D4A4300776EAD /* minidump_generator.h in Headers */,
+				16C7CDFF147D4A4300776EAD /* protected_memory_allocator.h in Headers */,
+				16C7CE08147D4A4300776EAD /* uploader.h in Headers */,
+				16C7CE18147D4A4300776EAD /* minidump_file_writer-inl.h in Headers */,
+				16C7CE1A147D4A4300776EAD /* minidump_file_writer.h in Headers */,
+				16C7CE41147D4A4300776EAD /* convert_UTF.h in Headers */,
+				16C7CE78147D4A4300776EAD /* GTMLogger.h in Headers */,
+				16C7CE7A147D4A4300776EAD /* HTTPMultipartUpload.h in Headers */,
+				16C7CE84147D4A4300776EAD /* file_id.h in Headers */,
+				16C7CE86147D4A4300776EAD /* macho_id.h in Headers */,
+				16C7CE8B147D4A4300776EAD /* macho_utilities.h in Headers */,
+				16C7CE8D147D4A4300776EAD /* macho_walker.h in Headers */,
+				16C7CE90147D4A4300776EAD /* string_utilities.h in Headers */,
+				16C7CE94147D4A4300776EAD /* md5.h in Headers */,
+				16C7CEA8147D4A4300776EAD /* string_conversion.h in Headers */,
+				16BFA67014E195E9009704F8 /* ios_exception_minidump_generator.h in Headers */,
+				16C92FAD150DF8330053D7BA /* BreakpadController.h in Headers */,
+				1EEEB6101720821900F7E689 /* simple_string_dictionary.h in Headers */,
+				14569323182CE2C10029C465 /* mach_vm_compat.h in Headers */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+		D2AAC07D0554694100DB518D /* Breakpad */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 1DEB921E08733DC00010E9CD /* Build configuration list for PBXNativeTarget "Breakpad" */;
+			buildPhases = (
+				D2AAC07A0554694100DB518D /* Headers */,
+				D2AAC07B0554694100DB518D /* Sources */,
+				D2AAC07C0554694100DB518D /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = Breakpad;
+			productName = Breakpad;
+			productReference = D2AAC07E0554694100DB518D /* libBreakpad.a */;
+			productType = "com.apple.product-type.library.static";
+		};
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+		0867D690FE84028FC02AAC07 /* Project object */ = {
+			isa = PBXProject;
+			attributes = {
+				LastUpgradeCheck = 0510;
+			};
+			buildConfigurationList = 1DEB922208733DC00010E9CD /* Build configuration list for PBXProject "Breakpad" */;
+			compatibilityVersion = "Xcode 3.2";
+			developmentRegion = English;
+			hasScannedForEncodings = 1;
+			knownRegions = (
+				English,
+				Japanese,
+				French,
+				German,
+				da,
+				de,
+				es,
+				fr,
+				it,
+				ja,
+				nl,
+				no,
+				sl,
+				sv,
+				tr,
+			);
+			mainGroup = 0867D691FE84028FC02AAC07 /* Breakpad */;
+			productRefGroup = 034768DFFF38A50411DB9C8B /* Products */;
+			projectDirPath = "";
+			projectRoot = "";
+			targets = (
+				D2AAC07D0554694100DB518D /* Breakpad */,
+			);
+		};
+/* End PBXProject section */
+
+/* Begin PBXSourcesBuildPhase section */
+		D2AAC07B0554694100DB518D /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				16C7CCCD147D4A4300776EAD /* Breakpad.mm in Sources */,
+				16C7CDE9147D4A4300776EAD /* ConfigFile.mm in Sources */,
+				16C7CDF5147D4A4300776EAD /* breakpad_nlist_64.cc in Sources */,
+				16C7CDF7147D4A4300776EAD /* dynamic_images.cc in Sources */,
+				16C7CDF9147D4A4300776EAD /* exception_handler.cc in Sources */,
+				16C7CDFC147D4A4300776EAD /* minidump_generator.cc in Sources */,
+				16C7CDFE147D4A4300776EAD /* protected_memory_allocator.cc in Sources */,
+				16C7CE09147D4A4300776EAD /* uploader.mm in Sources */,
+				16C7CE19147D4A4300776EAD /* minidump_file_writer.cc in Sources */,
+				16C7CE40147D4A4300776EAD /* convert_UTF.c in Sources */,
+				16C7CE79147D4A4300776EAD /* GTMLogger.m in Sources */,
+				16C7CE7B147D4A4300776EAD /* HTTPMultipartUpload.m in Sources */,
+				16C7CE83147D4A4300776EAD /* file_id.cc in Sources */,
+				16C7CE85147D4A4300776EAD /* macho_id.cc in Sources */,
+				16C7CE8A147D4A4300776EAD /* macho_utilities.cc in Sources */,
+				16C7CE8C147D4A4300776EAD /* macho_walker.cc in Sources */,
+				16C7CE8F147D4A4300776EAD /* string_utilities.cc in Sources */,
+				16C7CE93147D4A4300776EAD /* md5.cc in Sources */,
+				16C7CEA7147D4A4300776EAD /* string_conversion.cc in Sources */,
+				16BFA67214E1965A009704F8 /* ios_exception_minidump_generator.mm in Sources */,
+				16C92FAE150DF8330053D7BA /* BreakpadController.mm in Sources */,
+				1EEEB60F1720821900F7E689 /* simple_string_dictionary.cc in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+		1DEB921F08733DC00010E9CD /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				COPY_PHASE_STRIP = NO;
+				DSTROOT = /tmp/Breakpad.dst;
+				FRAMEWORK_SEARCH_PATHS = (
+					"$(inherited)",
+					"\"$(SRCROOT)/../mac/build/Debug\"",
+				);
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_MODEL_TUNING = G5;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = Breakpad_Prefix.pch;
+				INSTALL_PATH = /usr/local/lib;
+				LIBRARY_SEARCH_PATHS = (
+					"$(inherited)",
+					"\"$(SRCROOT)/../mac/build/Breakpad.build/Debug/Breakpad.build/Objects-normal/i386\"",
+					"\"$(SRCROOT)/../mac/build/Breakpad.build/Debug/Breakpad.build/Objects-normal/x86_64\"",
+					"\"$(SRCROOT)/../mac/build/Breakpad.build/Debug/breakpadUtilities.build/Objects-normal/i386\"",
+					"\"$(SRCROOT)/../mac/build/Breakpad.build/Debug/breakpadUtilities.build/Objects-normal/x86_64\"",
+					"\"$(SRCROOT)/../mac/build/Breakpad.build/Debug/gtest.build/Objects-normal/i386\"",
+					"\"$(SRCROOT)/../mac/build/Breakpad.build/Debug/gtest.build/Objects-normal/x86_64\"",
+					"\"$(SRCROOT)/../mac/build/Debug\"",
+					"\"$(SRCROOT)/../mac/gcov\"",
+				);
+				PRODUCT_NAME = Breakpad;
+			};
+			name = Debug;
+		};
+		1DEB922008733DC00010E9CD /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				DSTROOT = /tmp/Breakpad.dst;
+				FRAMEWORK_SEARCH_PATHS = (
+					"$(inherited)",
+					"\"$(SRCROOT)/../mac/build/Debug\"",
+				);
+				GCC_MODEL_TUNING = G5;
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = Breakpad_Prefix.pch;
+				INSTALL_PATH = /usr/local/lib;
+				LIBRARY_SEARCH_PATHS = (
+					"$(inherited)",
+					"\"$(SRCROOT)/../mac/build/Breakpad.build/Debug/Breakpad.build/Objects-normal/i386\"",
+					"\"$(SRCROOT)/../mac/build/Breakpad.build/Debug/Breakpad.build/Objects-normal/x86_64\"",
+					"\"$(SRCROOT)/../mac/build/Breakpad.build/Debug/breakpadUtilities.build/Objects-normal/i386\"",
+					"\"$(SRCROOT)/../mac/build/Breakpad.build/Debug/breakpadUtilities.build/Objects-normal/x86_64\"",
+					"\"$(SRCROOT)/../mac/build/Breakpad.build/Debug/gtest.build/Objects-normal/i386\"",
+					"\"$(SRCROOT)/../mac/build/Breakpad.build/Debug/gtest.build/Objects-normal/x86_64\"",
+					"\"$(SRCROOT)/../mac/build/Debug\"",
+					"\"$(SRCROOT)/../mac/gcov\"",
+				);
+				PRODUCT_NAME = Breakpad;
+			};
+			name = Release;
+		};
+		1DEB922308733DC00010E9CD /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
+				CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES;
+				GCC_C_LANGUAGE_STANDARD = c99;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES;
+				GCC_WARN_SHADOW = YES;
+				GCC_WARN_SIGN_COMPARE = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES;
+				GCC_WARN_UNKNOWN_PRAGMAS = YES;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_LABEL = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				HEADER_SEARCH_PATHS = (
+					../../,
+					../../client/apple/Framework,
+					../../common/mac,
+				);
+				IPHONEOS_DEPLOYMENT_TARGET = 5.0;
+				ONLY_ACTIVE_ARCH = YES;
+				OTHER_LDFLAGS = "-ObjC";
+				SDKROOT = iphoneos;
+				WARNING_CFLAGS = "-Wundef";
+			};
+			name = Debug;
+		};
+		1DEB922408733DC00010E9CD /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
+				CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES;
+				GCC_C_LANGUAGE_STANDARD = c99;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES;
+				GCC_WARN_SHADOW = YES;
+				GCC_WARN_SIGN_COMPARE = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES;
+				GCC_WARN_UNKNOWN_PRAGMAS = YES;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_LABEL = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				HEADER_SEARCH_PATHS = (
+					../../,
+					../../client/apple/Framework,
+					../../common/mac,
+				);
+				IPHONEOS_DEPLOYMENT_TARGET = 5.0;
+				OTHER_LDFLAGS = "-ObjC";
+				SDKROOT = iphoneos;
+				WARNING_CFLAGS = "-Wundef";
+			};
+			name = Release;
+		};
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+		1DEB921E08733DC00010E9CD /* Build configuration list for PBXNativeTarget "Breakpad" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				1DEB921F08733DC00010E9CD /* Debug */,
+				1DEB922008733DC00010E9CD /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		1DEB922208733DC00010E9CD /* Build configuration list for PBXProject "Breakpad" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				1DEB922308733DC00010E9CD /* Debug */,
+				1DEB922408733DC00010E9CD /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+/* End XCConfigurationList section */
+	};
+	rootObject = 0867D690FE84028FC02AAC07 /* Project object */;
+}
diff --git a/google-breakpad/src/client/ios/BreakpadController.h b/google-breakpad/src/client/ios/BreakpadController.h
new file mode 100644
index 0000000..13609cb
--- /dev/null
+++ b/google-breakpad/src/client/ios/BreakpadController.h
@@ -0,0 +1,141 @@
+// Copyright (c) 2012, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef CLIENT_IOS_HANDLER_IOS_BREAKPAD_CONTROLLER_H_
+#define CLIENT_IOS_HANDLER_IOS_BREAKPAD_CONTROLLER_H_
+
+#import <Foundation/Foundation.h>
+
+#import "client/ios/Breakpad.h"
+
+// This class is used to offer a higher level API around BreakpadRef. It
+// configures it, ensures thread-safety, and sends crash reports back to the
+// collecting server. By default, no crash reports are sent, the user must call
+// |setUploadingEnabled:YES| to start the uploading.
+@interface BreakpadController : NSObject {
+ @private
+  // The dispatch queue that will own the breakpad reference.
+  dispatch_queue_t queue_;
+
+  // Instance of Breakpad crash reporter. This is owned by the queue, but can
+  // be created on the main thread at startup.
+  BreakpadRef breakpadRef_;
+
+  // The dictionary that contains configuration for breakpad. Modifying it
+  // should only happen when the controller is not started. The initial value
+  // is the infoDictionary of the bundle of the application.
+  NSMutableDictionary* configuration_;
+
+  // Whether or not crash reports should be uploaded.
+  BOOL enableUploads_;
+
+  // Whether the controller has been started on the main thread. This is only
+  // used to assert the initialization order is correct.
+  BOOL started_;
+
+  // The interval to wait between two uploads. Value is 0 if no upload must be
+  // done.
+  int uploadIntervalInSeconds_;
+
+  // The dictionary that contains additional server parameters to send when
+  // uploading crash reports.
+  NSDictionary* uploadTimeParameters_;
+}
+
+// Singleton.
++ (BreakpadController*)sharedInstance;
+
+// Update the controller configuration. Merges its old configuration with the
+// new one. Merge is done by replacing the old values by the new values.
+- (void)updateConfiguration:(NSDictionary*)configuration;
+
+// Reset the controller configuration to its initial value, which is the
+// infoDictionary of the bundle of the application.
+- (void)resetConfiguration;
+
+// Configure the URL to upload the report to. This must be called at least once
+// if the URL is not in the bundle information.
+- (void)setUploadingURL:(NSString*)url;
+
+// Set the minimal interval between two uploads in seconds. This must be called
+// at least once if the interval is not in the bundle information. A value of 0
+// will prevent uploads.
+- (void)setUploadInterval:(int)intervalInSeconds;
+
+// Set additional server parameters to send when uploading crash reports.
+- (void)setParametersToAddAtUploadTime:(NSDictionary*)uploadTimeParameters;
+
+// Specify an upload parameter that will be added to the crash report when a
+// crash report is generated. See |BreakpadAddUploadParameter|.
+- (void)addUploadParameter:(NSString*)value forKey:(NSString*)key;
+
+// Remove a previously-added parameter from the upload parameter set. See
+// |BreakpadRemoveUploadParameter|.
+- (void)removeUploadParameterForKey:(NSString*)key;
+
+// Access the underlying BreakpadRef. This method is asynchronous, and will be
+// executed on the thread owning the BreakpadRef variable. Moreover, if the
+// controller is not started, the block will be called with a NULL parameter.
+- (void)withBreakpadRef:(void(^)(BreakpadRef))callback;
+
+// Starts the BreakpadController by registering crash handlers. If
+// |onCurrentThread| is YES, all setup is done on the current thread, otherwise
+// it is done on a private queue.
+- (void)start:(BOOL)onCurrentThread;
+
+// Unregisters the crash handlers.
+- (void)stop;
+
+// Enables or disables uploading of crash reports, but does not stop the
+// BreakpadController.
+- (void)setUploadingEnabled:(BOOL)enabled;
+
+// Check if there is currently a crash report to upload.
+- (void)hasReportToUpload:(void(^)(BOOL))callback;
+
+// Get the number of crash reports waiting to upload.
+- (void)getCrashReportCount:(void(^)(int))callback;
+
+// Get the next report to upload.
+// - If upload is disabled, callback will be called with (nil, -1).
+// - If a delay is to be waited before sending, callback will be called with
+//   (nil, n), with n (> 0) being the number of seconds to wait.
+// - if no delay is needed, callback will be called with (0, configuration),
+//   configuration being next report to upload, or nil if none is pending.
+- (void)getNextReportConfigurationOrSendDelay:
+    (void(^)(NSDictionary*, int))callback;
+
+// Sends synchronously the report specified by |configuration|. This method is
+// NOT thread safe and must be called from the breakpad thread.
+- (void)threadUnsafeSendReportWithConfiguration:(NSDictionary*)configuration
+                                withBreakpadRef:(BreakpadRef)ref;
+
+@end
+
+#endif  // CLIENT_IOS_HANDLER_IOS_BREAKPAD_CONTROLLER_H_
diff --git a/google-breakpad/src/client/ios/BreakpadController.mm b/google-breakpad/src/client/ios/BreakpadController.mm
new file mode 100644
index 0000000..dd71cff
--- /dev/null
+++ b/google-breakpad/src/client/ios/BreakpadController.mm
@@ -0,0 +1,354 @@
+// Copyright (c) 2012, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#import "BreakpadController.h"
+
+#import <UIKit/UIKit.h>
+#include <asl.h>
+#include <execinfo.h>
+#include <signal.h>
+#include <unistd.h>
+#include <sys/sysctl.h>
+
+#include <common/scoped_ptr.h>
+
+#pragma mark -
+#pragma mark Private Methods
+
+@interface BreakpadController ()
+
+// Init the singleton instance.
+- (id)initSingleton;
+
+// Load a crash report and send it to the server.
+- (void)sendStoredCrashReports;
+
+// Returns when a report can be sent. |-1| means never, |0| means that a report
+// can be sent immediately, a positive number is the number of seconds to wait
+// before being allowed to upload a report.
+- (int)sendDelay;
+
+// Notifies that a report will be sent, and update the last sending time
+// accordingly.
+- (void)reportWillBeSent;
+
+@end
+
+#pragma mark -
+#pragma mark Anonymous namespace
+
+namespace {
+
+// The name of the user defaults key for the last submission to the crash
+// server.
+NSString* const kLastSubmission = @"com.google.Breakpad.LastSubmission";
+
+// Returns a NSString describing the current platform.
+NSString* GetPlatform() {
+  // Name of the system call for getting the platform.
+  static const char kHwMachineSysctlName[] = "hw.machine";
+
+  NSString* result = nil;
+
+  size_t size = 0;
+  if (sysctlbyname(kHwMachineSysctlName, NULL, &size, NULL, 0) || size == 0)
+    return nil;
+  google_breakpad::scoped_array<char> machine(new char[size]);
+  if (sysctlbyname(kHwMachineSysctlName, machine.get(), &size, NULL, 0) == 0)
+    result = [NSString stringWithUTF8String:machine.get()];
+  return result;
+}
+
+}  // namespace
+
+#pragma mark -
+#pragma mark BreakpadController Implementation
+
+@implementation BreakpadController
+
++ (BreakpadController*)sharedInstance {
+  @synchronized(self) {
+    static BreakpadController* sharedInstance_ =
+        [[BreakpadController alloc] initSingleton];
+    return sharedInstance_;
+  }
+}
+
+- (id)init {
+  return nil;
+}
+
+- (id)initSingleton {
+  self = [super init];
+  if (self) {
+    queue_ = dispatch_queue_create("com.google.BreakpadQueue", NULL);
+    enableUploads_ = NO;
+    started_ = NO;
+    [self resetConfiguration];
+  }
+  return self;
+}
+
+// Since this class is a singleton, this method is not expected to be called.
+- (void)dealloc {
+  assert(!breakpadRef_);
+  dispatch_release(queue_);
+  [configuration_ release];
+  [uploadTimeParameters_ release];
+  [super dealloc];
+}
+
+#pragma mark -
+
+- (void)start:(BOOL)onCurrentThread {
+  if (started_)
+    return;
+  started_ = YES;
+  void(^startBlock)() = ^{
+      assert(!breakpadRef_);
+      breakpadRef_ = BreakpadCreate(configuration_);
+      if (breakpadRef_) {
+        BreakpadAddUploadParameter(breakpadRef_, @"platform", GetPlatform());
+      }
+  };
+  if (onCurrentThread)
+    startBlock();
+  else
+    dispatch_async(queue_, startBlock);
+}
+
+- (void)stop {
+  if (!started_)
+    return;
+  started_ = NO;
+  dispatch_sync(queue_, ^{
+      if (breakpadRef_) {
+        BreakpadRelease(breakpadRef_);
+        breakpadRef_ = NULL;
+      }
+  });
+}
+
+// This method must be called from the breakpad queue.
+- (void)threadUnsafeSendReportWithConfiguration:(NSDictionary*)configuration
+                                withBreakpadRef:(BreakpadRef)ref {
+  NSAssert(started_, @"The controller must be started before "
+                     "threadUnsafeSendReportWithConfiguration is called");
+  if (breakpadRef_) {
+    BreakpadUploadReportWithParametersAndConfiguration(breakpadRef_,
+                                                       uploadTimeParameters_,
+                                                       configuration);
+  }
+}
+
+- (void)setUploadingEnabled:(BOOL)enabled {
+  NSAssert(started_,
+      @"The controller must be started before setUploadingEnabled is called");
+  dispatch_async(queue_, ^{
+      if (enabled == enableUploads_)
+        return;
+      if (enabled) {
+        // Set this before calling doSendStoredCrashReport, because that
+        // calls sendDelay, which in turn checks this flag.
+        enableUploads_ = YES;
+        [self sendStoredCrashReports];
+      } else {
+        enableUploads_ = NO;
+        [NSObject cancelPreviousPerformRequestsWithTarget:self
+            selector:@selector(sendStoredCrashReports)
+            object:nil];
+      }
+  });
+}
+
+- (void)updateConfiguration:(NSDictionary*)configuration {
+  NSAssert(!started_,
+      @"The controller must not be started when updateConfiguration is called");
+  [configuration_ addEntriesFromDictionary:configuration];
+  NSString* uploadInterval =
+      [configuration_ valueForKey:@BREAKPAD_REPORT_INTERVAL];
+  if (uploadInterval)
+    [self setUploadInterval:[uploadInterval intValue]];
+}
+
+- (void)resetConfiguration {
+  NSAssert(!started_,
+      @"The controller must not be started when resetConfiguration is called");
+  [configuration_ autorelease];
+  configuration_ = [[[NSBundle mainBundle] infoDictionary] mutableCopy];
+  NSString* uploadInterval =
+      [configuration_ valueForKey:@BREAKPAD_REPORT_INTERVAL];
+  [self setUploadInterval:[uploadInterval intValue]];
+  [self setParametersToAddAtUploadTime:nil];
+}
+
+- (void)setUploadingURL:(NSString*)url {
+  NSAssert(!started_,
+      @"The controller must not be started when setUploadingURL is called");
+  [configuration_ setValue:url forKey:@BREAKPAD_URL];
+}
+
+- (void)setUploadInterval:(int)intervalInSeconds {
+  NSAssert(!started_,
+      @"The controller must not be started when setUploadInterval is called");
+  [configuration_ removeObjectForKey:@BREAKPAD_REPORT_INTERVAL];
+  uploadIntervalInSeconds_ = intervalInSeconds;
+  if (uploadIntervalInSeconds_ < 0)
+    uploadIntervalInSeconds_ = 0;
+}
+
+- (void)setParametersToAddAtUploadTime:(NSDictionary*)uploadTimeParameters {
+  NSAssert(!started_, @"The controller must not be started when "
+                      "setParametersToAddAtUploadTime is called");
+  [uploadTimeParameters_ autorelease];
+  uploadTimeParameters_ = [uploadTimeParameters copy];
+}
+
+- (void)addUploadParameter:(NSString*)value forKey:(NSString*)key {
+  NSAssert(started_,
+      @"The controller must be started before addUploadParameter is called");
+  dispatch_async(queue_, ^{
+      if (breakpadRef_)
+        BreakpadAddUploadParameter(breakpadRef_, key, value);
+  });
+}
+
+- (void)removeUploadParameterForKey:(NSString*)key {
+  NSAssert(started_, @"The controller must be started before "
+                     "removeUploadParameterForKey is called");
+  dispatch_async(queue_, ^{
+      if (breakpadRef_)
+        BreakpadRemoveUploadParameter(breakpadRef_, key);
+  });
+}
+
+- (void)withBreakpadRef:(void(^)(BreakpadRef))callback {
+  NSAssert(started_,
+      @"The controller must be started before withBreakpadRef is called");
+  dispatch_async(queue_, ^{
+      callback(breakpadRef_);
+  });
+}
+
+- (void)hasReportToUpload:(void(^)(BOOL))callback {
+  NSAssert(started_, @"The controller must be started before "
+                     "hasReportToUpload is called");
+  dispatch_async(queue_, ^{
+      callback(breakpadRef_ && (BreakpadGetCrashReportCount(breakpadRef_) > 0));
+  });
+}
+
+- (void)getCrashReportCount:(void(^)(int))callback {
+  NSAssert(started_, @"The controller must be started before "
+                     "getCrashReportCount is called");
+  dispatch_async(queue_, ^{
+      callback(breakpadRef_ ? BreakpadGetCrashReportCount(breakpadRef_) : 0);
+  });
+}
+
+- (void)getNextReportConfigurationOrSendDelay:
+    (void(^)(NSDictionary*, int))callback {
+  NSAssert(started_, @"The controller must be started before "
+                     "getNextReportConfigurationOrSendDelay is called");
+  dispatch_async(queue_, ^{
+      if (!breakpadRef_) {
+        callback(nil, -1);
+        return;
+      }
+      int delay = [self sendDelay];
+      if (delay != 0) {
+        callback(nil, delay);
+        return;
+      }
+      [self reportWillBeSent];
+      callback(BreakpadGetNextReportConfiguration(breakpadRef_), 0);
+  });
+}
+
+#pragma mark -
+
+- (int)sendDelay {
+  if (!breakpadRef_ || uploadIntervalInSeconds_ <= 0 || !enableUploads_)
+    return -1;
+
+  // To prevent overloading the crash server, crashes are not sent than one
+  // report every |uploadIntervalInSeconds_|. A value in the user defaults is
+  // used to keep the time of the last upload.
+  NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
+  NSNumber *lastTimeNum = [userDefaults objectForKey:kLastSubmission];
+  NSTimeInterval lastTime = lastTimeNum ? [lastTimeNum floatValue] : 0;
+  NSTimeInterval spanSeconds = CFAbsoluteTimeGetCurrent() - lastTime;
+
+  if (spanSeconds >= uploadIntervalInSeconds_)
+    return 0;
+  return uploadIntervalInSeconds_ - static_cast<int>(spanSeconds);
+}
+
+- (void)reportWillBeSent {
+  NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
+  [userDefaults setObject:[NSNumber numberWithDouble:CFAbsoluteTimeGetCurrent()]
+                   forKey:kLastSubmission];
+  [userDefaults synchronize];
+}
+
+- (void)sendStoredCrashReports {
+  dispatch_async(queue_, ^{
+      if (BreakpadGetCrashReportCount(breakpadRef_) == 0)
+        return;
+
+      int timeToWait = [self sendDelay];
+
+      // Unable to ever send report.
+      if (timeToWait == -1)
+        return;
+
+      // A report can be sent now.
+      if (timeToWait == 0) {
+        [self reportWillBeSent];
+        BreakpadUploadNextReportWithParameters(breakpadRef_,
+                                               uploadTimeParameters_);
+
+        // If more reports must be sent, make sure this method is called again.
+        if (BreakpadGetCrashReportCount(breakpadRef_) > 0)
+          timeToWait = uploadIntervalInSeconds_;
+      }
+
+      // A report must be sent later.
+      if (timeToWait > 0) {
+        // performSelector: doesn't work on queue_
+        dispatch_async(dispatch_get_main_queue(), ^{
+            [self performSelector:@selector(sendStoredCrashReports)
+                       withObject:nil
+                       afterDelay:timeToWait];
+        });
+     }
+  });
+}
+
+@end
diff --git a/google-breakpad/src/client/ios/Breakpad_Prefix.pch b/google-breakpad/src/client/ios/Breakpad_Prefix.pch
new file mode 100644
index 0000000..bfb7394
--- /dev/null
+++ b/google-breakpad/src/client/ios/Breakpad_Prefix.pch
@@ -0,0 +1,7 @@
+//
+// Prefix header for all source files of the 'CocoaTouchStaticLibrary' target in the 'CocoaTouchStaticLibrary' project.
+//
+
+#ifdef __OBJC__
+    #import <Foundation/Foundation.h>
+#endif
diff --git a/google-breakpad/src/client/ios/handler/ios_exception_minidump_generator.h b/google-breakpad/src/client/ios/handler/ios_exception_minidump_generator.h
new file mode 100644
index 0000000..21133e6
--- /dev/null
+++ b/google-breakpad/src/client/ios/handler/ios_exception_minidump_generator.h
@@ -0,0 +1,74 @@
+// Copyright (c) 2012, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// ios_exception_minidump_generator.h:  Create a fake minidump from a
+// NSException.
+
+#ifndef CLIENT_IOS_HANDLER_IOS_EXCEPTION_MINIDUMP_GENERATOR_H_
+#define CLIENT_IOS_HANDLER_IOS_EXCEPTION_MINIDUMP_GENERATOR_H_
+
+#include <Foundation/Foundation.h>
+
+#include "client/mac/handler/minidump_generator.h"
+
+namespace google_breakpad {
+
+class IosExceptionMinidumpGenerator : public MinidumpGenerator {
+ public:
+  explicit IosExceptionMinidumpGenerator(NSException *exception);
+  virtual ~IosExceptionMinidumpGenerator();
+
+ protected:
+  virtual bool WriteExceptionStream(MDRawDirectory *exception_stream);
+  virtual bool WriteThreadStream(mach_port_t thread_id, MDRawThread *thread);
+
+ private:
+
+  // Get the crashing program counter from the exception.
+  uintptr_t GetPCFromException();
+
+  // Get the crashing link register from the exception.
+  uintptr_t GetLRFromException();
+
+  // Write a virtual thread context for the crashing site.
+  bool WriteCrashingContext(MDLocationDescriptor *register_location);
+  // Per-CPU implementations of the above method.
+#ifdef HAS_ARM_SUPPORT
+  bool WriteCrashingContextARM(MDLocationDescriptor *register_location);
+#endif
+#ifdef HAS_ARM64_SUPPORT
+  bool WriteCrashingContextARM64(MDLocationDescriptor *register_location);
+#endif
+
+  NSArray *return_addresses_;
+};
+
+}  // namespace google_breakpad
+
+#endif  // CLIENT_IOS_HANDLER_IOS_EXCEPTION_MINIDUMP_GENERATOR_H_
diff --git a/google-breakpad/src/client/ios/handler/ios_exception_minidump_generator.mm b/google-breakpad/src/client/ios/handler/ios_exception_minidump_generator.mm
new file mode 100644
index 0000000..82ea5bb
--- /dev/null
+++ b/google-breakpad/src/client/ios/handler/ios_exception_minidump_generator.mm
@@ -0,0 +1,210 @@
+// Copyright (c) 2012, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include "client/ios/handler/ios_exception_minidump_generator.h"
+
+#include <pthread.h>
+
+#include "google_breakpad/common/minidump_cpu_arm.h"
+#include "google_breakpad/common/minidump_cpu_arm64.h"
+#include "google_breakpad/common/minidump_exception_mac.h"
+#include "client/minidump_file_writer-inl.h"
+#include "common/scoped_ptr.h"
+
+#if defined(HAS_ARM_SUPPORT) && defined(HAS_ARM64_SUPPORT)
+#error "This file should be compiled for only one architecture at a time"
+#endif
+
+namespace {
+
+const int kExceptionType = EXC_SOFTWARE;
+const int kExceptionCode = MD_EXCEPTION_CODE_MAC_NS_EXCEPTION;
+
+#if defined(HAS_ARM_SUPPORT) || defined(HAS_ARM64_SUPPORT)
+const uintptr_t kExpectedFinalFp = sizeof(uintptr_t);
+const uintptr_t kExpectedFinalSp = 0;
+
+// Append the given value to the sp position of the stack represented
+// by memory.
+void AppendToMemory(uint8_t *memory, uintptr_t sp, uintptr_t data) {
+  memcpy(memory + sp, &data, sizeof(data));
+}
+#endif
+
+}  // namespace
+
+namespace google_breakpad {
+
+IosExceptionMinidumpGenerator::IosExceptionMinidumpGenerator(
+    NSException *exception)
+    : MinidumpGenerator(mach_task_self(), 0) {
+  return_addresses_ = [[exception callStackReturnAddresses] retain];
+  SetExceptionInformation(kExceptionType,
+                          kExceptionCode,
+                          0,
+                          pthread_mach_thread_np(pthread_self()));
+}
+
+IosExceptionMinidumpGenerator::~IosExceptionMinidumpGenerator() {
+  [return_addresses_ release];
+}
+
+bool IosExceptionMinidumpGenerator::WriteCrashingContext(
+    MDLocationDescriptor *register_location) {
+#ifdef HAS_ARM_SUPPORT
+  return WriteCrashingContextARM(register_location);
+#elif defined(HAS_ARM64_SUPPORT)
+  return WriteCrashingContextARM64(register_location);
+#else
+  assert(false);
+  return false;
+#endif
+}
+
+#ifdef HAS_ARM_SUPPORT
+bool IosExceptionMinidumpGenerator::WriteCrashingContextARM(
+    MDLocationDescriptor *register_location) {
+  TypedMDRVA<MDRawContextARM> context(&writer_);
+  if (!context.Allocate())
+    return false;
+  *register_location = context.location();
+  MDRawContextARM *context_ptr = context.get();
+  memset(context_ptr, 0, sizeof(MDRawContextARM));
+  context_ptr->context_flags = MD_CONTEXT_ARM_FULL;
+  context_ptr->iregs[MD_CONTEXT_ARM_REG_IOS_FP] = kExpectedFinalFp;  // FP
+  context_ptr->iregs[MD_CONTEXT_ARM_REG_SP] = kExpectedFinalSp;      // SP
+  context_ptr->iregs[MD_CONTEXT_ARM_REG_LR] = GetLRFromException();  // LR
+  context_ptr->iregs[MD_CONTEXT_ARM_REG_PC] = GetPCFromException();  // PC
+  return true;
+}
+#endif
+
+#ifdef HAS_ARM64_SUPPORT
+bool IosExceptionMinidumpGenerator::WriteCrashingContextARM64(
+    MDLocationDescriptor *register_location) {
+  TypedMDRVA<MDRawContextARM64> context(&writer_);
+  if (!context.Allocate())
+    return false;
+  *register_location = context.location();
+  MDRawContextARM64 *context_ptr = context.get();
+  memset(context_ptr, 0, sizeof(*context_ptr));
+  context_ptr->context_flags = MD_CONTEXT_ARM64_FULL;
+  context_ptr->iregs[MD_CONTEXT_ARM64_REG_FP] = kExpectedFinalFp;      // FP
+  context_ptr->iregs[MD_CONTEXT_ARM64_REG_SP] = kExpectedFinalSp;      // SP
+  context_ptr->iregs[MD_CONTEXT_ARM64_REG_LR] = GetLRFromException();  // LR
+  context_ptr->iregs[MD_CONTEXT_ARM64_REG_PC] = GetPCFromException();  // PC
+  return true;
+}
+#endif
+
+uintptr_t IosExceptionMinidumpGenerator::GetPCFromException() {
+  return [[return_addresses_ objectAtIndex:0] unsignedIntegerValue];
+}
+
+uintptr_t IosExceptionMinidumpGenerator::GetLRFromException() {
+  return [[return_addresses_ objectAtIndex:1] unsignedIntegerValue];
+}
+
+bool IosExceptionMinidumpGenerator::WriteExceptionStream(
+    MDRawDirectory *exception_stream) {
+#if defined(HAS_ARM_SUPPORT) || defined(HAS_ARM64_SUPPORT)
+  TypedMDRVA<MDRawExceptionStream> exception(&writer_);
+
+  if (!exception.Allocate())
+    return false;
+
+  exception_stream->stream_type = MD_EXCEPTION_STREAM;
+  exception_stream->location = exception.location();
+  MDRawExceptionStream *exception_ptr = exception.get();
+  exception_ptr->thread_id = pthread_mach_thread_np(pthread_self());
+
+  // This naming is confusing, but it is the proper translation from
+  // mach naming to minidump naming.
+  exception_ptr->exception_record.exception_code = kExceptionType;
+  exception_ptr->exception_record.exception_flags = kExceptionCode;
+
+  if (!WriteCrashingContext(&exception_ptr->thread_context))
+    return false;
+
+  exception_ptr->exception_record.exception_address = GetPCFromException();
+  return true;
+#else
+  return MinidumpGenerator::WriteExceptionStream(exception_stream);
+#endif
+}
+
+bool IosExceptionMinidumpGenerator::WriteThreadStream(mach_port_t thread_id,
+                                                      MDRawThread *thread) {
+#if defined(HAS_ARM_SUPPORT) || defined(HAS_ARM64_SUPPORT)
+  if (pthread_mach_thread_np(pthread_self()) != thread_id)
+    return MinidumpGenerator::WriteThreadStream(thread_id, thread);
+
+  size_t frame_count = [return_addresses_ count];
+  if (frame_count == 0)
+    return false;
+  UntypedMDRVA memory(&writer_);
+  size_t pointer_size = sizeof(uintptr_t);
+  size_t frame_record_size = 2 * pointer_size;
+  size_t stack_size = frame_record_size * (frame_count - 1) + pointer_size;
+  if (!memory.Allocate(stack_size))
+    return false;
+  scoped_array<uint8_t> stack_memory(new uint8_t[stack_size]);
+  uintptr_t sp = stack_size - pointer_size;
+  uintptr_t fp = 0;
+  uintptr_t lr = 0;
+  for (size_t current_frame = frame_count - 1;
+       current_frame > 0;
+       --current_frame) {
+    AppendToMemory(stack_memory.get(), sp, lr);
+    sp -= pointer_size;
+    AppendToMemory(stack_memory.get(), sp, fp);
+    fp = sp;
+    sp -= pointer_size;
+    lr = [[return_addresses_ objectAtIndex:current_frame] unsignedIntegerValue];
+  }
+  if (!memory.Copy(stack_memory.get(), stack_size))
+    return false;
+  assert(sp == kExpectedFinalSp);
+  assert(fp == kExpectedFinalFp);
+  assert(lr == GetLRFromException());
+  thread->stack.start_of_memory_range = sp;
+  thread->stack.memory = memory.location();
+  memory_blocks_.push_back(thread->stack);
+
+  if (!WriteCrashingContext(&thread->thread_context))
+    return false;
+
+  thread->thread_id = thread_id;
+  return true;
+#else
+  return MinidumpGenerator::WriteThreadStream(thread_id, thread);
+#endif
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/client/linux/crash_generation/client_info.h b/google-breakpad/src/client/linux/crash_generation/client_info.h
new file mode 100644
index 0000000..d0a184a
--- /dev/null
+++ b/google-breakpad/src/client/linux/crash_generation/client_info.h
@@ -0,0 +1,53 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef CLIENT_LINUX_CRASH_GENERATION_CLIENT_INFO_H_
+#define CLIENT_LINUX_CRASH_GENERATION_CLIENT_INFO_H_
+
+namespace google_breakpad {
+
+class CrashGenerationServer;
+
+class ClientInfo {
+ public:
+  ClientInfo(pid_t pid, CrashGenerationServer* crash_server)
+    : crash_server_(crash_server),
+      pid_(pid) {}
+
+  CrashGenerationServer* crash_server() const { return crash_server_; }
+  pid_t pid() const { return pid_; }
+
+ private:
+  CrashGenerationServer* crash_server_;
+  pid_t pid_;
+};
+
+}
+
+#endif // CLIENT_LINUX_CRASH_GENERATION_CLIENT_INFO_H_
diff --git a/google-breakpad/src/client/linux/crash_generation/crash_generation_client.cc b/google-breakpad/src/client/linux/crash_generation/crash_generation_client.cc
new file mode 100644
index 0000000..d8bfbba
--- /dev/null
+++ b/google-breakpad/src/client/linux/crash_generation/crash_generation_client.cc
@@ -0,0 +1,105 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include "client/linux/crash_generation/crash_generation_client.h"
+
+#include <stdio.h>
+#include <sys/socket.h>
+#include <sys/types.h>
+
+#include <algorithm>
+
+#include "common/linux/eintr_wrapper.h"
+#include "common/linux/ignore_ret.h"
+#include "third_party/lss/linux_syscall_support.h"
+
+namespace google_breakpad {
+
+namespace {
+
+class CrashGenerationClientImpl : public CrashGenerationClient {
+ public:
+  explicit CrashGenerationClientImpl(int server_fd) : server_fd_(server_fd) {}
+  virtual ~CrashGenerationClientImpl() {}
+
+  virtual bool RequestDump(const void* blob, size_t blob_size) {
+    int fds[2];
+    if (sys_pipe(fds) < 0)
+      return false;
+    static const unsigned kControlMsgSize = CMSG_SPACE(sizeof(int));
+
+    struct kernel_iovec iov;
+    iov.iov_base = const_cast<void*>(blob);
+    iov.iov_len = blob_size;
+
+    struct kernel_msghdr msg = { 0 };
+    msg.msg_iov = &iov;
+    msg.msg_iovlen = 1;
+    char cmsg[kControlMsgSize] = "";
+    msg.msg_control = cmsg;
+    msg.msg_controllen = sizeof(cmsg);
+
+    struct cmsghdr* hdr = CMSG_FIRSTHDR(&msg);
+    hdr->cmsg_level = SOL_SOCKET;
+    hdr->cmsg_type = SCM_RIGHTS;
+    hdr->cmsg_len = CMSG_LEN(sizeof(int));
+    int* p = reinterpret_cast<int*>(CMSG_DATA(hdr));
+    *p = fds[1];
+
+    ssize_t ret = HANDLE_EINTR(sys_sendmsg(server_fd_, &msg, 0));
+    sys_close(fds[1]);
+    if (ret < 0) {
+      sys_close(fds[0]);
+      return false;
+    }
+
+    // Wait for an ACK from the server.
+    char b;
+    IGNORE_RET(HANDLE_EINTR(sys_read(fds[0], &b, 1)));
+    sys_close(fds[0]);
+
+    return true;
+  }
+
+ private:
+  int server_fd_;
+
+  DISALLOW_COPY_AND_ASSIGN(CrashGenerationClientImpl);
+};
+
+}  // namespace
+
+// static
+CrashGenerationClient* CrashGenerationClient::TryCreate(int server_fd) {
+  if (server_fd < 0)
+    return NULL;
+  return new CrashGenerationClientImpl(server_fd);
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/client/linux/crash_generation/crash_generation_client.h b/google-breakpad/src/client/linux/crash_generation/crash_generation_client.h
new file mode 100644
index 0000000..4e68424
--- /dev/null
+++ b/google-breakpad/src/client/linux/crash_generation/crash_generation_client.h
@@ -0,0 +1,65 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef CLIENT_LINUX_CRASH_GENERATION_CRASH_GENERATION_CLIENT_H_
+#define CLIENT_LINUX_CRASH_GENERATION_CRASH_GENERATION_CLIENT_H_
+
+#include "common/basictypes.h"
+
+#include <stddef.h>
+
+namespace google_breakpad {
+
+// CrashGenerationClient is an interface for implementing out-of-process crash
+// dumping.  The default implementation, accessed via the TryCreate() factory,
+// works in conjunction with the CrashGenerationServer to generate a minidump
+// via a remote process.
+class CrashGenerationClient {
+ public:
+  CrashGenerationClient() {}
+  virtual ~CrashGenerationClient() {}
+
+  // Request the crash server to generate a dump.  |blob| is an opaque
+  // CrashContext pointer from exception_handler.h.
+  // Returns true if the dump was successful; false otherwise.
+  virtual bool RequestDump(const void* blob, size_t blob_size) = 0;
+
+  // Returns a new CrashGenerationClient if |server_fd| is valid and
+  // connects to a CrashGenerationServer.  Otherwise, return NULL.
+  // The returned CrashGenerationClient* is owned by the caller of
+  // this function.
+  static CrashGenerationClient* TryCreate(int server_fd);
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(CrashGenerationClient);
+};
+
+}  // namespace google_breakpad
+
+#endif  // CLIENT_LINUX_CRASH_GENERATION_CRASH_GENERATION_CLIENT_H_
diff --git a/google-breakpad/src/client/linux/crash_generation/crash_generation_server.cc b/google-breakpad/src/client/linux/crash_generation/crash_generation_server.cc
new file mode 100644
index 0000000..860e8bc
--- /dev/null
+++ b/google-breakpad/src/client/linux/crash_generation/crash_generation_server.cc
@@ -0,0 +1,330 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include <assert.h>
+#include <dirent.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <poll.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/socket.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+#include <vector>
+
+#include "client/linux/crash_generation/crash_generation_server.h"
+#include "client/linux/crash_generation/client_info.h"
+#include "client/linux/handler/exception_handler.h"
+#include "client/linux/minidump_writer/minidump_writer.h"
+#include "common/linux/eintr_wrapper.h"
+#include "common/linux/guid_creator.h"
+#include "common/linux/safe_readlink.h"
+
+static const char kCommandQuit = 'x';
+
+namespace google_breakpad {
+
+CrashGenerationServer::CrashGenerationServer(
+  const int listen_fd,
+  OnClientDumpRequestCallback dump_callback,
+  void* dump_context,
+  OnClientExitingCallback exit_callback,
+  void* exit_context,
+  bool generate_dumps,
+  const string* dump_path) :
+    server_fd_(listen_fd),
+    dump_callback_(dump_callback),
+    dump_context_(dump_context),
+    exit_callback_(exit_callback),
+    exit_context_(exit_context),
+    generate_dumps_(generate_dumps),
+    started_(false)
+{
+  if (dump_path)
+    dump_dir_ = *dump_path;
+  else
+    dump_dir_ = "/tmp";
+}
+
+CrashGenerationServer::~CrashGenerationServer()
+{
+  if (started_)
+    Stop();
+}
+
+bool
+CrashGenerationServer::Start()
+{
+  if (started_ || 0 > server_fd_)
+    return false;
+
+  int control_pipe[2];
+  if (pipe(control_pipe))
+    return false;
+
+  if (fcntl(control_pipe[0], F_SETFD, FD_CLOEXEC))
+    return false;
+  if (fcntl(control_pipe[1], F_SETFD, FD_CLOEXEC))
+    return false;
+
+  if (fcntl(control_pipe[0], F_SETFL, O_NONBLOCK))
+    return false;
+
+  control_pipe_in_ = control_pipe[0];
+  control_pipe_out_ = control_pipe[1];
+
+  if (pthread_create(&thread_, NULL,
+                     ThreadMain, reinterpret_cast<void*>(this)))
+    return false;
+
+  started_ = true;
+  return true;
+}
+
+void
+CrashGenerationServer::Stop()
+{
+  assert(pthread_self() != thread_);
+
+  if (!started_)
+    return;
+
+  HANDLE_EINTR(write(control_pipe_out_, &kCommandQuit, 1));
+
+  void* dummy;
+  pthread_join(thread_, &dummy);
+
+  started_ = false;
+}
+
+//static
+bool
+CrashGenerationServer::CreateReportChannel(int* server_fd, int* client_fd)
+{
+  int fds[2];
+
+  if (socketpair(AF_UNIX, SOCK_SEQPACKET, 0, fds))
+    return false;
+
+  static const int on = 1;
+  // Enable passcred on the server end of the socket
+  if (setsockopt(fds[1], SOL_SOCKET, SO_PASSCRED, &on, sizeof(on)))
+    return false;
+
+  if (fcntl(fds[1], F_SETFL, O_NONBLOCK))
+    return false;
+  if (fcntl(fds[1], F_SETFD, FD_CLOEXEC))
+    return false;
+
+  *client_fd = fds[0];
+  *server_fd = fds[1];
+  return true;
+}
+
+// The following methods/functions execute on the server thread
+
+void
+CrashGenerationServer::Run()
+{
+  struct pollfd pollfds[2];
+  memset(&pollfds, 0, sizeof(pollfds));
+
+  pollfds[0].fd = server_fd_;
+  pollfds[0].events = POLLIN;
+
+  pollfds[1].fd = control_pipe_in_;
+  pollfds[1].events = POLLIN;
+
+  while (true) {
+    // infinite timeout
+    int nevents = poll(pollfds, sizeof(pollfds)/sizeof(pollfds[0]), -1);
+    if (-1 == nevents) {
+      if (EINTR == errno) {
+        continue;
+      } else {
+        return;
+      }
+    }
+
+    if (pollfds[0].revents && !ClientEvent(pollfds[0].revents))
+      return;
+
+    if (pollfds[1].revents && !ControlEvent(pollfds[1].revents))
+      return;
+  }
+}
+
+bool
+CrashGenerationServer::ClientEvent(short revents)
+{
+  if (POLLHUP & revents)
+    return false;
+  assert(POLLIN & revents);
+
+  // A process has crashed and has signaled us by writing a datagram
+  // to the death signal socket. The datagram contains the crash context needed
+  // for writing the minidump as well as a file descriptor and a credentials
+  // block so that they can't lie about their pid.
+
+  // The length of the control message:
+  static const unsigned kControlMsgSize =
+      CMSG_SPACE(sizeof(int)) + CMSG_SPACE(sizeof(struct ucred));
+  // The length of the regular payload:
+  static const unsigned kCrashContextSize =
+      sizeof(google_breakpad::ExceptionHandler::CrashContext);
+
+  struct msghdr msg = {0};
+  struct iovec iov[1];
+  char crash_context[kCrashContextSize];
+  char control[kControlMsgSize];
+  const ssize_t expected_msg_size = sizeof(crash_context);
+
+  iov[0].iov_base = crash_context;
+  iov[0].iov_len = sizeof(crash_context);
+  msg.msg_iov = iov;
+  msg.msg_iovlen = sizeof(iov)/sizeof(iov[0]);
+  msg.msg_control = control;
+  msg.msg_controllen = kControlMsgSize;
+
+  const ssize_t msg_size = HANDLE_EINTR(recvmsg(server_fd_, &msg, 0));
+  if (msg_size != expected_msg_size)
+    return true;
+
+  if (msg.msg_controllen != kControlMsgSize ||
+      msg.msg_flags & ~MSG_TRUNC)
+    return true;
+
+  // Walk the control payload and extract the file descriptor and validated pid.
+  pid_t crashing_pid = -1;
+  int signal_fd = -1;
+  for (struct cmsghdr *hdr = CMSG_FIRSTHDR(&msg); hdr;
+       hdr = CMSG_NXTHDR(&msg, hdr)) {
+    if (hdr->cmsg_level != SOL_SOCKET)
+      continue;
+    if (hdr->cmsg_type == SCM_RIGHTS) {
+      const unsigned len = hdr->cmsg_len -
+          (((uint8_t*)CMSG_DATA(hdr)) - (uint8_t*)hdr);
+      assert(len % sizeof(int) == 0u);
+      const unsigned num_fds = len / sizeof(int);
+      if (num_fds > 1 || num_fds == 0) {
+        // A nasty process could try and send us too many descriptors and
+        // force a leak.
+        for (unsigned i = 0; i < num_fds; ++i)
+          close(reinterpret_cast<int*>(CMSG_DATA(hdr))[i]);
+        return true;
+      } else {
+        signal_fd = reinterpret_cast<int*>(CMSG_DATA(hdr))[0];
+      }
+    } else if (hdr->cmsg_type == SCM_CREDENTIALS) {
+      const struct ucred *cred =
+          reinterpret_cast<struct ucred*>(CMSG_DATA(hdr));
+      crashing_pid = cred->pid;
+    }
+  }
+
+  if (crashing_pid == -1 || signal_fd == -1) {
+    if (signal_fd)
+      close(signal_fd);
+    return true;
+  }
+
+  string minidump_filename;
+  if (!MakeMinidumpFilename(minidump_filename))
+    return true;
+
+  if (!google_breakpad::WriteMinidump(minidump_filename.c_str(),
+                                      crashing_pid, crash_context,
+                                      kCrashContextSize)) {
+    close(signal_fd);
+    return true;
+  }
+
+  if (dump_callback_) {
+    ClientInfo info(crashing_pid, this);
+
+    dump_callback_(dump_context_, &info, &minidump_filename);
+  }
+
+  // Send the done signal to the process: it can exit now.
+  // (Closing this will make the child's sys_read unblock and return 0.)
+  close(signal_fd);
+
+  return true;
+}
+
+bool
+CrashGenerationServer::ControlEvent(short revents)
+{
+  if (POLLHUP & revents)
+    return false;
+  assert(POLLIN & revents);
+
+  char command;
+  if (read(control_pipe_in_, &command, 1))
+    return false;
+
+  switch (command) {
+  case kCommandQuit:
+    return false;
+  default:
+    assert(0);
+  }
+
+  return true;
+}
+
+bool
+CrashGenerationServer::MakeMinidumpFilename(string& outFilename)
+{
+  GUID guid;
+  char guidString[kGUIDStringLength+1];
+
+  if (!(CreateGUID(&guid)
+        && GUIDToString(&guid, guidString, sizeof(guidString))))
+    return false;
+
+  char path[PATH_MAX];
+  snprintf(path, sizeof(path), "%s/%s.dmp", dump_dir_.c_str(), guidString);
+
+  outFilename = path;
+  return true;
+}
+
+// static
+void*
+CrashGenerationServer::ThreadMain(void *arg)
+{
+  reinterpret_cast<CrashGenerationServer*>(arg)->Run();
+  return NULL;
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/client/linux/crash_generation/crash_generation_server.h b/google-breakpad/src/client/linux/crash_generation/crash_generation_server.h
new file mode 100644
index 0000000..483fb70
--- /dev/null
+++ b/google-breakpad/src/client/linux/crash_generation/crash_generation_server.h
@@ -0,0 +1,135 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef CLIENT_LINUX_CRASH_GENERATION_CRASH_GENERATION_SERVER_H_
+#define CLIENT_LINUX_CRASH_GENERATION_CRASH_GENERATION_SERVER_H_
+
+#include <pthread.h>
+
+#include <string>
+
+#include "common/using_std_string.h"
+
+namespace google_breakpad {
+
+class ClientInfo;
+
+class CrashGenerationServer {
+public:
+  // WARNING: callbacks may be invoked on a different thread
+  // than that which creates the CrashGenerationServer.  They must
+  // be thread safe.
+  typedef void (*OnClientDumpRequestCallback)(void* context,
+                                              const ClientInfo* client_info,
+                                              const string* file_path);
+
+  typedef void (*OnClientExitingCallback)(void* context,
+                                          const ClientInfo* client_info);
+
+  // Create an instance with the given parameters.
+  //
+  // Parameter listen_fd: The server fd created by CreateReportChannel().
+  // Parameter dump_callback: Callback for a client crash dump request.
+  // Parameter dump_context: Context for client crash dump request callback.
+  // Parameter exit_callback: Callback for client process exit.
+  // Parameter exit_context: Context for client exit callback.
+  // Parameter generate_dumps: Whether to automatically generate dumps.
+  //     Client code of this class might want to generate dumps explicitly
+  //     in the crash dump request callback. In that case, false can be
+  //     passed for this parameter.
+  // Parameter dump_path: Path for generating dumps; required only if true is
+  //     passed for generateDumps parameter; NULL can be passed otherwise.
+  CrashGenerationServer(const int listen_fd,
+                        OnClientDumpRequestCallback dump_callback,
+                        void* dump_context,
+                        OnClientExitingCallback exit_callback,
+                        void* exit_context,
+                        bool generate_dumps,
+                        const string* dump_path);
+
+  ~CrashGenerationServer();
+
+  // Perform initialization steps needed to start listening to clients.
+  //
+  // Return true if initialization is successful; false otherwise.
+  bool Start();
+
+  // Stop the server.
+  void Stop();
+
+  // Create a "channel" that can be used by clients to report crashes
+  // to a CrashGenerationServer.  |*server_fd| should be passed to
+  // this class's constructor, and |*client_fd| should be passed to
+  // the ExceptionHandler constructor in the client process.
+  static bool CreateReportChannel(int* server_fd, int* client_fd);
+
+private:
+  // Run the server's event loop
+  void Run();
+
+  // Invoked when an child process (client) event occurs
+  // Returning true => "keep running", false => "exit loop"
+  bool ClientEvent(short revents);
+
+  // Invoked when the controlling thread (main) event occurs
+  // Returning true => "keep running", false => "exit loop"
+  bool ControlEvent(short revents);
+
+  // Return a unique filename at which a minidump can be written
+  bool MakeMinidumpFilename(string& outFilename);
+
+  // Trampoline to |Run()|
+  static void* ThreadMain(void* arg);
+
+  int server_fd_;
+
+  OnClientDumpRequestCallback dump_callback_;
+  void* dump_context_;
+
+  OnClientExitingCallback exit_callback_;
+  void* exit_context_;
+
+  bool generate_dumps_;
+
+  string dump_dir_;
+
+  bool started_;
+
+  pthread_t thread_;
+  int control_pipe_in_;
+  int control_pipe_out_;
+
+  // disable these
+  CrashGenerationServer(const CrashGenerationServer&);
+  CrashGenerationServer& operator=(const CrashGenerationServer&);
+};
+
+} // namespace google_breakpad
+
+#endif // CLIENT_LINUX_CRASH_GENERATION_CRASH_GENERATION_SERVER_H_
diff --git a/google-breakpad/src/client/linux/data/linux-gate-amd.sym b/google-breakpad/src/client/linux/data/linux-gate-amd.sym
new file mode 100644
index 0000000..e042a5e
--- /dev/null
+++ b/google-breakpad/src/client/linux/data/linux-gate-amd.sym
@@ -0,0 +1,3 @@
+MODULE Linux x86 B8CFDE93002D54DA1900A40AA1BD67690 linux-gate.so
+PUBLIC 400 0 __kernel_vsyscall
+STACK WIN 4 400 100 1 1 0 0 0 0 0 1
diff --git a/google-breakpad/src/client/linux/data/linux-gate-intel.sym b/google-breakpad/src/client/linux/data/linux-gate-intel.sym
new file mode 100644
index 0000000..c209c23
--- /dev/null
+++ b/google-breakpad/src/client/linux/data/linux-gate-intel.sym
@@ -0,0 +1,3 @@
+MODULE Linux x86 4FBDA58B5A1DF5A379E3CF19A235EA090 linux-gate.so
+PUBLIC 400 0 __kernel_vsyscall
+STACK WIN 4 400 200 3 3 0 0 0 0 0 1
\ No newline at end of file
diff --git a/google-breakpad/src/client/linux/dump_writer_common/mapping_info.h b/google-breakpad/src/client/linux/dump_writer_common/mapping_info.h
new file mode 100644
index 0000000..5f247cf
--- /dev/null
+++ b/google-breakpad/src/client/linux/dump_writer_common/mapping_info.h
@@ -0,0 +1,61 @@
+// Copyright (c) 2014, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef CLIENT_LINUX_DUMP_WRITER_COMMON_MAPPING_INFO_H_
+#define CLIENT_LINUX_DUMP_WRITER_COMMON_MAPPING_INFO_H_
+
+#include <limits.h>
+#include <list>
+#include <stdint.h>
+
+#include "google_breakpad/common/minidump_format.h"
+
+namespace google_breakpad {
+
+// One of these is produced for each mapping in the process (i.e. line in
+// /proc/$x/maps).
+struct MappingInfo {
+  uintptr_t start_addr;
+  size_t size;
+  size_t offset;  // offset into the backed file.
+  bool exec;  // true if the mapping has the execute bit set.
+  char name[NAME_MAX];
+};
+
+struct MappingEntry {
+  MappingInfo first;
+  uint8_t second[sizeof(MDGUID)];
+};
+
+// A list of <MappingInfo, GUID>
+typedef std::list<MappingEntry> MappingList;
+
+}  // namespace google_breakpad
+
+#endif  // CLIENT_LINUX_DUMP_WRITER_COMMON_MAPPING_INFO_H_
diff --git a/google-breakpad/src/client/linux/dump_writer_common/raw_context_cpu.h b/google-breakpad/src/client/linux/dump_writer_common/raw_context_cpu.h
new file mode 100644
index 0000000..e2ef45d
--- /dev/null
+++ b/google-breakpad/src/client/linux/dump_writer_common/raw_context_cpu.h
@@ -0,0 +1,53 @@
+// Copyright (c) 2014, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef CLIENT_LINUX_DUMP_WRITER_COMMON_RAW_CONTEXT_CPU_H
+#define CLIENT_LINUX_DUMP_WRITER_COMMON_RAW_CONTEXT_CPU_H
+
+#include "google_breakpad/common/minidump_format.h"
+
+namespace google_breakpad {
+
+#if defined(__i386__)
+typedef MDRawContextX86 RawContextCPU;
+#elif defined(__x86_64)
+typedef MDRawContextAMD64 RawContextCPU;
+#elif defined(__ARM_EABI__)
+typedef MDRawContextARM RawContextCPU;
+#elif defined(__aarch64__)
+typedef MDRawContextARM64 RawContextCPU;
+#elif defined(__mips__)
+typedef MDRawContextMIPS RawContextCPU;
+#else
+#error "This code has not been ported to your platform yet."
+#endif
+
+}  // namespace google_breakpad
+
+#endif  // CLIENT_LINUX_DUMP_WRITER_COMMON_RAW_CONTEXT_CPU_H
diff --git a/google-breakpad/src/client/linux/dump_writer_common/seccomp_unwinder.cc b/google-breakpad/src/client/linux/dump_writer_common/seccomp_unwinder.cc
new file mode 100644
index 0000000..e9d1ec7
--- /dev/null
+++ b/google-breakpad/src/client/linux/dump_writer_common/seccomp_unwinder.cc
@@ -0,0 +1,154 @@
+// Copyright (c) 2014, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include "client/linux/dump_writer_common/seccomp_unwinder.h"
+
+#include <string.h>
+
+#include "google_breakpad/common/minidump_format.h"
+#include "common/linux/linux_libc_support.h"
+
+namespace google_breakpad {
+
+void SeccompUnwinder::PopSeccompStackFrame(RawContextCPU* cpu,
+                                           const MDRawThread& thread,
+                                           uint8_t* stack_copy) {
+#if defined(__x86_64)
+  uint64_t bp = cpu->rbp;
+  uint64_t top = thread.stack.start_of_memory_range;
+  for (int i = 4; i--; ) {
+    if (bp < top ||
+        bp > thread.stack.start_of_memory_range +
+        thread.stack.memory.data_size - sizeof(bp) ||
+        bp & 1) {
+      break;
+    }
+    uint64_t old_top = top;
+    top = bp;
+    uint8_t* bp_addr = stack_copy + bp - thread.stack.start_of_memory_range;
+    my_memcpy(&bp, bp_addr, sizeof(bp));
+    if (bp == 0xDEADBEEFDEADBEEFull) {
+      struct {
+        uint64_t r15;
+        uint64_t r14;
+        uint64_t r13;
+        uint64_t r12;
+        uint64_t r11;
+        uint64_t r10;
+        uint64_t r9;
+        uint64_t r8;
+        uint64_t rdi;
+        uint64_t rsi;
+        uint64_t rdx;
+        uint64_t rcx;
+        uint64_t rbx;
+        uint64_t deadbeef;
+        uint64_t rbp;
+        uint64_t fakeret;
+        uint64_t ret;
+        /* char redzone[128]; */
+      } seccomp_stackframe;
+      if (top - offsetof(__typeof__(seccomp_stackframe), deadbeef) < old_top ||
+          top - offsetof(__typeof__(seccomp_stackframe), deadbeef) +
+          sizeof(seccomp_stackframe) >
+          thread.stack.start_of_memory_range+thread.stack.memory.data_size) {
+        break;
+      }
+      my_memcpy(&seccomp_stackframe,
+                bp_addr - offsetof(__typeof__(seccomp_stackframe), deadbeef),
+                sizeof(seccomp_stackframe));
+      cpu->rbx = seccomp_stackframe.rbx;
+      cpu->rcx = seccomp_stackframe.rcx;
+      cpu->rdx = seccomp_stackframe.rdx;
+      cpu->rsi = seccomp_stackframe.rsi;
+      cpu->rdi = seccomp_stackframe.rdi;
+      cpu->rbp = seccomp_stackframe.rbp;
+      cpu->rsp = top + 4*sizeof(uint64_t) + 128;
+      cpu->r8  = seccomp_stackframe.r8;
+      cpu->r9  = seccomp_stackframe.r9;
+      cpu->r10 = seccomp_stackframe.r10;
+      cpu->r11 = seccomp_stackframe.r11;
+      cpu->r12 = seccomp_stackframe.r12;
+      cpu->r13 = seccomp_stackframe.r13;
+      cpu->r14 = seccomp_stackframe.r14;
+      cpu->r15 = seccomp_stackframe.r15;
+      cpu->rip = seccomp_stackframe.fakeret;
+      return;
+    }
+  }
+#elif defined(__i386__)
+  uint32_t bp = cpu->ebp;
+  uint32_t top = thread.stack.start_of_memory_range;
+  for (int i = 4; i--; ) {
+    if (bp < top ||
+        bp > thread.stack.start_of_memory_range +
+        thread.stack.memory.data_size - sizeof(bp) ||
+        bp & 1) {
+      break;
+    }
+    uint32_t old_top = top;
+    top = bp;
+    uint8_t* bp_addr = stack_copy + bp - thread.stack.start_of_memory_range;
+    my_memcpy(&bp, bp_addr, sizeof(bp));
+    if (bp == 0xDEADBEEFu) {
+      struct {
+        uint32_t edi;
+        uint32_t esi;
+        uint32_t edx;
+        uint32_t ecx;
+        uint32_t ebx;
+        uint32_t deadbeef;
+        uint32_t ebp;
+        uint32_t fakeret;
+        uint32_t ret;
+      } seccomp_stackframe;
+      if (top - offsetof(__typeof__(seccomp_stackframe), deadbeef) < old_top ||
+          top - offsetof(__typeof__(seccomp_stackframe), deadbeef) +
+          sizeof(seccomp_stackframe) >
+          thread.stack.start_of_memory_range+thread.stack.memory.data_size) {
+        break;
+      }
+      my_memcpy(&seccomp_stackframe,
+                bp_addr - offsetof(__typeof__(seccomp_stackframe), deadbeef),
+                sizeof(seccomp_stackframe));
+      cpu->ebx = seccomp_stackframe.ebx;
+      cpu->ecx = seccomp_stackframe.ecx;
+      cpu->edx = seccomp_stackframe.edx;
+      cpu->esi = seccomp_stackframe.esi;
+      cpu->edi = seccomp_stackframe.edi;
+      cpu->ebp = seccomp_stackframe.ebp;
+      cpu->esp = top + 4*sizeof(void*);
+      cpu->eip = seccomp_stackframe.fakeret;
+      return;
+    }
+  }
+#endif
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/client/linux/dump_writer_common/seccomp_unwinder.h b/google-breakpad/src/client/linux/dump_writer_common/seccomp_unwinder.h
new file mode 100644
index 0000000..0f5637b
--- /dev/null
+++ b/google-breakpad/src/client/linux/dump_writer_common/seccomp_unwinder.h
@@ -0,0 +1,50 @@
+// Copyright (c) 2014, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef CLIENT_LINUX_DUMP_WRITER_COMMON_SECCOMP_UNWINDER_H
+#define CLIENT_LINUX_DUMP_WRITER_COMMON_SECCOMP_UNWINDER_H
+
+#include "client/linux/dump_writer_common/raw_context_cpu.h"
+#include "google_breakpad/common/minidump_format.h"
+
+namespace google_breakpad {
+
+struct SeccompUnwinder {
+
+  // Check if the top of the stack is part of a system call that has been
+  // redirected by the seccomp sandbox. If so, try to pop the stack frames
+  // all the way back to the point where the interception happened.
+  static void PopSeccompStackFrame(RawContextCPU* cpu,
+                                   const MDRawThread& thread,
+                                   uint8_t* stack_copy);
+};
+
+}  // namespace google_breakpad
+
+#endif  // CLIENT_LINUX_DUMP_WRITER_COMMON_SECCOMP_UNWINDER_H
diff --git a/google-breakpad/src/client/linux/dump_writer_common/thread_info.cc b/google-breakpad/src/client/linux/dump_writer_common/thread_info.cc
new file mode 100644
index 0000000..a3072b6
--- /dev/null
+++ b/google-breakpad/src/client/linux/dump_writer_common/thread_info.cc
@@ -0,0 +1,266 @@
+// Copyright (c) 2014, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include "client/linux/dump_writer_common/thread_info.h"
+
+#include <string.h>
+
+#include "common/linux/linux_libc_support.h"
+#include "google_breakpad/common/minidump_format.h"
+
+namespace {
+
+#if defined(__i386__)
+// Write a uint16_t to memory
+//   out: memory location to write to
+//   v: value to write.
+void U16(void* out, uint16_t v) {
+  my_memcpy(out, &v, sizeof(v));
+}
+
+// Write a uint32_t to memory
+//   out: memory location to write to
+//   v: value to write.
+void U32(void* out, uint32_t v) {
+  my_memcpy(out, &v, sizeof(v));
+}
+#endif
+
+}
+
+namespace google_breakpad {
+
+#if defined(__i386__)
+
+uintptr_t ThreadInfo::GetInstructionPointer() const {
+  return regs.eip;
+}
+
+void ThreadInfo::FillCPUContext(RawContextCPU* out) const {
+  out->context_flags = MD_CONTEXT_X86_ALL;
+
+  out->dr0 = dregs[0];
+  out->dr1 = dregs[1];
+  out->dr2 = dregs[2];
+  out->dr3 = dregs[3];
+  // 4 and 5 deliberatly omitted because they aren't included in the minidump
+  // format.
+  out->dr6 = dregs[6];
+  out->dr7 = dregs[7];
+
+  out->gs = regs.xgs;
+  out->fs = regs.xfs;
+  out->es = regs.xes;
+  out->ds = regs.xds;
+
+  out->edi = regs.edi;
+  out->esi = regs.esi;
+  out->ebx = regs.ebx;
+  out->edx = regs.edx;
+  out->ecx = regs.ecx;
+  out->eax = regs.eax;
+
+  out->ebp = regs.ebp;
+  out->eip = regs.eip;
+  out->cs = regs.xcs;
+  out->eflags = regs.eflags;
+  out->esp = regs.esp;
+  out->ss = regs.xss;
+
+  out->float_save.control_word = fpregs.cwd;
+  out->float_save.status_word = fpregs.swd;
+  out->float_save.tag_word = fpregs.twd;
+  out->float_save.error_offset = fpregs.fip;
+  out->float_save.error_selector = fpregs.fcs;
+  out->float_save.data_offset = fpregs.foo;
+  out->float_save.data_selector = fpregs.fos;
+
+  // 8 registers * 10 bytes per register.
+  my_memcpy(out->float_save.register_area, fpregs.st_space, 10 * 8);
+
+  // This matches the Intel fpsave format.
+  U16(out->extended_registers + 0, fpregs.cwd);
+  U16(out->extended_registers + 2, fpregs.swd);
+  U16(out->extended_registers + 4, fpregs.twd);
+  U16(out->extended_registers + 6, fpxregs.fop);
+  U32(out->extended_registers + 8, fpxregs.fip);
+  U16(out->extended_registers + 12, fpxregs.fcs);
+  U32(out->extended_registers + 16, fpregs.foo);
+  U16(out->extended_registers + 20, fpregs.fos);
+  U32(out->extended_registers + 24, fpxregs.mxcsr);
+
+  my_memcpy(out->extended_registers + 32, &fpxregs.st_space, 128);
+  my_memcpy(out->extended_registers + 160, &fpxregs.xmm_space, 128);
+}
+
+#elif defined(__x86_64)
+
+uintptr_t ThreadInfo::GetInstructionPointer() const {
+  return regs.rip;
+}
+
+void ThreadInfo::FillCPUContext(RawContextCPU* out) const {
+  out->context_flags = MD_CONTEXT_AMD64_FULL |
+                       MD_CONTEXT_AMD64_SEGMENTS;
+
+  out->cs = regs.cs;
+
+  out->ds = regs.ds;
+  out->es = regs.es;
+  out->fs = regs.fs;
+  out->gs = regs.gs;
+
+  out->ss = regs.ss;
+  out->eflags = regs.eflags;
+
+  out->dr0 = dregs[0];
+  out->dr1 = dregs[1];
+  out->dr2 = dregs[2];
+  out->dr3 = dregs[3];
+  // 4 and 5 deliberatly omitted because they aren't included in the minidump
+  // format.
+  out->dr6 = dregs[6];
+  out->dr7 = dregs[7];
+
+  out->rax = regs.rax;
+  out->rcx = regs.rcx;
+  out->rdx = regs.rdx;
+  out->rbx = regs.rbx;
+
+  out->rsp = regs.rsp;
+
+  out->rbp = regs.rbp;
+  out->rsi = regs.rsi;
+  out->rdi = regs.rdi;
+  out->r8 = regs.r8;
+  out->r9 = regs.r9;
+  out->r10 = regs.r10;
+  out->r11 = regs.r11;
+  out->r12 = regs.r12;
+  out->r13 = regs.r13;
+  out->r14 = regs.r14;
+  out->r15 = regs.r15;
+
+  out->rip = regs.rip;
+
+  out->flt_save.control_word = fpregs.cwd;
+  out->flt_save.status_word = fpregs.swd;
+  out->flt_save.tag_word = fpregs.ftw;
+  out->flt_save.error_opcode = fpregs.fop;
+  out->flt_save.error_offset = fpregs.rip;
+  out->flt_save.error_selector = 0;  // We don't have this.
+  out->flt_save.data_offset = fpregs.rdp;
+  out->flt_save.data_selector = 0;   // We don't have this.
+  out->flt_save.mx_csr = fpregs.mxcsr;
+  out->flt_save.mx_csr_mask = fpregs.mxcr_mask;
+
+  my_memcpy(&out->flt_save.float_registers, &fpregs.st_space, 8 * 16);
+  my_memcpy(&out->flt_save.xmm_registers, &fpregs.xmm_space, 16 * 16);
+}
+
+#elif defined(__ARM_EABI__)
+
+uintptr_t ThreadInfo::GetInstructionPointer() const {
+  return regs.uregs[15];
+}
+
+void ThreadInfo::FillCPUContext(RawContextCPU* out) const {
+  out->context_flags = MD_CONTEXT_ARM_FULL;
+
+  for (int i = 0; i < MD_CONTEXT_ARM_GPR_COUNT; ++i)
+    out->iregs[i] = regs.uregs[i];
+  // No CPSR register in ThreadInfo(it's not accessible via ptrace)
+  out->cpsr = 0;
+#if !defined(__ANDROID__)
+  out->float_save.fpscr = fpregs.fpsr |
+    (static_cast<uint64_t>(fpregs.fpcr) << 32);
+  // TODO: sort this out, actually collect floating point registers
+  my_memset(&out->float_save.regs, 0, sizeof(out->float_save.regs));
+  my_memset(&out->float_save.extra, 0, sizeof(out->float_save.extra));
+#endif
+}
+
+#elif defined(__aarch64__)
+
+uintptr_t ThreadInfo::GetInstructionPointer() const {
+  return regs.pc;
+}
+
+void ThreadInfo::FillCPUContext(RawContextCPU* out) const {
+  out->context_flags = MD_CONTEXT_ARM64_FULL;
+
+  out->cpsr = static_cast<uint32_t>(regs.pstate);
+  for (int i = 0; i < MD_CONTEXT_ARM64_REG_SP; ++i)
+    out->iregs[i] = regs.regs[i];
+  out->iregs[MD_CONTEXT_ARM64_REG_SP] = regs.sp;
+  out->iregs[MD_CONTEXT_ARM64_REG_PC] = regs.pc;
+
+  out->float_save.fpsr = fpregs.fpsr;
+  out->float_save.fpcr = fpregs.fpcr;
+  my_memcpy(&out->float_save.regs, &fpregs.vregs,
+      MD_FLOATINGSAVEAREA_ARM64_FPR_COUNT * 16);
+}
+
+#elif defined(__mips__)
+
+uintptr_t ThreadInfo::GetInstructionPointer() const {
+  return regs.epc;
+}
+
+void ThreadInfo::FillCPUContext(RawContextCPU* out) const {
+  out->context_flags = MD_CONTEXT_MIPS_FULL;
+
+  for (int i = 0; i < MD_CONTEXT_MIPS_GPR_COUNT; ++i)
+    out->iregs[i] = regs.regs[i];
+
+  out->mdhi = regs.hi;
+  out->mdlo = regs.lo;
+
+  for (int i = 0; i < MD_CONTEXT_MIPS_DSP_COUNT; ++i) {
+    out->hi[i] = hi[i];
+    out->lo[i] = lo[i];
+  }
+  out->dsp_control = dsp_control;
+
+  out->epc = regs.epc;
+  out->badvaddr = regs.badvaddr;
+  out->status = regs.status;
+  out->cause = regs.cause;
+
+  for (int i = 0; i < MD_FLOATINGSAVEAREA_MIPS_FPR_COUNT; ++i)
+    out->float_save.regs[i] = fpregs.regs[i];
+
+  out->float_save.fpcsr = fpregs.fpcsr;
+#if _MIPS_SIM == _ABIO32
+  out->float_save.fir = fpregs.fir;
+#endif
+}
+#endif
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/client/linux/dump_writer_common/thread_info.h b/google-breakpad/src/client/linux/dump_writer_common/thread_info.h
new file mode 100644
index 0000000..cf6d010
--- /dev/null
+++ b/google-breakpad/src/client/linux/dump_writer_common/thread_info.h
@@ -0,0 +1,88 @@
+// Copyright (c) 2014, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef CLIENT_LINUX_DUMP_WRITER_COMMON_THREAD_INFO_H_
+#define CLIENT_LINUX_DUMP_WRITER_COMMON_THREAD_INFO_H_
+
+#include <sys/ucontext.h>
+#include <sys/user.h>
+
+#include "client/linux/dump_writer_common/raw_context_cpu.h"
+#include "common/memory.h"
+#include "google_breakpad/common/minidump_format.h"
+
+namespace google_breakpad {
+
+#if defined(__i386) || defined(__x86_64)
+typedef __typeof__(((struct user*) 0)->u_debugreg[0]) debugreg_t;
+#endif
+
+// We produce one of these structures for each thread in the crashed process.
+struct ThreadInfo {
+  pid_t tgid;   // thread group id
+  pid_t ppid;   // parent process
+
+  uintptr_t stack_pointer;  // thread stack pointer
+
+
+#if defined(__i386) || defined(__x86_64)
+  user_regs_struct regs;
+  user_fpregs_struct fpregs;
+  static const unsigned kNumDebugRegisters = 8;
+  debugreg_t dregs[8];
+#if defined(__i386)
+  user_fpxregs_struct fpxregs;
+#endif  // defined(__i386)
+
+#elif defined(__ARM_EABI__)
+  // Mimicking how strace does this(see syscall.c, search for GETREGS)
+  struct user_regs regs;
+  struct user_fpregs fpregs;
+#elif defined(__aarch64__)
+  // Use the structures defined in <asm/ptrace.h>
+  struct user_pt_regs regs;
+  struct user_fpsimd_state fpregs;
+#elif defined(__mips__)
+  user_regs_struct regs;
+  user_fpregs_struct fpregs;
+  uint32_t hi[3];
+  uint32_t lo[3];
+  uint32_t dsp_control;
+#endif
+
+  // Returns the instruction pointer (platform-dependent impl.).
+  uintptr_t GetInstructionPointer() const;
+
+  // Fills a RawContextCPU using the context in the ThreadInfo object.
+  void FillCPUContext(RawContextCPU* out) const;
+};
+
+}  // namespace google_breakpad
+
+#endif  // CLIENT_LINUX_DUMP_WRITER_COMMON_THREAD_INFO_H_
diff --git a/google-breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc b/google-breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc
new file mode 100644
index 0000000..d37fdeb
--- /dev/null
+++ b/google-breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc
@@ -0,0 +1,253 @@
+// Copyright (c) 2014, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include "client/linux/dump_writer_common/ucontext_reader.h"
+
+#include "common/linux/linux_libc_support.h"
+#include "google_breakpad/common/minidump_format.h"
+
+namespace google_breakpad {
+
+// Minidump defines register structures which are different from the raw
+// structures which we get from the kernel. These are platform specific
+// functions to juggle the ucontext and user structures into minidump format.
+
+#if defined(__i386__)
+
+uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) {
+  return uc->uc_mcontext.gregs[REG_ESP];
+}
+
+uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) {
+  return uc->uc_mcontext.gregs[REG_EIP];
+}
+
+void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc,
+                                    const struct _libc_fpstate* fp) {
+  const greg_t* regs = uc->uc_mcontext.gregs;
+
+  out->context_flags = MD_CONTEXT_X86_FULL |
+                       MD_CONTEXT_X86_FLOATING_POINT;
+
+  out->gs = regs[REG_GS];
+  out->fs = regs[REG_FS];
+  out->es = regs[REG_ES];
+  out->ds = regs[REG_DS];
+
+  out->edi = regs[REG_EDI];
+  out->esi = regs[REG_ESI];
+  out->ebx = regs[REG_EBX];
+  out->edx = regs[REG_EDX];
+  out->ecx = regs[REG_ECX];
+  out->eax = regs[REG_EAX];
+
+  out->ebp = regs[REG_EBP];
+  out->eip = regs[REG_EIP];
+  out->cs = regs[REG_CS];
+  out->eflags = regs[REG_EFL];
+  out->esp = regs[REG_UESP];
+  out->ss = regs[REG_SS];
+
+  out->float_save.control_word = fp->cw;
+  out->float_save.status_word = fp->sw;
+  out->float_save.tag_word = fp->tag;
+  out->float_save.error_offset = fp->ipoff;
+  out->float_save.error_selector = fp->cssel;
+  out->float_save.data_offset = fp->dataoff;
+  out->float_save.data_selector = fp->datasel;
+
+  // 8 registers * 10 bytes per register.
+  my_memcpy(out->float_save.register_area, fp->_st, 10 * 8);
+}
+
+#elif defined(__x86_64)
+
+uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) {
+  return uc->uc_mcontext.gregs[REG_RSP];
+}
+
+uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) {
+  return uc->uc_mcontext.gregs[REG_RIP];
+}
+
+void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc,
+                                    const struct _libc_fpstate* fpregs) {
+  const greg_t* regs = uc->uc_mcontext.gregs;
+
+  out->context_flags = MD_CONTEXT_AMD64_FULL;
+
+  out->cs = regs[REG_CSGSFS] & 0xffff;
+
+  out->fs = (regs[REG_CSGSFS] >> 32) & 0xffff;
+  out->gs = (regs[REG_CSGSFS] >> 16) & 0xffff;
+
+  out->eflags = regs[REG_EFL];
+
+  out->rax = regs[REG_RAX];
+  out->rcx = regs[REG_RCX];
+  out->rdx = regs[REG_RDX];
+  out->rbx = regs[REG_RBX];
+
+  out->rsp = regs[REG_RSP];
+  out->rbp = regs[REG_RBP];
+  out->rsi = regs[REG_RSI];
+  out->rdi = regs[REG_RDI];
+  out->r8 = regs[REG_R8];
+  out->r9 = regs[REG_R9];
+  out->r10 = regs[REG_R10];
+  out->r11 = regs[REG_R11];
+  out->r12 = regs[REG_R12];
+  out->r13 = regs[REG_R13];
+  out->r14 = regs[REG_R14];
+  out->r15 = regs[REG_R15];
+
+  out->rip = regs[REG_RIP];
+
+  out->flt_save.control_word = fpregs->cwd;
+  out->flt_save.status_word = fpregs->swd;
+  out->flt_save.tag_word = fpregs->ftw;
+  out->flt_save.error_opcode = fpregs->fop;
+  out->flt_save.error_offset = fpregs->rip;
+  out->flt_save.data_offset = fpregs->rdp;
+  out->flt_save.error_selector = 0;  // We don't have this.
+  out->flt_save.data_selector = 0;  // We don't have this.
+  out->flt_save.mx_csr = fpregs->mxcsr;
+  out->flt_save.mx_csr_mask = fpregs->mxcr_mask;
+  my_memcpy(&out->flt_save.float_registers, &fpregs->_st, 8 * 16);
+  my_memcpy(&out->flt_save.xmm_registers, &fpregs->_xmm, 16 * 16);
+}
+
+#elif defined(__ARM_EABI__)
+
+uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) {
+  return uc->uc_mcontext.arm_sp;
+}
+
+uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) {
+  return uc->uc_mcontext.arm_pc;
+}
+
+void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc) {
+  out->context_flags = MD_CONTEXT_ARM_FULL;
+
+  out->iregs[0] = uc->uc_mcontext.arm_r0;
+  out->iregs[1] = uc->uc_mcontext.arm_r1;
+  out->iregs[2] = uc->uc_mcontext.arm_r2;
+  out->iregs[3] = uc->uc_mcontext.arm_r3;
+  out->iregs[4] = uc->uc_mcontext.arm_r4;
+  out->iregs[5] = uc->uc_mcontext.arm_r5;
+  out->iregs[6] = uc->uc_mcontext.arm_r6;
+  out->iregs[7] = uc->uc_mcontext.arm_r7;
+  out->iregs[8] = uc->uc_mcontext.arm_r8;
+  out->iregs[9] = uc->uc_mcontext.arm_r9;
+  out->iregs[10] = uc->uc_mcontext.arm_r10;
+
+  out->iregs[11] = uc->uc_mcontext.arm_fp;
+  out->iregs[12] = uc->uc_mcontext.arm_ip;
+  out->iregs[13] = uc->uc_mcontext.arm_sp;
+  out->iregs[14] = uc->uc_mcontext.arm_lr;
+  out->iregs[15] = uc->uc_mcontext.arm_pc;
+
+  out->cpsr = uc->uc_mcontext.arm_cpsr;
+
+  // TODO: fix this after fixing ExceptionHandler
+  out->float_save.fpscr = 0;
+  my_memset(&out->float_save.regs, 0, sizeof(out->float_save.regs));
+  my_memset(&out->float_save.extra, 0, sizeof(out->float_save.extra));
+}
+
+#elif defined(__aarch64__)
+
+uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) {
+  return uc->uc_mcontext.sp;
+}
+
+uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) {
+  return uc->uc_mcontext.pc;
+}
+
+void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc,
+                                    const struct fpsimd_context* fpregs) {
+  out->context_flags = MD_CONTEXT_ARM64_FULL;
+
+  out->cpsr = static_cast<uint32_t>(uc->uc_mcontext.pstate);
+  for (int i = 0; i < MD_CONTEXT_ARM64_REG_SP; ++i)
+    out->iregs[i] = uc->uc_mcontext.regs[i];
+  out->iregs[MD_CONTEXT_ARM64_REG_SP] = uc->uc_mcontext.sp;
+  out->iregs[MD_CONTEXT_ARM64_REG_PC] = uc->uc_mcontext.pc;
+
+  out->float_save.fpsr = fpregs->fpsr;
+  out->float_save.fpcr = fpregs->fpcr;
+  my_memcpy(&out->float_save.regs, &fpregs->vregs,
+      MD_FLOATINGSAVEAREA_ARM64_FPR_COUNT * 16);
+}
+
+#elif defined(__mips__)
+
+uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) {
+  return uc->uc_mcontext.gregs[MD_CONTEXT_MIPS_REG_SP];
+}
+
+uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) {
+  return uc->uc_mcontext.pc;
+}
+
+void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc) {
+  out->context_flags = MD_CONTEXT_MIPS_FULL;
+
+  for (int i = 0; i < MD_CONTEXT_MIPS_GPR_COUNT; ++i)
+    out->iregs[i] = uc->uc_mcontext.gregs[i];
+
+  out->mdhi = uc->uc_mcontext.mdhi;
+  out->mdlo = uc->uc_mcontext.mdlo;
+
+  out->hi[0] = uc->uc_mcontext.hi1;
+  out->hi[1] = uc->uc_mcontext.hi2;
+  out->hi[2] = uc->uc_mcontext.hi3;
+  out->lo[0] = uc->uc_mcontext.lo1;
+  out->lo[1] = uc->uc_mcontext.lo2;
+  out->lo[2] = uc->uc_mcontext.lo3;
+  out->dsp_control = uc->uc_mcontext.dsp;
+
+  out->epc = uc->uc_mcontext.pc;
+  out->badvaddr = 0;  // Not reported in signal context.
+  out->status = 0;  // Not reported in signal context.
+  out->cause = 0;  // Not reported in signal context.
+
+  for (int i = 0; i < MD_FLOATINGSAVEAREA_MIPS_FPR_COUNT; ++i)
+    out->float_save.regs[i] = uc->uc_mcontext.fpregs.fp_r.fp_dregs[i];
+
+  out->float_save.fpcsr = uc->uc_mcontext.fpc_csr;
+#if _MIPS_SIM == _ABIO32
+  out->float_save.fir = uc->uc_mcontext.fpc_eir;  // Unused.
+#endif
+}
+#endif
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/client/linux/dump_writer_common/ucontext_reader.h b/google-breakpad/src/client/linux/dump_writer_common/ucontext_reader.h
new file mode 100644
index 0000000..b6e77b4
--- /dev/null
+++ b/google-breakpad/src/client/linux/dump_writer_common/ucontext_reader.h
@@ -0,0 +1,64 @@
+// Copyright (c) 2014, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef CLIENT_LINUX_DUMP_WRITER_COMMON_UCONTEXT_READER_H
+#define CLIENT_LINUX_DUMP_WRITER_COMMON_UCONTEXT_READER_H
+
+#include <sys/ucontext.h>
+#include <sys/user.h>
+
+#include "client/linux/dump_writer_common/raw_context_cpu.h"
+#include "common/memory.h"
+#include "google_breakpad/common/minidump_format.h"
+
+namespace google_breakpad {
+
+// Wraps platform-dependent implementations of accessors to ucontext structs.
+struct UContextReader {
+  static uintptr_t GetStackPointer(const struct ucontext* uc);
+
+  static uintptr_t GetInstructionPointer(const struct ucontext* uc);
+
+  // Juggle a arch-specific ucontext into a minidump format
+  //   out: the minidump structure
+  //   info: the collection of register structures.
+#if defined(__i386__) || defined(__x86_64)
+  static void FillCPUContext(RawContextCPU *out, const ucontext *uc,
+                             const struct _libc_fpstate* fp);
+#elif defined(__aarch64__)
+  static void FillCPUContext(RawContextCPU *out, const ucontext *uc,
+                             const struct fpsimd_context* fpregs);
+#else
+  static void FillCPUContext(RawContextCPU *out, const ucontext *uc);
+#endif
+};
+
+}  // namespace google_breakpad
+
+#endif  // CLIENT_LINUX_DUMP_WRITER_COMMON_UCONTEXT_READER_H
diff --git a/google-breakpad/src/client/linux/handler/exception_handler.cc b/google-breakpad/src/client/linux/handler/exception_handler.cc
new file mode 100644
index 0000000..3ddbe66
--- /dev/null
+++ b/google-breakpad/src/client/linux/handler/exception_handler.cc
@@ -0,0 +1,745 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// The ExceptionHandler object installs signal handlers for a number of
+// signals. We rely on the signal handler running on the thread which crashed
+// in order to identify it. This is true of the synchronous signals (SEGV etc),
+// but not true of ABRT. Thus, if you send ABRT to yourself in a program which
+// uses ExceptionHandler, you need to use tgkill to direct it to the current
+// thread.
+//
+// The signal flow looks like this:
+//
+//   SignalHandler (uses a global stack of ExceptionHandler objects to find
+//        |         one to handle the signal. If the first rejects it, try
+//        |         the second etc...)
+//        V
+//   HandleSignal ----------------------------| (clones a new process which
+//        |                                   |  shares an address space with
+//   (wait for cloned                         |  the crashed process. This
+//     process)                               |  allows us to ptrace the crashed
+//        |                                   |  process)
+//        V                                   V
+//   (set signal handler to             ThreadEntry (static function to bounce
+//    SIG_DFL and rethrow,                    |      back into the object)
+//    killing the crashed                     |
+//    process)                                V
+//                                          DoDump  (writes minidump)
+//                                            |
+//                                            V
+//                                         sys_exit
+//
+
+// This code is a little fragmented. Different functions of the ExceptionHandler
+// class run in a number of different contexts. Some of them run in a normal
+// context and are easy to code, others run in a compromised context and the
+// restrictions at the top of minidump_writer.cc apply: no libc and use the
+// alternative malloc. Each function should have comment above it detailing the
+// context which it runs in.
+
+#include "client/linux/handler/exception_handler.h"
+
+#include <errno.h>
+#include <fcntl.h>
+#include <linux/limits.h>
+#include <pthread.h>
+#include <sched.h>
+#include <signal.h>
+#include <stdio.h>
+#include <sys/mman.h>
+#include <sys/prctl.h>
+#include <sys/syscall.h>
+#include <sys/wait.h>
+#include <unistd.h>
+
+#include <sys/signal.h>
+#include <sys/ucontext.h>
+#include <sys/user.h>
+#include <ucontext.h>
+
+#include <algorithm>
+#include <utility>
+#include <vector>
+
+#include "common/basictypes.h"
+#include "common/linux/linux_libc_support.h"
+#include "common/memory.h"
+#include "client/linux/log/log.h"
+#include "client/linux/microdump_writer/microdump_writer.h"
+#include "client/linux/minidump_writer/linux_dumper.h"
+#include "client/linux/minidump_writer/minidump_writer.h"
+#include "common/linux/eintr_wrapper.h"
+#include "third_party/lss/linux_syscall_support.h"
+
+#if defined(__ANDROID__)
+#include "linux/sched.h"
+#endif
+
+#ifndef PR_SET_PTRACER
+#define PR_SET_PTRACER 0x59616d61
+#endif
+
+// A wrapper for the tgkill syscall: send a signal to a specific thread.
+static int tgkill(pid_t tgid, pid_t tid, int sig) {
+  return syscall(__NR_tgkill, tgid, tid, sig);
+  return 0;
+}
+
+namespace google_breakpad {
+
+namespace {
+// The list of signals which we consider to be crashes. The default action for
+// all these signals must be Core (see man 7 signal) because we rethrow the
+// signal after handling it and expect that it'll be fatal.
+const int kExceptionSignals[] = {
+  SIGSEGV, SIGABRT, SIGFPE, SIGILL, SIGBUS
+};
+const int kNumHandledSignals =
+    sizeof(kExceptionSignals) / sizeof(kExceptionSignals[0]);
+struct sigaction old_handlers[kNumHandledSignals];
+bool handlers_installed = false;
+
+// InstallAlternateStackLocked will store the newly installed stack in new_stack
+// and (if it exists) the previously installed stack in old_stack.
+stack_t old_stack;
+stack_t new_stack;
+bool stack_installed = false;
+
+// Create an alternative stack to run the signal handlers on. This is done since
+// the signal might have been caused by a stack overflow.
+// Runs before crashing: normal context.
+void InstallAlternateStackLocked() {
+  if (stack_installed)
+    return;
+
+  memset(&old_stack, 0, sizeof(old_stack));
+  memset(&new_stack, 0, sizeof(new_stack));
+
+  // SIGSTKSZ may be too small to prevent the signal handlers from overrunning
+  // the alternative stack. Ensure that the size of the alternative stack is
+  // large enough.
+  static const unsigned kSigStackSize = std::max(16384, SIGSTKSZ);
+
+  // Only set an alternative stack if there isn't already one, or if the current
+  // one is too small.
+  if (sys_sigaltstack(NULL, &old_stack) == -1 || !old_stack.ss_sp ||
+      old_stack.ss_size < kSigStackSize) {
+    new_stack.ss_sp = calloc(1, kSigStackSize);
+    new_stack.ss_size = kSigStackSize;
+
+    if (sys_sigaltstack(&new_stack, NULL) == -1) {
+      free(new_stack.ss_sp);
+      return;
+    }
+    stack_installed = true;
+  }
+}
+
+// Runs before crashing: normal context.
+void RestoreAlternateStackLocked() {
+  if (!stack_installed)
+    return;
+
+  stack_t current_stack;
+  if (sys_sigaltstack(NULL, &current_stack) == -1)
+    return;
+
+  // Only restore the old_stack if the current alternative stack is the one
+  // installed by the call to InstallAlternateStackLocked.
+  if (current_stack.ss_sp == new_stack.ss_sp) {
+    if (old_stack.ss_sp) {
+      if (sys_sigaltstack(&old_stack, NULL) == -1)
+        return;
+    } else {
+      stack_t disable_stack;
+      disable_stack.ss_flags = SS_DISABLE;
+      if (sys_sigaltstack(&disable_stack, NULL) == -1)
+        return;
+    }
+  }
+
+  free(new_stack.ss_sp);
+  stack_installed = false;
+}
+
+void InstallDefaultHandler(int sig) {
+#if defined(__ANDROID__)
+  // Android L+ expose signal and sigaction symbols that override the system
+  // ones. There is a bug in these functions where a request to set the handler
+  // to SIG_DFL is ignored. In that case, an infinite loop is entered as the
+  // signal is repeatedly sent to breakpad's signal handler.
+  // To work around this, directly call the system's sigaction.
+  struct sigaction sa;
+  memset(&sa, 0, sizeof(sa));
+  sigemptyset(&sa.sa_mask);
+  sa.sa_handler = SIG_DFL;
+  sa.sa_flags = SA_RESTART;
+  syscall(__NR_rt_sigaction, sig, &sa, NULL);
+#else
+  signal(sig, SIG_DFL);
+#endif
+}
+
+// The global exception handler stack. This is needed because there may exist
+// multiple ExceptionHandler instances in a process. Each will have itself
+// registered in this stack.
+std::vector<ExceptionHandler*>* g_handler_stack_ = NULL;
+pthread_mutex_t g_handler_stack_mutex_ = PTHREAD_MUTEX_INITIALIZER;
+
+}  // namespace
+
+// Runs before crashing: normal context.
+ExceptionHandler::ExceptionHandler(const MinidumpDescriptor& descriptor,
+                                   FilterCallback filter,
+                                   MinidumpCallback callback,
+                                   void* callback_context,
+                                   bool install_handler,
+                                   const int server_fd)
+    : filter_(filter),
+      callback_(callback),
+      callback_context_(callback_context),
+      minidump_descriptor_(descriptor),
+      crash_handler_(NULL) {
+  if (server_fd >= 0)
+    crash_generation_client_.reset(CrashGenerationClient::TryCreate(server_fd));
+
+  if (!IsOutOfProcess() && !minidump_descriptor_.IsFD() &&
+      !minidump_descriptor_.IsMicrodumpOnConsole())
+    minidump_descriptor_.UpdatePath();
+
+  pthread_mutex_lock(&g_handler_stack_mutex_);
+  if (!g_handler_stack_)
+    g_handler_stack_ = new std::vector<ExceptionHandler*>;
+  if (install_handler) {
+    InstallAlternateStackLocked();
+    InstallHandlersLocked();
+  }
+  g_handler_stack_->push_back(this);
+  pthread_mutex_unlock(&g_handler_stack_mutex_);
+}
+
+// Runs before crashing: normal context.
+ExceptionHandler::~ExceptionHandler() {
+  pthread_mutex_lock(&g_handler_stack_mutex_);
+  std::vector<ExceptionHandler*>::iterator handler =
+      std::find(g_handler_stack_->begin(), g_handler_stack_->end(), this);
+  g_handler_stack_->erase(handler);
+  if (g_handler_stack_->empty()) {
+    delete g_handler_stack_;
+    g_handler_stack_ = NULL;
+    RestoreAlternateStackLocked();
+    RestoreHandlersLocked();
+  }
+  pthread_mutex_unlock(&g_handler_stack_mutex_);
+}
+
+// Runs before crashing: normal context.
+// static
+bool ExceptionHandler::InstallHandlersLocked() {
+  if (handlers_installed)
+    return false;
+
+  // Fail if unable to store all the old handlers.
+  for (int i = 0; i < kNumHandledSignals; ++i) {
+    if (sigaction(kExceptionSignals[i], NULL, &old_handlers[i]) == -1)
+      return false;
+  }
+
+  struct sigaction sa;
+  memset(&sa, 0, sizeof(sa));
+  sigemptyset(&sa.sa_mask);
+
+  // Mask all exception signals when we're handling one of them.
+  for (int i = 0; i < kNumHandledSignals; ++i)
+    sigaddset(&sa.sa_mask, kExceptionSignals[i]);
+
+  sa.sa_sigaction = SignalHandler;
+  sa.sa_flags = SA_ONSTACK | SA_SIGINFO;
+
+  for (int i = 0; i < kNumHandledSignals; ++i) {
+    if (sigaction(kExceptionSignals[i], &sa, NULL) == -1) {
+      // At this point it is impractical to back out changes, and so failure to
+      // install a signal is intentionally ignored.
+    }
+  }
+  handlers_installed = true;
+  return true;
+}
+
+// This function runs in a compromised context: see the top of the file.
+// Runs on the crashing thread.
+// static
+void ExceptionHandler::RestoreHandlersLocked() {
+  if (!handlers_installed)
+    return;
+
+  for (int i = 0; i < kNumHandledSignals; ++i) {
+    if (sigaction(kExceptionSignals[i], &old_handlers[i], NULL) == -1) {
+      InstallDefaultHandler(kExceptionSignals[i]);
+    }
+  }
+  handlers_installed = false;
+}
+
+// void ExceptionHandler::set_crash_handler(HandlerCallback callback) {
+//   crash_handler_ = callback;
+// }
+
+// This function runs in a compromised context: see the top of the file.
+// Runs on the crashing thread.
+// static
+void ExceptionHandler::SignalHandler(int sig, siginfo_t* info, void* uc) {
+  // All the exception signals are blocked at this point.
+  pthread_mutex_lock(&g_handler_stack_mutex_);
+
+  // Sometimes, Breakpad runs inside a process where some other buggy code
+  // saves and restores signal handlers temporarily with 'signal'
+  // instead of 'sigaction'. This loses the SA_SIGINFO flag associated
+  // with this function. As a consequence, the values of 'info' and 'uc'
+  // become totally bogus, generally inducing a crash.
+  //
+  // The following code tries to detect this case. When it does, it
+  // resets the signal handlers with sigaction + SA_SIGINFO and returns.
+  // This forces the signal to be thrown again, but this time the kernel
+  // will call the function with the right arguments.
+  struct sigaction cur_handler;
+  if (sigaction(sig, NULL, &cur_handler) == 0 &&
+      (cur_handler.sa_flags & SA_SIGINFO) == 0) {
+    // Reset signal handler with the right flags.
+    sigemptyset(&cur_handler.sa_mask);
+    sigaddset(&cur_handler.sa_mask, sig);
+
+    cur_handler.sa_sigaction = SignalHandler;
+    cur_handler.sa_flags = SA_ONSTACK | SA_SIGINFO;
+
+    if (sigaction(sig, &cur_handler, NULL) == -1) {
+      // When resetting the handler fails, try to reset the
+      // default one to avoid an infinite loop here.
+      InstallDefaultHandler(sig);
+    }
+    pthread_mutex_unlock(&g_handler_stack_mutex_);
+    return;
+  }
+
+  bool handled = false;
+  for (int i = g_handler_stack_->size() - 1; !handled && i >= 0; --i) {
+    handled = (*g_handler_stack_)[i]->HandleSignal(sig, info, uc);
+  }
+
+  // Upon returning from this signal handler, sig will become unmasked and then
+  // it will be retriggered. If one of the ExceptionHandlers handled it
+  // successfully, restore the default handler. Otherwise, restore the
+  // previously installed handler. Then, when the signal is retriggered, it will
+  // be delivered to the appropriate handler.
+  if (handled) {
+    InstallDefaultHandler(sig);
+  } else {
+    RestoreHandlersLocked();
+  }
+
+  pthread_mutex_unlock(&g_handler_stack_mutex_);
+
+  if (info->si_pid || sig == SIGABRT) {
+    // This signal was triggered by somebody sending us the signal with kill().
+    // In order to retrigger it, we have to queue a new signal by calling
+    // kill() ourselves.  The special case (si_pid == 0 && sig == SIGABRT) is
+    // due to the kernel sending a SIGABRT from a user request via SysRQ.
+    if (tgkill(getpid(), syscall(__NR_gettid), sig) < 0) {
+      // If we failed to kill ourselves (e.g. because a sandbox disallows us
+      // to do so), we instead resort to terminating our process. This will
+      // result in an incorrect exit code.
+      _exit(1);
+    }
+  } else {
+    // This was a synchronous signal triggered by a hard fault (e.g. SIGSEGV).
+    // No need to reissue the signal. It will automatically trigger again,
+    // when we return from the signal handler.
+  }
+}
+
+struct ThreadArgument {
+  pid_t pid;  // the crashing process
+  const MinidumpDescriptor* minidump_descriptor;
+  ExceptionHandler* handler;
+  const void* context;  // a CrashContext structure
+  size_t context_size;
+};
+
+// This is the entry function for the cloned process. We are in a compromised
+// context here: see the top of the file.
+// static
+int ExceptionHandler::ThreadEntry(void *arg) {
+  const ThreadArgument *thread_arg = reinterpret_cast<ThreadArgument*>(arg);
+
+  // Block here until the crashing process unblocks us when
+  // we're allowed to use ptrace
+  thread_arg->handler->WaitForContinueSignal();
+
+  return thread_arg->handler->DoDump(thread_arg->pid, thread_arg->context,
+                                     thread_arg->context_size) == false;
+}
+
+// This function runs in a compromised context: see the top of the file.
+// Runs on the crashing thread.
+bool ExceptionHandler::HandleSignal(int sig, siginfo_t* info, void* uc) {
+  if (filter_ && !filter_(callback_context_))
+    return false;
+
+  // Allow ourselves to be dumped if the signal is trusted.
+  bool signal_trusted = info->si_code > 0;
+  bool signal_pid_trusted = info->si_code == SI_USER ||
+      info->si_code == SI_TKILL;
+  if (signal_trusted || (signal_pid_trusted && info->si_pid == getpid())) {
+    sys_prctl(PR_SET_DUMPABLE, 1, 0, 0, 0);
+  }
+  CrashContext context;
+  // Fill in all the holes in the struct to make Valgrind happy.
+  memset(&context, 0, sizeof(context));
+  memcpy(&context.siginfo, info, sizeof(siginfo_t));
+  memcpy(&context.context, uc, sizeof(struct ucontext));
+#if defined(__aarch64__)
+  struct ucontext *uc_ptr = (struct ucontext*)uc;
+  struct fpsimd_context *fp_ptr =
+      (struct fpsimd_context*)&uc_ptr->uc_mcontext.__reserved;
+  if (fp_ptr->head.magic == FPSIMD_MAGIC) {
+    memcpy(&context.float_state, fp_ptr, sizeof(context.float_state));
+  }
+#elif !defined(__ARM_EABI__)  && !defined(__mips__)
+  // FP state is not part of user ABI on ARM Linux.
+  // In case of MIPS Linux FP state is already part of struct ucontext
+  // and 'float_state' is not a member of CrashContext.
+  struct ucontext *uc_ptr = (struct ucontext*)uc;
+  if (uc_ptr->uc_mcontext.fpregs) {
+    memcpy(&context.float_state,
+           uc_ptr->uc_mcontext.fpregs,
+           sizeof(context.float_state));
+  }
+#endif
+  context.tid = syscall(__NR_gettid);
+  if (crash_handler_ != NULL) {
+    if (crash_handler_(&context, sizeof(context), callback_context_)) {
+      return true;
+    }
+  }
+  return GenerateDump(&context);
+}
+
+// This is a public interface to HandleSignal that allows the client to
+// generate a crash dump. This function may run in a compromised context.
+bool ExceptionHandler::SimulateSignalDelivery(int sig) {
+  siginfo_t siginfo = {};
+  // Mimic a trusted signal to allow tracing the process (see
+  // ExceptionHandler::HandleSignal().
+  siginfo.si_code = SI_USER;
+  siginfo.si_pid = getpid();
+  struct ucontext context;
+  getcontext(&context);
+  return HandleSignal(sig, &siginfo, &context);
+}
+
+// This function may run in a compromised context: see the top of the file.
+bool ExceptionHandler::GenerateDump(CrashContext *context) {
+  if (IsOutOfProcess())
+    return crash_generation_client_->RequestDump(context, sizeof(*context));
+
+  // Allocating too much stack isn't a problem, and better to err on the side
+  // of caution than smash it into random locations.
+  static const unsigned kChildStackSize = 16000;
+  PageAllocator allocator;
+  uint8_t* stack = reinterpret_cast<uint8_t*>(allocator.Alloc(kChildStackSize));
+  if (!stack)
+    return false;
+  // clone() needs the top-most address. (scrub just to be safe)
+  stack += kChildStackSize;
+  my_memset(stack - 16, 0, 16);
+
+  ThreadArgument thread_arg;
+  thread_arg.handler = this;
+  thread_arg.minidump_descriptor = &minidump_descriptor_;
+  thread_arg.pid = getpid();
+  thread_arg.context = context;
+  thread_arg.context_size = sizeof(*context);
+
+  // We need to explicitly enable ptrace of parent processes on some
+  // kernels, but we need to know the PID of the cloned process before we
+  // can do this. Create a pipe here which we can use to block the
+  // cloned process after creating it, until we have explicitly enabled ptrace
+  if (sys_pipe(fdes) == -1) {
+    // Creating the pipe failed. We'll log an error but carry on anyway,
+    // as we'll probably still get a useful crash report. All that will happen
+    // is the write() and read() calls will fail with EBADF
+    static const char no_pipe_msg[] = "ExceptionHandler::GenerateDump "
+                                      "sys_pipe failed:";
+    logger::write(no_pipe_msg, sizeof(no_pipe_msg) - 1);
+    logger::write(strerror(errno), strlen(strerror(errno)));
+    logger::write("\n", 1);
+
+    // Ensure fdes[0] and fdes[1] are invalid file descriptors.
+    fdes[0] = fdes[1] = -1;
+  }
+
+  const pid_t child = sys_clone(
+      ThreadEntry, stack, CLONE_FILES | CLONE_FS | CLONE_UNTRACED,
+      &thread_arg, NULL, NULL, NULL);
+  if (child == -1) {
+    sys_close(fdes[0]);
+    sys_close(fdes[1]);
+    return false;
+  }
+
+  // Allow the child to ptrace us
+  sys_prctl(PR_SET_PTRACER, child, 0, 0, 0);
+  SendContinueSignalToChild();
+  int status;
+  const int r = HANDLE_EINTR(sys_waitpid(child, &status, __WALL));
+
+  sys_close(fdes[0]);
+  sys_close(fdes[1]);
+
+  if (r == -1) {
+    static const char msg[] = "ExceptionHandler::GenerateDump waitpid failed:";
+    logger::write(msg, sizeof(msg) - 1);
+    logger::write(strerror(errno), strlen(strerror(errno)));
+    logger::write("\n", 1);
+  }
+
+  bool success = r != -1 && WIFEXITED(status) && WEXITSTATUS(status) == 0;
+  if (callback_)
+    success = callback_(minidump_descriptor_, callback_context_, success);
+  return success;
+}
+
+// This function runs in a compromised context: see the top of the file.
+void ExceptionHandler::SendContinueSignalToChild() {
+  static const char okToContinueMessage = 'a';
+  int r;
+  r = HANDLE_EINTR(sys_write(fdes[1], &okToContinueMessage, sizeof(char)));
+  if (r == -1) {
+    static const char msg[] = "ExceptionHandler::SendContinueSignalToChild "
+                              "sys_write failed:";
+    logger::write(msg, sizeof(msg) - 1);
+    logger::write(strerror(errno), strlen(strerror(errno)));
+    logger::write("\n", 1);
+  }
+}
+
+// This function runs in a compromised context: see the top of the file.
+// Runs on the cloned process.
+void ExceptionHandler::WaitForContinueSignal() {
+  int r;
+  char receivedMessage;
+  r = HANDLE_EINTR(sys_read(fdes[0], &receivedMessage, sizeof(char)));
+  if (r == -1) {
+    static const char msg[] = "ExceptionHandler::WaitForContinueSignal "
+                              "sys_read failed:";
+    logger::write(msg, sizeof(msg) - 1);
+    logger::write(strerror(errno), strlen(strerror(errno)));
+    logger::write("\n", 1);
+  }
+}
+
+// This function runs in a compromised context: see the top of the file.
+// Runs on the cloned process.
+bool ExceptionHandler::DoDump(pid_t crashing_process, const void* context,
+                              size_t context_size) {
+  if (minidump_descriptor_.IsMicrodumpOnConsole()) {
+    return google_breakpad::WriteMicrodump(crashing_process,
+                                           context,
+                                           context_size,
+                                           mapping_list_);
+  }
+  if (minidump_descriptor_.IsFD()) {
+    return google_breakpad::WriteMinidump(minidump_descriptor_.fd(),
+                                          minidump_descriptor_.size_limit(),
+                                          crashing_process,
+                                          context,
+                                          context_size,
+                                          mapping_list_,
+                                          app_memory_list_);
+  }
+  return google_breakpad::WriteMinidump(minidump_descriptor_.path(),
+                                        minidump_descriptor_.size_limit(),
+                                        crashing_process,
+                                        context,
+                                        context_size,
+                                        mapping_list_,
+                                        app_memory_list_);
+}
+
+// static
+bool ExceptionHandler::WriteMinidump(const string& dump_path,
+                                     MinidumpCallback callback,
+                                     void* callback_context) {
+  MinidumpDescriptor descriptor(dump_path);
+  ExceptionHandler eh(descriptor, NULL, callback, callback_context, false, -1);
+  return eh.WriteMinidump();
+}
+
+// In order to making using EBP to calculate the desired value for ESP
+// a valid operation, ensure that this function is compiled with a
+// frame pointer using the following attribute. This attribute
+// is supported on GCC but not on clang.
+#if defined(__i386__) && defined(__GNUC__) && !defined(__clang__)
+__attribute__((optimize("no-omit-frame-pointer")))
+#endif
+bool ExceptionHandler::WriteMinidump() {
+  if (!IsOutOfProcess() && !minidump_descriptor_.IsFD() &&
+      !minidump_descriptor_.IsMicrodumpOnConsole()) {
+    // Update the path of the minidump so that this can be called multiple times
+    // and new files are created for each minidump.  This is done before the
+    // generation happens, as clients may want to access the MinidumpDescriptor
+    // after this call to find the exact path to the minidump file.
+    minidump_descriptor_.UpdatePath();
+  } else if (minidump_descriptor_.IsFD()) {
+    // Reposition the FD to its beginning and resize it to get rid of the
+    // previous minidump info.
+    lseek(minidump_descriptor_.fd(), 0, SEEK_SET);
+    ignore_result(ftruncate(minidump_descriptor_.fd(), 0));
+  }
+
+  // Allow this process to be dumped.
+  sys_prctl(PR_SET_DUMPABLE, 1, 0, 0, 0);
+
+  CrashContext context;
+  int getcontext_result = getcontext(&context.context);
+  if (getcontext_result)
+    return false;
+
+#if defined(__i386__)
+  // In CPUFillFromUContext in minidumpwriter.cc the stack pointer is retrieved
+  // from REG_UESP instead of from REG_ESP. REG_UESP is the user stack pointer
+  // and it only makes sense when running in kernel mode with a different stack
+  // pointer. When WriteMiniDump is called during normal processing REG_UESP is
+  // zero which leads to bad minidump files.
+  if (!context.context.uc_mcontext.gregs[REG_UESP]) {
+    // If REG_UESP is set to REG_ESP then that includes the stack space for the
+    // CrashContext object in this function, which is about 128 KB. Since the
+    // Linux dumper only records 32 KB of stack this would mean that nothing
+    // useful would be recorded. A better option is to set REG_UESP to REG_EBP,
+    // perhaps with a small negative offset in case there is any code that
+    // objects to them being equal.
+    context.context.uc_mcontext.gregs[REG_UESP] =
+      context.context.uc_mcontext.gregs[REG_EBP] - 16;
+    // The stack saving is based off of REG_ESP so it must be set to match the
+    // new REG_UESP.
+    context.context.uc_mcontext.gregs[REG_ESP] =
+      context.context.uc_mcontext.gregs[REG_UESP];
+  }
+#endif
+
+#if !defined(__ARM_EABI__) && !defined(__aarch64__) && !defined(__mips__)
+  // FPU state is not part of ARM EABI ucontext_t.
+  memcpy(&context.float_state, context.context.uc_mcontext.fpregs,
+         sizeof(context.float_state));
+#endif
+  context.tid = sys_gettid();
+
+  // Add an exception stream to the minidump for better reporting.
+  memset(&context.siginfo, 0, sizeof(context.siginfo));
+  context.siginfo.si_signo = MD_EXCEPTION_CODE_LIN_DUMP_REQUESTED;
+#if defined(__i386__)
+  context.siginfo.si_addr =
+      reinterpret_cast<void*>(context.context.uc_mcontext.gregs[REG_EIP]);
+#elif defined(__x86_64__)
+  context.siginfo.si_addr =
+      reinterpret_cast<void*>(context.context.uc_mcontext.gregs[REG_RIP]);
+#elif defined(__arm__)
+  context.siginfo.si_addr =
+      reinterpret_cast<void*>(context.context.uc_mcontext.arm_pc);
+#elif defined(__aarch64__)
+  context.siginfo.si_addr =
+      reinterpret_cast<void*>(context.context.uc_mcontext.pc);
+#elif defined(__mips__)
+  context.siginfo.si_addr =
+      reinterpret_cast<void*>(context.context.uc_mcontext.pc);
+#else
+#error "This code has not been ported to your platform yet."
+#endif
+
+  return GenerateDump(&context);
+}
+
+void ExceptionHandler::AddMappingInfo(const string& name,
+                                      const uint8_t identifier[sizeof(MDGUID)],
+                                      uintptr_t start_address,
+                                      size_t mapping_size,
+                                      size_t file_offset) {
+  MappingInfo info;
+  info.start_addr = start_address;
+  info.size = mapping_size;
+  info.offset = file_offset;
+  strncpy(info.name, name.c_str(), sizeof(info.name) - 1);
+  info.name[sizeof(info.name) - 1] = '\0';
+
+  MappingEntry mapping;
+  mapping.first = info;
+  memcpy(mapping.second, identifier, sizeof(MDGUID));
+  mapping_list_.push_back(mapping);
+}
+
+void ExceptionHandler::RegisterAppMemory(void* ptr, size_t length) {
+  AppMemoryList::iterator iter =
+    std::find(app_memory_list_.begin(), app_memory_list_.end(), ptr);
+  if (iter != app_memory_list_.end()) {
+    // Don't allow registering the same pointer twice.
+    return;
+  }
+
+  AppMemory app_memory;
+  app_memory.ptr = ptr;
+  app_memory.length = length;
+  app_memory_list_.push_back(app_memory);
+}
+
+void ExceptionHandler::UnregisterAppMemory(void* ptr) {
+  AppMemoryList::iterator iter =
+    std::find(app_memory_list_.begin(), app_memory_list_.end(), ptr);
+  if (iter != app_memory_list_.end()) {
+    app_memory_list_.erase(iter);
+  }
+}
+
+// static
+bool ExceptionHandler::WriteMinidumpForChild(pid_t child,
+                                             pid_t child_blamed_thread,
+                                             const string& dump_path,
+                                             MinidumpCallback callback,
+                                             void* callback_context) {
+  // This function is not run in a compromised context.
+  MinidumpDescriptor descriptor(dump_path);
+  descriptor.UpdatePath();
+  if (!google_breakpad::WriteMinidump(descriptor.path(),
+                                      child,
+                                      child_blamed_thread))
+      return false;
+
+  return callback ? callback(descriptor, callback_context, true) : true;
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/client/linux/handler/exception_handler.h b/google-breakpad/src/client/linux/handler/exception_handler.h
new file mode 100644
index 0000000..591c310
--- /dev/null
+++ b/google-breakpad/src/client/linux/handler/exception_handler.h
@@ -0,0 +1,278 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef CLIENT_LINUX_HANDLER_EXCEPTION_HANDLER_H_
+#define CLIENT_LINUX_HANDLER_EXCEPTION_HANDLER_H_
+
+#include <signal.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <sys/ucontext.h>
+
+#include <string>
+
+#include "client/linux/crash_generation/crash_generation_client.h"
+#include "client/linux/handler/minidump_descriptor.h"
+#include "client/linux/minidump_writer/minidump_writer.h"
+#include "common/scoped_ptr.h"
+#include "common/using_std_string.h"
+#include "google_breakpad/common/minidump_format.h"
+
+namespace google_breakpad {
+
+// ExceptionHandler
+//
+// ExceptionHandler can write a minidump file when an exception occurs,
+// or when WriteMinidump() is called explicitly by your program.
+//
+// To have the exception handler write minidumps when an uncaught exception
+// (crash) occurs, you should create an instance early in the execution
+// of your program, and keep it around for the entire time you want to
+// have crash handling active (typically, until shutdown).
+// (NOTE): There should be only be one this kind of exception handler
+// object per process.
+//
+// If you want to write minidumps without installing the exception handler,
+// you can create an ExceptionHandler with install_handler set to false,
+// then call WriteMinidump.  You can also use this technique if you want to
+// use different minidump callbacks for different call sites.
+//
+// In either case, a callback function is called when a minidump is written,
+// which receives the full path or file descriptor of the minidump.  The
+// caller can collect and write additional application state to that minidump,
+// and launch an external crash-reporting application.
+//
+// Caller should try to make the callbacks as crash-friendly as possible,
+// it should avoid use heap memory allocation as much as possible.
+
+class ExceptionHandler {
+ public:
+  // A callback function to run before Breakpad performs any substantial
+  // processing of an exception.  A FilterCallback is called before writing
+  // a minidump.  |context| is the parameter supplied by the user as
+  // callback_context when the handler was created.
+  //
+  // If a FilterCallback returns true, Breakpad will continue processing,
+  // attempting to write a minidump.  If a FilterCallback returns false,
+  // Breakpad  will immediately report the exception as unhandled without
+  // writing a minidump, allowing another handler the opportunity to handle it.
+  typedef bool (*FilterCallback)(void *context);
+
+  // A callback function to run after the minidump has been written.
+  // |descriptor| contains the file descriptor or file path containing the
+  // minidump. |context| is the parameter supplied by the user as
+  // callback_context when the handler was created.  |succeeded| indicates
+  // whether a minidump file was successfully written.
+  //
+  // If an exception occurred and the callback returns true, Breakpad will
+  // treat the exception as fully-handled, suppressing any other handlers from
+  // being notified of the exception.  If the callback returns false, Breakpad
+  // will treat the exception as unhandled, and allow another handler to handle
+  // it. If there are no other handlers, Breakpad will report the exception to
+  // the system as unhandled, allowing a debugger or native crash dialog the
+  // opportunity to handle the exception.  Most callback implementations
+  // should normally return the value of |succeeded|, or when they wish to
+  // not report an exception of handled, false.  Callbacks will rarely want to
+  // return true directly (unless |succeeded| is true).
+  typedef bool (*MinidumpCallback)(const MinidumpDescriptor& descriptor,
+                                   void* context,
+                                   bool succeeded);
+
+  // In certain cases, a user may wish to handle the generation of the minidump
+  // themselves. In this case, they can install a handler callback which is
+  // called when a crash has occurred. If this function returns true, no other
+  // processing of occurs and the process will shortly be crashed. If this
+  // returns false, the normal processing continues.
+  typedef bool (*HandlerCallback)(const void* crash_context,
+                                  size_t crash_context_size,
+                                  void* context);
+
+  // Creates a new ExceptionHandler instance to handle writing minidumps.
+  // Before writing a minidump, the optional |filter| callback will be called.
+  // Its return value determines whether or not Breakpad should write a
+  // minidump.  The minidump content will be written to the file path or file
+  // descriptor from |descriptor|, and the optional |callback| is called after
+  // writing the dump file, as described above.
+  // If install_handler is true, then a minidump will be written whenever
+  // an unhandled exception occurs.  If it is false, minidumps will only
+  // be written when WriteMinidump is called.
+  // If |server_fd| is valid, the minidump is generated out-of-process.  If it
+  // is -1, in-process generation will always be used.
+  ExceptionHandler(const MinidumpDescriptor& descriptor,
+                   FilterCallback filter,
+                   MinidumpCallback callback,
+                   void* callback_context,
+                   bool install_handler,
+                   const int server_fd);
+  ~ExceptionHandler();
+
+  const MinidumpDescriptor& minidump_descriptor() const {
+    return minidump_descriptor_;
+  }
+
+  void set_minidump_descriptor(const MinidumpDescriptor& descriptor) {
+    minidump_descriptor_ = descriptor;
+  }
+
+  void set_crash_handler(HandlerCallback callback) {
+    crash_handler_ = callback;
+  }
+
+  void set_crash_generation_client(CrashGenerationClient* client) {
+    crash_generation_client_.reset(client);
+  }
+
+  // Writes a minidump immediately.  This can be used to capture the execution
+  // state independently of a crash.
+  // Returns true on success.
+  // If the ExceptionHandler has been created with a path, a new file is
+  // generated for each minidump.  The file path can be retrieved in the
+  // MinidumpDescriptor passed to the MinidumpCallback or by accessing the
+  // MinidumpDescriptor directly from the ExceptionHandler (with
+  // minidump_descriptor()).
+  // If the ExceptionHandler has been created with a file descriptor, the file
+  // descriptor is repositioned to its beginning and the previous generated
+  // minidump is overwritten.
+  // Note that this method is not supposed to be called from a compromised
+  // context as it uses the heap.
+  bool WriteMinidump();
+
+  // Convenience form of WriteMinidump which does not require an
+  // ExceptionHandler instance.
+  static bool WriteMinidump(const string& dump_path,
+                            MinidumpCallback callback,
+                            void* callback_context);
+
+  // Write a minidump of |child| immediately.  This can be used to
+  // capture the execution state of |child| independently of a crash.
+  // Pass a meaningful |child_blamed_thread| to make that thread in
+  // the child process the one from which a crash signature is
+  // extracted.
+  //
+  // WARNING: the return of this function *must* happen before
+  // the code that will eventually reap |child| executes.
+  // Otherwise there's a pernicious race condition in which |child|
+  // exits, is reaped, another process created with its pid, then that
+  // new process dumped.
+  static bool WriteMinidumpForChild(pid_t child,
+                                    pid_t child_blamed_thread,
+                                    const string& dump_path,
+                                    MinidumpCallback callback,
+                                    void* callback_context);
+
+  // This structure is passed to minidump_writer.h:WriteMinidump via an opaque
+  // blob. It shouldn't be needed in any user code.
+  struct CrashContext {
+    siginfo_t siginfo;
+    pid_t tid;  // the crashing thread.
+    struct ucontext context;
+#if !defined(__ARM_EABI__) && !defined(__mips__)
+    // #ifdef this out because FP state is not part of user ABI for Linux ARM.
+    // In case of MIPS Linux FP state is already part of struct
+    // ucontext so 'float_state' is not required.
+    fpstate_t float_state;
+#endif
+  };
+
+  // Returns whether out-of-process dump generation is used or not.
+  bool IsOutOfProcess() const {
+    return crash_generation_client_.get() != NULL;
+  }
+
+  // Add information about a memory mapping. This can be used if
+  // a custom library loader is used that maps things in a way
+  // that the linux dumper can't handle by reading the maps file.
+  void AddMappingInfo(const string& name,
+                      const uint8_t identifier[sizeof(MDGUID)],
+                      uintptr_t start_address,
+                      size_t mapping_size,
+                      size_t file_offset);
+
+  // Register a block of memory of length bytes starting at address ptr
+  // to be copied to the minidump when a crash happens.
+  void RegisterAppMemory(void* ptr, size_t length);
+
+  // Unregister a block of memory that was registered with RegisterAppMemory.
+  void UnregisterAppMemory(void* ptr);
+
+  // Force signal handling for the specified signal.
+  bool SimulateSignalDelivery(int sig);
+
+  // Report a crash signal from an SA_SIGINFO signal handler.
+  bool HandleSignal(int sig, siginfo_t* info, void* uc);
+
+ private:
+  // Save the old signal handlers and install new ones.
+  static bool InstallHandlersLocked();
+  // Restore the old signal handlers.
+  static void RestoreHandlersLocked();
+
+  void PreresolveSymbols();
+  bool GenerateDump(CrashContext *context);
+  void SendContinueSignalToChild();
+  void WaitForContinueSignal();
+
+  static void SignalHandler(int sig, siginfo_t* info, void* uc);
+  static int ThreadEntry(void* arg);
+  bool DoDump(pid_t crashing_process, const void* context,
+              size_t context_size);
+
+  const FilterCallback filter_;
+  const MinidumpCallback callback_;
+  void* const callback_context_;
+
+  scoped_ptr<CrashGenerationClient> crash_generation_client_;
+
+  MinidumpDescriptor minidump_descriptor_;
+
+  // Must be volatile. The compiler is unaware of the code which runs in
+  // the signal handler which reads this variable. Without volatile the
+  // compiler is free to optimise away writes to this variable which it
+  // believes are never read.
+  volatile HandlerCallback crash_handler_;
+
+  // We need to explicitly enable ptrace of parent processes on some
+  // kernels, but we need to know the PID of the cloned process before we
+  // can do this. We create a pipe which we can use to block the
+  // cloned process after creating it, until we have explicitly enabled
+  // ptrace. This is used to store the file descriptors for the pipe
+  int fdes[2];
+
+  // Callers can add extra info about mappings for cases where the
+  // dumper code cannot extract enough information from /proc/<pid>/maps.
+  MappingList mapping_list_;
+
+  // Callers can request additional memory regions to be included in
+  // the dump.
+  AppMemoryList app_memory_list_;
+};
+
+}  // namespace google_breakpad
+
+#endif  // CLIENT_LINUX_HANDLER_EXCEPTION_HANDLER_H_
diff --git a/google-breakpad/src/client/linux/handler/exception_handler_unittest.cc b/google-breakpad/src/client/linux/handler/exception_handler_unittest.cc
new file mode 100644
index 0000000..289c9cd
--- /dev/null
+++ b/google-breakpad/src/client/linux/handler/exception_handler_unittest.cc
@@ -0,0 +1,1195 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include <stdint.h>
+#include <unistd.h>
+#include <signal.h>
+#include <sys/mman.h>
+#include <sys/poll.h>
+#include <sys/socket.h>
+#include <sys/uio.h>
+#include <sys/wait.h>
+#if defined(__mips__)
+#include <sys/cachectl.h>
+#endif
+
+#include <string>
+
+#include "breakpad_googletest_includes.h"
+#include "client/linux/handler/exception_handler.h"
+#include "client/linux/minidump_writer/minidump_writer.h"
+#include "common/linux/eintr_wrapper.h"
+#include "common/linux/file_id.h"
+#include "common/linux/ignore_ret.h"
+#include "common/linux/linux_libc_support.h"
+#include "common/tests/auto_tempdir.h"
+#include "common/using_std_string.h"
+#include "third_party/lss/linux_syscall_support.h"
+#include "google_breakpad/processor/minidump.h"
+
+using namespace google_breakpad;
+
+namespace {
+
+// Flush the instruction cache for a given memory range.
+// Only required on ARM and mips.
+void FlushInstructionCache(const char* memory, uint32_t memory_size) {
+#if defined(__arm__)
+  long begin = reinterpret_cast<long>(memory);
+  long end = begin + static_cast<long>(memory_size);
+# if defined(__ANDROID__)
+  // Provided by Android's <unistd.h>
+  cacheflush(begin, end, 0);
+# elif defined(__linux__)
+  // GLibc/ARM doesn't provide a wrapper for it, do a direct syscall.
+#  ifndef __ARM_NR_cacheflush
+#  define __ARM_NR_cacheflush 0xf0002
+#  endif
+  syscall(__ARM_NR_cacheflush, begin, end, 0);
+# else
+#   error "Your operating system is not supported yet"
+# endif
+#elif defined(__mips__)
+# if defined(__ANDROID__)
+  // Provided by Android's <unistd.h>
+  long begin = reinterpret_cast<long>(memory);
+  long end = begin + static_cast<long>(memory_size);
+#if _MIPS_SIM == _ABIO32
+  cacheflush(begin, end, 0);
+#else
+  syscall(__NR_cacheflush, begin, end, ICACHE);
+#endif
+# elif defined(__linux__)
+  // See http://www.linux-mips.org/wiki/Cacheflush_Syscall.
+  cacheflush(const_cast<char*>(memory), memory_size, ICACHE);
+# else
+#   error "Your operating system is not supported yet"
+# endif
+#endif
+}
+
+// Length of a formatted GUID string =
+// sizeof(MDGUID) * 2 + 4 (for dashes) + 1 (null terminator)
+const int kGUIDStringSize = 37;
+
+void sigchld_handler(int signo) { }
+
+int CreateTMPFile(const string& dir, string* path) {
+  string file = dir + "/exception-handler-unittest.XXXXXX";
+  const char* c_file = file.c_str();
+  // Copy that string, mkstemp needs a C string it can modify.
+  char* c_path = strdup(c_file);
+  const int fd = mkstemp(c_path);
+  if (fd >= 0)
+    *path = c_path;
+  free(c_path);
+  return fd;
+}
+
+class ExceptionHandlerTest : public ::testing::Test {
+ protected:
+  void SetUp() {
+    // We need to be able to wait for children, so SIGCHLD cannot be SIG_IGN.
+    struct sigaction sa;
+    memset(&sa, 0, sizeof(sa));
+    sa.sa_handler = sigchld_handler;
+    ASSERT_NE(sigaction(SIGCHLD, &sa, &old_action), -1);
+  }
+
+  void TearDown() {
+    sigaction(SIGCHLD, &old_action, NULL);
+  }
+
+  struct sigaction old_action;
+};
+
+
+void WaitForProcessToTerminate(pid_t process_id, int expected_status) {
+  int status;
+  ASSERT_NE(HANDLE_EINTR(waitpid(process_id, &status, 0)), -1);
+  ASSERT_TRUE(WIFSIGNALED(status));
+  ASSERT_EQ(expected_status, WTERMSIG(status));
+}
+
+// Reads the minidump path sent over the pipe |fd| and sets it in |path|.
+void ReadMinidumpPathFromPipe(int fd, string* path) {
+  struct pollfd pfd;
+  memset(&pfd, 0, sizeof(pfd));
+  pfd.fd = fd;
+  pfd.events = POLLIN | POLLERR;
+
+  const int r = HANDLE_EINTR(poll(&pfd, 1, 0));
+  ASSERT_EQ(1, r);
+  ASSERT_TRUE(pfd.revents & POLLIN);
+
+  int32_t len;
+  ASSERT_EQ(static_cast<ssize_t>(sizeof(len)), read(fd, &len, sizeof(len)));
+  ASSERT_LT(len, 2048);
+  char* filename = static_cast<char*>(malloc(len + 1));
+  ASSERT_EQ(len, read(fd, filename, len));
+  filename[len] = 0;
+  close(fd);
+  *path = filename;
+  free(filename);
+}
+
+}  // namespace
+
+TEST(ExceptionHandlerTest, SimpleWithPath) {
+  AutoTempDir temp_dir;
+  ExceptionHandler handler(
+      MinidumpDescriptor(temp_dir.path()), NULL, NULL, NULL, true, -1);
+  EXPECT_EQ(temp_dir.path(), handler.minidump_descriptor().directory());
+  string temp_subdir = temp_dir.path() + "/subdir";
+  handler.set_minidump_descriptor(MinidumpDescriptor(temp_subdir));
+  EXPECT_EQ(temp_subdir, handler.minidump_descriptor().directory());
+}
+
+TEST(ExceptionHandlerTest, SimpleWithFD) {
+  AutoTempDir temp_dir;
+  string path;
+  const int fd = CreateTMPFile(temp_dir.path(), &path);
+  ExceptionHandler handler(MinidumpDescriptor(fd), NULL, NULL, NULL, true, -1);
+  close(fd);
+}
+
+static bool DoneCallback(const MinidumpDescriptor& descriptor,
+                         void* context,
+                         bool succeeded) {
+  if (!succeeded)
+    return false;
+
+  if (!descriptor.IsFD()) {
+    int fd = reinterpret_cast<intptr_t>(context);
+    uint32_t len = 0;
+    len = my_strlen(descriptor.path());
+    IGNORE_RET(HANDLE_EINTR(sys_write(fd, &len, sizeof(len))));
+    IGNORE_RET(HANDLE_EINTR(sys_write(fd, descriptor.path(), len)));
+  }
+  return true;
+}
+
+#ifndef ADDRESS_SANITIZER
+
+// This is a replacement for "*reinterpret_cast<volatile int*>(NULL) = 0;"
+// It is needed because GCC is allowed to assume that the program will
+// not execute any undefined behavior (UB) operation. Further, when GCC
+// observes that UB statement is reached, it can assume that all statements
+// leading to the UB one are never executed either, and can completely
+// optimize them out. In the case of ExceptionHandlerTest::ExternalDumper,
+// GCC-4.9 optimized out the entire set up of ExceptionHandler, causing
+// test failure.
+volatile int *p_null;  // external linkage, so GCC can't tell that it
+                       // remains NULL. Volatile just for a good measure.
+static void DoNullPointerDereference() {
+  *p_null = 1;
+}
+
+void ChildCrash(bool use_fd) {
+  AutoTempDir temp_dir;
+  int fds[2] = {0};
+  int minidump_fd = -1;
+  string minidump_path;
+  if (use_fd) {
+    minidump_fd = CreateTMPFile(temp_dir.path(), &minidump_path);
+  } else {
+    ASSERT_NE(pipe(fds), -1);
+  }
+
+  const pid_t child = fork();
+  if (child == 0) {
+    {
+      google_breakpad::scoped_ptr<ExceptionHandler> handler;
+      if (use_fd) {
+        handler.reset(new ExceptionHandler(MinidumpDescriptor(minidump_fd),
+                                           NULL, NULL, NULL, true, -1));
+      } else {
+        close(fds[0]);  // Close the reading end.
+        void* fd_param = reinterpret_cast<void*>(fds[1]);
+        handler.reset(new ExceptionHandler(MinidumpDescriptor(temp_dir.path()),
+                                           NULL, DoneCallback, fd_param,
+                                           true, -1));
+      }
+      // Crash with the exception handler in scope.
+      DoNullPointerDereference();
+    }
+  }
+  if (!use_fd)
+    close(fds[1]);  // Close the writting end.
+
+  ASSERT_NO_FATAL_FAILURE(WaitForProcessToTerminate(child, SIGSEGV));
+
+  if (!use_fd)
+    ASSERT_NO_FATAL_FAILURE(ReadMinidumpPathFromPipe(fds[0], &minidump_path));
+
+  struct stat st;
+  ASSERT_EQ(0, stat(minidump_path.c_str(), &st));
+  ASSERT_GT(st.st_size, 0);
+  unlink(minidump_path.c_str());
+}
+
+TEST(ExceptionHandlerTest, ChildCrashWithPath) {
+  ASSERT_NO_FATAL_FAILURE(ChildCrash(false));
+}
+
+TEST(ExceptionHandlerTest, ChildCrashWithFD) {
+  ASSERT_NO_FATAL_FAILURE(ChildCrash(true));
+}
+
+#endif  // !ADDRESS_SANITIZER
+
+static bool DoneCallbackReturnFalse(const MinidumpDescriptor& descriptor,
+                                    void* context,
+                                    bool succeeded) {
+  return false;
+}
+
+static bool DoneCallbackReturnTrue(const MinidumpDescriptor& descriptor,
+                                   void* context,
+                                   bool succeeded) {
+  return true;
+}
+
+static bool DoneCallbackRaiseSIGKILL(const MinidumpDescriptor& descriptor,
+                                     void* context,
+                                     bool succeeded) {
+  raise(SIGKILL);
+  return true;
+}
+
+static bool FilterCallbackReturnFalse(void* context) {
+  return false;
+}
+
+static bool FilterCallbackReturnTrue(void* context) {
+  return true;
+}
+
+// SIGKILL cannot be blocked and a handler cannot be installed for it. In the
+// following tests, if the child dies with signal SIGKILL, then the signal was
+// redelivered to this handler. If the child dies with SIGSEGV then it wasn't.
+static void RaiseSIGKILL(int sig) {
+  raise(SIGKILL);
+}
+
+static bool InstallRaiseSIGKILL() {
+  struct sigaction sa;
+  memset(&sa, 0, sizeof(sa));
+  sa.sa_handler = RaiseSIGKILL;
+  return sigaction(SIGSEGV, &sa, NULL) != -1;
+}
+
+#ifndef ADDRESS_SANITIZER
+
+static void CrashWithCallbacks(ExceptionHandler::FilterCallback filter,
+                               ExceptionHandler::MinidumpCallback done,
+                               string path) {
+  ExceptionHandler handler(
+      MinidumpDescriptor(path), filter, done, NULL, true, -1);
+  // Crash with the exception handler in scope.
+  DoNullPointerDereference();
+}
+
+TEST(ExceptionHandlerTest, RedeliveryOnFilterCallbackFalse) {
+  AutoTempDir temp_dir;
+
+  const pid_t child = fork();
+  if (child == 0) {
+    ASSERT_TRUE(InstallRaiseSIGKILL());
+    CrashWithCallbacks(FilterCallbackReturnFalse, NULL, temp_dir.path());
+  }
+
+  ASSERT_NO_FATAL_FAILURE(WaitForProcessToTerminate(child, SIGKILL));
+}
+
+TEST(ExceptionHandlerTest, RedeliveryOnDoneCallbackFalse) {
+  AutoTempDir temp_dir;
+
+  const pid_t child = fork();
+  if (child == 0) {
+    ASSERT_TRUE(InstallRaiseSIGKILL());
+    CrashWithCallbacks(NULL, DoneCallbackReturnFalse, temp_dir.path());
+  }
+
+  ASSERT_NO_FATAL_FAILURE(WaitForProcessToTerminate(child, SIGKILL));
+}
+
+TEST(ExceptionHandlerTest, NoRedeliveryOnDoneCallbackTrue) {
+  AutoTempDir temp_dir;
+
+  const pid_t child = fork();
+  if (child == 0) {
+    ASSERT_TRUE(InstallRaiseSIGKILL());
+    CrashWithCallbacks(NULL, DoneCallbackReturnTrue, temp_dir.path());
+  }
+
+  ASSERT_NO_FATAL_FAILURE(WaitForProcessToTerminate(child, SIGSEGV));
+}
+
+TEST(ExceptionHandlerTest, NoRedeliveryOnFilterCallbackTrue) {
+  AutoTempDir temp_dir;
+
+  const pid_t child = fork();
+  if (child == 0) {
+    ASSERT_TRUE(InstallRaiseSIGKILL());
+    CrashWithCallbacks(FilterCallbackReturnTrue, NULL, temp_dir.path());
+  }
+
+  ASSERT_NO_FATAL_FAILURE(WaitForProcessToTerminate(child, SIGSEGV));
+}
+
+TEST(ExceptionHandlerTest, RedeliveryToDefaultHandler) {
+  AutoTempDir temp_dir;
+
+  const pid_t child = fork();
+  if (child == 0) {
+    CrashWithCallbacks(FilterCallbackReturnFalse, NULL, temp_dir.path());
+  }
+
+  // As RaiseSIGKILL wasn't installed, the redelivery should just kill the child
+  // with SIGSEGV.
+  ASSERT_NO_FATAL_FAILURE(WaitForProcessToTerminate(child, SIGSEGV));
+}
+
+// Check that saving and restoring the signal handler with 'signal'
+// instead of 'sigaction' doesn't make the Breakpad signal handler
+// crash. See comments in ExceptionHandler::SignalHandler for full
+// details.
+TEST(ExceptionHandlerTest, RedeliveryOnBadSignalHandlerFlag) {
+  AutoTempDir temp_dir;
+  const pid_t child = fork();
+  if (child == 0) {
+    // Install the RaiseSIGKILL handler for SIGSEGV.
+    ASSERT_TRUE(InstallRaiseSIGKILL());
+
+    // Create a new exception handler, this installs a new SIGSEGV
+    // handler, after saving the old one.
+    ExceptionHandler handler(
+        MinidumpDescriptor(temp_dir.path()), NULL,
+        DoneCallbackReturnFalse, NULL, true, -1);
+
+    // Install the default SIGSEGV handler, saving the current one.
+    // Then re-install the current one with 'signal', this loses the
+    // SA_SIGINFO flag associated with the Breakpad handler.
+    sighandler_t old_handler = signal(SIGSEGV, SIG_DFL);
+    ASSERT_NE(reinterpret_cast<void*>(old_handler),
+              reinterpret_cast<void*>(SIG_ERR));
+    ASSERT_NE(reinterpret_cast<void*>(signal(SIGSEGV, old_handler)),
+              reinterpret_cast<void*>(SIG_ERR));
+
+    // Crash with the exception handler in scope.
+    DoNullPointerDereference();
+  }
+  // SIGKILL means Breakpad's signal handler didn't crash.
+  ASSERT_NO_FATAL_FAILURE(WaitForProcessToTerminate(child, SIGKILL));
+}
+
+TEST(ExceptionHandlerTest, StackedHandlersDeliveredToTop) {
+  AutoTempDir temp_dir;
+
+  const pid_t child = fork();
+  if (child == 0) {
+    ExceptionHandler bottom(MinidumpDescriptor(temp_dir.path()),
+                            NULL,
+                            NULL,
+                            NULL,
+                            true,
+                            -1);
+    CrashWithCallbacks(NULL, DoneCallbackRaiseSIGKILL, temp_dir.path());
+  }
+  ASSERT_NO_FATAL_FAILURE(WaitForProcessToTerminate(child, SIGKILL));
+}
+
+TEST(ExceptionHandlerTest, StackedHandlersNotDeliveredToBottom) {
+  AutoTempDir temp_dir;
+
+  const pid_t child = fork();
+  if (child == 0) {
+    ExceptionHandler bottom(MinidumpDescriptor(temp_dir.path()),
+                            NULL,
+                            DoneCallbackRaiseSIGKILL,
+                            NULL,
+                            true,
+                            -1);
+    CrashWithCallbacks(NULL, NULL, temp_dir.path());
+  }
+  ASSERT_NO_FATAL_FAILURE(WaitForProcessToTerminate(child, SIGSEGV));
+}
+
+TEST(ExceptionHandlerTest, StackedHandlersFilteredToBottom) {
+  AutoTempDir temp_dir;
+
+  const pid_t child = fork();
+  if (child == 0) {
+    ExceptionHandler bottom(MinidumpDescriptor(temp_dir.path()),
+                            NULL,
+                            DoneCallbackRaiseSIGKILL,
+                            NULL,
+                            true,
+                            -1);
+    CrashWithCallbacks(FilterCallbackReturnFalse, NULL, temp_dir.path());
+  }
+  ASSERT_NO_FATAL_FAILURE(WaitForProcessToTerminate(child, SIGKILL));
+}
+
+TEST(ExceptionHandlerTest, StackedHandlersUnhandledToBottom) {
+  AutoTempDir temp_dir;
+
+  const pid_t child = fork();
+  if (child == 0) {
+    ExceptionHandler bottom(MinidumpDescriptor(temp_dir.path()),
+                            NULL,
+                            DoneCallbackRaiseSIGKILL,
+                            NULL,
+                            true,
+                            -1);
+    CrashWithCallbacks(NULL, DoneCallbackReturnFalse, temp_dir.path());
+  }
+  ASSERT_NO_FATAL_FAILURE(WaitForProcessToTerminate(child, SIGKILL));
+}
+
+#endif  // !ADDRESS_SANITIZER
+
+const unsigned char kIllegalInstruction[] = {
+#if defined(__mips__)
+  // mfc2 zero,Impl - usually illegal in userspace.
+  0x48, 0x00, 0x00, 0x48
+#else
+  // This crashes with SIGILL on x86/x86-64/arm.
+  0xff, 0xff, 0xff, 0xff
+#endif
+};
+
+// Test that memory around the instruction pointer is written
+// to the dump as a MinidumpMemoryRegion.
+TEST(ExceptionHandlerTest, InstructionPointerMemory) {
+  AutoTempDir temp_dir;
+  int fds[2];
+  ASSERT_NE(pipe(fds), -1);
+
+  // These are defined here so the parent can use them to check the
+  // data from the minidump afterwards.
+  const uint32_t kMemorySize = 256;  // bytes
+  const int kOffset = kMemorySize / 2;
+
+  const pid_t child = fork();
+  if (child == 0) {
+    close(fds[0]);
+    ExceptionHandler handler(MinidumpDescriptor(temp_dir.path()), NULL,
+                             DoneCallback, reinterpret_cast<void*>(fds[1]),
+                             true, -1);
+    // Get some executable memory.
+    char* memory =
+      reinterpret_cast<char*>(mmap(NULL,
+                                   kMemorySize,
+                                   PROT_READ | PROT_WRITE | PROT_EXEC,
+                                   MAP_PRIVATE | MAP_ANON,
+                                   -1,
+                                   0));
+    if (!memory)
+      exit(0);
+
+    // Write some instructions that will crash. Put them in the middle
+    // of the block of memory, because the minidump should contain 128
+    // bytes on either side of the instruction pointer.
+    memcpy(memory + kOffset, kIllegalInstruction, sizeof(kIllegalInstruction));
+    FlushInstructionCache(memory, kMemorySize);
+
+    // Now execute the instructions, which should crash.
+    typedef void (*void_function)(void);
+    void_function memory_function =
+        reinterpret_cast<void_function>(memory + kOffset);
+    memory_function();
+  }
+  close(fds[1]);
+
+  ASSERT_NO_FATAL_FAILURE(WaitForProcessToTerminate(child, SIGILL));
+
+  string minidump_path;
+  ASSERT_NO_FATAL_FAILURE(ReadMinidumpPathFromPipe(fds[0], &minidump_path));
+
+  struct stat st;
+  ASSERT_EQ(0, stat(minidump_path.c_str(), &st));
+  ASSERT_GT(st.st_size, 0);
+
+  // Read the minidump. Locate the exception record and the
+  // memory list, and then ensure that there is a memory region
+  // in the memory list that covers the instruction pointer from
+  // the exception record.
+  Minidump minidump(minidump_path);
+  ASSERT_TRUE(minidump.Read());
+
+  MinidumpException* exception = minidump.GetException();
+  MinidumpMemoryList* memory_list = minidump.GetMemoryList();
+  ASSERT_TRUE(exception);
+  ASSERT_TRUE(memory_list);
+  ASSERT_LT(0U, memory_list->region_count());
+
+  MinidumpContext* context = exception->GetContext();
+  ASSERT_TRUE(context);
+
+  uint64_t instruction_pointer;
+  ASSERT_TRUE(context->GetInstructionPointer(&instruction_pointer));
+
+  MinidumpMemoryRegion* region =
+      memory_list->GetMemoryRegionForAddress(instruction_pointer);
+  ASSERT_TRUE(region);
+
+  EXPECT_EQ(kMemorySize, region->GetSize());
+  const uint8_t* bytes = region->GetMemory();
+  ASSERT_TRUE(bytes);
+
+  uint8_t prefix_bytes[kOffset];
+  uint8_t suffix_bytes[kMemorySize - kOffset - sizeof(kIllegalInstruction)];
+  memset(prefix_bytes, 0, sizeof(prefix_bytes));
+  memset(suffix_bytes, 0, sizeof(suffix_bytes));
+  EXPECT_TRUE(memcmp(bytes, prefix_bytes, sizeof(prefix_bytes)) == 0);
+  EXPECT_TRUE(memcmp(bytes + kOffset, kIllegalInstruction, 
+                     sizeof(kIllegalInstruction)) == 0);
+  EXPECT_TRUE(memcmp(bytes + kOffset + sizeof(kIllegalInstruction),
+                     suffix_bytes, sizeof(suffix_bytes)) == 0);
+
+  unlink(minidump_path.c_str());
+}
+
+// Test that the memory region around the instruction pointer is
+// bounded correctly on the low end.
+TEST(ExceptionHandlerTest, InstructionPointerMemoryMinBound) {
+  AutoTempDir temp_dir;
+  int fds[2];
+  ASSERT_NE(pipe(fds), -1);
+
+  // These are defined here so the parent can use them to check the
+  // data from the minidump afterwards.
+  const uint32_t kMemorySize = 256;  // bytes
+  const int kOffset = 0;
+
+  const pid_t child = fork();
+  if (child == 0) {
+    close(fds[0]);
+    ExceptionHandler handler(MinidumpDescriptor(temp_dir.path()), NULL,
+                             DoneCallback, reinterpret_cast<void*>(fds[1]),
+                             true, -1);
+    // Get some executable memory.
+    char* memory =
+        reinterpret_cast<char*>(mmap(NULL,
+                                     kMemorySize,
+                                     PROT_READ | PROT_WRITE | PROT_EXEC,
+                                     MAP_PRIVATE | MAP_ANON,
+                                     -1,
+                                     0));
+    if (!memory)
+      exit(0);
+
+    // Write some instructions that will crash. Put them in the middle
+    // of the block of memory, because the minidump should contain 128
+    // bytes on either side of the instruction pointer.
+    memcpy(memory + kOffset, kIllegalInstruction, sizeof(kIllegalInstruction));
+    FlushInstructionCache(memory, kMemorySize);
+
+    // Now execute the instructions, which should crash.
+    typedef void (*void_function)(void);
+    void_function memory_function =
+        reinterpret_cast<void_function>(memory + kOffset);
+    memory_function();
+  }
+  close(fds[1]);
+
+  ASSERT_NO_FATAL_FAILURE(WaitForProcessToTerminate(child, SIGILL));
+
+  string minidump_path;
+  ASSERT_NO_FATAL_FAILURE(ReadMinidumpPathFromPipe(fds[0], &minidump_path));
+
+  struct stat st;
+  ASSERT_EQ(0, stat(minidump_path.c_str(), &st));
+  ASSERT_GT(st.st_size, 0);
+
+  // Read the minidump. Locate the exception record and the
+  // memory list, and then ensure that there is a memory region
+  // in the memory list that covers the instruction pointer from
+  // the exception record.
+  Minidump minidump(minidump_path);
+  ASSERT_TRUE(minidump.Read());
+
+  MinidumpException* exception = minidump.GetException();
+  MinidumpMemoryList* memory_list = minidump.GetMemoryList();
+  ASSERT_TRUE(exception);
+  ASSERT_TRUE(memory_list);
+  ASSERT_LT(0U, memory_list->region_count());
+
+  MinidumpContext* context = exception->GetContext();
+  ASSERT_TRUE(context);
+
+  uint64_t instruction_pointer;
+  ASSERT_TRUE(context->GetInstructionPointer(&instruction_pointer));
+
+  MinidumpMemoryRegion* region =
+      memory_list->GetMemoryRegionForAddress(instruction_pointer);
+  ASSERT_TRUE(region);
+
+  EXPECT_EQ(kMemorySize / 2, region->GetSize());
+  const uint8_t* bytes = region->GetMemory();
+  ASSERT_TRUE(bytes);
+
+  uint8_t suffix_bytes[kMemorySize / 2 - sizeof(kIllegalInstruction)];
+  memset(suffix_bytes, 0, sizeof(suffix_bytes));
+  EXPECT_TRUE(memcmp(bytes + kOffset, kIllegalInstruction, 
+                     sizeof(kIllegalInstruction)) == 0);
+  EXPECT_TRUE(memcmp(bytes + kOffset + sizeof(kIllegalInstruction),
+                     suffix_bytes, sizeof(suffix_bytes)) == 0);
+  unlink(minidump_path.c_str());
+}
+
+// Test that the memory region around the instruction pointer is
+// bounded correctly on the high end.
+TEST(ExceptionHandlerTest, InstructionPointerMemoryMaxBound) {
+  AutoTempDir temp_dir;
+  int fds[2];
+  ASSERT_NE(pipe(fds), -1);
+
+  // These are defined here so the parent can use them to check the
+  // data from the minidump afterwards.
+  // Use 4k here because the OS will hand out a single page even
+  // if a smaller size is requested, and this test wants to
+  // test the upper bound of the memory range.
+  const uint32_t kMemorySize = 4096;  // bytes
+  const int kOffset = kMemorySize - sizeof(kIllegalInstruction);
+
+  const pid_t child = fork();
+  if (child == 0) {
+    close(fds[0]);
+    ExceptionHandler handler(MinidumpDescriptor(temp_dir.path()), NULL,
+                             DoneCallback, reinterpret_cast<void*>(fds[1]),
+                             true, -1);
+    // Get some executable memory.
+    char* memory =
+        reinterpret_cast<char*>(mmap(NULL,
+                                     kMemorySize,
+                                     PROT_READ | PROT_WRITE | PROT_EXEC,
+                                     MAP_PRIVATE | MAP_ANON,
+                                     -1,
+                                     0));
+    if (!memory)
+      exit(0);
+
+    // Write some instructions that will crash. Put them in the middle
+    // of the block of memory, because the minidump should contain 128
+    // bytes on either side of the instruction pointer.
+    memcpy(memory + kOffset, kIllegalInstruction, sizeof(kIllegalInstruction));
+    FlushInstructionCache(memory, kMemorySize);
+
+    // Now execute the instructions, which should crash.
+    typedef void (*void_function)(void);
+    void_function memory_function =
+        reinterpret_cast<void_function>(memory + kOffset);
+    memory_function();
+  }
+  close(fds[1]);
+
+  ASSERT_NO_FATAL_FAILURE(WaitForProcessToTerminate(child, SIGILL));
+
+  string minidump_path;
+  ASSERT_NO_FATAL_FAILURE(ReadMinidumpPathFromPipe(fds[0], &minidump_path));
+
+  struct stat st;
+  ASSERT_EQ(0, stat(minidump_path.c_str(), &st));
+  ASSERT_GT(st.st_size, 0);
+
+  // Read the minidump. Locate the exception record and the memory list, and
+  // then ensure that there is a memory region in the memory list that covers
+  // the instruction pointer from the exception record.
+  Minidump minidump(minidump_path);
+  ASSERT_TRUE(minidump.Read());
+
+  MinidumpException* exception = minidump.GetException();
+  MinidumpMemoryList* memory_list = minidump.GetMemoryList();
+  ASSERT_TRUE(exception);
+  ASSERT_TRUE(memory_list);
+  ASSERT_LT(0U, memory_list->region_count());
+
+  MinidumpContext* context = exception->GetContext();
+  ASSERT_TRUE(context);
+
+  uint64_t instruction_pointer;
+  ASSERT_TRUE(context->GetInstructionPointer(&instruction_pointer));
+
+  MinidumpMemoryRegion* region =
+      memory_list->GetMemoryRegionForAddress(instruction_pointer);
+  ASSERT_TRUE(region);
+
+  const size_t kPrefixSize = 128;  // bytes
+  EXPECT_EQ(kPrefixSize + sizeof(kIllegalInstruction), region->GetSize());
+  const uint8_t* bytes = region->GetMemory();
+  ASSERT_TRUE(bytes);
+
+  uint8_t prefix_bytes[kPrefixSize];
+  memset(prefix_bytes, 0, sizeof(prefix_bytes));
+  EXPECT_TRUE(memcmp(bytes, prefix_bytes, sizeof(prefix_bytes)) == 0);
+  EXPECT_TRUE(memcmp(bytes + kPrefixSize,
+                     kIllegalInstruction, sizeof(kIllegalInstruction)) == 0);
+
+  unlink(minidump_path.c_str());
+}
+
+#ifndef ADDRESS_SANITIZER
+
+// Ensure that an extra memory block doesn't get added when the instruction
+// pointer is not in mapped memory.
+TEST(ExceptionHandlerTest, InstructionPointerMemoryNullPointer) {
+  AutoTempDir temp_dir;
+  int fds[2];
+  ASSERT_NE(pipe(fds), -1);
+
+  const pid_t child = fork();
+  if (child == 0) {
+    close(fds[0]);
+    ExceptionHandler handler(MinidumpDescriptor(temp_dir.path()), NULL,
+                             DoneCallback, reinterpret_cast<void*>(fds[1]),
+                             true, -1);
+    // Try calling a NULL pointer.
+    typedef void (*void_function)(void);
+    void_function memory_function = reinterpret_cast<void_function>(NULL);
+    memory_function();
+  }
+  close(fds[1]);
+
+  ASSERT_NO_FATAL_FAILURE(WaitForProcessToTerminate(child, SIGSEGV));
+
+  string minidump_path;
+  ASSERT_NO_FATAL_FAILURE(ReadMinidumpPathFromPipe(fds[0], &minidump_path));
+
+  struct stat st;
+  ASSERT_EQ(0, stat(minidump_path.c_str(), &st));
+  ASSERT_GT(st.st_size, 0);
+
+  // Read the minidump. Locate the exception record and the
+  // memory list, and then ensure that there is a memory region
+  // in the memory list that covers the instruction pointer from
+  // the exception record.
+  Minidump minidump(minidump_path);
+  ASSERT_TRUE(minidump.Read());
+
+  MinidumpException* exception = minidump.GetException();
+  MinidumpMemoryList* memory_list = minidump.GetMemoryList();
+  ASSERT_TRUE(exception);
+  ASSERT_TRUE(memory_list);
+  ASSERT_EQ(static_cast<unsigned int>(1), memory_list->region_count());
+
+  unlink(minidump_path.c_str());
+}
+
+#endif  // !ADDRESS_SANITIZER
+
+// Test that anonymous memory maps can be annotated with names and IDs.
+TEST(ExceptionHandlerTest, ModuleInfo) {
+  // These are defined here so the parent can use them to check the
+  // data from the minidump afterwards.
+  const uint32_t kMemorySize = sysconf(_SC_PAGESIZE);
+  const char* kMemoryName = "a fake module";
+  const uint8_t kModuleGUID[sizeof(MDGUID)] = {
+    0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
+    0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF
+  };
+  char module_identifier_buffer[kGUIDStringSize];
+  FileID::ConvertIdentifierToString(kModuleGUID,
+                                    module_identifier_buffer,
+                                    sizeof(module_identifier_buffer));
+  string module_identifier(module_identifier_buffer);
+  // Strip out dashes
+  size_t pos;
+  while ((pos = module_identifier.find('-')) != string::npos) {
+    module_identifier.erase(pos, 1);
+  }
+  // And append a zero, because module IDs include an "age" field
+  // which is always zero on Linux.
+  module_identifier += "0";
+
+  // Get some memory.
+  char* memory =
+      reinterpret_cast<char*>(mmap(NULL,
+                                   kMemorySize,
+                                   PROT_READ | PROT_WRITE,
+                                   MAP_PRIVATE | MAP_ANON,
+                                   -1,
+                                   0));
+  const uintptr_t kMemoryAddress = reinterpret_cast<uintptr_t>(memory);
+  ASSERT_TRUE(memory);
+
+  AutoTempDir temp_dir;
+  ExceptionHandler handler(
+      MinidumpDescriptor(temp_dir.path()), NULL, NULL, NULL, true, -1);
+
+  // Add info about the anonymous memory mapping.
+  handler.AddMappingInfo(kMemoryName,
+                         kModuleGUID,
+                         kMemoryAddress,
+                         kMemorySize,
+                         0);
+  ASSERT_TRUE(handler.WriteMinidump());
+
+  const MinidumpDescriptor& minidump_desc = handler.minidump_descriptor();
+  // Read the minidump. Load the module list, and ensure that the mmap'ed
+  // |memory| is listed with the given module name and debug ID.
+  Minidump minidump(minidump_desc.path());
+  ASSERT_TRUE(minidump.Read());
+
+  MinidumpModuleList* module_list = minidump.GetModuleList();
+  ASSERT_TRUE(module_list);
+  const MinidumpModule* module =
+      module_list->GetModuleForAddress(kMemoryAddress);
+  ASSERT_TRUE(module);
+
+  EXPECT_EQ(kMemoryAddress, module->base_address());
+  EXPECT_EQ(kMemorySize, module->size());
+  EXPECT_EQ(kMemoryName, module->code_file());
+  EXPECT_EQ(module_identifier, module->debug_identifier());
+
+  unlink(minidump_desc.path());
+}
+
+static const unsigned kControlMsgSize =
+    CMSG_SPACE(sizeof(int)) + CMSG_SPACE(sizeof(struct ucred));
+
+static bool
+CrashHandler(const void* crash_context, size_t crash_context_size,
+             void* context) {
+  const int fd = (intptr_t) context;
+  int fds[2];
+  if (pipe(fds) == -1) {
+    // There doesn't seem to be any way to reliably handle
+    // this failure without the parent process hanging
+    // At least make sure that this process doesn't access
+    // unexpected file descriptors
+    fds[0] = -1;
+    fds[1] = -1;
+  }
+  struct kernel_msghdr msg = {0};
+  struct kernel_iovec iov;
+  iov.iov_base = const_cast<void*>(crash_context);
+  iov.iov_len = crash_context_size;
+  msg.msg_iov = &iov;
+  msg.msg_iovlen = 1;
+  char cmsg[kControlMsgSize];
+  memset(cmsg, 0, kControlMsgSize);
+  msg.msg_control = cmsg;
+  msg.msg_controllen = sizeof(cmsg);
+
+  struct cmsghdr *hdr = CMSG_FIRSTHDR(&msg);
+  hdr->cmsg_level = SOL_SOCKET;
+  hdr->cmsg_type = SCM_RIGHTS;
+  hdr->cmsg_len = CMSG_LEN(sizeof(int));
+  *((int*) CMSG_DATA(hdr)) = fds[1];
+  hdr = CMSG_NXTHDR((struct msghdr*) &msg, hdr);
+  hdr->cmsg_level = SOL_SOCKET;
+  hdr->cmsg_type = SCM_CREDENTIALS;
+  hdr->cmsg_len = CMSG_LEN(sizeof(struct ucred));
+  struct ucred *cred = reinterpret_cast<struct ucred*>(CMSG_DATA(hdr));
+  cred->uid = getuid();
+  cred->gid = getgid();
+  cred->pid = getpid();
+
+  ssize_t ret = HANDLE_EINTR(sys_sendmsg(fd, &msg, 0));
+  sys_close(fds[1]);
+  if (ret <= 0)
+    return false;
+
+  char b;
+  IGNORE_RET(HANDLE_EINTR(sys_read(fds[0], &b, 1)));
+
+  return true;
+}
+
+#ifndef ADDRESS_SANITIZER
+
+TEST(ExceptionHandlerTest, ExternalDumper) {
+  int fds[2];
+  ASSERT_NE(socketpair(AF_UNIX, SOCK_DGRAM, 0, fds), -1);
+  static const int on = 1;
+  setsockopt(fds[0], SOL_SOCKET, SO_PASSCRED, &on, sizeof(on));
+  setsockopt(fds[1], SOL_SOCKET, SO_PASSCRED, &on, sizeof(on));
+
+  const pid_t child = fork();
+  if (child == 0) {
+    close(fds[0]);
+    ExceptionHandler handler(MinidumpDescriptor("/tmp1"), NULL, NULL,
+                             reinterpret_cast<void*>(fds[1]), true, -1);
+    handler.set_crash_handler(CrashHandler);
+    DoNullPointerDereference();
+  }
+  close(fds[1]);
+  struct msghdr msg = {0};
+  struct iovec iov;
+  static const unsigned kCrashContextSize =
+      sizeof(ExceptionHandler::CrashContext);
+  char context[kCrashContextSize];
+  char control[kControlMsgSize];
+  iov.iov_base = context;
+  iov.iov_len = kCrashContextSize;
+  msg.msg_iov = &iov;
+  msg.msg_iovlen = 1;
+  msg.msg_control = control;
+  msg.msg_controllen = kControlMsgSize;
+
+  const ssize_t n = HANDLE_EINTR(recvmsg(fds[0], &msg, 0));
+  ASSERT_EQ(static_cast<ssize_t>(kCrashContextSize), n);
+  ASSERT_EQ(kControlMsgSize, msg.msg_controllen);
+  ASSERT_EQ(static_cast<__typeof__(msg.msg_flags)>(0), msg.msg_flags);
+  ASSERT_EQ(0, close(fds[0]));
+
+  pid_t crashing_pid = -1;
+  int signal_fd = -1;
+  for (struct cmsghdr *hdr = CMSG_FIRSTHDR(&msg); hdr;
+       hdr = CMSG_NXTHDR(&msg, hdr)) {
+    if (hdr->cmsg_level != SOL_SOCKET)
+      continue;
+    if (hdr->cmsg_type == SCM_RIGHTS) {
+      const unsigned len = hdr->cmsg_len -
+          (((uint8_t*)CMSG_DATA(hdr)) - (uint8_t*)hdr);
+      ASSERT_EQ(sizeof(int), len);
+      signal_fd = *(reinterpret_cast<int*>(CMSG_DATA(hdr)));
+    } else if (hdr->cmsg_type == SCM_CREDENTIALS) {
+      const struct ucred *cred =
+          reinterpret_cast<struct ucred*>(CMSG_DATA(hdr));
+      crashing_pid = cred->pid;
+    }
+  }
+
+  ASSERT_NE(crashing_pid, -1);
+  ASSERT_NE(signal_fd, -1);
+
+  AutoTempDir temp_dir;
+  string templ = temp_dir.path() + "/exception-handler-unittest";
+  ASSERT_TRUE(WriteMinidump(templ.c_str(), crashing_pid, context,
+                            kCrashContextSize));
+  static const char b = 0;
+  ASSERT_EQ(1, (HANDLE_EINTR(write(signal_fd, &b, 1))));
+  ASSERT_EQ(0, close(signal_fd));
+
+  ASSERT_NO_FATAL_FAILURE(WaitForProcessToTerminate(child, SIGSEGV));
+
+  struct stat st;
+  ASSERT_EQ(0, stat(templ.c_str(), &st));
+  ASSERT_GT(st.st_size, 0);
+  unlink(templ.c_str());
+}
+
+#endif  // !ADDRESS_SANITIZER
+
+TEST(ExceptionHandlerTest, WriteMinidumpExceptionStream) {
+  AutoTempDir temp_dir;
+  ExceptionHandler handler(MinidumpDescriptor(temp_dir.path()), NULL, NULL,
+                           NULL, false, -1);
+  ASSERT_TRUE(handler.WriteMinidump());
+
+  string minidump_path = handler.minidump_descriptor().path();
+
+  // Read the minidump and check the exception stream.
+  Minidump minidump(minidump_path);
+  ASSERT_TRUE(minidump.Read());
+  MinidumpException* exception = minidump.GetException();
+  ASSERT_TRUE(exception);
+  const MDRawExceptionStream* raw = exception->exception();
+  ASSERT_TRUE(raw);
+  EXPECT_EQ(MD_EXCEPTION_CODE_LIN_DUMP_REQUESTED,
+            raw->exception_record.exception_code);
+}
+
+TEST(ExceptionHandlerTest, GenerateMultipleDumpsWithFD) {
+  AutoTempDir temp_dir;
+  string path;
+  const int fd = CreateTMPFile(temp_dir.path(), &path);
+  ExceptionHandler handler(MinidumpDescriptor(fd), NULL, NULL, NULL, false, -1);
+  ASSERT_TRUE(handler.WriteMinidump());
+  // Check by the size of the data written to the FD that a minidump was
+  // generated.
+  off_t size = lseek(fd, 0, SEEK_CUR);
+  ASSERT_GT(size, 0);
+
+  // Generate another minidump.
+  ASSERT_TRUE(handler.WriteMinidump());
+  size = lseek(fd, 0, SEEK_CUR);
+  ASSERT_GT(size, 0);
+}
+
+TEST(ExceptionHandlerTest, GenerateMultipleDumpsWithPath) {
+  AutoTempDir temp_dir;
+  ExceptionHandler handler(MinidumpDescriptor(temp_dir.path()), NULL, NULL,
+                           NULL, false, -1);
+  ASSERT_TRUE(handler.WriteMinidump());
+
+  const MinidumpDescriptor& minidump_1 = handler.minidump_descriptor();
+  struct stat st;
+  ASSERT_EQ(0, stat(minidump_1.path(), &st));
+  ASSERT_GT(st.st_size, 0);
+  string minidump_1_path(minidump_1.path());
+  // Check it is a valid minidump.
+  Minidump minidump1(minidump_1_path);
+  ASSERT_TRUE(minidump1.Read());
+  unlink(minidump_1.path());
+
+  // Generate another minidump, it should go to a different file.
+  ASSERT_TRUE(handler.WriteMinidump());
+  const MinidumpDescriptor& minidump_2 = handler.minidump_descriptor();
+  ASSERT_EQ(0, stat(minidump_2.path(), &st));
+  ASSERT_GT(st.st_size, 0);
+  string minidump_2_path(minidump_2.path());
+  // Check it is a valid minidump.
+  Minidump minidump2(minidump_2_path);
+  ASSERT_TRUE(minidump2.Read());
+  unlink(minidump_2.path());
+
+  // 2 distinct files should be produced.
+  ASSERT_STRNE(minidump_1_path.c_str(), minidump_2_path.c_str());
+}
+
+// Test that an additional memory region can be added to the minidump.
+TEST(ExceptionHandlerTest, AdditionalMemory) {
+  const uint32_t kMemorySize = sysconf(_SC_PAGESIZE);
+
+  // Get some heap memory.
+  uint8_t* memory = new uint8_t[kMemorySize];
+  const uintptr_t kMemoryAddress = reinterpret_cast<uintptr_t>(memory);
+  ASSERT_TRUE(memory);
+
+  // Stick some data into the memory so the contents can be verified.
+  for (uint32_t i = 0; i < kMemorySize; ++i) {
+    memory[i] = i % 255;
+  }
+
+  AutoTempDir temp_dir;
+  ExceptionHandler handler(
+      MinidumpDescriptor(temp_dir.path()), NULL, NULL, NULL, true, -1);
+
+  // Add the memory region to the list of memory to be included.
+  handler.RegisterAppMemory(memory, kMemorySize);
+  handler.WriteMinidump();
+
+  const MinidumpDescriptor& minidump_desc = handler.minidump_descriptor();
+
+  // Read the minidump. Ensure that the memory region is present
+  Minidump minidump(minidump_desc.path());
+  ASSERT_TRUE(minidump.Read());
+
+  MinidumpMemoryList* dump_memory_list = minidump.GetMemoryList();
+  ASSERT_TRUE(dump_memory_list);
+  const MinidumpMemoryRegion* region =
+    dump_memory_list->GetMemoryRegionForAddress(kMemoryAddress);
+  ASSERT_TRUE(region);
+
+  EXPECT_EQ(kMemoryAddress, region->GetBase());
+  EXPECT_EQ(kMemorySize, region->GetSize());
+
+  // Verify memory contents.
+  EXPECT_EQ(0, memcmp(region->GetMemory(), memory, kMemorySize));
+
+  delete[] memory;
+}
+
+// Test that a memory region that was previously registered
+// can be unregistered.
+TEST(ExceptionHandlerTest, AdditionalMemoryRemove) {
+  const uint32_t kMemorySize = sysconf(_SC_PAGESIZE);
+
+  // Get some heap memory.
+  uint8_t* memory = new uint8_t[kMemorySize];
+  const uintptr_t kMemoryAddress = reinterpret_cast<uintptr_t>(memory);
+  ASSERT_TRUE(memory);
+
+  AutoTempDir temp_dir;
+  ExceptionHandler handler(
+      MinidumpDescriptor(temp_dir.path()), NULL, NULL, NULL, true, -1);
+
+  // Add the memory region to the list of memory to be included.
+  handler.RegisterAppMemory(memory, kMemorySize);
+
+  // ...and then remove it
+  handler.UnregisterAppMemory(memory);
+  handler.WriteMinidump();
+
+  const MinidumpDescriptor& minidump_desc = handler.minidump_descriptor();
+
+  // Read the minidump. Ensure that the memory region is not present.
+  Minidump minidump(minidump_desc.path());
+  ASSERT_TRUE(minidump.Read());
+
+  MinidumpMemoryList* dump_memory_list = minidump.GetMemoryList();
+  ASSERT_TRUE(dump_memory_list);
+  const MinidumpMemoryRegion* region =
+    dump_memory_list->GetMemoryRegionForAddress(kMemoryAddress);
+  EXPECT_FALSE(region);
+
+  delete[] memory;
+}
+
+static bool SimpleCallback(const MinidumpDescriptor& descriptor,
+                           void* context,
+                           bool succeeded) {
+  string* filename = reinterpret_cast<string*>(context);
+  *filename = descriptor.path();
+  return true;
+}
+
+TEST(ExceptionHandlerTest, WriteMinidumpForChild) {
+  int fds[2];
+  ASSERT_NE(-1, pipe(fds));
+
+  const pid_t child = fork();
+  if (child == 0) {
+    close(fds[1]);
+    char b;
+    HANDLE_EINTR(read(fds[0], &b, sizeof(b)));
+    close(fds[0]);
+    syscall(__NR_exit);
+  }
+  close(fds[0]);
+
+  AutoTempDir temp_dir;
+  string minidump_filename;
+  ASSERT_TRUE(
+    ExceptionHandler::WriteMinidumpForChild(child, child,
+                                            temp_dir.path(), SimpleCallback,
+                                            (void*)&minidump_filename));
+
+  Minidump minidump(minidump_filename);
+  ASSERT_TRUE(minidump.Read());
+  // Check that the crashing thread is the main thread of |child|
+  MinidumpException* exception = minidump.GetException();
+  ASSERT_TRUE(exception);
+  uint32_t thread_id;
+  ASSERT_TRUE(exception->GetThreadID(&thread_id));
+  EXPECT_EQ(child, static_cast<int32_t>(thread_id));
+
+  const MDRawExceptionStream* raw = exception->exception();
+  ASSERT_TRUE(raw);
+  EXPECT_EQ(MD_EXCEPTION_CODE_LIN_DUMP_REQUESTED,
+            raw->exception_record.exception_code);
+
+  close(fds[1]);
+  unlink(minidump_filename.c_str());
+}
diff --git a/google-breakpad/src/client/linux/handler/minidump_descriptor.cc b/google-breakpad/src/client/linux/handler/minidump_descriptor.cc
new file mode 100644
index 0000000..8c68bde
--- /dev/null
+++ b/google-breakpad/src/client/linux/handler/minidump_descriptor.cc
@@ -0,0 +1,85 @@
+// Copyright (c) 2012 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include <stdio.h>
+
+#include "client/linux/handler/minidump_descriptor.h"
+
+#include "common/linux/guid_creator.h"
+
+namespace google_breakpad {
+
+//static
+const MinidumpDescriptor::MicrodumpOnConsole
+    MinidumpDescriptor::kMicrodumpOnConsole = {};
+
+MinidumpDescriptor::MinidumpDescriptor(const MinidumpDescriptor& descriptor)
+    : mode_(descriptor.mode_),
+      fd_(descriptor.fd_),
+      directory_(descriptor.directory_),
+      c_path_(NULL),
+      size_limit_(descriptor.size_limit_) {
+  // The copy constructor is not allowed to be called on a MinidumpDescriptor
+  // with a valid path_, as getting its c_path_ would require the heap which
+  // can cause problems in compromised environments.
+  assert(descriptor.path_.empty());
+}
+
+MinidumpDescriptor& MinidumpDescriptor::operator=(
+    const MinidumpDescriptor& descriptor) {
+  assert(descriptor.path_.empty());
+
+  mode_ = descriptor.mode_;
+  fd_ = descriptor.fd_;
+  directory_ = descriptor.directory_;
+  path_.clear();
+  if (c_path_) {
+    // This descriptor already had a path set, so generate a new one.
+    c_path_ = NULL;
+    UpdatePath();
+  }
+  size_limit_ = descriptor.size_limit_;
+  return *this;
+}
+
+void MinidumpDescriptor::UpdatePath() {
+  assert(mode_ == kWriteMinidumpToFile && !directory_.empty());
+
+  GUID guid;
+  char guid_str[kGUIDStringLength + 1];
+  if (!CreateGUID(&guid) || !GUIDToString(&guid, guid_str, sizeof(guid_str))) {
+    assert(false);
+  }
+
+  path_.clear();
+  path_ = directory_ + "/" + guid_str + ".dmp";
+  c_path_ = path_.c_str();
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/client/linux/handler/minidump_descriptor.h b/google-breakpad/src/client/linux/handler/minidump_descriptor.h
new file mode 100644
index 0000000..ed656ce
--- /dev/null
+++ b/google-breakpad/src/client/linux/handler/minidump_descriptor.h
@@ -0,0 +1,129 @@
+// Copyright (c) 2012 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef CLIENT_LINUX_HANDLER_MINIDUMP_DESCRIPTOR_H_
+#define CLIENT_LINUX_HANDLER_MINIDUMP_DESCRIPTOR_H_
+
+#include <assert.h>
+#include <sys/types.h>
+
+#include <string>
+
+#include "common/using_std_string.h"
+
+// This class describes how a crash dump should be generated, either:
+// - Writing a full minidump to a file in a given directory (the actual path,
+//   inside the directory, is determined by this class).
+// - Writing a full minidump to a given fd.
+// - Writing a reduced microdump to the console (logcat on Android).
+namespace google_breakpad {
+
+class MinidumpDescriptor {
+ public:
+  struct MicrodumpOnConsole {};
+  static const MicrodumpOnConsole kMicrodumpOnConsole;
+
+  MinidumpDescriptor() : mode_(kUninitialized),
+                         fd_(-1),
+                         size_limit_(-1) {}
+
+  explicit MinidumpDescriptor(const string& directory)
+      : mode_(kWriteMinidumpToFile),
+        fd_(-1),
+        directory_(directory),
+        c_path_(NULL),
+        size_limit_(-1) {
+    assert(!directory.empty());
+  }
+
+  explicit MinidumpDescriptor(int fd)
+      : mode_(kWriteMinidumpToFd),
+        fd_(fd),
+        c_path_(NULL),
+        size_limit_(-1) {
+    assert(fd != -1);
+  }
+
+  explicit MinidumpDescriptor(const MicrodumpOnConsole&)
+      : mode_(kWriteMicrodumpToConsole),
+        fd_(-1),
+        size_limit_(-1) {}
+
+  explicit MinidumpDescriptor(const MinidumpDescriptor& descriptor);
+  MinidumpDescriptor& operator=(const MinidumpDescriptor& descriptor);
+
+  static MinidumpDescriptor getMicrodumpDescriptor();
+
+  bool IsFD() const { return mode_ == kWriteMinidumpToFd; }
+
+  int fd() const { return fd_; }
+
+  string directory() const { return directory_; }
+
+  const char* path() const { return c_path_; }
+
+  bool IsMicrodumpOnConsole() const {
+    return mode_ == kWriteMicrodumpToConsole;
+  }
+
+  // Updates the path so it is unique.
+  // Should be called from a normal context: this methods uses the heap.
+  void UpdatePath();
+
+  off_t size_limit() const { return size_limit_; }
+  void set_size_limit(off_t limit) { size_limit_ = limit; }
+
+ private:
+  enum DumpMode {
+    kUninitialized = 0,
+    kWriteMinidumpToFile,
+    kWriteMinidumpToFd,
+    kWriteMicrodumpToConsole
+  };
+
+  // Specifies the dump mode (see DumpMode).
+  DumpMode mode_;
+
+  // The file descriptor where the minidump is generated.
+  int fd_;
+
+  // The directory where the minidump should be generated.
+  string directory_;
+  // The full path to the generated minidump.
+  string path_;
+  // The C string of |path_|. Precomputed so it can be access from a compromised
+  // context.
+  const char* c_path_;
+
+  off_t size_limit_;
+};
+
+}  // namespace google_breakpad
+
+#endif  // CLIENT_LINUX_HANDLER_MINIDUMP_DESCRIPTOR_H_
diff --git a/google-breakpad/src/client/linux/log/log.cc b/google-breakpad/src/client/linux/log/log.cc
new file mode 100644
index 0000000..1863591
--- /dev/null
+++ b/google-breakpad/src/client/linux/log/log.cc
@@ -0,0 +1,48 @@
+// Copyright (c) 2012 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include "client/linux/log/log.h"
+
+#if defined(__ANDROID__)
+#include <android/log.h>
+#else
+#include "third_party/lss/linux_syscall_support.h"
+#endif
+
+namespace logger {
+
+int write(const char* buf, size_t nbytes) {
+#if defined(__ANDROID__)
+  return __android_log_write(ANDROID_LOG_WARN, "google-breakpad", buf);
+#else
+  return sys_write(2, buf, nbytes);
+#endif
+}
+
+}  // namespace logger
diff --git a/google-breakpad/src/client/linux/log/log.h b/google-breakpad/src/client/linux/log/log.h
new file mode 100644
index 0000000..a50e30d
--- /dev/null
+++ b/google-breakpad/src/client/linux/log/log.h
@@ -0,0 +1,41 @@
+// Copyright (c) 2012, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef CLIENT_LINUX_LOG_LOG_H_
+#define CLIENT_LINUX_LOG_LOG_H_
+
+#include <stddef.h>
+
+namespace logger {
+
+int write(const char* buf, size_t nbytes);
+
+}  // namespace logger
+
+#endif  // CLIENT_LINUX_LOG_LOG_H_
diff --git a/google-breakpad/src/client/linux/microdump_writer/microdump_writer.cc b/google-breakpad/src/client/linux/microdump_writer/microdump_writer.cc
new file mode 100644
index 0000000..e14f975
--- /dev/null
+++ b/google-breakpad/src/client/linux/microdump_writer/microdump_writer.cc
@@ -0,0 +1,397 @@
+// Copyright (c) 2014, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// This translation unit generates microdumps into the console (logcat on
+// Android). See crbug.com/410294 for more info and design docs.
+
+#include "client/linux/microdump_writer/microdump_writer.h"
+
+#include <sys/utsname.h>
+
+#include "client/linux/dump_writer_common/seccomp_unwinder.h"
+#include "client/linux/dump_writer_common/thread_info.h"
+#include "client/linux/dump_writer_common/ucontext_reader.h"
+#include "client/linux/handler/exception_handler.h"
+#include "client/linux/log/log.h"
+#include "client/linux/minidump_writer/linux_ptrace_dumper.h"
+#include "common/linux/linux_libc_support.h"
+
+namespace {
+
+using google_breakpad::ExceptionHandler;
+using google_breakpad::LinuxDumper;
+using google_breakpad::LinuxPtraceDumper;
+using google_breakpad::MappingInfo;
+using google_breakpad::MappingList;
+using google_breakpad::RawContextCPU;
+using google_breakpad::SeccompUnwinder;
+using google_breakpad::ThreadInfo;
+using google_breakpad::UContextReader;
+
+const size_t kLineBufferSize = 2048;
+
+class MicrodumpWriter {
+ public:
+  MicrodumpWriter(const ExceptionHandler::CrashContext* context,
+                  const MappingList& mappings,
+                  LinuxDumper* dumper)
+      : ucontext_(context ? &context->context : NULL),
+#if !defined(__ARM_EABI__) && !defined(__mips__)
+        float_state_(context ? &context->float_state : NULL),
+#endif
+        dumper_(dumper),
+        mapping_list_(mappings),
+        log_line_(NULL) {
+    log_line_ = reinterpret_cast<char*>(Alloc(kLineBufferSize));
+    if (log_line_)
+      log_line_[0] = '\0';  // Clear out the log line buffer.
+  }
+
+  ~MicrodumpWriter() { dumper_->ThreadsResume(); }
+
+  bool Init() {
+    // In the exceptional case where the system was out of memory and there
+    // wasn't even room to allocate the line buffer, bail out. There is nothing
+    // useful we can possibly achieve without the ability to Log. At least let's
+    // try to not crash.
+    if (!dumper_->Init() || !log_line_)
+      return false;
+    return dumper_->ThreadsSuspend();
+  }
+
+  bool Dump() {
+    bool success;
+    LogLine("-----BEGIN BREAKPAD MICRODUMP-----");
+    success = DumpOSInformation();
+    if (success)
+      success = DumpCrashingThread();
+    if (success)
+      success = DumpMappings();
+    LogLine("-----END BREAKPAD MICRODUMP-----");
+    dumper_->ThreadsResume();
+    return success;
+  }
+
+ private:
+  // Writes one line to the system log.
+  void LogLine(const char* msg) {
+    logger::write(msg, my_strlen(msg));
+#if !defined(__ANDROID__)
+    logger::write("\n", 1);  // Android logger appends the \n. Linux's doesn't.
+#endif
+  }
+
+  // Stages the given string in the current line buffer.
+  void LogAppend(const char* str) {
+    my_strlcat(log_line_, str, kLineBufferSize);
+  }
+
+  // As above (required to take precedence over template specialization below).
+  void LogAppend(char* str) {
+    LogAppend(const_cast<const char*>(str));
+  }
+
+  // Stages the hex repr. of the given int type in the current line buffer.
+  template<typename T>
+  void LogAppend(T value) {
+    // Make enough room to hex encode the largest int type + NUL.
+    static const char HEX[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
+                               'A', 'B', 'C', 'D', 'E', 'F'};
+    char hexstr[sizeof(T) * 2 + 1];
+    for (int i = sizeof(T) * 2 - 1; i >= 0; --i, value >>= 4)
+      hexstr[i] = HEX[static_cast<uint8_t>(value) & 0x0F];
+    hexstr[sizeof(T) * 2] = '\0';
+    LogAppend(hexstr);
+  }
+
+  // Stages the buffer content hex-encoded in the current line buffer.
+  void LogAppend(const void* buf, size_t length) {
+    const uint8_t* ptr = reinterpret_cast<const uint8_t*>(buf);
+    for (size_t i = 0; i < length; ++i, ++ptr)
+      LogAppend(*ptr);
+  }
+
+  // Writes out the current line buffer on the system log.
+  void LogCommitLine() {
+    LogLine(log_line_);
+    my_strlcpy(log_line_, "", kLineBufferSize);
+  }
+
+  bool DumpOSInformation() {
+    struct utsname uts;
+    if (uname(&uts))
+      return false;
+    const uint8_t n_cpus = static_cast<uint8_t>(sysconf(_SC_NPROCESSORS_CONF));
+
+#if defined(__ANDROID__)
+    const char kOSId[] = "A";
+#else
+    const char kOSId[] = "L";
+#endif
+
+// We cannot depend on uts.machine. On multiarch devices it always returns the
+// primary arch, not the one that match the executable being run.
+#if defined(__aarch64__)
+    const char kArch[] = "arm64";
+#elif defined(__ARMEL__)
+    const char kArch[] = "arm";
+#elif defined(__x86_64__)
+    const char kArch[] = "x86_64";
+#elif defined(__i386__)
+    const char kArch[] = "x86";
+#elif defined(__mips__)
+    const char kArch[] = "mips";
+#else
+#error "This code has not been ported to your platform yet"
+#endif
+
+    LogAppend("O ");
+    LogAppend(kOSId);
+    LogAppend(" ");
+    LogAppend(kArch);
+    LogAppend(" ");
+    LogAppend(n_cpus);
+    LogAppend(" ");
+    LogAppend(uts.machine);
+    LogAppend(" ");
+    LogAppend(uts.release);
+    LogAppend(" ");
+    LogAppend(uts.version);
+    LogCommitLine();
+    return true;
+  }
+
+  bool DumpThreadStack(uint32_t thread_id,
+                       uintptr_t stack_pointer,
+                       int max_stack_len,
+                       uint8_t** stack_copy) {
+    *stack_copy = NULL;
+    const void* stack;
+    size_t stack_len;
+
+    if (!dumper_->GetStackInfo(&stack, &stack_len, stack_pointer)) {
+      // The stack pointer might not be available. In this case we don't hard
+      // fail, just produce a (almost useless) microdump w/o a stack section.
+      return true;
+    }
+
+    LogAppend("S 0 ");
+    LogAppend(stack_pointer);
+    LogAppend(" ");
+    LogAppend(reinterpret_cast<uintptr_t>(stack));
+    LogAppend(" ");
+    LogAppend(stack_len);
+    LogCommitLine();
+
+    if (max_stack_len >= 0 &&
+        stack_len > static_cast<unsigned int>(max_stack_len)) {
+      stack_len = max_stack_len;
+    }
+
+    *stack_copy = reinterpret_cast<uint8_t*>(Alloc(stack_len));
+    dumper_->CopyFromProcess(*stack_copy, thread_id, stack, stack_len);
+
+    // Dump the content of the stack, splicing it into chunks which size is
+    // compatible with the max logcat line size (see LOGGER_ENTRY_MAX_PAYLOAD).
+    const size_t STACK_DUMP_CHUNK_SIZE = 384;
+    for (size_t stack_off = 0; stack_off < stack_len;
+         stack_off += STACK_DUMP_CHUNK_SIZE) {
+      LogAppend("S ");
+      LogAppend(reinterpret_cast<uintptr_t>(stack) + stack_off);
+      LogAppend(" ");
+      LogAppend(*stack_copy + stack_off,
+                std::min(STACK_DUMP_CHUNK_SIZE, stack_len - stack_off));
+      LogCommitLine();
+    }
+    return true;
+  }
+
+  // Write information about the crashing thread.
+  bool DumpCrashingThread() {
+    const unsigned num_threads = dumper_->threads().size();
+
+    for (unsigned i = 0; i < num_threads; ++i) {
+      MDRawThread thread;
+      my_memset(&thread, 0, sizeof(thread));
+      thread.thread_id = dumper_->threads()[i];
+
+      // Dump only the crashing thread.
+      if (static_cast<pid_t>(thread.thread_id) != dumper_->crash_thread())
+        continue;
+
+      assert(ucontext_);
+      assert(!dumper_->IsPostMortem());
+
+      uint8_t* stack_copy;
+      const uintptr_t stack_ptr = UContextReader::GetStackPointer(ucontext_);
+      if (!DumpThreadStack(thread.thread_id, stack_ptr, -1, &stack_copy))
+        return false;
+
+      RawContextCPU cpu;
+      my_memset(&cpu, 0, sizeof(RawContextCPU));
+#if !defined(__ARM_EABI__) && !defined(__mips__)
+      UContextReader::FillCPUContext(&cpu, ucontext_, float_state_);
+#else
+      UContextReader::FillCPUContext(&cpu, ucontext_);
+#endif
+      if (stack_copy)
+        SeccompUnwinder::PopSeccompStackFrame(&cpu, thread, stack_copy);
+      DumpCPUState(&cpu);
+    }
+    return true;
+  }
+
+  void DumpCPUState(RawContextCPU* cpu) {
+    LogAppend("C ");
+    LogAppend(cpu, sizeof(*cpu));
+    LogCommitLine();
+  }
+
+  // If there is caller-provided information about this mapping
+  // in the mapping_list_ list, return true. Otherwise, return false.
+  bool HaveMappingInfo(const MappingInfo& mapping) {
+    for (MappingList::const_iterator iter = mapping_list_.begin();
+         iter != mapping_list_.end();
+         ++iter) {
+      // Ignore any mappings that are wholly contained within
+      // mappings in the mapping_info_ list.
+      if (mapping.start_addr >= iter->first.start_addr &&
+          (mapping.start_addr + mapping.size) <=
+              (iter->first.start_addr + iter->first.size)) {
+        return true;
+      }
+    }
+    return false;
+  }
+
+  // Dump information about the provided |mapping|. If |identifier| is non-NULL,
+  // use it instead of calculating a file ID from the mapping.
+  void DumpModule(const MappingInfo& mapping,
+                  bool member,
+                  unsigned int mapping_id,
+                  const uint8_t* identifier) {
+    MDGUID module_identifier;
+    if (identifier) {
+      // GUID was provided by caller.
+      my_memcpy(&module_identifier, identifier, sizeof(MDGUID));
+    } else {
+      dumper_->ElfFileIdentifierForMapping(
+          mapping,
+          member,
+          mapping_id,
+          reinterpret_cast<uint8_t*>(&module_identifier));
+    }
+
+    char file_name[NAME_MAX];
+    char file_path[NAME_MAX];
+    LinuxDumper::GetMappingEffectiveNameAndPath(
+        mapping, file_path, sizeof(file_path), file_name, sizeof(file_name));
+
+    LogAppend("M ");
+    LogAppend(static_cast<uintptr_t>(mapping.start_addr));
+    LogAppend(" ");
+    LogAppend(mapping.offset);
+    LogAppend(" ");
+    LogAppend(mapping.size);
+    LogAppend(" ");
+    LogAppend(module_identifier.data1);
+    LogAppend(module_identifier.data2);
+    LogAppend(module_identifier.data3);
+    LogAppend(module_identifier.data4[0]);
+    LogAppend(module_identifier.data4[1]);
+    LogAppend(module_identifier.data4[2]);
+    LogAppend(module_identifier.data4[3]);
+    LogAppend(module_identifier.data4[4]);
+    LogAppend(module_identifier.data4[5]);
+    LogAppend(module_identifier.data4[6]);
+    LogAppend(module_identifier.data4[7]);
+    LogAppend("0 ");  // Age is always 0 on Linux.
+    LogAppend(file_name);
+    LogCommitLine();
+  }
+
+  // Write information about the mappings in effect.
+  bool DumpMappings() {
+    // First write all the mappings from the dumper
+    for (unsigned i = 0; i < dumper_->mappings().size(); ++i) {
+      const MappingInfo& mapping = *dumper_->mappings()[i];
+      if (mapping.name[0] == 0 ||  // only want modules with filenames.
+          !mapping.exec ||  // only want executable mappings.
+          mapping.size < 4096 || // too small to get a signature for.
+          HaveMappingInfo(mapping)) {
+        continue;
+      }
+
+      DumpModule(mapping, true, i, NULL);
+    }
+    // Next write all the mappings provided by the caller
+    for (MappingList::const_iterator iter = mapping_list_.begin();
+         iter != mapping_list_.end();
+         ++iter) {
+      DumpModule(iter->first, false, 0, iter->second);
+    }
+    return true;
+  }
+
+  void* Alloc(unsigned bytes) { return dumper_->allocator()->Alloc(bytes); }
+
+  const struct ucontext* const ucontext_;
+#if !defined(__ARM_EABI__) && !defined(__mips__)
+  const google_breakpad::fpstate_t* const float_state_;
+#endif
+  LinuxDumper* dumper_;
+  const MappingList& mapping_list_;
+  char* log_line_;
+};
+}  // namespace
+
+namespace google_breakpad {
+
+bool WriteMicrodump(pid_t crashing_process,
+                    const void* blob,
+                    size_t blob_size,
+                    const MappingList& mappings) {
+  LinuxPtraceDumper dumper(crashing_process);
+  const ExceptionHandler::CrashContext* context = NULL;
+  if (blob) {
+    if (blob_size != sizeof(ExceptionHandler::CrashContext))
+      return false;
+    context = reinterpret_cast<const ExceptionHandler::CrashContext*>(blob);
+    dumper.set_crash_address(
+        reinterpret_cast<uintptr_t>(context->siginfo.si_addr));
+    dumper.set_crash_signal(context->siginfo.si_signo);
+    dumper.set_crash_thread(context->tid);
+  }
+  MicrodumpWriter writer(context, mappings, &dumper);
+  if (!writer.Init())
+    return false;
+  return writer.Dump();
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/client/linux/microdump_writer/microdump_writer.h b/google-breakpad/src/client/linux/microdump_writer/microdump_writer.h
new file mode 100644
index 0000000..3c19f3d
--- /dev/null
+++ b/google-breakpad/src/client/linux/microdump_writer/microdump_writer.h
@@ -0,0 +1,58 @@
+// Copyright (c) 2014, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef CLIENT_LINUX_MINIDUMP_WRITER_MICRODUMP_WRITER_H_
+#define CLIENT_LINUX_MINIDUMP_WRITER_MICRODUMP_WRITER_H_
+
+#include <stdint.h>
+#include <sys/types.h>
+
+#include "client/linux/dump_writer_common/mapping_info.h"
+
+namespace google_breakpad {
+
+// Writes a microdump (a reduced dump containing only the state of the crashing
+// thread) on the console (logcat on Android). These functions do not malloc nor
+// use libc functions which may. Thus, it can be used in contexts where the
+// state of the heap may be corrupt.
+// Args:
+//   crashing_process: the pid of the crashing process. This must be trusted.
+//   blob: a blob of data from the crashing process. See exception_handler.h
+//   blob_size: the length of |blob| in bytes.
+//   mappings: a list of additional mappings provided by the application.
+//
+// Returns true iff successful.
+bool WriteMicrodump(pid_t crashing_process,
+                    const void* blob,
+                    size_t blob_size,
+                    const MappingList& mappings);
+
+}  // namespace google_breakpad
+
+#endif  // CLIENT_LINUX_MINIDUMP_WRITER_MICRODUMP_WRITER_H_
diff --git a/google-breakpad/src/client/linux/microdump_writer/microdump_writer_unittest.cc b/google-breakpad/src/client/linux/microdump_writer/microdump_writer_unittest.cc
new file mode 100644
index 0000000..52b1d9a
--- /dev/null
+++ b/google-breakpad/src/client/linux/microdump_writer/microdump_writer_unittest.cc
@@ -0,0 +1,133 @@
+// Copyright (c) 2014 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include <sys/syscall.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+#include <string>
+
+#include "breakpad_googletest_includes.h"
+#include "client/linux/handler/exception_handler.h"
+#include "client/linux/microdump_writer/microdump_writer.h"
+#include "common/linux/eintr_wrapper.h"
+#include "common/linux/ignore_ret.h"
+#include "common/scoped_ptr.h"
+#include "common/tests/auto_tempdir.h"
+#include "common/using_std_string.h"
+
+using namespace google_breakpad;
+
+namespace {
+
+typedef testing::Test MicrodumpWriterTest;
+
+TEST(MicrodumpWriterTest, Setup) {
+  int fds[2];
+  ASSERT_NE(-1, pipe(fds));
+
+  AutoTempDir temp_dir;
+  string stderr_file = temp_dir.path() + "/stderr.log";
+  int err_fd = open(stderr_file.c_str(), O_CREAT | O_RDWR, S_IRUSR | S_IWUSR);
+  ASSERT_NE(-1, err_fd);
+
+  const pid_t child = fork();
+  if (child == 0) {
+    close(fds[1]);
+    char b;
+    IGNORE_RET(HANDLE_EINTR(read(fds[0], &b, sizeof(b))));
+    close(fds[0]);
+    syscall(__NR_exit);
+  }
+  close(fds[0]);
+
+  ExceptionHandler::CrashContext context;
+  memset(&context, 0, sizeof(context));
+
+  // Set a non-zero tid to avoid tripping asserts.
+  context.tid = child;
+
+  // Push some extra mapping to check the MappingList logic.
+  const uint32_t memory_size = sysconf(_SC_PAGESIZE);
+  const char* kMemoryName = "libfoo.so";
+  const uint8_t kModuleGUID[sizeof(MDGUID)] = {
+     0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
+     0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF
+  };
+
+  MappingInfo info;
+  info.start_addr = memory_size;
+  info.size = memory_size;
+  info.offset = 42;
+  strcpy(info.name, kMemoryName);
+
+  MappingList mappings;
+  MappingEntry mapping;
+  mapping.first = info;
+  memcpy(mapping.second, kModuleGUID, sizeof(MDGUID));
+  mappings.push_back(mapping);
+
+  // Redirect temporarily stderr to the stderr.log file.
+  int save_err = dup(STDERR_FILENO);
+  ASSERT_NE(-1, save_err);
+  ASSERT_NE(-1, dup2(err_fd, STDERR_FILENO));
+
+  ASSERT_TRUE(WriteMicrodump(child, &context, sizeof(context), mappings));
+
+  // Revert stderr back to the console.
+  dup2(save_err, STDERR_FILENO);
+  close(save_err);
+
+  // Read back the stderr file and check for the microdump marker.
+  fsync(err_fd);
+  lseek(err_fd, 0, SEEK_SET);
+  const size_t kBufSize = 64 * 1024;
+  scoped_array<char> buf(new char[kBufSize]);
+  ASSERT_GT(read(err_fd, buf.get(), kBufSize), 0);
+
+  ASSERT_NE(static_cast<char*>(0), strstr(
+      buf.get(), "-----BEGIN BREAKPAD MICRODUMP-----"));
+  ASSERT_NE(static_cast<char*>(0), strstr(
+      buf.get(), "-----END BREAKPAD MICRODUMP-----"));
+
+#ifdef __LP64__
+  ASSERT_NE(static_cast<char*>(0), strstr(
+      buf.get(), "M 0000000000001000 000000000000002A 0000000000001000 "
+      "33221100554477668899AABBCCDDEEFF0 libfoo.so"));
+#else
+  ASSERT_NE(static_cast<char*>(0), strstr(
+      buf.get(), "M 00001000 0000002A 00001000 "
+      "33221100554477668899AABBCCDDEEFF0 libfoo.so"));
+#endif
+
+  close(err_fd);
+  close(fds[1]);
+}
+
+}  // namespace
diff --git a/google-breakpad/src/client/linux/minidump_writer/cpu_set.h b/google-breakpad/src/client/linux/minidump_writer/cpu_set.h
new file mode 100644
index 0000000..1cca9aa
--- /dev/null
+++ b/google-breakpad/src/client/linux/minidump_writer/cpu_set.h
@@ -0,0 +1,144 @@
+// Copyright (c) 2013, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef CLIENT_LINUX_MINIDUMP_WRITER_CPU_SET_H_
+#define CLIENT_LINUX_MINIDUMP_WRITER_CPU_SET_H_
+
+#include <stdint.h>
+#include <assert.h>
+#include <string.h>
+
+#include "common/linux/linux_libc_support.h"
+#include "third_party/lss/linux_syscall_support.h"
+
+namespace google_breakpad {
+
+// Helper class used to model a set of CPUs, as read from sysfs
+// files like /sys/devices/system/cpu/present
+// See See http://www.kernel.org/doc/Documentation/cputopology.txt
+class CpuSet {
+public:
+  // The maximum number of supported CPUs.
+  static const size_t kMaxCpus = 1024;
+
+  CpuSet() {
+    my_memset(mask_, 0, sizeof(mask_));
+  }
+
+  // Parse a sysfs file to extract the corresponding CPU set.
+  bool ParseSysFile(int fd) {
+    char buffer[512];
+    int ret = sys_read(fd, buffer, sizeof(buffer)-1);
+    if (ret < 0)
+      return false;
+
+    buffer[ret] = '\0';
+
+    // Expected format: comma-separated list of items, where each
+    // item can be a decimal integer, or two decimal integers separated
+    // by a dash.
+    // E.g.:
+    //       0
+    //       0,1,2,3
+    //       0-3
+    //       1,10-23
+    const char* p = buffer;
+    const char* p_end = p + ret;
+    while (p < p_end) {
+      // Skip leading space, if any
+      while (p < p_end && my_isspace(*p))
+        p++;
+
+      // Find start and size of current item.
+      const char* item = p;
+      size_t item_len = static_cast<size_t>(p_end - p);
+      const char* item_next =
+          static_cast<const char*>(my_memchr(p, ',', item_len));
+      if (item_next != NULL) {
+        p = item_next + 1;
+        item_len = static_cast<size_t>(item_next - item);
+      } else {
+        p = p_end;
+        item_next = p_end;
+      }
+
+      // Ignore trailing spaces.
+      while (item_next > item && my_isspace(item_next[-1]))
+        item_next--;
+
+      // skip empty items.
+      if (item_next == item)
+        continue;
+
+      // read first decimal value.
+      uintptr_t start = 0;
+      const char* next = my_read_decimal_ptr(&start, item);
+      uintptr_t end = start;
+      if (*next == '-')
+        my_read_decimal_ptr(&end, next+1);
+
+      while (start <= end)
+        SetBit(start++);
+    }
+    return true;
+  }
+
+  // Intersect this CPU set with another one.
+  void IntersectWith(const CpuSet& other) {
+    for (size_t nn = 0; nn < kMaskWordCount; ++nn)
+      mask_[nn] &= other.mask_[nn];
+  }
+
+  // Return the number of CPUs in this set.
+  int GetCount() {
+    int result = 0;
+    for (size_t nn = 0; nn < kMaskWordCount; ++nn) {
+      result += __builtin_popcount(mask_[nn]);
+    }
+    return result;
+  }
+
+private:
+  void SetBit(uintptr_t index) {
+    size_t nn = static_cast<size_t>(index);
+    if (nn < kMaxCpus)
+      mask_[nn / kMaskWordBits] |= (1U << (nn % kMaskWordBits));
+  }
+
+  typedef uint32_t MaskWordType;
+  static const size_t kMaskWordBits = 8*sizeof(MaskWordType);
+  static const size_t kMaskWordCount =
+      (kMaxCpus + kMaskWordBits - 1) / kMaskWordBits;
+
+  MaskWordType mask_[kMaskWordCount];
+};
+
+}  // namespace google_breakpad
+
+#endif  // CLIENT_LINUX_MINIDUMP_WRITER_CPU_SET_H_
diff --git a/google-breakpad/src/client/linux/minidump_writer/cpu_set_unittest.cc b/google-breakpad/src/client/linux/minidump_writer/cpu_set_unittest.cc
new file mode 100644
index 0000000..e2274bd
--- /dev/null
+++ b/google-breakpad/src/client/linux/minidump_writer/cpu_set_unittest.cc
@@ -0,0 +1,164 @@
+// Copyright (c) 2013, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include <stdlib.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <stdio.h>
+#include <errno.h>
+#include <string.h>
+
+#include "breakpad_googletest_includes.h"
+#include "client/linux/minidump_writer/cpu_set.h"
+#include "common/linux/tests/auto_testfile.h"
+
+using namespace google_breakpad;
+
+namespace {
+
+typedef testing::Test CpuSetTest;
+
+// Helper class to write test text file to a temporary file and return
+// its file descriptor.
+class ScopedTestFile : public AutoTestFile {
+public:
+  explicit ScopedTestFile(const char* text)
+    : AutoTestFile("cpu_set", text) {
+  }
+};
+
+}
+
+TEST(CpuSetTest, EmptyCount) {
+  CpuSet set;
+  ASSERT_EQ(0, set.GetCount());
+}
+
+TEST(CpuSetTest, OneCpu) {
+  ScopedTestFile file("10");
+  ASSERT_TRUE(file.IsOk());
+
+  CpuSet set;
+  ASSERT_TRUE(set.ParseSysFile(file.GetFd()));
+  ASSERT_EQ(1, set.GetCount());
+}
+
+TEST(CpuSetTest, OneCpuTerminated) {
+  ScopedTestFile file("10\n");
+  ASSERT_TRUE(file.IsOk());
+
+  CpuSet set;
+  ASSERT_TRUE(set.ParseSysFile(file.GetFd()));
+  ASSERT_EQ(1, set.GetCount());
+}
+
+TEST(CpuSetTest, TwoCpusWithComma) {
+  ScopedTestFile file("1,10");
+  ASSERT_TRUE(file.IsOk());
+
+  CpuSet set;
+  ASSERT_TRUE(set.ParseSysFile(file.GetFd()));
+  ASSERT_EQ(2, set.GetCount());
+}
+
+TEST(CpuSetTest, TwoCpusWithRange) {
+  ScopedTestFile file("1-2");
+  ASSERT_TRUE(file.IsOk());
+
+  CpuSet set;
+  ASSERT_TRUE(set.ParseSysFile(file.GetFd()));
+  ASSERT_EQ(2, set.GetCount());
+}
+
+TEST(CpuSetTest, TenCpusWithRange) {
+  ScopedTestFile file("9-18");
+  ASSERT_TRUE(file.IsOk());
+
+  CpuSet set;
+  ASSERT_TRUE(set.ParseSysFile(file.GetFd()));
+  ASSERT_EQ(10, set.GetCount());
+}
+
+TEST(CpuSetTest, MultiItems) {
+  ScopedTestFile file("0, 2-4, 128");
+  ASSERT_TRUE(file.IsOk());
+
+  CpuSet set;
+  ASSERT_TRUE(set.ParseSysFile(file.GetFd()));
+  ASSERT_EQ(5, set.GetCount());
+}
+
+TEST(CpuSetTest, IntersectWith) {
+  ScopedTestFile file1("9-19");
+  ASSERT_TRUE(file1.IsOk());
+  CpuSet set1;
+  ASSERT_TRUE(set1.ParseSysFile(file1.GetFd()));
+  ASSERT_EQ(11, set1.GetCount());
+
+  ScopedTestFile file2("16-24");
+  ASSERT_TRUE(file2.IsOk());
+  CpuSet set2;
+  ASSERT_TRUE(set2.ParseSysFile(file2.GetFd()));
+  ASSERT_EQ(9, set2.GetCount());
+
+  set1.IntersectWith(set2);
+  ASSERT_EQ(4, set1.GetCount());
+  ASSERT_EQ(9, set2.GetCount());
+}
+
+TEST(CpuSetTest, SelfIntersection) {
+  ScopedTestFile file1("9-19");
+  ASSERT_TRUE(file1.IsOk());
+  CpuSet set1;
+  ASSERT_TRUE(set1.ParseSysFile(file1.GetFd()));
+  ASSERT_EQ(11, set1.GetCount());
+
+  set1.IntersectWith(set1);
+  ASSERT_EQ(11, set1.GetCount());
+}
+
+TEST(CpuSetTest, EmptyIntersection) {
+  ScopedTestFile file1("0-19");
+  ASSERT_TRUE(file1.IsOk());
+  CpuSet set1;
+  ASSERT_TRUE(set1.ParseSysFile(file1.GetFd()));
+  ASSERT_EQ(20, set1.GetCount());
+
+  ScopedTestFile file2("20-39");
+  ASSERT_TRUE(file2.IsOk());
+  CpuSet set2;
+  ASSERT_TRUE(set2.ParseSysFile(file2.GetFd()));
+  ASSERT_EQ(20, set2.GetCount());
+
+  set1.IntersectWith(set2);
+  ASSERT_EQ(0, set1.GetCount());
+
+  ASSERT_EQ(20, set2.GetCount());
+}
+
diff --git a/google-breakpad/src/client/linux/minidump_writer/directory_reader.h b/google-breakpad/src/client/linux/minidump_writer/directory_reader.h
new file mode 100644
index 0000000..a4bde18
--- /dev/null
+++ b/google-breakpad/src/client/linux/minidump_writer/directory_reader.h
@@ -0,0 +1,106 @@
+// Copyright (c) 2009, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef CLIENT_LINUX_MINIDUMP_WRITER_DIRECTORY_READER_H_
+#define CLIENT_LINUX_MINIDUMP_WRITER_DIRECTORY_READER_H_
+
+#include <stdint.h>
+#include <unistd.h>
+#include <limits.h>
+#include <assert.h>
+#include <errno.h>
+#include <string.h>
+
+#include "common/linux/linux_libc_support.h"
+#include "third_party/lss/linux_syscall_support.h"
+
+namespace google_breakpad {
+
+// A class for enumerating a directory without using diropen/readdir or other
+// functions which may allocate memory.
+class DirectoryReader {
+ public:
+  DirectoryReader(int fd)
+      : fd_(fd),
+        buf_used_(0) {
+  }
+
+  // Return the next entry from the directory
+  //   name: (output) the NUL terminated entry name
+  //
+  // Returns true iff successful (false on EOF).
+  //
+  // After calling this, one must call |PopEntry| otherwise you'll get the same
+  // entry over and over.
+  bool GetNextEntry(const char** name) {
+    struct kernel_dirent* const dent =
+      reinterpret_cast<kernel_dirent*>(buf_);
+
+    if (buf_used_ == 0) {
+      // need to read more entries.
+      const int n = sys_getdents(fd_, dent, sizeof(buf_));
+      if (n < 0) {
+        return false;
+      } else if (n == 0) {
+        hit_eof_ = true;
+      } else {
+        buf_used_ += n;
+      }
+    }
+
+    if (buf_used_ == 0 && hit_eof_)
+      return false;
+
+    assert(buf_used_ > 0);
+
+    *name = dent->d_name;
+    return true;
+  }
+
+  void PopEntry() {
+    if (!buf_used_)
+      return;
+
+    const struct kernel_dirent* const dent =
+      reinterpret_cast<kernel_dirent*>(buf_);
+
+    buf_used_ -= dent->d_reclen;
+    my_memmove(buf_, buf_ + dent->d_reclen, buf_used_);
+  }
+
+ private:
+  const int fd_;
+  bool hit_eof_;
+  unsigned buf_used_;
+  uint8_t buf_[sizeof(struct kernel_dirent) + NAME_MAX + 1];
+};
+
+}  // namespace google_breakpad
+
+#endif  // CLIENT_LINUX_MINIDUMP_WRITER_DIRECTORY_READER_H_
diff --git a/google-breakpad/src/client/linux/minidump_writer/directory_reader_unittest.cc b/google-breakpad/src/client/linux/minidump_writer/directory_reader_unittest.cc
new file mode 100644
index 0000000..326f9e3
--- /dev/null
+++ b/google-breakpad/src/client/linux/minidump_writer/directory_reader_unittest.cc
@@ -0,0 +1,78 @@
+// Copyright (c) 2009, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include <set>
+#include <string>
+
+#include <dirent.h>
+#include <fcntl.h>
+#include <sys/types.h>
+
+#include "client/linux/minidump_writer/directory_reader.h"
+#include "common/using_std_string.h"
+#include "breakpad_googletest_includes.h"
+
+using namespace google_breakpad;
+
+namespace {
+typedef testing::Test DirectoryReaderTest;
+}
+
+TEST(DirectoryReaderTest, CompareResults) {
+  std::set<string> dent_set;
+
+  DIR *const dir = opendir("/proc/self");
+  ASSERT_TRUE(dir != NULL);
+
+  struct dirent* dent;
+  while ((dent = readdir(dir)))
+    dent_set.insert(dent->d_name);
+
+  closedir(dir);
+
+  const int fd = open("/proc/self", O_DIRECTORY | O_RDONLY);
+  ASSERT_GE(fd, 0);
+
+  DirectoryReader dir_reader(fd);
+  unsigned seen = 0;
+
+  const char* name;
+  while (dir_reader.GetNextEntry(&name)) {
+    ASSERT_TRUE(dent_set.find(name) != dent_set.end());
+    seen++;
+    dir_reader.PopEntry();
+  }
+
+  ASSERT_TRUE(dent_set.find("status") != dent_set.end());
+  ASSERT_TRUE(dent_set.find("stat") != dent_set.end());
+  ASSERT_TRUE(dent_set.find("cmdline") != dent_set.end());
+
+  ASSERT_EQ(dent_set.size(), seen);
+  close(fd);
+}
diff --git a/google-breakpad/src/client/linux/minidump_writer/line_reader.h b/google-breakpad/src/client/linux/minidump_writer/line_reader.h
new file mode 100644
index 0000000..779cfeb
--- /dev/null
+++ b/google-breakpad/src/client/linux/minidump_writer/line_reader.h
@@ -0,0 +1,131 @@
+// Copyright (c) 2009, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef CLIENT_LINUX_MINIDUMP_WRITER_LINE_READER_H_
+#define CLIENT_LINUX_MINIDUMP_WRITER_LINE_READER_H_
+
+#include <stdint.h>
+#include <assert.h>
+#include <string.h>
+
+#include "common/linux/linux_libc_support.h"
+#include "third_party/lss/linux_syscall_support.h"
+
+namespace google_breakpad {
+
+// A class for reading a file, line by line, without using fopen/fgets or other
+// functions which may allocate memory.
+class LineReader {
+ public:
+  LineReader(int fd)
+      : fd_(fd),
+        hit_eof_(false),
+        buf_used_(0) {
+  }
+
+  // The maximum length of a line.
+  static const size_t kMaxLineLen = 512;
+
+  // Return the next line from the file.
+  //   line: (output) a pointer to the start of the line. The line is NUL
+  //     terminated.
+  //   len: (output) the length of the line (not inc the NUL byte)
+  //
+  // Returns true iff successful (false on EOF).
+  //
+  // One must call |PopLine| after this function, otherwise you'll continue to
+  // get the same line over and over.
+  bool GetNextLine(const char **line, unsigned *len) {
+    for (;;) {
+      if (buf_used_ == 0 && hit_eof_)
+        return false;
+
+      for (unsigned i = 0; i < buf_used_; ++i) {
+        if (buf_[i] == '\n' || buf_[i] == 0) {
+          buf_[i] = 0;
+          *len = i;
+          *line = buf_;
+          return true;
+        }
+      }
+
+      if (buf_used_ == sizeof(buf_)) {
+        // we scanned the whole buffer and didn't find an end-of-line marker.
+        // This line is too long to process.
+        return false;
+      }
+
+      // We didn't find any end-of-line terminators in the buffer. However, if
+      // this is the last line in the file it might not have one:
+      if (hit_eof_) {
+        assert(buf_used_);
+        // There's room for the NUL because of the buf_used_ == sizeof(buf_)
+        // check above.
+        buf_[buf_used_] = 0;
+        *len = buf_used_;
+        buf_used_ += 1;  // since we appended the NUL.
+        *line = buf_;
+        return true;
+      }
+
+      // Otherwise, we should pull in more data from the file
+      const ssize_t n = sys_read(fd_, buf_ + buf_used_,
+                                 sizeof(buf_) - buf_used_);
+      if (n < 0) {
+        return false;
+      } else if (n == 0) {
+        hit_eof_ = true;
+      } else {
+        buf_used_ += n;
+      }
+
+      // At this point, we have either set the hit_eof_ flag, or we have more
+      // data to process...
+    }
+  }
+
+  void PopLine(unsigned len) {
+    // len doesn't include the NUL byte at the end.
+
+    assert(buf_used_ >= len + 1);
+    buf_used_ -= len + 1;
+    my_memmove(buf_, buf_ + len + 1, buf_used_);
+  }
+
+ private:
+  const int fd_;
+
+  bool hit_eof_;
+  unsigned buf_used_;
+  char buf_[kMaxLineLen];
+};
+
+}  // namespace google_breakpad
+
+#endif  // CLIENT_LINUX_MINIDUMP_WRITER_LINE_READER_H_
diff --git a/google-breakpad/src/client/linux/minidump_writer/line_reader_unittest.cc b/google-breakpad/src/client/linux/minidump_writer/line_reader_unittest.cc
new file mode 100644
index 0000000..29686f0
--- /dev/null
+++ b/google-breakpad/src/client/linux/minidump_writer/line_reader_unittest.cc
@@ -0,0 +1,169 @@
+// Copyright (c) 2009, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include <stdlib.h>
+#include <unistd.h>
+#include <sys/types.h>
+
+#include "client/linux/minidump_writer/line_reader.h"
+#include "breakpad_googletest_includes.h"
+#include "common/linux/tests/auto_testfile.h"
+
+using namespace google_breakpad;
+
+namespace {
+
+typedef testing::Test LineReaderTest;
+
+class ScopedTestFile : public AutoTestFile {
+public:
+  explicit ScopedTestFile(const char* text)
+    : AutoTestFile("line_reader", text) {
+  }
+
+  ScopedTestFile(const char* text, size_t text_len)
+    : AutoTestFile("line_reader", text, text_len) {
+  }
+};
+
+}
+
+TEST(LineReaderTest, EmptyFile) {
+  ScopedTestFile file("");
+  ASSERT_TRUE(file.IsOk());
+  LineReader reader(file.GetFd());
+
+  const char *line;
+  unsigned len;
+  ASSERT_FALSE(reader.GetNextLine(&line, &len));
+}
+
+TEST(LineReaderTest, OneLineTerminated) {
+  ScopedTestFile file("a\n");
+  ASSERT_TRUE(file.IsOk());
+  LineReader reader(file.GetFd());
+
+  const char *line;
+  unsigned int len;
+  ASSERT_TRUE(reader.GetNextLine(&line, &len));
+  ASSERT_EQ((unsigned int)1, len);
+  ASSERT_EQ('a', line[0]);
+  ASSERT_EQ('\0', line[1]);
+  reader.PopLine(len);
+
+  ASSERT_FALSE(reader.GetNextLine(&line, &len));
+}
+
+TEST(LineReaderTest, OneLine) {
+  ScopedTestFile file("a");
+  ASSERT_TRUE(file.IsOk());
+  LineReader reader(file.GetFd());
+
+  const char *line;
+  unsigned len;
+  ASSERT_TRUE(reader.GetNextLine(&line, &len));
+  ASSERT_EQ((unsigned)1, len);
+  ASSERT_EQ('a', line[0]);
+  ASSERT_EQ('\0', line[1]);
+  reader.PopLine(len);
+
+  ASSERT_FALSE(reader.GetNextLine(&line, &len));
+}
+
+TEST(LineReaderTest, TwoLinesTerminated) {
+  ScopedTestFile file("a\nb\n");
+  ASSERT_TRUE(file.IsOk());
+  LineReader reader(file.GetFd());
+
+  const char *line;
+  unsigned len;
+  ASSERT_TRUE(reader.GetNextLine(&line, &len));
+  ASSERT_EQ((unsigned)1, len);
+  ASSERT_EQ('a', line[0]);
+  ASSERT_EQ('\0', line[1]);
+  reader.PopLine(len);
+
+  ASSERT_TRUE(reader.GetNextLine(&line, &len));
+  ASSERT_EQ((unsigned)1, len);
+  ASSERT_EQ('b', line[0]);
+  ASSERT_EQ('\0', line[1]);
+  reader.PopLine(len);
+
+  ASSERT_FALSE(reader.GetNextLine(&line, &len));
+}
+
+TEST(LineReaderTest, TwoLines) {
+  ScopedTestFile file("a\nb");
+  ASSERT_TRUE(file.IsOk());
+  LineReader reader(file.GetFd());
+
+  const char *line;
+  unsigned len;
+  ASSERT_TRUE(reader.GetNextLine(&line, &len));
+  ASSERT_EQ((unsigned)1, len);
+  ASSERT_EQ('a', line[0]);
+  ASSERT_EQ('\0', line[1]);
+  reader.PopLine(len);
+
+  ASSERT_TRUE(reader.GetNextLine(&line, &len));
+  ASSERT_EQ((unsigned)1, len);
+  ASSERT_EQ('b', line[0]);
+  ASSERT_EQ('\0', line[1]);
+  reader.PopLine(len);
+
+  ASSERT_FALSE(reader.GetNextLine(&line, &len));
+}
+
+TEST(LineReaderTest, MaxLength) {
+  char l[LineReader::kMaxLineLen-1];
+  memset(l, 'a', sizeof(l));
+  ScopedTestFile file(l, sizeof(l));
+  ASSERT_TRUE(file.IsOk());
+  LineReader reader(file.GetFd());
+
+  const char *line;
+  unsigned len;
+  ASSERT_TRUE(reader.GetNextLine(&line, &len));
+  ASSERT_EQ(sizeof(l), len);
+  ASSERT_TRUE(memcmp(l, line, sizeof(l)) == 0);
+  ASSERT_EQ('\0', line[len]);
+}
+
+TEST(LineReaderTest, TooLong) {
+  // Note: this writes kMaxLineLen 'a' chars in the test file.
+  char l[LineReader::kMaxLineLen];
+  memset(l, 'a', sizeof(l));
+  ScopedTestFile file(l, sizeof(l));
+  ASSERT_TRUE(file.IsOk());
+  LineReader reader(file.GetFd());
+
+  const char *line;
+  unsigned len;
+  ASSERT_FALSE(reader.GetNextLine(&line, &len));
+}
diff --git a/google-breakpad/src/client/linux/minidump_writer/linux_core_dumper.cc b/google-breakpad/src/client/linux/minidump_writer/linux_core_dumper.cc
new file mode 100644
index 0000000..b8d90af
--- /dev/null
+++ b/google-breakpad/src/client/linux/minidump_writer/linux_core_dumper.cc
@@ -0,0 +1,252 @@
+// Copyright (c) 2012, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// linux_core_dumper.cc: Implement google_breakpad::LinuxCoreDumper.
+// See linux_core_dumper.h for details.
+
+#include "client/linux/minidump_writer/linux_core_dumper.h"
+
+#include <asm/ptrace.h>
+#include <assert.h>
+#include <elf.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/procfs.h>
+
+#include "common/linux/linux_libc_support.h"
+
+namespace google_breakpad {
+
+LinuxCoreDumper::LinuxCoreDumper(pid_t pid,
+                                 const char* core_path,
+                                 const char* procfs_path)
+    : LinuxDumper(pid),
+      core_path_(core_path),
+      procfs_path_(procfs_path),
+      thread_infos_(&allocator_, 8) {
+  assert(core_path_);
+}
+
+bool LinuxCoreDumper::BuildProcPath(char* path, pid_t pid,
+                                    const char* node) const {
+  if (!path || !node)
+    return false;
+
+  size_t node_len = my_strlen(node);
+  if (node_len == 0)
+    return false;
+
+  size_t procfs_path_len = my_strlen(procfs_path_);
+  size_t total_length = procfs_path_len + 1 + node_len;
+  if (total_length >= NAME_MAX)
+    return false;
+
+  memcpy(path, procfs_path_, procfs_path_len);
+  path[procfs_path_len] = '/';
+  memcpy(path + procfs_path_len + 1, node, node_len);
+  path[total_length] = '\0';
+  return true;
+}
+
+bool LinuxCoreDumper::CopyFromProcess(void* dest, pid_t child,
+                                      const void* src, size_t length) {
+  ElfCoreDump::Addr virtual_address = reinterpret_cast<ElfCoreDump::Addr>(src);
+  // TODO(benchan): Investigate whether the data to be copied could span
+  // across multiple segments in the core dump file. ElfCoreDump::CopyData
+  // and this method do not handle that case yet.
+  if (!core_.CopyData(dest, virtual_address, length)) {
+    // If the data segment is not found in the core dump, fill the result
+    // with marker characters.
+    memset(dest, 0xab, length);
+    return false;
+  }
+  return true;
+}
+
+bool LinuxCoreDumper::GetThreadInfoByIndex(size_t index, ThreadInfo* info) {
+  if (index >= thread_infos_.size())
+    return false;
+
+  *info = thread_infos_[index];
+  const uint8_t* stack_pointer;
+#if defined(__i386)
+  memcpy(&stack_pointer, &info->regs.esp, sizeof(info->regs.esp));
+#elif defined(__x86_64)
+  memcpy(&stack_pointer, &info->regs.rsp, sizeof(info->regs.rsp));
+#elif defined(__ARM_EABI__)
+  memcpy(&stack_pointer, &info->regs.ARM_sp, sizeof(info->regs.ARM_sp));
+#elif defined(__aarch64__)
+  memcpy(&stack_pointer, &info->regs.sp, sizeof(info->regs.sp));
+#elif defined(__mips__)
+  stack_pointer =
+      reinterpret_cast<uint8_t*>(info->regs.regs[MD_CONTEXT_MIPS_REG_SP]);
+#else
+#error "This code hasn't been ported to your platform yet."
+#endif
+  info->stack_pointer = reinterpret_cast<uintptr_t>(stack_pointer);
+  return true;
+}
+
+bool LinuxCoreDumper::IsPostMortem() const {
+  return true;
+}
+
+bool LinuxCoreDumper::ThreadsSuspend() {
+  return true;
+}
+
+bool LinuxCoreDumper::ThreadsResume() {
+  return true;
+}
+
+bool LinuxCoreDumper::EnumerateThreads() {
+  if (!mapped_core_file_.Map(core_path_, 0)) {
+    fprintf(stderr, "Could not map core dump file into memory\n");
+    return false;
+  }
+
+  core_.SetContent(mapped_core_file_.content());
+  if (!core_.IsValid()) {
+    fprintf(stderr, "Invalid core dump file\n");
+    return false;
+  }
+
+  ElfCoreDump::Note note = core_.GetFirstNote();
+  if (!note.IsValid()) {
+    fprintf(stderr, "PT_NOTE section not found\n");
+    return false;
+  }
+
+  bool first_thread = true;
+  do {
+    ElfCoreDump::Word type = note.GetType();
+    MemoryRange name = note.GetName();
+    MemoryRange description = note.GetDescription();
+
+    if (type == 0 || name.IsEmpty() || description.IsEmpty()) {
+      fprintf(stderr, "Could not found a valid PT_NOTE.\n");
+      return false;
+    }
+
+    // Based on write_note_info() in linux/kernel/fs/binfmt_elf.c, notes are
+    // ordered as follows (NT_PRXFPREG and NT_386_TLS are i386 specific):
+    //   Thread           Name          Type
+    //   -------------------------------------------------------------------
+    //   1st thread       CORE          NT_PRSTATUS
+    //   process-wide     CORE          NT_PRPSINFO
+    //   process-wide     CORE          NT_AUXV
+    //   1st thread       CORE          NT_FPREGSET
+    //   1st thread       LINUX         NT_PRXFPREG
+    //   1st thread       LINUX         NT_386_TLS
+    //
+    //   2nd thread       CORE          NT_PRSTATUS
+    //   2nd thread       CORE          NT_FPREGSET
+    //   2nd thread       LINUX         NT_PRXFPREG
+    //   2nd thread       LINUX         NT_386_TLS
+    //
+    //   3rd thread       CORE          NT_PRSTATUS
+    //   3rd thread       CORE          NT_FPREGSET
+    //   3rd thread       LINUX         NT_PRXFPREG
+    //   3rd thread       LINUX         NT_386_TLS
+    //
+    // The following code only works if notes are ordered as expected.
+    switch (type) {
+      case NT_PRSTATUS: {
+        if (description.length() != sizeof(elf_prstatus)) {
+          fprintf(stderr, "Found NT_PRSTATUS descriptor of unexpected size\n");
+          return false;
+        }
+
+        const elf_prstatus* status =
+            reinterpret_cast<const elf_prstatus*>(description.data());
+        pid_t pid = status->pr_pid;
+        ThreadInfo info;
+        memset(&info, 0, sizeof(ThreadInfo));
+        info.tgid = status->pr_pgrp;
+        info.ppid = status->pr_ppid;
+#if defined(__mips__)
+        for (int i = EF_REG0; i <= EF_REG31; i++)
+          info.regs.regs[i - EF_REG0] = status->pr_reg[i];
+
+        info.regs.lo = status->pr_reg[EF_LO];
+        info.regs.hi = status->pr_reg[EF_HI];
+        info.regs.epc = status->pr_reg[EF_CP0_EPC];
+        info.regs.badvaddr = status->pr_reg[EF_CP0_BADVADDR];
+        info.regs.status = status->pr_reg[EF_CP0_STATUS];
+        info.regs.cause = status->pr_reg[EF_CP0_CAUSE];
+#else
+        memcpy(&info.regs, status->pr_reg, sizeof(info.regs));
+#endif
+        if (first_thread) {
+          crash_thread_ = pid;
+          crash_signal_ = status->pr_info.si_signo;
+        }
+        first_thread = false;
+        threads_.push_back(pid);
+        thread_infos_.push_back(info);
+        break;
+      }
+#if defined(__i386) || defined(__x86_64)
+      case NT_FPREGSET: {
+        if (thread_infos_.empty())
+          return false;
+
+        ThreadInfo* info = &thread_infos_.back();
+        if (description.length() != sizeof(info->fpregs)) {
+          fprintf(stderr, "Found NT_FPREGSET descriptor of unexpected size\n");
+          return false;
+        }
+
+        memcpy(&info->fpregs, description.data(), sizeof(info->fpregs));
+        break;
+      }
+#endif
+#if defined(__i386)
+      case NT_PRXFPREG: {
+        if (thread_infos_.empty())
+          return false;
+
+        ThreadInfo* info = &thread_infos_.back();
+        if (description.length() != sizeof(info->fpxregs)) {
+          fprintf(stderr, "Found NT_PRXFPREG descriptor of unexpected size\n");
+          return false;
+        }
+
+        memcpy(&info->fpxregs, description.data(), sizeof(info->fpxregs));
+        break;
+      }
+#endif
+    }
+    note = note.GetNextNote();
+  } while (note.IsValid());
+
+  return true;
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/client/linux/minidump_writer/linux_core_dumper.h b/google-breakpad/src/client/linux/minidump_writer/linux_core_dumper.h
new file mode 100644
index 0000000..8537896
--- /dev/null
+++ b/google-breakpad/src/client/linux/minidump_writer/linux_core_dumper.h
@@ -0,0 +1,123 @@
+// Copyright (c) 2012, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// linux_core_dumper.h: Define the google_breakpad::LinuxCoreDumper
+// class, which is derived from google_breakpad::LinuxDumper to extract
+// information from a crashed process via its core dump and proc files.
+
+#ifndef CLIENT_LINUX_MINIDUMP_WRITER_LINUX_CORE_DUMPER_H_
+#define CLIENT_LINUX_MINIDUMP_WRITER_LINUX_CORE_DUMPER_H_
+
+#include "client/linux/minidump_writer/linux_dumper.h"
+#include "common/linux/elf_core_dump.h"
+#include "common/linux/memory_mapped_file.h"
+
+namespace google_breakpad {
+
+class LinuxCoreDumper : public LinuxDumper {
+ public:
+  // Constructs a dumper for extracting information of a given process
+  // with a process ID of |pid| via its core dump file at |core_path| and
+  // its proc files at |procfs_path|. If |procfs_path| is a copy of
+  // /proc/<pid>, it should contain the following files:
+  //     auxv, cmdline, environ, exe, maps, status
+  LinuxCoreDumper(pid_t pid, const char* core_path, const char* procfs_path);
+
+  // Implements LinuxDumper::BuildProcPath().
+  // Builds a proc path for a certain pid for a node (/proc/<pid>/<node>).
+  // |path| is a character array of at least NAME_MAX bytes to return the
+  // result.|node| is the final node without any slashes. Return true on
+  // success.
+  //
+  // As this dumper performs a post-mortem dump and makes use of a copy
+  // of the proc files of the crashed process, this derived method does
+  // not actually make use of |pid| and always returns a subpath of
+  // |procfs_path_| regardless of whether |pid| corresponds to the main
+  // process or a thread of the process, i.e. assuming both the main process
+  // and its threads have the following proc files with the same content:
+  //     auxv, cmdline, environ, exe, maps, status
+  virtual bool BuildProcPath(char* path, pid_t pid, const char* node) const;
+
+  // Implements LinuxDumper::CopyFromProcess().
+  // Copies content of |length| bytes from a given process |child|,
+  // starting from |src|, into |dest|. This method extracts the content
+  // the core dump and fills |dest| with a sequence of marker bytes
+  // if the expected data is not found in the core dump. Returns true if
+  // the expected data is found in the core dump.
+  virtual bool CopyFromProcess(void* dest, pid_t child, const void* src,
+                               size_t length);
+
+  // Implements LinuxDumper::GetThreadInfoByIndex().
+  // Reads information about the |index|-th thread of |threads_|.
+  // Returns true on success. One must have called |ThreadsSuspend| first.
+  virtual bool GetThreadInfoByIndex(size_t index, ThreadInfo* info);
+
+  // Implements LinuxDumper::IsPostMortem().
+  // Always returns true to indicate that this dumper performs a
+  // post-mortem dump of a crashed process via a core dump file.
+  virtual bool IsPostMortem() const;
+
+  // Implements LinuxDumper::ThreadsSuspend().
+  // As the dumper performs a post-mortem dump via a core dump file,
+  // there is no threads to suspend. This method does nothing and
+  // always returns true.
+  virtual bool ThreadsSuspend();
+
+  // Implements LinuxDumper::ThreadsResume().
+  // As the dumper performs a post-mortem dump via a core dump file,
+  // there is no threads to resume. This method does nothing and
+  // always returns true.
+  virtual bool ThreadsResume();
+
+ protected:
+  // Implements LinuxDumper::EnumerateThreads().
+  // Enumerates all threads of the given process into |threads_|.
+  virtual bool EnumerateThreads();
+
+ private:
+  // Path of the core dump file.
+  const char* core_path_;
+
+  // Path of the directory containing the proc files of the given process,
+  // which is usually a copy of /proc/<pid>.
+  const char* procfs_path_;
+
+  // Memory-mapped core dump file at |core_path_|.
+  MemoryMappedFile mapped_core_file_;
+
+  // Content of the core dump file.
+  ElfCoreDump core_;
+
+  // Thread info found in the core dump file.
+  wasteful_vector<ThreadInfo> thread_infos_;
+};
+
+}  // namespace google_breakpad
+
+#endif  // CLIENT_LINUX_HANDLER_LINUX_CORE_DUMPER_H_
diff --git a/google-breakpad/src/client/linux/minidump_writer/linux_core_dumper_unittest.cc b/google-breakpad/src/client/linux/minidump_writer/linux_core_dumper_unittest.cc
new file mode 100644
index 0000000..8f6a423
--- /dev/null
+++ b/google-breakpad/src/client/linux/minidump_writer/linux_core_dumper_unittest.cc
@@ -0,0 +1,118 @@
+// Copyright (c) 2012, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// linux_core_dumper_unittest.cc:
+// Unit tests for google_breakpad::LinuxCoreDumoer.
+
+#include <string>
+
+#include "breakpad_googletest_includes.h"
+#include "client/linux/minidump_writer/linux_core_dumper.h"
+#include "common/linux/tests/crash_generator.h"
+#include "common/using_std_string.h"
+
+using namespace google_breakpad;
+
+TEST(LinuxCoreDumperTest, BuildProcPath) {
+  const pid_t pid = getpid();
+  const char procfs_path[] = "/procfs_copy";
+  LinuxCoreDumper dumper(getpid(), "core_file", procfs_path);
+
+  char maps_path[NAME_MAX] = "";
+  char maps_path_expected[NAME_MAX];
+  snprintf(maps_path_expected, sizeof(maps_path_expected),
+           "%s/maps", procfs_path);
+  EXPECT_TRUE(dumper.BuildProcPath(maps_path, pid, "maps"));
+  EXPECT_STREQ(maps_path_expected, maps_path);
+
+  EXPECT_FALSE(dumper.BuildProcPath(NULL, pid, "maps"));
+  EXPECT_FALSE(dumper.BuildProcPath(maps_path, pid, ""));
+  EXPECT_FALSE(dumper.BuildProcPath(maps_path, pid, NULL));
+
+  char long_node[NAME_MAX];
+  size_t long_node_len = NAME_MAX - strlen(procfs_path) - 1;
+  memset(long_node, 'a', long_node_len);
+  long_node[long_node_len] = '\0';
+  EXPECT_FALSE(dumper.BuildProcPath(maps_path, pid, long_node));
+}
+
+TEST(LinuxCoreDumperTest, VerifyDumpWithMultipleThreads) {
+  CrashGenerator crash_generator;
+  if (!crash_generator.HasDefaultCorePattern()) {
+    fprintf(stderr, "LinuxCoreDumperTest.VerifyDumpWithMultipleThreads test "
+            "is skipped due to non-default core pattern\n");
+    return;
+  }
+
+  const unsigned kNumOfThreads = 3;
+  const unsigned kCrashThread = 1;
+  const int kCrashSignal = SIGABRT;
+  pid_t child_pid;
+  ASSERT_TRUE(crash_generator.CreateChildCrash(kNumOfThreads, kCrashThread,
+                                               kCrashSignal, &child_pid));
+
+  const string core_file = crash_generator.GetCoreFilePath();
+  const string procfs_path = crash_generator.GetDirectoryOfProcFilesCopy();
+
+#if defined(__ANDROID__)
+  struct stat st;
+  if (stat(core_file.c_str(), &st) != 0) {
+    fprintf(stderr, "LinuxCoreDumperTest.VerifyDumpWithMultipleThreads test is "
+            "skipped due to no core file being generated");
+    return;
+  }
+#endif
+
+  LinuxCoreDumper dumper(child_pid, core_file.c_str(), procfs_path.c_str());
+
+  EXPECT_TRUE(dumper.Init());
+
+  EXPECT_TRUE(dumper.IsPostMortem());
+
+  // These are no-ops and should always return true.
+  EXPECT_TRUE(dumper.ThreadsSuspend());
+  EXPECT_TRUE(dumper.ThreadsResume());
+
+  // LinuxCoreDumper cannot determine the crash address and thus it always
+  // sets the crash address to 0.
+  EXPECT_EQ(0U, dumper.crash_address());
+  EXPECT_EQ(kCrashSignal, dumper.crash_signal());
+  EXPECT_EQ(crash_generator.GetThreadId(kCrashThread),
+            dumper.crash_thread());
+
+  EXPECT_EQ(kNumOfThreads, dumper.threads().size());
+  for (unsigned i = 0; i < kNumOfThreads; ++i) {
+    ThreadInfo info;
+    EXPECT_TRUE(dumper.GetThreadInfoByIndex(i, &info));
+    const void* stack;
+    size_t stack_len;
+    EXPECT_TRUE(dumper.GetStackInfo(&stack, &stack_len, info.stack_pointer));
+    EXPECT_EQ(getpid(), info.ppid);
+  }
+}
diff --git a/google-breakpad/src/client/linux/minidump_writer/linux_dumper.cc b/google-breakpad/src/client/linux/minidump_writer/linux_dumper.cc
new file mode 100644
index 0000000..ebb008d
--- /dev/null
+++ b/google-breakpad/src/client/linux/minidump_writer/linux_dumper.cc
@@ -0,0 +1,475 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// linux_dumper.cc: Implement google_breakpad::LinuxDumper.
+// See linux_dumper.h for details.
+
+// This code deals with the mechanics of getting information about a crashed
+// process. Since this code may run in a compromised address space, the same
+// rules apply as detailed at the top of minidump_writer.h: no libc calls and
+// use the alternative allocator.
+
+#include "client/linux/minidump_writer/linux_dumper.h"
+
+#include <assert.h>
+#include <elf.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <stddef.h>
+#include <string.h>
+
+#include "client/linux/minidump_writer/line_reader.h"
+#include "common/linux/elfutils.h"
+#include "common/linux/file_id.h"
+#include "common/linux/linux_libc_support.h"
+#include "common/linux/memory_mapped_file.h"
+#include "common/linux/safe_readlink.h"
+#include "third_party/lss/linux_syscall_support.h"
+
+static const char kMappedFileUnsafePrefix[] = "/dev/";
+static const char kDeletedSuffix[] = " (deleted)";
+static const char kReservedFlags[] = " ---p";
+
+inline static bool IsMappedFileOpenUnsafe(
+    const google_breakpad::MappingInfo& mapping) {
+  // It is unsafe to attempt to open a mapped file that lives under /dev,
+  // because the semantics of the open may be driver-specific so we'd risk
+  // hanging the crash dumper. And a file in /dev/ almost certainly has no
+  // ELF file identifier anyways.
+  return my_strncmp(mapping.name,
+                    kMappedFileUnsafePrefix,
+                    sizeof(kMappedFileUnsafePrefix) - 1) == 0;
+}
+
+namespace google_breakpad {
+
+// All interesting auvx entry types are below AT_SYSINFO_EHDR
+#define AT_MAX AT_SYSINFO_EHDR
+
+LinuxDumper::LinuxDumper(pid_t pid)
+    : pid_(pid),
+      crash_address_(0),
+      crash_signal_(0),
+      crash_thread_(pid),
+      threads_(&allocator_, 8),
+      mappings_(&allocator_),
+      auxv_(&allocator_, AT_MAX + 1) {
+  // The passed-in size to the constructor (above) is only a hint.
+  // Must call .resize() to do actual initialization of the elements.
+  auxv_.resize(AT_MAX + 1);
+}
+
+LinuxDumper::~LinuxDumper() {
+}
+
+bool LinuxDumper::Init() {
+  return ReadAuxv() && EnumerateThreads() && EnumerateMappings();
+}
+
+bool
+LinuxDumper::ElfFileIdentifierForMapping(const MappingInfo& mapping,
+                                         bool member,
+                                         unsigned int mapping_id,
+                                         uint8_t identifier[sizeof(MDGUID)]) {
+  assert(!member || mapping_id < mappings_.size());
+  my_memset(identifier, 0, sizeof(MDGUID));
+  if (IsMappedFileOpenUnsafe(mapping))
+    return false;
+
+  // Special-case linux-gate because it's not a real file.
+  if (my_strcmp(mapping.name, kLinuxGateLibraryName) == 0) {
+    void* linux_gate = NULL;
+    if (pid_ == sys_getpid()) {
+      linux_gate = reinterpret_cast<void*>(mapping.start_addr);
+    } else {
+      linux_gate = allocator_.Alloc(mapping.size);
+      CopyFromProcess(linux_gate, pid_,
+                      reinterpret_cast<const void*>(mapping.start_addr),
+                      mapping.size);
+    }
+    return FileID::ElfFileIdentifierFromMappedFile(linux_gate, identifier);
+  }
+
+  char filename[NAME_MAX];
+  size_t filename_len = my_strlen(mapping.name);
+  if (filename_len >= NAME_MAX) {
+    assert(false);
+    return false;
+  }
+  my_memcpy(filename, mapping.name, filename_len);
+  filename[filename_len] = '\0';
+  bool filename_modified = HandleDeletedFileInMapping(filename);
+
+  MemoryMappedFile mapped_file(filename, mapping.offset);
+  if (!mapped_file.data() || mapped_file.size() < SELFMAG)
+    return false;
+
+  bool success =
+      FileID::ElfFileIdentifierFromMappedFile(mapped_file.data(), identifier);
+  if (success && member && filename_modified) {
+    mappings_[mapping_id]->name[filename_len -
+                                sizeof(kDeletedSuffix) + 1] = '\0';
+  }
+
+  return success;
+}
+
+namespace {
+bool ElfFileSoNameFromMappedFile(
+    const void* elf_base, char* soname, size_t soname_size) {
+  if (!IsValidElf(elf_base)) {
+    // Not ELF
+    return false;
+  }
+
+  const void* segment_start;
+  size_t segment_size;
+  int elf_class;
+  if (!FindElfSection(elf_base, ".dynamic", SHT_DYNAMIC,
+                      &segment_start, &segment_size, &elf_class)) {
+    // No dynamic section
+    return false;
+  }
+
+  const void* dynstr_start;
+  size_t dynstr_size;
+  if (!FindElfSection(elf_base, ".dynstr", SHT_STRTAB,
+                      &dynstr_start, &dynstr_size, &elf_class)) {
+    // No dynstr section
+    return false;
+  }
+
+  const ElfW(Dyn)* dynamic = static_cast<const ElfW(Dyn)*>(segment_start);
+  size_t dcount = segment_size / sizeof(ElfW(Dyn));
+  for (const ElfW(Dyn)* dyn = dynamic; dyn < dynamic + dcount; ++dyn) {
+    if (dyn->d_tag == DT_SONAME) {
+      const char* dynstr = static_cast<const char*>(dynstr_start);
+      if (dyn->d_un.d_val >= dynstr_size) {
+        // Beyond the end of the dynstr section
+        return false;
+      }
+      const char* str = dynstr + dyn->d_un.d_val;
+      const size_t maxsize = dynstr_size - dyn->d_un.d_val;
+      my_strlcpy(soname, str, maxsize < soname_size ? maxsize : soname_size);
+      return true;
+    }
+  }
+
+  // Did not find SONAME
+  return false;
+}
+
+// Find the shared object name (SONAME) by examining the ELF information
+// for |mapping|. If the SONAME is found copy it into the passed buffer
+// |soname| and return true. The size of the buffer is |soname_size|.
+// The SONAME will be truncated if it is too long to fit in the buffer.
+bool ElfFileSoName(
+    const MappingInfo& mapping, char* soname, size_t soname_size) {
+  if (IsMappedFileOpenUnsafe(mapping)) {
+    // Not safe
+    return false;
+  }
+
+  char filename[NAME_MAX];
+  size_t filename_len = my_strlen(mapping.name);
+  if (filename_len >= NAME_MAX) {
+    assert(false);
+    // name too long
+    return false;
+  }
+
+  my_memcpy(filename, mapping.name, filename_len);
+  filename[filename_len] = '\0';
+
+  MemoryMappedFile mapped_file(filename, mapping.offset);
+  if (!mapped_file.data() || mapped_file.size() < SELFMAG) {
+    // mmap failed
+    return false;
+  }
+
+  return ElfFileSoNameFromMappedFile(mapped_file.data(), soname, soname_size);
+}
+
+}  // namespace
+
+
+// static
+void LinuxDumper::GetMappingEffectiveNameAndPath(const MappingInfo& mapping,
+                                                 char* file_path,
+                                                 size_t file_path_size,
+                                                 char* file_name,
+                                                 size_t file_name_size) {
+  my_strlcpy(file_path, mapping.name, file_path_size);
+
+  // If an executable is mapped from a non-zero offset, this is likely because
+  // the executable was loaded directly from inside an archive file (e.g., an
+  // apk on Android). We try to find the name of the shared object (SONAME) by
+  // looking in the file for ELF sections.
+  bool mapped_from_archive = false;
+  if (mapping.exec && mapping.offset != 0)
+    mapped_from_archive = ElfFileSoName(mapping, file_name, file_name_size);
+
+  if (mapped_from_archive) {
+    // Some tools (e.g., stackwalk) extract the basename from the pathname. In
+    // this case, we append the file_name to the mapped archive path as follows:
+    //   file_name := libname.so
+    //   file_path := /path/to/ARCHIVE.APK/libname.so
+    if (my_strlen(file_path) + 1 + my_strlen(file_name) < file_path_size) {
+      my_strlcat(file_path, "/", file_path_size);
+      my_strlcat(file_path, file_name, file_path_size);
+    }
+  } else {
+    // Common case:
+    //   file_path := /path/to/libname.so
+    //   file_name := libname.so
+    const char* basename = my_strrchr(file_path, '/');
+    basename = basename == NULL ? file_path : (basename + 1);
+    my_strlcpy(file_name, basename, file_name_size);
+  }
+}
+
+bool LinuxDumper::ReadAuxv() {
+  char auxv_path[NAME_MAX];
+  if (!BuildProcPath(auxv_path, pid_, "auxv")) {
+    return false;
+  }
+
+  int fd = sys_open(auxv_path, O_RDONLY, 0);
+  if (fd < 0) {
+    return false;
+  }
+
+  elf_aux_entry one_aux_entry;
+  bool res = false;
+  while (sys_read(fd,
+                  &one_aux_entry,
+                  sizeof(elf_aux_entry)) == sizeof(elf_aux_entry) &&
+         one_aux_entry.a_type != AT_NULL) {
+    if (one_aux_entry.a_type <= AT_MAX) {
+      auxv_[one_aux_entry.a_type] = one_aux_entry.a_un.a_val;
+      res = true;
+    }
+  }
+  sys_close(fd);
+  return res;
+}
+
+bool LinuxDumper::EnumerateMappings() {
+  char maps_path[NAME_MAX];
+  if (!BuildProcPath(maps_path, pid_, "maps"))
+    return false;
+
+  // linux_gate_loc is the beginning of the kernel's mapping of
+  // linux-gate.so in the process.  It doesn't actually show up in the
+  // maps list as a filename, but it can be found using the AT_SYSINFO_EHDR
+  // aux vector entry, which gives the information necessary to special
+  // case its entry when creating the list of mappings.
+  // See http://www.trilithium.com/johan/2005/08/linux-gate/ for more
+  // information.
+  const void* linux_gate_loc =
+      reinterpret_cast<void *>(auxv_[AT_SYSINFO_EHDR]);
+  // Although the initial executable is usually the first mapping, it's not
+  // guaranteed (see http://crosbug.com/25355); therefore, try to use the
+  // actual entry point to find the mapping.
+  const void* entry_point_loc = reinterpret_cast<void *>(auxv_[AT_ENTRY]);
+
+  const int fd = sys_open(maps_path, O_RDONLY, 0);
+  if (fd < 0)
+    return false;
+  LineReader* const line_reader = new(allocator_) LineReader(fd);
+
+  const char* line;
+  unsigned line_len;
+  while (line_reader->GetNextLine(&line, &line_len)) {
+    uintptr_t start_addr, end_addr, offset;
+
+    const char* i1 = my_read_hex_ptr(&start_addr, line);
+    if (*i1 == '-') {
+      const char* i2 = my_read_hex_ptr(&end_addr, i1 + 1);
+      if (*i2 == ' ') {
+        bool exec = (*(i2 + 3) == 'x');
+        const char* i3 = my_read_hex_ptr(&offset, i2 + 6 /* skip ' rwxp ' */);
+        if (*i3 == ' ') {
+          const char* name = NULL;
+          // Only copy name if the name is a valid path name, or if
+          // it's the VDSO image.
+          if (((name = my_strchr(line, '/')) == NULL) &&
+              linux_gate_loc &&
+              reinterpret_cast<void*>(start_addr) == linux_gate_loc) {
+            name = kLinuxGateLibraryName;
+            offset = 0;
+          }
+          // Merge adjacent mappings with the same name into one module,
+          // assuming they're a single library mapped by the dynamic linker
+          if (name && !mappings_.empty()) {
+            MappingInfo* module = mappings_.back();
+            if ((start_addr == module->start_addr + module->size) &&
+                (my_strlen(name) == my_strlen(module->name)) &&
+                (my_strncmp(name, module->name, my_strlen(name)) == 0)) {
+              module->size = end_addr - module->start_addr;
+              line_reader->PopLine(line_len);
+              continue;
+            }
+          }
+          // Also merge mappings that result from address ranges that the
+          // linker reserved but which a loaded library did not use. These
+          // appear as an anonymous private mapping with no access flags set
+          // and which directly follow an executable mapping.
+          if (!name && !mappings_.empty()) {
+            MappingInfo* module = mappings_.back();
+            if ((start_addr == module->start_addr + module->size) &&
+                module->exec &&
+                module->name[0] == '/' &&
+                offset == 0 && my_strncmp(i2,
+                                          kReservedFlags,
+                                          sizeof(kReservedFlags) - 1) == 0) {
+              module->size = end_addr - module->start_addr;
+              line_reader->PopLine(line_len);
+              continue;
+            }
+          }
+          MappingInfo* const module = new(allocator_) MappingInfo;
+          my_memset(module, 0, sizeof(MappingInfo));
+          module->start_addr = start_addr;
+          module->size = end_addr - start_addr;
+          module->offset = offset;
+          module->exec = exec;
+          if (name != NULL) {
+            const unsigned l = my_strlen(name);
+            if (l < sizeof(module->name))
+              my_memcpy(module->name, name, l);
+          }
+          // If this is the entry-point mapping, and it's not already the
+          // first one, then we need to make it be first.  This is because
+          // the minidump format assumes the first module is the one that
+          // corresponds to the main executable (as codified in
+          // processor/minidump.cc:MinidumpModuleList::GetMainModule()).
+          if (entry_point_loc &&
+              (entry_point_loc >=
+                  reinterpret_cast<void*>(module->start_addr)) &&
+              (entry_point_loc <
+                  reinterpret_cast<void*>(module->start_addr+module->size)) &&
+              !mappings_.empty()) {
+            // push the module onto the front of the list.
+            mappings_.resize(mappings_.size() + 1);
+            for (size_t idx = mappings_.size() - 1; idx > 0; idx--)
+              mappings_[idx] = mappings_[idx - 1];
+            mappings_[0] = module;
+          } else {
+            mappings_.push_back(module);
+          }
+        }
+      }
+    }
+    line_reader->PopLine(line_len);
+  }
+
+  sys_close(fd);
+
+  return !mappings_.empty();
+}
+
+// Get information about the stack, given the stack pointer. We don't try to
+// walk the stack since we might not have all the information needed to do
+// unwind. So we just grab, up to, 32k of stack.
+bool LinuxDumper::GetStackInfo(const void** stack, size_t* stack_len,
+                               uintptr_t int_stack_pointer) {
+  // Move the stack pointer to the bottom of the page that it's in.
+  const uintptr_t page_size = getpagesize();
+
+  uint8_t* const stack_pointer =
+      reinterpret_cast<uint8_t*>(int_stack_pointer & ~(page_size - 1));
+
+  // The number of bytes of stack which we try to capture.
+  static const ptrdiff_t kStackToCapture = 32 * 1024;
+
+  const MappingInfo* mapping = FindMapping(stack_pointer);
+  if (!mapping)
+    return false;
+  const ptrdiff_t offset = stack_pointer -
+      reinterpret_cast<uint8_t*>(mapping->start_addr);
+  const ptrdiff_t distance_to_end =
+      static_cast<ptrdiff_t>(mapping->size) - offset;
+  *stack_len = distance_to_end > kStackToCapture ?
+      kStackToCapture : distance_to_end;
+  *stack = stack_pointer;
+  return true;
+}
+
+// Find the mapping which the given memory address falls in.
+const MappingInfo* LinuxDumper::FindMapping(const void* address) const {
+  const uintptr_t addr = (uintptr_t) address;
+
+  for (size_t i = 0; i < mappings_.size(); ++i) {
+    const uintptr_t start = static_cast<uintptr_t>(mappings_[i]->start_addr);
+    if (addr >= start && addr - start < mappings_[i]->size)
+      return mappings_[i];
+  }
+
+  return NULL;
+}
+
+bool LinuxDumper::HandleDeletedFileInMapping(char* path) const {
+  static const size_t kDeletedSuffixLen = sizeof(kDeletedSuffix) - 1;
+
+  // Check for ' (deleted)' in |path|.
+  // |path| has to be at least as long as "/x (deleted)".
+  const size_t path_len = my_strlen(path);
+  if (path_len < kDeletedSuffixLen + 2)
+    return false;
+  if (my_strncmp(path + path_len - kDeletedSuffixLen, kDeletedSuffix,
+                 kDeletedSuffixLen) != 0) {
+    return false;
+  }
+
+  // Check |path| against the /proc/pid/exe 'symlink'.
+  char exe_link[NAME_MAX];
+  char new_path[NAME_MAX];
+  if (!BuildProcPath(exe_link, pid_, "exe"))
+    return false;
+  if (!SafeReadLink(exe_link, new_path))
+    return false;
+  if (my_strcmp(path, new_path) != 0)
+    return false;
+
+  // Check to see if someone actually named their executable 'foo (deleted)'.
+  struct kernel_stat exe_stat;
+  struct kernel_stat new_path_stat;
+  if (sys_stat(exe_link, &exe_stat) == 0 &&
+      sys_stat(new_path, &new_path_stat) == 0 &&
+      exe_stat.st_dev == new_path_stat.st_dev &&
+      exe_stat.st_ino == new_path_stat.st_ino) {
+    return false;
+  }
+
+  my_memcpy(path, exe_link, NAME_MAX);
+  return true;
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/client/linux/minidump_writer/linux_dumper.h b/google-breakpad/src/client/linux/minidump_writer/linux_dumper.h
new file mode 100644
index 0000000..87dfadb
--- /dev/null
+++ b/google-breakpad/src/client/linux/minidump_writer/linux_dumper.h
@@ -0,0 +1,189 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// linux_dumper.h: Define the google_breakpad::LinuxDumper class, which
+// is a base class for extracting information of a crashed process. It
+// was originally a complete implementation using the ptrace API, but
+// has been refactored to allow derived implementations supporting both
+// ptrace and core dump. A portion of the original implementation is now
+// in google_breakpad::LinuxPtraceDumper (see linux_ptrace_dumper.h for
+// details).
+
+#ifndef CLIENT_LINUX_MINIDUMP_WRITER_LINUX_DUMPER_H_
+#define CLIENT_LINUX_MINIDUMP_WRITER_LINUX_DUMPER_H_
+
+#include <elf.h>
+#include <linux/limits.h>
+#include <stdint.h>
+#include <sys/types.h>
+#include <sys/user.h>
+
+#include "client/linux/dump_writer_common/mapping_info.h"
+#include "client/linux/dump_writer_common/thread_info.h"
+#include "common/memory.h"
+#include "google_breakpad/common/minidump_format.h"
+
+namespace google_breakpad {
+
+// Typedef for our parsing of the auxv variables in /proc/pid/auxv.
+#if defined(__i386) || defined(__ARM_EABI__) || \
+ (defined(__mips__) && _MIPS_SIM == _ABIO32)
+typedef Elf32_auxv_t elf_aux_entry;
+#elif defined(__x86_64) || defined(__aarch64__) || \
+     (defined(__mips__) && _MIPS_SIM != _ABIO32)
+typedef Elf64_auxv_t elf_aux_entry;
+#endif
+
+typedef __typeof__(((elf_aux_entry*) 0)->a_un.a_val) elf_aux_val_t;
+
+// When we find the VDSO mapping in the process's address space, this
+// is the name we use for it when writing it to the minidump.
+// This should always be less than NAME_MAX!
+const char kLinuxGateLibraryName[] = "linux-gate.so";
+
+class LinuxDumper {
+ public:
+  explicit LinuxDumper(pid_t pid);
+
+  virtual ~LinuxDumper();
+
+  // Parse the data for |threads| and |mappings|.
+  virtual bool Init();
+
+  // Return true if the dumper performs a post-mortem dump.
+  virtual bool IsPostMortem() const = 0;
+
+  // Suspend/resume all threads in the given process.
+  virtual bool ThreadsSuspend() = 0;
+  virtual bool ThreadsResume() = 0;
+
+  // Read information about the |index|-th thread of |threads_|.
+  // Returns true on success. One must have called |ThreadsSuspend| first.
+  virtual bool GetThreadInfoByIndex(size_t index, ThreadInfo* info) = 0;
+
+  // These are only valid after a call to |Init|.
+  const wasteful_vector<pid_t> &threads() { return threads_; }
+  const wasteful_vector<MappingInfo*> &mappings() { return mappings_; }
+  const MappingInfo* FindMapping(const void* address) const;
+  const wasteful_vector<elf_aux_val_t>& auxv() { return auxv_; }
+
+  // Find a block of memory to take as the stack given the top of stack pointer.
+  //   stack: (output) the lowest address in the memory area
+  //   stack_len: (output) the length of the memory area
+  //   stack_top: the current top of the stack
+  bool GetStackInfo(const void** stack, size_t* stack_len, uintptr_t stack_top);
+
+  PageAllocator* allocator() { return &allocator_; }
+
+  // Copy content of |length| bytes from a given process |child|,
+  // starting from |src|, into |dest|. Returns true on success.
+  virtual bool CopyFromProcess(void* dest, pid_t child, const void* src,
+                               size_t length) = 0;
+
+  // Builds a proc path for a certain pid for a node (/proc/<pid>/<node>).
+  // |path| is a character array of at least NAME_MAX bytes to return the
+  // result.|node| is the final node without any slashes. Returns true on
+  // success.
+  virtual bool BuildProcPath(char* path, pid_t pid, const char* node) const = 0;
+
+  // Generate a File ID from the .text section of a mapped entry.
+  // If not a member, mapping_id is ignored. This method can also manipulate the
+  // |mapping|.name to truncate "(deleted)" from the file name if necessary.
+  bool ElfFileIdentifierForMapping(const MappingInfo& mapping,
+                                   bool member,
+                                   unsigned int mapping_id,
+                                   uint8_t identifier[sizeof(MDGUID)]);
+
+  uintptr_t crash_address() const { return crash_address_; }
+  void set_crash_address(uintptr_t crash_address) {
+    crash_address_ = crash_address;
+  }
+
+  int crash_signal() const { return crash_signal_; }
+  void set_crash_signal(int crash_signal) { crash_signal_ = crash_signal; }
+
+  pid_t crash_thread() const { return crash_thread_; }
+  void set_crash_thread(pid_t crash_thread) { crash_thread_ = crash_thread; }
+
+  // Extracts the effective path and file name of from |mapping|. In most cases
+  // the effective name/path are just the mapping's path and basename. In some
+  // other cases, however, a library can be mapped from an archive (e.g., when
+  // loading .so libs from an apk on Android) and this method is able to
+  // reconstruct the original file name.
+  static void GetMappingEffectiveNameAndPath(const MappingInfo& mapping,
+                                             char* file_path,
+                                             size_t file_path_size,
+                                             char* file_name,
+                                             size_t file_name_size);
+
+ protected:
+  bool ReadAuxv();
+
+  virtual bool EnumerateMappings();
+
+  virtual bool EnumerateThreads() = 0;
+
+  // For the case where a running program has been deleted, it'll show up in
+  // /proc/pid/maps as "/path/to/program (deleted)". If this is the case, then
+  // see if '/path/to/program (deleted)' matches /proc/pid/exe and return
+  // /proc/pid/exe in |path| so ELF identifier generation works correctly. This
+  // also checks to see if '/path/to/program (deleted)' exists, so it does not
+  // get fooled by a poorly named binary.
+  // For programs that don't end with ' (deleted)', this is a no-op.
+  // This assumes |path| is a buffer with length NAME_MAX.
+  // Returns true if |path| is modified.
+  bool HandleDeletedFileInMapping(char* path) const;
+
+   // ID of the crashed process.
+  const pid_t pid_;
+
+  // Virtual address at which the process crashed.
+  uintptr_t crash_address_;
+
+  // Signal that terminated the crashed process.
+  int crash_signal_;
+
+  // ID of the crashed thread.
+  pid_t crash_thread_;
+
+  mutable PageAllocator allocator_;
+
+  // IDs of all the threads.
+  wasteful_vector<pid_t> threads_;
+
+  // Info from /proc/<pid>/maps.
+  wasteful_vector<MappingInfo*> mappings_;
+
+  // Info from /proc/<pid>/auxv
+  wasteful_vector<elf_aux_val_t> auxv_;
+};
+
+}  // namespace google_breakpad
+
+#endif  // CLIENT_LINUX_HANDLER_LINUX_DUMPER_H_
diff --git a/google-breakpad/src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc b/google-breakpad/src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc
new file mode 100644
index 0000000..4ccb720
--- /dev/null
+++ b/google-breakpad/src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc
@@ -0,0 +1,94 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Helper program for the linux_dumper class, which creates a bunch of
+// threads. The first word of each thread's stack is set to the thread
+// id.
+
+#include <pthread.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/syscall.h>
+#include <unistd.h>
+
+#include "common/scoped_ptr.h"
+#include "third_party/lss/linux_syscall_support.h"
+
+#if defined(__ARM_EABI__)
+#define TID_PTR_REGISTER "r3"
+#elif defined(__aarch64__)
+#define TID_PTR_REGISTER "x3"
+#elif defined(__i386)
+#define TID_PTR_REGISTER "ecx"
+#elif defined(__x86_64)
+#define TID_PTR_REGISTER "rcx"
+#elif defined(__mips__)
+#define TID_PTR_REGISTER "$1"
+#else
+#error This test has not been ported to this platform.
+#endif
+
+void *thread_function(void *data) {
+  int pipefd = *static_cast<int *>(data);
+  volatile pid_t thread_id = syscall(__NR_gettid);
+  // Signal parent that a thread has started.
+  uint8_t byte = 1;
+  if (write(pipefd, &byte, sizeof(byte)) != sizeof(byte)) {
+    perror("ERROR: parent notification failed");
+    return NULL;
+  }
+  register volatile pid_t *thread_id_ptr asm(TID_PTR_REGISTER) = &thread_id;
+  while (true)
+    asm volatile ("" : : "r" (thread_id_ptr));
+  return NULL;
+}
+
+int main(int argc, char *argv[]) {
+  if (argc < 3) {
+    fprintf(stderr,
+            "usage: linux_dumper_unittest_helper <pipe fd> <# of threads>\n");
+    return 1;
+  }
+  int pipefd = atoi(argv[1]);
+  int num_threads = atoi(argv[2]);
+  if (num_threads < 1) {
+    fprintf(stderr, "ERROR: number of threads is 0");
+    return 1;
+  }
+  google_breakpad::scoped_array<pthread_t> threads(new pthread_t[num_threads]);
+  pthread_attr_t thread_attributes;
+  pthread_attr_init(&thread_attributes);
+  pthread_attr_setdetachstate(&thread_attributes, PTHREAD_CREATE_DETACHED);
+  for (int i = 1; i < num_threads; i++) {
+    pthread_create(&threads[i], &thread_attributes, &thread_function, &pipefd);
+  }
+  thread_function(&pipefd);
+  return 0;
+}
diff --git a/google-breakpad/src/client/linux/minidump_writer/linux_ptrace_dumper.cc b/google-breakpad/src/client/linux/minidump_writer/linux_ptrace_dumper.cc
new file mode 100644
index 0000000..7a2cfb9
--- /dev/null
+++ b/google-breakpad/src/client/linux/minidump_writer/linux_ptrace_dumper.cc
@@ -0,0 +1,341 @@
+// Copyright (c) 2012, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// linux_ptrace_dumper.cc: Implement google_breakpad::LinuxPtraceDumper.
+// See linux_ptrace_dumper.h for detals.
+// This class was originally splitted from google_breakpad::LinuxDumper.
+
+// This code deals with the mechanics of getting information about a crashed
+// process. Since this code may run in a compromised address space, the same
+// rules apply as detailed at the top of minidump_writer.h: no libc calls and
+// use the alternative allocator.
+
+#include "client/linux/minidump_writer/linux_ptrace_dumper.h"
+
+#include <asm/ptrace.h>
+#include <assert.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <stddef.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/ptrace.h>
+#include <sys/uio.h>
+#include <sys/wait.h>
+
+#if defined(__i386)
+#include <cpuid.h>
+#endif
+
+#include "client/linux/minidump_writer/directory_reader.h"
+#include "client/linux/minidump_writer/line_reader.h"
+#include "common/linux/linux_libc_support.h"
+#include "third_party/lss/linux_syscall_support.h"
+
+// Suspends a thread by attaching to it.
+static bool SuspendThread(pid_t pid) {
+  // This may fail if the thread has just died or debugged.
+  errno = 0;
+  if (sys_ptrace(PTRACE_ATTACH, pid, NULL, NULL) != 0 &&
+      errno != 0) {
+    return false;
+  }
+  while (sys_waitpid(pid, NULL, __WALL) < 0) {
+    if (errno != EINTR) {
+      sys_ptrace(PTRACE_DETACH, pid, NULL, NULL);
+      return false;
+    }
+  }
+#if defined(__i386) || defined(__x86_64)
+  // On x86, the stack pointer is NULL or -1, when executing trusted code in
+  // the seccomp sandbox. Not only does this cause difficulties down the line
+  // when trying to dump the thread's stack, it also results in the minidumps
+  // containing information about the trusted threads. This information is
+  // generally completely meaningless and just pollutes the minidumps.
+  // We thus test the stack pointer and exclude any threads that are part of
+  // the seccomp sandbox's trusted code.
+  user_regs_struct regs;
+  if (sys_ptrace(PTRACE_GETREGS, pid, NULL, &regs) == -1 ||
+#if defined(__i386)
+      !regs.esp
+#elif defined(__x86_64)
+      !regs.rsp
+#endif
+      ) {
+    sys_ptrace(PTRACE_DETACH, pid, NULL, NULL);
+    return false;
+  }
+#endif
+  return true;
+}
+
+// Resumes a thread by detaching from it.
+static bool ResumeThread(pid_t pid) {
+  return sys_ptrace(PTRACE_DETACH, pid, NULL, NULL) >= 0;
+}
+
+namespace google_breakpad {
+
+LinuxPtraceDumper::LinuxPtraceDumper(pid_t pid)
+    : LinuxDumper(pid),
+      threads_suspended_(false) {
+}
+
+bool LinuxPtraceDumper::BuildProcPath(char* path, pid_t pid,
+                                      const char* node) const {
+  if (!path || !node || pid <= 0)
+    return false;
+
+  size_t node_len = my_strlen(node);
+  if (node_len == 0)
+    return false;
+
+  const unsigned pid_len = my_uint_len(pid);
+  const size_t total_length = 6 + pid_len + 1 + node_len;
+  if (total_length >= NAME_MAX)
+    return false;
+
+  my_memcpy(path, "/proc/", 6);
+  my_uitos(path + 6, pid, pid_len);
+  path[6 + pid_len] = '/';
+  my_memcpy(path + 6 + pid_len + 1, node, node_len);
+  path[total_length] = '\0';
+  return true;
+}
+
+bool LinuxPtraceDumper::CopyFromProcess(void* dest, pid_t child,
+                                        const void* src, size_t length) {
+  unsigned long tmp = 55;
+  size_t done = 0;
+  static const size_t word_size = sizeof(tmp);
+  uint8_t* const local = (uint8_t*) dest;
+  uint8_t* const remote = (uint8_t*) src;
+
+  while (done < length) {
+    const size_t l = (length - done > word_size) ? word_size : (length - done);
+    if (sys_ptrace(PTRACE_PEEKDATA, child, remote + done, &tmp) == -1) {
+      tmp = 0;
+    }
+    my_memcpy(local + done, &tmp, l);
+    done += l;
+  }
+  return true;
+}
+
+// Read thread info from /proc/$pid/status.
+// Fill out the |tgid|, |ppid| and |pid| members of |info|. If unavailable,
+// these members are set to -1. Returns true iff all three members are
+// available.
+bool LinuxPtraceDumper::GetThreadInfoByIndex(size_t index, ThreadInfo* info) {
+  if (index >= threads_.size())
+    return false;
+
+  pid_t tid = threads_[index];
+
+  assert(info != NULL);
+  char status_path[NAME_MAX];
+  if (!BuildProcPath(status_path, tid, "status"))
+    return false;
+
+  const int fd = sys_open(status_path, O_RDONLY, 0);
+  if (fd < 0)
+    return false;
+
+  LineReader* const line_reader = new(allocator_) LineReader(fd);
+  const char* line;
+  unsigned line_len;
+
+  info->ppid = info->tgid = -1;
+
+  while (line_reader->GetNextLine(&line, &line_len)) {
+    if (my_strncmp("Tgid:\t", line, 6) == 0) {
+      my_strtoui(&info->tgid, line + 6);
+    } else if (my_strncmp("PPid:\t", line, 6) == 0) {
+      my_strtoui(&info->ppid, line + 6);
+    }
+
+    line_reader->PopLine(line_len);
+  }
+  sys_close(fd);
+
+  if (info->ppid == -1 || info->tgid == -1)
+    return false;
+
+#ifdef PTRACE_GETREGSET
+  struct iovec io;
+  io.iov_base = &info->regs;
+  io.iov_len = sizeof(info->regs);
+  if (sys_ptrace(PTRACE_GETREGSET, tid, (void*)NT_PRSTATUS, (void*)&io) == -1) {
+    return false;
+  }
+
+  io.iov_base = &info->fpregs;
+  io.iov_len = sizeof(info->fpregs);
+  if (sys_ptrace(PTRACE_GETREGSET, tid, (void*)NT_FPREGSET, (void*)&io) == -1) {
+    return false;
+  }
+#else
+  if (sys_ptrace(PTRACE_GETREGS, tid, NULL, &info->regs) == -1) {
+    return false;
+  }
+
+  if (sys_ptrace(PTRACE_GETFPREGS, tid, NULL, &info->fpregs) == -1) {
+    return false;
+  }
+#endif
+
+#if defined(__i386)
+#if !defined(bit_FXSAVE)  // e.g. Clang
+#define bit_FXSAVE bit_FXSR
+#endif
+  // Detect if the CPU supports the FXSAVE/FXRSTOR instructions
+  int eax, ebx, ecx, edx;
+  __cpuid(1, eax, ebx, ecx, edx);
+  if (edx & bit_FXSAVE) {
+    if (sys_ptrace(PTRACE_GETFPXREGS, tid, NULL, &info->fpxregs) == -1) {
+      return false;
+    }
+  } else {
+    memset(&info->fpxregs, 0, sizeof(info->fpxregs));
+  }
+#endif  // defined(__i386)
+
+#if defined(__i386) || defined(__x86_64)
+  for (unsigned i = 0; i < ThreadInfo::kNumDebugRegisters; ++i) {
+    if (sys_ptrace(
+        PTRACE_PEEKUSER, tid,
+        reinterpret_cast<void*> (offsetof(struct user,
+                                          u_debugreg[0]) + i *
+                                 sizeof(debugreg_t)),
+        &info->dregs[i]) == -1) {
+      return false;
+    }
+  }
+#endif
+
+#if defined(__mips__)
+  for (int i = 0; i < 3; ++i) {
+    sys_ptrace(PTRACE_PEEKUSER, tid,
+               reinterpret_cast<void*>(DSP_BASE + (i * 2)), &info->hi[i]);
+    sys_ptrace(PTRACE_PEEKUSER, tid,
+               reinterpret_cast<void*>(DSP_BASE + (i * 2) + 1), &info->lo[i]);
+  }
+  sys_ptrace(PTRACE_PEEKUSER, tid,
+             reinterpret_cast<void*>(DSP_CONTROL), &info->dsp_control);
+#endif
+
+  const uint8_t* stack_pointer;
+#if defined(__i386)
+  my_memcpy(&stack_pointer, &info->regs.esp, sizeof(info->regs.esp));
+#elif defined(__x86_64)
+  my_memcpy(&stack_pointer, &info->regs.rsp, sizeof(info->regs.rsp));
+#elif defined(__ARM_EABI__)
+  my_memcpy(&stack_pointer, &info->regs.ARM_sp, sizeof(info->regs.ARM_sp));
+#elif defined(__aarch64__)
+  my_memcpy(&stack_pointer, &info->regs.sp, sizeof(info->regs.sp));
+#elif defined(__mips__)
+  stack_pointer =
+      reinterpret_cast<uint8_t*>(info->regs.regs[MD_CONTEXT_MIPS_REG_SP]);
+#else
+#error "This code hasn't been ported to your platform yet."
+#endif
+  info->stack_pointer = reinterpret_cast<uintptr_t>(stack_pointer);
+
+  return true;
+}
+
+bool LinuxPtraceDumper::IsPostMortem() const {
+  return false;
+}
+
+bool LinuxPtraceDumper::ThreadsSuspend() {
+  if (threads_suspended_)
+    return true;
+  for (size_t i = 0; i < threads_.size(); ++i) {
+    if (!SuspendThread(threads_[i])) {
+      // If the thread either disappeared before we could attach to it, or if
+      // it was part of the seccomp sandbox's trusted code, it is OK to
+      // silently drop it from the minidump.
+      if (i < threads_.size() - 1) {
+        my_memmove(&threads_[i], &threads_[i + 1],
+                   (threads_.size() - i - 1) * sizeof(threads_[i]));
+      }
+      threads_.resize(threads_.size() - 1);
+      --i;
+    }
+  }
+  threads_suspended_ = true;
+  return threads_.size() > 0;
+}
+
+bool LinuxPtraceDumper::ThreadsResume() {
+  if (!threads_suspended_)
+    return false;
+  bool good = true;
+  for (size_t i = 0; i < threads_.size(); ++i)
+    good &= ResumeThread(threads_[i]);
+  threads_suspended_ = false;
+  return good;
+}
+
+// Parse /proc/$pid/task to list all the threads of the process identified by
+// pid.
+bool LinuxPtraceDumper::EnumerateThreads() {
+  char task_path[NAME_MAX];
+  if (!BuildProcPath(task_path, pid_, "task"))
+    return false;
+
+  const int fd = sys_open(task_path, O_RDONLY | O_DIRECTORY, 0);
+  if (fd < 0)
+    return false;
+  DirectoryReader* dir_reader = new(allocator_) DirectoryReader(fd);
+
+  // The directory may contain duplicate entries which we filter by assuming
+  // that they are consecutive.
+  int last_tid = -1;
+  const char* dent_name;
+  while (dir_reader->GetNextEntry(&dent_name)) {
+    if (my_strcmp(dent_name, ".") &&
+        my_strcmp(dent_name, "..")) {
+      int tid = 0;
+      if (my_strtoui(&tid, dent_name) &&
+          last_tid != tid) {
+        last_tid = tid;
+        threads_.push_back(tid);
+      }
+    }
+    dir_reader->PopEntry();
+  }
+
+  sys_close(fd);
+  return true;
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/client/linux/minidump_writer/linux_ptrace_dumper.h b/google-breakpad/src/client/linux/minidump_writer/linux_ptrace_dumper.h
new file mode 100644
index 0000000..2ce834b
--- /dev/null
+++ b/google-breakpad/src/client/linux/minidump_writer/linux_ptrace_dumper.h
@@ -0,0 +1,92 @@
+// Copyright (c) 2012, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// linux_ptrace_dumper.h: Define the google_breakpad::LinuxPtraceDumper
+// class, which is derived from google_breakpad::LinuxDumper to extract
+// information from a crashed process via ptrace.
+// This class was originally splitted from google_breakpad::LinuxDumper.
+
+#ifndef CLIENT_LINUX_MINIDUMP_WRITER_LINUX_PTRACE_DUMPER_H_
+#define CLIENT_LINUX_MINIDUMP_WRITER_LINUX_PTRACE_DUMPER_H_
+
+#include "client/linux/minidump_writer/linux_dumper.h"
+
+namespace google_breakpad {
+
+class LinuxPtraceDumper : public LinuxDumper {
+ public:
+  // Constructs a dumper for extracting information of a given process
+  // with a process ID of |pid|.
+  explicit LinuxPtraceDumper(pid_t pid);
+
+  // Implements LinuxDumper::BuildProcPath().
+  // Builds a proc path for a certain pid for a node (/proc/<pid>/<node>).
+  // |path| is a character array of at least NAME_MAX bytes to return the
+  // result. |node| is the final node without any slashes. Returns true on
+  // success.
+  virtual bool BuildProcPath(char* path, pid_t pid, const char* node) const;
+
+  // Implements LinuxDumper::CopyFromProcess().
+  // Copies content of |length| bytes from a given process |child|,
+  // starting from |src|, into |dest|. This method uses ptrace to extract
+  // the content from the target process. Always returns true.
+  virtual bool CopyFromProcess(void* dest, pid_t child, const void* src,
+                               size_t length);
+
+  // Implements LinuxDumper::GetThreadInfoByIndex().
+  // Reads information about the |index|-th thread of |threads_|.
+  // Returns true on success. One must have called |ThreadsSuspend| first.
+  virtual bool GetThreadInfoByIndex(size_t index, ThreadInfo* info);
+
+  // Implements LinuxDumper::IsPostMortem().
+  // Always returns false to indicate this dumper performs a dump of
+  // a crashed process via ptrace.
+  virtual bool IsPostMortem() const;
+
+  // Implements LinuxDumper::ThreadsSuspend().
+  // Suspends all threads in the given process. Returns true on success.
+  virtual bool ThreadsSuspend();
+
+  // Implements LinuxDumper::ThreadsResume().
+  // Resumes all threads in the given process. Returns true on success.
+  virtual bool ThreadsResume();
+
+ protected:
+  // Implements LinuxDumper::EnumerateThreads().
+  // Enumerates all threads of the given process into |threads_|.
+  virtual bool EnumerateThreads();
+
+ private:
+  // Set to true if all threads of the crashed process are suspended.
+  bool threads_suspended_;
+};
+
+}  // namespace google_breakpad
+
+#endif  // CLIENT_LINUX_HANDLER_LINUX_PTRACE_DUMPER_H_
diff --git a/google-breakpad/src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc b/google-breakpad/src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc
new file mode 100644
index 0000000..57202d3
--- /dev/null
+++ b/google-breakpad/src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc
@@ -0,0 +1,468 @@
+// Copyright (c) 2009, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// linux_ptrace_dumper_unittest.cc:
+// Unit tests for google_breakpad::LinuxPtraceDumper.
+//
+// This file was renamed from linux_dumper_unittest.cc and modified due
+// to LinuxDumper being splitted into two classes.
+
+#include <errno.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <unistd.h>
+#include <signal.h>
+#include <stdint.h>
+#include <string.h>
+#include <sys/mman.h>
+#include <sys/prctl.h>
+#include <sys/poll.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+
+#include <string>
+
+#include "breakpad_googletest_includes.h"
+#include "client/linux/minidump_writer/linux_ptrace_dumper.h"
+#include "client/linux/minidump_writer/minidump_writer_unittest_utils.h"
+#include "common/linux/eintr_wrapper.h"
+#include "common/linux/file_id.h"
+#include "common/linux/ignore_ret.h"
+#include "common/linux/safe_readlink.h"
+#include "common/memory.h"
+#include "common/using_std_string.h"
+
+#ifndef PR_SET_PTRACER
+#define PR_SET_PTRACER 0x59616d61
+#endif
+
+using namespace google_breakpad;
+
+namespace {
+
+typedef testing::Test LinuxPtraceDumperTest;
+
+/* Fixture for running tests in a child process. */
+class LinuxPtraceDumperChildTest : public testing::Test {
+ protected:
+  virtual void SetUp() {
+    child_pid_ = fork();
+#ifndef __ANDROID__
+    prctl(PR_SET_PTRACER, child_pid_);
+#endif
+  }
+
+  /* Gtest is calling TestBody from this class, which sets up a child
+   * process in which the RealTestBody virtual member is called.
+   * As such, TestBody is not supposed to be overridden in derived classes.
+   */
+  virtual void TestBody() /* final */ {
+    if (child_pid_ == 0) {
+      // child process
+      RealTestBody();
+      exit(HasFatalFailure() ? kFatalFailure :
+           (HasNonfatalFailure() ? kNonFatalFailure : 0));
+    }
+
+    ASSERT_TRUE(child_pid_ > 0);
+    int status;
+    waitpid(child_pid_, &status, 0);
+    if (WEXITSTATUS(status) == kFatalFailure) {
+      GTEST_FATAL_FAILURE_("Test failed in child process");
+    } else if (WEXITSTATUS(status) == kNonFatalFailure) {
+      GTEST_NONFATAL_FAILURE_("Test failed in child process");
+    }
+  }
+
+  /* Gtest defines TestBody functions through its macros, but classes
+   * derived from this one need to define RealTestBody instead.
+   * This is achieved by defining a TestBody macro further below.
+   */
+  virtual void RealTestBody() = 0;
+ private:
+  static const int kFatalFailure = 1;
+  static const int kNonFatalFailure = 2;
+
+  pid_t child_pid_;
+};
+
+}  // namespace
+
+/* Replace TestBody declarations within TEST*() with RealTestBody
+ * declarations */
+#define TestBody RealTestBody
+
+TEST_F(LinuxPtraceDumperChildTest, Setup) {
+  LinuxPtraceDumper dumper(getppid());
+}
+
+TEST_F(LinuxPtraceDumperChildTest, FindMappings) {
+  LinuxPtraceDumper dumper(getppid());
+  ASSERT_TRUE(dumper.Init());
+
+  ASSERT_TRUE(dumper.FindMapping(reinterpret_cast<void*>(getpid)));
+  ASSERT_TRUE(dumper.FindMapping(reinterpret_cast<void*>(printf)));
+  ASSERT_FALSE(dumper.FindMapping(NULL));
+}
+
+TEST_F(LinuxPtraceDumperChildTest, ThreadList) {
+  LinuxPtraceDumper dumper(getppid());
+  ASSERT_TRUE(dumper.Init());
+
+  ASSERT_GE(dumper.threads().size(), (size_t)1);
+  bool found = false;
+  for (size_t i = 0; i < dumper.threads().size(); ++i) {
+    if (dumper.threads()[i] == getppid()) {
+      ASSERT_FALSE(found);
+      found = true;
+    }
+  }
+  ASSERT_TRUE(found);
+}
+
+// Helper stack class to close a file descriptor and unmap
+// a mmap'ed mapping.
+class StackHelper {
+ public:
+  StackHelper()
+    : fd_(-1), mapping_(NULL), size_(0) {}
+  ~StackHelper() {
+    if (size_)
+      munmap(mapping_, size_);
+    if (fd_ >= 0)
+      close(fd_);
+  }
+  void Init(int fd, char* mapping, size_t size) {
+    fd_ = fd;
+    mapping_ = mapping;
+    size_ = size;
+  }
+
+  char* mapping() const { return mapping_; }
+  size_t size() const { return size_; }
+
+ private:
+  int fd_;
+  char* mapping_;
+  size_t size_;
+};
+
+class LinuxPtraceDumperMappingsTest : public LinuxPtraceDumperChildTest {
+ protected:
+  virtual void SetUp();
+
+  string helper_path_;
+  size_t page_size_;
+  StackHelper helper_;
+};
+
+void LinuxPtraceDumperMappingsTest::SetUp() {
+  helper_path_ = GetHelperBinary();
+  if (helper_path_.empty()) {
+    FAIL() << "Couldn't find helper binary";
+    exit(1);
+  }
+
+  // mmap two segments out of the helper binary, one
+  // enclosed in the other, but with different protections.
+  page_size_ = sysconf(_SC_PAGESIZE);
+  const size_t kMappingSize = 3 * page_size_;
+  int fd = open(helper_path_.c_str(), O_RDONLY);
+  ASSERT_NE(-1, fd) << "Failed to open file: " << helper_path_
+                    << ", Error: " << strerror(errno);
+  char* mapping =
+    reinterpret_cast<char*>(mmap(NULL,
+                                 kMappingSize,
+                                 PROT_READ,
+                                 MAP_SHARED,
+                                 fd,
+                                 0));
+  ASSERT_TRUE(mapping);
+
+  // Ensure that things get cleaned up.
+  helper_.Init(fd, mapping, kMappingSize);
+
+  // Carve a page out of the first mapping with different permissions.
+  char* inside_mapping =  reinterpret_cast<char*>(
+      mmap(mapping + 2 * page_size_,
+           page_size_,
+           PROT_NONE,
+           MAP_SHARED | MAP_FIXED,
+           fd,
+           // Map a different offset just to
+           // better test real-world conditions.
+           page_size_));
+  ASSERT_TRUE(inside_mapping);
+
+  LinuxPtraceDumperChildTest::SetUp();
+}
+
+TEST_F(LinuxPtraceDumperMappingsTest, MergedMappings) {
+  // Now check that LinuxPtraceDumper interpreted the mappings properly.
+  LinuxPtraceDumper dumper(getppid());
+  ASSERT_TRUE(dumper.Init());
+  int mapping_count = 0;
+  for (unsigned i = 0; i < dumper.mappings().size(); ++i) {
+    const MappingInfo& mapping = *dumper.mappings()[i];
+    if (strcmp(mapping.name, this->helper_path_.c_str()) == 0) {
+      // This mapping should encompass the entire original mapped
+      // range.
+      EXPECT_EQ(reinterpret_cast<uintptr_t>(this->helper_.mapping()),
+                mapping.start_addr);
+      EXPECT_EQ(this->helper_.size(), mapping.size);
+      EXPECT_EQ(0U, mapping.offset);
+      mapping_count++;
+    }
+  }
+  EXPECT_EQ(1, mapping_count);
+}
+
+TEST_F(LinuxPtraceDumperChildTest, BuildProcPath) {
+  const pid_t pid = getppid();
+  LinuxPtraceDumper dumper(pid);
+
+  char maps_path[NAME_MAX] = "";
+  char maps_path_expected[NAME_MAX];
+  snprintf(maps_path_expected, sizeof(maps_path_expected),
+           "/proc/%d/maps", pid);
+  EXPECT_TRUE(dumper.BuildProcPath(maps_path, pid, "maps"));
+  EXPECT_STREQ(maps_path_expected, maps_path);
+
+  EXPECT_FALSE(dumper.BuildProcPath(NULL, pid, "maps"));
+  EXPECT_FALSE(dumper.BuildProcPath(maps_path, 0, "maps"));
+  EXPECT_FALSE(dumper.BuildProcPath(maps_path, pid, ""));
+  EXPECT_FALSE(dumper.BuildProcPath(maps_path, pid, NULL));
+
+  char long_node[NAME_MAX];
+  size_t long_node_len = NAME_MAX - strlen("/proc/123") - 1;
+  memset(long_node, 'a', long_node_len);
+  long_node[long_node_len] = '\0';
+  EXPECT_FALSE(dumper.BuildProcPath(maps_path, 123, long_node));
+}
+
+#if !defined(__ARM_EABI__) && !defined(__mips__)
+// Ensure that the linux-gate VDSO is included in the mapping list.
+TEST_F(LinuxPtraceDumperChildTest, MappingsIncludeLinuxGate) {
+  LinuxPtraceDumper dumper(getppid());
+  ASSERT_TRUE(dumper.Init());
+
+  void* linux_gate_loc =
+    reinterpret_cast<void *>(dumper.auxv()[AT_SYSINFO_EHDR]);
+  ASSERT_TRUE(linux_gate_loc);
+  bool found_linux_gate = false;
+
+  const wasteful_vector<MappingInfo*> mappings = dumper.mappings();
+  const MappingInfo* mapping;
+  for (unsigned i = 0; i < mappings.size(); ++i) {
+    mapping = mappings[i];
+    if (!strcmp(mapping->name, kLinuxGateLibraryName)) {
+      found_linux_gate = true;
+      break;
+    }
+  }
+  EXPECT_TRUE(found_linux_gate);
+  EXPECT_EQ(linux_gate_loc, reinterpret_cast<void*>(mapping->start_addr));
+  EXPECT_EQ(0, memcmp(linux_gate_loc, ELFMAG, SELFMAG));
+}
+
+// Ensure that the linux-gate VDSO can generate a non-zeroed File ID.
+TEST_F(LinuxPtraceDumperChildTest, LinuxGateMappingID) {
+  LinuxPtraceDumper dumper(getppid());
+  ASSERT_TRUE(dumper.Init());
+
+  bool found_linux_gate = false;
+  const wasteful_vector<MappingInfo*> mappings = dumper.mappings();
+  unsigned index = 0;
+  for (unsigned i = 0; i < mappings.size(); ++i) {
+    if (!strcmp(mappings[i]->name, kLinuxGateLibraryName)) {
+      found_linux_gate = true;
+      index = i;
+      break;
+    }
+  }
+  ASSERT_TRUE(found_linux_gate);
+
+  // Need to suspend the child so ptrace actually works.
+  ASSERT_TRUE(dumper.ThreadsSuspend());
+  uint8_t identifier[sizeof(MDGUID)];
+  ASSERT_TRUE(dumper.ElfFileIdentifierForMapping(*mappings[index],
+                                                 true,
+                                                 index,
+                                                 identifier));
+  uint8_t empty_identifier[sizeof(MDGUID)];
+  memset(empty_identifier, 0, sizeof(empty_identifier));
+  EXPECT_NE(0, memcmp(empty_identifier, identifier, sizeof(identifier)));
+  EXPECT_TRUE(dumper.ThreadsResume());
+}
+#endif
+
+TEST_F(LinuxPtraceDumperChildTest, FileIDsMatch) {
+  // Calculate the File ID of our binary using both
+  // FileID::ElfFileIdentifier and LinuxDumper::ElfFileIdentifierForMapping
+  // and ensure that we get the same result from both.
+  char exe_name[PATH_MAX];
+  ASSERT_TRUE(SafeReadLink("/proc/self/exe", exe_name));
+
+  LinuxPtraceDumper dumper(getppid());
+  ASSERT_TRUE(dumper.Init());
+  const wasteful_vector<MappingInfo*> mappings = dumper.mappings();
+  bool found_exe = false;
+  unsigned i;
+  for (i = 0; i < mappings.size(); ++i) {
+    const MappingInfo* mapping = mappings[i];
+    if (!strcmp(mapping->name, exe_name)) {
+      found_exe = true;
+      break;
+    }
+  }
+  ASSERT_TRUE(found_exe);
+
+  uint8_t identifier1[sizeof(MDGUID)];
+  uint8_t identifier2[sizeof(MDGUID)];
+  EXPECT_TRUE(dumper.ElfFileIdentifierForMapping(*mappings[i], true, i,
+                                                 identifier1));
+  FileID fileid(exe_name);
+  EXPECT_TRUE(fileid.ElfFileIdentifier(identifier2));
+  char identifier_string1[37];
+  char identifier_string2[37];
+  FileID::ConvertIdentifierToString(identifier1, identifier_string1,
+                                    37);
+  FileID::ConvertIdentifierToString(identifier2, identifier_string2,
+                                    37);
+  EXPECT_STREQ(identifier_string1, identifier_string2);
+}
+
+/* Get back to normal behavior of TEST*() macros wrt TestBody. */
+#undef TestBody
+
+// Comment out this test due to crosbug.com/6757.  Only seems to
+// fail on heavily loaded buildbots and is written with timing
+// assumptions.
+#if 0
+TEST(LinuxPtraceDumperTest, VerifyStackReadWithMultipleThreads) {
+  static const int kNumberOfThreadsInHelperProgram = 5;
+  char kNumberOfThreadsArgument[2];
+  sprintf(kNumberOfThreadsArgument, "%d", kNumberOfThreadsInHelperProgram);
+
+  int fds[2];
+  ASSERT_NE(-1, pipe(fds));
+
+  pid_t child_pid = fork();
+  if (child_pid == 0) {
+    // In child process.
+    close(fds[0]);
+
+    string helper_path(GetHelperBinary());
+    if (helper_path.empty()) {
+      FAIL() << "Couldn't find helper binary";
+      exit(1);
+    }
+
+    // Pass the pipe fd and the number of threads as arguments.
+    char pipe_fd_string[8];
+    sprintf(pipe_fd_string, "%d", fds[1]);
+    execl(helper_path.c_str(),
+          "linux_dumper_unittest_helper",
+          pipe_fd_string,
+          kNumberOfThreadsArgument,
+          NULL);
+    // Kill if we get here.
+    printf("Errno from exec: %d", errno);
+    FAIL() << "Exec of " << helper_path << " failed: " << strerror(errno);
+    exit(0);
+  }
+  close(fds[1]);
+
+  // Wait for all child threads to indicate that they have started
+  for (int threads = 0; threads < kNumberOfThreadsInHelperProgram; threads++) {
+    struct pollfd pfd;
+    memset(&pfd, 0, sizeof(pfd));
+    pfd.fd = fds[0];
+    pfd.events = POLLIN | POLLERR;
+
+    const int r = HANDLE_EINTR(poll(&pfd, 1, 1000));
+    ASSERT_EQ(1, r);
+    ASSERT_TRUE(pfd.revents & POLLIN);
+    uint8_t junk;
+    ASSERT_EQ(read(fds[0], &junk, sizeof(junk)),
+              static_cast<ssize_t>(sizeof(junk)));
+  }
+  close(fds[0]);
+
+  // There is a race here because we may stop a child thread before
+  // it is actually running the busy loop. Empirically this sleep
+  // is sufficient to avoid the race.
+  usleep(100000);
+
+  // Children are ready now.
+  LinuxPtraceDumper dumper(child_pid);
+  ASSERT_TRUE(dumper.Init());
+  EXPECT_EQ((size_t)kNumberOfThreadsInHelperProgram, dumper.threads().size());
+  EXPECT_TRUE(dumper.ThreadsSuspend());
+
+  ThreadInfo one_thread;
+  for (size_t i = 0; i < dumper.threads().size(); ++i) {
+    EXPECT_TRUE(dumper.GetThreadInfoByIndex(i, &one_thread));
+    const void* stack;
+    size_t stack_len;
+    EXPECT_TRUE(dumper.GetStackInfo(&stack, &stack_len,
+        one_thread.stack_pointer));
+    // In the helper program, we stored a pointer to the thread id in a
+    // specific register. Check that we can recover its value.
+#if defined(__ARM_EABI__)
+    pid_t* process_tid_location = (pid_t*)(one_thread.regs.uregs[3]);
+#elif defined(__aarch64__)
+    pid_t* process_tid_location = (pid_t*)(one_thread.regs.regs[3]);
+#elif defined(__i386)
+    pid_t* process_tid_location = (pid_t*)(one_thread.regs.ecx);
+#elif defined(__x86_64)
+    pid_t* process_tid_location = (pid_t*)(one_thread.regs.rcx);
+#elif defined(__mips__)
+    pid_t* process_tid_location =
+        reinterpret_cast<pid_t*>(one_thread.regs.regs[1]);
+#else
+#error This test has not been ported to this platform.
+#endif
+    pid_t one_thread_id;
+    dumper.CopyFromProcess(&one_thread_id,
+                           dumper.threads()[i],
+                           process_tid_location,
+                           4);
+    EXPECT_EQ(dumper.threads()[i], one_thread_id);
+  }
+  EXPECT_TRUE(dumper.ThreadsResume());
+  kill(child_pid, SIGKILL);
+
+  // Reap child
+  int status;
+  ASSERT_NE(-1, HANDLE_EINTR(waitpid(child_pid, &status, 0)));
+  ASSERT_TRUE(WIFSIGNALED(status));
+  ASSERT_EQ(SIGKILL, WTERMSIG(status));
+}
+#endif
diff --git a/google-breakpad/src/client/linux/minidump_writer/minidump_writer.cc b/google-breakpad/src/client/linux/minidump_writer/minidump_writer.cc
new file mode 100644
index 0000000..0414bb7
--- /dev/null
+++ b/google-breakpad/src/client/linux/minidump_writer/minidump_writer.cc
@@ -0,0 +1,1373 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// This code writes out minidump files:
+//   http://msdn.microsoft.com/en-us/library/ms680378(VS.85,loband).aspx
+//
+// Minidumps are a Microsoft format which Breakpad uses for recording crash
+// dumps. This code has to run in a compromised environment (the address space
+// may have received SIGSEGV), thus the following rules apply:
+//   * You may not enter the dynamic linker. This means that we cannot call
+//     any symbols in a shared library (inc libc). Because of this we replace
+//     libc functions in linux_libc_support.h.
+//   * You may not call syscalls via the libc wrappers. This rule is a subset
+//     of the first rule but it bears repeating. We have direct wrappers
+//     around the system calls in linux_syscall_support.h.
+//   * You may not malloc. There's an alternative allocator in memory.h and
+//     a canonical instance in the LinuxDumper object. We use the placement
+//     new form to allocate objects and we don't delete them.
+
+#include "client/linux/handler/minidump_descriptor.h"
+#include "client/linux/minidump_writer/minidump_writer.h"
+#include "client/minidump_file_writer-inl.h"
+
+#include <ctype.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <link.h>
+#include <stdio.h>
+#if defined(__ANDROID__)
+#include <sys/system_properties.h>
+#endif
+#include <sys/types.h>
+#include <sys/ucontext.h>
+#include <sys/user.h>
+#include <sys/utsname.h>
+#include <time.h>
+#include <unistd.h>
+
+#include <algorithm>
+
+#include "client/linux/dump_writer_common/seccomp_unwinder.h"
+#include "client/linux/dump_writer_common/thread_info.h"
+#include "client/linux/dump_writer_common/ucontext_reader.h"
+#include "client/linux/handler/exception_handler.h"
+#include "client/linux/minidump_writer/cpu_set.h"
+#include "client/linux/minidump_writer/line_reader.h"
+#include "client/linux/minidump_writer/linux_dumper.h"
+#include "client/linux/minidump_writer/linux_ptrace_dumper.h"
+#include "client/linux/minidump_writer/proc_cpuinfo_reader.h"
+#include "client/minidump_file_writer.h"
+#include "common/linux/linux_libc_support.h"
+#include "common/minidump_type_helper.h"
+#include "google_breakpad/common/minidump_format.h"
+#include "third_party/lss/linux_syscall_support.h"
+
+namespace {
+
+using google_breakpad::AppMemoryList;
+using google_breakpad::ExceptionHandler;
+using google_breakpad::CpuSet;
+using google_breakpad::LineReader;
+using google_breakpad::LinuxDumper;
+using google_breakpad::LinuxPtraceDumper;
+using google_breakpad::MDTypeHelper;
+using google_breakpad::MappingEntry;
+using google_breakpad::MappingInfo;
+using google_breakpad::MappingList;
+using google_breakpad::MinidumpFileWriter;
+using google_breakpad::PageAllocator;
+using google_breakpad::ProcCpuInfoReader;
+using google_breakpad::RawContextCPU;
+using google_breakpad::SeccompUnwinder;
+using google_breakpad::ThreadInfo;
+using google_breakpad::TypedMDRVA;
+using google_breakpad::UContextReader;
+using google_breakpad::UntypedMDRVA;
+using google_breakpad::wasteful_vector;
+
+typedef MDTypeHelper<sizeof(void*)>::MDRawDebug MDRawDebug;
+typedef MDTypeHelper<sizeof(void*)>::MDRawLinkMap MDRawLinkMap;
+
+class MinidumpWriter {
+ public:
+  // The following kLimit* constants are for when minidump_size_limit_ is set
+  // and the minidump size might exceed it.
+  //
+  // Estimate for how big each thread's stack will be (in bytes).
+  static const unsigned kLimitAverageThreadStackLength = 8 * 1024;
+  // Number of threads whose stack size we don't want to limit.  These base
+  // threads will simply be the first N threads returned by the dumper (although
+  // the crashing thread will never be limited).  Threads beyond this count are
+  // the extra threads.
+  static const unsigned kLimitBaseThreadCount = 20;
+  // Maximum stack size to dump for any extra thread (in bytes).
+  static const unsigned kLimitMaxExtraThreadStackLen = 2 * 1024;
+  // Make sure this number of additional bytes can fit in the minidump
+  // (exclude the stack data).
+  static const unsigned kLimitMinidumpFudgeFactor = 64 * 1024;
+
+  MinidumpWriter(const char* minidump_path,
+                 int minidump_fd,
+                 const ExceptionHandler::CrashContext* context,
+                 const MappingList& mappings,
+                 const AppMemoryList& appmem,
+                 LinuxDumper* dumper)
+      : fd_(minidump_fd),
+        path_(minidump_path),
+        ucontext_(context ? &context->context : NULL),
+#if !defined(__ARM_EABI__) && !defined(__mips__)
+        float_state_(context ? &context->float_state : NULL),
+#endif
+        dumper_(dumper),
+        minidump_size_limit_(-1),
+        memory_blocks_(dumper_->allocator()),
+        mapping_list_(mappings),
+        app_memory_list_(appmem) {
+    // Assert there should be either a valid fd or a valid path, not both.
+    assert(fd_ != -1 || minidump_path);
+    assert(fd_ == -1 || !minidump_path);
+  }
+
+  bool Init() {
+    if (!dumper_->Init())
+      return false;
+
+    if (fd_ != -1)
+      minidump_writer_.SetFile(fd_);
+    else if (!minidump_writer_.Open(path_))
+      return false;
+
+    return dumper_->ThreadsSuspend();
+  }
+
+  ~MinidumpWriter() {
+    // Don't close the file descriptor when it's been provided explicitly.
+    // Callers might still need to use it.
+    if (fd_ == -1)
+      minidump_writer_.Close();
+    dumper_->ThreadsResume();
+  }
+
+  bool Dump() {
+    // A minidump file contains a number of tagged streams. This is the number
+    // of stream which we write.
+    unsigned kNumWriters = 13;
+
+    TypedMDRVA<MDRawHeader> header(&minidump_writer_);
+    TypedMDRVA<MDRawDirectory> dir(&minidump_writer_);
+    if (!header.Allocate())
+      return false;
+    if (!dir.AllocateArray(kNumWriters))
+      return false;
+    my_memset(header.get(), 0, sizeof(MDRawHeader));
+
+    header.get()->signature = MD_HEADER_SIGNATURE;
+    header.get()->version = MD_HEADER_VERSION;
+    header.get()->time_date_stamp = time(NULL);
+    header.get()->stream_count = kNumWriters;
+    header.get()->stream_directory_rva = dir.position();
+
+    unsigned dir_index = 0;
+    MDRawDirectory dirent;
+
+    if (!WriteThreadListStream(&dirent))
+      return false;
+    dir.CopyIndex(dir_index++, &dirent);
+
+    if (!WriteMappings(&dirent))
+      return false;
+    dir.CopyIndex(dir_index++, &dirent);
+
+    if (!WriteAppMemory())
+      return false;
+
+    if (!WriteMemoryListStream(&dirent))
+      return false;
+    dir.CopyIndex(dir_index++, &dirent);
+
+    if (!WriteExceptionStream(&dirent))
+      return false;
+    dir.CopyIndex(dir_index++, &dirent);
+
+    if (!WriteSystemInfoStream(&dirent))
+      return false;
+    dir.CopyIndex(dir_index++, &dirent);
+
+    dirent.stream_type = MD_LINUX_CPU_INFO;
+    if (!WriteFile(&dirent.location, "/proc/cpuinfo"))
+      NullifyDirectoryEntry(&dirent);
+    dir.CopyIndex(dir_index++, &dirent);
+
+    dirent.stream_type = MD_LINUX_PROC_STATUS;
+    if (!WriteProcFile(&dirent.location, GetCrashThread(), "status"))
+      NullifyDirectoryEntry(&dirent);
+    dir.CopyIndex(dir_index++, &dirent);
+
+    dirent.stream_type = MD_LINUX_LSB_RELEASE;
+    if (!WriteFile(&dirent.location, "/etc/lsb-release"))
+      NullifyDirectoryEntry(&dirent);
+    dir.CopyIndex(dir_index++, &dirent);
+
+    dirent.stream_type = MD_LINUX_CMD_LINE;
+    if (!WriteProcFile(&dirent.location, GetCrashThread(), "cmdline"))
+      NullifyDirectoryEntry(&dirent);
+    dir.CopyIndex(dir_index++, &dirent);
+
+    dirent.stream_type = MD_LINUX_ENVIRON;
+    if (!WriteProcFile(&dirent.location, GetCrashThread(), "environ"))
+      NullifyDirectoryEntry(&dirent);
+    dir.CopyIndex(dir_index++, &dirent);
+
+    dirent.stream_type = MD_LINUX_AUXV;
+    if (!WriteProcFile(&dirent.location, GetCrashThread(), "auxv"))
+      NullifyDirectoryEntry(&dirent);
+    dir.CopyIndex(dir_index++, &dirent);
+
+    dirent.stream_type = MD_LINUX_MAPS;
+    if (!WriteProcFile(&dirent.location, GetCrashThread(), "maps"))
+      NullifyDirectoryEntry(&dirent);
+    dir.CopyIndex(dir_index++, &dirent);
+
+    dirent.stream_type = MD_LINUX_DSO_DEBUG;
+    if (!WriteDSODebugStream(&dirent))
+      NullifyDirectoryEntry(&dirent);
+    dir.CopyIndex(dir_index++, &dirent);
+
+    // If you add more directory entries, don't forget to update kNumWriters,
+    // above.
+
+    dumper_->ThreadsResume();
+    return true;
+  }
+
+  bool FillThreadStack(MDRawThread* thread, uintptr_t stack_pointer,
+                       int max_stack_len, uint8_t** stack_copy) {
+    *stack_copy = NULL;
+    const void* stack;
+    size_t stack_len;
+    if (dumper_->GetStackInfo(&stack, &stack_len, stack_pointer)) {
+      UntypedMDRVA memory(&minidump_writer_);
+      if (max_stack_len >= 0 &&
+          stack_len > static_cast<unsigned int>(max_stack_len)) {
+        stack_len = max_stack_len;
+      }
+      if (!memory.Allocate(stack_len))
+        return false;
+      *stack_copy = reinterpret_cast<uint8_t*>(Alloc(stack_len));
+      dumper_->CopyFromProcess(*stack_copy, thread->thread_id, stack,
+                               stack_len);
+      memory.Copy(*stack_copy, stack_len);
+      thread->stack.start_of_memory_range =
+          reinterpret_cast<uintptr_t>(stack);
+      thread->stack.memory = memory.location();
+      memory_blocks_.push_back(thread->stack);
+    } else {
+      thread->stack.start_of_memory_range = stack_pointer;
+      thread->stack.memory.data_size = 0;
+      thread->stack.memory.rva = minidump_writer_.position();
+    }
+    return true;
+  }
+
+  // Write information about the threads.
+  bool WriteThreadListStream(MDRawDirectory* dirent) {
+    const unsigned num_threads = dumper_->threads().size();
+
+    TypedMDRVA<uint32_t> list(&minidump_writer_);
+    if (!list.AllocateObjectAndArray(num_threads, sizeof(MDRawThread)))
+      return false;
+
+    dirent->stream_type = MD_THREAD_LIST_STREAM;
+    dirent->location = list.location();
+
+    *list.get() = num_threads;
+
+    // If there's a minidump size limit, check if it might be exceeded.  Since
+    // most of the space is filled with stack data, just check against that.
+    // If this expects to exceed the limit, set extra_thread_stack_len such
+    // that any thread beyond the first kLimitBaseThreadCount threads will
+    // have only kLimitMaxExtraThreadStackLen bytes dumped.
+    int extra_thread_stack_len = -1;  // default to no maximum
+    if (minidump_size_limit_ >= 0) {
+      const unsigned estimated_total_stack_size = num_threads *
+          kLimitAverageThreadStackLength;
+      const off_t estimated_minidump_size = minidump_writer_.position() +
+          estimated_total_stack_size + kLimitMinidumpFudgeFactor;
+      if (estimated_minidump_size > minidump_size_limit_)
+        extra_thread_stack_len = kLimitMaxExtraThreadStackLen;
+    }
+
+    for (unsigned i = 0; i < num_threads; ++i) {
+      MDRawThread thread;
+      my_memset(&thread, 0, sizeof(thread));
+      thread.thread_id = dumper_->threads()[i];
+
+      // We have a different source of information for the crashing thread. If
+      // we used the actual state of the thread we would find it running in the
+      // signal handler with the alternative stack, which would be deeply
+      // unhelpful.
+      if (static_cast<pid_t>(thread.thread_id) == GetCrashThread() &&
+          ucontext_ &&
+          !dumper_->IsPostMortem()) {
+        uint8_t* stack_copy;
+        const uintptr_t stack_ptr = UContextReader::GetStackPointer(ucontext_);
+        if (!FillThreadStack(&thread, stack_ptr, -1, &stack_copy))
+          return false;
+
+        // Copy 256 bytes around crashing instruction pointer to minidump.
+        const size_t kIPMemorySize = 256;
+        uint64_t ip = UContextReader::GetInstructionPointer(ucontext_);
+        // Bound it to the upper and lower bounds of the memory map
+        // it's contained within. If it's not in mapped memory,
+        // don't bother trying to write it.
+        bool ip_is_mapped = false;
+        MDMemoryDescriptor ip_memory_d;
+        for (unsigned j = 0; j < dumper_->mappings().size(); ++j) {
+          const MappingInfo& mapping = *dumper_->mappings()[j];
+          if (ip >= mapping.start_addr &&
+              ip < mapping.start_addr + mapping.size) {
+            ip_is_mapped = true;
+            // Try to get 128 bytes before and after the IP, but
+            // settle for whatever's available.
+            ip_memory_d.start_of_memory_range =
+              std::max(mapping.start_addr,
+                       uintptr_t(ip - (kIPMemorySize / 2)));
+            uintptr_t end_of_range =
+              std::min(uintptr_t(ip + (kIPMemorySize / 2)),
+                       uintptr_t(mapping.start_addr + mapping.size));
+            ip_memory_d.memory.data_size =
+              end_of_range - ip_memory_d.start_of_memory_range;
+            break;
+          }
+        }
+
+        if (ip_is_mapped) {
+          UntypedMDRVA ip_memory(&minidump_writer_);
+          if (!ip_memory.Allocate(ip_memory_d.memory.data_size))
+            return false;
+          uint8_t* memory_copy =
+              reinterpret_cast<uint8_t*>(Alloc(ip_memory_d.memory.data_size));
+          dumper_->CopyFromProcess(
+              memory_copy,
+              thread.thread_id,
+              reinterpret_cast<void*>(ip_memory_d.start_of_memory_range),
+              ip_memory_d.memory.data_size);
+          ip_memory.Copy(memory_copy, ip_memory_d.memory.data_size);
+          ip_memory_d.memory = ip_memory.location();
+          memory_blocks_.push_back(ip_memory_d);
+        }
+
+        TypedMDRVA<RawContextCPU> cpu(&minidump_writer_);
+        if (!cpu.Allocate())
+          return false;
+        my_memset(cpu.get(), 0, sizeof(RawContextCPU));
+#if !defined(__ARM_EABI__) && !defined(__mips__)
+        UContextReader::FillCPUContext(cpu.get(), ucontext_, float_state_);
+#else
+        UContextReader::FillCPUContext(cpu.get(), ucontext_);
+#endif
+        if (stack_copy)
+          SeccompUnwinder::PopSeccompStackFrame(cpu.get(), thread, stack_copy);
+        thread.thread_context = cpu.location();
+        crashing_thread_context_ = cpu.location();
+      } else {
+        ThreadInfo info;
+        if (!dumper_->GetThreadInfoByIndex(i, &info))
+          return false;
+
+        uint8_t* stack_copy;
+        int max_stack_len = -1;  // default to no maximum for this thread
+        if (minidump_size_limit_ >= 0 && i >= kLimitBaseThreadCount)
+          max_stack_len = extra_thread_stack_len;
+        if (!FillThreadStack(&thread, info.stack_pointer, max_stack_len,
+            &stack_copy))
+          return false;
+
+        TypedMDRVA<RawContextCPU> cpu(&minidump_writer_);
+        if (!cpu.Allocate())
+          return false;
+        my_memset(cpu.get(), 0, sizeof(RawContextCPU));
+        info.FillCPUContext(cpu.get());
+        if (stack_copy)
+          SeccompUnwinder::PopSeccompStackFrame(cpu.get(), thread, stack_copy);
+        thread.thread_context = cpu.location();
+        if (dumper_->threads()[i] == GetCrashThread()) {
+          crashing_thread_context_ = cpu.location();
+          if (!dumper_->IsPostMortem()) {
+            // This is the crashing thread of a live process, but
+            // no context was provided, so set the crash address
+            // while the instruction pointer is already here.
+            dumper_->set_crash_address(info.GetInstructionPointer());
+          }
+        }
+      }
+
+      list.CopyIndexAfterObject(i, &thread, sizeof(thread));
+    }
+
+    return true;
+  }
+
+  // Write application-provided memory regions.
+  bool WriteAppMemory() {
+    for (AppMemoryList::const_iterator iter = app_memory_list_.begin();
+         iter != app_memory_list_.end();
+         ++iter) {
+      uint8_t* data_copy =
+        reinterpret_cast<uint8_t*>(dumper_->allocator()->Alloc(iter->length));
+      dumper_->CopyFromProcess(data_copy, GetCrashThread(), iter->ptr,
+                               iter->length);
+
+      UntypedMDRVA memory(&minidump_writer_);
+      if (!memory.Allocate(iter->length)) {
+        return false;
+      }
+      memory.Copy(data_copy, iter->length);
+      MDMemoryDescriptor desc;
+      desc.start_of_memory_range = reinterpret_cast<uintptr_t>(iter->ptr);
+      desc.memory = memory.location();
+      memory_blocks_.push_back(desc);
+    }
+
+    return true;
+  }
+
+  static bool ShouldIncludeMapping(const MappingInfo& mapping) {
+    if (mapping.name[0] == 0 ||  // only want modules with filenames.
+        // Only want to include one mapping per shared lib.
+        // Avoid filtering executable mappings.
+        (mapping.offset != 0 && !mapping.exec) ||
+        mapping.size < 4096) {  // too small to get a signature for.
+      return false;
+    }
+
+    return true;
+  }
+
+  // If there is caller-provided information about this mapping
+  // in the mapping_list_ list, return true. Otherwise, return false.
+  bool HaveMappingInfo(const MappingInfo& mapping) {
+    for (MappingList::const_iterator iter = mapping_list_.begin();
+         iter != mapping_list_.end();
+         ++iter) {
+      // Ignore any mappings that are wholly contained within
+      // mappings in the mapping_info_ list.
+      if (mapping.start_addr >= iter->first.start_addr &&
+          (mapping.start_addr + mapping.size) <=
+          (iter->first.start_addr + iter->first.size)) {
+        return true;
+      }
+    }
+    return false;
+  }
+
+  // Write information about the mappings in effect. Because we are using the
+  // minidump format, the information about the mappings is pretty limited.
+  // Because of this, we also include the full, unparsed, /proc/$x/maps file in
+  // another stream in the file.
+  bool WriteMappings(MDRawDirectory* dirent) {
+    const unsigned num_mappings = dumper_->mappings().size();
+    unsigned num_output_mappings = mapping_list_.size();
+
+    for (unsigned i = 0; i < dumper_->mappings().size(); ++i) {
+      const MappingInfo& mapping = *dumper_->mappings()[i];
+      if (ShouldIncludeMapping(mapping) && !HaveMappingInfo(mapping))
+        num_output_mappings++;
+    }
+
+    TypedMDRVA<uint32_t> list(&minidump_writer_);
+    if (num_output_mappings) {
+      if (!list.AllocateObjectAndArray(num_output_mappings, MD_MODULE_SIZE))
+        return false;
+    } else {
+      // Still create the module list stream, although it will have zero
+      // modules.
+      if (!list.Allocate())
+        return false;
+    }
+
+    dirent->stream_type = MD_MODULE_LIST_STREAM;
+    dirent->location = list.location();
+    *list.get() = num_output_mappings;
+
+    // First write all the mappings from the dumper
+    unsigned int j = 0;
+    for (unsigned i = 0; i < num_mappings; ++i) {
+      const MappingInfo& mapping = *dumper_->mappings()[i];
+      if (!ShouldIncludeMapping(mapping) || HaveMappingInfo(mapping))
+        continue;
+
+      MDRawModule mod;
+      if (!FillRawModule(mapping, true, i, mod, NULL))
+        return false;
+      list.CopyIndexAfterObject(j++, &mod, MD_MODULE_SIZE);
+    }
+    // Next write all the mappings provided by the caller
+    for (MappingList::const_iterator iter = mapping_list_.begin();
+         iter != mapping_list_.end();
+         ++iter) {
+      MDRawModule mod;
+      if (!FillRawModule(iter->first, false, 0, mod, iter->second))
+        return false;
+      list.CopyIndexAfterObject(j++, &mod, MD_MODULE_SIZE);
+    }
+
+    return true;
+  }
+
+  // Fill the MDRawModule |mod| with information about the provided
+  // |mapping|. If |identifier| is non-NULL, use it instead of calculating
+  // a file ID from the mapping.
+  bool FillRawModule(const MappingInfo& mapping,
+                     bool member,
+                     unsigned int mapping_id,
+                     MDRawModule& mod,
+                     const uint8_t* identifier) {
+    my_memset(&mod, 0, MD_MODULE_SIZE);
+
+    mod.base_of_image = mapping.start_addr;
+    mod.size_of_image = mapping.size;
+
+    uint8_t cv_buf[MDCVInfoPDB70_minsize + NAME_MAX];
+    uint8_t* cv_ptr = cv_buf;
+
+    const uint32_t cv_signature = MD_CVINFOPDB70_SIGNATURE;
+    my_memcpy(cv_ptr, &cv_signature, sizeof(cv_signature));
+    cv_ptr += sizeof(cv_signature);
+    uint8_t* signature = cv_ptr;
+    cv_ptr += sizeof(MDGUID);
+    if (identifier) {
+      // GUID was provided by caller.
+      my_memcpy(signature, identifier, sizeof(MDGUID));
+    } else {
+      // Note: ElfFileIdentifierForMapping() can manipulate the |mapping.name|.
+      dumper_->ElfFileIdentifierForMapping(mapping, member,
+                                           mapping_id, signature);
+    }
+    my_memset(cv_ptr, 0, sizeof(uint32_t));  // Set age to 0 on Linux.
+    cv_ptr += sizeof(uint32_t);
+
+    char file_name[NAME_MAX];
+    char file_path[NAME_MAX];
+    LinuxDumper::GetMappingEffectiveNameAndPath(
+        mapping, file_path, sizeof(file_path), file_name, sizeof(file_name));
+
+    const size_t file_name_len = my_strlen(file_name);
+    UntypedMDRVA cv(&minidump_writer_);
+    if (!cv.Allocate(MDCVInfoPDB70_minsize + file_name_len + 1))
+      return false;
+
+    // Write pdb_file_name
+    my_memcpy(cv_ptr, file_name, file_name_len + 1);
+    cv.Copy(cv_buf, MDCVInfoPDB70_minsize + file_name_len + 1);
+
+    mod.cv_record = cv.location();
+
+    MDLocationDescriptor ld;
+    if (!minidump_writer_.WriteString(file_path, my_strlen(file_path), &ld))
+      return false;
+    mod.module_name_rva = ld.rva;
+    return true;
+  }
+
+  bool WriteMemoryListStream(MDRawDirectory* dirent) {
+    TypedMDRVA<uint32_t> list(&minidump_writer_);
+    if (memory_blocks_.size()) {
+      if (!list.AllocateObjectAndArray(memory_blocks_.size(),
+                                       sizeof(MDMemoryDescriptor)))
+        return false;
+    } else {
+      // Still create the memory list stream, although it will have zero
+      // memory blocks.
+      if (!list.Allocate())
+        return false;
+    }
+
+    dirent->stream_type = MD_MEMORY_LIST_STREAM;
+    dirent->location = list.location();
+
+    *list.get() = memory_blocks_.size();
+
+    for (size_t i = 0; i < memory_blocks_.size(); ++i) {
+      list.CopyIndexAfterObject(i, &memory_blocks_[i],
+                                sizeof(MDMemoryDescriptor));
+    }
+    return true;
+  }
+
+  bool WriteExceptionStream(MDRawDirectory* dirent) {
+    TypedMDRVA<MDRawExceptionStream> exc(&minidump_writer_);
+    if (!exc.Allocate())
+      return false;
+    my_memset(exc.get(), 0, sizeof(MDRawExceptionStream));
+
+    dirent->stream_type = MD_EXCEPTION_STREAM;
+    dirent->location = exc.location();
+
+    exc.get()->thread_id = GetCrashThread();
+    exc.get()->exception_record.exception_code = dumper_->crash_signal();
+    exc.get()->exception_record.exception_address = dumper_->crash_address();
+    exc.get()->thread_context = crashing_thread_context_;
+
+    return true;
+  }
+
+  bool WriteSystemInfoStream(MDRawDirectory* dirent) {
+    TypedMDRVA<MDRawSystemInfo> si(&minidump_writer_);
+    if (!si.Allocate())
+      return false;
+    my_memset(si.get(), 0, sizeof(MDRawSystemInfo));
+
+    dirent->stream_type = MD_SYSTEM_INFO_STREAM;
+    dirent->location = si.location();
+
+    WriteCPUInformation(si.get());
+    WriteOSInformation(si.get());
+
+    return true;
+  }
+
+  bool WriteDSODebugStream(MDRawDirectory* dirent) {
+    ElfW(Phdr)* phdr = reinterpret_cast<ElfW(Phdr) *>(dumper_->auxv()[AT_PHDR]);
+    char* base;
+    int phnum = dumper_->auxv()[AT_PHNUM];
+    if (!phnum || !phdr)
+      return false;
+
+    // Assume the program base is at the beginning of the same page as the PHDR
+    base = reinterpret_cast<char *>(reinterpret_cast<uintptr_t>(phdr) & ~0xfff);
+
+    // Search for the program PT_DYNAMIC segment
+    ElfW(Addr) dyn_addr = 0;
+    for (; phnum >= 0; phnum--, phdr++) {
+      ElfW(Phdr) ph;
+      if (!dumper_->CopyFromProcess(&ph, GetCrashThread(), phdr, sizeof(ph)))
+        return false;
+
+      // Adjust base address with the virtual address of the PT_LOAD segment
+      // corresponding to offset 0
+      if (ph.p_type == PT_LOAD && ph.p_offset == 0) {
+        base -= ph.p_vaddr;
+      }
+      if (ph.p_type == PT_DYNAMIC) {
+        dyn_addr = ph.p_vaddr;
+      }
+    }
+    if (!dyn_addr)
+      return false;
+
+    ElfW(Dyn) *dynamic = reinterpret_cast<ElfW(Dyn) *>(dyn_addr + base);
+
+    // The dynamic linker makes information available that helps gdb find all
+    // DSOs loaded into the program. If this information is indeed available,
+    // dump it to a MD_LINUX_DSO_DEBUG stream.
+    struct r_debug* r_debug = NULL;
+    uint32_t dynamic_length = 0;
+
+    for (int i = 0; ; ++i) {
+      ElfW(Dyn) dyn;
+      dynamic_length += sizeof(dyn);
+      if (!dumper_->CopyFromProcess(&dyn, GetCrashThread(), dynamic + i,
+                                    sizeof(dyn))) {
+        return false;
+      }
+
+#ifdef __mips__
+      if (dyn.d_tag == DT_MIPS_RLD_MAP) {
+        r_debug = reinterpret_cast<struct r_debug*>(dyn.d_un.d_ptr);
+        continue;
+      }
+#else
+      if (dyn.d_tag == DT_DEBUG) {
+        r_debug = reinterpret_cast<struct r_debug*>(dyn.d_un.d_ptr);
+        continue;
+      }
+#endif
+      else if (dyn.d_tag == DT_NULL) {
+        break;
+      }
+    }
+
+    // The "r_map" field of that r_debug struct contains a linked list of all
+    // loaded DSOs.
+    // Our list of DSOs potentially is different from the ones in the crashing
+    // process. So, we have to be careful to never dereference pointers
+    // directly. Instead, we use CopyFromProcess() everywhere.
+    // See <link.h> for a more detailed discussion of the how the dynamic
+    // loader communicates with debuggers.
+
+    // Count the number of loaded DSOs
+    int dso_count = 0;
+    struct r_debug debug_entry;
+    if (!dumper_->CopyFromProcess(&debug_entry, GetCrashThread(), r_debug,
+                                  sizeof(debug_entry))) {
+      return false;
+    }
+    for (struct link_map* ptr = debug_entry.r_map; ptr; ) {
+      struct link_map map;
+      if (!dumper_->CopyFromProcess(&map, GetCrashThread(), ptr, sizeof(map)))
+        return false;
+
+      ptr = map.l_next;
+      dso_count++;
+    }
+
+    MDRVA linkmap_rva = minidump_writer_.kInvalidMDRVA;
+    if (dso_count > 0) {
+      // If we have at least one DSO, create an array of MDRawLinkMap
+      // entries in the minidump file.
+      TypedMDRVA<MDRawLinkMap> linkmap(&minidump_writer_);
+      if (!linkmap.AllocateArray(dso_count))
+        return false;
+      linkmap_rva = linkmap.location().rva;
+      int idx = 0;
+
+      // Iterate over DSOs and write their information to mini dump
+      for (struct link_map* ptr = debug_entry.r_map; ptr; ) {
+        struct link_map map;
+        if (!dumper_->CopyFromProcess(&map, GetCrashThread(), ptr, sizeof(map)))
+          return  false;
+
+        ptr = map.l_next;
+        char filename[257] = { 0 };
+        if (map.l_name) {
+          dumper_->CopyFromProcess(filename, GetCrashThread(), map.l_name,
+                                   sizeof(filename) - 1);
+        }
+        MDLocationDescriptor location;
+        if (!minidump_writer_.WriteString(filename, 0, &location))
+          return false;
+        MDRawLinkMap entry;
+        entry.name = location.rva;
+        entry.addr = map.l_addr;
+        entry.ld = reinterpret_cast<uintptr_t>(map.l_ld);
+        linkmap.CopyIndex(idx++, &entry);
+      }
+    }
+
+    // Write MD_LINUX_DSO_DEBUG record
+    TypedMDRVA<MDRawDebug> debug(&minidump_writer_);
+    if (!debug.AllocateObjectAndArray(1, dynamic_length))
+      return false;
+    my_memset(debug.get(), 0, sizeof(MDRawDebug));
+    dirent->stream_type = MD_LINUX_DSO_DEBUG;
+    dirent->location = debug.location();
+
+    debug.get()->version = debug_entry.r_version;
+    debug.get()->map = linkmap_rva;
+    debug.get()->dso_count = dso_count;
+    debug.get()->brk = debug_entry.r_brk;
+    debug.get()->ldbase = debug_entry.r_ldbase;
+    debug.get()->dynamic = reinterpret_cast<uintptr_t>(dynamic);
+
+    wasteful_vector<char> dso_debug_data(dumper_->allocator(), dynamic_length);
+    // The passed-in size to the constructor (above) is only a hint.
+    // Must call .resize() to do actual initialization of the elements.
+    dso_debug_data.resize(dynamic_length);
+    dumper_->CopyFromProcess(&dso_debug_data[0], GetCrashThread(), dynamic,
+                             dynamic_length);
+    debug.CopyIndexAfterObject(0, &dso_debug_data[0], dynamic_length);
+
+    return true;
+  }
+
+  void set_minidump_size_limit(off_t limit) { minidump_size_limit_ = limit; }
+
+ private:
+  void* Alloc(unsigned bytes) {
+    return dumper_->allocator()->Alloc(bytes);
+  }
+
+  pid_t GetCrashThread() const {
+    return dumper_->crash_thread();
+  }
+
+  void NullifyDirectoryEntry(MDRawDirectory* dirent) {
+    dirent->stream_type = 0;
+    dirent->location.data_size = 0;
+    dirent->location.rva = 0;
+  }
+
+#if defined(__i386__) || defined(__x86_64__) || defined(__mips__)
+  bool WriteCPUInformation(MDRawSystemInfo* sys_info) {
+    char vendor_id[sizeof(sys_info->cpu.x86_cpu_info.vendor_id) + 1] = {0};
+    static const char vendor_id_name[] = "vendor_id";
+
+    struct CpuInfoEntry {
+      const char* info_name;
+      int value;
+      bool found;
+    } cpu_info_table[] = {
+      { "processor", -1, false },
+#if defined(__i386__) || defined(__x86_64__)
+      { "model", 0, false },
+      { "stepping",  0, false },
+      { "cpu family", 0, false },
+#endif
+    };
+
+    // processor_architecture should always be set, do this first
+    sys_info->processor_architecture =
+#if defined(__mips__)
+        MD_CPU_ARCHITECTURE_MIPS;
+#elif defined(__i386__)
+        MD_CPU_ARCHITECTURE_X86;
+#else
+        MD_CPU_ARCHITECTURE_AMD64;
+#endif
+
+    const int fd = sys_open("/proc/cpuinfo", O_RDONLY, 0);
+    if (fd < 0)
+      return false;
+
+    {
+      PageAllocator allocator;
+      ProcCpuInfoReader* const reader = new(allocator) ProcCpuInfoReader(fd);
+      const char* field;
+      while (reader->GetNextField(&field)) {
+        for (size_t i = 0;
+             i < sizeof(cpu_info_table) / sizeof(cpu_info_table[0]);
+             i++) {
+          CpuInfoEntry* entry = &cpu_info_table[i];
+          if (i > 0 && entry->found) {
+            // except for the 'processor' field, ignore repeated values.
+            continue;
+          }
+          if (!my_strcmp(field, entry->info_name)) {
+            size_t value_len;
+            const char* value = reader->GetValueAndLen(&value_len);
+            if (value_len == 0)
+              continue;
+
+            uintptr_t val;
+            if (my_read_decimal_ptr(&val, value) == value)
+              continue;
+
+            entry->value = static_cast<int>(val);
+            entry->found = true;
+          }
+        }
+
+        // special case for vendor_id
+        if (!my_strcmp(field, vendor_id_name)) {
+          size_t value_len;
+          const char* value = reader->GetValueAndLen(&value_len);
+          if (value_len > 0)
+            my_strlcpy(vendor_id, value, sizeof(vendor_id));
+        }
+      }
+      sys_close(fd);
+    }
+
+    // make sure we got everything we wanted
+    for (size_t i = 0;
+         i < sizeof(cpu_info_table) / sizeof(cpu_info_table[0]);
+         i++) {
+      if (!cpu_info_table[i].found) {
+        return false;
+      }
+    }
+    // cpu_info_table[0] holds the last cpu id listed in /proc/cpuinfo,
+    // assuming this is the highest id, change it to the number of CPUs
+    // by adding one.
+    cpu_info_table[0].value++;
+
+    sys_info->number_of_processors = cpu_info_table[0].value;
+#if defined(__i386__) || defined(__x86_64__)
+    sys_info->processor_level      = cpu_info_table[3].value;
+    sys_info->processor_revision   = cpu_info_table[1].value << 8 |
+                                     cpu_info_table[2].value;
+#endif
+
+    if (vendor_id[0] != '\0') {
+      my_memcpy(sys_info->cpu.x86_cpu_info.vendor_id, vendor_id,
+                sizeof(sys_info->cpu.x86_cpu_info.vendor_id));
+    }
+    return true;
+  }
+#elif defined(__arm__) || defined(__aarch64__)
+  bool WriteCPUInformation(MDRawSystemInfo* sys_info) {
+    // The CPUID value is broken up in several entries in /proc/cpuinfo.
+    // This table is used to rebuild it from the entries.
+    const struct CpuIdEntry {
+      const char* field;
+      char        format;
+      char        bit_lshift;
+      char        bit_length;
+    } cpu_id_entries[] = {
+      { "CPU implementer", 'x', 24, 8 },
+      { "CPU variant", 'x', 20, 4 },
+      { "CPU part", 'x', 4, 12 },
+      { "CPU revision", 'd', 0, 4 },
+    };
+
+    // The ELF hwcaps are listed in the "Features" entry as textual tags.
+    // This table is used to rebuild them.
+    const struct CpuFeaturesEntry {
+      const char* tag;
+      uint32_t hwcaps;
+    } cpu_features_entries[] = {
+#if defined(__arm__)
+      { "swp",  MD_CPU_ARM_ELF_HWCAP_SWP },
+      { "half", MD_CPU_ARM_ELF_HWCAP_HALF },
+      { "thumb", MD_CPU_ARM_ELF_HWCAP_THUMB },
+      { "26bit", MD_CPU_ARM_ELF_HWCAP_26BIT },
+      { "fastmult", MD_CPU_ARM_ELF_HWCAP_FAST_MULT },
+      { "fpa", MD_CPU_ARM_ELF_HWCAP_FPA },
+      { "vfp", MD_CPU_ARM_ELF_HWCAP_VFP },
+      { "edsp", MD_CPU_ARM_ELF_HWCAP_EDSP },
+      { "java", MD_CPU_ARM_ELF_HWCAP_JAVA },
+      { "iwmmxt", MD_CPU_ARM_ELF_HWCAP_IWMMXT },
+      { "crunch", MD_CPU_ARM_ELF_HWCAP_CRUNCH },
+      { "thumbee", MD_CPU_ARM_ELF_HWCAP_THUMBEE },
+      { "neon", MD_CPU_ARM_ELF_HWCAP_NEON },
+      { "vfpv3", MD_CPU_ARM_ELF_HWCAP_VFPv3 },
+      { "vfpv3d16", MD_CPU_ARM_ELF_HWCAP_VFPv3D16 },
+      { "tls", MD_CPU_ARM_ELF_HWCAP_TLS },
+      { "vfpv4", MD_CPU_ARM_ELF_HWCAP_VFPv4 },
+      { "idiva", MD_CPU_ARM_ELF_HWCAP_IDIVA },
+      { "idivt", MD_CPU_ARM_ELF_HWCAP_IDIVT },
+      { "idiv", MD_CPU_ARM_ELF_HWCAP_IDIVA | MD_CPU_ARM_ELF_HWCAP_IDIVT },
+#elif defined(__aarch64__)
+      // No hwcaps on aarch64.
+#endif
+    };
+
+    // processor_architecture should always be set, do this first
+    sys_info->processor_architecture =
+#if defined(__aarch64__)
+        MD_CPU_ARCHITECTURE_ARM64;
+#else
+        MD_CPU_ARCHITECTURE_ARM;
+#endif
+
+    // /proc/cpuinfo is not readable under various sandboxed environments
+    // (e.g. Android services with the android:isolatedProcess attribute)
+    // prepare for this by setting default values now, which will be
+    // returned when this happens.
+    //
+    // Note: Bogus values are used to distinguish between failures (to
+    //       read /sys and /proc files) and really badly configured kernels.
+    sys_info->number_of_processors = 0;
+    sys_info->processor_level = 1U;  // There is no ARMv1
+    sys_info->processor_revision = 42;
+    sys_info->cpu.arm_cpu_info.cpuid = 0;
+    sys_info->cpu.arm_cpu_info.elf_hwcaps = 0;
+
+    // Counting the number of CPUs involves parsing two sysfs files,
+    // because the content of /proc/cpuinfo will only mirror the number
+    // of 'online' cores, and thus will vary with time.
+    // See http://www.kernel.org/doc/Documentation/cputopology.txt
+    {
+      CpuSet cpus_present;
+      CpuSet cpus_possible;
+
+      int fd = sys_open("/sys/devices/system/cpu/present", O_RDONLY, 0);
+      if (fd >= 0) {
+        cpus_present.ParseSysFile(fd);
+        sys_close(fd);
+
+        fd = sys_open("/sys/devices/system/cpu/possible", O_RDONLY, 0);
+        if (fd >= 0) {
+          cpus_possible.ParseSysFile(fd);
+          sys_close(fd);
+
+          cpus_present.IntersectWith(cpus_possible);
+          int cpu_count = cpus_present.GetCount();
+          if (cpu_count > 255)
+            cpu_count = 255;
+          sys_info->number_of_processors = static_cast<uint8_t>(cpu_count);
+        }
+      }
+    }
+
+    // Parse /proc/cpuinfo to reconstruct the CPUID value, as well
+    // as the ELF hwcaps field. For the latter, it would be easier to
+    // read /proc/self/auxv but unfortunately, this file is not always
+    // readable from regular Android applications on later versions
+    // (>= 4.1) of the Android platform.
+    const int fd = sys_open("/proc/cpuinfo", O_RDONLY, 0);
+    if (fd < 0) {
+      // Do not return false here to allow the minidump generation
+      // to happen properly.
+      return true;
+    }
+
+    {
+      PageAllocator allocator;
+      ProcCpuInfoReader* const reader =
+          new(allocator) ProcCpuInfoReader(fd);
+      const char* field;
+      while (reader->GetNextField(&field)) {
+        for (size_t i = 0;
+             i < sizeof(cpu_id_entries)/sizeof(cpu_id_entries[0]);
+             ++i) {
+          const CpuIdEntry* entry = &cpu_id_entries[i];
+          if (my_strcmp(entry->field, field) != 0)
+            continue;
+          uintptr_t result = 0;
+          const char* value = reader->GetValue();
+          const char* p = value;
+          if (value[0] == '0' && value[1] == 'x') {
+            p = my_read_hex_ptr(&result, value+2);
+          } else if (entry->format == 'x') {
+            p = my_read_hex_ptr(&result, value);
+          } else {
+            p = my_read_decimal_ptr(&result, value);
+          }
+          if (p == value)
+            continue;
+
+          result &= (1U << entry->bit_length)-1;
+          result <<= entry->bit_lshift;
+          sys_info->cpu.arm_cpu_info.cpuid |=
+              static_cast<uint32_t>(result);
+        }
+#if defined(__arm__)
+        // Get the architecture version from the "Processor" field.
+        // Note that it is also available in the "CPU architecture" field,
+        // however, some existing kernels are misconfigured and will report
+        // invalid values here (e.g. 6, while the CPU is ARMv7-A based).
+        // The "Processor" field doesn't have this issue.
+        if (!my_strcmp(field, "Processor")) {
+          size_t value_len;
+          const char* value = reader->GetValueAndLen(&value_len);
+          // Expected format: <text> (v<level><endian>)
+          // Where <text> is some text like "ARMv7 Processor rev 2"
+          // and <level> is a decimal corresponding to the ARM
+          // architecture number. <endian> is either 'l' or 'b'
+          // and corresponds to the endianess, it is ignored here.
+          while (value_len > 0 && my_isspace(value[value_len-1]))
+            value_len--;
+
+          size_t nn = value_len;
+          while (nn > 0 && value[nn-1] != '(')
+            nn--;
+          if (nn > 0 && value[nn] == 'v') {
+            uintptr_t arch_level = 5;
+            my_read_decimal_ptr(&arch_level, value + nn + 1);
+            sys_info->processor_level = static_cast<uint16_t>(arch_level);
+          }
+        }
+#elif defined(__aarch64__)
+        // The aarch64 architecture does not provide the architecture level
+        // in the Processor field, so we instead check the "CPU architecture"
+        // field.
+        if (!my_strcmp(field, "CPU architecture")) {
+          uintptr_t arch_level = 0;
+          const char* value = reader->GetValue();
+          const char* p = value;
+          p = my_read_decimal_ptr(&arch_level, value);
+          if (p == value)
+            continue;
+          sys_info->processor_level = static_cast<uint16_t>(arch_level);
+        }
+#endif
+        // Rebuild the ELF hwcaps from the 'Features' field.
+        if (!my_strcmp(field, "Features")) {
+          size_t value_len;
+          const char* value = reader->GetValueAndLen(&value_len);
+
+          // Parse each space-separated tag.
+          while (value_len > 0) {
+            const char* tag = value;
+            size_t tag_len = value_len;
+            const char* p = my_strchr(tag, ' ');
+            if (p != NULL) {
+              tag_len = static_cast<size_t>(p - tag);
+              value += tag_len + 1;
+              value_len -= tag_len + 1;
+            } else {
+              tag_len = strlen(tag);
+              value_len = 0;
+            }
+            for (size_t i = 0;
+                i < sizeof(cpu_features_entries)/
+                    sizeof(cpu_features_entries[0]);
+                ++i) {
+              const CpuFeaturesEntry* entry = &cpu_features_entries[i];
+              if (tag_len == strlen(entry->tag) &&
+                  !memcmp(tag, entry->tag, tag_len)) {
+                sys_info->cpu.arm_cpu_info.elf_hwcaps |= entry->hwcaps;
+                break;
+              }
+            }
+          }
+        }
+      }
+      sys_close(fd);
+    }
+
+    return true;
+  }
+#else
+#  error "Unsupported CPU"
+#endif
+
+  bool WriteFile(MDLocationDescriptor* result, const char* filename) {
+    const int fd = sys_open(filename, O_RDONLY, 0);
+    if (fd < 0)
+      return false;
+
+    // We can't stat the files because several of the files that we want to
+    // read are kernel seqfiles, which always have a length of zero. So we have
+    // to read as much as we can into a buffer.
+    static const unsigned kBufSize = 1024 - 2*sizeof(void*);
+    struct Buffers {
+      Buffers* next;
+      size_t len;
+      uint8_t data[kBufSize];
+    } *buffers = reinterpret_cast<Buffers*>(Alloc(sizeof(Buffers)));
+    buffers->next = NULL;
+    buffers->len = 0;
+
+    size_t total = 0;
+    for (Buffers* bufptr = buffers;;) {
+      ssize_t r;
+      do {
+        r = sys_read(fd, &bufptr->data[bufptr->len], kBufSize - bufptr->len);
+      } while (r == -1 && errno == EINTR);
+
+      if (r < 1)
+        break;
+
+      total += r;
+      bufptr->len += r;
+      if (bufptr->len == kBufSize) {
+        bufptr->next = reinterpret_cast<Buffers*>(Alloc(sizeof(Buffers)));
+        bufptr = bufptr->next;
+        bufptr->next = NULL;
+        bufptr->len = 0;
+      }
+    }
+    sys_close(fd);
+
+    if (!total)
+      return false;
+
+    UntypedMDRVA memory(&minidump_writer_);
+    if (!memory.Allocate(total))
+      return false;
+    for (MDRVA pos = memory.position(); buffers; buffers = buffers->next) {
+      // Check for special case of a zero-length buffer.  This should only
+      // occur if a file's size happens to be a multiple of the buffer's
+      // size, in which case the final sys_read() will have resulted in
+      // zero bytes being read after the final buffer was just allocated.
+      if (buffers->len == 0) {
+        // This can only occur with final buffer.
+        assert(buffers->next == NULL);
+        continue;
+      }
+      memory.Copy(pos, &buffers->data, buffers->len);
+      pos += buffers->len;
+    }
+    *result = memory.location();
+    return true;
+  }
+
+  bool WriteOSInformation(MDRawSystemInfo* sys_info) {
+#if defined(__ANDROID__)
+    sys_info->platform_id = MD_OS_ANDROID;
+#else
+    sys_info->platform_id = MD_OS_LINUX;
+#endif
+
+    struct utsname uts;
+    if (uname(&uts))
+      return false;
+
+    static const size_t buf_len = 512;
+    char buf[buf_len] = {0};
+    size_t space_left = buf_len - 1;
+    const char* info_table[] = {
+      uts.sysname,
+      uts.release,
+      uts.version,
+      uts.machine,
+      NULL
+    };
+    bool first_item = true;
+    for (const char** cur_info = info_table; *cur_info; cur_info++) {
+      static const char separator[] = " ";
+      size_t separator_len = sizeof(separator) - 1;
+      size_t info_len = my_strlen(*cur_info);
+      if (info_len == 0)
+        continue;
+
+      if (space_left < info_len + (first_item ? 0 : separator_len))
+        break;
+
+      if (!first_item) {
+        my_strlcat(buf, separator, sizeof(buf));
+        space_left -= separator_len;
+      }
+
+      first_item = false;
+      my_strlcat(buf, *cur_info, sizeof(buf));
+      space_left -= info_len;
+    }
+
+    MDLocationDescriptor location;
+    if (!minidump_writer_.WriteString(buf, 0, &location))
+      return false;
+    sys_info->csd_version_rva = location.rva;
+
+    return true;
+  }
+
+  bool WriteProcFile(MDLocationDescriptor* result, pid_t pid,
+                     const char* filename) {
+    char buf[NAME_MAX];
+    if (!dumper_->BuildProcPath(buf, pid, filename))
+      return false;
+    return WriteFile(result, buf);
+  }
+
+  // Only one of the 2 member variables below should be set to a valid value.
+  const int fd_;  // File descriptor where the minidum should be written.
+  const char* path_;  // Path to the file where the minidum should be written.
+
+  const struct ucontext* const ucontext_;  // also from the signal handler
+#if !defined(__ARM_EABI__) && !defined(__mips__)
+  const google_breakpad::fpstate_t* const float_state_;  // ditto
+#endif
+  LinuxDumper* dumper_;
+  MinidumpFileWriter minidump_writer_;
+  off_t minidump_size_limit_;
+  MDLocationDescriptor crashing_thread_context_;
+  // Blocks of memory written to the dump. These are all currently
+  // written while writing the thread list stream, but saved here
+  // so a memory list stream can be written afterwards.
+  wasteful_vector<MDMemoryDescriptor> memory_blocks_;
+  // Additional information about some mappings provided by the caller.
+  const MappingList& mapping_list_;
+  // Additional memory regions to be included in the dump,
+  // provided by the caller.
+  const AppMemoryList& app_memory_list_;
+};
+
+
+bool WriteMinidumpImpl(const char* minidump_path,
+                       int minidump_fd,
+                       off_t minidump_size_limit,
+                       pid_t crashing_process,
+                       const void* blob, size_t blob_size,
+                       const MappingList& mappings,
+                       const AppMemoryList& appmem) {
+  LinuxPtraceDumper dumper(crashing_process);
+  const ExceptionHandler::CrashContext* context = NULL;
+  if (blob) {
+    if (blob_size != sizeof(ExceptionHandler::CrashContext))
+      return false;
+    context = reinterpret_cast<const ExceptionHandler::CrashContext*>(blob);
+    dumper.set_crash_address(
+        reinterpret_cast<uintptr_t>(context->siginfo.si_addr));
+    dumper.set_crash_signal(context->siginfo.si_signo);
+    dumper.set_crash_thread(context->tid);
+  }
+  MinidumpWriter writer(minidump_path, minidump_fd, context, mappings,
+                        appmem, &dumper);
+  // Set desired limit for file size of minidump (-1 means no limit).
+  writer.set_minidump_size_limit(minidump_size_limit);
+  if (!writer.Init())
+    return false;
+  return writer.Dump();
+}
+
+}  // namespace
+
+namespace google_breakpad {
+
+bool WriteMinidump(const char* minidump_path, pid_t crashing_process,
+                   const void* blob, size_t blob_size) {
+  return WriteMinidumpImpl(minidump_path, -1, -1,
+                           crashing_process, blob, blob_size,
+                           MappingList(), AppMemoryList());
+}
+
+bool WriteMinidump(int minidump_fd, pid_t crashing_process,
+                   const void* blob, size_t blob_size) {
+  return WriteMinidumpImpl(NULL, minidump_fd, -1,
+                           crashing_process, blob, blob_size,
+                           MappingList(), AppMemoryList());
+}
+
+bool WriteMinidump(const char* minidump_path, pid_t process,
+                   pid_t process_blamed_thread) {
+  LinuxPtraceDumper dumper(process);
+  // MinidumpWriter will set crash address
+  dumper.set_crash_signal(MD_EXCEPTION_CODE_LIN_DUMP_REQUESTED);
+  dumper.set_crash_thread(process_blamed_thread);
+  MinidumpWriter writer(minidump_path, -1, NULL, MappingList(),
+                        AppMemoryList(), &dumper);
+  if (!writer.Init())
+    return false;
+  return writer.Dump();
+}
+
+bool WriteMinidump(const char* minidump_path, pid_t crashing_process,
+                   const void* blob, size_t blob_size,
+                   const MappingList& mappings,
+                   const AppMemoryList& appmem) {
+  return WriteMinidumpImpl(minidump_path, -1, -1, crashing_process,
+                           blob, blob_size,
+                           mappings, appmem);
+}
+
+bool WriteMinidump(int minidump_fd, pid_t crashing_process,
+                   const void* blob, size_t blob_size,
+                   const MappingList& mappings,
+                   const AppMemoryList& appmem) {
+  return WriteMinidumpImpl(NULL, minidump_fd, -1, crashing_process,
+                           blob, blob_size,
+                           mappings, appmem);
+}
+
+bool WriteMinidump(const char* minidump_path, off_t minidump_size_limit,
+                   pid_t crashing_process,
+                   const void* blob, size_t blob_size,
+                   const MappingList& mappings,
+                   const AppMemoryList& appmem) {
+  return WriteMinidumpImpl(minidump_path, -1, minidump_size_limit,
+                           crashing_process, blob, blob_size,
+                           mappings, appmem);
+}
+
+bool WriteMinidump(int minidump_fd, off_t minidump_size_limit,
+                   pid_t crashing_process,
+                   const void* blob, size_t blob_size,
+                   const MappingList& mappings,
+                   const AppMemoryList& appmem) {
+  return WriteMinidumpImpl(NULL, minidump_fd, minidump_size_limit,
+                           crashing_process, blob, blob_size,
+                           mappings, appmem);
+}
+
+bool WriteMinidump(const char* filename,
+                   const MappingList& mappings,
+                   const AppMemoryList& appmem,
+                   LinuxDumper* dumper) {
+  MinidumpWriter writer(filename, -1, NULL, mappings, appmem, dumper);
+  if (!writer.Init())
+    return false;
+  return writer.Dump();
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/client/linux/minidump_writer/minidump_writer.h b/google-breakpad/src/client/linux/minidump_writer/minidump_writer.h
new file mode 100644
index 0000000..d13fb12
--- /dev/null
+++ b/google-breakpad/src/client/linux/minidump_writer/minidump_writer.h
@@ -0,0 +1,124 @@
+// Copyright (c) 2009, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef CLIENT_LINUX_MINIDUMP_WRITER_MINIDUMP_WRITER_H_
+#define CLIENT_LINUX_MINIDUMP_WRITER_MINIDUMP_WRITER_H_
+
+#include <stdint.h>
+#include <sys/types.h>
+#include <sys/ucontext.h>
+#include <unistd.h>
+
+#include <list>
+#include <utility>
+
+#include "client/linux/minidump_writer/linux_dumper.h"
+#include "google_breakpad/common/minidump_format.h"
+
+namespace google_breakpad {
+
+class ExceptionHandler;
+
+#if defined(__aarch64__)
+typedef struct fpsimd_context fpstate_t;
+#elif !defined(__ARM_EABI__) && !defined(__mips__)
+typedef struct _libc_fpstate fpstate_t;
+#endif
+
+// These entries store a list of memory regions that the client wants included
+// in the minidump.
+struct AppMemory {
+  void* ptr;
+  size_t length;
+
+  bool operator==(const struct AppMemory& other) const {
+    return ptr == other.ptr;
+  }
+
+  bool operator==(const void* other) const {
+    return ptr == other;
+  }
+};
+typedef std::list<AppMemory> AppMemoryList;
+
+// Writes a minidump to the filesystem. These functions do not malloc nor use
+// libc functions which may. Thus, it can be used in contexts where the state
+// of the heap may be corrupt.
+//   minidump_path: the path to the file to write to. This is opened O_EXCL and
+//     fails open fails.
+//   crashing_process: the pid of the crashing process. This must be trusted.
+//   blob: a blob of data from the crashing process. See exception_handler.h
+//   blob_size: the length of |blob|, in bytes
+//
+// Returns true iff successful.
+bool WriteMinidump(const char* minidump_path, pid_t crashing_process,
+                   const void* blob, size_t blob_size);
+// Same as above but takes an open file descriptor instead of a path.
+bool WriteMinidump(int minidump_fd, pid_t crashing_process,
+                   const void* blob, size_t blob_size);
+
+// Alternate form of WriteMinidump() that works with processes that
+// are not expected to have crashed.  If |process_blamed_thread| is
+// meaningful, it will be the one from which a crash signature is
+// extracted.  It is not expected that this function will be called
+// from a compromised context, but it is safe to do so.
+bool WriteMinidump(const char* minidump_path, pid_t process,
+                   pid_t process_blamed_thread);
+
+// These overloads also allow passing a list of known mappings and
+// a list of additional memory regions to be included in the minidump.
+bool WriteMinidump(const char* minidump_path, pid_t crashing_process,
+                   const void* blob, size_t blob_size,
+                   const MappingList& mappings,
+                   const AppMemoryList& appdata);
+bool WriteMinidump(int minidump_fd, pid_t crashing_process,
+                   const void* blob, size_t blob_size,
+                   const MappingList& mappings,
+                   const AppMemoryList& appdata);
+
+// These overloads also allow passing a file size limit for the minidump.
+bool WriteMinidump(const char* minidump_path, off_t minidump_size_limit,
+                   pid_t crashing_process,
+                   const void* blob, size_t blob_size,
+                   const MappingList& mappings,
+                   const AppMemoryList& appdata);
+bool WriteMinidump(int minidump_fd, off_t minidump_size_limit,
+                   pid_t crashing_process,
+                   const void* blob, size_t blob_size,
+                   const MappingList& mappings,
+                   const AppMemoryList& appdata);
+
+bool WriteMinidump(const char* filename,
+                   const MappingList& mappings,
+                   const AppMemoryList& appdata,
+                   LinuxDumper* dumper);
+
+}  // namespace google_breakpad
+
+#endif  // CLIENT_LINUX_MINIDUMP_WRITER_MINIDUMP_WRITER_H_
diff --git a/google-breakpad/src/client/linux/minidump_writer/minidump_writer_unittest.cc b/google-breakpad/src/client/linux/minidump_writer/minidump_writer_unittest.cc
new file mode 100644
index 0000000..7dbff73
--- /dev/null
+++ b/google-breakpad/src/client/linux/minidump_writer/minidump_writer_unittest.cc
@@ -0,0 +1,758 @@
+// Copyright (c) 2011 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include <fcntl.h>
+#include <sys/poll.h>
+#include <sys/stat.h>
+#include <sys/syscall.h>
+#include <sys/types.h>
+#include <ucontext.h>
+#include <unistd.h>
+
+#include <string>
+
+#include "breakpad_googletest_includes.h"
+#include "client/linux/handler/exception_handler.h"
+#include "client/linux/minidump_writer/linux_dumper.h"
+#include "client/linux/minidump_writer/minidump_writer.h"
+#include "client/linux/minidump_writer/minidump_writer_unittest_utils.h"
+#include "common/linux/eintr_wrapper.h"
+#include "common/linux/file_id.h"
+#include "common/linux/ignore_ret.h"
+#include "common/linux/safe_readlink.h"
+#include "common/scoped_ptr.h"
+#include "common/tests/auto_tempdir.h"
+#include "common/tests/file_utils.h"
+#include "common/using_std_string.h"
+#include "google_breakpad/processor/minidump.h"
+
+using namespace google_breakpad;
+
+// Length of a formatted GUID string =
+// sizeof(MDGUID) * 2 + 4 (for dashes) + 1 (null terminator)
+const int kGUIDStringSize = 37;
+
+namespace {
+
+typedef testing::Test MinidumpWriterTest;
+
+const char kMDWriterUnitTestFileName[] = "/minidump-writer-unittest";
+
+TEST(MinidumpWriterTest, SetupWithPath) {
+  int fds[2];
+  ASSERT_NE(-1, pipe(fds));
+
+  const pid_t child = fork();
+  if (child == 0) {
+    close(fds[1]);
+    char b;
+    IGNORE_RET(HANDLE_EINTR(read(fds[0], &b, sizeof(b))));
+    close(fds[0]);
+    syscall(__NR_exit);
+  }
+  close(fds[0]);
+
+  ExceptionHandler::CrashContext context;
+  memset(&context, 0, sizeof(context));
+
+  AutoTempDir temp_dir;
+  string templ = temp_dir.path() + kMDWriterUnitTestFileName;
+  // Set a non-zero tid to avoid tripping asserts.
+  context.tid = child;
+  ASSERT_TRUE(WriteMinidump(templ.c_str(), child, &context, sizeof(context)));
+  struct stat st;
+  ASSERT_EQ(0, stat(templ.c_str(), &st));
+  ASSERT_GT(st.st_size, 0);
+
+  close(fds[1]);
+}
+
+TEST(MinidumpWriterTest, SetupWithFD) {
+  int fds[2];
+  ASSERT_NE(-1, pipe(fds));
+
+  const pid_t child = fork();
+  if (child == 0) {
+    close(fds[1]);
+    char b;
+    HANDLE_EINTR(read(fds[0], &b, sizeof(b)));
+    close(fds[0]);
+    syscall(__NR_exit);
+  }
+  close(fds[0]);
+
+  ExceptionHandler::CrashContext context;
+  memset(&context, 0, sizeof(context));
+
+  AutoTempDir temp_dir;
+  string templ = temp_dir.path() + kMDWriterUnitTestFileName;
+  int fd = open(templ.c_str(), O_CREAT | O_WRONLY, S_IRWXU);
+  // Set a non-zero tid to avoid tripping asserts.
+  context.tid = child;
+  ASSERT_TRUE(WriteMinidump(fd, child, &context, sizeof(context)));
+  struct stat st;
+  ASSERT_EQ(0, stat(templ.c_str(), &st));
+  ASSERT_GT(st.st_size, 0);
+
+  close(fds[1]);
+}
+
+// Test that mapping info can be specified when writing a minidump,
+// and that it ends up in the module list of the minidump.
+TEST(MinidumpWriterTest, MappingInfo) {
+  int fds[2];
+  ASSERT_NE(-1, pipe(fds));
+
+  // These are defined here so the parent can use them to check the
+  // data from the minidump afterwards.
+  const uint32_t memory_size = sysconf(_SC_PAGESIZE);
+  const char* kMemoryName = "a fake module";
+  const uint8_t kModuleGUID[sizeof(MDGUID)] = {
+    0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
+    0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF
+  };
+  char module_identifier_buffer[kGUIDStringSize];
+  FileID::ConvertIdentifierToString(kModuleGUID,
+                                    module_identifier_buffer,
+                                    sizeof(module_identifier_buffer));
+  string module_identifier(module_identifier_buffer);
+  // Strip out dashes
+  size_t pos;
+  while ((pos = module_identifier.find('-')) != string::npos) {
+    module_identifier.erase(pos, 1);
+  }
+  // And append a zero, because module IDs include an "age" field
+  // which is always zero on Linux.
+  module_identifier += "0";
+
+  // Get some memory.
+  char* memory =
+    reinterpret_cast<char*>(mmap(NULL,
+                                 memory_size,
+                                 PROT_READ | PROT_WRITE,
+                                 MAP_PRIVATE | MAP_ANON,
+                                 -1,
+                                 0));
+  const uintptr_t kMemoryAddress = reinterpret_cast<uintptr_t>(memory);
+  ASSERT_TRUE(memory);
+
+  const pid_t child = fork();
+  if (child == 0) {
+    close(fds[1]);
+    char b;
+    IGNORE_RET(HANDLE_EINTR(read(fds[0], &b, sizeof(b))));
+    close(fds[0]);
+    syscall(__NR_exit);
+  }
+  close(fds[0]);
+
+  ExceptionHandler::CrashContext context;
+  memset(&context, 0, sizeof(context));
+  ASSERT_EQ(0, getcontext(&context.context));
+  context.tid = child;
+
+  AutoTempDir temp_dir;
+  string templ = temp_dir.path() + kMDWriterUnitTestFileName;
+
+  // Add information about the mapped memory.
+  MappingInfo info;
+  info.start_addr = kMemoryAddress;
+  info.size = memory_size;
+  info.offset = 0;
+  strcpy(info.name, kMemoryName);
+
+  MappingList mappings;
+  AppMemoryList memory_list;
+  MappingEntry mapping;
+  mapping.first = info;
+  memcpy(mapping.second, kModuleGUID, sizeof(MDGUID));
+  mappings.push_back(mapping);
+  ASSERT_TRUE(WriteMinidump(templ.c_str(), child, &context, sizeof(context),
+                            mappings, memory_list));
+
+  // Read the minidump. Load the module list, and ensure that
+  // the mmap'ed |memory| is listed with the given module name
+  // and debug ID.
+  Minidump minidump(templ);
+  ASSERT_TRUE(minidump.Read());
+
+  MinidumpModuleList* module_list = minidump.GetModuleList();
+  ASSERT_TRUE(module_list);
+  const MinidumpModule* module =
+    module_list->GetModuleForAddress(kMemoryAddress);
+  ASSERT_TRUE(module);
+
+  EXPECT_EQ(kMemoryAddress, module->base_address());
+  EXPECT_EQ(memory_size, module->size());
+  EXPECT_EQ(kMemoryName, module->code_file());
+  EXPECT_EQ(module_identifier, module->debug_identifier());
+
+  uint32_t len;
+  // These streams are expected to be there
+  EXPECT_TRUE(minidump.SeekToStreamType(MD_THREAD_LIST_STREAM, &len));
+  EXPECT_TRUE(minidump.SeekToStreamType(MD_MEMORY_LIST_STREAM, &len));
+  EXPECT_TRUE(minidump.SeekToStreamType(MD_EXCEPTION_STREAM, &len));
+  EXPECT_TRUE(minidump.SeekToStreamType(MD_SYSTEM_INFO_STREAM, &len));
+  EXPECT_TRUE(minidump.SeekToStreamType(MD_LINUX_CPU_INFO, &len));
+  EXPECT_TRUE(minidump.SeekToStreamType(MD_LINUX_PROC_STATUS, &len));
+  EXPECT_TRUE(minidump.SeekToStreamType(MD_LINUX_CMD_LINE, &len));
+  EXPECT_TRUE(minidump.SeekToStreamType(MD_LINUX_ENVIRON, &len));
+  EXPECT_TRUE(minidump.SeekToStreamType(MD_LINUX_AUXV, &len));
+  EXPECT_TRUE(minidump.SeekToStreamType(MD_LINUX_MAPS, &len));
+  EXPECT_TRUE(minidump.SeekToStreamType(MD_LINUX_DSO_DEBUG, &len));
+
+  close(fds[1]);
+}
+
+// Test that mapping info can be specified, and that it overrides
+// existing mappings that are wholly contained within the specified
+// range.
+#ifdef ENABLE_FLAKY_TESTS
+TEST(MinidumpWriterTest, MappingInfoContained) {
+  int fds[2];
+  ASSERT_NE(-1, pipe(fds));
+
+  // These are defined here so the parent can use them to check the
+  // data from the minidump afterwards.
+  const int32_t memory_size = sysconf(_SC_PAGESIZE);
+  const char* kMemoryName = "a fake module";
+  const uint8_t kModuleGUID[sizeof(MDGUID)] = {
+    0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
+    0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF
+  };
+  char module_identifier_buffer[kGUIDStringSize];
+  FileID::ConvertIdentifierToString(kModuleGUID,
+                                    module_identifier_buffer,
+                                    sizeof(module_identifier_buffer));
+  string module_identifier(module_identifier_buffer);
+  // Strip out dashes
+  size_t pos;
+  while ((pos = module_identifier.find('-')) != string::npos) {
+    module_identifier.erase(pos, 1);
+  }
+  // And append a zero, because module IDs include an "age" field
+  // which is always zero on Linux.
+  module_identifier += "0";
+
+  // mmap a file
+  AutoTempDir temp_dir;
+  string tempfile = temp_dir.path() + "/minidump-writer-unittest-temp";
+  int fd = open(tempfile.c_str(), O_RDWR | O_CREAT, 0);
+  ASSERT_NE(-1, fd);
+  unlink(tempfile.c_str());
+  // fill with zeros
+  google_breakpad::scoped_array<char> buffer(new char[memory_size]);
+  memset(buffer.get(), 0, memory_size);
+  ASSERT_EQ(memory_size, write(fd, buffer.get(), memory_size));
+  lseek(fd, 0, SEEK_SET);
+
+  char* memory =
+    reinterpret_cast<char*>(mmap(NULL,
+                                 memory_size,
+                                 PROT_READ | PROT_WRITE,
+                                 MAP_PRIVATE,
+                                 fd,
+                                 0));
+  const uintptr_t kMemoryAddress = reinterpret_cast<uintptr_t>(memory);
+  ASSERT_TRUE(memory);
+  close(fd);
+
+  const pid_t child = fork();
+  if (child == 0) {
+    close(fds[1]);
+    char b;
+    IGNORE_RET(HANDLE_EINTR(read(fds[0], &b, sizeof(b))));
+    close(fds[0]);
+    syscall(__NR_exit);
+  }
+  close(fds[0]);
+
+  ExceptionHandler::CrashContext context;
+  memset(&context, 0, sizeof(context));
+  context.tid = 1;
+
+  string dumpfile = temp_dir.path() + kMDWriterUnitTestFileName;
+
+  // Add information about the mapped memory. Report it as being larger than
+  // it actually is.
+  MappingInfo info;
+  info.start_addr = kMemoryAddress - memory_size;
+  info.size = memory_size * 3;
+  info.offset = 0;
+  strcpy(info.name, kMemoryName);
+
+  MappingList mappings;
+  AppMemoryList memory_list;
+  MappingEntry mapping;
+  mapping.first = info;
+  memcpy(mapping.second, kModuleGUID, sizeof(MDGUID));
+  mappings.push_back(mapping);
+  ASSERT_TRUE(WriteMinidump(dumpfile.c_str(), child, &context, sizeof(context),
+                            mappings, memory_list));
+
+  // Read the minidump. Load the module list, and ensure that
+  // the mmap'ed |memory| is listed with the given module name
+  // and debug ID.
+  Minidump minidump(dumpfile);
+  ASSERT_TRUE(minidump.Read());
+
+  MinidumpModuleList* module_list = minidump.GetModuleList();
+  ASSERT_TRUE(module_list);
+  const MinidumpModule* module =
+    module_list->GetModuleForAddress(kMemoryAddress);
+  ASSERT_TRUE(module);
+
+  EXPECT_EQ(info.start_addr, module->base_address());
+  EXPECT_EQ(info.size, module->size());
+  EXPECT_EQ(kMemoryName, module->code_file());
+  EXPECT_EQ(module_identifier, module->debug_identifier());
+
+  close(fds[1]);
+}
+#endif
+
+TEST(MinidumpWriterTest, DeletedBinary) {
+  const string kNumberOfThreadsArgument = "1";
+  const string helper_path(GetHelperBinary());
+  if (helper_path.empty()) {
+    FAIL() << "Couldn't find helper binary";
+    exit(1);
+  }
+
+  // Copy binary to a temp file.
+  AutoTempDir temp_dir;
+  string binpath = temp_dir.path() + "/linux-dumper-unittest-helper";
+  ASSERT_TRUE(CopyFile(helper_path.c_str(), binpath.c_str()))
+      << "Failed to copy " << helper_path << " to " << binpath;
+  ASSERT_EQ(0, chmod(binpath.c_str(), 0755));
+
+  int fds[2];
+  ASSERT_NE(-1, pipe(fds));
+
+  pid_t child_pid = fork();
+  if (child_pid == 0) {
+    // In child process.
+    close(fds[0]);
+
+    // Pass the pipe fd and the number of threads as arguments.
+    char pipe_fd_string[8];
+    sprintf(pipe_fd_string, "%d", fds[1]);
+    execl(binpath.c_str(),
+          binpath.c_str(),
+          pipe_fd_string,
+          kNumberOfThreadsArgument.c_str(),
+          NULL);
+  }
+  close(fds[1]);
+  // Wait for the child process to signal that it's ready.
+  struct pollfd pfd;
+  memset(&pfd, 0, sizeof(pfd));
+  pfd.fd = fds[0];
+  pfd.events = POLLIN | POLLERR;
+
+  const int r = HANDLE_EINTR(poll(&pfd, 1, 1000));
+  ASSERT_EQ(1, r);
+  ASSERT_TRUE(pfd.revents & POLLIN);
+  uint8_t junk;
+  const int nr = HANDLE_EINTR(read(fds[0], &junk, sizeof(junk)));
+  ASSERT_EQ(static_cast<ssize_t>(sizeof(junk)), nr);
+  close(fds[0]);
+
+  // Child is ready now.
+  // Unlink the test binary.
+  unlink(binpath.c_str());
+
+  ExceptionHandler::CrashContext context;
+  memset(&context, 0, sizeof(context));
+
+  string templ = temp_dir.path() + kMDWriterUnitTestFileName;
+  // Set a non-zero tid to avoid tripping asserts.
+  context.tid = child_pid;
+  ASSERT_TRUE(WriteMinidump(templ.c_str(), child_pid, &context,
+                            sizeof(context)));
+  kill(child_pid, SIGKILL);
+
+  struct stat st;
+  ASSERT_EQ(0, stat(templ.c_str(), &st));
+  ASSERT_GT(st.st_size, 0);
+
+  Minidump minidump(templ);
+  ASSERT_TRUE(minidump.Read());
+
+  // Check that the main module filename is correct.
+  MinidumpModuleList* module_list = minidump.GetModuleList();
+  ASSERT_TRUE(module_list);
+  const MinidumpModule* module = module_list->GetMainModule();
+  EXPECT_STREQ(binpath.c_str(), module->code_file().c_str());
+  // Check that the file ID is correct.
+  FileID fileid(helper_path.c_str());
+  uint8_t identifier[sizeof(MDGUID)];
+  EXPECT_TRUE(fileid.ElfFileIdentifier(identifier));
+  char identifier_string[kGUIDStringSize];
+  FileID::ConvertIdentifierToString(identifier,
+                                    identifier_string,
+                                    kGUIDStringSize);
+  string module_identifier(identifier_string);
+  // Strip out dashes
+  size_t pos;
+  while ((pos = module_identifier.find('-')) != string::npos) {
+    module_identifier.erase(pos, 1);
+  }
+  // And append a zero, because module IDs include an "age" field
+  // which is always zero on Linux.
+  module_identifier += "0";
+  EXPECT_EQ(module_identifier, module->debug_identifier());
+}
+
+// Test that an additional memory region can be added to the minidump.
+TEST(MinidumpWriterTest, AdditionalMemory) {
+  int fds[2];
+  ASSERT_NE(-1, pipe(fds));
+
+  // These are defined here so the parent can use them to check the
+  // data from the minidump afterwards.
+  const uint32_t kMemorySize = sysconf(_SC_PAGESIZE);
+
+  // Get some heap memory.
+  uint8_t* memory = new uint8_t[kMemorySize];
+  const uintptr_t kMemoryAddress = reinterpret_cast<uintptr_t>(memory);
+  ASSERT_TRUE(memory);
+
+  // Stick some data into the memory so the contents can be verified.
+  for (uint32_t i = 0; i < kMemorySize; ++i) {
+    memory[i] = i % 255;
+  }
+
+  const pid_t child = fork();
+  if (child == 0) {
+    close(fds[1]);
+    char b;
+    HANDLE_EINTR(read(fds[0], &b, sizeof(b)));
+    close(fds[0]);
+    syscall(__NR_exit);
+  }
+  close(fds[0]);
+
+  ExceptionHandler::CrashContext context;
+
+  // This needs a valid context for minidump writing to work, but getting
+  // a useful one from the child is too much work, so just use one from
+  // the parent since the child is just a forked copy anyway.
+  ASSERT_EQ(0, getcontext(&context.context));
+  context.tid = child;
+
+  AutoTempDir temp_dir;
+  string templ = temp_dir.path() + kMDWriterUnitTestFileName;
+  unlink(templ.c_str());
+
+  MappingList mappings;
+  AppMemoryList memory_list;
+
+  // Add the memory region to the list of memory to be included.
+  AppMemory app_memory;
+  app_memory.ptr = memory;
+  app_memory.length = kMemorySize;
+  memory_list.push_back(app_memory);
+  ASSERT_TRUE(WriteMinidump(templ.c_str(), child, &context, sizeof(context),
+                            mappings, memory_list));
+
+  // Read the minidump. Ensure that the memory region is present
+  Minidump minidump(templ);
+  ASSERT_TRUE(minidump.Read());
+
+  MinidumpMemoryList* dump_memory_list = minidump.GetMemoryList();
+  ASSERT_TRUE(dump_memory_list);
+  const MinidumpMemoryRegion* region =
+    dump_memory_list->GetMemoryRegionForAddress(kMemoryAddress);
+  ASSERT_TRUE(region);
+
+  EXPECT_EQ(kMemoryAddress, region->GetBase());
+  EXPECT_EQ(kMemorySize, region->GetSize());
+
+  // Verify memory contents.
+  EXPECT_EQ(0, memcmp(region->GetMemory(), memory, kMemorySize));
+
+  delete[] memory;
+  close(fds[1]);
+}
+
+// Test that an invalid thread stack pointer still results in a minidump.
+TEST(MinidumpWriterTest, InvalidStackPointer) {
+  int fds[2];
+  ASSERT_NE(-1, pipe(fds));
+
+  const pid_t child = fork();
+  if (child == 0) {
+    close(fds[1]);
+    char b;
+    HANDLE_EINTR(read(fds[0], &b, sizeof(b)));
+    close(fds[0]);
+    syscall(__NR_exit);
+  }
+  close(fds[0]);
+
+  ExceptionHandler::CrashContext context;
+
+  // This needs a valid context for minidump writing to work, but getting
+  // a useful one from the child is too much work, so just use one from
+  // the parent since the child is just a forked copy anyway.
+  ASSERT_EQ(0, getcontext(&context.context));
+  context.tid = child;
+
+  // Fake the child's stack pointer for its crashing thread.  NOTE: This must
+  // be an invalid memory address for the child process (stack or otherwise).
+  // Try 1MB below the current stack.
+  uintptr_t invalid_stack_pointer =
+      reinterpret_cast<uintptr_t>(&context) - 1024*1024;
+#if defined(__i386)
+  context.context.uc_mcontext.gregs[REG_ESP] = invalid_stack_pointer;
+#elif defined(__x86_64)
+  context.context.uc_mcontext.gregs[REG_RSP] = invalid_stack_pointer;
+#elif defined(__ARM_EABI__)
+  context.context.uc_mcontext.arm_sp = invalid_stack_pointer;
+#elif defined(__aarch64__)
+  context.context.uc_mcontext.sp = invalid_stack_pointer;
+#elif defined(__mips__)
+  context.context.uc_mcontext.gregs[MD_CONTEXT_MIPS_REG_SP] =
+      invalid_stack_pointer;
+#else
+# error "This code has not been ported to your platform yet."
+#endif
+
+  AutoTempDir temp_dir;
+  string templ = temp_dir.path() + kMDWriterUnitTestFileName;
+  // NOTE: In previous versions of Breakpad, WriteMinidump() would fail if
+  // presented with an invalid stack pointer.
+  ASSERT_TRUE(WriteMinidump(templ.c_str(), child, &context, sizeof(context)));
+
+  // Read the minidump. Ensure that the memory region is present
+  Minidump minidump(templ);
+  ASSERT_TRUE(minidump.Read());
+
+  // TODO(ted.mielczarek,mkrebs): Enable this part of the test once
+  // https://breakpad.appspot.com/413002/ is committed.
+#if 0
+  // Make sure there's a thread without a stack.  NOTE: It's okay if
+  // GetThreadList() shows the error: "ERROR: MinidumpThread has a memory
+  // region problem".
+  MinidumpThreadList* dump_thread_list = minidump.GetThreadList();
+  ASSERT_TRUE(dump_thread_list);
+  bool found_empty_stack = false;
+  for (int i = 0; i < dump_thread_list->thread_count(); i++) {
+    MinidumpThread* thread = dump_thread_list->GetThreadAtIndex(i);
+    ASSERT_TRUE(thread->thread() != NULL);
+    // When the stack size is zero bytes, GetMemory() returns NULL.
+    if (thread->GetMemory() == NULL) {
+      found_empty_stack = true;
+      break;
+    }
+  }
+  // NOTE: If you fail this, first make sure that "invalid_stack_pointer"
+  // above is indeed set to an invalid address.
+  ASSERT_TRUE(found_empty_stack);
+#endif
+
+  close(fds[1]);
+}
+
+// Test that limiting the size of the minidump works.
+TEST(MinidumpWriterTest, MinidumpSizeLimit) {
+  static const int kNumberOfThreadsInHelperProgram = 40;
+
+  char number_of_threads_arg[3];
+  sprintf(number_of_threads_arg, "%d", kNumberOfThreadsInHelperProgram);
+
+  string helper_path(GetHelperBinary());
+  if (helper_path.empty()) {
+    FAIL() << "Couldn't find helper binary";
+    exit(1);
+  }
+
+  int fds[2];
+  ASSERT_NE(-1, pipe(fds));
+
+  pid_t child_pid = fork();
+  if (child_pid == 0) {
+    // In child process.
+    close(fds[0]);
+
+    // Pass the pipe fd and the number of threads as arguments.
+    char pipe_fd_string[8];
+    sprintf(pipe_fd_string, "%d", fds[1]);
+    execl(helper_path.c_str(),
+          helper_path.c_str(),
+          pipe_fd_string,
+          number_of_threads_arg,
+          NULL);
+  }
+  close(fds[1]);
+
+  // Wait for all child threads to indicate that they have started
+  for (int threads = 0; threads < kNumberOfThreadsInHelperProgram; threads++) {
+    struct pollfd pfd;
+    memset(&pfd, 0, sizeof(pfd));
+    pfd.fd = fds[0];
+    pfd.events = POLLIN | POLLERR;
+
+    const int r = HANDLE_EINTR(poll(&pfd, 1, 1000));
+    ASSERT_EQ(1, r);
+    ASSERT_TRUE(pfd.revents & POLLIN);
+    uint8_t junk;
+    ASSERT_EQ(read(fds[0], &junk, sizeof(junk)),
+              static_cast<ssize_t>(sizeof(junk)));
+  }
+  close(fds[0]);
+
+  // There is a race here because we may stop a child thread before
+  // it is actually running the busy loop. Empirically this sleep
+  // is sufficient to avoid the race.
+  usleep(100000);
+
+  // Child and its threads are ready now.
+
+
+  off_t normal_file_size;
+  int total_normal_stack_size = 0;
+  AutoTempDir temp_dir;
+
+  // First, write a minidump with no size limit.
+  {
+    string normal_dump = temp_dir.path() +
+        "/minidump-writer-unittest.dmp";
+    ASSERT_TRUE(WriteMinidump(normal_dump.c_str(), -1,
+                              child_pid, NULL, 0,
+                              MappingList(), AppMemoryList()));
+    struct stat st;
+    ASSERT_EQ(0, stat(normal_dump.c_str(), &st));
+    ASSERT_GT(st.st_size, 0);
+    normal_file_size = st.st_size;
+
+    Minidump minidump(normal_dump);
+    ASSERT_TRUE(minidump.Read());
+    MinidumpThreadList* dump_thread_list = minidump.GetThreadList();
+    ASSERT_TRUE(dump_thread_list);
+    for (unsigned int i = 0; i < dump_thread_list->thread_count(); i++) {
+      MinidumpThread* thread = dump_thread_list->GetThreadAtIndex(i);
+      ASSERT_TRUE(thread->thread() != NULL);
+      // When the stack size is zero bytes, GetMemory() returns NULL.
+      MinidumpMemoryRegion* memory = thread->GetMemory();
+      ASSERT_TRUE(memory != NULL);
+      total_normal_stack_size += memory->GetSize();
+    }
+  }
+
+  // Second, write a minidump with a size limit big enough to not trigger
+  // anything.
+  {
+    // Set size limit arbitrarily 1MB larger than the normal file size -- such
+    // that the limiting code will not kick in.
+    const off_t minidump_size_limit = normal_file_size + 1024*1024;
+
+    string same_dump = temp_dir.path() +
+        "/minidump-writer-unittest-same.dmp";
+    ASSERT_TRUE(WriteMinidump(same_dump.c_str(), minidump_size_limit,
+                              child_pid, NULL, 0,
+                              MappingList(), AppMemoryList()));
+    struct stat st;
+    ASSERT_EQ(0, stat(same_dump.c_str(), &st));
+    // Make sure limiting wasn't actually triggered.  NOTE: If you fail this,
+    // first make sure that "minidump_size_limit" above is indeed set to a
+    // large enough value -- the limit-checking code in minidump_writer.cc
+    // does just a rough estimate.
+    ASSERT_EQ(normal_file_size, st.st_size);
+  }
+
+  // Third, write a minidump with a size limit small enough to be triggered.
+  {
+    // Set size limit to some arbitrary amount, such that the limiting code
+    // will kick in.  The equation used to set this value was determined by
+    // simply reversing the size-limit logic a little bit in order to pick a
+    // size we know will trigger it.  The definition of
+    // kLimitAverageThreadStackLength here was copied from class
+    // MinidumpWriter in minidump_writer.cc.
+    static const unsigned kLimitAverageThreadStackLength = 8 * 1024;
+    off_t minidump_size_limit = kNumberOfThreadsInHelperProgram *
+        kLimitAverageThreadStackLength;
+    // If, in reality, each of the threads' stack is *smaller* than
+    // kLimitAverageThreadStackLength, the normal file size could very well be
+    // smaller than the arbitrary limit that was just set.  In that case,
+    // either of these numbers should trigger the size-limiting code, but we
+    // might as well pick the smallest.
+    if (normal_file_size < minidump_size_limit)
+      minidump_size_limit = normal_file_size;
+
+    string limit_dump = temp_dir.path() +
+        "/minidump-writer-unittest-limit.dmp";
+    ASSERT_TRUE(WriteMinidump(limit_dump.c_str(), minidump_size_limit,
+                              child_pid, NULL, 0,
+                              MappingList(), AppMemoryList()));
+    struct stat st;
+    ASSERT_EQ(0, stat(limit_dump.c_str(), &st));
+    ASSERT_GT(st.st_size, 0);
+    // Make sure the file size is at least smaller than the original.  If this
+    // fails because it's the same size, then the size-limit logic didn't kick
+    // in like it was supposed to.
+    EXPECT_LT(st.st_size, normal_file_size);
+
+    Minidump minidump(limit_dump);
+    ASSERT_TRUE(minidump.Read());
+    MinidumpThreadList* dump_thread_list = minidump.GetThreadList();
+    ASSERT_TRUE(dump_thread_list);
+    int total_limit_stack_size = 0;
+    for (unsigned int i = 0; i < dump_thread_list->thread_count(); i++) {
+      MinidumpThread* thread = dump_thread_list->GetThreadAtIndex(i);
+      ASSERT_TRUE(thread->thread() != NULL);
+      // When the stack size is zero bytes, GetMemory() returns NULL.
+      MinidumpMemoryRegion* memory = thread->GetMemory();
+      ASSERT_TRUE(memory != NULL);
+      total_limit_stack_size += memory->GetSize();
+    }
+
+    // Make sure stack size shrunk by at least 1KB per extra thread.  The
+    // definition of kLimitBaseThreadCount here was copied from class
+    // MinidumpWriter in minidump_writer.cc.
+    // Note: The 1KB is arbitrary, and assumes that the thread stacks are big
+    // enough to shrink by that much.  For example, if each thread stack was
+    // originally only 2KB, the current size-limit logic wouldn't actually
+    // shrink them because that's the size to which it tries to shrink.  If
+    // you fail this part of the test due to something like that, the test
+    // logic should probably be improved to account for your situation.
+    const unsigned kLimitBaseThreadCount = 20;
+    const unsigned kMinPerExtraThreadStackReduction = 1024;
+    const int min_expected_reduction = (kNumberOfThreadsInHelperProgram -
+        kLimitBaseThreadCount) * kMinPerExtraThreadStackReduction;
+    EXPECT_LT(total_limit_stack_size,
+              total_normal_stack_size - min_expected_reduction);
+  }
+
+  // Kill the helper program.
+  kill(child_pid, SIGKILL);
+}
+
+}  // namespace
diff --git a/google-breakpad/src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc b/google-breakpad/src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc
new file mode 100644
index 0000000..9f46fa6
--- /dev/null
+++ b/google-breakpad/src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc
@@ -0,0 +1,66 @@
+// Copyright (c) 2011 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// minidump_writer_unittest_utils.cc:
+// Shared routines used by unittests under client/linux/minidump_writer.
+
+#include <limits.h>
+#include <stdlib.h>
+
+#include "client/linux/minidump_writer/minidump_writer_unittest_utils.h"
+#include "common/linux/safe_readlink.h"
+#include "common/using_std_string.h"
+
+namespace google_breakpad {
+
+string GetHelperBinary() {
+  string helper_path;
+  char *bindir = getenv("bindir");
+  if (bindir) {
+    helper_path = string(bindir) + "/";
+  } else {
+    // Locate helper binary next to the current binary.
+    char self_path[PATH_MAX];
+    if (!SafeReadLink("/proc/self/exe", self_path)) {
+      return "";
+    }
+    helper_path = string(self_path);
+    size_t pos = helper_path.rfind('/');
+    if (pos == string::npos) {
+      return "";
+    }
+    helper_path.erase(pos + 1);
+  }
+
+  helper_path += "linux_dumper_unittest_helper";
+
+  return helper_path;
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/client/linux/minidump_writer/minidump_writer_unittest_utils.h b/google-breakpad/src/client/linux/minidump_writer/minidump_writer_unittest_utils.h
new file mode 100644
index 0000000..f16cc08
--- /dev/null
+++ b/google-breakpad/src/client/linux/minidump_writer/minidump_writer_unittest_utils.h
@@ -0,0 +1,49 @@
+// Copyright (c) 2012, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// minidump_writer_unittest_utils.h:
+// Shared routines used by unittests under client/linux/minidump_writer.
+
+#ifndef CLIENT_LINUX_MINIDUMP_WRITER_MINIDUMP_WRITER_UNITTEST_UTILS_H_
+#define CLIENT_LINUX_MINIDUMP_WRITER_MINIDUMP_WRITER_UNITTEST_UTILS_H_
+
+#include <string>
+
+#include "common/using_std_string.h"
+
+namespace google_breakpad {
+
+// Returns the full path to linux_dumper_unittest_helper.  The full path is
+// discovered either by using the environment variable "bindir" or by using
+// the location of the main module of the currently running process.
+string GetHelperBinary();
+
+}  // namespace google_breakpad
+
+#endif  // CLIENT_LINUX_MINIDUMP_WRITER_MINIDUMP_WRITER_UNITTEST_UTILS_H_
diff --git a/google-breakpad/src/client/linux/minidump_writer/proc_cpuinfo_reader.h b/google-breakpad/src/client/linux/minidump_writer/proc_cpuinfo_reader.h
new file mode 100644
index 0000000..d9461bf
--- /dev/null
+++ b/google-breakpad/src/client/linux/minidump_writer/proc_cpuinfo_reader.h
@@ -0,0 +1,130 @@
+// Copyright (c) 2013, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef CLIENT_LINUX_MINIDUMP_WRITER_PROC_CPUINFO_READER_H_
+#define CLIENT_LINUX_MINIDUMP_WRITER_PROC_CPUINFO_READER_H_
+
+#include <stdint.h>
+#include <assert.h>
+#include <string.h>
+
+#include "client/linux/minidump_writer/line_reader.h"
+#include "common/linux/linux_libc_support.h"
+#include "third_party/lss/linux_syscall_support.h"
+
+namespace google_breakpad {
+
+// A class for reading /proc/cpuinfo without using fopen/fgets or other
+// functions which may allocate memory.
+class ProcCpuInfoReader {
+public:
+  ProcCpuInfoReader(int fd)
+    : line_reader_(fd), pop_count_(-1) {
+  }
+
+  // Return the next field name, or NULL in case of EOF.
+  // field: (output) Pointer to zero-terminated field name.
+  // Returns true on success, or false on EOF or error (line too long).
+  bool GetNextField(const char** field) {
+    for (;;) {
+      const char* line;
+      unsigned line_len;
+
+      // Try to read next line.
+      if (pop_count_ >= 0) {
+        line_reader_.PopLine(pop_count_);
+        pop_count_ = -1;
+      }
+
+      if (!line_reader_.GetNextLine(&line, &line_len))
+        return false;
+
+      pop_count_ = static_cast<int>(line_len);
+
+      const char* line_end = line + line_len;
+
+      // Expected format: <field-name> <space>+ ':' <space> <value>
+      // Note that:
+      //   - empty lines happen.
+      //   - <field-name> can contain spaces.
+      //   - some fields have an empty <value>
+      char* sep = static_cast<char*>(my_memchr(line, ':', line_len));
+      if (sep == NULL)
+        continue;
+
+      // Record the value. Skip leading space after the column to get
+      // its start.
+      const char* val = sep+1;
+      while (val < line_end && my_isspace(*val))
+        val++;
+
+      value_ = val;
+      value_len_ = static_cast<size_t>(line_end - val);
+
+      // Remove trailing spaces before the column to properly 0-terminate
+      // the field name.
+      while (sep > line && my_isspace(sep[-1]))
+        sep--;
+
+      if (sep == line)
+        continue;
+
+      // zero-terminate field name.
+      *sep = '\0';
+
+      *field = line;
+      return true;
+    }
+  }
+
+  // Return the field value. This must be called after a succesful
+  // call to GetNextField().
+  const char* GetValue() {
+    assert(value_);
+    return value_;
+  }
+
+  // Same as GetValue(), but also returns the length in characters of
+  // the value.
+  const char* GetValueAndLen(size_t* length) {
+    assert(value_);
+    *length = value_len_;
+    return value_;
+  }
+
+private:
+  LineReader line_reader_;
+  int pop_count_;
+  const char* value_;
+  size_t value_len_;
+};
+
+}  // namespace google_breakpad
+
+#endif  // CLIENT_LINUX_MINIDUMP_WRITER_PROC_CPUINFO_READER_H_
diff --git a/google-breakpad/src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc b/google-breakpad/src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc
new file mode 100644
index 0000000..6037c7e
--- /dev/null
+++ b/google-breakpad/src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc
@@ -0,0 +1,199 @@
+// Copyright (c) 2013, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include <stdlib.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <stdio.h>
+#include <errno.h>
+#include <string.h>
+
+#include "client/linux/minidump_writer/proc_cpuinfo_reader.h"
+#include "breakpad_googletest_includes.h"
+#include "common/linux/tests/auto_testfile.h"
+
+using namespace google_breakpad;
+
+#if !defined(__ANDROID__)
+#define TEMPDIR "/tmp"
+#else
+#define TEMPDIR "/data/local/tmp"
+#endif
+
+
+namespace {
+
+typedef testing::Test ProcCpuInfoReaderTest;
+
+class ScopedTestFile : public AutoTestFile {
+public:
+  explicit ScopedTestFile(const char* text)
+    : AutoTestFile("proc_cpuinfo_reader", text) {
+  }
+};
+
+}
+
+TEST(ProcCpuInfoReaderTest, EmptyFile) {
+  ScopedTestFile file("");
+  ASSERT_TRUE(file.IsOk());
+  ProcCpuInfoReader reader(file.GetFd());
+
+  const char *field;
+  ASSERT_FALSE(reader.GetNextField(&field));
+}
+
+TEST(ProcCpuInfoReaderTest, OneLineTerminated) {
+  ScopedTestFile file("foo : bar\n");
+  ASSERT_TRUE(file.IsOk());
+  ProcCpuInfoReader reader(file.GetFd());
+
+  const char *field;
+  ASSERT_TRUE(reader.GetNextField(&field));
+  ASSERT_STREQ("foo", field);
+  ASSERT_STREQ("bar", reader.GetValue());
+
+  ASSERT_FALSE(reader.GetNextField(&field));
+}
+
+TEST(ProcCpuInfoReaderTest, OneLine) {
+  ScopedTestFile file("foo : bar");
+  ASSERT_TRUE(file.IsOk());
+  ProcCpuInfoReader reader(file.GetFd());
+
+  const char *field;
+  size_t value_len;
+  ASSERT_TRUE(reader.GetNextField(&field));
+  ASSERT_STREQ("foo", field);
+  ASSERT_STREQ("bar", reader.GetValueAndLen(&value_len));
+  ASSERT_EQ(3U, value_len);
+
+  ASSERT_FALSE(reader.GetNextField(&field));
+}
+
+TEST(ProcCpuInfoReaderTest, TwoLinesTerminated) {
+  ScopedTestFile file("foo : bar\nzoo : tut\n");
+  ASSERT_TRUE(file.IsOk());
+  ProcCpuInfoReader reader(file.GetFd());
+
+  const char* field;
+  ASSERT_TRUE(reader.GetNextField(&field));
+  ASSERT_STREQ("foo", field);
+  ASSERT_STREQ("bar", reader.GetValue());
+
+  ASSERT_TRUE(reader.GetNextField(&field));
+  ASSERT_STREQ("zoo", field);
+  ASSERT_STREQ("tut", reader.GetValue());
+
+  ASSERT_FALSE(reader.GetNextField(&field));
+}
+
+TEST(ProcCpuInfoReaderTest, SkipMalformedLine) {
+  ScopedTestFile file("this line should have a column\nfoo : bar\n");
+  ASSERT_TRUE(file.IsOk());
+  ProcCpuInfoReader reader(file.GetFd());
+
+  const char* field;
+  ASSERT_TRUE(reader.GetNextField(&field));
+  ASSERT_STREQ("foo", field);
+  ASSERT_STREQ("bar", reader.GetValue());
+
+  ASSERT_FALSE(reader.GetNextField(&field));
+}
+
+TEST(ProcCpuInfoReaderTest, SkipOneEmptyLine) {
+  ScopedTestFile file("\n\nfoo : bar\n");
+  ASSERT_TRUE(file.IsOk());
+  ProcCpuInfoReader reader(file.GetFd());
+
+  const char* field;
+  ASSERT_TRUE(reader.GetNextField(&field));
+  ASSERT_STREQ("foo", field);
+  ASSERT_STREQ("bar", reader.GetValue());
+
+  ASSERT_FALSE(reader.GetNextField(&field));
+}
+
+TEST(ProcCpuInfoReaderTest, SkipEmptyField) {
+  ScopedTestFile file(" : bar\nzoo : tut\n");
+  ASSERT_TRUE(file.IsOk());
+  ProcCpuInfoReader reader(file.GetFd());
+
+  const char* field;
+  ASSERT_TRUE(reader.GetNextField(&field));
+  ASSERT_STREQ("zoo", field);
+  ASSERT_STREQ("tut", reader.GetValue());
+
+  ASSERT_FALSE(reader.GetNextField(&field));
+}
+
+TEST(ProcCpuInfoReaderTest, SkipTwoEmptyLines) {
+  ScopedTestFile file("foo : bar\n\n\nfoo : bar\n");
+  ASSERT_TRUE(file.IsOk());
+  ProcCpuInfoReader reader(file.GetFd());
+
+  const char* field;
+  ASSERT_TRUE(reader.GetNextField(&field));
+  ASSERT_STREQ("foo", field);
+  ASSERT_STREQ("bar", reader.GetValue());
+
+  ASSERT_TRUE(reader.GetNextField(&field));
+  ASSERT_STREQ("foo", field);
+  ASSERT_STREQ("bar", reader.GetValue());
+
+  ASSERT_FALSE(reader.GetNextField(&field));
+}
+
+TEST(ProcCpuInfoReaderTest, FieldWithSpaces) {
+  ScopedTestFile file("foo bar    : zoo\n");
+  ASSERT_TRUE(file.IsOk());
+  ProcCpuInfoReader reader(file.GetFd());
+
+  const char* field;
+  ASSERT_TRUE(reader.GetNextField(&field));
+  ASSERT_STREQ("foo bar", field);
+  ASSERT_STREQ("zoo", reader.GetValue());
+
+  ASSERT_FALSE(reader.GetNextField(&field));
+}
+
+TEST(ProcCpuInfoReaderTest, EmptyValue) {
+  ScopedTestFile file("foo :\n");
+  ASSERT_TRUE(file.IsOk());
+  ProcCpuInfoReader reader(file.GetFd());
+
+  const char* field;
+  ASSERT_TRUE(reader.GetNextField(&field));
+  ASSERT_STREQ("foo", field);
+  size_t value_len;
+  ASSERT_STREQ("", reader.GetValueAndLen(&value_len));
+  ASSERT_EQ(0U, value_len);
+
+  ASSERT_FALSE(reader.GetNextField(&field));
+}
diff --git a/google-breakpad/src/client/linux/sender/google_crash_report_sender.cc b/google-breakpad/src/client/linux/sender/google_crash_report_sender.cc
new file mode 100644
index 0000000..ec6c06e
--- /dev/null
+++ b/google-breakpad/src/client/linux/sender/google_crash_report_sender.cc
@@ -0,0 +1,104 @@
+// Copyright (c) 2009, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include "common/linux/google_crashdump_uploader.h"
+#include "third_party/linux/include/gflags/gflags.h"
+#include <string>
+#include <iostream>
+
+#include "common/using_std_string.h"
+
+DEFINE_string(crash_server, "https://clients2.google.com/cr",
+              "The crash server to upload minidumps to.");
+DEFINE_string(product_name, "",
+              "The product name that the minidump corresponds to.");
+DEFINE_string(product_version, "",
+              "The version of the product that produced the minidump.");
+DEFINE_string(client_id, "",
+              "The client GUID");
+DEFINE_string(minidump_path, "",
+              "The path of the minidump file.");
+DEFINE_string(ptime, "",
+              "The process uptime in milliseconds.");
+DEFINE_string(ctime, "",
+              "The cumulative process uptime in milliseconds.");
+DEFINE_string(email, "",
+              "The user's email address.");
+DEFINE_string(comments, "",
+              "Extra user comments");
+DEFINE_string(proxy_host, "",
+              "Proxy host");
+DEFINE_string(proxy_userpasswd, "",
+              "Proxy username/password in user:pass format.");
+
+
+bool CheckForRequiredFlagsOrDie() {
+  string error_text = "";
+  if (FLAGS_product_name.empty()) {
+    error_text.append("\nProduct name must be specified.");
+  }
+
+  if (FLAGS_product_version.empty()) {
+    error_text.append("\nProduct version must be specified.");
+  }
+
+  if (FLAGS_client_id.empty()) {
+    error_text.append("\nClient ID must be specified.");
+  }
+
+  if (FLAGS_minidump_path.empty()) {
+    error_text.append("\nMinidump pathname must be specified.");
+  }
+
+  if (!error_text.empty()) {
+    std::cout << error_text;
+    return false;
+  }
+  return true;
+}
+
+int main(int argc, char *argv[]) {
+  google::InitGoogleLogging(argv[0]);
+  google::ParseCommandLineFlags(&argc, &argv, true);
+  if (!CheckForRequiredFlagsOrDie()) {
+    return 1;
+  }
+  google_breakpad::GoogleCrashdumpUploader g(FLAGS_product_name,
+                                             FLAGS_product_version,
+                                             FLAGS_client_id,
+                                             FLAGS_ptime,
+                                             FLAGS_ctime,
+                                             FLAGS_email,
+                                             FLAGS_comments,
+                                             FLAGS_minidump_path,
+                                             FLAGS_crash_server,
+                                             FLAGS_proxy_host,
+                                             FLAGS_proxy_userpasswd);
+  g.Upload(NULL, NULL, NULL);
+}
diff --git a/google-breakpad/src/client/mac/Breakpad.xcodeproj/project.pbxproj b/google-breakpad/src/client/mac/Breakpad.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..584ec5d
--- /dev/null
+++ b/google-breakpad/src/client/mac/Breakpad.xcodeproj/project.pbxproj
@@ -0,0 +1,2790 @@
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 45;
+	objects = {
+
+/* Begin PBXAggregateTarget section */
+		F94585840F782326009A47BF /* All */ = {
+			isa = PBXAggregateTarget;
+			buildConfigurationList = F94585930F78235C009A47BF /* Build configuration list for PBXAggregateTarget "All" */;
+			buildPhases = (
+			);
+			dependencies = (
+				F94585880F78232B009A47BF /* PBXTargetDependency */,
+				F945858A0F78232E009A47BF /* PBXTargetDependency */,
+				F945858C0F782330009A47BF /* PBXTargetDependency */,
+				F945858E0F782333009A47BF /* PBXTargetDependency */,
+				F94585900F782336009A47BF /* PBXTargetDependency */,
+				F93DE3A70F830D1D00608B94 /* PBXTargetDependency */,
+				F95BB8B3101F94D300AA053B /* PBXTargetDependency */,
+				F95BB8B5101F94D300AA053B /* PBXTargetDependency */,
+				F95BB8B7101F94D300AA053B /* PBXTargetDependency */,
+				8B31023911F0CF0600FCF3E4 /* PBXTargetDependency */,
+				8B31051711F1010E00FCF3E4 /* PBXTargetDependency */,
+				8B31051911F1010E00FCF3E4 /* PBXTargetDependency */,
+				8B31051B11F1010E00FCF3E4 /* PBXTargetDependency */,
+				8B31051D11F1010E00FCF3E4 /* PBXTargetDependency */,
+				8B31051F11F1010E00FCF3E4 /* PBXTargetDependency */,
+			);
+			name = All;
+			productName = All;
+		};
+/* End PBXAggregateTarget section */
+
+/* Begin PBXBuildFile section */
+		162F64F2161C577500CD68D5 /* arch_utilities.cc in Sources */ = {isa = PBXBuildFile; fileRef = 162F64F0161C577500CD68D5 /* arch_utilities.cc */; };
+		162F64F3161C577500CD68D5 /* arch_utilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 162F64F1161C577500CD68D5 /* arch_utilities.h */; };
+		162F64F4161C579B00CD68D5 /* arch_utilities.cc in Sources */ = {isa = PBXBuildFile; fileRef = 162F64F0161C577500CD68D5 /* arch_utilities.cc */; };
+		162F64F5161C579B00CD68D5 /* arch_utilities.h in Sources */ = {isa = PBXBuildFile; fileRef = 162F64F1161C577500CD68D5 /* arch_utilities.h */; };
+		163201D61443019E00C4DBF5 /* ConfigFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 163201D41443019E00C4DBF5 /* ConfigFile.h */; };
+		163201D71443019E00C4DBF5 /* ConfigFile.mm in Sources */ = {isa = PBXBuildFile; fileRef = 163201D51443019E00C4DBF5 /* ConfigFile.mm */; };
+		163201E31443029300C4DBF5 /* ConfigFile.mm in Sources */ = {isa = PBXBuildFile; fileRef = 163201D51443019E00C4DBF5 /* ConfigFile.mm */; };
+		16C7C918147D45AE00776EAD /* BreakpadDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 16C7C917147D45AE00776EAD /* BreakpadDefines.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		16E02DB8147410F0008C604D /* uploader.mm in Sources */ = {isa = PBXBuildFile; fileRef = 16E02DB4147410D4008C604D /* uploader.mm */; };
+		1EEEB6231720829E00F7E689 /* simple_string_dictionary.cc in Sources */ = {isa = PBXBuildFile; fileRef = 1EEEB6211720829E00F7E689 /* simple_string_dictionary.cc */; };
+		1EEEB6241720829E00F7E689 /* simple_string_dictionary.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EEEB6221720829E00F7E689 /* simple_string_dictionary.h */; };
+		1EEEB6271720831E00F7E689 /* BreakpadFramework_Test.mm in Sources */ = {isa = PBXBuildFile; fileRef = F91AF5CF0FD60393009D8BE2 /* BreakpadFramework_Test.mm */; };
+		1EEEB62A1720859200F7E689 /* simple_string_dictionary_unittest.cc in Sources */ = {isa = PBXBuildFile; fileRef = 1EEEB6251720830600F7E689 /* simple_string_dictionary_unittest.cc */; };
+		1EEEB62B1720868C00F7E689 /* simple_string_dictionary.cc in Sources */ = {isa = PBXBuildFile; fileRef = 1EEEB6211720829E00F7E689 /* simple_string_dictionary.cc */; };
+		3329D4ED0FA16D820007BBC5 /* Breakpad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3329D4EC0FA16D820007BBC5 /* Breakpad.xib */; };
+		33880C800F9E097100817F82 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 33880C7E0F9E097100817F82 /* InfoPlist.strings */; };
+		4084699D0F5D9CF900FDCA37 /* crash_report_sender.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4084699C0F5D9CF900FDCA37 /* crash_report_sender.icns */; };
+		4D61A25F14F43CFC002D5862 /* bootstrap_compat.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4D61A25D14F43CFC002D5862 /* bootstrap_compat.cc */; };
+		4D61A26B14F43D3C002D5862 /* bootstrap_compat.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4D61A25D14F43CFC002D5862 /* bootstrap_compat.cc */; };
+		4D61A26C14F43D42002D5862 /* bootstrap_compat.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4D61A25D14F43CFC002D5862 /* bootstrap_compat.cc */; };
+		4D61A26D14F43D43002D5862 /* bootstrap_compat.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4D61A25D14F43CFC002D5862 /* bootstrap_compat.cc */; };
+		4D61A26E14F43D45002D5862 /* bootstrap_compat.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4D61A25D14F43CFC002D5862 /* bootstrap_compat.cc */; };
+		4D61A26F14F43D48002D5862 /* bootstrap_compat.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4D61A25D14F43CFC002D5862 /* bootstrap_compat.cc */; };
+		4D72CA0E13DFAD5C006CABE3 /* md5.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4D72CA0D13DFAD5C006CABE3 /* md5.cc */; };
+		4D72CA2513DFAE1C006CABE3 /* md5.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4D72CA0D13DFAD5C006CABE3 /* md5.cc */; };
+		4D72CA2F13DFAE65006CABE3 /* md5.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4D72CA0D13DFAD5C006CABE3 /* md5.cc */; };
+		4D72CA3813DFAE91006CABE3 /* md5.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4D72CA0D13DFAD5C006CABE3 /* md5.cc */; };
+		4D72CA3913DFAE92006CABE3 /* md5.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4D72CA0D13DFAD5C006CABE3 /* md5.cc */; };
+		4DBE49A6134A4F200072546A /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4DBE4769134A4F080072546A /* CoreServices.framework */; };
+		4DBE49A7134A4F280072546A /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4DBE4769134A4F080072546A /* CoreServices.framework */; };
+		4DBE49A8134A4F380072546A /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4DBE4769134A4F080072546A /* CoreServices.framework */; };
+		4DBE49A9134A4F460072546A /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4DBE4769134A4F080072546A /* CoreServices.framework */; };
+		8B3101C611F0CD9F00FCF3E4 /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0867D6A5FE840307C02AAC07 /* AppKit.framework */; };
+		8B3101C711F0CD9F00FCF3E4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0867D69BFE84028FC02AAC07 /* Foundation.framework */; };
+		8B3101CA11F0CDB000FCF3E4 /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0867D6A5FE840307C02AAC07 /* AppKit.framework */; };
+		8B3101CB11F0CDB000FCF3E4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0867D69BFE84028FC02AAC07 /* Foundation.framework */; };
+		8B3101EA11F0CDE300FCF3E4 /* SenTestingKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B3101E911F0CDE300FCF3E4 /* SenTestingKit.framework */; };
+		8B31029411F0D54300FCF3E4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0867D69BFE84028FC02AAC07 /* Foundation.framework */; };
+		8B3102E611F0D74C00FCF3E4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0867D69BFE84028FC02AAC07 /* Foundation.framework */; };
+		8B3102EB11F0D78000FCF3E4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0867D69BFE84028FC02AAC07 /* Foundation.framework */; };
+		8B31FC8211EFD2B800FCF3E4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0867D69BFE84028FC02AAC07 /* Foundation.framework */; };
+		8DC2EF570486A6940098B216 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7B1FEA5585E11CA2CBB /* Cocoa.framework */; };
+		D23F4B2E12A7E13200686C8D /* minidump_generator_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = D23F4B2C12A7E13200686C8D /* minidump_generator_test.cc */; };
+		D23F4B3312A7E17700686C8D /* libgtest.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D2F9A41512131EF0002747C1 /* libgtest.a */; };
+		D23F4BB112A868CB00686C8D /* minidump_generator_test_helper.cc in Sources */ = {isa = PBXBuildFile; fileRef = D23F4B9A12A8688800686C8D /* minidump_generator_test_helper.cc */; };
+		D23F4BB812A868F700686C8D /* MachIPC.mm in Sources */ = {isa = PBXBuildFile; fileRef = F92C53790ECCE635009BE4BA /* MachIPC.mm */; };
+		D244536A12426F00009BBCE0 /* logging.cc in Sources */ = {isa = PBXBuildFile; fileRef = D244535112426EBB009BBCE0 /* logging.cc */; };
+		D244536B12426F00009BBCE0 /* minidump.cc in Sources */ = {isa = PBXBuildFile; fileRef = D244535212426EBB009BBCE0 /* minidump.cc */; };
+		D244536C12426F00009BBCE0 /* pathname_stripper.cc in Sources */ = {isa = PBXBuildFile; fileRef = D244535312426EBB009BBCE0 /* pathname_stripper.cc */; };
+		D244536D12426F00009BBCE0 /* basic_code_modules.cc in Sources */ = {isa = PBXBuildFile; fileRef = D244534F12426E98009BBCE0 /* basic_code_modules.cc */; };
+		D244540B12439BA0009BBCE0 /* memory_unittest.cc in Sources */ = {isa = PBXBuildFile; fileRef = D244540A12439BA0009BBCE0 /* memory_unittest.cc */; };
+		D246417012BAA40E005170D0 /* exception_handler.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C536D0ECCE3FD009BE4BA /* exception_handler.cc */; };
+		D246417112BAA41C005170D0 /* crash_generation_client.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F9A4C6121336C7002747C1 /* crash_generation_client.cc */; };
+		D246417512BAA438005170D0 /* minidump_generator.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C536F0ECCE3FD009BE4BA /* minidump_generator.cc */; };
+		D246417612BAA43F005170D0 /* dynamic_images.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C536B0ECCE3FD009BE4BA /* dynamic_images.cc */; };
+		D246417712BAA444005170D0 /* breakpad_nlist_64.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C53690ECCE3FD009BE4BA /* breakpad_nlist_64.cc */; };
+		D246418412BAA4BA005170D0 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0867D69BFE84028FC02AAC07 /* Foundation.framework */; };
+		D246418812BAA4E3005170D0 /* string_utilities.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C53820ECCE635009BE4BA /* string_utilities.cc */; };
+		D246418C12BAA508005170D0 /* minidump_file_writer.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C538F0ECCE70A009BE4BA /* minidump_file_writer.cc */; };
+		D246419012BAA52A005170D0 /* string_conversion.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C53850ECCE6AD009BE4BA /* string_conversion.cc */; };
+		D246419112BAA52F005170D0 /* convert_UTF.c in Sources */ = {isa = PBXBuildFile; fileRef = F92C53870ECCE6C0009BE4BA /* convert_UTF.c */; };
+		D246419512BAA54C005170D0 /* file_id.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C53740ECCE635009BE4BA /* file_id.cc */; };
+		D246419612BAA55A005170D0 /* macho_id.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C537A0ECCE635009BE4BA /* macho_id.cc */; };
+		D24641A012BAA67F005170D0 /* macho_walker.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C537E0ECCE635009BE4BA /* macho_walker.cc */; };
+		D24641AF12BAA82D005170D0 /* macho_utilities.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C537C0ECCE635009BE4BA /* macho_utilities.cc */; };
+		D24641EC12BAC6FB005170D0 /* logging.cc in Sources */ = {isa = PBXBuildFile; fileRef = D244535112426EBB009BBCE0 /* logging.cc */; };
+		D24641ED12BAC6FB005170D0 /* minidump.cc in Sources */ = {isa = PBXBuildFile; fileRef = D244535212426EBB009BBCE0 /* minidump.cc */; };
+		D24641EE12BAC6FB005170D0 /* pathname_stripper.cc in Sources */ = {isa = PBXBuildFile; fileRef = D244535312426EBB009BBCE0 /* pathname_stripper.cc */; };
+		D24641EF12BAC6FB005170D0 /* basic_code_modules.cc in Sources */ = {isa = PBXBuildFile; fileRef = D244534F12426E98009BBCE0 /* basic_code_modules.cc */; };
+		D24BBBFD121050F000F3D417 /* breakpadUtilities.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = F92C563C0ECD10B3009BE4BA /* breakpadUtilities.dylib */; };
+		D24BBD291211EDB100F3D417 /* MachIPC.mm in Sources */ = {isa = PBXBuildFile; fileRef = F92C53790ECCE635009BE4BA /* MachIPC.mm */; };
+		D24BBD321212CACF00F3D417 /* MachIPC.mm in Sources */ = {isa = PBXBuildFile; fileRef = F92C53790ECCE635009BE4BA /* MachIPC.mm */; };
+		D2A5DD301188633800081F03 /* breakpad_nlist_64.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C53690ECCE3FD009BE4BA /* breakpad_nlist_64.cc */; };
+		D2A5DD401188640400081F03 /* breakpad_nlist_64.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C53690ECCE3FD009BE4BA /* breakpad_nlist_64.cc */; };
+		D2A5DD411188642E00081F03 /* breakpad_nlist_64.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C53690ECCE3FD009BE4BA /* breakpad_nlist_64.cc */; };
+		D2C1DBE412AFC270006917BD /* logging.cc in Sources */ = {isa = PBXBuildFile; fileRef = D244535112426EBB009BBCE0 /* logging.cc */; };
+		D2C1DBE512AFC270006917BD /* minidump.cc in Sources */ = {isa = PBXBuildFile; fileRef = D244535212426EBB009BBCE0 /* minidump.cc */; };
+		D2C1DBE612AFC270006917BD /* pathname_stripper.cc in Sources */ = {isa = PBXBuildFile; fileRef = D244535312426EBB009BBCE0 /* pathname_stripper.cc */; };
+		D2C1DBE712AFC270006917BD /* basic_code_modules.cc in Sources */ = {isa = PBXBuildFile; fileRef = D244534F12426E98009BBCE0 /* basic_code_modules.cc */; };
+		D2F9A3D51212F87C002747C1 /* exception_handler_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F9A3D41212F87C002747C1 /* exception_handler_test.cc */; };
+		D2F9A43D12131F55002747C1 /* gmock-all.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F9A43C12131F55002747C1 /* gmock-all.cc */; };
+		D2F9A44012131F65002747C1 /* gtest_main.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F9A43E12131F65002747C1 /* gtest_main.cc */; };
+		D2F9A44112131F65002747C1 /* gtest-all.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F9A43F12131F65002747C1 /* gtest-all.cc */; };
+		D2F9A44412131F84002747C1 /* libgtest.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D2F9A41512131EF0002747C1 /* libgtest.a */; };
+		D2F9A4C9121336C7002747C1 /* client_info.h in Headers */ = {isa = PBXBuildFile; fileRef = D2F9A4C4121336C7002747C1 /* client_info.h */; };
+		D2F9A4CA121336C7002747C1 /* crash_generation_client.h in Headers */ = {isa = PBXBuildFile; fileRef = D2F9A4C5121336C7002747C1 /* crash_generation_client.h */; };
+		D2F9A4CB121336C7002747C1 /* crash_generation_client.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F9A4C6121336C7002747C1 /* crash_generation_client.cc */; };
+		D2F9A4CC121336C7002747C1 /* crash_generation_server.h in Headers */ = {isa = PBXBuildFile; fileRef = D2F9A4C7121336C7002747C1 /* crash_generation_server.h */; };
+		D2F9A4CD121336C7002747C1 /* crash_generation_server.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F9A4C8121336C7002747C1 /* crash_generation_server.cc */; };
+		D2F9A4DF12133AD9002747C1 /* crash_generation_client.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F9A4C6121336C7002747C1 /* crash_generation_client.cc */; };
+		D2F9A4E012133AD9002747C1 /* crash_generation_server.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F9A4C8121336C7002747C1 /* crash_generation_server.cc */; };
+		D2F9A4E112133AE2002747C1 /* crash_generation_client.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F9A4C6121336C7002747C1 /* crash_generation_client.cc */; };
+		D2F9A4E212133AE2002747C1 /* crash_generation_server.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F9A4C8121336C7002747C1 /* crash_generation_server.cc */; };
+		D2F9A52E121383A1002747C1 /* crash_generation_client.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F9A4C6121336C7002747C1 /* crash_generation_client.cc */; };
+		D2F9A52F121383A1002747C1 /* crash_generation_server.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F9A4C8121336C7002747C1 /* crash_generation_server.cc */; };
+		D2F9A530121383A1002747C1 /* MachIPC.mm in Sources */ = {isa = PBXBuildFile; fileRef = F92C53790ECCE635009BE4BA /* MachIPC.mm */; };
+		D2F9A531121383A1002747C1 /* breakpad_nlist_64.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C53690ECCE3FD009BE4BA /* breakpad_nlist_64.cc */; };
+		D2F9A532121383A1002747C1 /* dynamic_images.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C536B0ECCE3FD009BE4BA /* dynamic_images.cc */; };
+		D2F9A533121383A1002747C1 /* exception_handler.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C536D0ECCE3FD009BE4BA /* exception_handler.cc */; };
+		D2F9A534121383A1002747C1 /* minidump_generator.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C536F0ECCE3FD009BE4BA /* minidump_generator.cc */; };
+		D2F9A535121383A1002747C1 /* minidump_file_writer.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C538F0ECCE70A009BE4BA /* minidump_file_writer.cc */; };
+		D2F9A536121383A1002747C1 /* convert_UTF.c in Sources */ = {isa = PBXBuildFile; fileRef = F92C53870ECCE6C0009BE4BA /* convert_UTF.c */; };
+		D2F9A537121383A1002747C1 /* string_conversion.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C53850ECCE6AD009BE4BA /* string_conversion.cc */; };
+		D2F9A538121383A1002747C1 /* file_id.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C53740ECCE635009BE4BA /* file_id.cc */; };
+		D2F9A539121383A1002747C1 /* macho_id.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C537A0ECCE635009BE4BA /* macho_id.cc */; };
+		D2F9A53A121383A1002747C1 /* macho_utilities.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C537C0ECCE635009BE4BA /* macho_utilities.cc */; };
+		D2F9A53B121383A1002747C1 /* macho_walker.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C537E0ECCE635009BE4BA /* macho_walker.cc */; };
+		D2F9A53C121383A1002747C1 /* string_utilities.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C53820ECCE635009BE4BA /* string_utilities.cc */; };
+		D2F9A53F121383A1002747C1 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0867D69BFE84028FC02AAC07 /* Foundation.framework */; };
+		D2F9A541121383A1002747C1 /* libgtest.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D2F9A41512131EF0002747C1 /* libgtest.a */; };
+		D2F9A553121383DC002747C1 /* crash_generation_server_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F9A4CE121336F7002747C1 /* crash_generation_server_test.cc */; };
+		F4DAB1DD19F1027100A5A838 /* launch_reporter.cc in Sources */ = {isa = PBXBuildFile; fileRef = F4DAB1DB19F1027100A5A838 /* launch_reporter.cc */; };
+		F4DAB1DE19F1027100A5A838 /* launch_reporter.h in Headers */ = {isa = PBXBuildFile; fileRef = F4DAB1DC19F1027100A5A838 /* launch_reporter.h */; };
+		F4F916B619F10FFC00B83BE4 /* launch_reporter.cc in Sources */ = {isa = PBXBuildFile; fileRef = F4DAB1DB19F1027100A5A838 /* launch_reporter.cc */; };
+		F91AF6210FD60784009D8BE2 /* Breakpad.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8DC2EF5B0486A6940098B216 /* Breakpad.framework */; };
+		F9286B3A0F7EB25800A4DCC8 /* InspectorMain.mm in Sources */ = {isa = PBXBuildFile; fileRef = F9286B390F7EB25800A4DCC8 /* InspectorMain.mm */; };
+		F92C53B80ECCE7B3009BE4BA /* Inspector.mm in Sources */ = {isa = PBXBuildFile; fileRef = F92C53B70ECCE7B3009BE4BA /* Inspector.mm */; };
+		F92C554C0ECCF534009BE4BA /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0867D69BFE84028FC02AAC07 /* Foundation.framework */; };
+		F92C55D00ECD0064009BE4BA /* Breakpad.h in Headers */ = {isa = PBXBuildFile; fileRef = F92C55CE0ECD0064009BE4BA /* Breakpad.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		F92C55D10ECD0064009BE4BA /* Breakpad.mm in Sources */ = {isa = PBXBuildFile; fileRef = F92C55CF0ECD0064009BE4BA /* Breakpad.mm */; };
+		F92C56330ECD0DF1009BE4BA /* OnDemandServer.h in Headers */ = {isa = PBXBuildFile; fileRef = F92C56310ECD0DF1009BE4BA /* OnDemandServer.h */; };
+		F92C56340ECD0DF1009BE4BA /* OnDemandServer.mm in Sources */ = {isa = PBXBuildFile; fileRef = F92C56320ECD0DF1009BE4BA /* OnDemandServer.mm */; };
+		F92C563F0ECD10CA009BE4BA /* convert_UTF.c in Sources */ = {isa = PBXBuildFile; fileRef = F92C53870ECCE6C0009BE4BA /* convert_UTF.c */; };
+		F92C56400ECD10CA009BE4BA /* dynamic_images.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C536B0ECCE3FD009BE4BA /* dynamic_images.cc */; };
+		F92C56410ECD10CA009BE4BA /* file_id.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C53740ECCE635009BE4BA /* file_id.cc */; };
+		F92C56420ECD10CA009BE4BA /* macho_id.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C537A0ECCE635009BE4BA /* macho_id.cc */; };
+		F92C56430ECD10CA009BE4BA /* macho_utilities.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C537C0ECCE635009BE4BA /* macho_utilities.cc */; };
+		F92C56440ECD10CA009BE4BA /* macho_walker.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C537E0ECCE635009BE4BA /* macho_walker.cc */; };
+		F92C56450ECD10CA009BE4BA /* MachIPC.mm in Sources */ = {isa = PBXBuildFile; fileRef = F92C53790ECCE635009BE4BA /* MachIPC.mm */; };
+		F92C56460ECD10CA009BE4BA /* minidump_file_writer.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C538F0ECCE70A009BE4BA /* minidump_file_writer.cc */; };
+		F92C56470ECD10CA009BE4BA /* minidump_generator.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C536F0ECCE3FD009BE4BA /* minidump_generator.cc */; };
+		F92C56490ECD10CA009BE4BA /* string_utilities.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C53820ECCE635009BE4BA /* string_utilities.cc */; };
+		F92C564A0ECD10CA009BE4BA /* string_conversion.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C53850ECCE6AD009BE4BA /* string_conversion.cc */; };
+		F92C564C0ECD10DD009BE4BA /* breakpadUtilities.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = F92C563C0ECD10B3009BE4BA /* breakpadUtilities.dylib */; };
+		F92C56570ECD113E009BE4BA /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F92C554A0ECCF530009BE4BA /* Carbon.framework */; };
+		F92C565C0ECD1158009BE4BA /* breakpadUtilities.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = F92C563C0ECD10B3009BE4BA /* breakpadUtilities.dylib */; };
+		F92C565F0ECD116B009BE4BA /* protected_memory_allocator.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C53720ECCE3FD009BE4BA /* protected_memory_allocator.cc */; };
+		F92C56630ECD1179009BE4BA /* exception_handler.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C536D0ECCE3FD009BE4BA /* exception_handler.cc */; };
+		F92C56650ECD1185009BE4BA /* breakpadUtilities.dylib in Resources */ = {isa = PBXBuildFile; fileRef = F92C563C0ECD10B3009BE4BA /* breakpadUtilities.dylib */; };
+		F92C568A0ECD15F9009BE4BA /* Inspector in Resources */ = {isa = PBXBuildFile; fileRef = F92C53540ECCE349009BE4BA /* Inspector */; };
+		F92C56A90ECE04C5009BE4BA /* crash_report_sender.m in Sources */ = {isa = PBXBuildFile; fileRef = F92C56A80ECE04C5009BE4BA /* crash_report_sender.m */; };
+		F93803CD0F8083B7004D428B /* dynamic_images.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C536B0ECCE3FD009BE4BA /* dynamic_images.cc */; };
+		F93803CE0F8083B7004D428B /* exception_handler.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C536D0ECCE3FD009BE4BA /* exception_handler.cc */; };
+		F93803CF0F8083B7004D428B /* minidump_generator.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C536F0ECCE3FD009BE4BA /* minidump_generator.cc */; };
+		F93803D00F8083B7004D428B /* minidump_file_writer.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C538F0ECCE70A009BE4BA /* minidump_file_writer.cc */; };
+		F93803D10F8083B7004D428B /* convert_UTF.c in Sources */ = {isa = PBXBuildFile; fileRef = F92C53870ECCE6C0009BE4BA /* convert_UTF.c */; };
+		F93803D20F8083B7004D428B /* string_conversion.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C53850ECCE6AD009BE4BA /* string_conversion.cc */; };
+		F93803D30F8083B7004D428B /* file_id.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C53740ECCE635009BE4BA /* file_id.cc */; };
+		F93803D40F8083B7004D428B /* macho_id.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C537A0ECCE635009BE4BA /* macho_id.cc */; };
+		F93803D50F8083B7004D428B /* macho_utilities.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C537C0ECCE635009BE4BA /* macho_utilities.cc */; };
+		F93803D60F8083B7004D428B /* macho_walker.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C537E0ECCE635009BE4BA /* macho_walker.cc */; };
+		F93803D70F8083B7004D428B /* string_utilities.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C53820ECCE635009BE4BA /* string_utilities.cc */; };
+		F93DE2D80F82A70E00608B94 /* minidump_file_writer_unittest.cc in Sources */ = {isa = PBXBuildFile; fileRef = F93DE2D70F82A70E00608B94 /* minidump_file_writer_unittest.cc */; };
+		F93DE2D90F82A73500608B94 /* minidump_file_writer.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C538F0ECCE70A009BE4BA /* minidump_file_writer.cc */; };
+		F93DE2DA0F82A73500608B94 /* convert_UTF.c in Sources */ = {isa = PBXBuildFile; fileRef = F92C53870ECCE6C0009BE4BA /* convert_UTF.c */; };
+		F93DE2DB0F82A73500608B94 /* string_conversion.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C53850ECCE6AD009BE4BA /* string_conversion.cc */; };
+		F93DE3350F82C66B00608B94 /* dynamic_images.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C536B0ECCE3FD009BE4BA /* dynamic_images.cc */; };
+		F93DE3360F82C66B00608B94 /* exception_handler.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C536D0ECCE3FD009BE4BA /* exception_handler.cc */; };
+		F93DE3370F82C66B00608B94 /* minidump_generator.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C536F0ECCE3FD009BE4BA /* minidump_generator.cc */; };
+		F93DE3380F82C66B00608B94 /* minidump_file_writer.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C538F0ECCE70A009BE4BA /* minidump_file_writer.cc */; };
+		F93DE3390F82C66B00608B94 /* convert_UTF.c in Sources */ = {isa = PBXBuildFile; fileRef = F92C53870ECCE6C0009BE4BA /* convert_UTF.c */; };
+		F93DE33A0F82C66B00608B94 /* string_conversion.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C53850ECCE6AD009BE4BA /* string_conversion.cc */; };
+		F93DE33B0F82C66B00608B94 /* file_id.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C53740ECCE635009BE4BA /* file_id.cc */; };
+		F93DE33C0F82C66B00608B94 /* macho_id.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C537A0ECCE635009BE4BA /* macho_id.cc */; };
+		F93DE33D0F82C66B00608B94 /* macho_utilities.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C537C0ECCE635009BE4BA /* macho_utilities.cc */; };
+		F93DE33E0F82C66B00608B94 /* macho_walker.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C537E0ECCE635009BE4BA /* macho_walker.cc */; };
+		F93DE33F0F82C66B00608B94 /* string_utilities.cc in Sources */ = {isa = PBXBuildFile; fileRef = F92C53820ECCE635009BE4BA /* string_utilities.cc */; };
+		F945849E0F280E3C009A47BF /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = F945849C0F280E3C009A47BF /* Localizable.strings */; };
+		F9B630A0100FF96B00D0F4AC /* goArrow.png in Resources */ = {isa = PBXBuildFile; fileRef = F9B6309F100FF96B00D0F4AC /* goArrow.png */; };
+		F9C44DB20EF07288003AEBAA /* Controller.m in Sources */ = {isa = PBXBuildFile; fileRef = F9C44DAC0EF07288003AEBAA /* Controller.m */; };
+		F9C44DB30EF07288003AEBAA /* crashduringload in Resources */ = {isa = PBXBuildFile; fileRef = F9C44DAD0EF07288003AEBAA /* crashduringload */; };
+		F9C44DB40EF07288003AEBAA /* crashInMain in Resources */ = {isa = PBXBuildFile; fileRef = F9C44DAE0EF07288003AEBAA /* crashInMain */; };
+		F9C44DB60EF07288003AEBAA /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = F9C44DB00EF07288003AEBAA /* main.m */; };
+		F9C44DB70EF07288003AEBAA /* TestClass.mm in Sources */ = {isa = PBXBuildFile; fileRef = F9C44DB10EF07288003AEBAA /* TestClass.mm */; };
+		F9C44DBC0EF072A0003AEBAA /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = F9C44DB80EF072A0003AEBAA /* InfoPlist.strings */; };
+		F9C44DBD0EF072A0003AEBAA /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = F9C44DBA0EF072A0003AEBAA /* MainMenu.xib */; };
+		F9C44E000EF077CD003AEBAA /* Breakpad.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8DC2EF5B0486A6940098B216 /* Breakpad.framework */; };
+		F9C44E3C0EF08B12003AEBAA /* Breakpad.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 8DC2EF5B0486A6940098B216 /* Breakpad.framework */; };
+		F9C44E980EF09F56003AEBAA /* crash_report_sender.app in Resources */ = {isa = PBXBuildFile; fileRef = F92C56A00ECE04A7009BE4BA /* crash_report_sender.app */; };
+		F9C44EA20EF09F93003AEBAA /* HTTPMultipartUpload.m in Sources */ = {isa = PBXBuildFile; fileRef = F92C53770ECCE635009BE4BA /* HTTPMultipartUpload.m */; };
+		F9C44EE50EF0A006003AEBAA /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F9C44EE40EF0A006003AEBAA /* SystemConfiguration.framework */; };
+		F9C44EE90EF0A3C1003AEBAA /* GTMLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = F9C44EE80EF0A3C1003AEBAA /* GTMLogger.m */; };
+		F9C77E130F7DDF810045F7DB /* GTMSenTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = F9C77E120F7DDF810045F7DB /* GTMSenTestCase.m */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+		8B31023811F0CF0600FCF3E4 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = F95BB889101F94AC00AA053B /* dump_syms.xcodeproj */;
+			proxyType = 1;
+			remoteGlobalIDString = B88FAFC9116BDCAD00407530;
+			remoteInfo = all_unittests;
+		};
+		8B31051611F1010E00FCF3E4 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = F93803BD0F80820F004D428B;
+			remoteInfo = generator_test;
+		};
+		8B31051811F1010E00FCF3E4 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = F93DE2D00F82A67300608B94;
+			remoteInfo = minidump_file_writer_unittest;
+		};
+		8B31051A11F1010E00FCF3E4 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = F93DE32B0F82C55600608B94;
+			remoteInfo = handler_test;
+		};
+		8B31051C11F1010E00FCF3E4 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = F95BB889101F94AC00AA053B /* dump_syms.xcodeproj */;
+			proxyType = 1;
+			remoteGlobalIDString = B89E0E731166575200DD08C9;
+			remoteInfo = macho_dump;
+		};
+		8B31051E11F1010E00FCF3E4 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = F95BB894101F94C000AA053B /* symupload.xcodeproj */;
+			proxyType = 1;
+			remoteGlobalIDString = 9BD835FA0B0544950055103E;
+			remoteInfo = minidump_upload;
+		};
+		8B31F7A011EF9A8700FCF3E4 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = F95BB889101F94AC00AA053B /* dump_syms.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = B89E0E741166575200DD08C9;
+			remoteInfo = macho_dump;
+		};
+		8B31F7A211EF9A8700FCF3E4 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = F95BB889101F94AC00AA053B /* dump_syms.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = B88FB024116BDFFF00407530;
+			remoteInfo = gtestmockall;
+		};
+		8B31F7A411EF9A8700FCF3E4 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = F95BB889101F94AC00AA053B /* dump_syms.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = B88FB14B116CF4A700407530;
+			remoteInfo = byte_cursor_unittest;
+		};
+		8B31F7A611EF9A8700FCF3E4 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = F95BB889101F94AC00AA053B /* dump_syms.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = B89E0E9511665A6400DD08C9;
+			remoteInfo = macho_reader_unittest;
+		};
+		8B31F7A811EF9A8700FCF3E4 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = F95BB889101F94AC00AA053B /* dump_syms.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = B88FB007116BDE8300407530;
+			remoteInfo = stabs_reader_unittest;
+		};
+		8B31F7AA11EF9A8700FCF3E4 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = F95BB889101F94AC00AA053B /* dump_syms.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = B88FB135116CF30F00407530;
+			remoteInfo = bytereader_unittest;
+		};
+		8B31F7AC11EF9A8700FCF3E4 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = F95BB889101F94AC00AA053B /* dump_syms.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = B88FAF2F116A591E00407530;
+			remoteInfo = dwarf2reader_cfi_unittest;
+		};
+		8B31F7AE11EF9A8700FCF3E4 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = F95BB889101F94AC00AA053B /* dump_syms.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = B88FB0DF116CEEA800407530;
+			remoteInfo = dwarf2diehandler_unittest;
+		};
+		8B31F7B011EF9A8700FCF3E4 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = F95BB889101F94AC00AA053B /* dump_syms.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = B88FB10A116CF07900407530;
+			remoteInfo = dwarf_cu_to_module_unittest;
+		};
+		8B31F7B211EF9A8700FCF3E4 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = F95BB889101F94AC00AA053B /* dump_syms.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = B88FB0F2116CEF1900407530;
+			remoteInfo = dwarf_line_to_module_unittest;
+		};
+		8B31F7B411EF9A8700FCF3E4 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = F95BB889101F94AC00AA053B /* dump_syms.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = B88FB11F116CF27F00407530;
+			remoteInfo = dwarf_cfi_to_module_unittest;
+		};
+		8B31F7B611EF9A8700FCF3E4 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = F95BB889101F94AC00AA053B /* dump_syms.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = B84A91F4116CF784006C210E;
+			remoteInfo = stabs_to_module_unittest;
+		};
+		8B31F7B811EF9A8700FCF3E4 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = F95BB889101F94AC00AA053B /* dump_syms.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = B88FB0B9116CEABF00407530;
+			remoteInfo = module_unittest;
+		};
+		8B31F7BA11EF9A8700FCF3E4 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = F95BB889101F94AC00AA053B /* dump_syms.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = D21F97D211CBA0F200239E38;
+			remoteInfo = test_assembler_unittest;
+		};
+		D23F4B2F12A7E16200686C8D /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = D2F9A41412131EF0002747C1;
+			remoteInfo = gtest;
+		};
+		D23F4BB912A8694C00686C8D /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = D23F4BAA12A868A500686C8D;
+			remoteInfo = minidump_generator_test_helper;
+		};
+		D2F9A44212131F80002747C1 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = D2F9A41412131EF0002747C1;
+			remoteInfo = gtest;
+		};
+		D2F9A52C121383A1002747C1 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = D2F9A41412131EF0002747C1;
+			remoteInfo = gtest;
+		};
+		D2F9A5DE12142A6A002747C1 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = D2F9A52A121383A1002747C1;
+			remoteInfo = crash_generation_server_test;
+		};
+		F91AF6370FD60A74009D8BE2 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = 8DC2EF4F0486A6940098B216;
+			remoteInfo = Breakpad;
+		};
+		F92C564D0ECD10E5009BE4BA /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = F92C563B0ECD10B3009BE4BA;
+			remoteInfo = breakpadUtilities;
+		};
+		F92C56850ECD15EF009BE4BA /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = F92C563B0ECD10B3009BE4BA;
+			remoteInfo = breakpadUtilities;
+		};
+		F92C56870ECD15F1009BE4BA /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = F92C53530ECCE349009BE4BA;
+			remoteInfo = Inspector;
+		};
+		F93DE2FB0F82C3C600608B94 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = F93803BD0F80820F004D428B;
+			remoteInfo = generator_test;
+		};
+		F93DE36F0F82CC1300608B94 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = F93DE32B0F82C55600608B94;
+			remoteInfo = handler_test;
+		};
+		F93DE3A60F830D1D00608B94 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = F9C77DD90F7DD5CF0045F7DB;
+			remoteInfo = UnitTests;
+		};
+		F94585870F78232B009A47BF /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = 8DC2EF4F0486A6940098B216;
+			remoteInfo = Breakpad;
+		};
+		F94585890F78232E009A47BF /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = F92C53530ECCE349009BE4BA;
+			remoteInfo = Inspector;
+		};
+		F945858B0F782330009A47BF /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = F92C563B0ECD10B3009BE4BA;
+			remoteInfo = breakpadUtilities;
+		};
+		F945858D0F782333009A47BF /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = F92C569F0ECE04A7009BE4BA;
+			remoteInfo = crash_report_sender;
+		};
+		F945858F0F782336009A47BF /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = F9C44DA40EF060A8003AEBAA;
+			remoteInfo = BreakpadTest;
+		};
+		F95BB884101F949F00AA053B /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = F95BB87C101F949F00AA053B /* crash_report.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = 8DD76FA10486AA7600D96B5E;
+			remoteInfo = crash_report;
+		};
+		F95BB891101F94AC00AA053B /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = F95BB889101F94AC00AA053B /* dump_syms.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = 8DD76FA10486AA7600D96B5E;
+			remoteInfo = dump_syms;
+		};
+		F95BB89E101F94C000AA053B /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = F95BB894101F94C000AA053B /* symupload.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = 8DD76FA10486AA7600D96B5E;
+			remoteInfo = symupload;
+		};
+		F95BB8A0101F94C000AA053B /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = F95BB894101F94C000AA053B /* symupload.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = 9BD835FB0B0544950055103E;
+			remoteInfo = minidump_upload;
+		};
+		F95BB8B2101F94D300AA053B /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = F95BB889101F94AC00AA053B /* dump_syms.xcodeproj */;
+			proxyType = 1;
+			remoteGlobalIDString = B8C5B5101166531A00D34F4E;
+			remoteInfo = dump_syms;
+		};
+		F95BB8B4101F94D300AA053B /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = F95BB894101F94C000AA053B /* symupload.xcodeproj */;
+			proxyType = 1;
+			remoteGlobalIDString = 8DD76F960486AA7600D96B5E;
+			remoteInfo = symupload;
+		};
+		F95BB8B6101F94D300AA053B /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = F95BB87C101F949F00AA053B /* crash_report.xcodeproj */;
+			proxyType = 1;
+			remoteGlobalIDString = 8DD76F960486AA7600D96B5E;
+			remoteInfo = crash_report;
+		};
+		F9C44E190EF0790F003AEBAA /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = 8DC2EF4F0486A6940098B216;
+			remoteInfo = Breakpad;
+		};
+		F9C44E960EF09F4B003AEBAA /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = F92C569F0ECE04A7009BE4BA;
+			remoteInfo = crash_report_sender;
+		};
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXCopyFilesBuildPhase section */
+		F9C44E410EF08B17003AEBAA /* Copy Frameworks */ = {
+			isa = PBXCopyFilesBuildPhase;
+			buildActionMask = 2147483647;
+			dstPath = "";
+			dstSubfolderSpec = 10;
+			files = (
+				F9C44E3C0EF08B12003AEBAA /* Breakpad.framework in Copy Frameworks */,
+			);
+			name = "Copy Frameworks";
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXCopyFilesBuildPhase section */
+
+/* Begin PBXFileReference section */
+		0867D69BFE84028FC02AAC07 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+		0867D6A5FE840307C02AAC07 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; };
+		1058C7B1FEA5585E11CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
+		162F64F0161C577500CD68D5 /* arch_utilities.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = arch_utilities.cc; path = ../../common/mac/arch_utilities.cc; sourceTree = "<group>"; };
+		162F64F1161C577500CD68D5 /* arch_utilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = arch_utilities.h; path = ../../common/mac/arch_utilities.h; sourceTree = "<group>"; };
+		163201D41443019E00C4DBF5 /* ConfigFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ConfigFile.h; path = crash_generation/ConfigFile.h; sourceTree = "<group>"; };
+		163201D51443019E00C4DBF5 /* ConfigFile.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; name = ConfigFile.mm; path = crash_generation/ConfigFile.mm; sourceTree = "<group>"; };
+		163202431443201300C4DBF5 /* uploader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = uploader.h; path = sender/uploader.h; sourceTree = "<group>"; };
+		16C7C917147D45AE00776EAD /* BreakpadDefines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BreakpadDefines.h; sourceTree = "<group>"; };
+		16E02DB4147410D4008C604D /* uploader.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = uploader.mm; path = sender/uploader.mm; sourceTree = "<group>"; };
+		1EEEB6211720829E00F7E689 /* simple_string_dictionary.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = simple_string_dictionary.cc; path = ../../common/simple_string_dictionary.cc; sourceTree = "<group>"; };
+		1EEEB6221720829E00F7E689 /* simple_string_dictionary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = simple_string_dictionary.h; path = ../../common/simple_string_dictionary.h; sourceTree = "<group>"; };
+		1EEEB6251720830600F7E689 /* simple_string_dictionary_unittest.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = simple_string_dictionary_unittest.cc; path = ../../common/simple_string_dictionary_unittest.cc; sourceTree = "<group>"; };
+		32DBCF5E0370ADEE00C91783 /* Breakpad_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Breakpad_Prefix.pch; path = Framework/Breakpad_Prefix.pch; sourceTree = "<group>"; };
+		3329D4EC0FA16D820007BBC5 /* Breakpad.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Breakpad.xib; path = sender/Breakpad.xib; sourceTree = "<group>"; };
+		33880C7F0F9E097100817F82 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = sender/English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		4084699C0F5D9CF900FDCA37 /* crash_report_sender.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = crash_report_sender.icns; path = sender/crash_report_sender.icns; sourceTree = "<group>"; };
+		4D61A25D14F43CFC002D5862 /* bootstrap_compat.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = bootstrap_compat.cc; path = ../../common/mac/bootstrap_compat.cc; sourceTree = SOURCE_ROOT; };
+		4D61A25E14F43CFC002D5862 /* bootstrap_compat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = bootstrap_compat.h; path = ../../common/mac/bootstrap_compat.h; sourceTree = SOURCE_ROOT; };
+		4D72CA0D13DFAD5C006CABE3 /* md5.cc */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = md5.cc; path = ../../common/md5.cc; sourceTree = SOURCE_ROOT; };
+		4DBE4769134A4F080072546A /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = System/Library/Frameworks/CoreServices.framework; sourceTree = SDKROOT; };
+		8B31007011F0CD3C00FCF3E4 /* GTMDefines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GTMDefines.h; path = ../../common/mac/GTMDefines.h; sourceTree = SOURCE_ROOT; };
+		8B3101E911F0CDE300FCF3E4 /* SenTestingKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SenTestingKit.framework; path = Library/Frameworks/SenTestingKit.framework; sourceTree = DEVELOPER_DIR; };
+		8B31022211F0CE1000FCF3E4 /* GTMGarbageCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GTMGarbageCollection.h; path = ../../common/mac/GTMGarbageCollection.h; sourceTree = SOURCE_ROOT; };
+		8B31027711F0D3AF00FCF3E4 /* BreakpadDebug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = BreakpadDebug.xcconfig; path = ../../common/mac/BreakpadDebug.xcconfig; sourceTree = SOURCE_ROOT; };
+		8B31027811F0D3AF00FCF3E4 /* BreakpadRelease.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = BreakpadRelease.xcconfig; path = ../../common/mac/BreakpadRelease.xcconfig; sourceTree = SOURCE_ROOT; };
+		8B31FFF611F0C90500FCF3E4 /* Breakpad.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Breakpad.xcconfig; path = ../../common/mac/Breakpad.xcconfig; sourceTree = SOURCE_ROOT; };
+		8DC2EF5B0486A6940098B216 /* Breakpad.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Breakpad.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+		D23F4B2C12A7E13200686C8D /* minidump_generator_test.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = minidump_generator_test.cc; path = tests/minidump_generator_test.cc; sourceTree = "<group>"; };
+		D23F4B9A12A8688800686C8D /* minidump_generator_test_helper.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = minidump_generator_test_helper.cc; path = tests/minidump_generator_test_helper.cc; sourceTree = "<group>"; };
+		D23F4BAB12A868A500686C8D /* minidump_generator_test_helper */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = minidump_generator_test_helper; sourceTree = BUILT_PRODUCTS_DIR; };
+		D244534F12426E98009BBCE0 /* basic_code_modules.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = basic_code_modules.cc; path = ../../processor/basic_code_modules.cc; sourceTree = SOURCE_ROOT; };
+		D244535112426EBB009BBCE0 /* logging.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = logging.cc; path = ../../processor/logging.cc; sourceTree = SOURCE_ROOT; };
+		D244535212426EBB009BBCE0 /* minidump.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = minidump.cc; path = ../../processor/minidump.cc; sourceTree = SOURCE_ROOT; };
+		D244535312426EBB009BBCE0 /* pathname_stripper.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = pathname_stripper.cc; path = ../../processor/pathname_stripper.cc; sourceTree = SOURCE_ROOT; };
+		D244540A12439BA0009BBCE0 /* memory_unittest.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = memory_unittest.cc; path = ../../common/memory_unittest.cc; sourceTree = SOURCE_ROOT; };
+		D2F9A3D41212F87C002747C1 /* exception_handler_test.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = exception_handler_test.cc; path = tests/exception_handler_test.cc; sourceTree = "<group>"; };
+		D2F9A41512131EF0002747C1 /* libgtest.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libgtest.a; sourceTree = BUILT_PRODUCTS_DIR; };
+		D2F9A43C12131F55002747C1 /* gmock-all.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "gmock-all.cc"; path = "../../testing/src/gmock-all.cc"; sourceTree = SOURCE_ROOT; };
+		D2F9A43E12131F65002747C1 /* gtest_main.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = gtest_main.cc; path = ../../testing/gtest/src/gtest_main.cc; sourceTree = "<group>"; };
+		D2F9A43F12131F65002747C1 /* gtest-all.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "gtest-all.cc"; path = "../../testing/gtest/src/gtest-all.cc"; sourceTree = "<group>"; };
+		D2F9A4C4121336C7002747C1 /* client_info.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = client_info.h; path = crash_generation/client_info.h; sourceTree = "<group>"; };
+		D2F9A4C5121336C7002747C1 /* crash_generation_client.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = crash_generation_client.h; path = crash_generation/crash_generation_client.h; sourceTree = "<group>"; };
+		D2F9A4C6121336C7002747C1 /* crash_generation_client.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = crash_generation_client.cc; path = crash_generation/crash_generation_client.cc; sourceTree = "<group>"; };
+		D2F9A4C7121336C7002747C1 /* crash_generation_server.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = crash_generation_server.h; path = crash_generation/crash_generation_server.h; sourceTree = "<group>"; };
+		D2F9A4C8121336C7002747C1 /* crash_generation_server.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = crash_generation_server.cc; path = crash_generation/crash_generation_server.cc; sourceTree = "<group>"; };
+		D2F9A4CE121336F7002747C1 /* crash_generation_server_test.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = crash_generation_server_test.cc; path = tests/crash_generation_server_test.cc; sourceTree = "<group>"; };
+		D2F9A546121383A1002747C1 /* crash_generation_server_test */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = crash_generation_server_test; sourceTree = BUILT_PRODUCTS_DIR; };
+		DE43467411C72855004F095F /* da */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = da; path = sender/da.lproj/Localizable.strings; sourceTree = "<group>"; };
+		DE43467511C72857004F095F /* de */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = de; path = sender/de.lproj/Localizable.strings; sourceTree = "<group>"; };
+		DE43467611C7285B004F095F /* es */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = es; path = sender/es.lproj/Localizable.strings; sourceTree = "<group>"; };
+		DE43467711C72862004F095F /* fr */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = fr; path = sender/fr.lproj/Localizable.strings; sourceTree = "<group>"; };
+		DE43467811C72869004F095F /* it */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = it; path = sender/it.lproj/Localizable.strings; sourceTree = "<group>"; };
+		DE43467911C7286D004F095F /* nl */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = nl; path = sender/nl.lproj/Localizable.strings; sourceTree = "<group>"; };
+		DE43467A11C72873004F095F /* no */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = no; path = sender/no.lproj/Localizable.strings; sourceTree = "<group>"; };
+		DE43467B11C72877004F095F /* sl */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = sl; path = sender/sl.lproj/Localizable.strings; sourceTree = "<group>"; };
+		DE43467C11C7287A004F095F /* sv */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = sv; path = sender/sv.lproj/Localizable.strings; sourceTree = "<group>"; };
+		DE43467E11C728DC004F095F /* ja */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = ja; path = sender/ja.lproj/Localizable.strings; sourceTree = "<group>"; };
+		DE43467F11C728E1004F095F /* tr */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = tr; path = sender/tr.lproj/Localizable.strings; sourceTree = "<group>"; };
+		DE43468611C72958004F095F /* de */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = de; path = sender/de.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		DE43468711C7295D004F095F /* da */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = da; path = sender/da.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		DE43468811C7295F004F095F /* es */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = es; path = sender/es.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		DE43468911C72964004F095F /* fr */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = fr; path = sender/fr.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		DE43468A11C72967004F095F /* it */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = it; path = sender/it.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		DE43468B11C7296B004F095F /* ja */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = ja; path = sender/ja.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		DE43468C11C7296D004F095F /* nl */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = nl; path = sender/nl.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		DE43468D11C7296F004F095F /* no */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = no; path = sender/no.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		DE43468E11C72971004F095F /* sl */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = sl; path = sender/sl.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		DE43468F11C72973004F095F /* sv */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = sv; path = sender/sv.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		DE43469011C72976004F095F /* tr */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = tr; path = sender/tr.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		F4DAB1DB19F1027100A5A838 /* launch_reporter.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = launch_reporter.cc; path = ../../common/mac/launch_reporter.cc; sourceTree = SOURCE_ROOT; };
+		F4DAB1DC19F1027100A5A838 /* launch_reporter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = launch_reporter.h; path = ../../common/mac/launch_reporter.h; sourceTree = SOURCE_ROOT; };
+		F91AF5CF0FD60393009D8BE2 /* BreakpadFramework_Test.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = BreakpadFramework_Test.mm; path = tests/BreakpadFramework_Test.mm; sourceTree = "<group>"; };
+		F9286B380F7EB25800A4DCC8 /* Inspector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Inspector.h; path = crash_generation/Inspector.h; sourceTree = "<group>"; };
+		F9286B390F7EB25800A4DCC8 /* InspectorMain.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = InspectorMain.mm; path = crash_generation/InspectorMain.mm; sourceTree = "<group>"; };
+		F92C53540ECCE349009BE4BA /* Inspector */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = Inspector; sourceTree = BUILT_PRODUCTS_DIR; };
+		F92C53670ECCE3FD009BE4BA /* breakpad_exc_server.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = breakpad_exc_server.c; path = handler/breakpad_exc_server.c; sourceTree = SOURCE_ROOT; };
+		F92C53680ECCE3FD009BE4BA /* breakpad_exc_server.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = breakpad_exc_server.h; path = handler/breakpad_exc_server.h; sourceTree = SOURCE_ROOT; };
+		F92C53690ECCE3FD009BE4BA /* breakpad_nlist_64.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = breakpad_nlist_64.cc; path = handler/breakpad_nlist_64.cc; sourceTree = SOURCE_ROOT; };
+		F92C536A0ECCE3FD009BE4BA /* breakpad_nlist_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = breakpad_nlist_64.h; path = handler/breakpad_nlist_64.h; sourceTree = SOURCE_ROOT; };
+		F92C536B0ECCE3FD009BE4BA /* dynamic_images.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = dynamic_images.cc; path = handler/dynamic_images.cc; sourceTree = SOURCE_ROOT; };
+		F92C536C0ECCE3FD009BE4BA /* dynamic_images.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = dynamic_images.h; path = handler/dynamic_images.h; sourceTree = SOURCE_ROOT; };
+		F92C536D0ECCE3FD009BE4BA /* exception_handler.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = exception_handler.cc; path = handler/exception_handler.cc; sourceTree = SOURCE_ROOT; };
+		F92C536E0ECCE3FD009BE4BA /* exception_handler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = exception_handler.h; path = handler/exception_handler.h; sourceTree = SOURCE_ROOT; };
+		F92C536F0ECCE3FD009BE4BA /* minidump_generator.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = minidump_generator.cc; path = handler/minidump_generator.cc; sourceTree = SOURCE_ROOT; };
+		F92C53700ECCE3FD009BE4BA /* minidump_generator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = minidump_generator.h; path = handler/minidump_generator.h; sourceTree = SOURCE_ROOT; };
+		F92C53720ECCE3FD009BE4BA /* protected_memory_allocator.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = protected_memory_allocator.cc; path = handler/protected_memory_allocator.cc; sourceTree = SOURCE_ROOT; };
+		F92C53730ECCE3FD009BE4BA /* protected_memory_allocator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = protected_memory_allocator.h; path = handler/protected_memory_allocator.h; sourceTree = SOURCE_ROOT; };
+		F92C53740ECCE635009BE4BA /* file_id.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = file_id.cc; path = ../../common/mac/file_id.cc; sourceTree = SOURCE_ROOT; };
+		F92C53750ECCE635009BE4BA /* file_id.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = file_id.h; path = ../../common/mac/file_id.h; sourceTree = SOURCE_ROOT; };
+		F92C53760ECCE635009BE4BA /* HTTPMultipartUpload.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HTTPMultipartUpload.h; path = ../../common/mac/HTTPMultipartUpload.h; sourceTree = SOURCE_ROOT; };
+		F92C53770ECCE635009BE4BA /* HTTPMultipartUpload.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = HTTPMultipartUpload.m; path = ../../common/mac/HTTPMultipartUpload.m; sourceTree = SOURCE_ROOT; };
+		F92C53780ECCE635009BE4BA /* MachIPC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MachIPC.h; path = ../../common/mac/MachIPC.h; sourceTree = SOURCE_ROOT; };
+		F92C53790ECCE635009BE4BA /* MachIPC.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MachIPC.mm; path = ../../common/mac/MachIPC.mm; sourceTree = SOURCE_ROOT; };
+		F92C537A0ECCE635009BE4BA /* macho_id.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = macho_id.cc; path = ../../common/mac/macho_id.cc; sourceTree = SOURCE_ROOT; };
+		F92C537B0ECCE635009BE4BA /* macho_id.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = macho_id.h; path = ../../common/mac/macho_id.h; sourceTree = SOURCE_ROOT; };
+		F92C537C0ECCE635009BE4BA /* macho_utilities.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = macho_utilities.cc; path = ../../common/mac/macho_utilities.cc; sourceTree = SOURCE_ROOT; };
+		F92C537D0ECCE635009BE4BA /* macho_utilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = macho_utilities.h; path = ../../common/mac/macho_utilities.h; sourceTree = SOURCE_ROOT; };
+		F92C537E0ECCE635009BE4BA /* macho_walker.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = macho_walker.cc; path = ../../common/mac/macho_walker.cc; sourceTree = SOURCE_ROOT; };
+		F92C537F0ECCE635009BE4BA /* macho_walker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = macho_walker.h; path = ../../common/mac/macho_walker.h; sourceTree = SOURCE_ROOT; };
+		F92C53820ECCE635009BE4BA /* string_utilities.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = string_utilities.cc; path = ../../common/mac/string_utilities.cc; sourceTree = SOURCE_ROOT; };
+		F92C53830ECCE635009BE4BA /* string_utilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = string_utilities.h; path = ../../common/mac/string_utilities.h; sourceTree = SOURCE_ROOT; };
+		F92C53850ECCE6AD009BE4BA /* string_conversion.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = string_conversion.cc; path = ../../common/string_conversion.cc; sourceTree = SOURCE_ROOT; };
+		F92C53860ECCE6AD009BE4BA /* string_conversion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = string_conversion.h; path = ../../common/string_conversion.h; sourceTree = SOURCE_ROOT; };
+		F92C53870ECCE6C0009BE4BA /* convert_UTF.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = convert_UTF.c; path = ../../common/convert_UTF.c; sourceTree = SOURCE_ROOT; };
+		F92C53880ECCE6C0009BE4BA /* convert_UTF.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = convert_UTF.h; path = ../../common/convert_UTF.h; sourceTree = SOURCE_ROOT; };
+		F92C538E0ECCE70A009BE4BA /* minidump_file_writer-inl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "minidump_file_writer-inl.h"; path = "../minidump_file_writer-inl.h"; sourceTree = SOURCE_ROOT; };
+		F92C538F0ECCE70A009BE4BA /* minidump_file_writer.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = minidump_file_writer.cc; path = ../minidump_file_writer.cc; sourceTree = SOURCE_ROOT; };
+		F92C53900ECCE70A009BE4BA /* minidump_file_writer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = minidump_file_writer.h; path = ../minidump_file_writer.h; sourceTree = SOURCE_ROOT; };
+		F92C53B70ECCE7B3009BE4BA /* Inspector.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = Inspector.mm; path = crash_generation/Inspector.mm; sourceTree = SOURCE_ROOT; };
+		F92C554A0ECCF530009BE4BA /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; };
+		F92C55CE0ECD0064009BE4BA /* Breakpad.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Breakpad.h; path = Framework/Breakpad.h; sourceTree = "<group>"; };
+		F92C55CF0ECD0064009BE4BA /* Breakpad.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = Breakpad.mm; path = Framework/Breakpad.mm; sourceTree = "<group>"; };
+		F92C56310ECD0DF1009BE4BA /* OnDemandServer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OnDemandServer.h; path = Framework/OnDemandServer.h; sourceTree = "<group>"; };
+		F92C56320ECD0DF1009BE4BA /* OnDemandServer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = OnDemandServer.mm; path = Framework/OnDemandServer.mm; sourceTree = "<group>"; };
+		F92C563C0ECD10B3009BE4BA /* breakpadUtilities.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = breakpadUtilities.dylib; sourceTree = BUILT_PRODUCTS_DIR; };
+		F92C56A00ECE04A7009BE4BA /* crash_report_sender.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = crash_report_sender.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		F92C56A20ECE04A7009BE4BA /* crash_report_sender-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "crash_report_sender-Info.plist"; path = "sender/crash_report_sender-Info.plist"; sourceTree = "<group>"; };
+		F92C56A70ECE04C5009BE4BA /* crash_report_sender.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = crash_report_sender.h; path = sender/crash_report_sender.h; sourceTree = "<group>"; };
+		F92C56A80ECE04C5009BE4BA /* crash_report_sender.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = crash_report_sender.m; path = sender/crash_report_sender.m; sourceTree = "<group>"; };
+		F93803BE0F80820F004D428B /* generator_test */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = generator_test; sourceTree = BUILT_PRODUCTS_DIR; };
+		F93DE2D10F82A67300608B94 /* minidump_file_writer_unittest */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = minidump_file_writer_unittest; sourceTree = BUILT_PRODUCTS_DIR; };
+		F93DE2D70F82A70E00608B94 /* minidump_file_writer_unittest.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = minidump_file_writer_unittest.cc; path = ../minidump_file_writer_unittest.cc; sourceTree = SOURCE_ROOT; };
+		F93DE32C0F82C55600608B94 /* handler_test */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = handler_test; sourceTree = BUILT_PRODUCTS_DIR; };
+		F945849D0F280E3C009A47BF /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = sender/English.lproj/Localizable.strings; sourceTree = "<group>"; };
+		F945859D0F78241E009A47BF /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = Framework/Info.plist; sourceTree = "<group>"; };
+		F95BB87C101F949F00AA053B /* crash_report.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = crash_report.xcodeproj; path = ../../tools/mac/crash_report/crash_report.xcodeproj; sourceTree = SOURCE_ROOT; };
+		F95BB889101F94AC00AA053B /* dump_syms.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = dump_syms.xcodeproj; path = ../../tools/mac/dump_syms/dump_syms.xcodeproj; sourceTree = SOURCE_ROOT; };
+		F95BB894101F94C000AA053B /* symupload.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = symupload.xcodeproj; path = ../../tools/mac/symupload/symupload.xcodeproj; sourceTree = SOURCE_ROOT; };
+		F9B6309F100FF96B00D0F4AC /* goArrow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = goArrow.png; path = sender/goArrow.png; sourceTree = "<group>"; };
+		F9C44DA50EF060A8003AEBAA /* BreakpadTest.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = BreakpadTest.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		F9C44DAC0EF07288003AEBAA /* Controller.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Controller.m; path = testapp/Controller.m; sourceTree = "<group>"; };
+		F9C44DAD0EF07288003AEBAA /* crashduringload */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.executable"; name = crashduringload; path = testapp/crashduringload; sourceTree = "<group>"; };
+		F9C44DAE0EF07288003AEBAA /* crashInMain */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.executable"; name = crashInMain; path = testapp/crashInMain; sourceTree = "<group>"; };
+		F9C44DAF0EF07288003AEBAA /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = testapp/Info.plist; sourceTree = "<group>"; };
+		F9C44DB00EF07288003AEBAA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = testapp/main.m; sourceTree = "<group>"; };
+		F9C44DB10EF07288003AEBAA /* TestClass.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = TestClass.mm; path = testapp/TestClass.mm; sourceTree = "<group>"; };
+		F9C44DB90EF072A0003AEBAA /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = testapp/English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		F9C44DBB0EF072A0003AEBAA /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = testapp/English.lproj/MainMenu.xib; sourceTree = "<group>"; };
+		F9C44DBF0EF0778F003AEBAA /* Controller.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Controller.h; path = testapp/Controller.h; sourceTree = "<group>"; };
+		F9C44DC00EF0778F003AEBAA /* TestClass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestClass.h; path = testapp/TestClass.h; sourceTree = "<group>"; };
+		F9C44EE40EF0A006003AEBAA /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; };
+		F9C44EE70EF0A3C1003AEBAA /* GTMLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GTMLogger.h; path = ../../common/mac/GTMLogger.h; sourceTree = SOURCE_ROOT; };
+		F9C44EE80EF0A3C1003AEBAA /* GTMLogger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = GTMLogger.m; path = ../../common/mac/GTMLogger.m; sourceTree = SOURCE_ROOT; };
+		F9C77DDA0F7DD5CF0045F7DB /* UnitTests.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = UnitTests.octest; sourceTree = BUILT_PRODUCTS_DIR; };
+		F9C77DDB0F7DD5CF0045F7DB /* UnitTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "UnitTests-Info.plist"; sourceTree = "<group>"; };
+		F9C77E110F7DDF810045F7DB /* GTMSenTestCase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GTMSenTestCase.h; path = ../../common/mac/testing/GTMSenTestCase.h; sourceTree = SOURCE_ROOT; };
+		F9C77E120F7DDF810045F7DB /* GTMSenTestCase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = GTMSenTestCase.m; path = ../../common/mac/testing/GTMSenTestCase.m; sourceTree = SOURCE_ROOT; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+		8DC2EF560486A6940098B216 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F92C565C0ECD1158009BE4BA /* breakpadUtilities.dylib in Frameworks */,
+				8DC2EF570486A6940098B216 /* Cocoa.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		D23F4BA912A868A500686C8D /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				D246418412BAA4BA005170D0 /* Foundation.framework in Frameworks */,
+				4DBE49A6134A4F200072546A /* CoreServices.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		D2F9A41312131EF0002747C1 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		D2F9A53E121383A1002747C1 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				D2F9A53F121383A1002747C1 /* Foundation.framework in Frameworks */,
+				D2F9A541121383A1002747C1 /* libgtest.a in Frameworks */,
+				4DBE49A9134A4F460072546A /* CoreServices.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		F92C53520ECCE349009BE4BA /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F92C564C0ECD10DD009BE4BA /* breakpadUtilities.dylib in Frameworks */,
+				F92C554C0ECCF534009BE4BA /* Foundation.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		F92C563A0ECD10B3009BE4BA /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				8B31FC8211EFD2B800FCF3E4 /* Foundation.framework in Frameworks */,
+				F92C56570ECD113E009BE4BA /* Carbon.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		F92C569E0ECE04A7009BE4BA /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F9C44EE50EF0A006003AEBAA /* SystemConfiguration.framework in Frameworks */,
+				8B3101C611F0CD9F00FCF3E4 /* AppKit.framework in Frameworks */,
+				8B3101C711F0CD9F00FCF3E4 /* Foundation.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		F93803BC0F80820F004D428B /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				8B31029411F0D54300FCF3E4 /* Foundation.framework in Frameworks */,
+				D23F4B3312A7E17700686C8D /* libgtest.a in Frameworks */,
+				4DBE49A7134A4F280072546A /* CoreServices.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		F93DE2CF0F82A67300608B94 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		F93DE32A0F82C55600608B94 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				8B3102E611F0D74C00FCF3E4 /* Foundation.framework in Frameworks */,
+				D2F9A44412131F84002747C1 /* libgtest.a in Frameworks */,
+				4DBE49A8134A4F380072546A /* CoreServices.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		F9C44DA30EF060A8003AEBAA /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F9C44E000EF077CD003AEBAA /* Breakpad.framework in Frameworks */,
+				8B3101CA11F0CDB000FCF3E4 /* AppKit.framework in Frameworks */,
+				8B3101CB11F0CDB000FCF3E4 /* Foundation.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		F9C77DD70F7DD5CF0045F7DB /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F91AF6210FD60784009D8BE2 /* Breakpad.framework in Frameworks */,
+				8B3101EA11F0CDE300FCF3E4 /* SenTestingKit.framework in Frameworks */,
+				8B3102EB11F0D78000FCF3E4 /* Foundation.framework in Frameworks */,
+				D24BBBFD121050F000F3D417 /* breakpadUtilities.dylib in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+		034768DFFF38A50411DB9C8B /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				8DC2EF5B0486A6940098B216 /* Breakpad.framework */,
+				F92C53540ECCE349009BE4BA /* Inspector */,
+				F92C563C0ECD10B3009BE4BA /* breakpadUtilities.dylib */,
+				F92C56A00ECE04A7009BE4BA /* crash_report_sender.app */,
+				F9C44DA50EF060A8003AEBAA /* BreakpadTest.app */,
+				F9C77DDA0F7DD5CF0045F7DB /* UnitTests.octest */,
+				F93803BE0F80820F004D428B /* generator_test */,
+				F93DE2D10F82A67300608B94 /* minidump_file_writer_unittest */,
+				F93DE32C0F82C55600608B94 /* handler_test */,
+				D2F9A41512131EF0002747C1 /* libgtest.a */,
+				D2F9A546121383A1002747C1 /* crash_generation_server_test */,
+				D23F4BAB12A868A500686C8D /* minidump_generator_test_helper */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		0867D691FE84028FC02AAC07 /* Breakpad */ = {
+			isa = PBXGroup;
+			children = (
+				D2F9A43812131F3B002747C1 /* gtest */,
+				8B31FFF611F0C90500FCF3E4 /* Breakpad.xcconfig */,
+				8B31027711F0D3AF00FCF3E4 /* BreakpadDebug.xcconfig */,
+				8B31027811F0D3AF00FCF3E4 /* BreakpadRelease.xcconfig */,
+				F95BB8A3101F94C300AA053B /* Tools */,
+				32DBCF5E0370ADEE00C91783 /* Breakpad_Prefix.pch */,
+				F92C538D0ECCE6F2009BE4BA /* client */,
+				F92C53600ECCE3D6009BE4BA /* common */,
+				D244536912426EE7009BBCE0 /* processor */,
+				0867D69AFE84028FC02AAC07 /* Frameworks */,
+				034768DFFF38A50411DB9C8B /* Products */,
+				F9C77DDB0F7DD5CF0045F7DB /* UnitTests-Info.plist */,
+			);
+			name = Breakpad;
+			sourceTree = "<group>";
+		};
+		0867D69AFE84028FC02AAC07 /* Frameworks */ = {
+			isa = PBXGroup;
+			children = (
+				8B3101E911F0CDE300FCF3E4 /* SenTestingKit.framework */,
+				F9C44EE40EF0A006003AEBAA /* SystemConfiguration.framework */,
+				F92C554A0ECCF530009BE4BA /* Carbon.framework */,
+				1058C7B1FEA5585E11CA2CBB /* Cocoa.framework */,
+				0867D6A5FE840307C02AAC07 /* AppKit.framework */,
+				0867D69BFE84028FC02AAC07 /* Foundation.framework */,
+				4DBE4769134A4F080072546A /* CoreServices.framework */,
+			);
+			name = Frameworks;
+			sourceTree = "<group>";
+		};
+		16C7C915147D45AE00776EAD /* apple */ = {
+			isa = PBXGroup;
+			children = (
+				16C7C916147D45AE00776EAD /* Framework */,
+			);
+			name = apple;
+			path = ../apple;
+			sourceTree = SOURCE_ROOT;
+		};
+		16C7C916147D45AE00776EAD /* Framework */ = {
+			isa = PBXGroup;
+			children = (
+				16C7C917147D45AE00776EAD /* BreakpadDefines.h */,
+			);
+			path = Framework;
+			sourceTree = "<group>";
+		};
+		D244536912426EE7009BBCE0 /* processor */ = {
+			isa = PBXGroup;
+			children = (
+				D244535112426EBB009BBCE0 /* logging.cc */,
+				D244535212426EBB009BBCE0 /* minidump.cc */,
+				D244535312426EBB009BBCE0 /* pathname_stripper.cc */,
+				D244534F12426E98009BBCE0 /* basic_code_modules.cc */,
+			);
+			name = processor;
+			sourceTree = "<group>";
+		};
+		D2F9A43812131F3B002747C1 /* gtest */ = {
+			isa = PBXGroup;
+			children = (
+				D2F9A43E12131F65002747C1 /* gtest_main.cc */,
+				D2F9A43F12131F65002747C1 /* gtest-all.cc */,
+				D2F9A43C12131F55002747C1 /* gmock-all.cc */,
+			);
+			name = gtest;
+			sourceTree = "<group>";
+		};
+		F92C53590ECCE3BB009BE4BA /* handler */ = {
+			isa = PBXGroup;
+			children = (
+				F92C53670ECCE3FD009BE4BA /* breakpad_exc_server.c */,
+				F92C53680ECCE3FD009BE4BA /* breakpad_exc_server.h */,
+				F92C53690ECCE3FD009BE4BA /* breakpad_nlist_64.cc */,
+				F92C536A0ECCE3FD009BE4BA /* breakpad_nlist_64.h */,
+				F92C536B0ECCE3FD009BE4BA /* dynamic_images.cc */,
+				F92C536C0ECCE3FD009BE4BA /* dynamic_images.h */,
+				F92C536D0ECCE3FD009BE4BA /* exception_handler.cc */,
+				F92C536E0ECCE3FD009BE4BA /* exception_handler.h */,
+				F92C536F0ECCE3FD009BE4BA /* minidump_generator.cc */,
+				F92C53700ECCE3FD009BE4BA /* minidump_generator.h */,
+				F92C53720ECCE3FD009BE4BA /* protected_memory_allocator.cc */,
+				F92C53730ECCE3FD009BE4BA /* protected_memory_allocator.h */,
+			);
+			name = handler;
+			sourceTree = "<group>";
+		};
+		F92C53600ECCE3D6009BE4BA /* common */ = {
+			isa = PBXGroup;
+			children = (
+				D244540A12439BA0009BBCE0 /* memory_unittest.cc */,
+				F92C53870ECCE6C0009BE4BA /* convert_UTF.c */,
+				F92C53880ECCE6C0009BE4BA /* convert_UTF.h */,
+				4D72CA0D13DFAD5C006CABE3 /* md5.cc */,
+				1EEEB6211720829E00F7E689 /* simple_string_dictionary.cc */,
+				1EEEB6221720829E00F7E689 /* simple_string_dictionary.h */,
+				F92C53850ECCE6AD009BE4BA /* string_conversion.cc */,
+				F92C53860ECCE6AD009BE4BA /* string_conversion.h */,
+				F92C53840ECCE68D009BE4BA /* mac */,
+			);
+			name = common;
+			sourceTree = "<group>";
+		};
+		F92C53840ECCE68D009BE4BA /* mac */ = {
+			isa = PBXGroup;
+			children = (
+				162F64F0161C577500CD68D5 /* arch_utilities.cc */,
+				162F64F1161C577500CD68D5 /* arch_utilities.h */,
+				8B31022211F0CE1000FCF3E4 /* GTMGarbageCollection.h */,
+				8B31007011F0CD3C00FCF3E4 /* GTMDefines.h */,
+				F9C77E0F0F7DDF650045F7DB /* testing */,
+				F9C44EE70EF0A3C1003AEBAA /* GTMLogger.h */,
+				F9C44EE80EF0A3C1003AEBAA /* GTMLogger.m */,
+				F92C53740ECCE635009BE4BA /* file_id.cc */,
+				F92C53750ECCE635009BE4BA /* file_id.h */,
+				F92C53760ECCE635009BE4BA /* HTTPMultipartUpload.h */,
+				F92C53770ECCE635009BE4BA /* HTTPMultipartUpload.m */,
+				F4DAB1DB19F1027100A5A838 /* launch_reporter.cc */,
+				F4DAB1DC19F1027100A5A838 /* launch_reporter.h */,
+				F92C53780ECCE635009BE4BA /* MachIPC.h */,
+				F92C53790ECCE635009BE4BA /* MachIPC.mm */,
+				4D61A25D14F43CFC002D5862 /* bootstrap_compat.cc */,
+				4D61A25E14F43CFC002D5862 /* bootstrap_compat.h */,
+				F92C537A0ECCE635009BE4BA /* macho_id.cc */,
+				F92C537B0ECCE635009BE4BA /* macho_id.h */,
+				F92C537C0ECCE635009BE4BA /* macho_utilities.cc */,
+				F92C537D0ECCE635009BE4BA /* macho_utilities.h */,
+				F92C537E0ECCE635009BE4BA /* macho_walker.cc */,
+				F92C537F0ECCE635009BE4BA /* macho_walker.h */,
+				F92C53820ECCE635009BE4BA /* string_utilities.cc */,
+				F92C53830ECCE635009BE4BA /* string_utilities.h */,
+			);
+			name = mac;
+			sourceTree = "<group>";
+		};
+		F92C538D0ECCE6F2009BE4BA /* client */ = {
+			isa = PBXGroup;
+			children = (
+				16C7C915147D45AE00776EAD /* apple */,
+				F92C53990ECCE78E009BE4BA /* mac */,
+				F92C538E0ECCE70A009BE4BA /* minidump_file_writer-inl.h */,
+				F92C538F0ECCE70A009BE4BA /* minidump_file_writer.cc */,
+				F92C53900ECCE70A009BE4BA /* minidump_file_writer.h */,
+				F93DE2D70F82A70E00608B94 /* minidump_file_writer_unittest.cc */,
+			);
+			name = client;
+			sourceTree = "<group>";
+		};
+		F92C53990ECCE78E009BE4BA /* mac */ = {
+			isa = PBXGroup;
+			children = (
+				F9C77DDF0F7DD7CF0045F7DB /* tests */,
+				F9C44DAB0EF0726F003AEBAA /* testapp */,
+				F92C56A60ECE04B6009BE4BA /* sender */,
+				F92C55CD0ECD0053009BE4BA /* Framework */,
+				F92C53B50ECCE799009BE4BA /* crash_generation */,
+				F92C53590ECCE3BB009BE4BA /* handler */,
+			);
+			name = mac;
+			sourceTree = "<group>";
+		};
+		F92C53B50ECCE799009BE4BA /* crash_generation */ = {
+			isa = PBXGroup;
+			children = (
+				163201D41443019E00C4DBF5 /* ConfigFile.h */,
+				163201D51443019E00C4DBF5 /* ConfigFile.mm */,
+				D2F9A4C4121336C7002747C1 /* client_info.h */,
+				D2F9A4C5121336C7002747C1 /* crash_generation_client.h */,
+				D2F9A4C6121336C7002747C1 /* crash_generation_client.cc */,
+				D2F9A4C7121336C7002747C1 /* crash_generation_server.h */,
+				D2F9A4C8121336C7002747C1 /* crash_generation_server.cc */,
+				F9286B380F7EB25800A4DCC8 /* Inspector.h */,
+				F9286B390F7EB25800A4DCC8 /* InspectorMain.mm */,
+				F92C53B70ECCE7B3009BE4BA /* Inspector.mm */,
+			);
+			name = crash_generation;
+			sourceTree = "<group>";
+		};
+		F92C55CD0ECD0053009BE4BA /* Framework */ = {
+			isa = PBXGroup;
+			children = (
+				F945859D0F78241E009A47BF /* Info.plist */,
+				F92C56310ECD0DF1009BE4BA /* OnDemandServer.h */,
+				F92C56320ECD0DF1009BE4BA /* OnDemandServer.mm */,
+				F92C55CE0ECD0064009BE4BA /* Breakpad.h */,
+				F92C55CF0ECD0064009BE4BA /* Breakpad.mm */,
+			);
+			name = Framework;
+			sourceTree = "<group>";
+		};
+		F92C56A60ECE04B6009BE4BA /* sender */ = {
+			isa = PBXGroup;
+			children = (
+				16E02DB4147410D4008C604D /* uploader.mm */,
+				163202431443201300C4DBF5 /* uploader.h */,
+				F9B6309F100FF96B00D0F4AC /* goArrow.png */,
+				F92C56A70ECE04C5009BE4BA /* crash_report_sender.h */,
+				F92C56A80ECE04C5009BE4BA /* crash_report_sender.m */,
+				F945849C0F280E3C009A47BF /* Localizable.strings */,
+				33880C7E0F9E097100817F82 /* InfoPlist.strings */,
+				3329D4EC0FA16D820007BBC5 /* Breakpad.xib */,
+				4084699C0F5D9CF900FDCA37 /* crash_report_sender.icns */,
+				F92C56A20ECE04A7009BE4BA /* crash_report_sender-Info.plist */,
+			);
+			name = sender;
+			sourceTree = "<group>";
+		};
+		F95BB87D101F949F00AA053B /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				F95BB885101F949F00AA053B /* crash_report */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		F95BB88A101F94AC00AA053B /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				F95BB892101F94AC00AA053B /* dump_syms */,
+				8B31F7A111EF9A8700FCF3E4 /* macho_dump */,
+				8B31F7A311EF9A8700FCF3E4 /* libgtestmockall.a */,
+				8B31F7A511EF9A8700FCF3E4 /* byte_cursor_unittest */,
+				8B31F7A711EF9A8700FCF3E4 /* macho_reader_unittest */,
+				8B31F7A911EF9A8700FCF3E4 /* stabs_reader_unittest */,
+				8B31F7AB11EF9A8700FCF3E4 /* bytereader_unittest */,
+				8B31F7AD11EF9A8700FCF3E4 /* dwarf2reader_cfi_unittest */,
+				8B31F7AF11EF9A8700FCF3E4 /* dwarf2diehandler_unittest */,
+				8B31F7B111EF9A8700FCF3E4 /* dwarf_cu_to_module_unittest */,
+				8B31F7B311EF9A8700FCF3E4 /* dwarf_line_to_module_unittest */,
+				8B31F7B511EF9A8700FCF3E4 /* dwarf_cfi_to_module_unittest */,
+				8B31F7B711EF9A8700FCF3E4 /* stabs_to_module_unittest */,
+				8B31F7B911EF9A8700FCF3E4 /* module_unittest */,
+				8B31F7BB11EF9A8700FCF3E4 /* test_assembler_unittest */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		F95BB895101F94C000AA053B /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				F95BB89F101F94C000AA053B /* symupload */,
+				F95BB8A1101F94C000AA053B /* minidump_upload */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		F95BB8A3101F94C300AA053B /* Tools */ = {
+			isa = PBXGroup;
+			children = (
+				F95BB894101F94C000AA053B /* symupload.xcodeproj */,
+				F95BB889101F94AC00AA053B /* dump_syms.xcodeproj */,
+				F95BB87C101F949F00AA053B /* crash_report.xcodeproj */,
+			);
+			name = Tools;
+			sourceTree = "<group>";
+		};
+		F9C44DAB0EF0726F003AEBAA /* testapp */ = {
+			isa = PBXGroup;
+			children = (
+				F9C44DBF0EF0778F003AEBAA /* Controller.h */,
+				F9C44DC00EF0778F003AEBAA /* TestClass.h */,
+				F9C44DB80EF072A0003AEBAA /* InfoPlist.strings */,
+				F9C44DBA0EF072A0003AEBAA /* MainMenu.xib */,
+				F9C44DAC0EF07288003AEBAA /* Controller.m */,
+				F9C44DAD0EF07288003AEBAA /* crashduringload */,
+				F9C44DAE0EF07288003AEBAA /* crashInMain */,
+				F9C44DAF0EF07288003AEBAA /* Info.plist */,
+				F9C44DB00EF07288003AEBAA /* main.m */,
+				F9C44DB10EF07288003AEBAA /* TestClass.mm */,
+			);
+			name = testapp;
+			sourceTree = "<group>";
+		};
+		F9C77DDF0F7DD7CF0045F7DB /* tests */ = {
+			isa = PBXGroup;
+			children = (
+				1EEEB6251720830600F7E689 /* simple_string_dictionary_unittest.cc */,
+				D23F4B9A12A8688800686C8D /* minidump_generator_test_helper.cc */,
+				D23F4B2C12A7E13200686C8D /* minidump_generator_test.cc */,
+				D2F9A4CE121336F7002747C1 /* crash_generation_server_test.cc */,
+				D2F9A3D41212F87C002747C1 /* exception_handler_test.cc */,
+				F91AF5CF0FD60393009D8BE2 /* BreakpadFramework_Test.mm */,
+			);
+			name = tests;
+			sourceTree = "<group>";
+		};
+		F9C77E0F0F7DDF650045F7DB /* testing */ = {
+			isa = PBXGroup;
+			children = (
+				F9C77E110F7DDF810045F7DB /* GTMSenTestCase.h */,
+				F9C77E120F7DDF810045F7DB /* GTMSenTestCase.m */,
+			);
+			name = testing;
+			sourceTree = "<group>";
+		};
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+		8DC2EF500486A6940098B216 /* Headers */ = {
+			isa = PBXHeadersBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F92C55D00ECD0064009BE4BA /* Breakpad.h in Headers */,
+				F92C56330ECD0DF1009BE4BA /* OnDemandServer.h in Headers */,
+				D2F9A4C9121336C7002747C1 /* client_info.h in Headers */,
+				D2F9A4CA121336C7002747C1 /* crash_generation_client.h in Headers */,
+				D2F9A4CC121336C7002747C1 /* crash_generation_server.h in Headers */,
+				163201D61443019E00C4DBF5 /* ConfigFile.h in Headers */,
+				16C7C918147D45AE00776EAD /* BreakpadDefines.h in Headers */,
+				162F64F3161C577500CD68D5 /* arch_utilities.h in Headers */,
+				F4DAB1DE19F1027100A5A838 /* launch_reporter.h in Headers */,
+				1EEEB6241720829E00F7E689 /* simple_string_dictionary.h in Headers */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		D2F9A41112131EF0002747C1 /* Headers */ = {
+			isa = PBXHeadersBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		F92C56380ECD10B3009BE4BA /* Headers */ = {
+			isa = PBXHeadersBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+		8DC2EF4F0486A6940098B216 /* Breakpad */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 1DEB91AD08733DA50010E9CD /* Build configuration list for PBXNativeTarget "Breakpad" */;
+			buildPhases = (
+				F97A0E850ED4EC15008784D3 /* Change install name of breakpadUtilities */,
+				8DC2EF500486A6940098B216 /* Headers */,
+				8DC2EF520486A6940098B216 /* Resources */,
+				8DC2EF540486A6940098B216 /* Sources */,
+				8DC2EF560486A6940098B216 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				F92C56860ECD15EF009BE4BA /* PBXTargetDependency */,
+				F92C56880ECD15F1009BE4BA /* PBXTargetDependency */,
+				F9C44E970EF09F4B003AEBAA /* PBXTargetDependency */,
+			);
+			name = Breakpad;
+			productInstallPath = "$(HOME)/Library/Frameworks";
+			productName = Breakpad;
+			productReference = 8DC2EF5B0486A6940098B216 /* Breakpad.framework */;
+			productType = "com.apple.product-type.framework";
+		};
+		D23F4BAA12A868A500686C8D /* minidump_generator_test_helper */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = D23F4BB012A868C400686C8D /* Build configuration list for PBXNativeTarget "minidump_generator_test_helper" */;
+			buildPhases = (
+				D23F4BA812A868A500686C8D /* Sources */,
+				D23F4BA912A868A500686C8D /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = minidump_generator_test_helper;
+			productName = minidump_generator_test_helper;
+			productReference = D23F4BAB12A868A500686C8D /* minidump_generator_test_helper */;
+			productType = "com.apple.product-type.tool";
+		};
+		D2F9A41412131EF0002747C1 /* gtest */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = D2F9A42D12131F0E002747C1 /* Build configuration list for PBXNativeTarget "gtest" */;
+			buildPhases = (
+				D2F9A41112131EF0002747C1 /* Headers */,
+				D2F9A41212131EF0002747C1 /* Sources */,
+				D2F9A41312131EF0002747C1 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = gtest;
+			productName = gtest;
+			productReference = D2F9A41512131EF0002747C1 /* libgtest.a */;
+			productType = "com.apple.product-type.library.static";
+		};
+		D2F9A52A121383A1002747C1 /* crash_generation_server_test */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = D2F9A542121383A1002747C1 /* Build configuration list for PBXNativeTarget "crash_generation_server_test" */;
+			buildPhases = (
+				D2F9A52D121383A1002747C1 /* Sources */,
+				D2F9A53E121383A1002747C1 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				D2F9A52B121383A1002747C1 /* PBXTargetDependency */,
+			);
+			name = crash_generation_server_test;
+			productName = handler_test;
+			productReference = D2F9A546121383A1002747C1 /* crash_generation_server_test */;
+			productType = "com.apple.product-type.tool";
+		};
+		F92C53530ECCE349009BE4BA /* Inspector */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = F92C53580ECCE36D009BE4BA /* Build configuration list for PBXNativeTarget "Inspector" */;
+			buildPhases = (
+				F94584840F27FB40009A47BF /* Change install name of breakpadUtilities */,
+				F92C53510ECCE349009BE4BA /* Sources */,
+				F92C53520ECCE349009BE4BA /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				F92C564E0ECD10E5009BE4BA /* PBXTargetDependency */,
+			);
+			name = Inspector;
+			productName = Inspector;
+			productReference = F92C53540ECCE349009BE4BA /* Inspector */;
+			productType = "com.apple.product-type.tool";
+		};
+		F92C563B0ECD10B3009BE4BA /* breakpadUtilities */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = F92C56670ECD11A3009BE4BA /* Build configuration list for PBXNativeTarget "breakpadUtilities" */;
+			buildPhases = (
+				F92C56380ECD10B3009BE4BA /* Headers */,
+				F92C56390ECD10B3009BE4BA /* Sources */,
+				F92C563A0ECD10B3009BE4BA /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = breakpadUtilities;
+			productName = breakpadUtilities;
+			productReference = F92C563C0ECD10B3009BE4BA /* breakpadUtilities.dylib */;
+			productType = "com.apple.product-type.library.dynamic";
+		};
+		F92C569F0ECE04A7009BE4BA /* crash_report_sender */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = F92C56A50ECE04A8009BE4BA /* Build configuration list for PBXNativeTarget "crash_report_sender" */;
+			buildPhases = (
+				F92C569C0ECE04A7009BE4BA /* Resources */,
+				F92C569D0ECE04A7009BE4BA /* Sources */,
+				F92C569E0ECE04A7009BE4BA /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = crash_report_sender;
+			productName = crash_report_sender;
+			productReference = F92C56A00ECE04A7009BE4BA /* crash_report_sender.app */;
+			productType = "com.apple.product-type.application";
+		};
+		F93803BD0F80820F004D428B /* generator_test */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = F93803C40F80822E004D428B /* Build configuration list for PBXNativeTarget "generator_test" */;
+			buildPhases = (
+				F93803BB0F80820F004D428B /* Sources */,
+				F93803BC0F80820F004D428B /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				D23F4B3012A7E16200686C8D /* PBXTargetDependency */,
+				D23F4BBA12A8694C00686C8D /* PBXTargetDependency */,
+			);
+			name = generator_test;
+			productName = generator_test;
+			productReference = F93803BE0F80820F004D428B /* generator_test */;
+			productType = "com.apple.product-type.tool";
+		};
+		F93DE2D00F82A67300608B94 /* minidump_file_writer_unittest */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = F93DE2D60F82A67700608B94 /* Build configuration list for PBXNativeTarget "minidump_file_writer_unittest" */;
+			buildPhases = (
+				F93DE2CE0F82A67300608B94 /* Sources */,
+				F93DE2CF0F82A67300608B94 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = minidump_file_writer_unittest;
+			productName = minidump_file_writer_unittest;
+			productReference = F93DE2D10F82A67300608B94 /* minidump_file_writer_unittest */;
+			productType = "com.apple.product-type.tool";
+		};
+		F93DE32B0F82C55600608B94 /* handler_test */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = F93DE3320F82C5D800608B94 /* Build configuration list for PBXNativeTarget "handler_test" */;
+			buildPhases = (
+				F93DE3290F82C55600608B94 /* Sources */,
+				F93DE32A0F82C55600608B94 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				D2F9A44312131F80002747C1 /* PBXTargetDependency */,
+			);
+			name = handler_test;
+			productName = handler_test;
+			productReference = F93DE32C0F82C55600608B94 /* handler_test */;
+			productType = "com.apple.product-type.tool";
+		};
+		F9C44DA40EF060A8003AEBAA /* BreakpadTest */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = F9C44DAA0EF060A9003AEBAA /* Build configuration list for PBXNativeTarget "BreakpadTest" */;
+			buildPhases = (
+				F9C44DA10EF060A8003AEBAA /* Resources */,
+				F9C44DA20EF060A8003AEBAA /* Sources */,
+				F9C44DA30EF060A8003AEBAA /* Frameworks */,
+				F9C44E410EF08B17003AEBAA /* Copy Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				F9C44E1A0EF0790F003AEBAA /* PBXTargetDependency */,
+			);
+			name = BreakpadTest;
+			productName = BreakpadTest;
+			productReference = F9C44DA50EF060A8003AEBAA /* BreakpadTest.app */;
+			productType = "com.apple.product-type.application";
+		};
+		F9C77DD90F7DD5CF0045F7DB /* UnitTests */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = F9C77DDE0F7DD5D00045F7DB /* Build configuration list for PBXNativeTarget "UnitTests" */;
+			buildPhases = (
+				F9C77DD50F7DD5CF0045F7DB /* Resources */,
+				F9C77DD60F7DD5CF0045F7DB /* Sources */,
+				F9C77DD70F7DD5CF0045F7DB /* Frameworks */,
+				F9C77DD80F7DD5CF0045F7DB /* ShellScript */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				F93DE2FC0F82C3C600608B94 /* PBXTargetDependency */,
+				F93DE3700F82CC1300608B94 /* PBXTargetDependency */,
+				F91AF6380FD60A74009D8BE2 /* PBXTargetDependency */,
+				D2F9A5DF12142A6A002747C1 /* PBXTargetDependency */,
+			);
+			name = UnitTests;
+			productName = UnitTests;
+			productReference = F9C77DDA0F7DD5CF0045F7DB /* UnitTests.octest */;
+			productType = "com.apple.product-type.bundle";
+		};
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+		0867D690FE84028FC02AAC07 /* Project object */ = {
+			isa = PBXProject;
+			buildConfigurationList = 1DEB91B108733DA50010E9CD /* Build configuration list for PBXProject "Breakpad" */;
+			compatibilityVersion = "Xcode 3.1";
+			developmentRegion = English;
+			hasScannedForEncodings = 1;
+			knownRegions = (
+				English,
+				da,
+				de,
+				es,
+				fr,
+				it,
+				ja,
+				nl,
+				no,
+				sl,
+				sv,
+				tr,
+			);
+			mainGroup = 0867D691FE84028FC02AAC07 /* Breakpad */;
+			productRefGroup = 034768DFFF38A50411DB9C8B /* Products */;
+			projectDirPath = "";
+			projectReferences = (
+				{
+					ProductGroup = F95BB87D101F949F00AA053B /* Products */;
+					ProjectRef = F95BB87C101F949F00AA053B /* crash_report.xcodeproj */;
+				},
+				{
+					ProductGroup = F95BB88A101F94AC00AA053B /* Products */;
+					ProjectRef = F95BB889101F94AC00AA053B /* dump_syms.xcodeproj */;
+				},
+				{
+					ProductGroup = F95BB895101F94C000AA053B /* Products */;
+					ProjectRef = F95BB894101F94C000AA053B /* symupload.xcodeproj */;
+				},
+			);
+			projectRoot = "";
+			targets = (
+				8DC2EF4F0486A6940098B216 /* Breakpad */,
+				F92C53530ECCE349009BE4BA /* Inspector */,
+				F92C563B0ECD10B3009BE4BA /* breakpadUtilities */,
+				F92C569F0ECE04A7009BE4BA /* crash_report_sender */,
+				F9C44DA40EF060A8003AEBAA /* BreakpadTest */,
+				F94585840F782326009A47BF /* All */,
+				F9C77DD90F7DD5CF0045F7DB /* UnitTests */,
+				F93803BD0F80820F004D428B /* generator_test */,
+				F93DE2D00F82A67300608B94 /* minidump_file_writer_unittest */,
+				F93DE32B0F82C55600608B94 /* handler_test */,
+				D2F9A41412131EF0002747C1 /* gtest */,
+				D2F9A52A121383A1002747C1 /* crash_generation_server_test */,
+				D23F4BAA12A868A500686C8D /* minidump_generator_test_helper */,
+			);
+		};
+/* End PBXProject section */
+
+/* Begin PBXReferenceProxy section */
+		8B31F7A111EF9A8700FCF3E4 /* macho_dump */ = {
+			isa = PBXReferenceProxy;
+			fileType = "compiled.mach-o.executable";
+			path = macho_dump;
+			remoteRef = 8B31F7A011EF9A8700FCF3E4 /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		8B31F7A311EF9A8700FCF3E4 /* libgtestmockall.a */ = {
+			isa = PBXReferenceProxy;
+			fileType = archive.ar;
+			path = libgtestmockall.a;
+			remoteRef = 8B31F7A211EF9A8700FCF3E4 /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		8B31F7A511EF9A8700FCF3E4 /* byte_cursor_unittest */ = {
+			isa = PBXReferenceProxy;
+			fileType = "compiled.mach-o.executable";
+			path = byte_cursor_unittest;
+			remoteRef = 8B31F7A411EF9A8700FCF3E4 /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		8B31F7A711EF9A8700FCF3E4 /* macho_reader_unittest */ = {
+			isa = PBXReferenceProxy;
+			fileType = "compiled.mach-o.executable";
+			path = macho_reader_unittest;
+			remoteRef = 8B31F7A611EF9A8700FCF3E4 /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		8B31F7A911EF9A8700FCF3E4 /* stabs_reader_unittest */ = {
+			isa = PBXReferenceProxy;
+			fileType = "compiled.mach-o.executable";
+			path = stabs_reader_unittest;
+			remoteRef = 8B31F7A811EF9A8700FCF3E4 /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		8B31F7AB11EF9A8700FCF3E4 /* bytereader_unittest */ = {
+			isa = PBXReferenceProxy;
+			fileType = "compiled.mach-o.executable";
+			path = bytereader_unittest;
+			remoteRef = 8B31F7AA11EF9A8700FCF3E4 /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		8B31F7AD11EF9A8700FCF3E4 /* dwarf2reader_cfi_unittest */ = {
+			isa = PBXReferenceProxy;
+			fileType = "compiled.mach-o.executable";
+			path = dwarf2reader_cfi_unittest;
+			remoteRef = 8B31F7AC11EF9A8700FCF3E4 /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		8B31F7AF11EF9A8700FCF3E4 /* dwarf2diehandler_unittest */ = {
+			isa = PBXReferenceProxy;
+			fileType = "compiled.mach-o.executable";
+			path = dwarf2diehandler_unittest;
+			remoteRef = 8B31F7AE11EF9A8700FCF3E4 /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		8B31F7B111EF9A8700FCF3E4 /* dwarf_cu_to_module_unittest */ = {
+			isa = PBXReferenceProxy;
+			fileType = "compiled.mach-o.executable";
+			path = dwarf_cu_to_module_unittest;
+			remoteRef = 8B31F7B011EF9A8700FCF3E4 /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		8B31F7B311EF9A8700FCF3E4 /* dwarf_line_to_module_unittest */ = {
+			isa = PBXReferenceProxy;
+			fileType = "compiled.mach-o.executable";
+			path = dwarf_line_to_module_unittest;
+			remoteRef = 8B31F7B211EF9A8700FCF3E4 /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		8B31F7B511EF9A8700FCF3E4 /* dwarf_cfi_to_module_unittest */ = {
+			isa = PBXReferenceProxy;
+			fileType = "compiled.mach-o.executable";
+			path = dwarf_cfi_to_module_unittest;
+			remoteRef = 8B31F7B411EF9A8700FCF3E4 /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		8B31F7B711EF9A8700FCF3E4 /* stabs_to_module_unittest */ = {
+			isa = PBXReferenceProxy;
+			fileType = "compiled.mach-o.executable";
+			path = stabs_to_module_unittest;
+			remoteRef = 8B31F7B611EF9A8700FCF3E4 /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		8B31F7B911EF9A8700FCF3E4 /* module_unittest */ = {
+			isa = PBXReferenceProxy;
+			fileType = "compiled.mach-o.executable";
+			path = module_unittest;
+			remoteRef = 8B31F7B811EF9A8700FCF3E4 /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		8B31F7BB11EF9A8700FCF3E4 /* test_assembler_unittest */ = {
+			isa = PBXReferenceProxy;
+			fileType = "compiled.mach-o.executable";
+			path = test_assembler_unittest;
+			remoteRef = 8B31F7BA11EF9A8700FCF3E4 /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		F95BB885101F949F00AA053B /* crash_report */ = {
+			isa = PBXReferenceProxy;
+			fileType = "compiled.mach-o.executable";
+			path = crash_report;
+			remoteRef = F95BB884101F949F00AA053B /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		F95BB892101F94AC00AA053B /* dump_syms */ = {
+			isa = PBXReferenceProxy;
+			fileType = "compiled.mach-o.executable";
+			path = dump_syms;
+			remoteRef = F95BB891101F94AC00AA053B /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		F95BB89F101F94C000AA053B /* symupload */ = {
+			isa = PBXReferenceProxy;
+			fileType = "compiled.mach-o.executable";
+			path = symupload;
+			remoteRef = F95BB89E101F94C000AA053B /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		F95BB8A1101F94C000AA053B /* minidump_upload */ = {
+			isa = PBXReferenceProxy;
+			fileType = "compiled.mach-o.executable";
+			path = minidump_upload;
+			remoteRef = F95BB8A0101F94C000AA053B /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+/* End PBXReferenceProxy section */
+
+/* Begin PBXResourcesBuildPhase section */
+		8DC2EF520486A6940098B216 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F9C44E980EF09F56003AEBAA /* crash_report_sender.app in Resources */,
+				F92C568A0ECD15F9009BE4BA /* Inspector in Resources */,
+				F92C56650ECD1185009BE4BA /* breakpadUtilities.dylib in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		F92C569C0ECE04A7009BE4BA /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F945849E0F280E3C009A47BF /* Localizable.strings in Resources */,
+				4084699D0F5D9CF900FDCA37 /* crash_report_sender.icns in Resources */,
+				33880C800F9E097100817F82 /* InfoPlist.strings in Resources */,
+				3329D4ED0FA16D820007BBC5 /* Breakpad.xib in Resources */,
+				F9B630A0100FF96B00D0F4AC /* goArrow.png in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		F9C44DA10EF060A8003AEBAA /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F9C44DB30EF07288003AEBAA /* crashduringload in Resources */,
+				F9C44DB40EF07288003AEBAA /* crashInMain in Resources */,
+				F9C44DBC0EF072A0003AEBAA /* InfoPlist.strings in Resources */,
+				F9C44DBD0EF072A0003AEBAA /* MainMenu.xib in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		F9C77DD50F7DD5CF0045F7DB /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+		F94584840F27FB40009A47BF /* Change install name of breakpadUtilities */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputPaths = (
+			);
+			name = "Change install name of breakpadUtilities";
+			outputPaths = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "install_name_tool -id \"@executable_path/../Resources/breakpadUtilities.dylib\" \"${BUILT_PRODUCTS_DIR}/breakpadUtilities.dylib\"\n";
+		};
+		F97A0E850ED4EC15008784D3 /* Change install name of breakpadUtilities */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputPaths = (
+			);
+			name = "Change install name of breakpadUtilities";
+			outputPaths = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "#!/bin/bash\ninstall_name_tool -id \"@executable_path/../Frameworks/Breakpad.framework/Resources/breakpadUtilities.dylib\" \"${BUILT_PRODUCTS_DIR}/breakpadUtilities.dylib\"\n";
+		};
+		F9C77DD80F7DD5CF0045F7DB /* ShellScript */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputPaths = (
+			);
+			outputPaths = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "# Run the unit tests in this test bundle.\n\"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests\"\n\necho running minidump generator tests...\n\"${BUILT_PRODUCTS_DIR}/generator_test\"\necho Running exception handler tests...\n\"${BUILT_PRODUCTS_DIR}/handler_test\"\necho Running crash generation server tests...\n\"${BUILT_PRODUCTS_DIR}/crash_generation_server_test\"\n";
+		};
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+		8DC2EF540486A6940098B216 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F92C565F0ECD116B009BE4BA /* protected_memory_allocator.cc in Sources */,
+				F92C56630ECD1179009BE4BA /* exception_handler.cc in Sources */,
+				F92C55D10ECD0064009BE4BA /* Breakpad.mm in Sources */,
+				F4DAB1DD19F1027100A5A838 /* launch_reporter.cc in Sources */,
+				F92C56340ECD0DF1009BE4BA /* OnDemandServer.mm in Sources */,
+				D2F9A4CB121336C7002747C1 /* crash_generation_client.cc in Sources */,
+				D2F9A4CD121336C7002747C1 /* crash_generation_server.cc in Sources */,
+				163201D71443019E00C4DBF5 /* ConfigFile.mm in Sources */,
+				162F64F2161C577500CD68D5 /* arch_utilities.cc in Sources */,
+				1EEEB6231720829E00F7E689 /* simple_string_dictionary.cc in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		D23F4BA812A868A500686C8D /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				D23F4BB112A868CB00686C8D /* minidump_generator_test_helper.cc in Sources */,
+				D23F4BB812A868F700686C8D /* MachIPC.mm in Sources */,
+				D246417012BAA40E005170D0 /* exception_handler.cc in Sources */,
+				D246417112BAA41C005170D0 /* crash_generation_client.cc in Sources */,
+				D246417512BAA438005170D0 /* minidump_generator.cc in Sources */,
+				D246417612BAA43F005170D0 /* dynamic_images.cc in Sources */,
+				D246417712BAA444005170D0 /* breakpad_nlist_64.cc in Sources */,
+				D246418812BAA4E3005170D0 /* string_utilities.cc in Sources */,
+				D246418C12BAA508005170D0 /* minidump_file_writer.cc in Sources */,
+				D246419012BAA52A005170D0 /* string_conversion.cc in Sources */,
+				D246419112BAA52F005170D0 /* convert_UTF.c in Sources */,
+				D246419512BAA54C005170D0 /* file_id.cc in Sources */,
+				D246419612BAA55A005170D0 /* macho_id.cc in Sources */,
+				D24641A012BAA67F005170D0 /* macho_walker.cc in Sources */,
+				D24641AF12BAA82D005170D0 /* macho_utilities.cc in Sources */,
+				4D72CA2513DFAE1C006CABE3 /* md5.cc in Sources */,
+				4D61A26C14F43D42002D5862 /* bootstrap_compat.cc in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		D2F9A41212131EF0002747C1 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				D2F9A43D12131F55002747C1 /* gmock-all.cc in Sources */,
+				D2F9A44012131F65002747C1 /* gtest_main.cc in Sources */,
+				D2F9A44112131F65002747C1 /* gtest-all.cc in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		D2F9A52D121383A1002747C1 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				D2F9A553121383DC002747C1 /* crash_generation_server_test.cc in Sources */,
+				D2F9A52E121383A1002747C1 /* crash_generation_client.cc in Sources */,
+				D2F9A52F121383A1002747C1 /* crash_generation_server.cc in Sources */,
+				D2F9A530121383A1002747C1 /* MachIPC.mm in Sources */,
+				D2F9A531121383A1002747C1 /* breakpad_nlist_64.cc in Sources */,
+				D2F9A532121383A1002747C1 /* dynamic_images.cc in Sources */,
+				D2F9A533121383A1002747C1 /* exception_handler.cc in Sources */,
+				D2F9A534121383A1002747C1 /* minidump_generator.cc in Sources */,
+				D2F9A535121383A1002747C1 /* minidump_file_writer.cc in Sources */,
+				D2F9A536121383A1002747C1 /* convert_UTF.c in Sources */,
+				D2F9A537121383A1002747C1 /* string_conversion.cc in Sources */,
+				D2F9A538121383A1002747C1 /* file_id.cc in Sources */,
+				D2F9A539121383A1002747C1 /* macho_id.cc in Sources */,
+				D2F9A53A121383A1002747C1 /* macho_utilities.cc in Sources */,
+				D2F9A53B121383A1002747C1 /* macho_walker.cc in Sources */,
+				D2F9A53C121383A1002747C1 /* string_utilities.cc in Sources */,
+				D24641EC12BAC6FB005170D0 /* logging.cc in Sources */,
+				D24641ED12BAC6FB005170D0 /* minidump.cc in Sources */,
+				D24641EE12BAC6FB005170D0 /* pathname_stripper.cc in Sources */,
+				D24641EF12BAC6FB005170D0 /* basic_code_modules.cc in Sources */,
+				4D72CA3913DFAE92006CABE3 /* md5.cc in Sources */,
+				4D61A26F14F43D48002D5862 /* bootstrap_compat.cc in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		F92C53510ECCE349009BE4BA /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F92C53B80ECCE7B3009BE4BA /* Inspector.mm in Sources */,
+				F9286B3A0F7EB25800A4DCC8 /* InspectorMain.mm in Sources */,
+				163201E31443029300C4DBF5 /* ConfigFile.mm in Sources */,
+				4D61A26B14F43D3C002D5862 /* bootstrap_compat.cc in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		F92C56390ECD10B3009BE4BA /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F4F916B619F10FFC00B83BE4 /* launch_reporter.cc in Sources */,
+				162F64F4161C579B00CD68D5 /* arch_utilities.cc in Sources */,
+				162F64F5161C579B00CD68D5 /* arch_utilities.h in Sources */,
+				D2A5DD301188633800081F03 /* breakpad_nlist_64.cc in Sources */,
+				F92C563F0ECD10CA009BE4BA /* convert_UTF.c in Sources */,
+				F92C56400ECD10CA009BE4BA /* dynamic_images.cc in Sources */,
+				F92C56410ECD10CA009BE4BA /* file_id.cc in Sources */,
+				F92C56420ECD10CA009BE4BA /* macho_id.cc in Sources */,
+				F92C56430ECD10CA009BE4BA /* macho_utilities.cc in Sources */,
+				F92C56440ECD10CA009BE4BA /* macho_walker.cc in Sources */,
+				F92C56450ECD10CA009BE4BA /* MachIPC.mm in Sources */,
+				4D72CA0E13DFAD5C006CABE3 /* md5.cc in Sources */,
+				F92C56460ECD10CA009BE4BA /* minidump_file_writer.cc in Sources */,
+				F92C56470ECD10CA009BE4BA /* minidump_generator.cc in Sources */,
+				F92C56490ECD10CA009BE4BA /* string_utilities.cc in Sources */,
+				F92C564A0ECD10CA009BE4BA /* string_conversion.cc in Sources */,
+				4D61A25F14F43CFC002D5862 /* bootstrap_compat.cc in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		F92C569D0ECE04A7009BE4BA /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F9C44EA20EF09F93003AEBAA /* HTTPMultipartUpload.m in Sources */,
+				F92C56A90ECE04C5009BE4BA /* crash_report_sender.m in Sources */,
+				F9C44EE90EF0A3C1003AEBAA /* GTMLogger.m in Sources */,
+				16E02DB8147410F0008C604D /* uploader.mm in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		F93803BB0F80820F004D428B /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				D2C1DBE412AFC270006917BD /* logging.cc in Sources */,
+				D2C1DBE512AFC270006917BD /* minidump.cc in Sources */,
+				D2C1DBE612AFC270006917BD /* pathname_stripper.cc in Sources */,
+				D2C1DBE712AFC270006917BD /* basic_code_modules.cc in Sources */,
+				D2F9A4DF12133AD9002747C1 /* crash_generation_client.cc in Sources */,
+				D2F9A4E012133AD9002747C1 /* crash_generation_server.cc in Sources */,
+				D24BBD291211EDB100F3D417 /* MachIPC.mm in Sources */,
+				D2A5DD401188640400081F03 /* breakpad_nlist_64.cc in Sources */,
+				F93803CD0F8083B7004D428B /* dynamic_images.cc in Sources */,
+				F93803CE0F8083B7004D428B /* exception_handler.cc in Sources */,
+				F93803CF0F8083B7004D428B /* minidump_generator.cc in Sources */,
+				F93803D00F8083B7004D428B /* minidump_file_writer.cc in Sources */,
+				F93803D10F8083B7004D428B /* convert_UTF.c in Sources */,
+				F93803D20F8083B7004D428B /* string_conversion.cc in Sources */,
+				F93803D30F8083B7004D428B /* file_id.cc in Sources */,
+				F93803D40F8083B7004D428B /* macho_id.cc in Sources */,
+				F93803D50F8083B7004D428B /* macho_utilities.cc in Sources */,
+				F93803D60F8083B7004D428B /* macho_walker.cc in Sources */,
+				F93803D70F8083B7004D428B /* string_utilities.cc in Sources */,
+				D23F4B2E12A7E13200686C8D /* minidump_generator_test.cc in Sources */,
+				4D72CA2F13DFAE65006CABE3 /* md5.cc in Sources */,
+				4D61A26D14F43D43002D5862 /* bootstrap_compat.cc in Sources */,
+				1EEEB62B1720868C00F7E689 /* simple_string_dictionary.cc in Sources */,
+				1EEEB62A1720859200F7E689 /* simple_string_dictionary_unittest.cc in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		F93DE2CE0F82A67300608B94 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F93DE2D90F82A73500608B94 /* minidump_file_writer.cc in Sources */,
+				F93DE2DA0F82A73500608B94 /* convert_UTF.c in Sources */,
+				F93DE2DB0F82A73500608B94 /* string_conversion.cc in Sources */,
+				F93DE2D80F82A70E00608B94 /* minidump_file_writer_unittest.cc in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		F93DE3290F82C55600608B94 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				D244536A12426F00009BBCE0 /* logging.cc in Sources */,
+				D244536B12426F00009BBCE0 /* minidump.cc in Sources */,
+				D244536C12426F00009BBCE0 /* pathname_stripper.cc in Sources */,
+				D244536D12426F00009BBCE0 /* basic_code_modules.cc in Sources */,
+				D2F9A4E112133AE2002747C1 /* crash_generation_client.cc in Sources */,
+				D2F9A4E212133AE2002747C1 /* crash_generation_server.cc in Sources */,
+				D24BBD321212CACF00F3D417 /* MachIPC.mm in Sources */,
+				D2A5DD411188642E00081F03 /* breakpad_nlist_64.cc in Sources */,
+				F93DE3350F82C66B00608B94 /* dynamic_images.cc in Sources */,
+				F93DE3360F82C66B00608B94 /* exception_handler.cc in Sources */,
+				F93DE3370F82C66B00608B94 /* minidump_generator.cc in Sources */,
+				F93DE3380F82C66B00608B94 /* minidump_file_writer.cc in Sources */,
+				F93DE3390F82C66B00608B94 /* convert_UTF.c in Sources */,
+				F93DE33A0F82C66B00608B94 /* string_conversion.cc in Sources */,
+				F93DE33B0F82C66B00608B94 /* file_id.cc in Sources */,
+				F93DE33C0F82C66B00608B94 /* macho_id.cc in Sources */,
+				F93DE33D0F82C66B00608B94 /* macho_utilities.cc in Sources */,
+				F93DE33E0F82C66B00608B94 /* macho_walker.cc in Sources */,
+				F93DE33F0F82C66B00608B94 /* string_utilities.cc in Sources */,
+				D2F9A3D51212F87C002747C1 /* exception_handler_test.cc in Sources */,
+				D244540B12439BA0009BBCE0 /* memory_unittest.cc in Sources */,
+				4D72CA3813DFAE91006CABE3 /* md5.cc in Sources */,
+				4D61A26E14F43D45002D5862 /* bootstrap_compat.cc in Sources */,
+				1EEEB6271720831E00F7E689 /* BreakpadFramework_Test.mm in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		F9C44DA20EF060A8003AEBAA /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F9C44DB20EF07288003AEBAA /* Controller.m in Sources */,
+				F9C44DB60EF07288003AEBAA /* main.m in Sources */,
+				F9C44DB70EF07288003AEBAA /* TestClass.mm in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		F9C77DD60F7DD5CF0045F7DB /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F9C77E130F7DDF810045F7DB /* GTMSenTestCase.m in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXTargetDependency section */
+		8B31023911F0CF0600FCF3E4 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			name = all_unittests;
+			targetProxy = 8B31023811F0CF0600FCF3E4 /* PBXContainerItemProxy */;
+		};
+		8B31051711F1010E00FCF3E4 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = F93803BD0F80820F004D428B /* generator_test */;
+			targetProxy = 8B31051611F1010E00FCF3E4 /* PBXContainerItemProxy */;
+		};
+		8B31051911F1010E00FCF3E4 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = F93DE2D00F82A67300608B94 /* minidump_file_writer_unittest */;
+			targetProxy = 8B31051811F1010E00FCF3E4 /* PBXContainerItemProxy */;
+		};
+		8B31051B11F1010E00FCF3E4 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = F93DE32B0F82C55600608B94 /* handler_test */;
+			targetProxy = 8B31051A11F1010E00FCF3E4 /* PBXContainerItemProxy */;
+		};
+		8B31051D11F1010E00FCF3E4 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			name = macho_dump;
+			targetProxy = 8B31051C11F1010E00FCF3E4 /* PBXContainerItemProxy */;
+		};
+		8B31051F11F1010E00FCF3E4 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			name = minidump_upload;
+			targetProxy = 8B31051E11F1010E00FCF3E4 /* PBXContainerItemProxy */;
+		};
+		D23F4B3012A7E16200686C8D /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = D2F9A41412131EF0002747C1 /* gtest */;
+			targetProxy = D23F4B2F12A7E16200686C8D /* PBXContainerItemProxy */;
+		};
+		D23F4BBA12A8694C00686C8D /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = D23F4BAA12A868A500686C8D /* minidump_generator_test_helper */;
+			targetProxy = D23F4BB912A8694C00686C8D /* PBXContainerItemProxy */;
+		};
+		D2F9A44312131F80002747C1 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = D2F9A41412131EF0002747C1 /* gtest */;
+			targetProxy = D2F9A44212131F80002747C1 /* PBXContainerItemProxy */;
+		};
+		D2F9A52B121383A1002747C1 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = D2F9A41412131EF0002747C1 /* gtest */;
+			targetProxy = D2F9A52C121383A1002747C1 /* PBXContainerItemProxy */;
+		};
+		D2F9A5DF12142A6A002747C1 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = D2F9A52A121383A1002747C1 /* crash_generation_server_test */;
+			targetProxy = D2F9A5DE12142A6A002747C1 /* PBXContainerItemProxy */;
+		};
+		F91AF6380FD60A74009D8BE2 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = 8DC2EF4F0486A6940098B216 /* Breakpad */;
+			targetProxy = F91AF6370FD60A74009D8BE2 /* PBXContainerItemProxy */;
+		};
+		F92C564E0ECD10E5009BE4BA /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = F92C563B0ECD10B3009BE4BA /* breakpadUtilities */;
+			targetProxy = F92C564D0ECD10E5009BE4BA /* PBXContainerItemProxy */;
+		};
+		F92C56860ECD15EF009BE4BA /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = F92C563B0ECD10B3009BE4BA /* breakpadUtilities */;
+			targetProxy = F92C56850ECD15EF009BE4BA /* PBXContainerItemProxy */;
+		};
+		F92C56880ECD15F1009BE4BA /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = F92C53530ECCE349009BE4BA /* Inspector */;
+			targetProxy = F92C56870ECD15F1009BE4BA /* PBXContainerItemProxy */;
+		};
+		F93DE2FC0F82C3C600608B94 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = F93803BD0F80820F004D428B /* generator_test */;
+			targetProxy = F93DE2FB0F82C3C600608B94 /* PBXContainerItemProxy */;
+		};
+		F93DE3700F82CC1300608B94 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = F93DE32B0F82C55600608B94 /* handler_test */;
+			targetProxy = F93DE36F0F82CC1300608B94 /* PBXContainerItemProxy */;
+		};
+		F93DE3A70F830D1D00608B94 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = F9C77DD90F7DD5CF0045F7DB /* UnitTests */;
+			targetProxy = F93DE3A60F830D1D00608B94 /* PBXContainerItemProxy */;
+		};
+		F94585880F78232B009A47BF /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = 8DC2EF4F0486A6940098B216 /* Breakpad */;
+			targetProxy = F94585870F78232B009A47BF /* PBXContainerItemProxy */;
+		};
+		F945858A0F78232E009A47BF /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = F92C53530ECCE349009BE4BA /* Inspector */;
+			targetProxy = F94585890F78232E009A47BF /* PBXContainerItemProxy */;
+		};
+		F945858C0F782330009A47BF /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = F92C563B0ECD10B3009BE4BA /* breakpadUtilities */;
+			targetProxy = F945858B0F782330009A47BF /* PBXContainerItemProxy */;
+		};
+		F945858E0F782333009A47BF /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = F92C569F0ECE04A7009BE4BA /* crash_report_sender */;
+			targetProxy = F945858D0F782333009A47BF /* PBXContainerItemProxy */;
+		};
+		F94585900F782336009A47BF /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = F9C44DA40EF060A8003AEBAA /* BreakpadTest */;
+			targetProxy = F945858F0F782336009A47BF /* PBXContainerItemProxy */;
+		};
+		F95BB8B3101F94D300AA053B /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			name = dump_syms;
+			targetProxy = F95BB8B2101F94D300AA053B /* PBXContainerItemProxy */;
+		};
+		F95BB8B5101F94D300AA053B /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			name = symupload;
+			targetProxy = F95BB8B4101F94D300AA053B /* PBXContainerItemProxy */;
+		};
+		F95BB8B7101F94D300AA053B /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			name = crash_report;
+			targetProxy = F95BB8B6101F94D300AA053B /* PBXContainerItemProxy */;
+		};
+		F9C44E1A0EF0790F003AEBAA /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = 8DC2EF4F0486A6940098B216 /* Breakpad */;
+			targetProxy = F9C44E190EF0790F003AEBAA /* PBXContainerItemProxy */;
+		};
+		F9C44E970EF09F4B003AEBAA /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = F92C569F0ECE04A7009BE4BA /* crash_report_sender */;
+			targetProxy = F9C44E960EF09F4B003AEBAA /* PBXContainerItemProxy */;
+		};
+/* End PBXTargetDependency section */
+
+/* Begin PBXVariantGroup section */
+		33880C7E0F9E097100817F82 /* InfoPlist.strings */ = {
+			isa = PBXVariantGroup;
+			children = (
+				33880C7F0F9E097100817F82 /* English */,
+				DE43468711C7295D004F095F /* da */,
+				DE43468611C72958004F095F /* de */,
+				DE43468811C7295F004F095F /* es */,
+				DE43468911C72964004F095F /* fr */,
+				DE43468A11C72967004F095F /* it */,
+				DE43468B11C7296B004F095F /* ja */,
+				DE43468C11C7296D004F095F /* nl */,
+				DE43468D11C7296F004F095F /* no */,
+				DE43468E11C72971004F095F /* sl */,
+				DE43468F11C72973004F095F /* sv */,
+				DE43469011C72976004F095F /* tr */,
+			);
+			name = InfoPlist.strings;
+			sourceTree = "<group>";
+		};
+		F945849C0F280E3C009A47BF /* Localizable.strings */ = {
+			isa = PBXVariantGroup;
+			children = (
+				F945849D0F280E3C009A47BF /* English */,
+				DE43467411C72855004F095F /* da */,
+				DE43467511C72857004F095F /* de */,
+				DE43467611C7285B004F095F /* es */,
+				DE43467711C72862004F095F /* fr */,
+				DE43467811C72869004F095F /* it */,
+				DE43467E11C728DC004F095F /* ja */,
+				DE43467911C7286D004F095F /* nl */,
+				DE43467A11C72873004F095F /* no */,
+				DE43467B11C72877004F095F /* sl */,
+				DE43467C11C7287A004F095F /* sv */,
+				DE43467F11C728E1004F095F /* tr */,
+			);
+			name = Localizable.strings;
+			sourceTree = "<group>";
+		};
+		F9C44DB80EF072A0003AEBAA /* InfoPlist.strings */ = {
+			isa = PBXVariantGroup;
+			children = (
+				F9C44DB90EF072A0003AEBAA /* English */,
+			);
+			name = InfoPlist.strings;
+			sourceTree = "<group>";
+		};
+		F9C44DBA0EF072A0003AEBAA /* MainMenu.xib */ = {
+			isa = PBXVariantGroup;
+			children = (
+				F9C44DBB0EF072A0003AEBAA /* English */,
+			);
+			name = MainMenu.xib;
+			sourceTree = "<group>";
+		};
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+		1DEB91AE08733DA50010E9CD /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				DYLIB_COMPATIBILITY_VERSION = 1;
+				DYLIB_CURRENT_VERSION = 1;
+				FRAMEWORK_VERSION = A;
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = Framework/Breakpad_Prefix.pch;
+				HEADER_SEARCH_PATHS = ../..;
+				INFOPLIST_FILE = Framework/Info.plist;
+				INSTALL_PATH = "@executable_path/../Frameworks";
+				PRODUCT_NAME = Breakpad;
+				WRAPPER_EXTENSION = framework;
+			};
+			name = Debug;
+		};
+		1DEB91AF08733DA50010E9CD /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				DYLIB_COMPATIBILITY_VERSION = 1;
+				DYLIB_CURRENT_VERSION = 1;
+				FRAMEWORK_VERSION = A;
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = Framework/Breakpad_Prefix.pch;
+				HEADER_SEARCH_PATHS = ../..;
+				INFOPLIST_FILE = Framework/Info.plist;
+				INSTALL_PATH = "@executable_path/../Frameworks";
+				PRODUCT_NAME = Breakpad;
+				WRAPPER_EXTENSION = framework;
+			};
+			name = Release;
+		};
+		1DEB91B208733DA50010E9CD /* Debug */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 8B31027711F0D3AF00FCF3E4 /* BreakpadDebug.xcconfig */;
+			buildSettings = {
+				GCC_TREAT_WARNINGS_AS_ERRORS = NO;
+				SDKROOT = macosx10.5;
+			};
+			name = Debug;
+		};
+		1DEB91B308733DA50010E9CD /* Release */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 8B31027811F0D3AF00FCF3E4 /* BreakpadRelease.xcconfig */;
+			buildSettings = {
+				GCC_TREAT_WARNINGS_AS_ERRORS = NO;
+			};
+			name = Release;
+		};
+		D23F4BAD12A868A600686C8D /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				COPY_PHASE_STRIP = NO;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_ENABLE_FIX_AND_CONTINUE = YES;
+				GCC_MODEL_TUNING = G5;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				HEADER_SEARCH_PATHS = ../..;
+				INSTALL_PATH = /usr/local/bin;
+				PREBINDING = NO;
+				PRODUCT_NAME = minidump_generator_test_helper;
+			};
+			name = Debug;
+		};
+		D23F4BAE12A868A600686C8D /* Debug With Code Coverage */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				GCC_ENABLE_FIX_AND_CONTINUE = YES;
+				GCC_MODEL_TUNING = G5;
+				HEADER_SEARCH_PATHS = ../..;
+				INSTALL_PATH = /usr/local/bin;
+				PREBINDING = NO;
+				PRODUCT_NAME = minidump_generator_test_helper;
+			};
+			name = "Debug With Code Coverage";
+		};
+		D23F4BAF12A868A600686C8D /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				COPY_PHASE_STRIP = YES;
+				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+				GCC_ENABLE_FIX_AND_CONTINUE = NO;
+				GCC_MODEL_TUNING = G5;
+				HEADER_SEARCH_PATHS = ../..;
+				INSTALL_PATH = /usr/local/bin;
+				PREBINDING = NO;
+				PRODUCT_NAME = minidump_generator_test_helper;
+				ZERO_LINK = NO;
+			};
+			name = Release;
+		};
+		D2F9A41612131EF0002747C1 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				COPY_PHASE_STRIP = NO;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				HEADER_SEARCH_PATHS = (
+					"$(inherited)",
+					../../testing,
+					../../testing/include,
+					../../testing/gtest,
+					../../testing/gtest/include,
+				);
+				PREBINDING = NO;
+				PRODUCT_NAME = gtest;
+			};
+			name = Debug;
+		};
+		D2F9A41712131EF0002747C1 /* Debug With Code Coverage */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				HEADER_SEARCH_PATHS = (
+					"$(inherited)",
+					../../testing,
+					../../testing/include,
+					../../testing/gtest,
+					../../testing/gtest/include,
+				);
+				PREBINDING = NO;
+				PRODUCT_NAME = gtest;
+			};
+			name = "Debug With Code Coverage";
+		};
+		D2F9A41812131EF0002747C1 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				COPY_PHASE_STRIP = YES;
+				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+				GCC_ENABLE_FIX_AND_CONTINUE = NO;
+				HEADER_SEARCH_PATHS = (
+					"$(inherited)",
+					../../testing,
+					../../testing/include,
+					../../testing/gtest,
+					../../testing/gtest/include,
+				);
+				PREBINDING = NO;
+				PRODUCT_NAME = gtest;
+				ZERO_LINK = NO;
+			};
+			name = Release;
+		};
+		D2F9A543121383A1002747C1 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				DEBUG_INFORMATION_FORMAT = dwarf;
+				GCC_INLINES_ARE_PRIVATE_EXTERN = NO;
+				GCC_PREPROCESSOR_DEFINITIONS = "BP_LOGGING_INCLUDE=\\\"client/mac/tests/testlogging.h\\\"";
+				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+				HEADER_SEARCH_PATHS = (
+					../..,
+					../../testing,
+					../../testing/include,
+					../../testing/gtest,
+					../../testing/gtest/include,
+				);
+				LIBRARY_SEARCH_PATHS = (
+					"$(inherited)",
+					"\"$(SRCROOT)/build/Debug\"",
+				);
+				PRODUCT_NAME = crash_generation_server_test;
+			};
+			name = Debug;
+		};
+		D2F9A544121383A1002747C1 /* Debug With Code Coverage */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = (
+					../..,
+					../../testing,
+					../../testing/include,
+					../../testing/gtest,
+					../../testing/gtest/include,
+				);
+				LIBRARY_SEARCH_PATHS = (
+					"$(inherited)",
+					"\\\"$(SRCROOT)/build/Debug\\\"",
+				);
+				PRODUCT_NAME = crash_generation_server_test;
+			};
+			name = "Debug With Code Coverage";
+		};
+		D2F9A545121383A1002747C1 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = (
+					../..,
+					../../testing,
+					../../testing/include,
+					../../testing/gtest,
+					../../testing/gtest/include,
+				);
+				LIBRARY_SEARCH_PATHS = (
+					"$(inherited)",
+					"\\\"$(SRCROOT)/build/Debug\\\"",
+				);
+				PRODUCT_NAME = crash_generation_server_test;
+			};
+			name = Release;
+		};
+		F92C53560ECCE34A009BE4BA /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = ../..;
+				PRODUCT_NAME = Inspector;
+			};
+			name = Debug;
+		};
+		F92C53570ECCE34A009BE4BA /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = ../..;
+				PRODUCT_NAME = Inspector;
+			};
+			name = Release;
+		};
+		F92C563D0ECD10B3009BE4BA /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				DYLIB_COMPATIBILITY_VERSION = 1;
+				DYLIB_CURRENT_VERSION = 1;
+				HEADER_SEARCH_PATHS = ../..;
+				LD_DYLIB_INSTALL_NAME = "@executable_path/../Resources/$(EXECUTABLE_PATH)";
+				OTHER_LDFLAGS = (
+					"$(inherited)",
+					"-headerpad_max_install_names",
+				);
+				PRODUCT_NAME = breakpadUtilities;
+			};
+			name = Debug;
+		};
+		F92C563E0ECD10B3009BE4BA /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				DYLIB_COMPATIBILITY_VERSION = 1;
+				DYLIB_CURRENT_VERSION = 1;
+				HEADER_SEARCH_PATHS = ../..;
+				LD_DYLIB_INSTALL_NAME = "@executable_path/../Resources/$(EXECUTABLE_PATH)";
+				OTHER_LDFLAGS = (
+					"$(inherited)",
+					"-headerpad_max_install_names",
+				);
+				PRODUCT_NAME = breakpadUtilities;
+			};
+			name = Release;
+		};
+		F92C56A30ECE04A8009BE4BA /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = ../..;
+				INFOPLIST_FILE = "sender/crash_report_sender-Info.plist";
+				PRODUCT_NAME = crash_report_sender;
+			};
+			name = Debug;
+		};
+		F92C56A40ECE04A8009BE4BA /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = ../..;
+				INFOPLIST_FILE = "sender/crash_report_sender-Info.plist";
+				PRODUCT_NAME = crash_report_sender;
+			};
+			name = Release;
+		};
+		F93803C00F808210004D428B /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				GCC_PREPROCESSOR_DEFINITIONS = "BP_LOGGING_INCLUDE=\\\"client/mac/tests/testlogging.h\\\"";
+				HEADER_SEARCH_PATHS = (
+					../..,
+					../../..,
+					../../testing,
+					../../testing/include,
+					../../testing/gtest,
+					../../testing/gtest/include,
+				);
+				PRODUCT_NAME = generator_test;
+			};
+			name = Debug;
+		};
+		F93803C10F808210004D428B /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = (
+					../..,
+					../../..,
+					../../testing,
+					../../testing/include,
+					../../testing/gtest,
+					../../testing/gtest/include,
+				);
+				PRODUCT_NAME = generator_test;
+			};
+			name = Release;
+		};
+		F93DE2D30F82A67400608B94 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = ../..;
+				PRODUCT_NAME = minidump_file_writer_unittest;
+			};
+			name = Debug;
+		};
+		F93DE2D40F82A67400608B94 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = ../..;
+				PRODUCT_NAME = minidump_file_writer_unittest;
+			};
+			name = Release;
+		};
+		F93DE32E0F82C55700608B94 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				DEBUG_INFORMATION_FORMAT = dwarf;
+				GCC_INLINES_ARE_PRIVATE_EXTERN = NO;
+				GCC_PREPROCESSOR_DEFINITIONS = "BP_LOGGING_INCLUDE=\\\"client/mac/tests/testlogging.h\\\"";
+				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+				HEADER_SEARCH_PATHS = (
+					../../..,
+					../..,
+					../../testing,
+					../../testing/include,
+					../../testing/gtest,
+					../../testing/gtest/include,
+				);
+				LIBRARY_SEARCH_PATHS = (
+					"$(inherited)",
+					"\"$(SRCROOT)/build/Debug\"",
+				);
+				PRODUCT_NAME = handler_test;
+			};
+			name = Debug;
+		};
+		F93DE32F0F82C55700608B94 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = (
+					../../..,
+					../..,
+					../../testing,
+					../../testing/include,
+					../../testing/gtest,
+					../../testing/gtest/include,
+				);
+				LIBRARY_SEARCH_PATHS = (
+					"$(inherited)",
+					"\"$(SRCROOT)/build/Debug\"",
+				);
+				PRODUCT_NAME = handler_test;
+			};
+			name = Release;
+		};
+		F93DE3B90F830E7000608B94 /* Debug With Code Coverage */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 8B31027711F0D3AF00FCF3E4 /* BreakpadDebug.xcconfig */;
+			buildSettings = {
+				GCC_TREAT_WARNINGS_AS_ERRORS = NO;
+			};
+			name = "Debug With Code Coverage";
+		};
+		F93DE3BA0F830E7000608B94 /* Debug With Code Coverage */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				DYLIB_COMPATIBILITY_VERSION = 1;
+				DYLIB_CURRENT_VERSION = 1;
+				FRAMEWORK_VERSION = A;
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = Framework/Breakpad_Prefix.pch;
+				HEADER_SEARCH_PATHS = ../..;
+				INFOPLIST_FILE = Framework/Info.plist;
+				INSTALL_PATH = "@executable_path/../Frameworks";
+				PRODUCT_NAME = Breakpad;
+				WRAPPER_EXTENSION = framework;
+			};
+			name = "Debug With Code Coverage";
+		};
+		F93DE3BB0F830E7000608B94 /* Debug With Code Coverage */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = ../..;
+				PRODUCT_NAME = Inspector;
+			};
+			name = "Debug With Code Coverage";
+		};
+		F93DE3BC0F830E7000608B94 /* Debug With Code Coverage */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				DYLIB_COMPATIBILITY_VERSION = 1;
+				DYLIB_CURRENT_VERSION = 1;
+				HEADER_SEARCH_PATHS = ../..;
+				LD_DYLIB_INSTALL_NAME = "@executable_path/../Resources/$(EXECUTABLE_PATH)";
+				OTHER_LDFLAGS = (
+					"$(inherited)",
+					"-headerpad_max_install_names",
+				);
+				PRODUCT_NAME = breakpadUtilities;
+			};
+			name = "Debug With Code Coverage";
+		};
+		F93DE3BD0F830E7000608B94 /* Debug With Code Coverage */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = ../..;
+				INFOPLIST_FILE = "sender/crash_report_sender-Info.plist";
+				PRODUCT_NAME = crash_report_sender;
+			};
+			name = "Debug With Code Coverage";
+		};
+		F93DE3BE0F830E7000608B94 /* Debug With Code Coverage */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				FRAMEWORK_SEARCH_PATHS = "$(SRCROOT)/build/$(CONFIGURATION)";
+				INFOPLIST_FILE = testapp/Info.plist;
+				PRODUCT_NAME = BreakpadTest;
+			};
+			name = "Debug With Code Coverage";
+		};
+		F93DE3BF0F830E7000608B94 /* Debug With Code Coverage */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				PRODUCT_NAME = All;
+			};
+			name = "Debug With Code Coverage";
+		};
+		F93DE3C00F830E7000608B94 /* Debug With Code Coverage */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				FRAMEWORK_SEARCH_PATHS = (
+					"$(inherited)",
+					"\"$(DEVELOPER_FRAMEWORKS_DIR)\"",
+				);
+				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
+				HEADER_SEARCH_PATHS = ../..;
+				INFOPLIST_FILE = "UnitTests-Info.plist";
+				PRODUCT_NAME = UnitTests;
+				WRAPPER_EXTENSION = octest;
+			};
+			name = "Debug With Code Coverage";
+		};
+		F93DE3C10F830E7000608B94 /* Debug With Code Coverage */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = (
+					../..,
+					../../..,
+					../../testing,
+					../../testing/include,
+					../../testing/gtest,
+					../../testing/gtest/include,
+				);
+				PRODUCT_NAME = generator_test;
+			};
+			name = "Debug With Code Coverage";
+		};
+		F93DE3C20F830E7000608B94 /* Debug With Code Coverage */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = ../..;
+				PRODUCT_NAME = minidump_file_writer_unittest;
+			};
+			name = "Debug With Code Coverage";
+		};
+		F93DE3C30F830E7000608B94 /* Debug With Code Coverage */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = (
+					../../..,
+					../..,
+					../../testing,
+					../../testing/include,
+					../../testing/gtest,
+					../../testing/gtest/include,
+				);
+				LIBRARY_SEARCH_PATHS = (
+					"$(inherited)",
+					"\"$(SRCROOT)/build/Debug\"",
+				);
+				PRODUCT_NAME = handler_test;
+			};
+			name = "Debug With Code Coverage";
+		};
+		F94585850F782326009A47BF /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				PRODUCT_NAME = All;
+			};
+			name = Debug;
+		};
+		F94585860F782326009A47BF /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				PRODUCT_NAME = All;
+			};
+			name = Release;
+		};
+		F9C44DA80EF060A8003AEBAA /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				FRAMEWORK_SEARCH_PATHS = "$(SRCROOT)/build/$(CONFIGURATION)";
+				INFOPLIST_FILE = testapp/Info.plist;
+				PRODUCT_NAME = BreakpadTest;
+			};
+			name = Debug;
+		};
+		F9C44DA90EF060A8003AEBAA /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				FRAMEWORK_SEARCH_PATHS = "$(SRCROOT)/build/$(CONFIGURATION)";
+				INFOPLIST_FILE = testapp/Info.plist;
+				PRODUCT_NAME = BreakpadTest;
+			};
+			name = Release;
+		};
+		F9C77DDC0F7DD5D00045F7DB /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				FRAMEWORK_SEARCH_PATHS = (
+					"$(inherited)",
+					"\"$(DEVELOPER_FRAMEWORKS_DIR)\"",
+				);
+				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
+				INFOPLIST_FILE = "UnitTests-Info.plist";
+				PRODUCT_NAME = UnitTests;
+				WRAPPER_EXTENSION = octest;
+			};
+			name = Debug;
+		};
+		F9C77DDD0F7DD5D00045F7DB /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				FRAMEWORK_SEARCH_PATHS = (
+					"$(inherited)",
+					"\"$(DEVELOPER_FRAMEWORKS_DIR)\"",
+				);
+				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
+				INFOPLIST_FILE = "UnitTests-Info.plist";
+				PRODUCT_NAME = UnitTests;
+				WRAPPER_EXTENSION = octest;
+			};
+			name = Release;
+		};
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+		1DEB91AD08733DA50010E9CD /* Build configuration list for PBXNativeTarget "Breakpad" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				1DEB91AE08733DA50010E9CD /* Debug */,
+				F93DE3BA0F830E7000608B94 /* Debug With Code Coverage */,
+				1DEB91AF08733DA50010E9CD /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		1DEB91B108733DA50010E9CD /* Build configuration list for PBXProject "Breakpad" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				1DEB91B208733DA50010E9CD /* Debug */,
+				F93DE3B90F830E7000608B94 /* Debug With Code Coverage */,
+				1DEB91B308733DA50010E9CD /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		D23F4BB012A868C400686C8D /* Build configuration list for PBXNativeTarget "minidump_generator_test_helper" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				D23F4BAD12A868A600686C8D /* Debug */,
+				D23F4BAE12A868A600686C8D /* Debug With Code Coverage */,
+				D23F4BAF12A868A600686C8D /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		D2F9A42D12131F0E002747C1 /* Build configuration list for PBXNativeTarget "gtest" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				D2F9A41612131EF0002747C1 /* Debug */,
+				D2F9A41712131EF0002747C1 /* Debug With Code Coverage */,
+				D2F9A41812131EF0002747C1 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		D2F9A542121383A1002747C1 /* Build configuration list for PBXNativeTarget "crash_generation_server_test" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				D2F9A543121383A1002747C1 /* Debug */,
+				D2F9A544121383A1002747C1 /* Debug With Code Coverage */,
+				D2F9A545121383A1002747C1 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		F92C53580ECCE36D009BE4BA /* Build configuration list for PBXNativeTarget "Inspector" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				F92C53560ECCE34A009BE4BA /* Debug */,
+				F93DE3BB0F830E7000608B94 /* Debug With Code Coverage */,
+				F92C53570ECCE34A009BE4BA /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		F92C56670ECD11A3009BE4BA /* Build configuration list for PBXNativeTarget "breakpadUtilities" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				F92C563D0ECD10B3009BE4BA /* Debug */,
+				F93DE3BC0F830E7000608B94 /* Debug With Code Coverage */,
+				F92C563E0ECD10B3009BE4BA /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		F92C56A50ECE04A8009BE4BA /* Build configuration list for PBXNativeTarget "crash_report_sender" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				F92C56A30ECE04A8009BE4BA /* Debug */,
+				F93DE3BD0F830E7000608B94 /* Debug With Code Coverage */,
+				F92C56A40ECE04A8009BE4BA /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		F93803C40F80822E004D428B /* Build configuration list for PBXNativeTarget "generator_test" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				F93803C00F808210004D428B /* Debug */,
+				F93DE3C10F830E7000608B94 /* Debug With Code Coverage */,
+				F93803C10F808210004D428B /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		F93DE2D60F82A67700608B94 /* Build configuration list for PBXNativeTarget "minidump_file_writer_unittest" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				F93DE2D30F82A67400608B94 /* Debug */,
+				F93DE3C20F830E7000608B94 /* Debug With Code Coverage */,
+				F93DE2D40F82A67400608B94 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		F93DE3320F82C5D800608B94 /* Build configuration list for PBXNativeTarget "handler_test" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				F93DE32E0F82C55700608B94 /* Debug */,
+				F93DE3C30F830E7000608B94 /* Debug With Code Coverage */,
+				F93DE32F0F82C55700608B94 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		F94585930F78235C009A47BF /* Build configuration list for PBXAggregateTarget "All" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				F94585850F782326009A47BF /* Debug */,
+				F93DE3BF0F830E7000608B94 /* Debug With Code Coverage */,
+				F94585860F782326009A47BF /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		F9C44DAA0EF060A9003AEBAA /* Build configuration list for PBXNativeTarget "BreakpadTest" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				F9C44DA80EF060A8003AEBAA /* Debug */,
+				F93DE3BE0F830E7000608B94 /* Debug With Code Coverage */,
+				F9C44DA90EF060A8003AEBAA /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		F9C77DDE0F7DD5D00045F7DB /* Build configuration list for PBXNativeTarget "UnitTests" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				F9C77DDC0F7DD5D00045F7DB /* Debug */,
+				F93DE3C00F830E7000608B94 /* Debug With Code Coverage */,
+				F9C77DDD0F7DD5D00045F7DB /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+/* End XCConfigurationList section */
+	};
+	rootObject = 0867D690FE84028FC02AAC07 /* Project object */;
+}
diff --git a/google-breakpad/src/client/mac/Framework/Breakpad.h b/google-breakpad/src/client/mac/Framework/Breakpad.h
new file mode 100644
index 0000000..dc7e45d
--- /dev/null
+++ b/google-breakpad/src/client/mac/Framework/Breakpad.h
@@ -0,0 +1,285 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Framework to provide a simple C API to crash reporting for
+// applications.  By default, if any machine-level exception (e.g.,
+// EXC_BAD_ACCESS) occurs, it will be handled by the BreakpadRef
+// object as follows:
+//
+// 1. Create a minidump file (see Breakpad for details)
+// 2. Prompt the user (using CFUserNotification)
+// 3. Invoke a command line reporting tool to send the minidump to a
+//    server
+//
+// By specifying parameters to the BreakpadCreate function, you can
+// modify the default behavior to suit your needs and wants and
+// desires.
+
+// A service name associated with the original bootstrap parent port, saved in
+// OnDemandServer and restored in Inspector.
+#define BREAKPAD_BOOTSTRAP_PARENT_PORT    "com.Breakpad.BootstrapParent"
+
+typedef void *BreakpadRef;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <CoreFoundation/CoreFoundation.h>
+#include <Foundation/Foundation.h>
+
+#include "BreakpadDefines.h"
+
+// Optional user-defined function to dec to decide if we should handle
+// this crash or forward it along.
+// Return true if you want Breakpad to handle it.
+// Return false if you want Breakpad to skip it
+// The exception handler always returns false, as if SEND_AND_EXIT were false
+// (which means the next exception handler will take the exception)
+typedef bool (*BreakpadFilterCallback)(int exception_type,
+                                       int exception_code,
+                                       mach_port_t crashing_thread,
+                                       void *context);
+
+// Create a new BreakpadRef object and install it as an exception
+// handler.  The |parameters| will typically be the contents of your
+// bundle's Info.plist.
+//
+// You can also specify these additional keys for customizable behavior:
+// Key:                           Value:
+// BREAKPAD_PRODUCT               Product name (e.g., "MyAwesomeProduct")
+//                                This one is used as the key to identify
+//                                the product when uploading. Falls back to
+//                                CFBundleName if not specified.
+//                                REQUIRED
+//
+// BREAKPAD_PRODUCT_DISPLAY       This is the display name, e.g. a pretty
+//                                name for the product when the crash_sender
+//                                pops up UI for the user. Falls back first to
+//                                CFBundleDisplayName and then to
+//                                BREAKPAD_PRODUCT if not specified.
+//
+// BREAKPAD_VERSION               Product version (e.g., 1.2.3), used
+//                                as metadata for crash report. Falls back to
+//                                CFBundleVersion if not specified.
+//                                REQUIRED
+//
+// BREAKPAD_VENDOR                Vendor name, used in UI (e.g. "A report has
+//                                been created that you can send to <vendor>")
+//
+// BREAKPAD_URL                   URL destination for reporting
+//                                REQUIRED
+//
+// BREAKPAD_REPORT_INTERVAL       # of seconds between sending
+//                                reports.  If an additional report is
+//                                generated within this time, it will
+//                                be ignored.  Default: 3600sec.
+//                                Specify 0 to send all reports.
+//
+// BREAKPAD_SKIP_CONFIRM          If true, the reporter will send the report
+//                                without any user intervention.
+//                                Defaults to NO
+//
+// BREAKPAD_CONFIRM_TIMEOUT       Number of seconds before the upload
+//                                confirmation dialog will be automatically
+//                                dismissed (cancelling the upload).
+//                                Default: 300 seconds (min of 60).
+//                                Specify 0 to prevent timeout.
+//
+// BREAKPAD_SEND_AND_EXIT         If true, the handler will exit after sending.
+//                                This will prevent any other handler (e.g.,
+//                                CrashReporter) from getting the crash.
+//                                Defaults TO YES
+//
+// BREAKPAD_DUMP_DIRECTORY        The directory to store crash-dumps
+//                                in. By default, we use
+//                                ~/Library/Breakpad/<BREAKPAD_PRODUCT>
+//                                The path you specify here is tilde-expanded.
+//
+// BREAKPAD_INSPECTOR_LOCATION    The full path to the Inspector executable.
+//                                Defaults to <Framework resources>/Inspector
+//
+// BREAKPAD_REPORTER_EXE_LOCATION The full path to the Reporter/sender
+//                                executable.
+//                                Default:
+//                                <Framework Resources>/crash_report_sender.app
+//
+// BREAKPAD_LOGFILES              Indicates an array of log file paths that
+//                                should be uploaded at crash time.
+//
+// BREAKPAD_REQUEST_COMMENTS      If true, the message dialog will have a
+//                                text box for the user to enter comments.
+//                                Default: NO
+//
+// BREAKPAD_REQUEST_EMAIL         If true and BREAKPAD_REQUEST_COMMENTS is also
+//                                true, the message dialog will have a text
+//                                box for the user to enter their email address.
+//                                Default: NO
+//
+// BREAKPAD_SERVER_TYPE           A parameter that tells Breakpad how to
+//                                rewrite the upload parameters for a specific
+//                                server type.  The currently valid values are
+//                                'socorro' or 'google'.  If you want to add
+//                                other types, see the function in
+//                                crash_report_sender.m that maps parameters to
+//                                URL parameters.  Defaults to 'google'.
+//
+// BREAKPAD_SERVER_PARAMETER_DICT A plist dictionary of static
+//                                parameters that are uploaded to the
+//                                server.  The parameters are sent as
+//                                is to the crash server.  Their
+//                                content isn't added to the minidump
+//                                but pass as URL parameters when
+//                                uploading theminidump to the crash
+//                                server.
+//
+// BREAKPAD_IN_PROCESS            A boolean NSNumber value. If YES, Breakpad
+//                                will write the dump file in-process and then
+//                                launch the reporter executable as a child
+//                                process.
+//=============================================================================
+// The BREAKPAD_PRODUCT, BREAKPAD_VERSION and BREAKPAD_URL are
+// required to have non-NULL values.  By default, the BREAKPAD_PRODUCT
+// will be the CFBundleName and the BREAKPAD_VERSION will be the
+// CFBundleVersion when these keys are present in the bundle's
+// Info.plist, which is usually passed in to BreakpadCreate() as an
+// NSDictionary (you could also pass in another dictionary that had
+// the same keys configured).  If the BREAKPAD_PRODUCT or
+// BREAKPAD_VERSION are ultimately undefined, BreakpadCreate() will
+// fail.  You have been warned.
+//
+// If you are running in a debugger, Breakpad will not install, unless the
+// BREAKPAD_IGNORE_DEBUGGER envionment variable is set and/or non-zero.
+//
+// The BREAKPAD_SKIP_CONFIRM and BREAKPAD_SEND_AND_EXIT default
+// values are NO and YES.  However, they can be controlled by setting their
+// values in a user or global plist.
+//
+// It's easiest to use Breakpad via the Framework, but if you're compiling the
+// code in directly, BREAKPAD_INSPECTOR_LOCATION and
+// BREAKPAD_REPORTER_EXE_LOCATION allow you to specify custom paths
+// to the helper executables.
+//
+//=============================================================================
+// The following are NOT user-supplied but are documented here for
+// completeness.  They are calculated by Breakpad during initialization &
+// crash-dump generation, or entered in by the user.
+//
+// BREAKPAD_PROCESS_START_TIME       The time, in seconds since the Epoch, the
+//                                   process started
+//
+// BREAKPAD_PROCESS_CRASH_TIME       The time, in seconds since the Epoch, the
+//                                   process crashed.
+//
+// BREAKPAD_PROCESS_UP_TIME          The total time in milliseconds the process
+//                                   has been running.  This parameter is not
+//                                   set until the crash-dump-generation phase.
+//
+// BREAKPAD_LOGFILE_KEY_PREFIX       Used to find out which parameters in the
+//                                   parameter dictionary correspond to log
+//                                   file paths.
+//
+// BREAKPAD_SERVER_PARAMETER_PREFIX  This prefix is used by Breakpad
+//                                   internally, because Breakpad uses
+//                                   the same dictionary internally to
+//                                   track both its internal
+//                                   configuration parameters and
+//                                   parameters meant to be uploaded
+//                                   to the server.  This string is
+//                                   used internally by Breakpad to
+//                                   prefix user-supplied parameter
+//                                   names so those can be sent to the
+//                                   server without leaking Breakpad's
+//                                   internal values.
+//
+// BREAKPAD_ON_DEMAND                Used internally to indicate to the
+//                                   Reporter that we're sending on-demand,
+//                                   not as result of a crash.
+//
+// BREAKPAD_COMMENTS                 The text the user provided as comments.
+//                                   Only used in crash_report_sender.
+
+// Returns a new BreakpadRef object on success, NULL otherwise.
+BreakpadRef BreakpadCreate(NSDictionary *parameters);
+
+// Uninstall and release the data associated with |ref|.
+void BreakpadRelease(BreakpadRef ref);
+
+// Clients may set an optional callback which gets called when a crash
+// occurs.  The callback function should return |true| if we should
+// handle the crash, generate a crash report, etc. or |false| if we
+// should ignore it and forward the crash (normally to CrashReporter).
+// Context is a pointer to arbitrary data to make the callback with.
+void BreakpadSetFilterCallback(BreakpadRef ref,
+                               BreakpadFilterCallback callback,
+                               void *context);
+
+// User defined key and value string storage.  Generally this is used
+// to configure Breakpad's internal operation, such as whether the
+// crash_sender should prompt the user, or the filesystem location for
+// the minidump file.  See Breakpad.h for some parameters that can be
+// set.  Anything longer than 255 bytes will be truncated. Note that
+// the string is converted to UTF8 before truncation, so any multibyte
+// character that straddles the 255(256 - 1 for terminator) byte limit
+// will be mangled.
+//
+// A maximum number of 64 key/value pairs are supported.  An assert()
+// will fire if more than this number are set.  Unfortunately, right
+// now, the same dictionary is used for both Breakpad's parameters AND
+// the Upload parameters.
+//
+// TODO (nealsid): Investigate how necessary this is if we don't
+// automatically upload parameters to the server anymore.
+// TODO (nealsid): separate server parameter dictionary from the
+// dictionary used to configure Breakpad, and document limits for each
+// independently.
+void BreakpadSetKeyValue(BreakpadRef ref, NSString *key, NSString *value);
+NSString *BreakpadKeyValue(BreakpadRef ref, NSString *key);
+void BreakpadRemoveKeyValue(BreakpadRef ref, NSString *key);
+
+// You can use this method to specify parameters that will be uploaded
+// to the crash server.  They will be automatically encoded as
+// necessary.  Note that as mentioned above there are limits on both
+// the number of keys and their length.
+void BreakpadAddUploadParameter(BreakpadRef ref, NSString *key,
+                                NSString *value);
+
+// This method will remove a previously-added parameter from the
+// upload parameter set.
+void BreakpadRemoveUploadParameter(BreakpadRef ref, NSString *key);
+
+// Add a log file for Breakpad to read and send upon crash dump
+void BreakpadAddLogFile(BreakpadRef ref, NSString *logPathname);
+
+// Generate a minidump and send
+void BreakpadGenerateAndSendReport(BreakpadRef ref);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/google-breakpad/src/client/mac/Framework/Breakpad.mm b/google-breakpad/src/client/mac/Framework/Breakpad.mm
new file mode 100644
index 0000000..1d2e519
--- /dev/null
+++ b/google-breakpad/src/client/mac/Framework/Breakpad.mm
@@ -0,0 +1,1043 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+
+
+#define IGNORE_DEBUGGER "BREAKPAD_IGNORE_DEBUGGER"
+
+#import "client/mac/Framework/Breakpad.h"
+
+#include <assert.h>
+#import <Foundation/Foundation.h>
+#include <pthread.h>
+#include <sys/stat.h>
+#include <sys/sysctl.h>
+
+#import "client/mac/crash_generation/Inspector.h"
+#import "client/mac/handler/exception_handler.h"
+#import "client/mac/Framework/Breakpad.h"
+#import "client/mac/Framework/OnDemandServer.h"
+#import "client/mac/handler/protected_memory_allocator.h"
+#include "common/mac/launch_reporter.h"
+#import "common/mac/MachIPC.h"
+#import "common/simple_string_dictionary.h"
+
+#if !defined(__EXCEPTIONS) || (__clang__ && !__has_feature(cxx_exceptions))
+// This file uses C++ try/catch (but shouldn't). Duplicate the macros from
+// <c++/4.2.1/exception_defines.h> allowing this file to work properly with
+// exceptions disabled even when other C++ libraries are used. #undef the try
+// and catch macros first in case libstdc++ is in use and has already provided
+// its own definitions.
+#undef try
+#define try       if (true)
+#undef catch
+#define catch(X)  if (false)
+#endif  // __EXCEPTIONS
+
+using google_breakpad::MachPortSender;
+using google_breakpad::MachReceiveMessage;
+using google_breakpad::MachSendMessage;
+using google_breakpad::ReceivePort;
+using google_breakpad::SimpleStringDictionary;
+
+//=============================================================================
+// We want any memory allocations which are used by breakpad during the
+// exception handling process (after a crash has happened) to be read-only
+// to prevent them from being smashed before a crash occurs.  Unfortunately
+// we cannot protect against smashes to our exception handling thread's
+// stack.
+//
+// NOTE: Any memory allocations which are not used during the exception
+// handling process may be allocated in the normal ways.
+//
+// The ProtectedMemoryAllocator class provides an Allocate() method which
+// we'll using in conjunction with placement operator new() to control
+// allocation of C++ objects.  Note that we don't use operator delete()
+// but instead call the objects destructor directly:  object->~ClassName();
+//
+ProtectedMemoryAllocator *gMasterAllocator = NULL;
+ProtectedMemoryAllocator *gKeyValueAllocator = NULL;
+ProtectedMemoryAllocator *gBreakpadAllocator = NULL;
+
+// Mutex for thread-safe access to the key/value dictionary used by breakpad.
+// It's a global instead of an instance variable of Breakpad
+// since it can't live in a protected memory area.
+pthread_mutex_t gDictionaryMutex;
+
+//=============================================================================
+// Stack-based object for thread-safe access to a memory-protected region.
+// It's assumed that normally the memory block (allocated by the allocator)
+// is protected (read-only).  Creating a stack-based instance of
+// ProtectedMemoryLocker will unprotect this block after taking the lock.
+// Its destructor will first re-protect the memory then release the lock.
+class ProtectedMemoryLocker {
+ public:
+  ProtectedMemoryLocker(pthread_mutex_t *mutex,
+                        ProtectedMemoryAllocator *allocator)
+      : mutex_(mutex),
+        allocator_(allocator) {
+    // Lock the mutex
+    __attribute__((unused)) int rv = pthread_mutex_lock(mutex_);
+    assert(rv == 0);
+
+    // Unprotect the memory
+    allocator_->Unprotect();
+  }
+
+  ~ProtectedMemoryLocker() {
+    // First protect the memory
+    allocator_->Protect();
+
+    // Then unlock the mutex
+    __attribute__((unused)) int rv = pthread_mutex_unlock(mutex_);
+    assert(rv == 0);
+  };
+
+ private:
+  ProtectedMemoryLocker();
+  ProtectedMemoryLocker(const ProtectedMemoryLocker&);
+  ProtectedMemoryLocker& operator=(const ProtectedMemoryLocker&);
+
+  pthread_mutex_t           *mutex_;
+  ProtectedMemoryAllocator  *allocator_;
+};
+
+//=============================================================================
+class Breakpad {
+ public:
+  // factory method
+  static Breakpad *Create(NSDictionary *parameters) {
+    // Allocate from our special allocation pool
+    Breakpad *breakpad =
+      new (gBreakpadAllocator->Allocate(sizeof(Breakpad)))
+        Breakpad();
+
+    if (!breakpad)
+      return NULL;
+
+    if (!breakpad->Initialize(parameters)) {
+      // Don't use operator delete() here since we allocated from special pool
+      breakpad->~Breakpad();
+      return NULL;
+    }
+
+    return breakpad;
+  }
+
+  ~Breakpad();
+
+  void SetKeyValue(NSString *key, NSString *value);
+  NSString *KeyValue(NSString *key);
+  void RemoveKeyValue(NSString *key);
+
+  void GenerateAndSendReport();
+
+  void SetFilterCallback(BreakpadFilterCallback callback, void *context) {
+    filter_callback_ = callback;
+    filter_callback_context_ = context;
+  }
+
+ private:
+  Breakpad()
+    : handler_(NULL),
+      config_params_(NULL),
+      send_and_exit_(true),
+      filter_callback_(NULL),
+      filter_callback_context_(NULL) {
+    inspector_path_[0] = 0;
+  }
+
+  bool Initialize(NSDictionary *parameters);
+  bool InitializeInProcess(NSDictionary *parameters);
+  bool InitializeOutOfProcess(NSDictionary *parameters);
+
+  bool ExtractParameters(NSDictionary *parameters);
+
+  // Dispatches to HandleException()
+  static bool ExceptionHandlerDirectCallback(void *context,
+                                             int exception_type,
+                                             int exception_code,
+                                             int exception_subcode,
+                                             mach_port_t crashing_thread);
+
+  bool HandleException(int exception_type,
+                       int exception_code,
+                       int exception_subcode,
+                       mach_port_t crashing_thread);
+
+  // Dispatches to HandleMinidump().
+  // This gets called instead of ExceptionHandlerDirectCallback when running
+  // with the BREAKPAD_IN_PROCESS option.
+  static bool HandleMinidumpCallback(const char *dump_dir,
+                                     const char *minidump_id,
+                                     void *context,
+                                     bool succeeded);
+
+  // This is only used when BREAKPAD_IN_PROCESS is YES.
+  bool HandleMinidump(const char *dump_dir, const char *minidump_id);
+
+  // Since ExceptionHandler (w/o namespace) is defined as typedef in OSX's
+  // MachineExceptions.h, we have to explicitly name the handler.
+  google_breakpad::ExceptionHandler *handler_; // The actual handler (STRONG)
+
+  char                    inspector_path_[PATH_MAX];  // Path to inspector tool
+
+  SimpleStringDictionary  *config_params_; // Create parameters (STRONG)
+
+  OnDemandServer          inspector_;
+
+  bool                    send_and_exit_;  // Exit after sending, if true
+
+  BreakpadFilterCallback  filter_callback_;
+  void                    *filter_callback_context_;
+};
+
+#pragma mark -
+#pragma mark Helper functions
+
+//=============================================================================
+// Helper functions
+
+//=============================================================================
+static BOOL IsDebuggerActive() {
+  BOOL result = NO;
+  NSUserDefaults *stdDefaults = [NSUserDefaults standardUserDefaults];
+
+  // We check both defaults and the environment variable here
+
+  BOOL ignoreDebugger = [stdDefaults boolForKey:@IGNORE_DEBUGGER];
+
+  if (!ignoreDebugger) {
+    char *ignoreDebuggerStr = getenv(IGNORE_DEBUGGER);
+    ignoreDebugger = (ignoreDebuggerStr ? strtol(ignoreDebuggerStr, NULL, 10) : 0) != 0;
+  }
+
+  if (!ignoreDebugger) {
+    pid_t pid = getpid();
+    int mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_PID, pid};
+    int mibSize = sizeof(mib) / sizeof(int);
+    size_t actualSize;
+
+    if (sysctl(mib, mibSize, NULL, &actualSize, NULL, 0) == 0) {
+      struct kinfo_proc *info = (struct kinfo_proc *)malloc(actualSize);
+
+      if (info) {
+        // This comes from looking at the Darwin xnu Kernel
+        if (sysctl(mib, mibSize, info, &actualSize, NULL, 0) == 0)
+          result = (info->kp_proc.p_flag & P_TRACED) ? YES : NO;
+
+        free(info);
+      }
+    }
+  }
+
+  return result;
+}
+
+//=============================================================================
+bool Breakpad::ExceptionHandlerDirectCallback(void *context,
+                                                    int exception_type,
+                                                    int exception_code,
+                                                    int exception_subcode,
+                                                    mach_port_t crashing_thread) {
+  Breakpad *breakpad = (Breakpad *)context;
+
+  // If our context is damaged or something, just return false to indicate that
+  // the handler should continue without us.
+  if (!breakpad)
+    return false;
+
+  return breakpad->HandleException( exception_type,
+                                    exception_code,
+                                    exception_subcode,
+                                    crashing_thread);
+}
+
+//=============================================================================
+bool Breakpad::HandleMinidumpCallback(const char *dump_dir,
+                                      const char *minidump_id,
+                                      void *context,
+                                      bool succeeded) {
+  Breakpad *breakpad = (Breakpad *)context;
+
+  // If our context is damaged or something, just return false to indicate that
+  // the handler should continue without us.
+  if (!breakpad || !succeeded)
+    return false;
+
+  return breakpad->HandleMinidump(dump_dir, minidump_id);
+}
+
+//=============================================================================
+#pragma mark -
+
+#include <dlfcn.h>
+
+//=============================================================================
+// Returns the pathname to the Resources directory for this version of
+// Breakpad which we are now running.
+//
+// Don't make the function static, since _dyld_lookup_and_bind_fully needs a
+// simple non-static C name
+//
+extern "C" {
+NSString * GetResourcePath();
+NSString * GetResourcePath() {
+  NSString *resourcePath = nil;
+
+  // If there are multiple breakpads installed then calling bundleWithIdentifier
+  // will not work properly, so only use that as a backup plan.
+  // We want to find the bundle containing the code where this function lives
+  // and work from there
+  //
+
+  // Get the pathname to the code which contains this function
+  Dl_info info;
+  if (dladdr((const void*)GetResourcePath, &info) != 0) {
+    NSFileManager *filemgr = [NSFileManager defaultManager];
+    NSString *filePath =
+        [filemgr stringWithFileSystemRepresentation:info.dli_fname
+                                             length:strlen(info.dli_fname)];
+    NSString *bundlePath = [filePath stringByDeletingLastPathComponent];
+    // The "Resources" directory should be in the same directory as the
+    // executable code, since that's how the Breakpad framework is built.
+    resourcePath = [bundlePath stringByAppendingPathComponent:@"Resources/"];
+  } else {
+    // fallback plan
+    NSBundle *bundle =
+        [NSBundle bundleWithIdentifier:@"com.Google.BreakpadFramework"];
+    resourcePath = [bundle resourcePath];
+  }
+
+  return resourcePath;
+}
+}  // extern "C"
+
+//=============================================================================
+bool Breakpad::Initialize(NSDictionary *parameters) {
+  // Initialize
+  config_params_ = NULL;
+  handler_ = NULL;
+
+  // Check for debugger
+  if (IsDebuggerActive()) {
+    return true;
+  }
+
+  // Gather any user specified parameters
+  if (!ExtractParameters(parameters)) {
+    return false;
+  }
+
+  if ([[parameters objectForKey:@BREAKPAD_IN_PROCESS] boolValue])
+    return InitializeInProcess(parameters);
+  else
+    return InitializeOutOfProcess(parameters);
+}
+
+//=============================================================================
+bool Breakpad::InitializeInProcess(NSDictionary* parameters) {
+  handler_ =
+      new (gBreakpadAllocator->Allocate(
+          sizeof(google_breakpad::ExceptionHandler)))
+          google_breakpad::ExceptionHandler(
+              config_params_->GetValueForKey(BREAKPAD_DUMP_DIRECTORY),
+              0, &HandleMinidumpCallback, this, true, 0);
+  return true;    
+}
+
+//=============================================================================
+bool Breakpad::InitializeOutOfProcess(NSDictionary* parameters) {
+  // Get path to Inspector executable.
+  NSString *inspectorPathString = KeyValue(@BREAKPAD_INSPECTOR_LOCATION);
+
+  // Standardize path (resolve symlinkes, etc.)  and escape spaces
+  inspectorPathString = [inspectorPathString stringByStandardizingPath];
+  inspectorPathString = [[inspectorPathString componentsSeparatedByString:@" "]
+                                              componentsJoinedByString:@"\\ "];
+
+  // Create an on-demand server object representing the Inspector.
+  // In case of a crash, we simply need to call the LaunchOnDemand()
+  // method on it, then send a mach message to its service port.
+  // It will then launch and perform a process inspection of our crashed state.
+  // See the HandleException() method for the details.
+#define RECEIVE_PORT_NAME "com.Breakpad.Inspector"
+
+  name_t portName;
+  snprintf(portName, sizeof(name_t),  "%s%d", RECEIVE_PORT_NAME, getpid());
+
+  // Save the location of the Inspector
+  strlcpy(inspector_path_, [inspectorPathString fileSystemRepresentation],
+          sizeof(inspector_path_));
+
+  // Append a single command-line argument to the Inspector path
+  // representing the bootstrap name of the launch-on-demand receive port.
+  // When the Inspector is launched, it can use this to lookup the port
+  // by calling bootstrap_check_in().
+  strlcat(inspector_path_, " ", sizeof(inspector_path_));
+  strlcat(inspector_path_, portName, sizeof(inspector_path_));
+
+  kern_return_t kr = inspector_.Initialize(inspector_path_,
+                                           portName,
+                                           true);        // shutdown on exit
+
+  if (kr != KERN_SUCCESS) {
+    return false;
+  }
+
+  // Create the handler (allocating it in our special protected pool)
+  handler_ =
+      new (gBreakpadAllocator->Allocate(
+          sizeof(google_breakpad::ExceptionHandler)))
+          google_breakpad::ExceptionHandler(
+              Breakpad::ExceptionHandlerDirectCallback, this, true);
+  return true;
+}
+
+//=============================================================================
+Breakpad::~Breakpad() {
+  // Note that we don't use operator delete() on these pointers,
+  // since they were allocated by ProtectedMemoryAllocator objects.
+  //
+  if (config_params_) {
+    config_params_->~SimpleStringDictionary();
+  }
+
+  if (handler_)
+    handler_->~ExceptionHandler();
+}
+
+//=============================================================================
+bool Breakpad::ExtractParameters(NSDictionary *parameters) {
+  NSUserDefaults *stdDefaults = [NSUserDefaults standardUserDefaults];
+  NSString *skipConfirm = [stdDefaults stringForKey:@BREAKPAD_SKIP_CONFIRM];
+  NSString *sendAndExit = [stdDefaults stringForKey:@BREAKPAD_SEND_AND_EXIT];
+
+  NSString *serverType = [parameters objectForKey:@BREAKPAD_SERVER_TYPE];
+  NSString *display = [parameters objectForKey:@BREAKPAD_PRODUCT_DISPLAY];
+  NSString *product = [parameters objectForKey:@BREAKPAD_PRODUCT];
+  NSString *version = [parameters objectForKey:@BREAKPAD_VERSION];
+  NSString *urlStr = [parameters objectForKey:@BREAKPAD_URL];
+  NSString *interval = [parameters objectForKey:@BREAKPAD_REPORT_INTERVAL];
+  NSString *inspectorPathString =
+      [parameters objectForKey:@BREAKPAD_INSPECTOR_LOCATION];
+  NSString *reporterPathString =
+      [parameters objectForKey:@BREAKPAD_REPORTER_EXE_LOCATION];
+  NSString *timeout = [parameters objectForKey:@BREAKPAD_CONFIRM_TIMEOUT];
+  NSArray  *logFilePaths = [parameters objectForKey:@BREAKPAD_LOGFILES];
+  NSString *logFileTailSize =
+      [parameters objectForKey:@BREAKPAD_LOGFILE_UPLOAD_SIZE];
+  NSString *requestUserText =
+      [parameters objectForKey:@BREAKPAD_REQUEST_COMMENTS];
+  NSString *requestEmail = [parameters objectForKey:@BREAKPAD_REQUEST_EMAIL];
+  NSString *vendor =
+      [parameters objectForKey:@BREAKPAD_VENDOR];
+  NSString *dumpSubdirectory =
+      [parameters objectForKey:@BREAKPAD_DUMP_DIRECTORY];
+
+  NSDictionary *serverParameters =
+      [parameters objectForKey:@BREAKPAD_SERVER_PARAMETER_DICT];
+
+  // These may have been set above as user prefs, which take priority.
+  if (!skipConfirm) {
+    skipConfirm = [parameters objectForKey:@BREAKPAD_SKIP_CONFIRM];
+  }
+  if (!sendAndExit) {
+    sendAndExit = [parameters objectForKey:@BREAKPAD_SEND_AND_EXIT];
+  }
+
+  if (!product)
+    product = [parameters objectForKey:@"CFBundleName"];
+
+  if (!display) {
+    display = [parameters objectForKey:@"CFBundleDisplayName"];
+    if (!display) {
+      display = product;
+    }
+  }
+
+  if (!version)
+    version = [parameters objectForKey:@"CFBundleVersion"];
+
+  if (!interval)
+    interval = @"3600";
+
+  if (!timeout)
+    timeout = @"300";
+
+  if (!logFileTailSize)
+    logFileTailSize = @"200000";
+
+  if (!vendor) {
+    vendor = @"Vendor not specified";
+  }
+
+  // Normalize the values.
+  if (skipConfirm) {
+    skipConfirm = [skipConfirm uppercaseString];
+
+    if ([skipConfirm isEqualToString:@"YES"] ||
+        [skipConfirm isEqualToString:@"TRUE"] ||
+        [skipConfirm isEqualToString:@"1"])
+      skipConfirm = @"YES";
+    else
+      skipConfirm = @"NO";
+  } else {
+    skipConfirm = @"NO";
+  }
+
+  send_and_exit_ = true;
+  if (sendAndExit) {
+    sendAndExit = [sendAndExit uppercaseString];
+
+    if ([sendAndExit isEqualToString:@"NO"] ||
+        [sendAndExit isEqualToString:@"FALSE"] ||
+        [sendAndExit isEqualToString:@"0"])
+      send_and_exit_ = false;
+  }
+
+  if (requestUserText) {
+    requestUserText = [requestUserText uppercaseString];
+
+    if ([requestUserText isEqualToString:@"YES"] ||
+        [requestUserText isEqualToString:@"TRUE"] ||
+        [requestUserText isEqualToString:@"1"])
+      requestUserText = @"YES";
+    else
+      requestUserText = @"NO";
+  } else {
+    requestUserText = @"NO";
+  }
+
+  // Find the helper applications if not specified in user config.
+  NSString *resourcePath = nil;
+  if (!inspectorPathString || !reporterPathString) {
+    resourcePath = GetResourcePath();
+    if (!resourcePath) {
+      return false;
+    }
+  }
+
+  // Find Inspector.
+  if (!inspectorPathString) {
+    inspectorPathString =
+        [resourcePath stringByAppendingPathComponent:@"Inspector"];
+  }
+
+  // Verify that there is an Inspector tool.
+  if (![[NSFileManager defaultManager] fileExistsAtPath:inspectorPathString]) {
+    return false;
+  }
+
+  // Find Reporter.
+  if (!reporterPathString) {
+    reporterPathString =
+        [resourcePath
+         stringByAppendingPathComponent:@"crash_report_sender.app"];
+    reporterPathString =
+        [[NSBundle bundleWithPath:reporterPathString] executablePath];
+  }
+
+  // Verify that there is a Reporter application.
+  if (![[NSFileManager defaultManager]
+             fileExistsAtPath:reporterPathString]) {
+    return false;
+  }
+
+  if (!dumpSubdirectory) {
+    dumpSubdirectory = @"";
+  }
+
+  // The product, version, and URL are required values.
+  if (![product length]) {
+    return false;
+  }
+
+  if (![version length]) {
+    return false;
+  }
+
+  if (![urlStr length]) {
+    return false;
+  }
+
+  config_params_ =
+      new (gKeyValueAllocator->Allocate(sizeof(SimpleStringDictionary)) )
+        SimpleStringDictionary();
+
+  SimpleStringDictionary &dictionary = *config_params_;
+
+  dictionary.SetKeyValue(BREAKPAD_SERVER_TYPE,     [serverType UTF8String]);
+  dictionary.SetKeyValue(BREAKPAD_PRODUCT_DISPLAY, [display UTF8String]);
+  dictionary.SetKeyValue(BREAKPAD_PRODUCT,         [product UTF8String]);
+  dictionary.SetKeyValue(BREAKPAD_VERSION,         [version UTF8String]);
+  dictionary.SetKeyValue(BREAKPAD_URL,             [urlStr UTF8String]);
+  dictionary.SetKeyValue(BREAKPAD_REPORT_INTERVAL, [interval UTF8String]);
+  dictionary.SetKeyValue(BREAKPAD_SKIP_CONFIRM,    [skipConfirm UTF8String]);
+  dictionary.SetKeyValue(BREAKPAD_CONFIRM_TIMEOUT, [timeout UTF8String]);
+  dictionary.SetKeyValue(BREAKPAD_INSPECTOR_LOCATION,
+                         [inspectorPathString fileSystemRepresentation]);
+  dictionary.SetKeyValue(BREAKPAD_REPORTER_EXE_LOCATION,
+                         [reporterPathString fileSystemRepresentation]);
+  dictionary.SetKeyValue(BREAKPAD_LOGFILE_UPLOAD_SIZE,
+                         [logFileTailSize UTF8String]);
+  dictionary.SetKeyValue(BREAKPAD_REQUEST_COMMENTS,
+                         [requestUserText UTF8String]);
+  dictionary.SetKeyValue(BREAKPAD_REQUEST_EMAIL, [requestEmail UTF8String]);
+  dictionary.SetKeyValue(BREAKPAD_VENDOR, [vendor UTF8String]);
+  dictionary.SetKeyValue(BREAKPAD_DUMP_DIRECTORY,
+                         [dumpSubdirectory UTF8String]);
+
+  struct timeval tv;
+  gettimeofday(&tv, NULL);
+  char timeStartedString[32];
+  sprintf(timeStartedString, "%zd", tv.tv_sec);
+  dictionary.SetKeyValue(BREAKPAD_PROCESS_START_TIME,
+                         timeStartedString);
+
+  if (logFilePaths) {
+    char logFileKey[255];
+    for(unsigned int i = 0; i < [logFilePaths count]; i++) {
+      sprintf(logFileKey,"%s%d", BREAKPAD_LOGFILE_KEY_PREFIX, i);
+      dictionary.SetKeyValue(logFileKey,
+                             [[logFilePaths objectAtIndex:i]
+                               fileSystemRepresentation]);
+    }
+  }
+
+  if (serverParameters) {
+    // For each key-value pair, call BreakpadAddUploadParameter()
+    NSEnumerator *keyEnumerator = [serverParameters keyEnumerator];
+    NSString *aParameter;
+    while ((aParameter = [keyEnumerator nextObject])) {
+      BreakpadAddUploadParameter(this, aParameter,
+				 [serverParameters objectForKey:aParameter]);
+    }
+  }
+  return true;
+}
+
+//=============================================================================
+void Breakpad::SetKeyValue(NSString *key, NSString *value) {
+  // We allow nil values. This is the same as removing the keyvalue.
+  if (!config_params_ || !key)
+    return;
+
+  config_params_->SetKeyValue([key UTF8String], [value UTF8String]);
+}
+
+//=============================================================================
+NSString *Breakpad::KeyValue(NSString *key) {
+  if (!config_params_ || !key)
+    return nil;
+
+  const char *value = config_params_->GetValueForKey([key UTF8String]);
+  return value ? [NSString stringWithUTF8String:value] : nil;
+}
+
+//=============================================================================
+void Breakpad::RemoveKeyValue(NSString *key) {
+  if (!config_params_ || !key) return;
+
+  config_params_->RemoveKey([key UTF8String]);
+}
+
+//=============================================================================
+void Breakpad::GenerateAndSendReport() {
+  config_params_->SetKeyValue(BREAKPAD_ON_DEMAND, "YES");
+  HandleException(0, 0, 0, mach_thread_self());
+  config_params_->SetKeyValue(BREAKPAD_ON_DEMAND, "NO");
+}
+
+//=============================================================================
+bool Breakpad::HandleException(int exception_type,
+                               int exception_code,
+                               int exception_subcode,
+                               mach_port_t crashing_thread) {
+  if (filter_callback_) {
+    bool should_handle = filter_callback_(exception_type,
+                                          exception_code,
+                                          crashing_thread,
+                                          filter_callback_context_);
+    if (!should_handle) return false;
+  }
+
+  // We need to reset the memory protections to be read/write,
+  // since LaunchOnDemand() requires changing state.
+  gBreakpadAllocator->Unprotect();
+  // Configure the server to launch when we message the service port.
+  // The reason we do this here, rather than at startup, is that we
+  // can leak a bootstrap service entry if this method is called and
+  // there never ends up being a crash.
+  inspector_.LaunchOnDemand();
+  gBreakpadAllocator->Protect();
+
+  // The Inspector should send a message to this port to verify it
+  // received our information and has finished the inspection.
+  ReceivePort acknowledge_port;
+
+  // Send initial information to the Inspector.
+  MachSendMessage message(kMsgType_InspectorInitialInfo);
+  message.AddDescriptor(mach_task_self());          // our task
+  message.AddDescriptor(crashing_thread);           // crashing thread
+  message.AddDescriptor(mach_thread_self());        // exception-handling thread
+  message.AddDescriptor(acknowledge_port.GetPort());// message receive port
+
+  InspectorInfo info;
+  info.exception_type = exception_type;
+  info.exception_code = exception_code;
+  info.exception_subcode = exception_subcode;
+  info.parameter_count = config_params_->GetCount();
+  message.SetData(&info, sizeof(info));
+
+  MachPortSender sender(inspector_.GetServicePort());
+
+  kern_return_t result = sender.SendMessage(message, 2000);
+
+  if (result == KERN_SUCCESS) {
+    // Now, send a series of key-value pairs to the Inspector.
+    const SimpleStringDictionary::Entry *entry = NULL;
+    SimpleStringDictionary::Iterator iter(*config_params_);
+
+    while ( (entry = iter.Next()) ) {
+      KeyValueMessageData keyvalue_data(*entry);
+
+      MachSendMessage keyvalue_message(kMsgType_InspectorKeyValuePair);
+      keyvalue_message.SetData(&keyvalue_data, sizeof(keyvalue_data));
+
+      result = sender.SendMessage(keyvalue_message, 2000);
+
+      if (result != KERN_SUCCESS) {
+        break;
+      }
+    }
+
+    if (result == KERN_SUCCESS) {
+      // Wait for acknowledgement that the inspection has finished.
+      MachReceiveMessage acknowledge_messsage;
+      result = acknowledge_port.WaitForMessage(&acknowledge_messsage, 5000);
+    }
+  }
+
+#if VERBOSE
+  PRINT_MACH_RESULT(result, "Breakpad: SendMessage ");
+  printf("Breakpad: Inspector service port = %#x\n",
+    inspector_.GetServicePort());
+#endif
+
+  // If we don't want any forwarding, return true here to indicate that we've
+  // processed things as much as we want.
+  if (send_and_exit_) return true;
+
+  return false;
+}
+
+//=============================================================================
+bool Breakpad::HandleMinidump(const char *dump_dir, const char *minidump_id) {
+  google_breakpad::ConfigFile config_file;
+  config_file.WriteFile(dump_dir, config_params_, dump_dir, minidump_id);
+  google_breakpad::LaunchReporter(
+      config_params_->GetValueForKey(BREAKPAD_REPORTER_EXE_LOCATION),
+      config_file.GetFilePath());
+  return true;
+}
+
+//=============================================================================
+//=============================================================================
+
+#pragma mark -
+#pragma mark Public API
+
+//=============================================================================
+BreakpadRef BreakpadCreate(NSDictionary *parameters) {
+  try {
+    // This is confusing.  Our two main allocators for breakpad memory are:
+    //    - gKeyValueAllocator for the key/value memory
+    //    - gBreakpadAllocator for the Breakpad, ExceptionHandler, and other
+    //      breakpad allocations which are accessed at exception handling time.
+    //
+    // But in order to avoid these two allocators themselves from being smashed,
+    // we'll protect them as well by allocating them with gMasterAllocator.
+    //
+    // gMasterAllocator itself will NOT be protected, but this doesn't matter,
+    // since once it does its allocations and locks the memory, smashes to itself
+    // don't affect anything we care about.
+    gMasterAllocator =
+        new ProtectedMemoryAllocator(sizeof(ProtectedMemoryAllocator) * 2);
+
+    gKeyValueAllocator =
+        new (gMasterAllocator->Allocate(sizeof(ProtectedMemoryAllocator)))
+            ProtectedMemoryAllocator(sizeof(SimpleStringDictionary));
+
+    // Create a mutex for use in accessing the SimpleStringDictionary
+    int mutexResult = pthread_mutex_init(&gDictionaryMutex, NULL);
+    if (mutexResult == 0) {
+
+      // With the current compiler, gBreakpadAllocator is allocating 1444 bytes.
+      // Let's round up to the nearest page size.
+      //
+      int breakpad_pool_size = 4096;
+
+      /*
+       sizeof(Breakpad)
+       + sizeof(google_breakpad::ExceptionHandler)
+       + sizeof( STUFF ALLOCATED INSIDE ExceptionHandler )
+       */
+
+      gBreakpadAllocator =
+          new (gMasterAllocator->Allocate(sizeof(ProtectedMemoryAllocator)))
+              ProtectedMemoryAllocator(breakpad_pool_size);
+
+      // Stack-based autorelease pool for Breakpad::Create() obj-c code.
+      NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
+      Breakpad *breakpad = Breakpad::Create(parameters);
+
+      if (breakpad) {
+        // Make read-only to protect against memory smashers
+        gMasterAllocator->Protect();
+        gKeyValueAllocator->Protect();
+        gBreakpadAllocator->Protect();
+        // Can uncomment this line to figure out how much space was actually
+        // allocated using this allocator
+        //     printf("gBreakpadAllocator allocated size = %d\n",
+        //         gBreakpadAllocator->GetAllocatedSize() );
+        [pool release];
+        return (BreakpadRef)breakpad;
+      }
+
+      [pool release];
+    }
+  } catch(...) {    // don't let exceptions leave this C API
+    fprintf(stderr, "BreakpadCreate() : error\n");
+  }
+
+  if (gKeyValueAllocator) {
+    gKeyValueAllocator->~ProtectedMemoryAllocator();
+    gKeyValueAllocator = NULL;
+  }
+
+  if (gBreakpadAllocator) {
+    gBreakpadAllocator->~ProtectedMemoryAllocator();
+    gBreakpadAllocator = NULL;
+  }
+
+  delete gMasterAllocator;
+  gMasterAllocator = NULL;
+
+  return NULL;
+}
+
+//=============================================================================
+void BreakpadRelease(BreakpadRef ref) {
+  try {
+    Breakpad *breakpad = (Breakpad *)ref;
+
+    if (gMasterAllocator) {
+      gMasterAllocator->Unprotect();
+      gKeyValueAllocator->Unprotect();
+      gBreakpadAllocator->Unprotect();
+
+      breakpad->~Breakpad();
+
+      // Unfortunately, it's not possible to deallocate this stuff
+      // because the exception handling thread is still finishing up
+      // asynchronously at this point...  OK, it could be done with
+      // locks, etc.  But since BreakpadRelease() should usually only
+      // be called right before the process exits, it's not worth
+      // deallocating this stuff.
+#if 0
+      gKeyValueAllocator->~ProtectedMemoryAllocator();
+      gBreakpadAllocator->~ProtectedMemoryAllocator();
+      delete gMasterAllocator;
+
+      gMasterAllocator = NULL;
+      gKeyValueAllocator = NULL;
+      gBreakpadAllocator = NULL;
+#endif
+
+      pthread_mutex_destroy(&gDictionaryMutex);
+    }
+  } catch(...) {    // don't let exceptions leave this C API
+    fprintf(stderr, "BreakpadRelease() : error\n");
+  }
+}
+
+//=============================================================================
+void BreakpadSetKeyValue(BreakpadRef ref, NSString *key, NSString *value) {
+  try {
+    // Not called at exception time
+    Breakpad *breakpad = (Breakpad *)ref;
+
+    if (breakpad && key && gKeyValueAllocator) {
+      ProtectedMemoryLocker locker(&gDictionaryMutex, gKeyValueAllocator);
+
+      breakpad->SetKeyValue(key, value);
+    }
+  } catch(...) {    // don't let exceptions leave this C API
+    fprintf(stderr, "BreakpadSetKeyValue() : error\n");
+  }
+}
+
+void BreakpadAddUploadParameter(BreakpadRef ref,
+                                NSString *key,
+                                NSString *value) {
+  // The only difference, internally, between an upload parameter and
+  // a key value one that is set with BreakpadSetKeyValue is that we
+  // prepend the keyname with a special prefix.  This informs the
+  // crash sender that the parameter should be sent along with the
+  // POST of the crash dump upload.
+  try {
+    Breakpad *breakpad = (Breakpad *)ref;
+
+    if (breakpad && key && gKeyValueAllocator) {
+      ProtectedMemoryLocker locker(&gDictionaryMutex, gKeyValueAllocator);
+
+      NSString *prefixedKey = [@BREAKPAD_SERVER_PARAMETER_PREFIX
+				stringByAppendingString:key];
+      breakpad->SetKeyValue(prefixedKey, value);
+    }
+  } catch(...) {    // don't let exceptions leave this C API
+    fprintf(stderr, "BreakpadSetKeyValue() : error\n");
+  }
+}
+
+void BreakpadRemoveUploadParameter(BreakpadRef ref,
+                                   NSString *key) {
+  try {
+    // Not called at exception time
+    Breakpad *breakpad = (Breakpad *)ref;
+
+    if (breakpad && key && gKeyValueAllocator) {
+      ProtectedMemoryLocker locker(&gDictionaryMutex, gKeyValueAllocator);
+
+      NSString *prefixedKey = [NSString stringWithFormat:@"%@%@",
+                                        @BREAKPAD_SERVER_PARAMETER_PREFIX, key];
+      breakpad->RemoveKeyValue(prefixedKey);
+    }
+  } catch(...) {    // don't let exceptions leave this C API
+    fprintf(stderr, "BreakpadRemoveKeyValue() : error\n");
+  }
+}
+//=============================================================================
+NSString *BreakpadKeyValue(BreakpadRef ref, NSString *key) {
+  NSString *value = nil;
+
+  try {
+    // Not called at exception time
+    Breakpad *breakpad = (Breakpad *)ref;
+
+    if (!breakpad || !key || !gKeyValueAllocator)
+      return nil;
+
+    ProtectedMemoryLocker locker(&gDictionaryMutex, gKeyValueAllocator);
+
+    value = breakpad->KeyValue(key);
+  } catch(...) {    // don't let exceptions leave this C API
+    fprintf(stderr, "BreakpadKeyValue() : error\n");
+  }
+
+  return value;
+}
+
+//=============================================================================
+void BreakpadRemoveKeyValue(BreakpadRef ref, NSString *key) {
+  try {
+    // Not called at exception time
+    Breakpad *breakpad = (Breakpad *)ref;
+
+    if (breakpad && key && gKeyValueAllocator) {
+      ProtectedMemoryLocker locker(&gDictionaryMutex, gKeyValueAllocator);
+
+      breakpad->RemoveKeyValue(key);
+    }
+  } catch(...) {    // don't let exceptions leave this C API
+    fprintf(stderr, "BreakpadRemoveKeyValue() : error\n");
+  }
+}
+
+//=============================================================================
+void BreakpadGenerateAndSendReport(BreakpadRef ref) {
+  try {
+    Breakpad *breakpad = (Breakpad *)ref;
+
+    if (breakpad && gKeyValueAllocator) {
+      ProtectedMemoryLocker locker(&gDictionaryMutex, gKeyValueAllocator);
+
+      gBreakpadAllocator->Unprotect();
+      breakpad->GenerateAndSendReport();
+      gBreakpadAllocator->Protect();
+    }
+  } catch(...) {    // don't let exceptions leave this C API
+    fprintf(stderr, "BreakpadGenerateAndSendReport() : error\n");
+  }
+}
+
+//=============================================================================
+void BreakpadSetFilterCallback(BreakpadRef ref,
+                               BreakpadFilterCallback callback,
+                               void *context) {
+
+  try {
+    Breakpad *breakpad = (Breakpad *)ref;
+
+    if (breakpad && gBreakpadAllocator) {
+      // share the dictionary mutex here (we really don't need a mutex)
+      ProtectedMemoryLocker locker(&gDictionaryMutex, gBreakpadAllocator);
+
+      breakpad->SetFilterCallback(callback, context);
+    }
+  } catch(...) {    // don't let exceptions leave this C API
+    fprintf(stderr, "BreakpadSetFilterCallback() : error\n");
+  }
+}
+
+//============================================================================
+void BreakpadAddLogFile(BreakpadRef ref, NSString *logPathname) {
+  int logFileCounter = 0;
+
+  NSString *logFileKey = [NSString stringWithFormat:@"%@%d",
+                                   @BREAKPAD_LOGFILE_KEY_PREFIX,
+                                   logFileCounter];
+
+  NSString *existingLogFilename = nil;
+  existingLogFilename = BreakpadKeyValue(ref, logFileKey);
+  // Find the first log file key that we can use by testing for existence
+  while (existingLogFilename) {
+    if ([existingLogFilename isEqualToString:logPathname]) {
+      return;
+    }
+    logFileCounter++;
+    logFileKey = [NSString stringWithFormat:@"%@%d",
+                           @BREAKPAD_LOGFILE_KEY_PREFIX,
+                           logFileCounter];
+    existingLogFilename = BreakpadKeyValue(ref, logFileKey);
+  }
+
+  BreakpadSetKeyValue(ref, logFileKey, logPathname);
+}
diff --git a/google-breakpad/src/client/mac/Framework/Breakpad_Prefix.pch b/google-breakpad/src/client/mac/Framework/Breakpad_Prefix.pch
new file mode 100644
index 0000000..7298666
--- /dev/null
+++ b/google-breakpad/src/client/mac/Framework/Breakpad_Prefix.pch
@@ -0,0 +1,8 @@
+//
+// Prefix header for all source files of the 'Breakpad' target in the
+// 'Breakpad' project.
+//
+
+#ifdef __OBJC__
+    #import <Cocoa/Cocoa.h>
+#endif
diff --git a/google-breakpad/src/client/mac/Framework/Info.plist b/google-breakpad/src/client/mac/Framework/Info.plist
new file mode 100644
index 0000000..e43badd
--- /dev/null
+++ b/google-breakpad/src/client/mac/Framework/Info.plist
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>English</string>
+	<key>CFBundleExecutable</key>
+	<string>${EXECUTABLE_NAME}</string>
+	<key>CFBundleName</key>
+	<string>${PRODUCT_NAME}</string>
+	<key>CFBundleIconFile</key>
+	<string></string>
+	<key>CFBundleIdentifier</key>
+	<string>com.googlecode.google-breakpad</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundlePackageType</key>
+	<string>FMWK</string>
+	<key>CFBundleSignature</key>
+	<string>????</string>
+	<key>CFBundleVersion</key>
+	<string>1.0</string>
+	<key>NSPrincipalClass</key>
+	<string></string>
+</dict>
+</plist>
diff --git a/google-breakpad/src/client/mac/Framework/OnDemandServer.h b/google-breakpad/src/client/mac/Framework/OnDemandServer.h
new file mode 100644
index 0000000..b8aabbe
--- /dev/null
+++ b/google-breakpad/src/client/mac/Framework/OnDemandServer.h
@@ -0,0 +1,145 @@
+// Copyright (c) 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include <mach/mach.h>
+#include <servers/bootstrap.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+//==============================================================================
+// class OnDemandServer :
+//    A basic on-demand server launcher supporting a single named service port
+//
+// Example Usage :
+//
+//  kern_return_t result;
+//  OnDemandServer *server = OnDemandServer::Create("/tmp/myserver",
+//                                                  "com.MyCompany.MyServiceName",
+//                                                  true,
+//                                                  &result);
+//
+//  if (server) {
+//    server->LaunchOnDemand();
+//    mach_port_t service_port = GetServicePort();
+//
+//    // Send a mach message to service_port and "myserver" will be launched
+//  }
+//
+//
+//                  ---- Now in the server code ----
+//
+//  // "myserver" should get the service port and read the message which
+//  // launched it:
+//  mach_port_t service_rcv_port_;
+//  kern_return_t kr = bootstrap_check_in(bootstrap_port,
+//                                      "com.MyCompany.MyServiceName",
+//                                      &service_rcv_port_);
+//  // mach_msg() read service_rcv_port_ ....
+//
+//  ....
+//
+//  // Later "myserver" may want to unregister the service if it doesn't
+//  // want its bootstrap service to stick around after it exits.
+//
+//  // DO NOT use mach_port_deallocate() here -- it will fail and the
+//  // following bootstrap_register() will also fail leaving our service
+//  // name hanging around forever (until reboot)
+//  kern_return_t kr = mach_port_destroy(mach_task_self(), service_rcv_port_);
+//
+//  kr = bootstrap_register(bootstrap_port,
+//                          "com.MyCompany.MyServiceName",
+//                          MACH_PORT_NULL);
+
+class OnDemandServer {
+ public:
+  // must call Initialize() to be useful
+  OnDemandServer()
+    : server_port_(MACH_PORT_NULL),
+      service_port_(MACH_PORT_NULL),
+      unregister_on_cleanup_(true) {
+  }
+
+  // Creates the bootstrap server and service
+  kern_return_t Initialize(const char *server_command,
+                           const char *service_name,
+                           bool unregister_on_cleanup);
+
+  // Returns an OnDemandServer object if successful, or NULL if there's
+  // an error.  The error result will be returned in out_result.
+  //
+  //    server_command : the full path name including optional command-line
+  //      arguments to the executable representing the server
+  //
+  //    service_name : represents service name
+  //      something like "com.company.ServiceName"
+  //
+  //    unregister_on_cleanup : if true, unregisters the service name
+  //      when the OnDemandServer is deleted -- unregistering will
+  //      ONLY be possible if LaunchOnDemand() has NOT been called.
+  //      If false, then the service will continue to be registered
+  //      even after the current process quits.
+  //
+  //    out_result : if non-NULL, returns the result
+  //      this value will be KERN_SUCCESS if Create() returns non-NULL
+  //
+  static OnDemandServer *Create(const char *server_command,
+                                const char *service_name,
+                                bool unregister_on_cleanup,
+                                kern_return_t *out_result);
+
+  // Cleans up and if LaunchOnDemand() has not yet been called then
+  // the bootstrap service will be unregistered.
+  ~OnDemandServer();
+
+  // This must be called if we intend to commit to launching the server
+  // by sending a mach message to our service port.  Do not call it otherwise
+  // or it will be difficult (impossible?) to unregister the service name.
+  void LaunchOnDemand();
+
+  // This is the port we need to send a mach message to after calling
+  // LaunchOnDemand().  Sending a message causing an immediate launch
+  // of the server
+  mach_port_t GetServicePort() { return service_port_; };
+
+ private:
+  // Disallow copy constructor
+  OnDemandServer(const OnDemandServer&);
+
+  // Cleans up and if LaunchOnDemand() has not yet been called then
+  // the bootstrap service will be unregistered.
+  void Unregister();
+
+  name_t      service_name_;
+
+  mach_port_t server_port_;
+  mach_port_t service_port_;
+  bool        unregister_on_cleanup_;
+};
diff --git a/google-breakpad/src/client/mac/Framework/OnDemandServer.mm b/google-breakpad/src/client/mac/Framework/OnDemandServer.mm
new file mode 100644
index 0000000..dbe601b
--- /dev/null
+++ b/google-breakpad/src/client/mac/Framework/OnDemandServer.mm
@@ -0,0 +1,189 @@
+// Copyright (c) 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#import "OnDemandServer.h"
+
+#import "Breakpad.h"
+#include "common/mac/bootstrap_compat.h"
+
+#if DEBUG
+  #define PRINT_MACH_RESULT(result_, message_) \
+    printf(message_"%s (%d)\n", mach_error_string(result_), result_ );
+#if defined(MAC_OS_X_VERSION_10_5) && \
+    MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
+  #define PRINT_BOOTSTRAP_RESULT(result_, message_) \
+    printf(message_"%s (%d)\n", bootstrap_strerror(result_), result_ );
+#else
+  #define PRINT_BOOTSTRAP_RESULT(result_, message_) \
+    PRINT_MACH_RESULT(result_, message_)
+#endif
+#else
+  #define PRINT_MACH_RESULT(result_, message_)
+  #define PRINT_BOOTSTRAP_RESULT(result_, message_)
+#endif
+
+//==============================================================================
+OnDemandServer *OnDemandServer::Create(const char *server_command,
+                                       const char *service_name,
+                                       bool unregister_on_cleanup,
+                                       kern_return_t *out_result) {
+  OnDemandServer *server = new OnDemandServer();
+
+  if (!server) return NULL;
+
+  kern_return_t result = server->Initialize(server_command,
+                                            service_name,
+                                            unregister_on_cleanup);
+
+  if (out_result) {
+    *out_result = result;
+  }
+
+  if (result == KERN_SUCCESS) {
+    return server;
+  }
+
+  delete server;
+  return NULL;
+};
+
+//==============================================================================
+kern_return_t OnDemandServer::Initialize(const char *server_command,
+                                         const char *service_name,
+                                         bool unregister_on_cleanup) {
+  unregister_on_cleanup_ = unregister_on_cleanup;
+
+  mach_port_t self_task = mach_task_self();
+
+  mach_port_t bootstrap_port;
+  kern_return_t kr = task_get_bootstrap_port(self_task, &bootstrap_port);
+  if (kr != KERN_SUCCESS) {
+    PRINT_MACH_RESULT(kr, "task_get_bootstrap_port(): ");
+    return kr;
+  }
+
+  mach_port_t bootstrap_subset_port;
+  kr = bootstrap_subset(bootstrap_port, self_task, &bootstrap_subset_port);
+  if (kr != BOOTSTRAP_SUCCESS) {
+    PRINT_BOOTSTRAP_RESULT(kr, "bootstrap_subset(): ");
+    return kr;
+  }
+
+  // The inspector will be invoked with its bootstrap port set to the subset,
+  // but the sender will need access to the original bootstrap port. Although
+  // the original port is the subset's parent, bootstrap_parent can't be used
+  // because it requires extra privileges. Stash the original bootstrap port
+  // in the subset by registering it under a known name. The inspector will
+  // recover this port and set it as its own bootstrap port in Inspector.mm
+  // Inspector::ResetBootstrapPort.
+  kr = breakpad::BootstrapRegister(
+      bootstrap_subset_port,
+      const_cast<char*>(BREAKPAD_BOOTSTRAP_PARENT_PORT),
+      bootstrap_port);
+  if (kr != BOOTSTRAP_SUCCESS) {
+    PRINT_BOOTSTRAP_RESULT(kr, "bootstrap_register(): ");
+    return kr;
+  }
+
+  kr = bootstrap_create_server(bootstrap_subset_port,
+                               const_cast<char*>(server_command),
+                               geteuid(),       // server uid
+                               true,
+                               &server_port_);
+  if (kr != BOOTSTRAP_SUCCESS) {
+    PRINT_BOOTSTRAP_RESULT(kr, "bootstrap_create_server(): ");
+    return kr;
+  }
+
+  strlcpy(service_name_, service_name, sizeof(service_name_));
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+  // Create a service called service_name, and return send rights to
+  // that port in service_port_.
+  kr = bootstrap_create_service(server_port_,
+                                const_cast<char*>(service_name),
+                                &service_port_);
+#pragma clang diagnostic pop
+  if (kr != BOOTSTRAP_SUCCESS) {
+    PRINT_BOOTSTRAP_RESULT(kr, "bootstrap_create_service(): ");
+
+    // perhaps the service has already been created - try to look it up
+    kr = bootstrap_look_up(bootstrap_port, (char*)service_name, &service_port_);
+
+    if (kr != BOOTSTRAP_SUCCESS) {
+      PRINT_BOOTSTRAP_RESULT(kr, "bootstrap_look_up(): ");
+      Unregister();  // clean up server port
+      return kr;
+    }
+  }
+
+  return KERN_SUCCESS;
+}
+
+//==============================================================================
+OnDemandServer::~OnDemandServer() {
+  if (unregister_on_cleanup_) {
+    Unregister();
+  }
+}
+
+//==============================================================================
+void OnDemandServer::LaunchOnDemand() {
+  // We need to do this, since the launched server is another process
+  // and holding on to this port delays launching until the current process
+  // exits!
+  mach_port_deallocate(mach_task_self(), server_port_);
+  server_port_ = MACH_PORT_DEAD;
+
+  // Now, the service is still registered and all we need to do is send
+  // a mach message to the service port in order to launch the server.
+}
+
+//==============================================================================
+void OnDemandServer::Unregister() {
+  if (service_port_ != MACH_PORT_NULL) {
+    mach_port_deallocate(mach_task_self(), service_port_);
+    service_port_ = MACH_PORT_NULL;
+  }
+
+  if (server_port_ != MACH_PORT_NULL) {
+    // unregister the service
+    kern_return_t kr = breakpad::BootstrapRegister(server_port_,
+                                                   service_name_,
+                                                   MACH_PORT_NULL);
+
+    if (kr != KERN_SUCCESS) {
+      PRINT_MACH_RESULT(kr, "Breakpad UNREGISTER : bootstrap_register() : ");
+    }
+
+    mach_port_deallocate(mach_task_self(), server_port_);
+    server_port_ = MACH_PORT_NULL;
+  }
+}
diff --git a/google-breakpad/src/client/mac/UnitTests-Info.plist b/google-breakpad/src/client/mac/UnitTests-Info.plist
new file mode 100644
index 0000000..6501355
--- /dev/null
+++ b/google-breakpad/src/client/mac/UnitTests-Info.plist
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>English</string>
+	<key>CFBundleExecutable</key>
+	<string>${EXECUTABLE_NAME}</string>
+	<key>CFBundleIdentifier</key>
+	<string>com.yourcompany.${PRODUCT_NAME:identifier}</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundlePackageType</key>
+	<string>BNDL</string>
+	<key>CFBundleSignature</key>
+	<string>????</string>
+	<key>CFBundleVersion</key>
+	<string>1.0</string>
+</dict>
+</plist>
diff --git a/google-breakpad/src/client/mac/crash_generation/ConfigFile.h b/google-breakpad/src/client/mac/crash_generation/ConfigFile.h
new file mode 100644
index 0000000..5662e8b
--- /dev/null
+++ b/google-breakpad/src/client/mac/crash_generation/ConfigFile.h
@@ -0,0 +1,83 @@
+// Copyright (c) 2011, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Utility class that can persist a SimpleStringDictionary to disk.
+
+#import <Foundation/Foundation.h>
+
+#include "common/simple_string_dictionary.h"
+
+namespace google_breakpad {
+
+BOOL EnsureDirectoryPathExists(NSString *dirPath);
+
+//=============================================================================
+class ConfigFile {
+ public:
+  ConfigFile() {
+    config_file_ = -1;
+    config_file_path_[0] = 0;
+    has_created_file_ = false;
+  };
+
+  ~ConfigFile() {
+  };
+
+  void WriteFile(const char* directory,
+                 const SimpleStringDictionary *configurationParameters,
+                 const char *dump_dir,
+                 const char *minidump_id);
+
+  const char *GetFilePath() { return config_file_path_; }
+
+  void Unlink() {
+    if (config_file_ != -1)
+      unlink(config_file_path_);
+
+    config_file_ = -1;
+  }
+
+ private:
+  BOOL WriteData(const void *data, size_t length);
+
+  BOOL AppendConfigData(const char *key,
+                        const void *data,
+                        size_t length);
+
+  BOOL AppendConfigString(const char *key,
+                          const char *value);
+
+  BOOL AppendCrashTimeParameters(const char *processStartTimeString);
+
+  int   config_file_;                    // descriptor for config file
+  char  config_file_path_[PATH_MAX];     // Path to configuration file
+  bool  has_created_file_;
+};
+
+} // namespace google_breakpad
diff --git a/google-breakpad/src/client/mac/crash_generation/ConfigFile.mm b/google-breakpad/src/client/mac/crash_generation/ConfigFile.mm
new file mode 100644
index 0000000..acab7de
--- /dev/null
+++ b/google-breakpad/src/client/mac/crash_generation/ConfigFile.mm
@@ -0,0 +1,167 @@
+// Copyright (c) 2011, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Utility class that can persist a SimpleStringDictionary to disk.
+
+#import "client/mac/crash_generation/ConfigFile.h"
+
+#import <Foundation/Foundation.h>
+#include <stdio.h>
+#include <sys/time.h>
+
+#import "client/apple/Framework/BreakpadDefines.h"
+#import "common/mac/GTMDefines.h"
+
+
+namespace google_breakpad {
+
+//=============================================================================
+BOOL EnsureDirectoryPathExists(NSString *dirPath) {
+  NSFileManager *mgr = [NSFileManager defaultManager];
+
+  NSDictionary *attrs =
+    [NSDictionary dictionaryWithObject:[NSNumber numberWithUnsignedLong:0750]
+                                forKey:NSFilePosixPermissions];
+
+  return [mgr createDirectoryAtPath:dirPath
+        withIntermediateDirectories:YES
+                         attributes:attrs
+                              error:nil];
+}
+
+//=============================================================================
+BOOL ConfigFile::WriteData(const void *data, size_t length) {
+  size_t result = write(config_file_, data, length);
+
+  return result == length;
+}
+
+//=============================================================================
+BOOL ConfigFile::AppendConfigData(const char *key,
+                                  const void *data, size_t length) {
+  assert(config_file_ != -1);
+
+  if (!key) {
+    return NO;
+  }
+
+  if (!data) {
+    return NO;
+  }
+
+  // Write the key, \n, length of data (ascii integer), \n, data
+  char buffer[16];
+  char nl = '\n';
+  BOOL result = WriteData(key, strlen(key));
+
+  snprintf(buffer, sizeof(buffer) - 1, "\n%lu\n", length);
+  result &= WriteData(buffer, strlen(buffer));
+  result &= WriteData(data, length);
+  result &= WriteData(&nl, 1);
+  return result;
+}
+
+//=============================================================================
+BOOL ConfigFile::AppendConfigString(const char *key,
+                                    const char *value) {
+  return AppendConfigData(key, value, strlen(value));
+}
+
+//=============================================================================
+BOOL ConfigFile::AppendCrashTimeParameters(const char *processStartTimeString) {
+  // Set process uptime parameter
+  struct timeval tv;
+  gettimeofday(&tv, NULL);
+
+  char processUptimeString[32], processCrashtimeString[32];
+  // Set up time if we've received the start time.
+  if (processStartTimeString) {
+    time_t processStartTime = strtol(processStartTimeString, NULL, 10);
+    time_t processUptime = tv.tv_sec - processStartTime;
+    // Store the uptime in milliseconds.
+    sprintf(processUptimeString, "%llu",
+        static_cast<unsigned long long int>(processUptime) * 1000);
+    if (!AppendConfigString(BREAKPAD_PROCESS_UP_TIME, processUptimeString))
+      return false;
+  }
+
+  sprintf(processCrashtimeString, "%zd", tv.tv_sec);
+  return AppendConfigString(BREAKPAD_PROCESS_CRASH_TIME,
+                            processCrashtimeString);
+}
+
+//=============================================================================
+void ConfigFile::WriteFile(const char* directory,
+                           const SimpleStringDictionary *configurationParameters,
+                           const char *dump_dir,
+                           const char *minidump_id) {
+
+  assert(config_file_ == -1);
+
+  // Open and write out configuration file preamble
+  if (directory) {
+    snprintf(config_file_path_, sizeof(config_file_path_), "%s/Config-XXXXXX",
+             directory);
+  } else {
+    strlcpy(config_file_path_, "/tmp/Config-XXXXXX",
+            sizeof(config_file_path_));
+  }
+  config_file_ = mkstemp(config_file_path_);
+
+  if (config_file_ == -1) {
+    return;
+  }
+
+  has_created_file_ = true;
+
+  // Add the minidump dir
+  AppendConfigString(kReporterMinidumpDirectoryKey, dump_dir);
+  AppendConfigString(kReporterMinidumpIDKey, minidump_id);
+
+  // Write out the configuration parameters
+  BOOL result = YES;
+  const SimpleStringDictionary &dictionary = *configurationParameters;
+
+  const SimpleStringDictionary::Entry *entry = NULL;
+  SimpleStringDictionary::Iterator iter(dictionary);
+
+  while ((entry = iter.Next())) {
+    result = AppendConfigString(entry->key, entry->value);
+
+    if (!result)
+      break;
+  }
+  AppendCrashTimeParameters(
+      configurationParameters->GetValueForKey(BREAKPAD_PROCESS_START_TIME));
+
+  close(config_file_);
+  config_file_ = -1;
+}
+
+} // namespace google_breakpad
diff --git a/google-breakpad/src/client/mac/crash_generation/Inspector.h b/google-breakpad/src/client/mac/crash_generation/Inspector.h
new file mode 100644
index 0000000..6712355
--- /dev/null
+++ b/google-breakpad/src/client/mac/crash_generation/Inspector.h
@@ -0,0 +1,162 @@
+// Copyright (c) 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Interface file between the Breakpad.framework and
+// the Inspector process.
+
+#include "common/simple_string_dictionary.h"
+
+#import <Foundation/Foundation.h>
+#include <mach/mach.h>
+
+#import "client/mac/crash_generation/ConfigFile.h"
+#import "client/mac/handler/minidump_generator.h"
+
+
+// Types of mach messsages (message IDs)
+enum {
+  kMsgType_InspectorInitialInfo = 0,    // data is InspectorInfo
+  kMsgType_InspectorKeyValuePair = 1,   // data is KeyValueMessageData
+  kMsgType_InspectorAcknowledgement = 2 // no data sent
+};
+
+// Initial information sent from the crashed process by
+// Breakpad.framework to the Inspector process
+// The mach message with this struct as data will also include
+// several descriptors for sending mach port rights to the crashed
+// task, etc.
+struct InspectorInfo {
+  int           exception_type;
+  int           exception_code;
+  int           exception_subcode;
+  unsigned int  parameter_count;  // key-value pairs
+};
+
+// Key/value message data to be sent to the Inspector
+struct KeyValueMessageData {
+ public:
+  KeyValueMessageData() {}
+  explicit KeyValueMessageData(
+      const google_breakpad::SimpleStringDictionary::Entry &inEntry) {
+    strlcpy(key, inEntry.key, sizeof(key) );
+    strlcpy(value, inEntry.value, sizeof(value) );
+  }
+
+  char key[google_breakpad::SimpleStringDictionary::key_size];
+  char value[google_breakpad::SimpleStringDictionary::value_size];
+};
+
+using std::string;
+using google_breakpad::MinidumpGenerator;
+
+namespace google_breakpad {
+
+//=============================================================================
+class MinidumpLocation {
+ public:
+  MinidumpLocation(NSString *minidumpDir) {
+    // Ensure that the path exists.  Fallback to /tmp if unable to locate path.
+    assert(minidumpDir);
+    if (!EnsureDirectoryPathExists(minidumpDir)) {
+      minidumpDir = @"/tmp";
+    }
+
+    strlcpy(minidump_dir_path_, [minidumpDir fileSystemRepresentation],
+            sizeof(minidump_dir_path_));
+
+    // now generate a unique ID
+    string dump_path(minidump_dir_path_);
+    string next_minidump_id;
+
+    string next_minidump_path_ =
+      (MinidumpGenerator::UniqueNameInDirectory(dump_path, &next_minidump_id));
+
+    strlcpy(minidump_id_, next_minidump_id.c_str(), sizeof(minidump_id_));
+  };
+
+  const char *GetPath() { return minidump_dir_path_; }
+  const char *GetID() { return minidump_id_; }
+
+ private:
+  char minidump_dir_path_[PATH_MAX];             // Path to minidump directory
+  char minidump_id_[128];
+};
+
+//=============================================================================
+class Inspector {
+ public:
+  Inspector() {};
+
+  // given a bootstrap service name, receives mach messages
+  // from a crashed process, then inspects it, creates a minidump file
+  // and asks the user if he wants to upload it to a server.
+  void            Inspect(const char *receive_port_name);
+
+ private:
+  // The Inspector is invoked with its bootstrap port set to the bootstrap
+  // subset established in OnDemandServer.mm OnDemandServer::Initialize.
+  // For proper communication with the system, the sender (which will inherit
+  // the Inspector's bootstrap port) needs the per-session bootstrap namespace
+  // available directly in its bootstrap port. OnDemandServer stashed this
+  // port into the subset namespace under a special name. ResetBootstrapPort
+  // recovers this port and switches this task to use it as its own bootstrap
+  // (ensuring that children like the sender will inherit it), and saves the
+  // subset in bootstrap_subset_port_ for use by ServiceCheckIn and
+  // ServiceCheckOut.
+  kern_return_t   ResetBootstrapPort();
+
+  kern_return_t   ServiceCheckIn(const char *receive_port_name);
+  kern_return_t   ServiceCheckOut(const char *receive_port_name);
+
+  kern_return_t   ReadMessages();
+
+  bool            InspectTask();
+  kern_return_t   SendAcknowledgement();
+
+  // The bootstrap port in which the inspector is registered and into which it
+  // must check in.
+  mach_port_t     bootstrap_subset_port_;
+
+  mach_port_t     service_rcv_port_;
+
+  int             exception_type_;
+  int             exception_code_;
+  int             exception_subcode_;
+  mach_port_t     remote_task_;
+  mach_port_t     crashing_thread_;
+  mach_port_t     handler_thread_;
+  mach_port_t     ack_port_;
+
+  SimpleStringDictionary config_params_;
+
+  ConfigFile      config_file_;
+};
+
+
+} // namespace google_breakpad
diff --git a/google-breakpad/src/client/mac/crash_generation/Inspector.mm b/google-breakpad/src/client/mac/crash_generation/Inspector.mm
new file mode 100644
index 0000000..dc6f480
--- /dev/null
+++ b/google-breakpad/src/client/mac/crash_generation/Inspector.mm
@@ -0,0 +1,362 @@
+// Copyright (c) 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Utility that can inspect another process and write a crash dump
+
+#include <cstdio>
+#include <iostream>
+#include <servers/bootstrap.h>
+#include <stdio.h>
+#include <string.h>
+#include <string>
+
+#import "client/mac/crash_generation/Inspector.h"
+
+#import "client/mac/Framework/Breakpad.h"
+#import "client/mac/handler/minidump_generator.h"
+
+#import "common/mac/MachIPC.h"
+#include "common/mac/bootstrap_compat.h"
+#include "common/mac/launch_reporter.h"
+
+#import "GTMDefines.h"
+
+#import <Foundation/Foundation.h>
+
+namespace google_breakpad {
+
+//=============================================================================
+void Inspector::Inspect(const char *receive_port_name) {
+  kern_return_t result = ResetBootstrapPort();
+  if (result != KERN_SUCCESS) {
+    return;
+  }
+
+  result = ServiceCheckIn(receive_port_name);
+
+  if (result == KERN_SUCCESS) {
+    result = ReadMessages();
+
+    if (result == KERN_SUCCESS) {
+      // Inspect the task and write a minidump file.
+      bool wrote_minidump = InspectTask();
+
+      // Send acknowledgement to the crashed process that the inspection
+      // has finished.  It will then be able to cleanly exit.
+      // The return value is ignored because failure isn't fatal. If the process
+      // didn't get the message there's nothing we can do, and we still want to
+      // send the report.
+      SendAcknowledgement();
+
+      if (wrote_minidump) {
+        // Ask the user if he wants to upload the crash report to a server,
+        // and do so if he agrees.
+        LaunchReporter(
+            config_params_.GetValueForKey(BREAKPAD_REPORTER_EXE_LOCATION),
+            config_file_.GetFilePath());
+      } else {
+        fprintf(stderr, "Inspection of crashed process failed\n");
+      }
+
+      // Now that we're done reading messages, cleanup the service, but only
+      // if there was an actual exception
+      // Otherwise, it means the dump was generated on demand and the process
+      // lives on, and we might be needed again in the future.
+      if (exception_code_) {
+        ServiceCheckOut(receive_port_name);
+      }
+    } else {
+        PRINT_MACH_RESULT(result, "Inspector: WaitForMessage()");
+    }
+  }
+}
+
+//=============================================================================
+kern_return_t Inspector::ResetBootstrapPort() {
+  // A reasonable default, in case anything fails.
+  bootstrap_subset_port_ = bootstrap_port;
+
+  mach_port_t self_task = mach_task_self();
+
+  kern_return_t kr = task_get_bootstrap_port(self_task,
+                                             &bootstrap_subset_port_);
+  if (kr != KERN_SUCCESS) {
+    NSLog(@"ResetBootstrapPort: task_get_bootstrap_port failed: %s (%d)",
+          mach_error_string(kr), kr);
+    return kr;
+  }
+
+  mach_port_t bootstrap_parent_port;
+  kr = bootstrap_look_up(bootstrap_subset_port_,
+                         const_cast<char*>(BREAKPAD_BOOTSTRAP_PARENT_PORT),
+                         &bootstrap_parent_port);
+  if (kr != BOOTSTRAP_SUCCESS) {
+    NSLog(@"ResetBootstrapPort: bootstrap_look_up failed: %s (%d)",
+#if defined(MAC_OS_X_VERSION_10_5) && \
+    MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
+          bootstrap_strerror(kr),
+#else
+          mach_error_string(kr),
+#endif
+          kr);
+    return kr;
+  }
+
+  kr = task_set_bootstrap_port(self_task, bootstrap_parent_port);
+  if (kr != KERN_SUCCESS) {
+    NSLog(@"ResetBootstrapPort: task_set_bootstrap_port failed: %s (%d)",
+          mach_error_string(kr), kr);
+    return kr;
+  }
+
+  // Some things access the bootstrap port through this global variable
+  // instead of calling task_get_bootstrap_port.
+  bootstrap_port = bootstrap_parent_port;
+
+  return KERN_SUCCESS;
+}
+
+//=============================================================================
+kern_return_t Inspector::ServiceCheckIn(const char *receive_port_name) {
+  // We need to get the mach port representing this service, so we can
+  // get information from the crashed process.
+  kern_return_t kr = bootstrap_check_in(bootstrap_subset_port_,
+                                        (char*)receive_port_name,
+                                        &service_rcv_port_);
+
+  if (kr != KERN_SUCCESS) {
+#if VERBOSE
+    PRINT_MACH_RESULT(kr, "Inspector: bootstrap_check_in()");
+#endif
+  }
+
+  return kr;
+}
+
+//=============================================================================
+kern_return_t Inspector::ServiceCheckOut(const char *receive_port_name) {
+  // We're done receiving mach messages from the crashed process,
+  // so clean up a bit.
+  kern_return_t kr;
+
+  // DO NOT use mach_port_deallocate() here -- it will fail and the
+  // following bootstrap_register() will also fail leaving our service
+  // name hanging around forever (until reboot)
+  kr = mach_port_destroy(mach_task_self(), service_rcv_port_);
+
+  if (kr != KERN_SUCCESS) {
+    PRINT_MACH_RESULT(kr,
+      "Inspector: UNREGISTERING: service_rcv_port mach_port_deallocate()");
+    return kr;
+  }
+
+  // Unregister the service associated with the receive port.
+  kr = breakpad::BootstrapRegister(bootstrap_subset_port_,
+                                   (char*)receive_port_name,
+                                   MACH_PORT_NULL);
+
+  if (kr != KERN_SUCCESS) {
+    PRINT_MACH_RESULT(kr, "Inspector: UNREGISTERING: bootstrap_register()");
+  }
+
+  return kr;
+}
+
+//=============================================================================
+kern_return_t Inspector::ReadMessages() {
+  // Wait for an initial message from the crashed process containing basic
+  // information about the crash.
+  ReceivePort receive_port(service_rcv_port_);
+
+  MachReceiveMessage message;
+  kern_return_t result = receive_port.WaitForMessage(&message, 1000);
+
+  if (result == KERN_SUCCESS) {
+    InspectorInfo &info = (InspectorInfo &)*message.GetData();
+    exception_type_ = info.exception_type;
+    exception_code_ = info.exception_code;
+    exception_subcode_ = info.exception_subcode;
+
+#if VERBOSE
+    printf("message ID = %d\n", message.GetMessageID());
+#endif
+
+    remote_task_ = message.GetTranslatedPort(0);
+    crashing_thread_ = message.GetTranslatedPort(1);
+    handler_thread_ = message.GetTranslatedPort(2);
+    ack_port_ = message.GetTranslatedPort(3);
+
+#if VERBOSE
+    printf("exception_type = %d\n", exception_type_);
+    printf("exception_code = %d\n", exception_code_);
+    printf("exception_subcode = %d\n", exception_subcode_);
+    printf("remote_task = %d\n", remote_task_);
+    printf("crashing_thread = %d\n", crashing_thread_);
+    printf("handler_thread = %d\n", handler_thread_);
+    printf("ack_port_ = %d\n", ack_port_);
+    printf("parameter count = %d\n", info.parameter_count);
+#endif
+
+    // In certain situations where multiple crash requests come
+    // through quickly, we can end up with the mach IPC messages not
+    // coming through correctly.  Since we don't know what parameters
+    // we've missed, we can't do much besides abort the crash dump
+    // situation in this case.
+    unsigned int parameters_read = 0;
+    // The initial message contains the number of key value pairs that
+    // we are expected to read.
+    // Read each key/value pair, one mach message per key/value pair.
+    for (unsigned int i = 0; i < info.parameter_count; ++i) {
+      MachReceiveMessage parameter_message;
+      result = receive_port.WaitForMessage(&parameter_message, 1000);
+
+      if(result == KERN_SUCCESS) {
+        KeyValueMessageData &key_value_data =
+          (KeyValueMessageData&)*parameter_message.GetData();
+        // If we get a blank key, make sure we don't increment the
+        // parameter count; in some cases (notably on-demand generation
+        // many times in a short period of time) caused the Mach IPC
+        // messages to not come through correctly.
+        if (strlen(key_value_data.key) == 0) {
+          continue;
+        }
+        parameters_read++;
+
+        config_params_.SetKeyValue(key_value_data.key, key_value_data.value);
+      } else {
+        PRINT_MACH_RESULT(result, "Inspector: key/value message");
+        break;
+      }
+    }
+    if (parameters_read != info.parameter_count) {
+      return KERN_FAILURE;
+    }
+  }
+
+  return result;
+}
+
+//=============================================================================
+bool Inspector::InspectTask() {
+  // keep the task quiet while we're looking at it
+  task_suspend(remote_task_);
+
+  NSString *minidumpDir;
+
+  const char *minidumpDirectory =
+    config_params_.GetValueForKey(BREAKPAD_DUMP_DIRECTORY);
+
+  // If the client app has not specified a minidump directory,
+  // use a default of Library/<kDefaultLibrarySubdirectory>/<Product Name>
+  if (!minidumpDirectory || 0 == strlen(minidumpDirectory)) {
+    NSArray *libraryDirectories =
+      NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,
+                                          NSUserDomainMask,
+                                          YES);
+
+    NSString *applicationSupportDirectory =
+        [libraryDirectories objectAtIndex:0];
+    NSString *library_subdirectory = [NSString
+        stringWithUTF8String:kDefaultLibrarySubdirectory];
+    NSString *breakpad_product = [NSString
+        stringWithUTF8String:config_params_.GetValueForKey(BREAKPAD_PRODUCT)];
+
+    NSArray *path_components = [NSArray
+        arrayWithObjects:applicationSupportDirectory,
+                         library_subdirectory,
+                         breakpad_product,
+                         nil];
+
+    minidumpDir = [NSString pathWithComponents:path_components];
+  } else {
+    minidumpDir = [[NSString stringWithUTF8String:minidumpDirectory]
+                    stringByExpandingTildeInPath];
+  }
+
+  MinidumpLocation minidumpLocation(minidumpDir);
+
+  // Obscure bug alert:
+  // Don't use [NSString stringWithFormat] to build up the path here since it
+  // assumes system encoding and in RTL locales will prepend an LTR override
+  // character for paths beginning with '/' which fileSystemRepresentation does
+  // not remove. Filed as rdar://6889706 .
+  NSString *path_ns = [NSString
+      stringWithUTF8String:minidumpLocation.GetPath()];
+  NSString *pathid_ns = [NSString
+      stringWithUTF8String:minidumpLocation.GetID()];
+  NSString *minidumpPath = [path_ns stringByAppendingPathComponent:pathid_ns];
+  minidumpPath = [minidumpPath
+      stringByAppendingPathExtension:@"dmp"];
+
+  config_file_.WriteFile( 0,
+                          &config_params_,
+                          minidumpLocation.GetPath(),
+                          minidumpLocation.GetID());
+
+
+  MinidumpGenerator generator(remote_task_, handler_thread_);
+
+  if (exception_type_ && exception_code_) {
+    generator.SetExceptionInformation(exception_type_,
+                                      exception_code_,
+                                      exception_subcode_,
+                                      crashing_thread_);
+  }
+
+
+  bool result = generator.Write([minidumpPath fileSystemRepresentation]);
+
+  // let the task continue
+  task_resume(remote_task_);
+
+  return result;
+}
+
+//=============================================================================
+// The crashed task needs to be told that the inspection has finished.
+// It will wait on a mach port (with timeout) until we send acknowledgement.
+kern_return_t Inspector::SendAcknowledgement() {
+  if (ack_port_ != MACH_PORT_DEAD) {
+    MachPortSender sender(ack_port_);
+    MachSendMessage ack_message(kMsgType_InspectorAcknowledgement);
+
+    kern_return_t result = sender.SendMessage(ack_message, 2000);
+
+#if VERBOSE
+    PRINT_MACH_RESULT(result, "Inspector: sent acknowledgement");
+#endif
+
+    return result;
+  }
+
+  return KERN_INVALID_NAME;
+}
+
+} // namespace google_breakpad
+
diff --git a/google-breakpad/src/client/mac/crash_generation/InspectorMain.mm b/google-breakpad/src/client/mac/crash_generation/InspectorMain.mm
new file mode 100644
index 0000000..137c6a1
--- /dev/null
+++ b/google-breakpad/src/client/mac/crash_generation/InspectorMain.mm
@@ -0,0 +1,65 @@
+// Copyright (c) 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Main driver for Inspector
+
+#import "client/mac/crash_generation/Inspector.h"
+#import <Cocoa/Cocoa.h>
+
+namespace google_breakpad {
+
+//=============================================================================
+extern "C" {
+
+int main(int argc, char *const argv[]) {
+#if DEBUG
+  // Since we're launched on-demand, this is necessary to see debugging
+  // output in the console window.
+  freopen("/dev/console", "w", stdout);
+  freopen("/dev/console", "w", stderr);
+#endif
+
+  NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
+
+  if (argc != 2) {
+    exit(0);
+  }
+  // Our first command-line argument contains the name of the service
+  // that we're providing.
+  google_breakpad::Inspector inspector;
+  inspector.Inspect(argv[1]);
+
+  [pool release];
+
+  return 0;
+}
+
+} // extern "C"
+
+} // namespace google_breakpad
diff --git a/google-breakpad/src/client/mac/crash_generation/client_info.h b/google-breakpad/src/client/mac/crash_generation/client_info.h
new file mode 100644
index 0000000..a3a95dc
--- /dev/null
+++ b/google-breakpad/src/client/mac/crash_generation/client_info.h
@@ -0,0 +1,47 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef CLIENT_MAC_CRASH_GENERATION_CLIENT_INFO_H_
+#define CLIENT_MAC_CRASH_GENERATION_CLIENT_INFO_H_
+
+namespace google_breakpad {
+
+class ClientInfo {
+ public:
+  explicit ClientInfo(pid_t pid) : pid_(pid) {}
+
+  pid_t pid() const { return pid_; }
+
+ private:
+  pid_t pid_;
+};
+
+}  // namespace google_breakpad
+
+#endif  // CLIENT_MAC_CRASH_GENERATION_CLIENT_INFO_H_
diff --git a/google-breakpad/src/client/mac/crash_generation/crash_generation_client.cc b/google-breakpad/src/client/mac/crash_generation/crash_generation_client.cc
new file mode 100644
index 0000000..ceeb3b3
--- /dev/null
+++ b/google-breakpad/src/client/mac/crash_generation/crash_generation_client.cc
@@ -0,0 +1,72 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include "client/mac/crash_generation/crash_generation_client.h"
+
+#include "client/mac/crash_generation/crash_generation_server.h"
+#include "common/mac/MachIPC.h"
+
+namespace google_breakpad {
+
+bool CrashGenerationClient::RequestDumpForException(
+    int exception_type,
+    int exception_code,
+    int exception_subcode,
+    mach_port_t crashing_thread) {
+  // The server will send a message to this port indicating that it
+  // has finished its work.
+  ReceivePort acknowledge_port;
+
+  MachSendMessage message(kDumpRequestMessage);
+  message.AddDescriptor(mach_task_self());            // this task
+  message.AddDescriptor(crashing_thread);             // crashing thread
+  message.AddDescriptor(mach_thread_self());          // handler thread
+  message.AddDescriptor(acknowledge_port.GetPort());  // message receive port
+
+  ExceptionInfo info;
+  info.exception_type = exception_type;
+  info.exception_code = exception_code;
+  info.exception_subcode = exception_subcode;
+  message.SetData(&info, sizeof(info));
+
+  const mach_msg_timeout_t kSendTimeoutMs = 2 * 1000;
+  kern_return_t result = sender_.SendMessage(message, kSendTimeoutMs);
+  if (result != KERN_SUCCESS)
+    return false;
+
+  // Give the server slightly longer to reply since it has to
+  // inspect this task and write the minidump.
+  const mach_msg_timeout_t kReceiveTimeoutMs = 5 * 1000;
+  MachReceiveMessage acknowledge_message;
+  result = acknowledge_port.WaitForMessage(&acknowledge_message,
+					   kReceiveTimeoutMs);
+  return result == KERN_SUCCESS;
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/client/mac/crash_generation/crash_generation_client.h b/google-breakpad/src/client/mac/crash_generation/crash_generation_client.h
new file mode 100644
index 0000000..527f577
--- /dev/null
+++ b/google-breakpad/src/client/mac/crash_generation/crash_generation_client.h
@@ -0,0 +1,65 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef GOOGLE_BREAKPAD_CLIENT_MAC_CRASH_GENERATION_CRASH_GENERATION_CLIENT_H_
+#define GOOGLE_BREAKPAD_CLIENT_MAC_CRASH_GENERATION_CRASH_GENERATION_CLIENT_H_
+
+#include "common/mac/MachIPC.h"
+
+namespace google_breakpad {
+
+class CrashGenerationClient {
+ public:
+  explicit CrashGenerationClient(const char* mach_port_name)
+    : sender_(mach_port_name) {
+  }
+
+  // Request the crash server to generate a dump.
+  //
+  // Return true if the dump was successful; false otherwise.
+  bool RequestDumpForException(int exception_type,
+			       int exception_code,
+			       int exception_subcode,
+			       mach_port_t crashing_thread);
+
+  bool RequestDump() {
+    return RequestDumpForException(0, 0, 0, MACH_PORT_NULL);
+  }
+
+ private:
+  MachPortSender sender_;
+
+  // Prevent copy construction and assignment.
+  CrashGenerationClient(const CrashGenerationClient&);
+  CrashGenerationClient& operator=(const CrashGenerationClient&);
+};
+
+}  // namespace google_breakpad
+
+#endif  // GOOGLE_BREAKPAD_CLIENT_MAC_CRASH_GENERATION_CRASH_GENERATION_CLIENT_H_
diff --git a/google-breakpad/src/client/mac/crash_generation/crash_generation_server.cc b/google-breakpad/src/client/mac/crash_generation/crash_generation_server.cc
new file mode 100644
index 0000000..451e8d9
--- /dev/null
+++ b/google-breakpad/src/client/mac/crash_generation/crash_generation_server.cc
@@ -0,0 +1,166 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include "client/mac/crash_generation/crash_generation_server.h"
+
+#include <pthread.h>
+
+#include "client/mac/crash_generation/client_info.h"
+#include "client/mac/handler/minidump_generator.h"
+#include "common/mac/scoped_task_suspend-inl.h"
+
+namespace google_breakpad {
+
+CrashGenerationServer::CrashGenerationServer(
+    const char *mach_port_name,
+    FilterCallback filter,
+    void *filter_context,
+    OnClientDumpRequestCallback dump_callback,
+    void *dump_context,
+    OnClientExitingCallback exit_callback,
+    void *exit_context,
+    bool generate_dumps,
+    const std::string &dump_path)
+    : filter_(filter),
+      filter_context_(filter_context),
+      dump_callback_(dump_callback),
+      dump_context_(dump_context),
+      exit_callback_(exit_callback),
+      exit_context_(exit_context),
+      generate_dumps_(generate_dumps),
+      dump_dir_(dump_path.empty() ? "/tmp" : dump_path),
+      started_(false),
+      receive_port_(mach_port_name),
+      mach_port_name_(mach_port_name) {
+}
+
+CrashGenerationServer::~CrashGenerationServer() {
+  if (started_)
+    Stop();
+}
+
+bool CrashGenerationServer::Start() {
+  int thread_create_result = pthread_create(&server_thread_, NULL,
+                                            &WaitForMessages, this);
+  started_ = thread_create_result == 0;
+  return started_;
+}
+
+bool CrashGenerationServer::Stop() {
+  if (!started_)
+    return false;
+
+  // Send a quit message to the background thread, and then join it.
+  MachPortSender sender(mach_port_name_.c_str());
+  MachSendMessage quit_message(kQuitMessage);
+  const mach_msg_timeout_t kSendTimeoutMs = 2 * 1000;
+  kern_return_t result = sender.SendMessage(quit_message, kSendTimeoutMs);
+  if (result == KERN_SUCCESS) {
+    int thread_join_result = pthread_join(server_thread_, NULL);
+    started_ = thread_join_result != 0;
+  }
+
+  return !started_;
+}
+
+// static
+void *CrashGenerationServer::WaitForMessages(void *server) {
+  CrashGenerationServer *self =
+      reinterpret_cast<CrashGenerationServer*>(server);
+  while (self->WaitForOneMessage()) {}
+  return NULL;
+}
+
+bool CrashGenerationServer::WaitForOneMessage() {
+  MachReceiveMessage message;
+  kern_return_t result = receive_port_.WaitForMessage(&message,
+                                                      MACH_MSG_TIMEOUT_NONE);
+  if (result == KERN_SUCCESS) {
+    switch (message.GetMessageID()) {
+      case kDumpRequestMessage: {
+        ExceptionInfo &info = (ExceptionInfo &)*message.GetData();
+      
+        mach_port_t remote_task = message.GetTranslatedPort(0);
+        mach_port_t crashing_thread = message.GetTranslatedPort(1);
+        mach_port_t handler_thread = message.GetTranslatedPort(2);
+        mach_port_t ack_port = message.GetTranslatedPort(3);
+        pid_t remote_pid = -1;
+        pid_for_task(remote_task, &remote_pid);
+        ClientInfo client(remote_pid);
+
+        bool result;
+        std::string dump_path;
+        if (generate_dumps_ && (!filter_ || filter_(filter_context_))) {
+          ScopedTaskSuspend suspend(remote_task);
+
+          MinidumpGenerator generator(remote_task, handler_thread);
+          dump_path = generator.UniqueNameInDirectory(dump_dir_, NULL);
+        
+          if (info.exception_type && info.exception_code) {
+            generator.SetExceptionInformation(info.exception_type,
+                                              info.exception_code,
+                                              info.exception_subcode,
+                                              crashing_thread);
+          }
+          result = generator.Write(dump_path.c_str());
+        } else {
+          result = true;
+        }
+
+        if (result && dump_callback_) {
+          dump_callback_(dump_context_, client, dump_path);
+        }
+
+        // TODO(ted): support a way for the client to send additional data,
+        // perhaps with a callback so users of the server can read the data
+        // themselves?
+      
+        if (ack_port != MACH_PORT_DEAD && ack_port != MACH_PORT_NULL) {
+          MachPortSender sender(ack_port);
+          MachSendMessage ack_message(kAcknowledgementMessage);
+          const mach_msg_timeout_t kSendTimeoutMs = 2 * 1000;
+
+          sender.SendMessage(ack_message, kSendTimeoutMs);
+        }
+
+        if (exit_callback_) {
+          exit_callback_(exit_context_, client);
+        }
+        break;
+      }
+      case kQuitMessage:
+        return false;
+    }
+  } else {  // result != KERN_SUCCESS
+    return false;
+  }
+  return true;
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/client/mac/crash_generation/crash_generation_server.h b/google-breakpad/src/client/mac/crash_generation/crash_generation_server.h
new file mode 100644
index 0000000..85bd5b5
--- /dev/null
+++ b/google-breakpad/src/client/mac/crash_generation/crash_generation_server.h
@@ -0,0 +1,150 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef GOOGLE_BREAKPAD_CLIENT_MAC_CRASH_GENERATION_CRASH_GENERATION_SERVER_H_
+#define GOOGLE_BREAKPAD_CLIENT_MAC_CRASH_GENERATION_CRASH_GENERATION_SERVER_H_
+
+#include <stdint.h>
+
+#include <string>
+
+#include "common/mac/MachIPC.h"
+
+namespace google_breakpad {
+
+class ClientInfo;
+
+// Messages the server can read via its mach port
+enum {
+  kDumpRequestMessage     = 1,
+  kAcknowledgementMessage = 2,
+  kQuitMessage            = 3
+};
+
+// Exception details sent by the client when requesting a dump.
+struct ExceptionInfo {
+  int32_t exception_type;
+  int32_t exception_code;
+  int32_t exception_subcode;
+};
+
+class CrashGenerationServer {
+ public:
+  // WARNING: callbacks may be invoked on a different thread
+  // than that which creates the CrashGenerationServer.  They must
+  // be thread safe.
+  typedef void (*OnClientDumpRequestCallback)(void *context,
+                                              const ClientInfo &client_info,
+                                              const std::string &file_path);
+
+  typedef void (*OnClientExitingCallback)(void *context,
+                                          const ClientInfo &client_info);
+  // If a FilterCallback returns false, the dump will not be written.
+  typedef bool (*FilterCallback)(void *context);
+
+  // Create an instance with the given parameters.
+  //
+  // mach_port_name: Named server port to listen on.
+  // filter: Callback for a client to cancel writing a dump.
+  // filter_context: Context for the filter callback.
+  // dump_callback: Callback for a client crash dump request.
+  // dump_context: Context for client crash dump request callback.
+  // exit_callback: Callback for client process exit.
+  // exit_context: Context for client exit callback.
+  // generate_dumps: Whether to automatically generate dumps.
+  //     Client code of this class might want to generate dumps explicitly
+  //     in the crash dump request callback. In that case, false can be
+  //     passed for this parameter.
+  // dump_path: Path for generating dumps; required only if true is
+  //     passed for generateDumps parameter; NULL can be passed otherwise.
+  CrashGenerationServer(const char *mach_port_name,
+                        FilterCallback filter,
+                        void *filter_context,
+                        OnClientDumpRequestCallback dump_callback,
+                        void *dump_context,
+                        OnClientExitingCallback exit_callback,
+                        void *exit_context,
+                        bool generate_dumps,
+                        const std::string &dump_path);
+
+  ~CrashGenerationServer();
+
+  // Perform initialization steps needed to start listening to clients.
+  //
+  // Return true if initialization is successful; false otherwise.
+  bool Start();
+
+  // Stop the server.
+  bool Stop();
+
+ private:
+  // Return a unique filename at which a minidump can be written.
+  bool MakeMinidumpFilename(std::string &outFilename);
+
+  // Loop reading client messages and responding to them until
+  // a quit message is received.
+  static void *WaitForMessages(void *server);
+
+  // Wait for a single client message and respond to it. Returns false
+  // if a quit message was received or if an error occurred.
+  bool WaitForOneMessage();
+
+  FilterCallback filter_;
+  void *filter_context_;
+
+  OnClientDumpRequestCallback dump_callback_;
+  void *dump_context_;
+
+  OnClientExitingCallback exit_callback_;
+  void *exit_context_;
+
+  bool generate_dumps_;
+
+  std::string dump_dir_;
+
+  bool started_;
+
+  // The mach port that receives requests to dump from child processes.
+  ReceivePort receive_port_;
+
+  // The name of the mach port. Stored so the Stop method can message
+  // the background thread to shut it down.
+  std::string mach_port_name_;
+
+  // The thread that waits on the receive port.
+  pthread_t server_thread_;
+
+  // Disable copy constructor and operator=.
+  CrashGenerationServer(const CrashGenerationServer&);
+  CrashGenerationServer& operator=(const CrashGenerationServer&);
+};
+
+}  // namespace google_breakpad
+
+#endif  // GOOGLE_BREAKPAD_CLIENT_MAC_CRASH_GENERATION_CRASH_GENERATION_SERVER_H_
diff --git a/google-breakpad/src/client/mac/gcov/libgcov.a b/google-breakpad/src/client/mac/gcov/libgcov.a
new file mode 100644
index 0000000..f45a58d
--- /dev/null
+++ b/google-breakpad/src/client/mac/gcov/libgcov.a
Binary files differ
diff --git a/google-breakpad/src/client/mac/handler/breakpad_nlist_64.cc b/google-breakpad/src/client/mac/handler/breakpad_nlist_64.cc
new file mode 100644
index 0000000..3492b82
--- /dev/null
+++ b/google-breakpad/src/client/mac/handler/breakpad_nlist_64.cc
@@ -0,0 +1,402 @@
+/*
+ * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ * 
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this
+ * file.
+ * 
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ * 
+ * @APPLE_LICENSE_HEADER_END@
+ */
+/*
+ * Copyright (c) 1989, 1993
+ * The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *      This product includes software developed by the University of
+ *      California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+
+/*
+ * This file was copied from libc/gen/nlist.c from Darwin's source code       
+ * The version of nlist used as a base is from 10.5.2, libc-498               
+ * http://www.opensource.apple.com/darwinsource/10.5.2/Libc-498/gen/nlist.c   
+ *                                                                            
+ * The full tarball is at:                                                    
+ * http://www.opensource.apple.com/darwinsource/tarballs/apsl/Libc-498.tar.gz 
+ *                                                                            
+ * I've modified it to be compatible with 64-bit images.
+*/
+
+#include "breakpad_nlist_64.h"
+
+#include <CoreFoundation/CoreFoundation.h>
+#include <fcntl.h>
+#include <mach-o/nlist.h>
+#include <mach-o/loader.h>
+#include <mach-o/fat.h>
+#include <mach/mach.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <sys/uio.h>
+#include <TargetConditionals.h>
+#include <unistd.h>
+
+/* Stuff lifted from <a.out.h> and <sys/exec.h> since they are gone */
+/*
+ * Header prepended to each a.out file.
+ */
+struct exec {
+  unsigned short  a_machtype;     /* machine type */
+  unsigned short  a_magic;        /* magic number */
+  unsigned long a_text;         /* size of text segment */
+  unsigned long a_data;         /* size of initialized data */
+  unsigned long a_bss;          /* size of uninitialized data */
+  unsigned long a_syms;         /* size of symbol table */
+  unsigned long a_entry;        /* entry point */
+  unsigned long a_trsize;       /* size of text relocation */
+  unsigned long a_drsize;       /* size of data relocation */
+};
+
+#define OMAGIC  0407            /* old impure format */
+#define NMAGIC  0410            /* read-only text */
+#define ZMAGIC  0413            /* demand load format */
+
+#define N_BADMAG(x)                                                     \
+  (((x).a_magic)!=OMAGIC && ((x).a_magic)!=NMAGIC && ((x).a_magic)!=ZMAGIC)
+#define N_TXTOFF(x)                                     \
+  ((x).a_magic==ZMAGIC ? 0 : sizeof (struct exec))
+#define N_SYMOFF(x)                                                     \
+  (N_TXTOFF(x) + (x).a_text+(x).a_data + (x).a_trsize+(x).a_drsize)
+
+// Traits structs for specializing function templates to handle
+// 32-bit/64-bit Mach-O files.
+template<typename T>
+struct MachBits {};
+
+typedef struct nlist nlist32;
+typedef struct nlist_64 nlist64;
+
+template<>
+struct MachBits<nlist32> {
+  typedef mach_header mach_header_type;
+  typedef uint32_t word_type;
+  static const uint32_t magic = MH_MAGIC;
+};
+
+template<>
+struct MachBits<nlist64> {
+  typedef mach_header_64 mach_header_type;
+  typedef uint64_t word_type;
+  static const uint32_t magic = MH_MAGIC_64;
+};
+
+template<typename nlist_type>
+int
+__breakpad_fdnlist(int fd, nlist_type *list, const char **symbolNames,
+                   cpu_type_t cpu_type);
+
+/*
+ * nlist - retreive attributes from name list (string table version)
+ */
+
+template <typename nlist_type>
+int breakpad_nlist_common(const char *name,
+                          nlist_type *list,
+                          const char **symbolNames,
+                          cpu_type_t cpu_type) {
+  int fd = open(name, O_RDONLY, 0);
+  if (fd < 0)
+    return -1;
+  int n = __breakpad_fdnlist(fd, list, symbolNames, cpu_type);
+  close(fd);
+  return n;
+}
+
+int breakpad_nlist(const char *name,
+                   struct nlist *list,
+                   const char **symbolNames,
+                   cpu_type_t cpu_type) {
+  return breakpad_nlist_common(name, list, symbolNames, cpu_type);
+}
+
+int breakpad_nlist(const char *name,
+                   struct nlist_64 *list,
+                   const char **symbolNames,
+                   cpu_type_t cpu_type) {
+  return breakpad_nlist_common(name, list, symbolNames, cpu_type);
+}
+
+/* Note: __fdnlist() is called from kvm_nlist in libkvm's kvm.c */
+
+template<typename nlist_type>
+int __breakpad_fdnlist(int fd, nlist_type *list, const char **symbolNames,
+                       cpu_type_t cpu_type) {
+  typedef typename MachBits<nlist_type>::mach_header_type mach_header_type;
+  typedef typename MachBits<nlist_type>::word_type word_type;
+
+  const uint32_t magic = MachBits<nlist_type>::magic;
+
+  int maxlen = 500;
+  int nreq = 0;
+  for (nlist_type* q = list;
+       symbolNames[q-list] && symbolNames[q-list][0];
+       q++, nreq++) {
+
+    q->n_type = 0;
+    q->n_value = 0;
+    q->n_desc = 0;
+    q->n_sect = 0;
+    q->n_un.n_strx = 0;
+  }
+
+  struct exec buf;
+  if (read(fd, (char *)&buf, sizeof(buf)) != sizeof(buf) ||
+      (N_BADMAG(buf) && *((uint32_t *)&buf) != magic &&
+        CFSwapInt32BigToHost(*((uint32_t *)&buf)) != FAT_MAGIC &&
+       /* The following is the big-endian ppc64 check */
+       (*((uint32_t*)&buf)) != FAT_MAGIC)) {
+    return -1;
+  }
+
+  /* Deal with fat file if necessary */
+  unsigned arch_offset = 0;
+  if (CFSwapInt32BigToHost(*((uint32_t *)&buf)) == FAT_MAGIC ||
+      /* The following is the big-endian ppc64 check */
+      *((unsigned int *)&buf) == FAT_MAGIC) {
+    /* Read in the fat header */
+    struct fat_header fh;
+    if (lseek(fd, 0, SEEK_SET) == -1) {
+      return -1;
+    }
+    if (read(fd, (char *)&fh, sizeof(fh)) != sizeof(fh)) {
+      return -1;
+    }
+
+    /* Convert fat_narchs to host byte order */
+    fh.nfat_arch = CFSwapInt32BigToHost(fh.nfat_arch);
+
+    /* Read in the fat archs */
+    struct fat_arch *fat_archs =
+        (struct fat_arch *)malloc(fh.nfat_arch * sizeof(struct fat_arch));
+    if (fat_archs == NULL) {
+      return -1;
+    }
+    if (read(fd, (char *)fat_archs,
+             sizeof(struct fat_arch) * fh.nfat_arch) !=
+        (ssize_t)(sizeof(struct fat_arch) * fh.nfat_arch)) {
+      free(fat_archs);
+      return -1;
+    }
+
+    /*
+     * Convert archs to host byte ordering (a constraint of
+     * cpusubtype_getbestarch()
+     */
+    for (unsigned i = 0; i < fh.nfat_arch; i++) {
+      fat_archs[i].cputype =
+        CFSwapInt32BigToHost(fat_archs[i].cputype);
+      fat_archs[i].cpusubtype =
+        CFSwapInt32BigToHost(fat_archs[i].cpusubtype);
+      fat_archs[i].offset =
+        CFSwapInt32BigToHost(fat_archs[i].offset);
+      fat_archs[i].size =
+        CFSwapInt32BigToHost(fat_archs[i].size);
+      fat_archs[i].align =
+        CFSwapInt32BigToHost(fat_archs[i].align);
+    }
+
+    struct fat_arch *fap = NULL;
+    for (unsigned i = 0; i < fh.nfat_arch; i++) {
+      if (fat_archs[i].cputype == cpu_type) {
+        fap = &fat_archs[i];
+        break;
+      }
+    }
+
+    if (!fap) {
+      free(fat_archs);
+      return -1;
+    }
+    arch_offset = fap->offset;
+    free(fat_archs);
+
+    /* Read in the beginning of the architecture-specific file */
+    if (lseek(fd, arch_offset, SEEK_SET) == -1) {
+      return -1;
+    }
+    if (read(fd, (char *)&buf, sizeof(buf)) != sizeof(buf)) {
+      return -1;
+    }
+  }
+
+  off_t sa;  /* symbol address */
+  off_t ss;  /* start of strings */
+  register_t n;
+  if (*((unsigned int *)&buf) == magic) {
+    if (lseek(fd, arch_offset, SEEK_SET) == -1) {
+      return -1;
+    }
+    mach_header_type mh;
+    if (read(fd, (char *)&mh, sizeof(mh)) != sizeof(mh)) {
+      return -1;
+    }
+
+    struct load_command *load_commands =
+        (struct load_command *)malloc(mh.sizeofcmds);
+    if (load_commands == NULL) {
+      return -1;
+    }
+    if (read(fd, (char *)load_commands, mh.sizeofcmds) !=
+        (ssize_t)mh.sizeofcmds) {
+      free(load_commands);
+      return -1;
+    }
+    struct symtab_command *stp = NULL;
+    struct load_command *lcp = load_commands;
+    // iterate through all load commands, looking for
+    // LC_SYMTAB load command
+    for (uint32_t i = 0; i < mh.ncmds; i++) {
+      if (lcp->cmdsize % sizeof(word_type) != 0 ||
+          lcp->cmdsize <= 0 ||
+          (char *)lcp + lcp->cmdsize >
+          (char *)load_commands + mh.sizeofcmds) {
+        free(load_commands);
+        return -1;
+      }
+      if (lcp->cmd == LC_SYMTAB) {
+        if (lcp->cmdsize !=
+            sizeof(struct symtab_command)) {
+          free(load_commands);
+          return -1;
+        }
+        stp = (struct symtab_command *)lcp;
+        break;
+      }
+      lcp = (struct load_command *)
+        ((char *)lcp + lcp->cmdsize);
+    }
+    if (stp == NULL) {
+      free(load_commands);
+      return -1;
+    }
+    // sa points to the beginning of the symbol table
+    sa = stp->symoff + arch_offset;
+    // ss points to the beginning of the string table
+    ss = stp->stroff + arch_offset;
+    // n is the number of bytes in the symbol table
+    // each symbol table entry is an nlist structure
+    n = stp->nsyms * sizeof(nlist_type);
+    free(load_commands);
+  } else {
+    sa = N_SYMOFF(buf) + arch_offset;
+    ss = sa + buf.a_syms + arch_offset;
+    n = buf.a_syms;
+  }
+
+  if (lseek(fd, sa, SEEK_SET) == -1) {
+    return -1;
+  }
+
+  // the algorithm here is to read the nlist entries in m-sized
+  // chunks into q.  q is then iterated over. for each entry in q,
+  // use the string table index(q->n_un.n_strx) to read the symbol 
+  // name, then scan the nlist entries passed in by the user(via p),
+  // and look for a match
+  while (n) {
+    nlist_type space[BUFSIZ/sizeof (nlist_type)];
+    register_t m = sizeof (space);
+
+    if (n < m)
+      m = n;
+    if (read(fd, (char *)space, m) != m)
+      break;
+    n -= m;
+    off_t savpos = lseek(fd, 0, SEEK_CUR);
+    if (savpos == -1) {
+      return -1;
+    }
+    for (nlist_type* q = space; (m -= sizeof(nlist_type)) >= 0; q++) {
+      char nambuf[BUFSIZ];
+
+      if (q->n_un.n_strx == 0 || q->n_type & N_STAB)
+        continue;
+
+      // seek to the location in the binary where the symbol
+      // name is stored & read it into memory
+      if (lseek(fd, ss+q->n_un.n_strx, SEEK_SET) == -1) {
+        return -1;
+      }
+      if (read(fd, nambuf, maxlen+1) == -1) {
+        return -1;
+      }
+      const char *s2 = nambuf;
+      for (nlist_type *p = list; 
+           symbolNames[p-list] && symbolNames[p-list][0];
+           p++) {
+        // get the symbol name the user has passed in that 
+        // corresponds to the nlist entry that we're looking at
+        const char *s1 = symbolNames[p - list];
+        while (*s1) {
+          if (*s1++ != *s2++)
+            goto cont;
+        }
+        if (*s2)
+          goto cont;
+
+        p->n_value = q->n_value;
+        p->n_type = q->n_type;
+        p->n_desc = q->n_desc;
+        p->n_sect = q->n_sect;
+        p->n_un.n_strx = q->n_un.n_strx;
+        if (--nreq == 0)
+          return nreq;
+
+        break;
+      cont:           ;
+      }
+    }
+    if (lseek(fd, savpos, SEEK_SET) == -1) {
+      return -1;
+    }
+  }
+  return nreq;
+}
diff --git a/google-breakpad/src/client/mac/handler/breakpad_nlist_64.h b/google-breakpad/src/client/mac/handler/breakpad_nlist_64.h
new file mode 100644
index 0000000..1d2c639
--- /dev/null
+++ b/google-breakpad/src/client/mac/handler/breakpad_nlist_64.h
@@ -0,0 +1,47 @@
+// Copyright (c) 2008, Google Inc.
+// All rights reserved
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// breakpad_nlist.h
+//
+// This file is meant to provide a header for clients of the modified
+// nlist function implemented to work on 64-bit.
+
+#ifndef CLIENT_MAC_HANDLER_BREAKPAD_NLIST_H__
+
+#include <mach/machine.h>
+
+int breakpad_nlist(const char *name,
+                   struct nlist *list,
+                   const char **symbolNames,
+                   cpu_type_t cpu_type);
+int breakpad_nlist(const char *name,
+                   struct nlist_64 *list,
+                   const char **symbolNames,
+                   cpu_type_t cpu_type);
+
+#endif  /* CLIENT_MAC_HANDLER_BREAKPAD_NLIST_H__ */
diff --git a/google-breakpad/src/client/mac/handler/dynamic_images.cc b/google-breakpad/src/client/mac/handler/dynamic_images.cc
new file mode 100644
index 0000000..3dc4f3b
--- /dev/null
+++ b/google-breakpad/src/client/mac/handler/dynamic_images.cc
@@ -0,0 +1,577 @@
+// Copyright (c) 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include "client/mac/handler/dynamic_images.h"
+
+extern "C" { // needed to compile on Leopard
+  #include <mach-o/nlist.h>
+  #include <stdlib.h>
+  #include <stdio.h>
+}
+
+#include <assert.h>
+#include <AvailabilityMacros.h>
+#include <dlfcn.h>
+#include <mach/task_info.h>
+#include <sys/sysctl.h>
+#include <TargetConditionals.h>
+#include <unistd.h>
+
+#include <algorithm>
+#include <string>
+#include <vector>
+
+#include "breakpad_nlist_64.h"
+
+#if !TARGET_OS_IPHONE
+#include <CoreServices/CoreServices.h>
+
+#ifndef MAC_OS_X_VERSION_10_6
+#define MAC_OS_X_VERSION_10_6 1060
+#endif
+
+#if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_6
+
+// Fallback declarations for TASK_DYLD_INFO and friends, introduced in
+// <mach/task_info.h> in the Mac OS X 10.6 SDK.
+#define TASK_DYLD_INFO 17
+struct task_dyld_info {
+  mach_vm_address_t all_image_info_addr;
+  mach_vm_size_t all_image_info_size;
+};
+typedef struct task_dyld_info task_dyld_info_data_t;
+typedef struct task_dyld_info *task_dyld_info_t;
+#define TASK_DYLD_INFO_COUNT (sizeof(task_dyld_info_data_t) / sizeof(natural_t))
+
+#endif
+
+#endif  // !TARGET_OS_IPHONE
+
+namespace google_breakpad {
+
+using std::string;
+using std::vector;
+
+//==============================================================================
+// Returns the size of the memory region containing |address| and the
+// number of bytes from |address| to the end of the region.
+// We potentially, will extend the size of the original
+// region by the size of the following region if it's contiguous with the
+// first in order to handle cases when we're reading strings and they
+// straddle two vm regions.
+//
+static mach_vm_size_t GetMemoryRegionSize(task_port_t target_task,
+                                          const uint64_t address,
+                                          mach_vm_size_t *size_to_end) {
+  mach_vm_address_t region_base = (mach_vm_address_t)address;
+  mach_vm_size_t region_size;
+  natural_t nesting_level = 0;
+  vm_region_submap_info_64 submap_info;
+  mach_msg_type_number_t info_count = VM_REGION_SUBMAP_INFO_COUNT_64;
+
+  // Get information about the vm region containing |address|
+  vm_region_recurse_info_t region_info;
+  region_info = reinterpret_cast<vm_region_recurse_info_t>(&submap_info);
+
+  kern_return_t result =
+    mach_vm_region_recurse(target_task,
+                           &region_base,
+                           &region_size,
+                           &nesting_level,
+                           region_info,
+                           &info_count);
+
+  if (result == KERN_SUCCESS) {
+    // Get distance from |address| to the end of this region
+    *size_to_end = region_base + region_size -(mach_vm_address_t)address;
+
+    // If we want to handle strings as long as 4096 characters we may need
+    // to check if there's a vm region immediately following the first one.
+    // If so, we need to extend |*size_to_end| to go all the way to the end
+    // of the second region.
+    if (*size_to_end < 4096) {
+      // Second region starts where the first one ends
+      mach_vm_address_t region_base2 =
+        (mach_vm_address_t)(region_base + region_size);
+      mach_vm_size_t region_size2;
+
+      // Get information about the following vm region
+      result =
+        mach_vm_region_recurse(target_task,
+                               &region_base2,
+                               &region_size2,
+                               &nesting_level,
+                               region_info,
+                               &info_count);
+
+      // Extend region_size to go all the way to the end of the 2nd region
+      if (result == KERN_SUCCESS
+          && region_base2 == region_base + region_size) {
+        region_size += region_size2;
+      }
+    }
+
+    *size_to_end = region_base + region_size -(mach_vm_address_t)address;
+  } else {
+    region_size = 0;
+    *size_to_end = 0;
+  }
+
+  return region_size;
+}
+
+#define kMaxStringLength 8192
+//==============================================================================
+// Reads a NULL-terminated string from another task.
+//
+// Warning!  This will not read any strings longer than kMaxStringLength-1
+//
+static string ReadTaskString(task_port_t target_task,
+                             const uint64_t address) {
+  // The problem is we don't know how much to read until we know how long
+  // the string is. And we don't know how long the string is, until we've read
+  // the memory!  So, we'll try to read kMaxStringLength bytes
+  // (or as many bytes as we can until we reach the end of the vm region).
+  mach_vm_size_t size_to_end;
+  GetMemoryRegionSize(target_task, address, &size_to_end);
+
+  if (size_to_end > 0) {
+    mach_vm_size_t size_to_read =
+      size_to_end > kMaxStringLength ? kMaxStringLength : size_to_end;
+
+    vector<uint8_t> bytes;
+    if (ReadTaskMemory(target_task, address, (size_t)size_to_read, bytes) !=
+        KERN_SUCCESS)
+      return string();
+
+    return string(reinterpret_cast<const char*>(&bytes[0]));
+  }
+
+  return string();
+}
+
+//==============================================================================
+// Reads an address range from another task. The bytes read will be returned
+// in bytes, which will be resized as necessary.
+kern_return_t ReadTaskMemory(task_port_t target_task,
+                             const uint64_t address,
+                             size_t length,
+                             vector<uint8_t> &bytes) {
+  int systemPageSize = getpagesize();
+
+  // use the negative of the page size for the mask to find the page address
+  mach_vm_address_t page_address = address & (-systemPageSize);
+
+  mach_vm_address_t last_page_address =
+      (address + length + (systemPageSize - 1)) & (-systemPageSize);
+
+  mach_vm_size_t page_size = last_page_address - page_address;
+  uint8_t* local_start;
+  uint32_t local_length;
+
+  kern_return_t r = mach_vm_read(target_task,
+                                 page_address,
+                                 page_size,
+                                 reinterpret_cast<vm_offset_t*>(&local_start),
+                                 &local_length);
+
+  if (r != KERN_SUCCESS)
+    return r;
+
+  bytes.resize(length);
+  memcpy(&bytes[0],
+         &local_start[(mach_vm_address_t)address - page_address],
+         length);
+  mach_vm_deallocate(mach_task_self(), (uintptr_t)local_start, local_length);
+  return KERN_SUCCESS;
+}
+
+#pragma mark -
+
+//==============================================================================
+// Traits structs for specializing function templates to handle
+// 32-bit/64-bit Mach-O files.
+struct MachO32 {
+  typedef mach_header mach_header_type;
+  typedef segment_command mach_segment_command_type;
+  typedef dyld_image_info32 dyld_image_info;
+  typedef dyld_all_image_infos32 dyld_all_image_infos;
+  typedef struct nlist nlist_type;
+  static const uint32_t magic = MH_MAGIC;
+  static const uint32_t segment_load_command = LC_SEGMENT;
+};
+
+struct MachO64 {
+  typedef mach_header_64 mach_header_type;
+  typedef segment_command_64 mach_segment_command_type;
+  typedef dyld_image_info64 dyld_image_info;
+  typedef dyld_all_image_infos64 dyld_all_image_infos;
+  typedef struct nlist_64 nlist_type;
+  static const uint32_t magic = MH_MAGIC_64;
+  static const uint32_t segment_load_command = LC_SEGMENT_64;
+};
+
+template<typename MachBits>
+bool FindTextSection(DynamicImage& image) {
+  typedef typename MachBits::mach_header_type mach_header_type;
+  typedef typename MachBits::mach_segment_command_type
+      mach_segment_command_type;
+  
+  const mach_header_type* header =
+      reinterpret_cast<const mach_header_type*>(&image.header_[0]);
+
+  if(header->magic != MachBits::magic) {
+    return false;
+  }
+
+  const struct load_command *cmd =
+      reinterpret_cast<const struct load_command *>(header + 1);
+
+  bool found_text_section = false;
+  bool found_dylib_id_command = false;
+  for (unsigned int i = 0; cmd && (i < header->ncmds); ++i) {
+    if (!found_text_section) {
+      if (cmd->cmd == MachBits::segment_load_command) {
+        const mach_segment_command_type *seg =
+            reinterpret_cast<const mach_segment_command_type *>(cmd);
+
+        if (!strcmp(seg->segname, "__TEXT")) {
+          image.vmaddr_ = static_cast<mach_vm_address_t>(seg->vmaddr);
+          image.vmsize_ = static_cast<mach_vm_size_t>(seg->vmsize);
+          image.slide_ = 0;
+
+          if (seg->fileoff == 0 && seg->filesize != 0) {
+            image.slide_ =
+                (uintptr_t)image.GetLoadAddress() - (uintptr_t)seg->vmaddr;
+          }
+          found_text_section = true;
+        }
+      }
+    }
+
+    if (!found_dylib_id_command) {
+      if (cmd->cmd == LC_ID_DYLIB) {
+        const struct dylib_command *dc =
+            reinterpret_cast<const struct dylib_command *>(cmd);
+
+        image.version_ = dc->dylib.current_version;
+        found_dylib_id_command = true;
+      }
+    }
+
+    if (found_dylib_id_command && found_text_section) {
+      return true;
+    }
+
+    cmd = reinterpret_cast<const struct load_command *>
+        (reinterpret_cast<const char *>(cmd) + cmd->cmdsize);
+  }
+
+  return false;
+}
+
+//==============================================================================
+// Initializes vmaddr_, vmsize_, and slide_
+void DynamicImage::CalculateMemoryAndVersionInfo() {
+  // unless we can process the header, ensure that calls to
+  // IsValid() will return false
+  vmaddr_ = 0;
+  vmsize_ = 0;
+  slide_ = 0;
+  version_ = 0;
+
+  // The function template above does all the real work.
+  if (Is64Bit())
+    FindTextSection<MachO64>(*this);
+  else
+    FindTextSection<MachO32>(*this);
+}
+
+//==============================================================================
+// The helper function template abstracts the 32/64-bit differences.
+template<typename MachBits>
+uint32_t GetFileTypeFromHeader(DynamicImage& image) {
+  typedef typename MachBits::mach_header_type mach_header_type;
+
+  const mach_header_type* header =
+      reinterpret_cast<const mach_header_type*>(&image.header_[0]);
+  return header->filetype;
+}
+
+uint32_t DynamicImage::GetFileType() {
+  if (Is64Bit())
+    return GetFileTypeFromHeader<MachO64>(*this);
+
+  return GetFileTypeFromHeader<MachO32>(*this);
+}
+
+#pragma mark -
+
+//==============================================================================
+// Loads information about dynamically loaded code in the given task.
+DynamicImages::DynamicImages(mach_port_t task)
+    : task_(task),
+      cpu_type_(DetermineTaskCPUType(task)),
+      image_list_() {
+  ReadImageInfoForTask();
+}
+
+template<typename MachBits>
+static uint64_t LookupSymbol(const char* symbol_name,
+                             const char* filename,
+                             cpu_type_t cpu_type) {
+  typedef typename MachBits::nlist_type nlist_type;
+
+  nlist_type symbol_info[8] = {};
+  const char *symbolNames[2] = { symbol_name, "\0" };
+  nlist_type &list = symbol_info[0];
+  int invalidEntriesCount = breakpad_nlist(filename,
+                                           &list,
+                                           symbolNames,
+                                           cpu_type);
+
+  if(invalidEntriesCount != 0) {
+    return 0;
+  }
+
+  assert(list.n_value);
+  return list.n_value;
+}
+
+#if TARGET_OS_IPHONE
+static bool HasTaskDyldInfo() {
+  return true;
+}
+#else
+static SInt32 GetOSVersionInternal() {
+  SInt32 os_version = 0;
+  Gestalt(gestaltSystemVersion, &os_version);
+  return os_version;
+}
+
+static SInt32 GetOSVersion() {
+  static SInt32 os_version = GetOSVersionInternal();
+  return os_version;
+}
+
+static bool HasTaskDyldInfo() {
+#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6
+  return true;
+#else
+  return GetOSVersion() >= 0x1060;
+#endif
+}
+#endif  // TARGET_OS_IPHONE
+
+uint64_t DynamicImages::GetDyldAllImageInfosPointer() {
+  if (HasTaskDyldInfo()) {
+    task_dyld_info_data_t task_dyld_info;
+    mach_msg_type_number_t count = TASK_DYLD_INFO_COUNT;
+    if (task_info(task_, TASK_DYLD_INFO, (task_info_t)&task_dyld_info,
+                  &count) != KERN_SUCCESS) {
+      return 0;
+    }
+
+    return (uint64_t)task_dyld_info.all_image_info_addr;
+  } else {
+    const char *imageSymbolName = "_dyld_all_image_infos";
+    const char *dyldPath = "/usr/lib/dyld";
+
+    if (Is64Bit())
+      return LookupSymbol<MachO64>(imageSymbolName, dyldPath, cpu_type_);
+    return LookupSymbol<MachO32>(imageSymbolName, dyldPath, cpu_type_);
+  }
+}
+
+//==============================================================================
+// This code was written using dyld_debug.c (from Darwin) as a guide.
+
+template<typename MachBits>
+void ReadImageInfo(DynamicImages& images,
+                   uint64_t image_list_address) {
+  typedef typename MachBits::dyld_image_info dyld_image_info;
+  typedef typename MachBits::dyld_all_image_infos dyld_all_image_infos;
+  typedef typename MachBits::mach_header_type mach_header_type;
+
+  // Read the structure inside of dyld that contains information about
+  // loaded images.  We're reading from the desired task's address space.
+
+  // Here we make the assumption that dyld loaded at the same address in
+  // the crashed process vs. this one.  This is an assumption made in
+  // "dyld_debug.c" and is said to be nearly always valid.
+  vector<uint8_t> dyld_all_info_bytes;
+  if (ReadTaskMemory(images.task_,
+                     image_list_address,
+                     sizeof(dyld_all_image_infos),
+                     dyld_all_info_bytes) != KERN_SUCCESS)
+    return;
+
+  dyld_all_image_infos *dyldInfo =
+    reinterpret_cast<dyld_all_image_infos*>(&dyld_all_info_bytes[0]);
+
+  // number of loaded images
+  int count = dyldInfo->infoArrayCount;
+
+  // Read an array of dyld_image_info structures each containing
+  // information about a loaded image.
+  vector<uint8_t> dyld_info_array_bytes;
+    if (ReadTaskMemory(images.task_,
+                       dyldInfo->infoArray,
+                       count * sizeof(dyld_image_info),
+                       dyld_info_array_bytes) != KERN_SUCCESS)
+      return;
+
+    dyld_image_info *infoArray =
+        reinterpret_cast<dyld_image_info*>(&dyld_info_array_bytes[0]);
+    images.image_list_.reserve(count);
+
+    for (int i = 0; i < count; ++i) {
+      dyld_image_info &info = infoArray[i];
+
+      // First read just the mach_header from the image in the task.
+      vector<uint8_t> mach_header_bytes;
+      if (ReadTaskMemory(images.task_,
+                         info.load_address_,
+                         sizeof(mach_header_type),
+                         mach_header_bytes) != KERN_SUCCESS)
+        continue;  // bail on this dynamic image
+
+      mach_header_type *header =
+          reinterpret_cast<mach_header_type*>(&mach_header_bytes[0]);
+
+      // Now determine the total amount necessary to read the header
+      // plus all of the load commands.
+      size_t header_size =
+          sizeof(mach_header_type) + header->sizeofcmds;
+
+      if (ReadTaskMemory(images.task_,
+                         info.load_address_,
+                         header_size,
+                         mach_header_bytes) != KERN_SUCCESS)
+        continue;
+
+      // Read the file name from the task's memory space.
+      string file_path;
+      if (info.file_path_) {
+        // Although we're reading kMaxStringLength bytes, it's copied in the
+        // the DynamicImage constructor below with the correct string length,
+        // so it's not really wasting memory.
+        file_path = ReadTaskString(images.task_, info.file_path_);
+      }
+
+      // Create an object representing this image and add it to our list.
+      DynamicImage *new_image;
+      new_image = new DynamicImage(&mach_header_bytes[0],
+                                   header_size,
+                                   info.load_address_,
+                                   file_path,
+                                   static_cast<uintptr_t>(info.file_mod_date_),
+                                   images.task_,
+                                   images.cpu_type_);
+
+      if (new_image->IsValid()) {
+        images.image_list_.push_back(DynamicImageRef(new_image));
+      } else {
+        delete new_image;
+      }
+    }
+
+    // sorts based on loading address
+    sort(images.image_list_.begin(), images.image_list_.end());
+    // remove duplicates - this happens in certain strange cases
+    // You can see it in DashboardClient when Google Gadgets plugin
+    // is installed.  Apple's crash reporter log and gdb "info shared"
+    // both show the same library multiple times at the same address
+
+    vector<DynamicImageRef>::iterator it = unique(images.image_list_.begin(),
+                                                  images.image_list_.end());
+    images.image_list_.erase(it, images.image_list_.end());
+}
+
+void DynamicImages::ReadImageInfoForTask() {
+  uint64_t imageList = GetDyldAllImageInfosPointer();
+
+  if (imageList) {
+    if (Is64Bit())
+      ReadImageInfo<MachO64>(*this, imageList);
+    else
+      ReadImageInfo<MachO32>(*this, imageList);
+  }
+}
+
+//==============================================================================
+DynamicImage  *DynamicImages::GetExecutableImage() {
+  int executable_index = GetExecutableImageIndex();
+
+  if (executable_index >= 0) {
+    return GetImage(executable_index);
+  }
+
+  return NULL;
+}
+
+//==============================================================================
+// returns -1 if failure to find executable
+int DynamicImages::GetExecutableImageIndex() {
+  int image_count = GetImageCount();
+
+  for (int i = 0; i < image_count; ++i) {
+    DynamicImage  *image = GetImage(i);
+    if (image->GetFileType() == MH_EXECUTE) {
+      return i;
+    }
+  }
+
+  return -1;
+}
+
+//==============================================================================
+// static
+cpu_type_t DynamicImages::DetermineTaskCPUType(task_t task) {
+  if (task == mach_task_self())
+    return GetNativeCPUType();
+
+  int mib[CTL_MAXNAME];
+  size_t mibLen = CTL_MAXNAME;
+  int err = sysctlnametomib("sysctl.proc_cputype", mib, &mibLen);
+  if (err == 0) {
+    assert(mibLen < CTL_MAXNAME);
+    pid_for_task(task, &mib[mibLen]);
+    mibLen += 1;
+
+    cpu_type_t cpu_type;
+    size_t cpuTypeSize = sizeof(cpu_type);
+    sysctl(mib, static_cast<u_int>(mibLen), &cpu_type, &cpuTypeSize, 0, 0);
+    return cpu_type;
+  }
+
+  return GetNativeCPUType();
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/client/mac/handler/dynamic_images.h b/google-breakpad/src/client/mac/handler/dynamic_images.h
new file mode 100644
index 0000000..6514790
--- /dev/null
+++ b/google-breakpad/src/client/mac/handler/dynamic_images.h
@@ -0,0 +1,319 @@
+// Copyright (c) 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+//  dynamic_images.h
+//
+//    Implements most of the function of the dyld API, but allowing an
+//    arbitrary task to be introspected, unlike the dyld API which
+//    only allows operation on the current task.  The current implementation
+//    is limited to use by 32-bit tasks.
+
+#ifndef CLIENT_MAC_HANDLER_DYNAMIC_IMAGES_H__
+#define CLIENT_MAC_HANDLER_DYNAMIC_IMAGES_H__
+
+#include <mach/mach.h>
+#include <mach-o/dyld.h>
+#include <mach-o/loader.h>
+#include <sys/types.h>
+
+#include <string>
+#include <vector>
+
+#include "mach_vm_compat.h"
+
+namespace google_breakpad {
+
+using std::string;
+using std::vector;
+
+//==============================================================================
+// The memory layout of this struct matches the dyld_image_info struct
+// defined in "dyld_gdb.h" in the darwin source.
+typedef struct dyld_image_info32 {
+  uint32_t                   load_address_;  // struct mach_header*
+  uint32_t                   file_path_;     // char*
+  uint32_t                   file_mod_date_;
+} dyld_image_info32;
+
+typedef struct dyld_image_info64 {
+  uint64_t                   load_address_;  // struct mach_header*
+  uint64_t                   file_path_;     // char*
+  uint64_t                   file_mod_date_;
+} dyld_image_info64;
+
+//==============================================================================
+// This is as defined in "dyld_gdb.h" in the darwin source.
+// _dyld_all_image_infos (in dyld) is a structure of this type
+// which will be used to determine which dynamic code has been loaded.
+typedef struct dyld_all_image_infos32 {
+  uint32_t                      version;  // == 1 in Mac OS X 10.4
+  uint32_t                      infoArrayCount;
+  uint32_t                      infoArray;  // const struct dyld_image_info*
+  uint32_t                      notification;
+  bool                          processDetachedFromSharedRegion;
+} dyld_all_image_infos32;
+
+typedef struct dyld_all_image_infos64 {
+  uint32_t                      version;  // == 1 in Mac OS X 10.4
+  uint32_t                      infoArrayCount;
+  uint64_t                      infoArray;  // const struct dyld_image_info*
+  uint64_t                      notification;
+  bool                          processDetachedFromSharedRegion;
+} dyld_all_image_infos64;
+
+// some typedefs to isolate 64/32 bit differences
+#ifdef __LP64__
+typedef mach_header_64 breakpad_mach_header;
+typedef segment_command_64 breakpad_mach_segment_command;
+#else
+typedef mach_header breakpad_mach_header;
+typedef segment_command breakpad_mach_segment_command;
+#endif
+
+// Helper functions to deal with 32-bit/64-bit Mach-O differences.
+class DynamicImage;
+template<typename MachBits>
+bool FindTextSection(DynamicImage& image);
+
+template<typename MachBits>
+uint32_t GetFileTypeFromHeader(DynamicImage& image);
+
+//==============================================================================
+// Represents a single dynamically loaded mach-o image
+class DynamicImage {
+ public:
+  DynamicImage(uint8_t *header,     // data is copied
+               size_t header_size,  // includes load commands
+               uint64_t load_address,
+               string file_path,
+               uintptr_t image_mod_date,
+               mach_port_t task,
+               cpu_type_t cpu_type)
+    : header_(header, header + header_size),
+      header_size_(header_size),
+      load_address_(load_address),
+      vmaddr_(0),
+      vmsize_(0),
+      slide_(0),
+      version_(0),
+      file_path_(file_path),
+      file_mod_date_(image_mod_date),
+      task_(task),
+      cpu_type_(cpu_type) {
+    CalculateMemoryAndVersionInfo();
+  }
+
+  // Size of mach_header plus load commands
+  size_t GetHeaderSize() const {return header_.size();}
+
+  // Full path to mach-o binary
+  string GetFilePath() {return file_path_;}
+
+  uint64_t GetModDate() const {return file_mod_date_;}
+
+  // Actual address where the image was loaded
+  uint64_t GetLoadAddress() const {return load_address_;}
+
+  // Address where the image should be loaded
+  mach_vm_address_t GetVMAddr() const {return vmaddr_;}
+
+  // Difference between GetLoadAddress() and GetVMAddr()
+  ptrdiff_t GetVMAddrSlide() const {return slide_;}
+
+  // Size of the image
+  mach_vm_size_t GetVMSize() const {return vmsize_;}
+
+  // Task owning this loaded image
+  mach_port_t GetTask() {return task_;}
+
+  // CPU type of the task
+  cpu_type_t GetCPUType() {return cpu_type_;}
+
+  // filetype from the Mach-O header.
+  uint32_t GetFileType();
+
+  // Return true if the task is a 64-bit architecture.
+  bool Is64Bit() { return (GetCPUType() & CPU_ARCH_ABI64) == CPU_ARCH_ABI64; }
+
+  uint32_t GetVersion() {return version_;}
+  // For sorting
+  bool operator<(const DynamicImage &inInfo) {
+    return GetLoadAddress() < inInfo.GetLoadAddress();
+  }
+
+  // Sanity checking
+  bool IsValid() {return GetVMSize() != 0;}
+
+ private:
+  DynamicImage(const DynamicImage &);
+  DynamicImage &operator=(const DynamicImage &);
+
+  friend class DynamicImages;
+  template<typename MachBits>
+  friend bool FindTextSection(DynamicImage& image);
+  template<typename MachBits>
+  friend uint32_t GetFileTypeFromHeader(DynamicImage& image);
+
+  // Initializes vmaddr_, vmsize_, and slide_
+  void CalculateMemoryAndVersionInfo();
+
+  const vector<uint8_t>   header_;        // our local copy of the header
+  size_t                  header_size_;    // mach_header plus load commands
+  uint64_t                load_address_;   // base address image is mapped into
+  mach_vm_address_t       vmaddr_;
+  mach_vm_size_t          vmsize_;
+  ptrdiff_t               slide_;
+  uint32_t                version_;        // Dylib version
+  string                  file_path_;     // path dyld used to load the image
+  uintptr_t               file_mod_date_;  // time_t of image file
+
+  mach_port_t             task_;
+  cpu_type_t              cpu_type_;        // CPU type of task_
+};
+
+//==============================================================================
+// DynamicImageRef is just a simple wrapper for a pointer to
+// DynamicImage.  The reason we use it instead of a simple typedef is so
+// that we can use stl::sort() on a vector of DynamicImageRefs
+// and simple class pointers can't implement operator<().
+//
+class DynamicImageRef {
+ public:
+  explicit DynamicImageRef(DynamicImage *inP) : p(inP) {}
+  // The copy constructor is required by STL
+  DynamicImageRef(const DynamicImageRef &inRef) : p(inRef.p) {}
+
+  bool operator<(const DynamicImageRef &inRef) const {
+    return (*const_cast<DynamicImageRef*>(this)->p)
+      < (*const_cast<DynamicImageRef&>(inRef).p);
+  }
+
+  bool operator==(const DynamicImageRef &inInfo) const {
+    return (*const_cast<DynamicImageRef*>(this)->p).GetLoadAddress() ==
+        (*const_cast<DynamicImageRef&>(inInfo)).GetLoadAddress();
+  }
+
+  // Be just like DynamicImage*
+  DynamicImage  *operator->() {return p;}
+  operator DynamicImage*() {return p;}
+
+ private:
+  DynamicImage  *p;
+};
+
+// Helper function to deal with 32-bit/64-bit Mach-O differences.
+class DynamicImages;
+template<typename MachBits>
+void ReadImageInfo(DynamicImages& images, uint64_t image_list_address);
+
+//==============================================================================
+// An object of type DynamicImages may be created to allow introspection of
+// an arbitrary task's dynamically loaded mach-o binaries.  This makes the
+// assumption that the current task has send rights to the target task.
+class DynamicImages {
+ public:
+  explicit DynamicImages(mach_port_t task);
+
+  ~DynamicImages() {
+    for (int i = 0; i < GetImageCount(); ++i) {
+      delete image_list_[i];
+    }
+  }
+
+  // Returns the number of dynamically loaded mach-o images.
+  int GetImageCount() const {return static_cast<int>(image_list_.size());}
+
+  // Returns an individual image.
+  DynamicImage *GetImage(int i) {
+    if (i < (int)image_list_.size()) {
+      return image_list_[i];
+    }
+    return NULL;
+  }
+
+  // Returns the image corresponding to the main executable.
+  DynamicImage *GetExecutableImage();
+  int GetExecutableImageIndex();
+
+  // Returns the task which we're looking at.
+  mach_port_t GetTask() const {return task_;}
+
+  // CPU type of the task
+  cpu_type_t GetCPUType() {return cpu_type_;}
+
+  // Return true if the task is a 64-bit architecture.
+  bool Is64Bit() { return (GetCPUType() & CPU_ARCH_ABI64) == CPU_ARCH_ABI64; }
+
+  // Determine the CPU type of the task being dumped.
+  static cpu_type_t DetermineTaskCPUType(task_t task);
+
+  // Get the native CPU type of this task.
+  static cpu_type_t GetNativeCPUType() {
+#if defined(__i386__)
+    return CPU_TYPE_I386;
+#elif defined(__x86_64__)
+    return CPU_TYPE_X86_64;
+#elif defined(__ppc__)
+    return CPU_TYPE_POWERPC;
+#elif defined(__ppc64__)
+    return CPU_TYPE_POWERPC64;
+#elif defined(__arm__)
+    return CPU_TYPE_ARM;
+#elif defined(__aarch64__)
+    return CPU_TYPE_ARM64;
+#else
+#error "GetNativeCPUType not implemented for this architecture"
+#endif
+  }
+
+ private:
+  template<typename MachBits>
+  friend void ReadImageInfo(DynamicImages& images, uint64_t image_list_address);
+
+  bool IsOurTask() {return task_ == mach_task_self();}
+
+  // Initialization
+  void ReadImageInfoForTask();
+  uint64_t GetDyldAllImageInfosPointer();
+
+  mach_port_t              task_;
+  cpu_type_t               cpu_type_;  // CPU type of task_
+  vector<DynamicImageRef>  image_list_;
+};
+
+// Fill bytes with the contents of memory at a particular
+// location in another task.
+kern_return_t ReadTaskMemory(task_port_t target_task,
+                             const uint64_t address,
+                             size_t length,
+                             vector<uint8_t> &bytes);
+
+}   // namespace google_breakpad
+
+#endif // CLIENT_MAC_HANDLER_DYNAMIC_IMAGES_H__
diff --git a/google-breakpad/src/client/mac/handler/exception_handler.cc b/google-breakpad/src/client/mac/handler/exception_handler.cc
new file mode 100644
index 0000000..6928e98
--- /dev/null
+++ b/google-breakpad/src/client/mac/handler/exception_handler.cc
@@ -0,0 +1,855 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include <mach/exc.h>
+#include <mach/mig.h>
+#include <pthread.h>
+#include <signal.h>
+#include <TargetConditionals.h>
+
+#include <map>
+
+#include "client/mac/handler/exception_handler.h"
+#include "client/mac/handler/minidump_generator.h"
+#include "common/mac/macho_utilities.h"
+#include "common/mac/scoped_task_suspend-inl.h"
+#include "google_breakpad/common/minidump_exception_mac.h"
+
+#ifndef __EXCEPTIONS
+// This file uses C++ try/catch (but shouldn't). Duplicate the macros from
+// <c++/4.2.1/exception_defines.h> allowing this file to work properly with
+// exceptions disabled even when other C++ libraries are used. #undef the try
+// and catch macros first in case libstdc++ is in use and has already provided
+// its own definitions.
+#undef try
+#define try       if (true)
+#undef catch
+#define catch(X)  if (false)
+#endif  // __EXCEPTIONS
+
+#ifndef USE_PROTECTED_ALLOCATIONS
+#if TARGET_OS_IPHONE
+#define USE_PROTECTED_ALLOCATIONS 1
+#else
+#define USE_PROTECTED_ALLOCATIONS 0
+#endif
+#endif
+
+// If USE_PROTECTED_ALLOCATIONS is activated then the
+// gBreakpadAllocator needs to be setup in other code
+// ahead of time.  Please see ProtectedMemoryAllocator.h
+// for more details.
+#if USE_PROTECTED_ALLOCATIONS
+  #include "protected_memory_allocator.h"
+  extern ProtectedMemoryAllocator *gBreakpadAllocator;
+#endif
+
+namespace google_breakpad {
+
+static union {
+#if USE_PROTECTED_ALLOCATIONS
+#if defined PAGE_MAX_SIZE
+  char protected_buffer[PAGE_MAX_SIZE] __attribute__((aligned(PAGE_MAX_SIZE)));
+#else
+  char protected_buffer[PAGE_SIZE] __attribute__((aligned(PAGE_SIZE)));
+#endif  // defined PAGE_MAX_SIZE
+#endif  // USE_PROTECTED_ALLOCATIONS
+  google_breakpad::ExceptionHandler *handler;
+} gProtectedData;
+
+using std::map;
+
+// These structures and techniques are illustrated in
+// Mac OS X Internals, Amit Singh, ch 9.7
+struct ExceptionMessage {
+  mach_msg_header_t           header;
+  mach_msg_body_t             body;
+  mach_msg_port_descriptor_t  thread;
+  mach_msg_port_descriptor_t  task;
+  NDR_record_t                ndr;
+  exception_type_t            exception;
+  mach_msg_type_number_t      code_count;
+  integer_t                   code[EXCEPTION_CODE_MAX];
+  char                        padding[512];
+};
+
+struct ExceptionParameters {
+  ExceptionParameters() : count(0) {}
+  mach_msg_type_number_t count;
+  exception_mask_t masks[EXC_TYPES_COUNT];
+  mach_port_t ports[EXC_TYPES_COUNT];
+  exception_behavior_t behaviors[EXC_TYPES_COUNT];
+  thread_state_flavor_t flavors[EXC_TYPES_COUNT];
+};
+
+struct ExceptionReplyMessage {
+  mach_msg_header_t  header;
+  NDR_record_t       ndr;
+  kern_return_t      return_code;
+};
+
+// Only catch these three exceptions.  The other ones are nebulously defined
+// and may result in treating a non-fatal exception as fatal.
+exception_mask_t s_exception_mask = EXC_MASK_BAD_ACCESS |
+EXC_MASK_BAD_INSTRUCTION | EXC_MASK_ARITHMETIC | EXC_MASK_BREAKPOINT;
+
+#if !TARGET_OS_IPHONE
+extern "C" {
+  // Forward declarations for functions that need "C" style compilation
+  boolean_t exc_server(mach_msg_header_t* request,
+                       mach_msg_header_t* reply);
+
+  // This symbol must be visible to dlsym() - see
+  // http://code.google.com/p/google-breakpad/issues/detail?id=345 for details.
+  kern_return_t catch_exception_raise(mach_port_t target_port,
+                                      mach_port_t failed_thread,
+                                      mach_port_t task,
+                                      exception_type_t exception,
+                                      exception_data_t code,
+                                      mach_msg_type_number_t code_count)
+      __attribute__((visibility("default")));
+}
+#endif
+
+kern_return_t ForwardException(mach_port_t task,
+                               mach_port_t failed_thread,
+                               exception_type_t exception,
+                               exception_data_t code,
+                               mach_msg_type_number_t code_count);
+
+#if TARGET_OS_IPHONE
+// Implementation is based on the implementation generated by mig.
+boolean_t breakpad_exc_server(mach_msg_header_t* InHeadP,
+                              mach_msg_header_t* OutHeadP) {
+  OutHeadP->msgh_bits =
+      MACH_MSGH_BITS(MACH_MSGH_BITS_REMOTE(InHeadP->msgh_bits), 0);
+  OutHeadP->msgh_remote_port = InHeadP->msgh_remote_port;
+  /* Minimal size: routine() will update it if different */
+  OutHeadP->msgh_size = (mach_msg_size_t)sizeof(mig_reply_error_t);
+  OutHeadP->msgh_local_port = MACH_PORT_NULL;
+  OutHeadP->msgh_id = InHeadP->msgh_id + 100;
+
+  if (InHeadP->msgh_id != 2401) {
+    ((mig_reply_error_t*)OutHeadP)->NDR = NDR_record;
+    ((mig_reply_error_t*)OutHeadP)->RetCode = MIG_BAD_ID;
+    return FALSE;
+  }
+
+#ifdef  __MigPackStructs
+#pragma pack(4)
+#endif
+  typedef struct {
+    mach_msg_header_t Head;
+    /* start of the kernel processed data */
+    mach_msg_body_t msgh_body;
+    mach_msg_port_descriptor_t thread;
+    mach_msg_port_descriptor_t task;
+    /* end of the kernel processed data */
+    NDR_record_t NDR;
+    exception_type_t exception;
+    mach_msg_type_number_t codeCnt;
+    integer_t code[2];
+    mach_msg_trailer_t trailer;
+  } Request;
+
+  typedef struct {
+    mach_msg_header_t Head;
+    NDR_record_t NDR;
+    kern_return_t RetCode;
+  } Reply;
+#ifdef  __MigPackStructs
+#pragma pack()
+#endif
+
+  Request* In0P = (Request*)InHeadP;
+  Reply* OutP = (Reply*)OutHeadP;
+
+  if (In0P->task.name != mach_task_self()) {
+    return FALSE;
+  }
+  OutP->RetCode = ForwardException(In0P->task.name,
+                                   In0P->thread.name,
+                                   In0P->exception,
+                                   In0P->code,
+                                   In0P->codeCnt);
+  OutP->NDR = NDR_record;
+  return TRUE;
+}
+#else
+boolean_t breakpad_exc_server(mach_msg_header_t* request,
+                              mach_msg_header_t* reply) {
+  return exc_server(request, reply);
+}
+
+// Callback from exc_server()
+kern_return_t catch_exception_raise(mach_port_t port, mach_port_t failed_thread,
+                                    mach_port_t task,
+                                    exception_type_t exception,
+                                    exception_data_t code,
+                                    mach_msg_type_number_t code_count) {
+  if (task != mach_task_self()) {
+    return KERN_FAILURE;
+  }
+  return ForwardException(task, failed_thread, exception, code, code_count);
+}
+#endif
+
+ExceptionHandler::ExceptionHandler(const string &dump_path,
+                                   FilterCallback filter,
+                                   MinidumpCallback callback,
+                                   void* callback_context,
+                                   bool install_handler,
+                                   const char* port_name)
+    : dump_path_(),
+      filter_(filter),
+      callback_(callback),
+      callback_context_(callback_context),
+      directCallback_(NULL),
+      handler_thread_(NULL),
+      handler_port_(MACH_PORT_NULL),
+      previous_(NULL),
+      installed_exception_handler_(false),
+      is_in_teardown_(false),
+      last_minidump_write_result_(false),
+      use_minidump_write_mutex_(false) {
+  // This will update to the ID and C-string pointers
+  set_dump_path(dump_path);
+  MinidumpGenerator::GatherSystemInformation();
+#if !TARGET_OS_IPHONE
+  if (port_name)
+    crash_generation_client_.reset(new CrashGenerationClient(port_name));
+#endif
+  Setup(install_handler);
+}
+
+// special constructor if we want to bypass minidump writing and
+// simply get a callback with the exception information
+ExceptionHandler::ExceptionHandler(DirectCallback callback,
+                                   void* callback_context,
+                                   bool install_handler)
+    : dump_path_(),
+      filter_(NULL),
+      callback_(NULL),
+      callback_context_(callback_context),
+      directCallback_(callback),
+      handler_thread_(NULL),
+      handler_port_(MACH_PORT_NULL),
+      previous_(NULL),
+      installed_exception_handler_(false),
+      is_in_teardown_(false),
+      last_minidump_write_result_(false),
+      use_minidump_write_mutex_(false) {
+  MinidumpGenerator::GatherSystemInformation();
+  Setup(install_handler);
+}
+
+ExceptionHandler::~ExceptionHandler() {
+  Teardown();
+}
+
+bool ExceptionHandler::WriteMinidump(bool write_exception_stream) {
+  // If we're currently writing, just return
+  if (use_minidump_write_mutex_)
+    return false;
+
+  use_minidump_write_mutex_ = true;
+  last_minidump_write_result_ = false;
+
+  // Lock the mutex.  Since we just created it, this will return immediately.
+  if (pthread_mutex_lock(&minidump_write_mutex_) == 0) {
+    // Send an empty message to the handle port so that a minidump will
+    // be written
+    bool result = SendMessageToHandlerThread(write_exception_stream ?
+                                               kWriteDumpWithExceptionMessage :
+                                               kWriteDumpMessage);
+    if (!result) {
+      pthread_mutex_unlock(&minidump_write_mutex_);
+      return false;
+    }
+
+    // Wait for the minidump writer to complete its writing.  It will unlock
+    // the mutex when completed
+    pthread_mutex_lock(&minidump_write_mutex_);
+  }
+
+  use_minidump_write_mutex_ = false;
+  UpdateNextID();
+  return last_minidump_write_result_;
+}
+
+// static
+bool ExceptionHandler::WriteMinidump(const string &dump_path,
+                                     bool write_exception_stream,
+                                     MinidumpCallback callback,
+                                     void* callback_context) {
+  ExceptionHandler handler(dump_path, NULL, callback, callback_context, false,
+                           NULL);
+  return handler.WriteMinidump(write_exception_stream);
+}
+
+// static
+bool ExceptionHandler::WriteMinidumpForChild(mach_port_t child,
+                                             mach_port_t child_blamed_thread,
+                                             const string &dump_path,
+                                             MinidumpCallback callback,
+                                             void* callback_context) {
+  ScopedTaskSuspend suspend(child);
+
+  MinidumpGenerator generator(child, MACH_PORT_NULL);
+  string dump_id;
+  string dump_filename = generator.UniqueNameInDirectory(dump_path, &dump_id);
+
+  generator.SetExceptionInformation(EXC_BREAKPOINT,
+#if defined(__i386__) || defined(__x86_64__)
+                                    EXC_I386_BPT,
+#elif defined(__ppc__) || defined(__ppc64__)
+                                    EXC_PPC_BREAKPOINT,
+#elif defined(__arm__) || defined(__aarch64__)
+                                    EXC_ARM_BREAKPOINT,
+#else
+#error architecture not supported
+#endif
+                                    0,
+                                    child_blamed_thread);
+  bool result = generator.Write(dump_filename.c_str());
+
+  if (callback) {
+    return callback(dump_path.c_str(), dump_id.c_str(),
+                    callback_context, result);
+  }
+  return result;
+}
+
+bool ExceptionHandler::WriteMinidumpWithException(
+    int exception_type,
+    int exception_code,
+    int exception_subcode,
+    breakpad_ucontext_t* task_context,
+    mach_port_t thread_name,
+    bool exit_after_write,
+    bool report_current_thread) {
+  bool result = false;
+
+  if (directCallback_) {
+    if (directCallback_(callback_context_,
+                        exception_type,
+                        exception_code,
+                        exception_subcode,
+                        thread_name) ) {
+      if (exit_after_write)
+        _exit(exception_type);
+    }
+#if !TARGET_OS_IPHONE
+  } else if (IsOutOfProcess()) {
+    if (exception_type && exception_code) {
+      // If this is a real exception, give the filter (if any) a chance to
+      // decide if this should be sent.
+      if (filter_ && !filter_(callback_context_))
+        return false;
+      result = crash_generation_client_->RequestDumpForException(
+          exception_type,
+          exception_code,
+          exception_subcode,
+          thread_name);
+      if (result && exit_after_write) {
+        _exit(exception_type);
+      }
+    }
+#endif
+  } else {
+    string minidump_id;
+
+    // Putting the MinidumpGenerator in its own context will ensure that the
+    // destructor is executed, closing the newly created minidump file.
+    if (!dump_path_.empty()) {
+      MinidumpGenerator md(mach_task_self(),
+                           report_current_thread ? MACH_PORT_NULL :
+                                                   mach_thread_self());
+      md.SetTaskContext(task_context);
+      if (exception_type && exception_code) {
+        // If this is a real exception, give the filter (if any) a chance to
+        // decide if this should be sent.
+        if (filter_ && !filter_(callback_context_))
+          return false;
+
+        md.SetExceptionInformation(exception_type, exception_code,
+                                   exception_subcode, thread_name);
+      }
+
+      result = md.Write(next_minidump_path_c_);
+    }
+
+    // Call user specified callback (if any)
+    if (callback_) {
+      // If the user callback returned true and we're handling an exception
+      // (rather than just writing out the file), then we should exit without
+      // forwarding the exception to the next handler.
+      if (callback_(dump_path_c_, next_minidump_id_c_, callback_context_,
+                    result)) {
+        if (exit_after_write)
+          _exit(exception_type);
+      }
+    }
+  }
+
+  return result;
+}
+
+kern_return_t ForwardException(mach_port_t task, mach_port_t failed_thread,
+                               exception_type_t exception,
+                               exception_data_t code,
+                               mach_msg_type_number_t code_count) {
+  // At this time, we should have called Uninstall() on the exception handler
+  // so that the current exception ports are the ones that we should be
+  // forwarding to.
+  ExceptionParameters current;
+
+  current.count = EXC_TYPES_COUNT;
+  mach_port_t current_task = mach_task_self();
+  task_get_exception_ports(current_task,
+                           s_exception_mask,
+                           current.masks,
+                           &current.count,
+                           current.ports,
+                           current.behaviors,
+                           current.flavors);
+
+  // Find the first exception handler that matches the exception
+  unsigned int found;
+  for (found = 0; found < current.count; ++found) {
+    if (current.masks[found] & (1 << exception)) {
+      break;
+    }
+  }
+
+  // Nothing to forward
+  if (found == current.count) {
+    fprintf(stderr, "** No previous ports for forwarding!! \n");
+    exit(KERN_FAILURE);
+  }
+
+  mach_port_t target_port = current.ports[found];
+  exception_behavior_t target_behavior = current.behaviors[found];
+
+  kern_return_t result;
+  // TODO: Handle the case where |target_behavior| has MACH_EXCEPTION_CODES
+  // set. https://code.google.com/p/google-breakpad/issues/detail?id=551
+  switch (target_behavior) {
+    case EXCEPTION_DEFAULT:
+      result = exception_raise(target_port, failed_thread, task, exception,
+                               code, code_count);
+      break;
+    default:
+      fprintf(stderr, "** Unknown exception behavior: %d\n", target_behavior);
+      result = KERN_FAILURE;
+      break;
+  }
+
+  return result;
+}
+
+// static
+void* ExceptionHandler::WaitForMessage(void* exception_handler_class) {
+  ExceptionHandler* self =
+    reinterpret_cast<ExceptionHandler*>(exception_handler_class);
+  ExceptionMessage receive;
+
+  // Wait for the exception info
+  while (1) {
+    receive.header.msgh_local_port = self->handler_port_;
+    receive.header.msgh_size = static_cast<mach_msg_size_t>(sizeof(receive));
+    kern_return_t result = mach_msg(&(receive.header),
+                                    MACH_RCV_MSG | MACH_RCV_LARGE, 0,
+                                    receive.header.msgh_size,
+                                    self->handler_port_,
+                                    MACH_MSG_TIMEOUT_NONE, MACH_PORT_NULL);
+
+
+    if (result == KERN_SUCCESS) {
+      // Uninstall our handler so that we don't get in a loop if the process of
+      // writing out a minidump causes an exception.  However, if the exception
+      // was caused by a fork'd process, don't uninstall things
+
+      // If the actual exception code is zero, then we're calling this handler
+      // in a way that indicates that we want to either exit this thread or
+      // generate a minidump
+      //
+      // While reporting, all threads (except this one) must be suspended
+      // to avoid misleading stacks.  If appropriate they will be resumed
+      // afterwards.
+      if (!receive.exception) {
+        // Don't touch self, since this message could have been sent
+        // from its destructor.
+        if (receive.header.msgh_id == kShutdownMessage)
+          return NULL;
+
+        self->SuspendThreads();
+
+#if USE_PROTECTED_ALLOCATIONS
+        if (gBreakpadAllocator)
+          gBreakpadAllocator->Unprotect();
+#endif
+
+        mach_port_t thread = MACH_PORT_NULL;
+        int exception_type = 0;
+        int exception_code = 0;
+        if (receive.header.msgh_id == kWriteDumpWithExceptionMessage) {
+          thread = receive.thread.name;
+          exception_type = EXC_BREAKPOINT;
+#if defined(__i386__) || defined(__x86_64__)
+          exception_code = EXC_I386_BPT;
+#elif defined(__ppc__) || defined(__ppc64__)
+          exception_code = EXC_PPC_BREAKPOINT;
+#elif defined(__arm__) || defined(__aarch64__)
+          exception_code = EXC_ARM_BREAKPOINT;
+#else
+#error architecture not supported
+#endif
+        }
+
+        // Write out the dump and save the result for later retrieval
+        self->last_minidump_write_result_ =
+          self->WriteMinidumpWithException(exception_type, exception_code,
+                                           0, NULL, thread,
+                                           false, false);
+
+#if USE_PROTECTED_ALLOCATIONS
+        if (gBreakpadAllocator)
+          gBreakpadAllocator->Protect();
+#endif
+
+        self->ResumeThreads();
+
+        if (self->use_minidump_write_mutex_)
+          pthread_mutex_unlock(&self->minidump_write_mutex_);
+      } else {
+        // When forking a child process with the exception handler installed,
+        // if the child crashes, it will send the exception back to the parent
+        // process.  The check for task == self_task() ensures that only
+        // exceptions that occur in the parent process are caught and
+        // processed.  If the exception was not caused by this task, we
+        // still need to call into the exception server and have it return
+        // KERN_FAILURE (see catch_exception_raise) in order for the kernel
+        // to move onto the host exception handler for the child task
+        if (receive.task.name == mach_task_self()) {
+          self->SuspendThreads();
+
+#if USE_PROTECTED_ALLOCATIONS
+        if (gBreakpadAllocator)
+          gBreakpadAllocator->Unprotect();
+#endif
+
+        int subcode = 0;
+        if (receive.exception == EXC_BAD_ACCESS && receive.code_count > 1)
+          subcode = receive.code[1];
+
+        // Generate the minidump with the exception data.
+        self->WriteMinidumpWithException(receive.exception, receive.code[0],
+                                         subcode, NULL, receive.thread.name,
+                                         true, false);
+
+#if USE_PROTECTED_ALLOCATIONS
+        // This may have become protected again within
+        // WriteMinidumpWithException, but it needs to be unprotected for
+        // UninstallHandler.
+        if (gBreakpadAllocator)
+          gBreakpadAllocator->Unprotect();
+#endif
+
+        self->UninstallHandler(true);
+
+#if USE_PROTECTED_ALLOCATIONS
+        if (gBreakpadAllocator)
+          gBreakpadAllocator->Protect();
+#endif
+        }
+        // Pass along the exception to the server, which will setup the
+        // message and call catch_exception_raise() and put the return
+        // code into the reply.
+        ExceptionReplyMessage reply;
+        if (!breakpad_exc_server(&receive.header, &reply.header))
+          exit(1);
+
+        // Send a reply and exit
+        mach_msg(&(reply.header), MACH_SEND_MSG,
+                 reply.header.msgh_size, 0, MACH_PORT_NULL,
+                 MACH_MSG_TIMEOUT_NONE, MACH_PORT_NULL);
+      }
+    }
+  }
+
+  return NULL;
+}
+
+// static
+void ExceptionHandler::SignalHandler(int sig, siginfo_t* info, void* uc) {
+#if USE_PROTECTED_ALLOCATIONS
+  if (gBreakpadAllocator)
+    gBreakpadAllocator->Unprotect();
+#endif
+  gProtectedData.handler->WriteMinidumpWithException(
+      EXC_SOFTWARE,
+      MD_EXCEPTION_CODE_MAC_ABORT,
+      0,
+      static_cast<breakpad_ucontext_t*>(uc),
+      mach_thread_self(),
+      true,
+      true);
+#if USE_PROTECTED_ALLOCATIONS
+  if (gBreakpadAllocator)
+    gBreakpadAllocator->Protect();
+#endif
+}
+
+bool ExceptionHandler::InstallHandler() {
+  // If a handler is already installed, something is really wrong.
+  if (gProtectedData.handler != NULL) {
+    return false;
+  }
+  if (!IsOutOfProcess()) {
+    struct sigaction sa;
+    memset(&sa, 0, sizeof(sa));
+    sigemptyset(&sa.sa_mask);
+    sigaddset(&sa.sa_mask, SIGABRT);
+    sa.sa_sigaction = ExceptionHandler::SignalHandler;
+    sa.sa_flags = SA_SIGINFO;
+
+    scoped_ptr<struct sigaction> old(new struct sigaction);
+    if (sigaction(SIGABRT, &sa, old.get()) == -1) {
+      return false;
+    }
+    old_handler_.swap(old);
+    gProtectedData.handler = this;
+#if USE_PROTECTED_ALLOCATIONS
+    assert(((size_t)(gProtectedData.protected_buffer) & PAGE_MASK) == 0);
+    mprotect(gProtectedData.protected_buffer, PAGE_SIZE, PROT_READ);
+#endif
+  }
+
+  try {
+#if USE_PROTECTED_ALLOCATIONS
+    previous_ = new (gBreakpadAllocator->Allocate(sizeof(ExceptionParameters)) )
+      ExceptionParameters();
+#else
+    previous_ = new ExceptionParameters();
+#endif
+  }
+  catch (std::bad_alloc) {
+    return false;
+  }
+
+  // Save the current exception ports so that we can forward to them
+  previous_->count = EXC_TYPES_COUNT;
+  mach_port_t current_task = mach_task_self();
+  kern_return_t result = task_get_exception_ports(current_task,
+                                                  s_exception_mask,
+                                                  previous_->masks,
+                                                  &previous_->count,
+                                                  previous_->ports,
+                                                  previous_->behaviors,
+                                                  previous_->flavors);
+
+  // Setup the exception ports on this task
+  if (result == KERN_SUCCESS)
+    result = task_set_exception_ports(current_task, s_exception_mask,
+                                      handler_port_, EXCEPTION_DEFAULT,
+                                      THREAD_STATE_NONE);
+
+  installed_exception_handler_ = (result == KERN_SUCCESS);
+
+  return installed_exception_handler_;
+}
+
+bool ExceptionHandler::UninstallHandler(bool in_exception) {
+  kern_return_t result = KERN_SUCCESS;
+
+  if (old_handler_.get()) {
+    sigaction(SIGABRT, old_handler_.get(), NULL);
+#if USE_PROTECTED_ALLOCATIONS
+    mprotect(gProtectedData.protected_buffer, PAGE_SIZE,
+        PROT_READ | PROT_WRITE);
+#endif
+    old_handler_.reset();
+    gProtectedData.handler = NULL;
+  }
+
+  if (installed_exception_handler_) {
+    mach_port_t current_task = mach_task_self();
+
+    // Restore the previous ports
+    for (unsigned int i = 0; i < previous_->count; ++i) {
+       result = task_set_exception_ports(current_task, previous_->masks[i],
+                                        previous_->ports[i],
+                                        previous_->behaviors[i],
+                                        previous_->flavors[i]);
+      if (result != KERN_SUCCESS)
+        return false;
+    }
+
+    // this delete should NOT happen if an exception just occurred!
+    if (!in_exception) {
+#if USE_PROTECTED_ALLOCATIONS
+      previous_->~ExceptionParameters();
+#else
+      delete previous_;
+#endif
+    }
+
+    previous_ = NULL;
+    installed_exception_handler_ = false;
+  }
+
+  return result == KERN_SUCCESS;
+}
+
+bool ExceptionHandler::Setup(bool install_handler) {
+  if (pthread_mutex_init(&minidump_write_mutex_, NULL))
+    return false;
+
+  // Create a receive right
+  mach_port_t current_task = mach_task_self();
+  kern_return_t result = mach_port_allocate(current_task,
+                                            MACH_PORT_RIGHT_RECEIVE,
+                                            &handler_port_);
+  // Add send right
+  if (result == KERN_SUCCESS)
+    result = mach_port_insert_right(current_task, handler_port_, handler_port_,
+                                    MACH_MSG_TYPE_MAKE_SEND);
+
+  if (install_handler && result == KERN_SUCCESS)
+    if (!InstallHandler())
+      return false;
+
+  if (result == KERN_SUCCESS) {
+    // Install the handler in its own thread, detached as we won't be joining.
+    pthread_attr_t attr;
+    pthread_attr_init(&attr);
+    pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
+    int thread_create_result = pthread_create(&handler_thread_, &attr,
+                                              &WaitForMessage, this);
+    pthread_attr_destroy(&attr);
+    result = thread_create_result ? KERN_FAILURE : KERN_SUCCESS;
+  }
+
+  return result == KERN_SUCCESS;
+}
+
+bool ExceptionHandler::Teardown() {
+  kern_return_t result = KERN_SUCCESS;
+  is_in_teardown_ = true;
+
+  if (!UninstallHandler(false))
+    return false;
+
+  // Send an empty message so that the handler_thread exits
+  if (SendMessageToHandlerThread(kShutdownMessage)) {
+    mach_port_t current_task = mach_task_self();
+    result = mach_port_deallocate(current_task, handler_port_);
+    if (result != KERN_SUCCESS)
+      return false;
+  } else {
+    return false;
+  }
+
+  handler_thread_ = NULL;
+  handler_port_ = MACH_PORT_NULL;
+  pthread_mutex_destroy(&minidump_write_mutex_);
+
+  return result == KERN_SUCCESS;
+}
+
+bool ExceptionHandler::SendMessageToHandlerThread(
+    HandlerThreadMessage message_id) {
+  ExceptionMessage msg;
+  memset(&msg, 0, sizeof(msg));
+  msg.header.msgh_id = message_id;
+  if (message_id == kWriteDumpMessage ||
+      message_id == kWriteDumpWithExceptionMessage) {
+    // Include this thread's port.
+    msg.thread.name = mach_thread_self();
+    msg.thread.disposition = MACH_MSG_TYPE_PORT_SEND;
+    msg.thread.type = MACH_MSG_PORT_DESCRIPTOR;
+  }
+  msg.header.msgh_size = sizeof(msg) - sizeof(msg.padding);
+  msg.header.msgh_remote_port = handler_port_;
+  msg.header.msgh_bits = MACH_MSGH_BITS(MACH_MSG_TYPE_COPY_SEND,
+                                          MACH_MSG_TYPE_MAKE_SEND_ONCE);
+  kern_return_t result = mach_msg(&(msg.header),
+                                  MACH_SEND_MSG | MACH_SEND_TIMEOUT,
+                                  msg.header.msgh_size, 0, 0,
+                                  MACH_MSG_TIMEOUT_NONE, MACH_PORT_NULL);
+
+  return result == KERN_SUCCESS;
+}
+
+void ExceptionHandler::UpdateNextID() {
+  next_minidump_path_ =
+    (MinidumpGenerator::UniqueNameInDirectory(dump_path_, &next_minidump_id_));
+
+  next_minidump_path_c_ = next_minidump_path_.c_str();
+  next_minidump_id_c_ = next_minidump_id_.c_str();
+}
+
+bool ExceptionHandler::SuspendThreads() {
+  thread_act_port_array_t   threads_for_task;
+  mach_msg_type_number_t    thread_count;
+
+  if (task_threads(mach_task_self(), &threads_for_task, &thread_count))
+    return false;
+
+  // suspend all of the threads except for this one
+  for (unsigned int i = 0; i < thread_count; ++i) {
+    if (threads_for_task[i] != mach_thread_self()) {
+      if (thread_suspend(threads_for_task[i]))
+        return false;
+    }
+  }
+
+  return true;
+}
+
+bool ExceptionHandler::ResumeThreads() {
+  thread_act_port_array_t   threads_for_task;
+  mach_msg_type_number_t    thread_count;
+
+  if (task_threads(mach_task_self(), &threads_for_task, &thread_count))
+    return false;
+
+  // resume all of the threads except for this one
+  for (unsigned int i = 0; i < thread_count; ++i) {
+    if (threads_for_task[i] != mach_thread_self()) {
+      if (thread_resume(threads_for_task[i]))
+        return false;
+    }
+  }
+
+  return true;
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/client/mac/handler/exception_handler.h b/google-breakpad/src/client/mac/handler/exception_handler.h
new file mode 100644
index 0000000..f1d9ae9
--- /dev/null
+++ b/google-breakpad/src/client/mac/handler/exception_handler.h
@@ -0,0 +1,281 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// exception_handler.h:  MacOS exception handler
+// This class can install a Mach exception port handler to trap most common
+// programming errors.  If an exception occurs, a minidump file will be
+// generated which contains detailed information about the process and the
+// exception.
+
+#ifndef CLIENT_MAC_HANDLER_EXCEPTION_HANDLER_H__
+#define CLIENT_MAC_HANDLER_EXCEPTION_HANDLER_H__
+
+#include <mach/mach.h>
+#include <TargetConditionals.h>
+
+#include <string>
+
+#include "client/mac/handler/ucontext_compat.h"
+#include "common/scoped_ptr.h"
+
+#if !TARGET_OS_IPHONE
+#include "client/mac/crash_generation/crash_generation_client.h"
+#endif
+
+namespace google_breakpad {
+
+using std::string;
+
+struct ExceptionParameters;
+
+enum HandlerThreadMessage {
+  // Message ID telling the handler thread to write a dump.
+  kWriteDumpMessage = 0,
+  // Message ID telling the handler thread to write a dump and include
+  // an exception stream.
+  kWriteDumpWithExceptionMessage = 1,
+  // Message ID telling the handler thread to quit.
+  kShutdownMessage = 2
+};
+
+class ExceptionHandler {
+ public:
+  // A callback function to run before Breakpad performs any substantial
+  // processing of an exception.  A FilterCallback is called before writing
+  // a minidump.  context is the parameter supplied by the user as
+  // callback_context when the handler was created.
+  //
+  // If a FilterCallback returns true, Breakpad will continue processing,
+  // attempting to write a minidump.  If a FilterCallback returns false, Breakpad
+  // will immediately report the exception as unhandled without writing a
+  // minidump, allowing another handler the opportunity to handle it.
+  typedef bool (*FilterCallback)(void *context);
+
+  // A callback function to run after the minidump has been written.
+  // |minidump_id| is a unique id for the dump, so the minidump
+  // file is <dump_dir>/<minidump_id>.dmp.
+  // |context| is the value passed into the constructor.
+  // |succeeded| indicates whether a minidump file was successfully written.
+  // Return true if the exception was fully handled and breakpad should exit.
+  // Return false to allow any other exception handlers to process the
+  // exception.
+  typedef bool (*MinidumpCallback)(const char *dump_dir,
+                                   const char *minidump_id,
+                                   void *context, bool succeeded);
+
+  // A callback function which will be called directly if an exception occurs.
+  // This bypasses the minidump file writing and simply gives the client
+  // the exception information.
+  typedef bool (*DirectCallback)( void *context,
+                                  int exception_type,
+                                  int exception_code,
+                                  int exception_subcode,
+                                  mach_port_t thread_name);
+
+  // Creates a new ExceptionHandler instance to handle writing minidumps.
+  // Minidump files will be written to dump_path, and the optional callback
+  // is called after writing the dump file, as described above.
+  // If install_handler is true, then a minidump will be written whenever
+  // an unhandled exception occurs.  If it is false, minidumps will only
+  // be written when WriteMinidump is called.
+  // If port_name is non-NULL, attempt to perform out-of-process dump generation
+  // If port_name is NULL, in-process dump generation will be used.
+  ExceptionHandler(const string &dump_path,
+                   FilterCallback filter, MinidumpCallback callback,
+                   void *callback_context, bool install_handler,
+		   const char *port_name);
+
+  // A special constructor if we want to bypass minidump writing and
+  // simply get a callback with the exception information.
+  ExceptionHandler(DirectCallback callback,
+                   void *callback_context,
+                   bool install_handler);
+
+  ~ExceptionHandler();
+
+  // Get and set the minidump path.
+  string dump_path() const { return dump_path_; }
+  void set_dump_path(const string &dump_path) {
+    dump_path_ = dump_path;
+    dump_path_c_ = dump_path_.c_str();
+    UpdateNextID();  // Necessary to put dump_path_ in next_minidump_path_.
+  }
+
+  // Writes a minidump immediately.  This can be used to capture the
+  // execution state independently of a crash.  Returns true on success.
+  bool WriteMinidump() {
+    return WriteMinidump(false);
+  }
+
+  bool WriteMinidump(bool write_exception_stream);
+
+  // Convenience form of WriteMinidump which does not require an
+  // ExceptionHandler instance.
+  static bool WriteMinidump(const string &dump_path, MinidumpCallback callback,
+                            void *callback_context) {
+    return WriteMinidump(dump_path, false, callback, callback_context);
+  }
+
+  static bool WriteMinidump(const string &dump_path,
+                            bool write_exception_stream,
+                            MinidumpCallback callback,
+                            void *callback_context);
+
+  // Write a minidump of child immediately. This can be used to capture
+  // the execution state of a child process independently of a crash.
+  static bool WriteMinidumpForChild(mach_port_t child,
+				    mach_port_t child_blamed_thread,
+				    const std::string &dump_path,
+				    MinidumpCallback callback,
+				    void *callback_context);
+
+  // Returns whether out-of-process dump generation is used or not.
+  bool IsOutOfProcess() const {
+#if TARGET_OS_IPHONE
+    return false;
+#else
+    return crash_generation_client_.get() != NULL;
+#endif
+  }
+
+ private:
+  // Install the mach exception handler
+  bool InstallHandler();
+
+  // Uninstall the mach exception handler (if any)
+  bool UninstallHandler(bool in_exception);
+
+  // Setup the handler thread, and if |install_handler| is true, install the
+  // mach exception port handler
+  bool Setup(bool install_handler);
+
+  // Uninstall the mach exception handler (if any) and terminate the helper
+  // thread
+  bool Teardown();
+
+  // Send a mach message to the exception handler.  Return true on
+  // success, false otherwise.
+  bool SendMessageToHandlerThread(HandlerThreadMessage message_id);
+
+  // All minidump writing goes through this one routine.
+  // |task_context| can be NULL. If not, it will be used to retrieve the
+  // context of the current thread, instead of using |thread_get_state|.
+  bool WriteMinidumpWithException(int exception_type,
+                                  int exception_code,
+                                  int exception_subcode,
+                                  breakpad_ucontext_t *task_context,
+                                  mach_port_t thread_name,
+                                  bool exit_after_write,
+                                  bool report_current_thread);
+
+  // When installed, this static function will be call from a newly created
+  // pthread with |this| as the argument
+  static void *WaitForMessage(void *exception_handler_class);
+
+  // Signal handler for SIGABRT.
+  static void SignalHandler(int sig, siginfo_t* info, void* uc);
+
+  // disallow copy ctor and operator=
+  explicit ExceptionHandler(const ExceptionHandler &);
+  void operator=(const ExceptionHandler &);
+
+  // Generates a new ID and stores it in next_minidump_id_, and stores the
+  // path of the next minidump to be written in next_minidump_path_.
+  void UpdateNextID();
+
+  // These functions will suspend/resume all threads except for the
+  // reporting thread
+  bool SuspendThreads();
+  bool ResumeThreads();
+
+  // The destination directory for the minidump
+  string dump_path_;
+
+  // The basename of the next minidump w/o extension
+  string next_minidump_id_;
+
+  // The full path to the next minidump to be written, including extension
+  string next_minidump_path_;
+
+  // Pointers to the UTF-8 versions of above
+  const char *dump_path_c_;
+  const char *next_minidump_id_c_;
+  const char *next_minidump_path_c_;
+
+  // The callback function and pointer to be passed back after the minidump
+  // has been written
+  FilterCallback filter_;
+  MinidumpCallback callback_;
+  void *callback_context_;
+
+  // The callback function to be passed back when we don't want a minidump
+  // file to be written
+  DirectCallback directCallback_;
+
+  // The thread that is created for the handler
+  pthread_t handler_thread_;
+
+  // The port that is waiting on an exception message to be sent, if the
+  // handler is installed
+  mach_port_t handler_port_;
+
+  // These variables save the previous exception handler's data so that it
+  // can be re-installed when this handler is uninstalled
+  ExceptionParameters *previous_;
+
+  // True, if we've installed the exception handler
+  bool installed_exception_handler_;
+
+  // True, if we're in the process of uninstalling the exception handler and
+  // the thread.
+  bool is_in_teardown_;
+
+  // Save the last result of the last minidump
+  bool last_minidump_write_result_;
+
+  // A mutex for use when writing out a minidump that was requested on a
+  // thread other than the exception handler.
+  pthread_mutex_t minidump_write_mutex_;
+
+  // True, if we're using the mutext to indicate when mindump writing occurs
+  bool use_minidump_write_mutex_;
+
+  // Old signal handler for SIGABRT. Used to be able to restore it when
+  // uninstalling.
+  scoped_ptr<struct sigaction> old_handler_;
+
+#if !TARGET_OS_IPHONE
+  // Client for out-of-process dump generation.
+  scoped_ptr<CrashGenerationClient> crash_generation_client_;
+#endif
+};
+
+}  // namespace google_breakpad
+
+#endif  // CLIENT_MAC_HANDLER_EXCEPTION_HANDLER_H__
diff --git a/google-breakpad/src/client/mac/handler/mach_vm_compat.h b/google-breakpad/src/client/mac/handler/mach_vm_compat.h
new file mode 100644
index 0000000..9e9028b
--- /dev/null
+++ b/google-breakpad/src/client/mac/handler/mach_vm_compat.h
@@ -0,0 +1,48 @@
+// Copyright (c) 2011, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef CLIENT_MAC_GENERATOR_MACH_VM_COMPAT_H_
+#define CLIENT_MAC_GENERATOR_MACH_VM_COMPAT_H_
+
+#include <TargetConditionals.h>
+
+// On iOS 5 and higher, mach/mach_vm.h is not supported. Use the corresponding
+// vm_map functions instead.
+#if TARGET_OS_IPHONE
+#include <mach/vm_map.h>
+#define mach_vm_address_t vm_address_t
+#define mach_vm_deallocate vm_deallocate
+#define mach_vm_read vm_read
+#define mach_vm_region_recurse vm_region_recurse_64
+#define mach_vm_size_t vm_size_t
+#else
+#include <mach/mach_vm.h>
+#endif  // TARGET_OS_IPHONE
+
+#endif  // CLIENT_MAC_GENERATOR_MACH_VM_COMPAT_H_
diff --git a/google-breakpad/src/client/mac/handler/minidump_generator.cc b/google-breakpad/src/client/mac/handler/minidump_generator.cc
new file mode 100644
index 0000000..38baa04
--- /dev/null
+++ b/google-breakpad/src/client/mac/handler/minidump_generator.cc
@@ -0,0 +1,1584 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include <algorithm>
+#include <cstdio>
+
+#include <mach/host_info.h>
+#include <mach/machine.h>
+#include <mach/vm_statistics.h>
+#include <mach-o/dyld.h>
+#include <mach-o/loader.h>
+#include <sys/sysctl.h>
+#include <sys/resource.h>
+
+#include <CoreFoundation/CoreFoundation.h>
+
+#include "client/mac/handler/minidump_generator.h"
+
+#if defined(HAS_ARM_SUPPORT) || defined(HAS_ARM64_SUPPORT)
+#include <mach/arm/thread_status.h>
+#endif
+#ifdef HAS_PPC_SUPPORT
+#include <mach/ppc/thread_status.h>
+#endif
+#ifdef HAS_X86_SUPPORT
+#include <mach/i386/thread_status.h>
+#endif
+
+#include "client/minidump_file_writer-inl.h"
+#include "common/mac/file_id.h"
+#include "common/mac/macho_id.h"
+#include "common/mac/string_utilities.h"
+
+using MacStringUtils::ConvertToString;
+using MacStringUtils::IntegerValueAtIndex;
+
+namespace google_breakpad {
+
+#if defined(__LP64__) && __LP64__
+#define LC_SEGMENT_ARCH LC_SEGMENT_64
+#else
+#define LC_SEGMENT_ARCH LC_SEGMENT
+#endif
+
+// constructor when generating from within the crashed process
+MinidumpGenerator::MinidumpGenerator()
+    : writer_(),
+      exception_type_(0),
+      exception_code_(0),
+      exception_subcode_(0),
+      exception_thread_(0),
+      crashing_task_(mach_task_self()),
+      handler_thread_(mach_thread_self()),
+      cpu_type_(DynamicImages::GetNativeCPUType()),
+      task_context_(NULL),
+      dynamic_images_(NULL),
+      memory_blocks_(&allocator_) {
+  GatherSystemInformation();
+}
+
+// constructor when generating from a different process than the
+// crashed process
+MinidumpGenerator::MinidumpGenerator(mach_port_t crashing_task,
+                                     mach_port_t handler_thread)
+    : writer_(),
+      exception_type_(0),
+      exception_code_(0),
+      exception_subcode_(0),
+      exception_thread_(0),
+      crashing_task_(crashing_task),
+      handler_thread_(handler_thread),
+      cpu_type_(DynamicImages::GetNativeCPUType()),
+      task_context_(NULL),
+      dynamic_images_(NULL),
+      memory_blocks_(&allocator_) {
+  if (crashing_task != mach_task_self()) {
+    dynamic_images_ = new DynamicImages(crashing_task_);
+    cpu_type_ = dynamic_images_->GetCPUType();
+  } else {
+    dynamic_images_ = NULL;
+    cpu_type_ = DynamicImages::GetNativeCPUType();
+  }
+
+  GatherSystemInformation();
+}
+
+MinidumpGenerator::~MinidumpGenerator() {
+  delete dynamic_images_;
+}
+
+char MinidumpGenerator::build_string_[16];
+int MinidumpGenerator::os_major_version_ = 0;
+int MinidumpGenerator::os_minor_version_ = 0;
+int MinidumpGenerator::os_build_number_ = 0;
+
+// static
+void MinidumpGenerator::GatherSystemInformation() {
+  // If this is non-zero, then we've already gathered the information
+  if (os_major_version_)
+    return;
+
+  // This code extracts the version and build information from the OS
+  CFStringRef vers_path =
+    CFSTR("/System/Library/CoreServices/SystemVersion.plist");
+  CFURLRef sys_vers =
+    CFURLCreateWithFileSystemPath(NULL,
+                                  vers_path,
+                                  kCFURLPOSIXPathStyle,
+                                  false);
+  CFDataRef data;
+  SInt32 error;
+  CFURLCreateDataAndPropertiesFromResource(NULL, sys_vers, &data, NULL, NULL,
+                                           &error);
+
+  if (!data) {
+    CFRelease(sys_vers);
+    return;
+  }
+
+  CFDictionaryRef list = static_cast<CFDictionaryRef>
+    (CFPropertyListCreateFromXMLData(NULL, data, kCFPropertyListImmutable,
+                                     NULL));
+  if (!list) {
+    CFRelease(sys_vers);
+    CFRelease(data);
+    return;
+  }
+
+  CFStringRef build_version = static_cast<CFStringRef>
+    (CFDictionaryGetValue(list, CFSTR("ProductBuildVersion")));
+  CFStringRef product_version = static_cast<CFStringRef>
+    (CFDictionaryGetValue(list, CFSTR("ProductVersion")));
+  string build_str = ConvertToString(build_version);
+  string product_str = ConvertToString(product_version);
+
+  CFRelease(list);
+  CFRelease(sys_vers);
+  CFRelease(data);
+
+  strlcpy(build_string_, build_str.c_str(), sizeof(build_string_));
+
+  // Parse the string that looks like "10.4.8"
+  os_major_version_ = IntegerValueAtIndex(product_str, 0);
+  os_minor_version_ = IntegerValueAtIndex(product_str, 1);
+  os_build_number_ = IntegerValueAtIndex(product_str, 2);
+}
+
+void MinidumpGenerator::SetTaskContext(breakpad_ucontext_t *task_context) {
+  task_context_ = task_context;
+}
+
+string MinidumpGenerator::UniqueNameInDirectory(const string &dir,
+                                                string *unique_name) {
+  CFUUIDRef uuid = CFUUIDCreate(NULL);
+  CFStringRef uuid_cfstr = CFUUIDCreateString(NULL, uuid);
+  CFRelease(uuid);
+  string file_name(ConvertToString(uuid_cfstr));
+  CFRelease(uuid_cfstr);
+  string path(dir);
+
+  // Ensure that the directory (if non-empty) has a trailing slash so that
+  // we can append the file name and have a valid pathname.
+  if (!dir.empty()) {
+    if (dir.at(dir.size() - 1) != '/')
+      path.append(1, '/');
+  }
+
+  path.append(file_name);
+  path.append(".dmp");
+
+  if (unique_name)
+    *unique_name = file_name;
+
+  return path;
+}
+
+bool MinidumpGenerator::Write(const char *path) {
+  WriteStreamFN writers[] = {
+    &MinidumpGenerator::WriteThreadListStream,
+    &MinidumpGenerator::WriteMemoryListStream,
+    &MinidumpGenerator::WriteSystemInfoStream,
+    &MinidumpGenerator::WriteModuleListStream,
+    &MinidumpGenerator::WriteMiscInfoStream,
+    &MinidumpGenerator::WriteBreakpadInfoStream,
+    // Exception stream needs to be the last entry in this array as it may
+    // be omitted in the case where the minidump is written without an
+    // exception.
+    &MinidumpGenerator::WriteExceptionStream,
+  };
+  bool result = false;
+
+  // If opening was successful, create the header, directory, and call each
+  // writer.  The destructor for the TypedMDRVAs will cause the data to be
+  // flushed.  The destructor for the MinidumpFileWriter will close the file.
+  if (writer_.Open(path)) {
+    TypedMDRVA<MDRawHeader> header(&writer_);
+    TypedMDRVA<MDRawDirectory> dir(&writer_);
+
+    if (!header.Allocate())
+      return false;
+
+    int writer_count = static_cast<int>(sizeof(writers) / sizeof(writers[0]));
+
+    // If we don't have exception information, don't write out the
+    // exception stream
+    if (!exception_thread_ && !exception_type_)
+      --writer_count;
+
+    // Add space for all writers
+    if (!dir.AllocateArray(writer_count))
+      return false;
+
+    MDRawHeader *header_ptr = header.get();
+    header_ptr->signature = MD_HEADER_SIGNATURE;
+    header_ptr->version = MD_HEADER_VERSION;
+    time(reinterpret_cast<time_t *>(&(header_ptr->time_date_stamp)));
+    header_ptr->stream_count = writer_count;
+    header_ptr->stream_directory_rva = dir.position();
+
+    MDRawDirectory local_dir;
+    result = true;
+    for (int i = 0; (result) && (i < writer_count); ++i) {
+      result = (this->*writers[i])(&local_dir);
+
+      if (result)
+        dir.CopyIndex(i, &local_dir);
+    }
+  }
+  return result;
+}
+
+size_t MinidumpGenerator::CalculateStackSize(mach_vm_address_t start_addr) {
+  mach_vm_address_t stack_region_base = start_addr;
+  mach_vm_size_t stack_region_size;
+  natural_t nesting_level = 0;
+  vm_region_submap_info_64 submap_info;
+  mach_msg_type_number_t info_count = VM_REGION_SUBMAP_INFO_COUNT_64;
+
+  vm_region_recurse_info_t region_info;
+  region_info = reinterpret_cast<vm_region_recurse_info_t>(&submap_info);
+
+  if (start_addr == 0) {
+    return 0;
+  }
+
+  kern_return_t result =
+    mach_vm_region_recurse(crashing_task_, &stack_region_base,
+                           &stack_region_size, &nesting_level,
+                           region_info, &info_count);
+
+  if (result != KERN_SUCCESS || start_addr < stack_region_base) {
+    // Failure or stack corruption, since mach_vm_region had to go
+    // higher in the process address space to find a valid region.
+    return 0;
+  }
+
+  unsigned int tag = submap_info.user_tag;
+
+  // If the user tag is VM_MEMORY_STACK, look for more readable regions with
+  // the same tag placed immediately above the computed stack region. Under
+  // some circumstances, the stack for thread 0 winds up broken up into
+  // multiple distinct abutting regions. This can happen for several reasons,
+  // including user code that calls setrlimit(RLIMIT_STACK, ...) or changes
+  // the access on stack pages by calling mprotect.
+  if (tag == VM_MEMORY_STACK) {
+    while (true) {
+      mach_vm_address_t next_region_base = stack_region_base +
+                                           stack_region_size;
+      mach_vm_address_t proposed_next_region_base = next_region_base;
+      mach_vm_size_t next_region_size;
+      nesting_level = 0;
+      info_count = VM_REGION_SUBMAP_INFO_COUNT_64;
+      result = mach_vm_region_recurse(crashing_task_, &next_region_base,
+                                      &next_region_size, &nesting_level,
+                                      region_info, &info_count);
+      if (result != KERN_SUCCESS ||
+          next_region_base != proposed_next_region_base ||
+          submap_info.user_tag != tag ||
+          (submap_info.protection & VM_PROT_READ) == 0) {
+        break;
+      }
+
+      stack_region_size += next_region_size;
+    }
+  }
+
+  return stack_region_base + stack_region_size - start_addr;
+}
+
+bool MinidumpGenerator::WriteStackFromStartAddress(
+    mach_vm_address_t start_addr,
+    MDMemoryDescriptor *stack_location) {
+  UntypedMDRVA memory(&writer_);
+
+  bool result = false;
+  size_t size = CalculateStackSize(start_addr);
+
+  if (size == 0) {
+      // In some situations the stack address for the thread can come back 0.
+      // In these cases we skip over the threads in question and stuff the
+      // stack with a clearly borked value.
+      start_addr = 0xDEADBEEF;
+      size = 16;
+      if (!memory.Allocate(size))
+        return false;
+
+      unsigned long long dummy_stack[2];  // Fill dummy stack with 16 bytes of
+                                          // junk.
+      dummy_stack[0] = 0xDEADBEEF;
+      dummy_stack[1] = 0xDEADBEEF;
+
+      result = memory.Copy(dummy_stack, size);
+  } else {
+
+    if (!memory.Allocate(size))
+      return false;
+
+    if (dynamic_images_) {
+      vector<uint8_t> stack_memory;
+      if (ReadTaskMemory(crashing_task_,
+                         start_addr,
+                         size,
+                         stack_memory) != KERN_SUCCESS) {
+        return false;
+      }
+
+      result = memory.Copy(&stack_memory[0], size);
+    } else {
+      result = memory.Copy(reinterpret_cast<const void *>(start_addr), size);
+    }
+  }
+
+  stack_location->start_of_memory_range = start_addr;
+  stack_location->memory = memory.location();
+
+  return result;
+}
+
+bool MinidumpGenerator::WriteStack(breakpad_thread_state_data_t state,
+                                   MDMemoryDescriptor *stack_location) {
+  switch (cpu_type_) {
+#ifdef HAS_ARM_SUPPORT
+    case CPU_TYPE_ARM:
+      return WriteStackARM(state, stack_location);
+#endif
+#ifdef HAS_ARM64_SUPPORT
+    case CPU_TYPE_ARM64:
+      return WriteStackARM64(state, stack_location);
+#endif
+#ifdef HAS_PPC_SUPPORT
+    case CPU_TYPE_POWERPC:
+      return WriteStackPPC(state, stack_location);
+    case CPU_TYPE_POWERPC64:
+      return WriteStackPPC64(state, stack_location);
+#endif
+#ifdef HAS_X86_SUPPORT
+    case CPU_TYPE_I386:
+      return WriteStackX86(state, stack_location);
+    case CPU_TYPE_X86_64:
+      return WriteStackX86_64(state, stack_location);
+#endif
+    default:
+      return false;
+  }
+}
+
+bool MinidumpGenerator::WriteContext(breakpad_thread_state_data_t state,
+                                     MDLocationDescriptor *register_location) {
+  switch (cpu_type_) {
+#ifdef HAS_ARM_SUPPORT
+    case CPU_TYPE_ARM:
+      return WriteContextARM(state, register_location);
+#endif
+#ifdef HAS_ARM64_SUPPORT
+    case CPU_TYPE_ARM64:
+      return WriteContextARM64(state, register_location);
+#endif
+#ifdef HAS_PPC_SUPPORT
+    case CPU_TYPE_POWERPC:
+      return WriteContextPPC(state, register_location);
+    case CPU_TYPE_POWERPC64:
+      return WriteContextPPC64(state, register_location);
+#endif
+#ifdef HAS_X86_SUPPORT
+    case CPU_TYPE_I386:
+      return WriteContextX86(state, register_location);
+    case CPU_TYPE_X86_64:
+      return WriteContextX86_64(state, register_location);
+#endif
+    default:
+      return false;
+  }
+}
+
+uint64_t MinidumpGenerator::CurrentPCForStack(
+    breakpad_thread_state_data_t state) {
+  switch (cpu_type_) {
+#ifdef HAS_ARM_SUPPORT
+    case CPU_TYPE_ARM:
+      return CurrentPCForStackARM(state);
+#endif
+#ifdef HAS_ARM64_SUPPORT
+    case CPU_TYPE_ARM64:
+      return CurrentPCForStackARM64(state);
+#endif
+#ifdef HAS_PPC_SUPPORT
+    case CPU_TYPE_POWERPC:
+      return CurrentPCForStackPPC(state);
+    case CPU_TYPE_POWERPC64:
+      return CurrentPCForStackPPC64(state);
+#endif
+#ifdef HAS_X86_SUPPORT
+    case CPU_TYPE_I386:
+      return CurrentPCForStackX86(state);
+    case CPU_TYPE_X86_64:
+      return CurrentPCForStackX86_64(state);
+#endif
+    default:
+      assert(0 && "Unknown CPU type!");
+      return 0;
+  }
+}
+
+#ifdef HAS_ARM_SUPPORT
+bool MinidumpGenerator::WriteStackARM(breakpad_thread_state_data_t state,
+                                      MDMemoryDescriptor *stack_location) {
+  arm_thread_state_t *machine_state =
+      reinterpret_cast<arm_thread_state_t *>(state);
+  mach_vm_address_t start_addr = REGISTER_FROM_THREADSTATE(machine_state, sp);
+  return WriteStackFromStartAddress(start_addr, stack_location);
+}
+
+uint64_t
+MinidumpGenerator::CurrentPCForStackARM(breakpad_thread_state_data_t state) {
+  arm_thread_state_t *machine_state =
+      reinterpret_cast<arm_thread_state_t *>(state);
+
+  return REGISTER_FROM_THREADSTATE(machine_state, pc);
+}
+
+bool MinidumpGenerator::WriteContextARM(breakpad_thread_state_data_t state,
+                                        MDLocationDescriptor *register_location)
+{
+  TypedMDRVA<MDRawContextARM> context(&writer_);
+  arm_thread_state_t *machine_state =
+      reinterpret_cast<arm_thread_state_t *>(state);
+
+  if (!context.Allocate())
+    return false;
+
+  *register_location = context.location();
+  MDRawContextARM *context_ptr = context.get();
+  context_ptr->context_flags = MD_CONTEXT_ARM_FULL;
+
+#define AddGPR(a) context_ptr->iregs[a] = REGISTER_FROM_THREADSTATE(machine_state, r[a])
+
+  context_ptr->iregs[13] = REGISTER_FROM_THREADSTATE(machine_state, sp);
+  context_ptr->iregs[14] = REGISTER_FROM_THREADSTATE(machine_state, lr);
+  context_ptr->iregs[15] = REGISTER_FROM_THREADSTATE(machine_state, pc);
+  context_ptr->cpsr = REGISTER_FROM_THREADSTATE(machine_state, cpsr);
+
+  AddGPR(0);
+  AddGPR(1);
+  AddGPR(2);
+  AddGPR(3);
+  AddGPR(4);
+  AddGPR(5);
+  AddGPR(6);
+  AddGPR(7);
+  AddGPR(8);
+  AddGPR(9);
+  AddGPR(10);
+  AddGPR(11);
+  AddGPR(12);
+#undef AddGPR
+
+  return true;
+}
+#endif
+
+#ifdef HAS_ARM64_SUPPORT
+bool MinidumpGenerator::WriteStackARM64(breakpad_thread_state_data_t state,
+                                        MDMemoryDescriptor *stack_location) {
+  arm_thread_state64_t *machine_state =
+      reinterpret_cast<arm_thread_state64_t *>(state);
+  mach_vm_address_t start_addr = REGISTER_FROM_THREADSTATE(machine_state, sp);
+  return WriteStackFromStartAddress(start_addr, stack_location);
+}
+
+uint64_t
+MinidumpGenerator::CurrentPCForStackARM64(breakpad_thread_state_data_t state) {
+  arm_thread_state64_t *machine_state =
+      reinterpret_cast<arm_thread_state64_t *>(state);
+
+  return REGISTER_FROM_THREADSTATE(machine_state, pc);
+}
+
+bool
+MinidumpGenerator::WriteContextARM64(breakpad_thread_state_data_t state,
+                                     MDLocationDescriptor *register_location)
+{
+  TypedMDRVA<MDRawContextARM64> context(&writer_);
+  arm_thread_state64_t *machine_state =
+      reinterpret_cast<arm_thread_state64_t *>(state);
+
+  if (!context.Allocate())
+    return false;
+
+  *register_location = context.location();
+  MDRawContextARM64 *context_ptr = context.get();
+  context_ptr->context_flags = MD_CONTEXT_ARM64_FULL;
+
+#define AddGPR(a) context_ptr->iregs[a] = \
+    REGISTER_FROM_THREADSTATE(machine_state, x[a])
+
+  context_ptr->iregs[29] = REGISTER_FROM_THREADSTATE(machine_state, fp);
+  context_ptr->iregs[30] = REGISTER_FROM_THREADSTATE(machine_state, lr);
+  context_ptr->iregs[31] = REGISTER_FROM_THREADSTATE(machine_state, sp);
+  context_ptr->iregs[32] = REGISTER_FROM_THREADSTATE(machine_state, pc);
+  context_ptr->cpsr = REGISTER_FROM_THREADSTATE(machine_state, cpsr);
+
+  AddGPR(0);
+  AddGPR(1);
+  AddGPR(2);
+  AddGPR(3);
+  AddGPR(4);
+  AddGPR(5);
+  AddGPR(6);
+  AddGPR(7);
+  AddGPR(8);
+  AddGPR(9);
+  AddGPR(10);
+  AddGPR(11);
+  AddGPR(12);
+  AddGPR(13);
+  AddGPR(14);
+  AddGPR(15);
+  AddGPR(16);
+  AddGPR(17);
+  AddGPR(18);
+  AddGPR(19);
+  AddGPR(20);
+  AddGPR(21);
+  AddGPR(22);
+  AddGPR(23);
+  AddGPR(24);
+  AddGPR(25);
+  AddGPR(26);
+  AddGPR(27);
+  AddGPR(28);
+#undef AddGPR
+
+  return true;
+}
+#endif
+
+#ifdef HAS_PCC_SUPPORT
+bool MinidumpGenerator::WriteStackPPC(breakpad_thread_state_data_t state,
+                                      MDMemoryDescriptor *stack_location) {
+  ppc_thread_state_t *machine_state =
+      reinterpret_cast<ppc_thread_state_t *>(state);
+  mach_vm_address_t start_addr = REGISTER_FROM_THREADSTATE(machine_state, r1);
+  return WriteStackFromStartAddress(start_addr, stack_location);
+}
+
+bool MinidumpGenerator::WriteStackPPC64(breakpad_thread_state_data_t state,
+                                        MDMemoryDescriptor *stack_location) {
+  ppc_thread_state64_t *machine_state =
+      reinterpret_cast<ppc_thread_state64_t *>(state);
+  mach_vm_address_t start_addr = REGISTER_FROM_THREADSTATE(machine_state, r1);
+  return WriteStackFromStartAddress(start_addr, stack_location);
+}
+
+uint64_t
+MinidumpGenerator::CurrentPCForStackPPC(breakpad_thread_state_data_t state) {
+  ppc_thread_state_t *machine_state =
+      reinterpret_cast<ppc_thread_state_t *>(state);
+
+  return REGISTER_FROM_THREADSTATE(machine_state, srr0);
+}
+
+uint64_t
+MinidumpGenerator::CurrentPCForStackPPC64(breakpad_thread_state_data_t state) {
+  ppc_thread_state64_t *machine_state =
+      reinterpret_cast<ppc_thread_state64_t *>(state);
+
+  return REGISTER_FROM_THREADSTATE(machine_state, srr0);
+}
+
+bool MinidumpGenerator::WriteContextPPC(breakpad_thread_state_data_t state,
+                                        MDLocationDescriptor *register_location)
+{
+  TypedMDRVA<MDRawContextPPC> context(&writer_);
+  ppc_thread_state_t *machine_state =
+      reinterpret_cast<ppc_thread_state_t *>(state);
+
+  if (!context.Allocate())
+    return false;
+
+  *register_location = context.location();
+  MDRawContextPPC *context_ptr = context.get();
+  context_ptr->context_flags = MD_CONTEXT_PPC_BASE;
+
+#define AddReg(a) context_ptr->a = static_cast<__typeof__(context_ptr->a)>( \
+    REGISTER_FROM_THREADSTATE(machine_state, a))
+#define AddGPR(a) context_ptr->gpr[a] = \
+    static_cast<__typeof__(context_ptr->a)>( \
+    REGISTER_FROM_THREADSTATE(machine_state, r ## a)
+
+  AddReg(srr0);
+  AddReg(cr);
+  AddReg(xer);
+  AddReg(ctr);
+  AddReg(lr);
+  AddReg(vrsave);
+
+  AddGPR(0);
+  AddGPR(1);
+  AddGPR(2);
+  AddGPR(3);
+  AddGPR(4);
+  AddGPR(5);
+  AddGPR(6);
+  AddGPR(7);
+  AddGPR(8);
+  AddGPR(9);
+  AddGPR(10);
+  AddGPR(11);
+  AddGPR(12);
+  AddGPR(13);
+  AddGPR(14);
+  AddGPR(15);
+  AddGPR(16);
+  AddGPR(17);
+  AddGPR(18);
+  AddGPR(19);
+  AddGPR(20);
+  AddGPR(21);
+  AddGPR(22);
+  AddGPR(23);
+  AddGPR(24);
+  AddGPR(25);
+  AddGPR(26);
+  AddGPR(27);
+  AddGPR(28);
+  AddGPR(29);
+  AddGPR(30);
+  AddGPR(31);
+  AddReg(mq);
+#undef AddReg
+#undef AddGPR
+
+  return true;
+}
+
+bool MinidumpGenerator::WriteContextPPC64(
+    breakpad_thread_state_data_t state,
+    MDLocationDescriptor *register_location) {
+  TypedMDRVA<MDRawContextPPC64> context(&writer_);
+  ppc_thread_state64_t *machine_state =
+      reinterpret_cast<ppc_thread_state64_t *>(state);
+
+  if (!context.Allocate())
+    return false;
+
+  *register_location = context.location();
+  MDRawContextPPC64 *context_ptr = context.get();
+  context_ptr->context_flags = MD_CONTEXT_PPC_BASE;
+
+#define AddReg(a) context_ptr->a = static_cast<__typeof__(context_ptr->a)>( \
+    REGISTER_FROM_THREADSTATE(machine_state, a))
+#define AddGPR(a) context_ptr->gpr[a] = \
+    static_cast<__typeof__(context_ptr->a)>( \
+    REGISTER_FROM_THREADSTATE(machine_state, r ## a)
+
+  AddReg(srr0);
+  AddReg(cr);
+  AddReg(xer);
+  AddReg(ctr);
+  AddReg(lr);
+  AddReg(vrsave);
+
+  AddGPR(0);
+  AddGPR(1);
+  AddGPR(2);
+  AddGPR(3);
+  AddGPR(4);
+  AddGPR(5);
+  AddGPR(6);
+  AddGPR(7);
+  AddGPR(8);
+  AddGPR(9);
+  AddGPR(10);
+  AddGPR(11);
+  AddGPR(12);
+  AddGPR(13);
+  AddGPR(14);
+  AddGPR(15);
+  AddGPR(16);
+  AddGPR(17);
+  AddGPR(18);
+  AddGPR(19);
+  AddGPR(20);
+  AddGPR(21);
+  AddGPR(22);
+  AddGPR(23);
+  AddGPR(24);
+  AddGPR(25);
+  AddGPR(26);
+  AddGPR(27);
+  AddGPR(28);
+  AddGPR(29);
+  AddGPR(30);
+  AddGPR(31);
+#undef AddReg
+#undef AddGPR
+
+  return true;
+}
+
+#endif
+
+#ifdef HAS_X86_SUPPORT
+bool MinidumpGenerator::WriteStackX86(breakpad_thread_state_data_t state,
+                                   MDMemoryDescriptor *stack_location) {
+  i386_thread_state_t *machine_state =
+      reinterpret_cast<i386_thread_state_t *>(state);
+
+  mach_vm_address_t start_addr = REGISTER_FROM_THREADSTATE(machine_state, esp);
+  return WriteStackFromStartAddress(start_addr, stack_location);
+}
+
+bool MinidumpGenerator::WriteStackX86_64(breakpad_thread_state_data_t state,
+                                         MDMemoryDescriptor *stack_location) {
+  x86_thread_state64_t *machine_state =
+      reinterpret_cast<x86_thread_state64_t *>(state);
+
+  mach_vm_address_t start_addr = static_cast<mach_vm_address_t>(
+      REGISTER_FROM_THREADSTATE(machine_state, rsp));
+  return WriteStackFromStartAddress(start_addr, stack_location);
+}
+
+uint64_t
+MinidumpGenerator::CurrentPCForStackX86(breakpad_thread_state_data_t state) {
+  i386_thread_state_t *machine_state =
+      reinterpret_cast<i386_thread_state_t *>(state);
+
+  return REGISTER_FROM_THREADSTATE(machine_state, eip);
+}
+
+uint64_t
+MinidumpGenerator::CurrentPCForStackX86_64(breakpad_thread_state_data_t state) {
+  x86_thread_state64_t *machine_state =
+      reinterpret_cast<x86_thread_state64_t *>(state);
+
+  return REGISTER_FROM_THREADSTATE(machine_state, rip);
+}
+
+bool MinidumpGenerator::WriteContextX86(breakpad_thread_state_data_t state,
+                                        MDLocationDescriptor *register_location)
+{
+  TypedMDRVA<MDRawContextX86> context(&writer_);
+  i386_thread_state_t *machine_state =
+      reinterpret_cast<i386_thread_state_t *>(state);
+
+  if (!context.Allocate())
+    return false;
+
+  *register_location = context.location();
+  MDRawContextX86 *context_ptr = context.get();
+
+#define AddReg(a) context_ptr->a = static_cast<__typeof__(context_ptr->a)>( \
+    REGISTER_FROM_THREADSTATE(machine_state, a))
+
+  context_ptr->context_flags = MD_CONTEXT_X86;
+  AddReg(eax);
+  AddReg(ebx);
+  AddReg(ecx);
+  AddReg(edx);
+  AddReg(esi);
+  AddReg(edi);
+  AddReg(ebp);
+  AddReg(esp);
+
+  AddReg(cs);
+  AddReg(ds);
+  AddReg(ss);
+  AddReg(es);
+  AddReg(fs);
+  AddReg(gs);
+  AddReg(eflags);
+
+  AddReg(eip);
+#undef AddReg
+
+  return true;
+}
+
+bool MinidumpGenerator::WriteContextX86_64(
+    breakpad_thread_state_data_t state,
+    MDLocationDescriptor *register_location) {
+  TypedMDRVA<MDRawContextAMD64> context(&writer_);
+  x86_thread_state64_t *machine_state =
+      reinterpret_cast<x86_thread_state64_t *>(state);
+
+  if (!context.Allocate())
+    return false;
+
+  *register_location = context.location();
+  MDRawContextAMD64 *context_ptr = context.get();
+
+#define AddReg(a) context_ptr->a = static_cast<__typeof__(context_ptr->a)>( \
+    REGISTER_FROM_THREADSTATE(machine_state, a))
+
+  context_ptr->context_flags = MD_CONTEXT_AMD64;
+  AddReg(rax);
+  AddReg(rbx);
+  AddReg(rcx);
+  AddReg(rdx);
+  AddReg(rdi);
+  AddReg(rsi);
+  AddReg(rbp);
+  AddReg(rsp);
+  AddReg(r8);
+  AddReg(r9);
+  AddReg(r10);
+  AddReg(r11);
+  AddReg(r12);
+  AddReg(r13);
+  AddReg(r14);
+  AddReg(r15);
+  AddReg(rip);
+  // according to AMD's software developer guide, bits above 18 are
+  // not used in the flags register.  Since the minidump format
+  // specifies 32 bits for the flags register, we can truncate safely
+  // with no loss.
+  context_ptr->eflags = static_cast<uint32_t>(REGISTER_FROM_THREADSTATE(machine_state, rflags));
+  AddReg(cs);
+  AddReg(fs);
+  AddReg(gs);
+#undef AddReg
+
+  return true;
+}
+#endif
+
+bool MinidumpGenerator::GetThreadState(thread_act_t target_thread,
+                                       thread_state_t state,
+                                       mach_msg_type_number_t *count) {
+  if (task_context_ && target_thread == mach_thread_self()) {
+    switch (cpu_type_) {
+#ifdef HAS_ARM_SUPPORT
+      case CPU_TYPE_ARM:
+        size_t final_size =
+            std::min(static_cast<size_t>(*count), sizeof(arm_thread_state_t));
+        memcpy(state, &task_context_->breakpad_uc_mcontext->__ss, final_size);
+        *count = static_cast<mach_msg_type_number_t>(final_size);
+        return true;
+#endif
+#ifdef HAS_ARM64_SUPPORT
+      case CPU_TYPE_ARM64: {
+        size_t final_size =
+            std::min(static_cast<size_t>(*count), sizeof(arm_thread_state64_t));
+        memcpy(state, &task_context_->breakpad_uc_mcontext->__ss, final_size);
+        *count = static_cast<mach_msg_type_number_t>(final_size);
+        return true;
+      }
+#endif
+#ifdef HAS_X86_SUPPORT
+    case CPU_TYPE_I386:
+    case CPU_TYPE_X86_64: {
+        size_t state_size = cpu_type_ == CPU_TYPE_I386 ?
+            sizeof(i386_thread_state_t) : sizeof(x86_thread_state64_t);
+        size_t final_size =
+            std::min(static_cast<size_t>(*count), state_size);
+        memcpy(state, &task_context_->breakpad_uc_mcontext->__ss, final_size);
+        *count = static_cast<mach_msg_type_number_t>(final_size);
+        return true;
+      }
+#endif
+    }
+  }
+
+  thread_state_flavor_t flavor;
+  switch (cpu_type_) {
+#ifdef HAS_ARM_SUPPORT
+    case CPU_TYPE_ARM:
+      flavor = ARM_THREAD_STATE;
+      break;
+#endif
+#ifdef HAS_ARM64_SUPPORT
+    case CPU_TYPE_ARM64:
+      flavor = ARM_THREAD_STATE64;
+      break;
+#endif
+#ifdef HAS_PPC_SUPPORT
+    case CPU_TYPE_POWERPC:
+      flavor = PPC_THREAD_STATE;
+      break;
+    case CPU_TYPE_POWERPC64:
+      flavor = PPC_THREAD_STATE64;
+      break;
+#endif
+#ifdef HAS_X86_SUPPORT
+    case CPU_TYPE_I386:
+      flavor = i386_THREAD_STATE;
+      break;
+    case CPU_TYPE_X86_64:
+      flavor = x86_THREAD_STATE64;
+      break;
+#endif
+    default:
+      return false;
+  }
+  return thread_get_state(target_thread, flavor,
+                          state, count) == KERN_SUCCESS;
+}
+
+bool MinidumpGenerator::WriteThreadStream(mach_port_t thread_id,
+                                          MDRawThread *thread) {
+  breakpad_thread_state_data_t state;
+  mach_msg_type_number_t state_count
+      = static_cast<mach_msg_type_number_t>(sizeof(state));
+
+  if (GetThreadState(thread_id, state, &state_count)) {
+    if (!WriteStack(state, &thread->stack))
+      return false;
+
+    memory_blocks_.push_back(thread->stack);
+
+    if (!WriteContext(state, &thread->thread_context))
+      return false;
+
+    thread->thread_id = thread_id;
+  } else {
+    return false;
+  }
+
+  return true;
+}
+
+bool MinidumpGenerator::WriteThreadListStream(
+    MDRawDirectory *thread_list_stream) {
+  TypedMDRVA<MDRawThreadList> list(&writer_);
+  thread_act_port_array_t threads_for_task;
+  mach_msg_type_number_t thread_count;
+  int non_generator_thread_count;
+
+  if (task_threads(crashing_task_, &threads_for_task, &thread_count))
+    return false;
+
+  // Don't include the generator thread
+  if (handler_thread_ != MACH_PORT_NULL)
+    non_generator_thread_count = thread_count - 1;
+  else
+    non_generator_thread_count = thread_count;
+  if (!list.AllocateObjectAndArray(non_generator_thread_count,
+                                   sizeof(MDRawThread)))
+    return false;
+
+  thread_list_stream->stream_type = MD_THREAD_LIST_STREAM;
+  thread_list_stream->location = list.location();
+
+  list.get()->number_of_threads = non_generator_thread_count;
+
+  MDRawThread thread;
+  int thread_idx = 0;
+
+  for (unsigned int i = 0; i < thread_count; ++i) {
+    memset(&thread, 0, sizeof(MDRawThread));
+
+    if (threads_for_task[i] != handler_thread_) {
+      if (!WriteThreadStream(threads_for_task[i], &thread))
+        return false;
+
+      list.CopyIndexAfterObject(thread_idx++, &thread, sizeof(MDRawThread));
+    }
+  }
+
+  return true;
+}
+
+bool MinidumpGenerator::WriteMemoryListStream(
+    MDRawDirectory *memory_list_stream) {
+  TypedMDRVA<MDRawMemoryList> list(&writer_);
+
+  // If the dump has an exception, include some memory around the
+  // instruction pointer.
+  const size_t kIPMemorySize = 256;  // bytes
+  bool have_ip_memory = false;
+  MDMemoryDescriptor ip_memory_d;
+  if (exception_thread_ && exception_type_) {
+    breakpad_thread_state_data_t state;
+    mach_msg_type_number_t stateCount
+      = static_cast<mach_msg_type_number_t>(sizeof(state));
+
+    if (GetThreadState(exception_thread_, state, &stateCount)) {
+      uint64_t ip = CurrentPCForStack(state);
+      // Bound it to the upper and lower bounds of the region
+      // it's contained within. If it's not in a known memory region,
+      // don't bother trying to write it.
+      mach_vm_address_t addr = static_cast<vm_address_t>(ip);
+      mach_vm_size_t size;
+      natural_t nesting_level = 0;
+      vm_region_submap_info_64 info;
+      mach_msg_type_number_t info_count = VM_REGION_SUBMAP_INFO_COUNT_64;
+      vm_region_recurse_info_t recurse_info;
+      recurse_info = reinterpret_cast<vm_region_recurse_info_t>(&info);
+
+      kern_return_t ret =
+        mach_vm_region_recurse(crashing_task_,
+                               &addr,
+                               &size,
+                               &nesting_level,
+                               recurse_info,
+                               &info_count);
+      if (ret == KERN_SUCCESS && ip >= addr && ip < (addr + size)) {
+        // Try to get 128 bytes before and after the IP, but
+        // settle for whatever's available.
+        ip_memory_d.start_of_memory_range =
+          std::max(uintptr_t(addr),
+                   uintptr_t(ip - (kIPMemorySize / 2)));
+        uintptr_t end_of_range = 
+          std::min(uintptr_t(ip + (kIPMemorySize / 2)),
+                   uintptr_t(addr + size));
+        uintptr_t range_diff = end_of_range -
+            static_cast<uintptr_t>(ip_memory_d.start_of_memory_range);
+        ip_memory_d.memory.data_size = static_cast<uint32_t>(range_diff);
+        have_ip_memory = true;
+        // This needs to get appended to the list even though
+        // the memory bytes aren't filled in yet so the entire
+        // list can be written first. The memory bytes will get filled
+        // in after the memory list is written.
+        memory_blocks_.push_back(ip_memory_d);
+      }
+    }
+  }
+
+  // Now fill in the memory list and write it.
+  size_t memory_count = memory_blocks_.size();
+  if (!list.AllocateObjectAndArray(memory_count,
+                                   sizeof(MDMemoryDescriptor)))
+    return false;
+
+  memory_list_stream->stream_type = MD_MEMORY_LIST_STREAM;
+  memory_list_stream->location = list.location();
+
+  list.get()->number_of_memory_ranges = static_cast<uint32_t>(memory_count);
+
+  unsigned int i;
+  for (i = 0; i < memory_count; ++i) {
+    list.CopyIndexAfterObject(i, &memory_blocks_[i],
+                              sizeof(MDMemoryDescriptor));
+  }
+
+  if (have_ip_memory) {
+    // Now read the memory around the instruction pointer.
+    UntypedMDRVA ip_memory(&writer_);
+    if (!ip_memory.Allocate(ip_memory_d.memory.data_size))
+      return false;
+
+    if (dynamic_images_) {
+      // Out-of-process.
+      vector<uint8_t> memory;
+      if (ReadTaskMemory(crashing_task_,
+                         ip_memory_d.start_of_memory_range,
+                         ip_memory_d.memory.data_size,
+                         memory) != KERN_SUCCESS) {
+        return false;
+      }
+
+      ip_memory.Copy(&memory[0], ip_memory_d.memory.data_size);
+    } else {
+      // In-process, just copy from local memory.
+      ip_memory.Copy(
+        reinterpret_cast<const void *>(ip_memory_d.start_of_memory_range),
+        ip_memory_d.memory.data_size);
+    }
+
+    ip_memory_d.memory = ip_memory.location();
+    // Write this again now that the data location is filled in.
+    list.CopyIndexAfterObject(i - 1, &ip_memory_d,
+                              sizeof(MDMemoryDescriptor));
+  }
+
+  return true;
+}
+
+bool
+MinidumpGenerator::WriteExceptionStream(MDRawDirectory *exception_stream) {
+  TypedMDRVA<MDRawExceptionStream> exception(&writer_);
+
+  if (!exception.Allocate())
+    return false;
+
+  exception_stream->stream_type = MD_EXCEPTION_STREAM;
+  exception_stream->location = exception.location();
+  MDRawExceptionStream *exception_ptr = exception.get();
+  exception_ptr->thread_id = exception_thread_;
+
+  // This naming is confusing, but it is the proper translation from
+  // mach naming to minidump naming.
+  exception_ptr->exception_record.exception_code = exception_type_;
+  exception_ptr->exception_record.exception_flags = exception_code_;
+
+  breakpad_thread_state_data_t state;
+  mach_msg_type_number_t state_count
+      = static_cast<mach_msg_type_number_t>(sizeof(state));
+
+  if (!GetThreadState(exception_thread_, state, &state_count))
+    return false;
+
+  if (!WriteContext(state, &exception_ptr->thread_context))
+    return false;
+
+  if (exception_type_ == EXC_BAD_ACCESS)
+    exception_ptr->exception_record.exception_address = exception_subcode_;
+  else
+    exception_ptr->exception_record.exception_address = CurrentPCForStack(state);
+
+  return true;
+}
+
+bool MinidumpGenerator::WriteSystemInfoStream(
+    MDRawDirectory *system_info_stream) {
+  TypedMDRVA<MDRawSystemInfo> info(&writer_);
+
+  if (!info.Allocate())
+    return false;
+
+  system_info_stream->stream_type = MD_SYSTEM_INFO_STREAM;
+  system_info_stream->location = info.location();
+
+  // CPU Information
+  uint32_t number_of_processors;
+  size_t len = sizeof(number_of_processors);
+  sysctlbyname("hw.ncpu", &number_of_processors, &len, NULL, 0);
+  MDRawSystemInfo *info_ptr = info.get();
+
+  switch (cpu_type_) {
+#ifdef HAS_ARM_SUPPORT
+    case CPU_TYPE_ARM:
+      info_ptr->processor_architecture = MD_CPU_ARCHITECTURE_ARM;
+      break;
+#endif
+#ifdef HAS_ARM64_SUPPORT
+    case CPU_TYPE_ARM64:
+      info_ptr->processor_architecture = MD_CPU_ARCHITECTURE_ARM64;
+      break;
+#endif
+#ifdef HAS_PPC_SUPPORT
+    case CPU_TYPE_POWERPC:
+    case CPU_TYPE_POWERPC64:
+      info_ptr->processor_architecture = MD_CPU_ARCHITECTURE_PPC;
+      break;
+#endif
+#ifdef HAS_X86_SUPPORT
+    case CPU_TYPE_I386:
+    case CPU_TYPE_X86_64:
+      if (cpu_type_ == CPU_TYPE_I386)
+        info_ptr->processor_architecture = MD_CPU_ARCHITECTURE_X86;
+      else
+        info_ptr->processor_architecture = MD_CPU_ARCHITECTURE_AMD64;
+#ifdef __i386__
+      // ebx is used for PIC code, so we need
+      // to preserve it.
+#define cpuid(op,eax,ebx,ecx,edx)      \
+  asm ("pushl %%ebx   \n\t"            \
+       "cpuid         \n\t"            \
+       "movl %%ebx,%1 \n\t"            \
+       "popl %%ebx"                    \
+       : "=a" (eax),                   \
+         "=g" (ebx),                   \
+         "=c" (ecx),                   \
+         "=d" (edx)                    \
+       : "0" (op))
+#elif defined(__x86_64__)
+
+#define cpuid(op,eax,ebx,ecx,edx)      \
+  asm ("cpuid         \n\t"            \
+       : "=a" (eax),                   \
+         "=b" (ebx),                   \
+         "=c" (ecx),                   \
+         "=d" (edx)                    \
+       : "0" (op))
+#endif
+
+#if defined(__i386__) || defined(__x86_64__)
+      int unused, unused2;
+      // get vendor id
+      cpuid(0, unused, info_ptr->cpu.x86_cpu_info.vendor_id[0],
+            info_ptr->cpu.x86_cpu_info.vendor_id[2],
+            info_ptr->cpu.x86_cpu_info.vendor_id[1]);
+      // get version and feature info
+      cpuid(1, info_ptr->cpu.x86_cpu_info.version_information, unused, unused2,
+            info_ptr->cpu.x86_cpu_info.feature_information);
+
+      // family
+      info_ptr->processor_level =
+        (info_ptr->cpu.x86_cpu_info.version_information & 0xF00) >> 8;
+      // 0xMMSS (Model, Stepping)
+      info_ptr->processor_revision = static_cast<uint16_t>(
+          (info_ptr->cpu.x86_cpu_info.version_information & 0xF) |
+          ((info_ptr->cpu.x86_cpu_info.version_information & 0xF0) << 4));
+
+      // decode extended model info
+      if (info_ptr->processor_level == 0xF ||
+          info_ptr->processor_level == 0x6) {
+        info_ptr->processor_revision |=
+          ((info_ptr->cpu.x86_cpu_info.version_information & 0xF0000) >> 4);
+      }
+
+      // decode extended family info
+      if (info_ptr->processor_level == 0xF) {
+        info_ptr->processor_level +=
+          ((info_ptr->cpu.x86_cpu_info.version_information & 0xFF00000) >> 20);
+      }
+
+#endif  // __i386__ || __x86_64_
+      break;
+#endif  // HAS_X86_SUPPORT
+    default:
+      info_ptr->processor_architecture = MD_CPU_ARCHITECTURE_UNKNOWN;
+      break;
+  }
+
+  info_ptr->number_of_processors = static_cast<uint8_t>(number_of_processors);
+#if TARGET_OS_IPHONE
+  info_ptr->platform_id = MD_OS_IOS;
+#else
+  info_ptr->platform_id = MD_OS_MAC_OS_X;
+#endif  // TARGET_OS_IPHONE
+
+  MDLocationDescriptor build_string_loc;
+
+  if (!writer_.WriteString(build_string_, 0,
+                           &build_string_loc))
+    return false;
+
+  info_ptr->csd_version_rva = build_string_loc.rva;
+  info_ptr->major_version = os_major_version_;
+  info_ptr->minor_version = os_minor_version_;
+  info_ptr->build_number = os_build_number_;
+
+  return true;
+}
+
+bool MinidumpGenerator::WriteModuleStream(unsigned int index,
+                                          MDRawModule *module) {
+  if (dynamic_images_) {
+    // we're in a different process than the crashed process
+    DynamicImage *image = dynamic_images_->GetImage(index);
+
+    if (!image)
+      return false;
+
+    memset(module, 0, sizeof(MDRawModule));
+
+    MDLocationDescriptor string_location;
+
+    string name = image->GetFilePath();
+    if (!writer_.WriteString(name.c_str(), 0, &string_location))
+      return false;
+
+    module->base_of_image = image->GetVMAddr() + image->GetVMAddrSlide();
+    module->size_of_image = static_cast<uint32_t>(image->GetVMSize());
+    module->module_name_rva = string_location.rva;
+
+    // We'll skip the executable module, because they don't have
+    // LC_ID_DYLIB load commands, and the crash processing server gets
+    // version information from the Plist file, anyway.
+    if (index != static_cast<uint32_t>(FindExecutableModule())) {
+      module->version_info.signature = MD_VSFIXEDFILEINFO_SIGNATURE;
+      module->version_info.struct_version |= MD_VSFIXEDFILEINFO_VERSION;
+      // Convert MAC dylib version format, which is a 32 bit number, to the
+      // format used by minidump.  The mac format is <16 bits>.<8 bits>.<8 bits>
+      // so it fits nicely into the windows version with some massaging
+      // The mapping is:
+      //    1) upper 16 bits of MAC version go to lower 16 bits of product HI
+      //    2) Next most significant 8 bits go to upper 16 bits of product LO
+      //    3) Least significant 8 bits go to lower 16 bits of product LO
+      uint32_t modVersion = image->GetVersion();
+      module->version_info.file_version_hi = 0;
+      module->version_info.file_version_hi = modVersion >> 16;
+      module->version_info.file_version_lo |= (modVersion & 0xff00)  << 8;
+      module->version_info.file_version_lo |= (modVersion & 0xff);
+    }
+
+    if (!WriteCVRecord(module, image->GetCPUType(), name.c_str(), false)) {
+      return false;
+    }
+  } else {
+    // Getting module info in the crashed process
+    const breakpad_mach_header *header;
+    header = (breakpad_mach_header*)_dyld_get_image_header(index);
+    if (!header)
+      return false;
+
+#ifdef __LP64__
+    assert(header->magic == MH_MAGIC_64);
+
+    if(header->magic != MH_MAGIC_64)
+      return false;
+#else
+    assert(header->magic == MH_MAGIC);
+
+    if(header->magic != MH_MAGIC)
+      return false;
+#endif
+
+    int cpu_type = header->cputype;
+    unsigned long slide = _dyld_get_image_vmaddr_slide(index);
+    const char* name = _dyld_get_image_name(index);
+    const struct load_command *cmd =
+        reinterpret_cast<const struct load_command *>(header + 1);
+
+    memset(module, 0, sizeof(MDRawModule));
+
+    for (unsigned int i = 0; cmd && (i < header->ncmds); i++) {
+      if (cmd->cmd == LC_SEGMENT_ARCH) {
+
+        const breakpad_mach_segment_command *seg =
+            reinterpret_cast<const breakpad_mach_segment_command *>(cmd);
+
+        if (!strcmp(seg->segname, "__TEXT")) {
+          MDLocationDescriptor string_location;
+
+          if (!writer_.WriteString(name, 0, &string_location))
+            return false;
+
+          module->base_of_image = seg->vmaddr + slide;
+          module->size_of_image = static_cast<uint32_t>(seg->vmsize);
+          module->module_name_rva = string_location.rva;
+
+          bool in_memory = false;
+#if TARGET_OS_IPHONE
+          in_memory = true;
+#endif
+          if (!WriteCVRecord(module, cpu_type, name, in_memory))
+            return false;
+
+          return true;
+        }
+      }
+
+      cmd = reinterpret_cast<struct load_command*>((char *)cmd + cmd->cmdsize);
+    }
+  }
+
+  return true;
+}
+
+int MinidumpGenerator::FindExecutableModule() {
+  if (dynamic_images_) {
+    int index = dynamic_images_->GetExecutableImageIndex();
+
+    if (index >= 0) {
+      return index;
+    }
+  } else {
+    int image_count = _dyld_image_count();
+    const struct mach_header *header;
+
+    for (int index = 0; index < image_count; ++index) {
+      header = _dyld_get_image_header(index);
+
+      if (header->filetype == MH_EXECUTE)
+        return index;
+    }
+  }
+
+  // failed - just use the first image
+  return 0;
+}
+
+bool MinidumpGenerator::WriteCVRecord(MDRawModule *module, int cpu_type,
+                                      const char *module_path, bool in_memory) {
+  TypedMDRVA<MDCVInfoPDB70> cv(&writer_);
+
+  // Only return the last path component of the full module path
+  const char *module_name = strrchr(module_path, '/');
+
+  // Increment past the slash
+  if (module_name)
+    ++module_name;
+  else
+    module_name = "<Unknown>";
+
+  size_t module_name_length = strlen(module_name);
+
+  if (!cv.AllocateObjectAndArray(module_name_length + 1, sizeof(uint8_t)))
+    return false;
+
+  if (!cv.CopyIndexAfterObject(0, module_name, module_name_length))
+    return false;
+
+  module->cv_record = cv.location();
+  MDCVInfoPDB70 *cv_ptr = cv.get();
+  cv_ptr->cv_signature = MD_CVINFOPDB70_SIGNATURE;
+  cv_ptr->age = 0;
+
+  // Get the module identifier
+  unsigned char identifier[16];
+  bool result = false;
+  if (in_memory) {
+    MacFileUtilities::MachoID macho(module_path,
+        reinterpret_cast<void *>(module->base_of_image),
+        static_cast<size_t>(module->size_of_image));
+    result = macho.UUIDCommand(cpu_type, CPU_SUBTYPE_MULTIPLE, identifier);
+    if (!result)
+      result = macho.MD5(cpu_type, CPU_SUBTYPE_MULTIPLE, identifier);
+  }
+
+  if (!result) {
+     FileID file_id(module_path);
+     result = file_id.MachoIdentifier(cpu_type, CPU_SUBTYPE_MULTIPLE,
+                                      identifier);
+  }
+
+  if (result) {
+    cv_ptr->signature.data1 =
+        static_cast<uint32_t>(identifier[0]) << 24 |
+        static_cast<uint32_t>(identifier[1]) << 16 |
+        static_cast<uint32_t>(identifier[2]) << 8 |
+        static_cast<uint32_t>(identifier[3]);
+    cv_ptr->signature.data2 =
+        static_cast<uint16_t>(identifier[4] << 8) | identifier[5];
+    cv_ptr->signature.data3 =
+        static_cast<uint16_t>(identifier[6] << 8) | identifier[7];
+    cv_ptr->signature.data4[0] = identifier[8];
+    cv_ptr->signature.data4[1] = identifier[9];
+    cv_ptr->signature.data4[2] = identifier[10];
+    cv_ptr->signature.data4[3] = identifier[11];
+    cv_ptr->signature.data4[4] = identifier[12];
+    cv_ptr->signature.data4[5] = identifier[13];
+    cv_ptr->signature.data4[6] = identifier[14];
+    cv_ptr->signature.data4[7] = identifier[15];
+  }
+
+  return true;
+}
+
+bool MinidumpGenerator::WriteModuleListStream(
+    MDRawDirectory *module_list_stream) {
+  TypedMDRVA<MDRawModuleList> list(&writer_);
+
+  uint32_t image_count = dynamic_images_ ?
+      dynamic_images_->GetImageCount() :
+      _dyld_image_count();
+
+  if (!list.AllocateObjectAndArray(image_count, MD_MODULE_SIZE))
+    return false;
+
+  module_list_stream->stream_type = MD_MODULE_LIST_STREAM;
+  module_list_stream->location = list.location();
+  list.get()->number_of_modules = static_cast<uint32_t>(image_count);
+
+  // Write out the executable module as the first one
+  MDRawModule module;
+  uint32_t executableIndex = FindExecutableModule();
+
+  if (!WriteModuleStream(static_cast<unsigned>(executableIndex), &module)) {
+    return false;
+  }
+
+  list.CopyIndexAfterObject(0, &module, MD_MODULE_SIZE);
+  int destinationIndex = 1;  // Write all other modules after this one
+
+  for (uint32_t i = 0; i < image_count; ++i) {
+    if (i != executableIndex) {
+      if (!WriteModuleStream(static_cast<unsigned>(i), &module)) {
+        return false;
+      }
+
+      list.CopyIndexAfterObject(destinationIndex++, &module, MD_MODULE_SIZE);
+    }
+  }
+
+  return true;
+}
+
+bool MinidumpGenerator::WriteMiscInfoStream(MDRawDirectory *misc_info_stream) {
+  TypedMDRVA<MDRawMiscInfo> info(&writer_);
+
+  if (!info.Allocate())
+    return false;
+
+  misc_info_stream->stream_type = MD_MISC_INFO_STREAM;
+  misc_info_stream->location = info.location();
+
+  MDRawMiscInfo *info_ptr = info.get();
+  info_ptr->size_of_info = static_cast<uint32_t>(sizeof(MDRawMiscInfo));
+  info_ptr->flags1 = MD_MISCINFO_FLAGS1_PROCESS_ID |
+    MD_MISCINFO_FLAGS1_PROCESS_TIMES |
+    MD_MISCINFO_FLAGS1_PROCESSOR_POWER_INFO;
+
+  // Process ID
+  info_ptr->process_id = getpid();
+
+  // Times
+  struct rusage usage;
+  if (getrusage(RUSAGE_SELF, &usage) != -1) {
+    // Omit the fractional time since the MDRawMiscInfo only wants seconds
+    info_ptr->process_user_time =
+        static_cast<uint32_t>(usage.ru_utime.tv_sec);
+    info_ptr->process_kernel_time =
+        static_cast<uint32_t>(usage.ru_stime.tv_sec);
+  }
+  int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PID,
+                 static_cast<int>(info_ptr->process_id) };
+  uint mibsize = static_cast<uint>(sizeof(mib) / sizeof(mib[0]));
+  struct kinfo_proc proc;
+  size_t size = sizeof(proc);
+  if (sysctl(mib, mibsize, &proc, &size, NULL, 0) == 0) {
+    info_ptr->process_create_time =
+        static_cast<uint32_t>(proc.kp_proc.p_starttime.tv_sec);
+  }
+
+  // Speed
+  uint64_t speed;
+  const uint64_t kOneMillion = 1000 * 1000;
+  size = sizeof(speed);
+  sysctlbyname("hw.cpufrequency_max", &speed, &size, NULL, 0);
+  info_ptr->processor_max_mhz = static_cast<uint32_t>(speed / kOneMillion);
+  info_ptr->processor_mhz_limit = static_cast<uint32_t>(speed / kOneMillion);
+  size = sizeof(speed);
+  sysctlbyname("hw.cpufrequency", &speed, &size, NULL, 0);
+  info_ptr->processor_current_mhz = static_cast<uint32_t>(speed / kOneMillion);
+
+  return true;
+}
+
+bool MinidumpGenerator::WriteBreakpadInfoStream(
+    MDRawDirectory *breakpad_info_stream) {
+  TypedMDRVA<MDRawBreakpadInfo> info(&writer_);
+
+  if (!info.Allocate())
+    return false;
+
+  breakpad_info_stream->stream_type = MD_BREAKPAD_INFO_STREAM;
+  breakpad_info_stream->location = info.location();
+  MDRawBreakpadInfo *info_ptr = info.get();
+
+  if (exception_thread_ && exception_type_) {
+    info_ptr->validity = MD_BREAKPAD_INFO_VALID_DUMP_THREAD_ID |
+                         MD_BREAKPAD_INFO_VALID_REQUESTING_THREAD_ID;
+    info_ptr->dump_thread_id = handler_thread_;
+    info_ptr->requesting_thread_id = exception_thread_;
+  } else {
+    info_ptr->validity = MD_BREAKPAD_INFO_VALID_DUMP_THREAD_ID;
+    info_ptr->dump_thread_id = handler_thread_;
+    info_ptr->requesting_thread_id = 0;
+  }
+
+  return true;
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/client/mac/handler/minidump_generator.h b/google-breakpad/src/client/mac/handler/minidump_generator.h
new file mode 100644
index 0000000..4e4b4a6
--- /dev/null
+++ b/google-breakpad/src/client/mac/handler/minidump_generator.h
@@ -0,0 +1,236 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// minidump_generator.h:  Create a minidump of the current MacOS process.
+
+#ifndef CLIENT_MAC_GENERATOR_MINIDUMP_GENERATOR_H__
+#define CLIENT_MAC_GENERATOR_MINIDUMP_GENERATOR_H__
+
+#include <mach/mach.h>
+#include <TargetConditionals.h>
+
+#include <string>
+
+#include "client/mac/handler/ucontext_compat.h"
+#include "client/minidump_file_writer.h"
+#include "common/memory.h"
+#include "common/mac/macho_utilities.h"
+#include "google_breakpad/common/minidump_format.h"
+
+#include "dynamic_images.h"
+#include "mach_vm_compat.h"
+
+#if !TARGET_OS_IPHONE && (MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_7)
+  #define HAS_PPC_SUPPORT
+#endif
+#if defined(__arm__)
+#define HAS_ARM_SUPPORT
+#elif defined(__aarch64__)
+#define HAS_ARM64_SUPPORT
+#elif defined(__i386__) || defined(__x86_64__)
+  #define HAS_X86_SUPPORT
+#endif
+
+namespace google_breakpad {
+
+using std::string;
+
+// Use the REGISTER_FROM_THREADSTATE to access a register name from the
+// breakpad_thread_state_t structure.
+#if __DARWIN_UNIX03 || TARGET_CPU_X86_64 || TARGET_CPU_PPC64 || TARGET_CPU_ARM
+// In The 10.5 SDK Headers Apple prepended __ to the variable names in the
+// i386_thread_state_t structure.  There's no good way to tell what version of
+// the SDK we're compiling against so we just toggle on the same preprocessor
+// symbol Apple's headers use.
+#define REGISTER_FROM_THREADSTATE(a, b) ((a)->__ ## b)
+#else
+#define REGISTER_FROM_THREADSTATE(a, b) (a->b)
+#endif
+
+// Creates a minidump file of the current process.  If there is exception data,
+// use SetExceptionInformation() to add this to the minidump.  The minidump
+// file is generated by the Write() function.
+// Usage:
+// MinidumpGenerator minidump();
+// minidump.Write("/tmp/minidump");
+//
+class MinidumpGenerator {
+ public:
+  MinidumpGenerator();
+  MinidumpGenerator(mach_port_t crashing_task, mach_port_t handler_thread);
+
+  virtual ~MinidumpGenerator();
+
+  // Return <dir>/<unique_name>.dmp
+  // Sets |unique_name| (if requested) to the unique name for the minidump
+  static string UniqueNameInDirectory(const string &dir, string *unique_name);
+
+  // Write out the minidump into |path|
+  // All of the components of |path| must exist and be writable
+  // Return true if successful, false otherwise
+  bool Write(const char *path);
+
+  // Specify some exception information, if applicable
+  void SetExceptionInformation(int type, int code, int subcode,
+                               mach_port_t thread_name) {
+    exception_type_ = type;
+    exception_code_ = code;
+    exception_subcode_ = subcode;
+    exception_thread_ = thread_name;
+  }
+
+  // Specify the task context. If |task_context| is not NULL, it will be used
+  // to retrieve the context of the current thread, instead of using
+  // |thread_get_state|.
+  void SetTaskContext(breakpad_ucontext_t *task_context);
+
+  // Gather system information.  This should be call at least once before using
+  // the MinidumpGenerator class.
+  static void GatherSystemInformation();
+
+ protected:
+  // Overridable Stream writers
+  virtual bool WriteExceptionStream(MDRawDirectory *exception_stream);
+
+  // Overridable Helper
+  virtual bool WriteThreadStream(mach_port_t thread_id, MDRawThread *thread);
+
+ private:
+  typedef bool (MinidumpGenerator::*WriteStreamFN)(MDRawDirectory *);
+
+  // Stream writers
+  bool WriteThreadListStream(MDRawDirectory *thread_list_stream);
+  bool WriteMemoryListStream(MDRawDirectory *memory_list_stream);
+  bool WriteSystemInfoStream(MDRawDirectory *system_info_stream);
+  bool WriteModuleListStream(MDRawDirectory *module_list_stream);
+  bool WriteMiscInfoStream(MDRawDirectory *misc_info_stream);
+  bool WriteBreakpadInfoStream(MDRawDirectory *breakpad_info_stream);
+
+  // Helpers
+  uint64_t CurrentPCForStack(breakpad_thread_state_data_t state);
+  bool GetThreadState(thread_act_t target_thread, thread_state_t state,
+                      mach_msg_type_number_t *count);
+  bool WriteStackFromStartAddress(mach_vm_address_t start_addr,
+                                  MDMemoryDescriptor *stack_location);
+  bool WriteStack(breakpad_thread_state_data_t state,
+                  MDMemoryDescriptor *stack_location);
+  bool WriteContext(breakpad_thread_state_data_t state,
+                    MDLocationDescriptor *register_location);
+  bool WriteCVRecord(MDRawModule *module, int cpu_type,
+                     const char *module_path, bool in_memory);
+  bool WriteModuleStream(unsigned int index, MDRawModule *module);
+  size_t CalculateStackSize(mach_vm_address_t start_addr);
+  int  FindExecutableModule();
+
+  // Per-CPU implementations of these methods
+#ifdef HAS_ARM_SUPPORT
+  bool WriteStackARM(breakpad_thread_state_data_t state,
+                     MDMemoryDescriptor *stack_location);
+  bool WriteContextARM(breakpad_thread_state_data_t state,
+                       MDLocationDescriptor *register_location);
+  uint64_t CurrentPCForStackARM(breakpad_thread_state_data_t state);
+#endif
+#ifdef HAS_ARM64_SUPPORT
+  bool WriteStackARM64(breakpad_thread_state_data_t state,
+                       MDMemoryDescriptor *stack_location);
+  bool WriteContextARM64(breakpad_thread_state_data_t state,
+                         MDLocationDescriptor *register_location);
+  uint64_t CurrentPCForStackARM64(breakpad_thread_state_data_t state);
+#endif
+#ifdef HAS_PPC_SUPPORT
+  bool WriteStackPPC(breakpad_thread_state_data_t state,
+                     MDMemoryDescriptor *stack_location);
+  bool WriteContextPPC(breakpad_thread_state_data_t state,
+                       MDLocationDescriptor *register_location);
+  uint64_t CurrentPCForStackPPC(breakpad_thread_state_data_t state);
+  bool WriteStackPPC64(breakpad_thread_state_data_t state,
+                       MDMemoryDescriptor *stack_location);
+  bool WriteContextPPC64(breakpad_thread_state_data_t state,
+                       MDLocationDescriptor *register_location);
+  uint64_t CurrentPCForStackPPC64(breakpad_thread_state_data_t state);
+#endif
+#ifdef HAS_X86_SUPPORT
+  bool WriteStackX86(breakpad_thread_state_data_t state,
+                       MDMemoryDescriptor *stack_location);
+  bool WriteContextX86(breakpad_thread_state_data_t state,
+                       MDLocationDescriptor *register_location);
+  uint64_t CurrentPCForStackX86(breakpad_thread_state_data_t state);
+  bool WriteStackX86_64(breakpad_thread_state_data_t state,
+                        MDMemoryDescriptor *stack_location);
+  bool WriteContextX86_64(breakpad_thread_state_data_t state,
+                          MDLocationDescriptor *register_location);
+  uint64_t CurrentPCForStackX86_64(breakpad_thread_state_data_t state);
+#endif
+
+  // disallow copy ctor and operator=
+  explicit MinidumpGenerator(const MinidumpGenerator &);
+  void operator=(const MinidumpGenerator &);
+
+ protected:
+  // Use this writer to put the data to disk
+  MinidumpFileWriter writer_;
+
+ private:
+  // Exception information
+  int exception_type_;
+  int exception_code_;
+  int exception_subcode_;
+  mach_port_t exception_thread_;
+  mach_port_t crashing_task_;
+  mach_port_t handler_thread_;
+
+  // CPU type of the task being dumped.
+  cpu_type_t cpu_type_;
+
+  // System information
+  static char build_string_[16];
+  static int os_major_version_;
+  static int os_minor_version_;
+  static int os_build_number_;
+
+  // Context of the task to dump.
+  breakpad_ucontext_t *task_context_;
+
+  // Information about dynamically loaded code
+  DynamicImages *dynamic_images_;
+
+  // PageAllocator makes it possible to allocate memory
+  // directly from the system, even while handling an exception.
+  mutable PageAllocator allocator_;
+
+ protected:
+  // Blocks of memory written to the dump. These are all currently
+  // written while writing the thread list stream, but saved here
+  // so a memory list stream can be written afterwards.
+  wasteful_vector<MDMemoryDescriptor> memory_blocks_;
+};
+
+}  // namespace google_breakpad
+
+#endif  // CLIENT_MAC_GENERATOR_MINIDUMP_GENERATOR_H__
diff --git a/google-breakpad/src/client/mac/handler/minidump_test.xcodeproj/project.pbxproj b/google-breakpad/src/client/mac/handler/minidump_test.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..2a597d5
--- /dev/null
+++ b/google-breakpad/src/client/mac/handler/minidump_test.xcodeproj/project.pbxproj
@@ -0,0 +1,841 @@
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 46;
+	objects = {
+
+/* Begin PBXBuildFile section */
+		8BFC813F11FF9A58002CB4DC /* libcrypto.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 8BFC813E11FF9A58002CB4DC /* libcrypto.dylib */; };
+		8BFC814411FF9A9C002CB4DC /* libcrypto.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 8BFC813E11FF9A58002CB4DC /* libcrypto.dylib */; };
+		8BFC814511FF9A9D002CB4DC /* libcrypto.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 8BFC813E11FF9A58002CB4DC /* libcrypto.dylib */; };
+		8BFC814811FF9B13002CB4DC /* libcrypto.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 8BFC813E11FF9A58002CB4DC /* libcrypto.dylib */; };
+		8BFC814911FF9B13002CB4DC /* libcrypto.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 8BFC813E11FF9A58002CB4DC /* libcrypto.dylib */; };
+		8BFC814A11FF9B13002CB4DC /* libcrypto.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 8BFC813E11FF9A58002CB4DC /* libcrypto.dylib */; };
+		8BFC814B11FF9B3F002CB4DC /* SenTestingKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F9721FA10E8B0E2300D7E813 /* SenTestingKit.framework */; };
+		8BFC814C11FF9B3F002CB4DC /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F9721F6B0E8B0D7000D7E813 /* Cocoa.framework */; };
+		8BFC81A211FF9C2E002CB4DC /* CPlusTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8BFC819211FF9C23002CB4DC /* CPlusTest.framework */; };
+		8BFC81A311FF9C2F002CB4DC /* CPlusTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8BFC819211FF9C23002CB4DC /* CPlusTest.framework */; };
+		8BFC81AD11FF9C8A002CB4DC /* breakpad_nlist_64.cc in Sources */ = {isa = PBXBuildFile; fileRef = F98208A10DB32CAE0017AECA /* breakpad_nlist_64.cc */; };
+		8BFC81AE11FF9C8C002CB4DC /* breakpad_nlist_64.cc in Sources */ = {isa = PBXBuildFile; fileRef = F98208A10DB32CAE0017AECA /* breakpad_nlist_64.cc */; };
+		8BFC81AF11FF9C8C002CB4DC /* breakpad_nlist_64.cc in Sources */ = {isa = PBXBuildFile; fileRef = F98208A10DB32CAE0017AECA /* breakpad_nlist_64.cc */; };
+		8BFC81B011FF9C8D002CB4DC /* breakpad_nlist_64.cc in Sources */ = {isa = PBXBuildFile; fileRef = F98208A10DB32CAE0017AECA /* breakpad_nlist_64.cc */; };
+		9B35FF5A0B267D5F008DE8C7 /* convert_UTF.c in Sources */ = {isa = PBXBuildFile; fileRef = 9B35FF560B267D5F008DE8C7 /* convert_UTF.c */; };
+		9B35FF5B0B267D5F008DE8C7 /* string_conversion.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9B35FF580B267D5F008DE8C7 /* string_conversion.cc */; };
+		9B37CEEC0AF98ECD00FA4BD4 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9B37CEEB0AF98ECD00FA4BD4 /* CoreFoundation.framework */; };
+		9B7CA7700B12873A00CD3A1D /* minidump_file_writer-inl.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9BE3C01E0B0CE329009892DF /* minidump_file_writer-inl.h */; };
+		9B7CA8540B12989000CD3A1D /* minidump_file_writer_unittest.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9B7CA8530B12989000CD3A1D /* minidump_file_writer_unittest.cc */; };
+		9B7CA8550B1298A100CD3A1D /* minidump_file_writer.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BD82C230B01344C0055103E /* minidump_file_writer.cc */; };
+		9BC1D2940B336F2300F2A2B4 /* convert_UTF.c in Sources */ = {isa = PBXBuildFile; fileRef = 9B35FF560B267D5F008DE8C7 /* convert_UTF.c */; };
+		9BC1D2950B336F2500F2A2B4 /* string_conversion.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9B35FF580B267D5F008DE8C7 /* string_conversion.cc */; };
+		9BD82AC10B0029DF0055103E /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9B37CEEB0AF98ECD00FA4BD4 /* CoreFoundation.framework */; };
+		9BD82BFF0B01333D0055103E /* exception_handler_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BD82BFD0B01333D0055103E /* exception_handler_test.cc */; };
+		9BD82C020B01333D0055103E /* minidump_generator_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BD82BFE0B01333D0055103E /* minidump_generator_test.cc */; };
+		9BD82C0D0B0133520055103E /* exception_handler.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BD82C090B0133520055103E /* exception_handler.cc */; };
+		9BD82C0E0B0133520055103E /* minidump_generator.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BD82C0B0B0133520055103E /* minidump_generator.cc */; };
+		9BD82C0F0B0133520055103E /* exception_handler.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BD82C090B0133520055103E /* exception_handler.cc */; };
+		9BD82C100B0133520055103E /* exception_handler.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9BD82C0A0B0133520055103E /* exception_handler.h */; };
+		9BD82C110B0133520055103E /* minidump_generator.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BD82C0B0B0133520055103E /* minidump_generator.cc */; };
+		9BD82C120B0133520055103E /* minidump_generator.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9BD82C0C0B0133520055103E /* minidump_generator.h */; };
+		9BD82C250B01344C0055103E /* minidump_file_writer.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BD82C230B01344C0055103E /* minidump_file_writer.cc */; };
+		9BD82C260B01344C0055103E /* minidump_file_writer.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BD82C230B01344C0055103E /* minidump_file_writer.cc */; };
+		9BD82C270B01344C0055103E /* minidump_file_writer.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9BD82C240B01344C0055103E /* minidump_file_writer.h */; };
+		9BD82C2D0B01345E0055103E /* string_utilities.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BD82C2B0B01345E0055103E /* string_utilities.cc */; };
+		9BD82C2E0B01345E0055103E /* string_utilities.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BD82C2B0B01345E0055103E /* string_utilities.cc */; };
+		9BD82C2F0B01345E0055103E /* string_utilities.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9BD82C2C0B01345E0055103E /* string_utilities.h */; };
+		D2F651000BEF947200920385 /* file_id.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F650FA0BEF947200920385 /* file_id.cc */; };
+		D2F651010BEF947200920385 /* file_id.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = D2F650FB0BEF947200920385 /* file_id.h */; };
+		D2F651020BEF947200920385 /* macho_id.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F650FC0BEF947200920385 /* macho_id.cc */; };
+		D2F651030BEF947200920385 /* macho_id.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = D2F650FD0BEF947200920385 /* macho_id.h */; };
+		D2F651040BEF947200920385 /* macho_utilities.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F650FE0BEF947200920385 /* macho_utilities.cc */; };
+		D2F651050BEF947200920385 /* macho_utilities.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = D2F650FF0BEF947200920385 /* macho_utilities.h */; };
+		D2F651090BEF949A00920385 /* dynamic_images.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F651070BEF949A00920385 /* dynamic_images.cc */; };
+		D2F6510A0BEF949A00920385 /* dynamic_images.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = D2F651080BEF949A00920385 /* dynamic_images.h */; };
+		D2F6510E0BEF94EB00920385 /* macho_walker.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F6510C0BEF94EB00920385 /* macho_walker.cc */; };
+		D2F6510F0BEF94EB00920385 /* macho_walker.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = D2F6510D0BEF94EB00920385 /* macho_walker.h */; };
+		D2F651110BEF951700920385 /* string_conversion.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9B35FF580B267D5F008DE8C7 /* string_conversion.cc */; };
+		D2F651130BEF951C00920385 /* string_conversion.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9B35FF590B267D5F008DE8C7 /* string_conversion.h */; };
+		D2F651150BEF953000920385 /* convert_UTF.c in Sources */ = {isa = PBXBuildFile; fileRef = 9B35FF560B267D5F008DE8C7 /* convert_UTF.c */; };
+		D2F651160BEF953100920385 /* convert_UTF.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9B35FF570B267D5F008DE8C7 /* convert_UTF.h */; };
+		D2F6511B0BEF970E00920385 /* dynamic_images.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F651070BEF949A00920385 /* dynamic_images.cc */; };
+		D2F6511D0BEF973500920385 /* file_id.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F650FA0BEF947200920385 /* file_id.cc */; };
+		D2F6511E0BEF973600920385 /* macho_id.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F650FC0BEF947200920385 /* macho_id.cc */; };
+		D2F6511F0BEF973900920385 /* macho_utilities.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F650FE0BEF947200920385 /* macho_utilities.cc */; };
+		D2F651210BEF975400920385 /* macho_walker.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F6510C0BEF94EB00920385 /* macho_walker.cc */; };
+		F93A887D0E8B4C8C0026AF89 /* macho_walker.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F6510C0BEF94EB00920385 /* macho_walker.cc */; };
+		F93A887E0E8B4C8C0026AF89 /* macho_id.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F650FC0BEF947200920385 /* macho_id.cc */; };
+		F93A887F0E8B4C8C0026AF89 /* macho_utilities.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F650FE0BEF947200920385 /* macho_utilities.cc */; };
+		F93A88800E8B4C8C0026AF89 /* file_id.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F650FA0BEF947200920385 /* file_id.cc */; };
+		F93A88860E8B4C9A0026AF89 /* dwarftests.mm in Sources */ = {isa = PBXBuildFile; fileRef = F9721F310E8B07E800D7E813 /* dwarftests.mm */; };
+		F93A88870E8B4C9A0026AF89 /* dump_syms.mm in Sources */ = {isa = PBXBuildFile; fileRef = F9721F390E8B0D0D00D7E813 /* dump_syms.mm */; };
+		F93A88880E8B4C9A0026AF89 /* bytereader.cc in Sources */ = {isa = PBXBuildFile; fileRef = F9721F760E8B0DC700D7E813 /* bytereader.cc */; };
+		F93A88890E8B4C9A0026AF89 /* dwarf2reader.cc in Sources */ = {isa = PBXBuildFile; fileRef = F9721F770E8B0DC700D7E813 /* dwarf2reader.cc */; };
+		F93A888A0E8B4C9A0026AF89 /* functioninfo.cc in Sources */ = {isa = PBXBuildFile; fileRef = F9721F780E8B0DC700D7E813 /* functioninfo.cc */; };
+		F93A888B0E8B4C9A0026AF89 /* md5.cc in Sources */ = {isa = PBXBuildFile; fileRef = F9721FA80E8B0E4800D7E813 /* md5.cc */; };
+		F9721F6C0E8B0D7000D7E813 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F9721F6B0E8B0D7000D7E813 /* Cocoa.framework */; };
+		F9721FA20E8B0E2300D7E813 /* SenTestingKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F9721FA10E8B0E2300D7E813 /* SenTestingKit.framework */; };
+		F982089C0DB3280D0017AECA /* breakpad_nlist_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = F982089B0DB3280D0017AECA /* breakpad_nlist_test.cc */; };
+		F98208A30DB32CAE0017AECA /* breakpad_nlist_64.cc in Sources */ = {isa = PBXBuildFile; fileRef = F98208A10DB32CAE0017AECA /* breakpad_nlist_64.cc */; };
+		F9AE5B390DBFDBDB00505983 /* dynamic_images.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F651070BEF949A00920385 /* dynamic_images.cc */; };
+		F9AE5B3A0DBFDBDB00505983 /* DynamicImagesTests.cc in Sources */ = {isa = PBXBuildFile; fileRef = F9C5A4210DB82DD800209C76 /* DynamicImagesTests.cc */; };
+		F9B34E870DBC1E1600306484 /* dynamic_images.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F651070BEF949A00920385 /* dynamic_images.cc */; };
+		F9C5A4220DB82DD800209C76 /* DynamicImagesTests.cc in Sources */ = {isa = PBXBuildFile; fileRef = F9C5A4210DB82DD800209C76 /* DynamicImagesTests.cc */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXCopyFilesBuildPhase section */
+		8DD76F690486A84900D96B5E /* CopyFiles */ = {
+			isa = PBXCopyFilesBuildPhase;
+			buildActionMask = 8;
+			dstPath = /usr/share/man/man1/;
+			dstSubfolderSpec = 0;
+			files = (
+				9BD82C100B0133520055103E /* exception_handler.h in CopyFiles */,
+				9BD82C120B0133520055103E /* minidump_generator.h in CopyFiles */,
+				9BD82C270B01344C0055103E /* minidump_file_writer.h in CopyFiles */,
+				9BD82C2F0B01345E0055103E /* string_utilities.h in CopyFiles */,
+				9B7CA7700B12873A00CD3A1D /* minidump_file_writer-inl.h in CopyFiles */,
+				D2F651010BEF947200920385 /* file_id.h in CopyFiles */,
+				D2F651030BEF947200920385 /* macho_id.h in CopyFiles */,
+				D2F651050BEF947200920385 /* macho_utilities.h in CopyFiles */,
+				D2F6510A0BEF949A00920385 /* dynamic_images.h in CopyFiles */,
+				D2F6510F0BEF94EB00920385 /* macho_walker.h in CopyFiles */,
+				D2F651130BEF951C00920385 /* string_conversion.h in CopyFiles */,
+				D2F651160BEF953100920385 /* convert_UTF.h in CopyFiles */,
+			);
+			runOnlyForDeploymentPostprocessing = 1;
+		};
+/* End PBXCopyFilesBuildPhase section */
+
+/* Begin PBXFileReference section */
+		8BFC812011FF99D5002CB4DC /* Breakpad.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Breakpad.xcconfig; path = ../../../common/mac/Breakpad.xcconfig; sourceTree = SOURCE_ROOT; };
+		8BFC812111FF99D5002CB4DC /* BreakpadDebug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = BreakpadDebug.xcconfig; path = ../../../common/mac/BreakpadDebug.xcconfig; sourceTree = SOURCE_ROOT; };
+		8BFC812211FF99D5002CB4DC /* BreakpadRelease.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = BreakpadRelease.xcconfig; path = ../../../common/mac/BreakpadRelease.xcconfig; sourceTree = SOURCE_ROOT; };
+		8BFC813E11FF9A58002CB4DC /* libcrypto.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libcrypto.dylib; path = usr/lib/libcrypto.dylib; sourceTree = SDKROOT; };
+		8BFC815411FF9B7F002CB4DC /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; };
+		8BFC819211FF9C23002CB4DC /* CPlusTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CPlusTest.framework; path = Library/Frameworks/CPlusTest.framework; sourceTree = DEVELOPER_DIR; };
+		8DD76F6C0486A84900D96B5E /* generator_test */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = generator_test; sourceTree = BUILT_PRODUCTS_DIR; };
+		9B35FF560B267D5F008DE8C7 /* convert_UTF.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = convert_UTF.c; path = ../../../common/convert_UTF.c; sourceTree = SOURCE_ROOT; };
+		9B35FF570B267D5F008DE8C7 /* convert_UTF.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = convert_UTF.h; path = ../../../common/convert_UTF.h; sourceTree = SOURCE_ROOT; };
+		9B35FF580B267D5F008DE8C7 /* string_conversion.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = string_conversion.cc; path = ../../../common/string_conversion.cc; sourceTree = SOURCE_ROOT; };
+		9B35FF590B267D5F008DE8C7 /* string_conversion.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = string_conversion.h; path = ../../../common/string_conversion.h; sourceTree = SOURCE_ROOT; };
+		9B37CEEB0AF98ECD00FA4BD4 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = System/Library/Frameworks/CoreFoundation.framework; sourceTree = SDKROOT; };
+		9B7CA84E0B1297F200CD3A1D /* unit_test */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = unit_test; sourceTree = BUILT_PRODUCTS_DIR; };
+		9B7CA8530B12989000CD3A1D /* minidump_file_writer_unittest.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = minidump_file_writer_unittest.cc; path = ../../minidump_file_writer_unittest.cc; sourceTree = "<group>"; };
+		9BD82A9B0B00267E0055103E /* handler_test */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = handler_test; sourceTree = BUILT_PRODUCTS_DIR; };
+		9BD82BFD0B01333D0055103E /* exception_handler_test.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = exception_handler_test.cc; sourceTree = SOURCE_ROOT; };
+		9BD82BFE0B01333D0055103E /* minidump_generator_test.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = minidump_generator_test.cc; sourceTree = SOURCE_ROOT; };
+		9BD82C090B0133520055103E /* exception_handler.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = exception_handler.cc; sourceTree = SOURCE_ROOT; };
+		9BD82C0A0B0133520055103E /* exception_handler.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = exception_handler.h; sourceTree = SOURCE_ROOT; };
+		9BD82C0B0B0133520055103E /* minidump_generator.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = minidump_generator.cc; sourceTree = SOURCE_ROOT; };
+		9BD82C0C0B0133520055103E /* minidump_generator.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = minidump_generator.h; sourceTree = SOURCE_ROOT; };
+		9BD82C230B01344C0055103E /* minidump_file_writer.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = minidump_file_writer.cc; path = ../../minidump_file_writer.cc; sourceTree = SOURCE_ROOT; };
+		9BD82C240B01344C0055103E /* minidump_file_writer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = minidump_file_writer.h; path = ../../minidump_file_writer.h; sourceTree = SOURCE_ROOT; };
+		9BD82C2B0B01345E0055103E /* string_utilities.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = string_utilities.cc; path = ../../../common/mac/string_utilities.cc; sourceTree = SOURCE_ROOT; };
+		9BD82C2C0B01345E0055103E /* string_utilities.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = string_utilities.h; path = ../../../common/mac/string_utilities.h; sourceTree = SOURCE_ROOT; };
+		9BE3C01E0B0CE329009892DF /* minidump_file_writer-inl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "minidump_file_writer-inl.h"; path = "../../minidump_file_writer-inl.h"; sourceTree = SOURCE_ROOT; };
+		D2F650FA0BEF947200920385 /* file_id.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = file_id.cc; path = ../../../common/mac/file_id.cc; sourceTree = SOURCE_ROOT; };
+		D2F650FB0BEF947200920385 /* file_id.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = file_id.h; path = ../../../common/mac/file_id.h; sourceTree = SOURCE_ROOT; };
+		D2F650FC0BEF947200920385 /* macho_id.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = macho_id.cc; path = ../../../common/mac/macho_id.cc; sourceTree = SOURCE_ROOT; };
+		D2F650FD0BEF947200920385 /* macho_id.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = macho_id.h; path = ../../../common/mac/macho_id.h; sourceTree = SOURCE_ROOT; };
+		D2F650FE0BEF947200920385 /* macho_utilities.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = macho_utilities.cc; path = ../../../common/mac/macho_utilities.cc; sourceTree = SOURCE_ROOT; };
+		D2F650FF0BEF947200920385 /* macho_utilities.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = macho_utilities.h; path = ../../../common/mac/macho_utilities.h; sourceTree = SOURCE_ROOT; };
+		D2F651070BEF949A00920385 /* dynamic_images.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = dynamic_images.cc; sourceTree = "<group>"; };
+		D2F651080BEF949A00920385 /* dynamic_images.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = dynamic_images.h; sourceTree = "<group>"; };
+		D2F6510C0BEF94EB00920385 /* macho_walker.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = macho_walker.cc; path = ../../../common/mac/macho_walker.cc; sourceTree = SOURCE_ROOT; };
+		D2F6510D0BEF94EB00920385 /* macho_walker.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = macho_walker.h; path = ../../../common/mac/macho_walker.h; sourceTree = SOURCE_ROOT; };
+		F917C4F70E03265A00F86017 /* breakpad_exc_server.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = breakpad_exc_server.c; sourceTree = "<group>"; };
+		F917C4F80E03265A00F86017 /* breakpad_exc_server.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = breakpad_exc_server.h; sourceTree = "<group>"; };
+		F93A88750E8B4C700026AF89 /* octestcases.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = octestcases.octest; sourceTree = BUILT_PRODUCTS_DIR; };
+		F93A88760E8B4C700026AF89 /* obj-cTestCases-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "obj-cTestCases-Info.plist"; sourceTree = "<group>"; };
+		F9721F300E8B07E800D7E813 /* dwarftests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dwarftests.h; sourceTree = "<group>"; };
+		F9721F310E8B07E800D7E813 /* dwarftests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = dwarftests.mm; sourceTree = "<group>"; };
+		F9721F380E8B0CFC00D7E813 /* dump_syms.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = dump_syms.h; path = ../../../common/mac/dump_syms.h; sourceTree = SOURCE_ROOT; };
+		F9721F390E8B0D0D00D7E813 /* dump_syms.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = dump_syms.mm; path = ../../../common/mac/dump_syms.mm; sourceTree = SOURCE_ROOT; };
+		F9721F6B0E8B0D7000D7E813 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
+		F9721F760E8B0DC700D7E813 /* bytereader.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = bytereader.cc; path = ../../../common/dwarf/bytereader.cc; sourceTree = SOURCE_ROOT; };
+		F9721F770E8B0DC700D7E813 /* dwarf2reader.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = dwarf2reader.cc; path = ../../../common/dwarf/dwarf2reader.cc; sourceTree = SOURCE_ROOT; };
+		F9721F780E8B0DC700D7E813 /* functioninfo.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = functioninfo.cc; path = ../../../common/dwarf/functioninfo.cc; sourceTree = SOURCE_ROOT; };
+		F9721FA10E8B0E2300D7E813 /* SenTestingKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SenTestingKit.framework; path = Library/Frameworks/SenTestingKit.framework; sourceTree = DEVELOPER_DIR; };
+		F9721FA80E8B0E4800D7E813 /* md5.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = md5.cc; path = ../../../common/md5.cc; sourceTree = SOURCE_ROOT; };
+		F982089A0DB3280D0017AECA /* breakpad_nlist_test.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = breakpad_nlist_test.h; sourceTree = "<group>"; };
+		F982089B0DB3280D0017AECA /* breakpad_nlist_test.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = breakpad_nlist_test.cc; sourceTree = "<group>"; };
+		F98208A10DB32CAE0017AECA /* breakpad_nlist_64.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = breakpad_nlist_64.cc; sourceTree = "<group>"; };
+		F98208A20DB32CAE0017AECA /* breakpad_nlist_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = breakpad_nlist_64.h; sourceTree = "<group>"; };
+		F9AE19B50DB040E300C98454 /* minidump_tests32-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "minidump_tests32-Info.plist"; sourceTree = "<group>"; };
+		F9AE19C30DB04A9500C98454 /* minidump_tests64.cptest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = minidump_tests64.cptest; sourceTree = BUILT_PRODUCTS_DIR; };
+		F9AE5B330DBFDBA300505983 /* minidump_tests32.cptest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = minidump_tests32.cptest; sourceTree = BUILT_PRODUCTS_DIR; };
+		F9AE5B340DBFDBA300505983 /* minidump_tests64-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "minidump_tests64-Info.plist"; sourceTree = "<group>"; };
+		F9C5A4200DB82DD800209C76 /* DynamicImagesTests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DynamicImagesTests.h; sourceTree = "<group>"; };
+		F9C5A4210DB82DD800209C76 /* DynamicImagesTests.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DynamicImagesTests.cc; sourceTree = "<group>"; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+		8DD76F660486A84900D96B5E /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				9B37CEEC0AF98ECD00FA4BD4 /* CoreFoundation.framework in Frameworks */,
+				8BFC813F11FF9A58002CB4DC /* libcrypto.dylib in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		9B7CA84C0B1297F200CD3A1D /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				8BFC814511FF9A9D002CB4DC /* libcrypto.dylib in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		9BD82A990B00267E0055103E /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				9BD82AC10B0029DF0055103E /* CoreFoundation.framework in Frameworks */,
+				8BFC814411FF9A9C002CB4DC /* libcrypto.dylib in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		F93A88720E8B4C700026AF89 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				8BFC814A11FF9B13002CB4DC /* libcrypto.dylib in Frameworks */,
+				8BFC814B11FF9B3F002CB4DC /* SenTestingKit.framework in Frameworks */,
+				8BFC814C11FF9B3F002CB4DC /* Cocoa.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		F9AE19C00DB04A9500C98454 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				8BFC814811FF9B13002CB4DC /* libcrypto.dylib in Frameworks */,
+				8BFC81A211FF9C2E002CB4DC /* CPlusTest.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		F9AE5B300DBFDBA300505983 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F9721F6C0E8B0D7000D7E813 /* Cocoa.framework in Frameworks */,
+				F9721FA20E8B0E2300D7E813 /* SenTestingKit.framework in Frameworks */,
+				8BFC814911FF9B13002CB4DC /* libcrypto.dylib in Frameworks */,
+				8BFC81A311FF9C2F002CB4DC /* CPlusTest.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+		08FB7794FE84155DC02AAC07 /* MinidumpWriter */ = {
+			isa = PBXGroup;
+			children = (
+				8BFC812011FF99D5002CB4DC /* Breakpad.xcconfig */,
+				8BFC812111FF99D5002CB4DC /* BreakpadDebug.xcconfig */,
+				8BFC812211FF99D5002CB4DC /* BreakpadRelease.xcconfig */,
+				F9721FA80E8B0E4800D7E813 /* md5.cc */,
+				F9721F760E8B0DC700D7E813 /* bytereader.cc */,
+				F9721F770E8B0DC700D7E813 /* dwarf2reader.cc */,
+				F9721F780E8B0DC700D7E813 /* functioninfo.cc */,
+				F9721F390E8B0D0D00D7E813 /* dump_syms.mm */,
+				F9721F380E8B0CFC00D7E813 /* dump_syms.h */,
+				F917C4F70E03265A00F86017 /* breakpad_exc_server.c */,
+				F917C4F80E03265A00F86017 /* breakpad_exc_server.h */,
+				F98208A10DB32CAE0017AECA /* breakpad_nlist_64.cc */,
+				F98208A20DB32CAE0017AECA /* breakpad_nlist_64.h */,
+				D2F6510C0BEF94EB00920385 /* macho_walker.cc */,
+				D2F6510D0BEF94EB00920385 /* macho_walker.h */,
+				D2F651070BEF949A00920385 /* dynamic_images.cc */,
+				D2F651080BEF949A00920385 /* dynamic_images.h */,
+				D2F650FA0BEF947200920385 /* file_id.cc */,
+				D2F650FB0BEF947200920385 /* file_id.h */,
+				D2F650FC0BEF947200920385 /* macho_id.cc */,
+				D2F650FD0BEF947200920385 /* macho_id.h */,
+				D2F650FE0BEF947200920385 /* macho_utilities.cc */,
+				D2F650FF0BEF947200920385 /* macho_utilities.h */,
+				F9C5A41F0DB82DB000209C76 /* testcases */,
+				9BD82C040B0133420055103E /* Breakpad */,
+				08FB7795FE84155DC02AAC07 /* Source */,
+				9B37CEEA0AF98EB600FA4BD4 /* Frameworks */,
+				1AB674ADFE9D54B511CA2CBB /* Products */,
+				F9AE19B50DB040E300C98454 /* minidump_tests32-Info.plist */,
+				F9AE5B340DBFDBA300505983 /* minidump_tests64-Info.plist */,
+				F93A88760E8B4C700026AF89 /* obj-cTestCases-Info.plist */,
+			);
+			name = MinidumpWriter;
+			sourceTree = "<group>";
+		};
+		08FB7795FE84155DC02AAC07 /* Source */ = {
+			isa = PBXGroup;
+			children = (
+				9BD82BFD0B01333D0055103E /* exception_handler_test.cc */,
+				9BD82BFE0B01333D0055103E /* minidump_generator_test.cc */,
+				9B7CA8530B12989000CD3A1D /* minidump_file_writer_unittest.cc */,
+			);
+			name = Source;
+			sourceTree = "<group>";
+		};
+		1AB674ADFE9D54B511CA2CBB /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				8DD76F6C0486A84900D96B5E /* generator_test */,
+				9BD82A9B0B00267E0055103E /* handler_test */,
+				9B7CA84E0B1297F200CD3A1D /* unit_test */,
+				F9AE19C30DB04A9500C98454 /* minidump_tests64.cptest */,
+				F9AE5B330DBFDBA300505983 /* minidump_tests32.cptest */,
+				F93A88750E8B4C700026AF89 /* octestcases.octest */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		9B37CEEA0AF98EB600FA4BD4 /* Frameworks */ = {
+			isa = PBXGroup;
+			children = (
+				8BFC813E11FF9A58002CB4DC /* libcrypto.dylib */,
+				8BFC815411FF9B7F002CB4DC /* Carbon.framework */,
+				F9721FA10E8B0E2300D7E813 /* SenTestingKit.framework */,
+				F9721F6B0E8B0D7000D7E813 /* Cocoa.framework */,
+				9B37CEEB0AF98ECD00FA4BD4 /* CoreFoundation.framework */,
+				8BFC819211FF9C23002CB4DC /* CPlusTest.framework */,
+			);
+			name = Frameworks;
+			sourceTree = "<group>";
+		};
+		9BD82C040B0133420055103E /* Breakpad */ = {
+			isa = PBXGroup;
+			children = (
+				9B35FF560B267D5F008DE8C7 /* convert_UTF.c */,
+				9B35FF570B267D5F008DE8C7 /* convert_UTF.h */,
+				9B35FF580B267D5F008DE8C7 /* string_conversion.cc */,
+				9B35FF590B267D5F008DE8C7 /* string_conversion.h */,
+				9BD82C090B0133520055103E /* exception_handler.cc */,
+				9BD82C0A0B0133520055103E /* exception_handler.h */,
+				9BD82C0B0B0133520055103E /* minidump_generator.cc */,
+				9BD82C0C0B0133520055103E /* minidump_generator.h */,
+				9BD82C230B01344C0055103E /* minidump_file_writer.cc */,
+				9BE3C01E0B0CE329009892DF /* minidump_file_writer-inl.h */,
+				9BD82C240B01344C0055103E /* minidump_file_writer.h */,
+				9BD82C2B0B01345E0055103E /* string_utilities.cc */,
+				9BD82C2C0B01345E0055103E /* string_utilities.h */,
+			);
+			name = Breakpad;
+			sourceTree = "<group>";
+		};
+		F9C5A41F0DB82DB000209C76 /* testcases */ = {
+			isa = PBXGroup;
+			children = (
+				F982089A0DB3280D0017AECA /* breakpad_nlist_test.h */,
+				F982089B0DB3280D0017AECA /* breakpad_nlist_test.cc */,
+				F9C5A4200DB82DD800209C76 /* DynamicImagesTests.h */,
+				F9C5A4210DB82DD800209C76 /* DynamicImagesTests.cc */,
+				F9721F300E8B07E800D7E813 /* dwarftests.h */,
+				F9721F310E8B07E800D7E813 /* dwarftests.mm */,
+			);
+			path = testcases;
+			sourceTree = "<group>";
+		};
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+		8DD76F620486A84900D96B5E /* generator_test */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 1DEB923108733DC60010E9CD /* Build configuration list for PBXNativeTarget "generator_test" */;
+			buildPhases = (
+				8DD76F640486A84900D96B5E /* Sources */,
+				8DD76F660486A84900D96B5E /* Frameworks */,
+				8DD76F690486A84900D96B5E /* CopyFiles */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = generator_test;
+			productInstallPath = "$(HOME)/bin";
+			productName = MinidumpWriter;
+			productReference = 8DD76F6C0486A84900D96B5E /* generator_test */;
+			productType = "com.apple.product-type.tool";
+		};
+		9B7CA84D0B1297F200CD3A1D /* unit_test */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 9B7CA8500B12984300CD3A1D /* Build configuration list for PBXNativeTarget "unit_test" */;
+			buildPhases = (
+				9B7CA84B0B1297F200CD3A1D /* Sources */,
+				9B7CA84C0B1297F200CD3A1D /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = unit_test;
+			productName = "filewriter unit test";
+			productReference = 9B7CA84E0B1297F200CD3A1D /* unit_test */;
+			productType = "com.apple.product-type.tool";
+		};
+		9BD82A9A0B00267E0055103E /* handler_test */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 9BD82AA60B0026BF0055103E /* Build configuration list for PBXNativeTarget "handler_test" */;
+			buildPhases = (
+				9BD82A980B00267E0055103E /* Sources */,
+				9BD82A990B00267E0055103E /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = handler_test;
+			productName = ExceptionTester;
+			productReference = 9BD82A9B0B00267E0055103E /* handler_test */;
+			productType = "com.apple.product-type.tool";
+		};
+		F93A88740E8B4C700026AF89 /* obj-c_TestCases */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = F93A88790E8B4C700026AF89 /* Build configuration list for PBXNativeTarget "obj-c_TestCases" */;
+			buildPhases = (
+				F93A88700E8B4C700026AF89 /* Resources */,
+				F93A88710E8B4C700026AF89 /* Sources */,
+				F93A88720E8B4C700026AF89 /* Frameworks */,
+				F93A88730E8B4C700026AF89 /* ShellScript */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = "obj-c_TestCases";
+			productName = octestcases;
+			productReference = F93A88750E8B4C700026AF89 /* octestcases.octest */;
+			productType = "com.apple.product-type.bundle";
+		};
+		F9AE19C20DB04A9500C98454 /* minidump_tests64 */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = F9AE19C70DB04AA200C98454 /* Build configuration list for PBXNativeTarget "minidump_tests64" */;
+			buildPhases = (
+				F9AE19BE0DB04A9500C98454 /* Resources */,
+				F9AE19BF0DB04A9500C98454 /* Sources */,
+				F9AE19C00DB04A9500C98454 /* Frameworks */,
+				F9AE19C10DB04A9500C98454 /* ShellScript */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = minidump_tests64;
+			productName = minidump_tests;
+			productReference = F9AE19C30DB04A9500C98454 /* minidump_tests64.cptest */;
+			productType = "com.apple.product-type.bundle";
+		};
+		F9AE5B320DBFDBA300505983 /* minidump_tests32 */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = F9AE5B380DBFDBA300505983 /* Build configuration list for PBXNativeTarget "minidump_tests32" */;
+			buildPhases = (
+				F9AE5B2E0DBFDBA300505983 /* Resources */,
+				F9AE5B2F0DBFDBA300505983 /* Sources */,
+				F9AE5B300DBFDBA300505983 /* Frameworks */,
+				F9AE5B310DBFDBA300505983 /* ShellScript */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = minidump_tests32;
+			productName = Untitled;
+			productReference = F9AE5B330DBFDBA300505983 /* minidump_tests32.cptest */;
+			productType = "com.apple.product-type.bundle";
+		};
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+		08FB7793FE84155DC02AAC07 /* Project object */ = {
+			isa = PBXProject;
+			buildConfigurationList = 1DEB923508733DC60010E9CD /* Build configuration list for PBXProject "minidump_test" */;
+			compatibilityVersion = "Xcode 3.2";
+			developmentRegion = English;
+			hasScannedForEncodings = 1;
+			knownRegions = (
+				English,
+				Japanese,
+				French,
+				German,
+			);
+			mainGroup = 08FB7794FE84155DC02AAC07 /* MinidumpWriter */;
+			projectDirPath = "";
+			projectRoot = "";
+			targets = (
+				8DD76F620486A84900D96B5E /* generator_test */,
+				9BD82A9A0B00267E0055103E /* handler_test */,
+				9B7CA84D0B1297F200CD3A1D /* unit_test */,
+				F9AE19C20DB04A9500C98454 /* minidump_tests64 */,
+				F9AE5B320DBFDBA300505983 /* minidump_tests32 */,
+				F93A88740E8B4C700026AF89 /* obj-c_TestCases */,
+			);
+		};
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+		F93A88700E8B4C700026AF89 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		F9AE19BE0DB04A9500C98454 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		F9AE5B2E0DBFDBA300505983 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+		F93A88730E8B4C700026AF89 /* ShellScript */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputPaths = (
+			);
+			outputPaths = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "# Run the unit tests in this test bundle.\n\"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests\"\n";
+		};
+		F9AE19C10DB04A9500C98454 /* ShellScript */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputPaths = (
+			);
+			outputPaths = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "# Run the unit tests in this test bundle.\n\"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests\"\n# Run gcov on the framework getting tested\nif [ \"${CONFIGURATION}\" = 'Coverage' ];\nthen\n     FRAMEWORK_NAME=minidump_tests64\n     FRAMEWORK_OBJ_DIR=${OBJROOT}/${PROJECT_NAME}.build/${CONFIGURATION}/${FRAMEWORK_NAME}.build/Objects-normal/${NATIVE_ARCH_ACTUAL}\n     mkdir -p coverage\n     pushd coverage\n     echo find ${OBJROOT} -name *.gcda -exec gcov -o ${FRAMEWORK_OBJ_DIR} {} \\;\n     find ${OBJROOT} -name *.gcda -exec gcov -o ${FRAMEWORK_OBJ_DIR} {} \\;\n     popd\nfi ";
+		};
+		F9AE5B310DBFDBA300505983 /* ShellScript */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputPaths = (
+			);
+			outputPaths = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "# Run the unit tests in this test bundle.\n\"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests\"\n\n";
+		};
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+		8DD76F640486A84900D96B5E /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				9BD82C020B01333D0055103E /* minidump_generator_test.cc in Sources */,
+				9BD82C0F0B0133520055103E /* exception_handler.cc in Sources */,
+				9BD82C110B0133520055103E /* minidump_generator.cc in Sources */,
+				9BD82C260B01344C0055103E /* minidump_file_writer.cc in Sources */,
+				9BD82C2E0B01345E0055103E /* string_utilities.cc in Sources */,
+				D2F651000BEF947200920385 /* file_id.cc in Sources */,
+				D2F651020BEF947200920385 /* macho_id.cc in Sources */,
+				D2F651040BEF947200920385 /* macho_utilities.cc in Sources */,
+				D2F651090BEF949A00920385 /* dynamic_images.cc in Sources */,
+				D2F6510E0BEF94EB00920385 /* macho_walker.cc in Sources */,
+				D2F651110BEF951700920385 /* string_conversion.cc in Sources */,
+				D2F651150BEF953000920385 /* convert_UTF.c in Sources */,
+				8BFC81B011FF9C8D002CB4DC /* breakpad_nlist_64.cc in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		9B7CA84B0B1297F200CD3A1D /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				9B7CA8540B12989000CD3A1D /* minidump_file_writer_unittest.cc in Sources */,
+				9B7CA8550B1298A100CD3A1D /* minidump_file_writer.cc in Sources */,
+				9BC1D2940B336F2300F2A2B4 /* convert_UTF.c in Sources */,
+				9BC1D2950B336F2500F2A2B4 /* string_conversion.cc in Sources */,
+				8BFC81AE11FF9C8C002CB4DC /* breakpad_nlist_64.cc in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		9BD82A980B00267E0055103E /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				9BD82BFF0B01333D0055103E /* exception_handler_test.cc in Sources */,
+				9BD82C0D0B0133520055103E /* exception_handler.cc in Sources */,
+				9BD82C0E0B0133520055103E /* minidump_generator.cc in Sources */,
+				9BD82C250B01344C0055103E /* minidump_file_writer.cc in Sources */,
+				9BD82C2D0B01345E0055103E /* string_utilities.cc in Sources */,
+				9B35FF5A0B267D5F008DE8C7 /* convert_UTF.c in Sources */,
+				9B35FF5B0B267D5F008DE8C7 /* string_conversion.cc in Sources */,
+				D2F6511B0BEF970E00920385 /* dynamic_images.cc in Sources */,
+				D2F6511D0BEF973500920385 /* file_id.cc in Sources */,
+				D2F6511E0BEF973600920385 /* macho_id.cc in Sources */,
+				D2F6511F0BEF973900920385 /* macho_utilities.cc in Sources */,
+				D2F651210BEF975400920385 /* macho_walker.cc in Sources */,
+				8BFC81AF11FF9C8C002CB4DC /* breakpad_nlist_64.cc in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		F93A88710E8B4C700026AF89 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F93A88860E8B4C9A0026AF89 /* dwarftests.mm in Sources */,
+				F93A88870E8B4C9A0026AF89 /* dump_syms.mm in Sources */,
+				F93A88880E8B4C9A0026AF89 /* bytereader.cc in Sources */,
+				F93A88890E8B4C9A0026AF89 /* dwarf2reader.cc in Sources */,
+				F93A888A0E8B4C9A0026AF89 /* functioninfo.cc in Sources */,
+				F93A888B0E8B4C9A0026AF89 /* md5.cc in Sources */,
+				F93A887D0E8B4C8C0026AF89 /* macho_walker.cc in Sources */,
+				F93A887E0E8B4C8C0026AF89 /* macho_id.cc in Sources */,
+				F93A887F0E8B4C8C0026AF89 /* macho_utilities.cc in Sources */,
+				F93A88800E8B4C8C0026AF89 /* file_id.cc in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		F9AE19BF0DB04A9500C98454 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F9B34E870DBC1E1600306484 /* dynamic_images.cc in Sources */,
+				F982089C0DB3280D0017AECA /* breakpad_nlist_test.cc in Sources */,
+				F98208A30DB32CAE0017AECA /* breakpad_nlist_64.cc in Sources */,
+				F9C5A4220DB82DD800209C76 /* DynamicImagesTests.cc in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		F9AE5B2F0DBFDBA300505983 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F9AE5B390DBFDBDB00505983 /* dynamic_images.cc in Sources */,
+				F9AE5B3A0DBFDBDB00505983 /* DynamicImagesTests.cc in Sources */,
+				8BFC81AD11FF9C8A002CB4DC /* breakpad_nlist_64.cc in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+		1DEB923208733DC60010E9CD /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				FRAMEWORK_SEARCH_PATHS = (
+					"$(inherited)",
+					"\"$(DEVELOPER_FRAMEWORKS_DIR)\"",
+				);
+				PRODUCT_NAME = generator_test;
+				USER_HEADER_SEARCH_PATHS = "../../../** $(inherited)";
+			};
+			name = Debug;
+		};
+		1DEB923308733DC60010E9CD /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				FRAMEWORK_SEARCH_PATHS = (
+					"$(inherited)",
+					"\"$(DEVELOPER_FRAMEWORKS_DIR)\"",
+				);
+				PRODUCT_NAME = generator_test;
+				USER_HEADER_SEARCH_PATHS = "../../../** $(inherited)";
+			};
+			name = Release;
+		};
+		1DEB923608733DC60010E9CD /* Debug */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 8BFC812111FF99D5002CB4DC /* BreakpadDebug.xcconfig */;
+			buildSettings = {
+			};
+			name = Debug;
+		};
+		1DEB923708733DC60010E9CD /* Release */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 8BFC812211FF99D5002CB4DC /* BreakpadRelease.xcconfig */;
+			buildSettings = {
+			};
+			name = Release;
+		};
+		9B7CA8510B12984300CD3A1D /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				PRODUCT_NAME = unit_test;
+				USER_HEADER_SEARCH_PATHS = "../../../** $(inherited)";
+			};
+			name = Debug;
+		};
+		9B7CA8520B12984300CD3A1D /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				PRODUCT_NAME = unit_test;
+				USER_HEADER_SEARCH_PATHS = "../../../** $(inherited)";
+			};
+			name = Release;
+		};
+		9BD82AA70B0026BF0055103E /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				PRODUCT_NAME = handler_test;
+				USER_HEADER_SEARCH_PATHS = "../../.. $(inherited)";
+			};
+			name = Debug;
+		};
+		9BD82AA80B0026BF0055103E /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				PRODUCT_NAME = handler_test;
+				USER_HEADER_SEARCH_PATHS = "../../.. $(inherited)";
+			};
+			name = Release;
+		};
+		F93A88770E8B4C700026AF89 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				FRAMEWORK_SEARCH_PATHS = "$(DEVELOPER_LIBRARY_DIR)/Frameworks";
+				INFOPLIST_FILE = "obj-cTestCases-Info.plist";
+				PRODUCT_NAME = octestcases;
+				USER_HEADER_SEARCH_PATHS = "../../../..//**";
+				WRAPPER_EXTENSION = octest;
+			};
+			name = Debug;
+		};
+		F93A88780E8B4C700026AF89 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				FRAMEWORK_SEARCH_PATHS = "$(DEVELOPER_LIBRARY_DIR)/Frameworks";
+				INFOPLIST_FILE = "obj-cTestCases-Info.plist";
+				PRODUCT_NAME = octestcases;
+				USER_HEADER_SEARCH_PATHS = "../../../..//**";
+				WRAPPER_EXTENSION = octest;
+			};
+			name = Release;
+		};
+		F9AE19C40DB04A9500C98454 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				FRAMEWORK_SEARCH_PATHS = "$(DEVELOPER_LIBRARY_DIR)/Frameworks";
+				INFOPLIST_FILE = "minidump_tests64-Info.plist";
+				PRODUCT_NAME = minidump_tests64;
+				USER_HEADER_SEARCH_PATHS = "../../../**";
+				WRAPPER_EXTENSION = cptest;
+			};
+			name = Debug;
+		};
+		F9AE19C50DB04A9500C98454 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				FRAMEWORK_SEARCH_PATHS = "$(DEVELOPER_LIBRARY_DIR)/Frameworks";
+				INFOPLIST_FILE = "minidump_tests64-Info.plist";
+				PRODUCT_NAME = minidump_tests64;
+				USER_HEADER_SEARCH_PATHS = "../../../**";
+				WRAPPER_EXTENSION = cptest;
+			};
+			name = Release;
+		};
+		F9AE5B350DBFDBA300505983 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				FRAMEWORK_SEARCH_PATHS = "$(DEVELOPER_LIBRARY_DIR)/Frameworks";
+				INFOPLIST_FILE = "minidump_tests32-Info.plist";
+				PRODUCT_NAME = minidump_tests32;
+				USER_HEADER_SEARCH_PATHS = "../../../**";
+				WRAPPER_EXTENSION = cptest;
+			};
+			name = Debug;
+		};
+		F9AE5B370DBFDBA300505983 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				FRAMEWORK_SEARCH_PATHS = "$(DEVELOPER_LIBRARY_DIR)/Frameworks";
+				INFOPLIST_FILE = "minidump_tests32-Info.plist";
+				PRODUCT_NAME = minidump_tests32;
+				USER_HEADER_SEARCH_PATHS = "../../../**";
+				WRAPPER_EXTENSION = cptest;
+			};
+			name = Release;
+		};
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+		1DEB923108733DC60010E9CD /* Build configuration list for PBXNativeTarget "generator_test" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				1DEB923208733DC60010E9CD /* Debug */,
+				1DEB923308733DC60010E9CD /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		1DEB923508733DC60010E9CD /* Build configuration list for PBXProject "minidump_test" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				1DEB923608733DC60010E9CD /* Debug */,
+				1DEB923708733DC60010E9CD /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		9B7CA8500B12984300CD3A1D /* Build configuration list for PBXNativeTarget "unit_test" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				9B7CA8510B12984300CD3A1D /* Debug */,
+				9B7CA8520B12984300CD3A1D /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		9BD82AA60B0026BF0055103E /* Build configuration list for PBXNativeTarget "handler_test" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				9BD82AA70B0026BF0055103E /* Debug */,
+				9BD82AA80B0026BF0055103E /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		F93A88790E8B4C700026AF89 /* Build configuration list for PBXNativeTarget "obj-c_TestCases" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				F93A88770E8B4C700026AF89 /* Debug */,
+				F93A88780E8B4C700026AF89 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		F9AE19C70DB04AA200C98454 /* Build configuration list for PBXNativeTarget "minidump_tests64" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				F9AE19C40DB04A9500C98454 /* Debug */,
+				F9AE19C50DB04A9500C98454 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		F9AE5B380DBFDBA300505983 /* Build configuration list for PBXNativeTarget "minidump_tests32" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				F9AE5B350DBFDBA300505983 /* Debug */,
+				F9AE5B370DBFDBA300505983 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+/* End XCConfigurationList section */
+	};
+	rootObject = 08FB7793FE84155DC02AAC07 /* Project object */;
+}
diff --git a/google-breakpad/src/client/mac/handler/minidump_tests32-Info.plist b/google-breakpad/src/client/mac/handler/minidump_tests32-Info.plist
new file mode 100644
index 0000000..921ebf3
--- /dev/null
+++ b/google-breakpad/src/client/mac/handler/minidump_tests32-Info.plist
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>English</string>
+	<key>CFBundleExecutable</key>
+	<string>${EXECUTABLE_NAME}</string>
+	<key>CFBundleIdentifier</key>
+	<string>com.google.breakpad.minidump_tests32</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundlePackageType</key>
+	<string>BNDL</string>
+	<key>CFBundleSignature</key>
+	<string>????</string>
+	<key>CFBundleVersion</key>
+	<string>1.0</string>
+</dict>
+</plist>
diff --git a/google-breakpad/src/client/mac/handler/minidump_tests64-Info.plist b/google-breakpad/src/client/mac/handler/minidump_tests64-Info.plist
new file mode 100644
index 0000000..acfbd30
--- /dev/null
+++ b/google-breakpad/src/client/mac/handler/minidump_tests64-Info.plist
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>English</string>
+	<key>CFBundleExecutable</key>
+	<string>${EXECUTABLE_NAME}</string>
+	<key>CFBundleIdentifier</key>
+	<string>com.google.breakpad.minidump_tests64</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundlePackageType</key>
+	<string>BNDL</string>
+	<key>CFBundleSignature</key>
+	<string>????</string>
+	<key>CFBundleVersion</key>
+	<string>1.0</string>
+	<key>CSResourcesFileMapped</key>
+	<string>yes</string>
+</dict>
+</plist>
diff --git a/google-breakpad/src/client/mac/handler/obj-cTestCases-Info.plist b/google-breakpad/src/client/mac/handler/obj-cTestCases-Info.plist
new file mode 100644
index 0000000..6501355
--- /dev/null
+++ b/google-breakpad/src/client/mac/handler/obj-cTestCases-Info.plist
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>English</string>
+	<key>CFBundleExecutable</key>
+	<string>${EXECUTABLE_NAME}</string>
+	<key>CFBundleIdentifier</key>
+	<string>com.yourcompany.${PRODUCT_NAME:identifier}</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundlePackageType</key>
+	<string>BNDL</string>
+	<key>CFBundleSignature</key>
+	<string>????</string>
+	<key>CFBundleVersion</key>
+	<string>1.0</string>
+</dict>
+</plist>
diff --git a/google-breakpad/src/client/mac/handler/protected_memory_allocator.cc b/google-breakpad/src/client/mac/handler/protected_memory_allocator.cc
new file mode 100644
index 0000000..6142ad1
--- /dev/null
+++ b/google-breakpad/src/client/mac/handler/protected_memory_allocator.cc
@@ -0,0 +1,92 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// ProtectedMemoryAllocator
+//
+// See the header file for documentation
+
+#include "protected_memory_allocator.h"
+#include <assert.h>
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ProtectedMemoryAllocator::ProtectedMemoryAllocator(vm_size_t pool_size) 
+  : pool_size_(pool_size),
+    next_alloc_offset_(0),
+    valid_(false) {
+  
+  kern_return_t result = vm_allocate(mach_task_self(),
+                                     &base_address_,
+                                     pool_size,
+                                     TRUE
+                                     );
+  
+  valid_ = (result == KERN_SUCCESS);
+  assert(valid_);
+}
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ProtectedMemoryAllocator::~ProtectedMemoryAllocator() {
+  vm_deallocate(mach_task_self(),
+                base_address_,
+                pool_size_
+                );
+}
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+char *ProtectedMemoryAllocator::Allocate(vm_size_t bytes) {
+  if (valid_ && next_alloc_offset_ + bytes <= pool_size_) {
+    char *p = (char*)base_address_ + next_alloc_offset_;
+    next_alloc_offset_ += bytes;
+    return p;
+  }
+  
+  return NULL;  // ran out of memory in our allocation block
+}
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+kern_return_t  ProtectedMemoryAllocator::Protect() {
+  kern_return_t result = vm_protect(mach_task_self(),
+                                    base_address_,
+                                    pool_size_,
+                                    FALSE,
+                                    VM_PROT_READ);
+  
+  return result;
+}
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+kern_return_t  ProtectedMemoryAllocator::Unprotect() {
+  kern_return_t result = vm_protect(mach_task_self(),
+                                    base_address_,
+                                    pool_size_,
+                                    FALSE,
+                                    VM_PROT_READ | VM_PROT_WRITE);
+  
+  return result;
+}
diff --git a/google-breakpad/src/client/mac/handler/protected_memory_allocator.h b/google-breakpad/src/client/mac/handler/protected_memory_allocator.h
new file mode 100644
index 0000000..7e188db
--- /dev/null
+++ b/google-breakpad/src/client/mac/handler/protected_memory_allocator.h
@@ -0,0 +1,85 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// ProtectedMemoryAllocator
+//
+// A very simple allocator class which allows allocation, but not deallocation.
+// The allocations can be made read-only with the Protect() method.
+// This class is NOT useful as a general-purpose memory allocation system,
+// since it does not allow deallocation.  It is useful to use for a group
+// of allocations which are created in the same time-frame and destroyed
+// in the same time-frame.  It is useful for making allocations of memory
+// which will not need to change often once initialized.  This memory can then
+// be protected from memory smashers by calling the Protect() method.
+
+#ifndef PROTECTED_MEMORY_ALLOCATOR_H__
+#define PROTECTED_MEMORY_ALLOCATOR_H__
+
+#include <mach/mach.h>
+
+//
+class ProtectedMemoryAllocator {
+ public:
+  ProtectedMemoryAllocator(vm_size_t pool_size);  
+  ~ProtectedMemoryAllocator();
+  
+  // Returns a pointer to an allocation of size n within the pool.
+  // Fails by returning NULL is no more space is available.
+  // Please note that the pointers returned from this method should not
+  // be freed in any way (for example by calling free() on them ).
+  char *         Allocate(vm_size_t n);
+  
+  // Returns the base address of the allocation pool.
+  char *         GetBaseAddress() { return (char*)base_address_; }
+
+  // Returns the size of the allocation pool, including allocated
+  // plus free space.
+  vm_size_t      GetTotalSize() { return pool_size_; }
+
+  // Returns the number of bytes already allocated in the pool.
+  vm_size_t      GetAllocatedSize() { return next_alloc_offset_; }
+
+  // Returns the number of bytes available for allocation.
+  vm_size_t      GetFreeSize() { return pool_size_ - next_alloc_offset_; }
+  
+  // Makes the entire allocation pool read-only including, of course,
+  // all allocations made from the pool.
+  kern_return_t  Protect();  
+
+  // Makes the entire allocation pool read/write.
+  kern_return_t  Unprotect();  
+  
+ private:
+  vm_size_t      pool_size_;
+  vm_address_t   base_address_;
+  vm_size_t      next_alloc_offset_;
+  bool           valid_;
+};
+
+#endif // PROTECTED_MEMORY_ALLOCATOR_H__
diff --git a/google-breakpad/src/client/mac/handler/testcases/DynamicImagesTests.cc b/google-breakpad/src/client/mac/handler/testcases/DynamicImagesTests.cc
new file mode 100644
index 0000000..0fc7825
--- /dev/null
+++ b/google-breakpad/src/client/mac/handler/testcases/DynamicImagesTests.cc
@@ -0,0 +1,79 @@
+// Copyright (c) 2008, Google Inc.
+// All rights reserved
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+//
+//  DynamicImagesTests.cpp
+//  minidump_test
+//
+//  Created by Neal Sidhwaney on 4/17/08.
+//  Copyright 2008 Google Inc. All rights reserved.
+//
+
+#include "client/mac/handler/testcases/DynamicImagesTests.h"
+#include "client/mac/handler/dynamic_images.h"
+
+DynamicImagesTests test2(TEST_INVOCATION(DynamicImagesTests,
+                                         ReadTaskMemoryTest));
+DynamicImagesTests test3(TEST_INVOCATION(DynamicImagesTests,
+                                         ReadLibrariesFromLocalTaskTest));
+
+DynamicImagesTests::DynamicImagesTests(TestInvocation *invocation)
+    : TestCase(invocation) {
+}
+
+DynamicImagesTests::~DynamicImagesTests() {
+}
+
+void DynamicImagesTests::ReadTaskMemoryTest() {
+  kern_return_t kr;
+
+  // pick test2 as a symbol we know to be valid to read
+  // anything will work, really
+  void *addr = reinterpret_cast<void*>(&test2);
+  std::vector<uint8_t> buf(getpagesize());
+
+  fprintf(stderr, "reading 0x%p\n", addr);
+  kr = google_breakpad::ReadTaskMemory(mach_task_self(),
+                                       (uint64_t)addr,
+                                       getpagesize(),
+                                       buf);
+
+  CPTAssert(kr == KERN_SUCCESS);
+
+  CPTAssert(0 == memcmp(&buf[0], (const void*)addr, getpagesize()));
+}
+
+void DynamicImagesTests::ReadLibrariesFromLocalTaskTest() {
+
+  mach_port_t me = mach_task_self();
+  google_breakpad::DynamicImages *d = new google_breakpad::DynamicImages(me);
+
+  fprintf(stderr,"Local task image count: %d\n", d->GetImageCount());
+
+  CPTAssert(d->GetImageCount() > 0);
+}
diff --git a/google-breakpad/src/client/mac/handler/testcases/DynamicImagesTests.h b/google-breakpad/src/client/mac/handler/testcases/DynamicImagesTests.h
new file mode 100644
index 0000000..e1e7999
--- /dev/null
+++ b/google-breakpad/src/client/mac/handler/testcases/DynamicImagesTests.h
@@ -0,0 +1,52 @@
+// Copyright (c) 2008, Google Inc.
+// All rights reserved
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+//
+//  DynamicImagesTests.h
+//  minidump_test
+//
+//  Created by Neal Sidhwaney on 4/17/08.
+//  Copyright 2008 Google Inc. All rights reserved.
+//
+//
+
+#ifndef _CLIENT_MAC_HANDLER_TESTCASES_DYNAMICIMAGESTESTS_H__
+#define _CLIENT_MAC_HANDLER_TESTCASES_DYNAMICIMAGESTESTS_H__
+
+#include <CPlusTest/CPlusTest.h>
+
+class DynamicImagesTests : public TestCase {
+ public:
+  explicit DynamicImagesTests(TestInvocation* invocation);
+  virtual ~DynamicImagesTests();
+
+  void ReadTaskMemoryTest();
+  void ReadLibrariesFromLocalTaskTest();
+};
+
+#endif /* _CLIENT_MAC_HANDLER_TESTCASES_DYNAMICIMAGESTESTS_H__ */
diff --git a/google-breakpad/src/client/mac/handler/testcases/breakpad_nlist_test.cc b/google-breakpad/src/client/mac/handler/testcases/breakpad_nlist_test.cc
new file mode 100644
index 0000000..e7332bf
--- /dev/null
+++ b/google-breakpad/src/client/mac/handler/testcases/breakpad_nlist_test.cc
@@ -0,0 +1,106 @@
+// Copyright (c) 2008, Google Inc.
+// All rights reserved
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+//
+//  breakpad_nlist_test.cc
+//  minidump_test
+//
+//  Created by Neal Sidhwaney on 4/13/08.
+//  Copyright 2008 Google Inc. All rights reserved.
+//
+
+#include "client/mac/handler/testcases/breakpad_nlist_test.h"
+#include <mach-o/nlist.h>
+#include "client/mac/handler/breakpad_nlist_64.h"
+
+BreakpadNlistTest test1(TEST_INVOCATION(BreakpadNlistTest, CompareToNM));
+
+BreakpadNlistTest::BreakpadNlistTest(TestInvocation *invocation)
+    : TestCase(invocation) {
+}
+
+
+BreakpadNlistTest::~BreakpadNlistTest() {
+}
+
+void BreakpadNlistTest::CompareToNM() {
+#if TARGET_CPU_X86_64
+  system("/usr/bin/nm -arch x86_64 /usr/lib/dyld > /tmp/dyld-namelist.txt");
+#elif TARGET_CPU_PPC64
+  system("/usr/bin/nm -arch ppc64 /usr/lib/dyld > /tmp/dyld-namelist.txt");
+#endif
+
+  FILE *fd = fopen("/tmp/dyld-namelist.txt", "rt");
+
+  char oneNMAddr[30];
+  char symbolType;
+  char symbolName[500];
+  while (!feof(fd)) {
+    fscanf(fd, "%s %c %s", oneNMAddr, &symbolType, symbolName);
+    breakpad_nlist symbolList[2];
+    breakpad_nlist &list = symbolList[0];
+
+    memset(symbolList, 0, sizeof(breakpad_nlist)*2);
+    const char *symbolNames[2];
+    symbolNames[0] = (const char*)symbolName;
+    symbolNames[1] = "\0";
+    breakpad_nlist_64("/usr/lib/dyld", &list, symbolNames);
+    uint64_t nmAddr = strtol(oneNMAddr, NULL, 16);
+    if (!IsSymbolMoreThanOnceInDyld(symbolName)) {
+      CPTAssert(nmAddr == symbolList[0].n_value);
+    }
+  }
+
+  fclose(fd);
+}
+
+bool BreakpadNlistTest::IsSymbolMoreThanOnceInDyld(const char *symbolName) {
+  // These are the symbols that occur more than once when nm dumps
+  // the symbol table of /usr/lib/dyld.  Our nlist program returns
+  // the first address because it's doing a search so we need to exclude
+  // these from causing the test to fail
+  const char *multipleSymbols[] = {
+    "__Z41__static_initialization_and_destruction_0ii",
+    "___tcf_0",
+    "___tcf_1",
+    "_read_encoded_value_with_base",
+    "_read_sleb128",
+    "_read_uleb128",
+    "\0"};
+
+  bool found = false;
+
+  for (int i = 0; multipleSymbols[i][0]; i++) {
+    if (!strcmp(multipleSymbols[i], symbolName)) {
+      found = true;
+      break;
+    }
+  }
+
+  return found;
+}
diff --git a/google-breakpad/src/client/mac/handler/testcases/breakpad_nlist_test.h b/google-breakpad/src/client/mac/handler/testcases/breakpad_nlist_test.h
new file mode 100644
index 0000000..e93657c
--- /dev/null
+++ b/google-breakpad/src/client/mac/handler/testcases/breakpad_nlist_test.h
@@ -0,0 +1,62 @@
+// Copyright (c) 2008, Google Inc.
+// All rights reserved
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+//
+//  breakpad_nlist_test.h
+//  minidump_test
+//
+//  Created by Neal Sidhwaney on 4/13/08.
+//  Copyright 2008 Google Inc. All rights reserved.
+//
+//
+
+#ifndef CLIENT_MAC_HANDLER_TESTCASES_BREAKPAD_NLIST_TEST_H__
+#define CLIENT_MAC_HANDLER_TESTCASES_BREAKPAD_NLIST_TEST_H__
+
+#include <CPlusTest/CPlusTest.h>
+
+class BreakpadNlistTest : public TestCase {
+ private:
+
+  // nm dumps multiple addresses for the same symbol in
+  // /usr/lib/dyld. So we track those so we don't report failures
+  // in mismatches between what our nlist returns and what nm has
+  // for the duplicate symbols.
+  bool IsSymbolMoreThanOnceInDyld(const char *symbolName);
+
+ public:
+  explicit BreakpadNlistTest(TestInvocation* invocation);
+  virtual ~BreakpadNlistTest();
+
+
+  /* This test case runs nm on /usr/lib/dyld and then compares the
+     output of every symbol to what our nlist implementation returns */
+  void CompareToNM();
+};
+
+#endif /* CLIENT_MAC_HANDLER_TESTCASES_BREAKPAD_NLIST_TEST_H__*/
diff --git a/google-breakpad/src/client/mac/handler/testcases/dwarftests.h b/google-breakpad/src/client/mac/handler/testcases/dwarftests.h
new file mode 100644
index 0000000..21ff7a4
--- /dev/null
+++ b/google-breakpad/src/client/mac/handler/testcases/dwarftests.h
@@ -0,0 +1,46 @@
+// Copyright (c) 2008, Google Inc.
+// All rights reserved
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+//
+//  dwarftests.h
+//  minidump_test
+//
+//  Created by Neal Sidhwaney on 9/24/08.
+//  Copyright 2008 Google Inc. All rights reserved.
+//
+
+#import <SenTestingKit/SenTestingKit.h>
+
+
+@interface dwarftests : SenTestCase {
+
+}
+
+- (void) testDWARFSymbolFileGeneration;
+
+@end
diff --git a/google-breakpad/src/client/mac/handler/testcases/dwarftests.mm b/google-breakpad/src/client/mac/handler/testcases/dwarftests.mm
new file mode 100644
index 0000000..40c69af
--- /dev/null
+++ b/google-breakpad/src/client/mac/handler/testcases/dwarftests.mm
@@ -0,0 +1,60 @@
+// Copyright (c) 2008, Google Inc.
+// All rights reserved
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+//
+//  dwarftests.m
+//  minidump_test
+//
+//  Created by Neal Sidhwaney on 9/24/08.
+//  Copyright 2008 Google Inc. All rights reserved.
+//
+
+#import "dwarftests.h"
+#import "dump_syms.h"
+
+@implementation dwarftests
+- (void) testDWARFSymbolFileGeneration {
+  NSString *inputBreakpadSymbolFile = @"testcases/testdata/dump_syms_i386_breakpad.sym";
+  NSString *outputBreakpadSymbolFile = @"/tmp/dump_syms_i386.breakpad";
+
+  DumpSymbols *dump = [[DumpSymbols alloc] initWithContentsOfFile:@"testcases/testdata/dump_syms_dwarf_data"];
+
+  STAssertNotNil(dump, @"DumpSymbols is nil");
+  [dump setArchitecture:@"i386"];
+  [dump writeSymbolFile:outputBreakpadSymbolFile];
+  
+  NSData *d = [[NSData alloc] initWithContentsOfFile:inputBreakpadSymbolFile];
+  STAssertNotNil(d, @"Input breakpad symbol file not found");
+  
+  NSData *d1 = [[NSData alloc] initWithContentsOfFile:outputBreakpadSymbolFile]; 
+  STAssertNotNil(d1, @"Output breakpad symbol file not found");
+
+  STAssertTrue([d isEqualToData:d1],
+  @"Symbol files were not equal!",nil);
+}
+@end
diff --git a/google-breakpad/src/client/mac/handler/testcases/testdata/dump_syms_dwarf_data b/google-breakpad/src/client/mac/handler/testcases/testdata/dump_syms_dwarf_data
new file mode 100644
index 0000000..5be17ae
--- /dev/null
+++ b/google-breakpad/src/client/mac/handler/testcases/testdata/dump_syms_dwarf_data
Binary files differ
diff --git a/google-breakpad/src/client/mac/handler/testcases/testdata/dump_syms_i386_breakpad.sym b/google-breakpad/src/client/mac/handler/testcases/testdata/dump_syms_i386_breakpad.sym
new file mode 100644
index 0000000..bca43c1
--- /dev/null
+++ b/google-breakpad/src/client/mac/handler/testcases/testdata/dump_syms_i386_breakpad.sym
@@ -0,0 +1,5300 @@
+MODULE mac x86 94BF873C47A73BC07125291390B4C5F10 dump_syms_dwarf_data
+FILE 1 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/libkern/i386/OSByteOrder.h
+FILE 2 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/architecture/byte_order.h
+FILE 3 /g/code/breakpad-staging/src/tools/mac/dump_syms/../../../common/mac/dump_syms.mm
+FILE 4 /Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSRange.h
+FILE 5 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/new
+FILE 6 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/ext/hash_fun.h
+FILE 7 ../../../common/mac/dwarf/dwarf2reader.h
+FILE 8 ../../../common/mac/file_id.h
+FILE 9 ../../../common/mac/dwarf/functioninfo.h
+FILE 10 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/bits/stl_tree.h
+FILE 11 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/bits/stl_iterator.h
+FILE 12 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/ext/hashtable.h
+FILE 13 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/bits/stl_pair.h
+FILE 14 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/ext/new_allocator.h
+FILE 15 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/bits/allocator.h
+FILE 16 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/bits/stl_vector.h
+FILE 17 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/bits/stl_iterator_base_types.h
+FILE 18 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h
+FILE 19 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/bits/stl_algo.h
+FILE 20 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/bits/stl_map.h
+FILE 21 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/bits/stl_construct.h
+FILE 22 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/bits/stl_function.h
+FILE 23 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/ext/hash_map
+FILE 24 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/bits/basic_string.h
+FILE 25 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/bits/stl_algobase.h
+FILE 26 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/bits/stl_list.h
+FILE 27 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/bits/list.tcc
+FILE 28 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/bits/stl_uninitialized.h
+FILE 29 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/bits/vector.tcc
+FILE 30 /g/code/breakpad-staging/src/tools/mac/dump_syms/../../../common/mac/dwarf/functioninfo.cc
+FILE 31 ../../../common/mac/dwarf/dwarf2reader.h
+FILE 32 ../../../common/mac/dwarf/functioninfo.h
+FILE 33 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/bits/stl_pair.h
+FILE 34 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/ext/hashtable.h
+FILE 35 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/memory
+FILE 36 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/ext/new_allocator.h
+FILE 37 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/bits/basic_string.h
+FILE 38 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/bits/stl_iterator.h
+FILE 39 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/bits/stl_vector.h
+FILE 40 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/bits/stl_tree.h
+FILE 41 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/bits/stl_function.h
+FILE 42 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/ext/hash_map
+FILE 43 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/bits/stl_construct.h
+FILE 44 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/bits/stl_algobase.h
+FILE 45 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/bits/stl_map.h
+FILE 46 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/bits/stl_uninitialized.h
+FILE 47 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/bits/vector.tcc
+FILE 48 /g/code/breakpad-staging/src/tools/mac/dump_syms/dump_syms_tool.mm
+FILE 49 /g/code/breakpad-staging/src/tools/mac/dump_syms/../../../common/mac/file_id.cc
+FILE 50 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/architecture/byte_order.h
+FILE 51 /g/code/breakpad-staging/src/tools/mac/dump_syms/../../../common/mac/macho_id.cc
+FILE 52 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/libkern/i386/OSByteOrder.h
+FILE 53 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/architecture/byte_order.h
+FILE 54 /g/code/breakpad-staging/src/tools/mac/dump_syms/../../../common/mac/macho_walker.cc
+FILE 55 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/libkern/i386/OSByteOrder.h
+FILE 56 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/architecture/byte_order.h
+FILE 57 /g/code/breakpad-staging/src/tools/mac/dump_syms/../../../common/mac/macho_utilities.cc
+FILE 58 /g/code/breakpad-staging/src/tools/mac/dump_syms/../../../common/mac/dwarf/bytereader.cc
+FILE 59 ../../../common/mac/dwarf/bytereader-inl.h
+FILE 60 /g/code/breakpad-staging/src/tools/mac/dump_syms/../../../common/mac/dwarf/dwarf2reader.cc
+FILE 61 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/bits/stl_algobase.h
+FILE 62 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/bits/stl_deque.h
+FILE 63 ../../../common/mac/dwarf/bytereader.h
+FILE 64 ../../../common/mac/dwarf/bytereader-inl.h
+FILE 65 ../../../common/mac/dwarf/line_state_machine.h
+FILE 66 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/bits/stl_list.h
+FILE 67 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/memory
+FILE 68 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/ext/new_allocator.h
+FILE 69 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/bits/allocator.h
+FILE 70 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/bits/stl_pair.h
+FILE 71 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/bits/stl_vector.h
+FILE 72 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/bits/stl_iterator.h
+FILE 73 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/bits/stl_construct.h
+FILE 74 ../../../common/mac/dwarf/dwarf2reader.h
+FILE 75 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/bits/stl_stack.h
+FILE 76 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/bits/deque.tcc
+FILE 77 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/bits/list.tcc
+FILE 78 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/bits/vector.tcc
+FILE 79 /Developer/SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/bits/stl_uninitialized.h
+FILE 80 /var/tmp/gcc/gcc-5484~1/src/gcc/libgcc2.c
+FUNC 162a 28 0 _OSSwapInt16
+162a 10 44 55
+163a 16 46 55
+1650 2 47 55
+FUNC 1652 1c 0 _OSSwapInt32
+1652 f 53 55
+1661 8 55 55
+1669 3 56 55
+166c 2 57 55
+FUNC 166e 2b 0 _OSSwapInt64
+166e 12 64 55
+1680 11 69 55
+1691 6 70 55
+1697 2 71 55
+1699 1 71 55
+FUNC 169a 1e 0 NXSwapShort
+169a 10 43 56
+16aa c 45 56
+16b6 2 46 56
+FUNC 16b8 19 0 NXSwapInt
+16b8 f 52 56
+16c7 8 54 56
+16cf 2 55 56
+16d1 1 55 56
+FUNC 16d2 19 0 NXSwapLong
+16d2 f 61 56
+16e1 8 63 56
+16e9 2 64 56
+16eb 1 64 56
+FUNC 16ec 1f 0 NXSwapLongLong
+16ec 12 70 56
+16fe b 72 56
+1709 2 73 56
+170b 1 73 56
+FUNC 170c 181 0 -[DumpSymbols convertCPlusPlusSymbols:]
+170c 14 128 3
+1720 54 130 3
+1774 f 132 3
+1783 7 133 3
+178a 1a 136 3
+17a4 5 138 3
+17a9 1a 139 3
+17c3 23 140 3
+17e6 7 141 3
+17ed 44 142 3
+1831 1e 145 3
+184f 29 138 3
+1878 b 148 3
+1883 3 150 3
+1886 7 151 3
+188d 1 151 3
+FUNC 188e 323 0 -[DumpSymbols convertSymbols]
+188e 14 154 3
+18a2 1f 155 3
+18c1 3e 156 3
+18ff 2b 160 3
+192a c 162 3
+1936 43 164 3
+1979 2a 165 3
+19a3 20 168 3
+19c3 d 169 3
+19d0 1e 171 3
+19ee 11 162 3
+19ff 7 181 3
+1a06 6 182 3
+1a0c 5 184 3
+1a11 15 185 3
+1a26 6 18 4
+1a2c 6 19 4
+1a32 6 20 4
+1a38 6 185 3
+1a3e 28 186 3
+1a66 21 187 3
+1a87 1a 188 3
+1aa1 a 190 3
+1aab c 194 3
+1ab7 43 198 3
+1afa 21 199 3
+1b1b 20 202 3
+1b3b 2e 203 3
+1b69 1e 194 3
+1b87 c 184 3
+1b93 17 207 3
+1baa 7 208 3
+1bb1 1 208 3
+FUNC 1bb2 4a2 0 -[DumpSymbols addFunction:line:address:section:]
+1bb2 21 211 3
+1bd3 2f 212 3
+1c02 e 214 3
+1c10 4 219 3
+1c14 2a 221 3
+1c3e 22 223 3
+1c60 6 224 3
+1c66 2a 225 3
+1c90 4 226 3
+1c94 2e 230 3
+1cc2 2e 233 3
+1cf0 2e 236 3
+1d1e a 239 3
+1d28 2b 253 3
+1d53 e 254 3
+1d61 3c 255 3
+1d9d 22 32 4
+1dbf 3 256 3
+1dc2 6 259 3
+1dc8 a 260 3
+1dd2 3c 261 3
+1e0e 25 262 3
+1e33 2a 263 3
+1e5d 22 265 3
+1e7f 26 270 3
+1ea5 6 272 3
+1eab 37 273 3
+1ee2 2a 274 3
+1f0c 17 275 3
+1f23 43 278 3
+1f66 2e 279 3
+1f94 23 282 3
+1fb7 43 285 3
+1ffa 52 287 3
+204c 8 289 3
+FUNC 2054 5a4 0 -[DumpSymbols processSymbolItem:stringTable:]
+2054 18 292 3
+206c 8 293 3
+2074 4 294 3
+2078 16 297 3
+208e c 298 3
+209a f 300 3
+20a9 b 301 3
+20b4 16 303 3
+20ca 4d 309 3
+2117 38 311 3
+214f 30 315 3
+217f 60 317 3
+21df d 322 3
+21ec 2b 325 3
+2217 3a 327 3
+2251 f 332 3
+2260 2d 333 3
+228d 1a 334 3
+22a7 32 335 3
+22d9 20 342 3
+22f9 c 343 3
+2305 24 348 3
+2329 a 349 3
+2333 3c 350 3
+236f 2a 352 3
+2399 1c 353 3
+23b5 9 354 3
+23be f 356 3
+23cd 2d 357 3
+23fa 2f 358 3
+2429 20 360 3
+2449 c 361 3
+2455 7 363 3
+245c 21 365 3
+247d 4a 368 3
+24c7 9 370 3
+24d0 1a 371 3
+24ea 4b 372 3
+2535 4 373 3
+2539 5 371 3
+253e 29 374 3
+2567 2d 376 3
+2594 4b 378 3
+25df 4 379 3
+25e3 a 382 3
+25ed b 383 3
+FUNC 25f8 c9 0 -[DumpSymbols loadSymbolInfo:offset:]
+25f8 13 391 3
+260b 2b 392 3
+2636 2a 393 3
+2660 2d 395 3
+268d 2e 398 3
+26bb 6 399 3
+26c1 1 399 3
+FUNC 26c2 2be 0 -[DumpSymbols loadSTABSSymbolInfo:offset:]
+26c2 16 537 3
+26d8 9 538 3
+26e1 10 539 3
+26f1 2e 540 3
+271f 9 542 3
+2728 22 543 3
+274a 4 544 3
+274e a 546 3
+2758 3c 547 3
+2794 c 549 3
+27a0 e 550 3
+27ae 6 551 3
+27b4 25 552 3
+27d9 25 553 3
+27fe 25 554 3
+2823 c 555 3
+282f c 556 3
+283b c 559 3
+2847 23 562 3
+286a a 563 3
+2874 a 564 3
+287e 2e 565 3
+28ac 39 566 3
+28e5 2e 570 3
+2913 4 571 3
+2917 17 559 3
+292e 25 575 3
+2953 9 576 3
+295c 17 549 3
+2973 4 579 3
+2977 9 580 3
+FUNC 2980 28a 0 -[DumpSymbols loadSymbolInfo64:offset:]
+2980 16 583 3
+2996 9 585 3
+299f 10 586 3
+29af 2e 587 3
+29dd 9 589 3
+29e6 22 590 3
+2a08 4 591 3
+2a0c c 593 3
+2a18 e 594 3
+2a26 6 595 3
+2a2c 25 596 3
+2a51 25 597 3
+2a76 25 598 3
+2a9b 9 599 3
+2aa4 c 600 3
+2ab0 c 603 3
+2abc 17 604 3
+2ad3 23 609 3
+2af6 a 610 3
+2b00 a 611 3
+2b0a 2e 612 3
+2b38 37 613 3
+2b6f 2e 615 3
+2b9d 4 616 3
+2ba1 17 603 3
+2bb8 25 620 3
+2bdd 9 621 3
+2be6 17 593 3
+2bfd 4 624 3
+2c01 9 625 3
+FUNC 2c0a 199 0 -[DumpSymbols loadSymbolInfoForArchitecture]
+2c0a 13 628 3
+2c1d 41 630 3
+2c5e 2b 631 3
+2c89 1a 632 3
+2ca3 40 634 3
+2ce3 40 635 3
+2d23 5f 637 3
+2d82 17 639 3
+2d99 4 640 3
+2d9d 6 641 3
+2da3 1 641 3
+FUNC 2da4 3e5 0 -[DumpSymbols loadHeader:offset:]
+2da4 18 728 3
+2dbc 9 729 3
+2dc5 10 730 3
+2dd5 2e 731 3
+2e03 9 733 3
+2e0c 2b 734 3
+2e37 1e 736 3
+2e55 c 738 3
+2e61 e 739 3
+2e6f 6 740 3
+2e75 50 742 3
+2ec5 2e 743 3
+2ef3 2e 744 3
+2f21 2e 745 3
+2f4f 20 746 3
+2f6f 1b7 755 3
+3126 9 757 3
+312f 25 761 3
+3154 9 762 3
+315d 17 738 3
+3174 a 765 3
+317e b 766 3
+3189 1 766 3
+FUNC 318a 41d 0 -[DumpSymbols loadHeader64:offset:]
+318a 18 769 3
+31a2 9 771 3
+31ab 10 772 3
+31bb 2e 773 3
+31e9 9 775 3
+31f2 c 777 3
+31fe 2b 778 3
+3229 e 779 3
+3237 6 780 3
+323d 50 781 3
+328d 49 782 3
+32d6 49 783 3
+331f 2e 784 3
+334d 9 785 3
+3356 29 786 3
+337f 1c5 794 3
+3544 9 795 3
+354d 25 799 3
+3572 9 800 3
+357b 17 777 3
+3592 a 803 3
+359c b 804 3
+35a7 1 804 3
+FUNC 35a8 52a 0 -[DumpSymbols loadModuleInfo]
+35a8 14 807 3
+35bc e 808 3
+35ca 41 810 3
+360b 1a 811 3
+3625 6 812 3
+362b 6 814 3
+3631 17 815 3
+3648 c 816 3
+3654 29 820 3
+367d 29 821 3
+36a6 29 822 3
+36cf 35 824 3
+3704 12 826 3
+3716 17 827 3
+372d c 828 3
+3739 3c 832 3
+3775 a 834 3
+377f 9 836 3
+3788 25 837 3
+37ad c 839 3
+37b9 54 840 3
+380d 57 841 3
+3864 57 842 3
+38bb 57 843 3
+3912 57 844 3
+3969 1c 846 3
+3985 4b 847 3
+39d0 49 849 3
+3a19 13 839 3
+3a2c 6 851 3
+3a32 3c 852 3
+3a6e 3a 854 3
+3aa8 17 857 3
+3abf c 858 3
+3acb 7 859 3
+FUNC 3ad2 b6 0 WriteFormat
+3ad2 10 862 3
+3ae2 6 867 3
+3ae8 24 868 3
+3b0c 27 869 3
+3b33 40 870 3
+3b73 c 873 3
+3b7f 9 874 3
+FUNC 3b88 35 0 -[DumpSymbols availableArchitectures]
+3b88 13 1140 3
+3b9b 1c 1141 3
+3bb7 6 1142 3
+3bbd 1 1142 3
+FUNC 3bbe 1b4 0 -[DumpSymbols setArchitecture:]
+3bbe 13 1158 3
+3bd1 1a 1159 3
+3beb 4 1160 3
+3bef 2a 1162 3
+3c19 9 1163 3
+3c22 2a 1165 3
+3c4c 9 1166 3
+3c55 9 1167 3
+3c5e 2a 1169 3
+3c88 6 1170 3
+3c8e 2a 1172 3
+3cb8 6 1173 3
+3cbe 2a 1175 3
+3ce8 4 1176 3
+3cec 6 1179 3
+3cf2 2c 1180 3
+3d1e 9 1181 3
+3d27 1c 1183 3
+3d43 1f 1184 3
+3d62 a 1187 3
+3d6c 6 1188 3
+FUNC 3d72 14 0 -[DumpSymbols architecture]
+3d72 c 1191 3
+3d7e 6 1192 3
+3d84 2 1193 3
+FUNC 3d86 e7 0 -[DumpSymbols writeSymbolFile:]
+3d86 13 1196 3
+3d99 1a 1197 3
+3db3 48 1200 3
+3dfb 9 1201 3
+3e04 1e 1203 3
+3e22 6 1205 3
+3e28 9 1206 3
+3e31 21 1208 3
+3e52 b 1210 3
+3e5d a 1212 3
+3e67 6 1213 3
+3e6d 1 1213 3
+FUNC 3e6e 65 0 -[MachSection initWithMachSection:andNumber:]
+3e6e 13 1219 3
+3e81 37 1220 3
+3eb8 9 1221 3
+3ec1 9 1222 3
+3eca 3 1225 3
+3ecd 6 1226 3
+3ed3 1 1226 3
+FUNC 3ed4 14 0 -[MachSection sectionPointer]
+3ed4 c 1228 3
+3ee0 6 1229 3
+3ee6 2 1230 3
+FUNC 3ee8 14 0 -[MachSection sectionNumber]
+3ee8 c 1232 3
+3ef4 6 1233 3
+3efa 2 1234 3
+FUNC 3efc 17c 0 -[DumpSymbols processDWARFSourceFileInfo:]
+3efc 14 459 3
+3f10 a 460 3
+3f1a 3c 461 3
+3f56 20 463 3
+3f76 5 464 3
+3f7b 3a 465 3
+3fb5 1d 466 3
+3fd2 3a 467 3
+400c 2a 468 3
+4036 3b 464 3
+4071 7 471 3
+FUNC 4078 1d7 0 DumpFunctionMap(std::map<unsigned long long, dwarf2reader::FunctionInfo*, std::less<unsigned long long>, std::allocator<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> > >)
+4078 15 82 3
+408d 13 83 3
+40a0 1e 85 3
+40be 42 89 3
+4100 20 90 3
+4120 2b 91 3
+414b 1a 92 3
+4165 23 93 3
+4188 46 96 3
+41ce 46 99 3
+4214 33 83 3
+4247 8 102 3
+424f 1 102 3
+FUNC 4250 3ef 0 -[DumpSymbols processDWARFFunctionInfo:]
+4250 15 473 3
+4265 25 474 3
+428a 1e 476 3
+42a8 a 480 3
+42b2 3c 481 3
+42ee 3d 483 3
+432b 23 485 3
+434e 26 487 3
+4374 6 489 3
+437a 37 490 3
+43b1 2a 491 3
+43db 17 492 3
+43f2 30 496 3
+4422 3d 497 3
+445f 2e 498 3
+448d 30 502 3
+44bd 64 504 3
+4521 34 507 3
+4555 9d 509 3
+45f2 45 474 3
+4637 8 513 3
+463f 1 513 3
+FUNC 4640 1f5 0 -[DumpSymbols processDWARFLineNumberInfo:]
+4640 15 515 3
+4655 25 516 3
+467a 39 520 3
+46b3 26 521 3
+46d9 6 523 3
+46df 37 524 3
+4716 2a 525 3
+4740 17 526 3
+4757 30 529 3
+4787 61 531 3
+47e8 45 516 3
+482d 8 534 3
+4835 1 534 3
+FUNC 4836 10f 0 -[DumpSymbols dealloc]
+4836 13 1145 3
+4849 1c 1146 3
+4865 1c 1147 3
+4881 1c 1148 3
+489d 1c 1149 3
+48b9 1c 1150 3
+48d5 1c 1151 3
+48f1 25 1152 3
+4916 29 1154 3
+493f 6 1155 3
+4945 1 1155 3
+FUNC 4946 512 0 -[DumpSymbols loadDWARFSymbolInfo:offset:]
+4946 17 402 3
+495d 9 405 3
+4966 10 406 3
+4976 2b 408 3
+49a1 38 409 3
+49d9 3a 410 3
+4a13 2e 411 3
+4a41 31 416 3
+4a72 e 418 3
+4a80 24 420 3
+4aa4 5 422 3
+4aa9 b 424 3
+4ab4 b 425 3
+4abf e 426 3
+4acd 2b 427 3
+4af8 2b 428 3
+4b23 2c 431 3
+4b4f 52 439 3
+4ba1 34 444 3
+4bd5 1a 446 3
+4bef 21 451 3
+4c10 1e 452 3
+4c2e 21 453 3
+4c4f 40 422 3
+4c8f 6 453 3
+4c95 170 422 3
+4e05 43 456 3
+4e48 10 457 3
+FUNC 4e58 4fd 0 -[DumpSymbols generateSectionDictionary:]
+4e58 18 663 3
+4e70 10 665 3
+4e80 2e 666 3
+4eae 9 668 3
+4eb7 2b 669 3
+4ee2 7 670 3
+4ee9 2e 672 3
+4f17 d 676 3
+4f24 32 678 3
+4f56 29 680 3
+4f7f a 684 3
+4f89 3c 685 3
+4fc5 31 688 3
+4ff6 5d 689 3
+5053 26 692 3
+5079 21 694 3
+509a c 698 3
+50a6 e 699 3
+50b4 6 700 3
+50ba 9 701 3
+50c3 2e 702 3
+50f1 c 704 3
+50fd 3c 706 3
+5139 66 709 3
+519f 1c 712 3
+51bb fb 714 3
+52b6 6 717 3
+52bc 5 718 3
+52c1 19 704 3
+52da 25 714 3
+52ff 2e 722 3
+532d 9 723 3
+5336 17 698 3
+534d 8 725 3
+5355 1 725 3
+FUNC 5356 24a 0 -[DumpSymbols getSectionMapForArchitecture:]
+5356 14 643 3
+536a 43 645 3
+53ad 1a 648 3
+53c7 1c 645 3
+53e3 18 648 3
+53fb 40 650 3
+543b 20 651 3
+545b 17 652 3
+5472 16 651 3
+5488 cb 652 3
+5553 11 654 3
+5564 32 657 3
+5596 a 658 3
+FUNC 55a0 3fe 0 -[DumpSymbols initWithContentsOfFile:]
+55a0 14 1056 3
+55b4 3b 1057 3
+55ef 44 1059 3
+5633 17 1060 3
+564a c 1061 3
+5656 1f 1064 3
+5675 2b 1067 3
+56a0 a 1069 3
+56aa 35 1083 3
+56df 2 1087 3
+56e1 1a 1088 3
+56fb 3d 1087 3
+5738 33 1092 3
+576b 6 1094 3
+5771 e 1095 3
+577f 17 1096 3
+5796 c 1097 3
+57a2 1c 1101 3
+57be 1f 1103 3
+57dd 18 1104 3
+57f5 23 1107 3
+5818 25 1109 3
+583d 1c 1107 3
+5859 17 1110 3
+5870 c 1111 3
+587c 2a 1115 3
+58a6 8 1116 3
+58ae a 1118 3
+58b8 9 1119 3
+58c1 d 1122 3
+58ce 29 1124 3
+58f7 20 1126 3
+5917 20 1128 3
+5937 57 1132 3
+598e 9 1136 3
+5997 7 1137 3
+FUNC 599e d74 0 -[DumpSymbols outputSymbolFile:]
+599e 18 877 3
+59b6 2e 879 3
+59e4 30 880 3
+5a14 5d 882 3
+5a71 30 883 3
+5aa1 5d 885 3
+5afe 2e 888 3
+5b2c 38 891 3
+5b64 46 892 3
+5baa 26 893 3
+5bd0 20 895 3
+5bf0 20 904 3
+5c10 30 898 3
+5c40 f 899 3
+5c4f 1e 904 3
+5c6d 17 907 3
+5c84 17 908 3
+5c9b 44 911 3
+5cdf 44 914 3
+5d23 a 917 3
+5d2d 36 921 3
+5d63 30 923 3
+5d93 9 18 4
+5d9c 9 19 4
+5da5 c 20 4
+5db1 56 923 3
+5e07 74 925 3
+5e7b f 927 3
+5e8a 44 932 3
+5ece 20 933 3
+5eee c 934 3
+5efa 4e 935 3
+5f48 41 936 3
+5f89 f 937 3
+5f98 14 934 3
+5fac 7 941 3
+5fb3 14 942 3
+5fc7 14 943 3
+5fdb 1d 946 3
+5ff8 c 948 3
+6004 24 949 3
+6028 29 950 3
+6051 9 953 3
+605a 28 954 3
+6082 2e 955 3
+60b0 1e 957 3
+60ce 7 959 3
+60d5 26 962 3
+60fb 2a 963 3
+6125 2a 964 3
+614f 6 966 3
+6155 2a 967 3
+617f e 971 3
+618d 43 972 3
+61d0 4c 974 3
+621c 8 975 3
+6224 2e 979 3
+6252 2e 982 3
+6280 2e 985 3
+62ae 2e 988 3
+62dc 2e 991 3
+630a 2e 994 3
+6338 2e 997 3
+6366 2e 1000 3
+6394 54 1004 3
+63e8 c 1005 3
+63f4 e 1007 3
+6402 27 1008 3
+6429 8 1009 3
+6431 34 1010 3
+6465 24 1012 3
+6489 2 1013 3
+648b 2a 1017 3
+64b5 a 1019 3
+64bf 14 1020 3
+64d3 1d 1021 3
+64f0 a 1025 3
+64fa 32 1026 3
+652c 33 1028 3
+655f c 1029 3
+656b 55 1034 3
+65c0 f 1036 3
+65cf 16 1040 3
+65e5 61 1041 3
+6646 f 1043 3
+6655 47 1046 3
+669c c 1048 3
+66a8 11 948 3
+66b9 4e 1052 3
+6707 b 1053 3
+FUNC 6712 11 0 operator new(unsigned long, void*)
+6712 c 94 5
+671e 5 94 5
+6723 1 94 5
+FUNC 6724 e 0 operator delete(void*, void*)
+6724 c 98 5
+6730 2 98 5
+673e 7 76 6
+6745 2 77 6
+6747 1a 78 6
+6761 d 77 6
+676e 3 79 6
+6771 2 80 6
+6773 1 80 6
+6780 d 95 6
+678d 1 95 6
+678e 13 127 74
+67a1 2a 127 74
+67cb 1 127 74
+67cc 13 127 74
+67df 2a 127 74
+6809 1 127 74
+680a 13 127 74
+681d 2a 127 74
+6847 1 127 74
+FUNC 6848 e 0 dwarf2reader::LineInfoHandler::DefineDir(std::string const&, unsigned int)
+6848 c 131 7
+6854 2 131 74
+FUNC 6856 26 0 dwarf2reader::LineInfoHandler::DefineFile(std::string const&, int, unsigned int, unsigned long long, unsigned long long)
+6856 24 142 7
+687a 2 142 74
+FUNC 687c 1a 0 dwarf2reader::LineInfoHandler::AddLine(unsigned long long, unsigned int, unsigned int, unsigned int)
+687c 18 150 7
+6894 2 150 74
+6896 12 299 74
+68a8 12 299 74
+68ba 13 301 74
+68cd 2a 301 74
+68f7 1 301 74
+68f8 13 301 74
+690b 2a 301 74
+6935 1 301 74
+6936 13 301 74
+6949 2a 301 74
+6973 1 301 74
+FUNC 6974 44 0 dwarf2reader::Dwarf2Handler::StartCompilationUnit(unsigned long long, unsigned char, unsigned char, unsigned long long, unsigned char)
+6974 39 308 7
+69ad b 308 74
+FUNC 69b8 1f 0 dwarf2reader::Dwarf2Handler::StartDIE(unsigned long long, dwarf2reader::DwarfTag, std::list<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm>, std::allocator<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> > > const&)
+69b8 18 314 7
+69d0 7 314 74
+69d7 1 314 74
+FUNC 69d8 26 0 dwarf2reader::Dwarf2Handler::ProcessAttributeUnsigned(unsigned long long, dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm, unsigned long long)
+69d8 24 323 7
+69fc 2 323 74
+FUNC 69fe 26 0 dwarf2reader::Dwarf2Handler::ProcessAttributeSigned(unsigned long long, dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm, long long)
+69fe 24 332 7
+6a22 2 332 74
+FUNC 6a24 26 0 dwarf2reader::Dwarf2Handler::ProcessAttributeBuffer(unsigned long long, dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm, char const*, unsigned long long)
+6a24 24 345 7
+6a48 2 345 74
+FUNC 6a4a 1a 0 dwarf2reader::Dwarf2Handler::ProcessAttributeString(unsigned long long, dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm, std::string const&)
+6a4a 18 354 7
+6a62 2 354 74
+FUNC 6a64 1a 0 dwarf2reader::Dwarf2Handler::EndDIE(unsigned long long)
+6a64 18 360 7
+6a7c 2 360 74
+6a7e c 44 8
+6a8a 2 44 8
+6a8c 13 55 32
+6a9f 35 55 32
+6ad4 13 91 32
+6ae7 73 96 32
+6b5a 13 98 32
+6b6d 35 98 32
+6bae 1a 75 3
+6bc8 2 76 3
+FUNC 6bca 20 0 std::_Rb_tree_const_iterator<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> >::operator!=(std::_Rb_tree_const_iterator<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> > const&) const
+6bca c 287 10
+6bd6 14 288 40
+FUNC 6bea 16 0 std::_Rb_tree_const_iterator<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> >::operator->() const
+6bea c 249 10
+6bf6 a 250 40
+6c0c 7 614 72
+6c13 1 614 72
+6c14 c 241 40
+6c20 c 242 40
+FUNC 6c2c 16 0 std::_Rb_tree_const_iterator<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> >::operator*() const
+6c2c c 245 11
+6c38 a 246 40
+6c42 c 241 40
+6c4e c 242 40
+FUNC 6c5a 20 0 std::_Rb_tree_const_iterator<std::pair<unsigned long long const, std::pair<std::string, unsigned int> > >::operator!=(std::_Rb_tree_const_iterator<std::pair<unsigned long long const, std::pair<std::string, unsigned int> > > const&) const
+6c5a c 287 11
+6c66 14 288 40
+FUNC 6c7a 16 0 std::_Rb_tree_const_iterator<std::pair<unsigned long long const, std::pair<std::string, unsigned int> > >::operator->() const
+6c7a c 249 11
+6c86 a 250 40
+6c90 c 185 34
+6c9c 18 186 34
+6cc0 14 204 34
+6cd4 c 69 70
+6ce0 d 69 70
+6ced 1 69 70
+6cee c 89 70
+6cfa 20 90 70
+6d1a c 69 70
+6d26 d 69 70
+6d33 1 69 70
+6d34 c 69 70
+6d40 d 69 70
+6d4d 1 69 70
+FUNC 6d4e 25 0 std::_Rb_tree_const_iterator<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> >::operator++()
+6d4e c 253 13
+6d5a 14 255 40
+6d6e 5 256 40
+6d73 1 256 40
+FUNC 6d74 25 0 std::_Rb_tree_const_iterator<std::pair<unsigned long long const, std::pair<std::string, unsigned int> > >::operator++()
+6d74 c 253 13
+6d80 14 255 40
+6d94 5 256 40
+6d99 1 256 40
+FUNC 6d9a 14 0 std::_Rb_tree<unsigned long long, std::pair<unsigned long long const, dwarf2reader::FunctionInfo*>, std::_Select1st<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> >, std::less<unsigned long long>, std::allocator<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> > >::_M_begin()
+6d9a c 461 13
+6da6 8 462 40
+FUNC 6dae 14 0 std::_Rb_tree<unsigned long long, std::pair<unsigned long long const, std::pair<std::string, unsigned int> >, std::_Select1st<std::pair<unsigned long long const, std::pair<std::string, unsigned int> > >, std::less<unsigned long long>, std::allocator<std::pair<unsigned long long const, std::pair<std::string, unsigned int> > > >::_M_begin()
+6dae c 461 13
+6dba 8 462 40
+6dc2 c 65 68
+6dce 2 65 68
+6dd0 c 72 68
+6ddc 2 72 68
+6dde c 97 69
+6dea d 97 69
+6df7 1 97 69
+6df8 c 105 69
+6e04 d 105 69
+6e11 1 105 69
+6e12 c 105 69
+6e1e d 105 69
+6e2b 1 105 69
+6e2c c 67 68
+6e38 2 67 68
+6e3a c 99 69
+6e46 14 100 69
+6e5a c 99 69
+6e66 14 100 69
+FUNC 6e7a 2b 0 std::_Vector_base<dwarf2reader::SourceFileInfo, std::allocator<dwarf2reader::SourceFileInfo> >::get_allocator() const
+6e7a 10 93 16
+6e8a 1b 94 71
+6ea5 1 94 71
+6ea6 c 65 68
+6eb2 2 65 68
+6eb4 c 72 68
+6ec0 2 72 68
+6ec2 c 97 69
+6ece d 97 69
+6edb 1 97 69
+6edc c 105 69
+6ee8 d 105 69
+6ef5 1 105 69
+6ef6 c 105 69
+6f02 d 105 69
+6f0f 1 105 69
+6f10 c 67 68
+6f1c 2 67 68
+6f1e c 99 69
+6f2a 14 100 69
+6f3e c 99 69
+6f4a 14 100 69
+FUNC 6f5e 2b 0 std::_Vector_base<std::string, std::allocator<std::string> >::get_allocator() const
+6f5e 10 93 16
+6f6e 1b 94 71
+6f89 1 94 71
+6f8a c 603 72
+6f96 c 603 72
+FUNC 6fa2 23 0 std::vector<dwarf2reader::SourceFileInfo, std::allocator<dwarf2reader::SourceFileInfo> >::begin()
+6fa2 c 333 16
+6fae 17 334 71
+6fc5 1 334 71
+FUNC 6fc6 26 0 std::vector<dwarf2reader::SourceFileInfo, std::allocator<dwarf2reader::SourceFileInfo> >::end()
+6fc6 c 351 16
+6fd2 1a 352 71
+6ff8 5 666 72
+6ffd 1 666 72
+6ffe c 608 72
+700a 14 609 72
+702a 5 666 72
+702f 1 666 72
+FUNC 7030 35 0 bool __gnu_cxx::operator!=<dwarf2reader::SourceFileInfo const*, dwarf2reader::SourceFileInfo*, std::vector<dwarf2reader::SourceFileInfo, std::allocator<dwarf2reader::SourceFileInfo> > >(__gnu_cxx::__normal_iterator<dwarf2reader::SourceFileInfo const*, std::vector<dwarf2reader::SourceFileInfo, std::allocator<dwarf2reader::SourceFileInfo> > > const&, __gnu_cxx::__normal_iterator<dwarf2reader::SourceFileInfo*, std::vector<dwarf2reader::SourceFileInfo, std::allocator<dwarf2reader::SourceFileInfo> > > const&)
+7030 d 693 16
+703d 28 694 72
+7065 1 694 72
+7066 c 603 72
+7072 c 603 72
+708a 27 629 72
+70b1 1 629 72
+70b2 c 84 70
+70be 1f 85 70
+70dd 1 85 70
+FUNC 70de 32 0 std::pair<std::string, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> std::make_pair<std::string, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*>(std::string, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*)
+70de 10 144 16
+70ee 22 145 70
+711c a 190 34
+7132 d 194 34
+713f 1 194 34
+7140 c 84 70
+714c 17 85 70
+7163 1 85 70
+FUNC 7164 2d 0 std::pair<char const*, unsigned long> std::make_pair<char const*, unsigned long>(char const*, unsigned long)
+7164 c 144 16
+7170 21 145 70
+7191 1 145 70
+7192 c 84 70
+719e 1d 85 70
+71bb 1 85 70
+FUNC 71bc 30 0 std::pair<char*, std::pair<char const*, unsigned long> > std::make_pair<char*, std::pair<char const*, unsigned long> >(char*, std::pair<char const*, unsigned long>)
+71bc 10 144 16
+71cc 20 145 70
+71ec c 89 70
+71f8 20 90 70
+7218 d 89 70
+7225 70 90 70
+7295 1 90 70
+FUNC 7296 12 0 std::iterator_traits<unsigned long const*>::iterator_category std::__iterator_category<unsigned long const*>(unsigned long const* const&)
+7296 c 164 17
+72a2 6 165 17
+FUNC 72a8 1d 0 std::iterator_traits<unsigned long const*>::difference_type std::__distance<unsigned long const*>(unsigned long const*, unsigned long const*, std::random_access_iterator_tag)
+72a8 c 92 18
+72b4 11 97 18
+72c5 1 97 18
+FUNC 72c6 33 0 std::iterator_traits<unsigned long const*>::difference_type std::distance<unsigned long const*>(unsigned long const*, unsigned long const*)
+72c6 c 114 18
+72d2 27 118 18
+72f9 1 118 18
+FUNC 72fa 20 0 void std::__advance<unsigned long const*, int>(unsigned long const*&, int, std::random_access_iterator_tag)
+72fa c 150 18
+7306 14 155 18
+FUNC 731a 33 0 void std::advance<unsigned long const*, int>(unsigned long const*&, int)
+731a c 172 18
+7326 27 175 18
+734d 1 175 18
+FUNC 734e 7a 0 unsigned long const* std::lower_bound<unsigned long const*, unsigned long>(unsigned long const*, unsigned long const*, unsigned long const&)
+734e c 2625 19
+735a 15 2642 19
+736f 2 2646 19
+7371 8 2648 19
+7379 6 2649 19
+737f 12 2650 19
+7391 e 2651 19
+739f 6 2653 19
+73a5 4 2654 19
+73a9 e 2655 19
+73b7 6 2658 19
+73bd 6 2646 19
+73c3 5 2660 19
+73db b 227 34
+73e6 e 228 34
+73f4 1c 229 34
+7410 20 230 34
+7430 6 231 34
+7436 c 72 68
+7442 2 72 68
+7444 c 105 69
+7450 d 105 69
+745d 1 105 69
+745e c 105 69
+746a d 105 69
+7477 1 105 69
+7478 c 80 71
+7484 d 80 71
+7491 1 80 71
+7492 c 67 68
+749e 2 67 68
+74a0 c 99 69
+74ac 14 100 69
+FUNC 74c0 2b 0 std::_Vector_base<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> >::get_allocator() const
+74c0 10 93 19
+74d0 1b 94 71
+74eb 1 94 71
+74ec c 238 40
+74f8 a 239 40
+FUNC 7502 26 0 std::_Rb_tree<unsigned long long, std::pair<unsigned long long const, dwarf2reader::FunctionInfo*>, std::_Select1st<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> >, std::less<unsigned long long>, std::allocator<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> > >::begin() const
+7502 c 585 19
+750e 1a 588 40
+FUNC 7528 19 0 std::map<unsigned long long, dwarf2reader::FunctionInfo*, std::less<unsigned long long>, std::allocator<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> > >::begin() const
+7528 c 243 20
+7534 d 244 45
+7541 1 244 45
+FUNC 7542 26 0 std::_Rb_tree<unsigned long long, std::pair<unsigned long long const, dwarf2reader::FunctionInfo*>, std::_Select1st<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> >, std::less<unsigned long long>, std::allocator<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> > >::end() const
+7542 c 596 20
+754e 1a 597 40
+FUNC 7568 19 0 std::map<unsigned long long, dwarf2reader::FunctionInfo*, std::less<unsigned long long>, std::allocator<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> > >::end() const
+7568 c 260 20
+7574 d 261 45
+7581 1 261 45
+7582 c 65 68
+758e 2 65 68
+7590 c 72 68
+759c 2 72 68
+759e c 97 69
+75aa d 97 69
+75b7 1 97 69
+75b8 c 105 69
+75c4 d 105 69
+75d1 1 105 69
+75d2 c 72 68
+75de 2 72 68
+75e0 c 105 69
+75ec d 105 69
+75f9 1 105 69
+75fa c 397 40
+7606 d 397 40
+7613 1 397 40
+7614 c 105 69
+7620 d 105 69
+762d 1 105 69
+FUNC 762e 14 0 std::_Rb_tree<unsigned long long, std::pair<unsigned long long const, dwarf2reader::FunctionInfo*>, std::_Select1st<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> >, std::less<unsigned long long>, std::allocator<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> > >::_S_right(std::_Rb_tree_node_base*)
+762e c 496 20
+763a 8 497 40
+FUNC 7642 14 0 std::_Rb_tree<unsigned long long, std::pair<unsigned long long const, dwarf2reader::FunctionInfo*>, std::_Select1st<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> >, std::less<unsigned long long>, std::allocator<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> > >::_S_left(std::_Rb_tree_node_base*)
+7642 c 488 20
+764e 8 489 40
+7656 c 65 68
+7662 2 65 68
+7664 c 72 68
+7670 2 72 68
+7672 c 97 69
+767e d 97 69
+768b 1 97 69
+768c c 105 69
+7698 d 105 69
+76a5 1 105 69
+76a6 c 72 68
+76b2 2 72 68
+76b4 c 105 69
+76c0 d 105 69
+76cd 1 105 69
+76ce c 397 40
+76da d 397 40
+76e7 1 397 40
+76e8 c 105 69
+76f4 d 105 69
+7701 1 105 69
+FUNC 7702 14 0 std::_Rb_tree<unsigned long long, std::pair<unsigned long long const, std::pair<std::string, unsigned int> >, std::_Select1st<std::pair<unsigned long long const, std::pair<std::string, unsigned int> > >, std::less<unsigned long long>, std::allocator<std::pair<unsigned long long const, std::pair<std::string, unsigned int> > > >::_S_right(std::_Rb_tree_node_base*)
+7702 c 496 20
+770e 8 497 40
+FUNC 7716 14 0 std::_Rb_tree<unsigned long long, std::pair<unsigned long long const, std::pair<std::string, unsigned int> >, std::_Select1st<std::pair<unsigned long long const, std::pair<std::string, unsigned int> > >, std::less<unsigned long long>, std::allocator<std::pair<unsigned long long const, std::pair<std::string, unsigned int> > > >::_S_left(std::_Rb_tree_node_base*)
+7716 c 488 20
+7722 8 489 40
+772a c 84 71
+7736 2f 85 71
+7765 2 86 71
+7767 1 86 71
+7768 c 80 71
+7774 d 80 71
+7781 1 80 71
+7782 c 96 71
+778e 12 97 71
+77a0 2 98 71
+77a2 c 84 71
+77ae 2f 85 71
+77dd 2 86 71
+77df 1 86 71
+77e0 c 80 71
+77ec d 80 71
+77f9 1 80 71
+77fa c 96 71
+7806 12 97 71
+7818 2 98 71
+7826 d 107 68
+7833 1 107 68
+FUNC 7834 2e 0 void std::_Destroy<std::string*, std::allocator<std::string> >(std::string*, std::string*, std::allocator<std::string>)
+7834 c 171 21
+7840 2 173 73
+7842 12 174 73
+7854 c 173 73
+7860 2 174 73
+7862 c 167 40
+786e a 168 40
+FUNC 7878 26 0 std::_Rb_tree<unsigned long long, std::pair<unsigned long long const, dwarf2reader::FunctionInfo*>, std::_Select1st<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> >, std::less<unsigned long long>, std::allocator<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> > >::begin()
+7878 c 581 21
+7884 1a 582 40
+FUNC 789e 19 0 std::map<unsigned long long, dwarf2reader::FunctionInfo*, std::less<unsigned long long>, std::allocator<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> > >::begin()
+789e c 234 21
+78aa d 235 45
+78b7 1 235 45
+FUNC 78b8 26 0 std::_Rb_tree<unsigned long long, std::pair<unsigned long long const, dwarf2reader::FunctionInfo*>, std::_Select1st<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> >, std::less<unsigned long long>, std::allocator<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> > >::end()
+78b8 c 592 21
+78c4 1a 593 40
+FUNC 78de 19 0 std::map<unsigned long long, dwarf2reader::FunctionInfo*, std::less<unsigned long long>, std::allocator<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> > >::end()
+78de c 251 21
+78ea d 252 45
+78f7 1 252 45
+78f8 c 167 40
+7904 a 168 40
+FUNC 790e 26 0 std::_Rb_tree<unsigned long long, std::pair<unsigned long long const, std::pair<std::string, unsigned int> >, std::_Select1st<std::pair<unsigned long long const, std::pair<std::string, unsigned int> > >, std::less<unsigned long long>, std::allocator<std::pair<unsigned long long const, std::pair<std::string, unsigned int> > > >::begin()
+790e c 581 21
+791a 1a 582 40
+FUNC 7934 19 0 std::map<unsigned long long, std::pair<std::string, unsigned int>, std::less<unsigned long long>, std::allocator<std::pair<unsigned long long const, std::pair<std::string, unsigned int> > > >::begin()
+7934 c 234 21
+7940 d 235 45
+794d 1 235 45
+FUNC 794e 26 0 std::_Rb_tree<unsigned long long, std::pair<unsigned long long const, std::pair<std::string, unsigned int> >, std::_Select1st<std::pair<unsigned long long const, std::pair<std::string, unsigned int> > >, std::less<unsigned long long>, std::allocator<std::pair<unsigned long long const, std::pair<std::string, unsigned int> > > >::end()
+794e c 592 21
+795a 1a 593 40
+FUNC 7974 19 0 std::map<unsigned long long, std::pair<std::string, unsigned int>, std::less<unsigned long long>, std::allocator<std::pair<unsigned long long const, std::pair<std::string, unsigned int> > > >::end()
+7974 c 251 21
+7980 d 252 45
+798d 1 252 45
+FUNC 798e 11 0 std::_Select1st<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >::operator()(std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*>&) const
+798e c 546 22
+799a 5 547 41
+799f 1 547 41
+79a0 c 128 34
+79ac 13 129 34
+79bf 1 129 34
+79cc 22 396 34
+79fa d 199 42
+7a07 1 199 42
+7a08 c 65 68
+7a14 2 65 68
+7a16 c 72 68
+7a22 2 72 68
+7a24 c 97 69
+7a30 d 97 69
+7a3d 1 97 69
+7a3e c 105 69
+7a4a d 105 69
+7a57 1 105 69
+7a58 c 65 68
+7a64 2 65 68
+7a66 c 72 68
+7a72 2 72 68
+7a74 c 105 69
+7a80 d 105 69
+7a8d 1 105 69
+7a8e c 97 69
+7a9a d 97 69
+7aa7 1 97 69
+7aa8 c 72 68
+7ab4 2 72 68
+7ab6 c 105 69
+7ac2 d 105 69
+7acf 1 105 69
+7adc d 94 68
+7ae9 1 94 68
+FUNC 7aea 2f 0 std::_Vector_base<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> >::_M_deallocate(dwarf2reader::CompilationUnit::Abbrev*, unsigned long)
+7aea c 120 23
+7af6 6 122 71
+7afc 1d 123 71
+7b19 1 123 71
+7b1a c 108 71
+7b26 43 109 71
+7b69 1 109 71
+7b6a c 65 68
+7b76 2 65 68
+7b78 c 103 69
+7b84 d 103 69
+7b91 1 103 69
+7b92 c 65 68
+7b9e 2 65 68
+7ba0 c 103 69
+7bac d 103 69
+7bb9 1 103 69
+7bc6 d 94 68
+7bd3 1 94 68
+FUNC 7bd4 2f 0 std::_Vector_base<dwarf2reader::SourceFileInfo, std::allocator<dwarf2reader::SourceFileInfo> >::_M_deallocate(dwarf2reader::SourceFileInfo*, unsigned long)
+7bd4 c 120 23
+7be0 6 122 71
+7be6 1d 123 71
+7c03 1 123 71
+7c04 c 108 71
+7c10 43 109 71
+7c53 1 109 71
+7c54 c 188 71
+7c60 12 189 71
+7c72 2 190 71
+7c74 c 35 32
+7c80 d 35 32
+7c8d 1 35 32
+7c9a d 107 68
+7ca7 1 107 68
+FUNC 7ca8 2e 0 void std::_Destroy<dwarf2reader::SourceFileInfo*, std::allocator<dwarf2reader::SourceFileInfo> >(dwarf2reader::SourceFileInfo*, dwarf2reader::SourceFileInfo*, std::allocator<dwarf2reader::SourceFileInfo>)
+7ca8 c 171 23
+7cb4 2 173 73
+7cb6 12 174 73
+7cc8 c 173 73
+7cd4 2 174 73
+7cd6 d 272 71
+7ce3 8c 273 71
+7d6f 1 273 71
+7d7c d 94 68
+7d89 1 94 68
+FUNC 7d8a 2f 0 std::_Vector_base<std::string, std::allocator<std::string> >::_M_deallocate(std::string*, unsigned long)
+7d8a c 120 23
+7d96 6 122 71
+7d9c 1d 123 71
+7db9 1 123 71
+7dba c 108 71
+7dc6 3d 109 71
+7e03 1 109 71
+7e04 c 188 71
+7e10 12 189 71
+7e22 2 190 71
+7e24 d 272 71
+7e31 8c 273 71
+7ebd 1 273 71
+7eca 2b 596 34
+7ef5 1 596 34
+7f02 7 614 72
+7f09 1 614 72
+7f0a c 65 68
+7f16 2 65 68
+7f18 c 72 68
+7f24 2 72 68
+7f26 c 103 69
+7f32 d 103 69
+7f3f 1 103 69
+7f40 c 105 69
+7f4c d 105 69
+7f59 1 105 69
+7f5a c 65 68
+7f66 2 65 68
+7f68 c 72 68
+7f74 2 72 68
+7f76 c 103 69
+7f82 d 103 69
+7f8f 1 103 69
+7f90 c 105 69
+7f9c d 105 69
+7fa9 1 105 69
+7faa c 105 69
+7fb6 d 105 69
+7fc3 1 105 69
+7fd0 d 575 34
+7fdd 1 575 34
+7fea d 575 34
+7ff7 1 575 34
+FUNC 7ff8 11 0 std::_Select1st<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >::operator()(std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> const&) const
+7ff8 c 550 23
+8004 5 551 41
+8009 1 551 41
+8016 2f 600 34
+8045 1 600 34
+8046 c 84 70
+8052 1e 85 70
+FUNC 8070 11 0 std::_Select1st<std::pair<std::string const, std::pair<char const*, unsigned long long> > >::operator()(std::pair<std::string const, std::pair<char const*, unsigned long long> >&) const
+8070 c 546 23
+807c 5 547 41
+8081 1 547 41
+FUNC 8082 11 0 std::_Select1st<std::pair<std::string const, std::pair<char const*, unsigned long long> > >::operator()(std::pair<std::string const, std::pair<char const*, unsigned long long> > const&) const
+8082 c 550 23
+808e 5 551 41
+8093 1 551 41
+8094 c 128 34
+80a0 13 129 34
+80b3 1 129 34
+80b4 c 84 70
+80c0 1e 85 70
+80de c 65 68
+80ea 2 65 68
+80ec c 103 69
+80f8 d 103 69
+8105 1 103 69
+8106 c 65 68
+8112 2 65 68
+8114 c 72 68
+8120 2 72 68
+8122 c 105 69
+812e d 105 69
+813b 1 105 69
+813c c 103 69
+8148 d 103 69
+8155 1 103 69
+8156 c 105 69
+8162 d 105 69
+816f 1 105 69
+8170 c 80 71
+817c d 80 71
+8189 1 80 71
+818a c 67 68
+8196 2 67 68
+8198 c 99 69
+81a4 14 100 69
+FUNC 81b8 2b 0 std::_Vector_base<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*> >::get_allocator() const
+81b8 10 93 23
+81c8 1b 94 71
+81e3 1 94 71
+81e4 c 99 69
+81f0 14 100 69
+8210 2 107 68
+FUNC 8212 2e 0 void std::_Destroy<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >**, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*> >(__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >**, __gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >**, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*>)
+8212 c 171 23
+821e 2 173 73
+8220 12 174 73
+8232 c 173 73
+823e 2 174 73
+824c d 107 68
+8259 1 107 68
+825a c 67 68
+8266 2 67 68
+8268 c 99 69
+8274 14 100 69
+8288 c 403 40
+8294 1c 404 40
+82b0 a 406 40
+82ba a 407 40
+82c4 c 408 40
+82d0 e 409 40
+82de c 553 40
+82ea 36 554 40
+8320 2 555 40
+8322 c 103 69
+832e d 103 69
+833b 1 103 69
+FUNC 833c 2b 0 std::_Rb_tree<unsigned long long, std::pair<unsigned long long const, dwarf2reader::FunctionInfo*>, std::_Select1st<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> >, std::less<unsigned long long>, std::allocator<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> > >::get_allocator() const
+833c 10 350 23
+834c 1b 351 40
+8367 1 351 40
+8368 c 69 70
+8374 2 69 70
+8382 d 107 68
+838f 1 107 68
+839c d 94 68
+83a9 1 94 68
+FUNC 83aa 2a 0 std::_Rb_tree<unsigned long long, std::pair<unsigned long long const, dwarf2reader::FunctionInfo*>, std::_Select1st<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> >, std::less<unsigned long long>, std::allocator<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> > >::_M_put_node(std::_Rb_tree_node<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> >*)
+83aa c 359 23
+83b6 1e 360 40
+FUNC 83d4 59 0 std::_Rb_tree<unsigned long long, std::pair<unsigned long long const, dwarf2reader::FunctionInfo*>, std::_Select1st<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> >, std::less<unsigned long long>, std::allocator<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> > >::destroy_node(std::_Rb_tree_node<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> >*)
+83d4 d 387 23
+83e1 35 389 40
+8416 17 390 40
+842d 1 390 40
+FUNC 842e 56 0 std::_Rb_tree<unsigned long long, std::pair<unsigned long long const, dwarf2reader::FunctionInfo*>, std::_Select1st<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> >, std::less<unsigned long long>, std::allocator<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> > >::_M_erase(std::_Rb_tree_node<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> >*)
+842e c 1051 23
+843a 2 1054 40
+843c 1a 1056 40
+8456 e 1057 40
+8464 12 1058 40
+8476 6 1059 40
+847c 6 1054 40
+8482 2 1059 40
+8484 d 569 40
+8491 58 570 40
+84e9 1 570 40
+84ea c 147 45
+84f6 31 148 45
+8527 1 148 45
+8528 c 92 45
+8534 d 92 45
+8541 1 92 45
+8542 c 67 68
+854e 2 67 68
+8550 c 99 69
+855c 14 100 69
+8570 c 403 40
+857c 1c 404 40
+8598 a 406 40
+85a2 a 407 40
+85ac c 408 40
+85b8 e 409 40
+85c6 c 553 40
+85d2 36 554 40
+8608 2 555 40
+860a c 103 69
+8616 d 103 69
+8623 1 103 69
+FUNC 8624 2b 0 std::_Rb_tree<unsigned long long, std::pair<unsigned long long const, std::pair<std::string, unsigned int> >, std::_Select1st<std::pair<unsigned long long const, std::pair<std::string, unsigned int> > >, std::less<unsigned long long>, std::allocator<std::pair<unsigned long long const, std::pair<std::string, unsigned int> > > >::get_allocator() const
+8624 10 350 23
+8634 1b 351 40
+864f 1 351 40
+8650 c 69 70
+865c d 69 70
+8669 1 69 70
+866a c 69 70
+8676 30 69 70
+86b2 d 107 68
+86bf 1 107 68
+86cc d 94 68
+86d9 1 94 68
+FUNC 86da 2a 0 std::_Rb_tree<unsigned long long, std::pair<unsigned long long const, std::pair<std::string, unsigned int> >, std::_Select1st<std::pair<unsigned long long const, std::pair<std::string, unsigned int> > >, std::less<unsigned long long>, std::allocator<std::pair<unsigned long long const, std::pair<std::string, unsigned int> > > >::_M_put_node(std::_Rb_tree_node<std::pair<unsigned long long const, std::pair<std::string, unsigned int> > >*)
+86da c 359 23
+86e6 1e 360 40
+FUNC 8704 59 0 std::_Rb_tree<unsigned long long, std::pair<unsigned long long const, std::pair<std::string, unsigned int> >, std::_Select1st<std::pair<unsigned long long const, std::pair<std::string, unsigned int> > >, std::less<unsigned long long>, std::allocator<std::pair<unsigned long long const, std::pair<std::string, unsigned int> > > >::destroy_node(std::_Rb_tree_node<std::pair<unsigned long long const, std::pair<std::string, unsigned int> > >*)
+8704 d 387 23
+8711 35 389 40
+8746 17 390 40
+875d 1 390 40
+FUNC 875e 56 0 std::_Rb_tree<unsigned long long, std::pair<unsigned long long const, std::pair<std::string, unsigned int> >, std::_Select1st<std::pair<unsigned long long const, std::pair<std::string, unsigned int> > >, std::less<unsigned long long>, std::allocator<std::pair<unsigned long long const, std::pair<std::string, unsigned int> > > >::_M_erase(std::_Rb_tree_node<std::pair<unsigned long long const, std::pair<std::string, unsigned int> > >*)
+875e c 1051 23
+876a 2 1054 40
+876c 1a 1056 40
+8786 e 1057 40
+8794 12 1058 40
+87a6 6 1059 40
+87ac 6 1054 40
+87b2 2 1059 40
+87b4 d 569 40
+87c1 58 570 40
+8819 1 570 40
+881a c 147 45
+8826 31 148 45
+8857 1 148 45
+8858 c 92 45
+8864 d 92 45
+8871 1 92 45
+8872 c 603 72
+887e c 603 72
+FUNC 888a 23 0 std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*> >::begin()
+888a c 333 23
+8896 17 334 71
+88ad 1 334 71
+88ba 2a 654 72
+FUNC 88e4 42 0 std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*> >::operator[](unsigned long)
+88e4 c 494 23
+88f0 36 495 71
+FUNC 8926 26 0 std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*> >::end()
+8926 c 351 23
+8932 1a 352 71
+FUNC 894c 28 0 bool std::operator==<char, std::char_traits<char>, std::allocator<char> >(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
+894c c 2115 24
+8958 1c 2116 37
+FUNC 8974 23 0 std::equal_to<std::string>::operator()(std::string const&, std::string const&) const
+8974 c 199 24
+8980 17 200 41
+8997 1 200 41
+8998 c 80 71
+89a4 d 80 71
+89b1 1 80 71
+89b2 c 67 68
+89be 2 67 68
+89c0 c 99 69
+89cc 14 100 69
+FUNC 89e0 2b 0 std::_Vector_base<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*> >::get_allocator() const
+89e0 10 93 24
+89f0 1b 94 71
+8a0b 1 94 71
+8a0c c 99 69
+8a18 14 100 69
+8a2c c 84 71
+8a38 2f 85 71
+8a67 2 86 71
+8a69 1 86 71
+8a6a c 96 71
+8a76 12 97 71
+8a88 2 98 71
+8a96 2 107 68
+FUNC 8a98 2e 0 void std::_Destroy<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >**, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*> >(__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >**, __gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >**, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*>)
+8a98 c 171 24
+8aa4 2 173 73
+8aa6 12 174 73
+8ab8 c 173 73
+8ac4 2 174 73
+FUNC 8ac6 13 0 std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*> >::max_size() const
+8ac6 c 407 24
+8ad2 7 408 71
+8ad9 1 408 71
+8ada c 603 72
+8ae6 c 603 72
+FUNC 8af2 26 0 std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*> >::end()
+8af2 c 351 24
+8afe 1a 352 71
+FUNC 8b18 23 0 std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*> >::begin()
+8b18 c 333 24
+8b24 17 334 71
+8b3b 1 334 71
+8b48 2a 654 72
+8b7e 7 614 72
+8b85 1 614 72
+FUNC 8b86 42 0 std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*> >::operator[](unsigned long)
+8b86 c 494 24
+8b92 36 495 71
+8bd4 d 107 68
+8be1 1 107 68
+FUNC 8be2 28 0 void std::swap<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >**>(__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >**&, __gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >**&)
+8be2 c 92 25
+8bee 8 97 61
+8bf6 a 98 61
+8c00 a 99 61
+FUNC 8c0a 50 0 std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*> >::swap(std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*> >&)
+8c0a c 733 25
+8c16 12 735 71
+8c28 18 736 71
+8c40 1a 737 71
+8c66 2b 596 34
+8c91 1 596 34
+8c9e 2f 600 34
+8ccd 1 600 34
+FUNC 8cce 28 0 void std::swap<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >**>(__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >**&, __gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >**&)
+8cce c 92 25
+8cda 8 97 61
+8ce2 a 98 61
+8cec a 99 61
+FUNC 8cf6 50 0 std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*> >::swap(std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*> >&)
+8cf6 c 733 25
+8d02 12 735 71
+8d14 18 736 71
+8d2c 1a 737 71
+8d46 c 84 71
+8d52 2f 85 71
+8d81 2 86 71
+8d83 1 86 71
+8d84 c 96 71
+8d90 12 97 71
+8da2 2 98 71
+FUNC 8da4 13 0 std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*> >::max_size() const
+8da4 c 407 25
+8db0 7 408 71
+8db7 1 408 71
+8dc4 d 94 68
+8dd1 1 94 68
+FUNC 8dd2 2f 0 std::_Vector_base<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*> >::_M_deallocate(__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >**, unsigned long)
+8dd2 c 120 25
+8dde 6 122 71
+8de4 1d 123 71
+8e01 1 123 71
+8e02 c 108 71
+8e0e 3d 109 71
+8e4b 1 109 71
+8e4c c 272 71
+8e58 4b 273 71
+8ea3 1 273 71
+8ea4 c 188 71
+8eb0 12 189 71
+8ec2 2 190 71
+8ec4 c 603 72
+8ed0 c 603 72
+FUNC 8edc 2b 0 std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*> >::begin() const
+8edc c 342 25
+8ee8 1f 343 71
+8f07 1 343 71
+FUNC 8f08 2c 0 std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*> >::end() const
+8f08 c 360 25
+8f14 20 361 71
+8f40 5 666 72
+8f45 1 666 72
+8f53 2b 759 72
+FUNC 8f7e 3c 0 std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*> >::size() const
+8f7e c 402 25
+8f8a 30 403 71
+8fc6 26 588 34
+8ff8 15 511 34
+900d 79 513 34
+9086 21 517 34
+90a7 1 517 34
+90b4 14 225 42
+90d4 26 592 34
+FUNC 90fa 49 0 std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*> >::capacity() const
+90fa c 449 25
+9106 3d 451 71
+9143 1 451 71
+9144 c 103 69
+9150 d 103 69
+915d 1 103 69
+916e 1b 286 34
+9189 1 286 34
+9196 d 94 68
+91a3 1 94 68
+91b0 1e 301 34
+91db 56 622 34
+9231 17 623 34
+9254 9 1080 34
+925d 1a 1082 34
+9277 2 1083 34
+9279 8 1085 34
+9281 12 1086 34
+9293 6 1087 34
+9299 6 1083 34
+929f 1b 1089 34
+92ba 1d 1080 34
+92d7 c 1091 34
+92e3 1 1091 34
+92e4 d 360 34
+92f1 77 361 34
+9368 c 93 42
+9374 d 93 42
+9381 1 93 42
+9382 c 72 68
+938e 2 72 68
+9390 c 105 69
+939c d 105 69
+93a9 1 105 69
+93aa c 301 66
+93b6 d 301 66
+93c3 1 301 66
+93d0 d 94 68
+93dd 1 94 68
+FUNC 93de 2f 0 std::_Vector_base<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*> >::_M_deallocate(__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >**, unsigned long)
+93de c 120 26
+93ea 6 122 71
+93f0 1d 123 71
+940d 1 123 71
+940e c 108 71
+941a 3d 109 71
+9457 1 109 71
+9458 c 188 71
+9464 12 189 71
+9476 2 190 71
+9478 c 272 71
+9484 4b 273 71
+94cf 1 273 71
+94d0 c 603 72
+94dc c 603 72
+FUNC 94e8 2b 0 std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*> >::begin() const
+94e8 c 342 26
+94f4 1f 343 71
+9513 1 343 71
+FUNC 9514 2c 0 std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*> >::end() const
+9514 c 360 26
+9520 20 361 71
+954c 2d 662 72
+9579 1 662 72
+FUNC 957a 2d 0 unsigned long const& std::max<unsigned long>(unsigned long const&, unsigned long const&)
+957a c 206 26
+9586 e 211 61
+9594 8 212 61
+959c b 213 61
+95a7 1 213 61
+95b4 19 650 72
+95cd 1 650 72
+95da 5 666 72
+95df 1 666 72
+95ed 2b 759 72
+9624 5 666 72
+9629 1 666 72
+9637 2b 759 72
+FUNC 9662 49 0 std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*> >::capacity() const
+9662 c 449 26
+966e 3d 451 71
+96ab 1 451 71
+FUNC 96ac 3c 0 std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*> >::size() const
+96ac c 402 26
+96b8 30 403 71
+96f4 26 588 34
+9726 26 592 34
+974c c 103 69
+9758 d 103 69
+9765 1 103 69
+9776 1b 286 34
+9791 1 286 34
+979e d 94 68
+97ab 1 94 68
+97b8 1e 301 34
+97e3 56 622 34
+9839 17 623 34
+985c 9 1080 34
+9865 1a 1082 34
+987f 2 1083 34
+9881 8 1085 34
+9889 12 1086 34
+989b 6 1087 34
+98a1 6 1083 34
+98a7 1b 1089 34
+98c2 1d 1080 34
+98df c 1091 34
+98eb 1 1091 34
+98ec d 360 34
+98f9 77 361 34
+9970 c 69 70
+997c 20 69 70
+99a9 5c 104 68
+9a05 1 104 68
+9a06 c 69 70
+9a12 2c 69 70
+9a4b 5c 104 68
+9aa7 1 104 68
+9ab4 2d 662 72
+9ae1 1 662 72
+9aee 19 650 72
+9b07 1 650 72
+9b14 5 666 72
+9b19 1 666 72
+9b27 2b 759 72
+9b52 c 72 68
+9b5e 2 72 68
+9b60 c 105 69
+9b6c d 105 69
+9b79 1 105 69
+9b7a c 69 70
+9b86 2 69 70
+9b94 d 107 68
+9ba1 1 107 68
+9bae d 94 68
+9bbb 1 94 68
+FUNC 9bbc 2a 0 std::_List_base<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm>, std::allocator<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> > >::_M_put_node(std::_List_node<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> >*)
+9bbc c 315 26
+9bc8 1e 316 66
+FUNC 9be6 35 0 bool __gnu_cxx::operator!=<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >**, std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*> > >(__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >**, std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*> > > const&, __gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >**, std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*> > > const&)
+9be6 d 699 26
+9bf3 28 700 72
+9c1b 1 700 72
+9c28 d 623 72
+9c35 5 624 72
+FUNC 9c3a 4b 0 void std::__fill<true>::fill<__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >**, std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*> > >, __gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*>(__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >**, std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*> > >, __gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >**, std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*> > >, __gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >* const&)
+9c3a c 539 61
+9c46 8 541 61
+9c4e 2 542 61
+9c50 12 543 61
+9c62 21 542 61
+9c83 2 543 61
+9c85 1 543 61
+FUNC 9c86 2b 0 void std::fill<__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >**, std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*> > >, __gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*>(__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >**, std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*> > >, __gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >**, std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*> > >, __gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >* const&)
+9c86 c 560 26
+9c92 4 567 61
+9c96 1b 568 61
+9cb1 1 568 61
+FUNC 9cb2 4b 0 void std::_Destroy<__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >**, std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*> > >, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*> >(__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >**, std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*> > >, __gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >**, std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*> > >, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*>)
+9cb2 c 171 26
+9cbe 2 173 73
+9cc0 1a 174 73
+9cda 21 173 73
+9cfb 2 174 73
+9cfd 1 174 73
+9d0a 7 98 68
+9d11 1 98 68
+9d1e 1d 85 68
+9d3b 5 86 68
+9d40 16 88 68
+9d62 1d 297 34
+9d7f 1 297 34
+9d8d e 605 34
+9d9b 9 606 34
+9da4 3c 609 34
+9de0 b 610 34
+9deb 11 609 34
+9dfc b 612 34
+9e07 12 614 34
+9e19 b 615 34
+9e24 13 612 34
+9e37 8 615 34
+9e3f 1 615 34
+9e4d 15 751 34
+9e62 1a 752 34
+9e7c b 754 34
+9e87 49 755 34
+9ed0 3b 756 34
+9f0b 12 754 34
+9f1d 15 758 34
+9f32 8 759 34
+9f3a 1c 760 34
+9f56 f 761 34
+9f65 41 762 34
+9fb2 7 98 68
+9fb9 1 98 68
+9fc6 1d 85 68
+9fe3 5 86 68
+9fe8 17 88 68
+9fff 1 88 68
+a00c 1d 297 34
+a029 1 297 34
+a037 e 605 34
+a045 9 606 34
+a04e 3c 609 34
+a08a b 610 34
+a095 11 609 34
+a0a6 b 612 34
+a0b1 12 614 34
+a0c3 b 615 34
+a0ce 13 612 34
+a0e1 8 615 34
+a0e9 1 615 34
+a0f7 15 751 34
+a10c 1a 752 34
+a126 b 754 34
+a131 49 755 34
+a17a 3b 756 34
+a1b5 12 754 34
+a1c7 15 758 34
+a1dc 8 759 34
+a1e4 1c 760 34
+a200 f 761 34
+a20f 41 762 34
+FUNC a250 35 0 bool __gnu_cxx::operator!=<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >**, std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*> > >(__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >**, std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*> > > const&, __gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >**, std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*> > > const&)
+a250 d 699 26
+a25d 28 700 72
+a285 1 700 72
+a292 d 623 72
+a29f 5 624 72
+FUNC a2a4 4b 0 void std::__fill<true>::fill<__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >**, std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*> > >, __gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*>(__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >**, std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*> > >, __gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >**, std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*> > >, __gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >* const&)
+a2a4 c 539 61
+a2b0 8 541 61
+a2b8 2 542 61
+a2ba 12 543 61
+a2cc 21 542 61
+a2ed 2 543 61
+a2ef 1 543 61
+FUNC a2f0 2b 0 void std::fill<__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >**, std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*> > >, __gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*>(__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >**, std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*> > >, __gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >**, std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*> > >, __gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >* const&)
+a2f0 c 560 26
+a2fc 4 567 61
+a300 1b 568 61
+a31b 1 568 61
+FUNC a31c 4b 0 void std::_Destroy<__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >**, std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*> > >, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*> >(__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >**, std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*> > >, __gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >**, std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*> > >, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*>)
+a31c c 171 26
+a328 2 173 73
+a32a 1a 174 73
+a344 21 173 73
+a365 2 174 73
+a367 1 174 73
+a368 c 65 68
+a374 2 65 68
+a376 c 103 69
+a382 d 103 69
+a38f 1 103 69
+FUNC a390 2b 0 std::_List_base<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm>, std::allocator<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> > >::get_allocator() const
+a390 10 322 26
+a3a0 1b 324 66
+a3bb 1 324 66
+FUNC a3bc 7b 0 std::_List_base<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm>, std::allocator<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> > >::_M_clear()
+a3bc d 69 27
+a3c9 8 72 77
+a3d1 2 73 77
+a3d3 6 75 77
+a3d9 8 76 77
+a3e1 35 77 77
+a416 12 78 77
+a428 a 73 77
+a432 5 78 77
+a437 1 78 77
+a438 c 331 66
+a444 18 332 66
+a45c c 392 66
+a468 d 392 66
+a475 1 392 66
+a476 c 211 74
+a482 10 211 74
+a49e d 107 68
+a4ab 1 107 68
+FUNC a4ac 2e 0 void std::_Destroy<dwarf2reader::CompilationUnit::Abbrev*, std::allocator<dwarf2reader::CompilationUnit::Abbrev> >(dwarf2reader::CompilationUnit::Abbrev*, dwarf2reader::CompilationUnit::Abbrev*, std::allocator<dwarf2reader::CompilationUnit::Abbrev>)
+a4ac c 171 27
+a4b8 2 173 73
+a4ba 12 174 73
+a4cc c 173 73
+a4d8 2 174 73
+a4da c 272 71
+a4e6 4b 273 71
+a531 1 273 71
+a532 13 196 74
+a545 10 196 74
+a555 2f 197 74
+a584 1a 198 74
+a59e 13 196 74
+a5b1 10 196 74
+a5c1 2f 197 74
+a5f0 1a 198 74
+a616 7 98 68
+a61d 1 98 68
+a62a 1d 85 68
+a647 5 86 68
+a64c 10 88 68
+FUNC a65c 2a 0 std::_Vector_base<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*> >::_M_allocate(unsigned long)
+a65c c 116 27
+a668 1e 117 71
+a686 d 100 71
+a693 12 101 71
+a6a5 19 103 71
+a6be b 104 71
+a6c9 3a 105 71
+a703 1 105 71
+a710 7 98 68
+a717 1 98 68
+a724 1d 85 68
+a741 5 86 68
+a746 10 88 68
+FUNC a756 2a 0 std::_Vector_base<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*> >::_M_allocate(unsigned long)
+a756 c 116 27
+a762 1e 117 71
+a780 d 100 71
+a78d 12 101 71
+a79f 19 103 71
+a7b8 b 104 71
+a7c3 3a 105 71
+a7fd 1 105 71
+a80b 12 424 61
+a81d 2e 425 61
+a84b 13 426 61
+a86a 4 440 61
+a86e 1b 443 61
+a889 1 443 61
+a898 56 482 61
+a8fa 4 514 61
+a8fe 4 515 61
+a902 1b 517 61
+a91d 1 517 61
+a92a 8 616 61
+a932 2 617 61
+a934 8 618 61
+a93c f 617 61
+a94b 5 619 61
+a95c 4 641 61
+a960 1b 642 61
+a97b 1 642 61
+FUNC a97c 27 0 void std::__uninitialized_fill_n_aux<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >**, unsigned long, __gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*>(__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >**, unsigned long, __gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >* const&, __true_type)
+a97c c 182 28
+a988 1b 183 79
+a9a3 1 183 79
+FUNC a9a4 2f 0 void std::uninitialized_fill_n<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >**, unsigned long, __gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*>(__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >**, unsigned long, __gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >* const&)
+a9a4 c 214 28
+a9b0 23 218 79
+a9d3 1 218 79
+FUNC a9d4 27 0 void std::__uninitialized_fill_n_a<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >**, unsigned long, __gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*, __gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*>(__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >**, unsigned long, __gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >* const&, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*>)
+a9d4 c 308 28
+a9e0 1b 310 79
+a9fb 1 310 79
+a9fc c 200 71
+aa08 19 201 71
+aa21 42 203 71
+aa63 15 205 71
+aa85 11 992 34
+aa96 c 993 34
+aaa2 15 995 34
+aab7 c 996 34
+aac3 4a 998 34
+ab0d f 1001 34
+ab1c 1c 998 34
+ab38 1a 1003 34
+ab52 5 1004 34
+ab57 1f 1007 34
+ab76 1c 1008 34
+ab92 19 1009 34
+abab 19 1010 34
+abc4 1a 1011 34
+abde a 1004 34
+abe8 11 1001 34
+abf9 15 1014 34
+ac0e 13 1028 34
+ac21 b 1016 34
+ac2c 9 1018 34
+ac35 19 1023 34
+ac4e 23 1024 34
+ac71 19 1025 34
+ac8a 1d 1021 34
+aca7 1a 1018 34
+acc1 b 1028 34
+accc b 1016 34
+acd7 1e 1028 34
+acf5 1 1028 34
+ad06 16 438 34
+ad1c 37 439 34
+ad53 1 439 34
+ad64 37 212 42
+ad9b 1 212 42
+ada8 8 616 61
+adb0 2 617 61
+adb2 8 618 61
+adba f 617 61
+adc9 5 619 61
+adda 4 641 61
+adde 1b 642 61
+adf9 1 642 61
+FUNC adfa 27 0 void std::__uninitialized_fill_n_aux<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >**, unsigned long, __gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*>(__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >**, unsigned long, __gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >* const&, __true_type)
+adfa c 182 28
+ae06 1b 183 79
+ae21 1 183 79
+FUNC ae22 2f 0 void std::uninitialized_fill_n<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >**, unsigned long, __gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*>(__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >**, unsigned long, __gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >* const&)
+ae22 c 214 28
+ae2e 23 218 79
+ae51 1 218 79
+FUNC ae52 27 0 void std::__uninitialized_fill_n_a<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >**, unsigned long, __gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*, __gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*>(__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >**, unsigned long, __gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >* const&, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*>)
+ae52 c 308 28
+ae5e 1b 310 79
+ae79 1 310 79
+ae7a c 200 71
+ae86 19 201 71
+ae9f 42 203 71
+aee1 15 205 71
+af03 11 992 34
+af14 c 993 34
+af20 15 995 34
+af35 c 996 34
+af41 4a 998 34
+af8b f 1001 34
+af9a 1c 998 34
+afb6 1a 1003 34
+afd0 5 1004 34
+afd5 1f 1007 34
+aff4 1c 1008 34
+b010 19 1009 34
+b029 19 1010 34
+b042 1a 1011 34
+b05c a 1004 34
+b066 11 1001 34
+b077 15 1014 34
+b08c 13 1028 34
+b09f b 1016 34
+b0aa 9 1018 34
+b0b3 19 1023 34
+b0cc 23 1024 34
+b0ef 19 1025 34
+b108 1d 1021 34
+b125 1a 1018 34
+b13f b 1028 34
+b14a b 1016 34
+b155 1e 1028 34
+b173 1 1028 34
+b184 16 438 34
+b19a 37 439 34
+b1d1 1 439 34
+b1e2 37 212 42
+b219 1 212 42
+b227 12 424 61
+b239 2e 425 61
+b267 13 426 61
+b286 4 440 61
+b28a 1b 443 61
+b2a5 1 443 61
+b2b4 56 482 61
+b316 4 514 61
+b31a 4 515 61
+b31e 1b 517 61
+b339 1 517 61
+b346 8 616 61
+b34e 2 617 61
+b350 12 618 61
+b362 16 617 61
+b378 5 619 61
+b37d 1 619 61
+b38a 4 641 61
+b38e 1b 642 61
+b3a9 1 642 61
+FUNC b3aa 27 0 void std::__uninitialized_fill_n_aux<__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >**, std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*> > >, unsigned long, __gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*>(__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >**, std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*> > >, unsigned long, __gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >* const&, __true_type)
+b3aa c 182 28
+b3b6 1b 183 79
+b3d1 1 183 79
+FUNC b3d2 2f 0 void std::uninitialized_fill_n<__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >**, std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*> > >, unsigned long, __gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*>(__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >**, std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*> > >, unsigned long, __gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >* const&)
+b3d2 c 214 28
+b3de 23 218 79
+b401 1 218 79
+FUNC b402 27 0 void std::__uninitialized_fill_n_a<__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >**, std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*> > >, unsigned long, __gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*, __gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*>(__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >**, std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*> > >, unsigned long, __gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >* const&, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*>)
+b402 c 308 28
+b40e 1b 310 79
+b429 1 310 79
+b436 8 616 61
+b43e 2 617 61
+b440 12 618 61
+b452 16 617 61
+b468 5 619 61
+b46d 1 619 61
+b47a 4 641 61
+b47e 1b 642 61
+b499 1 642 61
+FUNC b49a 27 0 void std::__uninitialized_fill_n_aux<__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >**, std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*> > >, unsigned long, __gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*>(__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >**, std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*> > >, unsigned long, __gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >* const&, __true_type)
+b49a c 182 28
+b4a6 1b 183 79
+b4c1 1 183 79
+FUNC b4c2 2f 0 void std::uninitialized_fill_n<__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >**, std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*> > >, unsigned long, __gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*>(__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >**, std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*> > >, unsigned long, __gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >* const&)
+b4c2 c 214 28
+b4ce 23 218 79
+b4f1 1 218 79
+FUNC b4f2 27 0 void std::__uninitialized_fill_n_a<__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >**, std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*> > >, unsigned long, __gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*, __gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*>(__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >**, std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*> > >, unsigned long, __gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >* const&, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*>)
+b4f2 c 308 28
+b4fe 1b 310 79
+b519 1 310 79
+b526 22 300 61
+b548 11 301 61
+b559 1 301 61
+b566 4 315 61
+b56a 1b 317 61
+b585 1 317 61
+b592 1b 326 61
+b5ad 1 326 61
+b5ba 4 384 61
+b5be 4 385 61
+b5c2 1b 387 61
+b5dd 1 387 61
+b5ea 1b 74 79
+b605 1 74 79
+b612 23 113 79
+b635 1 113 79
+b642 1b 254 79
+b65d 1 254 79
+b66a 15 763 71
+b67f 40 766 71
+b6bf 3 768 71
+b6c2 2 773 71
+FUNC b6c4 124 0 std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*> >::reserve(unsigned long)
+b6c4 13 69 29
+b6d7 15 71 78
+b6ec e 72 78
+b6fa 19 73 78
+b713 e 75 78
+b721 28 78 78
+b749 3e 79 78
+b787 30 81 78
+b7b7 8 84 78
+b7bf 11 85 78
+b7d0 18 86 78
+b7f5 33 335 61
+b834 4 384 61
+b838 4 385 61
+b83c 1b 387 61
+b857 1 387 61
+b864 1b 74 79
+b87f 1 74 79
+b88c 23 113 79
+b8af 1 113 79
+b8bc 1b 254 79
+b8d7 1 254 79
+b8e6 56 354 61
+b948 4 384 61
+b94c 4 385 61
+b950 1b 387 61
+b96b 1 387 61
+b978 1b 74 79
+b993 1 74 79
+b9a0 23 113 79
+b9c3 1 113 79
+b9d0 1b 254 79
+b9eb 1 254 79
+FUNC b9ec 46e 0 std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*> >::_M_fill_insert(__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >**, std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*> > >, unsigned long, __gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >* const&)
+b9ec 14 311 29
+ba00 b 313 78
+ba0b 24 315 78
+ba2f 8 318 78
+ba37 23 319 78
+ba5a 15 320 78
+ba6f c 321 78
+ba7b 51 323 78
+bacc 14 327 78
+bae0 30 328 78
+bb10 35 330 78
+bb45 48 334 78
+bb8d 17 338 78
+bba4 43 339 78
+bbe7 14 342 78
+bbfb 1e 343 78
+bc19 e 348 78
+bc27 1e 349 78
+bc45 e 350 78
+bc53 1d 353 78
+bc70 8 354 78
+bc78 e 355 78
+bc86 27 357 78
+bcad 6 358 78
+bcb3 4d 361 78
+bd00 40 365 78
+bd40 18 367 78
+bd58 4d 368 78
+bda5 3e 379 78
+bde3 30 381 78
+be13 12 384 78
+be25 13 385 78
+be38 22 386 78
+FUNC be5a 2e 0 std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*> >::insert(__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >**, std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*> > >, unsigned long, __gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >* const&)
+be5a c 657 29
+be66 22 658 71
+be94 15 580 34
+bea9 15 581 34
+bebe 37 582 34
+bef5 c 583 34
+bf01 1 583 34
+bf02 d 335 34
+bf0f 4e 337 34
+bf5d 4d 338 34
+bfaa d 134 42
+bfb7 65 135 42
+c028 22 300 61
+c04a 11 301 61
+c05b 1 301 61
+c068 4 315 61
+c06c 1b 317 61
+c087 1 317 61
+c094 1b 326 61
+c0af 1 326 61
+c0bc 4 384 61
+c0c0 4 385 61
+c0c4 1b 387 61
+c0df 1 387 61
+c0ec 1b 74 79
+c107 1 74 79
+c114 23 113 79
+c137 1 113 79
+c144 1b 254 79
+c15f 1 254 79
+c16c 15 763 71
+c181 40 766 71
+c1c1 3 768 71
+c1c4 2 773 71
+FUNC c1c6 124 0 std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*> >::reserve(unsigned long)
+c1c6 13 69 29
+c1d9 15 71 78
+c1ee e 72 78
+c1fc 19 73 78
+c215 e 75 78
+c223 28 78 78
+c24b 3e 79 78
+c289 30 81 78
+c2b9 8 84 78
+c2c1 11 85 78
+c2d2 18 86 78
+c2f7 33 335 61
+c336 4 384 61
+c33a 4 385 61
+c33e 1b 387 61
+c359 1 387 61
+c366 1b 74 79
+c381 1 74 79
+c38e 23 113 79
+c3b1 1 113 79
+c3be 1b 254 79
+c3d9 1 254 79
+c3e8 56 354 61
+c44a 4 384 61
+c44e 4 385 61
+c452 1b 387 61
+c46d 1 387 61
+c47a 1b 74 79
+c495 1 74 79
+c4a2 23 113 79
+c4c5 1 113 79
+c4d2 1b 254 79
+c4ed 1 254 79
+FUNC c4ee 46e 0 std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*> >::_M_fill_insert(__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >**, std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*> > >, unsigned long, __gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >* const&)
+c4ee 14 311 29
+c502 b 313 78
+c50d 24 315 78
+c531 8 318 78
+c539 23 319 78
+c55c 15 320 78
+c571 c 321 78
+c57d 51 323 78
+c5ce 14 327 78
+c5e2 30 328 78
+c612 35 330 78
+c647 48 334 78
+c68f 17 338 78
+c6a6 43 339 78
+c6e9 14 342 78
+c6fd 1e 343 78
+c71b e 348 78
+c729 1e 349 78
+c747 e 350 78
+c755 1d 353 78
+c772 8 354 78
+c77a e 355 78
+c788 27 357 78
+c7af 6 358 78
+c7b5 4d 361 78
+c802 40 365 78
+c842 18 367 78
+c85a 4d 368 78
+c8a7 3e 379 78
+c8e5 30 381 78
+c915 12 384 78
+c927 13 385 78
+c93a 22 386 78
+FUNC c95c 2e 0 std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*> >::insert(__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >**, std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >*> > >, unsigned long, __gnu_cxx::_Hashtable_node<std::pair<std::string const, __gnu_cxx::hash_map<std::string, std::pair<char const*, unsigned long long>, __gnu_cxx::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<char const*, unsigned long long> > >*> >* const&)
+c95c c 657 29
+c968 22 658 71
+c996 15 580 34
+c9ab 15 581 34
+c9c0 37 582 34
+c9f7 c 583 34
+ca03 1 583 34
+ca04 d 335 34
+ca11 4e 337 34
+ca5f 4d 338 34
+caac d 134 42
+cab9 65 135 42
+FUNC cb1e 44 0 dwarf2reader::CUFunctionInfoHandler::StartCompilationUnit(unsigned long long, unsigned char, unsigned char, unsigned long long, unsigned char)
+cb1e 39 135 42
+cb57 5 102 30
+cb5c 6 103 30
+FUNC cb62 41 0 dwarf2reader::CUFunctionInfoHandler::ProcessAttributeString(unsigned long long, dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm, std::string const&)
+cb62 18 136 30
+cb7a 10 137 30
+cb8a 17 138 30
+cba1 2 139 30
+cba3 1 139 30
+FUNC cba4 2a5 0 dwarf2reader::CUFunctionInfoHandler::ProcessAttributeUnsigned(unsigned long long, dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm, unsigned long long)
+cba4 2d 144 30
+cbd1 a 145 30
+cbdb 58 146 30
+cc33 35 147 30
+cc68 32 146 30
+cc9a 2a 147 30
+ccc4 82 152 30
+cd46 18 153 30
+cd5e 1c 152 30
+cd7a 2f 153 30
+cda9 e 154 30
+cdb7 28 155 30
+cddf 12 157 30
+cdf1 2 158 30
+cdf3 12 160 30
+ce05 2 161 30
+ce07 c 163 30
+ce13 2 164 30
+ce15 2c 166 30
+ce41 8 172 30
+ce49 1 172 30
+FUNC ce4a 19c 0 dwarf2reader::CULineInfoHandler::AddLine(unsigned long long, unsigned int, unsigned int, unsigned int)
+ce4a 20 84 30
+ce6a 1c 85 30
+ce86 9c 87 30
+cf22 4f 89 30
+cf71 19 87 30
+cf8a 25 90 30
+cfaf 30 93 30
+cfdf 7 95 30
+FUNC cfe6 9f 0 dwarf2reader::CUFunctionInfoHandler::EndDIE(unsigned long long)
+cfe6 19 174 30
+cfff 1c 175 30
+d01b 65 177 30
+d080 5 178 30
+d085 1 178 30
+FUNC d086 164 0 dwarf2reader::CUFunctionInfoHandler::StartDIE(unsigned long long, dwarf2reader::DwarfTag, std::list<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm>, std::allocator<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> > > const&)
+d086 20 111 30
+d0a6 1c 112 30
+d0c2 c 126 30
+d0ce 23 115 30
+d0f1 26 116 30
+d117 1a 117 30
+d131 d 118 30
+d13e 1b 119 30
+d159 5f 120 30
+d1b8 c 124 30
+d1c4 1c 115 30
+d1e0 3 126 30
+d1e3 7 129 30
+FUNC d1ea 73 0 dwarf2reader::CULineInfoHandler::DefineDir(std::string const&, unsigned int)
+d1ea 13 52 30
+d1fd 45 54 30
+d242 15 55 30
+d257 6 56 30
+d25d 1 56 30
+FUNC d25e 23b 0 dwarf2reader::CULineInfoHandler::DefineFile(std::string const&, int, unsigned int, unsigned long long, unsigned long long)
+d25e 2c 60 30
+d28a 45 62 30
+d2cf 2f 65 30
+d2fe 24 66 30
+d322 b 68 30
+d32d e 69 30
+d33b 19 71 30
+d354 17 72 30
+d36b 93 74 30
+d3fe 64 77 30
+d462 30 79 30
+d492 7 81 30
+d499 1 81 30
+d49a 14 38 30
+d4ae 36 40 30
+d4e4 41 43 30
+d525 41 44 30
+d566 67 45 30
+d5cd 10 46 30
+d5dd 13 45 30
+d5f0 15 47 30
+d605 e 48 30
+d613 3d 49 30
+d650 20 50 30
+d670 14 38 30
+d684 36 40 30
+d6ba 41 43 30
+d6fb 41 44 30
+d73c 67 45 30
+d7a3 10 46 30
+d7b3 13 45 30
+d7c6 15 47 30
+d7db e 48 30
+d7e9 3d 49 30
+d826 20 50 30
+d846 12 125 74
+d858 12 125 74
+d86a 13 55 32
+d87d 35 55 32
+d8b2 13 98 32
+d8c5 35 98 32
+d8fa c 35 32
+d906 d 35 32
+d913 1 35 32
+d914 d 22 32
+d921 40 22 32
+d961 1 22 32
+d962 c 89 70
+d96e 1e 90 70
+d998 14 208 34
+d9ac c 190 67
+d9b8 a 190 67
+d9c2 c 259 67
+d9ce 21 259 67
+d9ef 1 259 67
+FUNC d9f0 13 0 std::auto_ptr<dwarf2reader::LineInfo>::operator->() const
+d9f0 c 283 35
+d9fc 7 286 67
+da03 1 286 67
+da11 5c 104 68
+da6d 1 104 68
+FUNC da6e 28 0 bool std::operator==<char, std::char_traits<char>, std::allocator<char> >(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*)
+da6e c 2139 37
+da7a 1c 2140 37
+FUNC da96 5d 0 std::basic_string<char, std::char_traits<char>, std::allocator<char> > std::operator+<char, std::char_traits<char>, std::allocator<char> >(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*)
+da96 d 2081 37
+daa3 12 2083 37
+dab5 1a 2084 37
+dacf 24 2085 37
+daf3 1 2085 37
+FUNC daf4 5d 0 std::basic_string<char, std::char_traits<char>, std::allocator<char> > std::operator+<char, std::char_traits<char>, std::allocator<char> >(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
+daf4 d 2044 37
+db01 12 2046 37
+db13 1a 2047 37
+db2d 24 2048 37
+db51 1 2048 37
+db52 c 84 70
+db5e 17 85 70
+db75 1 85 70
+FUNC db76 2d 0 std::pair<char const*, unsigned int> std::make_pair<char const*, unsigned int>(char const*, unsigned int)
+db76 c 144 37
+db82 21 145 70
+dba3 1 145 70
+dba4 c 84 70
+dbb0 23 85 70
+dbd3 1 85 70
+FUNC dbd4 3c 0 std::pair<unsigned long long, std::pair<char const*, unsigned int> > std::make_pair<unsigned long long, std::pair<char const*, unsigned int> >(unsigned long long, std::pair<char const*, unsigned int>)
+dbd4 1c 144 37
+dbf0 20 145 70
+dc10 d 89 70
+dc1d 64 90 70
+dc81 1 90 70
+dc82 c 89 70
+dc8e 2a 90 70
+dcb8 c 84 70
+dcc4 1d 85 70
+dce1 1 85 70
+FUNC dce2 3c 0 std::pair<unsigned long long, dwarf2reader::FunctionInfo*> std::make_pair<unsigned long long, dwarf2reader::FunctionInfo*>(unsigned long long, dwarf2reader::FunctionInfo*)
+dce2 1c 144 37
+dcfe 20 145 70
+dd2a a 190 34
+dd40 d 194 34
+dd4d 1 194 34
+dd4e c 603 72
+dd5a c 603 72
+FUNC dd66 2b 0 std::vector<std::string, std::allocator<std::string> >::begin() const
+dd66 c 342 39
+dd72 1f 343 71
+dd91 1 343 71
+FUNC dd92 2c 0 std::vector<std::string, std::allocator<std::string> >::end() const
+dd92 c 360 39
+dd9e 20 361 71
+ddca 5 666 72
+ddcf 1 666 72
+dddd 2b 759 72
+FUNC de08 3c 0 std::vector<std::string, std::allocator<std::string> >::size() const
+de08 c 402 39
+de14 30 403 71
+FUNC de44 2b 0 std::vector<dwarf2reader::SourceFileInfo, std::allocator<dwarf2reader::SourceFileInfo> >::begin() const
+de44 c 342 39
+de50 1f 343 71
+de6f 1 343 71
+FUNC de70 2c 0 std::vector<dwarf2reader::SourceFileInfo, std::allocator<dwarf2reader::SourceFileInfo> >::end() const
+de70 c 360 39
+de7c 20 361 71
+dea9 31 759 72
+FUNC deda 3c 0 std::vector<dwarf2reader::SourceFileInfo, std::allocator<dwarf2reader::SourceFileInfo> >::size() const
+deda c 402 39
+dee6 30 403 71
+df16 c 603 72
+df22 c 603 72
+FUNC df2e 26 0 std::vector<std::string, std::allocator<std::string> >::end()
+df2e c 351 39
+df3a 1a 352 71
+df60 7 614 72
+df67 1 614 72
+FUNC df68 13 0 std::vector<std::string, std::allocator<std::string> >::max_size() const
+df68 c 407 39
+df74 7 408 71
+df7b 1 408 71
+df88 5 666 72
+df8d 1 666 72
+df9a d 623 72
+dfa7 5 624 72
+FUNC dfac 23 0 std::vector<std::string, std::allocator<std::string> >::begin()
+dfac c 333 39
+dfb8 17 334 71
+dfcf 1 334 71
+dfd0 c 35 32
+dfdc 26 35 32
+e00f 5c 104 68
+e06b 1 104 68
+e078 7 614 72
+e07f 1 614 72
+FUNC e080 35 0 dwarf2reader::SourceFileInfo::operator=(dwarf2reader::SourceFileInfo const&)
+e080 c 35 39
+e08c 29 35 32
+e0b5 1 35 32
+FUNC e0b6 13 0 std::vector<dwarf2reader::SourceFileInfo, std::allocator<dwarf2reader::SourceFileInfo> >::max_size() const
+e0b6 c 407 39
+e0c2 7 408 71
+e0c9 1 408 71
+e0d6 d 623 72
+e0e3 5 624 72
+FUNC e0e8 3c 0 std::vector<dwarf2reader::SourceFileInfo, std::allocator<dwarf2reader::SourceFileInfo> >::_M_range_check(unsigned long) const
+e0e8 13 515 39
+e0fb 15 517 71
+e110 14 518 71
+FUNC e124 3c 0 std::vector<std::string, std::allocator<std::string> >::_M_range_check(unsigned long) const
+e124 13 515 39
+e137 15 517 71
+e14c 14 518 71
+e16c 2a 654 72
+FUNC e196 42 0 std::vector<std::string, std::allocator<std::string> >::operator[](unsigned long)
+e196 c 494 39
+e1a2 36 495 71
+FUNC e1d8 32 0 std::vector<std::string, std::allocator<std::string> >::at(unsigned long)
+e1d8 c 534 39
+e1e4 12 536 71
+e1f6 14 537 71
+e216 32 654 72
+FUNC e248 42 0 std::vector<dwarf2reader::SourceFileInfo, std::allocator<dwarf2reader::SourceFileInfo> >::operator[](unsigned long)
+e248 c 494 39
+e254 36 495 71
+FUNC e28a 32 0 std::vector<dwarf2reader::SourceFileInfo, std::allocator<dwarf2reader::SourceFileInfo> >::at(unsigned long)
+e28a c 534 39
+e296 12 536 71
+e2a8 14 537 71
+FUNC e2bc 14 0 std::_Rb_tree<unsigned long long, std::pair<unsigned long long const, std::pair<std::string, unsigned int> >, std::_Select1st<std::pair<unsigned long long const, std::pair<std::string, unsigned int> > >, std::less<unsigned long long>, std::allocator<std::pair<unsigned long long const, std::pair<std::string, unsigned int> > > >::_M_end()
+e2bc c 472 40
+e2c8 8 473 40
+FUNC e2d0 11 0 std::_Select1st<std::pair<unsigned long long const, std::pair<std::string, unsigned int> > >::operator()(std::pair<unsigned long long const, std::pair<std::string, unsigned int> > const&) const
+e2d0 c 550 41
+e2dc 5 551 41
+e2e1 1 551 41
+FUNC e2e2 53 0 std::less<unsigned long long>::operator()(unsigned long long const&, unsigned long long const&) const
+e2e2 c 226 41
+e2ee 47 227 41
+e335 1 227 41
+FUNC e336 20 0 std::_Rb_tree_iterator<std::pair<unsigned long long const, std::pair<std::string, unsigned int> > >::operator==(std::_Rb_tree_iterator<std::pair<unsigned long long const, std::pair<std::string, unsigned int> > > const&) const
+e336 c 209 41
+e342 14 210 40
+e356 c 84 70
+e362 18 85 70
+FUNC e37a 14 0 std::_Rb_tree<unsigned long long, std::pair<unsigned long long const, dwarf2reader::FunctionInfo*>, std::_Select1st<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> >, std::less<unsigned long long>, std::allocator<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> > >::_M_end()
+e37a c 472 41
+e386 8 473 40
+FUNC e38e 11 0 std::_Select1st<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> >::operator()(std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> const&) const
+e38e c 550 41
+e39a 5 551 41
+e39f 1 551 41
+FUNC e3a0 20 0 std::_Rb_tree_iterator<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> >::operator==(std::_Rb_tree_iterator<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> > const&) const
+e3a0 c 209 41
+e3ac 14 210 40
+e3c0 c 84 70
+e3cc 18 85 70
+e3e4 c 180 34
+e3f0 13 181 34
+e403 1 181 34
+e410 22 409 34
+e43e d 207 42
+e44b 1 207 42
+FUNC e44c 35 0 bool __gnu_cxx::operator!=<std::string*, std::vector<std::string, std::allocator<std::string> > >(__gnu_cxx::__normal_iterator<std::string*, std::vector<std::string, std::allocator<std::string> > > const&, __gnu_cxx::__normal_iterator<std::string*, std::vector<std::string, std::allocator<std::string> > > const&)
+e44c d 699 42
+e459 28 700 72
+e481 1 700 72
+FUNC e482 4b 0 void std::_Destroy<__gnu_cxx::__normal_iterator<std::string*, std::vector<std::string, std::allocator<std::string> > >, std::allocator<std::string> >(__gnu_cxx::__normal_iterator<std::string*, std::vector<std::string, std::allocator<std::string> > >, __gnu_cxx::__normal_iterator<std::string*, std::vector<std::string, std::allocator<std::string> > >, std::allocator<std::string>)
+e482 c 171 43
+e48e 2 173 73
+e490 1a 174 73
+e4aa 21 173 73
+e4cb 2 174 73
+e4cd 1 174 73
+FUNC e4ce 35 0 bool __gnu_cxx::operator!=<dwarf2reader::SourceFileInfo*, std::vector<dwarf2reader::SourceFileInfo, std::allocator<dwarf2reader::SourceFileInfo> > >(__gnu_cxx::__normal_iterator<dwarf2reader::SourceFileInfo*, std::vector<dwarf2reader::SourceFileInfo, std::allocator<dwarf2reader::SourceFileInfo> > > const&, __gnu_cxx::__normal_iterator<dwarf2reader::SourceFileInfo*, std::vector<dwarf2reader::SourceFileInfo, std::allocator<dwarf2reader::SourceFileInfo> > > const&)
+e4ce d 699 43
+e4db 28 700 72
+e503 1 700 72
+FUNC e504 4b 0 void std::_Destroy<__gnu_cxx::__normal_iterator<dwarf2reader::SourceFileInfo*, std::vector<dwarf2reader::SourceFileInfo, std::allocator<dwarf2reader::SourceFileInfo> > >, std::allocator<dwarf2reader::SourceFileInfo> >(__gnu_cxx::__normal_iterator<dwarf2reader::SourceFileInfo*, std::vector<dwarf2reader::SourceFileInfo, std::allocator<dwarf2reader::SourceFileInfo> > >, __gnu_cxx::__normal_iterator<dwarf2reader::SourceFileInfo*, std::vector<dwarf2reader::SourceFileInfo, std::allocator<dwarf2reader::SourceFileInfo> > >, std::allocator<dwarf2reader::SourceFileInfo>)
+e504 c 171 43
+e510 2 173 73
+e512 1a 174 73
+e52c 21 173 73
+e54d 2 174 73
+e54f 1 174 73
+FUNC e550 14 0 std::_Rb_tree<unsigned long long, std::pair<unsigned long long const, std::pair<std::string, unsigned int> >, std::_Select1st<std::pair<unsigned long long const, std::pair<std::string, unsigned int> > >, std::less<unsigned long long>, std::allocator<std::pair<unsigned long long const, std::pair<std::string, unsigned int> > > >::_S_value(std::_Rb_tree_node<std::pair<unsigned long long const, std::pair<std::string, unsigned int> > > const*)
+e550 c 480 43
+e55c 8 481 40
+FUNC e564 28 0 std::_Rb_tree<unsigned long long, std::pair<unsigned long long const, std::pair<std::string, unsigned int> >, std::_Select1st<std::pair<unsigned long long const, std::pair<std::string, unsigned int> > >, std::less<unsigned long long>, std::allocator<std::pair<unsigned long long const, std::pair<std::string, unsigned int> > > >::_S_key(std::_Rb_tree_node<std::pair<unsigned long long const, std::pair<std::string, unsigned int> > > const*)
+e564 c 484 43
+e570 1c 485 40
+FUNC e58c 25 0 std::_Rb_tree_iterator<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> >::operator--()
+e58c c 194 43
+e598 14 196 40
+e5ac 5 197 40
+e5b1 1 197 40
+FUNC e5b2 25 0 std::_Rb_tree_iterator<std::pair<unsigned long long const, std::pair<std::string, unsigned int> > >::operator--()
+e5b2 c 194 43
+e5be 14 196 40
+e5d2 5 197 40
+e5d7 1 197 40
+FUNC e5d8 14 0 std::_Rb_tree<unsigned long long, std::pair<unsigned long long const, std::pair<std::string, unsigned int> >, std::_Select1st<std::pair<unsigned long long const, std::pair<std::string, unsigned int> > >, std::less<unsigned long long>, std::allocator<std::pair<unsigned long long const, std::pair<std::string, unsigned int> > > >::_S_value(std::_Rb_tree_node_base const*)
+e5d8 c 504 43
+e5e4 8 505 40
+FUNC e5ec 28 0 std::_Rb_tree<unsigned long long, std::pair<unsigned long long const, std::pair<std::string, unsigned int> >, std::_Select1st<std::pair<unsigned long long const, std::pair<std::string, unsigned int> > >, std::less<unsigned long long>, std::allocator<std::pair<unsigned long long const, std::pair<std::string, unsigned int> > > >::_S_key(std::_Rb_tree_node_base const*)
+e5ec c 508 43
+e5f8 1c 509 40
+FUNC e614 14 0 std::_Rb_tree<unsigned long long, std::pair<unsigned long long const, dwarf2reader::FunctionInfo*>, std::_Select1st<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> >, std::less<unsigned long long>, std::allocator<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> > >::_S_value(std::_Rb_tree_node<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> > const*)
+e614 c 480 43
+e620 8 481 40
+FUNC e628 28 0 std::_Rb_tree<unsigned long long, std::pair<unsigned long long const, dwarf2reader::FunctionInfo*>, std::_Select1st<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> >, std::less<unsigned long long>, std::allocator<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> > >::_S_key(std::_Rb_tree_node<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> > const*)
+e628 c 484 43
+e634 1c 485 40
+FUNC e650 14 0 std::_Rb_tree<unsigned long long, std::pair<unsigned long long const, dwarf2reader::FunctionInfo*>, std::_Select1st<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> >, std::less<unsigned long long>, std::allocator<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> > >::_S_value(std::_Rb_tree_node_base const*)
+e650 c 504 43
+e65c 8 505 40
+FUNC e664 28 0 std::_Rb_tree<unsigned long long, std::pair<unsigned long long const, dwarf2reader::FunctionInfo*>, std::_Select1st<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> >, std::less<unsigned long long>, std::allocator<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> > >::_S_key(std::_Rb_tree_node_base const*)
+e664 c 508 43
+e670 1c 509 40
+e698 7 614 72
+e69f 1 614 72
+e6ac 7 98 68
+e6b3 1 98 68
+e6c0 1d 85 68
+e6dd 5 86 68
+e6e2 10 88 68
+FUNC e6f2 2a 0 std::_Vector_base<std::string, std::allocator<std::string> >::_M_allocate(unsigned long)
+e6f2 c 116 43
+e6fe 1e 117 71
+e728 7 98 68
+e72f 1 98 68
+e73c 1d 85 68
+e759 5 86 68
+e75e 16 88 68
+FUNC e774 2a 0 std::_Vector_base<dwarf2reader::SourceFileInfo, std::allocator<dwarf2reader::SourceFileInfo> >::_M_allocate(unsigned long)
+e774 c 116 43
+e780 1e 117 71
+e7aa 3a 104 68
+e7f0 2a 654 72
+FUNC e81a 42 0 std::vector<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*, std::allocator<__gnu_cxx::_Hashtable_node<std::pair<std::string const, std::pair<char const*, unsigned long long> > >*> >::operator[](unsigned long) const
+e81a c 509 43
+e826 36 510 71
+FUNC e85c 4e 0 std::string* std::__copy_backward<false, std::random_access_iterator_tag>::copy_b<std::string*, std::string*>(std::string*, std::string*, std::string*)
+e85c c 408 61
+e868 14 411 61
+e87c 1e 412 61
+e89a b 411 61
+e8a5 5 413 61
+FUNC e8aa 2b 0 std::string* std::__copy_backward_aux<std::string*, std::string*>(std::string*, std::string*, std::string*)
+e8aa c 432 44
+e8b6 4 440 61
+e8ba 1b 443 61
+e8d5 1 443 61
+e8e4 56 482 61
+e946 4 514 61
+e94a 4 515 61
+e94e 1b 517 61
+e969 1 517 61
+FUNC e96a 69 0 void std::_Construct<std::string, std::string>(std::string*, std::string const&)
+e96a d 77 44
+e977 5c 81 73
+e9d3 1 81 73
+FUNC e9d4 54 0 dwarf2reader::SourceFileInfo* std::__copy_backward<false, std::random_access_iterator_tag>::copy_b<dwarf2reader::SourceFileInfo*, dwarf2reader::SourceFileInfo*>(dwarf2reader::SourceFileInfo*, dwarf2reader::SourceFileInfo*, dwarf2reader::SourceFileInfo*)
+e9d4 c 408 61
+e9e0 1a 411 61
+e9fa 1e 412 61
+ea18 b 411 61
+ea23 5 413 61
+FUNC ea28 2b 0 dwarf2reader::SourceFileInfo* std::__copy_backward_aux<dwarf2reader::SourceFileInfo*, dwarf2reader::SourceFileInfo*>(dwarf2reader::SourceFileInfo*, dwarf2reader::SourceFileInfo*, dwarf2reader::SourceFileInfo*)
+ea28 c 432 44
+ea34 4 440 61
+ea38 1b 443 61
+ea53 1 443 61
+ea62 56 482 61
+eac4 4 514 61
+eac8 4 515 61
+eacc 1b 517 61
+eae7 1 517 61
+FUNC eae8 69 0 void std::_Construct<dwarf2reader::SourceFileInfo, dwarf2reader::SourceFileInfo>(dwarf2reader::SourceFileInfo*, dwarf2reader::SourceFileInfo const&)
+eae8 d 77 44
+eaf5 5c 81 73
+eb51 1 81 73
+eb52 c 69 70
+eb5e 20 69 70
+eb7e c 69 70
+eb8a 2a 69 70
+ebc1 5c 104 68
+ec1d 1 104 68
+ec2a 15 523 34
+ec3f 79 525 34
+ecb8 21 529 34
+ecd9 1 529 34
+ece6 14 229 42
+ed06 7 98 68
+ed0d 1 98 68
+ed1a 1d 85 68
+ed37 5 86 68
+ed3c 10 88 68
+FUNC ed4c 29 0 std::_Rb_tree<unsigned long long, std::pair<unsigned long long const, std::pair<std::string, unsigned int> >, std::_Select1st<std::pair<unsigned long long const, std::pair<std::string, unsigned int> > >, std::less<unsigned long long>, std::allocator<std::pair<unsigned long long const, std::pair<std::string, unsigned int> > > >::_M_get_node()
+ed4c c 355 44
+ed58 1d 356 40
+ed75 1 356 40
+FUNC ed76 b6 0 std::_Rb_tree<unsigned long long, std::pair<unsigned long long const, std::pair<std::string, unsigned int> >, std::_Select1st<std::pair<unsigned long long const, std::pair<std::string, unsigned int> > >, std::less<unsigned long long>, std::allocator<std::pair<unsigned long long const, std::pair<std::string, unsigned int> > > >::_M_create_node(std::pair<unsigned long long const, std::pair<std::string, unsigned int> > const&)
+ed76 d 363 44
+ed83 e 365 40
+ed91 3c 367 40
+edcd b 373 40
+edd8 11 367 40
+ede9 b 368 40
+edf4 12 370 40
+ee06 b 371 40
+ee11 13 368 40
+ee24 8 373 40
+FUNC ee2c cd 0 std::_Rb_tree<unsigned long long, std::pair<unsigned long long const, std::pair<std::string, unsigned int> >, std::_Select1st<std::pair<unsigned long long const, std::pair<std::string, unsigned int> > >, std::less<unsigned long long>, std::allocator<std::pair<unsigned long long const, std::pair<std::string, unsigned int> > > >::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair<unsigned long long const, std::pair<std::string, unsigned int> > const&)
+ee2c d 787 44
+ee39 15 789 40
+ee4e 5d 792 40
+eeab 24 796 40
+eecf f 798 40
+eede 1b 799 40
+eef9 1 799 40
+FUNC eefa 1ef 0 std::_Rb_tree<unsigned long long, std::pair<unsigned long long const, std::pair<std::string, unsigned int> >, std::_Select1st<std::pair<unsigned long long const, std::pair<std::string, unsigned int> > >, std::less<unsigned long long>, std::allocator<std::pair<unsigned long long const, std::pair<std::string, unsigned int> > > >::insert_unique(std::pair<unsigned long long const, std::pair<std::string, unsigned int> > const&)
+eefa d 869 44
+ef07 e 871 40
+ef15 e 872 40
+ef23 4 873 40
+ef27 2 874 40
+ef29 6 876 40
+ef2f 35 877 40
+ef64 2a 878 40
+ef8e 6 874 40
+ef94 12 880 40
+efa6 a 881 40
+efb0 24 882 40
+efd4 51 883 40
+f025 b 885 40
+f030 36 886 40
+f066 4e 887 40
+f0b4 35 888 40
+f0e9 1 888 40
+FUNC f0ea 20 0 std::map<unsigned long long, std::pair<std::string, unsigned int>, std::less<unsigned long long>, std::allocator<std::pair<unsigned long long const, std::pair<std::string, unsigned int> > > >::insert(std::pair<unsigned long long const, std::pair<std::string, unsigned int> > const&)
+f0ea c 359 45
+f0f6 14 360 45
+f116 7 98 68
+f11d 1 98 68
+f12a 1d 85 68
+f147 5 86 68
+f14c 1d 88 68
+f169 1 88 68
+FUNC f16a 29 0 std::_Rb_tree<unsigned long long, std::pair<unsigned long long const, dwarf2reader::FunctionInfo*>, std::_Select1st<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> >, std::less<unsigned long long>, std::allocator<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> > >::_M_get_node()
+f16a c 355 45
+f176 1d 356 40
+f193 1 356 40
+FUNC f194 5f 0 std::_Rb_tree<unsigned long long, std::pair<unsigned long long const, dwarf2reader::FunctionInfo*>, std::_Select1st<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> >, std::less<unsigned long long>, std::allocator<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> > >::_M_create_node(std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> const&)
+f194 d 363 45
+f1a1 e 365 40
+f1af 3c 367 40
+f1eb 8 373 40
+f1f3 1 373 40
+FUNC f1f4 cd 0 std::_Rb_tree<unsigned long long, std::pair<unsigned long long const, dwarf2reader::FunctionInfo*>, std::_Select1st<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> >, std::less<unsigned long long>, std::allocator<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> > >::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> const&)
+f1f4 d 787 45
+f201 15 789 40
+f216 5d 792 40
+f273 24 796 40
+f297 f 798 40
+f2a6 1b 799 40
+f2c1 1 799 40
+FUNC f2c2 1ef 0 std::_Rb_tree<unsigned long long, std::pair<unsigned long long const, dwarf2reader::FunctionInfo*>, std::_Select1st<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> >, std::less<unsigned long long>, std::allocator<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> > >::insert_unique(std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> const&)
+f2c2 d 869 45
+f2cf e 871 40
+f2dd e 872 40
+f2eb 4 873 40
+f2ef 2 874 40
+f2f1 6 876 40
+f2f7 35 877 40
+f32c 2a 878 40
+f356 6 874 40
+f35c 12 880 40
+f36e a 881 40
+f378 24 882 40
+f39c 51 883 40
+f3ed b 885 40
+f3f8 36 886 40
+f42e 4e 887 40
+f47c 35 888 40
+f4b1 1 888 40
+FUNC f4b2 20 0 std::map<unsigned long long, dwarf2reader::FunctionInfo*, std::less<unsigned long long>, std::allocator<std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> > >::insert(std::pair<unsigned long long const, dwarf2reader::FunctionInfo*> const&)
+f4b2 c 359 45
+f4be 14 360 45
+FUNC f4d2 19 0 void std::_Destroy<std::string>(std::string*)
+f4d2 c 106 45
+f4de d 107 73
+f4eb 1 107 73
+FUNC f4ec 44 0 void std::__destroy_aux<__gnu_cxx::__normal_iterator<std::string*, std::vector<std::string, std::allocator<std::string> > > >(__gnu_cxx::__normal_iterator<std::string*, std::vector<std::string, std::allocator<std::string> > >, __gnu_cxx::__normal_iterator<std::string*, std::vector<std::string, std::allocator<std::string> > >, __false_type)
+f4ec c 119 45
+f4f8 2 121 73
+f4fa 13 122 73
+f50d 21 121 73
+f52e 2 122 73
+FUNC f530 28 0 void std::_Destroy<__gnu_cxx::__normal_iterator<std::string*, std::vector<std::string, std::allocator<std::string> > > >(__gnu_cxx::__normal_iterator<std::string*, std::vector<std::string, std::allocator<std::string> > >, __gnu_cxx::__normal_iterator<std::string*, std::vector<std::string, std::allocator<std::string> > >)
+f530 c 148 45
+f53c 1c 155 73
+f565 6 82 79
+f56b 2 85 79
+f56d 24 86 79
+f591 2c 85 79
+f5bd b 87 79
+f5c8 b 89 79
+f5d3 12 91 79
+f5e5 b 92 79
+f5f0 13 89 79
+f603 9 92 79
+f618 23 113 79
+f63b 1 113 79
+f648 1b 254 79
+f663 1 254 79
+FUNC f664 430 0 std::vector<std::string, std::allocator<std::string> >::_M_insert_aux(__gnu_cxx::__normal_iterator<std::string*, std::vector<std::string, std::allocator<std::string> > >, std::string const&)
+f664 14 249 47
+f678 14 251 78
+f68c 22 253 78
+f6ae f 255 78
+f6bd 12 256 78
+f6cf 55 257 78
+f724 4b 260 78
+f76f e 264 78
+f77d 15 265 78
+f792 e 266 78
+f7a0 1d 271 78
+f7bd 8 272 78
+f7c5 e 273 78
+f7d3 27 275 78
+f7fa 6 276 78
+f800 55 279 78
+f855 25 284 78
+f87a b 285 78
+f885 4f 286 78
+f8d4 3 284 78
+f8d7 13 279 78
+f8ea e 286 78
+f8f8 4d 298 78
+f945 30 299 78
+f975 12 302 78
+f987 13 303 78
+f99a 23 304 78
+f9bd 3 298 78
+f9c0 13 286 78
+f9d3 b 292 78
+f9de 39 294 78
+fa17 23 295 78
+fa3a 8 296 78
+fa42 16 294 78
+fa58 3 296 78
+fa5b 19 292 78
+fa74 19 298 78
+fa8d 7 304 78
+FUNC fa94 70 0 std::vector<std::string, std::allocator<std::string> >::push_back(std::string const&)
+fa94 c 602 47
+faa0 10 604 71
+fab0 1e 606 71
+face 11 607 71
+fadf 25 610 71
+FUNC fb04 19 0 void std::_Destroy<dwarf2reader::SourceFileInfo>(dwarf2reader::SourceFileInfo*)
+fb04 c 106 47
+fb10 d 107 73
+fb1d 1 107 73
+FUNC fb1e 44 0 void std::__destroy_aux<__gnu_cxx::__normal_iterator<dwarf2reader::SourceFileInfo*, std::vector<dwarf2reader::SourceFileInfo, std::allocator<dwarf2reader::SourceFileInfo> > > >(__gnu_cxx::__normal_iterator<dwarf2reader::SourceFileInfo*, std::vector<dwarf2reader::SourceFileInfo, std::allocator<dwarf2reader::SourceFileInfo> > >, __gnu_cxx::__normal_iterator<dwarf2reader::SourceFileInfo*, std::vector<dwarf2reader::SourceFileInfo, std::allocator<dwarf2reader::SourceFileInfo> > >, __false_type)
+fb1e c 119 47
+fb2a 2 121 73
+fb2c 13 122 73
+fb3f 21 121 73
+fb60 2 122 73
+FUNC fb62 28 0 void std::_Destroy<__gnu_cxx::__normal_iterator<dwarf2reader::SourceFileInfo*, std::vector<dwarf2reader::SourceFileInfo, std::allocator<dwarf2reader::SourceFileInfo> > > >(__gnu_cxx::__normal_iterator<dwarf2reader::SourceFileInfo*, std::vector<dwarf2reader::SourceFileInfo, std::allocator<dwarf2reader::SourceFileInfo> > >, __gnu_cxx::__normal_iterator<dwarf2reader::SourceFileInfo*, std::vector<dwarf2reader::SourceFileInfo, std::allocator<dwarf2reader::SourceFileInfo> > >)
+fb62 c 148 47
+fb6e 1c 155 73
+fb97 6 82 79
+fb9d 2 85 79
+fb9f 24 86 79
+fbc3 2c 85 79
+fbef b 87 79
+fbfa b 89 79
+fc05 12 91 79
+fc17 b 92 79
+fc22 13 89 79
+fc35 9 92 79
+fc4a 23 113 79
+fc6d 1 113 79
+fc7a 1b 254 79
+fc95 1 254 79
+FUNC fc96 43d 0 std::vector<dwarf2reader::SourceFileInfo, std::allocator<dwarf2reader::SourceFileInfo> >::_M_insert_aux(__gnu_cxx::__normal_iterator<dwarf2reader::SourceFileInfo*, std::vector<dwarf2reader::SourceFileInfo, std::allocator<dwarf2reader::SourceFileInfo> > >, dwarf2reader::SourceFileInfo const&)
+fc96 14 249 47
+fcaa 14 251 78
+fcbe 22 253 78
+fce0 f 255 78
+fcef 12 256 78
+fd01 55 257 78
+fd56 4b 260 78
+fda1 e 264 78
+fdaf 15 265 78
+fdc4 e 266 78
+fdd2 1d 271 78
+fdef 8 272 78
+fdf7 e 273 78
+fe05 27 275 78
+fe2c 6 276 78
+fe32 55 279 78
+fe87 25 284 78
+feac b 285 78
+feb7 4f 286 78
+ff06 3 284 78
+ff09 13 279 78
+ff1c e 286 78
+ff2a 4d 298 78
+ff77 36 299 78
+ffad 12 302 78
+ffbf 13 303 78
+ffd2 2a 304 78
+fffc 3 298 78
+ffff 13 286 78
+10012 b 292 78
+1001d 39 294 78
+10056 23 295 78
+10079 8 296 78
+10081 16 294 78
+10097 3 296 78
+1009a 19 292 78
+100b3 19 298 78
+100cc 7 304 78
+100d3 1 304 78
+FUNC 100d4 70 0 std::vector<dwarf2reader::SourceFileInfo, std::allocator<dwarf2reader::SourceFileInfo> >::push_back(dwarf2reader::SourceFileInfo const&)
+100d4 c 602 47
+100e0 10 604 71
+100f0 1e 606 71
+1010e 11 607 71
+1011f 25 610 71
+FUNC 10144 16c 0 Start
+10144 17 610 71
+1015b 40 49 48
+1019b 6 51 48
+101a1 3f 53 48
+101e0 7 54 48
+101e7 5 55 48
+101ec 2a 58 48
+10216 61 61 48
+10277 7 62 48
+1027e 2 63 48
+10280 29 66 48
+102a9 7 67 48
+FUNC 102b0 108 0 Usage
+102b0 19 70 48
+102c9 30 71 48
+102f9 29 73 48
+10322 30 74 48
+10352 30 75 48
+10382 30 76 48
+103b2 6 77 48
+FUNC 103b8 3af 0 SetupOptions
+103b8 21 80 48
+103d9 8 82 48
+103e1 6 85 48
+103e7 10 86 48
+103f7 2e 88 48
+10425 2f 94 48
+10454 2a 91 48
+1047e 23 95 48
+104a1 3e 97 48
+104df 11 98 48
+104f0 7c 99 48
+1056c c 100 48
+10578 5 99 48
+1057d 3e 101 48
+105bb 11 102 48
+105cc 3e 103 48
+1060a 11 104 48
+1061b 37 106 48
+10652 b 107 48
+1065d c 108 48
+10669 b 113 48
+10674 c 114 48
+10680 14 119 48
+10694 30 120 48
+106c4 b 121 48
+106cf c 122 48
+106db 81 127 48
+1075c b 128 48
+10767 1 128 48
+FUNC 10768 a7 0 main
+10768 13 131 48
+1077b 37 132 48
+107b2 1e 135 48
+107d0 e 136 48
+107de 8 137 48
+107e6 17 139 48
+107fd c 141 48
+10809 6 142 48
+1080f 1 142 48
+10810 c 47 49
+1081c 1a 48 49
+10836 2 49 49
+10838 c 47 49
+10844 1a 48 49
+1085e 2 49 49
+FUNC 10860 cb 0 google_breakpad::FileID::FileIdentifier(unsigned char*)
+10860 f 51 49
+1086f 16 52 49
+10885 6 53 49
+1088b f 54 49
+1089a b 57 49
+108a5 7 62 49
+108ac 2 63 49
+108ae 1c 64 49
+108ca 32 63 49
+108fc b 67 49
+10907 12 68 49
+10919 10 70 49
+10929 2 71 49
+1092b 1 71 49
+FUNC 1092c f2 0 google_breakpad::FileID::MachoIdentifier(int, unsigned char*)
+1092c 10 73 49
+1093c 15 74 49
+10951 20 76 49
+10971 f 77 49
+10980 20 79 49
+109a0 c 80 49
+109ac 69 82 49
+10a15 9 83 49
+FUNC 10a1e fb 0 google_breakpad::FileID::ConvertIdentifierToString(unsigned char const*, char*, int)
+10a1e c 87 49
+10a2a 7 88 49
+10a31 c 89 49
+10a3d 15 90 49
+10a52 12 91 49
+10a64 18 93 49
+10a7c e 94 49
+10a8a 2b 96 49
+10ab5 2b 97 49
+10ae0 17 89 49
+10af7 20 101 49
+10b17 2 102 49
+10b19 1 102 49
+FUNC 10b1a 13 0 NXHostByteOrder
+10b1a c 144 56
+10b26 5 147 56
+10b2b 2 153 56
+10b2d 1 153 56
+10b2e c 56 51
+10b3a 1a 57 51
+10b54 1e 58 51
+10b72 2 59 51
+10b74 c 56 51
+10b80 1a 57 51
+10b9a 1e 58 51
+10bb8 2 59 51
+10bba c 61 51
+10bc6 e 62 51
+10bd4 11 63 51
+10be5 2 64 51
+10be7 1 64 51
+10be8 c 61 51
+10bf4 e 62 51
+10c02 11 63 51
+10c13 2 64 51
+10c15 1 64 51
+FUNC 10c16 477 0 MacFileUtilities::MachoID::UpdateCRC(unsigned char*, unsigned long)
+10c16 c 74 51
+10c22 11 82 51
+10c33 14 83 51
+10c47 5 86 51
+10c4c 9 87 51
+10c55 7 88 51
+10c5c 18b 90 51
+10de7 6 91 51
+10ded 14 89 51
+10e01 23 93 51
+10e24 23 94 51
+10e47 d 86 51
+10e54 f 98 51
+10e63 6 100 51
+10e69 18b 101 51
+10ff4 6 102 51
+10ffa c 99 51
+11006 13 105 51
+11019 8 106 51
+11021 10 104 51
+11031 23 108 51
+11054 23 109 51
+11077 14 110 51
+1108b 2 112 51
+1108d 1 112 51
+FUNC 1108e 2c 0 MacFileUtilities::MachoID::UpdateMD5(unsigned char*, unsigned long)
+1108e c 114 51
+1109a 1e 115 51
+110b8 2 116 51
+FUNC 110ba 2c 0 MacFileUtilities::MachoID::UpdateSHA1(unsigned char*, unsigned long)
+110ba c 118 51
+110c6 1e 119 51
+110e4 2 120 51
+FUNC 110e6 121 0 MacFileUtilities::MachoID::Update(MacFileUtilities::MachoWalker*, unsigned long, unsigned long)
+110e6 f 122 51
+110f5 1b 123 51
+11110 e 129 51
+1111e 5 130 51
+11123 9 131 51
+1112c 7 132 51
+11133 a 133 51
+1113d 6 135 51
+11143 7 136 51
+1114a 35 139 51
+1117f 6c 142 51
+111eb 10 143 51
+111fb a 130 51
+11205 2 145 51
+11207 1 145 51
+FUNC 11208 cf 0 MacFileUtilities::MachoID::UUIDCommand(int, unsigned char*)
+11208 14 147 51
+1121c 25 149 51
+11241 7 151 51
+11248 19 152 51
+11261 9 153 51
+1126a 8 157 51
+11272 1f 158 51
+11291 9 159 51
+1129a 36 162 51
+112d0 7 163 51
+112d7 1 163 51
+FUNC 112d8 224 0 MacFileUtilities::MachoID::IDCommand(int, unsigned char*)
+112d8 15 165 51
+112ed 25 167 51
+11312 7 169 51
+11319 19 170 51
+11332 c 171 51
+1133e c 175 51
+1134a 6 180 51
+11350 7 181 51
+11357 9 182 51
+11360 9 183 51
+11369 28 185 51
+11391 33 186 51
+113c4 1e 185 51
+113e2 10 189 51
+113f2 10 190 51
+11402 10 191 51
+11412 d 192 51
+1141f 10 193 51
+1142f 10 194 51
+1143f 10 195 51
+1144f d 196 51
+1145c 17 197 51
+11473 17 198 51
+1148a 17 199 51
+114a1 14 200 51
+114b5 9 202 51
+114be 36 205 51
+114f4 8 206 51
+FUNC 114fc d1 0 MacFileUtilities::MachoID::Adler32(int)
+114fc 14 208 51
+11510 25 209 51
+11535 27 210 51
+1155c d 211 51
+11569 19 213 51
+11582 9 214 51
+1158b 3b 216 51
+115c6 7 217 51
+115cd 1 217 51
+FUNC 115ce f8 0 MacFileUtilities::MachoID::MD5(int, unsigned char*)
+115ce 14 219 51
+115e2 25 220 51
+11607 27 221 51
+1162e 19 223 51
+11647 19 224 51
+11660 9 225 51
+11669 17 227 51
+11680 9 228 51
+11689 36 231 51
+116bf 7 232 51
+FUNC 116c6 f8 0 MacFileUtilities::MachoID::SHA1(int, unsigned char*)
+116c6 14 234 51
+116da 25 235 51
+116ff 27 236 51
+11726 19 238 51
+1173f 19 239 51
+11758 9 240 51
+11761 17 242 51
+11778 9 243 51
+11781 36 246 51
+117b7 7 247 51
+FUNC 117be 378 0 MacFileUtilities::MachoID::WalkerCB(MacFileUtilities::MachoWalker*, load_command*, long long, bool, void*)
+117be 2b 251 51
+117e9 6 252 51
+117ef e 254 51
+117fd 38 257 51
+11835 f 258 51
+11844 9 260 51
+1184d 17 261 51
+11864 20 266 51
+11884 f 267 51
+11893 d 271 51
+118a0 c 273 51
+118ac 38 274 51
+118e4 f 275 51
+118f3 9 277 51
+118fc 1f 278 51
+1191b 14 282 51
+1192f 2b 283 51
+1195a d 285 51
+11967 19 273 51
+11980 e 287 51
+1198e 38 290 51
+119c6 f 291 51
+119d5 9 293 51
+119de 17 294 51
+119f5 20 299 51
+11a15 f 300 51
+11a24 d 304 51
+11a31 c 306 51
+11a3d 38 307 51
+11a75 f 308 51
+11a84 9 310 51
+11a8d 1f 311 51
+11aac 1a 315 51
+11ac6 39 316 51
+11aff d 318 51
+11b0c 11 306 51
+11b1d 10 323 51
+11b2d 9 324 51
+FUNC 11b36 95 0 MacFileUtilities::MachoID::UUIDWalkerCB(MacFileUtilities::MachoWalker*, load_command*, long long, bool, void*)
+11b36 1e 328 51
+11b54 a 329 51
+11b5e 6 331 51
+11b64 2f 333 51
+11b93 9 335 51
+11b9c 6 337 51
+11ba2 14 338 51
+11bb6 9 340 51
+11bbf a 344 51
+11bc9 2 345 51
+11bcb 1 345 51
+FUNC 11bcc 95 0 MacFileUtilities::MachoID::IDWalkerCB(MacFileUtilities::MachoWalker*, load_command*, long long, bool, void*)
+11bcc 1e 349 51
+11bea a 350 51
+11bf4 6 351 51
+11bfa 2f 353 51
+11c29 9 354 51
+11c32 6 356 51
+11c38 14 357 51
+11c4c 9 359 51
+11c55 a 363 51
+11c5f 2 364 51
+11c61 1 364 51
+FUNC 11c62 1c 0 _OSSwapInt32
+11c62 f 53 55
+11c71 8 55 55
+11c79 3 56 55
+11c7c 2 57 55
+FUNC 11c7e 19 0 NXSwapInt
+11c7e f 52 56
+11c8d 8 54 56
+11c95 2 55 56
+11c97 1 55 56
+FUNC 11c98 13 0 NXHostByteOrder
+11c98 c 144 56
+11ca4 5 147 56
+11ca9 2 153 56
+11cab 1 153 56
+11cac c 52 54
+11cb8 12 54 54
+11cca 1a 55 54
+11ce4 2 56 54
+11ce6 c 52 54
+11cf2 12 54 54
+11d04 1a 55 54
+11d1e 2 56 54
+11d20 c 58 54
+11d2c a 59 54
+11d36 d 60 54
+11d43 2 61 54
+11d45 1 61 54
+11d46 c 58 54
+11d52 a 59 54
+11d5c d 60 54
+11d69 2 61 54
+11d6b 1 61 54
+FUNC 11d6c 37 0 MacFileUtilities::MachoWalker::ValidateCPUType(int)
+11d6c c 63 54
+11d78 6 66 54
+11d7e 8 67 54
+11d86 6 68 54
+11d8c b 69 54
+11d97 7 74 54
+11d9e 3 80 54
+11da1 2 81 54
+11da3 1 81 54
+FUNC 11da4 50 0 MacFileUtilities::MachoWalker::ReadBytes(void*, unsigned long, long long)
+11da4 18 96 54
+11dbc 36 97 54
+11df2 2 98 54
+FUNC 11df4 73 0 MacFileUtilities::MachoWalker::CurrentHeader(mach_header_64*, long long*)
+11df4 c 100 54
+11e00 a 101 54
+11e0a 37 102 54
+11e41 11 103 54
+11e52 9 104 54
+11e5b a 107 54
+11e65 2 108 54
+11e67 1 108 54
+FUNC 11e68 2a6 0 MacFileUtilities::MachoWalker::FindHeader(int, long long&)
+11e68 c 110 54
+11e74 15 111 54
+11e89 31 114 54
+11eba c 115 54
+11ec6 10 117 54
+11ed6 4 120 54
+11eda 14 121 54
+11eee 4 122 54
+11ef2 11 129 54
+11f03 28 124 54
+11f2b c 126 54
+11f37 31 133 54
+11f68 c 134 54
+11f74 14 136 54
+11f88 b 137 54
+11f93 8 139 54
+11f9b c 140 54
+11fa7 10 142 54
+11fb7 c 143 54
+11fc3 10 146 54
+11fd3 31 148 54
+12004 c 149 54
+12010 f 151 54
+1201f 14 152 54
+12033 16 154 54
+12049 c 158 54
+12055 31 159 54
+12086 9 160 54
+1208f f 162 54
+1209e 1c 163 54
+120ba 8 165 54
+120c2 10 166 54
+120d2 9 167 54
+120db 16 170 54
+120f1 11 158 54
+12102 a 174 54
+1210c 2 175 54
+FUNC 1210e 109 0 MacFileUtilities::MachoWalker::WalkHeaderCore(long long, unsigned int, bool)
+1210e 1e 224 54
+1212c c 225 54
+12138 2f 227 54
+12167 c 228 54
+12173 6 230 54
+12179 14 231 54
+1218d 5b 234 54
+121e8 12 237 54
+121fa 11 225 54
+1220b a 240 54
+12215 2 241 54
+12217 1 241 54
+FUNC 12218 10e 0 MacFileUtilities::MachoWalker::WalkHeader64AtOffset(long long)
+12218 18 203 54
+12230 2f 205 54
+1225f c 206 54
+1226b e 208 54
+12279 6 209 54
+1227f 14 210 54
+12293 9 212 54
+1229c a 213 54
+122a6 f 214 54
+122b5 15 215 54
+122ca 2b 216 54
+122f5 a 217 54
+122ff a 218 54
+12309 11 219 54
+1231a a 220 54
+12324 2 221 54
+FUNC 12326 143 0 MacFileUtilities::MachoWalker::WalkHeaderAtOffset(long long)
+12326 18 177 54
+1233e 2f 179 54
+1236d c 180 54
+12379 e 182 54
+12387 6 183 54
+1238d 14 184 54
+123a1 2e 189 54
+123cf 7 190 54
+123d6 9 192 54
+123df a 193 54
+123e9 f 194 54
+123f8 15 195 54
+1240d 2b 196 54
+12438 a 197 54
+12442 a 198 54
+1244c 11 199 54
+1245d a 200 54
+12467 2 201 54
+12469 1 201 54
+FUNC 1246a 99 0 MacFileUtilities::MachoWalker::WalkHeader(int)
+1246a c 83 54
+12476 15 84 54
+1248b 1d 86 54
+124a8 d 87 54
+124b5 21 88 54
+124d6 21 90 54
+124f7 a 93 54
+12501 2 94 54
+12503 1 94 54
+FUNC 12504 1c 0 _OSSwapInt32
+12504 f 53 55
+12513 8 55 55
+1251b 3 56 55
+1251e 2 57 55
+FUNC 12520 2b 0 _OSSwapInt64
+12520 12 64 55
+12532 11 69 55
+12543 6 70 55
+12549 2 71 55
+1254b 1 71 55
+FUNC 1254c 19 0 NXSwapLong
+1254c f 61 56
+1255b 8 63 56
+12563 2 64 56
+12565 1 64 56
+FUNC 12566 1f 0 NXSwapLongLong
+12566 12 70 56
+12578 b 72 56
+12583 2 73 56
+12585 1 73 56
+FUNC 12586 32 0 breakpad_swap_uuid_command(breakpad_uuid_command*, NXByteOrder)
+12586 c 37 57
+12592 11 39 57
+125a3 13 40 57
+125b6 2 41 57
+FUNC 125b8 da 0 breakpad_swap_segment_command_64(segment_command_64*, NXByteOrder)
+125b8 c 44 57
+125c4 11 46 57
+125d5 13 47 57
+125e8 17 49 57
+125ff 17 50 57
+12616 17 51 57
+1262d 17 52 57
+12644 13 54 57
+12657 13 55 57
+1266a 13 56 57
+1267d 13 57 57
+12690 2 58 57
+FUNC 12692 a4 0 breakpad_swap_mach_header_64(mach_header_64*, NXByteOrder)
+12692 c 61 57
+1269e 11 63 57
+126af 13 64 57
+126c2 13 65 57
+126d5 13 66 57
+126e8 13 67 57
+126fb 13 68 57
+1270e 13 69 57
+12721 13 70 57
+12734 2 71 57
+FUNC 12736 1d1 0 breakpad_swap_section_64(section_64*, unsigned int, NXByteOrder)
+12736 d 75 57
+12743 c 77 57
+1274f 33 78 57
+12782 33 79 57
+127b5 2d 81 57
+127e2 2d 82 57
+1280f 2d 83 57
+1283c 2d 84 57
+12869 2d 85 57
+12896 2d 86 57
+128c3 2d 87 57
+128f0 11 77 57
+12901 6 89 57
+12907 1 89 57
+12908 12 9 58
+1291a 4f 11 58
+12969 2 12 58
+1296b 1 12 58
+1296c 12 9 58
+1297e 4f 11 58
+129cd 2 12 58
+129cf 1 12 58
+129d0 13 14 58
+129e3 2a 14 58
+12a0d 1 14 58
+12a0e 13 14 58
+12a21 2a 14 58
+12a4b 1 14 58
+12a4c 13 14 58
+12a5f 2a 14 58
+12a89 1 14 58
+FUNC 12a8a bb 0 dwarf2reader::ByteReader::SetOffsetSize(unsigned char)
+12a8a 19 16 58
+12aa3 a 17 58
+12aad 48 18 58
+12af5 6 19 58
+12afb 23 20 58
+12b1e 21 22 58
+12b3f 6 24 58
+12b45 1 24 58
+FUNC 12b46 bb 0 dwarf2reader::ByteReader::SetAddressSize(unsigned char)
+12b46 19 26 58
+12b5f a 27 58
+12b69 48 28 58
+12bb1 6 29 58
+12bb7 23 30 58
+12bda 21 32 58
+12bfb 6 34 58
+12c01 1 34 58
+FUNC 12c02 a2 0 dwarf2reader::ByteReader::ReadFourBytes(char const*) const
+12c02 c 24 59
+12c0e c 25 64
+12c1a d 26 64
+12c27 f 27 64
+12c36 f 28 64
+12c45 b 29 64
+12c50 27 30 64
+12c77 2b 32 64
+12ca2 2 34 64
+FUNC 12ca4 40e 0 dwarf2reader::ByteReader::ReadEightBytes(char const*) const
+12ca4 11 36 59
+12cb5 1a 37 64
+12ccf 1b 38 64
+12cea 1d 39 64
+12d07 1d 40 64
+12d24 1d 41 64
+12d41 1d 42 64
+12d5e 1d 43 64
+12d7b 1d 44 64
+12d98 f 45 64
+12da7 18f 47 64
+12f36 172 50 64
+130a8 a 52 64
+130b2 2 52 64
+FUNC 130b4 a6 0 ReadInitialLength
+130b4 15 29 60
+130c9 18 30 60
+130e1 6 31 60
+130e7 d 35 60
+130f4 13 36 60
+13107 9 37 60
+13110 1a 38 60
+1312a 13 40 60
+1313d 9 41 60
+13146 12 43 60
+13158 2 44 60
+1315a 1f 47 60
+13179 65 50 60
+131de 1f 47 60
+131fd 65 50 60
+FUNC 13262 393 0 dwarf2reader::CompilationUnit::SkipAttribute(char const*, dwarf2reader::DwarfForm)
+13262 14 133 60
+13276 82 136 60
+132f8 1f 139 60
+13317 a 140 60
+13321 21 141 60
+13342 c 147 60
+1334e e 151 60
+1335c e 155 60
+1336a e 159 60
+13378 27 162 60
+1339f 1c 166 60
+133bb 10 167 60
+133cb 1c 171 60
+133e7 10 172 60
+133f7 1e 175 60
+13415 56 180 60
+1346b d 181 60
+13478 1e 182 60
+13496 11 183 60
+134a7 1e 184 60
+134c5 24 189 60
+134e9 26 192 60
+1350f 23 195 60
+13532 22 198 60
+13554 15 199 60
+13569 1b 203 60
+13584 30 206 60
+135b4 30 208 60
+135e4 a 209 60
+135ee 7 210 60
+135f5 1 210 60
+FUNC 135f6 29b 0 dwarf2reader::CompilationUnit::ReadHeader()
+135f6 14 217 60
+1360a 9 218 60
+13613 4e 221 60
+13661 17 223 60
+13678 a 224 60
+13682 f 225 60
+13691 4e 227 60
+136df 1e 228 60
+136fd 6 229 60
+13703 5e 231 60
+13761 1e 232 60
+1377f 18 233 60
+13797 4c 235 60
+137e3 1d 236 60
+13800 1c 237 60
+1381c 5 238 60
+13821 9 240 60
+1382a 60 245 60
+1388a 7 247 60
+13891 1 247 60
+FUNC 13892 a57 0 dwarf2reader::CompilationUnit::ProcessAttribute(unsigned long long, char const*, dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm)
+13892 24 299 60
+138b6 8a 302 60
+13940 1f 307 60
+1395f a 308 60
+13969 36 309 60
+1399f 5b 316 60
+139fa c 317 60
+13a06 5b 322 60
+13a61 e 323 60
+13a6f 55 328 60
+13ac4 e 329 60
+13ad2 55 334 60
+13b27 e 335 60
+13b35 6 338 60
+13b3b 9a 340 60
+13bd5 33 341 60
+13c08 25 340 60
+13c2d 5c 348 60
+13c89 10 349 60
+13c99 5c 354 60
+13cf5 10 355 60
+13d05 55 359 60
+13d5a 1e 360 60
+13d78 56 365 60
+13dce d 366 60
+13ddb 55 368 60
+13e30 1e 369 60
+13e4e 11 370 60
+13e5f 55 372 60
+13eb4 1e 373 60
+13ed2 29 378 60
+13efb 4a 380 60
+13f45 f 381 60
+13f54 29 385 60
+13f7d 4c 387 60
+13fc9 11 388 60
+13fda 1b 392 60
+13ff5 4c 394 60
+14041 11 395 60
+14052 22 399 60
+14074 4e 401 60
+140c2 15 402 60
+140d7 3c 406 60
+14113 1b 408 60
+1412e 54 409 60
+14182 f 411 60
+14191 9a 413 60
+1422b 24 414 60
+1424f 25 413 60
+14274 30 418 60
+142a4 30 420 60
+142d4 a 421 60
+142de b 422 60
+142e9 1 422 60
+142ea 1f 489 60
+14309 3a 491 60
+14343 a 492 60
+1434d 6 493 60
+14353 1 493 60
+14354 1f 489 60
+14373 3a 491 60
+143ad a 492 60
+143b7 6 493 60
+143bd 1 493 60
+FUNC 143be b5 0 dwarf2reader::CompilationUnit::ProcessDIE(unsigned long long, char const*, dwarf2reader::CompilationUnit::Abbrev const&)
+143be 19 426 60
+143d7 13 427 60
+143ea 46 430 60
+14430 3a 427 60
+1446a 3 432 60
+1446d 6 433 60
+14473 1 433 60
+FUNC 14474 85 0 dwarf2reader::CompilationUnit::SkipDIE(char const*, dwarf2reader::CompilationUnit::Abbrev const&)
+14474 c 122 60
+14480 13 123 60
+14493 27 126 60
+144ba 3a 123 60
+144f4 3 128 60
+144f7 2 129 60
+144f9 1 129 60
+FUNC 144fa be4 0 dwarf2reader::LineInfo::ProcessOneOpcode(dwarf2reader::ByteReader*, dwarf2reader::LineInfoHandler*, dwarf2reader::LineInfoHeader const&, char const*, dwarf2reader::LineStateMachine*, unsigned long*, unsigned long, bool*)
+144fa 18 593 60
+14512 a 594 60
+1451c 18 596 60
+14534 8 597 60
+1453c 5 598 60
+14541 19 602 60
+1455a f 603 60
+14569 50 605 60
+145b9 46 607 60
+145ff e0 610 60
+146df 6 612 60
+146e5 22 615 60
+14707 22 616 60
+14729 7 617 60
+14730 b 618 60
+1473b f 619 60
+1474a 5a 623 60
+147a4 7 625 60
+147ab b 626 60
+147b6 f 627 60
+147c5 28 631 60
+147ed e 632 60
+147fb 144 635 60
+1493f 6 637 60
+14945 9e 640 60
+149e3 5 642 60
+149e8 22 644 60
+14a0a e 645 60
+14a18 1c 646 60
+14a34 2b 652 60
+14a5f b 653 60
+14a6a 22 658 60
+14a8c e 659 60
+14a9a 8 660 60
+14aa2 5 662 60
+14aa7 22 664 60
+14ac9 e 665 60
+14ad7 9 666 60
+14ae0 5 668 60
+14ae5 12 670 60
+14af7 5 672 60
+14afc 7 674 60
+14b03 5 676 60
+14b08 16 678 60
+14b1e 9 679 60
+14b27 d9 682 60
+14c00 6 684 60
+14c06 1f 687 60
+14c25 5 689 60
+14c2a 40 693 60
+14c6a d6 696 60
+14d40 6 698 60
+14d46 1c 701 60
+14d62 5 703 60
+14d67 1f 706 60
+14d86 d 707 60
+14d93 13 708 60
+14da6 26 710 60
+14dcc 5 711 60
+14dd1 50 713 60
+14e21 7 715 60
+14e28 b 716 60
+14e33 f 717 60
+14e42 18 725 60
+14e5a f 726 60
+14e69 5 728 60
+14e6e 6 730 60
+14e74 28 732 60
+14e9c d 733 60
+14ea9 22 735 60
+14ecb e 736 60
+14ed9 22 739 60
+14efb e 740 60
+14f09 22 743 60
+14f2b e 744 60
+14f39 a 746 60
+14f43 fd 748 60
+15040 a 758 60
+1504a 9 759 60
+15053 1c 761 60
+1506f d 762 60
+1507c e 763 60
+1508a 2e 759 60
+150b8 b 769 60
+150c3 10 770 60
+150d3 b 771 60
+FUNC 150de 14b 0 dwarf2reader::LineInfo::ReadLines()
+150de e 773 60
+150ec 9 778 60
+150f5 17 782 60
+1510c 8 783 60
+15114 6 785 60
+1511a 9 787 60
+15123 5 788 60
+15128 19 789 60
+15141 5 790 60
+15146 4a 793 60
+15190 6 794 60
+15196 4a 796 60
+151e0 a 797 60
+151ea f 790 60
+151f9 15 788 60
+1520e 14 801 60
+15222 7 802 60
+15229 1 802 60
+FUNC 1522a 4fd 0 dwarf2reader::CompilationUnit::ReadAbbrevs()
+1522a 18 60 60
+15242 e 61 60
+15250 58 65 60
+152a8 38 66 60
+152e0 44 65 60
+15324 2a 66 60
+1534e 45 68 60
+15393 16 69 60
+153a9 1d 75 60
+153c6 6 76 60
+153cc 40 77 60
+1540c b 80 60
+15417 1f 82 60
+15436 e 84 60
+15444 6 77 60
+1544a 1f 68 60
+15469 a 84 60
+15473 1d 79 60
+15490 6 86 60
+15496 a 87 60
+154a0 3d 89 60
+154dd 1f 90 60
+154fc a 91 60
+15506 6 92 60
+1550c 3d 94 60
+15549 1d 95 60
+15566 5 96 60
+1556b 3d 98 60
+155a8 1f 101 60
+155c7 a 102 60
+155d1 3d 104 60
+1560e 1f 105 60
+1562d a 106 60
+15637 c 107 60
+15643 6 111 60
+15649 6 112 60
+1564f 32 113 60
+15681 47 115 60
+156c8 30 116 60
+156f8 24 79 60
+1571c b 118 60
+15727 1 118 60
+FUNC 15728 5dc 0 dwarf2reader::LineInfo::ReadHeader()
+15728 18 503 60
+15740 9 504 60
+15749 17 508 60
+15760 a 510 60
+1576a f 511 60
+15779 60 512 60
+157d9 44 516 60
+1581d 1e 518 60
+1583b 6 519 60
+15841 1e 521 60
+1585f 18 522 60
+15877 1d 524 60
+15894 5 525 60
+15899 20 527 60
+158b9 5 528 60
+158be c 530 60
+158ca 5 531 60
+158cf 1d 533 60
+158ec 5 534 60
+158f1 1d 536 60
+1590e 5 537 60
+15913 45 539 60
+15958 1f 540 60
+15977 19 541 60
+15990 15 542 60
+159a5 1f 539 60
+159c4 30 543 60
+159f4 5 544 60
+159f9 14 542 60
+15a0d e 548 60
+15a1b 7 549 60
+15a22 5 550 60
+15a27 6 551 60
+15a2d 8b 552 60
+15ab8 28 553 60
+15ae0 5 554 60
+15ae5 16 550 60
+15afb 25 552 60
+15b20 5 557 60
+15b25 e 560 60
+15b33 7 561 60
+15b3a 5 563 60
+15b3f 6 564 60
+15b45 28 565 60
+15b6d 22 567 60
+15b8f a 568 60
+15b99 22 570 60
+15bbb a 571 60
+15bc5 22 573 60
+15be7 a 574 60
+15bf1 ba 576 60
+15cab 5 577 60
+15cb0 16 563 60
+15cc6 25 576 60
+15ceb 5 580 60
+15cf0 9 582 60
+15cf9 b 583 60
+FUNC 15d04 3d 0 dwarf2reader::LineInfo::Start()
+15d04 c 495 60
+15d10 b 496 60
+15d1b b 497 60
+15d26 19 498 60
+15d3f 2 499 60
+15d41 1 499 60
+FUNC 15d42 304 0 dwarf2reader::CompilationUnit::ProcessDIEs()
+15d42 11 435 60
+15d53 9 436 60
+15d5c 9 441 60
+15d65 17 445 60
+15d7c 8 446 60
+15d84 6 448 60
+15d8a 6c 453 60
+15df6 8 455 60
+15dfe 16 453 60
+15e14 3 455 60
+15e17 2f 453 60
+15e46 29 458 60
+15e6f 22 460 60
+15e91 a 462 60
+15e9b a 465 60
+15ea5 1e 466 60
+15ec3 13 467 60
+15ed6 2b 468 60
+15f01 18 472 60
+15f19 9 473 60
+15f22 42 474 60
+15f64 1e 475 60
+15f82 2a 477 60
+15fac b 480 60
+15fb7 1e 481 60
+15fd5 26 483 60
+15ffb 1d 455 60
+16018 24 485 60
+1603c a 486 60
+FUNC 16046 35f 0 dwarf2reader::CompilationUnit::Start()
+16046 18 249 60
+1605e 58 251 60
+160b6 35 252 60
+160eb 32 251 60
+1611d 2a 252 60
+16147 20 255 60
+16167 37 256 60
+1619e b 259 60
+161a9 f 264 60
+161b8 17 265 60
+161cf c 266 60
+161db a 268 60
+161e5 95 271 60
+1627a 11 276 60
+1628b b 279 60
+16296 58 282 60
+162ee 2f 283 60
+1631d 32 282 60
+1634f 14 284 60
+16363 1a 285 60
+1637d b 289 60
+16388 12 291 60
+1639a b 292 60
+163a5 1 292 60
+FUNC 163a6 3a 0 std::fill(unsigned char*, unsigned char*, unsigned char const&)
+163a6 c 573 61
+163b2 9 576 61
+163bb 23 577 61
+163de 2 578 61
+FUNC 163e0 33 0 std::__deque_buf_size(unsigned long)
+163e0 c 83 62
+163ec 27 84 62
+16413 1 84 62
+FUNC 16414 18 0 dwarf2reader::ByteReader::OffsetSize() const
+16414 c 38 63
+16420 c 38 63
+FUNC 1642c 18 0 dwarf2reader::ByteReader::AddressSize() const
+1642c c 41 63
+16438 c 41 63
+FUNC 16444 17 0 dwarf2reader::ByteReader::ReadOneByte(char const*) const
+16444 c 10 64
+16450 9 11 64
+16459 2 12 64
+1645b 1 12 64
+FUNC 1645c 63 0 dwarf2reader::ByteReader::ReadTwoBytes(char const*) const
+1645c c 14 64
+16468 d 15 64
+16475 e 16 64
+16483 b 17 64
+1648e 17 18 64
+164a5 18 20 64
+164bd 2 22 64
+164bf 1 22 64
+FUNC 164c0 98 0 dwarf2reader::ByteReader::ReadUnsignedLEB128(char const*, unsigned long*) const
+164c0 e 59 64
+164ce e 60 64
+164dc 7 61 64
+164e3 7 62 64
+164ea e 66 64
+164f8 5 67 64
+164fd 38 69 64
+16535 6 71 64
+1653b 8 65 64
+16543 8 75 64
+1654b 6 77 64
+16551 7 78 64
+FUNC 16558 ee 0 dwarf2reader::ByteReader::ReadSignedLEB128(char const*, unsigned long*) const
+16558 e 84 64
+16566 e 85 64
+16574 7 86 64
+1657b 7 87 64
+16582 e 91 64
+16590 5 92 64
+16595 44 93 64
+165d9 6 94 64
+165df 8 90 64
+165e7 14 97 64
+165fb 36 98 64
+16631 8 99 64
+16639 6 100 64
+1663f 7 101 64
+FUNC 16646 a2 0 dwarf2reader::ByteReader::ReadOffset(char const*) const
+16646 13 103 64
+16659 3f 104 64
+16698 4a 105 64
+166e2 6 106 64
+FUNC 166e8 a2 0 dwarf2reader::ByteReader::ReadAddress(char const*) const
+166e8 13 108 64
+166fb 3f 109 64
+1673a 4a 110 64
+16784 6 111 64
+FUNC 1678a 61 0 dwarf2reader::LineStateMachine::Reset(bool)
+1678a 12 12 65
+1679c 9 13 65
+167a5 11 14 65
+167b6 11 15 65
+167c7 a 16 65
+167d1 a 17 65
+167db 7 18 65
+167e2 7 19 65
+167e9 2 20 65
+167eb 1 20 65
+FUNC 167ec 20 0 std::_List_const_iterator<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> >::operator!=(std::_List_const_iterator<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> > const&) const
+167ec c 253 66
+167f8 14 254 66
+FUNC 1680c 25 0 std::_List_const_iterator<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> >::operator++(int)
+1680c c 226 66
+16818 8 228 66
+16820 c 229 66
+1682c 5 230 66
+16831 1 230 66
+FUNC 16832 16 0 std::_List_const_iterator<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> >::operator->() const
+16832 c 215 66
+1683e a 216 66
+16848 c 190 67
+16854 a 190 67
+FUNC 1685e 13 0 std::auto_ptr<std::stack<unsigned long long, std::deque<unsigned long long, std::allocator<unsigned long long> > > >::operator->() const
+1685e c 283 67
+1686a 7 286 67
+16871 1 286 67
+16872 c 65 68
+1687e 2 65 68
+16880 c 97 69
+1688c d 97 69
+16899 1 97 69
+1689a c 99 69
+168a6 14 100 69
+168ba c 97 69
+168c6 d 97 69
+168d3 1 97 69
+168d4 c 84 70
+168e0 17 85 70
+168f7 1 85 70
+FUNC 168f8 2d 0 std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> std::make_pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm>(dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm)
+168f8 c 144 70
+16904 21 145 70
+16925 1 145 70
+16926 c 202 66
+16932 a 203 66
+FUNC 1693c 25 0 std::list<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm>, std::allocator<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> > >::begin() const
+1693c c 588 70
+16948 19 589 66
+16961 1 589 66
+FUNC 16962 23 0 std::list<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm>, std::allocator<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> > >::end() const
+16962 c 605 70
+1696e 17 606 66
+16985 1 606 66
+16986 c 65 68
+16992 2 65 68
+16994 c 72 68
+169a0 2 72 68
+169a2 c 97 69
+169ae d 97 69
+169bb 1 97 69
+169bc c 105 69
+169c8 d 105 69
+169d5 1 105 69
+169d6 c 105 69
+169e2 d 105 69
+169ef 1 105 69
+169f0 c 67 68
+169fc 2 67 68
+169fe c 99 69
+16a0a 14 100 69
+16a1e c 99 69
+16a2a 14 100 69
+16a3e c 129 62
+16a4a 30 131 62
+16a7a c 65 68
+16a86 2 65 68
+16a88 c 72 68
+16a94 2 72 68
+16a96 c 97 69
+16aa2 d 97 69
+16aaf 1 97 69
+16ab0 c 105 69
+16abc d 105 69
+16ac9 1 105 69
+16aca c 105 69
+16ad6 d 105 69
+16ae3 1 105 69
+16ae4 c 67 68
+16af0 2 67 68
+16af2 c 99 69
+16afe 14 100 69
+16b12 c 99 69
+16b1e 14 100 69
+FUNC 16b32 2b 0 std::_Vector_base<unsigned char, std::allocator<unsigned char> >::get_allocator() const
+16b32 10 93 71
+16b42 1b 94 71
+16b5d 1 94 71
+16b6a 7 614 72
+16b71 1 614 72
+16b72 c 80 71
+16b7e d 80 71
+16b8b 1 80 71
+16b98 2 107 68
+FUNC 16b9a 2d 0 void std::_Destroy<unsigned char*, std::allocator<unsigned char> >(unsigned char*, unsigned char*, std::allocator<unsigned char>)
+16b9a c 171 73
+16ba6 2 173 73
+16ba8 12 174 73
+16bba b 173 73
+16bc5 2 174 73
+16bc7 1 174 73
+16bc8 c 84 71
+16bd4 2f 85 71
+16c03 2 86 71
+16c05 1 86 71
+16c06 c 96 71
+16c12 12 97 71
+16c24 2 98 71
+FUNC 16c26 1f 0 std::_List_base<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm>, std::allocator<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> > >::_M_init()
+16c26 c 338 73
+16c32 8 340 66
+16c3a b 341 66
+16c45 1 341 66
+16c46 c 105 69
+16c52 d 105 69
+16c5f 1 105 69
+16c60 c 125 66
+16c6c a 126 66
+FUNC 16c76 25 0 std::list<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm>, std::allocator<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> > >::begin()
+16c76 c 579 73
+16c82 19 580 66
+16c9b 1 580 66
+FUNC 16c9c 23 0 std::list<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm>, std::allocator<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> > >::end()
+16c9c c 597 73
+16ca8 17 597 66
+16cbf 1 597 66
+16cc0 c 603 72
+16ccc c 603 72
+FUNC 16cd8 2b 0 std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> >::begin() const
+16cd8 c 342 73
+16ce4 1f 343 71
+16d03 1 343 71
+FUNC 16d04 2c 0 std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> >::end() const
+16d04 c 360 73
+16d10 20 361 71
+16d3c 5 666 72
+16d41 1 666 72
+16d4f 31 759 72
+FUNC 16d80 3c 0 std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> >::size() const
+16d80 c 402 73
+16d8c 30 403 71
+16dbc c 603 72
+16dc8 c 603 72
+FUNC 16dd4 23 0 std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> >::begin()
+16dd4 c 333 73
+16de0 17 334 71
+16df7 1 334 71
+16e04 33 654 72
+16e37 1 654 72
+FUNC 16e38 26 0 std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> >::end()
+16e38 c 351 73
+16e44 1a 352 71
+16e6a 7 614 72
+16e71 1 614 72
+FUNC 16e72 42 0 std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> >::operator[](unsigned long)
+16e72 c 494 73
+16e7e 36 495 71
+FUNC 16eb4 13 0 std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> >::max_size() const
+16eb4 c 407 73
+16ec0 7 408 71
+16ec7 1 408 71
+16ed4 5 666 72
+16ed9 1 666 72
+16ee6 d 623 72
+16ef3 5 624 72
+16ef8 c 382 62
+16f04 d 382 62
+16f11 1 382 62
+FUNC 16f12 2b 0 std::_Deque_base<unsigned long long, std::allocator<unsigned long long> >::get_allocator() const
+16f12 10 360 73
+16f22 1b 361 62
+16f3d 1 361 62
+FUNC 16f3e 2d 0 std::deque<unsigned long long, std::allocator<unsigned long long> >::get_allocator() const
+16f3e 10 764 73
+16f4e 1d 765 62
+16f6b 1 765 62
+FUNC 16f6c 13 0 std::_Deque_iterator<unsigned long long, unsigned long long&, unsigned long long*>::operator*() const
+16f6c c 134 73
+16f78 7 135 62
+16f7f 1 135 62
+16f8c 2 107 68
+16f8e c 129 62
+16f9a 30 131 62
+FUNC 16fca 2c 0 std::deque<unsigned long long, std::allocator<unsigned long long> >::end() const
+16fca 10 799 73
+16fda 1c 800 62
+FUNC 16ff6 2c 0 std::deque<unsigned long long, std::allocator<unsigned long long> >::begin() const
+16ff6 10 781 73
+17006 1c 782 62
+FUNC 17022 2e 0 std::deque<unsigned long long, std::allocator<unsigned long long> >::end()
+17022 10 790 73
+17032 1e 791 62
+FUNC 17050 3c 0 std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> >::_M_range_check(unsigned long) const
+17050 13 515 73
+17063 15 517 71
+17078 14 518 71
+FUNC 1708c 32 0 std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> >::at(unsigned long)
+1708c c 534 73
+17098 12 536 71
+170aa 14 537 71
+170ca 2e 104 68
+170f8 c 84 71
+17104 2f 85 71
+17133 2 86 71
+17135 1 86 71
+17136 c 96 71
+17142 12 97 71
+17154 2 98 71
+17156 c 603 72
+17162 c 603 72
+FUNC 1716e 23 0 std::vector<unsigned char, std::allocator<unsigned char> >::begin()
+1716e c 333 73
+1717a 17 334 71
+17191 1 334 71
+1719e 27 654 72
+171c5 1 654 72
+FUNC 171c6 42 0 std::vector<unsigned char, std::allocator<unsigned char> >::operator[](unsigned long)
+171c6 c 494 73
+171d2 36 495 71
+FUNC 17208 26 0 std::vector<unsigned char, std::allocator<unsigned char> >::end()
+17208 c 351 73
+17214 1a 352 71
+1723a d 94 68
+17247 1 94 68
+FUNC 17248 2f 0 std::_Vector_base<unsigned char, std::allocator<unsigned char> >::_M_deallocate(unsigned char*, unsigned long)
+17248 c 120 73
+17254 6 122 71
+1725a 1d 123 71
+17277 1 123 71
+17278 c 108 71
+17284 3a 109 71
+172be c 188 71
+172ca 12 189 71
+172dc 2 190 71
+172de c 272 71
+172ea 4b 273 71
+17335 1 273 71
+17336 13 62 74
+17349 10 62 74
+17359 a 63 74
+17363 25 64 74
+17388 1a 66 74
+173a2 13 62 74
+173b5 10 62 74
+173c5 a 63 74
+173cf 25 64 74
+173f4 1a 66 74
+1740e c 188 71
+1741a 12 189 71
+1742c 2 190 71
+1743b 31 759 72
+1746c c 65 68
+17478 2 65 68
+1747a c 103 69
+17486 d 103 69
+17493 1 103 69
+FUNC 17494 2d 0 std::list<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm>, std::allocator<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> > >::get_allocator() const
+17494 10 570 74
+174a4 1d 571 66
+174c1 1 571 66
+174ce 2e 104 68
+FUNC 174fc 20 0 std::_List_iterator<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> >::operator!=(std::_List_iterator<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> > const&) const
+174fc c 172 74
+17508 14 173 66
+FUNC 1751c 1d 0 std::_List_const_iterator<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> >::operator++()
+1751c c 219 74
+17528 c 221 66
+17534 5 222 66
+17539 1 222 66
+FUNC 1753a 1d 0 std::_List_iterator<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> >::operator++()
+1753a c 138 74
+17546 c 140 66
+17552 5 141 66
+17557 1 141 66
+FUNC 17558 16 0 std::_List_const_iterator<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> >::operator*() const
+17558 c 211 74
+17564 a 212 66
+FUNC 1756e 16 0 std::_List_iterator<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> >::operator*() const
+1756e c 130 74
+1757a a 131 66
+FUNC 17584 20 0 std::_List_const_iterator<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> >::operator==(std::_List_const_iterator<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> > const&) const
+17584 c 249 74
+17590 14 250 66
+FUNC 175a4 35 0 bool __gnu_cxx::operator!=<dwarf2reader::CompilationUnit::Abbrev*, std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> > >(__gnu_cxx::__normal_iterator<dwarf2reader::CompilationUnit::Abbrev*, std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> > > const&, __gnu_cxx::__normal_iterator<dwarf2reader::CompilationUnit::Abbrev*, std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> > > const&)
+175a4 d 699 74
+175b1 28 700 72
+175d9 1 700 72
+FUNC 175da 4b 0 void std::_Destroy<__gnu_cxx::__normal_iterator<dwarf2reader::CompilationUnit::Abbrev*, std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> > >, std::allocator<dwarf2reader::CompilationUnit::Abbrev> >(__gnu_cxx::__normal_iterator<dwarf2reader::CompilationUnit::Abbrev*, std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> > >, __gnu_cxx::__normal_iterator<dwarf2reader::CompilationUnit::Abbrev*, std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> > >, std::allocator<dwarf2reader::CompilationUnit::Abbrev>)
+175da c 171 74
+175e6 2 173 73
+175e8 1a 174 73
+17602 21 173 73
+17623 2 174 73
+17625 1 174 73
+17626 c 127 62
+17632 29 127 62
+1765b 1 127 62
+1765c c 388 62
+17668 41 389 62
+176a9 2 390 62
+176ab 1 390 62
+176b8 d 94 68
+176c5 1 94 68
+FUNC 176c6 20 0 bool std::operator==<unsigned long long, unsigned long long&, unsigned long long*>(std::_Deque_iterator<unsigned long long, unsigned long long&, unsigned long long*> const&, std::_Deque_iterator<unsigned long long, unsigned long long&, unsigned long long*> const&)
+176c6 c 243 74
+176d2 14 244 62
+FUNC 176e6 26 0 bool std::operator!=<unsigned long long, unsigned long long&, unsigned long long*>(std::_Deque_iterator<unsigned long long, unsigned long long&, unsigned long long*> const&, std::_Deque_iterator<unsigned long long, unsigned long long&, unsigned long long*> const&)
+176e6 c 256 74
+176f2 1a 257 62
+FUNC 1770c 1a 0 std::_Deque_iterator<unsigned long long, unsigned long long&, unsigned long long*>::_S_buffer_size()
+1770c c 106 74
+17718 e 107 62
+FUNC 17726 3e 0 std::_Deque_iterator<unsigned long long, unsigned long long&, unsigned long long*>::_M_set_node(unsigned long long**)
+17726 d 229 74
+17733 9 231 62
+1773c b 232 62
+17747 1d 233 62
+FUNC 17764 50 0 std::_Deque_iterator<unsigned long long, unsigned long long&, unsigned long long*>::operator++()
+17764 c 142 74
+17770 d 144 62
+1777d f 145 62
+1778c 18 147 62
+177a4 b 148 62
+177af 5 150 62
+FUNC 177b4 4b 0 void std::_Destroy<std::_Deque_iterator<unsigned long long, unsigned long long&, unsigned long long*>, std::allocator<unsigned long long> >(std::_Deque_iterator<unsigned long long, unsigned long long&, unsigned long long*>, std::_Deque_iterator<unsigned long long, unsigned long long&, unsigned long long*>, std::allocator<unsigned long long>)
+177b4 c 171 74
+177c0 2 173 73
+177c2 1a 174 73
+177dc 21 173 73
+177fd 2 174 73
+177ff 1 174 73
+FUNC 17800 50 0 std::_Deque_iterator<unsigned long long, unsigned long long&, unsigned long long*>::operator--()
+17800 c 162 74
+1780c f 164 62
+1781b 18 166 62
+17833 b 167 62
+1783e d 169 62
+1784b 5 170 62
+FUNC 17850 39 0 std::deque<unsigned long long, std::allocator<unsigned long long> >::back()
+17850 c 988 74
+1785c 15 990 62
+17871 b 991 62
+1787c d 992 62
+17889 1 992 62
+FUNC 1788a 19 0 std::stack<unsigned long long, std::deque<unsigned long long, std::allocator<unsigned long long> > >::top()
+1788a c 163 75
+17896 d 166 75
+178a3 1 166 75
+FUNC 178a4 66 0 std::_Deque_iterator<unsigned long long, unsigned long long&, unsigned long long*>::difference_type std::operator-<unsigned long long, unsigned long long&, unsigned long long*, unsigned long long&, unsigned long long*>(std::_Deque_iterator<unsigned long long, unsigned long long&, unsigned long long*> const&, std::_Deque_iterator<unsigned long long, unsigned long long&, unsigned long long*> const&)
+178a4 d 328 75
+178b1 59 333 62
+FUNC 1790a 26 0 std::deque<unsigned long long, std::allocator<unsigned long long> >::size() const
+1790a c 840 75
+17916 1a 841 62
+1793c 36 662 72
+1797e 23 650 72
+179a1 1 650 72
+179a2 c 67 68
+179ae 2 67 68
+179b0 c 99 69
+179bc 14 100 69
+179d0 c 303 66
+179dc 12 304 66
+179ee 2 305 66
+179f0 c 326 66
+179fc 2f 327 66
+17a2b d 328 66
+17a38 c 457 66
+17a44 14 458 66
+17a58 c 211 74
+17a64 2d 211 74
+17a91 1 211 74
+17a9e 7 98 68
+17aa5 1 98 68
+17ab2 1d 85 68
+17acf 5 86 68
+17ad4 17 88 68
+17aeb 1 88 68
+FUNC 17aec 2a 0 std::_Vector_base<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> >::_M_allocate(unsigned long)
+17aec c 116 75
+17af8 1e 117 71
+17b22 d 94 68
+17b2f 1 94 68
+FUNC 17b30 34 0 std::_Deque_base<unsigned long long, std::allocator<unsigned long long> >::_M_deallocate_node(unsigned long long*)
+17b30 c 402 75
+17b3c 28 403 62
+FUNC 17b64 38 0 std::_Deque_base<unsigned long long, std::allocator<unsigned long long> >::_M_destroy_nodes(unsigned long long**, unsigned long long**)
+17b64 c 504 75
+17b70 8 506 62
+17b78 14 507 62
+17b8c e 506 62
+17b9a 2 507 62
+FUNC 17b9c 62 0 std::deque<unsigned long long, std::allocator<unsigned long long> >::_M_pop_back_aux()
+17b9c c 391 76
+17ba8 15 393 76
+17bbd 1b 394 76
+17bd8 f 395 76
+17be7 17 396 76
+FUNC 17bfe 4f 0 std::deque<unsigned long long, std::allocator<unsigned long long> >::pop_back()
+17bfe c 1081 76
+17c0a 10 1083 62
+17c1a f 1086 62
+17c29 17 1087 62
+17c40 d 1090 62
+17c4d 1 1090 62
+FUNC 17c4e 19 0 std::stack<unsigned long long, std::deque<unsigned long long, std::allocator<unsigned long long> > >::pop()
+17c4e c 205 76
+17c5a d 208 75
+17c67 1 208 75
+17c68 c 72 68
+17c74 2 72 68
+17c76 c 105 69
+17c82 d 105 69
+17c8f 1 105 69
+17c90 c 603 72
+17c9c c 603 72
+FUNC 17ca8 2b 0 std::vector<unsigned char, std::allocator<unsigned char> >::begin() const
+17ca8 c 342 76
+17cb4 1f 343 71
+17cd3 1 343 71
+FUNC 17cd4 2c 0 std::vector<unsigned char, std::allocator<unsigned char> >::end() const
+17cd4 c 360 76
+17ce0 20 361 71
+17d0c 5 666 72
+17d11 1 666 72
+17d1f 28 759 72
+17d47 1 759 72
+FUNC 17d48 3c 0 std::vector<unsigned char, std::allocator<unsigned char> >::size() const
+17d48 c 402 76
+17d54 30 403 71
+17d90 d 623 72
+17d9d 5 624 72
+17dae 5 666 72
+17db3 1 666 72
+FUNC 17db4 35 0 bool __gnu_cxx::operator!=<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char> > >(__gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char> > > const&, __gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char> > > const&)
+17db4 d 699 76
+17dc1 28 700 72
+17de9 1 700 72
+FUNC 17dea 4b 0 void std::_Destroy<__gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char> > >, std::allocator<unsigned char> >(__gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char> > >, __gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char> > >, std::allocator<unsigned char>)
+17dea c 171 76
+17df6 2 173 73
+17df8 1a 174 73
+17e12 21 173 73
+17e33 2 174 73
+17e35 1 174 73
+17e43 28 759 72
+17e6b 1 759 72
+17e78 2a 662 72
+FUNC 17ea2 13 0 std::vector<unsigned char, std::allocator<unsigned char> >::max_size() const
+17ea2 c 407 76
+17eae 7 408 71
+17eb5 1 408 71
+17ec2 16 650 72
+17ee4 7 98 68
+17eeb 1 98 68
+17ef8 1d 85 68
+17f15 5 86 68
+17f1a 10 88 68
+FUNC 17f2a 29 0 std::_List_base<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm>, std::allocator<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> > >::_M_get_node()
+17f2a c 311 76
+17f36 1d 312 66
+17f53 1 312 66
+FUNC 17f54 5f 0 std::list<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm>, std::allocator<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> > >::_M_create_node(std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> const&)
+17f54 d 435 76
+17f61 e 437 66
+17f6f 3c 440 66
+17fab 8 447 66
+17fb3 1 447 66
+FUNC 17fb4 35 0 std::list<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm>, std::allocator<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> > >::_M_insert(std::_List_iterator<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> >, std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> const&)
+17fb4 c 1149 76
+17fc0 15 1151 66
+17fd5 14 1152 66
+17fe9 1 1152 66
+FUNC 17fea 52 0 void std::list<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm>, std::allocator<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> > >::_M_insert_dispatch<std::_List_const_iterator<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> > >(std::_List_iterator<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> >, std::_List_const_iterator<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> >, std::_List_const_iterator<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> >, __false_type)
+17fea c 1126 66
+17ff6 2 1128 66
+17ff8 21 1129 66
+18019 21 1128 66
+1803a 2 1129 66
+FUNC 1803c 36 0 void std::list<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm>, std::allocator<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> > >::insert<std::_List_const_iterator<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> > >(std::_List_iterator<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> >, std::_List_const_iterator<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> >, std::_List_const_iterator<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> >)
+1803c c 838 66
+18048 2a 842 66
+18072 e 491 66
+18080 32 492 66
+180b2 64 493 66
+18116 c 211 74
+18122 3d 211 74
+1815f 1 211 74
+1816d 5c 104 68
+181c9 1 104 68
+FUNC 181ca 31 0 std::list<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm>, std::allocator<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> > >::push_back(std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> const&)
+181ca c 772 76
+181d6 25 773 66
+181fb 1 773 66
+FUNC 181fc 69 0 void std::_Construct<dwarf2reader::CompilationUnit::Abbrev, dwarf2reader::CompilationUnit::Abbrev>(dwarf2reader::CompilationUnit::Abbrev*, dwarf2reader::CompilationUnit::Abbrev const&)
+181fc d 77 76
+18209 5c 81 73
+18265 1 81 73
+18272 7 98 68
+18279 1 98 68
+18286 1d 85 68
+182a3 5 86 68
+182a8 10 88 68
+182b8 c 65 68
+182c4 2 65 68
+182c6 c 103 69
+182d2 d 103 69
+182df 1 103 69
+FUNC 182e0 4d 0 std::_Deque_base<unsigned long long, std::allocator<unsigned long long> >::_M_get_map_allocator() const
+182e0 11 394 76
+182f1 3c 395 62
+1832d 1 395 62
+FUNC 1832e 75 0 std::_Deque_base<unsigned long long, std::allocator<unsigned long long> >::_M_allocate_map(unsigned long)
+1832e d 406 76
+1833b 68 407 62
+183a3 1 407 62
+FUNC 183a4 47 0 std::_Deque_base<unsigned long long, std::allocator<unsigned long long> >::_M_deallocate_map(unsigned long long**, unsigned long)
+183a4 c 410 76
+183b0 3b 411 62
+183eb 1 411 62
+183ec c 424 62
+183f8 9 426 62
+18401 22 428 62
+18423 2b 430 62
+1844e c 714 62
+1845a 70 715 62
+184ca c 111 75
+184d6 d 111 75
+184e3 1 111 75
+184e4 c 259 67
+184f0 26 259 67
+18522 7 98 68
+18529 1 98 68
+18536 1d 85 68
+18553 5 86 68
+18558 10 88 68
+FUNC 18568 33 0 std::_Deque_base<unsigned long long, std::allocator<unsigned long long> >::_M_allocate_node()
+18568 c 398 76
+18574 27 399 62
+1859b 1 399 62
+FUNC 1859c 82 0 std::_Deque_base<unsigned long long, std::allocator<unsigned long long> >::_M_create_nodes(unsigned long long**, unsigned long long**)
+1859c d 486 76
+185a9 8 491 62
+185b1 12 492 62
+185c3 13 491 62
+185d6 b 494 62
+185e1 19 496 62
+185fa b 497 62
+18605 13 494 62
+18618 6 497 62
+FUNC 1861e 17b 0 std::_Deque_base<unsigned long long, std::allocator<unsigned long long> >::_M_initialize_map(unsigned long)
+1861e d 447 76
+1862b 1e 450 62
+18649 2a 452 62
+18673 1c 454 62
+1868f 19 462 62
+186a8 c 463 62
+186b4 1e 466 62
+186d2 b 467 62
+186dd 1e 469 62
+186fb 9 470 62
+18704 a 471 62
+1870e b 472 62
+18719 13 467 62
+1872c 15 475 62
+18741 18 476 62
+18759 c 477 62
+18765 34 478 62
+18799 1 478 62
+1879a d 366 62
+187a7 12 367 62
+187b9 39 368 62
+187f2 c 645 62
+187fe 1c 646 62
+FUNC 1881a 4d 0 void std::__fill<true>::fill<__gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char> > >, unsigned char>(__gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char> > >, __gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char> > >, unsigned char const&)
+1881a c 539 61
+18826 9 541 61
+1882f 2 542 61
+18831 13 543 61
+18844 21 542 61
+18865 2 543 61
+18867 1 543 61
+FUNC 18868 2b 0 void std::fill<__gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char> > >, unsigned char>(__gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char> > >, __gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char> > >, unsigned char const&)
+18868 c 560 76
+18874 4 567 61
+18878 1b 568 61
+18893 1 568 61
+FUNC 18894 6a 0 std::list<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm>, std::allocator<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> > >::_M_erase(std::_List_iterator<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> >)
+18894 d 1157 76
+188a1 b 1159 66
+188ac 6 1160 66
+188b2 35 1161 66
+188e7 17 1162 66
+FUNC 188fe 37 0 std::list<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm>, std::allocator<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> > >::erase(std::_List_iterator<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> >)
+188fe c 95 77
+1890a 14 97 77
+1891e 12 98 77
+18930 5 99 77
+18935 1 99 77
+FUNC 18936 3e 0 std::list<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm>, std::allocator<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> > >::erase(std::_List_iterator<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> >, std::_List_iterator<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> >)
+18936 c 883 77
+18942 2 885 66
+18944 15 886 66
+18959 16 885 66
+1896f 5 887 66
+FUNC 18974 129 0 std::list<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm>, std::allocator<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> > >::operator=(std::list<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm>, std::allocator<std::pair<dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm> > > const&)
+18974 e 120 77
+18982 c 122 77
+1898e e 124 77
+1899c e 125 77
+189aa e 126 77
+189b8 e 127 77
+189c6 2 128 77
+189c8 20 130 77
+189e8 5a 128 77
+18a42 16 131 77
+18a58 1b 132 77
+18a73 20 134 77
+18a93 a 136 77
+18a9d 1 136 77
+FUNC 18a9e 4c 0 dwarf2reader::CompilationUnit::Abbrev::operator=(dwarf2reader::CompilationUnit::Abbrev const&)
+18a9e c 211 77
+18aaa 40 211 74
+FUNC 18aea 52 0 dwarf2reader::CompilationUnit::Abbrev* std::__copy<false, std::random_access_iterator_tag>::copy<dwarf2reader::CompilationUnit::Abbrev*, dwarf2reader::CompilationUnit::Abbrev*>(dwarf2reader::CompilationUnit::Abbrev*, dwarf2reader::CompilationUnit::Abbrev*, dwarf2reader::CompilationUnit::Abbrev*)
+18aea c 280 61
+18af6 1a 283 61
+18b10 12 285 61
+18b22 4 286 61
+18b26 6 287 61
+18b2c b 283 61
+18b37 5 289 61
+FUNC 18b3c 2b 0 dwarf2reader::CompilationUnit::Abbrev* std::__copy_aux<dwarf2reader::CompilationUnit::Abbrev*, dwarf2reader::CompilationUnit::Abbrev*>(dwarf2reader::CompilationUnit::Abbrev*, dwarf2reader::CompilationUnit::Abbrev*, dwarf2reader::CompilationUnit::Abbrev*)
+18b3c c 307 77
+18b48 4 315 61
+18b4c 1b 317 61
+18b67 1 317 61
+18b76 56 354 61
+18bd8 4 384 61
+18bdc 4 385 61
+18be0 1b 387 61
+18bfb 1 387 61
+FUNC 18bfc ac 0 std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> >::erase(__gnu_cxx::__normal_iterator<dwarf2reader::CompilationUnit::Abbrev*, std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> > >, __gnu_cxx::__normal_iterator<dwarf2reader::CompilationUnit::Abbrev*, std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> > >)
+18bfc d 122 78
+18c09 26 124 78
+18c2f 43 125 78
+18c72 2e 126 78
+18ca0 8 127 78
+FUNC 18ca8 54 0 dwarf2reader::CompilationUnit::Abbrev* std::__copy_backward<false, std::random_access_iterator_tag>::copy_b<dwarf2reader::CompilationUnit::Abbrev*, dwarf2reader::CompilationUnit::Abbrev*>(dwarf2reader::CompilationUnit::Abbrev*, dwarf2reader::CompilationUnit::Abbrev*, dwarf2reader::CompilationUnit::Abbrev*)
+18ca8 c 408 61
+18cb4 1a 411 61
+18cce 1e 412 61
+18cec b 411 61
+18cf7 5 413 61
+FUNC 18cfc 2b 0 dwarf2reader::CompilationUnit::Abbrev* std::__copy_backward_aux<dwarf2reader::CompilationUnit::Abbrev*, dwarf2reader::CompilationUnit::Abbrev*>(dwarf2reader::CompilationUnit::Abbrev*, dwarf2reader::CompilationUnit::Abbrev*, dwarf2reader::CompilationUnit::Abbrev*)
+18cfc c 432 78
+18d08 4 440 61
+18d0c 1b 443 61
+18d27 1 443 61
+18d36 56 482 61
+18d98 4 514 61
+18d9c 4 515 61
+18da0 1b 517 61
+18dbb 1 517 61
+FUNC 18dbc 4d 0 void std::__fill<false>::fill<__gnu_cxx::__normal_iterator<dwarf2reader::CompilationUnit::Abbrev*, std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> > >, dwarf2reader::CompilationUnit::Abbrev>(__gnu_cxx::__normal_iterator<dwarf2reader::CompilationUnit::Abbrev*, std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> > >, __gnu_cxx::__normal_iterator<dwarf2reader::CompilationUnit::Abbrev*, std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> > >, dwarf2reader::CompilationUnit::Abbrev const&)
+18dbc c 526 61
+18dc8 2 528 61
+18dca 1c 529 61
+18de6 21 528 61
+18e07 2 529 61
+18e09 1 529 61
+FUNC 18e0a 2b 0 void std::fill<__gnu_cxx::__normal_iterator<dwarf2reader::CompilationUnit::Abbrev*, std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> > >, dwarf2reader::CompilationUnit::Abbrev>(__gnu_cxx::__normal_iterator<dwarf2reader::CompilationUnit::Abbrev*, std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> > >, __gnu_cxx::__normal_iterator<dwarf2reader::CompilationUnit::Abbrev*, std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> > >, dwarf2reader::CompilationUnit::Abbrev const&)
+18e0a c 560 78
+18e16 4 567 61
+18e1a 1b 568 61
+18e35 1 568 61
+FUNC 18e36 3f 0 unsigned char* std::__copy<true, std::random_access_iterator_tag>::copy<unsigned char>(unsigned char const*, unsigned char const*, unsigned char*)
+18e36 c 298 61
+18e42 22 300 61
+18e64 11 301 61
+18e75 1 301 61
+FUNC 18e76 2b 0 unsigned char* std::__copy_aux<unsigned char*, unsigned char*>(unsigned char*, unsigned char*, unsigned char*)
+18e76 c 307 78
+18e82 4 315 61
+18e86 1b 317 61
+18ea1 1 317 61
+18eb0 56 354 61
+18f12 4 384 61
+18f16 4 385 61
+18f1a 1b 387 61
+18f35 1 387 61
+FUNC 18f36 a0 0 std::vector<unsigned char, std::allocator<unsigned char> >::erase(__gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char> > >, __gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char> > >)
+18f36 d 122 78
+18f43 26 124 78
+18f69 43 125 78
+18fac 22 126 78
+18fce 8 127 78
+18fe2 7 98 68
+18fe9 1 98 68
+18ff6 1d 85 68
+19013 5 86 68
+19018 d 88 68
+19025 1 88 68
+FUNC 19026 2a 0 std::_Vector_base<unsigned char, std::allocator<unsigned char> >::_M_allocate(unsigned long)
+19026 c 116 78
+19032 1e 117 71
+1905c 1b 74 79
+19077 1 74 79
+19084 23 113 79
+190a7 1 113 79
+190b4 1b 254 79
+190cf 1 254 79
+FUNC 190d0 19 0 void std::_Destroy<dwarf2reader::CompilationUnit::Abbrev>(dwarf2reader::CompilationUnit::Abbrev*)
+190d0 c 106 79
+190dc d 107 73
+190e9 1 107 73
+FUNC 190ea 44 0 void std::__destroy_aux<__gnu_cxx::__normal_iterator<dwarf2reader::CompilationUnit::Abbrev*, std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> > > >(__gnu_cxx::__normal_iterator<dwarf2reader::CompilationUnit::Abbrev*, std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> > >, __gnu_cxx::__normal_iterator<dwarf2reader::CompilationUnit::Abbrev*, std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> > >, __false_type)
+190ea c 119 79
+190f6 2 121 73
+190f8 13 122 73
+1910b 21 121 73
+1912c 2 122 73
+FUNC 1912e 28 0 void std::_Destroy<__gnu_cxx::__normal_iterator<dwarf2reader::CompilationUnit::Abbrev*, std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> > > >(__gnu_cxx::__normal_iterator<dwarf2reader::CompilationUnit::Abbrev*, std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> > >, __gnu_cxx::__normal_iterator<dwarf2reader::CompilationUnit::Abbrev*, std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> > >)
+1912e c 148 79
+1913a 1c 155 73
+FUNC 19156 8d 0 void std::__uninitialized_fill_n_aux<__gnu_cxx::__normal_iterator<dwarf2reader::CompilationUnit::Abbrev*, std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> > >, unsigned long, dwarf2reader::CompilationUnit::Abbrev>(__gnu_cxx::__normal_iterator<dwarf2reader::CompilationUnit::Abbrev*, std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> > >, unsigned long, dwarf2reader::CompilationUnit::Abbrev const&, __false_type)
+19156 d 188 79
+19163 6 190 79
+19169 2 193 79
+1916b 1c 194 79
+19187 1b 193 79
+191a2 b 196 79
+191ad 12 198 79
+191bf b 199 79
+191ca 13 196 79
+191dd 6 199 79
+191e3 1 199 79
+FUNC 191e4 2f 0 void std::uninitialized_fill_n<__gnu_cxx::__normal_iterator<dwarf2reader::CompilationUnit::Abbrev*, std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> > >, unsigned long, dwarf2reader::CompilationUnit::Abbrev>(__gnu_cxx::__normal_iterator<dwarf2reader::CompilationUnit::Abbrev*, std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> > >, unsigned long, dwarf2reader::CompilationUnit::Abbrev const&)
+191e4 c 214 79
+191f0 23 218 79
+19213 1 218 79
+FUNC 19214 27 0 void std::__uninitialized_fill_n_a<__gnu_cxx::__normal_iterator<dwarf2reader::CompilationUnit::Abbrev*, std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> > >, unsigned long, dwarf2reader::CompilationUnit::Abbrev, dwarf2reader::CompilationUnit::Abbrev>(__gnu_cxx::__normal_iterator<dwarf2reader::CompilationUnit::Abbrev*, std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> > >, unsigned long, dwarf2reader::CompilationUnit::Abbrev const&, std::allocator<dwarf2reader::CompilationUnit::Abbrev>)
+19214 c 308 79
+19220 1b 310 79
+1923b 1 310 79
+19249 6 82 79
+1924f 2 85 79
+19251 24 86 79
+19275 2c 85 79
+192a1 b 87 79
+192ac b 89 79
+192b7 12 91 79
+192c9 b 92 79
+192d4 13 89 79
+192e7 9 92 79
+192fc 23 113 79
+1931f 1 113 79
+1932c 1b 254 79
+19347 1 254 79
+FUNC 19348 409 0 std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> >::_M_insert_aux(__gnu_cxx::__normal_iterator<dwarf2reader::CompilationUnit::Abbrev*, std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> > >, dwarf2reader::CompilationUnit::Abbrev const&)
+19348 14 249 79
+1935c 14 251 78
+19370 22 253 78
+19392 f 255 78
+193a1 12 256 78
+193b3 55 257 78
+19408 4b 260 78
+19453 e 264 78
+19461 15 265 78
+19476 e 266 78
+19484 1d 271 78
+194a1 8 272 78
+194a9 e 273 78
+194b7 27 275 78
+194de 6 276 78
+194e4 55 279 78
+19539 25 284 78
+1955e b 285 78
+19569 4f 286 78
+195b8 3 284 78
+195bb 13 279 78
+195ce e 286 78
+195dc 4d 298 78
+19629 36 299 78
+1965f 12 302 78
+19671 13 303 78
+19684 2e 304 78
+196b2 13 286 78
+196c5 b 292 78
+196d0 39 294 78
+19709 23 295 78
+1972c b 296 78
+19737 13 292 78
+1974a 7 304 78
+19751 1 304 78
+FUNC 19752 70 0 std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> >::push_back(dwarf2reader::CompilationUnit::Abbrev const&)
+19752 c 602 79
+1975e 10 604 71
+1976e 1e 606 71
+1978c 11 607 71
+1979d 25 610 71
+FUNC 197c2 50 0 unsigned char* std::__copy_backward<true, std::random_access_iterator_tag>::copy_b<unsigned char>(unsigned char const*, unsigned char const*, unsigned char*)
+197c2 d 422 61
+197cf f 424 61
+197de 24 425 61
+19802 10 426 61
+FUNC 19812 2b 0 unsigned char* std::__copy_backward_aux<unsigned char*, unsigned char*>(unsigned char*, unsigned char*, unsigned char*)
+19812 c 432 79
+1981e 4 440 61
+19822 1b 443 61
+1983d 1 443 61
+1984c 56 482 61
+198ae 4 514 61
+198b2 4 515 61
+198b6 1b 517 61
+198d1 1 517 61
+FUNC 198d2 32 0 unsigned char* std::fill_n<unsigned long>(unsigned char*, unsigned long, unsigned char const&)
+198d2 c 647 79
+198de 1e 649 61
+198fc 8 650 61
+FUNC 19904 27 0 void std::__uninitialized_fill_n_aux<unsigned char*, unsigned long, unsigned char>(unsigned char*, unsigned long, unsigned char const&, __true_type)
+19904 c 182 79
+19910 1b 183 79
+1992b 1 183 79
+FUNC 1992c 2f 0 void std::uninitialized_fill_n<unsigned char*, unsigned long, unsigned char>(unsigned char*, unsigned long, unsigned char const&)
+1992c c 214 79
+19938 23 218 79
+1995b 1 218 79
+FUNC 1995c 27 0 void std::__uninitialized_fill_n_a<unsigned char*, unsigned long, unsigned char, unsigned char>(unsigned char*, unsigned long, unsigned char const&, std::allocator<unsigned char>)
+1995c c 308 79
+19968 1b 310 79
+19983 1 310 79
+FUNC 19984 27 0 void std::__destroy_aux<dwarf2reader::CompilationUnit::Abbrev*>(dwarf2reader::CompilationUnit::Abbrev*, dwarf2reader::CompilationUnit::Abbrev*, __false_type)
+19984 c 119 79
+19990 2 121 73
+19992 b 122 73
+1999d c 121 73
+199a9 2 122 73
+199ab 1 122 73
+FUNC 199ac 28 0 void std::_Destroy<dwarf2reader::CompilationUnit::Abbrev*>(dwarf2reader::CompilationUnit::Abbrev*, dwarf2reader::CompilationUnit::Abbrev*)
+199ac c 148 79
+199b8 1c 155 73
+FUNC 199d4 88 0 dwarf2reader::CompilationUnit::Abbrev* std::__uninitialized_copy_aux<dwarf2reader::CompilationUnit::Abbrev*, dwarf2reader::CompilationUnit::Abbrev*>(dwarf2reader::CompilationUnit::Abbrev*, dwarf2reader::CompilationUnit::Abbrev*, dwarf2reader::CompilationUnit::Abbrev*, __false_type)
+199d4 d 80 79
+199e1 6 82 79
+199e7 2 85 79
+199e9 12 86 79
+199fb 12 85 79
+19a0d b 87 79
+19a18 b 89 79
+19a23 12 91 79
+19a35 b 92 79
+19a40 13 89 79
+19a53 9 92 79
+FUNC 19a5c 2f 0 dwarf2reader::CompilationUnit::Abbrev* std::uninitialized_copy<dwarf2reader::CompilationUnit::Abbrev*, dwarf2reader::CompilationUnit::Abbrev*>(dwarf2reader::CompilationUnit::Abbrev*, dwarf2reader::CompilationUnit::Abbrev*, dwarf2reader::CompilationUnit::Abbrev*)
+19a5c c 108 79
+19a68 23 113 79
+19a8b 1 113 79
+FUNC 19a8c 27 0 dwarf2reader::CompilationUnit::Abbrev* std::__uninitialized_copy_a<dwarf2reader::CompilationUnit::Abbrev*, dwarf2reader::CompilationUnit::Abbrev*, dwarf2reader::CompilationUnit::Abbrev>(dwarf2reader::CompilationUnit::Abbrev*, dwarf2reader::CompilationUnit::Abbrev*, dwarf2reader::CompilationUnit::Abbrev*, std::allocator<dwarf2reader::CompilationUnit::Abbrev>)
+19a8c c 252 79
+19a98 1b 254 79
+19ab3 1 254 79
+FUNC 19ab4 7e 0 void std::__uninitialized_fill_n_aux<dwarf2reader::CompilationUnit::Abbrev*, unsigned long, dwarf2reader::CompilationUnit::Abbrev>(dwarf2reader::CompilationUnit::Abbrev*, unsigned long, dwarf2reader::CompilationUnit::Abbrev const&, __false_type)
+19ab4 d 188 79
+19ac1 6 190 79
+19ac7 2 193 79
+19ac9 12 194 79
+19adb 16 193 79
+19af1 b 196 79
+19afc 12 198 79
+19b0e b 199 79
+19b19 13 196 79
+19b2c 6 199 79
+FUNC 19b32 2f 0 void std::uninitialized_fill_n<dwarf2reader::CompilationUnit::Abbrev*, unsigned long, dwarf2reader::CompilationUnit::Abbrev>(dwarf2reader::CompilationUnit::Abbrev*, unsigned long, dwarf2reader::CompilationUnit::Abbrev const&)
+19b32 c 214 79
+19b3e 23 218 79
+19b61 1 218 79
+FUNC 19b62 27 0 void std::__uninitialized_fill_n_a<dwarf2reader::CompilationUnit::Abbrev*, unsigned long, dwarf2reader::CompilationUnit::Abbrev, dwarf2reader::CompilationUnit::Abbrev>(dwarf2reader::CompilationUnit::Abbrev*, unsigned long, dwarf2reader::CompilationUnit::Abbrev const&, std::allocator<dwarf2reader::CompilationUnit::Abbrev>)
+19b62 c 308 79
+19b6e 1b 310 79
+19b89 1 310 79
+FUNC 19b8a a5 0 dwarf2reader::CompilationUnit::Abbrev* std::__uninitialized_copy_aux<__gnu_cxx::__normal_iterator<dwarf2reader::CompilationUnit::Abbrev*, std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> > >, dwarf2reader::CompilationUnit::Abbrev*>(__gnu_cxx::__normal_iterator<dwarf2reader::CompilationUnit::Abbrev*, std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> > >, __gnu_cxx::__normal_iterator<dwarf2reader::CompilationUnit::Abbrev*, std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> > >, dwarf2reader::CompilationUnit::Abbrev*, __false_type)
+19b8a d 80 79
+19b97 6 82 79
+19b9d 2 85 79
+19b9f 1a 86 79
+19bb9 27 85 79
+19be0 b 87 79
+19beb b 89 79
+19bf6 12 91 79
+19c08 b 92 79
+19c13 13 89 79
+19c26 9 92 79
+19c2f 1 92 79
+FUNC 19c30 2f 0 dwarf2reader::CompilationUnit::Abbrev* std::uninitialized_copy<__gnu_cxx::__normal_iterator<dwarf2reader::CompilationUnit::Abbrev*, std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> > >, dwarf2reader::CompilationUnit::Abbrev*>(__gnu_cxx::__normal_iterator<dwarf2reader::CompilationUnit::Abbrev*, std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> > >, __gnu_cxx::__normal_iterator<dwarf2reader::CompilationUnit::Abbrev*, std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> > >, dwarf2reader::CompilationUnit::Abbrev*)
+19c30 c 108 79
+19c3c 23 113 79
+19c5f 1 113 79
+FUNC 19c60 27 0 dwarf2reader::CompilationUnit::Abbrev* std::__uninitialized_copy_a<__gnu_cxx::__normal_iterator<dwarf2reader::CompilationUnit::Abbrev*, std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> > >, dwarf2reader::CompilationUnit::Abbrev*, dwarf2reader::CompilationUnit::Abbrev>(__gnu_cxx::__normal_iterator<dwarf2reader::CompilationUnit::Abbrev*, std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> > >, __gnu_cxx::__normal_iterator<dwarf2reader::CompilationUnit::Abbrev*, std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> > >, dwarf2reader::CompilationUnit::Abbrev*, std::allocator<dwarf2reader::CompilationUnit::Abbrev>)
+19c60 c 252 79
+19c6c 1b 254 79
+19c87 1 254 79
+FUNC 19c88 5f8 0 std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> >::_M_fill_insert(__gnu_cxx::__normal_iterator<dwarf2reader::CompilationUnit::Abbrev*, std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> > >, unsigned long, dwarf2reader::CompilationUnit::Abbrev const&)
+19c88 15 311 79
+19c9d b 313 78
+19ca8 2a 315 78
+19cd2 12 318 78
+19ce4 23 319 78
+19d07 15 320 78
+19d1c c 321 78
+19d28 5a 323 78
+19d82 1c 327 78
+19d9e 35 328 78
+19dd3 16 323 78
+19de9 30 330 78
+19e19 10 343 78
+19e29 48 334 78
+19e71 21 338 78
+19e92 3d 339 78
+19ecf 13 334 78
+19ee2 b 339 78
+19eed 1c 342 78
+19f09 1e 343 78
+19f27 13 339 78
+19f3a 24 343 78
+19f5e e 348 78
+19f6c 1e 349 78
+19f8a e 350 78
+19f98 1d 353 78
+19fb5 8 354 78
+19fbd e 355 78
+19fcb 27 357 78
+19ff2 6 358 78
+19ff8 4d 361 78
+1a045 40 365 78
+1a085 18 367 78
+1a09d 44 368 78
+1a0e1 3 365 78
+1a0e4 19 361 78
+1a0fd 13 365 78
+1a110 e 368 78
+1a11e 3e 379 78
+1a15c 36 381 78
+1a192 12 384 78
+1a1a4 13 385 78
+1a1b7 2e 386 78
+1a1e5 e 368 78
+1a1f3 b 372 78
+1a1fe 39 374 78
+1a237 23 376 78
+1a25a b 377 78
+1a265 13 372 78
+1a278 8 386 78
+FUNC 1a280 2e 0 std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> >::insert(__gnu_cxx::__normal_iterator<dwarf2reader::CompilationUnit::Abbrev*, std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> > >, unsigned long, dwarf2reader::CompilationUnit::Abbrev const&)
+1a280 c 657 79
+1a28c 22 658 71
+FUNC 1a2ae ab 0 std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> >::resize(unsigned long, dwarf2reader::CompilationUnit::Abbrev const&)
+1a2ae d 422 79
+1a2bb 15 424 71
+1a2d0 48 425 71
+1a318 41 427 71
+1a359 1 427 71
+FUNC 1a35a 63 0 std::vector<dwarf2reader::CompilationUnit::Abbrev, std::allocator<dwarf2reader::CompilationUnit::Abbrev> >::resize(unsigned long)
+1a35a d 441 79
+1a367 56 442 71
+1a3bd 1 442 71
+FUNC 1a3be 13 0 std::_Deque_iterator<unsigned long long, unsigned long long const&, unsigned long long const*>::operator*() const
+1a3be c 134 79
+1a3ca 7 135 62
+1a3d1 1 135 62
+FUNC 1a3d2 3f 0 unsigned long long** std::__copy<true, std::random_access_iterator_tag>::copy<unsigned long long*>(unsigned long long* const*, unsigned long long* const*, unsigned long long**)
+1a3d2 c 298 61
+1a3de 22 300 61
+1a400 11 301 61
+1a411 1 301 61
+FUNC 1a412 2b 0 unsigned long long** std::__copy_aux<unsigned long long**, unsigned long long**>(unsigned long long**, unsigned long long**, unsigned long long**)
+1a412 c 307 79
+1a41e 4 315 61
+1a422 1b 317 61
+1a43d 1 317 61
+FUNC 1a43e 27 0 unsigned long long** std::__copy_normal<false, false>::copy_n<unsigned long long**, unsigned long long**>(unsigned long long**, unsigned long long**, unsigned long long**)
+1a43e c 325 61
+1a44a 1b 326 61
+1a465 1 326 61
+FUNC 1a466 2f 0 unsigned long long** std::copy<unsigned long long**, unsigned long long**>(unsigned long long**, unsigned long long**, unsigned long long**)
+1a466 c 376 79
+1a472 4 384 61
+1a476 4 385 61
+1a47a 1b 387 61
+1a495 1 387 61
+FUNC 1a496 60 0 unsigned long long** std::__copy_backward<true, std::random_access_iterator_tag>::copy_b<unsigned long long*>(unsigned long long* const*, unsigned long long* const*, unsigned long long**)
+1a496 d 422 61
+1a4a3 12 424 61
+1a4b5 2e 425 61
+1a4e3 13 426 61
+FUNC 1a4f6 2b 0 unsigned long long** std::__copy_backward_aux<unsigned long long**, unsigned long long**>(unsigned long long**, unsigned long long**, unsigned long long**)
+1a4f6 c 432 79
+1a502 4 440 61
+1a506 1b 443 61
+1a521 1 443 61
+FUNC 1a522 27 0 unsigned long long** std::__copy_backward_normal<false, false>::copy_b_n<unsigned long long**, unsigned long long**>(unsigned long long**, unsigned long long**, unsigned long long**)
+1a522 c 451 61
+1a52e 1b 452 61
+1a549 1 452 61
+FUNC 1a54a 2f 0 unsigned long long** std::copy_backward<unsigned long long**, unsigned long long**>(unsigned long long**, unsigned long long**, unsigned long long**)
+1a54a c 504 79
+1a556 4 514 61
+1a55a 4 515 61
+1a55e 1b 517 61
+1a579 1 517 61
+FUNC 1a57a 1df 0 std::deque<unsigned long long, std::allocator<unsigned long long> >::_M_reallocate_map(unsigned long, bool)
+1a57a 13 723 79
+1a58d 1b 726 76
+1a5a8 9 727 76
+1a5b1 13 730 76
+1a5c4 39 732 76
+1a5fd b 735 76
+1a608 27 736 76
+1a62f 2f 740 76
+1a65e 26 748 76
+1a684 15 750 76
+1a699 36 751 76
+1a6cf 22 753 76
+1a6f1 1e 756 76
+1a70f 8 758 76
+1a717 9 759 76
+1a720 15 762 76
+1a735 24 763 76
+1a759 1 763 76
+FUNC 1a75a 59 0 std::deque<unsigned long long, std::allocator<unsigned long long> >::_M_reserve_map_at_back(unsigned long)
+1a75a e 1443 79
+1a768 2a 1445 62
+1a792 21 1447 62
+1a7b3 1 1447 62
+FUNC 1a7b4 8c 0 std::deque<unsigned long long, std::allocator<unsigned long long> >::_M_push_back_aux(unsigned long long const&)
+1a7b4 c 345 79
+1a7c0 e 347 76
+1a7ce 13 348 76
+1a7e1 18 349 76
+1a7f9 1e 352 76
+1a817 1b 353 76
+1a832 c 355 76
+1a83e 2 360 76
+FUNC 1a840 62 0 std::deque<unsigned long long, std::allocator<unsigned long long> >::push_back(unsigned long long const&)
+1a840 c 1039 79
+1a84c 13 1041 62
+1a85f 1e 1044 62
+1a87d 11 1045 62
+1a88e 14 1048 62
+FUNC 1a8a2 20 0 std::stack<unsigned long long, std::deque<unsigned long long, std::allocator<unsigned long long> > >::push(unsigned long long const&)
+1a8a2 c 190 79
+1a8ae 14 191 75
+FUNC 1a8c2 27 0 unsigned char* std::__copy_normal<false, false>::copy_n<unsigned char*, unsigned char*>(unsigned char*, unsigned char*, unsigned char*)
+1a8c2 c 325 61
+1a8ce 1b 326 61
+1a8e9 1 326 61
+FUNC 1a8ea 2f 0 unsigned char* std::copy<unsigned char*, unsigned char*>(unsigned char*, unsigned char*, unsigned char*)
+1a8ea c 376 79
+1a8f6 4 384 61
+1a8fa 4 385 61
+1a8fe 1b 387 61
+1a919 1 387 61
+FUNC 1a91a 27 0 unsigned char* std::__uninitialized_copy_aux<unsigned char*, unsigned char*>(unsigned char*, unsigned char*, unsigned char*, __true_type)
+1a91a c 73 79
+1a926 1b 74 79
+1a941 1 74 79
+FUNC 1a942 2f 0 unsigned char* std::uninitialized_copy<unsigned char*, unsigned char*>(unsigned char*, unsigned char*, unsigned char*)
+1a942 c 108 79
+1a94e 23 113 79
+1a971 1 113 79
+FUNC 1a972 27 0 unsigned char* std::__uninitialized_copy_a<unsigned char*, unsigned char*, unsigned char>(unsigned char*, unsigned char*, unsigned char*, std::allocator<unsigned char>)
+1a972 c 252 79
+1a97e 1b 254 79
+1a999 1 254 79
+FUNC 1a99a 40 0 unsigned char* std::__copy_normal<true, false>::copy_n<__gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char> > >, unsigned char*>(__gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char> > >, __gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char> > >, unsigned char*)
+1a99a d 334 61
+1a9a7 33 335 61
+FUNC 1a9da 2f 0 unsigned char* std::copy<__gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char> > >, unsigned char*>(__gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char> > >, __gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char> > >, unsigned char*)
+1a9da c 376 79
+1a9e6 4 384 61
+1a9ea 4 385 61
+1a9ee 1b 387 61
+1aa09 1 387 61
+FUNC 1aa0a 27 0 unsigned char* std::__uninitialized_copy_aux<__gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char> > >, unsigned char*>(__gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char> > >, __gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char> > >, unsigned char*, __true_type)
+1aa0a c 73 79
+1aa16 1b 74 79
+1aa31 1 74 79
+FUNC 1aa32 2f 0 unsigned char* std::uninitialized_copy<__gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char> > >, unsigned char*>(__gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char> > >, __gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char> > >, unsigned char*)
+1aa32 c 108 79
+1aa3e 23 113 79
+1aa61 1 113 79
+FUNC 1aa62 27 0 unsigned char* std::__uninitialized_copy_a<__gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char> > >, unsigned char*, unsigned char>(__gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char> > >, __gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char> > >, unsigned char*, std::allocator<unsigned char>)
+1aa62 c 252 79
+1aa6e 1b 254 79
+1aa89 1 254 79
+1aa96 9 616 61
+1aa9f 2 617 61
+1aaa1 13 618 61
+1aab4 16 617 61
+1aaca 5 619 61
+1aacf 1 619 61
+1aadc 4 641 61
+1aae0 1b 642 61
+1aafb 1 642 61
+FUNC 1aafc 27 0 void std::__uninitialized_fill_n_aux<__gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char> > >, unsigned long, unsigned char>(__gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char> > >, unsigned long, unsigned char const&, __true_type)
+1aafc c 182 79
+1ab08 1b 183 79
+1ab23 1 183 79
+FUNC 1ab24 2f 0 void std::uninitialized_fill_n<__gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char> > >, unsigned long, unsigned char>(__gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char> > >, unsigned long, unsigned char const&)
+1ab24 c 214 79
+1ab30 23 218 79
+1ab53 1 218 79
+FUNC 1ab54 27 0 void std::__uninitialized_fill_n_a<__gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char> > >, unsigned long, unsigned char, unsigned char>(__gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char> > >, unsigned long, unsigned char const&, std::allocator<unsigned char>)
+1ab54 c 308 79
+1ab60 1b 310 79
+1ab7b 1 310 79
+FUNC 1ab7c 45a 0 std::vector<unsigned char, std::allocator<unsigned char> >::_M_fill_insert(__gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char> > >, unsigned long, unsigned char const&)
+1ab7c 14 311 79
+1ab90 b 313 78
+1ab9b 21 315 78
+1abbc 9 318 78
+1abc5 23 319 78
+1abe8 15 320 78
+1abfd c 321 78
+1ac09 4e 323 78
+1ac57 11 327 78
+1ac68 30 328 78
+1ac98 35 330 78
+1accd 48 334 78
+1ad15 14 338 78
+1ad29 43 339 78
+1ad6c 11 342 78
+1ad7d 1e 343 78
+1ad9b e 348 78
+1ada9 1e 349 78
+1adc7 e 350 78
+1add5 1d 353 78
+1adf2 8 354 78
+1adfa e 355 78
+1ae08 27 357 78
+1ae2f 6 358 78
+1ae35 4d 361 78
+1ae82 40 365 78
+1aec2 18 367 78
+1aeda 4d 368 78
+1af27 3e 379 78
+1af65 2d 381 78
+1af92 12 384 78
+1afa4 13 385 78
+1afb7 1f 386 78
+FUNC 1afd6 2e 0 std::vector<unsigned char, std::allocator<unsigned char> >::insert(__gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char> > >, unsigned long, unsigned char const&)
+1afd6 c 657 79
+1afe2 22 658 71
+FUNC 1b004 ab 0 std::vector<unsigned char, std::allocator<unsigned char> >::resize(unsigned long, unsigned char const&)
+1b004 d 422 79
+1b011 15 424 71
+1b026 48 425 71
+1b06e 41 427 71
+1b0af 1 427 71
+FUNC 1b0b0 2b 0 std::vector<unsigned char, std::allocator<unsigned char> >::resize(unsigned long)
+1b0b0 c 441 79
+1b0bc 1f 442 71
+1b0db 1 442 71
+FUNC 1b0dc 1a 0 std::_Deque_iterator<unsigned long long, unsigned long long const&, unsigned long long const*>::_S_buffer_size()
+1b0dc c 106 79
+1b0e8 e 107 62
+FUNC 1b0f6 66 0 std::_Deque_iterator<unsigned long long, unsigned long long const&, unsigned long long const*>::difference_type std::operator-<unsigned long long, unsigned long long const&, unsigned long long const*, unsigned long long const&, unsigned long long const*>(std::_Deque_iterator<unsigned long long, unsigned long long const&, unsigned long long const*> const&, std::_Deque_iterator<unsigned long long, unsigned long long const&, unsigned long long const*> const&)
+1b0f6 d 328 79
+1b103 59 333 62
+FUNC 1b15c 3e 0 std::_Deque_iterator<unsigned long long, unsigned long long const&, unsigned long long const*>::_M_set_node(unsigned long long**)
+1b15c d 229 79
+1b169 9 231 62
+1b172 b 232 62
+1b17d 1d 233 62
+FUNC 1b19a 50 0 std::_Deque_iterator<unsigned long long, unsigned long long const&, unsigned long long const*>::operator++()
+1b19a c 142 79
+1b1a6 d 144 62
+1b1b3 f 145 62
+1b1c2 18 147 62
+1b1da b 148 62
+1b1e5 5 150 62
+FUNC 1b1ea 84 0 std::_Deque_iterator<unsigned long long, unsigned long long&, unsigned long long*> std::__copy<false, std::random_access_iterator_tag>::copy<std::_Deque_iterator<unsigned long long, unsigned long long const&, unsigned long long const*>, std::_Deque_iterator<unsigned long long, unsigned long long&, unsigned long long*> >(std::_Deque_iterator<unsigned long long, unsigned long long const&, unsigned long long const*>, std::_Deque_iterator<unsigned long long, unsigned long long const&, unsigned long long const*>, std::_Deque_iterator<unsigned long long, unsigned long long&, unsigned long long*>)
+1b1ea e 280 61
+1b1f8 17 283 61
+1b20f 20 285 61
+1b22f b 286 61
+1b23a b 287 61
+1b245 b 283 61
+1b250 1e 289 61
+FUNC 1b26e 7e 0 std::_Deque_iterator<unsigned long long, unsigned long long&, unsigned long long*> std::__copy_aux<std::_Deque_iterator<unsigned long long, unsigned long long const&, unsigned long long const*>, std::_Deque_iterator<unsigned long long, unsigned long long&, unsigned long long*> >(std::_Deque_iterator<unsigned long long, unsigned long long const&, unsigned long long const*>, std::_Deque_iterator<unsigned long long, unsigned long long const&, unsigned long long const*>, std::_Deque_iterator<unsigned long long, unsigned long long&, unsigned long long*>)
+1b26e 11 307 79
+1b27f 4 315 61
+1b283 69 317 61
+FUNC 1b2ec 7a 0 std::_Deque_iterator<unsigned long long, unsigned long long&, unsigned long long*> std::__copy_normal<false, false>::copy_n<std::_Deque_iterator<unsigned long long, unsigned long long const&, unsigned long long const*>, std::_Deque_iterator<unsigned long long, unsigned long long&, unsigned long long*> >(std::_Deque_iterator<unsigned long long, unsigned long long const&, unsigned long long const*>, std::_Deque_iterator<unsigned long long, unsigned long long const&, unsigned long long const*>, std::_Deque_iterator<unsigned long long, unsigned long long&, unsigned long long*>)
+1b2ec 11 325 61
+1b2fd 69 326 61
+FUNC 1b366 82 0 std::_Deque_iterator<unsigned long long, unsigned long long&, unsigned long long*> std::copy<std::_Deque_iterator<unsigned long long, unsigned long long const&, unsigned long long const*>, std::_Deque_iterator<unsigned long long, unsigned long long&, unsigned long long*> >(std::_Deque_iterator<unsigned long long, unsigned long long const&, unsigned long long const*>, std::_Deque_iterator<unsigned long long, unsigned long long const&, unsigned long long const*>, std::_Deque_iterator<unsigned long long, unsigned long long&, unsigned long long*>)
+1b366 11 376 79
+1b377 4 384 61
+1b37b 4 385 61
+1b37f 69 387 61
+FUNC 1b3e8 7a 0 std::_Deque_iterator<unsigned long long, unsigned long long&, unsigned long long*> std::__uninitialized_copy_aux<std::_Deque_iterator<unsigned long long, unsigned long long const&, unsigned long long const*>, std::_Deque_iterator<unsigned long long, unsigned long long&, unsigned long long*> >(std::_Deque_iterator<unsigned long long, unsigned long long const&, unsigned long long const*>, std::_Deque_iterator<unsigned long long, unsigned long long const&, unsigned long long const*>, std::_Deque_iterator<unsigned long long, unsigned long long&, unsigned long long*>, __true_type)
+1b3e8 11 73 79
+1b3f9 69 74 79
+FUNC 1b462 82 0 std::_Deque_iterator<unsigned long long, unsigned long long&, unsigned long long*> std::uninitialized_copy<std::_Deque_iterator<unsigned long long, unsigned long long const&, unsigned long long const*>, std::_Deque_iterator<unsigned long long, unsigned long long&, unsigned long long*> >(std::_Deque_iterator<unsigned long long, unsigned long long const&, unsigned long long const*>, std::_Deque_iterator<unsigned long long, unsigned long long const&, unsigned long long const*>, std::_Deque_iterator<unsigned long long, unsigned long long&, unsigned long long*>)
+1b462 11 108 79
+1b473 71 113 79
+FUNC 1b4e4 7a 0 std::_Deque_iterator<unsigned long long, unsigned long long&, unsigned long long*> std::__uninitialized_copy_a<std::_Deque_iterator<unsigned long long, unsigned long long const&, unsigned long long const*>, std::_Deque_iterator<unsigned long long, unsigned long long&, unsigned long long*>, unsigned long long>(std::_Deque_iterator<unsigned long long, unsigned long long const&, unsigned long long const*>, std::_Deque_iterator<unsigned long long, unsigned long long const&, unsigned long long const*>, std::_Deque_iterator<unsigned long long, unsigned long long&, unsigned long long*>, std::allocator<unsigned long long>)
+1b4e4 11 252 79
+1b4f5 69 254 79
+1b55e 10 679 62
+1b56e 64 680 62
+1b5d2 e8 681 62
+1b6ba c 143 75
+1b6c6 14 144 75
+1b6da 6 144 75
+FUNC 1b6e0 4d 0 __eprintf
+1b6e0 6 1826 80
+1b6e6 3 1832 80
+1b6e9 c 1826 80
+1b6f5 29 1832 80
+1b71e a 1837 80
+1b728 5 1838 80
+1b72d e8d3 1838 80
diff --git a/google-breakpad/src/client/mac/handler/ucontext_compat.h b/google-breakpad/src/client/mac/handler/ucontext_compat.h
new file mode 100644
index 0000000..1e4b752
--- /dev/null
+++ b/google-breakpad/src/client/mac/handler/ucontext_compat.h
@@ -0,0 +1,47 @@
+// Copyright 2013 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef CLIENT_MAC_HANDLER_UCONTEXT_COMPAT_H_
+#define CLIENT_MAC_HANDLER_UCONTEXT_COMPAT_H_
+
+#include <sys/ucontext.h>
+
+// The purpose of this file is to work around the fact that ucontext_t's
+// uc_mcontext member is an mcontext_t rather than an mcontext64_t on ARM64.
+#if defined(__aarch64__)
+// <sys/ucontext.h> doesn't include the below file.
+#include <sys/_types/_ucontext64.h>
+typedef ucontext64_t breakpad_ucontext_t;
+#define breakpad_uc_mcontext uc_mcontext64
+#else
+typedef ucontext_t breakpad_ucontext_t;
+#define breakpad_uc_mcontext uc_mcontext
+#endif  // defined(__aarch64__)
+
+#endif  // CLIENT_MAC_HANDLER_UCONTEXT_COMPAT_H_
diff --git a/google-breakpad/src/client/mac/sender/Breakpad.xib b/google-breakpad/src/client/mac/sender/Breakpad.xib
new file mode 100644
index 0000000..7966f89
--- /dev/null
+++ b/google-breakpad/src/client/mac/sender/Breakpad.xib
@@ -0,0 +1,1140 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
+	<data>
+		<int key="IBDocument.SystemTarget">1050</int>
+		<string key="IBDocument.SystemVersion">10F569</string>
+		<string key="IBDocument.InterfaceBuilderVersion">762</string>
+		<string key="IBDocument.AppKitVersion">1038.29</string>
+		<string key="IBDocument.HIToolboxVersion">461.00</string>
+		<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
+			<bool key="EncodedWithXMLCoder">YES</bool>
+			<object class="NSArray" key="dict.sortedKeys" id="0">
+				<bool key="EncodedWithXMLCoder">YES</bool>
+			</object>
+			<object class="NSMutableArray" key="dict.values">
+				<bool key="EncodedWithXMLCoder">YES</bool>
+			</object>
+		</object>
+		<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
+			<bool key="EncodedWithXMLCoder">YES</bool>
+		</object>
+		<reference key="IBDocument.PluginDependencies" ref="0"/>
+		<object class="NSMutableDictionary" key="IBDocument.Metadata">
+			<bool key="EncodedWithXMLCoder">YES</bool>
+			<reference key="dict.sortedKeys" ref="0"/>
+			<object class="NSMutableArray" key="dict.values">
+				<bool key="EncodedWithXMLCoder">YES</bool>
+			</object>
+		</object>
+		<object class="NSMutableArray" key="IBDocument.RootObjects" id="504246249">
+			<bool key="EncodedWithXMLCoder">YES</bool>
+			<object class="NSCustomObject" id="273934324">
+				<string key="NSClassName">Reporter</string>
+			</object>
+			<object class="NSCustomObject" id="388635980">
+				<string key="NSClassName">FirstResponder</string>
+			</object>
+			<object class="NSCustomObject" id="220995958">
+				<string key="NSClassName">NSApplication</string>
+			</object>
+			<object class="NSWindowTemplate" id="762998835">
+				<int key="NSWindowStyleMask">1</int>
+				<int key="NSWindowBacking">2</int>
+				<string key="NSWindowRect">{{72, 251}, {490, 489}}</string>
+				<int key="NSWTFlags">536871936</int>
+				<string key="NSWindowTitle"/>
+				<string key="NSWindowClass">NSWindow</string>
+				<nil key="NSViewClass"/>
+				<string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
+				<string key="NSWindowContentMinSize">{72, 5}</string>
+				<object class="NSView" key="NSWindowView" id="197525436">
+					<nil key="NSNextResponder"/>
+					<int key="NSvFlags">264</int>
+					<object class="NSMutableArray" key="NSSubviews">
+						<bool key="EncodedWithXMLCoder">YES</bool>
+						<object class="NSBox" id="469837363">
+							<reference key="NSNextResponder" ref="197525436"/>
+							<int key="NSvFlags">272</int>
+							<object class="NSMutableArray" key="NSSubviews">
+								<bool key="EncodedWithXMLCoder">YES</bool>
+								<object class="NSView" id="966817352">
+									<reference key="NSNextResponder" ref="469837363"/>
+									<int key="NSvFlags">256</int>
+									<object class="NSMutableArray" key="NSSubviews">
+										<bool key="EncodedWithXMLCoder">YES</bool>
+										<object class="NSTextField" id="997378142">
+											<reference key="NSNextResponder" ref="966817352"/>
+											<int key="NSvFlags">290</int>
+											<string key="NSFrame">{{17, 36}, {456, 70}}</string>
+											<reference key="NSSuperview" ref="966817352"/>
+											<bool key="NSEnabled">YES</bool>
+											<object class="NSTextFieldCell" key="NSCell" id="509794736">
+												<int key="NSCellFlags">67239424</int>
+												<int key="NSCellFlags2">272760832</int>
+												<string key="NSContents">Providing your email address is optional and will allow us contact you in case we need more details. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed arcu urna, pulvinar sit amet, tincidunt ac, fermentum ut, ligula. Quisque mi. Duis lectus. Vestibulum velit. Morbi turpis. Nunc at diam consectetur turpis volutpat tristique. Donec quis diam. Suspendisse scelerisque.</string>
+												<object class="NSFont" key="NSSupport" id="26">
+													<string key="NSName">LucidaGrande</string>
+													<double key="NSSize">11</double>
+													<int key="NSfFlags">3100</int>
+												</object>
+												<reference key="NSControlView" ref="997378142"/>
+												<object class="NSColor" key="NSBackgroundColor" id="420457920">
+													<int key="NSColorSpace">6</int>
+													<string key="NSCatalogName">System</string>
+													<string key="NSColorName">controlColor</string>
+													<object class="NSColor" key="NSColor">
+														<int key="NSColorSpace">3</int>
+														<bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
+													</object>
+												</object>
+												<object class="NSColor" key="NSTextColor" id="800255527">
+													<int key="NSColorSpace">6</int>
+													<string key="NSCatalogName">System</string>
+													<string key="NSColorName">controlTextColor</string>
+													<object class="NSColor" key="NSColor" id="908763363">
+														<int key="NSColorSpace">3</int>
+														<bytes key="NSWhite">MAA</bytes>
+													</object>
+												</object>
+											</object>
+										</object>
+										<object class="NSTextField" id="975305147">
+											<reference key="NSNextResponder" ref="966817352"/>
+											<int key="NSvFlags">290</int>
+											<string key="NSFrame">{{87, 9}, {195, 19}}</string>
+											<reference key="NSSuperview" ref="966817352"/>
+											<bool key="NSEnabled">YES</bool>
+											<object class="NSTextFieldCell" key="NSCell" id="592393645">
+												<int key="NSCellFlags">-1804468671</int>
+												<int key="NSCellFlags2">272761856</int>
+												<string key="NSContents"/>
+												<reference key="NSSupport" ref="26"/>
+												<string key="NSPlaceholderString">optional</string>
+												<reference key="NSControlView" ref="975305147"/>
+												<bool key="NSDrawsBackground">YES</bool>
+												<object class="NSColor" key="NSBackgroundColor" id="128478752">
+													<int key="NSColorSpace">6</int>
+													<string key="NSCatalogName">System</string>
+													<string key="NSColorName">textBackgroundColor</string>
+													<object class="NSColor" key="NSColor">
+														<int key="NSColorSpace">3</int>
+														<bytes key="NSWhite">MQA</bytes>
+													</object>
+												</object>
+												<object class="NSColor" key="NSTextColor" id="734930533">
+													<int key="NSColorSpace">6</int>
+													<string key="NSCatalogName">System</string>
+													<string key="NSColorName">textColor</string>
+													<reference key="NSColor" ref="908763363"/>
+												</object>
+											</object>
+										</object>
+										<object class="NSTextField" id="268211031">
+											<reference key="NSNextResponder" ref="966817352"/>
+											<int key="NSvFlags">292</int>
+											<string key="NSFrame">{{17, 11}, {65, 14}}</string>
+											<reference key="NSSuperview" ref="966817352"/>
+											<bool key="NSEnabled">YES</bool>
+											<object class="NSTextFieldCell" key="NSCell" id="461570326">
+												<int key="NSCellFlags">68288064</int>
+												<int key="NSCellFlags2">71435264</int>
+												<string key="NSContents">EmailLabel:</string>
+												<reference key="NSSupport" ref="26"/>
+												<reference key="NSControlView" ref="268211031"/>
+												<reference key="NSBackgroundColor" ref="420457920"/>
+												<reference key="NSTextColor" ref="800255527"/>
+											</object>
+										</object>
+										<object class="NSButton" id="538303250">
+											<reference key="NSNextResponder" ref="966817352"/>
+											<int key="NSvFlags">289</int>
+											<string key="NSFrame">{{456, 10}, {16, 17}}</string>
+											<reference key="NSSuperview" ref="966817352"/>
+											<bool key="NSEnabled">YES</bool>
+											<object class="NSButtonCell" key="NSCell" id="778004767">
+												<int key="NSCellFlags">-2080244224</int>
+												<int key="NSCellFlags2">0</int>
+												<string key="NSContents">Privacy Policy</string>
+												<object class="NSFont" key="NSSupport" id="222882491">
+													<string key="NSName">LucidaGrande</string>
+													<double key="NSSize">13</double>
+													<int key="NSfFlags">1044</int>
+												</object>
+												<reference key="NSControlView" ref="538303250"/>
+												<int key="NSButtonFlags">-2040250113</int>
+												<int key="NSButtonFlags2">36</int>
+												<object class="NSCustomResource" key="NSNormalImage">
+													<string key="NSClassName">NSImage</string>
+													<string key="NSResourceName">goArrow</string>
+												</object>
+												<string key="NSAlternateContents"/>
+												<string key="NSKeyEquivalent"/>
+												<int key="NSPeriodicDelay">400</int>
+												<int key="NSPeriodicInterval">75</int>
+											</object>
+										</object>
+										<object class="NSTextField" id="655227981">
+											<reference key="NSNextResponder" ref="966817352"/>
+											<int key="NSvFlags">289</int>
+											<string key="NSFrame">{{355, 11}, {100, 14}}</string>
+											<reference key="NSSuperview" ref="966817352"/>
+											<bool key="NSEnabled">YES</bool>
+											<object class="NSTextFieldCell" key="NSCell" id="1012850565">
+												<int key="NSCellFlags">68288064</int>
+												<int key="NSCellFlags2">4326400</int>
+												<string key="NSContents">PrivacyPolicyLabel</string>
+												<reference key="NSSupport" ref="26"/>
+												<reference key="NSControlView" ref="655227981"/>
+												<reference key="NSBackgroundColor" ref="420457920"/>
+												<reference key="NSTextColor" ref="800255527"/>
+											</object>
+										</object>
+									</object>
+									<string key="NSFrameSize">{490, 114}</string>
+									<reference key="NSSuperview" ref="469837363"/>
+								</object>
+							</object>
+							<string key="NSFrame">{{0, 51}, {490, 114}}</string>
+							<reference key="NSSuperview" ref="197525436"/>
+							<string key="NSOffsets">{0, 0}</string>
+							<object class="NSTextFieldCell" key="NSTitleCell">
+								<int key="NSCellFlags">67239424</int>
+								<int key="NSCellFlags2">0</int>
+								<string key="NSContents">Title</string>
+								<object class="NSFont" key="NSSupport" id="668643277">
+									<string key="NSName">LucidaGrande</string>
+									<double key="NSSize">11</double>
+									<int key="NSfFlags">16</int>
+								</object>
+								<reference key="NSBackgroundColor" ref="128478752"/>
+								<object class="NSColor" key="NSTextColor">
+									<int key="NSColorSpace">3</int>
+									<bytes key="NSWhite">MCAwLjgwMDAwMDAxAA</bytes>
+								</object>
+							</object>
+							<reference key="NSContentView" ref="966817352"/>
+							<int key="NSBorderType">0</int>
+							<int key="NSBoxType">3</int>
+							<int key="NSTitlePosition">0</int>
+							<bool key="NSTransparent">NO</bool>
+						</object>
+						<object class="NSButton" id="219938755">
+							<reference key="NSNextResponder" ref="197525436"/>
+							<int key="NSvFlags">289</int>
+							<string key="NSFrame">{{330, 12}, {146, 32}}</string>
+							<reference key="NSSuperview" ref="197525436"/>
+							<bool key="NSEnabled">YES</bool>
+							<object class="NSButtonCell" key="NSCell" id="733475259">
+								<int key="NSCellFlags">67239424</int>
+								<int key="NSCellFlags2">134217728</int>
+								<string key="NSContents">SendReportLabel</string>
+								<reference key="NSSupport" ref="222882491"/>
+								<reference key="NSControlView" ref="219938755"/>
+								<int key="NSButtonFlags">-2038284033</int>
+								<int key="NSButtonFlags2">129</int>
+								<reference key="NSAlternateImage" ref="222882491"/>
+								<string key="NSAlternateContents"/>
+								<string type="base64-UTF8" key="NSKeyEquivalent">DQ</string>
+								<int key="NSPeriodicDelay">200</int>
+								<int key="NSPeriodicInterval">25</int>
+							</object>
+						</object>
+						<object class="NSButton" id="409721323">
+							<reference key="NSNextResponder" ref="197525436"/>
+							<int key="NSvFlags">289</int>
+							<string key="NSFrame">{{214, 12}, {116, 32}}</string>
+							<reference key="NSSuperview" ref="197525436"/>
+							<bool key="NSEnabled">YES</bool>
+							<object class="NSButtonCell" key="NSCell" id="586160416">
+								<int key="NSCellFlags">67239424</int>
+								<int key="NSCellFlags2">134217728</int>
+								<string key="NSContents">CancelLabel</string>
+								<reference key="NSSupport" ref="222882491"/>
+								<reference key="NSControlView" ref="409721323"/>
+								<int key="NSButtonFlags">-2038284033</int>
+								<int key="NSButtonFlags2">129</int>
+								<reference key="NSAlternateImage" ref="222882491"/>
+								<string key="NSAlternateContents"/>
+								<string type="base64-UTF8" key="NSKeyEquivalent">Gw</string>
+								<int key="NSPeriodicDelay">200</int>
+								<int key="NSPeriodicInterval">25</int>
+							</object>
+						</object>
+						<object class="NSBox" id="468151514">
+							<reference key="NSNextResponder" ref="197525436"/>
+							<int key="NSvFlags">256</int>
+							<object class="NSMutableArray" key="NSSubviews">
+								<bool key="EncodedWithXMLCoder">YES</bool>
+								<object class="NSView" id="1059038623">
+									<reference key="NSNextResponder" ref="468151514"/>
+									<int key="NSvFlags">256</int>
+									<object class="NSMutableArray" key="NSSubviews">
+										<bool key="EncodedWithXMLCoder">YES</bool>
+										<object class="NSTextField" id="375247105">
+											<reference key="NSNextResponder" ref="1059038623"/>
+											<int key="NSvFlags">266</int>
+											<string key="NSFrame">{{17, 83}, {456, 154}}</string>
+											<reference key="NSSuperview" ref="1059038623"/>
+											<bool key="NSEnabled">YES</bool>
+											<object class="NSTextFieldCell" key="NSCell" id="188082030">
+												<int key="NSCellFlags">67239424</int>
+												<int key="NSCellFlags2">272760832</int>
+												<string type="base64-UTF8" key="NSContents">VGhlIHN5c3RlbSBhbmQgb3RoZXIgYXBwbGljYXRpb25zIGhhdmUgbm90IGJlZW4gYWZmZWN0ZWQuIEEg
+cmVwb3J0IGhhcyBiZWVuIGNyZWF0ZWQgdGhhdCB5b3UgY2FuIHNlbmQgdG8gPFJlYWxseSBMb25nIENv
+bXBhbnkgTmFtZT4gdG8gaGVscCBpZGVudGlmeSB0aGUgcHJvYmxlbS4gTG9yZW0gaXBzdW0gZG9sb3Ig
+c2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gU2VkIGFyY3UgdXJuYSwgcHVsdmlu
+YXIgc2l0IGFtZXQsIHRpbmNpZHVudCBhYywgZmVybWVudHVtIHV0LCBsaWd1bGEuIFF1aXNxdWUgbWku
+IER1aXMgbGVjdHVzLiBWZXN0aWJ1bHVtIHZlbGl0LiBNb3JiaSB0dXJwaXMuIE51bmMgYXQgZGlhbSBj
+b25zZWN0ZXR1ciB0dXJwaXMgdm9sdXRwYXQgdHJpc3RpcXVlLiBEb25lYyBxdWlzIGRpYW0uIFN1c3Bl
+bmRpc3NlIHNjZWxlcmlzcXVlLiBRdWlzcXVlIHB1bHZpbmFyIG1pIGlkIHB1cnVzLiBFdGlhbSB2aXRh
+ZSB0dXJwaXMgdml0YWUgbmVxdWUgcG9ydGEgY29uZ3VlLgoKUGxlYXNlIGhlbHAgdXMgZml4IHRoZSBw
+cm9ibGVtIGJ5IGRlc2NyaWJpbmcgd2hhdCBoYXBwZW5lZCBiZWZvcmUgdGhlIGNyYXNoLiBMb3JlbSBp
+cHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0LiBTZWQgYXJjdSB1
+cm5hLCBwdWx2aW5hciBzaXQgYW1ldCwgdGluY2lkdW50IGFjLCBmZXJtZW50dW0gdXQsIGxpZ3VsYS4g
+UXVpc3F1ZSBtaS4gRHVpcyBsZWN0dXMuA</string>
+												<reference key="NSSupport" ref="26"/>
+												<reference key="NSControlView" ref="375247105"/>
+												<reference key="NSBackgroundColor" ref="420457920"/>
+												<reference key="NSTextColor" ref="800255527"/>
+											</object>
+										</object>
+										<object class="NSTextField" id="996404163">
+											<reference key="NSNextResponder" ref="1059038623"/>
+											<int key="NSvFlags">274</int>
+											<string key="NSFrame">{{20, 14}, {450, 61}}</string>
+											<reference key="NSSuperview" ref="1059038623"/>
+											<bool key="NSEnabled">YES</bool>
+											<object class="NSTextFieldCell" key="NSCell" id="242564194">
+												<int key="NSCellFlags">341966337</int>
+												<int key="NSCellFlags2">272760832</int>
+												<string key="NSContents">Line 1 Line 1 Line 1 Line 1 Line 1 Line 1 Line 1 Line 1 Line 1 Line 1 Line 1 Line 1 Line 2 Line 2 Line 2 Line 2 Line 2 Line 2 Line 2 Line 2 Line 2 Line 2 Line 2 Line 2 Line 3 Line 3 Line 3 Line 3 Line 3 Line 3 Line 3 Line 3 Line 3 Line 3 Line 3 Line 3 Line 4 Line 4 Line 4 Line 4 Line 4 Line 4 Line 4 Line 4 Line 4 Line 4 Line 4 Line 4 </string>
+												<reference key="NSSupport" ref="26"/>
+												<reference key="NSControlView" ref="996404163"/>
+												<bool key="NSDrawsBackground">YES</bool>
+												<reference key="NSBackgroundColor" ref="128478752"/>
+												<reference key="NSTextColor" ref="734930533"/>
+											</object>
+										</object>
+										<object class="NSBox" id="667608859">
+											<reference key="NSNextResponder" ref="1059038623"/>
+											<int key="NSvFlags">256</int>
+											<object class="NSMutableArray" key="NSSubviews">
+												<bool key="EncodedWithXMLCoder">YES</bool>
+												<object class="NSView" id="971021844">
+													<reference key="NSNextResponder" ref="667608859"/>
+													<int key="NSvFlags">256</int>
+													<object class="NSMutableArray" key="NSSubviews">
+														<bool key="EncodedWithXMLCoder">YES</bool>
+														<object class="NSTextField" id="1032334641">
+															<reference key="NSNextResponder" ref="971021844"/>
+															<int key="NSvFlags">266</int>
+															<string key="NSFrame">{{85, 10}, {381, 54}}</string>
+															<reference key="NSSuperview" ref="971021844"/>
+															<bool key="NSEnabled">YES</bool>
+															<object class="NSTextFieldCell" key="NSCell" id="316557784">
+																<int key="NSCellFlags">67239424</int>
+																<int key="NSCellFlags2">272629760</int>
+																<string key="NSContents">The application &lt;Really Long App Name Here&gt; has quit unexpectedly.</string>
+																<object class="NSFont" key="NSSupport">
+																	<string key="NSName">LucidaGrande-Bold</string>
+																	<double key="NSSize">14</double>
+																	<int key="NSfFlags">16</int>
+																</object>
+																<reference key="NSControlView" ref="1032334641"/>
+																<reference key="NSBackgroundColor" ref="420457920"/>
+																<reference key="NSTextColor" ref="800255527"/>
+															</object>
+														</object>
+														<object class="NSImageView" id="594334723">
+															<reference key="NSNextResponder" ref="971021844"/>
+															<int key="NSvFlags">268</int>
+															<object class="NSMutableSet" key="NSDragTypes">
+																<bool key="EncodedWithXMLCoder">YES</bool>
+																<object class="NSArray" key="set.sortedObjects">
+																	<bool key="EncodedWithXMLCoder">YES</bool>
+																	<string>Apple PDF pasteboard type</string>
+																	<string>Apple PICT pasteboard type</string>
+																	<string>Apple PNG pasteboard type</string>
+																	<string>NSFilenamesPboardType</string>
+																	<string>NeXT Encapsulated PostScript v1.2 pasteboard type</string>
+																	<string>NeXT TIFF v4.0 pasteboard type</string>
+																</object>
+															</object>
+															<string key="NSFrame">{{16, 0}, {64, 64}}</string>
+															<reference key="NSSuperview" ref="971021844"/>
+															<bool key="NSEnabled">YES</bool>
+															<object class="NSImageCell" key="NSCell" id="465445685">
+																<int key="NSCellFlags">130560</int>
+																<int key="NSCellFlags2">33554432</int>
+																<object class="NSCustomResource" key="NSContents">
+																	<string key="NSClassName">NSImage</string>
+																	<string key="NSResourceName">NSApplicationIcon</string>
+																</object>
+																<int key="NSAlign">0</int>
+																<int key="NSScale">0</int>
+																<int key="NSStyle">0</int>
+																<bool key="NSAnimates">NO</bool>
+															</object>
+															<bool key="NSEditable">YES</bool>
+														</object>
+													</object>
+													<string key="NSFrameSize">{482, 70}</string>
+													<reference key="NSSuperview" ref="667608859"/>
+												</object>
+											</object>
+											<string key="NSFrame">{{4, 245}, {482, 70}}</string>
+											<reference key="NSSuperview" ref="1059038623"/>
+											<string key="NSOffsets">{0, 0}</string>
+											<object class="NSTextFieldCell" key="NSTitleCell">
+												<int key="NSCellFlags">67239424</int>
+												<int key="NSCellFlags2">0</int>
+												<string key="NSContents">Title</string>
+												<reference key="NSSupport" ref="668643277"/>
+												<reference key="NSBackgroundColor" ref="128478752"/>
+												<object class="NSColor" key="NSTextColor">
+													<int key="NSColorSpace">3</int>
+													<bytes key="NSWhite">MCAwLjgwMDAwMDAxAA</bytes>
+												</object>
+											</object>
+											<reference key="NSContentView" ref="971021844"/>
+											<int key="NSBorderType">0</int>
+											<int key="NSBoxType">3</int>
+											<int key="NSTitlePosition">0</int>
+											<bool key="NSTransparent">NO</bool>
+										</object>
+									</object>
+									<string key="NSFrameSize">{490, 325}</string>
+									<reference key="NSSuperview" ref="468151514"/>
+								</object>
+							</object>
+							<string key="NSFrame">{{0, 160}, {490, 325}}</string>
+							<reference key="NSSuperview" ref="197525436"/>
+							<string key="NSOffsets">{0, 0}</string>
+							<object class="NSTextFieldCell" key="NSTitleCell">
+								<int key="NSCellFlags">67239424</int>
+								<int key="NSCellFlags2">0</int>
+								<string key="NSContents">Title</string>
+								<reference key="NSSupport" ref="668643277"/>
+								<reference key="NSBackgroundColor" ref="128478752"/>
+								<object class="NSColor" key="NSTextColor">
+									<int key="NSColorSpace">3</int>
+									<bytes key="NSWhite">MCAwLjgwMDAwMDAxAA</bytes>
+								</object>
+							</object>
+							<reference key="NSContentView" ref="1059038623"/>
+							<int key="NSBorderType">0</int>
+							<int key="NSBoxType">3</int>
+							<int key="NSTitlePosition">0</int>
+							<bool key="NSTransparent">NO</bool>
+						</object>
+						<object class="NSTextField" id="149448677">
+							<reference key="NSNextResponder" ref="197525436"/>
+							<int key="NSvFlags">268</int>
+							<string key="NSFrame">{{17, 20}, {163, 14}}</string>
+							<reference key="NSSuperview" ref="197525436"/>
+							<bool key="NSEnabled">YES</bool>
+							<object class="NSTextFieldCell" key="NSCell" id="690832321">
+								<int key="NSCellFlags">68288064</int>
+								<int key="NSCellFlags2">272630784</int>
+								<string key="NSContents">xx seconds.</string>
+								<reference key="NSSupport" ref="668643277"/>
+								<reference key="NSControlView" ref="149448677"/>
+								<reference key="NSBackgroundColor" ref="420457920"/>
+								<reference key="NSTextColor" ref="800255527"/>
+							</object>
+						</object>
+					</object>
+					<string key="NSFrameSize">{490, 489}</string>
+				</object>
+				<string key="NSScreenRect">{{0, 0}, {2560, 1578}}</string>
+				<string key="NSMinSize">{72, 27}</string>
+				<string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
+			</object>
+			<object class="NSUserDefaultsController" id="626548788">
+				<bool key="NSSharedInstance">YES</bool>
+			</object>
+		</object>
+		<object class="IBObjectContainer" key="IBDocument.Objects">
+			<object class="NSMutableArray" key="connectionRecords">
+				<bool key="EncodedWithXMLCoder">YES</bool>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">sendReport:</string>
+						<reference key="source" ref="273934324"/>
+						<reference key="destination" ref="219938755"/>
+					</object>
+					<int key="connectionID">45</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">cancel:</string>
+						<reference key="source" ref="273934324"/>
+						<reference key="destination" ref="409721323"/>
+					</object>
+					<int key="connectionID">46</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">showPrivacyPolicy:</string>
+						<reference key="source" ref="273934324"/>
+						<reference key="destination" ref="538303250"/>
+					</object>
+					<int key="connectionID">53</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBBindingConnection" key="connection">
+						<string key="label">value: emailValue</string>
+						<reference key="source" ref="975305147"/>
+						<reference key="destination" ref="273934324"/>
+						<object class="NSNibBindingConnector" key="connector">
+							<reference key="NSSource" ref="975305147"/>
+							<reference key="NSDestination" ref="273934324"/>
+							<string key="NSLabel">value: emailValue</string>
+							<string key="NSBinding">value</string>
+							<string key="NSKeyPath">emailValue</string>
+							<object class="NSDictionary" key="NSOptions">
+								<string key="NS.key.0">NSNullPlaceholder</string>
+								<string key="NS.object.0">optional</string>
+							</object>
+							<int key="NSNibBindingConnectorVersion">2</int>
+						</object>
+					</object>
+					<int key="connectionID">90</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBOutletConnection" key="connection">
+						<string key="label">initialFirstResponder</string>
+						<reference key="source" ref="762998835"/>
+						<reference key="destination" ref="219938755"/>
+					</object>
+					<int key="connectionID">91</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBBindingConnection" key="connection">
+						<string key="label">value: commentsValue</string>
+						<reference key="source" ref="996404163"/>
+						<reference key="destination" ref="273934324"/>
+						<object class="NSNibBindingConnector" key="connector">
+							<reference key="NSSource" ref="996404163"/>
+							<reference key="NSDestination" ref="273934324"/>
+							<string key="NSLabel">value: commentsValue</string>
+							<string key="NSBinding">value</string>
+							<string key="NSKeyPath">commentsValue</string>
+							<object class="NSDictionary" key="NSOptions">
+								<string key="NS.key.0">NSNullPlaceholder</string>
+								<string key="NS.object.0">optional comments</string>
+							</object>
+							<int key="NSNibBindingConnectorVersion">2</int>
+						</object>
+					</object>
+					<int key="connectionID">124</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBOutletConnection" key="connection">
+						<string key="label">nextKeyView</string>
+						<reference key="source" ref="975305147"/>
+						<reference key="destination" ref="219938755"/>
+					</object>
+					<int key="connectionID">125</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBOutletConnection" key="connection">
+						<string key="label">nextKeyView</string>
+						<reference key="source" ref="996404163"/>
+						<reference key="destination" ref="975305147"/>
+					</object>
+					<int key="connectionID">126</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBOutletConnection" key="connection">
+						<string key="label">nextKeyView</string>
+						<reference key="source" ref="219938755"/>
+						<reference key="destination" ref="996404163"/>
+					</object>
+					<int key="connectionID">127</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBOutletConnection" key="connection">
+						<string key="label">delegate</string>
+						<reference key="source" ref="996404163"/>
+						<reference key="destination" ref="273934324"/>
+					</object>
+					<int key="connectionID">128</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBOutletConnection" key="connection">
+						<string key="label">alertWindow_</string>
+						<reference key="source" ref="273934324"/>
+						<reference key="destination" ref="762998835"/>
+					</object>
+					<int key="connectionID">142</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBOutletConnection" key="connection">
+						<string key="label">preEmailBox_</string>
+						<reference key="source" ref="273934324"/>
+						<reference key="destination" ref="468151514"/>
+					</object>
+					<int key="connectionID">150</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBOutletConnection" key="connection">
+						<string key="label">headerBox_</string>
+						<reference key="source" ref="273934324"/>
+						<reference key="destination" ref="667608859"/>
+					</object>
+					<int key="connectionID">151</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBOutletConnection" key="connection">
+						<string key="label">emailSectionBox_</string>
+						<reference key="source" ref="273934324"/>
+						<reference key="destination" ref="469837363"/>
+					</object>
+					<int key="connectionID">152</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBOutletConnection" key="connection">
+						<string key="label">privacyLinkLabel_</string>
+						<reference key="source" ref="273934324"/>
+						<reference key="destination" ref="655227981"/>
+					</object>
+					<int key="connectionID">153</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBOutletConnection" key="connection">
+						<string key="label">commentMessage_</string>
+						<reference key="source" ref="273934324"/>
+						<reference key="destination" ref="375247105"/>
+					</object>
+					<int key="connectionID">154</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBOutletConnection" key="connection">
+						<string key="label">dialogTitle_</string>
+						<reference key="source" ref="273934324"/>
+						<reference key="destination" ref="1032334641"/>
+					</object>
+					<int key="connectionID">155</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBOutletConnection" key="connection">
+						<string key="label">emailLabel_</string>
+						<reference key="source" ref="273934324"/>
+						<reference key="destination" ref="268211031"/>
+					</object>
+					<int key="connectionID">156</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBOutletConnection" key="connection">
+						<string key="label">cancelButton_</string>
+						<reference key="source" ref="273934324"/>
+						<reference key="destination" ref="409721323"/>
+					</object>
+					<int key="connectionID">158</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBOutletConnection" key="connection">
+						<string key="label">sendButton_</string>
+						<reference key="source" ref="273934324"/>
+						<reference key="destination" ref="219938755"/>
+					</object>
+					<int key="connectionID">159</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBOutletConnection" key="connection">
+						<string key="label">emailEntryField_</string>
+						<reference key="source" ref="273934324"/>
+						<reference key="destination" ref="975305147"/>
+					</object>
+					<int key="connectionID">161</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBOutletConnection" key="connection">
+						<string key="label">privacyLinkArrow_</string>
+						<reference key="source" ref="273934324"/>
+						<reference key="destination" ref="538303250"/>
+					</object>
+					<int key="connectionID">162</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBOutletConnection" key="connection">
+						<string key="label">emailMessage_</string>
+						<reference key="source" ref="273934324"/>
+						<reference key="destination" ref="997378142"/>
+					</object>
+					<int key="connectionID">163</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBOutletConnection" key="connection">
+						<string key="label">commentsEntryField_</string>
+						<reference key="source" ref="273934324"/>
+						<reference key="destination" ref="996404163"/>
+					</object>
+					<int key="connectionID">176</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBBindingConnection" key="connection">
+						<string key="label">value: countdownMessage</string>
+						<reference key="source" ref="149448677"/>
+						<reference key="destination" ref="273934324"/>
+						<object class="NSNibBindingConnector" key="connector">
+							<reference key="NSSource" ref="149448677"/>
+							<reference key="NSDestination" ref="273934324"/>
+							<string key="NSLabel">value: countdownMessage</string>
+							<string key="NSBinding">value</string>
+							<string key="NSKeyPath">countdownMessage</string>
+							<int key="NSNibBindingConnectorVersion">2</int>
+						</object>
+					</object>
+					<int key="connectionID">194</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBOutletConnection" key="connection">
+						<string key="label">countdownLabel_</string>
+						<reference key="source" ref="273934324"/>
+						<reference key="destination" ref="149448677"/>
+					</object>
+					<int key="connectionID">208</int>
+				</object>
+			</object>
+			<object class="IBMutableOrderedSet" key="objectRecords">
+				<object class="NSArray" key="orderedObjects">
+					<bool key="EncodedWithXMLCoder">YES</bool>
+					<object class="IBObjectRecord">
+						<int key="objectID">0</int>
+						<reference key="object" ref="0"/>
+						<reference key="children" ref="504246249"/>
+						<nil key="parent"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">-2</int>
+						<reference key="object" ref="273934324"/>
+						<reference key="parent" ref="0"/>
+						<string key="objectName">File's Owner</string>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">-1</int>
+						<reference key="object" ref="388635980"/>
+						<reference key="parent" ref="0"/>
+						<string key="objectName">First Responder</string>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">-3</int>
+						<reference key="object" ref="220995958"/>
+						<reference key="parent" ref="0"/>
+						<string key="objectName">Application</string>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">1</int>
+						<reference key="object" ref="762998835"/>
+						<object class="NSMutableArray" key="children">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<reference ref="197525436"/>
+						</object>
+						<reference key="parent" ref="0"/>
+						<string key="objectName">Window</string>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">2</int>
+						<reference key="object" ref="197525436"/>
+						<object class="NSMutableArray" key="children">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<reference ref="219938755"/>
+							<reference ref="409721323"/>
+							<reference ref="469837363"/>
+							<reference ref="468151514"/>
+							<reference ref="149448677"/>
+						</object>
+						<reference key="parent" ref="762998835"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">12</int>
+						<reference key="object" ref="219938755"/>
+						<object class="NSMutableArray" key="children">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<reference ref="733475259"/>
+						</object>
+						<reference key="parent" ref="197525436"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">14</int>
+						<reference key="object" ref="409721323"/>
+						<object class="NSMutableArray" key="children">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<reference ref="586160416"/>
+						</object>
+						<reference key="parent" ref="197525436"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">132</int>
+						<reference key="object" ref="469837363"/>
+						<object class="NSMutableArray" key="children">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<reference ref="997378142"/>
+							<reference ref="975305147"/>
+							<reference ref="268211031"/>
+							<reference ref="538303250"/>
+							<reference ref="655227981"/>
+						</object>
+						<reference key="parent" ref="197525436"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">145</int>
+						<reference key="object" ref="468151514"/>
+						<object class="NSMutableArray" key="children">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<reference ref="375247105"/>
+							<reference ref="996404163"/>
+							<reference ref="667608859"/>
+						</object>
+						<reference key="parent" ref="197525436"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">189</int>
+						<reference key="object" ref="149448677"/>
+						<object class="NSMutableArray" key="children">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<reference ref="690832321"/>
+						</object>
+						<reference key="parent" ref="197525436"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">191</int>
+						<reference key="object" ref="626548788"/>
+						<reference key="parent" ref="0"/>
+						<string key="objectName">Shared User Defaults Controller</string>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">210</int>
+						<reference key="object" ref="733475259"/>
+						<reference key="parent" ref="219938755"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">211</int>
+						<reference key="object" ref="586160416"/>
+						<reference key="parent" ref="409721323"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">221</int>
+						<reference key="object" ref="690832321"/>
+						<reference key="parent" ref="149448677"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">58</int>
+						<reference key="object" ref="997378142"/>
+						<object class="NSMutableArray" key="children">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<reference ref="509794736"/>
+						</object>
+						<reference key="parent" ref="469837363"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">215</int>
+						<reference key="object" ref="509794736"/>
+						<reference key="parent" ref="997378142"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">18</int>
+						<reference key="object" ref="975305147"/>
+						<object class="NSMutableArray" key="children">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<reference ref="592393645"/>
+						</object>
+						<reference key="parent" ref="469837363"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">212</int>
+						<reference key="object" ref="592393645"/>
+						<reference key="parent" ref="975305147"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">20</int>
+						<reference key="object" ref="268211031"/>
+						<object class="NSMutableArray" key="children">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<reference ref="461570326"/>
+						</object>
+						<reference key="parent" ref="469837363"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">213</int>
+						<reference key="object" ref="461570326"/>
+						<reference key="parent" ref="268211031"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">48</int>
+						<reference key="object" ref="538303250"/>
+						<object class="NSMutableArray" key="children">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<reference ref="778004767"/>
+						</object>
+						<reference key="parent" ref="469837363"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">214</int>
+						<reference key="object" ref="778004767"/>
+						<reference key="parent" ref="538303250"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">66</int>
+						<reference key="object" ref="655227981"/>
+						<object class="NSMutableArray" key="children">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<reference ref="1012850565"/>
+						</object>
+						<reference key="parent" ref="469837363"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">216</int>
+						<reference key="object" ref="1012850565"/>
+						<reference key="parent" ref="655227981"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">8</int>
+						<reference key="object" ref="375247105"/>
+						<object class="NSMutableArray" key="children">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<reference ref="188082030"/>
+						</object>
+						<reference key="parent" ref="468151514"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">217</int>
+						<reference key="object" ref="188082030"/>
+						<reference key="parent" ref="375247105"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">116</int>
+						<reference key="object" ref="996404163"/>
+						<object class="NSMutableArray" key="children">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<reference ref="242564194"/>
+						</object>
+						<reference key="parent" ref="468151514"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">218</int>
+						<reference key="object" ref="242564194"/>
+						<reference key="parent" ref="996404163"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">147</int>
+						<reference key="object" ref="667608859"/>
+						<object class="NSMutableArray" key="children">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<reference ref="1032334641"/>
+							<reference ref="594334723"/>
+						</object>
+						<reference key="parent" ref="468151514"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">3</int>
+						<reference key="object" ref="1032334641"/>
+						<object class="NSMutableArray" key="children">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<reference ref="316557784"/>
+						</object>
+						<reference key="parent" ref="667608859"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">219</int>
+						<reference key="object" ref="316557784"/>
+						<reference key="parent" ref="1032334641"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">6</int>
+						<reference key="object" ref="594334723"/>
+						<object class="NSMutableArray" key="children">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<reference ref="465445685"/>
+						</object>
+						<reference key="parent" ref="667608859"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">220</int>
+						<reference key="object" ref="465445685"/>
+						<reference key="parent" ref="594334723"/>
+					</object>
+				</object>
+			</object>
+			<object class="NSMutableDictionary" key="flattenedProperties">
+				<bool key="EncodedWithXMLCoder">YES</bool>
+				<object class="NSArray" key="dict.sortedKeys">
+					<bool key="EncodedWithXMLCoder">YES</bool>
+					<string>-3.ImportedFromIB2</string>
+					<string>1.IBEditorWindowLastContentRect</string>
+					<string>1.IBWindowTemplateEditedContentRect</string>
+					<string>1.ImportedFromIB2</string>
+					<string>1.windowTemplate.hasMinSize</string>
+					<string>1.windowTemplate.minSize</string>
+					<string>116.CustomClassName</string>
+					<string>116.ImportedFromIB2</string>
+					<string>12.ImportedFromIB2</string>
+					<string>132.ImportedFromIB2</string>
+					<string>14.ImportedFromIB2</string>
+					<string>145.ImportedFromIB2</string>
+					<string>147.ImportedFromIB2</string>
+					<string>18.CustomClassName</string>
+					<string>18.ImportedFromIB2</string>
+					<string>189.ImportedFromIB2</string>
+					<string>191.ImportedFromIB2</string>
+					<string>2.ImportedFromIB2</string>
+					<string>20.ImportedFromIB2</string>
+					<string>3.ImportedFromIB2</string>
+					<string>48.ImportedFromIB2</string>
+					<string>58.ImportedFromIB2</string>
+					<string>6.ImportedFromIB2</string>
+					<string>66.ImportedFromIB2</string>
+					<string>8.ImportedFromIB2</string>
+				</object>
+				<object class="NSMutableArray" key="dict.values">
+					<bool key="EncodedWithXMLCoder">YES</bool>
+					<boolean value="YES"/>
+					<string>{{0, 656}, {490, 489}}</string>
+					<string>{{0, 656}, {490, 489}}</string>
+					<boolean value="YES"/>
+					<boolean value="YES"/>
+					<string>{72, 5}</string>
+					<string>LengthLimitingTextField</string>
+					<boolean value="YES"/>
+					<boolean value="YES"/>
+					<boolean value="YES"/>
+					<boolean value="YES"/>
+					<boolean value="YES"/>
+					<boolean value="YES"/>
+					<string>LengthLimitingTextField</string>
+					<boolean value="YES"/>
+					<boolean value="YES"/>
+					<boolean value="YES"/>
+					<boolean value="YES"/>
+					<boolean value="YES"/>
+					<boolean value="YES"/>
+					<boolean value="YES"/>
+					<boolean value="YES"/>
+					<boolean value="YES"/>
+					<boolean value="YES"/>
+					<boolean value="YES"/>
+				</object>
+			</object>
+			<object class="NSMutableDictionary" key="unlocalizedProperties">
+				<bool key="EncodedWithXMLCoder">YES</bool>
+				<reference key="dict.sortedKeys" ref="0"/>
+				<object class="NSMutableArray" key="dict.values">
+					<bool key="EncodedWithXMLCoder">YES</bool>
+				</object>
+			</object>
+			<nil key="activeLocalization"/>
+			<object class="NSMutableDictionary" key="localizations">
+				<bool key="EncodedWithXMLCoder">YES</bool>
+				<reference key="dict.sortedKeys" ref="0"/>
+				<object class="NSMutableArray" key="dict.values">
+					<bool key="EncodedWithXMLCoder">YES</bool>
+				</object>
+			</object>
+			<nil key="sourceID"/>
+			<int key="maxID">221</int>
+		</object>
+		<object class="IBClassDescriber" key="IBDocument.Classes">
+			<object class="NSMutableArray" key="referencedPartialClassDescriptions">
+				<bool key="EncodedWithXMLCoder">YES</bool>
+				<object class="IBPartialClassDescription">
+					<string key="className">LengthLimitingTextField</string>
+					<string key="superclassName">NSTextField</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBUserSource</string>
+						<string key="minorKey"/>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">Reporter</string>
+					<string key="superclassName">NSObject</string>
+					<object class="NSMutableDictionary" key="actions">
+						<bool key="EncodedWithXMLCoder">YES</bool>
+						<object class="NSArray" key="dict.sortedKeys">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<string>cancel:</string>
+							<string>sendReport:</string>
+							<string>showPrivacyPolicy:</string>
+						</object>
+						<object class="NSMutableArray" key="dict.values">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<string>id</string>
+							<string>id</string>
+							<string>id</string>
+						</object>
+					</object>
+					<object class="NSMutableDictionary" key="outlets">
+						<bool key="EncodedWithXMLCoder">YES</bool>
+						<object class="NSArray" key="dict.sortedKeys">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<string>alertWindow_</string>
+							<string>cancelButton_</string>
+							<string>commentMessage_</string>
+							<string>commentsEntryField_</string>
+							<string>countdownLabel_</string>
+							<string>dialogTitle_</string>
+							<string>emailEntryField_</string>
+							<string>emailLabel_</string>
+							<string>emailMessage_</string>
+							<string>emailSectionBox_</string>
+							<string>headerBox_</string>
+							<string>preEmailBox_</string>
+							<string>privacyLinkArrow_</string>
+							<string>privacyLinkLabel_</string>
+							<string>sendButton_</string>
+						</object>
+						<object class="NSMutableArray" key="dict.values">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<string>NSWindow</string>
+							<string>NSButton</string>
+							<string>NSTextField</string>
+							<string>LengthLimitingTextField</string>
+							<string>NSTextField</string>
+							<string>NSTextField</string>
+							<string>LengthLimitingTextField</string>
+							<string>NSTextField</string>
+							<string>NSTextField</string>
+							<string>NSBox</string>
+							<string>NSBox</string>
+							<string>NSBox</string>
+							<string>NSView</string>
+							<string>NSTextField</string>
+							<string>NSButton</string>
+						</object>
+					</object>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBUserSource</string>
+						<string key="minorKey"/>
+					</object>
+				</object>
+			</object>
+		</object>
+		<int key="IBDocument.localizationMode">0</int>
+		<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
+		<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies">
+			<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
+			<integer value="1050" key="NS.object.0"/>
+		</object>
+		<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
+			<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
+			<integer value="3000" key="NS.object.0"/>
+		</object>
+		<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
+		<string key="IBDocument.LastKnownRelativeProjectPath">../Breakpad.xcodeproj</string>
+		<int key="IBDocument.defaultPropertyAccessControl">3</int>
+		<object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
+			<bool key="EncodedWithXMLCoder">YES</bool>
+			<object class="NSArray" key="dict.sortedKeys">
+				<bool key="EncodedWithXMLCoder">YES</bool>
+				<string>NSApplicationIcon</string>
+				<string>goArrow</string>
+			</object>
+			<object class="NSMutableArray" key="dict.values">
+				<bool key="EncodedWithXMLCoder">YES</bool>
+				<string>{128, 128}</string>
+				<string>{128, 128}</string>
+			</object>
+		</object>
+	</data>
+</archive>
diff --git a/google-breakpad/src/client/mac/sender/English.lproj/InfoPlist.strings b/google-breakpad/src/client/mac/sender/English.lproj/InfoPlist.strings
new file mode 100644
index 0000000..65d1618
--- /dev/null
+++ b/google-breakpad/src/client/mac/sender/English.lproj/InfoPlist.strings
Binary files differ
diff --git a/google-breakpad/src/client/mac/sender/English.lproj/Localizable.strings b/google-breakpad/src/client/mac/sender/English.lproj/Localizable.strings
new file mode 100644
index 0000000..5f1cc82
--- /dev/null
+++ b/google-breakpad/src/client/mac/sender/English.lproj/Localizable.strings
Binary files differ
diff --git a/google-breakpad/src/client/mac/sender/ReporterIcon.graffle b/google-breakpad/src/client/mac/sender/ReporterIcon.graffle
new file mode 100644
index 0000000..14a0e7c
--- /dev/null
+++ b/google-breakpad/src/client/mac/sender/ReporterIcon.graffle
@@ -0,0 +1,2489 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>ActiveLayerIndex</key>
+	<integer>0</integer>
+	<key>ApplicationVersion</key>
+	<array>
+		<string>com.omnigroup.OmniGrafflePro</string>
+		<string>137.6.0.106738</string>
+	</array>
+	<key>AutoAdjust</key>
+	<false/>
+	<key>BackgroundGraphic</key>
+	<dict>
+		<key>Bounds</key>
+		<string>{{0, 0}, {512, 512}}</string>
+		<key>Class</key>
+		<string>SolidGraphic</string>
+		<key>FontInfo</key>
+		<dict>
+			<key>Font</key>
+			<string>CalisMTBol</string>
+			<key>Size</key>
+			<real>112</real>
+		</dict>
+		<key>ID</key>
+		<integer>2</integer>
+		<key>Style</key>
+		<dict>
+			<key>fill</key>
+			<dict>
+				<key>Color</key>
+				<dict>
+					<key>a</key>
+					<string>0</string>
+					<key>b</key>
+					<string>0</string>
+					<key>g</key>
+					<string>0.852018</string>
+					<key>r</key>
+					<string>0.998962</string>
+				</dict>
+			</dict>
+			<key>shadow</key>
+			<dict>
+				<key>Draws</key>
+				<string>NO</string>
+			</dict>
+			<key>stroke</key>
+			<dict>
+				<key>Draws</key>
+				<string>NO</string>
+			</dict>
+		</dict>
+	</dict>
+	<key>CanvasOrigin</key>
+	<string>{0, 0}</string>
+	<key>CanvasSize</key>
+	<string>{512, 512}</string>
+	<key>ColumnAlign</key>
+	<integer>1</integer>
+	<key>ColumnSpacing</key>
+	<real>36</real>
+	<key>CreationDate</key>
+	<string>2008-11-14 16:58:15 -0700</string>
+	<key>Creator</key>
+	<string>John P. Developer</string>
+	<key>DisplayScale</key>
+	<string>1 pt = 1 px</string>
+	<key>FileType</key>
+	<string>flat</string>
+	<key>GraphDocumentVersion</key>
+	<integer>6</integer>
+	<key>GraphicsList</key>
+	<array>
+		<dict>
+			<key>Bounds</key>
+			<string>{{33.9443, 35.3885}, {444.111, 437.112}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Font</key>
+				<string>CalisMTBol</string>
+				<key>Size</key>
+				<real>112</real>
+			</dict>
+			<key>ID</key>
+			<integer>31</integer>
+			<key>Rotation</key>
+			<real>270</real>
+			<key>Shape</key>
+			<string>Bezier</string>
+			<key>ShapeData</key>
+			<dict>
+				<key>UnitPoints</key>
+				<array>
+					<string>{-0.5, -0.439247}</string>
+					<string>{-0.5, -0.485429}</string>
+					<string>{-0.446294, -0.512626}</string>
+					<string>{-0.409932, -0.494153}</string>
+					<string>{-0.373569, -0.47568}</string>
+					<string>{0.436363, -0.0733799}</string>
+					<string>{0.472729, -0.0549059}</string>
+					<string>{0.50909, -0.0364333}</string>
+					<string>{0.509091, 0.0364345}</string>
+					<string>{0.472729, 0.0549059}</string>
+					<string>{0.436368, 0.0733802}</string>
+					<string>{-0.373569, 0.475681}</string>
+					<string>{-0.409932, 0.494153}</string>
+					<string>{-0.446294, 0.512626}</string>
+					<string>{-0.500001, 0.485429}</string>
+					<string>{-0.5, 0.439247}</string>
+					<string>{-0.49998, 0.393072}</string>
+					<string>{-0.500002, -0.393066}</string>
+				</array>
+			</dict>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<string>0</string>
+						<key>g</key>
+						<string>0.770962</string>
+						<key>r</key>
+						<string>0.997971</string>
+					</dict>
+					<key>Draws</key>
+					<string>NO</string>
+					<key>FillType</key>
+					<integer>3</integer>
+					<key>GradientCenter</key>
+					<string>{-0.609524, 0}</string>
+					<key>GradientColor</key>
+					<dict>
+						<key>b</key>
+						<string>0</string>
+						<key>g</key>
+						<string>0.911574</string>
+						<key>r</key>
+						<string>0.998779</string>
+					</dict>
+					<key>MiddleFraction</key>
+					<real>0.6111111044883728</real>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>a</key>
+						<string>0.43</string>
+						<key>b</key>
+						<string>0</string>
+						<key>g</key>
+						<string>0</string>
+						<key>r</key>
+						<string>0</string>
+					</dict>
+					<key>Draws</key>
+					<string>NO</string>
+					<key>Fuzziness</key>
+					<real>7.2213706970214844</real>
+					<key>ShadowVector</key>
+					<string>{0, 6}</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<string>0</string>
+						<key>g</key>
+						<string>0.766903</string>
+						<key>r</key>
+						<string>0.997925</string>
+					</dict>
+					<key>Width</key>
+					<real>7</real>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Pad</key>
+				<integer>0</integer>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+			<key>TextPlacement</key>
+			<integer>0</integer>
+			<key>TextRelativeArea</key>
+			<string>{{0.06, 0.17}, {0.88, 0.5}}</string>
+			<key>TextRotation</key>
+			<real>90</real>
+			<key>Wrap</key>
+			<string>NO</string>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{3.89085, 67.8908}, {404.218, 332}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Font</key>
+				<string>CalisMTBol</string>
+				<key>Size</key>
+				<real>112</real>
+			</dict>
+			<key>ID</key>
+			<integer>30</integer>
+			<key>Rotation</key>
+			<real>270</real>
+			<key>Shape</key>
+			<string>Bezier</string>
+			<key>ShapeData</key>
+			<dict>
+				<key>UnitPoints</key>
+				<array>
+					<string>{-0.5, -0.5}</string>
+					<string>{-0.459695, -0.475464}</string>
+					<string>{0.429465, 0.0537758}</string>
+					<string>{0.469773, 0.0783133}</string>
+					<string>{0.510074, 0.102849}</string>
+					<string>{0.510077, 0.198357}</string>
+					<string>{0.469773, 0.222892}</string>
+					<string>{0.429473, 0.247428}</string>
+					<string>{-0.00521517, 0.499998}</string>
+					<string>{-0.00521785, 0.5}</string>
+					<string>{-0.00521713, -0.113381}</string>
+					<string>{-0.44962, -0.458615}</string>
+				</array>
+			</dict>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>a</key>
+						<string>0</string>
+						<key>b</key>
+						<string>1</string>
+						<key>g</key>
+						<string>1</string>
+						<key>r</key>
+						<string>1</string>
+					</dict>
+					<key>FillType</key>
+					<integer>2</integer>
+					<key>GradientAngle</key>
+					<real>180</real>
+					<key>GradientCenter</key>
+					<string>{-0.609524, 0}</string>
+					<key>GradientColor</key>
+					<dict>
+						<key>a</key>
+						<string>0.5</string>
+						<key>w</key>
+						<string>1</string>
+					</dict>
+					<key>MiddleFraction</key>
+					<real>0.6111111044883728</real>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>a</key>
+						<string>0.51</string>
+						<key>b</key>
+						<string>0</string>
+						<key>g</key>
+						<string>0</string>
+						<key>r</key>
+						<string>0</string>
+					</dict>
+					<key>Draws</key>
+					<string>NO</string>
+					<key>Fuzziness</key>
+					<real>3.3371961116790771</real>
+					<key>ShadowVector</key>
+					<string>{0, 2}</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<string>0</string>
+						<key>g</key>
+						<string>0.766903</string>
+						<key>r</key>
+						<string>0.997925</string>
+					</dict>
+					<key>Draws</key>
+					<string>NO</string>
+					<key>Width</key>
+					<real>2</real>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Pad</key>
+				<integer>0</integer>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+			<key>TextPlacement</key>
+			<integer>0</integer>
+			<key>TextRelativeArea</key>
+			<string>{{0.06, 0.17}, {0.88, 0.5}}</string>
+			<key>TextRotation</key>
+			<real>90</real>
+			<key>Wrap</key>
+			<string>NO</string>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{33.9443, 35.3886}, {444.112, 437.111}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Font</key>
+				<string>CalisMTBol</string>
+				<key>Size</key>
+				<real>112</real>
+			</dict>
+			<key>ID</key>
+			<integer>29</integer>
+			<key>Rotation</key>
+			<real>270</real>
+			<key>Shape</key>
+			<string>Bezier</string>
+			<key>ShapeData</key>
+			<dict>
+				<key>UnitPoints</key>
+				<array>
+					<string>{-0.5, -0.439247}</string>
+					<string>{-0.500001, -0.485429}</string>
+					<string>{-0.446295, -0.512626}</string>
+					<string>{-0.409932, -0.494153}</string>
+					<string>{-0.373568, -0.475681}</string>
+					<string>{0.436363, -0.0733802}</string>
+					<string>{0.472729, -0.0549062}</string>
+					<string>{0.509089, -0.0364334}</string>
+					<string>{0.509092, 0.0364341}</string>
+					<string>{0.472729, 0.0549056}</string>
+					<string>{0.436369, 0.0733803}</string>
+					<string>{-0.373568, 0.475681}</string>
+					<string>{-0.409932, 0.494153}</string>
+					<string>{-0.446294, 0.512626}</string>
+					<string>{-0.500001, 0.485428}</string>
+					<string>{-0.5, 0.439248}</string>
+					<string>{-0.499978, 0.39307}</string>
+					<string>{-0.500003, -0.393066}</string>
+				</array>
+			</dict>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>a</key>
+						<string>0.2</string>
+						<key>b</key>
+						<string>1</string>
+						<key>g</key>
+						<string>1</string>
+						<key>r</key>
+						<string>1</string>
+					</dict>
+					<key>FillType</key>
+					<integer>2</integer>
+					<key>GradientAngle</key>
+					<real>90</real>
+					<key>GradientCenter</key>
+					<string>{-0.609524, 0}</string>
+					<key>GradientColor</key>
+					<dict>
+						<key>a</key>
+						<string>0</string>
+						<key>w</key>
+						<string>1</string>
+					</dict>
+					<key>MiddleFraction</key>
+					<real>0.6111111044883728</real>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>a</key>
+						<string>0.51</string>
+						<key>b</key>
+						<string>0</string>
+						<key>g</key>
+						<string>0</string>
+						<key>r</key>
+						<string>0</string>
+					</dict>
+					<key>Draws</key>
+					<string>NO</string>
+					<key>Fuzziness</key>
+					<real>3.3371961116790771</real>
+					<key>ShadowVector</key>
+					<string>{0, 2}</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<string>0</string>
+						<key>g</key>
+						<string>0.766903</string>
+						<key>r</key>
+						<string>0.997925</string>
+					</dict>
+					<key>Draws</key>
+					<string>NO</string>
+					<key>Width</key>
+					<real>2</real>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Pad</key>
+				<integer>0</integer>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+			<key>TextPlacement</key>
+			<integer>0</integer>
+			<key>TextRelativeArea</key>
+			<string>{{0.06, 0.17}, {0.88, 0.5}}</string>
+			<key>TextRotation</key>
+			<real>90</real>
+			<key>Wrap</key>
+			<string>NO</string>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{176, 102.384}, {158.841, 537.616}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Font</key>
+				<string>CalisMTBol</string>
+				<key>Size</key>
+				<real>425</real>
+			</dict>
+			<key>ID</key>
+			<integer>26</integer>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Pad</key>
+				<integer>0</integer>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf350
+{\fonttbl\f0\fnil\fcharset0 CalistoMT;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\b\fs850 \cf1 !}</string>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+			<key>Wrap</key>
+			<string>NO</string>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{176, 104}, {158.841, 537.616}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Color</key>
+				<dict>
+					<key>b</key>
+					<string>0</string>
+					<key>g</key>
+					<string>0.749523</string>
+					<key>r</key>
+					<string>0.997726</string>
+				</dict>
+				<key>Font</key>
+				<string>CalisMTBol</string>
+				<key>Size</key>
+				<real>425</real>
+			</dict>
+			<key>ID</key>
+			<integer>27</integer>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Pad</key>
+				<integer>0</integer>
+				<key>RTFD</key>
+				<data>
+				BAtzdHJlYW10eXBlZIHoA4QBQISEhBJOU0F0dHJpYnV0
+				ZWRTdHJpbmcAhIQITlNPYmplY3QAhZKEhIQITlNTdHJp
+				bmcBlIQBKwEhhoQCaUkBAZKEhIQMTlNEaWN0aW9uYXJ5
+				AJSEAWkEkoSWlhBOU1BhcmFncmFwaFN0eWxlhpKEhIQQ
+				TlNQYXJhZ3JhcGhTdHlsZQCUhARDQ0BTAgCEhIQHTlNB
+				cnJheQCUmQyShISECU5TVGV4dFRhYgCUhAJDZgAchpKE
+				n54AOIaShJ+eAFSGkoSfngBwhpKEn54AgYwAhpKEn54A
+				gagAhpKEn54AgcQAhpKEn54AgeAAhpKEn54AgfwAhpKE
+				n54AgRgBhpKEn54AgTQBhpKEn54AgVABhoYAhpKElpYG
+				TlNGb250hpKEhIQGTlNGb250HpSZIIQFWzMyY10GAAAA
+				FgAAAP/+QwBhAGwAaQBzAE0AVABCAG8AbAAAAIQBZoGp
+				AYQBYwCiAaIAogCGkoSWlg1OU1N0cm9rZVdpZHRohpKE
+				hIQITlNOdW1iZXIAhIQHTlNWYWx1ZQCUhAEqhIQBZKYD
+				hpKElpYHTlNDb2xvcoaShISEB05TQ29sb3IAlKIChARm
+				ZmZmAYN4dz8/AAGGhoY=
+				</data>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf350
+{\fonttbl\f0\fnil\fcharset0 CalistoMT;}
+{\colortbl;\red255\green255\blue255;\red254\green191\blue0;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\b\fs850 \cf2 \outl\strokewidth60 \strokec2 !}</string>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+			<key>Wrap</key>
+			<string>NO</string>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{33.9441, 35.3884}, {444.112, 437.111}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Font</key>
+				<string>CalisMTBol</string>
+				<key>Size</key>
+				<real>112</real>
+			</dict>
+			<key>ID</key>
+			<integer>16</integer>
+			<key>Rotation</key>
+			<real>270</real>
+			<key>Shape</key>
+			<string>Bezier</string>
+			<key>ShapeData</key>
+			<dict>
+				<key>UnitPoints</key>
+				<array>
+					<string>{-0.5, -0.439247}</string>
+					<string>{-0.5, -0.485429}</string>
+					<string>{-0.446295, -0.512626}</string>
+					<string>{-0.409933, -0.494153}</string>
+					<string>{-0.373569, -0.47568}</string>
+					<string>{0.436363, -0.073379}</string>
+					<string>{0.472729, -0.0549049}</string>
+					<string>{0.50909, -0.0364324}</string>
+					<string>{0.509091, 0.0364344}</string>
+					<string>{0.472729, 0.0549058}</string>
+					<string>{0.436368, 0.0733801}</string>
+					<string>{-0.373569, 0.47568}</string>
+					<string>{-0.409933, 0.494153}</string>
+					<string>{-0.446295, 0.512626}</string>
+					<string>{-0.500001, 0.485429}</string>
+					<string>{-0.5, 0.439247}</string>
+					<string>{-0.49998, 0.393072}</string>
+					<string>{-0.500002, -0.393066}</string>
+				</array>
+			</dict>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<string>0</string>
+						<key>g</key>
+						<string>0.770962</string>
+						<key>r</key>
+						<string>0.997971</string>
+					</dict>
+					<key>FillType</key>
+					<integer>3</integer>
+					<key>GradientCenter</key>
+					<string>{-0.609524, 0}</string>
+					<key>GradientColor</key>
+					<dict>
+						<key>b</key>
+						<string>0</string>
+						<key>g</key>
+						<string>0.911574</string>
+						<key>r</key>
+						<string>0.998779</string>
+					</dict>
+					<key>MiddleFraction</key>
+					<real>0.6111111044883728</real>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>a</key>
+						<string>0.9</string>
+						<key>b</key>
+						<string>0</string>
+						<key>g</key>
+						<string>0</string>
+						<key>r</key>
+						<string>0</string>
+					</dict>
+					<key>Fuzziness</key>
+					<real>8.0632610321044922</real>
+					<key>ShadowVector</key>
+					<string>{0, 9}</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<string>0</string>
+						<key>g</key>
+						<string>0.766903</string>
+						<key>r</key>
+						<string>0.997925</string>
+					</dict>
+					<key>Draws</key>
+					<string>NO</string>
+					<key>Width</key>
+					<real>2</real>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Pad</key>
+				<integer>0</integer>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+			<key>TextPlacement</key>
+			<integer>0</integer>
+			<key>TextRelativeArea</key>
+			<string>{{0.06, 0.17}, {0.88, 0.5}}</string>
+			<key>TextRotation</key>
+			<real>90</real>
+			<key>Wrap</key>
+			<string>NO</string>
+		</dict>
+	</array>
+	<key>GridInfo</key>
+	<dict>
+		<key>GridSpacing</key>
+		<real>4</real>
+		<key>ShowsGrid</key>
+		<string>YES</string>
+		<key>SnapsToGrid</key>
+		<string>YES</string>
+	</dict>
+	<key>GuidesLocked</key>
+	<string>NO</string>
+	<key>GuidesVisible</key>
+	<string>YES</string>
+	<key>HPages</key>
+	<integer>1</integer>
+	<key>ImageCounter</key>
+	<integer>2</integer>
+	<key>KeepToScale</key>
+	<false/>
+	<key>Layers</key>
+	<array>
+		<dict>
+			<key>Lock</key>
+			<string>NO</string>
+			<key>Name</key>
+			<string>Layer 1</string>
+			<key>Print</key>
+			<string>YES</string>
+			<key>View</key>
+			<string>YES</string>
+		</dict>
+	</array>
+	<key>LayoutInfo</key>
+	<dict>
+		<key>Animate</key>
+		<string>NO</string>
+		<key>circoMinDist</key>
+		<real>18</real>
+		<key>circoSeparation</key>
+		<real>0.0</real>
+		<key>layoutEngine</key>
+		<string>dot</string>
+		<key>neatoSeparation</key>
+		<real>0.0</real>
+		<key>twopiSeparation</key>
+		<real>0.0</real>
+	</dict>
+	<key>LinksVisible</key>
+	<string>NO</string>
+	<key>MagnetsVisible</key>
+	<string>NO</string>
+	<key>MasterSheets</key>
+	<array/>
+	<key>ModificationDate</key>
+	<string>2008-11-17 11:41:28 -0700</string>
+	<key>Modifier</key>
+	<string>Preston Jackson</string>
+	<key>NotesVisible</key>
+	<string>NO</string>
+	<key>Orientation</key>
+	<integer>2</integer>
+	<key>OriginVisible</key>
+	<string>NO</string>
+	<key>PageBreaks</key>
+	<string>YES</string>
+	<key>PrintInfo</key>
+	<dict>
+		<key>NSBottomMargin</key>
+		<array>
+			<string>float</string>
+			<string>41</string>
+		</array>
+		<key>NSLeftMargin</key>
+		<array>
+			<string>float</string>
+			<string>18</string>
+		</array>
+		<key>NSPaperSize</key>
+		<array>
+			<string>size</string>
+			<string>{612, 792}</string>
+		</array>
+		<key>NSRightMargin</key>
+		<array>
+			<string>float</string>
+			<string>18</string>
+		</array>
+		<key>NSTopMargin</key>
+		<array>
+			<string>float</string>
+			<string>18</string>
+		</array>
+	</dict>
+	<key>PrintOnePage</key>
+	<false/>
+	<key>QuickLookPreview</key>
+	<data>
+	JVBERi0xLjMKJcTl8uXrp/Og0MTGCjQgMCBvYmoKPDwgL0xlbmd0aCA1IDAgUiAvRmls
+	dGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAGVlktvJEUQhO/9K5IbHFyuR9brioEV
+	nFh5JM5o5MWsPIA9IP4+X2b12gPrBbHWSt3lzkdFREb6Ud7Ko0R+asr+/+lOfpBfJIYW
+	/Z/8LNc35yTHsyROh/ZYxyTgfJTrN/zip7NcxVD3r1+e9oQbCd/J9fd3T8e7337/48cH
+	eSLjm3O2wEfR2ry8tiJ5hDJSVEk9pF7jkONJrr89JfnqV/p8uz1KK1YpJynNHlKVk2gJ
+	JZWqdqZz9iklBc21ZmkxlJoin0/vsEonTo6b9lC79iQzh6azSc7FYjINZWIkk4MCKtrG
+	ejhyRpZeRYcSNIbk7oXmtk5m4mRaD/NvYcOK1bKnpnkuu4qt6jqEVujLmtuOvFgdrXv7
+	mcjWQxut71ds5LcbAIADIcTkDgpt4TKmyigWoXNzVAYtfYzdUe5fOT25ACxMtZAQiPeX
+	xEVTSCkNeaBLDbXWDhwfnxH1QHJX0sfiulDDhhpMgMnUJZAGDLkCea3T6b+9T3K+N/pf
+	F6qL8+ZW0hYDjM4ESlFubyTlAFd/kvfwRKilj3IFRdTQHJsk6EwzW5UvDwBY1xf2cNVL
+	SDWiyTa2AyL8JgXr8fBOPv/sCzm8l68PNERtwm0wGIb4yTrK2LiYt3+rI5+uY1df7JW8
+	CD9tS/XNGUdxFSUs1e+yiQPuXPUMyVI9lL2qeh2bq16Rjet+qRdVLcWrceySz8+S30+A
+	zyTPTNiYWMQSe10Z64vY+/OoudZNus9dudwRqE+rVVty97v63bZd7iZHL7PkjnfYe5xw
+	vvTOAJtW5+gMv3vFB8RetF6yzYQ5x3/L08wKeQZ3t1pin5Fp1GpD0ORKy7AnlLN/kbPS
+	2ofZwIlqwA1G35aT5d3JyGncLARwMKZb0Tt2gIAHLOBGpTJExgtaxZ/MjxbK+B8mYdQ0
+	5QuYoSumBgvBBXEsP0n9khlidnI8xrK6LZqBzVm2bFzEhIjMiIwcPyGGeQqjdjrwT7h+
+	LYHiADxbwGHg6+Uux+3+4u1/I6yj5DSiaKw0CBBXpRSDluldCFM4zgHvPa9zujJygMR3
+	RXlB+JWt1t0PvmNg35PwHxsOE4mw1Weu0cykNci2JJjJhX+sVUm1pt4BgIOOr6HBGsLd
+	eYUt0uRFYFIEgAl4n6yrBqw6QuzKxtA0wdf4g/OZ2QWMAd4DfUgXOqHaYjtc4/Gjshmh
+	y/PP/YQ62VDzj4dlZttYGh2ZHAwCzaCeVcoaJty3VGm2b4bnZwuhC2LommlOA9lxF2ub
+	WDS6QrjdWjcjNZJ3Uzh/OyA6IjK7cIVwj0t8fPwuD05ya6b+F7C1v1cKZW5kc3RyZWFt
+	CmVuZG9iago1IDAgb2JqCjk4MwplbmRvYmoKMiAwIG9iago8PCAvVHlwZSAvUGFnZSAv
+	UGFyZW50IDMgMCBSIC9SZXNvdXJjZXMgNiAwIFIgL0NvbnRlbnRzIDQgMCBSIC9NZWRp
+	YUJveCBbMCAwIDUxMiA1MTJdCj4+CmVuZG9iago2IDAgb2JqCjw8IC9Qcm9jU2V0IFsg
+	L1BERiAvVGV4dCAvSW1hZ2VCIC9JbWFnZUMgL0ltYWdlSSBdIC9Db2xvclNwYWNlIDw8
+	IC9DczIgMTIgMCBSCi9DczEgNyAwIFIgPj4gL0V4dEdTdGF0ZSA8PCAvR3MxIDE3IDAg
+	UiAvR3MyIDE4IDAgUiA+PiAvRm9udCA8PCAvRjEuMCAxMSAwIFIKPj4gL1hPYmplY3Qg
+	PDwgL0ltMiAxMyAwIFIgL0ltMSA4IDAgUiAvSW0zIDE1IDAgUiA+PiAvU2hhZGluZyA8
+	PCAvU2gxIDEwIDAgUgo+PiA+PgplbmRvYmoKMTAgMCBvYmoKPDwgL0NvbG9yU3BhY2Ug
+	NyAwIFIgL1NoYWRpbmdUeXBlIDMgL0Nvb3JkcyBbIC0yNzEuMzA2MyAwIDAgLTI3MS4z
+	MDYzIDAgNTQwLjI2NApdIC9Eb21haW4gWyAwIDEgXSAvRXh0ZW5kIFsgZmFsc2UgZmFs
+	c2UgXSAvRnVuY3Rpb24gMTkgMCBSID4+CmVuZG9iagoxMyAwIG9iago8PCAvTGVuZ3Ro
+	IDE0IDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2UgL1dpZHRoIDI1NiAv
+	SGVpZ2h0IDI1NiAvQ29sb3JTcGFjZQo3IDAgUiAvU01hc2sgMjAgMCBSIC9CaXRzUGVy
+	Q29tcG9uZW50IDggL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB7dABAQAA
+	CAKg/p+2Bx4QJpBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
+	AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
+	wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
+	GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
+	AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
+	wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
+	GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
+	AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
+	wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
+	GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
+	AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
+	wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
+	GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
+	AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
+	wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
+	GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
+	AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDDQBg4DBgwYMGDA
+	wNjAA65NNU0KZW5kc3RyZWFtCmVuZG9iagoxNCAwIG9iago4ODMKZW5kb2JqCjggMCBv
+	YmoKPDwgL0xlbmd0aCA5IDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2Ug
+	L1dpZHRoIDkxMiAvSGVpZ2h0IDkyNiAvQ29sb3JTcGFjZQoyMiAwIFIgL1NNYXNrIDIz
+	IDAgUiAvQml0c1BlckNvbXBvbmVudCA4IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0
+	cmVhbQp4Ae3QgQAAAADDoPlTH+SFUGHAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
+	MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED
+	BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
+	wMvAAKraAAEKZW5kc3RyZWFtCmVuZG9iago5IDAgb2JqCjExMDcwCmVuZG9iagoxNSAw
+	IG9iago8PCAvTGVuZ3RoIDE2IDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1h
+	Z2UgL1dpZHRoIDI1NiAvSGVpZ2h0IDI1NiAvQ29sb3JTcGFjZQo3IDAgUiAvU01hc2sg
+	MjUgMCBSIC9CaXRzUGVyQ29tcG9uZW50IDggL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4K
+	c3RyZWFtCngB7dKBDQAgDMMw/n+6SHBGvA+aeXMKFAucd8XlNiuw8U9BuQD/5e/bzj8D
+	5QL8l79vO/8MlAvwX/6+7fwzUC7Af/n7tvPPQLkA/+Xv284/A+UC/Je/bzv/DJQL8F/+
+	vu38M1AuwH/5+7bzz0C5AP/l79vOPwPlAvyXv287/wyUC/Bf/r7t/DNQLsB/+fu2889A
+	uQD/5e/bzj8D5QL8l79vO/8MlAvwX/6+7fwzUC7Af/n7tvPPQLkA/+Xv284/A+UC/Je/
+	bzv/DJQL8F/+vu38M1AuwH/5+7bzz0C5AP/l79vOPwPlAvyXv287/wyUC/Bf/r7t/DNQ
+	LsB/+fu2889AuQD/5e/bzj8D5QL8l79vO/8MlAvwX/6+7fwzUC7Af/n7tvPPQLkA/+Xv
+	284/A+UC/Je/bzv/DJQL8F/+vu38M1AuwH/5+7bzz0C5AP/l79vOPwPlAvyXv287/wyU
+	C/Bf/r7t/DNQLsB/+fu2889AuQD/5e/bzj8D5QL8l79vO/8MlAvwX/6+7fwzUC7Af/n7
+	tvPPQLkA/+Xv284/A+UC/Je/bzv/DJQL8F/+vu38M1AuwH/5+7bzz0C5AP/l79vOPwPl
+	AvyXv287/wyUC/Bf/r7t/DNQLsB/+fu2889AuQD/5e/bzj8D5QL8l79vO/8MlAvwX/6+
+	7fwzUC7Af/n7tvPPQLkA/+Xv284/A+UC/Je/bzv/DJQL8F/+vu38M1AuwH/5+7bzz0C5
+	AP/l79vOPwPlAvyXv287/wyUC/Bf/r7t/DNQLsB/+fu2889AuQD/5e/bzj8D5QL8l79v
+	O/8MlAvwX/6+7fwzUC7Af/n7tvPPQLkA/+Xv284/A+UC/Je/bzv/DJQL8F/+vu38M1Au
+	wH/5+7bzz0C5AP/l79vOPwPlAvyXv287/wyUC/Bf/r7t/DNQLsB/+fu2889AuQD/5e/b
+	zj8D5QL8l79vO/8MlAvwX/6+7fwzUC7Af/n7tvPPQLkA/+Xv284/A+UC/Je/bzv/DJQL
+	8F/+vu38M1AuwH/5+7bzz0C5AP/l79vOPwPlAvyXv287/wyUC/Bf/r7t/DNQLsB/+fu2
+	889AuQD/5e/bzj8D5QL8l79vO/8MlAvwX/6+7fwzUC7Af/n7tvPPQLkA/+Xv284/A+UC
+	/Je/bzv/DJQL8F/+vu38M1AuwH/5+7bzz0C5AP/l79vOPwPlAvyXv287/wyUC/Bf/r7t
+	/DNQLsB/+fu2889AuQD/5e/bzj8D5QL8l79vO/8MlAvwX/6+7fwzUC7Af/n7tvPPQLkA
+	/+Xv284/A+UC/Je/bzv/DJQL8F/+vu38M1AuwH/5+7bzz0C5AP/l79vOPwPlAvyXv287
+	/wyUC/Bf/r7t/DNQLsB/+fu2889AuQD/5e/bzj8D5QL8l79vO/8MlAvwX/6+7fwzUC7A
+	f/n7tvPPQLkA/+Xv284/A+UC/Je/bzv/DJQL8F/+vu38M1AuwH/5+7bzz0C5AP/l79vO
+	PwPlAvyXv287/wyUC/Bf/r7t/DNQLsB/+fu2889AuQD/5e/bzj8D5QL8l79vO/8MlAvw
+	X/6+7fwzUC7Af/n7tvPPQLkA/+Xv284/A+UC/Je/bzv/DJQL8F/+vu3f/wUgwjJ6CmVu
+	ZHN0cmVhbQplbmRvYmoKMTYgMCBvYmoKMTIxNAplbmRvYmoKMjMgMCBvYmoKPDwgL0xl
+	bmd0aCAyNCAwIFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0aCA5
+	MTIgL0hlaWdodCA5MjYgL0NvbG9yU3BhY2UKL0RldmljZUdyYXkgL0JpdHNQZXJDb21w
+	b25lbnQgOCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAHsnYlfTV37/288
+	j4xJUVJRGtCEoggliZCxyFQUlUiGNCgJIXOFyFTKlCljmUMlUaZK4XY/N31fv//jd621
+	9z57n6nxDPvU1ev1PHfts89a61zn+njvz7XW3uuvv/AHI4ARwAhgBDACGAGMQOeIQDfy
+	0132hx7tHB8QPwVGQCciwOiwR48e//nPf/4r9QMH/gPHQaRwjk58FhwkRkCHI0ClSIT4
+	3//27Kmn10vuR0+vZ8///peoEjWpw98zDl0HIkAuT0GLIEWqxN59+vTt269ff8lPv379
+	+vbt07s3iJSoEkSJmtSBrxWHqIsRoGKkWuzVqzcRYn/9AQMMDAwGDhxoyPwMHAh/GgzQ
+	1+/fD1QJmtQDTTKc1MUPjGPGCIg1AqwYe8IFKmiRSNFgoKHRoEGDjY1NTIbAjyn5PxMT
+	Y+PBg4wMQZcD9PszmmQkiWZSrN8sjkv3IgBqJI6xJxEjaNHAAKRobDLE1HSombmFxbBh
+	w+nPsGHDLMzNzYaampqAKkGUA/SBk+TSFShJLlx174PjiDECoosAMY0gRj0qRuCi0WDj
+	IaZDzS2GWVpZjbC2sbG1tWN+bG1trEdYWVkOH2ZuBqIETRoYEEyCJOl1KypSdN8tDkjX
+	IsCqsVevPn37DwAwDjYBLYIUR9jYjRxlb+/g6OjkDD9j4H9OTo4O9vajR9nZgiyHW5iZ
+	DjEmmNTvB2aSgSQqUte+fhyvqCLAqJGiUZ+QcYipmYWllbXtyNH2js5jxrm4uI6f4Obu
+	7j5xIvyfm9uE8a4u48Y6OznYj7KzGWE1zHyoKUjSYED/vqhIUX2vOBhdjAD1jWAbwTXq
+	GxgOMiFiHGEzcrSD0xgX1wnuEz0mT5nq6TVtmrf39One3t7TvLw8p0yePMndbbzLWGdH
+	+1G21lbDzU2HDDYayCmS+EhdjASOGSOg9QiQKg4p4vTpBxeqgEbz4VY2I+0dQYtuEydP
+	8Zw23cd3pt/sOXPn+jM/c+fM9pvlO8PH22vqZA/3CS5jnQCT1pbDzACSAw0oI0llBy9a
+	tf7N4gB0LwIUjlDFoWwcPGSohaW13WgQ44SJk6dOmz5j1uy5/vMXLgoIDFyydGkQ+Vm6
+	ZElgwOJFC+b5z/Hz9fH2nDzJzXUcSNKGQBIUSRlJa62ISN1LBxyxdiNA4QjGsS9cqYIa
+	hxE0Oo8bP3Gyp/eMWXP8FywOXLpsxargkNWhYWFr165bt27t2rDQNauDg1cuDwoMWDjf
+	f7avz7QpHm4uYxxH244gijQyGNCvDxR2EJHa/Waxdx2MAJEjgWP/AQMHmQy1sLIZ5TDG
+	xc3Dc7qvH2hxybKVwWvCwiPWb4jeFBOzecuWrVu3btmyOSYmemNUZPja0JBVy5cGLpo3
+	Z6aP1+SJ4wGSdiOGw1WroYE+FHYAkegidTAlcMhaiwC5ViV1HICjkbGpuaU1qNF14uRp
+	Pn7+CwODVoaEhkdu2LR5a2x8QmJS8s6UXbt2pe7alZKyM2lHQnzcti0xG9eHr10dvHzJ
+	YpDk9KkeE1yc7G2thg0dAhetBJHURWrtw2HHGAHdigDI8T//Jc4R4DjEbPiIkfagxine
+	vnPmBwStXL02YkPM1u3xO3bu2r133/709IOHDh0mP4cOpqcf2Je2JzUlKSFu2+bo9eGh
+	wcsDF/r7+Xh6TBjnNNrGyoJctFJEkmtW3YoJjhYjoKUIsNaxT38DQ2NTCytbe2cXUOPM
+	uQsDV4SsjdgYExuflLI77UD64aPHMzNPnDyVnX0afrKzT508kZWZcezIwfR9e1KTE+O2
+	booKX7MqaPG82T5eHhPGOoy0Hm4GiNTvR65ZUZBa+naxWx2LACtHcq1qYjbcepTjOLfJ
+	RI1LVq4J3wBiTE7de+DQ0Yysk9k5OecuXMzNu3QpH34uXcrLvXjh/NmcM6dOZB47nL5v
+	d8qOuC3RkWHBywLmASMnuY6Bi1Zz08GG5JoVBaljWYHD1VIEmEoOWEe4VjUHOI4Z7+E1
+	g6gxNCJ6S3xSalr64eNZp86cvZB7Kf/y1WvXC2/cuHETfuA/NwqvX71SkJ938VzO6ROZ
+	Rw/u370zITZm/TqiyFnTp7i5OI4cMYyUdfqjILX07WK3OhaBbt2gsNqrN1jHwXCtOtJh
+	nNsUH7/5gSvXRERvjd+5+wCIMTvnQl7+lWuFN27dKbp3/wH8PCQ/8N/79+4W3b554/rV
+	gksXz505mXk0PS11x/aYqLXBQYvm+np5uDqPthk+1MSICFIPL1l1LDVwuFqIAJRyeuox
+	chw2YpSTyyQvX//Fy0LCN25NSNmbfjQTxHjp8jWQ4r0HDx6VPH7y9NmzZ8+ZH/jt6ZOS
+	4ocP7hfdvnH9Sn7uuTMnjh/al5q0PWZ92KrA+X7TJ7uNtbe1NBtCBYmXrFr4erFL3YoA
+	raz27jtgoLHpMOvRY8ZP9vabv2TV2qjN8Tv3ph87ceZ8XsG1G7fvghSfPHv+ovTV6zdl
+	ZeXsT1nZm9evSl++ePb0cTFo8lbhlfyLOacyD+9P3RG7KXz1ssVzZ3i6uzjYWZmzgsQq
+	q24lB45W0xEg8456vcA7GpsOt7EfA9eqcxYtWx2xaXvSblBjzoX8qzdu33tQ/OTZi9LX
+	b8rL31a+q6p6//4D8/P+fdW7yrcV5WVvXr18/rTk4f2im9cLcs9mZx7atythS9TaVYHz
+	ZnpNcnEUChJnPTT9FWN/uhMBiRwHEzmOdZs6wz9gRVjUloTU/UeyzlzIv3ajiIjx5euy
+	8rfvqj5UV9d8/Pjp8+fPX+AH/vPp08ea6uoP799VVpS/KX3+rOThvduFl/POnjp+cE/y
+	9k3hwUsX+Hl7uDqOpISEaQ9YqYOC1J30wJFqOAK0ltNH32AwXKzaj3X39PUPDF4XHZu8
+	52BG9vn8azfvPighYqyoBC2CEL98ra2rl/qpq6v9+uUzqPL9u7dEkk8e3QdF5uacOLp/
+	V/zmyDXLFs6ePpkI0swEpj16Y01Hw18wdqdLESDmEZasGgzi5DhvSXB4THzK/iMncvKu
+	3Lj74PGz0jflle+raz59+QpK/NbQ0Pj9+w/Jz/fvjY0N3+rrQZSfP1Z/qHpb/vrF0+L7
+	t6/nXzidkb57x9ao0OWL5hBB2lkONTYc0LeX3n96ICB1KUVwrBqMADGPvfsZGA2xGDF6
+	jJun77ylIRExCanpx7MvFBTeATW+KntbRcRYW18PSvzx8+fff/+S/vn7758/vhNR1hFJ
+	vq8kinx07+bVvJysw2nJsRvDViyeM93DxcF2+NDBA/VhGhKvWDX4BWNXuhQBMtXRq+8A
+	QxMzq5HOE6b6zlsSErk5cffBzJzcqzfvFT8rLXv7vvojiPFbA2iRKPGf//3vf/8KfuDP
+	f/6B43//BE0SSdZ8eAeKfPLgTmH+uZNH9+3cvnHtikWzvSe52NsMMx1k0B+vWHUpQXCs
+	mowAKebA1erAwUMt7RzHT57hD3LckrjnUFbOpet3Hjx58QbY+AkuU0GMoMV//gEl/v79
+	h/w00R/66+/fv//993+gSSLJb/W1oMjK8lfPiu/duHwh+9j+lO0bw5Yv8ps2cezoERZD
+	jAb0Q0Bq8ivGvnQoAlDMIVerYB5tHFwm+0ApJ2Jz4p7DJ87l37j76Nmr8ndEjd8af/wk
+	XAQtskL8P+EPEeafP6BJKskf3xuIIt+/ffPi8YNbV3NPHz9ABLlswSxPN+dRVmbG9IoV
+	V5brUJLgUDUVAcnVqvmI0eMmes8JWBUeQ+VYcONeyfM3bz/UfCFq/JsTIyhPqET+d4Ek
+	AZIN9V8/Vb8rL3368Pa13DPH9++M3bAmaN6MKeMdbYebDmauWLGko6kvGfvRmQh0I8Wc
+	/gaDh4J5dPOctXDFuk3xuw+dOFdw4/7jl2UAx9r6BkaNQEalYmRlSSlJIAmK/Fb3peZ9
+	xetnj+5cA0LuT962PiTQ38fDxd6aXLH2xStWnUkRHKjmIsDg0cCIXK26Tp4xLyh0Y1zq
+	wayzIMcnpeVVBI7ffxI2UjXyNCS//T/mR+ogoSS9bP37RyMg8sNbRpDZR9N2bA5fFTB7
+	mvsYesXavw9MQiIgNfdFY086EQHAY68++gNNyNXqpOlzA0PWx6akZ+bks3L8SuGoSI2s
+	GOUlKVEkILL2c3XlGyDk1YunjuxJiFm3fIEvc8U6yABLOjqRHzhIjUaA4pEUcyztnCZ4
+	zlq0KnxL0r7jZy4V3nv8svz9x6/1jSwcpV2jlBjpH0JIMletcNH6vaGOCvLh7SvnTxxM
+	jdu4ZilcsY6zH2FuYgiTkAhIjX7X2Jn4I8Dg0XCIhbU91FbnBYVtit9zJDv3+t2SF+VV
+	rBzlLlXl1SgrSeai9dffP4gg4ZL1wc2Cs5kHdm6NDF4828vNeaQllHQQkOJPDxyhZiPA
+	4pEUc8a4T5sTGBIVu+vgifNX7jx6XlZV87WeWEeQoxQclaiRHOYhSRBJ6jpEkB8qXj25
+	f+PSmWNpiTFrl8+fMZmWdBCQmv2qsTcdiACHR1LMmeK7cEX45qT9GTn5Nx88e1NZ/YVc
+	rBLrKJRjM2qUU+RvIshvdZ/el78sKbp28eSh1LgNqwPnek+Eks5QBKQO5AcOUaMR4PE4
+	auzE6f5L1myM330kO6/w3pNXb6s/K5BjC2qURSQI8m8o6nysKnv+8Ba5Yk3eEr5y4cwp
+	rg42w4YgIDX6XWNn4o+ABI+2juOnQjEnYuvO9Cy4Wi1+Uf7+U13DD9mL1ZblKFQkMZH/
+	g6JO/ZfqytdP4Yr19NE98dGhS/2nTxqLgBR/duAINRwBDo9mVjDX4eO/NGxTwt5jZ/Jv
+	wNXqu5qv32Tl2Co1ygvyZ2P95w/kivXqhRPpKdsiVi2aNXW8IwJSw182dif6CFA8DjAa
+	MszWEeY6FgdHQjHn5MVrdx+XVhDz+Pev/wm9Y2vlKCjrACH/JRaSXLFCjTU/53hawqaw
+	IH+fSeNGo4MUfX7gADUaASEePXz8g8JiEvdl5BTcevgcpjrqGkgtR1DKab0cBYgka3XA
+	QsIV69tXj+9ev3jy4K5YmPPw85zgaIsOUqPfNnYm9ggw7pHgEZYC+C0OXh+beuhU7nUo
+	5lRWw1TH3zDTIamstkmN0oL836+fDaTGSko6ORn7EmMIID0AkGZYYhV7iuD4NBcBaTzO
+	C1obs2NfxtnLtx/RYg6Z6oCrVXZGsa1ylFyzMles3799ra589eReYe6pQ6mx6xGQmvuW
+	sSddiYA0HgOC128HPOYV3n/6upIt5kiuVtsuR16QpMb6s5EA8sWj25fPZuzbEbM2aB4C
+	UlfSBMepmQjI4HEZwWMmg8cPMPX49y+yEKDdeOQvWdmSztcaMuehAJB4m4dmvm/sRdwR
+	EMw9gnukeDwsxGOHrlYpUBkxk5LOr79hzgMBKe6EwNFpMwLK8AhLATg8csWc9lytkvew
+	cKWrAn58EwByu5SDREBqMw+wb3FEAPCo10ffkJl7ZPAo5R55PLZXjpwgm5rInEdj/acP
+	5S+KJQ4S5yDFkQc4ClFEQBEeSXGVw6NgrqP9emQJKQ9IpsQKj9Khc5AISFGkBA5CixGQ
+	xiPMPcoUV1WBRyEgqYMEQHIlVlyko8UvH7sWWwQ4PA6lK1f5uUd5PHaAjhILqRiQszy5
+	VawISLHlB45HsxEQ4HE8vzSHn3tUDR45QRIHSQBJHCQAUrJIZ9I4vM1Ds9879ibKCEjj
+	kaxcZZbmcHiEuUe2uNoxPEquWMmiAGGJla5i5W/zQECKMk1wUBqKgASPNuS+R27lqhrw
+	yAqSAhLuu2IAya9ixfsgNfSFYzdijgCPx1Fj4b5H9sYOunL1wydmaY6K8MgD8l8OkE/u
+	Xc89eYgHpAV5UAACUsz5gmNTbwRk8Qj3PcKNHWrBIwdIskiHAJIs0oHbPI6nJW4Kg2c/
+	8oDs0V29nxlbxwiINQJkf7l+ZIcAIR4LmBs7yENzVOYeifvkVs3RG5PhNo/XFJDkPkj6
+	oAAHGwSkWPMEx6WRCHB4tGDdI8HjSXLfI3tjB7kNmVFRR6s59P20KTrlIQ9IwZN0EJAa
+	+fKxE9FFoHsPHo/TyVNzEtOOw2MB6H2PDB5ZPapEjgoBSR4UsE0CSPKwcr3/dsfdPESX
+	Kjgg9UegW3dm5aqFjQN9qFzkNnhqDoPHauYhVirFI+8gufsgnzMOMmGT5FFzdDcPBKT6
+	v3vsQXwRYPA4iLpHwGOoEI91wscCqAaP8g4SHhRAn6RDHjU3cyo8i9UCANlb7z8ISPEl
+	C45I3RGAyQ5yY4eJFB4vsk/Noc94VDEeFQCSPEmHPGqOAHIieRbrIAPYDxIBqe7vHtsX
+	XwTk8JjAuMfn5BHI6sCjUkDSZ7GSh5VbIyDFlyc4Io1EgOCxN4NH16kz4ZHkxD2qF48K
+	AQnPYt2bQB9WDrt5WJoiIDXy7WMnYosAwWNfA+oeYccOcI8MHuGZq2rDoxQguUfNXb/I
+	PqycBeTA/uggxZYrOB61R0CCR2vY0IriMUX9eFQCyGMEkEv8Ybsr2A8SAan27x47EF8E
+	WDyaWo4cQ/EYnbD3eE4+eSS5GvEoB8i3r57Aw8oBkFsjmO2uwEEiIMWXLTgiNUeA4rH/
+	QBMLHo/pJy5ev0v2l/v67TvsZ6Xy4iozayJcpMM+rDw/59je+Og1S8h+kBJA4poANWcA
+	Ni+mCAjx6O2/JBTweEwDeJQGZP1XupvHNbLdFQtIewSkmNIEx6KZCEjjceHKiK0pgEfY
+	0IrgsV6NeJRykLCbB9mgFba7kgPkf3sgIDWTCtiLCCLQjSmuUvfoPXfJmuh4gseb6naP
+	5JJVcJsHt90VAeTOrbBhsu8UV3trc3SQIsgQHIIGI8Dj0R6KqwtXhhM8XmDw+EW9eJTo
+	kezm0VBH9oMUAtKdc5AISA3mA3al3QjAjVZk7lEej2VVsDu5cEMrVS1dFbQjC8jSx3d5
+	QE52QUBqNzewd41HgMOjuTXg0ZfgcafG8MhfsEoB8szRPfEbSYmVAeSAvr0QkBrPC+xQ
+	OxGgeBxA8ehO3ONGcI9nwD0+K2O3Q5ZsaCXAmup+VQjIrPSdW8JXLPRFQGonJ7BXrUVA
+	gEeXySwes4h7LH1brW73SFTN6ZEH5IOb+RSQqwPneLs7kzlIBKTW0gM71nAE5PG45yjg
+	8YGG8MgLEnbXoSXW0sdFVy8wgFxAADkCS6waTgnsTnsRkMbjghXhW3amaxKPvB4FgLwh
+	AeQ0d2c7S1MjBKT2MgR71mQEeDw6u0+bE7h6Y7yG8cgLUgjI81npyeAgWUAawyrWnvig
+	AE3mBfallQgAHnv27j/Q2HyEPbhHDo9Xi1j3+LfaVq4KCkJSDrKWzEE+kAbkcASkVpID
+	O9V4BBg8Gpla2gnxeENz7lFY0mEBWVFaUnSVA+QM6iCNDRCQGs8N7FDjEZDHY3J61nmC
+	xwpSXNUIHvkLVuogOUCePro7fgOUWKe5OdshIDWeGdihNiLA4XG4nbMbcY8bqHtk8Fir
+	7qU5/CUrd8UqBcjMA8mbwUEiILWRGNinNiLA4NGAcY8ziHtk8FiiUTwqBuSl00ekAdkH
+	F+loI0ewT81FQB6Pu4+eztc4HnlBygNy+XwKSDN0kJpLC+xJOxGQxuP8FeGbkw9kgnvU
+	NB55PXIO8g2UWAkg4zaEBM72cnOiDhIBqZ00wV41FAGCxz4DjEwl7jFu95HTlwCPb6o+
+	atA9SkqsTU1/KCA/V1e8LCm6cp44yHU8IPv1wjlIDWUGdqOFCFA89jMwNiNzjzPmL5fg
+	8WVF9We2uMrsaMVXXtT1G1fRAUD+aKj9+A4BqYWEwC61GgEej05uXrMDQzZI8PhO03hk
+	r1ilAHnnyrnMA0kcIK3AQSIgtZov2LlaI0DwCPuvSvC4bnPSgcxzV+6UaAGPUg6SB2T2
+	kdS4KMZB2pI5SHSQas0IbFybEZDFY5QUHn/8+p9673uUvfKlV6wSQH6oeFnMADIGHKQP
+	LNJBQGozWbBvdUdAgkcrcI8+85drF4+ygKyhDjIv+zABZMBsrwlOtsMQkOrOCWxfexGQ
+	4NGWcY9RcalHsmlx9V1NbYPG8ShxkL+ZEisHyP1JMeuWzfPxGDfaymwwOkjt5Qv2rNYI
+	yOExJmk/cY/FLys+aLq4yly6Ckus32p5QG6PCmYBOcRIHx2kWrMCG9dWBDg8DrN1muA1
+	OyAkanvq4ew8MveoJTxKAbKx/vOHcsZBAiDXIiC1lSbYr2YiwOJxsJnV6HEePvOWrZPg
+	sRzw2Ag3dvxu0tTcI1fZkQfk/RvEQRJA+nkSBznEEAGpmfzAXjQbAYpHfaMhBI+efgHB
+	UniE7ck1XFwVXLE2NREHyQHy8rnM/TsQkJpNDuxN0xGQxePamB2se9QeHqVLrMRBvn7K
+	AnI9BaQjA0g9fBarptMF+1NzBBg8GgIeHSke1zPu8f7T1+AetYVHeQf5ovj25bMISDUn
+	Azav7QgoxOPZy1Bc1SYeZQD5lQKyMO8UOMj1wYvBQSIgtZ042L9aIgB41OujL43HU3k3
+	tI1HJYDM2AcOMoiZgxyKc5BqyQhsVIsRkMFjELjHfZlnL98ufqFdPMoBshIcZGHuqUOp
+	sRSQ4x1taIkVHaQWkwe7VnkEpPG4OBjc46FTeYWAx8qar9pzj6TIyq5ilZRYqYMkgAwL
+	8veZBIt0EJAqTwdsULsR4PA4FOYeJ/n4UzxmiAKPzQNy1lQEpHYzB3tXRwQkeLRxHO85
+	C/AYC3jMFQUeBYD8xcxBvngEJdaMfYkMIMeOQkCqIyWwTe1FQBaPYeAeCR4fse7xlxaW
+	5nBLdJQCcldsZPBiBKT2sgZ7VlcEhHicCniMFBMehYD82Vj/6X05ALIgJyNNFpA9uqsr
+	PtguRkCDEeDxOGoscY9hMYn7MnIKKB4/wcpV7eJRASCf3CvMPXmQB6QFWcWKJVYNpgx2
+	pcYIcHi0APfI4HGXeNwjX2L98/vfXxwgbxXkHE9L3BS21H/6JImDRECqMUmwaY1FoHsP
+	8tScwUOtWDxuSkxj8fge8PhT23jkAfnvP79+fPtaXfn6yb3rBJDbIlctAgfpYMMCsns3
+	jcUMO8IIqCkCMnhcFRm76+DJ3Ov3nrBzj5rYYI6v3ij8jZmDZABZRx0kC8hQDpCDyIMC
+	EJBqShFsVoMREOJxuv/SMMDj8ZyCW1Bc5fD4R9P3PcqKkrsPkgPkKwDkRSlAmhjq99bD
+	/Vk1mDbYlXoi0K07s3LVwsYB3OOiVZHbAI8XKR6rydIcEeCRK7H+IZsHNBJAPn9EAZmw
+	iQByInGQgwz6IiDVkyHYqiYjwOBxEHWPgMfQTQkMHp8DHuvAPUruQ5aFlib/VgLIlG0R
+	qxbNnOoKDhIBqcmkwb7UFQGY7NDrrW9oAnh0JXiM4PD4qlI8eFQAyIe38qHEygJyzCgr
+	UwSkulIE29VgBAge+xpQPE4ULR7lSqxvWQfJAHKKq4O1hcnA/uggNZg42JU6IkDx2J/B
+	45SZBI8pjHsUFx6VAPLY3oTo0CX+3hPHjLREQKojP7BNzUaAxaOp5agxFI/RCXuP5+Tf
+	eigq90icqsBBfoc5SADk3esXT6SnbI1YuXAmAlKzWYO9qSkCDB4HmlhYO7iyeEw/QYqr
+	r96KyT1KBNkkKLESB0kAuWbJXCEgcU2AmnIFm1V/BCR4HDlmorf/klDA4zFR4lEakPVf
+	AJCP7167wAPSHh2k+tMFe1BvBKTxuHBlxNYUwOO1uxSP9d/FMffIzatwi3SYOciqsucP
+	bxJAxksDEh/9qN6UwdbVGIFuTHHV1JLgce6SNdHxBI83xeceJRes/0c2MP/1XQDInVvD
+	Vy70neJqb22OJVY15go2rfYIcHg0t7YH97hwZTjB44Vrdx+De/wiNjxKKjpkkU5D3ceq
+	smcsIDcSB+nOlVgRkGrPG+xAPRGAleRk7pHg0V0Kj2VVn+oaRLI0h7tclXeQpYyDZAAJ
+	+7MiINWTJtiqZiIgxONkX4LHnSLGI69HHpAPbuafObonXgDIAX17ISA1kz7Yi4ojQPE4
+	gMfjRtY9Piur+iiFx//jGaXV34RzkMRBUkBmpe/cEr5igS8CUsXpgc1pNgICPLpweMwi
+	7rFUjO5RWNGRB+TqwDnT3J3JIh0EpGazCHtTVQR4PDqDewxcszF+z9Ez+TcfiBaP/BUr
+	3cCcArLo6gUBIEeYG8Mq1p54H6SqcgTb0VgEJHgcYQ94XLAifMvOdMBjEYtH2H+VvQ1Z
+	LFerQEjuglUAyBuMg2QAaWdpaoSA1FgKYUcqjIAEj3bO7tPmBK7WATzygmQBWVH6uOjq
+	+az0ZM5BIiBVmCHYlAYjAHjs2bv/QGNzKTxeFTUeeT1SQNaSOcgHDCA3EEC6OdsNR0Bq
+	MImwK5VFgMGjkelwKTzeoO6xVjj3KKLLVcEVqwSQJTwgZ0CJFQBpgA5SZVmCDWkoAgwe
+	DRg8ziDuMTk96zzBYwVZmiNK9yhXYuUAefro7ngEpIYyB7tRRwQEeHQj7nFD/G4orooe
+	j/wVqxQgMw8kbw5fPh8BqY5UwTbVHwE5PG5OPpAJeCwROR55PXIO8g04yEunj+yO2xDC
+	O8g+uEhH/TmEPaguAgrweOT0JR3AIyvIJnKbx9/kNo+KlyVFV84LAWlmbNAP5yBVlyvY
+	ktojwOHRjBRXZ8xfHq4zeJQD5DshIGd7uTnREisCUu05hB2oLgIEj30G0OKqm9fswJAN
+	cbsZPL6p+iji4iop6MgA8jMB5J0r5zIPJG1exzpIAsheuEhHdemCLak3AgSPsIOOsTQe
+	rxSVvKyo/swWV7W9RQCjPUX/L1ik86Oh9iMPyKiQQAJIWzIHiYBUbwph6yqMAI9HJxk8
+	vgM8/uAfSS6uuUdOnMyDO1gHKQNIH5iDtEJAqjBZsCl1R0CCRyvGPa7bnHQg89yVO7qB
+	RykHCYCsYQCZfSQ1jgJyAgJS3QmE7as0AhI82jJ4jIpLPZJNiqtvdAKPsg7yQ8XLYuIg
+	9yfFgIP08SCAHIwOUqUpg42pLwJSePSZv3xdDIPHYp1wj+SiVdpBMoDMyz6cuj0qJGC2
+	FwBymKmRPjpI9aUQtqzCCAjwOMFrdkAI4PFwdh7FY40OuEeJIJuafsMcZGP95w/lPCCX
+	zfPxGDcaAanCfMGm1BoBFo+DzaxGj/PwmbcM8LifuEfA4wemuPq7SbzFVaamIwTkN9ZB
+	MoAMDvDzJIAcYoiAVGsaYeMqigDFo77RkGG2TgSPwVHbBXiE/Vcl+z2Ks7gqEKQ8IHfE
+	rEVAqihPsBmNREAWj2sleCwHPDbCjR3ix6O0gySAfP30/g0KyPUUkI4MIPXwUXMaySns
+	pP0RYPBoSPHo6RcQvJ7B4/1nr9/V1OoKHiUlVqGDvHw2cz8Csv2Zge/UQgTk8bgD3ONl
+	cI+6hEcZQH6lgCzMOwUlVgSkFrIKu2xvBACPen30CR4dJwjx+FS38CgPyBfFty+fzdgH
+	gAxiSqxDcQ6yvUmC79NUBBTgcV/m2cu3i1/oFh7lAFkJDrIw99Sh1Nj1wYv9PMc72tAS
+	KzpITWUW9tOeCEjjcTFxj4dO5RXeJ3j8qjvuUdEcpASQYUH+PpNgDhIB2Z4MwfdoMAIc
+	Hocyc49Ba2N27MvQSTw2D8hZUxGQGkwr7KqdEZDg0cZxvKcf4DEW8JhL8Fipa3gUOMhf
+	zCKdF4+og0yMoYAcOwoB2c4swbdpKAJCPE7y8Q8K02E8KgXkrtjI4MUISA2lFHbTgQgI
+	8Th11uLgSF3GowwgP70vB0AW5GSkyQKyR/cOhAzfihFQVwR4PI4ay+AxcV9GzuXbj6C4
+	+gmW5vzSiaU5zII5SUUHNjCHR839+Pa1pvL1k3uFuScP8oC0IKtYscSqrnzCdjsWAQ6P
+	FuAeGTzu0l33KBEk6PHfXz8b6zlAHk9L3BS21H/6JImDREB2LG/w3eqJQPce5Kk5g4da
+	SfCYlpFTQPD4HvD4U9fwyDvIf/8hgKwmgLxOALktctUicJAONiwgu3dTT0CxVYxA+yOg
+	AI8HT+Zev/dEF4urzFUr8yQdBpB1AMjnj24V5BBAhnKAHEQeFICAbH/W4DvVFQEhHqf7
+	Lw3blJh2PKfglgCP7IaPvEMT+2/cfZAcIF8BIC9KAdLEUL+3Hu7Pqq6cwnbbHYFu3enK
+	VRMLGwdwj4tWRW7bdfDkRYrHarI0R4z7r7b47wEHyP+BgxQAMoECciJxkIMM+iIg2500
+	+Ea1RYDB4yDqHgGPoZsSGDw+B/dYB+5Rch9yiyIQ0QlKAJmyLWLVoplTXcFBmhj2R0Cq
+	Lamw4fZGACY79HrrGxI8uhI8RnB4fFWpu3jk5iDJlAcLyIe38sFBsoAcM8rKFAHZ3pTB
+	96kxAgSPfQ0oHid2GjzKlVjfsg6SAeQUVwdrC5OBCEg15hU23a4IUDz2H2hiYe3gOmUm
+	wWMK4x51G49KAHlsb0J06BJ/74ljRloiINuVMPgmtUaAxaOp5cgxFI/RCXuP5+TfeqjT
+	7pEYWYGD/A5zkADIu9cvnkhP2RqxcuFMBKRakwobb28EFOAx/QQprr56q8vuUSJIumhO
+	4CCP7Y2PXrNkrhCQuCagvcmD71N5BIR49PZfEgp4PNYp8CgNSNif9e2rx3evXeABaW9t
+	jg5S5fmEDXYoAjwe7cE9LlwZsTUF8HjtLsVj/XfdnHvkpl0Ec5ANdZ+qyp4/vJmfIwdI
+	fPRjhzII36zKCMBSOVJcpe7Re+6SNdHxBI83dd89Si5Y4TYPWKRDNjDnALlza/jKhb5T
+	XBGQqswkbEsFEeDwaG4NePRduDKc4PHCtbuPwT1+0XU8Sio6ZA6yoe5jVdkzFpAbiYN0
+	pyXWAX17ISBVkEnYhCoiIMCjuxQey6o+1TXo6NIc7nJV3kGWEgeZlc4AEvZnRQepiiTC
+	NlQVASEeJ1M87uxEeOT1yAPywc38M0f3xDOAdCZzkAhIVWUTttPRCFA8DqDukeJxY/ye
+	Y2fAPT4rq/oohUcx76DD41D+N+EcJHGQHCC3hK9Y4IuA7Gj+4PtVGgEBHl0AjyvCt+xM
+	zyLusbQzuEdhRUcekKsD50xzR0CqNJ+wsY5FgMejs7v3nMA1gMejgMcHnQaP/BUr7M9K
+	S6ylj4uuEgfJAXKEuTGsYu2J90F2LJPw3SqIAOCxZ+/+A43NR9gDHhdweCxi8QgbzLG3
+	Ievq1SoQkrtgpYCsJSXWBzcYB8kA0m64qRE6SBUkEzbR4QgweDQytbRzdp82J3B1J8Qj
+	L0gWkBUEkOez0pMJIGeAg0RAdjiPsAGVREAxHq92KjzyepQD5AYCSDdnBKRKkgkb6XAE
+	ODwOt3N24/F4g7rHWuHcow5frgquWCWALAFAZkoB0gAdZIezCRvoYAQYPBow7nEGcY/J
+	6VnnrxaVlFaQpTmdwj3KlVg5B3n6yO54BGQHMwjfrsoIyOJxQ/zuo6fzOx0e+StWaUAe
+	SN4cvnw+dZBmxghIVWYWttWOCMjhcXPygcxOiEdej5yDfAMl1ksAyLgNIYFzvFgH2QdX
+	sbYjifAtKosAwWOfAUamnHvcELf7yOlLnRCPrCCbyG0edA6y4mVJ0ZXzmdKA7IdzkCpL
+	LWyo7RGgeOxnYGxG5h5nzF8ezuHxZedyjwoc5DshIGd7uTnREisCsu1JhO9QWQR4PDq5
+	ec0ODJHg8c27j52ouErkKAPIz9UAyDtXzmUeSNq8jnGQVuAgYfMAXKSjsvTChtoWAYJH
+	2EFHgsd1BI/nrhSVAB4/s8XVJrq2hclo3f5/wSKdHw21HzlApsZFhQQSQNqSRToIyLal
+	EJ6twgjI4jGKc48Ujz/4R5Lr9twj988IFSTnIAkgixlAxgAgfWCRDgJShbmFTbU5AhI8
+	WoF79Jm/fN3mJILHO50Tj1IlVgBkDQPI7MMEkAGzvSYgINucQfgGVUZAgkdbpwnEPUbF
+	pR7JJsXVN+9qahs6HR4lDvI3LbF+/sACcn9SzLpl83w8xo22MhuMDlKVGYZttSECLB4H
+	mwEePQgeY5L2EzwWv6z40PncI7loFTrIbywg8wCQ26OCGUAOG2Kkjw6yDTmEp6ouAhSP
+	+kamwygeA0Kitqcezs7rxHiUAmRj/ecP5YyDBECuRUCqLrGwpfZEgMfj6HEePvOWSeOx
+	EVau/m7qPMVVpqYjD8j7Nygg1wcH+HmCgxw2xBAB2Z5swvd0NAIMHg2HEDx6+gUES+ER
+	9l+V7PfYOYqrAkE2NREHyQHy8rnM/TsQkB1NJ3x/xyIgi8e1MTtY91gO7rFz4lHeQb5+
+	KgVIRwaQevgs1o4lF767zREAPOr10Sd4dKR4XM+4x/tPX0NxtbPiUd5Bvii+ffls5j4E
+	ZJsTCN+gyggoxOPZy1Bc7cx4lAHk15p3AMjCvFOHUrevD14MDhIBqcokw7ZaHQFFeDyV
+	V9jZ8agEkBkEkEH+dA5yKM5BtjqL8EQVRYDD41ArWlwNAve4L/Ps5dvFLzo3HuUAWUkA
+	mQuAjKWAHO9oQ0us6CBVlGjYTKsiIMDjeE+/xcHrY1MPncoleKys+dp53aNkUYCgxPri
+	EThIAsgwAOQkWKSDgGxVCuFJqouAEI+TfPyDwgCPGV0Cj80AMjJ48aypCEjVZRm21NoI
+	SPBo4zh+6qwuhUeBg/wFc5CfPpQDIAtyMvYlMoAcOwoB2do0wvNUEwEej6PGMnhMpHh8
+	xLrHX51waQ6zHkBywQr7s8KTdH58+1rDOchdsRwgLcgiHXSQqsk1bKXlCMjiMTJ2V1dx
+	jxJBEgf56ycA8j0LyLTETdRBSgDZo3vLkcQzMAIdj0D3HuSxAIOHWknwmJaRU3Ab8Pj+
+	EyzN6dx4FDjIf1hAPrl3PffkQQRkxzMLW2hHBDg8WrDuEfB48GRu4b0uUFxlrlqZBwX8
+	oYCso4C8VZBznAByqf/0SQSQg8h9kAjIdiQXvqXNERDicbr/0rBNiWnHeTz+7Ox45AH5
+	LwVkdeVrAORFAOS2yFWLoMTqYGNhQh1k925tji2+ASPQxgh0686sXLWwcYDi6qJVDB6v
+	33vyurKazD12hg3m+OqNwt84QP4PHCQB5PNHFJAJm0IRkG3MJjy9oxFg8DiIukfAYyiD
+	x1vUPdY1EjyyGz4qTOVOcZC7D5ID5CsOkBGrFs2c6soAsrcePvqxo7mG728xAjDZoddb
+	39BEgsdt4B4vAh5fdRk8cnOQZMpDASAnMg6yLzrIFpMJT+hwBAge+xpQPE6keEwg7vHW
+	o+dQXCV4lNyH3ClIqORDKAFkyjYCyCmuDtYWJrCBOQKyw9mGDbQQAQEeXafOXLQqYltK
+	18OjAkA+vJWfc3xvQjRxkBPHjLQ0HWSAgGwhl/DljkeAxaOp1agxPB7zbz3sUniUK7G+
+	pQ7yRDoAciUCsuNZhi20MgIUj/0HmlhYO7hOkcLj265SXGUuYeVKrASQxwggl8z1RkC2
+	Mp3wtA5GgMOj5cgxE739l4RGJ+w9ltP18CgFyO/1X6vfvnp899pFAOTWiJULwUHao4Ps
+	YKbh21sRAWk8LlwZsTUl/cTF63efvCJ4/N4V5h65Co88IG8SQMZHrxECEp9s1YqswlPa
+	G4FuTHHVlOJx7pI10fFdFI8ygPzCAPLCifSdW8NXLvQlgDTHEmt70wzf17oI8Hi0B/fI
+	4vHCtbuPAY9f6rsUHqVKrA11n6rKnj8UANKdK7EiIFuXWnhWOyIAK8nJ3KMMHm8+fF5W
+	1XXmHqUuWOE+SFik871eFpCTEZDtyC98S5siwOHR3Brw6LtwZfjWneknuioehbvr/Gyo
+	+1hV9gwAeebYnviNxEEygBzQtxcCsk05hie3PgIUjwMoHt29wT1upO7x5sNnZVUf6xq6
+	yNIcDo/yDrIUSqwXstJ3bglfsdAX9mdFB9n61MIz2x4BAR5dJrN4zCJ4LO2C7hFkyS2a
+	I6tYGUA+AEAeBUCuDpzj7e5MFukgINueZ/iO1kVAHo97jp7Jv/lADo+daQcdHofyv3GC
+	pPuzgoMsfVzEAXIBAeQIc2NYxdoTb/NoXX7hWW2KgDQeF6wI37IzvSvjsQVATnN3trM0
+	NUJAtinJ8ORWR4DHo7P7tDmBqzfGd3E88oIUAPLqecZBIiBbnVh4YnsiAHjs2bv/QGPz
+	EfbgHjk8Xi1i3SPsv8rehtxVrlZlHWQtKbE+uCFxkNPcnO2GIyDbk2v4npYjwODRyNTS
+	TohH2J5ctrjahfQoKemwgKwoLSkigEyGEuuCGYyDNEAH2XJy4RltjYA8HpPTs84TPFaQ
+	pTldEo/8BSstsXKAPH10d/wGKLEiINuaZHh+qyPA4XG4nbMbcY8bqHtk8FgrnHvsSnjk
+	BSkFyMwDyZvDV8xHQLY6u/DENkaAwaMB4x5nEPeYnJ4JeCzp0njk9SgE5KXTR3bHCQHZ
+	BxfptDHd8PQWIiCPx91HTud3eTzyguQA+ZI4SArI5QwgzYwN+uEcZAvphS+3LQIcHs1I
+	cXXG/OXhm5MPIB7JCgFuTQALyHdvoMTKADIkcLaXmxMtsSIg25ZueHYLESB47DPAyJS4
+	R685gSEb4gCPlwCPb6o+dmH3KBFkE7nN4+/v9Z+rK16W3LlyjgBynQCQvXCRTgsZhi+3
+	IQIUj/0MjKXxeKWo5CVfXG2ipCAZ2rV+BID80VD7kQdkFAKyDSmGp7YhAjwendy8Zgvx
+	+K6r45G9YpUHZBIBpA/MQVoRB4mAbEO64anNR4DgETaYMzazYtzjus1JBzLPXblD8PiZ
+	nXvsqniUcpAAyBoGkNlHUuMoICc42ZJFOuggm08xfLUNEZDg0ZbBY1RcKuseCR5/8I8k
+	71pzj9x1Ob1ilQDyQ8XLYuIg9yfFEEB6EEAORkC2Id3w1OYjIIVHn/nL18UweCxGPFJJ
+	SjtIBpB52YdTt0eFBMz2AkAOMzXSR0A2n2T4aqsjIMDjBK/ZASGAx8PZtLj6rgbxCJJk
+	AfkbSqyN9Z8/lPOAXDbPx2PcaARkq3MNT2wxAiweB5tZjR7n4TNvGeBxP3GPgMcPjHv8
+	3dR13SMhpBCQ31gHyQAyOMDPkwByCOzPiot0Wkw1PKEVEaB41DcaMszWieAxOGo74DGP
+	zD0CHmH/VcmGVl3TPUoE2dQkC8gdMWsRkK3IMDylDRGQxeNaCR7LAY+NcGNHV8ejPCBf
+	P71/gwJyPQWkIwNIPXzUXBvyDk9VHAEGj4YUj55+AcHrGTzef/Ya8UjYSH8UOMjLZzP3
+	IyAV5xQebXcE5PG4A9zjZXCPiEdOjTKA/FrzDgBZmHcKSqwIyHZnHr5RUQQAj3p99Ake
+	HScI8fgU8cjLUb7E+qL49uWzGfsAkEFMiXUozkEqSi881rYIcHgcyhZX18bs2Jd59vLt
+	4heIRzk9wuYBcJvHj29fayoJIHNPHUqNXR+82M9zvKMNLbGig2xb9uHZshGQxuNi4h4P
+	ncorvE/w+BWLq7wkZR2kBJBhQf4+k2AOEgEpm1v4d5sjII1H/yCCxwzEIy9DyW9Sc5Ay
+	gJw1FQHZ5tTDNyiIgASPNo7jPf0Aj7GAx1yCx0rEo0SL9BcJIH8xi3RePKIOMjGGAnLs
+	KASkgvzCQ22KAI/HUeMm+fgHhbF4fITuUVqM8JcSQO6KjQxejIBsU9rhyUoiIMTj1FmL
+	gyMRj3I6lByQAuSn9+UAyIKcjDRZQPboriTYeBgj0EIEmPseBw+1GjWWwWPivoycgtsE
+	j59gac4vXJojUaMCQD65V5h78iAPSAuyihVLrC3kHL6sNAIcHi3APTJ43IXuUaBAmV8Z
+	QP75/e+vn431HCCPpyVuClvqP32SxEEiIJUmHL7QbAS69yCPBWDwOB3c46bENBaP7wGP
+	PxGP0oLkHCRsYA5zkNWVr5/cu04AuS1y1SJwkA42LCC7d2s26vgiRkBhBLp1Z5bmCPB4
+	8GTu9XtP2OLqP7+73g460gqU+UsIyDoA5PNHtwpyCCBDOUAOIg8KQEAqTDc82EIEGDwO
+	ou5xuv9SgsfjOQW3wD2+/1RH8cjqUSYtu+yfsoB8BYC8SAAZQQDpCoA0MdTvrYf7s7aQ
+	ePiyogjAZAdZuWpiYeMA7nHRqshtuw6evEjxWE2W5nTFDeZa+KeGAyRsYN4oAGQCBeRE
+	4iAHGfRFQCrKNjzWUgRk8Bi6KYHB43MWj5L7kFtI0i70shJAphBAzpzCALI/ArKlzMPX
+	FUSA4LE3g0fXqTMXrYrg8PiqEvGo7N8YOUA+vJWfc3wvC8gxoyxNEZAKcg0PtRwBgse+
+	BsQ9jpkI7pHD40PEozIxwnEZQL5lHGS6BJDWFiYDEZAtJx+eIRsBisf+A00srB1cp1A8
+	pjDuEfHYjB7ZR82R265YB0kAeWxvQnToEn/viWNGIiBlEw3/blUEWDyaWo4cM9Eb8Bid
+	sPd4Tv4txGNzapQC5HeYgwRA3r1+8UR6ytaIlQvBQdojIFuVfXiSTARk8LgyYmtK+glS
+	XH31Ft1jc5JU6CCP7Y2PXrNkrhCQuCZAJuPwz+Yi0I1xjwwe5y4heDyGeGxOiOxrAgf5
+	vf4LAPLx3WsXCCDDWUCao4NsLvHwNUUR4PFoD+5xIYvHa3cfEzzWf8e5R+XKFACyoe5T
+	VdnzhzeJg2QA6c45SHz0o6K0w2NKIgAryUlxlcPjmuh4gsebD5+XMUtzcO5RqSCVAHIn
+	AaTvZHCQCEglSYeHlUWAw6O5NeDRd+HK8K07009cYPD4BfGoVIvkBU6PdAPzuo9VZc9Y
+	QG4kDpIB5IC+uHmAstzD4/IREODR3XvuEgken5VVfapr+MlvEdBsZnbRFzlBwm0e1EGW
+	EgeZlc4C0gUBKZ9veKTZCAjw6DJZiMfSt9WIx5b+meH0yAPywc38M0f3xG9cEzjH292Z
+	zEEiIJtNQHxRKgIUjwOoe6R43Bi/5+gZcI+Ax49SeOy6O+g0J0pOkLD9HAvIIgrILeEr
+	FvjCBuYjqIPsibd5SCUd/qEsAjJ4XBG+ZWd6FnGPiMfmZCh5jdOjPCBXB86Z5u5sZwkb
+	mKODVJZ+eFwmAjwend295wSuZvH4APEokVzzv3CCFADyKnGQPCCNYRUrAlIm7/BPhREA
+	PPbs3X+gsfkIe3CPC1g8Xi1i8QgbzOFjAVqnRwrIWlJifXCDcZAEkG7OdsMRkApTDw8q
+	iACDRyNTSztn92kSPML+q+gem5ch/6oMICtKHxddPZ+VnkwAOYM6SGMDBKSC3MNDchGQ
+	x2NyetZ5gscKUlxFPPKyU/obp0cpQJ4+ujt+AwJSLuHwQLMR4PA43M7ZTRaPtcK5Ryyu
+	KtWjZFEA6yArSksAkJkHkjcjIJtNPnxRNgIMHg0Y9ziDuEcGjyWIR+Xyk3tFESAvnT6y
+	O04IyD64SEc2+/Bv2QjI4nFD/O6jp/MZ94h4lBOesgOcIOUBuXw+dZBmxgb9sMQqm334
+	t0wEpPE4f3n45uQDmeAeEY/KlKf4OKdHzkG+gRIrA8iQwNlebk60xIqAlMk+/FM2AgSP
+	fQYYmbLuMWRD3O4jpy8BHt9UfUQ8KtaewqNUkE1NfyggP1dXvCwpukId5DoBIHvhHKRs
+	AuLfwghQPPYzMDYjc48zODxeKSp5icVVhbJTelAAyB8NtR/fISCFeYa/ty4CPB6d3Lxm
+	Bwrw+A7xqFR7Cl+QB+SdK+cyDyRtZgFpRRwkArJ1edlFzyJ4hB10JHhcR9zjuSt3CB4/
+	s3OPTTTRFKYgHhREQCEgs4+kxkUxDtKWLNJBB9lFlda6jy3Boy2DxyiJeyR4/MHf94hz
+	jwLlKflVDpDFBJD7k2IAkD4eLvZWZoMRkK3Lyy56lgSPVuAefeYvXxeThHhUoraWD0sD
+	soY6yLzsw6nbo0ICZntNcLIdZmqkj4DsolprzccW4HECcY9RcalHsmlx9V0N4rFlBcqc
+	wQLyN5RYG+s/fyh/KQHksnk+HuNGIyBbk5Rd9xwWj4PNrEa7ePjMWwZ43E/cY/HLig/o
+	HmXE1oo/hYD8VisEZHCAnycBJNnAHBfpdF3FNf/JKR71jUyH2ToBHgOCo7anHs7OI3OP
+	gEfYYE7yUDl0j61QI5yiBJA7YtYiIJtPRXz1r78EeBwnjcdywGMj3NjxuwmLq61TInOW
+	LCBfP71/gzrI9RSQjgwg9fBZrCg/BRFg8Gg4hODR0w/x2BblKTlXASAvn83cj4BUkH54
+	SDoCsnhcG7ODdY+IRyVya/GwFCC/1rwDQBbmnYISKwJSOvnwL7kIAB7J9uSAR0eKx/WM
+	e7z/9DW6xxaFp+wEWUC+KL4NgNwHgAxiSqxDcQ5SLhPxAERAIR7PXr5T/ALxqExtLR+X
+	AWQlAWTuqUOpseuDF/t5jne0oSVWdJAoQdkISONxcTDB46m8QorHr1hcbVl6is9QCMgM
+	AGRYkL/PJJiDREDKZiL+DRHg8DjUajQprgaBe9yXcfbybcSjYp219mhzgJw1FQGJ4lMc
+	AQkebRzHe/oBHmNTD53KJXisrEE8tlZ9Cs6TAPIXs0jnxSNwkBn7EhlAjh2FgFSckF37
+	qBCPk3z8g8IQjwq01Z5DSgC5KzYyeDECsmurTvmnF+Jx6qzFwZGIx/aIT9F7pAD56X05
+	ALIgJyNNFpA9uiv/dvCVLhYBHo+jxjJ4TKTu8RFbXP2FS3MUSa1Vx+QBea8w9+RBHpAW
+	ZBUrlli7mOSa/bgcHi3APTJ43IXusVVqa8VJPCB/NtZzgDyelrgpbKn/9EkSB4mAbDZF
+	u9SL3XuQxwIMHmolwWNaRk7BbcDj+0/1jT8Rj62QndJTOEDC/qw/vn2trnz95N51Asht
+	kasWgYN0sGEB2b1bl8o5/LBKI6AAjwdP5hbee4LFVaUqa8MLDCD//P7318/GOgrIWwU5
+	BJChHCAHkQcFICCVJmgXe0GIx+n+S8M2JaYdzym4JcAju6NVG5IQT5VEQBaQrwCQFwkg
+	IzhAmhjq99bD/Vm7mOyUfdxu3enKVRMLGwdwj4tWRW7bdfDkxesEj9Vk7hE3mJNIq32/
+	cID8HwvI548oIBMoICcSBznIoC8CUll+drXjDB4HUfcIeAzdlMDg8Tm4xzrqHhGP7RMi
+	+y4lgEwhgJw51RUcpIlhfwRkV9Odks8Lkx16vfUNCR5dp85ctCqCw+MrxGOHZMi/WQ6Q
+	D2/l5xzfywJyzChLUwSkkuzseocJHvsaUDxOVIRHyWM6+PzC39oWARlAvmUcZDoDyCmu
+	DtYWJrCBOTrIric++U9M8dh/oImFtYPrFIrHFMY9Ih7bJrrmzlYIyGN7E6JDl/h7Txwz
+	EgEpn5hd9AiLR1PLkWMoHqMT9h7Pyb/1kHOPiMfmhNbK1wSA/A5zkADIu9cvnkhP2Rqx
+	cuFMBGQXlZ6ijy2Dx5UR21LST5Di6qu3WFxtpdpacZoSQMZHr1kyVwhIXBOgKEm70DEh
+	Hr3nLgkFPB5DPLZCYW07RQjI+i8AyMd3r10ggAyngLS3NkcH2YVUp/Sj8ni0B/e4cGXE
+	VoLHa3cfEzzWf8e5x7bJTvnZ0oCsKnv+8GZ+zrG9DCDdOQeJj35Umqld4wVYKkeKq9Q9
+	Ah7XRMcTPN5E96hcWe17RQkgdxJA+k52RUB2Db218Ck5PJpbAx59F64M37oz/cQFBo9f
+	EI/tk57idwkA2VD3sarsGQvIjcRBMoAc0Bc3D2ghYTv5ywI8ukvhsazqU13DT36LAMU5
+	hkdbHwFZQJYSB5mVzgLSBQHZyaXWmo8nxONkxGPrxdWOMzk9/oZVrAwgH9zMP3N0T/zG
+	NYEASGcyB4mAbE3Wdt5zKB4HUPdI8bgxfs+xM+Aen5VVfZTCI+6g0w4FyryFEyRsP/ed
+	lFhLHxdRQG4JX7HAd7KL/QgssXZepbXqkwnw6AJ4XBG+ZWd6FnGPpW+r0T3KyKnDf3J6
+	lAfk6sA509yd7RCQrcraznsSj0dnd+85gasBj0cBjw8Qjx0Wn6IGOEEKAHmVOEgekMaw
+	irUn3gfZeRXX7CcDPPbs3X+gsfkI2J7cdwGHxyIWj7DBHHufFV6tKpJXm49xeqSArCUl
+	1gc3GAfJAnK4qRE6yGZTtlO/yODRyNTSztl9GuKxzfpq8xs4QbKArAAHefV8VnoyAeQM
+	6iCNDRCQnVpzzXw4eTwmp2edv4p4bLPOWvsGTo8ygNwdv4EA0s3ZDgHZTL529pc4PA63
+	c3bj8Qjbk0NxtVY494iXq60VXEvncYKUALIEAJmZnrwZAdnZ1dbi52PwaMC4xxnEPTJ4
+	LCmtIMVVdI8tiasdr3N6FALy0ukj0oDsg4t0WkzeTniCLB43xO8+ejof8dgOmbX+LZwg
+	pQF5AAC5fD51kGbGBv2wxNoJ5dbSR5LG4/wV4ZuTD2SCe0Q8tl5dbT+T0yMHyDdQYiWA
+	jNsQEjjbi3WQCMiWkrcTvk7w2GeAkSnnHjfE7T5y+hLg8Q26x7brrNXvoIJsavpDAfm5
+	uuJlSdGV85kAyHUCQPbCOchOqLhmPxLFYz8DYzMy9zhj/nIJHl+ie2y1uNpxogCQPxpq
+	P76TAaQTLbEiIJvN3c74Io9HJzev2YEhPB7fYXG1HTpr9VvkAXnnyrnMA0kcIK2Ig0RA
+	dkbNNfOZCB5hBx0JHtcR93juyp0SwONntrjaRFOn1YmGJ7YqAgoBmX0kNS6KOkgnWzIH
+	iYBsJnc740uyeIySuEeCxx/8fY8499gqlbXhJDlAFhNA7k+KAQfpA4t0rMwGIyA7o+aa
+	+UwSPFqBe/SZv3zd5iTEYxs01ZFTpQFZQx1kXvbh1O1RIQGzvSY42Q4zNdJHQDaTvZ3v
+	JQkebZ0mEPcYFZd6JJsWV9/VIB47orZWvJcF5G8osTbWf/5Q8VICyGXzfDzGjUZAdj7B
+	Nf+JWDwONrMa7eJB8BiTtJ+4x+KXFR/QPbZCUh06RQjIb7VCQAYH+HkSQJINzHGRTvM5
+	3JlepXjUNzIdRvEYEBK1PfVwdh6ZewQ8wgZzkkeSo3vskPKUvFkGkOUSQK5FQHYmmbX2
+	swjwOM7DZ94yHo/lgMdGWLn6uwmLq0rEpILDsoB8/fT+Deog11NAOjKA1MNnsbY2oXX8
+	PAaPhkMIHj39AoIRjyoQWVuaUADIy2cz9++IQUDquLTaM3xZPK6N2cG6R8RjW1TV/nMV
+	ALIw7xSUWBGQ7UloHX8P4FGvjz7BoyPF43rGPd5/+hrdY/s11qZ3ygLyRfFtAOQ+AGQQ
+	U2IdinOQOq6yVg9fIR7PXr5T/ALx2CZRdeBkKUB+rakEB1mYe+pQauz64MV+nuPRQbY6
+	m3X/REV4PJVXSPH4FYurHVBZG96qEJAZFJD+PpNgDhIBqftKa9Un4PA41Go0Ka4GgXvc
+	l3H28m3EYxvk1OFTmwPkrKnjHW3oHCSWWFuV0jp9kgSPNo7jPf0WB6+PTT10KpfgsbIG
+	8dhhobW2AQkgf9FFOuUvHoGDzNiXGBMWBIAcOwoBqdMqa/XghXic5OMfFIZ4bK2EVHqe
+	EkDuio0MXoyAbHU66/yJQjxOnYV4VKnI2tKYFCA/vSeALMiRB2SP7jqfcvgBlEeAx+Oo
+	sQweE6l7fMQWV3/h0py2iKoD58oD8l5h7slDPCAtyCpWdJDKc7kzvMLh0QLcI8FjZOwu
+	dI8dUFUH3soD8mdjPQfI42mJm8KW+k/nHSQCsjPoTtln6N6DPBZg8FArCR7TMnIKbgMe
+	33+qb/yJeOyAwNr4Vg6Q//7z68e3r9WVr5/cu5578uCubZGrFoGDdLBhAdm9m7IvE4/r
+	egQU4PHgydzCe0+wuNpGNangdAaQf37/++tnYx0A8vmjWwU5BJChHCAHkQcFICB1XXXK
+	xy/E43T/pWGbEtOO5xTcEuCR3dFKBemGTbQQAVlAvgJAXpQCpImhfm893H5OeT7r+Cvd
+	utOVqyYWNg7gHhetity26+DJi9cJHqvJ3CNuMNeChFT7MgdI2MBcCMgECsiJZA5ykEFf
+	BKSOi66Z4TN4HETdI+AxdFMCg8fn4B7rqHtEPKpWcs22pgSQKdsiVi2aOdUVHKSJYX8E
+	ZDMJrdsvwWSHXm99Q4JHV4LHCA6PrxCPzQpHXS/KAfLhrXxwkCwgx4yyMkVA6rbkmh09
+	wWNfA4rHiYrwKHlMh7ryD9uVjoAMIN+yDpIB5BRXB2sLE9jAHB1ks1mtsy9SPPYfaGJh
+	7eA6ZSbBYwrjHhGP0jLR3F8KAXlsb0J06BJ/74ljRloiIHVWbi0OnMWjqeXIMRSP0Ql7
+	j+fk33rIuUfEo+aEyPYkAOR3mIMEQN69fvFEesrWiJULZyIgW0xpXT5BAR7TT5Di6qu3
+	WFzVuBKFgmz6Q7afY0qsxEEe2xsfvWbJXCEgcU2ALktP4diFePSeuyQU8HgM8agtIQr1
+	+H9k+7lf3+u/ACAf3712gQAynALS3tocHaTCbNb5gzwe7cE9LlwZsTUF8Hjt7mOCx/rv
+	OPeoHWUKHGRD3aeqsucPb/KAdOccJD76Uef1J/sBYKkcKa5S9wh4XBMdT/B4E92jdnTI
+	9Sp0kAJA7iSA9J3iioCUzeNO8jeHR3NrwKPvwpXhBI8XGDx+QTxy8tD8f6UA+bGq7BkL
+	yI3EQTKAHNAXNw/oJDKUfAwBHt2l8FhW9amu4Se/RYDmM7Jr9ygLyFLiILPSGUDC9nPo
+	ICU53Il+EeJxMsXjTsSjKP4h4PRISqwNdQSQD27mnzm6J37jmkAApDOZg0RAdiIp0o9C
+	8TiAukeKx43xe46dAff4rKzqoxQecQcdTauUEyRXYuUAuSV8xQJfAOQILLF2NjX+JcCj
+	C+BxRfiWnelZxD2Wvq1G96hpBUr3x+lRHpCrA+dMc3e2s4QNzNFBdipN8nh0dveeE7gG
+	8HgU8PgA8SitDa38xQkS9melc5Clj4uuEgfJA9IYVrH2xPsgO40kAY89e/cfaGw+ArYn
+	913A4bGIxSNsMMfeZ4VXq1pQJKdHCsha6iBvMA6SBeRwBGSnkSL9IAwejUwt7Zzdp80J
+	XI141ILslHfJCZIFZAUB5Pms9GQCyBnUQSIgO5Mg5fGYnJ51/iriUblENPoKp0cZQO6O
+	30AA6eZsh4DsTHL8i8PjcDtnNx6PsD05FFdrhXOPeLmqUR1KOuMEKQFkCQAyMz15Mw9I
+	A3SQnUWTDB4NGPc4g7hHBo8lpRWkuIruUaILbf3C6VEIyEunj0gDsg8u0ukcipTF44b4
+	3UdP5yMetaU+Bf1ygpQG5AEA5PL51EGaGRv0wxJrp9CjNB7nLw/fnHwgE9wj4lGBMLR0
+	iNMjB8g3zx7cIICM2xASONvLzYk6SARk59Aj3NjRZ4CRKeseQzbE7T5y+hLg8Q26Ry3J
+	T75bKsgmch8kzEF+rq54WVJ05XwmAHKdAJC9cA5S9xVJ8djPwNiMzD3O4PB4pajkJbpH
+	eV1o64gMIN8hIHVfeYo/AXGPDB6d3LxmBwrw+A6Lq9qSn3y/8oC8c+Vc5oEkDpBWxEEi
+	IBXnuA4dJXiEHXQkeFxH3OO5K3cIHj+zxdUmmgzyOYJHNBcBASB/NNR+ZACZfSQ1Lopx
+	kLZkDhIdpA4pT/FQZfEYJXGPBI8/+Psece5Rc+JT1JMcIIsJIPcnxYCD9PFwsbcyG4yA
+	VJzjOnRUgkcrcI8+85ev25yEeFQkB60fkwZkDQVkXvbh1O1RIQGzvSY42Q4zNdJHQOqQ
+	9hQNVYJHW6cJxD1GxaUeyabF1Xc1iEeti1A4ABaQv6HE2lj/+UPFSwkgl83z8Rg3GgGp
+	KMF16xiLx8FmVqNdPAgeY5L2E/dY/LLiA7pHoRq0/7sQkN9qhYAMDvDzJIAkG5jjIh3d
+	UqD0aCke9Y1Mh1E8BoREbU89nJ1H5h4Bj7DBnOSR5OgeRSLIpiYOkOUSQK5FQEqnta7+
+	JcDjOA+fect4PJYDHhth5ervJiyual+JzAhkAfn66f0b1EGup4B0ZACph89i1VU50hs7
+	+ugbDiF49PQLCEY8ikV7Csch4yAJIC+fzdy/IwYBqbMSFA5cFo9rY3aw7hHxqFAQWj6o
+	AJCFeaegxIqAFKa1zv4O7lGPwaMjxeN6xj3ef/oa3aOWpae4e1lAvii+DYDcB4AMYkqs
+	Q3EOUmfVSB4qR5bmkOIqdY8Uj2cv3yl+gXhUrAdtH5UC5NeaSnCQhbmnDhFALvbzHI8O
+	UnfFCCOXxuPiYILHU3mFFI9fsbiqbfEp6l8hIDMoIP19JsEcJAJSZyXJ4XEog8cgwOO+
+	jLOXbyMeFSlBHMeUATIWADlr6nhHGzoHiSVWXRSlBI82juM9/QCPsamHTuUSPFbWIB7F
+	oT+5UUgA+Ysu0il/8QgcZMa+xJiwIADk2FEISF2UIhmzEI+TfPyDwhCPctkvvgNKALkr
+	NhIBqatKZMYtxOPUWYhH8WlP4YikAPnpPQFkQU5Gmiwge3TX7ezscqPn8ThqLIPHROoe
+	H7HF1V+4NEehHrR9UB6Q96DEepAHpAVZxYoOUtcEzeHRAtwjwWNk7C50j9oWW2v65wH5
+	s7GeA+TxtMRNYUv9p/MOEgGpW4rs3oPOPQ61kuAxLSOn4Dbg8f2n+safiMfWaEMb53CA
+	hO3nfnz7Wl35+sm967knD+7aFrlqEZRYHWxYQHbvplsJ2bVHqwCPB0/mFt57gsVVbYis
+	LX0ygPzz+99fPxvrKCBvFeQQQIZygBxEHhSAgNQlhQvxON1/adimxLTjOQW3BHhkd7Rq
+	S6bguZqIgCwgXwEgLxJARnCANDHU762H28/pkB67dacrV00sbBzAPS5aFbltF+DxOsFj
+	NZl7xA3mNKGsdvbBARI2MKeAfP6IAjKBAnIimYMcZNAXAalDcvyLweMg6h4Bj6GbEhg8
+	Pgf3WEfdI+KxnWpR/9uUADKFAHLmVFdwkCaG/RGQOqRHmOzQ661vSPDoSvAYQfB4EfD4
+	CvGofj11uAc5QD68lQ8OkgXkmFFWpghIHVLjXxSPfQ0oHicqwqPkMR0dTh1sQA0RkAHk
+	W9ZBMoCc4upgbWECG5ijg9QVTVI89h9oYmHt4DplJsFjCuJRDbpRW5MKAXlsb0J06BJ/
+	74ljRloiIHVFi2ScxD0CHk0tR46heIxO2Hs8J//WQ849Ih7VpiTVNCwA5HeYgwRA3r1+
+	8UR6ytaIlQtnIiB1SYswVgV4TD9B3eNbLK6qRjDqbkUJIOOj1yyZKwQkrgnQAW0K8eg9
+	d0ko4PEY4lHdElJp+0JA1n8BQD6+e+0CD0h7a3N0kDqgRDpEHo/24B4XrozYmgJ4vHb3
+	8SvAY/13nHtUqXLU1Jg0IKvKnj+8mZ9zbC8DSHfOQeKjH3VAlLBUTuIeAY9rouMJHm+i
+	e1STdNTSrBJA7twavnKh72RXBKQOCJEZIodHc2vAo+/CleEEjxcYPH5BPKpFPWpoVADI
+	hrqPVWXPWEBuJA6SAeSAvrh5gPhlKcCjuxQey6o+1TX85LcIUEMSYZMqi4AsIEuJg8xK
+	ZwHpgoAUvxLpCIV4nEzxuBPxqDKVaK4hTo+/YRUrA8gHN/PPHN0Tv3FNIADSmcxBIiDF
+	L0qKxwF07pHicWP8nmNnwD0+K6v6KIVH3EFHc+JqT0+cIGH7ue+kxFr6uIgCckv4igW+
+	k13sR2CJVfxqlMw9gnt0ATyuCN+yMz2LuMfSt9XoHtujC229h9OjPCBXB86Z5u5sZwkb
+	mKODFLkmeTw6u3vPCVwDeDwKeHyAeNSWrtrdLydIASCvEgfJA9IYVrH2xPsgRSxJcI89
+	e/cfaGw+guBxAYfHIhaPsMEce58VXq22WyeaeiOnRwrIWlJifXCDcZAsIIcjIEUsRTo0
+	Bo9GppZ2zu7T5gSuRjxqSj1q6IcTJAvICnCQV89npScTQM6gDhIBKW5ByuMxOT3r/FXE
+	oxrUov4mOT3KAHJ3/AYCSDdnOwSkuOVI91/tO8DIdLidsxuPR9ieHIqrtcK5R7xcVb+c
+	Ot4DJ0gJIEsAkJnpyZt5QBqggxSvJhk8GjDucQZxjwweS0orSHEV3WPHJaLRFjg9CgF5
+	6fQRaUD2wUU6YlUk5x45PG6I3330dD7iUaMiUmVnnCClAXkAALl8PnWQZsYG/bDEKlI9
+	SuNx/vLwzckHMsE9Ih5VqRFNtsXpkQPkGyixEkDGbQgJnO3l5kQdJAJSrHqEGzv68O4x
+	ZEPc7iOnLwEe36B71KSKVNgXFWRT0x8KyM/VFS9Liq6czwRArhMAshfOQYpRkRSP/QyM
+	zcjc4wwOj1eKSl6ie1ShRDTalAwg3yEgxag8xWMi7pHBo5Ob1+xAAR7fYXFVoypSYWfy
+	gLxz5VzmgSQOkFbEQSIgFStCq0cJHnsJ8LiOuMdzV+4QPH5mi6tN9OtVYbpgU2qOgACQ
+	PxpqPzKAzD6SGhfFOEhbMgeJDlKrylPcuSweoyTukeDxB3/fI849qllDKm1eDpDFBJD7
+	k2LAQfrAIh0rs8EISMWK0OpRCR6twD36zF++bnMS4lGlytBOY9KArKGAzMs+nLo9KiRg
+	ttcEJ9thpkb6CEitak9R5xI82jpNIO4xKi71SDYtrr6rQTxqR0sq6ZUF5G8osTbWf/5Q
+	8VICyGXzfDzGjUZAKpKDto+xeBxsZjXaxYPgMSZpP3GPxS8rPqB7VIkwtNSIEJDfaoWA
+	DA7w8ySAJBuY4yIdbStQun+KR30j02EUjwEhUdtTD2fnkblHwCNsMCd5JDm6Ry3pqt3d
+	ygCynAXkjpi1CEhpEYjnLwEex3n4zFvG47Ec8NgIK1d/N2Fxtd2S0OobZQH5+un9G9RB
+	rqeAdGQAqYfPYhWPHOmNHX30DYcQPHr6BQQjHrUqIdV2rgCQl89m7kdAikiA0kORxePa
+	mB2se0Q8qlYb2mhNASAL805BiRUBKS0D0fwF7lGPwaMjxeN6xj3ef/oa3aM2FKTiPmUB
+	+aL4NgByHwAyiCmxDsU5SNFoEQaiEI9nL98pfoF4VLE0tNKcFCC/1lSCgwRAHiKAXOzn
+	OR4dpJjESPSoAI+n8gopHr9icVUrGlJppwoBmUEB6e8zCeYgEZAikiSHx6FWo0lxNQjc
+	476Ms5dvIx5VKgotNqYIkLkAyFgA5Kyp4x1t6BwklljFIUoJHm0cx3v6LQ5eH5t66FQu
+	wWNlDeJRizJSXdcSQP6ii3TKXzwCB5mxLzEmLAgAOXYUAlIcUiSjEOJxko9/UBjiUXVC
+	EElLSgEZiYAUjxKZkQjxOHUW4lEkElLtMKQA+ek9AWRBjjwge3QXW3Z2ufHweBw1lsFj
+	InWPj9ji6i9cmqNaaWilNXlA3isEB7krlgOkBVnFig5S+/Ln8GgB7pHgMTJ2F7pHrWhG
+	rZ3ygPzZWM8B8nha4qawpf7TeQeJgNS2Irv3II8FGDzUSoLHtIycgtuAx/ef6ht/Ih7V
+	KhONNc4B8t9/fv349rW68vWTe9dzTx7ctS1y1SIosTrYsIDs3k3bCdm1+1eAx4Mncwvv
+	PcHiqsa0opGOGED++f3vr5+NdRSQtwpyCCBDOUAOIg8KQEBq998DIR6n+y8N25SYdjyn
+	4JYAj+yOVhpJGuxEbRGQBeQrAORFAsgIDpAmhvq99XD7Oa3qsVt3unLVxMLGAdzjolWR
+	23YdPHnxOsFjNZl7xA3m1CYQTTfMARI2MKeAfP6IAjKBAnIimYMcZNAXAalVOf7F4HEQ
+	dY+Ax9BNCQwen4N7rKPuEfGoaeGoqT8lgEwhgJw51RUcpIlhfwSkVvUIkx16vfUNCR5d
+	p85ctCqCw+MrxKOaZKG9ZuUA+fBWPjhIFpBjRlmZIiC1qsa/KB77GlA8TlSER8ljOrSX
+	RdizqiIgA8i3rINkADnF1cHawgQ2MEcHqT1NUjz2H2hiYe3gOoXiMYVxj4hHVYlATO0o
+	BOSxvQnRoUv8vSeOGWmJgNSeFknPxD0CHk0tR46heIxO2Hs8J//WQ849Ih7FJKcOj0UA
+	yO8wBwmAvHv94on0lK0RKxfOREBqV4vQuwweV0ZsS0k/QYqrr95icbXD2S/CBpQAMj56
+	zZK5QkDimgCtaFOIR++5S0IBj8cQjyLUkaqGJARk/RcA5OO71y7wgLS3NkcHqRUl0k55
+	PNqDe1y4MmIrweO1u48JHuu/49yjqmQgnnakAVlV9vzhzfycY3sZQLpzDhIf/agVUcJS
+	OYl7BDyuiY4neLyJ7lE8+lH1SJQAcufW8JULfSe7IiC1IkSmUw6P5taAR9+FK8O37kw/
+	cYHB4xfEo6qlII72BIBsqPtYVfaMBeRG4iAZQA7oi5sHaEOWAjy6S+GxrOpTXcNPfosA
+	cWQSjkIVEZAFZClxkFnpLCBdEJDaUCLtU4jHyYhHVSS7DrTB6fE3rGJlAPngZv6Zo3vi
+	N64JBEA6kzlIBKQ2REnxOIDOPVI8bozfc+wMuMdnZVUfpfCIO+jogM5aPUROkLD93HdS
+	Yi19XEQBuSV8xQJf2J91BJZYtaFGydwjuEcXwOOK8C0707OIeyx9W43usdXprXMncnqU
+	B+TqwDnT3J3tLGEDc3SQGtckj0dnd+85gasBj0cBjw8QjzonsbYNmBOkAJBXiYPkAWkM
+	q1h74n2QGpUkuMeevfsPNDYfQfC4gMNjEYtH2GCOvc8Kr1bblu6iP5vTIwVkLSmxPrjB
+	OEgWkMMRkBqVIu2MwaORqaWds/s0xKPoVaTCAXKCZAFZAQ7y6vms9GQCyBnUQRobICA1
+	K0mFeDx/FfGowrwXa1OcHmUAuTt+AwGkm7MdAlKzYoTeODwOt3N24/EI25NDcbVWOPeI
+	l6tilVX7x8UJUgLIEgBkZnryZgSkxoXIdMjg0YBxjzOIe0xOzwI8lpRWkOIqusf2J7sO
+	vJPToxCQl04fkQZkH1ykozlxyuJxQ/zuo6fzEY86ICZVDJETpDQgDwAgl8+nDtLM2KAf
+	llg1pkdpPM5fEb45+UAm4lEVqa4TbXB65AD5BkqsBJBxG0ICZ3u5OVEHiYDUnB7hxo4+
+	A4xMOfe4IW73kdOXAI9v0D3qhKA6OkgqyKamPxSQn6srXpYUXTmfCYBcJwBkL5yD1Iwi
+	KR77GRibkbnHGfOXS/D4Et1jRzNdN94vAOSPhtqP7xCQmlGe4l6Ie2Tw6OTmNTswhMfj
+	Oyyu6oagOjpKeUDeuXIu80ASB0gr4iARkIr1o+KjBI+wg44Ej+uIezx35U4J4PEzW1xt
+	ol9YR791fL9YI6AQkNlHUuOiGAdpS+Yg0UGqWHmKm5PFY5TEPRI8/uDve8S5R7HKqePj
+	kgNkMQHk/qQYcJA+Hi72VmaDEZCK9aPioxI8WoF79Jm/fN3mJMRjxxNcx1qQBmQNdZB5
+	2YdTt0eFBMz2muBkO8zUSB8BqWLtKWpOgkdbpwnEPUbFpR7JpsXVdzWIRx2TVfuHywLy
+	N5RYG+s/f6h4KQHksnk+HuNGIyAViUf1x1g8DjazGu3iQfAYk7SfuMfilxUf0D22P791
+	7Z1CQH6rFQIyOMDPkwCSbGCOi3RUr0DpFike9Y1Mh1E8BoREbU89nJ1H5h4Bj7DBnOSR
+	5OgedU1ibRuvDCDLJYBci4CUlow6/xLgcZyHz7xlPB7LAY+NsHL1dxMWV9uW2bp5tiwg
+	Xz+9f4M6yPUUkI4MIPXwWazqlCO9saOPvuEQgkdPv4BgxKNuqkkFo1YAyMtnM/fviEFA
+	qlWCwsZl8bg2ZgfrHhGPKkhxnWpCASAL805BiRUBKZSMWn8H96jH4NGR4nE94x7vP32N
+	7lGnxKSKwcoC8kXxbQDkPgBkEFNiHYpzkGpVI3moHFmaQ4qr1D1SPJ69fKf4BeJRFRmu
+	W21IAfJrTSU4yMLcU4dSY9cHL/bzHI8OUr1ihNYV4fFUXiHF41csruqWnDo+WoWAzKCA
+	9PeZBHOQCEi1SpLD41AGj0GAx30ZZy/fRjx2PLd1sYXmADlr6nhHGzoHiSVWdYlSgkcb
+	x/GefouD18emHjqVS/BYWYN41EVFdXDMEkD+oot0yl88AgeZsS8xJiwIADl2FAJSXVIk
+	7QrxOMnHPygM8djBfNb1tysB5K7YyODFCEh1apHqkSuuAh6nzkI86rqaVDB+KUB+ek8A
+	WZCTkSYLyB7d1Z2bXbB9Ho+jxjJ4TKTu8RFbXP2FS3NUkOG61YQ8IO8V5p48yAPSgqxi
+	RQepjn8uOPdoweIxMnYXukfdko/qR8sD8mdjPQfI42mJm8KW+k/nHSQCUvWK7N6Dzj0O
+	tZLgMS0jp+A24PH9p/rGn4hH1We7+FvkAPnvP79+fPtaXfn6yb3rBJDbIlctAgfpYMMC
+	sns31Sdk125RAR4PnswtvPcEi6vil436RsgA8s/vf3/9bKwDQD5/dKsghwAylAPkIPKg
+	AASkqv/1EOJxuv/SsE2JacdzCm4J8MjuaKW+7x5bFl8EZAH5CgB5UQqQJob6vfVw+zkV
+	67Fbd7py1cTCxgGKq4tWRW7bdfDkxesEj9Vk7hE3mBOfVjQyIg6QsIG5EJAJFJATyRzk
+	IIO+CEgVy/EvBo+DqHsEPIZuSmDw+BzcYx11j4hHjeS/2DpRAsiUbRGrFs2c6goO0sSw
+	PwJSxXqEyQ693vqGBI+uBI8RHB5fIR7FphANj0cOkA9v5YODZAE5ZpSVKQJSxWr8i+Kx
+	rwHF40RFeJQ8pkPDyYDdaT0CMoB8yzpIBpBTXB2sLUxgA3N0kKrUJMVj/4EmFtYOrlNm
+	EjymMO4R8ah1PWh9AAoBeWxvQnToEn/viWNGWiIgValF0hZxj4BHU8uRYygeoxP2Hs/J
+	v/WQc4+IR62rQnsDEADyO8xBAiDvXr94Ij1la8TKhTMRkKrWIrSnAI/pJ0hx9dVbLK5q
+	Twhi6VkJIOOj1yyZKwQkrglQkTaFePT2XxIKeDyGeBSLHLQ+DiEg678AIB/fvXaBADKc
+	AtLe2hwdpIqUSJvh8WgP7nHhyoitKQSPdxk8fse5R60rQssDEACyoe5TVdnzhzfzc47t
+	ZQDpzjlIfPSjikQJS+Uk7tF77pI10fGIRy0rQFzdKwHkTgJI3ymuCEgVCZFphsOjuTXg
+	0XfhynCCxwvX7j4G9/ilHvEoLm1oZTRSgPxYVfaMBeRG4iAZQA7oi5sHqEaWAjy683i8
+	+fB5WdWnuoaf/BYBWkkF7FQEEZAFZClxkFnpDCAnuyAgVaNE2ooQj5MpHnciHkWgATEN
+	gdPjb1jF2lBHAPngZv6Zo3viN64JBEA6kzlIBKRqREnxOIDOPVI8bozfc+xM/s2Hz8qq
+	PkrhEXfQEZNENDsWTpBwH+R3UmLlALklfMUCXwDkCCyxqkaNkrlHcI8ugMcV4Vt2pmcR
+	91iK7lGzOS/m3jg9ygNydeCcae7OdpawgTk6SBVoksejs7v3nMA1gMejgMcHiEcx60Pj
+	Y+MECfuzsoAsukocJA9IY1jF2hPvg+ygJME99uzdf6Cx+QiCxwUcHotYPMIGc+x9Vni1
+	qnENiKlDTo8UkLXUQd5gHCQLyOEIyA5Kkb6dwaORqaWds/u0OYGrEY9iUoGIxsIJkgVk
+	Renjoqvns9KTCSBnUAeJgOy4IOXxmAzu8SriUURKEMdQOD3KAHJ3/AYCSDdnOwRkx+VI
+	91/tO8DIdLidsxuPR9ieHIqrtcK5R7xcFYcstDcKTpASQJYAIDPTkzfzgDRAB9kxTTJ4
+	NGDc4wziHgGP568WlZRWkKU56B61l/6i65nToxCQl04fkQZkH1yk0xFFcu6Rw+OG+N1H
+	T+cjHkUnBjEMiBOkNCAPACCXz6cO0szYoB+WWDugR2k8zl8Rvjn5QCbiUQzJL8IxcHrk
+	APnm2YMbBJBxG0ICZ3u5OVEHiYDsiB7hxo4+Ave4IW73kdOXAI9v0D2KUBDaHhIVZFPT
+	HwrIz9UVL0uKrpzPBECuEwCyF85BtleRFI/9DIzNyNzjjPnLJXh8ie5R27kvxv5lAPkO
+	Adle5Sl+H3GPDB6d3LxmB4bweHyHxVUxCkLbY5IH5J0r5zIPJHGAtCIOEgGpWG0tHiV4
+	7CXA4zriHs9duVMCePzMFleb6Feg7TzA/sURAQEgfzTUfmQAmX0kNS6KcZC2ZA4SHWSL
+	ylN8giweoyTukeDxB3/fI849ikMO2h+FHCCLCSD3J8WAg/TxcLG3MhuMgFSsthaPSvBo
+	Be7RZ/7ydZuTEI/aT3lRj0AakDUUkHnZh1O3R4UEzPaa4GQ7zNRIHwHZovYUnSDBo63T
+	BOIeo+JSj2TT4uq7GsSjqGWhvcGxgPwNJdbG+s8fKl5KALlsno/HuNEISEVSa80xFo+D
+	zaxGu3gQPMYk7SfusfhlxQd0j9rLeHH3LATkt1ohIIMD/DwJIMkG5rhIpzUKlD6H4lHf
+	yHQYxWNASNT21MPZeWTuEfAIG8xJHkmO7lHcEtHs6GQAWS4B5FoEpLTA2vaXAI/jPHzm
+	LePxWA54bISVq7+bsLiq2VzXhd5kAfn66f0b1EGup4B0ZACph89ibZsc6Y0dffQNhxA8
+	evoFBCMedUENIhijAkBePpu5f0cMArKNEhSeLovHtTE7WPeIeBRB0ot4CAoAWZh3Ckqs
+	CEihwNr4O7hHPQaPjhSP6xn3eP/pa3SPIhaDGIYmC8gXxbcBkPsAkEFMiXUozkG2UY3k
+	oXJkaQ4prlL3SPF49vKd4heIRzHkvJjHIAXIrzWV4CALc08dIoBc7Oc5Hh1kW8UI50vj
+	cXEwweOpvEKKx69YXBWzHLQ/NoWAzKCA9PeZBHOQCMg2SpLD41AGj0GAx30ZZy/fRjxq
+	P9vFPwJlgIwFQM6aOt7Rhs5BYom19aKU4NHGcbynH+AxNvXQqVyCx8oaxKP4FaHlEUoA
+	+Ysu0il/8QgcZMa+xJiwIADk2FEIyNZLkZwpxOMkH/+gMMSjljNct7pXAshdsZEIyLYp
+	kTlbiMepsxCPuqUGEYxWCpCf3hNAFuRkpMkCskf39mRnl3sPj8dRYxk8JlL3+Igtrv7C
+	pTkiyHkxD0EekPegxHqQB6QFWcWKDrJ1/7RweLQA90jwGBm7C92jmNNffGPjAfmzsZ4D
+	5PG0xE1hS/2n8w4SAdkaRXbvQeceh1pJ8JiWkVNwG/D4/lN940/Eo/jyX2wj4gAJ28/9
+	+Pa1uvL1k3vXc08e3LUtctUiKLE62LCA7N6tNQnZtc9RgMeDJ3ML7z3B4qrY0l6842EA
+	+ef3v79+NtZRQN4qyCGADOUAOYg8KAAB2fK/NUI8TvdfGrYpMe14TsEtAR7ZHa3Emw04
+	Mm1HQBaQrwCQ/7+9c3+oaev6+ME5HLdEKqko5VYpROVSoVCEKNcuRBclhVRUlFshVC7J
+	raTcKUohSipKN1QKx3OO4/1H3jHnWmvvtXflnEN7t9daY/3wPJ7zPNaec6wxns/8jjnm
+	HFcIIIM5QOqP0Bo4ANvP/WM89ulLK1f1jc0tQT2u9A3Ztf/omSs3CR4byN4jNpjrbV8X
+	xO9zgIQG5hSQzx5RQMZSQDqQPciR2oMRkP8Yjr8weBxJ1SPgMWB7LIPHZ6AeW6l6RDwK
+	IiJ6d5DdAHIfAeQiR1tQkPojhiIg/zEeYbNjwECtEQSPto6LVvoGc3h8gXjsXQ8X2K93
+	AmTx3VxQkCwgbSaZGiAg/zEaf6F4HKxN8ejQFR5l13QIzD1wuGq2gBIgX7EKkgHkXFtL
+	M2N9aGCOCvL7MUnxOHS4vrGZpe1cisd9jHpEPKrZnwX/c10C8uTB2PCA1R7zHWwmmiAg
+	vx+L5L8l6hHwaGAy0YbiMTz24Kms3LvFnHpEPAo+TtQ1AR4gP8IeJACy8OaV0yn7dgb7
+	eC5CQP5zLML/ogs8ppwmydUXrzC5qi5HFsvvdAPImPBNq5fyAYk1Ad3GJh+P8z1WBwAe
+	TyIexRIgap4HH5Bt7wCQjwtvXJYD0sLMCBVkt5FI/ws5Hi1APXr6BO/cB3i8UUjx2PYR
+	9x7V7NEC/zlFQNZVPSu+k5t18qASIPHqx26DEkrlZOpx/tLVm8JjCB7voHoUeGD00vC7
+	AWTCziAfz4VzbRGQ3QYi819weDQyAzwu9PQJIni8fKPwMajHd4jHXvJqAf8sD5DtrU11
+	VWUsILcRBWlPU6zDBmPzgO7CkodHewU8VtU1t7Z/lrcIELCL4NDVaAFlQFYQBZmRwgBy
+	znQEZHeRSP85H49zKB4TEI9q9F7x/RQXj1+hipUBZNGd3PMnDsRs2+QNgLQme5AIyO6C
+	kuJxGN17pHjcFnPg5HlQj2VVdU0KeMQOOuILHdXMiAtIOAf5kaRYKx4XUEDuCNqwYiEA
+	chymWLuLRtneI6jH6YDHDUE7ElIyiHqsQPWoGm8V/1u5eOwMyI3eS+bZW08wgQbmqCC7
+	jEk5Hq3t5y/x3gh4PAF4LEI8ij9uVDZDLiChPysHyOtEQcoBqQdVrP3xHGSnkAT12H/g
+	0OF6RuMIHldweCxg8QgN5thzVrhaVZn3iu/FXDxSQLaQFGvRbUZBsoAci4DsFIr0HzB4
+	1DEwmWBtPw/xKL7Q6J0ZcQHJArIGFOT1Sxkp8QSQrlRBIiC7Csgu8XjpOuKxd9xYNL/K
+	xaMSIJNiwggg7awnICC7Ckfaf3XwMB2DsROs7eR4hPbkkFxt4e894nJVNLGilolwASkD
+	ZCkAMj0lPlIOSG1UkMoxyeBRm1GPrkQ9xqdkAB5LK2pIaQ6qR7X4rhh/hItHPiCvZqYq
+	AnIQFukoRiSnHjk8hsUkncjMRTyKMULUPCcuIBUBmQyAXL+cKkhDPQSkYjTSDjoDh3J4
+	XL4hKDI+OR3xqGbPFefPcfHIAfIlpFgJIKPD/L3dne2mUAWJgFSISILHQTz1GBadlJp5
+	FfEozghR86xoQH779jcF5NuGmvLSgvxL6QDIQDkg4W5k3IOUhSRVj0O09QzJ3qPr8vUy
+	PJajelSz84rw55QAWYuAlAVeN3+Q43GKnbO7t78Mjy9rMbkqwghR85Q6A/J+/sX05DgO
+	kKagIBGQ8tgkePydh8dAoh4v5t8vBTy+ZZOr36hR1fwh8edEYQEeID+1tzQxgDyXmhgd
+	yijI8WQPEhWkLCCV8RjKqUeKx0/yc4+49yiK+FD7JDoBsoQA8khcBChIFyjSMTXURUDK
+	w5HDoymoR5fl6wMj4xCPavdZMf+gIiAbKSBzzh0ngPRyd545ZfwYBKQsHGlpDk2ujp8y
+	k6jH0OjE1HMkufqytrGlHfEo5khR09xYQH6FFGtH29v6mnIZINctc5k9bTICkheODB51
+	DQGPswkeI+KOEPVYUl5Tj+pRTQ4r8p/hA/JDixyQu0P9vNycCCBH6WihgqRBSdWjlo7B
+	GIpHL//Q3YnHz+UgHkUeIuqdnhIgq2WA3IKAlKOR/IlNrgIeJ0+b7bJsnRyP1YDHDqhc
+	/foNk6vq9V7x/ZoyICvLHt4mCnL3VhkgR2gNGoB3sTLqUWvEKIJHJzcvPwU8Qv9VWccO
+	TK6KL0zUN6MuAJl3If3I3ggEpAIflfG4JWIvqx4Rj+rzVvH/UidAPn14K+esDJBWoCAR
+	kGS52o+2Jwc8WlE8bmXU48OnlZBcRTyKP1DUNUNlQD4vuQeAPAyAXMukWEfjHmRn9Ujx
+	eCEPkquIR3V5qjR+RwGQ7xtrKykgjxEFucrNaQYCki5bu8Lj2ZxbFI/vEY/SCBX1zLJL
+	QKZRQHq4zII9SASkLLk6mkmurgU8Hk67kHev5DniUT1eKp1fUQLkawLI7LPHEqMAkIsB
+	kOaoIOXq0dxqhpPbKr+tUYnHzmYTPL5uRDxKJ1bUMtNOgHwECjLt8J6IzWsBkFMnISC5
+	5CrB4ywXj7WbEY9q8Uxp/ki3gAwBQDoiIHnJVcCj42LEozTjRG2zlgHyC1SxNtdXP390
+	71pWZ0D266uwIyed/yDH46SpDB73UPX4iFWPX7A0R22+KoUf6gzIB0RB7o/iAGks7T1I
+	WXKVxWNI1H5Uj1IIjN6aoxyQnwGQbxhAnjq0Z/vmNR4L5ApSqoDs249cC6A72lSGx0Np
+	WdfuAR7fNLd1fEY89pbfivV3OUBC+7lPH943vK588uBm9pmjAEhfoiAtzVlA9u0jnUWq
+	fKYcHo3leDx6JvvWgyeYXBVrQPT2vBhA/v31ry+fO1opIO9eyyKADOAAOZJcFCBNQPLx
+	uMBjzebtew6dUsQj29Gqt78i/r5YLKAMyBcAyCsAyF0hvisZQOqP0Bo4QJJXP/bpSytX
+	9Y3NLSG5utI3ZNd+wONNgscGsveIDebEEgUaNA8OkNDAnALy2SMKyFg+IAdLE5AMHkdS
+	9Qh4DGDwePfRM1CPrVQ9Ih41yJPFMZRuALlvV7DvykWOtqAgpQpI2OwYMFBrBMGjLcFj
+	MMHjFcDjC8SjOHxfI2fRCZDFPEA62EwyNRipLUlAEjwO1qZ4dKB4jCXqUY5H2Tlkjfys
+	OCiBWkAJkK9YBckAcq6tpZmxPjQwl56CpHgcCng0s7Sdu4jgcR/iUaA+LqhhdwHI3KyT
+	B2PDA1Z7zHewmWgiTUCyeDQwmWjD4vHgqazcu8WcekQ8CsrLhTNYHiA/wh4kALLw5pXT
+	Kft2Bvt4LpIsIBk8DufjMeU0VY+vMLkqHOcW4ki7BeSm1Uv5gJRUTQAfj/M9VgeExx48
+	iXgUonsLbsx8QLa9A0A+LrxxWQ5ICykqSDkeLUA9evoE79xH8Fj45AXB40fcexSclwto
+	wIqArKt6VnyHKMiYcAVASurqxz5McpWqx/lLV28Kj0E8CsijhT3UbgCZsDPIx3PhXFsL
+	MyOppVg5PBqZAR4XevoEETxevlH4GPD4rg3xKGx/1/jR8wDZ3tpUV1XGAnIbAaQ9TbEO
+	G/y7hAAJleRk75Hg0V6OxzvFz6rqmlvbP8vvQNb4T4sDFKAFlAFZwShIBpDQfk5qgOTj
+	cQ7FYwLiUYB+LdQhc/H4FapYGUAW3ck9f+JAjEQBSfE4TI7HbTEHILl6p7isqq5JAY/Y
+	IkCoLq/Z4+YCEs5BfiQpVgrIjJSEHUEbViyUHCB5eJwOeNwQtDMhJYOoxwpUj5rtx2IZ
+	HRePnQG50XvJPHtrUqQjHQUpx6O1/fwl3psAjyfO594pQjyKxd81fh5cQEJ/VhaQBdcv
+	8wA5zkgPqlj7S+IcJOCx/8Chw/WMxkF78oUrNgTtoHgsYPEIDebYc1a4WtV4vxbqALl4
+	pIBsISnWotuMgmQAOcEEGphLJMXK4FHHwGSCtf28Jd4bEY9C9WoBj5sLSBaQNRWPC65f
+	ykiJ5xSkdADZNR6vIx4F7N3CGzoXj50AGUYAaWc9YaxUAMnhcewEazs5HqE9OSRXW/h7
+	j7hcFZ6bC2fEXEDKAFkKgExnAOkKKVYApLYUFCSDR21GPboS9RifknGJ4LGGlOagehSO
+	Swt6pFw8KgAyMzUphg/IQeIv0lHGY1hM0onMXMSjoJ1biIPnAlIRkMnxkUHrl1NAGkoB
+	kJ3wGBmfnA54LEU8CtGpBTxmLh45QL6EFOtVAGR0mL/3EmdWQYoekASPg4bpGHDqEfCY
+	mnkV8Shgxxbq0GlAfvv2NwfI8tKC/EvpioAcIvI9SIrHIdp6hmTv0XX5+iDEo1DdWfDj
+	VgJkLR+Q7s52U2iKVeSAlONxip2zu7d/WDSLx5eYXBW8gwttAgqAfNtQU156P/9ienJc
+	ZCCjIE1BQULzABEX6RA8QgcdGR4DCR4v5heUltc0vGWTq9+omYT2bXG8wrMAD5Cf2lua
+	OEAmRof6exNAjid7kKIGZPd4rIW9x0/yc4+49yg89xbeiDsBsoQBZAQA0gX2IMUOSBke
+	TUE9uixfHxgZR/B4H/EoPF8Ww4gVAdnIAPLccQJIL3fnmVPGjxE3IGV4HD9lJlGPodGJ
+	qedIcvUl4lEM/i24ObCA/EpTrG/ra8opII/ERQSuW+Yye9pkU0NdEStIFo+6hoDH2QSP
+	EXFHCB5LymvqUT0KzplFMGA+ID+0MIDMAUDuDvVjATlKR0u0CpLiUUvHYAzFo5d/6O7E
+	4+dyKB4bUT2KwL2FNwUeIDva3tZXywC5RfyAlONx8rTZLsvWKeKxAypXv37D5KrwfFrI
+	I+4MyIe3KSC3+nm5OREFOWqEWAHJ4HHEKIJHJzcvPwU8Qv9VWccOTK4K2cWFNfYuAJl3
+	Mf3I3gjRA1IZj1si9rLqsRrUI+JRWH4sltEqA7LyqQIgrRhADhDhXayAxwGDtAgerSge
+	tzLq8eHTytrGFsSjWBxcaPNQBuTzknt5F/iAHC3OFGuXeLyQB8lVxKPQfFhM41UA5PvG
+	WgDkrZyzkGLd6rcKFKRoAdkVHs/m3EI8ism5hTiXLgGZdhgU5FoPugcpSkByeBxtSpOr
+	a0E9Hk6/kHev5DniUYheLJ4xKwHyNQFk9tljiVEAyMVOM6zMaYpVbAqSh8cZTm6r/LZG
+	JR47m03w+LrxPapH8bi38GbSCZCPQEESQG4GQM6aNslUhIDk43GWi8fazYDHNMSj8JxX
+	hCPuFpAhAEhHcQJShkdzqxmOixGPInRr4U5JBsgvf3S0NddXPwdAZqUd3sMAcqockL+I
+	5ZHjcdJUBo97KB4fserxC5bmCNedBT/ybgC5P4oDpDEp0hGTglTGY0jUflSPgvdj0UxA
+	DsjPAMg3BJDXstIO7dkOCnLBLBkg+/UVCx/7QnvyIdq6o01leDyUlnXtHuDxTTOU5iAe
+	RePagpyIDJD/+/Lpw/vG15VPHtzMPnO0EyD79hFHQHJ4NGbVI+Dx6JnsWw8wuSpI9xXf
+	oBlA/v31ry+fO1opIO9eyzpFALmGBeRIcg5SLIDk43GBx5rN2/ccOiXH42fEo/g8XFgz
+	4gAJ/VkBkA0UkFcAkLtCfFdCitXS3FifKEiR3GzVpy9TuWpsbgnJ1ZW+IbsIHm8+eFL5
+	uoHsPWKDOWF5rwhHywESGphTQD57RAEZuz1AhIBk8DiSqkfAYwCDx7tUPbZ2EDyyDR9F
+	+KFxSoKwgDIgX4CCBEDu2xXsu3KRoy0DyIHiACRsdgwYqDVCXwGPVwCPLxCPgnBWKQyy
+	EyCLeYB0sJlkajBSe7A4FCTB42BtikcHisdYoh7vPnoGyVWCR9k5ZCl8d5yjZlrgu4Cc
+	a2tpZqwPDczFAEiKx6EUj7aOi1b6Bu/ad/QM4lEz3VK6o+oCkLlZJw/GhoOCnO9gM9FE
+	LIBk8WhgOslGjsfcu8WIR+k6vwbOXAmQr6iCPJ2yb2ewz8pFIgIkg8fh+sZmlrZzFfD4
+	CpOrGuiXkh1S94BcvZQPSIHXBHB4NJlo4zDfY3VAeOzBk1mIR8m6vcZOnAfIj23vG169
+	eFx44woDSE8ApIU4FKQiHj19gnfuSzl95WbhkxcEjx9x71Fj/VNyA1MEZF31s+I7REHG
+	hG/iA1LgN1v1YZKrBhSPS1dvCo9BPErO04UxYQVAvmMAefl0SsLOIB/PhQSQRsJPsXJ4
+	NDKzAPXI4vHyjcLHgMd3bYhHYXiqREbJA2R7a1NdVRkfkPZcilXQgIRKcrL3qITHO8XP
+	qupw71Eibi6YaSoDsgIUpAyQ0H5O+IBUwONCT5+gnQkppxGPgvFQaQ2Ui8evUMUqA+T5
+	EwdithEFyQBy2ODfBQxIisdhFI/280E9bqPq8U5xWVVdU2s7luZIy981frZcQMIxj49t
+	oCApIDNSEnYEbfBcKAJA8vA4fQ6LxwyCxwpUjxrvnBIcIBePckAW3cmlgNzovWSevTUp
+	0hEyIOV4tAY8egMeD5w4n3unqBMesYOOBL1fA6fMBSTtz0oBWXD9MgPIFQSQ44z0oIq1
+	v0DPQcrwOA7aky9csSFoR0IK4lED3RCHxFqAi0ceIG/zATnBBBqYC1ZByvA4wdp+3hLv
+	jYhHdHwNtwAXkHxAXspIiQcFKXhAAh77Dxw6XM9IAY/XC1j1CP1X2WPIuFrVcC+VzvC4
+	eKSAbCF7kEU8QNpZTxgrXEAyeNQxGKuAR2hPDsnVFn5yFeNROg6v6TPlApIFZE1FacF1
+	DpCujILUFqaCVMCjK1GP8SkZlwgea0hpDuJR011TkuPj4lEBkJknkmLCSIpVyIDk4dGO
+	qMewmCRIriIeJenmwpk0F5AKgExPjo8MWr9cyIBk8KjNqEcWj+mAx1LEo3CcU4Ij5eKR
+	A+RLUJBXM1OTosP85YAcJLwinS7wmJqJeJSghwtsylxAcoAsLy3Iv8QHpKGe9hDB7UFy
+	eDQkyVXX5euDIuOTEY8Cc01JDpeLRxaQtXxAujvbTaEpVsEBkuBx0DCaXLVzdvf2D4tO
+	Ss28CurxJSZXJenmwpk0Dchv3/6mgHzbUFNeej//YnpyXGQgqyAJIH8XVpEOxeMQbT1F
+	POYXlJbXNLxlk6vf6MSF851wpNKwAA+Qn9pbmuSADPX3JoAcT/YgBQZIOR6nKOGxFvce
+	peHWwp1ld4CMAEC6wB6kqeAASfAIDeb0DE0Z9RgYGZecfjH/PuJRuF4qnZErArKRAeS5
+	1MRoCsiZAgSkDI/jGTyGRiey6pHg8ZP8SnIszZGOmwtnpoqArK8pLyEK8kgcBeRsAkhd
+	QSlIBTy6LF8fGMHgsQTVo3CcUsIj7QqQOeeOJ+4O9fdydwZAjjHQ0RKQguThcaazu5c/
+	4PH4OZpcrW1EPErY0YUydRaQXyHF2tH2tr5aDsh1y1xmT5ssLECyeNQ1NJ08bbbLsnWA
+	xyNEPQIe65nk6tdvmFwVim9KcZx8QH5oYRQkA0g/LzcnAshR0J9VKEU6FI9aOqPGjJ9C
+	8OgXuhvwmEP2HgGP0H9V1tAK1aMUnV0Ic+4GkHsjtggPkMp43CLDYzXgsQMOdiAeheCT
+	Uh6jMiArnz68TQG5lQLSigHkAEFcNcfgcQTFo5Obl99WBo8PyyoRj1L2cUHNXRmQz0vu
+	511IPyJAQHbG415Qj3mgHhGPgnJJSQ9WAZDvG2sBkLdyzkKKVXCABDwOGKRF8Gg1k4/H
+	p4hHSXu4wCbfGZD38i6kHQZArmVSrKOFsQfZBR4Pp1/Iu1fyHPEoMJeU9HCVAPmaADL7
+	7LHEqK1+q9ycZliZ0xSr5itIRTyuIurx2NmcWw8JHt9jclXSPi6oyXcLyM1rPVxmwR6k
+	IADJ4XE03Xv0WLslYu/hNMSjoDwRB0ss8D1ALnYUCiBleDS3muHkBniMAjxmEzy+Rjyi
+	owvJAjJAfmGKdJ4/ogpyTwQF5NRJQgAkH4+zXDzWbmbx+AjVo5BcEccKFugGkPujQvxW
+	CQWQfDw6Ll7lF4J4RN8WqgXkgPzc0db8phoAeS0r7ZAyIPv1/UVjH+bco+5o00lTGTzu
+	OZyWde0ewWMzlOZ8wdIcoTqnBMfdCZBPHtzKPnNUDkhjUsWqySlWDo/GoB4ZPO5H9ShB
+	TxbJlBlA/v31ry88QJ46tGf75jUeC2bJFKTmArJvP3ItgByP2/ccYvH4BvD4GfEoEkeV
+	yDQ4QEJ/1k8f3je8rnzy4CYB5K4Q35WgIC3NWUD27aOZC9Y+fZnSHBaPviFR+4+eyb75
+	4AmbXMUOOhJxZLFMkw/IVlCQzx7dvZZFABnAAXIkuShAUwHJx+MCjzWbAY+nsq7dBfXI
+	4ZHtaCWW74XzELcFlAH5AgB5hQAymADSFgCpP0Jr4AAN7c8Kmx2kclXf2NwS1ONK35Bd
+	gMcrFI8NpDQH8Shu7xXh7DhA/gkKkgfIWApIB6IgR2oP1lRAMngcSZOrgMeA7bEMHp8B
+	HltBPcrOIYvww+GURGmBbgC5jwBy0VwGkEM1FJAEjwMZPNo6LlrpG8zh8cVrxKMovVUC
+	k+oEyOK7uVmnDrKAtJlkYqCxgCR4HKxN8eiAeJSAr0phikqAfMUoyBQZIM2M9YdrJiAp
+	HocO1zc2s7SdS/G4j1GPiEcpOK5Y59glIE8ejA0PWO0x38FmosYCksWjgclEG4rH8NiD
+	p7Jy7xajehSrq0piXjxAfoQ9SABk4c0rp1P27Qz28SQKUlMB2QUeU06T5OqLV6geJeG5
+	Ip1kN4CMCd+0eikfkBpWE8DH4/ylqwMAjycRjyL1USlNiw/ItncAyMeFNy7LAWlhZqSJ
+	ClKORwtQj54+wTv3AR5vFD4meGz7iHuPUnJhcc2VB8j21ua6qmfFd3KzTh5kAGnPKUgN
+	u/oRKslJcpWqR8DjpvAYgsc7qB7F5ZtSnE03gEzYGeTjuXCOrUYCksOjkRngcaGnTxDB
+	42UGj+8Qj1J0Y9HMmYtH2sC8tamuqowF5DaiIBlADhusWc0DeHi0V8BjVV1zazuW5ojG
+	OaU4ES4g4ZjHR6IgK4iCzEhhATldAwHJx+MciscExKMUXVeUc+biUQ7Ioju5508ciNm2
+	yRsAaU32IDULkBSPw6h6pHjcFnPg5HlQj2VVdU0KeMQOOqL0WJFPigtIaD/HArKAAnJH
+	0IYVC6GB+TgNS7Hy8Dgd8LghaEdCSgZRjxWvGlA9itxZJTA9Lh47A3Kj95J59tYTNAyQ
+	cjxa289f4r0R8HgC8FiEeJSAs0philxA8gB5nShIOSD1oIq1v4acgwQ89h84dLie0TgL
+	wOMKDo8FLB6hwRx7DBlXq1JwXhHOkYtHCsgWkmItus0oSBaQYw10NEdBMnjUMTCZYG0/
+	D/EoQn+U/JS4gGQBWVPxuOD6pYyUeAJIV6ogNQeQXeLx0nXEo+S9WDwG4OJRCZBJMWEE
+	kHbWEzQIkBwex06wtpPjEdqTQ3K1hb/3iMtV8Tio1GbCBaQMkKUAyPSU+Eg5ILU1Q0Ey
+	eNRm1KMrUY/xKRmAx9KKGpJcRfUoNdcV5Xy5eFQAZGaqBgJSGY9hMUknMnMRj6J0S+lO
+	igtIRUAmAyDXL6cK0lBPIwDZCY+R8cnpiEfpOq5IZ87FIwfIl5BivQqAjA7z93Z3ZhXk
+	oN6vYiV4HDRMx4BTj4DH1MyriEeRuqV0p0UD8tu3vykg3zbUlJcW5F9KVwTkkF7fg6R4
+	HKKtZ0j2Hl2Xrw/i8FiO6lG6vivGmSsBslYJkFNoirXXASnH4xQ7Z3dv/7BoFo8vazG5
+	Kka3lO6cOgPyfv7F9OS4yEBGQZqCgoTmAb1apEPwCB10ZHgMJHi8mF9QCnh8yyZXv9GJ
+	SPc74szFYQEeID+1tzQxgDyXmhgdShXklPFkD7KXAfl9PH6SX0mOe4/icEopz6ITIEsY
+	QEYAIF2gSKf3ASnDoymoR5fl6wMj4wge7yMepey3Yp27IiAbWUAeJ4D0cneeqQGAlOFx
+	PKMeQ6MTU8+R5OrL2saWdsSjWD1TovNiAfmVSbHW15RTQB6Jiwhct8xl9rTJpoa6vaog
+	O+ExIu4IwWNJeU09qkeJOq2Ip80H5IcWBpA5544n7g71YwA5ZpSOVi8qSIpHLR2DMeOn
+	zHR29/IP3Z14/FwO4lHELintqfEA2dH2tr5aBsgtmgBIFo+6hqaTp812WbYuUAGPHVC5
+	+vUbJlel7cHimr0yICvLHt7mAOnmBApyzKgRvQdIBo8jRhE8Orl5+SngEfqvyvo9YnJV
+	XG4p3dl0Aci8i+lH9kZoACCV8bglYi+rHqtBPSIepeu14p15J0A+ZQG51c8LAGnFAHJA
+	r1xWDngk7ckBj1YUj1sZ9fjwaSUkVxGP4nVKKc9MGZDPS+7lXUg/rAGA7BKPF/IguYp4
+	lLLHinvuCoB831hb+fThrZyzxxJ3b/Vb1buA7AqPZ3NuIR7F7ZBSn12XgEwjgFzL7EGO
+	7p09SA6Po5nk6lpQj4fTL+TdK3mOeJS6z4p5/kqAfE0AmQ2AjKKAnGFlTlOs6leQinhc
+	5Qfq8RiDx9eN71E9itklpT23bgG5ea2Hyywo0ukVQPLxOMvFg+IxDfEobVeVxOy/B8jF
+	jr0FSBkeza1mOC0GPEYBHrOJekQ8SsItpTtJGSC//NHR1lxf/fwRpFjTDu+JoICcOqk3
+	ACnH46RpBI+bI/YcJnh8xKrHL1iaI12HFfnMuwHk/qgQv1UUkMakSEe9CpKPR0fAYwji
+	UeReiNOTWUAOyM8AyDcEkNey0g4pA7Jf31/U9jDXAuiONp00VYbHrGsUj81QmoN4lH08
+	/IPoLNAJkE8e3Mw+c7QXAcnh0RjUI4PH/ageRed3OKFuLMAA8u+vf33hAHn3WtapQ3u2
+	b17jsWCWTEGqD5B9+5Fbcxg8LgD1uH3PoTQGj28Aj58Rj918SPzHorAAB0hoYP7pw/uG
+	15UsIHeF+K4EBWlpzirIvn3Us2Dt05epXGXx6BsStf/omeybD55Uvm4ge4/YYE4UboeT
+	6M4CHCD/BEC2goJ89ogCMnZ7AAfIkeSiAHUBksHjSKoeF3isIXg8lXXtLiRX3zS3Ujyy
+	DR+7mw/+c7SAkC2gDMgXAMgroCB3BRNA2gIg9UdoDRygpqsfYbODHOzQNza3BPW40jdk
+	F+DxCuJRyB6GY/9PFvguIB2IghypPVhdgFTCY8D2WAaPz1g8ys4h/6cp4v8YLSAYC3QD
+	yH0EkIvmMoAcqiZAEjwOZPBo67hopW/wrn0MHl+gehSMQ+FAf84CnQBZfDc369TB2HCi
+	IB1sJpkYqA2QBI+DtUcawN6jA6hHDo/FiMef+8T4twVkASVAvqIK8nSKDJBmxvrD1QNI
+	isehw/WNzSxt5yIeBeRDONQetECXgDxJALnaY76DzUS1AZLDo8lEG4f5gMfw2IOnsnLv
+	Ih578GPjqzTeAjxAfoQ9SABk4c0rAMidwT6eREGqC5BKePQB9ZhymiRXX7zCvUeN9yIc
+	YI9ZoBtAxoRvWr2UD0gV1wQo4HHpaoLHk4jHHvvK+CKhWIAPyLZ3AMjHhTcuywFpYWak
+	DgUpx6MFqEdPn+CdBI83Ch8TPLZ9xNIcobgTjvNnLcADZHtrc13Vs+I7uVknDzKAtOcU
+	pIqvfoRKcppcpepx6epN4TEEj3dQPf7s18W/LzQLdAPIhJ1BPp4L59qqBZAcHo3MAI8L
+	PX2CCB4vM3h8h3gUmkvheH/CAlw8foUq1vbWprqqMhaQ24iCZAA5bPDvKgUkD4/28/l4
+	rKprbm3/LG8R8BPzxL+KFhCEBbiAhGMeH4mCrCAKMiOFAST0Z1W9guTjcQ7FYwLiURC+
+	g4PseQtw8SgHZNGd3PMnDsRs2+QNgLQme5CqBSTF47CRBqAeKR63xRw4eR7UY1lVXZMC
+	HrGDTs9/fnyjplmAC0g5IAsoIHcEbVixEAA5TsUpVh4epwMeNwTtSEjJIOqx4lUDqkdN
+	8xYcj6otwMVjZ0Bu9F4yz956gooBKcejtf38Jd6bAI8nAI9FiEdVf3l8v0ZagAtI2sCc
+	KsiC60RBygGpB1Ws/VV0DlKGx3EWgMcVHB4LWDxC/1X2GDKuVjXSe3BQPW0BLh4pIFtI
+	irXoNqMgZYDUUZ2CZPCoY2Aywdp+3hLvjYjHnv6++D6BWYALSBaQNRWPC65fykiJJ4B0
+	pQpSdYAEPPYfOHS4npECHq8jHgXmQzjcnrMAF49KgEyKCSOAtLOeMNZAZYDk8DhWAY+3
+	qXps4e894nK15z44vkmzLcAFpAyQpQDIdAVAaqtGQTJ41Gbw6ErUY3xKxiWCxxqSXEX1
+	qNmOg6NTiQW4eFQAZGaqGgDJw6MdUY9hMUknMnMRjyr5zPhSoViAC0hFQCbHRwatX04V
+	pKGeSgDZCY+R8cnpgMdSxKNQXAfHqQILcPHIAfIlpFivAiCjw/y93Z1ZBTmo56tYu8Bj
+	auZVxKMKPjG+UkgWoAH57dvfFJBvG2rKSwvyL6UrAnJIj+9Bcng0JMlV1+Xrgzg8lqN6
+	FJL34Fh72gJKgKxVAuQUmmLtcUASPA4apmMwdsIUO2d3b/+w6CQGjy/rmjC52tPfGN8n
+	IAt0BuT9/IvpyXGRgYyCNAUFCc0DerRIh+AROujocXgMpHjMLygFPL5lk6vf6MAEZEgc
+	KlqgByzAA+Sn9pYmOSBDqYKcMp7sQfYwILvHYy3g8ZP83CPuPfbAF8ZXCMoC3wOkCxTp
+	9DwgZXg0ZdRjYGRccvrF/PuIR0E5Dg5WJRZQBGQjA8hzqYnRFJAzVQBIGR7HM+oxNDox
+	9RxJrr6sbUQ8quQj40uFYwFFQNbXlJcQBXkkLgIUpMtsAkjdHlWQCnh0Wb4+MILBYwmq
+	R+E4DY5UZRbgA/JDCwPInHPHE3eH+nu5OwMgxxjoaPWgguThcaazu5c/4PH4uRzEo8o+
+	ML5YWBZgAfkV9iA72t7WV8sBuW6Zy+xpk3sWkCwedQ1NJ0+f7bJsHeDxCFGPgMd6Jrn6
+	9RsmV4XlQTjanrRA94D083JzIoAcNaLnAEnxqKUzasz4KQSPfqG7eXiE9uSyfo+YXO3J
+	j4zvEo4FugHk3ogtPQ9IHh6nETxukeGxGvDYAQc7EI/C8RwcqSosoAzIyqcPb1MFuZUC
+	0ooB5IAeuYuVweMIikcnNxkeH9LkKuJRFZ8X3yk0CygD8nnJ/bwL6UdUAMjOeNwL6jEP
+	1CPiUWheg+NVlQW6AOStnLOQYu1xQAIeBwzSIni0mknwuJVRjw+fVsLeI+JRVR8Y3yss
+	C3QG5L28C2mHAZBrmRTr6J7Zg+wSjxfy7pU8RzwKy2NwtKq0gAIg3ze+BgV5K/vsscSo
+	rX6r3Jxm9JiC7AqPZ3NuUTy+Rzyq8hPju4Vkge8A0sNlFuxB9gggOTyONp1Mkqtrt0Ts
+	PZyGeBSSo+BY1WKB7wFyMQDSnO5B/myKlYfHGU5uq/y2RiUeO5tN8Pi6EfGolg+NPyIM
+	C8gA+YUp0nn+iCrIPRGb1xJATuoJQPLxOMvFY+1mxKMwnANHqXYLdAPI/VEhfqsWO/YM
+	IGV4NLea4bgY8aj2j4w/KBwLKACyub4aAHktK+0wC8ipckD+8qOPHI+TpjJ43EPV4yM2
+	ufoFS3OE4y44UhVboBMgnzwgKVY5II1JFevPKEhlPIZE7Uf1qOKviq8XrAXkgPzc0db8
+	hgHkqUN7tm9eAwpSBsh+fX+Uj8ytObqjTXl4zLp2D/D4prmt4zPiUbCugwNXgQU4QEJ/
+	1k8f3je8rnzy4Gb2maMASF9GQbKA7NvnxwKSw6Mxqx4JHs9k33rwBJOrKvia+ErBW4AB
+	5N9f//rCAfLutSwCyIA1Hgt+HpB9+5FL5Rg8LvBYs3n7nkOnEI+C9xqcgKos0BUgrwAg
+	d4X4roQUq6W5sT5RkD949WOfvkzlqrG5JUmu+gIej57Jvknw2ED2HrH/qqq+K75XoBbg
+	APknALIVFOSzRxSQsXJAjiQ36fyYgmTwOJKqR8BjAIPHu1Q9tlL1yPZDFqjxcNhogR62
+	gDIgX4CCpIAM9l25yNGWAeTAHwMkbHaQgx36DB5X+obsAjxeQTz28CfE14nJAp0AWcwD
+	pANJsY7UHvxjgOyEx1iiHu8+egbJVYJH2TUdYrInzgUt8DMW6AaQ+3YRQM61tTQjCvKH
+	AEnwOJDBo63jopW+wRweX6B6/Jkvhn9X1BboApC5WacOxoaTFKuDzSQTgx8EJMHjYG2q
+	Hh2oemTwWIx4FLU/4eR+zgI8QH6EPchXVEGeTuEDcvjQHwCkDI9mlrZzKR73MeoR8fhz
+	Hwz/trgt0CUgTxJArvaY72Az8QcByeLRwGSiDcVjeOzBU1m5dxGP4vYmnN3PWoAPyDYK
+	yMIbVwCQO4N9PFkF+QOApHgcOlzfmMGjT/CufSmnSXL1xSvYe/yIe48/+9nw74vVAp0B
+	eSc36+TBmPBNq5fyAfmfiub4eJzvsToA8HgS8ShWF8J59aAFFAD5DhTk48Ibl+WAtIAU
+	638GpCIePX2CdxI83iikeGxDPPbg58NXic0CPEC2tzbXVT0r7gqQ/+lu5D5McpWqx/lL
+	V28KjyF4vIPqUWy+g/PpeQt0A8iEnUE+ngvn2lqYGf1XQMrxaAHJVRaPl28UPgb1+A7x
+	2POfEN8oIgtw8fgVqljbW5vqqspYQG4jCtKepliHDf79PwASDlqRvcfOeKyqa25tx9Ic
+	ETkPTqXnLcAFJJyD/NgGCrKCKMiMFAaQ0MD8vwKSw6ORGeBxoadP0M6ElNOIx57/cPhG
+	UVqAi0c5IIvu5J4/cSDmBwFJ8TiM4tGeqMdtMQdOngf1WFZV16SAR2wwJ0p/wkn9pAW4
+	gFQG5I6gDZ4L/zMgeXicPofFYwbBYwWqx5/8UPjXJWEBLh67AKT30nn21qRI598ryC7w
+	eALwWIR4lIQz4SR/3gJcQEIDc1ZBFlwnChIAuYIActx/SLEq4XFD0I6EFMTjz38jfIN0
+	LMDFIw+QtxkFudF7CQBygomBzr8FpByP1vbzlnoT9Yh4lI4r4Ux7wgJcQLKArKl4XHD9
+	kgIg9aBIp/+/uElHhsdxFqAeV7B4vF7AqkdoT87e0oHJnJ74cPgOUVqAi0cKyBayB1n0
+	g4Bk8KhjYDIB8LjEeyODx9uoHkXpNzgpFVmAC0gZIEspIOOJgnSlClJP+98AEvDYf+DQ
+	4XpGMjzGp2RcInisIaU5iEcVfT98rbgswMWjAiAzYQ8yjChIO+sJY/+dgvweHlv4pTm4
+	XBWXA+FsetYCXED+HCAZPGozeHQl6pHBYynisWc/F75N5Bbg4pEPyKuZJ5L+GyA5PI6d
+	YG1H1GMYJFczcxn1iHgUuQvh9HrSAjQgv337WwGQ6cnxkUHrl1MFafjPCrIrPKaDekQ8
+	9uSXwndJwQJKgKx9CSnWq5mpSdFh/nIFOej7xzwIHgcN0zGQ4zHpROZVxKMU/Afn2MMW
+	UADk24aacpJiJYAM/LeApHgcoq1nSJKrrsvXB0XGJyvj8Rv9mR4eOr4OLSA6C/AA+am9
+	pUkBkO7OdlNoivW7gJTjcYqds7u3f1h0UirF48vaJlSPonMYnJBqLdAZkPfzL6Ynx3GA
+	NAUFCd11ui3SIXiEBnN6hqYMHgMj4wCP+QWl5TUNb9m9R8Sjar8hvl08FugGkInRof7e
+	BJDjx8Ae5HcASfGopWMwZjyDx9DoRB4eP8k7duDeo3icBmeiOgt0DcgjcRGB65a7zJ42
+	2dRQlwFk1/2S2fbkhqaTp812Wb4uMCLuSPrF/PuIR9V9MXyzmC2gCMhGRkGeO564O9TP
+	y81pptX4MaNIf9ZubtLh+q+OGW8108nNyy90d+LxcyS5StUj4lHMnoNzU4kFFAFZX1Ne
+	QhTkkb0RW9Yto4AcTQHZdX9Wcskj2558tsuydVsi9lI8lpTX1KN6VMnnwpeK3AJ8QH5o
+	IYB8eDuHAHKr3yo3xxlW5gSQ3XTXgWwO12COtCf32wp4PJtz+yHgsbGlHfEoctfB6anC
+	Aiwgv0KRTkfb2/rq8pJ7eRfSDu+N2LzWY8Esrj9rlwtWWirHXvK4wGPt5og9h9Mu5N0r
+	eV6NeFTFp8J3SsACyoCsfPrwVvbZY/ujQmT9WZnmAZ0zOtxBK3LJIzSYg/bkx85m33r4
+	tBLw+AHxKAHnwSn2vAWUAfn80b1rWacO7dkesIa9G7mbLQ+yXB0Emx1QKgfXdECLALY9
+	OcVjB5x7/PoN9x57/nvhG8VtAQVAvm98Xfnkwc0rZ46S9nPMzVZMTUC/Tt2uyHIVsjlM
+	LQActKIddEiDOaY9+Z9f8ZoOcXsOzk4lFlAAZPOb6mfFd2n7uW0boSZgJtQE0C2PX/sq
+	L1iZ5eooY3Oy2QGlcswtVrSDThviUSWfCl8qAQsoApJtP5eRAlXlsOXRfUYHNh/hZAfT
+	sgOyOVsiSKkcc4vVe1SPEvAbnKKKLMAHJGk/xxy7olsei+faWpoZwU1zv/dXXrAyy1Xm
+	ZMdCT9+QKKgFyGFvser4/AXVo4q+Fr5W7BbgAxK668CxK1ITcBgyOqvJXeXklAfU6Cgv
+	WKEYYODQEaOgdHUmnOwg2Ry62QGV5KTBHKpHsXsNzk9lFpABEtrPwbEruuVBMjpBG5gi
+	VqjRge5zfRUzOiS7CgeRTSZNneXisS4Q7iQ/fQWyOZWvoRYA8aiyb4UvFr8FZIAk7eeg
+	JoDJ6MBNc36rFjvSBSsUlSuXBIB8HAzZVXrLo6cv1OakwrU5xWXVb5rxkkfxuwzOUJUW
+	YAD5N9xs9enDe9IOktwTAEWsZMFKjiWTmjklAUlqV4cO14fs6gwnd++NdLnKnOx4R7M5
+	uPeoyg+G7xa1BThAkqI56JdMLtLJgRqdnUHrmQwrNLtSFpBEPmqNoMUA8z3WbImMp8tV
+	WpvT/hlbBIjaXXByqraAHJB0wfr8EWxBnjgQvdVv5SJyVTmcgiQCkr8D2YfIx5EGzMnH
+	DcG72JNWVWS5Ks/mqHrc+H60gBgtIAPkl8/sgpVmWMOhJMAJDnkY6w8HAakQj31/lcnH
+	RSv9QqEhcta1e3DSqoEuV7E0R4xegnNSmwU4QNIFK8mw3rxyGkoCtpAaVtjxGDUCWnko
+	7EBCOgcuzqHy0Q3k454jUAxQ+PgFza7KlqtqGz7+EFpAVBZgAQkZHViwvqkmJQFwCnIX
+	KyChGSQcglSOx6HDye6jHdSSb44g8hGOdsDFAK1QK4eV5KJyDpyM+i3AAvIvyLC+a6h+
+	XgKHPE6CgPT1hJvKJ5uOpgkd3gYkm84xmWjjsMBjXdDO/cfoRR3Vb+BiAJCPeLBD/V8Q
+	f1FMFuDi8X+f25kdj/yLaYdiyQ7kXFs2ocOv0IF4JGetTCeRi6w2BO9OhI7Idx/BUat3
+	bZ++cA1YxWQfnAtaQK0WYALyKwhIUqLz5MGNyxnJe7dv9HajCR1yD6tiPJL06mjTydAS
+	GaoBYg6eysqj98q9/0B2O+jL1Dp8/DG0gKgswMYjCEioKYdrdG5ln0mJh4oA6AUJZ66U
+	E6yw3cFW58DVAH5hsYfgnscCLp3zFeNRVK6Bk+kNC5CA/PY3P6FzbN+OLWs9SIIVzkAO
+	Vdjw6EO2O/QM4aoOx8Ve/ttIevVGIRSvknQOKx97Yw74m2gBsViAiUdI6DAlrHdyM0mC
+	dZ3HAgebiWMNYMPjt37yggCIR9juMDK3pNVy2+OSSTE5VOdgPIrFHXAevWwBumD9+y+o
+	CCAJVqjQOX8iMYq/4dFfOR5J9So9bAXbHWfgJquyl3W0OoepBujl6eDPowWEbQESkNCc
+	lVTowL3IZMMjaXcwPXI1yZRsQPLjkZQDQDX5eCs75yWrAyISSDwWlVXx4lHYtsDRowV6
+	2wJ0wfqVxuOripL7eVmnDkSH+KxwnQN9PAxGag3iF+hw8QjlAEugHCDhKFyEDPHIbD9S
+	Pvb2bPD30QICtwAE5DeIR7oBWXo/78Kpg7x4HNZdPJLyHIV4pNuPAjcFDh8t0OsWYOLx
+	D148xmwlfGQLdLrhI8Zjr384HIAoLfBj8YjrVVE6A06q1y3wnfUqKWBV4CPsdyjlc+jd
+	cvL8aq/PBgeAFhC2Bdh4pCcgO+dzFA5c0f3H7+53CNsUOHq0QG9bAMLx/779y/0O5XoA
+	clsHd9wK63N6+0vi74vBAiQe2XqAGubGju/WA0C9nJGZ5QxHNy9/OI6ccfkGXPaI9Tli
+	cAScgyZYgOIR4vFT27v66ufFUC+X+r16ObaeHFrNrYJ68sPpF6FXAL0egBxHJu/ShDnh
+	GNACQrUAE49w5aPsgoBj+3cEMvXk5MIOxXryfsx5KwvZeasLcN6q4lXDe3q7HHkXBqRQ
+	PQHHrQkW4OLxYxvTwwPOWyVEbKY3sHZx3grOI5Pr5bjzyEknsq7BeWTmOiv2PLImTArH
+	gBYQpgUo0r59/ZPcwAoXWkETyIzkuO2b4IK5meSCOaXzyL+Q61ehW8BE6BawbF0QXPeY
+	mXsHes2RTuVf/mSvlxOmIXDUaAENsACNx7/hfoD2lsbXL+gN5Ydjt/mTjgEW0OIKLmDl
+	3w/wCxSwkm460Bt5/lK4Djnh6Jls+QYk3p+jAR8UhyBkCzB4pOlVeryDlJMfjAn181wI
+	FyKbQkcduKCcd58ViUdSEMAeuNq+N5lNsEI3HUjoICCF7As49t63ABuPNJ1DOurcyT2f
+	mhglP24FDQMU73ukFwQYjbOwnbsYEqwx0G0O2neQhM4H6G6F8dj7XxRHIGAL0HCE0x3k
+	ug4mnZNz9ug+kl5lrwdQbqjD9AugF1q5rvAJ2Z3Ev2COu/ARU6wCdgkcei9agFuuMvKR
+	vV4uLiLAe4nzTHqdleJ2xy+/9Ok3gEno2JD2j0E79x1jTkDWNdMLkRGQvfgx8aeFbgEW
+	j6QagN4OQE4/ph2KCaPpHNKxnDSAVOjfQS5E5i4oJzcExBEBWfiEaRggW7AiIIXuGTj+
+	XrAAF45cuwAiH6E6Zze9HYCeftQerNSwvA9J6NCKObhhjghIuIGVbagDNyJju/Je+Ir4
+	k2KxABePTP9HtmF5SsKOQOZ2OaZ9h0J69ZdfaIMrciPytDkgIIOjuIZzcIUOdPDgMjoI
+	SLH4CM5DbRbgwlHWH7n0PtNuDqoBnGdajR8zavjQ3/mnH8m9j5DQIQJyLNmB9Fi7hV2w
+	0hJWyLBCRofp4YEBqbbPiD8kDgsw4Qh3IQMeaXcruttxIknejpXKR4XtDpLQkTcshyMe
+	22IOQgdI2sKDlOjIAYkBKQ4vwVmoywI8PH4mxTmQXSXdHxN2BK3rtl05xCMISNIywBRK
+	ysmCddf+Y2fhDlbScq6lHbYguZoArCtX13fE3xGFBXh4hM1HOGsFd6/mZUFzq/BNsNtB
+	mnfQbqxK8pEIyAGkxRWzYF2zOWLvEejhQXvqvGMBiStWUTgITkKdFpCFI6hHwGNT7Uto
+	xpoDzVijQnxpsdw4ZrdDablKF6yw46FvbGZJM6yh0YmpmVdpDWtTKwBSnmLFFas6vyf+
+	lqAtwIUjUY8Ej3A1Oc3mJMdFQC8dUpxjYjBy2GDYfeRXr9KETj+6YCUZ1tkuy9YHRsan
+	ZFy6XlBaAYeuFAGJASloF8HBq88CbDhCMofisbWpror0Ks9MTYoO8/diej+OGgHNyhUO
+	d9C+On3ognWEAfQsJ008Nm6LOQA1cwwgiYIkgGRXrBiQ6vui+EtCtgCHx7+/0uQq4LGi
+	tOD6pYyU+B1B65e7zIZWAYa6UJyjvNtBIrIvZFihJMBwHM3obAjakcAHJOxBylM6GJBC
+	dhIcu7oswIUjrFbhZAenHq+eP3EgZttGms2ZMNZAB852dF6uEgEJC1a4JMAEtiDnLfXe
+	RABJFeTL2saWD59gzwMDUl0fEn9HBBaQLVaZ1WoHafxYXnI/n8HjBtIpwAKyOcOHDuzf
+	eblKdjygJAAyOkZm9BYdHwJIkmIteV5dD1XlsGKFKh1uxYqEFIHD4BRUaQF+ONLV6vuG
+	15VPH1L1SPE4z96ay+Z0yq4yGZ3+sAUJgJxoA7cEEAWZlHou59bDJy9ekZTOHwoSEgNS
+	ld8S3y14CyiGI12tvql+9uhe3oX05PjIoA0ryM0AZkb6gEfI5ihnV2k8Mhkd2PIggFyx
+	ISgy7kgaFOkUQyPIppYPHxkJiYQUvKvgBFRvAS4cSWoVxONnWK1CMudx4c0rZ48lRoeB
+	emTxCDfndJXNkWd0CCBBQS7x9g/dnXj0zGXY8yivftPc2s5KSFlAIiJV/1nxF4Rpgc7h
+	+A5Wq7DXkZt16tDeiMD1y4l6JHjU6jqbwyxYf4ManRGMgnRdvm5LROxBktKhK9a3bbDp
+	QXM6GJDC9BEctdoswIXjN4aOUEf+vrGuClar+RczUvbtCvHzcne2s54AtQBks6OrbA67
+	YCVbHiTFOsXOyW2Vb/DO+OT0C9fuFJVVvgYJCTkdDEi1fVP8IaFagIvG/5OF44eWpjfV
+	5aUFN7LPHk+KCQ9Y4+EymyRXGTx2mc1hAfn7IC1IsY6bPG3WAo/Vm8KiE4+evpR/79Gz
+	qtrGrgIS16xCdRoct6os0FU4NtfXVDyB3Or5k4f2Rgb5eC5ynGE1fizgEdRj19kcGSAH
+	a+tAkY7VjLkLV6yHFeuB1HPZNwpg06Ou8T1HSN6+B573UNVnxfcK0gKyaOTRsbW5/tWL
+	p0V3crPSkxN2bfXzXjLfYeokU0Oy9zjgt27xSGsCYA9SW2+06SQb+3nuq3yDdsQdPnX+
+	6q1CyOlwAfknKQyQi0hEpCD9BgetCgsoRCOpkvvyx8cPrc0NryCXczfvYsbRxOhtAWuW
+	uUAyx3zMKB2oJP8OHmlNAOxBDhsxiux5zHbx8PbfuishOS0r9/aDxyQg37W1f4J9SBqQ
+	GJGq+KD4TgFbQB6NFI5f//zfl88fP7QAHSvLiu/lXz5zPCl2+5b1sFqdOQWSObra/4BH
+	Akgo0iEpnbHjrWznui5bG7Bt9/6U9Au5tx+SgISkTjsUBvzvz6+KiMRVq4C9CIfeIxbg
+	BSOJRrrtSPYd2XC8f/3KudSDIB59V7nPc5g62dRIf4TWINh77LIWgKhH8vTpC1WskNLR
+	MzSdaG3ntNhz/ZbwmMSjGTQgn1fXNrxt+QBpVopIhUUrjKZHZoUvQQsI0QKK0Ui3OWCt
+	+qm97X3Tm5oXZcUkHE8eitsR4ue9lORWzcYY6MBex4Bfv6MemYD8lVmxQo51qgNISJ/A
+	iJjEYyQgH5Q+f/m6vvk9XbP+jyxalSMSQ1KIroRj/kkL8GPx/4CNEI1UOX7u+ND6tqGu
+	uuJp0b3r2ZknD8fv2rpxtYfrHFur8bLV6nfxyACSWbGOMQcJuWCJl29QRGwSDcjCkrLK
+	mjeN71o/dICK5CKSpyPZgf3k9PCvowWEYgHFUGSCkaxU//cFlCPAsbnhdVX5k6K7+Vcy
+	Tx5JiArdtHb5QseZ1hNJbpWsVrvf66DLVbpi/RVWrEO1dUebgIScAzkdPxKQR9Ozcm8W
+	FD+tgDVr83smImlIUkrC/ycojwz/M1pAUhaAGADVSNAI0fgHicaWt41val4+K314J+/y
+	uZOHE6LCAtatWOxkbzN5nBHNrf7japWuWPuRFSsjIafM4AIyEQIy58a9osfPX9bUQUS2
+	fej4+PmPLyQk//oK2R180AIStwCEwV9//UnQ+McnEo3vmupfV1eUPSq8fe3SmROH40k4
+	ero5O0wj4hEK5cjW4z+sVhkF2e+3Ab8PGQZ1rKaTrGfOdaWEjElMScu8knf7waOyiqpX
+	bwgj29o7PpGQ/PK///0Jz1/4oAUkawESAf+DUAQyQjB+ADY21ddWVz57XHTvZu6F08cP
+	xe8KC1jv6TZvFuw8jiVbHf9qtSoLSNj00BllPI4XkPuPnDx7MfcmILLsRTVEZNNbCMkP
+	7R0fP33+/AcJS3zQAhK2wB9/QCh++tjR3gZobG6sr615Wf4U4JiffT796IG9O0MJHSEc
+	LcePHa07XItUAvxDbpUEI3ngpoD+REKONDAeN9mGEtI3MHx3wqHjGVnZ+bcLi588e1H1
+	qraehGRLaxsEZXtHx0fyfMIHLSA5C1DX7+joaP/woa2t9T0EY8Ob19Uvy8tKHgIcL507
+	lZIYGxmyce0KJhxNRuuNgMKcf7daZQKSSEheQLos9fLZHLZrb1JK2rmLuTfuFBY/Lqt4
+	Wf2qrr6hsentu/cQla0Ql/igBSRrgdbWlpb37942NzVAMNZUvXj+tKTo/q287KyM1MP7
+	YiKC/NesWEzpaGII4fhvxSMNR1oVAAGppa3LEHKOy5KV6zdtjYzZfzg14/zl3Jt3CotK
+	y55DSNa8rn1T39DQ2NjU1AzPW3zQApKzAPH85qamxgYIxbraV9VVleVlTx49vH87P+fC
+	2VMpSXFR2wL9vJctcnaAxaqJoT4Tjv+81cEEI/lXUqYzAJKsEJBjQEPOmDPfbcUav6Dw
+	qLiklJOns67k3rhd8PDR46fPyl+8rKquefX6dW1tXV3dG3zQAlK0APh+be3rVzXVEIsV
+	z8uelBQV3r2Vl3PxXPoxgGPk1oANXh6uTvbTLGg4Qmr13+w8ysORF5BEQ06cYjtr3qJl
+	3j6bQyNjEg4ePXUm63Ju/q27BQ+LSx4/LXtWXvHiReXLly+ryFOND1pAQhagTl/18mVl
+	5YuK8ufPyp6UPip6cO/2jWvZF86lpx5J3LsrPMh/recSl7l2Uy3MTUZTOtJcTld3WPFj
+	UOHPMkJCQJpOsJru4Oi6dOU6/6BtO2P3Hzp68nTmxezc67fu3Ct8WFT8qPTxkydPn5bh
+	gxaQqgWePn3yuLTkUVHRg/t3b9/Iu3o562z68eSkuOiIrQE+3ssWz58zw2ay2ViSyqF0
+	/Dc7j0oB+SuzZB05ysh0vMXUmXMWLF7mvWFT8PZde/YfTElNP5sFIZl3/ebtO3fvFxQ+
+	ePDwYRE+aAFJWuDhw4cPCgvu37t7+9aN/Nycy1mZGaeOHUmMi44MDfRbu3Kpq5PD9CmT
+	xo0x+OFwpLseEJCQZdXRNxxrNtnadpaT6xLP1b6bQ7bviklIOnL0RPqZzKxLV3Jyr+Xl
+	X79x8+atW7fxQQtI0AK3bt26eePG9fxruVezL1/IOptx6njKwf17oyPDgvzXe3kAHGdO
+	s5xgamygO/wH6UhQySxZISBH6EFWZ6LlNLs58xd5rFzjGxAcviN6774DR1JST6WfPpuZ
+	lXXx0uXLV7Kzs3PwQQtIzgLg+FeuXL508ULW+XNnMtJOHEs+lBgfsysiNNB/vfdydxdH
+	h+nWk81NDEeN1NYaTFI5/3mxyqxcSUDCtseQYcN1DYxMzSdbT3eYu2AxRKTPpqDQiJ3R
+	exISDx5OOXr8xKm09PSM02fOnDmLD1pAchYAxz99OiM9Pe1k6rGU5ENJ++NioiK3BW/2
+	WwfR6Oo8e+ZUy4njxozW14Fw/H3AD4cjJSQUBgwcoqU9Un80INLCxnaWI0Skp/d6v4Cg
+	0O2RUTF74vYlJh08dPhIcgo8R5nnGD6aaAH26+C/8S3wMx+KfQ/x/OTkI4cOHkjcn7A3
+	ZvfOiG0hWzb6rFm1DKJxjt30KQBHIwPdEaRmdcBvP0pHdsn6a3/YiKRrViMTs0mWU2fM
+	cpy/cMmyVavX+20KDA4Nj9ixa3d0TOyevXHx8fEJ8OzDBy0gGQsQj0+Ij4+L27snJmZ3
+	1M6I7WEhQZv9fdZ6e3osdiHRaG0xwRTgOJKRjr9BGcB/2uhglqrcv8KSlaRZyZoVEGls
+	aj7Jaqqtwxxnl8VLl6/0XrvBzz9gS1BwSGjYtvDt2yO4JxIfTbQA93nw33kW+JkPJX/N
+	9vDwsNCtIUGBmzf5+axb7bXCw33hfMfZNBrHjTWkcOSk40+EIyxZGRE5kCBSd9ToMRCR
+	ljbT7WY7znNZ5O6xfKWX95p1G3z8/Pw3bty0KQCezfigBaRkAeL0mzZt9Pfz8/VZv3a1
+	96oVy5a6uS5wmuMwY9oUiwnjYKmqp6M9bMjPrlVZRPaRIVJLW0d3lCFE5ESLKdNs7WbP
+	dV7gsshticey5StWrvLy8oZnNT5oAclZgHi+t9eqlZ4rlnksdV/s6jLPcY7DzOk2lpNp
+	NJKl6lACR1ir/ovzx9zStNt/pwHZ/3eyaNXW0Rs12tjEbMJkS+tp02c6zJ7j6DzfxcV1
+	4aLFbm7u7kvgWYoPWkBCFiA+v8Td3c1t8aKFri4L5jnNnTPLbsZ0GyuLieamY40MIBrp
+	LgeTyPmptSoXoRwiYdEKEak7ysBorCmEpIWVzbTpM+zsZ82eM2euo6OTk7Oz8zx80AIS
+	swC4vbOTk+PcOXNmz3Kwm2k7faq1pcXE8eNMjA0N9Eg0kqVqf7iboyfgyMRkn75MXodG
+	5IiRegajjceajhs/cbKF5RRriMrp021nzJg5c6YdPmgByVkAHH/GDFvb6dOnTbWZYmUx
+	edIEM1OTMYYGo3R1ZNFIdjl6BI4sJGlEwtbHwEGwGzlcR1ffYLTRGIhJs/ETJk6abGFh
+	YWlpZWU1BR+0gOQsAI5vZWkJMTB50sTx5uMgFoGMo/RGjtCmuhHY2NPRCEEJi1aGkb8P
+	GjwUQhIoCTFpCEFpYmoKcWlmZm5uPh4ftIDkLACOb25mNm6cqanJ2DHGRqMNRunr6kAw
+	wkJ1IFmpqiAaCSXZiKSQJCEJmBypq6c/ygDC0tDIyMgYnjH4oAUkZgHi98ZGRoaGo0cb
+	QCjqQSwOBzIOgZQqKcdRUTSSiKS7kb/++huEJFByyFCtYRCUI3QgLHX19PT0uWcUPmgB
+	aViAc3lwf13dkSMhEodr01gEMrJo7FndSMOQ9y8MJJmQBDEJQQlRCWFJn+H4oAWkaAHG
+	/YcN09ICLA5mYpGsU3s4icOLQ94faUhCGR1gEjj5+8CBgwYNGjx48BD5MxQfTbSA/APh
+	n2QW+JkPJXvJEIhCiMNBA4GKvw8Y0B9iEZapqiUjLyJh3UqyO/36wdr1t/79IS5JYOKD
+	FpCyBSAKIBZ+I6FIY7Entzf4wdfdn2lQsmH5Kzy/4YMWkKgFiP+TOCSRCFjs0a3G7uKv
+	m39Ofh0eGAc+aAHpWoAJA3VDsZugxH+MFkALoAXQAmgBtABaAC2AFkALoAXQAmgBtABa
+	AC2AFkALoAXQAmgBtABaoFct8P/b5umcCmVuZHN0cmVhbQplbmRvYmoKMjQgMCBvYmoK
+	NDQ4NjUKZW5kb2JqCjIwIDAgb2JqCjw8IC9MZW5ndGggMjEgMCBSIC9UeXBlIC9YT2Jq
+	ZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGggMjU2IC9IZWlnaHQgMjU2IC9Db2xvclNw
+	YWNlCi9EZXZpY2VHcmF5IC9CaXRzUGVyQ29tcG9uZW50IDggL0ZpbHRlciAvRmxhdGVE
+	ZWNvZGUgPj4Kc3RyZWFtCngB7dCFQQIAAABBsTswEAxsBQWD/XdzkL8b4Vartj8MGDBg
+	IDnwiwEDBgwkB34wYMCAgeTANwYMGDCQHFhiwIABA8mBBQYMGDCQHPjCgAEDBpIDnxgw
+	YMCAgeDAHAMGDBhIDswwYMCAgeTABwYMGDCQHHjHgAEDBpIDbxgwYMBAcuAVAwYMGEgO
+	vGDAgAEDBoIDzxgwYMBAcuAJAwYMGEgOPGLAgAEDyYEHDBgwYCA5MMWAAQMGkgP3GDBg
+	wEBy4A4DBgwYSA7cYsCAAQMGggM3GDBgwEByYIIBAwYMJAfGGDBgIDpwjQED2YERBgxk
+	B64wYCA7cIkBA9mBCwyEB84xYCA7MMSAgezAGQYMZAdOMWAgO3CCAQPZgWMMGMgOHGHA
+	QHbgEAMGsgMHGDCQHdjHQHhgDwMGsgO7GDCQHdjBgIHswDYGDGQHtjBgIDuwiQED2YEN
+	DBjIDqxjwEB2YIABA9mBNQyEB/4BLgXylgplbmRzdHJlYW0KZW5kb2JqCjIxIDAgb2Jq
+	CjM2NgplbmRvYmoKMjUgMCBvYmoKPDwgL0xlbmd0aCAyNiAwIFIgL1R5cGUgL1hPYmpl
+	Y3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0aCAyNTYgL0hlaWdodCAyNTYgL0NvbG9yU3Bh
+	Y2UKL0RldmljZUdyYXkgL0JpdHNQZXJDb21wb25lbnQgOCAvRmlsdGVyIC9GbGF0ZURl
+	Y29kZSA+PgpzdHJlYW0KeAHt3Qs/k2EYB+A5j2HOZpjz+TxzNkQSSSJJJJEkkkgStq/e
+	B+n6CPtte9/nuQ//K51KPT483N//vbv7c3v7++bm1/X11dXPy8sfFxffz8/Pzr6dnn49
+	OflyfPz56Ojw8NPBwcf9/Q97e7u773d23m1vv93aerO5ubHxen391dray9XVFysry8vP
+	l5aeLS4+XViYn38yNzc7OzOTTCanp6empiYnJyYmxsfHxsZGR0dGEonE8HA8Hh8aGhwc
+	HBjo7+/v6+vt7e3p6e7u6urq7Ozo6Ghvb2tra21taWlpbm5qampsbGiIxWL19XV1dbW1
+	0Wi0piYSiVRXV1VVVVZWVJSXl5eVlZaWlpSEw+Hi4qKiosLCUChUUJCfHwwG8/Jyc3Nz
+	crKzs7OyMjMzMzICgbTP7/v3+/f/9/zz/Pf+8/53/nH+c/51/nf/cf9z/3X/V/9Q/1H/
+	Uv9T/1T/Vf9W/9f/0P/R/9L/0//U/9X/1v83/2D+w/yL+R/zT+a/zL+Z/zP/aP7T/Kv5
+	X/PP5r/Nv5v/t/9g/8P+i/0f+0/2v+y/2f+z/2j/0/6r/V/7z/a/7b/b/5d/IP9B/oX8
+	D/kn8l/k38j/kX8k/0n+lfwv+Wfy3+Tfyf+Tfyj/Uf6l/E/5p/Jf5d/K/5V/LP9Z/rX8
+	b/nn8t/l38v/5x/wH/gX/A/+Cf+Ff8P/4R/xn/hX/C/+Gf+Nf8f/4x/yH/mX/E/+Kf+V
+	f8v/5R/zn/nX/G/+Of89IxBIp1L8d/47/53/zn/nv/Pf+e/8d/47/53/zn/nv/Pf+e/8
+	d/47/53/zn/nv/Pf+e/8d/47/53/zn/nv/Pf+e/8d/47/53/zn/nv/Pf+e/8d/47/53/
+	zn/nv/Pf+e/8d/47/53/zn/nv/Pf+e/8d/47/53/zn/nv/Pf+e/8d/47/53/zn/nv/Pf
+	+e/8d/47/53/zn/nv/Pf+e/8d/47/53/zn/nv/Pf+e/8d/47/53/zn/nv/Pf+e/8d/47
+	/53/zn/nv/Pf+e/8d/47/53/zn/nv/Pf+e/8d/47/53/zn/nv/Pf+e/8d/47/53/zn/n
+	vwfSqdTjw3/sv/8DK6twSQplbmRzdHJlYW0KZW5kb2JqCjI2IDAgb2JqCjgxNwplbmRv
+	YmoKMTcgMCBvYmoKPDwgL1R5cGUgL0V4dEdTdGF0ZSAvY2EgMCA+PgplbmRvYmoKMTgg
+	MCBvYmoKPDwgL1R5cGUgL0V4dEdTdGF0ZSAvY2EgMSA+PgplbmRvYmoKMjcgMCBvYmoK
+	PDwgL0xlbmd0aCAyOCAwIFIgL04gMSAvQWx0ZXJuYXRlIC9EZXZpY2VHcmF5IC9GaWx0
+	ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4AYVST0gUURz+zTYShIhBhXiIdwoJlSms
+	rKDadnVZlW1bldKiGGffuqOzM9Ob2TXFkwRdojx1D6JjdOzQoZuXosCsS9cgqSAIPHXo
+	+83s6iiEb3k73/v9/X7fe0RtnabvOylBVHNDlSulp25OTYuDHylFHdROWKYV+OlicYyx
+	67mSv7vX1mfS2LLex7V2+/Y9tZVlYCHqLba3EPohkWYAH5mfKGWAs8Adlq/YPgE8WA6s
+	GvAjogMPmrkw09GcdKWyLZFT5qIoKq9iO0mu+/m5xr6LtYmD/lyPZtaOvbPqqtFM1LT3
+	RKG8D65EGc9fVPZsNRSnDeOcSEMaKfKu1d8rTMcRkSsQSgZSNWS5n2pOnXXgdRi7XbqT
+	4/j2EKU+yWCoibXpspkdhX0AdirL7BDwBejxsmIP54F7Yf9bUcOTwCdhP2SHedatH/YX
+	rlPge4Q9NeDOFK7F8dqKH14tAUP3VCNojHNNxNPXOXOkiO8x1BmY90Y5pgsxd5aqEzeA
+	O2EfWapmCrFd+67qJe57AnfT4zvRmzkLXKAcSXKxFdkU0DwJWBR9i7BJDjw+zh5V4Heo
+	mMAcuYnczSj3HtURG2ejUoFWeo1Xxk/jufHF+GVsGM+Afqx213t8/+njFXXXtj48+Y16
+	3DmuvZ0bVWFWcWUL3f/HMoSP2Sc5psHToVlYa9h25A+azEywDCjEfwU+l/qSE1Xc1e7t
+	uEUSzFA+LGwluktUbinU6j2DSqwcK9gAdnCSxCxaHLhTa7o5eHfYInpt+U1XsuuG/vr2
+	evva8h5tyqgpKBPNs0RmlLFbo+TdeNv9ZpERnzg6vue9ilrJ/klFED+FOVoq8hRV9FZQ
+	1sRvZw5+G7Z+XD+l5/VB/TwJPa2f0a/ooxG+DHRJz8JzUR+jSfCwaSHiEqCKgzPUTlRj
+	jQPiKfHytFtkkf0PQBn9ZgplbmRzdHJlYW0KZW5kb2JqCjI4IDAgb2JqCjcwNAplbmRv
+	YmoKMTIgMCBvYmoKWyAvSUNDQmFzZWQgMjcgMCBSIF0KZW5kb2JqCjI5IDAgb2JqCjw8
+	IC9MZW5ndGggMzAgMCBSIC9OIDMgL0FsdGVybmF0ZSAvRGV2aWNlUkdCIC9GaWx0ZXIg
+	L0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Aa2TzWsTQRjGn02QCtZQi0jx4oJSPERdkhbb
+	W9t8SOwSlySlfhw02d1soslm3d1ErR561H+gFEQQPOjBmxc9tSeR4ieC9OBdUU9a6qGU
+	9Z0Zd4Ng8eK7zMxvH555Z+adXSC+UXWcVgxA2/bd0qkZ+ey58/LAOiQcQgJJyFXdc6Y1
+	TSXLDrH5gdwU74+xXF9iz7c+fdtz58Li7bXDSw9bO0wK5YRLCwJSkoT9luApxjXBFcbX
+	fMcnT4Ox3qgaxLeIk26llCF+RJywBD9lXBP8gnFPt9jcdWLFNpo2ENtNPGGYnk48RWwZ
+	nt4mpjwS2u0O5Y+znEd1x6W58bfER1hdaKS4mgAmv5J+r69dPAE8WQMOaH1tdBkYvgQ8
+	m+xrP97wWkkjNa+eTvF00uBBYNdqEHwPgAHyb78Ogq3lINheojU2gJWi3nV73EsblF4B
+	/3oXZxbZgXd0Bgp+R39nURfuUoAHq0BlEVBpvEvj6E9g301AA+lUpnQ6bKKGJAN7szlV
+	lVNjynhem+fKf+zarS7dFY9h6gftWvEMjSPUPju+RpsS7PXKuZDrzXwhZKOanQ15oZEp
+	hlx386WQL1dPswPynKY9Vw7ZafFv//daM5Hf9HKRZ6FRYWfmHrdbmgv5Smc28htmNtqb
+	3Sqy/4n7m34h2j+yyEGlR0YKY1AwjjyVfV58kzQDQ4+B+0PKyXR55eNLJvwRvnmd33Wm
+	49xwm1bDl6fpjzSTcsHWjyfllKJM4BeDarM/CmVuZHN0cmVhbQplbmRvYmoKMzAgMCBv
+	YmoKNTY1CmVuZG9iagoyMiAwIG9iagpbIC9JQ0NCYXNlZCAyOSAwIFIgXQplbmRvYmoK
+	MzEgMCBvYmoKPDwgL0xlbmd0aCAzMiAwIFIgL04gMyAvQWx0ZXJuYXRlIC9EZXZpY2VS
+	R0IgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngBhZRNSBRhGMf/s40EsQbR
+	lwjF0MEkVCYLUgLT9StTtmXVTAlinX13nRxnp5ndLUUihOiYdYwuVkSHiE7hoUOnOkQE
+	mXWJoKNFEAVeIrb/O5O7Y1S+MDO/eZ7/+3y9wwBVj1KOY0U0YMrOu8nemHZ6dEzb/BpV
+	qEYUXCnDczoSiQGfqZXP9Wv1LRRpWWqUsdb7NnyrdpkQUDQqd2QDPix5PODjki/knTw1
+	ZyQbE6k02SE3uEPJTvIt8tZsiMdDnBaeAVS1U5MzHJdxIjvILUUjK2M+IOt22rTJ76U9
+	7RlT1LDfyDc5C9q48v1A2x5g04uKbcwDHtwDdtdVbPU1wM4RYPFQxfY96c9H2fXKyxxq
+	9sMp0Rhr+lAqfa8DNt8Afl4vlX7cLpV+3mEO1vHUMgpu0deyMOUlENQb7Gb85Br9i4Oe
+	fFULsMA5jmwB+q8ANz8C+x8C2x8DiWpgqBWRy2w3uPLiIucCdOacadfMTuS1Zl0/onXw
+	aIXWZxtNDVrKsjTf5Wmu8IRbFOkmTFkFztlf23iPCnt4kE/2F7kkvO7frMylU12cJZrY
+	1qe06OomN5DvZ8yePnI9r/cZt2c4YOWAme8bCjhyyrbiPBepidTY4/GTZMZXVCcfk/OQ
+	POcVB2VM334udSJBrqU9OZnrl5pd3Ns+MzHEM5KsWDMTnfHf/MYtJGXefdTcdSz/m2dt
+	kWcYhQUBEzbvNjQk0YsYGuHARQ4ZekwqTFqlX9BqwsPkX5UWEuVdFhW9WOGeFX/PeRS4
+	W8Y/hVgccw3lCJr+Tv+iL+sL+l3983xtob7imXPPmsara18ZV2aW1ci4QY0yvqwpiG+w
+	2g56LWRpneIV9OSV9Y3h6jL2fG3Zo8kc4mp8NdSlCGVqxDjjya5l90WyxTfh51vL9q/p
+	Uft89klNJdeyunhmKfp8NlwNa/+zq2DSsqvw5I2QLjxroe5VD6p9aovaCk09prarbWoX
+	346qA+Udw5yViQus22X1KfZgY5reyklXZovg38Ivhv+lXmEL1zQ0+Q9NuLmMaQnfEdw2
+	cIeU/8NfswMN3gplbmRzdHJlYW0KZW5kb2JqCjMyIDAgb2JqCjc5MgplbmRvYmoKNyAw
+	IG9iagpbIC9JQ0NCYXNlZCAzMSAwIFIgXQplbmRvYmoKMTkgMCBvYmoKPDwgL0xlbmd0
+	aCAzMyAwIFIgL0Z1bmN0aW9uVHlwZSAwIC9CaXRzUGVyU2FtcGxlIDggL1NpemUgWyAx
+	MzY1IF0gL0RvbWFpbgpbIDAgMSBdIC9SYW5nZSBbIDAgMSAwIDEgMCAxIF0gL0ZpbHRl
+	ciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngBzcLXcQJAEAXByT8vjLDCO4HwIoobfRPA
+	K7arW4f22V1akT1anX3ae/t85hfWOcAih1jnCIscY50TLHKKdX5jkTMsco51LrDIJda5
+	wiLXWOcGQ7cYusPEPYYeMPEHQ4+YeMLQXww9Y+IFQ6+YeMPQO4Y+MPGJoX+Y+MLAf+tF
+	vN4KZW5kc3RyZWFtCmVuZG9iagozMyAwIG9iagoxMzAKZW5kb2JqCjMgMCBvYmoKPDwg
+	L1R5cGUgL1BhZ2VzIC9NZWRpYUJveCBbMCAwIDUxMiA1MTJdIC9Db3VudCAxIC9LaWRz
+	IFsgMiAwIFIgXSA+PgplbmRvYmoKMzQgMCBvYmoKPDwgL1R5cGUgL0NhdGFsb2cgL1Bh
+	Z2VzIDMgMCBSIC9WZXJzaW9uIC8xLjQgPj4KZW5kb2JqCjM1IDAgb2JqCjw8IC9MZW5n
+	dGggMzYgMCBSIC9MZW5ndGgxIDUwMzIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3Ry
+	ZWFtCngB7TiNfxNVtufcOzOZNkDT0pbQAJl0aJWm2QIKlEJpaJKWNkILVDepsCb9kADF
+	Flo+n9Iqq2L4sK7a1d+u6K6rFaw6bZENRZevxdUVfn6ivLfig4X14z0R9Af7VoHOO5Nq
+	BZd9f8Gbk3vn3nPOveeej3vu3AACwBBoAw7u2mXhJpBhGmEOU7HWrmpR3tm342NqnwaQ
+	V9zetGhZ6hcziZ4QABDKFzWsvT0yatrbAEN/RzyvR+rDdWeXqscBhjVQf3KEEMPGCEQf
+	ZtDHRpa1rJH3Yxf1X6e+3NBYG4Y6SKc+8YC0LLymiT0q3k39Y9RX7ggvqx+59bl11P8H
+	9dWmxuYWvQpuB0gaRf3sphX1TWeOuN6jvpfWEyYcEhjPEJCoADgMjNgLILbBGCojeA9k
+	6hf0v1L5zCj9s4j2NCT31wDwEmpvi4+/qhJP0OyeAZT+L56rBlyzMzAQDE2Ncu2nHMxQ
+	AltABAsI8Az1zsJxuA8klGEyJEM+vIAfgQcq4R4shJ8TTwaUwQuwGz7ARfolEPSgfgCW
+	QidOIv0zoAAWwF44T3x/gp9CGNZAK96j30XWSYQxkAk3kDVXwDo4SRwJkAY2yMQsNo0f
+	gxE0sgHaYAPsFir0Z/XjNCaBoAKeheegH6sxou/STxEmH6aCD+bDHcT7AIqYJo7R/6Kf
+	18/DRFrnQlhE8yyHx2AXmnA4OvEPrIh3wDjSsxGaIAod8Ev4M2bjm7xS3w4uggkwh+a7
+	FWpozi3QB2/ANyixGraGvcB28RX8ogDCUfFtyae/ph+hyBXBSmMKaMRtFE+Lad4H4R34
+	EP4KX8HXmIaZOAEn4wwsw6WsQTJLP9X30BgzjAaFbJADebTSAigmmEe2uBMehS54BV4l
+	OABfokJwHcE4vBWfwR48xZKYwg6zd9g3PJ/7+aOCVVgo3Ck+Jp6UcnSPvosslQJ2UGEK
+	zVhOFrsVamlVzWT9X0InwYuwE2LwHvwFTsHfaH0j0Iqj0IOlWI7nGGePs8/5ZL5OkPpH
+	6xP19fGoTqLVziAoJ7gJZsNcuJk8GoB68vY6+De4C9bDPRQRD0I7gSFnQEof7IPXKeLe
+	JXv8B/n5FPwXnKOI+BYukz+SSLIDc/AGzMfp6CXwYQVBBFfj/bgZ2/Fh7CKNN7KH2Vc8
+	kafycl7P7+ab+JN8Lz/IjwjZwiyhR+gVC8RScROBJh4TP5G45JEekj4zbTe9IlvlIrlM
+	Xiz/+tLOfug/2n9On6HP0bfoW/V2/b/j3pPIYjL5YwhFeCpFrRNupIgqp+iZD1UQ/M5+
+	yyhSmwlWwipYC/fC/bCZYAs8RBH0G3geeuBl2A9/hNdIUwOO0c75mOA07aF/kK4ymnEo
+	aWwhGIVjcCzFnBNzMQ8nYSG6yf5zMIj1uAI34TZ8GV/Ft/AjBuRtG1NZAZvO6sgKz7Od
+	bC/55zryUD6/iS8iazwpJAluEcQO8TOpU3oV3sPptN+ufh6Br/RUYQucod2zGt7neXod
+	r8Xl0CLehk74lnbGbtJF5ZSLcRycE75AJ1vN0nAjS2OT2GnxFXykP4qJ5MuPIIdW5hM6
+	4N+hkM+gvbqW+4WF7PdCNu6kCK3BL9lC9ivmE9ewaijGF9GF5XwcHDFlSZ+wevycZ5pC
+	cBFXkRaV8Du2AzYyF/4Pm9a/T3KJE2G78BHzwHY4xjJMEkvjF9m77Am4gz1Ee+IRirpv
+	4Be03qG4gnKOCwvwXYqmg/g+5d8XxDb9vHgnK2TT8R32N4ogEJ4QwgNc/yJx/j86bgF4
+	iS0zzaKsO0I8IB4w2uwQa+Qu7mImOEJ1IzOxD4Ri+AXXTDoWiptQkd6U3sQlUCciZEOF
+	8DPswK/xIPQKU+A8fg0opEAFZkvT8AlxGlSII+ExlgkP0Sn3Br7I18DnOJrGLGGHTLMw
+	X7gICzEffisUC5/wDvYImlkOnsT78O8EDZRdnbgW1ksvwWq+EfJ42PQ+OtjP2R5oYaWU
+	ZeewbKzkb8Eh2CMVsJvpnQ37+TYWoCyXJx+GM9ggbBA24AdQxuZBG2sVEJLwuHAJGqQW
+	uFP8EO7C1XEpfYYc2vO/IVmT8E902m2gHJNNZ8sewn4IRZBLuXsN5e0dlAOClCmQzsYz
+	KFFmMHLeKbYTGfweZsHD3Mct0sNwN/sWMyjD1BE2C5bBVlQpSxRS1jyIH9M5GqBT73pe
+	A3NN24HhcNqhIG6lk0eFE/AqlsNP4EPMoMyoAjKB34htcAmrWEd/jVACiXw53yAuxRLa
+	Ty8C6qnwZz0i0PeGe1L+lBsmjM/7iSvXmTPu+uuys8aqmQ7FPmb0KFvGSOuI9LTU4SnJ
+	lqRhQ4eYExNkkyQKnCHk+tSSkKJlhzQhW501y2X01TAhwlcgQppCqJKreTTFGBcm0lWc
+	buK8/Uec7gFO9yAnWpTpMN2Vq/hURTviVZUYVs8NUHuLVw0q2pl4e3a8LWTHO0Op43DQ
+	CMVnjXgVDUOKTyvVhCwtsSrg0MqCqyJRX8jrysVuc6JH9dQnunKhO9FMTTO1tBK1qRtL
+	ZmC8wUp8Bd0M5KGkrlauen1amUpDaUae5QvXaZVzAz6vzeEIunI19NSqNRqoxVqSM84C
+	nrgYTfJoprgYZbFGmsEmpTt3X3RzzAI1IeeQOrUuvCCg8TDN4dOSnVqp6tVK1522unJj
+	+GxVQEvwxBCqAruhXG/rLmvzeoOGtBRP4P4r2W086rMuVozR0ej9ivbU3MAVk9kcxpTB
+	IE3qyvXPCzho1apvs2KoMS8Q14AmRWseLdzAGWoOKFyv+gxMaImiJajFaiS6JER+y4hq
+	MG+toyej3L1bPwHlPiVaFVAdWpFNDYa9o7pTITpvbW+ZWym7muLK7bYkD1i6e1jSd40h
+	Q69s1JMXBmjxVpzdaNGqvzc1GitSyzQ3hVutQisJqBrLyjeq+nyI1uaTR+gJIll0Mdkv
+	FLUUkHaamGVRlegFoJhQz3xxNSb8HUbKslwAg2hEzmD0aRj+vq05nVpOjhEpJg+5llY2
+	I96f5MpdpfnVJoui+clkUBmgQcGCPDK5w2F4eVPMDTXU0drmBgb6CtTYesCd5wxqLGRQ
+	9n1PSbvZoLR9TxkcHlIpsnfGbxJpmpw9+EuypA/3RQo0TP8/yPUD9BLax9FoiaqUREPR
+	cExvq1EVixrt9vujTT7afwMrj+l9m2xayeagZglFkMynDfcEuI0ZsUctZuNBF31GUGKg
+	nERAX0smutQkO5KzqKLTFS4pfN8ltwgXQRH2ERcw6NKPMyvdY0wwHCrciRIKAJQeuRDD
+	ZW6b/PwwM98q3CfhSrO0MjmttLTc/HxyWeqCVVbnHMv52Zfn+Oq9n8y2nCY4fwaKLn9Z
+	hMkpU4HK1AnjcQTjKqNPn4mUwCQ1M3vSjZPx0wlTb1non3ggtTwSKS+LLBK3Zfe/cfkW
+	thyvL7z4noGKlJVHaG2GGgzgsulXoduSpl8Am2ysGA6VNvQMvmn1pOk24k2I8xsEGiex
+	y81wWt7f/1j/4/ITgxSDajxMIhTbT9/tQPfJOqoHZC0geQvITIzuU6kwnRgLhR6yokFF
+	+ko33jQ5fXeCd25xZdktTk+4YXHz7KriRrrC0lqNR7/JuHNe4zHoZNwYf7Rn+Uh7jF/s
+	pdeUGJrdGWNW22+hspCK0jq+1d3KX37Qa59iWWfpQw6MHd7VNNZ+6ORwewz7e0+OtOfN
+	TMAHoIgKg5PsIF3F7Oyge/5rqr2pta2VtZofND9pfsm81/yWme5hlgT2dsKJhHMJPInb
+	OftPfpbrnOcpaM+8LfOsoitCkpKnFCkVSqPSqrykmJIy7ZkVmbxtOVpmOlgTKFTGU3FT
+	aafyFBVpEGtgeJxWSS02iCd9qW9hTe5EtmNdpr1tHW7siumHe63p8bf7emv6U5+a7E99
+	+owpfUnnnqyBquPp8faOpxPGpz/dmZMwUMVwQs/jZnsfToDH8Ua3xXwFLSVZdsdY/ss3
+	2xJsCe1/wOcoktvx1/Fachea2i+a2ttM7UtN7YtM7SFT+89M7QHTWDlTVuQx8ig5gy4c
+	6XKqnCJb5GHyEDlRlmVJFmQmg5wa00+4JxiuT6V/HRDSJYvxkowdAkK8bSElKZTIsxQb
+	DGVG9xD0a/tqwV+jaH+fr8YwcW61JqrFqKX4wV9VbEVtOPcz//xiLd/pj8kwT5vi9GsJ
+	lbcGuhG3BgmrsY3x4yWGIw3UvTbjZNlNXy7z7t1iM976vVuCQUhfVWQtSpmRPLXEe40q
+	9AMy5HX+82P9AYX+yrV7wY5nyWh2VOJ1aq/J/qTJ4PHPJ2J7nNgeJ7YjEdsHiNbRWod/
+	fkDbMTqoTTQa+uhgb3XfhqM+OqRCqq+eSkjbtCpi1dpqFKV7Q59BoLMiO1RTGzHe4Xqt
+	T633ahtUr9JdHR/3I/JRg1ytervhqK8q0H3UXe/tqXZX+9SwN9jb2dLYdZWsBwZlNbZc
+	Q1aLMVmjIaszPu5HsroMcqchq8uQ1WXI6nR3xmWhb/H8YrJVoFuG4qBnwcC7l5kTyT0h
+	myNYHPfTNId1va2PXcACMNMpMoQ+PoZSMVzomumaSSQP88RJw4zvku9I1vXTHLY+LGAX
+	4iQLoZMpaPAHLxmtZmdzc/PKFqpaVkLLSoJm4miOU5zQMsBMwfi/LcjbTgplbmRzdHJl
+	YW0KZW5kb2JqCjM2IDAgb2JqCjM0NTYKZW5kb2JqCjM3IDAgb2JqCjw8IC9UeXBlIC9G
+	b250RGVzY3JpcHRvciAvQXNjZW50IDc1MSAvQ2FwSGVpZ2h0IDY5NSAvRGVzY2VudCAt
+	MzE5IC9GbGFncyAzMgovRm9udEJCb3ggWy0xNzYgLTIyNyAxMDc2IDkxM10gL0ZvbnRO
+	YW1lIC9EUUJQSVYrQ2FsaXNNVEJvbCAvSXRhbGljQW5nbGUgMAovU3RlbVYgMCAvTGVh
+	ZGluZyAxMTEgL01heFdpZHRoIDEwOTQgL1hIZWlnaHQgNDcxIC9Gb250RmlsZTIgMzUg
+	MCBSID4+CmVuZG9iagozOCAwIG9iagpbIDM0NCBdCmVuZG9iagoxMSAwIG9iago8PCAv
+	VHlwZSAvRm9udCAvU3VidHlwZSAvVHJ1ZVR5cGUgL0Jhc2VGb250IC9EUUJQSVYrQ2Fs
+	aXNNVEJvbCAvRm9udERlc2NyaXB0b3IKMzcgMCBSIC9XaWR0aHMgMzggMCBSIC9GaXJz
+	dENoYXIgMzMgL0xhc3RDaGFyIDMzIC9FbmNvZGluZyAvTWFjUm9tYW5FbmNvZGluZwo+
+	PgplbmRvYmoKMSAwIG9iago8PCAvVGl0bGUgKFVudGl0bGVkKSAvQXV0aG9yIChQcmVz
+	dG9uIEphY2tzb24pIC9DcmVhdG9yIChPbW5pR3JhZmZsZSBQcm9mZXNzaW9uYWwpCi9Q
+	cm9kdWNlciAoTWFjIE9TIFggMTAuNS41IFF1YXJ0eiBQREZDb250ZXh0KSAvQ3JlYXRp
+	b25EYXRlIChEOjIwMDgxMTE3MTg0NzE0WjAwJzAwJykKL01vZERhdGUgKEQ6MjAwODEx
+	MTcxODQ3MTRaMDAnMDAnKSA+PgplbmRvYmoKeHJlZgowIDM5CjAwMDAwMDAwMDAgNjU1
+	MzUgZiAKMDAwMDA2OTExNCAwMDAwMCBuIAowMDAwMDAxMDk4IDAwMDAwIG4gCjAwMDAw
+	NjQ5NjMgMDAwMDAgbiAKMDAwMDAwMDAyMiAwMDAwMCBuIAowMDAwMDAxMDc5IDAwMDAw
+	IG4gCjAwMDAwMDEyMDIgMDAwMDAgbiAKMDAwMDA2NDYxNCAwMDAwMCBuIAowMDAwMDAy
+	Njk4IDAwMDAwIG4gCjAwMDAwMTM5NDkgMDAwMDAgbiAKMDAwMDAwMTQ1NSAwMDAwMCBu
+	IAowMDAwMDY4OTM5IDAwMDAwIG4gCjAwMDAwNjI5MzcgMDAwMDAgbiAKMDAwMDAwMTYx
+	MyAwMDAwMCBuIAowMDAwMDAyNjc4IDAwMDAwIG4gCjAwMDAwMTM5NzAgMDAwMDAgbiAK
+	MDAwMDAxNTM2NiAwMDAwMCBuIAowMDAwMDYyMDE5IDAwMDAwIG4gCjAwMDAwNjIwNjQg
+	MDAwMDAgbiAKMDAwMDA2NDY1MCAwMDAwMCBuIAowMDAwMDYwNDQ4IDAwMDAwIG4gCjAw
+	MDAwNjA5ODggMDAwMDAgbiAKMDAwMDA2MzY2MiAwMDAwMCBuIAowMDAwMDE1Mzg3IDAw
+	MDAwIG4gCjAwMDAwNjA0MjYgMDAwMDAgbiAKMDAwMDA2MTAwOCAwMDAwMCBuIAowMDAw
+	MDYxOTk5IDAwMDAwIG4gCjAwMDAwNjIxMDkgMDAwMDAgbiAKMDAwMDA2MjkxNyAwMDAw
+	MCBuIAowMDAwMDYyOTc0IDAwMDAwIG4gCjAwMDAwNjM2NDIgMDAwMDAgbiAKMDAwMDA2
+	MzY5OSAwMDAwMCBuIAowMDAwMDY0NTk0IDAwMDAwIG4gCjAwMDAwNjQ5NDMgMDAwMDAg
+	biAKMDAwMDA2NTA0NiAwMDAwMCBuIAowMDAwMDY1MTEwIDAwMDAwIG4gCjAwMDAwNjg2
+	NTYgMDAwMDAgbiAKMDAwMDA2ODY3NyAwMDAwMCBuIAowMDAwMDY4OTE1IDAwMDAwIG4g
+	CnRyYWlsZXIKPDwgL1NpemUgMzkgL1Jvb3QgMzQgMCBSIC9JbmZvIDEgMCBSIC9JRCBb
+	IDw0OWU2MjQzZGUwYzBiMTQ0NmRmMDQzNjRjNzc1ZGNlZj4KPDQ5ZTYyNDNkZTBjMGIx
+	NDQ2ZGYwNDM2NGM3NzVkY2VmPiBdID4+CnN0YXJ0eHJlZgo2OTMzNgolJUVPRgoxIDAg
+	b2JqCjw8L0F1dGhvciAoUHJlc3RvbiBKYWNrc29uKS9DcmVhdGlvbkRhdGUgKEQ6MjAw
+	ODExMTQyMzU4MDBaKS9DcmVhdG9yIChPbW5pR3JhZmZsZSBQcm9mZXNzaW9uYWwgNS4x
+	IHJjIDEpL01vZERhdGUgKEQ6MjAwODExMTcxODQxMDBaKS9Qcm9kdWNlciAoTWFjIE9T
+	IFggMTAuNS41IFF1YXJ0eiBQREZDb250ZXh0KS9UaXRsZSAoUmVwb3J0ZXJJY29uLmdy
+	YWZmbGUpPj4KZW5kb2JqCnhyZWYKMSAxCjAwMDAwNzAyNzQgMDAwMDAgbiAKdHJhaWxl
+	cgo8PC9JRCBbPDQ5ZTYyNDNkZTBjMGIxNDQ2ZGYwNDM2NGM3NzVkY2VmPiA8NDllNjI0
+	M2RlMGMwYjE0NDZkZjA0MzY0Yzc3NWRjZWY+XSAvSW5mbyAxIDAgUiAvUHJldiA2OTMz
+	NiAvUm9vdCAzNCAwIFIgL1NpemUgMzk+PgpzdGFydHhyZWYKNzA0OTgKJSVFT0YK
+	</data>
+	<key>QuickLookThumbnail</key>
+	<data>
+	TU0AKgAALDSAACBQOCQWDQeEQmFQuGQ2HQ+IRGJROKQoViABCsQhoAiEKA8AhR2PF/ux
+	vuZ/t9quB/NWKy+YTGZTOaTWbTecTmdTucAYCAADHwwUEzlADGcLA8ABaISd/N9PLV9p
+	5FKZ9op9PwAPqeV2vV+wWGxWOyWWCiAMAEQMRMgtihsJAANAABAKBAoEgB/gYDAAAgO7
+	P9+v2/Pp9gB/PV7P4BP9/gJpt1+tMnHh8E5wOh/uCzZ3PZ/QaHRaOCT6gN5XA1vhsIv8
+	NP8HA6BBII366wYAv+BbqB7x/P6BO94QJ4vMAMxsP1mDs0vcd1mt6TpdPqdXrdNIHEEp
+	I3lIBm0AbGBBQKwfgQjHboA+uB8DHQJ+ul2PwCPZ6gQ9Jl8npDqR9kO68AwFAcCQKh4G
+	LyBx2FsBp1r4AIDACDoQIEwC9Pe9iDt496/AC3qDH8wh8G2cR8sUf56BAKp6hAeh7gAe
+	kDRlGcaRqsxGDaBBJjmKwCDYAAIgmvQIAgv0jSO9MOt3DEMve3T1IOfZ2HcfgCnmeICD
+	uS58juqqrxtMEwzFMaIAUA4AAYdpcAadgEQjM4OhCgTbt2hbeQ/KEPTrPaCRCAB8m6cR
+	9OKfx4BCKp7BCex8gAe0yUfSFIxkQw0gQRo8i0Ag5H+B64gCCIKIE3ML1FI9R1IgzeSa
+	872Mc4E9ABKUqAKeksDkSZ8jkR5VH2R9JV/YFgs7NwAAVNQGnaBUIgQAAOBFCqfz4gkn
+	r1I1YWpKD0NwgZ+K0fRvnCfZ2ngfx2BEK57BEfCuHxYV3XfeCZj+MYDkOQAwAKPAAAhI
+	R/gi8sPT0f73IG9dryXUsLvVVdq1FgVq1gfR0nafYDHseACjaR58jaShXH2Sl45FkeSI
+	M0wEHcXIHHaBYDn+BR/g6Eq/AGAeCt288j4bhuGSVVGeYPVFW27WJvm+fZ1Hcfx0hHdA
+	RugrmS6lqdJDwLwDkAQ4ygKP4AAfIQAAkDE8YhDeISNalYT5D20oLbGdW2fJ0nSfQDnu
+	eIDDQRZ8DQTJZH4TOqcFwcZgLmwDzVlYGgSf4F2aEyBAIAsPz3DiC1hnODyTtW1WnVKB
+	rsgWiH2cBvH4cp1H8cgTCyewTH2wjD8J2faNIOQsgOPRGjUApCn+BshJCudSbTnudSfD
+	Gyc5gWCYd5GHc09+JHVup8bwMZDnwMZPFsfhPdr8HwrFCwC8SdoH8YBtmhRyK+z5O+2M
+	RuFp/hymd214/6/e+CtH4cI3X/DoH8OEE4Wh7AnH6cAwj4oGQNJoGoKYBg5iVDgAYRgA
+	HgECAmBxPCqlTtuaE8ZJbCyCNsYGz6EMHXnIfHwOcdA+QED6HkAcLwhB8BeFGLkfgo4H
+	Q9h8Q8ASHgCDsFwA8dgEQFD9KUBwFRenJPzIUbpV5DU7m9VVFZhL9FssOfsk8fZXB/Dj
+	G8P0bg5B/DcBUFwewKh/RSh/G+OBAgyBNAMGwTYdgDCTTQv0CgHW0J2Q1Fx+61FRJOZv
+	Id4jZyGJ3iqAAfA5RywwH4PMA4WA/j4CwKkXw/BUxxk8+JPQAx1C2AeOoCgDR+lxA2Cs
+	gQBX3QgQ4/GFDOWEIdka/dz0UZEPPj+3A3kXwAD9HIN0fw1xwD9GsC4L49wXNmk/M9qg
+	XAkAFDIKMPYBxNgAAXHwD8KJYwlZxFl+kWXLOeliteQktm1zgaE/pao9xyDiHwAkfo9A
+	EBTD2PcKYrhhD9FdNCgDJABDoFqA8dIFwHD9VCBsFjkUzv5Z252dMsn7SyQyb8hU6JCu
+	VkQnVtshx/j6UYP8csxBpGSGkDEMQ9wY0BpcsIKwQwCheFSIAA4oVilxH+BRZ6GZzLWi
+	6zeNznXMNueS9GEjZFStBlxR9hI9hxjhHwAof09gnB3HuE4WYxh+izpfV9MYAhyiyAgO
+	YDQER+AXAABmhpQC8wpL0qyir+Jbl+mctKQNEYsPHYLIyQCsV2j+HNMQZpyRmg2DMPcG
+	1YLGIzCeD0AgVxYCGAQKinJAgKgkkC/Wdzb6JV6kXFGRtTmfSGShaNgsHyBD2HEN+qY/
+	x6gICQHMe4SBcjKH6LmxtuzrACHCLACA4wPATH4a8DILS/AGAVXmEEunPrai3R6Dz9rm
+	xUupZtgo+kXj/HONwf4xxqD9GODsNRzreXnNEEgG4BAoC3EYAgV4AAEm1H+BYE8UGFTe
+	ivUapLP6O17VHOeLE7rQRanVLijcWTgD1HENwe7jh7gJCGG8e4QxfDOH6L69GGyxgBG8
+	K0CA4AQgWH4B4AAGLkAAAOAyv8Vb9zfv3f65kuSE1+kdAtdaFTAgML65y67lG1G8Hyo4
+	AA6RuAAGCM8fowQgBuHuEDDmUSeBBBkAMJIvhIgJFsAABCRQAAXBTfxDrAqJ3Wc+5tVr
+	ya+tuH4YQAI+CtSOdlLQg60WvLMLpc+vipa/D0HCNse4DABYRB8GsewPhhjSH8MPKWjS
+	ZgBGyKoCA3ATAZH4s8DALiBYrrxOSutd8g56nYqhDg+XZZwdEzlO7oQHA5labUAA7KvE
+	FdDBih4BXQ6huciYgQ6sji7GWPwXYRg5D4CNo7ZBEwdgtAGEEYglgEi+H+AgpQAQL3Ic
+	3qNs0W7SIfim0FnJ0B/6mMLqpkzwwJhKg0E3TdaiCpqIEOEQxAh/IvIKBSt8QWEPFlqh
+	keg3xsD2AYAOqYOQzj2ByMgaw/hkbJ4dRkaopwIjYBUBwfbkAL6avkUq6uNVU11Paed2
+	BetyABH1nRPYAnHJACEQICIRyBANBhIIiA7xgkCG8HZOZuwJF5YDj+D8tx8HGABr4AAt
+	hjj8FsEsOw+Al8P6gQMGoKABg7GUJsBIxMVcc0zqKkCTIunn3EPkrQAeR3VADQ8B4OuX
+	BEIEA4HCFaHk1HWLEgQ4t5lA1Znh+GoMbEH3+NXgQBB9AKBoGQewNBmjZH8M3qOyAAjQ
+	FGBEaYLwQD7lYBbFN8682d5CQIedI8234uT28G5AgIBBIEA8HaFa3lhHEI4gQ6xVF3J+
+	P8BLk2Db9xpyAgQ9zh6xG8AAWAwh+CwCiHsfAUfH5RBeCQAQNBnifAUMrtIDkPAYpaw2
+	pzbU9OYN4O7IgArlnh1cvsH3pkK54NGNpH4AB5+Ogw+401EHPRTo9UDeiMBweCAWAGHy
+	ASBgDCHuBgpOH8Gk+at2ACGWFAAiGeBoBGH2BeAAAq2wASeC48qM5oN4Hg3sBKe+vkQo
+	QMGkCSIEH2Hi5czw30p+5+f2IUPOHwHeIEJMAAFWF+H4FWCsD8HwCtAUq+BSIwBcGqFE
+	AUGg7SAa+yBoIeeQYWYeWqVeHoUYAAA2EC9Q9aQEH1BmAAGo3YT2AkzwSazWwKWqzQqK
+	WoHqG8GmHsAUAGH0AQBYC8HsBYGuHCH+GvB+meACGME2AgGUByBQH5CWAo40AUVCwI46
+	r+HsaiAgC+IEAwC0QGHmGeIEG2DcQqN2AeTPBc28/0VOrqbU5QHsHaIEHaG+AAFMF2H2
+	FMC2EEHyC3DyjgBKA4ACBUGyFMAWGoQgAYQ8Ay9OT2o0z47BA2wO7IIEAMB+IEA+X0QE
+	HUFgIEHIEbGOdCAY7m88rw34o42+YSHoG6GeHsASAGH2AOBSjUBSG2HIH+G3FigcGCEu
+	AgGMB8BYH41dEILu3cwQxpE+unGIowVixMAABMEqQGHGEhBovivkWiAQcmues6VU7+qK
+	cuIGHqHWIEHdFOFAFsH2FADCEOHyDDHYfABCAyACBOG6FSAXDwAMAWPWAw/OzSv6nGue
+	SatGjaL86IAABcFkQGG2DiIEHoGcL0AW90AMZsz4bKl2rk36eYYSliPeHoHAGcHsAQAE
+	H4AMBMgMBMG+HOJTJCcGF2EkAgGCCIBiH4/SAmxSAWAy4+lg/1DKSYc606HiHqIEBQss
+	KAbAOoGoCnBPFI/mcjKM4826s8Z05QIQHqHQOCHCAAE2FkH2E2DMEWHyDNK8ZKA6AsAC
+	BGHAFYAYG2AEAKASNyAy9a93ESxmrm/yTy9A3sA+ES5jAoNIH5LoAAGmCYbcAgWYp8Ig
+	hOl8kQMIljBYQ5JtKgGaHsQiPoBICwHsBIHGHUH+HHMqXgFoEaAgF0CWBsH4CKH+AkuQ
+	ACAYeHA0kXH4xcnIIGHsXbAqDWPG6eNIHqGwIEG0DUL1KMACAdDCx+xkeOVZLiME5oly
+	N8HoHKMeHiHGACEqFcH0EqDYEeH0/fOiUkAyAmACA+HIFeAYG9M+ASLsA1GSz2IAAACA
+	AA/4NAoJBIPCYS/4IAYHBodA4HCoLDoE+n3BAWTIIGzNDJFI5JJZNJ5E7V3BHGiIIBAF
+	BAYB4S/oTEYLAoxFpHGIhF4nOYtO5/PIuAHq4GU9wIAH6AhCVnsIXO7X+55RWa1W65Xa
+	9X7BYbFY7JJFciQetCiOn6SwAEhbBAaHaNJp3DZLO7vN7xPH2/IIAxjBBCgLLh5E5k9B
+	HUp4IB6aAASBZrYL1KL3dYVPoi83C/wC8XIAUgqn0kDik30ccRrddr9hsdlYgsEACG3O
+	sgY4gEBARMQ0QYfMYdQbzIoXFZzQeVDOLOYpBH7gAA+wrBBOmdnYnAg4I8GHBMnBchAu
+	bJH/NqJy4PEPPBPVfPRzou/QA9nAyHuAX8/n+EIqqmdR4H+dTtwPBEEwVBYAFQQgHlcK
+	4fn6KIAAiuIAAaD75uczjMsyk71vg+R/vsAB5uoFhXuHBiTmyNCCHubyZJoACYIezbjM
+	wvrkR5HaSJsfx5G+fwBHmcwBEUUp9EUO5MH0O8WylKcqSqAAJgcAALnSWYHHKAYCgMAY
+	AA0ISHzG9cQPons2JGirkqEkp5nsggSk4x4MSshZpiehR8oKBoEIEmLLM3HyHoi9LzR4
+	5SDxEhTAPwZB8H8flKhAKp6hAdp5AAdsrVBUNRLGUI/AcVAvCKfwrwsFlABFRcOIan04
+	qyjCFoQzUOome0/gADo/rkGUrHydaCGwLscIIBwFR44r2qLWqjADW9HxNXM3varSHH6e
+	Btn8AZ6nQARClCfRCj4Th9D5Ud23dd6CAgBkrnWWoHHSAgCALMYNCKwMx2krdqLq56H0
+	c+WEJtOLlHufSCAoMmHiVKx5mgghvD0l6KgXQSR4UkVGrxNOFx7XWSrynabHub5iHwfZ
+	9n+fQPioeoPngegAHheGd55BZNDyBxQjKJR/C9CwVrkEllYCrdn0RNc1TVQ1cgAfLqAZ
+	icyDFKx2FqghykqggDUIBMa6Yvbnujk017PH9HoOfp3GofoBnudwBj+Tp8j+QRQH2QWe
+	8DwTEAaBIAAgdpcAedYCgIAYCH+DQjUGyNtq/XDj6W57mMq6rqAJYYABBjMqnKTaCHaW
+	GxMi8aj5BWfNWrzWEzogzAIG6h/9yjcRoK6k4owfs6Huc51HyfB8n+ewPinmp5nvE/B+
+	l6atEmOgGk0Ngnn+MvD6QAAHBMu2EKH8jl/NtiGPfRWlvUfqbACfgLoIExJSsb/AROZS
+	CgQygApiR6jooY/noLUV8P8fB0k6EFgSQR3gAGPtvKArEoRBn4HNIGPseY9R+AFH0PoA
+	gehMj5D0IcUg+xDvUhVCtjj4B3C4AgOwAwBQAgFH+BsJJ5jKNUUeh12ZfVGsjfhDx1x7
+	y+k7HqiYFRjoKILGyGogg+RyEcAMQQATCh/DxOkPMhQ9SFMOh4rci0F1sk5iGTeMrVCG
+	H9aWyQgp9h8DpHkPkeg9R/jzUwpoesCYvQrj8zwRobgGCTDkFUAAbAAAPBUvGRcRVDpu
+	jErJzLJ31NTkoQQej0AAJ2bEBJBRCxor+Oqp8AADIHu8Oax+NLA1lPskuUYzkln0yPOS
+	TYfcc4Oj7HyAQOolR8h1EYKgfYjI/zFVEAmKoCx3i5AgO4A5lIqgcLcAAAUO4xQCZDG4
+	5C0D0E+kirFXDBSdMIj2QQD53gAALBSgofA5iCDOBsSMCS8yhrabRGhEUrkQHKWuTibD
+	sCJEInuoiLEUR1DyH0PAeY/h3oAKmw0AEmpjUTQWIUNIDBGh6C0AAOQ/wHTrACBFV0rW
+	PldakyVtL61tRoIVSVDg93eAXDSQQCIQEFDwGMQQawVjAkVWY08gtLo1ENPijhtE3FnI
+	/VzK59Eb04y3ZcAYfg+gChvEiPkN4khWD7ftRSrxspnmSmWBEd0yB/qCA2R4AAA2zI5q
+	GrapUk2mnQqXUIfR1AHhQIIBaniCR0CmYuHZsTAIWvtkeSVRrCnMVARKwsopyZ8wRJPK
+	whg/T7D6HYPQfY6x3j+HUCMK49gRj5I2r6r9pyyB+DGAsQwgQwABDy+AFFNAXohlm2wn
+	Ftk2xEcufCWI/2XkCAQDkggHA2oKHAIYgg5hLGPh2AomlASIIguoiGVSPGFLRdhUue0k
+	nOyVaqO9hoBx/D7AMGoRo+A1CXFgPwS9qL4FeX2AAA47xdARHeAu8jhgNhNMCoJtM3ag
+	NMlYh+ult2SXSpVUZqY+h0wOk8AAFcTEEDYJCAAdwtiCAKiqACGcbaiNPwVdV11Aq6Uu
+	h6UKbNQcRLQMuTyNg+7Mj7HMOwf45gShYHsCUfZ9oH3xyASMO4XAFB/EQGcARhgGgnII
+	BIGd37wQVVotOw8r5tWKJItFW7Ch+IGOrg+CEYB7gLIIDMZKChohHIIPUapcmOgDYAtG
+	xVJzmofyxG3EjJbH5zsni8kg+B3j2H0Ah3QBgyCIHwGQTotR+CdyDo+tZMQC32AkO8mY
+	/AFgBA4n0f4A3DXaiOdCk59IBSXglqVN51MuwOHQQqB5yj1Dxi8AEGo2DA1tNgMmdZTo
+	uPgcNNRgD5yJ4FpZixkeCsoomxSfPAN27Hn2KIwOyGPh2wcHEOgf44QThaHsCd95TtIW
+	oDgFcBQdxHhsAES4Br4krg1J7qOb7lrcNMrgAAfg7oHDji+iSoRDB5M4AAC4Xh4gRmwH
+	1vgAAzbauuAes2JsQK3HnMzsSWRD87wUz9LO6RIqhRGghREdzyHDD8AOF8Qg+AviiFyP
+	wUW4aJgCIGAQdwuQJjuAeAkfYDQAAbQqjbhzJ5/Ym3rONN2zrtxrgWPocB8GcYjbXOIA
+	I9YFgjMWhYH5sB5jPIINQJzBllz0YOojjNSnZMgUSfbj0QbHdlsR2zEh/t7DuHoP0bo5
+	R/jcBUFwewKu4b95c4EMwUAEBuEyHMAgkZSglYeDqw+BuvQVqaTyb/Ht7EEH1vre2YGA
+	lEqPqhGMmgNLBAABgLhsB1orAANwNzGiCgK0/Bi7ERc6ocLuiDjqiSgyx8ks/Yca2E2M
+	uyQMew7R7D4AUAEfoCAsiAHwFkVAvR+Co7+4MioAx2i5AoO0CICh8gP52FMggBZ6LSOT
+	Eaxa294EE1W1UcJCTqbSyn8C7xInkZNDDOa2Jrxx+IAAOSYjDxgBsrp7iBhDtxkR8zsa
+	3ZqD+JqiyQzTZo6QmxboeofwbAcIfwa4FoLwe4FreL6ZdoMIJYBANITwPAAi5oBhpQf4
+	CgHyoaCRtbKsBQhqMAfAbaN5nS6bKjULoripXSD48QIZ+i5o14bgOYggdYVS5wggBDDr
+	87FUDx87LTPL3yH7KxD6e6C7eaWBQwezkL4wAT5IKgPge4KgVoYIfoVsD5d4AQdYW4Cg
+	dYCgBgfKTwDYKT8L7yuY47UozAjAfiUgfIbrVz+beiAMFzLL9SB7xQAAFoWQ2AaiQxE4
+	ZA8TDpxsQ53qbUBJ4C6yxxRhR7PkKrfr+L8qlqN7aAeIe4fwaQbsVIGIMQe4wcNRUILA
+	IgA4MAU4P4AoT6dJpQAACw4TZDd4rhqROBEwfMGx3RYziSRz3SpkSzj5NkUY+BEwe5jo
+	GgZw2AZqeIAAfQrCdJGrOCbSer3qbccaHjvyI8UR8q7Q4ruDUCMyNTtQnjFbj4eodofD
+	MYAYfwBIJwO4e4JwWYYwfoWcWJKYAQdAWoCodIC4Bwe4ChMgKgx4CK3ZbLUpp0eC7BnR
+	qobQ+CBplC70YCHzoUeL8wjAeSPoGrNqtbn4sAfyMAZMXgoQBzX6t8kMkbAScbBRkKC0
+	mh18dEYKNTsalKgC7qCBIIeUVAZobAf0bIMwe8bUghBIKQH4AwLIVoQgAywABZWEXpyb
+	Fi3q3QhgfQcTyzpcGSbcQbycm8eJ8ZE6BYFoXDDbdgsJlYggaEFokSn8PJOBgjPEHccx
+	NyNJgLArxwgUUMQbEJRYeodge7MYAkfQJIOge4JIXAZIfsuEqA2QAQcoWYCwcwDICAew
+	C426voAwCcKMnsZ7oZ3SBga4gQfodiH7jbfkcryCR8ebqDFSMptIeqTQEh05CxMwsQeA
+	YIgga70qagiIBjT81D3joRRjFTZ0tI+C7JqZaLtRtKxbaK68S8LR9j+DizaAeQfAf4Y4
+	agfwY4HYNQe4HczA14JYHIAwKYWgRQAwVgAABQEAggC6HKcEwiyhRKM4hSTQe4aQ+CBb
+	eUjxWricizykKal5XwDYPoggDBowsQdAUYggb50hxzDbXAuzF825Dkiiobi7jzEkaKCr
+	jpNJRTLUKi8AegdQe4ewBgAwf4BQIgOAe4IgXoZofoXs9osgAIcQWACwcgDoCYewDRMi
+	voA468sy3hkofk2CiIawi4jdFrEE6pZzibo7Ubo1LUn8H4t4L6cwPYsYcAQoggc4TBsS
+	HZ/sHTjibypTWE2wmqorjAm9E7Ok7c71L4o7ANOgpxEwehhwYIZ4foYIIANwe6m1IAr4
+	IYGYAoJQXgSAA4Wof4BJDYAIDLrq3SHqb4fIb7y0QNTxEhWkdMHptsPMmtLQjC4M+8II
+	AAE0IYsIbKmbDAWkJcShytUxg1OUsBtik870wNPL2TeL2ySBacK5WTKYeYdQfAewBtGo
+	BQHwNYewHwYYaQfw8NRwrIAIbwVoC4cAEICweoD1JcJZ+boskD2oggfDWw6qKddk3Dob
+	d6AUJzKcnJQxka3QfhEwATdgFoWIsYaStQeoaMJbACGghDyj3aVpD0vjojozFEBFZLEr
+	Kkw0nrjYy78rF5SzNZhwXgZgfgXgIoOIfCUVbokgHYFoAgIQYgSwBFH4BNc4AADLnsQj
+	2UUiiNArezLz872dnKMMBVB1i8Hlo0GDGBhQfLhwGgZgsYZQFw6Qd7DbX4AdhrWETNYp
+	hbF5NUc5NrPcGMLZk1osTUeQgYeYdIfAeoBoA4f4BYHIM4ewHIZAawf0SVlQh4bIVQC4
+	bgEwDIepWADUSABIDaR0m7yp5TrT5DfFjtXtpKbs2jo4zaIboL2FiLK1yiNSDYggG1eA
+	AZjorIfjgAZaRooQBbhxQkcNzVhsA5HUCEBrjquU09YVO8HNxycET8mxkVj7qJhwWwY4
+	fgWwJYOwfCadRwGwFIAgHYZITQBAYgAABADgj6vskLEwiYfyBoe1p6CDgDzb9Ir0vdBU
+	n9zMtBEL+IebgAF9H4yTgorQeteAaUrooQBjMjojZbEs6VslsUZ9/FVVnNPrxr2kZi7J
+	qVZwfNtltwBYGgMgewGgZobMpczAAIaoVADAbAFQDYeh8QDKvoBQul/17LNbM6CFA7tj
+	jViETDKl8F61yZ2MKrilpIeyBYEwUBeMu4rIdwXQggbJiIf5QgAIBTn9VBXV8TzlZUGM
+	nbtKgCfF/ji9VVEa3LKJRTaL9xEweojYWIYYfgWIKAPQfCvUNQF4EgAQGgZ4T4BQZQAI
+	BADRagDYLckS7CBIf4erM4/l70tWF1rks8i8Hd3GFsv1EK7lytiwnce4ggDoQk/QLIrY
+	c7RwAAcAQIl5QgBF0JzdhmF9h0/svtpMZrecBljj3UrzPRN86iSye73LAb31tOBAmdGw
+	GAMIe4GEVUVLlwAIaAUgDAagF4D4eiRYDMSABYEMHqBCTFvGOlzGF0kGQFKF8uItZdQG
+	TOZxgIfJXwCU44DJ7orQcoSAxj6QAESq+jDtoUBdo82seU5o91ndBFYNLOUbjTA5zVjM
+	wS7dfwggewwAVYX4fgVYKwPwfF6q+IFQEAAQF4agUYBQZ4AIA4DIgYDlMl3JPyTAYqLs
+	vlT9E58l/S6mIjYUnmc8tiV6cKoAjSKJP9fmZwA9Xd/lZY4+QmdEBVr8Kzx8K8LMAlpE
+	wYlFr6ygh1tIfQeoBdGoBIFoL4ewFoawcAf9Kq04AIZgUIDAZ4GYEQegF4f4DMiAAIBc
+	RSNZXweuiiCDXtBOsNP1dsr+sSWjPx9b4NMGPloJt9PSxlEE5+AauKpM1CNk5lrZk+ji
+	oV8Rttebx6x+uLyw6ge4+wUwXYfYUwLYQQfOOCigEoDgAIFQbIU4Bgah/4CwgYDwMYno
+	wAf4el6A/iLSerEFBktePW08cmTEnBbTFdYVL2s+uVswheu46c6eQIitDjSI+WGKNzAs
+	7Y52tVsYk1ErUKMhkVFgorWGU1/eu25hg9yV2gvFZwfYeoBSGwBAFLvQFIbYcgf8GyP4
+	Y4ToDAZgHAEwegGYf4DGq4Bi2Z3oegY46TL0mswMwh87Bmc+KW2VVmZNMGJUmmjW4ExG
+	2xqqA92dyAjBfNNqNoistetEn2QY82tNo+I+tjUdEu0zzuOM6rOkxAhYfgjAe4wAUIW4
+	fYUIMAQwfIMCFQEWNoFAbgVIBgax/4CggYDoM6oAewZaByKbyTBG1GPUJy29L21+Tmsl
+	1dw9pAfxEwfCBohYhYA1dQBSRoBZ74ATX7Nme4ald0stVQA5ju3V/+PPDk6uUvCi2+nc
+	TdsFPzKWTOGNoPNoo4eYdm6oBIpoA4EzbgEwb4c4f9URwQYITIDAYwHwFQei4gDD8BDK
+	kYe5iyBEQNy9P+eJDu4+PmZiAO1sKtYabfSuj98Bascuu+Q51wBYGAggEYRTDerQsAfd
+	qgAAb70Qdr1D84A5GucOALUliWvXClinBjeMc7ANssUWULsUvpOFOU2T9RhWwoAATYWQ
+	fYTYMwRYfLC5eAD2zIEgcAVoBkjYAoCYiAD4NbyxGaiLrVD8w8vzUyld8ikxt1FybNFH
+	IJhXUYf4yIDb1bnZGAgTYI2IdoW5i5KI6rhAhgBLN91XIpXWnCw1VedvAFjOKJ9WE+ur
+	FaykxG4IAAegdgfgew8oAoEi0IEgcQdQf8sZdoXYSgDAYIIgF4ekFoC7noBVJRE48Ih2
+	mt8ethH2FmPXS4zG4Qu+4EBMaPJ73R479Q6gEpsJK8/hKge79oAAaSUR4RpfgqK1YmnJ
+	WVQNBLj2mNFzBHYetdsztuU9o4fXJgmwSwVwfYSwNYR4fPcRUADXb4EAcYWABobyaoB/
+	G2znjAXw+CVHndBk6G/pNvI9xG2VoHnN82kAoWu9GQggCa/yTb/hd1C5i7/IhgAqHY8r
+	K+UGJ0sHhXOA9G5nMWusmtemmcTIy4egdfjYAomIAYEQqQEQcwqydxKYWwR4C4XYJIGg
+	eoIkXtToAJT5EpTsKV1ejHTnCXwe+8oGdKx6SayL+SH/iCNIfRXwAMPAFwXL8MiRnoaq
+	jYAAeIYRpYBV0MecHviqCcHK3GsmttfKulY/YypHSXYvBDrw9M2htHso0B5IgABSKrfS
+	ROCSfRwAELhkNh0PiERhoXCIBDjmWIOcICAoNAQACo2hb7c8PAMMf7/iQAlMLk8Llsrl
+	UymENmcRmM3l8smYBl8xm0MAM3oMOoFEoUwmb4e0LDJphYdOcrqlVq1XhbwYsLaxXlEL
+	BIIhYCnc7mc6m9npAAoc0hj+l1mr8spNvmsutcxnd0nkmtUunFzvU7uGAllwejsfj2Ac
+	nAIhKr2ELpd7/dNYzEOV6LCy1KA4exKAARG8sAdNn0Nn9ph9ou8quGOiFnmsqvdGmW0u
+	dsoz/2Op1tK3eEusRfz9hb3e8LEqVhYTJGZ6XTiL7eELZYsuYHA0LAgE1uFiXil9m8XF
+	oHB39U3102243mz4XBtlIwes1+1tk/lD5fh/AEfQAAERhTn0Rg6ksfQ6uoqoKAeAAMnS
+	WYIHIAQCAQj4IhCwz4Pooq7w83a+LlEcTN7D6cMK4D0vlFLhoW47kuWAAYF+hYEA9Bsd
+	x4ZocIWfJxoWAwCu88D4r5D61tUwqdRHJcVpQnqfvOuazLWtq+yQo8Otc16exA2bkHqd
+	p/OWuB/BAKp6hAdh4gAdkeIcVRDAqV4qh6e4oAABoQRwBz5xc3jdS3JclylLqiqJMEQr
+	5Q0wpMlEVyour2odFiZn8wp8uQAAbGsuM5VEzJrC8rJeoWAsjgM7stJtRkYog4irS5JE
+	SUQ/K8Rc8z2K+nS9vwvVcNuux/HzTUAwGQ5Rn0Q49E0fQ9TkCIGpAdZaggc4B22AYAAm
+	Ezi1wiT7TBR8UKuvNDsFYdiUdSEX1zQr5nupoABkZMhgpUd9qsaAhoWexsVTVoC26w1h
+	N3dVY0ut9YQ8/D40tYFBRBcj1w63CUvfLElp3TqWntMp7n65B+A+Kh6g+d55gAd7qFIQ
+	ILFULYhHsKoAAYDSwAqwSVSc2csXFRVZUJV+DpavcrxjKdG4q9Dw17S7VuSeqFhMTyFg
+	iH9+a4hx+nwhZlBOmB+IWA4DoXbcur+u+lP2u1aY5E9eSSAFJp437y0zuWmvpLMW761e
+	L6+44Bn2AABkET59EEP5PH0P7MAeBYAAkdhbAgdQCW6AZ/gmFK2AEj9XaKwMk7dRdE19
+	pFMYx0q5vJoEYKNKstqFoufr4fR8qcN6Fg2NWu+EAB5mghZpiZXQAASBUTqBEss6M+qs
+	bZW75JTvL54nJUQ+jhXvOE+9I7gmy4Hudp/nwfMBHxNU2Hjqs3qoTo+AmUYxCOfIuAAB
+	YMoWAsCyjXqnsYU3VQLpkwrmgSa13K73pEOdqh5qZd1NFjA+QsFosSxpFeGqIbweyFjo
+	FCkZIcHCcMQXMix2rbjVLDYUpY+DdDgKObulp6Lpm/wKPQlEr4/B7j/H6ARsoAw+ibHy
+	H0Qgoh9iEIiA0BIAAIDsFuA4dQBgCABSK58lgAVurtMOuhdT2DeIldOz1UK8YDH0YhGV
+	L5dYctRjY9InY+EaAYDQQsDxU4OnUHgMQrgWCHgIie9NqRMHYohYgeWCLCYapJkaW9Tp
+	wG/u3RcwgvpsD9m3Z8oN1ZcWmKuh47QAA+B3D/HyPZsCbGUJ+IgH0MACBCCCDGASED/X
+	/wBaO6s96HyhwFXS2s3MEo0upbrA2Q0Z3AQQUrDWZLPx/tlAA+shYKhWELAaDCPZVR+M
+	sAANFf80RzJDbQ4h0cLIyF5ke+Q4o/mHENlCYOY7TZNwzfK+OGz33qw6dOAFKrGm3gAM
+	XM8AhyACBqEaPh4JDwBjeFYA8b4IQLj9A6AACgKyXJHhafOZLsi3TEhPPZwEloHonb6o
+	eRb2lxLtkOpZSw/lqgABEIlrIQJskMHuN8hY3HfPEGcqmDgA4OPbYfMt10657HkjWlZc
+	UKVJRnUcrAvShHtpZnZUUlcoZhoxHkpoYQ0R+jCIgA4fIvwGjsAMAgA6RQJAoJ5LuSsB
+	VETzds3WQ6UjYq2edVBRTHWoPjYkiWZrT1zxsmekBsBIJAAAA+Hw7zlEGkxHQJ8hY4RD
+	oxRoAVVoBITVNkIZhiSIFZ0frxPF6JJ65T6bbUs9ytob0odW9lvsyl5MRIYNoao/RxAW
+	IrS9AZDAMj+GEAwcYAQDALJOBFcDC1Dl/mM0KBjFJKwOudGqBClGMRme68qqtrHyQTsI
+	p0fjhy2KAT4DMhYCqLP8vSAOQY9RqkLvcQsejxpRjeJc6MAsHABMGnhF+0ZD3apev63Z
+	dEjT8UqPFO27ryrA2pV22yYhZSlV3koREZozB+DeBgCQAUF1UkMA+PEXQDRpgOAWhhb1
+	6Y0sRwTGCYOAFKzuXDa5VzpqPLEhhYCT9T1BXek/DCjOQCYKdgqABkmQ25nlYMAN0boo
+	BEmutCzGc8YY3WozjVLtWLUV/bg61hdc3rOnWCw6qWMl5K/IWOQbw/R3F0sOABVoAAQj
+	FEwAwXIOqLQXAk6BxGccbVwgPW8t1sWh4MxtaC7Fo1anjsE7kolK5E4LnvUSf6SZnaRk
+	RMDSuAczX/qwsO1V/56q2tRpbB6gW9aJwroxvxL8itVAALEYY/BcEMowB4KQPgBh8FaI
+	UBIYQAAIAmSwBoHNRaLP0bKS5dNlYNv7jnQKl2fSPerF5QMzq6pN1Xd5WaXoETDx/BHH
+	5PVCUiyuTeutUG2JZy9ivb+DJmQontautx+t6xpbcW2MRPrvHFn5Da1o5Bwj9HuBwCQA
+	gEhTD2PcMRxQLlkAAEQbgqQFiYBABkAICgAgOBAScA6EI1aAyxYPQq8D4Uez/YJiNSVX
+	Rkr2rJhNz5/q1cBCrlTQcAbxqdugla7dFt8ulzrTOm3upQ5uoKvXMcHQ2OMX6UY9TfAH
+	H6P8AI1hwD+HGC4L49wZEQAYQwGQLAQgCDKM0ToCgtX534AwDZQwDgS5nswqtG9A77RZ
+	y+5rzoHaO1RzLHi8MvbP6FYTdONJLc25JMjA+iMv6hnpOrTVQ9REoU6uO65u6V6ftXPS
+	AZdK72mKFv8ho9x6KaAGPwlWRx+g2DKPcMA1Bvj+FeRBgwAANkMCGEIGQAwvivEMAgHm
+	JouD/AGAfqgBgHEnAHnHa3I0RXZ2j5bd27249HdVdLbHio4cux70qz3fOl95+m9xHdJ+
+	TfU/HqYiWUldmtH7OweQ8iUgP40AId38h8hUD4PgR4vxnh+hLCGByiqHmjmCGAgAQAMA
+	Agjg/AwADAbAtgjACAJEiPHqawLwMQMwNQNwOQOwPF9h9B9jfBShdB+BwhBBQB9BQBwB
+	0B/hYCGBtqbCsLyKYCGLzCFgXlqM5AUgPgBALAQgMgBAGFVPJnhO6QPwkQkwlQlwmQNB
+	+GShvhzh/B2urB/Brh4B6AABliGKeiFr7CFpuEGwCgAALsQLfCGQaITHRwmw2Q2w3Q3w
+	4Q2DxLxAAB5CGJwrJiGB1CGF6muPapBgAQxpxrevLw4xDRDxERExFO5nyHeGAQZCFvKx
+	FxJxKRKxLRLxMRMxNRNxOROxPRPxQRQxRRRxSRSxTRTxURUxVRVxWRWxXRXxYRYxZRZx
+	aRaxbRbxcRcxdRdxeRexfRfxgRgxhRhxiRixjRjxkRkxlRlxmRmxnRnxoRoxpRpxqRqx
+	rRrxsRsxtRtxuRuxvRvxwRwxxRxxyRyxzRzx0R0x1R1x2R2x3R3x4R4x5R5x6R6x7R7x
+	8R8x9R9x+R+x/R/yASAyBSByCSCyDSDyESEyFSFyGSGyHSHyISIyJSJx4iAgAA8BAAAD
+	AAAAAQBxAAABAQADAAAAAQCZAAABAgADAAAABAAALO4BAwADAAAAAQAFAAABBgADAAAA
+	AQACAAABEQAEAAAAAQAAAAgBEgADAAAAAQABAAABFQADAAAAAQAEAAABFgADAAAAAQEh
+	AAABFwAEAAAAAQAALCwBHAADAAAAAQABAAABPQADAAAAAQACAAABUgADAAAAAQABAAAB
+	UwADAAAABAAALPaHcwAHAAAD9AAALP4AAAAAAAgACAAIAAgAAQABAAEAAQAAA/RhcHBs
+	AgAAAG1udHJSR0IgWFlaIAfYAAEAHwAOACwAIGFjc3BBUFBMAAAAAAAAAAAAAAAAAAAA
+	AAAAAAAAAAAAAAD21gABAAAAANMtYXBwbOoCxvvn7AuJW4CIyiOWp2wAAAAAAAAAAAAA
+	AAAAAAAAAAAAAAAAAAAAAAAAAAAADnJYWVoAAAEsAAAAFGdYWVoAAAFAAAAAFGJYWVoA
+	AAFUAAAAFHd0cHQAAAFoAAAAFGNoYWQAAAF8AAAALHJUUkMAAAGoAAAADmdUUkMAAAG4
+	AAAADmJUUkMAAAHIAAAADnZjZ3QAAAHYAAAAMG5kaW4AAAIIAAAAOGRlc2MAAAJAAAAA
+	Z2RzY20AAAKoAAABAG1tb2QAAAOoAAAAKGNwcnQAAAPQAAAAJFhZWiAAAAAAAABxDgAA
+	OesAAAOdWFlaIAAAAAAAAF8vAACzygAAFlBYWVogAAAAAAAAJpgAABJgAAC5OVhZWiAA
+	AAAAAADzzwABAAAAARhic2YzMgAAAAAAAQwaAAAFwP//8v8AAAdgAAD9zv//+5j///2W
+	AAAD9AAAv05jdXJ2AAAAAAAAAAEBzQAAY3VydgAAAAAAAAABAc0AAGN1cnYAAAAAAAAA
+	AQHNAAB2Y2d0AAAAAAAAAAEAANF0AAAAAAABAAAAANF0AAAAAAABAAAAANF0AAAAAAAB
+	AABuZGluAAAAAAAAADAAAKPAAABUgAAATMAAAJuAAAAm9wAAEXsAAFAAAABUAAACMzMA
+	AjMzAAIzM2Rlc2MAAAAAAAAADURFTEwgMjQwNUZQVwAAAAAAAAAAAAAAAAAAAAAAAAAA
+	AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+	AAAAAAAAAAAAbWx1YwAAAAAAAAASAAAADG5iTk8AAAAYAAAA6HB0UFQAAAAYAAAA6HN2
+	U0UAAAAYAAAA6GZpRkkAAAAYAAAA6GRhREsAAAAYAAAA6HpoQ04AAAAYAAAA6GZyRlIA
+	AAAYAAAA6GphSlAAAAAYAAAA6GVuVVMAAAAYAAAA6HBsUEwAAAAYAAAA6HB0QlIAAAAY
+	AAAA6GVzRVMAAAAYAAAA6HpoVFcAAAAYAAAA6HJ1UlUAAAAYAAAA6GtvS1IAAAAYAAAA
+	6GRlREUAAAAYAAAA6G5sTkwAAAAYAAAA6Gl0SVQAAAAYAAAA6ABEAEUATABMACAAMgA0
+	ADAANQBGAFAAV21tb2QAAAAAAAAQrAAAoBAwNzNTv9zMAAAAAAAAAAAAAAAAAAAAAAB0
+	ZXh0AAAAAENvcHlyaWdodCBBcHBsZSwgSW5jLiwgMjAwOAA=
+	</data>
+	<key>ReadOnly</key>
+	<string>NO</string>
+	<key>RowAlign</key>
+	<integer>1</integer>
+	<key>RowSpacing</key>
+	<real>36</real>
+	<key>SheetTitle</key>
+	<string>Canvas 1</string>
+	<key>SmartAlignmentGuidesActive</key>
+	<string>NO</string>
+	<key>SmartDistanceGuidesActive</key>
+	<string>NO</string>
+	<key>UniqueID</key>
+	<integer>1</integer>
+	<key>UseEntirePage</key>
+	<false/>
+	<key>VPages</key>
+	<integer>1</integer>
+	<key>WindowInfo</key>
+	<dict>
+		<key>CurrentSheet</key>
+		<integer>0</integer>
+		<key>ExpandedCanvases</key>
+		<array>
+			<dict>
+				<key>name</key>
+				<string>Canvas 1</string>
+			</dict>
+		</array>
+		<key>Frame</key>
+		<string>{{2002, 20}, {1215, 1180}}</string>
+		<key>ListView</key>
+		<true/>
+		<key>OutlineWidth</key>
+		<integer>142</integer>
+		<key>RightSidebar</key>
+		<false/>
+		<key>Sidebar</key>
+		<true/>
+		<key>SidebarWidth</key>
+		<integer>157</integer>
+		<key>VisibleRegion</key>
+		<string>{{-4.5, 0.5}, {522, 535.5}}</string>
+		<key>Zoom</key>
+		<real>2</real>
+		<key>ZoomValues</key>
+		<array>
+			<array>
+				<string>Canvas 1</string>
+				<real>2</real>
+				<real>4</real>
+			</array>
+		</array>
+	</dict>
+	<key>saveQuickLookFiles</key>
+	<string>YES</string>
+</dict>
+</plist>
diff --git a/google-breakpad/src/client/mac/sender/crash_report_sender-Info.plist b/google-breakpad/src/client/mac/sender/crash_report_sender-Info.plist
new file mode 100644
index 0000000..976687e
--- /dev/null
+++ b/google-breakpad/src/client/mac/sender/crash_report_sender-Info.plist
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>English</string>
+	<key>CFBundleDisplayName</key>
+	<string>${EXECUTABLE_NAME}</string>
+	<key>CFBundleExecutable</key>
+	<string>${EXECUTABLE_NAME}</string>
+	<key>CFBundleIconFile</key>
+	<string>crash_report_sender</string>
+	<key>CFBundleIdentifier</key>
+	<string>com.Breakpad.${PRODUCT_NAME:identifier}</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>${EXECUTABLE_NAME}</string>
+	<key>CFBundlePackageType</key>
+	<string>APPL</string>
+	<key>CFBundleSignature</key>
+	<string>????</string>
+	<key>CFBundleVersion</key>
+	<string>1.0</string>
+	<key>LSHasLocalizedDisplayName</key>
+	<true/>
+	<key>NSMainNibFile</key>
+	<string>MainMenu</string>
+	<key>NSPrincipalClass</key>
+	<string>NSApplication</string>
+</dict>
+</plist>
diff --git a/google-breakpad/src/client/mac/sender/crash_report_sender.h b/google-breakpad/src/client/mac/sender/crash_report_sender.h
new file mode 100644
index 0000000..6a29d48
--- /dev/null
+++ b/google-breakpad/src/client/mac/sender/crash_report_sender.h
@@ -0,0 +1,117 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// This component uses the HTTPMultipartUpload of the breakpad project to send
+// the minidump and associated data to the crash reporting servers.
+// It will perform throttling based on the parameters passed to it and will
+// prompt the user to send the minidump.
+
+#import <Cocoa/Cocoa.h>
+
+#include "client/mac/sender/uploader.h"
+#import "GTMDefines.h"
+
+// We're sublcassing NSTextField in order to override a particular
+// method (see the implementation) that lets us reject changes if they
+// are longer than a particular length.  Bindings would normally solve
+// this problem, but when we implemented a validation method, and
+// returned NO for strings that were too long, the UI was not updated
+// right away, which was a poor user experience.  The UI would be
+// updated as soon as the text field lost first responder status,
+// which isn't soon enough.  It is a known bug that the UI KVO didn't
+// work in the middle of a validation.
+@interface LengthLimitingTextField : NSTextField {
+  @private
+   NSUInteger maximumLength_;
+}
+
+- (void)setMaximumLength:(NSUInteger)maxLength;
+@end
+
+@interface Reporter : NSObject {
+ @public
+  IBOutlet NSWindow *alertWindow_;        // The alert window
+
+  // Grouping boxes used for resizing.
+  IBOutlet NSBox *headerBox_;
+  IBOutlet NSBox *preEmailBox_;
+  IBOutlet NSBox *emailSectionBox_;
+  // Localized elements (or things that need to be moved during localization).
+  IBOutlet NSTextField                *dialogTitle_;
+  IBOutlet NSTextField                *commentMessage_;
+  IBOutlet NSTextField                *emailMessage_;
+  IBOutlet NSTextField                *emailLabel_;
+  IBOutlet NSTextField                *privacyLinkLabel_;
+  IBOutlet NSButton                   *sendButton_;
+  IBOutlet NSButton                   *cancelButton_;
+  IBOutlet LengthLimitingTextField    *emailEntryField_;
+  IBOutlet LengthLimitingTextField    *commentsEntryField_;
+  IBOutlet NSTextField                *countdownLabel_;
+  IBOutlet NSView                     *privacyLinkArrow_;
+
+  // Text field bindings, for user input.
+  NSString *commentsValue_;                // Comments from the user
+  NSString *emailValue_;                   // Email from the user
+  NSString *countdownMessage_;             // Message indicating time
+                                           // left for input.
+ @private
+  NSTimeInterval remainingDialogTime_;     // Keeps track of how long
+                                           // we have until we cancel
+                                           // the dialog
+  NSTimer *messageTimer_;                  // Timer we use to update
+                                           // the dialog
+  Uploader* uploader_;                     // Uploader we use to send the data.
+}
+
+// Stops the modal panel with an NSAlertDefaultReturn value. This is the action
+// invoked by the "Send Report" button.
+- (IBAction)sendReport:(id)sender;
+// Stops the modal panel with an NSAlertAlternateReturn value. This is the
+// action invoked by the "Cancel" button.
+- (IBAction)cancel:(id)sender;
+// Opens the Privacy Policy url in the default web browser.
+- (IBAction)showPrivacyPolicy:(id)sender;
+
+// Delegate methods for the NSTextField for comments. We want to capture the
+// Return key and use it to send the message when no text has been entered.
+// Otherwise, we want Return to add a carriage return to the comments field.
+- (BOOL)control:(NSControl *)control textView:(NSTextView *)textView
+                          doCommandBySelector:(SEL)commandSelector;
+
+// Accessors to make bindings work
+- (NSString *)commentsValue;
+- (void)setCommentsValue:(NSString *)value;
+
+- (NSString *)emailValue;
+- (void)setEmailValue:(NSString *)value;
+
+- (NSString *)countdownMessage;
+- (void)setCountdownMessage:(NSString *)value;
+
+@end
diff --git a/google-breakpad/src/client/mac/sender/crash_report_sender.icns b/google-breakpad/src/client/mac/sender/crash_report_sender.icns
new file mode 100644
index 0000000..e8c2124
--- /dev/null
+++ b/google-breakpad/src/client/mac/sender/crash_report_sender.icns
Binary files differ
diff --git a/google-breakpad/src/client/mac/sender/crash_report_sender.m b/google-breakpad/src/client/mac/sender/crash_report_sender.m
new file mode 100644
index 0000000..88d26fb
--- /dev/null
+++ b/google-breakpad/src/client/mac/sender/crash_report_sender.m
@@ -0,0 +1,755 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#import "client/mac/sender/crash_report_sender.h"
+
+#import <Cocoa/Cocoa.h>
+#import <pwd.h>
+#import <sys/stat.h>
+#import <SystemConfiguration/SystemConfiguration.h>
+#import <unistd.h>
+
+#import "client/apple/Framework/BreakpadDefines.h"
+#import "common/mac/GTMLogger.h"
+#import "common/mac/HTTPMultipartUpload.h"
+
+
+#define kLastSubmission @"LastSubmission"
+const int kUserCommentsMaxLength = 1500;
+const int kEmailMaxLength = 64;
+
+#define kApplePrefsSyncExcludeAllKey \
+  @"com.apple.PreferenceSync.ExcludeAllSyncKeys"
+
+#pragma mark -
+
+@interface NSView (ResizabilityExtentions)
+// Shifts the view vertically by the given amount.
+- (void)breakpad_shiftVertically:(CGFloat)offset;
+
+// Shifts the view horizontally by the given amount.
+- (void)breakpad_shiftHorizontally:(CGFloat)offset;
+@end
+
+@implementation NSView (ResizabilityExtentions)
+- (void)breakpad_shiftVertically:(CGFloat)offset {
+  NSPoint origin = [self frame].origin;
+  origin.y += offset;
+  [self setFrameOrigin:origin];
+}
+
+- (void)breakpad_shiftHorizontally:(CGFloat)offset {
+  NSPoint origin = [self frame].origin;
+  origin.x += offset;
+  [self setFrameOrigin:origin];
+}
+@end
+
+@interface NSWindow (ResizabilityExtentions)
+// Adjusts the window height by heightDelta relative to its current height,
+// keeping all the content at the same size.
+- (void)breakpad_adjustHeight:(CGFloat)heightDelta;
+@end
+
+@implementation NSWindow (ResizabilityExtentions)
+- (void)breakpad_adjustHeight:(CGFloat)heightDelta {
+  [[self contentView] setAutoresizesSubviews:NO];
+
+  NSRect windowFrame = [self frame];
+  windowFrame.size.height += heightDelta;
+  [self setFrame:windowFrame display:YES];
+  // For some reason the content view is resizing, but not adjusting its origin,
+  // so correct it manually.
+  [[self contentView] setFrameOrigin:NSMakePoint(0, 0)];
+
+  [[self contentView] setAutoresizesSubviews:YES];
+}
+@end
+
+@interface NSTextField (ResizabilityExtentions)
+// Grows or shrinks the height of the field to the minimum required to show the
+// current text, preserving the existing width and origin.
+// Returns the change in height.
+- (CGFloat)breakpad_adjustHeightToFit;
+
+// Grows or shrinks the width of the field to the minimum required to show the
+// current text, preserving the existing height and origin.
+// Returns the change in width.
+- (CGFloat)breakpad_adjustWidthToFit;
+@end
+
+@implementation NSTextField (ResizabilityExtentions)
+- (CGFloat)breakpad_adjustHeightToFit {
+  NSRect oldFrame = [self frame];
+  // Starting with the 10.5 SDK, height won't grow, so make it huge to start.
+  NSRect presizeFrame = oldFrame;
+  presizeFrame.size.height = MAXFLOAT;
+  // sizeToFit will blow out the width rather than making the field taller, so
+  // we do it manually.
+  NSSize newSize = [[self cell] cellSizeForBounds:presizeFrame];
+  NSRect newFrame = NSMakeRect(oldFrame.origin.x, oldFrame.origin.y,
+                               NSWidth(oldFrame), newSize.height);
+  [self setFrame:newFrame];
+
+  return newSize.height - NSHeight(oldFrame);
+}
+
+- (CGFloat)breakpad_adjustWidthToFit {
+  NSRect oldFrame = [self frame];
+  [self sizeToFit];
+  return NSWidth([self frame]) - NSWidth(oldFrame);
+}
+@end
+
+@interface NSButton (ResizabilityExtentions)
+// Resizes to fit the label using IB-style size-to-fit metrics and enforcing a
+// minimum width of 70, while preserving the right edge location.
+// Returns the change in width.
+- (CGFloat)breakpad_smartSizeToFit;
+@end
+
+@implementation NSButton (ResizabilityExtentions)
+- (CGFloat)breakpad_smartSizeToFit {
+  NSRect oldFrame = [self frame];
+  [self sizeToFit];
+  NSRect newFrame = [self frame];
+  // sizeToFit gives much worse results that IB's Size to Fit option. This is
+  // the amount of padding IB adds over a sizeToFit, empirically determined.
+  const float kExtraPaddingAmount = 12;
+  const float kMinButtonWidth = 70; // The default button size in IB.
+  newFrame.size.width = NSWidth(newFrame) + kExtraPaddingAmount;
+  if (NSWidth(newFrame) < kMinButtonWidth)
+    newFrame.size.width = kMinButtonWidth;
+  // Preserve the right edge location.
+  newFrame.origin.x = NSMaxX(oldFrame) - NSWidth(newFrame);
+  [self setFrame:newFrame];
+  return NSWidth(newFrame) - NSWidth(oldFrame);
+}
+@end
+
+#pragma mark -
+
+@interface Reporter(PrivateMethods)
+- (id)initWithConfigFile:(const char *)configFile;
+
+// Returns YES if it has been long enough since the last report that we should
+// submit a report for this crash.
+- (BOOL)reportIntervalElapsed;
+
+// Returns YES if we should send the report without asking the user first.
+- (BOOL)shouldSubmitSilently;
+
+// Returns YES if the minidump was generated on demand.
+- (BOOL)isOnDemand;
+
+// Returns YES if we should ask the user to provide comments.
+- (BOOL)shouldRequestComments;
+
+// Returns YES if we should ask the user to provide an email address.
+- (BOOL)shouldRequestEmail;
+
+// Shows UI to the user to ask for permission to send and any extra information
+// we've been instructed to request. Returns YES if the user allows the report
+// to be sent.
+- (BOOL)askUserPermissionToSend;
+
+// Returns the short description of the crash, suitable for use as a dialog
+// title (e.g., "The application Foo has quit unexpectedly").
+- (NSString*)shortDialogMessage;
+
+// Return explanatory text about the crash and the reporter, suitable for the
+// body text of a dialog.
+- (NSString*)explanatoryDialogText;
+
+// Returns the amount of time the UI should be shown before timing out.
+- (NSTimeInterval)messageTimeout;
+
+// Preps the comment-prompting alert window for display:
+// * localizes all the elements
+// * resizes and adjusts layout as necessary for localization
+// * removes the email section if includeEmail is NO
+- (void)configureAlertWindowIncludingEmail:(BOOL)includeEmail;
+
+// Rmevoes the email section of the dialog, adjusting the rest of the window
+// as necessary.
+- (void)removeEmailPrompt;
+
+// Run an alert window with the given timeout. Returns
+// NSRunStoppedResponse if the timeout is exceeded. A timeout of 0
+// queues the message immediately in the modal run loop.
+- (NSInteger)runModalWindow:(NSWindow*)window 
+                withTimeout:(NSTimeInterval)timeout;
+
+// This method is used to periodically update the UI with how many
+// seconds are left in the dialog display.
+- (void)updateSecondsLeftInDialogDisplay:(NSTimer*)theTimer;
+
+// When we receive this notification, it means that the user has
+// begun editing the email address or comments field, and we disable
+// the timers so that the user has as long as they want to type
+// in their comments/email.
+- (void)controlTextDidBeginEditing:(NSNotification *)aNotification;
+
+- (void)report;
+
+@end
+
+@implementation Reporter
+//=============================================================================
+- (id)initWithConfigFile:(const char *)configFile {
+  if ((self = [super init])) {
+    remainingDialogTime_ = 0;
+    uploader_ = [[Uploader alloc] initWithConfigFile:configFile];
+    if (!uploader_) {
+      [self release];
+      return nil;
+    }
+  }
+  return self;
+}
+
+//=============================================================================
+- (BOOL)askUserPermissionToSend {
+  // Initialize Cocoa, needed to display the alert
+  NSApplicationLoad();
+
+  // Get the timeout value for the notification.
+  NSTimeInterval timeout = [self messageTimeout];
+
+  NSInteger buttonPressed = NSAlertAlternateReturn;
+  // Determine whether we should create a text box for user feedback.
+  if ([self shouldRequestComments]) {
+    BOOL didLoadNib = [NSBundle loadNibNamed:@"Breakpad" owner:self];
+    if (!didLoadNib) {
+      return NO;
+    }
+
+    [self configureAlertWindowIncludingEmail:[self shouldRequestEmail]];
+
+    buttonPressed = [self runModalWindow:alertWindow_ withTimeout:timeout];
+
+    // Extract info from the user into the uploader_.
+    if ([self commentsValue]) {
+      [[uploader_ parameters] setObject:[self commentsValue]
+                                 forKey:@BREAKPAD_COMMENTS];
+    }
+    if ([self emailValue]) {
+      [[uploader_ parameters] setObject:[self emailValue]
+                                 forKey:@BREAKPAD_EMAIL];
+    }
+  } else {
+    // Create an alert panel to tell the user something happened
+    NSPanel* alert =
+        NSGetAlertPanel([self shortDialogMessage],
+                        @"%@",
+                        NSLocalizedString(@"sendReportButton", @""),
+                        NSLocalizedString(@"cancelButton", @""),
+                        nil,
+                        [self explanatoryDialogText]);
+
+    // Pop the alert with an automatic timeout, and wait for the response
+    buttonPressed = [self runModalWindow:alert withTimeout:timeout];
+
+    // Release the panel memory
+    NSReleaseAlertPanel(alert);
+  }
+  return buttonPressed == NSAlertDefaultReturn;
+}
+
+- (void)configureAlertWindowIncludingEmail:(BOOL)includeEmail {
+  // Swap in localized values, making size adjustments to impacted elements as
+  // we go. Remember that the origin is in the bottom left, so elements above
+  // "fall" as text areas are shrunk from their overly-large IB sizes.
+
+  // Localize the header. No resizing needed, as it has plenty of room.
+  [dialogTitle_ setStringValue:[self shortDialogMessage]];
+
+  // Localize the explanatory text field.
+  [commentMessage_ setStringValue:[NSString stringWithFormat:@"%@\n\n%@",
+                                   [self explanatoryDialogText],
+                                   NSLocalizedString(@"commentsMsg", @"")]];
+  CGFloat commentHeightDelta = [commentMessage_ breakpad_adjustHeightToFit];
+  [headerBox_ breakpad_shiftVertically:commentHeightDelta];
+  [alertWindow_ breakpad_adjustHeight:commentHeightDelta];
+
+  // Either localize the email explanation field or remove the whole email
+  // section depending on whether or not we are asking for email.
+  if (includeEmail) {
+    [emailMessage_ setStringValue:NSLocalizedString(@"emailMsg", @"")];
+    CGFloat emailHeightDelta = [emailMessage_ breakpad_adjustHeightToFit];
+    [preEmailBox_ breakpad_shiftVertically:emailHeightDelta];
+    [alertWindow_ breakpad_adjustHeight:emailHeightDelta];
+  } else {
+    [self removeEmailPrompt];  // Handles necessary resizing.
+  }
+
+  // Localize the email label, and shift the associated text field.
+  [emailLabel_ setStringValue:NSLocalizedString(@"emailLabel", @"")];
+  CGFloat emailLabelWidthDelta = [emailLabel_ breakpad_adjustWidthToFit];
+  [emailEntryField_ breakpad_shiftHorizontally:emailLabelWidthDelta];
+
+  // Localize the privacy policy label, and keep it right-aligned to the arrow.
+  [privacyLinkLabel_ setStringValue:NSLocalizedString(@"privacyLabel", @"")];
+  CGFloat privacyLabelWidthDelta =
+      [privacyLinkLabel_ breakpad_adjustWidthToFit];
+  [privacyLinkLabel_ breakpad_shiftHorizontally:(-privacyLabelWidthDelta)];
+
+  // Ensure that the email field and the privacy policy link don't overlap.
+  CGFloat kMinControlPadding = 8;
+  CGFloat maxEmailFieldWidth = NSMinX([privacyLinkLabel_ frame]) -
+                               NSMinX([emailEntryField_ frame]) -
+                               kMinControlPadding;
+  if (NSWidth([emailEntryField_ bounds]) > maxEmailFieldWidth &&
+      maxEmailFieldWidth > 0) {
+    NSSize emailSize = [emailEntryField_ frame].size;
+    emailSize.width = maxEmailFieldWidth;
+    [emailEntryField_ setFrameSize:emailSize];
+  }
+
+  // Localize the placeholder text.
+  [[commentsEntryField_ cell]
+      setPlaceholderString:NSLocalizedString(@"commentsPlaceholder", @"")];
+  [[emailEntryField_ cell]
+      setPlaceholderString:NSLocalizedString(@"emailPlaceholder", @"")];
+
+  // Localize the buttons, and keep the cancel button at the right distance.
+  [sendButton_ setTitle:NSLocalizedString(@"sendReportButton", @"")];
+  CGFloat sendButtonWidthDelta = [sendButton_ breakpad_smartSizeToFit];
+  [cancelButton_ breakpad_shiftHorizontally:(-sendButtonWidthDelta)];
+  [cancelButton_ setTitle:NSLocalizedString(@"cancelButton", @"")];
+  [cancelButton_ breakpad_smartSizeToFit];
+}
+
+- (void)removeEmailPrompt {
+  [emailSectionBox_ setHidden:YES];
+  CGFloat emailSectionHeight = NSHeight([emailSectionBox_ frame]);
+  [preEmailBox_ breakpad_shiftVertically:(-emailSectionHeight)];
+  [alertWindow_ breakpad_adjustHeight:(-emailSectionHeight)];
+}
+
+- (NSInteger)runModalWindow:(NSWindow*)window 
+                withTimeout:(NSTimeInterval)timeout {
+  // Queue a |stopModal| message to be performed in |timeout| seconds.
+  if (timeout > 0.001) {
+    remainingDialogTime_ = timeout;
+    SEL updateSelector = @selector(updateSecondsLeftInDialogDisplay:);
+    messageTimer_ = [NSTimer scheduledTimerWithTimeInterval:1.0
+                                                     target:self
+                                                   selector:updateSelector
+                                                   userInfo:nil
+                                                    repeats:YES];
+  }
+
+  // Run the window modally and wait for either a |stopModal| message or a
+  // button click.
+  [NSApp activateIgnoringOtherApps:YES];
+  NSInteger returnMethod = [NSApp runModalForWindow:window];
+
+  return returnMethod;
+}
+
+- (IBAction)sendReport:(id)sender {
+  // Force the text fields to end editing so text for the currently focused
+  // field will be commited.
+  [alertWindow_ makeFirstResponder:alertWindow_];
+
+  [alertWindow_ orderOut:self];
+  // Use NSAlertDefaultReturn so that the return value of |runModalWithWindow|
+  // matches the AppKit function NSRunAlertPanel()
+  [NSApp stopModalWithCode:NSAlertDefaultReturn];
+}
+
+// UI Button Actions
+//=============================================================================
+- (IBAction)cancel:(id)sender {
+  [alertWindow_ orderOut:self];
+  // Use NSAlertDefaultReturn so that the return value of |runModalWithWindow|
+  // matches the AppKit function NSRunAlertPanel()
+  [NSApp stopModalWithCode:NSAlertAlternateReturn];
+}
+
+- (IBAction)showPrivacyPolicy:(id)sender {
+  // Get the localized privacy policy URL and open it in the default browser.
+  NSURL* privacyPolicyURL =
+      [NSURL URLWithString:NSLocalizedString(@"privacyPolicyURL", @"")];
+  [[NSWorkspace sharedWorkspace] openURL:privacyPolicyURL];
+}
+
+// Text Field Delegate Methods
+//=============================================================================
+- (BOOL)    control:(NSControl*)control
+           textView:(NSTextView*)textView
+doCommandBySelector:(SEL)commandSelector {
+  BOOL result = NO;
+  // If the user has entered text on the comment field, don't end
+  // editing on "return".
+  if (control == commentsEntryField_ &&
+      commandSelector == @selector(insertNewline:)
+      && [[textView string] length] > 0) {
+    [textView insertNewlineIgnoringFieldEditor:self];
+    result = YES;
+  }
+  return result;
+}
+
+- (void)controlTextDidBeginEditing:(NSNotification *)aNotification {
+  [messageTimer_ invalidate];
+  [self setCountdownMessage:@""];
+}
+
+- (void)updateSecondsLeftInDialogDisplay:(NSTimer*)theTimer {
+  remainingDialogTime_ -= 1;
+
+  NSString *countdownMessage;
+  NSString *formatString;
+
+  int displayedTimeLeft; // This can be either minutes or seconds.
+  
+  if (remainingDialogTime_ > 59) {
+    // calculate minutes remaining for UI purposes
+    displayedTimeLeft = (int)(remainingDialogTime_ / 60);
+    
+    if (displayedTimeLeft == 1) {
+      formatString = NSLocalizedString(@"countdownMsgMinuteSingular", @"");
+    } else {
+      formatString = NSLocalizedString(@"countdownMsgMinutesPlural", @"");
+    }
+  } else {
+    displayedTimeLeft = (int)remainingDialogTime_;
+    if (displayedTimeLeft == 1) {
+      formatString = NSLocalizedString(@"countdownMsgSecondSingular", @"");
+    } else {
+      formatString = NSLocalizedString(@"countdownMsgSecondsPlural", @"");
+    }
+  }
+  countdownMessage = [NSString stringWithFormat:formatString,
+                               displayedTimeLeft];
+  if (remainingDialogTime_ <= 30) {
+    [countdownLabel_ setTextColor:[NSColor redColor]];
+  }
+  [self setCountdownMessage:countdownMessage];
+  if (remainingDialogTime_ <= 0) {
+    [messageTimer_ invalidate];
+    [NSApp stopModal];
+  }
+}
+
+
+
+#pragma mark Accessors
+#pragma mark -
+//=============================================================================
+
+- (NSString *)commentsValue {
+  return [[commentsValue_ retain] autorelease];
+}
+
+- (void)setCommentsValue:(NSString *)value {
+  if (commentsValue_ != value) {
+    [commentsValue_ release];
+    commentsValue_ = [value copy];
+  }
+}
+
+- (NSString *)emailValue {
+  return [[emailValue_ retain] autorelease];
+}
+
+- (void)setEmailValue:(NSString *)value {
+  if (emailValue_ != value) {
+    [emailValue_ release];
+    emailValue_ = [value copy];
+  }
+}
+
+- (NSString *)countdownMessage {
+  return [[countdownMessage_ retain] autorelease];
+}
+
+- (void)setCountdownMessage:(NSString *)value {
+  if (countdownMessage_ != value) {
+    [countdownMessage_ release];
+    countdownMessage_ = [value copy];
+  }
+}
+
+#pragma mark -
+//=============================================================================
+- (BOOL)reportIntervalElapsed {
+  float interval = [[[uploader_ parameters]
+      objectForKey:@BREAKPAD_REPORT_INTERVAL] floatValue];
+  NSString *program = [[uploader_ parameters] objectForKey:@BREAKPAD_PRODUCT];
+  NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
+  NSMutableDictionary *programDict =
+    [NSMutableDictionary dictionaryWithDictionary:[ud dictionaryForKey:program]];
+  NSNumber *lastTimeNum = [programDict objectForKey:kLastSubmission];
+  NSTimeInterval lastTime = lastTimeNum ? [lastTimeNum floatValue] : 0;
+  NSTimeInterval now = CFAbsoluteTimeGetCurrent();
+  NSTimeInterval spanSeconds = (now - lastTime);
+
+  [programDict setObject:[NSNumber numberWithDouble:now] 
+                  forKey:kLastSubmission];
+  [ud setObject:programDict forKey:program];
+  [ud synchronize];
+
+  // If we've specified an interval and we're within that time, don't ask the
+  // user if we should report
+  GTMLoggerDebug(@"Reporter Interval: %f", interval);
+  if (interval > spanSeconds) {
+    GTMLoggerDebug(@"Within throttling interval, not sending report");
+    return NO;
+  }
+  return YES;
+}
+
+- (BOOL)isOnDemand {
+  return [[[uploader_ parameters] objectForKey:@BREAKPAD_ON_DEMAND]
+	   isEqualToString:@"YES"];
+}
+
+- (BOOL)shouldSubmitSilently {
+  return [[[uploader_ parameters] objectForKey:@BREAKPAD_SKIP_CONFIRM]
+            isEqualToString:@"YES"];
+}
+
+- (BOOL)shouldRequestComments {
+  return [[[uploader_ parameters] objectForKey:@BREAKPAD_REQUEST_COMMENTS]
+            isEqualToString:@"YES"];
+}
+
+- (BOOL)shouldRequestEmail {
+  return [[[uploader_ parameters] objectForKey:@BREAKPAD_REQUEST_EMAIL]
+            isEqualToString:@"YES"];
+}
+
+- (NSString*)shortDialogMessage {
+  NSString *displayName =
+      [[uploader_ parameters] objectForKey:@BREAKPAD_PRODUCT_DISPLAY];
+  if (![displayName length])
+    displayName = [[uploader_ parameters] objectForKey:@BREAKPAD_PRODUCT];
+
+  if ([self isOnDemand]) {
+    // Local variable to pacify clang's -Wformat-extra-args.
+    NSString* format = NSLocalizedString(@"noCrashDialogHeader", @"");
+    return [NSString stringWithFormat:format, displayName];
+  } else {
+    // Local variable to pacify clang's -Wformat-extra-args.
+    NSString* format = NSLocalizedString(@"crashDialogHeader", @"");
+    return [NSString stringWithFormat:format, displayName];
+  }
+}
+
+- (NSString*)explanatoryDialogText {
+  NSString *displayName =
+      [[uploader_ parameters] objectForKey:@BREAKPAD_PRODUCT_DISPLAY];
+  if (![displayName length])
+    displayName = [[uploader_ parameters] objectForKey:@BREAKPAD_PRODUCT];
+
+  NSString *vendor = [[uploader_ parameters] objectForKey:@BREAKPAD_VENDOR];
+  if (![vendor length])
+    vendor = @"unknown vendor";
+
+  if ([self isOnDemand]) {
+    // Local variable to pacify clang's -Wformat-extra-args.
+    NSString* format = NSLocalizedString(@"noCrashDialogMsg", @"");
+    return [NSString stringWithFormat:format, vendor, displayName];
+  } else {
+    // Local variable to pacify clang's -Wformat-extra-args.
+    NSString* format = NSLocalizedString(@"crashDialogMsg", @"");
+    return [NSString stringWithFormat:format, vendor];
+  }
+}
+
+- (NSTimeInterval)messageTimeout {
+  // Get the timeout value for the notification.
+  NSTimeInterval timeout = [[[uploader_ parameters]
+      objectForKey:@BREAKPAD_CONFIRM_TIMEOUT] floatValue];
+  // Require a timeout of at least a minute (except 0, which means no timeout).
+  if (timeout > 0.001 && timeout < 60.0) {
+    timeout = 60.0;
+  }
+  return timeout;
+}
+
+- (void)report {
+  [uploader_ report];
+}
+
+//=============================================================================
+- (void)dealloc {
+  [uploader_ release];
+  [super dealloc];
+}
+
+- (void)awakeFromNib {
+  [emailEntryField_ setMaximumLength:kEmailMaxLength];
+  [commentsEntryField_ setMaximumLength:kUserCommentsMaxLength];
+}
+
+@end
+
+//=============================================================================
+@implementation LengthLimitingTextField
+
+- (void)setMaximumLength:(NSUInteger)maxLength {
+  maximumLength_ = maxLength;
+}
+
+// This is the method we're overriding in NSTextField, which lets us
+// limit the user's input if it makes the string too long.
+- (BOOL)       textView:(NSTextView *)textView
+shouldChangeTextInRange:(NSRange)affectedCharRange
+      replacementString:(NSString *)replacementString {
+
+  // Sometimes the range comes in invalid, so reject if we can't
+  // figure out if the replacement text is too long.
+  if (affectedCharRange.location == NSNotFound) {
+    return NO;
+  }
+  // Figure out what the new string length would be, taking into
+  // account user selections.
+  NSUInteger newStringLength =
+    [[textView string] length] - affectedCharRange.length +
+    [replacementString length];
+  if (newStringLength > maximumLength_) {
+    return NO;
+  } else {
+    return YES;
+  }
+}
+
+// Cut, copy, and paste have to be caught specifically since there is no menu.
+- (BOOL)performKeyEquivalent:(NSEvent*)event {
+  // Only handle the key equivalent if |self| is the text field with focus.
+  NSText* fieldEditor = [self currentEditor];
+  if (fieldEditor != nil) {
+    // Check for a single "Command" modifier
+    NSUInteger modifiers = [event modifierFlags];
+    modifiers &= NSDeviceIndependentModifierFlagsMask;
+    if (modifiers == NSCommandKeyMask) {
+      // Now, check for Select All, Cut, Copy, or Paste key equivalents.
+      NSString* characters = [event characters];
+      // Select All is Command-A.
+      if ([characters isEqualToString:@"a"]) {
+        [fieldEditor selectAll:self];
+        return YES;
+      // Cut is Command-X.
+      } else if ([characters isEqualToString:@"x"]) {
+        [fieldEditor cut:self];
+        return YES;
+      // Copy is Command-C.
+      } else if ([characters isEqualToString:@"c"]) {
+        [fieldEditor copy:self];
+        return YES;
+      // Paste is Command-V.
+      } else if ([characters isEqualToString:@"v"]) {
+        [fieldEditor paste:self];
+        return YES;
+      }
+    }
+  }
+  // Let the super class handle the rest (e.g. Command-Period will cancel).
+  return [super performKeyEquivalent:event];
+}
+
+@end
+
+//=============================================================================
+int main(int argc, const char *argv[]) {
+  NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
+#if DEBUG
+  // Log to stderr in debug builds.
+  [GTMLogger setSharedLogger:[GTMLogger standardLoggerWithStderr]];
+#endif
+  GTMLoggerDebug(@"Reporter Launched, argc=%d", argc);
+  // The expectation is that there will be one argument which is the path
+  // to the configuration file
+  if (argc != 2) {
+    exit(1);
+  }
+
+  Reporter *reporter = [[Reporter alloc] initWithConfigFile:argv[1]];
+  if (!reporter) {
+    GTMLoggerDebug(@"reporter initialization failed");
+    exit(1);
+  }
+
+  // only submit a report if we have not recently crashed in the past
+  BOOL shouldSubmitReport = [reporter reportIntervalElapsed];
+  BOOL okayToSend = NO;
+
+  // ask user if we should send
+  if (shouldSubmitReport) {
+    if ([reporter shouldSubmitSilently]) {
+      GTMLoggerDebug(@"Skipping confirmation and sending report");
+      okayToSend = YES;
+    } else {
+      okayToSend = [reporter askUserPermissionToSend];
+    }
+  }
+
+  // If we're running as root, switch over to nobody
+  if (getuid() == 0 || geteuid() == 0) {
+    struct passwd *pw = getpwnam("nobody");
+
+    // If we can't get a non-root uid, don't send the report
+    if (!pw) {
+      GTMLoggerDebug(@"!pw - %s", strerror(errno));
+      exit(0);
+    }
+
+    if (setgid(pw->pw_gid) == -1) {
+      GTMLoggerDebug(@"setgid(pw->pw_gid) == -1 - %s", strerror(errno));
+      exit(0);
+    }
+
+    if (setuid(pw->pw_uid) == -1) {
+      GTMLoggerDebug(@"setuid(pw->pw_uid) == -1 - %s", strerror(errno));
+      exit(0);
+    }
+  }
+  else {
+     GTMLoggerDebug(@"getuid() !=0 || geteuid() != 0");
+  }
+
+  if (okayToSend && shouldSubmitReport) {
+    GTMLoggerDebug(@"Sending Report");
+    [reporter report];
+    GTMLoggerDebug(@"Report Sent!");
+  } else {
+    GTMLoggerDebug(@"Not sending crash report okayToSend=%d, "\
+                     "shouldSubmitReport=%d", okayToSend, shouldSubmitReport);
+  }
+
+  GTMLoggerDebug(@"Exiting with no errors");
+  // Cleanup
+  [reporter release];
+  [pool release];
+  return 0;
+}
diff --git a/google-breakpad/src/client/mac/sender/da.lproj/InfoPlist.strings b/google-breakpad/src/client/mac/sender/da.lproj/InfoPlist.strings
new file mode 100644
index 0000000..4cfd32c
--- /dev/null
+++ b/google-breakpad/src/client/mac/sender/da.lproj/InfoPlist.strings
Binary files differ
diff --git a/google-breakpad/src/client/mac/sender/da.lproj/Localizable.strings b/google-breakpad/src/client/mac/sender/da.lproj/Localizable.strings
new file mode 100644
index 0000000..2b8bb96
--- /dev/null
+++ b/google-breakpad/src/client/mac/sender/da.lproj/Localizable.strings
Binary files differ
diff --git a/google-breakpad/src/client/mac/sender/de.lproj/InfoPlist.strings b/google-breakpad/src/client/mac/sender/de.lproj/InfoPlist.strings
new file mode 100644
index 0000000..3180973
--- /dev/null
+++ b/google-breakpad/src/client/mac/sender/de.lproj/InfoPlist.strings
Binary files differ
diff --git a/google-breakpad/src/client/mac/sender/de.lproj/Localizable.strings b/google-breakpad/src/client/mac/sender/de.lproj/Localizable.strings
new file mode 100644
index 0000000..73da36f
--- /dev/null
+++ b/google-breakpad/src/client/mac/sender/de.lproj/Localizable.strings
Binary files differ
diff --git a/google-breakpad/src/client/mac/sender/es.lproj/InfoPlist.strings b/google-breakpad/src/client/mac/sender/es.lproj/InfoPlist.strings
new file mode 100644
index 0000000..a82c013
--- /dev/null
+++ b/google-breakpad/src/client/mac/sender/es.lproj/InfoPlist.strings
Binary files differ
diff --git a/google-breakpad/src/client/mac/sender/es.lproj/Localizable.strings b/google-breakpad/src/client/mac/sender/es.lproj/Localizable.strings
new file mode 100644
index 0000000..c31d6f4
--- /dev/null
+++ b/google-breakpad/src/client/mac/sender/es.lproj/Localizable.strings
Binary files differ
diff --git a/google-breakpad/src/client/mac/sender/fr.lproj/InfoPlist.strings b/google-breakpad/src/client/mac/sender/fr.lproj/InfoPlist.strings
new file mode 100644
index 0000000..4cfd32c
--- /dev/null
+++ b/google-breakpad/src/client/mac/sender/fr.lproj/InfoPlist.strings
Binary files differ
diff --git a/google-breakpad/src/client/mac/sender/fr.lproj/Localizable.strings b/google-breakpad/src/client/mac/sender/fr.lproj/Localizable.strings
new file mode 100644
index 0000000..c32f8ff
--- /dev/null
+++ b/google-breakpad/src/client/mac/sender/fr.lproj/Localizable.strings
Binary files differ
diff --git a/google-breakpad/src/client/mac/sender/goArrow.png b/google-breakpad/src/client/mac/sender/goArrow.png
new file mode 100644
index 0000000..f318a56
--- /dev/null
+++ b/google-breakpad/src/client/mac/sender/goArrow.png
Binary files differ
diff --git a/google-breakpad/src/client/mac/sender/it.lproj/InfoPlist.strings b/google-breakpad/src/client/mac/sender/it.lproj/InfoPlist.strings
new file mode 100644
index 0000000..4cfd32c
--- /dev/null
+++ b/google-breakpad/src/client/mac/sender/it.lproj/InfoPlist.strings
Binary files differ
diff --git a/google-breakpad/src/client/mac/sender/it.lproj/Localizable.strings b/google-breakpad/src/client/mac/sender/it.lproj/Localizable.strings
new file mode 100644
index 0000000..a4b7fd3
--- /dev/null
+++ b/google-breakpad/src/client/mac/sender/it.lproj/Localizable.strings
Binary files differ
diff --git a/google-breakpad/src/client/mac/sender/ja.lproj/InfoPlist.strings b/google-breakpad/src/client/mac/sender/ja.lproj/InfoPlist.strings
new file mode 100644
index 0000000..4cfd32c
--- /dev/null
+++ b/google-breakpad/src/client/mac/sender/ja.lproj/InfoPlist.strings
Binary files differ
diff --git a/google-breakpad/src/client/mac/sender/ja.lproj/Localizable.strings b/google-breakpad/src/client/mac/sender/ja.lproj/Localizable.strings
new file mode 100644
index 0000000..1f1a4fe
--- /dev/null
+++ b/google-breakpad/src/client/mac/sender/ja.lproj/Localizable.strings
Binary files differ
diff --git a/google-breakpad/src/client/mac/sender/nl.lproj/InfoPlist.strings b/google-breakpad/src/client/mac/sender/nl.lproj/InfoPlist.strings
new file mode 100644
index 0000000..4cfd32c
--- /dev/null
+++ b/google-breakpad/src/client/mac/sender/nl.lproj/InfoPlist.strings
Binary files differ
diff --git a/google-breakpad/src/client/mac/sender/nl.lproj/Localizable.strings b/google-breakpad/src/client/mac/sender/nl.lproj/Localizable.strings
new file mode 100644
index 0000000..a4a54f7
--- /dev/null
+++ b/google-breakpad/src/client/mac/sender/nl.lproj/Localizable.strings
Binary files differ
diff --git a/google-breakpad/src/client/mac/sender/no.lproj/InfoPlist.strings b/google-breakpad/src/client/mac/sender/no.lproj/InfoPlist.strings
new file mode 100644
index 0000000..4cfd32c
--- /dev/null
+++ b/google-breakpad/src/client/mac/sender/no.lproj/InfoPlist.strings
Binary files differ
diff --git a/google-breakpad/src/client/mac/sender/no.lproj/Localizable.strings b/google-breakpad/src/client/mac/sender/no.lproj/Localizable.strings
new file mode 100644
index 0000000..725ef5a
--- /dev/null
+++ b/google-breakpad/src/client/mac/sender/no.lproj/Localizable.strings
Binary files differ
diff --git a/google-breakpad/src/client/mac/sender/sl.lproj/InfoPlist.strings b/google-breakpad/src/client/mac/sender/sl.lproj/InfoPlist.strings
new file mode 100644
index 0000000..585f622
--- /dev/null
+++ b/google-breakpad/src/client/mac/sender/sl.lproj/InfoPlist.strings
Binary files differ
diff --git a/google-breakpad/src/client/mac/sender/sl.lproj/Localizable.strings b/google-breakpad/src/client/mac/sender/sl.lproj/Localizable.strings
new file mode 100644
index 0000000..b7dfeec
--- /dev/null
+++ b/google-breakpad/src/client/mac/sender/sl.lproj/Localizable.strings
Binary files differ
diff --git a/google-breakpad/src/client/mac/sender/sv.lproj/InfoPlist.strings b/google-breakpad/src/client/mac/sender/sv.lproj/InfoPlist.strings
new file mode 100644
index 0000000..4cfd32c
--- /dev/null
+++ b/google-breakpad/src/client/mac/sender/sv.lproj/InfoPlist.strings
Binary files differ
diff --git a/google-breakpad/src/client/mac/sender/sv.lproj/Localizable.strings b/google-breakpad/src/client/mac/sender/sv.lproj/Localizable.strings
new file mode 100644
index 0000000..f7d1251
--- /dev/null
+++ b/google-breakpad/src/client/mac/sender/sv.lproj/Localizable.strings
Binary files differ
diff --git a/google-breakpad/src/client/mac/sender/tr.lproj/InfoPlist.strings b/google-breakpad/src/client/mac/sender/tr.lproj/InfoPlist.strings
new file mode 100644
index 0000000..088fb4f
--- /dev/null
+++ b/google-breakpad/src/client/mac/sender/tr.lproj/InfoPlist.strings
Binary files differ
diff --git a/google-breakpad/src/client/mac/sender/tr.lproj/Localizable.strings b/google-breakpad/src/client/mac/sender/tr.lproj/Localizable.strings
new file mode 100644
index 0000000..a82f990
--- /dev/null
+++ b/google-breakpad/src/client/mac/sender/tr.lproj/Localizable.strings
Binary files differ
diff --git a/google-breakpad/src/client/mac/sender/uploader.h b/google-breakpad/src/client/mac/sender/uploader.h
new file mode 100644
index 0000000..5f6aa46
--- /dev/null
+++ b/google-breakpad/src/client/mac/sender/uploader.h
@@ -0,0 +1,89 @@
+// Copyright (c) 2011, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// This component uses the HTTPMultipartUpload of the breakpad project to send
+// the minidump and associated data to the crash reporting servers.
+// It will perform throttling based on the parameters passed to it and will
+// prompt the user to send the minidump.
+
+#include <Foundation/Foundation.h>
+
+#import "common/mac/GTMDefines.h"
+
+#define kClientIdPreferenceKey @"clientid"
+
+extern NSString *const kGoogleServerType;
+extern NSString *const kSocorroServerType;
+extern NSString *const kDefaultServerType;
+
+@interface Uploader : NSObject {
+ @private
+  NSMutableDictionary *parameters_;        // Key value pairs of data (STRONG)
+  NSData *minidumpContents_;               // The data in the minidump (STRONG)
+  NSData *logFileData_;                    // An NSdata for the tar,
+                                           // bz2'd log file.
+  NSMutableDictionary *serverDictionary_;  // The dictionary mapping a
+                                           // server type name to a
+                                           // dictionary of server
+                                           // parameter names.
+  NSMutableDictionary *socorroDictionary_; // The dictionary for
+                                           // Socorro.
+  NSMutableDictionary *googleDictionary_;  // The dictionary for
+                                           // Google.
+  NSMutableDictionary *extraServerVars_;   // A dictionary containing
+                                           // extra key/value pairs
+                                           // that are uploaded to the
+                                           // crash server with the
+                                           // minidump.
+}
+
+- (id)initWithConfigFile:(const char *)configFile;
+
+- (id)initWithConfig:(NSDictionary *)config;
+
+// Reads the file |configFile| and returns the corresponding NSDictionary.
+// |configFile| will be deleted after reading.
++ (NSDictionary *)readConfigurationDataFromFile:(NSString *)configFile;
+
+- (NSMutableDictionary *)parameters;
+
+- (void)report;
+
+// Upload the given data to the crash server.
+- (void)uploadData:(NSData *)data name:(NSString *)name;
+
+// This method adds a key/value pair to the dictionary that
+// will be uploaded to the crash server.
+- (void)addServerParameter:(id)value forKey:(NSString *)key;
+
+// This method process the HTTP response and renames the minidump file with the
+// new ID.
+- (void)handleNetworkResponse:(NSData *)data withError:(NSError *)error;
+
+@end
diff --git a/google-breakpad/src/client/mac/sender/uploader.mm b/google-breakpad/src/client/mac/sender/uploader.mm
new file mode 100644
index 0000000..42a43bf
--- /dev/null
+++ b/google-breakpad/src/client/mac/sender/uploader.mm
@@ -0,0 +1,636 @@
+// Copyright (c) 2011, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#import <fcntl.h>
+#import <sys/stat.h>
+#include <TargetConditionals.h>
+#import <unistd.h>
+
+#import <SystemConfiguration/SystemConfiguration.h>
+
+#import "common/mac/HTTPMultipartUpload.h"
+
+#import "client/apple/Framework/BreakpadDefines.h"
+#import "client/mac/sender/uploader.h"
+#import "common/mac/GTMLogger.h"
+
+const int kMinidumpFileLengthLimit = 2 * 1024 * 1024;  // 2MB
+
+#define kApplePrefsSyncExcludeAllKey \
+  @"com.apple.PreferenceSync.ExcludeAllSyncKeys"
+
+NSString *const kGoogleServerType = @"google";
+NSString *const kSocorroServerType = @"socorro";
+NSString *const kDefaultServerType = @"google";
+
+#pragma mark -
+
+namespace {
+// Read one line from the configuration file.
+NSString *readString(int fileId) {
+  NSMutableString *str = [NSMutableString stringWithCapacity:32];
+  char ch[2] = { 0 };
+
+  while (read(fileId, &ch[0], 1) == 1) {
+    if (ch[0] == '\n') {
+      // Break if this is the first newline after reading some other string
+      // data.
+      if ([str length])
+        break;
+    } else {
+      [str appendString:[NSString stringWithUTF8String:ch]];
+    }
+  }
+
+  return str;
+}
+
+//=============================================================================
+// Read |length| of binary data from the configuration file. This method will
+// returns |nil| in case of error.
+NSData *readData(int fileId, ssize_t length) {
+  NSMutableData *data = [NSMutableData dataWithLength:length];
+  char *bytes = (char *)[data bytes];
+
+  if (read(fileId, bytes, length) != length)
+    return nil;
+
+  return data;
+}
+
+//=============================================================================
+// Read the configuration from the config file.
+NSDictionary *readConfigurationData(const char *configFile) {
+  int fileId = open(configFile, O_RDONLY, 0600);
+  if (fileId == -1) {
+    GTMLoggerDebug(@"Couldn't open config file %s - %s",
+                   configFile,
+                   strerror(errno));
+  }
+
+  // we want to avoid a build-up of old config files even if they
+  // have been incorrectly written by the framework
+  if (unlink(configFile)) {
+    GTMLoggerDebug(@"Couldn't unlink config file %s - %s",
+                   configFile,
+                   strerror(errno));
+  }
+
+  if (fileId == -1) {
+    return nil;
+  }
+
+  NSMutableDictionary *config = [NSMutableDictionary dictionary];
+
+  while (1) {
+    NSString *key = readString(fileId);
+
+    if (![key length])
+      break;
+
+    // Read the data.  Try to convert to a UTF-8 string, or just save
+    // the data
+    NSString *lenStr = readString(fileId);
+    ssize_t len = [lenStr intValue];
+    NSData *data = readData(fileId, len);
+    id value = [[NSString alloc] initWithData:data
+                                     encoding:NSUTF8StringEncoding];
+
+    [config setObject:(value ? value : data) forKey:key];
+    [value release];
+  }
+
+  close(fileId);
+  return config;
+}
+}  // namespace
+
+#pragma mark -
+
+@interface Uploader(PrivateMethods)
+
+// Update |parameters_| as well as the server parameters using |config|.
+- (void)translateConfigurationData:(NSDictionary *)config;
+
+// Read the minidump referenced in |parameters_| and update |minidumpContents_|
+// with its content.
+- (BOOL)readMinidumpData;
+
+// Read the log files referenced in |parameters_| and update |logFileData_|
+// with their content.
+- (BOOL)readLogFileData;
+
+// Returns a unique client id (user-specific), creating a persistent
+// one in the user defaults, if necessary.
+- (NSString*)clientID;
+
+// Returns a dictionary that can be used to map Breakpad parameter names to
+// URL parameter names.
+- (NSMutableDictionary *)dictionaryForServerType:(NSString *)serverType;
+
+// Helper method to set HTTP parameters based on server type.  This is
+// called right before the upload - crashParameters will contain, on exit,
+// URL parameters that should be sent with the minidump.
+- (BOOL)populateServerDictionary:(NSMutableDictionary *)crashParameters;
+
+// Initialization helper to create dictionaries mapping Breakpad
+// parameters to URL parameters
+- (void)createServerParameterDictionaries;
+
+// Accessor method for the URL parameter dictionary
+- (NSMutableDictionary *)urlParameterDictionary;
+
+// Records the uploaded crash ID to the log file.
+- (void)logUploadWithID:(const char *)uploadID;
+@end
+
+@implementation Uploader
+
+//=============================================================================
+- (id)initWithConfigFile:(const char *)configFile {
+  NSDictionary *config = readConfigurationData(configFile);
+  if (!config)
+    return nil;
+
+  return [self initWithConfig:config];
+}
+
+//=============================================================================
+- (id)initWithConfig:(NSDictionary *)config {
+  if ((self = [super init])) {
+    // Because the reporter is embedded in the framework (and many copies
+    // of the framework may exist) its not completely certain that the OS
+    // will obey the com.apple.PreferenceSync.ExcludeAllSyncKeys in our
+    // Info.plist. To make sure, also set the key directly if needed.
+    NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
+    if (![ud boolForKey:kApplePrefsSyncExcludeAllKey]) {
+      [ud setBool:YES forKey:kApplePrefsSyncExcludeAllKey];
+    }
+
+    [self createServerParameterDictionaries];
+
+    [self translateConfigurationData:config];
+
+    // Read the minidump into memory.
+    [self readMinidumpData];
+    [self readLogFileData];
+  }
+  return self;
+}
+
+//=============================================================================
++ (NSDictionary *)readConfigurationDataFromFile:(NSString *)configFile {
+  return readConfigurationData([configFile fileSystemRepresentation]);
+}
+
+//=============================================================================
+- (void)translateConfigurationData:(NSDictionary *)config {
+  parameters_ = [[NSMutableDictionary alloc] init];
+
+  NSEnumerator *it = [config keyEnumerator];
+  while (NSString *key = [it nextObject]) {
+    // If the keyname is prefixed by BREAKPAD_SERVER_PARAMETER_PREFIX
+    // that indicates that it should be uploaded to the server along
+    // with the minidump, so we treat it specially.
+    if ([key hasPrefix:@BREAKPAD_SERVER_PARAMETER_PREFIX]) {
+      NSString *urlParameterKey =
+        [key substringFromIndex:[@BREAKPAD_SERVER_PARAMETER_PREFIX length]];
+      if ([urlParameterKey length]) {
+        id value = [config objectForKey:key];
+        if ([value isKindOfClass:[NSString class]]) {
+          [self addServerParameter:(NSString *)value
+                            forKey:urlParameterKey];
+        } else {
+          [self addServerParameter:(NSData *)value
+                            forKey:urlParameterKey];
+        }
+      }
+    } else {
+      [parameters_ setObject:[config objectForKey:key] forKey:key];
+    }
+  }
+
+  // generate a unique client ID based on this host's MAC address
+  // then add a key/value pair for it
+  NSString *clientID = [self clientID];
+  [parameters_ setObject:clientID forKey:@"guid"];
+}
+
+// Per user per machine
+- (NSString *)clientID {
+  NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
+  NSString *crashClientID = [ud stringForKey:kClientIdPreferenceKey];
+  if (crashClientID) {
+    return crashClientID;
+  }
+
+  // Otherwise, if we have no client id, generate one!
+  srandom((int)[[NSDate date] timeIntervalSince1970]);
+  long clientId1 = random();
+  long clientId2 = random();
+  long clientId3 = random();
+  crashClientID = [NSString stringWithFormat:@"%lx%lx%lx",
+                            clientId1, clientId2, clientId3];
+
+  [ud setObject:crashClientID forKey:kClientIdPreferenceKey];
+  [ud synchronize];
+  return crashClientID;
+}
+
+//=============================================================================
+- (BOOL)readLogFileData {
+#if TARGET_OS_IPHONE
+  return NO;
+#else
+  unsigned int logFileCounter = 0;
+
+  NSString *logPath;
+  size_t logFileTailSize =
+      [[parameters_ objectForKey:@BREAKPAD_LOGFILE_UPLOAD_SIZE] intValue];
+
+  NSMutableArray *logFilenames; // An array of NSString, one per log file
+  logFilenames = [[NSMutableArray alloc] init];
+
+  char tmpDirTemplate[80] = "/tmp/CrashUpload-XXXXX";
+  char *tmpDir = mkdtemp(tmpDirTemplate);
+
+  // Construct key names for the keys we expect to contain log file paths
+  for(logFileCounter = 0;; logFileCounter++) {
+    NSString *logFileKey = [NSString stringWithFormat:@"%@%d",
+                                     @BREAKPAD_LOGFILE_KEY_PREFIX,
+                                     logFileCounter];
+
+    logPath = [parameters_ objectForKey:logFileKey];
+
+    // They should all be consecutive, so if we don't find one, assume
+    // we're done
+
+    if (!logPath) {
+      break;
+    }
+
+    NSData *entireLogFile = [[NSData alloc] initWithContentsOfFile:logPath];
+
+    if (entireLogFile == nil) {
+      continue;
+    }
+
+    NSRange fileRange;
+
+    // Truncate the log file, only if necessary
+
+    if ([entireLogFile length] <= logFileTailSize) {
+      fileRange = NSMakeRange(0, [entireLogFile length]);
+    } else {
+      fileRange = NSMakeRange([entireLogFile length] - logFileTailSize,
+                              logFileTailSize);
+    }
+
+    char tmpFilenameTemplate[100];
+
+    // Generate a template based on the log filename
+    sprintf(tmpFilenameTemplate,"%s/%s-XXXX", tmpDir,
+            [[logPath lastPathComponent] fileSystemRepresentation]);
+
+    char *tmpFile = mktemp(tmpFilenameTemplate);
+
+    NSData *logSubdata = [entireLogFile subdataWithRange:fileRange];
+    NSString *tmpFileString = [NSString stringWithUTF8String:tmpFile];
+    [logSubdata writeToFile:tmpFileString atomically:NO];
+
+    [logFilenames addObject:[tmpFileString lastPathComponent]];
+    [entireLogFile release];
+  }
+
+  if ([logFilenames count] == 0) {
+    [logFilenames release];
+    logFileData_ =  nil;
+    return NO;
+  }
+
+  // now, bzip all files into one
+  NSTask *tarTask = [[NSTask alloc] init];
+
+  [tarTask setCurrentDirectoryPath:[NSString stringWithUTF8String:tmpDir]];
+  [tarTask setLaunchPath:@"/usr/bin/tar"];
+
+  NSMutableArray *bzipArgs = [NSMutableArray arrayWithObjects:@"-cjvf",
+                                             @"log.tar.bz2",nil];
+  [bzipArgs addObjectsFromArray:logFilenames];
+
+  [logFilenames release];
+
+  [tarTask setArguments:bzipArgs];
+  [tarTask launch];
+  [tarTask waitUntilExit];
+  [tarTask release];
+
+  NSString *logTarFile = [NSString stringWithFormat:@"%s/log.tar.bz2",tmpDir];
+  logFileData_ = [[NSData alloc] initWithContentsOfFile:logTarFile];
+  if (logFileData_ == nil) {
+    GTMLoggerDebug(@"Cannot find temp tar log file: %@", logTarFile);
+    return NO;
+  }
+  return YES;
+#endif  // TARGET_OS_IPHONE
+}
+
+//=============================================================================
+- (BOOL)readMinidumpData {
+  NSString *minidumpDir =
+      [parameters_ objectForKey:@kReporterMinidumpDirectoryKey];
+  NSString *minidumpID = [parameters_ objectForKey:@kReporterMinidumpIDKey];
+
+  if (![minidumpID length])
+    return NO;
+
+  NSString *path = [minidumpDir stringByAppendingPathComponent:minidumpID];
+  path = [path stringByAppendingPathExtension:@"dmp"];
+
+  // check the size of the minidump and limit it to a reasonable size
+  // before attempting to load into memory and upload
+  const char *fileName = [path fileSystemRepresentation];
+  struct stat fileStatus;
+
+  BOOL success = YES;
+
+  if (!stat(fileName, &fileStatus)) {
+    if (fileStatus.st_size > kMinidumpFileLengthLimit) {
+      fprintf(stderr, "Breakpad Uploader: minidump file too large " \
+              "to upload : %d\n", (int)fileStatus.st_size);
+      success = NO;
+    }
+  } else {
+      fprintf(stderr, "Breakpad Uploader: unable to determine minidump " \
+              "file length\n");
+      success = NO;
+  }
+
+  if (success) {
+    minidumpContents_ = [[NSData alloc] initWithContentsOfFile:path];
+    success = ([minidumpContents_ length] ? YES : NO);
+  }
+
+  if (!success) {
+    // something wrong with the minidump file -- delete it
+    unlink(fileName);
+  }
+
+  return success;
+}
+
+#pragma mark -
+//=============================================================================
+
+- (void)createServerParameterDictionaries {
+  serverDictionary_ = [[NSMutableDictionary alloc] init];
+  socorroDictionary_ = [[NSMutableDictionary alloc] init];
+  googleDictionary_ = [[NSMutableDictionary alloc] init];
+  extraServerVars_ = [[NSMutableDictionary alloc] init];
+
+  [serverDictionary_ setObject:socorroDictionary_ forKey:kSocorroServerType];
+  [serverDictionary_ setObject:googleDictionary_ forKey:kGoogleServerType];
+
+  [googleDictionary_ setObject:@"ptime" forKey:@BREAKPAD_PROCESS_UP_TIME];
+  [googleDictionary_ setObject:@"email" forKey:@BREAKPAD_EMAIL];
+  [googleDictionary_ setObject:@"comments" forKey:@BREAKPAD_COMMENTS];
+  [googleDictionary_ setObject:@"prod" forKey:@BREAKPAD_PRODUCT];
+  [googleDictionary_ setObject:@"ver" forKey:@BREAKPAD_VERSION];
+  [googleDictionary_ setObject:@"guid" forKey:@"guid"];
+
+  [socorroDictionary_ setObject:@"Comments" forKey:@BREAKPAD_COMMENTS];
+  [socorroDictionary_ setObject:@"CrashTime"
+                         forKey:@BREAKPAD_PROCESS_CRASH_TIME];
+  [socorroDictionary_ setObject:@"StartupTime"
+                         forKey:@BREAKPAD_PROCESS_START_TIME];
+  [socorroDictionary_ setObject:@"Version"
+                         forKey:@BREAKPAD_VERSION];
+  [socorroDictionary_ setObject:@"ProductName"
+                         forKey:@BREAKPAD_PRODUCT];
+  [socorroDictionary_ setObject:@"Email"
+                         forKey:@BREAKPAD_EMAIL];
+}
+
+- (NSMutableDictionary *)dictionaryForServerType:(NSString *)serverType {
+  if (serverType == nil || [serverType length] == 0) {
+    return [serverDictionary_ objectForKey:kDefaultServerType];
+  }
+  return [serverDictionary_ objectForKey:serverType];
+}
+
+- (NSMutableDictionary *)urlParameterDictionary {
+  NSString *serverType = [parameters_ objectForKey:@BREAKPAD_SERVER_TYPE];
+  return [self dictionaryForServerType:serverType];
+
+}
+
+- (BOOL)populateServerDictionary:(NSMutableDictionary *)crashParameters {
+  NSDictionary *urlParameterNames = [self urlParameterDictionary];
+
+  id key;
+  NSEnumerator *enumerator = [parameters_ keyEnumerator];
+
+  while ((key = [enumerator nextObject])) {
+    // The key from parameters_ corresponds to a key in
+    // urlParameterNames.  The value in parameters_ gets stored in
+    // crashParameters with a key that is the value in
+    // urlParameterNames.
+
+    // For instance, if parameters_ has [PRODUCT_NAME => "FOOBAR"] and
+    // urlParameterNames has [PRODUCT_NAME => "pname"] the final HTTP
+    // URL parameter becomes [pname => "FOOBAR"].
+    NSString *breakpadParameterName = (NSString *)key;
+    NSString *urlParameter = [urlParameterNames
+                                   objectForKey:breakpadParameterName];
+    if (urlParameter) {
+      [crashParameters setObject:[parameters_ objectForKey:key]
+                          forKey:urlParameter];
+    }
+  }
+
+  // Now, add the parameters that were added by the application.
+  enumerator = [extraServerVars_ keyEnumerator];
+
+  while ((key = [enumerator nextObject])) {
+    NSString *urlParameterName = (NSString *)key;
+    NSString *urlParameterValue =
+      [extraServerVars_ objectForKey:urlParameterName];
+    [crashParameters setObject:urlParameterValue
+                        forKey:urlParameterName];
+  }
+  return YES;
+}
+
+- (void)addServerParameter:(id)value forKey:(NSString *)key {
+  [extraServerVars_ setObject:value forKey:key];
+}
+
+//=============================================================================
+- (void)handleNetworkResponse:(NSData *)data withError:(NSError *)error {
+  NSString *result = [[NSString alloc] initWithData:data
+                                           encoding:NSUTF8StringEncoding];
+  const char *reportID = "ERR";
+  if (error) {
+    fprintf(stderr, "Breakpad Uploader: Send Error: %s\n",
+            [[error description] UTF8String]);
+  } else {
+    NSCharacterSet *trimSet =
+        [NSCharacterSet whitespaceAndNewlineCharacterSet];
+    reportID = [[result stringByTrimmingCharactersInSet:trimSet] UTF8String];
+    [self logUploadWithID:reportID];
+  }
+
+  // rename the minidump file according to the id returned from the server
+  NSString *minidumpDir =
+      [parameters_ objectForKey:@kReporterMinidumpDirectoryKey];
+  NSString *minidumpID = [parameters_ objectForKey:@kReporterMinidumpIDKey];
+
+  NSString *srcString = [NSString stringWithFormat:@"%@/%@.dmp",
+                                  minidumpDir, minidumpID];
+  NSString *destString = [NSString stringWithFormat:@"%@/%s.dmp",
+                                   minidumpDir, reportID];
+
+  const char *src = [srcString fileSystemRepresentation];
+  const char *dest = [destString fileSystemRepresentation];
+
+  if (rename(src, dest) == 0) {
+    GTMLoggerInfo(@"Breakpad Uploader: Renamed %s to %s after successful " \
+                  "upload",src, dest);
+  }
+  else {
+    // can't rename - don't worry - it's not important for users
+    GTMLoggerDebug(@"Breakpad Uploader: successful upload report ID = %s\n",
+                   reportID );
+  }
+  [result release];
+}
+
+//=============================================================================
+- (void)report {
+  NSURL *url = [NSURL URLWithString:[parameters_ objectForKey:@BREAKPAD_URL]];
+  HTTPMultipartUpload *upload = [[HTTPMultipartUpload alloc] initWithURL:url];
+  NSMutableDictionary *uploadParameters = [NSMutableDictionary dictionary];
+
+  if (![self populateServerDictionary:uploadParameters]) {
+    [upload release];
+    return;
+  }
+
+  [upload setParameters:uploadParameters];
+
+  // Add minidump file
+  if (minidumpContents_) {
+    [upload addFileContents:minidumpContents_ name:@"upload_file_minidump"];
+
+    // If there is a log file, upload it together with the minidump.
+    if (logFileData_) {
+      [upload addFileContents:logFileData_ name:@"log"];
+    }
+
+    // Send it
+    NSError *error = nil;
+    NSData *data = [upload send:&error];
+
+    if (![url isFileURL]) {
+      [self handleNetworkResponse:data withError:error];
+    } else {
+      if (error) {
+        fprintf(stderr, "Breakpad Uploader: Error writing request file: %s\n",
+                [[error description] UTF8String]);
+      }
+    }
+
+  } else {
+    // Minidump is missing -- upload just the log file.
+    if (logFileData_) {
+      [self uploadData:logFileData_ name:@"log"];
+    }
+  }
+  [upload release];
+}
+
+- (void)uploadData:(NSData *)data name:(NSString *)name {
+  NSURL *url = [NSURL URLWithString:[parameters_ objectForKey:@BREAKPAD_URL]];
+  NSMutableDictionary *uploadParameters = [NSMutableDictionary dictionary];
+
+  if (![self populateServerDictionary:uploadParameters])
+    return;
+
+  HTTPMultipartUpload *upload =
+      [[HTTPMultipartUpload alloc] initWithURL:url];
+
+  [uploadParameters setObject:name forKey:@"type"];
+  [upload setParameters:uploadParameters];
+  [upload addFileContents:data name:name];
+
+  [upload send:nil];
+  [upload release];
+}
+
+- (void)logUploadWithID:(const char *)uploadID {
+  NSString *minidumpDir =
+      [parameters_ objectForKey:@kReporterMinidumpDirectoryKey];
+  NSString *logFilePath = [NSString stringWithFormat:@"%@/%s",
+      minidumpDir, kReporterLogFilename];
+  NSString *logLine = [NSString stringWithFormat:@"%0.f,%s\n",
+      [[NSDate date] timeIntervalSince1970], uploadID];
+  NSData *logData = [logLine dataUsingEncoding:NSUTF8StringEncoding];
+
+  NSFileManager *fileManager = [NSFileManager defaultManager];
+  if ([fileManager fileExistsAtPath:logFilePath]) {
+    NSFileHandle *logFileHandle =
+       [NSFileHandle fileHandleForWritingAtPath:logFilePath];
+    [logFileHandle seekToEndOfFile];
+    [logFileHandle writeData:logData];
+    [logFileHandle closeFile];
+  } else {
+    [fileManager createFileAtPath:logFilePath
+                         contents:logData
+                       attributes:nil];
+  }
+}
+
+//=============================================================================
+- (NSMutableDictionary *)parameters {
+  return parameters_;
+}
+
+//=============================================================================
+- (void)dealloc {
+  [parameters_ release];
+  [minidumpContents_ release];
+  [logFileData_ release];
+  [googleDictionary_ release];
+  [socorroDictionary_ release];
+  [serverDictionary_ release];
+  [extraServerVars_ release];
+  [super dealloc];
+}
+
+@end
diff --git a/google-breakpad/src/client/mac/testapp/Controller.h b/google-breakpad/src/client/mac/testapp/Controller.h
new file mode 100644
index 0000000..7b3be2d
--- /dev/null
+++ b/google-breakpad/src/client/mac/testapp/Controller.h
@@ -0,0 +1,65 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#import <Cocoa/Cocoa.h>
+
+#import <Breakpad/Breakpad.h>
+
+enum BreakpadForkBehavior {
+  DONOTHING = 0,
+  UNINSTALL,
+  RESETEXCEPTIONPORT
+};
+
+enum BreakpadForkTestCrashPoint {
+  DURINGLAUNCH = 5,
+  AFTERLAUNCH = 6,
+  BETWEENFORKEXEC = 7
+};
+
+@interface Controller : NSObject {
+  IBOutlet NSWindow *window_;
+  IBOutlet NSWindow *forkTestOptions_;
+
+  BreakpadRef breakpad_;
+
+  enum BreakpadForkBehavior bpForkOption;
+
+  BOOL useVFork;
+  enum BreakpadForkTestCrashPoint progCrashPoint;
+}
+
+- (IBAction)crash:(id)sender;
+- (IBAction)forkTestOptions:(id)sender;
+- (IBAction)forkTestGo:(id)sender;
+- (IBAction)showForkTestWindow:(id) sender;
+- (void)generateReportWithoutCrash:(id)sender;
+- (void)awakeFromNib;
+
+@end
diff --git a/google-breakpad/src/client/mac/testapp/Controller.m b/google-breakpad/src/client/mac/testapp/Controller.m
new file mode 100644
index 0000000..87c4302
--- /dev/null
+++ b/google-breakpad/src/client/mac/testapp/Controller.m
@@ -0,0 +1,261 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#import <Breakpad/Breakpad.h>
+
+#import "Controller.h"
+#import "TestClass.h"
+#import "GTMDefines.h"
+#include <unistd.h>
+#include <mach/mach.h>
+
+@implementation Controller
+
+- (void)causeCrash {
+  float *aPtr = nil;
+  NSLog(@"Crash!");
+  NSLog(@"Bad programmer: %f", *aPtr);
+}
+
+- (void)generateReportWithoutCrash:(id)sender {
+  BreakpadGenerateAndSendReport(breakpad_);
+}
+
+- (IBAction)showForkTestWindow:(id) sender {
+  [forkTestOptions_ setIsVisible:YES];
+}
+
+- (IBAction)forkTestOptions:(id)sender {
+  NSInteger tag = [[sender selectedCell] tag];
+  NSLog(@"sender tag: %d", tag);
+  if (tag <= 2) {
+    bpForkOption = tag;
+  }
+
+  if (tag == 3) {
+    useVFork = NO;
+  }
+
+  if (tag == 4) {
+    useVFork = YES;
+  }
+
+  if (tag >= 5 && tag <= 7) {
+    progCrashPoint = tag;
+  }
+
+}
+
+- (IBAction)forkTestGo:(id)sender {
+
+  NSString *resourcePath = [[NSBundle bundleForClass:
+                                        [self class]] resourcePath];
+  NSString *execProgname = nil;
+  if (progCrashPoint == DURINGLAUNCH) {
+    execProgname = [resourcePath stringByAppendingString:@"/crashduringload"];
+  } else if (progCrashPoint == AFTERLAUNCH) {
+    execProgname = [resourcePath stringByAppendingString:@"/crashInMain"];
+  }
+
+  const char *progName = NULL;
+  if (progCrashPoint != BETWEENFORKEXEC) {
+    progName = [execProgname UTF8String];
+  }
+
+  int pid;
+
+  if (bpForkOption == UNINSTALL) {
+    BreakpadRelease(breakpad_);
+  }
+
+  if (useVFork) {
+    pid = vfork();
+  } else {
+    pid = fork();
+  }
+
+  if (pid == 0) {
+    sleep(3);
+    NSLog(@"Child continuing");
+    FILE *fd = fopen("/tmp/childlog.txt","wt");
+    kern_return_t kr;
+    if (bpForkOption == RESETEXCEPTIONPORT) {
+      kr = task_set_exception_ports(mach_task_self(),
+                               EXC_MASK_BAD_ACCESS | EXC_MASK_BAD_INSTRUCTION |
+                               EXC_MASK_ARITHMETIC | EXC_MASK_BREAKPOINT,
+                               MACH_PORT_NULL,
+                               EXCEPTION_DEFAULT,
+                               THREAD_STATE_NONE);
+      fprintf(fd,"task_set_exception_ports returned %d\n", kr);
+    }
+
+    if (progCrashPoint == BETWEENFORKEXEC) {
+      fprintf(fd,"crashing post-fork\n");
+      int *a = NULL;
+      printf("%d\n",*a++);
+    }
+
+    fprintf(fd,"about to call exec with %s\n", progName);
+    fclose(fd);
+    int i = execl(progName, progName, NULL);
+    fprintf(fd, "exec returned! %d\n", i);
+    fclose(fd);
+  }
+}
+
+- (IBAction)crash:(id)sender {
+  NSInteger tag = [sender tag];
+
+  if (tag == 1) {
+    [NSObject cancelPreviousPerformRequestsWithTarget:self];
+    [self performSelector:@selector(causeCrash) withObject:nil afterDelay:10.0];
+    [sender setState:NSOnState];
+    return;
+  }
+
+  if (tag == 2 && breakpad_) {
+    BreakpadRelease(breakpad_);
+    breakpad_ = NULL;
+    return;
+  }
+
+  [self causeCrash];
+}
+
+- (void)anotherThread {
+  NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
+  TestClass *tc = [[TestClass alloc] init];
+
+  [tc wait];
+
+  [pool release];
+}
+
+- (void)awakeFromNib {
+  NSBundle *bundle = [NSBundle mainBundle];
+  NSDictionary *info = [bundle infoDictionary];
+
+
+  breakpad_ = BreakpadCreate(info);
+
+  // Do some unit tests with keys
+  // first a series of bogus values
+  BreakpadSetKeyValue(breakpad_, nil, @"bad2");
+  BreakpadSetKeyValue(nil, @"bad3", @"bad3");
+
+  // Now some good ones
+  BreakpadSetKeyValue(breakpad_,@"key1", @"value1");
+  BreakpadSetKeyValue(breakpad_,@"key2", @"value2");
+  BreakpadSetKeyValue(breakpad_,@"key3", @"value3");
+
+  // Look for a bogus one that we didn't try to set
+  NSString *test = BreakpadKeyValue(breakpad_, @"bad4");
+  if (test) {
+    NSLog(@"Bad BreakpadKeyValue (bad4)");
+  }
+
+  // Look for a bogus one we did try to set
+  test = BreakpadKeyValue(breakpad_, @"bad1");
+  if (test) {
+    NSLog(@"Bad BreakpadKeyValue (bad1)");
+  }
+
+  // Test some bad args for BreakpadKeyValue
+  test = BreakpadKeyValue(nil, @"bad5");
+  if (test) {
+    NSLog(@"Bad BreakpadKeyValue (bad5)");
+  }
+
+  test = BreakpadKeyValue(breakpad_, nil);
+  if (test) {
+    NSLog(@"Bad BreakpadKeyValue (nil)");
+  }
+
+  // Find some we did set
+  test = BreakpadKeyValue(breakpad_, @"key1");
+  if (![test isEqualToString:@"value1"]) {
+    NSLog(@"Can't find BreakpadKeyValue (key1)");
+  }
+  test = BreakpadKeyValue(breakpad_, @"key2");
+  if (![test isEqualToString:@"value2"]) {
+    NSLog(@"Can't find BreakpadKeyValue (key2)");
+  }
+  test = BreakpadKeyValue(breakpad_, @"key3");
+  if (![test isEqualToString:@"value3"]) {
+    NSLog(@"Can't find BreakpadKeyValue (key3)");
+  }
+
+  // Bad args for BreakpadRemoveKeyValue
+  BreakpadRemoveKeyValue(nil, @"bad6");
+  BreakpadRemoveKeyValue(breakpad_, nil);
+
+  // Remove one that is valid
+  BreakpadRemoveKeyValue(breakpad_, @"key3");
+
+  // Try and find it
+  test = BreakpadKeyValue(breakpad_, @"key3");
+  if (test) {
+    NSLog(@"Shouldn't find BreakpadKeyValue (key3)");
+  }
+
+  // Try and remove it again
+  BreakpadRemoveKeyValue(breakpad_, @"key3");
+
+  // Try removal by setting to nil
+  BreakpadSetKeyValue(breakpad_,@"key2", nil);
+  // Try and find it
+  test = BreakpadKeyValue(breakpad_, @"key2");
+  if (test) {
+    NSLog(@"Shouldn't find BreakpadKeyValue (key2)");
+  }
+
+  BreakpadAddUploadParameter(breakpad_,
+                             @"MeaningOfLife",
+                             @"42");
+  [NSThread detachNewThreadSelector:@selector(anotherThread)
+                           toTarget:self withObject:nil];
+
+  NSUserDefaults *args = [NSUserDefaults standardUserDefaults];
+
+  // If the user specified autocrash on the command line, toggle
+  // Breakpad to not confirm and crash immediately.  This is for
+  // automated testing.
+  if ([args boolForKey:@"autocrash"]) {
+    BreakpadSetKeyValue(breakpad_,
+                        @BREAKPAD_SKIP_CONFIRM,
+                        @"YES");
+    [self causeCrash];
+  }
+
+  progCrashPoint = DURINGLAUNCH;
+  [window_ center];
+  [window_ makeKeyAndOrderFront:self];
+}
+
+@end
diff --git a/google-breakpad/src/client/mac/testapp/English.lproj/InfoPlist.strings b/google-breakpad/src/client/mac/testapp/English.lproj/InfoPlist.strings
new file mode 100644
index 0000000..b8c6c6b
--- /dev/null
+++ b/google-breakpad/src/client/mac/testapp/English.lproj/InfoPlist.strings
Binary files differ
diff --git a/google-breakpad/src/client/mac/testapp/English.lproj/MainMenu.xib b/google-breakpad/src/client/mac/testapp/English.lproj/MainMenu.xib
new file mode 100644
index 0000000..840c0db
--- /dev/null
+++ b/google-breakpad/src/client/mac/testapp/English.lproj/MainMenu.xib
@@ -0,0 +1,3748 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
+	<data>
+		<int key="IBDocument.SystemTarget">1050</int>
+		<string key="IBDocument.SystemVersion">10F569</string>
+		<string key="IBDocument.InterfaceBuilderVersion">788</string>
+		<string key="IBDocument.AppKitVersion">1038.29</string>
+		<string key="IBDocument.HIToolboxVersion">461.00</string>
+		<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
+			<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
+			<string key="NS.object.0">788</string>
+		</object>
+		<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
+			<bool key="EncodedWithXMLCoder">YES</bool>
+			<integer value="220"/>
+		</object>
+		<object class="NSArray" key="IBDocument.PluginDependencies">
+			<bool key="EncodedWithXMLCoder">YES</bool>
+			<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+		</object>
+		<object class="NSMutableDictionary" key="IBDocument.Metadata">
+			<bool key="EncodedWithXMLCoder">YES</bool>
+			<object class="NSArray" key="dict.sortedKeys" id="0">
+				<bool key="EncodedWithXMLCoder">YES</bool>
+			</object>
+			<object class="NSMutableArray" key="dict.values">
+				<bool key="EncodedWithXMLCoder">YES</bool>
+			</object>
+		</object>
+		<object class="NSMutableArray" key="IBDocument.RootObjects" id="925601844">
+			<bool key="EncodedWithXMLCoder">YES</bool>
+			<object class="NSCustomObject" id="870565383">
+				<object class="NSMutableString" key="NSClassName">
+					<characters key="NS.bytes">NSApplication</characters>
+				</object>
+			</object>
+			<object class="NSCustomObject" id="442653439">
+				<string key="NSClassName">FirstResponder</string>
+			</object>
+			<object class="NSCustomObject" id="751079937">
+				<string key="NSClassName">NSApplication</string>
+			</object>
+			<object class="NSWindowTemplate" id="341270541">
+				<int key="NSWindowStyleMask">15</int>
+				<int key="NSWindowBacking">2</int>
+				<string key="NSWindowRect">{{945, 874}, {320, 188}}</string>
+				<int key="NSWTFlags">1886912512</int>
+				<string key="NSWindowTitle">Window</string>
+				<string key="NSWindowClass">NSWindow</string>
+				<object class="NSMutableString" key="NSViewClass">
+					<characters key="NS.bytes">View</characters>
+				</object>
+				<string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
+				<string key="NSWindowContentMinSize">{213, 107}</string>
+				<object class="NSView" key="NSWindowView" id="814272478">
+					<reference key="NSNextResponder"/>
+					<int key="NSvFlags">256</int>
+					<object class="NSMutableArray" key="NSSubviews">
+						<bool key="EncodedWithXMLCoder">YES</bool>
+						<object class="NSButton" id="726278107">
+							<reference key="NSNextResponder" ref="814272478"/>
+							<int key="NSvFlags">301</int>
+							<string key="NSFrame">{{14, 140}, {292, 32}}</string>
+							<reference key="NSSuperview" ref="814272478"/>
+							<reference key="NSWindow"/>
+							<bool key="NSEnabled">YES</bool>
+							<object class="NSButtonCell" key="NSCell" id="539552922">
+								<int key="NSCellFlags">67239424</int>
+								<int key="NSCellFlags2">134217728</int>
+								<string key="NSContents">Crash! (Airbag Installed)</string>
+								<object class="NSFont" key="NSSupport" id="933596199">
+									<string key="NSName">LucidaGrande</string>
+									<double key="NSSize">13</double>
+									<int key="NSfFlags">1044</int>
+								</object>
+								<reference key="NSControlView" ref="726278107"/>
+								<int key="NSButtonFlags">-2038284033</int>
+								<int key="NSButtonFlags2">1</int>
+								<reference key="NSAlternateImage" ref="933596199"/>
+								<string key="NSAlternateContents"/>
+								<object class="NSMutableString" key="NSKeyEquivalent">
+									<characters key="NS.bytes"/>
+								</object>
+								<int key="NSPeriodicDelay">200</int>
+								<int key="NSPeriodicInterval">25</int>
+							</object>
+						</object>
+						<object class="NSButton" id="799567279">
+							<reference key="NSNextResponder" ref="814272478"/>
+							<int key="NSvFlags">301</int>
+							<string key="NSFrame">{{14, 76}, {292, 32}}</string>
+							<reference key="NSSuperview" ref="814272478"/>
+							<reference key="NSWindow"/>
+							<int key="NSTag">2</int>
+							<bool key="NSEnabled">YES</bool>
+							<object class="NSButtonCell" key="NSCell" id="1010617379">
+								<int key="NSCellFlags">67239424</int>
+								<int key="NSCellFlags2">134217728</int>
+								<string key="NSContents">Crash! (Airbag NOT Installed)</string>
+								<reference key="NSSupport" ref="933596199"/>
+								<reference key="NSControlView" ref="799567279"/>
+								<int key="NSTag">2</int>
+								<int key="NSButtonFlags">-2038284033</int>
+								<int key="NSButtonFlags2">1</int>
+								<reference key="NSAlternateImage" ref="933596199"/>
+								<string key="NSAlternateContents"/>
+								<object class="NSMutableString" key="NSKeyEquivalent">
+									<characters key="NS.bytes"/>
+								</object>
+								<int key="NSPeriodicDelay">200</int>
+								<int key="NSPeriodicInterval">25</int>
+							</object>
+						</object>
+						<object class="NSButton" id="27781390">
+							<reference key="NSNextResponder" ref="814272478"/>
+							<int key="NSvFlags">301</int>
+							<string key="NSFrame">{{14, 108}, {292, 32}}</string>
+							<reference key="NSSuperview" ref="814272478"/>
+							<reference key="NSWindow"/>
+							<int key="NSTag">1</int>
+							<bool key="NSEnabled">YES</bool>
+							<object class="NSButtonCell" key="NSCell" id="547901497">
+								<int key="NSCellFlags">67239424</int>
+								<int key="NSCellFlags2">134217728</int>
+								<string key="NSContents">Crash! (Airbag Installed w/10sec delay)</string>
+								<reference key="NSSupport" ref="933596199"/>
+								<reference key="NSControlView" ref="27781390"/>
+								<int key="NSTag">1</int>
+								<int key="NSButtonFlags">-2038284033</int>
+								<int key="NSButtonFlags2">1</int>
+								<reference key="NSAlternateImage" ref="933596199"/>
+								<string key="NSAlternateContents"/>
+								<object class="NSMutableString" key="NSKeyEquivalent">
+									<characters key="NS.bytes"/>
+								</object>
+								<int key="NSPeriodicDelay">200</int>
+								<int key="NSPeriodicInterval">25</int>
+							</object>
+						</object>
+						<object class="NSButton" id="856256540">
+							<reference key="NSNextResponder" ref="814272478"/>
+							<int key="NSvFlags">268</int>
+							<string key="NSFrame">{{14, 44}, {292, 32}}</string>
+							<reference key="NSSuperview" ref="814272478"/>
+							<reference key="NSWindow"/>
+							<bool key="NSEnabled">YES</bool>
+							<object class="NSButtonCell" key="NSCell" id="353736234">
+								<int key="NSCellFlags">67239424</int>
+								<int key="NSCellFlags2">134217728</int>
+								<string key="NSContents">Fork Test</string>
+								<reference key="NSSupport" ref="933596199"/>
+								<reference key="NSControlView" ref="856256540"/>
+								<int key="NSButtonFlags">-2038284033</int>
+								<int key="NSButtonFlags2">129</int>
+								<string key="NSAlternateContents"/>
+								<string key="NSKeyEquivalent"/>
+								<int key="NSPeriodicDelay">200</int>
+								<int key="NSPeriodicInterval">25</int>
+							</object>
+						</object>
+						<object class="NSButton" id="460755987">
+							<reference key="NSNextResponder" ref="814272478"/>
+							<int key="NSvFlags">268</int>
+							<string key="NSFrame">{{14, 12}, {292, 32}}</string>
+							<reference key="NSSuperview" ref="814272478"/>
+							<reference key="NSWindow"/>
+							<bool key="NSEnabled">YES</bool>
+							<object class="NSButtonCell" key="NSCell" id="775425649">
+								<int key="NSCellFlags">67239424</int>
+								<int key="NSCellFlags2">134217728</int>
+								<string key="NSContents">Generate report without crash</string>
+								<reference key="NSSupport" ref="933596199"/>
+								<reference key="NSControlView" ref="460755987"/>
+								<int key="NSButtonFlags">-2038284033</int>
+								<int key="NSButtonFlags2">129</int>
+								<string key="NSAlternateContents"/>
+								<string key="NSKeyEquivalent"/>
+								<int key="NSPeriodicDelay">200</int>
+								<int key="NSPeriodicInterval">25</int>
+							</object>
+						</object>
+					</object>
+					<string key="NSFrameSize">{320, 188}</string>
+					<reference key="NSSuperview"/>
+					<reference key="NSWindow"/>
+				</object>
+				<string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
+				<string key="NSMinSize">{213, 129}</string>
+				<string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
+			</object>
+			<object class="NSMenu" id="695387251">
+				<string key="NSTitle">MainMenu</string>
+				<object class="NSMutableArray" key="NSMenuItems">
+					<bool key="EncodedWithXMLCoder">YES</bool>
+					<object class="NSMenuItem" id="458207250">
+						<reference key="NSMenu" ref="695387251"/>
+						<string key="NSTitle">NewApplication</string>
+						<string key="NSKeyEquiv"/>
+						<int key="NSKeyEquivModMask">1048576</int>
+						<int key="NSMnemonicLoc">2147483647</int>
+						<object class="NSCustomResource" key="NSOnImage" id="419346806">
+							<string key="NSClassName">NSImage</string>
+							<string key="NSResourceName">NSMenuCheckmark</string>
+						</object>
+						<object class="NSCustomResource" key="NSMixedImage" id="290286705">
+							<string key="NSClassName">NSImage</string>
+							<string key="NSResourceName">NSMenuMixedState</string>
+						</object>
+						<string key="NSAction">submenuAction:</string>
+						<object class="NSMenu" key="NSSubmenu" id="753534561">
+							<string key="NSTitle">NewApplication</string>
+							<object class="NSMutableArray" key="NSMenuItems">
+								<bool key="EncodedWithXMLCoder">YES</bool>
+								<object class="NSMenuItem" id="838552093">
+									<reference key="NSMenu" ref="753534561"/>
+									<string key="NSTitle">About NewApplication</string>
+									<string key="NSKeyEquiv"/>
+									<int key="NSMnemonicLoc">2147483647</int>
+									<reference key="NSOnImage" ref="419346806"/>
+									<reference key="NSMixedImage" ref="290286705"/>
+								</object>
+								<object class="NSMenuItem" id="758254482">
+									<reference key="NSMenu" ref="753534561"/>
+									<bool key="NSIsDisabled">YES</bool>
+									<bool key="NSIsSeparator">YES</bool>
+									<string key="NSTitle"/>
+									<string key="NSKeyEquiv"/>
+									<int key="NSKeyEquivModMask">1048576</int>
+									<int key="NSMnemonicLoc">2147483647</int>
+									<reference key="NSOnImage" ref="419346806"/>
+									<reference key="NSMixedImage" ref="290286705"/>
+								</object>
+								<object class="NSMenuItem" id="443649494">
+									<reference key="NSMenu" ref="753534561"/>
+									<string key="NSTitle">Preferences…</string>
+									<string key="NSKeyEquiv">,</string>
+									<int key="NSKeyEquivModMask">1048576</int>
+									<int key="NSMnemonicLoc">2147483647</int>
+									<reference key="NSOnImage" ref="419346806"/>
+									<reference key="NSMixedImage" ref="290286705"/>
+								</object>
+								<object class="NSMenuItem" id="217746140">
+									<reference key="NSMenu" ref="753534561"/>
+									<bool key="NSIsDisabled">YES</bool>
+									<bool key="NSIsSeparator">YES</bool>
+									<string key="NSTitle"/>
+									<string key="NSKeyEquiv"/>
+									<int key="NSKeyEquivModMask">1048576</int>
+									<int key="NSMnemonicLoc">2147483647</int>
+									<reference key="NSOnImage" ref="419346806"/>
+									<reference key="NSMixedImage" ref="290286705"/>
+								</object>
+								<object class="NSMenuItem" id="826764396">
+									<reference key="NSMenu" ref="753534561"/>
+									<string key="NSTitle">Services</string>
+									<string key="NSKeyEquiv"/>
+									<int key="NSKeyEquivModMask">1048576</int>
+									<int key="NSMnemonicLoc">2147483647</int>
+									<reference key="NSOnImage" ref="419346806"/>
+									<reference key="NSMixedImage" ref="290286705"/>
+									<string key="NSAction">submenuAction:</string>
+									<object class="NSMenu" key="NSSubmenu" id="276709607">
+										<object class="NSMutableString" key="NSTitle">
+											<characters key="NS.bytes">Services</characters>
+										</object>
+										<object class="NSMutableArray" key="NSMenuItems">
+											<bool key="EncodedWithXMLCoder">YES</bool>
+										</object>
+										<string key="NSName">_NSServicesMenu</string>
+									</object>
+								</object>
+								<object class="NSMenuItem" id="881859155">
+									<reference key="NSMenu" ref="753534561"/>
+									<bool key="NSIsDisabled">YES</bool>
+									<bool key="NSIsSeparator">YES</bool>
+									<string key="NSTitle"/>
+									<string key="NSKeyEquiv"/>
+									<int key="NSKeyEquivModMask">1048576</int>
+									<int key="NSMnemonicLoc">2147483647</int>
+									<reference key="NSOnImage" ref="419346806"/>
+									<reference key="NSMixedImage" ref="290286705"/>
+								</object>
+								<object class="NSMenuItem" id="104472016">
+									<reference key="NSMenu" ref="753534561"/>
+									<string key="NSTitle">Hide NewApplication</string>
+									<string key="NSKeyEquiv">h</string>
+									<int key="NSKeyEquivModMask">1048576</int>
+									<int key="NSMnemonicLoc">2147483647</int>
+									<reference key="NSOnImage" ref="419346806"/>
+									<reference key="NSMixedImage" ref="290286705"/>
+								</object>
+								<object class="NSMenuItem" id="216168366">
+									<reference key="NSMenu" ref="753534561"/>
+									<string key="NSTitle">Hide Others</string>
+									<string key="NSKeyEquiv">h</string>
+									<int key="NSKeyEquivModMask">1572864</int>
+									<int key="NSMnemonicLoc">2147483647</int>
+									<reference key="NSOnImage" ref="419346806"/>
+									<reference key="NSMixedImage" ref="290286705"/>
+								</object>
+								<object class="NSMenuItem" id="667790509">
+									<reference key="NSMenu" ref="753534561"/>
+									<string key="NSTitle">Show All</string>
+									<string key="NSKeyEquiv"/>
+									<int key="NSKeyEquivModMask">1048576</int>
+									<int key="NSMnemonicLoc">2147483647</int>
+									<reference key="NSOnImage" ref="419346806"/>
+									<reference key="NSMixedImage" ref="290286705"/>
+								</object>
+								<object class="NSMenuItem" id="928933982">
+									<reference key="NSMenu" ref="753534561"/>
+									<bool key="NSIsDisabled">YES</bool>
+									<bool key="NSIsSeparator">YES</bool>
+									<string key="NSTitle"/>
+									<string key="NSKeyEquiv"/>
+									<int key="NSKeyEquivModMask">1048576</int>
+									<int key="NSMnemonicLoc">2147483647</int>
+									<reference key="NSOnImage" ref="419346806"/>
+									<reference key="NSMixedImage" ref="290286705"/>
+								</object>
+								<object class="NSMenuItem" id="887927135">
+									<reference key="NSMenu" ref="753534561"/>
+									<string key="NSTitle">Quit NewApplication</string>
+									<string key="NSKeyEquiv">q</string>
+									<int key="NSKeyEquivModMask">1048576</int>
+									<int key="NSMnemonicLoc">2147483647</int>
+									<reference key="NSOnImage" ref="419346806"/>
+									<reference key="NSMixedImage" ref="290286705"/>
+								</object>
+							</object>
+							<string key="NSName">_NSAppleMenu</string>
+						</object>
+					</object>
+					<object class="NSMenuItem" id="369472335">
+						<reference key="NSMenu" ref="695387251"/>
+						<string key="NSTitle">File</string>
+						<string key="NSKeyEquiv"/>
+						<int key="NSKeyEquivModMask">1048576</int>
+						<int key="NSMnemonicLoc">2147483647</int>
+						<reference key="NSOnImage" ref="419346806"/>
+						<reference key="NSMixedImage" ref="290286705"/>
+						<string key="NSAction">submenuAction:</string>
+						<object class="NSMenu" key="NSSubmenu" id="902982238">
+							<object class="NSMutableString" key="NSTitle">
+								<characters key="NS.bytes">File</characters>
+							</object>
+							<object class="NSMutableArray" key="NSMenuItems">
+								<bool key="EncodedWithXMLCoder">YES</bool>
+								<object class="NSMenuItem" id="660391032">
+									<reference key="NSMenu" ref="902982238"/>
+									<string key="NSTitle">New</string>
+									<string key="NSKeyEquiv">n</string>
+									<int key="NSKeyEquivModMask">1048576</int>
+									<int key="NSMnemonicLoc">2147483647</int>
+									<reference key="NSOnImage" ref="419346806"/>
+									<reference key="NSMixedImage" ref="290286705"/>
+								</object>
+								<object class="NSMenuItem" id="367379562">
+									<reference key="NSMenu" ref="902982238"/>
+									<string key="NSTitle">Open...</string>
+									<string key="NSKeyEquiv">o</string>
+									<int key="NSKeyEquivModMask">1048576</int>
+									<int key="NSMnemonicLoc">2147483647</int>
+									<reference key="NSOnImage" ref="419346806"/>
+									<reference key="NSMixedImage" ref="290286705"/>
+								</object>
+								<object class="NSMenuItem" id="84883275">
+									<reference key="NSMenu" ref="902982238"/>
+									<string key="NSTitle">Open Recent</string>
+									<string key="NSKeyEquiv"/>
+									<int key="NSKeyEquivModMask">1048576</int>
+									<int key="NSMnemonicLoc">2147483647</int>
+									<reference key="NSOnImage" ref="419346806"/>
+									<reference key="NSMixedImage" ref="290286705"/>
+									<string key="NSAction">submenuAction:</string>
+									<object class="NSMenu" key="NSSubmenu" id="693280130">
+										<object class="NSMutableString" key="NSTitle">
+											<characters key="NS.bytes">Open Recent</characters>
+										</object>
+										<object class="NSMutableArray" key="NSMenuItems">
+											<bool key="EncodedWithXMLCoder">YES</bool>
+											<object class="NSMenuItem" id="85018532">
+												<reference key="NSMenu" ref="693280130"/>
+												<string key="NSTitle">Clear Menu</string>
+												<string key="NSKeyEquiv"/>
+												<int key="NSKeyEquivModMask">1048576</int>
+												<int key="NSMnemonicLoc">2147483647</int>
+												<reference key="NSOnImage" ref="419346806"/>
+												<reference key="NSMixedImage" ref="290286705"/>
+											</object>
+										</object>
+										<string key="NSName">_NSRecentDocumentsMenu</string>
+									</object>
+								</object>
+								<object class="NSMenuItem" id="154948703">
+									<reference key="NSMenu" ref="902982238"/>
+									<bool key="NSIsDisabled">YES</bool>
+									<bool key="NSIsSeparator">YES</bool>
+									<string key="NSTitle"/>
+									<string key="NSKeyEquiv"/>
+									<int key="NSKeyEquivModMask">1048576</int>
+									<int key="NSMnemonicLoc">2147483647</int>
+									<reference key="NSOnImage" ref="419346806"/>
+									<reference key="NSMixedImage" ref="290286705"/>
+								</object>
+								<object class="NSMenuItem" id="468594275">
+									<reference key="NSMenu" ref="902982238"/>
+									<string key="NSTitle">Close</string>
+									<string key="NSKeyEquiv">w</string>
+									<int key="NSKeyEquivModMask">1048576</int>
+									<int key="NSMnemonicLoc">2147483647</int>
+									<reference key="NSOnImage" ref="419346806"/>
+									<reference key="NSMixedImage" ref="290286705"/>
+								</object>
+								<object class="NSMenuItem" id="479945444">
+									<reference key="NSMenu" ref="902982238"/>
+									<string key="NSTitle">Save</string>
+									<string key="NSKeyEquiv">s</string>
+									<int key="NSKeyEquivModMask">1048576</int>
+									<int key="NSMnemonicLoc">2147483647</int>
+									<reference key="NSOnImage" ref="419346806"/>
+									<reference key="NSMixedImage" ref="290286705"/>
+								</object>
+								<object class="NSMenuItem" id="976375553">
+									<reference key="NSMenu" ref="902982238"/>
+									<string key="NSTitle">Save As…</string>
+									<string key="NSKeyEquiv">S</string>
+									<int key="NSKeyEquivModMask">1048576</int>
+									<int key="NSMnemonicLoc">2147483647</int>
+									<reference key="NSOnImage" ref="419346806"/>
+									<reference key="NSMixedImage" ref="290286705"/>
+								</object>
+								<object class="NSMenuItem" id="885975128">
+									<reference key="NSMenu" ref="902982238"/>
+									<string key="NSTitle">Revert</string>
+									<string key="NSKeyEquiv"/>
+									<int key="NSMnemonicLoc">2147483647</int>
+									<reference key="NSOnImage" ref="419346806"/>
+									<reference key="NSMixedImage" ref="290286705"/>
+								</object>
+								<object class="NSMenuItem" id="232609393">
+									<reference key="NSMenu" ref="902982238"/>
+									<bool key="NSIsDisabled">YES</bool>
+									<bool key="NSIsSeparator">YES</bool>
+									<string key="NSTitle"/>
+									<string key="NSKeyEquiv"/>
+									<int key="NSKeyEquivModMask">1048576</int>
+									<int key="NSMnemonicLoc">2147483647</int>
+									<reference key="NSOnImage" ref="419346806"/>
+									<reference key="NSMixedImage" ref="290286705"/>
+								</object>
+								<object class="NSMenuItem" id="409810395">
+									<reference key="NSMenu" ref="902982238"/>
+									<string key="NSTitle">Page Setup…</string>
+									<string key="NSKeyEquiv">P</string>
+									<int key="NSKeyEquivModMask">1048576</int>
+									<int key="NSMnemonicLoc">2147483647</int>
+									<reference key="NSOnImage" ref="419346806"/>
+									<reference key="NSMixedImage" ref="290286705"/>
+								</object>
+								<object class="NSMenuItem" id="302505815">
+									<reference key="NSMenu" ref="902982238"/>
+									<string key="NSTitle">Print…</string>
+									<string key="NSKeyEquiv">p</string>
+									<int key="NSKeyEquivModMask">1048576</int>
+									<int key="NSMnemonicLoc">2147483647</int>
+									<reference key="NSOnImage" ref="419346806"/>
+									<reference key="NSMixedImage" ref="290286705"/>
+								</object>
+							</object>
+						</object>
+					</object>
+					<object class="NSMenuItem" id="542216986">
+						<reference key="NSMenu" ref="695387251"/>
+						<string key="NSTitle">Edit</string>
+						<string key="NSKeyEquiv"/>
+						<int key="NSKeyEquivModMask">1048576</int>
+						<int key="NSMnemonicLoc">2147483647</int>
+						<reference key="NSOnImage" ref="419346806"/>
+						<reference key="NSMixedImage" ref="290286705"/>
+						<string key="NSAction">submenuAction:</string>
+						<object class="NSMenu" key="NSSubmenu" id="1053284541">
+							<object class="NSMutableString" key="NSTitle">
+								<characters key="NS.bytes">Edit</characters>
+							</object>
+							<object class="NSMutableArray" key="NSMenuItems">
+								<bool key="EncodedWithXMLCoder">YES</bool>
+								<object class="NSMenuItem" id="284548410">
+									<reference key="NSMenu" ref="1053284541"/>
+									<string key="NSTitle">Undo</string>
+									<string key="NSKeyEquiv">z</string>
+									<int key="NSKeyEquivModMask">1048576</int>
+									<int key="NSMnemonicLoc">2147483647</int>
+									<reference key="NSOnImage" ref="419346806"/>
+									<reference key="NSMixedImage" ref="290286705"/>
+								</object>
+								<object class="NSMenuItem" id="1001272176">
+									<reference key="NSMenu" ref="1053284541"/>
+									<string key="NSTitle">Redo</string>
+									<string key="NSKeyEquiv">Z</string>
+									<int key="NSKeyEquivModMask">1048576</int>
+									<int key="NSMnemonicLoc">2147483647</int>
+									<reference key="NSOnImage" ref="419346806"/>
+									<reference key="NSMixedImage" ref="290286705"/>
+								</object>
+								<object class="NSMenuItem" id="209744238">
+									<reference key="NSMenu" ref="1053284541"/>
+									<bool key="NSIsDisabled">YES</bool>
+									<bool key="NSIsSeparator">YES</bool>
+									<string key="NSTitle"/>
+									<string key="NSKeyEquiv"/>
+									<int key="NSKeyEquivModMask">1048576</int>
+									<int key="NSMnemonicLoc">2147483647</int>
+									<reference key="NSOnImage" ref="419346806"/>
+									<reference key="NSMixedImage" ref="290286705"/>
+								</object>
+								<object class="NSMenuItem" id="909447496">
+									<reference key="NSMenu" ref="1053284541"/>
+									<string key="NSTitle">Cut</string>
+									<string key="NSKeyEquiv">x</string>
+									<int key="NSKeyEquivModMask">1048576</int>
+									<int key="NSMnemonicLoc">2147483647</int>
+									<reference key="NSOnImage" ref="419346806"/>
+									<reference key="NSMixedImage" ref="290286705"/>
+								</object>
+								<object class="NSMenuItem" id="994487277">
+									<reference key="NSMenu" ref="1053284541"/>
+									<string key="NSTitle">Copy</string>
+									<string key="NSKeyEquiv">c</string>
+									<int key="NSKeyEquivModMask">1048576</int>
+									<int key="NSMnemonicLoc">2147483647</int>
+									<reference key="NSOnImage" ref="419346806"/>
+									<reference key="NSMixedImage" ref="290286705"/>
+								</object>
+								<object class="NSMenuItem" id="84012734">
+									<reference key="NSMenu" ref="1053284541"/>
+									<string key="NSTitle">Paste</string>
+									<string key="NSKeyEquiv">v</string>
+									<int key="NSKeyEquivModMask">1048576</int>
+									<int key="NSMnemonicLoc">2147483647</int>
+									<reference key="NSOnImage" ref="419346806"/>
+									<reference key="NSMixedImage" ref="290286705"/>
+								</object>
+								<object class="NSMenuItem" id="182251545">
+									<reference key="NSMenu" ref="1053284541"/>
+									<string key="NSTitle">Paste and Match Style</string>
+									<string key="NSKeyEquiv">V</string>
+									<int key="NSKeyEquivModMask">1572864</int>
+									<int key="NSMnemonicLoc">2147483647</int>
+									<reference key="NSOnImage" ref="419346806"/>
+									<reference key="NSMixedImage" ref="290286705"/>
+								</object>
+								<object class="NSMenuItem" id="512189403">
+									<reference key="NSMenu" ref="1053284541"/>
+									<string key="NSTitle">Delete</string>
+									<string key="NSKeyEquiv"/>
+									<int key="NSKeyEquivModMask">1048576</int>
+									<int key="NSMnemonicLoc">2147483647</int>
+									<reference key="NSOnImage" ref="419346806"/>
+									<reference key="NSMixedImage" ref="290286705"/>
+								</object>
+								<object class="NSMenuItem" id="917620781">
+									<reference key="NSMenu" ref="1053284541"/>
+									<string key="NSTitle">Select All</string>
+									<string key="NSKeyEquiv">a</string>
+									<int key="NSKeyEquivModMask">1048576</int>
+									<int key="NSMnemonicLoc">2147483647</int>
+									<reference key="NSOnImage" ref="419346806"/>
+									<reference key="NSMixedImage" ref="290286705"/>
+								</object>
+								<object class="NSMenuItem" id="431895313">
+									<reference key="NSMenu" ref="1053284541"/>
+									<bool key="NSIsDisabled">YES</bool>
+									<bool key="NSIsSeparator">YES</bool>
+									<string key="NSTitle"/>
+									<string key="NSKeyEquiv"/>
+									<int key="NSKeyEquivModMask">1048576</int>
+									<int key="NSMnemonicLoc">2147483647</int>
+									<reference key="NSOnImage" ref="419346806"/>
+									<reference key="NSMixedImage" ref="290286705"/>
+								</object>
+								<object class="NSMenuItem" id="153501847">
+									<reference key="NSMenu" ref="1053284541"/>
+									<string key="NSTitle">Find</string>
+									<string key="NSKeyEquiv"/>
+									<int key="NSKeyEquivModMask">1048576</int>
+									<int key="NSMnemonicLoc">2147483647</int>
+									<reference key="NSOnImage" ref="419346806"/>
+									<reference key="NSMixedImage" ref="290286705"/>
+									<string key="NSAction">submenuAction:</string>
+									<object class="NSMenu" key="NSSubmenu" id="333484665">
+										<object class="NSMutableString" key="NSTitle">
+											<characters key="NS.bytes">Find</characters>
+										</object>
+										<object class="NSMutableArray" key="NSMenuItems">
+											<bool key="EncodedWithXMLCoder">YES</bool>
+											<object class="NSMenuItem" id="203238834">
+												<reference key="NSMenu" ref="333484665"/>
+												<string key="NSTitle">Find…</string>
+												<string key="NSKeyEquiv">f</string>
+												<int key="NSKeyEquivModMask">1048576</int>
+												<int key="NSMnemonicLoc">2147483647</int>
+												<reference key="NSOnImage" ref="419346806"/>
+												<reference key="NSMixedImage" ref="290286705"/>
+												<int key="NSTag">1</int>
+											</object>
+											<object class="NSMenuItem" id="861312964">
+												<reference key="NSMenu" ref="333484665"/>
+												<string key="NSTitle">Find Next</string>
+												<string key="NSKeyEquiv">g</string>
+												<int key="NSKeyEquivModMask">1048576</int>
+												<int key="NSMnemonicLoc">2147483647</int>
+												<reference key="NSOnImage" ref="419346806"/>
+												<reference key="NSMixedImage" ref="290286705"/>
+												<int key="NSTag">2</int>
+											</object>
+											<object class="NSMenuItem" id="743767160">
+												<reference key="NSMenu" ref="333484665"/>
+												<string key="NSTitle">Find Previous</string>
+												<string key="NSKeyEquiv">G</string>
+												<int key="NSKeyEquivModMask">1048576</int>
+												<int key="NSMnemonicLoc">2147483647</int>
+												<reference key="NSOnImage" ref="419346806"/>
+												<reference key="NSMixedImage" ref="290286705"/>
+												<int key="NSTag">3</int>
+											</object>
+											<object class="NSMenuItem" id="180446588">
+												<reference key="NSMenu" ref="333484665"/>
+												<string key="NSTitle">Use Selection for Find</string>
+												<string key="NSKeyEquiv">e</string>
+												<int key="NSKeyEquivModMask">1048576</int>
+												<int key="NSMnemonicLoc">2147483647</int>
+												<reference key="NSOnImage" ref="419346806"/>
+												<reference key="NSMixedImage" ref="290286705"/>
+												<int key="NSTag">7</int>
+											</object>
+											<object class="NSMenuItem" id="731027425">
+												<reference key="NSMenu" ref="333484665"/>
+												<string key="NSTitle">Jump to Selection</string>
+												<string key="NSKeyEquiv">j</string>
+												<int key="NSKeyEquivModMask">1048576</int>
+												<int key="NSMnemonicLoc">2147483647</int>
+												<reference key="NSOnImage" ref="419346806"/>
+												<reference key="NSMixedImage" ref="290286705"/>
+											</object>
+										</object>
+									</object>
+								</object>
+								<object class="NSMenuItem" id="61602259">
+									<reference key="NSMenu" ref="1053284541"/>
+									<string key="NSTitle">Spelling</string>
+									<string key="NSKeyEquiv"/>
+									<int key="NSKeyEquivModMask">1048576</int>
+									<int key="NSMnemonicLoc">2147483647</int>
+									<reference key="NSOnImage" ref="419346806"/>
+									<reference key="NSMixedImage" ref="290286705"/>
+									<string key="NSAction">submenuAction:</string>
+									<object class="NSMenu" key="NSSubmenu" id="8174285">
+										<string key="NSTitle">Spelling</string>
+										<object class="NSMutableArray" key="NSMenuItems">
+											<bool key="EncodedWithXMLCoder">YES</bool>
+											<object class="NSMenuItem" id="438210660">
+												<reference key="NSMenu" ref="8174285"/>
+												<string key="NSTitle">Spelling…</string>
+												<string key="NSKeyEquiv">:</string>
+												<int key="NSKeyEquivModMask">1048576</int>
+												<int key="NSMnemonicLoc">2147483647</int>
+												<reference key="NSOnImage" ref="419346806"/>
+												<reference key="NSMixedImage" ref="290286705"/>
+											</object>
+											<object class="NSMenuItem" id="102172584">
+												<reference key="NSMenu" ref="8174285"/>
+												<string key="NSTitle">Check Spelling</string>
+												<string key="NSKeyEquiv">;</string>
+												<int key="NSKeyEquivModMask">1048576</int>
+												<int key="NSMnemonicLoc">2147483647</int>
+												<reference key="NSOnImage" ref="419346806"/>
+												<reference key="NSMixedImage" ref="290286705"/>
+											</object>
+											<object class="NSMenuItem" id="540509341">
+												<reference key="NSMenu" ref="8174285"/>
+												<string key="NSTitle">Check Spelling as You Type</string>
+												<string key="NSKeyEquiv"/>
+												<int key="NSKeyEquivModMask">1048576</int>
+												<int key="NSMnemonicLoc">2147483647</int>
+												<reference key="NSOnImage" ref="419346806"/>
+												<reference key="NSMixedImage" ref="290286705"/>
+											</object>
+										</object>
+									</object>
+								</object>
+							</object>
+						</object>
+					</object>
+					<object class="NSMenuItem" id="764068863">
+						<reference key="NSMenu" ref="695387251"/>
+						<string key="NSTitle">Window</string>
+						<string key="NSKeyEquiv"/>
+						<int key="NSKeyEquivModMask">1048576</int>
+						<int key="NSMnemonicLoc">2147483647</int>
+						<reference key="NSOnImage" ref="419346806"/>
+						<reference key="NSMixedImage" ref="290286705"/>
+						<string key="NSAction">submenuAction:</string>
+						<object class="NSMenu" key="NSSubmenu" id="200536676">
+							<object class="NSMutableString" key="NSTitle">
+								<characters key="NS.bytes">Window</characters>
+							</object>
+							<object class="NSMutableArray" key="NSMenuItems">
+								<bool key="EncodedWithXMLCoder">YES</bool>
+								<object class="NSMenuItem" id="683986939">
+									<reference key="NSMenu" ref="200536676"/>
+									<string key="NSTitle">Minimize</string>
+									<string key="NSKeyEquiv">m</string>
+									<int key="NSKeyEquivModMask">1048576</int>
+									<int key="NSMnemonicLoc">2147483647</int>
+									<reference key="NSOnImage" ref="419346806"/>
+									<reference key="NSMixedImage" ref="290286705"/>
+								</object>
+								<object class="NSMenuItem" id="548098734">
+									<reference key="NSMenu" ref="200536676"/>
+									<string key="NSTitle">Zoom</string>
+									<string key="NSKeyEquiv"/>
+									<int key="NSKeyEquivModMask">1048576</int>
+									<int key="NSMnemonicLoc">2147483647</int>
+									<reference key="NSOnImage" ref="419346806"/>
+									<reference key="NSMixedImage" ref="290286705"/>
+								</object>
+								<object class="NSMenuItem" id="297002686">
+									<reference key="NSMenu" ref="200536676"/>
+									<bool key="NSIsDisabled">YES</bool>
+									<bool key="NSIsSeparator">YES</bool>
+									<string key="NSTitle"/>
+									<string key="NSKeyEquiv"/>
+									<int key="NSKeyEquivModMask">1048576</int>
+									<int key="NSMnemonicLoc">2147483647</int>
+									<reference key="NSOnImage" ref="419346806"/>
+									<reference key="NSMixedImage" ref="290286705"/>
+								</object>
+								<object class="NSMenuItem" id="164762492">
+									<reference key="NSMenu" ref="200536676"/>
+									<string key="NSTitle">Bring All to Front</string>
+									<string key="NSKeyEquiv"/>
+									<int key="NSKeyEquivModMask">1048576</int>
+									<int key="NSMnemonicLoc">2147483647</int>
+									<reference key="NSOnImage" ref="419346806"/>
+									<reference key="NSMixedImage" ref="290286705"/>
+								</object>
+							</object>
+							<string key="NSName">_NSWindowsMenu</string>
+						</object>
+					</object>
+					<object class="NSMenuItem" id="599772536">
+						<reference key="NSMenu" ref="695387251"/>
+						<string key="NSTitle">Help</string>
+						<string key="NSKeyEquiv"/>
+						<int key="NSKeyEquivModMask">1048576</int>
+						<int key="NSMnemonicLoc">2147483647</int>
+						<reference key="NSOnImage" ref="419346806"/>
+						<reference key="NSMixedImage" ref="290286705"/>
+						<string key="NSAction">submenuAction:</string>
+						<object class="NSMenu" key="NSSubmenu" id="1066958924">
+							<string key="NSTitle">Help</string>
+							<object class="NSMutableArray" key="NSMenuItems">
+								<bool key="EncodedWithXMLCoder">YES</bool>
+								<object class="NSMenuItem" id="192540884">
+									<reference key="NSMenu" ref="1066958924"/>
+									<string key="NSTitle">NewApplication Help</string>
+									<string key="NSKeyEquiv">?</string>
+									<int key="NSKeyEquivModMask">1048576</int>
+									<int key="NSMnemonicLoc">2147483647</int>
+									<reference key="NSOnImage" ref="419346806"/>
+									<reference key="NSMixedImage" ref="290286705"/>
+								</object>
+							</object>
+						</object>
+					</object>
+				</object>
+				<string key="NSName">_NSMainMenu</string>
+			</object>
+			<object class="NSCustomObject" id="623097029">
+				<string key="NSClassName">Controller</string>
+			</object>
+			<object class="NSWindowTemplate" id="347013037">
+				<int key="NSWindowStyleMask">15</int>
+				<int key="NSWindowBacking">2</int>
+				<string key="NSWindowRect">{{858, 755}, {787, 260}}</string>
+				<int key="NSWTFlags">603979776</int>
+				<string key="NSWindowTitle">Window</string>
+				<string key="NSWindowClass">NSWindow</string>
+				<nil key="NSViewClass"/>
+				<string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
+				<object class="NSView" key="NSWindowView" id="594333702">
+					<reference key="NSNextResponder"/>
+					<int key="NSvFlags">256</int>
+					<object class="NSMutableArray" key="NSSubviews">
+						<bool key="EncodedWithXMLCoder">YES</bool>
+						<object class="NSMatrix" id="891367997">
+							<reference key="NSNextResponder" ref="594333702"/>
+							<int key="NSvFlags">268</int>
+							<string key="NSFrame">{{20, 7}, {645, 79}}</string>
+							<reference key="NSSuperview" ref="594333702"/>
+							<bool key="NSEnabled">YES</bool>
+							<int key="NSNumRows">3</int>
+							<int key="NSNumCols">1</int>
+							<object class="NSMutableArray" key="NSCells">
+								<bool key="EncodedWithXMLCoder">YES</bool>
+								<object class="NSButtonCell" id="410017819">
+									<int key="NSCellFlags">-2080244224</int>
+									<int key="NSCellFlags2">0</int>
+									<string key="NSContents">program crashes during launch because of missing dylib</string>
+									<reference key="NSSupport" ref="933596199"/>
+									<reference key="NSControlView" ref="891367997"/>
+									<int key="NSTag">5</int>
+									<int key="NSButtonFlags">1211912703</int>
+									<int key="NSButtonFlags2">0</int>
+									<object class="NSButtonImageSource" key="NSAlternateImage" id="619763889">
+										<string key="NSImageName">NSRadioButton</string>
+									</object>
+									<string key="NSAlternateContents"/>
+									<string key="NSKeyEquivalent"/>
+									<int key="NSPeriodicDelay">200</int>
+									<int key="NSPeriodicInterval">25</int>
+								</object>
+								<object class="NSButtonCell" id="904578786">
+									<int key="NSCellFlags">67239424</int>
+									<int key="NSCellFlags2">0</int>
+									<string key="NSContents">program crashes after launch</string>
+									<reference key="NSSupport" ref="933596199"/>
+									<reference key="NSControlView" ref="891367997"/>
+									<int key="NSTag">6</int>
+									<int key="NSButtonFlags">1211912703</int>
+									<int key="NSButtonFlags2">0</int>
+									<object class="NSImage" key="NSNormalImage">
+										<int key="NSImageFlags">549453824</int>
+										<string key="NSSize">{18, 18}</string>
+										<object class="NSMutableArray" key="NSReps">
+											<bool key="EncodedWithXMLCoder">YES</bool>
+											<object class="NSArray">
+												<bool key="EncodedWithXMLCoder">YES</bool>
+												<integer value="0"/>
+												<object class="NSBitmapImageRep">
+													<object class="NSData" key="NSTIFFRepresentation">
+														<bytes key="NS.bytes">TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw
+IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/
+29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5
+dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA
+AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG
+AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/
+0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/
+7e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/
+5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/
+3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD
+AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns
+AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/
+6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/
+/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/
+///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl
+YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA
+AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD
+AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu
+AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgEAAAMAAAABABIAAAEB
+AAMAAAABABIAAAECAAMAAAAEAAAFxgEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES
+AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS
+AAMAAAABAAEAAAFTAAMAAAAEAAAFzodzAAcAAAwYAAAF1gAAAAAACAAIAAgACAABAAEAAQABAAAMGGFw
+cGwCAAAAbW50clJHQiBYWVogB9YABAADABMALAASYWNzcEFQUEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAPbWAAEAAAAA0y1hcHBsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAOclhZWgAAASwAAAAUZ1hZWgAAAUAAAAAUYlhZWgAAAVQAAAAUd3RwdAAAAWgAAAAUY2hhZAAA
+AXwAAAAsclRSQwAAAagAAAAOZ1RSQwAAAbgAAAAOYlRSQwAAAcgAAAAOdmNndAAAAdgAAAMSbmRpbgAA
+BOwAAAY+ZGVzYwAACywAAABkZHNjbQAAC5AAAAAubW1vZAAAC8AAAAAoY3BydAAAC+gAAAAtWFlaIAAA
+AAAAAF1KAAA0kQAACCVYWVogAAAAAAAAdCAAALRgAAAjPVhZWiAAAAAAAAAlbAAAFyoAAKfDWFlaIAAA
+AAAAAPNSAAEAAAABFs9zZjMyAAAAAAABDEIAAAXe///zJgAAB5IAAP2R///7ov///aMAAAPcAADAbGN1
+cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEBzQAAY3VydgAAAAAAAAABAc0AAHZjZ3QAAAAAAAAAAAAD
+AQAAAQACBAUGBwkKCw0ODxASExQWFxgaGxweHyAiIyQmJygpKywtLzAxMjM1Njc4OTs8PT5AQUJDREZH
+SElKS0xOT1BRUlNUVVZXWFlaW1xdXl9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gIGCg4SF
+hoeIiYqLjI2Oj5CRkpOUlZaXmJmam5ydnZ6foKGio6SlpqanqKmqq6ytra6vsLGysrO0tba3uLi5uru8
+vL2+v8DBwcLDxMXGxsfIycrKy8zNzs7P0NHS0tPU1dbW19jZ2drb3Nzd3t/g4eLi4+Tl5ufo6enq6+zt
+7u/w8fHy8/T19vf4+fr7/P3+/v8AAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR8gISIjJCUnKCkq
+Ky0uLzAxMzQ1Njc4OTo7PD0/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaWltcXV5fYGFiY2RlZmdo
+aWprbG1ub3BxcnN0dXZ3d3h5ent8fH1+f4CBgoKDhIWGh4iIiYqLjI2Oj5CRkpOUlJWWl5iZmpucnZ2e
+n6ChoqOkpaamp6ipqqusra6vsLCxsrO0tba3uLm5uru8vb6/wMHCw8TFx8jJysvMzc7P0NDR0tPU1dbX
+2Nna29ze3+Dh4uPk5ebn6err7O3u7/Hy8/T19vf5+vv8/f7/AAIDAwQFBgcICQoKCwwNDg8QERITFBUW
+FxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODg5Ojs8PT4+P0BBQkNDREVGR0hJSUpLTE1O
+Tk9QUVJSU1RVVVZXWFhZWltbXF1eXl9gYWFiY2RkZWZnZ2hpaWprbGxtbm5vcHFxcnNzdHV1dnd4eHl6
+ent8fH1+fn+AgYGCg4SEhYaHiImJiouMjY6Oj5CRkpOTlJWWl5iZmZqbnJ2en6ChoqOkpaanqKmqq6yt
+rq+xsrO0tba3uLq7vL2+wMHDxMbHycrMzs/R0tTW19nb3d7g4uTm6Ors7vDy9Pb4+vz+/wAAbmRpbgAA
+AAAAAAY2AACXGgAAVjoAAFPKAACJ3gAAJ8IAABaoAABQDQAAVDkAAiuFAAIZmQABeFEAAwEAAAIAAAAA
+AAEABgANABcAIwAxAEAAUgBlAHsAkwCrAMUA4gD/AR8BPwFhAYUBqgHQAfgCIAJLAncCpQLSAwIDMwNl
+A5gDzgQFBD0EdQSvBOsFKQVnBacF6AYqBm4GtQb8B0UHkgfkCDkIkAjnCT4JmAn0ClAKrQsLC2sLygwq
+DIwM8Q1XDcAOKA6SDv4PbA/bEE0QxBE7EbQSMRKwEzITuRREFNAVYBXxFocXHhfAGGIZBBmsGlQa+RuU
+HC4czh1yHhQeux9jIA0gvCFoIhkizyOJJEEk+SW6JnknOygFKMspkypiKzIsASzXLawuhy9gMD4xGzH8
+MtszvzSgNYY2cjdcOEw5OTorOxs8CD0EPfU+6z/nQOFB2ELUQ9VE00XcRttH5EjxSgBLCUwdTTFOUE9v
+UI9Rt1LdVAVVNlZsV6VY4FohW21ct135X09goGH0Y0tkqGYFZ19oxGova5ptCG54b/BxbnLsdG119Xd/
+eQh6knwqfcV/W4D4gpSEO4Xih4CJKorYjIqOOY/jkZuTWJUOlsyYiZpSnB6d4Z+soX+jWqUvpxOo+6rj
+rMuuwLC4sra0rra0uL+60LzfvwDBHcLdxLXGhchYyi7MCs3lz7rRmtOA1WPXR9kq2xPc/97s4M/iveSn
+5o3obupT7ELuLPAM8fLz0PW396H5f/tZ/T3//wAAAAEAAwALABYAJQA3AE0AZQCBAJ8AwQDlAQsBNQFh
+AZABwQH1AisCZAKfAtwDHANfA6MD6gQ0BH8EzQT1BR0FcAXEBhsGdAbPBy0HXAeMB+4IUgi4CSAJVAmK
+CfYKZArVC0cLgQu8DDIMqw0mDaIOIQ6hDyQPqRAvELgQ/RFDEc8SXRLuE4AUFRSrFUMV3RZ5FxcXthhY
+GPwZoRpIGvEbnBxJHPgdqB5bHw8fxSB9ITch8iKwJDAk8yW3Jn4nRigQKNwpqSp5K0osHCzxLccuoC95
+MFUxMzISMvMz1TS5NaA2hzdxOFw5STo4Oyg8Gj4DPvs/9EDuQepD6ETpRexG8Uf3SP9LFEwhTTBOQE9S
+UGZSklOrVMVV4Vb/WB5ZP1phW4Vcq13SXvthUmJ/Y69k4GYSZ0dofGm0au1tZG6ib+FxInJlc6l073Y2
+d396FXtjfLJ+A39VgKmB/4NWhK+GCYjCiiGLgYzjjkePrJESknuT5Ja8mCuZm5sMnH+d9J9qoOGiWqPV
+pVGmz6eOqE6pzqtRrNSuWq/gsWmy8rR+tgu5Kbq6vE294b93wQ7Cp8RBxd3He8kZyrrLisxbzf/Po9FK
+0vHUm9ZF1/HZn9tO3Cbc/96x4GTiGePQ5YjnQegf6Pzquex27jbv9/G583z0X/VC9wj40Pqa/GX+Mf//
+AAAAAQADAAsAJQA3AE0AZQCBAJ8AwQELATUBYQGQAcEB9QIrAmQCnwLcAxwDXwOjA+oENAR/BM0FHQVw
+BcQGGwZ0Bs8HLQeMB+4IUgi4CSAJign2CmQK1QtHC7wMMgyrDSYNog4hDqEPJA+pEC8QuBFDEl0S7hOA
+FBUUqxVDFnkXFxe2GFgY/BpIGvEbnBxJHPgdqB8PH8UgfSE3IfIjbyQwJPMltydGKBAo3Cp5K0osHC3H
+LqAveTEzMhIy8zS5NaA2hzhcOUk6ODwaPQ4+Az/0QO5C6EPoROlG8Uf3SglLFEwhTkBPUlF7UpJUxVXh
+Vv9ZP1phXKtd0mAlYVJjr2TgZhJofGm0au1tZG6ib+FxInJldO92Nnd/eMl6FXyyfgN/VYCpgf+Er4YJ
+h2WIwoohi4GOR4+skRKSe5PklVCWvJgrmZubDJx/nfSfaqDholqj1aVRps+oTqnOq1Gs1K2Xrlqv4LFp
+svK0frYLt5m5Kbnxurq8Tb3hv3fBDsHawqfEQcUPxd3He8hKyRnKusuKzFvN/87Rz6PQdtFK0vHTxtSb
+1kXXG9fx2MjZn9tO3Cbc/93Y3rHfiuBk4hni9ePQ5KzliOZk50HoH+j86drqueuX7HbtVu427xbv9/DX
+8bnymvN89F/1QvYl9wj37PjQ+bX6mvt//GX9S/4x//8AAGRlc2MAAAAAAAAACkNvbG9yIExDRAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAABtbHVjAAAAAAAAAAEAAAAMZW5VUwAAABIAAAAcAEMAbwBsAG8AcgAgAEwAQwBE
+AABtbW9kAAAAAAAABhAAAJxOAAAAAL5zkQAAAAAAAAAAAAAAAAAAAAAAdGV4dAAAAABDb3B5cmlnaHQg
+QXBwbGUgQ29tcHV0ZXIsIEluYy4sIDIwMDUAAAAAA</bytes>
+													</object>
+												</object>
+											</object>
+										</object>
+										<object class="NSColor" key="NSColor" id="30384615">
+											<int key="NSColorSpace">3</int>
+											<bytes key="NSWhite">MCAwAA</bytes>
+										</object>
+									</object>
+									<reference key="NSAlternateImage" ref="619763889"/>
+									<int key="NSPeriodicDelay">400</int>
+									<int key="NSPeriodicInterval">75</int>
+								</object>
+								<object class="NSButtonCell" id="971445237">
+									<int key="NSCellFlags">67239424</int>
+									<int key="NSCellFlags2">0</int>
+									<string key="NSContents">program crashes in between fork() and exec() (3rd option in first group will happen before crash)</string>
+									<reference key="NSSupport" ref="933596199"/>
+									<reference key="NSControlView" ref="891367997"/>
+									<int key="NSTag">7</int>
+									<int key="NSButtonFlags">1211912703</int>
+									<int key="NSButtonFlags2">0</int>
+									<object class="NSImage" key="NSNormalImage">
+										<int key="NSImageFlags">549453824</int>
+										<string key="NSSize">{18, 18}</string>
+										<object class="NSMutableArray" key="NSReps">
+											<bool key="EncodedWithXMLCoder">YES</bool>
+											<object class="NSArray">
+												<bool key="EncodedWithXMLCoder">YES</bool>
+												<integer value="0"/>
+												<object class="NSBitmapImageRep">
+													<object class="NSData" key="NSTIFFRepresentation">
+														<bytes key="NS.bytes">TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw
+IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/
+29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5
+dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA
+AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG
+AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/
+0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/
+7e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/
+5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/
+3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD
+AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns
+AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/
+6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/
+/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/
+///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl
+YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA
+AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD
+AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu
+AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgEAAAMAAAABABIAAAEB
+AAMAAAABABIAAAECAAMAAAAEAAAFxgEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES
+AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS
+AAMAAAABAAEAAAFTAAMAAAAEAAAFzodzAAcAAAv0AAAF1gAAAAAACAAIAAgACAABAAEAAQABAAAL9GFw
+cGwCAAAAbW50clJHQiBYWVogB9gAAgAMAAoAFgAIYWNzcEFQUEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAPbWAAEAAAAA0y1hcHBs625VECyhxeSV9P9A73pKGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAANclhZWgAAASAAAAAUZ1hZWgAAATQAAAAUYlhZWgAAAUgAAAAUd3RwdAAAAVwAAAAUY2hhZAAA
+AXAAAAAsclRSQwAAAZwAAAAOZ1RSQwAAAawAAAAOYlRSQwAAAbwAAAAOdmNndAAAAcwAAAYSbmRpbgAA
+B+AAAAMOZGVzYwAACvAAAACZY3BydAAAC4wAAABAbW1vZAAAC8wAAAAoWFlaIAAAAAAAAJumAABMVQAA
+ArBYWVogAAAAAAAANWMAAJ/rAAAZsVhZWiAAAAAAAAAlzQAAE9UAALbFWFlaIAAAAAAAAPPYAAEAAAAB
+FghzZjMyAAAAAAABC7cAAAWW///zVwAABykAAP3X///7t////aYAAAPaAADA9mN1cnYAAAAAAAAAAQHN
+AABjdXJ2AAAAAAAAAAEBzQAAY3VydgAAAAAAAAABAc0AAHZjZ3QAAAAAAAAAAAADAQAAAgAAAioENAYA
+B9AJlAtRDQwOshBOEekTgxUVFqMYMRm9GzwcvR4+H7chLiKnJBoliCb3KGIpyCswLJMt9C9WMLIyDjNn
+NL02FTdoOLs6ETtdPKw9+D9DQJBB1kMeRGZFq0bySDRJeEq6S/tNPk59T75Q+lI2U25Uo1XZVwlYOlln
+WpZbwFzsXhdfQWBrYZRiv2PoZRNmPWdqaJhpyGr5bC1tZW6hb+BxLXJ+c9d1OHafeA55gnr5fHR98H9t
+gOuCY4PYhUqGsIgSiWyKuIwBjTqObY+VkLORyJLUk9eU05XFlrWXlZh2mUuaG5rsm6ucbJ0qndqei588
+n9+ghKEqoceiYqL/o5qkLqTDpVml66Z7pwunnKgpqLWpQqnQqlqq5Ktvq/qsg60MrZauIa6qrzOvvbBH
+sNGxXLHnsnKy/7OMtBm0p7U3tci2Wbbrt4C4FrituUa54rqAux27wbxlvQq9rr5Tvvi/ncBAwOXBisIu
+wtPDeMQdxMLFaMYPxrXHXMgEyKzJVcn/yqnLVcwBzK7NXc4Mzr3PcNAk0NnRkdJK0wTTw9SC1UTWCtbR
+153Ybdk+2hfa8dvM3KfdhN5g3zzgGuD34dbiteOV5HblWeY85yHoCOjw6drqxuu27Kbtm+6R74zwivGM
+8pPzn/Sw9cj25/gP+T76e/u//Rr+hP//AAABpANzBRoGsggnCZsLFQx+Dd4PRRCiEf8TYxS0FgoXXRiu
+GgQbTRyZHekfMCB8IcIjCSRSJZUm3SgdKWAqpCvjLSYuZC+lMOIyIDNgNJs12TcTOFA5izrEO/49NT5w
+P6dA30IWQ01Eg0W4Ru9IIElVSoZLt0zmThVPRFBwUZ5SylP5VSRWUVd+WKtZ2lsIXDhdaV6bX89hBWI8
+Y3dktGX0ZzhohGnVayxsiW3sb1Vww3I0c6p1I3aeeBl5k3sMfIR99X9kgM6CLYOJhNyGJodriKGJ1Ir5
+jBuNL45Aj0WQSJE8kjKTGJP+lNyVspaKl1OYHZjlmaSaZJshm9ecj51EnfSepJ9Vn/+gqqFWofyio6NL
+o/CklKU4pdymfacfp8KoYqkDqaWqRarlq4asJ6zHrWiuCq6rr02v77CSsTax27KAsyezzrR3tSG1zLZ5
+tye32LiKuT659rqwu2q8J7zkvaK+YL8ev93AnMFcwhzC3MOdxF7FIMXixqXHaMgryPDJtcp6y0DMB8zO
+zZbOX88oz/PQvtGJ0lbTI9Px1MDVkNZi1zTYB9jb2bDah9te3DjdEt3t3sjfpOB/4VviN+MT4/DkzeWq
+5ojnZuhG6SXqBuro68rsre2S7nfvXvBH8TDyHPMI8/j06fXc9tL3yvjF+cL6w/vG/ND92v7s//8AAAMJ
+BboIZwrCDSsPghG8E/IWHxg5GkgcVB5VIEQiMyQTJeknuimHK00tCy7AMHEyHDO/NV829ziKOhs7pj0s
+PrBALEGmQx9EkkYCR3JI3EpCS6pND05vT89RLVKKU+dVP1aYV+9ZRVqdW/NdSV6hX+thM2JzY61k42YS
+Z0FoZ2mOaq5rz2zsbglvI3A9cVRybHOEdJx1tHbOd+d5A3ofez98Yn2Lfrl/8IEqgmyDsoT8hkuHnYjw
+ikSLmYzsjj+PjJDWkh2TW5SXlceW85gWmTOaSJtVnFqdWp5Pn0SgKaEQoeuiwqOYpGClKaXtpqmnZqgf
+qNKph6o5quWrk6xArOatja41rtevebAcsLyxWbH3spWzL7PJtGO0/LWTtiq2wrdWt+q4f7kUuaW6OLrL
+u1277Lx9vQ69nr4tvry/TL/bwGjA98GGwhPCocMvw77ESsTYxWXF9MZ/xwzHmcgkyKXJJ8mpyizKpMsc
+y5XMDsyFzPjNa83fzlPOxc81z6fQGNCK0PvRbNHe0lDSw9M206vUINSV1QvVhtYA1nzW+Nd61//YhNkK
+2ZnaL9rG213cCty63WveI97d35fgUuEO4crih+NE5ALkw+WD5kXnCufP6JbpYOor6vrry+yd7XbuUe8w
+8BXw+/Ht8uDz4PTl9fj3E/hE+X363vxa/gH//wAAbmRpbgAAAAAAAAMGAACogAAAUwAAADRAAACqQAAA
+JpcAABLbAABQQAAAVEAAAj99AAI1egACxUsAAwB4AAIAAAADAAsAGQAsAEUAYwCHALEA4QEWAVEBkgHZ
+AiYCeQLSAzEDlwQDBHYE7wVvBfUGgwcXB7IIUwj8CawKYgsgC+QMrw2BDloPORAfEQ0SBRMGFBEVJBZA
+F2MYjhm/GvYcMh1xHrMf9SE1ImwjnSTJJfAnFig7KWMqjivBLP4uSC+jMRMymzRBNgo3+joWPGY+8EG8
+RNhIQEvvT95UCFhkXOxhlWZYaylv/XTKeYN+GoKOhxGLqJBOlP6Ztp5voyan1Kx0sQG1c7nGvfHB9cX7
+ygbOFNIi1izaMN4p4hTl7emv7Vbw3vRC93z6iP1g//8AAAAEAA8AIgA9AF8AiQC7APQBNAF8AcwCIgKB
+AuYDUwPHBEIExAVOBd4GdgcUB7oIZgkaCdQKlQteDC0NAw3gDsQPrxCiEZwSnxOpFLsV0xbyGBcZQRpw
+G6Mc2R4RH0oggyG3IuckEyU8JmQniyiyKd0rDCxBLYAuyTAhMYkzBjSbNkw4HToSPDA+fED8Q7FGmUmx
+TPdQaFQAV7tbll+KY5RnrmvTb/p0H3g6fEOAMoQXiASL+I/yk/KX+JwBoA2kHKgrrDuwS7RYuGK8aMBo
+xGvId8yI0J/UuNjS3OvhAOUQ6RftE/EC9OH4rfxi//8AAAABAAYADQAXACUANQBIAF8AeQCWALcA3AEE
+ATABYQGVAc4CDAJOApUC4QMyA4gD5QRGBK4FHAWPBgkGigcQB54IMQjMCW0KFArDC3cMMgzzDbsOiA9a
+EDIRFhIIEwgUFRUvFlYXhxjDGgkbVhyqHgMfYCC8IhIjYSSrJfMnOSiBKc0rHyx7LeQvXTDrMpE0VTY7
+OEg6gjzuP5NCckWCSMJMMk/QU5xXk1u1X/9kcGkGbb5ylneLfJqByoeDjcyUf5t4oo2plLBetru8eMFr
+xirK7c+v1GnZFd2r4iXme+ql7pryUvXD+OT7qv4M//8AAGRlc2MAAAAAAAAAFUhQIExQMzA2NSBDYWxp
+YnJhdGVkAAAAAAAAAAAVAEgAUAAgAEwAUAAzADAANgA1ACAAQwBhAGwAaQBiAHIAYQB0AGUAZAAAAAAV
+SFAgTFAzMDY1IENhbGlicmF0ZWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAHRleHQAAAAAQ29weXJpZ2h0IEFwcGxlIEluYy4sIDIwMDgAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAABtbW9kAAAAAAAAIvAAACaQAAAAAMJtVwAAAAAAAAAAAAAAAAAAAAAAA</bytes>
+													</object>
+												</object>
+											</object>
+										</object>
+										<reference key="NSColor" ref="30384615"/>
+									</object>
+									<reference key="NSAlternateImage" ref="619763889"/>
+									<string key="NSAlternateContents"/>
+									<int key="NSPeriodicDelay">200</int>
+									<int key="NSPeriodicInterval">25</int>
+								</object>
+							</object>
+							<string key="NSCellSize">{645, 25}</string>
+							<string key="NSIntercellSpacing">{4, 2}</string>
+							<int key="NSMatrixFlags">1151868928</int>
+							<string key="NSCellClass">NSActionCell</string>
+							<object class="NSButtonCell" key="NSProtoCell" id="1072218638">
+								<int key="NSCellFlags">-2080244224</int>
+								<int key="NSCellFlags2">0</int>
+								<string key="NSContents">program crashes after launch</string>
+								<reference key="NSSupport" ref="933596199"/>
+								<int key="NSTag">5</int>
+								<int key="NSButtonFlags">1211912703</int>
+								<int key="NSButtonFlags2">0</int>
+								<reference key="NSAlternateImage" ref="619763889"/>
+								<string key="NSAlternateContents"/>
+								<string key="NSKeyEquivalent"/>
+								<int key="NSPeriodicDelay">200</int>
+								<int key="NSPeriodicInterval">25</int>
+							</object>
+							<reference key="NSSelectedCell" ref="410017819"/>
+							<object class="NSColor" key="NSBackgroundColor" id="349124561">
+								<int key="NSColorSpace">6</int>
+								<string key="NSCatalogName">System</string>
+								<string key="NSColorName">controlColor</string>
+								<object class="NSColor" key="NSColor">
+									<int key="NSColorSpace">3</int>
+									<bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
+								</object>
+							</object>
+							<object class="NSColor" key="NSCellBackgroundColor" id="195671423">
+								<int key="NSColorSpace">3</int>
+								<bytes key="NSWhite">MQA</bytes>
+							</object>
+							<reference key="NSFont" ref="933596199"/>
+						</object>
+						<object class="NSMatrix" id="7590393">
+							<reference key="NSNextResponder" ref="594333702"/>
+							<int key="NSvFlags">268</int>
+							<string key="NSFrame">{{20, 170}, {565, 70}}</string>
+							<reference key="NSSuperview" ref="594333702"/>
+							<bool key="NSEnabled">YES</bool>
+							<int key="NSNumRows">3</int>
+							<int key="NSNumCols">1</int>
+							<object class="NSMutableArray" key="NSCells">
+								<bool key="EncodedWithXMLCoder">YES</bool>
+								<object class="NSButtonCell" id="808388382">
+									<int key="NSCellFlags">-2080244224</int>
+									<int key="NSCellFlags2">0</int>
+									<string key="NSContents">Leave breakpad alone before fork</string>
+									<reference key="NSSupport" ref="933596199"/>
+									<reference key="NSControlView" ref="7590393"/>
+									<int key="NSButtonFlags">1211912703</int>
+									<int key="NSButtonFlags2">0</int>
+									<reference key="NSAlternateImage" ref="619763889"/>
+									<string key="NSAlternateContents"/>
+									<string key="NSKeyEquivalent"/>
+									<int key="NSPeriodicDelay">200</int>
+									<int key="NSPeriodicInterval">25</int>
+								</object>
+								<object class="NSButtonCell" id="378736460">
+									<int key="NSCellFlags">67239424</int>
+									<int key="NSCellFlags2">0</int>
+									<string key="NSContents">Uninitialize Breakpad before fork</string>
+									<reference key="NSSupport" ref="933596199"/>
+									<reference key="NSControlView" ref="7590393"/>
+									<int key="NSTag">1</int>
+									<int key="NSButtonFlags">1211912703</int>
+									<int key="NSButtonFlags2">0</int>
+									<object class="NSImage" key="NSNormalImage">
+										<int key="NSImageFlags">549453824</int>
+										<string key="NSSize">{18, 18}</string>
+										<object class="NSMutableArray" key="NSReps">
+											<bool key="EncodedWithXMLCoder">YES</bool>
+											<object class="NSArray">
+												<bool key="EncodedWithXMLCoder">YES</bool>
+												<integer value="0"/>
+												<object class="NSBitmapImageRep">
+													<object class="NSData" key="NSTIFFRepresentation">
+														<bytes key="NS.bytes">TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw
+IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/
+29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5
+dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA
+AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG
+AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/
+0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/
+7e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/
+5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/
+3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD
+AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns
+AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/
+6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/
+/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/
+///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl
+YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA
+AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD
+AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu
+AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgEAAAMAAAABABIAAAEB
+AAMAAAABABIAAAECAAMAAAAEAAAFxgEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES
+AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS
+AAMAAAABAAEAAAFTAAMAAAAEAAAFzodzAAcAAAwYAAAF1gAAAAAACAAIAAgACAABAAEAAQABAAAMGGFw
+cGwCAAAAbW50clJHQiBYWVogB9YABAADABMALAASYWNzcEFQUEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAPbWAAEAAAAA0y1hcHBsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAOclhZWgAAASwAAAAUZ1hZWgAAAUAAAAAUYlhZWgAAAVQAAAAUd3RwdAAAAWgAAAAUY2hhZAAA
+AXwAAAAsclRSQwAAAagAAAAOZ1RSQwAAAbgAAAAOYlRSQwAAAcgAAAAOdmNndAAAAdgAAAMSbmRpbgAA
+BOwAAAY+ZGVzYwAACywAAABkZHNjbQAAC5AAAAAubW1vZAAAC8AAAAAoY3BydAAAC+gAAAAtWFlaIAAA
+AAAAAF1KAAA0kQAACCVYWVogAAAAAAAAdCAAALRgAAAjPVhZWiAAAAAAAAAlbAAAFyoAAKfDWFlaIAAA
+AAAAAPNSAAEAAAABFs9zZjMyAAAAAAABDEIAAAXe///zJgAAB5IAAP2R///7ov///aMAAAPcAADAbGN1
+cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEBzQAAY3VydgAAAAAAAAABAc0AAHZjZ3QAAAAAAAAAAAAD
+AQAAAQACBAUGBwkKCw0ODxASExQWFxgaGxweHyAiIyQmJygpKywtLzAxMjM1Njc4OTs8PT5AQUJDREZH
+SElKS0xOT1BRUlNUVVZXWFlaW1xdXl9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gIGCg4SF
+hoeIiYqLjI2Oj5CRkpOUlZaXmJmam5ydnZ6foKGio6SlpqanqKmqq6ytra6vsLGysrO0tba3uLi5uru8
+vL2+v8DBwcLDxMXGxsfIycrKy8zNzs7P0NHS0tPU1dbW19jZ2drb3Nzd3t/g4eLi4+Tl5ufo6enq6+zt
+7u/w8fHy8/T19vf4+fr7/P3+/v8AAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR8gISIjJCUnKCkq
+Ky0uLzAxMzQ1Njc4OTo7PD0/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaWltcXV5fYGFiY2RlZmdo
+aWprbG1ub3BxcnN0dXZ3d3h5ent8fH1+f4CBgoKDhIWGh4iIiYqLjI2Oj5CRkpOUlJWWl5iZmpucnZ2e
+n6ChoqOkpaamp6ipqqusra6vsLCxsrO0tba3uLm5uru8vb6/wMHCw8TFx8jJysvMzc7P0NDR0tPU1dbX
+2Nna29ze3+Dh4uPk5ebn6err7O3u7/Hy8/T19vf5+vv8/f7/AAIDAwQFBgcICQoKCwwNDg8QERITFBUW
+FxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODg5Ojs8PT4+P0BBQkNDREVGR0hJSUpLTE1O
+Tk9QUVJSU1RVVVZXWFhZWltbXF1eXl9gYWFiY2RkZWZnZ2hpaWprbGxtbm5vcHFxcnNzdHV1dnd4eHl6
+ent8fH1+fn+AgYGCg4SEhYaHiImJiouMjY6Oj5CRkpOTlJWWl5iZmZqbnJ2en6ChoqOkpaanqKmqq6yt
+rq+xsrO0tba3uLq7vL2+wMHDxMbHycrMzs/R0tTW19nb3d7g4uTm6Ors7vDy9Pb4+vz+/wAAbmRpbgAA
+AAAAAAY2AACXGgAAVjoAAFPKAACJ3gAAJ8IAABaoAABQDQAAVDkAAiuFAAIZmQABeFEAAwEAAAIAAAAA
+AAEABgANABcAIwAxAEAAUgBlAHsAkwCrAMUA4gD/AR8BPwFhAYUBqgHQAfgCIAJLAncCpQLSAwIDMwNl
+A5gDzgQFBD0EdQSvBOsFKQVnBacF6AYqBm4GtQb8B0UHkgfkCDkIkAjnCT4JmAn0ClAKrQsLC2sLygwq
+DIwM8Q1XDcAOKA6SDv4PbA/bEE0QxBE7EbQSMRKwEzITuRREFNAVYBXxFocXHhfAGGIZBBmsGlQa+RuU
+HC4czh1yHhQeux9jIA0gvCFoIhkizyOJJEEk+SW6JnknOygFKMspkypiKzIsASzXLawuhy9gMD4xGzH8
+MtszvzSgNYY2cjdcOEw5OTorOxs8CD0EPfU+6z/nQOFB2ELUQ9VE00XcRttH5EjxSgBLCUwdTTFOUE9v
+UI9Rt1LdVAVVNlZsV6VY4FohW21ct135X09goGH0Y0tkqGYFZ19oxGova5ptCG54b/BxbnLsdG119Xd/
+eQh6knwqfcV/W4D4gpSEO4Xih4CJKorYjIqOOY/jkZuTWJUOlsyYiZpSnB6d4Z+soX+jWqUvpxOo+6rj
+rMuuwLC4sra0rra0uL+60LzfvwDBHcLdxLXGhchYyi7MCs3lz7rRmtOA1WPXR9kq2xPc/97s4M/iveSn
+5o3obupT7ELuLPAM8fLz0PW396H5f/tZ/T3//wAAAAEAAwALABYAJQA3AE0AZQCBAJ8AwQDlAQsBNQFh
+AZABwQH1AisCZAKfAtwDHANfA6MD6gQ0BH8EzQT1BR0FcAXEBhsGdAbPBy0HXAeMB+4IUgi4CSAJVAmK
+CfYKZArVC0cLgQu8DDIMqw0mDaIOIQ6hDyQPqRAvELgQ/RFDEc8SXRLuE4AUFRSrFUMV3RZ5FxcXthhY
+GPwZoRpIGvEbnBxJHPgdqB5bHw8fxSB9ITch8iKwJDAk8yW3Jn4nRigQKNwpqSp5K0osHCzxLccuoC95
+MFUxMzISMvMz1TS5NaA2hzdxOFw5STo4Oyg8Gj4DPvs/9EDuQepD6ETpRexG8Uf3SP9LFEwhTTBOQE9S
+UGZSklOrVMVV4Vb/WB5ZP1phW4Vcq13SXvthUmJ/Y69k4GYSZ0dofGm0au1tZG6ib+FxInJlc6l073Y2
+d396FXtjfLJ+A39VgKmB/4NWhK+GCYjCiiGLgYzjjkePrJESknuT5Ja8mCuZm5sMnH+d9J9qoOGiWqPV
+pVGmz6eOqE6pzqtRrNSuWq/gsWmy8rR+tgu5Kbq6vE294b93wQ7Cp8RBxd3He8kZyrrLisxbzf/Po9FK
+0vHUm9ZF1/HZn9tO3Cbc/96x4GTiGePQ5YjnQegf6Pzquex27jbv9/G583z0X/VC9wj40Pqa/GX+Mf//
+AAAAAQADAAsAJQA3AE0AZQCBAJ8AwQELATUBYQGQAcEB9QIrAmQCnwLcAxwDXwOjA+oENAR/BM0FHQVw
+BcQGGwZ0Bs8HLQeMB+4IUgi4CSAJign2CmQK1QtHC7wMMgyrDSYNog4hDqEPJA+pEC8QuBFDEl0S7hOA
+FBUUqxVDFnkXFxe2GFgY/BpIGvEbnBxJHPgdqB8PH8UgfSE3IfIjbyQwJPMltydGKBAo3Cp5K0osHC3H
+LqAveTEzMhIy8zS5NaA2hzhcOUk6ODwaPQ4+Az/0QO5C6EPoROlG8Uf3SglLFEwhTkBPUlF7UpJUxVXh
+Vv9ZP1phXKtd0mAlYVJjr2TgZhJofGm0au1tZG6ib+FxInJldO92Nnd/eMl6FXyyfgN/VYCpgf+Er4YJ
+h2WIwoohi4GOR4+skRKSe5PklVCWvJgrmZubDJx/nfSfaqDholqj1aVRps+oTqnOq1Gs1K2Xrlqv4LFp
+svK0frYLt5m5Kbnxurq8Tb3hv3fBDsHawqfEQcUPxd3He8hKyRnKusuKzFvN/87Rz6PQdtFK0vHTxtSb
+1kXXG9fx2MjZn9tO3Cbc/93Y3rHfiuBk4hni9ePQ5KzliOZk50HoH+j86drqueuX7HbtVu427xbv9/DX
+8bnymvN89F/1QvYl9wj37PjQ+bX6mvt//GX9S/4x//8AAGRlc2MAAAAAAAAACkNvbG9yIExDRAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAABtbHVjAAAAAAAAAAEAAAAMZW5VUwAAABIAAAAcAEMAbwBsAG8AcgAgAEwAQwBE
+AABtbW9kAAAAAAAABhAAAJxOAAAAAL5zkQAAAAAAAAAAAAAAAAAAAAAAdGV4dAAAAABDb3B5cmlnaHQg
+QXBwbGUgQ29tcHV0ZXIsIEluYy4sIDIwMDUAAAAAA</bytes>
+													</object>
+												</object>
+											</object>
+										</object>
+										<reference key="NSColor" ref="30384615"/>
+									</object>
+									<reference key="NSAlternateImage" ref="619763889"/>
+									<int key="NSPeriodicDelay">400</int>
+									<int key="NSPeriodicInterval">75</int>
+								</object>
+								<object class="NSButtonCell" id="251439646">
+									<int key="NSCellFlags">67239424</int>
+									<int key="NSCellFlags2">0</int>
+									<string key="NSContents">Call task_set_exception_port with null exception port in child process before exec</string>
+									<reference key="NSSupport" ref="933596199"/>
+									<reference key="NSControlView" ref="7590393"/>
+									<int key="NSTag">2</int>
+									<int key="NSButtonFlags">1211912703</int>
+									<int key="NSButtonFlags2">0</int>
+									<object class="NSImage" key="NSNormalImage">
+										<int key="NSImageFlags">549453824</int>
+										<string key="NSSize">{18, 18}</string>
+										<object class="NSMutableArray" key="NSReps">
+											<bool key="EncodedWithXMLCoder">YES</bool>
+											<object class="NSArray">
+												<bool key="EncodedWithXMLCoder">YES</bool>
+												<integer value="0"/>
+												<object class="NSBitmapImageRep">
+													<object class="NSData" key="NSTIFFRepresentation">
+														<bytes key="NS.bytes">TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw
+IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/
+29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5
+dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA
+AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG
+AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/
+0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/
+7e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/
+5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/
+3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD
+AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns
+AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/
+6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/
+/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/
+///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl
+YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA
+AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD
+AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu
+AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgEAAAMAAAABABIAAAEB
+AAMAAAABABIAAAECAAMAAAAEAAAFxgEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES
+AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS
+AAMAAAABAAEAAAFTAAMAAAAEAAAFzodzAAcAAAv0AAAF1gAAAAAACAAIAAgACAABAAEAAQABAAAL9GFw
+cGwCAAAAbW50clJHQiBYWVogB9gAAgAMAAoAFgAIYWNzcEFQUEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAPbWAAEAAAAA0y1hcHBs625VECyhxeSV9P9A73pKGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAANclhZWgAAASAAAAAUZ1hZWgAAATQAAAAUYlhZWgAAAUgAAAAUd3RwdAAAAVwAAAAUY2hhZAAA
+AXAAAAAsclRSQwAAAZwAAAAOZ1RSQwAAAawAAAAOYlRSQwAAAbwAAAAOdmNndAAAAcwAAAYSbmRpbgAA
+B+AAAAMOZGVzYwAACvAAAACZY3BydAAAC4wAAABAbW1vZAAAC8wAAAAoWFlaIAAAAAAAAJumAABMVQAA
+ArBYWVogAAAAAAAANWMAAJ/rAAAZsVhZWiAAAAAAAAAlzQAAE9UAALbFWFlaIAAAAAAAAPPYAAEAAAAB
+FghzZjMyAAAAAAABC7cAAAWW///zVwAABykAAP3X///7t////aYAAAPaAADA9mN1cnYAAAAAAAAAAQHN
+AABjdXJ2AAAAAAAAAAEBzQAAY3VydgAAAAAAAAABAc0AAHZjZ3QAAAAAAAAAAAADAQAAAgAAAioENAYA
+B9AJlAtRDQwOshBOEekTgxUVFqMYMRm9GzwcvR4+H7chLiKnJBoliCb3KGIpyCswLJMt9C9WMLIyDjNn
+NL02FTdoOLs6ETtdPKw9+D9DQJBB1kMeRGZFq0bySDRJeEq6S/tNPk59T75Q+lI2U25Uo1XZVwlYOlln
+WpZbwFzsXhdfQWBrYZRiv2PoZRNmPWdqaJhpyGr5bC1tZW6hb+BxLXJ+c9d1OHafeA55gnr5fHR98H9t
+gOuCY4PYhUqGsIgSiWyKuIwBjTqObY+VkLORyJLUk9eU05XFlrWXlZh2mUuaG5rsm6ucbJ0qndqei588
+n9+ghKEqoceiYqL/o5qkLqTDpVml66Z7pwunnKgpqLWpQqnQqlqq5Ktvq/qsg60MrZauIa6qrzOvvbBH
+sNGxXLHnsnKy/7OMtBm0p7U3tci2Wbbrt4C4FrituUa54rqAux27wbxlvQq9rr5Tvvi/ncBAwOXBisIu
+wtPDeMQdxMLFaMYPxrXHXMgEyKzJVcn/yqnLVcwBzK7NXc4Mzr3PcNAk0NnRkdJK0wTTw9SC1UTWCtbR
+153Ybdk+2hfa8dvM3KfdhN5g3zzgGuD34dbiteOV5HblWeY85yHoCOjw6drqxuu27Kbtm+6R74zwivGM
+8pPzn/Sw9cj25/gP+T76e/u//Rr+hP//AAABpANzBRoGsggnCZsLFQx+Dd4PRRCiEf8TYxS0FgoXXRiu
+GgQbTRyZHekfMCB8IcIjCSRSJZUm3SgdKWAqpCvjLSYuZC+lMOIyIDNgNJs12TcTOFA5izrEO/49NT5w
+P6dA30IWQ01Eg0W4Ru9IIElVSoZLt0zmThVPRFBwUZ5SylP5VSRWUVd+WKtZ2lsIXDhdaV6bX89hBWI8
+Y3dktGX0ZzhohGnVayxsiW3sb1Vww3I0c6p1I3aeeBl5k3sMfIR99X9kgM6CLYOJhNyGJodriKGJ1Ir5
+jBuNL45Aj0WQSJE8kjKTGJP+lNyVspaKl1OYHZjlmaSaZJshm9ecj51EnfSepJ9Vn/+gqqFWofyio6NL
+o/CklKU4pdymfacfp8KoYqkDqaWqRarlq4asJ6zHrWiuCq6rr02v77CSsTax27KAsyezzrR3tSG1zLZ5
+tye32LiKuT659rqwu2q8J7zkvaK+YL8ev93AnMFcwhzC3MOdxF7FIMXixqXHaMgryPDJtcp6y0DMB8zO
+zZbOX88oz/PQvtGJ0lbTI9Px1MDVkNZi1zTYB9jb2bDah9te3DjdEt3t3sjfpOB/4VviN+MT4/DkzeWq
+5ojnZuhG6SXqBuro68rsre2S7nfvXvBH8TDyHPMI8/j06fXc9tL3yvjF+cL6w/vG/ND92v7s//8AAAMJ
+BboIZwrCDSsPghG8E/IWHxg5GkgcVB5VIEQiMyQTJeknuimHK00tCy7AMHEyHDO/NV829ziKOhs7pj0s
+PrBALEGmQx9EkkYCR3JI3EpCS6pND05vT89RLVKKU+dVP1aYV+9ZRVqdW/NdSV6hX+thM2JzY61k42YS
+Z0FoZ2mOaq5rz2zsbglvI3A9cVRybHOEdJx1tHbOd+d5A3ofez98Yn2Lfrl/8IEqgmyDsoT8hkuHnYjw
+ikSLmYzsjj+PjJDWkh2TW5SXlceW85gWmTOaSJtVnFqdWp5Pn0SgKaEQoeuiwqOYpGClKaXtpqmnZqgf
+qNKph6o5quWrk6xArOatja41rtevebAcsLyxWbH3spWzL7PJtGO0/LWTtiq2wrdWt+q4f7kUuaW6OLrL
+u1277Lx9vQ69nr4tvry/TL/bwGjA98GGwhPCocMvw77ESsTYxWXF9MZ/xwzHmcgkyKXJJ8mpyizKpMsc
+y5XMDsyFzPjNa83fzlPOxc81z6fQGNCK0PvRbNHe0lDSw9M206vUINSV1QvVhtYA1nzW+Nd61//YhNkK
+2ZnaL9rG213cCty63WveI97d35fgUuEO4crih+NE5ALkw+WD5kXnCufP6JbpYOor6vrry+yd7XbuUe8w
+8BXw+/Ht8uDz4PTl9fj3E/hE+X363vxa/gH//wAAbmRpbgAAAAAAAAMGAACogAAAUwAAADRAAACqQAAA
+JpcAABLbAABQQAAAVEAAAj99AAI1egACxUsAAwB4AAIAAAADAAsAGQAsAEUAYwCHALEA4QEWAVEBkgHZ
+AiYCeQLSAzEDlwQDBHYE7wVvBfUGgwcXB7IIUwj8CawKYgsgC+QMrw2BDloPORAfEQ0SBRMGFBEVJBZA
+F2MYjhm/GvYcMh1xHrMf9SE1ImwjnSTJJfAnFig7KWMqjivBLP4uSC+jMRMymzRBNgo3+joWPGY+8EG8
+RNhIQEvvT95UCFhkXOxhlWZYaylv/XTKeYN+GoKOhxGLqJBOlP6Ztp5voyan1Kx0sQG1c7nGvfHB9cX7
+ygbOFNIi1izaMN4p4hTl7emv7Vbw3vRC93z6iP1g//8AAAAEAA8AIgA9AF8AiQC7APQBNAF8AcwCIgKB
+AuYDUwPHBEIExAVOBd4GdgcUB7oIZgkaCdQKlQteDC0NAw3gDsQPrxCiEZwSnxOpFLsV0xbyGBcZQRpw
+G6Mc2R4RH0oggyG3IuckEyU8JmQniyiyKd0rDCxBLYAuyTAhMYkzBjSbNkw4HToSPDA+fED8Q7FGmUmx
+TPdQaFQAV7tbll+KY5RnrmvTb/p0H3g6fEOAMoQXiASL+I/yk/KX+JwBoA2kHKgrrDuwS7RYuGK8aMBo
+xGvId8yI0J/UuNjS3OvhAOUQ6RftE/EC9OH4rfxi//8AAAABAAYADQAXACUANQBIAF8AeQCWALcA3AEE
+ATABYQGVAc4CDAJOApUC4QMyA4gD5QRGBK4FHAWPBgkGigcQB54IMQjMCW0KFArDC3cMMgzzDbsOiA9a
+EDIRFhIIEwgUFRUvFlYXhxjDGgkbVhyqHgMfYCC8IhIjYSSrJfMnOSiBKc0rHyx7LeQvXTDrMpE0VTY7
+OEg6gjzuP5NCckWCSMJMMk/QU5xXk1u1X/9kcGkGbb5ylneLfJqByoeDjcyUf5t4oo2plLBetru8eMFr
+xirK7c+v1GnZFd2r4iXme+ql7pryUvXD+OT7qv4M//8AAGRlc2MAAAAAAAAAFUhQIExQMzA2NSBDYWxp
+YnJhdGVkAAAAAAAAAAAVAEgAUAAgAEwAUAAzADAANgA1ACAAQwBhAGwAaQBiAHIAYQB0AGUAZAAAAAAV
+SFAgTFAzMDY1IENhbGlicmF0ZWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAHRleHQAAAAAQ29weXJpZ2h0IEFwcGxlIEluYy4sIDIwMDgAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAABtbW9kAAAAAAAAIvAAACaQAAAAAMJtVwAAAAAAAAAAAAAAAAAAAAAAA</bytes>
+													</object>
+												</object>
+											</object>
+										</object>
+										<reference key="NSColor" ref="30384615"/>
+									</object>
+									<reference key="NSAlternateImage" ref="619763889"/>
+									<int key="NSPeriodicDelay">400</int>
+									<int key="NSPeriodicInterval">75</int>
+								</object>
+							</object>
+							<string key="NSCellSize">{565, 22}</string>
+							<string key="NSIntercellSpacing">{4, 2}</string>
+							<int key="NSMatrixFlags">1151868928</int>
+							<string key="NSCellClass">NSActionCell</string>
+							<object class="NSButtonCell" key="NSProtoCell" id="773902463">
+								<int key="NSCellFlags">67239424</int>
+								<int key="NSCellFlags2">0</int>
+								<string key="NSContents">Radio</string>
+								<reference key="NSSupport" ref="933596199"/>
+								<int key="NSButtonFlags">1211912703</int>
+								<int key="NSButtonFlags2">0</int>
+								<object class="NSImage" key="NSNormalImage">
+									<int key="NSImageFlags">549453824</int>
+									<string key="NSSize">{18, 18}</string>
+									<object class="NSMutableArray" key="NSReps">
+										<bool key="EncodedWithXMLCoder">YES</bool>
+										<object class="NSArray">
+											<bool key="EncodedWithXMLCoder">YES</bool>
+											<integer value="0"/>
+											<object class="NSBitmapImageRep">
+												<object class="NSData" key="NSTIFFRepresentation">
+													<bytes key="NS.bytes">TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw
+IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/
+29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5
+dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA
+AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG
+AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/
+0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/
+7e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/
+5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/
+3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD
+AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns
+AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/
+6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/
+/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/
+///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl
+YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA
+AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD
+AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu
+AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQEAAAMAAAABABIAAAEB
+AAMAAAABABIAAAECAAMAAAAEAAAFugEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES
+AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS
+AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
+												</object>
+											</object>
+										</object>
+									</object>
+									<reference key="NSColor" ref="30384615"/>
+								</object>
+								<reference key="NSAlternateImage" ref="619763889"/>
+								<int key="NSPeriodicDelay">400</int>
+								<int key="NSPeriodicInterval">75</int>
+							</object>
+							<reference key="NSSelectedCell" ref="808388382"/>
+							<reference key="NSBackgroundColor" ref="349124561"/>
+							<reference key="NSCellBackgroundColor" ref="195671423"/>
+							<reference key="NSFont" ref="933596199"/>
+						</object>
+						<object class="NSMatrix" id="1050951576">
+							<reference key="NSNextResponder" ref="594333702"/>
+							<int key="NSvFlags">268</int>
+							<string key="NSFrame">{{20, 104}, {565, 38}}</string>
+							<reference key="NSSuperview" ref="594333702"/>
+							<bool key="NSEnabled">YES</bool>
+							<int key="NSNumRows">2</int>
+							<int key="NSNumCols">1</int>
+							<object class="NSMutableArray" key="NSCells">
+								<bool key="EncodedWithXMLCoder">YES</bool>
+								<object class="NSButtonCell" id="943458284">
+									<int key="NSCellFlags">-2080244224</int>
+									<int key="NSCellFlags2">0</int>
+									<string key="NSContents">fork()</string>
+									<reference key="NSSupport" ref="933596199"/>
+									<reference key="NSControlView" ref="1050951576"/>
+									<int key="NSTag">3</int>
+									<int key="NSButtonFlags">1211912703</int>
+									<int key="NSButtonFlags2">0</int>
+									<reference key="NSAlternateImage" ref="619763889"/>
+									<string key="NSAlternateContents"/>
+									<string key="NSKeyEquivalent"/>
+									<int key="NSPeriodicDelay">200</int>
+									<int key="NSPeriodicInterval">25</int>
+								</object>
+								<object class="NSButtonCell" id="69061500">
+									<int key="NSCellFlags">67239424</int>
+									<int key="NSCellFlags2">0</int>
+									<string key="NSContents">vfork()</string>
+									<reference key="NSSupport" ref="933596199"/>
+									<reference key="NSControlView" ref="1050951576"/>
+									<int key="NSTag">4</int>
+									<int key="NSButtonFlags">1211912703</int>
+									<int key="NSButtonFlags2">0</int>
+									<object class="NSImage" key="NSNormalImage">
+										<int key="NSImageFlags">549453824</int>
+										<string key="NSSize">{18, 18}</string>
+										<object class="NSMutableArray" key="NSReps">
+											<bool key="EncodedWithXMLCoder">YES</bool>
+											<object class="NSArray">
+												<bool key="EncodedWithXMLCoder">YES</bool>
+												<integer value="0"/>
+												<object class="NSBitmapImageRep">
+													<object class="NSData" key="NSTIFFRepresentation">
+														<bytes key="NS.bytes">TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw
+IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/
+29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5
+dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA
+AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG
+AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/
+0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/
+7e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/
+5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/
+3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD
+AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns
+AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/
+6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/
+/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/
+///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl
+YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA
+AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD
+AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu
+AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgEAAAMAAAABABIAAAEB
+AAMAAAABABIAAAECAAMAAAAEAAAFxgEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES
+AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS
+AAMAAAABAAEAAAFTAAMAAAAEAAAFzodzAAcAAAwYAAAF1gAAAAAACAAIAAgACAABAAEAAQABAAAMGGFw
+cGwCAAAAbW50clJHQiBYWVogB9YABAADABMALAASYWNzcEFQUEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAPbWAAEAAAAA0y1hcHBsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAOclhZWgAAASwAAAAUZ1hZWgAAAUAAAAAUYlhZWgAAAVQAAAAUd3RwdAAAAWgAAAAUY2hhZAAA
+AXwAAAAsclRSQwAAAagAAAAOZ1RSQwAAAbgAAAAOYlRSQwAAAcgAAAAOdmNndAAAAdgAAAMSbmRpbgAA
+BOwAAAY+ZGVzYwAACywAAABkZHNjbQAAC5AAAAAubW1vZAAAC8AAAAAoY3BydAAAC+gAAAAtWFlaIAAA
+AAAAAF1KAAA0kQAACCVYWVogAAAAAAAAdCAAALRgAAAjPVhZWiAAAAAAAAAlbAAAFyoAAKfDWFlaIAAA
+AAAAAPNSAAEAAAABFs9zZjMyAAAAAAABDEIAAAXe///zJgAAB5IAAP2R///7ov///aMAAAPcAADAbGN1
+cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEBzQAAY3VydgAAAAAAAAABAc0AAHZjZ3QAAAAAAAAAAAAD
+AQAAAQACBAUGBwkKCw0ODxASExQWFxgaGxweHyAiIyQmJygpKywtLzAxMjM1Njc4OTs8PT5AQUJDREZH
+SElKS0xOT1BRUlNUVVZXWFlaW1xdXl9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gIGCg4SF
+hoeIiYqLjI2Oj5CRkpOUlZaXmJmam5ydnZ6foKGio6SlpqanqKmqq6ytra6vsLGysrO0tba3uLi5uru8
+vL2+v8DBwcLDxMXGxsfIycrKy8zNzs7P0NHS0tPU1dbW19jZ2drb3Nzd3t/g4eLi4+Tl5ufo6enq6+zt
+7u/w8fHy8/T19vf4+fr7/P3+/v8AAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR8gISIjJCUnKCkq
+Ky0uLzAxMzQ1Njc4OTo7PD0/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaWltcXV5fYGFiY2RlZmdo
+aWprbG1ub3BxcnN0dXZ3d3h5ent8fH1+f4CBgoKDhIWGh4iIiYqLjI2Oj5CRkpOUlJWWl5iZmpucnZ2e
+n6ChoqOkpaamp6ipqqusra6vsLCxsrO0tba3uLm5uru8vb6/wMHCw8TFx8jJysvMzc7P0NDR0tPU1dbX
+2Nna29ze3+Dh4uPk5ebn6err7O3u7/Hy8/T19vf5+vv8/f7/AAIDAwQFBgcICQoKCwwNDg8QERITFBUW
+FxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODg5Ojs8PT4+P0BBQkNDREVGR0hJSUpLTE1O
+Tk9QUVJSU1RVVVZXWFhZWltbXF1eXl9gYWFiY2RkZWZnZ2hpaWprbGxtbm5vcHFxcnNzdHV1dnd4eHl6
+ent8fH1+fn+AgYGCg4SEhYaHiImJiouMjY6Oj5CRkpOTlJWWl5iZmZqbnJ2en6ChoqOkpaanqKmqq6yt
+rq+xsrO0tba3uLq7vL2+wMHDxMbHycrMzs/R0tTW19nb3d7g4uTm6Ors7vDy9Pb4+vz+/wAAbmRpbgAA
+AAAAAAY2AACXGgAAVjoAAFPKAACJ3gAAJ8IAABaoAABQDQAAVDkAAiuFAAIZmQABeFEAAwEAAAIAAAAA
+AAEABgANABcAIwAxAEAAUgBlAHsAkwCrAMUA4gD/AR8BPwFhAYUBqgHQAfgCIAJLAncCpQLSAwIDMwNl
+A5gDzgQFBD0EdQSvBOsFKQVnBacF6AYqBm4GtQb8B0UHkgfkCDkIkAjnCT4JmAn0ClAKrQsLC2sLygwq
+DIwM8Q1XDcAOKA6SDv4PbA/bEE0QxBE7EbQSMRKwEzITuRREFNAVYBXxFocXHhfAGGIZBBmsGlQa+RuU
+HC4czh1yHhQeux9jIA0gvCFoIhkizyOJJEEk+SW6JnknOygFKMspkypiKzIsASzXLawuhy9gMD4xGzH8
+MtszvzSgNYY2cjdcOEw5OTorOxs8CD0EPfU+6z/nQOFB2ELUQ9VE00XcRttH5EjxSgBLCUwdTTFOUE9v
+UI9Rt1LdVAVVNlZsV6VY4FohW21ct135X09goGH0Y0tkqGYFZ19oxGova5ptCG54b/BxbnLsdG119Xd/
+eQh6knwqfcV/W4D4gpSEO4Xih4CJKorYjIqOOY/jkZuTWJUOlsyYiZpSnB6d4Z+soX+jWqUvpxOo+6rj
+rMuuwLC4sra0rra0uL+60LzfvwDBHcLdxLXGhchYyi7MCs3lz7rRmtOA1WPXR9kq2xPc/97s4M/iveSn
+5o3obupT7ELuLPAM8fLz0PW396H5f/tZ/T3//wAAAAEAAwALABYAJQA3AE0AZQCBAJ8AwQDlAQsBNQFh
+AZABwQH1AisCZAKfAtwDHANfA6MD6gQ0BH8EzQT1BR0FcAXEBhsGdAbPBy0HXAeMB+4IUgi4CSAJVAmK
+CfYKZArVC0cLgQu8DDIMqw0mDaIOIQ6hDyQPqRAvELgQ/RFDEc8SXRLuE4AUFRSrFUMV3RZ5FxcXthhY
+GPwZoRpIGvEbnBxJHPgdqB5bHw8fxSB9ITch8iKwJDAk8yW3Jn4nRigQKNwpqSp5K0osHCzxLccuoC95
+MFUxMzISMvMz1TS5NaA2hzdxOFw5STo4Oyg8Gj4DPvs/9EDuQepD6ETpRexG8Uf3SP9LFEwhTTBOQE9S
+UGZSklOrVMVV4Vb/WB5ZP1phW4Vcq13SXvthUmJ/Y69k4GYSZ0dofGm0au1tZG6ib+FxInJlc6l073Y2
+d396FXtjfLJ+A39VgKmB/4NWhK+GCYjCiiGLgYzjjkePrJESknuT5Ja8mCuZm5sMnH+d9J9qoOGiWqPV
+pVGmz6eOqE6pzqtRrNSuWq/gsWmy8rR+tgu5Kbq6vE294b93wQ7Cp8RBxd3He8kZyrrLisxbzf/Po9FK
+0vHUm9ZF1/HZn9tO3Cbc/96x4GTiGePQ5YjnQegf6Pzquex27jbv9/G583z0X/VC9wj40Pqa/GX+Mf//
+AAAAAQADAAsAJQA3AE0AZQCBAJ8AwQELATUBYQGQAcEB9QIrAmQCnwLcAxwDXwOjA+oENAR/BM0FHQVw
+BcQGGwZ0Bs8HLQeMB+4IUgi4CSAJign2CmQK1QtHC7wMMgyrDSYNog4hDqEPJA+pEC8QuBFDEl0S7hOA
+FBUUqxVDFnkXFxe2GFgY/BpIGvEbnBxJHPgdqB8PH8UgfSE3IfIjbyQwJPMltydGKBAo3Cp5K0osHC3H
+LqAveTEzMhIy8zS5NaA2hzhcOUk6ODwaPQ4+Az/0QO5C6EPoROlG8Uf3SglLFEwhTkBPUlF7UpJUxVXh
+Vv9ZP1phXKtd0mAlYVJjr2TgZhJofGm0au1tZG6ib+FxInJldO92Nnd/eMl6FXyyfgN/VYCpgf+Er4YJ
+h2WIwoohi4GOR4+skRKSe5PklVCWvJgrmZubDJx/nfSfaqDholqj1aVRps+oTqnOq1Gs1K2Xrlqv4LFp
+svK0frYLt5m5Kbnxurq8Tb3hv3fBDsHawqfEQcUPxd3He8hKyRnKusuKzFvN/87Rz6PQdtFK0vHTxtSb
+1kXXG9fx2MjZn9tO3Cbc/93Y3rHfiuBk4hni9ePQ5KzliOZk50HoH+j86drqueuX7HbtVu427xbv9/DX
+8bnymvN89F/1QvYl9wj37PjQ+bX6mvt//GX9S/4x//8AAGRlc2MAAAAAAAAACkNvbG9yIExDRAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAABtbHVjAAAAAAAAAAEAAAAMZW5VUwAAABIAAAAcAEMAbwBsAG8AcgAgAEwAQwBE
+AABtbW9kAAAAAAAABhAAAJxOAAAAAL5zkQAAAAAAAAAAAAAAAAAAAAAAdGV4dAAAAABDb3B5cmlnaHQg
+QXBwbGUgQ29tcHV0ZXIsIEluYy4sIDIwMDUAAAAAA</bytes>
+													</object>
+												</object>
+											</object>
+										</object>
+										<reference key="NSColor" ref="30384615"/>
+									</object>
+									<reference key="NSAlternateImage" ref="619763889"/>
+									<int key="NSPeriodicDelay">400</int>
+									<int key="NSPeriodicInterval">75</int>
+								</object>
+							</object>
+							<string key="NSCellSize">{565, 18}</string>
+							<string key="NSIntercellSpacing">{4, 2}</string>
+							<int key="NSMatrixFlags">1151868928</int>
+							<string key="NSCellClass">NSActionCell</string>
+							<object class="NSButtonCell" key="NSProtoCell" id="709643899">
+								<int key="NSCellFlags">67239424</int>
+								<int key="NSCellFlags2">0</int>
+								<string key="NSContents">Radio</string>
+								<reference key="NSSupport" ref="933596199"/>
+								<int key="NSButtonFlags">1211912703</int>
+								<int key="NSButtonFlags2">0</int>
+								<object class="NSImage" key="NSNormalImage">
+									<int key="NSImageFlags">549453824</int>
+									<string key="NSSize">{18, 18}</string>
+									<object class="NSMutableArray" key="NSReps">
+										<bool key="EncodedWithXMLCoder">YES</bool>
+										<object class="NSArray">
+											<bool key="EncodedWithXMLCoder">YES</bool>
+											<integer value="0"/>
+											<object class="NSBitmapImageRep">
+												<object class="NSData" key="NSTIFFRepresentation">
+													<bytes key="NS.bytes">TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw
+IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/
+29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5
+dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA
+AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG
+AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/
+0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/
+7e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/
+5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/
+3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD
+AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns
+AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/
+6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/
+/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/
+///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl
+YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA
+AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD
+AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu
+AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQEAAAMAAAABABIAAAEB
+AAMAAAABABIAAAECAAMAAAAEAAAFugEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES
+AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS
+AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
+												</object>
+											</object>
+										</object>
+									</object>
+									<reference key="NSColor" ref="30384615"/>
+								</object>
+								<reference key="NSAlternateImage" ref="619763889"/>
+								<int key="NSPeriodicDelay">400</int>
+								<int key="NSPeriodicInterval">75</int>
+							</object>
+							<reference key="NSSelectedCell" ref="943458284"/>
+							<reference key="NSBackgroundColor" ref="349124561"/>
+							<reference key="NSCellBackgroundColor" ref="195671423"/>
+							<reference key="NSFont" ref="933596199"/>
+						</object>
+						<object class="NSButton" id="512228208">
+							<reference key="NSNextResponder" ref="594333702"/>
+							<int key="NSvFlags">268</int>
+							<string key="NSFrame">{{591, 59}, {178, 161}}</string>
+							<reference key="NSSuperview" ref="594333702"/>
+							<bool key="NSEnabled">YES</bool>
+							<object class="NSButtonCell" key="NSCell" id="69630975">
+								<int key="NSCellFlags">67239424</int>
+								<int key="NSCellFlags2">134217728</int>
+								<string key="NSContents">Go!</string>
+								<object class="NSFont" key="NSSupport">
+									<string key="NSName">LucidaGrande</string>
+									<double key="NSSize">10</double>
+									<int key="NSfFlags">16</int>
+								</object>
+								<reference key="NSControlView" ref="512228208"/>
+								<int key="NSButtonFlags">-2033434369</int>
+								<int key="NSButtonFlags2">130</int>
+								<string key="NSAlternateContents"/>
+								<string key="NSKeyEquivalent"/>
+								<int key="NSPeriodicDelay">400</int>
+								<int key="NSPeriodicInterval">75</int>
+							</object>
+						</object>
+					</object>
+					<string key="NSFrameSize">{787, 260}</string>
+					<reference key="NSSuperview"/>
+				</object>
+				<string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
+				<string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
+			</object>
+		</object>
+		<object class="IBObjectContainer" key="IBDocument.Objects">
+			<object class="NSMutableArray" key="connectionRecords">
+				<bool key="EncodedWithXMLCoder">YES</bool>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">performMiniaturize:</string>
+						<reference key="source" ref="442653439"/>
+						<reference key="destination" ref="683986939"/>
+					</object>
+					<int key="connectionID">37</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">arrangeInFront:</string>
+						<reference key="source" ref="442653439"/>
+						<reference key="destination" ref="164762492"/>
+					</object>
+					<int key="connectionID">39</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">print:</string>
+						<reference key="source" ref="442653439"/>
+						<reference key="destination" ref="302505815"/>
+					</object>
+					<int key="connectionID">86</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">runPageLayout:</string>
+						<reference key="source" ref="442653439"/>
+						<reference key="destination" ref="409810395"/>
+					</object>
+					<int key="connectionID">87</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">showHelp:</string>
+						<reference key="source" ref="442653439"/>
+						<reference key="destination" ref="192540884"/>
+					</object>
+					<int key="connectionID">122</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">clearRecentDocuments:</string>
+						<reference key="source" ref="442653439"/>
+						<reference key="destination" ref="85018532"/>
+					</object>
+					<int key="connectionID">127</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">terminate:</string>
+						<reference key="source" ref="870565383"/>
+						<reference key="destination" ref="887927135"/>
+					</object>
+					<int key="connectionID">139</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">orderFrontStandardAboutPanel:</string>
+						<reference key="source" ref="870565383"/>
+						<reference key="destination" ref="838552093"/>
+					</object>
+					<int key="connectionID">142</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">hideOtherApplications:</string>
+						<reference key="source" ref="870565383"/>
+						<reference key="destination" ref="216168366"/>
+					</object>
+					<int key="connectionID">146</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">hide:</string>
+						<reference key="source" ref="870565383"/>
+						<reference key="destination" ref="104472016"/>
+					</object>
+					<int key="connectionID">152</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">unhideAllApplications:</string>
+						<reference key="source" ref="870565383"/>
+						<reference key="destination" ref="667790509"/>
+					</object>
+					<int key="connectionID">153</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">cut:</string>
+						<reference key="source" ref="442653439"/>
+						<reference key="destination" ref="909447496"/>
+					</object>
+					<int key="connectionID">175</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">paste:</string>
+						<reference key="source" ref="442653439"/>
+						<reference key="destination" ref="84012734"/>
+					</object>
+					<int key="connectionID">176</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">redo:</string>
+						<reference key="source" ref="442653439"/>
+						<reference key="destination" ref="1001272176"/>
+					</object>
+					<int key="connectionID">178</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">selectAll:</string>
+						<reference key="source" ref="442653439"/>
+						<reference key="destination" ref="917620781"/>
+					</object>
+					<int key="connectionID">179</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">undo:</string>
+						<reference key="source" ref="442653439"/>
+						<reference key="destination" ref="284548410"/>
+					</object>
+					<int key="connectionID">180</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">copy:</string>
+						<reference key="source" ref="442653439"/>
+						<reference key="destination" ref="994487277"/>
+					</object>
+					<int key="connectionID">181</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">showGuessPanel:</string>
+						<reference key="source" ref="442653439"/>
+						<reference key="destination" ref="438210660"/>
+					</object>
+					<int key="connectionID">188</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">checkSpelling:</string>
+						<reference key="source" ref="442653439"/>
+						<reference key="destination" ref="102172584"/>
+					</object>
+					<int key="connectionID">190</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">toggleContinuousSpellChecking:</string>
+						<reference key="source" ref="442653439"/>
+						<reference key="destination" ref="540509341"/>
+					</object>
+					<int key="connectionID">192</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">performClose:</string>
+						<reference key="source" ref="442653439"/>
+						<reference key="destination" ref="468594275"/>
+					</object>
+					<int key="connectionID">193</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">delete:</string>
+						<reference key="source" ref="442653439"/>
+						<reference key="destination" ref="512189403"/>
+					</object>
+					<int key="connectionID">195</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">performZoom:</string>
+						<reference key="source" ref="442653439"/>
+						<reference key="destination" ref="548098734"/>
+					</object>
+					<int key="connectionID">198</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">performFindPanelAction:</string>
+						<reference key="source" ref="442653439"/>
+						<reference key="destination" ref="203238834"/>
+					</object>
+					<int key="connectionID">199</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">performFindPanelAction:</string>
+						<reference key="source" ref="442653439"/>
+						<reference key="destination" ref="861312964"/>
+					</object>
+					<int key="connectionID">200</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">performFindPanelAction:</string>
+						<reference key="source" ref="442653439"/>
+						<reference key="destination" ref="743767160"/>
+					</object>
+					<int key="connectionID">201</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">performFindPanelAction:</string>
+						<reference key="source" ref="442653439"/>
+						<reference key="destination" ref="180446588"/>
+					</object>
+					<int key="connectionID">202</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">centerSelectionInVisibleArea:</string>
+						<reference key="source" ref="442653439"/>
+						<reference key="destination" ref="731027425"/>
+					</object>
+					<int key="connectionID">203</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">pasteAsPlainText:</string>
+						<reference key="source" ref="442653439"/>
+						<reference key="destination" ref="182251545"/>
+					</object>
+					<int key="connectionID">205</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">crash:</string>
+						<reference key="source" ref="623097029"/>
+						<reference key="destination" ref="726278107"/>
+					</object>
+					<int key="connectionID">208</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBOutletConnection" key="connection">
+						<string key="label">window_</string>
+						<reference key="source" ref="623097029"/>
+						<reference key="destination" ref="341270541"/>
+					</object>
+					<int key="connectionID">209</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">crash:</string>
+						<reference key="source" ref="623097029"/>
+						<reference key="destination" ref="799567279"/>
+					</object>
+					<int key="connectionID">211</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">crash:</string>
+						<reference key="source" ref="623097029"/>
+						<reference key="destination" ref="27781390"/>
+					</object>
+					<int key="connectionID">213</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBOutletConnection" key="connection">
+						<string key="label">forkTestOptions_</string>
+						<reference key="source" ref="623097029"/>
+						<reference key="destination" ref="347013037"/>
+					</object>
+					<int key="connectionID">241</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">forkTestOptions:</string>
+						<reference key="source" ref="623097029"/>
+						<reference key="destination" ref="943458284"/>
+					</object>
+					<int key="connectionID">242</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">forkTestOptions:</string>
+						<reference key="source" ref="623097029"/>
+						<reference key="destination" ref="7590393"/>
+					</object>
+					<int key="connectionID">243</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">forkTestOptions:</string>
+						<reference key="source" ref="623097029"/>
+						<reference key="destination" ref="410017819"/>
+					</object>
+					<int key="connectionID">244</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">forkTestGo:</string>
+						<reference key="source" ref="623097029"/>
+						<reference key="destination" ref="512228208"/>
+					</object>
+					<int key="connectionID">250</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">forkTestOptions:</string>
+						<reference key="source" ref="623097029"/>
+						<reference key="destination" ref="1050951576"/>
+					</object>
+					<int key="connectionID">261</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">forkTestOptions:</string>
+						<reference key="source" ref="623097029"/>
+						<reference key="destination" ref="891367997"/>
+					</object>
+					<int key="connectionID">262</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">showForkTestWindow:</string>
+						<reference key="source" ref="623097029"/>
+						<reference key="destination" ref="856256540"/>
+					</object>
+					<int key="connectionID">283</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">generateReportWithoutCrash:</string>
+						<reference key="source" ref="623097029"/>
+						<reference key="destination" ref="460755987"/>
+					</object>
+					<int key="connectionID">327</int>
+				</object>
+			</object>
+			<object class="IBMutableOrderedSet" key="objectRecords">
+				<object class="NSArray" key="orderedObjects">
+					<bool key="EncodedWithXMLCoder">YES</bool>
+					<object class="IBObjectRecord">
+						<int key="objectID">0</int>
+						<reference key="object" ref="0"/>
+						<reference key="children" ref="925601844"/>
+						<nil key="parent"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">-2</int>
+						<reference key="object" ref="870565383"/>
+						<reference key="parent" ref="0"/>
+						<string key="objectName">File's Owner</string>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">-1</int>
+						<reference key="object" ref="442653439"/>
+						<reference key="parent" ref="0"/>
+						<string key="objectName">First Responder</string>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">-3</int>
+						<reference key="object" ref="751079937"/>
+						<reference key="parent" ref="0"/>
+						<string key="objectName">Application</string>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">21</int>
+						<reference key="object" ref="341270541"/>
+						<object class="NSMutableArray" key="children">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<reference ref="814272478"/>
+						</object>
+						<reference key="parent" ref="0"/>
+						<string key="objectName">Window</string>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">2</int>
+						<reference key="object" ref="814272478"/>
+						<object class="NSMutableArray" key="children">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<reference ref="726278107"/>
+							<reference ref="799567279"/>
+							<reference ref="27781390"/>
+							<reference ref="856256540"/>
+							<reference ref="460755987"/>
+						</object>
+						<reference key="parent" ref="341270541"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">206</int>
+						<reference key="object" ref="726278107"/>
+						<object class="NSMutableArray" key="children">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<reference ref="539552922"/>
+						</object>
+						<reference key="parent" ref="814272478"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">210</int>
+						<reference key="object" ref="799567279"/>
+						<object class="NSMutableArray" key="children">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<reference ref="1010617379"/>
+						</object>
+						<reference key="parent" ref="814272478"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">212</int>
+						<reference key="object" ref="27781390"/>
+						<object class="NSMutableArray" key="children">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<reference ref="547901497"/>
+						</object>
+						<reference key="parent" ref="814272478"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">218</int>
+						<reference key="object" ref="856256540"/>
+						<object class="NSMutableArray" key="children">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<reference ref="353736234"/>
+						</object>
+						<reference key="parent" ref="814272478"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">325</int>
+						<reference key="object" ref="460755987"/>
+						<object class="NSMutableArray" key="children">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<reference ref="775425649"/>
+						</object>
+						<reference key="parent" ref="814272478"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">29</int>
+						<reference key="object" ref="695387251"/>
+						<object class="NSMutableArray" key="children">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<reference ref="764068863"/>
+							<reference ref="458207250"/>
+							<reference ref="369472335"/>
+							<reference ref="599772536"/>
+							<reference ref="542216986"/>
+						</object>
+						<reference key="parent" ref="0"/>
+						<string key="objectName">MainMenu</string>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">19</int>
+						<reference key="object" ref="764068863"/>
+						<object class="NSMutableArray" key="children">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<reference ref="200536676"/>
+						</object>
+						<reference key="parent" ref="695387251"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">24</int>
+						<reference key="object" ref="200536676"/>
+						<object class="NSMutableArray" key="children">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<reference ref="164762492"/>
+							<reference ref="683986939"/>
+							<reference ref="297002686"/>
+							<reference ref="548098734"/>
+						</object>
+						<reference key="parent" ref="764068863"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">5</int>
+						<reference key="object" ref="164762492"/>
+						<reference key="parent" ref="200536676"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">23</int>
+						<reference key="object" ref="683986939"/>
+						<reference key="parent" ref="200536676"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">92</int>
+						<reference key="object" ref="297002686"/>
+						<reference key="parent" ref="200536676"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">197</int>
+						<reference key="object" ref="548098734"/>
+						<reference key="parent" ref="200536676"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">56</int>
+						<reference key="object" ref="458207250"/>
+						<object class="NSMutableArray" key="children">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<reference ref="753534561"/>
+						</object>
+						<reference key="parent" ref="695387251"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">57</int>
+						<reference key="object" ref="753534561"/>
+						<object class="NSMutableArray" key="children">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<reference ref="838552093"/>
+							<reference ref="443649494"/>
+							<reference ref="826764396"/>
+							<reference ref="104472016"/>
+							<reference ref="887927135"/>
+							<reference ref="217746140"/>
+							<reference ref="881859155"/>
+							<reference ref="216168366"/>
+							<reference ref="928933982"/>
+							<reference ref="667790509"/>
+							<reference ref="758254482"/>
+						</object>
+						<reference key="parent" ref="458207250"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">58</int>
+						<reference key="object" ref="838552093"/>
+						<reference key="parent" ref="753534561"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">129</int>
+						<reference key="object" ref="443649494"/>
+						<reference key="parent" ref="753534561"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">131</int>
+						<reference key="object" ref="826764396"/>
+						<object class="NSMutableArray" key="children">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<reference ref="276709607"/>
+						</object>
+						<reference key="parent" ref="753534561"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">130</int>
+						<reference key="object" ref="276709607"/>
+						<reference key="parent" ref="826764396"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">134</int>
+						<reference key="object" ref="104472016"/>
+						<reference key="parent" ref="753534561"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">136</int>
+						<reference key="object" ref="887927135"/>
+						<reference key="parent" ref="753534561"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">143</int>
+						<reference key="object" ref="217746140"/>
+						<reference key="parent" ref="753534561"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">144</int>
+						<reference key="object" ref="881859155"/>
+						<reference key="parent" ref="753534561"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">145</int>
+						<reference key="object" ref="216168366"/>
+						<reference key="parent" ref="753534561"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">149</int>
+						<reference key="object" ref="928933982"/>
+						<reference key="parent" ref="753534561"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">150</int>
+						<reference key="object" ref="667790509"/>
+						<reference key="parent" ref="753534561"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">196</int>
+						<reference key="object" ref="758254482"/>
+						<reference key="parent" ref="753534561"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">83</int>
+						<reference key="object" ref="369472335"/>
+						<object class="NSMutableArray" key="children">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<reference ref="902982238"/>
+						</object>
+						<reference key="parent" ref="695387251"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">81</int>
+						<reference key="object" ref="902982238"/>
+						<object class="NSMutableArray" key="children">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<reference ref="367379562"/>
+							<reference ref="468594275"/>
+							<reference ref="232609393"/>
+							<reference ref="479945444"/>
+							<reference ref="409810395"/>
+							<reference ref="302505815"/>
+							<reference ref="154948703"/>
+							<reference ref="976375553"/>
+							<reference ref="660391032"/>
+							<reference ref="885975128"/>
+							<reference ref="84883275"/>
+						</object>
+						<reference key="parent" ref="369472335"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">72</int>
+						<reference key="object" ref="367379562"/>
+						<reference key="parent" ref="902982238"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">73</int>
+						<reference key="object" ref="468594275"/>
+						<reference key="parent" ref="902982238"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">74</int>
+						<reference key="object" ref="232609393"/>
+						<reference key="parent" ref="902982238"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">75</int>
+						<reference key="object" ref="479945444"/>
+						<reference key="parent" ref="902982238"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">77</int>
+						<reference key="object" ref="409810395"/>
+						<reference key="parent" ref="902982238"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">78</int>
+						<reference key="object" ref="302505815"/>
+						<reference key="parent" ref="902982238"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">79</int>
+						<reference key="object" ref="154948703"/>
+						<reference key="parent" ref="902982238"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">80</int>
+						<reference key="object" ref="976375553"/>
+						<reference key="parent" ref="902982238"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">82</int>
+						<reference key="object" ref="660391032"/>
+						<reference key="parent" ref="902982238"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">112</int>
+						<reference key="object" ref="885975128"/>
+						<reference key="parent" ref="902982238"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">124</int>
+						<reference key="object" ref="84883275"/>
+						<object class="NSMutableArray" key="children">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<reference ref="693280130"/>
+						</object>
+						<reference key="parent" ref="902982238"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">125</int>
+						<reference key="object" ref="693280130"/>
+						<object class="NSMutableArray" key="children">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<reference ref="85018532"/>
+						</object>
+						<reference key="parent" ref="84883275"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">126</int>
+						<reference key="object" ref="85018532"/>
+						<reference key="parent" ref="693280130"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">103</int>
+						<reference key="object" ref="599772536"/>
+						<object class="NSMutableArray" key="children">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<reference ref="1066958924"/>
+						</object>
+						<reference key="parent" ref="695387251"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">106</int>
+						<reference key="object" ref="1066958924"/>
+						<object class="NSMutableArray" key="children">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<reference ref="192540884"/>
+						</object>
+						<reference key="parent" ref="599772536"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">111</int>
+						<reference key="object" ref="192540884"/>
+						<reference key="parent" ref="1066958924"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">163</int>
+						<reference key="object" ref="542216986"/>
+						<object class="NSMutableArray" key="children">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<reference ref="1053284541"/>
+						</object>
+						<reference key="parent" ref="695387251"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">169</int>
+						<reference key="object" ref="1053284541"/>
+						<object class="NSMutableArray" key="children">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<reference ref="209744238"/>
+							<reference ref="994487277"/>
+							<reference ref="284548410"/>
+							<reference ref="909447496"/>
+							<reference ref="512189403"/>
+							<reference ref="153501847"/>
+							<reference ref="84012734"/>
+							<reference ref="917620781"/>
+							<reference ref="1001272176"/>
+							<reference ref="431895313"/>
+							<reference ref="61602259"/>
+							<reference ref="182251545"/>
+						</object>
+						<reference key="parent" ref="542216986"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">156</int>
+						<reference key="object" ref="209744238"/>
+						<reference key="parent" ref="1053284541"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">157</int>
+						<reference key="object" ref="994487277"/>
+						<reference key="parent" ref="1053284541"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">158</int>
+						<reference key="object" ref="284548410"/>
+						<reference key="parent" ref="1053284541"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">160</int>
+						<reference key="object" ref="909447496"/>
+						<reference key="parent" ref="1053284541"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">164</int>
+						<reference key="object" ref="512189403"/>
+						<reference key="parent" ref="1053284541"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">168</int>
+						<reference key="object" ref="153501847"/>
+						<object class="NSMutableArray" key="children">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<reference ref="333484665"/>
+						</object>
+						<reference key="parent" ref="1053284541"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">159</int>
+						<reference key="object" ref="333484665"/>
+						<object class="NSMutableArray" key="children">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<reference ref="203238834"/>
+							<reference ref="731027425"/>
+							<reference ref="180446588"/>
+							<reference ref="743767160"/>
+							<reference ref="861312964"/>
+						</object>
+						<reference key="parent" ref="153501847"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">154</int>
+						<reference key="object" ref="203238834"/>
+						<reference key="parent" ref="333484665"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">155</int>
+						<reference key="object" ref="731027425"/>
+						<reference key="parent" ref="333484665"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">161</int>
+						<reference key="object" ref="180446588"/>
+						<reference key="parent" ref="333484665"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">162</int>
+						<reference key="object" ref="743767160"/>
+						<reference key="parent" ref="333484665"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">167</int>
+						<reference key="object" ref="861312964"/>
+						<reference key="parent" ref="333484665"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">171</int>
+						<reference key="object" ref="84012734"/>
+						<reference key="parent" ref="1053284541"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">172</int>
+						<reference key="object" ref="917620781"/>
+						<reference key="parent" ref="1053284541"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">173</int>
+						<reference key="object" ref="1001272176"/>
+						<reference key="parent" ref="1053284541"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">174</int>
+						<reference key="object" ref="431895313"/>
+						<reference key="parent" ref="1053284541"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">184</int>
+						<reference key="object" ref="61602259"/>
+						<object class="NSMutableArray" key="children">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<reference ref="8174285"/>
+						</object>
+						<reference key="parent" ref="1053284541"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">185</int>
+						<reference key="object" ref="8174285"/>
+						<object class="NSMutableArray" key="children">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<reference ref="438210660"/>
+							<reference ref="102172584"/>
+							<reference ref="540509341"/>
+						</object>
+						<reference key="parent" ref="61602259"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">187</int>
+						<reference key="object" ref="438210660"/>
+						<reference key="parent" ref="8174285"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">189</int>
+						<reference key="object" ref="102172584"/>
+						<reference key="parent" ref="8174285"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">191</int>
+						<reference key="object" ref="540509341"/>
+						<reference key="parent" ref="8174285"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">204</int>
+						<reference key="object" ref="182251545"/>
+						<reference key="parent" ref="1053284541"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">207</int>
+						<reference key="object" ref="623097029"/>
+						<reference key="parent" ref="0"/>
+						<string key="objectName">Controller</string>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">220</int>
+						<reference key="object" ref="347013037"/>
+						<object class="NSMutableArray" key="children">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<reference ref="594333702"/>
+						</object>
+						<reference key="parent" ref="0"/>
+						<string key="objectName">Window (Window)</string>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">221</int>
+						<reference key="object" ref="594333702"/>
+						<object class="NSMutableArray" key="children">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<reference ref="891367997"/>
+							<reference ref="7590393"/>
+							<reference ref="1050951576"/>
+							<reference ref="512228208"/>
+						</object>
+						<reference key="parent" ref="347013037"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">226</int>
+						<reference key="object" ref="891367997"/>
+						<object class="NSMutableArray" key="children">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<reference ref="410017819"/>
+							<reference ref="904578786"/>
+							<reference ref="971445237"/>
+							<reference ref="1072218638"/>
+						</object>
+						<reference key="parent" ref="594333702"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">227</int>
+						<reference key="object" ref="410017819"/>
+						<reference key="parent" ref="891367997"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">228</int>
+						<reference key="object" ref="904578786"/>
+						<reference key="parent" ref="891367997"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">272</int>
+						<reference key="object" ref="971445237"/>
+						<reference key="parent" ref="891367997"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">232</int>
+						<reference key="object" ref="7590393"/>
+						<object class="NSMutableArray" key="children">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<reference ref="808388382"/>
+							<reference ref="378736460"/>
+							<reference ref="251439646"/>
+							<reference ref="773902463"/>
+						</object>
+						<reference key="parent" ref="594333702"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">233</int>
+						<reference key="object" ref="808388382"/>
+						<reference key="parent" ref="7590393"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">234</int>
+						<reference key="object" ref="378736460"/>
+						<reference key="parent" ref="7590393"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">236</int>
+						<reference key="object" ref="251439646"/>
+						<reference key="parent" ref="7590393"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">237</int>
+						<reference key="object" ref="1050951576"/>
+						<object class="NSMutableArray" key="children">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<reference ref="943458284"/>
+							<reference ref="69061500"/>
+							<reference ref="709643899"/>
+						</object>
+						<reference key="parent" ref="594333702"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">238</int>
+						<reference key="object" ref="943458284"/>
+						<reference key="parent" ref="1050951576"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">239</int>
+						<reference key="object" ref="69061500"/>
+						<reference key="parent" ref="1050951576"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">248</int>
+						<reference key="object" ref="512228208"/>
+						<object class="NSMutableArray" key="children">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<reference ref="69630975"/>
+						</object>
+						<reference key="parent" ref="594333702"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">329</int>
+						<reference key="object" ref="539552922"/>
+						<reference key="parent" ref="726278107"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">330</int>
+						<reference key="object" ref="1010617379"/>
+						<reference key="parent" ref="799567279"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">331</int>
+						<reference key="object" ref="547901497"/>
+						<reference key="parent" ref="27781390"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">332</int>
+						<reference key="object" ref="353736234"/>
+						<reference key="parent" ref="856256540"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">333</int>
+						<reference key="object" ref="775425649"/>
+						<reference key="parent" ref="460755987"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">334</int>
+						<reference key="object" ref="69630975"/>
+						<reference key="parent" ref="512228208"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">335</int>
+						<reference key="object" ref="1072218638"/>
+						<reference key="parent" ref="891367997"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">336</int>
+						<reference key="object" ref="773902463"/>
+						<reference key="parent" ref="7590393"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">337</int>
+						<reference key="object" ref="709643899"/>
+						<reference key="parent" ref="1050951576"/>
+					</object>
+				</object>
+			</object>
+			<object class="NSMutableDictionary" key="flattenedProperties">
+				<bool key="EncodedWithXMLCoder">YES</bool>
+				<object class="NSArray" key="dict.sortedKeys">
+					<bool key="EncodedWithXMLCoder">YES</bool>
+					<string>-3.IBPluginDependency</string>
+					<string>-3.ImportedFromIB2</string>
+					<string>103.IBPluginDependency</string>
+					<string>103.ImportedFromIB2</string>
+					<string>106.IBPluginDependency</string>
+					<string>106.ImportedFromIB2</string>
+					<string>111.IBPluginDependency</string>
+					<string>111.ImportedFromIB2</string>
+					<string>112.IBPluginDependency</string>
+					<string>112.ImportedFromIB2</string>
+					<string>124.IBPluginDependency</string>
+					<string>124.ImportedFromIB2</string>
+					<string>125.IBPluginDependency</string>
+					<string>125.ImportedFromIB2</string>
+					<string>126.IBPluginDependency</string>
+					<string>126.ImportedFromIB2</string>
+					<string>129.IBPluginDependency</string>
+					<string>129.ImportedFromIB2</string>
+					<string>130.IBPluginDependency</string>
+					<string>130.ImportedFromIB2</string>
+					<string>131.IBPluginDependency</string>
+					<string>131.ImportedFromIB2</string>
+					<string>134.IBPluginDependency</string>
+					<string>134.ImportedFromIB2</string>
+					<string>136.IBPluginDependency</string>
+					<string>136.ImportedFromIB2</string>
+					<string>143.IBPluginDependency</string>
+					<string>143.ImportedFromIB2</string>
+					<string>144.IBPluginDependency</string>
+					<string>144.ImportedFromIB2</string>
+					<string>145.IBPluginDependency</string>
+					<string>145.ImportedFromIB2</string>
+					<string>149.IBPluginDependency</string>
+					<string>149.ImportedFromIB2</string>
+					<string>150.IBPluginDependency</string>
+					<string>150.ImportedFromIB2</string>
+					<string>154.IBPluginDependency</string>
+					<string>154.ImportedFromIB2</string>
+					<string>155.IBPluginDependency</string>
+					<string>155.ImportedFromIB2</string>
+					<string>156.IBPluginDependency</string>
+					<string>156.ImportedFromIB2</string>
+					<string>157.IBPluginDependency</string>
+					<string>157.ImportedFromIB2</string>
+					<string>158.IBPluginDependency</string>
+					<string>158.ImportedFromIB2</string>
+					<string>159.IBPluginDependency</string>
+					<string>159.ImportedFromIB2</string>
+					<string>160.IBPluginDependency</string>
+					<string>160.ImportedFromIB2</string>
+					<string>161.IBPluginDependency</string>
+					<string>161.ImportedFromIB2</string>
+					<string>162.IBPluginDependency</string>
+					<string>162.ImportedFromIB2</string>
+					<string>163.IBPluginDependency</string>
+					<string>163.ImportedFromIB2</string>
+					<string>164.IBPluginDependency</string>
+					<string>164.ImportedFromIB2</string>
+					<string>167.IBPluginDependency</string>
+					<string>167.ImportedFromIB2</string>
+					<string>168.IBPluginDependency</string>
+					<string>168.ImportedFromIB2</string>
+					<string>169.IBPluginDependency</string>
+					<string>169.ImportedFromIB2</string>
+					<string>171.IBPluginDependency</string>
+					<string>171.ImportedFromIB2</string>
+					<string>172.IBPluginDependency</string>
+					<string>172.ImportedFromIB2</string>
+					<string>173.IBPluginDependency</string>
+					<string>173.ImportedFromIB2</string>
+					<string>174.IBPluginDependency</string>
+					<string>174.ImportedFromIB2</string>
+					<string>184.IBPluginDependency</string>
+					<string>184.ImportedFromIB2</string>
+					<string>185.IBPluginDependency</string>
+					<string>185.ImportedFromIB2</string>
+					<string>187.IBPluginDependency</string>
+					<string>187.ImportedFromIB2</string>
+					<string>189.IBPluginDependency</string>
+					<string>189.ImportedFromIB2</string>
+					<string>19.IBPluginDependency</string>
+					<string>19.ImportedFromIB2</string>
+					<string>191.IBPluginDependency</string>
+					<string>191.ImportedFromIB2</string>
+					<string>196.IBPluginDependency</string>
+					<string>196.ImportedFromIB2</string>
+					<string>197.IBPluginDependency</string>
+					<string>197.ImportedFromIB2</string>
+					<string>2.IBPluginDependency</string>
+					<string>2.ImportedFromIB2</string>
+					<string>204.IBPluginDependency</string>
+					<string>204.ImportedFromIB2</string>
+					<string>206.IBPluginDependency</string>
+					<string>206.ImportedFromIB2</string>
+					<string>207.ImportedFromIB2</string>
+					<string>21.IBEditorWindowLastContentRect</string>
+					<string>21.IBPluginDependency</string>
+					<string>21.IBWindowTemplateEditedContentRect</string>
+					<string>21.ImportedFromIB2</string>
+					<string>21.windowTemplate.hasMinSize</string>
+					<string>21.windowTemplate.minSize</string>
+					<string>210.IBPluginDependency</string>
+					<string>210.ImportedFromIB2</string>
+					<string>212.IBPluginDependency</string>
+					<string>212.ImportedFromIB2</string>
+					<string>218.IBPluginDependency</string>
+					<string>218.ImportedFromIB2</string>
+					<string>220.IBEditorWindowLastContentRect</string>
+					<string>220.IBPluginDependency</string>
+					<string>220.IBWindowTemplateEditedContentRect</string>
+					<string>220.ImportedFromIB2</string>
+					<string>221.IBPluginDependency</string>
+					<string>221.ImportedFromIB2</string>
+					<string>226.IBPluginDependency</string>
+					<string>226.ImportedFromIB2</string>
+					<string>227.IBPluginDependency</string>
+					<string>227.ImportedFromIB2</string>
+					<string>228.IBPluginDependency</string>
+					<string>228.ImportedFromIB2</string>
+					<string>23.IBPluginDependency</string>
+					<string>23.ImportedFromIB2</string>
+					<string>232.IBPluginDependency</string>
+					<string>232.ImportedFromIB2</string>
+					<string>233.IBPluginDependency</string>
+					<string>233.ImportedFromIB2</string>
+					<string>234.IBPluginDependency</string>
+					<string>234.ImportedFromIB2</string>
+					<string>236.IBPluginDependency</string>
+					<string>236.ImportedFromIB2</string>
+					<string>237.IBPluginDependency</string>
+					<string>237.ImportedFromIB2</string>
+					<string>238.IBPluginDependency</string>
+					<string>238.ImportedFromIB2</string>
+					<string>239.IBPluginDependency</string>
+					<string>239.ImportedFromIB2</string>
+					<string>24.IBPluginDependency</string>
+					<string>24.ImportedFromIB2</string>
+					<string>248.IBPluginDependency</string>
+					<string>248.ImportedFromIB2</string>
+					<string>272.IBPluginDependency</string>
+					<string>272.ImportedFromIB2</string>
+					<string>29.IBEditorWindowLastContentRect</string>
+					<string>29.IBPluginDependency</string>
+					<string>29.ImportedFromIB2</string>
+					<string>325.IBPluginDependency</string>
+					<string>325.ImportedFromIB2</string>
+					<string>329.IBPluginDependency</string>
+					<string>330.IBPluginDependency</string>
+					<string>331.IBPluginDependency</string>
+					<string>332.IBPluginDependency</string>
+					<string>333.IBPluginDependency</string>
+					<string>334.IBPluginDependency</string>
+					<string>335.IBPluginDependency</string>
+					<string>336.IBPluginDependency</string>
+					<string>337.IBPluginDependency</string>
+					<string>5.IBPluginDependency</string>
+					<string>5.ImportedFromIB2</string>
+					<string>56.IBPluginDependency</string>
+					<string>56.ImportedFromIB2</string>
+					<string>57.IBPluginDependency</string>
+					<string>57.ImportedFromIB2</string>
+					<string>58.IBPluginDependency</string>
+					<string>58.ImportedFromIB2</string>
+					<string>72.IBPluginDependency</string>
+					<string>72.ImportedFromIB2</string>
+					<string>73.IBPluginDependency</string>
+					<string>73.ImportedFromIB2</string>
+					<string>74.IBPluginDependency</string>
+					<string>74.ImportedFromIB2</string>
+					<string>75.IBPluginDependency</string>
+					<string>75.ImportedFromIB2</string>
+					<string>77.IBPluginDependency</string>
+					<string>77.ImportedFromIB2</string>
+					<string>78.IBPluginDependency</string>
+					<string>78.ImportedFromIB2</string>
+					<string>79.IBPluginDependency</string>
+					<string>79.ImportedFromIB2</string>
+					<string>80.IBPluginDependency</string>
+					<string>80.ImportedFromIB2</string>
+					<string>81.IBPluginDependency</string>
+					<string>81.ImportedFromIB2</string>
+					<string>82.IBPluginDependency</string>
+					<string>82.ImportedFromIB2</string>
+					<string>83.IBPluginDependency</string>
+					<string>83.ImportedFromIB2</string>
+					<string>92.IBPluginDependency</string>
+					<string>92.ImportedFromIB2</string>
+				</object>
+				<object class="NSMutableArray" key="dict.values">
+					<bool key="EncodedWithXMLCoder">YES</bool>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<boolean value="YES"/>
+					<string>{{510, 1250}, {320, 188}}</string>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<string>{{510, 1250}, {320, 188}}</string>
+					<boolean value="YES"/>
+					<boolean value="YES"/>
+					<string>{213, 107}</string>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>{{-55, 1287}, {787, 260}}</string>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<string>{{-55, 1287}, {787, 260}}</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>{{0, 1114}, {362, 20}}</string>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+					<boolean value="YES"/>
+				</object>
+			</object>
+			<object class="NSMutableDictionary" key="unlocalizedProperties">
+				<bool key="EncodedWithXMLCoder">YES</bool>
+				<reference key="dict.sortedKeys" ref="0"/>
+				<object class="NSMutableArray" key="dict.values">
+					<bool key="EncodedWithXMLCoder">YES</bool>
+				</object>
+			</object>
+			<nil key="activeLocalization"/>
+			<object class="NSMutableDictionary" key="localizations">
+				<bool key="EncodedWithXMLCoder">YES</bool>
+				<reference key="dict.sortedKeys" ref="0"/>
+				<object class="NSMutableArray" key="dict.values">
+					<bool key="EncodedWithXMLCoder">YES</bool>
+				</object>
+			</object>
+			<nil key="sourceID"/>
+			<int key="maxID">337</int>
+		</object>
+		<object class="IBClassDescriber" key="IBDocument.Classes">
+			<object class="NSMutableArray" key="referencedPartialClassDescriptions">
+				<bool key="EncodedWithXMLCoder">YES</bool>
+				<object class="IBPartialClassDescription">
+					<string key="className">Controller</string>
+					<string key="superclassName">NSObject</string>
+					<object class="NSMutableDictionary" key="actions">
+						<bool key="EncodedWithXMLCoder">YES</bool>
+						<object class="NSArray" key="dict.sortedKeys">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<string>crash:</string>
+							<string>forkTestGo:</string>
+							<string>forkTestOptions:</string>
+							<string>generateReportWithoutCrash:</string>
+							<string>showForkTestWindow:</string>
+						</object>
+						<object class="NSMutableArray" key="dict.values">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<string>id</string>
+							<string>id</string>
+							<string>id</string>
+							<string>id</string>
+							<string>id</string>
+						</object>
+					</object>
+					<object class="NSMutableDictionary" key="actionInfosByName">
+						<bool key="EncodedWithXMLCoder">YES</bool>
+						<object class="NSArray" key="dict.sortedKeys">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<string>crash:</string>
+							<string>forkTestGo:</string>
+							<string>forkTestOptions:</string>
+							<string>generateReportWithoutCrash:</string>
+							<string>showForkTestWindow:</string>
+						</object>
+						<object class="NSMutableArray" key="dict.values">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<object class="IBActionInfo">
+								<string key="name">crash:</string>
+								<string key="candidateClassName">id</string>
+							</object>
+							<object class="IBActionInfo">
+								<string key="name">forkTestGo:</string>
+								<string key="candidateClassName">id</string>
+							</object>
+							<object class="IBActionInfo">
+								<string key="name">forkTestOptions:</string>
+								<string key="candidateClassName">id</string>
+							</object>
+							<object class="IBActionInfo">
+								<string key="name">generateReportWithoutCrash:</string>
+								<string key="candidateClassName">id</string>
+							</object>
+							<object class="IBActionInfo">
+								<string key="name">showForkTestWindow:</string>
+								<string key="candidateClassName">id</string>
+							</object>
+						</object>
+					</object>
+					<object class="NSMutableDictionary" key="outlets">
+						<bool key="EncodedWithXMLCoder">YES</bool>
+						<object class="NSArray" key="dict.sortedKeys">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<string>forkTestOptions_</string>
+							<string>window_</string>
+						</object>
+						<object class="NSMutableArray" key="dict.values">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<string>NSWindow</string>
+							<string>NSWindow</string>
+						</object>
+					</object>
+					<object class="NSMutableDictionary" key="toOneOutletInfosByName">
+						<bool key="EncodedWithXMLCoder">YES</bool>
+						<object class="NSArray" key="dict.sortedKeys">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<string>forkTestOptions_</string>
+							<string>window_</string>
+						</object>
+						<object class="NSMutableArray" key="dict.values">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<object class="IBToOneOutletInfo">
+								<string key="name">forkTestOptions_</string>
+								<string key="candidateClassName">NSWindow</string>
+							</object>
+							<object class="IBToOneOutletInfo">
+								<string key="name">window_</string>
+								<string key="candidateClassName">NSWindow</string>
+							</object>
+						</object>
+					</object>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBProjectSource</string>
+						<string key="minorKey">testapp/Controller.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">Controller</string>
+					<string key="superclassName">NSObject</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBUserSource</string>
+						<string key="minorKey"/>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">FirstResponder</string>
+					<string key="superclassName">NSObject</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBUserSource</string>
+						<string key="minorKey"/>
+					</object>
+				</object>
+			</object>
+			<object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
+				<bool key="EncodedWithXMLCoder">YES</bool>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSActionCell</string>
+					<string key="superclassName">NSCell</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">AppKit.framework/Headers/NSActionCell.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSApplication</string>
+					<string key="superclassName">NSResponder</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier" id="785325875">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">AppKit.framework/Headers/NSApplication.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSApplication</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier" id="806686590">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">AppKit.framework/Headers/NSApplicationScripting.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSApplication</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier" id="301712406">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">AppKit.framework/Headers/NSColorPanel.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSApplication</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">AppKit.framework/Headers/NSHelpManager.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSApplication</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">AppKit.framework/Headers/NSPageLayout.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSApplication</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">AppKit.framework/Headers/NSUserInterfaceItemSearching.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSBrowser</string>
+					<string key="superclassName">NSControl</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">AppKit.framework/Headers/NSBrowser.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSButton</string>
+					<string key="superclassName">NSControl</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">AppKit.framework/Headers/NSButton.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSButtonCell</string>
+					<string key="superclassName">NSActionCell</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">AppKit.framework/Headers/NSButtonCell.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSCell</string>
+					<string key="superclassName">NSObject</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">AppKit.framework/Headers/NSCell.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSControl</string>
+					<string key="superclassName">NSView</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier" id="787388657">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">AppKit.framework/Headers/NSControl.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSDocument</string>
+					<string key="superclassName">NSObject</string>
+					<object class="NSMutableDictionary" key="actions">
+						<bool key="EncodedWithXMLCoder">YES</bool>
+						<object class="NSArray" key="dict.sortedKeys">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<string>printDocument:</string>
+							<string>revertDocumentToSaved:</string>
+							<string>runPageLayout:</string>
+							<string>saveDocument:</string>
+							<string>saveDocumentAs:</string>
+							<string>saveDocumentTo:</string>
+						</object>
+						<object class="NSMutableArray" key="dict.values">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<string>id</string>
+							<string>id</string>
+							<string>id</string>
+							<string>id</string>
+							<string>id</string>
+							<string>id</string>
+						</object>
+					</object>
+					<object class="NSMutableDictionary" key="actionInfosByName">
+						<bool key="EncodedWithXMLCoder">YES</bool>
+						<object class="NSArray" key="dict.sortedKeys">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<string>printDocument:</string>
+							<string>revertDocumentToSaved:</string>
+							<string>runPageLayout:</string>
+							<string>saveDocument:</string>
+							<string>saveDocumentAs:</string>
+							<string>saveDocumentTo:</string>
+						</object>
+						<object class="NSMutableArray" key="dict.values">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<object class="IBActionInfo">
+								<string key="name">printDocument:</string>
+								<string key="candidateClassName">id</string>
+							</object>
+							<object class="IBActionInfo">
+								<string key="name">revertDocumentToSaved:</string>
+								<string key="candidateClassName">id</string>
+							</object>
+							<object class="IBActionInfo">
+								<string key="name">runPageLayout:</string>
+								<string key="candidateClassName">id</string>
+							</object>
+							<object class="IBActionInfo">
+								<string key="name">saveDocument:</string>
+								<string key="candidateClassName">id</string>
+							</object>
+							<object class="IBActionInfo">
+								<string key="name">saveDocumentAs:</string>
+								<string key="candidateClassName">id</string>
+							</object>
+							<object class="IBActionInfo">
+								<string key="name">saveDocumentTo:</string>
+								<string key="candidateClassName">id</string>
+							</object>
+						</object>
+					</object>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">AppKit.framework/Headers/NSDocument.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSDocument</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">AppKit.framework/Headers/NSDocumentScripting.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSDocumentController</string>
+					<string key="superclassName">NSObject</string>
+					<object class="NSMutableDictionary" key="actions">
+						<bool key="EncodedWithXMLCoder">YES</bool>
+						<object class="NSArray" key="dict.sortedKeys">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<string>clearRecentDocuments:</string>
+							<string>newDocument:</string>
+							<string>openDocument:</string>
+							<string>saveAllDocuments:</string>
+						</object>
+						<object class="NSMutableArray" key="dict.values">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<string>id</string>
+							<string>id</string>
+							<string>id</string>
+							<string>id</string>
+						</object>
+					</object>
+					<object class="NSMutableDictionary" key="actionInfosByName">
+						<bool key="EncodedWithXMLCoder">YES</bool>
+						<object class="NSArray" key="dict.sortedKeys">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<string>clearRecentDocuments:</string>
+							<string>newDocument:</string>
+							<string>openDocument:</string>
+							<string>saveAllDocuments:</string>
+						</object>
+						<object class="NSMutableArray" key="dict.values">
+							<bool key="EncodedWithXMLCoder">YES</bool>
+							<object class="IBActionInfo">
+								<string key="name">clearRecentDocuments:</string>
+								<string key="candidateClassName">id</string>
+							</object>
+							<object class="IBActionInfo">
+								<string key="name">newDocument:</string>
+								<string key="candidateClassName">id</string>
+							</object>
+							<object class="IBActionInfo">
+								<string key="name">openDocument:</string>
+								<string key="candidateClassName">id</string>
+							</object>
+							<object class="IBActionInfo">
+								<string key="name">saveAllDocuments:</string>
+								<string key="candidateClassName">id</string>
+							</object>
+						</object>
+					</object>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">AppKit.framework/Headers/NSDocumentController.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSFormatter</string>
+					<string key="superclassName">NSObject</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">Foundation.framework/Headers/NSFormatter.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSMatrix</string>
+					<string key="superclassName">NSControl</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">AppKit.framework/Headers/NSMatrix.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSMenu</string>
+					<string key="superclassName">NSObject</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier" id="136824428">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">AppKit.framework/Headers/NSMenu.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSMenuItem</string>
+					<string key="superclassName">NSObject</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier" id="171959132">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">AppKit.framework/Headers/NSMenuItem.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSMovieView</string>
+					<string key="superclassName">NSView</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">AppKit.framework/Headers/NSMovieView.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSObject</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">AppKit.framework/Headers/NSAccessibility.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSObject</string>
+					<reference key="sourceIdentifier" ref="785325875"/>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSObject</string>
+					<reference key="sourceIdentifier" ref="806686590"/>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSObject</string>
+					<reference key="sourceIdentifier" ref="301712406"/>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSObject</string>
+					<reference key="sourceIdentifier" ref="787388657"/>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSObject</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">AppKit.framework/Headers/NSDictionaryController.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSObject</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">AppKit.framework/Headers/NSDragging.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSObject</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">AppKit.framework/Headers/NSFontManager.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSObject</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">AppKit.framework/Headers/NSFontPanel.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSObject</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">AppKit.framework/Headers/NSKeyValueBinding.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSObject</string>
+					<reference key="sourceIdentifier" ref="136824428"/>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSObject</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">AppKit.framework/Headers/NSNibLoading.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSObject</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">AppKit.framework/Headers/NSOutlineView.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSObject</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">AppKit.framework/Headers/NSPasteboard.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSObject</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">AppKit.framework/Headers/NSSavePanel.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSObject</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier" id="521965700">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">AppKit.framework/Headers/NSTableView.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSObject</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">AppKit.framework/Headers/NSToolbarItem.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSObject</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier" id="104369095">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">AppKit.framework/Headers/NSView.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSObject</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">Foundation.framework/Headers/NSArchiver.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSObject</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">Foundation.framework/Headers/NSClassDescription.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSObject</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">Foundation.framework/Headers/NSError.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSObject</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSObject</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSObject</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSObject</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSObject</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSObject</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">Foundation.framework/Headers/NSObjectScripting.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSObject</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">Foundation.framework/Headers/NSPortCoder.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSObject</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSObject</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">Foundation.framework/Headers/NSScriptClassDescription.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSObject</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">Foundation.framework/Headers/NSScriptKeyValueCoding.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSObject</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">Foundation.framework/Headers/NSScriptObjectSpecifiers.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSObject</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">Foundation.framework/Headers/NSScriptWhoseTests.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSObject</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSObject</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSObject</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSObject</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">Foundation.framework/Headers/NSURLDownload.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSResponder</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">AppKit.framework/Headers/NSInterfaceStyle.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSResponder</string>
+					<string key="superclassName">NSObject</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">AppKit.framework/Headers/NSResponder.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSTableView</string>
+					<string key="superclassName">NSControl</string>
+					<reference key="sourceIdentifier" ref="521965700"/>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSText</string>
+					<string key="superclassName">NSView</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">AppKit.framework/Headers/NSText.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSView</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">AppKit.framework/Headers/NSClipView.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSView</string>
+					<reference key="sourceIdentifier" ref="171959132"/>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSView</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">AppKit.framework/Headers/NSRulerView.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSView</string>
+					<string key="superclassName">NSResponder</string>
+					<reference key="sourceIdentifier" ref="104369095"/>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSWindow</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">AppKit.framework/Headers/NSDrawer.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSWindow</string>
+					<string key="superclassName">NSResponder</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">AppKit.framework/Headers/NSWindow.h</string>
+					</object>
+				</object>
+				<object class="IBPartialClassDescription">
+					<string key="className">NSWindow</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBFrameworkSource</string>
+						<string key="minorKey">AppKit.framework/Headers/NSWindowScripting.h</string>
+					</object>
+				</object>
+			</object>
+		</object>
+		<int key="IBDocument.localizationMode">0</int>
+		<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
+		<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies">
+			<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
+			<integer value="1050" key="NS.object.0"/>
+		</object>
+		<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
+			<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
+			<integer value="1050" key="NS.object.0"/>
+		</object>
+		<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
+			<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
+			<integer value="3000" key="NS.object.0"/>
+		</object>
+		<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
+		<string key="IBDocument.LastKnownRelativeProjectPath">../../Breakpad.xcodeproj</string>
+		<int key="IBDocument.defaultPropertyAccessControl">3</int>
+		<object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
+			<bool key="EncodedWithXMLCoder">YES</bool>
+			<object class="NSArray" key="dict.sortedKeys">
+				<bool key="EncodedWithXMLCoder">YES</bool>
+				<string>NSMenuCheckmark</string>
+				<string>NSMenuMixedState</string>
+			</object>
+			<object class="NSMutableArray" key="dict.values">
+				<bool key="EncodedWithXMLCoder">YES</bool>
+				<string>{9, 8}</string>
+				<string>{7, 2}</string>
+			</object>
+		</object>
+	</data>
+</archive>
diff --git a/google-breakpad/src/client/mac/testapp/Info.plist b/google-breakpad/src/client/mac/testapp/Info.plist
new file mode 100644
index 0000000..6094ec6
--- /dev/null
+++ b/google-breakpad/src/client/mac/testapp/Info.plist
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>English</string>
+	<key>CFBundleExecutable</key>
+	<string>${EXECUTABLE_NAME}</string>
+	<key>CFBundleIconFile</key>
+	<string>bomb</string>
+	<key>CFBundleIdentifier</key>
+	<string>com.Google.BreakpadTest</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>${PRODUCT_NAME}</string>
+	<key>CFBundlePackageType</key>
+	<string>APPL</string>
+	<key>CFBundleSignature</key>
+	<string>????</string>
+	<key>CFBundleVersion</key>
+	<string>1.0</string>
+	<key>NSMainNibFile</key>
+	<string>MainMenu</string>
+	<key>NSPrincipalClass</key>
+	<string>NSApplication</string>
+	<key>BreakpadProductDisplay</key>
+	<string>Breakpad Tester</string>
+	<key>BreakpadProduct</key>
+	<string>Breakpad_Tester</string>
+	<key>BreakpadVersion</key>
+	<string>1.2.3.4</string>
+	<key>BreakpadReportInterval</key>
+	<string>10</string>
+	<key>BreakpadSkipConfirm</key>
+	<string>NO</string>
+	<key>BreakpadSendAndExit</key>
+	<string>YES</string>
+	<key>BreakpadRequestEmail</key>
+	<string>YES</string>
+	<key>BreakpadRequestComments</key>
+	<string>YES</string>
+	<key>BreakpadVendor</key>
+	<string>Foo Bar Corp, Incorporated, LTD, LLC</string>
+	<key>BreakpadServerParameters</key>
+	<dict>
+	  <key>Param1</key>
+	  <string>Value1</string>
+	  <key>Param2</key>
+	  <string>Value2</string>
+	</dict>
+	<key>LSUIElement</key>
+	<string>1</string>
+</dict>
+</plist>
diff --git a/google-breakpad/src/client/mac/testapp/TestClass.h b/google-breakpad/src/client/mac/testapp/TestClass.h
new file mode 100644
index 0000000..0a6d736
--- /dev/null
+++ b/google-breakpad/src/client/mac/testapp/TestClass.h
@@ -0,0 +1,37 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#import <Cocoa/Cocoa.h>
+
+@interface TestClass : NSObject {
+}
+
+- (void)wait;
+
+@end
diff --git a/google-breakpad/src/client/mac/testapp/TestClass.mm b/google-breakpad/src/client/mac/testapp/TestClass.mm
new file mode 100644
index 0000000..6e6a883
--- /dev/null
+++ b/google-breakpad/src/client/mac/testapp/TestClass.mm
@@ -0,0 +1,95 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include <unistd.h>
+
+#import "TestClass.h"
+
+struct AStruct {
+  int x;
+  float y;
+  double z;
+};
+
+class InternalTestClass {
+ public:
+  InternalTestClass(int a) : a_(a) {}
+  ~InternalTestClass() {}
+
+  void snooze(float a);
+  void snooze(int a);
+  int snooze(int a, float b);
+
+ protected:
+  int a_;
+  AStruct s_;
+
+  static void InternalFunction(AStruct &s);
+  static float kStaticFloatValue;
+};
+
+void InternalTestClass::snooze(float a) {
+  InternalFunction(s_);
+  sleep(a_ * a);
+}
+
+void InternalTestClass::snooze(int a) {
+  InternalFunction(s_);
+  sleep(a_ * a);
+}
+
+int InternalTestClass::snooze(int a, float b) {
+  InternalFunction(s_);
+  sleep(a_ * a * b);
+
+  return 33;
+}
+
+void InternalTestClass::InternalFunction(AStruct &s) {
+  s.x = InternalTestClass::kStaticFloatValue;
+}
+
+float InternalTestClass::kStaticFloatValue = 42;
+
+static float PlainOldFunction() {
+  return 3.14145f;
+}
+
+@implementation TestClass
+
+- (void)wait {
+  InternalTestClass t(10);
+  float z = PlainOldFunction();
+
+  while (1) {
+    t.snooze(z);
+  }
+}
+
+@end
diff --git a/google-breakpad/src/client/mac/testapp/bomb.icns b/google-breakpad/src/client/mac/testapp/bomb.icns
new file mode 100644
index 0000000..c360dbf
--- /dev/null
+++ b/google-breakpad/src/client/mac/testapp/bomb.icns
Binary files differ
diff --git a/google-breakpad/src/client/mac/testapp/crashInMain b/google-breakpad/src/client/mac/testapp/crashInMain
new file mode 100755
index 0000000..03bb317
--- /dev/null
+++ b/google-breakpad/src/client/mac/testapp/crashInMain
Binary files differ
diff --git a/google-breakpad/src/client/mac/testapp/crashduringload b/google-breakpad/src/client/mac/testapp/crashduringload
new file mode 100755
index 0000000..5ca9deb
--- /dev/null
+++ b/google-breakpad/src/client/mac/testapp/crashduringload
Binary files differ
diff --git a/google-breakpad/src/client/mac/testapp/main.m b/google-breakpad/src/client/mac/testapp/main.m
new file mode 100644
index 0000000..1ed19bf
--- /dev/null
+++ b/google-breakpad/src/client/mac/testapp/main.m
@@ -0,0 +1,34 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#import <Cocoa/Cocoa.h>
+
+int main(int argc, char *argv[]) {
+  return NSApplicationMain(argc,  (const char **) argv);
+}
diff --git a/google-breakpad/src/client/mac/tests/BreakpadFramework_Test.mm b/google-breakpad/src/client/mac/tests/BreakpadFramework_Test.mm
new file mode 100644
index 0000000..2ea103c
--- /dev/null
+++ b/google-breakpad/src/client/mac/tests/BreakpadFramework_Test.mm
@@ -0,0 +1,217 @@
+// Copyright (c) 2009, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// BreakpadFramework_Test.mm
+// Test case file for Breakpad.h/mm.
+//
+
+#import "GTMSenTestCase.h"
+#import "Breakpad.h"
+
+#include <mach/mach.h>
+
+@interface BreakpadFramework_Test : GTMTestCase {
+ @private
+  int last_exception_code_;
+  int last_exception_type_;
+  mach_port_t last_exception_thread_;
+  // We're not using Obj-C BOOL because we need to interop with
+  // Breakpad's callback.
+  bool shouldHandleException_;
+}
+
+// This method is used by a callback used by test cases to determine
+// whether to return true or false to Breakpad when handling an
+// exception.
+- (bool)shouldHandleException;
+// This method returns a minimal dictionary that has what
+// Breakpad needs to initialize.
+- (NSMutableDictionary *)breakpadInitializationDictionary;
+// This method is used by the exception handling callback
+// to communicate to test cases the properites of the last
+// exception.
+- (void)setLastExceptionType:(int)type andCode:(int)code
+                   andThread:(mach_port_t)thread;
+@end
+
+// Callback for Breakpad exceptions
+bool myBreakpadCallback(int exception_type,
+                        int exception_code,
+                        mach_port_t crashing_thread,
+                        void *context);
+
+bool myBreakpadCallback(int exception_type,
+                        int exception_code,
+                        mach_port_t crashing_thread,
+                        void *context) {
+  BreakpadFramework_Test *testCaseClass =
+    (BreakpadFramework_Test *)context;
+  [testCaseClass setLastExceptionType:exception_type
+                              andCode:exception_code
+                            andThread:crashing_thread];
+  bool shouldHandleException =
+    [testCaseClass shouldHandleException];
+  NSLog(@"Callback returning %d", shouldHandleException);
+  return shouldHandleException;
+}
+const int kNoLastExceptionCode = -1;
+const int kNoLastExceptionType = -1;
+const mach_port_t kNoLastExceptionThread = MACH_PORT_NULL;
+
+@implementation BreakpadFramework_Test
+- (void) initializeExceptionStateVariables {
+  last_exception_code_ = kNoLastExceptionCode;
+  last_exception_type_ = kNoLastExceptionType;
+  last_exception_thread_ = kNoLastExceptionThread;
+}
+
+- (NSMutableDictionary *)breakpadInitializationDictionary {
+  NSMutableDictionary *breakpadParams =
+    [NSMutableDictionary dictionaryWithCapacity:3];
+
+  [breakpadParams setObject:@"UnitTests" forKey:@BREAKPAD_PRODUCT];
+  [breakpadParams setObject:@"1.0" forKey:@BREAKPAD_VERSION];
+  [breakpadParams setObject:@"http://staging" forKey:@BREAKPAD_URL];
+  return breakpadParams;
+}
+
+- (bool)shouldHandleException {
+  return shouldHandleException_;
+}
+
+- (void)setLastExceptionType:(int)type 
+		     andCode:(int)code
+                   andThread:(mach_port_t)thread {
+  last_exception_type_ = type;
+  last_exception_code_ = code;
+  last_exception_thread_ = thread;
+}
+
+// Test that the parameters mark required actually enable Breakpad to
+// be initialized.
+- (void)testBreakpadInstantiationWithRequiredParameters {
+  BreakpadRef b = BreakpadCreate([self breakpadInitializationDictionary]);
+  STAssertNotNULL(b, @"BreakpadCreate failed with required parameters");
+  BreakpadRelease(b);
+}
+
+// Test that Breakpad fails to initialize cleanly when required
+// parameters are not present.
+- (void)testBreakpadInstantiationWithoutRequiredParameters {
+  NSMutableDictionary *breakpadDictionary =
+    [self breakpadInitializationDictionary];
+
+  // Skip setting version, so that BreakpadCreate fails.
+  [breakpadDictionary removeObjectForKey:@BREAKPAD_VERSION];
+  BreakpadRef b = BreakpadCreate(breakpadDictionary);
+  STAssertNULL(b, @"BreakpadCreate did not fail when missing a required"
+               " parameter!");
+
+  breakpadDictionary = [self breakpadInitializationDictionary];
+  // Now test with no product
+  [breakpadDictionary removeObjectForKey:@BREAKPAD_PRODUCT];
+  b = BreakpadCreate(breakpadDictionary);
+  STAssertNULL(b, @"BreakpadCreate did not fail when missing a required"
+               " parameter!");
+
+  breakpadDictionary = [self breakpadInitializationDictionary];
+  // Now test with no URL
+  [breakpadDictionary removeObjectForKey:@BREAKPAD_URL];
+  b = BreakpadCreate(breakpadDictionary);
+  STAssertNULL(b, @"BreakpadCreate did not fail when missing a required"
+               " parameter!");
+  BreakpadRelease(b);
+}
+
+// Test to ensure that when we call BreakpadAddUploadParameter,
+// it's added to the dictionary correctly(this test depends on
+// some internal details of Breakpad, namely, the special prefix
+// that it uses to figure out which key/value pairs to upload).
+- (void)testAddingBreakpadServerVariable {
+  NSMutableDictionary *breakpadDictionary =
+    [self breakpadInitializationDictionary];
+
+  BreakpadRef b = BreakpadCreate(breakpadDictionary);
+  STAssertNotNULL(b, @"BreakpadCreate failed with valid dictionary!");
+
+  BreakpadAddUploadParameter(b,
+                             @"key",
+                             @"value");
+
+  // Test that it did not add the key/value directly, e.g. without
+  // prepending the key with the prefix.
+  STAssertNil(BreakpadKeyValue(b, @"key"),
+              @"AddUploadParameter added key directly to dictionary"
+              " instead of prepending it!");
+
+  NSString *prependedKeyname =
+    [@BREAKPAD_SERVER_PARAMETER_PREFIX stringByAppendingString:@"key"];
+    
+  STAssertEqualStrings(BreakpadKeyValue(b, prependedKeyname),
+                       @"value",
+                       @"Calling BreakpadAddUploadParameter did not prepend "
+                       "key name");
+  BreakpadRelease(b);
+}
+
+// Test that when we do on-demand minidump generation,
+// the exception code/type/thread are set properly.
+- (void)testFilterCallbackReturnsFalse {
+  NSMutableDictionary *breakpadDictionary =
+    [self breakpadInitializationDictionary];
+
+  BreakpadRef b = BreakpadCreate(breakpadDictionary);
+  STAssertNotNULL(b, @"BreakpadCreate failed with valid dictionary!");
+  BreakpadSetFilterCallback(b, &myBreakpadCallback, self);
+
+  // This causes the callback to return false, meaning
+  // Breakpad won't take the exception
+  shouldHandleException_ = false;
+
+  [self initializeExceptionStateVariables];
+  STAssertEquals(last_exception_type_, kNoLastExceptionType,
+                 @"Last exception type not initialized correctly.");
+  STAssertEquals(last_exception_code_, kNoLastExceptionCode,
+                 @"Last exception code not initialized correctly.");
+  STAssertEquals(last_exception_thread_, kNoLastExceptionThread,
+                 @"Last exception thread is not initialized correctly.");
+
+  // Cause Breakpad's exception handler to be invoked.
+  BreakpadGenerateAndSendReport(b);
+
+  STAssertEquals(last_exception_type_, 0,
+                 @"Last exception type is not 0 for on demand");
+  STAssertEquals(last_exception_code_, 0,
+                 @"Last exception code is not 0 for on demand");
+  STAssertEquals(last_exception_thread_, mach_thread_self(),
+                 @"Last exception thread is not mach_thread_self() "
+                 "for on demand");
+}
+
+@end
diff --git a/google-breakpad/src/client/mac/tests/crash_generation_server_test.cc b/google-breakpad/src/client/mac/tests/crash_generation_server_test.cc
new file mode 100644
index 0000000..0164f4a
--- /dev/null
+++ b/google-breakpad/src/client/mac/tests/crash_generation_server_test.cc
@@ -0,0 +1,398 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// crash_generation_server_test.cc
+// Unit tests for CrashGenerationServer
+
+#include <dirent.h>
+#include <glob.h>
+#include <stdint.h>
+#include <sys/wait.h>
+#include <unistd.h>
+
+#include <string>
+
+#include "breakpad_googletest_includes.h"
+#include "client/mac/crash_generation/client_info.h"
+#include "client/mac/crash_generation/crash_generation_client.h"
+#include "client/mac/crash_generation/crash_generation_server.h"
+#include "client/mac/handler/exception_handler.h"
+#include "client/mac/tests/spawn_child_process.h"
+#include "common/tests/auto_tempdir.h"
+#include "google_breakpad/processor/minidump.h"
+
+namespace google_breakpad {
+// This acts as the log sink for INFO logging from the processor
+// logging code. The logging output confuses XCode and makes it think
+// there are unit test failures. testlogging.h handles the overriding.
+std::ostringstream info_log;
+}
+
+namespace {
+using std::string;
+using google_breakpad::AutoTempDir;
+using google_breakpad::ClientInfo;
+using google_breakpad::CrashGenerationClient;
+using google_breakpad::CrashGenerationServer;
+using google_breakpad::ExceptionHandler;
+using google_breakpad::Minidump;
+using google_breakpad::MinidumpContext;
+using google_breakpad::MinidumpException;
+using google_breakpad::MinidumpModule;
+using google_breakpad::MinidumpModuleList;
+using google_breakpad::MinidumpSystemInfo;
+using google_breakpad::MinidumpThread;
+using google_breakpad::MinidumpThreadList;
+using testing::Test;
+using namespace google_breakpad_test;
+
+class CrashGenerationServerTest : public Test {
+public:
+  // The port name to receive messages on
+  char mach_port_name[128];
+  // Filename of the last dump that was generated
+  string last_dump_name;
+  // PID of the child process
+  pid_t child_pid;
+  // A temp dir
+  AutoTempDir temp_dir;
+  // Counter just to ensure that we don't hit the same port again
+  static int i;
+  bool filter_callback_called;
+
+  void SetUp() {
+    sprintf(mach_port_name,
+            "com.google.breakpad.ServerTest.%d.%d", getpid(),
+            CrashGenerationServerTest::i++);
+    child_pid = (pid_t)-1;
+    filter_callback_called = false;
+  }
+};
+int CrashGenerationServerTest::i = 0;
+
+// Test that starting and stopping a server works
+TEST_F(CrashGenerationServerTest, testStartStopServer) {
+  CrashGenerationServer server(mach_port_name,
+                               NULL,  // filter callback
+                               NULL,  // filter context
+                               NULL,  // dump callback
+                               NULL,  // dump context
+                               NULL,  // exit callback
+                               NULL,  // exit context
+                               false, // generate dumps
+                               ""); // dump path
+  ASSERT_TRUE(server.Start());
+  ASSERT_TRUE(server.Stop());
+}
+
+// Test that requesting a dump via CrashGenerationClient works
+// Test without actually dumping
+TEST_F(CrashGenerationServerTest, testRequestDumpNoDump) {
+  CrashGenerationServer server(mach_port_name,
+                               NULL,  // filter callback
+                               NULL,  // filter context
+                               NULL,  // dump callback
+                               NULL,  // dump context
+                               NULL,  // exit callback
+                               NULL,  // exit context
+                               false, // don't generate dumps
+                               temp_dir.path()); // dump path
+  ASSERT_TRUE(server.Start());
+
+  pid_t pid = fork();
+  ASSERT_NE(-1, pid);
+  if (pid == 0) {
+    CrashGenerationClient client(mach_port_name);
+    bool result = client.RequestDump();
+    exit(result ? 0 : 1);
+  }
+
+  int ret;
+  ASSERT_EQ(pid, waitpid(pid, &ret, 0));
+  EXPECT_TRUE(WIFEXITED(ret));
+  EXPECT_EQ(0, WEXITSTATUS(ret));
+  EXPECT_TRUE(server.Stop());
+  // check that no minidump was written
+  string pattern = temp_dir.path() + "/*";
+  glob_t dirContents;
+  ret = glob(pattern.c_str(), GLOB_NOSORT, NULL, &dirContents);
+  EXPECT_EQ(GLOB_NOMATCH, ret);
+  if (ret != GLOB_NOMATCH)
+    globfree(&dirContents);
+}
+
+void dumpCallback(void *context, const ClientInfo &client_info,
+                  const std::string &file_path) {
+  if (context) {
+    CrashGenerationServerTest* self =
+        reinterpret_cast<CrashGenerationServerTest*>(context);
+    if (!file_path.empty())
+      self->last_dump_name = file_path;
+    self->child_pid = client_info.pid();
+  }
+}
+
+void *RequestDump(void *context) {
+  CrashGenerationClient client((const char*)context);
+  bool result = client.RequestDump();
+  return (void*)(result ? 0 : 1);
+}
+
+// Test that actually writing a minidump works
+TEST_F(CrashGenerationServerTest, testRequestDump) {
+  CrashGenerationServer server(mach_port_name,
+                               NULL,  // filter callback
+                               NULL,  // filter context
+                               dumpCallback,  // dump callback
+                               this,  // dump context
+                               NULL,  // exit callback
+                               NULL,  // exit context
+                               true, //  generate dumps
+                               temp_dir.path()); // dump path
+  ASSERT_TRUE(server.Start());
+
+  pid_t pid = fork();
+  ASSERT_NE(-1, pid);
+  if (pid == 0) {
+    // Have to spawn off a separate thread to request the dump,
+    // because MinidumpGenerator assumes the handler thread is not
+    // the only thread
+    pthread_t thread;
+    if (pthread_create(&thread, NULL, RequestDump, (void*)mach_port_name) != 0)
+      exit(1);
+    void* result;
+    pthread_join(thread, &result);
+    exit(reinterpret_cast<intptr_t>(result));
+  }
+
+  int ret;
+  ASSERT_EQ(pid, waitpid(pid, &ret, 0));
+  EXPECT_TRUE(WIFEXITED(ret));
+  EXPECT_EQ(0, WEXITSTATUS(ret));
+  EXPECT_TRUE(server.Stop());
+  // check that minidump was written
+  ASSERT_FALSE(last_dump_name.empty());
+  struct stat st;
+  EXPECT_EQ(0, stat(last_dump_name.c_str(), &st));
+  EXPECT_LT(0, st.st_size);
+  // check client's PID
+  ASSERT_EQ(pid, child_pid);
+}
+
+static void Crasher() {
+  int *a = (int*)0x42;
+
+  fprintf(stdout, "Going to crash...\n");
+  fprintf(stdout, "A = %d", *a);
+}
+
+// Test that crashing a child process with an OOP ExceptionHandler installed
+// results in a minidump being written by the CrashGenerationServer in
+// the parent.
+TEST_F(CrashGenerationServerTest, testChildProcessCrash) {
+  CrashGenerationServer server(mach_port_name,
+                               NULL,  // filter callback
+                               NULL,  // filter context
+                               dumpCallback,  // dump callback
+                               this,  // dump context
+                               NULL,  // exit callback
+                               NULL,  // exit context
+                               true, //  generate dumps
+                               temp_dir.path()); // dump path
+  ASSERT_TRUE(server.Start());
+
+  pid_t pid = fork();
+  ASSERT_NE(-1, pid);
+  if (pid == 0) {
+    // Instantiate an OOP exception handler.
+    ExceptionHandler eh("", NULL, NULL, NULL, true, mach_port_name);
+    Crasher();
+    // not reached
+    exit(0);
+  }
+
+  int ret;
+  ASSERT_EQ(pid, waitpid(pid, &ret, 0));
+  EXPECT_FALSE(WIFEXITED(ret));
+  EXPECT_TRUE(server.Stop());
+  // check that minidump was written
+  ASSERT_FALSE(last_dump_name.empty());
+  struct stat st;
+  EXPECT_EQ(0, stat(last_dump_name.c_str(), &st));
+  EXPECT_LT(0, st.st_size);
+
+  // Read the minidump, sanity check some data.
+  Minidump minidump(last_dump_name.c_str());
+  ASSERT_TRUE(minidump.Read());
+
+  MinidumpSystemInfo* system_info = minidump.GetSystemInfo();
+  ASSERT_TRUE(system_info);
+  const MDRawSystemInfo* raw_info = system_info->system_info();
+  ASSERT_TRUE(raw_info);
+  EXPECT_EQ(kNativeArchitecture, raw_info->processor_architecture);
+
+  MinidumpThreadList* thread_list = minidump.GetThreadList();
+  ASSERT_TRUE(thread_list);
+  ASSERT_EQ((unsigned int)1, thread_list->thread_count());
+
+  MinidumpThread* main_thread = thread_list->GetThreadAtIndex(0);
+  ASSERT_TRUE(main_thread);
+  MinidumpContext* context = main_thread->GetContext();
+  ASSERT_TRUE(context);
+  EXPECT_EQ(kNativeContext, context->GetContextCPU());
+
+  MinidumpModuleList* module_list = minidump.GetModuleList();
+  ASSERT_TRUE(module_list);
+  const MinidumpModule* main_module = module_list->GetMainModule();
+  ASSERT_TRUE(main_module);
+  EXPECT_EQ(GetExecutablePath(), main_module->code_file());
+}
+
+#if (MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6) && \
+  (defined(__x86_64__) || defined(__i386__))
+// Test that crashing a child process of a different architecture
+// produces a valid minidump.
+TEST_F(CrashGenerationServerTest, testChildProcessCrashCrossArchitecture) {
+  CrashGenerationServer server(mach_port_name,
+                               NULL,  // filter callback
+                               NULL,  // filter context
+                               dumpCallback,  // dump callback
+                               this,  // dump context
+                               NULL,  // exit callback
+                               NULL,  // exit context
+                               true, //  generate dumps
+                               temp_dir.path()); // dump path
+  ASSERT_TRUE(server.Start());
+
+  // Spawn a child process
+  string helper_path = GetHelperPath();
+  const char* argv[] = {
+    helper_path.c_str(),
+    "crash",
+    mach_port_name,
+    NULL
+  };
+  pid_t pid = spawn_child_process(argv);
+  ASSERT_NE(-1, pid);
+
+  int ret;
+  ASSERT_EQ(pid, waitpid(pid, &ret, 0));
+  EXPECT_FALSE(WIFEXITED(ret));
+  EXPECT_TRUE(server.Stop());
+  // check that minidump was written
+  ASSERT_FALSE(last_dump_name.empty());
+  struct stat st;
+  EXPECT_EQ(0, stat(last_dump_name.c_str(), &st));
+  EXPECT_LT(0, st.st_size);
+
+const MDCPUArchitecture kExpectedArchitecture =
+#if defined(__x86_64__)
+  MD_CPU_ARCHITECTURE_X86
+#elif defined(__i386__)
+  MD_CPU_ARCHITECTURE_AMD64
+#endif
+  ;
+const uint32_t kExpectedContext =
+#if defined(__i386__)
+  MD_CONTEXT_AMD64
+#elif defined(__x86_64__)
+  MD_CONTEXT_X86
+#endif
+  ;
+
+  // Read the minidump, sanity check some data.
+  Minidump minidump(last_dump_name.c_str());
+  ASSERT_TRUE(minidump.Read());
+
+  MinidumpSystemInfo* system_info = minidump.GetSystemInfo();
+  ASSERT_TRUE(system_info);
+  const MDRawSystemInfo* raw_info = system_info->system_info();
+  ASSERT_TRUE(raw_info);
+  EXPECT_EQ(kExpectedArchitecture, raw_info->processor_architecture);
+
+  MinidumpThreadList* thread_list = minidump.GetThreadList();
+  ASSERT_TRUE(thread_list);
+  ASSERT_EQ((unsigned int)1, thread_list->thread_count());
+
+  MinidumpThread* main_thread = thread_list->GetThreadAtIndex(0);
+  ASSERT_TRUE(main_thread);
+  MinidumpContext* context = main_thread->GetContext();
+  ASSERT_TRUE(context);
+  EXPECT_EQ(kExpectedContext, context->GetContextCPU());
+
+  MinidumpModuleList* module_list = minidump.GetModuleList();
+  ASSERT_TRUE(module_list);
+  const MinidumpModule* main_module = module_list->GetMainModule();
+  ASSERT_TRUE(main_module);
+  EXPECT_EQ(helper_path, main_module->code_file());
+}
+#endif
+
+bool filter_callback(void* context) {
+  CrashGenerationServerTest* self =
+    reinterpret_cast<CrashGenerationServerTest*>(context);
+  self->filter_callback_called = true;
+  // veto dump generation
+  return false;
+}
+
+// Test that a filter callback can veto minidump writing.
+TEST_F(CrashGenerationServerTest, testFilter) {
+  CrashGenerationServer server(mach_port_name,
+                               filter_callback,  // filter callback
+                               this,            // filter context
+                               dumpCallback,  // dump callback
+                               this,  // dump context
+                               NULL,  // exit callback
+                               NULL,  // exit context
+                               true, //  generate dumps
+                               temp_dir.path()); // dump path
+  ASSERT_TRUE(server.Start());
+
+  pid_t pid = fork();
+  ASSERT_NE(-1, pid);
+  if (pid == 0) {
+    // Instantiate an OOP exception handler.
+    ExceptionHandler eh("", NULL, NULL, NULL, true, mach_port_name);
+    Crasher();
+    // not reached
+    exit(0);
+  }
+
+  int ret;
+  ASSERT_EQ(pid, waitpid(pid, &ret, 0));
+  EXPECT_FALSE(WIFEXITED(ret));
+  EXPECT_TRUE(server.Stop());
+
+  // check that no minidump was written
+  EXPECT_TRUE(last_dump_name.empty());
+  EXPECT_TRUE(filter_callback_called);
+}
+
+}  // namespace
diff --git a/google-breakpad/src/client/mac/tests/exception_handler_test.cc b/google-breakpad/src/client/mac/tests/exception_handler_test.cc
new file mode 100644
index 0000000..e19944d
--- /dev/null
+++ b/google-breakpad/src/client/mac/tests/exception_handler_test.cc
@@ -0,0 +1,711 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// exception_handler_test.cc: Unit tests for google_breakpad::ExceptionHandler
+
+#include <pthread.h>
+#include <sys/mman.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+#include "breakpad_googletest_includes.h"
+#include "client/mac/handler/exception_handler.h"
+#include "common/mac/MachIPC.h"
+#include "common/tests/auto_tempdir.h"
+#include "google_breakpad/processor/minidump.h"
+
+namespace google_breakpad {
+// This acts as the log sink for INFO logging from the processor
+// logging code. The logging output confuses XCode and makes it think
+// there are unit test failures. testlogging.h handles the overriding.
+std::ostringstream info_log;
+}
+
+namespace {
+using std::string;
+using google_breakpad::AutoTempDir;
+using google_breakpad::ExceptionHandler;
+using google_breakpad::MachPortSender;
+using google_breakpad::MachReceiveMessage;
+using google_breakpad::MachSendMessage;
+using google_breakpad::Minidump;
+using google_breakpad::MinidumpContext;
+using google_breakpad::MinidumpException;
+using google_breakpad::MinidumpMemoryList;
+using google_breakpad::MinidumpMemoryRegion;
+using google_breakpad::ReceivePort;
+using testing::Test;
+
+class ExceptionHandlerTest : public Test {
+ public:
+  void InProcessCrash(bool aborting);
+  AutoTempDir tempDir;
+  string lastDumpName;
+};
+
+static void Crasher() {
+  int *a = (int*)0x42;
+
+  fprintf(stdout, "Going to crash...\n");
+  fprintf(stdout, "A = %d", *a);
+}
+
+static void AbortCrasher() {
+  fprintf(stdout, "Going to crash...\n");
+  abort();
+}
+
+static void SoonToCrash(void(*crasher)()) {
+  crasher();
+}
+
+static bool MDCallback(const char *dump_dir, const char *file_name,
+                       void *context, bool success) {
+  string path(dump_dir);
+  path.append("/");
+  path.append(file_name);
+  path.append(".dmp");
+
+  int fd = *reinterpret_cast<int*>(context);
+  (void)write(fd, path.c_str(), path.length() + 1);
+  close(fd);
+  exit(0);
+  // not reached
+  return true;
+}
+
+void ExceptionHandlerTest::InProcessCrash(bool aborting) {
+  // Give the child process a pipe to report back on.
+  int fds[2];
+  ASSERT_EQ(0, pipe(fds));
+  // Fork off a child process so it can crash.
+  pid_t pid = fork();
+  if (pid == 0) {
+    // In the child process.
+    close(fds[0]);
+    ExceptionHandler eh(tempDir.path(), NULL, MDCallback, &fds[1], true, NULL);
+    // crash
+    SoonToCrash(aborting ? &AbortCrasher : &Crasher);
+    // not reached
+    exit(1);
+  }
+  // In the parent process.
+  ASSERT_NE(-1, pid);
+  // Wait for the background process to return the minidump file.
+  close(fds[1]);
+  char minidump_file[PATH_MAX];
+  ssize_t nbytes = read(fds[0], minidump_file, sizeof(minidump_file));
+  ASSERT_NE(0, nbytes);
+
+  Minidump minidump(minidump_file);
+  ASSERT_TRUE(minidump.Read());
+
+  MinidumpException* exception = minidump.GetException();
+  ASSERT_TRUE(exception);
+
+  const MDRawExceptionStream* raw_exception = exception->exception();
+  ASSERT_TRUE(raw_exception);
+
+  if (aborting) {
+    EXPECT_EQ(MD_EXCEPTION_MAC_SOFTWARE,
+              raw_exception->exception_record.exception_code);
+    EXPECT_EQ(MD_EXCEPTION_CODE_MAC_ABORT,
+              raw_exception->exception_record.exception_flags);
+  } else {
+    EXPECT_EQ(MD_EXCEPTION_MAC_BAD_ACCESS,
+              raw_exception->exception_record.exception_code);
+#if defined(__x86_64__)
+    EXPECT_EQ(MD_EXCEPTION_CODE_MAC_INVALID_ADDRESS,
+              raw_exception->exception_record.exception_flags);
+#elif defined(__i386__)
+    EXPECT_EQ(MD_EXCEPTION_CODE_MAC_PROTECTION_FAILURE,
+              raw_exception->exception_record.exception_flags);
+#endif
+  }
+
+  const MinidumpContext* context = exception->GetContext();
+  ASSERT_TRUE(context);
+
+  uint64_t instruction_pointer;
+  ASSERT_TRUE(context->GetInstructionPointer(&instruction_pointer));
+
+  // Ideally would like to sanity check that abort() is on the stack
+  // but that's hard.
+  MinidumpMemoryList* memory_list = minidump.GetMemoryList();
+  ASSERT_TRUE(memory_list);
+  MinidumpMemoryRegion* region =
+      memory_list->GetMemoryRegionForAddress(instruction_pointer);
+  EXPECT_TRUE(region);
+
+  // Child process should have exited with a zero status.
+  int ret;
+  ASSERT_EQ(pid, waitpid(pid, &ret, 0));
+  EXPECT_NE(0, WIFEXITED(ret));
+  EXPECT_EQ(0, WEXITSTATUS(ret));
+}
+
+TEST_F(ExceptionHandlerTest, InProcess) {
+  InProcessCrash(false);
+}
+
+TEST_F(ExceptionHandlerTest, InProcessAbort) {
+  InProcessCrash(true);
+}
+
+static bool DumpNameMDCallback(const char *dump_dir, const char *file_name,
+                               void *context, bool success) {
+  ExceptionHandlerTest *self = reinterpret_cast<ExceptionHandlerTest*>(context);
+  if (dump_dir && file_name) {
+    self->lastDumpName = dump_dir;
+    self->lastDumpName += "/";
+    self->lastDumpName += file_name;
+    self->lastDumpName += ".dmp";
+  }
+  return true;
+}
+
+TEST_F(ExceptionHandlerTest, WriteMinidump) {
+  ExceptionHandler eh(tempDir.path(), NULL, DumpNameMDCallback, this, true,
+                      NULL);
+  ASSERT_TRUE(eh.WriteMinidump());
+
+  // Ensure that minidump file exists and is > 0 bytes.
+  ASSERT_FALSE(lastDumpName.empty());
+  struct stat st;
+  ASSERT_EQ(0, stat(lastDumpName.c_str(), &st));
+  ASSERT_LT(0, st.st_size);
+
+  // The minidump should not contain an exception stream.
+  Minidump minidump(lastDumpName);
+  ASSERT_TRUE(minidump.Read());
+
+  MinidumpException* exception = minidump.GetException();
+  EXPECT_FALSE(exception);
+}
+
+TEST_F(ExceptionHandlerTest, WriteMinidumpWithException) {
+  ExceptionHandler eh(tempDir.path(), NULL, DumpNameMDCallback, this, true,
+                      NULL);
+  ASSERT_TRUE(eh.WriteMinidump(true));
+
+  // Ensure that minidump file exists and is > 0 bytes.
+  ASSERT_FALSE(lastDumpName.empty());
+  struct stat st;
+  ASSERT_EQ(0, stat(lastDumpName.c_str(), &st));
+  ASSERT_LT(0, st.st_size);
+
+  // The minidump should contain an exception stream.
+  Minidump minidump(lastDumpName);
+  ASSERT_TRUE(minidump.Read());
+
+  MinidumpException* exception = minidump.GetException();
+  ASSERT_TRUE(exception);
+  const MDRawExceptionStream* raw_exception = exception->exception();
+  ASSERT_TRUE(raw_exception);
+
+  EXPECT_EQ(MD_EXCEPTION_MAC_BREAKPOINT,
+            raw_exception->exception_record.exception_code);
+}
+
+TEST_F(ExceptionHandlerTest, DumpChildProcess) {
+  const int kTimeoutMs = 2000;
+  // Create a mach port to receive the child task on.
+  char machPortName[128];
+  sprintf(machPortName, "ExceptionHandlerTest.%d", getpid());
+  ReceivePort parent_recv_port(machPortName);
+
+  // Give the child process a pipe to block on.
+  int fds[2];
+  ASSERT_EQ(0, pipe(fds));
+
+  // Fork off a child process to dump.
+  pid_t pid = fork();
+  if (pid == 0) {
+    // In the child process
+    close(fds[1]);
+
+    // Send parent process the task and thread ports.
+    MachSendMessage child_message(0);
+    child_message.AddDescriptor(mach_task_self());
+    child_message.AddDescriptor(mach_thread_self());
+
+    MachPortSender child_sender(machPortName);
+    if (child_sender.SendMessage(child_message, kTimeoutMs) != KERN_SUCCESS)
+      exit(1);
+
+    // Wait for the parent process.
+    uint8_t data;
+    read(fds[0], &data, 1);
+    exit(0);
+  }
+  // In the parent process.
+  ASSERT_NE(-1, pid);
+  close(fds[0]);
+
+  // Read the child's task and thread ports.
+  MachReceiveMessage child_message;
+  ASSERT_EQ(KERN_SUCCESS,
+	    parent_recv_port.WaitForMessage(&child_message, kTimeoutMs));
+  mach_port_t child_task = child_message.GetTranslatedPort(0);
+  mach_port_t child_thread = child_message.GetTranslatedPort(1);
+  ASSERT_NE((mach_port_t)MACH_PORT_NULL, child_task);
+  ASSERT_NE((mach_port_t)MACH_PORT_NULL, child_thread);
+
+  // Write a minidump of the child process.
+  bool result = ExceptionHandler::WriteMinidumpForChild(child_task,
+                                                        child_thread,
+                                                        tempDir.path(),
+                                                        DumpNameMDCallback,
+                                                        this);
+  ASSERT_EQ(true, result);
+
+  // Ensure that minidump file exists and is > 0 bytes.
+  ASSERT_FALSE(lastDumpName.empty());
+  struct stat st;
+  ASSERT_EQ(0, stat(lastDumpName.c_str(), &st));
+  ASSERT_LT(0, st.st_size);
+
+  // Unblock child process
+  uint8_t data = 1;
+  (void)write(fds[1], &data, 1);
+
+  // Child process should have exited with a zero status.
+  int ret;
+  ASSERT_EQ(pid, waitpid(pid, &ret, 0));
+  EXPECT_NE(0, WIFEXITED(ret));
+  EXPECT_EQ(0, WEXITSTATUS(ret));
+}
+
+// Test that memory around the instruction pointer is written
+// to the dump as a MinidumpMemoryRegion.
+TEST_F(ExceptionHandlerTest, InstructionPointerMemory) {
+  // Give the child process a pipe to report back on.
+  int fds[2];
+  ASSERT_EQ(0, pipe(fds));
+
+  // These are defined here so the parent can use them to check the
+  // data from the minidump afterwards.
+  const uint32_t kMemorySize = 256;  // bytes
+  const int kOffset = kMemorySize / 2;
+  // This crashes with SIGILL on x86/x86-64/arm.
+  const unsigned char instructions[] = { 0xff, 0xff, 0xff, 0xff };
+
+  pid_t pid = fork();
+  if (pid == 0) {
+    close(fds[0]);
+    ExceptionHandler eh(tempDir.path(), NULL, MDCallback, &fds[1], true, NULL);
+    // Get some executable memory.
+    char* memory =
+      reinterpret_cast<char*>(mmap(NULL,
+                                   kMemorySize,
+                                   PROT_READ | PROT_WRITE | PROT_EXEC,
+                                   MAP_PRIVATE | MAP_ANON,
+                                   -1,
+                                   0));
+    if (!memory)
+      exit(0);
+
+    // Write some instructions that will crash. Put them in the middle
+    // of the block of memory, because the minidump should contain 128
+    // bytes on either side of the instruction pointer.
+    memcpy(memory + kOffset, instructions, sizeof(instructions));
+
+    // Now execute the instructions, which should crash.
+    typedef void (*void_function)(void);
+    void_function memory_function =
+      reinterpret_cast<void_function>(memory + kOffset);
+    memory_function();
+    // not reached
+    exit(1);
+  }
+  // In the parent process.
+  ASSERT_NE(-1, pid);
+  close(fds[1]);
+
+  // Wait for the background process to return the minidump file.
+  close(fds[1]);
+  char minidump_file[PATH_MAX];
+  ssize_t nbytes = read(fds[0], minidump_file, sizeof(minidump_file));
+  ASSERT_NE(0, nbytes);
+  // Ensure that minidump file exists and is > 0 bytes.
+  struct stat st;
+  ASSERT_EQ(0, stat(minidump_file, &st));
+  ASSERT_LT(0, st.st_size);
+
+  // Child process should have exited with a zero status.
+  int ret;
+  ASSERT_EQ(pid, waitpid(pid, &ret, 0));
+  EXPECT_NE(0, WIFEXITED(ret));
+  EXPECT_EQ(0, WEXITSTATUS(ret));
+
+  // Read the minidump. Locate the exception record and the
+  // memory list, and then ensure that there is a memory region
+  // in the memory list that covers the instruction pointer from
+  // the exception record.
+  Minidump minidump(minidump_file);
+  ASSERT_TRUE(minidump.Read());
+
+  MinidumpException* exception = minidump.GetException();
+  MinidumpMemoryList* memory_list = minidump.GetMemoryList();
+  ASSERT_TRUE(exception);
+  ASSERT_TRUE(memory_list);
+  ASSERT_NE((unsigned int)0, memory_list->region_count());
+
+  MinidumpContext* context = exception->GetContext();
+  ASSERT_TRUE(context);
+
+  uint64_t instruction_pointer;
+  ASSERT_TRUE(context->GetInstructionPointer(&instruction_pointer));
+
+  MinidumpMemoryRegion* region =
+    memory_list->GetMemoryRegionForAddress(instruction_pointer);
+  EXPECT_TRUE(region);
+
+  EXPECT_EQ(kMemorySize, region->GetSize());
+  const uint8_t* bytes = region->GetMemory();
+  ASSERT_TRUE(bytes);
+
+  uint8_t prefix_bytes[kOffset];
+  uint8_t suffix_bytes[kMemorySize - kOffset - sizeof(instructions)];
+  memset(prefix_bytes, 0, sizeof(prefix_bytes));
+  memset(suffix_bytes, 0, sizeof(suffix_bytes));
+  EXPECT_TRUE(memcmp(bytes, prefix_bytes, sizeof(prefix_bytes)) == 0);
+  EXPECT_TRUE(memcmp(bytes + kOffset, instructions, sizeof(instructions)) == 0);
+  EXPECT_TRUE(memcmp(bytes + kOffset + sizeof(instructions),
+                     suffix_bytes, sizeof(suffix_bytes)) == 0);
+}
+
+// Test that the memory region around the instruction pointer is
+// bounded correctly on the low end.
+TEST_F(ExceptionHandlerTest, InstructionPointerMemoryMinBound) {
+  // Give the child process a pipe to report back on.
+  int fds[2];
+  ASSERT_EQ(0, pipe(fds));
+
+  // These are defined here so the parent can use them to check the
+  // data from the minidump afterwards.
+  const uint32_t kMemorySize = 256;  // bytes
+  const int kOffset = 0;
+  // This crashes with SIGILL on x86/x86-64/arm.
+  const unsigned char instructions[] = { 0xff, 0xff, 0xff, 0xff };
+
+  pid_t pid = fork();
+  if (pid == 0) {
+    close(fds[0]);
+    ExceptionHandler eh(tempDir.path(), NULL, MDCallback, &fds[1], true, NULL);
+    // Get some executable memory.
+    char* memory =
+      reinterpret_cast<char*>(mmap(NULL,
+                                   kMemorySize,
+                                   PROT_READ | PROT_WRITE | PROT_EXEC,
+                                   MAP_PRIVATE | MAP_ANON,
+                                   -1,
+                                   0));
+    if (!memory)
+      exit(0);
+
+    // Write some instructions that will crash. Put them at the start
+    // of the block of memory, to ensure that the memory bounding
+    // works properly.
+    memcpy(memory + kOffset, instructions, sizeof(instructions));
+    
+    // Now execute the instructions, which should crash.
+    typedef void (*void_function)(void);
+    void_function memory_function =
+      reinterpret_cast<void_function>(memory + kOffset);
+    memory_function();
+    // not reached
+    exit(1);
+  }
+  // In the parent process.
+  ASSERT_NE(-1, pid);
+  close(fds[1]);
+
+  // Wait for the background process to return the minidump file.
+  close(fds[1]);
+  char minidump_file[PATH_MAX];
+  ssize_t nbytes = read(fds[0], minidump_file, sizeof(minidump_file));
+  ASSERT_NE(0, nbytes);
+  // Ensure that minidump file exists and is > 0 bytes.
+  struct stat st;
+  ASSERT_EQ(0, stat(minidump_file, &st));
+  ASSERT_LT(0, st.st_size);
+
+  // Child process should have exited with a zero status.
+  int ret;
+  ASSERT_EQ(pid, waitpid(pid, &ret, 0));
+  EXPECT_NE(0, WIFEXITED(ret));
+  EXPECT_EQ(0, WEXITSTATUS(ret));
+
+  // Read the minidump. Locate the exception record and the
+  // memory list, and then ensure that there is a memory region
+  // in the memory list that covers the instruction pointer from
+  // the exception record.
+  Minidump minidump(minidump_file);
+  ASSERT_TRUE(minidump.Read());
+
+  MinidumpException* exception = minidump.GetException();
+  MinidumpMemoryList* memory_list = minidump.GetMemoryList();
+  ASSERT_TRUE(exception);
+  ASSERT_TRUE(memory_list);
+  ASSERT_NE((unsigned int)0, memory_list->region_count());
+
+  MinidumpContext* context = exception->GetContext();
+  ASSERT_TRUE(context);
+
+  uint64_t instruction_pointer;
+  ASSERT_TRUE(context->GetInstructionPointer(&instruction_pointer));
+
+  MinidumpMemoryRegion* region =
+    memory_list->GetMemoryRegionForAddress(instruction_pointer);
+  EXPECT_TRUE(region);
+
+  EXPECT_EQ(kMemorySize / 2, region->GetSize());
+  const uint8_t* bytes = region->GetMemory();
+  ASSERT_TRUE(bytes);
+
+  uint8_t suffix_bytes[kMemorySize / 2 - sizeof(instructions)];
+  memset(suffix_bytes, 0, sizeof(suffix_bytes));
+  EXPECT_TRUE(memcmp(bytes + kOffset, instructions, sizeof(instructions)) == 0);
+  EXPECT_TRUE(memcmp(bytes + kOffset + sizeof(instructions),
+                     suffix_bytes, sizeof(suffix_bytes)) == 0);
+}
+
+// Test that the memory region around the instruction pointer is
+// bounded correctly on the high end.
+TEST_F(ExceptionHandlerTest, InstructionPointerMemoryMaxBound) {
+  // Give the child process a pipe to report back on.
+  int fds[2];
+  ASSERT_EQ(0, pipe(fds));
+
+  // These are defined here so the parent can use them to check the
+  // data from the minidump afterwards.
+  // Use 4k here because the OS will hand out a single page even
+  // if a smaller size is requested, and this test wants to
+  // test the upper bound of the memory range.
+  const uint32_t kMemorySize = 4096;  // bytes
+  // This crashes with SIGILL on x86/x86-64/arm.
+  const unsigned char instructions[] = { 0xff, 0xff, 0xff, 0xff };
+  const int kOffset = kMemorySize - sizeof(instructions);
+
+  pid_t pid = fork();
+  if (pid == 0) {
+    close(fds[0]);
+    ExceptionHandler eh(tempDir.path(), NULL, MDCallback, &fds[1], true, NULL);
+    // Get some executable memory.
+    char* memory =
+      reinterpret_cast<char*>(mmap(NULL,
+                                   kMemorySize,
+                                   PROT_READ | PROT_WRITE | PROT_EXEC,
+                                   MAP_PRIVATE | MAP_ANON,
+                                   -1,
+                                   0));
+    if (!memory)
+      exit(0);
+
+    // Write some instructions that will crash. Put them at the start
+    // of the block of memory, to ensure that the memory bounding
+    // works properly.
+    memcpy(memory + kOffset, instructions, sizeof(instructions));
+    
+    // Now execute the instructions, which should crash.
+    typedef void (*void_function)(void);
+    void_function memory_function =
+      reinterpret_cast<void_function>(memory + kOffset);
+    memory_function();
+    // not reached
+    exit(1);
+  }
+  // In the parent process.
+  ASSERT_NE(-1, pid);
+  close(fds[1]);
+
+  // Wait for the background process to return the minidump file.
+  close(fds[1]);
+  char minidump_file[PATH_MAX];
+  ssize_t nbytes = read(fds[0], minidump_file, sizeof(minidump_file));
+  ASSERT_NE(0, nbytes);
+  // Ensure that minidump file exists and is > 0 bytes.
+  struct stat st;
+  ASSERT_EQ(0, stat(minidump_file, &st));
+  ASSERT_LT(0, st.st_size);
+
+  // Child process should have exited with a zero status.
+  int ret;
+  ASSERT_EQ(pid, waitpid(pid, &ret, 0));
+  EXPECT_NE(0, WIFEXITED(ret));
+  EXPECT_EQ(0, WEXITSTATUS(ret));
+
+  // Read the minidump. Locate the exception record and the
+  // memory list, and then ensure that there is a memory region
+  // in the memory list that covers the instruction pointer from
+  // the exception record.
+  Minidump minidump(minidump_file);
+  ASSERT_TRUE(minidump.Read());
+
+  MinidumpException* exception = minidump.GetException();
+  MinidumpMemoryList* memory_list = minidump.GetMemoryList();
+  ASSERT_TRUE(exception);
+  ASSERT_TRUE(memory_list);
+  ASSERT_NE((unsigned int)0, memory_list->region_count());
+
+  MinidumpContext* context = exception->GetContext();
+  ASSERT_TRUE(context);
+
+  uint64_t instruction_pointer;
+  ASSERT_TRUE(context->GetInstructionPointer(&instruction_pointer));
+
+  MinidumpMemoryRegion* region =
+    memory_list->GetMemoryRegionForAddress(instruction_pointer);
+  EXPECT_TRUE(region);
+
+  const size_t kPrefixSize = 128;  // bytes
+  EXPECT_EQ(kPrefixSize + sizeof(instructions), region->GetSize());
+  const uint8_t* bytes = region->GetMemory();
+  ASSERT_TRUE(bytes);
+
+  uint8_t prefix_bytes[kPrefixSize];
+  memset(prefix_bytes, 0, sizeof(prefix_bytes));
+  EXPECT_TRUE(memcmp(bytes, prefix_bytes, sizeof(prefix_bytes)) == 0);
+  EXPECT_TRUE(memcmp(bytes + kPrefixSize,
+                     instructions, sizeof(instructions)) == 0);
+}
+
+// Ensure that an extra memory block doesn't get added when the
+// instruction pointer is not in mapped memory.
+TEST_F(ExceptionHandlerTest, InstructionPointerMemoryNullPointer) {
+  // Give the child process a pipe to report back on.
+  int fds[2];
+  ASSERT_EQ(0, pipe(fds));
+
+  pid_t pid = fork();
+  if (pid == 0) {
+    close(fds[0]);
+    ExceptionHandler eh(tempDir.path(), NULL, MDCallback, &fds[1], true, NULL);
+    // Try calling a NULL pointer.
+    typedef void (*void_function)(void);
+    void_function memory_function =
+      reinterpret_cast<void_function>(NULL);
+    memory_function();
+    // not reached
+    exit(1);
+  }
+  // In the parent process.
+  ASSERT_NE(-1, pid);
+  close(fds[1]);
+
+  // Wait for the background process to return the minidump file.
+  close(fds[1]);
+  char minidump_file[PATH_MAX];
+  ssize_t nbytes = read(fds[0], minidump_file, sizeof(minidump_file));
+  ASSERT_NE(0, nbytes);
+  // Ensure that minidump file exists and is > 0 bytes.
+  struct stat st;
+  ASSERT_EQ(0, stat(minidump_file, &st));
+  ASSERT_LT(0, st.st_size);
+
+  // Child process should have exited with a zero status.
+  int ret;
+  ASSERT_EQ(pid, waitpid(pid, &ret, 0));
+  EXPECT_NE(0, WIFEXITED(ret));
+  EXPECT_EQ(0, WEXITSTATUS(ret));
+
+  // Read the minidump. Locate the exception record and the
+  // memory list, and then ensure that there is only one memory region
+  // in the memory list (the thread memory from the single thread).
+  Minidump minidump(minidump_file);
+  ASSERT_TRUE(minidump.Read());
+
+  MinidumpException* exception = minidump.GetException();
+  MinidumpMemoryList* memory_list = minidump.GetMemoryList();
+  ASSERT_TRUE(exception);
+  ASSERT_TRUE(memory_list);
+  ASSERT_EQ((unsigned int)1, memory_list->region_count());
+}
+
+static void *Junk(void *) {
+  sleep(1000000);
+  return NULL;
+}
+
+// Test that the memory list gets written correctly when multiple
+// threads are running.
+TEST_F(ExceptionHandlerTest, MemoryListMultipleThreads) {
+  // Give the child process a pipe to report back on.
+  int fds[2];
+  ASSERT_EQ(0, pipe(fds));
+
+  pid_t pid = fork();
+  if (pid == 0) {
+    close(fds[0]);
+    ExceptionHandler eh(tempDir.path(), NULL, MDCallback, &fds[1], true, NULL);
+
+    // Run an extra thread so >2 memory regions will be written.
+    pthread_t junk_thread;
+    if (pthread_create(&junk_thread, NULL, Junk, NULL) == 0)
+      pthread_detach(junk_thread);
+
+    // Just crash.
+    Crasher();
+
+    // not reached
+    exit(1);
+  }
+  // In the parent process.
+  ASSERT_NE(-1, pid);
+  close(fds[1]);
+
+  // Wait for the background process to return the minidump file.
+  close(fds[1]);
+  char minidump_file[PATH_MAX];
+  ssize_t nbytes = read(fds[0], minidump_file, sizeof(minidump_file));
+  ASSERT_NE(0, nbytes);
+  // Ensure that minidump file exists and is > 0 bytes.
+  struct stat st;
+  ASSERT_EQ(0, stat(minidump_file, &st));
+  ASSERT_LT(0, st.st_size);
+
+  // Child process should have exited with a zero status.
+  int ret;
+  ASSERT_EQ(pid, waitpid(pid, &ret, 0));
+  EXPECT_NE(0, WIFEXITED(ret));
+  EXPECT_EQ(0, WEXITSTATUS(ret));
+
+  // Read the minidump, and verify that the memory list can be read.
+  Minidump minidump(minidump_file);
+  ASSERT_TRUE(minidump.Read());
+
+  MinidumpMemoryList* memory_list = minidump.GetMemoryList();
+  ASSERT_TRUE(memory_list);
+  // Verify that there are three memory regions:
+  // one per thread, and one for the instruction pointer memory.
+  ASSERT_EQ((unsigned int)3, memory_list->region_count());
+}
+
+}
diff --git a/google-breakpad/src/client/mac/tests/minidump_generator_test.cc b/google-breakpad/src/client/mac/tests/minidump_generator_test.cc
new file mode 100644
index 0000000..d40c7d9
--- /dev/null
+++ b/google-breakpad/src/client/mac/tests/minidump_generator_test.cc
@@ -0,0 +1,319 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// minidump_generator_test.cc: Unit tests for google_breakpad::MinidumpGenerator
+
+#include <AvailabilityMacros.h>
+#ifndef MAC_OS_X_VERSION_10_6
+#define MAC_OS_X_VERSION_10_6 1060
+#endif
+#include <sys/stat.h>
+#include <unistd.h>
+
+#include <string>
+#include <vector>
+
+#include "breakpad_googletest_includes.h"
+#include "client/mac/handler/minidump_generator.h"
+#include "client/mac/tests/spawn_child_process.h"
+#include "common/mac/MachIPC.h"
+#include "common/tests/auto_tempdir.h"
+#include "google_breakpad/processor/minidump.h"
+
+namespace google_breakpad {
+// This acts as the log sink for INFO logging from the processor
+// logging code. The logging output confuses XCode and makes it think
+// there are unit test failures. testlogging.h handles the overriding.
+std::ostringstream info_log;
+}
+
+namespace {
+using std::string;
+using std::vector;
+using google_breakpad::AutoTempDir;
+using google_breakpad::MinidumpGenerator;
+using google_breakpad::MachPortSender;
+using google_breakpad::MachReceiveMessage;
+using google_breakpad::MachSendMessage;
+using google_breakpad::Minidump;
+using google_breakpad::MinidumpContext;
+using google_breakpad::MinidumpException;
+using google_breakpad::MinidumpModule;
+using google_breakpad::MinidumpModuleList;
+using google_breakpad::MinidumpSystemInfo;
+using google_breakpad::MinidumpThread;
+using google_breakpad::MinidumpThreadList;
+using google_breakpad::ReceivePort;
+using testing::Test;
+using namespace google_breakpad_test;
+
+class MinidumpGeneratorTest : public Test {
+ public:
+  AutoTempDir tempDir;
+};
+
+static void *Junk(void* data) {
+  bool* wait = reinterpret_cast<bool*>(data);
+  while (!*wait) {
+    usleep(10000);
+  }
+  return NULL;
+}
+
+TEST_F(MinidumpGeneratorTest, InProcess) {
+  MinidumpGenerator generator;
+  string dump_filename =
+      MinidumpGenerator::UniqueNameInDirectory(tempDir.path(), NULL);
+
+  // Run an extra thread since MinidumpGenerator assumes there
+  // are 2 or more threads.
+  pthread_t junk_thread;
+  bool quit = false;
+  ASSERT_EQ(0, pthread_create(&junk_thread, NULL, Junk, &quit));
+
+  ASSERT_TRUE(generator.Write(dump_filename.c_str()));
+  // Ensure that minidump file exists and is > 0 bytes.
+  struct stat st;
+  ASSERT_EQ(0, stat(dump_filename.c_str(), &st));
+  ASSERT_LT(0, st.st_size);
+
+  // join the background thread
+  quit = true;
+  pthread_join(junk_thread, NULL);
+
+  // Read the minidump, sanity check some data.
+  Minidump minidump(dump_filename.c_str());
+  ASSERT_TRUE(minidump.Read());
+
+  MinidumpSystemInfo* system_info = minidump.GetSystemInfo();
+  ASSERT_TRUE(system_info);
+  const MDRawSystemInfo* raw_info = system_info->system_info();
+  ASSERT_TRUE(raw_info);
+  EXPECT_EQ(kNativeArchitecture, raw_info->processor_architecture);
+
+  MinidumpThreadList* thread_list = minidump.GetThreadList();
+  ASSERT_TRUE(thread_list);
+  ASSERT_EQ((unsigned int)1, thread_list->thread_count());
+
+  MinidumpThread* main_thread = thread_list->GetThreadAtIndex(0);
+  ASSERT_TRUE(main_thread);
+  MinidumpContext* context = main_thread->GetContext();
+  ASSERT_TRUE(context);
+  EXPECT_EQ(kNativeContext, context->GetContextCPU());
+
+  MinidumpModuleList* module_list = minidump.GetModuleList();
+  ASSERT_TRUE(module_list);
+  const MinidumpModule* main_module = module_list->GetMainModule();
+  ASSERT_TRUE(main_module);
+  EXPECT_EQ(GetExecutablePath(), main_module->code_file());
+}
+
+TEST_F(MinidumpGeneratorTest, OutOfProcess) {
+  const int kTimeoutMs = 2000;
+  // Create a mach port to receive the child task on.
+  char machPortName[128];
+  sprintf(machPortName, "MinidumpGeneratorTest.OutOfProcess.%d", getpid());
+  ReceivePort parent_recv_port(machPortName);
+
+  // Give the child process a pipe to block on.
+  int fds[2];
+  ASSERT_EQ(0, pipe(fds));
+
+  // Fork off a child process to dump.
+  pid_t pid = fork();
+  if (pid == 0) {
+    // In the child process
+    close(fds[1]);
+
+    // Send parent process the task port.
+    MachSendMessage child_message(0);
+    child_message.AddDescriptor(mach_task_self());
+
+    MachPortSender child_sender(machPortName);
+    if (child_sender.SendMessage(child_message, kTimeoutMs) != KERN_SUCCESS) {
+      fprintf(stderr, "Error sending message from child process!\n");
+      exit(1);
+    }
+
+    // Wait for the parent process.
+    uint8_t data;
+    read(fds[0], &data, 1);
+    exit(0);
+  }
+  // In the parent process.
+  ASSERT_NE(-1, pid);
+  close(fds[0]);
+
+  // Read the child's task port.
+  MachReceiveMessage child_message;
+  ASSERT_EQ(KERN_SUCCESS,
+	    parent_recv_port.WaitForMessage(&child_message, kTimeoutMs));
+  mach_port_t child_task = child_message.GetTranslatedPort(0);
+  ASSERT_NE((mach_port_t)MACH_PORT_NULL, child_task);
+
+  // Write a minidump of the child process.
+  MinidumpGenerator generator(child_task, MACH_PORT_NULL);
+  string dump_filename =
+      MinidumpGenerator::UniqueNameInDirectory(tempDir.path(), NULL);
+  ASSERT_TRUE(generator.Write(dump_filename.c_str()));
+
+  // Ensure that minidump file exists and is > 0 bytes.
+  struct stat st;
+  ASSERT_EQ(0, stat(dump_filename.c_str(), &st));
+  ASSERT_LT(0, st.st_size);
+
+  // Unblock child process
+  uint8_t data = 1;
+  (void)write(fds[1], &data, 1);
+
+  // Child process should have exited with a zero status.
+  int ret;
+  ASSERT_EQ(pid, waitpid(pid, &ret, 0));
+  EXPECT_NE(0, WIFEXITED(ret));
+  EXPECT_EQ(0, WEXITSTATUS(ret));
+
+  // Read the minidump, sanity check some data.
+  Minidump minidump(dump_filename.c_str());
+  ASSERT_TRUE(minidump.Read());
+
+  MinidumpSystemInfo* system_info = minidump.GetSystemInfo();
+  ASSERT_TRUE(system_info);
+  const MDRawSystemInfo* raw_info = system_info->system_info();
+  ASSERT_TRUE(raw_info);
+  EXPECT_EQ(kNativeArchitecture, raw_info->processor_architecture);
+
+  MinidumpThreadList* thread_list = minidump.GetThreadList();
+  ASSERT_TRUE(thread_list);
+  ASSERT_EQ((unsigned int)1, thread_list->thread_count());
+
+  MinidumpThread* main_thread = thread_list->GetThreadAtIndex(0);
+  ASSERT_TRUE(main_thread);
+  MinidumpContext* context = main_thread->GetContext();
+  ASSERT_TRUE(context);
+  EXPECT_EQ(kNativeContext, context->GetContextCPU());
+
+  MinidumpModuleList* module_list = minidump.GetModuleList();
+  ASSERT_TRUE(module_list);
+  const MinidumpModule* main_module = module_list->GetMainModule();
+  ASSERT_TRUE(main_module);
+  EXPECT_EQ(GetExecutablePath(), main_module->code_file());
+}
+
+// This test fails on 10.5, but I don't have easy access to a 10.5 machine,
+// so it's simpler to just limit it to 10.6 for now.
+#if (MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6) && \
+  (defined(__x86_64__) || defined(__i386__))
+
+TEST_F(MinidumpGeneratorTest, CrossArchitectureDump) {
+  const int kTimeoutMs = 5000;
+  // Create a mach port to receive the child task on.
+  char machPortName[128];
+  sprintf(machPortName,
+          "MinidumpGeneratorTest.CrossArchitectureDump.%d", getpid());
+
+  ReceivePort parent_recv_port(machPortName);
+
+  // Spawn a child process to dump.
+  string helper_path = GetHelperPath();
+  const char* argv[] = {
+    helper_path.c_str(),
+    machPortName,
+    NULL
+  };
+  pid_t pid = spawn_child_process(argv);
+  ASSERT_NE(-1, pid);
+
+  // Read the child's task port.
+  MachReceiveMessage child_message;
+  ASSERT_EQ(KERN_SUCCESS,
+	    parent_recv_port.WaitForMessage(&child_message, kTimeoutMs));
+  mach_port_t child_task = child_message.GetTranslatedPort(0);
+  ASSERT_NE((mach_port_t)MACH_PORT_NULL, child_task);
+
+  // Write a minidump of the child process.
+  MinidumpGenerator generator(child_task, MACH_PORT_NULL);
+  string dump_filename =
+      MinidumpGenerator::UniqueNameInDirectory(tempDir.path(), NULL);
+  ASSERT_TRUE(generator.Write(dump_filename.c_str()));
+
+  // Ensure that minidump file exists and is > 0 bytes.
+  struct stat st;
+  ASSERT_EQ(0, stat(dump_filename.c_str(), &st));
+  ASSERT_LT(0, st.st_size);
+
+  // Kill child process.
+  kill(pid, SIGKILL);
+
+  int ret;
+  ASSERT_EQ(pid, waitpid(pid, &ret, 0));
+
+const MDCPUArchitecture kExpectedArchitecture =
+#if defined(__x86_64__)
+  MD_CPU_ARCHITECTURE_X86
+#elif defined(__i386__)
+  MD_CPU_ARCHITECTURE_AMD64
+#endif
+  ;
+const uint32_t kExpectedContext =
+#if defined(__i386__)
+  MD_CONTEXT_AMD64
+#elif defined(__x86_64__)
+  MD_CONTEXT_X86
+#endif
+  ;
+
+  // Read the minidump, sanity check some data.
+  Minidump minidump(dump_filename.c_str());
+  ASSERT_TRUE(minidump.Read());
+
+  MinidumpSystemInfo* system_info = minidump.GetSystemInfo();
+  ASSERT_TRUE(system_info);
+  const MDRawSystemInfo* raw_info = system_info->system_info();
+  ASSERT_TRUE(raw_info);
+  EXPECT_EQ(kExpectedArchitecture, raw_info->processor_architecture);
+
+  MinidumpThreadList* thread_list = minidump.GetThreadList();
+  ASSERT_TRUE(thread_list);
+  ASSERT_EQ((unsigned int)1, thread_list->thread_count());
+
+  MinidumpThread* main_thread = thread_list->GetThreadAtIndex(0);
+  ASSERT_TRUE(main_thread);
+  MinidumpContext* context = main_thread->GetContext();
+  ASSERT_TRUE(context);
+  EXPECT_EQ(kExpectedContext, context->GetContextCPU());
+
+  MinidumpModuleList* module_list = minidump.GetModuleList();
+  ASSERT_TRUE(module_list);
+  const MinidumpModule* main_module = module_list->GetMainModule();
+  ASSERT_TRUE(main_module);
+  EXPECT_EQ(helper_path, main_module->code_file());
+}
+#endif  // 10.6 && (x86-64 || i386)
+
+}
diff --git a/google-breakpad/src/client/mac/tests/minidump_generator_test_helper.cc b/google-breakpad/src/client/mac/tests/minidump_generator_test_helper.cc
new file mode 100644
index 0000000..4e8ce3c
--- /dev/null
+++ b/google-breakpad/src/client/mac/tests/minidump_generator_test_helper.cc
@@ -0,0 +1,74 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// minidump_generator_test_helper.cc: A helper program that
+//   minidump_generator_test.cc can launch to test certain things
+//   that require a separate executable.
+
+#include <unistd.h>
+
+#include "client/mac/handler/exception_handler.h"
+#include "common/mac/MachIPC.h"
+
+using google_breakpad::MachPortSender;
+using google_breakpad::MachReceiveMessage;
+using google_breakpad::MachSendMessage;
+using google_breakpad::ReceivePort;
+
+int main(int argc, char** argv) {
+  if (argc < 2)
+    return 1;
+
+  if (strcmp(argv[1], "crash") != 0) {
+    const int kTimeoutMs = 2000;
+    // Send parent process the task and thread ports.
+    MachSendMessage child_message(0);
+    child_message.AddDescriptor(mach_task_self());
+    child_message.AddDescriptor(mach_thread_self());
+
+    MachPortSender child_sender(argv[1]);
+    if (child_sender.SendMessage(child_message, kTimeoutMs) != KERN_SUCCESS) {
+      fprintf(stderr, "Error sending message from child process!\n");
+      exit(1);
+    }
+
+    // Loop forever.
+    while (true) {
+      sleep(100);
+    }
+  } else if (argc == 3 && strcmp(argv[1], "crash") == 0) {
+    // Instantiate an OOP exception handler
+    google_breakpad::ExceptionHandler eh("", NULL, NULL, NULL, true, argv[2]);
+    // and crash.
+    int *a = (int*)0x42;
+    *a = 1;
+  }
+
+  return 0;
+}
diff --git a/google-breakpad/src/client/mac/tests/spawn_child_process.h b/google-breakpad/src/client/mac/tests/spawn_child_process.h
new file mode 100644
index 0000000..e52ff6b
--- /dev/null
+++ b/google-breakpad/src/client/mac/tests/spawn_child_process.h
@@ -0,0 +1,149 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Utility functions for spawning a helper process using a different
+// CPU architecture.
+
+#ifndef GOOGLE_BREAKPAD_CLIENT_MAC_TESTS_SPAWN_CHILD_PROCESS
+#define GOOGLE_BREAKPAD_CLIENT_MAC_TESTS_SPAWN_CHILD_PROCESS
+
+#include <AvailabilityMacros.h>
+#ifndef MAC_OS_X_VERSION_10_6
+#define MAC_OS_X_VERSION_10_6 1060
+#endif
+#include <crt_externs.h>
+#include <mach-o/dyld.h>
+#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6
+#include <spawn.h>
+#endif
+
+#include <string>
+#include <vector>
+
+#include "google_breakpad/common/minidump_format.h"
+
+namespace google_breakpad_test {
+
+using std::string;
+using std::vector;
+
+const MDCPUArchitecture kNativeArchitecture =
+#if defined(__i386__)
+  MD_CPU_ARCHITECTURE_X86
+#elif defined(__x86_64__)
+  MD_CPU_ARCHITECTURE_AMD64
+#elif defined(__ppc__) || defined(__ppc64__)
+  MD_CPU_ARCHITECTURE_PPC
+#else
+#error "This file has not been ported to this CPU architecture."
+#endif
+  ;
+
+const uint32_t kNativeContext =
+#if defined(__i386__)
+  MD_CONTEXT_X86
+#elif defined(__x86_64__)
+  MD_CONTEXT_AMD64
+#elif defined(__ppc__) || defined(__ppc64__)
+  MD_CONTEXT_PPC
+#else
+#error "This file has not been ported to this CPU architecture."
+#endif
+  ;
+
+string GetExecutablePath() {
+  char self_path[PATH_MAX];
+  uint32_t size = sizeof(self_path);
+  if (_NSGetExecutablePath(self_path, &size) != 0)
+    return "";
+  return self_path;
+}
+
+string GetHelperPath() {
+  string helper_path(GetExecutablePath());
+  size_t pos = helper_path.rfind('/');
+  if (pos == string::npos)
+    return "";
+
+  helper_path.erase(pos + 1);
+  helper_path += "minidump_generator_test_helper";
+  return helper_path;
+}
+
+#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6
+
+pid_t spawn_child_process(const char** argv) {
+  posix_spawnattr_t spawnattr;
+  if (posix_spawnattr_init(&spawnattr) != 0)
+    return (pid_t)-1;
+
+  cpu_type_t pref_cpu_types[2] = {
+#if defined(__x86_64__)
+    CPU_TYPE_X86,
+#elif defined(__i386__)
+    CPU_TYPE_X86_64,
+#endif
+    CPU_TYPE_ANY
+  };
+
+  // Set spawn attributes.
+  size_t attr_count = sizeof(pref_cpu_types) / sizeof(pref_cpu_types[0]);
+  size_t attr_ocount = 0;
+  if (posix_spawnattr_setbinpref_np(&spawnattr,
+                                    attr_count,
+                                    pref_cpu_types,
+                                    &attr_ocount) != 0 ||
+      attr_ocount != attr_count) {
+    posix_spawnattr_destroy(&spawnattr);
+    return (pid_t)-1;
+  }
+
+  // Create an argv array.
+  vector<char*> argv_v;
+  while (*argv) {
+    argv_v.push_back(strdup(*argv));
+    argv++;
+  }
+  argv_v.push_back(NULL);
+  pid_t new_pid = 0;
+  int result = posix_spawnp(&new_pid, argv_v[0], NULL, &spawnattr,
+                            &argv_v[0], *_NSGetEnviron());
+  posix_spawnattr_destroy(&spawnattr);
+  
+  for (unsigned i = 0; i < argv_v.size(); i++) {
+    free(argv_v[i]);
+  }
+
+  return result == 0 ? new_pid : -1;
+}
+#endif
+
+}  // namespace google_breakpad_test
+
+#endif  // GOOGLE_BREAKPAD_CLIENT_MAC_TESTS_SPAWN_CHILD_PROCESS
diff --git a/google-breakpad/src/client/mac/tests/testlogging.h b/google-breakpad/src/client/mac/tests/testlogging.h
new file mode 100644
index 0000000..c6b6be6
--- /dev/null
+++ b/google-breakpad/src/client/mac/tests/testlogging.h
@@ -0,0 +1,9 @@
+// This file exists to override the processor logging for unit tests,
+// since it confuses XCode into thinking unit tests have failed.
+#include <sstream>
+
+namespace google_breakpad {
+extern std::ostringstream info_log;
+}
+
+#define BPLOG_INFO_STREAM google_breakpad::info_log
diff --git a/google-breakpad/src/client/minidump_file_writer-inl.h b/google-breakpad/src/client/minidump_file_writer-inl.h
new file mode 100644
index 0000000..0e12e00
--- /dev/null
+++ b/google-breakpad/src/client/minidump_file_writer-inl.h
@@ -0,0 +1,97 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// minidump_file_writer-inl.h: Minidump file writer implementation.
+//
+// See minidump_file_writer.h for documentation.
+
+#ifndef CLIENT_MINIDUMP_FILE_WRITER_INL_H__
+#define CLIENT_MINIDUMP_FILE_WRITER_INL_H__
+
+#include <assert.h>
+
+#include "client/minidump_file_writer.h"
+#include "google_breakpad/common/minidump_size.h"
+
+namespace google_breakpad {
+
+template<typename MDType>
+inline bool TypedMDRVA<MDType>::Allocate() {
+  allocation_state_ = SINGLE_OBJECT;
+  return UntypedMDRVA::Allocate(minidump_size<MDType>::size());
+}
+
+template<typename MDType>
+inline bool TypedMDRVA<MDType>::Allocate(size_t additional) {
+  allocation_state_ = SINGLE_OBJECT;
+  return UntypedMDRVA::Allocate(minidump_size<MDType>::size() + additional);
+}
+
+template<typename MDType>
+inline bool TypedMDRVA<MDType>::AllocateArray(size_t count) {
+  assert(count);
+  allocation_state_ = ARRAY;
+  return UntypedMDRVA::Allocate(minidump_size<MDType>::size() * count);
+}
+
+template<typename MDType>
+inline bool TypedMDRVA<MDType>::AllocateObjectAndArray(size_t count,
+                                                       size_t length) {
+  assert(count && length);
+  allocation_state_ = SINGLE_OBJECT_WITH_ARRAY;
+  return UntypedMDRVA::Allocate(minidump_size<MDType>::size() + count * length);
+}
+
+template<typename MDType>
+inline bool TypedMDRVA<MDType>::CopyIndex(unsigned int index, MDType *item) {
+  assert(allocation_state_ == ARRAY);
+  return writer_->Copy(
+      static_cast<MDRVA>(position_ + index * minidump_size<MDType>::size()), 
+      item, minidump_size<MDType>::size());
+}
+
+template<typename MDType>
+inline bool TypedMDRVA<MDType>::CopyIndexAfterObject(unsigned int index,
+                                                     const void *src, 
+                                                     size_t length) {
+  assert(allocation_state_ == SINGLE_OBJECT_WITH_ARRAY);
+  return writer_->Copy(
+      static_cast<MDRVA>(position_ + minidump_size<MDType>::size() 
+                         + index * length),
+      src, length);
+}
+
+template<typename MDType>
+inline bool TypedMDRVA<MDType>::Flush() {
+  return writer_->Copy(position_, &data_, minidump_size<MDType>::size());
+}
+
+}  // namespace google_breakpad
+
+#endif  // CLIENT_MINIDUMP_FILE_WRITER_INL_H__
diff --git a/google-breakpad/src/client/minidump_file_writer.cc b/google-breakpad/src/client/minidump_file_writer.cc
new file mode 100644
index 0000000..9e90533
--- /dev/null
+++ b/google-breakpad/src/client/minidump_file_writer.cc
@@ -0,0 +1,284 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// minidump_file_writer.cc: Minidump file writer implementation.
+//
+// See minidump_file_writer.h for documentation.
+
+#include <fcntl.h>
+#include <limits.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "client/minidump_file_writer-inl.h"
+#include "common/linux/linux_libc_support.h"
+#include "common/string_conversion.h"
+#if defined(__linux__) && __linux__
+#include "third_party/lss/linux_syscall_support.h"
+#endif
+
+namespace google_breakpad {
+
+const MDRVA MinidumpFileWriter::kInvalidMDRVA = static_cast<MDRVA>(-1);
+
+MinidumpFileWriter::MinidumpFileWriter()
+    : file_(-1),
+      close_file_when_destroyed_(true),
+      position_(0),
+      size_(0) {
+}
+
+MinidumpFileWriter::~MinidumpFileWriter() {
+  if (close_file_when_destroyed_)
+    Close();
+}
+
+bool MinidumpFileWriter::Open(const char *path) {
+  assert(file_ == -1);
+#if defined(__linux__) && __linux__
+  file_ = sys_open(path, O_WRONLY | O_CREAT | O_EXCL, 0600);
+#else
+  file_ = open(path, O_WRONLY | O_CREAT | O_EXCL, 0600);
+#endif
+
+  return file_ != -1;
+}
+
+void MinidumpFileWriter::SetFile(const int file) {
+  assert(file_ == -1);
+  file_ = file;
+  close_file_when_destroyed_ = false;
+}
+
+bool MinidumpFileWriter::Close() {
+  bool result = true;
+
+  if (file_ != -1) {
+    if (-1 == ftruncate(file_, position_)) {
+       return false;
+    }
+#if defined(__linux__) && __linux__
+    result = (sys_close(file_) == 0);
+#else
+    result = (close(file_) == 0);
+#endif
+    file_ = -1;
+  }
+
+  return result;
+}
+
+bool MinidumpFileWriter::CopyStringToMDString(const wchar_t *str,
+                                              unsigned int length,
+                                              TypedMDRVA<MDString> *mdstring) {
+  bool result = true;
+  if (sizeof(wchar_t) == sizeof(uint16_t)) {
+    // Shortcut if wchar_t is the same size as MDString's buffer
+    result = mdstring->Copy(str, mdstring->get()->length);
+  } else {
+    uint16_t out[2];
+    int out_idx = 0;
+
+    // Copy the string character by character
+    while (length && result) {
+      UTF32ToUTF16Char(*str, out);
+      if (!out[0])
+        return false;
+
+      // Process one character at a time
+      --length;
+      ++str;
+
+      // Append the one or two UTF-16 characters.  The first one will be non-
+      // zero, but the second one may be zero, depending on the conversion from
+      // UTF-32.
+      int out_count = out[1] ? 2 : 1;
+      size_t out_size = sizeof(uint16_t) * out_count;
+      result = mdstring->CopyIndexAfterObject(out_idx, out, out_size);
+      out_idx += out_count;
+    }
+  }
+  return result;
+}
+
+bool MinidumpFileWriter::CopyStringToMDString(const char *str,
+                                              unsigned int length,
+                                              TypedMDRVA<MDString> *mdstring) {
+  bool result = true;
+  uint16_t out[2];
+  int out_idx = 0;
+
+  // Copy the string character by character
+  while (length && result) {
+    int conversion_count = UTF8ToUTF16Char(str, length, out);
+    if (!conversion_count)
+      return false;
+
+    // Move the pointer along based on the nubmer of converted characters
+    length -= conversion_count;
+    str += conversion_count;
+
+    // Append the one or two UTF-16 characters
+    int out_count = out[1] ? 2 : 1;
+    size_t out_size = sizeof(uint16_t) * out_count;
+    result = mdstring->CopyIndexAfterObject(out_idx, out, out_size);
+    out_idx += out_count;
+  }
+  return result;
+}
+
+template <typename CharType>
+bool MinidumpFileWriter::WriteStringCore(const CharType *str,
+                                         unsigned int length,
+                                         MDLocationDescriptor *location) {
+  assert(str);
+  assert(location);
+  // Calculate the mdstring length by either limiting to |length| as passed in
+  // or by finding the location of the NULL character.
+  unsigned int mdstring_length = 0;
+  if (!length)
+    length = INT_MAX;
+  for (; mdstring_length < length && str[mdstring_length]; ++mdstring_length)
+    ;
+
+  // Allocate the string buffer
+  TypedMDRVA<MDString> mdstring(this);
+  if (!mdstring.AllocateObjectAndArray(mdstring_length + 1, sizeof(uint16_t)))
+    return false;
+
+  // Set length excluding the NULL and copy the string
+  mdstring.get()->length =
+      static_cast<uint32_t>(mdstring_length * sizeof(uint16_t));
+  bool result = CopyStringToMDString(str, mdstring_length, &mdstring);
+
+  // NULL terminate
+  if (result) {
+    uint16_t ch = 0;
+    result = mdstring.CopyIndexAfterObject(mdstring_length, &ch, sizeof(ch));
+
+    if (result)
+      *location = mdstring.location();
+  }
+
+  return result;
+}
+
+bool MinidumpFileWriter::WriteString(const wchar_t *str, unsigned int length,
+                 MDLocationDescriptor *location) {
+  return WriteStringCore(str, length, location);
+}
+
+bool MinidumpFileWriter::WriteString(const char *str, unsigned int length,
+                 MDLocationDescriptor *location) {
+  return WriteStringCore(str, length, location);
+}
+
+bool MinidumpFileWriter::WriteMemory(const void *src, size_t size,
+                                     MDMemoryDescriptor *output) {
+  assert(src);
+  assert(output);
+  UntypedMDRVA mem(this);
+
+  if (!mem.Allocate(size))
+    return false;
+  if (!mem.Copy(src, mem.size()))
+    return false;
+
+  output->start_of_memory_range = reinterpret_cast<uint64_t>(src);
+  output->memory = mem.location();
+
+  return true;
+}
+
+MDRVA MinidumpFileWriter::Allocate(size_t size) {
+  assert(size);
+  assert(file_ != -1);
+  size_t aligned_size = (size + 7) & ~7;  // 64-bit alignment
+
+  if (position_ + aligned_size > size_) {
+    size_t growth = aligned_size;
+    size_t minimal_growth = getpagesize();
+
+    // Ensure that the file grows by at least the size of a memory page
+    if (growth < minimal_growth)
+      growth = minimal_growth;
+
+    size_t new_size = size_ + growth;
+    if (ftruncate(file_, new_size) != 0)
+      return kInvalidMDRVA;
+
+    size_ = new_size;
+  }
+
+  MDRVA current_position = position_;
+  position_ += static_cast<MDRVA>(aligned_size);
+
+  return current_position;
+}
+
+bool MinidumpFileWriter::Copy(MDRVA position, const void *src, ssize_t size) {
+  assert(src);
+  assert(size);
+  assert(file_ != -1);
+
+  // Ensure that the data will fit in the allocated space
+  if (static_cast<size_t>(size + position) > size_)
+    return false;
+
+  // Seek and write the data
+#if defined(__linux__) && __linux__
+  if (sys_lseek(file_, position, SEEK_SET) == static_cast<off_t>(position)) {
+    if (sys_write(file_, src, size) == size) {
+#else
+  if (lseek(file_, position, SEEK_SET) == static_cast<off_t>(position)) {
+    if (write(file_, src, size) == size) {
+#endif
+      return true;
+    }
+  }
+
+  return false;
+}
+
+bool UntypedMDRVA::Allocate(size_t size) {
+  assert(size_ == 0);
+  size_ = size;
+  position_ = writer_->Allocate(size_);
+  return position_ != MinidumpFileWriter::kInvalidMDRVA;
+}
+
+bool UntypedMDRVA::Copy(MDRVA pos, const void *src, size_t size) {
+  assert(src);
+  assert(size);
+  assert(pos + size <= position_ + size_);
+  return writer_->Copy(pos, src, size);
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/client/minidump_file_writer.h b/google-breakpad/src/client/minidump_file_writer.h
new file mode 100644
index 0000000..ce32b6d
--- /dev/null
+++ b/google-breakpad/src/client/minidump_file_writer.h
@@ -0,0 +1,272 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// minidump_file_writer.h:  Implements file-based minidump generation.  It's
+// intended to be used with the Google Breakpad open source crash handling
+// project.
+
+#ifndef CLIENT_MINIDUMP_FILE_WRITER_H__
+#define CLIENT_MINIDUMP_FILE_WRITER_H__
+
+#include <string>
+
+#include "google_breakpad/common/minidump_format.h"
+
+namespace google_breakpad {
+
+class UntypedMDRVA;
+template<typename MDType> class TypedMDRVA;
+
+// The user of this class can Open() a file and add minidump streams, data, and
+// strings using the definitions in minidump_format.h.  Since this class is
+// expected to be used in a situation where the current process may be
+// damaged, it will not allocate heap memory.
+// Sample usage:
+// MinidumpFileWriter writer;
+// writer.Open("/tmp/minidump.dmp");
+// TypedMDRVA<MDRawHeader> header(&writer_);
+// header.Allocate();
+// header->get()->signature = MD_HEADER_SIGNATURE;
+//  :
+// writer.Close();
+//
+// An alternative is to use SetFile and provide a file descriptor:
+// MinidumpFileWriter writer;
+// writer.SetFile(minidump_fd);
+// TypedMDRVA<MDRawHeader> header(&writer_);
+// header.Allocate();
+// header->get()->signature = MD_HEADER_SIGNATURE;
+//  :
+// writer.Close();
+
+class MinidumpFileWriter {
+public:
+  // Invalid MDRVA (Minidump Relative Virtual Address)
+  // returned on failed allocation
+  static const MDRVA kInvalidMDRVA;
+
+  MinidumpFileWriter();
+  ~MinidumpFileWriter();
+
+  // Open |path| as the destination of the minidump data. If |path| already
+  // exists, then Open() will fail.
+  // Return true on success, or false on failure.
+  bool Open(const char *path);
+
+  // Sets the file descriptor |file| as the destination of the minidump data.
+  // Can be used as an alternative to Open() when a file descriptor is
+  // available.
+  // Note that |fd| is not closed when the instance of MinidumpFileWriter is
+  // destroyed.
+  void SetFile(const int file);
+
+  // Close the current file (that was either created when Open was called, or
+  // specified with SetFile).
+  // Return true on success, or false on failure.
+  bool Close();
+
+  // Copy the contents of |str| to a MDString and write it to the file.
+  // |str| is expected to be either UTF-16 or UTF-32 depending on the size
+  // of wchar_t.
+  // Maximum |length| of characters to copy from |str|, or specify 0 to use the
+  // entire NULL terminated string.  Copying will stop at the first NULL.
+  // |location| the allocated location
+  // Return true on success, or false on failure
+  bool WriteString(const wchar_t *str, unsigned int length,
+                   MDLocationDescriptor *location);
+
+  // Same as above, except with |str| as a UTF-8 string
+  bool WriteString(const char *str, unsigned int length,
+                   MDLocationDescriptor *location);
+
+  // Write |size| bytes starting at |src| into the current position.
+  // Return true on success and set |output| to position, or false on failure
+  bool WriteMemory(const void *src, size_t size, MDMemoryDescriptor *output);
+
+  // Copies |size| bytes from |src| to |position|
+  // Return true on success, or false on failure
+  bool Copy(MDRVA position, const void *src, ssize_t size);
+
+  // Return the current position for writing to the minidump
+  inline MDRVA position() const { return position_; }
+
+ private:
+  friend class UntypedMDRVA;
+
+  // Allocates an area of |size| bytes.
+  // Returns the position of the allocation, or kInvalidMDRVA if it was
+  // unable to allocate the bytes.
+  MDRVA Allocate(size_t size);
+
+  // The file descriptor for the output file.
+  int file_;
+
+  // Whether |file_| should be closed when the instance is destroyed.
+  bool close_file_when_destroyed_;
+
+  // Current position in buffer
+  MDRVA position_;
+
+  // Current allocated size
+  size_t size_;
+
+  // Copy |length| characters from |str| to |mdstring|.  These are distinct
+  // because the underlying MDString is a UTF-16 based string.  The wchar_t
+  // variant may need to create a MDString that has more characters than the
+  // source |str|, whereas the UTF-8 variant may coalesce characters to form
+  // a single UTF-16 character.
+  bool CopyStringToMDString(const wchar_t *str, unsigned int length,
+                            TypedMDRVA<MDString> *mdstring);
+  bool CopyStringToMDString(const char *str, unsigned int length,
+                            TypedMDRVA<MDString> *mdstring);
+
+  // The common templated code for writing a string
+  template <typename CharType>
+  bool WriteStringCore(const CharType *str, unsigned int length,
+                       MDLocationDescriptor *location);
+};
+
+// Represents an untyped allocated chunk
+class UntypedMDRVA {
+ public:
+  explicit UntypedMDRVA(MinidumpFileWriter *writer)
+      : writer_(writer),
+        position_(writer->position()),
+        size_(0) {}
+
+  // Allocates |size| bytes.  Must not call more than once.
+  // Return true on success, or false on failure
+  bool Allocate(size_t size);
+
+  // Returns the current position or kInvalidMDRVA if allocation failed
+  inline MDRVA position() const { return position_; }
+
+  // Number of bytes allocated
+  inline size_t size() const { return size_; }
+
+  // Return size and position
+  inline MDLocationDescriptor location() const {
+    MDLocationDescriptor location = { static_cast<uint32_t>(size_),
+                                      position_ };
+    return location;
+  }
+
+  // Copy |size| bytes starting at |src| into the minidump at |position|
+  // Return true on success, or false on failure
+  bool Copy(MDRVA position, const void *src, size_t size);
+
+  // Copy |size| bytes from |src| to the current position
+  inline bool Copy(const void *src, size_t size) {
+    return Copy(position_, src, size);
+  }
+
+ protected:
+  // Writer we associate with
+  MinidumpFileWriter *writer_;
+
+  // Position of the start of the data
+  MDRVA position_;
+
+  // Allocated size
+  size_t size_;
+};
+
+// Represents a Minidump object chunk.  Additional memory can be allocated at
+// the end of the object as a:
+// - single allocation
+// - Array of MDType objects
+// - A MDType object followed by an array
+template<typename MDType>
+class TypedMDRVA : public UntypedMDRVA {
+ public:
+  // Constructs an unallocated MDRVA
+  explicit TypedMDRVA(MinidumpFileWriter *writer)
+      : UntypedMDRVA(writer),
+        data_(),
+        allocation_state_(UNALLOCATED) {}
+
+  inline ~TypedMDRVA() {
+    // Ensure that the data_ object is written out
+    if (allocation_state_ != ARRAY)
+      Flush();
+  }
+
+  // Address of object data_ of MDType.  This is not declared const as the
+  // typical usage will be to access the underlying |data_| object as to
+  // alter its contents.
+  MDType *get() { return &data_; }
+
+  // Allocates minidump_size<MDType>::size() bytes.
+  // Must not call more than once.
+  // Return true on success, or false on failure
+  bool Allocate();
+
+  // Allocates minidump_size<MDType>::size() + |additional| bytes.
+  // Must not call more than once.
+  // Return true on success, or false on failure
+  bool Allocate(size_t additional);
+
+  // Allocate an array of |count| elements of MDType.
+  // Must not call more than once.
+  // Return true on success, or false on failure
+  bool AllocateArray(size_t count);
+
+  // Allocate an array of |count| elements of |size| after object of MDType
+  // Must not call more than once.
+  // Return true on success, or false on failure
+  bool AllocateObjectAndArray(size_t count, size_t size);
+
+  // Copy |item| to |index|
+  // Must have been allocated using AllocateArray().
+  // Return true on success, or false on failure
+  bool CopyIndex(unsigned int index, MDType *item);
+
+  // Copy |size| bytes starting at |str| to |index|
+  // Must have been allocated using AllocateObjectAndArray().
+  // Return true on success, or false on failure
+  bool CopyIndexAfterObject(unsigned int index, const void *src, size_t size);
+
+  // Write data_
+  bool Flush();
+
+ private:
+  enum AllocationState {
+    UNALLOCATED = 0,
+    SINGLE_OBJECT,
+    ARRAY,
+    SINGLE_OBJECT_WITH_ARRAY
+  };
+
+  MDType data_;
+  AllocationState allocation_state_;
+};
+
+}  // namespace google_breakpad
+
+#endif  // CLIENT_MINIDUMP_FILE_WRITER_H__
diff --git a/google-breakpad/src/client/minidump_file_writer_unittest.cc b/google-breakpad/src/client/minidump_file_writer_unittest.cc
new file mode 100644
index 0000000..60c364e
--- /dev/null
+++ b/google-breakpad/src/client/minidump_file_writer_unittest.cc
@@ -0,0 +1,179 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Author: waylonis@google.com (Dan Waylonis)
+
+/*
+ g++ -I../ ../common/convert_UTF.c \
+ ../common/string_conversion.cc \
+ minidump_file_writer.cc \
+ minidump_file_writer_unittest.cc \
+ -o minidump_file_writer_unittest
+ */
+
+#include <fcntl.h>
+#include <unistd.h>
+
+#include "minidump_file_writer-inl.h"
+
+using google_breakpad::MinidumpFileWriter;
+
+#define ASSERT_TRUE(cond) \
+if (!(cond)) { \
+  fprintf(stderr, "FAILED: %s at %s:%d\n", #cond, __FILE__, __LINE__); \
+    return false; \
+}
+
+#define ASSERT_EQ(e1, e2) ASSERT_TRUE((e1) == (e2))
+#define ASSERT_NE(e1, e2) ASSERT_TRUE((e1) != (e2))
+
+struct StringStructure {
+  unsigned long integer_value;
+  MDLocationDescriptor first_string;
+  MDLocationDescriptor second_string;
+};
+
+struct ArrayStructure {
+  unsigned char char_value;
+  unsigned short short_value;
+  unsigned long long_value;
+};
+
+typedef struct {
+  unsigned long count;
+  ArrayStructure array[0];
+} ObjectAndArrayStructure;
+
+static bool WriteFile(const char *path) {
+  MinidumpFileWriter writer;
+  if (writer.Open(path)) {
+    // Test a single structure
+    google_breakpad::TypedMDRVA<StringStructure> strings(&writer);
+    ASSERT_TRUE(strings.Allocate());
+    strings.get()->integer_value = 0xBEEF;
+    const char *first = "First String";
+    ASSERT_TRUE(writer.WriteString(first, 0, &strings.get()->first_string));
+    const wchar_t *second = L"Second String";
+    ASSERT_TRUE(writer.WriteString(second, 0, &strings.get()->second_string));
+
+    // Test an array structure
+    google_breakpad::TypedMDRVA<ArrayStructure> array(&writer);
+    unsigned int count = 10;
+    ASSERT_TRUE(array.AllocateArray(count));
+    for (unsigned char i = 0; i < count; ++i) {
+      ArrayStructure local;
+      local.char_value = i;
+      local.short_value = i + 1;
+      local.long_value = i + 2;
+      ASSERT_TRUE(array.CopyIndex(i, &local));
+    }
+
+    // Test an object followed by an array
+    google_breakpad::TypedMDRVA<ObjectAndArrayStructure> obj_array(&writer);
+    ASSERT_TRUE(obj_array.AllocateObjectAndArray(count,
+                                                 sizeof(ArrayStructure)));
+    obj_array.get()->count = count;
+    for (unsigned char i = 0; i < count; ++i) {
+      ArrayStructure local;
+      local.char_value = i;
+      local.short_value = i + 1;
+      local.long_value = i + 2;
+      ASSERT_TRUE(obj_array.CopyIndexAfterObject(i, &local, sizeof(local)));
+    }
+  }
+
+  return writer.Close();
+}
+
+static bool CompareFile(const char *path) {
+  unsigned long expected[] = {
+#if defined(__BIG_ENDIAN__)
+    0x0000beef, 0x0000001e, 0x00000018, 0x00000020, 0x00000038, 0x00000000, 
+    0x00000018, 0x00460069, 0x00720073, 0x00740020, 0x00530074, 0x00720069,
+    0x006e0067, 0x00000000, 0x0000001a, 0x00530065, 0x0063006f, 0x006e0064,
+    0x00200053, 0x00740072, 0x0069006e, 0x00670000, 0x00000001, 0x00000002,
+    0x01000002, 0x00000003, 0x02000003, 0x00000004, 0x03000004, 0x00000005,
+    0x04000005, 0x00000006, 0x05000006, 0x00000007, 0x06000007, 0x00000008,
+    0x07000008, 0x00000009, 0x08000009, 0x0000000a, 0x0900000a, 0x0000000b,
+    0x0000000a, 0x00000001, 0x00000002, 0x01000002, 0x00000003, 0x02000003,
+    0x00000004, 0x03000004, 0x00000005, 0x04000005, 0x00000006, 0x05000006,
+    0x00000007, 0x06000007, 0x00000008, 0x07000008, 0x00000009, 0x08000009,
+    0x0000000a, 0x0900000a, 0x0000000b, 0x00000000
+#else
+    0x0000beef, 0x0000001e, 0x00000018, 0x00000020,
+    0x00000038, 0x00000000, 0x00000018, 0x00690046,
+    0x00730072, 0x00200074, 0x00740053, 0x00690072,
+    0x0067006e, 0x00000000, 0x0000001a, 0x00650053,
+    0x006f0063, 0x0064006e, 0x00530020, 0x00720074,
+    0x006e0069, 0x00000067, 0x00011e00, 0x00000002,
+    0x00021e01, 0x00000003, 0x00031e02, 0x00000004,
+    0x00041e03, 0x00000005, 0x00051e04, 0x00000006,
+    0x00061e05, 0x00000007, 0x00071e06, 0x00000008,
+    0x00081e07, 0x00000009, 0x00091e08, 0x0000000a,
+    0x000a1e09, 0x0000000b, 0x0000000a, 0x00011c00,
+    0x00000002, 0x00021c01, 0x00000003, 0x00031c02,
+    0x00000004, 0x00041c03, 0x00000005, 0x00051c04,
+    0x00000006, 0x00061c05, 0x00000007, 0x00071c06,
+    0x00000008, 0x00081c07, 0x00000009, 0x00091c08,
+    0x0000000a, 0x000a1c09, 0x0000000b, 0x00000000,
+#endif
+  };
+  size_t expected_byte_count = sizeof(expected);
+  int fd = open(path, O_RDONLY, 0600);
+  void *buffer = malloc(expected_byte_count);
+  ASSERT_NE(fd, -1);
+  ASSERT_TRUE(buffer);
+  ASSERT_EQ(read(fd, buffer, expected_byte_count), 
+            static_cast<ssize_t>(expected_byte_count));
+
+  char *b1, *b2;
+  b1 = reinterpret_cast<char*>(buffer);
+  b2 = reinterpret_cast<char*>(expected);
+  while (*b1 == *b2) {
+    b1++;
+    b2++;
+  }
+
+  printf("%p\n", reinterpret_cast<void*>(b1 - (char*)buffer));
+
+  ASSERT_EQ(memcmp(buffer, expected, expected_byte_count), 0);
+  return true;
+}
+
+static bool RunTests() {
+  const char *path = "/tmp/minidump_file_writer_unittest.dmp";
+  ASSERT_TRUE(WriteFile(path));
+  ASSERT_TRUE(CompareFile(path));
+  unlink(path);
+  return true;
+}
+
+extern "C" int main(int argc, const char *argv[]) {
+  return RunTests() ? 0 : 1;
+}
diff --git a/google-breakpad/src/client/solaris/handler/Makefile b/google-breakpad/src/client/solaris/handler/Makefile
new file mode 100644
index 0000000..beeb944
--- /dev/null
+++ b/google-breakpad/src/client/solaris/handler/Makefile
@@ -0,0 +1,78 @@
+# Copyright (c) 2007, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# Author: Alfred Peng
+
+CC=cc
+CXX=CC
+
+CPPFLAGS=-g -I../../.. -DNDEBUG -features=extensions -D_REENTRANT
+LDFLAGS=-lpthread -lssl -lgnutls-openssl -lelf
+
+OBJ_DIR=.
+BIN_DIR=.
+
+THREAD_SRC=solaris_lwp.cc
+SHARE_SRC=../../minidump_file_writer.cc\
+	  ../../../common/md5.cc\
+	  ../../../common/string_conversion.cc\
+	  ../../../common/solaris/file_id.cc\
+	  minidump_generator.cc
+HANDLER_SRC=exception_handler.cc\
+	  ../../../common/solaris/guid_creator.cc
+SHARE_C_SRC=../../../common/convert_UTF.c
+
+MINIDUMP_TEST_SRC=minidump_test.cc
+EXCEPTION_TEST_SRC=exception_handler_test.cc
+
+THREAD_OBJ=$(patsubst %.cc,$(OBJ_DIR)/%.o,$(THREAD_SRC))
+SHARE_OBJ=$(patsubst %.cc,$(OBJ_DIR)/%.o,$(SHARE_SRC))
+HANDLER_OBJ=$(patsubst %.cc,$(OBJ_DIR)/%.o,$(HANDLER_SRC))
+SHARE_C_OBJ=$(patsubst %.c,$(OBJ_DIR)/%.o,$(SHARE_C_SRC))
+MINIDUMP_TEST_OBJ=$(patsubst %.cc,$(OBJ_DIR)/%.o, $(MINIDUMP_TEST_SRC))\
+		  $(THREAD_OBJ) $(SHARE_OBJ) $(SHARE_C_OBJ) $(HANDLER_OBJ)
+EXCEPTION_TEST_OBJ=$(patsubst %.cc,$(OBJ_DIR)/%.o, $(EXCEPTION_TEST_SRC))\
+          $(THREAD_OBJ) $(SHARE_OBJ) $(SHARE_C_OBJ) $(HANDLER_OBJ)
+
+BIN=$(BIN_DIR)/minidump_test\
+    $(BIN_DIR)/exception_handler_test
+
+.PHONY:all clean
+
+all:$(BIN)
+
+$(BIN_DIR)/minidump_test:$(MINIDUMP_TEST_OBJ)
+	$(CXX) $(CPPFLAGS) $(LDFLAGS) $^ -o $@
+
+$(BIN_DIR)/exception_handler_test:$(EXCEPTION_TEST_OBJ)
+	$(CXX) $(CPPFLAGS) $(LDFLAGS) $^ -o $@
+
+clean:
+	rm -f $(BIN) *.o *.out *.dmp core ../../minidump_file_writer.o\
+		../../../common/*.o ../../../common/solaris/*.o
diff --git a/google-breakpad/src/client/solaris/handler/exception_handler.cc b/google-breakpad/src/client/solaris/handler/exception_handler.cc
new file mode 100644
index 0000000..7fc8d25
--- /dev/null
+++ b/google-breakpad/src/client/solaris/handler/exception_handler.cc
@@ -0,0 +1,258 @@
+// Copyright (c) 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Author: Alfred Peng
+
+#include <signal.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+#include <cassert>
+#include <cstdlib>
+#include <ctime>
+
+#include "client/solaris/handler/exception_handler.h"
+#include "common/solaris/guid_creator.h"
+#include "common/solaris/message_output.h"
+#include "google_breakpad/common/minidump_format.h"
+
+namespace google_breakpad {
+
+// Signals that we are interested.
+static const int kSigTable[] = {
+  SIGSEGV,
+  SIGABRT,
+  SIGFPE,
+  SIGILL,
+  SIGBUS
+};
+
+std::vector<ExceptionHandler*> *ExceptionHandler::handler_stack_ = NULL;
+int ExceptionHandler::handler_stack_index_ = 0;
+pthread_mutex_t ExceptionHandler::handler_stack_mutex_ =
+  PTHREAD_MUTEX_INITIALIZER;
+
+ExceptionHandler::ExceptionHandler(const string &dump_path,
+                                   FilterCallback filter,
+                                   MinidumpCallback callback,
+                                   void *callback_context,
+                                   bool install_handler)
+    : filter_(filter),
+      callback_(callback),
+      callback_context_(callback_context),
+      dump_path_(),
+      installed_handler_(install_handler) {
+  set_dump_path(dump_path);
+
+  if (install_handler) {
+    SetupHandler();
+  }
+
+  if (install_handler) {
+    pthread_mutex_lock(&handler_stack_mutex_);
+
+    if (handler_stack_ == NULL)
+      handler_stack_ = new std::vector<ExceptionHandler *>;
+    handler_stack_->push_back(this);
+    pthread_mutex_unlock(&handler_stack_mutex_);
+  }
+}
+
+ExceptionHandler::~ExceptionHandler() {
+  TeardownAllHandlers();
+  pthread_mutex_lock(&handler_stack_mutex_);
+  if (handler_stack_->back() == this) {
+    handler_stack_->pop_back();
+  } else {
+    print_message1(2, "warning: removing Breakpad handler out of order\n");
+    for (std::vector<ExceptionHandler *>::iterator iterator =
+         handler_stack_->begin();
+         iterator != handler_stack_->end();
+         ++iterator) {
+      if (*iterator == this) {
+        handler_stack_->erase(iterator);
+      }
+    }
+  }
+
+  if (handler_stack_->empty()) {
+    // When destroying the last ExceptionHandler that installed a handler,
+    // clean up the handler stack.
+    delete handler_stack_;
+    handler_stack_ = NULL;
+  }
+  pthread_mutex_unlock(&handler_stack_mutex_);
+}
+
+bool ExceptionHandler::WriteMinidump() {
+  return InternalWriteMinidump(0, 0, NULL);
+}
+
+// static
+bool ExceptionHandler::WriteMinidump(const string &dump_path,
+                                     MinidumpCallback callback,
+                                     void *callback_context) {
+  ExceptionHandler handler(dump_path, NULL, callback,
+                           callback_context, false);
+  return handler.InternalWriteMinidump(0, 0, NULL);
+}
+
+void ExceptionHandler::SetupHandler() {
+  // Signal on a different stack to avoid using the stack
+  // of the crashing lwp.
+  struct sigaltstack sig_stack;
+  sig_stack.ss_sp = malloc(MINSIGSTKSZ);
+  if (sig_stack.ss_sp == NULL)
+    return;
+  sig_stack.ss_size = MINSIGSTKSZ;
+  sig_stack.ss_flags = 0;
+
+  if (sigaltstack(&sig_stack, NULL) < 0)
+    return;
+  for (size_t i = 0; i < sizeof(kSigTable) / sizeof(kSigTable[0]); ++i)
+    SetupHandler(kSigTable[i]);
+}
+
+void ExceptionHandler::SetupHandler(int signo) {
+  struct sigaction act, old_act;
+  act.sa_handler = HandleException;
+  act.sa_flags = SA_ONSTACK;
+  if (sigaction(signo, &act, &old_act) < 0)
+    return;
+  old_handlers_[signo] = old_act.sa_handler;
+}
+
+void ExceptionHandler::TeardownHandler(int signo) {
+  if (old_handlers_.find(signo) != old_handlers_.end()) {
+    struct sigaction act;
+    act.sa_handler = old_handlers_[signo];
+    act.sa_flags = 0;
+    sigaction(signo, &act, 0);
+  }
+}
+
+void ExceptionHandler::TeardownAllHandlers() {
+  for (size_t i = 0; i < sizeof(kSigTable) / sizeof(kSigTable[0]); ++i) {
+    TeardownHandler(kSigTable[i]);
+  }
+}
+
+// static
+void ExceptionHandler::HandleException(int signo) {
+//void ExceptionHandler::HandleException(int signo, siginfo_t *sip, ucontext_t *sig_ctx) {
+  // The context information about the signal is put on the stack of
+  // the signal handler frame as value parameter. For some reasons, the
+  // prototype of the handler doesn't declare this information as parameter, we
+  // will do it by hand. The stack layout for a signal handler frame is here:
+  // http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/lib/libproc/common/Pstack.c#81
+  //
+  // However, if we are being called by another signal handler passing the
+  // signal up the chain, then we may not have this random extra parameter,
+  // so we may have to walk the stack to find it.  We do the actual work
+  // on another thread, where it's a little safer, but we want the ebp
+  // from this frame to find it.
+  uintptr_t current_ebp = (uintptr_t)_getfp();
+
+  pthread_mutex_lock(&handler_stack_mutex_);
+  ExceptionHandler *current_handler =
+    handler_stack_->at(handler_stack_->size() - ++handler_stack_index_);
+  pthread_mutex_unlock(&handler_stack_mutex_);
+
+  // Restore original handler.
+  current_handler->TeardownHandler(signo);
+
+  ucontext_t *sig_ctx = NULL;
+  if (current_handler->InternalWriteMinidump(signo, current_ebp, &sig_ctx)) {
+//  if (current_handler->InternalWriteMinidump(signo, &sig_ctx)) {
+    // Fully handled this exception, safe to exit.
+    exit(EXIT_FAILURE);
+  } else {
+    // Exception not fully handled, will call the next handler in stack to
+    // process it.
+    typedef void (*SignalHandler)(int signo);
+    SignalHandler old_handler =
+      reinterpret_cast<SignalHandler>(current_handler->old_handlers_[signo]);
+    if (old_handler != NULL)
+      old_handler(signo);
+  }
+
+  pthread_mutex_lock(&handler_stack_mutex_);
+  current_handler->SetupHandler(signo);
+  --handler_stack_index_;
+  // All the handlers in stack have been invoked to handle the exception,
+  // normally the process should be terminated and should not reach here.
+  // In case we got here, ask the OS to handle it to avoid endless loop,
+  // normally the OS will generate a core and termiate the process. This
+  // may be desired to debug the program.
+  if (handler_stack_index_ == 0)
+    signal(signo, SIG_DFL);
+  pthread_mutex_unlock(&handler_stack_mutex_);
+}
+
+bool ExceptionHandler::InternalWriteMinidump(int signo,
+                                             uintptr_t sighandler_ebp,
+                                             ucontext_t **sig_ctx) {
+  if (filter_ && !filter_(callback_context_))
+    return false;
+
+  bool success = false;
+  GUID guid;
+  char guid_str[kGUIDStringLength + 1];
+  if (CreateGUID(&guid) && GUIDToString(&guid, guid_str, sizeof(guid_str))) {
+    char minidump_path[PATH_MAX];
+    snprintf(minidump_path, sizeof(minidump_path), "%s/%s.dmp",
+             dump_path_c_, guid_str);
+
+    // Block all the signals we want to process when writing minidump.
+    // We don't want it to be interrupted.
+    sigset_t sig_blocked, sig_old;
+    bool blocked = true;
+    sigfillset(&sig_blocked);
+    for (size_t i = 0; i < sizeof(kSigTable) / sizeof(kSigTable[0]); ++i)
+      sigdelset(&sig_blocked, kSigTable[i]);
+    if (sigprocmask(SIG_BLOCK, &sig_blocked, &sig_old) != 0) {
+      blocked = false;
+      print_message1(2, "HandleException: failed to block signals.\n");
+    }
+
+    success = minidump_generator_.WriteMinidumpToFile(
+                       minidump_path, signo, sighandler_ebp, sig_ctx);
+
+    // Unblock the signals.
+    if (blocked)
+      sigprocmask(SIG_SETMASK, &sig_old, &sig_old);
+
+    if (callback_)
+      success = callback_(dump_path_c_, guid_str, callback_context_, success);
+  }
+  return success;
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/client/solaris/handler/exception_handler.h b/google-breakpad/src/client/solaris/handler/exception_handler.h
new file mode 100644
index 0000000..4d72485
--- /dev/null
+++ b/google-breakpad/src/client/solaris/handler/exception_handler.h
@@ -0,0 +1,201 @@
+// Copyright (c) 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: Alfred Peng
+
+#ifndef CLIENT_SOLARIS_HANDLER_EXCEPTION_HANDLER_H__
+#define CLIENT_SOLARIS_HANDLER_EXCEPTION_HANDLER_H__
+
+#include <map>
+#include <string>
+#include <vector>
+
+#include "client/solaris/handler/minidump_generator.h"
+
+namespace google_breakpad {
+
+using std::string;
+
+//
+// ExceptionHandler
+//
+// ExceptionHandler can write a minidump file when an exception occurs,
+// or when WriteMinidump() is called explicitly by your program.
+//
+// To have the exception handler write minidumps when an uncaught exception
+// (crash) occurs, you should create an instance early in the execution
+// of your program, and keep it around for the entire time you want to
+// have crash handling active (typically, until shutdown).
+// (NOTE): There should be only one this kind of exception handler
+// object per process.
+//
+// If you want to write minidumps without installing the exception handler,
+// you can create an ExceptionHandler with install_handler set to false,
+// then call WriteMinidump.  You can also use this technique if you want to
+// use different minidump callbacks for different call sites.
+//
+// In either case, a callback function is called when a minidump is written,
+// which receives the unqiue id of the minidump.  The caller can use this
+// id to collect and write additional application state, and to launch an
+// external crash-reporting application.
+//
+// Caller should try to make the callbacks as crash-friendly as possible,
+// it should avoid use heap memory allocation as much as possible.
+//
+class ExceptionHandler {
+ public:
+  // A callback function to run before Breakpad performs any substantial
+  // processing of an exception.  A FilterCallback is called before writing
+  // a minidump.  context is the parameter supplied by the user as
+  // callback_context when the handler was created.
+  //
+  // If a FilterCallback returns true, Breakpad will continue processing,
+  // attempting to write a minidump.  If a FilterCallback returns false,
+  // Breakpad  will immediately report the exception as unhandled without
+  // writing a minidump, allowing another handler the opportunity to handle it.
+  typedef bool (*FilterCallback)(void *context);
+
+  // A callback function to run after the minidump has been written.
+  // minidump_id is a unique id for the dump, so the minidump
+  // file is <dump_path>/<minidump_id>.dmp.  context is the parameter supplied
+  // by the user as callback_context when the handler was created.  succeeded
+  // indicates whether a minidump file was successfully written.
+  //
+  // If an exception occurred and the callback returns true, Breakpad will
+  // treat the exception as fully-handled, suppressing any other handlers from
+  // being notified of the exception.  If the callback returns false, Breakpad
+  // will treat the exception as unhandled, and allow another handler to handle
+  // it. If there are no other handlers, Breakpad will report the exception to
+  // the system as unhandled, allowing a debugger or native crash dialog the
+  // opportunity to handle the exception.  Most callback implementations
+  // should normally return the value of |succeeded|, or when they wish to
+  // not report an exception of handled, false.  Callbacks will rarely want to
+  // return true directly (unless |succeeded| is true).
+  typedef bool (*MinidumpCallback)(const char *dump_path,
+                                   const char *minidump_id,
+                                   void *context,
+                                   bool succeeded);
+
+  // Creates a new ExceptionHandler instance to handle writing minidumps.
+  // Before writing a minidump, the optional filter callback will be called.
+  // Its return value determines whether or not Breakpad should write a
+  // minidump.  Minidump files will be written to dump_path, and the optional
+  // callback is called after writing the dump file, as described above.
+  // If install_handler is true, then a minidump will be written whenever
+  // an unhandled exception occurs.  If it is false, minidumps will only
+  // be written when WriteMinidump is called.
+  ExceptionHandler(const string &dump_path,
+                   FilterCallback filter, MinidumpCallback callback,
+                   void *callback_context,
+                   bool install_handler);
+  ~ExceptionHandler();
+
+  // Get and Set the minidump path.
+  string dump_path() const { return dump_path_; }
+  void set_dump_path(const string &dump_path) {
+    dump_path_ = dump_path;
+    dump_path_c_ = dump_path_.c_str();
+  }
+
+  // Writes a minidump immediately.  This can be used to capture the
+  // execution state independently of a crash.  Returns true on success.
+  bool WriteMinidump();
+
+  // Convenience form of WriteMinidump which does not require an
+  // ExceptionHandler instance.
+  static bool WriteMinidump(const string &dump_path,
+                            MinidumpCallback callback,
+                            void *callback_context);
+
+ private:
+  // Setup crash handler.
+  void SetupHandler();
+  // Setup signal handler for a signal.
+  void SetupHandler(int signo);
+  // Teardown the handler for a signal.
+  void TeardownHandler(int signo);
+  // Teardown all handlers.
+  void TeardownAllHandlers();
+
+  // Runs the main loop for the exception handler thread.
+  static void* ExceptionHandlerThreadMain(void *lpParameter);
+
+  // Signal handler.
+  static void HandleException(int signo);
+
+  // Write all the information to the dump file.
+  // If called from a signal handler, sighandler_ebp is the ebp of
+  // that signal handler's frame, and sig_ctx is an out parameter
+  // that will be set to point at the ucontext_t that was placed
+  // on the stack by the kernel.  You can pass zero and NULL
+  // for the second and third parameters if you are not calling
+  // this from a signal handler.
+  bool InternalWriteMinidump(int signo, uintptr_t sighandler_ebp,
+                             ucontext_t **sig_ctx);
+
+ private:
+  // The callbacks before and after writing the dump file.
+  FilterCallback filter_;
+  MinidumpCallback callback_;
+  void *callback_context_;
+
+  // The directory in which a minidump will be written, set by the dump_path
+  // argument to the constructor, or set_dump_path.
+  string dump_path_;
+  // C style dump path. Keep this when setting dump path, since calling
+  // c_str() of std::string when crashing may not be safe.
+  const char *dump_path_c_;
+
+  // True if the ExceptionHandler installed an unhandled exception filter
+  // when created (with an install_handler parameter set to true).
+  bool installed_handler_;
+
+  // Keep the previous handlers for the signal.
+  typedef void (*sighandler_t)(int);
+  std::map<int, sighandler_t> old_handlers_;
+
+  // The global exception handler stack. This is need becuase there may exist
+  // multiple ExceptionHandler instances in a process. Each will have itself
+  // registered in this stack.
+  static std::vector<ExceptionHandler *> *handler_stack_;
+  // The index of the handler that should handle the next exception.
+  static int handler_stack_index_;
+  static pthread_mutex_t handler_stack_mutex_;
+
+  // The minidump generator.
+  MinidumpGenerator minidump_generator_;
+
+  // disallow copy ctor and operator=
+  explicit ExceptionHandler(const ExceptionHandler &);
+  void operator=(const ExceptionHandler &);
+};
+
+}  // namespace google_breakpad
+
+#endif  // CLIENT_SOLARIS_HANDLER_EXCEPTION_HANDLER_H__
diff --git a/google-breakpad/src/client/solaris/handler/exception_handler_test.cc b/google-breakpad/src/client/solaris/handler/exception_handler_test.cc
new file mode 100644
index 0000000..6bb8e18
--- /dev/null
+++ b/google-breakpad/src/client/solaris/handler/exception_handler_test.cc
@@ -0,0 +1,119 @@
+// Copyright (c) 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Author: Alfred Peng
+
+#include <pthread.h>
+#include <unistd.h>
+
+#include <cassert>
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
+
+#include "client/solaris/handler/exception_handler.h"
+#include "client/solaris/handler/solaris_lwp.h"
+
+using namespace google_breakpad;
+
+// Thread use this to see if it should stop working.
+static bool should_exit = false;
+
+static int foo2(int arg) {
+  // Stack variable, used for debugging stack dumps.
+  int c = 0xcccccccc;
+  fprintf(stderr, "Thread trying to crash: %x\n", getpid());
+  c = *reinterpret_cast<int *>(0x5);
+  return c;
+}
+
+static int foo(int arg) {
+  // Stack variable, used for debugging stack dumps.
+  int b = 0xbbbbbbbb;
+  b = foo2(b);
+  return b;
+}
+
+static void *thread_crash(void *) {
+  // Stack variable, used for debugging stack dumps.
+  int a = 0xaaaaaaaa;
+  sleep(3);
+  a = foo(a);
+  printf("%x\n", a);
+  return NULL;
+}
+
+static void *thread_main(void *) {
+  while (!should_exit)
+    sleep(1);
+  return NULL;
+}
+
+static void CreateCrashThread() {
+  pthread_t h;
+  pthread_create(&h, NULL, thread_crash, NULL);
+  pthread_detach(h);
+}
+
+// Create working threads.
+static void CreateThread(int num) {
+  pthread_t h;
+  for (int i = 0; i < num; ++i) {
+    pthread_create(&h, NULL, thread_main, NULL);
+    pthread_detach(h);
+  }
+}
+
+// Callback when minidump written.
+static bool MinidumpCallback(const char *dump_path,
+                             const char *minidump_id,
+                             void *context,
+                             bool succeeded) {
+  int index = reinterpret_cast<int>(context);
+  if (index == 0) {
+    should_exit = true;
+    return true;
+  }
+  // Don't process it.
+  return false;
+}
+
+int main(int argc, char *argv[]) {
+  int handler_index = 1;
+  ExceptionHandler handler_ignore(".", NULL, MinidumpCallback,
+                                  (void*)handler_index, true);
+  CreateCrashThread();
+  CreateThread(10);
+
+  while (true)
+    sleep(20);
+  should_exit = true;
+
+  return 0;
+}
diff --git a/google-breakpad/src/client/solaris/handler/minidump_generator.cc b/google-breakpad/src/client/solaris/handler/minidump_generator.cc
new file mode 100644
index 0000000..7485025
--- /dev/null
+++ b/google-breakpad/src/client/solaris/handler/minidump_generator.cc
@@ -0,0 +1,786 @@
+// Copyright (c) 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Author: Alfred Peng
+
+#include <fcntl.h>
+#include <sys/frame.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <sys/utsname.h>
+#include <sys/wait.h>
+#include <unistd.h>
+
+#include <cstdlib>
+#include <ctime>
+
+#include "client/solaris/handler/minidump_generator.h"
+#include "client/minidump_file_writer-inl.h"
+#include "common/solaris/file_id.h"
+
+namespace {
+
+using namespace google_breakpad;
+
+// Argument for the writer function.
+struct WriterArgument {
+  MinidumpFileWriter *minidump_writer;
+
+  // Pid of the lwp who called WriteMinidumpToFile
+  int requester_pid;
+
+  // The stack bottom of the lwp which caused the dump.
+  // Mainly used to find the lwp id of the crashed lwp since signal
+  // handler may not be called in the lwp who caused it.
+  uintptr_t crashed_stack_bottom;
+
+  // Id of the crashing lwp.
+  int crashed_lwpid;
+
+  // Signal number when crash happened. Can be 0 if this is a requested dump.
+  int signo;
+
+  // The ebp of the signal handler frame on x86.  Can be 0 if this is a
+  // requested dump.
+  uintptr_t sighandler_ebp;
+
+  // User context when crash happens. Can be NULL if this is a requested dump.
+  // This is actually an out parameter, but it will be filled in at the start
+  // of the writer LWP.
+  ucontext_t *sig_ctx;
+
+  // Used to get information about the lwps.
+  SolarisLwp *lwp_lister;
+};
+
+// Holding context information for the callback of finding the crashing lwp.
+struct FindCrashLwpContext {
+  const SolarisLwp *lwp_lister;
+  uintptr_t crashing_stack_bottom;
+  int crashing_lwpid;
+
+  FindCrashLwpContext() :
+    lwp_lister(NULL),
+    crashing_stack_bottom(0UL),
+    crashing_lwpid(-1) {
+  }
+};
+
+// Callback for list lwps.
+// It will compare the stack bottom of the provided lwp with the stack
+// bottom of the crashed lwp, it they are eqaul, this lwp is the one
+// who crashed.
+bool IsLwpCrashedCallback(lwpstatus_t *lsp, void *context) {
+  FindCrashLwpContext *crashing_context =
+    static_cast<FindCrashLwpContext *>(context);
+  const SolarisLwp *lwp_lister = crashing_context->lwp_lister;
+  const prgregset_t *gregs = &(lsp->pr_reg);
+#if TARGET_CPU_SPARC
+  uintptr_t last_ebp = (*gregs)[R_FP];
+#elif TARGET_CPU_X86
+  uintptr_t last_ebp = (*gregs)[EBP];
+#endif
+  uintptr_t stack_bottom = lwp_lister->GetLwpStackBottom(last_ebp);
+  if (stack_bottom > last_ebp &&
+      stack_bottom == crashing_context->crashing_stack_bottom) {
+    // Got it. Stop iteration.
+    crashing_context->crashing_lwpid = lsp->pr_lwpid;
+    return false;
+  }
+
+  return true;
+}
+
+// Find the crashing lwpid.
+// This is done based on stack bottom comparing.
+int FindCrashingLwp(uintptr_t crashing_stack_bottom,
+                    int requester_pid,
+                    const SolarisLwp *lwp_lister) {
+  FindCrashLwpContext context;
+  context.lwp_lister = lwp_lister;
+  context.crashing_stack_bottom = crashing_stack_bottom;
+  CallbackParam<LwpCallback> callback_param(IsLwpCrashedCallback,
+                                            &context);
+  lwp_lister->Lwp_iter_all(lwp_lister->getpid(), &callback_param);
+  return context.crashing_lwpid;
+}
+
+bool WriteLwpStack(const SolarisLwp *lwp_lister,
+                   uintptr_t last_esp,
+                   UntypedMDRVA *memory,
+                   MDMemoryDescriptor *loc) {
+  uintptr_t stack_bottom = lwp_lister->GetLwpStackBottom(last_esp);
+  if (stack_bottom >= last_esp) {
+    int size = stack_bottom - last_esp;
+    if (size > 0) {
+      if (!memory->Allocate(size))
+        return false;
+      memory->Copy(reinterpret_cast<void *>(last_esp), size);
+      loc->start_of_memory_range = last_esp;
+      loc->memory = memory->location();
+    }
+    return true;
+  }
+  return false;
+}
+
+#if TARGET_CPU_SPARC
+bool WriteContext(MDRawContextSPARC *context, ucontext_t *sig_ctx) {
+  assert(sig_ctx != NULL);
+  int* regs = sig_ctx->uc_mcontext.gregs;
+  context->context_flags = MD_CONTEXT_SPARC_FULL;
+
+  context->ccr = (unsigned int)(regs[0]);
+  context->pc = (unsigned int)(regs[REG_PC]);
+  context->npc = (unsigned int)(regs[REG_nPC]);
+  context->y = (unsigned int)(regs[REG_Y]);
+  context->asi = (unsigned int)(regs[19]);
+  context->fprs = (unsigned int)(regs[20]);
+
+  for ( int i = 0 ; i < 32; ++i ) {
+    context->g_r[i] = 0;
+  }
+
+  for ( int i = 1 ; i < 16; ++i ) {
+    context->g_r[i] = (uintptr_t)(sig_ctx->uc_mcontext.gregs[i + 3]);
+  }
+  context->g_r[30] = (uintptr_t)(((struct frame *)context->g_r[14])->fr_savfp);
+
+  return true;
+}
+
+bool WriteContext(MDRawContextSPARC *context, prgregset_t regs,
+                  prfpregset_t *fp_regs) {
+  if (!context || !regs)
+    return false;
+
+  context->context_flags = MD_CONTEXT_SPARC_FULL;
+
+  context->ccr = (uintptr_t)(regs[32]);
+  context->pc = (uintptr_t)(regs[R_PC]);
+  context->npc = (uintptr_t)(regs[R_nPC]);
+  context->y = (uintptr_t)(regs[R_Y]);
+  context->asi = (uintptr_t)(regs[36]);
+  context->fprs = (uintptr_t)(regs[37]);
+  for ( int i = 0 ; i < 32 ; ++i ){
+    context->g_r[i] = (uintptr_t)(regs[i]);
+  }
+
+  return true;
+}
+#elif TARGET_CPU_X86
+bool WriteContext(MDRawContextX86 *context, prgregset_t regs,
+                  prfpregset_t *fp_regs) {
+  if (!context || !regs)
+    return false;
+
+  context->context_flags = MD_CONTEXT_X86_FULL;
+
+  context->cs = regs[CS];
+  context->ds = regs[DS];
+  context->es = regs[ES];
+  context->fs = regs[FS];
+  context->gs = regs[GS];
+  context->ss = regs[SS];
+  context->edi = regs[EDI];
+  context->esi = regs[ESI];
+  context->ebx = regs[EBX];
+  context->edx = regs[EDX];
+  context->ecx = regs[ECX];
+  context->eax = regs[EAX];
+  context->ebp = regs[EBP];
+  context->eip = regs[EIP];
+  context->esp = regs[UESP];
+  context->eflags = regs[EFL];
+
+  return true;
+}
+#endif /* TARGET_CPU_XXX */
+
+// Write information about a crashed Lwp.
+// When a lwp crash, kernel will write something on the stack for processing
+// signal. This makes the current stack not reliable, and our stack walker
+// won't figure out the whole call stack for this. So we write the stack at the
+// time of the crash into the minidump file, not the current stack.
+bool WriteCrashedLwpStream(MinidumpFileWriter *minidump_writer,
+                           const WriterArgument *writer_args,
+                           const lwpstatus_t *lsp,
+                           MDRawThread *lwp) {
+  assert(writer_args->sig_ctx != NULL);
+
+  lwp->thread_id = lsp->pr_lwpid;
+
+#if TARGET_CPU_SPARC
+  UntypedMDRVA memory(minidump_writer);
+  if (!WriteLwpStack(writer_args->lwp_lister,
+                     writer_args->sig_ctx->uc_mcontext.gregs[REG_O6],
+                     &memory,
+                     &lwp->stack))
+    return false;
+
+  TypedMDRVA<MDRawContextSPARC> context(minidump_writer);
+  if (!context.Allocate())
+    return false;
+  lwp->thread_context = context.location();
+  memset(context.get(), 0, sizeof(MDRawContextSPARC));
+  return WriteContext(context.get(), writer_args->sig_ctx);
+#elif TARGET_CPU_X86
+  UntypedMDRVA memory(minidump_writer);
+  if (!WriteLwpStack(writer_args->lwp_lister,
+                     writer_args->sig_ctx->uc_mcontext.gregs[UESP],
+                     &memory,
+                     &lwp->stack))
+    return false;
+
+  TypedMDRVA<MDRawContextX86> context(minidump_writer);
+  if (!context.Allocate())
+    return false;
+  lwp->thread_context = context.location();
+  memset(context.get(), 0, sizeof(MDRawContextX86));
+  return WriteContext(context.get(),
+                      (int *)&writer_args->sig_ctx->uc_mcontext.gregs,
+                      &writer_args->sig_ctx->uc_mcontext.fpregs);
+#endif
+}
+
+bool WriteLwpStream(MinidumpFileWriter *minidump_writer,
+                    const SolarisLwp *lwp_lister,
+                    const lwpstatus_t *lsp, MDRawThread *lwp) {
+  prfpregset_t fp_regs = lsp->pr_fpreg;
+  const prgregset_t *gregs = &(lsp->pr_reg);
+  UntypedMDRVA memory(minidump_writer);
+#if TARGET_CPU_SPARC
+  if (!WriteLwpStack(lwp_lister,
+                     (*gregs)[R_SP],
+                     &memory,
+                     &lwp->stack))
+    return false;
+
+  // Write context
+  TypedMDRVA<MDRawContextSPARC> context(minidump_writer);
+  if (!context.Allocate())
+    return false;
+  // should be the thread_id
+  lwp->thread_id = lsp->pr_lwpid;
+  lwp->thread_context = context.location();
+  memset(context.get(), 0, sizeof(MDRawContextSPARC));
+#elif TARGET_CPU_X86
+  if (!WriteLwpStack(lwp_lister,
+                     (*gregs)[UESP],
+                     &memory,
+                     &lwp->stack))
+  return false;
+
+  // Write context
+  TypedMDRVA<MDRawContextX86> context(minidump_writer);
+  if (!context.Allocate())
+    return false;
+  // should be the thread_id
+  lwp->thread_id = lsp->pr_lwpid;
+  lwp->thread_context = context.location();
+  memset(context.get(), 0, sizeof(MDRawContextX86));
+#endif /* TARGET_CPU_XXX */
+  return WriteContext(context.get(), (int *)gregs, &fp_regs);
+}
+
+bool WriteCPUInformation(MDRawSystemInfo *sys_info) {
+  struct utsname uts;
+  char *major, *minor, *build;
+
+  sys_info->number_of_processors = sysconf(_SC_NPROCESSORS_CONF);
+  sys_info->processor_architecture = MD_CPU_ARCHITECTURE_UNKNOWN;
+  if (uname(&uts) != -1) {
+    // Match "i86pc" as X86 architecture.
+    if (strcmp(uts.machine, "i86pc") == 0)
+      sys_info->processor_architecture = MD_CPU_ARCHITECTURE_X86;
+    else if (strcmp(uts.machine, "sun4u") == 0)
+      sys_info->processor_architecture = MD_CPU_ARCHITECTURE_SPARC;
+  }
+
+  major = uts.release;
+  minor = strchr(major, '.');
+  *minor = '\0';
+  ++minor;
+  sys_info->major_version = atoi(major);
+  sys_info->minor_version = atoi(minor);
+
+  build = strchr(uts.version, '_');
+  ++build;
+  sys_info->build_number = atoi(build);
+  
+  return true;
+}
+
+bool WriteOSInformation(MinidumpFileWriter *minidump_writer,
+                        MDRawSystemInfo *sys_info) {
+  sys_info->platform_id = MD_OS_SOLARIS;
+
+  struct utsname uts;
+  if (uname(&uts) != -1) {
+    char os_version[512];
+    size_t space_left = sizeof(os_version);
+    memset(os_version, 0, space_left);
+    const char *os_info_table[] = {
+      uts.sysname,
+      uts.release,
+      uts.version,
+      uts.machine,
+      "OpenSolaris",
+      NULL
+    };
+    for (const char **cur_os_info = os_info_table;
+         *cur_os_info != NULL;
+         ++cur_os_info) {
+      if (cur_os_info != os_info_table && space_left > 1) {
+        strcat(os_version, " ");
+        --space_left;
+      }
+      if (space_left > strlen(*cur_os_info)) {
+        strcat(os_version, *cur_os_info);
+        space_left -= strlen(*cur_os_info);
+      } else {
+        break;
+      }
+    }
+
+    MDLocationDescriptor location;
+    if (!minidump_writer->WriteString(os_version, 0, &location))
+      return false;
+    sys_info->csd_version_rva = location.rva;
+  }
+  return true;
+}
+
+// Callback context for get writting lwp information.
+struct LwpInfoCallbackCtx {
+  MinidumpFileWriter *minidump_writer;
+  const WriterArgument *writer_args;
+  TypedMDRVA<MDRawThreadList> *list;
+  int lwp_index;
+};
+
+bool LwpInformationCallback(lwpstatus_t *lsp, void *context) {
+  bool success = true;
+  LwpInfoCallbackCtx *callback_context =
+    static_cast<LwpInfoCallbackCtx *>(context);
+
+  // The current lwp is the one to handle the crash. Ignore it.
+  if (lsp->pr_lwpid != pthread_self()) {
+    LwpInfoCallbackCtx *callback_context =
+      static_cast<LwpInfoCallbackCtx *>(context);
+    MDRawThread lwp;
+    memset(&lwp, 0, sizeof(MDRawThread));
+
+    if (lsp->pr_lwpid != callback_context->writer_args->crashed_lwpid ||
+        callback_context->writer_args->sig_ctx == NULL) {
+      success = WriteLwpStream(callback_context->minidump_writer,
+                               callback_context->writer_args->lwp_lister,
+                               lsp, &lwp);
+    } else {
+      success = WriteCrashedLwpStream(callback_context->minidump_writer,
+                                      callback_context->writer_args,
+                                      lsp, &lwp);
+    }
+    if (success) {
+      callback_context->list->CopyIndexAfterObject(
+          callback_context->lwp_index++,
+          &lwp, sizeof(MDRawThread));
+    }
+  }
+
+  return success;
+}
+
+bool WriteLwpListStream(MinidumpFileWriter *minidump_writer,
+                        const WriterArgument *writer_args,
+                        MDRawDirectory *dir) {
+  // Get the lwp information.
+  const SolarisLwp *lwp_lister = writer_args->lwp_lister;
+  int lwp_count = lwp_lister->GetLwpCount();
+  if (lwp_count < 0)
+    return false;
+  TypedMDRVA<MDRawThreadList> list(minidump_writer);
+  if (!list.AllocateObjectAndArray(lwp_count - 1, sizeof(MDRawThread)))
+    return false;
+  dir->stream_type = MD_THREAD_LIST_STREAM;
+  dir->location = list.location();
+  list.get()->number_of_threads = lwp_count - 1;
+
+  LwpInfoCallbackCtx context;
+  context.minidump_writer = minidump_writer;
+  context.writer_args = writer_args;
+  context.list = &list;
+  context.lwp_index = 0;
+  CallbackParam<LwpCallback> callback_param(LwpInformationCallback,
+                                            &context);
+  int written =
+    lwp_lister->Lwp_iter_all(lwp_lister->getpid(), &callback_param);
+  return written == lwp_count;
+}
+
+bool WriteCVRecord(MinidumpFileWriter *minidump_writer,
+                   MDRawModule *module,
+                   const char *module_path,
+                   char *realname) {
+  TypedMDRVA<MDCVInfoPDB70> cv(minidump_writer);
+
+  char path[PATH_MAX];
+  const char *module_name = module_path ? module_path : "<Unknown>";
+  snprintf(path, sizeof(path), "/proc/self/object/%s", module_name);
+
+  size_t module_name_length = strlen(realname);
+  if (!cv.AllocateObjectAndArray(module_name_length + 1, sizeof(uint8_t)))
+    return false;
+  if (!cv.CopyIndexAfterObject(0, realname, module_name_length))
+    return false;
+
+  module->cv_record = cv.location();
+  MDCVInfoPDB70 *cv_ptr = cv.get();
+  memset(cv_ptr, 0, sizeof(MDCVInfoPDB70));
+  cv_ptr->cv_signature = MD_CVINFOPDB70_SIGNATURE;
+  cv_ptr->age = 0;
+
+  // Get the module identifier
+  FileID file_id(path);
+  unsigned char identifier[16];
+
+  if (file_id.ElfFileIdentifier(identifier)) {
+    cv_ptr->signature.data1 = (uint32_t)identifier[0] << 24 |
+      (uint32_t)identifier[1] << 16 | (uint32_t)identifier[2] << 8 |
+      (uint32_t)identifier[3];
+    cv_ptr->signature.data2 = (uint32_t)identifier[4] << 8 | identifier[5];
+    cv_ptr->signature.data3 = (uint32_t)identifier[6] << 8 | identifier[7];
+    cv_ptr->signature.data4[0] = identifier[8];
+    cv_ptr->signature.data4[1] = identifier[9];
+    cv_ptr->signature.data4[2] = identifier[10];
+    cv_ptr->signature.data4[3] = identifier[11];
+    cv_ptr->signature.data4[4] = identifier[12];
+    cv_ptr->signature.data4[5] = identifier[13];
+    cv_ptr->signature.data4[6] = identifier[14];
+    cv_ptr->signature.data4[7] = identifier[15];
+  }
+  return true;
+}
+
+struct ModuleInfoCallbackCtx {
+  MinidumpFileWriter *minidump_writer;
+  const WriterArgument *writer_args;
+  TypedMDRVA<MDRawModuleList> *list;
+  int module_index;
+};
+
+bool ModuleInfoCallback(const ModuleInfo &module_info, void *context) {
+  ModuleInfoCallbackCtx *callback_context =
+    static_cast<ModuleInfoCallbackCtx *>(context);
+  // Skip those modules without name, or those that are not modules.
+  if (strlen(module_info.name) == 0)
+    return true;
+
+  MDRawModule module;
+  memset(&module, 0, sizeof(module));
+  MDLocationDescriptor loc;
+  char path[PATH_MAX];
+  char buf[PATH_MAX];
+  char *realname;
+  int count;
+
+  snprintf(path, sizeof (path), "/proc/self/path/%s", module_info.name);
+  if ((count = readlink(path, buf, PATH_MAX)) < 0)
+    return false;
+  buf[count] = '\0';
+
+  if ((realname = strrchr(buf, '/')) == NULL)
+    return false;
+  realname++;
+
+  if (!callback_context->minidump_writer->WriteString(realname, 0, &loc))
+    return false;
+
+  module.base_of_image = (uint64_t)module_info.start_addr;
+  module.size_of_image = module_info.size;
+  module.module_name_rva = loc.rva;
+
+  if (!WriteCVRecord(callback_context->minidump_writer, &module,
+                     module_info.name, realname))
+    return false;
+
+  callback_context->list->CopyIndexAfterObject(
+      callback_context->module_index++, &module, MD_MODULE_SIZE);
+  return true;
+}
+
+bool WriteModuleListStream(MinidumpFileWriter *minidump_writer,
+                           const WriterArgument *writer_args,
+                           MDRawDirectory *dir) {
+  TypedMDRVA<MDRawModuleList> list(minidump_writer);
+  int module_count = writer_args->lwp_lister->GetModuleCount();
+
+  if (module_count <= 0 ||
+      !list.AllocateObjectAndArray(module_count, MD_MODULE_SIZE)) {
+    return false;
+  }
+
+  dir->stream_type = MD_MODULE_LIST_STREAM;
+  dir->location = list.location();
+  list.get()->number_of_modules = module_count;
+  ModuleInfoCallbackCtx context;
+  context.minidump_writer = minidump_writer;
+  context.writer_args = writer_args;
+  context.list = &list;
+  context.module_index = 0;
+  CallbackParam<ModuleCallback> callback(ModuleInfoCallback, &context);
+  return writer_args->lwp_lister->ListModules(&callback) == module_count;
+}
+
+bool WriteSystemInfoStream(MinidumpFileWriter *minidump_writer,
+                           const WriterArgument *writer_args,
+                           MDRawDirectory *dir) {
+  TypedMDRVA<MDRawSystemInfo> sys_info(minidump_writer);
+
+  if (!sys_info.Allocate())
+    return false;
+
+  dir->stream_type = MD_SYSTEM_INFO_STREAM;
+  dir->location = sys_info.location();
+
+  return WriteCPUInformation(sys_info.get()) &&
+         WriteOSInformation(minidump_writer, sys_info.get());
+}
+
+bool WriteExceptionStream(MinidumpFileWriter *minidump_writer,
+                          const WriterArgument *writer_args,
+                          MDRawDirectory *dir) {
+  // This happenes when this is not a crash, but a requested dump.
+  if (writer_args->sig_ctx == NULL)
+    return false;
+
+  TypedMDRVA<MDRawExceptionStream> exception(minidump_writer);
+  if (!exception.Allocate())
+    return false;
+
+  dir->stream_type = MD_EXCEPTION_STREAM;
+  dir->location = exception.location();
+  exception.get()->thread_id = writer_args->crashed_lwpid;
+  exception.get()->exception_record.exception_code = writer_args->signo;
+  exception.get()->exception_record.exception_flags = 0;
+
+#if TARGET_CPU_SPARC
+  if (writer_args->sig_ctx != NULL) {
+    exception.get()->exception_record.exception_address = 
+      writer_args->sig_ctx->uc_mcontext.gregs[REG_PC];
+  } else {
+    return true;
+  }
+
+  // Write context of the exception.
+  TypedMDRVA<MDRawContextSPARC> context(minidump_writer);
+  if (!context.Allocate())
+    return false;
+  exception.get()->thread_context = context.location();
+  memset(context.get(), 0, sizeof(MDRawContextSPARC));
+  return WriteContext(context.get(), writer_args->sig_ctx);
+#elif TARGET_CPU_X86
+  if (writer_args->sig_ctx != NULL) {
+    exception.get()->exception_record.exception_address =
+      writer_args->sig_ctx->uc_mcontext.gregs[EIP];
+  } else {
+    return true;
+  }
+
+  // Write context of the exception.
+  TypedMDRVA<MDRawContextX86> context(minidump_writer);
+  if (!context.Allocate())
+    return false;
+  exception.get()->thread_context = context.location();
+  memset(context.get(), 0, sizeof(MDRawContextX86));
+  return WriteContext(context.get(),
+                      (int *)&writer_args->sig_ctx->uc_mcontext.gregs,
+                      NULL);
+#endif
+}
+
+bool WriteMiscInfoStream(MinidumpFileWriter *minidump_writer,
+                         const WriterArgument *writer_args,
+                         MDRawDirectory *dir) {
+  TypedMDRVA<MDRawMiscInfo> info(minidump_writer);
+
+  if (!info.Allocate())
+    return false;
+
+  dir->stream_type = MD_MISC_INFO_STREAM;
+  dir->location = info.location();
+  info.get()->size_of_info = sizeof(MDRawMiscInfo);
+  info.get()->flags1 = MD_MISCINFO_FLAGS1_PROCESS_ID;
+  info.get()->process_id = writer_args->requester_pid;
+
+  return true;
+}
+
+bool WriteBreakpadInfoStream(MinidumpFileWriter *minidump_writer,
+                             const WriterArgument *writer_args,
+                             MDRawDirectory *dir) {
+  TypedMDRVA<MDRawBreakpadInfo> info(minidump_writer);
+
+  if (!info.Allocate())
+    return false;
+
+  dir->stream_type = MD_BREAKPAD_INFO_STREAM;
+  dir->location = info.location();
+
+  info.get()->validity = MD_BREAKPAD_INFO_VALID_DUMP_THREAD_ID |
+                         MD_BREAKPAD_INFO_VALID_REQUESTING_THREAD_ID;
+  info.get()->dump_thread_id = getpid();
+  info.get()->requesting_thread_id = writer_args->requester_pid;
+  return true;
+}
+
+class AutoLwpResumer {
+ public:
+  AutoLwpResumer(SolarisLwp *lwp) : lwp_(lwp) {}
+  ~AutoLwpResumer() { lwp_->ControlAllLwps(false); }
+ private:
+  SolarisLwp *lwp_;
+};
+
+// Prototype of writer functions.
+typedef bool (*WriteStreamFN)(MinidumpFileWriter *,
+                              const WriterArgument *,
+                              MDRawDirectory *);
+
+// Function table to writer a full minidump.
+const WriteStreamFN writers[] = {
+  WriteLwpListStream,
+  WriteModuleListStream,
+  WriteSystemInfoStream,
+  WriteExceptionStream,
+  WriteMiscInfoStream,
+  WriteBreakpadInfoStream,
+};
+
+// Will call each writer function in the writers table.
+//void* MinidumpGenerator::Write(void *argument) {
+void* Write(void *argument) {
+  WriterArgument *writer_args = static_cast<WriterArgument *>(argument);
+
+  if (!writer_args->lwp_lister->ControlAllLwps(true))
+    return NULL;
+
+  AutoLwpResumer lwpResumer(writer_args->lwp_lister);
+
+  if (writer_args->sighandler_ebp != 0 &&
+      writer_args->lwp_lister->FindSigContext(writer_args->sighandler_ebp,
+                                              &writer_args->sig_ctx)) {
+    writer_args->crashed_stack_bottom = 
+      writer_args->lwp_lister->GetLwpStackBottom(
+#if TARGET_CPU_SPARC
+          writer_args->sig_ctx->uc_mcontext.gregs[REG_O6]
+#elif TARGET_CPU_X86
+          writer_args->sig_ctx->uc_mcontext.gregs[UESP]
+#endif
+      );
+
+    int crashed_lwpid = FindCrashingLwp(writer_args->crashed_stack_bottom,
+                                        writer_args->requester_pid,
+                                        writer_args->lwp_lister);
+    if (crashed_lwpid > 0)
+      writer_args->crashed_lwpid = crashed_lwpid;
+  }
+
+  MinidumpFileWriter *minidump_writer = writer_args->minidump_writer;
+  TypedMDRVA<MDRawHeader> header(minidump_writer);
+  TypedMDRVA<MDRawDirectory> dir(minidump_writer);
+  if (!header.Allocate())
+    return 0;
+
+  int writer_count = sizeof(writers) / sizeof(writers[0]);
+  // Need directory space for all writers.
+  if (!dir.AllocateArray(writer_count))
+    return 0;
+  header.get()->signature = MD_HEADER_SIGNATURE;
+  header.get()->version = MD_HEADER_VERSION;
+  header.get()->time_date_stamp = time(NULL);
+  header.get()->stream_count = writer_count;
+  header.get()->stream_directory_rva = dir.position();
+
+  int dir_index = 0;
+  MDRawDirectory local_dir;
+  for (int i = 0; i < writer_count; ++i) {
+    if ((*writers[i])(minidump_writer, writer_args, &local_dir))
+      dir.CopyIndex(dir_index++, &local_dir);
+  }
+
+  return 0;
+}
+
+}  // namespace
+
+namespace google_breakpad {
+
+MinidumpGenerator::MinidumpGenerator() {
+}
+
+MinidumpGenerator::~MinidumpGenerator() {
+}
+
+// Write minidump into file.
+// It runs in a different thread from the crashing thread.
+bool MinidumpGenerator::WriteMinidumpToFile(const char *file_pathname,
+                                            int signo,
+                                            uintptr_t sighandler_ebp,
+                                            ucontext_t **sig_ctx) const {
+  // The exception handler thread.
+  pthread_t handler_thread;
+
+  assert(file_pathname != NULL);
+
+  if (file_pathname == NULL)
+    return false;
+
+  MinidumpFileWriter minidump_writer;
+  if (minidump_writer.Open(file_pathname)) {
+    WriterArgument argument;
+    memset(&argument, 0, sizeof(argument));
+    SolarisLwp lwp_lister(getpid());
+    argument.lwp_lister = &lwp_lister;
+    argument.minidump_writer = &minidump_writer;
+    argument.requester_pid = getpid();
+    argument.crashed_lwpid = pthread_self();
+    argument.signo = signo;
+    argument.sighandler_ebp = sighandler_ebp;
+    argument.sig_ctx = NULL;
+
+    pthread_create(&handler_thread, NULL, Write, (void *)&argument);
+    pthread_join(handler_thread, NULL);
+    return true;
+  }
+
+  return false;
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/client/solaris/handler/minidump_generator.h b/google-breakpad/src/client/solaris/handler/minidump_generator.h
new file mode 100644
index 0000000..882f9e1
--- /dev/null
+++ b/google-breakpad/src/client/solaris/handler/minidump_generator.h
@@ -0,0 +1,70 @@
+// Copyright (c) 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Author: Alfred Peng
+
+#ifndef CLIENT_SOLARIS_HANDLER_MINIDUMP_GENERATOR_H__
+#define CLIENT_SOLARIS_HANDLER_MINIDUMP_GENERATOR_H__
+
+#include <ucontext.h>
+
+#include "client/minidump_file_writer.h"
+#include "client/solaris/handler/solaris_lwp.h"
+#include "google_breakpad/common/breakpad_types.h"
+#include "google_breakpad/common/minidump_format.h"
+
+namespace google_breakpad {
+
+//
+// MinidumpGenerator
+//
+// A minidump generator should be created before any exception happen.
+//
+class MinidumpGenerator {
+  // Callback run for writing lwp information in the process.
+  friend bool LwpInformationCallback(lwpstatus_t *lsp, void *context);
+
+  // Callback run for writing module information in the process.
+  friend bool ModuleInfoCallback(const ModuleInfo &module_info, void *context);
+
+ public:
+  MinidumpGenerator();
+
+  ~MinidumpGenerator();
+
+  // Write minidump.
+  bool WriteMinidumpToFile(const char *file_pathname,
+                           int signo,
+                           uintptr_t sighandler_ebp,
+                           ucontext_t **sig_ctx) const;
+};
+
+}  // namespace google_breakpad
+
+#endif   // CLIENT_SOLARIS_HANDLER_MINIDUMP_GENERATOR_H_
diff --git a/google-breakpad/src/client/solaris/handler/minidump_test.cc b/google-breakpad/src/client/solaris/handler/minidump_test.cc
new file mode 100644
index 0000000..33302d8
--- /dev/null
+++ b/google-breakpad/src/client/solaris/handler/minidump_test.cc
@@ -0,0 +1,75 @@
+// Copyright (c) 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Author: Alfred Peng
+
+#include <pthread.h>
+#include <unistd.h>
+
+#include "client/minidump_file_writer.h"
+#include "client/solaris/handler/minidump_generator.h"
+
+using std::string;
+using google_breakpad::MinidumpGenerator;
+
+static bool doneWritingReport = false;
+
+static void *Reporter(void *) {
+  char buffer[PATH_MAX];
+  MinidumpGenerator md;
+
+  // Write it to the desktop
+  snprintf(buffer, sizeof(buffer), "./minidump_test.out");
+  fprintf(stdout, "Writing %s\n", buffer);
+
+  md.WriteMinidumpToFile(buffer, 0, 0, NULL);
+  doneWritingReport = true;
+
+  return NULL;
+}
+
+static void SleepyFunction() {
+  while (!doneWritingReport) {
+    usleep(100);
+  }
+}
+
+int main(int argc, char * const argv[]) {
+  pthread_t reporter_thread;
+
+  if (pthread_create(&reporter_thread, NULL, Reporter, NULL) == 0) {
+    pthread_detach(reporter_thread);
+  } else {
+    perror("pthread_create");
+  }
+
+  SleepyFunction();
+
+  return 0;
+}
diff --git a/google-breakpad/src/client/solaris/handler/solaris_lwp.cc b/google-breakpad/src/client/solaris/handler/solaris_lwp.cc
new file mode 100644
index 0000000..0148997
--- /dev/null
+++ b/google-breakpad/src/client/solaris/handler/solaris_lwp.cc
@@ -0,0 +1,436 @@
+// Copyright (c) 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Author: Alfred Peng
+
+#include <dirent.h>
+#include <elf.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <sys/frame.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <unistd.h>
+
+#include <algorithm>
+#include <cassert>
+#include <cstdio>
+#include <cstdlib>
+#include <functional>
+
+#include "client/solaris/handler/solaris_lwp.h"
+#include "common/solaris/message_output.h"
+
+using namespace google_breakpad;
+
+// This unamed namespace contains helper function.
+namespace {
+
+uintptr_t stack_base_address = 0;
+static const int HEADER_MAX = 2000;
+static const int MAP_MAX = 1000;
+
+// Context information for the callbacks when validating address by listing
+// modules.
+struct AddressValidatingContext {
+  uintptr_t address;
+  bool is_mapped;
+
+  AddressValidatingContext() : address(0UL), is_mapped(false) {
+  }
+};
+
+// Convert from string to int.
+static bool LocalAtoi(char *s, int *r) {
+  assert(s != NULL);
+  assert(r != NULL);
+  char *endptr = NULL;
+  int ret = strtol(s, &endptr, 10);
+  if (endptr == s)
+    return false;
+  *r = ret;
+  return true;
+}
+
+// Callback invoked for each mapped module.
+// It uses the module's adderss range to validate the address.
+static bool AddressNotInModuleCallback(const ModuleInfo &module_info,
+                                       void *context) {
+  AddressValidatingContext *addr =
+    reinterpret_cast<AddressValidatingContext *>(context);
+  if (addr->is_mapped = ((module_info.start_addr > 0) &&
+                         (addr->address >= module_info.start_addr) &&
+                         (addr->address <= module_info.start_addr +
+                          module_info.size))) {
+    stack_base_address = module_info.start_addr + module_info.size;
+  }
+
+  return !addr->is_mapped;
+}
+
+static int IterateLwpAll(int pid,
+                         CallbackParam<LwpidCallback> *callback_param) {
+  char lwp_path[40];
+  DIR *dir;
+  int count = 0;
+
+  snprintf(lwp_path, sizeof (lwp_path), "/proc/%d/lwp", (int)pid);
+  if ((dir = opendir(lwp_path)) == NULL)
+    return -1;
+
+  struct dirent *entry = NULL;
+  while ((entry = readdir(dir)) != NULL) {
+    if ((strcmp(entry->d_name, ".") != 0) &&
+        (strcmp(entry->d_name, "..") != 0)) {
+      int lwpid = 0;
+      int last_pid = 0;
+      if (LocalAtoi(entry->d_name, &lwpid) && last_pid != lwpid) {
+        last_pid = lwpid;
+        ++count;
+        if (callback_param &&
+            !(callback_param->call_back)(lwpid, callback_param->context)) {
+          break;
+        }
+      }
+    }
+  }
+
+  closedir(dir);
+  return count;
+}
+
+#if defined(__i386) && !defined(NO_FRAME_POINTER)
+void *GetNextFrame(void **last_ebp) {
+  void *sp = *last_ebp;
+  if ((unsigned long)sp == (unsigned long)last_ebp)
+    return NULL;
+  if ((unsigned long)sp & (sizeof(void *) - 1))
+    return NULL;
+  if ((unsigned long)sp - (unsigned long)last_ebp > 100000)
+    return NULL;
+  return sp;
+}
+#elif defined(__sparc)
+void *GetNextFrame(void *last_ebp) {
+  return reinterpret_cast<struct frame *>(last_ebp)->fr_savfp;
+}
+#else
+void *GetNextFrame(void **last_ebp) {
+  return reinterpret_cast<void*>(last_ebp);
+}
+#endif
+
+
+class AutoCloser {
+ public:
+  AutoCloser(int fd) : fd_(fd) {}
+  ~AutoCloser() { if (fd_) close(fd_); }
+ private:
+  int fd_;
+};
+
+// Control the execution of the lwp.
+// Suspend/Resume lwp based on the value of context.
+static bool ControlLwp(int lwpid, void *context) {
+  // The current thread is the one to handle the crash. Ignore it.
+  if (lwpid != pthread_self()) {
+    int ctlfd;
+    char procname[PATH_MAX];
+    bool suspend = *(bool *)context;
+
+    // Open the /proc/$pid/lwp/$lwpid/lwpctl files
+    snprintf(procname, sizeof (procname), "/proc/self/lwp/%d/lwpctl", lwpid);
+
+    if ((ctlfd = open(procname, O_WRONLY|O_EXCL)) < 0) {
+      print_message2(2, "failed to open %s in ControlLwp\n", procname);
+      return false;
+    }
+
+    AutoCloser autocloser(ctlfd);
+
+    long ctl[2];
+    ctl[0] = suspend ? PCSTOP : PCRUN;
+    ctl[1] = 0;
+    if (write(ctlfd, ctl, sizeof (ctl)) != sizeof (ctl)) {
+      print_message2(2, "failed in lwp %d\n", lwpid);
+      return false;
+    }
+  }
+
+  return true;
+}
+
+/*
+ * Utility function to read the contents of a file that contains a
+ * prheader_t at the start (/proc/$pid/lstatus or /proc/$pid/lpsinfo).
+ * Return true on success.
+ */
+static bool read_lfile(int pid, const char *lname, prheader_t *lhp) {
+  char lpath[PATH_MAX];
+  struct stat statb;
+  int fd;
+  size_t size;
+
+  snprintf(lpath, sizeof (lpath), "/proc/%d/%s", pid, lname);
+  if ((fd = open(lpath, O_RDONLY)) < 0) {
+    print_message2(2, "failed to open %s in read_lfile\n", lpath);
+    return false;
+  }
+
+  AutoCloser autocloser(fd);
+
+  if (fstat(fd, &statb) != 0)
+    return false;
+
+  size = statb.st_size;
+  if ((size / sizeof (prheader_t)) + 32 > HEADER_MAX) {
+    print_message1(2, "map size overflow\n");
+    return false;
+  }
+
+  if (pread(fd, lhp, size, 0) <= sizeof (prheader_t))
+    return false;
+
+  return true;
+}
+
+}  // namespace
+
+namespace google_breakpad {
+
+SolarisLwp::SolarisLwp(int pid) : pid_(pid) {
+}
+
+SolarisLwp::~SolarisLwp() {
+}
+
+int SolarisLwp::ControlAllLwps(bool suspend) {
+  CallbackParam<LwpidCallback> callback_param(ControlLwp, &suspend);
+  return IterateLwpAll(pid_, &callback_param);
+}
+
+int SolarisLwp::GetLwpCount() const {
+  return IterateLwpAll(pid_, NULL);
+}
+
+int SolarisLwp::Lwp_iter_all(int pid,
+                             CallbackParam<LwpCallback> *callback_param) const {
+  lwpstatus_t *Lsp;
+  lwpstatus_t *sp;
+  prheader_t lphp[HEADER_MAX];
+  prheader_t lhp[HEADER_MAX];
+  prheader_t *Lphp = lphp;
+  prheader_t *Lhp = lhp;
+  lwpsinfo_t *Lpsp;
+  long nstat;
+  long ninfo;
+  int rv = 0;
+
+  /*
+   * The /proc/pid/lstatus file has the array of lwpstatus_t's and the
+   * /proc/pid/lpsinfo file has the array of lwpsinfo_t's.
+   */
+  if (read_lfile(pid, "lstatus", Lhp) == NULL)
+    return -1;
+  if (read_lfile(pid, "lpsinfo", Lphp) == NULL) {
+    return -1;
+  }
+
+  Lsp = (lwpstatus_t *)(uintptr_t)(Lhp + 1);
+  Lpsp = (lwpsinfo_t *)(uintptr_t)(Lphp + 1);
+
+  for (ninfo = Lphp->pr_nent; ninfo != 0; --ninfo) {
+    if (Lpsp->pr_sname != 'Z') {
+      sp = Lsp;
+      Lsp = (lwpstatus_t *)((uintptr_t)Lsp + Lhp->pr_entsize);
+    } else {
+      sp = NULL;
+    }
+    if (callback_param &&
+        !(callback_param->call_back)(sp, callback_param->context))
+      break;
+    ++rv;
+    Lpsp = (lwpsinfo_t *)((uintptr_t)Lpsp + Lphp->pr_entsize);
+  }
+
+  return rv;
+}
+
+uintptr_t SolarisLwp::GetLwpStackBottom(uintptr_t current_esp) const {
+  AddressValidatingContext addr;
+  addr.address = current_esp;
+  CallbackParam<ModuleCallback> callback_param(AddressNotInModuleCallback,
+                                               &addr);
+  ListModules(&callback_param);
+  return stack_base_address;
+}
+
+int SolarisLwp::GetModuleCount() const {
+  return ListModules(NULL);
+}
+
+int SolarisLwp::ListModules(
+    CallbackParam<ModuleCallback> *callback_param) const {
+  const char *maps_path = "/proc/self/map";
+  struct stat status;
+  int fd = 0, num;
+  prmap_t map_array[MAP_MAX];
+  prmap_t *maps = map_array;
+  size_t size;
+
+  if ((fd = open(maps_path, O_RDONLY)) == -1) {
+    print_message2(2, "failed to open %s in ListModules\n", maps_path);
+    return -1;
+  }
+
+  AutoCloser autocloser(fd);
+
+  if (fstat(fd, &status))
+    return -1;
+
+  /*
+   * Determine number of mappings, this value must be 
+   * larger than the actual module count
+   */
+  size = status.st_size;
+  if ((num = (int)(size / sizeof (prmap_t))) > MAP_MAX) {
+    print_message1(2, "map size overflow\n");
+    return -1;
+  }
+
+  if (read(fd, (void *)maps, size) < 0) {
+    print_message2(2, "failed to read %d\n", fd);
+    return -1;
+  }
+
+  prmap_t *_maps;
+  int _num;
+  int module_count = 0;
+  
+  /*
+   * Scan each mapping - note it is assummed that the mappings are
+   * presented in order.  We fill holes between mappings.  On intel
+   * the last mapping is usually the data segment of ld.so.1, after
+   * this comes a red zone into which non-fixed mapping won't get
+   * place.  Thus we can simply bail from the loop after seeing the
+   * last mapping.
+   */
+  for (_num = 0, _maps = maps; _num < num; ++_num, ++_maps) {
+    ModuleInfo module;
+    char *name = _maps->pr_mapname;
+
+    memset(&module, 0, sizeof (module));
+    module.start_addr = _maps->pr_vaddr;
+    module.size = _maps->pr_size;
+    if (strlen(name) > 0) {
+      int objectfd = 0;
+      char path[PATH_MAX];
+      char buf[SELFMAG];
+
+      snprintf(path, sizeof (path), "/proc/self/object/%s", name);
+      if ((objectfd = open(path, O_RDONLY)) < 0) {
+        print_message1(2, "can't open module file\n");
+        continue;
+      }
+
+      AutoCloser autocloser(objectfd);
+
+      if (read(objectfd, buf, SELFMAG) != SELFMAG) {
+        print_message1(2, "can't read module file\n");
+        continue;
+      }
+      if (buf[0] != ELFMAG0 || buf[1] != ELFMAG1 ||
+          buf[2] != ELFMAG2 || buf[3] != ELFMAG3) {
+        continue;
+      }
+
+      strncpy(module.name, name, sizeof (module.name) - 1);
+      ++module_count;
+    }
+    if (callback_param &&
+        (!callback_param->call_back(module, callback_param->context))) {
+      break;
+    }
+  }
+
+  return module_count;
+}
+
+// Check if the address is a valid virtual address.
+// If the address is in any of the mapped modules, we take it as valid.
+// Otherwise it is invalid.
+bool SolarisLwp::IsAddressMapped(uintptr_t address) const {
+  AddressValidatingContext addr;
+  addr.address = address;
+  CallbackParam<ModuleCallback> callback_param(AddressNotInModuleCallback,
+                                               &addr);
+  ListModules(&callback_param);
+  return addr.is_mapped;
+}
+
+// We're looking for a ucontext_t as the second parameter
+// to a signal handler function call.  Luckily, the ucontext_t
+// has an ebp(fp on SPARC) member which should match the ebp(fp)
+// pointed to by the ebp(fp) of the signal handler frame.
+// The Solaris stack looks like this:
+// http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/lib/libproc/common/Pstack.c#81
+bool SolarisLwp::FindSigContext(uintptr_t sighandler_ebp,
+                                ucontext_t **sig_ctx) {
+  uintptr_t previous_ebp;
+  uintptr_t sig_ebp;
+  const int MAX_STACK_DEPTH = 50;
+  int depth_counter = 0;
+
+  do {
+#if TARGET_CPU_SPARC
+    previous_ebp = reinterpret_cast<uintptr_t>(GetNextFrame(
+                                  reinterpret_cast<void*>(sighandler_ebp)));
+    *sig_ctx = reinterpret_cast<ucontext_t*>(sighandler_ebp + sizeof (struct frame));
+    uintptr_t sig_esp = (*sig_ctx)->uc_mcontext.gregs[REG_O6];
+    if (sig_esp < previous_ebp && sig_esp > sighandler_ebp)
+      sig_ebp = (uintptr_t)(((struct frame *)sig_esp)->fr_savfp);
+
+#elif TARGET_CPU_X86
+    previous_ebp = reinterpret_cast<uintptr_t>(GetNextFrame(
+                                  reinterpret_cast<void**>(sighandler_ebp)));
+    *sig_ctx = reinterpret_cast<ucontext_t*>(sighandler_ebp + sizeof (struct frame) +
+                                             3 * sizeof(uintptr_t));
+    sig_ebp = (*sig_ctx)->uc_mcontext.gregs[EBP];
+#endif
+    sighandler_ebp = previous_ebp;
+    depth_counter++;
+  } while(previous_ebp != sig_ebp && sighandler_ebp != 0 &&
+          IsAddressMapped(sighandler_ebp) && depth_counter < MAX_STACK_DEPTH);
+
+  return previous_ebp == sig_ebp && previous_ebp != 0;
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/client/solaris/handler/solaris_lwp.h b/google-breakpad/src/client/solaris/handler/solaris_lwp.h
new file mode 100644
index 0000000..0914cfc
--- /dev/null
+++ b/google-breakpad/src/client/solaris/handler/solaris_lwp.h
@@ -0,0 +1,160 @@
+// Copyright (c) 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Author: Alfred Peng
+
+#ifndef CLIENT_SOLARIS_HANDLER_SOLARIS_LWP_H__
+#define CLIENT_SOLARIS_HANDLER_SOLARIS_LWP_H__
+
+#if defined(sparc) || defined(__sparc)
+#define TARGET_CPU_SPARC 1
+#elif defined(i386) || defined(__i386)
+#define TARGET_CPU_X86 1
+#else
+#error "cannot determine cpu type"
+#endif
+
+#include <signal.h>
+#include <stdint.h>
+#include <sys/user.h>
+#include <ucontext.h>
+
+#ifndef _KERNEL
+#define _KERNEL
+#define MUST_UNDEF_KERNEL
+#endif  // _KERNEL
+#include <sys/procfs.h>
+#ifdef MUST_UNDEF_KERNEL
+#undef _KERNEL
+#undef MUST_UNDEF_KERNEL
+#endif  // MUST_UNDEF_KERNEL
+
+namespace google_breakpad {
+
+// Max module path name length.
+static const int kMaxModuleNameLength = 256;
+
+// Holding infomaton about a module in the process.
+struct ModuleInfo {
+  char name[kMaxModuleNameLength];
+  uintptr_t start_addr;
+  int size;
+};
+
+// A callback to run when getting a lwp in the process.
+// Return true will go on to the next lwp while return false will stop the
+// iteration.
+typedef bool (*LwpCallback)(lwpstatus_t* lsp, void *context); 
+
+// A callback to run when a new module is found in the process.
+// Return true will go on to the next module while return false will stop the
+// iteration.
+typedef bool (*ModuleCallback)(const ModuleInfo &module_info, void *context);
+
+// A callback to run when getting a lwpid in the process.
+// Return true will go on to the next lwp while return false will stop the
+// iteration.
+typedef bool (*LwpidCallback)(int lwpid, void *context);
+
+// Holding the callback information.
+template<class CallbackFunc>
+struct CallbackParam {
+  // Callback function address.
+  CallbackFunc call_back;
+  // Callback context;
+  void *context;
+
+  CallbackParam() : call_back(NULL), context(NULL) {
+  }
+
+  CallbackParam(CallbackFunc func, void *func_context) :
+    call_back(func), context(func_context) {
+  }
+};
+
+///////////////////////////////////////////////////////////////////////////////
+
+//
+// SolarisLwp
+//
+// Provides handy support for operation on Solaris lwps.
+// It uses proc file system to get lwp information.
+//
+// TODO(Alfred): Currently it only supports x86. Add SPARC support.
+//
+class SolarisLwp {
+ public:
+  // Create a SolarisLwp instance to list all the lwps in a process.
+  explicit SolarisLwp(int pid);
+  ~SolarisLwp();
+
+  int getpid() const { return this->pid_; }
+
+  // Control all the lwps in the process.
+  // Return the number of suspended/resumed lwps in the process.
+  // Return -1 means failed to control lwps.
+  int ControlAllLwps(bool suspend);
+
+  // Get the count of lwps in the process.
+  // Return -1 means error.
+  int GetLwpCount() const;
+
+  // Iterate the lwps of process.
+  // Whenever there is a lwp found, the callback will be invoked to process
+  // the information.
+  // Return the callback return value or -1 on error.
+  int Lwp_iter_all(int pid, CallbackParam<LwpCallback> *callback_param) const;
+
+  // Get the module count of the current process.
+  int GetModuleCount() const;
+
+  // Get the mapped modules in the address space.
+  // Whenever a module is found, the callback will be invoked to process the
+  // information.
+  // Return how may modules are found.
+  int ListModules(CallbackParam<ModuleCallback> *callback_param) const;
+
+  // Get the bottom of the stack from esp.
+  uintptr_t GetLwpStackBottom(uintptr_t current_esp) const;
+
+  // Finds a signal context on the stack given the ebp of our signal handler.
+  bool FindSigContext(uintptr_t sighandler_ebp, ucontext_t **sig_ctx);
+
+ private:
+  // Check if the address is a valid virtual address.
+  bool IsAddressMapped(uintptr_t address) const;
+
+ private:
+  // The pid of the process we are listing lwps.
+  int pid_;
+};
+
+}  // namespace google_breakpad
+
+#endif  // CLIENT_SOLARIS_HANDLER_SOLARIS_LWP_H__
diff --git a/google-breakpad/src/client/windows/breakpad_client.gyp b/google-breakpad/src/client/windows/breakpad_client.gyp
new file mode 100644
index 0000000..6479753
--- /dev/null
+++ b/google-breakpad/src/client/windows/breakpad_client.gyp
@@ -0,0 +1,66 @@
+# Copyright 2010 Google Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+{
+  'includes': [
+    '../../build/common.gypi',
+  ],
+  'targets': [
+    {
+      'target_name': 'build_all',
+      'type': 'none',
+      'dependencies': [
+        './crash_generation/crash_generation.gyp:*',
+        './handler/exception_handler.gyp:*',
+        './sender/crash_report_sender.gyp:*',
+        './unittests/client_tests.gyp:*',
+        './unittests/testing.gyp:*',
+        './tests/crash_generation_app/crash_generation_app.gyp:*',
+      ]
+    },
+    {
+      'target_name': 'common',
+      'type': 'static_library',
+      'include_dirs': [
+        '<(DEPTH)',
+      ],
+      'direct_dependent_settings': {
+        'include_dirs': [
+          '<(DEPTH)',
+        ]
+      },
+      'sources': [
+        '<(DEPTH)/common/windows/guid_string.cc',
+        '<(DEPTH)/common/windows/guid_string.h',
+        '<(DEPTH)/common/windows/http_upload.cc',
+        '<(DEPTH)/common/windows/http_upload.h',
+        '<(DEPTH)/common/windows/string_utils.cc',
+      ]
+    }
+  ]
+}
diff --git a/google-breakpad/src/client/windows/common/auto_critical_section.h b/google-breakpad/src/client/windows/common/auto_critical_section.h
new file mode 100644
index 0000000..3fd4b9b
--- /dev/null
+++ b/google-breakpad/src/client/windows/common/auto_critical_section.h
@@ -0,0 +1,81 @@
+// Copyright (c) 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef CLIENT_WINDOWS_COMMON_AUTO_CRITICAL_SECTION_H__
+#define CLIENT_WINDOWS_COMMON_AUTO_CRITICAL_SECTION_H__
+
+#include <windows.h>
+
+namespace google_breakpad {
+
+// Automatically enters the critical section in the constructor and leaves
+// the critical section in the destructor.
+class AutoCriticalSection {
+ public:
+  // Creates a new instance with the given critical section object
+  // and enters the critical section immediately.
+  explicit AutoCriticalSection(CRITICAL_SECTION* cs) : cs_(cs), taken_(false) {
+    assert(cs_);
+    Acquire();
+  }
+
+  // Destructor: leaves the critical section.
+  ~AutoCriticalSection() {
+    if (taken_) {
+      Release();
+    }
+  }
+
+  // Enters the critical section. Recursive Acquire() calls are not allowed.
+  void Acquire() {
+    assert(!taken_);
+    EnterCriticalSection(cs_);
+    taken_ = true;
+  }
+
+  // Leaves the critical section. The caller should not call Release() unless
+  // the critical seciton has been entered already.
+  void Release() {
+    assert(taken_);
+    taken_ = false;
+    LeaveCriticalSection(cs_);
+  }
+
+ private:
+  // Disable copy ctor and operator=.
+  AutoCriticalSection(const AutoCriticalSection&);
+  AutoCriticalSection& operator=(const AutoCriticalSection&);
+
+  CRITICAL_SECTION* cs_;
+  bool taken_;
+};
+
+}  // namespace google_breakpad
+
+#endif  // CLIENT_WINDOWS_COMMON_AUTO_CRITICAL_SECTION_H__
diff --git a/google-breakpad/src/client/windows/common/ipc_protocol.h b/google-breakpad/src/client/windows/common/ipc_protocol.h
new file mode 100644
index 0000000..c748681
--- /dev/null
+++ b/google-breakpad/src/client/windows/common/ipc_protocol.h
@@ -0,0 +1,181 @@
+// Copyright (c) 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef CLIENT_WINDOWS_COMMON_IPC_PROTOCOL_H__
+#define CLIENT_WINDOWS_COMMON_IPC_PROTOCOL_H__
+
+#include <windows.h>
+#include <dbghelp.h>
+#include <string>
+#include <utility>
+#include "common/windows/string_utils-inl.h"
+#include "google_breakpad/common/minidump_format.h"
+
+namespace google_breakpad {
+
+// Name/value pair for custom client information.
+struct CustomInfoEntry {
+  // Maximum length for name and value for client custom info.
+  static const int kNameMaxLength = 64;
+  static const int kValueMaxLength = 64;
+
+  CustomInfoEntry() {
+    // Putting name and value in initializer list makes VC++ show warning 4351.
+    set_name(NULL);
+    set_value(NULL);
+  }
+
+  CustomInfoEntry(const wchar_t* name_arg, const wchar_t* value_arg) {
+    set_name(name_arg);
+    set_value(value_arg);
+  }
+
+  void set_name(const wchar_t* name_arg) {
+    if (!name_arg) {
+      name[0] = L'\0';
+      return;
+    }
+    WindowsStringUtils::safe_wcscpy(name, kNameMaxLength, name_arg);
+  }
+
+  void set_value(const wchar_t* value_arg) {
+    if (!value_arg) {
+      value[0] = L'\0';
+      return;
+    }
+
+    WindowsStringUtils::safe_wcscpy(value, kValueMaxLength, value_arg);
+  }
+
+  void set(const wchar_t* name_arg, const wchar_t* value_arg) {
+    set_name(name_arg);
+    set_value(value_arg);
+  }
+
+  wchar_t name[kNameMaxLength];
+  wchar_t value[kValueMaxLength];
+};
+
+// Constants for the protocol between client and the server.
+
+// Tags sent with each message indicating the purpose of
+// the message.
+enum MessageTag {
+  MESSAGE_TAG_NONE = 0,
+  MESSAGE_TAG_REGISTRATION_REQUEST = 1,
+  MESSAGE_TAG_REGISTRATION_RESPONSE = 2,
+  MESSAGE_TAG_REGISTRATION_ACK = 3,
+  MESSAGE_TAG_UPLOAD_REQUEST = 4
+};
+
+struct CustomClientInfo {
+  const CustomInfoEntry* entries;
+  size_t count;
+};
+
+// Message structure for IPC between crash client and crash server.
+struct ProtocolMessage {
+  ProtocolMessage()
+      : tag(MESSAGE_TAG_NONE),
+        id(0),
+        dump_type(MiniDumpNormal),
+        thread_id(0),
+        exception_pointers(NULL),
+        assert_info(NULL),
+        custom_client_info(),
+        dump_request_handle(NULL),
+        dump_generated_handle(NULL),
+        server_alive_handle(NULL) {
+  }
+
+  // Creates an instance with the given parameters.
+  ProtocolMessage(MessageTag arg_tag,
+                  DWORD arg_id,
+                  MINIDUMP_TYPE arg_dump_type,
+                  DWORD* arg_thread_id,
+                  EXCEPTION_POINTERS** arg_exception_pointers,
+                  MDRawAssertionInfo* arg_assert_info,
+                  const CustomClientInfo& custom_info,
+                  HANDLE arg_dump_request_handle,
+                  HANDLE arg_dump_generated_handle,
+                  HANDLE arg_server_alive)
+    : tag(arg_tag),
+      id(arg_id),
+      dump_type(arg_dump_type),
+      thread_id(arg_thread_id),
+      exception_pointers(arg_exception_pointers),
+      assert_info(arg_assert_info),
+      custom_client_info(custom_info),
+      dump_request_handle(arg_dump_request_handle),
+      dump_generated_handle(arg_dump_generated_handle),
+      server_alive_handle(arg_server_alive) {
+  }
+
+  // Tag in the message.
+  MessageTag tag;
+
+  // The id for this message. This may be either a process id or a crash id
+  // depending on the type of message.
+  DWORD id;
+
+  // Dump type requested.
+  MINIDUMP_TYPE dump_type;
+
+  // Client thread id pointer.
+  DWORD* thread_id;
+
+  // Exception information.
+  EXCEPTION_POINTERS** exception_pointers;
+
+  // Assert information in case of an invalid parameter or
+  // pure call failure.
+  MDRawAssertionInfo* assert_info;
+
+  // Custom client information.
+  CustomClientInfo custom_client_info;
+
+  // Handle to signal the crash event.
+  HANDLE dump_request_handle;
+
+  // Handle to check if server is done generating crash.
+  HANDLE dump_generated_handle;
+
+  // Handle to a mutex that becomes signaled (WAIT_ABANDONED)
+  // if server process goes down.
+  HANDLE server_alive_handle;
+
+ private:
+  // Disable copy ctor and operator=.
+  ProtocolMessage(const ProtocolMessage& msg);
+  ProtocolMessage& operator=(const ProtocolMessage& msg);
+};
+
+}  // namespace google_breakpad
+
+#endif  // CLIENT_WINDOWS_COMMON_IPC_PROTOCOL_H__
diff --git a/google-breakpad/src/client/windows/crash_generation/ReadMe.txt b/google-breakpad/src/client/windows/crash_generation/ReadMe.txt
new file mode 100644
index 0000000..b54d0e1
--- /dev/null
+++ b/google-breakpad/src/client/windows/crash_generation/ReadMe.txt
@@ -0,0 +1,58 @@
+=========================================================================
+ State machine transitions for the Crash Generation Server
+=========================================================================
+
+=========================================================================
+               |
+ STATE         | ACTIONS
+               |
+=========================================================================
+ ERROR         | Clean up resources used to serve clients.
+               | Always remain in ERROR state.
+-------------------------------------------------------------------------
+ INITIAL       | Connect to the pipe asynchronously.
+               | If connection is successfully queued up asynchronously,
+               | go into CONNECTING state.
+               | If connection is done synchronously, go into CONNECTED
+               | state.
+               | For any unexpected problems, go into ERROR state.
+-------------------------------------------------------------------------
+ CONNECTING    | Get the result of async connection request.
+               | If I/O is still incomplete, remain in the CONNECTING
+               | state.
+               | If connection is complete, go into CONNECTED state.
+               | For any unexpected problems, go into DISCONNECTING state.
+-------------------------------------------------------------------------
+ CONNECTED     | Read from the pipe asynchronously.
+               | If read request is successfully queued up asynchronously,
+               | go into READING state.
+               | For any unexpected problems, go into DISCONNECTING state.
+-------------------------------------------------------------------------
+ READING       | Get the result of async read request.
+               | If read is done, go into READ_DONE state.
+               | For any unexpected problems, go into DISCONNECTING state.
+-------------------------------------------------------------------------
+ READ_DONE     | Register the client, prepare the reply and write the
+               | reply to the pipe asynchronously.
+               | If write request is successfully queued up asynchronously,
+               | go into WRITING state.
+               | For any unexpected problems, go into DISCONNECTING state.
+-------------------------------------------------------------------------
+ WRITING       | Get the result of the async write request.
+               | If write is done, go into WRITE_DONE state.
+               | For any unexpected problems, go into DISCONNECTING state.
+-------------------------------------------------------------------------
+ WRITE_DONE    | Read from the pipe asynchronously (for an ACK).
+               | If read request is successfully queued up asynchonously,
+               | go into READING_ACK state.
+               | For any unexpected problems, go into DISCONNECTING state.
+-------------------------------------------------------------------------
+ READING_ACK   | Get the result of the async read request.
+               | If read is done, perform action for successful client
+               | connection.
+               | Go into DISCONNECTING state.
+-------------------------------------------------------------------------
+ DISCONNECTING | Disconnect from the pipe, reset the event and go into
+               | INITIAL state and signal the event again. If anything
+               | fails, go into ERROR state.
+=========================================================================
diff --git a/google-breakpad/src/client/windows/crash_generation/client_info.cc b/google-breakpad/src/client/windows/crash_generation/client_info.cc
new file mode 100644
index 0000000..ed31263
--- /dev/null
+++ b/google-breakpad/src/client/windows/crash_generation/client_info.cc
@@ -0,0 +1,223 @@
+// Copyright (c) 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include "client/windows/crash_generation/client_info.h"
+#include "client/windows/common/ipc_protocol.h"
+
+static const wchar_t kCustomInfoProcessUptimeName[] = L"ptime";
+static const size_t kMaxCustomInfoEntries = 4096;
+
+namespace google_breakpad {
+
+ClientInfo::ClientInfo(CrashGenerationServer* crash_server,
+                       DWORD pid,
+                       MINIDUMP_TYPE dump_type,
+                       DWORD* thread_id,
+                       EXCEPTION_POINTERS** ex_info,
+                       MDRawAssertionInfo* assert_info,
+                       const CustomClientInfo& custom_client_info)
+    : crash_server_(crash_server),
+      pid_(pid),
+      dump_type_(dump_type),
+      ex_info_(ex_info),
+      assert_info_(assert_info),
+      custom_client_info_(custom_client_info),
+      thread_id_(thread_id),
+      process_handle_(NULL),
+      dump_requested_handle_(NULL),
+      dump_generated_handle_(NULL),
+      dump_request_wait_handle_(NULL),
+      process_exit_wait_handle_(NULL),
+      crash_id_(NULL) {
+  GetSystemTimeAsFileTime(&start_time_);
+}
+
+bool ClientInfo::Initialize() {
+  process_handle_ = OpenProcess(GENERIC_ALL, FALSE, pid_);
+  if (!process_handle_) {
+    return false;
+  }
+
+  // The crash_id will be the low order word of the process creation time.
+  FILETIME creation_time, exit_time, kernel_time, user_time;
+  if (GetProcessTimes(process_handle_, &creation_time, &exit_time,
+                      &kernel_time, &user_time)) {
+    start_time_ = creation_time;
+  }
+  crash_id_ = start_time_.dwLowDateTime;
+
+  dump_requested_handle_ = CreateEvent(NULL,    // Security attributes.
+                                       TRUE,    // Manual reset.
+                                       FALSE,   // Initial state.
+                                       NULL);   // Name.
+  if (!dump_requested_handle_) {
+    return false;
+  }
+
+  dump_generated_handle_ = CreateEvent(NULL,    // Security attributes.
+                                       TRUE,    // Manual reset.
+                                       FALSE,   // Initial state.
+                                       NULL);   // Name.
+  return dump_generated_handle_ != NULL;
+}
+
+void ClientInfo::UnregisterDumpRequestWaitAndBlockUntilNoPending() {
+  if (dump_request_wait_handle_) {
+    // Wait for callbacks that might already be running to finish.
+    UnregisterWaitEx(dump_request_wait_handle_, INVALID_HANDLE_VALUE);
+    dump_request_wait_handle_ = NULL;
+  }
+}
+
+void ClientInfo::UnregisterProcessExitWait(bool block_until_no_pending) {
+  if (process_exit_wait_handle_) {
+    if (block_until_no_pending) {
+      // Wait for the callback that might already be running to finish.
+      UnregisterWaitEx(process_exit_wait_handle_, INVALID_HANDLE_VALUE);
+    } else {
+      UnregisterWait(process_exit_wait_handle_);
+    }
+    process_exit_wait_handle_ = NULL;
+  }
+}
+
+ClientInfo::~ClientInfo() {
+  // Waiting for the callback to finish here is safe because ClientInfo's are
+  // never destroyed from the dump request handling callback.
+  UnregisterDumpRequestWaitAndBlockUntilNoPending();
+
+  // This is a little tricky because ClientInfo's may be destroyed by the same
+  // callback (OnClientEnd) and waiting for it to finish will cause a deadlock.
+  // Regardless of this complication, wait for any running callbacks to finish
+  // so that the common case is properly handled.  In order to avoid deadlocks,
+  // the OnClientEnd callback must call UnregisterProcessExitWait(false)
+  // before deleting the ClientInfo.
+  UnregisterProcessExitWait(true);
+
+  if (process_handle_) {
+    CloseHandle(process_handle_);
+  }
+
+  if (dump_requested_handle_) {
+    CloseHandle(dump_requested_handle_);
+  }
+
+  if (dump_generated_handle_) {
+    CloseHandle(dump_generated_handle_);
+  }
+}
+
+bool ClientInfo::GetClientExceptionInfo(EXCEPTION_POINTERS** ex_info) const {
+  SIZE_T bytes_count = 0;
+  if (!ReadProcessMemory(process_handle_,
+                         ex_info_,
+                         ex_info,
+                         sizeof(*ex_info),
+                         &bytes_count)) {
+    return false;
+  }
+
+  return bytes_count == sizeof(*ex_info);
+}
+
+bool ClientInfo::GetClientThreadId(DWORD* thread_id) const {
+  SIZE_T bytes_count = 0;
+  if (!ReadProcessMemory(process_handle_,
+                         thread_id_,
+                         thread_id,
+                         sizeof(*thread_id),
+                         &bytes_count)) {
+    return false;
+  }
+
+  return bytes_count == sizeof(*thread_id);
+}
+
+void ClientInfo::SetProcessUptime() {
+  FILETIME now = {0};
+  GetSystemTimeAsFileTime(&now);
+
+  ULARGE_INTEGER time_start;
+  time_start.HighPart = start_time_.dwHighDateTime;
+  time_start.LowPart = start_time_.dwLowDateTime;
+
+  ULARGE_INTEGER time_now;
+  time_now.HighPart = now.dwHighDateTime;
+  time_now.LowPart = now.dwLowDateTime;
+
+  // Calculate the delay and convert it from 100-nanoseconds to milliseconds.
+  __int64 delay = (time_now.QuadPart - time_start.QuadPart) / 10 / 1000;
+
+  // Convert it to a string.
+  wchar_t* value = custom_info_entries_.get()[custom_client_info_.count].value;
+  _i64tow_s(delay, value, CustomInfoEntry::kValueMaxLength, 10);
+}
+
+bool ClientInfo::PopulateCustomInfo() {
+  if (custom_client_info_.count > kMaxCustomInfoEntries)
+    return false;
+
+  SIZE_T bytes_count = 0;
+  SIZE_T read_count = sizeof(CustomInfoEntry) * custom_client_info_.count;
+
+  // If the scoped array for custom info already has an array, it will be
+  // the same size as what we need. This is because the number of custom info
+  // entries is always the same. So allocate memory only if scoped array has
+  // a NULL pointer.
+  if (!custom_info_entries_.get()) {
+    // Allocate an extra entry for reporting uptime for the client process.
+    custom_info_entries_.reset(
+        new CustomInfoEntry[custom_client_info_.count + 1]);
+    // Use the last element in the array for uptime.
+    custom_info_entries_.get()[custom_client_info_.count].set_name(
+        kCustomInfoProcessUptimeName);
+  }
+
+  if (!ReadProcessMemory(process_handle_,
+                         custom_client_info_.entries,
+                         custom_info_entries_.get(),
+                         read_count,
+                         &bytes_count)) {
+    return false;
+  }
+
+  SetProcessUptime();
+  return (bytes_count == read_count);
+}
+
+CustomClientInfo ClientInfo::GetCustomInfo() const {
+  CustomClientInfo custom_info;
+  custom_info.entries = custom_info_entries_.get();
+  // Add 1 to the count from the client process to account for extra entry for
+  // process uptime.
+  custom_info.count = custom_client_info_.count + 1;
+  return custom_info;
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/client/windows/crash_generation/client_info.h b/google-breakpad/src/client/windows/crash_generation/client_info.h
new file mode 100644
index 0000000..6a8fba3
--- /dev/null
+++ b/google-breakpad/src/client/windows/crash_generation/client_info.h
@@ -0,0 +1,177 @@
+// Copyright (c) 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef CLIENT_WINDOWS_CRASH_GENERATION_CLIENT_INFO_H__
+#define CLIENT_WINDOWS_CRASH_GENERATION_CLIENT_INFO_H__
+
+#include <windows.h>
+#include <dbghelp.h>
+#include "client/windows/common/ipc_protocol.h"
+#include "common/scoped_ptr.h"
+#include "google_breakpad/common/minidump_format.h"
+
+namespace google_breakpad {
+
+class CrashGenerationServer;
+
+// Abstraction for a crash client process.
+class ClientInfo {
+ public:
+  // Creates an instance with the given values. Gets the process
+  // handle for the given process id and creates necessary event
+  // objects.
+  ClientInfo(CrashGenerationServer* crash_server,
+             DWORD pid,
+             MINIDUMP_TYPE dump_type,
+             DWORD* thread_id,
+             EXCEPTION_POINTERS** ex_info,
+             MDRawAssertionInfo* assert_info,
+             const CustomClientInfo& custom_client_info);
+
+  ~ClientInfo();
+
+  CrashGenerationServer* crash_server() const { return crash_server_; }
+  DWORD pid() const { return pid_; }
+  MINIDUMP_TYPE dump_type() const { return dump_type_; }
+  EXCEPTION_POINTERS** ex_info() const { return ex_info_; }
+  MDRawAssertionInfo* assert_info() const { return assert_info_; }
+  DWORD* thread_id() const { return thread_id_; }
+  HANDLE process_handle() const { return process_handle_; }
+  HANDLE dump_requested_handle() const { return dump_requested_handle_; }
+  HANDLE dump_generated_handle() const { return dump_generated_handle_; }
+  DWORD crash_id() const { return crash_id_; }
+  const CustomClientInfo& custom_client_info() const {
+    return custom_client_info_;
+  }
+
+  void set_dump_request_wait_handle(HANDLE value) {
+    dump_request_wait_handle_ = value;
+  }
+
+  void set_process_exit_wait_handle(HANDLE value) {
+    process_exit_wait_handle_ = value;
+  }
+
+  // Unregister the dump request wait operation and wait for all callbacks
+  // that might already be running to complete before returning.
+  void UnregisterDumpRequestWaitAndBlockUntilNoPending();
+
+  // Unregister the process exit wait operation.  If block_until_no_pending is
+  // true, wait for all callbacks that might already be running to complete
+  // before returning.
+  void UnregisterProcessExitWait(bool block_until_no_pending);
+
+  bool Initialize();
+  bool GetClientExceptionInfo(EXCEPTION_POINTERS** ex_info) const;
+  bool GetClientThreadId(DWORD* thread_id) const;
+
+  // Reads the custom information from the client process address space.
+  bool PopulateCustomInfo();
+
+  // Returns the client custom information.
+  CustomClientInfo GetCustomInfo() const;
+
+ private:
+  // Calcualtes the uptime for the client process, converts it to a string and
+  // stores it in the last entry of client custom info.
+  void SetProcessUptime();
+
+  // Crash generation server.
+  CrashGenerationServer* crash_server_;
+
+  // Client process ID.
+  DWORD pid_;
+
+  // Dump type requested by the client.
+  MINIDUMP_TYPE dump_type_;
+
+  // Address of an EXCEPTION_POINTERS* variable in the client
+  // process address space that will point to an instance of
+  // EXCEPTION_POINTERS containing information about crash.
+  //
+  // WARNING: Do not dereference these pointers as they are pointers
+  // in the address space of another process.
+  EXCEPTION_POINTERS** ex_info_;
+
+  // Address of an instance of MDRawAssertionInfo in the client
+  // process address space that will contain information about
+  // non-exception related crashes like invalid parameter assertion
+  // failures and pure calls.
+  //
+  // WARNING: Do not dereference these pointers as they are pointers
+  // in the address space of another process.
+  MDRawAssertionInfo* assert_info_;
+
+  // Custom information about the client.
+  CustomClientInfo custom_client_info_;
+
+  // Contains the custom client info entries read from the client process
+  // memory. This will be populated only if the method GetClientCustomInfo
+  // is called.
+  scoped_array<CustomInfoEntry> custom_info_entries_;
+
+  // Address of a variable in the client process address space that
+  // will contain the thread id of the crashing client thread.
+  //
+  // WARNING: Do not dereference these pointers as they are pointers
+  // in the address space of another process.
+  DWORD* thread_id_;
+
+  // Client process handle.
+  HANDLE process_handle_;
+
+  // Dump request event handle.
+  HANDLE dump_requested_handle_;
+
+  // Dump generated event handle.
+  HANDLE dump_generated_handle_;
+
+  // Wait handle for dump request event.
+  HANDLE dump_request_wait_handle_;
+
+  // Wait handle for process exit event.
+  HANDLE process_exit_wait_handle_;
+
+  // Time when the client process started. It is used to determine the uptime
+  // for the client process when it signals a crash.
+  FILETIME start_time_;
+
+  // The crash id which can be used to request an upload. This will be the
+  // value of the low order dword of the process creation time for the process
+  // being dumped.
+  DWORD crash_id_;
+
+  // Disallow copy ctor and operator=.
+  ClientInfo(const ClientInfo& client_info);
+  ClientInfo& operator=(const ClientInfo& client_info);
+};
+
+}  // namespace google_breakpad
+
+#endif  // CLIENT_WINDOWS_CRASH_GENERATION_CLIENT_INFO_H__
diff --git a/google-breakpad/src/client/windows/crash_generation/crash_generation.gyp b/google-breakpad/src/client/windows/crash_generation/crash_generation.gyp
new file mode 100644
index 0000000..ba34376
--- /dev/null
+++ b/google-breakpad/src/client/windows/crash_generation/crash_generation.gyp
@@ -0,0 +1,63 @@
+# Copyright 2010 Google Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+{
+  'includes': [
+    '../../../build/common.gypi',
+  ],
+  'targets': [
+    {
+      'target_name': 'crash_generation_server',
+      'type': 'static_library',
+      'sources': [
+        'client_info.cc',
+        'crash_generation_server.cc',
+        'minidump_generator.cc',
+        'client_info.h',
+        'crash_generation_client.h',
+        'crash_generation_server.h',
+        'minidump_generator.h',
+      ],
+      'dependencies': [
+        '../breakpad_client.gyp:common'
+      ],
+    },
+    {
+      'target_name': 'crash_generation_client',
+      'type': 'static_library',
+      'include_dirs': [
+        '<(DEPTH)',
+      ],
+      'sources': [
+        'crash_generation_client.h',
+        'crash_generation_client.cc',
+        'crash_generation_server.h',
+      ],
+    },
+  ],
+}
diff --git a/google-breakpad/src/client/windows/crash_generation/crash_generation_client.cc b/google-breakpad/src/client/windows/crash_generation/crash_generation_client.cc
new file mode 100644
index 0000000..1e86dce
--- /dev/null
+++ b/google-breakpad/src/client/windows/crash_generation/crash_generation_client.cc
@@ -0,0 +1,405 @@
+// Copyright (c) 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include "client/windows/crash_generation/crash_generation_client.h"
+#include <cassert>
+#include <utility>
+#include "client/windows/common/ipc_protocol.h"
+
+namespace google_breakpad {
+
+const int kPipeBusyWaitTimeoutMs = 2000;
+
+#ifdef _DEBUG
+const DWORD kWaitForServerTimeoutMs = INFINITE;
+#else
+const DWORD kWaitForServerTimeoutMs = 15000;
+#endif
+
+const int kPipeConnectMaxAttempts = 2;
+
+const DWORD kPipeDesiredAccess = FILE_READ_DATA |
+                                 FILE_WRITE_DATA |
+                                 FILE_WRITE_ATTRIBUTES;
+
+const DWORD kPipeFlagsAndAttributes = SECURITY_IDENTIFICATION |
+                                      SECURITY_SQOS_PRESENT;
+
+const DWORD kPipeMode = PIPE_READMODE_MESSAGE;
+
+const size_t kWaitEventCount = 2;
+
+// This function is orphan for production code. It can be used
+// for debugging to help repro some scenarios like the client
+// is slow in writing to the pipe after connecting, the client
+// is slow in reading from the pipe after writing, etc. The parameter
+// overlapped below is not used and it is present to match the signature
+// of this function to TransactNamedPipe Win32 API. Uncomment if needed
+// for debugging.
+/**
+static bool TransactNamedPipeDebugHelper(HANDLE pipe,
+                                         const void* in_buffer,
+                                         DWORD in_size,
+                                         void* out_buffer,
+                                         DWORD out_size,
+                                         DWORD* bytes_count,
+                                         LPOVERLAPPED) {
+  // Uncomment the next sleep to create a gap before writing
+  // to pipe.
+  // Sleep(5000);
+
+  if (!WriteFile(pipe,
+                 in_buffer,
+                 in_size,
+                 bytes_count,
+                 NULL)) {
+    return false;
+  }
+
+  // Uncomment the next sleep to create a gap between write
+  // and read.
+  // Sleep(5000);
+
+  return ReadFile(pipe, out_buffer, out_size, bytes_count, NULL) != FALSE;
+}
+**/
+
+CrashGenerationClient::CrashGenerationClient(
+    const wchar_t* pipe_name,
+    MINIDUMP_TYPE dump_type,
+    const CustomClientInfo* custom_info)
+        : pipe_name_(pipe_name),
+          pipe_handle_(NULL),
+          dump_type_(dump_type),
+          thread_id_(0),
+          server_process_id_(0),
+          crash_event_(NULL),
+          crash_generated_(NULL),
+          server_alive_(NULL),
+          exception_pointers_(NULL),
+          custom_info_() {
+  memset(&assert_info_, 0, sizeof(assert_info_));
+  if (custom_info) {
+    custom_info_ = *custom_info;
+  }
+}
+
+CrashGenerationClient::CrashGenerationClient(
+    HANDLE pipe_handle,
+    MINIDUMP_TYPE dump_type,
+    const CustomClientInfo* custom_info)
+        : pipe_name_(),
+          pipe_handle_(pipe_handle),
+          dump_type_(dump_type),
+          thread_id_(0),
+          server_process_id_(0),
+          crash_event_(NULL),
+          crash_generated_(NULL),
+          server_alive_(NULL),
+          exception_pointers_(NULL),
+          custom_info_() {
+  memset(&assert_info_, 0, sizeof(assert_info_));
+  if (custom_info) {
+    custom_info_ = *custom_info;
+  }
+}
+
+CrashGenerationClient::~CrashGenerationClient() {
+  if (crash_event_) {
+    CloseHandle(crash_event_);
+  }
+
+  if (crash_generated_) {
+    CloseHandle(crash_generated_);
+  }
+
+  if (server_alive_) {
+    CloseHandle(server_alive_);
+  }
+}
+
+// Performs the registration step with the server process.
+// The registration step involves communicating with the server
+// via a named pipe. The client sends the following pieces of
+// data to the server:
+//
+// * Message tag indicating the client is requesting registration.
+// * Process id of the client process.
+// * Address of a DWORD variable in the client address space
+//   that will contain the thread id of the client thread that
+//   caused the crash.
+// * Address of a EXCEPTION_POINTERS* variable in the client
+//   address space that will point to an instance of EXCEPTION_POINTERS
+//   when the crash happens.
+// * Address of an instance of MDRawAssertionInfo that will contain
+//   relevant information in case of non-exception crashes like assertion
+//   failures and pure calls.
+//
+// In return the client expects the following information from the server:
+//
+// * Message tag indicating successful registration.
+// * Server process id.
+// * Handle to an object that client can signal to request dump
+//   generation from the server.
+// * Handle to an object that client can wait on after requesting
+//   dump generation for the server to finish dump generation.
+// * Handle to a mutex object that client can wait on to make sure
+//   server is still alive.
+//
+// If any step of the expected behavior mentioned above fails, the
+// registration step is not considered successful and hence out-of-process
+// dump generation service is not available.
+//
+// Returns true if the registration is successful; false otherwise.
+bool CrashGenerationClient::Register() {
+  if (IsRegistered()) {
+    return true;
+  }
+
+  HANDLE pipe = ConnectToServer();
+  if (!pipe) {
+    return false;
+  }
+
+  bool success = RegisterClient(pipe);
+  CloseHandle(pipe);
+  return success;
+}
+
+bool CrashGenerationClient::RequestUpload(DWORD crash_id) {
+  HANDLE pipe = ConnectToServer();
+  if (!pipe) {
+    return false;
+  }
+
+  CustomClientInfo custom_info = {NULL, 0};
+  ProtocolMessage msg(MESSAGE_TAG_UPLOAD_REQUEST, crash_id,
+                      static_cast<MINIDUMP_TYPE>(NULL), NULL, NULL, NULL,
+                      custom_info, NULL, NULL, NULL);
+  DWORD bytes_count = 0;
+  bool success = WriteFile(pipe, &msg, sizeof(msg), &bytes_count, NULL) != 0;
+
+  CloseHandle(pipe);
+  return success;
+}
+
+HANDLE CrashGenerationClient::ConnectToServer() {
+  HANDLE pipe = ConnectToPipe(pipe_name_.c_str(),
+                              kPipeDesiredAccess,
+                              kPipeFlagsAndAttributes);
+  if (!pipe) {
+    return NULL;
+  }
+
+  DWORD mode = kPipeMode;
+  if (!SetNamedPipeHandleState(pipe, &mode, NULL, NULL)) {
+    CloseHandle(pipe);
+    pipe = NULL;
+  }
+
+  return pipe;
+}
+
+bool CrashGenerationClient::RegisterClient(HANDLE pipe) {
+  ProtocolMessage msg(MESSAGE_TAG_REGISTRATION_REQUEST,
+                      GetCurrentProcessId(),
+                      dump_type_,
+                      &thread_id_,
+                      &exception_pointers_,
+                      &assert_info_,
+                      custom_info_,
+                      NULL,
+                      NULL,
+                      NULL);
+  ProtocolMessage reply;
+  DWORD bytes_count = 0;
+  // The call to TransactNamedPipe below can be changed to a call
+  // to TransactNamedPipeDebugHelper to help repro some scenarios.
+  // For details see comments for TransactNamedPipeDebugHelper.
+  if (!TransactNamedPipe(pipe,
+                         &msg,
+                         sizeof(msg),
+                         &reply,
+                         sizeof(ProtocolMessage),
+                         &bytes_count,
+                         NULL)) {
+    return false;
+  }
+
+  if (!ValidateResponse(reply)) {
+    return false;
+  }
+
+  ProtocolMessage ack_msg;
+  ack_msg.tag = MESSAGE_TAG_REGISTRATION_ACK;
+
+  if (!WriteFile(pipe, &ack_msg, sizeof(ack_msg), &bytes_count, NULL)) {
+    return false;
+  }
+  crash_event_ = reply.dump_request_handle;
+  crash_generated_ = reply.dump_generated_handle;
+  server_alive_ = reply.server_alive_handle;
+  server_process_id_ = reply.id;
+
+  return true;
+}
+
+HANDLE CrashGenerationClient::ConnectToPipe(const wchar_t* pipe_name,
+                                            DWORD pipe_access,
+                                            DWORD flags_attrs) {
+  if (pipe_handle_) {
+    HANDLE t = pipe_handle_;
+    pipe_handle_ = NULL;
+    return t;
+  }
+
+  for (int i = 0; i < kPipeConnectMaxAttempts; ++i) {
+    HANDLE pipe = CreateFile(pipe_name,
+                             pipe_access,
+                             0,
+                             NULL,
+                             OPEN_EXISTING,
+                             flags_attrs,
+                             NULL);
+    if (pipe != INVALID_HANDLE_VALUE) {
+      return pipe;
+    }
+
+    // Cannot continue retrying if error is something other than
+    // ERROR_PIPE_BUSY.
+    if (GetLastError() != ERROR_PIPE_BUSY) {
+      break;
+    }
+
+    // Cannot continue retrying if wait on pipe fails.
+    if (!WaitNamedPipe(pipe_name, kPipeBusyWaitTimeoutMs)) {
+      break;
+    }
+  }
+
+  return NULL;
+}
+
+bool CrashGenerationClient::ValidateResponse(
+    const ProtocolMessage& msg) const {
+  return (msg.tag == MESSAGE_TAG_REGISTRATION_RESPONSE) &&
+         (msg.id != 0) &&
+         (msg.dump_request_handle != NULL) &&
+         (msg.dump_generated_handle != NULL) &&
+         (msg.server_alive_handle != NULL);
+}
+
+bool CrashGenerationClient::IsRegistered() const {
+  return crash_event_ != NULL;
+}
+
+bool CrashGenerationClient::RequestDump(EXCEPTION_POINTERS* ex_info,
+                                        MDRawAssertionInfo* assert_info) {
+  if (!IsRegistered()) {
+    return false;
+  }
+
+  exception_pointers_ = ex_info;
+  thread_id_ = GetCurrentThreadId();
+
+  if (assert_info) {
+    memcpy(&assert_info_, assert_info, sizeof(assert_info_));
+  } else {
+    memset(&assert_info_, 0, sizeof(assert_info_));
+  }
+
+  return SignalCrashEventAndWait();
+}
+
+bool CrashGenerationClient::RequestDump(EXCEPTION_POINTERS* ex_info) {
+  return RequestDump(ex_info, NULL);
+}
+
+bool CrashGenerationClient::RequestDump(MDRawAssertionInfo* assert_info) {
+  return RequestDump(NULL, assert_info);
+}
+
+bool CrashGenerationClient::SignalCrashEventAndWait() {
+  assert(crash_event_);
+  assert(crash_generated_);
+  assert(server_alive_);
+
+  // Reset the dump generated event before signaling the crash
+  // event so that the server can set the dump generated event
+  // once it is done generating the event.
+  if (!ResetEvent(crash_generated_)) {
+    return false;
+  }
+
+  if (!SetEvent(crash_event_)) {
+    return false;
+  }
+
+  HANDLE wait_handles[kWaitEventCount] = {crash_generated_, server_alive_};
+
+  DWORD result = WaitForMultipleObjects(kWaitEventCount,
+                                        wait_handles,
+                                        FALSE,
+                                        kWaitForServerTimeoutMs);
+
+  // Crash dump was successfully generated only if the server
+  // signaled the crash generated event.
+  return result == WAIT_OBJECT_0;
+}
+
+HANDLE CrashGenerationClient::DuplicatePipeToClientProcess(const wchar_t* pipe_name,
+                                                           HANDLE hProcess) {
+  for (int i = 0; i < kPipeConnectMaxAttempts; ++i) {
+    HANDLE local_pipe = CreateFile(pipe_name, kPipeDesiredAccess,
+                                   0, NULL, OPEN_EXISTING,
+                                   kPipeFlagsAndAttributes, NULL);
+    if (local_pipe != INVALID_HANDLE_VALUE) {
+      HANDLE remotePipe = INVALID_HANDLE_VALUE;
+      if (DuplicateHandle(GetCurrentProcess(), local_pipe,
+                          hProcess, &remotePipe, 0, FALSE,
+                          DUPLICATE_CLOSE_SOURCE | DUPLICATE_SAME_ACCESS)) {
+        return remotePipe;
+      } else {
+        return INVALID_HANDLE_VALUE;
+      }
+    }
+
+    // Cannot continue retrying if the error wasn't a busy pipe.
+    if (GetLastError() != ERROR_PIPE_BUSY) {
+      return INVALID_HANDLE_VALUE;
+    }
+
+    if (!WaitNamedPipe(pipe_name, kPipeBusyWaitTimeoutMs)) {
+      return INVALID_HANDLE_VALUE;
+    }
+  }
+  return INVALID_HANDLE_VALUE;
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/client/windows/crash_generation/crash_generation_client.h b/google-breakpad/src/client/windows/crash_generation/crash_generation_client.h
new file mode 100644
index 0000000..457f731
--- /dev/null
+++ b/google-breakpad/src/client/windows/crash_generation/crash_generation_client.h
@@ -0,0 +1,182 @@
+// Copyright (c) 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef CLIENT_WINDOWS_CRASH_GENERATION_CRASH_GENERATION_CLIENT_H_
+#define CLIENT_WINDOWS_CRASH_GENERATION_CRASH_GENERATION_CLIENT_H_
+
+#include <windows.h>
+#include <dbghelp.h>
+#include <string>
+#include <utility>
+#include "client/windows/common/ipc_protocol.h"
+#include "common/scoped_ptr.h"
+
+namespace google_breakpad {
+
+struct CustomClientInfo;
+
+// Abstraction of client-side implementation of out of process
+// crash generation.
+//
+// The process that desires to have out-of-process crash dump
+// generation service can use this class in the following way:
+//
+// * Create an instance.
+// * Call Register method so that the client tries to register
+//   with the server process and check the return value. If
+//   registration is not successful, out-of-process crash dump
+//   generation will not be available
+// * Request dump generation by calling either of the two
+//   overloaded RequestDump methods - one in case of exceptions
+//   and the other in case of assertion failures
+//
+// Note that it is the responsibility of the client code of
+// this class to set the unhandled exception filter with the
+// system by calling the SetUnhandledExceptionFilter function
+// and the client code should explicitly request dump generation.
+class CrashGenerationClient {
+ public:
+  CrashGenerationClient(const wchar_t* pipe_name,
+                        MINIDUMP_TYPE dump_type,
+                        const CustomClientInfo* custom_info);
+
+  CrashGenerationClient(HANDLE pipe_handle,
+                        MINIDUMP_TYPE dump_type,
+                        const CustomClientInfo* custom_info);
+
+  ~CrashGenerationClient();
+
+  // Registers the client process with the crash server.
+  //
+  // Returns true if the registration is successful; false otherwise.
+  bool Register();
+
+  // Requests the crash server to upload a previous dump with the
+  // given crash id.
+  bool RequestUpload(DWORD crash_id);
+
+  bool RequestDump(EXCEPTION_POINTERS* ex_info,
+                   MDRawAssertionInfo* assert_info);
+
+  // Requests the crash server to generate a dump with the given
+  // exception information.
+  //
+  // Returns true if the dump was successful; false otherwise. Note that
+  // if the registration step was not performed or it was not successful,
+  // false will be returned.
+  bool RequestDump(EXCEPTION_POINTERS* ex_info);
+
+  // Requests the crash server to generate a dump with the given
+  // assertion information.
+  //
+  // Returns true if the dump was successful; false otherwise. Note that
+  // if the registration step was not performed or it was not successful,
+  // false will be returned.
+  bool RequestDump(MDRawAssertionInfo* assert_info);
+
+  // If the crash generation client is running in a sandbox that prevents it
+  // from opening the named pipe directly, the server process may open the
+  // handle and duplicate it into the client process with this helper method.
+  // Returns INVALID_HANDLE_VALUE on failure. The process must have been opened
+  // with the PROCESS_DUP_HANDLE access right.
+  static HANDLE DuplicatePipeToClientProcess(const wchar_t* pipe_name,
+                                             HANDLE hProcess);
+
+ private:
+  // Connects to the appropriate pipe and sets the pipe handle state.
+  //
+  // Returns the pipe handle if everything goes well; otherwise Returns NULL.
+  HANDLE ConnectToServer();
+
+  // Performs a handshake with the server over the given pipe which should be
+  // already connected to the server.
+  //
+  // Returns true if handshake with the server was successful; false otherwise.
+  bool RegisterClient(HANDLE pipe);
+
+  // Validates the given server response.
+  bool ValidateResponse(const ProtocolMessage& msg) const;
+
+  // Returns true if the registration step succeeded; false otherwise.
+  bool IsRegistered() const;
+
+  // Connects to the given named pipe with given parameters.
+  //
+  // Returns true if the connection is successful; false otherwise.
+  HANDLE ConnectToPipe(const wchar_t* pipe_name,
+                       DWORD pipe_access,
+                       DWORD flags_attrs);
+
+  // Signals the crash event and wait for the server to generate crash.
+  bool SignalCrashEventAndWait();
+
+  // Pipe name to use to talk to server.
+  std::wstring pipe_name_;
+
+  // Pipe handle duplicated from server process. Only valid before
+  // Register is called.
+  HANDLE pipe_handle_;
+
+  // Custom client information
+  CustomClientInfo custom_info_;
+
+  // Type of dump to generate.
+  MINIDUMP_TYPE dump_type_;
+
+  // Event to signal in case of a crash.
+  HANDLE crash_event_;
+
+  // Handle to wait on after signaling a crash for the server
+  // to finish generating crash dump.
+  HANDLE crash_generated_;
+
+  // Handle to a mutex that will become signaled with WAIT_ABANDONED
+  // if the server process goes down.
+  HANDLE server_alive_;
+
+  // Server process id.
+  DWORD server_process_id_;
+
+  // Id of the thread that caused the crash.
+  DWORD thread_id_;
+
+  // Exception pointers for an exception crash.
+  EXCEPTION_POINTERS* exception_pointers_;
+
+  // Assertion info for an invalid parameter or pure call crash.
+  MDRawAssertionInfo assert_info_;
+
+  // Disable copy ctor and operator=.
+  CrashGenerationClient(const CrashGenerationClient& crash_client);
+  CrashGenerationClient& operator=(const CrashGenerationClient& crash_client);
+};
+
+}  // namespace google_breakpad
+
+#endif  // CLIENT_WINDOWS_CRASH_GENERATION_CRASH_GENERATION_CLIENT_H_
diff --git a/google-breakpad/src/client/windows/crash_generation/crash_generation_server.cc b/google-breakpad/src/client/windows/crash_generation/crash_generation_server.cc
new file mode 100644
index 0000000..ae05243
--- /dev/null
+++ b/google-breakpad/src/client/windows/crash_generation/crash_generation_server.cc
@@ -0,0 +1,931 @@
+// Copyright (c) 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include "client/windows/crash_generation/crash_generation_server.h"
+#include <windows.h>
+#include <cassert>
+#include <list>
+#include "client/windows/common/auto_critical_section.h"
+#include "common/scoped_ptr.h"
+
+#include "client/windows/crash_generation/client_info.h"
+
+namespace google_breakpad {
+
+// Output buffer size.
+static const size_t kOutBufferSize = 64;
+
+// Input buffer size.
+static const size_t kInBufferSize = 64;
+
+// Access flags for the client on the dump request event.
+static const DWORD kDumpRequestEventAccess = EVENT_MODIFY_STATE;
+
+// Access flags for the client on the dump generated event.
+static const DWORD kDumpGeneratedEventAccess = EVENT_MODIFY_STATE |
+                                               SYNCHRONIZE;
+
+// Access flags for the client on the mutex.
+static const DWORD kMutexAccess = SYNCHRONIZE;
+
+// Attribute flags for the pipe.
+static const DWORD kPipeAttr = FILE_FLAG_FIRST_PIPE_INSTANCE |
+                               PIPE_ACCESS_DUPLEX |
+                               FILE_FLAG_OVERLAPPED;
+
+// Mode for the pipe.
+static const DWORD kPipeMode = PIPE_TYPE_MESSAGE |
+                               PIPE_READMODE_MESSAGE |
+                               PIPE_WAIT;
+
+// For pipe I/O, execute the callback in the wait thread itself,
+// since the callback does very little work. The callback executes
+// the code for one of the states of the server state machine and
+// the code for all of the states perform async I/O and hence
+// finish very quickly.
+static const ULONG kPipeIOThreadFlags = WT_EXECUTEINWAITTHREAD;
+
+// Dump request threads will, most likely, generate dumps. That may
+// take some time to finish, so specify WT_EXECUTELONGFUNCTION flag.
+static const ULONG kDumpRequestThreadFlags = WT_EXECUTEINWAITTHREAD |
+                                             WT_EXECUTELONGFUNCTION;
+
+static bool IsClientRequestValid(const ProtocolMessage& msg) {
+  return msg.tag == MESSAGE_TAG_UPLOAD_REQUEST ||
+         (msg.tag == MESSAGE_TAG_REGISTRATION_REQUEST &&
+          msg.id != 0 &&
+          msg.thread_id != NULL &&
+          msg.exception_pointers != NULL &&
+          msg.assert_info != NULL);
+}
+
+#ifdef _DEBUG
+static bool CheckForIOIncomplete(bool success) {
+  // We should never get an I/O incomplete since we should not execute this
+  // unless the operation has finished and the overlapped event is signaled. If
+  // we do get INCOMPLETE, we have a bug in our code.
+  return success ? false : (GetLastError() == ERROR_IO_INCOMPLETE);
+}
+#endif
+
+CrashGenerationServer::CrashGenerationServer(
+    const std::wstring& pipe_name,
+    SECURITY_ATTRIBUTES* pipe_sec_attrs,
+    OnClientConnectedCallback connect_callback,
+    void* connect_context,
+    OnClientDumpRequestCallback dump_callback,
+    void* dump_context,
+    OnClientExitedCallback exit_callback,
+    void* exit_context,
+    OnClientUploadRequestCallback upload_request_callback,
+    void* upload_context,
+    bool generate_dumps,
+    const std::wstring* dump_path)
+    : pipe_name_(pipe_name),
+      pipe_sec_attrs_(pipe_sec_attrs),
+      pipe_(NULL),
+      pipe_wait_handle_(NULL),
+      server_alive_handle_(NULL),
+      connect_callback_(connect_callback),
+      connect_context_(connect_context),
+      dump_callback_(dump_callback),
+      dump_context_(dump_context),
+      exit_callback_(exit_callback),
+      exit_context_(exit_context),
+      upload_request_callback_(upload_request_callback),
+      upload_context_(upload_context),
+      generate_dumps_(generate_dumps),
+      dump_path_(dump_path ? *dump_path : L""),
+      server_state_(IPC_SERVER_STATE_UNINITIALIZED),
+      shutting_down_(false),
+      overlapped_(),
+      client_info_(NULL),
+      pre_fetch_custom_info_(true) {
+  InitializeCriticalSection(&sync_);
+}
+
+// This should never be called from the OnPipeConnected callback.
+// Otherwise the UnregisterWaitEx call below will cause a deadlock.
+CrashGenerationServer::~CrashGenerationServer() {
+  // New scope to release the lock automatically.
+  {
+    // Make sure no clients are added or removed beyond this point.
+    // Before adding or removing any clients, the critical section
+    // must be entered and the shutting_down_ flag checked. The
+    // critical section is then exited only after the clients_ list
+    // modifications are done and the list is in a consistent state.
+    AutoCriticalSection lock(&sync_);
+
+    // Indicate to existing threads that server is shutting down.
+    shutting_down_ = true;
+  }
+  // No one will modify the clients_ list beyond this point -
+  // not even from another thread.
+
+  // Even if there are no current worker threads running, it is possible that
+  // an I/O request is pending on the pipe right now but not yet done.
+  // In fact, it's very likely this is the case unless we are in an ERROR
+  // state. If we don't wait for the pending I/O to be done, then when the I/O
+  // completes, it may write to invalid memory. AppVerifier will flag this
+  // problem too. So we disconnect from the pipe and then wait for the server
+  // to get into error state so that the pending I/O will fail and get
+  // cleared.
+  DisconnectNamedPipe(pipe_);
+  int num_tries = 100;
+  while (num_tries-- && server_state_ != IPC_SERVER_STATE_ERROR) {
+    Sleep(10);
+  }
+
+  // Unregister wait on the pipe.
+  if (pipe_wait_handle_) {
+    // Wait for already executing callbacks to finish.
+    UnregisterWaitEx(pipe_wait_handle_, INVALID_HANDLE_VALUE);
+  }
+
+  // Close the pipe to avoid further client connections.
+  if (pipe_) {
+    CloseHandle(pipe_);
+  }
+
+  // Request all ClientInfo objects to unregister all waits.
+  // No need to enter the critical section because no one is allowed to modify
+  // the clients_ list once the shutting_down_ flag is set.
+  std::list<ClientInfo*>::iterator iter;
+  for (iter = clients_.begin(); iter != clients_.end(); ++iter) {
+    ClientInfo* client_info = *iter;
+    // Unregister waits. Wait for already executing callbacks to finish.
+    // Unregister the client process exit wait first and only then unregister
+    // the dump request wait.  The reason is that the OnClientExit callback
+    // also unregisters the dump request wait and such a race (doing the same
+    // unregistration from two threads) is undesirable.
+    client_info->UnregisterProcessExitWait(true);
+    client_info->UnregisterDumpRequestWaitAndBlockUntilNoPending();
+
+    // Destroying the ClientInfo here is safe because all wait operations for
+    // this ClientInfo were unregistered and no pending or running callbacks
+    // for this ClientInfo can possible exist (block_until_no_pending option
+    // was used).
+    delete client_info;
+  }
+
+  if (server_alive_handle_) {
+    // Release the mutex before closing the handle so that clients requesting
+    // dumps wait for a long time for the server to generate a dump.
+    ReleaseMutex(server_alive_handle_);
+    CloseHandle(server_alive_handle_);
+  }
+
+  if (overlapped_.hEvent) {
+    CloseHandle(overlapped_.hEvent);
+  }
+
+  DeleteCriticalSection(&sync_);
+}
+
+bool CrashGenerationServer::Start() {
+  if (server_state_ != IPC_SERVER_STATE_UNINITIALIZED) {
+    return false;
+  }
+
+  server_state_ = IPC_SERVER_STATE_INITIAL;
+
+  server_alive_handle_ = CreateMutex(NULL, TRUE, NULL);
+  if (!server_alive_handle_) {
+    return false;
+  }
+
+  // Event to signal the client connection and pipe reads and writes.
+  overlapped_.hEvent = CreateEvent(NULL,   // Security descriptor.
+                                   TRUE,   // Manual reset.
+                                   FALSE,  // Initially nonsignaled.
+                                   NULL);  // Name.
+  if (!overlapped_.hEvent) {
+    return false;
+  }
+
+  // Register a callback with the thread pool for the client connection.
+  if (!RegisterWaitForSingleObject(&pipe_wait_handle_,
+                                   overlapped_.hEvent,
+                                   OnPipeConnected,
+                                   this,
+                                   INFINITE,
+                                   kPipeIOThreadFlags)) {
+    return false;
+  }
+
+  pipe_ = CreateNamedPipe(pipe_name_.c_str(),
+                          kPipeAttr,
+                          kPipeMode,
+                          1,
+                          kOutBufferSize,
+                          kInBufferSize,
+                          0,
+                          pipe_sec_attrs_);
+  if (pipe_ == INVALID_HANDLE_VALUE) {
+    return false;
+  }
+
+  // Kick-start the state machine. This will initiate an asynchronous wait
+  // for client connections.
+  if (!SetEvent(overlapped_.hEvent)) {
+    server_state_ = IPC_SERVER_STATE_ERROR;
+    return false;
+  }
+
+  // If we are in error state, it's because we failed to start listening.
+  return true;
+}
+
+// If the server thread serving clients ever gets into the
+// ERROR state, reset the event, close the pipe and remain
+// in the error state forever. Error state means something
+// that we didn't account for has happened, and it's dangerous
+// to do anything unknowingly.
+void CrashGenerationServer::HandleErrorState() {
+  assert(server_state_ == IPC_SERVER_STATE_ERROR);
+
+  // If the server is shutting down anyway, don't clean up
+  // here since shut down process will clean up.
+  if (shutting_down_) {
+    return;
+  }
+
+  if (pipe_wait_handle_) {
+    UnregisterWait(pipe_wait_handle_);
+    pipe_wait_handle_ = NULL;
+  }
+
+  if (pipe_) {
+    CloseHandle(pipe_);
+    pipe_ = NULL;
+  }
+
+  if (overlapped_.hEvent) {
+    CloseHandle(overlapped_.hEvent);
+    overlapped_.hEvent = NULL;
+  }
+}
+
+// When the server thread serving clients is in the INITIAL state,
+// try to connect to the pipe asynchronously. If the connection
+// finishes synchronously, directly go into the CONNECTED state;
+// otherwise go into the CONNECTING state. For any problems, go
+// into the ERROR state.
+void CrashGenerationServer::HandleInitialState() {
+  assert(server_state_ == IPC_SERVER_STATE_INITIAL);
+
+  if (!ResetEvent(overlapped_.hEvent)) {
+    EnterErrorState();
+    return;
+  }
+
+  bool success = ConnectNamedPipe(pipe_, &overlapped_) != FALSE;
+  DWORD error_code = success ? ERROR_SUCCESS : GetLastError();
+
+  // From MSDN, it is not clear that when ConnectNamedPipe is used
+  // in an overlapped mode, will it ever return non-zero value, and
+  // if so, in what cases.
+  assert(!success);
+
+  switch (error_code) {
+    case ERROR_IO_PENDING:
+      EnterStateWhenSignaled(IPC_SERVER_STATE_CONNECTING);
+      break;
+
+    case ERROR_PIPE_CONNECTED:
+      EnterStateImmediately(IPC_SERVER_STATE_CONNECTED);
+      break;
+
+    default:
+      EnterErrorState();
+      break;
+  }
+}
+
+// When the server thread serving the clients is in the CONNECTING state,
+// try to get the result of the asynchronous connection request using
+// the OVERLAPPED object. If the result indicates the connection is done,
+// go into the CONNECTED state. If the result indicates I/O is still
+// INCOMPLETE, remain in the CONNECTING state. For any problems,
+// go into the DISCONNECTING state.
+void CrashGenerationServer::HandleConnectingState() {
+  assert(server_state_ == IPC_SERVER_STATE_CONNECTING);
+
+  DWORD bytes_count = 0;
+  bool success = GetOverlappedResult(pipe_,
+                                     &overlapped_,
+                                     &bytes_count,
+                                     FALSE) != FALSE;
+  DWORD error_code = success ? ERROR_SUCCESS : GetLastError();
+
+  if (success) {
+    EnterStateImmediately(IPC_SERVER_STATE_CONNECTED);
+  } else if (error_code != ERROR_IO_INCOMPLETE) {
+    EnterStateImmediately(IPC_SERVER_STATE_DISCONNECTING);
+  } else {
+    // remain in CONNECTING state
+  }
+}
+
+// When the server thread serving the clients is in the CONNECTED state,
+// try to issue an asynchronous read from the pipe. If read completes
+// synchronously or if I/O is pending then go into the READING state.
+// For any problems, go into the DISCONNECTING state.
+void CrashGenerationServer::HandleConnectedState() {
+  assert(server_state_ == IPC_SERVER_STATE_CONNECTED);
+
+  DWORD bytes_count = 0;
+  memset(&msg_, 0, sizeof(msg_));
+  bool success = ReadFile(pipe_,
+                          &msg_,
+                          sizeof(msg_),
+                          &bytes_count,
+                          &overlapped_) != FALSE;
+  DWORD error_code = success ? ERROR_SUCCESS : GetLastError();
+
+  // Note that the asynchronous read issued above can finish before the
+  // code below executes. But, it is okay to change state after issuing
+  // the asynchronous read. This is because even if the asynchronous read
+  // is done, the callback for it would not be executed until the current
+  // thread finishes its execution.
+  if (success || error_code == ERROR_IO_PENDING) {
+    EnterStateWhenSignaled(IPC_SERVER_STATE_READING);
+  } else {
+    EnterStateImmediately(IPC_SERVER_STATE_DISCONNECTING);
+  }
+}
+
+// When the server thread serving the clients is in the READING state,
+// try to get the result of the async read. If async read is done,
+// go into the READ_DONE state. For any problems, go into the
+// DISCONNECTING state.
+void CrashGenerationServer::HandleReadingState() {
+  assert(server_state_ == IPC_SERVER_STATE_READING);
+
+  DWORD bytes_count = 0;
+  bool success = GetOverlappedResult(pipe_,
+                                     &overlapped_,
+                                     &bytes_count,
+                                     FALSE) != FALSE;
+  if (success && bytes_count == sizeof(ProtocolMessage)) {
+    EnterStateImmediately(IPC_SERVER_STATE_READ_DONE);
+    return;
+  }
+
+  assert(!CheckForIOIncomplete(success));
+  EnterStateImmediately(IPC_SERVER_STATE_DISCONNECTING);
+}
+
+// When the server thread serving the client is in the READ_DONE state,
+// validate the client's request message, register the client by
+// creating appropriate objects and prepare the response.  Then try to
+// write the response to the pipe asynchronously. If that succeeds,
+// go into the WRITING state. For any problems, go into the DISCONNECTING
+// state.
+void CrashGenerationServer::HandleReadDoneState() {
+  assert(server_state_ == IPC_SERVER_STATE_READ_DONE);
+
+  if (!IsClientRequestValid(msg_)) {
+    EnterStateImmediately(IPC_SERVER_STATE_DISCONNECTING);
+    return;
+  }
+
+  if (msg_.tag == MESSAGE_TAG_UPLOAD_REQUEST) {
+    if (upload_request_callback_)
+      upload_request_callback_(upload_context_, msg_.id);
+    EnterStateImmediately(IPC_SERVER_STATE_DISCONNECTING);
+    return;
+  }
+
+  scoped_ptr<ClientInfo> client_info(
+      new ClientInfo(this,
+                     msg_.id,
+                     msg_.dump_type,
+                     msg_.thread_id,
+                     msg_.exception_pointers,
+                     msg_.assert_info,
+                     msg_.custom_client_info));
+
+  if (!client_info->Initialize()) {
+    EnterStateImmediately(IPC_SERVER_STATE_DISCONNECTING);
+    return;
+  }
+
+  // Issues an asynchronous WriteFile call if successful.
+  // Iff successful, assigns ownership of the client_info pointer to the server
+  // instance, in which case we must be sure not to free it in this function.
+  if (!RespondToClient(client_info.get())) {
+    EnterStateImmediately(IPC_SERVER_STATE_DISCONNECTING);
+    return;
+  }
+
+  // This is only valid as long as it can be found in the clients_ list
+  client_info_ = client_info.release();
+
+  // Note that the asynchronous write issued by RespondToClient function
+  // can finish before  the code below executes. But it is okay to change
+  // state after issuing the asynchronous write. This is because even if
+  // the asynchronous write is done, the callback for it would not be
+  // executed until the current thread finishes its execution.
+  EnterStateWhenSignaled(IPC_SERVER_STATE_WRITING);
+}
+
+// When the server thread serving the clients is in the WRITING state,
+// try to get the result of the async write. If the async write is done,
+// go into the WRITE_DONE state. For any problems, go into the
+// DISONNECTING state.
+void CrashGenerationServer::HandleWritingState() {
+  assert(server_state_ == IPC_SERVER_STATE_WRITING);
+
+  DWORD bytes_count = 0;
+  bool success = GetOverlappedResult(pipe_,
+                                     &overlapped_,
+                                     &bytes_count,
+                                     FALSE) != FALSE;
+  if (success) {
+    EnterStateImmediately(IPC_SERVER_STATE_WRITE_DONE);
+    return;
+  }
+
+  assert(!CheckForIOIncomplete(success));
+  EnterStateImmediately(IPC_SERVER_STATE_DISCONNECTING);
+}
+
+// When the server thread serving the clients is in the WRITE_DONE state,
+// try to issue an async read on the pipe. If the read completes synchronously
+// or if I/O is still pending then go into the READING_ACK state. For any
+// issues, go into the DISCONNECTING state.
+void CrashGenerationServer::HandleWriteDoneState() {
+  assert(server_state_ == IPC_SERVER_STATE_WRITE_DONE);
+
+  DWORD bytes_count = 0;
+  bool success = ReadFile(pipe_,
+                           &msg_,
+                           sizeof(msg_),
+                           &bytes_count,
+                           &overlapped_) != FALSE;
+  DWORD error_code = success ? ERROR_SUCCESS : GetLastError();
+
+  if (success) {
+    EnterStateImmediately(IPC_SERVER_STATE_READING_ACK);
+  } else if (error_code == ERROR_IO_PENDING) {
+    EnterStateWhenSignaled(IPC_SERVER_STATE_READING_ACK);
+  } else {
+    EnterStateImmediately(IPC_SERVER_STATE_DISCONNECTING);
+  }
+}
+
+// When the server thread serving the clients is in the READING_ACK state,
+// try to get result of async read. Go into the DISCONNECTING state.
+void CrashGenerationServer::HandleReadingAckState() {
+  assert(server_state_ == IPC_SERVER_STATE_READING_ACK);
+
+  DWORD bytes_count = 0;
+  bool success = GetOverlappedResult(pipe_,
+                                     &overlapped_,
+                                     &bytes_count,
+                                     FALSE) != FALSE;
+  if (success) {
+    // The connection handshake with the client is now complete; perform
+    // the callback.
+    if (connect_callback_) {
+      // Note that there is only a single copy of the ClientInfo of the
+      // currently connected client.  However it is being referenced from
+      // two different places:
+      //  - the client_info_ member
+      //  - the clients_ list
+      // The lifetime of this ClientInfo depends on the lifetime of the
+      // client process - basically it can go away at any time.
+      // However, as long as it is referenced by the clients_ list it
+      // is guaranteed to be valid. Enter the critical section and check
+      // to see whether the client_info_ can be found in the list.
+      // If found, execute the callback and only then leave the critical
+      // section.
+      AutoCriticalSection lock(&sync_);
+
+      bool client_is_still_alive = false;
+      std::list<ClientInfo*>::iterator iter;
+      for (iter = clients_.begin(); iter != clients_.end(); ++iter) {
+        if (client_info_ == *iter) {
+          client_is_still_alive = true;
+          break;
+        }
+      }
+
+      if (client_is_still_alive) {
+        connect_callback_(connect_context_, client_info_);
+      }
+    }
+  } else {
+    assert(!CheckForIOIncomplete(success));
+  }
+
+  EnterStateImmediately(IPC_SERVER_STATE_DISCONNECTING);
+}
+
+// When the server thread serving the client is in the DISCONNECTING state,
+// disconnect from the pipe and reset the event. If anything fails, go into
+// the ERROR state. If it goes well, go into the INITIAL state and set the
+// event to start all over again.
+void CrashGenerationServer::HandleDisconnectingState() {
+  assert(server_state_ == IPC_SERVER_STATE_DISCONNECTING);
+
+  // Done serving the client.
+  client_info_ = NULL;
+
+  overlapped_.Internal = NULL;
+  overlapped_.InternalHigh = NULL;
+  overlapped_.Offset = 0;
+  overlapped_.OffsetHigh = 0;
+  overlapped_.Pointer = NULL;
+
+  if (!ResetEvent(overlapped_.hEvent)) {
+    EnterErrorState();
+    return;
+  }
+
+  if (!DisconnectNamedPipe(pipe_)) {
+    EnterErrorState();
+    return;
+  }
+
+  // If the server is shutting down do not connect to the
+  // next client.
+  if (shutting_down_) {
+    return;
+  }
+
+  EnterStateImmediately(IPC_SERVER_STATE_INITIAL);
+}
+
+void CrashGenerationServer::EnterErrorState() {
+  SetEvent(overlapped_.hEvent);
+  server_state_ = IPC_SERVER_STATE_ERROR;
+}
+
+void CrashGenerationServer::EnterStateWhenSignaled(IPCServerState state) {
+  server_state_ = state;
+}
+
+void CrashGenerationServer::EnterStateImmediately(IPCServerState state) {
+  server_state_ = state;
+
+  if (!SetEvent(overlapped_.hEvent)) {
+    server_state_ = IPC_SERVER_STATE_ERROR;
+  }
+}
+
+bool CrashGenerationServer::PrepareReply(const ClientInfo& client_info,
+                                         ProtocolMessage* reply) const {
+  reply->tag = MESSAGE_TAG_REGISTRATION_RESPONSE;
+  reply->id = GetCurrentProcessId();
+
+  if (CreateClientHandles(client_info, reply)) {
+    return true;
+  }
+
+  // Closing of remote handles (belonging to a different process) can
+  // only be done through DuplicateHandle.
+  if (reply->dump_request_handle) {
+    DuplicateHandle(client_info.process_handle(),  // hSourceProcessHandle
+                    reply->dump_request_handle,    // hSourceHandle
+                    NULL,                          // hTargetProcessHandle
+                    0,                             // lpTargetHandle
+                    0,                             // dwDesiredAccess
+                    FALSE,                         // bInheritHandle
+                    DUPLICATE_CLOSE_SOURCE);       // dwOptions
+    reply->dump_request_handle = NULL;
+  }
+
+  if (reply->dump_generated_handle) {
+    DuplicateHandle(client_info.process_handle(),  // hSourceProcessHandle
+                    reply->dump_generated_handle,  // hSourceHandle
+                    NULL,                          // hTargetProcessHandle
+                    0,                             // lpTargetHandle
+                    0,                             // dwDesiredAccess
+                    FALSE,                         // bInheritHandle
+                    DUPLICATE_CLOSE_SOURCE);       // dwOptions
+    reply->dump_generated_handle = NULL;
+  }
+
+  if (reply->server_alive_handle) {
+    DuplicateHandle(client_info.process_handle(),  // hSourceProcessHandle
+                    reply->server_alive_handle,    // hSourceHandle
+                    NULL,                          // hTargetProcessHandle
+                    0,                             // lpTargetHandle
+                    0,                             // dwDesiredAccess
+                    FALSE,                         // bInheritHandle
+                    DUPLICATE_CLOSE_SOURCE);       // dwOptions
+    reply->server_alive_handle = NULL;
+  }
+
+  return false;
+}
+
+bool CrashGenerationServer::CreateClientHandles(const ClientInfo& client_info,
+                                                ProtocolMessage* reply) const {
+  HANDLE current_process = GetCurrentProcess();
+  if (!DuplicateHandle(current_process,
+                       client_info.dump_requested_handle(),
+                       client_info.process_handle(),
+                       &reply->dump_request_handle,
+                       kDumpRequestEventAccess,
+                       FALSE,
+                       0)) {
+    return false;
+  }
+
+  if (!DuplicateHandle(current_process,
+                       client_info.dump_generated_handle(),
+                       client_info.process_handle(),
+                       &reply->dump_generated_handle,
+                       kDumpGeneratedEventAccess,
+                       FALSE,
+                       0)) {
+    return false;
+  }
+
+  if (!DuplicateHandle(current_process,
+                       server_alive_handle_,
+                       client_info.process_handle(),
+                       &reply->server_alive_handle,
+                       kMutexAccess,
+                       FALSE,
+                       0)) {
+    return false;
+  }
+
+  return true;
+}
+
+bool CrashGenerationServer::RespondToClient(ClientInfo* client_info) {
+  ProtocolMessage reply;
+  if (!PrepareReply(*client_info, &reply)) {
+    return false;
+  }
+
+  DWORD bytes_count = 0;
+  bool success = WriteFile(pipe_,
+                            &reply,
+                            sizeof(reply),
+                            &bytes_count,
+                            &overlapped_) != FALSE;
+  DWORD error_code = success ? ERROR_SUCCESS : GetLastError();
+
+  if (!success && error_code != ERROR_IO_PENDING) {
+    return false;
+  }
+
+  // Takes over ownership of client_info. We MUST return true if AddClient
+  // succeeds.
+  return AddClient(client_info);
+}
+
+// The server thread servicing the clients runs this method. The method
+// implements the state machine described in ReadMe.txt along with the
+// helper methods HandleXXXState.
+void CrashGenerationServer::HandleConnectionRequest() {
+  // If the server is shutting down, get into ERROR state, reset the event so
+  // more workers don't run and return immediately.
+  if (shutting_down_) {
+    server_state_ = IPC_SERVER_STATE_ERROR;
+    ResetEvent(overlapped_.hEvent);
+    return;
+  }
+
+  switch (server_state_) {
+    case IPC_SERVER_STATE_ERROR:
+      HandleErrorState();
+      break;
+
+    case IPC_SERVER_STATE_INITIAL:
+      HandleInitialState();
+      break;
+
+    case IPC_SERVER_STATE_CONNECTING:
+      HandleConnectingState();
+      break;
+
+    case IPC_SERVER_STATE_CONNECTED:
+      HandleConnectedState();
+      break;
+
+    case IPC_SERVER_STATE_READING:
+      HandleReadingState();
+      break;
+
+    case IPC_SERVER_STATE_READ_DONE:
+      HandleReadDoneState();
+      break;
+
+    case IPC_SERVER_STATE_WRITING:
+      HandleWritingState();
+      break;
+
+    case IPC_SERVER_STATE_WRITE_DONE:
+      HandleWriteDoneState();
+      break;
+
+    case IPC_SERVER_STATE_READING_ACK:
+      HandleReadingAckState();
+      break;
+
+    case IPC_SERVER_STATE_DISCONNECTING:
+      HandleDisconnectingState();
+      break;
+
+    default:
+      assert(false);
+      // This indicates that we added one more state without
+      // adding handling code.
+      server_state_ = IPC_SERVER_STATE_ERROR;
+      break;
+  }
+}
+
+bool CrashGenerationServer::AddClient(ClientInfo* client_info) {
+  HANDLE request_wait_handle = NULL;
+  if (!RegisterWaitForSingleObject(&request_wait_handle,
+                                   client_info->dump_requested_handle(),
+                                   OnDumpRequest,
+                                   client_info,
+                                   INFINITE,
+                                   kDumpRequestThreadFlags)) {
+    return false;
+  }
+
+  client_info->set_dump_request_wait_handle(request_wait_handle);
+
+  // OnClientEnd will be called when the client process terminates.
+  HANDLE process_wait_handle = NULL;
+  if (!RegisterWaitForSingleObject(&process_wait_handle,
+                                   client_info->process_handle(),
+                                   OnClientEnd,
+                                   client_info,
+                                   INFINITE,
+                                   WT_EXECUTEONLYONCE)) {
+    return false;
+  }
+
+  client_info->set_process_exit_wait_handle(process_wait_handle);
+
+  // New scope to hold the lock for the shortest time.
+  {
+    AutoCriticalSection lock(&sync_);
+    if (shutting_down_) {
+      // If server is shutting down, don't add new clients
+      return false;
+    }
+    clients_.push_back(client_info);
+  }
+
+  return true;
+}
+
+// static
+void CALLBACK CrashGenerationServer::OnPipeConnected(void* context, BOOLEAN) {
+  assert(context);
+
+  CrashGenerationServer* obj =
+      reinterpret_cast<CrashGenerationServer*>(context);
+  obj->HandleConnectionRequest();
+}
+
+// static
+void CALLBACK CrashGenerationServer::OnDumpRequest(void* context, BOOLEAN) {
+  assert(context);
+  ClientInfo* client_info = reinterpret_cast<ClientInfo*>(context);
+
+  CrashGenerationServer* crash_server = client_info->crash_server();
+  assert(crash_server);
+  if (crash_server->pre_fetch_custom_info_) {
+    client_info->PopulateCustomInfo();
+  }
+  crash_server->HandleDumpRequest(*client_info);
+
+  ResetEvent(client_info->dump_requested_handle());
+}
+
+// static
+void CALLBACK CrashGenerationServer::OnClientEnd(void* context, BOOLEAN) {
+  assert(context);
+  ClientInfo* client_info = reinterpret_cast<ClientInfo*>(context);
+
+  CrashGenerationServer* crash_server = client_info->crash_server();
+  assert(crash_server);
+
+  crash_server->HandleClientProcessExit(client_info);
+}
+
+void CrashGenerationServer::HandleClientProcessExit(ClientInfo* client_info) {
+  assert(client_info);
+
+  // Must unregister the dump request wait operation and wait for any
+  // dump requests that might be pending to finish before proceeding
+  // with the client_info cleanup.
+  client_info->UnregisterDumpRequestWaitAndBlockUntilNoPending();
+
+  if (exit_callback_) {
+    exit_callback_(exit_context_, client_info);
+  }
+
+  // Start a new scope to release lock automatically.
+  {
+    AutoCriticalSection lock(&sync_);
+    if (shutting_down_) {
+      // The crash generation server is shutting down and as part of the
+      // shutdown process it will delete all clients from the clients_ list.
+      return;
+    }
+    clients_.remove(client_info);
+  }
+
+  // Explicitly unregister the process exit wait using the non-blocking method.
+  // Otherwise, the destructor will attempt to unregister it using the blocking
+  // method which will lead to a deadlock because it is being called from the
+  // callback of the same wait operation
+  client_info->UnregisterProcessExitWait(false);
+
+  delete client_info;
+}
+
+void CrashGenerationServer::HandleDumpRequest(const ClientInfo& client_info) {
+  bool execute_callback = true;
+  // Generate the dump only if it's explicitly requested by the
+  // server application; otherwise the server might want to generate
+  // dump in the callback.
+  std::wstring dump_path;
+  if (generate_dumps_) {
+    if (!GenerateDump(client_info, &dump_path)) {
+      // client proccess terminated or some other error
+      execute_callback = false;
+    }
+  }
+
+  if (dump_callback_ && execute_callback) {
+    std::wstring* ptr_dump_path = (dump_path == L"") ? NULL : &dump_path;
+    dump_callback_(dump_context_, &client_info, ptr_dump_path);
+  }
+
+  SetEvent(client_info.dump_generated_handle());
+}
+
+bool CrashGenerationServer::GenerateDump(const ClientInfo& client,
+                                         std::wstring* dump_path) {
+  assert(client.pid() != 0);
+  assert(client.process_handle());
+
+  // We have to get the address of EXCEPTION_INFORMATION from
+  // the client process address space.
+  EXCEPTION_POINTERS* client_ex_info = NULL;
+  if (!client.GetClientExceptionInfo(&client_ex_info)) {
+    return false;
+  }
+
+  DWORD client_thread_id = 0;
+  if (!client.GetClientThreadId(&client_thread_id)) {
+    return false;
+  }
+
+  MinidumpGenerator dump_generator(dump_path_,
+                                   client.process_handle(),
+                                   client.pid(),
+                                   client_thread_id,
+                                   GetCurrentThreadId(),
+                                   client_ex_info,
+                                   client.assert_info(),
+                                   client.dump_type(),
+                                   true);
+  if (!dump_generator.GenerateDumpFile(dump_path)) {
+    return false;
+  }
+  return dump_generator.WriteMinidump();
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/client/windows/crash_generation/crash_generation_server.h b/google-breakpad/src/client/windows/crash_generation/crash_generation_server.h
new file mode 100644
index 0000000..0ea90e5
--- /dev/null
+++ b/google-breakpad/src/client/windows/crash_generation/crash_generation_server.h
@@ -0,0 +1,299 @@
+// Copyright (c) 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef CLIENT_WINDOWS_CRASH_GENERATION_CRASH_GENERATION_SERVER_H__
+#define CLIENT_WINDOWS_CRASH_GENERATION_CRASH_GENERATION_SERVER_H__
+
+#include <list>
+#include <string>
+#include "client/windows/common/ipc_protocol.h"
+#include "client/windows/crash_generation/minidump_generator.h"
+#include "common/scoped_ptr.h"
+
+namespace google_breakpad {
+class ClientInfo;
+
+// Abstraction for server side implementation of out-of-process crash
+// generation protocol for Windows platform only. It generates Windows
+// minidump files for client processes that request dump generation. When
+// the server is requested to start listening for clients (by calling the
+// Start method), it creates a named pipe and waits for the clients to
+// register. In response, it hands them event handles that the client can
+// signal to request dump generation. When the clients request dump
+// generation in this way, the server generates Windows minidump files.
+class CrashGenerationServer {
+ public:
+  typedef void (*OnClientConnectedCallback)(void* context,
+                                            const ClientInfo* client_info);
+
+  typedef void (*OnClientDumpRequestCallback)(void* context,
+                                              const ClientInfo* client_info,
+                                              const std::wstring* file_path);
+
+  typedef void (*OnClientExitedCallback)(void* context,
+                                         const ClientInfo* client_info);
+
+  typedef void (*OnClientUploadRequestCallback)(void* context,
+                                                const DWORD crash_id);
+
+  // Creates an instance with the given parameters.
+  //
+  // Parameter pipe_name: Name of the Windows named pipe
+  // Parameter pipe_sec_attrs Security attributes to set on the pipe. Pass
+  //     NULL to use default security on the pipe. By default, the pipe created
+  //     allows Local System, Administrators and the Creator full control and
+  //     the Everyone group read access on the pipe.
+  // Parameter connect_callback: Callback for a new client connection.
+  // Parameter connect_context: Context for client connection callback.
+  // Parameter crash_callback: Callback for a client crash dump request.
+  // Parameter crash_context: Context for client crash dump request callback.
+  // Parameter exit_callback: Callback for client process exit.
+  // Parameter exit_context: Context for client exit callback.
+  // Parameter generate_dumps: Whether to automatically generate dumps.
+  // Client code of this class might want to generate dumps explicitly in the
+  // crash dump request callback. In that case, false can be passed for this
+  // parameter.
+  // Parameter dump_path: Path for generating dumps; required only if true is
+  // passed for generateDumps parameter; NULL can be passed otherwise.
+  CrashGenerationServer(const std::wstring& pipe_name,
+                        SECURITY_ATTRIBUTES* pipe_sec_attrs,
+                        OnClientConnectedCallback connect_callback,
+                        void* connect_context,
+                        OnClientDumpRequestCallback dump_callback,
+                        void* dump_context,
+                        OnClientExitedCallback exit_callback,
+                        void* exit_context,
+                        OnClientUploadRequestCallback upload_request_callback,
+                        void* upload_context,
+                        bool generate_dumps,
+                        const std::wstring* dump_path);
+
+  ~CrashGenerationServer();
+
+  // Performs initialization steps needed to start listening to clients. Upon
+  // successful return clients may connect to this server's pipe.
+  //
+  // Returns true if initialization is successful; false otherwise.
+  bool Start();
+
+  void pre_fetch_custom_info(bool do_pre_fetch) {
+    pre_fetch_custom_info_ = do_pre_fetch;
+  }
+
+ private:
+  // Various states the client can be in during the handshake with
+  // the server.
+  enum IPCServerState {
+    // Server starts in this state.
+    IPC_SERVER_STATE_UNINITIALIZED,
+
+    // Server is in error state and it cannot serve any clients.
+    IPC_SERVER_STATE_ERROR,
+
+    // Server starts in this state.
+    IPC_SERVER_STATE_INITIAL,
+
+    // Server has issued an async connect to the pipe and it is waiting
+    // for the connection to be established.
+    IPC_SERVER_STATE_CONNECTING,
+
+    // Server is connected successfully.
+    IPC_SERVER_STATE_CONNECTED,
+
+    // Server has issued an async read from the pipe and it is waiting for
+    // the read to finish.
+    IPC_SERVER_STATE_READING,
+
+    // Server is done reading from the pipe.
+    IPC_SERVER_STATE_READ_DONE,
+
+    // Server has issued an async write to the pipe and it is waiting for
+    // the write to finish.
+    IPC_SERVER_STATE_WRITING,
+
+    // Server is done writing to the pipe.
+    IPC_SERVER_STATE_WRITE_DONE,
+
+    // Server has issued an async read from the pipe for an ack and it
+    // is waiting for the read to finish.
+    IPC_SERVER_STATE_READING_ACK,
+
+    // Server is done writing to the pipe and it is now ready to disconnect
+    // and reconnect.
+    IPC_SERVER_STATE_DISCONNECTING
+  };
+
+  //
+  // Helper methods to handle various server IPC states.
+  //
+  void HandleErrorState();
+  void HandleInitialState();
+  void HandleConnectingState();
+  void HandleConnectedState();
+  void HandleReadingState();
+  void HandleReadDoneState();
+  void HandleWritingState();
+  void HandleWriteDoneState();
+  void HandleReadingAckState();
+  void HandleDisconnectingState();
+
+  // Prepares reply for a client from the given parameters.
+  bool PrepareReply(const ClientInfo& client_info,
+                    ProtocolMessage* reply) const;
+
+  // Duplicates various handles in the ClientInfo object for the client
+  // process and stores them in the given ProtocolMessage instance. If
+  // creating any handle fails, ProtocolMessage will contain the handles
+  // already created successfully, which should be closed by the caller.
+  bool CreateClientHandles(const ClientInfo& client_info,
+                           ProtocolMessage* reply) const;
+
+  // Response to the given client. Return true if all steps of
+  // responding to the client succeed, false otherwise.
+  bool RespondToClient(ClientInfo* client_info);
+
+  // Handles a connection request from the client.
+  void HandleConnectionRequest();
+
+  // Handles a dump request from the client.
+  void HandleDumpRequest(const ClientInfo& client_info);
+
+  // Callback for pipe connected event.
+  static void CALLBACK OnPipeConnected(void* context, BOOLEAN timer_or_wait);
+
+  // Callback for a dump request.
+  static void CALLBACK OnDumpRequest(void* context, BOOLEAN timer_or_wait);
+
+  // Callback for client process exit event.
+  static void CALLBACK OnClientEnd(void* context, BOOLEAN timer_or_wait);
+
+  // Handles client process exit.
+  void HandleClientProcessExit(ClientInfo* client_info);
+
+  // Adds the given client to the list of registered clients.
+  bool AddClient(ClientInfo* client_info);
+
+  // Generates dump for the given client.
+  bool GenerateDump(const ClientInfo& client, std::wstring* dump_path);
+
+  // Puts the server in a permanent error state and sets a signal such that
+  // the state will be immediately entered after the current state transition
+  // is complete.
+  void EnterErrorState();
+
+  // Puts the server in the specified state and sets a signal such that the
+  // state is immediately entered after the current state transition is
+  // complete.
+  void EnterStateImmediately(IPCServerState state);
+
+  // Puts the server in the specified state. No signal will be set, so the state
+  // transition will only occur when signaled manually or by completion of an
+  // asynchronous IO operation.
+  void EnterStateWhenSignaled(IPCServerState state);
+
+  // Sync object for thread-safe access to the shared list of clients.
+  CRITICAL_SECTION sync_;
+
+  // List of clients.
+  std::list<ClientInfo*> clients_;
+
+  // Pipe name.
+  std::wstring pipe_name_;
+
+  // Pipe security attributes
+  SECURITY_ATTRIBUTES* pipe_sec_attrs_;
+
+  // Handle to the pipe used for handshake with clients.
+  HANDLE pipe_;
+
+  // Pipe wait handle.
+  HANDLE pipe_wait_handle_;
+
+  // Handle to server-alive mutex.
+  HANDLE server_alive_handle_;
+
+  // Callback for a successful client connection.
+  OnClientConnectedCallback connect_callback_;
+
+  // Context for client connected callback.
+  void* connect_context_;
+
+  // Callback for a client dump request.
+  OnClientDumpRequestCallback dump_callback_;
+
+  // Context for client dump request callback.
+  void* dump_context_;
+
+  // Callback for client process exit.
+  OnClientExitedCallback exit_callback_;
+
+  // Context for client process exit callback.
+  void* exit_context_;
+
+  // Callback for upload request.
+  OnClientUploadRequestCallback upload_request_callback_;
+
+  // Context for upload request callback.
+  void* upload_context_;
+
+  // Whether to generate dumps.
+  bool generate_dumps_;
+
+  // Wether to populate custom information up-front.
+  bool pre_fetch_custom_info_;
+
+  // The dump path for the server.
+  const std::wstring dump_path_;
+
+  // State of the server in performing the IPC with the client.
+  // Note that since we restrict the pipe to one instance, we
+  // only need to keep one state of the server. Otherwise, server
+  // would have one state per client it is talking to.
+  IPCServerState server_state_;
+
+  // Whether the server is shutting down.
+  bool shutting_down_;
+
+  // Overlapped instance for async I/O on the pipe.
+  OVERLAPPED overlapped_;
+
+  // Message object used in IPC with the client.
+  ProtocolMessage msg_;
+
+  // Client Info for the client that's connecting to the server.
+  ClientInfo* client_info_;
+
+  // Disable copy ctor and operator=.
+  CrashGenerationServer(const CrashGenerationServer& crash_server);
+  CrashGenerationServer& operator=(const CrashGenerationServer& crash_server);
+};
+
+}  // namespace google_breakpad
+
+#endif  // CLIENT_WINDOWS_CRASH_GENERATION_CRASH_GENERATION_SERVER_H__
diff --git a/google-breakpad/src/client/windows/crash_generation/minidump_generator.cc b/google-breakpad/src/client/windows/crash_generation/minidump_generator.cc
new file mode 100644
index 0000000..c3e9168
--- /dev/null
+++ b/google-breakpad/src/client/windows/crash_generation/minidump_generator.cc
@@ -0,0 +1,579 @@
+// Copyright (c) 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include "client/windows/crash_generation/minidump_generator.h"
+
+#include <assert.h>
+#include <avrfsdk.h>
+
+#include <algorithm>
+#include <iterator>
+#include <list>
+#include <vector>
+
+#include "client/windows/common/auto_critical_section.h"
+#include "common/scoped_ptr.h"
+#include "common/windows/guid_string.h"
+
+using std::wstring;
+
+namespace {
+
+// A helper class used to collect handle operations data. Unlike
+// |MiniDumpWithHandleData| it records the operations for a single handle value
+// only, making it possible to include this information to a minidump.
+class HandleTraceData {
+ public:
+  HandleTraceData();
+  ~HandleTraceData();
+
+  // Collects the handle operations data and formats a user stream to be added
+  // to the minidump.
+  bool CollectHandleData(HANDLE process_handle,
+                         EXCEPTION_POINTERS* exception_pointers);
+
+  // Fills the user dump entry with a pointer to the collected handle operations
+  // data. Returns |true| if the entry was initialized successfully, or |false|
+  // if no trace data is available.
+  bool GetUserStream(MINIDUMP_USER_STREAM* user_stream);
+
+ private:
+  // Reads the exception code from the client process's address space.
+  // This routine assumes that the client process's pointer width matches ours.
+  static bool ReadExceptionCode(HANDLE process_handle,
+                                EXCEPTION_POINTERS* exception_pointers,
+                                DWORD* exception_code);
+
+  // Stores handle operations retrieved by VerifierEnumerateResource().
+  static ULONG CALLBACK RecordHandleOperations(void* resource_description,
+                                               void* enumeration_context,
+                                               ULONG* enumeration_level);
+
+  // Function pointer type for VerifierEnumerateResource, which is looked up
+  // dynamically.
+  typedef BOOL (WINAPI* VerifierEnumerateResourceType)(
+      HANDLE Process,
+      ULONG Flags,
+      ULONG ResourceType,
+      AVRF_RESOURCE_ENUMERATE_CALLBACK ResourceCallback,
+      PVOID EnumerationContext);
+
+  // Handle to dynamically loaded verifier.dll.
+  HMODULE verifier_module_;
+
+  // Pointer to the VerifierEnumerateResource function.
+  VerifierEnumerateResourceType enumerate_resource_;
+
+  // Handle value to look for.
+  ULONG64 handle_;
+
+  // List of handle operations for |handle_|.
+  std::list<AVRF_HANDLE_OPERATION> operations_;
+
+  // Minidump stream data.
+  std::vector<char> stream_;
+};
+
+HandleTraceData::HandleTraceData()
+    : verifier_module_(NULL),
+      enumerate_resource_(NULL),
+      handle_(NULL) {
+}
+
+HandleTraceData::~HandleTraceData() {
+  if (verifier_module_) {
+    FreeLibrary(verifier_module_);
+  }
+}
+
+bool HandleTraceData::CollectHandleData(
+    HANDLE process_handle,
+    EXCEPTION_POINTERS* exception_pointers) {
+  DWORD exception_code;
+  if (!ReadExceptionCode(process_handle, exception_pointers, &exception_code)) {
+    return false;
+  }
+
+  // Verify whether the execption is STATUS_INVALID_HANDLE. Do not record any
+  // handle information if it is a different exception to keep the minidump
+  // small.
+  if (exception_code != STATUS_INVALID_HANDLE) {
+    return true;
+  }
+
+  // Load verifier!VerifierEnumerateResource() dynamically.
+  verifier_module_ = LoadLibrary(TEXT("verifier.dll"));
+  if (!verifier_module_) {
+    return false;
+  }
+
+  enumerate_resource_ = reinterpret_cast<VerifierEnumerateResourceType>(
+      GetProcAddress(verifier_module_, "VerifierEnumerateResource"));
+  if (!enumerate_resource_) {
+    return false;
+  }
+
+  // STATUS_INVALID_HANDLE does not provide the offending handle value in
+  // the exception parameters so we have to guess. At the moment we scan
+  // the handle operations trace looking for the last invalid handle operation
+  // and record only the operations for that handle value.
+  if (enumerate_resource_(process_handle,
+                          0,
+                          AvrfResourceHandleTrace,
+                          &RecordHandleOperations,
+                          this) != ERROR_SUCCESS) {
+    // The handle tracing must have not been enabled.
+    return true;
+  }
+
+  // Now that |handle_| is initialized, purge all irrelevant operations.
+  std::list<AVRF_HANDLE_OPERATION>::iterator i = operations_.begin();
+  std::list<AVRF_HANDLE_OPERATION>::iterator i_end = operations_.end();
+  while (i != i_end) {
+    if (i->Handle == handle_) {
+      ++i;
+    } else {
+      i = operations_.erase(i);
+    }
+  }
+
+  // Convert the list of recorded operations to a minidump stream.
+  stream_.resize(sizeof(MINIDUMP_HANDLE_OPERATION_LIST) +
+      sizeof(AVRF_HANDLE_OPERATION) * operations_.size());
+
+  MINIDUMP_HANDLE_OPERATION_LIST* stream_data =
+      reinterpret_cast<MINIDUMP_HANDLE_OPERATION_LIST*>(
+          &stream_.front());
+  stream_data->SizeOfHeader = sizeof(MINIDUMP_HANDLE_OPERATION_LIST);
+  stream_data->SizeOfEntry = sizeof(AVRF_HANDLE_OPERATION);
+  stream_data->NumberOfEntries = static_cast<ULONG32>(operations_.size());
+  stream_data->Reserved = 0;
+  std::copy(operations_.begin(),
+            operations_.end(),
+#ifdef _MSC_VER
+            stdext::checked_array_iterator<AVRF_HANDLE_OPERATION*>(
+                reinterpret_cast<AVRF_HANDLE_OPERATION*>(stream_data + 1),
+                operations_.size())
+#else
+            reinterpret_cast<AVRF_HANDLE_OPERATION*>(stream_data + 1)
+#endif
+            );
+
+  return true;
+}
+
+bool HandleTraceData::GetUserStream(MINIDUMP_USER_STREAM* user_stream) {
+  if (stream_.empty()) {
+    return false;
+  } else {
+    user_stream->Type = HandleOperationListStream;
+    user_stream->BufferSize = static_cast<ULONG>(stream_.size());
+    user_stream->Buffer = &stream_.front();
+    return true;
+  }
+}
+
+bool HandleTraceData::ReadExceptionCode(
+    HANDLE process_handle,
+    EXCEPTION_POINTERS* exception_pointers,
+    DWORD* exception_code) {
+  EXCEPTION_POINTERS pointers;
+  if (!ReadProcessMemory(process_handle,
+                         exception_pointers,
+                         &pointers,
+                         sizeof(pointers),
+                         NULL)) {
+    return false;
+  }
+
+  if (!ReadProcessMemory(process_handle,
+                         pointers.ExceptionRecord,
+                         exception_code,
+                         sizeof(*exception_code),
+                         NULL)) {
+    return false;
+  }
+
+  return true;
+}
+
+ULONG CALLBACK HandleTraceData::RecordHandleOperations(
+    void* resource_description,
+    void* enumeration_context,
+    ULONG* enumeration_level) {
+  AVRF_HANDLE_OPERATION* description =
+      reinterpret_cast<AVRF_HANDLE_OPERATION*>(resource_description);
+  HandleTraceData* self =
+      reinterpret_cast<HandleTraceData*>(enumeration_context);
+
+  // Remember the last invalid handle operation.
+  if (description->OperationType == OperationDbBADREF) {
+    self->handle_ = description->Handle;
+  }
+
+  // Record all handle operations.
+  self->operations_.push_back(*description);
+
+  *enumeration_level = HeapEnumerationEverything;
+  return ERROR_SUCCESS;
+}
+
+}  // namespace
+
+namespace google_breakpad {
+
+MinidumpGenerator::MinidumpGenerator(
+    const std::wstring& dump_path,
+    const HANDLE process_handle,
+    const DWORD process_id,
+    const DWORD thread_id,
+    const DWORD requesting_thread_id,
+    EXCEPTION_POINTERS* exception_pointers,
+    MDRawAssertionInfo* assert_info,
+    const MINIDUMP_TYPE dump_type,
+    const bool is_client_pointers)
+    : dbghelp_module_(NULL),
+      rpcrt4_module_(NULL),
+      dump_path_(dump_path),
+      process_handle_(process_handle),
+      process_id_(process_id),
+      thread_id_(thread_id),
+      requesting_thread_id_(requesting_thread_id),
+      exception_pointers_(exception_pointers),
+      assert_info_(assert_info),
+      dump_type_(dump_type),
+      is_client_pointers_(is_client_pointers),
+      dump_file_(INVALID_HANDLE_VALUE),
+      full_dump_file_(INVALID_HANDLE_VALUE),
+      dump_file_is_internal_(false),
+      full_dump_file_is_internal_(false),
+      additional_streams_(NULL),
+      callback_info_(NULL),
+      write_dump_(NULL),
+      create_uuid_(NULL) {
+  InitializeCriticalSection(&module_load_sync_);
+  InitializeCriticalSection(&get_proc_address_sync_);
+}
+
+MinidumpGenerator::~MinidumpGenerator() {
+  if (dump_file_is_internal_ && dump_file_ != INVALID_HANDLE_VALUE) {
+    CloseHandle(dump_file_);
+  }
+
+  if (full_dump_file_is_internal_ && full_dump_file_ != INVALID_HANDLE_VALUE) {
+    CloseHandle(full_dump_file_);
+  }
+
+  if (dbghelp_module_) {
+    FreeLibrary(dbghelp_module_);
+  }
+
+  if (rpcrt4_module_) {
+    FreeLibrary(rpcrt4_module_);
+  }
+
+  DeleteCriticalSection(&get_proc_address_sync_);
+  DeleteCriticalSection(&module_load_sync_);
+}
+
+bool MinidumpGenerator::WriteMinidump() {
+  bool full_memory_dump = (dump_type_ & MiniDumpWithFullMemory) != 0;
+  if (dump_file_ == INVALID_HANDLE_VALUE ||
+      (full_memory_dump && full_dump_file_ == INVALID_HANDLE_VALUE)) {
+    return false;
+  }
+
+  MiniDumpWriteDumpType write_dump = GetWriteDump();
+  if (!write_dump) {
+    return false;
+  }
+
+  MINIDUMP_EXCEPTION_INFORMATION* dump_exception_pointers = NULL;
+  MINIDUMP_EXCEPTION_INFORMATION dump_exception_info;
+
+  // Setup the exception information object only if it's a dump
+  // due to an exception.
+  if (exception_pointers_) {
+    dump_exception_pointers = &dump_exception_info;
+    dump_exception_info.ThreadId = thread_id_;
+    dump_exception_info.ExceptionPointers = exception_pointers_;
+    dump_exception_info.ClientPointers = is_client_pointers_;
+  }
+
+  // Add an MDRawBreakpadInfo stream to the minidump, to provide additional
+  // information about the exception handler to the Breakpad processor.
+  // The information will help the processor determine which threads are
+  // relevant. The Breakpad processor does not require this information but
+  // can function better with Breakpad-generated dumps when it is present.
+  // The native debugger is not harmed by the presence of this information.
+  MDRawBreakpadInfo breakpad_info = {0};
+  if (!is_client_pointers_) {
+    // Set the dump thread id and requesting thread id only in case of
+    // in-process dump generation.
+    breakpad_info.validity = MD_BREAKPAD_INFO_VALID_DUMP_THREAD_ID |
+                             MD_BREAKPAD_INFO_VALID_REQUESTING_THREAD_ID;
+    breakpad_info.dump_thread_id = thread_id_;
+    breakpad_info.requesting_thread_id = requesting_thread_id_;
+  }
+
+  int additional_streams_count = additional_streams_ ?
+      additional_streams_->UserStreamCount : 0;
+  scoped_array<MINIDUMP_USER_STREAM> user_stream_array(
+      new MINIDUMP_USER_STREAM[3 + additional_streams_count]);
+  user_stream_array[0].Type = MD_BREAKPAD_INFO_STREAM;
+  user_stream_array[0].BufferSize = sizeof(breakpad_info);
+  user_stream_array[0].Buffer = &breakpad_info;
+
+  MINIDUMP_USER_STREAM_INFORMATION user_streams;
+  user_streams.UserStreamCount = 1;
+  user_streams.UserStreamArray = user_stream_array.get();
+
+  MDRawAssertionInfo* actual_assert_info = assert_info_;
+  MDRawAssertionInfo client_assert_info = {{0}};
+
+  if (assert_info_) {
+    // If the assertion info object lives in the client process,
+    // read the memory of the client process.
+    if (is_client_pointers_) {
+      SIZE_T bytes_read = 0;
+      if (!ReadProcessMemory(process_handle_,
+                             assert_info_,
+                             &client_assert_info,
+                             sizeof(client_assert_info),
+                             &bytes_read)) {
+        if (dump_file_is_internal_)
+          CloseHandle(dump_file_);
+        if (full_dump_file_is_internal_ &&
+            full_dump_file_ != INVALID_HANDLE_VALUE)
+          CloseHandle(full_dump_file_);
+        return false;
+      }
+
+      if (bytes_read != sizeof(client_assert_info)) {
+        if (dump_file_is_internal_)
+          CloseHandle(dump_file_);
+        if (full_dump_file_is_internal_ &&
+            full_dump_file_ != INVALID_HANDLE_VALUE)
+          CloseHandle(full_dump_file_);
+        return false;
+      }
+
+      actual_assert_info  = &client_assert_info;
+    }
+
+    user_stream_array[1].Type = MD_ASSERTION_INFO_STREAM;
+    user_stream_array[1].BufferSize = sizeof(MDRawAssertionInfo);
+    user_stream_array[1].Buffer = actual_assert_info;
+    ++user_streams.UserStreamCount;
+  }
+
+  if (additional_streams_) {
+    for (size_t i = 0;
+         i < additional_streams_->UserStreamCount;
+         i++, user_streams.UserStreamCount++) {
+      user_stream_array[user_streams.UserStreamCount].Type =
+          additional_streams_->UserStreamArray[i].Type;
+      user_stream_array[user_streams.UserStreamCount].BufferSize =
+          additional_streams_->UserStreamArray[i].BufferSize;
+      user_stream_array[user_streams.UserStreamCount].Buffer =
+          additional_streams_->UserStreamArray[i].Buffer;
+    }
+  }
+
+  // If the process is terminated by STATUS_INVALID_HANDLE exception store
+  // the trace of operations for the offending handle value. Do nothing special
+  // if the client already requested the handle trace to be stored in the dump.
+  HandleTraceData handle_trace_data;
+  if (exception_pointers_ && (dump_type_ & MiniDumpWithHandleData) == 0) {
+    if (!handle_trace_data.CollectHandleData(process_handle_,
+                                             exception_pointers_)) {
+      if (dump_file_is_internal_)
+        CloseHandle(dump_file_);
+      if (full_dump_file_is_internal_ &&
+          full_dump_file_ != INVALID_HANDLE_VALUE)
+        CloseHandle(full_dump_file_);
+      return false;
+    }
+  }
+
+  bool result_full_memory = true;
+  if (full_memory_dump) {
+    result_full_memory = write_dump(
+        process_handle_,
+        process_id_,
+        full_dump_file_,
+        static_cast<MINIDUMP_TYPE>((dump_type_ & (~MiniDumpNormal))
+                                    | MiniDumpWithHandleData),
+        exception_pointers_ ? &dump_exception_info : NULL,
+        &user_streams,
+        NULL) != FALSE;
+  }
+
+  // Add handle operations trace stream to the minidump if it was collected.
+  if (handle_trace_data.GetUserStream(
+          &user_stream_array[user_streams.UserStreamCount])) {
+    ++user_streams.UserStreamCount;
+  }
+
+  bool result_minidump = write_dump(
+      process_handle_,
+      process_id_,
+      dump_file_,
+      static_cast<MINIDUMP_TYPE>((dump_type_ & (~MiniDumpWithFullMemory))
+                                  | MiniDumpNormal),
+      exception_pointers_ ? &dump_exception_info : NULL,
+      &user_streams,
+      callback_info_) != FALSE;
+
+  return result_minidump && result_full_memory;
+}
+
+bool MinidumpGenerator::GenerateDumpFile(wstring* dump_path) {
+  // The dump file was already set by handle or this function was previously
+  // called.
+  if (dump_file_ != INVALID_HANDLE_VALUE) {
+    return false;
+  }
+
+  wstring dump_file_path;
+  if (!GenerateDumpFilePath(&dump_file_path)) {
+    return false;
+  }
+
+  dump_file_ = CreateFile(dump_file_path.c_str(),
+                          GENERIC_WRITE,
+                          0,
+                          NULL,
+                          CREATE_NEW,
+                          FILE_ATTRIBUTE_NORMAL,
+                          NULL);
+  if (dump_file_ == INVALID_HANDLE_VALUE) {
+    return false;
+  }
+
+  dump_file_is_internal_ = true;
+  *dump_path = dump_file_path;
+  return true;
+}
+
+bool MinidumpGenerator::GenerateFullDumpFile(wstring* full_dump_path) {
+  // A full minidump was not requested.
+  if ((dump_type_ & MiniDumpWithFullMemory) == 0) {
+    return false;
+  }
+
+  // The dump file was already set by handle or this function was previously
+  // called.
+  if (full_dump_file_ != INVALID_HANDLE_VALUE) {
+    return false;
+  }
+
+  wstring full_dump_file_path;
+  if (!GenerateDumpFilePath(&full_dump_file_path)) {
+    return false;
+  }
+  full_dump_file_path.resize(full_dump_file_path.size() - 4);  // strip .dmp
+  full_dump_file_path.append(TEXT("-full.dmp"));
+
+  full_dump_file_ = CreateFile(full_dump_file_path.c_str(),
+                               GENERIC_WRITE,
+                               0,
+                               NULL,
+                               CREATE_NEW,
+                               FILE_ATTRIBUTE_NORMAL,
+                               NULL);
+  if (full_dump_file_ == INVALID_HANDLE_VALUE) {
+    return false;
+  }
+
+  full_dump_file_is_internal_ = true;
+  *full_dump_path = full_dump_file_path;
+  return true;
+}
+
+HMODULE MinidumpGenerator::GetDbghelpModule() {
+  AutoCriticalSection lock(&module_load_sync_);
+  if (!dbghelp_module_) {
+    dbghelp_module_ = LoadLibrary(TEXT("dbghelp.dll"));
+  }
+
+  return dbghelp_module_;
+}
+
+MinidumpGenerator::MiniDumpWriteDumpType MinidumpGenerator::GetWriteDump() {
+  AutoCriticalSection lock(&get_proc_address_sync_);
+  if (!write_dump_) {
+    HMODULE module = GetDbghelpModule();
+    if (module) {
+      FARPROC proc = GetProcAddress(module, "MiniDumpWriteDump");
+      write_dump_ = reinterpret_cast<MiniDumpWriteDumpType>(proc);
+    }
+  }
+
+  return write_dump_;
+}
+
+HMODULE MinidumpGenerator::GetRpcrt4Module() {
+  AutoCriticalSection lock(&module_load_sync_);
+  if (!rpcrt4_module_) {
+    rpcrt4_module_ = LoadLibrary(TEXT("rpcrt4.dll"));
+  }
+
+  return rpcrt4_module_;
+}
+
+MinidumpGenerator::UuidCreateType MinidumpGenerator::GetCreateUuid() {
+  AutoCriticalSection lock(&module_load_sync_);
+  if (!create_uuid_) {
+    HMODULE module = GetRpcrt4Module();
+    if (module) {
+      FARPROC proc = GetProcAddress(module, "UuidCreate");
+      create_uuid_ = reinterpret_cast<UuidCreateType>(proc);
+    }
+  }
+
+  return create_uuid_;
+}
+
+bool MinidumpGenerator::GenerateDumpFilePath(wstring* file_path) {
+  UUID id = {0};
+
+  UuidCreateType create_uuid = GetCreateUuid();
+  if (!create_uuid) {
+    return false;
+  }
+
+  create_uuid(&id);
+  wstring id_str = GUIDString::GUIDToWString(&id);
+
+  *file_path = dump_path_ + TEXT("\\") + id_str + TEXT(".dmp");
+  return true;
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/client/windows/crash_generation/minidump_generator.h b/google-breakpad/src/client/windows/crash_generation/minidump_generator.h
new file mode 100644
index 0000000..a3c1230
--- /dev/null
+++ b/google-breakpad/src/client/windows/crash_generation/minidump_generator.h
@@ -0,0 +1,199 @@
+// Copyright (c) 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef CLIENT_WINDOWS_CRASH_GENERATION_MINIDUMP_GENERATOR_H_
+#define CLIENT_WINDOWS_CRASH_GENERATION_MINIDUMP_GENERATOR_H_
+
+#include <windows.h>
+#include <dbghelp.h>
+#include <rpc.h>
+#include <list>
+#include <string>
+#include "google_breakpad/common/minidump_format.h"
+
+namespace google_breakpad {
+
+// Abstraction for various objects and operations needed to generate
+// minidump on Windows. This abstraction is useful to hide all the gory
+// details for minidump generation and provide a clean interface to
+// the clients to generate minidumps.
+class MinidumpGenerator {
+ public:
+  // Creates an instance with the given parameters.
+  // is_client_pointers specifies whether the exception_pointers and
+  // assert_info point into the process that is being dumped.
+  // Before calling WriteMinidump on the returned instance a dump file muct be
+  // specified by a call to either SetDumpFile() or GenerateDumpFile().
+  // If a full dump file will be requested via a subsequent call to either
+  // SetFullDumpFile or GenerateFullDumpFile() dump_type must include
+  // MiniDumpWithFullMemory.
+  MinidumpGenerator(const std::wstring& dump_path,
+                    const HANDLE process_handle,
+                    const DWORD process_id,
+                    const DWORD thread_id,
+                    const DWORD requesting_thread_id,
+                    EXCEPTION_POINTERS* exception_pointers,
+                    MDRawAssertionInfo* assert_info,
+                    const MINIDUMP_TYPE dump_type,
+                    const bool is_client_pointers);
+
+  ~MinidumpGenerator();
+
+  void SetDumpFile(const HANDLE dump_file) { dump_file_ = dump_file; }
+  void SetFullDumpFile(const HANDLE full_dump_file) {
+    full_dump_file_ = full_dump_file;
+  }
+
+  // Generate the name for the dump file that will be written to once
+  // WriteMinidump() is called. Can only be called once and cannot be called
+  // if the dump file is set via SetDumpFile().
+  bool GenerateDumpFile(std::wstring* dump_path);
+
+  // Generate the name for the full dump file that will be written to once
+  // WriteMinidump() is called. Cannot be called unless the minidump type
+  // includes MiniDumpWithFullMemory. Can only be called once and cannot be
+  // called if the dump file is set via SetFullDumpFile().
+  bool GenerateFullDumpFile(std::wstring* full_dump_path);
+
+  void SetAdditionalStreams(
+      MINIDUMP_USER_STREAM_INFORMATION* additional_streams) {
+    additional_streams_ = additional_streams;
+  }
+
+  void SetCallback(MINIDUMP_CALLBACK_INFORMATION* callback_info) {
+    callback_info_ = callback_info;
+  }
+
+  // Writes the minidump with the given parameters. Stores the
+  // dump file path in the dump_path parameter if dump generation
+  // succeeds.
+  bool WriteMinidump();
+
+ private:
+  // Function pointer type for MiniDumpWriteDump, which is looked up
+  // dynamically.
+  typedef BOOL (WINAPI* MiniDumpWriteDumpType)(
+      HANDLE hProcess,
+      DWORD ProcessId,
+      HANDLE hFile,
+      MINIDUMP_TYPE DumpType,
+      CONST PMINIDUMP_EXCEPTION_INFORMATION ExceptionParam,
+      CONST PMINIDUMP_USER_STREAM_INFORMATION UserStreamParam,
+      CONST PMINIDUMP_CALLBACK_INFORMATION CallbackParam);
+
+  // Function pointer type for UuidCreate, which is looked up dynamically.
+  typedef RPC_STATUS (RPC_ENTRY* UuidCreateType)(UUID* Uuid);
+
+  // Loads the appropriate DLL lazily in a thread safe way.
+  HMODULE GetDbghelpModule();
+
+  // Loads the appropriate DLL and gets a pointer to the MiniDumpWriteDump
+  // function lazily and in a thread-safe manner.
+  MiniDumpWriteDumpType GetWriteDump();
+
+  // Loads the appropriate DLL lazily in a thread safe way.
+  HMODULE GetRpcrt4Module();
+
+  // Loads the appropriate DLL and gets a pointer to the UuidCreate
+  // function lazily and in a thread-safe manner.
+  UuidCreateType GetCreateUuid();
+
+  // Returns the path for the file to write dump to.
+  bool GenerateDumpFilePath(std::wstring* file_path);
+
+  // Handle to dynamically loaded DbgHelp.dll.
+  HMODULE dbghelp_module_;
+
+  // Pointer to the MiniDumpWriteDump function.
+  MiniDumpWriteDumpType write_dump_;
+
+  // Handle to dynamically loaded rpcrt4.dll.
+  HMODULE rpcrt4_module_;
+
+  // Pointer to the UuidCreate function.
+  UuidCreateType create_uuid_;
+
+  // Handle for the process to dump.
+  HANDLE process_handle_;
+
+  // Process ID for the process to dump.
+  DWORD process_id_;
+
+  // The crashing thread ID.
+  DWORD thread_id_;
+
+  // The thread ID which is requesting the dump.
+  DWORD requesting_thread_id_;
+
+  // Pointer to the exception information for the crash. This may point to an
+  // address in the crashing process so it should not be dereferenced.
+  EXCEPTION_POINTERS* exception_pointers_;
+
+  // Assertion info for the report.
+  MDRawAssertionInfo* assert_info_;
+
+  // Type of minidump to generate.
+  MINIDUMP_TYPE dump_type_;
+
+  // Specifies whether the exception_pointers_ reference memory in the crashing
+  // process.
+  bool is_client_pointers_;
+
+  // Folder path to store dump files.
+  std::wstring dump_path_;
+
+  // The file where the dump will be written.
+  HANDLE dump_file_;
+
+  // The file where the full dump will be written.
+  HANDLE full_dump_file_;
+
+  // Tracks whether the dump file handle is managed externally.
+  bool dump_file_is_internal_;
+
+  // Tracks whether the full dump file handle is managed externally.
+  bool full_dump_file_is_internal_;
+
+  // Additional streams to be written to the dump.
+  MINIDUMP_USER_STREAM_INFORMATION* additional_streams_;
+
+  // The user defined callback for the various stages of the dump process.
+  MINIDUMP_CALLBACK_INFORMATION* callback_info_;
+
+  // Critical section to sychronize action of loading modules dynamically.
+  CRITICAL_SECTION module_load_sync_;
+
+  // Critical section to synchronize action of dynamically getting function
+  // addresses from modules.
+  CRITICAL_SECTION get_proc_address_sync_;
+};
+
+}  // namespace google_breakpad
+
+#endif  // CLIENT_WINDOWS_CRASH_GENERATION_MINIDUMP_GENERATOR_H_
diff --git a/google-breakpad/src/client/windows/handler/exception_handler.cc b/google-breakpad/src/client/windows/handler/exception_handler.cc
new file mode 100644
index 0000000..b78075d
--- /dev/null
+++ b/google-breakpad/src/client/windows/handler/exception_handler.cc
@@ -0,0 +1,1073 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include <objbase.h>
+
+#include <algorithm>
+#include <cassert>
+#include <cstdio>
+
+#include "common/windows/string_utils-inl.h"
+
+#include "client/windows/common/ipc_protocol.h"
+#include "client/windows/handler/exception_handler.h"
+#include "common/windows/guid_string.h"
+
+namespace google_breakpad {
+
+static const int kWaitForHandlerThreadMs = 60000;
+static const int kExceptionHandlerThreadInitialStackSize = 64 * 1024;
+
+// As documented on MSDN, on failure SuspendThread returns (DWORD) -1
+static const DWORD kFailedToSuspendThread = static_cast<DWORD>(-1);
+
+// This is passed as the context to the MinidumpWriteDump callback.
+typedef struct {
+  AppMemoryList::const_iterator iter;
+  AppMemoryList::const_iterator end;
+} MinidumpCallbackContext;
+
+vector<ExceptionHandler*>* ExceptionHandler::handler_stack_ = NULL;
+LONG ExceptionHandler::handler_stack_index_ = 0;
+CRITICAL_SECTION ExceptionHandler::handler_stack_critical_section_;
+volatile LONG ExceptionHandler::instance_count_ = 0;
+
+ExceptionHandler::ExceptionHandler(const wstring& dump_path,
+                                   FilterCallback filter,
+                                   MinidumpCallback callback,
+                                   void* callback_context,
+                                   int handler_types,
+                                   MINIDUMP_TYPE dump_type,
+                                   const wchar_t* pipe_name,
+                                   const CustomClientInfo* custom_info) {
+  Initialize(dump_path,
+             filter,
+             callback,
+             callback_context,
+             handler_types,
+             dump_type,
+             pipe_name,
+             NULL,  // pipe_handle
+             NULL,  // crash_generation_client
+             custom_info);
+}
+
+ExceptionHandler::ExceptionHandler(const wstring& dump_path,
+                                   FilterCallback filter,
+                                   MinidumpCallback callback,
+                                   void* callback_context,
+                                   int handler_types,
+                                   MINIDUMP_TYPE dump_type,
+                                   HANDLE pipe_handle,
+                                   const CustomClientInfo* custom_info) {
+  Initialize(dump_path,
+             filter,
+             callback,
+             callback_context,
+             handler_types,
+             dump_type,
+             NULL,  // pipe_name
+             pipe_handle,
+             NULL,  // crash_generation_client
+             custom_info);
+}
+
+ExceptionHandler::ExceptionHandler(
+    const wstring& dump_path,
+    FilterCallback filter,
+    MinidumpCallback callback,
+    void* callback_context,
+    int handler_types,
+    CrashGenerationClient* crash_generation_client) {
+  // The dump_type, pipe_name and custom_info that are passed in to Initialize()
+  // are not used.  The ones set in crash_generation_client are used instead.
+  Initialize(dump_path,
+             filter,
+             callback,
+             callback_context,
+             handler_types,
+             MiniDumpNormal,           // dump_type - not used
+             NULL,                     // pipe_name - not used
+             NULL,                     // pipe_handle
+             crash_generation_client,
+             NULL);                    // custom_info - not used
+}
+
+ExceptionHandler::ExceptionHandler(const wstring &dump_path,
+                                   FilterCallback filter,
+                                   MinidumpCallback callback,
+                                   void* callback_context,
+                                   int handler_types) {
+  Initialize(dump_path,
+             filter,
+             callback,
+             callback_context,
+             handler_types,
+             MiniDumpNormal,
+             NULL,   // pipe_name
+             NULL,   // pipe_handle
+             NULL,   // crash_generation_client
+             NULL);  // custom_info
+}
+
+void ExceptionHandler::Initialize(
+    const wstring& dump_path,
+    FilterCallback filter,
+    MinidumpCallback callback,
+    void* callback_context,
+    int handler_types,
+    MINIDUMP_TYPE dump_type,
+    const wchar_t* pipe_name,
+    HANDLE pipe_handle,
+    CrashGenerationClient* crash_generation_client,
+    const CustomClientInfo* custom_info) {
+  LONG instance_count = InterlockedIncrement(&instance_count_);
+  filter_ = filter;
+  callback_ = callback;
+  callback_context_ = callback_context;
+  dump_path_c_ = NULL;
+  next_minidump_id_c_ = NULL;
+  next_minidump_path_c_ = NULL;
+  dbghelp_module_ = NULL;
+  minidump_write_dump_ = NULL;
+  dump_type_ = dump_type;
+  rpcrt4_module_ = NULL;
+  uuid_create_ = NULL;
+  handler_types_ = handler_types;
+  previous_filter_ = NULL;
+#if _MSC_VER >= 1400  // MSVC 2005/8
+  previous_iph_ = NULL;
+#endif  // _MSC_VER >= 1400
+  previous_pch_ = NULL;
+  handler_thread_ = NULL;
+  is_shutdown_ = false;
+  handler_start_semaphore_ = NULL;
+  handler_finish_semaphore_ = NULL;
+  requesting_thread_id_ = 0;
+  exception_info_ = NULL;
+  assertion_ = NULL;
+  handler_return_value_ = false;
+  handle_debug_exceptions_ = false;
+  consume_invalid_handle_exceptions_ = false;
+
+  // Attempt to use out-of-process if user has specified a pipe or a
+  // crash generation client.
+  scoped_ptr<CrashGenerationClient> client;
+  if (crash_generation_client) {
+    client.reset(crash_generation_client);
+  } else if (pipe_name) {
+    client.reset(
+      new CrashGenerationClient(pipe_name, dump_type_, custom_info));
+  } else if (pipe_handle) {
+    client.reset(
+      new CrashGenerationClient(pipe_handle, dump_type_, custom_info));
+  }
+
+  if (client.get() != NULL) {
+    // If successful in registering with the monitoring process,
+    // there is no need to setup in-process crash generation.
+    if (client->Register()) {
+      crash_generation_client_.reset(client.release());
+    }
+  }
+
+  if (!IsOutOfProcess()) {
+    // Either client did not ask for out-of-process crash generation
+    // or registration with the server process failed. In either case,
+    // setup to do in-process crash generation.
+
+    // Set synchronization primitives and the handler thread.  Each
+    // ExceptionHandler object gets its own handler thread because that's the
+    // only way to reliably guarantee sufficient stack space in an exception,
+    // and it allows an easy way to get a snapshot of the requesting thread's
+    // context outside of an exception.
+    InitializeCriticalSection(&handler_critical_section_);
+    handler_start_semaphore_ = CreateSemaphore(NULL, 0, 1, NULL);
+    assert(handler_start_semaphore_ != NULL);
+
+    handler_finish_semaphore_ = CreateSemaphore(NULL, 0, 1, NULL);
+    assert(handler_finish_semaphore_ != NULL);
+
+    // Don't attempt to create the thread if we could not create the semaphores.
+    if (handler_finish_semaphore_ != NULL && handler_start_semaphore_ != NULL) {
+      DWORD thread_id;
+      handler_thread_ = CreateThread(NULL,         // lpThreadAttributes
+                                     kExceptionHandlerThreadInitialStackSize,
+                                     ExceptionHandlerThreadMain,
+                                     this,         // lpParameter
+                                     0,            // dwCreationFlags
+                                     &thread_id);
+      assert(handler_thread_ != NULL);
+    }
+
+    dbghelp_module_ = LoadLibrary(L"dbghelp.dll");
+    if (dbghelp_module_) {
+      minidump_write_dump_ = reinterpret_cast<MiniDumpWriteDump_type>(
+          GetProcAddress(dbghelp_module_, "MiniDumpWriteDump"));
+    }
+
+    // Load this library dynamically to not affect existing projects.  Most
+    // projects don't link against this directly, it's usually dynamically
+    // loaded by dependent code.
+    rpcrt4_module_ = LoadLibrary(L"rpcrt4.dll");
+    if (rpcrt4_module_) {
+      uuid_create_ = reinterpret_cast<UuidCreate_type>(
+          GetProcAddress(rpcrt4_module_, "UuidCreate"));
+    }
+
+    // set_dump_path calls UpdateNextID.  This sets up all of the path and id
+    // strings, and their equivalent c_str pointers.
+    set_dump_path(dump_path);
+  }
+
+  // Reserve one element for the instruction memory
+  AppMemory instruction_memory;
+  instruction_memory.ptr = NULL;
+  instruction_memory.length = 0;
+  app_memory_info_.push_back(instruction_memory);
+
+  // There is a race condition here. If the first instance has not yet
+  // initialized the critical section, the second (and later) instances may
+  // try to use uninitialized critical section object. The feature of multiple
+  // instances in one module is not used much, so leave it as is for now.
+  // One way to solve this in the current design (that is, keeping the static
+  // handler stack) is to use spin locks with volatile bools to synchronize
+  // the handler stack. This works only if the compiler guarantees to generate
+  // cache coherent code for volatile.
+  // TODO(munjal): Fix this in a better way by changing the design if possible.
+
+  // Lazy initialization of the handler_stack_critical_section_
+  if (instance_count == 1) {
+    InitializeCriticalSection(&handler_stack_critical_section_);
+  }
+
+  if (handler_types != HANDLER_NONE) {
+    EnterCriticalSection(&handler_stack_critical_section_);
+
+    // The first time an ExceptionHandler that installs a handler is
+    // created, set up the handler stack.
+    if (!handler_stack_) {
+      handler_stack_ = new vector<ExceptionHandler*>();
+    }
+    handler_stack_->push_back(this);
+
+    if (handler_types & HANDLER_EXCEPTION)
+      previous_filter_ = SetUnhandledExceptionFilter(HandleException);
+
+#if _MSC_VER >= 1400  // MSVC 2005/8
+    if (handler_types & HANDLER_INVALID_PARAMETER)
+      previous_iph_ = _set_invalid_parameter_handler(HandleInvalidParameter);
+#endif  // _MSC_VER >= 1400
+
+    if (handler_types & HANDLER_PURECALL)
+      previous_pch_ = _set_purecall_handler(HandlePureVirtualCall);
+
+    LeaveCriticalSection(&handler_stack_critical_section_);
+  }
+}
+
+ExceptionHandler::~ExceptionHandler() {
+  if (dbghelp_module_) {
+    FreeLibrary(dbghelp_module_);
+  }
+
+  if (rpcrt4_module_) {
+    FreeLibrary(rpcrt4_module_);
+  }
+
+  if (handler_types_ != HANDLER_NONE) {
+    EnterCriticalSection(&handler_stack_critical_section_);
+
+    if (handler_types_ & HANDLER_EXCEPTION)
+      SetUnhandledExceptionFilter(previous_filter_);
+
+#if _MSC_VER >= 1400  // MSVC 2005/8
+    if (handler_types_ & HANDLER_INVALID_PARAMETER)
+      _set_invalid_parameter_handler(previous_iph_);
+#endif  // _MSC_VER >= 1400
+
+    if (handler_types_ & HANDLER_PURECALL)
+      _set_purecall_handler(previous_pch_);
+
+    if (handler_stack_->back() == this) {
+      handler_stack_->pop_back();
+    } else {
+      // TODO(mmentovai): use advapi32!ReportEvent to log the warning to the
+      // system's application event log.
+      fprintf(stderr, "warning: removing Breakpad handler out of order\n");
+      vector<ExceptionHandler*>::iterator iterator = handler_stack_->begin();
+      while (iterator != handler_stack_->end()) {
+        if (*iterator == this) {
+          iterator = handler_stack_->erase(iterator);
+        } else {
+          ++iterator;
+        }
+      }
+    }
+
+    if (handler_stack_->empty()) {
+      // When destroying the last ExceptionHandler that installed a handler,
+      // clean up the handler stack.
+      delete handler_stack_;
+      handler_stack_ = NULL;
+    }
+
+    LeaveCriticalSection(&handler_stack_critical_section_);
+  }
+
+  // Some of the objects were only initialized if out of process
+  // registration was not done.
+  if (!IsOutOfProcess()) {
+#ifdef BREAKPAD_NO_TERMINATE_THREAD
+    // Clean up the handler thread and synchronization primitives. The handler
+    // thread is either waiting on the semaphore to handle a crash or it is
+    // handling a crash. Coming out of the wait is fast but wait more in the
+    // eventuality a crash is handled.  This compilation option results in a
+    // deadlock if the exception handler is destroyed while executing code
+    // inside DllMain.
+    is_shutdown_ = true;
+    ReleaseSemaphore(handler_start_semaphore_, 1, NULL);
+    WaitForSingleObject(handler_thread_, kWaitForHandlerThreadMs);
+#else
+    TerminateThread(handler_thread_, 1);
+#endif  // BREAKPAD_NO_TERMINATE_THREAD
+
+    CloseHandle(handler_thread_);
+    handler_thread_ = NULL;
+    DeleteCriticalSection(&handler_critical_section_);
+    CloseHandle(handler_start_semaphore_);
+    CloseHandle(handler_finish_semaphore_);
+  }
+
+  // There is a race condition in the code below: if this instance is
+  // deleting the static critical section and a new instance of the class
+  // is created, then there is a possibility that the critical section be
+  // initialized while the same critical section is being deleted. Given the
+  // usage pattern for the code, this race condition is unlikely to hit, but it
+  // is a race condition nonetheless.
+  if (InterlockedDecrement(&instance_count_) == 0) {
+    DeleteCriticalSection(&handler_stack_critical_section_);
+  }
+}
+
+bool ExceptionHandler::RequestUpload(DWORD crash_id) {
+  return crash_generation_client_->RequestUpload(crash_id);
+}
+
+// static
+DWORD ExceptionHandler::ExceptionHandlerThreadMain(void* lpParameter) {
+  ExceptionHandler* self = reinterpret_cast<ExceptionHandler *>(lpParameter);
+  assert(self);
+  assert(self->handler_start_semaphore_ != NULL);
+  assert(self->handler_finish_semaphore_ != NULL);
+
+  while (true) {
+    if (WaitForSingleObject(self->handler_start_semaphore_, INFINITE) ==
+        WAIT_OBJECT_0) {
+      // Perform the requested action.
+      if (self->is_shutdown_) {
+        // The instance of the exception handler is being destroyed.
+        break;
+      } else {
+        self->handler_return_value_ =
+            self->WriteMinidumpWithException(self->requesting_thread_id_,
+                                             self->exception_info_,
+                                             self->assertion_);
+      }
+
+      // Allow the requesting thread to proceed.
+      ReleaseSemaphore(self->handler_finish_semaphore_, 1, NULL);
+    }
+  }
+
+  // This statement is not reached when the thread is unconditionally
+  // terminated by the ExceptionHandler destructor.
+  return 0;
+}
+
+// HandleException and HandleInvalidParameter must create an
+// AutoExceptionHandler object to maintain static state and to determine which
+// ExceptionHandler instance to use.  The constructor locates the correct
+// instance, and makes it available through get_handler().  The destructor
+// restores the state in effect prior to allocating the AutoExceptionHandler.
+class AutoExceptionHandler {
+ public:
+  AutoExceptionHandler() {
+    // Increment handler_stack_index_ so that if another Breakpad handler is
+    // registered using this same HandleException function, and it needs to be
+    // called while this handler is running (either because this handler
+    // declines to handle the exception, or an exception occurs during
+    // handling), HandleException will find the appropriate ExceptionHandler
+    // object in handler_stack_ to deliver the exception to.
+    //
+    // Because handler_stack_ is addressed in reverse (as |size - index|),
+    // preincrementing handler_stack_index_ avoids needing to subtract 1 from
+    // the argument to |at|.
+    //
+    // The index is maintained instead of popping elements off of the handler
+    // stack and pushing them at the end of this method.  This avoids ruining
+    // the order of elements in the stack in the event that some other thread
+    // decides to manipulate the handler stack (such as creating a new
+    // ExceptionHandler object) while an exception is being handled.
+    EnterCriticalSection(&ExceptionHandler::handler_stack_critical_section_);
+    handler_ = ExceptionHandler::handler_stack_->at(
+        ExceptionHandler::handler_stack_->size() -
+        ++ExceptionHandler::handler_stack_index_);
+
+    // In case another exception occurs while this handler is doing its thing,
+    // it should be delivered to the previous filter.
+    SetUnhandledExceptionFilter(handler_->previous_filter_);
+#if _MSC_VER >= 1400  // MSVC 2005/8
+    _set_invalid_parameter_handler(handler_->previous_iph_);
+#endif  // _MSC_VER >= 1400
+    _set_purecall_handler(handler_->previous_pch_);
+  }
+
+  ~AutoExceptionHandler() {
+    // Put things back the way they were before entering this handler.
+    SetUnhandledExceptionFilter(ExceptionHandler::HandleException);
+#if _MSC_VER >= 1400  // MSVC 2005/8
+    _set_invalid_parameter_handler(ExceptionHandler::HandleInvalidParameter);
+#endif  // _MSC_VER >= 1400
+    _set_purecall_handler(ExceptionHandler::HandlePureVirtualCall);
+
+    --ExceptionHandler::handler_stack_index_;
+    LeaveCriticalSection(&ExceptionHandler::handler_stack_critical_section_);
+  }
+
+  ExceptionHandler* get_handler() const { return handler_; }
+
+ private:
+  ExceptionHandler* handler_;
+};
+
+// static
+LONG ExceptionHandler::HandleException(EXCEPTION_POINTERS* exinfo) {
+  AutoExceptionHandler auto_exception_handler;
+  ExceptionHandler* current_handler = auto_exception_handler.get_handler();
+
+  // Ignore EXCEPTION_BREAKPOINT and EXCEPTION_SINGLE_STEP exceptions.  This
+  // logic will short-circuit before calling WriteMinidumpOnHandlerThread,
+  // allowing something else to handle the breakpoint without incurring the
+  // overhead transitioning to and from the handler thread.  This behavior
+  // can be overridden by calling ExceptionHandler::set_handle_debug_exceptions.
+  DWORD code = exinfo->ExceptionRecord->ExceptionCode;
+  LONG action;
+  bool is_debug_exception = (code == EXCEPTION_BREAKPOINT) ||
+                            (code == EXCEPTION_SINGLE_STEP);
+
+  if (code == EXCEPTION_INVALID_HANDLE &&
+      current_handler->consume_invalid_handle_exceptions_) {
+    return EXCEPTION_CONTINUE_EXECUTION;
+  }
+
+  bool success = false;
+
+  if (!is_debug_exception ||
+      current_handler->get_handle_debug_exceptions()) {
+    // If out-of-proc crash handler client is available, we have to use that
+    // to generate dump and we cannot fall back on in-proc dump generation
+    // because we never prepared for an in-proc dump generation
+
+    // In case of out-of-process dump generation, directly call
+    // WriteMinidumpWithException since there is no separate thread running.
+    if (current_handler->IsOutOfProcess()) {
+      success = current_handler->WriteMinidumpWithException(
+          GetCurrentThreadId(),
+          exinfo,
+          NULL);
+    } else {
+      success = current_handler->WriteMinidumpOnHandlerThread(exinfo, NULL);
+    }
+  }
+
+  // The handler fully handled the exception.  Returning
+  // EXCEPTION_EXECUTE_HANDLER indicates this to the system, and usually
+  // results in the application being terminated.
+  //
+  // Note: If the application was launched from within the Cygwin
+  // environment, returning EXCEPTION_EXECUTE_HANDLER seems to cause the
+  // application to be restarted.
+  if (success) {
+    action = EXCEPTION_EXECUTE_HANDLER;
+  } else {
+    // There was an exception, it was a breakpoint or something else ignored
+    // above, or it was passed to the handler, which decided not to handle it.
+    // This could be because the filter callback didn't want it, because
+    // minidump writing failed for some reason, or because the post-minidump
+    // callback function indicated failure.  Give the previous handler a
+    // chance to do something with the exception.  If there is no previous
+    // handler, return EXCEPTION_CONTINUE_SEARCH, which will allow a debugger
+    // or native "crashed" dialog to handle the exception.
+    if (current_handler->previous_filter_) {
+      action = current_handler->previous_filter_(exinfo);
+    } else {
+      action = EXCEPTION_CONTINUE_SEARCH;
+    }
+  }
+
+  return action;
+}
+
+#if _MSC_VER >= 1400  // MSVC 2005/8
+// static
+void ExceptionHandler::HandleInvalidParameter(const wchar_t* expression,
+                                              const wchar_t* function,
+                                              const wchar_t* file,
+                                              unsigned int line,
+                                              uintptr_t reserved) {
+  // This is an invalid parameter, not an exception.  It's safe to play with
+  // sprintf here.
+  AutoExceptionHandler auto_exception_handler;
+  ExceptionHandler* current_handler = auto_exception_handler.get_handler();
+
+  MDRawAssertionInfo assertion;
+  memset(&assertion, 0, sizeof(assertion));
+  _snwprintf_s(reinterpret_cast<wchar_t*>(assertion.expression),
+               sizeof(assertion.expression) / sizeof(assertion.expression[0]),
+               _TRUNCATE, L"%s", expression);
+  _snwprintf_s(reinterpret_cast<wchar_t*>(assertion.function),
+               sizeof(assertion.function) / sizeof(assertion.function[0]),
+               _TRUNCATE, L"%s", function);
+  _snwprintf_s(reinterpret_cast<wchar_t*>(assertion.file),
+               sizeof(assertion.file) / sizeof(assertion.file[0]),
+               _TRUNCATE, L"%s", file);
+  assertion.line = line;
+  assertion.type = MD_ASSERTION_INFO_TYPE_INVALID_PARAMETER;
+
+  // Make up an exception record for the current thread and CPU context
+  // to make it possible for the crash processor to classify these
+  // as do regular crashes, and to make it humane for developers to
+  // analyze them.
+  EXCEPTION_RECORD exception_record = {};
+  CONTEXT exception_context = {};
+  EXCEPTION_POINTERS exception_ptrs = { &exception_record, &exception_context };
+
+  ::RtlCaptureContext(&exception_context);
+
+  exception_record.ExceptionCode = STATUS_INVALID_PARAMETER;
+
+  // We store pointers to the the expression and function strings,
+  // and the line as exception parameters to make them easy to
+  // access by the developer on the far side.
+  exception_record.NumberParameters = 3;
+  exception_record.ExceptionInformation[0] =
+      reinterpret_cast<ULONG_PTR>(&assertion.expression);
+  exception_record.ExceptionInformation[1] =
+      reinterpret_cast<ULONG_PTR>(&assertion.file);
+  exception_record.ExceptionInformation[2] = assertion.line;
+
+  bool success = false;
+  // In case of out-of-process dump generation, directly call
+  // WriteMinidumpWithException since there is no separate thread running.
+  if (current_handler->IsOutOfProcess()) {
+    success = current_handler->WriteMinidumpWithException(
+        GetCurrentThreadId(),
+        &exception_ptrs,
+        &assertion);
+  } else {
+    success = current_handler->WriteMinidumpOnHandlerThread(&exception_ptrs,
+                                                            &assertion);
+  }
+
+  if (!success) {
+    if (current_handler->previous_iph_) {
+      // The handler didn't fully handle the exception.  Give it to the
+      // previous invalid parameter handler.
+      current_handler->previous_iph_(expression,
+                                     function,
+                                     file,
+                                     line,
+                                     reserved);
+    } else {
+      // If there's no previous handler, pass the exception back in to the
+      // invalid parameter handler's core.  That's the routine that called this
+      // function, but now, since this function is no longer registered (and in
+      // fact, no function at all is registered), this will result in the
+      // default code path being taken: _CRT_DEBUGGER_HOOK and _invoke_watson.
+      // Use _invalid_parameter where it exists (in _DEBUG builds) as it passes
+      // more information through.  In non-debug builds, it is not available,
+      // so fall back to using _invalid_parameter_noinfo.  See invarg.c in the
+      // CRT source.
+#ifdef _DEBUG
+      _invalid_parameter(expression, function, file, line, reserved);
+#else  // _DEBUG
+      _invalid_parameter_noinfo();
+#endif  // _DEBUG
+    }
+  }
+
+  // The handler either took care of the invalid parameter problem itself,
+  // or passed it on to another handler.  "Swallow" it by exiting, paralleling
+  // the behavior of "swallowing" exceptions.
+  exit(0);
+}
+#endif  // _MSC_VER >= 1400
+
+// static
+void ExceptionHandler::HandlePureVirtualCall() {
+  // This is an pure virtual function call, not an exception.  It's safe to
+  // play with sprintf here.
+  AutoExceptionHandler auto_exception_handler;
+  ExceptionHandler* current_handler = auto_exception_handler.get_handler();
+
+  MDRawAssertionInfo assertion;
+  memset(&assertion, 0, sizeof(assertion));
+  assertion.type = MD_ASSERTION_INFO_TYPE_PURE_VIRTUAL_CALL;
+
+  // Make up an exception record for the current thread and CPU context
+  // to make it possible for the crash processor to classify these
+  // as do regular crashes, and to make it humane for developers to
+  // analyze them.
+  EXCEPTION_RECORD exception_record = {};
+  CONTEXT exception_context = {};
+  EXCEPTION_POINTERS exception_ptrs = { &exception_record, &exception_context };
+
+  ::RtlCaptureContext(&exception_context);
+
+  exception_record.ExceptionCode = STATUS_NONCONTINUABLE_EXCEPTION;
+
+  // We store pointers to the the expression and function strings,
+  // and the line as exception parameters to make them easy to
+  // access by the developer on the far side.
+  exception_record.NumberParameters = 3;
+  exception_record.ExceptionInformation[0] =
+      reinterpret_cast<ULONG_PTR>(&assertion.expression);
+  exception_record.ExceptionInformation[1] =
+      reinterpret_cast<ULONG_PTR>(&assertion.file);
+  exception_record.ExceptionInformation[2] = assertion.line;
+
+  bool success = false;
+  // In case of out-of-process dump generation, directly call
+  // WriteMinidumpWithException since there is no separate thread running.
+
+  if (current_handler->IsOutOfProcess()) {
+    success = current_handler->WriteMinidumpWithException(
+        GetCurrentThreadId(),
+        &exception_ptrs,
+        &assertion);
+  } else {
+    success = current_handler->WriteMinidumpOnHandlerThread(&exception_ptrs,
+                                                            &assertion);
+  }
+
+  if (!success) {
+    if (current_handler->previous_pch_) {
+      // The handler didn't fully handle the exception.  Give it to the
+      // previous purecall handler.
+      current_handler->previous_pch_();
+    } else {
+      // If there's no previous handler, return and let _purecall handle it.
+      // This will just put up an assertion dialog.
+      return;
+    }
+  }
+
+  // The handler either took care of the invalid parameter problem itself,
+  // or passed it on to another handler.  "Swallow" it by exiting, paralleling
+  // the behavior of "swallowing" exceptions.
+  exit(0);
+}
+
+bool ExceptionHandler::WriteMinidumpOnHandlerThread(
+    EXCEPTION_POINTERS* exinfo, MDRawAssertionInfo* assertion) {
+  EnterCriticalSection(&handler_critical_section_);
+
+  // There isn't much we can do if the handler thread
+  // was not successfully created.
+  if (handler_thread_ == NULL) {
+    LeaveCriticalSection(&handler_critical_section_);
+    return false;
+  }
+
+  // The handler thread should only be created when the semaphores are valid.
+  assert(handler_start_semaphore_ != NULL);
+  assert(handler_finish_semaphore_ != NULL);
+
+  // Set up data to be passed in to the handler thread.
+  requesting_thread_id_ = GetCurrentThreadId();
+  exception_info_ = exinfo;
+  assertion_ = assertion;
+
+  // This causes the handler thread to call WriteMinidumpWithException.
+  ReleaseSemaphore(handler_start_semaphore_, 1, NULL);
+
+  // Wait until WriteMinidumpWithException is done and collect its return value.
+  WaitForSingleObject(handler_finish_semaphore_, INFINITE);
+  bool status = handler_return_value_;
+
+  // Clean up.
+  requesting_thread_id_ = 0;
+  exception_info_ = NULL;
+  assertion_ = NULL;
+
+  LeaveCriticalSection(&handler_critical_section_);
+
+  return status;
+}
+
+bool ExceptionHandler::WriteMinidump() {
+  // Make up an exception record for the current thread and CPU context
+  // to make it possible for the crash processor to classify these
+  // as do regular crashes, and to make it humane for developers to
+  // analyze them.
+  EXCEPTION_RECORD exception_record = {};
+  CONTEXT exception_context = {};
+  EXCEPTION_POINTERS exception_ptrs = { &exception_record, &exception_context };
+
+  ::RtlCaptureContext(&exception_context);
+  exception_record.ExceptionCode = STATUS_NONCONTINUABLE_EXCEPTION;
+
+  return WriteMinidumpForException(&exception_ptrs);
+}
+
+bool ExceptionHandler::WriteMinidumpForException(EXCEPTION_POINTERS* exinfo) {
+  // In case of out-of-process dump generation, directly call
+  // WriteMinidumpWithException since there is no separate thread running.
+  if (IsOutOfProcess()) {
+    return WriteMinidumpWithException(GetCurrentThreadId(),
+                                      exinfo,
+                                      NULL);
+  }
+
+  bool success = WriteMinidumpOnHandlerThread(exinfo, NULL);
+  UpdateNextID();
+  return success;
+}
+
+// static
+bool ExceptionHandler::WriteMinidump(const wstring &dump_path,
+                                     MinidumpCallback callback,
+                                     void* callback_context) {
+  ExceptionHandler handler(dump_path, NULL, callback, callback_context,
+                           HANDLER_NONE);
+  return handler.WriteMinidump();
+}
+
+// static
+bool ExceptionHandler::WriteMinidumpForChild(HANDLE child,
+                                             DWORD child_blamed_thread,
+                                             const wstring& dump_path,
+                                             MinidumpCallback callback,
+                                             void* callback_context) {
+  EXCEPTION_RECORD ex;
+  CONTEXT ctx;
+  EXCEPTION_POINTERS exinfo = { NULL, NULL };
+  DWORD last_suspend_count = kFailedToSuspendThread;
+  HANDLE child_thread_handle = OpenThread(THREAD_GET_CONTEXT |
+                                          THREAD_QUERY_INFORMATION |
+                                          THREAD_SUSPEND_RESUME,
+                                          FALSE,
+                                          child_blamed_thread);
+  // This thread may have died already, so not opening the handle is a
+  // non-fatal error.
+  if (child_thread_handle != NULL) {
+    last_suspend_count = SuspendThread(child_thread_handle);
+    if (last_suspend_count != kFailedToSuspendThread) {
+      ctx.ContextFlags = CONTEXT_ALL;
+      if (GetThreadContext(child_thread_handle, &ctx)) {
+        memset(&ex, 0, sizeof(ex));
+        ex.ExceptionCode = EXCEPTION_BREAKPOINT;
+#if defined(_M_IX86)
+        ex.ExceptionAddress = reinterpret_cast<PVOID>(ctx.Eip);
+#elif defined(_M_X64)
+        ex.ExceptionAddress = reinterpret_cast<PVOID>(ctx.Rip);
+#endif
+        exinfo.ExceptionRecord = &ex;
+        exinfo.ContextRecord = &ctx;
+      }
+    }
+  }
+
+  ExceptionHandler handler(dump_path, NULL, callback, callback_context,
+                           HANDLER_NONE);
+  bool success = handler.WriteMinidumpWithExceptionForProcess(
+      child_blamed_thread,
+      exinfo.ExceptionRecord ? &exinfo : NULL,
+      NULL, child, false);
+
+  if (last_suspend_count != kFailedToSuspendThread) {
+    ResumeThread(child_thread_handle);
+  }
+
+  CloseHandle(child_thread_handle);
+
+  if (callback) {
+    success = callback(handler.dump_path_c_, handler.next_minidump_id_c_,
+                       callback_context, NULL, NULL, success);
+  }
+
+  return success;
+}
+
+bool ExceptionHandler::WriteMinidumpWithException(
+    DWORD requesting_thread_id,
+    EXCEPTION_POINTERS* exinfo,
+    MDRawAssertionInfo* assertion) {
+  // Give user code a chance to approve or prevent writing a minidump.  If the
+  // filter returns false, don't handle the exception at all.  If this method
+  // was called as a result of an exception, returning false will cause
+  // HandleException to call any previous handler or return
+  // EXCEPTION_CONTINUE_SEARCH on the exception thread, allowing it to appear
+  // as though this handler were not present at all.
+  if (filter_ && !filter_(callback_context_, exinfo, assertion)) {
+    return false;
+  }
+
+  bool success = false;
+  if (IsOutOfProcess()) {
+    success = crash_generation_client_->RequestDump(exinfo, assertion);
+  } else {
+    success = WriteMinidumpWithExceptionForProcess(requesting_thread_id,
+                                                   exinfo,
+                                                   assertion,
+                                                   GetCurrentProcess(),
+                                                   true);
+  }
+
+  if (callback_) {
+    // TODO(munjal): In case of out-of-process dump generation, both
+    // dump_path_c_ and next_minidump_id_ will be NULL. For out-of-process
+    // scenario, the server process ends up creating the dump path and dump
+    // id so they are not known to the client.
+    success = callback_(dump_path_c_, next_minidump_id_c_, callback_context_,
+                        exinfo, assertion, success);
+  }
+
+  return success;
+}
+
+// static
+BOOL CALLBACK ExceptionHandler::MinidumpWriteDumpCallback(
+    PVOID context,
+    const PMINIDUMP_CALLBACK_INPUT callback_input,
+    PMINIDUMP_CALLBACK_OUTPUT callback_output) {
+  switch (callback_input->CallbackType) {
+  case MemoryCallback: {
+    MinidumpCallbackContext* callback_context =
+        reinterpret_cast<MinidumpCallbackContext*>(context);
+    if (callback_context->iter == callback_context->end)
+      return FALSE;
+
+    // Include the specified memory region.
+    callback_output->MemoryBase = callback_context->iter->ptr;
+    callback_output->MemorySize = callback_context->iter->length;
+    callback_context->iter++;
+    return TRUE;
+  }
+
+    // Include all modules.
+  case IncludeModuleCallback:
+  case ModuleCallback:
+    return TRUE;
+
+    // Include all threads.
+  case IncludeThreadCallback:
+  case ThreadCallback:
+    return TRUE;
+
+    // Stop receiving cancel callbacks.
+  case CancelCallback:
+    callback_output->CheckCancel = FALSE;
+    callback_output->Cancel = FALSE;
+    return TRUE;
+  }
+  // Ignore other callback types.
+  return FALSE;
+}
+
+bool ExceptionHandler::WriteMinidumpWithExceptionForProcess(
+    DWORD requesting_thread_id,
+    EXCEPTION_POINTERS* exinfo,
+    MDRawAssertionInfo* assertion,
+    HANDLE process,
+    bool write_requester_stream) {
+  bool success = false;
+  if (minidump_write_dump_) {
+    HANDLE dump_file = CreateFile(next_minidump_path_c_,
+                                  GENERIC_WRITE,
+                                  0,  // no sharing
+                                  NULL,
+                                  CREATE_NEW,  // fail if exists
+                                  FILE_ATTRIBUTE_NORMAL,
+                                  NULL);
+    if (dump_file != INVALID_HANDLE_VALUE) {
+      MINIDUMP_EXCEPTION_INFORMATION except_info;
+      except_info.ThreadId = requesting_thread_id;
+      except_info.ExceptionPointers = exinfo;
+      except_info.ClientPointers = FALSE;
+
+      // Leave room in user_stream_array for possible breakpad and
+      // assertion info streams.
+      MINIDUMP_USER_STREAM user_stream_array[2];
+      MINIDUMP_USER_STREAM_INFORMATION user_streams;
+      user_streams.UserStreamCount = 0;
+      user_streams.UserStreamArray = user_stream_array;
+
+      if (write_requester_stream) {
+        // Add an MDRawBreakpadInfo stream to the minidump, to provide
+        // additional information about the exception handler to the Breakpad
+        // processor. The information will help the processor determine which
+        // threads are relevant.  The Breakpad processor does not require this
+        // information but can function better with Breakpad-generated dumps
+        // when it is present. The native debugger is not harmed by the
+        // presence of this information.
+        MDRawBreakpadInfo breakpad_info;
+        breakpad_info.validity = MD_BREAKPAD_INFO_VALID_DUMP_THREAD_ID |
+                                 MD_BREAKPAD_INFO_VALID_REQUESTING_THREAD_ID;
+        breakpad_info.dump_thread_id = GetCurrentThreadId();
+        breakpad_info.requesting_thread_id = requesting_thread_id;
+
+        int index = user_streams.UserStreamCount;
+        user_stream_array[index].Type = MD_BREAKPAD_INFO_STREAM;
+        user_stream_array[index].BufferSize = sizeof(breakpad_info);
+        user_stream_array[index].Buffer = &breakpad_info;
+        ++user_streams.UserStreamCount;
+      }
+
+      if (assertion) {
+        int index = user_streams.UserStreamCount;
+        user_stream_array[index].Type = MD_ASSERTION_INFO_STREAM;
+        user_stream_array[index].BufferSize = sizeof(MDRawAssertionInfo);
+        user_stream_array[index].Buffer = assertion;
+        ++user_streams.UserStreamCount;
+      }
+
+      // Older versions of DbgHelp.dll don't correctly put the memory around
+      // the faulting instruction pointer into the minidump. This
+      // callback will ensure that it gets included.
+      if (exinfo) {
+        // Find a memory region of 256 bytes centered on the
+        // faulting instruction pointer.
+        const ULONG64 instruction_pointer =
+#if defined(_M_IX86)
+          exinfo->ContextRecord->Eip;
+#elif defined(_M_AMD64)
+        exinfo->ContextRecord->Rip;
+#else
+#error Unsupported platform
+#endif
+
+        MEMORY_BASIC_INFORMATION info;
+        if (VirtualQueryEx(process,
+                           reinterpret_cast<LPCVOID>(instruction_pointer),
+                           &info,
+                           sizeof(MEMORY_BASIC_INFORMATION)) != 0 &&
+            info.State == MEM_COMMIT) {
+          // Attempt to get 128 bytes before and after the instruction
+          // pointer, but settle for whatever's available up to the
+          // boundaries of the memory region.
+          const ULONG64 kIPMemorySize = 256;
+          ULONG64 base =
+            (std::max)(reinterpret_cast<ULONG64>(info.BaseAddress),
+                       instruction_pointer - (kIPMemorySize / 2));
+          ULONG64 end_of_range =
+            (std::min)(instruction_pointer + (kIPMemorySize / 2),
+                       reinterpret_cast<ULONG64>(info.BaseAddress)
+                       + info.RegionSize);
+          ULONG size = static_cast<ULONG>(end_of_range - base);
+
+          AppMemory& elt = app_memory_info_.front();
+          elt.ptr = base;
+          elt.length = size;
+        }
+      }
+
+      MinidumpCallbackContext context;
+      context.iter = app_memory_info_.begin();
+      context.end = app_memory_info_.end();
+
+      // Skip the reserved element if there was no instruction memory
+      if (context.iter->ptr == 0) {
+        context.iter++;
+      }
+
+      MINIDUMP_CALLBACK_INFORMATION callback;
+      callback.CallbackRoutine = MinidumpWriteDumpCallback;
+      callback.CallbackParam = reinterpret_cast<void*>(&context);
+
+      // The explicit comparison to TRUE avoids a warning (C4800).
+      success = (minidump_write_dump_(process,
+                                      GetProcessId(process),
+                                      dump_file,
+                                      dump_type_,
+                                      exinfo ? &except_info : NULL,
+                                      &user_streams,
+                                      &callback) == TRUE);
+
+      CloseHandle(dump_file);
+    }
+  }
+
+  return success;
+}
+
+void ExceptionHandler::UpdateNextID() {
+  assert(uuid_create_);
+  UUID id = {0};
+  if (uuid_create_) {
+    uuid_create_(&id);
+  }
+  next_minidump_id_ = GUIDString::GUIDToWString(&id);
+  next_minidump_id_c_ = next_minidump_id_.c_str();
+
+  wchar_t minidump_path[MAX_PATH];
+  swprintf(minidump_path, MAX_PATH, L"%s\\%s.dmp",
+           dump_path_c_, next_minidump_id_c_);
+
+  // remove when VC++7.1 is no longer supported
+  minidump_path[MAX_PATH - 1] = L'\0';
+
+  next_minidump_path_ = minidump_path;
+  next_minidump_path_c_ = next_minidump_path_.c_str();
+}
+
+void ExceptionHandler::RegisterAppMemory(void* ptr, size_t length) {
+  AppMemoryList::iterator iter =
+    std::find(app_memory_info_.begin(), app_memory_info_.end(), ptr);
+  if (iter != app_memory_info_.end()) {
+    // Don't allow registering the same pointer twice.
+    return;
+  }
+
+  AppMemory app_memory;
+  app_memory.ptr = reinterpret_cast<ULONG64>(ptr);
+  app_memory.length = static_cast<ULONG>(length);
+  app_memory_info_.push_back(app_memory);
+}
+
+void ExceptionHandler::UnregisterAppMemory(void* ptr) {
+  AppMemoryList::iterator iter =
+    std::find(app_memory_info_.begin(), app_memory_info_.end(), ptr);
+  if (iter != app_memory_info_.end()) {
+    app_memory_info_.erase(iter);
+  }
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/client/windows/handler/exception_handler.gyp b/google-breakpad/src/client/windows/handler/exception_handler.gyp
new file mode 100644
index 0000000..c573327
--- /dev/null
+++ b/google-breakpad/src/client/windows/handler/exception_handler.gyp
@@ -0,0 +1,47 @@
+# Copyright 2010 Google Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+{
+  'includes': [
+    '../../../build/common.gypi',
+  ],
+  'targets': [
+    {
+      'target_name': 'exception_handler',
+      'type': 'static_library',
+      'sources': [
+        "exception_handler.cc",
+        "exception_handler.h",
+      ],
+      'dependencies': [
+        '../breakpad_client.gyp:common',
+        '../crash_generation/crash_generation.gyp:crash_generation_server',
+      ]
+    },
+  ],
+}
diff --git a/google-breakpad/src/client/windows/handler/exception_handler.h b/google-breakpad/src/client/windows/handler/exception_handler.h
new file mode 100644
index 0000000..e3cd814
--- /dev/null
+++ b/google-breakpad/src/client/windows/handler/exception_handler.h
@@ -0,0 +1,522 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// ExceptionHandler can write a minidump file when an exception occurs,
+// or when WriteMinidump() is called explicitly by your program.
+//
+// To have the exception handler write minidumps when an uncaught exception
+// (crash) occurs, you should create an instance early in the execution
+// of your program, and keep it around for the entire time you want to
+// have crash handling active (typically, until shutdown).
+//
+// If you want to write minidumps without installing the exception handler,
+// you can create an ExceptionHandler with install_handler set to false,
+// then call WriteMinidump.  You can also use this technique if you want to
+// use different minidump callbacks for different call sites.
+//
+// In either case, a callback function is called when a minidump is written,
+// which receives the unqiue id of the minidump.  The caller can use this
+// id to collect and write additional application state, and to launch an
+// external crash-reporting application.
+//
+// It is important that creation and destruction of ExceptionHandler objects
+// be nested cleanly, when using install_handler = true.
+// Avoid the following pattern:
+//   ExceptionHandler *e = new ExceptionHandler(...);
+//   ExceptionHandler *f = new ExceptionHandler(...);
+//   delete e;
+// This will put the exception filter stack into an inconsistent state.
+
+#ifndef CLIENT_WINDOWS_HANDLER_EXCEPTION_HANDLER_H__
+#define CLIENT_WINDOWS_HANDLER_EXCEPTION_HANDLER_H__
+
+#include <stdlib.h>
+#include <windows.h>
+#include <dbghelp.h>
+#include <rpc.h>
+
+#pragma warning(push)
+// Disable exception handler warnings.
+#pragma warning(disable:4530)
+
+#include <list>
+#include <string>
+#include <vector>
+
+#include "client/windows/common/ipc_protocol.h"
+#include "client/windows/crash_generation/crash_generation_client.h"
+#include "common/scoped_ptr.h"
+#include "google_breakpad/common/minidump_format.h"
+
+namespace google_breakpad {
+
+using std::vector;
+using std::wstring;
+
+// These entries store a list of memory regions that the client wants included
+// in the minidump.
+struct AppMemory {
+  ULONG64 ptr;
+  ULONG length;
+
+  bool operator==(const struct AppMemory& other) const {
+    return ptr == other.ptr;
+  }
+
+  bool operator==(const void* other) const {
+    return ptr == reinterpret_cast<ULONG64>(other);
+  }
+};
+typedef std::list<AppMemory> AppMemoryList;
+
+class ExceptionHandler {
+ public:
+  // A callback function to run before Breakpad performs any substantial
+  // processing of an exception.  A FilterCallback is called before writing
+  // a minidump.  context is the parameter supplied by the user as
+  // callback_context when the handler was created.  exinfo points to the
+  // exception record, if any; assertion points to assertion information,
+  // if any.
+  //
+  // If a FilterCallback returns true, Breakpad will continue processing,
+  // attempting to write a minidump.  If a FilterCallback returns false,
+  // Breakpad will immediately report the exception as unhandled without
+  // writing a minidump, allowing another handler the opportunity to handle it.
+  typedef bool (*FilterCallback)(void* context, EXCEPTION_POINTERS* exinfo,
+                                 MDRawAssertionInfo* assertion);
+
+  // A callback function to run after the minidump has been written.
+  // minidump_id is a unique id for the dump, so the minidump
+  // file is <dump_path>\<minidump_id>.dmp.  context is the parameter supplied
+  // by the user as callback_context when the handler was created.  exinfo
+  // points to the exception record, or NULL if no exception occurred.
+  // succeeded indicates whether a minidump file was successfully written.
+  // assertion points to information about an assertion if the handler was
+  // invoked by an assertion.
+  //
+  // If an exception occurred and the callback returns true, Breakpad will treat
+  // the exception as fully-handled, suppressing any other handlers from being
+  // notified of the exception.  If the callback returns false, Breakpad will
+  // treat the exception as unhandled, and allow another handler to handle it.
+  // If there are no other handlers, Breakpad will report the exception to the
+  // system as unhandled, allowing a debugger or native crash dialog the
+  // opportunity to handle the exception.  Most callback implementations
+  // should normally return the value of |succeeded|, or when they wish to
+  // not report an exception of handled, false.  Callbacks will rarely want to
+  // return true directly (unless |succeeded| is true).
+  //
+  // For out-of-process dump generation, dump path and minidump ID will always
+  // be NULL. In case of out-of-process dump generation, the dump path and
+  // minidump id are controlled by the server process and are not communicated
+  // back to the crashing process.
+  typedef bool (*MinidumpCallback)(const wchar_t* dump_path,
+                                   const wchar_t* minidump_id,
+                                   void* context,
+                                   EXCEPTION_POINTERS* exinfo,
+                                   MDRawAssertionInfo* assertion,
+                                   bool succeeded);
+
+  // HandlerType specifies which types of handlers should be installed, if
+  // any.  Use HANDLER_NONE for an ExceptionHandler that remains idle,
+  // without catching any failures on its own.  This type of handler may
+  // still be triggered by calling WriteMinidump.  Otherwise, use a
+  // combination of the other HANDLER_ values, or HANDLER_ALL to install
+  // all handlers.
+  enum HandlerType {
+    HANDLER_NONE = 0,
+    HANDLER_EXCEPTION = 1 << 0,          // SetUnhandledExceptionFilter
+    HANDLER_INVALID_PARAMETER = 1 << 1,  // _set_invalid_parameter_handler
+    HANDLER_PURECALL = 1 << 2,           // _set_purecall_handler
+    HANDLER_ALL = HANDLER_EXCEPTION |
+                  HANDLER_INVALID_PARAMETER |
+                  HANDLER_PURECALL
+  };
+
+  // Creates a new ExceptionHandler instance to handle writing minidumps.
+  // Before writing a minidump, the optional filter callback will be called.
+  // Its return value determines whether or not Breakpad should write a
+  // minidump.  Minidump files will be written to dump_path, and the optional
+  // callback is called after writing the dump file, as described above.
+  // handler_types specifies the types of handlers that should be installed.
+  ExceptionHandler(const wstring& dump_path,
+                   FilterCallback filter,
+                   MinidumpCallback callback,
+                   void* callback_context,
+                   int handler_types);
+
+  // Creates a new ExceptionHandler instance that can attempt to perform
+  // out-of-process dump generation if pipe_name is not NULL. If pipe_name is
+  // NULL, or if out-of-process dump generation registration step fails,
+  // in-process dump generation will be used. This also allows specifying
+  // the dump type to generate.
+  ExceptionHandler(const wstring& dump_path,
+                   FilterCallback filter,
+                   MinidumpCallback callback,
+                   void* callback_context,
+                   int handler_types,
+                   MINIDUMP_TYPE dump_type,
+                   const wchar_t* pipe_name,
+                   const CustomClientInfo* custom_info);
+
+  // As above, creates a new ExceptionHandler instance to perform
+  // out-of-process dump generation if the given pipe_handle is not NULL.
+  ExceptionHandler(const wstring& dump_path,
+                   FilterCallback filter,
+                   MinidumpCallback callback,
+                   void* callback_context,
+                   int handler_types,
+                   MINIDUMP_TYPE dump_type,
+                   HANDLE pipe_handle,
+                   const CustomClientInfo* custom_info);
+
+  // ExceptionHandler that ENSURES out-of-process dump generation.  Expects a
+  // crash generation client that is already registered with a crash generation
+  // server.  Takes ownership of the passed-in crash_generation_client.
+  //
+  // Usage example:
+  //   crash_generation_client = new CrashGenerationClient(..);
+  //   if (crash_generation_client->Register()) {
+  //     // Registration with the crash generation server succeeded.
+  //     // Out-of-process dump generation is guaranteed.
+  //     g_handler = new ExceptionHandler(.., crash_generation_client, ..);
+  //     return true;
+  //   }
+  ExceptionHandler(const wstring& dump_path,
+                   FilterCallback filter,
+                   MinidumpCallback callback,
+                   void* callback_context,
+                   int handler_types,
+                   CrashGenerationClient* crash_generation_client);
+
+  ~ExceptionHandler();
+
+  // Get and set the minidump path.
+  wstring dump_path() const { return dump_path_; }
+  void set_dump_path(const wstring &dump_path) {
+    dump_path_ = dump_path;
+    dump_path_c_ = dump_path_.c_str();
+    UpdateNextID();  // Necessary to put dump_path_ in next_minidump_path_.
+  }
+
+  // Requests that a previously reported crash be uploaded.
+  bool RequestUpload(DWORD crash_id);
+
+  // Writes a minidump immediately.  This can be used to capture the
+  // execution state independently of a crash.  Returns true on success.
+  bool WriteMinidump();
+
+  // Writes a minidump immediately, with the user-supplied exception
+  // information.
+  bool WriteMinidumpForException(EXCEPTION_POINTERS* exinfo);
+
+  // Convenience form of WriteMinidump which does not require an
+  // ExceptionHandler instance.
+  static bool WriteMinidump(const wstring &dump_path,
+                            MinidumpCallback callback, void* callback_context);
+
+  // Write a minidump of |child| immediately.  This can be used to
+  // capture the execution state of |child| independently of a crash.
+  // Pass a meaningful |child_blamed_thread| to make that thread in
+  // the child process the one from which a crash signature is
+  // extracted.
+  static bool WriteMinidumpForChild(HANDLE child,
+                                    DWORD child_blamed_thread,
+                                    const wstring& dump_path,
+                                    MinidumpCallback callback,
+                                    void* callback_context);
+
+  // Get the thread ID of the thread requesting the dump (either the exception
+  // thread or any other thread that called WriteMinidump directly).  This
+  // may be useful if you want to include additional thread state in your
+  // dumps.
+  DWORD get_requesting_thread_id() const { return requesting_thread_id_; }
+
+  // Controls behavior of EXCEPTION_BREAKPOINT and EXCEPTION_SINGLE_STEP.
+  bool get_handle_debug_exceptions() const { return handle_debug_exceptions_; }
+  void set_handle_debug_exceptions(bool handle_debug_exceptions) {
+    handle_debug_exceptions_ = handle_debug_exceptions;
+  }
+
+  // Controls behavior of EXCEPTION_INVALID_HANDLE.
+  bool get_consume_invalid_handle_exceptions() const {
+    return consume_invalid_handle_exceptions_;
+  }
+  void set_consume_invalid_handle_exceptions(
+      bool consume_invalid_handle_exceptions) {
+    consume_invalid_handle_exceptions_ = consume_invalid_handle_exceptions;
+  }
+
+  // Returns whether out-of-process dump generation is used or not.
+  bool IsOutOfProcess() const { return crash_generation_client_.get() != NULL; }
+
+  // Calling RegisterAppMemory(p, len) causes len bytes starting
+  // at address p to be copied to the minidump when a crash happens.
+  void RegisterAppMemory(void* ptr, size_t length);
+  void UnregisterAppMemory(void* ptr);
+
+ private:
+  friend class AutoExceptionHandler;
+
+  // Initializes the instance with given values.
+  void Initialize(const wstring& dump_path,
+                  FilterCallback filter,
+                  MinidumpCallback callback,
+                  void* callback_context,
+                  int handler_types,
+                  MINIDUMP_TYPE dump_type,
+                  const wchar_t* pipe_name,
+                  HANDLE pipe_handle,
+                  CrashGenerationClient* crash_generation_client,
+                  const CustomClientInfo* custom_info);
+
+  // Function pointer type for MiniDumpWriteDump, which is looked up
+  // dynamically.
+  typedef BOOL (WINAPI *MiniDumpWriteDump_type)(
+      HANDLE hProcess,
+      DWORD dwPid,
+      HANDLE hFile,
+      MINIDUMP_TYPE DumpType,
+      CONST PMINIDUMP_EXCEPTION_INFORMATION ExceptionParam,
+      CONST PMINIDUMP_USER_STREAM_INFORMATION UserStreamParam,
+      CONST PMINIDUMP_CALLBACK_INFORMATION CallbackParam);
+
+  // Function pointer type for UuidCreate, which is looked up dynamically.
+  typedef RPC_STATUS (RPC_ENTRY *UuidCreate_type)(UUID* Uuid);
+
+  // Runs the main loop for the exception handler thread.
+  static DWORD WINAPI ExceptionHandlerThreadMain(void* lpParameter);
+
+  // Called on the exception thread when an unhandled exception occurs.
+  // Signals the exception handler thread to handle the exception.
+  static LONG WINAPI HandleException(EXCEPTION_POINTERS* exinfo);
+
+#if _MSC_VER >= 1400  // MSVC 2005/8
+  // This function will be called by some CRT functions when they detect
+  // that they were passed an invalid parameter.  Note that in _DEBUG builds,
+  // the CRT may display an assertion dialog before calling this function,
+  // and the function will not be called unless the assertion dialog is
+  // dismissed by clicking "Ignore."
+  static void HandleInvalidParameter(const wchar_t* expression,
+                                     const wchar_t* function,
+                                     const wchar_t* file,
+                                     unsigned int line,
+                                     uintptr_t reserved);
+#endif  // _MSC_VER >= 1400
+
+  // This function will be called by the CRT when a pure virtual
+  // function is called.
+  static void HandlePureVirtualCall();
+
+  // This is called on the exception thread or on another thread that
+  // the user wishes to produce a dump from.  It calls
+  // WriteMinidumpWithException on the handler thread, avoiding stack
+  // overflows and inconsistent dumps due to writing the dump from
+  // the exception thread.  If the dump is requested as a result of an
+  // exception, exinfo contains exception information, otherwise, it
+  // is NULL.  If the dump is requested as a result of an assertion
+  // (such as an invalid parameter being passed to a CRT function),
+  // assertion contains data about the assertion, otherwise, it is NULL.
+  bool WriteMinidumpOnHandlerThread(EXCEPTION_POINTERS* exinfo,
+                                    MDRawAssertionInfo* assertion);
+
+  // This function is called on the handler thread.  It calls into
+  // WriteMinidumpWithExceptionForProcess() with a handle to the
+  // current process.  requesting_thread_id is the ID of the thread
+  // that requested the dump.  If the dump is requested as a result of
+  // an exception, exinfo contains exception information, otherwise,
+  // it is NULL.
+  bool WriteMinidumpWithException(DWORD requesting_thread_id,
+                                  EXCEPTION_POINTERS* exinfo,
+                                  MDRawAssertionInfo* assertion);
+
+  // This function is used as a callback when calling MinidumpWriteDump,
+  // in order to add additional memory regions to the dump.
+  static BOOL CALLBACK MinidumpWriteDumpCallback(
+      PVOID context,
+      const PMINIDUMP_CALLBACK_INPUT callback_input,
+      PMINIDUMP_CALLBACK_OUTPUT callback_output);
+
+  // This function does the actual writing of a minidump.  It is
+  // called on the handler thread.  requesting_thread_id is the ID of
+  // the thread that requested the dump, if that information is
+  // meaningful.  If the dump is requested as a result of an
+  // exception, exinfo contains exception information, otherwise, it
+  // is NULL.  process is the one that will be dumped.  If
+  // requesting_thread_id is meaningful and should be added to the
+  // minidump, write_requester_stream is |true|.
+  bool WriteMinidumpWithExceptionForProcess(DWORD requesting_thread_id,
+                                            EXCEPTION_POINTERS* exinfo,
+                                            MDRawAssertionInfo* assertion,
+                                            HANDLE process,
+                                            bool write_requester_stream);
+
+  // Generates a new ID and stores it in next_minidump_id_, and stores the
+  // path of the next minidump to be written in next_minidump_path_.
+  void UpdateNextID();
+
+  FilterCallback filter_;
+  MinidumpCallback callback_;
+  void* callback_context_;
+
+  scoped_ptr<CrashGenerationClient> crash_generation_client_;
+
+  // The directory in which a minidump will be written, set by the dump_path
+  // argument to the constructor, or set_dump_path.
+  wstring dump_path_;
+
+  // The basename of the next minidump to be written, without the extension.
+  wstring next_minidump_id_;
+
+  // The full pathname of the next minidump to be written, including the file
+  // extension.
+  wstring next_minidump_path_;
+
+  // Pointers to C-string representations of the above.  These are set when
+  // the above wstring versions are set in order to avoid calling c_str during
+  // an exception, as c_str may attempt to allocate heap memory.  These
+  // pointers are not owned by the ExceptionHandler object, but their lifetimes
+  // should be equivalent to the lifetimes of the associated wstring, provided
+  // that the wstrings are not altered.
+  const wchar_t* dump_path_c_;
+  const wchar_t* next_minidump_id_c_;
+  const wchar_t* next_minidump_path_c_;
+
+  HMODULE dbghelp_module_;
+  MiniDumpWriteDump_type minidump_write_dump_;
+  MINIDUMP_TYPE dump_type_;
+
+  HMODULE rpcrt4_module_;
+  UuidCreate_type uuid_create_;
+
+  // Tracks the handler types that were installed according to the
+  // handler_types constructor argument.
+  int handler_types_;
+
+  // When installed_handler_ is true, previous_filter_ is the unhandled
+  // exception filter that was set prior to installing ExceptionHandler as
+  // the unhandled exception filter and pointing it to |this|.  NULL indicates
+  // that there is no previous unhandled exception filter.
+  LPTOP_LEVEL_EXCEPTION_FILTER previous_filter_;
+
+#if _MSC_VER >= 1400  // MSVC 2005/8
+  // Beginning in VC 8, the CRT provides an invalid parameter handler that will
+  // be called when some CRT functions are passed invalid parameters.  In
+  // earlier CRTs, the same conditions would cause unexpected behavior or
+  // crashes.
+  _invalid_parameter_handler previous_iph_;
+#endif  // _MSC_VER >= 1400
+
+  // The CRT allows you to override the default handler for pure
+  // virtual function calls.
+  _purecall_handler previous_pch_;
+
+  // The exception handler thread.
+  HANDLE handler_thread_;
+
+  // True if the exception handler is being destroyed.
+  // Starting with MSVC 2005, Visual C has stronger guarantees on volatile vars.
+  // It has release semantics on write and acquire semantics on reads.
+  // See the msdn documentation.
+  volatile bool is_shutdown_;
+
+  // The critical section enforcing the requirement that only one exception be
+  // handled by a handler at a time.
+  CRITICAL_SECTION handler_critical_section_;
+
+  // Semaphores used to move exception handling between the exception thread
+  // and the handler thread.  handler_start_semaphore_ is signalled by the
+  // exception thread to wake up the handler thread when an exception occurs.
+  // handler_finish_semaphore_ is signalled by the handler thread to wake up
+  // the exception thread when handling is complete.
+  HANDLE handler_start_semaphore_;
+  HANDLE handler_finish_semaphore_;
+
+  // The next 2 fields contain data passed from the requesting thread to
+  // the handler thread.
+
+  // The thread ID of the thread requesting the dump (either the exception
+  // thread or any other thread that called WriteMinidump directly).
+  DWORD requesting_thread_id_;
+
+  // The exception info passed to the exception handler on the exception
+  // thread, if an exception occurred.  NULL for user-requested dumps.
+  EXCEPTION_POINTERS* exception_info_;
+
+  // If the handler is invoked due to an assertion, this will contain a
+  // pointer to the assertion information.  It is NULL at other times.
+  MDRawAssertionInfo* assertion_;
+
+  // The return value of the handler, passed from the handler thread back to
+  // the requesting thread.
+  bool handler_return_value_;
+
+  // If true, the handler will intercept EXCEPTION_BREAKPOINT and
+  // EXCEPTION_SINGLE_STEP exceptions.  Leave this false (the default)
+  // to not interfere with debuggers.
+  bool handle_debug_exceptions_;
+
+  // If true, the handler will consume any EXCEPTION_INVALID_HANDLE exceptions.
+  // Leave this false (the default) to handle these exceptions as normal.
+  bool consume_invalid_handle_exceptions_;
+
+  // Callers can request additional memory regions to be included in
+  // the dump.
+  AppMemoryList app_memory_info_;
+
+  // A stack of ExceptionHandler objects that have installed unhandled
+  // exception filters.  This vector is used by HandleException to determine
+  // which ExceptionHandler object to route an exception to.  When an
+  // ExceptionHandler is created with install_handler true, it will append
+  // itself to this list.
+  static vector<ExceptionHandler*>* handler_stack_;
+
+  // The index of the ExceptionHandler in handler_stack_ that will handle the
+  // next exception.  Note that 0 means the last entry in handler_stack_, 1
+  // means the next-to-last entry, and so on.  This is used by HandleException
+  // to support multiple stacked Breakpad handlers.
+  static LONG handler_stack_index_;
+
+  // handler_stack_critical_section_ guards operations on handler_stack_ and
+  // handler_stack_index_. The critical section is initialized by the
+  // first instance of the class and destroyed by the last instance of it.
+  static CRITICAL_SECTION handler_stack_critical_section_;
+
+  // The number of instances of this class.
+  static volatile LONG instance_count_;
+
+  // disallow copy ctor and operator=
+  explicit ExceptionHandler(const ExceptionHandler &);
+  void operator=(const ExceptionHandler &);
+};
+
+}  // namespace google_breakpad
+
+#pragma warning(pop)
+
+#endif  // CLIENT_WINDOWS_HANDLER_EXCEPTION_HANDLER_H__
diff --git a/google-breakpad/src/client/windows/sender/crash_report_sender.cc b/google-breakpad/src/client/windows/sender/crash_report_sender.cc
new file mode 100644
index 0000000..ecf626d
--- /dev/null
+++ b/google-breakpad/src/client/windows/sender/crash_report_sender.cc
@@ -0,0 +1,142 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Disable exception handler warnings.
+#pragma warning( disable : 4530 )
+
+#include <errno.h>
+
+#include "client/windows/sender/crash_report_sender.h"
+#include "common/windows/http_upload.h"
+
+#if _MSC_VER < 1400  // MSVC 2005/8
+// Older MSVC doesn't have fscanf_s, but they are compatible as long as
+// we don't use the string conversions (%s/%c/%S/%C).
+#define fscanf_s fscanf
+#endif
+
+namespace google_breakpad {
+
+static const char kCheckpointSignature[] = "GBP1\n";
+
+CrashReportSender::CrashReportSender(const wstring &checkpoint_file)
+    : checkpoint_file_(checkpoint_file),
+      max_reports_per_day_(-1),
+      last_sent_date_(-1),
+      reports_sent_(0) {
+  FILE *fd;
+  if (OpenCheckpointFile(L"r", &fd) == 0) {
+    ReadCheckpoint(fd);
+    fclose(fd);
+  }
+}
+
+ReportResult CrashReportSender::SendCrashReport(
+    const wstring &url, const map<wstring, wstring> &parameters,
+    const wstring &dump_file_name, wstring *report_code) {
+  int today = GetCurrentDate();
+  if (today == last_sent_date_ &&
+      max_reports_per_day_ != -1 &&
+      reports_sent_ >= max_reports_per_day_) {
+    return RESULT_THROTTLED;
+  }
+
+  int http_response = 0;
+  bool result = HTTPUpload::SendRequest(
+    url, parameters, dump_file_name, L"upload_file_minidump", NULL, report_code,
+    &http_response);
+
+  if (result) {
+    ReportSent(today);
+    return RESULT_SUCCEEDED;
+  } else if (http_response >= 400 && http_response < 500) {
+    return RESULT_REJECTED;
+  } else {
+    return RESULT_FAILED;
+  }
+}
+
+void CrashReportSender::ReadCheckpoint(FILE *fd) {
+  char buf[128];
+  if (!fgets(buf, sizeof(buf), fd) ||
+      strcmp(buf, kCheckpointSignature) != 0) {
+    return;
+  }
+
+  if (fscanf_s(fd, "%d\n", &last_sent_date_) != 1) {
+    last_sent_date_ = -1;
+    return;
+  }
+  if (fscanf_s(fd, "%d\n", &reports_sent_) != 1) {
+    reports_sent_ = 0;
+    return;
+  }
+}
+
+void CrashReportSender::ReportSent(int today) {
+  // Update the report stats
+  if (today != last_sent_date_) {
+    last_sent_date_ = today;
+    reports_sent_ = 0;
+  }
+  ++reports_sent_;
+
+  // Update the checkpoint file
+  FILE *fd;
+  if (OpenCheckpointFile(L"w", &fd) == 0) {
+    fputs(kCheckpointSignature, fd);
+    fprintf(fd, "%d\n", last_sent_date_);
+    fprintf(fd, "%d\n", reports_sent_);
+    fclose(fd);
+  }
+}
+
+int CrashReportSender::GetCurrentDate() const {
+  SYSTEMTIME system_time;
+  GetSystemTime(&system_time);
+  return (system_time.wYear * 10000) + (system_time.wMonth * 100) +
+      system_time.wDay;
+}
+
+int CrashReportSender::OpenCheckpointFile(const wchar_t *mode, FILE **fd) {
+  if (checkpoint_file_.empty()) {
+    return ENOENT;
+  }
+#if _MSC_VER >= 1400  // MSVC 2005/8
+  return _wfopen_s(fd, checkpoint_file_.c_str(), mode);
+#else
+  *fd = _wfopen(checkpoint_file_.c_str(), mode);
+  if (*fd == NULL) {
+    return errno;
+  }
+  return 0;
+#endif
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/client/windows/sender/crash_report_sender.gyp b/google-breakpad/src/client/windows/sender/crash_report_sender.gyp
new file mode 100644
index 0000000..dc8583a
--- /dev/null
+++ b/google-breakpad/src/client/windows/sender/crash_report_sender.gyp
@@ -0,0 +1,46 @@
+# Copyright 2010 Google Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+{
+  'includes': [
+    '../../../build/common.gypi',
+  ],
+  'targets': [
+    {
+      'target_name': 'crash_report_sender',
+      'type': 'static_library',
+      'sources': [
+        'crash_report_sender.cc',
+        'crash_report_sender.h',
+      ],
+      'dependencies': [
+        '../breakpad_client.gyp:common'
+      ],
+    },
+  ],
+}
diff --git a/google-breakpad/src/client/windows/sender/crash_report_sender.h b/google-breakpad/src/client/windows/sender/crash_report_sender.h
new file mode 100644
index 0000000..da1ed0a
--- /dev/null
+++ b/google-breakpad/src/client/windows/sender/crash_report_sender.h
@@ -0,0 +1,125 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef CLIENT_WINDOWS_SENDER_CRASH_REPORT_SENDER_H__
+#define CLIENT_WINDOWS_SENDER_CRASH_REPORT_SENDER_H__
+
+// CrashReportSender is a "static" class which provides an API to upload
+// crash reports via HTTP(S).  A crash report is formatted as a multipart POST
+// request, which contains a set of caller-supplied string key/value pairs,
+// and a minidump file to upload.
+//
+// To use this library in your project, you will need to link against
+// wininet.lib.
+
+#pragma warning( push )
+// Disable exception handler warnings.
+#pragma warning( disable : 4530 ) 
+
+#include <map>
+#include <string>
+
+namespace google_breakpad {
+
+using std::wstring;
+using std::map;
+
+typedef enum {
+  RESULT_FAILED = 0,  // Failed to communicate with the server; try later.
+  RESULT_REJECTED,    // Successfully sent the crash report, but the
+                      // server rejected it; don't resend this report.
+  RESULT_SUCCEEDED,   // The server accepted the crash report.
+  RESULT_THROTTLED    // No attempt was made to send the crash report, because
+                      // we exceeded the maximum reports per day.
+} ReportResult;
+
+class CrashReportSender {
+ public:
+  // Initializes a CrashReportSender instance.
+  // If checkpoint_file is non-empty, breakpad will persist crash report
+  // state to this file.  A checkpoint file is required for
+  // set_max_reports_per_day() to function properly.
+  explicit CrashReportSender(const wstring &checkpoint_file);
+  ~CrashReportSender() {}
+
+  // Sets the maximum number of crash reports that will be sent in a 24-hour
+  // period.  This uses the state persisted to the checkpoint file.
+  // The default value of -1 means that there is no limit on reports sent.
+  void set_max_reports_per_day(int reports) {
+    max_reports_per_day_ = reports;
+  }
+
+  int max_reports_per_day() const { return max_reports_per_day_; }
+
+  // Sends the specified minidump file, along with the map of
+  // name value pairs, as a multipart POST request to the given URL.
+  // Parameter names must contain only printable ASCII characters,
+  // and may not contain a quote (") character.
+  // Only HTTP(S) URLs are currently supported.  The return value indicates
+  // the result of the operation (see above for possible results).
+  // If report_code is non-NULL and the report is sent successfully (that is,
+  // the return value is RESULT_SUCCEEDED), a code uniquely identifying the
+  // report will be returned in report_code.
+  // (Otherwise, report_code will be unchanged.)
+  ReportResult SendCrashReport(const wstring &url,
+                               const map<wstring, wstring> &parameters,
+                               const wstring &dump_file_name,
+                               wstring *report_code);
+
+ private:
+  // Reads persistent state from a checkpoint file.
+  void ReadCheckpoint(FILE *fd);
+
+  // Called when a new report has been sent, to update the checkpoint state.
+  void ReportSent(int today);
+
+  // Returns today's date (UTC) formatted as YYYYMMDD.
+  int GetCurrentDate() const;
+
+  // Opens the checkpoint file with the specified mode.
+  // Returns zero on success, or an error code on failure.
+  int OpenCheckpointFile(const wchar_t *mode, FILE **fd);
+
+  wstring checkpoint_file_;
+  int max_reports_per_day_;
+  // The last date on which we sent a report, expressed as YYYYMMDD.
+  int last_sent_date_;
+  // Number of reports sent on last_sent_date_
+  int reports_sent_;
+
+  // Disallow copy constructor and operator=
+  explicit CrashReportSender(const CrashReportSender &);
+  void operator=(const CrashReportSender &);
+};
+
+}  // namespace google_breakpad
+
+#pragma warning( pop )
+
+#endif  // CLIENT_WINDOWS_SENDER_CRASH_REPORT_SENDER_H__
diff --git a/google-breakpad/src/client/windows/tests/crash_generation_app/abstract_class.cc b/google-breakpad/src/client/windows/tests/crash_generation_app/abstract_class.cc
new file mode 100644
index 0000000..32f78f2
--- /dev/null
+++ b/google-breakpad/src/client/windows/tests/crash_generation_app/abstract_class.cc
@@ -0,0 +1,53 @@
+// Copyright (c) 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include "client/windows/tests/crash_generation_app/abstract_class.h"
+
+namespace google_breakpad {
+
+Base::Base(Derived* derived)
+    : derived_(derived) {
+}
+
+Base::~Base() {
+  derived_->DoSomething();
+}
+
+#pragma warning(push)
+#pragma warning(disable:4355)
+// Disable warning C4355: 'this' : used in base member initializer list.
+Derived::Derived()
+    : Base(this) {  // C4355
+}
+#pragma warning(pop)
+
+void Derived::DoSomething() {
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/client/windows/tests/crash_generation_app/abstract_class.h b/google-breakpad/src/client/windows/tests/crash_generation_app/abstract_class.h
new file mode 100644
index 0000000..e3f2a4f
--- /dev/null
+++ b/google-breakpad/src/client/windows/tests/crash_generation_app/abstract_class.h
@@ -0,0 +1,57 @@
+// Copyright (c) 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef CLIENT_WINDOWS_TESTS_CRASH_GENERATION_APP_ABSTRACT_CLASS_H__
+#define CLIENT_WINDOWS_TESTS_CRASH_GENERATION_APP_ABSTRACT_CLASS_H__
+
+namespace google_breakpad {
+
+// Dummy classes to help generate a pure call violation.
+
+class Derived;
+
+class Base {
+ public:
+  Base(Derived* derived);
+  virtual ~Base();
+  virtual void DoSomething() = 0;
+
+ private:
+  Derived* derived_;
+};
+
+class Derived : public Base {
+ public:
+  Derived();
+  virtual void DoSomething();
+};
+
+}  // namespace google_breakpad
+
+#endif  // CLIENT_WINDOWS_TESTS_CRASH_GENERATION_APP_CRASH_GENERATION_APP_H__
diff --git a/google-breakpad/src/client/windows/tests/crash_generation_app/crash_generation_app.cc b/google-breakpad/src/client/windows/tests/crash_generation_app/crash_generation_app.cc
new file mode 100644
index 0000000..ad395d6
--- /dev/null
+++ b/google-breakpad/src/client/windows/tests/crash_generation_app/crash_generation_app.cc
@@ -0,0 +1,522 @@
+// Copyright (c) 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// crash_generation_app.cpp : Defines the entry point for the application.
+//
+
+#include "client/windows/tests/crash_generation_app/crash_generation_app.h"
+
+#include <windows.h>
+#include <tchar.h>
+
+#include "client/windows/crash_generation/client_info.h"
+#include "client/windows/crash_generation/crash_generation_server.h"
+#include "client/windows/handler/exception_handler.h"
+#include "client/windows/common/ipc_protocol.h"
+
+#include "client/windows/tests/crash_generation_app/abstract_class.h"
+
+namespace google_breakpad {
+
+const int kMaxLoadString = 100;
+const wchar_t kPipeName[] = L"\\\\.\\pipe\\BreakpadCrashServices\\TestServer";
+
+const DWORD kEditBoxStyles = WS_CHILD |
+                             WS_VISIBLE |
+                             WS_VSCROLL |
+                             ES_LEFT |
+                             ES_MULTILINE |
+                             ES_AUTOVSCROLL |
+                             ES_READONLY;
+
+// Maximum length of a line in the edit box.
+const size_t kMaximumLineLength = 256;
+
+// CS to access edit control in a thread safe way.
+static CRITICAL_SECTION* cs_edit = NULL;
+
+// Edit control.
+static HWND client_status_edit_box;
+
+HINSTANCE current_instance;             // Current instance.
+TCHAR title[kMaxLoadString];            // Title bar text.
+TCHAR window_class[kMaxLoadString];     // Main window class name.
+
+ATOM MyRegisterClass(HINSTANCE instance);
+BOOL InitInstance(HINSTANCE, int);
+LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
+INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM);
+
+static int kCustomInfoCount = 2;
+static CustomInfoEntry kCustomInfoEntries[] = {
+    CustomInfoEntry(L"prod", L"CrashTestApp"),
+    CustomInfoEntry(L"ver", L"1.0"),
+};
+
+static ExceptionHandler* handler = NULL;
+static CrashGenerationServer* crash_server = NULL;
+
+// Registers the window class.
+//
+// This function and its usage are only necessary if you want this code
+// to be compatible with Win32 systems prior to the 'RegisterClassEx'
+// function that was added to Windows 95. It is important to call this
+// function so that the application will get 'well formed' small icons
+// associated with it.
+ATOM MyRegisterClass(HINSTANCE instance) {
+  WNDCLASSEX wcex;
+  wcex.cbSize = sizeof(WNDCLASSEX);
+  wcex.style = CS_HREDRAW | CS_VREDRAW;
+  wcex.lpfnWndProc = WndProc;
+  wcex.cbClsExtra = 0;
+  wcex.cbWndExtra = 0;
+  wcex.hInstance = instance;
+  wcex.hIcon = LoadIcon(instance,
+                        MAKEINTRESOURCE(IDI_CRASHGENERATIONAPP));
+  wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
+  wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
+  wcex.lpszMenuName = MAKEINTRESOURCE(IDC_CRASHGENERATIONAPP);
+  wcex.lpszClassName = window_class;
+  wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
+
+  return RegisterClassEx(&wcex);
+}
+
+// Saves instance handle and creates main window
+//
+// In this function, we save the instance handle in a global variable and
+//   create and display the main program window.
+BOOL InitInstance(HINSTANCE instance, int command_show) {
+  current_instance = instance;
+  HWND wnd = CreateWindow(window_class,
+                          title,
+                          WS_OVERLAPPEDWINDOW,
+                          CW_USEDEFAULT,
+                          0,
+                          CW_USEDEFAULT,
+                          0,
+                          NULL,
+                          NULL,
+                          instance,
+                          NULL);
+
+  if (!wnd) {
+    return FALSE;
+  }
+
+  ShowWindow(wnd, command_show);
+  UpdateWindow(wnd);
+
+  return TRUE;
+}
+
+static void AppendTextToEditBox(TCHAR* text) {
+  EnterCriticalSection(cs_edit);
+  SYSTEMTIME current_time;
+  GetLocalTime(&current_time);
+  TCHAR line[kMaximumLineLength];
+  int result = swprintf_s(line,
+                          kMaximumLineLength,
+                          L"[%.2d-%.2d-%.4d %.2d:%.2d:%.2d] %s",
+                          current_time.wMonth,
+                          current_time.wDay,
+                          current_time.wYear,
+                          current_time.wHour,
+                          current_time.wMinute,
+                          current_time.wSecond,
+                          text);
+
+  if (result == -1) {
+    return;
+  }
+
+  int length = GetWindowTextLength(client_status_edit_box);
+  SendMessage(client_status_edit_box,
+              EM_SETSEL,
+              (WPARAM)length,
+              (LPARAM)length);
+  SendMessage(client_status_edit_box,
+              EM_REPLACESEL,
+              (WPARAM)FALSE,
+              (LPARAM)line);
+  LeaveCriticalSection(cs_edit);
+}
+
+static DWORD WINAPI AppendTextWorker(void* context) {
+  TCHAR* text = reinterpret_cast<TCHAR*>(context);
+
+  AppendTextToEditBox(text);
+  delete[] text;
+
+  return 0;
+}
+
+bool ShowDumpResults(const wchar_t* dump_path,
+                     const wchar_t* minidump_id,
+                     void* context,
+                     EXCEPTION_POINTERS* exinfo,
+                     MDRawAssertionInfo* assertion,
+                     bool succeeded) {
+  TCHAR* text = new TCHAR[kMaximumLineLength];
+  text[0] = _T('\0');
+  int result = swprintf_s(text,
+                          kMaximumLineLength,
+                          TEXT("Dump generation request %s\r\n"),
+                          succeeded ? TEXT("succeeded") : TEXT("failed"));
+  if (result == -1) {
+    delete [] text;
+  }
+
+  QueueUserWorkItem(AppendTextWorker, text, WT_EXECUTEDEFAULT);
+  return succeeded;
+}
+
+static void ShowClientConnected(void* context,
+                                const ClientInfo* client_info) {
+  TCHAR* line = new TCHAR[kMaximumLineLength];
+  line[0] = _T('\0');
+  int result = swprintf_s(line,
+                          kMaximumLineLength,
+                          L"Client connected:\t\t%d\r\n",
+                          client_info->pid());
+
+  if (result == -1) {
+    delete[] line;
+    return;
+  }
+
+  QueueUserWorkItem(AppendTextWorker, line, WT_EXECUTEDEFAULT);
+}
+
+static void ShowClientCrashed(void* context,
+                              const ClientInfo* client_info,
+                              const wstring* dump_path) {
+  TCHAR* line = new TCHAR[kMaximumLineLength];
+  line[0] = _T('\0');
+  int result = swprintf_s(line,
+                          kMaximumLineLength,
+                          TEXT("Client requested dump:\t%d\r\n"),
+                          client_info->pid());
+
+  if (result == -1) {
+    delete[] line;
+    return;
+  }
+
+  QueueUserWorkItem(AppendTextWorker, line, WT_EXECUTEDEFAULT);
+
+  CustomClientInfo custom_info = client_info->GetCustomInfo();
+  if (custom_info.count <= 0) {
+    return;
+  }
+
+  wstring str_line;
+  for (size_t i = 0; i < custom_info.count; ++i) {
+    if (i > 0) {
+      str_line += L", ";
+    }
+    str_line += custom_info.entries[i].name;
+    str_line += L": ";
+    str_line += custom_info.entries[i].value;
+  }
+
+  line = new TCHAR[kMaximumLineLength];
+  line[0] = _T('\0');
+  result = swprintf_s(line,
+                      kMaximumLineLength,
+                      L"%s\n",
+                      str_line.c_str());
+  if (result == -1) {
+    delete[] line;
+    return;
+  }
+  QueueUserWorkItem(AppendTextWorker, line, WT_EXECUTEDEFAULT);
+}
+
+static void ShowClientExited(void* context,
+                             const ClientInfo* client_info) {
+  TCHAR* line = new TCHAR[kMaximumLineLength];
+  line[0] = _T('\0');
+  int result = swprintf_s(line,
+                          kMaximumLineLength,
+                          TEXT("Client exited:\t\t%d\r\n"),
+                          client_info->pid());
+
+  if (result == -1) {
+    delete[] line;
+    return;
+  }
+
+  QueueUserWorkItem(AppendTextWorker, line, WT_EXECUTEDEFAULT);
+}
+
+void CrashServerStart() {
+  // Do not create another instance of the server.
+  if (crash_server) {
+    return;
+  }
+
+  std::wstring dump_path = L"C:\\Dumps\\";
+
+  if (_wmkdir(dump_path.c_str()) && (errno != EEXIST)) {
+    MessageBoxW(NULL, L"Unable to create dump directory", L"Dumper", MB_OK);
+    return;
+  }
+
+  crash_server = new CrashGenerationServer(kPipeName,
+                                           NULL,
+                                           ShowClientConnected,
+                                           NULL,
+                                           ShowClientCrashed,
+                                           NULL,
+                                           ShowClientExited,
+                                           NULL,
+                                           NULL,
+                                           NULL,
+                                           true,
+                                           &dump_path);
+
+  if (!crash_server->Start()) {
+    MessageBoxW(NULL, L"Unable to start server", L"Dumper", MB_OK);
+    delete crash_server;
+    crash_server = NULL;
+  }
+}
+
+void CrashServerStop() {
+  delete crash_server;
+  crash_server = NULL;
+}
+
+void DerefZeroCrash() {
+  int* x = 0;
+  *x = 1;
+}
+
+void InvalidParamCrash() {
+  printf(NULL);
+}
+
+void PureCallCrash() {
+  Derived derived;
+}
+
+void RequestDump() {
+  if (!handler->WriteMinidump()) {
+    MessageBoxW(NULL, L"Dump request failed", L"Dumper", MB_OK);
+  }
+  kCustomInfoEntries[1].set_value(L"1.1");
+}
+
+void CleanUp() {
+  if (cs_edit) {
+    DeleteCriticalSection(cs_edit);
+    delete cs_edit;
+  }
+
+  if (handler) {
+    delete handler;
+  }
+
+  if (crash_server) {
+    delete crash_server;
+  }
+}
+
+// Processes messages for the main window.
+//
+// WM_COMMAND - process the application menu.
+// WM_PAINT   - Paint the main window.
+// WM_DESTROY - post a quit message and return.
+LRESULT CALLBACK WndProc(HWND wnd,
+                         UINT message,
+                         WPARAM w_param,
+                         LPARAM l_param) {
+  int message_id;
+  int message_event;
+  PAINTSTRUCT ps;
+  HDC hdc;
+
+  HINSTANCE instance = (HINSTANCE)GetWindowLongPtr(wnd, GWLP_HINSTANCE);
+
+  switch (message) {
+    case WM_COMMAND:
+      // Parse the menu selections.
+      message_id = LOWORD(w_param);
+      message_event = HIWORD(w_param);
+      switch (message_id) {
+        case IDM_ABOUT:
+          DialogBox(current_instance,
+                    MAKEINTRESOURCE(IDD_ABOUTBOX),
+                    wnd,
+                    About);
+          break;
+        case IDM_EXIT:
+          DestroyWindow(wnd);
+          break;
+        case ID_SERVER_START:
+          CrashServerStart();
+          break;
+        case ID_SERVER_STOP:
+          CrashServerStop();
+          break;
+        case ID_CLIENT_DEREFZERO:
+          DerefZeroCrash();
+          break;
+        case ID_CLIENT_INVALIDPARAM:
+          InvalidParamCrash();
+          break;
+        case ID_CLIENT_PURECALL:
+          PureCallCrash();
+          break;
+        case ID_CLIENT_REQUESTEXPLICITDUMP:
+          RequestDump();
+          break;
+        default:
+          return DefWindowProc(wnd, message, w_param, l_param);
+      }
+      break;
+    case WM_CREATE:
+      client_status_edit_box = CreateWindow(TEXT("EDIT"),
+                                            NULL,
+                                            kEditBoxStyles,
+                                            0,
+                                            0,
+                                            0,
+                                            0,
+                                            wnd,
+                                            NULL,
+                                            instance,
+                                            NULL);
+      break;
+    case WM_SIZE:
+      // Make the edit control the size of the window's client area.
+      MoveWindow(client_status_edit_box,
+                 0,
+                 0,
+                 LOWORD(l_param),        // width of client area.
+                 HIWORD(l_param),        // height of client area.
+                 TRUE);                  // repaint window.
+      break;
+    case WM_SETFOCUS:
+      SetFocus(client_status_edit_box);
+      break;
+    case WM_PAINT:
+      hdc = BeginPaint(wnd, &ps);
+      EndPaint(wnd, &ps);
+      break;
+    case WM_DESTROY:
+      CleanUp();
+      PostQuitMessage(0);
+      break;
+    default:
+      return DefWindowProc(wnd, message, w_param, l_param);
+  }
+
+  return 0;
+}
+
+// Message handler for about box.
+INT_PTR CALLBACK About(HWND dlg,
+                       UINT message,
+                       WPARAM w_param,
+                       LPARAM l_param) {
+  UNREFERENCED_PARAMETER(l_param);
+  switch (message) {
+    case WM_INITDIALOG:
+      return (INT_PTR)TRUE;
+
+    case WM_COMMAND:
+      if (LOWORD(w_param) == IDOK || LOWORD(w_param) == IDCANCEL) {
+        EndDialog(dlg, LOWORD(w_param));
+        return (INT_PTR)TRUE;
+      }
+      break;
+  }
+
+  return (INT_PTR)FALSE;
+}
+
+}  // namespace google_breakpad
+
+int APIENTRY _tWinMain(HINSTANCE instance,
+                       HINSTANCE previous_instance,
+                       LPTSTR command_line,
+                       int command_show) {
+  using namespace google_breakpad;
+
+  UNREFERENCED_PARAMETER(previous_instance);
+  UNREFERENCED_PARAMETER(command_line);
+
+  cs_edit = new CRITICAL_SECTION();
+  InitializeCriticalSection(cs_edit);
+
+  CustomClientInfo custom_info = {kCustomInfoEntries, kCustomInfoCount};
+
+  CrashServerStart();
+  // This is needed for CRT to not show dialog for invalid param
+  // failures and instead let the code handle it.
+  _CrtSetReportMode(_CRT_ASSERT, 0);
+  handler = new ExceptionHandler(L"C:\\dumps\\",
+                                 NULL,
+                                 google_breakpad::ShowDumpResults,
+                                 NULL,
+                                 ExceptionHandler::HANDLER_ALL,
+                                 MiniDumpNormal,
+                                 kPipeName,
+                                 &custom_info);
+
+  // Initialize global strings.
+  LoadString(instance, IDS_APP_TITLE, title, kMaxLoadString);
+  LoadString(instance,
+             IDC_CRASHGENERATIONAPP,
+             window_class,
+             kMaxLoadString);
+  MyRegisterClass(instance);
+
+  // Perform application initialization.
+  if (!InitInstance(instance, command_show)) {
+    return FALSE;
+  }
+
+  HACCEL accel_table = LoadAccelerators(
+      instance,
+      MAKEINTRESOURCE(IDC_CRASHGENERATIONAPP));
+
+  // Main message loop.
+  MSG msg;
+  while (GetMessage(&msg, NULL, 0, 0)) {
+    if (!TranslateAccelerator(msg.hwnd, accel_table, &msg)) {
+      TranslateMessage(&msg);
+      DispatchMessage(&msg);
+    }
+  }
+
+  return static_cast<int>(msg.wParam);
+}
diff --git a/google-breakpad/src/client/windows/tests/crash_generation_app/crash_generation_app.gyp b/google-breakpad/src/client/windows/tests/crash_generation_app/crash_generation_app.gyp
new file mode 100644
index 0000000..3ce307d
--- /dev/null
+++ b/google-breakpad/src/client/windows/tests/crash_generation_app/crash_generation_app.gyp
@@ -0,0 +1,63 @@
+# Copyright 2010 Google Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+{
+  'includes': [
+    '../../../../build/common.gypi',
+  ],
+  'targets': [
+    {
+      'target_name': 'crash_generation_app',
+      'type': 'executable',
+      'sources': [
+        'abstract_class.cc',
+        'abstract_class.h',
+        'crash_generation_app.cc',
+        'crash_generation_app.h',
+        'crash_generation_app.ico',
+        'crash_generation_app.rc',
+        'resource.h',
+        'small.ico',
+      ],
+      'libraries': [
+        'user32.lib',
+      ],
+      'dependencies': [
+        '../../breakpad_client.gyp:common',
+        '../../crash_generation/crash_generation.gyp:crash_generation_server',
+        '../../crash_generation/crash_generation.gyp:crash_generation_client',
+        '../../handler/exception_handler.gyp:exception_handler',
+      ],
+      'msvs_settings': {
+        'VCLinkerTool': {
+          'SubSystem': '2',  # Windows Subsystem as opposed to a console app
+        },
+      },
+    }
+  ]
+}
diff --git a/google-breakpad/src/client/windows/tests/crash_generation_app/crash_generation_app.h b/google-breakpad/src/client/windows/tests/crash_generation_app/crash_generation_app.h
new file mode 100644
index 0000000..4d3bb6e
--- /dev/null
+++ b/google-breakpad/src/client/windows/tests/crash_generation_app/crash_generation_app.h
@@ -0,0 +1,35 @@
+// Copyright (c) 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef CLIENT_WINDOWS_TESTS_CRASH_GENERATION_APP_CRASH_GENERATION_APP_H__
+#define CLIENT_WINDOWS_TESTS_CRASH_GENERATION_APP_CRASH_GENERATION_APP_H__
+
+#include "resource.h"
+
+#endif  // CLIENT_WINDOWS_TESTS_CRASH_GENERATION_APP_CRASH_GENERATION_APP_H__
diff --git a/google-breakpad/src/client/windows/tests/crash_generation_app/crash_generation_app.ico b/google-breakpad/src/client/windows/tests/crash_generation_app/crash_generation_app.ico
new file mode 100644
index 0000000..d551aa3
--- /dev/null
+++ b/google-breakpad/src/client/windows/tests/crash_generation_app/crash_generation_app.ico
Binary files differ
diff --git a/google-breakpad/src/client/windows/tests/crash_generation_app/crash_generation_app.rc b/google-breakpad/src/client/windows/tests/crash_generation_app/crash_generation_app.rc
new file mode 100644
index 0000000..a362562
--- /dev/null
+++ b/google-breakpad/src/client/windows/tests/crash_generation_app/crash_generation_app.rc
@@ -0,0 +1,144 @@
+// Microsoft Visual C++ generated resource script.
+//
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#define APSTUDIO_HIDDEN_SYMBOLS
+#include "windows.h"
+#undef APSTUDIO_HIDDEN_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// English (U.S.) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+#endif //_WIN32
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Icon
+//
+
+// Icon with lowest ID value placed first to ensure application icon
+// remains consistent on all systems.
+IDI_CRASHGENERATIONAPP  ICON                    "crash_generation_app.ico"
+IDI_SMALL               ICON                    "small.ico"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Menu
+//
+
+IDC_CRASHGENERATIONAPP MENU 
+BEGIN
+    POPUP "&File"
+    BEGIN
+        MENUITEM "E&xit",                       IDM_EXIT
+    END
+    POPUP "&Server"
+    BEGIN
+        MENUITEM "&Start",                      ID_SERVER_START
+        MENUITEM "S&top",                       ID_SERVER_STOP
+    END
+    POPUP "&Client"
+    BEGIN
+        MENUITEM "&Deref Zero",                 ID_CLIENT_DEREFZERO
+        MENUITEM "&Invalid Param",              ID_CLIENT_INVALIDPARAM
+        MENUITEM "&Pure Call",                  ID_CLIENT_PURECALL
+        MENUITEM "&Request Dump",               ID_CLIENT_REQUESTEXPLICITDUMP
+    END
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Accelerator
+//
+
+IDC_CRASHGENERATIONAPP ACCELERATORS 
+BEGIN
+    "?",            IDM_ABOUT,              ASCII,  ALT
+    "/",            IDM_ABOUT,              ASCII,  ALT
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+IDD_ABOUTBOX DIALOG  22, 17, 230, 75
+STYLE DS_SETFONT | DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+CAPTION "About"
+FONT 8, "System"
+BEGIN
+    ICON            IDI_CRASHGENERATIONAPP,IDC_MYICON,14,9,16,16
+    LTEXT           "CrashGenerationApp Version 1.0",IDC_STATIC,49,10,119,8,SS_NOPREFIX
+    LTEXT           "Copyright (C) 2008",IDC_STATIC,49,20,119,8
+    DEFPUSHBUTTON   "OK",IDOK,195,6,30,11,WS_GROUP
+END
+
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE 
+BEGIN
+    "resource.h\0"
+END
+
+2 TEXTINCLUDE 
+BEGIN
+    "#define APSTUDIO_HIDDEN_SYMBOLS\r\n"
+    "#include ""windows.h""\r\n"
+    "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n"
+    "\0"
+END
+
+3 TEXTINCLUDE 
+BEGIN
+    "\r\n"
+    "\0"
+END
+
+#endif    // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE 
+BEGIN
+    IDS_APP_TITLE           "CrashGenerationApp"
+    IDC_CRASHGENERATIONAPP  "CRASHGENERATIONAPP"
+END
+
+#endif    // English (U.S.) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif    // not APSTUDIO_INVOKED
+
diff --git a/google-breakpad/src/client/windows/tests/crash_generation_app/resource.h b/google-breakpad/src/client/windows/tests/crash_generation_app/resource.h
new file mode 100644
index 0000000..8c7f657
--- /dev/null
+++ b/google-breakpad/src/client/windows/tests/crash_generation_app/resource.h
@@ -0,0 +1,73 @@
+// Copyright (c) 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// PreCompile.h : include file for standard system include files,
+// or project specific include files that are used frequently, but
+// are changed infrequently
+//
+
+#ifndef CLIENT_WINDOWS_TESTS_CRASH_GENERATION_APP_RESOURCE_H__
+#define CLIENT_WINDOWS_TESTS_CRASH_GENERATION_APP_RESOURCE_H__
+
+//{{NO_DEPENDENCIES}}
+// Microsoft Visual C++ generated include file.
+// Used by crash_generation_app.rc
+//
+#define IDC_MYICON                      2
+#define IDD_CRASHGENERATIONAPP_DIALOG   102
+#define IDS_APP_TITLE                   103
+#define IDD_ABOUTBOX                    103
+#define IDM_ABOUT                       104
+#define IDM_EXIT                        105
+#define IDI_CRASHGENERATIONAPP          107
+#define IDI_SMALL                       108
+#define IDC_CRASHGENERATIONAPP          109
+#define IDR_MAINFRAME                   128
+#define ID_SERVER_START                 32771
+#define ID_SERVER_STOP                  32772
+#define ID_CLIENT_INVALIDPARAM          32773
+#define ID_CLIENT_ASSERTFAILURE         32774
+#define ID_CLIENT_DEREFZERO             32775
+#define ID_CLIENT_PURECALL              32777
+#define ID_CLIENT_REQUESTEXPLICITDUMP   32778
+#define IDC_STATIC                      -1
+
+// Next default values for new objects
+// 
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NO_MFC                     1
+#define _APS_NEXT_RESOURCE_VALUE        129
+#define _APS_NEXT_COMMAND_VALUE         32780
+#define _APS_NEXT_CONTROL_VALUE         1000
+#define _APS_NEXT_SYMED_VALUE           110
+#endif
+#endif
+
+#endif  // CLIENT_WINDOWS_TESTS_CRASH_GENERATION_APP_RESOURCE_H__
diff --git a/google-breakpad/src/client/windows/tests/crash_generation_app/small.ico b/google-breakpad/src/client/windows/tests/crash_generation_app/small.ico
new file mode 100644
index 0000000..d551aa3
--- /dev/null
+++ b/google-breakpad/src/client/windows/tests/crash_generation_app/small.ico
Binary files differ
diff --git a/google-breakpad/src/client/windows/unittests/client_tests.gyp b/google-breakpad/src/client/windows/unittests/client_tests.gyp
new file mode 100644
index 0000000..7f9c7a0
--- /dev/null
+++ b/google-breakpad/src/client/windows/unittests/client_tests.gyp
@@ -0,0 +1,79 @@
+# Copyright 2010 Google Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+{
+  'includes': [
+    '../../../build/common.gypi',
+  ],
+  'targets': [
+    {
+      'target_name': 'client_tests',
+      'type': 'executable',
+      'sources': [
+        'exception_handler_test.h',
+        'exception_handler_test.cc',
+        'exception_handler_death_test.cc',
+        'exception_handler_nesting_test.cc',
+        'minidump_test.cc',
+        'dump_analysis.cc',
+        'dump_analysis.h',
+        'crash_generation_server_test.cc'
+      ],
+      'dependencies': [
+        'testing.gyp:gtest',
+        'testing.gyp:gmock',
+        '../breakpad_client.gyp:common',
+        '../crash_generation/crash_generation.gyp:crash_generation_server',
+        '../crash_generation/crash_generation.gyp:crash_generation_client',
+        '../handler/exception_handler.gyp:exception_handler',
+	'processor_bits',
+      ]
+    },
+    {
+      'target_name': 'processor_bits',
+      'type': 'static_library',
+      'include_dirs': [
+        '<(DEPTH)',
+      ],
+      'direct_dependent_settings': {
+        'include_dirs': [
+          '<(DEPTH)',
+        ]
+      },
+      'sources': [
+        '<(DEPTH)/common/string_conversion.cc',
+        '<(DEPTH)/processor/basic_code_modules.cc',
+        '<(DEPTH)/processor/dump_context.cc',
+        '<(DEPTH)/processor/dump_object.cc',
+        '<(DEPTH)/processor/logging.cc',
+        '<(DEPTH)/processor/minidump.cc',
+        '<(DEPTH)/processor/pathname_stripper.cc',
+      ]
+    }
+  ],
+}
diff --git a/google-breakpad/src/client/windows/unittests/crash_generation_server_test.cc b/google-breakpad/src/client/windows/unittests/crash_generation_server_test.cc
new file mode 100644
index 0000000..cf95d43
--- /dev/null
+++ b/google-breakpad/src/client/windows/unittests/crash_generation_server_test.cc
@@ -0,0 +1,306 @@
+// Copyright 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+#include "testing/gtest/include/gtest/gtest.h"
+#include "testing/include/gmock/gmock.h"
+
+#include "client/windows/crash_generation/crash_generation_server.h"
+#include "client/windows/common/ipc_protocol.h"
+
+using testing::_;
+
+namespace {
+
+const wchar_t kPipeName[] =
+  L"\\\\.\\pipe\\CrashGenerationServerTest\\TestCaseServer";
+
+const DWORD kPipeDesiredAccess = FILE_READ_DATA |
+                                 FILE_WRITE_DATA |
+                                 FILE_WRITE_ATTRIBUTES;
+
+const DWORD kPipeFlagsAndAttributes = SECURITY_IDENTIFICATION |
+                                      SECURITY_SQOS_PRESENT;
+
+const DWORD kPipeMode = PIPE_READMODE_MESSAGE;
+
+int kCustomInfoCount = 2;
+
+google_breakpad::CustomInfoEntry kCustomInfoEntries[] = {
+    google_breakpad::CustomInfoEntry(L"prod", L"CrashGenerationServerTest"),
+    google_breakpad::CustomInfoEntry(L"ver", L"1.0"),
+};
+
+class CrashGenerationServerTest : public ::testing::Test {
+ public:
+  CrashGenerationServerTest()
+      : crash_generation_server_(kPipeName,
+                                 NULL,
+                                 CallOnClientConnected, &mock_callbacks_,
+                                 CallOnClientDumpRequested, &mock_callbacks_,
+                                 CallOnClientExited, &mock_callbacks_,
+                                 CallOnClientUploadRequested, &mock_callbacks_,
+                                 false,
+                                 NULL),
+        thread_id_(0),
+        exception_pointers_(NULL) {
+    memset(&assert_info_, 0, sizeof(assert_info_));
+  }
+
+ protected:
+  class MockCrashGenerationServerCallbacks {
+   public:
+    MOCK_METHOD1(OnClientConnected,
+                 void(const google_breakpad::ClientInfo* client_info));
+    MOCK_METHOD2(OnClientDumpRequested,
+                 void(const google_breakpad::ClientInfo* client_info,
+                      const std::wstring* file_path));
+    MOCK_METHOD1(OnClientExited,
+                 void(const google_breakpad::ClientInfo* client_info));
+    MOCK_METHOD1(OnClientUploadRequested,
+                 void(const DWORD crash_id));
+  };
+
+  enum ClientFault {
+    NO_FAULT,
+    CLOSE_AFTER_CONNECT,
+    SEND_INVALID_REGISTRATION,
+    TRUNCATE_REGISTRATION,
+    CLOSE_AFTER_REGISTRATION,
+    RESPONSE_BUFFER_TOO_SMALL,
+    CLOSE_AFTER_RESPONSE,
+    SEND_INVALID_ACK
+  };
+
+  void SetUp() {
+    ASSERT_TRUE(crash_generation_server_.Start());
+  }
+
+  void FaultyClient(ClientFault fault_type) {
+    HANDLE pipe = CreateFile(kPipeName,
+                             kPipeDesiredAccess,
+                             0,
+                             NULL,
+                             OPEN_EXISTING,
+                             kPipeFlagsAndAttributes,
+                             NULL);
+
+    if (pipe == INVALID_HANDLE_VALUE) {
+      ASSERT_EQ(ERROR_PIPE_BUSY, GetLastError());
+
+      // Cannot continue retrying if wait on pipe fails.
+      ASSERT_TRUE(WaitNamedPipe(kPipeName, 500));
+
+      pipe = CreateFile(kPipeName,
+                        kPipeDesiredAccess,
+                        0,
+                        NULL,
+                        OPEN_EXISTING,
+                        kPipeFlagsAndAttributes,
+                        NULL);
+    }
+
+    ASSERT_NE(pipe, INVALID_HANDLE_VALUE);
+
+    DWORD mode = kPipeMode;
+    ASSERT_TRUE(SetNamedPipeHandleState(pipe, &mode, NULL, NULL));
+
+    DoFaultyClient(fault_type, pipe);
+
+    CloseHandle(pipe);
+  }
+
+  void DoTestFault(ClientFault fault) {
+    EXPECT_CALL(mock_callbacks_, OnClientConnected(_)).Times(0);
+    ASSERT_NO_FATAL_FAILURE(FaultyClient(fault));
+    ASSERT_NO_FATAL_FAILURE(FaultyClient(fault));
+    ASSERT_NO_FATAL_FAILURE(FaultyClient(fault));
+
+    EXPECT_CALL(mock_callbacks_, OnClientConnected(_));
+
+    ASSERT_NO_FATAL_FAILURE(FaultyClient(NO_FAULT));
+
+    // Slight hack. The OnClientConnected is only invoked after the ack is
+    // received by the server. At that point, the FaultyClient call has already
+    // returned. The best way to wait until the server is done handling that is
+    // to send one more ping, whose processing will be blocked by delivery of
+    // the OnClientConnected message.
+    ASSERT_NO_FATAL_FAILURE(FaultyClient(CLOSE_AFTER_CONNECT));
+  }
+
+  MockCrashGenerationServerCallbacks mock_callbacks_;
+
+ private:
+  // Depends on the caller to successfully open the pipe before invocation and
+  // to close it immediately afterwards.
+  void DoFaultyClient(ClientFault fault_type, HANDLE pipe) {
+    if (fault_type == CLOSE_AFTER_CONNECT) {
+      return;
+    }
+
+    google_breakpad::CustomClientInfo custom_info = {kCustomInfoEntries,
+                                                     kCustomInfoCount};
+
+    google_breakpad::ProtocolMessage msg(
+      fault_type == SEND_INVALID_REGISTRATION ?
+        google_breakpad::MESSAGE_TAG_NONE :
+        google_breakpad::MESSAGE_TAG_REGISTRATION_REQUEST,
+      GetCurrentProcessId(),
+      MiniDumpNormal,
+      &thread_id_,
+      &exception_pointers_,
+      &assert_info_,
+      custom_info,
+      NULL,
+      NULL,
+      NULL);
+
+    DWORD bytes_count = 0;
+
+    ASSERT_TRUE(WriteFile(pipe,
+                          &msg,
+                          fault_type == TRUNCATE_REGISTRATION ?
+                            sizeof(msg) / 2 : sizeof(msg),
+                          &bytes_count,
+                          NULL));
+
+    if (fault_type == CLOSE_AFTER_REGISTRATION) {
+      return;
+    }
+
+    google_breakpad::ProtocolMessage reply;
+
+    if (!ReadFile(pipe,
+                  &reply,
+                  fault_type == RESPONSE_BUFFER_TOO_SMALL ?
+                    sizeof(google_breakpad::ProtocolMessage) / 2 :
+                    sizeof(google_breakpad::ProtocolMessage),
+                  &bytes_count,
+                  NULL)) {
+      switch (fault_type) {
+        case TRUNCATE_REGISTRATION:
+        case RESPONSE_BUFFER_TOO_SMALL:
+        case SEND_INVALID_REGISTRATION:
+          return;
+
+        default:
+          FAIL() << "Unexpectedly failed to register.";
+      }
+    }
+
+    if (fault_type == CLOSE_AFTER_RESPONSE) {
+      return;
+    }
+
+    google_breakpad::ProtocolMessage ack_msg;
+    ack_msg.tag = google_breakpad::MESSAGE_TAG_REGISTRATION_ACK;
+
+    ASSERT_TRUE(WriteFile(pipe,
+                          &ack_msg,
+                          SEND_INVALID_ACK ?
+                            sizeof(ack_msg) : sizeof(ack_msg) / 2,
+                          &bytes_count,
+                          NULL));
+
+    return;
+  }
+
+  static void CallOnClientConnected(
+    void* context, const google_breakpad::ClientInfo* client_info) {
+    static_cast<MockCrashGenerationServerCallbacks*>(context)->
+      OnClientConnected(client_info);
+  }
+
+  static void CallOnClientDumpRequested(
+    void* context,
+    const google_breakpad::ClientInfo* client_info,
+    const std::wstring* file_path) {
+    static_cast<MockCrashGenerationServerCallbacks*>(context)->
+      OnClientDumpRequested(client_info, file_path);
+  }
+
+  static void CallOnClientExited(
+    void* context, const google_breakpad::ClientInfo* client_info) {
+    static_cast<MockCrashGenerationServerCallbacks*>(context)->
+      OnClientExited(client_info);
+  }
+
+  static void CallOnClientUploadRequested(void* context, const DWORD crash_id) {
+    static_cast<MockCrashGenerationServerCallbacks*>(context)->
+      OnClientUploadRequested(crash_id);
+  }
+
+  DWORD thread_id_;
+  EXCEPTION_POINTERS* exception_pointers_;
+  MDRawAssertionInfo assert_info_;
+
+  google_breakpad::CrashGenerationServer crash_generation_server_;
+};
+
+TEST_F(CrashGenerationServerTest, PingServerTest) {
+  DoTestFault(CLOSE_AFTER_CONNECT);
+}
+
+TEST_F(CrashGenerationServerTest, InvalidRegistration) {
+  DoTestFault(SEND_INVALID_REGISTRATION);
+}
+
+TEST_F(CrashGenerationServerTest, TruncateRegistration) {
+  DoTestFault(TRUNCATE_REGISTRATION);
+}
+
+TEST_F(CrashGenerationServerTest, CloseAfterRegistration) {
+  DoTestFault(CLOSE_AFTER_REGISTRATION);
+}
+
+TEST_F(CrashGenerationServerTest, ResponseBufferTooSmall) {
+  DoTestFault(RESPONSE_BUFFER_TOO_SMALL);
+}
+
+TEST_F(CrashGenerationServerTest, CloseAfterResponse) {
+  DoTestFault(CLOSE_AFTER_RESPONSE);
+}
+
+// It turns out that, as long as you send one byte, the ACK is accepted and
+// registration succeeds.
+TEST_F(CrashGenerationServerTest, SendInvalidAck) {
+  EXPECT_CALL(mock_callbacks_, OnClientConnected(_));
+  ASSERT_NO_FATAL_FAILURE(FaultyClient(SEND_INVALID_ACK));
+
+  // See DoTestFault for an explanation of this line
+  ASSERT_NO_FATAL_FAILURE(FaultyClient(CLOSE_AFTER_CONNECT));
+
+  EXPECT_CALL(mock_callbacks_, OnClientConnected(_));
+  ASSERT_NO_FATAL_FAILURE(FaultyClient(NO_FAULT));
+
+  // See DoTestFault for an explanation of this line
+  ASSERT_NO_FATAL_FAILURE(FaultyClient(CLOSE_AFTER_CONNECT));
+}
+
+}  // anonymous namespace
diff --git a/google-breakpad/src/client/windows/unittests/dump_analysis.cc b/google-breakpad/src/client/windows/unittests/dump_analysis.cc
new file mode 100644
index 0000000..6bf8547
--- /dev/null
+++ b/google-breakpad/src/client/windows/unittests/dump_analysis.cc
@@ -0,0 +1,184 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include <windows.h>
+#include <objbase.h>
+#include <dbghelp.h>
+
+#include "client/windows/unittests/dump_analysis.h"  // NOLINT
+#include "testing/gtest/include/gtest/gtest.h"
+
+DumpAnalysis::~DumpAnalysis() {
+  if (dump_file_view_ != NULL) {
+    EXPECT_TRUE(::UnmapViewOfFile(dump_file_view_));
+    ::CloseHandle(dump_file_mapping_);
+    dump_file_mapping_ = NULL;
+  }
+
+  if (dump_file_handle_ != NULL) {
+    ::CloseHandle(dump_file_handle_);
+    dump_file_handle_ = NULL;
+  }
+}
+
+void DumpAnalysis::EnsureDumpMapped() {
+  if (dump_file_view_ == NULL) {
+    dump_file_handle_ = ::CreateFile(dump_file_.c_str(),
+      GENERIC_READ,
+      0,
+      NULL,
+      OPEN_EXISTING,
+      0,
+      NULL);
+    ASSERT_TRUE(dump_file_handle_ != NULL);
+    ASSERT_TRUE(dump_file_mapping_ == NULL);
+
+    dump_file_mapping_ = ::CreateFileMapping(dump_file_handle_,
+      NULL,
+      PAGE_READONLY,
+      0,
+      0,
+      NULL);
+    ASSERT_TRUE(dump_file_mapping_ != NULL);
+
+    dump_file_view_ = ::MapViewOfFile(dump_file_mapping_,
+      FILE_MAP_READ,
+      0,
+      0,
+      0);
+    ASSERT_TRUE(dump_file_view_ != NULL);
+  }
+}
+
+bool DumpAnalysis::HasTebs() const {
+  MINIDUMP_THREAD_LIST* thread_list = NULL;
+  size_t thread_list_size = GetStream(ThreadListStream, &thread_list);
+
+  if (thread_list_size > 0 && thread_list != NULL) {
+    for (ULONG i = 0; i < thread_list->NumberOfThreads; ++i) {
+      if (!HasMemory(thread_list->Threads[i].Teb))
+        return false;
+    }
+
+    return true;
+  }
+
+  // No thread list, no TEB info.
+  return false;
+}
+
+bool DumpAnalysis::HasPeb() const {
+  MINIDUMP_THREAD_LIST* thread_list = NULL;
+  size_t thread_list_size = GetStream(ThreadListStream, &thread_list);
+
+  if (thread_list_size > 0 && thread_list != NULL &&
+      thread_list->NumberOfThreads > 0) {
+    FakeTEB* teb = NULL;
+    if (!HasMemory(thread_list->Threads[0].Teb, &teb))
+      return false;
+
+    return HasMemory(teb->peb);
+  }
+
+  return false;
+}
+
+bool DumpAnalysis::HasStream(ULONG stream_number) const {
+  void* stream = NULL;
+  size_t stream_size = GetStreamImpl(stream_number, &stream);
+  return stream_size > 0 && stream != NULL;
+}
+
+size_t DumpAnalysis::GetStreamImpl(ULONG stream_number, void** stream) const {
+  MINIDUMP_DIRECTORY* directory = NULL;
+  ULONG memory_list_size = 0;
+  BOOL ret = ::MiniDumpReadDumpStream(dump_file_view_,
+                                      stream_number,
+                                      &directory,
+                                      stream,
+                                      &memory_list_size);
+
+  return ret ? memory_list_size : 0;
+}
+
+bool DumpAnalysis::HasMemoryImpl(const void *addr_in, size_t structuresize,
+                                 void **structure) const {
+  uintptr_t address = reinterpret_cast<uintptr_t>(addr_in);
+  MINIDUMP_MEMORY_LIST* memory_list = NULL;
+  size_t memory_list_size = GetStream(MemoryListStream, &memory_list);
+  if (memory_list_size > 0 && memory_list != NULL) {
+    for (ULONG i = 0; i < memory_list->NumberOfMemoryRanges; ++i) {
+      MINIDUMP_MEMORY_DESCRIPTOR& descr = memory_list->MemoryRanges[i];
+      const uintptr_t range_start =
+          static_cast<uintptr_t>(descr.StartOfMemoryRange);
+      uintptr_t range_end = range_start + descr.Memory.DataSize;
+
+      if (address >= range_start &&
+          address + structuresize < range_end) {
+        // The start address falls in the range, and the end address is
+        // in bounds, return a pointer to the structure if requested.
+        if (structure != NULL)
+          *structure = RVA_TO_ADDR(dump_file_view_, descr.Memory.Rva);
+
+        return true;
+      }
+    }
+  }
+
+  // We didn't find the range in a MINIDUMP_MEMORY_LIST, so maybe this
+  // is a full dump using MINIDUMP_MEMORY64_LIST with all the memory at the
+  // end of the dump file.
+  MINIDUMP_MEMORY64_LIST* memory64_list = NULL;
+  memory_list_size = GetStream(Memory64ListStream, &memory64_list);
+  if (memory_list_size > 0 && memory64_list != NULL) {
+    // Keep track of where the current descriptor maps to.
+    RVA64 curr_rva = memory64_list->BaseRva;
+    for (ULONG i = 0; i < memory64_list->NumberOfMemoryRanges; ++i) {
+      MINIDUMP_MEMORY_DESCRIPTOR64& descr = memory64_list->MemoryRanges[i];
+      uintptr_t range_start =
+          static_cast<uintptr_t>(descr.StartOfMemoryRange);
+      uintptr_t range_end = range_start + static_cast<size_t>(descr.DataSize);
+
+      if (address >= range_start &&
+          address + structuresize < range_end) {
+        // The start address falls in the range, and the end address is
+        // in bounds, return a pointer to the structure if requested.
+        if (structure != NULL)
+          *structure = RVA_TO_ADDR(dump_file_view_, curr_rva);
+
+        return true;
+      }
+
+      // Advance the current RVA.
+      curr_rva += descr.DataSize;
+    }
+  }
+
+  return false;
+}
diff --git a/google-breakpad/src/client/windows/unittests/dump_analysis.h b/google-breakpad/src/client/windows/unittests/dump_analysis.h
new file mode 100644
index 0000000..6cef48d
--- /dev/null
+++ b/google-breakpad/src/client/windows/unittests/dump_analysis.h
@@ -0,0 +1,102 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef CLIENT_WINDOWS_UNITTESTS_DUMP_ANALYSIS_H_
+#define CLIENT_WINDOWS_UNITTESTS_DUMP_ANALYSIS_H_
+
+#include "client/windows/crash_generation/minidump_generator.h"
+
+// Convenience to get to the PEB pointer in a TEB.
+struct FakeTEB {
+  char dummy[0x30];
+  void* peb;
+};
+
+class DumpAnalysis {
+ public:
+  explicit DumpAnalysis(const std::wstring& file_path)
+      : dump_file_(file_path), dump_file_view_(NULL), dump_file_mapping_(NULL),
+        dump_file_handle_(NULL) {
+    EnsureDumpMapped();
+  }
+  ~DumpAnalysis();
+
+  bool HasStream(ULONG stream_number) const;
+
+  // This is template to keep type safety in the front, but we end up casting
+  // to void** inside the implementation to pass the pointer to Win32. So
+  // casting here is considered safe.
+  template <class StreamType>
+  size_t GetStream(ULONG stream_number, StreamType** stream) const {
+    return GetStreamImpl(stream_number, reinterpret_cast<void**>(stream));
+  }
+
+  bool HasTebs() const;
+  bool HasPeb() const;
+  bool HasMemory(ULONG64 address) const {
+    return HasMemory<BYTE>(address, NULL);
+  }
+
+  bool HasMemory(const void* address) const {
+    return HasMemory<BYTE>(address, NULL);
+  }
+
+  template <class StructureType>
+  bool HasMemory(ULONG64 address, StructureType** structure = NULL) const {
+    // We can't cope with 64 bit addresses for now.
+    if (address > 0xFFFFFFFFUL)
+      return false;
+
+    return HasMemory(reinterpret_cast<void*>(address), structure);
+  }
+
+  template <class StructureType>
+  bool HasMemory(const void* addr_in, StructureType** structure = NULL) const {
+    return HasMemoryImpl(addr_in, sizeof(StructureType),
+                             reinterpret_cast<void**>(structure));
+  }
+
+ protected:
+  void EnsureDumpMapped();
+
+  HANDLE dump_file_mapping_;
+  HANDLE dump_file_handle_;
+  void* dump_file_view_;
+  std::wstring dump_file_;
+
+ private:
+  // This is the implementation of GetStream<>.
+  size_t GetStreamImpl(ULONG stream_number, void** stream) const;
+
+  // This is the implementation of HasMemory<>.
+  bool HasMemoryImpl(const void* addr_in, size_t pointersize,
+                     void** structure) const;
+};
+
+#endif  // CLIENT_WINDOWS_UNITTESTS_DUMP_ANALYSIS_H_
diff --git a/google-breakpad/src/client/windows/unittests/exception_handler_death_test.cc b/google-breakpad/src/client/windows/unittests/exception_handler_death_test.cc
new file mode 100644
index 0000000..079ca3d
--- /dev/null
+++ b/google-breakpad/src/client/windows/unittests/exception_handler_death_test.cc
@@ -0,0 +1,582 @@
+// Copyright 2009, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include <windows.h>
+#include <dbghelp.h>
+#include <strsafe.h>
+#include <objbase.h>
+#include <shellapi.h>
+
+#include <string>
+
+#include "breakpad_googletest_includes.h"
+#include "client/windows/crash_generation/crash_generation_server.h"
+#include "client/windows/handler/exception_handler.h"
+#include "client/windows/unittests/exception_handler_test.h"
+#include "common/windows/string_utils-inl.h"
+#include "google_breakpad/processor/minidump.h"
+
+namespace {
+
+using std::wstring;
+using namespace google_breakpad;
+
+const wchar_t kPipeName[] = L"\\\\.\\pipe\\BreakpadCrashTest\\TestCaseServer";
+const char kSuccessIndicator[] = "success";
+const char kFailureIndicator[] = "failure";
+
+// Utility function to test for a path's existence.
+BOOL DoesPathExist(const TCHAR *path_name);
+
+enum OutOfProcGuarantee {
+  OUT_OF_PROC_GUARANTEED,
+  OUT_OF_PROC_BEST_EFFORT,
+};
+
+class ExceptionHandlerDeathTest : public ::testing::Test {
+ protected:
+  // Member variable for each test that they can use
+  // for temporary storage.
+  TCHAR temp_path_[MAX_PATH];
+  // Actually constructs a temp path name.
+  virtual void SetUp();
+  // A helper method that tests can use to crash.
+  void DoCrashAccessViolation(const OutOfProcGuarantee out_of_proc_guarantee);
+  void DoCrashPureVirtualCall();
+};
+
+void ExceptionHandlerDeathTest::SetUp() {
+  const ::testing::TestInfo* const test_info =
+    ::testing::UnitTest::GetInstance()->current_test_info();
+  TCHAR temp_path[MAX_PATH] = { '\0' };
+  TCHAR test_name_wide[MAX_PATH] = { '\0' };
+  // We want the temporary directory to be what the OS returns
+  // to us, + the test case name.
+  GetTempPath(MAX_PATH, temp_path);
+  // The test case name is exposed as a c-style string,
+  // convert it to a wchar_t string.
+  int dwRet = MultiByteToWideChar(CP_ACP, 0, test_info->name(),
+                                  strlen(test_info->name()),
+                                  test_name_wide,
+                                  MAX_PATH);
+  if (!dwRet) {
+    assert(false);
+  }
+  StringCchPrintfW(temp_path_, MAX_PATH, L"%s%s", temp_path, test_name_wide);
+  CreateDirectory(temp_path_, NULL);
+}
+
+BOOL DoesPathExist(const TCHAR *path_name) {
+  DWORD flags = GetFileAttributes(path_name);
+  if (flags == INVALID_FILE_ATTRIBUTES) {
+    return FALSE;
+  }
+  return TRUE;
+}
+
+bool MinidumpWrittenCallback(const wchar_t* dump_path,
+                             const wchar_t* minidump_id,
+                             void* context,
+                             EXCEPTION_POINTERS* exinfo,
+                             MDRawAssertionInfo* assertion,
+                             bool succeeded) {
+  if (succeeded && DoesPathExist(dump_path)) {
+    fprintf(stderr, kSuccessIndicator);
+  } else {
+    fprintf(stderr, kFailureIndicator);
+  }
+  // If we don't flush, the output doesn't get sent before
+  // this process dies.
+  fflush(stderr);
+  return succeeded;
+}
+
+TEST_F(ExceptionHandlerDeathTest, InProcTest) {
+  // For the in-proc test, we just need to instantiate an exception
+  // handler in in-proc mode, and crash.   Since the entire test is
+  // reexecuted in the child process, we don't have to worry about
+  // the semantics of the exception handler being inherited/not
+  // inherited across CreateProcess().
+  ASSERT_TRUE(DoesPathExist(temp_path_));
+  scoped_ptr<google_breakpad::ExceptionHandler> exc(
+      new google_breakpad::ExceptionHandler(
+          temp_path_,
+          NULL,
+          &MinidumpWrittenCallback,
+          NULL,
+          google_breakpad::ExceptionHandler::HANDLER_ALL));
+
+  // Disable GTest SEH handler
+  testing::DisableExceptionHandlerInScope disable_exception_handler;
+
+  int *i = NULL;
+  ASSERT_DEATH((*i)++, kSuccessIndicator);
+}
+
+static bool gDumpCallbackCalled = false;
+
+void clientDumpCallback(void *dump_context,
+                        const google_breakpad::ClientInfo *client_info,
+                        const std::wstring *dump_path) {
+  gDumpCallbackCalled = true;
+}
+
+void ExceptionHandlerDeathTest::DoCrashAccessViolation(
+    const OutOfProcGuarantee out_of_proc_guarantee) {
+  scoped_ptr<google_breakpad::ExceptionHandler> exc;
+
+  if (out_of_proc_guarantee == OUT_OF_PROC_GUARANTEED) {
+    google_breakpad::CrashGenerationClient *client =
+        new google_breakpad::CrashGenerationClient(kPipeName,
+                                                   MiniDumpNormal,
+                                                   NULL);  // custom_info
+    ASSERT_TRUE(client->Register());
+    exc.reset(new google_breakpad::ExceptionHandler(
+        temp_path_,
+        NULL,   // filter
+        NULL,   // callback
+        NULL,   // callback_context
+        google_breakpad::ExceptionHandler::HANDLER_ALL,
+        client));
+  } else {
+    ASSERT_TRUE(out_of_proc_guarantee == OUT_OF_PROC_BEST_EFFORT);
+    exc.reset(new google_breakpad::ExceptionHandler(
+        temp_path_,
+        NULL,   // filter
+        NULL,   // callback
+        NULL,   // callback_context
+        google_breakpad::ExceptionHandler::HANDLER_ALL,
+        MiniDumpNormal,
+        kPipeName,
+        NULL));  // custom_info
+  }
+
+  // Disable GTest SEH handler
+  testing::DisableExceptionHandlerInScope disable_exception_handler;
+
+  // Although this is executing in the child process of the death test,
+  // if it's not true we'll still get an error rather than the crash
+  // being expected.
+  ASSERT_TRUE(exc->IsOutOfProcess());
+  int *i = NULL;
+  printf("%d\n", (*i)++);
+}
+
+TEST_F(ExceptionHandlerDeathTest, OutOfProcTest) {
+  // We can take advantage of a detail of google test here to save some
+  // complexity in testing: when you do a death test, it actually forks.
+  // So we can make the main test harness the crash generation server,
+  // and call ASSERT_DEATH on a NULL dereference, it to expecting test
+  // the out of process scenario, since it's happening in a different
+  // process!  This is different from the above because, above, we pass
+  // a NULL pipe name, and we also don't start a crash generation server.
+
+  ASSERT_TRUE(DoesPathExist(temp_path_));
+  std::wstring dump_path(temp_path_);
+  google_breakpad::CrashGenerationServer server(
+      kPipeName, NULL, NULL, NULL, &clientDumpCallback, NULL, NULL, NULL, NULL,
+      NULL, true, &dump_path);
+
+  // This HAS to be EXPECT_, because when this test case is executed in the
+  // child process, the server registration will fail due to the named pipe
+  // being the same.
+  EXPECT_TRUE(server.Start());
+  gDumpCallbackCalled = false;
+  ASSERT_DEATH(this->DoCrashAccessViolation(OUT_OF_PROC_BEST_EFFORT), "");
+  EXPECT_TRUE(gDumpCallbackCalled);
+}
+
+TEST_F(ExceptionHandlerDeathTest, OutOfProcGuaranteedTest) {
+  // This is similar to the previous test (OutOfProcTest).  The only difference
+  // is that in this test, the crash generation client is created and registered
+  // with the crash generation server outside of the ExceptionHandler
+  // constructor which allows breakpad users to opt out of the default
+  // in-process dump generation when the registration with the crash generation
+  // server fails.
+
+  ASSERT_TRUE(DoesPathExist(temp_path_));
+  std::wstring dump_path(temp_path_);
+  google_breakpad::CrashGenerationServer server(
+      kPipeName, NULL, NULL, NULL, &clientDumpCallback, NULL, NULL, NULL, NULL,
+      NULL, true, &dump_path);
+
+  // This HAS to be EXPECT_, because when this test case is executed in the
+  // child process, the server registration will fail due to the named pipe
+  // being the same.
+  EXPECT_TRUE(server.Start());
+  gDumpCallbackCalled = false;
+  ASSERT_DEATH(this->DoCrashAccessViolation(OUT_OF_PROC_GUARANTEED), "");
+  EXPECT_TRUE(gDumpCallbackCalled);
+}
+
+TEST_F(ExceptionHandlerDeathTest, InvalidParameterTest) {
+  using google_breakpad::ExceptionHandler;
+
+  ASSERT_TRUE(DoesPathExist(temp_path_));
+  ExceptionHandler handler(temp_path_, NULL, NULL, NULL,
+                           ExceptionHandler::HANDLER_INVALID_PARAMETER);
+
+  // Disable the message box for assertions
+  _CrtSetReportMode(_CRT_ASSERT, 0);
+
+  // Call with a bad argument. The invalid parameter will be swallowed
+  // and a dump will be generated, the process will exit(0).
+  ASSERT_EXIT(printf(NULL), ::testing::ExitedWithCode(0), "");
+}
+
+
+struct PureVirtualCallBase {
+  PureVirtualCallBase() {
+    // We have to reinterpret so the linker doesn't get confused because the
+    // method isn't defined.
+    reinterpret_cast<PureVirtualCallBase*>(this)->PureFunction();
+  }
+  virtual ~PureVirtualCallBase() {}
+  virtual void PureFunction() const = 0;
+};
+struct PureVirtualCall : public PureVirtualCallBase {
+  PureVirtualCall() { PureFunction(); }
+  virtual void PureFunction() const {}
+};
+
+void ExceptionHandlerDeathTest::DoCrashPureVirtualCall() {
+  PureVirtualCall instance;
+}
+
+TEST_F(ExceptionHandlerDeathTest, PureVirtualCallTest) {
+  using google_breakpad::ExceptionHandler;
+
+  ASSERT_TRUE(DoesPathExist(temp_path_));
+  ExceptionHandler handler(temp_path_, NULL, NULL, NULL,
+                           ExceptionHandler::HANDLER_PURECALL);
+
+  // Disable the message box for assertions
+  _CrtSetReportMode(_CRT_ASSERT, 0);
+
+  // Calls a pure virtual function.
+  EXPECT_EXIT(DoCrashPureVirtualCall(), ::testing::ExitedWithCode(0), "");
+}
+
+wstring find_minidump_in_directory(const wstring &directory) {
+  wstring search_path = directory + L"\\*";
+  WIN32_FIND_DATA find_data;
+  HANDLE find_handle = FindFirstFileW(search_path.c_str(), &find_data);
+  if (find_handle == INVALID_HANDLE_VALUE)
+    return wstring();
+
+  wstring filename;
+  do {
+    const wchar_t extension[] = L".dmp";
+    const int extension_length = sizeof(extension) / sizeof(extension[0]) - 1;
+    const int filename_length = wcslen(find_data.cFileName);
+    if (filename_length > extension_length &&
+    wcsncmp(extension,
+            find_data.cFileName + filename_length - extension_length,
+            extension_length) == 0) {
+      filename = directory + L"\\" + find_data.cFileName;
+      break;
+    }
+  } while (FindNextFile(find_handle, &find_data));
+  FindClose(find_handle);
+  return filename;
+}
+
+#ifndef ADDRESS_SANITIZER
+
+TEST_F(ExceptionHandlerDeathTest, InstructionPointerMemory) {
+  ASSERT_TRUE(DoesPathExist(temp_path_));
+  scoped_ptr<google_breakpad::ExceptionHandler> exc(
+      new google_breakpad::ExceptionHandler(
+          temp_path_,
+          NULL,
+          NULL,
+          NULL,
+          google_breakpad::ExceptionHandler::HANDLER_ALL));
+
+  // Disable GTest SEH handler
+  testing::DisableExceptionHandlerInScope disable_exception_handler;
+
+  // Get some executable memory.
+  const uint32_t kMemorySize = 256;  // bytes
+  const int kOffset = kMemorySize / 2;
+  // This crashes with SIGILL on x86/x86-64/arm.
+  const unsigned char instructions[] = { 0xff, 0xff, 0xff, 0xff };
+  char* memory = reinterpret_cast<char*>(VirtualAlloc(NULL,
+                                                      kMemorySize,
+                                                      MEM_COMMIT | MEM_RESERVE,
+                                                      PAGE_EXECUTE_READWRITE));
+  ASSERT_TRUE(memory);
+
+  // Write some instructions that will crash. Put them
+  // in the middle of the block of memory, because the
+  // minidump should contain 128 bytes on either side of the
+  // instruction pointer.
+  memcpy(memory + kOffset, instructions, sizeof(instructions));
+
+  // Now execute the instructions, which should crash.
+  typedef void (*void_function)(void);
+  void_function memory_function =
+      reinterpret_cast<void_function>(memory + kOffset);
+  ASSERT_DEATH(memory_function(), "");
+
+  // free the memory.
+  VirtualFree(memory, 0, MEM_RELEASE);
+
+  // Verify that the resulting minidump contains the memory around the IP
+  wstring minidump_filename_wide = find_minidump_in_directory(temp_path_);
+  ASSERT_FALSE(minidump_filename_wide.empty());
+  string minidump_filename;
+  ASSERT_TRUE(WindowsStringUtils::safe_wcstombs(minidump_filename_wide,
+                                                &minidump_filename));
+
+  // Read the minidump. Locate the exception record and the
+  // memory list, and then ensure that there is a memory region
+  // in the memory list that covers the instruction pointer from
+  // the exception record.
+  {
+    Minidump minidump(minidump_filename);
+    ASSERT_TRUE(minidump.Read());
+
+    MinidumpException* exception = minidump.GetException();
+    MinidumpMemoryList* memory_list = minidump.GetMemoryList();
+    ASSERT_TRUE(exception);
+    ASSERT_TRUE(memory_list);
+    ASSERT_LT((unsigned)0, memory_list->region_count());
+
+    MinidumpContext* context = exception->GetContext();
+    ASSERT_TRUE(context);
+
+    uint64_t instruction_pointer;
+    ASSERT_TRUE(context->GetInstructionPointer(&instruction_pointer));
+
+    MinidumpMemoryRegion* region =
+        memory_list->GetMemoryRegionForAddress(instruction_pointer);
+    ASSERT_TRUE(region);
+
+    EXPECT_EQ(kMemorySize, region->GetSize());
+    const uint8_t* bytes = region->GetMemory();
+    ASSERT_TRUE(bytes);
+
+    uint8_t prefix_bytes[kOffset];
+    uint8_t suffix_bytes[kMemorySize - kOffset - sizeof(instructions)];
+    memset(prefix_bytes, 0, sizeof(prefix_bytes));
+    memset(suffix_bytes, 0, sizeof(suffix_bytes));
+    EXPECT_EQ(0, memcmp(bytes, prefix_bytes, sizeof(prefix_bytes)));
+    EXPECT_EQ(0, memcmp(bytes + kOffset, instructions, sizeof(instructions)));
+    EXPECT_EQ(0, memcmp(bytes + kOffset + sizeof(instructions),
+                        suffix_bytes, sizeof(suffix_bytes)));
+  }
+
+  DeleteFileW(minidump_filename_wide.c_str());
+}
+
+TEST_F(ExceptionHandlerDeathTest, InstructionPointerMemoryMinBound) {
+  ASSERT_TRUE(DoesPathExist(temp_path_));
+  scoped_ptr<google_breakpad::ExceptionHandler> exc(
+      new google_breakpad::ExceptionHandler(
+          temp_path_,
+          NULL,
+          NULL,
+          NULL,
+          google_breakpad::ExceptionHandler::HANDLER_ALL));
+
+  // Disable GTest SEH handler
+  testing::DisableExceptionHandlerInScope disable_exception_handler;
+
+  SYSTEM_INFO sSysInfo;         // Useful information about the system
+  GetSystemInfo(&sSysInfo);     // Initialize the structure.
+
+  const uint32_t kMemorySize = 256;  // bytes
+  const DWORD kPageSize = sSysInfo.dwPageSize;
+  const int kOffset = 0;
+  // This crashes with SIGILL on x86/x86-64/arm.
+  const unsigned char instructions[] = { 0xff, 0xff, 0xff, 0xff };
+  // Get some executable memory. Specifically, reserve two pages,
+  // but only commit the second.
+  char* all_memory = reinterpret_cast<char*>(VirtualAlloc(NULL,
+                                                          kPageSize * 2,
+                                                          MEM_RESERVE,
+                                                          PAGE_NOACCESS));
+  ASSERT_TRUE(all_memory);
+  char* memory = all_memory + kPageSize;
+  ASSERT_TRUE(VirtualAlloc(memory, kPageSize,
+                           MEM_COMMIT, PAGE_EXECUTE_READWRITE));
+
+  // Write some instructions that will crash. Put them
+  // in the middle of the block of memory, because the
+  // minidump should contain 128 bytes on either side of the
+  // instruction pointer.
+  memcpy(memory + kOffset, instructions, sizeof(instructions));
+
+  // Now execute the instructions, which should crash.
+  typedef void (*void_function)(void);
+  void_function memory_function =
+      reinterpret_cast<void_function>(memory + kOffset);
+  ASSERT_DEATH(memory_function(), "");
+
+  // free the memory.
+  VirtualFree(memory, 0, MEM_RELEASE);
+
+  // Verify that the resulting minidump contains the memory around the IP
+  wstring minidump_filename_wide = find_minidump_in_directory(temp_path_);
+  ASSERT_FALSE(minidump_filename_wide.empty());
+  string minidump_filename;
+  ASSERT_TRUE(WindowsStringUtils::safe_wcstombs(minidump_filename_wide,
+                                                &minidump_filename));
+
+  // Read the minidump. Locate the exception record and the
+  // memory list, and then ensure that there is a memory region
+  // in the memory list that covers the instruction pointer from
+  // the exception record.
+  {
+    Minidump minidump(minidump_filename);
+    ASSERT_TRUE(minidump.Read());
+
+    MinidumpException* exception = minidump.GetException();
+    MinidumpMemoryList* memory_list = minidump.GetMemoryList();
+    ASSERT_TRUE(exception);
+    ASSERT_TRUE(memory_list);
+    ASSERT_LT((unsigned)0, memory_list->region_count());
+
+    MinidumpContext* context = exception->GetContext();
+    ASSERT_TRUE(context);
+
+    uint64_t instruction_pointer;
+    ASSERT_TRUE(context->GetInstructionPointer(&instruction_pointer));
+
+    MinidumpMemoryRegion* region =
+        memory_list->GetMemoryRegionForAddress(instruction_pointer);
+    ASSERT_TRUE(region);
+
+    EXPECT_EQ(kMemorySize / 2, region->GetSize());
+    const uint8_t* bytes = region->GetMemory();
+    ASSERT_TRUE(bytes);
+
+    uint8_t suffix_bytes[kMemorySize / 2 - sizeof(instructions)];
+    memset(suffix_bytes, 0, sizeof(suffix_bytes));
+    EXPECT_TRUE(memcmp(bytes + kOffset,
+                       instructions, sizeof(instructions)) == 0);
+    EXPECT_TRUE(memcmp(bytes + kOffset + sizeof(instructions),
+                       suffix_bytes, sizeof(suffix_bytes)) == 0);
+  }
+
+  DeleteFileW(minidump_filename_wide.c_str());
+}
+
+TEST_F(ExceptionHandlerDeathTest, InstructionPointerMemoryMaxBound) {
+  ASSERT_TRUE(DoesPathExist(temp_path_));
+  scoped_ptr<google_breakpad::ExceptionHandler> exc(
+      new google_breakpad::ExceptionHandler(
+          temp_path_,
+          NULL,
+          NULL,
+          NULL,
+          google_breakpad::ExceptionHandler::HANDLER_ALL));
+
+  // Disable GTest SEH handler
+  testing::DisableExceptionHandlerInScope disable_exception_handler;
+
+  SYSTEM_INFO sSysInfo;         // Useful information about the system
+  GetSystemInfo(&sSysInfo);     // Initialize the structure.
+
+  const DWORD kPageSize = sSysInfo.dwPageSize;
+  // This crashes with SIGILL on x86/x86-64/arm.
+  const unsigned char instructions[] = { 0xff, 0xff, 0xff, 0xff };
+  const int kOffset = kPageSize - sizeof(instructions);
+  // Get some executable memory. Specifically, reserve two pages,
+  // but only commit the first.
+  char* memory = reinterpret_cast<char*>(VirtualAlloc(NULL,
+                                                      kPageSize * 2,
+                                                      MEM_RESERVE,
+                                                      PAGE_NOACCESS));
+  ASSERT_TRUE(memory);
+  ASSERT_TRUE(VirtualAlloc(memory, kPageSize,
+                           MEM_COMMIT, PAGE_EXECUTE_READWRITE));
+
+  // Write some instructions that will crash.
+  memcpy(memory + kOffset, instructions, sizeof(instructions));
+
+  // Now execute the instructions, which should crash.
+  typedef void (*void_function)(void);
+  void_function memory_function =
+      reinterpret_cast<void_function>(memory + kOffset);
+  ASSERT_DEATH(memory_function(), "");
+
+  // free the memory.
+  VirtualFree(memory, 0, MEM_RELEASE);
+
+  // Verify that the resulting minidump contains the memory around the IP
+  wstring minidump_filename_wide = find_minidump_in_directory(temp_path_);
+  ASSERT_FALSE(minidump_filename_wide.empty());
+  string minidump_filename;
+  ASSERT_TRUE(WindowsStringUtils::safe_wcstombs(minidump_filename_wide,
+                                                &minidump_filename));
+
+  // Read the minidump. Locate the exception record and the
+  // memory list, and then ensure that there is a memory region
+  // in the memory list that covers the instruction pointer from
+  // the exception record.
+  {
+    Minidump minidump(minidump_filename);
+    ASSERT_TRUE(minidump.Read());
+
+    MinidumpException* exception = minidump.GetException();
+    MinidumpMemoryList* memory_list = minidump.GetMemoryList();
+    ASSERT_TRUE(exception);
+    ASSERT_TRUE(memory_list);
+    ASSERT_LT((unsigned)0, memory_list->region_count());
+
+    MinidumpContext* context = exception->GetContext();
+    ASSERT_TRUE(context);
+
+    uint64_t instruction_pointer;
+    ASSERT_TRUE(context->GetInstructionPointer(&instruction_pointer));
+
+    MinidumpMemoryRegion* region =
+        memory_list->GetMemoryRegionForAddress(instruction_pointer);
+    ASSERT_TRUE(region);
+
+    const size_t kPrefixSize = 128;  // bytes
+    EXPECT_EQ(kPrefixSize + sizeof(instructions), region->GetSize());
+    const uint8_t* bytes = region->GetMemory();
+    ASSERT_TRUE(bytes);
+
+    uint8_t prefix_bytes[kPrefixSize];
+    memset(prefix_bytes, 0, sizeof(prefix_bytes));
+    EXPECT_EQ(0, memcmp(bytes, prefix_bytes, sizeof(prefix_bytes)));
+    EXPECT_EQ(0, memcmp(bytes + kPrefixSize,
+                        instructions, sizeof(instructions)));
+  }
+
+  DeleteFileW(minidump_filename_wide.c_str());
+}
+
+#endif  // !ADDRESS_SANITIZER
+
+}  // namespace
diff --git a/google-breakpad/src/client/windows/unittests/exception_handler_nesting_test.cc b/google-breakpad/src/client/windows/unittests/exception_handler_nesting_test.cc
new file mode 100644
index 0000000..3ae1d7c
--- /dev/null
+++ b/google-breakpad/src/client/windows/unittests/exception_handler_nesting_test.cc
@@ -0,0 +1,327 @@
+// Copyright 2012, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include <windows.h>
+
+#include <string>
+
+#include "breakpad_googletest_includes.h"
+#include "client/windows/handler/exception_handler.h"
+#include "client/windows/unittests/exception_handler_test.h"
+
+namespace {
+
+const char kFoo[] = "foo";
+const char kBar[] = "bar";
+
+const char kStartOfLine[] = "^";
+const char kEndOfLine[] = "$";
+
+const char kFilterReturnsTrue[] = "filter_returns_true";
+const char kFilterReturnsFalse[] = "filter_returns_false";
+
+const char kCallbackReturnsTrue[] = "callback_returns_true";
+const char kCallbackReturnsFalse[] = "callback_returns_false";
+
+bool DoesPathExist(const wchar_t *path_name) {
+  DWORD flags = GetFileAttributes(path_name);
+  if (flags == INVALID_FILE_ATTRIBUTES) {
+    return false;
+  }
+  return true;
+}
+
+// A callback function to run before Breakpad performs any substantial
+// processing of an exception.  A FilterCallback is called before writing
+// a minidump.  context is the parameter supplied by the user as
+// callback_context when the handler was created.  exinfo points to the
+// exception record, if any; assertion points to assertion information,
+// if any.
+//
+// If a FilterCallback returns true, Breakpad will continue processing,
+// attempting to write a minidump.  If a FilterCallback returns false,
+// Breakpad will immediately report the exception as unhandled without
+// writing a minidump, allowing another handler the opportunity to handle it.
+template <bool filter_return_value>
+bool CrashHandlerFilter(void* context,
+                        EXCEPTION_POINTERS* exinfo,
+                        MDRawAssertionInfo* assertion) {
+  if (filter_return_value) {
+    fprintf(stderr, kFilterReturnsTrue);
+  } else {
+    fprintf(stderr, kFilterReturnsFalse);
+  }
+  fflush(stderr);
+
+  return filter_return_value;
+}
+
+// A callback function to run after the minidump has been written.
+// minidump_id is a unique id for the dump, so the minidump
+// file is <dump_path>\<minidump_id>.dmp.  context is the parameter supplied
+// by the user as callback_context when the handler was created.  exinfo
+// points to the exception record, or NULL if no exception occurred.
+// succeeded indicates whether a minidump file was successfully written.
+// assertion points to information about an assertion if the handler was
+// invoked by an assertion.
+//
+// If an exception occurred and the callback returns true, Breakpad will treat
+// the exception as fully-handled, suppressing any other handlers from being
+// notified of the exception.  If the callback returns false, Breakpad will
+// treat the exception as unhandled, and allow another handler to handle it.
+// If there are no other handlers, Breakpad will report the exception to the
+// system as unhandled, allowing a debugger or native crash dialog the
+// opportunity to handle the exception.  Most callback implementations
+// should normally return the value of |succeeded|, or when they wish to
+// not report an exception of handled, false.  Callbacks will rarely want to
+// return true directly (unless |succeeded| is true).
+//
+// For out-of-process dump generation, dump path and minidump ID will always
+// be NULL. In case of out-of-process dump generation, the dump path and
+// minidump id are controlled by the server process and are not communicated
+// back to the crashing process.
+template <bool callback_return_value>
+bool MinidumpWrittenCallback(const wchar_t* dump_path,
+                             const wchar_t* minidump_id,
+                             void* context,
+                             EXCEPTION_POINTERS* exinfo,
+                             MDRawAssertionInfo* assertion,
+                             bool succeeded) {
+  bool rv = false;
+  if (callback_return_value &&
+      succeeded &&
+      DoesPathExist(dump_path)) {
+    rv = true;
+    fprintf(stderr, kCallbackReturnsTrue);
+  } else {
+    fprintf(stderr, kCallbackReturnsFalse);
+  }
+  fflush(stderr);
+
+  return rv;
+}
+
+
+void DoCrash(const char *message) {
+  if (message) {
+    fprintf(stderr, "%s", message);
+    fflush(stderr);
+  }
+  int *i = NULL;
+  (*i)++;
+
+  ASSERT_TRUE(false);
+}
+
+void InstallExceptionHandlerAndCrash(bool install_filter,
+                                     bool filter_return_value,
+                                     bool install_callback,
+                                     bool callback_return_value) {
+  wchar_t temp_path[MAX_PATH] = { '\0' };
+  GetTempPath(MAX_PATH, temp_path);
+
+  ASSERT_TRUE(DoesPathExist(temp_path));
+  google_breakpad::ExceptionHandler exc(
+      temp_path,
+      install_filter ?
+        (filter_return_value ?
+          &CrashHandlerFilter<true> :
+          &CrashHandlerFilter<false>) :
+        NULL,
+      install_callback ?
+        (callback_return_value ?
+          &MinidumpWrittenCallback<true> :
+          &MinidumpWrittenCallback<false>) :
+        NULL,
+      NULL,  // callback_context
+      google_breakpad::ExceptionHandler::HANDLER_EXCEPTION);
+
+  // Disable GTest SEH handler
+  testing::DisableExceptionHandlerInScope disable_exception_handler;
+
+  DoCrash(NULL);
+}
+
+TEST(AssertDeathSanity, Simple) {
+  ASSERT_DEATH(DoCrash(NULL), "");
+}
+
+TEST(AssertDeathSanity, Regex) {
+  ASSERT_DEATH(DoCrash(kFoo),
+    std::string(kStartOfLine) +
+      std::string(kFoo) +
+      std::string(kEndOfLine));
+
+  ASSERT_DEATH(DoCrash(kBar),
+    std::string(kStartOfLine) +
+      std::string(kBar) +
+      std::string(kEndOfLine));
+}
+
+TEST(ExceptionHandlerCallbacks, FilterTrue_No_Callback) {
+  ASSERT_DEATH(
+    InstallExceptionHandlerAndCrash(true,    // install_filter
+                                    true,    // filter_return_value
+                                    false,   // install_callback
+                                    false),  // callback_return_value
+    std::string(kStartOfLine) +
+      std::string(kFilterReturnsTrue) +
+      std::string(kEndOfLine));
+}
+
+TEST(ExceptionHandlerCallbacks, FilterTrue_Callback) {
+  ASSERT_DEATH(
+    InstallExceptionHandlerAndCrash(true,    // install_filter
+                                    true,    // filter_return_value
+                                    true,    // install_callback
+                                    false),  // callback_return_value
+    std::string(kStartOfLine) +
+      std::string(kFilterReturnsTrue) +
+      std::string(kCallbackReturnsFalse) +
+      std::string(kEndOfLine));
+}
+
+TEST(ExceptionHandlerCallbacks, FilterFalse_No_Callback) {
+  ASSERT_DEATH(
+    InstallExceptionHandlerAndCrash(true,    // install_filter
+                                    false,   // filter_return_value
+                                    false,   // install_callback
+                                    false),  // callback_return_value
+    std::string(kStartOfLine) +
+      std::string(kFilterReturnsFalse) +
+      std::string(kEndOfLine));
+}
+
+// Callback shouldn't be executed when filter returns false
+TEST(ExceptionHandlerCallbacks, FilterFalse_Callback) {
+  ASSERT_DEATH(
+    InstallExceptionHandlerAndCrash(true,    // install_filter
+                                    false,   // filter_return_value
+                                    true,    // install_callback
+                                    false),  // callback_return_value
+    std::string(kStartOfLine) +
+      std::string(kFilterReturnsFalse) +
+      std::string(kEndOfLine));
+}
+
+TEST(ExceptionHandlerCallbacks, No_Filter_No_Callback) {
+  ASSERT_DEATH(
+    InstallExceptionHandlerAndCrash(false,   // install_filter
+                                    true,    // filter_return_value
+                                    false,   // install_callback
+                                    false),  // callback_return_value
+    std::string(kStartOfLine) +
+      std::string(kEndOfLine));
+}
+
+TEST(ExceptionHandlerCallbacks, No_Filter_Callback) {
+  ASSERT_DEATH(
+    InstallExceptionHandlerAndCrash(false,   // install_filter
+                                    true,    // filter_return_value
+                                    true,    // install_callback
+                                    false),  // callback_return_value
+    std::string(kStartOfLine) +
+      std::string(kCallbackReturnsFalse) +
+      std::string(kEndOfLine));
+}
+
+
+TEST(ExceptionHandlerNesting, Skip_From_Inner_Filter) {
+  wchar_t temp_path[MAX_PATH] = { '\0' };
+  GetTempPath(MAX_PATH, temp_path);
+
+  ASSERT_TRUE(DoesPathExist(temp_path));
+  google_breakpad::ExceptionHandler exc(
+      temp_path,
+      &CrashHandlerFilter<true>,
+      &MinidumpWrittenCallback<false>,
+      NULL,  // callback_context
+      google_breakpad::ExceptionHandler::HANDLER_EXCEPTION);
+
+  ASSERT_DEATH(
+    InstallExceptionHandlerAndCrash(true,   // install_filter
+                                    false,  // filter_return_value
+                                    true,   // install_callback
+                                    true),  // callback_return_value
+    std::string(kStartOfLine) +
+      std::string(kFilterReturnsFalse) +    // inner filter
+      std::string(kFilterReturnsTrue) +     // outer filter
+      std::string(kCallbackReturnsFalse) +  // outer callback
+      std::string(kEndOfLine));
+}
+
+TEST(ExceptionHandlerNesting, Skip_From_Inner_Callback) {
+  wchar_t temp_path[MAX_PATH] = { '\0' };
+  GetTempPath(MAX_PATH, temp_path);
+
+  ASSERT_TRUE(DoesPathExist(temp_path));
+  google_breakpad::ExceptionHandler exc(
+      temp_path,
+      &CrashHandlerFilter<true>,
+      &MinidumpWrittenCallback<false>,
+      NULL,  // callback_context
+      google_breakpad::ExceptionHandler::HANDLER_EXCEPTION);
+
+  ASSERT_DEATH(
+    InstallExceptionHandlerAndCrash(true,    // install_filter
+                                    true,    // filter_return_value
+                                    true,    // install_callback
+                                    false),  // callback_return_value
+    std::string(kStartOfLine) +
+      std::string(kFilterReturnsTrue) +      // inner filter
+      std::string(kCallbackReturnsFalse) +   // inner callback
+      std::string(kFilterReturnsTrue) +      // outer filter
+      std::string(kCallbackReturnsFalse) +   // outer callback
+      std::string(kEndOfLine));
+}
+
+TEST(ExceptionHandlerNesting, Handled_By_Inner_Handler) {
+  wchar_t temp_path[MAX_PATH] = { '\0' };
+  GetTempPath(MAX_PATH, temp_path);
+
+  ASSERT_TRUE(DoesPathExist(temp_path));
+  google_breakpad::ExceptionHandler exc(
+      temp_path,
+      &CrashHandlerFilter<true>,
+      &MinidumpWrittenCallback<true>,
+      NULL,  // callback_context
+      google_breakpad::ExceptionHandler::HANDLER_EXCEPTION);
+
+  ASSERT_DEATH(
+    InstallExceptionHandlerAndCrash(true,   // install_filter
+                                    true,   // filter_return_value
+                                    true,   // install_callback
+                                    true),  // callback_return_value
+    std::string(kStartOfLine) +
+      std::string(kFilterReturnsTrue) +    // inner filter
+      std::string(kCallbackReturnsTrue) +  // inner callback
+      std::string(kEndOfLine));
+}
+
+}  // namespace
diff --git a/google-breakpad/src/client/windows/unittests/exception_handler_test.cc b/google-breakpad/src/client/windows/unittests/exception_handler_test.cc
new file mode 100644
index 0000000..5527532
--- /dev/null
+++ b/google-breakpad/src/client/windows/unittests/exception_handler_test.cc
@@ -0,0 +1,501 @@
+// Copyright 2009, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include "client/windows/unittests/exception_handler_test.h"
+
+#include <windows.h>
+#include <dbghelp.h>
+#include <strsafe.h>
+#include <objbase.h>
+#include <shellapi.h>
+
+#include <string>
+
+#include "breakpad_googletest_includes.h"
+#include "client/windows/crash_generation/crash_generation_server.h"
+#include "client/windows/handler/exception_handler.h"
+#include "client/windows/unittests/dump_analysis.h"  // NOLINT
+#include "common/windows/string_utils-inl.h"
+#include "google_breakpad/processor/minidump.h"
+
+namespace testing {
+
+DisableExceptionHandlerInScope::DisableExceptionHandlerInScope() {
+  catch_exceptions_ = GTEST_FLAG(catch_exceptions);
+  GTEST_FLAG(catch_exceptions) = false;
+}
+
+DisableExceptionHandlerInScope::~DisableExceptionHandlerInScope() {
+  GTEST_FLAG(catch_exceptions) = catch_exceptions_;
+}
+
+}  // namespace testing
+
+namespace {
+
+using std::wstring;
+using namespace google_breakpad;
+
+const wchar_t kPipeName[] = L"\\\\.\\pipe\\BreakpadCrashTest\\TestCaseServer";
+const char kSuccessIndicator[] = "success";
+const char kFailureIndicator[] = "failure";
+
+const MINIDUMP_TYPE kFullDumpType = static_cast<MINIDUMP_TYPE>(
+    MiniDumpWithFullMemory |  // Full memory from process.
+    MiniDumpWithProcessThreadData |  // Get PEB and TEB.
+    MiniDumpWithHandleData);  // Get all handle information.
+
+class ExceptionHandlerTest : public ::testing::Test {
+ protected:
+  // Member variable for each test that they can use
+  // for temporary storage.
+  TCHAR temp_path_[MAX_PATH];
+
+  // Actually constructs a temp path name.
+  virtual void SetUp();
+
+  // Deletes temporary files.
+  virtual void TearDown();
+
+  void DoCrashInvalidParameter();
+  void DoCrashPureVirtualCall();
+
+  // Utility function to test for a path's existence.
+  static BOOL DoesPathExist(const TCHAR *path_name);
+
+  // Client callback.
+  static void ClientDumpCallback(
+      void *dump_context,
+      const google_breakpad::ClientInfo *client_info,
+      const std::wstring *dump_path);
+
+  static bool DumpCallback(const wchar_t* dump_path,
+                           const wchar_t* minidump_id,
+                           void* context,
+                           EXCEPTION_POINTERS* exinfo,
+                           MDRawAssertionInfo* assertion,
+                           bool succeeded);
+
+  static std::wstring dump_file;
+  static std::wstring full_dump_file;
+};
+
+std::wstring ExceptionHandlerTest::dump_file;
+std::wstring ExceptionHandlerTest::full_dump_file;
+
+void ExceptionHandlerTest::SetUp() {
+  const ::testing::TestInfo* const test_info =
+    ::testing::UnitTest::GetInstance()->current_test_info();
+  TCHAR temp_path[MAX_PATH] = { '\0' };
+  TCHAR test_name_wide[MAX_PATH] = { '\0' };
+  // We want the temporary directory to be what the OS returns
+  // to us, + the test case name.
+  GetTempPath(MAX_PATH, temp_path);
+  // THe test case name is exposed to use as a c-style string,
+  // But we might be working in UNICODE here on Windows.
+  int dwRet = MultiByteToWideChar(CP_ACP, 0, test_info->name(),
+                                  strlen(test_info->name()),
+                                  test_name_wide,
+                                  MAX_PATH);
+  if (!dwRet) {
+    assert(false);
+  }
+  StringCchPrintfW(temp_path_, MAX_PATH, L"%s%s", temp_path, test_name_wide);
+  CreateDirectory(temp_path_, NULL);
+}
+
+void ExceptionHandlerTest::TearDown() {
+  if (!dump_file.empty()) {
+    ::DeleteFile(dump_file.c_str());
+    dump_file = L"";
+  }
+  if (!full_dump_file.empty()) {
+    ::DeleteFile(full_dump_file.c_str());
+    full_dump_file = L"";
+  }
+}
+
+BOOL ExceptionHandlerTest::DoesPathExist(const TCHAR *path_name) {
+  DWORD flags = GetFileAttributes(path_name);
+  if (flags == INVALID_FILE_ATTRIBUTES) {
+    return FALSE;
+  }
+  return TRUE;
+}
+
+// static
+void ExceptionHandlerTest::ClientDumpCallback(
+    void *dump_context,
+    const google_breakpad::ClientInfo *client_info,
+    const wstring *dump_path) {
+  dump_file = *dump_path;
+  // Create the full dump file name from the dump path.
+  full_dump_file = dump_file.substr(0, dump_file.length() - 4) + L"-full.dmp";
+}
+
+// static
+bool ExceptionHandlerTest::DumpCallback(const wchar_t* dump_path,
+                    const wchar_t* minidump_id,
+                    void* context,
+                    EXCEPTION_POINTERS* exinfo,
+                    MDRawAssertionInfo* assertion,
+                    bool succeeded) {
+  dump_file = dump_path;
+  dump_file += L"\\";
+  dump_file += minidump_id;
+  dump_file += L".dmp";
+    return succeeded;
+}
+
+void ExceptionHandlerTest::DoCrashInvalidParameter() {
+  google_breakpad::ExceptionHandler *exc =
+      new google_breakpad::ExceptionHandler(
+          temp_path_, NULL, NULL, NULL,
+          google_breakpad::ExceptionHandler::HANDLER_INVALID_PARAMETER,
+          kFullDumpType, kPipeName, NULL);
+
+  // Disable the message box for assertions
+  _CrtSetReportMode(_CRT_ASSERT, 0);
+
+  // Although this is executing in the child process of the death test,
+  // if it's not true we'll still get an error rather than the crash
+  // being expected.
+  ASSERT_TRUE(exc->IsOutOfProcess());
+  printf(NULL);
+}
+
+
+struct PureVirtualCallBase {
+  PureVirtualCallBase() {
+    // We have to reinterpret so the linker doesn't get confused because the
+    // method isn't defined.
+    reinterpret_cast<PureVirtualCallBase*>(this)->PureFunction();
+  }
+  virtual ~PureVirtualCallBase() {}
+  virtual void PureFunction() const = 0;
+};
+struct PureVirtualCall : public PureVirtualCallBase {
+  PureVirtualCall() { PureFunction(); }
+  virtual void PureFunction() const {}
+};
+
+void ExceptionHandlerTest::DoCrashPureVirtualCall() {
+  google_breakpad::ExceptionHandler *exc =
+      new google_breakpad::ExceptionHandler(
+          temp_path_, NULL, NULL, NULL,
+          google_breakpad::ExceptionHandler::HANDLER_PURECALL,
+          kFullDumpType, kPipeName, NULL);
+
+  // Disable the message box for assertions
+  _CrtSetReportMode(_CRT_ASSERT, 0);
+
+  // Although this is executing in the child process of the death test,
+  // if it's not true we'll still get an error rather than the crash
+  // being expected.
+  ASSERT_TRUE(exc->IsOutOfProcess());
+
+  // Create a new frame to ensure PureVirtualCall is not optimized to some
+  // other line in this function.
+  {
+    PureVirtualCall instance;
+  }
+}
+
+// This test validates that the minidump is written correctly.
+TEST_F(ExceptionHandlerTest, InvalidParameterMiniDumpTest) {
+  ASSERT_TRUE(DoesPathExist(temp_path_));
+
+  // Call with a bad argument
+  ASSERT_TRUE(DoesPathExist(temp_path_));
+  wstring dump_path(temp_path_);
+  google_breakpad::CrashGenerationServer server(
+      kPipeName, NULL, NULL, NULL, ClientDumpCallback, NULL, NULL, NULL, NULL,
+      NULL, true, &dump_path);
+
+  ASSERT_TRUE(dump_file.empty() && full_dump_file.empty());
+
+  // This HAS to be EXPECT_, because when this test case is executed in the
+  // child process, the server registration will fail due to the named pipe
+  // being the same.
+  EXPECT_TRUE(server.Start());
+  EXPECT_EXIT(DoCrashInvalidParameter(), ::testing::ExitedWithCode(0), "");
+  ASSERT_TRUE(!dump_file.empty() && !full_dump_file.empty());
+  ASSERT_TRUE(DoesPathExist(dump_file.c_str()));
+
+  // Verify the dump for infos.
+  DumpAnalysis mini(dump_file);
+  DumpAnalysis full(full_dump_file);
+
+  // The dump should have all of these streams.
+  EXPECT_TRUE(mini.HasStream(ThreadListStream));
+  EXPECT_TRUE(full.HasStream(ThreadListStream));
+  EXPECT_TRUE(mini.HasStream(ModuleListStream));
+  EXPECT_TRUE(full.HasStream(ModuleListStream));
+  EXPECT_TRUE(mini.HasStream(ExceptionStream));
+  EXPECT_TRUE(full.HasStream(ExceptionStream));
+  EXPECT_TRUE(mini.HasStream(SystemInfoStream));
+  EXPECT_TRUE(full.HasStream(SystemInfoStream));
+  EXPECT_TRUE(mini.HasStream(MiscInfoStream));
+  EXPECT_TRUE(full.HasStream(MiscInfoStream));
+  EXPECT_TRUE(mini.HasStream(HandleDataStream));
+  EXPECT_TRUE(full.HasStream(HandleDataStream));
+
+  // We expect PEB and TEBs in this dump.
+  EXPECT_TRUE(mini.HasTebs() || full.HasTebs());
+  EXPECT_TRUE(mini.HasPeb() || full.HasPeb());
+
+  // Minidump should have a memory listing, but no 64-bit memory.
+  EXPECT_TRUE(mini.HasStream(MemoryListStream));
+  EXPECT_FALSE(mini.HasStream(Memory64ListStream));
+
+  EXPECT_FALSE(full.HasStream(MemoryListStream));
+  EXPECT_TRUE(full.HasStream(Memory64ListStream));
+
+  // This is the only place we don't use OR because we want both not
+  // to have the streams.
+  EXPECT_FALSE(mini.HasStream(ThreadExListStream));
+  EXPECT_FALSE(full.HasStream(ThreadExListStream));
+  EXPECT_FALSE(mini.HasStream(CommentStreamA));
+  EXPECT_FALSE(full.HasStream(CommentStreamA));
+  EXPECT_FALSE(mini.HasStream(CommentStreamW));
+  EXPECT_FALSE(full.HasStream(CommentStreamW));
+  EXPECT_FALSE(mini.HasStream(FunctionTableStream));
+  EXPECT_FALSE(full.HasStream(FunctionTableStream));
+  EXPECT_FALSE(mini.HasStream(MemoryInfoListStream));
+  EXPECT_FALSE(full.HasStream(MemoryInfoListStream));
+  EXPECT_FALSE(mini.HasStream(ThreadInfoListStream));
+  EXPECT_FALSE(full.HasStream(ThreadInfoListStream));
+  EXPECT_FALSE(mini.HasStream(HandleOperationListStream));
+  EXPECT_FALSE(full.HasStream(HandleOperationListStream));
+  EXPECT_FALSE(mini.HasStream(TokenStream));
+  EXPECT_FALSE(full.HasStream(TokenStream));
+}
+
+
+// This test validates that the minidump is written correctly.
+TEST_F(ExceptionHandlerTest, PureVirtualCallMiniDumpTest) {
+  ASSERT_TRUE(DoesPathExist(temp_path_));
+
+  // Call with a bad argument
+  ASSERT_TRUE(DoesPathExist(temp_path_));
+  wstring dump_path(temp_path_);
+  google_breakpad::CrashGenerationServer server(
+      kPipeName, NULL, NULL, NULL, ClientDumpCallback, NULL, NULL, NULL, NULL,
+      NULL, true, &dump_path);
+
+  ASSERT_TRUE(dump_file.empty() && full_dump_file.empty());
+
+  // This HAS to be EXPECT_, because when this test case is executed in the
+  // child process, the server registration will fail due to the named pipe
+  // being the same.
+  EXPECT_TRUE(server.Start());
+  EXPECT_EXIT(DoCrashPureVirtualCall(), ::testing::ExitedWithCode(0), "");
+  ASSERT_TRUE(!dump_file.empty() && !full_dump_file.empty());
+  ASSERT_TRUE(DoesPathExist(dump_file.c_str()));
+
+  // Verify the dump for infos.
+  DumpAnalysis mini(dump_file);
+  DumpAnalysis full(full_dump_file);
+
+  // The dump should have all of these streams.
+  EXPECT_TRUE(mini.HasStream(ThreadListStream));
+  EXPECT_TRUE(full.HasStream(ThreadListStream));
+  EXPECT_TRUE(mini.HasStream(ModuleListStream));
+  EXPECT_TRUE(full.HasStream(ModuleListStream));
+  EXPECT_TRUE(mini.HasStream(ExceptionStream));
+  EXPECT_TRUE(full.HasStream(ExceptionStream));
+  EXPECT_TRUE(mini.HasStream(SystemInfoStream));
+  EXPECT_TRUE(full.HasStream(SystemInfoStream));
+  EXPECT_TRUE(mini.HasStream(MiscInfoStream));
+  EXPECT_TRUE(full.HasStream(MiscInfoStream));
+  EXPECT_TRUE(mini.HasStream(HandleDataStream));
+  EXPECT_TRUE(full.HasStream(HandleDataStream));
+
+  // We expect PEB and TEBs in this dump.
+  EXPECT_TRUE(mini.HasTebs() || full.HasTebs());
+  EXPECT_TRUE(mini.HasPeb() || full.HasPeb());
+
+  // Minidump should have a memory listing, but no 64-bit memory.
+  EXPECT_TRUE(mini.HasStream(MemoryListStream));
+  EXPECT_FALSE(mini.HasStream(Memory64ListStream));
+
+  EXPECT_FALSE(full.HasStream(MemoryListStream));
+  EXPECT_TRUE(full.HasStream(Memory64ListStream));
+
+  // This is the only place we don't use OR because we want both not
+  // to have the streams.
+  EXPECT_FALSE(mini.HasStream(ThreadExListStream));
+  EXPECT_FALSE(full.HasStream(ThreadExListStream));
+  EXPECT_FALSE(mini.HasStream(CommentStreamA));
+  EXPECT_FALSE(full.HasStream(CommentStreamA));
+  EXPECT_FALSE(mini.HasStream(CommentStreamW));
+  EXPECT_FALSE(full.HasStream(CommentStreamW));
+  EXPECT_FALSE(mini.HasStream(FunctionTableStream));
+  EXPECT_FALSE(full.HasStream(FunctionTableStream));
+  EXPECT_FALSE(mini.HasStream(MemoryInfoListStream));
+  EXPECT_FALSE(full.HasStream(MemoryInfoListStream));
+  EXPECT_FALSE(mini.HasStream(ThreadInfoListStream));
+  EXPECT_FALSE(full.HasStream(ThreadInfoListStream));
+  EXPECT_FALSE(mini.HasStream(HandleOperationListStream));
+  EXPECT_FALSE(full.HasStream(HandleOperationListStream));
+  EXPECT_FALSE(mini.HasStream(TokenStream));
+  EXPECT_FALSE(full.HasStream(TokenStream));
+}
+
+// Test that writing a minidump produces a valid minidump containing
+// some expected structures.
+TEST_F(ExceptionHandlerTest, WriteMinidumpTest) {
+  ExceptionHandler handler(temp_path_,
+                           NULL,
+                           DumpCallback,
+                           NULL,
+                           ExceptionHandler::HANDLER_ALL);
+
+  // Disable GTest SEH handler
+  testing::DisableExceptionHandlerInScope disable_exception_handler;
+
+  ASSERT_TRUE(handler.WriteMinidump());
+  ASSERT_FALSE(dump_file.empty());
+
+  string minidump_filename;
+  ASSERT_TRUE(WindowsStringUtils::safe_wcstombs(dump_file,
+                                                &minidump_filename));
+
+  // Read the minidump and verify some info.
+  Minidump minidump(minidump_filename);
+  ASSERT_TRUE(minidump.Read());
+  // TODO(ted): more comprehensive tests...
+}
+
+// Test that an additional memory region can be included in the minidump.
+TEST_F(ExceptionHandlerTest, AdditionalMemory) {
+  SYSTEM_INFO si;
+  GetSystemInfo(&si);
+  const uint32_t kMemorySize = si.dwPageSize;
+
+  // Get some heap memory.
+  uint8_t* memory = new uint8_t[kMemorySize];
+  const uintptr_t kMemoryAddress = reinterpret_cast<uintptr_t>(memory);
+  ASSERT_TRUE(memory);
+
+  // Stick some data into the memory so the contents can be verified.
+  for (uint32_t i = 0; i < kMemorySize; ++i) {
+    memory[i] = i % 255;
+  }
+
+  ExceptionHandler handler(temp_path_,
+                           NULL,
+                           DumpCallback,
+                           NULL,
+                           ExceptionHandler::HANDLER_ALL);
+
+  // Disable GTest SEH handler
+  testing::DisableExceptionHandlerInScope disable_exception_handler;
+
+  // Add the memory region to the list of memory to be included.
+  handler.RegisterAppMemory(memory, kMemorySize);
+  ASSERT_TRUE(handler.WriteMinidump());
+  ASSERT_FALSE(dump_file.empty());
+
+  string minidump_filename;
+  ASSERT_TRUE(WindowsStringUtils::safe_wcstombs(dump_file,
+                                                &minidump_filename));
+
+  // Read the minidump. Ensure that the memory region is present
+  Minidump minidump(minidump_filename);
+  ASSERT_TRUE(minidump.Read());
+
+  MinidumpMemoryList* dump_memory_list = minidump.GetMemoryList();
+  ASSERT_TRUE(dump_memory_list);
+  const MinidumpMemoryRegion* region =
+    dump_memory_list->GetMemoryRegionForAddress(kMemoryAddress);
+  ASSERT_TRUE(region);
+
+  EXPECT_EQ(kMemoryAddress, region->GetBase());
+  EXPECT_EQ(kMemorySize, region->GetSize());
+
+  // Verify memory contents.
+  EXPECT_EQ(0, memcmp(region->GetMemory(), memory, kMemorySize));
+
+  delete[] memory;
+}
+
+// Test that a memory region that was previously registered
+// can be unregistered.
+TEST_F(ExceptionHandlerTest, AdditionalMemoryRemove) {
+  SYSTEM_INFO si;
+  GetSystemInfo(&si);
+  const uint32_t kMemorySize = si.dwPageSize;
+
+  // Get some heap memory.
+  uint8_t* memory = new uint8_t[kMemorySize];
+  const uintptr_t kMemoryAddress = reinterpret_cast<uintptr_t>(memory);
+  ASSERT_TRUE(memory);
+
+  // Stick some data into the memory so the contents can be verified.
+  for (uint32_t i = 0; i < kMemorySize; ++i) {
+    memory[i] = i % 255;
+  }
+
+  ExceptionHandler handler(temp_path_,
+                           NULL,
+                           DumpCallback,
+                           NULL,
+                           ExceptionHandler::HANDLER_ALL);
+
+  // Disable GTest SEH handler
+  testing::DisableExceptionHandlerInScope disable_exception_handler;
+
+  // Add the memory region to the list of memory to be included.
+  handler.RegisterAppMemory(memory, kMemorySize);
+
+  // ...and then remove it
+  handler.UnregisterAppMemory(memory);
+
+  ASSERT_TRUE(handler.WriteMinidump());
+  ASSERT_FALSE(dump_file.empty());
+
+  string minidump_filename;
+  ASSERT_TRUE(WindowsStringUtils::safe_wcstombs(dump_file,
+                                                &minidump_filename));
+
+  // Read the minidump. Ensure that the memory region is not present.
+  Minidump minidump(minidump_filename);
+  ASSERT_TRUE(minidump.Read());
+
+  MinidumpMemoryList* dump_memory_list = minidump.GetMemoryList();
+  ASSERT_TRUE(dump_memory_list);
+  const MinidumpMemoryRegion* region =
+    dump_memory_list->GetMemoryRegionForAddress(kMemoryAddress);
+  EXPECT_FALSE(region);
+
+  delete[] memory;
+}
+
+}  // namespace
diff --git a/google-breakpad/src/client/windows/unittests/exception_handler_test.h b/google-breakpad/src/client/windows/unittests/exception_handler_test.h
new file mode 100644
index 0000000..ef973e5
--- /dev/null
+++ b/google-breakpad/src/client/windows/unittests/exception_handler_test.h
@@ -0,0 +1,61 @@
+// Copyright 2012, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef CLIENT_WINDOWS_UNITTESTS_EXCEPTION_HANDLER_TEST_H_
+#define CLIENT_WINDOWS_UNITTESTS_EXCEPTION_HANDLER_TEST_H_
+
+namespace testing {
+
+// By default, GTest (on Windows) installs a SEH filter (and a handler) before
+// starting to run all the tests in order to avoid test interruptions is some
+// of the tests are crashing.  Unfortunately, this functionality prevents the
+// execution to reach the UnhandledExceptionFilter installed by Google-Breakpad
+// ExceptionHandler so in order to test the Google-Breakpad exception handling
+// code the exception handling done by GTest must be disabled.
+// Usage:
+//
+//  google_breakpad::ExceptionHandler exc(...);
+//
+//  // Disable GTest SEH handler
+//  testing::DisableExceptionHandlerInScope disable_exception_handler;
+//  ...
+//  ASSERT_DEATH( ... some crash ...);
+//
+class DisableExceptionHandlerInScope {
+ public:
+  DisableExceptionHandlerInScope();
+  ~DisableExceptionHandlerInScope();
+
+ private:
+  bool catch_exceptions_;
+};
+
+}  // namespace testing
+
+#endif  // CLIENT_WINDOWS_UNITTESTS_EXCEPTION_HANDLER_TEST_H_
diff --git a/google-breakpad/src/client/windows/unittests/minidump_test.cc b/google-breakpad/src/client/windows/unittests/minidump_test.cc
new file mode 100644
index 0000000..8d2d726
--- /dev/null
+++ b/google-breakpad/src/client/windows/unittests/minidump_test.cc
@@ -0,0 +1,333 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include <windows.h>
+#include <objbase.h>
+#include <dbghelp.h>
+
+#include "client/windows/crash_generation/minidump_generator.h"
+#include "client/windows/unittests/dump_analysis.h"  // NOLINT
+
+#include "gtest/gtest.h"
+
+namespace {
+
+// Minidump with stacks, PEB, TEB, and unloaded module list.
+const MINIDUMP_TYPE kSmallDumpType = static_cast<MINIDUMP_TYPE>(
+    MiniDumpWithProcessThreadData |  // Get PEB and TEB.
+    MiniDumpWithUnloadedModules);  // Get unloaded modules when available.
+
+// Minidump with all of the above, plus memory referenced from stack.
+const MINIDUMP_TYPE kLargerDumpType = static_cast<MINIDUMP_TYPE>(
+    MiniDumpWithProcessThreadData |  // Get PEB and TEB.
+    MiniDumpWithUnloadedModules |  // Get unloaded modules when available.
+    MiniDumpWithIndirectlyReferencedMemory);  // Get memory referenced by stack.
+
+// Large dump with all process memory.
+const MINIDUMP_TYPE kFullDumpType = static_cast<MINIDUMP_TYPE>(
+    MiniDumpWithFullMemory |  // Full memory from process.
+    MiniDumpWithProcessThreadData |  // Get PEB and TEB.
+    MiniDumpWithHandleData |  // Get all handle information.
+    MiniDumpWithUnloadedModules);  // Get unloaded modules when available.
+
+class MinidumpTest: public testing::Test {
+ public:
+  MinidumpTest() {
+    wchar_t temp_dir_path[ MAX_PATH ] = {0};
+    ::GetTempPath(MAX_PATH, temp_dir_path);
+    dump_path_ = temp_dir_path;
+  }
+
+  virtual void SetUp() {
+    // Make sure URLMon isn't loaded into our process.
+    ASSERT_EQ(NULL, ::GetModuleHandle(L"urlmon.dll"));
+
+    // Then load and unload it to ensure we have something to
+    // stock the unloaded module list with.
+    HMODULE urlmon = ::LoadLibrary(L"urlmon.dll");
+    ASSERT_TRUE(urlmon != NULL);
+    ASSERT_TRUE(::FreeLibrary(urlmon));
+  }
+
+  virtual void TearDown() {
+    if (!dump_file_.empty()) {
+      ::DeleteFile(dump_file_.c_str());
+      dump_file_ = L"";
+    }
+    if (!full_dump_file_.empty()) {
+      ::DeleteFile(full_dump_file_.c_str());
+      full_dump_file_ = L"";
+    }
+  }
+
+  bool WriteDump(ULONG flags) {
+    using google_breakpad::MinidumpGenerator;
+
+    // Fake exception is access violation on write to this.
+    EXCEPTION_RECORD ex_record = {
+        STATUS_ACCESS_VIOLATION,  // ExceptionCode
+        0,  // ExceptionFlags
+        NULL,  // ExceptionRecord;
+        reinterpret_cast<void*>(0xCAFEBABE),  // ExceptionAddress;
+        2,  // NumberParameters;
+        { EXCEPTION_WRITE_FAULT, reinterpret_cast<ULONG_PTR>(this) }
+    };
+    CONTEXT ctx_record = {};
+    EXCEPTION_POINTERS ex_ptrs = {
+      &ex_record,
+      &ctx_record,
+    };
+
+    MinidumpGenerator generator(dump_path_,
+                                ::GetCurrentProcess(),
+                                ::GetCurrentProcessId(),
+                                ::GetCurrentThreadId(),
+                                ::GetCurrentThreadId(),
+                                &ex_ptrs,
+                                NULL,
+                                static_cast<MINIDUMP_TYPE>(flags),
+                                TRUE);
+    generator.GenerateDumpFile(&dump_file_);
+    generator.GenerateFullDumpFile(&full_dump_file_);
+    // And write a dump
+    bool result = generator.WriteMinidump();
+    return result == TRUE;
+  }
+
+ protected:
+  std::wstring dump_file_;
+  std::wstring full_dump_file_;
+
+  std::wstring dump_path_;
+};
+
+// We need to be able to get file information from Windows
+bool HasFileInfo(const std::wstring& file_path) {
+  DWORD dummy;
+  const wchar_t* path = file_path.c_str();
+  DWORD length = ::GetFileVersionInfoSize(path, &dummy);
+  if (length == 0)
+    return NULL;
+
+  void* data = calloc(length, 1);
+  if (!data)
+    return false;
+
+  if (!::GetFileVersionInfo(path, dummy, length, data)) {
+    free(data);
+    return false;
+  }
+
+  void* translate = NULL;
+  UINT page_count;
+  BOOL query_result = VerQueryValue(
+      data,
+      L"\\VarFileInfo\\Translation",
+      static_cast<void**>(&translate),
+      &page_count);
+
+  free(data);
+  if (query_result && translate) {
+    return true;
+  } else {
+    return false;
+  }
+}
+
+TEST_F(MinidumpTest, Version) {
+  // Loads DbgHelp.dll in process
+  ImagehlpApiVersion();
+
+  HMODULE dbg_help = ::GetModuleHandle(L"dbghelp.dll");
+  ASSERT_TRUE(dbg_help != NULL);
+
+  wchar_t dbg_help_file[1024] = {};
+  ASSERT_TRUE(::GetModuleFileName(dbg_help,
+                                  dbg_help_file,
+                                  sizeof(dbg_help_file) /
+                                      sizeof(*dbg_help_file)));
+  ASSERT_TRUE(HasFileInfo(std::wstring(dbg_help_file)) != NULL);
+
+//  LOG(INFO) << "DbgHelp.dll version: " << file_info->file_version();
+}
+
+TEST_F(MinidumpTest, Normal) {
+  EXPECT_TRUE(WriteDump(MiniDumpNormal));
+  DumpAnalysis mini(dump_file_);
+
+  // We expect threads, modules and some memory.
+  EXPECT_TRUE(mini.HasStream(ThreadListStream));
+  EXPECT_TRUE(mini.HasStream(ModuleListStream));
+  EXPECT_TRUE(mini.HasStream(MemoryListStream));
+  EXPECT_TRUE(mini.HasStream(ExceptionStream));
+  EXPECT_TRUE(mini.HasStream(SystemInfoStream));
+  EXPECT_TRUE(mini.HasStream(MiscInfoStream));
+
+  EXPECT_FALSE(mini.HasStream(ThreadExListStream));
+  EXPECT_FALSE(mini.HasStream(Memory64ListStream));
+  EXPECT_FALSE(mini.HasStream(CommentStreamA));
+  EXPECT_FALSE(mini.HasStream(CommentStreamW));
+  EXPECT_FALSE(mini.HasStream(HandleDataStream));
+  EXPECT_FALSE(mini.HasStream(FunctionTableStream));
+  EXPECT_FALSE(mini.HasStream(UnloadedModuleListStream));
+  EXPECT_FALSE(mini.HasStream(MemoryInfoListStream));
+  EXPECT_FALSE(mini.HasStream(ThreadInfoListStream));
+  EXPECT_FALSE(mini.HasStream(HandleOperationListStream));
+  EXPECT_FALSE(mini.HasStream(TokenStream));
+
+  // We expect no PEB nor TEBs in this dump.
+  EXPECT_FALSE(mini.HasTebs());
+  EXPECT_FALSE(mini.HasPeb());
+
+  // We expect no off-stack memory in this dump.
+  EXPECT_FALSE(mini.HasMemory(this));
+}
+
+TEST_F(MinidumpTest, SmallDump) {
+  ASSERT_TRUE(WriteDump(kSmallDumpType));
+  DumpAnalysis mini(dump_file_);
+
+  EXPECT_TRUE(mini.HasStream(ThreadListStream));
+  EXPECT_TRUE(mini.HasStream(ModuleListStream));
+  EXPECT_TRUE(mini.HasStream(MemoryListStream));
+  EXPECT_TRUE(mini.HasStream(ExceptionStream));
+  EXPECT_TRUE(mini.HasStream(SystemInfoStream));
+  EXPECT_TRUE(mini.HasStream(UnloadedModuleListStream));
+  EXPECT_TRUE(mini.HasStream(MiscInfoStream));
+
+  // We expect PEB and TEBs in this dump.
+  EXPECT_TRUE(mini.HasTebs());
+  EXPECT_TRUE(mini.HasPeb());
+
+  EXPECT_FALSE(mini.HasStream(ThreadExListStream));
+  EXPECT_FALSE(mini.HasStream(Memory64ListStream));
+  EXPECT_FALSE(mini.HasStream(CommentStreamA));
+  EXPECT_FALSE(mini.HasStream(CommentStreamW));
+  EXPECT_FALSE(mini.HasStream(HandleDataStream));
+  EXPECT_FALSE(mini.HasStream(FunctionTableStream));
+  EXPECT_FALSE(mini.HasStream(MemoryInfoListStream));
+  EXPECT_FALSE(mini.HasStream(ThreadInfoListStream));
+  EXPECT_FALSE(mini.HasStream(HandleOperationListStream));
+  EXPECT_FALSE(mini.HasStream(TokenStream));
+
+  // We expect no off-stack memory in this dump.
+  EXPECT_FALSE(mini.HasMemory(this));
+}
+
+TEST_F(MinidumpTest, LargerDump) {
+  ASSERT_TRUE(WriteDump(kLargerDumpType));
+  DumpAnalysis mini(dump_file_);
+
+  // The dump should have all of these streams.
+  EXPECT_TRUE(mini.HasStream(ThreadListStream));
+  EXPECT_TRUE(mini.HasStream(ModuleListStream));
+  EXPECT_TRUE(mini.HasStream(MemoryListStream));
+  EXPECT_TRUE(mini.HasStream(ExceptionStream));
+  EXPECT_TRUE(mini.HasStream(SystemInfoStream));
+  EXPECT_TRUE(mini.HasStream(UnloadedModuleListStream));
+  EXPECT_TRUE(mini.HasStream(MiscInfoStream));
+
+  // We expect memory referenced by stack in this dump.
+  EXPECT_TRUE(mini.HasMemory(this));
+
+  // We expect PEB and TEBs in this dump.
+  EXPECT_TRUE(mini.HasTebs());
+  EXPECT_TRUE(mini.HasPeb());
+
+  EXPECT_FALSE(mini.HasStream(ThreadExListStream));
+  EXPECT_FALSE(mini.HasStream(Memory64ListStream));
+  EXPECT_FALSE(mini.HasStream(CommentStreamA));
+  EXPECT_FALSE(mini.HasStream(CommentStreamW));
+  EXPECT_FALSE(mini.HasStream(HandleDataStream));
+  EXPECT_FALSE(mini.HasStream(FunctionTableStream));
+  EXPECT_FALSE(mini.HasStream(MemoryInfoListStream));
+  EXPECT_FALSE(mini.HasStream(ThreadInfoListStream));
+  EXPECT_FALSE(mini.HasStream(HandleOperationListStream));
+  EXPECT_FALSE(mini.HasStream(TokenStream));
+}
+
+TEST_F(MinidumpTest, FullDump) {
+  ASSERT_TRUE(WriteDump(kFullDumpType));
+  ASSERT_TRUE(dump_file_ != L"");
+  ASSERT_TRUE(full_dump_file_ != L"");
+  DumpAnalysis mini(dump_file_);
+  DumpAnalysis full(full_dump_file_);
+
+  // Either dumps can contain part of the information.
+
+  // The dump should have all of these streams.
+  EXPECT_TRUE(mini.HasStream(ThreadListStream));
+  EXPECT_TRUE(full.HasStream(ThreadListStream));
+  EXPECT_TRUE(mini.HasStream(ModuleListStream));
+  EXPECT_TRUE(full.HasStream(ModuleListStream));
+  EXPECT_TRUE(mini.HasStream(ExceptionStream));
+  EXPECT_TRUE(full.HasStream(ExceptionStream));
+  EXPECT_TRUE(mini.HasStream(SystemInfoStream));
+  EXPECT_TRUE(full.HasStream(SystemInfoStream));
+  EXPECT_TRUE(mini.HasStream(UnloadedModuleListStream));
+  EXPECT_TRUE(full.HasStream(UnloadedModuleListStream));
+  EXPECT_TRUE(mini.HasStream(MiscInfoStream));
+  EXPECT_TRUE(full.HasStream(MiscInfoStream));
+  EXPECT_TRUE(mini.HasStream(HandleDataStream));
+  EXPECT_TRUE(full.HasStream(HandleDataStream));
+
+  // We expect memory referenced by stack in this dump.
+  EXPECT_FALSE(mini.HasMemory(this));
+  EXPECT_TRUE(full.HasMemory(this));
+
+  // We expect PEB and TEBs in this dump.
+  EXPECT_TRUE(mini.HasTebs() || full.HasTebs());
+  EXPECT_TRUE(mini.HasPeb() || full.HasPeb());
+
+  EXPECT_TRUE(mini.HasStream(MemoryListStream));
+  EXPECT_TRUE(full.HasStream(Memory64ListStream));
+  EXPECT_FALSE(mini.HasStream(Memory64ListStream));
+  EXPECT_FALSE(full.HasStream(MemoryListStream));
+
+  // This is the only place we don't use OR because we want both not
+  // to have the streams.
+  EXPECT_FALSE(mini.HasStream(ThreadExListStream));
+  EXPECT_FALSE(full.HasStream(ThreadExListStream));
+  EXPECT_FALSE(mini.HasStream(CommentStreamA));
+  EXPECT_FALSE(full.HasStream(CommentStreamA));
+  EXPECT_FALSE(mini.HasStream(CommentStreamW));
+  EXPECT_FALSE(full.HasStream(CommentStreamW));
+  EXPECT_FALSE(mini.HasStream(FunctionTableStream));
+  EXPECT_FALSE(full.HasStream(FunctionTableStream));
+  EXPECT_FALSE(mini.HasStream(MemoryInfoListStream));
+  EXPECT_FALSE(full.HasStream(MemoryInfoListStream));
+  EXPECT_FALSE(mini.HasStream(ThreadInfoListStream));
+  EXPECT_FALSE(full.HasStream(ThreadInfoListStream));
+  EXPECT_FALSE(mini.HasStream(HandleOperationListStream));
+  EXPECT_FALSE(full.HasStream(HandleOperationListStream));
+  EXPECT_FALSE(mini.HasStream(TokenStream));
+  EXPECT_FALSE(full.HasStream(TokenStream));
+}
+
+}  // namespace
diff --git a/google-breakpad/src/client/windows/unittests/testing.gyp b/google-breakpad/src/client/windows/unittests/testing.gyp
new file mode 100644
index 0000000..141d0ed
--- /dev/null
+++ b/google-breakpad/src/client/windows/unittests/testing.gyp
@@ -0,0 +1,83 @@
+# Copyright 2010 Google Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+{
+  'includes': [
+    '../../../build/common.gypi',
+  ],
+  'target_defaults': {
+  },
+  'targets': [
+    {
+      'target_name': 'gtest',
+      'type': 'static_library',
+      'include_dirs': [
+        '<(DEPTH)/testing/include',
+        '<(DEPTH)/testing/gtest',
+        '<(DEPTH)/testing/gtest/include',
+      ],
+      'sources': [
+        '<(DEPTH)/testing/gtest/src/gtest-all.cc',
+      ],
+      'direct_dependent_settings': {
+        'include_dirs': [
+          '<(DEPTH)/testing/include',
+          '<(DEPTH)/testing/gtest/include',
+        ],
+        # Visual C++ implements variadic templates strangely, and
+        # VC++2012 broke Google Test by lowering this value. See
+        # http://stackoverflow.com/questions/12558327/google-test-in-visual-studio-2012
+        'defines': ['_VARIADIC_MAX=10'],
+      },
+      'defines': ['_VARIADIC_MAX=10'],
+    },
+    {
+      'target_name': 'gmock',
+      'type': 'static_library',
+      'include_dirs': [
+        '<(DEPTH)/testing/include',
+        '<(DEPTH)/testing/',
+        '<(DEPTH)/testing/gtest',
+        '<(DEPTH)/testing/gtest/include',
+      ],
+      'sources': [
+        '<(DEPTH)/testing/src/gmock-all.cc',
+        '<(DEPTH)/testing/src/gmock_main.cc',
+      ],
+      'direct_dependent_settings': {
+        'include_dirs': [
+          '<(DEPTH)/testing/include',
+          '<(DEPTH)/testing/gtest/include',
+        ],
+        'defines': ['_VARIADIC_MAX=10'],
+      },
+      'defines': ['_VARIADIC_MAX=10'],
+    },
+
+  ],
+}
diff --git a/google-breakpad/src/common/android/breakpad_getcontext.S b/google-breakpad/src/common/android/breakpad_getcontext.S
new file mode 100644
index 0000000..fd6326a
--- /dev/null
+++ b/google-breakpad/src/common/android/breakpad_getcontext.S
@@ -0,0 +1,489 @@
+// Copyright (c) 2012, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// A minimalistic implementation of getcontext() to be used by
+// Google Breakpad on Android.
+
+#include "common/android/ucontext_constants.h"
+
+/* int getcontext (ucontext_t *ucp) */
+
+#if defined(__arm__)
+
+  .text
+  .global breakpad_getcontext
+  .hidden breakpad_getcontext
+  .type breakpad_getcontext, #function
+  .align 0
+  .fnstart
+breakpad_getcontext:
+
+  /* First, save r4-r11 */
+  add   r1, r0, #(MCONTEXT_GREGS_OFFSET + 4*4)
+  stm   r1, {r4-r11}
+
+  /* r12 is a scratch register, don't save it */
+
+  /* Save sp and lr explicitly. */
+  /* - sp can't be stored with stmia in Thumb-2 */
+  /* - STM instructions that store sp and pc are deprecated in ARM */
+  str   sp, [r0, #(MCONTEXT_GREGS_OFFSET + 13*4)]
+  str   lr, [r0, #(MCONTEXT_GREGS_OFFSET + 14*4)]
+
+  /* Save the caller's address in 'pc' */
+  str   lr, [r0, #(MCONTEXT_GREGS_OFFSET + 15*4)]
+
+  /* Save ucontext_t* pointer across next call */
+  mov   r4, r0
+
+  /* Call sigprocmask(SIG_BLOCK, NULL, &(ucontext->uc_sigmask)) */
+  mov   r0, #0  /* SIG_BLOCK */
+  mov   r1, #0  /* NULL */
+  add   r2, r4, #UCONTEXT_SIGMASK_OFFSET
+  bl    sigprocmask(PLT)
+
+  /* Intentionally do not save the FPU state here. This is because on
+   * Linux/ARM, one should instead use ptrace(PTRACE_GETFPREGS) or
+   * ptrace(PTRACE_GETVFPREGS) to get it.
+   *
+   * Note that a real implementation of getcontext() would need to save
+   * this here to allow setcontext()/swapcontext() to work correctly.
+   */
+
+  /* Restore the values of r4 and lr */
+  mov   r0, r4
+  ldr   lr, [r0, #(MCONTEXT_GREGS_OFFSET + 14*4)]
+  ldr   r4, [r0, #(MCONTEXT_GREGS_OFFSET +  4*4)]
+
+  /* Return 0 */
+  mov   r0, #0
+  bx    lr
+
+  .fnend
+  .size breakpad_getcontext, . - breakpad_getcontext
+
+#elif defined(__aarch64__)
+
+#define  _NSIG                       64
+#define  __NR_rt_sigprocmask         135
+
+  .text
+  .global breakpad_getcontext
+  .hidden breakpad_getcontext
+  .type breakpad_getcontext, #function
+  .align 4
+  .cfi_startproc
+breakpad_getcontext:
+
+  /* The saved context will return to the getcontext() call point
+     with a return value of 0 */
+  str     xzr,      [x0, MCONTEXT_GREGS_OFFSET +  0 * REGISTER_SIZE]
+
+  stp     x18, x19, [x0, MCONTEXT_GREGS_OFFSET + 18 * REGISTER_SIZE]
+  stp     x20, x21, [x0, MCONTEXT_GREGS_OFFSET + 20 * REGISTER_SIZE]
+  stp     x22, x23, [x0, MCONTEXT_GREGS_OFFSET + 22 * REGISTER_SIZE]
+  stp     x24, x25, [x0, MCONTEXT_GREGS_OFFSET + 24 * REGISTER_SIZE]
+  stp     x26, x27, [x0, MCONTEXT_GREGS_OFFSET + 26 * REGISTER_SIZE]
+  stp     x28, x29, [x0, MCONTEXT_GREGS_OFFSET + 28 * REGISTER_SIZE]
+  str     x30,      [x0, MCONTEXT_GREGS_OFFSET + 30 * REGISTER_SIZE]
+
+  /* Place LR into the saved PC, this will ensure that when
+     switching to this saved context with setcontext() control
+     will pass back to the caller of getcontext(), we have
+     already arranged to return the appropriate return value in x0
+     above.  */
+  str     x30, [x0, MCONTEXT_PC_OFFSET]
+
+  /* Save the current SP */
+  mov     x2, sp
+  str     x2, [x0, MCONTEXT_SP_OFFSET]
+
+  /* Initialize the pstate.  */
+  str     xzr, [x0, MCONTEXT_PSTATE_OFFSET]
+
+  /* Figure out where to place the first context extension
+     block.  */
+  add     x2, x0, #MCONTEXT_EXTENSION_OFFSET
+
+  /* Write the context extension fpsimd header.  */
+  mov     w3, #(FPSIMD_MAGIC & 0xffff)
+  movk    w3, #(FPSIMD_MAGIC >> 16), lsl #16
+  str     w3, [x2, #FPSIMD_CONTEXT_MAGIC_OFFSET]
+  mov     w3, #FPSIMD_CONTEXT_SIZE
+  str     w3, [x2, #FPSIMD_CONTEXT_SIZE_OFFSET]
+
+  /* Fill in the FP SIMD context.  */
+  add     x3, x2, #(FPSIMD_CONTEXT_VREGS_OFFSET + 8 * SIMD_REGISTER_SIZE)
+  stp     d8,  d9, [x3], #(2 * SIMD_REGISTER_SIZE)
+  stp     d10, d11, [x3], #(2 * SIMD_REGISTER_SIZE)
+  stp     d12, d13, [x3], #(2 * SIMD_REGISTER_SIZE)
+  stp     d14, d15, [x3], #(2 * SIMD_REGISTER_SIZE)
+
+  add     x3, x2, FPSIMD_CONTEXT_FPSR_OFFSET
+
+  mrs     x4, fpsr
+  str     w4, [x3]
+
+  mrs     x4, fpcr
+  str     w4, [x3, FPSIMD_CONTEXT_FPCR_OFFSET - FPSIMD_CONTEXT_FPSR_OFFSET]
+
+  /* Write the termination context extension header.  */
+  add     x2, x2, #FPSIMD_CONTEXT_SIZE
+
+  str     xzr, [x2, #FPSIMD_CONTEXT_MAGIC_OFFSET]
+  str     xzr, [x2, #FPSIMD_CONTEXT_SIZE_OFFSET]
+
+  /* Grab the signal mask */
+  /* rt_sigprocmask (SIG_BLOCK, NULL, &ucp->uc_sigmask, _NSIG8) */
+  add     x2, x0, #UCONTEXT_SIGMASK_OFFSET
+  mov     x0, #0  /* SIG_BLOCK */
+  mov     x1, #0  /* NULL */
+  mov     x3, #(_NSIG / 8)
+  mov     x8, #__NR_rt_sigprocmask
+  svc     0
+
+  /* Return x0 for success */
+  mov     x0, 0
+  ret
+
+  .cfi_endproc
+  .size breakpad_getcontext, . - breakpad_getcontext
+
+#elif defined(__i386__)
+
+  .text
+  .global breakpad_getcontext
+  .hidden breakpad_getcontext
+  .align 4
+  .type breakpad_getcontext, @function
+
+breakpad_getcontext:
+
+  movl 4(%esp), %eax   /* eax = uc */
+
+  /* Save register values */
+  movl %ecx, MCONTEXT_ECX_OFFSET(%eax)
+  movl %edx, MCONTEXT_EDX_OFFSET(%eax)
+  movl %ebx, MCONTEXT_EBX_OFFSET(%eax)
+  movl %edi, MCONTEXT_EDI_OFFSET(%eax)
+  movl %esi, MCONTEXT_ESI_OFFSET(%eax)
+  movl %ebp, MCONTEXT_EBP_OFFSET(%eax)
+
+  movl (%esp), %edx   /* return address */
+  lea  4(%esp), %ecx  /* exclude return address from stack */
+  mov  %edx, MCONTEXT_EIP_OFFSET(%eax)
+  mov  %ecx, MCONTEXT_ESP_OFFSET(%eax)
+
+  xorl %ecx, %ecx
+  movw %fs, %cx
+  mov  %ecx, MCONTEXT_FS_OFFSET(%eax)
+
+  movl $0, MCONTEXT_EAX_OFFSET(%eax)
+
+  /* Save floating point state to fpregstate, then update
+   * the fpregs pointer to point to it */
+  leal UCONTEXT_FPREGS_MEM_OFFSET(%eax), %ecx
+  fnstenv (%ecx)
+  fldenv  (%ecx)
+  mov %ecx, UCONTEXT_FPREGS_OFFSET(%eax)
+
+  /* Save signal mask: sigprocmask(SIGBLOCK, NULL, &uc->uc_sigmask) */
+  leal UCONTEXT_SIGMASK_OFFSET(%eax), %edx
+  xorl %ecx, %ecx
+  push %edx   /* &uc->uc_sigmask */
+  push %ecx   /* NULL */
+  push %ecx   /* SIGBLOCK == 0 on i386 */
+  call sigprocmask@PLT
+  addl $12, %esp
+
+  movl $0, %eax
+  ret
+
+  .size breakpad_getcontext, . - breakpad_getcontext
+
+#elif defined(__mips__)
+
+// This implementation is inspired by implementation of getcontext in glibc.
+#if _MIPS_SIM == _ABIO32
+#include <asm/asm.h>
+#include <asm/regdef.h>
+#include <asm/fpregdef.h>
+#else
+#include <machine/asm.h>
+#include <machine/regdef.h>
+#endif
+
+// from asm/asm.h
+#if _MIPS_SIM == _ABIO32
+#define ALSZ 7
+#define ALMASK ~7
+#define SZREG 4
+#else // _MIPS_SIM != _ABIO32
+#define ALSZ 15
+#define ALMASK ~15
+#define SZREG 8
+#endif
+
+#include <asm/unistd.h> // for __NR_rt_sigprocmask
+
+#define _NSIG8 128 / 8
+#define SIG_BLOCK 1
+
+
+  .text
+LOCALS_NUM = 1 // save gp on stack
+FRAME_SIZE = ((LOCALS_NUM * SZREG) + ALSZ) & ALMASK
+
+GP_FRAME_OFFSET = FRAME_SIZE - (1 * SZREG)
+MCONTEXT_REG_SIZE = 8
+
+#if _MIPS_SIM == _ABIO32
+
+NESTED (breakpad_getcontext, FRAME_SIZE, ra)
+  .mask	0x00000000, 0
+  .fmask 0x00000000, 0
+
+  .set noreorder
+  .cpload t9
+  .set reorder
+
+  move a2, sp
+#define _SP a2
+
+  addiu sp, -FRAME_SIZE
+  .cprestore GP_FRAME_OFFSET
+
+  sw s0, (16 * MCONTEXT_REG_SIZE + MCONTEXT_GREGS_OFFSET)(a0)
+  sw s1, (17 * MCONTEXT_REG_SIZE + MCONTEXT_GREGS_OFFSET)(a0)
+  sw s2, (18 * MCONTEXT_REG_SIZE + MCONTEXT_GREGS_OFFSET)(a0)
+  sw s3, (19 * MCONTEXT_REG_SIZE + MCONTEXT_GREGS_OFFSET)(a0)
+  sw s4, (20 * MCONTEXT_REG_SIZE + MCONTEXT_GREGS_OFFSET)(a0)
+  sw s5, (21 * MCONTEXT_REG_SIZE + MCONTEXT_GREGS_OFFSET)(a0)
+  sw s6, (22 * MCONTEXT_REG_SIZE + MCONTEXT_GREGS_OFFSET)(a0)
+  sw s7, (23 * MCONTEXT_REG_SIZE + MCONTEXT_GREGS_OFFSET)(a0)
+  sw _SP, (29 * MCONTEXT_REG_SIZE + MCONTEXT_GREGS_OFFSET)(a0)
+  sw fp, (30 * MCONTEXT_REG_SIZE + MCONTEXT_GREGS_OFFSET)(a0)
+  sw ra, (31 * MCONTEXT_REG_SIZE + MCONTEXT_GREGS_OFFSET)(a0)
+  sw ra, MCONTEXT_PC_OFFSET(a0)
+
+#ifdef __mips_hard_float
+  s.d fs0, (20 * MCONTEXT_REG_SIZE + MCONTEXT_FPREGS_OFFSET)(a0)
+  s.d fs1, (22 * MCONTEXT_REG_SIZE + MCONTEXT_FPREGS_OFFSET)(a0)
+  s.d fs2, (24 * MCONTEXT_REG_SIZE + MCONTEXT_FPREGS_OFFSET)(a0)
+  s.d fs3, (26 * MCONTEXT_REG_SIZE + MCONTEXT_FPREGS_OFFSET)(a0)
+  s.d fs4, (28 * MCONTEXT_REG_SIZE + MCONTEXT_FPREGS_OFFSET)(a0)
+  s.d fs5, (30 * MCONTEXT_REG_SIZE + MCONTEXT_FPREGS_OFFSET)(a0)
+
+  cfc1 v1, fcr31
+  sw v1, MCONTEXT_FPC_CSR(a0)
+#endif  // __mips_hard_float
+
+  /* rt_sigprocmask (SIG_BLOCK, NULL, &ucp->uc_sigmask, _NSIG8) */
+  li a3, _NSIG8
+  addu a2, a0, UCONTEXT_SIGMASK_OFFSET
+  move a1, zero
+  li a0, SIG_BLOCK
+  li v0, __NR_rt_sigprocmask
+  syscall
+
+  addiu sp, FRAME_SIZE
+  jr ra
+
+END (breakpad_getcontext)
+#else
+
+#ifndef NESTED
+/*
+ * NESTED - declare nested routine entry point
+ */
+#define NESTED(symbol, framesize, rpc)  \
+    .globl  symbol;                     \
+    .align  2;                          \
+    .type symbol,@function;             \
+    .ent  symbol,0;                     \
+symbol:   .frame  sp, framesize, rpc;
+#endif
+
+/*
+ * END - mark end of function
+ */
+#ifndef END
+# define END(function)                  \
+    .end  function;                     \
+    .size function,.-function
+#endif
+
+/* int getcontext (ucontext_t *ucp) */
+
+NESTED (breakpad_getcontext, FRAME_SIZE, ra)
+  .mask   0x10000000, 0
+  .fmask  0x00000000, 0
+
+  move  a2, sp
+#define _SP a2
+  move  a3, gp
+#define _GP a3
+
+  daddiu sp, -FRAME_SIZE
+  .cpsetup $25, GP_FRAME_OFFSET, breakpad_getcontext
+
+  /* Store a magic flag.  */
+  li  v1, 1
+  sd v1, (0 * MCONTEXT_REG_SIZE + MCONTEXT_GREGS_OFFSET)(a0)  /* zero */
+
+  sd s0, (16 * MCONTEXT_REG_SIZE + MCONTEXT_GREGS_OFFSET)(a0)
+  sd s1, (17 * MCONTEXT_REG_SIZE + MCONTEXT_GREGS_OFFSET)(a0)
+  sd s2, (18 * MCONTEXT_REG_SIZE + MCONTEXT_GREGS_OFFSET)(a0)
+  sd s3, (19 * MCONTEXT_REG_SIZE + MCONTEXT_GREGS_OFFSET)(a0)
+  sd s4, (20 * MCONTEXT_REG_SIZE + MCONTEXT_GREGS_OFFSET)(a0)
+  sd s5, (21 * MCONTEXT_REG_SIZE + MCONTEXT_GREGS_OFFSET)(a0)
+  sd s6, (22 * MCONTEXT_REG_SIZE + MCONTEXT_GREGS_OFFSET)(a0)
+  sd s7, (23 * MCONTEXT_REG_SIZE + MCONTEXT_GREGS_OFFSET)(a0)
+  sd _GP, (28 * MCONTEXT_REG_SIZE + MCONTEXT_GREGS_OFFSET)(a0)
+  sd _SP, (29 * MCONTEXT_REG_SIZE + MCONTEXT_GREGS_OFFSET)(a0)
+  sd s8, (30 * MCONTEXT_REG_SIZE + MCONTEXT_GREGS_OFFSET)(a0)
+  sd ra, (31 * MCONTEXT_REG_SIZE + MCONTEXT_GREGS_OFFSET)(a0)
+  sd ra, MCONTEXT_PC_OFFSET(a0)
+
+#ifdef __mips_hard_float
+  s.d $f24, (24 * MCONTEXT_REG_SIZE + MCONTEXT_FPREGS_OFFSET)(a0)
+  s.d $f25, (25 * MCONTEXT_REG_SIZE + MCONTEXT_FPREGS_OFFSET)(a0)
+  s.d $f26, (26 * MCONTEXT_REG_SIZE + MCONTEXT_FPREGS_OFFSET)(a0)
+  s.d $f27, (27 * MCONTEXT_REG_SIZE + MCONTEXT_FPREGS_OFFSET)(a0)
+  s.d $f28, (28 * MCONTEXT_REG_SIZE + MCONTEXT_FPREGS_OFFSET)(a0)
+  s.d $f29, (29 * MCONTEXT_REG_SIZE + MCONTEXT_FPREGS_OFFSET)(a0)
+  s.d $f30, (30 * MCONTEXT_REG_SIZE + MCONTEXT_FPREGS_OFFSET)(a0)
+  s.d $f31, (31 * MCONTEXT_REG_SIZE + MCONTEXT_FPREGS_OFFSET)(a0)
+
+  cfc1  v1, $31
+  sw  v1, MCONTEXT_FPC_CSR(a0)
+#endif /* __mips_hard_float */
+
+/* rt_sigprocmask (SIG_BLOCK, NULL, &ucp->uc_sigmask, _NSIG8) */
+  li  a3, _NSIG8
+  daddu a2, a0, UCONTEXT_SIGMASK_OFFSET
+  move  a1, zero
+  li  a0, SIG_BLOCK
+
+  li  v0, __NR_rt_sigprocmask
+  syscall
+
+  .cpreturn
+  daddiu sp, FRAME_SIZE
+  move  v0, zero
+  jr  ra
+
+END (breakpad_getcontext)
+#endif // _MIPS_SIM == _ABIO32
+
+#elif defined(__x86_64__)
+/* The x64 implementation of breakpad_getcontext was derived in part
+   from the implementation of libunwind which requires the following
+   notice. */
+/* libunwind - a platform-independent unwind library
+   Copyright (C) 2008 Google, Inc
+	Contributed by Paul Pluzhnikov <ppluzhnikov@google.com>
+   Copyright (C) 2010 Konstantin Belousov <kib@freebsd.org>
+
+This file is part of libunwind.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
+
+  .text
+  .global breakpad_getcontext
+  .hidden breakpad_getcontext
+  .align 4
+  .type breakpad_getcontext, @function
+
+breakpad_getcontext:
+  .cfi_startproc
+
+  /* Callee saved: RBX, RBP, R12-R15  */
+  movq %r12, MCONTEXT_GREGS_R12(%rdi)
+  movq %r13, MCONTEXT_GREGS_R13(%rdi)
+  movq %r14, MCONTEXT_GREGS_R14(%rdi)
+  movq %r15, MCONTEXT_GREGS_R15(%rdi)
+  movq %rbp, MCONTEXT_GREGS_RBP(%rdi)
+  movq %rbx, MCONTEXT_GREGS_RBX(%rdi)
+
+  /* Save argument registers (not strictly needed, but setcontext
+     restores them, so don't restore garbage).  */
+  movq %r8,  MCONTEXT_GREGS_R8(%rdi)
+  movq %r9,  MCONTEXT_GREGS_R9(%rdi)
+  movq %rdi, MCONTEXT_GREGS_RDI(%rdi)
+  movq %rsi, MCONTEXT_GREGS_RSI(%rdi)
+  movq %rdx, MCONTEXT_GREGS_RDX(%rdi)
+  movq %rax, MCONTEXT_GREGS_RAX(%rdi)
+  movq %rcx, MCONTEXT_GREGS_RCX(%rdi)
+
+  /* Save fp state (not needed, except for setcontext not
+     restoring garbage).  */
+  leaq MCONTEXT_FPREGS_MEM(%rdi),%r8
+  movq %r8, MCONTEXT_FPREGS_PTR(%rdi)
+  fnstenv (%r8)
+  stmxcsr FPREGS_OFFSET_MXCSR(%r8)
+
+  leaq 8(%rsp), %rax /* exclude this call.  */
+  movq %rax, MCONTEXT_GREGS_RSP(%rdi)
+
+  movq 0(%rsp), %rax
+  movq %rax, MCONTEXT_GREGS_RIP(%rdi)
+
+  /* Save signal mask: sigprocmask(SIGBLOCK, NULL, &uc->uc_sigmask) */
+  leaq UCONTEXT_SIGMASK_OFFSET(%rdi), %rdx  // arg3
+  xorq %rsi, %rsi  // arg2 NULL
+  xorq %rdi, %rdi  // arg1 SIGBLOCK == 0
+  call sigprocmask@PLT
+
+  /* Always return 0 for success, even if sigprocmask failed. */
+  xorl %eax, %eax
+  ret
+  .cfi_endproc
+  .size breakpad_getcontext, . - breakpad_getcontext
+
+#else
+#error "This file has not been ported for your CPU!"
+#endif
diff --git a/google-breakpad/src/common/android/breakpad_getcontext_unittest.cc b/google-breakpad/src/common/android/breakpad_getcontext_unittest.cc
new file mode 100644
index 0000000..2c550bf
--- /dev/null
+++ b/google-breakpad/src/common/android/breakpad_getcontext_unittest.cc
@@ -0,0 +1,186 @@
+// Copyright (c) 2012, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#if defined(__x86_64__)
+#include <asm/sigcontext.h>
+#endif
+
+#include <sys/ucontext.h>
+
+#include "breakpad_googletest_includes.h"
+#include "common/android/ucontext_constants.h"
+
+template <int left, int right>
+struct CompileAssertEquals {
+  // a compilation error here indicates left and right are not equal.
+  char left_too_large[right - left];
+  // a compilation error here indicates left and right are not equal.
+  char right_too_large[left - right];
+};
+
+#define COMPILE_ASSERT_EQ(left, right, tag) \
+  CompileAssertEquals<left, right> tag;
+
+TEST(AndroidUContext, GRegsOffset) {
+#if defined(__arm__)
+  // There is no gregs[] array on ARM, so compare to the offset of
+  // first register fields, since they're stored in order.
+  ASSERT_EQ(static_cast<size_t>(MCONTEXT_GREGS_OFFSET),
+            offsetof(ucontext_t,uc_mcontext.arm_r0));
+#elif defined(__aarch64__)
+  // There is no gregs[] array on ARM, so compare to the offset of
+  // first register fields, since they're stored in order.
+  ASSERT_EQ(static_cast<size_t>(MCONTEXT_GREGS_OFFSET),
+            offsetof(ucontext_t,uc_mcontext.regs[0]));
+  ASSERT_EQ(static_cast<size_t>(MCONTEXT_SP_OFFSET),
+            offsetof(ucontext_t,uc_mcontext.sp));
+  ASSERT_EQ(static_cast<size_t>(MCONTEXT_PC_OFFSET),
+            offsetof(ucontext_t,uc_mcontext.pc));
+  ASSERT_EQ(static_cast<size_t>(MCONTEXT_PSTATE_OFFSET),
+            offsetof(ucontext_t,uc_mcontext.pstate));
+  ASSERT_EQ(static_cast<size_t>(MCONTEXT_EXTENSION_OFFSET),
+            offsetof(ucontext_t,uc_mcontext.__reserved));
+#elif defined(__i386__)
+  ASSERT_EQ(static_cast<size_t>(MCONTEXT_GREGS_OFFSET),
+            offsetof(ucontext_t,uc_mcontext.gregs));
+#define CHECK_REG(x) \
+  ASSERT_EQ(static_cast<size_t>(MCONTEXT_##x##_OFFSET),         \
+            offsetof(ucontext_t,uc_mcontext.gregs[REG_##x]))
+  CHECK_REG(GS);
+  CHECK_REG(FS);
+  CHECK_REG(ES);
+  CHECK_REG(DS);
+  CHECK_REG(EDI);
+  CHECK_REG(ESI);
+  CHECK_REG(EBP);
+  CHECK_REG(ESP);
+  CHECK_REG(EBX);
+  CHECK_REG(EDX);
+  CHECK_REG(ECX);
+  CHECK_REG(EAX);
+  CHECK_REG(TRAPNO);
+  CHECK_REG(ERR);
+  CHECK_REG(EIP);
+  CHECK_REG(CS);
+  CHECK_REG(EFL);
+  CHECK_REG(UESP);
+  CHECK_REG(SS);
+
+  ASSERT_EQ(static_cast<size_t>(UCONTEXT_FPREGS_OFFSET),
+            offsetof(ucontext_t,uc_mcontext.fpregs));
+
+  ASSERT_EQ(static_cast<size_t>(UCONTEXT_FPREGS_MEM_OFFSET),
+            offsetof(ucontext_t,__fpregs_mem));
+#elif defined(__mips__)
+  ASSERT_EQ(static_cast<size_t>(MCONTEXT_GREGS_OFFSET),
+            offsetof(ucontext_t,uc_mcontext.gregs));
+
+  // PC for mips is not part of gregs.
+  ASSERT_EQ(static_cast<size_t>(MCONTEXT_PC_OFFSET),
+            offsetof(ucontext_t,uc_mcontext.pc));
+
+  ASSERT_EQ(static_cast<size_t>(MCONTEXT_FPREGS_OFFSET),
+            offsetof(ucontext_t,uc_mcontext.fpregs));
+
+  ASSERT_EQ(static_cast<size_t>(MCONTEXT_FPC_CSR),
+            offsetof(ucontext_t,uc_mcontext.fpc_csr));
+#elif defined(__x86_64__)
+
+  COMPILE_ASSERT_EQ(static_cast<size_t>(MCONTEXT_GREGS_OFFSET),
+                    offsetof(ucontext_t,uc_mcontext.gregs),
+                    mcontext_gregs_offset);
+#define CHECK_REG(x) \
+  COMPILE_ASSERT_EQ(static_cast<size_t>(MCONTEXT_GREGS_##x), \
+                    offsetof(ucontext_t,uc_mcontext.gregs[REG_##x]), reg_##x)
+  CHECK_REG(R8);
+  CHECK_REG(R9);
+  CHECK_REG(R10);
+  CHECK_REG(R11);
+  CHECK_REG(R12);
+  CHECK_REG(R13);
+  CHECK_REG(R14);
+  CHECK_REG(R15);
+  CHECK_REG(RDI);
+  CHECK_REG(RSI);
+  CHECK_REG(RBP);
+  CHECK_REG(RBX);
+  CHECK_REG(RDX);
+  CHECK_REG(RAX);
+  CHECK_REG(RCX);
+  CHECK_REG(RSP);
+  CHECK_REG(RIP);
+
+  // sigcontext is an analog to mcontext_t. The layout should be the same.
+  COMPILE_ASSERT_EQ(offsetof(mcontext_t,fpregs),
+                    offsetof(sigcontext,fpstate), sigcontext_fpstate);
+  // Check that _fpstate from asm/sigcontext.h is essentially the same
+  // as _libc_fpstate.
+  COMPILE_ASSERT_EQ(sizeof(_libc_fpstate), sizeof(_fpstate),
+                    sigcontext_fpstate_size);
+  COMPILE_ASSERT_EQ(offsetof(_libc_fpstate,cwd),offsetof(_fpstate,cwd),
+                    sigcontext_fpstate_cwd);
+  COMPILE_ASSERT_EQ(offsetof(_libc_fpstate,swd),offsetof(_fpstate,swd),
+                    sigcontext_fpstate_swd);
+  COMPILE_ASSERT_EQ(offsetof(_libc_fpstate,ftw),offsetof(_fpstate,twd),
+                    sigcontext_fpstate_twd);
+  COMPILE_ASSERT_EQ(offsetof(_libc_fpstate,fop),offsetof(_fpstate,fop),
+                    sigcontext_fpstate_fop);
+  COMPILE_ASSERT_EQ(offsetof(_libc_fpstate,rip),offsetof(_fpstate,rip),
+                    sigcontext_fpstate_rip);
+  COMPILE_ASSERT_EQ(offsetof(_libc_fpstate,rdp),offsetof(_fpstate,rdp),
+                    sigcontext_fpstate_rdp);
+  COMPILE_ASSERT_EQ(offsetof(_libc_fpstate,mxcsr),offsetof(_fpstate,mxcsr),
+                    sigcontext_fpstate_mxcsr);
+  COMPILE_ASSERT_EQ(offsetof(_libc_fpstate,mxcr_mask),
+                    offsetof(_fpstate,mxcsr_mask),
+                    sigcontext_fpstate_mxcsr_mask);
+  COMPILE_ASSERT_EQ(offsetof(_libc_fpstate,_st), offsetof(_fpstate,st_space),
+                    sigcontext_fpstate_stspace);
+  COMPILE_ASSERT_EQ(offsetof(_libc_fpstate,_xmm), offsetof(_fpstate,xmm_space),
+                    sigcontext_fpstate_xmm_space);
+
+  COMPILE_ASSERT_EQ(MCONTEXT_FPREGS_PTR,
+                    offsetof(ucontext_t,uc_mcontext.fpregs),
+                    mcontext_fpregs_ptr);
+  COMPILE_ASSERT_EQ(MCONTEXT_FPREGS_MEM, offsetof(ucontext_t,__fpregs_mem),
+                    mcontext_fpregs_mem);
+  COMPILE_ASSERT_EQ(FPREGS_OFFSET_MXCSR, offsetof(_libc_fpstate,mxcsr),
+                    fpregs_offset_mxcsr);
+  COMPILE_ASSERT_EQ(UCONTEXT_SIGMASK_OFFSET, offsetof(ucontext_t, uc_sigmask),
+                    ucontext_sigmask);
+#else
+  ASSERT_EQ(static_cast<size_t>(MCONTEXT_GREGS_OFFSET),
+            offsetof(ucontext_t,uc_mcontext.gregs));
+#endif
+}
+
+TEST(AndroidUContext, SigmakOffset) {
+  ASSERT_EQ(static_cast<size_t>(UCONTEXT_SIGMASK_OFFSET),
+            offsetof(ucontext_t,uc_sigmask));
+}
diff --git a/google-breakpad/src/common/android/include/elf.h b/google-breakpad/src/common/android/include/elf.h
new file mode 100644
index 0000000..b2a28df
--- /dev/null
+++ b/google-breakpad/src/common/android/include/elf.h
@@ -0,0 +1,168 @@
+// Copyright (c) 2012, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef GOOGLE_BREAKPAD_COMMON_ANDROID_INCLUDE_ELF_H
+#define GOOGLE_BREAKPAD_COMMON_ANDROID_INCLUDE_ELF_H
+
+#include <stdint.h>
+#include <libgen.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif  // __cplusplus
+
+// The Android <elf.h> provides BSD-based definitions for the ElfXX_Nhdr
+// types
+// always source-compatible with the GLibc/kernel ones. To overcome this
+// issue without modifying a lot of code in Breakpad, use an ugly macro
+// renaming trick with #include_next
+
+// Avoid conflict with BSD-based definition of ElfXX_Nhdr.
+// Unfortunately, their field member names do not use a 'n_' prefix.
+#define Elf32_Nhdr   __bsd_Elf32_Nhdr
+#define Elf64_Nhdr   __bsd_Elf64_Nhdr
+
+// In case they are defined by the NDK version
+#define Elf32_auxv_t  __bionic_Elf32_auxv_t
+#define Elf64_auxv_t  __bionic_Elf64_auxv_t
+
+#define Elf32_Dyn     __bionic_Elf32_Dyn
+#define Elf64_Dyn     __bionic_Elf64_Dyn
+
+#include_next <elf.h>
+
+#undef Elf32_Nhdr
+#undef Elf64_Nhdr
+
+typedef struct {
+  Elf32_Word n_namesz;
+  Elf32_Word n_descsz;
+  Elf32_Word n_type;
+} Elf32_Nhdr;
+
+typedef struct {
+  Elf64_Word n_namesz;
+  Elf64_Word n_descsz;
+  Elf64_Word n_type;
+} Elf64_Nhdr;
+
+#undef Elf32_auxv_t
+#undef Elf64_auxv_t
+
+typedef struct {
+    uint32_t a_type;
+    union {
+      uint32_t a_val;
+    } a_un;
+} Elf32_auxv_t;
+
+typedef struct {
+    uint64_t a_type;
+    union {
+      uint64_t a_val;
+    } a_un;
+} Elf64_auxv_t;
+
+#undef Elf32_Dyn
+#undef Elf64_Dyn
+
+typedef struct {
+  Elf32_Sword   d_tag;
+  union {
+    Elf32_Word  d_val;
+    Elf32_Addr  d_ptr;
+  } d_un;
+} Elf32_Dyn;
+
+typedef struct {
+  Elf64_Sxword   d_tag;
+  union {
+    Elf64_Xword  d_val;
+    Elf64_Addr   d_ptr;
+  } d_un;
+} Elf64_Dyn;
+
+
+// __WORDSIZE is GLibc-specific and used by Google Breakpad on Linux.
+#ifndef __WORDSIZE
+#if defined(__i386__) ||  defined(__ARM_EABI__) || defined(__mips__)
+#define __WORDSIZE 32
+#elif defined(__x86_64__) || defined(__aarch64__)
+#define __WORDSIZE 64
+#else
+#error "Unsupported Android CPU ABI"
+#endif
+#endif
+
+// The Android headers don't always define this constant.
+#ifndef EM_X86_64
+#define EM_X86_64  62
+#endif
+
+#ifndef EM_PPC64
+#define EM_PPC64   21
+#endif
+
+#ifndef EM_S390
+#define EM_S390    22
+#endif
+
+#if !defined(AT_SYSINFO_EHDR)
+#define AT_SYSINFO_EHDR 33
+#endif
+
+#if !defined(NT_PRSTATUS)
+#define NT_PRSTATUS 1
+#endif
+
+#if !defined(NT_PRPSINFO)
+#define NT_PRPSINFO 3
+#endif
+
+#if !defined(NT_AUXV)
+#define NT_AUXV   6
+#endif
+
+#if !defined(NT_PRXFPREG)
+#define NT_PRXFPREG 0x46e62b7f
+#endif
+
+#if !defined(NT_FPREGSET)
+#define NT_FPREGSET 2
+#endif
+
+#if !defined(SHT_MIPS_DWARF)
+#define SHT_MIPS_DWARF 0x7000001e
+#endif
+
+#ifdef __cplusplus
+}  // extern "C"
+#endif  // __cplusplus
+
+#endif  // GOOGLE_BREAKPAD_COMMON_ANDROID_INCLUDE_ELF_H
diff --git a/google-breakpad/src/common/android/include/sgidefs.h b/google-breakpad/src/common/android/include/sgidefs.h
new file mode 100644
index 0000000..33796dc
--- /dev/null
+++ b/google-breakpad/src/common/android/include/sgidefs.h
@@ -0,0 +1,41 @@
+// Copyright (c) 2013, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef GOOGLE_BREAKPAD_ANDROID_INCLUDE_SGIDEFS_H
+#define GOOGLE_BREAKPAD_ANDROID_INCLUDE_SGIDEFS_H
+
+#ifdef __mips__
+
+// Android doesn't contain sgidefs.h, but does have <asm/sgidefs.h> which
+// contains what we need.
+#include <asm/sgidefs.h>
+
+#endif  // __mips__
+
+#endif  // GOOGLE_BREAKPAD_ANDROID_INCLUDE_SGIDEFS_H
diff --git a/google-breakpad/src/common/android/include/stab.h b/google-breakpad/src/common/android/include/stab.h
new file mode 100644
index 0000000..cd92902
--- /dev/null
+++ b/google-breakpad/src/common/android/include/stab.h
@@ -0,0 +1,100 @@
+// Copyright (c) 2012, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef GOOGLE_BREAKPAD_COMMON_ANDROID_INCLUDE_STAB_H
+#define GOOGLE_BREAKPAD_COMMON_ANDROID_INCLUDE_STAB_H
+
+#include <sys/cdefs.h>
+
+#ifdef __BIONIC_HAVE_STAB_H
+#include <stab.h>
+#else
+
+#ifdef __cplusplus
+extern "C" {
+#endif  // __cplusplus
+
+#define _STAB_CODE_LIST       \
+  _STAB_CODE_DEF(UNDF,0x00)   \
+  _STAB_CODE_DEF(GSYM,0x20)   \
+  _STAB_CODE_DEF(FNAME,0x22)  \
+  _STAB_CODE_DEF(FUN,0x24)    \
+  _STAB_CODE_DEF(STSYM,0x26)  \
+  _STAB_CODE_DEF(LCSYM,0x28)  \
+  _STAB_CODE_DEF(MAIN,0x2a)   \
+  _STAB_CODE_DEF(PC,0x30)     \
+  _STAB_CODE_DEF(NSYMS,0x32)  \
+  _STAB_CODE_DEF(NOMAP,0x34)  \
+  _STAB_CODE_DEF(OBJ,0x38)    \
+  _STAB_CODE_DEF(OPT,0x3c)    \
+  _STAB_CODE_DEF(RSYM,0x40)   \
+  _STAB_CODE_DEF(M2C,0x42)    \
+  _STAB_CODE_DEF(SLINE,0x44)  \
+  _STAB_CODE_DEF(DSLINE,0x46) \
+  _STAB_CODE_DEF(BSLINE,0x48) \
+  _STAB_CODE_DEF(BROWS,0x48)  \
+  _STAB_CODE_DEF(DEFD,0x4a)   \
+  _STAB_CODE_DEF(EHDECL,0x50) \
+  _STAB_CODE_DEF(MOD2,0x50)   \
+  _STAB_CODE_DEF(CATCH,0x54)  \
+  _STAB_CODE_DEF(SSYM,0x60)   \
+  _STAB_CODE_DEF(SO,0x64)     \
+  _STAB_CODE_DEF(LSYM,0x80)   \
+  _STAB_CODE_DEF(BINCL,0x82)  \
+  _STAB_CODE_DEF(SOL,0x84)    \
+  _STAB_CODE_DEF(PSYM,0xa0)   \
+  _STAB_CODE_DEF(EINCL,0xa2)  \
+  _STAB_CODE_DEF(ENTRY,0xa4)  \
+  _STAB_CODE_DEF(LBRAC,0xc0)  \
+  _STAB_CODE_DEF(EXCL,0xc2)   \
+  _STAB_CODE_DEF(SCOPE,0xc4)  \
+  _STAB_CODE_DEF(RBRAC,0xe0)  \
+  _STAB_CODE_DEF(BCOMM,0xe2)  \
+  _STAB_CODE_DEF(ECOMM,0xe4)  \
+  _STAB_CODE_DEF(ECOML,0xe8)  \
+  _STAB_CODE_DEF(NBTEXT,0xf0) \
+  _STAB_CODE_DEF(NBDATA,0xf2) \
+  _STAB_CODE_DEF(NBBSS,0xf4)  \
+  _STAB_CODE_DEF(NBSTS,0xf6)  \
+  _STAB_CODE_DEF(NBLCS,0xf8)  \
+  _STAB_CODE_DEF(LENG,0xfe)
+
+enum __stab_debug_code {
+#define _STAB_CODE_DEF(x,y)  N_##x = y,
+_STAB_CODE_LIST
+#undef _STAB_CODE_DEF
+};
+
+#ifdef __cplusplus
+}  // extern "C"
+#endif  // __cplusplus
+
+#endif  // __BIONIC_HAVE_STAB_H
+
+#endif  // GOOGLE_BREAKPAD_COMMON_ANDROID_INCLUDE_STAB_H
diff --git a/google-breakpad/src/common/android/include/sys/procfs.h b/google-breakpad/src/common/android/include/sys/procfs.h
new file mode 100644
index 0000000..bedae34
--- /dev/null
+++ b/google-breakpad/src/common/android/include/sys/procfs.h
@@ -0,0 +1,121 @@
+// Copyright (c) 2012, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef GOOGLE_BREAKPAD_COMMON_ANDROID_SYS_PROCFS_H
+#define GOOGLE_BREAKPAD_COMMON_ANDROID_SYS_PROCFS_H
+
+#ifdef __BIONIC_HAVE_SYS_PROCFS_H
+
+#include_next <sys/procfs.h>
+
+#else
+
+#include <asm/ptrace.h>
+#include <sys/cdefs.h>
+#include <sys/user.h>
+#include <unistd.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif  // __cplusplus
+
+#if defined(__x86_64__) || defined(__aarch64__)
+typedef unsigned long long elf_greg_t;
+#else
+typedef unsigned long  elf_greg_t;
+#endif
+
+#ifdef __arm__
+#define ELF_NGREG (sizeof(struct user_regs) / sizeof(elf_greg_t))
+#elif defined(__aarch64__)
+#define ELF_NGREG (sizeof(struct user_pt_regs) / sizeof(elf_greg_t))
+#elif defined(__mips__)
+#define ELF_NGREG 45
+#else
+#define ELF_NGREG (sizeof(struct user_regs_struct) / sizeof(elf_greg_t))
+#endif
+
+typedef elf_greg_t elf_gregset_t[ELF_NGREG];
+
+struct elf_siginfo {
+  int si_signo;
+  int si_code;
+  int si_errno;
+};
+
+struct elf_prstatus {
+  struct elf_siginfo pr_info;
+  short              pr_cursig;
+  unsigned long      pr_sigpend;
+  unsigned long      pr_sighold;
+  pid_t              pr_pid;
+  pid_t              pr_ppid;
+  pid_t              pr_pgrp;
+  pid_t              pd_sid;
+  struct timeval     pr_utime;
+  struct timeval     pr_stime;
+  struct timeval     pr_cutime;
+  struct timeval     pr_cstime;
+  elf_gregset_t      pr_reg;
+  int                pr_fpvalid;
+};
+
+#define ELF_PRARGSZ 80
+
+struct elf_prpsinfo {
+  char           pr_state;
+  char           pr_sname;
+  char           pr_zomb;
+  char           pr_nice;
+  unsigned long  pr_flags;
+#ifdef __x86_64__
+  unsigned int   pr_uid;
+  unsigned int   pr_gid;
+#elif defined(__mips__)
+  unsigned long  pr_uid;
+  unsigned long  pr_gid;
+#else
+  unsigned short pr_uid;
+  unsigned short pr_gid;
+#endif
+  int pr_pid;
+  int pr_ppid;
+  int pr_pgrp;
+  int pr_sid;
+  char pr_fname[16];
+  char pr_psargs[ELF_PRARGSZ];
+};
+
+#ifdef __cplusplus
+}  // extern "C"
+#endif  // __cplusplus
+
+#endif  // __BIONIC_HAVE_SYS_PROCFS_H
+
+#endif  // GOOGLE_BREAKPAD_COMMON_ANDROID_SYS_PROCFS_H
diff --git a/google-breakpad/src/common/android/include/sys/signal.h b/google-breakpad/src/common/android/include/sys/signal.h
new file mode 100644
index 0000000..20c81e9
--- /dev/null
+++ b/google-breakpad/src/common/android/include/sys/signal.h
@@ -0,0 +1,35 @@
+// Copyright (c) 2012, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef GOOGLE_BREAKPAD_COMMON_ANDROID_INCLUDE_SYS_SIGNAL_H
+#define GOOGLE_BREAKPAD_COMMON_ANDROID_INCLUDE_SYS_SIGNAL_H
+
+#include <signal.h>
+
+#endif  // GOOGLE_BREAKPAD_COMMON_ANDROID_INCLUDE_SYS_SIGNAL_H
diff --git a/google-breakpad/src/common/android/include/sys/user.h b/google-breakpad/src/common/android/include/sys/user.h
new file mode 100644
index 0000000..ddb9ec7
--- /dev/null
+++ b/google-breakpad/src/common/android/include/sys/user.h
@@ -0,0 +1,138 @@
+// Copyright (c) 2012, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef GOOGLE_BREAKPAD_COMMON_ANDROID_INCLUDE_SYS_USER_H
+#define GOOGLE_BREAKPAD_COMMON_ANDROID_INCLUDE_SYS_USER_H
+
+// The purpose of this file is to glue the mismatching headers (Android NDK vs
+// glibc) and therefore avoid doing otherwise awkward #ifdefs in the code.
+// The following quirks are currently handled by this file:
+// - MIPS: Keep using forked definitions of user.h structs. The definition in
+//     the NDK is completely different. Internal bug b/18097715
+// - i386: Use the Android NDK but alias user_fxsr_struct > user_fpxregs_struct.
+// - x86_64: Override a typo in user_fpregs_struct (mxcsr_mask -> mxcr_mask).
+//     The typo has been fixed in NDK r10d, but a preprocessor workaround is
+//     required to make breakpad build with r10c and lower (more details below).
+// - Other platforms: Just use the Android NDK unchanged.
+
+#ifdef __mips__
+#ifdef __cplusplus
+extern "C" {
+#endif  // __cplusplus
+
+#define EF_REG0 6
+#define EF_REG1 7
+#define EF_REG2 8
+#define EF_REG3 9
+#define EF_REG4 10
+#define EF_REG5 11
+#define EF_REG6 12
+#define EF_REG7 13
+#define EF_REG8 14
+#define EF_REG9 15
+#define EF_REG10 16
+#define EF_REG11 17
+#define EF_REG12 18
+#define EF_REG13 19
+#define EF_REG14 20
+#define EF_REG15 21
+#define EF_REG16 22
+#define EF_REG17 23
+#define EF_REG18 24
+#define EF_REG19 25
+#define EF_REG20 26
+#define EF_REG21 27
+#define EF_REG22 28
+#define EF_REG23 29
+#define EF_REG24 30
+#define EF_REG25 31
+
+/*
+ * k0/k1 unsaved
+ */
+#define EF_REG26 32
+#define EF_REG27 33
+#define EF_REG28 34
+#define EF_REG29 35
+#define EF_REG30 36
+#define EF_REG31 37
+
+/*
+ * Saved special registers
+ */
+#define EF_LO 38
+#define EF_HI 39
+#define EF_CP0_EPC 40
+#define EF_CP0_BADVADDR 41
+#define EF_CP0_STATUS 42
+#define EF_CP0_CAUSE 43
+
+struct user_regs_struct {
+  unsigned long long regs[32];
+  unsigned long long lo;
+  unsigned long long hi;
+  unsigned long long epc;
+  unsigned long long badvaddr;
+  unsigned long long status;
+  unsigned long long cause;
+};
+
+struct user_fpregs_struct {
+  unsigned long long regs[32];
+  unsigned int fpcsr;
+  unsigned int fir;
+};
+
+#ifdef __cplusplus
+}  // extern "C"
+#endif  // __cplusplus
+
+#else  //  __mips__
+
+// TODO(primiano): remove this after Chromium has stably rolled to NDK r10d.
+// Historical context: NDK releases < r10d had a typo in sys/user.h (mxcsr_mask
+// instead of mxcr_mask), which is fixed in r10d. However, just switching to use
+// the correct one (mxcr_mask) would put Breakpad in a state where it can be
+// rolled in chromium only atomically with the r10d NDK. A revert of either
+// project (android_tools, breakpad) would make the other one unrollable.
+// This hack makes breakpad code compatible with both r10c and r10d NDKs,
+// reducing the dependency entangling with android_tools.
+#if defined(__x86_64__)
+#define mxcsr_mask mxcr_mask
+#endif
+
+#include_next <sys/user.h>
+
+#if defined(__x86_64__)
+#undef mxcsr_mask
+#endif
+
+#endif  // __mips__
+
+#endif  // GOOGLE_BREAKPAD_COMMON_ANDROID_INCLUDE_SYS_USER_H
diff --git a/google-breakpad/src/common/android/include/ucontext.h b/google-breakpad/src/common/android/include/ucontext.h
new file mode 100644
index 0000000..29db8ad
--- /dev/null
+++ b/google-breakpad/src/common/android/include/ucontext.h
@@ -0,0 +1,56 @@
+// Copyright (c) 2012, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef GOOGLE_BREAKPAD_COMMON_ANDROID_INCLUDE_UCONTEXT_H
+#define GOOGLE_BREAKPAD_COMMON_ANDROID_INCLUDE_UCONTEXT_H
+
+#include <sys/cdefs.h>
+
+#ifdef __BIONIC_UCONTEXT_H
+#include <ucontext.h>
+#else
+
+#include <sys/ucontext.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif  // __cplusplus
+
+// Provided by src/android/common/breakpad_getcontext.S
+int breakpad_getcontext(ucontext_t* ucp);
+
+#define getcontext(x)   breakpad_getcontext(x)
+
+#ifdef __cplusplus
+}  // extern "C"
+#endif  // __cplusplus
+
+#endif  // __BIONIC_UCONTEXT_H
+
+#endif  // GOOGLE_BREAKPAD_COMMON_ANDROID_INCLUDE_UCONTEXT_H
diff --git a/google-breakpad/src/common/android/testing/include/wchar.h b/google-breakpad/src/common/android/testing/include/wchar.h
new file mode 100644
index 0000000..85373fd
--- /dev/null
+++ b/google-breakpad/src/common/android/testing/include/wchar.h
@@ -0,0 +1,76 @@
+// Copyright (c) 2012, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Android doesn't provide wcscasecmp(), so provide an alternative here.
+//
+// Note that this header is not needed when Breakpad is compiled against
+// a recent version of Googletest. It shall be considered for removal once
+// src/testing/ is updated to an appropriate revision in the future.
+
+#ifndef GOOGLEBREAKPAD_COMMON_ANDROID_INCLUDE_WCHAR_H
+#define GOOGLEBREAKPAD_COMMON_ANDROID_INCLUDE_WCHAR_H
+
+#include_next <wchar.h>
+
+#if !defined(__aarch64__) && !defined(__x86_64__) && \
+    !(defined(__mips__) && _MIPS_SIM == _ABI64)
+
+// This needs to be in an extern "C" namespace, or Googletest will not
+// compile against it.
+#ifdef __cplusplus
+extern "C" {
+#endif  // __cplusplus
+
+static wchar_t inline wcstolower(wchar_t ch) {
+  if (ch >= L'a' && ch <= L'A')
+    ch -= L'a' - L'A';
+  return ch;
+}
+
+static int inline wcscasecmp(const wchar_t* s1, const wchar_t* s2) {
+  for (;;) {
+    wchar_t c1 = wcstolower(*s1);
+    wchar_t c2 = wcstolower(*s2);
+    if (c1 < c2)
+      return -1;
+    if (c1 > c2)
+      return 1;
+    if (c1 == L'0')
+      return 0;
+    s1++;
+    s2++;
+  }
+}
+
+#ifdef __cplusplus
+}  // extern "C"
+#endif  // __cplusplus
+#endif
+
+#endif  // GOOGLEBREAKPAD_COMMON_ANDROID_INCLUDE_WCHAR_H
diff --git a/google-breakpad/src/common/android/testing/mkdtemp.h b/google-breakpad/src/common/android/testing/mkdtemp.h
new file mode 100644
index 0000000..b86e2cd
--- /dev/null
+++ b/google-breakpad/src/common/android/testing/mkdtemp.h
@@ -0,0 +1,110 @@
+// Copyright (c) 2012, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// mkdtemp() wasn't declared in <stdlib.h> until NDK r9b due to a simple
+// packaging bug (the function has always been implemented in all versions
+// of the C library). This header is provided to build Breakpad with earlier
+// NDK revisions (e.g. the one used by Chromium). It may be removed in the
+// future once all major projects upgrade to use a more recent NDK.
+//
+// The reason this is inlined here is to avoid linking a new object file
+// into each unit test program (i.e. keep build files simple).
+
+#ifndef GOOGLE_BREAKPAD_COMMON_ANDROID_TESTING_MKDTEMP_H
+#define GOOGLE_BREAKPAD_COMMON_ANDROID_TESTING_MKDTEMP_H
+
+#include <assert.h>
+#include <errno.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/stat.h>
+
+// Using a macro renaming trick here is necessary when building against
+// NDK r9b. Otherwise the compiler will complain that calls to mkdtemp()
+// are ambiguous.
+#define mkdtemp breakpad_mkdtemp
+
+namespace {
+
+char* breakpad_mkdtemp(char* path) {
+  if (path == NULL) {
+    errno = EINVAL;
+    return NULL;
+  }
+
+  // 'path' must be terminated with six 'X'
+  const char kSuffix[] = "XXXXXX";
+  const size_t kSuffixLen = strlen(kSuffix);
+  char* path_end = path + strlen(path);
+
+  if (static_cast<size_t>(path_end - path) < kSuffixLen ||
+      memcmp(path_end - kSuffixLen, kSuffix, kSuffixLen) != 0) {
+    errno = EINVAL;
+    return NULL;
+  }
+
+  // If 'path' contains a directory separator, check that it exists to
+  // avoid looping later.
+  char* sep = strrchr(path, '/');
+  if (sep != NULL) {
+    struct stat st;
+    int ret;
+    *sep = '\0';  // temporarily zero-terminate the dirname.
+    ret = stat(path, &st);
+    *sep = '/';   // restore full path.
+    if (ret < 0)
+      return NULL;
+    if (!S_ISDIR(st.st_mode)) {
+      errno = ENOTDIR;
+      return NULL;
+    }
+  }
+
+  // Loop. On each iteration, replace the XXXXXX suffix with a random
+  // number.
+  int tries;
+  for (tries = 128; tries > 0; tries--) {
+    int random = rand() % 1000000;
+
+    snprintf(path_end - kSuffixLen, kSuffixLen + 1, "%0d", random);
+    if (mkdir(path, 0700) == 0)
+      return path;  // Success
+
+    if (errno != EEXIST)
+      return NULL;
+  }
+
+  assert(errno == EEXIST);
+  return NULL;
+}
+
+}  // namespace
+
+#endif  // GOOGLE_BREAKPAD_COMMON_ANDROID_TESTING_MKDTEMP_H
diff --git a/google-breakpad/src/common/android/testing/pthread_fixes.h b/google-breakpad/src/common/android/testing/pthread_fixes.h
new file mode 100644
index 0000000..15c6309
--- /dev/null
+++ b/google-breakpad/src/common/android/testing/pthread_fixes.h
@@ -0,0 +1,99 @@
+// Copyright (c) 2012, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// This contains Pthread-related functions not provided by the Android NDK
+// but required by the Breakpad unit test. The functions are inlined here
+// in a C++ anonymous namespace in order to keep the build files simples.
+
+#ifndef GOOGLE_BREAKPAD_COMMON_ANDROID_TESTING_PTHREAD_FIXES_H
+#define GOOGLE_BREAKPAD_COMMON_ANDROID_TESTING_PTHREAD_FIXES_H
+
+#include <pthread.h>
+
+namespace {
+
+// Android doesn't provide pthread_barrier_t for now.
+#ifndef PTHREAD_BARRIER_SERIAL_THREAD
+
+// Anything except 0 will do here.
+#define PTHREAD_BARRIER_SERIAL_THREAD  0x12345
+
+typedef struct {
+  pthread_mutex_t  mutex;
+  pthread_cond_t   cond;
+  unsigned         count;
+} pthread_barrier_t;
+
+int pthread_barrier_init(pthread_barrier_t* barrier,
+                         const void* /* barrier_attr */,
+                         unsigned count) {
+  barrier->count = count;
+  pthread_mutex_init(&barrier->mutex, NULL);
+  pthread_cond_init(&barrier->cond, NULL);
+  return 0;
+}
+
+int pthread_barrier_wait(pthread_barrier_t* barrier) {
+  // Lock the mutex
+  pthread_mutex_lock(&barrier->mutex);
+  // Decrement the count. If this is the first thread to reach 0, wake up
+  // waiters, unlock the mutex, then return PTHREAD_BARRIER_SERIAL_THREAD.
+  if (--barrier->count == 0) {
+    // First thread to reach the barrier
+    pthread_cond_broadcast(&barrier->cond);
+    pthread_mutex_unlock(&barrier->mutex);
+    return PTHREAD_BARRIER_SERIAL_THREAD;
+  }
+  // Otherwise, wait for other threads until the count reaches 0, then
+  // return 0 to indicate this is not the first thread.
+  do {
+    pthread_cond_wait(&barrier->cond, &barrier->mutex);
+  } while (barrier->count > 0);
+
+  pthread_mutex_unlock(&barrier->mutex);
+  return 0;
+}
+
+int pthread_barrier_destroy(pthread_barrier_t *barrier) {
+  barrier->count = 0;
+  pthread_cond_destroy(&barrier->cond);
+  pthread_mutex_destroy(&barrier->mutex);
+  return 0;
+}
+
+#endif  // defined(PTHREAD_BARRIER_SERIAL_THREAD)
+
+int pthread_yield(void) {
+  sched_yield();
+  return 0;
+}
+
+}  // namespace
+
+#endif  // GOOGLE_BREAKPAD_COMMON_ANDROID_TESTING_PTHREAD_FIXES_H
diff --git a/google-breakpad/src/common/android/ucontext_constants.h b/google-breakpad/src/common/android/ucontext_constants.h
new file mode 100644
index 0000000..1932d57
--- /dev/null
+++ b/google-breakpad/src/common/android/ucontext_constants.h
@@ -0,0 +1,144 @@
+// Copyright (c) 2012, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// This header can be included either from a C, C++ or Assembly file.
+// Its purpose is to contain constants that must match the offsets of
+// various fields in ucontext_t.
+//
+// They should match the definitions from
+// src/common/android/include/sys/ucontext.h
+//
+// Used by src/common/android/breakpad_getcontext.S
+// Tested by src/common/android/testing/breakpad_getcontext_unittest.cc
+
+#ifndef GOOGLEBREAKPAD_COMMON_ANDROID_UCONTEXT_CONSTANTS_H
+#define GOOGLEBREAKPAD_COMMON_ANDROID_UCONTEXT_CONSTANTS_H
+
+#if defined(__arm__)
+
+#define  MCONTEXT_GREGS_OFFSET     32
+#define  UCONTEXT_SIGMASK_OFFSET   104
+
+#elif defined(__aarch64__)
+
+#define  UCONTEXT_SIGMASK_OFFSET     40
+
+#define  MCONTEXT_GREGS_OFFSET       184
+#define  MCONTEXT_SP_OFFSET          432
+#define  MCONTEXT_PC_OFFSET          440
+#define  MCONTEXT_PSTATE_OFFSET      448
+#define  MCONTEXT_EXTENSION_OFFSET   464
+
+#define  FPSIMD_MAGIC                0x46508001
+
+#define  FPSIMD_CONTEXT_MAGIC_OFFSET 0
+#define  FPSIMD_CONTEXT_SIZE_OFFSET  4
+#define  FPSIMD_CONTEXT_FPSR_OFFSET  8
+#define  FPSIMD_CONTEXT_FPCR_OFFSET  12
+#define  FPSIMD_CONTEXT_VREGS_OFFSET 16
+#define  FPSIMD_CONTEXT_SIZE         528
+
+#define  REGISTER_SIZE               8
+#define  SIMD_REGISTER_SIZE          16
+
+#elif defined(__i386__)
+
+#define  MCONTEXT_GREGS_OFFSET     20
+#define  MCONTEXT_GS_OFFSET        (MCONTEXT_GREGS_OFFSET + 0*4)
+#define  MCONTEXT_FS_OFFSET        (MCONTEXT_GREGS_OFFSET + 1*4)
+#define  MCONTEXT_ES_OFFSET        (MCONTEXT_GREGS_OFFSET + 2*4)
+#define  MCONTEXT_DS_OFFSET        (MCONTEXT_GREGS_OFFSET + 3*4)
+#define  MCONTEXT_EDI_OFFSET       (MCONTEXT_GREGS_OFFSET + 4*4)
+#define  MCONTEXT_ESI_OFFSET       (MCONTEXT_GREGS_OFFSET + 5*4)
+#define  MCONTEXT_EBP_OFFSET       (MCONTEXT_GREGS_OFFSET + 6*4)
+#define  MCONTEXT_ESP_OFFSET       (MCONTEXT_GREGS_OFFSET + 7*4)
+#define  MCONTEXT_EBX_OFFSET       (MCONTEXT_GREGS_OFFSET + 8*4)
+#define  MCONTEXT_EDX_OFFSET       (MCONTEXT_GREGS_OFFSET + 9*4)
+#define  MCONTEXT_ECX_OFFSET       (MCONTEXT_GREGS_OFFSET + 10*4)
+#define  MCONTEXT_EAX_OFFSET       (MCONTEXT_GREGS_OFFSET + 11*4)
+#define  MCONTEXT_TRAPNO_OFFSET    (MCONTEXT_GREGS_OFFSET + 12*4)
+#define  MCONTEXT_ERR_OFFSET       (MCONTEXT_GREGS_OFFSET + 13*4)
+#define  MCONTEXT_EIP_OFFSET       (MCONTEXT_GREGS_OFFSET + 14*4)
+#define  MCONTEXT_CS_OFFSET        (MCONTEXT_GREGS_OFFSET + 15*4)
+#define  MCONTEXT_EFL_OFFSET       (MCONTEXT_GREGS_OFFSET + 16*4)
+#define  MCONTEXT_UESP_OFFSET      (MCONTEXT_GREGS_OFFSET + 17*4)
+#define  MCONTEXT_SS_OFFSET        (MCONTEXT_GREGS_OFFSET + 18*4)
+
+#define  UCONTEXT_SIGMASK_OFFSET   108
+
+#define  UCONTEXT_FPREGS_OFFSET       96
+#define  UCONTEXT_FPREGS_MEM_OFFSET   116
+
+#elif defined(__mips__)
+
+#if _MIPS_SIM == _ABIO32
+#define  MCONTEXT_PC_OFFSET        32
+#define  MCONTEXT_GREGS_OFFSET     40
+#define  MCONTEXT_FPREGS_OFFSET    296
+#define  MCONTEXT_FPC_CSR          556
+#define  UCONTEXT_SIGMASK_OFFSET   616
+#else
+#define  MCONTEXT_GREGS_OFFSET     40
+#define  MCONTEXT_FPREGS_OFFSET    296
+#define  MCONTEXT_PC_OFFSET        616
+#define  MCONTEXT_FPC_CSR          624
+#define  UCONTEXT_SIGMASK_OFFSET   640
+#endif
+
+#elif defined(__x86_64__)
+
+#define MCONTEXT_GREGS_OFFSET     40
+#define UCONTEXT_SIGMASK_OFFSET   296
+
+#define MCONTEXT_GREGS_R8    40
+#define MCONTEXT_GREGS_R9    48
+#define MCONTEXT_GREGS_R10   56
+#define MCONTEXT_GREGS_R11   64
+#define MCONTEXT_GREGS_R12   72
+#define MCONTEXT_GREGS_R13   80
+#define MCONTEXT_GREGS_R14   88
+#define MCONTEXT_GREGS_R15   96
+#define MCONTEXT_GREGS_RDI   104
+#define MCONTEXT_GREGS_RSI   112
+#define MCONTEXT_GREGS_RBP   120
+#define MCONTEXT_GREGS_RBX   128
+#define MCONTEXT_GREGS_RDX   136
+#define MCONTEXT_GREGS_RAX   144
+#define MCONTEXT_GREGS_RCX   152
+#define MCONTEXT_GREGS_RSP   160
+#define MCONTEXT_GREGS_RIP   168
+#define MCONTEXT_FPREGS_PTR  224
+#define MCONTEXT_FPREGS_MEM  304
+#define FPREGS_OFFSET_MXCSR  24
+
+#else
+#error "This header has not been ported for your CPU"
+#endif
+
+#endif  // GOOGLEBREAKPAD_COMMON_ANDROID_UCONTEXT_CONSTANTS_H
diff --git a/google-breakpad/src/common/basictypes.h b/google-breakpad/src/common/basictypes.h
new file mode 100644
index 0000000..9426c1f
--- /dev/null
+++ b/google-breakpad/src/common/basictypes.h
@@ -0,0 +1,58 @@
+// Copyright (c) 2011 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef COMMON_BASICTYPES_H_
+#define COMMON_BASICTYPES_H_
+
+// A macro to disallow the copy constructor and operator= functions
+// This should be used in the private: declarations for a class
+#ifndef DISALLOW_COPY_AND_ASSIGN
+#define DISALLOW_COPY_AND_ASSIGN(TypeName) \
+  TypeName(const TypeName&);               \
+  void operator=(const TypeName&)
+#endif  // DISALLOW_COPY_AND_ASSIGN
+
+namespace google_breakpad {
+
+// Used to explicitly mark the return value of a function as unused. If you are
+// really sure you don't want to do anything with the return value of a function
+// that has been marked with __attribute__((warn_unused_result)), wrap it with
+// this. Example:
+//
+//   scoped_ptr<MyType> my_var = ...;
+//   if (TakeOwnership(my_var.get()) == SUCCESS)
+//     ignore_result(my_var.release());
+//
+template<typename T>
+inline void ignore_result(const T&) {
+}
+
+}  // namespace google_breakpad
+
+#endif  // COMMON_BASICTYPES_H_
diff --git a/google-breakpad/src/common/byte_cursor.h b/google-breakpad/src/common/byte_cursor.h
new file mode 100644
index 0000000..accd54e
--- /dev/null
+++ b/google-breakpad/src/common/byte_cursor.h
@@ -0,0 +1,265 @@
+// -*- mode: c++ -*-
+
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// byte_cursor.h: Classes for parsing values from a buffer of bytes.
+// The ByteCursor class provides a convenient interface for reading
+// fixed-size integers of arbitrary endianness, being thorough about
+// checking for buffer overruns.
+
+#ifndef COMMON_BYTE_CURSOR_H_
+#define COMMON_BYTE_CURSOR_H_
+
+#include <assert.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+#include <string>
+
+#include "common/using_std_string.h"
+
+namespace google_breakpad {
+
+// A buffer holding a series of bytes.
+struct ByteBuffer {
+  ByteBuffer() : start(0), end(0) { }
+  ByteBuffer(const uint8_t *set_start, size_t set_size)
+      : start(set_start), end(set_start + set_size) { }
+  ~ByteBuffer() { };
+
+  // Equality operators. Useful in unit tests, and when we're using
+  // ByteBuffers to refer to regions of a larger buffer.
+  bool operator==(const ByteBuffer &that) const {
+    return start == that.start && end == that.end;
+  }
+  bool operator!=(const ByteBuffer &that) const {
+    return start != that.start || end != that.end;
+  }
+
+  // Not C++ style guide compliant, but this definitely belongs here.
+  size_t Size() const {
+    assert(start <= end);
+    return end - start;
+  }
+
+  const uint8_t *start, *end;
+};
+
+// A cursor pointing into a ByteBuffer that can parse numbers of various
+// widths and representations, strings, and data blocks, advancing through
+// the buffer as it goes. All ByteCursor operations check that accesses
+// haven't gone beyond the end of the enclosing ByteBuffer.
+class ByteCursor {
+ public:
+  // Create a cursor reading bytes from the start of BUFFER. By default, the
+  // cursor reads multi-byte values in little-endian form.
+  ByteCursor(const ByteBuffer *buffer, bool big_endian = false)
+      : buffer_(buffer), here_(buffer->start), 
+        big_endian_(big_endian), complete_(true) { }
+
+  // Accessor and setter for this cursor's endianness flag.
+  bool big_endian() const { return big_endian_; }
+  void set_big_endian(bool big_endian) { big_endian_ = big_endian; }
+
+  // Accessor and setter for this cursor's current position. The setter
+  // returns a reference to this cursor.
+  const uint8_t *here() const { return here_; }
+  ByteCursor &set_here(const uint8_t *here) {
+    assert(buffer_->start <= here && here <= buffer_->end);
+    here_ = here;
+    return *this;
+  }
+
+  // Return the number of bytes available to read at the cursor.
+  size_t Available() const { return size_t(buffer_->end - here_); }
+
+  // Return true if this cursor is at the end of its buffer.
+  bool AtEnd() const { return Available() == 0; }
+
+  // When used as a boolean value this cursor converts to true if all
+  // prior reads have been completed, or false if we ran off the end
+  // of the buffer.
+  operator bool() const { return complete_; }
+
+  // Read a SIZE-byte integer at this cursor, signed if IS_SIGNED is true,
+  // unsigned otherwise, using the cursor's established endianness, and set
+  // *RESULT to the number. If we read off the end of our buffer, clear
+  // this cursor's complete_ flag, and store a dummy value in *RESULT.
+  // Return a reference to this cursor.
+  template<typename T>
+  ByteCursor &Read(size_t size, bool is_signed, T *result) {
+    if (CheckAvailable(size)) {
+      T v = 0;
+      if (big_endian_) {
+        for (size_t i = 0; i < size; i++)
+          v = (v << 8) + here_[i];
+      } else {
+        // This loop condition looks weird, but size_t is unsigned, so
+        // decrementing i after it is zero yields the largest size_t value.
+        for (size_t i = size - 1; i < size; i--)
+          v = (v << 8) + here_[i];
+      }
+      if (is_signed && size < sizeof(T)) {
+        size_t sign_bit = (T)1 << (size * 8 - 1);
+        v = (v ^ sign_bit) - sign_bit;
+      }
+      here_ += size;
+      *result = v;
+    } else {
+      *result = (T) 0xdeadbeef;
+    }
+    return *this;
+  }
+
+  // Read an integer, using the cursor's established endianness and
+  // *RESULT's size and signedness, and set *RESULT to the number. If we
+  // read off the end of our buffer, clear this cursor's complete_ flag.
+  // Return a reference to this cursor.
+  template<typename T>
+  ByteCursor &operator>>(T &result) {
+    bool T_is_signed = (T)-1 < 0;
+    return Read(sizeof(T), T_is_signed, &result); 
+  }
+
+  // Copy the SIZE bytes at the cursor to BUFFER, and advance this
+  // cursor to the end of them. If we read off the end of our buffer,
+  // clear this cursor's complete_ flag, and set *POINTER to NULL.
+  // Return a reference to this cursor.
+  ByteCursor &Read(uint8_t *buffer, size_t size) {
+    if (CheckAvailable(size)) {
+      memcpy(buffer, here_, size);
+      here_ += size;
+    }
+    return *this;
+  }
+
+  // Set STR to a copy of the '\0'-terminated string at the cursor. If the
+  // byte buffer does not contain a terminating zero, clear this cursor's
+  // complete_ flag, and set STR to the empty string. Return a reference to
+  // this cursor.
+  ByteCursor &CString(string *str) {
+    const uint8_t *end
+      = static_cast<const uint8_t *>(memchr(here_, '\0', Available()));
+    if (end) {
+      str->assign(reinterpret_cast<const char *>(here_), end - here_);
+      here_ = end + 1;
+    } else {
+      str->clear();
+      here_ = buffer_->end;
+      complete_ = false;
+    }
+    return *this;
+  }
+
+  // Like CString(STR), but extract the string from a fixed-width buffer
+  // LIMIT bytes long, which may or may not contain a terminating '\0'
+  // byte. Specifically:
+  //
+  // - If there are not LIMIT bytes available at the cursor, clear the
+  //   cursor's complete_ flag and set STR to the empty string.
+  //
+  // - Otherwise, if the LIMIT bytes at the cursor contain any '\0'
+  //   characters, set *STR to a copy of the bytes before the first '\0',
+  //   and advance the cursor by LIMIT bytes.
+  //   
+  // - Otherwise, set *STR to a copy of those LIMIT bytes, and advance the
+  //   cursor by LIMIT bytes.
+  ByteCursor &CString(string *str, size_t limit) {
+    if (CheckAvailable(limit)) {
+      const uint8_t *end
+        = static_cast<const uint8_t *>(memchr(here_, '\0', limit));
+      if (end)
+        str->assign(reinterpret_cast<const char *>(here_), end - here_);
+      else
+        str->assign(reinterpret_cast<const char *>(here_), limit);
+      here_ += limit;
+    } else {
+      str->clear();
+    }
+    return *this;
+  }
+
+  // Set *POINTER to point to the SIZE bytes at the cursor, and advance
+  // this cursor to the end of them. If SIZE is omitted, don't move the
+  // cursor. If we read off the end of our buffer, clear this cursor's
+  // complete_ flag, and set *POINTER to NULL. Return a reference to this
+  // cursor.
+  ByteCursor &PointTo(const uint8_t **pointer, size_t size = 0) {
+    if (CheckAvailable(size)) {
+      *pointer = here_;
+      here_ += size;
+    } else {
+      *pointer = NULL;
+    }
+    return *this;
+  }
+
+  // Skip SIZE bytes at the cursor. If doing so would advance us off
+  // the end of our buffer, clear this cursor's complete_ flag, and
+  // set *POINTER to NULL. Return a reference to this cursor.
+  ByteCursor &Skip(size_t size) {
+    if (CheckAvailable(size))
+      here_ += size;
+    return *this;
+  }
+
+ private:
+  // If there are at least SIZE bytes available to read from the buffer,
+  // return true. Otherwise, set here_ to the end of the buffer, set
+  // complete_ to false, and return false.
+  bool CheckAvailable(size_t size) {
+    if (Available() >= size) {
+      return true;
+    } else {
+      here_ = buffer_->end;
+      complete_ = false;
+      return false;
+    }
+  }
+
+  // The buffer we're reading bytes from.
+  const ByteBuffer *buffer_;
+
+  // The next byte within buffer_ that we'll read.
+  const uint8_t *here_;
+
+  // True if we should read numbers in big-endian form; false if we
+  // should read in little-endian form.
+  bool big_endian_;
+
+  // True if we've been able to read all we've been asked to.
+  bool complete_;
+};
+
+}  // namespace google_breakpad
+
+#endif  // COMMON_BYTE_CURSOR_H_
diff --git a/google-breakpad/src/common/byte_cursor_unittest.cc b/google-breakpad/src/common/byte_cursor_unittest.cc
new file mode 100644
index 0000000..06bfd89
--- /dev/null
+++ b/google-breakpad/src/common/byte_cursor_unittest.cc
@@ -0,0 +1,776 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// byte_cursor_unittest.cc: Unit tests for google_breakpad::ByteBuffer
+// and google_breakpad::ByteCursor.
+
+#include <string>
+
+#include <string.h>
+
+#include "breakpad_googletest_includes.h"
+#include "common/byte_cursor.h"
+#include "common/using_std_string.h"
+
+using google_breakpad::ByteBuffer;
+using google_breakpad::ByteCursor;
+
+TEST(Buffer, SizeOfNothing) {
+  uint8_t data[1];
+  ByteBuffer buffer(data, 0);
+  EXPECT_EQ(0U, buffer.Size());
+}
+
+TEST(Buffer, SizeOfSomething) {
+  uint8_t data[10];
+  ByteBuffer buffer(data, sizeof(data));
+  EXPECT_EQ(10U, buffer.Size());
+}
+
+TEST(Extent, AvailableEmpty) {
+  uint8_t data[1];
+  ByteBuffer buffer(data, 0);
+  ByteCursor cursor(&buffer);
+  EXPECT_EQ(0U, cursor.Available());
+}
+
+TEST(Extent, AtEndEmpty) {
+  uint8_t data[1];
+  ByteBuffer buffer(data, 0);
+  ByteCursor cursor(&buffer);
+  EXPECT_TRUE(cursor.AtEnd());
+}
+
+TEST(Extent, AsBoolEmpty) {
+  uint8_t data[1];
+  ByteBuffer buffer(data, 0);
+  ByteCursor cursor(&buffer);
+  EXPECT_TRUE(cursor);
+}
+
+TEST(Extent, AvailableSome) {
+  uint8_t data[10];
+  ByteBuffer buffer(data, sizeof(data));
+  ByteCursor cursor(&buffer);
+  EXPECT_EQ(10U, cursor.Available());
+}
+
+TEST(Extent, AtEndSome) {
+  uint8_t data[10];
+  ByteBuffer buffer(data, sizeof(data));
+  ByteCursor cursor(&buffer);
+  EXPECT_FALSE(cursor.AtEnd());
+  EXPECT_TRUE(cursor.Skip(sizeof(data)).AtEnd());
+}
+
+TEST(Extent, AsBoolSome) {
+  uint8_t data[10];
+  ByteBuffer buffer(data, sizeof(data));
+  ByteCursor cursor(&buffer);
+  EXPECT_TRUE(cursor);
+  EXPECT_TRUE(cursor.Skip(sizeof(data)));
+  EXPECT_FALSE(cursor.Skip(1));
+}
+
+TEST(Extent, Cursor) {
+  uint8_t data[] = { 0xf7,
+                     0x9f, 0xbe,
+                     0x67, 0xfb, 0xd3, 0x58,
+                     0x6f, 0x36, 0xde, 0xd1,
+                     0x2a, 0x2a, 0x2a };
+  ByteBuffer buffer(data, sizeof(data));
+  ByteCursor cursor(&buffer);
+
+  uint8_t a;
+  uint16_t b;
+  uint32_t c;
+  uint32_t d;
+  uint8_t stars[3];
+
+  EXPECT_EQ(data + 0U, cursor.here());
+
+  EXPECT_TRUE(cursor >> a);
+  EXPECT_EQ(data + 1U, cursor.here());
+
+  EXPECT_TRUE(cursor >> b);
+  EXPECT_EQ(data + 3U, cursor.here());
+
+  EXPECT_TRUE(cursor >> c);
+  EXPECT_EQ(data + 7U, cursor.here());
+
+  EXPECT_TRUE(cursor.Skip(4));
+  EXPECT_EQ(data + 11U, cursor.here());
+
+  EXPECT_TRUE(cursor.Read(stars, 3));
+  EXPECT_EQ(data + 14U, cursor.here());
+
+  EXPECT_FALSE(cursor >> d);
+  EXPECT_EQ(data + 14U, cursor.here());
+}
+
+TEST(Extent, SetOffset) {
+  uint8_t data[] = { 0x5c, 0x79, 0x8c, 0xd5 };
+  ByteBuffer buffer(data, sizeof(data));
+  ByteCursor cursor(&buffer);
+
+  uint8_t a, b, c, d, e;
+  EXPECT_TRUE(cursor >> a);
+  EXPECT_EQ(0x5cU, a);
+  EXPECT_EQ(data + 1U, cursor.here());
+  EXPECT_TRUE(((cursor >> b).set_here(data + 3) >> c).set_here(data + 1)
+              >> d >> e);
+  EXPECT_EQ(0x79U, b);
+  EXPECT_EQ(0xd5U, c);
+  EXPECT_EQ(0x79U, d);
+  EXPECT_EQ(0x8cU, e);
+  EXPECT_EQ(data + 3U, cursor.here());
+}
+
+TEST(BigEndian, Signed1) {
+  uint8_t data[] = { 0x00, 0x7f, 0x80, 0xff };
+  ByteBuffer buffer(data, sizeof(data));
+  ByteCursor cursor(&buffer);
+  cursor.set_big_endian(true);
+  int a, b, c, d, e;
+  ASSERT_TRUE(cursor
+              .Read(1, true, &a)
+              .Read(1, true, &b)
+              .Read(1, true, &c)
+              .Read(1, true, &d));
+  EXPECT_EQ(0,     a);
+  EXPECT_EQ(0x7f,  b);
+  EXPECT_EQ(-0x80, c);
+  EXPECT_EQ(-1,    d);
+  EXPECT_TRUE(cursor.AtEnd());
+  EXPECT_FALSE(cursor.Read(1, true, &e));
+}
+
+TEST(BigEndian, Signed2) {
+  uint8_t data[] = { 0x00, 0x00,   0x00, 0x80,   0x7f, 0xff,
+                     0x80, 0x00,   0x80, 0x80,   0xff, 0xff,
+                     0x39, 0xf1,   0x8a, 0xbc,   0x5a, 0xec };
+  ByteBuffer buffer(data, sizeof(data));
+  ByteCursor cursor(&buffer, true);
+  int a, b, c, d, e, f, g, h, i, j;
+  ASSERT_TRUE(cursor
+              .Read(2, true, &a)
+              .Read(2, true, &b)
+              .Read(2, true, &c)
+              .Read(2, true, &d)
+              .Read(2, true, &e)
+              .Read(2, true, &f)
+              .Read(2, true, &g)
+              .Read(2, true, &h)
+              .Read(2, true, &i));
+  EXPECT_EQ(0,       a);
+  EXPECT_EQ(0x80,    b);
+  EXPECT_EQ(0x7fff,  c);
+  EXPECT_EQ(-0x8000, d);
+  EXPECT_EQ(-0x7f80, e);
+  EXPECT_EQ(-1,      f);
+  EXPECT_EQ(0x39f1,  g);
+  EXPECT_EQ(-0x7544, h);
+  EXPECT_EQ(0x5aec,  i);
+  EXPECT_TRUE(cursor.AtEnd());
+  EXPECT_FALSE(cursor.Read(2, true, &j));
+}
+
+TEST(BigEndian, Signed4) {
+  uint8_t data[] = { 0x00, 0x00, 0x00, 0x00,
+                     0x7f, 0xff, 0xff, 0xff,
+                     0x80, 0x00, 0x00, 0x00,
+                     0xff, 0xff, 0xff, 0xff,
+                     0xb6, 0xb1, 0xff, 0xef,
+                     0x19, 0x6a, 0xca, 0x46 };
+  ByteBuffer buffer(data, sizeof(data));
+  ByteCursor cursor(&buffer);
+  cursor.set_big_endian(true);
+  int64_t a, b, c, d, e, f, g;
+  ASSERT_TRUE(cursor
+              .Read(4, true, &a)
+              .Read(4, true, &b)
+              .Read(4, true, &c)
+              .Read(4, true, &d)
+              .Read(4, true, &e)
+              .Read(4, true, &f));
+  EXPECT_EQ(0,                    a);
+  EXPECT_EQ(0x7fffffff,           b);
+  EXPECT_EQ(-0x80000000LL,        c);
+  EXPECT_EQ(-1,                   d);
+  EXPECT_EQ((int32_t) 0xb6b1ffef, e);
+  EXPECT_EQ(0x196aca46,           f);
+  EXPECT_TRUE(cursor.AtEnd());
+  EXPECT_FALSE(cursor.Read(4, true, &g));
+}
+
+TEST(BigEndian, Signed8) {
+  uint8_t data[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+                     0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+                     0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+                     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+                     0x93, 0x20, 0xd5, 0xe9, 0xd2, 0xd5, 0x87, 0x9c,
+                     0x4e, 0x42, 0x49, 0xd2, 0x7f, 0x84, 0x14, 0xa4 };
+  ByteBuffer buffer(data, sizeof(data));
+  ByteCursor cursor(&buffer, true);
+  int64_t a, b, c, d, e, f, g;
+  ASSERT_TRUE(cursor
+              .Read(8, true, &a)
+              .Read(8, true, &b)
+              .Read(8, true, &c)
+              .Read(8, true, &d)
+              .Read(8, true, &e)
+              .Read(8, true, &f));
+  EXPECT_EQ(0,                               a);
+  EXPECT_EQ(0x7fffffffffffffffLL,            b);
+  EXPECT_EQ(-0x7fffffffffffffffLL - 1,       c);
+  EXPECT_EQ(-1,                              d);
+  EXPECT_EQ((int64_t) 0x9320d5e9d2d5879cULL, e);
+  EXPECT_EQ(0x4e4249d27f8414a4LL,            f);  
+  EXPECT_TRUE(cursor.AtEnd());
+  EXPECT_FALSE(cursor.Read(8, true, &g));
+}
+
+TEST(BigEndian, Unsigned1) {
+  uint8_t data[] = { 0x00, 0x7f, 0x80, 0xff };
+  ByteBuffer buffer(data, sizeof(data));
+  ByteCursor cursor(&buffer);
+  cursor.set_big_endian(true);
+  int32_t a, b, c, d, e;
+  ASSERT_TRUE(cursor
+              .Read(1, false, &a)
+              .Read(1, false, &b)
+              .Read(1, false, &c)
+              .Read(1, false, &d));
+  EXPECT_EQ(0,    a);
+  EXPECT_EQ(0x7f, b);
+  EXPECT_EQ(0x80, c);
+  EXPECT_EQ(0xff, d);
+  EXPECT_TRUE(cursor.AtEnd());
+  EXPECT_FALSE(cursor.Read(1, false, &e));
+}
+
+TEST(BigEndian, Unsigned2) {
+  uint8_t data[] = { 0x00, 0x00,   0x00, 0x80,   0x7f, 0xff,
+                     0x80, 0x00,   0x80, 0x80,   0xff, 0xff,
+                     0x39, 0xf1,   0x8a, 0xbc,   0x5a, 0xec };
+  ByteBuffer buffer(data, sizeof(data));
+  ByteCursor cursor(&buffer, true);
+  int64_t a, b, c, d, e, f, g, h, i, j;
+  ASSERT_TRUE(cursor
+              .Read(2, false, &a)
+              .Read(2, false, &b)
+              .Read(2, false, &c)
+              .Read(2, false, &d)
+              .Read(2, false, &e)
+              .Read(2, false, &f)
+              .Read(2, false, &g)
+              .Read(2, false, &h)
+              .Read(2, false, &i));
+  EXPECT_EQ(0,      a);
+  EXPECT_EQ(0x80,   b);
+  EXPECT_EQ(0x7fff, c);
+  EXPECT_EQ(0x8000, d);
+  EXPECT_EQ(0x8080, e);
+  EXPECT_EQ(0xffff, f);
+  EXPECT_EQ(0x39f1, g);
+  EXPECT_EQ(0x8abc, h);
+  EXPECT_EQ(0x5aec, i);
+  EXPECT_TRUE(cursor.AtEnd());
+  EXPECT_FALSE(cursor.Read(2, false, &j));
+}
+
+TEST(BigEndian, Unsigned4) {
+  uint8_t data[] = { 0x00, 0x00, 0x00, 0x00,
+                     0x7f, 0xff, 0xff, 0xff,
+                     0x80, 0x00, 0x00, 0x00,
+                     0xff, 0xff, 0xff, 0xff,
+                     0xb6, 0xb1, 0xff, 0xef,
+                     0x19, 0x6a, 0xca, 0x46 };
+  ByteBuffer buffer(data, sizeof(data));
+  ByteCursor cursor(&buffer);
+  cursor.set_big_endian(true);
+  int64_t a, b, c, d, e, f, g;
+  ASSERT_TRUE(cursor
+              .Read(4, false, &a)
+              .Read(4, false, &b)
+              .Read(4, false, &c)
+              .Read(4, false, &d)
+              .Read(4, false, &e)
+              .Read(4, false, &f));
+  EXPECT_EQ(0,          a);
+  EXPECT_EQ(0x7fffffff, b);
+  EXPECT_EQ(0x80000000, c);
+  EXPECT_EQ(0xffffffff, d);
+  EXPECT_EQ(0xb6b1ffef, e);
+  EXPECT_EQ(0x196aca46, f);
+  EXPECT_TRUE(cursor.AtEnd());
+  EXPECT_FALSE(cursor.Read(4, false, &g));
+}
+
+TEST(BigEndian, Unsigned8) {
+  uint8_t data[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+                     0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+                     0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+                     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+                     0x93, 0x20, 0xd5, 0xe9, 0xd2, 0xd5, 0x87, 0x9c,
+                     0x4e, 0x42, 0x49, 0xd2, 0x7f, 0x84, 0x14, 0xa4 };
+  ByteBuffer buffer(data, sizeof(data));
+  ByteCursor cursor(&buffer, true);
+  uint64_t a, b, c, d, e, f, g;
+  ASSERT_TRUE(cursor
+              .Read(8, false, &a)
+              .Read(8, false, &b)
+              .Read(8, false, &c)
+              .Read(8, false, &d)
+              .Read(8, false, &e)
+              .Read(8, false, &f));
+  EXPECT_EQ(0U,                    a);
+  EXPECT_EQ(0x7fffffffffffffffULL, b);
+  EXPECT_EQ(0x8000000000000000ULL, c);
+  EXPECT_EQ(0xffffffffffffffffULL, d);
+  EXPECT_EQ(0x9320d5e9d2d5879cULL, e);
+  EXPECT_EQ(0x4e4249d27f8414a4ULL, f);  
+  EXPECT_TRUE(cursor.AtEnd());
+  EXPECT_FALSE(cursor.Read(8, false, &g));
+}
+
+TEST(LittleEndian, Signed1) {
+  uint8_t data[] = { 0x00, 0x7f, 0x80, 0xff };
+  ByteBuffer buffer(data, sizeof(data));
+  ByteCursor cursor(&buffer);
+  int32_t a, b, c, d, e;
+  ASSERT_TRUE(cursor
+              .Read(1, true, &a)
+              .Read(1, true, &b)
+              .Read(1, true, &c)
+              .Read(1, true, &d));
+  EXPECT_EQ(0,     a);
+  EXPECT_EQ(0x7f,  b);
+  EXPECT_EQ(-0x80, c);
+  EXPECT_EQ(-1,    d);
+  EXPECT_TRUE(cursor.AtEnd());
+  EXPECT_FALSE(cursor.Read(1, true, &e));
+}
+
+TEST(LittleEndian, Signed2) {
+  uint8_t data[] = { 0x00, 0x00,   0x80, 0x00,   0xff, 0x7f,
+                     0x00, 0x80,   0x80, 0x80,   0xff, 0xff,
+                     0xf1, 0x39,   0xbc, 0x8a,   0xec, 0x5a };
+  ByteBuffer buffer(data, sizeof(data));
+  ByteCursor cursor(&buffer, false);
+  int32_t a, b, c, d, e, f, g, h, i, j;
+  ASSERT_TRUE(cursor
+              .Read(2, true, &a)
+              .Read(2, true, &b)
+              .Read(2, true, &c)
+              .Read(2, true, &d)
+              .Read(2, true, &e)
+              .Read(2, true, &f)
+              .Read(2, true, &g)
+              .Read(2, true, &h)
+              .Read(2, true, &i));
+  EXPECT_EQ(0,       a);
+  EXPECT_EQ(0x80,    b);
+  EXPECT_EQ(0x7fff,  c);
+  EXPECT_EQ(-0x8000, d);
+  EXPECT_EQ(-0x7f80, e);
+  EXPECT_EQ(-1,      f);
+  EXPECT_EQ(0x39f1,  g);
+  EXPECT_EQ(-0x7544, h);
+  EXPECT_EQ(0x5aec,  i);
+  EXPECT_TRUE(cursor.AtEnd());
+  EXPECT_FALSE(cursor.Read(2, true, &j));
+}
+
+TEST(LittleEndian, Signed4) {
+  uint8_t data[] = { 0x00, 0x00, 0x00, 0x00,
+                     0xff, 0xff, 0xff, 0x7f,
+                     0x00, 0x00, 0x00, 0x80,
+                     0xff, 0xff, 0xff, 0xff,
+                     0xef, 0xff, 0xb1, 0xb6, 
+                     0x46, 0xca, 0x6a, 0x19 };
+  ByteBuffer buffer(data, sizeof(data));
+  ByteCursor cursor(&buffer);
+  int64_t a, b, c, d, e, f, g;
+  ASSERT_TRUE(cursor
+              .Read(4, true, &a)
+              .Read(4, true, &b)
+              .Read(4, true, &c)
+              .Read(4, true, &d)
+              .Read(4, true, &e)
+              .Read(4, true, &f));
+  EXPECT_EQ(0,                    a);
+  EXPECT_EQ(0x7fffffff,           b);
+  EXPECT_EQ(-0x80000000LL,        c);
+  EXPECT_EQ(-1,                   d);
+  EXPECT_EQ((int32_t) 0xb6b1ffef, e);
+  EXPECT_EQ(0x196aca46,           f);
+  EXPECT_TRUE(cursor.AtEnd());
+  EXPECT_FALSE(cursor.Read(4, true, &g));
+}
+
+TEST(LittleEndian, Signed8) {
+  uint8_t data[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+                     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
+                     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+                     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+                     0x9c, 0x87, 0xd5, 0xd2, 0xe9, 0xd5, 0x20, 0x93,
+                     0xa4, 0x14, 0x84, 0x7f, 0xd2, 0x49, 0x42, 0x4e };
+  ByteBuffer buffer(data, sizeof(data));
+  ByteCursor cursor(&buffer, false);
+  int64_t a, b, c, d, e, f, g;
+  ASSERT_TRUE(cursor
+              .Read(8, true, &a)
+              .Read(8, true, &b)
+              .Read(8, true, &c)
+              .Read(8, true, &d)
+              .Read(8, true, &e)
+              .Read(8, true, &f));
+  EXPECT_EQ(0,                               a);
+  EXPECT_EQ(0x7fffffffffffffffLL,            b);
+  EXPECT_EQ(-0x7fffffffffffffffLL - 1,       c);
+  EXPECT_EQ(-1,                              d);
+  EXPECT_EQ((int64_t) 0x9320d5e9d2d5879cULL, e);
+  EXPECT_EQ(0x4e4249d27f8414a4LL,            f);  
+  EXPECT_TRUE(cursor.AtEnd());
+  EXPECT_FALSE(cursor.Read(8, true, &g));
+}
+
+TEST(LittleEndian, Unsigned1) {
+  uint8_t data[] = { 0x00, 0x7f, 0x80, 0xff };
+  ByteBuffer buffer(data, sizeof(data));
+  ByteCursor cursor(&buffer);
+  int32_t a, b, c, d, e;
+  ASSERT_TRUE(cursor
+              .Read(1, false, &a)
+              .Read(1, false, &b)
+              .Read(1, false, &c)
+              .Read(1, false, &d));
+  EXPECT_EQ(0,    a);
+  EXPECT_EQ(0x7f, b);
+  EXPECT_EQ(0x80, c);
+  EXPECT_EQ(0xff, d);
+  EXPECT_TRUE(cursor.AtEnd());
+  EXPECT_FALSE(cursor.Read(1, false, &e));
+}
+
+TEST(LittleEndian, Unsigned2) {
+  uint8_t data[] = { 0x00, 0x00,   0x80, 0x00,   0xff, 0x7f,
+                     0x00, 0x80,   0x80, 0x80,   0xff, 0xff,
+                     0xf1, 0x39,   0xbc, 0x8a,   0xec, 0x5a };
+  ByteBuffer buffer(data, sizeof(data));
+  ByteCursor cursor(&buffer);
+  int32_t a, b, c, d, e, f, g, h, i, j;
+  ASSERT_TRUE(cursor
+              .Read(2, false, &a)
+              .Read(2, false, &b)
+              .Read(2, false, &c)
+              .Read(2, false, &d)
+              .Read(2, false, &e)
+              .Read(2, false, &f)
+              .Read(2, false, &g)
+              .Read(2, false, &h)
+              .Read(2, false, &i));
+  EXPECT_EQ(0,      a);
+  EXPECT_EQ(0x80,   b);
+  EXPECT_EQ(0x7fff, c);
+  EXPECT_EQ(0x8000, d);
+  EXPECT_EQ(0x8080, e);
+  EXPECT_EQ(0xffff, f);
+  EXPECT_EQ(0x39f1, g);
+  EXPECT_EQ(0x8abc, h);
+  EXPECT_EQ(0x5aec, i);
+  EXPECT_TRUE(cursor.AtEnd());
+  EXPECT_FALSE(cursor.Read(2, false, &j));
+}
+
+TEST(LittleEndian, Unsigned4) {
+  uint8_t data[] = { 0x00, 0x00, 0x00, 0x00,
+                     0xff, 0xff, 0xff, 0x7f,
+                     0x00, 0x00, 0x00, 0x80,
+                     0xff, 0xff, 0xff, 0xff,
+                     0xef, 0xff, 0xb1, 0xb6,
+                     0x46, 0xca, 0x6a, 0x19 };
+  ByteBuffer buffer(data, sizeof(data));
+  ByteCursor cursor(&buffer);
+  int64_t a, b, c, d, e, f, g;
+  ASSERT_TRUE(cursor
+              .Read(4, false, &a)
+              .Read(4, false, &b)
+              .Read(4, false, &c)
+              .Read(4, false, &d)
+              .Read(4, false, &e)
+              .Read(4, false, &f));
+  EXPECT_EQ(0,          a);
+  EXPECT_EQ(0x7fffffff, b);
+  EXPECT_EQ(0x80000000, c);
+  EXPECT_EQ(0xffffffff, d);
+  EXPECT_EQ(0xb6b1ffef, e);
+  EXPECT_EQ(0x196aca46, f);
+  EXPECT_TRUE(cursor.AtEnd());
+  EXPECT_FALSE(cursor.Read(4, false, &g));
+}
+
+TEST(LittleEndian, Unsigned8) {
+  uint8_t data[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+                     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
+                     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+                     0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+                     0x9c, 0x87, 0xd5, 0xd2, 0xe9, 0xd5, 0x20, 0x93,
+                     0xa4, 0x14, 0x84, 0x7f, 0xd2, 0x49, 0x42, 0x4e };
+  ByteBuffer buffer(data, sizeof(data));
+  ByteCursor cursor(&buffer);
+  uint64_t a, b, c, d, e, f, g;
+  ASSERT_TRUE(cursor
+              .Read(8, false, &a)
+              .Read(8, false, &b)
+              .Read(8, false, &c)
+              .Read(8, false, &d)
+              .Read(8, false, &e)
+              .Read(8, false, &f));
+  EXPECT_EQ(0U,                    a);
+  EXPECT_EQ(0x7fffffffffffffffULL, b);
+  EXPECT_EQ(0x8000000000000000ULL, c);
+  EXPECT_EQ(0xffffffffffffffffULL, d);
+  EXPECT_EQ(0x9320d5e9d2d5879cULL, e);
+  EXPECT_EQ(0x4e4249d27f8414a4ULL, f);  
+  EXPECT_TRUE(cursor.AtEnd());
+  EXPECT_FALSE(cursor.Read(8, false, &g));
+}
+
+TEST(Extractor, Signed1) {
+  uint8_t data[] = { 0xfd };
+  ByteBuffer buffer(data, sizeof(data));
+  ByteCursor cursor(&buffer);
+  int8_t a;
+  EXPECT_TRUE(cursor >> a);
+  EXPECT_EQ(-3, a);
+  EXPECT_FALSE(cursor >> a);
+}
+
+TEST(Extractor, Signed2) {
+  uint8_t data[] = { 0x13, 0xcd };
+  ByteBuffer buffer(data, sizeof(data));
+  ByteCursor cursor(&buffer);
+  int16_t a;
+  EXPECT_TRUE(cursor >> a);
+  EXPECT_EQ(-13037, a);
+  EXPECT_FALSE(cursor >> a);
+}
+
+TEST(Extractor, Signed4) {
+  uint8_t data[] = { 0xd2, 0xe4, 0x53, 0xe9 };
+  ByteBuffer buffer(data, sizeof(data));
+  ByteCursor cursor(&buffer);
+  int32_t a;
+  // For some reason, G++ 4.4.1 complains:
+  //   warning: array subscript is above array bounds
+  // in ByteCursor::Read(size_t, bool, T *) as it inlines this call, but
+  // I'm not able to see how such a reference would occur.
+  EXPECT_TRUE(cursor >> a);
+  EXPECT_EQ(-380377902, a);
+  EXPECT_FALSE(cursor >> a);
+}
+
+TEST(Extractor, Unsigned1) {
+  uint8_t data[] = { 0xfd };
+  ByteBuffer buffer(data, sizeof(data));
+  ByteCursor cursor(&buffer);
+  uint8_t a;
+  EXPECT_TRUE(cursor >> a);
+  EXPECT_EQ(0xfd, a);
+  EXPECT_FALSE(cursor >> a);
+}
+
+TEST(Extractor, Unsigned2) {
+  uint8_t data[] = { 0x13, 0xcd };
+  ByteBuffer buffer(data, sizeof(data));
+  ByteCursor cursor(&buffer);
+  uint16_t a;
+  EXPECT_TRUE(cursor >> a);
+  EXPECT_EQ(0xcd13, a);
+  EXPECT_FALSE(cursor >> a);
+}
+
+TEST(Extractor, Unsigned4) {
+  uint8_t data[] = { 0xd2, 0xe4, 0x53, 0xe9 };
+  ByteBuffer buffer(data, sizeof(data));
+  ByteCursor cursor(&buffer);
+  uint32_t a;
+  // For some reason, G++ 4.4.1 complains:
+  //   warning: array subscript is above array bounds
+  // in ByteCursor::Read(size_t, bool, T *) as it inlines this call, but
+  // I'm not able to see how such a reference would occur.
+  EXPECT_TRUE(cursor >> a);
+  EXPECT_EQ(0xe953e4d2, a);
+  EXPECT_FALSE(cursor >> a);
+  EXPECT_FALSE(cursor >> a);
+}
+
+TEST(Extractor, Mixed) {
+  uint8_t data[] = { 0x42,
+                     0x25, 0x0b,
+                     0x3d, 0x25, 0xed, 0x2a,
+                     0xec, 0x16, 0x9e, 0x14, 0x61, 0x5b, 0x2c, 0xcf,
+                     0xd8,
+                     0x22, 0xa5,
+                     0x3a, 0x02, 0x6a, 0xd7,
+                     0x93, 0x2a, 0x2d, 0x8d, 0xb4, 0x95, 0xe0, 0xc6 };
+  ByteBuffer buffer(data, sizeof(data));
+  ByteCursor cursor(&buffer);
+  cursor.set_big_endian(true);
+
+  uint8_t a;
+  uint16_t b;
+  uint32_t c;
+  uint64_t d;
+  int8_t e;
+  int16_t f;
+  int32_t g;
+  int64_t h;
+  int z;
+  EXPECT_FALSE(cursor.AtEnd());
+  EXPECT_TRUE(cursor >> a >> b >> c >> d >> e >> f >> g >> h);
+  EXPECT_EQ(0x42U, a);
+  EXPECT_EQ(0x250bU, b);
+  EXPECT_EQ(0x3d25ed2aU, c);
+  EXPECT_EQ(0xec169e14615b2ccfULL, d);
+  EXPECT_EQ(-40, e);
+  EXPECT_EQ(0x22a5, f);
+  EXPECT_EQ(0x3a026ad7, g);
+  EXPECT_EQ(-7842405714468937530LL, h);
+
+  EXPECT_TRUE(cursor.AtEnd());
+  EXPECT_FALSE(cursor >> z);
+}
+
+TEST(Strings, Zero) {
+  uint8_t data[] = { 0xa6 };
+  ByteBuffer buffer(data, 0);
+  ByteCursor cursor(&buffer);
+
+  uint8_t received[1];
+  received[0] = 0xc2;
+  EXPECT_TRUE(cursor.Read(received, 0));
+  EXPECT_EQ(0xc2U, received[0]);
+}
+
+TEST(Strings, Some) {
+  uint8_t data[] = { 0x5d, 0x31, 0x09, 0xa6, 0x2e, 0x2c, 0x83, 0xbb };
+  ByteBuffer buffer(data, sizeof(data));
+  ByteCursor cursor(&buffer);
+
+  uint8_t received[7] = { 0xa7, 0xf7, 0x43, 0x0c, 0x27, 0xea, 0xed };
+  EXPECT_TRUE(cursor.Skip(2).Read(received, 5));
+  uint8_t expected[7] = { 0x09, 0xa6, 0x2e, 0x2c, 0x83, 0xea, 0xed };
+  EXPECT_TRUE(memcmp(received, expected, 7) == 0);
+}
+
+TEST(Strings, TooMuch) {
+  uint8_t data[] = { 0x5d, 0x31, 0x09, 0xa6, 0x2e, 0x2c, 0x83, 0xbb };
+  ByteBuffer buffer(data, sizeof(data));
+  ByteCursor cursor(&buffer);
+
+  uint8_t received1[3];
+  uint8_t received2[3];
+  uint8_t received3[3];
+  EXPECT_FALSE(cursor
+               .Read(received1, 3)
+               .Read(received2, 3)
+               .Read(received3, 3));
+  uint8_t expected1[3] = { 0x5d, 0x31, 0x09 };
+  uint8_t expected2[3] = { 0xa6, 0x2e, 0x2c };
+
+  EXPECT_TRUE(memcmp(received1, expected1, 3) == 0);
+  EXPECT_TRUE(memcmp(received2, expected2, 3) == 0);
+}
+
+TEST(Strings, PointTo) {
+  uint8_t data[] = { 0x83, 0x80, 0xb4, 0x38, 0x00, 0x2c, 0x0a, 0x27 };
+  ByteBuffer buffer(data, sizeof(data));
+  ByteCursor cursor(&buffer);
+
+  const uint8_t *received1;
+  const uint8_t *received2;
+  const uint8_t *received3;
+  const uint8_t *received4;
+  EXPECT_FALSE(cursor
+               .PointTo(&received1, 3)
+               .PointTo(&received2, 3)
+               .PointTo(&received3)
+               .PointTo(&received4, 3));
+  EXPECT_EQ(data + 0, received1);
+  EXPECT_EQ(data + 3, received2);
+  EXPECT_EQ(data + 6, received3);
+  EXPECT_EQ(NULL, received4);
+}
+
+TEST(Strings, CString) {
+  uint8_t data[] = "abc\0\0foo";
+  ByteBuffer buffer(data, sizeof(data) - 1);  // don't include terminating '\0'
+  ByteCursor cursor(&buffer);
+
+  string a, b, c;
+  EXPECT_TRUE(cursor.CString(&a).CString(&b));
+  EXPECT_EQ("abc", a);
+  EXPECT_EQ("", b);
+  EXPECT_FALSE(cursor.CString(&c));
+  EXPECT_EQ("", c);
+  EXPECT_TRUE(cursor.AtEnd());
+}
+
+TEST(Strings, CStringLimit) {
+  uint8_t data[] = "abcdef\0\0foobar";
+  ByteBuffer buffer(data, sizeof(data) - 1);  // don't include terminating '\0'
+  ByteCursor cursor(&buffer);
+
+  string a, b, c, d, e;
+
+  EXPECT_TRUE(cursor.CString(&a, 3));
+  EXPECT_EQ("abc", a);
+
+  EXPECT_TRUE(cursor.CString(&b, 0));
+  EXPECT_EQ("", b);
+
+  EXPECT_TRUE(cursor.CString(&c, 6));
+  EXPECT_EQ("def", c);
+
+  EXPECT_TRUE(cursor.CString(&d, 4));
+  EXPECT_EQ("ooba", d);
+
+  EXPECT_FALSE(cursor.CString(&e, 4));
+  EXPECT_EQ("", e);
+
+  EXPECT_TRUE(cursor.AtEnd());
+}
+
+//  uint8_t data[] = { 0xa6, 0x54, 0xdf, 0x67, 0x51, 0x43, 0xac, 0xf1 };
+//  ByteBuffer buffer(data, sizeof(data));
diff --git a/google-breakpad/src/common/common.gyp b/google-breakpad/src/common/common.gyp
new file mode 100644
index 0000000..f01ede5
--- /dev/null
+++ b/google-breakpad/src/common/common.gyp
@@ -0,0 +1,242 @@
+# Copyright 2014 Google Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+{
+  'target_defaults': {
+    'target_conditions': [
+      ['OS=="mac"', {
+        'defines': ['HAVE_MACH_O_NLIST_H'],
+      }],
+      ['OS=="linux"', {
+        'defines': ['HAVE_A_OUT_H'],
+      }],
+    ],
+  },
+  'targets': [
+    {
+      'target_name': 'common',
+      'type': 'static_library',
+      'sources': [
+        'android/breakpad_getcontext.S',
+        'android/include/elf.h',
+        'android/include/link.h',
+        'android/include/sgidefs.h',
+        'android/include/stab.h',
+        'android/include/sys/procfs.h',
+        'android/include/sys/signal.h',
+        'android/include/sys/user.h',
+        'android/include/ucontext.h',
+        'android/testing/include/wchar.h',
+        'android/testing/mkdtemp.h',
+        'android/testing/pthread_fixes.h',
+        'android/ucontext_constants.h',
+        'basictypes.h',
+        'byte_cursor.h',
+        'convert_UTF.c',
+        'convert_UTF.h',
+        'dwarf/bytereader-inl.h',
+        'dwarf/bytereader.cc',
+        'dwarf/bytereader.h',
+        'dwarf/cfi_assembler.cc',
+        'dwarf/cfi_assembler.h',
+        'dwarf/dwarf2diehandler.cc',
+        'dwarf/dwarf2diehandler.h',
+        'dwarf/dwarf2enums.h',
+        'dwarf/dwarf2reader.cc',
+        'dwarf/dwarf2reader.h',
+        'dwarf/dwarf2reader_test_common.h',
+        'dwarf/functioninfo.cc',
+        'dwarf/functioninfo.h',
+        'dwarf/line_state_machine.h',
+        'dwarf/types.h',
+        'dwarf_cfi_to_module.cc',
+        'dwarf_cfi_to_module.h',
+        'dwarf_cu_to_module.cc',
+        'dwarf_cu_to_module.h',
+        'dwarf_line_to_module.cc',
+        'dwarf_line_to_module.h',
+        'language.cc',
+        'language.h',
+        'linux/crc32.cc',
+        'linux/crc32.h',
+        'linux/dump_symbols.cc',
+        'linux/dump_symbols.h',
+        'linux/eintr_wrapper.h',
+        'linux/elf_core_dump.cc',
+        'linux/elf_core_dump.h',
+        'linux/elf_gnu_compat.h',
+        'linux/elf_symbols_to_module.cc',
+        'linux/elf_symbols_to_module.h',
+        'linux/elfutils-inl.h',
+        'linux/elfutils.cc',
+        'linux/elfutils.h',
+        'linux/file_id.cc',
+        'linux/file_id.h',
+        'linux/google_crashdump_uploader.cc',
+        'linux/google_crashdump_uploader.h',
+        'linux/guid_creator.cc',
+        'linux/guid_creator.h',
+        'linux/http_upload.cc',
+        'linux/http_upload.h',
+        'linux/ignore_ret.h',
+        'linux/libcurl_wrapper.cc',
+        'linux/libcurl_wrapper.h',
+        'linux/linux_libc_support.cc',
+        'linux/linux_libc_support.h',
+        'linux/memory_mapped_file.cc',
+        'linux/memory_mapped_file.h',
+        'linux/safe_readlink.cc',
+        'linux/safe_readlink.h',
+        'linux/synth_elf.cc',
+        'linux/synth_elf.h',
+        'mac/arch_utilities.cc',
+        'mac/arch_utilities.h',
+        'mac/bootstrap_compat.cc',
+        'mac/bootstrap_compat.h',
+        'mac/byteswap.h',
+        'mac/dump_syms.h',
+        'mac/dump_syms.mm',
+        'mac/file_id.cc',
+        'mac/file_id.h',
+        'mac/GTMDefines.h',
+        'mac/GTMLogger.h',
+        'mac/GTMLogger.m',
+        'mac/HTTPMultipartUpload.h',
+        'mac/HTTPMultipartUpload.m',
+        'mac/MachIPC.h',
+        'mac/MachIPC.mm',
+        'mac/macho_id.cc',
+        'mac/macho_id.h',
+        'mac/macho_reader.cc',
+        'mac/macho_reader.h',
+        'mac/macho_utilities.cc',
+        'mac/macho_utilities.h',
+        'mac/macho_walker.cc',
+        'mac/macho_walker.h',
+        'mac/scoped_task_suspend-inl.h',
+        'mac/string_utilities.cc',
+        'mac/string_utilities.h',
+        'md5.cc',
+        'md5.h',
+        'memory.h',
+        'memory_range.h',
+        'module.cc',
+        'module.h',
+        'scoped_ptr.h',
+        'simple_string_dictionary.cc',
+        'simple_string_dictionary.h',
+        'solaris/dump_symbols.cc',
+        'solaris/dump_symbols.h',
+        'solaris/file_id.cc',
+        'solaris/file_id.h',
+        'solaris/guid_creator.cc',
+        'solaris/guid_creator.h',
+        'solaris/message_output.h',
+        'stabs_reader.cc',
+        'stabs_reader.h',
+        'stabs_to_module.cc',
+        'stabs_to_module.h',
+        'string_conversion.cc',
+        'string_conversion.h',
+        'symbol_data.h',
+        'test_assembler.cc',
+        'test_assembler.h',
+        'unordered.h',
+        'using_std_string.h',
+        'windows/common_windows.gyp',
+        'windows/dia_util.cc',
+        'windows/dia_util.h',
+        'windows/guid_string.cc',
+        'windows/guid_string.h',
+        'windows/http_upload.cc',
+        'windows/http_upload.h',
+        'windows/omap.cc',
+        'windows/omap.h',
+        'windows/omap_internal.h',
+        'windows/pdb_source_line_writer.cc',
+        'windows/pdb_source_line_writer.h',
+        'windows/string_utils-inl.h',
+        'windows/string_utils.cc',
+      ],
+      'include_dirs': [
+        '..',
+      ],
+    },
+    {
+      'target_name': 'common_unittests',
+      'type': 'executable',
+      'sources': [
+        'android/breakpad_getcontext_unittest.cc',
+        'byte_cursor_unittest.cc',
+        'dwarf/bytereader_unittest.cc',
+        'dwarf/dwarf2diehandler_unittest.cc',
+        'dwarf/dwarf2reader_cfi_unittest.cc',
+        'dwarf/dwarf2reader_die_unittest.cc',
+        'dwarf_cfi_to_module_unittest.cc',
+        'dwarf_cu_to_module_unittest.cc',
+        'dwarf_line_to_module_unittest.cc',
+        'linux/dump_symbols_unittest.cc',
+        'linux/elf_core_dump_unittest.cc',
+        'linux/elf_symbols_to_module_unittest.cc',
+        'linux/file_id_unittest.cc',
+        'linux/google_crashdump_uploader_test.cc',
+        'linux/linux_libc_support_unittest.cc',
+        'linux/memory_mapped_file_unittest.cc',
+        'linux/safe_readlink_unittest.cc',
+        'linux/synth_elf_unittest.cc',
+        'linux/tests/auto_testfile.h',
+        'linux/tests/crash_generator.cc',
+        'linux/tests/crash_generator.h',
+        'mac/macho_reader_unittest.cc',
+        'memory_range_unittest.cc',
+        'memory_unittest.cc',
+        'module_unittest.cc',
+        'simple_string_dictionary_unittest.cc',
+        'stabs_reader_unittest.cc',
+        'stabs_to_module_unittest.cc',
+        'test_assembler_unittest.cc',
+        'tests/auto_tempdir.h',
+        'tests/file_utils.cc',
+        'tests/file_utils.h',
+        'windows/omap_unittest.cc',
+      ],
+      'include_dirs': [
+        '..',
+      ],
+      'dependencies': [
+        'common',
+        '../build/testing.gypi:gmock_main',
+        '../build/testing.gypi:gmock',
+        '../build/testing.gypi:gtest',
+      ],
+      'libraries': [
+        '-ldl',
+      ],
+    },
+  ],
+}
diff --git a/google-breakpad/src/common/convert_UTF.c b/google-breakpad/src/common/convert_UTF.c
new file mode 100644
index 0000000..12a3c89
--- /dev/null
+++ b/google-breakpad/src/common/convert_UTF.c
@@ -0,0 +1,554 @@
+/*
+ * Copyright © 1991-2015 Unicode, Inc. All rights reserved.
+ * Distributed under the Terms of Use in 
+ * http://www.unicode.org/copyright.html.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of the Unicode data files and any associated documentation
+ * (the "Data Files") or Unicode software and any associated documentation
+ * (the "Software") to deal in the Data Files or Software
+ * without restriction, including without limitation the rights to use,
+ * copy, modify, merge, publish, distribute, and/or sell copies of
+ * the Data Files or Software, and to permit persons to whom the Data Files
+ * or Software are furnished to do so, provided that
+ * (a) this copyright and permission notice appear with all copies 
+ * of the Data Files or Software,
+ * (b) this copyright and permission notice appear in associated 
+ * documentation, and
+ * (c) there is clear notice in each modified Data File or in the Software
+ * as well as in the documentation associated with the Data File(s) or
+ * Software that the data or software has been modified.
+ *
+ * THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
+ * ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT OF THIRD PARTY RIGHTS.
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
+ * NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
+ * DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THE DATA FILES OR SOFTWARE.
+ *
+ * Except as contained in this notice, the name of a copyright holder
+ * shall not be used in advertising or otherwise to promote the sale,
+ * use or other dealings in these Data Files or Software without prior
+ * written authorization of the copyright holder.
+ */
+
+/* ---------------------------------------------------------------------
+
+Conversions between UTF32, UTF-16, and UTF-8. Source code file.
+Author: Mark E. Davis, 1994.
+Rev History: Rick McGowan, fixes & updates May 2001.
+Sept 2001: fixed const & error conditions per
+mods suggested by S. Parent & A. Lillich.
+June 2002: Tim Dodd added detection and handling of incomplete
+source sequences, enhanced error detection, added casts
+to eliminate compiler warnings.
+July 2003: slight mods to back out aggressive FFFE detection.
+Jan 2004: updated switches in from-UTF8 conversions.
+Oct 2004: updated to use UNI_MAX_LEGAL_UTF32 in UTF-32 conversions.
+
+See the header file "ConvertUTF.h" for complete documentation.
+
+------------------------------------------------------------------------ */
+
+
+#include "convert_UTF.h"
+#ifdef CVTUTF_DEBUG
+#include <stdio.h>
+#endif
+
+static const int halfShift  = 10; /* used for shifting by 10 bits */
+
+static const UTF32 halfBase = 0x0010000UL;
+static const UTF32 halfMask = 0x3FFUL;
+
+#define UNI_SUR_HIGH_START  (UTF32)0xD800
+#define UNI_SUR_HIGH_END    (UTF32)0xDBFF
+#define UNI_SUR_LOW_START   (UTF32)0xDC00
+#define UNI_SUR_LOW_END     (UTF32)0xDFFF
+
+#ifndef false
+#define false	   0
+#endif
+#ifndef true
+#define true	    1
+#endif
+
+/* --------------------------------------------------------------------- */
+
+ConversionResult ConvertUTF32toUTF16 (const UTF32** sourceStart, const UTF32* sourceEnd,
+                                      UTF16** targetStart, UTF16* targetEnd, ConversionFlags flags) {
+  ConversionResult result = conversionOK;
+  const UTF32* source = *sourceStart;
+  UTF16* target = *targetStart;
+  while (source < sourceEnd) {
+    UTF32 ch;
+    if (target >= targetEnd) {
+	    result = targetExhausted; break;
+    }
+    ch = *source++;
+    if (ch <= UNI_MAX_BMP) { /* Target is a character <= 0xFFFF */
+	    /* UTF-16 surrogate values are illegal in UTF-32; 0xffff or 0xfffe are both reserved values */
+	    if (ch >= UNI_SUR_HIGH_START && ch <= UNI_SUR_LOW_END) {
+        if (flags == strictConversion) {
+          --source; /* return to the illegal value itself */
+          result = sourceIllegal;
+          break;
+        } else {
+          *target++ = UNI_REPLACEMENT_CHAR;
+        }
+	    } else {
+        *target++ = (UTF16)ch; /* normal case */
+	    }
+    } else if (ch > UNI_MAX_LEGAL_UTF32) {
+	    if (flags == strictConversion) {
+        result = sourceIllegal;
+	    } else {
+        *target++ = UNI_REPLACEMENT_CHAR;
+	    }
+    } else {
+	    /* target is a character in range 0xFFFF - 0x10FFFF. */
+	    if (target + 1 >= targetEnd) {
+        --source; /* Back up source pointer! */
+        result = targetExhausted; break;
+	    }
+	    ch -= halfBase;
+	    *target++ = (UTF16)((ch >> halfShift) + UNI_SUR_HIGH_START);
+	    *target++ = (UTF16)((ch & halfMask) + UNI_SUR_LOW_START);
+    }
+  }
+*sourceStart = source;
+*targetStart = target;
+return result;
+}
+
+/* --------------------------------------------------------------------- */
+
+ConversionResult ConvertUTF16toUTF32 (const UTF16** sourceStart, const UTF16* sourceEnd,
+                                      UTF32** targetStart, UTF32* targetEnd, ConversionFlags flags) {
+  ConversionResult result = conversionOK;
+  const UTF16* source = *sourceStart;
+  UTF32* target = *targetStart;
+  UTF32 ch, ch2;
+  while (source < sourceEnd) {
+    const UTF16* oldSource = source; /*  In case we have to back up because of target overflow. */
+    ch = *source++;
+    /* If we have a surrogate pair, convert to UTF32 first. */
+    if (ch >= UNI_SUR_HIGH_START && ch <= UNI_SUR_HIGH_END) {
+	    /* If the 16 bits following the high surrogate are in the source buffer... */
+	    if (source < sourceEnd) {
+        ch2 = *source;
+        /* If it's a low surrogate, convert to UTF32. */
+        if (ch2 >= UNI_SUR_LOW_START && ch2 <= UNI_SUR_LOW_END) {
+          ch = ((ch - UNI_SUR_HIGH_START) << halfShift)
+          + (ch2 - UNI_SUR_LOW_START) + halfBase;
+          ++source;
+        } else if (flags == strictConversion) { /* it's an unpaired high surrogate */
+          --source; /* return to the illegal value itself */
+          result = sourceIllegal;
+          break;
+        }
+	    } else { /* We don't have the 16 bits following the high surrogate. */
+        --source; /* return to the high surrogate */
+        result = sourceExhausted;
+        break;
+	    }
+    } else if (flags == strictConversion) {
+	    /* UTF-16 surrogate values are illegal in UTF-32 */
+	    if (ch >= UNI_SUR_LOW_START && ch <= UNI_SUR_LOW_END) {
+        --source; /* return to the illegal value itself */
+        result = sourceIllegal;
+        break;
+	    }
+    }
+    if (target >= targetEnd) {
+	    source = oldSource; /* Back up source pointer! */
+	    result = targetExhausted; break;
+    }
+    *target++ = ch;
+  }
+  *sourceStart = source;
+  *targetStart = target;
+#ifdef CVTUTF_DEBUG
+  if (result == sourceIllegal) {
+    fprintf(stderr, "ConvertUTF16toUTF32 illegal seq 0x%04x,%04x\n", ch, ch2);
+    fflush(stderr);
+  }
+#endif
+  return result;
+}
+
+/* --------------------------------------------------------------------- */
+
+/*
+ * Index into the table below with the first byte of a UTF-8 sequence to
+ * get the number of trailing bytes that are supposed to follow it.
+ * Note that *legal* UTF-8 values can't have 4 or 5-bytes. The table is
+ * left as-is for anyone who may want to do such conversion, which was
+ * allowed in earlier algorithms.
+ */
+static const char trailingBytesForUTF8[256] = {
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 3,3,3,3,3,3,3,3,4,4,4,4,5,5,5,5
+};
+
+/*
+ * Magic values subtracted from a buffer value during UTF8 conversion.
+ * This table contains as many values as there might be trailing bytes
+ * in a UTF-8 sequence.
+ */
+static const UTF32 offsetsFromUTF8[6] = { 0x00000000UL, 0x00003080UL, 0x000E2080UL,
+  0x03C82080UL, 0xFA082080UL, 0x82082080UL };
+
+/*
+ * Once the bits are split out into bytes of UTF-8, this is a mask OR-ed
+ * into the first byte, depending on how many bytes follow.  There are
+ * as many entries in this table as there are UTF-8 sequence types.
+ * (I.e., one byte sequence, two byte... etc.). Remember that sequencs
+ * for *legal* UTF-8 will be 4 or fewer bytes total.
+ */
+static const UTF8 firstByteMark[7] = { 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC };
+
+/* --------------------------------------------------------------------- */
+
+/* The interface converts a whole buffer to avoid function-call overhead.
+* Constants have been gathered. Loops & conditionals have been removed as
+* much as possible for efficiency, in favor of drop-through switches.
+* (See "Note A" at the bottom of the file for equivalent code.)
+* If your compiler supports it, the "isLegalUTF8" call can be turned
+* into an inline function.
+*/
+
+/* --------------------------------------------------------------------- */
+
+ConversionResult ConvertUTF16toUTF8 (const UTF16** sourceStart, const UTF16* sourceEnd,
+                                     UTF8** targetStart, UTF8* targetEnd, ConversionFlags flags) {
+  ConversionResult result = conversionOK;
+  const UTF16* source = *sourceStart;
+  UTF8* target = *targetStart;
+  while (source < sourceEnd) {
+    UTF32 ch;
+    unsigned short bytesToWrite = 0;
+    const UTF32 byteMask = 0xBF;
+    const UTF32 byteMark = 0x80;
+    const UTF16* oldSource = source; /* In case we have to back up because of target overflow. */
+    ch = *source++;
+    /* If we have a surrogate pair, convert to UTF32 first. */
+    if (ch >= UNI_SUR_HIGH_START && ch <= UNI_SUR_HIGH_END) {
+	    /* If the 16 bits following the high surrogate are in the source buffer... */
+	    if (source < sourceEnd) {
+        UTF32 ch2 = *source;
+        /* If it's a low surrogate, convert to UTF32. */
+        if (ch2 >= UNI_SUR_LOW_START && ch2 <= UNI_SUR_LOW_END) {
+          ch = ((ch - UNI_SUR_HIGH_START) << halfShift)
+          + (ch2 - UNI_SUR_LOW_START) + halfBase;
+          ++source;
+        } else if (flags == strictConversion) { /* it's an unpaired high surrogate */
+          --source; /* return to the illegal value itself */
+          result = sourceIllegal;
+          break;
+        }
+	    } else { /* We don't have the 16 bits following the high surrogate. */
+        --source; /* return to the high surrogate */
+        result = sourceExhausted;
+        break;
+	    }
+    } else if (flags == strictConversion) {
+	    /* UTF-16 surrogate values are illegal in UTF-32 */
+	    if (ch >= UNI_SUR_LOW_START && ch <= UNI_SUR_LOW_END) {
+        --source; /* return to the illegal value itself */
+        result = sourceIllegal;
+        break;
+	    }
+    }
+    /* Figure out how many bytes the result will require */
+    if (ch < (UTF32)0x80) {	     bytesToWrite = 1;
+    } else if (ch < (UTF32)0x800) {     bytesToWrite = 2;
+    } else if (ch < (UTF32)0x10000) {   bytesToWrite = 3;
+    } else if (ch < (UTF32)0x110000) {  bytesToWrite = 4;
+    } else {			    bytesToWrite = 3;
+      ch = UNI_REPLACEMENT_CHAR;
+    }
+
+    target += bytesToWrite;
+    if (target > targetEnd) {
+	    source = oldSource; /* Back up source pointer! */
+	    target -= bytesToWrite; result = targetExhausted; break;
+    }
+    switch (bytesToWrite) { /* note: everything falls through. */
+	    case 4: *--target = (UTF8)((ch | byteMark) & byteMask); ch >>= 6;
+	    case 3: *--target = (UTF8)((ch | byteMark) & byteMask); ch >>= 6;
+	    case 2: *--target = (UTF8)((ch | byteMark) & byteMask); ch >>= 6;
+	    case 1: *--target =  (UTF8)(ch | firstByteMark[bytesToWrite]);
+    }
+    target += bytesToWrite;
+  }
+*sourceStart = source;
+*targetStart = target;
+return result;
+}
+
+/* --------------------------------------------------------------------- */
+
+/*
+ * Utility routine to tell whether a sequence of bytes is legal UTF-8.
+ * This must be called with the length pre-determined by the first byte.
+ * If not calling this from ConvertUTF8to*, then the length can be set by:
+ *  length = trailingBytesForUTF8[*source]+1;
+ * and the sequence is illegal right away if there aren't that many bytes
+ * available.
+ * If presented with a length > 4, this returns false.  The Unicode
+ * definition of UTF-8 goes up to 4-byte sequences.
+ */
+
+static Boolean isLegalUTF8(const UTF8 *source, int length) {
+  UTF8 a;
+  const UTF8 *srcptr = source+length;
+  switch (length) {
+    default: return false;
+      /* Everything else falls through when "true"... */
+    case 4: if ((a = (*--srcptr)) < 0x80 || a > 0xBF) return false;
+    case 3: if ((a = (*--srcptr)) < 0x80 || a > 0xBF) return false;
+    case 2: if ((a = (*--srcptr)) > 0xBF) return false;
+
+      switch (*source) {
+        /* no fall-through in this inner switch */
+        case 0xE0: if (a < 0xA0) return false; break;
+        case 0xED: if (a > 0x9F) return false; break;
+        case 0xF0: if (a < 0x90) return false; break;
+        case 0xF4: if (a > 0x8F) return false; break;
+        default:   if (a < 0x80) return false;
+      }
+
+      case 1: if (*source >= 0x80 && *source < 0xC2) return false;
+  }
+  if (*source > 0xF4) return false;
+  return true;
+}
+
+/* --------------------------------------------------------------------- */
+
+/*
+ * Exported function to return whether a UTF-8 sequence is legal or not.
+ * This is not used here; it's just exported.
+ */
+Boolean isLegalUTF8Sequence(const UTF8 *source, const UTF8 *sourceEnd) {
+  int length = trailingBytesForUTF8[*source]+1;
+  if (source+length > sourceEnd) {
+    return false;
+  }
+  return isLegalUTF8(source, length);
+}
+
+/* --------------------------------------------------------------------- */
+
+ConversionResult ConvertUTF8toUTF16 (const UTF8** sourceStart, const UTF8* sourceEnd,
+                                     UTF16** targetStart, UTF16* targetEnd, ConversionFlags flags) {
+  ConversionResult result = conversionOK;
+  const UTF8* source = *sourceStart;
+  UTF16* target = *targetStart;
+  while (source < sourceEnd) {
+    UTF32 ch = 0;
+    unsigned short extraBytesToRead = trailingBytesForUTF8[*source];
+    if (source + extraBytesToRead >= sourceEnd) {
+	    result = sourceExhausted; break;
+    }
+    /* Do this check whether lenient or strict */
+    if (! isLegalUTF8(source, extraBytesToRead+1)) {
+	    result = sourceIllegal;
+	    break;
+    }
+    /*
+     * The cases all fall through. See "Note A" below.
+     */
+    switch (extraBytesToRead) {
+	    case 5: ch += *source++; ch <<= 6; /* remember, illegal UTF-8 */
+	    case 4: ch += *source++; ch <<= 6; /* remember, illegal UTF-8 */
+	    case 3: ch += *source++; ch <<= 6;
+	    case 2: ch += *source++; ch <<= 6;
+	    case 1: ch += *source++; ch <<= 6;
+	    case 0: ch += *source++;
+    }
+    ch -= offsetsFromUTF8[extraBytesToRead];
+
+    if (target >= targetEnd) {
+	    source -= (extraBytesToRead+1); /* Back up source pointer! */
+	    result = targetExhausted; break;
+    }
+    if (ch <= UNI_MAX_BMP) { /* Target is a character <= 0xFFFF */
+	    /* UTF-16 surrogate values are illegal in UTF-32 */
+	    if (ch >= UNI_SUR_HIGH_START && ch <= UNI_SUR_LOW_END) {
+        if (flags == strictConversion) {
+          source -= (extraBytesToRead+1); /* return to the illegal value itself */
+          result = sourceIllegal;
+          break;
+        } else {
+          *target++ = UNI_REPLACEMENT_CHAR;
+        }
+	    } else {
+        *target++ = (UTF16)ch; /* normal case */
+	    }
+    } else if (ch > UNI_MAX_UTF16) {
+	    if (flags == strictConversion) {
+        result = sourceIllegal;
+        source -= (extraBytesToRead+1); /* return to the start */
+        break; /* Bail out; shouldn't continue */
+	    } else {
+        *target++ = UNI_REPLACEMENT_CHAR;
+	    }
+    } else {
+	    /* target is a character in range 0xFFFF - 0x10FFFF. */
+	    if (target + 1 >= targetEnd) {
+        source -= (extraBytesToRead+1); /* Back up source pointer! */
+        result = targetExhausted; break;
+	    }
+	    ch -= halfBase;
+	    *target++ = (UTF16)((ch >> halfShift) + UNI_SUR_HIGH_START);
+	    *target++ = (UTF16)((ch & halfMask) + UNI_SUR_LOW_START);
+    }
+  }
+*sourceStart = source;
+*targetStart = target;
+return result;
+}
+
+/* --------------------------------------------------------------------- */
+
+ConversionResult ConvertUTF32toUTF8 (const UTF32** sourceStart, const UTF32* sourceEnd,
+                                     UTF8** targetStart, UTF8* targetEnd, ConversionFlags flags) {
+  ConversionResult result = conversionOK;
+  const UTF32* source = *sourceStart;
+  UTF8* target = *targetStart;
+  while (source < sourceEnd) {
+    UTF32 ch;
+    unsigned short bytesToWrite = 0;
+    const UTF32 byteMask = 0xBF;
+    const UTF32 byteMark = 0x80;
+    ch = *source++;
+    if (flags == strictConversion ) {
+	    /* UTF-16 surrogate values are illegal in UTF-32 */
+	    if (ch >= UNI_SUR_HIGH_START && ch <= UNI_SUR_LOW_END) {
+        --source; /* return to the illegal value itself */
+        result = sourceIllegal;
+        break;
+	    }
+    }
+    /*
+     * Figure out how many bytes the result will require. Turn any
+     * illegally large UTF32 things (> Plane 17) into replacement chars.
+     */
+    if (ch < (UTF32)0x80) {	     bytesToWrite = 1;
+    } else if (ch < (UTF32)0x800) {     bytesToWrite = 2;
+    } else if (ch < (UTF32)0x10000) {   bytesToWrite = 3;
+    } else if (ch <= UNI_MAX_LEGAL_UTF32) {  bytesToWrite = 4;
+    } else {			    bytesToWrite = 3;
+      ch = UNI_REPLACEMENT_CHAR;
+      result = sourceIllegal;
+    }
+
+    target += bytesToWrite;
+    if (target > targetEnd) {
+	    --source; /* Back up source pointer! */
+	    target -= bytesToWrite; result = targetExhausted; break;
+    }
+    switch (bytesToWrite) { /* note: everything falls through. */
+	    case 4: *--target = (UTF8)((ch | byteMark) & byteMask); ch >>= 6;
+	    case 3: *--target = (UTF8)((ch | byteMark) & byteMask); ch >>= 6;
+	    case 2: *--target = (UTF8)((ch | byteMark) & byteMask); ch >>= 6;
+	    case 1: *--target = (UTF8) (ch | firstByteMark[bytesToWrite]);
+    }
+    target += bytesToWrite;
+  }
+*sourceStart = source;
+*targetStart = target;
+return result;
+}
+
+/* --------------------------------------------------------------------- */
+
+ConversionResult ConvertUTF8toUTF32 (const UTF8** sourceStart, const UTF8* sourceEnd,
+                                     UTF32** targetStart, UTF32* targetEnd, ConversionFlags flags) {
+  ConversionResult result = conversionOK;
+  const UTF8* source = *sourceStart;
+  UTF32* target = *targetStart;
+  while (source < sourceEnd) {
+    UTF32 ch = 0;
+    unsigned short extraBytesToRead = trailingBytesForUTF8[*source];
+    if (source + extraBytesToRead >= sourceEnd) {
+	    result = sourceExhausted; break;
+    }
+    /* Do this check whether lenient or strict */
+    if (! isLegalUTF8(source, extraBytesToRead+1)) {
+	    result = sourceIllegal;
+	    break;
+    }
+    /*
+     * The cases all fall through. See "Note A" below.
+     */
+    switch (extraBytesToRead) {
+	    case 5: ch += *source++; ch <<= 6;
+	    case 4: ch += *source++; ch <<= 6;
+	    case 3: ch += *source++; ch <<= 6;
+	    case 2: ch += *source++; ch <<= 6;
+	    case 1: ch += *source++; ch <<= 6;
+	    case 0: ch += *source++;
+    }
+    ch -= offsetsFromUTF8[extraBytesToRead];
+
+    if (target >= targetEnd) {
+	    source -= (extraBytesToRead+1); /* Back up the source pointer! */
+	    result = targetExhausted; break;
+    }
+    if (ch <= UNI_MAX_LEGAL_UTF32) {
+	    /*
+	     * UTF-16 surrogate values are illegal in UTF-32, and anything
+	     * over Plane 17 (> 0x10FFFF) is illegal.
+	     */
+	    if (ch >= UNI_SUR_HIGH_START && ch <= UNI_SUR_LOW_END) {
+        if (flags == strictConversion) {
+          source -= (extraBytesToRead+1); /* return to the illegal value itself */
+          result = sourceIllegal;
+          break;
+        } else {
+          *target++ = UNI_REPLACEMENT_CHAR;
+        }
+	    } else {
+        *target++ = ch;
+	    }
+    } else { /* i.e., ch > UNI_MAX_LEGAL_UTF32 */
+	    result = sourceIllegal;
+	    *target++ = UNI_REPLACEMENT_CHAR;
+    }
+  }
+  *sourceStart = source;
+  *targetStart = target;
+  return result;
+}
+
+/* ---------------------------------------------------------------------
+
+Note A.
+The fall-through switches in UTF-8 reading code save a
+temp variable, some decrements & conditionals.  The switches
+are equivalent to the following loop:
+{
+  int tmpBytesToRead = extraBytesToRead+1;
+  do {
+		ch += *source++;
+		--tmpBytesToRead;
+		if (tmpBytesToRead) ch <<= 6;
+  } while (tmpBytesToRead > 0);
+}
+In UTF-8 writing code, the switches on "bytesToWrite" are
+similarly unrolled loops.
+
+--------------------------------------------------------------------- */
diff --git a/google-breakpad/src/common/convert_UTF.h b/google-breakpad/src/common/convert_UTF.h
new file mode 100644
index 0000000..644d099
--- /dev/null
+++ b/google-breakpad/src/common/convert_UTF.h
@@ -0,0 +1,164 @@
+/*
+ * Copyright © 1991-2015 Unicode, Inc. All rights reserved.
+ * Distributed under the Terms of Use in 
+ * http://www.unicode.org/copyright.html.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of the Unicode data files and any associated documentation
+ * (the "Data Files") or Unicode software and any associated documentation
+ * (the "Software") to deal in the Data Files or Software
+ * without restriction, including without limitation the rights to use,
+ * copy, modify, merge, publish, distribute, and/or sell copies of
+ * the Data Files or Software, and to permit persons to whom the Data Files
+ * or Software are furnished to do so, provided that
+ * (a) this copyright and permission notice appear with all copies 
+ * of the Data Files or Software,
+ * (b) this copyright and permission notice appear in associated 
+ * documentation, and
+ * (c) there is clear notice in each modified Data File or in the Software
+ * as well as in the documentation associated with the Data File(s) or
+ * Software that the data or software has been modified.
+ *
+ * THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
+ * ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT OF THIRD PARTY RIGHTS.
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
+ * NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
+ * DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THE DATA FILES OR SOFTWARE.
+ *
+ * Except as contained in this notice, the name of a copyright holder
+ * shall not be used in advertising or otherwise to promote the sale,
+ * use or other dealings in these Data Files or Software without prior
+ * written authorization of the copyright holder.
+ */
+
+#ifndef COMMON_CONVERT_UTF_H_
+#define COMMON_CONVERT_UTF_H_
+
+/* ---------------------------------------------------------------------
+
+Conversions between UTF32, UTF-16, and UTF-8.  Header file.
+
+Several funtions are included here, forming a complete set of
+conversions between the three formats.  UTF-7 is not included
+here, but is handled in a separate source file.
+
+Each of these routines takes pointers to input buffers and output
+buffers.  The input buffers are const.
+
+Each routine converts the text between *sourceStart and sourceEnd,
+putting the result into the buffer between *targetStart and
+targetEnd. Note: the end pointers are *after* the last item: e.g.
+*(sourceEnd - 1) is the last item.
+
+The return result indicates whether the conversion was successful,
+and if not, whether the problem was in the source or target buffers.
+(Only the first encountered problem is indicated.)
+
+After the conversion, *sourceStart and *targetStart are both
+updated to point to the end of last text successfully converted in
+the respective buffers.
+
+Input parameters:
+sourceStart - pointer to a pointer to the source buffer.
+The contents of this are modified on return so that
+it points at the next thing to be converted.
+targetStart - similarly, pointer to pointer to the target buffer.
+sourceEnd, targetEnd - respectively pointers to the ends of the
+two buffers, for overflow checking only.
+
+These conversion functions take a ConversionFlags argument. When this
+flag is set to strict, both irregular sequences and isolated surrogates
+will cause an error.  When the flag is set to lenient, both irregular
+sequences and isolated surrogates are converted.
+
+Whether the flag is strict or lenient, all illegal sequences will cause
+an error return. This includes sequences such as: <F4 90 80 80>, <C0 80>,
+or <A0> in UTF-8, and values above 0x10FFFF in UTF-32. Conformant code
+must check for illegal sequences.
+
+When the flag is set to lenient, characters over 0x10FFFF are converted
+to the replacement character; otherwise (when the flag is set to strict)
+they constitute an error.
+
+Output parameters:
+The value "sourceIllegal" is returned from some routines if the input
+sequence is malformed.  When "sourceIllegal" is returned, the source
+value will point to the illegal value that caused the problem. E.g.,
+in UTF-8 when a sequence is malformed, it points to the start of the
+malformed sequence.
+
+Author: Mark E. Davis, 1994.
+Rev History: Rick McGowan, fixes & updates May 2001.
+Fixes & updates, Sept 2001.
+
+------------------------------------------------------------------------ */
+
+/* ---------------------------------------------------------------------
+The following 4 definitions are compiler-specific.
+The C standard does not guarantee that wchar_t has at least
+16 bits, so wchar_t is no less portable than unsigned short!
+All should be unsigned values to avoid sign extension during
+bit mask & shift operations.
+------------------------------------------------------------------------ */
+
+typedef unsigned long	UTF32;	/* at least 32 bits */
+typedef unsigned short	UTF16;	/* at least 16 bits */
+typedef unsigned char	UTF8;	/* typically 8 bits */
+typedef unsigned char	Boolean; /* 0 or 1 */
+
+/* Some fundamental constants */
+#define UNI_REPLACEMENT_CHAR (UTF32)0x0000FFFD
+#define UNI_MAX_BMP (UTF32)0x0000FFFF
+#define UNI_MAX_UTF16 (UTF32)0x0010FFFF
+#define UNI_MAX_UTF32 (UTF32)0x7FFFFFFF
+#define UNI_MAX_LEGAL_UTF32 (UTF32)0x0010FFFF
+
+typedef enum {
+	conversionOK, 		/* conversion successful */
+	sourceExhausted,	/* partial character in source, but hit end */
+	targetExhausted,	/* insuff. room in target for conversion */
+	sourceIllegal		/* source sequence is illegal/malformed */
+} ConversionResult;
+
+typedef enum {
+	strictConversion = 0,
+	lenientConversion
+} ConversionFlags;
+
+/* This is for C++ and does no harm in C */
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ConversionResult ConvertUTF8toUTF16 (const UTF8** sourceStart, const UTF8* sourceEnd,
+                                     UTF16** targetStart, UTF16* targetEnd, ConversionFlags flags);
+
+ConversionResult ConvertUTF16toUTF8 (const UTF16** sourceStart, const UTF16* sourceEnd,
+                                     UTF8** targetStart, UTF8* targetEnd, ConversionFlags flags);
+
+ConversionResult ConvertUTF8toUTF32 (const UTF8** sourceStart, const UTF8* sourceEnd,
+                                     UTF32** targetStart, UTF32* targetEnd, ConversionFlags flags);
+
+ConversionResult ConvertUTF32toUTF8 (const UTF32** sourceStart, const UTF32* sourceEnd,
+                                     UTF8** targetStart, UTF8* targetEnd, ConversionFlags flags);
+
+ConversionResult ConvertUTF16toUTF32 (const UTF16** sourceStart, const UTF16* sourceEnd,
+                                      UTF32** targetStart, UTF32* targetEnd, ConversionFlags flags);
+
+ConversionResult ConvertUTF32toUTF16 (const UTF32** sourceStart, const UTF32* sourceEnd,
+                                      UTF16** targetStart, UTF16* targetEnd, ConversionFlags flags);
+
+Boolean isLegalUTF8Sequence(const UTF8 *source, const UTF8 *sourceEnd);
+
+#ifdef __cplusplus
+}
+#endif
+
+/* --------------------------------------------------------------------- */
+
+#endif  // COMMON_CONVERT_UTF_H_
diff --git a/google-breakpad/src/common/dwarf/bytereader-inl.h b/google-breakpad/src/common/dwarf/bytereader-inl.h
new file mode 100644
index 0000000..3c16708
--- /dev/null
+++ b/google-breakpad/src/common/dwarf/bytereader-inl.h
@@ -0,0 +1,175 @@
+// Copyright 2006 Google Inc. All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef UTIL_DEBUGINFO_BYTEREADER_INL_H__
+#define UTIL_DEBUGINFO_BYTEREADER_INL_H__
+
+#include "common/dwarf/bytereader.h"
+
+#include <assert.h>
+
+namespace dwarf2reader {
+
+inline uint8 ByteReader::ReadOneByte(const char* buffer) const {
+  return buffer[0];
+}
+
+inline uint16 ByteReader::ReadTwoBytes(const char* signed_buffer) const {
+  const unsigned char *buffer
+    = reinterpret_cast<const unsigned char *>(signed_buffer);
+  const uint16 buffer0 = buffer[0];
+  const uint16 buffer1 = buffer[1];
+  if (endian_ == ENDIANNESS_LITTLE) {
+    return buffer0 | buffer1 << 8;
+  } else {
+    return buffer1 | buffer0 << 8;
+  }
+}
+
+inline uint64 ByteReader::ReadFourBytes(const char* signed_buffer) const {
+  const unsigned char *buffer
+    = reinterpret_cast<const unsigned char *>(signed_buffer);
+  const uint32 buffer0 = buffer[0];
+  const uint32 buffer1 = buffer[1];
+  const uint32 buffer2 = buffer[2];
+  const uint32 buffer3 = buffer[3];
+  if (endian_ == ENDIANNESS_LITTLE) {
+    return buffer0 | buffer1 << 8 | buffer2 << 16 | buffer3 << 24;
+  } else {
+    return buffer3 | buffer2 << 8 | buffer1 << 16 | buffer0 << 24;
+  }
+}
+
+inline uint64 ByteReader::ReadEightBytes(const char* signed_buffer) const {
+  const unsigned char *buffer
+    = reinterpret_cast<const unsigned char *>(signed_buffer);
+  const uint64 buffer0 = buffer[0];
+  const uint64 buffer1 = buffer[1];
+  const uint64 buffer2 = buffer[2];
+  const uint64 buffer3 = buffer[3];
+  const uint64 buffer4 = buffer[4];
+  const uint64 buffer5 = buffer[5];
+  const uint64 buffer6 = buffer[6];
+  const uint64 buffer7 = buffer[7];
+  if (endian_ == ENDIANNESS_LITTLE) {
+    return buffer0 | buffer1 << 8 | buffer2 << 16 | buffer3 << 24 |
+      buffer4 << 32 | buffer5 << 40 | buffer6 << 48 | buffer7 << 56;
+  } else {
+    return buffer7 | buffer6 << 8 | buffer5 << 16 | buffer4 << 24 |
+      buffer3 << 32 | buffer2 << 40 | buffer1 << 48 | buffer0 << 56;
+  }
+}
+
+// Read an unsigned LEB128 number.  Each byte contains 7 bits of
+// information, plus one bit saying whether the number continues or
+// not.
+
+inline uint64 ByteReader::ReadUnsignedLEB128(const char* buffer,
+                                             size_t* len) const {
+  uint64 result = 0;
+  size_t num_read = 0;
+  unsigned int shift = 0;
+  unsigned char byte;
+
+  do {
+    byte = *buffer++;
+    num_read++;
+
+    result |= (static_cast<uint64>(byte & 0x7f)) << shift;
+
+    shift += 7;
+
+  } while (byte & 0x80);
+
+  *len = num_read;
+
+  return result;
+}
+
+// Read a signed LEB128 number.  These are like regular LEB128
+// numbers, except the last byte may have a sign bit set.
+
+inline int64 ByteReader::ReadSignedLEB128(const char* buffer,
+                                          size_t* len) const {
+  int64 result = 0;
+  unsigned int shift = 0;
+  size_t num_read = 0;
+  unsigned char byte;
+
+  do {
+      byte = *buffer++;
+      num_read++;
+      result |= (static_cast<uint64>(byte & 0x7f) << shift);
+      shift += 7;
+  } while (byte & 0x80);
+
+  if ((shift < 8 * sizeof (result)) && (byte & 0x40))
+    result |= -((static_cast<int64>(1)) << shift);
+  *len = num_read;
+  return result;
+}
+
+inline uint64 ByteReader::ReadOffset(const char* buffer) const {
+  assert(this->offset_reader_);
+  return (this->*offset_reader_)(buffer);
+}
+
+inline uint64 ByteReader::ReadAddress(const char* buffer) const {
+  assert(this->address_reader_);
+  return (this->*address_reader_)(buffer);
+}
+
+inline void ByteReader::SetCFIDataBase(uint64 section_base,
+                                       const char *buffer_base) {
+  section_base_ = section_base;
+  buffer_base_ = buffer_base;
+  have_section_base_ = true;
+}
+
+inline void ByteReader::SetTextBase(uint64 text_base) {
+  text_base_ = text_base;
+  have_text_base_ = true;
+}
+
+inline void ByteReader::SetDataBase(uint64 data_base) {
+  data_base_ = data_base;
+  have_data_base_ = true;
+}
+
+inline void ByteReader::SetFunctionBase(uint64 function_base) {
+  function_base_ = function_base;
+  have_function_base_ = true;
+}
+
+inline void ByteReader::ClearFunctionBase() {
+  have_function_base_ = false;
+}
+
+}  // namespace dwarf2reader
+
+#endif  // UTIL_DEBUGINFO_BYTEREADER_INL_H__
diff --git a/google-breakpad/src/common/dwarf/bytereader.cc b/google-breakpad/src/common/dwarf/bytereader.cc
new file mode 100644
index 0000000..6802026
--- /dev/null
+++ b/google-breakpad/src/common/dwarf/bytereader.cc
@@ -0,0 +1,245 @@
+// Copyright (c) 2010 Google Inc. All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include <assert.h>
+#include <stdlib.h>
+
+#include "common/dwarf/bytereader-inl.h"
+#include "common/dwarf/bytereader.h"
+
+namespace dwarf2reader {
+
+ByteReader::ByteReader(enum Endianness endian)
+    :offset_reader_(NULL), address_reader_(NULL), endian_(endian),
+     address_size_(0), offset_size_(0),
+     have_section_base_(), have_text_base_(), have_data_base_(),
+     have_function_base_() { }
+
+ByteReader::~ByteReader() { }
+
+void ByteReader::SetOffsetSize(uint8 size) {
+  offset_size_ = size;
+  assert(size == 4 || size == 8);
+  if (size == 4) {
+    this->offset_reader_ = &ByteReader::ReadFourBytes;
+  } else {
+    this->offset_reader_ = &ByteReader::ReadEightBytes;
+  }
+}
+
+void ByteReader::SetAddressSize(uint8 size) {
+  address_size_ = size;
+  assert(size == 4 || size == 8);
+  if (size == 4) {
+    this->address_reader_ = &ByteReader::ReadFourBytes;
+  } else {
+    this->address_reader_ = &ByteReader::ReadEightBytes;
+  }
+}
+
+uint64 ByteReader::ReadInitialLength(const char* start, size_t* len) {
+  const uint64 initial_length = ReadFourBytes(start);
+  start += 4;
+
+  // In DWARF2/3, if the initial length is all 1 bits, then the offset
+  // size is 8 and we need to read the next 8 bytes for the real length.
+  if (initial_length == 0xffffffff) {
+    SetOffsetSize(8);
+    *len = 12;
+    return ReadOffset(start);
+  } else {
+    SetOffsetSize(4);
+    *len = 4;
+  }
+  return initial_length;
+}
+
+bool ByteReader::ValidEncoding(DwarfPointerEncoding encoding) const {
+  if (encoding == DW_EH_PE_omit) return true;
+  if (encoding == DW_EH_PE_aligned) return true;
+  if ((encoding & 0x7) > DW_EH_PE_udata8)
+    return false;
+  if ((encoding & 0x70) > DW_EH_PE_funcrel)
+    return false;
+  return true;
+}
+
+bool ByteReader::UsableEncoding(DwarfPointerEncoding encoding) const {
+  switch (encoding & 0x70) {
+    case DW_EH_PE_absptr:  return true;
+    case DW_EH_PE_pcrel:   return have_section_base_;
+    case DW_EH_PE_textrel: return have_text_base_;
+    case DW_EH_PE_datarel: return have_data_base_;
+    case DW_EH_PE_funcrel: return have_function_base_;
+    default:               return false;
+  }
+}
+
+uint64 ByteReader::ReadEncodedPointer(const char *buffer,
+                                      DwarfPointerEncoding encoding,
+                                      size_t *len) const {
+  // UsableEncoding doesn't approve of DW_EH_PE_omit, so we shouldn't
+  // see it here.
+  assert(encoding != DW_EH_PE_omit);
+
+  // The Linux Standards Base 4.0 does not make this clear, but the
+  // GNU tools (gcc/unwind-pe.h; readelf/dwarf.c; gdb/dwarf2-frame.c)
+  // agree that aligned pointers are always absolute, machine-sized,
+  // machine-signed pointers.
+  if (encoding == DW_EH_PE_aligned) {
+    assert(have_section_base_);
+
+    // We don't need to align BUFFER in *our* address space. Rather, we
+    // need to find the next position in our buffer that would be aligned
+    // when the .eh_frame section the buffer contains is loaded into the
+    // program's memory. So align assuming that buffer_base_ gets loaded at
+    // address section_base_, where section_base_ itself may or may not be
+    // aligned.
+
+    // First, find the offset to START from the closest prior aligned
+    // address.
+    uint64 skew = section_base_ & (AddressSize() - 1);
+    // Now find the offset from that aligned address to buffer.
+    uint64 offset = skew + (buffer - buffer_base_);
+    // Round up to the next boundary.
+    uint64 aligned = (offset + AddressSize() - 1) & -AddressSize();
+    // Convert back to a pointer.
+    const char *aligned_buffer = buffer_base_ + (aligned - skew);
+    // Finally, store the length and actually fetch the pointer.
+    *len = aligned_buffer - buffer + AddressSize();
+    return ReadAddress(aligned_buffer);
+  }
+
+  // Extract the value first, ignoring whether it's a pointer or an
+  // offset relative to some base.
+  uint64 offset;
+  switch (encoding & 0x0f) {
+    case DW_EH_PE_absptr:
+      // DW_EH_PE_absptr is weird, as it is used as a meaningful value for
+      // both the high and low nybble of encoding bytes. When it appears in
+      // the high nybble, it means that the pointer is absolute, not an
+      // offset from some base address. When it appears in the low nybble,
+      // as here, it means that the pointer is stored as a normal
+      // machine-sized and machine-signed address. A low nybble of
+      // DW_EH_PE_absptr does not imply that the pointer is absolute; it is
+      // correct for us to treat the value as an offset from a base address
+      // if the upper nybble is not DW_EH_PE_absptr.
+      offset = ReadAddress(buffer);
+      *len = AddressSize();
+      break;
+
+    case DW_EH_PE_uleb128:
+      offset = ReadUnsignedLEB128(buffer, len);
+      break;
+
+    case DW_EH_PE_udata2:
+      offset = ReadTwoBytes(buffer);
+      *len = 2;
+      break;
+
+    case DW_EH_PE_udata4:
+      offset = ReadFourBytes(buffer);
+      *len = 4;
+      break;
+
+    case DW_EH_PE_udata8:
+      offset = ReadEightBytes(buffer);
+      *len = 8;
+      break;
+
+    case DW_EH_PE_sleb128:
+      offset = ReadSignedLEB128(buffer, len);
+      break;
+
+    case DW_EH_PE_sdata2:
+      offset = ReadTwoBytes(buffer);
+      // Sign-extend from 16 bits.
+      offset = (offset ^ 0x8000) - 0x8000;
+      *len = 2;
+      break;
+
+    case DW_EH_PE_sdata4:
+      offset = ReadFourBytes(buffer);
+      // Sign-extend from 32 bits.
+      offset = (offset ^ 0x80000000ULL) - 0x80000000ULL;
+      *len = 4;
+      break;
+
+    case DW_EH_PE_sdata8:
+      // No need to sign-extend; this is the full width of our type.
+      offset = ReadEightBytes(buffer);
+      *len = 8;
+      break;
+
+    default:
+      abort();
+  }
+
+  // Find the appropriate base address.
+  uint64 base;
+  switch (encoding & 0x70) {
+    case DW_EH_PE_absptr:
+      base = 0;
+      break;
+
+    case DW_EH_PE_pcrel:
+      assert(have_section_base_);
+      base = section_base_ + (buffer - buffer_base_);
+      break;
+
+    case DW_EH_PE_textrel:
+      assert(have_text_base_);
+      base = text_base_;
+      break;
+
+    case DW_EH_PE_datarel:
+      assert(have_data_base_);
+      base = data_base_;
+      break;
+
+    case DW_EH_PE_funcrel:
+      assert(have_function_base_);
+      base = function_base_;
+      break;
+
+    default:
+      abort();
+  }
+
+  uint64 pointer = base + offset;
+
+  // Remove inappropriate upper bits.
+  if (AddressSize() == 4)
+    pointer = pointer & 0xffffffff;
+  else
+    assert(AddressSize() == sizeof(uint64));
+
+  return pointer;
+}
+
+}  // namespace dwarf2reader
diff --git a/google-breakpad/src/common/dwarf/bytereader.h b/google-breakpad/src/common/dwarf/bytereader.h
new file mode 100644
index 0000000..e389427
--- /dev/null
+++ b/google-breakpad/src/common/dwarf/bytereader.h
@@ -0,0 +1,310 @@
+// -*- mode: C++ -*-
+
+// Copyright (c) 2010 Google Inc. All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef COMMON_DWARF_BYTEREADER_H__
+#define COMMON_DWARF_BYTEREADER_H__
+
+#include <string>
+#include "common/dwarf/types.h"
+#include "common/dwarf/dwarf2enums.h"
+
+namespace dwarf2reader {
+
+// We can't use the obvious name of LITTLE_ENDIAN and BIG_ENDIAN
+// because it conflicts with a macro
+enum Endianness {
+  ENDIANNESS_BIG,
+  ENDIANNESS_LITTLE
+};
+
+// A ByteReader knows how to read single- and multi-byte values of
+// various endiannesses, sizes, and encodings, as used in DWARF
+// debugging information and Linux C++ exception handling data.
+class ByteReader {
+ public:
+  // Construct a ByteReader capable of reading one-, two-, four-, and
+  // eight-byte values according to ENDIANNESS, absolute machine-sized
+  // addresses, DWARF-style "initial length" values, signed and
+  // unsigned LEB128 numbers, and Linux C++ exception handling data's
+  // encoded pointers.
+  explicit ByteReader(enum Endianness endianness);
+  virtual ~ByteReader();
+
+  // Read a single byte from BUFFER and return it as an unsigned 8 bit
+  // number.
+  uint8 ReadOneByte(const char* buffer) const;
+
+  // Read two bytes from BUFFER and return them as an unsigned 16 bit
+  // number, using this ByteReader's endianness.
+  uint16 ReadTwoBytes(const char* buffer) const;
+
+  // Read four bytes from BUFFER and return them as an unsigned 32 bit
+  // number, using this ByteReader's endianness. This function returns
+  // a uint64 so that it is compatible with ReadAddress and
+  // ReadOffset. The number it returns will never be outside the range
+  // of an unsigned 32 bit integer.
+  uint64 ReadFourBytes(const char* buffer) const;
+
+  // Read eight bytes from BUFFER and return them as an unsigned 64
+  // bit number, using this ByteReader's endianness.
+  uint64 ReadEightBytes(const char* buffer) const;
+
+  // Read an unsigned LEB128 (Little Endian Base 128) number from
+  // BUFFER and return it as an unsigned 64 bit integer. Set LEN to
+  // the number of bytes read.
+  //
+  // The unsigned LEB128 representation of an integer N is a variable
+  // number of bytes:
+  //
+  // - If N is between 0 and 0x7f, then its unsigned LEB128
+  //   representation is a single byte whose value is N.
+  //
+  // - Otherwise, its unsigned LEB128 representation is (N & 0x7f) |
+  //   0x80, followed by the unsigned LEB128 representation of N /
+  //   128, rounded towards negative infinity.
+  //
+  // In other words, we break VALUE into groups of seven bits, put
+  // them in little-endian order, and then write them as eight-bit
+  // bytes with the high bit on all but the last.
+  uint64 ReadUnsignedLEB128(const char* buffer, size_t* len) const;
+
+  // Read a signed LEB128 number from BUFFER and return it as an
+  // signed 64 bit integer. Set LEN to the number of bytes read.
+  //
+  // The signed LEB128 representation of an integer N is a variable
+  // number of bytes:
+  //
+  // - If N is between -0x40 and 0x3f, then its signed LEB128
+  //   representation is a single byte whose value is N in two's
+  //   complement.
+  //
+  // - Otherwise, its signed LEB128 representation is (N & 0x7f) |
+  //   0x80, followed by the signed LEB128 representation of N / 128,
+  //   rounded towards negative infinity.
+  //
+  // In other words, we break VALUE into groups of seven bits, put
+  // them in little-endian order, and then write them as eight-bit
+  // bytes with the high bit on all but the last.
+  int64 ReadSignedLEB128(const char* buffer, size_t* len) const;
+
+  // Indicate that addresses on this architecture are SIZE bytes long. SIZE
+  // must be either 4 or 8. (DWARF allows addresses to be any number of
+  // bytes in length from 1 to 255, but we only support 32- and 64-bit
+  // addresses at the moment.) You must call this before using the
+  // ReadAddress member function.
+  //
+  // For data in a .debug_info section, or something that .debug_info
+  // refers to like line number or macro data, the compilation unit
+  // header's address_size field indicates the address size to use. Call
+  // frame information doesn't indicate its address size (a shortcoming of
+  // the spec); you must supply the appropriate size based on the
+  // architecture of the target machine.
+  void SetAddressSize(uint8 size);
+
+  // Return the current address size, in bytes. This is either 4,
+  // indicating 32-bit addresses, or 8, indicating 64-bit addresses.
+  uint8 AddressSize() const { return address_size_; }
+
+  // Read an address from BUFFER and return it as an unsigned 64 bit
+  // integer, respecting this ByteReader's endianness and address size. You
+  // must call SetAddressSize before calling this function.
+  uint64 ReadAddress(const char* buffer) const;
+
+  // DWARF actually defines two slightly different formats: 32-bit DWARF
+  // and 64-bit DWARF. This is *not* related to the size of registers or
+  // addresses on the target machine; it refers only to the size of section
+  // offsets and data lengths appearing in the DWARF data. One only needs
+  // 64-bit DWARF when the debugging data itself is larger than 4GiB.
+  // 32-bit DWARF can handle x86_64 or PPC64 code just fine, unless the
+  // debugging data itself is very large.
+  //
+  // DWARF information identifies itself as 32-bit or 64-bit DWARF: each
+  // compilation unit and call frame information entry begins with an
+  // "initial length" field, which, in addition to giving the length of the
+  // data, also indicates the size of section offsets and lengths appearing
+  // in that data. The ReadInitialLength member function, below, reads an
+  // initial length and sets the ByteReader's offset size as a side effect.
+  // Thus, in the normal process of reading DWARF data, the appropriate
+  // offset size is set automatically. So, you should only need to call
+  // SetOffsetSize if you are using the same ByteReader to jump from the
+  // midst of one block of DWARF data into another.
+
+  // Read a DWARF "initial length" field from START, and return it as
+  // an unsigned 64 bit integer, respecting this ByteReader's
+  // endianness. Set *LEN to the length of the initial length in
+  // bytes, either four or twelve. As a side effect, set this
+  // ByteReader's offset size to either 4 (if we see a 32-bit DWARF
+  // initial length) or 8 (if we see a 64-bit DWARF initial length).
+  //
+  // A DWARF initial length is either:
+  //
+  // - a byte count stored as an unsigned 32-bit value less than
+  //   0xffffff00, indicating that the data whose length is being
+  //   measured uses the 32-bit DWARF format, or
+  //
+  // - The 32-bit value 0xffffffff, followed by a 64-bit byte count,
+  //   indicating that the data whose length is being measured uses
+  //   the 64-bit DWARF format.
+  uint64 ReadInitialLength(const char* start, size_t* len);
+
+  // Read an offset from BUFFER and return it as an unsigned 64 bit
+  // integer, respecting the ByteReader's endianness. In 32-bit DWARF, the
+  // offset is 4 bytes long; in 64-bit DWARF, the offset is eight bytes
+  // long. You must call ReadInitialLength or SetOffsetSize before calling
+  // this function; see the comments above for details.
+  uint64 ReadOffset(const char* buffer) const;
+
+  // Return the current offset size, in bytes.
+  // A return value of 4 indicates that we are reading 32-bit DWARF.
+  // A return value of 8 indicates that we are reading 64-bit DWARF.
+  uint8 OffsetSize() const { return offset_size_; }
+
+  // Indicate that section offsets and lengths are SIZE bytes long. SIZE
+  // must be either 4 (meaning 32-bit DWARF) or 8 (meaning 64-bit DWARF).
+  // Usually, you should not call this function yourself; instead, let a
+  // call to ReadInitialLength establish the data's offset size
+  // automatically.
+  void SetOffsetSize(uint8 size);
+
+  // The Linux C++ ABI uses a variant of DWARF call frame information
+  // for exception handling. This data is included in the program's
+  // address space as the ".eh_frame" section, and intepreted at
+  // runtime to walk the stack, find exception handlers, and run
+  // cleanup code. The format is mostly the same as DWARF CFI, with
+  // some adjustments made to provide the additional
+  // exception-handling data, and to make the data easier to work with
+  // in memory --- for example, to allow it to be placed in read-only
+  // memory even when describing position-independent code.
+  //
+  // In particular, exception handling data can select a number of
+  // different encodings for pointers that appear in the data, as
+  // described by the DwarfPointerEncoding enum. There are actually
+  // four axes(!) to the encoding:
+  //
+  // - The pointer size: pointers can be 2, 4, or 8 bytes long, or use
+  //   the DWARF LEB128 encoding.
+  //
+  // - The pointer's signedness: pointers can be signed or unsigned.
+  //
+  // - The pointer's base address: the data stored in the exception
+  //   handling data can be the actual address (that is, an absolute
+  //   pointer), or relative to one of a number of different base
+  //   addreses --- including that of the encoded pointer itself, for
+  //   a form of "pc-relative" addressing.
+  //
+  // - The pointer may be indirect: it may be the address where the
+  //   true pointer is stored. (This is used to refer to things via
+  //   global offset table entries, program linkage table entries, or
+  //   other tricks used in position-independent code.)
+  //
+  // There are also two options that fall outside that matrix
+  // altogether: the pointer may be omitted, or it may have padding to
+  // align it on an appropriate address boundary. (That last option
+  // may seem like it should be just another axis, but it is not.)
+
+  // Indicate that the exception handling data is loaded starting at
+  // SECTION_BASE, and that the start of its buffer in our own memory
+  // is BUFFER_BASE. This allows us to find the address that a given
+  // byte in our buffer would have when loaded into the program the
+  // data describes. We need this to resolve DW_EH_PE_pcrel pointers.
+  void SetCFIDataBase(uint64 section_base, const char *buffer_base);
+
+  // Indicate that the base address of the program's ".text" section
+  // is TEXT_BASE. We need this to resolve DW_EH_PE_textrel pointers.
+  void SetTextBase(uint64 text_base);
+
+  // Indicate that the base address for DW_EH_PE_datarel pointers is
+  // DATA_BASE. The proper value depends on the ABI; it is usually the
+  // address of the global offset table, held in a designated register in
+  // position-independent code. You will need to look at the startup code
+  // for the target system to be sure. I tried; my eyes bled.
+  void SetDataBase(uint64 data_base);
+
+  // Indicate that the base address for the FDE we are processing is
+  // FUNCTION_BASE. This is the start address of DW_EH_PE_funcrel
+  // pointers. (This encoding does not seem to be used by the GNU
+  // toolchain.)
+  void SetFunctionBase(uint64 function_base);
+
+  // Indicate that we are no longer processing any FDE, so any use of
+  // a DW_EH_PE_funcrel encoding is an error.
+  void ClearFunctionBase();
+
+  // Return true if ENCODING is a valid pointer encoding.
+  bool ValidEncoding(DwarfPointerEncoding encoding) const;
+
+  // Return true if we have all the information we need to read a
+  // pointer that uses ENCODING. This checks that the appropriate
+  // SetFooBase function for ENCODING has been called.
+  bool UsableEncoding(DwarfPointerEncoding encoding) const;
+
+  // Read an encoded pointer from BUFFER using ENCODING; return the
+  // absolute address it represents, and set *LEN to the pointer's
+  // length in bytes, including any padding for aligned pointers.
+  //
+  // This function calls 'abort' if ENCODING is invalid or refers to a
+  // base address this reader hasn't been given, so you should check
+  // with ValidEncoding and UsableEncoding first if you would rather
+  // die in a more helpful way.
+  uint64 ReadEncodedPointer(const char *buffer, DwarfPointerEncoding encoding,
+                            size_t *len) const;
+
+ private:
+
+  // Function pointer type for our address and offset readers.
+  typedef uint64 (ByteReader::*AddressReader)(const char*) const;
+
+  // Read an offset from BUFFER and return it as an unsigned 64 bit
+  // integer.  DWARF2/3 define offsets as either 4 or 8 bytes,
+  // generally depending on the amount of DWARF2/3 info present.
+  // This function pointer gets set by SetOffsetSize.
+  AddressReader offset_reader_;
+
+  // Read an address from BUFFER and return it as an unsigned 64 bit
+  // integer.  DWARF2/3 allow addresses to be any size from 0-255
+  // bytes currently.  Internally we support 4 and 8 byte addresses,
+  // and will CHECK on anything else.
+  // This function pointer gets set by SetAddressSize.
+  AddressReader address_reader_;
+
+  Endianness endian_;
+  uint8 address_size_;
+  uint8 offset_size_;
+
+  // Base addresses for Linux C++ exception handling data's encoded pointers.
+  bool have_section_base_, have_text_base_, have_data_base_;
+  bool have_function_base_;
+  uint64 section_base_, text_base_, data_base_, function_base_;
+  const char *buffer_base_;
+};
+
+}  // namespace dwarf2reader
+
+#endif  // COMMON_DWARF_BYTEREADER_H__
diff --git a/google-breakpad/src/common/dwarf/bytereader_unittest.cc b/google-breakpad/src/common/dwarf/bytereader_unittest.cc
new file mode 100644
index 0000000..4311ab6
--- /dev/null
+++ b/google-breakpad/src/common/dwarf/bytereader_unittest.cc
@@ -0,0 +1,697 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// bytereader_unittest.cc: Unit tests for dwarf2reader::ByteReader
+
+#include <string>
+
+#include "breakpad_googletest_includes.h"
+#include "common/dwarf/bytereader.h"
+#include "common/dwarf/bytereader-inl.h"
+#include "common/dwarf/cfi_assembler.h"
+#include "common/using_std_string.h"
+
+using dwarf2reader::ByteReader;
+using dwarf2reader::DwarfPointerEncoding;
+using dwarf2reader::ENDIANNESS_BIG;
+using dwarf2reader::ENDIANNESS_LITTLE;
+using google_breakpad::CFISection;
+using google_breakpad::test_assembler::Label;
+using google_breakpad::test_assembler::kBigEndian;
+using google_breakpad::test_assembler::kLittleEndian;
+using google_breakpad::test_assembler::Section;
+using testing::Test;
+
+struct ReaderFixture {
+  string contents;
+  size_t pointer_size;
+};
+
+class Reader: public ReaderFixture, public Test { };
+class ReaderDeathTest: public ReaderFixture, public Test { };
+
+TEST_F(Reader, SimpleConstructor) {
+  ByteReader reader(ENDIANNESS_BIG);
+  reader.SetAddressSize(4);
+  CFISection section(kBigEndian, 4);
+  section
+    .D8(0xc0)
+    .D16(0xcf0d)
+    .D32(0x96fdd219)
+    .D64(0xbbf55fef0825f117ULL)
+    .ULEB128(0xa0927048ba8121afULL)
+    .LEB128(-0x4f337badf4483f83LL)
+    .D32(0xfec319c9);
+  ASSERT_TRUE(section.GetContents(&contents));
+  const char *data = contents.data();
+  EXPECT_EQ(0xc0U, reader.ReadOneByte(data));
+  EXPECT_EQ(0xcf0dU, reader.ReadTwoBytes(data + 1));
+  EXPECT_EQ(0x96fdd219U, reader.ReadFourBytes(data + 3));
+  EXPECT_EQ(0xbbf55fef0825f117ULL, reader.ReadEightBytes(data + 7));
+  size_t leb128_size;
+  EXPECT_EQ(0xa0927048ba8121afULL,
+            reader.ReadUnsignedLEB128(data + 15, &leb128_size));
+  EXPECT_EQ(10U, leb128_size);
+  EXPECT_EQ(-0x4f337badf4483f83LL,
+            reader.ReadSignedLEB128(data + 25, &leb128_size));
+  EXPECT_EQ(10U, leb128_size);
+  EXPECT_EQ(0xfec319c9, reader.ReadAddress(data + 35));
+}
+
+TEST_F(Reader, ValidEncodings) {
+  ByteReader reader(ENDIANNESS_LITTLE);
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_absptr)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_omit)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_aligned)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_uleb128)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_udata2)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_udata4)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_udata8)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_sleb128)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_sdata2)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_sdata4)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_sdata8)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_absptr |
+                           dwarf2reader::DW_EH_PE_pcrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_uleb128 |
+                           dwarf2reader::DW_EH_PE_pcrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_udata2 |
+                           dwarf2reader::DW_EH_PE_pcrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_udata4 |
+                           dwarf2reader::DW_EH_PE_pcrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_udata8 |
+                           dwarf2reader::DW_EH_PE_pcrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_sleb128 |
+                           dwarf2reader::DW_EH_PE_pcrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_sdata2 |
+                           dwarf2reader::DW_EH_PE_pcrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_sdata4 |
+                           dwarf2reader::DW_EH_PE_pcrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_sdata8 |
+                           dwarf2reader::DW_EH_PE_pcrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_absptr |
+                           dwarf2reader::DW_EH_PE_textrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_uleb128 |
+                           dwarf2reader::DW_EH_PE_textrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_udata2 |
+                           dwarf2reader::DW_EH_PE_textrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_udata4 |
+                           dwarf2reader::DW_EH_PE_textrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_udata8 |
+                           dwarf2reader::DW_EH_PE_textrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_sleb128 |
+                           dwarf2reader::DW_EH_PE_textrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_sdata2 |
+                           dwarf2reader::DW_EH_PE_textrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_sdata4 |
+                           dwarf2reader::DW_EH_PE_textrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_sdata8 |
+                           dwarf2reader::DW_EH_PE_textrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_absptr |
+                           dwarf2reader::DW_EH_PE_datarel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_uleb128 |
+                           dwarf2reader::DW_EH_PE_datarel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_udata2 |
+                           dwarf2reader::DW_EH_PE_datarel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_udata4 |
+                           dwarf2reader::DW_EH_PE_datarel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_udata8 |
+                           dwarf2reader::DW_EH_PE_datarel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_sleb128 |
+                           dwarf2reader::DW_EH_PE_datarel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_sdata2 |
+                           dwarf2reader::DW_EH_PE_datarel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_sdata4 |
+                           dwarf2reader::DW_EH_PE_datarel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_sdata8 |
+                           dwarf2reader::DW_EH_PE_datarel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_absptr |
+                           dwarf2reader::DW_EH_PE_funcrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_uleb128 |
+                           dwarf2reader::DW_EH_PE_funcrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_udata2 |
+                           dwarf2reader::DW_EH_PE_funcrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_udata4 |
+                           dwarf2reader::DW_EH_PE_funcrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_udata8 |
+                           dwarf2reader::DW_EH_PE_funcrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_sleb128 |
+                           dwarf2reader::DW_EH_PE_funcrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_sdata2 |
+                           dwarf2reader::DW_EH_PE_funcrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_sdata4 |
+                           dwarf2reader::DW_EH_PE_funcrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_sdata8 |
+                           dwarf2reader::DW_EH_PE_funcrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_indirect |
+                           dwarf2reader::DW_EH_PE_absptr |
+                           dwarf2reader::DW_EH_PE_pcrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_indirect |
+                           dwarf2reader::DW_EH_PE_uleb128 |
+                           dwarf2reader::DW_EH_PE_pcrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_indirect |
+                           dwarf2reader::DW_EH_PE_udata2 |
+                           dwarf2reader::DW_EH_PE_pcrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_indirect |
+                           dwarf2reader::DW_EH_PE_udata4 |
+                           dwarf2reader::DW_EH_PE_pcrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_indirect |
+                           dwarf2reader::DW_EH_PE_udata8 |
+                           dwarf2reader::DW_EH_PE_pcrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_indirect |
+                           dwarf2reader::DW_EH_PE_sleb128 |
+                           dwarf2reader::DW_EH_PE_pcrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_indirect |
+                           dwarf2reader::DW_EH_PE_sdata2 |
+                           dwarf2reader::DW_EH_PE_pcrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_indirect |
+                           dwarf2reader::DW_EH_PE_sdata4 |
+                           dwarf2reader::DW_EH_PE_pcrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_indirect |
+                           dwarf2reader::DW_EH_PE_sdata8 |
+                           dwarf2reader::DW_EH_PE_pcrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_indirect |
+                           dwarf2reader::DW_EH_PE_absptr |
+                           dwarf2reader::DW_EH_PE_textrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_indirect |
+                           dwarf2reader::DW_EH_PE_uleb128 |
+                           dwarf2reader::DW_EH_PE_textrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_indirect |
+                           dwarf2reader::DW_EH_PE_udata2 |
+                           dwarf2reader::DW_EH_PE_textrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_indirect |
+                           dwarf2reader::DW_EH_PE_udata4 |
+                           dwarf2reader::DW_EH_PE_textrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_indirect |
+                           dwarf2reader::DW_EH_PE_udata8 |
+                           dwarf2reader::DW_EH_PE_textrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_indirect |
+                           dwarf2reader::DW_EH_PE_sleb128 |
+                           dwarf2reader::DW_EH_PE_textrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_indirect |
+                           dwarf2reader::DW_EH_PE_sdata2 |
+                           dwarf2reader::DW_EH_PE_textrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_indirect |
+                           dwarf2reader::DW_EH_PE_sdata4 |
+                           dwarf2reader::DW_EH_PE_textrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_indirect |
+                           dwarf2reader::DW_EH_PE_sdata8 |
+                           dwarf2reader::DW_EH_PE_textrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_indirect |
+                           dwarf2reader::DW_EH_PE_absptr |
+                           dwarf2reader::DW_EH_PE_datarel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_indirect |
+                           dwarf2reader::DW_EH_PE_uleb128 |
+                           dwarf2reader::DW_EH_PE_datarel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_indirect |
+                           dwarf2reader::DW_EH_PE_udata2 |
+                           dwarf2reader::DW_EH_PE_datarel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_indirect |
+                           dwarf2reader::DW_EH_PE_udata4 |
+                           dwarf2reader::DW_EH_PE_datarel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_indirect |
+                           dwarf2reader::DW_EH_PE_udata8 |
+                           dwarf2reader::DW_EH_PE_datarel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_indirect |
+                           dwarf2reader::DW_EH_PE_sleb128 |
+                           dwarf2reader::DW_EH_PE_datarel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_indirect |
+                           dwarf2reader::DW_EH_PE_sdata2 |
+                           dwarf2reader::DW_EH_PE_datarel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_indirect |
+                           dwarf2reader::DW_EH_PE_sdata4 |
+                           dwarf2reader::DW_EH_PE_datarel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_indirect |
+                           dwarf2reader::DW_EH_PE_sdata8 |
+                           dwarf2reader::DW_EH_PE_datarel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_indirect |
+                           dwarf2reader::DW_EH_PE_absptr |
+                           dwarf2reader::DW_EH_PE_funcrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_indirect |
+                           dwarf2reader::DW_EH_PE_uleb128 |
+                           dwarf2reader::DW_EH_PE_funcrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_indirect |
+                           dwarf2reader::DW_EH_PE_udata2 |
+                           dwarf2reader::DW_EH_PE_funcrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_indirect |
+                           dwarf2reader::DW_EH_PE_udata4 |
+                           dwarf2reader::DW_EH_PE_funcrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_indirect |
+                           dwarf2reader::DW_EH_PE_udata8 |
+                           dwarf2reader::DW_EH_PE_funcrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_indirect |
+                           dwarf2reader::DW_EH_PE_sleb128 |
+                           dwarf2reader::DW_EH_PE_funcrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_indirect |
+                           dwarf2reader::DW_EH_PE_sdata2 |
+                           dwarf2reader::DW_EH_PE_funcrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_indirect |
+                           dwarf2reader::DW_EH_PE_sdata4 |
+                           dwarf2reader::DW_EH_PE_funcrel)));
+  EXPECT_TRUE(reader.ValidEncoding(
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_indirect |
+                           dwarf2reader::DW_EH_PE_sdata8 |
+                           dwarf2reader::DW_EH_PE_funcrel)));
+
+  EXPECT_FALSE(reader.ValidEncoding(DwarfPointerEncoding(0x05)));
+  EXPECT_FALSE(reader.ValidEncoding(DwarfPointerEncoding(0x07)));
+  EXPECT_FALSE(reader.ValidEncoding(DwarfPointerEncoding(0x0d)));
+  EXPECT_FALSE(reader.ValidEncoding(DwarfPointerEncoding(0x0f)));
+  EXPECT_FALSE(reader.ValidEncoding(DwarfPointerEncoding(0x51)));
+  EXPECT_FALSE(reader.ValidEncoding(DwarfPointerEncoding(0x60)));
+  EXPECT_FALSE(reader.ValidEncoding(DwarfPointerEncoding(0x70)));
+  EXPECT_FALSE(reader.ValidEncoding(DwarfPointerEncoding(0xf0)));
+  EXPECT_FALSE(reader.ValidEncoding(DwarfPointerEncoding(0xd0)));
+}
+
+TEST_F(ReaderDeathTest, DW_EH_PE_omit) {
+  static const char data[1] = { 42 };
+  ByteReader reader(ENDIANNESS_BIG);
+  reader.SetAddressSize(4);
+  EXPECT_DEATH(reader.ReadEncodedPointer(data, dwarf2reader::DW_EH_PE_omit,
+                                         &pointer_size),
+               "encoding != DW_EH_PE_omit");
+}
+
+TEST_F(Reader, DW_EH_PE_absptr4) {
+  static const char data[] = { 0x27, 0x57, 0xea, 0x40 };
+  ByteReader reader(ENDIANNESS_LITTLE);
+  reader.SetAddressSize(4);
+  EXPECT_EQ(0x40ea5727U,
+            reader.ReadEncodedPointer(data, dwarf2reader::DW_EH_PE_absptr,
+                                      &pointer_size));
+  EXPECT_EQ(4U, pointer_size);
+}
+
+TEST_F(Reader, DW_EH_PE_absptr8) {
+  static const char data[] = {
+    0x60, 0x27, 0x57, 0xea, 0x40, 0xc2, 0x98, 0x05, 0x01, 0x50
+  };
+  ByteReader reader(ENDIANNESS_LITTLE);
+  reader.SetAddressSize(8);
+  EXPECT_EQ(0x010598c240ea5727ULL,
+            reader.ReadEncodedPointer(data + 1, dwarf2reader::DW_EH_PE_absptr,
+                                      &pointer_size));
+  EXPECT_EQ(8U, pointer_size);
+}
+
+TEST_F(Reader, DW_EH_PE_uleb128) {
+  static const char data[] = { 0x81, 0x84, 0x4c };
+  ByteReader reader(ENDIANNESS_LITTLE);
+  reader.SetAddressSize(4);
+  EXPECT_EQ(0x130201U,
+            reader.ReadEncodedPointer(data, dwarf2reader::DW_EH_PE_uleb128,
+                                      &pointer_size));
+  EXPECT_EQ(3U, pointer_size);
+}
+
+TEST_F(Reader, DW_EH_PE_udata2) {
+  static const char data[] = { 0xf4, 0x8d };
+  ByteReader reader(ENDIANNESS_BIG);
+  reader.SetAddressSize(4);
+  EXPECT_EQ(0xf48dU,
+            reader.ReadEncodedPointer(data, dwarf2reader::DW_EH_PE_udata2,
+                                      &pointer_size));
+  EXPECT_EQ(2U, pointer_size);
+}
+
+TEST_F(Reader, DW_EH_PE_udata4) {
+  static const char data[] = { 0xb2, 0x68, 0xa5, 0x62, 0x8f, 0x8b };
+  ByteReader reader(ENDIANNESS_BIG);
+  reader.SetAddressSize(8);
+  EXPECT_EQ(0xa5628f8b,
+            reader.ReadEncodedPointer(data + 2, dwarf2reader::DW_EH_PE_udata4,
+                                      &pointer_size));
+  EXPECT_EQ(4U, pointer_size);
+}
+
+TEST_F(Reader, DW_EH_PE_udata8Addr8) {
+  static const char data[] = {
+    0x27, 0x04, 0x73, 0x04, 0x69, 0x9f, 0x19, 0xed, 0x8f, 0xfe
+  };
+  ByteReader reader(ENDIANNESS_LITTLE);
+  reader.SetAddressSize(8);
+  EXPECT_EQ(0x8fed199f69047304ULL,
+            reader.ReadEncodedPointer(data + 1, dwarf2reader::DW_EH_PE_udata8,
+                                        &pointer_size));
+  EXPECT_EQ(8U, pointer_size);
+}
+
+TEST_F(Reader, DW_EH_PE_udata8Addr4) {
+  static const char data[] = {
+    0x27, 0x04, 0x73, 0x04, 0x69, 0x9f, 0x19, 0xed, 0x8f, 0xfe
+  };
+  ByteReader reader(ENDIANNESS_LITTLE);
+  reader.SetAddressSize(4);
+  EXPECT_EQ(0x69047304ULL,
+            reader.ReadEncodedPointer(data + 1, dwarf2reader::DW_EH_PE_udata8,
+                                        &pointer_size));
+  EXPECT_EQ(8U, pointer_size);
+}
+
+TEST_F(Reader, DW_EH_PE_sleb128) {
+  static const char data[] = { 0x42, 0xff, 0xfb, 0x73 };
+  ByteReader reader(ENDIANNESS_BIG);
+  reader.SetAddressSize(4);
+  EXPECT_EQ(-0x030201U & 0xffffffff,
+            reader.ReadEncodedPointer(data + 1, dwarf2reader::DW_EH_PE_sleb128,
+                                        &pointer_size));
+  EXPECT_EQ(3U, pointer_size);
+}
+
+TEST_F(Reader, DW_EH_PE_sdata2) {
+  static const char data[] = { 0xb9, 0xbf };
+  ByteReader reader(ENDIANNESS_LITTLE);
+  reader.SetAddressSize(8);
+  EXPECT_EQ(0xffffffffffffbfb9ULL,
+            reader.ReadEncodedPointer(data, dwarf2reader::DW_EH_PE_sdata2,
+                                        &pointer_size));
+  EXPECT_EQ(2U, pointer_size);
+}
+
+TEST_F(Reader, DW_EH_PE_sdata4) {
+  static const char data[] = { 0xa0, 0xca, 0xf2, 0xb8, 0xc2, 0xad };
+  ByteReader reader(ENDIANNESS_LITTLE);
+  reader.SetAddressSize(8);
+  EXPECT_EQ(0xffffffffadc2b8f2ULL,
+            reader.ReadEncodedPointer(data + 2, dwarf2reader::DW_EH_PE_sdata4,
+                                        &pointer_size));
+  EXPECT_EQ(4U, pointer_size);
+}
+
+TEST_F(Reader, DW_EH_PE_sdata8) {
+  static const char data[] = {
+    0xf6, 0x66, 0x57, 0x79, 0xe0, 0x0c, 0x9b, 0x26, 0x87
+  };
+  ByteReader reader(ENDIANNESS_LITTLE);
+  reader.SetAddressSize(8);
+  EXPECT_EQ(0x87269b0ce0795766ULL,
+            reader.ReadEncodedPointer(data + 1, dwarf2reader::DW_EH_PE_sdata8,
+                                        &pointer_size));
+  EXPECT_EQ(8U, pointer_size);
+}
+
+TEST_F(Reader, DW_EH_PE_pcrel) {
+  static const char data[] = { 0x4a, 0x8b, 0x1b, 0x14, 0xc8, 0xc4, 0x02, 0xce };
+  ByteReader reader(ENDIANNESS_BIG);
+  reader.SetAddressSize(4);
+  DwarfPointerEncoding encoding =
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_pcrel
+                           | dwarf2reader::DW_EH_PE_absptr);
+  reader.SetCFIDataBase(0x89951377, data);
+  EXPECT_EQ(0x89951377 + 3 + 0x14c8c402,
+            reader.ReadEncodedPointer(data + 3, encoding, &pointer_size));
+  EXPECT_EQ(4U, pointer_size);
+}
+
+TEST_F(Reader, DW_EH_PE_textrel) {
+  static const char data[] = { 0xd9, 0x0d, 0x05, 0x17, 0xc9, 0x7a, 0x42, 0x1e };
+  ByteReader reader(ENDIANNESS_LITTLE);
+  reader.SetAddressSize(4);
+  reader.SetTextBase(0xb91beaf0);
+  DwarfPointerEncoding encoding =
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_textrel
+                           | dwarf2reader::DW_EH_PE_sdata2);
+  EXPECT_EQ((0xb91beaf0 + 0xffffc917) & 0xffffffff,
+            reader.ReadEncodedPointer(data + 3, encoding, &pointer_size));
+  EXPECT_EQ(2U, pointer_size);
+}
+
+TEST_F(Reader, DW_EH_PE_datarel) {
+  static const char data[] = { 0x16, 0xf2, 0xbb, 0x82, 0x68, 0xa7, 0xbc, 0x39 };
+  ByteReader reader(ENDIANNESS_BIG);
+  reader.SetAddressSize(8);
+  reader.SetDataBase(0xbef308bd25ce74f0ULL);
+  DwarfPointerEncoding encoding =
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_datarel
+                           | dwarf2reader::DW_EH_PE_sleb128);
+  EXPECT_EQ(0xbef308bd25ce74f0ULL + 0xfffffffffffa013bULL,
+            reader.ReadEncodedPointer(data + 2, encoding, &pointer_size));
+  EXPECT_EQ(3U, pointer_size);
+}
+
+TEST_F(Reader, DW_EH_PE_funcrel) {
+  static const char data[] = { 0x84, 0xf8, 0x14, 0x01, 0x61, 0xd1, 0x48, 0xc9 };
+  ByteReader reader(ENDIANNESS_BIG);
+  reader.SetAddressSize(4);
+  reader.SetFunctionBase(0x823c3520);
+  DwarfPointerEncoding encoding =
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_funcrel
+                           | dwarf2reader::DW_EH_PE_udata2);
+  EXPECT_EQ(0x823c3520 + 0xd148,
+            reader.ReadEncodedPointer(data + 5, encoding, &pointer_size));
+  EXPECT_EQ(2U, pointer_size);
+}
+
+TEST(UsableBase, CFI) {
+  static const char data[1] = { 0x42 };
+  ByteReader reader(ENDIANNESS_BIG);
+  reader.SetCFIDataBase(0xb31cbd20, data);
+  EXPECT_TRUE(reader.UsableEncoding(dwarf2reader::DW_EH_PE_absptr));
+  EXPECT_TRUE(reader.UsableEncoding(dwarf2reader::DW_EH_PE_pcrel));
+  EXPECT_FALSE(reader.UsableEncoding(dwarf2reader::DW_EH_PE_textrel));
+  EXPECT_FALSE(reader.UsableEncoding(dwarf2reader::DW_EH_PE_datarel));
+  EXPECT_FALSE(reader.UsableEncoding(dwarf2reader::DW_EH_PE_funcrel));
+  EXPECT_FALSE(reader.UsableEncoding(dwarf2reader::DW_EH_PE_omit));
+  EXPECT_FALSE(reader.UsableEncoding(DwarfPointerEncoding(0x60)));
+}
+
+TEST(UsableBase, Text) {
+  ByteReader reader(ENDIANNESS_BIG);
+  reader.SetTextBase(0xa899ccb9);
+  EXPECT_TRUE(reader.UsableEncoding(dwarf2reader::DW_EH_PE_absptr));
+  EXPECT_FALSE(reader.UsableEncoding(dwarf2reader::DW_EH_PE_pcrel));
+  EXPECT_TRUE(reader.UsableEncoding(dwarf2reader::DW_EH_PE_textrel));
+  EXPECT_FALSE(reader.UsableEncoding(dwarf2reader::DW_EH_PE_datarel));
+  EXPECT_FALSE(reader.UsableEncoding(dwarf2reader::DW_EH_PE_funcrel));
+  EXPECT_FALSE(reader.UsableEncoding(dwarf2reader::DW_EH_PE_omit));
+  EXPECT_FALSE(reader.UsableEncoding(DwarfPointerEncoding(0x60)));
+}
+
+TEST(UsableBase, Data) {
+  ByteReader reader(ENDIANNESS_BIG);
+  reader.SetDataBase(0xf7b10bcd);
+  EXPECT_TRUE(reader.UsableEncoding(dwarf2reader::DW_EH_PE_absptr));
+  EXPECT_FALSE(reader.UsableEncoding(dwarf2reader::DW_EH_PE_pcrel));
+  EXPECT_FALSE(reader.UsableEncoding(dwarf2reader::DW_EH_PE_textrel));
+  EXPECT_TRUE(reader.UsableEncoding(dwarf2reader::DW_EH_PE_datarel));
+  EXPECT_FALSE(reader.UsableEncoding(dwarf2reader::DW_EH_PE_funcrel));
+  EXPECT_FALSE(reader.UsableEncoding(dwarf2reader::DW_EH_PE_omit));
+  EXPECT_FALSE(reader.UsableEncoding(DwarfPointerEncoding(0x60)));
+}
+
+TEST(UsableBase, Function) {
+  ByteReader reader(ENDIANNESS_BIG);
+  reader.SetFunctionBase(0xc2c0ed81);
+  EXPECT_TRUE(reader.UsableEncoding(dwarf2reader::DW_EH_PE_absptr));
+  EXPECT_FALSE(reader.UsableEncoding(dwarf2reader::DW_EH_PE_pcrel));
+  EXPECT_FALSE(reader.UsableEncoding(dwarf2reader::DW_EH_PE_textrel));
+  EXPECT_FALSE(reader.UsableEncoding(dwarf2reader::DW_EH_PE_datarel));
+  EXPECT_TRUE(reader.UsableEncoding(dwarf2reader::DW_EH_PE_funcrel));
+  EXPECT_FALSE(reader.UsableEncoding(dwarf2reader::DW_EH_PE_omit));
+  EXPECT_FALSE(reader.UsableEncoding(DwarfPointerEncoding(0x60)));
+}
+
+TEST(UsableBase, ClearFunction) {
+  ByteReader reader(ENDIANNESS_BIG);
+  reader.SetFunctionBase(0xc2c0ed81);
+  reader.ClearFunctionBase();
+  EXPECT_TRUE(reader.UsableEncoding(dwarf2reader::DW_EH_PE_absptr));
+  EXPECT_FALSE(reader.UsableEncoding(dwarf2reader::DW_EH_PE_pcrel));
+  EXPECT_FALSE(reader.UsableEncoding(dwarf2reader::DW_EH_PE_textrel));
+  EXPECT_FALSE(reader.UsableEncoding(dwarf2reader::DW_EH_PE_datarel));
+  EXPECT_FALSE(reader.UsableEncoding(dwarf2reader::DW_EH_PE_funcrel));
+  EXPECT_FALSE(reader.UsableEncoding(dwarf2reader::DW_EH_PE_omit));
+  EXPECT_FALSE(reader.UsableEncoding(DwarfPointerEncoding(0x60)));
+}
+
+struct AlignedFixture {
+  AlignedFixture() : reader(ENDIANNESS_BIG) { reader.SetAddressSize(4); }
+  static const char data[10];
+  ByteReader reader;
+  size_t pointer_size;
+};
+  
+const char AlignedFixture::data[10] = {
+  0xfe, 0x6e, 0x93, 0xd8, 0x34, 0xd5, 0x1c, 0xd3, 0xac, 0x2b
+};
+
+class Aligned: public AlignedFixture, public Test { };
+
+TEST_F(Aligned, DW_EH_PE_aligned0) {
+  reader.SetCFIDataBase(0xb440305c, data);
+  EXPECT_EQ(0xfe6e93d8U,
+            reader.ReadEncodedPointer(data, dwarf2reader::DW_EH_PE_aligned,
+                                      &pointer_size));
+  EXPECT_EQ(4U, pointer_size);
+}
+
+TEST_F(Aligned, DW_EH_PE_aligned1) {
+  reader.SetCFIDataBase(0xb440305d, data);
+  EXPECT_EQ(0xd834d51cU,
+            reader.ReadEncodedPointer(data, dwarf2reader::DW_EH_PE_aligned,
+                                      &pointer_size));
+  EXPECT_EQ(7U, pointer_size);
+}
+
+TEST_F(Aligned, DW_EH_PE_aligned2) {
+  reader.SetCFIDataBase(0xb440305e, data);
+  EXPECT_EQ(0x93d834d5U,
+            reader.ReadEncodedPointer(data, dwarf2reader::DW_EH_PE_aligned,
+                                      &pointer_size));
+  EXPECT_EQ(6U, pointer_size);
+}
+
+TEST_F(Aligned, DW_EH_PE_aligned3) {
+  reader.SetCFIDataBase(0xb440305f, data);
+  EXPECT_EQ(0x6e93d834U,
+            reader.ReadEncodedPointer(data, dwarf2reader::DW_EH_PE_aligned,
+                                      &pointer_size));
+  EXPECT_EQ(5U, pointer_size);
+}
+
+TEST_F(Aligned, DW_EH_PE_aligned11) {
+  reader.SetCFIDataBase(0xb4403061, data);
+  EXPECT_EQ(0xd834d51cU,
+            reader.ReadEncodedPointer(data + 1,
+                                      dwarf2reader::DW_EH_PE_aligned,
+                                      &pointer_size));
+  EXPECT_EQ(6U, pointer_size);
+}
+
+TEST_F(Aligned, DW_EH_PE_aligned30) {
+  reader.SetCFIDataBase(0xb4403063, data);
+  EXPECT_EQ(0x6e93d834U,
+            reader.ReadEncodedPointer(data + 1,
+                                      dwarf2reader::DW_EH_PE_aligned,
+                                      &pointer_size));
+  EXPECT_EQ(4U, pointer_size);
+}
+
+TEST_F(Aligned, DW_EH_PE_aligned23) {
+  reader.SetCFIDataBase(0xb4403062, data);
+  EXPECT_EQ(0x1cd3ac2bU,
+            reader.ReadEncodedPointer(data + 3,
+                                      dwarf2reader::DW_EH_PE_aligned,
+                                      &pointer_size));
+  EXPECT_EQ(7U, pointer_size);
+}
+
+TEST_F(Aligned, DW_EH_PE_aligned03) {
+  reader.SetCFIDataBase(0xb4403064, data);
+  EXPECT_EQ(0x34d51cd3U,
+            reader.ReadEncodedPointer(data + 3,
+                                      dwarf2reader::DW_EH_PE_aligned,
+                                      &pointer_size));
+  EXPECT_EQ(5U, pointer_size);
+}  
diff --git a/google-breakpad/src/common/dwarf/cfi_assembler.cc b/google-breakpad/src/common/dwarf/cfi_assembler.cc
new file mode 100644
index 0000000..dbc2efa
--- /dev/null
+++ b/google-breakpad/src/common/dwarf/cfi_assembler.cc
@@ -0,0 +1,198 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// cfi_assembler.cc: Implementation of google_breakpad::CFISection class.
+// See cfi_assembler.h for details.
+
+#include "common/dwarf/cfi_assembler.h"
+
+#include <assert.h>
+#include <stdlib.h>
+
+namespace google_breakpad {
+
+using dwarf2reader::DwarfPointerEncoding;
+  
+CFISection &CFISection::CIEHeader(uint64_t code_alignment_factor,
+                                  int data_alignment_factor,
+                                  unsigned return_address_register,
+                                  uint8_t version,
+                                  const string &augmentation,
+                                  bool dwarf64) {
+  assert(!entry_length_);
+  entry_length_ = new PendingLength();
+  in_fde_ = false;
+
+  if (dwarf64) {
+    D32(kDwarf64InitialLengthMarker);
+    D64(entry_length_->length);
+    entry_length_->start = Here();
+    D64(eh_frame_ ? kEHFrame64CIEIdentifier : kDwarf64CIEIdentifier);
+  } else {
+    D32(entry_length_->length);
+    entry_length_->start = Here();
+    D32(eh_frame_ ? kEHFrame32CIEIdentifier : kDwarf32CIEIdentifier);
+  }
+  D8(version);
+  AppendCString(augmentation);
+  ULEB128(code_alignment_factor);
+  LEB128(data_alignment_factor);
+  if (version == 1)
+    D8(return_address_register);
+  else
+    ULEB128(return_address_register);
+  return *this;
+}
+
+CFISection &CFISection::FDEHeader(Label cie_pointer,
+                                  uint64_t initial_location,
+                                  uint64_t address_range,
+                                  bool dwarf64) {
+  assert(!entry_length_);
+  entry_length_ = new PendingLength();
+  in_fde_ = true;
+  fde_start_address_ = initial_location;
+
+  if (dwarf64) {
+    D32(0xffffffff);
+    D64(entry_length_->length);
+    entry_length_->start = Here();
+    if (eh_frame_)
+      D64(Here() - cie_pointer);
+    else
+      D64(cie_pointer);
+  } else {
+    D32(entry_length_->length);
+    entry_length_->start = Here();
+    if (eh_frame_)
+      D32(Here() - cie_pointer);
+    else
+      D32(cie_pointer);
+  }
+  EncodedPointer(initial_location);
+  // The FDE length in an .eh_frame section uses the same encoding as the
+  // initial location, but ignores the base address (selected by the upper
+  // nybble of the encoding), as it's a length, not an address that can be
+  // made relative.
+  EncodedPointer(address_range,
+                 DwarfPointerEncoding(pointer_encoding_ & 0x0f));
+  return *this;
+}
+
+CFISection &CFISection::FinishEntry() {
+  assert(entry_length_);
+  Align(address_size_, dwarf2reader::DW_CFA_nop);
+  entry_length_->length = Here() - entry_length_->start;
+  delete entry_length_;
+  entry_length_ = NULL;
+  in_fde_ = false;
+  return *this;
+}
+
+CFISection &CFISection::EncodedPointer(uint64_t address,
+                                       DwarfPointerEncoding encoding,
+                                       const EncodedPointerBases &bases) {
+  // Omitted data is extremely easy to emit.
+  if (encoding == dwarf2reader::DW_EH_PE_omit)
+    return *this;
+
+  // If (encoding & dwarf2reader::DW_EH_PE_indirect) != 0, then we assume
+  // that ADDRESS is the address at which the pointer is stored --- in
+  // other words, that bit has no effect on how we write the pointer.
+  encoding = DwarfPointerEncoding(encoding & ~dwarf2reader::DW_EH_PE_indirect);
+
+  // Find the base address to which this pointer is relative. The upper
+  // nybble of the encoding specifies this.
+  uint64_t base;
+  switch (encoding & 0xf0) {
+    case dwarf2reader::DW_EH_PE_absptr:  base = 0;                  break;
+    case dwarf2reader::DW_EH_PE_pcrel:   base = bases.cfi + Size(); break;
+    case dwarf2reader::DW_EH_PE_textrel: base = bases.text;         break;
+    case dwarf2reader::DW_EH_PE_datarel: base = bases.data;         break;
+    case dwarf2reader::DW_EH_PE_funcrel: base = fde_start_address_; break;
+    case dwarf2reader::DW_EH_PE_aligned: base = 0;                  break;
+    default: abort();
+  };
+
+  // Make ADDRESS relative. Yes, this is appropriate even for "absptr"
+  // values; see gcc/unwind-pe.h.
+  address -= base;
+
+  // Align the pointer, if required.
+  if ((encoding & 0xf0) == dwarf2reader::DW_EH_PE_aligned)
+    Align(AddressSize());
+
+  // Append ADDRESS to this section in the appropriate form. For the
+  // fixed-width forms, we don't need to differentiate between signed and
+  // unsigned encodings, because ADDRESS has already been extended to 64
+  // bits before it was passed to us.
+  switch (encoding & 0x0f) {
+    case dwarf2reader::DW_EH_PE_absptr:
+      Address(address);
+      break;
+
+    case dwarf2reader::DW_EH_PE_uleb128:
+      ULEB128(address);
+      break;
+
+    case dwarf2reader::DW_EH_PE_sleb128:
+      LEB128(address);
+      break;
+
+    case dwarf2reader::DW_EH_PE_udata2:
+    case dwarf2reader::DW_EH_PE_sdata2:
+      D16(address);
+      break;
+
+    case dwarf2reader::DW_EH_PE_udata4:
+    case dwarf2reader::DW_EH_PE_sdata4:
+      D32(address);
+      break;
+
+    case dwarf2reader::DW_EH_PE_udata8:
+    case dwarf2reader::DW_EH_PE_sdata8:
+      D64(address);
+      break;
+
+    default:
+      abort();
+  }
+
+  return *this;
+};
+
+const uint32_t CFISection::kDwarf64InitialLengthMarker;
+const uint32_t CFISection::kDwarf32CIEIdentifier;
+const uint64_t CFISection::kDwarf64CIEIdentifier;
+const uint32_t CFISection::kEHFrame32CIEIdentifier;
+const uint64_t CFISection::kEHFrame64CIEIdentifier;
+
+} // namespace google_breakpad
diff --git a/google-breakpad/src/common/dwarf/cfi_assembler.h b/google-breakpad/src/common/dwarf/cfi_assembler.h
new file mode 100644
index 0000000..227812b
--- /dev/null
+++ b/google-breakpad/src/common/dwarf/cfi_assembler.h
@@ -0,0 +1,269 @@
+// -*- mode: C++ -*-
+
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// cfi_assembler.h: Define CFISection, a class for creating properly
+// (and improperly) formatted DWARF CFI data for unit tests.
+
+#ifndef PROCESSOR_CFI_ASSEMBLER_H_
+#define PROCESSOR_CFI_ASSEMBLER_H_
+
+#include <string>
+
+#include "common/dwarf/dwarf2enums.h"
+#include "common/test_assembler.h"
+#include "common/using_std_string.h"
+#include "google_breakpad/common/breakpad_types.h"
+
+namespace google_breakpad {
+
+using dwarf2reader::DwarfPointerEncoding;
+using google_breakpad::test_assembler::Endianness;
+using google_breakpad::test_assembler::Label;
+using google_breakpad::test_assembler::Section;
+
+class CFISection: public Section {
+ public:
+
+  // CFI augmentation strings beginning with 'z', defined by the
+  // Linux/IA-64 C++ ABI, can specify interesting encodings for
+  // addresses appearing in FDE headers and call frame instructions (and
+  // for additional fields whose presence the augmentation string
+  // specifies). In particular, pointers can be specified to be relative
+  // to various base address: the start of the .text section, the
+  // location holding the address itself, and so on. These allow the
+  // frame data to be position-independent even when they live in
+  // write-protected pages. These variants are specified at the
+  // following two URLs:
+  //
+  // http://refspecs.linux-foundation.org/LSB_4.0.0/LSB-Core-generic/LSB-Core-generic/dwarfext.html
+  // http://refspecs.linux-foundation.org/LSB_4.0.0/LSB-Core-generic/LSB-Core-generic/ehframechpt.html
+  //
+  // CFISection leaves the production of well-formed 'z'-augmented CIEs and
+  // FDEs to the user, but does provide EncodedPointer, to emit
+  // properly-encoded addresses for a given pointer encoding.
+  // EncodedPointer uses an instance of this structure to find the base
+  // addresses it should use; you can establish a default for all encoded
+  // pointers appended to this section with SetEncodedPointerBases.
+  struct EncodedPointerBases {
+    EncodedPointerBases() : cfi(), text(), data() { }
+
+    // The starting address of this CFI section in memory, for
+    // DW_EH_PE_pcrel. DW_EH_PE_pcrel pointers may only be used in data
+    // that has is loaded into the program's address space.
+    uint64_t cfi;
+
+    // The starting address of this file's .text section, for DW_EH_PE_textrel.
+    uint64_t text;
+
+    // The starting address of this file's .got or .eh_frame_hdr section,
+    // for DW_EH_PE_datarel.
+    uint64_t data;
+  };
+
+  // Create a CFISection whose endianness is ENDIANNESS, and where
+  // machine addresses are ADDRESS_SIZE bytes long. If EH_FRAME is
+  // true, use the .eh_frame format, as described by the Linux
+  // Standards Base Core Specification, instead of the DWARF CFI
+  // format.
+  CFISection(Endianness endianness, size_t address_size,
+             bool eh_frame = false)
+      : Section(endianness), address_size_(address_size), eh_frame_(eh_frame),
+        pointer_encoding_(dwarf2reader::DW_EH_PE_absptr),
+        encoded_pointer_bases_(), entry_length_(NULL), in_fde_(false) {
+    // The 'start', 'Here', and 'Mark' members of a CFISection all refer
+    // to section offsets.
+    start() = 0;
+  }
+
+  // Return this CFISection's address size.
+  size_t AddressSize() const { return address_size_; }
+
+  // Return true if this CFISection uses the .eh_frame format, or
+  // false if it contains ordinary DWARF CFI data.
+  bool ContainsEHFrame() const { return eh_frame_; }
+
+  // Use ENCODING for pointers in calls to FDEHeader and EncodedPointer.
+  void SetPointerEncoding(DwarfPointerEncoding encoding) {
+    pointer_encoding_ = encoding;
+  }
+
+  // Use the addresses in BASES as the base addresses for encoded
+  // pointers in subsequent calls to FDEHeader or EncodedPointer.
+  // This function makes a copy of BASES.
+  void SetEncodedPointerBases(const EncodedPointerBases &bases) {
+    encoded_pointer_bases_ = bases;
+  }
+
+  // Append a Common Information Entry header to this section with the
+  // given values. If dwarf64 is true, use the 64-bit DWARF initial
+  // length format for the CIE's initial length. Return a reference to
+  // this section. You should call FinishEntry after writing the last
+  // instruction for the CIE.
+  //
+  // Before calling this function, you will typically want to use Mark
+  // or Here to make a label to pass to FDEHeader that refers to this
+  // CIE's position in the section.
+  CFISection &CIEHeader(uint64_t code_alignment_factor,
+                        int data_alignment_factor,
+                        unsigned return_address_register,
+                        uint8_t version = 3,
+                        const string &augmentation = "",
+                        bool dwarf64 = false);
+
+  // Append a Frame Description Entry header to this section with the
+  // given values. If dwarf64 is true, use the 64-bit DWARF initial
+  // length format for the CIE's initial length. Return a reference to
+  // this section. You should call FinishEntry after writing the last
+  // instruction for the CIE.
+  //
+  // This function doesn't support entries that are longer than
+  // 0xffffff00 bytes. (The "initial length" is always a 32-bit
+  // value.) Nor does it support .debug_frame sections longer than
+  // 0xffffff00 bytes.
+  CFISection &FDEHeader(Label cie_pointer,
+                        uint64_t initial_location,
+                        uint64_t address_range,
+                        bool dwarf64 = false);
+
+  // Note the current position as the end of the last CIE or FDE we
+  // started, after padding with DW_CFA_nops for alignment. This
+  // defines the label representing the entry's length, cited in the
+  // entry's header. Return a reference to this section.
+  CFISection &FinishEntry();
+
+  // Append the contents of BLOCK as a DW_FORM_block value: an
+  // unsigned LEB128 length, followed by that many bytes of data.
+  CFISection &Block(const string &block) {
+    ULEB128(block.size());
+    Append(block);
+    return *this;
+  }
+
+  // Append ADDRESS to this section, in the appropriate size and
+  // endianness. Return a reference to this section.
+  CFISection &Address(uint64_t address) {
+    Section::Append(endianness(), address_size_, address);
+    return *this;
+  }
+  CFISection &Address(Label address) {
+    Section::Append(endianness(), address_size_, address);
+    return *this;
+  }
+
+  // Append ADDRESS to this section, using ENCODING and BASES. ENCODING
+  // defaults to this section's default encoding, established by
+  // SetPointerEncoding. BASES defaults to this section's bases, set by
+  // SetEncodedPointerBases. If the DW_EH_PE_indirect bit is set in the
+  // encoding, assume that ADDRESS is where the true address is stored.
+  // Return a reference to this section.
+  // 
+  // (C++ doesn't let me use default arguments here, because I want to
+  // refer to members of *this in the default argument expression.)
+  CFISection &EncodedPointer(uint64_t address) {
+    return EncodedPointer(address, pointer_encoding_, encoded_pointer_bases_);
+  }
+  CFISection &EncodedPointer(uint64_t address, DwarfPointerEncoding encoding) {
+    return EncodedPointer(address, encoding, encoded_pointer_bases_);
+  }
+  CFISection &EncodedPointer(uint64_t address, DwarfPointerEncoding encoding,
+                             const EncodedPointerBases &bases);
+
+  // Restate some member functions, to keep chaining working nicely.
+  CFISection &Mark(Label *label)   { Section::Mark(label); return *this; }
+  CFISection &D8(uint8_t v)       { Section::D8(v);       return *this; }
+  CFISection &D16(uint16_t v)     { Section::D16(v);      return *this; }
+  CFISection &D16(Label v)         { Section::D16(v);      return *this; }
+  CFISection &D32(uint32_t v)     { Section::D32(v);      return *this; }
+  CFISection &D32(const Label &v)  { Section::D32(v);      return *this; }
+  CFISection &D64(uint64_t v)     { Section::D64(v);      return *this; }
+  CFISection &D64(const Label &v)  { Section::D64(v);      return *this; }
+  CFISection &LEB128(long long v)  { Section::LEB128(v);   return *this; }
+  CFISection &ULEB128(uint64_t v) { Section::ULEB128(v);  return *this; }
+
+ private:
+  // A length value that we've appended to the section, but is not yet
+  // known. LENGTH is the appended value; START is a label referring
+  // to the start of the data whose length was cited.
+  struct PendingLength {
+    Label length;
+    Label start;
+  };
+
+  // Constants used in CFI/.eh_frame data:
+
+  // If the first four bytes of an "initial length" are this constant, then
+  // the data uses the 64-bit DWARF format, and the length itself is the
+  // subsequent eight bytes.
+  static const uint32_t kDwarf64InitialLengthMarker = 0xffffffffU;
+
+  // The CIE identifier for 32- and 64-bit DWARF CFI and .eh_frame data.
+  static const uint32_t kDwarf32CIEIdentifier = ~(uint32_t)0;
+  static const uint64_t kDwarf64CIEIdentifier = ~(uint64_t)0;
+  static const uint32_t kEHFrame32CIEIdentifier = 0;
+  static const uint64_t kEHFrame64CIEIdentifier = 0;
+
+  // The size of a machine address for the data in this section.
+  size_t address_size_;
+
+  // If true, we are generating a Linux .eh_frame section, instead of
+  // a standard DWARF .debug_frame section.
+  bool eh_frame_;
+
+  // The encoding to use for FDE pointers.
+  DwarfPointerEncoding pointer_encoding_;
+
+  // The base addresses to use when emitting encoded pointers.
+  EncodedPointerBases encoded_pointer_bases_;
+
+  // The length value for the current entry.
+  //
+  // Oddly, this must be dynamically allocated. Labels never get new
+  // values; they only acquire constraints on the value they already
+  // have, or assert if you assign them something incompatible. So
+  // each header needs truly fresh Label objects to cite in their
+  // headers and track their positions. The alternative is explicit
+  // destructor invocation and a placement new. Ick.
+  PendingLength *entry_length_;
+
+  // True if we are currently emitting an FDE --- that is, we have
+  // called FDEHeader but have not yet called FinishEntry.
+  bool in_fde_;
+
+  // If in_fde_ is true, this is its starting address. We use this for
+  // emitting DW_EH_PE_funcrel pointers.
+  uint64_t fde_start_address_;
+};
+
+}  // namespace google_breakpad
+
+#endif  // PROCESSOR_CFI_ASSEMBLER_H_
diff --git a/google-breakpad/src/common/dwarf/dwarf2diehandler.cc b/google-breakpad/src/common/dwarf/dwarf2diehandler.cc
new file mode 100644
index 0000000..20c15fa
--- /dev/null
+++ b/google-breakpad/src/common/dwarf/dwarf2diehandler.cc
@@ -0,0 +1,198 @@
+// Copyright (c) 2010 Google Inc. All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// dwarf2diehandler.cc: Implement the dwarf2reader::DieDispatcher class.
+// See dwarf2diehandler.h for details.
+
+#include <assert.h>
+
+#include <string>
+
+#include "common/dwarf/dwarf2diehandler.h"
+#include "common/using_std_string.h"
+
+namespace dwarf2reader {
+
+DIEDispatcher::~DIEDispatcher() {
+  while (!die_handlers_.empty()) {
+    HandlerStack &entry = die_handlers_.top();
+    if (entry.handler_ != root_handler_)
+      delete entry.handler_;
+    die_handlers_.pop();
+  }
+}
+
+bool DIEDispatcher::StartCompilationUnit(uint64 offset, uint8 address_size,
+                                         uint8 offset_size, uint64 cu_length,
+                                         uint8 dwarf_version) {
+  return root_handler_->StartCompilationUnit(offset, address_size,
+                                             offset_size, cu_length,
+                                             dwarf_version);
+}
+
+bool DIEDispatcher::StartDIE(uint64 offset, enum DwarfTag tag) {
+  // The stack entry for the parent of this DIE, if there is one.
+  HandlerStack *parent = die_handlers_.empty() ? NULL : &die_handlers_.top();
+
+  // Does this call indicate that we're done receiving the parent's
+  // attributes' values?  If so, call its EndAttributes member function.
+  if (parent && parent->handler_ && !parent->reported_attributes_end_) {
+    parent->reported_attributes_end_ = true;
+    if (!parent->handler_->EndAttributes()) {
+      // Finish off this handler now. and edit *PARENT to indicate that
+      // we don't want to visit any of the children.
+      parent->handler_->Finish();
+      if (parent->handler_ != root_handler_)
+        delete parent->handler_;
+      parent->handler_ = NULL;
+      return false;
+    }
+  }
+
+  // Find a handler for this DIE.
+  DIEHandler *handler;
+  if (parent) {
+    if (parent->handler_)
+      // Ask the parent to find a handler.
+      handler = parent->handler_->FindChildHandler(offset, tag);
+    else
+      // No parent handler means we're not interested in any of our
+      // children.
+      handler = NULL;
+  } else {
+    // This is the root DIE.  For a non-root DIE, the parent's handler
+    // decides whether to visit it, but the root DIE has no parent
+    // handler, so we have a special method on the root DIE handler
+    // itself to decide.
+    if (root_handler_->StartRootDIE(offset, tag))
+      handler = root_handler_;
+    else
+      handler = NULL;
+  }
+
+  // Push a handler stack entry for this new handler. As an
+  // optimization, we don't push NULL-handler entries on top of other
+  // NULL-handler entries; we just let the oldest such entry stand for
+  // the whole subtree.
+  if (handler || !parent || parent->handler_) {
+    HandlerStack entry;
+    entry.offset_ = offset;
+    entry.handler_ = handler;
+    entry.reported_attributes_end_ = false;
+    die_handlers_.push(entry);
+  }
+
+  return handler != NULL;
+}
+
+void DIEDispatcher::EndDIE(uint64 offset) {
+  assert(!die_handlers_.empty());
+  HandlerStack *entry = &die_handlers_.top();
+  if (entry->handler_) {
+    // This entry had better be the handler for this DIE.
+    assert(entry->offset_ == offset);
+    // If a DIE has no children, this EndDIE call indicates that we're
+    // done receiving its attributes' values.
+    if (!entry->reported_attributes_end_)
+      entry->handler_->EndAttributes(); // Ignore return value: no children.
+    entry->handler_->Finish();
+    if (entry->handler_ != root_handler_)
+      delete entry->handler_;
+  } else {
+    // If this DIE is within a tree we're ignoring, then don't pop the
+    // handler stack: that entry stands for the whole tree.
+    if (entry->offset_ != offset)
+      return;
+  }
+  die_handlers_.pop();
+}
+
+void DIEDispatcher::ProcessAttributeUnsigned(uint64 offset,
+                                             enum DwarfAttribute attr,
+                                             enum DwarfForm form,
+                                             uint64 data) {
+  HandlerStack &current = die_handlers_.top();
+  // This had better be an attribute of the DIE we were meant to handle.
+  assert(offset == current.offset_);
+  current.handler_->ProcessAttributeUnsigned(attr, form, data);
+}
+
+void DIEDispatcher::ProcessAttributeSigned(uint64 offset,
+                                           enum DwarfAttribute attr,
+                                           enum DwarfForm form,
+                                           int64 data) {
+  HandlerStack &current = die_handlers_.top();
+  // This had better be an attribute of the DIE we were meant to handle.
+  assert(offset == current.offset_);
+  current.handler_->ProcessAttributeSigned(attr, form, data);
+}
+
+void DIEDispatcher::ProcessAttributeReference(uint64 offset,
+                                              enum DwarfAttribute attr,
+                                              enum DwarfForm form,
+                                              uint64 data) {
+  HandlerStack &current = die_handlers_.top();
+  // This had better be an attribute of the DIE we were meant to handle.
+  assert(offset == current.offset_);
+  current.handler_->ProcessAttributeReference(attr, form, data);
+}
+
+void DIEDispatcher::ProcessAttributeBuffer(uint64 offset,
+                                           enum DwarfAttribute attr,
+                                           enum DwarfForm form,
+                                           const char* data,
+                                           uint64 len) {
+  HandlerStack &current = die_handlers_.top();
+  // This had better be an attribute of the DIE we were meant to handle.
+  assert(offset == current.offset_);
+  current.handler_->ProcessAttributeBuffer(attr, form, data, len);
+}
+
+void DIEDispatcher::ProcessAttributeString(uint64 offset,
+                                           enum DwarfAttribute attr,
+                                           enum DwarfForm form,
+                                           const string& data) {
+  HandlerStack &current = die_handlers_.top();
+  // This had better be an attribute of the DIE we were meant to handle.
+  assert(offset == current.offset_);
+  current.handler_->ProcessAttributeString(attr, form, data);
+}
+
+void DIEDispatcher::ProcessAttributeSignature(uint64 offset,
+                                              enum DwarfAttribute attr,
+                                              enum DwarfForm form,
+                                              uint64 signature) {
+  HandlerStack &current = die_handlers_.top();
+  // This had better be an attribute of the DIE we were meant to handle.
+  assert(offset == current.offset_);
+  current.handler_->ProcessAttributeSignature(attr, form, signature);
+}
+
+} // namespace dwarf2reader
diff --git a/google-breakpad/src/common/dwarf/dwarf2diehandler.h b/google-breakpad/src/common/dwarf/dwarf2diehandler.h
new file mode 100644
index 0000000..81f40f0
--- /dev/null
+++ b/google-breakpad/src/common/dwarf/dwarf2diehandler.h
@@ -0,0 +1,363 @@
+// -*- mode: c++ -*-
+
+// Copyright (c) 2010 Google Inc. All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// dwarf2reader::CompilationUnit is a simple and direct parser for
+// DWARF data, but its handler interface is not convenient to use.  In
+// particular:
+//
+// - CompilationUnit calls Dwarf2Handler's member functions to report
+//   every attribute's value, regardless of what sort of DIE it is.
+//   As a result, the ProcessAttributeX functions end up looking like
+//   this:
+//
+//     switch (parent_die_tag) {
+//       case DW_TAG_x:
+//         switch (attribute_name) {
+//           case DW_AT_y:
+//             handle attribute y of DIE type x
+//           ...
+//         } break;
+//       ...
+//     } 
+//
+//   In C++ it's much nicer to use virtual function dispatch to find
+//   the right code for a given case than to switch on the DIE tag
+//   like this.
+//
+// - Processing different kinds of DIEs requires different sets of
+//   data: lexical block DIEs have start and end addresses, but struct
+//   type DIEs don't.  It would be nice to be able to have separate
+//   handler classes for separate kinds of DIEs, each with the members
+//   appropriate to its role, instead of having one handler class that
+//   needs to hold data for every DIE type.
+//
+// - There should be a separate instance of the appropriate handler
+//   class for each DIE, instead of a single object with tables
+//   tracking all the dies in the compilation unit.
+//
+// - It's not convenient to take some action after all a DIE's
+//   attributes have been seen, but before visiting any of its
+//   children.  The only indication you have that a DIE's attribute
+//   list is complete is that you get either a StartDIE or an EndDIE
+//   call.
+//
+// - It's not convenient to make use of the tree structure of the
+//   DIEs.  Skipping all the children of a given die requires
+//   maintaining state and returning false from StartDIE until we get
+//   an EndDIE call with the appropriate offset.
+//
+// This interface tries to take care of all that.  (You're shocked, I'm sure.)
+//
+// Using the classes here, you provide an initial handler for the root
+// DIE of the compilation unit.  Each handler receives its DIE's
+// attributes, and provides fresh handler objects for children of
+// interest, if any.  The three classes are:
+//
+// - DIEHandler: the base class for your DIE-type-specific handler
+//   classes.
+//
+// - RootDIEHandler: derived from DIEHandler, the base class for your
+//   root DIE handler class.
+//
+// - DIEDispatcher: derived from Dwarf2Handler, an instance of this
+//   invokes your DIE-type-specific handler objects.
+//
+// In detail:
+//
+// - Define handler classes specialized for the DIE types you're
+//   interested in.  These handler classes must inherit from
+//   DIEHandler.  Thus:
+//
+//     class My_DW_TAG_X_Handler: public DIEHandler { ... };
+//     class My_DW_TAG_Y_Handler: public DIEHandler { ... };
+//
+//   DIEHandler subclasses needn't correspond exactly to single DIE
+//   types, as shown here; the point is that you can have several
+//   different classes appropriate to different kinds of DIEs.
+//
+// - In particular, define a handler class for the compilation
+//   unit's root DIE, that inherits from RootDIEHandler:
+//
+//     class My_DW_TAG_compile_unit_Handler: public RootDIEHandler { ... };
+//
+//   RootDIEHandler inherits from DIEHandler, adding a few additional
+//   member functions for examining the compilation unit as a whole,
+//   and other quirks of rootness.
+//
+// - Then, create a DIEDispatcher instance, passing it an instance of
+//   your root DIE handler class, and use that DIEDispatcher as the
+//   dwarf2reader::CompilationUnit's handler:
+//
+//     My_DW_TAG_compile_unit_Handler root_die_handler(...);
+//     DIEDispatcher die_dispatcher(&root_die_handler);
+//     CompilationUnit reader(sections, offset, bytereader, &die_dispatcher);
+//
+//   Here, 'die_dispatcher' acts as a shim between 'reader' and the
+//   various DIE-specific handlers you have defined.
+//
+// - When you call reader.Start(), die_dispatcher behaves as follows,
+//   starting with your root die handler and the compilation unit's
+//   root DIE:
+//
+//   - It calls the handler's ProcessAttributeX member functions for
+//     each of the DIE's attributes.
+//
+//   - It calls the handler's EndAttributes member function.  This
+//     should return true if any of the DIE's children should be
+//     visited, in which case:
+//
+//     - For each of the DIE's children, die_dispatcher calls the
+//       DIE's handler's FindChildHandler member function.  If that
+//       returns a pointer to a DIEHandler instance, then
+//       die_dispatcher uses that handler to process the child, using
+//       this procedure recursively.  Alternatively, if
+//       FindChildHandler returns NULL, die_dispatcher ignores that
+//       child and its descendants.
+// 
+//   - When die_dispatcher has finished processing all the DIE's
+//     children, it invokes the handler's Finish() member function,
+//     and destroys the handler.  (As a special case, it doesn't
+//     destroy the root DIE handler.)
+// 
+// This allows the code for handling a particular kind of DIE to be
+// gathered together in a single class, makes it easy to skip all the
+// children or individual children of a particular DIE, and provides
+// appropriate parental context for each die.
+
+#ifndef COMMON_DWARF_DWARF2DIEHANDLER_H__
+#define COMMON_DWARF_DWARF2DIEHANDLER_H__
+
+#include <stack>
+#include <string>
+
+#include "common/dwarf/types.h"
+#include "common/dwarf/dwarf2enums.h"
+#include "common/dwarf/dwarf2reader.h"
+#include "common/using_std_string.h"
+
+namespace dwarf2reader {
+
+// A base class for handlers for specific DIE types.  The series of
+// calls made on a DIE handler is as follows:
+//
+// - for each attribute of the DIE:
+//   - ProcessAttributeX()
+// - EndAttributes()
+// - if that returned true, then for each child:
+//   - FindChildHandler()
+//   - if that returns a non-NULL pointer to a new handler:
+//     - recurse, with the new handler and the child die
+// - Finish()
+// - destruction
+class DIEHandler {
+ public:
+  DIEHandler() { }
+  virtual ~DIEHandler() { }
+
+  // When we visit a DIE, we first use these member functions to
+  // report the DIE's attributes and their values.  These have the
+  // same restrictions as the corresponding member functions of
+  // dwarf2reader::Dwarf2Handler.
+  //
+  // Since DWARF does not specify in what order attributes must
+  // appear, avoid making decisions in these functions that would be
+  // affected by the presence of other attributes. The EndAttributes
+  // function is a more appropriate place for such work, as all the
+  // DIE's attributes have been seen at that point.
+  //
+  // The default definitions ignore the values they are passed.
+  virtual void ProcessAttributeUnsigned(enum DwarfAttribute attr,
+                                        enum DwarfForm form,
+                                        uint64 data) { }
+  virtual void ProcessAttributeSigned(enum DwarfAttribute attr,
+                                      enum DwarfForm form,
+                                      int64 data) { }
+  virtual void ProcessAttributeReference(enum DwarfAttribute attr,
+                                         enum DwarfForm form,
+                                         uint64 data) { }
+  virtual void ProcessAttributeBuffer(enum DwarfAttribute attr,
+                                      enum DwarfForm form,
+                                      const char* data,
+                                      uint64 len) { }
+  virtual void ProcessAttributeString(enum DwarfAttribute attr,
+                                      enum DwarfForm form,
+                                      const string& data) { }
+  virtual void ProcessAttributeSignature(enum DwarfAttribute attr,
+                                         enum DwarfForm form,
+                                         uint64 signture) { }
+
+  // Once we have reported all the DIE's attributes' values, we call
+  // this member function.  If it returns false, we skip all the DIE's
+  // children.  If it returns true, we call FindChildHandler on each
+  // child.  If that returns a handler object, we use that to visit
+  // the child; otherwise, we skip the child.
+  //
+  // This is a good place to make decisions that depend on more than
+  // one attribute. DWARF does not specify in what order attributes
+  // must appear, so only when the EndAttributes function is called
+  // does the handler have a complete picture of the DIE's attributes.
+  //
+  // The default definition elects to ignore the DIE's children.
+  // You'll need to override this if you override FindChildHandler,
+  // but at least the default behavior isn't to pass the children to
+  // FindChildHandler, which then ignores them all.
+  virtual bool EndAttributes() { return false; }
+
+  // If EndAttributes returns true to indicate that some of the DIE's
+  // children might be of interest, then we apply this function to
+  // each of the DIE's children.  If it returns a handler object, then
+  // we use that to visit the child DIE.  If it returns NULL, we skip
+  // that child DIE (and all its descendants).
+  //
+  // OFFSET is the offset of the child; TAG indicates what kind of DIE
+  // it is.
+  //
+  // The default definition skips all children.
+  virtual DIEHandler *FindChildHandler(uint64 offset, enum DwarfTag tag) {
+    return NULL;
+  }
+
+  // When we are done processing a DIE, we call this member function.
+  // This happens after the EndAttributes call, all FindChildHandler
+  // calls (if any), and all operations on the children themselves (if
+  // any). We call Finish on every handler --- even if EndAttributes
+  // returns false.
+  virtual void Finish() { };
+};
+
+// A subclass of DIEHandler, with additional kludges for handling the
+// compilation unit's root die.
+class RootDIEHandler: public DIEHandler {
+ public:
+  RootDIEHandler() { }
+  virtual ~RootDIEHandler() { }
+
+  // We pass the values reported via Dwarf2Handler::StartCompilationUnit
+  // to this member function, and skip the entire compilation unit if it
+  // returns false.  So the root DIE handler is actually also
+  // responsible for handling the compilation unit metadata.
+  // The default definition always visits the compilation unit.
+  virtual bool StartCompilationUnit(uint64 offset, uint8 address_size,
+                                    uint8 offset_size, uint64 cu_length,
+                                    uint8 dwarf_version) { return true; }
+
+  // For the root DIE handler only, we pass the offset, tag and
+  // attributes of the compilation unit's root DIE.  This is the only
+  // way the root DIE handler can find the root DIE's tag.  If this
+  // function returns true, we will visit the root DIE using the usual
+  // DIEHandler methods; otherwise, we skip the entire compilation
+  // unit.
+  //
+  // The default definition elects to visit the root DIE.
+  virtual bool StartRootDIE(uint64 offset, enum DwarfTag tag) { return true; }
+};
+
+class DIEDispatcher: public Dwarf2Handler {
+ public:
+  // Create a Dwarf2Handler which uses ROOT_HANDLER as the handler for
+  // the compilation unit's root die, as described for the DIEHandler
+  // class.
+  DIEDispatcher(RootDIEHandler *root_handler) : root_handler_(root_handler) { }
+  // Destroying a DIEDispatcher destroys all active handler objects
+  // except the root handler.
+  ~DIEDispatcher();
+  bool StartCompilationUnit(uint64 offset, uint8 address_size,
+                            uint8 offset_size, uint64 cu_length,
+                            uint8 dwarf_version);
+  bool StartDIE(uint64 offset, enum DwarfTag tag);
+  void ProcessAttributeUnsigned(uint64 offset,
+                                enum DwarfAttribute attr,
+                                enum DwarfForm form,
+                                uint64 data);
+  void ProcessAttributeSigned(uint64 offset,
+                              enum DwarfAttribute attr,
+                              enum DwarfForm form,
+                              int64 data);
+  void ProcessAttributeReference(uint64 offset,
+                                 enum DwarfAttribute attr,
+                                 enum DwarfForm form,
+                                 uint64 data);
+  void ProcessAttributeBuffer(uint64 offset,
+                              enum DwarfAttribute attr,
+                              enum DwarfForm form,
+                              const char* data,
+                              uint64 len);
+  void ProcessAttributeString(uint64 offset,
+                              enum DwarfAttribute attr,
+                              enum DwarfForm form,
+                              const string &data);
+  void ProcessAttributeSignature(uint64 offset,
+                                 enum DwarfAttribute attr,
+                                 enum DwarfForm form,
+                                 uint64 signature);
+  void EndDIE(uint64 offset);
+
+ private:
+
+  // The type of a handler stack entry.  This includes some fields
+  // which don't really need to be on the stack --- they could just be
+  // single data members of DIEDispatcher --- but putting them here
+  // makes it easier to see that the code is correct.
+  struct HandlerStack {
+    // The offset of the DIE for this handler stack entry.
+    uint64 offset_;
+
+    // The handler object interested in this DIE's attributes and
+    // children.  If NULL, we're not interested in either.
+    DIEHandler *handler_;
+
+    // Have we reported the end of this DIE's attributes to the handler?
+    bool reported_attributes_end_;
+  };
+
+  // Stack of DIE attribute handlers.  At StartDIE(D), the top of the
+  // stack is the handler of D's parent, whom we may ask for a handler
+  // for D itself.  At EndDIE(D), the top of the stack is D's handler.
+  // Special cases:
+  //
+  // - Before we've seen the compilation unit's root DIE, the stack is
+  //   empty; we'll call root_handler_'s special member functions, and
+  //   perhaps push root_handler_ on the stack to look at the root's
+  //   immediate children.
+  //
+  // - When we decide to ignore a subtree, we only push an entry on
+  //   the stack for the root of the tree being ignored, rather than
+  //   pushing lots of stack entries with handler_ set to NULL.
+  std::stack<HandlerStack> die_handlers_;
+
+  // The root handler.  We don't push it on die_handlers_ until we
+  // actually get the StartDIE call for the root.
+  RootDIEHandler *root_handler_;
+};
+
+} // namespace dwarf2reader
+#endif  // COMMON_DWARF_DWARF2DIEHANDLER_H__
diff --git a/google-breakpad/src/common/dwarf/dwarf2diehandler_unittest.cc b/google-breakpad/src/common/dwarf/dwarf2diehandler_unittest.cc
new file mode 100644
index 0000000..c0a532a
--- /dev/null
+++ b/google-breakpad/src/common/dwarf/dwarf2diehandler_unittest.cc
@@ -0,0 +1,524 @@
+// -*- mode: c++ -*-
+
+// Copyright (c) 2010 Google Inc. All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// dwarf2diehander_unittest.cc: Unit tests for google_breakpad::DIEDispatcher.
+
+#include <string>
+#include <utility>
+
+#include "breakpad_googletest_includes.h"
+
+#include "common/dwarf/dwarf2diehandler.h"
+#include "common/using_std_string.h"
+
+using std::make_pair;
+
+using ::testing::_;
+using ::testing::ContainerEq;
+using ::testing::ElementsAreArray;
+using ::testing::Eq;
+using ::testing::InSequence;
+using ::testing::Return;
+using ::testing::Sequence;
+using ::testing::StrEq;
+
+using dwarf2reader::DIEDispatcher;
+using dwarf2reader::DIEHandler;
+using dwarf2reader::DwarfAttribute;
+using dwarf2reader::DwarfForm;
+using dwarf2reader::DwarfTag;
+using dwarf2reader::RootDIEHandler;
+
+class MockDIEHandler: public DIEHandler {
+ public:
+  MOCK_METHOD3(ProcessAttributeUnsigned,
+               void(DwarfAttribute, DwarfForm, uint64));
+  MOCK_METHOD3(ProcessAttributeSigned,
+               void(DwarfAttribute, DwarfForm, int64));
+  MOCK_METHOD3(ProcessAttributeReference,
+               void(DwarfAttribute, DwarfForm, uint64));
+  MOCK_METHOD4(ProcessAttributeBuffer,
+               void(DwarfAttribute, DwarfForm, const char *, uint64));
+  MOCK_METHOD3(ProcessAttributeString,
+               void(DwarfAttribute, DwarfForm, const string &));
+  MOCK_METHOD3(ProcessAttributeSignature,
+               void(DwarfAttribute, DwarfForm, uint64));
+  MOCK_METHOD0(EndAttributes, bool());
+  MOCK_METHOD2(FindChildHandler, DIEHandler *(uint64, DwarfTag));
+  MOCK_METHOD0(Finish, void());
+};
+
+class MockRootDIEHandler: public RootDIEHandler {
+ public:
+  MOCK_METHOD3(ProcessAttributeUnsigned,
+               void(DwarfAttribute, DwarfForm, uint64));
+  MOCK_METHOD3(ProcessAttributeSigned,
+               void(DwarfAttribute, DwarfForm, int64));
+  MOCK_METHOD3(ProcessAttributeReference,
+               void(DwarfAttribute, DwarfForm, uint64));
+  MOCK_METHOD4(ProcessAttributeBuffer,
+               void(DwarfAttribute, DwarfForm, const char *, uint64));
+  MOCK_METHOD3(ProcessAttributeString,
+               void(DwarfAttribute, DwarfForm, const string &));
+  MOCK_METHOD3(ProcessAttributeSignature,
+               void(DwarfAttribute, DwarfForm, uint64));
+  MOCK_METHOD0(EndAttributes, bool());
+  MOCK_METHOD2(FindChildHandler, DIEHandler *(uint64, DwarfTag));
+  MOCK_METHOD0(Finish, void());
+  MOCK_METHOD5(StartCompilationUnit, bool(uint64, uint8, uint8, uint64, uint8));
+  MOCK_METHOD2(StartRootDIE, bool(uint64, DwarfTag));
+};
+
+// If the handler elects to skip the compilation unit, the dispatcher
+// should tell the reader so.
+TEST(Dwarf2DIEHandler, SkipCompilationUnit) {
+  Sequence s;
+  MockRootDIEHandler mock_root_handler;
+  DIEDispatcher die_dispatcher(&mock_root_handler);
+
+  EXPECT_CALL(mock_root_handler,
+              StartCompilationUnit(0x8d42aed77cfccf3eLL,
+                                   0x89, 0xdc,
+                                   0x2ecb4dc778a80f21LL,
+                                   0x66))
+      .InSequence(s)
+      .WillOnce(Return(false));
+
+  EXPECT_FALSE(die_dispatcher.StartCompilationUnit(0x8d42aed77cfccf3eLL,
+                                                   0x89, 0xdc,
+                                                   0x2ecb4dc778a80f21LL,
+                                                   0x66));
+}
+
+// If the handler elects to skip the root DIE, the dispatcher should
+// tell the reader so.
+TEST(Dwarf2DIEHandler, SkipRootDIE) {
+  Sequence s;
+  MockRootDIEHandler mock_root_handler;
+  DIEDispatcher die_dispatcher(&mock_root_handler);
+
+  EXPECT_CALL(mock_root_handler,
+              StartCompilationUnit(0xde8994029fc8b999LL, 0xf4, 0x02,
+                                   0xb00febffa76e2b2bLL, 0x5c))
+      .InSequence(s)
+      .WillOnce(Return(true));
+  EXPECT_CALL(mock_root_handler,
+              StartRootDIE(0x7d08242b4b510cf2LL, (DwarfTag) 0xb4f98da6))
+      .InSequence(s)
+      .WillOnce(Return(false));
+
+  EXPECT_TRUE(die_dispatcher.StartCompilationUnit(0xde8994029fc8b999LL, 
+                                                  0xf4, 0x02,
+                                                  0xb00febffa76e2b2bLL, 0x5c));
+  EXPECT_FALSE(die_dispatcher.StartDIE(0x7d08242b4b510cf2LL,
+                                       (DwarfTag) 0xb4f98da6));
+  die_dispatcher.EndDIE(0x7d08242b4b510cf2LL);
+}
+
+// If the handler elects to skip the root DIE's children, the
+// dispatcher should tell the reader so --- and avoid deleting the
+// root handler.
+TEST(Dwarf2DIEHandler, SkipRootDIEChildren) {
+  MockRootDIEHandler mock_root_handler;
+  DIEDispatcher die_dispatcher(&mock_root_handler);
+
+  {
+    InSequence s;
+
+    EXPECT_CALL(mock_root_handler,
+                StartCompilationUnit(0x15d6897480cc65a7LL, 0x26, 0xa0,
+                                     0x09f8bf0767f91675LL, 0xdb))
+      .WillOnce(Return(true));
+    EXPECT_CALL(mock_root_handler,
+                StartRootDIE(0x7d08242b4b510cf2LL, (DwarfTag) 0xb4f98da6))
+      .WillOnce(Return(true));
+    // Please don't tell me about my children.
+    EXPECT_CALL(mock_root_handler, EndAttributes())
+      .WillOnce(Return(false));
+    EXPECT_CALL(mock_root_handler, Finish())
+      .WillOnce(Return());
+  }
+
+  EXPECT_TRUE(die_dispatcher.StartCompilationUnit(0x15d6897480cc65a7LL,
+                                                  0x26, 0xa0,
+                                                  0x09f8bf0767f91675LL, 0xdb));
+  EXPECT_TRUE(die_dispatcher.StartDIE(0x7d08242b4b510cf2LL,
+                                      (DwarfTag) 0xb4f98da6));
+  EXPECT_FALSE(die_dispatcher.StartDIE(0x435150ceedccda18LL,
+                                       (DwarfTag) 0xc3a17bba));
+  die_dispatcher.EndDIE(0x435150ceedccda18LL);
+  die_dispatcher.EndDIE(0x7d08242b4b510cf2LL);
+}
+
+// The dispatcher should pass attribute values through to the die
+// handler accurately.
+TEST(Dwarf2DIEHandler, PassAttributeValues) {
+  MockRootDIEHandler mock_root_handler;
+  DIEDispatcher die_dispatcher(&mock_root_handler);
+
+  const char buffer[10] = { 0x24, 0x24, 0x35, 0x9a, 0xca,
+                            0xcf, 0xa8, 0x84, 0xa7, 0x18 };
+  string str = "\xc8\x26\x2e\x0d\xa4\x9c\x37\xd6\xfb\x1d";
+
+  // Set expectations.
+  {
+    InSequence s;
+
+    // We'll like the compilation unit header.
+    EXPECT_CALL(mock_root_handler,
+                StartCompilationUnit(0x8d42aed77cfccf3eLL, 0x89, 0xdc,
+                                     0x2ecb4dc778a80f21LL, 0x66))
+      .WillOnce(Return(true));
+
+    // We'll like the root DIE.
+    EXPECT_CALL(mock_root_handler,
+                StartRootDIE(0xe2222da01e29f2a9LL, (DwarfTag) 0x9829445c))
+      .WillOnce(Return(true));
+
+    // Expect some attribute values.
+    EXPECT_CALL(mock_root_handler,
+                ProcessAttributeUnsigned((DwarfAttribute) 0x1cc0bfed,
+                                         (DwarfForm) 0x424f1468,
+                                         0xa592571997facda1ULL))
+      .WillOnce(Return());
+    EXPECT_CALL(mock_root_handler,
+                ProcessAttributeSigned((DwarfAttribute) 0x43694dc9,
+                                       (DwarfForm) 0xf6f78901L,
+                                       0x92602a4e3bf1f446LL))
+      .WillOnce(Return());
+    EXPECT_CALL(mock_root_handler,
+                ProcessAttributeReference((DwarfAttribute) 0x4033e8cL,
+                                          (DwarfForm) 0xf66fbe0bL,
+                                          0x50fddef44734fdecULL))
+      .WillOnce(Return());
+    EXPECT_CALL(mock_root_handler,
+                ProcessAttributeBuffer((DwarfAttribute) 0x25d7e0af,
+                                       (DwarfForm) 0xe99a539a,
+                                       buffer, sizeof(buffer)))
+      .WillOnce(Return());
+    EXPECT_CALL(mock_root_handler,
+                ProcessAttributeString((DwarfAttribute) 0x310ed065,
+                                       (DwarfForm) 0x15762fec,
+                                       StrEq(str)))
+      .WillOnce(Return());
+    EXPECT_CALL(mock_root_handler,
+                ProcessAttributeSignature((DwarfAttribute) 0x58790d72,
+                                          (DwarfForm) 0x4159f138,
+                                          0x94682463613e6a5fULL))
+      .WillOnce(Return());
+    EXPECT_CALL(mock_root_handler, EndAttributes())
+      .WillOnce(Return(true));
+    EXPECT_CALL(mock_root_handler, FindChildHandler(_, _))
+      .Times(0);
+    EXPECT_CALL(mock_root_handler, Finish())
+      .WillOnce(Return());
+  }
+
+  // Drive the dispatcher.
+
+  // Report the CU header.
+  EXPECT_TRUE(die_dispatcher.StartCompilationUnit(0x8d42aed77cfccf3eLL,
+                                                  0x89, 0xdc,
+                                                  0x2ecb4dc778a80f21LL,
+                                                  0x66));
+  // Report the root DIE.
+  EXPECT_TRUE(die_dispatcher.StartDIE(0xe2222da01e29f2a9LL,
+                                      (DwarfTag) 0x9829445c));
+
+  // Report some attribute values.
+  die_dispatcher.ProcessAttributeUnsigned(0xe2222da01e29f2a9LL,
+                                          (DwarfAttribute) 0x1cc0bfed,
+                                          (DwarfForm) 0x424f1468,
+                                          0xa592571997facda1ULL);
+  die_dispatcher.ProcessAttributeSigned(0xe2222da01e29f2a9LL,
+                                        (DwarfAttribute) 0x43694dc9,
+                                        (DwarfForm) 0xf6f78901,
+                                        0x92602a4e3bf1f446LL);
+  die_dispatcher.ProcessAttributeReference(0xe2222da01e29f2a9LL,
+                                           (DwarfAttribute) 0x4033e8c,
+                                           (DwarfForm) 0xf66fbe0b,
+                                           0x50fddef44734fdecULL);
+  die_dispatcher.ProcessAttributeBuffer(0xe2222da01e29f2a9LL,
+                                        (DwarfAttribute) 0x25d7e0af,
+                                        (DwarfForm) 0xe99a539a,
+                                        buffer, sizeof(buffer));
+  die_dispatcher.ProcessAttributeString(0xe2222da01e29f2a9LL,
+                                        (DwarfAttribute) 0x310ed065,
+                                        (DwarfForm) 0x15762fec,
+                                        str);
+  die_dispatcher.ProcessAttributeSignature(0xe2222da01e29f2a9LL,
+                                           (DwarfAttribute) 0x58790d72,
+                                           (DwarfForm) 0x4159f138,
+                                           0x94682463613e6a5fULL);
+
+  // Finish the root DIE (and thus the CU).
+  die_dispatcher.EndDIE(0xe2222da01e29f2a9LL);
+}
+
+TEST(Dwarf2DIEHandler, FindAndSkipChildren) {
+  MockRootDIEHandler mock_root_handler;
+  MockDIEHandler *mock_child1_handler = new(MockDIEHandler);
+  MockDIEHandler *mock_child3_handler = new(MockDIEHandler);
+  DIEDispatcher die_dispatcher(&mock_root_handler);
+
+  {
+    InSequence s;
+
+    // We'll like the compilation unit header.
+    EXPECT_CALL(mock_root_handler,
+                StartCompilationUnit(0x9ec1e6d05e434a0eLL, 0xeb, 0x21,
+                                     0x47dd3c764275a216LL, 0xa5))
+      .WillOnce(Return(true));
+
+    // Root DIE.
+    {
+      EXPECT_CALL(mock_root_handler,
+                  StartRootDIE(0x15f0e06bdfe3c372LL, (DwarfTag) 0xf5d60c59))
+        .WillOnce(Return(true));
+      EXPECT_CALL(mock_root_handler,
+                  ProcessAttributeSigned((DwarfAttribute) 0xf779a642,
+                                         (DwarfForm) 0x2cb63027,
+                                         0x18e744661769d08fLL))
+        .WillOnce(Return());
+      EXPECT_CALL(mock_root_handler, EndAttributes())
+        .WillOnce(Return(true));
+
+      // First child DIE.
+      EXPECT_CALL(mock_root_handler,
+                  FindChildHandler(0x149f644f8116fe8cLL,
+                                   (DwarfTag) 0xac2cbd8c))
+        .WillOnce(Return(mock_child1_handler));
+      {
+        EXPECT_CALL(*mock_child1_handler,
+                    ProcessAttributeSigned((DwarfAttribute) 0xa6fd6f65,
+                                           (DwarfForm) 0xe4f64c41,
+                                           0x1b04e5444a55fe67LL))
+          .WillOnce(Return());
+        EXPECT_CALL(*mock_child1_handler, EndAttributes())
+          .WillOnce(Return(false));
+        // Skip first grandchild DIE and first great-grandchild DIE.
+        EXPECT_CALL(*mock_child1_handler, Finish())
+          .WillOnce(Return());
+      }
+
+      // Second child DIE.  Root handler will decline to return a handler
+      // for this child.
+      EXPECT_CALL(mock_root_handler,
+                  FindChildHandler(0x97412be24875de9dLL,
+                                   (DwarfTag) 0x505a068b))
+        .WillOnce(Return((DIEHandler *) NULL));
+
+      // Third child DIE.
+      EXPECT_CALL(mock_root_handler,
+                  FindChildHandler(0x753c964c8ab538aeLL,
+                                   (DwarfTag) 0x8c22970e))
+        .WillOnce(Return(mock_child3_handler));
+      {
+        EXPECT_CALL(*mock_child3_handler,
+                    ProcessAttributeSigned((DwarfAttribute) 0x4e2b7cfb,
+                                           (DwarfForm) 0x610b7ae1,
+                                           0x3ea5c609d7d7560fLL))
+          .WillOnce(Return());
+        EXPECT_CALL(*mock_child3_handler, EndAttributes())
+          .WillOnce(Return(true));
+        EXPECT_CALL(*mock_child3_handler, Finish())
+          .WillOnce(Return());
+      }
+
+      EXPECT_CALL(mock_root_handler, Finish())
+        .WillOnce(Return());
+    }
+  }
+
+    
+  // Drive the dispatcher.
+
+  // Report the CU header.
+  EXPECT_TRUE(die_dispatcher
+              .StartCompilationUnit(0x9ec1e6d05e434a0eLL, 0xeb, 0x21,
+                                    0x47dd3c764275a216LL, 0xa5));
+  // Report the root DIE.
+  {
+    EXPECT_TRUE(die_dispatcher.StartDIE(0x15f0e06bdfe3c372LL,
+                                        (DwarfTag) 0xf5d60c59));
+    die_dispatcher.ProcessAttributeSigned(0x15f0e06bdfe3c372LL,
+                                          (DwarfAttribute) 0xf779a642,
+                                          (DwarfForm) 0x2cb63027,
+                                          0x18e744661769d08fLL);
+
+    // First child DIE.
+    {
+      EXPECT_TRUE(die_dispatcher.StartDIE(0x149f644f8116fe8cLL,
+                                          (DwarfTag) 0xac2cbd8c));
+      die_dispatcher.ProcessAttributeSigned(0x149f644f8116fe8cLL,
+                                            (DwarfAttribute) 0xa6fd6f65,
+                                            (DwarfForm) 0xe4f64c41,
+                                            0x1b04e5444a55fe67LL);
+
+      // First grandchild DIE.  Will be skipped.
+      {
+        EXPECT_FALSE(die_dispatcher.StartDIE(0xd68de1ee0bd29419LL,
+                                            (DwarfTag) 0x22f05a15));
+        // First great-grandchild DIE.  Will be skipped without being
+        // mentioned to any handler.
+        {
+          EXPECT_FALSE(die_dispatcher
+                       .StartDIE(0xb3076285d25cac25LL,
+                                 (DwarfTag) 0xcff4061b));
+          die_dispatcher.EndDIE(0xb3076285d25cac25LL);          
+        }
+        die_dispatcher.EndDIE(0xd68de1ee0bd29419LL);
+      }
+      die_dispatcher.EndDIE(0x149f644f8116fe8cLL);
+    }
+
+    // Second child DIE.  Root handler will decline to find a handler for it.
+    {
+      EXPECT_FALSE(die_dispatcher.StartDIE(0x97412be24875de9dLL,
+                                           (DwarfTag) 0x505a068b));
+      die_dispatcher.EndDIE(0x97412be24875de9dLL);
+    }
+    
+    // Third child DIE.
+    {
+      EXPECT_TRUE(die_dispatcher.StartDIE(0x753c964c8ab538aeLL,
+                                          (DwarfTag) 0x8c22970e));
+      die_dispatcher.ProcessAttributeSigned(0x753c964c8ab538aeLL,
+                                            (DwarfAttribute) 0x4e2b7cfb,
+                                            (DwarfForm) 0x610b7ae1,
+                                            0x3ea5c609d7d7560fLL);
+      die_dispatcher.EndDIE(0x753c964c8ab538aeLL);
+    }
+    
+    // Finish the root DIE (and thus the CU).
+    die_dispatcher.EndDIE(0x15f0e06bdfe3c372LL);
+  }
+}
+
+// The DIEDispatcher destructor is supposed to delete all handlers on
+// the stack, except for the root.
+TEST(Dwarf2DIEHandler, FreeHandlersOnStack) {
+  MockRootDIEHandler mock_root_handler;
+  MockDIEHandler *mock_child_handler = new(MockDIEHandler);
+  MockDIEHandler *mock_grandchild_handler = new(MockDIEHandler);
+
+  {
+    InSequence s;
+
+    // We'll like the compilation unit header.
+    EXPECT_CALL(mock_root_handler,
+                StartCompilationUnit(0x87b41ba8381cd71cLL, 0xff, 0x89,
+                                     0x76d392ff393ddda2LL, 0xbf))
+      .WillOnce(Return(true));
+
+    // Root DIE.
+    {
+      EXPECT_CALL(mock_root_handler,
+                  StartRootDIE(0xbf13b761691ddc91LL, (DwarfTag) 0x98980361))
+        .WillOnce(Return(true));
+      EXPECT_CALL(mock_root_handler, EndAttributes())
+        .WillOnce(Return(true));
+      
+      // Child DIE.
+      EXPECT_CALL(mock_root_handler,
+                  FindChildHandler(0x058f09240c5fc8c9LL,
+                                   (DwarfTag) 0x898bf0d0))
+        .WillOnce(Return(mock_child_handler));
+      {
+        EXPECT_CALL(*mock_child_handler, EndAttributes())
+          .WillOnce(Return(true));
+
+        // Grandchild DIE.
+        EXPECT_CALL(*mock_child_handler,
+                    FindChildHandler(0x32dc00c9945dc0c8LL,
+                                     (DwarfTag) 0x2802d007))
+          .WillOnce(Return(mock_grandchild_handler));
+        {
+          EXPECT_CALL(*mock_grandchild_handler,
+                      ProcessAttributeSigned((DwarfAttribute) 0x4e2b7cfb,
+                                             (DwarfForm) 0x610b7ae1,
+                                             0x3ea5c609d7d7560fLL))
+            .WillOnce(Return());
+
+          // At this point, we abandon the traversal, so none of the
+          // usual stuff should get called.
+          EXPECT_CALL(*mock_grandchild_handler, EndAttributes())
+            .Times(0);
+          EXPECT_CALL(*mock_grandchild_handler, Finish())
+            .Times(0);
+        }
+
+        EXPECT_CALL(*mock_child_handler, Finish())
+          .Times(0);
+      }
+
+      EXPECT_CALL(mock_root_handler, Finish())
+        .Times(0);
+    }
+  }
+
+  // The dispatcher.
+  DIEDispatcher die_dispatcher(&mock_root_handler);
+  
+  // Report the CU header.
+  EXPECT_TRUE(die_dispatcher
+              .StartCompilationUnit(0x87b41ba8381cd71cLL, 0xff, 0x89,
+                                    0x76d392ff393ddda2LL, 0xbf));
+  // Report the root DIE.
+  {
+    EXPECT_TRUE(die_dispatcher.StartDIE(0xbf13b761691ddc91LL,
+                                        (DwarfTag) 0x98980361));
+
+    // Child DIE.
+    {
+      EXPECT_TRUE(die_dispatcher.StartDIE(0x058f09240c5fc8c9LL,
+                                          (DwarfTag) 0x898bf0d0));
+
+      // Grandchild DIE.
+      {
+        EXPECT_TRUE(die_dispatcher.StartDIE(0x32dc00c9945dc0c8LL,
+                                            (DwarfTag) 0x2802d007));
+        die_dispatcher.ProcessAttributeSigned(0x32dc00c9945dc0c8LL,
+                                              (DwarfAttribute) 0x4e2b7cfb,
+                                              (DwarfForm) 0x610b7ae1,
+                                              0x3ea5c609d7d7560fLL);
+
+        // Stop the traversal abruptly, so that there will still be
+        // handlers on the stack when the dispatcher is destructed.
+
+        // No EndDIE call...
+      }
+      // No EndDIE call...
+    }
+    // No EndDIE call...
+  }
+}
diff --git a/google-breakpad/src/common/dwarf/dwarf2enums.h b/google-breakpad/src/common/dwarf/dwarf2enums.h
new file mode 100644
index 0000000..5565d66
--- /dev/null
+++ b/google-breakpad/src/common/dwarf/dwarf2enums.h
@@ -0,0 +1,650 @@
+// -*- mode: c++ -*-
+
+// Copyright (c) 2010 Google Inc. All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef COMMON_DWARF_DWARF2ENUMS_H__
+#define COMMON_DWARF_DWARF2ENUMS_H__
+
+namespace dwarf2reader {
+
+// These enums do not follow the google3 style only because they are
+// known universally (specs, other implementations) by the names in
+// exactly this capitalization.
+// Tag names and codes.
+enum DwarfTag {
+  DW_TAG_padding = 0x00,
+  DW_TAG_array_type = 0x01,
+  DW_TAG_class_type = 0x02,
+  DW_TAG_entry_point = 0x03,
+  DW_TAG_enumeration_type = 0x04,
+  DW_TAG_formal_parameter = 0x05,
+  DW_TAG_imported_declaration = 0x08,
+  DW_TAG_label = 0x0a,
+  DW_TAG_lexical_block = 0x0b,
+  DW_TAG_member = 0x0d,
+  DW_TAG_pointer_type = 0x0f,
+  DW_TAG_reference_type = 0x10,
+  DW_TAG_compile_unit = 0x11,
+  DW_TAG_string_type = 0x12,
+  DW_TAG_structure_type = 0x13,
+  DW_TAG_subroutine_type = 0x15,
+  DW_TAG_typedef = 0x16,
+  DW_TAG_union_type = 0x17,
+  DW_TAG_unspecified_parameters = 0x18,
+  DW_TAG_variant = 0x19,
+  DW_TAG_common_block = 0x1a,
+  DW_TAG_common_inclusion = 0x1b,
+  DW_TAG_inheritance = 0x1c,
+  DW_TAG_inlined_subroutine = 0x1d,
+  DW_TAG_module = 0x1e,
+  DW_TAG_ptr_to_member_type = 0x1f,
+  DW_TAG_set_type = 0x20,
+  DW_TAG_subrange_type = 0x21,
+  DW_TAG_with_stmt = 0x22,
+  DW_TAG_access_declaration = 0x23,
+  DW_TAG_base_type = 0x24,
+  DW_TAG_catch_block = 0x25,
+  DW_TAG_const_type = 0x26,
+  DW_TAG_constant = 0x27,
+  DW_TAG_enumerator = 0x28,
+  DW_TAG_file_type = 0x29,
+  DW_TAG_friend = 0x2a,
+  DW_TAG_namelist = 0x2b,
+  DW_TAG_namelist_item = 0x2c,
+  DW_TAG_packed_type = 0x2d,
+  DW_TAG_subprogram = 0x2e,
+  DW_TAG_template_type_param = 0x2f,
+  DW_TAG_template_value_param = 0x30,
+  DW_TAG_thrown_type = 0x31,
+  DW_TAG_try_block = 0x32,
+  DW_TAG_variant_part = 0x33,
+  DW_TAG_variable = 0x34,
+  DW_TAG_volatile_type = 0x35,
+  // DWARF 3.
+  DW_TAG_dwarf_procedure = 0x36,
+  DW_TAG_restrict_type = 0x37,
+  DW_TAG_interface_type = 0x38,
+  DW_TAG_namespace = 0x39,
+  DW_TAG_imported_module = 0x3a,
+  DW_TAG_unspecified_type = 0x3b,
+  DW_TAG_partial_unit = 0x3c,
+  DW_TAG_imported_unit = 0x3d,
+  // SGI/MIPS Extensions.
+  DW_TAG_MIPS_loop = 0x4081,
+  // HP extensions.  See:
+  // ftp://ftp.hp.com/pub/lang/tools/WDB/wdb-4.0.tar.gz
+  DW_TAG_HP_array_descriptor = 0x4090,
+  // GNU extensions.
+  DW_TAG_format_label = 0x4101,  // For FORTRAN 77 and Fortran 90.
+  DW_TAG_function_template = 0x4102,  // For C++.
+  DW_TAG_class_template = 0x4103,  // For C++.
+  DW_TAG_GNU_BINCL = 0x4104,
+  DW_TAG_GNU_EINCL = 0x4105,
+  // Extensions for UPC.  See: http://upc.gwu.edu/~upc.
+  DW_TAG_upc_shared_type = 0x8765,
+  DW_TAG_upc_strict_type = 0x8766,
+  DW_TAG_upc_relaxed_type = 0x8767,
+  // PGI (STMicroelectronics) extensions.  No documentation available.
+  DW_TAG_PGI_kanji_type      = 0xA000,
+  DW_TAG_PGI_interface_block = 0xA020
+};
+
+
+enum DwarfHasChild {
+  DW_children_no = 0,
+  DW_children_yes = 1
+};
+
+// Form names and codes.
+enum DwarfForm {
+  DW_FORM_addr = 0x01,
+  DW_FORM_block2 = 0x03,
+  DW_FORM_block4 = 0x04,
+  DW_FORM_data2 = 0x05,
+  DW_FORM_data4 = 0x06,
+  DW_FORM_data8 = 0x07,
+  DW_FORM_string = 0x08,
+  DW_FORM_block = 0x09,
+  DW_FORM_block1 = 0x0a,
+  DW_FORM_data1 = 0x0b,
+  DW_FORM_flag = 0x0c,
+  DW_FORM_sdata = 0x0d,
+  DW_FORM_strp = 0x0e,
+  DW_FORM_udata = 0x0f,
+  DW_FORM_ref_addr = 0x10,
+  DW_FORM_ref1 = 0x11,
+  DW_FORM_ref2 = 0x12,
+  DW_FORM_ref4 = 0x13,
+  DW_FORM_ref8 = 0x14,
+  DW_FORM_ref_udata = 0x15,
+  DW_FORM_indirect = 0x16,
+
+  // Added in DWARF 4:
+  DW_FORM_sec_offset = 0x17,
+  DW_FORM_exprloc = 0x18,
+  DW_FORM_flag_present = 0x19,
+  DW_FORM_ref_sig8 = 0x20
+};
+
+// Attribute names and codes
+enum DwarfAttribute {
+  DW_AT_sibling = 0x01,
+  DW_AT_location = 0x02,
+  DW_AT_name = 0x03,
+  DW_AT_ordering = 0x09,
+  DW_AT_subscr_data = 0x0a,
+  DW_AT_byte_size = 0x0b,
+  DW_AT_bit_offset = 0x0c,
+  DW_AT_bit_size = 0x0d,
+  DW_AT_element_list = 0x0f,
+  DW_AT_stmt_list = 0x10,
+  DW_AT_low_pc = 0x11,
+  DW_AT_high_pc = 0x12,
+  DW_AT_language = 0x13,
+  DW_AT_member = 0x14,
+  DW_AT_discr = 0x15,
+  DW_AT_discr_value = 0x16,
+  DW_AT_visibility = 0x17,
+  DW_AT_import = 0x18,
+  DW_AT_string_length = 0x19,
+  DW_AT_common_reference = 0x1a,
+  DW_AT_comp_dir = 0x1b,
+  DW_AT_const_value = 0x1c,
+  DW_AT_containing_type = 0x1d,
+  DW_AT_default_value = 0x1e,
+  DW_AT_inline = 0x20,
+  DW_AT_is_optional = 0x21,
+  DW_AT_lower_bound = 0x22,
+  DW_AT_producer = 0x25,
+  DW_AT_prototyped = 0x27,
+  DW_AT_return_addr = 0x2a,
+  DW_AT_start_scope = 0x2c,
+  DW_AT_stride_size = 0x2e,
+  DW_AT_upper_bound = 0x2f,
+  DW_AT_abstract_origin = 0x31,
+  DW_AT_accessibility = 0x32,
+  DW_AT_address_class = 0x33,
+  DW_AT_artificial = 0x34,
+  DW_AT_base_types = 0x35,
+  DW_AT_calling_convention = 0x36,
+  DW_AT_count = 0x37,
+  DW_AT_data_member_location = 0x38,
+  DW_AT_decl_column = 0x39,
+  DW_AT_decl_file = 0x3a,
+  DW_AT_decl_line = 0x3b,
+  DW_AT_declaration = 0x3c,
+  DW_AT_discr_list = 0x3d,
+  DW_AT_encoding = 0x3e,
+  DW_AT_external = 0x3f,
+  DW_AT_frame_base = 0x40,
+  DW_AT_friend = 0x41,
+  DW_AT_identifier_case = 0x42,
+  DW_AT_macro_info = 0x43,
+  DW_AT_namelist_items = 0x44,
+  DW_AT_priority = 0x45,
+  DW_AT_segment = 0x46,
+  DW_AT_specification = 0x47,
+  DW_AT_static_link = 0x48,
+  DW_AT_type = 0x49,
+  DW_AT_use_location = 0x4a,
+  DW_AT_variable_parameter = 0x4b,
+  DW_AT_virtuality = 0x4c,
+  DW_AT_vtable_elem_location = 0x4d,
+  // DWARF 3 values.
+  DW_AT_allocated     = 0x4e,
+  DW_AT_associated    = 0x4f,
+  DW_AT_data_location = 0x50,
+  DW_AT_stride        = 0x51,
+  DW_AT_entry_pc      = 0x52,
+  DW_AT_use_UTF8      = 0x53,
+  DW_AT_extension     = 0x54,
+  DW_AT_ranges        = 0x55,
+  DW_AT_trampoline    = 0x56,
+  DW_AT_call_column   = 0x57,
+  DW_AT_call_file     = 0x58,
+  DW_AT_call_line     = 0x59,
+  // SGI/MIPS extensions.
+  DW_AT_MIPS_fde = 0x2001,
+  DW_AT_MIPS_loop_begin = 0x2002,
+  DW_AT_MIPS_tail_loop_begin = 0x2003,
+  DW_AT_MIPS_epilog_begin = 0x2004,
+  DW_AT_MIPS_loop_unroll_factor = 0x2005,
+  DW_AT_MIPS_software_pipeline_depth = 0x2006,
+  DW_AT_MIPS_linkage_name = 0x2007,
+  DW_AT_MIPS_stride = 0x2008,
+  DW_AT_MIPS_abstract_name = 0x2009,
+  DW_AT_MIPS_clone_origin = 0x200a,
+  DW_AT_MIPS_has_inlines = 0x200b,
+  // HP extensions.
+  DW_AT_HP_block_index         = 0x2000,
+  DW_AT_HP_unmodifiable        = 0x2001,  // Same as DW_AT_MIPS_fde.
+  DW_AT_HP_actuals_stmt_list   = 0x2010,
+  DW_AT_HP_proc_per_section    = 0x2011,
+  DW_AT_HP_raw_data_ptr        = 0x2012,
+  DW_AT_HP_pass_by_reference   = 0x2013,
+  DW_AT_HP_opt_level           = 0x2014,
+  DW_AT_HP_prof_version_id     = 0x2015,
+  DW_AT_HP_opt_flags           = 0x2016,
+  DW_AT_HP_cold_region_low_pc  = 0x2017,
+  DW_AT_HP_cold_region_high_pc = 0x2018,
+  DW_AT_HP_all_variables_modifiable = 0x2019,
+  DW_AT_HP_linkage_name        = 0x201a,
+  DW_AT_HP_prof_flags          = 0x201b,  // In comp unit of procs_info for -g.
+  // GNU extensions.
+  DW_AT_sf_names   = 0x2101,
+  DW_AT_src_info   = 0x2102,
+  DW_AT_mac_info   = 0x2103,
+  DW_AT_src_coords = 0x2104,
+  DW_AT_body_begin = 0x2105,
+  DW_AT_body_end   = 0x2106,
+  DW_AT_GNU_vector = 0x2107,
+  // VMS extensions.
+  DW_AT_VMS_rtnbeg_pd_address = 0x2201,
+  // UPC extension.
+  DW_AT_upc_threads_scaled = 0x3210,
+  // PGI (STMicroelectronics) extensions.
+  DW_AT_PGI_lbase    = 0x3a00,
+  DW_AT_PGI_soffset  = 0x3a01,
+  DW_AT_PGI_lstride  = 0x3a02
+};
+
+
+// Line number opcodes.
+enum DwarfLineNumberOps {
+  DW_LNS_extended_op = 0,
+  DW_LNS_copy = 1,
+  DW_LNS_advance_pc = 2,
+  DW_LNS_advance_line = 3,
+  DW_LNS_set_file = 4,
+  DW_LNS_set_column = 5,
+  DW_LNS_negate_stmt = 6,
+  DW_LNS_set_basic_block = 7,
+  DW_LNS_const_add_pc = 8,
+  DW_LNS_fixed_advance_pc = 9,
+  // DWARF 3.
+  DW_LNS_set_prologue_end = 10,
+  DW_LNS_set_epilogue_begin = 11,
+  DW_LNS_set_isa = 12
+};
+
+// Line number extended opcodes.
+enum DwarfLineNumberExtendedOps {
+  DW_LNE_end_sequence = 1,
+  DW_LNE_set_address = 2,
+  DW_LNE_define_file = 3,
+  // HP extensions.
+  DW_LNE_HP_negate_is_UV_update      = 0x11,
+  DW_LNE_HP_push_context             = 0x12,
+  DW_LNE_HP_pop_context              = 0x13,
+  DW_LNE_HP_set_file_line_column     = 0x14,
+  DW_LNE_HP_set_routine_name         = 0x15,
+  DW_LNE_HP_set_sequence             = 0x16,
+  DW_LNE_HP_negate_post_semantics    = 0x17,
+  DW_LNE_HP_negate_function_exit     = 0x18,
+  DW_LNE_HP_negate_front_end_logical = 0x19,
+  DW_LNE_HP_define_proc              = 0x20
+};
+
+// Type encoding names and codes
+enum DwarfEncoding {
+  DW_ATE_address                     =0x1,
+  DW_ATE_boolean                     =0x2,
+  DW_ATE_complex_float               =0x3,
+  DW_ATE_float                       =0x4,
+  DW_ATE_signed                      =0x5,
+  DW_ATE_signed_char                 =0x6,
+  DW_ATE_unsigned                    =0x7,
+  DW_ATE_unsigned_char               =0x8,
+  // DWARF3/DWARF3f
+  DW_ATE_imaginary_float             =0x9,
+  DW_ATE_packed_decimal              =0xa,
+  DW_ATE_numeric_string              =0xb,
+  DW_ATE_edited                      =0xc,
+  DW_ATE_signed_fixed                =0xd,
+  DW_ATE_unsigned_fixed              =0xe,
+  DW_ATE_decimal_float               =0xf,
+  DW_ATE_lo_user                     =0x80,
+  DW_ATE_hi_user                     =0xff
+};
+
+// Location virtual machine opcodes
+enum DwarfOpcode {
+  DW_OP_addr                         =0x03,
+  DW_OP_deref                        =0x06,
+  DW_OP_const1u                      =0x08,
+  DW_OP_const1s                      =0x09,
+  DW_OP_const2u                      =0x0a,
+  DW_OP_const2s                      =0x0b,
+  DW_OP_const4u                      =0x0c,
+  DW_OP_const4s                      =0x0d,
+  DW_OP_const8u                      =0x0e,
+  DW_OP_const8s                      =0x0f,
+  DW_OP_constu                       =0x10,
+  DW_OP_consts                       =0x11,
+  DW_OP_dup                          =0x12,
+  DW_OP_drop                         =0x13,
+  DW_OP_over                         =0x14,
+  DW_OP_pick                         =0x15,
+  DW_OP_swap                         =0x16,
+  DW_OP_rot                          =0x17,
+  DW_OP_xderef                       =0x18,
+  DW_OP_abs                          =0x19,
+  DW_OP_and                          =0x1a,
+  DW_OP_div                          =0x1b,
+  DW_OP_minus                        =0x1c,
+  DW_OP_mod                          =0x1d,
+  DW_OP_mul                          =0x1e,
+  DW_OP_neg                          =0x1f,
+  DW_OP_not                          =0x20,
+  DW_OP_or                           =0x21,
+  DW_OP_plus                         =0x22,
+  DW_OP_plus_uconst                  =0x23,
+  DW_OP_shl                          =0x24,
+  DW_OP_shr                          =0x25,
+  DW_OP_shra                         =0x26,
+  DW_OP_xor                          =0x27,
+  DW_OP_bra                          =0x28,
+  DW_OP_eq                           =0x29,
+  DW_OP_ge                           =0x2a,
+  DW_OP_gt                           =0x2b,
+  DW_OP_le                           =0x2c,
+  DW_OP_lt                           =0x2d,
+  DW_OP_ne                           =0x2e,
+  DW_OP_skip                         =0x2f,
+  DW_OP_lit0                         =0x30,
+  DW_OP_lit1                         =0x31,
+  DW_OP_lit2                         =0x32,
+  DW_OP_lit3                         =0x33,
+  DW_OP_lit4                         =0x34,
+  DW_OP_lit5                         =0x35,
+  DW_OP_lit6                         =0x36,
+  DW_OP_lit7                         =0x37,
+  DW_OP_lit8                         =0x38,
+  DW_OP_lit9                         =0x39,
+  DW_OP_lit10                        =0x3a,
+  DW_OP_lit11                        =0x3b,
+  DW_OP_lit12                        =0x3c,
+  DW_OP_lit13                        =0x3d,
+  DW_OP_lit14                        =0x3e,
+  DW_OP_lit15                        =0x3f,
+  DW_OP_lit16                        =0x40,
+  DW_OP_lit17                        =0x41,
+  DW_OP_lit18                        =0x42,
+  DW_OP_lit19                        =0x43,
+  DW_OP_lit20                        =0x44,
+  DW_OP_lit21                        =0x45,
+  DW_OP_lit22                        =0x46,
+  DW_OP_lit23                        =0x47,
+  DW_OP_lit24                        =0x48,
+  DW_OP_lit25                        =0x49,
+  DW_OP_lit26                        =0x4a,
+  DW_OP_lit27                        =0x4b,
+  DW_OP_lit28                        =0x4c,
+  DW_OP_lit29                        =0x4d,
+  DW_OP_lit30                        =0x4e,
+  DW_OP_lit31                        =0x4f,
+  DW_OP_reg0                         =0x50,
+  DW_OP_reg1                         =0x51,
+  DW_OP_reg2                         =0x52,
+  DW_OP_reg3                         =0x53,
+  DW_OP_reg4                         =0x54,
+  DW_OP_reg5                         =0x55,
+  DW_OP_reg6                         =0x56,
+  DW_OP_reg7                         =0x57,
+  DW_OP_reg8                         =0x58,
+  DW_OP_reg9                         =0x59,
+  DW_OP_reg10                        =0x5a,
+  DW_OP_reg11                        =0x5b,
+  DW_OP_reg12                        =0x5c,
+  DW_OP_reg13                        =0x5d,
+  DW_OP_reg14                        =0x5e,
+  DW_OP_reg15                        =0x5f,
+  DW_OP_reg16                        =0x60,
+  DW_OP_reg17                        =0x61,
+  DW_OP_reg18                        =0x62,
+  DW_OP_reg19                        =0x63,
+  DW_OP_reg20                        =0x64,
+  DW_OP_reg21                        =0x65,
+  DW_OP_reg22                        =0x66,
+  DW_OP_reg23                        =0x67,
+  DW_OP_reg24                        =0x68,
+  DW_OP_reg25                        =0x69,
+  DW_OP_reg26                        =0x6a,
+  DW_OP_reg27                        =0x6b,
+  DW_OP_reg28                        =0x6c,
+  DW_OP_reg29                        =0x6d,
+  DW_OP_reg30                        =0x6e,
+  DW_OP_reg31                        =0x6f,
+  DW_OP_breg0                        =0x70,
+  DW_OP_breg1                        =0x71,
+  DW_OP_breg2                        =0x72,
+  DW_OP_breg3                        =0x73,
+  DW_OP_breg4                        =0x74,
+  DW_OP_breg5                        =0x75,
+  DW_OP_breg6                        =0x76,
+  DW_OP_breg7                        =0x77,
+  DW_OP_breg8                        =0x78,
+  DW_OP_breg9                        =0x79,
+  DW_OP_breg10                       =0x7a,
+  DW_OP_breg11                       =0x7b,
+  DW_OP_breg12                       =0x7c,
+  DW_OP_breg13                       =0x7d,
+  DW_OP_breg14                       =0x7e,
+  DW_OP_breg15                       =0x7f,
+  DW_OP_breg16                       =0x80,
+  DW_OP_breg17                       =0x81,
+  DW_OP_breg18                       =0x82,
+  DW_OP_breg19                       =0x83,
+  DW_OP_breg20                       =0x84,
+  DW_OP_breg21                       =0x85,
+  DW_OP_breg22                       =0x86,
+  DW_OP_breg23                       =0x87,
+  DW_OP_breg24                       =0x88,
+  DW_OP_breg25                       =0x89,
+  DW_OP_breg26                       =0x8a,
+  DW_OP_breg27                       =0x8b,
+  DW_OP_breg28                       =0x8c,
+  DW_OP_breg29                       =0x8d,
+  DW_OP_breg30                       =0x8e,
+  DW_OP_breg31                       =0x8f,
+  DW_OP_regX                         =0x90,
+  DW_OP_fbreg                        =0x91,
+  DW_OP_bregX                        =0x92,
+  DW_OP_piece                        =0x93,
+  DW_OP_deref_size                   =0x94,
+  DW_OP_xderef_size                  =0x95,
+  DW_OP_nop                          =0x96,
+  // DWARF3/DWARF3f
+  DW_OP_push_object_address          =0x97,
+  DW_OP_call2                        =0x98,
+  DW_OP_call4                        =0x99,
+  DW_OP_call_ref                     =0x9a,
+  DW_OP_form_tls_address             =0x9b,
+  DW_OP_call_frame_cfa               =0x9c,
+  DW_OP_bit_piece                    =0x9d,
+  DW_OP_lo_user                      =0xe0,
+  DW_OP_hi_user                      =0xff,  
+  // GNU extensions
+  DW_OP_GNU_push_tls_address         =0xe0
+};
+
+// Source languages.  These are values for DW_AT_language.
+enum DwarfLanguage
+  {
+    DW_LANG_none                     =0x0000,
+    DW_LANG_C89                      =0x0001,
+    DW_LANG_C                        =0x0002,
+    DW_LANG_Ada83                    =0x0003,
+    DW_LANG_C_plus_plus              =0x0004,
+    DW_LANG_Cobol74                  =0x0005,
+    DW_LANG_Cobol85                  =0x0006,
+    DW_LANG_Fortran77                =0x0007,
+    DW_LANG_Fortran90                =0x0008,
+    DW_LANG_Pascal83                 =0x0009,
+    DW_LANG_Modula2                  =0x000a,
+    DW_LANG_Java                     =0x000b,
+    DW_LANG_C99                      =0x000c,
+    DW_LANG_Ada95                    =0x000d,
+    DW_LANG_Fortran95                =0x000e,
+    DW_LANG_PLI                      =0x000f,
+    DW_LANG_ObjC                     =0x0010,
+    DW_LANG_ObjC_plus_plus           =0x0011,
+    DW_LANG_UPC                      =0x0012,
+    DW_LANG_D                        =0x0013,
+    // Implementation-defined language code range.
+    DW_LANG_lo_user = 0x8000,
+    DW_LANG_hi_user = 0xffff,
+
+    // Extensions.
+
+    // MIPS assembly language.  The GNU toolchain uses this for all
+    // assembly languages, since there's no generic DW_LANG_ value for that.
+    // See include/dwarf2.h in the binutils, gdb, or gcc source trees.
+    DW_LANG_Mips_Assembler           =0x8001,
+    DW_LANG_Upc                      =0x8765 // Unified Parallel C
+  };
+
+// Inline codes.  These are values for DW_AT_inline.
+enum DwarfInline {
+  DW_INL_not_inlined                 =0x0,
+  DW_INL_inlined                     =0x1,
+  DW_INL_declared_not_inlined        =0x2,
+  DW_INL_declared_inlined            =0x3
+};
+
+// Call Frame Info instructions.
+enum DwarfCFI
+  {
+    DW_CFA_advance_loc        = 0x40,
+    DW_CFA_offset             = 0x80,
+    DW_CFA_restore            = 0xc0,
+    DW_CFA_nop                = 0x00,
+    DW_CFA_set_loc            = 0x01,
+    DW_CFA_advance_loc1       = 0x02,
+    DW_CFA_advance_loc2       = 0x03,
+    DW_CFA_advance_loc4       = 0x04,
+    DW_CFA_offset_extended    = 0x05,
+    DW_CFA_restore_extended   = 0x06,
+    DW_CFA_undefined          = 0x07,
+    DW_CFA_same_value         = 0x08,
+    DW_CFA_register           = 0x09,
+    DW_CFA_remember_state     = 0x0a,
+    DW_CFA_restore_state      = 0x0b,
+    DW_CFA_def_cfa            = 0x0c,
+    DW_CFA_def_cfa_register   = 0x0d,
+    DW_CFA_def_cfa_offset     = 0x0e,
+    DW_CFA_def_cfa_expression = 0x0f,
+    DW_CFA_expression         = 0x10,
+    DW_CFA_offset_extended_sf = 0x11,
+    DW_CFA_def_cfa_sf         = 0x12,
+    DW_CFA_def_cfa_offset_sf  = 0x13,
+    DW_CFA_val_offset         = 0x14,
+    DW_CFA_val_offset_sf      = 0x15,
+    DW_CFA_val_expression     = 0x16,
+
+    // Opcodes in this range are reserved for user extensions.
+    DW_CFA_lo_user = 0x1c,
+    DW_CFA_hi_user = 0x3f,
+
+    // SGI/MIPS specific.
+    DW_CFA_MIPS_advance_loc8 = 0x1d,
+
+    // GNU extensions.
+    DW_CFA_GNU_window_save = 0x2d,
+    DW_CFA_GNU_args_size = 0x2e,
+    DW_CFA_GNU_negative_offset_extended = 0x2f
+  };
+
+// Exception handling 'z' augmentation letters.
+enum DwarfZAugmentationCodes {
+  // If the CFI augmentation string begins with 'z', then the CIE and FDE
+  // have an augmentation data area just before the instructions, whose
+  // contents are determined by the subsequent augmentation letters.
+  DW_Z_augmentation_start = 'z',
+
+  // If this letter is present in a 'z' augmentation string, the CIE
+  // augmentation data includes a pointer encoding, and the FDE
+  // augmentation data includes a language-specific data area pointer,
+  // represented using that encoding.
+  DW_Z_has_LSDA = 'L',
+
+  // If this letter is present in a 'z' augmentation string, the CIE
+  // augmentation data includes a pointer encoding, followed by a pointer
+  // to a personality routine, represented using that encoding.
+  DW_Z_has_personality_routine = 'P',
+
+  // If this letter is present in a 'z' augmentation string, the CIE
+  // augmentation data includes a pointer encoding describing how the FDE's
+  // initial location, address range, and DW_CFA_set_loc operands are
+  // encoded.
+  DW_Z_has_FDE_address_encoding = 'R',
+
+  // If this letter is present in a 'z' augmentation string, then code
+  // addresses covered by FDEs that cite this CIE are signal delivery
+  // trampolines. Return addresses of frames in trampolines should not be
+  // adjusted as described in section 6.4.4 of the DWARF 3 spec.
+  DW_Z_is_signal_trampoline = 'S'
+};
+
+// Exception handling frame description pointer formats, as described
+// by the Linux Standard Base Core Specification 4.0, section 11.5,
+// DWARF Extensions.
+enum DwarfPointerEncoding
+  {
+    DW_EH_PE_absptr	= 0x00,
+    DW_EH_PE_omit	= 0xff,
+    DW_EH_PE_uleb128    = 0x01,
+    DW_EH_PE_udata2	= 0x02,
+    DW_EH_PE_udata4	= 0x03,
+    DW_EH_PE_udata8	= 0x04,
+    DW_EH_PE_sleb128    = 0x09,
+    DW_EH_PE_sdata2	= 0x0A,
+    DW_EH_PE_sdata4	= 0x0B,
+    DW_EH_PE_sdata8	= 0x0C,
+    DW_EH_PE_pcrel	= 0x10,
+    DW_EH_PE_textrel	= 0x20,
+    DW_EH_PE_datarel	= 0x30,
+    DW_EH_PE_funcrel	= 0x40,
+    DW_EH_PE_aligned	= 0x50,
+
+    // The GNU toolchain sources define this enum value as well,
+    // simply to help classify the lower nybble values into signed and
+    // unsigned groups.
+    DW_EH_PE_signed	= 0x08,
+
+    // This is not documented in LSB 4.0, but it is used in both the
+    // Linux and OS X toolchains. It can be added to any other
+    // encoding (except DW_EH_PE_aligned), and indicates that the
+    // encoded value represents the address at which the true address
+    // is stored, not the true address itself.
+    DW_EH_PE_indirect	= 0x80  
+  };
+
+}  // namespace dwarf2reader
+#endif  // COMMON_DWARF_DWARF2ENUMS_H__
diff --git a/google-breakpad/src/common/dwarf/dwarf2reader.cc b/google-breakpad/src/common/dwarf/dwarf2reader.cc
new file mode 100644
index 0000000..f2f3d58
--- /dev/null
+++ b/google-breakpad/src/common/dwarf/dwarf2reader.cc
@@ -0,0 +1,2344 @@
+// Copyright (c) 2010 Google Inc. All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// CFI reader author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// Implementation of dwarf2reader::LineInfo, dwarf2reader::CompilationUnit,
+// and dwarf2reader::CallFrameInfo. See dwarf2reader.h for details.
+
+#include "common/dwarf/dwarf2reader.h"
+
+#include <assert.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <string.h>
+
+#include <map>
+#include <memory>
+#include <stack>
+#include <string>
+#include <utility>
+
+#include "common/dwarf/bytereader-inl.h"
+#include "common/dwarf/bytereader.h"
+#include "common/dwarf/line_state_machine.h"
+#include "common/using_std_string.h"
+
+namespace dwarf2reader {
+
+CompilationUnit::CompilationUnit(const SectionMap& sections, uint64 offset,
+                                 ByteReader* reader, Dwarf2Handler* handler)
+    : offset_from_section_start_(offset), reader_(reader),
+      sections_(sections), handler_(handler), abbrevs_(NULL),
+      string_buffer_(NULL), string_buffer_length_(0) {}
+
+// Read a DWARF2/3 abbreviation section.
+// Each abbrev consists of a abbreviation number, a tag, a byte
+// specifying whether the tag has children, and a list of
+// attribute/form pairs.
+// The list of forms is terminated by a 0 for the attribute, and a
+// zero for the form.  The entire abbreviation section is terminated
+// by a zero for the code.
+
+void CompilationUnit::ReadAbbrevs() {
+  if (abbrevs_)
+    return;
+
+  // First get the debug_abbrev section.  ".debug_abbrev" is the name
+  // recommended in the DWARF spec, and used on Linux;
+  // "__debug_abbrev" is the name used in Mac OS X Mach-O files.
+  SectionMap::const_iterator iter = sections_.find(".debug_abbrev");
+  if (iter == sections_.end())
+    iter = sections_.find("__debug_abbrev");
+  assert(iter != sections_.end());
+
+  abbrevs_ = new std::vector<Abbrev>;
+  abbrevs_->resize(1);
+
+  // The only way to check whether we are reading over the end of the
+  // buffer would be to first compute the size of the leb128 data by
+  // reading it, then go back and read it again.
+  const char* abbrev_start = iter->second.first +
+                                      header_.abbrev_offset;
+  const char* abbrevptr = abbrev_start;
+#ifndef NDEBUG
+  const uint64 abbrev_length = iter->second.second - header_.abbrev_offset;
+#endif
+
+  while (1) {
+    CompilationUnit::Abbrev abbrev;
+    size_t len;
+    const uint64 number = reader_->ReadUnsignedLEB128(abbrevptr, &len);
+
+    if (number == 0)
+      break;
+    abbrev.number = number;
+    abbrevptr += len;
+
+    assert(abbrevptr < abbrev_start + abbrev_length);
+    const uint64 tag = reader_->ReadUnsignedLEB128(abbrevptr, &len);
+    abbrevptr += len;
+    abbrev.tag = static_cast<enum DwarfTag>(tag);
+
+    assert(abbrevptr < abbrev_start + abbrev_length);
+    abbrev.has_children = reader_->ReadOneByte(abbrevptr);
+    abbrevptr += 1;
+
+    assert(abbrevptr < abbrev_start + abbrev_length);
+
+    while (1) {
+      const uint64 nametemp = reader_->ReadUnsignedLEB128(abbrevptr, &len);
+      abbrevptr += len;
+
+      assert(abbrevptr < abbrev_start + abbrev_length);
+      const uint64 formtemp = reader_->ReadUnsignedLEB128(abbrevptr, &len);
+      abbrevptr += len;
+      if (nametemp == 0 && formtemp == 0)
+        break;
+
+      const enum DwarfAttribute name =
+        static_cast<enum DwarfAttribute>(nametemp);
+      const enum DwarfForm form = static_cast<enum DwarfForm>(formtemp);
+      abbrev.attributes.push_back(std::make_pair(name, form));
+    }
+    assert(abbrev.number == abbrevs_->size());
+    abbrevs_->push_back(abbrev);
+  }
+}
+
+// Skips a single DIE's attributes.
+const char* CompilationUnit::SkipDIE(const char* start,
+                                              const Abbrev& abbrev) {
+  for (AttributeList::const_iterator i = abbrev.attributes.begin();
+       i != abbrev.attributes.end();
+       i++)  {
+    start = SkipAttribute(start, i->second);
+  }
+  return start;
+}
+
+// Skips a single attribute form's data.
+const char* CompilationUnit::SkipAttribute(const char* start,
+                                                    enum DwarfForm form) {
+  size_t len;
+
+  switch (form) {
+    case DW_FORM_indirect:
+      form = static_cast<enum DwarfForm>(reader_->ReadUnsignedLEB128(start,
+                                                                     &len));
+      start += len;
+      return SkipAttribute(start, form);
+
+    case DW_FORM_flag_present:
+      return start;
+    case DW_FORM_data1:
+    case DW_FORM_flag:
+    case DW_FORM_ref1:
+      return start + 1;
+    case DW_FORM_ref2:
+    case DW_FORM_data2:
+      return start + 2;
+    case DW_FORM_ref4:
+    case DW_FORM_data4:
+      return start + 4;
+    case DW_FORM_ref8:
+    case DW_FORM_data8:
+    case DW_FORM_ref_sig8:
+      return start + 8;
+    case DW_FORM_string:
+      return start + strlen(start) + 1;
+    case DW_FORM_udata:
+    case DW_FORM_ref_udata:
+      reader_->ReadUnsignedLEB128(start, &len);
+      return start + len;
+
+    case DW_FORM_sdata:
+      reader_->ReadSignedLEB128(start, &len);
+      return start + len;
+    case DW_FORM_addr:
+      return start + reader_->AddressSize();
+    case DW_FORM_ref_addr:
+      // DWARF2 and 3/4 differ on whether ref_addr is address size or
+      // offset size.
+      assert(header_.version >= 2);
+      if (header_.version == 2) {
+        return start + reader_->AddressSize();
+      } else if (header_.version >= 3) {
+        return start + reader_->OffsetSize();
+      }
+      break;
+
+    case DW_FORM_block1:
+      return start + 1 + reader_->ReadOneByte(start);
+    case DW_FORM_block2:
+      return start + 2 + reader_->ReadTwoBytes(start);
+    case DW_FORM_block4:
+      return start + 4 + reader_->ReadFourBytes(start);
+    case DW_FORM_block:
+    case DW_FORM_exprloc: {
+      uint64 size = reader_->ReadUnsignedLEB128(start, &len);
+      return start + size + len;
+    }
+    case DW_FORM_strp:
+    case DW_FORM_sec_offset:
+      return start + reader_->OffsetSize();
+  }
+  fprintf(stderr,"Unhandled form type");
+  return NULL;
+}
+
+// Read a DWARF2/3 header.
+// The header is variable length in DWARF3 (and DWARF2 as extended by
+// most compilers), and consists of an length field, a version number,
+// the offset in the .debug_abbrev section for our abbrevs, and an
+// address size.
+void CompilationUnit::ReadHeader() {
+  const char* headerptr = buffer_;
+  size_t initial_length_size;
+
+  assert(headerptr + 4 < buffer_ + buffer_length_);
+  const uint64 initial_length
+    = reader_->ReadInitialLength(headerptr, &initial_length_size);
+  headerptr += initial_length_size;
+  header_.length = initial_length;
+
+  assert(headerptr + 2 < buffer_ + buffer_length_);
+  header_.version = reader_->ReadTwoBytes(headerptr);
+  headerptr += 2;
+
+  assert(headerptr + reader_->OffsetSize() < buffer_ + buffer_length_);
+  header_.abbrev_offset = reader_->ReadOffset(headerptr);
+  headerptr += reader_->OffsetSize();
+
+  assert(headerptr + 1 < buffer_ + buffer_length_);
+  header_.address_size = reader_->ReadOneByte(headerptr);
+  reader_->SetAddressSize(header_.address_size);
+  headerptr += 1;
+
+  after_header_ = headerptr;
+
+  // This check ensures that we don't have to do checking during the
+  // reading of DIEs. header_.length does not include the size of the
+  // initial length.
+  assert(buffer_ + initial_length_size + header_.length <=
+        buffer_ + buffer_length_);
+}
+
+uint64 CompilationUnit::Start() {
+  // First get the debug_info section.  ".debug_info" is the name
+  // recommended in the DWARF spec, and used on Linux; "__debug_info"
+  // is the name used in Mac OS X Mach-O files.
+  SectionMap::const_iterator iter = sections_.find(".debug_info");
+  if (iter == sections_.end())
+    iter = sections_.find("__debug_info");
+  assert(iter != sections_.end());
+
+  // Set up our buffer
+  buffer_ = iter->second.first + offset_from_section_start_;
+  buffer_length_ = iter->second.second - offset_from_section_start_;
+
+  // Read the header
+  ReadHeader();
+
+  // Figure out the real length from the end of the initial length to
+  // the end of the compilation unit, since that is the value we
+  // return.
+  uint64 ourlength = header_.length;
+  if (reader_->OffsetSize() == 8)
+    ourlength += 12;
+  else
+    ourlength += 4;
+
+  // See if the user wants this compilation unit, and if not, just return.
+  if (!handler_->StartCompilationUnit(offset_from_section_start_,
+                                      reader_->AddressSize(),
+                                      reader_->OffsetSize(),
+                                      header_.length,
+                                      header_.version))
+    return ourlength;
+
+  // Otherwise, continue by reading our abbreviation entries.
+  ReadAbbrevs();
+
+  // Set the string section if we have one.  ".debug_str" is the name
+  // recommended in the DWARF spec, and used on Linux; "__debug_str"
+  // is the name used in Mac OS X Mach-O files.
+  iter = sections_.find(".debug_str");
+  if (iter == sections_.end())
+    iter = sections_.find("__debug_str");
+  if (iter != sections_.end()) {
+    string_buffer_ = iter->second.first;
+    string_buffer_length_ = iter->second.second;
+  }
+
+  // Now that we have our abbreviations, start processing DIE's.
+  ProcessDIEs();
+
+  return ourlength;
+}
+
+// If one really wanted, you could merge SkipAttribute and
+// ProcessAttribute
+// This is all boring data manipulation and calling of the handler.
+const char* CompilationUnit::ProcessAttribute(
+    uint64 dieoffset, const char* start, enum DwarfAttribute attr,
+    enum DwarfForm form) {
+  size_t len;
+
+  switch (form) {
+    // DW_FORM_indirect is never used because it is such a space
+    // waster.
+    case DW_FORM_indirect:
+      form = static_cast<enum DwarfForm>(reader_->ReadUnsignedLEB128(start,
+                                                                     &len));
+      start += len;
+      return ProcessAttribute(dieoffset, start, attr, form);
+
+    case DW_FORM_flag_present:
+      handler_->ProcessAttributeUnsigned(dieoffset, attr, form, 1);
+      return start;
+    case DW_FORM_data1:
+    case DW_FORM_flag:
+      handler_->ProcessAttributeUnsigned(dieoffset, attr, form,
+                                         reader_->ReadOneByte(start));
+      return start + 1;
+    case DW_FORM_data2:
+      handler_->ProcessAttributeUnsigned(dieoffset, attr, form,
+                                         reader_->ReadTwoBytes(start));
+      return start + 2;
+    case DW_FORM_data4:
+      handler_->ProcessAttributeUnsigned(dieoffset, attr, form,
+                                         reader_->ReadFourBytes(start));
+      return start + 4;
+    case DW_FORM_data8:
+      handler_->ProcessAttributeUnsigned(dieoffset, attr, form,
+                                         reader_->ReadEightBytes(start));
+      return start + 8;
+    case DW_FORM_string: {
+      const char* str = start;
+      handler_->ProcessAttributeString(dieoffset, attr, form,
+                                       str);
+      return start + strlen(str) + 1;
+    }
+    case DW_FORM_udata:
+      handler_->ProcessAttributeUnsigned(dieoffset, attr, form,
+                                         reader_->ReadUnsignedLEB128(start,
+                                                                     &len));
+      return start + len;
+
+    case DW_FORM_sdata:
+      handler_->ProcessAttributeSigned(dieoffset, attr, form,
+                                      reader_->ReadSignedLEB128(start, &len));
+      return start + len;
+    case DW_FORM_addr:
+      handler_->ProcessAttributeUnsigned(dieoffset, attr, form,
+                                         reader_->ReadAddress(start));
+      return start + reader_->AddressSize();
+    case DW_FORM_sec_offset:
+      handler_->ProcessAttributeUnsigned(dieoffset, attr, form,
+                                         reader_->ReadOffset(start));
+      return start + reader_->OffsetSize();
+
+    case DW_FORM_ref1:
+      handler_->ProcessAttributeReference(dieoffset, attr, form,
+                                          reader_->ReadOneByte(start)
+                                          + offset_from_section_start_);
+      return start + 1;
+    case DW_FORM_ref2:
+      handler_->ProcessAttributeReference(dieoffset, attr, form,
+                                          reader_->ReadTwoBytes(start)
+                                          + offset_from_section_start_);
+      return start + 2;
+    case DW_FORM_ref4:
+      handler_->ProcessAttributeReference(dieoffset, attr, form,
+                                          reader_->ReadFourBytes(start)
+                                          + offset_from_section_start_);
+      return start + 4;
+    case DW_FORM_ref8:
+      handler_->ProcessAttributeReference(dieoffset, attr, form,
+                                          reader_->ReadEightBytes(start)
+                                          + offset_from_section_start_);
+      return start + 8;
+    case DW_FORM_ref_udata:
+      handler_->ProcessAttributeReference(dieoffset, attr, form,
+                                          reader_->ReadUnsignedLEB128(start,
+                                                                      &len)
+                                          + offset_from_section_start_);
+      return start + len;
+    case DW_FORM_ref_addr:
+      // DWARF2 and 3/4 differ on whether ref_addr is address size or
+      // offset size.
+      assert(header_.version >= 2);
+      if (header_.version == 2) {
+        handler_->ProcessAttributeReference(dieoffset, attr, form,
+                                            reader_->ReadAddress(start));
+        return start + reader_->AddressSize();
+      } else if (header_.version >= 3) {
+        handler_->ProcessAttributeReference(dieoffset, attr, form,
+                                            reader_->ReadOffset(start));
+        return start + reader_->OffsetSize();
+      }
+      break;
+    case DW_FORM_ref_sig8:
+      handler_->ProcessAttributeSignature(dieoffset, attr, form,
+                                          reader_->ReadEightBytes(start));
+      return start + 8;
+
+    case DW_FORM_block1: {
+      uint64 datalen = reader_->ReadOneByte(start);
+      handler_->ProcessAttributeBuffer(dieoffset, attr, form, start + 1,
+                                       datalen);
+      return start + 1 + datalen;
+    }
+    case DW_FORM_block2: {
+      uint64 datalen = reader_->ReadTwoBytes(start);
+      handler_->ProcessAttributeBuffer(dieoffset, attr, form, start + 2,
+                                       datalen);
+      return start + 2 + datalen;
+    }
+    case DW_FORM_block4: {
+      uint64 datalen = reader_->ReadFourBytes(start);
+      handler_->ProcessAttributeBuffer(dieoffset, attr, form, start + 4,
+                                       datalen);
+      return start + 4 + datalen;
+    }
+    case DW_FORM_block:
+    case DW_FORM_exprloc: {
+      uint64 datalen = reader_->ReadUnsignedLEB128(start, &len);
+      handler_->ProcessAttributeBuffer(dieoffset, attr, form, start + len,
+                                       datalen);
+      return start + datalen + len;
+    }
+    case DW_FORM_strp: {
+      assert(string_buffer_ != NULL);
+
+      const uint64 offset = reader_->ReadOffset(start);
+      assert(string_buffer_ + offset < string_buffer_ + string_buffer_length_);
+
+      const char* str = string_buffer_ + offset;
+      handler_->ProcessAttributeString(dieoffset, attr, form,
+                                       str);
+      return start + reader_->OffsetSize();
+    }
+  }
+  fprintf(stderr, "Unhandled form type\n");
+  return NULL;
+}
+
+const char* CompilationUnit::ProcessDIE(uint64 dieoffset,
+                                                 const char* start,
+                                                 const Abbrev& abbrev) {
+  for (AttributeList::const_iterator i = abbrev.attributes.begin();
+       i != abbrev.attributes.end();
+       i++)  {
+    start = ProcessAttribute(dieoffset, start, i->first, i->second);
+  }
+  return start;
+}
+
+void CompilationUnit::ProcessDIEs() {
+  const char* dieptr = after_header_;
+  size_t len;
+
+  // lengthstart is the place the length field is based on.
+  // It is the point in the header after the initial length field
+  const char* lengthstart = buffer_;
+
+  // In 64 bit dwarf, the initial length is 12 bytes, because of the
+  // 0xffffffff at the start.
+  if (reader_->OffsetSize() == 8)
+    lengthstart += 12;
+  else
+    lengthstart += 4;
+
+  std::stack<uint64> die_stack;
+  
+  while (dieptr < (lengthstart + header_.length)) {
+    // We give the user the absolute offset from the beginning of
+    // debug_info, since they need it to deal with ref_addr forms.
+    uint64 absolute_offset = (dieptr - buffer_) + offset_from_section_start_;
+
+    uint64 abbrev_num = reader_->ReadUnsignedLEB128(dieptr, &len);
+
+    dieptr += len;
+
+    // Abbrev == 0 represents the end of a list of children, or padding
+    // at the end of the compilation unit.
+    if (abbrev_num == 0) {
+      if (die_stack.size() == 0)
+        // If it is padding, then we are done with the compilation unit's DIEs.
+        return;
+      const uint64 offset = die_stack.top();
+      die_stack.pop();
+      handler_->EndDIE(offset);
+      continue;
+    }
+
+    const Abbrev& abbrev = abbrevs_->at(static_cast<size_t>(abbrev_num));
+    const enum DwarfTag tag = abbrev.tag;
+    if (!handler_->StartDIE(absolute_offset, tag)) {
+      dieptr = SkipDIE(dieptr, abbrev);
+    } else {
+      dieptr = ProcessDIE(absolute_offset, dieptr, abbrev);
+    }
+
+    if (abbrev.has_children) {
+      die_stack.push(absolute_offset);
+    } else {
+      handler_->EndDIE(absolute_offset);
+    }
+  }
+}
+
+LineInfo::LineInfo(const char* buffer, uint64 buffer_length,
+                   ByteReader* reader, LineInfoHandler* handler):
+    handler_(handler), reader_(reader), buffer_(buffer),
+    buffer_length_(buffer_length) {
+  header_.std_opcode_lengths = NULL;
+}
+
+uint64 LineInfo::Start() {
+  ReadHeader();
+  ReadLines();
+  return after_header_ - buffer_;
+}
+
+// The header for a debug_line section is mildly complicated, because
+// the line info is very tightly encoded.
+void LineInfo::ReadHeader() {
+  const char* lineptr = buffer_;
+  size_t initial_length_size;
+
+  const uint64 initial_length
+    = reader_->ReadInitialLength(lineptr, &initial_length_size);
+
+  lineptr += initial_length_size;
+  header_.total_length = initial_length;
+  assert(buffer_ + initial_length_size + header_.total_length <=
+        buffer_ + buffer_length_);
+
+  // Address size *must* be set by CU ahead of time.
+  assert(reader_->AddressSize() != 0);
+
+  header_.version = reader_->ReadTwoBytes(lineptr);
+  lineptr += 2;
+
+  header_.prologue_length = reader_->ReadOffset(lineptr);
+  lineptr += reader_->OffsetSize();
+
+  header_.min_insn_length = reader_->ReadOneByte(lineptr);
+  lineptr += 1;
+
+  header_.default_is_stmt = reader_->ReadOneByte(lineptr);
+  lineptr += 1;
+
+  header_.line_base = *reinterpret_cast<const int8*>(lineptr);
+  lineptr += 1;
+
+  header_.line_range = reader_->ReadOneByte(lineptr);
+  lineptr += 1;
+
+  header_.opcode_base = reader_->ReadOneByte(lineptr);
+  lineptr += 1;
+
+  header_.std_opcode_lengths = new std::vector<unsigned char>;
+  header_.std_opcode_lengths->resize(header_.opcode_base + 1);
+  (*header_.std_opcode_lengths)[0] = 0;
+  for (int i = 1; i < header_.opcode_base; i++) {
+    (*header_.std_opcode_lengths)[i] = reader_->ReadOneByte(lineptr);
+    lineptr += 1;
+  }
+
+  // It is legal for the directory entry table to be empty.
+  if (*lineptr) {
+    uint32 dirindex = 1;
+    while (*lineptr) {
+      const char* dirname = lineptr;
+      handler_->DefineDir(dirname, dirindex);
+      lineptr += strlen(dirname) + 1;
+      dirindex++;
+    }
+  }
+  lineptr++;
+
+  // It is also legal for the file entry table to be empty.
+  if (*lineptr) {
+    uint32 fileindex = 1;
+    size_t len;
+    while (*lineptr) {
+      const char* filename = lineptr;
+      lineptr += strlen(filename) + 1;
+
+      uint64 dirindex = reader_->ReadUnsignedLEB128(lineptr, &len);
+      lineptr += len;
+
+      uint64 mod_time = reader_->ReadUnsignedLEB128(lineptr, &len);
+      lineptr += len;
+
+      uint64 filelength = reader_->ReadUnsignedLEB128(lineptr, &len);
+      lineptr += len;
+      handler_->DefineFile(filename, fileindex, static_cast<uint32>(dirindex), 
+                           mod_time, filelength);
+      fileindex++;
+    }
+  }
+  lineptr++;
+
+  after_header_ = lineptr;
+}
+
+/* static */
+bool LineInfo::ProcessOneOpcode(ByteReader* reader,
+                                LineInfoHandler* handler,
+                                const struct LineInfoHeader &header,
+                                const char* start,
+                                struct LineStateMachine* lsm,
+                                size_t* len,
+                                uintptr pc,
+                                bool *lsm_passes_pc) {
+  size_t oplen = 0;
+  size_t templen;
+  uint8 opcode = reader->ReadOneByte(start);
+  oplen++;
+  start++;
+
+  // If the opcode is great than the opcode_base, it is a special
+  // opcode. Most line programs consist mainly of special opcodes.
+  if (opcode >= header.opcode_base) {
+    opcode -= header.opcode_base;
+    const int64 advance_address = (opcode / header.line_range)
+                                  * header.min_insn_length;
+    const int32 advance_line = (opcode % header.line_range)
+                               + header.line_base;
+
+    // Check if the lsm passes "pc". If so, mark it as passed.
+    if (lsm_passes_pc &&
+        lsm->address <= pc && pc < lsm->address + advance_address) {
+      *lsm_passes_pc = true;
+    }
+
+    lsm->address += advance_address;
+    lsm->line_num += advance_line;
+    lsm->basic_block = true;
+    *len = oplen;
+    return true;
+  }
+
+  // Otherwise, we have the regular opcodes
+  switch (opcode) {
+    case DW_LNS_copy: {
+      lsm->basic_block = false;
+      *len = oplen;
+      return true;
+    }
+
+    case DW_LNS_advance_pc: {
+      uint64 advance_address = reader->ReadUnsignedLEB128(start, &templen);
+      oplen += templen;
+
+      // Check if the lsm passes "pc". If so, mark it as passed.
+      if (lsm_passes_pc && lsm->address <= pc &&
+          pc < lsm->address + header.min_insn_length * advance_address) {
+        *lsm_passes_pc = true;
+      }
+
+      lsm->address += header.min_insn_length * advance_address;
+    }
+      break;
+    case DW_LNS_advance_line: {
+      const int64 advance_line = reader->ReadSignedLEB128(start, &templen);
+      oplen += templen;
+      lsm->line_num += static_cast<int32>(advance_line);
+
+      // With gcc 4.2.1, we can get the line_no here for the first time
+      // since DW_LNS_advance_line is called after DW_LNE_set_address is
+      // called. So we check if the lsm passes "pc" here, not in
+      // DW_LNE_set_address.
+      if (lsm_passes_pc && lsm->address == pc) {
+        *lsm_passes_pc = true;
+      }
+    }
+      break;
+    case DW_LNS_set_file: {
+      const uint64 fileno = reader->ReadUnsignedLEB128(start, &templen);
+      oplen += templen;
+      lsm->file_num = static_cast<uint32>(fileno);
+    }
+      break;
+    case DW_LNS_set_column: {
+      const uint64 colno = reader->ReadUnsignedLEB128(start, &templen);
+      oplen += templen;
+      lsm->column_num = static_cast<uint32>(colno);
+    }
+      break;
+    case DW_LNS_negate_stmt: {
+      lsm->is_stmt = !lsm->is_stmt;
+    }
+      break;
+    case DW_LNS_set_basic_block: {
+      lsm->basic_block = true;
+    }
+      break;
+    case DW_LNS_fixed_advance_pc: {
+      const uint16 advance_address = reader->ReadTwoBytes(start);
+      oplen += 2;
+
+      // Check if the lsm passes "pc". If so, mark it as passed.
+      if (lsm_passes_pc &&
+          lsm->address <= pc && pc < lsm->address + advance_address) {
+        *lsm_passes_pc = true;
+      }
+
+      lsm->address += advance_address;
+    }
+      break;
+    case DW_LNS_const_add_pc: {
+      const int64 advance_address = header.min_insn_length
+                                    * ((255 - header.opcode_base)
+                                       / header.line_range);
+
+      // Check if the lsm passes "pc". If so, mark it as passed.
+      if (lsm_passes_pc &&
+          lsm->address <= pc && pc < lsm->address + advance_address) {
+        *lsm_passes_pc = true;
+      }
+
+      lsm->address += advance_address;
+    }
+      break;
+    case DW_LNS_extended_op: {
+      const uint64 extended_op_len = reader->ReadUnsignedLEB128(start,
+                                                                &templen);
+      start += templen;
+      oplen += templen + extended_op_len;
+
+      const uint64 extended_op = reader->ReadOneByte(start);
+      start++;
+
+      switch (extended_op) {
+        case DW_LNE_end_sequence: {
+          lsm->end_sequence = true;
+          *len = oplen;
+          return true;
+        }
+          break;
+        case DW_LNE_set_address: {
+          // With gcc 4.2.1, we cannot tell the line_no here since
+          // DW_LNE_set_address is called before DW_LNS_advance_line is
+          // called.  So we do not check if the lsm passes "pc" here.  See
+          // also the comment in DW_LNS_advance_line.
+          uint64 address = reader->ReadAddress(start);
+          lsm->address = address;
+        }
+          break;
+        case DW_LNE_define_file: {
+          const char* filename  = start;
+
+          templen = strlen(filename) + 1;
+          start += templen;
+
+          uint64 dirindex = reader->ReadUnsignedLEB128(start, &templen);
+          oplen += templen;
+
+          const uint64 mod_time = reader->ReadUnsignedLEB128(start,
+                                                             &templen);
+          oplen += templen;
+
+          const uint64 filelength = reader->ReadUnsignedLEB128(start,
+                                                               &templen);
+          oplen += templen;
+
+          if (handler) {
+            handler->DefineFile(filename, -1, static_cast<uint32>(dirindex), 
+                                mod_time, filelength);
+          }
+        }
+          break;
+      }
+    }
+      break;
+
+    default: {
+      // Ignore unknown opcode  silently
+      if (header.std_opcode_lengths) {
+        for (int i = 0; i < (*header.std_opcode_lengths)[opcode]; i++) {
+          reader->ReadUnsignedLEB128(start, &templen);
+          start += templen;
+          oplen += templen;
+        }
+      }
+    }
+      break;
+  }
+  *len = oplen;
+  return false;
+}
+
+void LineInfo::ReadLines() {
+  struct LineStateMachine lsm;
+
+  // lengthstart is the place the length field is based on.
+  // It is the point in the header after the initial length field
+  const char* lengthstart = buffer_;
+
+  // In 64 bit dwarf, the initial length is 12 bytes, because of the
+  // 0xffffffff at the start.
+  if (reader_->OffsetSize() == 8)
+    lengthstart += 12;
+  else
+    lengthstart += 4;
+
+  const char* lineptr = after_header_;
+  lsm.Reset(header_.default_is_stmt);
+
+  // The LineInfoHandler interface expects each line's length along
+  // with its address, but DWARF only provides addresses (sans
+  // length), and an end-of-sequence address; one infers the length
+  // from the next address. So we report a line only when we get the
+  // next line's address, or the end-of-sequence address.
+  bool have_pending_line = false;
+  uint64 pending_address = 0;
+  uint32 pending_file_num = 0, pending_line_num = 0, pending_column_num = 0;
+
+  while (lineptr < lengthstart + header_.total_length) {
+    size_t oplength;
+    bool add_row = ProcessOneOpcode(reader_, handler_, header_,
+                                    lineptr, &lsm, &oplength, (uintptr)-1,
+                                    NULL);
+    if (add_row) {
+      if (have_pending_line)
+        handler_->AddLine(pending_address, lsm.address - pending_address,
+                          pending_file_num, pending_line_num,
+                          pending_column_num);
+      if (lsm.end_sequence) {
+        lsm.Reset(header_.default_is_stmt);      
+        have_pending_line = false;
+      } else {
+        pending_address = lsm.address;
+        pending_file_num = lsm.file_num;
+        pending_line_num = lsm.line_num;
+        pending_column_num = lsm.column_num;
+        have_pending_line = true;
+      }
+    }
+    lineptr += oplength;
+  }
+
+  after_header_ = lengthstart + header_.total_length;
+}
+
+// A DWARF rule for recovering the address or value of a register, or
+// computing the canonical frame address. There is one subclass of this for
+// each '*Rule' member function in CallFrameInfo::Handler.
+//
+// It's annoying that we have to handle Rules using pointers (because
+// the concrete instances can have an arbitrary size). They're small,
+// so it would be much nicer if we could just handle them by value
+// instead of fretting about ownership and destruction.
+//
+// It seems like all these could simply be instances of std::tr1::bind,
+// except that we need instances to be EqualityComparable, too.
+//
+// This could logically be nested within State, but then the qualified names
+// get horrendous.
+class CallFrameInfo::Rule {
+ public:
+  virtual ~Rule() { }
+
+  // Tell HANDLER that, at ADDRESS in the program, REGISTER can be
+  // recovered using this rule. If REGISTER is kCFARegister, then this rule
+  // describes how to compute the canonical frame address. Return what the
+  // HANDLER member function returned.
+  virtual bool Handle(Handler *handler,
+                      uint64 address, int register) const = 0;
+
+  // Equality on rules. We use these to decide which rules we need
+  // to report after a DW_CFA_restore_state instruction.
+  virtual bool operator==(const Rule &rhs) const = 0;
+
+  bool operator!=(const Rule &rhs) const { return ! (*this == rhs); }
+
+  // Return a pointer to a copy of this rule.
+  virtual Rule *Copy() const = 0;
+
+  // If this is a base+offset rule, change its base register to REG.
+  // Otherwise, do nothing. (Ugly, but required for DW_CFA_def_cfa_register.)
+  virtual void SetBaseRegister(unsigned reg) { }
+
+  // If this is a base+offset rule, change its offset to OFFSET. Otherwise,
+  // do nothing. (Ugly, but required for DW_CFA_def_cfa_offset.)
+  virtual void SetOffset(long long offset) { }
+};
+
+// Rule: the value the register had in the caller cannot be recovered.
+class CallFrameInfo::UndefinedRule: public CallFrameInfo::Rule {
+ public:
+  UndefinedRule() { }
+  ~UndefinedRule() { }
+  bool Handle(Handler *handler, uint64 address, int reg) const {
+    return handler->UndefinedRule(address, reg);
+  }
+  bool operator==(const Rule &rhs) const {
+    // dynamic_cast is allowed by the Google C++ Style Guide, if the use has
+    // been carefully considered; cheap RTTI-like workarounds are forbidden.
+    const UndefinedRule *our_rhs = dynamic_cast<const UndefinedRule *>(&rhs);
+    return (our_rhs != NULL);
+  }
+  Rule *Copy() const { return new UndefinedRule(*this); }
+};
+
+// Rule: the register's value is the same as that it had in the caller.
+class CallFrameInfo::SameValueRule: public CallFrameInfo::Rule {
+ public:
+  SameValueRule() { }
+  ~SameValueRule() { }
+  bool Handle(Handler *handler, uint64 address, int reg) const {
+    return handler->SameValueRule(address, reg);
+  }
+  bool operator==(const Rule &rhs) const {
+    // dynamic_cast is allowed by the Google C++ Style Guide, if the use has
+    // been carefully considered; cheap RTTI-like workarounds are forbidden.
+    const SameValueRule *our_rhs = dynamic_cast<const SameValueRule *>(&rhs);
+    return (our_rhs != NULL);
+  }
+  Rule *Copy() const { return new SameValueRule(*this); }
+};
+
+// Rule: the register is saved at OFFSET from BASE_REGISTER.  BASE_REGISTER
+// may be CallFrameInfo::Handler::kCFARegister.
+class CallFrameInfo::OffsetRule: public CallFrameInfo::Rule {
+ public:
+  OffsetRule(int base_register, long offset)
+      : base_register_(base_register), offset_(offset) { }
+  ~OffsetRule() { }
+  bool Handle(Handler *handler, uint64 address, int reg) const {
+    return handler->OffsetRule(address, reg, base_register_, offset_);
+  }
+  bool operator==(const Rule &rhs) const {
+    // dynamic_cast is allowed by the Google C++ Style Guide, if the use has
+    // been carefully considered; cheap RTTI-like workarounds are forbidden.
+    const OffsetRule *our_rhs = dynamic_cast<const OffsetRule *>(&rhs);
+    return (our_rhs &&
+            base_register_ == our_rhs->base_register_ &&
+            offset_ == our_rhs->offset_);
+  }
+  Rule *Copy() const { return new OffsetRule(*this); }
+  // We don't actually need SetBaseRegister or SetOffset here, since they
+  // are only ever applied to CFA rules, for DW_CFA_def_cfa_offset, and it
+  // doesn't make sense to use OffsetRule for computing the CFA: it
+  // computes the address at which a register is saved, not a value.
+ private:
+  int base_register_;
+  long offset_;
+};
+
+// Rule: the value the register had in the caller is the value of
+// BASE_REGISTER plus offset. BASE_REGISTER may be
+// CallFrameInfo::Handler::kCFARegister.
+class CallFrameInfo::ValOffsetRule: public CallFrameInfo::Rule {
+ public:
+  ValOffsetRule(int base_register, long offset)
+      : base_register_(base_register), offset_(offset) { }
+  ~ValOffsetRule() { }
+  bool Handle(Handler *handler, uint64 address, int reg) const {
+    return handler->ValOffsetRule(address, reg, base_register_, offset_);
+  }
+  bool operator==(const Rule &rhs) const {
+    // dynamic_cast is allowed by the Google C++ Style Guide, if the use has
+    // been carefully considered; cheap RTTI-like workarounds are forbidden.
+    const ValOffsetRule *our_rhs = dynamic_cast<const ValOffsetRule *>(&rhs);
+    return (our_rhs &&
+            base_register_ == our_rhs->base_register_ &&
+            offset_ == our_rhs->offset_);
+  }
+  Rule *Copy() const { return new ValOffsetRule(*this); }
+  void SetBaseRegister(unsigned reg) { base_register_ = reg; }
+  void SetOffset(long long offset) { offset_ = offset; }
+ private:
+  int base_register_;
+  long offset_;
+};
+
+// Rule: the register has been saved in another register REGISTER_NUMBER_.
+class CallFrameInfo::RegisterRule: public CallFrameInfo::Rule {
+ public:
+  explicit RegisterRule(int register_number)
+      : register_number_(register_number) { }
+  ~RegisterRule() { }
+  bool Handle(Handler *handler, uint64 address, int reg) const {
+    return handler->RegisterRule(address, reg, register_number_);
+  }
+  bool operator==(const Rule &rhs) const {
+    // dynamic_cast is allowed by the Google C++ Style Guide, if the use has
+    // been carefully considered; cheap RTTI-like workarounds are forbidden.
+    const RegisterRule *our_rhs = dynamic_cast<const RegisterRule *>(&rhs);
+    return (our_rhs && register_number_ == our_rhs->register_number_);
+  }
+  Rule *Copy() const { return new RegisterRule(*this); }
+ private:
+  int register_number_;
+};
+
+// Rule: EXPRESSION evaluates to the address at which the register is saved.
+class CallFrameInfo::ExpressionRule: public CallFrameInfo::Rule {
+ public:
+  explicit ExpressionRule(const string &expression)
+      : expression_(expression) { }
+  ~ExpressionRule() { }
+  bool Handle(Handler *handler, uint64 address, int reg) const {
+    return handler->ExpressionRule(address, reg, expression_);
+  }
+  bool operator==(const Rule &rhs) const {
+    // dynamic_cast is allowed by the Google C++ Style Guide, if the use has
+    // been carefully considered; cheap RTTI-like workarounds are forbidden.
+    const ExpressionRule *our_rhs = dynamic_cast<const ExpressionRule *>(&rhs);
+    return (our_rhs && expression_ == our_rhs->expression_);
+  }
+  Rule *Copy() const { return new ExpressionRule(*this); }
+ private:
+  string expression_;
+};
+
+// Rule: EXPRESSION evaluates to the address at which the register is saved.
+class CallFrameInfo::ValExpressionRule: public CallFrameInfo::Rule {
+ public:
+  explicit ValExpressionRule(const string &expression)
+      : expression_(expression) { }
+  ~ValExpressionRule() { }
+  bool Handle(Handler *handler, uint64 address, int reg) const {
+    return handler->ValExpressionRule(address, reg, expression_);
+  }
+  bool operator==(const Rule &rhs) const {
+    // dynamic_cast is allowed by the Google C++ Style Guide, if the use has
+    // been carefully considered; cheap RTTI-like workarounds are forbidden.
+    const ValExpressionRule *our_rhs =
+        dynamic_cast<const ValExpressionRule *>(&rhs);
+    return (our_rhs && expression_ == our_rhs->expression_);
+  }
+  Rule *Copy() const { return new ValExpressionRule(*this); }
+ private:
+  string expression_;
+};
+
+// A map from register numbers to rules.
+class CallFrameInfo::RuleMap {
+ public:
+  RuleMap() : cfa_rule_(NULL) { }
+  RuleMap(const RuleMap &rhs) : cfa_rule_(NULL) { *this = rhs; }
+  ~RuleMap() { Clear(); }
+
+  RuleMap &operator=(const RuleMap &rhs);
+
+  // Set the rule for computing the CFA to RULE. Take ownership of RULE.
+  void SetCFARule(Rule *rule) { delete cfa_rule_; cfa_rule_ = rule; }
+
+  // Return the current CFA rule. Unlike RegisterRule, this RuleMap retains
+  // ownership of the rule. We use this for DW_CFA_def_cfa_offset and
+  // DW_CFA_def_cfa_register, and for detecting references to the CFA before
+  // a rule for it has been established.
+  Rule *CFARule() const { return cfa_rule_; }
+
+  // Return the rule for REG, or NULL if there is none. The caller takes
+  // ownership of the result.
+  Rule *RegisterRule(int reg) const;
+
+  // Set the rule for computing REG to RULE. Take ownership of RULE.
+  void SetRegisterRule(int reg, Rule *rule);
+
+  // Make all the appropriate calls to HANDLER as if we were changing from
+  // this RuleMap to NEW_RULES at ADDRESS. We use this to implement
+  // DW_CFA_restore_state, where lots of rules can change simultaneously.
+  // Return true if all handlers returned true; otherwise, return false.
+  bool HandleTransitionTo(Handler *handler, uint64 address,
+                          const RuleMap &new_rules) const;
+
+ private:
+  // A map from register numbers to Rules.
+  typedef std::map<int, Rule *> RuleByNumber;
+
+  // Remove all register rules and clear cfa_rule_.
+  void Clear();
+
+  // The rule for computing the canonical frame address. This RuleMap owns
+  // this rule.
+  Rule *cfa_rule_;
+
+  // A map from register numbers to postfix expressions to recover
+  // their values. This RuleMap owns the Rules the map refers to.
+  RuleByNumber registers_;
+};
+
+CallFrameInfo::RuleMap &CallFrameInfo::RuleMap::operator=(const RuleMap &rhs) {
+  Clear();
+  // Since each map owns the rules it refers to, assignment must copy them.
+  if (rhs.cfa_rule_) cfa_rule_ = rhs.cfa_rule_->Copy();
+  for (RuleByNumber::const_iterator it = rhs.registers_.begin();
+       it != rhs.registers_.end(); it++)
+    registers_[it->first] = it->second->Copy();
+  return *this;
+}
+
+CallFrameInfo::Rule *CallFrameInfo::RuleMap::RegisterRule(int reg) const {
+  assert(reg != Handler::kCFARegister);
+  RuleByNumber::const_iterator it = registers_.find(reg);
+  if (it != registers_.end())
+    return it->second->Copy();
+  else
+    return NULL;
+}
+
+void CallFrameInfo::RuleMap::SetRegisterRule(int reg, Rule *rule) {
+  assert(reg != Handler::kCFARegister);
+  assert(rule);
+  Rule **slot = &registers_[reg];
+  delete *slot;
+  *slot = rule;
+}
+
+bool CallFrameInfo::RuleMap::HandleTransitionTo(
+    Handler *handler,
+    uint64 address,
+    const RuleMap &new_rules) const {
+  // Transition from cfa_rule_ to new_rules.cfa_rule_.
+  if (cfa_rule_ && new_rules.cfa_rule_) {
+    if (*cfa_rule_ != *new_rules.cfa_rule_ &&
+        !new_rules.cfa_rule_->Handle(handler, address,
+                                     Handler::kCFARegister))
+      return false;
+  } else if (cfa_rule_) {
+    // this RuleMap has a CFA rule but new_rules doesn't.
+    // CallFrameInfo::Handler has no way to handle this --- and shouldn't;
+    // it's garbage input. The instruction interpreter should have
+    // detected this and warned, so take no action here.
+  } else if (new_rules.cfa_rule_) {
+    // This shouldn't be possible: NEW_RULES is some prior state, and
+    // there's no way to remove entries.
+    assert(0);
+  } else {
+    // Both CFA rules are empty.  No action needed.
+  }
+
+  // Traverse the two maps in order by register number, and report
+  // whatever differences we find.
+  RuleByNumber::const_iterator old_it = registers_.begin();
+  RuleByNumber::const_iterator new_it = new_rules.registers_.begin();
+  while (old_it != registers_.end() && new_it != new_rules.registers_.end()) {
+    if (old_it->first < new_it->first) {
+      // This RuleMap has an entry for old_it->first, but NEW_RULES
+      // doesn't.
+      //
+      // This isn't really the right thing to do, but since CFI generally
+      // only mentions callee-saves registers, and GCC's convention for
+      // callee-saves registers is that they are unchanged, it's a good
+      // approximation.
+      if (!handler->SameValueRule(address, old_it->first))
+        return false;
+      old_it++;
+    } else if (old_it->first > new_it->first) {
+      // NEW_RULES has entry for new_it->first, but this RuleMap
+      // doesn't. This shouldn't be possible: NEW_RULES is some prior
+      // state, and there's no way to remove entries.
+      assert(0);
+    } else {
+      // Both maps have an entry for this register. Report the new
+      // rule if it is different.
+      if (*old_it->second != *new_it->second &&
+          !new_it->second->Handle(handler, address, new_it->first))
+        return false;
+      new_it++, old_it++;
+    }
+  }
+  // Finish off entries from this RuleMap with no counterparts in new_rules.
+  while (old_it != registers_.end()) {
+    if (!handler->SameValueRule(address, old_it->first))
+      return false;
+    old_it++;
+  }
+  // Since we only make transitions from a rule set to some previously
+  // saved rule set, and we can only add rules to the map, NEW_RULES
+  // must have fewer rules than *this.
+  assert(new_it == new_rules.registers_.end());
+
+  return true;
+}
+
+// Remove all register rules and clear cfa_rule_.
+void CallFrameInfo::RuleMap::Clear() {
+  delete cfa_rule_;
+  cfa_rule_ = NULL;
+  for (RuleByNumber::iterator it = registers_.begin();
+       it != registers_.end(); it++)
+    delete it->second;
+  registers_.clear();
+}
+
+// The state of the call frame information interpreter as it processes
+// instructions from a CIE and FDE.
+class CallFrameInfo::State {
+ public:
+  // Create a call frame information interpreter state with the given
+  // reporter, reader, handler, and initial call frame info address.
+  State(ByteReader *reader, Handler *handler, Reporter *reporter,
+        uint64 address)
+      : reader_(reader), handler_(handler), reporter_(reporter),
+        address_(address), entry_(NULL), cursor_(NULL) { }
+
+  // Interpret instructions from CIE, save the resulting rule set for
+  // DW_CFA_restore instructions, and return true. On error, report
+  // the problem to reporter_ and return false.
+  bool InterpretCIE(const CIE &cie);
+
+  // Interpret instructions from FDE, and return true. On error,
+  // report the problem to reporter_ and return false.
+  bool InterpretFDE(const FDE &fde);
+
+ private:  
+  // The operands of a CFI instruction, for ParseOperands.
+  struct Operands {
+    unsigned register_number;  // A register number.
+    uint64 offset;             // An offset or address.
+    long signed_offset;        // A signed offset.
+    string expression;         // A DWARF expression.
+  };
+
+  // Parse CFI instruction operands from STATE's instruction stream as
+  // described by FORMAT. On success, populate OPERANDS with the
+  // results, and return true. On failure, report the problem and
+  // return false.
+  //
+  // Each character of FORMAT should be one of the following:
+  //
+  //   'r'  unsigned LEB128 register number (OPERANDS->register_number)
+  //   'o'  unsigned LEB128 offset          (OPERANDS->offset)
+  //   's'  signed LEB128 offset            (OPERANDS->signed_offset)
+  //   'a'  machine-size address            (OPERANDS->offset)
+  //        (If the CIE has a 'z' augmentation string, 'a' uses the
+  //        encoding specified by the 'R' argument.)
+  //   '1'  a one-byte offset               (OPERANDS->offset)
+  //   '2'  a two-byte offset               (OPERANDS->offset)
+  //   '4'  a four-byte offset              (OPERANDS->offset)
+  //   '8'  an eight-byte offset            (OPERANDS->offset)
+  //   'e'  a DW_FORM_block holding a       (OPERANDS->expression)
+  //        DWARF expression
+  bool ParseOperands(const char *format, Operands *operands);
+
+  // Interpret one CFI instruction from STATE's instruction stream, update
+  // STATE, report any rule changes to handler_, and return true. On
+  // failure, report the problem and return false.
+  bool DoInstruction();
+
+  // The following Do* member functions are subroutines of DoInstruction,
+  // factoring out the actual work of operations that have several
+  // different encodings.
+
+  // Set the CFA rule to be the value of BASE_REGISTER plus OFFSET, and
+  // return true. On failure, report and return false. (Used for
+  // DW_CFA_def_cfa and DW_CFA_def_cfa_sf.)
+  bool DoDefCFA(unsigned base_register, long offset);
+
+  // Change the offset of the CFA rule to OFFSET, and return true. On
+  // failure, report and return false. (Subroutine for
+  // DW_CFA_def_cfa_offset and DW_CFA_def_cfa_offset_sf.)
+  bool DoDefCFAOffset(long offset);
+
+  // Specify that REG can be recovered using RULE, and return true. On
+  // failure, report and return false.
+  bool DoRule(unsigned reg, Rule *rule);
+
+  // Specify that REG can be found at OFFSET from the CFA, and return true.
+  // On failure, report and return false. (Subroutine for DW_CFA_offset,
+  // DW_CFA_offset_extended, and DW_CFA_offset_extended_sf.)
+  bool DoOffset(unsigned reg, long offset);
+
+  // Specify that the caller's value for REG is the CFA plus OFFSET,
+  // and return true. On failure, report and return false. (Subroutine
+  // for DW_CFA_val_offset and DW_CFA_val_offset_sf.)
+  bool DoValOffset(unsigned reg, long offset);
+
+  // Restore REG to the rule established in the CIE, and return true. On
+  // failure, report and return false. (Subroutine for DW_CFA_restore and
+  // DW_CFA_restore_extended.)
+  bool DoRestore(unsigned reg);
+
+  // Return the section offset of the instruction at cursor. For use
+  // in error messages.
+  uint64 CursorOffset() { return entry_->offset + (cursor_ - entry_->start); }
+
+  // Report that entry_ is incomplete, and return false. For brevity.
+  bool ReportIncomplete() {
+    reporter_->Incomplete(entry_->offset, entry_->kind);
+    return false;
+  }
+
+  // For reading multi-byte values with the appropriate endianness.
+  ByteReader *reader_;
+
+  // The handler to which we should report the data we find.
+  Handler *handler_;
+
+  // For reporting problems in the info we're parsing.
+  Reporter *reporter_;
+
+  // The code address to which the next instruction in the stream applies.
+  uint64 address_;
+
+  // The entry whose instructions we are currently processing. This is
+  // first a CIE, and then an FDE.
+  const Entry *entry_;
+
+  // The next instruction to process.
+  const char *cursor_;
+
+  // The current set of rules.
+  RuleMap rules_;
+
+  // The set of rules established by the CIE, used by DW_CFA_restore
+  // and DW_CFA_restore_extended. We set this after interpreting the
+  // CIE's instructions.
+  RuleMap cie_rules_;
+
+  // A stack of saved states, for DW_CFA_remember_state and
+  // DW_CFA_restore_state.
+  std::stack<RuleMap> saved_rules_;
+};
+
+bool CallFrameInfo::State::InterpretCIE(const CIE &cie) {
+  entry_ = &cie;
+  cursor_ = entry_->instructions;
+  while (cursor_ < entry_->end)
+    if (!DoInstruction())
+      return false;
+  // Note the rules established by the CIE, for use by DW_CFA_restore
+  // and DW_CFA_restore_extended.
+  cie_rules_ = rules_;
+  return true;
+}
+
+bool CallFrameInfo::State::InterpretFDE(const FDE &fde) {
+  entry_ = &fde;
+  cursor_ = entry_->instructions;
+  while (cursor_ < entry_->end)
+    if (!DoInstruction())
+      return false;
+  return true;
+}
+
+bool CallFrameInfo::State::ParseOperands(const char *format,
+                                         Operands *operands) {
+  size_t len;
+  const char *operand;
+
+  for (operand = format; *operand; operand++) {
+    size_t bytes_left = entry_->end - cursor_;
+    switch (*operand) {
+      case 'r':
+        operands->register_number = reader_->ReadUnsignedLEB128(cursor_, &len);
+        if (len > bytes_left) return ReportIncomplete();
+        cursor_ += len;
+        break;
+
+      case 'o':
+        operands->offset = reader_->ReadUnsignedLEB128(cursor_, &len);
+        if (len > bytes_left) return ReportIncomplete();
+        cursor_ += len;
+        break;
+
+      case 's':
+        operands->signed_offset = reader_->ReadSignedLEB128(cursor_, &len);
+        if (len > bytes_left) return ReportIncomplete();
+        cursor_ += len;
+        break;
+
+      case 'a':
+        operands->offset =
+          reader_->ReadEncodedPointer(cursor_, entry_->cie->pointer_encoding,
+                                      &len);
+        if (len > bytes_left) return ReportIncomplete();
+        cursor_ += len;
+        break;
+
+      case '1':
+        if (1 > bytes_left) return ReportIncomplete();
+        operands->offset = static_cast<unsigned char>(*cursor_++);
+        break;
+
+      case '2':
+        if (2 > bytes_left) return ReportIncomplete();
+        operands->offset = reader_->ReadTwoBytes(cursor_);
+        cursor_ += 2;
+        break;
+
+      case '4':
+        if (4 > bytes_left) return ReportIncomplete();
+        operands->offset = reader_->ReadFourBytes(cursor_);
+        cursor_ += 4;
+        break;
+
+      case '8':
+        if (8 > bytes_left) return ReportIncomplete();
+        operands->offset = reader_->ReadEightBytes(cursor_);
+        cursor_ += 8;
+        break;
+
+      case 'e': {
+        size_t expression_length = reader_->ReadUnsignedLEB128(cursor_, &len);
+        if (len > bytes_left || expression_length > bytes_left - len)
+          return ReportIncomplete();
+        cursor_ += len;
+        operands->expression = string(cursor_, expression_length);
+        cursor_ += expression_length;
+        break;
+      }
+
+      default:
+          assert(0);
+    }
+  }
+
+  return true;
+}
+
+bool CallFrameInfo::State::DoInstruction() {
+  CIE *cie = entry_->cie;
+  Operands ops;
+
+  // Our entry's kind should have been set by now.
+  assert(entry_->kind != kUnknown);
+
+  // We shouldn't have been invoked unless there were more
+  // instructions to parse.
+  assert(cursor_ < entry_->end);
+
+  unsigned opcode = *cursor_++;
+  if ((opcode & 0xc0) != 0) {
+    switch (opcode & 0xc0) {
+      // Advance the address.
+      case DW_CFA_advance_loc: {
+        size_t code_offset = opcode & 0x3f;
+        address_ += code_offset * cie->code_alignment_factor;
+        break;
+      }
+
+      // Find a register at an offset from the CFA.
+      case DW_CFA_offset:
+        if (!ParseOperands("o", &ops) ||
+            !DoOffset(opcode & 0x3f, ops.offset * cie->data_alignment_factor))
+          return false;
+        break;
+
+      // Restore the rule established for a register by the CIE.
+      case DW_CFA_restore:
+        if (!DoRestore(opcode & 0x3f)) return false;
+        break;
+
+      // The 'if' above should have excluded this possibility.
+      default:
+        assert(0);
+    }
+
+    // Return here, so the big switch below won't be indented.
+    return true;
+  }
+
+  switch (opcode) {
+    // Set the address.
+    case DW_CFA_set_loc:
+      if (!ParseOperands("a", &ops)) return false;
+      address_ = ops.offset;
+      break;
+
+    // Advance the address.
+    case DW_CFA_advance_loc1:
+      if (!ParseOperands("1", &ops)) return false;
+      address_ += ops.offset * cie->code_alignment_factor;
+      break;
+      
+    // Advance the address.
+    case DW_CFA_advance_loc2:
+      if (!ParseOperands("2", &ops)) return false;
+      address_ += ops.offset * cie->code_alignment_factor;
+      break;
+      
+    // Advance the address.
+    case DW_CFA_advance_loc4:
+      if (!ParseOperands("4", &ops)) return false;
+      address_ += ops.offset * cie->code_alignment_factor;
+      break;
+      
+    // Advance the address.
+    case DW_CFA_MIPS_advance_loc8:
+      if (!ParseOperands("8", &ops)) return false;
+      address_ += ops.offset * cie->code_alignment_factor;
+      break;
+
+    // Compute the CFA by adding an offset to a register.
+    case DW_CFA_def_cfa:
+      if (!ParseOperands("ro", &ops) ||
+          !DoDefCFA(ops.register_number, ops.offset))
+        return false;
+      break;
+
+    // Compute the CFA by adding an offset to a register.
+    case DW_CFA_def_cfa_sf:
+      if (!ParseOperands("rs", &ops) ||
+          !DoDefCFA(ops.register_number,
+                    ops.signed_offset * cie->data_alignment_factor))
+        return false;
+      break;
+
+    // Change the base register used to compute the CFA.
+    case DW_CFA_def_cfa_register: {
+      if (!ParseOperands("r", &ops)) return false;
+      Rule *cfa_rule = rules_.CFARule();
+      if (!cfa_rule) {
+        if (!DoDefCFA(ops.register_number, ops.offset)) {
+          reporter_->NoCFARule(entry_->offset, entry_->kind, CursorOffset());
+          return false;
+        }
+      } else {
+        cfa_rule->SetBaseRegister(ops.register_number);
+        if (!cfa_rule->Handle(handler_, address_,
+                              Handler::kCFARegister))
+        return false;
+      }
+      break;
+    }
+
+    // Change the offset used to compute the CFA.
+    case DW_CFA_def_cfa_offset:
+      if (!ParseOperands("o", &ops) ||
+          !DoDefCFAOffset(ops.offset))
+        return false;
+      break;
+
+    // Change the offset used to compute the CFA.
+    case DW_CFA_def_cfa_offset_sf:
+      if (!ParseOperands("s", &ops) ||
+          !DoDefCFAOffset(ops.signed_offset * cie->data_alignment_factor))
+        return false;
+      break;
+
+    // Specify an expression whose value is the CFA.
+    case DW_CFA_def_cfa_expression: {
+      if (!ParseOperands("e", &ops))
+        return false;
+      Rule *rule = new ValExpressionRule(ops.expression);
+      rules_.SetCFARule(rule);
+      if (!rule->Handle(handler_, address_,
+                        Handler::kCFARegister))
+        return false;
+      break;
+    }
+
+    // The register's value cannot be recovered.
+    case DW_CFA_undefined: {
+      if (!ParseOperands("r", &ops) ||
+          !DoRule(ops.register_number, new UndefinedRule()))
+        return false;
+      break;
+    }
+
+    // The register's value is unchanged from its value in the caller.
+    case DW_CFA_same_value: {
+      if (!ParseOperands("r", &ops) ||
+          !DoRule(ops.register_number, new SameValueRule()))
+        return false;
+      break;
+    }
+
+    // Find a register at an offset from the CFA.
+    case DW_CFA_offset_extended:
+      if (!ParseOperands("ro", &ops) ||
+          !DoOffset(ops.register_number,
+                    ops.offset * cie->data_alignment_factor))
+        return false;
+      break;
+
+    // The register is saved at an offset from the CFA.
+    case DW_CFA_offset_extended_sf:
+      if (!ParseOperands("rs", &ops) ||
+          !DoOffset(ops.register_number,
+                    ops.signed_offset * cie->data_alignment_factor))
+        return false;
+      break;
+
+    // The register is saved at an offset from the CFA.
+    case DW_CFA_GNU_negative_offset_extended:
+      if (!ParseOperands("ro", &ops) ||
+          !DoOffset(ops.register_number,
+                    -ops.offset * cie->data_alignment_factor))
+        return false;
+      break;
+
+    // The register's value is the sum of the CFA plus an offset.
+    case DW_CFA_val_offset:
+      if (!ParseOperands("ro", &ops) ||
+          !DoValOffset(ops.register_number,
+                       ops.offset * cie->data_alignment_factor))
+        return false;
+      break;
+
+    // The register's value is the sum of the CFA plus an offset.
+    case DW_CFA_val_offset_sf:
+      if (!ParseOperands("rs", &ops) ||
+          !DoValOffset(ops.register_number,
+                       ops.signed_offset * cie->data_alignment_factor))
+        return false;
+      break;
+
+    // The register has been saved in another register.
+    case DW_CFA_register: {
+      if (!ParseOperands("ro", &ops) ||
+          !DoRule(ops.register_number, new RegisterRule(ops.offset)))
+        return false;
+      break;
+    }
+
+    // An expression yields the address at which the register is saved.
+    case DW_CFA_expression: {
+      if (!ParseOperands("re", &ops) ||
+          !DoRule(ops.register_number, new ExpressionRule(ops.expression)))
+        return false;
+      break;
+    }
+
+    // An expression yields the caller's value for the register.
+    case DW_CFA_val_expression: {
+      if (!ParseOperands("re", &ops) ||
+          !DoRule(ops.register_number, new ValExpressionRule(ops.expression)))
+        return false;
+      break;
+    }
+
+    // Restore the rule established for a register by the CIE.
+    case DW_CFA_restore_extended:
+      if (!ParseOperands("r", &ops) ||
+          !DoRestore( ops.register_number))
+        return false;
+      break;
+
+    // Save the current set of rules on a stack.
+    case DW_CFA_remember_state:
+      saved_rules_.push(rules_);
+      break;
+
+    // Pop the current set of rules off the stack.
+    case DW_CFA_restore_state: {
+      if (saved_rules_.empty()) {
+        reporter_->EmptyStateStack(entry_->offset, entry_->kind,
+                                   CursorOffset());
+        return false;
+      }
+      const RuleMap &new_rules = saved_rules_.top();
+      if (rules_.CFARule() && !new_rules.CFARule()) {
+        reporter_->ClearingCFARule(entry_->offset, entry_->kind,
+                                   CursorOffset());
+        return false;
+      }
+      rules_.HandleTransitionTo(handler_, address_, new_rules);
+      rules_ = new_rules;
+      saved_rules_.pop();
+      break;
+    }
+
+    // No operation.  (Padding instruction.)
+    case DW_CFA_nop:
+      break;
+
+    // A SPARC register window save: Registers 8 through 15 (%o0-%o7)
+    // are saved in registers 24 through 31 (%i0-%i7), and registers
+    // 16 through 31 (%l0-%l7 and %i0-%i7) are saved at CFA offsets
+    // (0-15 * the register size). The register numbers must be
+    // hard-coded. A GNU extension, and not a pretty one.
+    case DW_CFA_GNU_window_save: {
+      // Save %o0-%o7 in %i0-%i7.
+      for (int i = 8; i < 16; i++)
+        if (!DoRule(i, new RegisterRule(i + 16)))
+          return false;
+      // Save %l0-%l7 and %i0-%i7 at the CFA.
+      for (int i = 16; i < 32; i++)
+        // Assume that the byte reader's address size is the same as
+        // the architecture's register size. !@#%*^ hilarious.
+        if (!DoRule(i, new OffsetRule(Handler::kCFARegister,
+                                      (i - 16) * reader_->AddressSize())))
+          return false;
+      break;
+    }
+
+    // I'm not sure what this is. GDB doesn't use it for unwinding.
+    case DW_CFA_GNU_args_size:
+      if (!ParseOperands("o", &ops)) return false;
+      break;
+
+    // An opcode we don't recognize.
+    default: {
+      reporter_->BadInstruction(entry_->offset, entry_->kind, CursorOffset());
+      return false;
+    }
+  }
+
+  return true;
+}
+
+bool CallFrameInfo::State::DoDefCFA(unsigned base_register, long offset) {
+  Rule *rule = new ValOffsetRule(base_register, offset);
+  rules_.SetCFARule(rule);
+  return rule->Handle(handler_, address_,
+                      Handler::kCFARegister);
+}
+
+bool CallFrameInfo::State::DoDefCFAOffset(long offset) {
+  Rule *cfa_rule = rules_.CFARule();
+  if (!cfa_rule) {
+    reporter_->NoCFARule(entry_->offset, entry_->kind, CursorOffset());
+    return false;
+  }
+  cfa_rule->SetOffset(offset);
+  return cfa_rule->Handle(handler_, address_,
+                          Handler::kCFARegister);
+}
+
+bool CallFrameInfo::State::DoRule(unsigned reg, Rule *rule) {
+  rules_.SetRegisterRule(reg, rule);
+  return rule->Handle(handler_, address_, reg);
+}
+
+bool CallFrameInfo::State::DoOffset(unsigned reg, long offset) {
+  if (!rules_.CFARule()) {
+    reporter_->NoCFARule(entry_->offset, entry_->kind, CursorOffset());
+    return false;
+  }
+  return DoRule(reg,
+                new OffsetRule(Handler::kCFARegister, offset));
+}
+
+bool CallFrameInfo::State::DoValOffset(unsigned reg, long offset) {
+  if (!rules_.CFARule()) {
+    reporter_->NoCFARule(entry_->offset, entry_->kind, CursorOffset());
+    return false;
+  }
+  return DoRule(reg,
+                new ValOffsetRule(Handler::kCFARegister, offset));
+}
+
+bool CallFrameInfo::State::DoRestore(unsigned reg) {
+  // DW_CFA_restore and DW_CFA_restore_extended don't make sense in a CIE.
+  if (entry_->kind == kCIE) {
+    reporter_->RestoreInCIE(entry_->offset, CursorOffset());
+    return false;
+  }
+  Rule *rule = cie_rules_.RegisterRule(reg);
+  if (!rule) {
+    // This isn't really the right thing to do, but since CFI generally
+    // only mentions callee-saves registers, and GCC's convention for
+    // callee-saves registers is that they are unchanged, it's a good
+    // approximation.
+    rule = new SameValueRule();
+  }
+  return DoRule(reg, rule);
+}
+
+bool CallFrameInfo::ReadEntryPrologue(const char *cursor, Entry *entry) {
+  const char *buffer_end = buffer_ + buffer_length_;
+
+  // Initialize enough of ENTRY for use in error reporting.
+  entry->offset = cursor - buffer_;
+  entry->start = cursor;
+  entry->kind = kUnknown;
+  entry->end = NULL;
+
+  // Read the initial length. This sets reader_'s offset size.
+  size_t length_size;
+  uint64 length = reader_->ReadInitialLength(cursor, &length_size);
+  if (length_size > size_t(buffer_end - cursor))
+    return ReportIncomplete(entry);
+  cursor += length_size;
+
+  // In a .eh_frame section, a length of zero marks the end of the series
+  // of entries.
+  if (length == 0 && eh_frame_) {
+    entry->kind = kTerminator;
+    entry->end = cursor;
+    return true;
+  }
+
+  // Validate the length.
+  if (length > size_t(buffer_end - cursor))
+    return ReportIncomplete(entry);
+ 
+  // The length is the number of bytes after the initial length field;
+  // we have that position handy at this point, so compute the end
+  // now. (If we're parsing 64-bit-offset DWARF on a 32-bit machine,
+  // and the length didn't fit in a size_t, we would have rejected it
+  // above.)
+  entry->end = cursor + length;
+
+  // Parse the next field: either the offset of a CIE or a CIE id.
+  size_t offset_size = reader_->OffsetSize();
+  if (offset_size > size_t(entry->end - cursor)) return ReportIncomplete(entry);
+  entry->id = reader_->ReadOffset(cursor);
+
+  // Don't advance cursor past id field yet; in .eh_frame data we need
+  // the id's position to compute the section offset of an FDE's CIE.
+
+  // Now we can decide what kind of entry this is.
+  if (eh_frame_) {
+    // In .eh_frame data, an ID of zero marks the entry as a CIE, and
+    // anything else is an offset from the id field of the FDE to the start
+    // of the CIE.
+    if (entry->id == 0) {
+      entry->kind = kCIE;
+    } else {
+      entry->kind = kFDE;
+      // Turn the offset from the id into an offset from the buffer's start.
+      entry->id = (cursor - buffer_) - entry->id;
+    }
+  } else {
+    // In DWARF CFI data, an ID of ~0 (of the appropriate width, given the
+    // offset size for the entry) marks the entry as a CIE, and anything
+    // else is the offset of the CIE from the beginning of the section.
+    if (offset_size == 4)
+      entry->kind = (entry->id == 0xffffffff) ? kCIE : kFDE;
+    else {
+      assert(offset_size == 8);
+      entry->kind = (entry->id == 0xffffffffffffffffULL) ? kCIE : kFDE;
+    }
+  }
+
+  // Now advance cursor past the id.
+   cursor += offset_size;
+ 
+  // The fields specific to this kind of entry start here.
+  entry->fields = cursor;
+
+  entry->cie = NULL;
+
+  return true;
+}
+
+bool CallFrameInfo::ReadCIEFields(CIE *cie) {
+  const char *cursor = cie->fields;
+  size_t len;
+
+  assert(cie->kind == kCIE);
+
+  // Prepare for early exit.
+  cie->version = 0;
+  cie->augmentation.clear();
+  cie->code_alignment_factor = 0;
+  cie->data_alignment_factor = 0;
+  cie->return_address_register = 0;
+  cie->has_z_augmentation = false;
+  cie->pointer_encoding = DW_EH_PE_absptr;
+  cie->instructions = 0;
+
+  // Parse the version number.
+  if (cie->end - cursor < 1)
+    return ReportIncomplete(cie);
+  cie->version = reader_->ReadOneByte(cursor);
+  cursor++;
+
+  // If we don't recognize the version, we can't parse any more fields of the
+  // CIE. For DWARF CFI, we handle versions 1 through 3 (there was never a
+  // version 2 of CFI data). For .eh_frame, we handle versions 1 and 3 as well;
+  // the difference between those versions seems to be the same as for
+  // .debug_frame.
+  if (cie->version < 1 || cie->version > 3) {
+    reporter_->UnrecognizedVersion(cie->offset, cie->version);
+    return false;
+  }
+
+  const char *augmentation_start = cursor;
+  const void *augmentation_end =
+      memchr(augmentation_start, '\0', cie->end - augmentation_start);
+  if (! augmentation_end) return ReportIncomplete(cie);
+  cursor = static_cast<const char *>(augmentation_end);
+  cie->augmentation = string(augmentation_start,
+                                  cursor - augmentation_start);
+  // Skip the terminating '\0'.
+  cursor++;
+
+  // Is this CFI augmented?
+  if (!cie->augmentation.empty()) {
+    // Is it an augmentation we recognize?
+    if (cie->augmentation[0] == DW_Z_augmentation_start) {
+      // Linux C++ ABI 'z' augmentation, used for exception handling data.
+      cie->has_z_augmentation = true;
+    } else {
+      // Not an augmentation we recognize. Augmentations can have arbitrary
+      // effects on the form of rest of the content, so we have to give up.
+      reporter_->UnrecognizedAugmentation(cie->offset, cie->augmentation);
+      return false;
+    }
+  }
+
+  // Parse the code alignment factor.
+  cie->code_alignment_factor = reader_->ReadUnsignedLEB128(cursor, &len);
+  if (size_t(cie->end - cursor) < len) return ReportIncomplete(cie);
+  cursor += len;
+  
+  // Parse the data alignment factor.
+  cie->data_alignment_factor = reader_->ReadSignedLEB128(cursor, &len);
+  if (size_t(cie->end - cursor) < len) return ReportIncomplete(cie);
+  cursor += len;
+  
+  // Parse the return address register. This is a ubyte in version 1, and
+  // a ULEB128 in version 3.
+  if (cie->version == 1) {
+    if (cursor >= cie->end) return ReportIncomplete(cie);
+    cie->return_address_register = uint8(*cursor++);
+  } else {
+    cie->return_address_register = reader_->ReadUnsignedLEB128(cursor, &len);
+    if (size_t(cie->end - cursor) < len) return ReportIncomplete(cie);
+    cursor += len;
+  }
+
+  // If we have a 'z' augmentation string, find the augmentation data and
+  // use the augmentation string to parse it.
+  if (cie->has_z_augmentation) {
+    uint64_t data_size = reader_->ReadUnsignedLEB128(cursor, &len);
+    if (size_t(cie->end - cursor) < len + data_size)
+      return ReportIncomplete(cie);
+    cursor += len;
+    const char *data = cursor;
+    cursor += data_size;
+    const char *data_end = cursor;
+
+    cie->has_z_lsda = false;
+    cie->has_z_personality = false;
+    cie->has_z_signal_frame = false;
+
+    // Walk the augmentation string, and extract values from the
+    // augmentation data as the string directs.
+    for (size_t i = 1; i < cie->augmentation.size(); i++) {
+      switch (cie->augmentation[i]) {
+        case DW_Z_has_LSDA:
+          // The CIE's augmentation data holds the language-specific data
+          // area pointer's encoding, and the FDE's augmentation data holds
+          // the pointer itself.
+          cie->has_z_lsda = true;
+          // Fetch the LSDA encoding from the augmentation data.
+          if (data >= data_end) return ReportIncomplete(cie);
+          cie->lsda_encoding = DwarfPointerEncoding(*data++);
+          if (!reader_->ValidEncoding(cie->lsda_encoding)) {
+            reporter_->InvalidPointerEncoding(cie->offset, cie->lsda_encoding);
+            return false;
+          }
+          // Don't check if the encoding is usable here --- we haven't
+          // read the FDE's fields yet, so we're not prepared for
+          // DW_EH_PE_funcrel, although that's a fine encoding for the
+          // LSDA to use, since it appears in the FDE.
+          break;
+
+        case DW_Z_has_personality_routine:
+          // The CIE's augmentation data holds the personality routine
+          // pointer's encoding, followed by the pointer itself.
+          cie->has_z_personality = true;
+          // Fetch the personality routine pointer's encoding from the
+          // augmentation data.
+          if (data >= data_end) return ReportIncomplete(cie);
+          cie->personality_encoding = DwarfPointerEncoding(*data++);
+          if (!reader_->ValidEncoding(cie->personality_encoding)) {
+            reporter_->InvalidPointerEncoding(cie->offset,
+                                              cie->personality_encoding);
+            return false;
+          }
+          if (!reader_->UsableEncoding(cie->personality_encoding)) {
+            reporter_->UnusablePointerEncoding(cie->offset,
+                                               cie->personality_encoding);
+            return false;
+          }
+          // Fetch the personality routine's pointer itself from the data.
+          cie->personality_address =
+            reader_->ReadEncodedPointer(data, cie->personality_encoding,
+                                        &len);
+          if (len > size_t(data_end - data))
+            return ReportIncomplete(cie);
+          data += len;
+          break;
+
+        case DW_Z_has_FDE_address_encoding:
+          // The CIE's augmentation data holds the pointer encoding to use
+          // for addresses in the FDE.
+          if (data >= data_end) return ReportIncomplete(cie);
+          cie->pointer_encoding = DwarfPointerEncoding(*data++);
+          if (!reader_->ValidEncoding(cie->pointer_encoding)) {
+            reporter_->InvalidPointerEncoding(cie->offset,
+                                              cie->pointer_encoding);
+            return false;
+          }
+          if (!reader_->UsableEncoding(cie->pointer_encoding)) {
+            reporter_->UnusablePointerEncoding(cie->offset,
+                                               cie->pointer_encoding);
+            return false;
+          }
+          break;
+
+        case DW_Z_is_signal_trampoline:
+          // Frames using this CIE are signal delivery frames.
+          cie->has_z_signal_frame = true;
+          break;
+
+        default:
+          // An augmentation we don't recognize.
+          reporter_->UnrecognizedAugmentation(cie->offset, cie->augmentation);
+          return false;
+      }
+    }
+  }
+
+  // The CIE's instructions start here.
+  cie->instructions = cursor;
+
+  return true;
+}
+  
+bool CallFrameInfo::ReadFDEFields(FDE *fde) {
+  const char *cursor = fde->fields;
+  size_t size;
+
+  fde->address = reader_->ReadEncodedPointer(cursor, fde->cie->pointer_encoding,
+                                             &size);
+  if (size > size_t(fde->end - cursor))
+    return ReportIncomplete(fde);
+  cursor += size;
+  reader_->SetFunctionBase(fde->address);
+
+  // For the length, we strip off the upper nybble of the encoding used for
+  // the starting address.
+  DwarfPointerEncoding length_encoding =
+    DwarfPointerEncoding(fde->cie->pointer_encoding & 0x0f);
+  fde->size = reader_->ReadEncodedPointer(cursor, length_encoding, &size);
+  if (size > size_t(fde->end - cursor))
+    return ReportIncomplete(fde);
+  cursor += size;
+
+  // If the CIE has a 'z' augmentation string, then augmentation data
+  // appears here.
+  if (fde->cie->has_z_augmentation) {
+    uint64_t data_size = reader_->ReadUnsignedLEB128(cursor, &size);
+    if (size_t(fde->end - cursor) < size + data_size)
+      return ReportIncomplete(fde);
+    cursor += size;
+    
+    // In the abstract, we should walk the augmentation string, and extract
+    // items from the FDE's augmentation data as we encounter augmentation
+    // string characters that specify their presence: the ordering of items
+    // in the augmentation string determines the arrangement of values in
+    // the augmentation data.
+    //
+    // In practice, there's only ever one value in FDE augmentation data
+    // that we support --- the LSDA pointer --- and we have to bail if we
+    // see any unrecognized augmentation string characters. So if there is
+    // anything here at all, we know what it is, and where it starts.
+    if (fde->cie->has_z_lsda) {
+      // Check whether the LSDA's pointer encoding is usable now: only once
+      // we've parsed the FDE's starting address do we call reader_->
+      // SetFunctionBase, so that the DW_EH_PE_funcrel encoding becomes
+      // usable.
+      if (!reader_->UsableEncoding(fde->cie->lsda_encoding)) {
+        reporter_->UnusablePointerEncoding(fde->cie->offset,
+                                           fde->cie->lsda_encoding);
+        return false;
+      }
+
+      fde->lsda_address =
+        reader_->ReadEncodedPointer(cursor, fde->cie->lsda_encoding, &size);
+      if (size > data_size)
+        return ReportIncomplete(fde);
+      // Ideally, we would also complain here if there were unconsumed
+      // augmentation data.
+    }
+
+    cursor += data_size;
+  }
+
+  // The FDE's instructions start after those.
+  fde->instructions = cursor;
+
+  return true;
+}
+  
+bool CallFrameInfo::Start() {
+  const char *buffer_end = buffer_ + buffer_length_;
+  const char *cursor;
+  bool all_ok = true;
+  const char *entry_end;
+  bool ok;
+
+  // Traverse all the entries in buffer_, skipping CIEs and offering
+  // FDEs to the handler.
+  for (cursor = buffer_; cursor < buffer_end;
+       cursor = entry_end, all_ok = all_ok && ok) {
+    FDE fde;
+
+    // Make it easy to skip this entry with 'continue': assume that
+    // things are not okay until we've checked all the data, and
+    // prepare the address of the next entry.
+    ok = false;
+
+    // Read the entry's prologue.
+    if (!ReadEntryPrologue(cursor, &fde)) {
+      if (!fde.end) {
+        // If we couldn't even figure out this entry's extent, then we
+        // must stop processing entries altogether.
+        all_ok = false;
+        break;
+      }
+      entry_end = fde.end;
+      continue;
+    }
+
+    // The next iteration picks up after this entry.
+    entry_end = fde.end;
+
+    // Did we see an .eh_frame terminating mark?
+    if (fde.kind == kTerminator) {
+      // If there appears to be more data left in the section after the
+      // terminating mark, warn the user. But this is just a warning;
+      // we leave all_ok true.
+      if (fde.end < buffer_end) reporter_->EarlyEHTerminator(fde.offset);
+      break;
+    }
+
+    // In this loop, we skip CIEs. We only parse them fully when we
+    // parse an FDE that refers to them. This limits our memory
+    // consumption (beyond the buffer itself) to that needed to
+    // process the largest single entry.
+    if (fde.kind != kFDE) {
+      ok = true;
+      continue;
+    }
+
+    // Validate the CIE pointer.
+    if (fde.id > buffer_length_) {
+      reporter_->CIEPointerOutOfRange(fde.offset, fde.id);
+      continue;
+    }
+      
+    CIE cie;
+
+    // Parse this FDE's CIE header.
+    if (!ReadEntryPrologue(buffer_ + fde.id, &cie))
+      continue;
+    // This had better be an actual CIE.
+    if (cie.kind != kCIE) {
+      reporter_->BadCIEId(fde.offset, fde.id);
+      continue;
+    }
+    if (!ReadCIEFields(&cie))
+      continue;
+
+    // We now have the values that govern both the CIE and the FDE.
+    cie.cie = &cie;
+    fde.cie = &cie;
+
+    // Parse the FDE's header.
+    if (!ReadFDEFields(&fde))
+      continue;
+
+    // Call Entry to ask the consumer if they're interested.
+    if (!handler_->Entry(fde.offset, fde.address, fde.size,
+                         cie.version, cie.augmentation,
+                         cie.return_address_register)) {
+      // The handler isn't interested in this entry. That's not an error.
+      ok = true;
+      continue;
+    }
+                         
+    if (cie.has_z_augmentation) {
+      // Report the personality routine address, if we have one.
+      if (cie.has_z_personality) {
+        if (!handler_
+            ->PersonalityRoutine(cie.personality_address,
+                                 IsIndirectEncoding(cie.personality_encoding)))
+          continue;
+      }
+
+      // Report the language-specific data area address, if we have one.
+      if (cie.has_z_lsda) {
+        if (!handler_
+            ->LanguageSpecificDataArea(fde.lsda_address,
+                                       IsIndirectEncoding(cie.lsda_encoding)))
+          continue;
+      }
+
+      // If this is a signal-handling frame, report that.
+      if (cie.has_z_signal_frame) {
+        if (!handler_->SignalHandler())
+          continue;
+      }
+    }
+
+    // Interpret the CIE's instructions, and then the FDE's instructions.
+    State state(reader_, handler_, reporter_, fde.address);
+    ok = state.InterpretCIE(cie) && state.InterpretFDE(fde);
+
+    // Tell the ByteReader that the function start address from the
+    // FDE header is no longer valid.
+    reader_->ClearFunctionBase();
+
+    // Report the end of the entry.
+    handler_->End();
+  }
+
+  return all_ok;
+}
+
+const char *CallFrameInfo::KindName(EntryKind kind) {
+  if (kind == CallFrameInfo::kUnknown)
+    return "entry";
+  else if (kind == CallFrameInfo::kCIE)
+    return "common information entry";
+  else if (kind == CallFrameInfo::kFDE)
+    return "frame description entry";
+  else {
+    assert (kind == CallFrameInfo::kTerminator);
+    return ".eh_frame sequence terminator";
+  }
+}
+
+bool CallFrameInfo::ReportIncomplete(Entry *entry) {
+  reporter_->Incomplete(entry->offset, entry->kind);
+  return false;
+}
+
+void CallFrameInfo::Reporter::Incomplete(uint64 offset,
+                                         CallFrameInfo::EntryKind kind) {
+  fprintf(stderr,
+          "%s: CFI %s at offset 0x%llx in '%s': entry ends early\n",
+          filename_.c_str(), CallFrameInfo::KindName(kind), offset,
+          section_.c_str());
+}
+
+void CallFrameInfo::Reporter::EarlyEHTerminator(uint64 offset) {
+  fprintf(stderr,
+          "%s: CFI at offset 0x%llx in '%s': saw end-of-data marker"
+          " before end of section contents\n",
+          filename_.c_str(), offset, section_.c_str());
+}
+
+void CallFrameInfo::Reporter::CIEPointerOutOfRange(uint64 offset,
+                                                   uint64 cie_offset) {
+  fprintf(stderr,
+          "%s: CFI frame description entry at offset 0x%llx in '%s':"
+          " CIE pointer is out of range: 0x%llx\n",
+          filename_.c_str(), offset, section_.c_str(), cie_offset);
+}
+
+void CallFrameInfo::Reporter::BadCIEId(uint64 offset, uint64 cie_offset) {
+  fprintf(stderr,
+          "%s: CFI frame description entry at offset 0x%llx in '%s':"
+          " CIE pointer does not point to a CIE: 0x%llx\n",
+          filename_.c_str(), offset, section_.c_str(), cie_offset);
+}
+
+void CallFrameInfo::Reporter::UnrecognizedVersion(uint64 offset, int version) {
+  fprintf(stderr,
+          "%s: CFI frame description entry at offset 0x%llx in '%s':"
+          " CIE specifies unrecognized version: %d\n",
+          filename_.c_str(), offset, section_.c_str(), version);
+}
+
+void CallFrameInfo::Reporter::UnrecognizedAugmentation(uint64 offset,
+                                                       const string &aug) {
+  fprintf(stderr,
+          "%s: CFI frame description entry at offset 0x%llx in '%s':"
+          " CIE specifies unrecognized augmentation: '%s'\n",
+          filename_.c_str(), offset, section_.c_str(), aug.c_str());
+}
+
+void CallFrameInfo::Reporter::InvalidPointerEncoding(uint64 offset,
+                                                     uint8 encoding) {
+  fprintf(stderr,
+          "%s: CFI common information entry at offset 0x%llx in '%s':"
+          " 'z' augmentation specifies invalid pointer encoding: 0x%02x\n",
+          filename_.c_str(), offset, section_.c_str(), encoding);
+}
+
+void CallFrameInfo::Reporter::UnusablePointerEncoding(uint64 offset,
+                                                      uint8 encoding) {
+  fprintf(stderr,
+          "%s: CFI common information entry at offset 0x%llx in '%s':"
+          " 'z' augmentation specifies a pointer encoding for which"
+          " we have no base address: 0x%02x\n",
+          filename_.c_str(), offset, section_.c_str(), encoding);
+}
+
+void CallFrameInfo::Reporter::RestoreInCIE(uint64 offset, uint64 insn_offset) {
+  fprintf(stderr,
+          "%s: CFI common information entry at offset 0x%llx in '%s':"
+          " the DW_CFA_restore instruction at offset 0x%llx"
+          " cannot be used in a common information entry\n",
+          filename_.c_str(), offset, section_.c_str(), insn_offset);
+}
+
+void CallFrameInfo::Reporter::BadInstruction(uint64 offset,
+                                             CallFrameInfo::EntryKind kind,
+                                             uint64 insn_offset) {
+  fprintf(stderr,
+          "%s: CFI %s at offset 0x%llx in section '%s':"
+          " the instruction at offset 0x%llx is unrecognized\n",
+          filename_.c_str(), CallFrameInfo::KindName(kind),
+          offset, section_.c_str(), insn_offset);
+}
+
+void CallFrameInfo::Reporter::NoCFARule(uint64 offset,
+                                        CallFrameInfo::EntryKind kind,
+                                        uint64 insn_offset) {
+  fprintf(stderr,
+          "%s: CFI %s at offset 0x%llx in section '%s':"
+          " the instruction at offset 0x%llx assumes that a CFA rule has"
+          " been set, but none has been set\n",
+          filename_.c_str(), CallFrameInfo::KindName(kind), offset,
+          section_.c_str(), insn_offset);
+}
+
+void CallFrameInfo::Reporter::EmptyStateStack(uint64 offset,
+                                              CallFrameInfo::EntryKind kind,
+                                              uint64 insn_offset) {
+  fprintf(stderr,
+          "%s: CFI %s at offset 0x%llx in section '%s':"
+          " the DW_CFA_restore_state instruction at offset 0x%llx"
+          " should pop a saved state from the stack, but the stack is empty\n",
+          filename_.c_str(), CallFrameInfo::KindName(kind), offset,
+          section_.c_str(), insn_offset);
+}
+
+void CallFrameInfo::Reporter::ClearingCFARule(uint64 offset,
+                                              CallFrameInfo::EntryKind kind,
+                                              uint64 insn_offset) {
+  fprintf(stderr,
+          "%s: CFI %s at offset 0x%llx in section '%s':"
+          " the DW_CFA_restore_state instruction at offset 0x%llx"
+          " would clear the CFA rule in effect\n",
+          filename_.c_str(), CallFrameInfo::KindName(kind), offset,
+          section_.c_str(), insn_offset);
+}
+
+}  // namespace dwarf2reader
diff --git a/google-breakpad/src/common/dwarf/dwarf2reader.h b/google-breakpad/src/common/dwarf/dwarf2reader.h
new file mode 100644
index 0000000..8824bf9
--- /dev/null
+++ b/google-breakpad/src/common/dwarf/dwarf2reader.h
@@ -0,0 +1,1050 @@
+// -*- mode: C++ -*-
+
+// Copyright (c) 2010 Google Inc. All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// CFI reader author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// This file contains definitions related to the DWARF2/3 reader and
+// it's handler interfaces.
+// The DWARF2/3 specification can be found at
+// http://dwarf.freestandards.org and should be considered required
+// reading if you wish to modify the implementation.
+// Only a cursory attempt is made to explain terminology that is
+// used here, as it is much better explained in the standard documents
+#ifndef COMMON_DWARF_DWARF2READER_H__
+#define COMMON_DWARF_DWARF2READER_H__
+
+#include <list>
+#include <map>
+#include <string>
+#include <utility>
+#include <vector>
+
+#include "common/dwarf/bytereader.h"
+#include "common/dwarf/dwarf2enums.h"
+#include "common/dwarf/types.h"
+#include "common/using_std_string.h"
+
+namespace dwarf2reader {
+struct LineStateMachine;
+class Dwarf2Handler;
+class LineInfoHandler;
+
+// This maps from a string naming a section to a pair containing a
+// the data for the section, and the size of the section.
+typedef std::map<string, std::pair<const char*, uint64> > SectionMap;
+typedef std::list<std::pair<enum DwarfAttribute, enum DwarfForm> >
+    AttributeList;
+typedef AttributeList::iterator AttributeIterator;
+typedef AttributeList::const_iterator ConstAttributeIterator;
+
+struct LineInfoHeader {
+  uint64 total_length;
+  uint16 version;
+  uint64 prologue_length;
+  uint8 min_insn_length; // insn stands for instructin
+  bool default_is_stmt; // stmt stands for statement
+  int8 line_base;
+  uint8 line_range;
+  uint8 opcode_base;
+  // Use a pointer so that signalsafe_addr2line is able to use this structure
+  // without heap allocation problem.
+  std::vector<unsigned char> *std_opcode_lengths;
+};
+
+class LineInfo {
+ public:
+
+  // Initializes a .debug_line reader. Buffer and buffer length point
+  // to the beginning and length of the line information to read.
+  // Reader is a ByteReader class that has the endianness set
+  // properly.
+  LineInfo(const char* buffer_, uint64 buffer_length,
+           ByteReader* reader, LineInfoHandler* handler);
+
+  virtual ~LineInfo() {
+    if (header_.std_opcode_lengths) {
+      delete header_.std_opcode_lengths;
+    }
+  }
+
+  // Start processing line info, and calling callbacks in the handler.
+  // Consumes the line number information for a single compilation unit.
+  // Returns the number of bytes processed.
+  uint64 Start();
+
+  // Process a single line info opcode at START using the state
+  // machine at LSM.  Return true if we should define a line using the
+  // current state of the line state machine.  Place the length of the
+  // opcode in LEN.
+  // If LSM_PASSES_PC is non-NULL, this function also checks if the lsm
+  // passes the address of PC. In other words, LSM_PASSES_PC will be
+  // set to true, if the following condition is met.
+  //
+  // lsm's old address < PC <= lsm's new address
+  static bool ProcessOneOpcode(ByteReader* reader,
+                               LineInfoHandler* handler,
+                               const struct LineInfoHeader &header,
+                               const char* start,
+                               struct LineStateMachine* lsm,
+                               size_t* len,
+                               uintptr pc,
+                               bool *lsm_passes_pc);
+
+ private:
+  // Reads the DWARF2/3 header for this line info.
+  void ReadHeader();
+
+  // Reads the DWARF2/3 line information
+  void ReadLines();
+
+  // The associated handler to call processing functions in
+  LineInfoHandler* handler_;
+
+  // The associated ByteReader that handles endianness issues for us
+  ByteReader* reader_;
+
+  // A DWARF2/3 line info header.  This is not the same size as
+  // in the actual file, as the one in the file may have a 32 bit or
+  // 64 bit lengths
+
+  struct LineInfoHeader header_;
+
+  // buffer is the buffer for our line info, starting at exactly where
+  // the line info to read is.  after_header is the place right after
+  // the end of the line information header.
+  const char* buffer_;
+  uint64 buffer_length_;
+  const char* after_header_;
+};
+
+// This class is the main interface between the line info reader and
+// the client.  The virtual functions inside this get called for
+// interesting events that happen during line info reading.  The
+// default implementation does nothing
+
+class LineInfoHandler {
+ public:
+  LineInfoHandler() { }
+
+  virtual ~LineInfoHandler() { }
+
+  // Called when we define a directory.  NAME is the directory name,
+  // DIR_NUM is the directory number
+  virtual void DefineDir(const string& name, uint32 dir_num) { }
+
+  // Called when we define a filename. NAME is the filename, FILE_NUM
+  // is the file number which is -1 if the file index is the next
+  // index after the last numbered index (this happens when files are
+  // dynamically defined by the line program), DIR_NUM is the
+  // directory index for the directory name of this file, MOD_TIME is
+  // the modification time of the file, and LENGTH is the length of
+  // the file
+  virtual void DefineFile(const string& name, int32 file_num,
+                          uint32 dir_num, uint64 mod_time,
+                          uint64 length) { }
+
+  // Called when the line info reader has a new line, address pair
+  // ready for us. ADDRESS is the address of the code, LENGTH is the
+  // length of its machine code in bytes, FILE_NUM is the file number
+  // containing the code, LINE_NUM is the line number in that file for
+  // the code, and COLUMN_NUM is the column number the code starts at,
+  // if we know it (0 otherwise).
+  virtual void AddLine(uint64 address, uint64 length,
+                       uint32 file_num, uint32 line_num, uint32 column_num) { }
+};
+
+// The base of DWARF2/3 debug info is a DIE (Debugging Information
+// Entry.
+// DWARF groups DIE's into a tree and calls the root of this tree a
+// "compilation unit".  Most of the time, there is one compilation
+// unit in the .debug_info section for each file that had debug info
+// generated.
+// Each DIE consists of
+
+// 1. a tag specifying a thing that is being described (ie
+// DW_TAG_subprogram for functions, DW_TAG_variable for variables, etc
+// 2. attributes (such as DW_AT_location for location in memory,
+// DW_AT_name for name), and data for each attribute.
+// 3. A flag saying whether the DIE has children or not
+
+// In order to gain some amount of compression, the format of
+// each DIE (tag name, attributes and data forms for the attributes)
+// are stored in a separate table called the "abbreviation table".
+// This is done because a large number of DIEs have the exact same tag
+// and list of attributes, but different data for those attributes.
+// As a result, the .debug_info section is just a stream of data, and
+// requires reading of the .debug_abbrev section to say what the data
+// means.
+
+// As a warning to the user, it should be noted that the reason for
+// using absolute offsets from the beginning of .debug_info is that
+// DWARF2/3 supports referencing DIE's from other DIE's by their offset
+// from either the current compilation unit start, *or* the beginning
+// of the .debug_info section.  This means it is possible to reference
+// a DIE in one compilation unit from a DIE in another compilation
+// unit.  This style of reference is usually used to eliminate
+// duplicated information that occurs across compilation
+// units, such as base types, etc.  GCC 3.4+ support this with
+// -feliminate-dwarf2-dups.  Other toolchains will sometimes do
+// duplicate elimination in the linker.
+
+class CompilationUnit {
+ public:
+
+  // Initialize a compilation unit.  This requires a map of sections,
+  // the offset of this compilation unit in the .debug_info section, a
+  // ByteReader, and a Dwarf2Handler class to call callbacks in.
+  CompilationUnit(const SectionMap& sections, uint64 offset,
+                  ByteReader* reader, Dwarf2Handler* handler);
+  virtual ~CompilationUnit() {
+    if (abbrevs_) delete abbrevs_;
+  }
+
+  // Begin reading a Dwarf2 compilation unit, and calling the
+  // callbacks in the Dwarf2Handler
+
+  // Return the full length of the compilation unit, including
+  // headers. This plus the starting offset passed to the constructor
+  // is the offset of the end of the compilation unit --- and the
+  // start of the next compilation unit, if there is one.
+  uint64 Start();
+
+ private:
+
+  // This struct represents a single DWARF2/3 abbreviation
+  // The abbreviation tells how to read a DWARF2/3 DIE, and consist of a
+  // tag and a list of attributes, as well as the data form of each attribute.
+  struct Abbrev {
+    uint64 number;
+    enum DwarfTag tag;
+    bool has_children;
+    AttributeList attributes;
+  };
+
+  // A DWARF2/3 compilation unit header.  This is not the same size as
+  // in the actual file, as the one in the file may have a 32 bit or
+  // 64 bit length.
+  struct CompilationUnitHeader {
+    uint64 length;
+    uint16 version;
+    uint64 abbrev_offset;
+    uint8 address_size;
+  } header_;
+
+  // Reads the DWARF2/3 header for this compilation unit.
+  void ReadHeader();
+
+  // Reads the DWARF2/3 abbreviations for this compilation unit
+  void ReadAbbrevs();
+
+  // Processes a single DIE for this compilation unit and return a new
+  // pointer just past the end of it
+  const char* ProcessDIE(uint64 dieoffset,
+                                  const char* start,
+                                  const Abbrev& abbrev);
+
+  // Processes a single attribute and return a new pointer just past the
+  // end of it
+  const char* ProcessAttribute(uint64 dieoffset,
+                                        const char* start,
+                                        enum DwarfAttribute attr,
+                                        enum DwarfForm form);
+
+  // Processes all DIEs for this compilation unit
+  void ProcessDIEs();
+
+  // Skips the die with attributes specified in ABBREV starting at
+  // START, and return the new place to position the stream to.
+  const char* SkipDIE(const char* start,
+                               const Abbrev& abbrev);
+
+  // Skips the attribute starting at START, with FORM, and return the
+  // new place to position the stream to.
+  const char* SkipAttribute(const char* start,
+                                     enum DwarfForm form);
+
+  // Offset from section start is the offset of this compilation unit
+  // from the beginning of the .debug_info section.
+  uint64 offset_from_section_start_;
+
+  // buffer is the buffer for our CU, starting at .debug_info + offset
+  // passed in from constructor.
+  // after_header points to right after the compilation unit header.
+  const char* buffer_;
+  uint64 buffer_length_;
+  const char* after_header_;
+
+  // The associated ByteReader that handles endianness issues for us
+  ByteReader* reader_;
+
+  // The map of sections in our file to buffers containing their data
+  const SectionMap& sections_;
+
+  // The associated handler to call processing functions in
+  Dwarf2Handler* handler_;
+
+  // Set of DWARF2/3 abbreviations for this compilation unit.  Indexed
+  // by abbreviation number, which means that abbrevs_[0] is not
+  // valid.
+  std::vector<Abbrev>* abbrevs_;
+
+  // String section buffer and length, if we have a string section.
+  // This is here to avoid doing a section lookup for strings in
+  // ProcessAttribute, which is in the hot path for DWARF2 reading.
+  const char* string_buffer_;
+  uint64 string_buffer_length_;
+};
+
+// This class is the main interface between the reader and the
+// client.  The virtual functions inside this get called for
+// interesting events that happen during DWARF2 reading.
+// The default implementation skips everything.
+
+class Dwarf2Handler {
+ public:
+  Dwarf2Handler() { }
+
+  virtual ~Dwarf2Handler() { }
+
+  // Start to process a compilation unit at OFFSET from the beginning of the
+  // .debug_info section. Return false if you would like to skip this
+  // compilation unit.
+  virtual bool StartCompilationUnit(uint64 offset, uint8 address_size,
+                                    uint8 offset_size, uint64 cu_length,
+                                    uint8 dwarf_version) { return false; }
+
+  // Start to process a DIE at OFFSET from the beginning of the .debug_info
+  // section. Return false if you would like to skip this DIE.
+  virtual bool StartDIE(uint64 offset, enum DwarfTag tag) { return false; }
+
+  // Called when we have an attribute with unsigned data to give to our
+  // handler. The attribute is for the DIE at OFFSET from the beginning of the
+  // .debug_info section. Its name is ATTR, its form is FORM, and its value is
+  // DATA.
+  virtual void ProcessAttributeUnsigned(uint64 offset,
+                                        enum DwarfAttribute attr,
+                                        enum DwarfForm form,
+                                        uint64 data) { }
+
+  // Called when we have an attribute with signed data to give to our handler.
+  // The attribute is for the DIE at OFFSET from the beginning of the
+  // .debug_info section. Its name is ATTR, its form is FORM, and its value is
+  // DATA.
+  virtual void ProcessAttributeSigned(uint64 offset,
+                                      enum DwarfAttribute attr,
+                                      enum DwarfForm form,
+                                      int64 data) { }
+
+  // Called when we have an attribute whose value is a reference to
+  // another DIE. The attribute belongs to the DIE at OFFSET from the
+  // beginning of the .debug_info section. Its name is ATTR, its form
+  // is FORM, and the offset of the DIE being referred to from the
+  // beginning of the .debug_info section is DATA.
+  virtual void ProcessAttributeReference(uint64 offset,
+                                         enum DwarfAttribute attr,
+                                         enum DwarfForm form,
+                                         uint64 data) { }
+
+  // Called when we have an attribute with a buffer of data to give to our
+  // handler. The attribute is for the DIE at OFFSET from the beginning of the
+  // .debug_info section. Its name is ATTR, its form is FORM, DATA points to
+  // the buffer's contents, and its length in bytes is LENGTH. The buffer is
+  // owned by the caller, not the callee, and may not persist for very long.
+  // If you want the data to be available later, it needs to be copied.
+  virtual void ProcessAttributeBuffer(uint64 offset,
+                                      enum DwarfAttribute attr,
+                                      enum DwarfForm form,
+                                      const char* data,
+                                      uint64 len) { }
+
+  // Called when we have an attribute with string data to give to our handler.
+  // The attribute is for the DIE at OFFSET from the beginning of the
+  // .debug_info section. Its name is ATTR, its form is FORM, and its value is
+  // DATA.
+  virtual void ProcessAttributeString(uint64 offset,
+                                      enum DwarfAttribute attr,
+                                      enum DwarfForm form,
+                                      const string& data) { }
+
+  // Called when we have an attribute whose value is the 64-bit signature
+  // of a type unit in the .debug_types section. OFFSET is the offset of
+  // the DIE whose attribute we're reporting. ATTR and FORM are the
+  // attribute's name and form. SIGNATURE is the type unit's signature.
+  virtual void ProcessAttributeSignature(uint64 offset,
+                                         enum DwarfAttribute attr,
+                                         enum DwarfForm form,
+                                         uint64 signature) { }
+
+  // Called when finished processing the DIE at OFFSET.
+  // Because DWARF2/3 specifies a tree of DIEs, you may get starts
+  // before ends of the previous DIE, as we process children before
+  // ending the parent.
+  virtual void EndDIE(uint64 offset) { }
+
+};
+
+// This class is a reader for DWARF's Call Frame Information.  CFI
+// describes how to unwind stack frames --- even for functions that do
+// not follow fixed conventions for saving registers, whose frame size
+// varies as they execute, etc.
+//
+// CFI describes, at each machine instruction, how to compute the
+// stack frame's base address, how to find the return address, and
+// where to find the saved values of the caller's registers (if the
+// callee has stashed them somewhere to free up the registers for its
+// own use).
+//
+// For example, suppose we have a function whose machine code looks
+// like this (imagine an assembly language that looks like C, for a
+// machine with 32-bit registers, and a stack that grows towards lower
+// addresses):
+//
+// func:                                ; entry point; return address at sp
+// func+0:      sp = sp - 16            ; allocate space for stack frame
+// func+1:      sp[12] = r0             ; save r0 at sp+12
+// ...                                  ; other code, not frame-related
+// func+10:     sp -= 4; *sp = x        ; push some x on the stack
+// ...                                  ; other code, not frame-related
+// func+20:     r0 = sp[16]             ; restore saved r0
+// func+21:     sp += 20                ; pop whole stack frame
+// func+22:     pc = *sp; sp += 4       ; pop return address and jump to it
+//
+// DWARF CFI is (a very compressed representation of) a table with a
+// row for each machine instruction address and a column for each
+// register showing how to restore it, if possible.
+//
+// A special column named "CFA", for "Canonical Frame Address", tells how
+// to compute the base address of the frame; registers' entries may
+// refer to the CFA in describing where the registers are saved.
+//
+// Another special column, named "RA", represents the return address.
+//
+// For example, here is a complete (uncompressed) table describing the
+// function above:
+// 
+//     insn      cfa    r0      r1 ...  ra
+//     =======================================
+//     func+0:   sp                     cfa[0]
+//     func+1:   sp+16                  cfa[0] 
+//     func+2:   sp+16  cfa[-4]         cfa[0]
+//     func+11:  sp+20  cfa[-4]         cfa[0]
+//     func+21:  sp+20                  cfa[0]
+//     func+22:  sp                     cfa[0]
+//
+// Some things to note here:
+//
+// - Each row describes the state of affairs *before* executing the
+//   instruction at the given address.  Thus, the row for func+0
+//   describes the state before we allocate the stack frame.  In the
+//   next row, the formula for computing the CFA has changed,
+//   reflecting that allocation.
+//
+// - The other entries are written in terms of the CFA; this allows
+//   them to remain unchanged as the stack pointer gets bumped around.
+//   For example, the rule for recovering the return address (the "ra"
+//   column) remains unchanged throughout the function, even as the
+//   stack pointer takes on three different offsets from the return
+//   address.
+//
+// - Although we haven't shown it, most calling conventions designate
+//   "callee-saves" and "caller-saves" registers. The callee must
+//   preserve the values of callee-saves registers; if it uses them,
+//   it must save their original values somewhere, and restore them
+//   before it returns. In contrast, the callee is free to trash
+//   caller-saves registers; if the callee uses these, it will
+//   probably not bother to save them anywhere, and the CFI will
+//   probably mark their values as "unrecoverable".
+//
+//   (However, since the caller cannot assume the callee was going to
+//   save them, caller-saves registers are probably dead in the caller
+//   anyway, so compilers usually don't generate CFA for caller-saves
+//   registers.)
+// 
+// - Exactly where the CFA points is a matter of convention that
+//   depends on the architecture and ABI in use. In the example, the
+//   CFA is the value the stack pointer had upon entry to the
+//   function, pointing at the saved return address. But on the x86,
+//   the call frame information generated by GCC follows the
+//   convention that the CFA is the address *after* the saved return
+//   address.
+//
+//   But by definition, the CFA remains constant throughout the
+//   lifetime of the frame. This makes it a useful value for other
+//   columns to refer to. It is also gives debuggers a useful handle
+//   for identifying a frame.
+//
+// If you look at the table above, you'll notice that a given entry is
+// often the same as the one immediately above it: most instructions
+// change only one or two aspects of the stack frame, if they affect
+// it at all. The DWARF format takes advantage of this fact, and
+// reduces the size of the data by mentioning only the addresses and
+// columns at which changes take place. So for the above, DWARF CFI
+// data would only actually mention the following:
+// 
+//     insn      cfa    r0      r1 ...  ra
+//     =======================================
+//     func+0:   sp                     cfa[0]
+//     func+1:   sp+16
+//     func+2:          cfa[-4]
+//     func+11:  sp+20
+//     func+21:         r0
+//     func+22:  sp            
+//
+// In fact, this is the way the parser reports CFI to the consumer: as
+// a series of statements of the form, "At address X, column Y changed
+// to Z," and related conventions for describing the initial state.
+//
+// Naturally, it would be impractical to have to scan the entire
+// program's CFI, noting changes as we go, just to recover the
+// unwinding rules in effect at one particular instruction. To avoid
+// this, CFI data is grouped into "entries", each of which covers a
+// specified range of addresses and begins with a complete statement
+// of the rules for all recoverable registers at that starting
+// address. Each entry typically covers a single function.
+//
+// Thus, to compute the contents of a given row of the table --- that
+// is, rules for recovering the CFA, RA, and registers at a given
+// instruction --- the consumer should find the entry that covers that
+// instruction's address, start with the initial state supplied at the
+// beginning of the entry, and work forward until it has processed all
+// the changes up to and including those for the present instruction.
+//
+// There are seven kinds of rules that can appear in an entry of the
+// table:
+//
+// - "undefined": The given register is not preserved by the callee;
+//   its value cannot be recovered.
+//
+// - "same value": This register has the same value it did in the callee.
+//
+// - offset(N): The register is saved at offset N from the CFA.
+//
+// - val_offset(N): The value the register had in the caller is the
+//   CFA plus offset N. (This is usually only useful for describing
+//   the stack pointer.)
+//
+// - register(R): The register's value was saved in another register R.
+//
+// - expression(E): Evaluating the DWARF expression E using the
+//   current frame's registers' values yields the address at which the
+//   register was saved.
+//
+// - val_expression(E): Evaluating the DWARF expression E using the
+//   current frame's registers' values yields the value the register
+//   had in the caller.
+
+class CallFrameInfo {
+ public:
+  // The different kinds of entries one finds in CFI. Used internally,
+  // and for error reporting.
+  enum EntryKind { kUnknown, kCIE, kFDE, kTerminator };
+
+  // The handler class to which the parser hands the parsed call frame
+  // information.  Defined below.
+  class Handler;
+
+  // A reporter class, which CallFrameInfo uses to report errors
+  // encountered while parsing call frame information.  Defined below.
+  class Reporter;
+
+  // Create a DWARF CFI parser. BUFFER points to the contents of the
+  // .debug_frame section to parse; BUFFER_LENGTH is its length in bytes.
+  // REPORTER is an error reporter the parser should use to report
+  // problems. READER is a ByteReader instance that has the endianness and
+  // address size set properly. Report the data we find to HANDLER.
+  //
+  // This class can also parse Linux C++ exception handling data, as found
+  // in '.eh_frame' sections. This data is a variant of DWARF CFI that is
+  // placed in loadable segments so that it is present in the program's
+  // address space, and is interpreted by the C++ runtime to search the
+  // call stack for a handler interested in the exception being thrown,
+  // actually pop the frames, and find cleanup code to run.
+  //
+  // There are two differences between the call frame information described
+  // in the DWARF standard and the exception handling data Linux places in
+  // the .eh_frame section:
+  //
+  // - Exception handling data uses uses a different format for call frame
+  //   information entry headers. The distinguished CIE id, the way FDEs
+  //   refer to their CIEs, and the way the end of the series of entries is
+  //   determined are all slightly different.
+  //
+  //   If the constructor's EH_FRAME argument is true, then the
+  //   CallFrameInfo parses the entry headers as Linux C++ exception
+  //   handling data. If EH_FRAME is false or omitted, the CallFrameInfo
+  //   parses standard DWARF call frame information.
+  //
+  // - Linux C++ exception handling data uses CIE augmentation strings
+  //   beginning with 'z' to specify the presence of additional data after
+  //   the CIE and FDE headers and special encodings used for addresses in
+  //   frame description entries.
+  //
+  //   CallFrameInfo can handle 'z' augmentations in either DWARF CFI or
+  //   exception handling data if you have supplied READER with the base
+  //   addresses needed to interpret the pointer encodings that 'z'
+  //   augmentations can specify. See the ByteReader interface for details
+  //   about the base addresses. See the CallFrameInfo::Handler interface
+  //   for details about the additional information one might find in
+  //   'z'-augmented data.
+  //
+  // Thus:
+  //
+  // - If you are parsing standard DWARF CFI, as found in a .debug_frame
+  //   section, you should pass false for the EH_FRAME argument, or omit
+  //   it, and you need not worry about providing READER with the
+  //   additional base addresses.
+  //
+  // - If you want to parse Linux C++ exception handling data from a
+  //   .eh_frame section, you should pass EH_FRAME as true, and call
+  //   READER's Set*Base member functions before calling our Start method.
+  //
+  // - If you want to parse DWARF CFI that uses the 'z' augmentations
+  //   (although I don't think any toolchain ever emits such data), you
+  //   could pass false for EH_FRAME, but call READER's Set*Base members.
+  //
+  // The extensions the Linux C++ ABI makes to DWARF for exception
+  // handling are described here, rather poorly:
+  // http://refspecs.linux-foundation.org/LSB_4.0.0/LSB-Core-generic/LSB-Core-generic/dwarfext.html
+  // http://refspecs.linux-foundation.org/LSB_4.0.0/LSB-Core-generic/LSB-Core-generic/ehframechpt.html
+  // 
+  // The mechanics of C++ exception handling, personality routines,
+  // and language-specific data areas are described here, rather nicely:
+  // http://www.codesourcery.com/public/cxx-abi/abi-eh.html
+  CallFrameInfo(const char *buffer, size_t buffer_length,
+                ByteReader *reader, Handler *handler, Reporter *reporter,
+                bool eh_frame = false)
+      : buffer_(buffer), buffer_length_(buffer_length),
+        reader_(reader), handler_(handler), reporter_(reporter),
+        eh_frame_(eh_frame) { }
+
+  ~CallFrameInfo() { }
+
+  // Parse the entries in BUFFER, reporting what we find to HANDLER.
+  // Return true if we reach the end of the section successfully, or
+  // false if we encounter an error.
+  bool Start();
+
+  // Return the textual name of KIND. For error reporting.
+  static const char *KindName(EntryKind kind);
+
+ private:
+
+  struct CIE;
+
+  // A CFI entry, either an FDE or a CIE.
+  struct Entry {
+    // The starting offset of the entry in the section, for error
+    // reporting.
+    size_t offset;
+
+    // The start of this entry in the buffer.
+    const char *start;
+    
+    // Which kind of entry this is.
+    //
+    // We want to be able to use this for error reporting even while we're
+    // in the midst of parsing. Error reporting code may assume that kind,
+    // offset, and start fields are valid, although kind may be kUnknown.
+    EntryKind kind;
+
+    // The end of this entry's common prologue (initial length and id), and
+    // the start of this entry's kind-specific fields.
+    const char *fields;
+
+    // The start of this entry's instructions.
+    const char *instructions;
+
+    // The address past the entry's last byte in the buffer. (Note that
+    // since offset points to the entry's initial length field, and the
+    // length field is the number of bytes after that field, this is not
+    // simply buffer_ + offset + length.)
+    const char *end;
+
+    // For both DWARF CFI and .eh_frame sections, this is the CIE id in a
+    // CIE, and the offset of the associated CIE in an FDE.
+    uint64 id;
+
+    // The CIE that applies to this entry, if we've parsed it. If this is a
+    // CIE, then this field points to this structure.
+    CIE *cie;
+  };
+
+  // A common information entry (CIE).
+  struct CIE: public Entry {
+    uint8 version;                      // CFI data version number
+    string augmentation;                // vendor format extension markers
+    uint64 code_alignment_factor;       // scale for code address adjustments 
+    int data_alignment_factor;          // scale for stack pointer adjustments
+    unsigned return_address_register;   // which register holds the return addr
+
+    // True if this CIE includes Linux C++ ABI 'z' augmentation data.
+    bool has_z_augmentation;
+ 
+    // Parsed 'z' augmentation data. These are meaningful only if
+    // has_z_augmentation is true.
+    bool has_z_lsda;                    // The 'z' augmentation included 'L'.
+    bool has_z_personality;             // The 'z' augmentation included 'P'.
+    bool has_z_signal_frame;            // The 'z' augmentation included 'S'.
+
+    // If has_z_lsda is true, this is the encoding to be used for language-
+    // specific data area pointers in FDEs.
+    DwarfPointerEncoding lsda_encoding;
+
+    // If has_z_personality is true, this is the encoding used for the
+    // personality routine pointer in the augmentation data.
+    DwarfPointerEncoding personality_encoding;
+
+    // If has_z_personality is true, this is the address of the personality
+    // routine --- or, if personality_encoding & DW_EH_PE_indirect, the
+    // address where the personality routine's address is stored.
+    uint64 personality_address;
+
+    // This is the encoding used for addresses in the FDE header and
+    // in DW_CFA_set_loc instructions. This is always valid, whether
+    // or not we saw a 'z' augmentation string; its default value is
+    // DW_EH_PE_absptr, which is what normal DWARF CFI uses.
+    DwarfPointerEncoding pointer_encoding;
+  };
+
+  // A frame description entry (FDE).
+  struct FDE: public Entry {
+    uint64 address;                     // start address of described code
+    uint64 size;                        // size of described code, in bytes
+
+    // If cie->has_z_lsda is true, then this is the language-specific data
+    // area's address --- or its address's address, if cie->lsda_encoding
+    // has the DW_EH_PE_indirect bit set.
+    uint64 lsda_address;
+  };
+
+  // Internal use.
+  class Rule;
+  class UndefinedRule;
+  class SameValueRule;
+  class OffsetRule;
+  class ValOffsetRule;
+  class RegisterRule;
+  class ExpressionRule;
+  class ValExpressionRule;
+  class RuleMap;
+  class State;
+  
+  // Parse the initial length and id of a CFI entry, either a CIE, an FDE,
+  // or a .eh_frame end-of-data mark. CURSOR points to the beginning of the
+  // data to parse. On success, populate ENTRY as appropriate, and return
+  // true. On failure, report the problem, and return false. Even if we
+  // return false, set ENTRY->end to the first byte after the entry if we
+  // were able to figure that out, or NULL if we weren't.
+  bool ReadEntryPrologue(const char *cursor, Entry *entry);
+
+  // Parse the fields of a CIE after the entry prologue, including any 'z'
+  // augmentation data. Assume that the 'Entry' fields of CIE are
+  // populated; use CIE->fields and CIE->end as the start and limit for
+  // parsing. On success, populate the rest of *CIE, and return true; on
+  // failure, report the problem and return false.
+  bool ReadCIEFields(CIE *cie);
+
+  // Parse the fields of an FDE after the entry prologue, including any 'z'
+  // augmentation data. Assume that the 'Entry' fields of *FDE are
+  // initialized; use FDE->fields and FDE->end as the start and limit for
+  // parsing. Assume that FDE->cie is fully initialized. On success,
+  // populate the rest of *FDE, and return true; on failure, report the
+  // problem and return false.
+  bool ReadFDEFields(FDE *fde);
+
+  // Report that ENTRY is incomplete, and return false. This is just a
+  // trivial wrapper for invoking reporter_->Incomplete; it provides a
+  // little brevity.
+  bool ReportIncomplete(Entry *entry);
+
+  // Return true if ENCODING has the DW_EH_PE_indirect bit set.
+  static bool IsIndirectEncoding(DwarfPointerEncoding encoding) {
+    return encoding & DW_EH_PE_indirect;
+  }
+
+  // The contents of the DWARF .debug_info section we're parsing.
+  const char *buffer_;
+  size_t buffer_length_;
+
+  // For reading multi-byte values with the appropriate endianness.
+  ByteReader *reader_;
+
+  // The handler to which we should report the data we find.
+  Handler *handler_;
+
+  // For reporting problems in the info we're parsing.
+  Reporter *reporter_;
+
+  // True if we are processing .eh_frame-format data.
+  bool eh_frame_;
+};
+
+// The handler class for CallFrameInfo.  The a CFI parser calls the
+// member functions of a handler object to report the data it finds.
+class CallFrameInfo::Handler {
+ public:
+  // The pseudo-register number for the canonical frame address.
+  enum { kCFARegister = -1 };
+
+  Handler() { }
+  virtual ~Handler() { }
+
+  // The parser has found CFI for the machine code at ADDRESS,
+  // extending for LENGTH bytes. OFFSET is the offset of the frame
+  // description entry in the section, for use in error messages.
+  // VERSION is the version number of the CFI format. AUGMENTATION is
+  // a string describing any producer-specific extensions present in
+  // the data. RETURN_ADDRESS is the number of the register that holds
+  // the address to which the function should return.
+  //
+  // Entry should return true to process this CFI, or false to skip to
+  // the next entry.
+  //
+  // The parser invokes Entry for each Frame Description Entry (FDE)
+  // it finds.  The parser doesn't report Common Information Entries
+  // to the handler explicitly; instead, if the handler elects to
+  // process a given FDE, the parser reiterates the appropriate CIE's
+  // contents at the beginning of the FDE's rules.
+  virtual bool Entry(size_t offset, uint64 address, uint64 length,
+                     uint8 version, const string &augmentation,
+                     unsigned return_address) = 0;
+
+  // When the Entry function returns true, the parser calls these
+  // handler functions repeatedly to describe the rules for recovering
+  // registers at each instruction in the given range of machine code.
+  // Immediately after a call to Entry, the handler should assume that
+  // the rule for each callee-saves register is "unchanged" --- that
+  // is, that the register still has the value it had in the caller.
+  // 
+  // If a *Rule function returns true, we continue processing this entry's
+  // instructions. If a *Rule function returns false, we stop evaluating
+  // instructions, and skip to the next entry. Either way, we call End
+  // before going on to the next entry.
+  //
+  // In all of these functions, if the REG parameter is kCFARegister, then
+  // the rule describes how to find the canonical frame address.
+  // kCFARegister may be passed as a BASE_REGISTER argument, meaning that
+  // the canonical frame address should be used as the base address for the
+  // computation. All other REG values will be positive.
+
+  // At ADDRESS, register REG's value is not recoverable.
+  virtual bool UndefinedRule(uint64 address, int reg) = 0;
+
+  // At ADDRESS, register REG's value is the same as that it had in
+  // the caller.
+  virtual bool SameValueRule(uint64 address, int reg) = 0;
+
+  // At ADDRESS, register REG has been saved at offset OFFSET from
+  // BASE_REGISTER.
+  virtual bool OffsetRule(uint64 address, int reg,
+                          int base_register, long offset) = 0;
+
+  // At ADDRESS, the caller's value of register REG is the current
+  // value of BASE_REGISTER plus OFFSET. (This rule doesn't provide an
+  // address at which the register's value is saved.)
+  virtual bool ValOffsetRule(uint64 address, int reg,
+                             int base_register, long offset) = 0;
+
+  // At ADDRESS, register REG has been saved in BASE_REGISTER. This differs
+  // from ValOffsetRule(ADDRESS, REG, BASE_REGISTER, 0), in that
+  // BASE_REGISTER is the "home" for REG's saved value: if you want to
+  // assign to a variable whose home is REG in the calling frame, you
+  // should put the value in BASE_REGISTER.
+  virtual bool RegisterRule(uint64 address, int reg, int base_register) = 0;
+
+  // At ADDRESS, the DWARF expression EXPRESSION yields the address at
+  // which REG was saved.
+  virtual bool ExpressionRule(uint64 address, int reg,
+                              const string &expression) = 0;
+
+  // At ADDRESS, the DWARF expression EXPRESSION yields the caller's
+  // value for REG. (This rule doesn't provide an address at which the
+  // register's value is saved.)
+  virtual bool ValExpressionRule(uint64 address, int reg,
+                                 const string &expression) = 0;
+
+  // Indicate that the rules for the address range reported by the
+  // last call to Entry are complete.  End should return true if
+  // everything is okay, or false if an error has occurred and parsing
+  // should stop.
+  virtual bool End() = 0;
+
+  // Handler functions for Linux C++ exception handling data. These are
+  // only called if the data includes 'z' augmentation strings.
+
+  // The Linux C++ ABI uses an extension of the DWARF CFI format to
+  // walk the stack to propagate exceptions from the throw to the
+  // appropriate catch, and do the appropriate cleanups along the way.
+  // CFI entries used for exception handling have two additional data
+  // associated with them:
+  //
+  // - The "language-specific data area" describes which exception
+  //   types the function has 'catch' clauses for, and indicates how
+  //   to go about re-entering the function at the appropriate catch
+  //   clause. If the exception is not caught, it describes the
+  //   destructors that must run before the frame is popped.
+  //
+  // - The "personality routine" is responsible for interpreting the
+  //   language-specific data area's contents, and deciding whether
+  //   the exception should continue to propagate down the stack,
+  //   perhaps after doing some cleanup for this frame, or whether the
+  //   exception will be caught here.
+  //
+  // In principle, the language-specific data area is opaque to
+  // everybody but the personality routine. In practice, these values
+  // may be useful or interesting to readers with extra context, and
+  // we have to at least skip them anyway, so we might as well report
+  // them to the handler.
+
+  // This entry's exception handling personality routine's address is
+  // ADDRESS. If INDIRECT is true, then ADDRESS is the address at
+  // which the routine's address is stored. The default definition for
+  // this handler function simply returns true, allowing parsing of
+  // the entry to continue.
+  virtual bool PersonalityRoutine(uint64 address, bool indirect) {
+    return true;
+  }
+
+  // This entry's language-specific data area (LSDA) is located at
+  // ADDRESS. If INDIRECT is true, then ADDRESS is the address at
+  // which the area's address is stored. The default definition for
+  // this handler function simply returns true, allowing parsing of
+  // the entry to continue.
+  virtual bool LanguageSpecificDataArea(uint64 address, bool indirect) {
+    return true;
+  }
+
+  // This entry describes a signal trampoline --- this frame is the
+  // caller of a signal handler. The default definition for this
+  // handler function simply returns true, allowing parsing of the
+  // entry to continue.
+  //
+  // The best description of the rationale for and meaning of signal
+  // trampoline CFI entries seems to be in the GCC bug database:
+  // http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26208
+  virtual bool SignalHandler() { return true; }
+};
+
+// The CallFrameInfo class makes calls on an instance of this class to
+// report errors or warn about problems in the data it is parsing. The
+// default definitions of these methods print a message to stderr, but
+// you can make a derived class that overrides them.
+class CallFrameInfo::Reporter {
+ public:
+  // Create an error reporter which attributes troubles to the section
+  // named SECTION in FILENAME.
+  //
+  // Normally SECTION would be .debug_frame, but the Mac puts CFI data
+  // in a Mach-O section named __debug_frame. If we support
+  // Linux-style exception handling data, we could be reading an
+  // .eh_frame section.
+  Reporter(const string &filename,
+           const string &section = ".debug_frame")
+      : filename_(filename), section_(section) { }
+  virtual ~Reporter() { }
+
+  // The CFI entry at OFFSET ends too early to be well-formed. KIND
+  // indicates what kind of entry it is; KIND can be kUnknown if we
+  // haven't parsed enough of the entry to tell yet.
+  virtual void Incomplete(uint64 offset, CallFrameInfo::EntryKind kind);
+
+  // The .eh_frame data has a four-byte zero at OFFSET where the next
+  // entry's length would be; this is a terminator. However, the buffer
+  // length as given to the CallFrameInfo constructor says there should be
+  // more data.
+  virtual void EarlyEHTerminator(uint64 offset);
+
+  // The FDE at OFFSET refers to the CIE at CIE_OFFSET, but the
+  // section is not that large.
+  virtual void CIEPointerOutOfRange(uint64 offset, uint64 cie_offset);
+
+  // The FDE at OFFSET refers to the CIE at CIE_OFFSET, but the entry
+  // there is not a CIE.
+  virtual void BadCIEId(uint64 offset, uint64 cie_offset);
+
+  // The FDE at OFFSET refers to a CIE with version number VERSION,
+  // which we don't recognize. We cannot parse DWARF CFI if it uses
+  // a version number we don't recognize.
+  virtual void UnrecognizedVersion(uint64 offset, int version);
+
+  // The FDE at OFFSET refers to a CIE with augmentation AUGMENTATION,
+  // which we don't recognize. We cannot parse DWARF CFI if it uses
+  // augmentations we don't recognize.
+  virtual void UnrecognizedAugmentation(uint64 offset,
+                                        const string &augmentation);
+
+  // The pointer encoding ENCODING, specified by the CIE at OFFSET, is not
+  // a valid encoding.
+  virtual void InvalidPointerEncoding(uint64 offset, uint8 encoding);
+
+  // The pointer encoding ENCODING, specified by the CIE at OFFSET, depends
+  // on a base address which has not been supplied.
+  virtual void UnusablePointerEncoding(uint64 offset, uint8 encoding);
+
+  // The CIE at OFFSET contains a DW_CFA_restore instruction at
+  // INSN_OFFSET, which may not appear in a CIE.
+  virtual void RestoreInCIE(uint64 offset, uint64 insn_offset);
+
+  // The entry at OFFSET, of kind KIND, has an unrecognized
+  // instruction at INSN_OFFSET.
+  virtual void BadInstruction(uint64 offset, CallFrameInfo::EntryKind kind,
+                              uint64 insn_offset);
+
+  // The instruction at INSN_OFFSET in the entry at OFFSET, of kind
+  // KIND, establishes a rule that cites the CFA, but we have not
+  // established a CFA rule yet.
+  virtual void NoCFARule(uint64 offset, CallFrameInfo::EntryKind kind, 
+                         uint64 insn_offset);
+
+  // The instruction at INSN_OFFSET in the entry at OFFSET, of kind
+  // KIND, is a DW_CFA_restore_state instruction, but the stack of
+  // saved states is empty.
+  virtual void EmptyStateStack(uint64 offset, CallFrameInfo::EntryKind kind, 
+                               uint64 insn_offset);
+
+  // The DW_CFA_remember_state instruction at INSN_OFFSET in the entry
+  // at OFFSET, of kind KIND, would restore a state that has no CFA
+  // rule, whereas the current state does have a CFA rule. This is
+  // bogus input, which the CallFrameInfo::Handler interface doesn't
+  // (and shouldn't) have any way to report.
+  virtual void ClearingCFARule(uint64 offset, CallFrameInfo::EntryKind kind, 
+                               uint64 insn_offset);
+
+ protected:
+  // The name of the file whose CFI we're reading.
+  string filename_;
+
+  // The name of the CFI section in that file.
+  string section_;
+};
+
+}  // namespace dwarf2reader
+
+#endif  // UTIL_DEBUGINFO_DWARF2READER_H__
diff --git a/google-breakpad/src/common/dwarf/dwarf2reader_cfi_unittest.cc b/google-breakpad/src/common/dwarf/dwarf2reader_cfi_unittest.cc
new file mode 100644
index 0000000..66c6198
--- /dev/null
+++ b/google-breakpad/src/common/dwarf/dwarf2reader_cfi_unittest.cc
@@ -0,0 +1,2452 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// dwarf2reader_cfi_unittest.cc: Unit tests for dwarf2reader::CallFrameInfo
+
+#include <stdlib.h>
+
+#include <string>
+#include <vector>
+
+// The '.eh_frame' format, used by the Linux C++ ABI for exception
+// handling, is poorly specified. To help test our support for .eh_frame,
+// if you #define WRITE_ELF while compiling this file, and add the
+// 'include' directory from the binutils, gcc, or gdb source tree to the
+// #include path, then each test that calls the
+// PERHAPS_WRITE_DEBUG_FRAME_FILE or PERHAPS_WRITE_EH_FRAME_FILE will write
+// an ELF file containing a .debug_frame or .eh_frame section; you can then
+// use tools like readelf to examine the test data, and check the tools'
+// interpretation against the test's intentions. Each ELF file is named
+// "cfitest-TEST", where TEST identifies the particular test.
+#ifdef WRITE_ELF
+#include <errno.h>
+#include <stdio.h>
+#include <string.h>
+extern "C" {
+// To compile with WRITE_ELF, you should add the 'include' directory
+// of the binutils, gcc, or gdb source tree to your #include path;
+// that directory contains this header.
+#include "elf/common.h"
+}
+#endif
+
+#include "breakpad_googletest_includes.h"
+#include "common/dwarf/bytereader-inl.h"
+#include "common/dwarf/cfi_assembler.h"
+#include "common/dwarf/dwarf2reader.h"
+#include "common/using_std_string.h"
+#include "google_breakpad/common/breakpad_types.h"
+
+using google_breakpad::CFISection;
+using google_breakpad::test_assembler::Label;
+using google_breakpad::test_assembler::kBigEndian;
+using google_breakpad::test_assembler::kLittleEndian;
+using google_breakpad::test_assembler::Section;
+
+using dwarf2reader::DwarfPointerEncoding;
+using dwarf2reader::ENDIANNESS_BIG;
+using dwarf2reader::ENDIANNESS_LITTLE;
+using dwarf2reader::ByteReader;
+using dwarf2reader::CallFrameInfo;
+
+using std::vector;
+using testing::InSequence;
+using testing::Return;
+using testing::Sequence;
+using testing::Test;
+using testing::_;
+
+#ifdef WRITE_ELF
+void WriteELFFrameSection(const char *filename, const char *section_name,
+                          const CFISection &section);
+#define PERHAPS_WRITE_DEBUG_FRAME_FILE(name, section)                   \
+    WriteELFFrameSection("cfitest-" name, ".debug_frame", section);
+#define PERHAPS_WRITE_EH_FRAME_FILE(name, section)                      \
+    WriteELFFrameSection("cfitest-" name, ".eh_frame", section);
+#else
+#define PERHAPS_WRITE_DEBUG_FRAME_FILE(name, section)
+#define PERHAPS_WRITE_EH_FRAME_FILE(name, section)
+#endif
+
+class MockCallFrameInfoHandler: public CallFrameInfo::Handler {
+ public:
+  MOCK_METHOD6(Entry, bool(size_t offset, uint64 address, uint64 length,
+                           uint8 version, const string &augmentation,
+                           unsigned return_address));
+  MOCK_METHOD2(UndefinedRule, bool(uint64 address, int reg));
+  MOCK_METHOD2(SameValueRule, bool(uint64 address, int reg));
+  MOCK_METHOD4(OffsetRule, bool(uint64 address, int reg, int base_register,
+                                long offset));
+  MOCK_METHOD4(ValOffsetRule, bool(uint64 address, int reg, int base_register,
+                                   long offset));
+  MOCK_METHOD3(RegisterRule, bool(uint64 address, int reg, int base_register));
+  MOCK_METHOD3(ExpressionRule, bool(uint64 address, int reg,
+                                    const string &expression));
+  MOCK_METHOD3(ValExpressionRule, bool(uint64 address, int reg,
+                                       const string &expression));
+  MOCK_METHOD0(End, bool());
+  MOCK_METHOD2(PersonalityRoutine, bool(uint64 address, bool indirect));
+  MOCK_METHOD2(LanguageSpecificDataArea, bool(uint64 address, bool indirect));
+  MOCK_METHOD0(SignalHandler, bool());
+};
+
+class MockCallFrameErrorReporter: public CallFrameInfo::Reporter {
+ public:
+  MockCallFrameErrorReporter() : Reporter("mock filename", "mock section") { }
+  MOCK_METHOD2(Incomplete, void(uint64, CallFrameInfo::EntryKind));
+  MOCK_METHOD1(EarlyEHTerminator, void(uint64));
+  MOCK_METHOD2(CIEPointerOutOfRange, void(uint64, uint64));
+  MOCK_METHOD2(BadCIEId, void(uint64, uint64));
+  MOCK_METHOD2(UnrecognizedVersion, void(uint64, int version));
+  MOCK_METHOD2(UnrecognizedAugmentation, void(uint64, const string &));
+  MOCK_METHOD2(InvalidPointerEncoding, void(uint64, uint8));
+  MOCK_METHOD2(UnusablePointerEncoding, void(uint64, uint8));
+  MOCK_METHOD2(RestoreInCIE, void(uint64, uint64));
+  MOCK_METHOD3(BadInstruction, void(uint64, CallFrameInfo::EntryKind, uint64));
+  MOCK_METHOD3(NoCFARule, void(uint64, CallFrameInfo::EntryKind, uint64));
+  MOCK_METHOD3(EmptyStateStack, void(uint64, CallFrameInfo::EntryKind, uint64));
+};
+
+struct CFIFixture {
+
+  enum { kCFARegister = CallFrameInfo::Handler::kCFARegister };
+
+  CFIFixture() {
+    // Default expectations for the data handler.
+    //
+    // - Leave Entry and End without expectations, as it's probably a
+    //   good idea to set those explicitly in each test.
+    //
+    // - Expect the *Rule functions to not be called, 
+    //   so that each test can simply list the calls they expect.
+    //
+    // I gather I could use StrictMock for this, but the manual seems
+    // to suggest using that only as a last resort, and this isn't so
+    // bad.
+    EXPECT_CALL(handler, UndefinedRule(_, _)).Times(0);
+    EXPECT_CALL(handler, SameValueRule(_, _)).Times(0);
+    EXPECT_CALL(handler, OffsetRule(_, _, _, _)).Times(0);
+    EXPECT_CALL(handler, ValOffsetRule(_, _, _, _)).Times(0);
+    EXPECT_CALL(handler, RegisterRule(_, _, _)).Times(0);
+    EXPECT_CALL(handler, ExpressionRule(_, _, _)).Times(0);
+    EXPECT_CALL(handler, ValExpressionRule(_, _, _)).Times(0);
+    EXPECT_CALL(handler, PersonalityRoutine(_, _)).Times(0);
+    EXPECT_CALL(handler, LanguageSpecificDataArea(_, _)).Times(0);
+    EXPECT_CALL(handler, SignalHandler()).Times(0);
+
+    // Default expectations for the error/warning reporer.
+    EXPECT_CALL(reporter, Incomplete(_, _)).Times(0);
+    EXPECT_CALL(reporter, EarlyEHTerminator(_)).Times(0);
+    EXPECT_CALL(reporter, CIEPointerOutOfRange(_, _)).Times(0);
+    EXPECT_CALL(reporter, BadCIEId(_, _)).Times(0);
+    EXPECT_CALL(reporter, UnrecognizedVersion(_, _)).Times(0);
+    EXPECT_CALL(reporter, UnrecognizedAugmentation(_, _)).Times(0);
+    EXPECT_CALL(reporter, InvalidPointerEncoding(_, _)).Times(0);
+    EXPECT_CALL(reporter, UnusablePointerEncoding(_, _)).Times(0);
+    EXPECT_CALL(reporter, RestoreInCIE(_, _)).Times(0);
+    EXPECT_CALL(reporter, BadInstruction(_, _, _)).Times(0);
+    EXPECT_CALL(reporter, NoCFARule(_, _, _)).Times(0);
+    EXPECT_CALL(reporter, EmptyStateStack(_, _, _)).Times(0);
+  }
+
+  MockCallFrameInfoHandler handler;
+  MockCallFrameErrorReporter reporter;
+};
+
+class CFI: public CFIFixture, public Test { };
+
+TEST_F(CFI, EmptyRegion) {
+  EXPECT_CALL(handler, Entry(_, _, _, _, _, _)).Times(0);
+  EXPECT_CALL(handler, End()).Times(0);
+  static const char data[1] = { 42 };
+
+  ByteReader byte_reader(ENDIANNESS_BIG);
+  CallFrameInfo parser(data, 0, &byte_reader, &handler, &reporter);
+  EXPECT_TRUE(parser.Start());
+}
+
+TEST_F(CFI, IncompleteLength32) {
+  CFISection section(kBigEndian, 8);
+  section
+      // Not even long enough for an initial length.
+      .D16(0xa0f)
+      // Padding to keep valgrind happy. We subtract these off when we
+      // construct the parser.
+      .D16(0);
+
+  EXPECT_CALL(handler, Entry(_, _, _, _, _, _)).Times(0);
+  EXPECT_CALL(handler, End()).Times(0);
+
+  EXPECT_CALL(reporter, Incomplete(_, CallFrameInfo::kUnknown))
+      .WillOnce(Return());
+
+  string contents;
+  ASSERT_TRUE(section.GetContents(&contents));
+
+  ByteReader byte_reader(ENDIANNESS_BIG);
+  byte_reader.SetAddressSize(8);
+  CallFrameInfo parser(contents.data(), contents.size() - 2,
+                       &byte_reader, &handler, &reporter);
+  EXPECT_FALSE(parser.Start());
+}
+
+TEST_F(CFI, IncompleteLength64) {
+  CFISection section(kLittleEndian, 4);
+  section
+      // An incomplete 64-bit DWARF initial length.
+      .D32(0xffffffff).D32(0x71fbaec2)
+      // Padding to keep valgrind happy. We subtract these off when we
+      // construct the parser.
+      .D32(0);
+
+  EXPECT_CALL(handler, Entry(_, _, _, _, _, _)).Times(0);
+  EXPECT_CALL(handler, End()).Times(0);
+
+  EXPECT_CALL(reporter, Incomplete(_, CallFrameInfo::kUnknown))
+      .WillOnce(Return());
+
+  string contents;
+  ASSERT_TRUE(section.GetContents(&contents));
+
+  ByteReader byte_reader(ENDIANNESS_LITTLE);
+  byte_reader.SetAddressSize(4);
+  CallFrameInfo parser(contents.data(), contents.size() - 4,
+                       &byte_reader, &handler, &reporter);
+  EXPECT_FALSE(parser.Start());
+}
+
+TEST_F(CFI, IncompleteId32) {
+  CFISection section(kBigEndian, 8);
+  section
+      .D32(3)                      // Initial length, not long enough for id
+      .D8(0xd7).D8(0xe5).D8(0xf1)  // incomplete id
+      .CIEHeader(8727, 3983, 8889, 3, "")
+      .FinishEntry();
+
+  EXPECT_CALL(handler, Entry(_, _, _, _, _, _)).Times(0);
+  EXPECT_CALL(handler, End()).Times(0);
+
+  EXPECT_CALL(reporter, Incomplete(_, CallFrameInfo::kUnknown))
+      .WillOnce(Return());
+
+  string contents;
+  ASSERT_TRUE(section.GetContents(&contents));
+
+  ByteReader byte_reader(ENDIANNESS_BIG);
+  byte_reader.SetAddressSize(8);
+  CallFrameInfo parser(contents.data(), contents.size(),
+                       &byte_reader, &handler, &reporter);
+  EXPECT_FALSE(parser.Start());
+}
+
+TEST_F(CFI, BadId32) {
+  CFISection section(kBigEndian, 8);
+  section
+      .D32(0x100)                       // Initial length
+      .D32(0xe802fade)                  // bogus ID
+      .Append(0x100 - 4, 0x42);         // make the length true
+  section
+      .CIEHeader(1672, 9872, 8529, 3, "")
+      .FinishEntry();
+
+  EXPECT_CALL(handler, Entry(_, _, _, _, _, _)).Times(0);
+  EXPECT_CALL(handler, End()).Times(0);
+
+  EXPECT_CALL(reporter, CIEPointerOutOfRange(_, 0xe802fade))
+      .WillOnce(Return());
+
+  string contents;
+  ASSERT_TRUE(section.GetContents(&contents));
+
+  ByteReader byte_reader(ENDIANNESS_BIG);
+  byte_reader.SetAddressSize(8);
+  CallFrameInfo parser(contents.data(), contents.size(),
+                       &byte_reader, &handler, &reporter);
+  EXPECT_FALSE(parser.Start());
+}
+
+// A lone CIE shouldn't cause any handler calls.
+TEST_F(CFI, SingleCIE) {
+  CFISection section(kLittleEndian, 4);
+  section.CIEHeader(0xffe799a8, 0x3398dcdd, 0x6e9683de, 3, "");
+  section.Append(10, dwarf2reader::DW_CFA_nop);
+  section.FinishEntry();
+
+  PERHAPS_WRITE_DEBUG_FRAME_FILE("SingleCIE", section);
+
+  EXPECT_CALL(handler, Entry(_, _, _, _, _, _)).Times(0);
+  EXPECT_CALL(handler, End()).Times(0);
+
+  string contents;
+  EXPECT_TRUE(section.GetContents(&contents));
+  ByteReader byte_reader(ENDIANNESS_LITTLE);
+  byte_reader.SetAddressSize(4);
+  CallFrameInfo parser(contents.data(), contents.size(),
+                       &byte_reader, &handler, &reporter);
+  EXPECT_TRUE(parser.Start());
+}
+
+// One FDE, one CIE.
+TEST_F(CFI, OneFDE) {
+  CFISection section(kBigEndian, 4);
+  Label cie;
+  section
+      .Mark(&cie)
+      .CIEHeader(0x4be22f75, 0x2492236e, 0x6b6efb87, 3, "")
+      .FinishEntry()
+      .FDEHeader(cie, 0x7714740d, 0x3d5a10cd)
+      .FinishEntry();
+
+  PERHAPS_WRITE_DEBUG_FRAME_FILE("OneFDE", section);
+
+  {
+    InSequence s;
+    EXPECT_CALL(handler,
+                Entry(_, 0x7714740d, 0x3d5a10cd, 3, "", 0x6b6efb87))
+        .WillOnce(Return(true));
+    EXPECT_CALL(handler, End()).WillOnce(Return(true));
+  }
+
+  string contents;
+  EXPECT_TRUE(section.GetContents(&contents));
+  ByteReader byte_reader(ENDIANNESS_BIG);
+  byte_reader.SetAddressSize(4);
+  CallFrameInfo parser(contents.data(), contents.size(),
+                       &byte_reader, &handler, &reporter);
+  EXPECT_TRUE(parser.Start());
+}
+
+// Two FDEs share a CIE.
+TEST_F(CFI, TwoFDEsOneCIE) {
+  CFISection section(kBigEndian, 4);
+  Label cie;
+  section
+      // First FDE. readelf complains about this one because it makes
+      // a forward reference to its CIE.
+      .FDEHeader(cie, 0xa42744df, 0xa3b42121)
+      .FinishEntry()
+      // CIE.
+      .Mark(&cie)
+      .CIEHeader(0x04f7dc7b, 0x3d00c05f, 0xbd43cb59, 3, "")
+      .FinishEntry()
+      // Second FDE.
+      .FDEHeader(cie, 0x6057d391, 0x700f608d)
+      .FinishEntry();
+
+  PERHAPS_WRITE_DEBUG_FRAME_FILE("TwoFDEsOneCIE", section);
+
+  {
+    InSequence s;
+    EXPECT_CALL(handler,
+                Entry(_, 0xa42744df, 0xa3b42121, 3, "", 0xbd43cb59))
+        .WillOnce(Return(true));
+    EXPECT_CALL(handler, End()).WillOnce(Return(true));
+  }
+  {
+    InSequence s;
+    EXPECT_CALL(handler,
+                Entry(_, 0x6057d391, 0x700f608d, 3, "", 0xbd43cb59))
+        .WillOnce(Return(true));
+    EXPECT_CALL(handler, End()).WillOnce(Return(true));
+  }
+
+  string contents;
+  EXPECT_TRUE(section.GetContents(&contents));
+  ByteReader byte_reader(ENDIANNESS_BIG);
+  byte_reader.SetAddressSize(4);
+  CallFrameInfo parser(contents.data(), contents.size(),
+                       &byte_reader, &handler, &reporter);
+  EXPECT_TRUE(parser.Start());
+}
+
+// Two FDEs, two CIEs.
+TEST_F(CFI, TwoFDEsTwoCIEs) {
+  CFISection section(kLittleEndian, 8);
+  Label cie1, cie2;
+  section
+      // First CIE.
+      .Mark(&cie1)
+      .CIEHeader(0x694d5d45, 0x4233221b, 0xbf45e65a, 3, "")
+      .FinishEntry()
+      // First FDE which cites second CIE. readelf complains about
+      // this one because it makes a forward reference to its CIE.
+      .FDEHeader(cie2, 0x778b27dfe5871f05ULL, 0x324ace3448070926ULL)
+      .FinishEntry()
+      // Second FDE, which cites first CIE.
+      .FDEHeader(cie1, 0xf6054ca18b10bf5fULL, 0x45fdb970d8bca342ULL)
+      .FinishEntry()
+      // Second CIE.
+      .Mark(&cie2)
+      .CIEHeader(0xfba3fad7, 0x6287e1fd, 0x61d2c581, 2, "")
+      .FinishEntry();
+
+  PERHAPS_WRITE_DEBUG_FRAME_FILE("TwoFDEsTwoCIEs", section);
+
+  {
+    InSequence s;
+    EXPECT_CALL(handler,
+                Entry(_, 0x778b27dfe5871f05ULL, 0x324ace3448070926ULL, 2,
+                      "", 0x61d2c581))
+        .WillOnce(Return(true));
+    EXPECT_CALL(handler, End()).WillOnce(Return(true));
+  }
+  {
+    InSequence s;
+    EXPECT_CALL(handler,
+                Entry(_, 0xf6054ca18b10bf5fULL, 0x45fdb970d8bca342ULL, 3,
+                      "", 0xbf45e65a))
+        .WillOnce(Return(true));
+    EXPECT_CALL(handler, End()).WillOnce(Return(true));
+  }
+
+  string contents;
+  EXPECT_TRUE(section.GetContents(&contents));
+  ByteReader byte_reader(ENDIANNESS_LITTLE);
+  byte_reader.SetAddressSize(8);
+  CallFrameInfo parser(contents.data(), contents.size(),
+                       &byte_reader, &handler, &reporter);
+  EXPECT_TRUE(parser.Start());
+}
+
+// An FDE whose CIE specifies a version we don't recognize.
+TEST_F(CFI, BadVersion) {
+  CFISection section(kBigEndian, 4);
+  Label cie1, cie2;
+  section
+      .Mark(&cie1)
+      .CIEHeader(0xca878cf0, 0x7698ec04, 0x7b616f54, 0x52, "")
+      .FinishEntry()
+      // We should skip this entry, as its CIE specifies a version we
+      // don't recognize.
+      .FDEHeader(cie1, 0x08852292, 0x2204004a)
+      .FinishEntry()
+      // Despite the above, we should visit this entry.
+      .Mark(&cie2)
+      .CIEHeader(0x7c3ae7c9, 0xb9b9a512, 0x96cb3264, 3, "")
+      .FinishEntry()
+      .FDEHeader(cie2, 0x2094735a, 0x6e875501)
+      .FinishEntry();
+
+  PERHAPS_WRITE_DEBUG_FRAME_FILE("BadVersion", section);
+
+  EXPECT_CALL(reporter, UnrecognizedVersion(_, 0x52))
+    .WillOnce(Return());
+
+  {
+    InSequence s;
+    // We should see no mention of the first FDE, but we should get
+    // a call to Entry for the second.
+    EXPECT_CALL(handler, Entry(_, 0x2094735a, 0x6e875501, 3, "",
+                               0x96cb3264))
+        .WillOnce(Return(true));
+    EXPECT_CALL(handler, End())
+        .WillOnce(Return(true));
+  }
+
+  string contents;
+  EXPECT_TRUE(section.GetContents(&contents));
+  ByteReader byte_reader(ENDIANNESS_BIG);
+  byte_reader.SetAddressSize(4);
+  CallFrameInfo parser(contents.data(), contents.size(),
+                       &byte_reader, &handler, &reporter);
+  EXPECT_FALSE(parser.Start());
+}
+
+// An FDE whose CIE specifies an augmentation we don't recognize.
+TEST_F(CFI, BadAugmentation) {
+  CFISection section(kBigEndian, 4);
+  Label cie1, cie2;
+  section
+      .Mark(&cie1)
+      .CIEHeader(0x4be22f75, 0x2492236e, 0x6b6efb87, 3, "spaniels!")
+      .FinishEntry()
+      // We should skip this entry, as its CIE specifies an
+      // augmentation we don't recognize.
+      .FDEHeader(cie1, 0x7714740d, 0x3d5a10cd)
+      .FinishEntry()
+      // Despite the above, we should visit this entry.
+      .Mark(&cie2)
+      .CIEHeader(0xf8bc4399, 0x8cf09931, 0xf2f519b2, 3, "")
+      .FinishEntry()
+      .FDEHeader(cie2, 0x7bf0fda0, 0xcbcd28d8)
+      .FinishEntry();
+
+  PERHAPS_WRITE_DEBUG_FRAME_FILE("BadAugmentation", section);
+
+  EXPECT_CALL(reporter, UnrecognizedAugmentation(_, "spaniels!"))
+    .WillOnce(Return());
+
+  {
+    InSequence s;
+    // We should see no mention of the first FDE, but we should get
+    // a call to Entry for the second.
+    EXPECT_CALL(handler, Entry(_, 0x7bf0fda0, 0xcbcd28d8, 3, "",
+                               0xf2f519b2))
+        .WillOnce(Return(true));
+    EXPECT_CALL(handler, End())
+        .WillOnce(Return(true));
+  }
+
+  string contents;
+  EXPECT_TRUE(section.GetContents(&contents));
+  ByteReader byte_reader(ENDIANNESS_BIG);
+  byte_reader.SetAddressSize(4);
+  CallFrameInfo parser(contents.data(), contents.size(),
+                       &byte_reader, &handler, &reporter);
+  EXPECT_FALSE(parser.Start());
+}
+
+// The return address column field is a byte in CFI version 1
+// (DWARF2), but a ULEB128 value in version 3 (DWARF3).
+TEST_F(CFI, CIEVersion1ReturnColumn) {
+  CFISection section(kBigEndian, 4);
+  Label cie;
+  section
+      // CIE, using the version 1 format: return column is a ubyte.
+      .Mark(&cie)
+      // Use a value for the return column that is parsed differently
+      // as a ubyte and as a ULEB128.
+      .CIEHeader(0xbcdea24f, 0x5be28286, 0x9f, 1, "")
+      .FinishEntry()
+      // FDE, citing that CIE.
+      .FDEHeader(cie, 0xb8d347b5, 0x825e55dc)
+      .FinishEntry();
+
+  PERHAPS_WRITE_DEBUG_FRAME_FILE("CIEVersion1ReturnColumn", section);
+
+  {
+    InSequence s;
+    EXPECT_CALL(handler, Entry(_, 0xb8d347b5, 0x825e55dc, 1, "", 0x9f))
+        .WillOnce(Return(true));
+    EXPECT_CALL(handler, End()).WillOnce(Return(true));
+  }
+
+  string contents;
+  EXPECT_TRUE(section.GetContents(&contents));
+  ByteReader byte_reader(ENDIANNESS_BIG);
+  byte_reader.SetAddressSize(4);
+  CallFrameInfo parser(contents.data(), contents.size(),
+                       &byte_reader, &handler, &reporter);
+  EXPECT_TRUE(parser.Start());
+}
+
+// The return address column field is a byte in CFI version 1
+// (DWARF2), but a ULEB128 value in version 3 (DWARF3).
+TEST_F(CFI, CIEVersion3ReturnColumn) {
+  CFISection section(kBigEndian, 4);
+  Label cie;
+  section
+      // CIE, using the version 3 format: return column is a ULEB128.
+      .Mark(&cie)
+      // Use a value for the return column that is parsed differently
+      // as a ubyte and as a ULEB128.
+      .CIEHeader(0x0ab4758d, 0xc010fdf7, 0x89, 3, "")
+      .FinishEntry()
+      // FDE, citing that CIE.
+      .FDEHeader(cie, 0x86763f2b, 0x2a66dc23)
+      .FinishEntry();
+
+  PERHAPS_WRITE_DEBUG_FRAME_FILE("CIEVersion3ReturnColumn", section);
+
+  {
+    InSequence s;
+    EXPECT_CALL(handler, Entry(_, 0x86763f2b, 0x2a66dc23, 3, "", 0x89))
+        .WillOnce(Return(true));
+    EXPECT_CALL(handler, End()).WillOnce(Return(true));
+  }
+
+  string contents;
+  EXPECT_TRUE(section.GetContents(&contents));
+  ByteReader byte_reader(ENDIANNESS_BIG);
+  byte_reader.SetAddressSize(4);
+  CallFrameInfo parser(contents.data(), contents.size(),
+                       &byte_reader, &handler, &reporter);
+  EXPECT_TRUE(parser.Start());
+}
+
+struct CFIInsnFixture: public CFIFixture {
+  CFIInsnFixture() : CFIFixture() {
+    data_factor = 0xb6f;
+    return_register = 0x9be1ed9f;
+    version = 3;
+    cfa_base_register = 0x383a3aa;
+    cfa_offset = 0xf748;
+  }
+  
+  // Prepare SECTION to receive FDE instructions.
+  //
+  // - Append a stock CIE header that establishes the fixture's
+  //   code_factor, data_factor, return_register, version, and
+  //   augmentation values.
+  // - Have the CIE set up a CFA rule using cfa_base_register and
+  //   cfa_offset.
+  // - Append a stock FDE header, referring to the above CIE, for the
+  //   fde_size bytes at fde_start. Choose fde_start and fde_size
+  //   appropriately for the section's address size.
+  // - Set appropriate expectations on handler in sequence s for the
+  //   frame description entry and the CIE's CFA rule.
+  //
+  // On return, SECTION is ready to have FDE instructions appended to
+  // it, and its FinishEntry member called.
+  void StockCIEAndFDE(CFISection *section) {
+    // Choose appropriate constants for our address size.
+    if (section->AddressSize() == 4) {
+      fde_start = 0xc628ecfbU;
+      fde_size = 0x5dee04a2;
+      code_factor = 0x60b;
+    } else {
+      assert(section->AddressSize() == 8);
+      fde_start = 0x0005c57ce7806bd3ULL;
+      fde_size = 0x2699521b5e333100ULL;
+      code_factor = 0x01008e32855274a8ULL;
+    }
+
+    // Create the CIE.
+    (*section)
+        .Mark(&cie_label)
+        .CIEHeader(code_factor, data_factor, return_register, version,
+                   "")
+        .D8(dwarf2reader::DW_CFA_def_cfa)
+        .ULEB128(cfa_base_register)
+        .ULEB128(cfa_offset)
+        .FinishEntry();
+
+    // Create the FDE.
+    section->FDEHeader(cie_label, fde_start, fde_size);
+
+    // Expect an Entry call for the FDE and a ValOffsetRule call for the
+    // CIE's CFA rule.
+    EXPECT_CALL(handler, Entry(_, fde_start, fde_size, version, "",
+                               return_register))
+        .InSequence(s)
+        .WillOnce(Return(true));
+    EXPECT_CALL(handler, ValOffsetRule(fde_start, kCFARegister,
+                                       cfa_base_register, cfa_offset))
+      .InSequence(s)
+      .WillOnce(Return(true));
+  }
+
+  // Run the contents of SECTION through a CallFrameInfo parser,
+  // expecting parser.Start to return SUCCEEDS
+  void ParseSection(CFISection *section, bool succeeds = true) {
+    string contents;
+    EXPECT_TRUE(section->GetContents(&contents));
+    dwarf2reader::Endianness endianness;
+    if (section->endianness() == kBigEndian)
+      endianness = ENDIANNESS_BIG;
+    else {
+      assert(section->endianness() == kLittleEndian);
+      endianness = ENDIANNESS_LITTLE;
+    }
+    ByteReader byte_reader(endianness);
+    byte_reader.SetAddressSize(section->AddressSize());
+    CallFrameInfo parser(contents.data(), contents.size(),
+                         &byte_reader, &handler, &reporter);
+    if (succeeds)
+      EXPECT_TRUE(parser.Start());
+    else
+      EXPECT_FALSE(parser.Start());
+  }
+
+  Label cie_label;
+  Sequence s;
+  uint64 code_factor;
+  int data_factor;
+  unsigned return_register;
+  unsigned version;
+  unsigned cfa_base_register;
+  int cfa_offset;
+  uint64 fde_start, fde_size;
+};
+
+class CFIInsn: public CFIInsnFixture, public Test { };
+
+TEST_F(CFIInsn, DW_CFA_set_loc) {
+  CFISection section(kBigEndian, 4);
+  StockCIEAndFDE(&section);
+  section
+      .D8(dwarf2reader::DW_CFA_set_loc).D32(0xb1ee3e7a)
+      // Use DW_CFA_def_cfa to force a handler call that we can use to
+      // check the effect of the DW_CFA_set_loc.
+      .D8(dwarf2reader::DW_CFA_def_cfa).ULEB128(0x4defb431).ULEB128(0x6d17b0ee)
+      .FinishEntry();
+
+  PERHAPS_WRITE_DEBUG_FRAME_FILE("DW_CFA_set_loc", section);
+
+  EXPECT_CALL(handler,
+              ValOffsetRule(0xb1ee3e7a, kCFARegister, 0x4defb431, 0x6d17b0ee))
+      .InSequence(s)
+      .WillOnce(Return(true));
+  EXPECT_CALL(handler, End()).InSequence(s).WillOnce(Return(true));
+
+  ParseSection(&section);
+}
+
+TEST_F(CFIInsn, DW_CFA_advance_loc) {
+  CFISection section(kBigEndian, 8);
+  StockCIEAndFDE(&section);
+  section
+      .D8(dwarf2reader::DW_CFA_advance_loc | 0x2a)
+      // Use DW_CFA_def_cfa to force a handler call that we can use to
+      // check the effect of the DW_CFA_advance_loc.
+      .D8(dwarf2reader::DW_CFA_def_cfa).ULEB128(0x5bbb3715).ULEB128(0x0186c7bf)
+      .FinishEntry();
+
+  PERHAPS_WRITE_DEBUG_FRAME_FILE("DW_CFA_advance_loc", section);
+
+  EXPECT_CALL(handler,
+              ValOffsetRule(fde_start + 0x2a * code_factor,
+                            kCFARegister, 0x5bbb3715, 0x0186c7bf))
+        .InSequence(s)
+        .WillOnce(Return(true));
+  EXPECT_CALL(handler, End()).InSequence(s).WillOnce(Return(true));
+
+  ParseSection(&section);
+}
+
+TEST_F(CFIInsn, DW_CFA_advance_loc1) {
+  CFISection section(kLittleEndian, 8);
+  StockCIEAndFDE(&section);
+  section
+      .D8(dwarf2reader::DW_CFA_advance_loc1).D8(0xd8)
+      .D8(dwarf2reader::DW_CFA_def_cfa).ULEB128(0x69d5696a).ULEB128(0x1eb7fc93)
+      .FinishEntry();
+
+  PERHAPS_WRITE_DEBUG_FRAME_FILE("DW_CFA_advance_loc1", section);
+
+  EXPECT_CALL(handler,
+              ValOffsetRule((fde_start + 0xd8 * code_factor),
+                            kCFARegister, 0x69d5696a, 0x1eb7fc93))
+      .InSequence(s)
+      .WillOnce(Return(true));
+  EXPECT_CALL(handler, End()).InSequence(s).WillOnce(Return(true));
+
+  ParseSection(&section);
+}
+
+TEST_F(CFIInsn, DW_CFA_advance_loc2) {
+  CFISection section(kLittleEndian, 4);
+  StockCIEAndFDE(&section);
+  section
+      .D8(dwarf2reader::DW_CFA_advance_loc2).D16(0x3adb)
+      .D8(dwarf2reader::DW_CFA_def_cfa).ULEB128(0x3a368bed).ULEB128(0x3194ee37)
+      .FinishEntry();
+
+  PERHAPS_WRITE_DEBUG_FRAME_FILE("DW_CFA_advance_loc2", section);
+
+  EXPECT_CALL(handler,
+              ValOffsetRule((fde_start + 0x3adb * code_factor),
+                            kCFARegister, 0x3a368bed, 0x3194ee37))
+      .InSequence(s)
+      .WillOnce(Return(true));
+  EXPECT_CALL(handler, End()).InSequence(s).WillOnce(Return(true));
+
+  ParseSection(&section);
+}
+
+TEST_F(CFIInsn, DW_CFA_advance_loc4) {
+  CFISection section(kBigEndian, 8);
+  StockCIEAndFDE(&section);
+  section
+      .D8(dwarf2reader::DW_CFA_advance_loc4).D32(0x15813c88)
+      .D8(dwarf2reader::DW_CFA_def_cfa).ULEB128(0x135270c5).ULEB128(0x24bad7cb)
+      .FinishEntry();
+
+  PERHAPS_WRITE_DEBUG_FRAME_FILE("DW_CFA_advance_loc4", section);
+
+  EXPECT_CALL(handler,
+              ValOffsetRule((fde_start + 0x15813c88ULL * code_factor),
+                            kCFARegister, 0x135270c5, 0x24bad7cb))
+      .InSequence(s)
+      .WillOnce(Return(true));
+  EXPECT_CALL(handler, End()).InSequence(s).WillOnce(Return(true));
+
+  ParseSection(&section);
+}
+
+TEST_F(CFIInsn, DW_CFA_MIPS_advance_loc8) {
+  code_factor = 0x2d;
+  CFISection section(kBigEndian, 8);
+  StockCIEAndFDE(&section);
+  section
+      .D8(dwarf2reader::DW_CFA_MIPS_advance_loc8).D64(0x3c4f3945b92c14ULL)
+      .D8(dwarf2reader::DW_CFA_def_cfa).ULEB128(0xe17ed602).ULEB128(0x3d162e7f)
+      .FinishEntry();
+
+  PERHAPS_WRITE_DEBUG_FRAME_FILE("DW_CFA_advance_loc8", section);
+
+  EXPECT_CALL(handler,
+              ValOffsetRule((fde_start + 0x3c4f3945b92c14ULL * code_factor),
+                            kCFARegister, 0xe17ed602, 0x3d162e7f))
+      .InSequence(s)
+      .WillOnce(Return(true));
+  EXPECT_CALL(handler, End()).InSequence(s).WillOnce(Return(true));
+
+  ParseSection(&section);
+}
+
+TEST_F(CFIInsn, DW_CFA_def_cfa) {
+  CFISection section(kLittleEndian, 4);
+  StockCIEAndFDE(&section);
+  section
+      .D8(dwarf2reader::DW_CFA_def_cfa).ULEB128(0x4e363a85).ULEB128(0x815f9aa7)
+      .FinishEntry();
+
+  PERHAPS_WRITE_DEBUG_FRAME_FILE("DW_CFA_def_cfa", section);
+
+  EXPECT_CALL(handler,
+              ValOffsetRule(fde_start, kCFARegister, 0x4e363a85, 0x815f9aa7))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, End()).InSequence(s).WillOnce(Return(true));
+
+  ParseSection(&section);
+}
+
+TEST_F(CFIInsn, DW_CFA_def_cfa_sf) {
+  CFISection section(kBigEndian, 4);
+  StockCIEAndFDE(&section);
+  section
+      .D8(dwarf2reader::DW_CFA_def_cfa_sf).ULEB128(0x8ccb32b7).LEB128(0x9ea)
+      .D8(dwarf2reader::DW_CFA_def_cfa_sf).ULEB128(0x9b40f5da).LEB128(-0x40a2)
+      .FinishEntry();
+
+  EXPECT_CALL(handler,
+              ValOffsetRule(fde_start, kCFARegister, 0x8ccb32b7,
+                            0x9ea * data_factor))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler,
+              ValOffsetRule(fde_start, kCFARegister, 0x9b40f5da,
+                            -0x40a2 * data_factor))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, End()).InSequence(s).WillOnce(Return(true));
+
+  ParseSection(&section);
+}
+
+TEST_F(CFIInsn, DW_CFA_def_cfa_register) {
+  CFISection section(kLittleEndian, 8);
+  StockCIEAndFDE(&section);
+  section
+      .D8(dwarf2reader::DW_CFA_def_cfa_register).ULEB128(0x3e7e9363)
+      .FinishEntry();
+
+  EXPECT_CALL(handler,
+              ValOffsetRule(fde_start, kCFARegister, 0x3e7e9363, cfa_offset))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, End()).InSequence(s).WillOnce(Return(true));
+
+  ParseSection(&section);
+}
+
+// DW_CFA_def_cfa_register should have no effect when applied to a
+// non-base/offset rule.
+TEST_F(CFIInsn, DW_CFA_def_cfa_registerBadRule) {
+  CFISection section(kBigEndian, 4);
+  StockCIEAndFDE(&section);
+  section
+      .D8(dwarf2reader::DW_CFA_def_cfa_expression).Block("needle in a haystack")
+      .D8(dwarf2reader::DW_CFA_def_cfa_register).ULEB128(0xf1b49e49)
+      .FinishEntry();
+
+  EXPECT_CALL(handler,
+              ValExpressionRule(fde_start, kCFARegister,
+                                "needle in a haystack"))
+      .WillRepeatedly(Return(true));
+  EXPECT_CALL(handler, End()).InSequence(s).WillOnce(Return(true));
+
+  ParseSection(&section);
+}
+
+TEST_F(CFIInsn, DW_CFA_def_cfa_offset) {
+  CFISection section(kBigEndian, 4);
+  StockCIEAndFDE(&section);
+  section
+      .D8(dwarf2reader::DW_CFA_def_cfa_offset).ULEB128(0x1e8e3b9b)
+      .FinishEntry();
+
+  EXPECT_CALL(handler,
+              ValOffsetRule(fde_start, kCFARegister, cfa_base_register,
+                            0x1e8e3b9b))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, End()).InSequence(s).WillOnce(Return(true));
+
+  ParseSection(&section);
+}
+
+TEST_F(CFIInsn, DW_CFA_def_cfa_offset_sf) {
+  CFISection section(kLittleEndian, 4);
+  StockCIEAndFDE(&section);
+  section
+      .D8(dwarf2reader::DW_CFA_def_cfa_offset_sf).LEB128(0x970)
+      .D8(dwarf2reader::DW_CFA_def_cfa_offset_sf).LEB128(-0x2cd)
+      .FinishEntry();
+
+  EXPECT_CALL(handler,
+              ValOffsetRule(fde_start, kCFARegister, cfa_base_register,
+                            0x970 * data_factor))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler,
+              ValOffsetRule(fde_start, kCFARegister, cfa_base_register,
+                            -0x2cd * data_factor))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, End()).InSequence(s).WillOnce(Return(true));
+
+  ParseSection(&section);
+}
+
+// DW_CFA_def_cfa_offset should have no effect when applied to a
+// non-base/offset rule.
+TEST_F(CFIInsn, DW_CFA_def_cfa_offsetBadRule) {
+  CFISection section(kBigEndian, 4);
+  StockCIEAndFDE(&section);
+  section
+      .D8(dwarf2reader::DW_CFA_def_cfa_expression).Block("six ways to Sunday")
+      .D8(dwarf2reader::DW_CFA_def_cfa_offset).ULEB128(0x1e8e3b9b)
+      .FinishEntry();
+
+  EXPECT_CALL(handler,
+              ValExpressionRule(fde_start, kCFARegister, "six ways to Sunday"))
+      .WillRepeatedly(Return(true));
+  EXPECT_CALL(handler, End()).InSequence(s).WillOnce(Return(true));
+
+  ParseSection(&section);
+}
+
+TEST_F(CFIInsn, DW_CFA_def_cfa_expression) {
+  CFISection section(kLittleEndian, 8);
+  StockCIEAndFDE(&section);
+  section
+      .D8(dwarf2reader::DW_CFA_def_cfa_expression).Block("eating crow")
+      .FinishEntry();
+
+  EXPECT_CALL(handler, ValExpressionRule(fde_start, kCFARegister,
+                                         "eating crow"))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, End()).InSequence(s).WillOnce(Return(true));
+
+  ParseSection(&section);
+}
+
+TEST_F(CFIInsn, DW_CFA_undefined) {
+  CFISection section(kLittleEndian, 4);
+  StockCIEAndFDE(&section);
+  section
+      .D8(dwarf2reader::DW_CFA_undefined).ULEB128(0x300ce45d)
+      .FinishEntry();
+
+  EXPECT_CALL(handler, UndefinedRule(fde_start, 0x300ce45d))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, End()).InSequence(s).WillOnce(Return(true));
+
+  ParseSection(&section);
+}
+
+TEST_F(CFIInsn, DW_CFA_same_value) {
+  CFISection section(kLittleEndian, 4);
+  StockCIEAndFDE(&section);
+  section
+      .D8(dwarf2reader::DW_CFA_same_value).ULEB128(0x3865a760)
+      .FinishEntry();
+
+  EXPECT_CALL(handler, SameValueRule(fde_start, 0x3865a760))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, End()).InSequence(s).WillOnce(Return(true));
+
+  ParseSection(&section);
+}
+
+TEST_F(CFIInsn, DW_CFA_offset) {
+  CFISection section(kBigEndian, 4);
+  StockCIEAndFDE(&section);
+  section
+      .D8(dwarf2reader::DW_CFA_offset | 0x2c).ULEB128(0x9f6)
+      .FinishEntry();
+
+  EXPECT_CALL(handler,
+              OffsetRule(fde_start, 0x2c, kCFARegister, 0x9f6 * data_factor))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, End()).InSequence(s).WillOnce(Return(true));
+
+  ParseSection(&section);
+}
+
+TEST_F(CFIInsn, DW_CFA_offset_extended) {
+  CFISection section(kBigEndian, 4);
+  StockCIEAndFDE(&section);
+  section
+      .D8(dwarf2reader::DW_CFA_offset_extended).ULEB128(0x402b).ULEB128(0xb48)
+      .FinishEntry();
+
+  EXPECT_CALL(handler,
+              OffsetRule(fde_start, 0x402b, kCFARegister, 0xb48 * data_factor))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, End()).InSequence(s).WillOnce(Return(true));
+
+  ParseSection(&section);
+}
+
+TEST_F(CFIInsn, DW_CFA_offset_extended_sf) {
+  CFISection section(kBigEndian, 8);
+  StockCIEAndFDE(&section);
+  section
+      .D8(dwarf2reader::DW_CFA_offset_extended_sf)
+          .ULEB128(0x997c23ee).LEB128(0x2d00)
+      .D8(dwarf2reader::DW_CFA_offset_extended_sf)
+          .ULEB128(0x9519eb82).LEB128(-0xa77)
+      .FinishEntry();
+
+  EXPECT_CALL(handler,
+              OffsetRule(fde_start, 0x997c23ee,
+                         kCFARegister, 0x2d00 * data_factor))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler,
+              OffsetRule(fde_start, 0x9519eb82,
+                         kCFARegister, -0xa77 * data_factor))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, End()).InSequence(s).WillOnce(Return(true));
+
+  ParseSection(&section);
+}
+
+TEST_F(CFIInsn, DW_CFA_val_offset) {
+  CFISection section(kBigEndian, 4);
+  StockCIEAndFDE(&section);
+  section
+      .D8(dwarf2reader::DW_CFA_val_offset).ULEB128(0x623562fe).ULEB128(0x673)
+      .FinishEntry();
+
+  EXPECT_CALL(handler,
+              ValOffsetRule(fde_start, 0x623562fe,
+                            kCFARegister, 0x673 * data_factor))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, End()).InSequence(s).WillOnce(Return(true));
+
+  ParseSection(&section);
+}
+
+TEST_F(CFIInsn, DW_CFA_val_offset_sf) {
+  CFISection section(kBigEndian, 4);
+  StockCIEAndFDE(&section);
+  section
+      .D8(dwarf2reader::DW_CFA_val_offset_sf).ULEB128(0x6f4f).LEB128(0xaab)
+      .D8(dwarf2reader::DW_CFA_val_offset_sf).ULEB128(0x2483).LEB128(-0x8a2)
+      .FinishEntry();
+
+  EXPECT_CALL(handler,
+              ValOffsetRule(fde_start, 0x6f4f,
+                            kCFARegister, 0xaab * data_factor))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler,
+              ValOffsetRule(fde_start, 0x2483,
+                            kCFARegister, -0x8a2 * data_factor))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, End()).InSequence(s).WillOnce(Return(true));
+
+  ParseSection(&section);
+}
+
+TEST_F(CFIInsn, DW_CFA_register) {
+  CFISection section(kLittleEndian, 8);
+  StockCIEAndFDE(&section);
+  section
+      .D8(dwarf2reader::DW_CFA_register).ULEB128(0x278d18f9).ULEB128(0x1a684414)
+      .FinishEntry();
+
+  EXPECT_CALL(handler, RegisterRule(fde_start, 0x278d18f9, 0x1a684414))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, End()).InSequence(s).WillOnce(Return(true));
+
+  ParseSection(&section);
+}
+
+TEST_F(CFIInsn, DW_CFA_expression) {
+  CFISection section(kBigEndian, 8);
+  StockCIEAndFDE(&section);
+  section
+      .D8(dwarf2reader::DW_CFA_expression).ULEB128(0xa1619fb2)
+      .Block("plus ça change, plus c'est la même chose")
+      .FinishEntry();
+
+  EXPECT_CALL(handler,
+              ExpressionRule(fde_start, 0xa1619fb2,
+                             "plus ça change, plus c'est la même chose"))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, End()).InSequence(s).WillOnce(Return(true));
+
+  ParseSection(&section);
+}
+
+TEST_F(CFIInsn, DW_CFA_val_expression) {
+  CFISection section(kBigEndian, 4);
+  StockCIEAndFDE(&section);
+  section
+      .D8(dwarf2reader::DW_CFA_val_expression).ULEB128(0xc5e4a9e3)
+      .Block("he who has the gold makes the rules")
+      .FinishEntry();
+
+  EXPECT_CALL(handler,
+              ValExpressionRule(fde_start, 0xc5e4a9e3,
+                                "he who has the gold makes the rules"))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, End()).InSequence(s).WillOnce(Return(true));
+
+  ParseSection(&section);
+}
+
+TEST_F(CFIInsn, DW_CFA_restore) {
+  CFISection section(kLittleEndian, 8);
+  code_factor = 0x01bd188a9b1fa083ULL;
+  data_factor = -0x1ac8;
+  return_register = 0x8c35b049;
+  version = 2;
+  fde_start = 0x2d70fe998298bbb1ULL;
+  fde_size = 0x46ccc2e63cf0b108ULL;
+  Label cie;
+  section
+      .Mark(&cie)
+      .CIEHeader(code_factor, data_factor, return_register, version,
+                 "")
+      // Provide a CFA rule, because register rules require them.
+      .D8(dwarf2reader::DW_CFA_def_cfa).ULEB128(0x6ca1d50e).ULEB128(0x372e38e8)
+      // Provide an offset(N) rule for register 0x3c.
+      .D8(dwarf2reader::DW_CFA_offset | 0x3c).ULEB128(0xb348)
+      .FinishEntry()
+      // In the FDE...
+      .FDEHeader(cie, fde_start, fde_size)
+      // At a second address, provide a new offset(N) rule for register 0x3c.
+      .D8(dwarf2reader::DW_CFA_advance_loc | 0x13)
+      .D8(dwarf2reader::DW_CFA_offset | 0x3c).ULEB128(0x9a50)
+      // At a third address, restore the original rule for register 0x3c.
+      .D8(dwarf2reader::DW_CFA_advance_loc | 0x01)
+      .D8(dwarf2reader::DW_CFA_restore | 0x3c)
+      .FinishEntry();
+
+  {
+    InSequence s;
+    EXPECT_CALL(handler,
+                Entry(_, fde_start, fde_size, version, "", return_register))
+        .WillOnce(Return(true));
+    // CIE's CFA rule.
+    EXPECT_CALL(handler,
+                ValOffsetRule(fde_start, kCFARegister, 0x6ca1d50e, 0x372e38e8))
+        .WillOnce(Return(true));
+    // CIE's rule for register 0x3c.
+    EXPECT_CALL(handler,
+                OffsetRule(fde_start, 0x3c, kCFARegister, 0xb348 * data_factor))
+        .WillOnce(Return(true));
+    // FDE's rule for register 0x3c.
+    EXPECT_CALL(handler,
+                OffsetRule(fde_start + 0x13 * code_factor, 0x3c,
+                           kCFARegister, 0x9a50 * data_factor))
+        .WillOnce(Return(true));
+    // Restore CIE's rule for register 0x3c.
+    EXPECT_CALL(handler,
+                OffsetRule(fde_start + (0x13 + 0x01) * code_factor, 0x3c,
+                           kCFARegister, 0xb348 * data_factor))
+        .WillOnce(Return(true));
+    EXPECT_CALL(handler, End()).WillOnce(Return(true));
+  }
+    
+  ParseSection(&section);
+}
+
+TEST_F(CFIInsn, DW_CFA_restoreNoRule) {
+  CFISection section(kBigEndian, 4);
+  code_factor = 0x005f78143c1c3b82ULL;
+  data_factor = 0x25d0;
+  return_register = 0xe8;
+  version = 1;
+  fde_start = 0x4062e30f;
+  fde_size = 0x5302a389;
+  Label cie;
+  section
+      .Mark(&cie)
+      .CIEHeader(code_factor, data_factor, return_register, version, "")
+      // Provide a CFA rule, because register rules require them.
+      .D8(dwarf2reader::DW_CFA_def_cfa).ULEB128(0x470aa334).ULEB128(0x099ef127)
+      .FinishEntry()
+      // In the FDE...
+      .FDEHeader(cie, fde_start, fde_size)
+      // At a second address, provide an offset(N) rule for register 0x2c.
+      .D8(dwarf2reader::DW_CFA_advance_loc | 0x7)
+      .D8(dwarf2reader::DW_CFA_offset | 0x2c).ULEB128(0x1f47)
+      // At a third address, restore the (missing) CIE rule for register 0x2c.
+      .D8(dwarf2reader::DW_CFA_advance_loc | 0xb)
+      .D8(dwarf2reader::DW_CFA_restore | 0x2c)
+      .FinishEntry();
+
+  {
+    InSequence s;
+    EXPECT_CALL(handler,
+                Entry(_, fde_start, fde_size, version, "", return_register))
+        .WillOnce(Return(true));
+    // CIE's CFA rule.
+    EXPECT_CALL(handler,
+                ValOffsetRule(fde_start, kCFARegister, 0x470aa334, 0x099ef127))
+        .WillOnce(Return(true));
+    // FDE's rule for register 0x2c.
+    EXPECT_CALL(handler,
+                OffsetRule(fde_start + 0x7 * code_factor, 0x2c,
+                           kCFARegister, 0x1f47 * data_factor))
+        .WillOnce(Return(true));
+    // Restore CIE's (missing) rule for register 0x2c.
+    EXPECT_CALL(handler,
+                SameValueRule(fde_start + (0x7 + 0xb) * code_factor, 0x2c))
+        .WillOnce(Return(true));
+    EXPECT_CALL(handler, End()).WillOnce(Return(true));
+  }
+    
+  ParseSection(&section);
+}
+
+TEST_F(CFIInsn, DW_CFA_restore_extended) {
+  CFISection section(kBigEndian, 4);
+  code_factor = 0x126e;
+  data_factor = -0xd8b;
+  return_register = 0x77711787;
+  version = 3;
+  fde_start = 0x01f55a45;
+  fde_size = 0x452adb80;
+  Label cie;
+  section
+      .Mark(&cie)
+      .CIEHeader(code_factor, data_factor, return_register, version,
+                 "", true /* dwarf64 */ )
+      // Provide a CFA rule, because register rules require them.
+      .D8(dwarf2reader::DW_CFA_def_cfa).ULEB128(0x56fa0edd).ULEB128(0x097f78a5)
+      // Provide an offset(N) rule for register 0x0f9b8a1c.
+      .D8(dwarf2reader::DW_CFA_offset_extended)
+          .ULEB128(0x0f9b8a1c).ULEB128(0xc979)
+      .FinishEntry()
+      // In the FDE...
+      .FDEHeader(cie, fde_start, fde_size)
+      // At a second address, provide a new offset(N) rule for reg 0x0f9b8a1c.
+      .D8(dwarf2reader::DW_CFA_advance_loc | 0x3)
+      .D8(dwarf2reader::DW_CFA_offset_extended)
+          .ULEB128(0x0f9b8a1c).ULEB128(0x3b7b)
+      // At a third address, restore the original rule for register 0x0f9b8a1c.
+      .D8(dwarf2reader::DW_CFA_advance_loc | 0x04)
+      .D8(dwarf2reader::DW_CFA_restore_extended).ULEB128(0x0f9b8a1c)
+      .FinishEntry();
+
+  {
+    InSequence s;
+    EXPECT_CALL(handler,
+                Entry(_, fde_start, fde_size, version, "", return_register))
+        .WillOnce(Return(true));
+    // CIE's CFA rule.
+    EXPECT_CALL(handler,
+                ValOffsetRule(fde_start, kCFARegister, 0x56fa0edd, 0x097f78a5))
+        .WillOnce(Return(true));
+    // CIE's rule for register 0x0f9b8a1c.
+    EXPECT_CALL(handler,
+                OffsetRule(fde_start, 0x0f9b8a1c, kCFARegister,
+                           0xc979 * data_factor))
+        .WillOnce(Return(true));
+    // FDE's rule for register 0x0f9b8a1c.
+    EXPECT_CALL(handler,
+                OffsetRule(fde_start + 0x3 * code_factor, 0x0f9b8a1c,
+                           kCFARegister, 0x3b7b * data_factor))
+        .WillOnce(Return(true));
+    // Restore CIE's rule for register 0x0f9b8a1c.
+    EXPECT_CALL(handler,
+                OffsetRule(fde_start + (0x3 + 0x4) * code_factor, 0x0f9b8a1c,
+                           kCFARegister, 0xc979 * data_factor))
+        .WillOnce(Return(true));
+    EXPECT_CALL(handler, End()).WillOnce(Return(true));
+  }
+    
+  ParseSection(&section);
+}
+
+TEST_F(CFIInsn, DW_CFA_remember_and_restore_state) {
+  CFISection section(kLittleEndian, 8);
+  StockCIEAndFDE(&section);
+
+  // We create a state, save it, modify it, and then restore. We
+  // refer to the state that is overridden the restore as the
+  // "outgoing" state, and the restored state the "incoming" state.
+  //
+  // Register         outgoing        incoming        expect
+  // 1                offset(N)       no rule         new "same value" rule
+  // 2                register(R)     offset(N)       report changed rule
+  // 3                offset(N)       offset(M)       report changed offset
+  // 4                offset(N)       offset(N)       no report
+  // 5                offset(N)       no rule         new "same value" rule
+  section
+      // Create the "incoming" state, which we will save and later restore.
+      .D8(dwarf2reader::DW_CFA_offset | 2).ULEB128(0x9806)
+      .D8(dwarf2reader::DW_CFA_offset | 3).ULEB128(0x995d)
+      .D8(dwarf2reader::DW_CFA_offset | 4).ULEB128(0x7055)
+      .D8(dwarf2reader::DW_CFA_remember_state)
+      // Advance to a new instruction; an implementation could legitimately
+      // ignore all but the final rule for a given register at a given address.
+      .D8(dwarf2reader::DW_CFA_advance_loc | 1)
+      // Create the "outgoing" state, which we will discard.
+      .D8(dwarf2reader::DW_CFA_offset | 1).ULEB128(0xea1a)
+      .D8(dwarf2reader::DW_CFA_register).ULEB128(2).ULEB128(0x1d2a3767)
+      .D8(dwarf2reader::DW_CFA_offset | 3).ULEB128(0xdd29)
+      .D8(dwarf2reader::DW_CFA_offset | 5).ULEB128(0xf1ce)
+      // At a third address, restore the incoming state.
+      .D8(dwarf2reader::DW_CFA_advance_loc | 1)
+      .D8(dwarf2reader::DW_CFA_restore_state)
+      .FinishEntry();
+
+  uint64 addr = fde_start;
+
+  // Expect the incoming rules to be reported.
+  EXPECT_CALL(handler, OffsetRule(addr, 2, kCFARegister, 0x9806 * data_factor))
+    .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, OffsetRule(addr, 3, kCFARegister, 0x995d * data_factor))
+    .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, OffsetRule(addr, 4, kCFARegister, 0x7055 * data_factor))
+    .InSequence(s).WillOnce(Return(true));
+
+  addr += code_factor;
+
+  // After the save, we establish the outgoing rule set.
+  EXPECT_CALL(handler, OffsetRule(addr, 1, kCFARegister, 0xea1a * data_factor))
+    .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, RegisterRule(addr, 2, 0x1d2a3767))
+    .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, OffsetRule(addr, 3, kCFARegister, 0xdd29 * data_factor))
+    .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, OffsetRule(addr, 5, kCFARegister, 0xf1ce * data_factor))
+    .InSequence(s).WillOnce(Return(true));
+
+  addr += code_factor;
+
+  // Finally, after the restore, expect to see the differences from
+  // the outgoing to the incoming rules reported.
+  EXPECT_CALL(handler, SameValueRule(addr, 1))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, OffsetRule(addr, 2, kCFARegister, 0x9806 * data_factor))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, OffsetRule(addr, 3, kCFARegister, 0x995d * data_factor))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, SameValueRule(addr, 5))
+      .InSequence(s).WillOnce(Return(true));
+
+  EXPECT_CALL(handler, End()).WillOnce(Return(true));
+
+  ParseSection(&section);
+}
+
+// Check that restoring a rule set reports changes to the CFA rule.
+TEST_F(CFIInsn, DW_CFA_remember_and_restore_stateCFA) {
+  CFISection section(kBigEndian, 4);
+  StockCIEAndFDE(&section);
+
+  section
+      .D8(dwarf2reader::DW_CFA_remember_state)
+      .D8(dwarf2reader::DW_CFA_advance_loc | 1)
+      .D8(dwarf2reader::DW_CFA_def_cfa_offset).ULEB128(0x90481102)
+      .D8(dwarf2reader::DW_CFA_advance_loc | 1)
+      .D8(dwarf2reader::DW_CFA_restore_state)
+      .FinishEntry();
+
+  EXPECT_CALL(handler, ValOffsetRule(fde_start + code_factor, kCFARegister,
+                                     cfa_base_register, 0x90481102))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, ValOffsetRule(fde_start + code_factor * 2, kCFARegister,
+                                     cfa_base_register, cfa_offset))
+      .InSequence(s).WillOnce(Return(true));
+
+  EXPECT_CALL(handler, End()).WillOnce(Return(true));
+
+  ParseSection(&section);
+}
+
+TEST_F(CFIInsn, DW_CFA_nop) {
+  CFISection section(kLittleEndian, 4);
+  StockCIEAndFDE(&section);
+  section
+      .D8(dwarf2reader::DW_CFA_nop)
+      .D8(dwarf2reader::DW_CFA_def_cfa).ULEB128(0x3fb8d4f1).ULEB128(0x078dc67b)
+      .D8(dwarf2reader::DW_CFA_nop)
+      .FinishEntry();
+
+  EXPECT_CALL(handler,
+              ValOffsetRule(fde_start, kCFARegister, 0x3fb8d4f1, 0x078dc67b))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, End()).InSequence(s).WillOnce(Return(true));
+
+  ParseSection(&section);
+}
+
+TEST_F(CFIInsn, DW_CFA_GNU_window_save) {
+  CFISection section(kBigEndian, 4);
+  StockCIEAndFDE(&section);
+  section
+      .D8(dwarf2reader::DW_CFA_GNU_window_save)
+      .FinishEntry();
+
+  // Don't include all the rules in any particular sequence.
+
+  // The caller's %o0-%o7 have become the callee's %i0-%i7. This is
+  // the GCC register numbering.
+  for (int i = 8; i < 16; i++)
+    EXPECT_CALL(handler, RegisterRule(fde_start, i, i + 16))
+        .WillOnce(Return(true));
+  // The caller's %l0-%l7 and %i0-%i7 have been saved at the top of
+  // its frame.
+  for (int i = 16; i < 32; i++)
+    EXPECT_CALL(handler, OffsetRule(fde_start, i, kCFARegister, (i-16) * 4))
+        .WillOnce(Return(true));
+
+  EXPECT_CALL(handler, End()).InSequence(s).WillOnce(Return(true));
+
+  ParseSection(&section);
+}
+
+TEST_F(CFIInsn, DW_CFA_GNU_args_size) {
+  CFISection section(kLittleEndian, 8);
+  StockCIEAndFDE(&section);
+  section
+      .D8(dwarf2reader::DW_CFA_GNU_args_size).ULEB128(0xeddfa520)
+      // Verify that we see this, meaning we parsed the above properly.
+      .D8(dwarf2reader::DW_CFA_offset | 0x23).ULEB128(0x269)
+      .FinishEntry();
+
+  EXPECT_CALL(handler,
+              OffsetRule(fde_start, 0x23, kCFARegister, 0x269 * data_factor))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, End()).InSequence(s).WillOnce(Return(true));
+
+  ParseSection(&section);
+}
+
+TEST_F(CFIInsn, DW_CFA_GNU_negative_offset_extended) {
+  CFISection section(kLittleEndian, 4);
+  StockCIEAndFDE(&section);
+  section
+      .D8(dwarf2reader::DW_CFA_GNU_negative_offset_extended)
+      .ULEB128(0x430cc87a).ULEB128(0x613)
+      .FinishEntry();
+
+  EXPECT_CALL(handler,
+              OffsetRule(fde_start, 0x430cc87a,
+                         kCFARegister, -0x613 * data_factor))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, End()).InSequence(s).WillOnce(Return(true));
+
+  ParseSection(&section);
+}
+
+// Three FDEs: skip the second
+TEST_F(CFIInsn, SkipFDE) {
+  CFISection section(kBigEndian, 4);
+  Label cie;
+  section
+      // CIE, used by all FDEs.
+      .Mark(&cie)
+      .CIEHeader(0x010269f2, 0x9177, 0xedca5849, 2, "")
+      .D8(dwarf2reader::DW_CFA_def_cfa).ULEB128(0x42ed390b).ULEB128(0x98f43aad)
+      .FinishEntry()
+      // First FDE.
+      .FDEHeader(cie, 0xa870ebdd, 0x60f6aa4)
+      .D8(dwarf2reader::DW_CFA_register).ULEB128(0x3a860351).ULEB128(0x6c9a6bcf)
+      .FinishEntry()
+      // Second FDE.
+      .FDEHeader(cie, 0xc534f7c0, 0xf6552e9, true /* dwarf64 */)
+      .D8(dwarf2reader::DW_CFA_register).ULEB128(0x1b62c234).ULEB128(0x26586b18)
+      .FinishEntry()
+      // Third FDE.
+      .FDEHeader(cie, 0xf681cfc8, 0x7e4594e)
+      .D8(dwarf2reader::DW_CFA_register).ULEB128(0x26c53934).ULEB128(0x18eeb8a4)
+      .FinishEntry();
+
+  {
+    InSequence s;
+
+    // Process the first FDE.
+    EXPECT_CALL(handler, Entry(_, 0xa870ebdd, 0x60f6aa4, 2, "", 0xedca5849))
+        .WillOnce(Return(true));
+    EXPECT_CALL(handler, ValOffsetRule(0xa870ebdd, kCFARegister,
+                                       0x42ed390b, 0x98f43aad))
+        .WillOnce(Return(true));
+    EXPECT_CALL(handler, RegisterRule(0xa870ebdd, 0x3a860351, 0x6c9a6bcf))
+        .WillOnce(Return(true));
+    EXPECT_CALL(handler, End())
+        .WillOnce(Return(true));
+
+    // Skip the second FDE.
+    EXPECT_CALL(handler, Entry(_, 0xc534f7c0, 0xf6552e9, 2, "", 0xedca5849))
+        .WillOnce(Return(false));
+
+    // Process the third FDE.
+    EXPECT_CALL(handler, Entry(_, 0xf681cfc8, 0x7e4594e, 2, "", 0xedca5849))
+        .WillOnce(Return(true));
+    EXPECT_CALL(handler, ValOffsetRule(0xf681cfc8, kCFARegister,
+                                       0x42ed390b, 0x98f43aad))
+        .WillOnce(Return(true));
+    EXPECT_CALL(handler, RegisterRule(0xf681cfc8, 0x26c53934, 0x18eeb8a4))
+        .WillOnce(Return(true));
+    EXPECT_CALL(handler, End())
+        .WillOnce(Return(true));
+  }
+
+  ParseSection(&section);
+}
+
+// Quit processing in the middle of an entry's instructions.
+TEST_F(CFIInsn, QuitMidentry) {
+  CFISection section(kLittleEndian, 8);
+  StockCIEAndFDE(&section);
+  section
+      .D8(dwarf2reader::DW_CFA_register).ULEB128(0xe0cf850d).ULEB128(0x15aab431)
+      .D8(dwarf2reader::DW_CFA_expression).ULEB128(0x46750aa5).Block("meat")
+      .FinishEntry();
+
+  EXPECT_CALL(handler, RegisterRule(fde_start, 0xe0cf850d, 0x15aab431))
+      .InSequence(s).WillOnce(Return(false));
+  EXPECT_CALL(handler, End())
+      .InSequence(s).WillOnce(Return(true));
+  
+  ParseSection(&section, false);
+}
+
+class CFIRestore: public CFIInsnFixture, public Test { };
+
+TEST_F(CFIRestore, RestoreUndefinedRuleUnchanged) {
+  CFISection section(kLittleEndian, 4);
+  StockCIEAndFDE(&section);
+  section
+      .D8(dwarf2reader::DW_CFA_undefined).ULEB128(0x0bac878e)
+      .D8(dwarf2reader::DW_CFA_remember_state)
+      .D8(dwarf2reader::DW_CFA_advance_loc | 1)
+      .D8(dwarf2reader::DW_CFA_restore_state)
+      .FinishEntry();
+
+  EXPECT_CALL(handler, UndefinedRule(fde_start, 0x0bac878e))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, End()).WillOnce(Return(true));
+
+  ParseSection(&section);
+}
+
+TEST_F(CFIRestore, RestoreUndefinedRuleChanged) {
+  CFISection section(kLittleEndian, 4);
+  StockCIEAndFDE(&section);
+  section
+      .D8(dwarf2reader::DW_CFA_undefined).ULEB128(0x7dedff5f)
+      .D8(dwarf2reader::DW_CFA_remember_state)
+      .D8(dwarf2reader::DW_CFA_advance_loc | 1)
+      .D8(dwarf2reader::DW_CFA_same_value).ULEB128(0x7dedff5f)
+      .D8(dwarf2reader::DW_CFA_advance_loc | 1)
+      .D8(dwarf2reader::DW_CFA_restore_state)
+      .FinishEntry();
+
+  EXPECT_CALL(handler, UndefinedRule(fde_start, 0x7dedff5f))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, SameValueRule(fde_start + code_factor, 0x7dedff5f))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, UndefinedRule(fde_start + 2 * code_factor, 0x7dedff5f))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, End()).WillOnce(Return(true));
+
+  ParseSection(&section);
+}
+
+TEST_F(CFIRestore, RestoreSameValueRuleUnchanged) {
+  CFISection section(kLittleEndian, 4);
+  StockCIEAndFDE(&section);
+  section
+      .D8(dwarf2reader::DW_CFA_same_value).ULEB128(0xadbc9b3a)
+      .D8(dwarf2reader::DW_CFA_remember_state)
+      .D8(dwarf2reader::DW_CFA_advance_loc | 1)
+      .D8(dwarf2reader::DW_CFA_restore_state)
+      .FinishEntry();
+
+  EXPECT_CALL(handler, SameValueRule(fde_start, 0xadbc9b3a))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, End()).WillOnce(Return(true));
+
+  ParseSection(&section);
+}
+
+TEST_F(CFIRestore, RestoreSameValueRuleChanged) {
+  CFISection section(kLittleEndian, 4);
+  StockCIEAndFDE(&section);
+  section
+      .D8(dwarf2reader::DW_CFA_same_value).ULEB128(0x3d90dcb5)
+      .D8(dwarf2reader::DW_CFA_remember_state)
+      .D8(dwarf2reader::DW_CFA_advance_loc | 1)
+      .D8(dwarf2reader::DW_CFA_undefined).ULEB128(0x3d90dcb5)
+      .D8(dwarf2reader::DW_CFA_advance_loc | 1)
+      .D8(dwarf2reader::DW_CFA_restore_state)
+      .FinishEntry();
+
+  EXPECT_CALL(handler, SameValueRule(fde_start, 0x3d90dcb5))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, UndefinedRule(fde_start + code_factor, 0x3d90dcb5))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, SameValueRule(fde_start + 2 * code_factor, 0x3d90dcb5))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, End()).WillOnce(Return(true));
+
+  ParseSection(&section);
+}
+
+TEST_F(CFIRestore, RestoreOffsetRuleUnchanged) {
+  CFISection section(kLittleEndian, 4);
+  StockCIEAndFDE(&section);
+  section
+      .D8(dwarf2reader::DW_CFA_offset | 0x14).ULEB128(0xb6f)
+      .D8(dwarf2reader::DW_CFA_remember_state)
+      .D8(dwarf2reader::DW_CFA_advance_loc | 1)
+      .D8(dwarf2reader::DW_CFA_restore_state)
+      .FinishEntry();
+
+  EXPECT_CALL(handler, OffsetRule(fde_start, 0x14,
+                                  kCFARegister, 0xb6f * data_factor))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, End()).WillOnce(Return(true));
+
+  ParseSection(&section);
+}
+
+TEST_F(CFIRestore, RestoreOffsetRuleChanged) {
+  CFISection section(kLittleEndian, 4);
+  StockCIEAndFDE(&section);
+  section
+      .D8(dwarf2reader::DW_CFA_offset | 0x21).ULEB128(0xeb7)
+      .D8(dwarf2reader::DW_CFA_remember_state)
+      .D8(dwarf2reader::DW_CFA_advance_loc | 1)
+      .D8(dwarf2reader::DW_CFA_undefined).ULEB128(0x21)
+      .D8(dwarf2reader::DW_CFA_advance_loc | 1)
+      .D8(dwarf2reader::DW_CFA_restore_state)
+      .FinishEntry();
+
+  EXPECT_CALL(handler, OffsetRule(fde_start, 0x21,
+                                  kCFARegister, 0xeb7 * data_factor))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, UndefinedRule(fde_start + code_factor, 0x21))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, OffsetRule(fde_start + 2 * code_factor, 0x21,
+                                  kCFARegister, 0xeb7 * data_factor))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, End()).WillOnce(Return(true));
+
+  ParseSection(&section);
+}
+
+TEST_F(CFIRestore, RestoreOffsetRuleChangedOffset) {
+  CFISection section(kLittleEndian, 4);
+  StockCIEAndFDE(&section);
+  section
+      .D8(dwarf2reader::DW_CFA_offset | 0x21).ULEB128(0x134)
+      .D8(dwarf2reader::DW_CFA_remember_state)
+      .D8(dwarf2reader::DW_CFA_advance_loc | 1)
+      .D8(dwarf2reader::DW_CFA_offset | 0x21).ULEB128(0xf4f)
+      .D8(dwarf2reader::DW_CFA_advance_loc | 1)
+      .D8(dwarf2reader::DW_CFA_restore_state)
+      .FinishEntry();
+
+  EXPECT_CALL(handler, OffsetRule(fde_start, 0x21,
+                                  kCFARegister, 0x134 * data_factor))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, OffsetRule(fde_start + code_factor, 0x21,
+                                  kCFARegister, 0xf4f * data_factor))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, OffsetRule(fde_start + 2 * code_factor, 0x21,
+                                  kCFARegister, 0x134 * data_factor))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, End()).WillOnce(Return(true));
+
+  ParseSection(&section);
+}
+
+TEST_F(CFIRestore, RestoreValOffsetRuleUnchanged) {
+  CFISection section(kLittleEndian, 4);
+  StockCIEAndFDE(&section);
+  section
+      .D8(dwarf2reader::DW_CFA_val_offset).ULEB128(0x829caee6).ULEB128(0xe4c)
+      .D8(dwarf2reader::DW_CFA_remember_state)
+      .D8(dwarf2reader::DW_CFA_advance_loc | 1)
+      .D8(dwarf2reader::DW_CFA_restore_state)
+      .FinishEntry();
+
+  EXPECT_CALL(handler, ValOffsetRule(fde_start, 0x829caee6,
+                                  kCFARegister, 0xe4c * data_factor))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, End()).WillOnce(Return(true));
+
+  ParseSection(&section);
+}
+
+TEST_F(CFIRestore, RestoreValOffsetRuleChanged) {
+  CFISection section(kLittleEndian, 4);
+  StockCIEAndFDE(&section);
+  section
+      .D8(dwarf2reader::DW_CFA_val_offset).ULEB128(0xf17c36d6).ULEB128(0xeb7)
+      .D8(dwarf2reader::DW_CFA_remember_state)
+      .D8(dwarf2reader::DW_CFA_advance_loc | 1)
+      .D8(dwarf2reader::DW_CFA_undefined).ULEB128(0xf17c36d6)
+      .D8(dwarf2reader::DW_CFA_advance_loc | 1)
+      .D8(dwarf2reader::DW_CFA_restore_state)
+      .FinishEntry();
+
+  EXPECT_CALL(handler, ValOffsetRule(fde_start, 0xf17c36d6,
+                                  kCFARegister, 0xeb7 * data_factor))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, UndefinedRule(fde_start + code_factor, 0xf17c36d6))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, ValOffsetRule(fde_start + 2 * code_factor, 0xf17c36d6,
+                                  kCFARegister, 0xeb7 * data_factor))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, End()).WillOnce(Return(true));
+
+  ParseSection(&section);
+}
+
+TEST_F(CFIRestore, RestoreValOffsetRuleChangedValOffset) {
+  CFISection section(kLittleEndian, 4);
+  StockCIEAndFDE(&section);
+  section
+      .D8(dwarf2reader::DW_CFA_val_offset).ULEB128(0x2cf0ab1b).ULEB128(0x562)
+      .D8(dwarf2reader::DW_CFA_remember_state)
+      .D8(dwarf2reader::DW_CFA_advance_loc | 1)
+      .D8(dwarf2reader::DW_CFA_val_offset).ULEB128(0x2cf0ab1b).ULEB128(0xe88)
+      .D8(dwarf2reader::DW_CFA_advance_loc | 1)
+      .D8(dwarf2reader::DW_CFA_restore_state)
+      .FinishEntry();
+
+  EXPECT_CALL(handler, ValOffsetRule(fde_start, 0x2cf0ab1b,
+                                  kCFARegister, 0x562 * data_factor))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, ValOffsetRule(fde_start + code_factor, 0x2cf0ab1b,
+                                  kCFARegister, 0xe88 * data_factor))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, ValOffsetRule(fde_start + 2 * code_factor, 0x2cf0ab1b,
+                                  kCFARegister, 0x562 * data_factor))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, End()).WillOnce(Return(true));
+
+  ParseSection(&section);
+}
+
+TEST_F(CFIRestore, RestoreRegisterRuleUnchanged) {
+  CFISection section(kLittleEndian, 4);
+  StockCIEAndFDE(&section);
+  section
+      .D8(dwarf2reader::DW_CFA_register).ULEB128(0x77514acc).ULEB128(0x464de4ce)
+      .D8(dwarf2reader::DW_CFA_remember_state)
+      .D8(dwarf2reader::DW_CFA_advance_loc | 1)
+      .D8(dwarf2reader::DW_CFA_restore_state)
+      .FinishEntry();
+
+  EXPECT_CALL(handler, RegisterRule(fde_start, 0x77514acc, 0x464de4ce))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, End()).WillOnce(Return(true));
+
+  ParseSection(&section);
+}
+
+TEST_F(CFIRestore, RestoreRegisterRuleChanged) {
+  CFISection section(kLittleEndian, 4);
+  StockCIEAndFDE(&section);
+  section
+      .D8(dwarf2reader::DW_CFA_register).ULEB128(0xe39acce5).ULEB128(0x095f1559)
+      .D8(dwarf2reader::DW_CFA_remember_state)
+      .D8(dwarf2reader::DW_CFA_advance_loc | 1)
+      .D8(dwarf2reader::DW_CFA_undefined).ULEB128(0xe39acce5)
+      .D8(dwarf2reader::DW_CFA_advance_loc | 1)
+      .D8(dwarf2reader::DW_CFA_restore_state)
+      .FinishEntry();
+
+  EXPECT_CALL(handler, RegisterRule(fde_start, 0xe39acce5, 0x095f1559))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, UndefinedRule(fde_start + code_factor, 0xe39acce5))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, RegisterRule(fde_start + 2 * code_factor, 0xe39acce5,
+                                    0x095f1559))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, End()).WillOnce(Return(true));
+
+  ParseSection(&section);
+}
+
+TEST_F(CFIRestore, RestoreRegisterRuleChangedRegister) {
+  CFISection section(kLittleEndian, 4);
+  StockCIEAndFDE(&section);
+  section
+      .D8(dwarf2reader::DW_CFA_register).ULEB128(0xd40e21b1).ULEB128(0x16607d6a)
+      .D8(dwarf2reader::DW_CFA_remember_state)
+      .D8(dwarf2reader::DW_CFA_advance_loc | 1)
+      .D8(dwarf2reader::DW_CFA_register).ULEB128(0xd40e21b1).ULEB128(0xbabb4742)
+      .D8(dwarf2reader::DW_CFA_advance_loc | 1)
+      .D8(dwarf2reader::DW_CFA_restore_state)
+      .FinishEntry();
+
+  EXPECT_CALL(handler, RegisterRule(fde_start, 0xd40e21b1, 0x16607d6a))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, RegisterRule(fde_start + code_factor, 0xd40e21b1,
+                                    0xbabb4742))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, RegisterRule(fde_start + 2 * code_factor, 0xd40e21b1,
+                                    0x16607d6a))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, End()).WillOnce(Return(true));
+
+  ParseSection(&section);
+}
+
+TEST_F(CFIRestore, RestoreExpressionRuleUnchanged) {
+  CFISection section(kLittleEndian, 4);
+  StockCIEAndFDE(&section);
+  section
+      .D8(dwarf2reader::DW_CFA_expression).ULEB128(0x666ae152).Block("dwarf")
+      .D8(dwarf2reader::DW_CFA_remember_state)
+      .D8(dwarf2reader::DW_CFA_advance_loc | 1)
+      .D8(dwarf2reader::DW_CFA_restore_state)
+      .FinishEntry();
+
+  EXPECT_CALL(handler, ExpressionRule(fde_start, 0x666ae152, "dwarf"))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, End()).WillOnce(Return(true));
+
+  ParseSection(&section);
+}
+
+TEST_F(CFIRestore, RestoreExpressionRuleChanged) {
+  CFISection section(kLittleEndian, 4);
+  StockCIEAndFDE(&section);
+  section
+      .D8(dwarf2reader::DW_CFA_expression).ULEB128(0xb5ca5c46).Block("elf")
+      .D8(dwarf2reader::DW_CFA_remember_state)
+      .D8(dwarf2reader::DW_CFA_advance_loc | 1)
+      .D8(dwarf2reader::DW_CFA_undefined).ULEB128(0xb5ca5c46)
+      .D8(dwarf2reader::DW_CFA_advance_loc | 1)
+      .D8(dwarf2reader::DW_CFA_restore_state)
+      .FinishEntry();
+
+  EXPECT_CALL(handler, ExpressionRule(fde_start, 0xb5ca5c46, "elf"))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, UndefinedRule(fde_start + code_factor, 0xb5ca5c46))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, ExpressionRule(fde_start + 2 * code_factor, 0xb5ca5c46,
+                                      "elf"))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, End()).WillOnce(Return(true));
+
+  ParseSection(&section);
+}
+
+TEST_F(CFIRestore, RestoreExpressionRuleChangedExpression) {
+  CFISection section(kLittleEndian, 4);
+  StockCIEAndFDE(&section);
+  section
+      .D8(dwarf2reader::DW_CFA_expression).ULEB128(0x500f5739).Block("smurf")
+      .D8(dwarf2reader::DW_CFA_remember_state)
+      .D8(dwarf2reader::DW_CFA_advance_loc | 1)
+      .D8(dwarf2reader::DW_CFA_expression).ULEB128(0x500f5739).Block("orc")
+      .D8(dwarf2reader::DW_CFA_advance_loc | 1)
+      .D8(dwarf2reader::DW_CFA_restore_state)
+      .FinishEntry();
+
+  EXPECT_CALL(handler, ExpressionRule(fde_start, 0x500f5739, "smurf"))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, ExpressionRule(fde_start + code_factor, 0x500f5739,
+                                      "orc"))
+      .InSequence(s).WillOnce(Return(true));
+  // Expectations are not wishes.
+  EXPECT_CALL(handler, ExpressionRule(fde_start + 2 * code_factor, 0x500f5739,
+                                      "smurf"))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, End()).WillOnce(Return(true));
+
+  ParseSection(&section);
+}
+
+TEST_F(CFIRestore, RestoreValExpressionRuleUnchanged) {
+  CFISection section(kLittleEndian, 4);
+  StockCIEAndFDE(&section);
+  section
+      .D8(dwarf2reader::DW_CFA_val_expression).ULEB128(0x666ae152)
+      .Block("hideous")
+      .D8(dwarf2reader::DW_CFA_remember_state)
+      .D8(dwarf2reader::DW_CFA_advance_loc | 1)
+      .D8(dwarf2reader::DW_CFA_restore_state)
+      .FinishEntry();
+
+  EXPECT_CALL(handler, ValExpressionRule(fde_start, 0x666ae152, "hideous"))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, End()).WillOnce(Return(true));
+
+  ParseSection(&section);
+}
+
+TEST_F(CFIRestore, RestoreValExpressionRuleChanged) {
+  CFISection section(kLittleEndian, 4);
+  StockCIEAndFDE(&section);
+  section
+      .D8(dwarf2reader::DW_CFA_val_expression).ULEB128(0xb5ca5c46)
+      .Block("revolting")
+      .D8(dwarf2reader::DW_CFA_remember_state)
+      .D8(dwarf2reader::DW_CFA_advance_loc | 1)
+      .D8(dwarf2reader::DW_CFA_undefined).ULEB128(0xb5ca5c46)
+      .D8(dwarf2reader::DW_CFA_advance_loc | 1)
+      .D8(dwarf2reader::DW_CFA_restore_state)
+      .FinishEntry();
+
+  PERHAPS_WRITE_DEBUG_FRAME_FILE("RestoreValExpressionRuleChanged", section);
+
+  EXPECT_CALL(handler, ValExpressionRule(fde_start, 0xb5ca5c46, "revolting"))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, UndefinedRule(fde_start + code_factor, 0xb5ca5c46))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, ValExpressionRule(fde_start + 2 * code_factor, 0xb5ca5c46,
+                                      "revolting"))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, End()).WillOnce(Return(true));
+
+  ParseSection(&section);
+}
+
+TEST_F(CFIRestore, RestoreValExpressionRuleChangedValExpression) {
+  CFISection section(kLittleEndian, 4);
+  StockCIEAndFDE(&section);
+  section
+      .D8(dwarf2reader::DW_CFA_val_expression).ULEB128(0x500f5739)
+      .Block("repulsive")
+      .D8(dwarf2reader::DW_CFA_remember_state)
+      .D8(dwarf2reader::DW_CFA_advance_loc | 1)
+      .D8(dwarf2reader::DW_CFA_val_expression).ULEB128(0x500f5739)
+      .Block("nauseous")
+      .D8(dwarf2reader::DW_CFA_advance_loc | 1)
+      .D8(dwarf2reader::DW_CFA_restore_state)
+      .FinishEntry();
+
+  PERHAPS_WRITE_DEBUG_FRAME_FILE("RestoreValExpressionRuleChangedValExpression",
+                                 section);
+
+  EXPECT_CALL(handler, ValExpressionRule(fde_start, 0x500f5739, "repulsive"))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, ValExpressionRule(fde_start + code_factor, 0x500f5739,
+                                      "nauseous"))
+      .InSequence(s).WillOnce(Return(true));
+  // Expectations are not wishes.
+  EXPECT_CALL(handler, ValExpressionRule(fde_start + 2 * code_factor, 0x500f5739,
+                                      "repulsive"))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, End()).WillOnce(Return(true));
+
+  ParseSection(&section);
+}
+
+struct EHFrameFixture: public CFIInsnFixture {
+  EHFrameFixture() 
+      : CFIInsnFixture(), section(kBigEndian, 4, true) {
+    encoded_pointer_bases.cfi  = 0x7f496cb2;
+    encoded_pointer_bases.text = 0x540f67b6;
+    encoded_pointer_bases.data = 0xe3eab768;
+    section.SetEncodedPointerBases(encoded_pointer_bases);
+  }
+  CFISection section;
+  CFISection::EncodedPointerBases encoded_pointer_bases;
+
+  // Parse CFIInsnFixture::ParseSection, but parse the section as
+  // .eh_frame data, supplying stock base addresses.
+  void ParseEHFrameSection(CFISection *section, bool succeeds = true) {
+    EXPECT_TRUE(section->ContainsEHFrame());
+    string contents;
+    EXPECT_TRUE(section->GetContents(&contents));
+    dwarf2reader::Endianness endianness;
+    if (section->endianness() == kBigEndian)
+      endianness = ENDIANNESS_BIG;
+    else {
+      assert(section->endianness() == kLittleEndian);
+      endianness = ENDIANNESS_LITTLE;
+    }
+    ByteReader byte_reader(endianness);
+    byte_reader.SetAddressSize(section->AddressSize());
+    byte_reader.SetCFIDataBase(encoded_pointer_bases.cfi, contents.data());
+    byte_reader.SetTextBase(encoded_pointer_bases.text);
+    byte_reader.SetDataBase(encoded_pointer_bases.data);
+    CallFrameInfo parser(contents.data(), contents.size(),
+                         &byte_reader, &handler, &reporter, true);
+    if (succeeds)
+      EXPECT_TRUE(parser.Start());
+    else
+      EXPECT_FALSE(parser.Start());
+  }
+
+};
+
+class EHFrame: public EHFrameFixture, public Test { };
+
+// A simple CIE, an FDE, and a terminator.
+TEST_F(EHFrame, Terminator) {
+  Label cie;
+  section
+      .Mark(&cie)
+      .CIEHeader(9968, 2466, 67, 1, "")
+      .D8(dwarf2reader::DW_CFA_def_cfa).ULEB128(3772).ULEB128(1372)
+      .FinishEntry()
+      .FDEHeader(cie, 0x848037a1, 0x7b30475e)
+      .D8(dwarf2reader::DW_CFA_set_loc).D32(0x17713850)
+      .D8(dwarf2reader::DW_CFA_undefined).ULEB128(5721)
+      .FinishEntry()
+      .D32(0)                           // Terminate the sequence.
+      // This FDE should be ignored.
+      .FDEHeader(cie, 0xf19629fe, 0x439fb09b)
+      .FinishEntry();
+
+  PERHAPS_WRITE_EH_FRAME_FILE("EHFrame.Terminator", section);
+
+  EXPECT_CALL(handler, Entry(_, 0x848037a1, 0x7b30475e, 1, "", 67))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, ValOffsetRule(0x848037a1, kCFARegister, 3772, 1372))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, UndefinedRule(0x17713850, 5721))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, End())
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(reporter, EarlyEHTerminator(_))
+      .InSequence(s).WillOnce(Return());
+
+  ParseEHFrameSection(&section);
+}
+
+// The parser should recognize the Linux Standards Base 'z' augmentations.
+TEST_F(EHFrame, SimpleFDE) {
+  DwarfPointerEncoding lsda_encoding =
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_indirect
+                           | dwarf2reader::DW_EH_PE_datarel
+                           | dwarf2reader::DW_EH_PE_sdata2);
+  DwarfPointerEncoding fde_encoding =
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_textrel
+                           | dwarf2reader::DW_EH_PE_udata2);
+  
+  section.SetPointerEncoding(fde_encoding);
+  section.SetEncodedPointerBases(encoded_pointer_bases);
+  Label cie;
+  section
+      .Mark(&cie)
+      .CIEHeader(4873, 7012, 100, 1, "zSLPR")
+      .ULEB128(7)                                // Augmentation data length
+      .D8(lsda_encoding)                         // LSDA pointer format
+      .D8(dwarf2reader::DW_EH_PE_pcrel)          // personality pointer format
+      .EncodedPointer(0x97baa00, dwarf2reader::DW_EH_PE_pcrel) // and value 
+      .D8(fde_encoding)                          // FDE pointer format
+      .D8(dwarf2reader::DW_CFA_def_cfa).ULEB128(6706).ULEB128(31)
+      .FinishEntry()
+      .FDEHeader(cie, 0x540f6b56, 0xf686)
+      .ULEB128(2)                                // Augmentation data length
+      .EncodedPointer(0xe3eab475, lsda_encoding) // LSDA pointer, signed
+      .D8(dwarf2reader::DW_CFA_set_loc)
+      .EncodedPointer(0x540fa4ce, fde_encoding)
+      .D8(dwarf2reader::DW_CFA_undefined).ULEB128(0x675e)
+      .FinishEntry()
+      .D32(0);                                   // terminator
+
+  PERHAPS_WRITE_EH_FRAME_FILE("EHFrame.SimpleFDE", section);
+
+  EXPECT_CALL(handler, Entry(_, 0x540f6b56, 0xf686, 1, "zSLPR", 100))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, PersonalityRoutine(0x97baa00, false))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, LanguageSpecificDataArea(0xe3eab475, true))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, SignalHandler())
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, ValOffsetRule(0x540f6b56, kCFARegister, 6706, 31))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, UndefinedRule(0x540fa4ce, 0x675e))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, End())
+      .InSequence(s).WillOnce(Return(true));
+
+  ParseEHFrameSection(&section);
+}
+
+// Check that we can handle an empty 'z' augmentation.
+TEST_F(EHFrame, EmptyZ) {
+  Label cie;
+  section
+      .Mark(&cie)
+      .CIEHeader(5955, 5805, 228, 1, "z")
+      .ULEB128(0)                                // Augmentation data length
+      .D8(dwarf2reader::DW_CFA_def_cfa).ULEB128(3629).ULEB128(247)
+      .FinishEntry()
+      .FDEHeader(cie, 0xda007738, 0xfb55c641)
+      .ULEB128(0)                                // Augmentation data length
+      .D8(dwarf2reader::DW_CFA_advance_loc1).D8(11)
+      .D8(dwarf2reader::DW_CFA_undefined).ULEB128(3769)
+      .FinishEntry();
+
+  PERHAPS_WRITE_EH_FRAME_FILE("EHFrame.EmptyZ", section);
+
+  EXPECT_CALL(handler, Entry(_, 0xda007738, 0xfb55c641, 1, "z", 228))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, ValOffsetRule(0xda007738, kCFARegister, 3629, 247))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, UndefinedRule(0xda007738 + 11 * 5955, 3769))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, End())
+      .InSequence(s).WillOnce(Return(true));
+
+  ParseEHFrameSection(&section);
+}
+
+// Check that we recognize bad 'z' augmentation characters.
+TEST_F(EHFrame, BadZ) {
+  Label cie;
+  section
+      .Mark(&cie)
+      .CIEHeader(6937, 1045, 142, 1, "zQ")
+      .ULEB128(0)                                // Augmentation data length
+      .D8(dwarf2reader::DW_CFA_def_cfa).ULEB128(9006).ULEB128(7725)
+      .FinishEntry()
+      .FDEHeader(cie, 0x1293efa8, 0x236f53f2)
+      .ULEB128(0)                                // Augmentation data length
+      .D8(dwarf2reader::DW_CFA_advance_loc | 12)
+      .D8(dwarf2reader::DW_CFA_register).ULEB128(5667).ULEB128(3462)
+      .FinishEntry();
+
+  PERHAPS_WRITE_EH_FRAME_FILE("EHFrame.BadZ", section);
+
+  EXPECT_CALL(reporter, UnrecognizedAugmentation(_, "zQ"))
+      .WillOnce(Return());
+
+  ParseEHFrameSection(&section, false);
+}
+
+TEST_F(EHFrame, zL) {
+  Label cie;
+  DwarfPointerEncoding lsda_encoding =
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_funcrel
+                           | dwarf2reader::DW_EH_PE_udata2);
+  section
+      .Mark(&cie)
+      .CIEHeader(9285, 9959, 54, 1, "zL")
+      .ULEB128(1)                       // Augmentation data length
+      .D8(lsda_encoding)                // encoding for LSDA pointer in FDE
+
+      .FinishEntry()
+      .FDEHeader(cie, 0xd40091aa, 0x9aa6e746)
+      .ULEB128(2)                       // Augmentation data length
+      .EncodedPointer(0xd40099cd, lsda_encoding) // LSDA pointer
+      .FinishEntry()
+      .D32(0);                                   // terminator
+
+  PERHAPS_WRITE_EH_FRAME_FILE("EHFrame.zL", section);
+
+  EXPECT_CALL(handler, Entry(_, 0xd40091aa, 0x9aa6e746, 1, "zL", 54))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, LanguageSpecificDataArea(0xd40099cd, false))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, End())
+      .InSequence(s).WillOnce(Return(true));
+
+  ParseEHFrameSection(&section);
+}
+
+TEST_F(EHFrame, zP) {
+  Label cie;
+  DwarfPointerEncoding personality_encoding =
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_datarel
+                           | dwarf2reader::DW_EH_PE_udata2);
+  section
+      .Mark(&cie)
+      .CIEHeader(1097, 6313, 17, 1, "zP")
+      .ULEB128(3)                  // Augmentation data length
+      .D8(personality_encoding)    // encoding for personality routine
+      .EncodedPointer(0xe3eaccac, personality_encoding) // value
+      .FinishEntry()
+      .FDEHeader(cie, 0x0c8350c9, 0xbef11087)
+      .ULEB128(0)                       // Augmentation data length
+      .FinishEntry()
+      .D32(0);                                   // terminator
+
+  PERHAPS_WRITE_EH_FRAME_FILE("EHFrame.zP", section);
+
+  EXPECT_CALL(handler, Entry(_, 0x0c8350c9, 0xbef11087, 1, "zP", 17))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, PersonalityRoutine(0xe3eaccac, false))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, End())
+      .InSequence(s).WillOnce(Return(true));
+
+  ParseEHFrameSection(&section);
+}
+
+TEST_F(EHFrame, zR) {
+  Label cie;
+  DwarfPointerEncoding pointer_encoding =
+      DwarfPointerEncoding(dwarf2reader::DW_EH_PE_textrel
+                           | dwarf2reader::DW_EH_PE_sdata2);
+  section.SetPointerEncoding(pointer_encoding);
+  section
+      .Mark(&cie)
+      .CIEHeader(8011, 5496, 75, 1, "zR")
+      .ULEB128(1)                       // Augmentation data length
+      .D8(pointer_encoding)             // encoding for FDE addresses
+      .FinishEntry()
+      .FDEHeader(cie, 0x540f9431, 0xbd0)
+      .ULEB128(0)                       // Augmentation data length
+      .FinishEntry()
+      .D32(0);                          // terminator
+
+  PERHAPS_WRITE_EH_FRAME_FILE("EHFrame.zR", section);
+
+  EXPECT_CALL(handler, Entry(_, 0x540f9431, 0xbd0, 1, "zR", 75))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, End())
+      .InSequence(s).WillOnce(Return(true));
+
+  ParseEHFrameSection(&section);
+}
+
+TEST_F(EHFrame, zS) {
+  Label cie;
+  section
+      .Mark(&cie)
+      .CIEHeader(9217, 7694, 57, 1, "zS")
+      .ULEB128(0)                                // Augmentation data length
+      .FinishEntry()
+      .FDEHeader(cie, 0xd40091aa, 0x9aa6e746)
+      .ULEB128(0)                                // Augmentation data length
+      .FinishEntry()
+      .D32(0);                                   // terminator
+
+  PERHAPS_WRITE_EH_FRAME_FILE("EHFrame.zS", section);
+
+  EXPECT_CALL(handler, Entry(_, 0xd40091aa, 0x9aa6e746, 1, "zS", 57))
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, SignalHandler())
+      .InSequence(s).WillOnce(Return(true));
+  EXPECT_CALL(handler, End())
+      .InSequence(s).WillOnce(Return(true));
+
+  ParseEHFrameSection(&section);
+}
+
+// These tests require manual inspection of the test output.
+struct CFIReporterFixture {
+  CFIReporterFixture() : reporter("test file name", "test section name") { }
+  CallFrameInfo::Reporter reporter;
+};
+
+class CFIReporter: public CFIReporterFixture, public Test { };
+
+TEST_F(CFIReporter, Incomplete) {
+  reporter.Incomplete(0x0102030405060708ULL, CallFrameInfo::kUnknown);
+}
+
+TEST_F(CFIReporter, EarlyEHTerminator) {
+  reporter.EarlyEHTerminator(0x0102030405060708ULL);
+}
+
+TEST_F(CFIReporter, CIEPointerOutOfRange) {
+  reporter.CIEPointerOutOfRange(0x0123456789abcdefULL, 0xfedcba9876543210ULL);
+}
+
+TEST_F(CFIReporter, BadCIEId) {
+  reporter.BadCIEId(0x0123456789abcdefULL, 0xfedcba9876543210ULL);
+}
+
+TEST_F(CFIReporter, UnrecognizedVersion) {
+  reporter.UnrecognizedVersion(0x0123456789abcdefULL, 43);
+}
+
+TEST_F(CFIReporter, UnrecognizedAugmentation) {
+  reporter.UnrecognizedAugmentation(0x0123456789abcdefULL, "poodles");
+}
+
+TEST_F(CFIReporter, InvalidPointerEncoding) {
+  reporter.InvalidPointerEncoding(0x0123456789abcdefULL, 0x42);
+}
+
+TEST_F(CFIReporter, UnusablePointerEncoding) {
+  reporter.UnusablePointerEncoding(0x0123456789abcdefULL, 0x42);
+}
+
+TEST_F(CFIReporter, RestoreInCIE) {
+  reporter.RestoreInCIE(0x0123456789abcdefULL, 0xfedcba9876543210ULL);
+}
+
+TEST_F(CFIReporter, BadInstruction) {
+  reporter.BadInstruction(0x0123456789abcdefULL, CallFrameInfo::kFDE,
+                          0xfedcba9876543210ULL);
+}
+
+TEST_F(CFIReporter, NoCFARule) {
+  reporter.NoCFARule(0x0123456789abcdefULL, CallFrameInfo::kCIE,
+                     0xfedcba9876543210ULL);
+}
+
+TEST_F(CFIReporter, EmptyStateStack) {
+  reporter.EmptyStateStack(0x0123456789abcdefULL, CallFrameInfo::kTerminator,
+                           0xfedcba9876543210ULL);
+}
+
+TEST_F(CFIReporter, ClearingCFARule) {
+  reporter.ClearingCFARule(0x0123456789abcdefULL, CallFrameInfo::kFDE,
+                           0xfedcba9876543210ULL);
+}
+
+#ifdef WRITE_ELF
+// See comments at the top of the file mentioning WRITE_ELF for details.
+
+using google_breakpad::test_assembler::Section;
+
+struct ELFSectionHeader {
+  ELFSectionHeader(unsigned int set_type)
+      : type(set_type), flags(0), address(0), link(0), info(0),
+        alignment(1), entry_size(0) { }
+  Label name;
+  unsigned int type;
+  uint64_t flags;
+  uint64_t address;
+  Label file_offset;
+  Label file_size;
+  unsigned int link;
+  unsigned int info;
+  uint64_t alignment;
+  uint64_t entry_size;
+};
+
+void AppendSectionHeader(CFISection *table, const ELFSectionHeader &header) {
+  (*table)
+      .D32(header.name)                   // name, index in string tbl
+      .D32(header.type)                   // type
+      .Address(header.flags)              // flags
+      .Address(header.address)            // address in memory
+      .Address(header.file_offset)        // offset in ELF file
+      .Address(header.file_size)          // length in bytes
+      .D32(header.link)                   // link to related section
+      .D32(header.info)                   // miscellaneous
+      .Address(header.alignment)          // alignment
+      .Address(header.entry_size);        // entry size
+}
+
+void WriteELFFrameSection(const char *filename, const char *cfi_name,
+                          const CFISection &cfi) {
+  int elf_class = cfi.AddressSize() == 4 ? ELFCLASS32 : ELFCLASS64;
+  int elf_data = (cfi.endianness() == kBigEndian
+                  ? ELFDATA2MSB : ELFDATA2LSB);
+  CFISection elf(cfi.endianness(), cfi.AddressSize());
+  Label elf_header_size, section_table_offset;
+  elf
+      .Append("\x7f" "ELF")
+      .D8(elf_class)              // 32-bit or 64-bit ELF
+      .D8(elf_data)               // endianness
+      .D8(1)                      // ELF version
+      .D8(ELFOSABI_LINUX)         // Operating System/ABI indication
+      .D8(0)                      // ABI version
+      .Append(7, 0xda)            // padding
+      .D16(ET_EXEC)               // file type: executable file
+      .D16(EM_386)                // architecture: Intel IA-32
+      .D32(EV_CURRENT);           // ELF version
+  elf
+      .Address(0x0123456789abcdefULL) // program entry point
+      .Address(0)                 // program header offset
+      .Address(section_table_offset) // section header offset
+      .D32(0)                     // processor-specific flags
+      .D16(elf_header_size)       // ELF header size in bytes */
+      .D16(elf_class == ELFCLASS32 ? 32 : 56) // program header entry size
+      .D16(0)                     // program header table entry count
+      .D16(elf_class == ELFCLASS32 ? 40 : 64) // section header entry size
+      .D16(3)                     // section  count
+      .D16(1)                     // section name string table
+      .Mark(&elf_header_size);
+
+  // The null section. Every ELF file has one, as the first entry in
+  // the section header table.
+  ELFSectionHeader null_header(SHT_NULL);
+  null_header.file_offset = 0;
+  null_header.file_size = 0;
+
+  // The CFI section. The whole reason for writing out this ELF file
+  // is to put this in it so that we can run other dumping programs on
+  // it to check its contents.
+  ELFSectionHeader cfi_header(SHT_PROGBITS);
+  cfi_header.file_size = cfi.Size();
+
+  // The section holding the names of the sections. This is the
+  // section whose index appears in the e_shstrndx member of the ELF
+  // header.
+  ELFSectionHeader section_names_header(SHT_STRTAB);
+  CFISection section_names(cfi.endianness(), cfi.AddressSize());
+  section_names
+      .Mark(&null_header.name)
+      .AppendCString("")
+      .Mark(&section_names_header.name)
+      .AppendCString(".shstrtab")
+      .Mark(&cfi_header.name)
+      .AppendCString(cfi_name)
+      .Mark(&section_names_header.file_size);
+  
+  // Create the section table. The ELF header's e_shoff member refers
+  // to this, and the e_shnum member gives the number of entries it
+  // contains.
+  CFISection section_table(cfi.endianness(), cfi.AddressSize());
+  AppendSectionHeader(&section_table, null_header);
+  AppendSectionHeader(&section_table, section_names_header);
+  AppendSectionHeader(&section_table, cfi_header);
+
+  // Append the section table and the section contents to the ELF file.
+  elf
+      .Mark(&section_table_offset)
+      .Append(section_table)
+      .Mark(&section_names_header.file_offset)
+      .Append(section_names)
+      .Mark(&cfi_header.file_offset)
+      .Append(cfi);
+
+  string contents;
+  if (!elf.GetContents(&contents)) {
+    fprintf(stderr, "failed to get ELF file contents\n");
+    exit(1);
+  }
+
+  FILE *out = fopen(filename, "w");
+  if (!out) {
+    fprintf(stderr, "error opening ELF file '%s': %s\n",
+            filename, strerror(errno));
+    exit(1);
+  }
+
+  if (fwrite(contents.data(), 1, contents.size(), out) != contents.size()) {
+    fprintf(stderr, "error writing ELF data to '%s': %s\n",
+            filename, strerror(errno));
+    exit(1);
+  }
+
+  if (fclose(out) == EOF) {
+    fprintf(stderr, "error closing ELF file '%s': %s\n",
+            filename, strerror(errno));
+    exit(1);
+  }
+}
+#endif
diff --git a/google-breakpad/src/common/dwarf/dwarf2reader_die_unittest.cc b/google-breakpad/src/common/dwarf/dwarf2reader_die_unittest.cc
new file mode 100644
index 0000000..4e34436
--- /dev/null
+++ b/google-breakpad/src/common/dwarf/dwarf2reader_die_unittest.cc
@@ -0,0 +1,484 @@
+// Copyright (c) 2012, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// dwarf2reader_die_unittest.cc: Unit tests for dwarf2reader::CompilationUnit
+
+#include <stdlib.h>
+
+#include <iostream>
+#include <string>
+#include <vector>
+
+#include "breakpad_googletest_includes.h"
+#include "common/dwarf/bytereader-inl.h"
+#include "common/dwarf/dwarf2reader_test_common.h"
+#include "common/dwarf/dwarf2reader.h"
+#include "common/using_std_string.h"
+#include "google_breakpad/common/breakpad_types.h"
+
+using google_breakpad::test_assembler::Endianness;
+using google_breakpad::test_assembler::Label;
+using google_breakpad::test_assembler::Section;
+using google_breakpad::test_assembler::kBigEndian;
+using google_breakpad::test_assembler::kLittleEndian;
+
+using dwarf2reader::ByteReader;
+using dwarf2reader::CompilationUnit;
+using dwarf2reader::Dwarf2Handler;
+using dwarf2reader::DwarfAttribute;
+using dwarf2reader::DwarfForm;
+using dwarf2reader::DwarfHasChild;
+using dwarf2reader::DwarfTag;
+using dwarf2reader::ENDIANNESS_BIG;
+using dwarf2reader::ENDIANNESS_LITTLE;
+using dwarf2reader::SectionMap;
+
+using std::vector;
+using testing::InSequence;
+using testing::Pointee;
+using testing::Return;
+using testing::Sequence;
+using testing::Test;
+using testing::TestWithParam;
+using testing::_;
+
+class MockDwarf2Handler: public Dwarf2Handler {
+ public:
+  MOCK_METHOD5(StartCompilationUnit, bool(uint64 offset, uint8 address_size,
+                                          uint8 offset_size, uint64 cu_length,
+                                          uint8 dwarf_version));
+  MOCK_METHOD2(StartDIE, bool(uint64 offset, enum DwarfTag tag));
+  MOCK_METHOD4(ProcessAttributeUnsigned, void(uint64 offset,
+                                              DwarfAttribute attr,
+                                              enum DwarfForm form,
+                                              uint64 data));
+  MOCK_METHOD4(ProcessAttributeSigned, void(uint64 offset,
+                                            enum DwarfAttribute attr,
+                                            enum DwarfForm form,
+                                            int64 data));
+  MOCK_METHOD4(ProcessAttributeReference, void(uint64 offset,
+                                               enum DwarfAttribute attr,
+                                               enum DwarfForm form,
+                                               uint64 data));
+  MOCK_METHOD5(ProcessAttributeBuffer, void(uint64 offset,
+                                            enum DwarfAttribute attr,
+                                            enum DwarfForm form,
+                                            const char* data,
+                                            uint64 len));
+  MOCK_METHOD4(ProcessAttributeString, void(uint64 offset,
+                                            enum DwarfAttribute attr,
+                                            enum DwarfForm form,
+                                            const string& data));
+  MOCK_METHOD4(ProcessAttributeSignature, void(uint64 offset,
+                                               DwarfAttribute attr,
+                                               enum DwarfForm form,
+                                               uint64 signature));
+  MOCK_METHOD1(EndDIE, void(uint64 offset));
+};
+
+struct DIEFixture {
+
+  DIEFixture() {
+    // Fix the initial offset of the .debug_info and .debug_abbrev sections.
+    info.start() = 0;
+    abbrevs.start() = 0;
+
+    // Default expectations for the data handler.
+    EXPECT_CALL(handler, StartCompilationUnit(_, _, _, _, _)).Times(0);
+    EXPECT_CALL(handler, StartDIE(_, _)).Times(0);
+    EXPECT_CALL(handler, ProcessAttributeUnsigned(_, _, _, _)).Times(0);
+    EXPECT_CALL(handler, ProcessAttributeSigned(_, _, _, _)).Times(0);
+    EXPECT_CALL(handler, ProcessAttributeReference(_, _, _, _)).Times(0);
+    EXPECT_CALL(handler, ProcessAttributeBuffer(_, _, _, _, _)).Times(0);
+    EXPECT_CALL(handler, ProcessAttributeString(_, _, _, _)).Times(0);
+    EXPECT_CALL(handler, EndDIE(_)).Times(0);
+  }
+
+  // Return a reference to a section map whose .debug_info section refers
+  // to |info|, and whose .debug_abbrev section refers to |abbrevs|. This
+  // function returns a reference to the same SectionMap each time; new
+  // calls wipe out maps established by earlier calls.
+  const SectionMap &MakeSectionMap() {
+    // Copy the sections' contents into strings that will live as long as
+    // the map itself.
+    assert(info.GetContents(&info_contents));
+    assert(abbrevs.GetContents(&abbrevs_contents));
+    section_map.clear();
+    section_map[".debug_info"].first  = info_contents.data();
+    section_map[".debug_info"].second = info_contents.size();
+    section_map[".debug_abbrev"].first  = abbrevs_contents.data();
+    section_map[".debug_abbrev"].second = abbrevs_contents.size();
+    return section_map;
+  }
+
+  TestCompilationUnit info;
+  TestAbbrevTable abbrevs;
+  MockDwarf2Handler handler;
+  string abbrevs_contents, info_contents;
+  SectionMap section_map;
+};
+
+struct DwarfHeaderParams {
+  DwarfHeaderParams(Endianness endianness, size_t format_size,
+                   int version, size_t address_size)
+      : endianness(endianness), format_size(format_size),
+        version(version), address_size(address_size) { }
+  Endianness endianness;
+  size_t format_size;                   // 4-byte or 8-byte DWARF offsets
+  int version;
+  size_t address_size;
+};
+
+class DwarfHeader: public DIEFixture,
+                   public TestWithParam<DwarfHeaderParams> { };
+
+TEST_P(DwarfHeader, Header) {
+  Label abbrev_table = abbrevs.Here();
+  abbrevs.Abbrev(1, dwarf2reader::DW_TAG_compile_unit,
+                 dwarf2reader::DW_children_yes)
+      .Attribute(dwarf2reader::DW_AT_name, dwarf2reader::DW_FORM_string)
+      .EndAbbrev()
+      .EndTable();
+
+  info.set_format_size(GetParam().format_size);
+  info.set_endianness(GetParam().endianness);
+
+  info.Header(GetParam().version, abbrev_table, GetParam().address_size)
+      .ULEB128(1)                     // DW_TAG_compile_unit, with children
+      .AppendCString("sam")           // DW_AT_name, DW_FORM_string
+      .D8(0);                         // end of children
+  info.Finish();
+
+  {
+    InSequence s;
+    EXPECT_CALL(handler,
+                StartCompilationUnit(0, GetParam().address_size,
+                                     GetParam().format_size, _,
+                                     GetParam().version))
+        .WillOnce(Return(true));
+    EXPECT_CALL(handler, StartDIE(_, dwarf2reader::DW_TAG_compile_unit))
+        .WillOnce(Return(true));
+    EXPECT_CALL(handler, ProcessAttributeString(_, dwarf2reader::DW_AT_name, 
+                                                dwarf2reader::DW_FORM_string,
+                                                "sam"))
+        .WillOnce(Return());
+    EXPECT_CALL(handler, EndDIE(_))
+        .WillOnce(Return());
+  }
+
+  ByteReader byte_reader(GetParam().endianness == kLittleEndian ?
+                         ENDIANNESS_LITTLE : ENDIANNESS_BIG);
+  CompilationUnit parser(MakeSectionMap(), 0, &byte_reader, &handler);
+  EXPECT_EQ(parser.Start(), info_contents.size());
+}
+
+INSTANTIATE_TEST_CASE_P(
+    HeaderVariants, DwarfHeader,
+    ::testing::Values(DwarfHeaderParams(kLittleEndian, 4, 2, 4),
+                      DwarfHeaderParams(kLittleEndian, 4, 2, 8),
+                      DwarfHeaderParams(kLittleEndian, 4, 3, 4),
+                      DwarfHeaderParams(kLittleEndian, 4, 3, 8),
+                      DwarfHeaderParams(kLittleEndian, 4, 4, 4),
+                      DwarfHeaderParams(kLittleEndian, 4, 4, 8),
+                      DwarfHeaderParams(kLittleEndian, 8, 2, 4),
+                      DwarfHeaderParams(kLittleEndian, 8, 2, 8),
+                      DwarfHeaderParams(kLittleEndian, 8, 3, 4),
+                      DwarfHeaderParams(kLittleEndian, 8, 3, 8),
+                      DwarfHeaderParams(kLittleEndian, 8, 4, 4),
+                      DwarfHeaderParams(kLittleEndian, 8, 4, 8),
+                      DwarfHeaderParams(kBigEndian,    4, 2, 4),
+                      DwarfHeaderParams(kBigEndian,    4, 2, 8),
+                      DwarfHeaderParams(kBigEndian,    4, 3, 4),
+                      DwarfHeaderParams(kBigEndian,    4, 3, 8),
+                      DwarfHeaderParams(kBigEndian,    4, 4, 4),
+                      DwarfHeaderParams(kBigEndian,    4, 4, 8),
+                      DwarfHeaderParams(kBigEndian,    8, 2, 4),
+                      DwarfHeaderParams(kBigEndian,    8, 2, 8),
+                      DwarfHeaderParams(kBigEndian,    8, 3, 4),
+                      DwarfHeaderParams(kBigEndian,    8, 3, 8),
+                      DwarfHeaderParams(kBigEndian,    8, 4, 4),
+                      DwarfHeaderParams(kBigEndian,    8, 4, 8)));
+
+struct DwarfFormsFixture: public DIEFixture {
+  // Start a compilation unit, as directed by |params|, containing one
+  // childless DIE of the given tag, with one attribute of the given name
+  // and form. The 'info' fixture member is left just after the abbrev
+  // code, waiting for the attribute value to be appended.
+  void StartSingleAttributeDIE(const DwarfHeaderParams &params,
+                               DwarfTag tag, DwarfAttribute name,
+                               DwarfForm form) {
+    // Create the abbreviation table.
+    Label abbrev_table = abbrevs.Here();
+    abbrevs.Abbrev(1, tag, dwarf2reader::DW_children_no)
+        .Attribute(name, form)
+        .EndAbbrev()
+        .EndTable();
+
+    // Create the compilation unit, up to the attribute value.
+    info.set_format_size(params.format_size);
+    info.set_endianness(params.endianness);
+    info.Header(params.version, abbrev_table, params.address_size)
+        .ULEB128(1);                    // abbrev code
+  }
+
+  // Set up handler to expect a compilation unit matching |params|,
+  // containing one childless DIE of the given tag, in the sequence s. Stop
+  // just before the expectations.
+  void ExpectBeginCompilationUnit(const DwarfHeaderParams &params,
+                                  DwarfTag tag, uint64 offset=0) {
+    EXPECT_CALL(handler,
+                StartCompilationUnit(offset, params.address_size,
+                                     params.format_size, _,
+                                     params.version))
+        .InSequence(s)
+        .WillOnce(Return(true));
+    EXPECT_CALL(handler, StartDIE(_, tag))
+        .InSequence(s)
+        .WillOnce(Return(true));
+  }
+
+  void ExpectEndCompilationUnit() {
+    EXPECT_CALL(handler, EndDIE(_))
+        .InSequence(s)
+        .WillOnce(Return());
+  }
+
+  void ParseCompilationUnit(const DwarfHeaderParams &params, uint64 offset=0) {
+    ByteReader byte_reader(params.endianness == kLittleEndian ?
+                           ENDIANNESS_LITTLE : ENDIANNESS_BIG);
+    CompilationUnit parser(MakeSectionMap(), offset, &byte_reader, &handler);
+    EXPECT_EQ(offset + parser.Start(), info_contents.size());
+  }
+
+  // The sequence to which the fixture's methods append expectations.
+  Sequence s;
+};
+
+struct DwarfForms: public DwarfFormsFixture,
+                   public TestWithParam<DwarfHeaderParams> { };
+
+TEST_P(DwarfForms, addr) {
+  StartSingleAttributeDIE(GetParam(), dwarf2reader::DW_TAG_compile_unit,
+                          dwarf2reader::DW_AT_low_pc,
+                          dwarf2reader::DW_FORM_addr);
+  uint64_t value;
+  if (GetParam().address_size == 4) {
+    value = 0xc8e9ffcc;
+    info.D32(value);
+  } else {
+    value = 0xe942517fc2768564ULL;
+    info.D64(value);
+  }
+  info.Finish();
+
+  ExpectBeginCompilationUnit(GetParam(), dwarf2reader::DW_TAG_compile_unit);
+  EXPECT_CALL(handler, ProcessAttributeUnsigned(_, dwarf2reader::DW_AT_low_pc, 
+                                                dwarf2reader::DW_FORM_addr,
+                                                value))
+      .InSequence(s)
+      .WillOnce(Return());
+  ExpectEndCompilationUnit();
+
+  ParseCompilationUnit(GetParam());
+}
+
+TEST_P(DwarfForms, block2_empty) {
+  StartSingleAttributeDIE(GetParam(), (DwarfTag) 0x16e4d2f7,
+                          (DwarfAttribute) 0xe52c4463,
+                          dwarf2reader::DW_FORM_block2);
+  info.D16(0);
+  info.Finish();
+
+  ExpectBeginCompilationUnit(GetParam(), (DwarfTag) 0x16e4d2f7);
+  EXPECT_CALL(handler, ProcessAttributeBuffer(_, (DwarfAttribute) 0xe52c4463,
+                                              dwarf2reader::DW_FORM_block2,
+                                              _, 0))
+      .InSequence(s)
+      .WillOnce(Return());
+  ExpectEndCompilationUnit();
+
+  ParseCompilationUnit(GetParam());
+}
+
+TEST_P(DwarfForms, block2) {
+  StartSingleAttributeDIE(GetParam(), (DwarfTag) 0x16e4d2f7,
+                          (DwarfAttribute) 0xe52c4463,
+                          dwarf2reader::DW_FORM_block2);
+  unsigned char data[258];
+  memset(data, '*', sizeof(data));
+  info.D16(sizeof(data))
+      .Append(data, sizeof(data));
+  info.Finish();
+
+  ExpectBeginCompilationUnit(GetParam(), (DwarfTag) 0x16e4d2f7);
+  EXPECT_CALL(handler, ProcessAttributeBuffer(_, (DwarfAttribute) 0xe52c4463,
+                                              dwarf2reader::DW_FORM_block2,
+                                              Pointee('*'), 258))
+      .InSequence(s)
+      .WillOnce(Return());
+  ExpectEndCompilationUnit();
+
+  ParseCompilationUnit(GetParam());
+}
+
+TEST_P(DwarfForms, flag_present) {
+  StartSingleAttributeDIE(GetParam(), (DwarfTag) 0x3e449ac2,
+                          (DwarfAttribute) 0x359d1972,
+                          dwarf2reader::DW_FORM_flag_present);
+  // DW_FORM_flag_present occupies no space in the DIE.
+  info.Finish();
+
+  ExpectBeginCompilationUnit(GetParam(), (DwarfTag) 0x3e449ac2);
+  EXPECT_CALL(handler,
+              ProcessAttributeUnsigned(_, (DwarfAttribute) 0x359d1972,
+                                       dwarf2reader::DW_FORM_flag_present,
+                                       1))
+      .InSequence(s)
+      .WillOnce(Return());
+  ExpectEndCompilationUnit();
+
+  ParseCompilationUnit(GetParam());
+}
+
+TEST_P(DwarfForms, sec_offset) {
+  StartSingleAttributeDIE(GetParam(), (DwarfTag) 0x1d971689,
+                          (DwarfAttribute) 0xa060bfd1,
+                          dwarf2reader::DW_FORM_sec_offset);
+  uint64_t value;
+  if (GetParam().format_size == 4) {
+    value = 0xacc9c388;
+    info.D32(value);
+  } else {
+    value = 0xcffe5696ffe3ed0aULL;
+    info.D64(value);
+  }
+  info.Finish();
+
+  ExpectBeginCompilationUnit(GetParam(), (DwarfTag) 0x1d971689);
+  EXPECT_CALL(handler, ProcessAttributeUnsigned(_, (DwarfAttribute) 0xa060bfd1,
+                                                dwarf2reader::DW_FORM_sec_offset,
+                                                value))
+      .InSequence(s)
+      .WillOnce(Return());
+  ExpectEndCompilationUnit();
+
+  ParseCompilationUnit(GetParam());
+}
+
+TEST_P(DwarfForms, exprloc) {
+  StartSingleAttributeDIE(GetParam(), (DwarfTag) 0xb6d167bb,
+                          (DwarfAttribute) 0xba3ae5cb,
+                          dwarf2reader::DW_FORM_exprloc);
+  info.ULEB128(29)
+      .Append(29, 173);
+  info.Finish();
+
+  ExpectBeginCompilationUnit(GetParam(), (DwarfTag) 0xb6d167bb);
+  EXPECT_CALL(handler, ProcessAttributeBuffer(_, (DwarfAttribute) 0xba3ae5cb,
+                                              dwarf2reader::DW_FORM_exprloc,
+                                              Pointee(173), 29))
+      .InSequence(s)
+      .WillOnce(Return());
+  ExpectEndCompilationUnit();
+
+  ParseCompilationUnit(GetParam());
+}
+
+TEST_P(DwarfForms, ref_sig8) {
+  StartSingleAttributeDIE(GetParam(), (DwarfTag) 0x253e7b2b,
+                          (DwarfAttribute) 0xd708d908,
+                          dwarf2reader::DW_FORM_ref_sig8);
+  info.D64(0xf72fa0cb6ddcf9d6ULL);
+  info.Finish();
+
+  ExpectBeginCompilationUnit(GetParam(), (DwarfTag) 0x253e7b2b);
+  EXPECT_CALL(handler, ProcessAttributeSignature(_, (DwarfAttribute) 0xd708d908,
+                                                 dwarf2reader::DW_FORM_ref_sig8,
+                                                 0xf72fa0cb6ddcf9d6ULL))
+      .InSequence(s)
+      .WillOnce(Return());
+  ExpectEndCompilationUnit();
+
+  ParseCompilationUnit(GetParam());
+}
+
+// A value passed to ProcessAttributeSignature is just an absolute number,
+// not an offset within the compilation unit as most of the other
+// DW_FORM_ref forms are. Check that the reader doesn't try to apply any
+// offset to the signature, by reading it from a compilation unit that does
+// not start at the beginning of the section.
+TEST_P(DwarfForms, ref_sig8_not_first) {
+  info.Append(98, '*');
+  StartSingleAttributeDIE(GetParam(), (DwarfTag) 0x253e7b2b,
+                          (DwarfAttribute) 0xd708d908,
+                          dwarf2reader::DW_FORM_ref_sig8);
+  info.D64(0xf72fa0cb6ddcf9d6ULL);
+  info.Finish();
+
+  ExpectBeginCompilationUnit(GetParam(), (DwarfTag) 0x253e7b2b, 98);
+  EXPECT_CALL(handler, ProcessAttributeSignature(_, (DwarfAttribute) 0xd708d908,
+                                                 dwarf2reader::DW_FORM_ref_sig8,
+                                                 0xf72fa0cb6ddcf9d6ULL))
+      .InSequence(s)
+      .WillOnce(Return());
+  ExpectEndCompilationUnit();
+
+  ParseCompilationUnit(GetParam(), 98);
+}
+
+// Tests for the other attribute forms could go here.
+
+INSTANTIATE_TEST_CASE_P(
+    HeaderVariants, DwarfForms,
+    ::testing::Values(DwarfHeaderParams(kLittleEndian, 4, 2, 4),
+                      DwarfHeaderParams(kLittleEndian, 4, 2, 8),
+                      DwarfHeaderParams(kLittleEndian, 4, 3, 4),
+                      DwarfHeaderParams(kLittleEndian, 4, 3, 8),
+                      DwarfHeaderParams(kLittleEndian, 4, 4, 4),
+                      DwarfHeaderParams(kLittleEndian, 4, 4, 8),
+                      DwarfHeaderParams(kLittleEndian, 8, 2, 4),
+                      DwarfHeaderParams(kLittleEndian, 8, 2, 8),
+                      DwarfHeaderParams(kLittleEndian, 8, 3, 4),
+                      DwarfHeaderParams(kLittleEndian, 8, 3, 8),
+                      DwarfHeaderParams(kLittleEndian, 8, 4, 4),
+                      DwarfHeaderParams(kLittleEndian, 8, 4, 8),
+                      DwarfHeaderParams(kBigEndian,    4, 2, 4),
+                      DwarfHeaderParams(kBigEndian,    4, 2, 8),
+                      DwarfHeaderParams(kBigEndian,    4, 3, 4),
+                      DwarfHeaderParams(kBigEndian,    4, 3, 8),
+                      DwarfHeaderParams(kBigEndian,    4, 4, 4),
+                      DwarfHeaderParams(kBigEndian,    4, 4, 8),
+                      DwarfHeaderParams(kBigEndian,    8, 2, 4),
+                      DwarfHeaderParams(kBigEndian,    8, 2, 8),
+                      DwarfHeaderParams(kBigEndian,    8, 3, 4),
+                      DwarfHeaderParams(kBigEndian,    8, 3, 8),
+                      DwarfHeaderParams(kBigEndian,    8, 4, 4),
+                      DwarfHeaderParams(kBigEndian,    8, 4, 8)));
diff --git a/google-breakpad/src/common/dwarf/dwarf2reader_test_common.h b/google-breakpad/src/common/dwarf/dwarf2reader_test_common.h
new file mode 100644
index 0000000..e91de90
--- /dev/null
+++ b/google-breakpad/src/common/dwarf/dwarf2reader_test_common.h
@@ -0,0 +1,149 @@
+// -*- mode: c++ -*-
+
+// Copyright (c) 2012, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// dwarf2reader_test_common.h: Define TestCompilationUnit and
+// TestAbbrevTable, classes for creating properly (and improperly)
+// formatted DWARF compilation unit data for unit tests.
+
+#ifndef COMMON_DWARF_DWARF2READER_TEST_COMMON_H__
+#define COMMON_DWARF_DWARF2READER_TEST_COMMON_H__
+
+#include "common/test_assembler.h"
+#include "common/dwarf/dwarf2enums.h"
+
+// A subclass of test_assembler::Section, specialized for constructing
+// DWARF compilation units.
+class TestCompilationUnit: public google_breakpad::test_assembler::Section {
+ public:
+  typedef dwarf2reader::DwarfTag DwarfTag;
+  typedef dwarf2reader::DwarfAttribute DwarfAttribute;
+  typedef dwarf2reader::DwarfForm DwarfForm;
+  typedef google_breakpad::test_assembler::Label Label;
+
+  // Set the section's DWARF format size (the 32-bit DWARF format or the
+  // 64-bit DWARF format, for lengths and section offsets --- not the
+  // address size) to format_size.
+  void set_format_size(size_t format_size) {
+    assert(format_size == 4 || format_size == 8);
+    format_size_ = format_size;
+  }
+    
+  // Append a DWARF section offset value, of the appropriate size for this
+  // compilation unit.
+  template<typename T>
+  void SectionOffset(T offset) {
+    if (format_size_ == 4)
+      D32(offset);
+    else
+      D64(offset);
+  }
+
+  // Append a DWARF compilation unit header to the section, with the given
+  // DWARF version, abbrev table offset, and address size.
+  TestCompilationUnit &Header(int version, const Label &abbrev_offset,
+                              size_t address_size) {
+    if (format_size_ == 4) {
+      D32(length_);
+    } else {
+      D32(0xffffffff);
+      D64(length_);
+    }
+    post_length_offset_ = Size();
+    D16(version);
+    SectionOffset(abbrev_offset);
+    D8(address_size);
+    return *this;
+  }
+
+  // Mark the end of this header's DIEs.
+  TestCompilationUnit &Finish() {
+    length_ = Size() - post_length_offset_;
+    return *this;
+  }
+
+ private:
+  // The DWARF format size for this compilation unit.
+  size_t format_size_;
+
+  // The offset of the point in the compilation unit header immediately
+  // after the initial length field.
+  uint64_t post_length_offset_;
+
+  // The length of the compilation unit, not including the initial length field.
+  Label length_;
+};
+
+// A subclass of test_assembler::Section specialized for constructing DWARF
+// abbreviation tables.
+class TestAbbrevTable: public google_breakpad::test_assembler::Section {
+ public:
+  typedef dwarf2reader::DwarfTag DwarfTag;
+  typedef dwarf2reader::DwarfAttribute DwarfAttribute;
+  typedef dwarf2reader::DwarfForm DwarfForm;
+  typedef dwarf2reader::DwarfHasChild DwarfHasChild;
+  typedef google_breakpad::test_assembler::Label Label;
+
+  // Start a new abbreviation table entry for abbreviation code |code|,
+  // encoding a DIE whose tag is |tag|, and which has children if and only
+  // if |has_children| is true.
+  TestAbbrevTable &Abbrev(int code, DwarfTag tag, DwarfHasChild has_children) {
+    assert(code != 0);
+    ULEB128(code);
+    ULEB128(static_cast<unsigned>(tag));
+    D8(static_cast<unsigned>(has_children));
+    return *this;
+  };
+
+  // Add an attribute to the current abbreviation code whose name is |name|
+  // and whose form is |form|.
+  TestAbbrevTable &Attribute(DwarfAttribute name, DwarfForm form) {
+    ULEB128(static_cast<unsigned>(name));
+    ULEB128(static_cast<unsigned>(form));
+    return *this;
+  }
+
+  // Finish the current abbreviation code.
+  TestAbbrevTable &EndAbbrev() {
+    ULEB128(0);
+    ULEB128(0);
+    return *this;
+  }
+
+  // Finish the current abbreviation table.
+  TestAbbrevTable &EndTable() {
+    ULEB128(0);
+    return *this;
+  }
+};
+
+#endif // COMMON_DWARF_DWARF2READER_TEST_COMMON_H__
diff --git a/google-breakpad/src/common/dwarf/functioninfo.cc b/google-breakpad/src/common/dwarf/functioninfo.cc
new file mode 100644
index 0000000..55a255e
--- /dev/null
+++ b/google-breakpad/src/common/dwarf/functioninfo.cc
@@ -0,0 +1,231 @@
+// Copyright (c) 2010 Google Inc. All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// This is a client for the dwarf2reader to extract function and line
+// information from the debug info.
+
+#include <assert.h>
+#include <limits.h>
+#include <stdio.h>
+
+#include <map>
+#include <queue>
+#include <vector>
+
+#include "common/dwarf/functioninfo.h"
+#include "common/dwarf/bytereader.h"
+#include "common/scoped_ptr.h"
+#include "common/using_std_string.h"
+
+using google_breakpad::scoped_ptr;
+
+namespace dwarf2reader {
+
+CULineInfoHandler::CULineInfoHandler(std::vector<SourceFileInfo>* files,
+                                     std::vector<string>* dirs,
+                                     LineMap* linemap):linemap_(linemap),
+                                                       files_(files),
+                                                       dirs_(dirs) {
+  // The dirs and files are 1 indexed, so just make sure we put
+  // nothing in the 0 vector.
+  assert(dirs->size() == 0);
+  assert(files->size() == 0);
+  dirs->push_back("");
+  SourceFileInfo s;
+  s.name = "";
+  s.lowpc = ULLONG_MAX;
+  files->push_back(s);
+}
+
+void CULineInfoHandler::DefineDir(const string& name, uint32 dir_num) {
+  // These should never come out of order, actually
+  assert(dir_num == dirs_->size());
+  dirs_->push_back(name);
+}
+
+void CULineInfoHandler::DefineFile(const string& name,
+                                   int32 file_num, uint32 dir_num,
+                                   uint64 mod_time, uint64 length) {
+  assert(dir_num >= 0);
+  assert(dir_num < dirs_->size());
+
+  // These should never come out of order, actually.
+  if (file_num == (int32)files_->size() || file_num == -1) {
+    string dir = dirs_->at(dir_num);
+
+    SourceFileInfo s;
+    s.lowpc = ULLONG_MAX;
+
+    if (dir == "") {
+      s.name = name;
+    } else {
+      s.name = dir + "/" + name;
+    }
+
+    files_->push_back(s);
+  } else {
+    fprintf(stderr, "error in DefineFile");
+  }
+}
+
+void CULineInfoHandler::AddLine(uint64 address, uint64 length, uint32 file_num,
+                                uint32 line_num, uint32 column_num) {
+  if (file_num < files_->size()) {
+    linemap_->insert(
+        std::make_pair(address,
+                       std::make_pair(files_->at(file_num).name.c_str(),
+                                      line_num)));
+
+    if (address < files_->at(file_num).lowpc) {
+      files_->at(file_num).lowpc = address;
+    }
+  } else {
+    fprintf(stderr, "error in AddLine");
+  }
+}
+
+bool CUFunctionInfoHandler::StartCompilationUnit(uint64 offset,
+                                                 uint8 address_size,
+                                                 uint8 offset_size,
+                                                 uint64 cu_length,
+                                                 uint8 dwarf_version) {
+  current_compilation_unit_offset_ = offset;
+  return true;
+}
+
+
+// For function info, we only care about subprograms and inlined
+// subroutines. For line info, the DW_AT_stmt_list lives in the
+// compile unit tag.
+
+bool CUFunctionInfoHandler::StartDIE(uint64 offset, enum DwarfTag tag) {
+  switch (tag) {
+    case DW_TAG_subprogram:
+    case DW_TAG_inlined_subroutine: {
+      current_function_info_ = new FunctionInfo;
+      current_function_info_->lowpc = current_function_info_->highpc = 0;
+      current_function_info_->name = "";
+      current_function_info_->line = 0;
+      current_function_info_->file = "";
+      offset_to_funcinfo_->insert(std::make_pair(offset,
+                                                 current_function_info_));
+    };
+      // FALLTHROUGH
+    case DW_TAG_compile_unit:
+      return true;
+    default:
+      return false;
+  }
+  return false;
+}
+
+// Only care about the name attribute for functions
+
+void CUFunctionInfoHandler::ProcessAttributeString(uint64 offset,
+                                                   enum DwarfAttribute attr,
+                                                   enum DwarfForm form,
+                                                   const string &data) {
+  if (current_function_info_) {
+    if (attr == DW_AT_name)
+      current_function_info_->name = data;
+    else if (attr == DW_AT_MIPS_linkage_name)
+      current_function_info_->mangled_name = data;
+  }
+}
+
+void CUFunctionInfoHandler::ProcessAttributeUnsigned(uint64 offset,
+                                                     enum DwarfAttribute attr,
+                                                     enum DwarfForm form,
+                                                     uint64 data) {
+  if (attr == DW_AT_stmt_list) {
+    SectionMap::const_iterator iter = sections_.find("__debug_line");
+    assert(iter != sections_.end());
+
+    scoped_ptr<LineInfo> lireader(new LineInfo(iter->second.first + data,
+                                               iter->second.second  - data,
+                                               reader_, linehandler_));
+    lireader->Start();
+  } else if (current_function_info_) {
+    switch (attr) {
+      case DW_AT_low_pc:
+        current_function_info_->lowpc = data;
+        break;
+      case DW_AT_high_pc:
+        current_function_info_->highpc = data;
+        break;
+      case DW_AT_decl_line:
+        current_function_info_->line = data;
+        break;
+      case DW_AT_decl_file:
+        current_function_info_->file = files_->at(data).name;
+        break;
+      default:
+        break;
+    }
+  }
+}
+
+void CUFunctionInfoHandler::ProcessAttributeReference(uint64 offset,
+                                                      enum DwarfAttribute attr,
+                                                      enum DwarfForm form,
+                                                      uint64 data) {
+  if (current_function_info_) {
+    switch (attr) {
+      case DW_AT_specification: {
+        // Some functions have a "specification" attribute
+        // which means they were defined elsewhere. The name
+        // attribute is not repeated, and must be taken from
+        // the specification DIE. Here we'll assume that
+        // any DIE referenced in this manner will already have
+        // been seen, but that's not really required by the spec.
+        FunctionMap::iterator iter = offset_to_funcinfo_->find(data);
+        if (iter != offset_to_funcinfo_->end()) {
+          current_function_info_->name = iter->second->name;
+          current_function_info_->mangled_name = iter->second->mangled_name;
+        } else {
+          // If you hit this, this code probably needs to be rewritten.
+          fprintf(stderr,
+                  "Error: DW_AT_specification was seen before the referenced "
+                  "DIE! (Looking for DIE at offset %08llx, in DIE at "
+                  "offset %08llx)\n", data, offset);
+        }
+        break;
+      }
+      default:
+        break;
+    }
+  }
+}
+
+void CUFunctionInfoHandler::EndDIE(uint64 offset) {
+  if (current_function_info_ && current_function_info_->lowpc)
+    address_to_funcinfo_->insert(std::make_pair(current_function_info_->lowpc,
+                                                current_function_info_));
+}
+
+}  // namespace dwarf2reader
diff --git a/google-breakpad/src/common/dwarf/functioninfo.h b/google-breakpad/src/common/dwarf/functioninfo.h
new file mode 100644
index 0000000..0b08a5f
--- /dev/null
+++ b/google-breakpad/src/common/dwarf/functioninfo.h
@@ -0,0 +1,188 @@
+// Copyright (c) 2010 Google Inc. All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+// This file contains the definitions for a DWARF2/3 information
+// collector that uses the DWARF2/3 reader interface to build a mapping
+// of addresses to files, lines, and functions.
+
+#ifndef COMMON_DWARF_FUNCTIONINFO_H__
+#define COMMON_DWARF_FUNCTIONINFO_H__
+
+#include <map>
+#include <string>
+#include <utility>
+#include <vector>
+
+#include "common/dwarf/dwarf2reader.h"
+#include "common/using_std_string.h"
+
+
+namespace dwarf2reader {
+
+struct FunctionInfo {
+  // Name of the function
+  string name;
+  // Mangled name of the function
+  string mangled_name;
+  // File containing this function
+  string file;
+  // Line number for start of function.
+  uint32 line;
+  // Beginning address for this function
+  uint64 lowpc;
+  // End address for this function.
+  uint64 highpc;
+};
+
+struct SourceFileInfo {
+  // Name of the source file name
+  string name;
+  // Low address of source file name
+  uint64 lowpc;
+};
+
+typedef std::map<uint64, FunctionInfo*> FunctionMap;
+typedef std::map<uint64, std::pair<string, uint32> > LineMap;
+
+// This class is a basic line info handler that fills in the dirs,
+// file, and linemap passed into it with the data produced from the
+// LineInfoHandler.
+class CULineInfoHandler: public LineInfoHandler {
+ public:
+
+  //
+  CULineInfoHandler(std::vector<SourceFileInfo>* files,
+                    std::vector<string>* dirs,
+                    LineMap* linemap);
+  virtual ~CULineInfoHandler() { }
+
+  // Called when we define a directory.  We just place NAME into dirs_
+  // at position DIR_NUM.
+  virtual void DefineDir(const string& name, uint32 dir_num);
+
+  // Called when we define a filename.  We just place
+  // concat(dirs_[DIR_NUM], NAME) into files_ at position FILE_NUM.
+  virtual void DefineFile(const string& name, int32 file_num,
+                          uint32 dir_num, uint64 mod_time, uint64 length);
+
+
+  // Called when the line info reader has a new line, address pair
+  // ready for us. ADDRESS is the address of the code, LENGTH is the
+  // length of its machine code in bytes, FILE_NUM is the file number
+  // containing the code, LINE_NUM is the line number in that file for
+  // the code, and COLUMN_NUM is the column number the code starts at,
+  // if we know it (0 otherwise).
+  virtual void AddLine(uint64 address, uint64 length,
+                       uint32 file_num, uint32 line_num, uint32 column_num);
+
+ private:
+  LineMap* linemap_;
+  std::vector<SourceFileInfo>* files_;
+  std::vector<string>* dirs_;
+};
+
+class CUFunctionInfoHandler: public Dwarf2Handler {
+ public:
+  CUFunctionInfoHandler(std::vector<SourceFileInfo>* files,
+                        std::vector<string>* dirs,
+                        LineMap* linemap,
+                        FunctionMap* offset_to_funcinfo,
+                        FunctionMap* address_to_funcinfo,
+                        CULineInfoHandler* linehandler,
+                        const SectionMap& sections,
+                        ByteReader* reader)
+      : files_(files), dirs_(dirs), linemap_(linemap),
+        offset_to_funcinfo_(offset_to_funcinfo),
+        address_to_funcinfo_(address_to_funcinfo),
+        linehandler_(linehandler), sections_(sections),
+        reader_(reader), current_function_info_(NULL) { }
+
+  virtual ~CUFunctionInfoHandler() { }
+
+  // Start to process a compilation unit at OFFSET from the beginning of the
+  // .debug_info section.  We want to see all compilation units, so we
+  // always return true.
+
+  virtual bool StartCompilationUnit(uint64 offset, uint8 address_size,
+                                    uint8 offset_size, uint64 cu_length,
+                                    uint8 dwarf_version);
+
+  // Start to process a DIE at OFFSET from the beginning of the
+  // .debug_info section.  We only care about function related DIE's.
+  virtual bool StartDIE(uint64 offset, enum DwarfTag tag);
+
+  // Called when we have an attribute with unsigned data to give to
+  // our handler.  The attribute is for the DIE at OFFSET from the
+  // beginning of the .debug_info section, has a name of ATTR, a form of
+  // FORM, and the actual data of the attribute is in DATA.
+  virtual void ProcessAttributeUnsigned(uint64 offset,
+                                        enum DwarfAttribute attr,
+                                        enum DwarfForm form,
+                                        uint64 data);
+
+  // Called when we have an attribute with a DIE reference to give to
+  // our handler.  The attribute is for the DIE at OFFSET from the
+  // beginning of the .debug_info section, has a name of ATTR, a form of
+  // FORM, and the offset of the referenced DIE from the start of the
+  // .debug_info section is in DATA.
+  virtual void ProcessAttributeReference(uint64 offset,
+                                         enum DwarfAttribute attr,
+                                         enum DwarfForm form,
+                                         uint64 data);
+
+  // Called when we have an attribute with string data to give to
+  // our handler.  The attribute is for the DIE at OFFSET from the
+  // beginning of the .debug_info section, has a name of ATTR, a form of
+  // FORM, and the actual data of the attribute is in DATA.
+  virtual void ProcessAttributeString(uint64 offset,
+                                      enum DwarfAttribute attr,
+                                      enum DwarfForm form,
+                                      const string& data);
+
+  // Called when finished processing the DIE at OFFSET.
+  // Because DWARF2/3 specifies a tree of DIEs, you may get starts
+  // before ends of the previous DIE, as we process children before
+  // ending the parent.
+  virtual void EndDIE(uint64 offset);
+
+ private:
+  std::vector<SourceFileInfo>* files_;
+  std::vector<string>* dirs_;
+  LineMap* linemap_;
+  FunctionMap* offset_to_funcinfo_;
+  FunctionMap* address_to_funcinfo_;
+  CULineInfoHandler* linehandler_;
+  const SectionMap& sections_;
+  ByteReader* reader_;
+  FunctionInfo* current_function_info_;
+  uint64 current_compilation_unit_offset_;
+};
+
+}  // namespace dwarf2reader
+#endif  // COMMON_DWARF_FUNCTIONINFO_H__
diff --git a/google-breakpad/src/common/dwarf/line_state_machine.h b/google-breakpad/src/common/dwarf/line_state_machine.h
new file mode 100644
index 0000000..0ff72ab
--- /dev/null
+++ b/google-breakpad/src/common/dwarf/line_state_machine.h
@@ -0,0 +1,61 @@
+// Copyright 2008 Google Inc. All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+#ifndef COMMON_DWARF_LINE_STATE_MACHINE_H__
+#define COMMON_DWARF_LINE_STATE_MACHINE_H__
+
+namespace dwarf2reader {
+
+// This is the format of a DWARF2/3 line state machine that we process
+// opcodes using.  There is no need for anything outside the lineinfo
+// processor to know how this works.
+struct LineStateMachine {
+  void Reset(bool default_is_stmt) {
+    file_num = 1;
+    address = 0;
+    line_num = 1;
+    column_num = 0;
+    is_stmt = default_is_stmt;
+    basic_block = false;
+    end_sequence = false;
+  }
+
+  uint32 file_num;
+  uint64 address;
+  uint32 line_num;
+  uint32 column_num;
+  bool is_stmt;  // stmt means statement.
+  bool basic_block;
+  bool end_sequence;
+};
+
+}  // namespace dwarf2reader
+
+
+#endif  // COMMON_DWARF_LINE_STATE_MACHINE_H__
diff --git a/google-breakpad/src/common/dwarf/types.h b/google-breakpad/src/common/dwarf/types.h
new file mode 100644
index 0000000..61ca457
--- /dev/null
+++ b/google-breakpad/src/common/dwarf/types.h
@@ -0,0 +1,55 @@
+// Copyright 2008 Google, Inc.  All Rights reserved
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+// This file contains some typedefs for basic types
+
+
+#ifndef _COMMON_DWARF_TYPES_H__
+#define _COMMON_DWARF_TYPES_H__
+
+#include <stdint.h>
+
+typedef signed char         int8;
+typedef short               int16;
+typedef int                 int32;
+typedef long long           int64;
+
+typedef unsigned char      uint8;
+typedef unsigned short     uint16;
+typedef unsigned int       uint32;
+typedef unsigned long long uint64;
+
+#ifdef __PTRDIFF_TYPE__
+typedef          __PTRDIFF_TYPE__ intptr;
+typedef unsigned __PTRDIFF_TYPE__ uintptr;
+#else
+#error "Can't find pointer-sized integral types."
+#endif
+
+#endif // _COMMON_DWARF_TYPES_H__
diff --git a/google-breakpad/src/common/dwarf_cfi_to_module.cc b/google-breakpad/src/common/dwarf_cfi_to_module.cc
new file mode 100644
index 0000000..1bf1d96
--- /dev/null
+++ b/google-breakpad/src/common/dwarf_cfi_to_module.cc
@@ -0,0 +1,295 @@
+// -*- mode: c++ -*-
+
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// Implementation of google_breakpad::DwarfCFIToModule.
+// See dwarf_cfi_to_module.h for details.
+
+#include <sstream>
+
+#include "common/dwarf_cfi_to_module.h"
+
+namespace google_breakpad {
+
+using std::ostringstream;
+
+vector<string> DwarfCFIToModule::RegisterNames::MakeVector(
+    const char * const *strings,
+    size_t size) {
+  vector<string> names(strings, strings + size);
+  return names;
+}
+
+vector<string> DwarfCFIToModule::RegisterNames::I386() {
+  static const char *const names[] = {
+    "$eax", "$ecx", "$edx", "$ebx", "$esp", "$ebp", "$esi", "$edi",
+    "$eip", "$eflags", "$unused1",
+    "$st0", "$st1", "$st2", "$st3", "$st4", "$st5", "$st6", "$st7",
+    "$unused2", "$unused3",
+    "$xmm0", "$xmm1", "$xmm2", "$xmm3", "$xmm4", "$xmm5", "$xmm6", "$xmm7",
+    "$mm0", "$mm1", "$mm2", "$mm3", "$mm4", "$mm5", "$mm6", "$mm7",
+    "$fcw", "$fsw", "$mxcsr",
+    "$es", "$cs", "$ss", "$ds", "$fs", "$gs", "$unused4", "$unused5",
+    "$tr", "$ldtr"
+  };
+
+  return MakeVector(names, sizeof(names) / sizeof(names[0]));
+}
+
+vector<string> DwarfCFIToModule::RegisterNames::X86_64() {
+  static const char *const names[] = {
+    "$rax", "$rdx", "$rcx", "$rbx", "$rsi", "$rdi", "$rbp", "$rsp",
+    "$r8",  "$r9",  "$r10", "$r11", "$r12", "$r13", "$r14", "$r15",
+    "$rip",
+    "$xmm0","$xmm1","$xmm2", "$xmm3", "$xmm4", "$xmm5", "$xmm6", "$xmm7",
+    "$xmm8","$xmm9","$xmm10","$xmm11","$xmm12","$xmm13","$xmm14","$xmm15",
+    "$st0", "$st1", "$st2", "$st3", "$st4", "$st5", "$st6", "$st7",
+    "$mm0", "$mm1", "$mm2", "$mm3", "$mm4", "$mm5", "$mm6", "$mm7",
+    "$rflags",
+    "$es", "$cs", "$ss", "$ds", "$fs", "$gs", "$unused1", "$unused2",
+    "$fs.base", "$gs.base", "$unused3", "$unused4",
+    "$tr", "$ldtr",
+    "$mxcsr", "$fcw", "$fsw"
+  };
+
+  return MakeVector(names, sizeof(names) / sizeof(names[0]));
+}
+
+// Per ARM IHI 0040A, section 3.1
+vector<string> DwarfCFIToModule::RegisterNames::ARM() {
+  static const char *const names[] = {
+    "r0",  "r1",  "r2",  "r3",  "r4",  "r5",  "r6",  "r7",
+    "r8",  "r9",  "r10", "r11", "r12", "sp",  "lr",  "pc",
+    "f0",  "f1",  "f2",  "f3",  "f4",  "f5",  "f6",  "f7",
+    "fps", "cpsr", "",   "",    "",    "",    "",    "",
+    "",    "",    "",    "",    "",    "",    "",    "",
+    "",    "",    "",    "",    "",    "",    "",    "",
+    "",    "",    "",    "",    "",    "",    "",    "",
+    "",    "",    "",    "",    "",    "",    "",    "",
+    "s0",  "s1",  "s2",  "s3",  "s4",  "s5",  "s6",  "s7",
+    "s8",  "s9",  "s10", "s11", "s12", "s13", "s14", "s15",
+    "s16", "s17", "s18", "s19", "s20", "s21", "s22", "s23",
+    "s24", "s25", "s26", "s27", "s28", "s29", "s30", "s31",
+    "f0",  "f1",  "f2",  "f3",  "f4",  "f5",  "f6",  "f7"
+  };
+
+  return MakeVector(names, sizeof(names) / sizeof(names[0]));
+}
+
+// Per ARM IHI 0057A, section 3.1
+vector<string> DwarfCFIToModule::RegisterNames::ARM64() {
+  static const char *const names[] = {
+    "x0",  "x1",  "x2",  "x3",  "x4",  "x5",  "x6",  "x7",
+    "x8",  "x9",  "x10", "x11", "x12", "x13", "x14", "x15",
+    "x16", "x17", "x18", "x19", "x20", "x21", "x22", "x23",
+    "x24", "x25", "x26", "x27", "x28", "x29", "x30", "sp",
+    "",    "",    "",    "",    "",    "",    "",    "",
+    "",    "",    "",    "",    "",    "",    "",    "",
+    "",    "",    "",    "",    "",    "",    "",    "",
+    "",    "",    "",    "",    "",    "",    "",    "",
+    "v0",  "v1",  "v2",  "v3",  "v4",  "v5",  "v6",  "v7",
+    "v8",  "v9",  "v10", "v11", "v12", "v13", "v14", "v15",
+    "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23",
+    "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31"
+  };
+
+  return MakeVector(names, sizeof(names) / sizeof(names[0]));
+}
+
+vector<string> DwarfCFIToModule::RegisterNames::MIPS() {
+  static const char* const kRegisterNames[] = {
+    "$zero", "$at",  "$v0",  "$v1",  "$a0",   "$a1",  "$a2",  "$a3",
+    "$t0",   "$t1",  "$t2",  "$t3",  "$t4",   "$t5",  "$t6",  "$t7",
+    "$s0",   "$s1",  "$s2",  "$s3",  "$s4",   "$s5",  "$s6",  "$s7",
+    "$t8",   "$t9",  "$k0",  "$k1",  "$gp",   "$sp",  "$fp",  "$ra",
+    "$lo",   "$hi",  "$pc",  "$f0",  "$f2",   "$f3",  "$f4",  "$f5",
+    "$f6",   "$f7",  "$f8",  "$f9",  "$f10",  "$f11", "$f12", "$f13",
+    "$f14",  "$f15", "$f16", "$f17", "$f18",  "$f19", "$f20",
+    "$f21",  "$f22", "$f23", "$f24", "$f25",  "$f26", "$f27",
+    "$f28",  "$f29", "$f30", "$f31", "$fcsr", "$fir"
+  };
+
+  return MakeVector(kRegisterNames,
+                    sizeof(kRegisterNames) / sizeof(kRegisterNames[0]));
+}
+
+bool DwarfCFIToModule::Entry(size_t offset, uint64 address, uint64 length,
+                             uint8 version, const string &augmentation,
+                             unsigned return_address) {
+  assert(!entry_);
+
+  // If dwarf2reader::CallFrameInfo can handle this version and
+  // augmentation, then we should be okay with that, so there's no
+  // need to check them here.
+
+  // Get ready to collect entries.
+  entry_ = new Module::StackFrameEntry;
+  entry_->address = address;
+  entry_->size = length;
+  entry_offset_ = offset;
+  return_address_ = return_address;
+
+  // Breakpad STACK CFI records must provide a .ra rule, but DWARF CFI
+  // may not establish any rule for .ra if the return address column
+  // is an ordinary register, and that register holds the return
+  // address on entry to the function. So establish an initial .ra
+  // rule citing the return address register.
+  if (return_address_ < register_names_.size())
+    entry_->initial_rules[ra_name_] = register_names_[return_address_];
+
+  return true;
+}
+
+string DwarfCFIToModule::RegisterName(int i) {
+  assert(entry_);
+  if (i < 0) {
+    assert(i == kCFARegister);
+    return cfa_name_;
+  }
+  unsigned reg = i;
+  if (reg == return_address_)
+    return ra_name_;
+
+  // Ensure that a non-empty name exists for this register value.
+  if (reg < register_names_.size() && !register_names_[reg].empty())
+    return register_names_[reg];
+
+  reporter_->UnnamedRegister(entry_offset_, reg);
+  char buf[30];
+  sprintf(buf, "unnamed_register%u", reg);
+  return buf;
+}
+
+void DwarfCFIToModule::Record(Module::Address address, int reg,
+                              const string &rule) {
+  assert(entry_);
+
+  // Place the name in our global set of strings, and then use the string
+  // from the set. Even though the assignment looks like a copy, all the
+  // major std::string implementations use reference counting internally,
+  // so the effect is to have all our data structures share copies of rules
+  // whenever possible. Since register names are drawn from a
+  // vector<string>, register names are already shared.
+  string shared_rule = *common_strings_.insert(rule).first;
+
+  // Is this one of this entry's initial rules?
+  if (address == entry_->address)
+    entry_->initial_rules[RegisterName(reg)] = shared_rule;
+  // File it under the appropriate address.
+  else
+    entry_->rule_changes[address][RegisterName(reg)] = shared_rule;
+}
+
+bool DwarfCFIToModule::UndefinedRule(uint64 address, int reg) {
+  reporter_->UndefinedNotSupported(entry_offset_, RegisterName(reg));
+  // Treat this as a non-fatal error.
+  return true;
+}
+
+bool DwarfCFIToModule::SameValueRule(uint64 address, int reg) {
+  ostringstream s;
+  s << RegisterName(reg);
+  Record(address, reg, s.str());
+  return true;
+}
+
+bool DwarfCFIToModule::OffsetRule(uint64 address, int reg,
+                                  int base_register, long offset) {
+  ostringstream s;
+  s << RegisterName(base_register) << " " << offset << " + ^";
+  Record(address, reg, s.str());
+  return true;
+}
+
+bool DwarfCFIToModule::ValOffsetRule(uint64 address, int reg,
+                                     int base_register, long offset) {
+  ostringstream s;
+  s << RegisterName(base_register) << " " << offset << " +";
+  Record(address, reg, s.str());
+  return true;
+}
+
+bool DwarfCFIToModule::RegisterRule(uint64 address, int reg,
+                                    int base_register) {
+  ostringstream s;
+  s << RegisterName(base_register);
+  Record(address, reg, s.str());
+  return true;
+}
+
+bool DwarfCFIToModule::ExpressionRule(uint64 address, int reg,
+                                      const string &expression) {
+  reporter_->ExpressionsNotSupported(entry_offset_, RegisterName(reg));
+  // Treat this as a non-fatal error.
+  return true;
+}
+
+bool DwarfCFIToModule::ValExpressionRule(uint64 address, int reg,
+                                         const string &expression) {
+  reporter_->ExpressionsNotSupported(entry_offset_, RegisterName(reg));
+  // Treat this as a non-fatal error.
+  return true;
+}
+
+bool DwarfCFIToModule::End() {
+  module_->AddStackFrameEntry(entry_);
+  entry_ = NULL;
+  return true;
+}
+
+void DwarfCFIToModule::Reporter::UnnamedRegister(size_t offset, int reg) {
+  fprintf(stderr, "%s, section '%s': "
+          "the call frame entry at offset 0x%zx refers to register %d,"
+          " whose name we don't know\n",
+          file_.c_str(), section_.c_str(), offset, reg);
+}
+
+void DwarfCFIToModule::Reporter::UndefinedNotSupported(size_t offset,
+                                                       const string &reg) {
+  fprintf(stderr, "%s, section '%s': "
+          "the call frame entry at offset 0x%zx sets the rule for "
+          "register '%s' to 'undefined', but the Breakpad symbol file format"
+          " cannot express this\n",
+          file_.c_str(), section_.c_str(), offset, reg.c_str());
+}
+
+void DwarfCFIToModule::Reporter::ExpressionsNotSupported(size_t offset,
+                                                         const string &reg) {
+  fprintf(stderr, "%s, section '%s': "
+          "the call frame entry at offset 0x%zx uses a DWARF expression to"
+          " describe how to recover register '%s', "
+          " but this translator cannot yet translate DWARF expressions to"
+          " Breakpad postfix expressions\n",
+          file_.c_str(), section_.c_str(), offset, reg.c_str());
+}
+
+} // namespace google_breakpad
diff --git a/google-breakpad/src/common/dwarf_cfi_to_module.h b/google-breakpad/src/common/dwarf_cfi_to_module.h
new file mode 100644
index 0000000..084b8f5
--- /dev/null
+++ b/google-breakpad/src/common/dwarf_cfi_to_module.h
@@ -0,0 +1,202 @@
+// -*- mode: c++ -*-
+
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// dwarf_cfi_to_module.h: Define the DwarfCFIToModule class, which
+// accepts parsed DWARF call frame info and adds it to a
+// google_breakpad::Module object, which can write that information to
+// a Breakpad symbol file.
+
+#ifndef COMMON_LINUX_DWARF_CFI_TO_MODULE_H
+#define COMMON_LINUX_DWARF_CFI_TO_MODULE_H
+
+#include <assert.h>
+#include <stdio.h>
+
+#include <set>
+#include <string>
+#include <vector>
+
+#include "common/module.h"
+#include "common/dwarf/dwarf2reader.h"
+#include "common/using_std_string.h"
+
+namespace google_breakpad {
+
+using dwarf2reader::CallFrameInfo;
+using google_breakpad::Module;
+using std::set;
+using std::vector;
+
+// A class that accepts parsed call frame information from the DWARF
+// CFI parser and populates a google_breakpad::Module object with the
+// contents.
+class DwarfCFIToModule: public CallFrameInfo::Handler {
+ public:
+
+  // DwarfCFIToModule uses an instance of this class to report errors
+  // detected while converting DWARF CFI to Breakpad STACK CFI records.
+  class Reporter {
+   public:
+    // Create a reporter that writes messages to the standard error
+    // stream. FILE is the name of the file we're processing, and
+    // SECTION is the name of the section within that file that we're
+    // looking at (.debug_frame, .eh_frame, etc.).
+    Reporter(const string &file, const string &section)
+      : file_(file), section_(section) { }
+    virtual ~Reporter() { }
+
+    // The DWARF CFI entry at OFFSET cites register REG, but REG is not
+    // covered by the vector of register names passed to the
+    // DwarfCFIToModule constructor, nor does it match the return
+    // address column number for this entry.
+    virtual void UnnamedRegister(size_t offset, int reg);
+
+    // The DWARF CFI entry at OFFSET says that REG is undefined, but the
+    // Breakpad symbol file format cannot express this.
+    virtual void UndefinedNotSupported(size_t offset, const string &reg);
+
+    // The DWARF CFI entry at OFFSET says that REG uses a DWARF
+    // expression to find its value, but DwarfCFIToModule is not
+    // capable of translating DWARF expressions to Breakpad postfix
+    // expressions.
+    virtual void ExpressionsNotSupported(size_t offset, const string &reg);
+
+  protected:
+    string file_, section_;
+  };
+
+  // Register name tables. If TABLE is a vector returned by one of these
+  // functions, then TABLE[R] is the name of the register numbered R in
+  // DWARF call frame information.
+  class RegisterNames {
+   public:
+    // Intel's "x86" or IA-32.
+    static vector<string> I386();
+
+    // AMD x86_64, AMD64, Intel EM64T, or Intel 64
+    static vector<string> X86_64();
+
+    // ARM.
+    static vector<string> ARM();
+
+    // ARM64, aka AARCH64.
+    static vector<string> ARM64();
+
+    // MIPS.
+    static vector<string> MIPS();
+
+   private:
+    // Given STRINGS, an array of C strings with SIZE elements, return an
+    // equivalent vector<string>.
+    static vector<string> MakeVector(const char * const *strings, size_t size);
+  };
+
+  // Create a handler for the dwarf2reader::CallFrameInfo parser that
+  // records the stack unwinding information it receives in MODULE.
+  //
+  // Use REGISTER_NAMES[I] as the name of register number I; *this
+  // keeps a reference to the vector, so the vector should remain
+  // alive for as long as the DwarfCFIToModule does.
+  //
+  // Use REPORTER for reporting problems encountered in the conversion
+  // process.
+  DwarfCFIToModule(Module *module, const vector<string> &register_names,
+                   Reporter *reporter)
+      : module_(module), register_names_(register_names), reporter_(reporter),
+        entry_(NULL), return_address_(-1), cfa_name_(".cfa"), ra_name_(".ra") {
+  }
+  virtual ~DwarfCFIToModule() { delete entry_; }
+
+  virtual bool Entry(size_t offset, uint64 address, uint64 length,
+                     uint8 version, const string &augmentation,
+                     unsigned return_address);
+  virtual bool UndefinedRule(uint64 address, int reg);
+  virtual bool SameValueRule(uint64 address, int reg);
+  virtual bool OffsetRule(uint64 address, int reg,
+                          int base_register, long offset);
+  virtual bool ValOffsetRule(uint64 address, int reg,
+                             int base_register, long offset);
+  virtual bool RegisterRule(uint64 address, int reg, int base_register);
+  virtual bool ExpressionRule(uint64 address, int reg,
+                              const string &expression);
+  virtual bool ValExpressionRule(uint64 address, int reg,
+                                 const string &expression);
+  virtual bool End();
+
+ private:
+  // Return the name to use for register REG.
+  string RegisterName(int i);
+
+  // Record RULE for register REG at ADDRESS.
+  void Record(Module::Address address, int reg, const string &rule);
+
+  // The module to which we should add entries.
+  Module *module_;
+
+  // Map from register numbers to register names.
+  const vector<string> &register_names_;
+
+  // The reporter to use to report problems.
+  Reporter *reporter_;
+
+  // The current entry we're constructing.
+  Module::StackFrameEntry *entry_;
+
+  // The section offset of the current frame description entry, for
+  // use in error messages.
+  size_t entry_offset_;
+
+  // The return address column for that entry.
+  unsigned return_address_;
+
+  // The names of the return address and canonical frame address. Putting
+  // these here instead of using string literals allows us to share their
+  // texts in reference-counted std::string implementations (all the
+  // popular ones). Many, many rules cite these strings.
+  string cfa_name_, ra_name_;
+
+  // A set of strings used by this CFI. Before storing a string in one of
+  // our data structures, insert it into this set, and then use the string
+  // from the set.
+  //
+  // Because std::string uses reference counting internally, simply using
+  // strings from this set, even if passed by value, assigned, or held
+  // directly in structures and containers (map<string, ...>, for example),
+  // causes those strings to share a single instance of each distinct piece
+  // of text.
+  set<string> common_strings_;
+};
+
+} // namespace google_breakpad
+
+#endif // COMMON_LINUX_DWARF_CFI_TO_MODULE_H
diff --git a/google-breakpad/src/common/dwarf_cfi_to_module_unittest.cc b/google-breakpad/src/common/dwarf_cfi_to_module_unittest.cc
new file mode 100644
index 0000000..807d1b2
--- /dev/null
+++ b/google-breakpad/src/common/dwarf_cfi_to_module_unittest.cc
@@ -0,0 +1,306 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// dwarf_cfi_to_module_unittest.cc: Tests for google_breakpad::DwarfCFIToModule.
+
+#include <string>
+#include <vector>
+
+#include "breakpad_googletest_includes.h"
+#include "common/dwarf_cfi_to_module.h"
+#include "common/using_std_string.h"
+
+using std::vector;
+
+using google_breakpad::Module;
+using google_breakpad::DwarfCFIToModule;
+using testing::ContainerEq;
+using testing::Test;
+using testing::_;
+
+struct MockCFIReporter: public DwarfCFIToModule::Reporter {
+  MockCFIReporter(const string &file, const string &section)
+      : Reporter(file, section) { }
+  MOCK_METHOD2(UnnamedRegister, void(size_t offset, int reg));
+  MOCK_METHOD2(UndefinedNotSupported, void(size_t offset, const string &reg));
+  MOCK_METHOD2(ExpressionsNotSupported, void(size_t offset, const string &reg));
+};
+
+struct DwarfCFIToModuleFixture {
+  DwarfCFIToModuleFixture()
+      : module("module name", "module os", "module arch", "module id"),
+        reporter("reporter file", "reporter section"),
+        handler(&module, register_names, &reporter) {
+    register_names.push_back("reg0");
+    register_names.push_back("reg1");
+    register_names.push_back("reg2");
+    register_names.push_back("reg3");
+    register_names.push_back("reg4");
+    register_names.push_back("reg5");
+    register_names.push_back("reg6");
+    register_names.push_back("reg7");
+    register_names.push_back("sp");
+    register_names.push_back("pc");
+    register_names.push_back("");
+
+    EXPECT_CALL(reporter, UnnamedRegister(_, _)).Times(0);
+    EXPECT_CALL(reporter, UndefinedNotSupported(_, _)).Times(0);
+    EXPECT_CALL(reporter, ExpressionsNotSupported(_, _)).Times(0);
+  }
+
+  Module module;
+  vector<string> register_names;
+  MockCFIReporter reporter;
+  DwarfCFIToModule handler;
+  vector<Module::StackFrameEntry *> entries;
+};
+
+class Entry: public DwarfCFIToModuleFixture, public Test { };
+
+TEST_F(Entry, Accept) {
+  ASSERT_TRUE(handler.Entry(0x3b8961b8, 0xa21069698096fc98ULL,
+                            0xb440ce248169c8d6ULL, 3, "", 0xea93c106));
+  ASSERT_TRUE(handler.End());
+  module.GetStackFrameEntries(&entries);
+  EXPECT_EQ(1U, entries.size());
+  EXPECT_EQ(0xa21069698096fc98ULL, entries[0]->address);
+  EXPECT_EQ(0xb440ce248169c8d6ULL, entries[0]->size);
+  EXPECT_EQ(0U, entries[0]->initial_rules.size());
+  EXPECT_EQ(0U, entries[0]->rule_changes.size());
+}
+
+TEST_F(Entry, AcceptOldVersion) {
+  ASSERT_TRUE(handler.Entry(0xeb60e0fc, 0x75b8806bb09eab78ULL,
+                            0xc771f44958d40bbcULL, 1, "", 0x093c945e));
+  ASSERT_TRUE(handler.End());
+  module.GetStackFrameEntries(&entries);
+  EXPECT_EQ(1U, entries.size());
+  EXPECT_EQ(0x75b8806bb09eab78ULL, entries[0]->address);
+  EXPECT_EQ(0xc771f44958d40bbcULL, entries[0]->size);
+  EXPECT_EQ(0U, entries[0]->initial_rules.size());
+  EXPECT_EQ(0U, entries[0]->rule_changes.size());
+}
+
+struct RuleFixture: public DwarfCFIToModuleFixture {
+  RuleFixture() : DwarfCFIToModuleFixture() {
+    entry_address = 0x89327ebf86b47492ULL;
+    entry_size    = 0x2f8cd573072fe02aULL;
+    return_reg    = 0x7886a346;
+  }
+  void StartEntry() {
+    ASSERT_TRUE(handler.Entry(0x4445c05c, entry_address, entry_size,
+                              3, "", return_reg));
+  }
+  void CheckEntry() {
+    module.GetStackFrameEntries(&entries);
+    EXPECT_EQ(1U, entries.size());
+    EXPECT_EQ(entry_address, entries[0]->address);
+    EXPECT_EQ(entry_size, entries[0]->size);
+  }
+  uint64 entry_address, entry_size;
+  unsigned return_reg;
+};
+
+class Rule: public RuleFixture, public Test { };
+
+TEST_F(Rule, UndefinedRule) {
+  EXPECT_CALL(reporter, UndefinedNotSupported(_, "reg7"));
+  StartEntry();
+  ASSERT_TRUE(handler.UndefinedRule(entry_address, 7));
+  ASSERT_TRUE(handler.End());
+  CheckEntry();
+  EXPECT_EQ(0U, entries[0]->initial_rules.size());
+  EXPECT_EQ(0U, entries[0]->rule_changes.size());
+}
+
+TEST_F(Rule, RegisterWithEmptyName) {
+  EXPECT_CALL(reporter, UnnamedRegister(_, 10));
+  EXPECT_CALL(reporter, UndefinedNotSupported(_, "unnamed_register10"));
+  StartEntry();
+  ASSERT_TRUE(handler.UndefinedRule(entry_address, 10));
+  ASSERT_TRUE(handler.End());
+  CheckEntry();
+  EXPECT_EQ(0U, entries[0]->initial_rules.size());
+  EXPECT_EQ(0U, entries[0]->rule_changes.size());
+}
+
+TEST_F(Rule, SameValueRule) {
+  StartEntry();
+  ASSERT_TRUE(handler.SameValueRule(entry_address, 6));
+  ASSERT_TRUE(handler.End());
+  CheckEntry();
+  Module::RuleMap expected_initial;
+  expected_initial["reg6"] = "reg6";
+  EXPECT_THAT(entries[0]->initial_rules, ContainerEq(expected_initial));
+  EXPECT_EQ(0U, entries[0]->rule_changes.size());
+}
+
+TEST_F(Rule, OffsetRule) {
+  StartEntry();
+  ASSERT_TRUE(handler.OffsetRule(entry_address + 1, return_reg,
+                                 DwarfCFIToModule::kCFARegister,
+                                 16927065));
+  ASSERT_TRUE(handler.End());
+  CheckEntry();
+  EXPECT_EQ(0U, entries[0]->initial_rules.size());
+  Module::RuleChangeMap expected_changes;
+  expected_changes[entry_address + 1][".ra"] = ".cfa 16927065 + ^";
+  EXPECT_THAT(entries[0]->rule_changes, ContainerEq(expected_changes));
+}
+
+TEST_F(Rule, OffsetRuleNegative) {
+  StartEntry();
+  ASSERT_TRUE(handler.OffsetRule(entry_address + 1,
+                                 DwarfCFIToModule::kCFARegister, 4, -34530721));
+  ASSERT_TRUE(handler.End());
+  CheckEntry();
+  EXPECT_EQ(0U, entries[0]->initial_rules.size());
+  Module::RuleChangeMap expected_changes;
+  expected_changes[entry_address + 1][".cfa"] = "reg4 -34530721 + ^";
+  EXPECT_THAT(entries[0]->rule_changes, ContainerEq(expected_changes));
+}
+
+TEST_F(Rule, ValOffsetRule) {
+  // Use an unnamed register number, to exercise that branch of RegisterName.
+  EXPECT_CALL(reporter, UnnamedRegister(_, 11));
+  StartEntry();
+  ASSERT_TRUE(handler.ValOffsetRule(entry_address + 0x5ab7,
+                                    DwarfCFIToModule::kCFARegister,
+                                    11, 61812979));
+  ASSERT_TRUE(handler.End());
+  CheckEntry();
+  EXPECT_EQ(0U, entries[0]->initial_rules.size());
+  Module::RuleChangeMap expected_changes;
+  expected_changes[entry_address + 0x5ab7][".cfa"] =
+      "unnamed_register11 61812979 +";
+  EXPECT_THAT(entries[0]->rule_changes, ContainerEq(expected_changes));
+}
+
+TEST_F(Rule, RegisterRule) {
+  StartEntry();
+  ASSERT_TRUE(handler.RegisterRule(entry_address, return_reg, 3));
+  ASSERT_TRUE(handler.End());
+  CheckEntry();
+  Module::RuleMap expected_initial;
+  expected_initial[".ra"] = "reg3";
+  EXPECT_THAT(entries[0]->initial_rules, ContainerEq(expected_initial));
+  EXPECT_EQ(0U, entries[0]->rule_changes.size());
+}
+
+TEST_F(Rule, ExpressionRule) {
+  EXPECT_CALL(reporter, ExpressionsNotSupported(_, "reg2"));
+  StartEntry();
+  ASSERT_TRUE(handler.ExpressionRule(entry_address + 0xf326, 2,
+                                     "it takes two to tango"));
+  ASSERT_TRUE(handler.End());
+  CheckEntry();
+  EXPECT_EQ(0U, entries[0]->initial_rules.size());
+  EXPECT_EQ(0U, entries[0]->rule_changes.size());
+}
+
+TEST_F(Rule, ValExpressionRule) {
+  EXPECT_CALL(reporter, ExpressionsNotSupported(_, "reg0"));
+  StartEntry();
+  ASSERT_TRUE(handler.ValExpressionRule(entry_address + 0x6367, 0,
+                                        "bit off more than he could chew"));
+  ASSERT_TRUE(handler.End());
+  CheckEntry();
+  EXPECT_EQ(0U, entries[0]->initial_rules.size());
+  EXPECT_EQ(0U, entries[0]->rule_changes.size());
+}
+
+TEST_F(Rule, DefaultReturnAddressRule) {
+  return_reg = 2;
+  StartEntry();
+  ASSERT_TRUE(handler.RegisterRule(entry_address, 0, 1));
+  ASSERT_TRUE(handler.End());
+  CheckEntry();
+  Module::RuleMap expected_initial;
+  expected_initial[".ra"] = "reg2";
+  expected_initial["reg0"] = "reg1";
+  EXPECT_THAT(entries[0]->initial_rules, ContainerEq(expected_initial));
+  EXPECT_EQ(0U, entries[0]->rule_changes.size());
+}
+
+TEST_F(Rule, DefaultReturnAddressRuleOverride) {
+  return_reg = 2;
+  StartEntry();
+  ASSERT_TRUE(handler.RegisterRule(entry_address, return_reg, 1));
+  ASSERT_TRUE(handler.End());
+  CheckEntry();
+  Module::RuleMap expected_initial;
+  expected_initial[".ra"] = "reg1";
+  EXPECT_THAT(entries[0]->initial_rules, ContainerEq(expected_initial));
+  EXPECT_EQ(0U, entries[0]->rule_changes.size());
+}
+
+TEST_F(Rule, DefaultReturnAddressRuleLater) {
+  return_reg = 2;
+  StartEntry();
+  ASSERT_TRUE(handler.RegisterRule(entry_address + 1, return_reg, 1));
+  ASSERT_TRUE(handler.End());
+  CheckEntry();
+  Module::RuleMap expected_initial;
+  expected_initial[".ra"] = "reg2";
+  EXPECT_THAT(entries[0]->initial_rules, ContainerEq(expected_initial));
+  Module::RuleChangeMap expected_changes;
+  expected_changes[entry_address + 1][".ra"] = "reg1";
+  EXPECT_THAT(entries[0]->rule_changes, ContainerEq(expected_changes));
+}
+
+TEST(RegisterNames, I386) {
+  vector<string> names = DwarfCFIToModule::RegisterNames::I386();
+
+  EXPECT_EQ("$eax", names[0]);
+  EXPECT_EQ("$ecx", names[1]);
+  EXPECT_EQ("$esp", names[4]);
+  EXPECT_EQ("$eip", names[8]);
+}
+
+TEST(RegisterNames, ARM) {
+  vector<string> names = DwarfCFIToModule::RegisterNames::ARM();
+
+  EXPECT_EQ("r0", names[0]);
+  EXPECT_EQ("r10", names[10]);
+  EXPECT_EQ("sp", names[13]);
+  EXPECT_EQ("lr", names[14]);
+  EXPECT_EQ("pc", names[15]);
+}
+
+TEST(RegisterNames, X86_64) {
+  vector<string> names = DwarfCFIToModule::RegisterNames::X86_64();
+
+  EXPECT_EQ("$rax", names[0]);
+  EXPECT_EQ("$rdx", names[1]);
+  EXPECT_EQ("$rbp", names[6]);
+  EXPECT_EQ("$rsp", names[7]);
+  EXPECT_EQ("$rip", names[16]);
+}
diff --git a/google-breakpad/src/common/dwarf_cu_to_module.cc b/google-breakpad/src/common/dwarf_cu_to_module.cc
new file mode 100644
index 0000000..1729d4a
--- /dev/null
+++ b/google-breakpad/src/common/dwarf_cu_to_module.cc
@@ -0,0 +1,1073 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// Implement the DwarfCUToModule class; see dwarf_cu_to_module.h.
+
+// For <inttypes.h> PRI* macros, before anything else might #include it.
+#ifndef __STDC_FORMAT_MACROS
+#define __STDC_FORMAT_MACROS
+#endif  /* __STDC_FORMAT_MACROS */
+
+#include "common/dwarf_cu_to_module.h"
+
+#include <assert.h>
+#if !defined(__ANDROID__)
+#include <cxxabi.h>
+#endif
+#include <inttypes.h>
+#include <stdio.h>
+
+#include <algorithm>
+#include <utility>
+
+#include "common/dwarf_line_to_module.h"
+#include "common/unordered.h"
+
+namespace google_breakpad {
+
+using std::map;
+using std::pair;
+using std::sort;
+using std::vector;
+
+// Data provided by a DWARF specification DIE.
+//
+// In DWARF, the DIE for a definition may contain a DW_AT_specification
+// attribute giving the offset of the corresponding declaration DIE, and
+// the definition DIE may omit information given in the declaration. For
+// example, it's common for a function's address range to appear only in
+// its definition DIE, but its name to appear only in its declaration
+// DIE.
+//
+// The dumper needs to be able to follow DW_AT_specification links to
+// bring all this information together in a FUNC record. Conveniently,
+// DIEs that are the target of such links have a DW_AT_declaration flag
+// set, so we can identify them when we first see them, and record their
+// contents for later reference.
+//
+// A Specification holds information gathered from a declaration DIE that
+// we may need if we find a DW_AT_specification link pointing to it.
+struct DwarfCUToModule::Specification {
+  // The qualified name that can be found by demangling DW_AT_MIPS_linkage_name.
+  string qualified_name;
+
+  // The name of the enclosing scope, or the empty string if there is none.
+  string enclosing_name;
+
+  // The name for the specification DIE itself, without any enclosing
+  // name components.
+  string unqualified_name;
+};
+
+// An abstract origin -- base definition of an inline function.
+struct AbstractOrigin {
+  AbstractOrigin() : name() {}
+  explicit AbstractOrigin(const string& name) : name(name) {}
+
+  string name;
+};
+
+typedef map<uint64, AbstractOrigin> AbstractOriginByOffset;
+
+// Data global to the DWARF-bearing file that is private to the
+// DWARF-to-Module process.
+struct DwarfCUToModule::FilePrivate {
+  // A set of strings used in this CU. Before storing a string in one of
+  // our data structures, insert it into this set, and then use the string
+  // from the set.
+  //
+  // In some STL implementations, strings are reference-counted internally,
+  // meaning that simply using strings from this set, even if passed by
+  // value, assigned, or held directly in structures and containers
+  // (map<string, ...>, for example), causes those strings to share a
+  // single instance of each distinct piece of text. GNU's libstdc++ uses
+  // reference counts, and I believe MSVC did as well, at some point.
+  // However, C++ '11 implementations are moving away from reference
+  // counting.
+  //
+  // In other implementations, string assignments copy the string's text,
+  // so this set will actually hold yet another copy of the string (although
+  // everything will still work). To improve memory consumption portably,
+  // we will probably need to use pointers to strings held in this set.
+  unordered_set<string> common_strings;
+
+  // A map from offsets of DIEs within the .debug_info section to
+  // Specifications describing those DIEs. Specification references can
+  // cross compilation unit boundaries.
+  SpecificationByOffset specifications;
+
+  AbstractOriginByOffset origins;
+};
+
+DwarfCUToModule::FileContext::FileContext(const string &filename,
+                                          Module *module,
+                                          bool handle_inter_cu_refs)
+    : filename_(filename),
+      module_(module),
+      handle_inter_cu_refs_(handle_inter_cu_refs),
+      file_private_(new FilePrivate()) {
+}
+
+DwarfCUToModule::FileContext::~FileContext() {
+}
+
+void DwarfCUToModule::FileContext::AddSectionToSectionMap(
+    const string& name, const char* contents, uint64 length) {
+  section_map_[name] = std::make_pair(contents, length);
+}
+
+void DwarfCUToModule::FileContext::ClearSectionMapForTest() {
+  section_map_.clear();
+}
+
+const dwarf2reader::SectionMap&
+DwarfCUToModule::FileContext::section_map() const {
+  return section_map_;
+}
+
+void DwarfCUToModule::FileContext::ClearSpecifications() {
+  if (!handle_inter_cu_refs_)
+    file_private_->specifications.clear();
+}
+
+bool DwarfCUToModule::FileContext::IsUnhandledInterCUReference(
+    uint64 offset, uint64 compilation_unit_start) const {
+  if (handle_inter_cu_refs_)
+    return false;
+  return offset < compilation_unit_start;
+}
+
+// Information global to the particular compilation unit we're
+// parsing. This is for data shared across the CU's entire DIE tree,
+// and parameters from the code invoking the CU parser.
+struct DwarfCUToModule::CUContext {
+  CUContext(FileContext *file_context_arg, WarningReporter *reporter_arg)
+      : file_context(file_context_arg),
+        reporter(reporter_arg),
+        language(Language::CPlusPlus) {}
+
+  ~CUContext() {
+    for (vector<Module::Function *>::iterator it = functions.begin();
+         it != functions.end(); ++it) {
+      delete *it;
+    }
+  };
+
+  // The DWARF-bearing file into which this CU was incorporated.
+  FileContext *file_context;
+
+  // For printing error messages.
+  WarningReporter *reporter;
+
+  // The source language of this compilation unit.
+  const Language *language;
+
+  // The functions defined in this compilation unit. We accumulate
+  // them here during parsing. Then, in DwarfCUToModule::Finish, we
+  // assign them lines and add them to file_context->module.
+  //
+  // Destroying this destroys all the functions this vector points to.
+  vector<Module::Function *> functions;
+};
+
+// Information about the context of a particular DIE. This is for
+// information that changes as we descend the tree towards the leaves:
+// the containing classes/namespaces, etc.
+struct DwarfCUToModule::DIEContext {
+  // The fully-qualified name of the context. For example, for a
+  // tree like:
+  //
+  // DW_TAG_namespace Foo
+  //   DW_TAG_class Bar
+  //     DW_TAG_subprogram Baz
+  //
+  // in a C++ compilation unit, the DIEContext's name for the
+  // DW_TAG_subprogram DIE would be "Foo::Bar". The DIEContext's
+  // name for the DW_TAG_namespace DIE would be "".
+  string name;
+};
+
+// An abstract base class for all the dumper's DIE handlers.
+class DwarfCUToModule::GenericDIEHandler: public dwarf2reader::DIEHandler {
+ public:
+  // Create a handler for the DIE at OFFSET whose compilation unit is
+  // described by CU_CONTEXT, and whose immediate context is described
+  // by PARENT_CONTEXT.
+  GenericDIEHandler(CUContext *cu_context, DIEContext *parent_context,
+                    uint64 offset)
+      : cu_context_(cu_context),
+        parent_context_(parent_context),
+        offset_(offset),
+        declaration_(false),
+        specification_(NULL) { }
+
+  // Derived classes' ProcessAttributeUnsigned can defer to this to
+  // handle DW_AT_declaration, or simply not override it.
+  void ProcessAttributeUnsigned(enum DwarfAttribute attr,
+                                enum DwarfForm form,
+                                uint64 data);
+
+  // Derived classes' ProcessAttributeReference can defer to this to
+  // handle DW_AT_specification, or simply not override it.
+  void ProcessAttributeReference(enum DwarfAttribute attr,
+                                 enum DwarfForm form,
+                                 uint64 data);
+
+  // Derived classes' ProcessAttributeReference can defer to this to
+  // handle DW_AT_specification, or simply not override it.
+  void ProcessAttributeString(enum DwarfAttribute attr,
+                              enum DwarfForm form,
+                              const string &data);
+
+ protected:
+  // Compute and return the fully-qualified name of the DIE. If this
+  // DIE is a declaration DIE, to be cited by other DIEs'
+  // DW_AT_specification attributes, record its enclosing name and
+  // unqualified name in the specification table.
+  //
+  // Use this from EndAttributes member functions, not ProcessAttribute*
+  // functions; only the former can be sure that all the DIE's attributes
+  // have been seen.
+  string ComputeQualifiedName();
+
+  CUContext *cu_context_;
+  DIEContext *parent_context_;
+  uint64 offset_;
+
+  // Place the name in the global set of strings. Even though this looks
+  // like a copy, all the major std::string implementations use reference
+  // counting internally, so the effect is to have all the data structures
+  // share copies of strings whenever possible.
+  // FIXME: Should this return something like a string_ref to avoid the
+  // assumption about how strings are implemented?
+  string AddStringToPool(const string &str);
+
+  // If this DIE has a DW_AT_declaration attribute, this is its value.
+  // It is false on DIEs with no DW_AT_declaration attribute.
+  bool declaration_;
+
+  // If this DIE has a DW_AT_specification attribute, this is the
+  // Specification structure for the DIE the attribute refers to.
+  // Otherwise, this is NULL.
+  Specification *specification_;
+
+  // The value of the DW_AT_name attribute, or the empty string if the
+  // DIE has no such attribute.
+  string name_attribute_;
+
+  // The demangled value of the DW_AT_MIPS_linkage_name attribute, or the empty
+  // string if the DIE has no such attribute or its content could not be
+  // demangled.
+  string demangled_name_;
+};
+
+void DwarfCUToModule::GenericDIEHandler::ProcessAttributeUnsigned(
+    enum DwarfAttribute attr,
+    enum DwarfForm form,
+    uint64 data) {
+  switch (attr) {
+    case dwarf2reader::DW_AT_declaration: declaration_ = (data != 0); break;
+    default: break;
+  }
+}
+
+void DwarfCUToModule::GenericDIEHandler::ProcessAttributeReference(
+    enum DwarfAttribute attr,
+    enum DwarfForm form,
+    uint64 data) {
+  switch (attr) {
+    case dwarf2reader::DW_AT_specification: {
+      FileContext *file_context = cu_context_->file_context;
+      if (file_context->IsUnhandledInterCUReference(
+              data, cu_context_->reporter->cu_offset())) {
+        cu_context_->reporter->UnhandledInterCUReference(offset_, data);
+        break;
+      }
+      // Find the Specification to which this attribute refers, and
+      // set specification_ appropriately. We could do more processing
+      // here, but it's better to leave the real work to our
+      // EndAttribute member function, at which point we know we have
+      // seen all the DIE's attributes.
+      SpecificationByOffset *specifications =
+          &file_context->file_private_->specifications;
+      SpecificationByOffset::iterator spec = specifications->find(data);
+      if (spec != specifications->end()) {
+        specification_ = &spec->second;
+      } else {
+        // Technically, there's no reason a DW_AT_specification
+        // couldn't be a forward reference, but supporting that would
+        // be a lot of work (changing to a two-pass structure), and I
+        // don't think any producers we care about ever emit such
+        // things.
+        cu_context_->reporter->UnknownSpecification(offset_, data);
+      }
+      break;
+    }
+    default: break;
+  }
+}
+
+string DwarfCUToModule::GenericDIEHandler::AddStringToPool(const string &str) {
+  pair<unordered_set<string>::iterator, bool> result =
+    cu_context_->file_context->file_private_->common_strings.insert(str);
+  return *result.first;
+}
+
+void DwarfCUToModule::GenericDIEHandler::ProcessAttributeString(
+    enum DwarfAttribute attr,
+    enum DwarfForm form,
+    const string &data) {
+  switch (attr) {
+    case dwarf2reader::DW_AT_name:
+      name_attribute_ = AddStringToPool(data);
+      break;
+    case dwarf2reader::DW_AT_MIPS_linkage_name: {
+      char* demangled = NULL;
+      int status = -1;
+#if !defined(__ANDROID__)  // Android NDK doesn't provide abi::__cxa_demangle.
+      demangled = abi::__cxa_demangle(data.c_str(), NULL, NULL, &status);
+#endif
+      if (status != 0) {
+        cu_context_->reporter->DemangleError(data, status);
+        demangled_name_ = "";
+        break;
+      }
+      if (demangled) {
+        demangled_name_ = AddStringToPool(demangled);
+        free(reinterpret_cast<void*>(demangled));
+      }
+      break;
+    }
+    default: break;
+  }
+}
+
+string DwarfCUToModule::GenericDIEHandler::ComputeQualifiedName() {
+  // Use the demangled name, if one is available. Demangled names are
+  // preferable to those inferred from the DWARF structure because they
+  // include argument types.
+  const string *qualified_name = NULL;
+  if (!demangled_name_.empty()) {
+    // Found it is this DIE.
+    qualified_name = &demangled_name_;
+  } else if (specification_ && !specification_->qualified_name.empty()) {
+    // Found it on the specification.
+    qualified_name = &specification_->qualified_name;
+  }
+
+  const string *unqualified_name;
+  const string *enclosing_name;
+  if (!qualified_name) {
+    // Find our unqualified name. If the DIE has its own DW_AT_name
+    // attribute, then use that; otherwise, check our specification.
+    if (name_attribute_.empty() && specification_)
+      unqualified_name = &specification_->unqualified_name;
+    else
+      unqualified_name = &name_attribute_;
+
+    // Find the name of our enclosing context. If we have a
+    // specification, it's the specification's enclosing context that
+    // counts; otherwise, use this DIE's context.
+    if (specification_)
+      enclosing_name = &specification_->enclosing_name;
+    else
+      enclosing_name = &parent_context_->name;
+  }
+
+  // Prepare the return value before upcoming mutations possibly invalidate the
+  // existing pointers.
+  string return_value;
+  if (qualified_name) {
+    return_value = *qualified_name;
+  } else {
+    // Combine the enclosing name and unqualified name to produce our
+    // own fully-qualified name.
+    return_value = cu_context_->language->MakeQualifiedName(*enclosing_name,
+                                                            *unqualified_name);
+  }
+
+  // If this DIE was marked as a declaration, record its names in the
+  // specification table.
+  if (declaration_) {
+    Specification spec;
+    if (qualified_name) {
+      spec.qualified_name = *qualified_name;
+    } else {
+      spec.enclosing_name = *enclosing_name;
+      spec.unqualified_name = *unqualified_name;
+    }
+    cu_context_->file_context->file_private_->specifications[offset_] = spec;
+  }
+
+  return return_value;
+}
+
+// A handler class for DW_TAG_subprogram DIEs.
+class DwarfCUToModule::FuncHandler: public GenericDIEHandler {
+ public:
+  FuncHandler(CUContext *cu_context, DIEContext *parent_context,
+              uint64 offset)
+      : GenericDIEHandler(cu_context, parent_context, offset),
+        low_pc_(0), high_pc_(0), high_pc_form_(dwarf2reader::DW_FORM_addr),
+        abstract_origin_(NULL), inline_(false) { }
+  void ProcessAttributeUnsigned(enum DwarfAttribute attr,
+                                enum DwarfForm form,
+                                uint64 data);
+  void ProcessAttributeSigned(enum DwarfAttribute attr,
+                              enum DwarfForm form,
+                              int64 data);
+  void ProcessAttributeReference(enum DwarfAttribute attr,
+                                 enum DwarfForm form,
+                                 uint64 data);
+
+  bool EndAttributes();
+  void Finish();
+
+ private:
+  // The fully-qualified name, as derived from name_attribute_,
+  // specification_, parent_context_.  Computed in EndAttributes.
+  string name_;
+  uint64 low_pc_, high_pc_; // DW_AT_low_pc, DW_AT_high_pc
+  DwarfForm high_pc_form_; // DW_AT_high_pc can be length or address.
+  const AbstractOrigin* abstract_origin_;
+  bool inline_;
+};
+
+void DwarfCUToModule::FuncHandler::ProcessAttributeUnsigned(
+    enum DwarfAttribute attr,
+    enum DwarfForm form,
+    uint64 data) {
+  switch (attr) {
+    // If this attribute is present at all --- even if its value is
+    // DW_INL_not_inlined --- then GCC may cite it as someone else's
+    // DW_AT_abstract_origin attribute.
+    case dwarf2reader::DW_AT_inline:      inline_  = true; break;
+
+    case dwarf2reader::DW_AT_low_pc:      low_pc_  = data; break;
+    case dwarf2reader::DW_AT_high_pc:
+      high_pc_form_ = form;
+      high_pc_ = data;
+      break;
+
+    default:
+      GenericDIEHandler::ProcessAttributeUnsigned(attr, form, data);
+      break;
+  }
+}
+
+void DwarfCUToModule::FuncHandler::ProcessAttributeSigned(
+    enum DwarfAttribute attr,
+    enum DwarfForm form,
+    int64 data) {
+  switch (attr) {
+    // If this attribute is present at all --- even if its value is
+    // DW_INL_not_inlined --- then GCC may cite it as someone else's
+    // DW_AT_abstract_origin attribute.
+    case dwarf2reader::DW_AT_inline:      inline_  = true; break;
+
+    default:
+      break;
+  }
+}
+
+void DwarfCUToModule::FuncHandler::ProcessAttributeReference(
+    enum DwarfAttribute attr,
+    enum DwarfForm form,
+    uint64 data) {
+  switch (attr) {
+    case dwarf2reader::DW_AT_abstract_origin: {
+      const AbstractOriginByOffset& origins =
+          cu_context_->file_context->file_private_->origins;
+      AbstractOriginByOffset::const_iterator origin = origins.find(data);
+      if (origin != origins.end()) {
+        abstract_origin_ = &(origin->second);
+      } else {
+        cu_context_->reporter->UnknownAbstractOrigin(offset_, data);
+      }
+      break;
+    }
+    default:
+      GenericDIEHandler::ProcessAttributeReference(attr, form, data);
+      break;
+  }
+}
+
+bool DwarfCUToModule::FuncHandler::EndAttributes() {
+  // Compute our name, and record a specification, if appropriate.
+  name_ = ComputeQualifiedName();
+  if (name_.empty() && abstract_origin_) {
+    name_ = abstract_origin_->name;
+  }
+  return true;
+}
+
+void DwarfCUToModule::FuncHandler::Finish() {
+  // Make high_pc_ an address, if it isn't already.
+  if (high_pc_form_ != dwarf2reader::DW_FORM_addr) {
+    high_pc_ += low_pc_;
+  }
+
+  // Did we collect the information we need?  Not all DWARF function
+  // entries have low and high addresses (for example, inlined
+  // functions that were never used), but all the ones we're
+  // interested in cover a non-empty range of bytes.
+  if (low_pc_ < high_pc_) {
+    // Malformed DWARF may omit the name, but all Module::Functions must
+    // have names.
+    string name;
+    if (!name_.empty()) {
+      name = name_;
+    } else {
+      cu_context_->reporter->UnnamedFunction(offset_);
+      name = "<name omitted>";
+    }
+
+    // Create a Module::Function based on the data we've gathered, and
+    // add it to the functions_ list.
+    scoped_ptr<Module::Function> func(new Module::Function(name, low_pc_));
+    func->size = high_pc_ - low_pc_;
+    func->parameter_size = 0;
+    if (func->address) {
+       // If the function address is zero this is a sign that this function
+       // description is just empty debug data and should just be discarded.
+       cu_context_->functions.push_back(func.release());
+     }
+  } else if (inline_) {
+    AbstractOrigin origin(name_);
+    cu_context_->file_context->file_private_->origins[offset_] = origin;
+  }
+}
+
+// A handler for DIEs that contain functions and contribute a
+// component to their names: namespaces, classes, etc.
+class DwarfCUToModule::NamedScopeHandler: public GenericDIEHandler {
+ public:
+  NamedScopeHandler(CUContext *cu_context, DIEContext *parent_context,
+                    uint64 offset)
+      : GenericDIEHandler(cu_context, parent_context, offset) { }
+  bool EndAttributes();
+  DIEHandler *FindChildHandler(uint64 offset, enum DwarfTag tag);
+
+ private:
+  DIEContext child_context_; // A context for our children.
+};
+
+bool DwarfCUToModule::NamedScopeHandler::EndAttributes() {
+  child_context_.name = ComputeQualifiedName();
+  return true;
+}
+
+dwarf2reader::DIEHandler *DwarfCUToModule::NamedScopeHandler::FindChildHandler(
+    uint64 offset,
+    enum DwarfTag tag) {
+  switch (tag) {
+    case dwarf2reader::DW_TAG_subprogram:
+      return new FuncHandler(cu_context_, &child_context_, offset);
+    case dwarf2reader::DW_TAG_namespace:
+    case dwarf2reader::DW_TAG_class_type:
+    case dwarf2reader::DW_TAG_structure_type:
+    case dwarf2reader::DW_TAG_union_type:
+      return new NamedScopeHandler(cu_context_, &child_context_, offset);
+    default:
+      return NULL;
+  }
+}
+
+void DwarfCUToModule::WarningReporter::CUHeading() {
+  if (printed_cu_header_)
+    return;
+  fprintf(stderr, "%s: in compilation unit '%s' (offset 0x%llx):\n",
+          filename_.c_str(), cu_name_.c_str(), cu_offset_);
+  printed_cu_header_ = true;
+}
+
+void DwarfCUToModule::WarningReporter::UnknownSpecification(uint64 offset,
+                                                            uint64 target) {
+  CUHeading();
+  fprintf(stderr, "%s: the DIE at offset 0x%llx has a DW_AT_specification"
+          " attribute referring to the die at offset 0x%llx, which either"
+          " was not marked as a declaration, or comes later in the file\n",
+          filename_.c_str(), offset, target);
+}
+
+void DwarfCUToModule::WarningReporter::UnknownAbstractOrigin(uint64 offset,
+                                                             uint64 target) {
+  CUHeading();
+  fprintf(stderr, "%s: the DIE at offset 0x%llx has a DW_AT_abstract_origin"
+          " attribute referring to the die at offset 0x%llx, which either"
+          " was not marked as an inline, or comes later in the file\n",
+          filename_.c_str(), offset, target);
+}
+
+void DwarfCUToModule::WarningReporter::MissingSection(const string &name) {
+  CUHeading();
+  fprintf(stderr, "%s: warning: couldn't find DWARF '%s' section\n",
+          filename_.c_str(), name.c_str());
+}
+
+void DwarfCUToModule::WarningReporter::BadLineInfoOffset(uint64 offset) {
+  CUHeading();
+  fprintf(stderr, "%s: warning: line number data offset beyond end"
+          " of '.debug_line' section\n",
+          filename_.c_str());
+}
+
+void DwarfCUToModule::WarningReporter::UncoveredHeading() {
+  if (printed_unpaired_header_)
+    return;
+  CUHeading();
+  fprintf(stderr, "%s: warning: skipping unpaired lines/functions:\n",
+          filename_.c_str());
+  printed_unpaired_header_ = true;
+}
+
+void DwarfCUToModule::WarningReporter::UncoveredFunction(
+    const Module::Function &function) {
+  if (!uncovered_warnings_enabled_)
+    return;
+  UncoveredHeading();
+  fprintf(stderr, "    function%s: %s\n",
+          function.size == 0 ? " (zero-length)" : "",
+          function.name.c_str());
+}
+
+void DwarfCUToModule::WarningReporter::UncoveredLine(const Module::Line &line) {
+  if (!uncovered_warnings_enabled_)
+    return;
+  UncoveredHeading();
+  fprintf(stderr, "    line%s: %s:%d at 0x%" PRIx64 "\n",
+          (line.size == 0 ? " (zero-length)" : ""),
+          line.file->name.c_str(), line.number, line.address);
+}
+
+void DwarfCUToModule::WarningReporter::UnnamedFunction(uint64 offset) {
+  CUHeading();
+  fprintf(stderr, "%s: warning: function at offset 0x%llx has no name\n",
+          filename_.c_str(), offset);
+}
+
+void DwarfCUToModule::WarningReporter::DemangleError(
+    const string &input, int error) {
+  CUHeading();
+  fprintf(stderr, "%s: warning: failed to demangle %s with error %d\n",
+          filename_.c_str(), input.c_str(), error);
+}
+
+void DwarfCUToModule::WarningReporter::UnhandledInterCUReference(
+    uint64 offset, uint64 target) {
+  CUHeading();
+  fprintf(stderr, "%s: warning: the DIE at offset 0x%llx has a "
+                  "DW_FORM_ref_addr attribute with an inter-CU reference to "
+                  "0x%llx, but inter-CU reference handling is turned off.\n",
+                  filename_.c_str(), offset, target);
+}
+
+DwarfCUToModule::DwarfCUToModule(FileContext *file_context,
+                                 LineToModuleHandler *line_reader,
+                                 WarningReporter *reporter)
+    : line_reader_(line_reader),
+      cu_context_(new CUContext(file_context, reporter)),
+      child_context_(new DIEContext()),
+      has_source_line_info_(false) {
+}
+
+DwarfCUToModule::~DwarfCUToModule() {
+}
+
+void DwarfCUToModule::ProcessAttributeSigned(enum DwarfAttribute attr,
+                                             enum DwarfForm form,
+                                             int64 data) {
+  switch (attr) {
+    case dwarf2reader::DW_AT_language: // source language of this CU
+      SetLanguage(static_cast<DwarfLanguage>(data));
+      break;
+    default:
+      break;
+  }
+}
+
+void DwarfCUToModule::ProcessAttributeUnsigned(enum DwarfAttribute attr,
+                                               enum DwarfForm form,
+                                               uint64 data) {
+  switch (attr) {
+    case dwarf2reader::DW_AT_stmt_list: // Line number information.
+      has_source_line_info_ = true;
+      source_line_offset_ = data;
+      break;
+    case dwarf2reader::DW_AT_language: // source language of this CU
+      SetLanguage(static_cast<DwarfLanguage>(data));
+      break;
+    default:
+      break;
+  }
+}
+
+void DwarfCUToModule::ProcessAttributeString(enum DwarfAttribute attr,
+                                             enum DwarfForm form,
+                                             const string &data) {
+  switch (attr) {
+    case dwarf2reader::DW_AT_name:
+      cu_context_->reporter->SetCUName(data);
+      break;
+    case dwarf2reader::DW_AT_comp_dir:
+      line_reader_->StartCompilationUnit(data);
+      break;
+    default:
+      break;
+  }
+}
+
+bool DwarfCUToModule::EndAttributes() {
+  return true;
+}
+
+dwarf2reader::DIEHandler *DwarfCUToModule::FindChildHandler(
+    uint64 offset,
+    enum DwarfTag tag) {
+  switch (tag) {
+    case dwarf2reader::DW_TAG_subprogram:
+      return new FuncHandler(cu_context_.get(), child_context_.get(), offset);
+    case dwarf2reader::DW_TAG_namespace:
+    case dwarf2reader::DW_TAG_class_type:
+    case dwarf2reader::DW_TAG_structure_type:
+    case dwarf2reader::DW_TAG_union_type:
+      return new NamedScopeHandler(cu_context_.get(), child_context_.get(),
+                                   offset);
+    default:
+      return NULL;
+  }
+}
+
+void DwarfCUToModule::SetLanguage(DwarfLanguage language) {
+  switch (language) {
+    case dwarf2reader::DW_LANG_Java:
+      cu_context_->language = Language::Java;
+      break;
+
+    // DWARF has no generic language code for assembly language; this is
+    // what the GNU toolchain uses.
+    case dwarf2reader::DW_LANG_Mips_Assembler:
+      cu_context_->language = Language::Assembler;
+      break;
+
+    // C++ covers so many cases that it probably has some way to cope
+    // with whatever the other languages throw at us. So make it the
+    // default.
+    //
+    // Objective C and Objective C++ seem to create entries for
+    // methods whose DW_AT_name values are already fully-qualified:
+    // "-[Classname method:]".  These appear at the top level.
+    //
+    // DWARF data for C should never include namespaces or functions
+    // nested in struct types, but if it ever does, then C++'s
+    // notation is probably not a bad choice for that.
+    default:
+    case dwarf2reader::DW_LANG_ObjC:
+    case dwarf2reader::DW_LANG_ObjC_plus_plus:
+    case dwarf2reader::DW_LANG_C:
+    case dwarf2reader::DW_LANG_C89:
+    case dwarf2reader::DW_LANG_C99:
+    case dwarf2reader::DW_LANG_C_plus_plus:
+      cu_context_->language = Language::CPlusPlus;
+      break;
+  }
+}
+
+void DwarfCUToModule::ReadSourceLines(uint64 offset) {
+  const dwarf2reader::SectionMap &section_map
+      = cu_context_->file_context->section_map();
+  dwarf2reader::SectionMap::const_iterator map_entry
+      = section_map.find(".debug_line");
+  // Mac OS X puts DWARF data in sections whose names begin with "__"
+  // instead of ".".
+  if (map_entry == section_map.end())
+    map_entry = section_map.find("__debug_line");
+  if (map_entry == section_map.end()) {
+    cu_context_->reporter->MissingSection(".debug_line");
+    return;
+  }
+  const char *section_start = map_entry->second.first;
+  uint64 section_length = map_entry->second.second;
+  if (offset >= section_length) {
+    cu_context_->reporter->BadLineInfoOffset(offset);
+    return;
+  }
+  line_reader_->ReadProgram(section_start + offset, section_length - offset,
+                            cu_context_->file_context->module_, &lines_);
+}
+
+namespace {
+// Return true if ADDRESS falls within the range of ITEM.
+template <class T>
+inline bool within(const T &item, Module::Address address) {
+  // Because Module::Address is unsigned, and unsigned arithmetic
+  // wraps around, this will be false if ADDRESS falls before the
+  // start of ITEM, or if it falls after ITEM's end.
+  return address - item.address < item.size;
+}
+}
+
+void DwarfCUToModule::AssignLinesToFunctions() {
+  vector<Module::Function *> *functions = &cu_context_->functions;
+  WarningReporter *reporter = cu_context_->reporter;
+
+  // This would be simpler if we assumed that source line entries
+  // don't cross function boundaries.  However, there's no real reason
+  // to assume that (say) a series of function definitions on the same
+  // line wouldn't get coalesced into one line number entry.  The
+  // DWARF spec certainly makes no such promises.
+  //
+  // So treat the functions and lines as peers, and take the trouble
+  // to compute their ranges' intersections precisely.  In any case,
+  // the hair here is a constant factor for performance; the
+  // complexity from here on out is linear.
+
+  // Put both our functions and lines in order by address.
+  std::sort(functions->begin(), functions->end(),
+            Module::Function::CompareByAddress);
+  std::sort(lines_.begin(), lines_.end(), Module::Line::CompareByAddress);
+
+  // The last line that we used any piece of.  We use this only for
+  // generating warnings.
+  const Module::Line *last_line_used = NULL;
+
+  // The last function and line we warned about --- so we can avoid
+  // doing so more than once.
+  const Module::Function *last_function_cited = NULL;
+  const Module::Line *last_line_cited = NULL;
+
+  // Make a single pass through both vectors from lower to higher
+  // addresses, populating each Function's lines vector with lines
+  // from our lines_ vector that fall within the function's address
+  // range.
+  vector<Module::Function *>::iterator func_it = functions->begin();
+  vector<Module::Line>::const_iterator line_it = lines_.begin();
+
+  Module::Address current;
+
+  // Pointers to the referents of func_it and line_it, or NULL if the
+  // iterator is at the end of the sequence.
+  Module::Function *func;
+  const Module::Line *line;
+
+  // Start current at the beginning of the first line or function,
+  // whichever is earlier.
+  if (func_it != functions->end() && line_it != lines_.end()) {
+    func = *func_it;
+    line = &*line_it;
+    current = std::min(func->address, line->address);
+  } else if (line_it != lines_.end()) {
+    func = NULL;
+    line = &*line_it;
+    current = line->address;
+  } else if (func_it != functions->end()) {
+    func = *func_it;
+    line = NULL;
+    current = (*func_it)->address;
+  } else {
+    return;
+  }
+
+  while (func || line) {
+    // This loop has two invariants that hold at the top.
+    //
+    // First, at least one of the iterators is not at the end of its
+    // sequence, and those that are not refer to the earliest
+    // function or line that contains or starts after CURRENT.
+    //
+    // Note that every byte is in one of four states: it is covered
+    // or not covered by a function, and, independently, it is
+    // covered or not covered by a line.
+    //
+    // The second invariant is that CURRENT refers to a byte whose
+    // state is different from its predecessor, or it refers to the
+    // first byte in the address space. In other words, CURRENT is
+    // always the address of a transition.
+    //
+    // Note that, although each iteration advances CURRENT from one
+    // transition address to the next in each iteration, it might
+    // not advance the iterators. Suppose we have a function that
+    // starts with a line, has a gap, and then a second line, and
+    // suppose that we enter an iteration with CURRENT at the end of
+    // the first line. The next transition address is the start of
+    // the second line, after the gap, so the iteration should
+    // advance CURRENT to that point. At the head of that iteration,
+    // the invariants require that the line iterator be pointing at
+    // the second line. But this is also true at the head of the
+    // next. And clearly, the iteration must not change the function
+    // iterator. So neither iterator moves.
+
+    // Assert the first invariant (see above).
+    assert(!func || current < func->address || within(*func, current));
+    assert(!line || current < line->address || within(*line, current));
+
+    // The next transition after CURRENT.
+    Module::Address next_transition;
+
+    // Figure out which state we're in, add lines or warn, and compute
+    // the next transition address.
+    if (func && current >= func->address) {
+      if (line && current >= line->address) {
+        // Covered by both a line and a function.
+        Module::Address func_left = func->size - (current - func->address);
+        Module::Address line_left = line->size - (current - line->address);
+        // This may overflow, but things work out.
+        next_transition = current + std::min(func_left, line_left);
+        Module::Line l = *line;
+        l.address = current;
+        l.size = next_transition - current;
+        func->lines.push_back(l);
+        last_line_used = line;
+      } else {
+        // Covered by a function, but no line.
+        if (func != last_function_cited) {
+          reporter->UncoveredFunction(*func);
+          last_function_cited = func;
+        }
+        if (line && within(*func, line->address))
+          next_transition = line->address;
+        else
+          // If this overflows, we'll catch it below.
+          next_transition = func->address + func->size;
+      }
+    } else {
+      if (line && current >= line->address) {
+        // Covered by a line, but no function.
+        //
+        // If GCC emits padding after one function to align the start
+        // of the next, then it will attribute the padding
+        // instructions to the last source line of function (to reduce
+        // the size of the line number info), but omit it from the
+        // DW_AT_{low,high}_pc range given in .debug_info (since it
+        // costs nothing to be precise there). If we did use at least
+        // some of the line we're about to skip, and it ends at the
+        // start of the next function, then assume this is what
+        // happened, and don't warn.
+        if (line != last_line_cited
+            && !(func
+                 && line == last_line_used
+                 && func->address - line->address == line->size)) {
+          reporter->UncoveredLine(*line);
+          last_line_cited = line;
+        }
+        if (func && within(*line, func->address))
+          next_transition = func->address;
+        else
+          // If this overflows, we'll catch it below.
+          next_transition = line->address + line->size;
+      } else {
+        // Covered by neither a function nor a line. By the invariant,
+        // both func and line begin after CURRENT. The next transition
+        // is the start of the next function or next line, whichever
+        // is earliest.
+        assert(func || line);
+        if (func && line)
+          next_transition = std::min(func->address, line->address);
+        else if (func)
+          next_transition = func->address;
+        else
+          next_transition = line->address;
+      }
+    }
+
+    // If a function or line abuts the end of the address space, then
+    // next_transition may end up being zero, in which case we've completed
+    // our pass. Handle that here, instead of trying to deal with it in
+    // each place we compute next_transition.
+    if (!next_transition)
+      break;
+
+    // Advance iterators as needed. If lines overlap or functions overlap,
+    // then we could go around more than once. We don't worry too much
+    // about what result we produce in that case, just as long as we don't
+    // hang or crash.
+    while (func_it != functions->end()
+           && next_transition >= (*func_it)->address
+           && !within(**func_it, next_transition))
+      func_it++;
+    func = (func_it != functions->end()) ? *func_it : NULL;
+    while (line_it != lines_.end()
+           && next_transition >= line_it->address
+           && !within(*line_it, next_transition))
+      line_it++;
+    line = (line_it != lines_.end()) ? &*line_it : NULL;
+
+    // We must make progress.
+    assert(next_transition > current);
+    current = next_transition;
+  }
+}
+
+void DwarfCUToModule::Finish() {
+  // Assembly language files have no function data, and that gives us
+  // no place to store our line numbers (even though the GNU toolchain
+  // will happily produce source line info for assembly language
+  // files).  To avoid spurious warnings about lines we can't assign
+  // to functions, skip CUs in languages that lack functions.
+  if (!cu_context_->language->HasFunctions())
+    return;
+
+  // Read source line info, if we have any.
+  if (has_source_line_info_)
+    ReadSourceLines(source_line_offset_);
+
+  vector<Module::Function *> *functions = &cu_context_->functions;
+
+  // Dole out lines to the appropriate functions.
+  AssignLinesToFunctions();
+
+  // Add our functions, which now have source lines assigned to them,
+  // to module_.
+  cu_context_->file_context->module_->AddFunctions(functions->begin(),
+                                                   functions->end());
+
+  // Ownership of the function objects has shifted from cu_context to
+  // the Module.
+  functions->clear();
+
+  cu_context_->file_context->ClearSpecifications();
+}
+
+bool DwarfCUToModule::StartCompilationUnit(uint64 offset,
+                                           uint8 address_size,
+                                           uint8 offset_size,
+                                           uint64 cu_length,
+                                           uint8 dwarf_version) {
+  return dwarf_version >= 2;
+}
+
+bool DwarfCUToModule::StartRootDIE(uint64 offset, enum DwarfTag tag) {
+  // We don't deal with partial compilation units (the only other tag
+  // likely to be used for root DIE).
+  return tag == dwarf2reader::DW_TAG_compile_unit;
+}
+
+} // namespace google_breakpad
diff --git a/google-breakpad/src/common/dwarf_cu_to_module.h b/google-breakpad/src/common/dwarf_cu_to_module.h
new file mode 100644
index 0000000..fd9c380
--- /dev/null
+++ b/google-breakpad/src/common/dwarf_cu_to_module.h
@@ -0,0 +1,318 @@
+// -*- mode: c++ -*-
+
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// Add DWARF debugging information to a Breakpad symbol file. This
+// file defines the DwarfCUToModule class, which accepts parsed DWARF
+// data and populates a google_breakpad::Module with the results; the
+// Module can then write its contents as a Breakpad symbol file.
+
+#ifndef COMMON_LINUX_DWARF_CU_TO_MODULE_H__
+#define COMMON_LINUX_DWARF_CU_TO_MODULE_H__
+
+#include <string>
+
+#include "common/language.h"
+#include "common/module.h"
+#include "common/dwarf/bytereader.h"
+#include "common/dwarf/dwarf2diehandler.h"
+#include "common/dwarf/dwarf2reader.h"
+#include "common/scoped_ptr.h"
+#include "common/using_std_string.h"
+
+namespace google_breakpad {
+
+using dwarf2reader::DwarfAttribute;
+using dwarf2reader::DwarfForm;
+using dwarf2reader::DwarfLanguage;
+using dwarf2reader::DwarfTag;
+
+// Populate a google_breakpad::Module with DWARF debugging information.
+//
+// An instance of this class can be provided as a handler to a
+// dwarf2reader::DIEDispatcher, which can in turn be a handler for a
+// dwarf2reader::CompilationUnit DWARF parser. The handler uses the results
+// of parsing to populate a google_breakpad::Module with source file,
+// function, and source line information.
+class DwarfCUToModule: public dwarf2reader::RootDIEHandler {
+  struct FilePrivate;
+ public:
+  // Information global to the DWARF-bearing file we are processing,
+  // for use by DwarfCUToModule. Each DwarfCUToModule instance deals
+  // with a single compilation unit within the file, but information
+  // global to the whole file is held here. The client is responsible
+  // for filling it in appropriately (except for the 'file_private'
+  // field, which the constructor and destructor take care of), and
+  // then providing it to the DwarfCUToModule instance for each
+  // compilation unit we process in that file. Set HANDLE_INTER_CU_REFS
+  // to true to handle debugging symbols with DW_FORM_ref_addr entries.
+  class FileContext {
+   public:
+    FileContext(const string &filename,
+                Module *module,
+                bool handle_inter_cu_refs);
+    ~FileContext();
+
+    // Add CONTENTS of size LENGTH to the section map as NAME.
+    void AddSectionToSectionMap(const string& name,
+                                const char* contents,
+                                uint64 length);
+
+    // Clear the section map for testing.
+    void ClearSectionMapForTest();
+
+    const dwarf2reader::SectionMap& section_map() const;
+
+   private:
+    friend class DwarfCUToModule;
+
+    // Clears all the Specifications if HANDLE_INTER_CU_REFS_ is false.
+    void ClearSpecifications();
+
+    // Given an OFFSET and a CU that starts at COMPILATION_UNIT_START, returns
+    // true if this is an inter-compilation unit reference that is not being
+    // handled.
+    bool IsUnhandledInterCUReference(uint64 offset,
+                                     uint64 compilation_unit_start) const;
+
+    // The name of this file, for use in error messages.
+    const string filename_;
+
+    // A map of this file's sections, used for finding other DWARF
+    // sections that the .debug_info section may refer to.
+    dwarf2reader::SectionMap section_map_;
+
+    // The Module to which we're contributing definitions.
+    Module *module_;
+
+    // True if we are handling references between compilation units.
+    const bool handle_inter_cu_refs_;
+
+    // Inter-compilation unit data used internally by the handlers.
+    scoped_ptr<FilePrivate> file_private_;
+  };
+
+  // An abstract base class for handlers that handle DWARF line data
+  // for DwarfCUToModule. DwarfCUToModule could certainly just use
+  // dwarf2reader::LineInfo itself directly, but decoupling things
+  // this way makes unit testing a little easier.
+  class LineToModuleHandler {
+   public:
+    LineToModuleHandler() { }
+    virtual ~LineToModuleHandler() { }
+
+    // Called at the beginning of a new compilation unit, prior to calling
+    // ReadProgram(). compilation_dir will indicate the path that the
+    // current compilation unit was compiled in, consistent with the
+    // DW_AT_comp_dir DIE.
+    virtual void StartCompilationUnit(const string& compilation_dir) = 0;
+
+    // Populate MODULE and LINES with source file names and code/line
+    // mappings, given a pointer to some DWARF line number data
+    // PROGRAM, and an overestimate of its size. Add no zero-length
+    // lines to LINES.
+    virtual void ReadProgram(const char *program, uint64 length,
+                             Module *module, vector<Module::Line> *lines) = 0;
+  };
+
+  // The interface DwarfCUToModule uses to report warnings. The member
+  // function definitions for this class write messages to stderr, but
+  // you can override them if you'd like to detect or report these
+  // conditions yourself.
+  class WarningReporter {
+   public:
+    // Warn about problems in the DWARF file FILENAME, in the
+    // compilation unit at OFFSET.
+    WarningReporter(const string &filename, uint64 cu_offset)
+        : filename_(filename), cu_offset_(cu_offset), printed_cu_header_(false),
+          printed_unpaired_header_(false),
+          uncovered_warnings_enabled_(false) { }
+    virtual ~WarningReporter() { }
+
+    // Set the name of the compilation unit we're processing to NAME.
+    virtual void SetCUName(const string &name) { cu_name_ = name; }
+
+    // Accessor and setter for uncovered_warnings_enabled_.
+    // UncoveredFunction and UncoveredLine only report a problem if that is
+    // true. By default, these warnings are disabled, because those
+    // conditions occur occasionally in healthy code.
+    virtual bool uncovered_warnings_enabled() const {
+      return uncovered_warnings_enabled_;
+    }
+    virtual void set_uncovered_warnings_enabled(bool value) {
+      uncovered_warnings_enabled_ = value;
+    }
+
+    // A DW_AT_specification in the DIE at OFFSET refers to a DIE we
+    // haven't processed yet, or that wasn't marked as a declaration,
+    // at TARGET.
+    virtual void UnknownSpecification(uint64 offset, uint64 target);
+
+    // A DW_AT_abstract_origin in the DIE at OFFSET refers to a DIE we
+    // haven't processed yet, or that wasn't marked as inline, at TARGET.
+    virtual void UnknownAbstractOrigin(uint64 offset, uint64 target);
+
+    // We were unable to find the DWARF section named SECTION_NAME.
+    virtual void MissingSection(const string &section_name);
+
+    // The CU's DW_AT_stmt_list offset OFFSET is bogus.
+    virtual void BadLineInfoOffset(uint64 offset);
+
+    // FUNCTION includes code covered by no line number data.
+    virtual void UncoveredFunction(const Module::Function &function);
+
+    // Line number NUMBER in LINE_FILE, of length LENGTH, includes code
+    // covered by no function.
+    virtual void UncoveredLine(const Module::Line &line);
+
+    // The DW_TAG_subprogram DIE at OFFSET has no name specified directly
+    // in the DIE, nor via a DW_AT_specification or DW_AT_abstract_origin
+    // link.
+    virtual void UnnamedFunction(uint64 offset);
+
+    // __cxa_demangle() failed to demangle INPUT.
+    virtual void DemangleError(const string &input, int error);
+
+    // The DW_FORM_ref_addr at OFFSET to TARGET was not handled because
+    // FilePrivate did not retain the inter-CU specification data.
+    virtual void UnhandledInterCUReference(uint64 offset, uint64 target);
+
+    uint64 cu_offset() const {
+      return cu_offset_;
+    }
+
+   protected:
+    const string filename_;
+    const uint64 cu_offset_;
+    string cu_name_;
+    bool printed_cu_header_;
+    bool printed_unpaired_header_;
+    bool uncovered_warnings_enabled_;
+
+   private:
+    // Print a per-CU heading, once.
+    void CUHeading();
+    // Print an unpaired function/line heading, once.
+    void UncoveredHeading();
+  };
+
+  // Create a DWARF debugging info handler for a compilation unit
+  // within FILE_CONTEXT. This uses information received from the
+  // dwarf2reader::CompilationUnit DWARF parser to populate
+  // FILE_CONTEXT->module. Use LINE_READER to handle the compilation
+  // unit's line number data. Use REPORTER to report problems with the
+  // data we find.
+  DwarfCUToModule(FileContext *file_context,
+                  LineToModuleHandler *line_reader,
+                  WarningReporter *reporter);
+  ~DwarfCUToModule();
+
+  void ProcessAttributeSigned(enum DwarfAttribute attr,
+                              enum DwarfForm form,
+                              int64 data);
+  void ProcessAttributeUnsigned(enum DwarfAttribute attr,
+                                enum DwarfForm form,
+                                uint64 data);
+  void ProcessAttributeString(enum DwarfAttribute attr,
+                              enum DwarfForm form,
+                              const string &data);
+  bool EndAttributes();
+  DIEHandler *FindChildHandler(uint64 offset, enum DwarfTag tag);
+
+  // Assign all our source Lines to the Functions that cover their
+  // addresses, and then add them to module_.
+  void Finish();
+
+  bool StartCompilationUnit(uint64 offset, uint8 address_size,
+                            uint8 offset_size, uint64 cu_length,
+                            uint8 dwarf_version);
+  bool StartRootDIE(uint64 offset, enum DwarfTag tag);
+
+ private:
+  // Used internally by the handler. Full definitions are in
+  // dwarf_cu_to_module.cc.
+  struct CUContext;
+  struct DIEContext;
+  struct Specification;
+  class GenericDIEHandler;
+  class FuncHandler;
+  class NamedScopeHandler;
+
+  // A map from section offsets to specifications.
+  typedef map<uint64, Specification> SpecificationByOffset;
+
+  // Set this compilation unit's source language to LANGUAGE.
+  void SetLanguage(DwarfLanguage language);
+
+  // Read source line information at OFFSET in the .debug_line
+  // section.  Record source files in module_, but record source lines
+  // in lines_; we apportion them to functions in
+  // AssignLinesToFunctions.
+  void ReadSourceLines(uint64 offset);
+
+  // Assign the lines in lines_ to the individual line lists of the
+  // functions in functions_.  (DWARF line information maps an entire
+  // compilation unit at a time, and gives no indication of which
+  // lines belong to which functions, beyond their addresses.)
+  void AssignLinesToFunctions();
+
+  // The only reason cu_context_ and child_context_ are pointers is
+  // that we want to keep their definitions private to
+  // dwarf_cu_to_module.cc, instead of listing them all here. They are
+  // owned by this DwarfCUToModule: the constructor sets them, and the
+  // destructor deletes them.
+
+  // The handler to use to handle line number data.
+  LineToModuleHandler *line_reader_;
+
+  // This compilation unit's context.
+  scoped_ptr<CUContext> cu_context_;
+
+  // A context for our children.
+  scoped_ptr<DIEContext> child_context_;
+
+  // True if this compilation unit has source line information.
+  bool has_source_line_info_;
+
+  // The offset of this compilation unit's line number information in
+  // the .debug_line section.
+  uint64 source_line_offset_;
+
+  // The line numbers we have seen thus far.  We accumulate these here
+  // during parsing.  Then, in Finish, we call AssignLinesToFunctions
+  // to dole them out to the appropriate functions.
+  vector<Module::Line> lines_;
+};
+
+}  // namespace google_breakpad
+
+#endif  // COMMON_LINUX_DWARF_CU_TO_MODULE_H__
diff --git a/google-breakpad/src/common/dwarf_cu_to_module_unittest.cc b/google-breakpad/src/common/dwarf_cu_to_module_unittest.cc
new file mode 100644
index 0000000..9ff842c
--- /dev/null
+++ b/google-breakpad/src/common/dwarf_cu_to_module_unittest.cc
@@ -0,0 +1,1779 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// dwarf_cu_to_module.cc: Unit tests for google_breakpad::DwarfCUToModule.
+
+#include <string>
+#include <utility>
+#include <vector>
+
+#include "breakpad_googletest_includes.h"
+#include "common/dwarf_cu_to_module.h"
+#include "common/using_std_string.h"
+
+using std::make_pair;
+using std::vector;
+
+using dwarf2reader::DIEHandler;
+using dwarf2reader::DwarfTag;
+using dwarf2reader::DwarfAttribute;
+using dwarf2reader::DwarfForm;
+using dwarf2reader::DwarfInline;
+using dwarf2reader::RootDIEHandler;
+using google_breakpad::DwarfCUToModule;
+using google_breakpad::Module;
+
+using ::testing::_;
+using ::testing::AtMost;
+using ::testing::Invoke;
+using ::testing::Return;
+using ::testing::Test;
+using ::testing::TestWithParam;
+using ::testing::Values;
+using ::testing::ValuesIn;
+
+// Mock classes.
+
+class MockLineToModuleHandler: public DwarfCUToModule::LineToModuleHandler {
+ public:
+  MOCK_METHOD1(StartCompilationUnit, void(const string& compilation_dir));
+  MOCK_METHOD4(ReadProgram, void(const char* program, uint64 length,
+                                 Module *module, vector<Module::Line> *lines));
+};
+
+class MockWarningReporter: public DwarfCUToModule::WarningReporter {
+ public:
+  MockWarningReporter(const string &filename, uint64 cu_offset)
+      : DwarfCUToModule::WarningReporter(filename, cu_offset) { }
+  MOCK_METHOD1(SetCUName, void(const string &name));
+  MOCK_METHOD2(UnknownSpecification, void(uint64 offset, uint64 target));
+  MOCK_METHOD2(UnknownAbstractOrigin, void(uint64 offset, uint64 target));
+  MOCK_METHOD1(MissingSection, void(const string &section_name));
+  MOCK_METHOD1(BadLineInfoOffset, void(uint64 offset));
+  MOCK_METHOD1(UncoveredFunction, void(const Module::Function &function));
+  MOCK_METHOD1(UncoveredLine, void(const Module::Line &line));
+  MOCK_METHOD1(UnnamedFunction, void(uint64 offset));
+  MOCK_METHOD2(DemangleError, void(const string &input, int error));
+  MOCK_METHOD2(UnhandledInterCUReference, void(uint64 offset, uint64 target));
+};
+
+// A fixture class including all the objects needed to handle a
+// compilation unit, and their entourage. It includes member functions
+// for doing common kinds of setup and tests.
+class CUFixtureBase {
+ public:
+  // If we have:
+  //
+  //   vector<Module::Line> lines;
+  //   AppendLinesFunctor appender(lines);
+  //
+  // then doing:
+  //
+  //   appender(line_program, length, module, line_vector);
+  //
+  // will append lines to the end of line_vector.  We can use this with
+  // MockLineToModuleHandler like this:
+  //
+  //   MockLineToModuleHandler l2m;
+  //   EXPECT_CALL(l2m, ReadProgram(_,_,_,_))
+  //       .WillOnce(DoAll(Invoke(appender), Return()));
+  //
+  // in which case calling l2m with some line vector will append lines.
+  class AppendLinesFunctor {
+   public:
+    explicit AppendLinesFunctor(
+        const vector<Module::Line> *lines) : lines_(lines) { }
+    void operator()(const char *program, uint64 length,
+                    Module *module, vector<Module::Line> *lines) {
+      lines->insert(lines->end(), lines_->begin(), lines_->end());
+    }
+   private:
+    const vector<Module::Line> *lines_;
+  };
+
+  CUFixtureBase()
+      : module_("module-name", "module-os", "module-arch", "module-id"),
+        file_context_("dwarf-filename", &module_, true),
+        language_(dwarf2reader::DW_LANG_none),
+        language_signed_(false),
+        appender_(&lines_),
+        reporter_("dwarf-filename", 0xcf8f9bb6443d29b5LL),
+        root_handler_(&file_context_, &line_reader_, &reporter_),
+        functions_filled_(false) {
+    // By default, expect no warnings to be reported, and expect the
+    // compilation unit's name to be provided. The test can override
+    // these expectations.
+    EXPECT_CALL(reporter_, SetCUName("compilation-unit-name")).Times(1);
+    EXPECT_CALL(reporter_, UnknownSpecification(_, _)).Times(0);
+    EXPECT_CALL(reporter_, UnknownAbstractOrigin(_, _)).Times(0);
+    EXPECT_CALL(reporter_, MissingSection(_)).Times(0);
+    EXPECT_CALL(reporter_, BadLineInfoOffset(_)).Times(0);
+    EXPECT_CALL(reporter_, UncoveredFunction(_)).Times(0);
+    EXPECT_CALL(reporter_, UncoveredLine(_)).Times(0);
+    EXPECT_CALL(reporter_, UnnamedFunction(_)).Times(0);
+    EXPECT_CALL(reporter_, UnhandledInterCUReference(_, _)).Times(0);
+
+    // By default, expect the line program reader not to be invoked. We
+    // may override this in StartCU.
+    EXPECT_CALL(line_reader_, StartCompilationUnit(_)).Times(0);
+    EXPECT_CALL(line_reader_, ReadProgram(_,_,_,_)).Times(0);
+
+    // The handler will consult this section map to decide what to
+    // pass to our line reader.
+    file_context_.AddSectionToSectionMap(".debug_line",
+                                         dummy_line_program_,
+                                         dummy_line_size_);
+  }
+
+  // Add a line with the given address, size, filename, and line
+  // number to the end of the statement list the handler will receive
+  // when it invokes its LineToModuleHandler. Call this before calling
+  // StartCU.
+  void PushLine(Module::Address address, Module::Address size,
+                const string &filename, int line_number);
+
+  // Use LANGUAGE for the compilation unit. More precisely, arrange
+  // for StartCU to pass the compilation unit's root DIE a
+  // DW_AT_language attribute whose value is LANGUAGE.
+  void SetLanguage(dwarf2reader::DwarfLanguage language) {
+    language_ = language;
+  }
+
+  // If SIGNED true, have StartCU report DW_AT_language as a signed
+  // attribute; if false, have it report it as unsigned.
+  void SetLanguageSigned(bool is_signed) { language_signed_ = is_signed; }
+
+  // Call the handler this.root_handler_'s StartCompilationUnit and
+  // StartRootDIE member functions, passing it appropriate attributes as
+  // determined by prior calls to PushLine and SetLanguage. Leave
+  // this.root_handler_ ready to hear about children: call
+  // this.root_handler_.EndAttributes, but not this.root_handler_.Finish.
+  void StartCU();
+
+  // Have HANDLER process some strange attribute/form/value triples.
+  void ProcessStrangeAttributes(dwarf2reader::DIEHandler *handler);
+
+  // Start a child DIE of PARENT with the given tag and name. Leave
+  // the handler ready to hear about children: call EndAttributes, but
+  // not Finish.
+  DIEHandler *StartNamedDIE(DIEHandler *parent, DwarfTag tag,
+                            const string &name);
+
+  // Start a child DIE of PARENT with the given tag and a
+  // DW_AT_specification attribute whose value is SPECIFICATION. Leave
+  // the handler ready to hear about children: call EndAttributes, but
+  // not Finish. If NAME is non-zero, use it as the DW_AT_name
+  // attribute.
+  DIEHandler *StartSpecifiedDIE(DIEHandler *parent, DwarfTag tag,
+                                uint64 specification, const char *name = NULL);
+
+  // Define a function as a child of PARENT with the given name, address, and
+  // size. If high_pc_form is DW_FORM_addr then the DW_AT_high_pc attribute
+  // will be written as an address; otherwise it will be written as the
+  // function's size. Call EndAttributes and Finish; one cannot define
+  // children of the defined function's DIE.
+  void DefineFunction(DIEHandler *parent, const string &name,
+                      Module::Address address, Module::Address size,
+                      const char* mangled_name,
+                      DwarfForm high_pc_form = dwarf2reader::DW_FORM_addr);
+
+  // Create a declaration DIE as a child of PARENT with the given
+  // offset, tag and name. If NAME is the empty string, don't provide
+  // a DW_AT_name attribute. Call EndAttributes and Finish.
+  void DeclarationDIE(DIEHandler *parent, uint64 offset,
+                      DwarfTag tag, const string &name,
+                      const string &mangled_name);
+
+  // Create a definition DIE as a child of PARENT with the given tag
+  // that refers to the declaration DIE at offset SPECIFICATION as its
+  // specification. If NAME is non-empty, pass it as the DW_AT_name
+  // attribute. If SIZE is non-zero, record ADDRESS and SIZE as
+  // low_pc/high_pc attributes.
+  void DefinitionDIE(DIEHandler *parent, DwarfTag tag,
+                     uint64 specification, const string &name,
+                     Module::Address address = 0, Module::Address size = 0);
+
+  // Create an inline DW_TAG_subprogram DIE as a child of PARENT.  If
+  // SPECIFICATION is non-zero, then the DIE refers to the declaration DIE at
+  // offset SPECIFICATION as its specification.  If Name is non-empty, pass it
+  // as the DW_AT_name attribute.
+  void AbstractInstanceDIE(DIEHandler *parent, uint64 offset,
+                           DwarfInline type, uint64 specification,
+                           const string &name,
+                           DwarfForm form = dwarf2reader::DW_FORM_data1);
+
+  // Create a DW_TAG_subprogram DIE as a child of PARENT that refers to
+  // ORIGIN in its DW_AT_abstract_origin attribute.  If NAME is the empty
+  // string, don't provide a DW_AT_name attribute.
+  void DefineInlineInstanceDIE(DIEHandler *parent, const string &name,
+                               uint64 origin, Module::Address address,
+                               Module::Address size);
+
+  // The following Test* functions should be called after calling
+  // this.root_handler_.Finish. After that point, no further calls
+  // should be made on the handler.
+
+  // Test that the number of functions defined in the module this.module_ is
+  // equal to EXPECTED.
+  void TestFunctionCount(size_t expected);
+
+  // Test that the I'th function (ordered by address) in the module
+  // this.module_ has the given name, address, and size, and that its
+  // parameter size is zero.
+  void TestFunction(int i, const string &name,
+                    Module::Address address, Module::Address size);
+
+  // Test that the number of source lines owned by the I'th function
+  // in the module this.module_ is equal to EXPECTED.
+  void TestLineCount(int i, size_t expected);
+
+  // Test that the J'th line (ordered by address) of the I'th function
+  // (again, by address) has the given address, size, filename, and
+  // line number.
+  void TestLine(int i, int j, Module::Address address, Module::Address size,
+                const string &filename, int number);
+
+  // Actual objects under test.
+  Module module_;
+  DwarfCUToModule::FileContext file_context_;
+
+  // If this is not DW_LANG_none, we'll pass it as a DW_AT_language
+  // attribute to the compilation unit. This defaults to DW_LANG_none.
+  dwarf2reader::DwarfLanguage language_;
+
+  // If this is true, report DW_AT_language as a signed value; if false,
+  // report it as an unsigned value.
+  bool language_signed_;
+
+  // If this is not empty, we'll give the CU a DW_AT_comp_dir attribute that
+  // indicates the path that this compilation unit was compiled in.
+  string compilation_dir_;
+
+  // If this is not empty, we'll give the CU a DW_AT_stmt_list
+  // attribute that, when passed to line_reader_, adds these lines to the
+  // provided lines array.
+  vector<Module::Line> lines_;
+
+  // Mock line program reader.
+  MockLineToModuleHandler line_reader_;
+  AppendLinesFunctor appender_;
+  static const char dummy_line_program_[];
+  static const size_t dummy_line_size_;
+
+  MockWarningReporter reporter_;
+  DwarfCUToModule root_handler_;
+
+ private:
+  // Fill functions_, if we haven't already.
+  void FillFunctions();
+
+  // If functions_filled_ is true, this is a table of functions we've
+  // extracted from module_, sorted by address.
+  vector<Module::Function *> functions_;
+  // True if we have filled the above vector with this.module_'s function list.
+  bool functions_filled_;
+};
+
+const char CUFixtureBase::dummy_line_program_[] = "lots of fun data";
+const size_t CUFixtureBase::dummy_line_size_ =
+    sizeof(CUFixtureBase::dummy_line_program_);
+
+void CUFixtureBase::PushLine(Module::Address address, Module::Address size,
+                             const string &filename, int line_number) {
+  Module::Line l;
+  l.address = address;
+  l.size = size;
+  l.file = module_.FindFile(filename);
+  l.number = line_number;
+  lines_.push_back(l);
+}
+
+void CUFixtureBase::StartCU() {
+  if (!compilation_dir_.empty())
+    EXPECT_CALL(line_reader_,
+                StartCompilationUnit(compilation_dir_)).Times(1);
+
+  // If we have lines, make the line reader expect to be invoked at
+  // most once. (Hey, if the handler can pass its tests without
+  // bothering to read the line number data, that's great.)
+  // Have it add the lines passed to PushLine. Otherwise, leave the
+  // initial expectation (no calls) in force.
+  if (!lines_.empty())
+    EXPECT_CALL(line_reader_,
+                ReadProgram(&dummy_line_program_[0], dummy_line_size_,
+                            &module_, _))
+        .Times(AtMost(1))
+        .WillOnce(DoAll(Invoke(appender_), Return()));
+
+  ASSERT_TRUE(root_handler_
+              .StartCompilationUnit(0x51182ec307610b51ULL, 0x81, 0x44,
+                                    0x4241b4f33720dd5cULL, 3));
+  {
+    ASSERT_TRUE(root_handler_.StartRootDIE(0x02e56bfbda9e7337ULL,
+                                           dwarf2reader::DW_TAG_compile_unit));
+  }
+  root_handler_.ProcessAttributeString(dwarf2reader::DW_AT_name,
+                                       dwarf2reader::DW_FORM_strp,
+                                       "compilation-unit-name");
+  if (!compilation_dir_.empty())
+    root_handler_.ProcessAttributeString(dwarf2reader::DW_AT_comp_dir,
+                                         dwarf2reader::DW_FORM_strp,
+                                         compilation_dir_);
+  if (!lines_.empty())
+    root_handler_.ProcessAttributeUnsigned(dwarf2reader::DW_AT_stmt_list,
+                                           dwarf2reader::DW_FORM_ref4,
+                                           0);
+  if (language_ != dwarf2reader::DW_LANG_none) {
+    if (language_signed_)
+      root_handler_.ProcessAttributeSigned(dwarf2reader::DW_AT_language,
+                                           dwarf2reader::DW_FORM_sdata,
+                                           language_);
+    else
+      root_handler_.ProcessAttributeUnsigned(dwarf2reader::DW_AT_language,
+                                             dwarf2reader::DW_FORM_udata,
+                                             language_);
+  }
+  ASSERT_TRUE(root_handler_.EndAttributes());
+}
+
+void CUFixtureBase::ProcessStrangeAttributes(
+    dwarf2reader::DIEHandler *handler) {
+  handler->ProcessAttributeUnsigned((DwarfAttribute) 0xf560dead,
+                                    (DwarfForm) 0x4106e4db,
+                                    0xa592571997facda1ULL);
+  handler->ProcessAttributeSigned((DwarfAttribute) 0x85380095,
+                                  (DwarfForm) 0x0f16fe87,
+                                  0x12602a4e3bf1f446LL);
+  handler->ProcessAttributeReference((DwarfAttribute) 0xf7f7480f,
+                                     (DwarfForm) 0x829e038a,
+                                     0x50fddef44734fdecULL);
+  static const char buffer[10] = "frobynode";
+  handler->ProcessAttributeBuffer((DwarfAttribute) 0xa55ffb51,
+                                  (DwarfForm) 0x2f43b041,
+                                  buffer, sizeof(buffer));
+  handler->ProcessAttributeString((DwarfAttribute) 0x2f43b041,
+                                  (DwarfForm) 0x895ffa23,
+                                  "strange string");
+}
+
+DIEHandler *CUFixtureBase::StartNamedDIE(DIEHandler *parent,
+                                         DwarfTag tag,
+                                         const string &name) {
+  dwarf2reader::DIEHandler *handler
+    = parent->FindChildHandler(0x8f4c783c0467c989ULL, tag);
+  if (!handler)
+    return NULL;
+  handler->ProcessAttributeString(dwarf2reader::DW_AT_name,
+                                  dwarf2reader::DW_FORM_strp,
+                                  name);
+  ProcessStrangeAttributes(handler);
+  if (!handler->EndAttributes()) {
+    handler->Finish();
+    delete handler;
+    return NULL;
+  }
+
+  return handler;
+}
+
+DIEHandler *CUFixtureBase::StartSpecifiedDIE(DIEHandler *parent,
+                                             DwarfTag tag,
+                                             uint64 specification,
+                                             const char *name) {
+  dwarf2reader::DIEHandler *handler
+    = parent->FindChildHandler(0x8f4c783c0467c989ULL, tag);
+  if (!handler)
+    return NULL;
+  if (name)
+    handler->ProcessAttributeString(dwarf2reader::DW_AT_name,
+                                    dwarf2reader::DW_FORM_strp,
+                                    name);
+  handler->ProcessAttributeReference(dwarf2reader::DW_AT_specification,
+                                     dwarf2reader::DW_FORM_ref4,
+                                     specification);
+  if (!handler->EndAttributes()) {
+    handler->Finish();
+    delete handler;
+    return NULL;
+  }
+
+  return handler;
+}
+
+void CUFixtureBase::DefineFunction(dwarf2reader::DIEHandler *parent,
+                                   const string &name, Module::Address address,
+                                   Module::Address size,
+                                   const char* mangled_name,
+                                   DwarfForm high_pc_form) {
+  dwarf2reader::DIEHandler *func
+      = parent->FindChildHandler(0xe34797c7e68590a8LL,
+                                 dwarf2reader::DW_TAG_subprogram);
+  ASSERT_TRUE(func != NULL);
+  func->ProcessAttributeString(dwarf2reader::DW_AT_name,
+                               dwarf2reader::DW_FORM_strp,
+                               name);
+  func->ProcessAttributeUnsigned(dwarf2reader::DW_AT_low_pc,
+                                 dwarf2reader::DW_FORM_addr,
+                                 address);
+
+  Module::Address high_pc = size;
+  if (high_pc_form == dwarf2reader::DW_FORM_addr) {
+    high_pc += address;
+  }
+  func->ProcessAttributeUnsigned(dwarf2reader::DW_AT_high_pc,
+                                 high_pc_form,
+                                 high_pc);
+
+  if (mangled_name)
+    func->ProcessAttributeString(dwarf2reader::DW_AT_MIPS_linkage_name,
+                                 dwarf2reader::DW_FORM_strp,
+                                 mangled_name);
+
+  ProcessStrangeAttributes(func);
+  EXPECT_TRUE(func->EndAttributes());
+  func->Finish();
+  delete func;
+}
+
+void CUFixtureBase::DeclarationDIE(DIEHandler *parent, uint64 offset,
+                                   DwarfTag tag,
+                                   const string &name,
+                                   const string &mangled_name) {
+  dwarf2reader::DIEHandler *die = parent->FindChildHandler(offset, tag);
+  ASSERT_TRUE(die != NULL);
+  if (!name.empty())
+    die->ProcessAttributeString(dwarf2reader::DW_AT_name,
+                                dwarf2reader::DW_FORM_strp,
+                                name);
+  if (!mangled_name.empty())
+    die->ProcessAttributeString(dwarf2reader::DW_AT_MIPS_linkage_name,
+                                dwarf2reader::DW_FORM_strp,
+                                mangled_name);
+
+  die->ProcessAttributeUnsigned(dwarf2reader::DW_AT_declaration,
+                                dwarf2reader::DW_FORM_flag,
+                                1);
+  EXPECT_TRUE(die->EndAttributes());
+  die->Finish();
+  delete die;
+}
+
+void CUFixtureBase::DefinitionDIE(DIEHandler *parent,
+                                  DwarfTag tag,
+                                  uint64 specification,
+                                  const string &name,
+                                  Module::Address address,
+                                  Module::Address size) {
+  dwarf2reader::DIEHandler *die
+    = parent->FindChildHandler(0x6ccfea031a9e6cc9ULL, tag);
+  ASSERT_TRUE(die != NULL);
+  die->ProcessAttributeReference(dwarf2reader::DW_AT_specification,
+                                 dwarf2reader::DW_FORM_ref4,
+                                 specification);
+  if (!name.empty())
+    die->ProcessAttributeString(dwarf2reader::DW_AT_name,
+                                dwarf2reader::DW_FORM_strp,
+                                name);
+  if (size) {
+    die->ProcessAttributeUnsigned(dwarf2reader::DW_AT_low_pc,
+                                  dwarf2reader::DW_FORM_addr,
+                                  address);
+    die->ProcessAttributeUnsigned(dwarf2reader::DW_AT_high_pc,
+                                  dwarf2reader::DW_FORM_addr,
+                                  address + size);
+  }
+  EXPECT_TRUE(die->EndAttributes());
+  die->Finish();
+  delete die;
+}
+
+void CUFixtureBase::AbstractInstanceDIE(DIEHandler *parent,
+                                        uint64 offset,
+                                        DwarfInline type,
+                                        uint64 specification,
+                                        const string &name,
+                                        DwarfForm form) {
+  dwarf2reader::DIEHandler *die
+    = parent->FindChildHandler(offset, dwarf2reader::DW_TAG_subprogram);
+  ASSERT_TRUE(die != NULL);
+  if (specification != 0ULL)
+    die->ProcessAttributeReference(dwarf2reader::DW_AT_specification,
+                                   dwarf2reader::DW_FORM_ref4,
+                                   specification);
+  if (form == dwarf2reader::DW_FORM_sdata) {
+    die->ProcessAttributeSigned(dwarf2reader::DW_AT_inline, form, type);
+  } else {
+    die->ProcessAttributeUnsigned(dwarf2reader::DW_AT_inline, form, type);
+  }
+  if (!name.empty())
+    die->ProcessAttributeString(dwarf2reader::DW_AT_name,
+                                dwarf2reader::DW_FORM_strp,
+                                name);
+
+  EXPECT_TRUE(die->EndAttributes());
+  die->Finish();
+  delete die;
+}
+
+void CUFixtureBase::DefineInlineInstanceDIE(DIEHandler *parent,
+                                            const string &name,
+                                            uint64 origin,
+                                            Module::Address address,
+                                            Module::Address size) {
+  dwarf2reader::DIEHandler *func
+      = parent->FindChildHandler(0x11c70f94c6e87ccdLL,
+                                 dwarf2reader::DW_TAG_subprogram);
+  ASSERT_TRUE(func != NULL);
+  if (!name.empty()) {
+    func->ProcessAttributeString(dwarf2reader::DW_AT_name,
+                                 dwarf2reader::DW_FORM_strp,
+                                 name);
+  }
+  func->ProcessAttributeUnsigned(dwarf2reader::DW_AT_low_pc,
+                                 dwarf2reader::DW_FORM_addr,
+                                 address);
+  func->ProcessAttributeUnsigned(dwarf2reader::DW_AT_high_pc,
+                                 dwarf2reader::DW_FORM_addr,
+                                 address + size);
+  func->ProcessAttributeReference(dwarf2reader::DW_AT_abstract_origin,
+                                 dwarf2reader::DW_FORM_ref4,
+                                 origin);
+  ProcessStrangeAttributes(func);
+  EXPECT_TRUE(func->EndAttributes());
+  func->Finish();
+  delete func;
+}
+
+void CUFixtureBase::FillFunctions() {
+  if (functions_filled_)
+    return;
+  module_.GetFunctions(&functions_, functions_.end());
+  sort(functions_.begin(), functions_.end(),
+       Module::Function::CompareByAddress);
+  functions_filled_ = true;
+}
+
+void CUFixtureBase::TestFunctionCount(size_t expected) {
+  FillFunctions();
+  ASSERT_EQ(expected, functions_.size());
+}
+
+void CUFixtureBase::TestFunction(int i, const string &name,
+                                 Module::Address address,
+                                 Module::Address size) {
+  FillFunctions();
+  ASSERT_LT((size_t) i, functions_.size());
+
+  Module::Function *function = functions_[i];
+  EXPECT_EQ(name,    function->name);
+  EXPECT_EQ(address, function->address);
+  EXPECT_EQ(size,    function->size);
+  EXPECT_EQ(0U,      function->parameter_size);
+}
+
+void CUFixtureBase::TestLineCount(int i, size_t expected) {
+  FillFunctions();
+  ASSERT_LT((size_t) i, functions_.size());
+
+  ASSERT_EQ(expected, functions_[i]->lines.size());
+}
+
+void CUFixtureBase::TestLine(int i, int j,
+                             Module::Address address, Module::Address size,
+                             const string &filename, int number) {
+  FillFunctions();
+  ASSERT_LT((size_t) i, functions_.size());
+  ASSERT_LT((size_t) j, functions_[i]->lines.size());
+
+  Module::Line *line = &functions_[i]->lines[j];
+  EXPECT_EQ(address,  line->address);
+  EXPECT_EQ(size,     line->size);
+  EXPECT_EQ(filename, line->file->name.c_str());
+  EXPECT_EQ(number,   line->number);
+}
+
+// Include caller locations for our test subroutines.
+#define TRACE(call) do { SCOPED_TRACE("called from here"); call; } while (0)
+#define PushLine(a,b,c,d)         TRACE(PushLine((a),(b),(c),(d)))
+#define SetLanguage(a)            TRACE(SetLanguage(a))
+#define StartCU()                 TRACE(StartCU())
+#define DefineFunction(a,b,c,d,e) TRACE(DefineFunction((a),(b),(c),(d),(e)))
+// (DefineFunction) instead of DefineFunction to avoid macro expansion.
+#define DefineFunction6(a,b,c,d,e,f) \
+    TRACE((DefineFunction)((a),(b),(c),(d),(e),(f)))
+#define DeclarationDIE(a,b,c,d,e) TRACE(DeclarationDIE((a),(b),(c),(d),(e)))
+#define DefinitionDIE(a,b,c,d,e,f) \
+    TRACE(DefinitionDIE((a),(b),(c),(d),(e),(f)))
+#define TestFunctionCount(a)      TRACE(TestFunctionCount(a))
+#define TestFunction(a,b,c,d)     TRACE(TestFunction((a),(b),(c),(d)))
+#define TestLineCount(a,b)        TRACE(TestLineCount((a),(b)))
+#define TestLine(a,b,c,d,e,f)     TRACE(TestLine((a),(b),(c),(d),(e),(f)))
+
+class SimpleCU: public CUFixtureBase, public Test {
+};
+
+TEST_F(SimpleCU, CompilationDir) {
+  compilation_dir_ = "/src/build/";
+
+  StartCU();
+  root_handler_.Finish();
+}
+
+TEST_F(SimpleCU, OneFunc) {
+  PushLine(0x938cf8c07def4d34ULL, 0x55592d727f6cd01fLL, "line-file", 246571772);
+
+  StartCU();
+  DefineFunction(&root_handler_, "function1",
+                 0x938cf8c07def4d34ULL, 0x55592d727f6cd01fLL, NULL);
+  root_handler_.Finish();
+
+  TestFunctionCount(1);
+  TestFunction(0, "function1", 0x938cf8c07def4d34ULL, 0x55592d727f6cd01fLL);
+  TestLineCount(0, 1);
+  TestLine(0, 0, 0x938cf8c07def4d34ULL, 0x55592d727f6cd01fLL, "line-file",
+           246571772);
+}
+
+// As above, only DW_AT_high_pc is a length rather than an address.
+TEST_F(SimpleCU, OneFuncHighPcIsLength) {
+  PushLine(0x938cf8c07def4d34ULL, 0x55592d727f6cd01fLL, "line-file", 246571772);
+
+  StartCU();
+  DefineFunction6(&root_handler_, "function1",
+                  0x938cf8c07def4d34ULL, 0x55592d727f6cd01fLL, NULL,
+                  dwarf2reader::DW_FORM_udata);
+  root_handler_.Finish();
+
+  TestFunctionCount(1);
+  TestFunction(0, "function1", 0x938cf8c07def4d34ULL, 0x55592d727f6cd01fLL);
+  TestLineCount(0, 1);
+  TestLine(0, 0, 0x938cf8c07def4d34ULL, 0x55592d727f6cd01fLL, "line-file",
+           246571772);
+}
+
+TEST_F(SimpleCU, MangledName) {
+  PushLine(0x938cf8c07def4d34ULL, 0x55592d727f6cd01fLL, "line-file", 246571772);
+
+  StartCU();
+  DefineFunction(&root_handler_, "function1",
+                 0x938cf8c07def4d34ULL, 0x55592d727f6cd01fLL, "_ZN1n1fEi");
+  root_handler_.Finish();
+
+  TestFunctionCount(1);
+  TestFunction(0, "n::f(int)", 0x938cf8c07def4d34ULL, 0x55592d727f6cd01fLL);
+}
+
+TEST_F(SimpleCU, IrrelevantRootChildren) {
+  StartCU();
+  EXPECT_FALSE(root_handler_
+               .FindChildHandler(0x7db32bff4e2dcfb1ULL,
+                                 dwarf2reader::DW_TAG_lexical_block));
+}
+
+TEST_F(SimpleCU, IrrelevantNamedScopeChildren) {
+  StartCU();
+  DIEHandler *class_A_handler
+    = StartNamedDIE(&root_handler_, dwarf2reader::DW_TAG_class_type, "class_A");
+  EXPECT_TRUE(class_A_handler != NULL);
+  EXPECT_FALSE(class_A_handler
+               ->FindChildHandler(0x02e55999b865e4e9ULL,
+                                  dwarf2reader::DW_TAG_lexical_block));
+  delete class_A_handler;
+}
+
+// Verify that FileContexts can safely be deleted unused.
+TEST_F(SimpleCU, UnusedFileContext) {
+  Module m("module-name", "module-os", "module-arch", "module-id");
+  DwarfCUToModule::FileContext fc("dwarf-filename", &m, true);
+
+  // Kludge: satisfy reporter_'s expectation.
+  reporter_.SetCUName("compilation-unit-name");
+}
+
+TEST_F(SimpleCU, InlineFunction) {
+  PushLine(0x1758a0f941b71efbULL, 0x1cf154f1f545e146ULL, "line-file", 75173118);
+
+  StartCU();
+  AbstractInstanceDIE(&root_handler_, 0x1e8dac5d507ed7abULL,
+                      dwarf2reader::DW_INL_inlined, 0, "inline-name");
+  DefineInlineInstanceDIE(&root_handler_, "", 0x1e8dac5d507ed7abULL,
+                       0x1758a0f941b71efbULL, 0x1cf154f1f545e146ULL);
+  root_handler_.Finish();
+
+  TestFunctionCount(1);
+  TestFunction(0, "inline-name",
+               0x1758a0f941b71efbULL, 0x1cf154f1f545e146ULL);
+}
+
+TEST_F(SimpleCU, InlineFunctionSignedAttribute) {
+  PushLine(0x1758a0f941b71efbULL, 0x1cf154f1f545e146ULL, "line-file", 75173118);
+
+  StartCU();
+  AbstractInstanceDIE(&root_handler_, 0x1e8dac5d507ed7abULL,
+                      dwarf2reader::DW_INL_inlined, 0, "inline-name",
+                      dwarf2reader::DW_FORM_sdata);
+  DefineInlineInstanceDIE(&root_handler_, "", 0x1e8dac5d507ed7abULL,
+                       0x1758a0f941b71efbULL, 0x1cf154f1f545e146ULL);
+  root_handler_.Finish();
+
+  TestFunctionCount(1);
+  TestFunction(0, "inline-name",
+               0x1758a0f941b71efbULL, 0x1cf154f1f545e146ULL);
+}
+
+// Any DIE with an DW_AT_inline attribute can be cited by
+// DW_AT_abstract_origin attributes --- even if the value of the
+// DW_AT_inline attribute is DW_INL_not_inlined.
+TEST_F(SimpleCU, AbstractOriginNotInlined) {
+  PushLine(0x2805c4531be6ca0eULL, 0x686b52155a8d4d2cULL, "line-file", 6111581);
+
+  StartCU();
+  AbstractInstanceDIE(&root_handler_, 0x93e9cdad52826b39ULL,
+                      dwarf2reader::DW_INL_not_inlined, 0, "abstract-instance");
+  DefineInlineInstanceDIE(&root_handler_, "", 0x93e9cdad52826b39ULL,
+                          0x2805c4531be6ca0eULL, 0x686b52155a8d4d2cULL);
+  root_handler_.Finish();
+
+  TestFunctionCount(1);
+  TestFunction(0, "abstract-instance",
+               0x2805c4531be6ca0eULL, 0x686b52155a8d4d2cULL);
+}
+
+TEST_F(SimpleCU, UnknownAbstractOrigin) {
+  EXPECT_CALL(reporter_, UnknownAbstractOrigin(_, 1ULL)).WillOnce(Return());
+  EXPECT_CALL(reporter_, UnnamedFunction(0x11c70f94c6e87ccdLL))
+    .WillOnce(Return());
+  PushLine(0x1758a0f941b71efbULL, 0x1cf154f1f545e146ULL, "line-file", 75173118);
+
+  StartCU();
+  AbstractInstanceDIE(&root_handler_, 0x1e8dac5d507ed7abULL,
+                      dwarf2reader::DW_INL_inlined, 0, "inline-name");
+  DefineInlineInstanceDIE(&root_handler_, "", 1ULL,
+                       0x1758a0f941b71efbULL, 0x1cf154f1f545e146ULL);
+  root_handler_.Finish();
+
+  TestFunctionCount(1);
+  TestFunction(0, "<name omitted>",
+               0x1758a0f941b71efbULL, 0x1cf154f1f545e146ULL);
+}
+
+TEST_F(SimpleCU, UnnamedFunction) {
+  EXPECT_CALL(reporter_, UnnamedFunction(0xe34797c7e68590a8LL))
+    .WillOnce(Return());
+  PushLine(0x72b80e41a0ac1d40ULL, 0x537174f231ee181cULL, "line-file", 14044850);
+
+  StartCU();
+  DefineFunction(&root_handler_, "",
+                 0x72b80e41a0ac1d40ULL, 0x537174f231ee181cULL, NULL);
+  root_handler_.Finish();
+
+  TestFunctionCount(1);
+  TestFunction(0, "<name omitted>",
+               0x72b80e41a0ac1d40ULL, 0x537174f231ee181cULL);
+}
+
+// An address range.
+struct Range {
+  Module::Address start, end;
+};
+
+// Test data for pairing functions and lines.
+struct Situation {
+  // Two function intervals, and two line intervals.
+  Range functions[2], lines[2];
+
+  // The number of lines we expect to be assigned to each of the
+  // functions, and the address ranges.
+  int paired_count[2];
+  Range paired[2][2];
+
+  // The number of functions that are not entirely covered by lines,
+  // and vice versa.
+  int uncovered_functions, uncovered_lines;
+};
+
+#define PAIRING(func1_start, func1_end, func2_start, func2_end, \
+                line1_start, line1_end, line2_start, line2_end, \
+                func1_num_lines, func2_num_lines,               \
+                func1_line1_start, func1_line1_end,             \
+                func1_line2_start, func1_line2_end,             \
+                func2_line1_start, func2_line1_end,             \
+                func2_line2_start, func2_line2_end,             \
+                uncovered_functions, uncovered_lines)           \
+  { { { func1_start, func1_end }, { func2_start, func2_end } }, \
+    { { line1_start, line1_end }, { line2_start, line2_end } }, \
+    { func1_num_lines, func2_num_lines },                       \
+    { { { func1_line1_start, func1_line1_end },                 \
+        { func1_line2_start, func1_line2_end } },               \
+      { { func2_line1_start, func2_line1_end },                 \
+          { func2_line2_start, func2_line2_end } } },           \
+    uncovered_functions, uncovered_lines },
+
+Situation situations[] = {
+#include "common/testdata/func-line-pairing.h"
+};
+
+#undef PAIRING
+
+class FuncLinePairing: public CUFixtureBase,
+                       public TestWithParam<Situation> { };
+
+INSTANTIATE_TEST_CASE_P(AllSituations, FuncLinePairing,
+                        ValuesIn(situations));
+
+TEST_P(FuncLinePairing, Pairing) {
+  const Situation &s = GetParam();
+  PushLine(s.lines[0].start,
+           s.lines[0].end - s.lines[0].start,
+           "line-file", 67636963);
+  PushLine(s.lines[1].start,
+           s.lines[1].end - s.lines[1].start,
+           "line-file", 67636963);
+  if (s.uncovered_functions)
+    EXPECT_CALL(reporter_, UncoveredFunction(_))
+      .Times(s.uncovered_functions)
+      .WillRepeatedly(Return());
+  if (s.uncovered_lines)
+    EXPECT_CALL(reporter_, UncoveredLine(_))
+      .Times(s.uncovered_lines)
+      .WillRepeatedly(Return());
+
+  StartCU();
+  DefineFunction(&root_handler_, "function1",
+                 s.functions[0].start,
+                 s.functions[0].end - s.functions[0].start, NULL);
+  DefineFunction(&root_handler_, "function2",
+                 s.functions[1].start,
+                 s.functions[1].end - s.functions[1].start, NULL);
+  root_handler_.Finish();
+
+  TestFunctionCount(2);
+  TestFunction(0, "function1",
+               s.functions[0].start,
+               s.functions[0].end - s.functions[0].start);
+  TestLineCount(0, s.paired_count[0]);
+  for (int i = 0; i < s.paired_count[0]; i++)
+    TestLine(0, i, s.paired[0][i].start,
+             s.paired[0][i].end - s.paired[0][i].start,
+             "line-file", 67636963);
+  TestFunction(1, "function2",
+               s.functions[1].start,
+               s.functions[1].end - s.functions[1].start);
+  TestLineCount(1, s.paired_count[1]);
+  for (int i = 0; i < s.paired_count[1]; i++)
+    TestLine(1, i, s.paired[1][i].start,
+             s.paired[1][i].end - s.paired[1][i].start,
+             "line-file", 67636963);
+}
+
+TEST_F(FuncLinePairing, EmptyCU) {
+  StartCU();
+  root_handler_.Finish();
+
+  TestFunctionCount(0);
+}
+
+TEST_F(FuncLinePairing, LinesNoFuncs) {
+  PushLine(40, 2, "line-file", 82485646);
+  EXPECT_CALL(reporter_, UncoveredLine(_)).WillOnce(Return());
+
+  StartCU();
+  root_handler_.Finish();
+
+  TestFunctionCount(0);
+}
+
+TEST_F(FuncLinePairing, FuncsNoLines) {
+  EXPECT_CALL(reporter_, UncoveredFunction(_)).WillOnce(Return());
+
+  StartCU();
+  DefineFunction(&root_handler_, "function1", 0x127da12ffcf5c51fULL, 0x1000U,
+                 NULL);
+  root_handler_.Finish();
+
+  TestFunctionCount(1);
+  TestFunction(0, "function1", 0x127da12ffcf5c51fULL, 0x1000U);
+}
+
+TEST_F(FuncLinePairing, GapThenFunction) {
+  PushLine(20, 2, "line-file-2", 174314698);
+  PushLine(10, 2, "line-file-1", 263008005);
+
+  StartCU();
+  DefineFunction(&root_handler_, "function1", 10, 2, NULL);
+  DefineFunction(&root_handler_, "function2", 20, 2, NULL);
+  root_handler_.Finish();
+
+  TestFunctionCount(2);
+  TestFunction(0, "function1", 10, 2);
+  TestLineCount(0, 1);
+  TestLine(0, 0, 10, 2, "line-file-1", 263008005);
+  TestFunction(1, "function2", 20, 2);
+  TestLineCount(1, 1);
+  TestLine(1, 0, 20, 2, "line-file-2", 174314698);
+}
+
+// If GCC emits padding after one function to align the start of
+// the next, then it will attribute the padding instructions to
+// the last source line of function (to reduce the size of the
+// line number info), but omit it from the DW_AT_{low,high}_pc
+// range given in .debug_info (since it costs nothing to be
+// precise there).  If we did use at least some of the line
+// we're about to skip, then assume this is what happened, and
+// don't warn.
+TEST_F(FuncLinePairing, GCCAlignmentStretch) {
+  PushLine(10, 10, "line-file", 63351048);
+  PushLine(20, 10, "line-file", 61661044);
+
+  StartCU();
+  DefineFunction(&root_handler_, "function1", 10, 5, NULL);
+  // five-byte gap between functions, covered by line 63351048.
+  // This should not elicit a warning.
+  DefineFunction(&root_handler_, "function2", 20, 10, NULL);
+  root_handler_.Finish();
+
+  TestFunctionCount(2);
+  TestFunction(0, "function1", 10, 5);
+  TestLineCount(0, 1);
+  TestLine(0, 0, 10, 5, "line-file", 63351048);
+  TestFunction(1, "function2", 20, 10);
+  TestLineCount(1, 1);
+  TestLine(1, 0, 20, 10, "line-file", 61661044);
+}
+
+// Unfortunately, neither the DWARF parser's handler interface nor the
+// DIEHandler interface is capable of expressing a function that abuts
+// the end of the address space: the high_pc value looks like zero.
+
+TEST_F(FuncLinePairing, LineAtEndOfAddressSpace) {
+  PushLine(0xfffffffffffffff0ULL, 16, "line-file", 63351048);
+  EXPECT_CALL(reporter_, UncoveredLine(_)).WillOnce(Return());
+
+  StartCU();
+  DefineFunction(&root_handler_, "function1", 0xfffffffffffffff0ULL, 6, NULL);
+  DefineFunction(&root_handler_, "function2", 0xfffffffffffffffaULL, 5, NULL);
+  root_handler_.Finish();
+
+  TestFunctionCount(2);
+  TestFunction(0, "function1", 0xfffffffffffffff0ULL, 6);
+  TestLineCount(0, 1);
+  TestLine(0, 0, 0xfffffffffffffff0ULL, 6, "line-file", 63351048);
+  TestFunction(1, "function2", 0xfffffffffffffffaULL, 5);
+  TestLineCount(1, 1);
+  TestLine(1, 0, 0xfffffffffffffffaULL, 5, "line-file", 63351048);
+}
+
+// A function with more than one uncovered area should only be warned
+// about once.
+TEST_F(FuncLinePairing, WarnOnceFunc) {
+  PushLine(20, 1, "line-file-2", 262951329);
+  PushLine(11, 1, "line-file-1", 219964021);
+  EXPECT_CALL(reporter_, UncoveredFunction(_)).WillOnce(Return());
+
+  StartCU();
+  DefineFunction(&root_handler_, "function", 10, 11, NULL);
+  root_handler_.Finish();
+
+  TestFunctionCount(1);
+  TestFunction(0, "function", 10, 11);
+  TestLineCount(0, 2);
+  TestLine(0, 0, 11, 1, "line-file-1", 219964021);
+  TestLine(0, 1, 20, 1, "line-file-2", 262951329);
+}
+
+// A line with more than one uncovered area should only be warned
+// about once.
+TEST_F(FuncLinePairing, WarnOnceLine) {
+  PushLine(10, 20, "filename1", 118581871);
+  EXPECT_CALL(reporter_, UncoveredLine(_)).WillOnce(Return());
+
+  StartCU();
+  DefineFunction(&root_handler_, "function1", 11, 1, NULL);
+  DefineFunction(&root_handler_, "function2", 13, 1, NULL);
+  root_handler_.Finish();
+
+  TestFunctionCount(2);
+  TestFunction(0, "function1", 11, 1);
+  TestLineCount(0, 1);
+  TestLine(0, 0, 11, 1, "filename1", 118581871);
+  TestFunction(1, "function2", 13, 1);
+  TestLineCount(1, 1);
+  TestLine(1, 0, 13, 1, "filename1", 118581871);
+}
+
+class CXXQualifiedNames: public CUFixtureBase,
+                         public TestWithParam<DwarfTag> { };
+
+INSTANTIATE_TEST_CASE_P(VersusEnclosures, CXXQualifiedNames,
+                        Values(dwarf2reader::DW_TAG_class_type,
+                               dwarf2reader::DW_TAG_structure_type,
+                               dwarf2reader::DW_TAG_union_type,
+                               dwarf2reader::DW_TAG_namespace));
+
+TEST_P(CXXQualifiedNames, TwoFunctions) {
+  DwarfTag tag = GetParam();
+
+  SetLanguage(dwarf2reader::DW_LANG_C_plus_plus);
+  PushLine(10, 1, "filename1", 69819327);
+  PushLine(20, 1, "filename2", 95115701);
+
+  StartCU();
+  DIEHandler *enclosure_handler = StartNamedDIE(&root_handler_, tag,
+                                                "Enclosure");
+  EXPECT_TRUE(enclosure_handler != NULL);
+  DefineFunction(enclosure_handler, "func_B", 10, 1, NULL);
+  DefineFunction(enclosure_handler, "func_C", 20, 1, NULL);
+  enclosure_handler->Finish();
+  delete enclosure_handler;
+  root_handler_.Finish();
+
+  TestFunctionCount(2);
+  TestFunction(0, "Enclosure::func_B", 10, 1);
+  TestFunction(1, "Enclosure::func_C", 20, 1);
+}
+
+TEST_P(CXXQualifiedNames, FuncInEnclosureInNamespace) {
+  DwarfTag tag = GetParam();
+
+  SetLanguage(dwarf2reader::DW_LANG_C_plus_plus);
+  PushLine(10, 1, "line-file", 69819327);
+
+  StartCU();
+  DIEHandler *namespace_handler
+      = StartNamedDIE(&root_handler_, dwarf2reader::DW_TAG_namespace,
+                      "Namespace");
+  EXPECT_TRUE(namespace_handler != NULL);
+  DIEHandler *enclosure_handler = StartNamedDIE(namespace_handler, tag,
+                                                "Enclosure");
+  EXPECT_TRUE(enclosure_handler != NULL);
+  DefineFunction(enclosure_handler, "function", 10, 1, NULL);
+  enclosure_handler->Finish();
+  delete enclosure_handler;
+  namespace_handler->Finish();
+  delete namespace_handler;
+  root_handler_.Finish();
+
+  TestFunctionCount(1);
+  TestFunction(0, "Namespace::Enclosure::function", 10, 1);
+}
+
+TEST_F(CXXQualifiedNames, FunctionInClassInStructInNamespace) {
+  SetLanguage(dwarf2reader::DW_LANG_C_plus_plus);
+  PushLine(10, 1, "filename1", 69819327);
+
+  StartCU();
+  DIEHandler *namespace_handler
+      = StartNamedDIE(&root_handler_, dwarf2reader::DW_TAG_namespace,
+                      "namespace_A");
+  EXPECT_TRUE(namespace_handler != NULL);
+  DIEHandler *struct_handler
+      = StartNamedDIE(namespace_handler, dwarf2reader::DW_TAG_structure_type,
+                      "struct_B");
+  EXPECT_TRUE(struct_handler != NULL);
+  DIEHandler *class_handler
+      = StartNamedDIE(struct_handler, dwarf2reader::DW_TAG_class_type,
+                      "class_C");
+  DefineFunction(class_handler, "function_D", 10, 1, NULL);
+  class_handler->Finish();
+  delete class_handler;
+  struct_handler->Finish();
+  delete struct_handler;
+  namespace_handler->Finish();
+  delete namespace_handler;
+  root_handler_.Finish();
+
+  TestFunctionCount(1);
+  TestFunction(0, "namespace_A::struct_B::class_C::function_D", 10, 1);
+}
+
+struct LanguageAndQualifiedName {
+  dwarf2reader::DwarfLanguage language;
+  const char *name;
+};
+
+const LanguageAndQualifiedName LanguageAndQualifiedNameCases[] = {
+  { dwarf2reader::DW_LANG_none,           "class_A::function_B" },
+  { dwarf2reader::DW_LANG_C,              "class_A::function_B" },
+  { dwarf2reader::DW_LANG_C89,            "class_A::function_B" },
+  { dwarf2reader::DW_LANG_C99,            "class_A::function_B" },
+  { dwarf2reader::DW_LANG_C_plus_plus,    "class_A::function_B" },
+  { dwarf2reader::DW_LANG_Java,           "class_A.function_B" },
+  { dwarf2reader::DW_LANG_Cobol74,        "class_A::function_B" },
+  { dwarf2reader::DW_LANG_Mips_Assembler, NULL }
+};
+
+class QualifiedForLanguage
+    : public CUFixtureBase,
+      public TestWithParam<LanguageAndQualifiedName> { };
+
+INSTANTIATE_TEST_CASE_P(LanguageAndQualifiedName, QualifiedForLanguage,
+                        ValuesIn(LanguageAndQualifiedNameCases));
+
+TEST_P(QualifiedForLanguage, MemberFunction) {
+  const LanguageAndQualifiedName &param = GetParam();
+
+  PushLine(10, 1, "line-file", 212966758);
+  SetLanguage(param.language);
+
+  StartCU();
+  DIEHandler *class_handler
+      = StartNamedDIE(&root_handler_, dwarf2reader::DW_TAG_class_type,
+                      "class_A");
+  DefineFunction(class_handler, "function_B", 10, 1, NULL);
+  class_handler->Finish();
+  delete class_handler;
+  root_handler_.Finish();
+
+  if (param.name) {
+    TestFunctionCount(1);
+    TestFunction(0, param.name, 10, 1);
+  } else {
+    TestFunctionCount(0);
+  }
+}
+
+TEST_P(QualifiedForLanguage, MemberFunctionSignedLanguage) {
+  const LanguageAndQualifiedName &param = GetParam();
+
+  PushLine(10, 1, "line-file", 212966758);
+  SetLanguage(param.language);
+  SetLanguageSigned(true);
+
+  StartCU();
+  DIEHandler *class_handler
+      = StartNamedDIE(&root_handler_, dwarf2reader::DW_TAG_class_type,
+                      "class_A");
+  DefineFunction(class_handler, "function_B", 10, 1, NULL);
+  class_handler->Finish();
+  delete class_handler;
+  root_handler_.Finish();
+
+  if (param.name) {
+    TestFunctionCount(1);
+    TestFunction(0, param.name, 10, 1);
+  } else {
+    TestFunctionCount(0);
+  }
+}
+
+class Specifications: public CUFixtureBase, public Test { };
+
+TEST_F(Specifications, Function) {
+  PushLine(0x93cd3dfc1aa10097ULL, 0x0397d47a0b4ca0d4ULL, "line-file", 54883661);
+
+  StartCU();
+  DeclarationDIE(&root_handler_, 0xcd3c51b946fb1eeeLL,
+                 dwarf2reader::DW_TAG_subprogram, "declaration-name", "");
+  DefinitionDIE(&root_handler_, dwarf2reader::DW_TAG_subprogram,
+                0xcd3c51b946fb1eeeLL, "",
+                0x93cd3dfc1aa10097ULL, 0x0397d47a0b4ca0d4ULL);
+  root_handler_.Finish();
+
+  TestFunctionCount(1);
+  TestFunction(0, "declaration-name",
+               0x93cd3dfc1aa10097ULL, 0x0397d47a0b4ca0d4ULL);
+}
+
+TEST_F(Specifications, MangledName) {
+  PushLine(0x93cd3dfc1aa10097ULL, 0x0397d47a0b4ca0d4ULL, "line-file", 54883661);
+
+  StartCU();
+  DeclarationDIE(&root_handler_, 0xcd3c51b946fb1eeeLL,
+                 dwarf2reader::DW_TAG_subprogram, "declaration-name",
+                 "_ZN1C1fEi");
+  DefinitionDIE(&root_handler_, dwarf2reader::DW_TAG_subprogram,
+                0xcd3c51b946fb1eeeLL, "",
+                0x93cd3dfc1aa10097ULL, 0x0397d47a0b4ca0d4ULL);
+  root_handler_.Finish();
+
+  TestFunctionCount(1);
+  TestFunction(0, "C::f(int)",
+               0x93cd3dfc1aa10097ULL, 0x0397d47a0b4ca0d4ULL);
+}
+
+TEST_F(Specifications, MemberFunction) {
+  PushLine(0x3341a248634e7170ULL, 0x5f6938ee5553b953ULL, "line-file", 18116691);
+
+  StartCU();
+  DIEHandler *class_handler
+    = StartNamedDIE(&root_handler_, dwarf2reader::DW_TAG_class_type, "class_A");
+  DeclarationDIE(class_handler, 0x7d83028c431406e8ULL,
+                 dwarf2reader::DW_TAG_subprogram, "declaration-name", "");
+  class_handler->Finish();
+  delete class_handler;
+  DefinitionDIE(&root_handler_, dwarf2reader::DW_TAG_subprogram,
+                0x7d83028c431406e8ULL, "",
+                0x3341a248634e7170ULL, 0x5f6938ee5553b953ULL);
+  root_handler_.Finish();
+
+  TestFunctionCount(1);
+  TestFunction(0, "class_A::declaration-name",
+               0x3341a248634e7170ULL, 0x5f6938ee5553b953ULL);
+}
+
+// This case should gather the name from both the definition and the
+// declaration's parent.
+TEST_F(Specifications, FunctionDeclarationParent) {
+  PushLine(0x463c9ddf405be227ULL, 0x6a47774af5049680ULL, "line-file", 70254922);
+
+  StartCU();
+  {
+    DIEHandler *class_handler
+      = StartNamedDIE(&root_handler_, dwarf2reader::DW_TAG_class_type,
+                      "class_A");
+    ASSERT_TRUE(class_handler != NULL);
+    DeclarationDIE(class_handler, 0x0e0e877c8404544aULL,
+                   dwarf2reader::DW_TAG_subprogram, "declaration-name", "");
+    class_handler->Finish();
+    delete class_handler;
+  }
+
+  DefinitionDIE(&root_handler_, dwarf2reader::DW_TAG_subprogram,
+                0x0e0e877c8404544aULL, "definition-name",
+                0x463c9ddf405be227ULL, 0x6a47774af5049680ULL);
+
+  root_handler_.Finish();
+
+  TestFunctionCount(1);
+  TestFunction(0, "class_A::definition-name",
+               0x463c9ddf405be227ULL, 0x6a47774af5049680ULL);
+}
+
+// Named scopes should also gather enclosing name components from
+// their declarations.
+TEST_F(Specifications, NamedScopeDeclarationParent) {
+  PushLine(0x5d13433d0df13d00ULL, 0x48ebebe5ade2cab4ULL, "line-file", 77392604);
+
+  StartCU();
+  {
+    DIEHandler *space_handler
+      = StartNamedDIE(&root_handler_, dwarf2reader::DW_TAG_namespace,
+                      "space_A");
+    ASSERT_TRUE(space_handler != NULL);
+    DeclarationDIE(space_handler, 0x419bb1d12f9a73a2ULL,
+                   dwarf2reader::DW_TAG_class_type, "class-declaration-name",
+                   "");
+    space_handler->Finish();
+    delete space_handler;
+  }
+
+  {
+    DIEHandler *class_handler
+      = StartSpecifiedDIE(&root_handler_, dwarf2reader::DW_TAG_class_type,
+                          0x419bb1d12f9a73a2ULL, "class-definition-name");
+    ASSERT_TRUE(class_handler != NULL);
+    DefineFunction(class_handler, "function",
+                   0x5d13433d0df13d00ULL, 0x48ebebe5ade2cab4ULL, NULL);
+    class_handler->Finish();
+    delete class_handler;
+  }
+
+  root_handler_.Finish();
+
+  TestFunctionCount(1);
+  TestFunction(0, "space_A::class-definition-name::function",
+               0x5d13433d0df13d00ULL, 0x48ebebe5ade2cab4ULL);
+}
+
+// This test recreates bug 364.
+TEST_F(Specifications, InlineFunction) {
+  PushLine(0x1758a0f941b71efbULL, 0x1cf154f1f545e146ULL, "line-file", 75173118);
+
+  StartCU();
+  DeclarationDIE(&root_handler_, 0xcd3c51b946fb1eeeLL,
+                 dwarf2reader::DW_TAG_subprogram, "inline-name", "");
+  AbstractInstanceDIE(&root_handler_, 0x1e8dac5d507ed7abULL,
+                      dwarf2reader::DW_INL_inlined, 0xcd3c51b946fb1eeeLL, "");
+  DefineInlineInstanceDIE(&root_handler_, "", 0x1e8dac5d507ed7abULL,
+                       0x1758a0f941b71efbULL, 0x1cf154f1f545e146ULL);
+  root_handler_.Finish();
+
+  TestFunctionCount(1);
+  TestFunction(0, "inline-name",
+               0x1758a0f941b71efbULL, 0x1cf154f1f545e146ULL);
+}
+
+// Check name construction for a long chain containing each combination of:
+// - struct, union, class, namespace
+// - direct and definition
+TEST_F(Specifications, LongChain) {
+  PushLine(0x5a0dd6bb85db754cULL, 0x3bccb213d08c7fd3ULL, "line-file", 21192926);
+  SetLanguage(dwarf2reader::DW_LANG_C_plus_plus);
+
+  StartCU();
+  // The structure we're building here is:
+  // space_A full definition
+  //   space_B declaration
+  // space_B definition
+  //   struct_C full definition
+  //     struct_D declaration
+  // struct_D definition
+  //   union_E full definition
+  //     union_F declaration
+  // union_F definition
+  //   class_G full definition
+  //     class_H declaration
+  // class_H definition
+  //   func_I declaration
+  // func_I definition
+  //
+  // So:
+  // - space_A, struct_C, union_E, and class_G don't use specifications;
+  // - space_B, struct_D, union_F, and class_H do.
+  // - func_I uses a specification.
+  //
+  // The full name for func_I is thus:
+  //
+  // space_A::space_B::struct_C::struct_D::union_E::union_F::
+  //   class_G::class_H::func_I
+  {
+    DIEHandler *space_A_handler
+      = StartNamedDIE(&root_handler_, dwarf2reader::DW_TAG_namespace,
+                      "space_A");
+    DeclarationDIE(space_A_handler, 0x2e111126496596e2ULL,
+                   dwarf2reader::DW_TAG_namespace, "space_B", "");
+    space_A_handler->Finish();
+    delete space_A_handler;
+  }
+
+  {
+    DIEHandler *space_B_handler
+      = StartSpecifiedDIE(&root_handler_, dwarf2reader::DW_TAG_namespace,
+                          0x2e111126496596e2ULL);
+    DIEHandler *struct_C_handler
+      = StartNamedDIE(space_B_handler, dwarf2reader::DW_TAG_structure_type,
+                      "struct_C");
+    DeclarationDIE(struct_C_handler, 0x20cd423bf2a25a4cULL,
+                   dwarf2reader::DW_TAG_structure_type, "struct_D", "");
+    struct_C_handler->Finish();
+    delete struct_C_handler;
+    space_B_handler->Finish();
+    delete space_B_handler;
+  }
+
+  {
+    DIEHandler *struct_D_handler
+      = StartSpecifiedDIE(&root_handler_, dwarf2reader::DW_TAG_structure_type,
+                          0x20cd423bf2a25a4cULL);
+    DIEHandler *union_E_handler
+      = StartNamedDIE(struct_D_handler, dwarf2reader::DW_TAG_union_type,
+                      "union_E");
+    DeclarationDIE(union_E_handler, 0xe25c84805aa58c32ULL,
+                   dwarf2reader::DW_TAG_union_type, "union_F", "");
+    union_E_handler->Finish();
+    delete union_E_handler;
+    struct_D_handler->Finish();
+    delete struct_D_handler;
+  }
+
+  {
+    DIEHandler *union_F_handler
+      = StartSpecifiedDIE(&root_handler_, dwarf2reader::DW_TAG_union_type,
+                          0xe25c84805aa58c32ULL);
+    DIEHandler *class_G_handler
+      = StartNamedDIE(union_F_handler, dwarf2reader::DW_TAG_class_type,
+                      "class_G");
+    DeclarationDIE(class_G_handler, 0xb70d960dcc173b6eULL,
+                   dwarf2reader::DW_TAG_class_type, "class_H", "");
+    class_G_handler->Finish();
+    delete class_G_handler;
+    union_F_handler->Finish();
+    delete union_F_handler;
+  }
+
+  {
+    DIEHandler *class_H_handler
+      = StartSpecifiedDIE(&root_handler_, dwarf2reader::DW_TAG_class_type,
+                          0xb70d960dcc173b6eULL);
+    DeclarationDIE(class_H_handler, 0x27ff829e3bf69f37ULL,
+                   dwarf2reader::DW_TAG_subprogram, "func_I", "");
+    class_H_handler->Finish();
+    delete class_H_handler;
+  }
+
+  DefinitionDIE(&root_handler_, dwarf2reader::DW_TAG_subprogram,
+                0x27ff829e3bf69f37ULL, "",
+                0x5a0dd6bb85db754cULL, 0x3bccb213d08c7fd3ULL);
+  root_handler_.Finish();
+
+  TestFunctionCount(1);
+  TestFunction(0, "space_A::space_B::struct_C::struct_D::union_E::union_F"
+               "::class_G::class_H::func_I",
+               0x5a0dd6bb85db754cULL, 0x3bccb213d08c7fd3ULL);
+}
+
+TEST_F(Specifications, InterCU) {
+  Module m("module-name", "module-os", "module-arch", "module-id");
+  DwarfCUToModule::FileContext fc("dwarf-filename", &m, true);
+  EXPECT_CALL(reporter_, UncoveredFunction(_)).WillOnce(Return());
+  MockLineToModuleHandler lr;
+  EXPECT_CALL(lr, ReadProgram(_,_,_,_)).Times(0);
+
+  // Kludge: satisfy reporter_'s expectation.
+  reporter_.SetCUName("compilation-unit-name");
+
+  // First CU.  Declares class_A.
+  {
+    DwarfCUToModule root1_handler(&fc, &lr, &reporter_);
+    ASSERT_TRUE(root1_handler.StartCompilationUnit(0, 1, 2, 3, 3));
+    ASSERT_TRUE(root1_handler.StartRootDIE(1,
+                                           dwarf2reader::DW_TAG_compile_unit));
+    ProcessStrangeAttributes(&root1_handler);
+    ASSERT_TRUE(root1_handler.EndAttributes());
+    DeclarationDIE(&root1_handler, 0xb8fbfdd5f0b26fceULL,
+                   dwarf2reader::DW_TAG_class_type, "class_A", "");
+    root1_handler.Finish();
+  }
+
+  // Second CU.  Defines class_A, declares member_func_B.
+  {
+    DwarfCUToModule root2_handler(&fc, &lr, &reporter_);
+    ASSERT_TRUE(root2_handler.StartCompilationUnit(0, 1, 2, 3, 3));
+    ASSERT_TRUE(root2_handler.StartRootDIE(1,
+                                           dwarf2reader::DW_TAG_compile_unit));
+    ASSERT_TRUE(root2_handler.EndAttributes());
+    DIEHandler *class_A_handler
+      = StartSpecifiedDIE(&root2_handler, dwarf2reader::DW_TAG_class_type,
+                          0xb8fbfdd5f0b26fceULL);
+    DeclarationDIE(class_A_handler, 0xb01fef8b380bd1a2ULL,
+                   dwarf2reader::DW_TAG_subprogram, "member_func_B", "");
+    class_A_handler->Finish();
+    delete class_A_handler;
+    root2_handler.Finish();
+  }
+
+  // Third CU.  Defines member_func_B.
+  {
+    DwarfCUToModule root3_handler(&fc, &lr, &reporter_);
+    ASSERT_TRUE(root3_handler.StartCompilationUnit(0, 1, 2, 3, 3));
+    ASSERT_TRUE(root3_handler.StartRootDIE(1,
+                                           dwarf2reader::DW_TAG_compile_unit));
+    ASSERT_TRUE(root3_handler.EndAttributes());
+    DefinitionDIE(&root3_handler, dwarf2reader::DW_TAG_subprogram,
+                  0xb01fef8b380bd1a2ULL, "",
+                  0x2618f00a1a711e53ULL, 0x4fd94b76d7c2caf5ULL);
+    root3_handler.Finish();
+  }
+
+  vector<Module::Function *> functions;
+  m.GetFunctions(&functions, functions.end());
+  EXPECT_EQ(1U, functions.size());
+  EXPECT_STREQ("class_A::member_func_B", functions[0]->name.c_str());
+}
+
+TEST_F(Specifications, UnhandledInterCU) {
+  Module m("module-name", "module-os", "module-arch", "module-id");
+  DwarfCUToModule::FileContext fc("dwarf-filename", &m, false);
+  EXPECT_CALL(reporter_, UncoveredFunction(_)).WillOnce(Return());
+  MockLineToModuleHandler lr;
+  EXPECT_CALL(lr, ReadProgram(_,_,_,_)).Times(0);
+
+  // Kludge: satisfy reporter_'s expectation.
+  reporter_.SetCUName("compilation-unit-name");
+
+  // First CU.  Declares class_A.
+  {
+    DwarfCUToModule root1_handler(&fc, &lr, &reporter_);
+    ASSERT_TRUE(root1_handler.StartCompilationUnit(0, 1, 2, 3, 3));
+    ASSERT_TRUE(root1_handler.StartRootDIE(1,
+                                           dwarf2reader::DW_TAG_compile_unit));
+    ProcessStrangeAttributes(&root1_handler);
+    ASSERT_TRUE(root1_handler.EndAttributes());
+    DeclarationDIE(&root1_handler, 0xb8fbfdd5f0b26fceULL,
+                   dwarf2reader::DW_TAG_class_type, "class_A", "");
+    root1_handler.Finish();
+  }
+
+  // Second CU.  Defines class_A, declares member_func_B.
+  {
+    DwarfCUToModule root2_handler(&fc, &lr, &reporter_);
+    ASSERT_TRUE(root2_handler.StartCompilationUnit(0, 1, 2, 3, 3));
+    ASSERT_TRUE(root2_handler.StartRootDIE(1,
+                                           dwarf2reader::DW_TAG_compile_unit));
+    ASSERT_TRUE(root2_handler.EndAttributes());
+    EXPECT_CALL(reporter_, UnhandledInterCUReference(_, _)).Times(1);
+    DIEHandler *class_A_handler
+      = StartSpecifiedDIE(&root2_handler, dwarf2reader::DW_TAG_class_type,
+                          0xb8fbfdd5f0b26fceULL);
+    DeclarationDIE(class_A_handler, 0xb01fef8b380bd1a2ULL,
+                   dwarf2reader::DW_TAG_subprogram, "member_func_B", "");
+    class_A_handler->Finish();
+    delete class_A_handler;
+    root2_handler.Finish();
+  }
+
+  // Third CU.  Defines member_func_B.
+  {
+    DwarfCUToModule root3_handler(&fc, &lr, &reporter_);
+    ASSERT_TRUE(root3_handler.StartCompilationUnit(0, 1, 2, 3, 3));
+    ASSERT_TRUE(root3_handler.StartRootDIE(1,
+                                           dwarf2reader::DW_TAG_compile_unit));
+    ASSERT_TRUE(root3_handler.EndAttributes());
+    EXPECT_CALL(reporter_, UnhandledInterCUReference(_, _)).Times(1);
+    EXPECT_CALL(reporter_, UnnamedFunction(_)).Times(1);
+    DefinitionDIE(&root3_handler, dwarf2reader::DW_TAG_subprogram,
+                  0xb01fef8b380bd1a2ULL, "",
+                  0x2618f00a1a711e53ULL, 0x4fd94b76d7c2caf5ULL);
+    root3_handler.Finish();
+  }
+}
+
+TEST_F(Specifications, BadOffset) {
+  PushLine(0xa0277efd7ce83771ULL, 0x149554a184c730c1ULL, "line-file", 56636272);
+  EXPECT_CALL(reporter_, UnknownSpecification(_, 0x2be953efa6f9a996ULL))
+    .WillOnce(Return());
+
+  StartCU();
+  DeclarationDIE(&root_handler_, 0xefd7f7752c27b7e4ULL,
+                 dwarf2reader::DW_TAG_subprogram, "", "");
+  DefinitionDIE(&root_handler_, dwarf2reader::DW_TAG_subprogram,
+                0x2be953efa6f9a996ULL, "function",
+                0xa0277efd7ce83771ULL, 0x149554a184c730c1ULL);
+  root_handler_.Finish();
+}
+
+TEST_F(Specifications, FunctionDefinitionHasOwnName) {
+  PushLine(0xced50b3eea81022cULL, 0x08dd4d301cc7a7d2ULL, "line-file", 56792403);
+
+  StartCU();
+  DeclarationDIE(&root_handler_, 0xc34ff4786cae78bdULL,
+                 dwarf2reader::DW_TAG_subprogram, "declaration-name", "");
+  DefinitionDIE(&root_handler_, dwarf2reader::DW_TAG_subprogram,
+                0xc34ff4786cae78bdULL, "definition-name",
+                0xced50b3eea81022cULL, 0x08dd4d301cc7a7d2ULL);
+  root_handler_.Finish();
+
+  TestFunctionCount(1);
+  TestFunction(0, "definition-name",
+               0xced50b3eea81022cULL, 0x08dd4d301cc7a7d2ULL);
+}
+
+TEST_F(Specifications, ClassDefinitionHasOwnName) {
+  PushLine(0x1d0f5e0f6ce309bdULL, 0x654e1852ec3599e7ULL, "line-file", 57119241);
+
+  StartCU();
+  DeclarationDIE(&root_handler_, 0xd0fe467ec2f1a58cULL,
+                 dwarf2reader::DW_TAG_class_type, "class-declaration-name", "");
+
+  dwarf2reader::DIEHandler *class_definition
+    = StartSpecifiedDIE(&root_handler_, dwarf2reader::DW_TAG_class_type,
+                        0xd0fe467ec2f1a58cULL, "class-definition-name");
+  ASSERT_TRUE(class_definition);
+  DeclarationDIE(class_definition, 0x6d028229c15623dbULL,
+                 dwarf2reader::DW_TAG_subprogram,
+                 "function-declaration-name", "");
+  class_definition->Finish();
+  delete class_definition;
+
+  DefinitionDIE(&root_handler_, dwarf2reader::DW_TAG_subprogram,
+                0x6d028229c15623dbULL, "function-definition-name",
+                0x1d0f5e0f6ce309bdULL, 0x654e1852ec3599e7ULL);
+
+  root_handler_.Finish();
+
+  TestFunctionCount(1);
+  TestFunction(0, "class-definition-name::function-definition-name",
+               0x1d0f5e0f6ce309bdULL, 0x654e1852ec3599e7ULL);
+}
+
+// DIEs that cite a specification should prefer the specification's
+// parents over their own when choosing qualified names. In this test,
+// we take the name from our definition but the enclosing scope name
+// from our declaration. I don't see why they'd ever be different, but
+// we want to verify what DwarfCUToModule is looking at.
+TEST_F(Specifications, PreferSpecificationParents) {
+  PushLine(0xbbd9d54dce3b95b7ULL, 0x39188b7b52b0899fULL, "line-file", 79488694);
+
+  StartCU();
+  {
+    dwarf2reader::DIEHandler *declaration_class_handler =
+      StartNamedDIE(&root_handler_, dwarf2reader::DW_TAG_class_type,
+                    "declaration-class");
+    DeclarationDIE(declaration_class_handler, 0x9ddb35517455ef7aULL,
+                   dwarf2reader::DW_TAG_subprogram, "function-declaration",
+                   "");
+    declaration_class_handler->Finish();
+    delete declaration_class_handler;
+  }
+  {
+    dwarf2reader::DIEHandler *definition_class_handler
+      = StartNamedDIE(&root_handler_, dwarf2reader::DW_TAG_class_type,
+                      "definition-class");
+    DefinitionDIE(definition_class_handler, dwarf2reader::DW_TAG_subprogram,
+                  0x9ddb35517455ef7aULL, "function-definition",
+                  0xbbd9d54dce3b95b7ULL, 0x39188b7b52b0899fULL);
+    definition_class_handler->Finish();
+    delete definition_class_handler;
+  }
+  root_handler_.Finish();
+
+  TestFunctionCount(1);
+  TestFunction(0, "declaration-class::function-definition",
+               0xbbd9d54dce3b95b7ULL, 0x39188b7b52b0899fULL);
+}
+
+class CUErrors: public CUFixtureBase, public Test { };
+
+TEST_F(CUErrors, BadStmtList) {
+  EXPECT_CALL(reporter_, BadLineInfoOffset(dummy_line_size_ + 10)).Times(1);
+
+  ASSERT_TRUE(root_handler_
+              .StartCompilationUnit(0xc591d5b037543d7cULL, 0x11, 0xcd,
+                                    0x2d7d19546cf6590cULL, 3));
+  ASSERT_TRUE(root_handler_.StartRootDIE(0xae789dc102cfca54ULL,
+                                         dwarf2reader::DW_TAG_compile_unit));
+  root_handler_.ProcessAttributeString(dwarf2reader::DW_AT_name,
+                                       dwarf2reader::DW_FORM_strp,
+                                       "compilation-unit-name");
+  root_handler_.ProcessAttributeUnsigned(dwarf2reader::DW_AT_stmt_list,
+                                         dwarf2reader::DW_FORM_ref4,
+                                         dummy_line_size_ + 10);
+  root_handler_.EndAttributes();
+  root_handler_.Finish();
+}
+
+TEST_F(CUErrors, NoLineSection) {
+  EXPECT_CALL(reporter_, MissingSection(".debug_line")).Times(1);
+  PushLine(0x88507fb678052611ULL, 0x42c8e9de6bbaa0faULL, "line-file", 64472290);
+  // Delete the entry for .debug_line added by the fixture class's constructor.
+  file_context_.ClearSectionMapForTest();
+
+  StartCU();
+  root_handler_.Finish();
+}
+
+TEST_F(CUErrors, BadDwarfVersion1) {
+  // Kludge: satisfy reporter_'s expectation.
+  reporter_.SetCUName("compilation-unit-name");
+
+  ASSERT_FALSE(root_handler_
+               .StartCompilationUnit(0xadf6e0eb71e2b0d9ULL, 0x4d, 0x90,
+                                     0xc9de224ccb99ac3eULL, 1));
+}
+
+TEST_F(CUErrors, GoodDwarfVersion2) {
+  // Kludge: satisfy reporter_'s expectation.
+  reporter_.SetCUName("compilation-unit-name");
+
+  ASSERT_TRUE(root_handler_
+               .StartCompilationUnit(0xadf6e0eb71e2b0d9ULL, 0x4d, 0x90,
+                                     0xc9de224ccb99ac3eULL, 2));
+}
+
+TEST_F(CUErrors, GoodDwarfVersion3) {
+  // Kludge: satisfy reporter_'s expectation.
+  reporter_.SetCUName("compilation-unit-name");
+
+  ASSERT_TRUE(root_handler_
+               .StartCompilationUnit(0xadf6e0eb71e2b0d9ULL, 0x4d, 0x90,
+                                     0xc9de224ccb99ac3eULL, 3));
+}
+
+TEST_F(CUErrors, BadCURootDIETag) {
+  // Kludge: satisfy reporter_'s expectation.
+  reporter_.SetCUName("compilation-unit-name");
+
+  ASSERT_TRUE(root_handler_
+               .StartCompilationUnit(0xadf6e0eb71e2b0d9ULL, 0x4d, 0x90,
+                                     0xc9de224ccb99ac3eULL, 3));
+
+  ASSERT_FALSE(root_handler_.StartRootDIE(0x02e56bfbda9e7337ULL,
+                                          dwarf2reader::DW_TAG_subprogram));
+}
+
+// Tests for DwarfCUToModule::Reporter. These just produce (or fail to
+// produce) output, so their results need to be checked by hand.
+struct Reporter: public Test {
+  Reporter()
+      : reporter("filename", 0x123456789abcdef0ULL),
+        function("function name", 0x19c45c30770c1eb0ULL),
+        file("source file name") {
+    reporter.SetCUName("compilation-unit-name");
+
+    function.size = 0x89808a5bdfa0a6a3ULL;
+    function.parameter_size = 0x6a329f18683dcd51ULL;
+
+    line.address = 0x3606ac6267aebeccULL;
+    line.size = 0x5de482229f32556aULL;
+    line.file = &file;
+    line.number = 93400201;
+  }
+
+  DwarfCUToModule::WarningReporter reporter;
+  Module::Function function;
+  Module::File file;
+  Module::Line line;
+};
+
+TEST_F(Reporter, UnknownSpecification) {
+  reporter.UnknownSpecification(0x123456789abcdef1ULL, 0x323456789abcdef2ULL);
+}
+
+TEST_F(Reporter, UnknownAbstractOrigin) {
+  reporter.UnknownAbstractOrigin(0x123456789abcdef1ULL, 0x323456789abcdef2ULL);
+}
+
+TEST_F(Reporter, MissingSection) {
+  reporter.MissingSection("section name");
+}
+
+TEST_F(Reporter, BadLineInfoOffset) {
+  reporter.BadLineInfoOffset(0x123456789abcdef1ULL);
+}
+
+TEST_F(Reporter, UncoveredFunctionDisabled) {
+  reporter.UncoveredFunction(function);
+  EXPECT_FALSE(reporter.uncovered_warnings_enabled());
+}
+
+TEST_F(Reporter, UncoveredFunctionEnabled) {
+  reporter.set_uncovered_warnings_enabled(true);
+  reporter.UncoveredFunction(function);
+  EXPECT_TRUE(reporter.uncovered_warnings_enabled());
+}
+
+TEST_F(Reporter, UncoveredLineDisabled) {
+  reporter.UncoveredLine(line);
+  EXPECT_FALSE(reporter.uncovered_warnings_enabled());
+}
+
+TEST_F(Reporter, UncoveredLineEnabled) {
+  reporter.set_uncovered_warnings_enabled(true);
+  reporter.UncoveredLine(line);
+  EXPECT_TRUE(reporter.uncovered_warnings_enabled());
+}
+
+TEST_F(Reporter, UnnamedFunction) {
+  reporter.UnnamedFunction(0x90c0baff9dedb2d9ULL);
+}
+
+// Would be nice to also test:
+// - overlapping lines, functions
diff --git a/google-breakpad/src/common/dwarf_line_to_module.cc b/google-breakpad/src/common/dwarf_line_to_module.cc
new file mode 100644
index 0000000..258b0b6
--- /dev/null
+++ b/google-breakpad/src/common/dwarf_line_to_module.cc
@@ -0,0 +1,143 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// dwarf_line_to_module.cc: Implementation of DwarfLineToModule class.
+// See dwarf_line_to_module.h for details. 
+
+#include <stdio.h>
+
+#include <string>
+
+#include "common/dwarf_line_to_module.h"
+#include "common/using_std_string.h"
+
+// Trying to support Windows paths in a reasonable way adds a lot of
+// variations to test; it would be better to just put off dealing with
+// it until we actually have to deal with DWARF on Windows.
+
+// Return true if PATH is an absolute path, false if it is relative.
+static bool PathIsAbsolute(const string &path) {
+  return (path.size() >= 1 && path[0] == '/');
+}
+
+static bool HasTrailingSlash(const string &path) {
+  return (path.size() >= 1 && path[path.size() - 1] == '/');
+}
+
+// If PATH is an absolute path, return PATH.  If PATH is a relative path,
+// treat it as relative to BASE and return the combined path.
+static string ExpandPath(const string &path,
+                         const string &base) {
+  if (PathIsAbsolute(path) || base.empty())
+    return path;
+  return base + (HasTrailingSlash(base) ? "" : "/") + path;
+}
+
+namespace google_breakpad {
+
+void DwarfLineToModule::DefineDir(const string &name, uint32 dir_num) {
+  // Directory number zero is reserved to mean the compilation
+  // directory. Silently ignore attempts to redefine it.
+  if (dir_num != 0)
+    directories_[dir_num] = ExpandPath(name, compilation_dir_);
+}
+
+void DwarfLineToModule::DefineFile(const string &name, int32 file_num,
+                                   uint32 dir_num, uint64 mod_time,
+                                   uint64 length) {
+  if (file_num == -1)
+    file_num = ++highest_file_number_;
+  else if (file_num > highest_file_number_)
+    highest_file_number_ = file_num;
+
+  string dir_name;
+  if (dir_num == 0) {
+    // Directory number zero is the compilation directory, and is stored as
+    // an attribute on the compilation unit, rather than in the program table.
+    dir_name = compilation_dir_;
+  } else {
+    DirectoryTable::const_iterator directory_it = directories_.find(dir_num);
+    if (directory_it != directories_.end()) {
+      dir_name = directory_it->second;
+    } else {
+      if (!warned_bad_directory_number_) {
+        fprintf(stderr, "warning: DWARF line number data refers to undefined"
+                " directory numbers\n");
+        warned_bad_directory_number_ = true;
+      }
+    }
+  }
+
+  string full_name = ExpandPath(name, dir_name);
+
+  // Find a Module::File object of the given name, and add it to the
+  // file table.
+  files_[file_num] = module_->FindFile(full_name);
+}
+
+void DwarfLineToModule::AddLine(uint64 address, uint64 length,
+                                uint32 file_num, uint32 line_num,
+                                uint32 column_num) {
+  if (length == 0)
+    return;
+
+  // Clip lines not to extend beyond the end of the address space.
+  if (address + length < address)
+    length = -address;
+
+  // Should we omit this line? (See the comments for omitted_line_end_.)
+  if (address == 0 || address == omitted_line_end_) {
+    omitted_line_end_ = address + length;
+    return;
+  } else {
+    omitted_line_end_ = 0;
+  }
+
+  // Find the source file being referred to.
+  Module::File *file = files_[file_num];
+  if (!file) {
+    if (!warned_bad_file_number_) {
+      fprintf(stderr, "warning: DWARF line number data refers to "
+              "undefined file numbers\n");
+      warned_bad_file_number_ = true;
+    }
+    return;
+  }
+  Module::Line line;
+  line.address = address;
+  // We set the size when we get the next line or the EndSequence call.
+  line.size = length;
+  line.file = file;
+  line.number = line_num;
+  lines_->push_back(line);
+}
+
+} // namespace google_breakpad
diff --git a/google-breakpad/src/common/dwarf_line_to_module.h b/google-breakpad/src/common/dwarf_line_to_module.h
new file mode 100644
index 0000000..1fdd4cb
--- /dev/null
+++ b/google-breakpad/src/common/dwarf_line_to_module.h
@@ -0,0 +1,188 @@
+// -*- mode: c++ -*-
+
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// The DwarfLineToModule class accepts line number information from a
+// DWARF parser and adds it to a google_breakpad::Module. The Module
+// can write that data out as a Breakpad symbol file.
+
+#ifndef COMMON_LINUX_DWARF_LINE_TO_MODULE_H
+#define COMMON_LINUX_DWARF_LINE_TO_MODULE_H
+
+#include <string>
+
+#include "common/module.h"
+#include "common/dwarf/dwarf2reader.h"
+#include "common/using_std_string.h"
+
+namespace google_breakpad {
+
+// A class for producing a vector of google_breakpad::Module::Line
+// instances from parsed DWARF line number data.  
+//
+// An instance of this class can be provided as a handler to a
+// dwarf2reader::LineInfo DWARF line number information parser. The
+// handler accepts source location information from the parser and
+// uses it to produce a vector of google_breakpad::Module::Line
+// objects, referring to google_breakpad::Module::File objects added
+// to a particular google_breakpad::Module.
+//
+// GNU toolchain omitted sections support:
+// ======================================
+//
+// Given the right options, the GNU toolchain will omit unreferenced
+// functions from the final executable. Unfortunately, when it does so, it
+// does not remove the associated portions of the DWARF line number
+// program; instead, it gives the DW_LNE_set_address instructions referring
+// to the now-deleted code addresses of zero. Given this input, the DWARF
+// line parser will call AddLine with a series of lines starting at address
+// zero. For example, here is the output from 'readelf -wl' for a program
+// with four functions, the first three of which have been omitted:
+//
+//   Line Number Statements:
+//    Extended opcode 2: set Address to 0x0
+//    Advance Line by 14 to 15
+//    Copy
+//    Special opcode 48: advance Address by 3 to 0x3 and Line by 1 to 16
+//    Special opcode 119: advance Address by 8 to 0xb and Line by 2 to 18
+//    Advance PC by 2 to 0xd
+//    Extended opcode 1: End of Sequence
+// 
+//    Extended opcode 2: set Address to 0x0
+//    Advance Line by 14 to 15
+//    Copy
+//    Special opcode 48: advance Address by 3 to 0x3 and Line by 1 to 16
+//    Special opcode 119: advance Address by 8 to 0xb and Line by 2 to 18
+//    Advance PC by 2 to 0xd
+//    Extended opcode 1: End of Sequence
+// 
+//    Extended opcode 2: set Address to 0x0
+//    Advance Line by 19 to 20
+//    Copy
+//    Special opcode 48: advance Address by 3 to 0x3 and Line by 1 to 21
+//    Special opcode 76: advance Address by 5 to 0x8 and Line by 1 to 22
+//    Advance PC by 2 to 0xa
+//    Extended opcode 1: End of Sequence
+// 
+//    Extended opcode 2: set Address to 0x80483a4
+//    Advance Line by 23 to 24
+//    Copy
+//    Special opcode 202: advance Address by 14 to 0x80483b2 and Line by 1 to 25
+//    Special opcode 76: advance Address by 5 to 0x80483b7 and Line by 1 to 26
+//    Advance PC by 6 to 0x80483bd
+//    Extended opcode 1: End of Sequence
+//
+// Instead of collecting runs of lines describing code that is not there,
+// we try to recognize and drop them. Since the linker doesn't explicitly
+// distinguish references to dropped sections from genuine references to
+// code at address zero, we must use a heuristic. We have chosen:
+//
+// - If a line starts at address zero, omit it. (On the platforms
+//   breakpad targets, it is extremely unlikely that there will be code
+//   at address zero.)
+//
+// - If a line starts immediately after an omitted line, omit it too.
+class DwarfLineToModule: public dwarf2reader::LineInfoHandler {
+ public:
+  // As the DWARF line info parser passes us line records, add source
+  // files to MODULE, and add all lines to the end of LINES. LINES
+  // need not be empty. If the parser hands us a zero-length line, we
+  // omit it. If the parser hands us a line that extends beyond the
+  // end of the address space, we clip it. It's up to our client to
+  // sort out which lines belong to which functions; we don't add them
+  // to any particular function in MODULE ourselves.
+  DwarfLineToModule(Module *module, const string& compilation_dir,
+                    vector<Module::Line> *lines)
+      : module_(module),
+        compilation_dir_(compilation_dir),
+        lines_(lines),
+        highest_file_number_(-1),
+        omitted_line_end_(0),
+        warned_bad_file_number_(false),
+        warned_bad_directory_number_(false) { }
+  
+  ~DwarfLineToModule() { }
+
+  void DefineDir(const string &name, uint32 dir_num);
+  void DefineFile(const string &name, int32 file_num,
+                  uint32 dir_num, uint64 mod_time,
+                  uint64 length);
+  void AddLine(uint64 address, uint64 length,
+               uint32 file_num, uint32 line_num, uint32 column_num);
+
+ private:
+
+  typedef std::map<uint32, string> DirectoryTable;
+  typedef std::map<uint32, Module::File *> FileTable;
+
+  // The module we're contributing debugging info to. Owned by our
+  // client.
+  Module *module_;
+
+  // The compilation directory for the current compilation unit whose
+  // lines are being accumulated.
+  string compilation_dir_;
+
+  // The vector of lines we're accumulating. Owned by our client.
+  //
+  // In a Module, as in a breakpad symbol file, lines belong to
+  // specific functions, but DWARF simply assigns lines to addresses;
+  // one must infer the line/function relationship using the
+  // functions' beginning and ending addresses. So we can't add these
+  // to the appropriate function from module_ until we've read the
+  // function info as well. Instead, we accumulate lines here, and let
+  // whoever constructed this sort it all out.
+  vector<Module::Line> *lines_;
+
+  // A table mapping directory numbers to paths.
+  DirectoryTable directories_;
+
+  // A table mapping file numbers to Module::File pointers.
+  FileTable files_;
+
+  // The highest file number we've seen so far, or -1 if we've seen
+  // none.  Used for dynamically defined file numbers.
+  int32 highest_file_number_;
+  
+  // This is the ending address of the last line we omitted, or zero if we
+  // didn't omit the previous line. It is zero before we have received any
+  // AddLine calls.
+  uint64 omitted_line_end_;
+
+  // True if we've warned about:
+  bool warned_bad_file_number_; // bad file numbers
+  bool warned_bad_directory_number_; // bad directory numbers
+};
+
+} // namespace google_breakpad
+
+#endif // COMMON_LINUX_DWARF_LINE_TO_MODULE_H
diff --git a/google-breakpad/src/common/dwarf_line_to_module_unittest.cc b/google-breakpad/src/common/dwarf_line_to_module_unittest.cc
new file mode 100644
index 0000000..7c0fcfd
--- /dev/null
+++ b/google-breakpad/src/common/dwarf_line_to_module_unittest.cc
@@ -0,0 +1,391 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// dwarf_line_to_module.cc: Unit tests for google_breakpad::DwarfLineToModule.
+
+#include <vector>
+
+#include "breakpad_googletest_includes.h"
+#include "common/dwarf_line_to_module.h"
+
+using std::vector;
+
+using google_breakpad::DwarfLineToModule;
+using google_breakpad::Module;
+using google_breakpad::Module;
+
+TEST(SimpleModule, One) {
+  Module m("name", "os", "architecture", "id");
+  vector<Module::Line> lines;
+  DwarfLineToModule h(&m, "/", &lines);
+
+  h.DefineFile("file1", 0x30bf0f27, 0, 0, 0);
+  h.AddLine(0x6fd126fbf74f2680LL, 0x63c9a14cf556712bLL, 0x30bf0f27,
+            0x4c090cbf, 0x1cf9fe0d);
+
+  vector<Module::File *> files;
+  m.GetFiles(&files);
+  EXPECT_EQ(1U, files.size());
+  EXPECT_STREQ("/file1", files[0]->name.c_str());
+
+  EXPECT_EQ(1U, lines.size());
+  EXPECT_EQ(0x6fd126fbf74f2680ULL, lines[0].address);
+  EXPECT_EQ(0x63c9a14cf556712bULL, lines[0].size);
+  EXPECT_TRUE(lines[0].file == files[0]);
+  EXPECT_EQ(0x4c090cbf, lines[0].number);
+}
+
+TEST(SimpleModule, Many) {
+  Module m("name", "os", "architecture", "id");
+  vector<Module::Line> lines;
+  DwarfLineToModule h(&m, "/", &lines);
+
+  h.DefineDir("directory1", 0x838299ab);
+  h.DefineDir("directory2", 0xf85de023);
+  h.DefineFile("file1", 0x2b80377a, 0x838299ab, 0, 0);
+  h.DefineFile("file1", 0x63beb4a4, 0xf85de023, 0, 0);
+  h.DefineFile("file2", 0x1d161d56, 0x838299ab, 0, 0);
+  h.DefineFile("file2", 0x1e7a667c, 0xf85de023, 0, 0);
+  h.AddLine(0x69900c5d553b7274ULL, 0x90fded183f0d0d3cULL, 0x2b80377a,
+            0x15b0f0a9U, 0x3ff5abd6U);
+  h.AddLine(0x45811219a39b7101ULL, 0x25a5e6a924afc41fULL, 0x63beb4a4,
+            0x4d259ce9U, 0x41c5ee32U);
+  h.AddLine(0xfa90514c1dc9704bULL, 0x0063efeabc02f313ULL, 0x1d161d56,
+            0x1ee9fa4fU, 0xbf70e46aU);
+  h.AddLine(0x556b55fb6a647b10ULL, 0x3f3089ca2bfd80f5ULL, 0x1e7a667c,
+            0x77fc280eU, 0x2c4a728cU);
+  h.DefineFile("file3", -1, 0, 0, 0);
+  h.AddLine(0xe2d72a37f8d9403aULL, 0x034dfab5b0d4d236ULL, 0x63beb4a5,
+            0x75047044U, 0xb6a0016cU);
+
+  vector<Module::File *> files;
+  m.GetFiles(&files);
+  ASSERT_EQ(5U, files.size());
+  EXPECT_STREQ("/directory1/file1", files[0]->name.c_str());
+  EXPECT_STREQ("/directory1/file2", files[1]->name.c_str());
+  EXPECT_STREQ("/directory2/file1", files[2]->name.c_str());
+  EXPECT_STREQ("/directory2/file2", files[3]->name.c_str());
+  EXPECT_STREQ("/file3",            files[4]->name.c_str());
+
+  ASSERT_EQ(5U, lines.size());
+
+  EXPECT_EQ(0x69900c5d553b7274ULL, lines[0].address);
+  EXPECT_EQ(0x90fded183f0d0d3cULL, lines[0].size);
+  EXPECT_TRUE(lines[0].file == files[0]);
+  EXPECT_EQ(0x15b0f0a9, lines[0].number);
+
+  EXPECT_EQ(0x45811219a39b7101ULL, lines[1].address);
+  EXPECT_EQ(0x25a5e6a924afc41fULL, lines[1].size);
+  EXPECT_TRUE(lines[1].file == files[2]);
+  EXPECT_EQ(0x4d259ce9, lines[1].number);
+
+  EXPECT_EQ(0xfa90514c1dc9704bULL, lines[2].address);
+  EXPECT_EQ(0x0063efeabc02f313ULL, lines[2].size);
+  EXPECT_TRUE(lines[2].file == files[1]);
+  EXPECT_EQ(0x1ee9fa4f, lines[2].number);
+
+  EXPECT_EQ(0x556b55fb6a647b10ULL, lines[3].address);
+  EXPECT_EQ(0x3f3089ca2bfd80f5ULL, lines[3].size);
+  EXPECT_TRUE(lines[3].file == files[3]);
+  EXPECT_EQ(0x77fc280e, lines[3].number);
+
+  EXPECT_EQ(0xe2d72a37f8d9403aULL, lines[4].address);
+  EXPECT_EQ(0x034dfab5b0d4d236ULL, lines[4].size);
+  EXPECT_TRUE(lines[4].file == files[4]);
+  EXPECT_EQ(0x75047044, lines[4].number);
+}
+
+TEST(Filenames, Absolute) {
+  Module m("name", "os", "architecture", "id");
+  vector<Module::Line> lines;
+  DwarfLineToModule h(&m, "/", &lines);
+
+  h.DefineDir("directory1", 1);
+  h.DefineFile("/absolute", 1, 1, 0, 0);
+
+  h.AddLine(1, 1, 1, 0, 0);
+
+  vector<Module::File *> files;
+  m.GetFiles(&files);
+  ASSERT_EQ(1U, files.size());
+  EXPECT_STREQ("/absolute", files[0]->name.c_str());
+  ASSERT_EQ(1U, lines.size());
+  EXPECT_TRUE(lines[0].file == files[0]);
+}
+
+TEST(Filenames, Relative) {
+  Module m("name", "os", "architecture", "id");
+  vector<Module::Line> lines;
+  DwarfLineToModule h(&m, "/", &lines);
+
+  h.DefineDir("directory1", 1);
+  h.DefineFile("relative", 1, 1, 0, 0);
+
+  h.AddLine(1, 1, 1, 0, 0);
+
+  vector<Module::File *> files;
+  m.GetFiles(&files);
+  ASSERT_EQ(1U, files.size());
+  EXPECT_STREQ("/directory1/relative", files[0]->name.c_str());
+  ASSERT_EQ(1U, lines.size());
+  EXPECT_TRUE(lines[0].file == files[0]);
+}
+
+TEST(Filenames, StrangeFile) {
+  Module m("name", "os", "architecture", "id");
+  vector<Module::Line> lines;
+  DwarfLineToModule h(&m, "/", &lines);
+
+  h.DefineDir("directory1", 1);
+  h.DefineFile("", 1, 1, 0, 0);
+  h.AddLine(1, 1, 1, 0, 0);
+
+  ASSERT_EQ(1U, lines.size());
+  EXPECT_STREQ("/directory1/", lines[0].file->name.c_str());
+}
+
+TEST(Filenames, StrangeDirectory) {
+  Module m("name", "os", "architecture", "id");
+  vector<Module::Line> lines;
+  DwarfLineToModule h(&m, "/", &lines);
+
+  h.DefineDir("", 1);
+  h.DefineFile("file1", 1, 1, 0, 0);
+  h.AddLine(1, 1, 1, 0, 0);
+
+  ASSERT_EQ(1U, lines.size());
+  EXPECT_STREQ("/file1", lines[0].file->name.c_str());
+}
+
+TEST(Filenames, StrangeDirectoryAndFile) {
+  Module m("name", "os", "architecture", "id");
+  vector<Module::Line> lines;
+  DwarfLineToModule h(&m, "/", &lines);
+
+  h.DefineDir("", 1);
+  h.DefineFile("", 1, 1, 0, 0);
+  h.AddLine(1, 1, 1, 0, 0);
+
+  ASSERT_EQ(1U, lines.size());
+  EXPECT_STREQ("/", lines[0].file->name.c_str());
+}
+
+// We should use the compilation directory when encountering a file for
+// directory number zero.
+TEST(Filenames, DirectoryZeroFileIsRelativeToCompilationDir) {
+  Module m("name", "os", "architecture", "id");
+  vector<Module::Line> lines;
+  DwarfLineToModule h(&m, "src/build", &lines);
+
+  h.DefineDir("Dir", 1);
+  h.DefineFile("File", 1, 0, 0, 0);
+
+  h.AddLine(1, 1, 1, 0, 0);
+
+  ASSERT_EQ(1U, lines.size());
+  EXPECT_STREQ("src/build/File", lines[0].file->name.c_str());
+}
+
+// We should treat non-absolute directories as relative to the compilation
+// directory.
+TEST(Filenames, IncludeDirectoryRelativeToDirectoryZero) {
+  Module m("name", "os", "architecture", "id");
+  vector<Module::Line> lines;
+  DwarfLineToModule h(&m, "src/build", &lines);
+
+  h.DefineDir("Dir", 1);
+  h.DefineFile("File", 1, 1, 0, 0);
+
+  h.AddLine(1, 1, 1, 0, 0);
+
+  ASSERT_EQ(1U, lines.size());
+  EXPECT_STREQ("src/build/Dir/File", lines[0].file->name.c_str());
+}
+
+// We should treat absolute directories as absolute, and not relative to
+// the compilation dir.
+TEST(Filenames, IncludeDirectoryAbsolute) {
+  Module m("name", "os", "architecture", "id");
+  vector<Module::Line> lines;
+  DwarfLineToModule h(&m, "src/build", &lines);
+
+  h.DefineDir("/Dir", 1);
+  h.DefineFile("File", 1, 1, 0, 0);
+
+  h.AddLine(1, 1, 1, 0, 0);
+
+  ASSERT_EQ(1U, lines.size());
+  EXPECT_STREQ("/Dir/File", lines[0].file->name.c_str());
+}
+
+// We should silently ignore attempts to define directory number zero,
+// since that is always the compilation directory.
+TEST(ModuleErrors, DirectoryZero) {
+  Module m("name", "os", "architecture", "id");
+  vector<Module::Line> lines;
+  DwarfLineToModule h(&m, "/", &lines);
+
+  h.DefineDir("directory0", 0); // should be ignored
+  h.DefineFile("relative", 1, 0, 0, 0);
+
+  h.AddLine(1, 1, 1, 0, 0);
+
+  ASSERT_EQ(1U, lines.size());
+  EXPECT_STREQ("/relative", lines[0].file->name.c_str());
+}
+
+// We should refuse to add lines with bogus file numbers. We should
+// produce only one warning, however.
+TEST(ModuleErrors, BadFileNumber) {
+  Module m("name", "os", "architecture", "id");
+  vector<Module::Line> lines;
+  DwarfLineToModule h(&m, "/", &lines);
+
+  h.DefineFile("relative", 1, 0, 0, 0);
+  h.AddLine(1, 1, 2, 0, 0); // bad file number
+  h.AddLine(2, 1, 2, 0, 0); // bad file number (no duplicate warning)
+
+  EXPECT_EQ(0U, lines.size());
+}
+
+// We should treat files with bogus directory numbers as relative to
+// the compilation unit.
+TEST(ModuleErrors, BadDirectoryNumber) {
+  Module m("name", "os", "architecture", "id");
+  vector<Module::Line> lines;
+  DwarfLineToModule h(&m, "/", &lines);
+
+  h.DefineDir("directory1", 1);
+  h.DefineFile("baddirnumber1", 1, 2, 0, 0); // bad directory number
+  h.DefineFile("baddirnumber2", 2, 2, 0, 0); // bad dir number (no warning)
+  h.AddLine(1, 1, 1, 0, 0);
+
+  ASSERT_EQ(1U, lines.size());
+  EXPECT_STREQ("baddirnumber1", lines[0].file->name.c_str());
+}
+
+// We promise not to report empty lines.
+TEST(ModuleErrors, EmptyLine) {
+  Module m("name", "os", "architecture", "id");
+  vector<Module::Line> lines;
+  DwarfLineToModule h(&m, "/", &lines);
+
+  h.DefineFile("filename1", 1, 0, 0, 0);
+  h.AddLine(1, 0, 1, 0, 0);
+
+  ASSERT_EQ(0U, lines.size());
+}  
+
+// We are supposed to clip lines that extend beyond the end of the
+// address space.
+TEST(ModuleErrors, BigLine) {
+  Module m("name", "os", "architecture", "id");
+  vector<Module::Line> lines;
+  DwarfLineToModule h(&m, "/", &lines);
+
+  h.DefineFile("filename1", 1, 0, 0, 0);
+  h.AddLine(0xffffffffffffffffULL, 2, 1, 0, 0);
+
+  ASSERT_EQ(1U, lines.size());
+  EXPECT_EQ(1U, lines[0].size);
+}  
+
+// The 'Omitted' tests verify that we correctly omit line information
+// for code in sections that the linker has dropped. See "GNU
+// toolchain omitted sections support" at the top of the
+// DwarfLineToModule class.
+
+TEST(Omitted, DroppedThenGood) {
+  Module m("name", "os", "architecture", "id");
+  vector<Module::Line> lines;
+  DwarfLineToModule h(&m, "/", &lines);
+
+  h.DefineFile("filename1", 1, 0, 0, 0);
+  h.AddLine(0,  10, 1, 83816211, 0);   // should be omitted
+  h.AddLine(20, 10, 1, 13059195, 0);   // should be recorded
+
+  ASSERT_EQ(1U, lines.size());
+  EXPECT_EQ(13059195, lines[0].number);
+}
+
+TEST(Omitted, GoodThenDropped) {
+  Module m("name", "os", "architecture", "id");
+  vector<Module::Line> lines;
+  DwarfLineToModule h(&m, "/", &lines);
+
+  h.DefineFile("filename1", 1, 0, 0, 0);
+  h.AddLine(0x9dd6a372, 10, 1, 41454594, 0);   // should be recorded
+  h.AddLine(0,  10, 1, 44793413, 0);           // should be omitted
+
+  ASSERT_EQ(1U, lines.size());
+  EXPECT_EQ(41454594, lines[0].number);
+}
+
+TEST(Omitted, Mix1) {
+  Module m("name", "os", "architecture", "id");
+  vector<Module::Line> lines;
+  DwarfLineToModule h(&m, "/", &lines);
+
+  h.DefineFile("filename1", 1, 0, 0, 0);
+  h.AddLine(0x679ed72f,  10,   1, 58932642, 0);   // should be recorded
+  h.AddLine(0xdfb5a72d,  10,   1, 39847385, 0);   // should be recorded
+  h.AddLine(0,           0x78, 1, 23053829, 0);   // should be omitted
+  h.AddLine(0x78,        0x6a, 1, 65317783, 0);   // should be omitted
+  h.AddLine(0x78 + 0x6a, 0x2a, 1, 77601423, 0);   // should be omitted
+  h.AddLine(0x9fe0cea5,  10,   1, 91806582, 0);   // should be recorded
+  h.AddLine(0x7e41a109,  10,   1, 56169221, 0);   // should be recorded
+
+  ASSERT_EQ(4U, lines.size());
+  EXPECT_EQ(58932642, lines[0].number);
+  EXPECT_EQ(39847385, lines[1].number);
+  EXPECT_EQ(91806582, lines[2].number);
+  EXPECT_EQ(56169221, lines[3].number);
+}
+
+TEST(Omitted, Mix2) {
+  Module m("name", "os", "architecture", "id");
+  vector<Module::Line> lines;
+  DwarfLineToModule h(&m, "/", &lines);
+
+  h.DefineFile("filename1", 1, 0, 0, 0);
+  h.AddLine(0,           0xf2, 1, 58802211, 0);   // should be omitted
+  h.AddLine(0xf2,        0xb9, 1, 78958222, 0);   // should be omitted
+  h.AddLine(0xf2 + 0xb9, 0xf7, 1, 64861892, 0);   // should be omitted
+  h.AddLine(0x4e4d271e,  9,    1, 67355743, 0);   // should be recorded
+  h.AddLine(0xdfb5a72d,  30,   1, 23365776, 0);   // should be recorded
+  h.AddLine(0,           0x64, 1, 76196762, 0);   // should be omitted
+  h.AddLine(0x64,        0x33, 1, 71066611, 0);   // should be omitted
+  h.AddLine(0x64 + 0x33, 0xe3, 1, 61749337, 0);   // should be omitted
+
+  ASSERT_EQ(2U, lines.size());
+  EXPECT_EQ(67355743, lines[0].number);
+  EXPECT_EQ(23365776, lines[1].number);
+}
diff --git a/google-breakpad/src/common/language.cc b/google-breakpad/src/common/language.cc
new file mode 100644
index 0000000..c2fd81f
--- /dev/null
+++ b/google-breakpad/src/common/language.cc
@@ -0,0 +1,83 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// language.cc: Subclasses and singletons for google_breakpad::Language.
+// See language.h for details.
+
+#include "common/language.h"
+
+namespace google_breakpad {
+
+// C++ language-specific operations.
+class CPPLanguage: public Language {
+ public:
+  CPPLanguage() {}
+  string MakeQualifiedName(const string &parent_name,
+                           const string &name) const {
+    if (parent_name.empty())
+      return name;
+    else
+      return parent_name + "::" + name;
+  }
+};
+
+CPPLanguage CPPLanguageSingleton;
+
+// Java language-specific operations.
+class JavaLanguage: public Language {
+ public:
+  string MakeQualifiedName(const string &parent_name,
+                           const string &name) const {
+    if (parent_name.empty())
+      return name;
+    else
+      return parent_name + "." + name;
+  }
+};
+
+JavaLanguage JavaLanguageSingleton;
+
+// Assembler language-specific operations.
+class AssemblerLanguage: public Language {
+  bool HasFunctions() const { return false; }
+  string MakeQualifiedName(const string &parent_name,
+                           const string &name) const {
+    return name;
+  }
+};
+
+AssemblerLanguage AssemblerLanguageSingleton;
+
+const Language * const Language::CPlusPlus = &CPPLanguageSingleton;
+const Language * const Language::Java = &JavaLanguageSingleton;
+const Language * const Language::Assembler = &AssemblerLanguageSingleton;
+
+} // namespace google_breakpad
diff --git a/google-breakpad/src/common/language.h b/google-breakpad/src/common/language.h
new file mode 100644
index 0000000..bbe3033
--- /dev/null
+++ b/google-breakpad/src/common/language.h
@@ -0,0 +1,88 @@
+// -*- mode: c++ -*-
+
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// language.h: Define google_breakpad::Language. Instances of
+// subclasses of this class provide language-appropriate operations
+// for the Breakpad symbol dumper.
+
+#ifndef COMMON_LINUX_LANGUAGE_H__
+#define COMMON_LINUX_LANGUAGE_H__
+
+#include <string>
+
+#include "common/using_std_string.h"
+
+namespace google_breakpad {
+
+// An abstract base class for language-specific operations. We choose
+// an instance of a subclass of this when we find the CU's language.
+// This class's definitions are appropriate for CUs with no specified
+// language.
+class Language {
+ public:
+  // A base class destructor should be either public and virtual,
+  // or protected and nonvirtual.
+  virtual ~Language() {}
+
+  // Return true if this language has functions to which we can assign
+  // line numbers. (Debugging info for assembly language, for example,
+  // can have source location information, but does not have functions
+  // recorded using DW_TAG_subprogram DIEs.)
+  virtual bool HasFunctions() const { return true; }
+
+  // Construct a fully-qualified, language-appropriate form of NAME,
+  // given that PARENT_NAME is the name of the construct enclosing
+  // NAME. If PARENT_NAME is the empty string, then NAME is a
+  // top-level name.
+  //
+  // This API sort of assumes that a fully-qualified name is always
+  // some simple textual composition of the unqualified name and its
+  // parent's name, and that we don't need to know anything else about
+  // the parent or the child (say, their DIEs' tags) to do the job.
+  // This is true for the languages we support at the moment, and
+  // keeps things concrete. Perhaps a more refined operation would
+  // take into account the parent and child DIE types, allow languages
+  // to use their own data type for complex parent names, etc. But if
+  // C++ doesn't need all that, who would?
+  virtual string MakeQualifiedName (const string &parent_name,
+                                    const string &name) const = 0;
+
+  // Instances for specific languages.
+  static const Language * const CPlusPlus,
+                        * const Java,
+                        * const Assembler;
+};
+
+} // namespace google_breakpad
+
+#endif  // COMMON_LINUX_LANGUAGE_H__
diff --git a/google-breakpad/src/common/linux/crc32.cc b/google-breakpad/src/common/linux/crc32.cc
new file mode 100644
index 0000000..8df636c
--- /dev/null
+++ b/google-breakpad/src/common/linux/crc32.cc
@@ -0,0 +1,70 @@
+// Copyright 2014 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include "common/linux/crc32.h"
+
+namespace google_breakpad {
+
+// This implementation is based on the sample implementation in RFC 1952.
+
+// CRC32 polynomial, in reversed form.
+// See RFC 1952, or http://en.wikipedia.org/wiki/Cyclic_redundancy_check
+static const uint32_t kCrc32Polynomial = 0xEDB88320;
+static uint32_t kCrc32Table[256] = { 0 };
+
+#define arraysize(f) (sizeof(f) / sizeof(*f))
+
+static void EnsureCrc32TableInited() {
+  if (kCrc32Table[arraysize(kCrc32Table) - 1])
+    return;  // already inited
+  for (uint32_t i = 0; i < arraysize(kCrc32Table); ++i) {
+    uint32_t c = i;
+    for (size_t j = 0; j < 8; ++j) {
+      if (c & 1) {
+        c = kCrc32Polynomial ^ (c >> 1);
+      } else {
+        c >>= 1;
+      }
+    }
+    kCrc32Table[i] = c;
+  }
+}
+
+uint32_t UpdateCrc32(uint32_t start, const void* buf, size_t len) {
+  EnsureCrc32TableInited();
+
+  uint32_t c = start ^ 0xFFFFFFFF;
+  const uint8_t* u = static_cast<const uint8_t*>(buf);
+  for (size_t i = 0; i < len; ++i) {
+    c = kCrc32Table[(c ^ u[i]) & 0xFF] ^ (c >> 8);
+  }
+  return c ^ 0xFFFFFFFF;
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/common/linux/crc32.h b/google-breakpad/src/common/linux/crc32.h
new file mode 100644
index 0000000..e3d9db9
--- /dev/null
+++ b/google-breakpad/src/common/linux/crc32.h
@@ -0,0 +1,53 @@
+// Copyright 2014 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef COMMON_LINUX_CRC32_H_
+#define COMMON_LINUX_CRC32_H_
+
+#include <stdint.h>
+
+#include <string>
+
+namespace google_breakpad {
+
+// Updates a CRC32 checksum with |len| bytes from |buf|. |initial| holds the
+// checksum result from the previous update; for the first call, it should be 0.
+uint32_t UpdateCrc32(uint32_t initial, const void* buf, size_t len);
+
+// Computes a CRC32 checksum using |len| bytes from |buf|.
+inline uint32_t ComputeCrc32(const void* buf, size_t len) {
+  return UpdateCrc32(0, buf, len);
+}
+inline uint32_t ComputeCrc32(const std::string& str) {
+  return ComputeCrc32(str.c_str(), str.size());
+}
+
+}  // namespace google_breakpad
+
+#endif  // COMMON_LINUX_CRC32_H_
diff --git a/google-breakpad/src/common/linux/dump_symbols.cc b/google-breakpad/src/common/linux/dump_symbols.cc
new file mode 100644
index 0000000..0bcc18a
--- /dev/null
+++ b/google-breakpad/src/common/linux/dump_symbols.cc
@@ -0,0 +1,976 @@
+// Copyright (c) 2011 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Restructured in 2009 by: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// dump_symbols.cc: implement google_breakpad::WriteSymbolFile:
+// Find all the debugging info in a file and dump it as a Breakpad symbol file.
+
+#include "common/linux/dump_symbols.h"
+
+#include <assert.h>
+#include <elf.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <link.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/mman.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+#include <iostream>
+#include <set>
+#include <string>
+#include <utility>
+#include <vector>
+
+#include "common/dwarf/bytereader-inl.h"
+#include "common/dwarf/dwarf2diehandler.h"
+#include "common/dwarf_cfi_to_module.h"
+#include "common/dwarf_cu_to_module.h"
+#include "common/dwarf_line_to_module.h"
+#include "common/linux/crc32.h"
+#include "common/linux/eintr_wrapper.h"
+#include "common/linux/elfutils.h"
+#include "common/linux/elfutils-inl.h"
+#include "common/linux/elf_symbols_to_module.h"
+#include "common/linux/file_id.h"
+#include "common/module.h"
+#include "common/scoped_ptr.h"
+#ifndef NO_STABS_SUPPORT
+#include "common/stabs_reader.h"
+#include "common/stabs_to_module.h"
+#endif
+#include "common/using_std_string.h"
+
+// This namespace contains helper functions.
+namespace {
+
+using google_breakpad::DumpOptions;
+using google_breakpad::DwarfCFIToModule;
+using google_breakpad::DwarfCUToModule;
+using google_breakpad::DwarfLineToModule;
+using google_breakpad::ElfClass;
+using google_breakpad::ElfClass32;
+using google_breakpad::ElfClass64;
+using google_breakpad::FindElfSectionByName;
+using google_breakpad::GetOffset;
+using google_breakpad::IsValidElf;
+using google_breakpad::Module;
+#ifndef NO_STABS_SUPPORT
+using google_breakpad::StabsToModule;
+#endif
+using google_breakpad::scoped_ptr;
+
+// Define AARCH64 ELF architecture if host machine does not include this define.
+#ifndef EM_AARCH64
+#define EM_AARCH64      183
+#endif
+
+//
+// FDWrapper
+//
+// Wrapper class to make sure opened file is closed.
+//
+class FDWrapper {
+ public:
+  explicit FDWrapper(int fd) :
+    fd_(fd) {}
+  ~FDWrapper() {
+    if (fd_ != -1)
+      close(fd_);
+  }
+  int get() {
+    return fd_;
+  }
+  int release() {
+    int fd = fd_;
+    fd_ = -1;
+    return fd;
+  }
+ private:
+  int fd_;
+};
+
+//
+// MmapWrapper
+//
+// Wrapper class to make sure mapped regions are unmapped.
+//
+class MmapWrapper {
+ public:
+  MmapWrapper() : is_set_(false) {}
+  ~MmapWrapper() {
+    if (is_set_ && base_ != NULL) {
+      assert(size_ > 0);
+      munmap(base_, size_);
+    }
+  }
+  void set(void *mapped_address, size_t mapped_size) {
+    is_set_ = true;
+    base_ = mapped_address;
+    size_ = mapped_size;
+  }
+  void release() {
+    assert(is_set_);
+    is_set_ = false;
+    base_ = NULL;
+    size_ = 0;
+  }
+
+ private:
+  bool is_set_;
+  void* base_;
+  size_t size_;
+};
+
+// Find the preferred loading address of the binary.
+template<typename ElfClass>
+typename ElfClass::Addr GetLoadingAddress(
+    const typename ElfClass::Phdr* program_headers,
+    int nheader) {
+  typedef typename ElfClass::Phdr Phdr;
+
+  // For non-PIC executables (e_type == ET_EXEC), the load address is
+  // the start address of the first PT_LOAD segment.  (ELF requires
+  // the segments to be sorted by load address.)  For PIC executables
+  // and dynamic libraries (e_type == ET_DYN), this address will
+  // normally be zero.
+  for (int i = 0; i < nheader; ++i) {
+    const Phdr& header = program_headers[i];
+    if (header.p_type == PT_LOAD)
+      return header.p_vaddr;
+  }
+  return 0;
+}
+
+#ifndef NO_STABS_SUPPORT
+template<typename ElfClass>
+bool LoadStabs(const typename ElfClass::Ehdr* elf_header,
+               const typename ElfClass::Shdr* stab_section,
+               const typename ElfClass::Shdr* stabstr_section,
+               const bool big_endian,
+               Module* module) {
+  // A callback object to handle data from the STABS reader.
+  StabsToModule handler(module);
+  // Find the addresses of the STABS data, and create a STABS reader object.
+  // On Linux, STABS entries always have 32-bit values, regardless of the
+  // address size of the architecture whose code they're describing, and
+  // the strings are always "unitized".
+  const uint8_t* stabs =
+      GetOffset<ElfClass, uint8_t>(elf_header, stab_section->sh_offset);
+  const uint8_t* stabstr =
+      GetOffset<ElfClass, uint8_t>(elf_header, stabstr_section->sh_offset);
+  google_breakpad::StabsReader reader(stabs, stab_section->sh_size,
+                                      stabstr, stabstr_section->sh_size,
+                                      big_endian, 4, true, &handler);
+  // Read the STABS data, and do post-processing.
+  if (!reader.Process())
+    return false;
+  handler.Finalize();
+  return true;
+}
+#endif  // NO_STABS_SUPPORT
+
+// A line-to-module loader that accepts line number info parsed by
+// dwarf2reader::LineInfo and populates a Module and a line vector
+// with the results.
+class DumperLineToModule: public DwarfCUToModule::LineToModuleHandler {
+ public:
+  // Create a line-to-module converter using BYTE_READER.
+  explicit DumperLineToModule(dwarf2reader::ByteReader *byte_reader)
+      : byte_reader_(byte_reader) { }
+  void StartCompilationUnit(const string& compilation_dir) {
+    compilation_dir_ = compilation_dir;
+  }
+  void ReadProgram(const char* program, uint64 length,
+                   Module* module, std::vector<Module::Line>* lines) {
+    DwarfLineToModule handler(module, compilation_dir_, lines);
+    dwarf2reader::LineInfo parser(program, length, byte_reader_, &handler);
+    parser.Start();
+  }
+ private:
+  string compilation_dir_;
+  dwarf2reader::ByteReader *byte_reader_;
+};
+
+template<typename ElfClass>
+bool LoadDwarf(const string& dwarf_filename,
+               const typename ElfClass::Ehdr* elf_header,
+               const bool big_endian,
+               bool handle_inter_cu_refs,
+               Module* module) {
+  typedef typename ElfClass::Shdr Shdr;
+
+  const dwarf2reader::Endianness endianness = big_endian ?
+      dwarf2reader::ENDIANNESS_BIG : dwarf2reader::ENDIANNESS_LITTLE;
+  dwarf2reader::ByteReader byte_reader(endianness);
+
+  // Construct a context for this file.
+  DwarfCUToModule::FileContext file_context(dwarf_filename,
+                                            module,
+                                            handle_inter_cu_refs);
+
+  // Build a map of the ELF file's sections.
+  const Shdr* sections =
+      GetOffset<ElfClass, Shdr>(elf_header, elf_header->e_shoff);
+  int num_sections = elf_header->e_shnum;
+  const Shdr* section_names = sections + elf_header->e_shstrndx;
+  for (int i = 0; i < num_sections; i++) {
+    const Shdr* section = &sections[i];
+    string name = GetOffset<ElfClass, char>(elf_header,
+                                            section_names->sh_offset) +
+                  section->sh_name;
+    const char* contents = GetOffset<ElfClass, char>(elf_header,
+                                                     section->sh_offset);
+    file_context.AddSectionToSectionMap(name, contents, section->sh_size);
+  }
+
+  // Parse all the compilation units in the .debug_info section.
+  DumperLineToModule line_to_module(&byte_reader);
+  dwarf2reader::SectionMap::const_iterator debug_info_entry =
+      file_context.section_map().find(".debug_info");
+  assert(debug_info_entry != file_context.section_map().end());
+  const std::pair<const char*, uint64>& debug_info_section =
+      debug_info_entry->second;
+  // This should never have been called if the file doesn't have a
+  // .debug_info section.
+  assert(debug_info_section.first);
+  uint64 debug_info_length = debug_info_section.second;
+  for (uint64 offset = 0; offset < debug_info_length;) {
+    // Make a handler for the root DIE that populates MODULE with the
+    // data that was found.
+    DwarfCUToModule::WarningReporter reporter(dwarf_filename, offset);
+    DwarfCUToModule root_handler(&file_context, &line_to_module, &reporter);
+    // Make a Dwarf2Handler that drives the DIEHandler.
+    dwarf2reader::DIEDispatcher die_dispatcher(&root_handler);
+    // Make a DWARF parser for the compilation unit at OFFSET.
+    dwarf2reader::CompilationUnit reader(file_context.section_map(),
+                                         offset,
+                                         &byte_reader,
+                                         &die_dispatcher);
+    // Process the entire compilation unit; get the offset of the next.
+    offset += reader.Start();
+  }
+  return true;
+}
+
+// Fill REGISTER_NAMES with the register names appropriate to the
+// machine architecture given in HEADER, indexed by the register
+// numbers used in DWARF call frame information. Return true on
+// success, or false if HEADER's machine architecture is not
+// supported.
+template<typename ElfClass>
+bool DwarfCFIRegisterNames(const typename ElfClass::Ehdr* elf_header,
+                           std::vector<string>* register_names) {
+  switch (elf_header->e_machine) {
+    case EM_386:
+      *register_names = DwarfCFIToModule::RegisterNames::I386();
+      return true;
+    case EM_ARM:
+      *register_names = DwarfCFIToModule::RegisterNames::ARM();
+      return true;
+    case EM_AARCH64:
+      *register_names = DwarfCFIToModule::RegisterNames::ARM64();
+      return true;
+    case EM_MIPS:
+      *register_names = DwarfCFIToModule::RegisterNames::MIPS();
+      return true;
+    case EM_X86_64:
+      *register_names = DwarfCFIToModule::RegisterNames::X86_64();
+      return true;
+    default:
+      return false;
+  }
+}
+
+template<typename ElfClass>
+bool LoadDwarfCFI(const string& dwarf_filename,
+                  const typename ElfClass::Ehdr* elf_header,
+                  const char* section_name,
+                  const typename ElfClass::Shdr* section,
+                  const bool eh_frame,
+                  const typename ElfClass::Shdr* got_section,
+                  const typename ElfClass::Shdr* text_section,
+                  const bool big_endian,
+                  Module* module) {
+  // Find the appropriate set of register names for this file's
+  // architecture.
+  std::vector<string> register_names;
+  if (!DwarfCFIRegisterNames<ElfClass>(elf_header, &register_names)) {
+    fprintf(stderr, "%s: unrecognized ELF machine architecture '%d';"
+            " cannot convert DWARF call frame information\n",
+            dwarf_filename.c_str(), elf_header->e_machine);
+    return false;
+  }
+
+  const dwarf2reader::Endianness endianness = big_endian ?
+      dwarf2reader::ENDIANNESS_BIG : dwarf2reader::ENDIANNESS_LITTLE;
+
+  // Find the call frame information and its size.
+  const char* cfi =
+      GetOffset<ElfClass, char>(elf_header, section->sh_offset);
+  size_t cfi_size = section->sh_size;
+
+  // Plug together the parser, handler, and their entourages.
+  DwarfCFIToModule::Reporter module_reporter(dwarf_filename, section_name);
+  DwarfCFIToModule handler(module, register_names, &module_reporter);
+  dwarf2reader::ByteReader byte_reader(endianness);
+
+  byte_reader.SetAddressSize(ElfClass::kAddrSize);
+
+  // Provide the base addresses for .eh_frame encoded pointers, if
+  // possible.
+  byte_reader.SetCFIDataBase(section->sh_addr, cfi);
+  if (got_section)
+    byte_reader.SetDataBase(got_section->sh_addr);
+  if (text_section)
+    byte_reader.SetTextBase(text_section->sh_addr);
+
+  dwarf2reader::CallFrameInfo::Reporter dwarf_reporter(dwarf_filename,
+                                                       section_name);
+  dwarf2reader::CallFrameInfo parser(cfi, cfi_size,
+                                     &byte_reader, &handler, &dwarf_reporter,
+                                     eh_frame);
+  parser.Start();
+  return true;
+}
+
+bool LoadELF(const string& obj_file, MmapWrapper* map_wrapper,
+             void** elf_header) {
+  int obj_fd = open(obj_file.c_str(), O_RDONLY);
+  if (obj_fd < 0) {
+    fprintf(stderr, "Failed to open ELF file '%s': %s\n",
+            obj_file.c_str(), strerror(errno));
+    return false;
+  }
+  FDWrapper obj_fd_wrapper(obj_fd);
+  struct stat st;
+  if (fstat(obj_fd, &st) != 0 && st.st_size <= 0) {
+    fprintf(stderr, "Unable to fstat ELF file '%s': %s\n",
+            obj_file.c_str(), strerror(errno));
+    return false;
+  }
+  void* obj_base = mmap(NULL, st.st_size,
+                        PROT_READ | PROT_WRITE, MAP_PRIVATE, obj_fd, 0);
+  if (obj_base == MAP_FAILED) {
+    fprintf(stderr, "Failed to mmap ELF file '%s': %s\n",
+            obj_file.c_str(), strerror(errno));
+    return false;
+  }
+  map_wrapper->set(obj_base, st.st_size);
+  *elf_header = obj_base;
+  if (!IsValidElf(*elf_header)) {
+    fprintf(stderr, "Not a valid ELF file: %s\n", obj_file.c_str());
+    return false;
+  }
+  return true;
+}
+
+// Get the endianness of ELF_HEADER. If it's invalid, return false.
+template<typename ElfClass>
+bool ElfEndianness(const typename ElfClass::Ehdr* elf_header,
+                   bool* big_endian) {
+  if (elf_header->e_ident[EI_DATA] == ELFDATA2LSB) {
+    *big_endian = false;
+    return true;
+  }
+  if (elf_header->e_ident[EI_DATA] == ELFDATA2MSB) {
+    *big_endian = true;
+    return true;
+  }
+
+  fprintf(stderr, "bad data encoding in ELF header: %d\n",
+          elf_header->e_ident[EI_DATA]);
+  return false;
+}
+
+// Given |left_abspath|, find the absolute path for |right_path| and see if the
+// two absolute paths are the same.
+bool IsSameFile(const char* left_abspath, const string& right_path) {
+  char right_abspath[PATH_MAX];
+  if (!realpath(right_path.c_str(), right_abspath))
+    return false;
+  return strcmp(left_abspath, right_abspath) == 0;
+}
+
+// Read the .gnu_debuglink and get the debug file name. If anything goes
+// wrong, return an empty string.
+string ReadDebugLink(const char* debuglink,
+                     const size_t debuglink_size,
+                     const bool big_endian,
+                     const string& obj_file,
+                     const std::vector<string>& debug_dirs) {
+  size_t debuglink_len = strlen(debuglink) + 5;  // Include '\0' + CRC32.
+  debuglink_len = 4 * ((debuglink_len + 3) / 4);  // Round up to 4 bytes.
+
+  // Sanity check.
+  if (debuglink_len != debuglink_size) {
+    fprintf(stderr, "Mismatched .gnu_debuglink string / section size: "
+            "%zx %zx\n", debuglink_len, debuglink_size);
+    return string();
+  }
+
+  char obj_file_abspath[PATH_MAX];
+  if (!realpath(obj_file.c_str(), obj_file_abspath)) {
+    fprintf(stderr, "Cannot resolve absolute path for %s\n", obj_file.c_str());
+    return string();
+  }
+
+  std::vector<string> searched_paths;
+  string debuglink_path;
+  std::vector<string>::const_iterator it;
+  for (it = debug_dirs.begin(); it < debug_dirs.end(); ++it) {
+    const string& debug_dir = *it;
+    debuglink_path = debug_dir + "/" + debuglink;
+
+    // There is the annoying case of /path/to/foo.so having foo.so as the
+    // debug link file name. Thus this may end up opening /path/to/foo.so again,
+    // and there is a small chance of the two files having the same CRC.
+    if (IsSameFile(obj_file_abspath, debuglink_path))
+      continue;
+
+    searched_paths.push_back(debug_dir);
+    int debuglink_fd = open(debuglink_path.c_str(), O_RDONLY);
+    if (debuglink_fd < 0)
+      continue;
+
+    FDWrapper debuglink_fd_wrapper(debuglink_fd);
+
+    // The CRC is the last 4 bytes in |debuglink|.
+    const dwarf2reader::Endianness endianness = big_endian ?
+        dwarf2reader::ENDIANNESS_BIG : dwarf2reader::ENDIANNESS_LITTLE;
+    dwarf2reader::ByteReader byte_reader(endianness);
+    uint32_t expected_crc =
+        byte_reader.ReadFourBytes(&debuglink[debuglink_size - 4]);
+
+    uint32_t actual_crc = 0;
+    while (true) {
+      const size_t kReadSize = 4096;
+      char buf[kReadSize];
+      ssize_t bytes_read = HANDLE_EINTR(read(debuglink_fd, &buf, kReadSize));
+      if (bytes_read < 0) {
+        fprintf(stderr, "Error reading debug ELF file %s.\n",
+                debuglink_path.c_str());
+        return string();
+      }
+      if (bytes_read == 0)
+        break;
+      actual_crc = google_breakpad::UpdateCrc32(actual_crc, buf, bytes_read);
+    }
+    if (actual_crc != expected_crc) {
+      fprintf(stderr, "Error reading debug ELF file - CRC32 mismatch: %s\n",
+              debuglink_path.c_str());
+      continue;
+    }
+
+    // Found debug file.
+    return debuglink_path;
+  }
+
+  // Not found case.
+  fprintf(stderr, "Failed to find debug ELF file for '%s' after trying:\n",
+          obj_file.c_str());
+  for (it = searched_paths.begin(); it < searched_paths.end(); ++it) {
+    const string& debug_dir = *it;
+    fprintf(stderr, "  %s/%s\n", debug_dir.c_str(), debuglink);
+  }
+  return string();
+}
+
+//
+// LoadSymbolsInfo
+//
+// Holds the state between the two calls to LoadSymbols() in case it's necessary
+// to follow the .gnu_debuglink section and load debug information from a
+// different file.
+//
+template<typename ElfClass>
+class LoadSymbolsInfo {
+ public:
+  typedef typename ElfClass::Addr Addr;
+
+  explicit LoadSymbolsInfo(const std::vector<string>& dbg_dirs) :
+    debug_dirs_(dbg_dirs),
+    has_loading_addr_(false) {}
+
+  // Keeps track of which sections have been loaded so sections don't
+  // accidentally get loaded twice from two different files.
+  void LoadedSection(const string &section) {
+    if (loaded_sections_.count(section) == 0) {
+      loaded_sections_.insert(section);
+    } else {
+      fprintf(stderr, "Section %s has already been loaded.\n",
+              section.c_str());
+    }
+  }
+
+  // The ELF file and linked debug file are expected to have the same preferred
+  // loading address.
+  void set_loading_addr(Addr addr, const string &filename) {
+    if (!has_loading_addr_) {
+      loading_addr_ = addr;
+      loaded_file_ = filename;
+      return;
+    }
+
+    if (addr != loading_addr_) {
+      fprintf(stderr,
+              "ELF file '%s' and debug ELF file '%s' "
+              "have different load addresses.\n",
+              loaded_file_.c_str(), filename.c_str());
+      assert(false);
+    }
+  }
+
+  // Setters and getters
+  const std::vector<string>& debug_dirs() const {
+    return debug_dirs_;
+  }
+
+  string debuglink_file() const {
+    return debuglink_file_;
+  }
+  void set_debuglink_file(string file) {
+    debuglink_file_ = file;
+  }
+
+ private:
+  const std::vector<string>& debug_dirs_; // Directories in which to
+                                          // search for the debug ELF file.
+
+  string debuglink_file_;  // Full path to the debug ELF file.
+
+  bool has_loading_addr_;  // Indicate if LOADING_ADDR_ is valid.
+
+  Addr loading_addr_;  // Saves the preferred loading address from the
+                       // first call to LoadSymbols().
+
+  string loaded_file_;  // Name of the file loaded from the first call to
+                        // LoadSymbols().
+
+  std::set<string> loaded_sections_;  // Tracks the Loaded ELF sections
+                                      // between calls to LoadSymbols().
+};
+
+template<typename ElfClass>
+bool LoadSymbols(const string& obj_file,
+                 const bool big_endian,
+                 const typename ElfClass::Ehdr* elf_header,
+                 const bool read_gnu_debug_link,
+                 LoadSymbolsInfo<ElfClass>* info,
+                 const DumpOptions& options,
+                 Module* module) {
+  typedef typename ElfClass::Addr Addr;
+  typedef typename ElfClass::Phdr Phdr;
+  typedef typename ElfClass::Shdr Shdr;
+  typedef typename ElfClass::Word Word;
+
+  Addr loading_addr = GetLoadingAddress<ElfClass>(
+      GetOffset<ElfClass, Phdr>(elf_header, elf_header->e_phoff),
+      elf_header->e_phnum);
+  module->SetLoadAddress(loading_addr);
+  info->set_loading_addr(loading_addr, obj_file);
+
+  Word debug_section_type =
+      elf_header->e_machine == EM_MIPS ? SHT_MIPS_DWARF : SHT_PROGBITS;
+  const Shdr* sections =
+      GetOffset<ElfClass, Shdr>(elf_header, elf_header->e_shoff);
+  const Shdr* section_names = sections + elf_header->e_shstrndx;
+  const char* names =
+      GetOffset<ElfClass, char>(elf_header, section_names->sh_offset);
+  const char *names_end = names + section_names->sh_size;
+  bool found_debug_info_section = false;
+  bool found_usable_info = false;
+
+  if (options.symbol_data != ONLY_CFI) {
+#ifndef NO_STABS_SUPPORT
+    // Look for STABS debugging information, and load it if present.
+    const Shdr* stab_section =
+      FindElfSectionByName<ElfClass>(".stab", SHT_PROGBITS,
+                                     sections, names, names_end,
+                                     elf_header->e_shnum);
+    if (stab_section) {
+      const Shdr* stabstr_section = stab_section->sh_link + sections;
+      if (stabstr_section) {
+        found_debug_info_section = true;
+        found_usable_info = true;
+        info->LoadedSection(".stab");
+        if (!LoadStabs<ElfClass>(elf_header, stab_section, stabstr_section,
+                                 big_endian, module)) {
+          fprintf(stderr, "%s: \".stab\" section found, but failed to load"
+                  " STABS debugging information\n", obj_file.c_str());
+        }
+      }
+    }
+#endif  // NO_STABS_SUPPORT
+
+    // Look for DWARF debugging information, and load it if present.
+    const Shdr* dwarf_section =
+      FindElfSectionByName<ElfClass>(".debug_info", debug_section_type,
+                                     sections, names, names_end,
+                                     elf_header->e_shnum);
+    if (dwarf_section) {
+      found_debug_info_section = true;
+      found_usable_info = true;
+      info->LoadedSection(".debug_info");
+      if (!LoadDwarf<ElfClass>(obj_file, elf_header, big_endian,
+                               options.handle_inter_cu_refs, module)) {
+        fprintf(stderr, "%s: \".debug_info\" section found, but failed to load "
+                "DWARF debugging information\n", obj_file.c_str());
+      }
+    }
+
+    // See if there are export symbols available.
+    const Shdr* dynsym_section =
+      FindElfSectionByName<ElfClass>(".dynsym", SHT_DYNSYM,
+                                     sections, names, names_end,
+                                     elf_header->e_shnum);
+    const Shdr* dynstr_section =
+      FindElfSectionByName<ElfClass>(".dynstr", SHT_STRTAB,
+                                     sections, names, names_end,
+                                     elf_header->e_shnum);
+    if (dynsym_section && dynstr_section) {
+      info->LoadedSection(".dynsym");
+
+      const uint8_t* dynsyms =
+          GetOffset<ElfClass, uint8_t>(elf_header,
+                                       dynsym_section->sh_offset);
+      const uint8_t* dynstrs =
+          GetOffset<ElfClass, uint8_t>(elf_header,
+                                       dynstr_section->sh_offset);
+      bool result =
+          ELFSymbolsToModule(dynsyms,
+                             dynsym_section->sh_size,
+                             dynstrs,
+                             dynstr_section->sh_size,
+                             big_endian,
+                             ElfClass::kAddrSize,
+                             module);
+      found_usable_info = found_usable_info || result;
+    }
+  }
+
+  if (options.symbol_data != NO_CFI) {
+    // Dwarf Call Frame Information (CFI) is actually independent from
+    // the other DWARF debugging information, and can be used alone.
+    const Shdr* dwarf_cfi_section =
+        FindElfSectionByName<ElfClass>(".debug_frame", debug_section_type,
+                                       sections, names, names_end,
+                                       elf_header->e_shnum);
+    if (dwarf_cfi_section) {
+      // Ignore the return value of this function; even without call frame
+      // information, the other debugging information could be perfectly
+      // useful.
+      info->LoadedSection(".debug_frame");
+      bool result =
+          LoadDwarfCFI<ElfClass>(obj_file, elf_header, ".debug_frame",
+                                 dwarf_cfi_section, false, 0, 0, big_endian,
+                                 module);
+      found_usable_info = found_usable_info || result;
+    }
+
+    // Linux C++ exception handling information can also provide
+    // unwinding data.
+    const Shdr* eh_frame_section =
+        FindElfSectionByName<ElfClass>(".eh_frame", SHT_PROGBITS,
+                                       sections, names, names_end,
+                                       elf_header->e_shnum);
+    if (eh_frame_section) {
+      // Pointers in .eh_frame data may be relative to the base addresses of
+      // certain sections. Provide those sections if present.
+      const Shdr* got_section =
+          FindElfSectionByName<ElfClass>(".got", SHT_PROGBITS,
+                                         sections, names, names_end,
+                                         elf_header->e_shnum);
+      const Shdr* text_section =
+          FindElfSectionByName<ElfClass>(".text", SHT_PROGBITS,
+                                         sections, names, names_end,
+                                         elf_header->e_shnum);
+      info->LoadedSection(".eh_frame");
+      // As above, ignore the return value of this function.
+      bool result =
+          LoadDwarfCFI<ElfClass>(obj_file, elf_header, ".eh_frame",
+                                 eh_frame_section, true,
+                                 got_section, text_section, big_endian, module);
+      found_usable_info = found_usable_info || result;
+    }
+  }
+
+  if (!found_debug_info_section) {
+    fprintf(stderr, "%s: file contains no debugging information"
+            " (no \".stab\" or \".debug_info\" sections)\n",
+            obj_file.c_str());
+
+    // Failed, but maybe there's a .gnu_debuglink section?
+    if (read_gnu_debug_link) {
+      const Shdr* gnu_debuglink_section
+          = FindElfSectionByName<ElfClass>(".gnu_debuglink", SHT_PROGBITS,
+                                           sections, names,
+                                           names_end, elf_header->e_shnum);
+      if (gnu_debuglink_section) {
+        if (!info->debug_dirs().empty()) {
+          const char* debuglink_contents =
+              GetOffset<ElfClass, char>(elf_header,
+                                        gnu_debuglink_section->sh_offset);
+          string debuglink_file =
+              ReadDebugLink(debuglink_contents,
+                            gnu_debuglink_section->sh_size,
+                            big_endian,
+                            obj_file,
+                            info->debug_dirs());
+          info->set_debuglink_file(debuglink_file);
+        } else {
+          fprintf(stderr, ".gnu_debuglink section found in '%s', "
+                  "but no debug path specified.\n", obj_file.c_str());
+        }
+      } else {
+        fprintf(stderr, "%s does not contain a .gnu_debuglink section.\n",
+                obj_file.c_str());
+      }
+    } else {
+      // Return true if some usable information was found, since the caller
+      // doesn't want to use .gnu_debuglink.
+      return found_usable_info;
+    }
+
+    // No debug info was found, let the user try again with .gnu_debuglink
+    // if present.
+    return false;
+  }
+
+  return true;
+}
+
+// Return the breakpad symbol file identifier for the architecture of
+// ELF_HEADER.
+template<typename ElfClass>
+const char* ElfArchitecture(const typename ElfClass::Ehdr* elf_header) {
+  typedef typename ElfClass::Half Half;
+  Half arch = elf_header->e_machine;
+  switch (arch) {
+    case EM_386:        return "x86";
+    case EM_ARM:        return "arm";
+    case EM_AARCH64:    return "arm64";
+    case EM_MIPS:       return "mips";
+    case EM_PPC64:      return "ppc64";
+    case EM_PPC:        return "ppc";
+    case EM_S390:       return "s390";
+    case EM_SPARC:      return "sparc";
+    case EM_SPARCV9:    return "sparcv9";
+    case EM_X86_64:     return "x86_64";
+    default: return NULL;
+  }
+}
+
+// Format the Elf file identifier in IDENTIFIER as a UUID with the
+// dashes removed.
+string FormatIdentifier(unsigned char identifier[16]) {
+  char identifier_str[40];
+  google_breakpad::FileID::ConvertIdentifierToString(
+      identifier,
+      identifier_str,
+      sizeof(identifier_str));
+  string id_no_dash;
+  for (int i = 0; identifier_str[i] != '\0'; ++i)
+    if (identifier_str[i] != '-')
+      id_no_dash += identifier_str[i];
+  // Add an extra "0" by the end.  PDB files on Windows have an 'age'
+  // number appended to the end of the file identifier; this isn't
+  // really used or necessary on other platforms, but be consistent.
+  id_no_dash += '0';
+  return id_no_dash;
+}
+
+// Return the non-directory portion of FILENAME: the portion after the
+// last slash, or the whole filename if there are no slashes.
+string BaseFileName(const string &filename) {
+  // Lots of copies!  basename's behavior is less than ideal.
+  char* c_filename = strdup(filename.c_str());
+  string base = basename(c_filename);
+  free(c_filename);
+  return base;
+}
+
+template<typename ElfClass>
+bool SanitizeDebugFile(const typename ElfClass::Ehdr* debug_elf_header,
+                       const string& debuglink_file,
+                       const string& obj_filename,
+                       const char* obj_file_architecture,
+                       const bool obj_file_is_big_endian) {
+  const char* debug_architecture =
+      ElfArchitecture<ElfClass>(debug_elf_header);
+  if (!debug_architecture) {
+    fprintf(stderr, "%s: unrecognized ELF machine architecture: %d\n",
+            debuglink_file.c_str(), debug_elf_header->e_machine);
+    return false;
+  }
+  if (strcmp(obj_file_architecture, debug_architecture)) {
+    fprintf(stderr, "%s with ELF machine architecture %s does not match "
+            "%s with ELF architecture %s\n",
+            debuglink_file.c_str(), debug_architecture,
+            obj_filename.c_str(), obj_file_architecture);
+    return false;
+  }
+  bool debug_big_endian;
+  if (!ElfEndianness<ElfClass>(debug_elf_header, &debug_big_endian))
+    return false;
+  if (debug_big_endian != obj_file_is_big_endian) {
+    fprintf(stderr, "%s and %s does not match in endianness\n",
+            obj_filename.c_str(), debuglink_file.c_str());
+    return false;
+  }
+  return true;
+}
+
+template<typename ElfClass>
+bool ReadSymbolDataElfClass(const typename ElfClass::Ehdr* elf_header,
+                            const string& obj_filename,
+                            const std::vector<string>& debug_dirs,
+                            const DumpOptions& options,
+                            Module** out_module) {
+  typedef typename ElfClass::Ehdr Ehdr;
+  typedef typename ElfClass::Shdr Shdr;
+
+  *out_module = NULL;
+
+  unsigned char identifier[16];
+  if (!google_breakpad::FileID::ElfFileIdentifierFromMappedFile(elf_header,
+                                                                identifier)) {
+    fprintf(stderr, "%s: unable to generate file identifier\n",
+            obj_filename.c_str());
+    return false;
+  }
+
+  const char *architecture = ElfArchitecture<ElfClass>(elf_header);
+  if (!architecture) {
+    fprintf(stderr, "%s: unrecognized ELF machine architecture: %d\n",
+            obj_filename.c_str(), elf_header->e_machine);
+    return false;
+  }
+
+  // Figure out what endianness this file is.
+  bool big_endian;
+  if (!ElfEndianness<ElfClass>(elf_header, &big_endian))
+    return false;
+
+  string name = BaseFileName(obj_filename);
+  string os = "Linux";
+  string id = FormatIdentifier(identifier);
+
+  LoadSymbolsInfo<ElfClass> info(debug_dirs);
+  scoped_ptr<Module> module(new Module(name, os, architecture, id));
+  if (!LoadSymbols<ElfClass>(obj_filename, big_endian, elf_header,
+                             !debug_dirs.empty(), &info,
+                             options, module.get())) {
+    const string debuglink_file = info.debuglink_file();
+    if (debuglink_file.empty())
+      return false;
+
+    // Load debuglink ELF file.
+    fprintf(stderr, "Found debugging info in %s\n", debuglink_file.c_str());
+    MmapWrapper debug_map_wrapper;
+    Ehdr* debug_elf_header = NULL;
+    if (!LoadELF(debuglink_file, &debug_map_wrapper,
+                 reinterpret_cast<void**>(&debug_elf_header)) ||
+        !SanitizeDebugFile<ElfClass>(debug_elf_header, debuglink_file,
+                                     obj_filename, architecture, big_endian)) {
+      return false;
+    }
+
+    if (!LoadSymbols<ElfClass>(debuglink_file, big_endian,
+                               debug_elf_header, false, &info,
+                               options, module.get())) {
+      return false;
+    }
+  }
+
+  *out_module = module.release();
+  return true;
+}
+
+}  // namespace
+
+namespace google_breakpad {
+
+// Not explicitly exported, but not static so it can be used in unit tests.
+bool ReadSymbolDataInternal(const uint8_t* obj_file,
+                            const string& obj_filename,
+                            const std::vector<string>& debug_dirs,
+                            const DumpOptions& options,
+                            Module** module) {
+  if (!IsValidElf(obj_file)) {
+    fprintf(stderr, "Not a valid ELF file: %s\n", obj_filename.c_str());
+    return false;
+  }
+
+  int elfclass = ElfClass(obj_file);
+  if (elfclass == ELFCLASS32) {
+    return ReadSymbolDataElfClass<ElfClass32>(
+        reinterpret_cast<const Elf32_Ehdr*>(obj_file), obj_filename, debug_dirs,
+        options, module);
+  }
+  if (elfclass == ELFCLASS64) {
+    return ReadSymbolDataElfClass<ElfClass64>(
+        reinterpret_cast<const Elf64_Ehdr*>(obj_file), obj_filename, debug_dirs,
+        options, module);
+  }
+
+  return false;
+}
+
+bool WriteSymbolFile(const string &obj_file,
+                     const std::vector<string>& debug_dirs,
+                     const DumpOptions& options,
+                     std::ostream &sym_stream) {
+  Module* module;
+  if (!ReadSymbolData(obj_file, debug_dirs, options, &module))
+    return false;
+
+  bool result = module->Write(sym_stream, options.symbol_data);
+  delete module;
+  return result;
+}
+
+bool ReadSymbolData(const string& obj_file,
+                    const std::vector<string>& debug_dirs,
+                    const DumpOptions& options,
+                    Module** module) {
+  MmapWrapper map_wrapper;
+  void* elf_header = NULL;
+  if (!LoadELF(obj_file, &map_wrapper, &elf_header))
+    return false;
+
+  return ReadSymbolDataInternal(reinterpret_cast<uint8_t*>(elf_header),
+                                obj_file, debug_dirs, options, module);
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/common/linux/dump_symbols.h b/google-breakpad/src/common/linux/dump_symbols.h
new file mode 100644
index 0000000..636bb72
--- /dev/null
+++ b/google-breakpad/src/common/linux/dump_symbols.h
@@ -0,0 +1,80 @@
+// -*- mode: c++ -*-
+
+// Copyright (c) 2011, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// dump_symbols.h: Read debugging information from an ELF file, and write
+// it out as a Breakpad symbol file.
+
+#ifndef COMMON_LINUX_DUMP_SYMBOLS_H__
+#define COMMON_LINUX_DUMP_SYMBOLS_H__
+
+#include <iostream>
+#include <string>
+#include <vector>
+
+#include "common/symbol_data.h"
+#include "common/using_std_string.h"
+
+namespace google_breakpad {
+
+class Module;
+
+struct DumpOptions {
+  DumpOptions(SymbolData symbol_data, bool handle_inter_cu_refs)
+      : symbol_data(symbol_data),
+        handle_inter_cu_refs(handle_inter_cu_refs) {
+  }
+
+  SymbolData symbol_data;
+  bool handle_inter_cu_refs;
+};
+
+// Find all the debugging information in OBJ_FILE, an ELF executable
+// or shared library, and write it to SYM_STREAM in the Breakpad symbol
+// file format.
+// If OBJ_FILE has been stripped but contains a .gnu_debuglink section,
+// then look for the debug file in DEBUG_DIRS.
+// SYMBOL_DATA allows limiting the type of symbol data written.
+bool WriteSymbolFile(const string &obj_file,
+                     const std::vector<string>& debug_dirs,
+                     const DumpOptions& options,
+                     std::ostream &sym_stream);
+
+// As above, but simply return the debugging information in MODULE
+// instead of writing it to a stream. The caller owns the resulting
+// Module object and must delete it when finished.
+bool ReadSymbolData(const string& obj_file,
+                    const std::vector<string>& debug_dirs,
+                    const DumpOptions& options,
+                    Module** module);
+
+}  // namespace google_breakpad
+
+#endif  // COMMON_LINUX_DUMP_SYMBOLS_H__
diff --git a/google-breakpad/src/common/linux/dump_symbols_unittest.cc b/google-breakpad/src/common/linux/dump_symbols_unittest.cc
new file mode 100644
index 0000000..3f86dbe
--- /dev/null
+++ b/google-breakpad/src/common/linux/dump_symbols_unittest.cc
@@ -0,0 +1,172 @@
+// Copyright (c) 2011 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Ted Mielczarek <ted.mielczarek@gmail.com>
+
+// dump_symbols_unittest.cc:
+// Unittests for google_breakpad::DumpSymbols
+
+#include <elf.h>
+#include <link.h>
+#include <stdio.h>
+
+#include <sstream>
+#include <vector>
+
+#include "breakpad_googletest_includes.h"
+#include "common/linux/dump_symbols.h"
+#include "common/linux/synth_elf.h"
+#include "common/module.h"
+#include "common/using_std_string.h"
+
+namespace google_breakpad {
+
+bool ReadSymbolDataInternal(const uint8_t* obj_file,
+                            const string& obj_filename,
+                            const std::vector<string>& debug_dir,
+                            const DumpOptions& options,
+                            Module** module);
+
+using google_breakpad::synth_elf::ELF;
+using google_breakpad::synth_elf::StringTable;
+using google_breakpad::synth_elf::SymbolTable;
+using google_breakpad::test_assembler::kLittleEndian;
+using google_breakpad::test_assembler::Section;
+using std::stringstream;
+using std::vector;
+using ::testing::Test;
+
+class DumpSymbols : public Test {
+ public:
+  void GetElfContents(ELF& elf) {
+    string contents;
+    ASSERT_TRUE(elf.GetContents(&contents));
+    ASSERT_LT(0U, contents.size());
+
+    elfdata_v.clear();
+    elfdata_v.insert(elfdata_v.begin(), contents.begin(), contents.end());
+    elfdata = &elfdata_v[0];
+  }
+
+  vector<uint8_t> elfdata_v;
+  uint8_t* elfdata;
+};
+
+TEST_F(DumpSymbols, Invalid) {
+  Elf32_Ehdr header;
+  memset(&header, 0, sizeof(header));
+  Module* module;
+  DumpOptions options(ALL_SYMBOL_DATA, true);
+  EXPECT_FALSE(ReadSymbolDataInternal(reinterpret_cast<uint8_t*>(&header),
+                                      "foo",
+                                      vector<string>(),
+                                      options,
+                                      &module));
+}
+
+TEST_F(DumpSymbols, SimplePublic32) {
+  ELF elf(EM_386, ELFCLASS32, kLittleEndian);
+  // Zero out text section for simplicity.
+  Section text(kLittleEndian);
+  text.Append(4096, 0);
+  elf.AddSection(".text", text, SHT_PROGBITS);
+
+  // Add a public symbol.
+  StringTable table(kLittleEndian);
+  SymbolTable syms(kLittleEndian, 4, table);
+  syms.AddSymbol("superfunc", (uint32_t)0x1000, (uint32_t)0x10,
+                 ELF32_ST_INFO(STB_GLOBAL, STT_FUNC),
+                 SHN_UNDEF + 1);
+  int index = elf.AddSection(".dynstr", table, SHT_STRTAB);
+  elf.AddSection(".dynsym", syms,
+                 SHT_DYNSYM,          // type
+                 SHF_ALLOC,           // flags
+                 0,                   // addr
+                 index,               // link
+                 sizeof(Elf32_Sym));  // entsize
+
+  elf.Finish();
+  GetElfContents(elf);
+
+  Module* module;
+  DumpOptions options(ALL_SYMBOL_DATA, true);
+  EXPECT_TRUE(ReadSymbolDataInternal(elfdata,
+                                     "foo",
+                                     vector<string>(),
+                                     options,
+                                     &module));
+
+  stringstream s;
+  module->Write(s, ALL_SYMBOL_DATA);
+  EXPECT_EQ("MODULE Linux x86 000000000000000000000000000000000 foo\n"
+            "PUBLIC 1000 0 superfunc\n",
+            s.str());
+  delete module;
+}
+
+TEST_F(DumpSymbols, SimplePublic64) {
+  ELF elf(EM_X86_64, ELFCLASS64, kLittleEndian);
+  // Zero out text section for simplicity.
+  Section text(kLittleEndian);
+  text.Append(4096, 0);
+  elf.AddSection(".text", text, SHT_PROGBITS);
+
+  // Add a public symbol.
+  StringTable table(kLittleEndian);
+  SymbolTable syms(kLittleEndian, 8, table);
+  syms.AddSymbol("superfunc", (uint64_t)0x1000, (uint64_t)0x10,
+                 ELF64_ST_INFO(STB_GLOBAL, STT_FUNC),
+                 SHN_UNDEF + 1);
+  int index = elf.AddSection(".dynstr", table, SHT_STRTAB);
+  elf.AddSection(".dynsym", syms,
+                 SHT_DYNSYM,          // type
+                 SHF_ALLOC,           // flags
+                 0,                   // addr
+                 index,               // link
+                 sizeof(Elf64_Sym));  // entsize
+
+  elf.Finish();
+  GetElfContents(elf);
+
+  Module* module;
+  DumpOptions options(ALL_SYMBOL_DATA, true);
+  EXPECT_TRUE(ReadSymbolDataInternal(elfdata,
+                                     "foo",
+                                     vector<string>(),
+                                     options,
+                                     &module));
+
+  stringstream s;
+  module->Write(s, ALL_SYMBOL_DATA);
+  EXPECT_EQ("MODULE Linux x86_64 000000000000000000000000000000000 foo\n"
+            "PUBLIC 1000 0 superfunc\n",
+            s.str());
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/common/linux/eintr_wrapper.h b/google-breakpad/src/common/linux/eintr_wrapper.h
new file mode 100644
index 0000000..3f1d184
--- /dev/null
+++ b/google-breakpad/src/common/linux/eintr_wrapper.h
@@ -0,0 +1,58 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef COMMON_LINUX_EINTR_WRAPPER_H_
+#define COMMON_LINUX_EINTR_WRAPPER_H_
+
+#include <errno.h>
+
+// This provides a wrapper around system calls which may be interrupted by a
+// signal and return EINTR. See man 7 signal.
+//
+
+#define HANDLE_EINTR(x) ({ \
+  __typeof__(x) eintr_wrapper_result; \
+  do { \
+    eintr_wrapper_result = (x); \
+  } while (eintr_wrapper_result == -1 && errno == EINTR); \
+  eintr_wrapper_result; \
+})
+
+#define IGNORE_EINTR(x) ({ \
+  __typeof__(x) eintr_wrapper_result; \
+  do { \
+    eintr_wrapper_result = (x); \
+    if (eintr_wrapper_result == -1 && errno == EINTR) { \
+      eintr_wrapper_result = 0; \
+    } \
+  } while (0); \
+  eintr_wrapper_result; \
+})
+
+#endif  // COMMON_LINUX_EINTR_WRAPPER_H_
diff --git a/google-breakpad/src/common/linux/elf_core_dump.cc b/google-breakpad/src/common/linux/elf_core_dump.cc
new file mode 100644
index 0000000..0e7db7b
--- /dev/null
+++ b/google-breakpad/src/common/linux/elf_core_dump.cc
@@ -0,0 +1,179 @@
+// Copyright (c) 2011, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// elf_core_dump.cc: Implement google_breakpad::ElfCoreDump.
+// See elf_core_dump.h for details.
+
+#include "common/linux/elf_core_dump.h"
+
+#include <stddef.h>
+#include <string.h>
+
+namespace google_breakpad {
+
+// Implementation of ElfCoreDump::Note.
+
+ElfCoreDump::Note::Note() {}
+
+ElfCoreDump::Note::Note(const MemoryRange& content) : content_(content) {}
+
+bool ElfCoreDump::Note::IsValid() const {
+  return GetHeader() != NULL;
+}
+
+const ElfCoreDump::Nhdr* ElfCoreDump::Note::GetHeader() const {
+  return content_.GetData<Nhdr>(0);
+}
+
+ElfCoreDump::Word ElfCoreDump::Note::GetType() const {
+  const Nhdr* header = GetHeader();
+  // 0 is not being used as a NOTE type.
+  return header ? header->n_type : 0;
+}
+
+MemoryRange ElfCoreDump::Note::GetName() const {
+  const Nhdr* header = GetHeader();
+  if (header) {
+      return content_.Subrange(sizeof(Nhdr), header->n_namesz);
+  }
+  return MemoryRange();
+}
+
+MemoryRange ElfCoreDump::Note::GetDescription() const {
+  const Nhdr* header = GetHeader();
+  if (header) {
+    return content_.Subrange(AlignedSize(sizeof(Nhdr) + header->n_namesz),
+                             header->n_descsz);
+  }
+  return MemoryRange();
+}
+
+ElfCoreDump::Note ElfCoreDump::Note::GetNextNote() const {
+  MemoryRange next_content;
+  const Nhdr* header = GetHeader();
+  if (header) {
+    size_t next_offset = AlignedSize(sizeof(Nhdr) + header->n_namesz);
+    next_offset = AlignedSize(next_offset + header->n_descsz);
+    next_content =
+        content_.Subrange(next_offset, content_.length() - next_offset);
+  }
+  return Note(next_content);
+}
+
+// static
+size_t ElfCoreDump::Note::AlignedSize(size_t size) {
+  size_t mask = sizeof(Word) - 1;
+  return (size + mask) & ~mask;
+}
+
+
+// Implementation of ElfCoreDump.
+
+ElfCoreDump::ElfCoreDump() {}
+
+ElfCoreDump::ElfCoreDump(const MemoryRange& content)
+    : content_(content) {
+}
+
+void ElfCoreDump::SetContent(const MemoryRange& content) {
+  content_ = content;
+}
+
+bool ElfCoreDump::IsValid() const {
+  const Ehdr* header = GetHeader();
+  return (header &&
+          header->e_ident[0] == ELFMAG0 &&
+          header->e_ident[1] == ELFMAG1 &&
+          header->e_ident[2] == ELFMAG2 &&
+          header->e_ident[3] == ELFMAG3 &&
+          header->e_ident[4] == kClass &&
+          header->e_version == EV_CURRENT &&
+          header->e_type == ET_CORE);
+}
+
+const ElfCoreDump::Ehdr* ElfCoreDump::GetHeader() const {
+  return content_.GetData<Ehdr>(0);
+}
+
+const ElfCoreDump::Phdr* ElfCoreDump::GetProgramHeader(unsigned index) const {
+  const Ehdr* header = GetHeader();
+  if (header) {
+    return reinterpret_cast<const Phdr*>(content_.GetArrayElement(
+        header->e_phoff, header->e_phentsize, index));
+  }
+  return NULL;
+}
+
+const ElfCoreDump::Phdr* ElfCoreDump::GetFirstProgramHeaderOfType(
+    Word type) const {
+  for (unsigned i = 0, n = GetProgramHeaderCount(); i < n; ++i) {
+    const Phdr* program = GetProgramHeader(i);
+    if (program->p_type == type) {
+      return program;
+    }
+  }
+  return NULL;
+}
+
+unsigned ElfCoreDump::GetProgramHeaderCount() const {
+  const Ehdr* header = GetHeader();
+  return header ? header->e_phnum : 0;
+}
+
+bool ElfCoreDump::CopyData(void* buffer, Addr virtual_address, size_t length) {
+  for (unsigned i = 0, n = GetProgramHeaderCount(); i < n; ++i) {
+    const Phdr* program = GetProgramHeader(i);
+    if (program->p_type != PT_LOAD)
+      continue;
+
+    size_t offset_in_segment = virtual_address - program->p_vaddr;
+    if (virtual_address >= program->p_vaddr &&
+        offset_in_segment < program->p_filesz) {
+      const void* data =
+          content_.GetData(program->p_offset + offset_in_segment, length);
+      if (data) {
+        memcpy(buffer, data, length);
+        return true;
+      }
+    }
+  }
+  return false;
+}
+
+ElfCoreDump::Note ElfCoreDump::GetFirstNote() const {
+  MemoryRange note_content;
+  const Phdr* program_header = GetFirstProgramHeaderOfType(PT_NOTE);
+  if (program_header) {
+    note_content = content_.Subrange(program_header->p_offset,
+                                     program_header->p_filesz);
+  }
+  return Note(note_content);
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/common/linux/elf_core_dump.h b/google-breakpad/src/common/linux/elf_core_dump.h
new file mode 100644
index 0000000..d03c7a8
--- /dev/null
+++ b/google-breakpad/src/common/linux/elf_core_dump.h
@@ -0,0 +1,148 @@
+// Copyright (c) 2011, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// elf_core_dump.h: Define the google_breakpad::ElfCoreDump class, which
+// encapsulates an ELF core dump file mapped into memory.
+
+#ifndef COMMON_LINUX_ELF_CORE_DUMP_H_
+#define COMMON_LINUX_ELF_CORE_DUMP_H_
+
+#include <elf.h>
+#include <link.h>
+#include <stddef.h>
+
+#include "common/memory_range.h"
+
+namespace google_breakpad {
+
+// A class encapsulating an ELF core dump file mapped into memory, which
+// provides methods for accessing program headers and the note section.
+class ElfCoreDump {
+ public:
+  // ELF types based on the value of __WORDSIZE.
+  typedef ElfW(Ehdr) Ehdr;
+  typedef ElfW(Nhdr) Nhdr;
+  typedef ElfW(Phdr) Phdr;
+  typedef ElfW(Word) Word;
+  typedef ElfW(Addr) Addr;
+#if __WORDSIZE == 32
+  static const int kClass = ELFCLASS32;
+#elif __WORDSIZE == 64
+  static const int kClass = ELFCLASS64;
+#else
+#error "Unsupported __WORDSIZE for ElfCoreDump."
+#endif
+
+  // A class encapsulating the note content in a core dump, which provides
+  // methods for accessing the name and description of a note.
+  class Note {
+   public:
+    Note();
+
+    // Constructor that takes the note content from |content|.
+    explicit Note(const MemoryRange& content);
+
+    // Returns true if this note is valid, i,e. a note header is found in
+    // |content_|, or false otherwise.
+    bool IsValid() const;
+
+    // Returns the note header, or NULL if no note header is found in
+    // |content_|.
+    const Nhdr* GetHeader() const;
+
+    // Returns the note type, or 0 if no note header is found in |content_|.
+    Word GetType() const;
+
+    // Returns a memory range covering the note name, or an empty range
+    // if no valid note name is found in |content_|.
+    MemoryRange GetName() const;
+
+    // Returns a memory range covering the note description, or an empty
+    // range if no valid note description is found in |content_|.
+    MemoryRange GetDescription() const;
+
+    // Returns the note following this note, or an empty note if no valid
+    // note is found after this note.
+    Note GetNextNote() const;
+
+   private:
+    // Returns the size in bytes round up to the word alignment, specified
+    // for the note section, of a given size in bytes.
+    static size_t AlignedSize(size_t size);
+
+    // Note content.
+    MemoryRange content_;
+  };
+
+  ElfCoreDump();
+
+  // Constructor that takes the core dump content from |content|.
+  explicit ElfCoreDump(const MemoryRange& content);
+
+  // Sets the core dump content to |content|.
+  void SetContent(const MemoryRange& content);
+
+  // Returns true if a valid ELF header in the core dump, or false otherwise.
+  bool IsValid() const;
+
+  // Returns the ELF header in the core dump, or NULL if no ELF header
+  // is found in |content_|.
+  const Ehdr* GetHeader() const;
+
+  // Returns the |index|-th program header in the core dump, or NULL if no
+  // ELF header is found in |content_| or |index| is out of bounds.
+  const Phdr* GetProgramHeader(unsigned index) const;
+
+  // Returns the first program header of |type| in the core dump, or NULL if
+  // no ELF header is found in |content_| or no program header of |type| is
+  // found.
+  const Phdr* GetFirstProgramHeaderOfType(Word type) const;
+
+  // Returns the number of program headers in the core dump, or 0 if no
+  // ELF header is found in |content_|.
+  unsigned GetProgramHeaderCount() const;
+
+  // Copies |length| bytes of data starting at |virtual_address| in the core
+  // dump to |buffer|. |buffer| should be a valid pointer to a buffer of at
+  // least |length| bytes. Returns true if the data to be copied is found in
+  // the core dump, or false otherwise.
+  bool CopyData(void* buffer, Addr virtual_address, size_t length);
+
+  // Returns the first note found in the note section of the core dump, or
+  // an empty note if no note is found.
+  Note GetFirstNote() const;
+
+ private:
+  // Core dump content.
+  MemoryRange content_;
+};
+
+}  // namespace google_breakpad
+
+#endif  // COMMON_LINUX_ELF_CORE_DUMP_H_
diff --git a/google-breakpad/src/common/linux/elf_core_dump_unittest.cc b/google-breakpad/src/common/linux/elf_core_dump_unittest.cc
new file mode 100644
index 0000000..9b41dce
--- /dev/null
+++ b/google-breakpad/src/common/linux/elf_core_dump_unittest.cc
@@ -0,0 +1,256 @@
+// Copyright (c) 2011, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// elf_core_dump_unittest.cc: Unit tests for google_breakpad::ElfCoreDump.
+
+#include <sys/procfs.h>
+
+#include <set>
+#include <string>
+
+#include "breakpad_googletest_includes.h"
+#include "common/linux/elf_core_dump.h"
+#include "common/linux/memory_mapped_file.h"
+#include "common/tests/file_utils.h"
+#include "common/linux/tests/crash_generator.h"
+#include "common/using_std_string.h"
+
+using google_breakpad::AutoTempDir;
+using google_breakpad::CrashGenerator;
+using google_breakpad::ElfCoreDump;
+using google_breakpad::MemoryMappedFile;
+using google_breakpad::MemoryRange;
+using google_breakpad::WriteFile;
+using std::set;
+
+TEST(ElfCoreDumpTest, DefaultConstructor) {
+  ElfCoreDump core;
+  EXPECT_FALSE(core.IsValid());
+  EXPECT_EQ(NULL, core.GetHeader());
+  EXPECT_EQ(0U, core.GetProgramHeaderCount());
+  EXPECT_EQ(NULL, core.GetProgramHeader(0));
+  EXPECT_EQ(NULL, core.GetFirstProgramHeaderOfType(PT_LOAD));
+  EXPECT_FALSE(core.GetFirstNote().IsValid());
+}
+
+TEST(ElfCoreDumpTest, TestElfHeader) {
+  ElfCoreDump::Ehdr header;
+  memset(&header, 0, sizeof(header));
+
+  AutoTempDir temp_dir;
+  string core_path = temp_dir.path() + "/core";
+  const char* core_file = core_path.c_str();
+  MemoryMappedFile mapped_core_file;
+  ElfCoreDump core;
+
+  ASSERT_TRUE(WriteFile(core_file, &header, sizeof(header) - 1));
+  ASSERT_TRUE(mapped_core_file.Map(core_file, 0));
+  core.SetContent(mapped_core_file.content());
+  EXPECT_FALSE(core.IsValid());
+  EXPECT_EQ(NULL, core.GetHeader());
+  EXPECT_EQ(0U, core.GetProgramHeaderCount());
+  EXPECT_EQ(NULL, core.GetProgramHeader(0));
+  EXPECT_EQ(NULL, core.GetFirstProgramHeaderOfType(PT_LOAD));
+  EXPECT_FALSE(core.GetFirstNote().IsValid());
+
+  ASSERT_TRUE(WriteFile(core_file, &header, sizeof(header)));
+  ASSERT_TRUE(mapped_core_file.Map(core_file, 0));
+  core.SetContent(mapped_core_file.content());
+  EXPECT_FALSE(core.IsValid());
+
+  header.e_ident[0] = ELFMAG0;
+  ASSERT_TRUE(WriteFile(core_file, &header, sizeof(header)));
+  ASSERT_TRUE(mapped_core_file.Map(core_file, 0));
+  core.SetContent(mapped_core_file.content());
+  EXPECT_FALSE(core.IsValid());
+
+  header.e_ident[1] = ELFMAG1;
+  ASSERT_TRUE(WriteFile(core_file, &header, sizeof(header)));
+  ASSERT_TRUE(mapped_core_file.Map(core_file, 0));
+  core.SetContent(mapped_core_file.content());
+  EXPECT_FALSE(core.IsValid());
+
+  header.e_ident[2] = ELFMAG2;
+  ASSERT_TRUE(WriteFile(core_file, &header, sizeof(header)));
+  ASSERT_TRUE(mapped_core_file.Map(core_file, 0));
+  core.SetContent(mapped_core_file.content());
+  EXPECT_FALSE(core.IsValid());
+
+  header.e_ident[3] = ELFMAG3;
+  ASSERT_TRUE(WriteFile(core_file, &header, sizeof(header)));
+  ASSERT_TRUE(mapped_core_file.Map(core_file, 0));
+  core.SetContent(mapped_core_file.content());
+  EXPECT_FALSE(core.IsValid());
+
+  header.e_ident[4] = ElfCoreDump::kClass;
+  ASSERT_TRUE(WriteFile(core_file, &header, sizeof(header)));
+  ASSERT_TRUE(mapped_core_file.Map(core_file, 0));
+  core.SetContent(mapped_core_file.content());
+  EXPECT_FALSE(core.IsValid());
+
+  header.e_version = EV_CURRENT;
+  ASSERT_TRUE(WriteFile(core_file, &header, sizeof(header)));
+  ASSERT_TRUE(mapped_core_file.Map(core_file, 0));
+  core.SetContent(mapped_core_file.content());
+  EXPECT_FALSE(core.IsValid());
+
+  header.e_type = ET_CORE;
+  ASSERT_TRUE(WriteFile(core_file, &header, sizeof(header)));
+  ASSERT_TRUE(mapped_core_file.Map(core_file, 0));
+  core.SetContent(mapped_core_file.content());
+  EXPECT_TRUE(core.IsValid());
+}
+
+TEST(ElfCoreDumpTest, ValidCoreFile) {
+  CrashGenerator crash_generator;
+  if (!crash_generator.HasDefaultCorePattern()) {
+    fprintf(stderr, "ElfCoreDumpTest.ValidCoreFile test is skipped "
+            "due to non-default core pattern");
+    return;
+  }
+
+  const unsigned kNumOfThreads = 3;
+  const unsigned kCrashThread = 1;
+  const int kCrashSignal = SIGABRT;
+  ASSERT_TRUE(crash_generator.CreateChildCrash(kNumOfThreads, kCrashThread,
+                                               kCrashSignal, NULL));
+  pid_t expected_crash_thread_id = crash_generator.GetThreadId(kCrashThread);
+  set<pid_t> expected_thread_ids;
+  for (unsigned i = 0; i < kNumOfThreads; ++i) {
+    expected_thread_ids.insert(crash_generator.GetThreadId(i));
+  }
+
+#if defined(__ANDROID__)
+  struct stat st;
+  if (stat(crash_generator.GetCoreFilePath().c_str(), &st) != 0) {
+    fprintf(stderr, "ElfCoreDumpTest.ValidCoreFile test is skipped "
+            "due to no core file being generated");
+    return;
+  }
+#endif
+
+  MemoryMappedFile mapped_core_file;
+  ASSERT_TRUE(
+      mapped_core_file.Map(crash_generator.GetCoreFilePath().c_str(), 0));
+
+  ElfCoreDump core;
+  core.SetContent(mapped_core_file.content());
+  EXPECT_TRUE(core.IsValid());
+
+  // Based on write_note_info() in linux/kernel/fs/binfmt_elf.c, notes are
+  // ordered as follows (NT_PRXFPREG and NT_386_TLS are i386 specific):
+  //   Thread           Name          Type
+  //   -------------------------------------------------------------------
+  //   1st thread       CORE          NT_PRSTATUS
+  //   process-wide     CORE          NT_PRPSINFO
+  //   process-wide     CORE          NT_AUXV
+  //   1st thread       CORE          NT_FPREGSET
+  //   1st thread       LINUX         NT_PRXFPREG
+  //   1st thread       LINUX         NT_386_TLS
+  //
+  //   2nd thread       CORE          NT_PRSTATUS
+  //   2nd thread       CORE          NT_FPREGSET
+  //   2nd thread       LINUX         NT_PRXFPREG
+  //   2nd thread       LINUX         NT_386_TLS
+  //
+  //   3rd thread       CORE          NT_PRSTATUS
+  //   3rd thread       CORE          NT_FPREGSET
+  //   3rd thread       LINUX         NT_PRXFPREG
+  //   3rd thread       LINUX         NT_386_TLS
+
+  size_t num_nt_prpsinfo = 0;
+  size_t num_nt_prstatus = 0;
+  size_t num_pr_fpvalid = 0;
+#if defined(__i386__) || defined(__x86_64__)
+  size_t num_nt_fpregset = 0;
+#endif
+#if defined(__i386__)
+  size_t num_nt_prxfpreg = 0;
+#endif
+  set<pid_t> actual_thread_ids;
+  ElfCoreDump::Note note = core.GetFirstNote();
+  while (note.IsValid()) {
+    MemoryRange name = note.GetName();
+    MemoryRange description = note.GetDescription();
+    EXPECT_FALSE(name.IsEmpty());
+    EXPECT_FALSE(description.IsEmpty());
+
+    switch (note.GetType()) {
+      case NT_PRPSINFO: {
+        EXPECT_TRUE(description.data() != NULL);
+        EXPECT_EQ(sizeof(elf_prpsinfo), description.length());
+        ++num_nt_prpsinfo;
+        break;
+      }
+      case NT_PRSTATUS: {
+        EXPECT_TRUE(description.data() != NULL);
+        EXPECT_EQ(sizeof(elf_prstatus), description.length());
+        const elf_prstatus* status = description.GetData<elf_prstatus>(0);
+        actual_thread_ids.insert(status->pr_pid);
+        if (num_nt_prstatus == 0) {
+          EXPECT_EQ(expected_crash_thread_id, status->pr_pid);
+          EXPECT_EQ(kCrashSignal, status->pr_info.si_signo);
+        }
+        ++num_nt_prstatus;
+        if (status->pr_fpvalid)
+          ++num_pr_fpvalid;
+        break;
+      }
+#if defined(__i386__) || defined(__x86_64__)
+      case NT_FPREGSET: {
+        EXPECT_TRUE(description.data() != NULL);
+        EXPECT_EQ(sizeof(user_fpregs_struct), description.length());
+        ++num_nt_fpregset;
+        break;
+      }
+#endif
+#if defined(__i386__)
+      case NT_PRXFPREG: {
+        EXPECT_TRUE(description.data() != NULL);
+        EXPECT_EQ(sizeof(user_fpxregs_struct), description.length());
+        ++num_nt_prxfpreg;
+        break;
+      }
+#endif
+      default:
+        break;
+    }
+    note = note.GetNextNote();
+  }
+
+  EXPECT_TRUE(expected_thread_ids == actual_thread_ids);
+  EXPECT_EQ(1U, num_nt_prpsinfo);
+  EXPECT_EQ(kNumOfThreads, num_nt_prstatus);
+#if defined(__i386__) || defined(__x86_64__)
+  EXPECT_EQ(num_pr_fpvalid, num_nt_fpregset);
+#endif
+#if defined(__i386__)
+  EXPECT_EQ(num_pr_fpvalid, num_nt_prxfpreg);
+#endif
+}
diff --git a/google-breakpad/src/common/linux/elf_gnu_compat.h b/google-breakpad/src/common/linux/elf_gnu_compat.h
new file mode 100644
index 0000000..f870cbc
--- /dev/null
+++ b/google-breakpad/src/common/linux/elf_gnu_compat.h
@@ -0,0 +1,46 @@
+// -*- mode: C++ -*-
+
+// Copyright (c) 2013, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Lei Zhang <thestig@google.com>
+
+// elf_gnu_compat.h: #defines unique to glibc's elf.h.
+
+#ifndef COMMON_LINUX_ELF_GNU_COMPAT_H_
+#define COMMON_LINUX_ELF_GNU_COMPAT_H_
+
+#include <elf.h>
+
+// A note type on GNU systems corresponding to the .note.gnu.build-id section.
+#ifndef NT_GNU_BUILD_ID
+#define NT_GNU_BUILD_ID 3
+#endif
+
+#endif  // COMMON_LINUX_ELF_GNU_COMPAT_H_
diff --git a/google-breakpad/src/common/linux/elf_symbols_to_module.cc b/google-breakpad/src/common/linux/elf_symbols_to_module.cc
new file mode 100644
index 0000000..562875e
--- /dev/null
+++ b/google-breakpad/src/common/linux/elf_symbols_to_module.cc
@@ -0,0 +1,178 @@
+// -*- mode: c++ -*-
+
+// Copyright (c) 2011 Google Inc. All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Ted Mielczarek <ted.mielczarek@gmail.com>
+
+#include "common/linux/elf_symbols_to_module.h"
+
+#include <cxxabi.h>
+#include <elf.h>
+#include <string.h>
+
+#include "common/byte_cursor.h"
+#include "common/module.h"
+
+namespace google_breakpad {
+
+class ELFSymbolIterator {
+public:
+  // The contents of an ELF symbol, adjusted for the host's endianness,
+  // word size, and so on. Corresponds to the data in Elf32_Sym / Elf64_Sym.
+  struct Symbol {
+    // True if this iterator has reached the end of the symbol array. When
+    // this is set, the other members of this structure are not valid.
+    bool at_end;
+
+    // The number of this symbol within the list.
+    size_t index;
+
+    // The current symbol's name offset. This is the offset within the
+    // string table.
+    size_t name_offset;
+
+    // The current symbol's value, size, info and shndx fields.
+    uint64_t value;
+    uint64_t size;
+    unsigned char info;
+    uint16_t shndx;
+  };
+
+  // Create an ELFSymbolIterator walking the symbols in BUFFER. Treat the
+  // symbols as big-endian if BIG_ENDIAN is true, as little-endian
+  // otherwise. Assume each symbol has a 'value' field whose size is
+  // VALUE_SIZE.
+  //
+  ELFSymbolIterator(const ByteBuffer *buffer, bool big_endian,
+                    size_t value_size)
+    : value_size_(value_size), cursor_(buffer, big_endian) {
+    // Actually, weird sizes could be handled just fine, but they're
+    // probably mistakes --- expressed in bits, say.
+    assert(value_size == 4 || value_size == 8);
+    symbol_.index = 0;
+    Fetch();
+  }
+
+  // Move to the next symbol. This function's behavior is undefined if
+  // at_end() is true when it is called.
+  ELFSymbolIterator &operator++() { Fetch(); symbol_.index++; return *this; }
+
+  // Dereferencing this iterator produces a reference to an Symbol structure
+  // that holds the current symbol's values. The symbol is owned by this
+  // SymbolIterator, and will be invalidated at the next call to operator++.
+  const Symbol &operator*() const { return symbol_; }
+  const Symbol *operator->() const { return &symbol_; }
+
+private:
+  // Read the symbol at cursor_, and set symbol_ appropriately.
+  void Fetch() {
+    // Elf32_Sym and Elf64_Sym have different layouts.
+    unsigned char other;
+    if (value_size_ == 4) {
+      // Elf32_Sym
+      cursor_
+        .Read(4, false, &symbol_.name_offset)
+        .Read(4, false, &symbol_.value)
+        .Read(4, false, &symbol_.size)
+        .Read(1, false, &symbol_.info)
+        .Read(1, false, &other)
+        .Read(2, false, &symbol_.shndx);
+    } else {
+      // Elf64_Sym
+      cursor_
+        .Read(4, false, &symbol_.name_offset)
+        .Read(1, false, &symbol_.info)
+        .Read(1, false, &other)
+        .Read(2, false, &symbol_.shndx)
+        .Read(8, false, &symbol_.value)
+        .Read(8, false, &symbol_.size);
+    }
+    symbol_.at_end = !cursor_;
+  }
+
+  // The size of symbols' value field, in bytes.
+  size_t value_size_;
+
+  // A byte cursor traversing buffer_.
+  ByteCursor cursor_;
+
+  // Values for the symbol this iterator refers to.
+  Symbol symbol_;
+};
+
+const char *SymbolString(ptrdiff_t offset, ByteBuffer& strings) {
+  if (offset < 0 || (size_t) offset >= strings.Size()) {
+    // Return the null string.
+    offset = 0;
+  }
+  return reinterpret_cast<const char *>(strings.start + offset);
+}
+
+bool ELFSymbolsToModule(const uint8_t *symtab_section,
+                        size_t symtab_size,
+                        const uint8_t *string_section,
+                        size_t string_size,
+                        const bool big_endian,
+                        size_t value_size,
+                        Module *module) {
+  ByteBuffer symbols(symtab_section, symtab_size);
+  // Ensure that the string section is null-terminated.
+  if (string_section[string_size - 1] != '\0') {
+    const void* null_terminator = memrchr(string_section, '\0', string_size);
+    string_size = reinterpret_cast<const uint8_t*>(null_terminator)
+      - string_section;
+  }
+  ByteBuffer strings(string_section, string_size);
+
+  // The iterator walking the symbol table.
+  ELFSymbolIterator iterator(&symbols, big_endian, value_size);
+
+  while(!iterator->at_end) {
+    if (ELF32_ST_TYPE(iterator->info) == STT_FUNC &&
+        iterator->shndx != SHN_UNDEF) {
+      Module::Extern *ext = new Module::Extern(iterator->value);
+      ext->name = SymbolString(iterator->name_offset, strings);
+#if !defined(__ANDROID__)  // Android NDK doesn't provide abi::__cxa_demangle.
+      int status = 0;
+      char* demangled =
+          abi::__cxa_demangle(ext->name.c_str(), NULL, NULL, &status);
+      if (demangled) {
+        if (status == 0)
+          ext->name = demangled;
+        free(demangled);
+      }
+#endif
+      module->AddExtern(ext);
+    }
+    ++iterator;
+  }
+  return true;
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/common/linux/elf_symbols_to_module.h b/google-breakpad/src/common/linux/elf_symbols_to_module.h
new file mode 100644
index 0000000..2e7c097
--- /dev/null
+++ b/google-breakpad/src/common/linux/elf_symbols_to_module.h
@@ -0,0 +1,58 @@
+// -*- mode: c++ -*-
+
+// Copyright (c) 2011 Google Inc. All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Ted Mielczarek <ted.mielczarek@gmail.com>
+
+// elf_symbols_to_module.h: Exposes ELFSymbolsToModule, a function
+// for reading ELF symbol tables and inserting exported symbol names
+// into a google_breakpad::Module as Extern definitions.
+
+#ifndef BREAKPAD_COMMON_LINUX_ELF_SYMBOLS_TO_MODULE_H_
+#define BREAKPAD_COMMON_LINUX_ELF_SYMBOLS_TO_MODULE_H_
+
+#include <stddef.h>
+#include <stdint.h>
+
+namespace google_breakpad {
+
+class Module;
+
+bool ELFSymbolsToModule(const uint8_t *symtab_section,
+                        size_t symtab_size,
+                        const uint8_t *string_section,
+                        size_t string_size,
+                        const bool big_endian,
+                        size_t value_size,
+                        Module *module);
+
+}  // namespace google_breakpad
+
+
+#endif  // BREAKPAD_COMMON_LINUX_ELF_SYMBOLS_TO_MODULE_H_
diff --git a/google-breakpad/src/common/linux/elf_symbols_to_module_unittest.cc b/google-breakpad/src/common/linux/elf_symbols_to_module_unittest.cc
new file mode 100644
index 0000000..8984449
--- /dev/null
+++ b/google-breakpad/src/common/linux/elf_symbols_to_module_unittest.cc
@@ -0,0 +1,370 @@
+// Copyright (c) 2011 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Ted Mielczarek <ted.mielczarek@gmail.com>
+
+// elf_symbols_to_module_unittest.cc:
+// Unittests for google_breakpad::ELFSymbolsToModule
+
+#include <elf.h>
+
+#include <string>
+#include <vector>
+
+#include "breakpad_googletest_includes.h"
+#include "common/linux/elf_symbols_to_module.h"
+#include "common/linux/synth_elf.h"
+#include "common/module.h"
+#include "common/test_assembler.h"
+#include "common/using_std_string.h"
+
+using google_breakpad::Module;
+using google_breakpad::synth_elf::StringTable;
+using google_breakpad::test_assembler::Endianness;
+using google_breakpad::test_assembler::kBigEndian;
+using google_breakpad::test_assembler::kLittleEndian;
+using google_breakpad::test_assembler::Label;
+using google_breakpad::test_assembler::Section;
+using ::testing::Test;
+using ::testing::TestWithParam;
+using std::vector;
+
+class ELFSymbolsToModuleTestFixture {
+public:
+  ELFSymbolsToModuleTestFixture(Endianness endianness,
+                                size_t value_size) : module("a", "b", "c", "d"),
+                                                     section(endianness),
+                                                     table(endianness),
+                                                     value_size(value_size) {}
+
+  bool ProcessSection() {
+    string section_contents, table_contents;
+    section.GetContents(&section_contents);
+    table.GetContents(&table_contents);
+
+    bool ret = ELFSymbolsToModule(reinterpret_cast<const uint8_t*>(section_contents.data()),
+                                  section_contents.size(),
+                                  reinterpret_cast<const uint8_t*>(table_contents.data()),
+                                  table_contents.size(),
+                                  section.endianness() == kBigEndian,
+                                  value_size,
+                                  &module);
+    module.GetExterns(&externs, externs.end());
+    return ret;
+  }
+
+  Module module;
+  Section section;
+  StringTable table;
+  string section_contents;
+  // 4 or 8 (bytes)
+  size_t value_size;
+
+  vector<Module::Extern *> externs;
+};
+
+class ELFSymbolsToModuleTest32 : public ELFSymbolsToModuleTestFixture,
+                                   public TestWithParam<Endianness>  {
+public:
+  ELFSymbolsToModuleTest32() : ELFSymbolsToModuleTestFixture(GetParam(), 4) {}
+
+  void AddElf32Sym(const string& name, uint32_t value,
+                   uint32_t size, unsigned info, uint16_t shndx) {
+    section
+      .D32(table.Add(name))
+      .D32(value)
+      .D32(size)
+      .D8(info)
+      .D8(0) // other
+      .D16(shndx);
+  }
+};
+
+TEST_P(ELFSymbolsToModuleTest32, NoFuncs) {
+  ProcessSection();
+
+  ASSERT_EQ((size_t)0, externs.size());
+}
+
+TEST_P(ELFSymbolsToModuleTest32, OneFunc) {
+  const string kFuncName = "superfunc";
+  const uint32_t kFuncAddr = 0x1000;
+  const uint32_t kFuncSize = 0x10;
+
+  AddElf32Sym(kFuncName, kFuncAddr, kFuncSize,
+              ELF32_ST_INFO(STB_GLOBAL, STT_FUNC),
+              // Doesn't really matter, just can't be SHN_UNDEF.
+              SHN_UNDEF + 1);
+
+  ProcessSection();
+
+  ASSERT_EQ((size_t)1, externs.size());
+  Module::Extern *extern1 = externs[0];
+  EXPECT_EQ(kFuncName, extern1->name);
+  EXPECT_EQ((Module::Address)kFuncAddr, extern1->address);
+}
+
+TEST_P(ELFSymbolsToModuleTest32, NameOutOfBounds) {
+  const string kFuncName = "";
+  const uint32_t kFuncAddr = 0x1000;
+  const uint32_t kFuncSize = 0x10;
+
+  table.Add("Foo");
+  table.Add("Bar");
+  // Can't use AddElf32Sym because it puts in a valid string offset.
+  section
+    .D32((uint32_t)table.Here().Value() + 1)
+    .D32(kFuncAddr)
+    .D32(kFuncSize)
+    .D8(ELF32_ST_INFO(STB_GLOBAL, STT_FUNC))
+    .D8(0) // other
+    .D16(SHN_UNDEF + 1);
+
+  ProcessSection();
+
+  ASSERT_EQ((size_t)1, externs.size());
+  Module::Extern *extern1 = externs[0];
+  EXPECT_EQ(kFuncName, extern1->name);
+  EXPECT_EQ((Module::Address)kFuncAddr, extern1->address);
+}
+
+TEST_P(ELFSymbolsToModuleTest32, NonTerminatedStringTable) {
+  const string kFuncName = "";
+  const uint32_t kFuncAddr = 0x1000;
+  const uint32_t kFuncSize = 0x10;
+
+  table.Add("Foo");
+  table.Add("Bar");
+  // Add a non-null-terminated string to the end of the string table
+  Label l;
+  table
+    .Mark(&l)
+    .Append("Unterminated");
+  // Can't use AddElf32Sym because it puts in a valid string offset.
+  section
+    .D32((uint32_t)l.Value())
+    .D32(kFuncAddr)
+    .D32(kFuncSize)
+    .D8(ELF32_ST_INFO(STB_GLOBAL, STT_FUNC))
+    .D8(0) // other
+    .D16(SHN_UNDEF + 1);
+
+  ProcessSection();
+
+  ASSERT_EQ((size_t)1, externs.size());
+  Module::Extern *extern1 = externs[0];
+  EXPECT_EQ(kFuncName, extern1->name);
+  EXPECT_EQ((Module::Address)kFuncAddr, extern1->address);
+}
+
+TEST_P(ELFSymbolsToModuleTest32, MultipleFuncs) {
+  const string kFuncName1 = "superfunc";
+  const uint32_t kFuncAddr1 = 0x10001000;
+  const uint32_t kFuncSize1 = 0x10;
+  const string kFuncName2 = "awesomefunc";
+  const uint32_t kFuncAddr2 = 0x20002000;
+  const uint32_t kFuncSize2 = 0x2f;
+  const string kFuncName3 = "megafunc";
+  const uint32_t kFuncAddr3 = 0x30003000;
+  const uint32_t kFuncSize3 = 0x3c;
+
+  AddElf32Sym(kFuncName1, kFuncAddr1, kFuncSize1,
+              ELF32_ST_INFO(STB_GLOBAL, STT_FUNC),
+              // Doesn't really matter, just can't be SHN_UNDEF.
+              SHN_UNDEF + 1);
+  AddElf32Sym(kFuncName2, kFuncAddr2, kFuncSize2,
+              ELF32_ST_INFO(STB_LOCAL, STT_FUNC),
+              // Doesn't really matter, just can't be SHN_UNDEF.
+              SHN_UNDEF + 2);
+  AddElf32Sym(kFuncName3, kFuncAddr3, kFuncSize3,
+              ELF32_ST_INFO(STB_LOCAL, STT_FUNC),
+              // Doesn't really matter, just can't be SHN_UNDEF.
+              SHN_UNDEF + 3);
+
+  ProcessSection();
+
+  ASSERT_EQ((size_t)3, externs.size());
+  Module::Extern *extern1 = externs[0];
+  EXPECT_EQ(kFuncName1, extern1->name);
+  EXPECT_EQ((Module::Address)kFuncAddr1, extern1->address);
+  Module::Extern *extern2 = externs[1];
+  EXPECT_EQ(kFuncName2, extern2->name);
+  EXPECT_EQ((Module::Address)kFuncAddr2, extern2->address);
+  Module::Extern *extern3 = externs[2];
+  EXPECT_EQ(kFuncName3, extern3->name);
+  EXPECT_EQ((Module::Address)kFuncAddr3, extern3->address);
+}
+
+TEST_P(ELFSymbolsToModuleTest32, SkipStuff) {
+  const string kFuncName = "superfunc";
+  const uint32_t kFuncAddr = 0x1000;
+  const uint32_t kFuncSize = 0x10;
+
+  // Should skip functions in SHN_UNDEF
+  AddElf32Sym("skipme", 0xFFFF, 0x10,
+              ELF32_ST_INFO(STB_GLOBAL, STT_FUNC),
+              SHN_UNDEF);
+  AddElf32Sym(kFuncName, kFuncAddr, kFuncSize,
+              ELF32_ST_INFO(STB_GLOBAL, STT_FUNC),
+              // Doesn't really matter, just can't be SHN_UNDEF.
+              SHN_UNDEF + 1);
+  // Should skip non-STT_FUNC entries.
+  AddElf32Sym("skipmetoo", 0xAAAA, 0x10,
+              ELF32_ST_INFO(STB_GLOBAL, STT_FILE),
+              SHN_UNDEF + 1);
+
+  ProcessSection();
+
+  ASSERT_EQ((size_t)1, externs.size());
+  Module::Extern *extern1 = externs[0];
+  EXPECT_EQ(kFuncName, extern1->name);
+  EXPECT_EQ((Module::Address)kFuncAddr, extern1->address);
+}
+
+// Run all the 32-bit tests with both endianness
+INSTANTIATE_TEST_CASE_P(Endian,
+                        ELFSymbolsToModuleTest32,
+                        ::testing::Values(kLittleEndian, kBigEndian));
+
+// Similar tests, but with 64-bit values. Ostensibly this could be
+// shoehorned into the parameterization by using ::testing::Combine,
+// but that would make it difficult to get the types right since these
+// actual test cases aren't parameterized. This could also be written
+// as a type-parameterized test, but combining that with a value-parameterized
+// test seemed really ugly, and also makes it harder to test 64-bit
+// values.
+class ELFSymbolsToModuleTest64 : public ELFSymbolsToModuleTestFixture,
+                                 public TestWithParam<Endianness>  {
+public:
+  ELFSymbolsToModuleTest64() : ELFSymbolsToModuleTestFixture(GetParam(), 8) {}
+
+  void AddElf64Sym(const string& name, uint64_t value,
+                   uint64_t size, unsigned info, uint16_t shndx) {
+    section
+      .D32(table.Add(name))
+      .D8(info)
+      .D8(0) // other
+      .D16(shndx)
+      .D64(value)
+      .D64(size);
+  }
+};
+
+TEST_P(ELFSymbolsToModuleTest64, NoFuncs) {
+  ProcessSection();
+
+  ASSERT_EQ((size_t)0, externs.size());
+}
+
+TEST_P(ELFSymbolsToModuleTest64, OneFunc) {
+  const string kFuncName = "superfunc";
+  const uint64_t kFuncAddr = 0x1000200030004000ULL;
+  const uint64_t kFuncSize = 0x1000;
+
+  AddElf64Sym(kFuncName, kFuncAddr, kFuncSize,
+              ELF64_ST_INFO(STB_GLOBAL, STT_FUNC),
+              // Doesn't really matter, just can't be SHN_UNDEF.
+              SHN_UNDEF + 1);
+
+  ProcessSection();
+
+  ASSERT_EQ((size_t)1, externs.size());
+  Module::Extern *extern1 = externs[0];
+  EXPECT_EQ(kFuncName, extern1->name);
+  EXPECT_EQ((Module::Address)kFuncAddr, extern1->address);
+}
+
+TEST_P(ELFSymbolsToModuleTest64, MultipleFuncs) {
+  const string kFuncName1 = "superfunc";
+  const uint64_t kFuncAddr1 = 0x1000100010001000ULL;
+  const uint64_t kFuncSize1 = 0x1000;
+  const string kFuncName2 = "awesomefunc";
+  const uint64_t kFuncAddr2 = 0x2000200020002000ULL;
+  const uint64_t kFuncSize2 = 0x2f00;
+  const string kFuncName3 = "megafunc";
+  const uint64_t kFuncAddr3 = 0x3000300030003000ULL;
+  const uint64_t kFuncSize3 = 0x3c00;
+
+  AddElf64Sym(kFuncName1, kFuncAddr1, kFuncSize1,
+              ELF64_ST_INFO(STB_GLOBAL, STT_FUNC),
+              // Doesn't really matter, just can't be SHN_UNDEF.
+              SHN_UNDEF + 1);
+  AddElf64Sym(kFuncName2, kFuncAddr2, kFuncSize2,
+              ELF64_ST_INFO(STB_LOCAL, STT_FUNC),
+              // Doesn't really matter, just can't be SHN_UNDEF.
+              SHN_UNDEF + 2);
+  AddElf64Sym(kFuncName3, kFuncAddr3, kFuncSize3,
+              ELF64_ST_INFO(STB_LOCAL, STT_FUNC),
+              // Doesn't really matter, just can't be SHN_UNDEF.
+              SHN_UNDEF + 3);
+
+  ProcessSection();
+
+  ASSERT_EQ((size_t)3, externs.size());
+  Module::Extern *extern1 = externs[0];
+  EXPECT_EQ(kFuncName1, extern1->name);
+  EXPECT_EQ((Module::Address)kFuncAddr1, extern1->address);
+  Module::Extern *extern2 = externs[1];
+  EXPECT_EQ(kFuncName2, extern2->name);
+  EXPECT_EQ((Module::Address)kFuncAddr2, extern2->address);
+  Module::Extern *extern3 = externs[2];
+  EXPECT_EQ(kFuncName3, extern3->name);
+  EXPECT_EQ((Module::Address)kFuncAddr3, extern3->address);
+}
+
+TEST_P(ELFSymbolsToModuleTest64, SkipStuff) {
+  const string kFuncName = "superfunc";
+  const uint64_t kFuncAddr = 0x1000100010001000ULL;
+  const uint64_t kFuncSize = 0x1000;
+
+  // Should skip functions in SHN_UNDEF
+  AddElf64Sym("skipme", 0xFFFF, 0x10,
+              ELF64_ST_INFO(STB_GLOBAL, STT_FUNC),
+              SHN_UNDEF);
+  AddElf64Sym(kFuncName, kFuncAddr, kFuncSize,
+              ELF64_ST_INFO(STB_GLOBAL, STT_FUNC),
+              // Doesn't really matter, just can't be SHN_UNDEF.
+              SHN_UNDEF + 1);
+  // Should skip non-STT_FUNC entries.
+  AddElf64Sym("skipmetoo", 0xAAAA, 0x10,
+              ELF64_ST_INFO(STB_GLOBAL, STT_FILE),
+              SHN_UNDEF + 1);
+
+  ProcessSection();
+
+  ASSERT_EQ((size_t)1, externs.size());
+  Module::Extern *extern1 = externs[0];
+  EXPECT_EQ(kFuncName, extern1->name);
+  EXPECT_EQ((Module::Address)kFuncAddr, extern1->address);
+}
+
+// Run all the 64-bit tests with both endianness
+INSTANTIATE_TEST_CASE_P(Endian,
+                        ELFSymbolsToModuleTest64,
+                        ::testing::Values(kLittleEndian, kBigEndian));
diff --git a/google-breakpad/src/common/linux/elfutils-inl.h b/google-breakpad/src/common/linux/elfutils-inl.h
new file mode 100644
index 0000000..e56b37a
--- /dev/null
+++ b/google-breakpad/src/common/linux/elfutils-inl.h
@@ -0,0 +1,74 @@
+// Copyright (c) 2012, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef COMMON_LINUX_ELFUTILS_INL_H__
+#define COMMON_LINUX_ELFUTILS_INL_H__
+
+#include "common/linux/linux_libc_support.h"
+#include "elfutils.h"
+
+namespace google_breakpad {
+
+template<typename ElfClass, typename T>
+const T* GetOffset(const typename ElfClass::Ehdr* elf_header,
+                   typename ElfClass::Off offset) {
+  return reinterpret_cast<const T*>(reinterpret_cast<uintptr_t>(elf_header) +
+                                    offset);
+}
+
+template<typename ElfClass>
+const typename ElfClass::Shdr* FindElfSectionByName(
+    const char* name,
+    typename ElfClass::Word section_type,
+    const typename ElfClass::Shdr* sections,
+    const char* section_names,
+    const char* names_end,
+    int nsection) {
+  assert(name != NULL);
+  assert(sections != NULL);
+  assert(nsection > 0);
+
+  int name_len = my_strlen(name);
+  if (name_len == 0)
+    return NULL;
+
+  for (int i = 0; i < nsection; ++i) {
+    const char* section_name = section_names + sections[i].sh_name;
+    if (sections[i].sh_type == section_type &&
+        names_end - section_name >= name_len + 1 &&
+        my_strcmp(name, section_name) == 0) {
+      return sections + i;
+    }
+  }
+  return NULL;
+}
+
+}  // namespace google_breakpad
+
+#endif  // COMMON_LINUX_ELFUTILS_INL_H__
diff --git a/google-breakpad/src/common/linux/elfutils.cc b/google-breakpad/src/common/linux/elfutils.cc
new file mode 100644
index 0000000..a79391c
--- /dev/null
+++ b/google-breakpad/src/common/linux/elfutils.cc
@@ -0,0 +1,194 @@
+// Copyright (c) 2012, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include "common/linux/elfutils.h"
+
+#include <assert.h>
+#include <string.h>
+
+#include "common/linux/linux_libc_support.h"
+#include "common/linux/elfutils-inl.h"
+
+namespace google_breakpad {
+
+namespace {
+
+template<typename ElfClass>
+void FindElfClassSection(const char *elf_base,
+                         const char *section_name,
+                         typename ElfClass::Word section_type,
+                         const void **section_start,
+                         size_t *section_size) {
+  typedef typename ElfClass::Ehdr Ehdr;
+  typedef typename ElfClass::Shdr Shdr;
+
+  assert(elf_base);
+  assert(section_start);
+  assert(section_size);
+
+  assert(my_strncmp(elf_base, ELFMAG, SELFMAG) == 0);
+
+  const Ehdr* elf_header = reinterpret_cast<const Ehdr*>(elf_base);
+  assert(elf_header->e_ident[EI_CLASS] == ElfClass::kClass);
+
+  const Shdr* sections =
+    GetOffset<ElfClass, Shdr>(elf_header, elf_header->e_shoff);
+  const Shdr* section_names = sections + elf_header->e_shstrndx;
+  const char* names =
+    GetOffset<ElfClass, char>(elf_header, section_names->sh_offset);
+  const char *names_end = names + section_names->sh_size;
+
+  const Shdr* section =
+    FindElfSectionByName<ElfClass>(section_name, section_type,
+                                   sections, names, names_end,
+                                   elf_header->e_shnum);
+
+  if (section != NULL && section->sh_size > 0) {
+    *section_start = elf_base + section->sh_offset;
+    *section_size = section->sh_size;
+  }
+}
+
+template<typename ElfClass>
+void FindElfClassSegment(const char *elf_base,
+                         typename ElfClass::Word segment_type,
+                         const void **segment_start,
+                         size_t *segment_size) {
+  typedef typename ElfClass::Ehdr Ehdr;
+  typedef typename ElfClass::Phdr Phdr;
+
+  assert(elf_base);
+  assert(segment_start);
+  assert(segment_size);
+
+  assert(my_strncmp(elf_base, ELFMAG, SELFMAG) == 0);
+
+  const Ehdr* elf_header = reinterpret_cast<const Ehdr*>(elf_base);
+  assert(elf_header->e_ident[EI_CLASS] == ElfClass::kClass);
+
+  const Phdr* phdrs =
+    GetOffset<ElfClass, Phdr>(elf_header, elf_header->e_phoff);
+
+  for (int i = 0; i < elf_header->e_phnum; ++i) {
+    if (phdrs[i].p_type == segment_type) {
+      *segment_start = elf_base + phdrs[i].p_offset;
+      *segment_size = phdrs[i].p_filesz;
+      return;
+    }
+  }
+}
+
+}  // namespace
+
+bool IsValidElf(const void* elf_base) {
+  return my_strncmp(reinterpret_cast<const char*>(elf_base),
+                    ELFMAG, SELFMAG) == 0;
+}
+
+int ElfClass(const void* elf_base) {
+  const ElfW(Ehdr)* elf_header =
+    reinterpret_cast<const ElfW(Ehdr)*>(elf_base);
+
+  return elf_header->e_ident[EI_CLASS];
+}
+
+bool FindElfSection(const void *elf_mapped_base,
+                    const char *section_name,
+                    uint32_t section_type,
+                    const void **section_start,
+                    size_t *section_size,
+                    int *elfclass) {
+  assert(elf_mapped_base);
+  assert(section_start);
+  assert(section_size);
+
+  *section_start = NULL;
+  *section_size = 0;
+
+  if (!IsValidElf(elf_mapped_base))
+    return false;
+
+  int cls = ElfClass(elf_mapped_base);
+  if (elfclass) {
+    *elfclass = cls;
+  }
+
+  const char* elf_base =
+    static_cast<const char*>(elf_mapped_base);
+
+  if (cls == ELFCLASS32) {
+    FindElfClassSection<ElfClass32>(elf_base, section_name, section_type,
+                                    section_start, section_size);
+    return *section_start != NULL;
+  } else if (cls == ELFCLASS64) {
+    FindElfClassSection<ElfClass64>(elf_base, section_name, section_type,
+                                    section_start, section_size);
+    return *section_start != NULL;
+  }
+
+  return false;
+}
+
+bool FindElfSegment(const void *elf_mapped_base,
+                    uint32_t segment_type,
+                    const void **segment_start,
+                    size_t *segment_size,
+                    int *elfclass) {
+  assert(elf_mapped_base);
+  assert(segment_start);
+  assert(segment_size);
+
+  *segment_start = NULL;
+  *segment_size = 0;
+
+  if (!IsValidElf(elf_mapped_base))
+    return false;
+
+  int cls = ElfClass(elf_mapped_base);
+  if (elfclass) {
+    *elfclass = cls;
+  }
+
+  const char* elf_base =
+    static_cast<const char*>(elf_mapped_base);
+
+  if (cls == ELFCLASS32) {
+    FindElfClassSegment<ElfClass32>(elf_base, segment_type,
+                                    segment_start, segment_size);
+    return *segment_start != NULL;
+  } else if (cls == ELFCLASS64) {
+    FindElfClassSegment<ElfClass64>(elf_base, segment_type,
+                                    segment_start, segment_size);
+    return *segment_start != NULL;
+  }
+
+  return false;
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/common/linux/elfutils.h b/google-breakpad/src/common/linux/elfutils.h
new file mode 100644
index 0000000..dccdc23
--- /dev/null
+++ b/google-breakpad/src/common/linux/elfutils.h
@@ -0,0 +1,118 @@
+// Copyright (c) 2012, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// elfutils.h: Utilities for dealing with ELF files.
+//
+
+#ifndef COMMON_LINUX_ELFUTILS_H_
+#define COMMON_LINUX_ELFUTILS_H_
+
+#include <elf.h>
+#include <link.h>
+#include <stdint.h>
+
+namespace google_breakpad {
+
+// Traits classes so consumers can write templatized code to deal
+// with specific ELF bits.
+struct ElfClass32 {
+  typedef Elf32_Addr Addr;
+  typedef Elf32_Ehdr Ehdr;
+  typedef Elf32_Nhdr Nhdr;
+  typedef Elf32_Phdr Phdr;
+  typedef Elf32_Shdr Shdr;
+  typedef Elf32_Half Half;
+  typedef Elf32_Off Off;
+  typedef Elf32_Word Word;
+  static const int kClass = ELFCLASS32;
+  static const size_t kAddrSize = sizeof(Elf32_Addr);
+};
+
+struct ElfClass64 {
+  typedef Elf64_Addr Addr;
+  typedef Elf64_Ehdr Ehdr;
+  typedef Elf64_Nhdr Nhdr;
+  typedef Elf64_Phdr Phdr;
+  typedef Elf64_Shdr Shdr;
+  typedef Elf64_Half Half;
+  typedef Elf64_Off Off;
+  typedef Elf64_Word Word;
+  static const int kClass = ELFCLASS64;
+  static const size_t kAddrSize = sizeof(Elf64_Addr);
+};
+
+bool IsValidElf(const void* elf_header);
+int ElfClass(const void* elf_base);
+
+// Attempt to find a section named |section_name| of type |section_type|
+// in the ELF binary data at |elf_mapped_base|. On success, returns true
+// and sets |*section_start| to point to the start of the section data,
+// and |*section_size| to the size of the section's data. If |elfclass|
+// is not NULL, set |*elfclass| to the ELF file class.
+bool FindElfSection(const void *elf_mapped_base,
+                    const char *section_name,
+                    uint32_t section_type,
+                    const void **section_start,
+                    size_t *section_size,
+                    int *elfclass);
+
+// Internal helper method, exposed for convenience for callers
+// that already have more info.
+template<typename ElfClass>
+const typename ElfClass::Shdr*
+FindElfSectionByName(const char* name,
+                     typename ElfClass::Word section_type,
+                     const typename ElfClass::Shdr* sections,
+                     const char* section_names,
+                     const char* names_end,
+                     int nsection);
+
+// Attempt to find the first segment of type |segment_type| in the ELF
+// binary data at |elf_mapped_base|. On success, returns true and sets
+// |*segment_start| to point to the start of the segment data, and
+// and |*segment_size| to the size of the segment's data. If |elfclass|
+// is not NULL, set |*elfclass| to the ELF file class.
+bool FindElfSegment(const void *elf_mapped_base,
+                    uint32_t segment_type,
+                    const void **segment_start,
+                    size_t *segment_size,
+                    int *elfclass);
+
+// Convert an offset from an Elf header into a pointer to the mapped
+// address in the current process. Takes an extra template parameter
+// to specify the return type to avoid having to dynamic_cast the
+// result.
+template<typename ElfClass, typename T>
+const T*
+GetOffset(const typename ElfClass::Ehdr* elf_header,
+          typename ElfClass::Off offset);
+
+}  // namespace google_breakpad
+
+#endif  // COMMON_LINUX_ELFUTILS_H_
diff --git a/google-breakpad/src/common/linux/file_id.cc b/google-breakpad/src/common/linux/file_id.cc
new file mode 100644
index 0000000..00b3731
--- /dev/null
+++ b/google-breakpad/src/common/linux/file_id.cc
@@ -0,0 +1,191 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// file_id.cc: Return a unique identifier for a file
+//
+// See file_id.h for documentation
+//
+
+#include "common/linux/file_id.h"
+
+#include <arpa/inet.h>
+#include <assert.h>
+#include <string.h>
+
+#include <algorithm>
+
+#include "common/linux/elf_gnu_compat.h"
+#include "common/linux/elfutils.h"
+#include "common/linux/linux_libc_support.h"
+#include "common/linux/memory_mapped_file.h"
+#include "third_party/lss/linux_syscall_support.h"
+
+namespace google_breakpad {
+
+FileID::FileID(const char* path) : path_(path) {}
+
+// ELF note name and desc are 32-bits word padded.
+#define NOTE_PADDING(a) ((a + 3) & ~3)
+
+// These functions are also used inside the crashed process, so be safe
+// and use the syscall/libc wrappers instead of direct syscalls or libc.
+
+template<typename ElfClass>
+static bool ElfClassBuildIDNoteIdentifier(const void *section, size_t length,
+                                          uint8_t identifier[kMDGUIDSize]) {
+  typedef typename ElfClass::Nhdr Nhdr;
+
+  const void* section_end = reinterpret_cast<const char*>(section) + length;
+  const Nhdr* note_header = reinterpret_cast<const Nhdr*>(section);
+  while (reinterpret_cast<const void *>(note_header) < section_end) {
+    if (note_header->n_type == NT_GNU_BUILD_ID)
+      break;
+    note_header = reinterpret_cast<const Nhdr*>(
+                  reinterpret_cast<const char*>(note_header) + sizeof(Nhdr) +
+                  NOTE_PADDING(note_header->n_namesz) +
+                  NOTE_PADDING(note_header->n_descsz));
+  }
+  if (reinterpret_cast<const void *>(note_header) >= section_end ||
+      note_header->n_descsz == 0) {
+    return false;
+  }
+
+  const char* build_id = reinterpret_cast<const char*>(note_header) +
+    sizeof(Nhdr) + NOTE_PADDING(note_header->n_namesz);
+  // Copy as many bits of the build ID as will fit
+  // into the GUID space.
+  my_memset(identifier, 0, kMDGUIDSize);
+  memcpy(identifier, build_id,
+         std::min(kMDGUIDSize, (size_t)note_header->n_descsz));
+
+  return true;
+}
+
+// Attempt to locate a .note.gnu.build-id section in an ELF binary
+// and copy as many bytes of it as will fit into |identifier|.
+static bool FindElfBuildIDNote(const void *elf_mapped_base,
+                               uint8_t identifier[kMDGUIDSize]) {
+  void* note_section;
+  size_t note_size;
+  int elfclass;
+  if ((!FindElfSegment(elf_mapped_base, PT_NOTE,
+                       (const void**)&note_section, &note_size, &elfclass) ||
+      note_size == 0)  &&
+      (!FindElfSection(elf_mapped_base, ".note.gnu.build-id", SHT_NOTE,
+                       (const void**)&note_section, &note_size, &elfclass) ||
+      note_size == 0)) {
+    return false;
+  }
+
+  if (elfclass == ELFCLASS32) {
+    return ElfClassBuildIDNoteIdentifier<ElfClass32>(note_section, note_size,
+                                                     identifier);
+  } else if (elfclass == ELFCLASS64) {
+    return ElfClassBuildIDNoteIdentifier<ElfClass64>(note_section, note_size,
+                                                     identifier);
+  }
+
+  return false;
+}
+
+// Attempt to locate the .text section of an ELF binary and generate
+// a simple hash by XORing the first page worth of bytes into |identifier|.
+static bool HashElfTextSection(const void *elf_mapped_base,
+                               uint8_t identifier[kMDGUIDSize]) {
+  void* text_section;
+  size_t text_size;
+  if (!FindElfSection(elf_mapped_base, ".text", SHT_PROGBITS,
+                      (const void**)&text_section, &text_size, NULL) ||
+      text_size == 0) {
+    return false;
+  }
+
+  my_memset(identifier, 0, kMDGUIDSize);
+  const uint8_t* ptr = reinterpret_cast<const uint8_t*>(text_section);
+  const uint8_t* ptr_end = ptr + std::min(text_size, static_cast<size_t>(4096));
+  while (ptr < ptr_end) {
+    for (unsigned i = 0; i < kMDGUIDSize; i++)
+      identifier[i] ^= ptr[i];
+    ptr += kMDGUIDSize;
+  }
+  return true;
+}
+
+// static
+bool FileID::ElfFileIdentifierFromMappedFile(const void* base,
+                                             uint8_t identifier[kMDGUIDSize]) {
+  // Look for a build id note first.
+  if (FindElfBuildIDNote(base, identifier))
+    return true;
+
+  // Fall back on hashing the first page of the text section.
+  return HashElfTextSection(base, identifier);
+}
+
+bool FileID::ElfFileIdentifier(uint8_t identifier[kMDGUIDSize]) {
+  MemoryMappedFile mapped_file(path_.c_str(), 0);
+  if (!mapped_file.data())  // Should probably check if size >= ElfW(Ehdr)?
+    return false;
+
+  return ElfFileIdentifierFromMappedFile(mapped_file.data(), identifier);
+}
+
+// static
+void FileID::ConvertIdentifierToString(const uint8_t identifier[kMDGUIDSize],
+                                       char* buffer, int buffer_length) {
+  uint8_t identifier_swapped[kMDGUIDSize];
+
+  // Endian-ness swap to match dump processor expectation.
+  memcpy(identifier_swapped, identifier, kMDGUIDSize);
+  uint32_t* data1 = reinterpret_cast<uint32_t*>(identifier_swapped);
+  *data1 = htonl(*data1);
+  uint16_t* data2 = reinterpret_cast<uint16_t*>(identifier_swapped + 4);
+  *data2 = htons(*data2);
+  uint16_t* data3 = reinterpret_cast<uint16_t*>(identifier_swapped + 6);
+  *data3 = htons(*data3);
+
+  int buffer_idx = 0;
+  for (unsigned int idx = 0;
+       (buffer_idx < buffer_length) && (idx < kMDGUIDSize);
+       ++idx) {
+    int hi = (identifier_swapped[idx] >> 4) & 0x0F;
+    int lo = (identifier_swapped[idx]) & 0x0F;
+
+    if (idx == 4 || idx == 6 || idx == 8 || idx == 10)
+      buffer[buffer_idx++] = '-';
+
+    buffer[buffer_idx++] = (hi >= 10) ? 'A' + hi - 10 : '0' + hi;
+    buffer[buffer_idx++] = (lo >= 10) ? 'A' + lo - 10 : '0' + lo;
+  }
+
+  // NULL terminate
+  buffer[(buffer_idx < buffer_length) ? buffer_idx : buffer_idx - 1] = 0;
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/common/linux/file_id.h b/google-breakpad/src/common/linux/file_id.h
new file mode 100644
index 0000000..2642722
--- /dev/null
+++ b/google-breakpad/src/common/linux/file_id.h
@@ -0,0 +1,78 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// file_id.h: Return a unique identifier for a file
+//
+
+#ifndef COMMON_LINUX_FILE_ID_H__
+#define COMMON_LINUX_FILE_ID_H__
+
+#include <limits.h>
+#include <string>
+
+#include "common/linux/guid_creator.h"
+
+namespace google_breakpad {
+
+static const size_t kMDGUIDSize = sizeof(MDGUID);
+
+class FileID {
+ public:
+  explicit FileID(const char* path);
+  ~FileID() {}
+
+  // Load the identifier for the elf file path specified in the constructor into
+  // |identifier|.  Return false if the identifier could not be created for the
+  // file.
+  // The current implementation will look for a .note.gnu.build-id
+  // section and use that as the file id, otherwise it falls back to
+  // XORing the first 4096 bytes of the .text section to generate an identifier.
+  bool ElfFileIdentifier(uint8_t identifier[kMDGUIDSize]);
+
+  // Load the identifier for the elf file mapped into memory at |base| into
+  // |identifier|.  Return false if the identifier could not be created for the
+  // file.
+  static bool ElfFileIdentifierFromMappedFile(const void* base,
+                                              uint8_t identifier[kMDGUIDSize]);
+
+  // Convert the |identifier| data to a NULL terminated string.  The string will
+  // be formatted as a UUID (e.g., 22F065BB-FC9C-49F7-80FE-26A7CEBD7BCE).
+  // The |buffer| should be at least 37 bytes long to receive all of the data
+  // and termination.  Shorter buffers will contain truncated data.
+  static void ConvertIdentifierToString(const uint8_t identifier[kMDGUIDSize],
+                                        char* buffer, int buffer_length);
+
+ private:
+  // Storage for the path specified
+  std::string path_;
+};
+
+}  // namespace google_breakpad
+
+#endif  // COMMON_LINUX_FILE_ID_H__
diff --git a/google-breakpad/src/common/linux/file_id_unittest.cc b/google-breakpad/src/common/linux/file_id_unittest.cc
new file mode 100644
index 0000000..760eae8
--- /dev/null
+++ b/google-breakpad/src/common/linux/file_id_unittest.cc
@@ -0,0 +1,263 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Unit tests for FileID
+
+#include <elf.h>
+#include <stdlib.h>
+
+#include <string>
+
+#include "common/linux/elf_gnu_compat.h"
+#include "common/linux/elfutils.h"
+#include "common/linux/file_id.h"
+#include "common/linux/safe_readlink.h"
+#include "common/linux/synth_elf.h"
+#include "common/test_assembler.h"
+#include "common/tests/auto_tempdir.h"
+#include "common/using_std_string.h"
+#include "breakpad_googletest_includes.h"
+
+using namespace google_breakpad;
+using google_breakpad::ElfClass32;
+using google_breakpad::ElfClass64;
+using google_breakpad::SafeReadLink;
+using google_breakpad::synth_elf::ELF;
+using google_breakpad::synth_elf::Notes;
+using google_breakpad::test_assembler::kLittleEndian;
+using google_breakpad::test_assembler::Section;
+using ::testing::Types;
+
+namespace {
+
+// Simply calling Section::Append(size, byte) produces a uninteresting pattern
+// that tends to get hashed to 0000...0000. This populates the section with
+// data to produce better hashes.
+void PopulateSection(Section* section, int size, int prime_number) {
+  for (int i = 0; i < size; i++)
+    section->Append(1, (i % prime_number) % 256);
+}
+
+}  // namespace
+
+#ifndef __ANDROID__
+// This test is disabled on Android: It will always fail, since there is no
+// 'strip' binary installed on test devices.
+TEST(FileIDStripTest, StripSelf) {
+  // Calculate the File ID of this binary using
+  // FileID::ElfFileIdentifier, then make a copy of this binary,
+  // strip it, and ensure that the result is the same.
+  char exe_name[PATH_MAX];
+  ASSERT_TRUE(SafeReadLink("/proc/self/exe", exe_name));
+
+  // copy our binary to a temp file, and strip it
+  AutoTempDir temp_dir;
+  string templ = temp_dir.path() + "/file-id-unittest";
+  char cmdline[4096];
+  sprintf(cmdline, "cp \"%s\" \"%s\"", exe_name, templ.c_str());
+  ASSERT_EQ(0, system(cmdline)) << "Failed to execute: " << cmdline;
+  sprintf(cmdline, "chmod u+w \"%s\"", templ.c_str());
+  ASSERT_EQ(0, system(cmdline)) << "Failed to execute: " << cmdline;
+  sprintf(cmdline, "strip \"%s\"", templ.c_str());
+  ASSERT_EQ(0, system(cmdline)) << "Failed to execute: " << cmdline;
+
+  uint8_t identifier1[sizeof(MDGUID)];
+  uint8_t identifier2[sizeof(MDGUID)];
+  FileID fileid1(exe_name);
+  EXPECT_TRUE(fileid1.ElfFileIdentifier(identifier1));
+  FileID fileid2(templ.c_str());
+  EXPECT_TRUE(fileid2.ElfFileIdentifier(identifier2));
+  char identifier_string1[37];
+  char identifier_string2[37];
+  FileID::ConvertIdentifierToString(identifier1, identifier_string1,
+                                    37);
+  FileID::ConvertIdentifierToString(identifier2, identifier_string2,
+                                    37);
+  EXPECT_STREQ(identifier_string1, identifier_string2);
+}
+#endif  // !__ANDROID__
+
+template<typename ElfClass>
+class FileIDTest : public testing::Test {
+public:
+  void GetElfContents(ELF& elf) {
+    string contents;
+    ASSERT_TRUE(elf.GetContents(&contents));
+    ASSERT_LT(0U, contents.size());
+
+    elfdata_v.clear();
+    elfdata_v.insert(elfdata_v.begin(), contents.begin(), contents.end());
+    elfdata = &elfdata_v[0];
+  }
+
+  vector<uint8_t> elfdata_v;
+  uint8_t* elfdata;
+};
+
+typedef Types<ElfClass32, ElfClass64> ElfClasses;
+
+TYPED_TEST_CASE(FileIDTest, ElfClasses);
+
+TYPED_TEST(FileIDTest, ElfClass) {
+  uint8_t identifier[sizeof(MDGUID)];
+  const char expected_identifier_string[] =
+      "80808080-8080-0000-0000-008080808080";
+  char identifier_string[sizeof(expected_identifier_string)];
+  const size_t kTextSectionSize = 128;
+
+  ELF elf(EM_386, TypeParam::kClass, kLittleEndian);
+  Section text(kLittleEndian);
+  for (size_t i = 0; i < kTextSectionSize; ++i) {
+    text.D8(i * 3);
+  }
+  elf.AddSection(".text", text, SHT_PROGBITS);
+  elf.Finish();
+  this->GetElfContents(elf);
+
+  EXPECT_TRUE(FileID::ElfFileIdentifierFromMappedFile(this->elfdata,
+                                                      identifier));
+
+  FileID::ConvertIdentifierToString(identifier, identifier_string,
+                                    sizeof(identifier_string));
+  EXPECT_STREQ(expected_identifier_string, identifier_string);
+}
+
+TYPED_TEST(FileIDTest, BuildID) {
+  const uint8_t kExpectedIdentifier[sizeof(MDGUID)] =
+    {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+     0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F};
+  char expected_identifier_string[] =
+    "00000000-0000-0000-0000-000000000000";
+  FileID::ConvertIdentifierToString(kExpectedIdentifier,
+                                    expected_identifier_string,
+                                    sizeof(expected_identifier_string));
+
+  uint8_t identifier[sizeof(MDGUID)];
+  char identifier_string[sizeof(expected_identifier_string)];
+
+  ELF elf(EM_386, TypeParam::kClass, kLittleEndian);
+  Section text(kLittleEndian);
+  text.Append(4096, 0);
+  elf.AddSection(".text", text, SHT_PROGBITS);
+  Notes notes(kLittleEndian);
+  notes.AddNote(NT_GNU_BUILD_ID, "GNU", kExpectedIdentifier,
+                sizeof(kExpectedIdentifier));
+  elf.AddSection(".note.gnu.build-id", notes, SHT_NOTE);
+  elf.Finish();
+  this->GetElfContents(elf);
+
+  EXPECT_TRUE(FileID::ElfFileIdentifierFromMappedFile(this->elfdata,
+                                                      identifier));
+
+  FileID::ConvertIdentifierToString(identifier, identifier_string,
+                                    sizeof(identifier_string));
+  EXPECT_STREQ(expected_identifier_string, identifier_string);
+}
+
+TYPED_TEST(FileIDTest, BuildIDPH) {
+  const uint8_t kExpectedIdentifier[sizeof(MDGUID)] =
+    {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+     0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F};
+  char expected_identifier_string[] =
+    "00000000-0000-0000-0000-000000000000";
+  FileID::ConvertIdentifierToString(kExpectedIdentifier,
+                                    expected_identifier_string,
+                                    sizeof(expected_identifier_string));
+
+  uint8_t identifier[sizeof(MDGUID)];
+  char identifier_string[sizeof(expected_identifier_string)];
+
+  ELF elf(EM_386, TypeParam::kClass, kLittleEndian);
+  Section text(kLittleEndian);
+  text.Append(4096, 0);
+  elf.AddSection(".text", text, SHT_PROGBITS);
+  Notes notes(kLittleEndian);
+  notes.AddNote(0, "Linux",
+                reinterpret_cast<const uint8_t *>("\0x42\0x02\0\0"), 4);
+  notes.AddNote(NT_GNU_BUILD_ID, "GNU", kExpectedIdentifier,
+                sizeof(kExpectedIdentifier));
+  int note_idx = elf.AddSection(".note", notes, SHT_NOTE);
+  elf.AddSegment(note_idx, note_idx, PT_NOTE);
+  elf.Finish();
+  this->GetElfContents(elf);
+
+  EXPECT_TRUE(FileID::ElfFileIdentifierFromMappedFile(this->elfdata,
+                                                      identifier));
+
+  FileID::ConvertIdentifierToString(identifier, identifier_string,
+                                    sizeof(identifier_string));
+  EXPECT_STREQ(expected_identifier_string, identifier_string);
+}
+
+// Test to make sure two files with different text sections produce
+// different hashes when not using a build id.
+TYPED_TEST(FileIDTest, UniqueHashes) {
+  char identifier_string_1[] =
+    "00000000-0000-0000-0000-000000000000";
+  char identifier_string_2[] =
+    "00000000-0000-0000-0000-000000000000";
+  uint8_t identifier_1[sizeof(MDGUID)];
+  uint8_t identifier_2[sizeof(MDGUID)];
+
+  {
+    ELF elf1(EM_386, TypeParam::kClass, kLittleEndian);
+    Section foo_1(kLittleEndian);
+    PopulateSection(&foo_1, 32, 5);
+    elf1.AddSection(".foo", foo_1, SHT_PROGBITS);
+    Section text_1(kLittleEndian);
+    PopulateSection(&text_1, 4096, 17);
+    elf1.AddSection(".text", text_1, SHT_PROGBITS);
+    elf1.Finish();
+    this->GetElfContents(elf1);
+  }
+
+  EXPECT_TRUE(FileID::ElfFileIdentifierFromMappedFile(this->elfdata,
+                                                      identifier_1));
+  FileID::ConvertIdentifierToString(identifier_1, identifier_string_1,
+                                    sizeof(identifier_string_1));
+
+  {
+    ELF elf2(EM_386, TypeParam::kClass, kLittleEndian);
+    Section text_2(kLittleEndian);
+    Section foo_2(kLittleEndian);
+    PopulateSection(&foo_2, 32, 5);
+    elf2.AddSection(".foo", foo_2, SHT_PROGBITS);
+    PopulateSection(&text_2, 4096, 31);
+    elf2.AddSection(".text", text_2, SHT_PROGBITS);
+    elf2.Finish();
+    this->GetElfContents(elf2);
+  }
+
+  EXPECT_TRUE(FileID::ElfFileIdentifierFromMappedFile(this->elfdata,
+                                                      identifier_2));
+  FileID::ConvertIdentifierToString(identifier_2, identifier_string_2,
+                                    sizeof(identifier_string_2));
+
+  EXPECT_STRNE(identifier_string_1, identifier_string_2);
+}
diff --git a/google-breakpad/src/common/linux/google_crashdump_uploader.cc b/google-breakpad/src/common/linux/google_crashdump_uploader.cc
new file mode 100644
index 0000000..6d86fb3
--- /dev/null
+++ b/google-breakpad/src/common/linux/google_crashdump_uploader.cc
@@ -0,0 +1,202 @@
+// Copyright (c) 2009, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+#include "common/linux/google_crashdump_uploader.h"
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+#include <iostream>
+
+#include "common/using_std_string.h"
+
+namespace google_breakpad {
+
+GoogleCrashdumpUploader::GoogleCrashdumpUploader(const string& product,
+                                                 const string& version,
+                                                 const string& guid,
+                                                 const string& ptime,
+                                                 const string& ctime,
+                                                 const string& email,
+                                                 const string& comments,
+                                                 const string& minidump_pathname,
+                                                 const string& crash_server,
+                                                 const string& proxy_host,
+                                                 const string& proxy_userpassword) {
+  LibcurlWrapper* http_layer = new LibcurlWrapper();
+  Init(product,
+       version,
+       guid,
+       ptime,
+       ctime,
+       email,
+       comments,
+       minidump_pathname,
+       crash_server,
+       proxy_host,
+       proxy_userpassword,
+       http_layer);
+}
+
+GoogleCrashdumpUploader::GoogleCrashdumpUploader(const string& product,
+                                                 const string& version,
+                                                 const string& guid,
+                                                 const string& ptime,
+                                                 const string& ctime,
+                                                 const string& email,
+                                                 const string& comments,
+                                                 const string& minidump_pathname,
+                                                 const string& crash_server,
+                                                 const string& proxy_host,
+                                                 const string& proxy_userpassword,
+                                                 LibcurlWrapper* http_layer) {
+  Init(product,
+       version,
+       guid,
+       ptime,
+       ctime,
+       email,
+       comments,
+       minidump_pathname,
+       crash_server,
+       proxy_host,
+       proxy_userpassword,
+       http_layer);
+}
+
+void GoogleCrashdumpUploader::Init(const string& product,
+                                   const string& version,
+                                   const string& guid,
+                                   const string& ptime,
+                                   const string& ctime,
+                                   const string& email,
+                                   const string& comments,
+                                   const string& minidump_pathname,
+                                   const string& crash_server,
+                                   const string& proxy_host,
+                                   const string& proxy_userpassword,
+                                   LibcurlWrapper* http_layer) {
+  product_ = product;
+  version_ = version;
+  guid_ = guid;
+  ptime_ = ptime;
+  ctime_ = ctime;
+  email_ = email;
+  comments_ = comments;
+  http_layer_.reset(http_layer);
+
+  crash_server_ = crash_server;
+  proxy_host_ = proxy_host;
+  proxy_userpassword_ = proxy_userpassword;
+  minidump_pathname_ = minidump_pathname;
+  std::cout << "Uploader initializing";
+  std::cout << "\tProduct: " << product_;
+  std::cout << "\tVersion: " << version_;
+  std::cout << "\tGUID: " << guid_;
+  if (!ptime_.empty()) {
+    std::cout << "\tProcess uptime: " << ptime_;
+  }
+  if (!ctime_.empty()) {
+    std::cout << "\tCumulative Process uptime: " << ctime_;
+  }
+  if (!email_.empty()) {
+    std::cout << "\tEmail: " << email_;
+  }
+  if (!comments_.empty()) {
+    std::cout << "\tComments: " << comments_;
+  }
+}
+
+bool GoogleCrashdumpUploader::CheckRequiredParametersArePresent() {
+  string error_text;
+  if (product_.empty()) {
+    error_text.append("\nProduct name must be specified.");
+  }
+
+  if (version_.empty()) {
+    error_text.append("\nProduct version must be specified.");
+  }
+
+  if (guid_.empty()) {
+    error_text.append("\nClient ID must be specified.");
+  }
+
+  if (minidump_pathname_.empty()) {
+    error_text.append("\nMinidump pathname must be specified.");
+  }
+
+  if (!error_text.empty()) {
+    std::cout << error_text;
+    return false;
+  }
+  return true;
+
+}
+
+bool GoogleCrashdumpUploader::Upload(int* http_status_code,
+                                     string* http_response_header,
+                                     string* http_response_body) {
+  bool ok = http_layer_->Init();
+  if (!ok) {
+    std::cout << "http layer init failed";
+    return ok;
+  }
+
+  if (!CheckRequiredParametersArePresent()) {
+    return false;
+  }
+
+  struct stat st;
+  int err = stat(minidump_pathname_.c_str(), &st);
+  if (err) {
+    std::cout << minidump_pathname_ << " could not be found";
+    return false;
+  }
+
+  parameters_["prod"] = product_;
+  parameters_["ver"] = version_;
+  parameters_["guid"] = guid_;
+  parameters_["ptime"] = ptime_;
+  parameters_["ctime"] = ctime_;
+  parameters_["email"] = email_;
+  parameters_["comments_"] = comments_;
+  if (!http_layer_->AddFile(minidump_pathname_,
+                            "upload_file_minidump")) {
+    return false;
+  }
+  std::cout << "Sending request to " << crash_server_;
+  return http_layer_->SendRequest(crash_server_,
+                                  parameters_,
+                                  http_status_code,
+                                  http_response_header,
+                                  http_response_body);
+}
+}
diff --git a/google-breakpad/src/common/linux/google_crashdump_uploader.h b/google-breakpad/src/common/linux/google_crashdump_uploader.h
new file mode 100644
index 0000000..a2d0575
--- /dev/null
+++ b/google-breakpad/src/common/linux/google_crashdump_uploader.h
@@ -0,0 +1,107 @@
+// Copyright (c) 2009, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+#ifndef COMMON_LINUX_GOOGLE_CRASHDUMP_UPLOADER_H_
+#define COMMON_LINUX_GOOGLE_CRASHDUMP_UPLOADER_H_
+
+#include <string>
+#include <map>
+
+#include "common/linux/libcurl_wrapper.h"
+#include "common/scoped_ptr.h"
+#include "common/using_std_string.h"
+
+namespace google_breakpad {
+
+class GoogleCrashdumpUploader {
+ public:
+  GoogleCrashdumpUploader(const string& product,
+                          const string& version,
+                          const string& guid,
+                          const string& ptime,
+                          const string& ctime,
+                          const string& email,
+                          const string& comments,
+                          const string& minidump_pathname,
+                          const string& crash_server,
+                          const string& proxy_host,
+                          const string& proxy_userpassword);
+
+  GoogleCrashdumpUploader(const string& product,
+                          const string& version,
+                          const string& guid,
+                          const string& ptime,
+                          const string& ctime,
+                          const string& email,
+                          const string& comments,
+                          const string& minidump_pathname,
+                          const string& crash_server,
+                          const string& proxy_host,
+                          const string& proxy_userpassword,
+                          LibcurlWrapper* http_layer);
+
+  void Init(const string& product,
+            const string& version,
+            const string& guid,
+            const string& ptime,
+            const string& ctime,
+            const string& email,
+            const string& comments,
+            const string& minidump_pathname,
+            const string& crash_server,
+            const string& proxy_host,
+            const string& proxy_userpassword,
+            LibcurlWrapper* http_layer);
+  bool Upload(int* http_status_code,
+              string* http_response_header,
+              string* http_response_body);
+
+ private:
+  bool CheckRequiredParametersArePresent();
+
+  scoped_ptr<LibcurlWrapper> http_layer_;
+  string product_;
+  string version_;
+  string guid_;
+  string ptime_;
+  string ctime_;
+  string email_;
+  string comments_;
+  string minidump_pathname_;
+
+  string crash_server_;
+  string proxy_host_;
+  string proxy_userpassword_;
+
+  std::map<string, string> parameters_;
+};
+}
+
+#endif  // COMMON_LINUX_GOOGLE_CRASHDUMP_UPLOADER_H_
diff --git a/google-breakpad/src/common/linux/google_crashdump_uploader_test.cc b/google-breakpad/src/common/linux/google_crashdump_uploader_test.cc
new file mode 100644
index 0000000..e94c5d6
--- /dev/null
+++ b/google-breakpad/src/common/linux/google_crashdump_uploader_test.cc
@@ -0,0 +1,170 @@
+// Copyright (c) 2009, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Unit test for crash dump uploader.
+
+#include <string>
+
+#include "common/linux/google_crashdump_uploader.h"
+#include "breakpad_googletest_includes.h"
+#include "common/using_std_string.h"
+
+namespace google_breakpad {
+
+using ::testing::Return;
+using ::testing::_;
+
+class MockLibcurlWrapper : public LibcurlWrapper {
+ public:
+  MOCK_METHOD0(Init, bool());
+  MOCK_METHOD2(SetProxy, bool(const string& proxy_host,
+                              const string& proxy_userpwd));
+  MOCK_METHOD2(AddFile, bool(const string& upload_file_path,
+                             const string& basename));
+  MOCK_METHOD5(SendRequest,
+               bool(const string& url,
+                    const std::map<string, string>& parameters,
+                    int* http_status_code,
+                    string* http_header_data,
+                    string* http_response_data));
+};
+
+class GoogleCrashdumpUploaderTest : public ::testing::Test {
+};
+
+TEST_F(GoogleCrashdumpUploaderTest, InitFailsCausesUploadFailure) {
+  MockLibcurlWrapper m;
+  EXPECT_CALL(m, Init()).Times(1).WillOnce(Return(false));
+  GoogleCrashdumpUploader *uploader = new GoogleCrashdumpUploader("foobar",
+                                                                  "1.0",
+                                                                  "AAA-BBB",
+                                                                  "",
+                                                                  "",
+                                                                  "test@test.com",
+                                                                  "none",
+                                                                  "/tmp/foo.dmp",
+                                                                  "http://foo.com",
+                                                                  "",
+                                                                  "",
+                                                                  &m);
+  ASSERT_FALSE(uploader->Upload(NULL, NULL, NULL));
+}
+
+TEST_F(GoogleCrashdumpUploaderTest, TestSendRequestHappensWithValidParameters) {
+  // Create a temp file
+  char tempfn[80] = "/tmp/googletest-upload-XXXXXX";
+  int fd = mkstemp(tempfn);
+  ASSERT_NE(fd, -1);
+  close(fd);
+
+  MockLibcurlWrapper m;
+  EXPECT_CALL(m, Init()).Times(1).WillOnce(Return(true));
+  EXPECT_CALL(m, AddFile(tempfn, _)).WillOnce(Return(true));
+  EXPECT_CALL(m,
+              SendRequest("http://foo.com",_,_,_,_)).Times(1).WillOnce(Return(true));
+  GoogleCrashdumpUploader *uploader = new GoogleCrashdumpUploader("foobar",
+                                                                  "1.0",
+                                                                  "AAA-BBB",
+                                                                  "",
+                                                                  "",
+                                                                  "test@test.com",
+                                                                  "none",
+                                                                  tempfn,
+                                                                  "http://foo.com",
+                                                                  "",
+                                                                  "",
+                                                                  &m);
+  ASSERT_TRUE(uploader->Upload(NULL, NULL, NULL));
+}
+
+
+TEST_F(GoogleCrashdumpUploaderTest, InvalidPathname) {
+  MockLibcurlWrapper m;
+  EXPECT_CALL(m, Init()).Times(1).WillOnce(Return(true));
+  EXPECT_CALL(m, SendRequest(_,_,_,_,_)).Times(0);
+  GoogleCrashdumpUploader *uploader = new GoogleCrashdumpUploader("foobar",
+                                                                  "1.0",
+                                                                  "AAA-BBB",
+                                                                  "",
+                                                                  "",
+                                                                  "test@test.com",
+                                                                  "none",
+                                                                  "/tmp/foo.dmp",
+                                                                  "http://foo.com",
+                                                                  "",
+                                                                  "",
+                                                                  &m);
+  ASSERT_FALSE(uploader->Upload(NULL, NULL, NULL));
+}
+
+TEST_F(GoogleCrashdumpUploaderTest, TestRequiredParametersMustBePresent) {
+  // Test with empty product name.
+  GoogleCrashdumpUploader uploader("",
+                                   "1.0",
+                                   "AAA-BBB",
+                                   "",
+                                   "",
+                                   "test@test.com",
+                                   "none",
+                                   "/tmp/foo.dmp",
+                                   "http://foo.com",
+                                   "",
+                                   "");
+  ASSERT_FALSE(uploader.Upload(NULL, NULL, NULL));
+
+  // Test with empty product version.
+  GoogleCrashdumpUploader uploader1("product",
+                                    "",
+                                    "AAA-BBB",
+                                    "",
+                                    "",
+                                    "",
+                                    "",
+                                    "/tmp/foo.dmp",
+                                    "",
+                                    "",
+                                    "");
+
+  ASSERT_FALSE(uploader1.Upload(NULL, NULL, NULL));
+
+  // Test with empty client GUID.
+  GoogleCrashdumpUploader uploader2("product",
+                                    "1.0",
+                                    "",
+                                    "",
+                                    "",
+                                    "",
+                                    "",
+                                    "/tmp/foo.dmp",
+                                    "",
+                                    "",
+                                    "");
+  ASSERT_FALSE(uploader2.Upload(NULL, NULL, NULL));
+}
+}
diff --git a/google-breakpad/src/common/linux/guid_creator.cc b/google-breakpad/src/common/linux/guid_creator.cc
new file mode 100644
index 0000000..bfb308e
--- /dev/null
+++ b/google-breakpad/src/common/linux/guid_creator.cc
@@ -0,0 +1,104 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include "common/linux/guid_creator.h"
+
+#include <assert.h>
+#include <pthread.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+#include <unistd.h>
+
+//
+// GUIDGenerator
+//
+// This class is used to generate random GUID.
+// Currently use random number to generate a GUID since Linux has
+// no native GUID generator. This should be OK since we don't expect
+// crash to happen very offen.
+//
+class GUIDGenerator {
+ public:
+  static uint32_t BytesToUInt32(const uint8_t bytes[]) {
+    return ((uint32_t) bytes[0]
+            | ((uint32_t) bytes[1] << 8)
+            | ((uint32_t) bytes[2] << 16)
+            | ((uint32_t) bytes[3] << 24));
+  }
+
+  static void UInt32ToBytes(uint8_t bytes[], uint32_t n) {
+    bytes[0] = n & 0xff;
+    bytes[1] = (n >> 8) & 0xff;
+    bytes[2] = (n >> 16) & 0xff;
+    bytes[3] = (n >> 24) & 0xff;
+  }
+
+  static bool CreateGUID(GUID *guid) {
+    InitOnce();
+    guid->data1 = random();
+    guid->data2 = (uint16_t)(random());
+    guid->data3 = (uint16_t)(random());
+    UInt32ToBytes(&guid->data4[0], random());
+    UInt32ToBytes(&guid->data4[4], random());
+    return true;
+  }
+
+ private:
+  static void InitOnce() {
+    pthread_once(&once_control, &InitOnceImpl);
+  }
+
+  static void InitOnceImpl() {
+    srandom(time(NULL));
+  }
+
+  static pthread_once_t once_control;
+};
+
+pthread_once_t GUIDGenerator::once_control = PTHREAD_ONCE_INIT;
+
+bool CreateGUID(GUID *guid) {
+  return GUIDGenerator::CreateGUID(guid);
+}
+
+// Parse guid to string.
+bool GUIDToString(const GUID *guid, char *buf, int buf_len) {
+  // Should allow more space the the max length of GUID.
+  assert(buf_len > kGUIDStringLength);
+  int num = snprintf(buf, buf_len, kGUIDFormatString,
+                     guid->data1, guid->data2, guid->data3,
+                     GUIDGenerator::BytesToUInt32(&(guid->data4[0])),
+                     GUIDGenerator::BytesToUInt32(&(guid->data4[4])));
+  if (num != kGUIDStringLength)
+    return false;
+
+  buf[num] = '\0';
+  return true;
+}
diff --git a/google-breakpad/src/common/linux/guid_creator.h b/google-breakpad/src/common/linux/guid_creator.h
new file mode 100644
index 0000000..c86d856
--- /dev/null
+++ b/google-breakpad/src/common/linux/guid_creator.h
@@ -0,0 +1,48 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef COMMON_LINUX_GUID_CREATOR_H__
+#define COMMON_LINUX_GUID_CREATOR_H__
+
+#include "google_breakpad/common/minidump_format.h"
+
+typedef MDGUID GUID;
+
+// Format string for parsing GUID.
+#define kGUIDFormatString "%08x-%04x-%04x-%08x-%08x"
+// Length of GUID string. Don't count the ending '\0'.
+#define kGUIDStringLength 36
+
+// Create a guid.
+bool CreateGUID(GUID *guid);
+
+// Get the string from guid.
+bool GUIDToString(const GUID *guid, char *buf, int buf_len);
+
+#endif
diff --git a/google-breakpad/src/common/linux/http_upload.cc b/google-breakpad/src/common/linux/http_upload.cc
new file mode 100644
index 0000000..d49f227
--- /dev/null
+++ b/google-breakpad/src/common/linux/http_upload.cc
@@ -0,0 +1,216 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include "common/linux/http_upload.h"
+
+#include <assert.h>
+#include <dlfcn.h>
+#include "third_party/curl/curl.h"
+
+namespace {
+
+// Callback to get the response data from server.
+static size_t WriteCallback(void *ptr, size_t size,
+                            size_t nmemb, void *userp) {
+  if (!userp)
+    return 0;
+
+  string *response = reinterpret_cast<string *>(userp);
+  size_t real_size = size * nmemb;
+  response->append(reinterpret_cast<char *>(ptr), real_size);
+  return real_size;
+}
+
+}  // namespace
+
+namespace google_breakpad {
+
+static const char kUserAgent[] = "Breakpad/1.0 (Linux)";
+
+// static
+bool HTTPUpload::SendRequest(const string &url,
+                             const map<string, string> &parameters,
+                             const string &upload_file,
+                             const string &file_part_name,
+                             const string &proxy,
+                             const string &proxy_user_pwd,
+                             const string &ca_certificate_file,
+                             string *response_body,
+                             long *response_code,
+                             string *error_description) {
+  if (response_code != NULL)
+    *response_code = 0;
+
+  if (!CheckParameters(parameters))
+    return false;
+
+  // We may have been linked statically; if curl_easy_init is in the
+  // current binary, no need to search for a dynamic version.
+  void* curl_lib = dlopen(NULL, RTLD_NOW);
+  if (!curl_lib || dlsym(curl_lib, "curl_easy_init") == NULL) {
+    dlerror();  // Clear dlerror before attempting to open libraries.
+    dlclose(curl_lib);
+    curl_lib = NULL;
+  }
+  if (!curl_lib) {
+    curl_lib = dlopen("libcurl.so", RTLD_NOW);
+  }
+  if (!curl_lib) {
+    if (error_description != NULL)
+      *error_description = dlerror();
+    curl_lib = dlopen("libcurl.so.4", RTLD_NOW);
+  }
+  if (!curl_lib) {
+    // Debian gives libcurl a different name when it is built against GnuTLS
+    // instead of OpenSSL.
+    curl_lib = dlopen("libcurl-gnutls.so.4", RTLD_NOW);
+  }
+  if (!curl_lib) {
+    curl_lib = dlopen("libcurl.so.3", RTLD_NOW);
+  }
+  if (!curl_lib) {
+    return false;
+  }
+
+  CURL* (*curl_easy_init)(void);
+  *(void**) (&curl_easy_init) = dlsym(curl_lib, "curl_easy_init");
+  CURL *curl = (*curl_easy_init)();
+  if (error_description != NULL)
+    *error_description = "No Error";
+
+  if (!curl) {
+    dlclose(curl_lib);
+    return false;
+  }
+
+  CURLcode err_code = CURLE_OK;
+  CURLcode (*curl_easy_setopt)(CURL *, CURLoption, ...);
+  *(void**) (&curl_easy_setopt) = dlsym(curl_lib, "curl_easy_setopt");
+  (*curl_easy_setopt)(curl, CURLOPT_URL, url.c_str());
+  (*curl_easy_setopt)(curl, CURLOPT_USERAGENT, kUserAgent);
+  // Set proxy information if necessary.
+  if (!proxy.empty())
+    (*curl_easy_setopt)(curl, CURLOPT_PROXY, proxy.c_str());
+  if (!proxy_user_pwd.empty())
+    (*curl_easy_setopt)(curl, CURLOPT_PROXYUSERPWD, proxy_user_pwd.c_str());
+
+  if (!ca_certificate_file.empty())
+    (*curl_easy_setopt)(curl, CURLOPT_CAINFO, ca_certificate_file.c_str());
+
+  struct curl_httppost *formpost = NULL;
+  struct curl_httppost *lastptr = NULL;
+  // Add form data.
+  CURLFORMcode (*curl_formadd)(struct curl_httppost **, struct curl_httppost **, ...);
+  *(void**) (&curl_formadd) = dlsym(curl_lib, "curl_formadd");
+  map<string, string>::const_iterator iter = parameters.begin();
+  for (; iter != parameters.end(); ++iter)
+    (*curl_formadd)(&formpost, &lastptr,
+                 CURLFORM_COPYNAME, iter->first.c_str(),
+                 CURLFORM_COPYCONTENTS, iter->second.c_str(),
+                 CURLFORM_END);
+
+  // Add form file.
+  (*curl_formadd)(&formpost, &lastptr,
+               CURLFORM_COPYNAME, file_part_name.c_str(),
+               CURLFORM_FILE, upload_file.c_str(),
+               CURLFORM_END);
+
+  (*curl_easy_setopt)(curl, CURLOPT_HTTPPOST, formpost);
+
+  // Disable 100-continue header.
+  struct curl_slist *headerlist = NULL;
+  char buf[] = "Expect:";
+  struct curl_slist* (*curl_slist_append)(struct curl_slist *, const char *);
+  *(void**) (&curl_slist_append) = dlsym(curl_lib, "curl_slist_append");
+  headerlist = (*curl_slist_append)(headerlist, buf);
+  (*curl_easy_setopt)(curl, CURLOPT_HTTPHEADER, headerlist);
+
+  if (response_body != NULL) {
+    (*curl_easy_setopt)(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
+    (*curl_easy_setopt)(curl, CURLOPT_WRITEDATA,
+                     reinterpret_cast<void *>(response_body));
+  }
+
+  // Fail if 400+ is returned from the web server.
+  (*curl_easy_setopt)(curl, CURLOPT_FAILONERROR, 1);
+
+  CURLcode (*curl_easy_perform)(CURL *);
+  *(void**) (&curl_easy_perform) = dlsym(curl_lib, "curl_easy_perform");
+  err_code = (*curl_easy_perform)(curl);
+  if (response_code != NULL) {
+    CURLcode (*curl_easy_getinfo)(CURL *, CURLINFO, ...);
+    *(void**) (&curl_easy_getinfo) = dlsym(curl_lib, "curl_easy_getinfo");
+    (*curl_easy_getinfo)(curl, CURLINFO_RESPONSE_CODE, response_code);
+  }
+  const char* (*curl_easy_strerror)(CURLcode);
+  *(void**) (&curl_easy_strerror) = dlsym(curl_lib, "curl_easy_strerror");
+#ifndef NDEBUG
+  if (err_code != CURLE_OK)
+    fprintf(stderr, "Failed to send http request to %s, error: %s\n",
+            url.c_str(),
+            (*curl_easy_strerror)(err_code));
+#endif
+  if (error_description != NULL)
+    *error_description = (*curl_easy_strerror)(err_code);
+
+  void (*curl_easy_cleanup)(CURL *);
+  *(void**) (&curl_easy_cleanup) = dlsym(curl_lib, "curl_easy_cleanup");
+  (*curl_easy_cleanup)(curl);
+  if (formpost != NULL) {
+    void (*curl_formfree)(struct curl_httppost *);
+    *(void**) (&curl_formfree) = dlsym(curl_lib, "curl_formfree");
+    (*curl_formfree)(formpost);
+  }
+  if (headerlist != NULL) {
+    void (*curl_slist_free_all)(struct curl_slist *);
+    *(void**) (&curl_slist_free_all) = dlsym(curl_lib, "curl_slist_free_all");
+    (*curl_slist_free_all)(headerlist);
+  }
+  dlclose(curl_lib);
+  return err_code == CURLE_OK;
+}
+
+// static
+bool HTTPUpload::CheckParameters(const map<string, string> &parameters) {
+  for (map<string, string>::const_iterator pos = parameters.begin();
+       pos != parameters.end(); ++pos) {
+    const string &str = pos->first;
+    if (str.size() == 0)
+      return false;  // disallow empty parameter names
+    for (unsigned int i = 0; i < str.size(); ++i) {
+      int c = str[i];
+      if (c < 32 || c == '"' || c > 127) {
+        return false;
+      }
+    }
+  }
+  return true;
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/common/linux/http_upload.h b/google-breakpad/src/common/linux/http_upload.h
new file mode 100644
index 0000000..6dd36ea
--- /dev/null
+++ b/google-breakpad/src/common/linux/http_upload.h
@@ -0,0 +1,88 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// HTTPUpload provides a "nice" API to send a multipart HTTP(S) POST
+// request using libcurl.  It currently supports requests that contain
+// a set of string parameters (key/value pairs), and a file to upload.
+
+#ifndef COMMON_LINUX_HTTP_UPLOAD_H__
+#define COMMON_LINUX_HTTP_UPLOAD_H__
+
+#include <map>
+#include <string>
+
+#include "common/using_std_string.h"
+
+namespace google_breakpad {
+
+using std::map;
+
+class HTTPUpload {
+ public:
+  // Sends the given set of parameters, along with the contents of
+  // upload_file, as a multipart POST request to the given URL.
+  // file_part_name contains the name of the file part of the request
+  // (i.e. it corresponds to the name= attribute on an <input type="file">.
+  // Parameter names must contain only printable ASCII characters,
+  // and may not contain a quote (") character.
+  // Only HTTP(S) URLs are currently supported.  Returns true on success.
+  // If the request is successful and response_body is non-NULL,
+  // the response body will be returned in response_body.
+  // If response_code is non-NULL, it will be set to the HTTP response code
+  // received (or 0 if the request failed before getting an HTTP response).
+  // If the send fails, a description of the error will be
+  // returned in error_description.
+  static bool SendRequest(const string &url,
+                          const map<string, string> &parameters,
+                          const string &upload_file,
+                          const string &file_part_name,
+                          const string &proxy,
+                          const string &proxy_user_pwd,
+                          const string &ca_certificate_file,
+                          string *response_body,
+                          long *response_code,
+                          string *error_description);
+
+ private:
+  // Checks that the given list of parameters has only printable
+  // ASCII characters in the parameter name, and does not contain
+  // any quote (") characters.  Returns true if so.
+  static bool CheckParameters(const map<string, string> &parameters);
+
+  // No instances of this class should be created.
+  // Disallow all constructors, destructors, and operator=.
+  HTTPUpload();
+  explicit HTTPUpload(const HTTPUpload &);
+  void operator=(const HTTPUpload &);
+  ~HTTPUpload();
+};
+
+}  // namespace google_breakpad
+
+#endif  // COMMON_LINUX_HTTP_UPLOAD_H__
diff --git a/google-breakpad/src/common/linux/ignore_ret.h b/google-breakpad/src/common/linux/ignore_ret.h
new file mode 100644
index 0000000..f60384b
--- /dev/null
+++ b/google-breakpad/src/common/linux/ignore_ret.h
@@ -0,0 +1,40 @@
+// Copyright (c) 2012 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef COMMON_LINUX_IGNORE_RET_H_
+#define COMMON_LINUX_IGNORE_RET_H_
+
+// Some compilers are prone to warn about unused return values. In cases where
+// either a) the call cannot fail, or b) there is nothing that can be done when
+// the call fails, IGNORE_RET() can be used to mark the return code as ignored.
+// This avoids spurious compiler warnings.
+
+#define IGNORE_RET(x) do { if (x); } while (0)
+
+#endif  // COMMON_LINUX_IGNORE_RET_H_
diff --git a/google-breakpad/src/common/linux/libcurl_wrapper.cc b/google-breakpad/src/common/linux/libcurl_wrapper.cc
new file mode 100644
index 0000000..fd4e34c
--- /dev/null
+++ b/google-breakpad/src/common/linux/libcurl_wrapper.cc
@@ -0,0 +1,241 @@
+// Copyright (c) 2009, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include <dlfcn.h>
+
+#include <iostream>
+#include <string>
+
+#include "common/linux/libcurl_wrapper.h"
+#include "common/using_std_string.h"
+
+namespace google_breakpad {
+LibcurlWrapper::LibcurlWrapper()
+    : init_ok_(false),
+      formpost_(NULL),
+      lastptr_(NULL),
+      headerlist_(NULL) {
+  curl_lib_ = dlopen("libcurl.so", RTLD_NOW);
+  if (!curl_lib_) {
+    curl_lib_ = dlopen("libcurl.so.4", RTLD_NOW);
+  }
+  if (!curl_lib_) {
+    curl_lib_ = dlopen("libcurl.so.3", RTLD_NOW);
+  }
+  if (!curl_lib_) {
+    std::cout << "Could not find libcurl via dlopen";
+    return;
+  }
+  std::cout << "LibcurlWrapper init succeeded";
+  init_ok_ = true;
+  return;
+}
+
+LibcurlWrapper::~LibcurlWrapper() {}
+
+bool LibcurlWrapper::SetProxy(const string& proxy_host,
+                              const string& proxy_userpwd) {
+  if (!init_ok_) {
+    return false;
+  }
+  // Set proxy information if necessary.
+  if (!proxy_host.empty()) {
+    (*easy_setopt_)(curl_, CURLOPT_PROXY, proxy_host.c_str());
+  } else {
+    std::cout << "SetProxy called with empty proxy host.";
+    return false;
+  }
+  if (!proxy_userpwd.empty()) {
+    (*easy_setopt_)(curl_, CURLOPT_PROXYUSERPWD, proxy_userpwd.c_str());
+  } else {
+    std::cout << "SetProxy called with empty proxy username/password.";
+    return false;
+  }
+  std::cout << "Set proxy host to " << proxy_host;
+  return true;
+}
+
+bool LibcurlWrapper::AddFile(const string& upload_file_path,
+                             const string& basename) {
+  if (!init_ok_) {
+    return false;
+  }
+  std::cout << "Adding " << upload_file_path << " to form upload.";
+  // Add form file.
+  (*formadd_)(&formpost_, &lastptr_,
+              CURLFORM_COPYNAME, basename.c_str(),
+              CURLFORM_FILE, upload_file_path.c_str(),
+              CURLFORM_END);
+
+  return true;
+}
+
+// Callback to get the response data from server.
+static size_t WriteCallback(void *ptr, size_t size,
+                            size_t nmemb, void *userp) {
+  if (!userp)
+    return 0;
+
+  string *response = reinterpret_cast<string *>(userp);
+  size_t real_size = size * nmemb;
+  response->append(reinterpret_cast<char *>(ptr), real_size);
+  return real_size;
+}
+
+bool LibcurlWrapper::SendRequest(const string& url,
+                                 const std::map<string, string>& parameters,
+                                 int* http_status_code,
+                                 string* http_header_data,
+                                 string* http_response_data) {
+  (*easy_setopt_)(curl_, CURLOPT_URL, url.c_str());
+  std::map<string, string>::const_iterator iter = parameters.begin();
+  for (; iter != parameters.end(); ++iter)
+    (*formadd_)(&formpost_, &lastptr_,
+                CURLFORM_COPYNAME, iter->first.c_str(),
+                CURLFORM_COPYCONTENTS, iter->second.c_str(),
+                CURLFORM_END);
+
+  (*easy_setopt_)(curl_, CURLOPT_HTTPPOST, formpost_);
+  if (http_response_data != NULL) {
+    http_response_data->clear();
+    (*easy_setopt_)(curl_, CURLOPT_WRITEFUNCTION, WriteCallback);
+    (*easy_setopt_)(curl_, CURLOPT_WRITEDATA,
+                     reinterpret_cast<void *>(http_response_data));
+  }
+  if (http_header_data != NULL) {
+    http_header_data->clear();
+    (*easy_setopt_)(curl_, CURLOPT_HEADERFUNCTION, WriteCallback);
+    (*easy_setopt_)(curl_, CURLOPT_HEADERDATA,
+                     reinterpret_cast<void *>(http_header_data));
+  }
+
+  CURLcode err_code = CURLE_OK;
+  err_code = (*easy_perform_)(curl_);
+  easy_strerror_ = reinterpret_cast<const char* (*)(CURLcode)>
+                       (dlsym(curl_lib_, "curl_easy_strerror"));
+
+  if (http_status_code != NULL) {
+    (*easy_getinfo_)(curl_, CURLINFO_RESPONSE_CODE, http_status_code);
+  }
+
+#ifndef NDEBUG
+  if (err_code != CURLE_OK)
+    fprintf(stderr, "Failed to send http request to %s, error: %s\n",
+            url.c_str(),
+            (*easy_strerror_)(err_code));
+#endif
+  if (headerlist_ != NULL) {
+    (*slist_free_all_)(headerlist_);
+  }
+
+  (*easy_cleanup_)(curl_);
+  if (formpost_ != NULL) {
+    (*formfree_)(formpost_);
+  }
+
+  return err_code == CURLE_OK;
+}
+
+bool LibcurlWrapper::Init() {
+  if (!init_ok_) {
+    std::cout << "Init_OK was not true in LibcurlWrapper::Init(), check earlier log messages";
+    return false;
+  }
+
+  if (!SetFunctionPointers()) {
+    std::cout << "Could not find function pointers";
+    init_ok_ = false;
+    return false;
+  }
+
+  curl_ = (*easy_init_)();
+
+  last_curl_error_ = "No Error";
+
+  if (!curl_) {
+    dlclose(curl_lib_);
+    std::cout << "Curl initialization failed";
+    return false;
+  }
+
+  // Disable 100-continue header.
+  char buf[] = "Expect:";
+
+  headerlist_ = (*slist_append_)(headerlist_, buf);
+  (*easy_setopt_)(curl_, CURLOPT_HTTPHEADER, headerlist_);
+  return true;
+}
+
+#define SET_AND_CHECK_FUNCTION_POINTER(var, function_name, type) \
+  var = reinterpret_cast<type>(dlsym(curl_lib_, function_name)); \
+  if (!var) { \
+    std::cout << "Could not find libcurl function " << function_name; \
+    init_ok_ = false; \
+    return false; \
+  }
+
+bool LibcurlWrapper::SetFunctionPointers() {
+
+  SET_AND_CHECK_FUNCTION_POINTER(easy_init_,
+                                 "curl_easy_init",
+                                 CURL*(*)());
+
+  SET_AND_CHECK_FUNCTION_POINTER(easy_setopt_,
+                                 "curl_easy_setopt",
+                                 CURLcode(*)(CURL*, CURLoption, ...));
+
+  SET_AND_CHECK_FUNCTION_POINTER(formadd_, "curl_formadd",
+      CURLFORMcode(*)(curl_httppost**, curl_httppost**, ...));
+
+  SET_AND_CHECK_FUNCTION_POINTER(slist_append_, "curl_slist_append",
+      curl_slist*(*)(curl_slist*, const char*));
+
+  SET_AND_CHECK_FUNCTION_POINTER(easy_perform_,
+                                 "curl_easy_perform",
+                                 CURLcode(*)(CURL*));
+
+  SET_AND_CHECK_FUNCTION_POINTER(easy_cleanup_,
+                                 "curl_easy_cleanup",
+                                 void(*)(CURL*));
+
+  SET_AND_CHECK_FUNCTION_POINTER(easy_getinfo_,
+                                 "curl_easy_getinfo",
+                                 CURLcode(*)(CURL *, CURLINFO info, ...));
+
+  SET_AND_CHECK_FUNCTION_POINTER(slist_free_all_,
+                                 "curl_slist_free_all",
+                                 void(*)(curl_slist*));
+
+  SET_AND_CHECK_FUNCTION_POINTER(formfree_,
+                                 "curl_formfree",
+                                 void(*)(curl_httppost*));
+  return true;
+}
+
+}
diff --git a/google-breakpad/src/common/linux/libcurl_wrapper.h b/google-breakpad/src/common/linux/libcurl_wrapper.h
new file mode 100644
index 0000000..de84a63
--- /dev/null
+++ b/google-breakpad/src/common/linux/libcurl_wrapper.h
@@ -0,0 +1,93 @@
+// Copyright (c) 2009, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// A wrapper for libcurl to do HTTP Uploads, to support easy mocking
+// and unit testing of the HTTPUpload class.
+
+#ifndef COMMON_LINUX_LIBCURL_WRAPPER_H_
+#define COMMON_LINUX_LIBCURL_WRAPPER_H_
+
+#include <string>
+#include <map>
+
+#include "common/using_std_string.h"
+#include "third_party/curl/curl.h"
+
+namespace google_breakpad {
+class LibcurlWrapper {
+ public:
+  LibcurlWrapper();
+  ~LibcurlWrapper();
+  virtual bool Init();
+  virtual bool SetProxy(const string& proxy_host,
+                        const string& proxy_userpwd);
+  virtual bool AddFile(const string& upload_file_path,
+                       const string& basename);
+  virtual bool SendRequest(const string& url,
+                           const std::map<string, string>& parameters,
+                           int* http_status_code,
+                           string* http_header_data,
+                           string* http_response_data);
+ private:
+  // This function initializes class state corresponding to function
+  // pointers into the CURL library.
+  bool SetFunctionPointers();
+
+  bool init_ok_;                 // Whether init succeeded
+  void* curl_lib_;               // Pointer to result of dlopen() on
+                                 // curl library
+  string last_curl_error_;  // The text of the last error when
+                                 // dealing
+  // with CURL.
+
+  CURL *curl_;                   // Pointer for handle for CURL calls.
+
+  CURL* (*easy_init_)(void);
+
+  // Stateful pointers for calling into curl_formadd()
+  struct curl_httppost *formpost_;
+  struct curl_httppost *lastptr_;
+  struct curl_slist *headerlist_;
+
+  // Function pointers into CURL library
+  CURLcode (*easy_setopt_)(CURL *, CURLoption, ...);
+  CURLFORMcode (*formadd_)(struct curl_httppost **,
+                           struct curl_httppost **, ...);
+  struct curl_slist* (*slist_append_)(struct curl_slist *, const char *);
+  void (*slist_free_all_)(struct curl_slist *);
+  CURLcode (*easy_perform_)(CURL *);
+  const char* (*easy_strerror_)(CURLcode);
+  void (*easy_cleanup_)(CURL *);
+  CURLcode (*easy_getinfo_)(CURL *, CURLINFO info, ...);
+  void (*formfree_)(struct curl_httppost *);
+
+};
+}
+
+#endif  // COMMON_LINUX_LIBCURL_WRAPPER_H_
diff --git a/google-breakpad/src/common/linux/linux_libc_support.cc b/google-breakpad/src/common/linux/linux_libc_support.cc
new file mode 100644
index 0000000..08b0325
--- /dev/null
+++ b/google-breakpad/src/common/linux/linux_libc_support.cc
@@ -0,0 +1,237 @@
+// Copyright (c) 2012, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// This source file provides replacements for libc functions that we need. If
+// we call the libc functions directly we risk crashing in the dynamic linker
+// as it tries to resolve uncached PLT entries.
+
+#include "common/linux/linux_libc_support.h"
+
+#include <stddef.h>
+
+extern "C" {
+
+size_t my_strlen(const char* s) {
+  size_t len = 0;
+  while (*s++) len++;
+  return len;
+}
+
+int my_strcmp(const char* a, const char* b) {
+  for (;;) {
+    if (*a < *b)
+      return -1;
+    else if (*a > *b)
+      return 1;
+    else if (*a == 0)
+      return 0;
+    a++;
+    b++;
+  }
+}
+
+int my_strncmp(const char* a, const char* b, size_t len) {
+  for (size_t i = 0; i < len; ++i) {
+    if (*a < *b)
+      return -1;
+    else if (*a > *b)
+      return 1;
+    else if (*a == 0)
+      return 0;
+    a++;
+    b++;
+  }
+
+  return 0;
+}
+
+// Parse a non-negative integer.
+//   result: (output) the resulting non-negative integer
+//   s: a NUL terminated string
+// Return true iff successful.
+bool my_strtoui(int* result, const char* s) {
+  if (*s == 0)
+    return false;
+  int r = 0;
+  for (;; s++) {
+    if (*s == 0)
+      break;
+    const int old_r = r;
+    r *= 10;
+    if (*s < '0' || *s > '9')
+      return false;
+    r += *s - '0';
+    if (r < old_r)
+      return false;
+  }
+
+  *result = r;
+  return true;
+}
+
+// Return the length of the given unsigned integer when expressed in base 10.
+unsigned my_uint_len(uintmax_t i) {
+  if (!i)
+    return 1;
+
+  int len = 0;
+  while (i) {
+    len++;
+    i /= 10;
+  }
+
+  return len;
+}
+
+// Convert an unsigned integer to a string
+//   output: (output) the resulting string is written here. This buffer must be
+//     large enough to hold the resulting string. Call |my_uint_len| to get the
+//     required length.
+//   i: the unsigned integer to serialise.
+//   i_len: the length of the integer in base 10 (see |my_uint_len|).
+void my_uitos(char* output, uintmax_t i, unsigned i_len) {
+  for (unsigned index = i_len; index; --index, i /= 10)
+    output[index - 1] = '0' + (i % 10);
+}
+
+const char* my_strchr(const char* haystack, char needle) {
+  while (*haystack && *haystack != needle)
+    haystack++;
+  if (*haystack == needle)
+    return haystack;
+  return (const char*) 0;
+}
+
+const char* my_strrchr(const char* haystack, char needle) {
+  const char* ret = NULL;
+  while (*haystack) {
+    if (*haystack == needle)
+      ret = haystack;
+    haystack++;
+  }
+  return ret;
+}
+
+void* my_memchr(const void* src, int needle, size_t src_len) {
+  const unsigned char* p = (const unsigned char*)src;
+  const unsigned char* p_end = p + src_len;
+  for (; p < p_end; ++p) {
+    if (*p == needle)
+      return (void*)p;
+  }
+  return NULL;
+}
+
+// Read a hex value
+//   result: (output) the resulting value
+//   s: a string
+// Returns a pointer to the first invalid charactor.
+const char* my_read_hex_ptr(uintptr_t* result, const char* s) {
+  uintptr_t r = 0;
+
+  for (;; ++s) {
+    if (*s >= '0' && *s <= '9') {
+      r <<= 4;
+      r += *s - '0';
+    } else if (*s >= 'a' && *s <= 'f') {
+      r <<= 4;
+      r += (*s - 'a') + 10;
+    } else if (*s >= 'A' && *s <= 'F') {
+      r <<= 4;
+      r += (*s - 'A') + 10;
+    } else {
+      break;
+    }
+  }
+
+  *result = r;
+  return s;
+}
+
+const char* my_read_decimal_ptr(uintptr_t* result, const char* s) {
+  uintptr_t r = 0;
+
+  for (;; ++s) {
+    if (*s >= '0' && *s <= '9') {
+      r *= 10;
+      r += *s - '0';
+    } else {
+      break;
+    }
+  }
+  *result = r;
+  return s;
+}
+
+void my_memset(void* ip, char c, size_t len) {
+  char* p = (char *) ip;
+  while (len--)
+    *p++ = c;
+}
+
+size_t my_strlcpy(char* s1, const char* s2, size_t len) {
+  size_t pos1 = 0;
+  size_t pos2 = 0;
+
+  while (s2[pos2] != '\0') {
+    if (pos1 + 1 < len) {
+      s1[pos1] = s2[pos2];
+      pos1++;
+    }
+    pos2++;
+  }
+  if (len > 0)
+    s1[pos1] = '\0';
+
+  return pos2;
+}
+
+size_t my_strlcat(char* s1, const char* s2, size_t len) {
+  size_t pos1 = 0;
+
+  while (pos1 < len && s1[pos1] != '\0')
+    pos1++;
+
+  if (pos1 == len)
+    return pos1;
+
+  return pos1 + my_strlcpy(s1 + pos1, s2, len - pos1);
+}
+
+int my_isspace(int ch) {
+  // Matches the C locale.
+  const char spaces[] = " \t\f\n\r\t\v";
+  for (size_t i = 0; i < sizeof(spaces); i++) {
+    if (ch == spaces[i])
+      return 1;
+  }
+  return 0;
+}
+
+}  // extern "C"
diff --git a/google-breakpad/src/common/linux/linux_libc_support.h b/google-breakpad/src/common/linux/linux_libc_support.h
new file mode 100644
index 0000000..ec5a8d6
--- /dev/null
+++ b/google-breakpad/src/common/linux/linux_libc_support.h
@@ -0,0 +1,96 @@
+// Copyright (c) 2009, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// This header provides replacements for libc functions that we need. We if
+// call the libc functions directly we risk crashing in the dynamic linker as
+// it tries to resolve uncached PLT entries.
+
+#ifndef CLIENT_LINUX_LINUX_LIBC_SUPPORT_H_
+#define CLIENT_LINUX_LINUX_LIBC_SUPPORT_H_
+
+#include <stdint.h>
+#include <limits.h>
+#include <sys/types.h>
+
+extern "C" {
+
+extern size_t my_strlen(const char* s);
+
+extern int my_strcmp(const char* a, const char* b);
+
+extern int my_strncmp(const char* a, const char* b, size_t len);
+
+// Parse a non-negative integer.
+//   result: (output) the resulting non-negative integer
+//   s: a NUL terminated string
+// Return true iff successful.
+extern bool my_strtoui(int* result, const char* s);
+
+// Return the length of the given unsigned integer when expressed in base 10.
+extern unsigned my_uint_len(uintmax_t i);
+
+// Convert an unsigned integer to a string
+//   output: (output) the resulting string is written here. This buffer must be
+//     large enough to hold the resulting string. Call |my_uint_len| to get the
+//     required length.
+//   i: the unsigned integer to serialise.
+//   i_len: the length of the integer in base 10 (see |my_uint_len|).
+extern void my_uitos(char* output, uintmax_t i, unsigned i_len);
+
+extern const char* my_strchr(const char* haystack, char needle);
+
+extern const char* my_strrchr(const char* haystack, char needle);
+
+// Read a hex value
+//   result: (output) the resulting value
+//   s: a string
+// Returns a pointer to the first invalid charactor.
+extern const char* my_read_hex_ptr(uintptr_t* result, const char* s);
+
+extern const char* my_read_decimal_ptr(uintptr_t* result, const char* s);
+
+extern void my_memset(void* ip, char c, size_t len);
+
+extern void* my_memchr(const void* src, int c, size_t len);
+
+// The following are considered safe to use in a compromised environment.
+// Besides, this gives the compiler an opportunity to optimize their calls.
+#define my_memcpy  memcpy
+#define my_memmove memmove
+#define my_memcmp  memcmp
+
+extern size_t my_strlcpy(char* s1, const char* s2, size_t len);
+
+extern size_t my_strlcat(char* s1, const char* s2, size_t len);
+
+extern int my_isspace(int ch);
+
+}  // extern "C"
+
+#endif  // CLIENT_LINUX_LINUX_LIBC_SUPPORT_H_
diff --git a/google-breakpad/src/common/linux/linux_libc_support_unittest.cc b/google-breakpad/src/common/linux/linux_libc_support_unittest.cc
new file mode 100644
index 0000000..adadfed
--- /dev/null
+++ b/google-breakpad/src/common/linux/linux_libc_support_unittest.cc
@@ -0,0 +1,213 @@
+// Copyright (c) 2009, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include "breakpad_googletest_includes.h"
+#include "common/linux/linux_libc_support.h"
+
+namespace {
+typedef testing::Test LinuxLibcSupportTest;
+}
+
+TEST(LinuxLibcSupportTest, strlen) {
+  static const char* test_data[] = { "", "a", "aa", "aaa", "aabc", NULL };
+  for (unsigned i = 0; ; ++i) {
+    if (!test_data[i])
+      break;
+    ASSERT_EQ(strlen(test_data[i]), my_strlen(test_data[i]));
+  }
+}
+
+TEST(LinuxLibcSupportTest, strcmp) {
+  static const char* test_data[] = {
+    "", "",
+    "a", "",
+    "", "a",
+    "a", "b",
+    "a", "a",
+    "ab", "aa",
+    "abc", "ab",
+    "abc", "abc",
+    NULL,
+  };
+
+  for (unsigned i = 0; ; ++i) {
+    if (!test_data[i*2])
+      break;
+    int libc_result = strcmp(test_data[i*2], test_data[i*2 + 1]);
+    if (libc_result > 1)
+      libc_result = 1;
+    else if (libc_result < -1)
+      libc_result = -1;
+    ASSERT_EQ(my_strcmp(test_data[i*2], test_data[i*2 + 1]), libc_result);
+  }
+}
+
+TEST(LinuxLibcSupportTest, strtoui) {
+  int result;
+
+  ASSERT_FALSE(my_strtoui(&result, ""));
+  ASSERT_FALSE(my_strtoui(&result, "-1"));
+  ASSERT_FALSE(my_strtoui(&result, "-"));
+  ASSERT_FALSE(my_strtoui(&result, "a"));
+  ASSERT_FALSE(my_strtoui(&result, "23472893472938472987987398472398"));
+
+  ASSERT_TRUE(my_strtoui(&result, "0"));
+  ASSERT_EQ(result, 0);
+  ASSERT_TRUE(my_strtoui(&result, "1"));
+  ASSERT_EQ(result, 1);
+  ASSERT_TRUE(my_strtoui(&result, "12"));
+  ASSERT_EQ(result, 12);
+  ASSERT_TRUE(my_strtoui(&result, "123"));
+  ASSERT_EQ(result, 123);
+  ASSERT_TRUE(my_strtoui(&result, "0123"));
+  ASSERT_EQ(result, 123);
+}
+
+TEST(LinuxLibcSupportTest, uint_len) {
+  ASSERT_EQ(my_uint_len(0), 1U);
+  ASSERT_EQ(my_uint_len(2), 1U);
+  ASSERT_EQ(my_uint_len(5), 1U);
+  ASSERT_EQ(my_uint_len(9), 1U);
+  ASSERT_EQ(my_uint_len(10), 2U);
+  ASSERT_EQ(my_uint_len(99), 2U);
+  ASSERT_EQ(my_uint_len(100), 3U);
+  ASSERT_EQ(my_uint_len(101), 3U);
+  ASSERT_EQ(my_uint_len(1000), 4U);
+  // 0xFFFFFFFFFFFFFFFF
+  ASSERT_EQ(my_uint_len(18446744073709551615LLU), 20U);
+}
+
+TEST(LinuxLibcSupportTest, uitos) {
+  char buf[32];
+
+  my_uitos(buf, 0, 1);
+  ASSERT_EQ(0, memcmp(buf, "0", 1));
+
+  my_uitos(buf, 1, 1);
+  ASSERT_EQ(0, memcmp(buf, "1", 1));
+
+  my_uitos(buf, 10, 2);
+  ASSERT_EQ(0, memcmp(buf, "10", 2));
+
+  my_uitos(buf, 63, 2);
+  ASSERT_EQ(0, memcmp(buf, "63", 2));
+
+  my_uitos(buf, 101, 3);
+  ASSERT_EQ(0, memcmp(buf, "101", 2));
+
+  // 0xFFFFFFFFFFFFFFFF
+  my_uitos(buf, 18446744073709551615LLU, 20);
+  ASSERT_EQ(0, memcmp(buf, "18446744073709551615", 20));
+}
+
+TEST(LinuxLibcSupportTest, strchr) {
+  ASSERT_EQ(NULL, my_strchr("abc", 'd'));
+  ASSERT_EQ(NULL, my_strchr("", 'd'));
+  ASSERT_EQ(NULL, my_strchr("efghi", 'd'));
+
+  ASSERT_TRUE(my_strchr("a", 'a'));
+  ASSERT_TRUE(my_strchr("abc", 'a'));
+  ASSERT_TRUE(my_strchr("bcda", 'a'));
+  ASSERT_TRUE(my_strchr("sdfasdf", 'a'));
+
+  static const char abc3[] = "abcabcabc";
+  ASSERT_EQ(abc3, my_strchr(abc3, 'a'));
+}
+
+TEST(LinuxLibcSupportTest, strrchr) {
+  ASSERT_EQ(NULL, my_strrchr("abc", 'd'));
+  ASSERT_EQ(NULL, my_strrchr("", 'd'));
+  ASSERT_EQ(NULL, my_strrchr("efghi", 'd'));
+
+  ASSERT_TRUE(my_strrchr("a", 'a'));
+  ASSERT_TRUE(my_strrchr("abc", 'a'));
+  ASSERT_TRUE(my_strrchr("bcda", 'a'));
+  ASSERT_TRUE(my_strrchr("sdfasdf", 'a'));
+
+  static const char abc3[] = "abcabcabc";
+  ASSERT_EQ(abc3 + 6, my_strrchr(abc3, 'a'));
+}
+
+TEST(LinuxLibcSupportTest, memchr) {
+  ASSERT_EQ(NULL, my_memchr("abc", 'd', 3));
+  ASSERT_EQ(NULL, my_memchr("abcd", 'd', 3));
+  ASSERT_EQ(NULL, my_memchr("a", 'a', 0));
+
+  static const char abc3[] = "abcabcabc";
+  ASSERT_EQ(abc3, my_memchr(abc3, 'a', 3));
+  ASSERT_EQ(abc3, my_memchr(abc3, 'a', 9));
+  ASSERT_EQ(abc3+1, my_memchr(abc3, 'b', 9));
+  ASSERT_EQ(abc3+2, my_memchr(abc3, 'c', 9));
+}
+
+TEST(LinuxLibcSupportTest, read_hex_ptr) {
+  uintptr_t result;
+  const char* last;
+
+  last = my_read_hex_ptr(&result, "");
+  ASSERT_EQ(result, 0U);
+  ASSERT_EQ(*last, 0);
+
+  last = my_read_hex_ptr(&result, "0");
+  ASSERT_EQ(result, 0U);
+  ASSERT_EQ(*last, 0);
+
+  last = my_read_hex_ptr(&result, "0123");
+  ASSERT_EQ(result, 0x123U);
+  ASSERT_EQ(*last, 0);
+
+  last = my_read_hex_ptr(&result, "0123a");
+  ASSERT_EQ(result, 0x123aU);
+  ASSERT_EQ(*last, 0);
+
+  last = my_read_hex_ptr(&result, "0123a-");
+  ASSERT_EQ(result, 0x123aU);
+  ASSERT_EQ(*last, '-');
+}
+
+TEST(LinuxLibcSupportTest, read_decimal_ptr) {
+  uintptr_t result;
+  const char* last;
+
+  last = my_read_decimal_ptr(&result, "0");
+  ASSERT_EQ(result, 0U);
+  ASSERT_EQ(*last, 0);
+
+  last = my_read_decimal_ptr(&result, "0123");
+  ASSERT_EQ(result, 123U);
+  ASSERT_EQ(*last, 0);
+
+  last = my_read_decimal_ptr(&result, "1234");
+  ASSERT_EQ(result, 1234U);
+  ASSERT_EQ(*last, 0);
+
+  last = my_read_decimal_ptr(&result, "01234-");
+  ASSERT_EQ(result, 1234U);
+  ASSERT_EQ(*last, '-');
+}
diff --git a/google-breakpad/src/common/linux/memory_mapped_file.cc b/google-breakpad/src/common/linux/memory_mapped_file.cc
new file mode 100644
index 0000000..592b66c
--- /dev/null
+++ b/google-breakpad/src/common/linux/memory_mapped_file.cc
@@ -0,0 +1,118 @@
+// Copyright (c) 2011, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// memory_mapped_file.cc: Implement google_breakpad::MemoryMappedFile.
+// See memory_mapped_file.h for details.
+
+#include "common/linux/memory_mapped_file.h"
+
+#include <fcntl.h>
+#include <sys/mman.h>
+#if defined(__ANDROID__)
+#include <sys/stat.h>
+#endif
+#include <unistd.h>
+
+#include "common/memory_range.h"
+#include "third_party/lss/linux_syscall_support.h"
+
+namespace google_breakpad {
+
+MemoryMappedFile::MemoryMappedFile() {}
+
+MemoryMappedFile::MemoryMappedFile(const char* path, size_t offset) {
+  Map(path, offset);
+}
+
+MemoryMappedFile::~MemoryMappedFile() {
+  Unmap();
+}
+
+#include <unistd.h>
+
+bool MemoryMappedFile::Map(const char* path, size_t offset) {
+  Unmap();
+
+  int fd = sys_open(path, O_RDONLY, 0);
+  if (fd == -1) {
+    return false;
+  }
+
+#if defined(__x86_64__) || defined(__aarch64__) || \
+   (defined(__mips__) && _MIPS_SIM == _ABI64)
+
+  struct kernel_stat st;
+  if (sys_fstat(fd, &st) == -1 || st.st_size < 0) {
+#else
+  struct kernel_stat64 st;
+  if (sys_fstat64(fd, &st) == -1 || st.st_size < 0) {
+#endif
+    sys_close(fd);
+    return false;
+  }
+
+  // Strangely file size can be negative, but we check above that it is not.
+  size_t file_len = static_cast<size_t>(st.st_size);
+  // If the file does not extend beyond the offset, simply use an empty
+  // MemoryRange and return true. Don't bother to call mmap()
+  // even though mmap() can handle an empty file on some platforms.
+  if (offset >= file_len) {
+    sys_close(fd);
+    return true;
+  }
+
+#if defined(__x86_64__) || defined(__aarch64__) || \
+   (defined(__mips__) && _MIPS_SIM == _ABI64)
+  void* data = sys_mmap(NULL, file_len, PROT_READ, MAP_PRIVATE, fd, offset);
+#else
+  if ((offset & 4095) != 0) {
+    // Not page aligned.
+    sys_close(fd);
+    return false;
+  }
+  void* data = sys_mmap2(
+      NULL, file_len, PROT_READ, MAP_PRIVATE, fd, offset >> 12);
+#endif
+  sys_close(fd);
+  if (data == MAP_FAILED) {
+    return false;
+  }
+
+  content_.Set(data, file_len - offset);
+  return true;
+}
+
+void MemoryMappedFile::Unmap() {
+  if (content_.data()) {
+    sys_munmap(const_cast<uint8_t*>(content_.data()), content_.length());
+    content_.Set(NULL, 0);
+  }
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/common/linux/memory_mapped_file.h b/google-breakpad/src/common/linux/memory_mapped_file.h
new file mode 100644
index 0000000..fa660cc
--- /dev/null
+++ b/google-breakpad/src/common/linux/memory_mapped_file.h
@@ -0,0 +1,87 @@
+// Copyright (c) 2011, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// memory_mapped_file.h: Define the google_breakpad::MemoryMappedFile
+// class, which maps a file into memory for read-only access.
+
+#ifndef COMMON_LINUX_MEMORY_MAPPED_FILE_H_
+#define COMMON_LINUX_MEMORY_MAPPED_FILE_H_
+
+#include <stddef.h>
+#include "common/basictypes.h"
+#include "common/memory_range.h"
+
+namespace google_breakpad {
+
+// A utility class for mapping a file into memory for read-only access of
+// the file content. Its implementation avoids calling into libc functions
+// by directly making system calls for open, close, mmap, and munmap.
+class MemoryMappedFile {
+ public:
+  MemoryMappedFile();
+
+  // Constructor that calls Map() to map a file at |path| into memory.
+  // If Map() fails, the object behaves as if it is default constructed.
+  MemoryMappedFile(const char* path, size_t offset);
+
+  ~MemoryMappedFile();
+
+  // Maps a file at |path| into memory, which can then be accessed via
+  // content() as a MemoryRange object or via data(), and returns true on
+  // success. Mapping an empty file will succeed but with data() and size()
+  // returning NULL and 0, respectively. An existing mapping is unmapped
+  // before a new mapping is created.
+  bool Map(const char* path, size_t offset);
+
+  // Unmaps the memory for the mapped file. It's a no-op if no file is
+  // mapped.
+  void Unmap();
+
+  // Returns a MemoryRange object that covers the memory for the mapped
+  // file. The MemoryRange object is empty if no file is mapped.
+  const MemoryRange& content() const { return content_; }
+
+  // Returns a pointer to the beginning of the memory for the mapped file.
+  // or NULL if no file is mapped or the mapped file is empty.
+  const void* data() const { return content_.data(); }
+
+  // Returns the size in bytes of the mapped file, or zero if no file
+  // is mapped.
+  size_t size() const { return content_.length(); }
+
+ private:
+  // Mapped file content as a MemoryRange object.
+  MemoryRange content_;
+
+  DISALLOW_COPY_AND_ASSIGN(MemoryMappedFile);
+};
+
+}  // namespace google_breakpad
+
+#endif  // COMMON_LINUX_MEMORY_MAPPED_FILE_H_
diff --git a/google-breakpad/src/common/linux/memory_mapped_file_unittest.cc b/google-breakpad/src/common/linux/memory_mapped_file_unittest.cc
new file mode 100644
index 0000000..fad59f4
--- /dev/null
+++ b/google-breakpad/src/common/linux/memory_mapped_file_unittest.cc
@@ -0,0 +1,208 @@
+// Copyright (c) 2011, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// memory_mapped_file_unittest.cc:
+// Unit tests for google_breakpad::MemoryMappedFile.
+
+#include <fcntl.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <string>
+
+#include "breakpad_googletest_includes.h"
+#include "common/linux/memory_mapped_file.h"
+#include "common/tests/auto_tempdir.h"
+#include "common/tests/file_utils.h"
+#include "common/using_std_string.h"
+
+using google_breakpad::AutoTempDir;
+using google_breakpad::MemoryMappedFile;
+using google_breakpad::WriteFile;
+
+namespace {
+
+class MemoryMappedFileTest : public testing::Test {
+ protected:
+  void ExpectNoMappedData(const MemoryMappedFile& mapped_file) {
+    EXPECT_TRUE(mapped_file.content().IsEmpty());
+    EXPECT_TRUE(mapped_file.data() == NULL);
+    EXPECT_EQ(0U, mapped_file.size());
+  }
+};
+
+}  // namespace
+
+TEST_F(MemoryMappedFileTest, DefaultConstructor) {
+  MemoryMappedFile mapped_file;
+  ExpectNoMappedData(mapped_file);
+}
+
+TEST_F(MemoryMappedFileTest, UnmapWithoutMap) {
+  MemoryMappedFile mapped_file;
+  mapped_file.Unmap();
+}
+
+TEST_F(MemoryMappedFileTest, MapNonexistentFile) {
+  {
+    MemoryMappedFile mapped_file("nonexistent-file", 0);
+    ExpectNoMappedData(mapped_file);
+  }
+  {
+    MemoryMappedFile mapped_file;
+    EXPECT_FALSE(mapped_file.Map("nonexistent-file", 0));
+    ExpectNoMappedData(mapped_file);
+  }
+}
+
+TEST_F(MemoryMappedFileTest, MapEmptyFile) {
+  AutoTempDir temp_dir;
+  string test_file = temp_dir.path() + "/empty_file";
+  ASSERT_TRUE(WriteFile(test_file.c_str(), NULL, 0));
+
+  {
+    MemoryMappedFile mapped_file(test_file.c_str(), 0);
+    ExpectNoMappedData(mapped_file);
+  }
+  {
+    MemoryMappedFile mapped_file;
+    EXPECT_TRUE(mapped_file.Map(test_file.c_str(), 0));
+    ExpectNoMappedData(mapped_file);
+  }
+}
+
+TEST_F(MemoryMappedFileTest, MapNonEmptyFile) {
+  char data[256];
+  size_t data_size = sizeof(data);
+  for (size_t i = 0; i < data_size; ++i) {
+    data[i] = i;
+  }
+
+  AutoTempDir temp_dir;
+  string test_file = temp_dir.path() + "/test_file";
+  ASSERT_TRUE(WriteFile(test_file.c_str(), data, data_size));
+
+  {
+    MemoryMappedFile mapped_file(test_file.c_str(), 0);
+    EXPECT_FALSE(mapped_file.content().IsEmpty());
+    EXPECT_TRUE(mapped_file.data() != NULL);
+    EXPECT_EQ(data_size, mapped_file.size());
+    EXPECT_EQ(0, memcmp(data, mapped_file.data(), data_size));
+  }
+  {
+    MemoryMappedFile mapped_file;
+    EXPECT_TRUE(mapped_file.Map(test_file.c_str(), 0));
+    EXPECT_FALSE(mapped_file.content().IsEmpty());
+    EXPECT_TRUE(mapped_file.data() != NULL);
+    EXPECT_EQ(data_size, mapped_file.size());
+    EXPECT_EQ(0, memcmp(data, mapped_file.data(), data_size));
+  }
+}
+
+TEST_F(MemoryMappedFileTest, RemapAfterMap) {
+  char data1[256];
+  size_t data1_size = sizeof(data1);
+  for (size_t i = 0; i < data1_size; ++i) {
+    data1[i] = i;
+  }
+
+  char data2[50];
+  size_t data2_size = sizeof(data2);
+  for (size_t i = 0; i < data2_size; ++i) {
+    data2[i] = 255 - i;
+  }
+
+  AutoTempDir temp_dir;
+  string test_file1 = temp_dir.path() + "/test_file1";
+  string test_file2 = temp_dir.path() + "/test_file2";
+  ASSERT_TRUE(WriteFile(test_file1.c_str(), data1, data1_size));
+  ASSERT_TRUE(WriteFile(test_file2.c_str(), data2, data2_size));
+
+  {
+    MemoryMappedFile mapped_file(test_file1.c_str(), 0);
+    EXPECT_FALSE(mapped_file.content().IsEmpty());
+    EXPECT_TRUE(mapped_file.data() != NULL);
+    EXPECT_EQ(data1_size, mapped_file.size());
+    EXPECT_EQ(0, memcmp(data1, mapped_file.data(), data1_size));
+
+    mapped_file.Map(test_file2.c_str(), 0);
+    EXPECT_FALSE(mapped_file.content().IsEmpty());
+    EXPECT_TRUE(mapped_file.data() != NULL);
+    EXPECT_EQ(data2_size, mapped_file.size());
+    EXPECT_EQ(0, memcmp(data2, mapped_file.data(), data2_size));
+  }
+  {
+    MemoryMappedFile mapped_file;
+    EXPECT_TRUE(mapped_file.Map(test_file1.c_str(), 0));
+    EXPECT_FALSE(mapped_file.content().IsEmpty());
+    EXPECT_TRUE(mapped_file.data() != NULL);
+    EXPECT_EQ(data1_size, mapped_file.size());
+    EXPECT_EQ(0, memcmp(data1, mapped_file.data(), data1_size));
+
+    mapped_file.Map(test_file2.c_str(), 0);
+    EXPECT_FALSE(mapped_file.content().IsEmpty());
+    EXPECT_TRUE(mapped_file.data() != NULL);
+    EXPECT_EQ(data2_size, mapped_file.size());
+    EXPECT_EQ(0, memcmp(data2, mapped_file.data(), data2_size));
+  }
+}
+
+TEST_F(MemoryMappedFileTest, MapWithOffset) {
+  // Put more data in the test file this time. Offsets can only be
+  // done on page boundaries, so we need a two page file to test this.
+  const int page_size = 4096;
+  char data1[2 * page_size];
+  size_t data1_size = sizeof(data1);
+  for (size_t i = 0; i < data1_size; ++i) {
+    data1[i] = i & 0x7f;
+  }
+
+  AutoTempDir temp_dir;
+  string test_file1 = temp_dir.path() + "/test_file1";
+  ASSERT_TRUE(WriteFile(test_file1.c_str(), data1, data1_size));
+  {
+    MemoryMappedFile mapped_file(test_file1.c_str(), page_size);
+    EXPECT_FALSE(mapped_file.content().IsEmpty());
+    EXPECT_TRUE(mapped_file.data() != NULL);
+    EXPECT_EQ(data1_size - page_size, mapped_file.size());
+    EXPECT_EQ(
+        0,
+        memcmp(data1 + page_size, mapped_file.data(), data1_size - page_size));
+  }
+  {
+    MemoryMappedFile mapped_file;
+    mapped_file.Map(test_file1.c_str(), page_size);
+    EXPECT_FALSE(mapped_file.content().IsEmpty());
+    EXPECT_TRUE(mapped_file.data() != NULL);
+    EXPECT_EQ(data1_size - page_size, mapped_file.size());
+    EXPECT_EQ(
+        0,
+        memcmp(data1 + page_size, mapped_file.data(), data1_size - page_size));
+  }
+}
diff --git a/google-breakpad/src/common/linux/safe_readlink.cc b/google-breakpad/src/common/linux/safe_readlink.cc
new file mode 100644
index 0000000..870c28a
--- /dev/null
+++ b/google-breakpad/src/common/linux/safe_readlink.cc
@@ -0,0 +1,53 @@
+// Copyright (c) 2011, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// safe_readlink.cc: Implement google_breakpad::SafeReadLink.
+// See safe_readlink.h for details.
+
+#include <stddef.h>
+
+#include "third_party/lss/linux_syscall_support.h"
+
+namespace google_breakpad {
+
+bool SafeReadLink(const char* path, char* buffer, size_t buffer_size) {
+  // sys_readlink() does not add a NULL byte to |buffer|. In order to return
+  // a NULL-terminated string in |buffer|, |buffer_size| should be at least
+  // one byte longer than the expected path length. Also, sys_readlink()
+  // returns the actual path length on success, which does not count the
+  // NULL byte, so |result_size| should be less than |buffer_size|.
+  ssize_t result_size = sys_readlink(path, buffer, buffer_size);
+  if (result_size >= 0 && static_cast<size_t>(result_size) < buffer_size) {
+    buffer[result_size] = '\0';
+    return true;
+  }
+  return false;
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/common/linux/safe_readlink.h b/google-breakpad/src/common/linux/safe_readlink.h
new file mode 100644
index 0000000..4ae131b
--- /dev/null
+++ b/google-breakpad/src/common/linux/safe_readlink.h
@@ -0,0 +1,65 @@
+// Copyright (c) 2011, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// safe_readlink.h: Define the google_breakpad::SafeReadLink function,
+// which wraps sys_readlink and gurantees the result is NULL-terminated.
+
+#ifndef COMMON_LINUX_SAFE_READLINK_H_
+#define COMMON_LINUX_SAFE_READLINK_H_
+
+#include <stddef.h>
+
+namespace google_breakpad {
+
+// This function wraps sys_readlink() and performs the same functionalty,
+// but guarantees |buffer| is NULL-terminated if sys_readlink() returns
+// no error. It takes the same arguments as sys_readlink(), but unlike
+// sys_readlink(), it returns true on success.
+//
+// |buffer_size| specifies the size of |buffer| in bytes. As this function
+// always NULL-terminates |buffer| on success, |buffer_size| should be
+// at least one byte longer than the expected path length (e.g. PATH_MAX,
+// which is typically defined as the maximum length of a path name
+// including the NULL byte).
+//
+// The implementation of this function calls sys_readlink() instead of
+// readlink(), it can thus be used in the context where calling to libc
+// functions is discouraged.
+bool SafeReadLink(const char* path, char* buffer, size_t buffer_size);
+
+// Same as the three-argument version of SafeReadLink() but deduces the
+// size of |buffer| if it is a char array of known size.
+template <size_t N>
+bool SafeReadLink(const char* path, char (&buffer)[N]) {
+  return SafeReadLink(path, buffer, sizeof(buffer));
+}
+
+}  // namespace google_breakpad
+
+#endif  // COMMON_LINUX_SAFE_READLINK_H_
diff --git a/google-breakpad/src/common/linux/safe_readlink_unittest.cc b/google-breakpad/src/common/linux/safe_readlink_unittest.cc
new file mode 100644
index 0000000..d346b2a
--- /dev/null
+++ b/google-breakpad/src/common/linux/safe_readlink_unittest.cc
@@ -0,0 +1,89 @@
+// Copyright (c) 2011, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// safe_readlink_unittest.cc: Unit tests for google_breakpad::SafeReadLink.
+
+#include "breakpad_googletest_includes.h"
+#include "common/linux/safe_readlink.h"
+
+using google_breakpad::SafeReadLink;
+
+TEST(SafeReadLinkTest, ZeroBufferSize) {
+  char buffer[1];
+  EXPECT_FALSE(SafeReadLink("/proc/self/exe", buffer, 0));
+}
+
+TEST(SafeReadLinkTest, BufferSizeTooSmall) {
+  char buffer[1];
+  EXPECT_FALSE(SafeReadLink("/proc/self/exe", buffer, 1));
+}
+
+TEST(SafeReadLinkTest, BoundaryBufferSize) {
+  char buffer[PATH_MAX];
+  EXPECT_TRUE(SafeReadLink("/proc/self/exe", buffer, sizeof(buffer)));
+  size_t path_length = strlen(buffer);
+  EXPECT_LT(0U, path_length);
+  EXPECT_GT(sizeof(buffer), path_length);
+
+  // Buffer size equals to the expected path length plus 1 for the NULL byte.
+  char buffer2[PATH_MAX];
+  EXPECT_TRUE(SafeReadLink("/proc/self/exe", buffer2, path_length + 1));
+  EXPECT_EQ(path_length, strlen(buffer2));
+  EXPECT_EQ(0, strncmp(buffer, buffer2, PATH_MAX));
+
+  // Buffer size equals to the expected path length.
+  EXPECT_FALSE(SafeReadLink("/proc/self/exe", buffer, path_length));
+}
+
+TEST(SafeReadLinkTest, NonexistentPath) {
+  char buffer[PATH_MAX];
+  EXPECT_FALSE(SafeReadLink("nonexistent_path", buffer, sizeof(buffer)));
+}
+
+TEST(SafeReadLinkTest, NonSymbolicLinkPath) {
+  char actual_path[PATH_MAX];
+  EXPECT_TRUE(SafeReadLink("/proc/self/exe", actual_path, sizeof(actual_path)));
+
+  char buffer[PATH_MAX];
+  EXPECT_FALSE(SafeReadLink(actual_path, buffer, sizeof(buffer)));
+}
+
+TEST(SafeReadLinkTest, DeduceBufferSizeFromCharArray) {
+  char buffer[PATH_MAX];
+  char* buffer_pointer = buffer;
+  EXPECT_TRUE(SafeReadLink("/proc/self/exe", buffer_pointer, sizeof(buffer)));
+  size_t path_length = strlen(buffer);
+
+  // Use the template version of SafeReadLink to deduce the buffer size
+  // from the char array.
+  char buffer2[PATH_MAX];
+  EXPECT_TRUE(SafeReadLink("/proc/self/exe", buffer2));
+  EXPECT_EQ(path_length, strlen(buffer2));
+  EXPECT_EQ(0, strncmp(buffer, buffer2, PATH_MAX));
+}
diff --git a/google-breakpad/src/common/linux/synth_elf.cc b/google-breakpad/src/common/linux/synth_elf.cc
new file mode 100644
index 0000000..b978550
--- /dev/null
+++ b/google-breakpad/src/common/linux/synth_elf.cc
@@ -0,0 +1,261 @@
+#include "common/linux/synth_elf.h"
+
+#include <assert.h>
+#include <elf.h>
+#include <stdio.h>
+#include <string.h>
+
+#include "common/linux/elf_gnu_compat.h"
+#include "common/using_std_string.h"
+
+namespace google_breakpad {
+namespace synth_elf {
+
+ELF::ELF(uint16_t machine,
+         uint8_t file_class,
+         Endianness endianness)
+  : Section(endianness),
+    addr_size_(file_class == ELFCLASS64 ? 8 : 4),
+    program_count_(0),
+    program_header_table_(endianness),
+    section_count_(0),
+    section_header_table_(endianness),
+    section_header_strings_(endianness) {
+  // Could add support for more machine types here if needed.
+  assert(machine == EM_386 ||
+         machine == EM_X86_64 ||
+         machine == EM_ARM);
+  assert(file_class == ELFCLASS32 || file_class == ELFCLASS64);
+
+  start() = 0;
+  // Add ELF header
+  // e_ident
+  // EI_MAG0...EI_MAG3
+  D8(ELFMAG0);
+  D8(ELFMAG1);
+  D8(ELFMAG2);
+  D8(ELFMAG3);
+  // EI_CLASS
+  D8(file_class);
+  // EI_DATA
+  D8(endianness == kLittleEndian ? ELFDATA2LSB : ELFDATA2MSB);
+  // EI_VERSION
+  D8(EV_CURRENT);
+  // EI_OSABI
+  D8(ELFOSABI_SYSV);
+  // EI_ABIVERSION
+  D8(0);
+  // EI_PAD
+  Append(7, 0);
+  assert(Size() == EI_NIDENT);
+
+  // e_type
+  D16(ET_EXEC);  //TODO: allow passing ET_DYN?
+  // e_machine
+  D16(machine);
+  // e_version
+  D32(EV_CURRENT);
+  // e_entry
+  Append(endianness, addr_size_, 0);
+  // e_phoff
+  Append(endianness, addr_size_, program_header_label_);
+  // e_shoff
+  Append(endianness, addr_size_, section_header_label_);
+  // e_flags
+  D32(0);
+  // e_ehsize
+  D16(addr_size_ == 8 ? sizeof(Elf64_Ehdr) : sizeof(Elf32_Ehdr));
+  // e_phentsize
+  D16(addr_size_ == 8 ? sizeof(Elf64_Phdr) : sizeof(Elf32_Phdr));
+  // e_phnum
+  D16(program_count_label_);
+  // e_shentsize
+  D16(addr_size_ == 8 ? sizeof(Elf64_Shdr) : sizeof(Elf32_Shdr));
+  // e_shnum
+  D16(section_count_label_);
+  // e_shstrndx
+  D16(section_header_string_index_);
+
+  // Add an empty section for SHN_UNDEF.
+  Section shn_undef;
+  AddSection("", shn_undef, SHT_NULL);
+}
+
+int ELF::AddSection(const string& name, const Section& section,
+                    uint32_t type, uint32_t flags, uint64_t addr,
+                    uint32_t link, uint64_t entsize, uint64_t offset) {
+  Label offset_label;
+  Label string_label(section_header_strings_.Add(name));
+  size_t size = section.Size();
+
+  int index = section_count_;
+  ++section_count_;
+
+  section_header_table_
+    // sh_name
+    .D32(string_label)
+    // sh_type
+    .D32(type)
+    // sh_flags
+    .Append(endianness(), addr_size_, flags)
+    // sh_addr
+    .Append(endianness(), addr_size_, addr)
+    // sh_offset
+    .Append(endianness(), addr_size_, offset_label)
+    // sh_size
+    .Append(endianness(), addr_size_, size)
+    // sh_link
+    .D32(link)
+    // sh_info
+    .D32(0)
+    // sh_addralign
+    .Append(endianness(), addr_size_, 0)
+    // sh_entsize
+    .Append(endianness(), addr_size_, entsize);
+
+  sections_.push_back(ElfSection(section, type, addr, offset, offset_label,
+                                 size));
+  return index;
+}
+
+void ELF::AppendSection(ElfSection &section) {
+  // NULL and NOBITS sections have no content, so they
+  // don't need to be written to the file.
+  if (section.type_ == SHT_NULL) {
+    section.offset_label_ = 0;
+  } else if (section.type_ == SHT_NOBITS) {
+    section.offset_label_ = section.offset_;
+  } else {
+    Mark(&section.offset_label_);
+    Append(section);
+    Align(4);
+  }
+}
+
+void ELF::AddSegment(int start, int end, uint32_t type, uint32_t flags) {
+  assert(start > 0);
+  assert(size_t(start) < sections_.size());
+  assert(end > 0);
+  assert(size_t(end) < sections_.size());
+  ++program_count_;
+
+  // p_type
+  program_header_table_.D32(type);
+
+  if (addr_size_ == 8) {
+    // p_flags
+    program_header_table_.D32(flags);
+  }
+
+  size_t filesz = 0;
+  size_t memsz = 0;
+  bool prev_was_nobits = false;
+  for (int i = start; i <= end; ++i) {
+    size_t size = sections_[i].size_;
+    if (sections_[i].type_ != SHT_NOBITS) {
+      assert(!prev_was_nobits);
+      // non SHT_NOBITS sections are 4-byte aligned (see AddSection)
+      size = (size + 3) & ~3;
+      filesz += size;
+    } else {
+      prev_was_nobits = true;
+    }
+    memsz += size;
+  }
+
+  program_header_table_
+    // p_offset
+    .Append(endianness(), addr_size_, sections_[start].offset_label_)
+    // p_vaddr
+    .Append(endianness(), addr_size_, sections_[start].addr_)
+    // p_paddr
+    .Append(endianness(), addr_size_, sections_[start].addr_)
+    // p_filesz
+    .Append(endianness(), addr_size_, filesz)
+    // p_memsz
+    .Append(endianness(), addr_size_, memsz);
+
+  if (addr_size_ == 4) {
+    // p_flags
+    program_header_table_.D32(flags);
+  }
+
+  // p_align
+  program_header_table_.Append(endianness(), addr_size_, 0);
+}
+
+void ELF::Finish() {
+  // Add the section header string table at the end.
+  section_header_string_index_ = section_count_;
+  //printf(".shstrtab size: %ld\n", section_header_strings_.Size());
+  AddSection(".shstrtab", section_header_strings_, SHT_STRTAB);
+  //printf("section_count_: %ld, sections_.size(): %ld\n",
+  //     section_count_, sections_.size());
+  if (program_count_) {
+    Mark(&program_header_label_);
+    Append(program_header_table_);
+  } else {
+    program_header_label_ = 0;
+  }
+
+  for (vector<ElfSection>::iterator it = sections_.begin();
+       it < sections_.end(); ++it) {
+    AppendSection(*it);
+  }
+  section_count_label_ = section_count_;
+  program_count_label_ = program_count_;
+
+  // Section header table starts here.
+  Mark(&section_header_label_);
+  Append(section_header_table_);
+}
+
+SymbolTable::SymbolTable(Endianness endianness,
+                         size_t addr_size,
+                         StringTable& table) : Section(endianness),
+                                               addr_size_(addr_size),
+                                               table_(table) {
+  assert(addr_size_ == 4 || addr_size_ == 8);
+}
+
+void SymbolTable::AddSymbol(const string& name, uint32_t value,
+                            uint32_t size, unsigned info, uint16_t shndx) {
+  assert(addr_size_ == 4);
+  D32(table_.Add(name));
+  D32(value);
+  D32(size);
+  D8(info);
+  D8(0); // other
+  D16(shndx);
+}
+
+void SymbolTable::AddSymbol(const string& name, uint64_t value,
+                            uint64_t size, unsigned info, uint16_t shndx) {
+  assert(addr_size_ == 8);
+  D32(table_.Add(name));
+  D8(info);
+  D8(0); // other
+  D16(shndx);
+  D64(value);
+  D64(size);
+}
+
+void Notes::AddNote(int type, const string &name, const uint8_t* desc_bytes,
+                    size_t desc_size) {
+  // Elf32_Nhdr and Elf64_Nhdr are exactly the same.
+  Elf32_Nhdr note_header;
+  memset(&note_header, 0, sizeof(note_header));
+  note_header.n_namesz = name.length() + 1;
+  note_header.n_descsz = desc_size;
+  note_header.n_type = type;
+
+  Append(reinterpret_cast<const uint8_t*>(&note_header),
+         sizeof(note_header));
+  AppendCString(name);
+  Align(4);
+  Append(desc_bytes, desc_size);
+  Align(4);
+}
+
+}  // namespace synth_elf
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/common/linux/synth_elf.h b/google-breakpad/src/common/linux/synth_elf.h
new file mode 100644
index 0000000..330ceae
--- /dev/null
+++ b/google-breakpad/src/common/linux/synth_elf.h
@@ -0,0 +1,195 @@
+// -*- mode: C++ -*-
+
+// Copyright (c) 2011, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Ted Mielczarek <ted.mielczarek@gmail.com>
+
+// synth_elf.h: Interface to synth_elf::ELF: fake ELF generator.
+
+#ifndef COMMON_LINUX_SYNTH_ELF_H_
+#define COMMON_LINUX_SYNTH_ELF_H_
+
+#include "common/test_assembler.h"
+
+#include <list>
+#include <vector>
+#include <map>
+#include <string>
+#include <utility>
+
+#include "common/using_std_string.h"
+
+namespace google_breakpad {
+namespace synth_elf {
+
+using std::list;
+using std::vector;
+using std::map;
+using std::pair;
+using test_assembler::Endianness;
+using test_assembler::kLittleEndian;
+using test_assembler::kUnsetEndian;
+using test_assembler::Label;
+using test_assembler::Section;
+
+// String tables are common in ELF headers, so subclass Section
+// to make them easy to generate.
+class StringTable : public Section {
+public:
+  StringTable(Endianness endianness = kUnsetEndian)
+  : Section(endianness) {
+    start() = 0;
+    empty_string = Add("");
+  }
+
+  // Add the string s to the string table, and return
+  // a label containing the offset into the string table
+  // at which it was added.
+  Label Add(const string& s) {
+    if (strings_.find(s) != strings_.end())
+      return strings_[s];
+
+    Label string_label(Here());
+    AppendCString(s);
+    strings_[s] = string_label;
+    return string_label;
+  }
+
+  // All StringTables contain an empty string as their first
+  // entry.
+  Label empty_string;
+
+  // Avoid inserting duplicate strings.
+  map<string,Label> strings_;
+};
+
+// A Section representing an entire ELF file.
+class ELF : public Section {
+ public:
+  ELF(uint16_t machine,    // EM_386, etc
+      uint8_t file_class,  // ELFCLASS{32,64}
+      Endianness endianness = kLittleEndian);
+
+  // Add the Section section to the section header table and append it
+  // to the file. Returns the index of the section in the section
+  // header table.
+  int AddSection(const string& name, const Section& section,
+                 uint32_t type, uint32_t flags = 0, uint64_t addr = 0,
+                 uint32_t link = 0, uint64_t entsize = 0, uint64_t offset = 0);
+                  
+  // Add a segment containing from section index start to section index end.
+  // The indexes must have been gotten from AddSection.
+  void AddSegment(int start, int end, uint32_t type, uint32_t flags = 0);
+
+  // Write out all data. GetContents may be used after this.
+  void Finish();
+
+ private:
+  // Size of an address, in bytes.
+  const size_t addr_size_;
+
+  // Offset to the program header table.
+  Label program_header_label_;
+  // Number of entries in the program header table.
+  int program_count_;
+  Label program_count_label_;
+  // The program header table itself.
+  Section program_header_table_;
+
+  // Offset to the section header table.
+  Label section_header_label_;
+  // Number of entries in the section header table.
+  int section_count_;
+  Label section_count_label_;
+  // The section header table itself.
+  Section section_header_table_;
+
+  // Index of the section header string table in the section
+  // header table.
+  Label section_header_string_index_;
+  // Section containing the names of section header table entries.
+  StringTable section_header_strings_;
+
+  // Record of an added section
+  struct ElfSection : public Section {
+    ElfSection(const Section& section, uint32_t type, uint32_t addr,
+               uint32_t offset, Label offset_label, uint32_t size)
+    : Section(section), type_(type), addr_(addr), offset_(offset)
+    , offset_label_(offset_label), size_(size) {
+    }
+
+    uint32_t type_;
+    uint32_t addr_;
+    uint32_t offset_;
+    Label offset_label_;
+    uint32_t size_;
+  };
+
+  vector<ElfSection> sections_;
+
+  void AppendSection(ElfSection &section);
+};
+
+// A class to build .symtab or .dynsym sections.
+class SymbolTable : public Section {
+ public:
+  // table is the StringTable that contains symbol names. The caller
+  // must ensure that it remains alive for the life of the
+  // SymbolTable.
+  SymbolTable(Endianness endianness, size_t addr_size, StringTable& table);
+
+  // Add an Elf32_Sym.
+  void AddSymbol(const string& name, uint32_t value,
+                 uint32_t size, unsigned info, uint16_t shndx);
+  // Add an Elf64_Sym.
+  void AddSymbol(const string& name, uint64_t value,
+                 uint64_t size, unsigned info, uint16_t shndx);
+
+ private:
+  size_t addr_size_;
+  StringTable& table_;
+};
+
+// A class for note sections
+class Notes : public Section {
+public:
+  Notes(Endianness endianness)
+  : Section(endianness) {
+  }
+
+  // Add a note.
+  void AddNote(int type, const string &name, const uint8_t* desc_bytes,
+               size_t desc_size);
+};
+
+}  // namespace synth_elf
+}  // namespace google_breakpad
+
+#endif  // COMMON_LINUX_SYNTH_ELF_H_
diff --git a/google-breakpad/src/common/linux/synth_elf_unittest.cc b/google-breakpad/src/common/linux/synth_elf_unittest.cc
new file mode 100644
index 0000000..3715b6e
--- /dev/null
+++ b/google-breakpad/src/common/linux/synth_elf_unittest.cc
@@ -0,0 +1,413 @@
+// Copyright (c) 2011 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Ted Mielczarek <ted.mielczarek@gmail.com>
+
+// synth_elf_unittest.cc:
+// Unittests for google_breakpad::synth_elf::ELF
+
+#include <elf.h>
+
+#include "breakpad_googletest_includes.h"
+#include "common/linux/elfutils.h"
+#include "common/linux/synth_elf.h"
+#include "common/using_std_string.h"
+
+using google_breakpad::ElfClass32;
+using google_breakpad::ElfClass64;
+using google_breakpad::synth_elf::ELF;
+using google_breakpad::synth_elf::Notes;
+using google_breakpad::synth_elf::Section;
+using google_breakpad::synth_elf::StringTable;
+using google_breakpad::synth_elf::SymbolTable;
+using google_breakpad::test_assembler::Endianness;
+using google_breakpad::test_assembler::kBigEndian;
+using google_breakpad::test_assembler::kLittleEndian;
+using google_breakpad::test_assembler::Label;
+using ::testing::Test;
+using ::testing::Types;
+
+class StringTableTest : public Test {
+public:
+  StringTableTest() : table(kLittleEndian) {}
+
+  StringTable table;
+};
+
+TEST_F(StringTableTest, Empty) {
+  EXPECT_EQ(1U, table.Size());
+  string contents;
+  ASSERT_TRUE(table.GetContents(&contents));
+  const char* kExpectedContents = "\0";
+  EXPECT_EQ(0, memcmp(kExpectedContents,
+                      contents.c_str(),
+                      contents.size()));
+  ASSERT_TRUE(table.empty_string.IsKnownConstant());
+  EXPECT_EQ(0U, table.empty_string.Value());
+}
+
+TEST_F(StringTableTest, Basic) {
+  const string s1("table fills with strings");
+  const string s2("offsets preserved as labels");
+  const string s3("verified with tests");
+  const char* kExpectedContents = 
+    "\0table fills with strings\0"
+    "offsets preserved as labels\0"
+    "verified with tests\0";
+  Label l1(table.Add(s1));
+  Label l2(table.Add(s2));
+  Label l3(table.Add(s3));
+  string contents;
+  ASSERT_TRUE(table.GetContents(&contents));
+  EXPECT_EQ(0, memcmp(kExpectedContents,
+                      contents.c_str(),
+                      contents.size()));
+  // empty_string is at zero, other strings start at 1.
+  ASSERT_TRUE(l1.IsKnownConstant());
+  EXPECT_EQ(1U, l1.Value());
+  // Each string has an extra byte for a trailing null.
+  EXPECT_EQ(1 + s1.length() + 1, l2.Value());
+  EXPECT_EQ(1 + s1.length() + 1 + s2.length() + 1, l3.Value());
+}
+
+TEST_F(StringTableTest, Duplicates) {
+  const string s1("string 1");
+  const string s2("string 2");
+  const string s3("");
+  const char* kExpectedContents = "\0string 1\0string 2\0";
+  Label l1(table.Add(s1));
+  Label l2(table.Add(s2));
+  // Adding strings twice should return the same Label.
+  Label l3(table.Add(s3));
+  Label l4(table.Add(s2));
+  string contents;
+  ASSERT_TRUE(table.GetContents(&contents));
+  EXPECT_EQ(0, memcmp(kExpectedContents,
+                      contents.c_str(),
+                      contents.size()));
+  EXPECT_EQ(0U, table.empty_string.Value());
+  EXPECT_EQ(table.empty_string.Value(), l3.Value());
+  EXPECT_EQ(l2.Value(), l4.Value());
+}
+
+class SymbolTableTest : public Test {};
+
+TEST_F(SymbolTableTest, Simple32) {
+  StringTable table(kLittleEndian);
+  SymbolTable syms(kLittleEndian, 4, table);
+
+  const string kFuncName1 = "superfunc";
+  const uint32_t kFuncAddr1 = 0x10001000;
+  const uint32_t kFuncSize1 = 0x10;
+  const string kFuncName2 = "awesomefunc";
+  const uint32_t kFuncAddr2 = 0x20002000;
+  const uint32_t kFuncSize2 = 0x2f;
+  const string kFuncName3 = "megafunc";
+  const uint32_t kFuncAddr3 = 0x30003000;
+  const uint32_t kFuncSize3 = 0x3c;
+
+  syms.AddSymbol(kFuncName1, kFuncAddr1, kFuncSize1,
+                 ELF32_ST_INFO(STB_GLOBAL, STT_FUNC),
+                 SHN_UNDEF + 1);
+  syms.AddSymbol(kFuncName2, kFuncAddr2, kFuncSize2,
+                 ELF32_ST_INFO(STB_LOCAL, STT_FUNC),
+                 SHN_UNDEF + 2);
+  syms.AddSymbol(kFuncName3, kFuncAddr3, kFuncSize3,
+                 ELF32_ST_INFO(STB_LOCAL, STT_FUNC),
+                 SHN_UNDEF + 3);
+
+  const char kExpectedStringTable[] = "\0superfunc\0awesomefunc\0megafunc";
+  const size_t kExpectedStringTableSize = sizeof(kExpectedStringTable);
+  EXPECT_EQ(kExpectedStringTableSize, table.Size());
+  string table_contents;
+  table.GetContents(&table_contents);
+  EXPECT_EQ(0, memcmp(kExpectedStringTable,
+                      table_contents.c_str(),
+                      table_contents.size()));
+
+  const uint8_t kExpectedSymbolContents[] = {
+    // Symbol 1
+    0x01, 0x00, 0x00, 0x00, // name
+    0x00, 0x10, 0x00, 0x10, // value
+    0x10, 0x00, 0x00, 0x00, // size
+    ELF32_ST_INFO(STB_GLOBAL, STT_FUNC), // info
+    0x00, // other
+    0x01, 0x00, // shndx
+    // Symbol 2
+    0x0B, 0x00, 0x00, 0x00, // name
+    0x00, 0x20, 0x00, 0x20, // value
+    0x2f, 0x00, 0x00, 0x00, // size
+    ELF32_ST_INFO(STB_LOCAL, STT_FUNC), // info
+    0x00, // other
+    0x02, 0x00, // shndx
+    // Symbol 3
+    0x17, 0x00, 0x00, 0x00, // name
+    0x00, 0x30, 0x00, 0x30, // value
+    0x3c, 0x00, 0x00, 0x00, // size
+    ELF32_ST_INFO(STB_LOCAL, STT_FUNC), // info
+    0x00, // other
+    0x03, 0x00, // shndx
+  };
+  const size_t kExpectedSymbolSize = sizeof(kExpectedSymbolContents);
+  EXPECT_EQ(kExpectedSymbolSize, syms.Size());
+
+  string symbol_contents;
+  syms.GetContents(&symbol_contents);
+  EXPECT_EQ(0, memcmp(kExpectedSymbolContents,
+                      symbol_contents.c_str(),
+                      symbol_contents.size()));
+}
+
+template<typename ElfClass>
+class BasicElf : public Test {};
+
+// Doesn't seem worthwhile writing the tests to be endian-independent
+// when they're unlikely to ever be run on big-endian systems.
+#if defined(__i386__) || defined(__x86_64__)
+
+typedef Types<ElfClass32, ElfClass64> ElfClasses;
+
+TYPED_TEST_CASE(BasicElf, ElfClasses);
+
+TYPED_TEST(BasicElf, EmptyLE) {
+  typedef typename TypeParam::Ehdr Ehdr;
+  typedef typename TypeParam::Phdr Phdr;
+  typedef typename TypeParam::Shdr Shdr;
+  const size_t kStringTableSize = sizeof("\0.shstrtab");
+  const size_t kStringTableAlign = 4 - kStringTableSize % 4;
+  const size_t kExpectedSize = sizeof(Ehdr) +
+    // Two sections, SHT_NULL + the section header string table.
+    2 * sizeof(Shdr) +
+    kStringTableSize + kStringTableAlign;
+
+  // It doesn't really matter that the machine type is right for the class.
+  ELF elf(EM_386, TypeParam::kClass, kLittleEndian);
+  elf.Finish();
+  EXPECT_EQ(kExpectedSize, elf.Size());
+
+  string contents;
+  ASSERT_TRUE(elf.GetContents(&contents));
+  ASSERT_EQ(kExpectedSize, contents.size());
+  const Ehdr* header =
+    reinterpret_cast<const Ehdr*>(contents.data());
+  const uint8_t kIdent[] = {
+    ELFMAG0, ELFMAG1, ELFMAG2, ELFMAG3,
+    TypeParam::kClass, ELFDATA2LSB, EV_CURRENT, ELFOSABI_SYSV,
+    0, 0, 0, 0, 0, 0, 0, 0
+  };
+  EXPECT_EQ(0, memcmp(kIdent, header->e_ident, sizeof(kIdent)));
+  EXPECT_EQ(ET_EXEC, header->e_type);
+  EXPECT_EQ(EM_386, header->e_machine);
+  EXPECT_EQ(static_cast<unsigned int>(EV_CURRENT), header->e_version);
+  EXPECT_EQ(0U, header->e_entry);
+  EXPECT_EQ(0U, header->e_phoff);
+  EXPECT_EQ(sizeof(Ehdr) + kStringTableSize + kStringTableAlign,
+            header->e_shoff);
+  EXPECT_EQ(0U, header->e_flags);
+  EXPECT_EQ(sizeof(Ehdr), header->e_ehsize);
+  EXPECT_EQ(sizeof(Phdr), header->e_phentsize);
+  EXPECT_EQ(0, header->e_phnum);
+  EXPECT_EQ(sizeof(Shdr), header->e_shentsize);
+  EXPECT_EQ(2, header->e_shnum);
+  EXPECT_EQ(1, header->e_shstrndx);
+
+  const Shdr* shdr =
+    reinterpret_cast<const Shdr*>(contents.data() + header->e_shoff);
+  EXPECT_EQ(0U, shdr[0].sh_name);
+  EXPECT_EQ(static_cast<unsigned int>(SHT_NULL), shdr[0].sh_type);
+  EXPECT_EQ(0U, shdr[0].sh_flags);
+  EXPECT_EQ(0U, shdr[0].sh_addr);
+  EXPECT_EQ(0U, shdr[0].sh_offset);
+  EXPECT_EQ(0U, shdr[0].sh_size);
+  EXPECT_EQ(0U, shdr[0].sh_link);
+  EXPECT_EQ(0U, shdr[0].sh_info);
+  EXPECT_EQ(0U, shdr[0].sh_addralign);
+  EXPECT_EQ(0U, shdr[0].sh_entsize);
+
+  EXPECT_EQ(1U, shdr[1].sh_name);
+  EXPECT_EQ(static_cast<unsigned int>(SHT_STRTAB), shdr[1].sh_type);
+  EXPECT_EQ(0U, shdr[1].sh_flags);
+  EXPECT_EQ(0U, shdr[1].sh_addr);
+  EXPECT_EQ(sizeof(Ehdr), shdr[1].sh_offset);
+  EXPECT_EQ(kStringTableSize, shdr[1].sh_size);
+  EXPECT_EQ(0U, shdr[1].sh_link);
+  EXPECT_EQ(0U, shdr[1].sh_info);
+  EXPECT_EQ(0U, shdr[1].sh_addralign);
+  EXPECT_EQ(0U, shdr[1].sh_entsize);
+}
+
+TYPED_TEST(BasicElf, BasicLE) {
+  typedef typename TypeParam::Ehdr Ehdr;
+  typedef typename TypeParam::Phdr Phdr;
+  typedef typename TypeParam::Shdr Shdr;
+  const size_t kStringTableSize = sizeof("\0.text\0.bss\0.shstrtab");
+  const size_t kStringTableAlign = 4 - kStringTableSize % 4;
+  const size_t kExpectedSize = sizeof(Ehdr) +
+    // Four sections, SHT_NULL + the section header string table +
+    // 4096 bytes of the size-aligned .text section + one program header.
+    sizeof(Phdr) + 4 * sizeof(Shdr) + 4096 +
+    kStringTableSize + kStringTableAlign;
+
+  // It doesn't really matter that the machine type is right for the class.
+  ELF elf(EM_386, TypeParam::kClass, kLittleEndian);
+  Section text(kLittleEndian);
+  text.Append(4094, 0);
+  int text_idx = elf.AddSection(".text", text, SHT_PROGBITS);
+  Section bss(kLittleEndian);
+  bss.Append(16, 0);
+  int bss_idx = elf.AddSection(".bss", bss, SHT_NOBITS);
+  elf.AddSegment(text_idx, bss_idx, PT_LOAD);
+  elf.Finish();
+  EXPECT_EQ(kExpectedSize, elf.Size());
+
+  string contents;
+  ASSERT_TRUE(elf.GetContents(&contents));
+  ASSERT_EQ(kExpectedSize, contents.size());
+  const Ehdr* header =
+    reinterpret_cast<const Ehdr*>(contents.data());
+  const uint8_t kIdent[] = {
+    ELFMAG0, ELFMAG1, ELFMAG2, ELFMAG3,
+    TypeParam::kClass, ELFDATA2LSB, EV_CURRENT, ELFOSABI_SYSV,
+    0, 0, 0, 0, 0, 0, 0, 0
+  };
+  EXPECT_EQ(0, memcmp(kIdent, header->e_ident, sizeof(kIdent)));
+  EXPECT_EQ(ET_EXEC, header->e_type);
+  EXPECT_EQ(EM_386, header->e_machine);
+  EXPECT_EQ(static_cast<unsigned int>(EV_CURRENT), header->e_version);
+  EXPECT_EQ(0U, header->e_entry);
+  EXPECT_EQ(sizeof(Ehdr), header->e_phoff);
+  EXPECT_EQ(sizeof(Ehdr) + sizeof(Phdr) + 4096 + kStringTableSize +
+            kStringTableAlign, header->e_shoff);
+  EXPECT_EQ(0U, header->e_flags);
+  EXPECT_EQ(sizeof(Ehdr), header->e_ehsize);
+  EXPECT_EQ(sizeof(Phdr), header->e_phentsize);
+  EXPECT_EQ(1, header->e_phnum);
+  EXPECT_EQ(sizeof(Shdr), header->e_shentsize);
+  EXPECT_EQ(4, header->e_shnum);
+  EXPECT_EQ(3, header->e_shstrndx);
+
+  const Shdr* shdr =
+    reinterpret_cast<const Shdr*>(contents.data() + header->e_shoff);
+  EXPECT_EQ(0U, shdr[0].sh_name);
+  EXPECT_EQ(static_cast<unsigned int>(SHT_NULL), shdr[0].sh_type);
+  EXPECT_EQ(0U, shdr[0].sh_flags);
+  EXPECT_EQ(0U, shdr[0].sh_addr);
+  EXPECT_EQ(0U, shdr[0].sh_offset);
+  EXPECT_EQ(0U, shdr[0].sh_size);
+  EXPECT_EQ(0U, shdr[0].sh_link);
+  EXPECT_EQ(0U, shdr[0].sh_info);
+  EXPECT_EQ(0U, shdr[0].sh_addralign);
+  EXPECT_EQ(0U, shdr[0].sh_entsize);
+
+  EXPECT_EQ(1U, shdr[1].sh_name);
+  EXPECT_EQ(static_cast<unsigned int>(SHT_PROGBITS), shdr[1].sh_type);
+  EXPECT_EQ(0U, shdr[1].sh_flags);
+  EXPECT_EQ(0U, shdr[1].sh_addr);
+  EXPECT_EQ(sizeof(Ehdr) + sizeof(Phdr), shdr[1].sh_offset);
+  EXPECT_EQ(4094U, shdr[1].sh_size);
+  EXPECT_EQ(0U, shdr[1].sh_link);
+  EXPECT_EQ(0U, shdr[1].sh_info);
+  EXPECT_EQ(0U, shdr[1].sh_addralign);
+  EXPECT_EQ(0U, shdr[1].sh_entsize);
+
+  EXPECT_EQ(sizeof("\0.text"), shdr[2].sh_name);
+  EXPECT_EQ(static_cast<unsigned int>(SHT_NOBITS), shdr[2].sh_type);
+  EXPECT_EQ(0U, shdr[2].sh_flags);
+  EXPECT_EQ(0U, shdr[2].sh_addr);
+  EXPECT_EQ(0U, shdr[2].sh_offset);
+  EXPECT_EQ(16U, shdr[2].sh_size);
+  EXPECT_EQ(0U, shdr[2].sh_link);
+  EXPECT_EQ(0U, shdr[2].sh_info);
+  EXPECT_EQ(0U, shdr[2].sh_addralign);
+  EXPECT_EQ(0U, shdr[2].sh_entsize);
+
+  EXPECT_EQ(sizeof("\0.text\0.bss"), shdr[3].sh_name);
+  EXPECT_EQ(static_cast<unsigned int>(SHT_STRTAB), shdr[3].sh_type);
+  EXPECT_EQ(0U, shdr[3].sh_flags);
+  EXPECT_EQ(0U, shdr[3].sh_addr);
+  EXPECT_EQ(sizeof(Ehdr) + sizeof(Phdr) + 4096, shdr[3].sh_offset);
+  EXPECT_EQ(kStringTableSize, shdr[3].sh_size);
+  EXPECT_EQ(0U, shdr[3].sh_link);
+  EXPECT_EQ(0U, shdr[3].sh_info);
+  EXPECT_EQ(0U, shdr[3].sh_addralign);
+  EXPECT_EQ(0U, shdr[3].sh_entsize);
+
+  const Phdr* phdr =
+    reinterpret_cast<const Phdr*>(contents.data() + header->e_phoff);
+  EXPECT_EQ(static_cast<unsigned int>(PT_LOAD), phdr->p_type);
+  EXPECT_EQ(sizeof(Ehdr) + sizeof(Phdr), phdr->p_offset);
+  EXPECT_EQ(0U, phdr->p_vaddr);
+  EXPECT_EQ(0U, phdr->p_paddr);
+  EXPECT_EQ(4096U, phdr->p_filesz);
+  EXPECT_EQ(4096U + 16U, phdr->p_memsz);
+  EXPECT_EQ(0U, phdr->p_flags);
+  EXPECT_EQ(0U, phdr->p_align);
+}
+
+class ElfNotesTest : public Test {};
+
+TEST_F(ElfNotesTest, Empty) {
+  Notes notes(kLittleEndian);
+  string contents;
+  ASSERT_TRUE(notes.GetContents(&contents));
+  EXPECT_EQ(0U, contents.size());
+}
+
+TEST_F(ElfNotesTest, Notes) {
+  Notes notes(kLittleEndian);
+  notes.AddNote(1, "Linux", reinterpret_cast<const uint8_t *>("\x42\x02\0\0"),
+                4);
+  notes.AddNote(2, "a", reinterpret_cast<const uint8_t *>("foobar"),
+                sizeof("foobar") - 1);
+
+  const uint8_t kExpectedNotesContents[] = {
+    // Note 1
+    0x06, 0x00, 0x00, 0x00, // name size, including terminating zero
+    0x04, 0x00, 0x00, 0x00, // desc size
+    0x01, 0x00, 0x00, 0x00, // type
+    'L', 'i', 'n', 'u', 'x', 0x00, 0x00, 0x00, // padded "Linux"
+    0x42, 0x02, 0x00, 0x00, // desc
+    // Note 2
+    0x02, 0x00, 0x00, 0x00, // name size
+    0x06, 0x00, 0x00, 0x00, // desc size
+    0x02, 0x00, 0x00, 0x00, // type
+    'a',  0x00, 0x00, 0x00, // padded "a"
+    'f', 'o', 'o', 'b', 'a', 'r', 0x00, 0x00, // padded "foobar"
+  };
+  const size_t kExpectedNotesSize = sizeof(kExpectedNotesContents);
+  EXPECT_EQ(kExpectedNotesSize, notes.Size());
+
+  string notes_contents;
+  ASSERT_TRUE(notes.GetContents(&notes_contents));
+  EXPECT_EQ(0, memcmp(kExpectedNotesContents,
+                      notes_contents.data(),
+                      notes_contents.size()));
+}
+
+#endif  // defined(__i386__) || defined(__x86_64__)
diff --git a/google-breakpad/src/common/linux/tests/auto_testfile.h b/google-breakpad/src/common/linux/tests/auto_testfile.h
new file mode 100644
index 0000000..92fe017
--- /dev/null
+++ b/google-breakpad/src/common/linux/tests/auto_testfile.h
@@ -0,0 +1,124 @@
+// Copyright (c) 2013, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Utility class for creating a temporary file for unit tests
+// that is deleted in the destructor.
+
+#ifndef GOOGLE_BREAKPAD_COMMON_LINUX_TESTS_AUTO_TESTFILE
+#define GOOGLE_BREAKPAD_COMMON_LINUX_TESTS_AUTO_TESTFILE
+
+#include <unistd.h>
+#include <sys/types.h>
+
+#include <string>
+
+#include "breakpad_googletest_includes.h"
+#include "common/linux/eintr_wrapper.h"
+#include "common/tests/auto_tempdir.h"
+
+namespace google_breakpad {
+
+class AutoTestFile {
+ public:
+  // Create a new empty test file.
+  // test_prefix: (input) test-specific prefix, can't be NULL.
+  explicit AutoTestFile(const char* test_prefix) {
+    Init(test_prefix);
+  }
+
+  // Create a new test file, and fill it with initial data from a C string.
+  // The terminating zero is not written.
+  // test_prefix: (input) test-specific prefix, can't be NULL.
+  // text: (input) initial content.
+  AutoTestFile(const char* test_prefix, const char* text) {
+    Init(test_prefix);
+    if (fd_ >= 0)
+      WriteText(text, static_cast<size_t>(strlen(text)));
+  }
+
+  AutoTestFile(const char* test_prefix, const char* text, size_t text_len) {
+    Init(test_prefix);
+    if (fd_ >= 0)
+      WriteText(text, text_len);
+  }
+
+  // Destroy test file on scope exit.
+  ~AutoTestFile() {
+    if (fd_ >= 0) {
+      close(fd_);
+      fd_ = -1;
+    }
+  }
+
+  // Returns true iff the test file could be created properly.
+  // Useful in tests inside EXPECT_TRUE(file.IsOk());
+  bool IsOk() {
+    return fd_ >= 0;
+  }
+
+  // Returns the Posix file descriptor for the test file, or -1
+  // If IsOk() returns false. Note: on Windows, this always returns -1.
+  int GetFd() {
+    return fd_;
+  }
+
+ private:
+  void Init(const char* test_prefix) {
+    fd_ = -1;
+    char path_templ[PATH_MAX];
+    int ret = snprintf(path_templ, sizeof(path_templ),
+                       TEMPDIR "/%s-unittest.XXXXXX",
+                       test_prefix);
+    if (ret >= static_cast<int>(sizeof(path_templ)))
+      return;
+
+    fd_ = mkstemp(path_templ);
+    if (fd_ < 0)
+      return;
+
+    unlink(path_templ);
+  }
+
+  void WriteText(const char* text, size_t text_len) {
+    ssize_t r = HANDLE_EINTR(write(fd_, text, text_len));
+    if (r != static_cast<ssize_t>(text_len)) {
+      close(fd_);
+      fd_ = -1;
+      return;
+    }
+
+    lseek(fd_, 0, SEEK_SET);
+  }
+
+  int fd_;
+};
+
+}  // namespace google_breakpad
+
+#endif  // GOOGLE_BREAKPAD_COMMON_LINUX_TESTS_AUTO_TESTFILE
diff --git a/google-breakpad/src/common/linux/tests/crash_generator.cc b/google-breakpad/src/common/linux/tests/crash_generator.cc
new file mode 100644
index 0000000..c9491f6
--- /dev/null
+++ b/google-breakpad/src/common/linux/tests/crash_generator.cc
@@ -0,0 +1,322 @@
+// Copyright (c) 2011, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// crash_generator.cc: Implement google_breakpad::CrashGenerator.
+// See crash_generator.h for details.
+
+#include "common/linux/tests/crash_generator.h"
+
+#include <pthread.h>
+#include <signal.h>
+#include <stdio.h>
+#include <sys/mman.h>
+#include <sys/resource.h>
+#include <sys/syscall.h>
+#include <sys/wait.h>
+#include <unistd.h>
+
+#include <string>
+
+#if defined(__ANDROID__)
+#include "common/android/testing/pthread_fixes.h"
+#endif
+#include "common/linux/eintr_wrapper.h"
+#include "common/tests/auto_tempdir.h"
+#include "common/tests/file_utils.h"
+#include "common/using_std_string.h"
+
+namespace {
+
+struct ThreadData {
+  pthread_t thread;
+  pthread_barrier_t* barrier;
+  pid_t* thread_id_ptr;
+};
+
+const char* const kProcFilesToCopy[] = {
+  "auxv", "cmdline", "environ", "maps", "status"
+};
+const size_t kNumProcFilesToCopy =
+    sizeof(kProcFilesToCopy) / sizeof(kProcFilesToCopy[0]);
+
+int gettid() {
+  // Glibc does not provide a wrapper for this.
+  return syscall(__NR_gettid);
+}
+
+int tkill(pid_t tid, int sig) {
+  // Glibc does not provide a wrapper for this.
+  return syscall(__NR_tkill, tid, sig);
+}
+
+// Core file size limit set to 1 MB, which is big enough for test purposes.
+const rlim_t kCoreSizeLimit = 1024 * 1024;
+
+void *thread_function(void *data) {
+  ThreadData* thread_data = reinterpret_cast<ThreadData*>(data);
+  volatile pid_t thread_id = gettid();
+  *(thread_data->thread_id_ptr) = thread_id;
+  int result = pthread_barrier_wait(thread_data->barrier);
+  if (result != 0 && result != PTHREAD_BARRIER_SERIAL_THREAD) {
+    perror("Failed to wait for sync barrier");
+    exit(1);
+  }
+  while (true) {
+    pthread_yield();
+  }
+}
+
+}  // namespace
+
+namespace google_breakpad {
+
+CrashGenerator::CrashGenerator()
+    : shared_memory_(NULL),
+      shared_memory_size_(0) {
+}
+
+CrashGenerator::~CrashGenerator() {
+  UnmapSharedMemory();
+}
+
+bool CrashGenerator::HasDefaultCorePattern() const {
+  char buffer[8];
+  ssize_t buffer_size = sizeof(buffer);
+  return ReadFile("/proc/sys/kernel/core_pattern", buffer, &buffer_size) &&
+         buffer_size == 5 && memcmp(buffer, "core", 4) == 0;
+}
+
+string CrashGenerator::GetCoreFilePath() const {
+  return temp_dir_.path() + "/core";
+}
+
+string CrashGenerator::GetDirectoryOfProcFilesCopy() const {
+  return temp_dir_.path() + "/proc";
+}
+
+pid_t CrashGenerator::GetThreadId(unsigned index) const {
+  return reinterpret_cast<pid_t*>(shared_memory_)[index];
+}
+
+pid_t* CrashGenerator::GetThreadIdPointer(unsigned index) {
+  return reinterpret_cast<pid_t*>(shared_memory_) + index;
+}
+
+bool CrashGenerator::MapSharedMemory(size_t memory_size) {
+  if (!UnmapSharedMemory())
+    return false;
+
+  void* mapped_memory = mmap(0, memory_size, PROT_READ | PROT_WRITE,
+                             MAP_SHARED | MAP_ANONYMOUS, -1, 0);
+  if (mapped_memory == MAP_FAILED) {
+    perror("CrashGenerator: Failed to map shared memory");
+    return false;
+  }
+
+  memset(mapped_memory, 0, memory_size);
+  shared_memory_ = mapped_memory;
+  shared_memory_size_ = memory_size;
+  return true;
+}
+
+bool CrashGenerator::UnmapSharedMemory() {
+  if (!shared_memory_)
+    return true;
+
+  if (munmap(shared_memory_, shared_memory_size_) == 0) {
+    shared_memory_ = NULL;
+    shared_memory_size_ = 0;
+    return true;
+  }
+
+  perror("CrashGenerator: Failed to unmap shared memory");
+  return false;
+}
+
+bool CrashGenerator::SetCoreFileSizeLimit(rlim_t limit) const {
+  struct rlimit limits = { limit, limit };
+  if (setrlimit(RLIMIT_CORE, &limits) == -1) {
+    perror("CrashGenerator: Failed to set core file size limit");
+    return false;
+  }
+  return true;
+}
+
+bool CrashGenerator::CreateChildCrash(
+    unsigned num_threads, unsigned crash_thread, int crash_signal,
+    pid_t* child_pid) {
+  if (num_threads == 0 || crash_thread >= num_threads) {
+    fprintf(stderr, "CrashGenerator: Invalid thread counts; num_threads=%u"
+                    " crash_thread=%u\n", num_threads, crash_thread);
+    return false;
+  }
+
+  if (!MapSharedMemory(num_threads * sizeof(pid_t))) {
+    perror("CrashGenerator: Unable to map shared memory");
+    return false;
+  }
+
+  pid_t pid = fork();
+  if (pid == 0) {
+    if (chdir(temp_dir_.path().c_str()) == -1) {
+      perror("CrashGenerator: Failed to change directory");
+      exit(1);
+    }
+    if (SetCoreFileSizeLimit(kCoreSizeLimit)) {
+      CreateThreadsInChildProcess(num_threads);
+      string proc_dir = GetDirectoryOfProcFilesCopy();
+      if (mkdir(proc_dir.c_str(), 0755) == -1) {
+        perror("CrashGenerator: Failed to create proc directory");
+        exit(1);
+      }
+      if (!CopyProcFiles(getpid(), proc_dir.c_str())) {
+        fprintf(stderr, "CrashGenerator: Failed to copy proc files\n");
+        exit(1);
+      }
+      // On Android the signal sometimes doesn't seem to get sent even though
+      // tkill returns '0'.  Retry a couple of times if the signal doesn't get
+      // through on the first go:
+      // https://code.google.com/p/google-breakpad/issues/detail?id=579
+#if defined(__ANDROID__)
+      const int kRetries = 60;
+      const unsigned int kSleepTimeInSeconds = 1;
+#else
+      const int kRetries = 1;
+      const unsigned int kSleepTimeInSeconds = 600;
+#endif
+      for (int i = 0; i < kRetries; i++) {
+        if (tkill(*GetThreadIdPointer(crash_thread), crash_signal) == -1) {
+          perror("CrashGenerator: Failed to kill thread by signal");
+        } else {
+          // At this point, we've queued the signal for delivery, but there's no
+          // guarantee when it'll be delivered.  We don't want the main thread to
+          // race and exit before the thread we signaled is processed.  So sleep
+          // long enough that we won't flake even under fairly high load.
+          // TODO: See if we can't be a bit more deterministic.  There doesn't
+          // seem to be an API to check on signal delivery status, so we can't
+          // really poll and wait for the kernel to declare the signal has been
+          // delivered.  If it has, and things worked, we'd be killed, so the
+          // sleep length doesn't really matter.
+          sleep(kSleepTimeInSeconds);
+        }
+      }
+    } else {
+      perror("CrashGenerator: Failed to set core limit");
+    }
+    exit(1);
+  } else if (pid == -1) {
+    perror("CrashGenerator: Failed to create child process");
+    return false;
+  }
+
+  int status;
+  if (HANDLE_EINTR(waitpid(pid, &status, 0)) == -1) {
+    perror("CrashGenerator: Failed to wait for child process");
+    return false;
+  }
+  if (!WIFSIGNALED(status) || WTERMSIG(status) != crash_signal) {
+    fprintf(stderr, "CrashGenerator: Child process not killed by the expected signal\n"
+                    "  exit status=0x%x pid=%u signaled=%s sig=%d expected=%d\n",
+                    status, pid, WIFSIGNALED(status) ? "true" : "false",
+                    WTERMSIG(status), crash_signal);
+    return false;
+  }
+
+  if (child_pid)
+    *child_pid = pid;
+  return true;
+}
+
+bool CrashGenerator::CopyProcFiles(pid_t pid, const char* path) const {
+  char from_path[PATH_MAX], to_path[PATH_MAX];
+  for (size_t i = 0; i < kNumProcFilesToCopy; ++i) {
+    int num_chars = snprintf(from_path, PATH_MAX, "/proc/%d/%s",
+                             pid, kProcFilesToCopy[i]);
+    if (num_chars < 0 || num_chars >= PATH_MAX)
+      return false;
+
+    num_chars = snprintf(to_path, PATH_MAX, "%s/%s",
+                         path, kProcFilesToCopy[i]);
+    if (num_chars < 0 || num_chars >= PATH_MAX)
+      return false;
+
+    if (!CopyFile(from_path, to_path))
+      return false;
+  }
+  return true;
+}
+
+void CrashGenerator::CreateThreadsInChildProcess(unsigned num_threads) {
+  *GetThreadIdPointer(0) = getpid();
+
+  if (num_threads <= 1)
+    return;
+
+  // This method does not clean up any pthread resource, as the process
+  // is expected to be killed anyway.
+  ThreadData* thread_data = new ThreadData[num_threads];
+
+  // Create detached threads so that we do not worry about pthread_join()
+  // later being called or not.
+  pthread_attr_t thread_attributes;
+  if (pthread_attr_init(&thread_attributes) != 0 ||
+      pthread_attr_setdetachstate(&thread_attributes,
+                                  PTHREAD_CREATE_DETACHED) != 0) {
+    fprintf(stderr, "CrashGenerator: Failed to initialize thread attribute\n");
+    exit(1);
+  }
+
+  pthread_barrier_t thread_barrier;
+  if (pthread_barrier_init(&thread_barrier, NULL, num_threads) != 0) {
+    fprintf(stderr, "CrashGenerator: Failed to initialize thread barrier\n");
+    exit(1);
+  }
+
+  for (unsigned i = 1; i < num_threads; ++i) {
+    thread_data[i].barrier = &thread_barrier;
+    thread_data[i].thread_id_ptr = GetThreadIdPointer(i);
+    if (pthread_create(&thread_data[i].thread, &thread_attributes,
+                       thread_function, &thread_data[i]) != 0) {
+      fprintf(stderr, "CrashGenerator: Failed to create thread %d\n", i);
+      exit(1);
+    }
+  }
+
+  int result = pthread_barrier_wait(&thread_barrier);
+  if (result != 0 && result != PTHREAD_BARRIER_SERIAL_THREAD) {
+    fprintf(stderr, "CrashGenerator: Failed to wait for thread barrier\n");
+    exit(1);
+  }
+
+  pthread_barrier_destroy(&thread_barrier);
+  pthread_attr_destroy(&thread_attributes);
+  delete[] thread_data;
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/common/linux/tests/crash_generator.h b/google-breakpad/src/common/linux/tests/crash_generator.h
new file mode 100644
index 0000000..7e2fcbf
--- /dev/null
+++ b/google-breakpad/src/common/linux/tests/crash_generator.h
@@ -0,0 +1,117 @@
+// Copyright (c) 2011, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// crash_generator.h: Define the google_breakpad::CrashGenerator class,
+// which is used to generate a crash (and a core dump file) for testing.
+
+#ifndef COMMON_LINUX_TESTS_CRASH_GENERATOR_H_
+#define COMMON_LINUX_TESTS_CRASH_GENERATOR_H_
+
+#include <sys/resource.h>
+
+#include <string>
+
+#include "common/tests/auto_tempdir.h"
+#include "common/using_std_string.h"
+
+namespace google_breakpad {
+
+// A utility class for generating a crash (and a core dump file) for
+// testing. It creates a child process with the specified number of
+// threads, which is then termainated by the specified signal. A core
+// dump file is expected to be created upon the termination of the child
+// process, which can then be used for testing code that processes core
+// dump files.
+class CrashGenerator {
+ public:
+  CrashGenerator();
+
+  ~CrashGenerator();
+
+  // Returns true if a core dump file named 'core' will be generated in
+  // the current directory for a test that produces a crash by checking
+  // if /proc/sys/kernel/core_pattern has the default value 'core'.
+  bool HasDefaultCorePattern() const;
+
+  // Returns the expected path of the core dump file.
+  string GetCoreFilePath() const;
+
+  // Returns the directory of a copy of proc files of the child process.
+  string GetDirectoryOfProcFilesCopy() const;
+
+  // Creates a crash (and a core dump file) by creating a child process with
+  // |num_threads| threads, and the terminating the child process by sending
+  // a signal with number |crash_signal| to the |crash_thread|-th thread.
+  // Returns true on success.
+  bool CreateChildCrash(unsigned num_threads, unsigned crash_thread,
+                        int crash_signal, pid_t* child_pid);
+
+  // Returns the thread ID of the |index|-th thread in the child process.
+  // This method does not validate |index|.
+  pid_t GetThreadId(unsigned index) const;
+
+ private:
+  // Copies the following proc files of the process with |pid| to the directory
+  // at |path|: auxv, cmdline, environ, maps, status
+  // The directory must have been created. Returns true on success.
+  bool CopyProcFiles(pid_t pid, const char* path) const;
+
+  // Creates |num_threads| threads in the child process.
+  void CreateThreadsInChildProcess(unsigned num_threads);
+
+  // Sets the maximum size of core dump file (both the soft and hard limit)
+  // to |limit| bytes. Returns true on success.
+  bool SetCoreFileSizeLimit(rlim_t limit) const;
+
+  // Creates a shared memory of |memory_size| bytes for communicating thread
+  // IDs between the parent and child process. Returns true on success.
+  bool MapSharedMemory(size_t memory_size);
+
+  // Releases any shared memory created by MapSharedMemory(). Returns true on
+  // success.
+  bool UnmapSharedMemory();
+
+  // Returns the pointer to the thread ID of the |index|-th thread in the child
+  // process. This method does not validate |index|.
+  pid_t* GetThreadIdPointer(unsigned index);
+
+  // Temporary directory in which a core file is generated.
+  AutoTempDir temp_dir_;
+
+  // Shared memory for communicating thread IDs between the parent and
+  // child process.
+  void* shared_memory_;
+
+  // Number of bytes mapped for |shared_memory_|.
+  size_t shared_memory_size_;
+};
+
+}  // namespace google_breakpad
+
+#endif  // COMMON_LINUX_TESTS_CRASH_GENERATOR_H_
diff --git a/google-breakpad/src/common/mac/Breakpad.xcconfig b/google-breakpad/src/common/mac/Breakpad.xcconfig
new file mode 100644
index 0000000..672be2c
--- /dev/null
+++ b/google-breakpad/src/common/mac/Breakpad.xcconfig
@@ -0,0 +1,56 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ARCHS = $(ARCHS_STANDARD_32_64_BIT)
+SDKROOT = macosx10.5
+
+GCC_VERSION = 4.2
+GCC_VERSION[sdk=macosx10.4][arch=*] = 4.0
+
+GCC_C_LANGUAGE_STANDARD = c99
+
+GCC_WARN_CHECK_SWITCH_STATEMENTS = YES
+// TODO(nealsid): Get the code so we can turn on the 64_TO_32 warning.
+GCC_WARN_64_TO_32_BIT_CONVERSION = NO
+GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES
+GCC_WARN_ABOUT_RETURN_TYPE = YES
+GCC_WARN_MISSING_PARENTHESES = YES
+GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES
+GCC_WARN_ABOUT_MISSING_NEWLINE = YES
+GCC_WARN_SIGN_COMPARE = YES
+GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES
+GCC_WARN_UNDECLARED_SELECTOR = YES
+GCC_WARN_UNKNOWN_PRAGMAS = YES
+GCC_WARN_UNUSED_VARIABLE = YES
+GCC_TREAT_WARNINGS_AS_ERRORS = YES
+
+DEBUG_INFORMATION_FORMAT = dwarf-with-dsym
+DEBUG_INFORMATION_FORMAT[sdk=macosx10.4][arch=*] = stabs
+
+ALWAYS_SEARCH_USER_PATHS = NO
diff --git a/google-breakpad/src/common/mac/BreakpadDebug.xcconfig b/google-breakpad/src/common/mac/BreakpadDebug.xcconfig
new file mode 100644
index 0000000..94cdd8c
--- /dev/null
+++ b/google-breakpad/src/common/mac/BreakpadDebug.xcconfig
@@ -0,0 +1,32 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include "Breakpad.xcconfig"
+
+GCC_OPTIMIZATION_LEVEL = 0
diff --git a/google-breakpad/src/common/mac/BreakpadRelease.xcconfig b/google-breakpad/src/common/mac/BreakpadRelease.xcconfig
new file mode 100644
index 0000000..920f277
--- /dev/null
+++ b/google-breakpad/src/common/mac/BreakpadRelease.xcconfig
@@ -0,0 +1,34 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include "Breakpad.xcconfig"
+
+GCC_OPTIMIZATION_LEVEL = s
+GCC_WARN_UNINITIALIZED_AUTOS = YES
+GCC_PREPROCESSOR_DEFINITIONS = $(inherited) NDEBUG
diff --git a/google-breakpad/src/common/mac/GTMDefines.h b/google-breakpad/src/common/mac/GTMDefines.h
new file mode 100644
index 0000000..14ffa7e
--- /dev/null
+++ b/google-breakpad/src/common/mac/GTMDefines.h
@@ -0,0 +1,456 @@
+//
+// GTMDefines.h
+//
+//  Copyright 2008 Google Inc.
+//
+//  Licensed under the Apache License, Version 2.0 (the "License"); you may not
+//  use this file except in compliance with the License.  You may obtain a copy
+//  of the License at
+//
+//  http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+//  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+//  License for the specific language governing permissions and limitations under
+//  the License.
+//
+
+// ============================================================================
+
+#include <AvailabilityMacros.h>
+#include <TargetConditionals.h>
+
+#ifdef __OBJC__
+#include <Foundation/NSObjCRuntime.h>
+#endif  // __OBJC__
+
+#if TARGET_OS_IPHONE
+#include <Availability.h>
+#endif  // TARGET_OS_IPHONE
+
+// Not all MAC_OS_X_VERSION_10_X macros defined in past SDKs
+#ifndef MAC_OS_X_VERSION_10_5
+  #define MAC_OS_X_VERSION_10_5 1050
+#endif
+#ifndef MAC_OS_X_VERSION_10_6
+  #define MAC_OS_X_VERSION_10_6 1060
+#endif
+#ifndef MAC_OS_X_VERSION_10_7
+  #define MAC_OS_X_VERSION_10_7 1070
+#endif
+
+// Not all __IPHONE_X macros defined in past SDKs
+#ifndef __IPHONE_3_0
+  #define __IPHONE_3_0 30000
+#endif
+#ifndef __IPHONE_3_1
+  #define __IPHONE_3_1 30100
+#endif
+#ifndef __IPHONE_3_2
+  #define __IPHONE_3_2 30200
+#endif
+#ifndef __IPHONE_4_0
+  #define __IPHONE_4_0 40000
+#endif
+#ifndef __IPHONE_4_3
+  #define __IPHONE_4_3 40300
+#endif
+#ifndef __IPHONE_5_0
+  #define __IPHONE_5_0 50000
+#endif
+
+// ----------------------------------------------------------------------------
+// CPP symbols that can be overridden in a prefix to control how the toolbox
+// is compiled.
+// ----------------------------------------------------------------------------
+
+
+// By setting the GTM_CONTAINERS_VALIDATION_FAILED_LOG and
+// GTM_CONTAINERS_VALIDATION_FAILED_ASSERT macros you can control what happens
+// when a validation fails. If you implement your own validators, you may want
+// to control their internals using the same macros for consistency.
+#ifndef GTM_CONTAINERS_VALIDATION_FAILED_ASSERT
+  #define GTM_CONTAINERS_VALIDATION_FAILED_ASSERT 0
+#endif
+
+// Give ourselves a consistent way to do inlines.  Apple's macros even use
+// a few different actual definitions, so we're based off of the foundation
+// one.
+#if !defined(GTM_INLINE)
+  #if (defined (__GNUC__) && (__GNUC__ == 4)) || defined (__clang__)
+    #define GTM_INLINE static __inline__ __attribute__((always_inline))
+  #else
+    #define GTM_INLINE static __inline__
+  #endif
+#endif
+
+// Give ourselves a consistent way of doing externs that links up nicely
+// when mixing objc and objc++
+#if !defined (GTM_EXTERN)
+  #if defined __cplusplus
+    #define GTM_EXTERN extern "C"
+    #define GTM_EXTERN_C_BEGIN extern "C" {
+    #define GTM_EXTERN_C_END }
+  #else
+    #define GTM_EXTERN extern
+    #define GTM_EXTERN_C_BEGIN
+    #define GTM_EXTERN_C_END
+  #endif
+#endif
+
+// Give ourselves a consistent way of exporting things if we have visibility
+// set to hidden.
+#if !defined (GTM_EXPORT)
+  #define GTM_EXPORT __attribute__((visibility("default")))
+#endif
+
+// Give ourselves a consistent way of declaring something as unused. This
+// doesn't use __unused because that is only supported in gcc 4.2 and greater.
+#if !defined (GTM_UNUSED)
+#define GTM_UNUSED(x) ((void)(x))
+#endif
+
+// _GTMDevLog & _GTMDevAssert
+//
+// _GTMDevLog & _GTMDevAssert are meant to be a very lightweight shell for
+// developer level errors.  This implementation simply macros to NSLog/NSAssert.
+// It is not intended to be a general logging/reporting system.
+//
+// Please see http://code.google.com/p/google-toolbox-for-mac/wiki/DevLogNAssert
+// for a little more background on the usage of these macros.
+//
+//    _GTMDevLog           log some error/problem in debug builds
+//    _GTMDevAssert        assert if conditon isn't met w/in a method/function
+//                           in all builds.
+//
+// To replace this system, just provide different macro definitions in your
+// prefix header.  Remember, any implementation you provide *must* be thread
+// safe since this could be called by anything in what ever situtation it has
+// been placed in.
+//
+
+// We only define the simple macros if nothing else has defined this.
+#ifndef _GTMDevLog
+
+#ifdef DEBUG
+  #define _GTMDevLog(...) NSLog(__VA_ARGS__)
+#else
+  #define _GTMDevLog(...) do { } while (0)
+#endif
+
+#endif // _GTMDevLog
+
+#ifndef _GTMDevAssert
+// we directly invoke the NSAssert handler so we can pass on the varargs
+// (NSAssert doesn't have a macro we can use that takes varargs)
+#if !defined(NS_BLOCK_ASSERTIONS)
+  #define _GTMDevAssert(condition, ...)                                       \
+    do {                                                                      \
+      if (!(condition)) {                                                     \
+        [[NSAssertionHandler currentHandler]                                  \
+            handleFailureInFunction:[NSString stringWithUTF8String:__PRETTY_FUNCTION__] \
+                               file:[NSString stringWithUTF8String:__FILE__]  \
+                         lineNumber:__LINE__                                  \
+                        description:__VA_ARGS__];                             \
+      }                                                                       \
+    } while(0)
+#else // !defined(NS_BLOCK_ASSERTIONS)
+  #define _GTMDevAssert(condition, ...) do { } while (0)
+#endif // !defined(NS_BLOCK_ASSERTIONS)
+
+#endif // _GTMDevAssert
+
+// _GTMCompileAssert
+// _GTMCompileAssert is an assert that is meant to fire at compile time if you
+// want to check things at compile instead of runtime. For example if you
+// want to check that a wchar is 4 bytes instead of 2 you would use
+// _GTMCompileAssert(sizeof(wchar_t) == 4, wchar_t_is_4_bytes_on_OS_X)
+// Note that the second "arg" is not in quotes, and must be a valid processor
+// symbol in it's own right (no spaces, punctuation etc).
+
+// Wrapping this in an #ifndef allows external groups to define their own
+// compile time assert scheme.
+#ifndef _GTMCompileAssert
+  // We got this technique from here:
+  // http://unixjunkie.blogspot.com/2007/10/better-compile-time-asserts_29.html
+
+  #define _GTMCompileAssertSymbolInner(line, msg) _GTMCOMPILEASSERT ## line ## __ ## msg
+  #define _GTMCompileAssertSymbol(line, msg) _GTMCompileAssertSymbolInner(line, msg)
+  #define _GTMCompileAssert(test, msg) \
+    typedef char _GTMCompileAssertSymbol(__LINE__, msg) [ ((test) ? 1 : -1) ]
+#endif // _GTMCompileAssert
+
+// ----------------------------------------------------------------------------
+// CPP symbols defined based on the project settings so the GTM code has
+// simple things to test against w/o scattering the knowledge of project
+// setting through all the code.
+// ----------------------------------------------------------------------------
+
+// Provide a single constant CPP symbol that all of GTM uses for ifdefing
+// iPhone code.
+#if TARGET_OS_IPHONE // iPhone SDK
+  // For iPhone specific stuff
+  #define GTM_IPHONE_SDK 1
+  #if TARGET_IPHONE_SIMULATOR
+    #define GTM_IPHONE_DEVICE 0
+    #define GTM_IPHONE_SIMULATOR 1
+  #else
+    #define GTM_IPHONE_DEVICE 1
+    #define GTM_IPHONE_SIMULATOR 0
+  #endif  // TARGET_IPHONE_SIMULATOR
+  // By default, GTM has provided it's own unittesting support, define this
+  // to use the support provided by Xcode, especially for the Xcode4 support
+  // for unittesting.
+  #ifndef GTM_IPHONE_USE_SENTEST
+    #define GTM_IPHONE_USE_SENTEST 0
+  #endif
+  #define GTM_MACOS_SDK 0
+#else
+  // For MacOS specific stuff
+  #define GTM_MACOS_SDK 1
+  #define GTM_IPHONE_SDK 0
+  #define GTM_IPHONE_SIMULATOR 0
+  #define GTM_IPHONE_DEVICE 0
+  #define GTM_IPHONE_USE_SENTEST 0
+#endif
+
+// Some of our own availability macros
+#if GTM_MACOS_SDK
+#define GTM_AVAILABLE_ONLY_ON_IPHONE UNAVAILABLE_ATTRIBUTE
+#define GTM_AVAILABLE_ONLY_ON_MACOS
+#else
+#define GTM_AVAILABLE_ONLY_ON_IPHONE
+#define GTM_AVAILABLE_ONLY_ON_MACOS UNAVAILABLE_ATTRIBUTE
+#endif
+
+// GC was dropped by Apple, define the old constant incase anyone still keys
+// off of it.
+#ifndef GTM_SUPPORT_GC
+  #define GTM_SUPPORT_GC 0
+#endif
+
+// To simplify support for 64bit (and Leopard in general), we provide the type
+// defines for non Leopard SDKs
+#if !(MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5)
+ // NSInteger/NSUInteger and Max/Mins
+  #ifndef NSINTEGER_DEFINED
+    #if (defined(__LP64__) && __LP64__) || NS_BUILD_32_LIKE_64
+      typedef long NSInteger;
+      typedef unsigned long NSUInteger;
+    #else
+      typedef int NSInteger;
+      typedef unsigned int NSUInteger;
+    #endif
+    #define NSIntegerMax    LONG_MAX
+    #define NSIntegerMin    LONG_MIN
+    #define NSUIntegerMax   ULONG_MAX
+    #define NSINTEGER_DEFINED 1
+  #endif  // NSINTEGER_DEFINED
+  // CGFloat
+  #ifndef CGFLOAT_DEFINED
+    #if defined(__LP64__) && __LP64__
+      // This really is an untested path (64bit on Tiger?)
+      typedef double CGFloat;
+      #define CGFLOAT_MIN DBL_MIN
+      #define CGFLOAT_MAX DBL_MAX
+      #define CGFLOAT_IS_DOUBLE 1
+    #else /* !defined(__LP64__) || !__LP64__ */
+      typedef float CGFloat;
+      #define CGFLOAT_MIN FLT_MIN
+      #define CGFLOAT_MAX FLT_MAX
+      #define CGFLOAT_IS_DOUBLE 0
+    #endif /* !defined(__LP64__) || !__LP64__ */
+    #define CGFLOAT_DEFINED 1
+  #endif // CGFLOAT_DEFINED
+#endif  // MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5
+
+// Some support for advanced clang static analysis functionality
+// See http://clang-analyzer.llvm.org/annotations.html
+#ifndef __has_feature      // Optional.
+  #define __has_feature(x) 0 // Compatibility with non-clang compilers.
+#endif
+
+#ifndef NS_RETURNS_RETAINED
+  #if __has_feature(attribute_ns_returns_retained)
+    #define NS_RETURNS_RETAINED __attribute__((ns_returns_retained))
+  #else
+    #define NS_RETURNS_RETAINED
+  #endif
+#endif
+
+#ifndef NS_RETURNS_NOT_RETAINED
+  #if __has_feature(attribute_ns_returns_not_retained)
+    #define NS_RETURNS_NOT_RETAINED __attribute__((ns_returns_not_retained))
+  #else
+    #define NS_RETURNS_NOT_RETAINED
+  #endif
+#endif
+
+#ifndef CF_RETURNS_RETAINED
+  #if __has_feature(attribute_cf_returns_retained)
+    #define CF_RETURNS_RETAINED __attribute__((cf_returns_retained))
+  #else
+    #define CF_RETURNS_RETAINED
+  #endif
+#endif
+
+#ifndef CF_RETURNS_NOT_RETAINED
+  #if __has_feature(attribute_cf_returns_not_retained)
+    #define CF_RETURNS_NOT_RETAINED __attribute__((cf_returns_not_retained))
+  #else
+    #define CF_RETURNS_NOT_RETAINED
+  #endif
+#endif
+
+#ifndef NS_CONSUMED
+  #if __has_feature(attribute_ns_consumed)
+    #define NS_CONSUMED __attribute__((ns_consumed))
+  #else
+    #define NS_CONSUMED
+  #endif
+#endif
+
+#ifndef CF_CONSUMED
+  #if __has_feature(attribute_cf_consumed)
+    #define CF_CONSUMED __attribute__((cf_consumed))
+  #else
+    #define CF_CONSUMED
+  #endif
+#endif
+
+#ifndef NS_CONSUMES_SELF
+  #if __has_feature(attribute_ns_consumes_self)
+    #define NS_CONSUMES_SELF __attribute__((ns_consumes_self))
+  #else
+    #define NS_CONSUMES_SELF
+  #endif
+#endif
+
+// Defined on 10.6 and above.
+#ifndef NS_FORMAT_ARGUMENT
+  #define NS_FORMAT_ARGUMENT(A)
+#endif
+
+// Defined on 10.6 and above.
+#ifndef NS_FORMAT_FUNCTION
+  #define NS_FORMAT_FUNCTION(F,A)
+#endif
+
+// Defined on 10.6 and above.
+#ifndef CF_FORMAT_ARGUMENT
+  #define CF_FORMAT_ARGUMENT(A)
+#endif
+
+// Defined on 10.6 and above.
+#ifndef CF_FORMAT_FUNCTION
+  #define CF_FORMAT_FUNCTION(F,A)
+#endif
+
+#ifndef GTM_NONNULL
+  #if defined(__has_attribute)
+    #if __has_attribute(nonnull)
+      #define GTM_NONNULL(x) __attribute__((nonnull x))
+    #else
+      #define GTM_NONNULL(x)
+    #endif
+  #else
+    #define GTM_NONNULL(x)
+  #endif
+#endif
+
+// Invalidates the initializer from which it's called.
+#ifndef GTMInvalidateInitializer
+  #if __has_feature(objc_arc)
+    #define GTMInvalidateInitializer() \
+      do { \
+        [self class]; /* Avoid warning of dead store to |self|. */ \
+        _GTMDevAssert(NO, @"Invalid initializer."); \
+        return nil; \
+      } while (0)
+  #else
+    #define GTMInvalidateInitializer() \
+      do { \
+        [self release]; \
+        _GTMDevAssert(NO, @"Invalid initializer."); \
+        return nil; \
+      } while (0)
+  #endif
+#endif
+
+#ifndef GTMCFAutorelease
+  #if __has_feature(objc_arc)
+    #define GTMCFAutorelease(x) CFBridgingRelease(x)
+  #else
+    #define GTMCFAutorelease(x) ([(id)x autorelease])
+  #endif
+#endif
+
+#ifdef __OBJC__
+
+// Declared here so that it can easily be used for logging tracking if
+// necessary. See GTMUnitTestDevLog.h for details.
+@class NSString;
+GTM_EXTERN void _GTMUnitTestDevLog(NSString *format, ...) NS_FORMAT_FUNCTION(1, 2);
+
+// Macro to allow you to create NSStrings out of other macros.
+// #define FOO foo
+// NSString *fooString = GTM_NSSTRINGIFY(FOO);
+#if !defined (GTM_NSSTRINGIFY)
+  #define GTM_NSSTRINGIFY_INNER(x) @#x
+  #define GTM_NSSTRINGIFY(x) GTM_NSSTRINGIFY_INNER(x)
+#endif
+
+// Macro to allow fast enumeration when building for 10.5 or later, and
+// reliance on NSEnumerator for 10.4.  Remember, NSDictionary w/ FastEnumeration
+// does keys, so pick the right thing, nothing is done on the FastEnumeration
+// side to be sure you're getting what you wanted.
+#ifndef GTM_FOREACH_OBJECT
+  #if TARGET_OS_IPHONE || !(MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5)
+    #define GTM_FOREACH_ENUMEREE(element, enumeration) \
+      for (element in enumeration)
+    #define GTM_FOREACH_OBJECT(element, collection) \
+      for (element in collection)
+    #define GTM_FOREACH_KEY(element, collection) \
+      for (element in collection)
+  #else
+    #define GTM_FOREACH_ENUMEREE(element, enumeration) \
+      for (NSEnumerator *_ ## element ## _enum = enumeration; \
+           (element = [_ ## element ## _enum nextObject]) != nil; )
+    #define GTM_FOREACH_OBJECT(element, collection) \
+      GTM_FOREACH_ENUMEREE(element, [collection objectEnumerator])
+    #define GTM_FOREACH_KEY(element, collection) \
+      GTM_FOREACH_ENUMEREE(element, [collection keyEnumerator])
+  #endif
+#endif
+
+// ============================================================================
+
+// To simplify support for both Leopard and Snow Leopard we declare
+// the Snow Leopard protocols that we need here.
+#if !defined(GTM_10_6_PROTOCOLS_DEFINED) && !(MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6)
+#define GTM_10_6_PROTOCOLS_DEFINED 1
+@protocol NSConnectionDelegate
+@end
+@protocol NSAnimationDelegate
+@end
+@protocol NSImageDelegate
+@end
+@protocol NSTabViewDelegate
+@end
+#endif  // !defined(GTM_10_6_PROTOCOLS_DEFINED) && !(MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6)
+
+// GTM_SEL_STRING is for specifying selector (usually property) names to KVC
+// or KVO methods.
+// In debug it will generate warnings for undeclared selectors if
+// -Wunknown-selector is turned on.
+// In release it will have no runtime overhead.
+#ifndef GTM_SEL_STRING
+  #ifdef DEBUG
+    #define GTM_SEL_STRING(selName) NSStringFromSelector(@selector(selName))
+  #else
+    #define GTM_SEL_STRING(selName) @#selName
+  #endif  // DEBUG
+#endif  // GTM_SEL_STRING
+
+#endif  // __OBJC__
diff --git a/google-breakpad/src/common/mac/GTMLogger.h b/google-breakpad/src/common/mac/GTMLogger.h
new file mode 100644
index 0000000..c4fd140
--- /dev/null
+++ b/google-breakpad/src/common/mac/GTMLogger.h
@@ -0,0 +1,504 @@
+//
+//  GTMLogger.h
+//
+//  Copyright 2007-2008 Google Inc.
+//
+//  Licensed under the Apache License, Version 2.0 (the "License"); you may not
+//  use this file except in compliance with the License.  You may obtain a copy
+//  of the License at
+//
+//  http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+//  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+//  License for the specific language governing permissions and limitations under
+//  the License.
+//
+
+// Key Abstractions
+// ----------------
+//
+// This file declares multiple classes and protocols that are used by the
+// GTMLogger logging system. The 4 main abstractions used in this file are the
+// following:
+//
+//   * logger (GTMLogger) - The main logging class that users interact with. It
+//   has methods for logging at different levels and uses a log writer, a log
+//   formatter, and a log filter to get the job done.
+//
+//   * log writer (GTMLogWriter) - Writes a given string to some log file, where
+//   a "log file" can be a physical file on disk, a POST over HTTP to some URL,
+//   or even some in-memory structure (e.g., a ring buffer).
+//
+//   * log formatter (GTMLogFormatter) - Given a format string and arguments as
+//   a va_list, returns a single formatted NSString. A "formatted string" could
+//   be a string with the date prepended, a string with values in a CSV format,
+//   or even a string of XML.
+//
+//   * log filter (GTMLogFilter) - Given a formatted log message as an NSString
+//   and the level at which the message is to be logged, this class will decide
+//   whether the given message should be logged or not. This is a flexible way
+//   to filter out messages logged at a certain level, messages that contain
+//   certain text, or filter nothing out at all. This gives the caller the
+//   flexibility to dynamically enable debug logging in Release builds.
+//
+// This file also declares some classes to handle the common log writer, log
+// formatter, and log filter cases. Callers can also create their own writers,
+// formatters, and filters and they can even build them on top of the ones
+// declared here. Keep in mind that your custom writer/formatter/filter may be
+// called from multiple threads, so it must be thread-safe.
+
+#import <Foundation/Foundation.h>
+#import "GTMDefines.h"
+
+// Predeclaration of used protocols that are declared later in this file.
+@protocol GTMLogWriter, GTMLogFormatter, GTMLogFilter;
+
+// GTMLogger
+//
+// GTMLogger is the primary user-facing class for an object-oriented logging
+// system. It is built on the concept of log formatters (GTMLogFormatter), log
+// writers (GTMLogWriter), and log filters (GTMLogFilter). When a message is
+// sent to a GTMLogger to log a message, the message is formatted using the log
+// formatter, then the log filter is consulted to see if the message should be
+// logged, and if so, the message is sent to the log writer to be written out.
+//
+// GTMLogger is intended to be a flexible and thread-safe logging solution. Its
+// flexibility comes from the fact that GTMLogger instances can be customized
+// with user defined formatters, filters, and writers. And these writers,
+// filters, and formatters can be combined, stacked, and customized in arbitrary
+// ways to suit the needs at hand. For example, multiple writers can be used at
+// the same time, and a GTMLogger instance can even be used as another
+// GTMLogger's writer. This allows for arbitrarily deep logging trees.
+//
+// A standard GTMLogger uses a writer that sends messages to standard out, a
+// formatter that smacks a timestamp and a few other bits of interesting
+// information on the message, and a filter that filters out debug messages from
+// release builds. Using the standard log settings, a log message will look like
+// the following:
+//
+//   2007-12-30 10:29:24.177 myapp[4588/0xa07d0f60] [lvl=1] foo=<Foo: 0x123>
+//
+// The output contains the date and time of the log message, the name of the
+// process followed by its process ID/thread ID, the log level at which the
+// message was logged (in the previous example the level was 1:
+// kGTMLoggerLevelDebug), and finally, the user-specified log message itself (in
+// this case, the log message was @"foo=%@", foo).
+//
+// Multiple instances of GTMLogger can be created, each configured their own
+// way.  Though GTMLogger is not a singleton (in the GoF sense), it does provide
+// access to a shared (i.e., globally accessible) GTMLogger instance. This makes
+// it convenient for all code in a process to use the same GTMLogger instance.
+// The shared GTMLogger instance can also be configured in an arbitrary, and
+// these configuration changes will affect all code that logs through the shared
+// instance.
+
+//
+// Log Levels
+// ----------
+// GTMLogger has 3 different log levels: Debug, Info, and Error. GTMLogger
+// doesn't take any special action based on the log level; it simply forwards
+// this information on to formatters, filters, and writers, each of which may
+// optionally take action based on the level. Since log level filtering is
+// performed at runtime, log messages are typically not filtered out at compile
+// time.  The exception to this rule is that calls to the GTMLoggerDebug() macro
+// *ARE* filtered out of non-DEBUG builds. This is to be backwards compatible
+// with behavior that many developers are currently used to. Note that this
+// means that GTMLoggerDebug(@"hi") will be compiled out of Release builds, but
+// [[GTMLogger sharedLogger] logDebug:@"hi"] will NOT be compiled out.
+//
+// Standard loggers are created with the GTMLogLevelFilter log filter, which
+// filters out certain log messages based on log level, and some other settings.
+//
+// In addition to the -logDebug:, -logInfo:, and -logError: methods defined on
+// GTMLogger itself, there are also C macros that make usage of the shared
+// GTMLogger instance very convenient. These macros are:
+//
+//   GTMLoggerDebug(...)
+//   GTMLoggerInfo(...)
+//   GTMLoggerError(...)
+//
+// Again, a notable feature of these macros is that GTMLogDebug() calls *will be
+// compiled out of non-DEBUG builds*.
+//
+// Standard Loggers
+// ----------------
+// GTMLogger has the concept of "standard loggers". A standard logger is simply
+// a logger that is pre-configured with some standard/common writer, formatter,
+// and filter combination. Standard loggers are created using the creation
+// methods beginning with "standard". The alternative to a standard logger is a
+// regular logger, which will send messages to stdout, with no special
+// formatting, and no filtering.
+//
+// How do I use GTMLogger?
+// ----------------------
+// The typical way you will want to use GTMLogger is to simply use the
+// GTMLogger*() macros for logging from code. That way we can easily make
+// changes to the GTMLogger class and simply update the macros accordingly. Only
+// your application startup code (perhaps, somewhere in main()) should use the
+// GTMLogger class directly in order to configure the shared logger, which all
+// of the code using the macros will be using. Again, this is just the typical
+// situation.
+//
+// To be complete, there are cases where you may want to use GTMLogger directly,
+// or even create separate GTMLogger instances for some reason. That's fine,
+// too.
+//
+// Examples
+// --------
+// The following show some common GTMLogger use cases.
+//
+// 1. You want to log something as simply as possible. Also, this call will only
+//    appear in debug builds. In non-DEBUG builds it will be completely removed.
+//
+//      GTMLoggerDebug(@"foo = %@", foo);
+//
+// 2. The previous example is similar to the following. The major difference is
+//    that the previous call (example 1) will be compiled out of Release builds
+//    but this statement will not be compiled out.
+//
+//      [[GTMLogger sharedLogger] logDebug:@"foo = %@", foo];
+//
+// 3. Send all logging output from the shared logger to a file. We do this by
+//    creating an NSFileHandle for writing associated with a file, and setting
+//    that file handle as the logger's writer.
+//
+//      NSFileHandle *f = [NSFileHandle fileHandleForWritingAtPath:@"/tmp/f.log"
+//                                                          create:YES];
+//      [[GTMLogger sharedLogger] setWriter:f];
+//      GTMLoggerError(@"hi");  // This will be sent to /tmp/f.log
+//
+// 4. Create a new GTMLogger that will log to a file. This example differs from
+//    the previous one because here we create a new GTMLogger that is different
+//    from the shared logger.
+//
+//      GTMLogger *logger = [GTMLogger standardLoggerWithPath:@"/tmp/temp.log"];
+//      [logger logInfo:@"hi temp log file"];
+//
+// 5. Create a logger that writes to stdout and does NOT do any formatting to
+//    the log message. This might be useful, for example, when writing a help
+//    screen for a command-line tool to standard output.
+//
+//      GTMLogger *logger = [GTMLogger logger];
+//      [logger logInfo:@"%@ version 0.1 usage", progName];
+//
+// 6. Send log output to stdout AND to a log file. The trick here is that
+//    NSArrays function as composite log writers, which means when an array is
+//    set as the log writer, it forwards all logging messages to all of its
+//    contained GTMLogWriters.
+//
+//      // Create array of GTMLogWriters
+//      NSArray *writers = [NSArray arrayWithObjects:
+//          [NSFileHandle fileHandleForWritingAtPath:@"/tmp/f.log" create:YES],
+//          [NSFileHandle fileHandleWithStandardOutput], nil];
+//
+//      GTMLogger *logger = [GTMLogger standardLogger];
+//      [logger setWriter:writers];
+//      [logger logInfo:@"hi"];  // Output goes to stdout and /tmp/f.log
+//
+// For futher details on log writers, formatters, and filters, see the
+// documentation below.
+//
+// NOTE: GTMLogger is application level logging.  By default it does nothing
+// with _GTMDevLog/_GTMDevAssert (see GTMDefines.h).  An application can choose
+// to bridge _GTMDevLog/_GTMDevAssert to GTMLogger by providing macro
+// definitions in its prefix header (see GTMDefines.h for how one would do
+// that).
+//
+@interface GTMLogger : NSObject {
+ @private
+  id<GTMLogWriter> writer_;
+  id<GTMLogFormatter> formatter_;
+  id<GTMLogFilter> filter_;
+}
+
+//
+// Accessors for the shared logger instance
+//
+
+// Returns a shared/global standard GTMLogger instance. Callers should typically
+// use this method to get a GTMLogger instance, unless they explicitly want
+// their own instance to configure for their own needs. This is the only method
+// that returns a shared instance; all the rest return new GTMLogger instances.
++ (id)sharedLogger;
+
+// Sets the shared logger instance to |logger|. Future calls to +sharedLogger
+// will return |logger| instead.
++ (void)setSharedLogger:(GTMLogger *)logger;
+
+//
+// Creation methods
+//
+
+// Returns a new autoreleased GTMLogger instance that will log to stdout, using
+// the GTMLogStandardFormatter, and the GTMLogLevelFilter filter.
++ (id)standardLogger;
+
+// Same as +standardLogger, but logs to stderr.
++ (id)standardLoggerWithStderr;
+
+// Same as +standardLogger but levels >= kGTMLoggerLevelError are routed to
+// stderr, everything else goes to stdout.
++ (id)standardLoggerWithStdoutAndStderr;
+
+// Returns a new standard GTMLogger instance with a log writer that will
+// write to the file at |path|, and will use the GTMLogStandardFormatter and
+// GTMLogLevelFilter classes. If |path| does not exist, it will be created.
++ (id)standardLoggerWithPath:(NSString *)path;
+
+// Returns an autoreleased GTMLogger instance that will use the specified
+// |writer|, |formatter|, and |filter|.
++ (id)loggerWithWriter:(id<GTMLogWriter>)writer
+             formatter:(id<GTMLogFormatter>)formatter
+                filter:(id<GTMLogFilter>)filter;
+
+// Returns an autoreleased GTMLogger instance that logs to stdout, with the
+// basic formatter, and no filter. The returned logger differs from the logger
+// returned by +standardLogger because this one does not do any filtering and
+// does not do any special log formatting; this is the difference between a
+// "regular" logger and a "standard" logger.
++ (id)logger;
+
+// Designated initializer. This method returns a GTMLogger initialized with the
+// specified |writer|, |formatter|, and |filter|. See the setter methods below
+// for what values will be used if nil is passed for a parameter.
+- (id)initWithWriter:(id<GTMLogWriter>)writer
+           formatter:(id<GTMLogFormatter>)formatter
+              filter:(id<GTMLogFilter>)filter;
+
+//
+// Logging  methods
+//
+
+// Logs a message at the debug level (kGTMLoggerLevelDebug).
+- (void)logDebug:(NSString *)fmt, ... NS_FORMAT_FUNCTION(1, 2);
+// Logs a message at the info level (kGTMLoggerLevelInfo).
+- (void)logInfo:(NSString *)fmt, ... NS_FORMAT_FUNCTION(1, 2);
+// Logs a message at the error level (kGTMLoggerLevelError).
+- (void)logError:(NSString *)fmt, ... NS_FORMAT_FUNCTION(1, 2);
+// Logs a message at the assert level (kGTMLoggerLevelAssert).
+- (void)logAssert:(NSString *)fmt, ... NS_FORMAT_FUNCTION(1, 2);
+
+
+//
+// Accessors
+//
+
+// Accessor methods for the log writer. If the log writer is set to nil,
+// [NSFileHandle fileHandleWithStandardOutput] is used.
+- (id<GTMLogWriter>)writer;
+- (void)setWriter:(id<GTMLogWriter>)writer;
+
+// Accessor methods for the log formatter. If the log formatter is set to nil,
+// GTMLogBasicFormatter is used. This formatter will format log messages in a
+// plain printf style.
+- (id<GTMLogFormatter>)formatter;
+- (void)setFormatter:(id<GTMLogFormatter>)formatter;
+
+// Accessor methods for the log filter. If the log filter is set to nil,
+// GTMLogNoFilter is used, which allows all log messages through.
+- (id<GTMLogFilter>)filter;
+- (void)setFilter:(id<GTMLogFilter>)filter;
+
+@end  // GTMLogger
+
+
+// Helper functions that are used by the convenience GTMLogger*() macros that
+// enable the logging of function names.
+@interface GTMLogger (GTMLoggerMacroHelpers)
+- (void)logFuncDebug:(const char *)func msg:(NSString *)fmt, ...
+  NS_FORMAT_FUNCTION(2, 3);
+- (void)logFuncInfo:(const char *)func msg:(NSString *)fmt, ...
+  NS_FORMAT_FUNCTION(2, 3);
+- (void)logFuncError:(const char *)func msg:(NSString *)fmt, ...
+  NS_FORMAT_FUNCTION(2, 3);
+- (void)logFuncAssert:(const char *)func msg:(NSString *)fmt, ...
+  NS_FORMAT_FUNCTION(2, 3);
+@end  // GTMLoggerMacroHelpers
+
+
+// The convenience macros are only defined if they haven't already been defined.
+#ifndef GTMLoggerInfo
+
+// Convenience macros that log to the shared GTMLogger instance. These macros
+// are how users should typically log to GTMLogger. Notice that GTMLoggerDebug()
+// calls will be compiled out of non-Debug builds.
+#define GTMLoggerDebug(...)  \
+  [[GTMLogger sharedLogger] logFuncDebug:__func__ msg:__VA_ARGS__]
+#define GTMLoggerInfo(...)   \
+  [[GTMLogger sharedLogger] logFuncInfo:__func__ msg:__VA_ARGS__]
+#define GTMLoggerError(...)  \
+  [[GTMLogger sharedLogger] logFuncError:__func__ msg:__VA_ARGS__]
+#define GTMLoggerAssert(...) \
+  [[GTMLogger sharedLogger] logFuncAssert:__func__ msg:__VA_ARGS__]
+
+// If we're not in a debug build, remove the GTMLoggerDebug statements. This
+// makes calls to GTMLoggerDebug "compile out" of Release builds
+#ifndef DEBUG
+#undef GTMLoggerDebug
+#define GTMLoggerDebug(...) do {} while(0)
+#endif
+
+#endif  // !defined(GTMLoggerInfo)
+
+// Log levels.
+typedef enum {
+  kGTMLoggerLevelUnknown,
+  kGTMLoggerLevelDebug,
+  kGTMLoggerLevelInfo,
+  kGTMLoggerLevelError,
+  kGTMLoggerLevelAssert,
+} GTMLoggerLevel;
+
+
+//
+//   Log Writers
+//
+
+// Protocol to be implemented by a GTMLogWriter instance.
+@protocol GTMLogWriter <NSObject>
+// Writes the given log message to where the log writer is configured to write.
+- (void)logMessage:(NSString *)msg level:(GTMLoggerLevel)level;
+@end  // GTMLogWriter
+
+
+// Simple category on NSFileHandle that makes NSFileHandles valid log writers.
+// This is convenient because something like, say, +fileHandleWithStandardError
+// now becomes a valid log writer. Log messages are written to the file handle
+// with a newline appended.
+@interface NSFileHandle (GTMFileHandleLogWriter) <GTMLogWriter>
+// Opens the file at |path| in append mode, and creates the file with |mode|
+// if it didn't previously exist.
++ (id)fileHandleForLoggingAtPath:(NSString *)path mode:(mode_t)mode;
+@end  // NSFileHandle
+
+
+// This category makes NSArray a GTMLogWriter that can be composed of other
+// GTMLogWriters. This is the classic Composite GoF design pattern. When the
+// GTMLogWriter -logMessage:level: message is sent to the array, the array
+// forwards the message to all of its elements that implement the GTMLogWriter
+// protocol.
+//
+// This is useful in situations where you would like to send log output to
+// multiple log writers at the same time. Simply create an NSArray of the log
+// writers you wish to use, then set the array as the "writer" for your
+// GTMLogger instance.
+@interface NSArray (GTMArrayCompositeLogWriter) <GTMLogWriter>
+@end  // GTMArrayCompositeLogWriter
+
+
+// This category adapts the GTMLogger interface so that it can be used as a log
+// writer; it's an "adapter" in the GoF Adapter pattern sense.
+//
+// This is useful when you want to configure a logger to log to a specific
+// writer with a specific formatter and/or filter. But you want to also compose
+// that with a different log writer that may have its own formatter and/or
+// filter.
+@interface GTMLogger (GTMLoggerLogWriter) <GTMLogWriter>
+@end  // GTMLoggerLogWriter
+
+
+//
+//   Log Formatters
+//
+
+// Protocol to be implemented by a GTMLogFormatter instance.
+@protocol GTMLogFormatter <NSObject>
+// Returns a formatted string using the format specified in |fmt| and the va
+// args specified in |args|.
+- (NSString *)stringForFunc:(NSString *)func
+                 withFormat:(NSString *)fmt
+                     valist:(va_list)args
+                      level:(GTMLoggerLevel)level NS_FORMAT_FUNCTION(2, 0);
+@end  // GTMLogFormatter
+
+
+// A basic log formatter that formats a string the same way that NSLog (or
+// printf) would. It does not do anything fancy, nor does it add any data of its
+// own.
+@interface GTMLogBasicFormatter : NSObject <GTMLogFormatter>
+
+// Helper method for prettying C99 __func__ and GCC __PRETTY_FUNCTION__
+- (NSString *)prettyNameForFunc:(NSString *)func;
+
+@end  // GTMLogBasicFormatter
+
+
+// A log formatter that formats the log string like the basic formatter, but
+// also prepends a timestamp and some basic process info to the message, as
+// shown in the following sample output.
+//   2007-12-30 10:29:24.177 myapp[4588/0xa07d0f60] [lvl=1] log mesage here
+@interface GTMLogStandardFormatter : GTMLogBasicFormatter {
+ @private
+  NSDateFormatter *dateFormatter_;  // yyyy-MM-dd HH:mm:ss.SSS
+  NSString *pname_;
+  pid_t pid_;
+}
+@end  // GTMLogStandardFormatter
+
+
+//
+//   Log Filters
+//
+
+// Protocol to be imlemented by a GTMLogFilter instance.
+@protocol GTMLogFilter <NSObject>
+// Returns YES if |msg| at |level| should be filtered out; NO otherwise.
+- (BOOL)filterAllowsMessage:(NSString *)msg level:(GTMLoggerLevel)level;
+@end  // GTMLogFilter
+
+
+// A log filter that filters messages at the kGTMLoggerLevelDebug level out of
+// non-debug builds. Messages at the kGTMLoggerLevelInfo level are also filtered
+// out of non-debug builds unless GTMVerboseLogging is set in the environment or
+// the processes's defaults. Messages at the kGTMLoggerLevelError level are
+// never filtered.
+@interface GTMLogLevelFilter : NSObject <GTMLogFilter>
+@end  // GTMLogLevelFilter
+
+// A simple log filter that does NOT filter anything out;
+// -filterAllowsMessage:level will always return YES. This can be a convenient
+// way to enable debug-level logging in release builds (if you so desire).
+@interface GTMLogNoFilter : NSObject <GTMLogFilter>
+@end  // GTMLogNoFilter
+
+
+// Base class for custom level filters. Not for direct use, use the minimum
+// or maximum level subclasses below.
+@interface GTMLogAllowedLevelFilter : NSObject <GTMLogFilter> {
+ @private
+  NSIndexSet *allowedLevels_;
+}
+@end
+
+// A log filter that allows you to set a minimum log level. Messages below this
+// level will be filtered.
+@interface GTMLogMininumLevelFilter : GTMLogAllowedLevelFilter
+
+// Designated initializer, logs at levels < |level| will be filtered.
+- (id)initWithMinimumLevel:(GTMLoggerLevel)level;
+
+@end
+
+// A log filter that allows you to set a maximum log level. Messages whose level
+// exceeds this level will be filtered. This is really only useful if you have
+// a composite GTMLogger that is sending the other messages elsewhere.
+@interface GTMLogMaximumLevelFilter : GTMLogAllowedLevelFilter
+
+// Designated initializer, logs at levels > |level| will be filtered.
+- (id)initWithMaximumLevel:(GTMLoggerLevel)level;
+
+@end
+
+
+// For subclasses only
+@interface GTMLogger (PrivateMethods)
+
+- (void)logInternalFunc:(const char *)func
+                 format:(NSString *)fmt
+                 valist:(va_list)args
+                  level:(GTMLoggerLevel)level NS_FORMAT_FUNCTION(2, 0);
+
+@end
+
diff --git a/google-breakpad/src/common/mac/GTMLogger.m b/google-breakpad/src/common/mac/GTMLogger.m
new file mode 100644
index 0000000..ebc5836
--- /dev/null
+++ b/google-breakpad/src/common/mac/GTMLogger.m
@@ -0,0 +1,611 @@
+//
+//  GTMLogger.m
+//
+//  Copyright 2007-2008 Google Inc.
+//
+//  Licensed under the Apache License, Version 2.0 (the "License"); you may not
+//  use this file except in compliance with the License.  You may obtain a copy
+//  of the License at
+//
+//  http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+//  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+//  License for the specific language governing permissions and limitations under
+//  the License.
+//
+
+#import "GTMLogger.h"
+#import <fcntl.h>
+#import <unistd.h>
+#import <stdlib.h>
+#import <pthread.h>
+
+
+#if !defined(__clang__) && (__GNUC__*10+__GNUC_MINOR__ >= 42)
+// Some versions of GCC (4.2 and below AFAIK) aren't great about supporting
+// -Wmissing-format-attribute
+// when the function is anything more complex than foo(NSString *fmt, ...).
+// You see the error inside the function when you turn ... into va_args and
+// attempt to call another function (like vsprintf for example).
+// So we just shut off the warning for this file. We reenable it at the end.
+#pragma GCC diagnostic ignored "-Wmissing-format-attribute"
+#endif  // !__clang__
+
+// Reference to the shared GTMLogger instance. This is not a singleton, it's
+// just an easy reference to one shared instance.
+static GTMLogger *gSharedLogger = nil;
+
+
+@implementation GTMLogger
+
+// Returns a pointer to the shared logger instance. If none exists, a standard
+// logger is created and returned.
++ (id)sharedLogger {
+  @synchronized(self) {
+    if (gSharedLogger == nil) {
+      gSharedLogger = [[self standardLogger] retain];
+    }
+  }
+  return [[gSharedLogger retain] autorelease];
+}
+
++ (void)setSharedLogger:(GTMLogger *)logger {
+  @synchronized(self) {
+    [gSharedLogger autorelease];
+    gSharedLogger = [logger retain];
+  }
+}
+
++ (id)standardLogger {
+  // Don't trust NSFileHandle not to throw
+  @try {
+    id<GTMLogWriter> writer = [NSFileHandle fileHandleWithStandardOutput];
+    id<GTMLogFormatter> fr = [[[GTMLogStandardFormatter alloc] init]
+                                 autorelease];
+    id<GTMLogFilter> filter = [[[GTMLogLevelFilter alloc] init] autorelease];
+    return [[[self alloc] initWithWriter:writer
+                               formatter:fr
+                                  filter:filter] autorelease];
+  }
+  @catch (id e) {
+    // Ignored
+  }
+  return nil;
+}
+
++ (id)standardLoggerWithStderr {
+  // Don't trust NSFileHandle not to throw
+  @try {
+    id me = [self standardLogger];
+    [me setWriter:[NSFileHandle fileHandleWithStandardError]];
+    return me;
+  }
+  @catch (id e) {
+    // Ignored
+  }
+  return nil;
+}
+
++ (id)standardLoggerWithStdoutAndStderr {
+  // We're going to take advantage of the GTMLogger to GTMLogWriter adaptor
+  // and create a composite logger that an outer "standard" logger can use
+  // as a writer. Our inner loggers should apply no formatting since the main
+  // logger does that and we want the caller to be able to change formatters
+  // or add writers without knowing the inner structure of our composite.
+
+  // Don't trust NSFileHandle not to throw
+  @try {
+    GTMLogBasicFormatter *formatter = [[[GTMLogBasicFormatter alloc] init] 
+                                          autorelease];
+    GTMLogger *stdoutLogger =
+        [self loggerWithWriter:[NSFileHandle fileHandleWithStandardOutput]
+                     formatter:formatter
+                        filter:[[[GTMLogMaximumLevelFilter alloc]
+                                  initWithMaximumLevel:kGTMLoggerLevelInfo]
+                                      autorelease]];
+    GTMLogger *stderrLogger =
+        [self loggerWithWriter:[NSFileHandle fileHandleWithStandardError]
+                     formatter:formatter
+                        filter:[[[GTMLogMininumLevelFilter alloc]
+                                  initWithMinimumLevel:kGTMLoggerLevelError]
+                                      autorelease]];
+    GTMLogger *compositeWriter =
+        [self loggerWithWriter:[NSArray arrayWithObjects:
+                                   stdoutLogger, stderrLogger, nil]
+                     formatter:formatter
+                        filter:[[[GTMLogNoFilter alloc] init] autorelease]];
+    GTMLogger *outerLogger = [self standardLogger];
+    [outerLogger setWriter:compositeWriter];
+    return outerLogger;
+  }
+  @catch (id e) {
+    // Ignored
+  }
+  return nil;
+}
+
++ (id)standardLoggerWithPath:(NSString *)path {
+  @try {
+    NSFileHandle *fh = [NSFileHandle fileHandleForLoggingAtPath:path mode:0644];
+    if (fh == nil) return nil;
+    id me = [self standardLogger];
+    [me setWriter:fh];
+    return me;
+  }
+  @catch (id e) {
+    // Ignored
+  }
+  return nil;
+}
+
++ (id)loggerWithWriter:(id<GTMLogWriter>)writer
+             formatter:(id<GTMLogFormatter>)formatter
+                filter:(id<GTMLogFilter>)filter {
+  return [[[self alloc] initWithWriter:writer
+                             formatter:formatter
+                                filter:filter] autorelease];
+}
+
++ (id)logger {
+  return [[[self alloc] init] autorelease];
+}
+
+- (id)init {
+  return [self initWithWriter:nil formatter:nil filter:nil];
+}
+
+- (id)initWithWriter:(id<GTMLogWriter>)writer
+           formatter:(id<GTMLogFormatter>)formatter
+              filter:(id<GTMLogFilter>)filter {
+  if ((self = [super init])) {
+    [self setWriter:writer];
+    [self setFormatter:formatter];
+    [self setFilter:filter];
+  }
+  return self;
+}
+
+- (void)dealloc {
+  // Unlikely, but |writer_| may be an NSFileHandle, which can throw
+  @try {
+    [formatter_ release];
+    [filter_ release];
+    [writer_ release];
+  }
+  @catch (id e) {
+    // Ignored
+  }
+  [super dealloc];
+}
+
+- (id<GTMLogWriter>)writer {
+  return [[writer_ retain] autorelease];
+}
+
+- (void)setWriter:(id<GTMLogWriter>)writer {
+  @synchronized(self) {
+    [writer_ autorelease];
+    writer_ = nil;
+    if (writer == nil) {
+      // Try to use stdout, but don't trust NSFileHandle
+      @try {
+        writer_ = [[NSFileHandle fileHandleWithStandardOutput] retain];
+      }
+      @catch (id e) {
+        // Leave |writer_| nil
+      }
+    } else {
+      writer_ = [writer retain];
+    }
+  }
+}
+
+- (id<GTMLogFormatter>)formatter {
+  return [[formatter_ retain] autorelease];
+}
+
+- (void)setFormatter:(id<GTMLogFormatter>)formatter {
+  @synchronized(self) {
+    [formatter_ autorelease];
+    formatter_ = nil;
+    if (formatter == nil) {
+      @try {
+        formatter_ = [[GTMLogBasicFormatter alloc] init];
+      }
+      @catch (id e) {
+        // Leave |formatter_| nil
+      }
+    } else {
+      formatter_ = [formatter retain];
+    }
+  }
+}
+
+- (id<GTMLogFilter>)filter {
+  return [[filter_ retain] autorelease];
+}
+
+- (void)setFilter:(id<GTMLogFilter>)filter {
+  @synchronized(self) {
+    [filter_ autorelease];
+    filter_ = nil;
+    if (filter == nil) {
+      @try {
+        filter_ = [[GTMLogNoFilter alloc] init];
+      }
+      @catch (id e) {
+        // Leave |filter_| nil
+      }
+    } else {
+      filter_ = [filter retain];
+    }
+  }
+}
+
+- (void)logDebug:(NSString *)fmt, ... {
+  va_list args;
+  va_start(args, fmt);
+  [self logInternalFunc:NULL format:fmt valist:args level:kGTMLoggerLevelDebug];
+  va_end(args);
+}
+
+- (void)logInfo:(NSString *)fmt, ... {
+  va_list args;
+  va_start(args, fmt);
+  [self logInternalFunc:NULL format:fmt valist:args level:kGTMLoggerLevelInfo];
+  va_end(args);
+}
+
+- (void)logError:(NSString *)fmt, ... {
+  va_list args;
+  va_start(args, fmt);
+  [self logInternalFunc:NULL format:fmt valist:args level:kGTMLoggerLevelError];
+  va_end(args);
+}
+
+- (void)logAssert:(NSString *)fmt, ... {
+  va_list args;
+  va_start(args, fmt);
+  [self logInternalFunc:NULL format:fmt valist:args level:kGTMLoggerLevelAssert];
+  va_end(args);
+}
+
+@end  // GTMLogger
+
+@implementation GTMLogger (GTMLoggerMacroHelpers)
+
+- (void)logFuncDebug:(const char *)func msg:(NSString *)fmt, ... {
+  va_list args;
+  va_start(args, fmt);
+  [self logInternalFunc:func format:fmt valist:args level:kGTMLoggerLevelDebug];
+  va_end(args);
+}
+
+- (void)logFuncInfo:(const char *)func msg:(NSString *)fmt, ... {
+  va_list args;
+  va_start(args, fmt);
+  [self logInternalFunc:func format:fmt valist:args level:kGTMLoggerLevelInfo];
+  va_end(args);
+}
+
+- (void)logFuncError:(const char *)func msg:(NSString *)fmt, ... {
+  va_list args;
+  va_start(args, fmt);
+  [self logInternalFunc:func format:fmt valist:args level:kGTMLoggerLevelError];
+  va_end(args);
+}
+
+- (void)logFuncAssert:(const char *)func msg:(NSString *)fmt, ... {
+  va_list args;
+  va_start(args, fmt);
+  [self logInternalFunc:func format:fmt valist:args level:kGTMLoggerLevelAssert];
+  va_end(args);
+}
+
+@end  // GTMLoggerMacroHelpers
+
+@implementation GTMLogger (PrivateMethods)
+
+- (void)logInternalFunc:(const char *)func
+                 format:(NSString *)fmt
+                 valist:(va_list)args
+                  level:(GTMLoggerLevel)level {
+  // Primary point where logging happens, logging should never throw, catch
+  // everything.
+  @try {
+    NSString *fname = func ? [NSString stringWithUTF8String:func] : nil;
+    NSString *msg = [formatter_ stringForFunc:fname
+                                   withFormat:fmt
+                                       valist:args
+                                        level:level];
+    if (msg && [filter_ filterAllowsMessage:msg level:level])
+      [writer_ logMessage:msg level:level];
+  }
+  @catch (id e) {
+    // Ignored
+  }
+}
+
+@end  // PrivateMethods
+
+
+@implementation NSFileHandle (GTMFileHandleLogWriter)
+
++ (id)fileHandleForLoggingAtPath:(NSString *)path mode:(mode_t)mode {
+  int fd = -1;
+  if (path) {
+    int flags = O_WRONLY | O_APPEND | O_CREAT;
+    fd = open([path fileSystemRepresentation], flags, mode);
+  }
+  if (fd == -1) return nil;
+  return [[[self alloc] initWithFileDescriptor:fd
+                                closeOnDealloc:YES] autorelease];
+}
+
+- (void)logMessage:(NSString *)msg level:(GTMLoggerLevel)level {
+  @synchronized(self) {
+    // Closed pipes should not generate exceptions in our caller. Catch here
+    // as well [GTMLogger logInternalFunc:...] so that an exception in this
+    // writer does not prevent other writers from having a chance.
+    @try {
+      NSString *line = [NSString stringWithFormat:@"%@\n", msg];
+      [self writeData:[line dataUsingEncoding:NSUTF8StringEncoding]];
+    }
+    @catch (id e) {
+      // Ignored
+    }
+  }
+}
+
+@end  // GTMFileHandleLogWriter
+
+
+@implementation NSArray (GTMArrayCompositeLogWriter)
+
+- (void)logMessage:(NSString *)msg level:(GTMLoggerLevel)level {
+  @synchronized(self) {
+    id<GTMLogWriter> child = nil;
+    GTM_FOREACH_OBJECT(child, self) {
+      if ([child conformsToProtocol:@protocol(GTMLogWriter)])
+        [child logMessage:msg level:level];
+    }
+  }
+}
+
+@end  // GTMArrayCompositeLogWriter
+
+
+@implementation GTMLogger (GTMLoggerLogWriter)
+
+- (void)logMessage:(NSString *)msg level:(GTMLoggerLevel)level {
+  switch (level) {
+    case kGTMLoggerLevelDebug:
+      [self logDebug:@"%@", msg];
+      break;
+    case kGTMLoggerLevelInfo:
+      [self logInfo:@"%@", msg];
+      break;
+    case kGTMLoggerLevelError:
+      [self logError:@"%@", msg];
+      break;
+    case kGTMLoggerLevelAssert:
+      [self logAssert:@"%@", msg];
+      break;
+    default:
+      // Ignore the message.
+      break;
+  }
+}
+
+@end  // GTMLoggerLogWriter
+
+
+@implementation GTMLogBasicFormatter
+
+- (NSString *)prettyNameForFunc:(NSString *)func {
+  NSString *name = [func stringByTrimmingCharactersInSet:
+                     [NSCharacterSet whitespaceAndNewlineCharacterSet]];
+  NSString *function = @"(unknown)";
+  if ([name length]) {
+    if (// Objective C __func__ and __PRETTY_FUNCTION__
+        [name hasPrefix:@"-["] || [name hasPrefix:@"+["] ||
+        // C++ __PRETTY_FUNCTION__ and other preadorned formats
+        [name hasSuffix:@")"]) {
+      function = name;
+    } else {
+      // Assume C99 __func__
+      function = [NSString stringWithFormat:@"%@()", name];
+    }
+  }
+  return function;
+}
+
+- (NSString *)stringForFunc:(NSString *)func
+                 withFormat:(NSString *)fmt
+                     valist:(va_list)args
+                      level:(GTMLoggerLevel)level {
+  // Performance note: We may want to do a quick check here to see if |fmt|
+  // contains a '%', and if not, simply return 'fmt'.
+  if (!(fmt && args)) return nil;
+  return [[[NSString alloc] initWithFormat:fmt arguments:args] autorelease];
+}
+
+@end  // GTMLogBasicFormatter
+
+
+@implementation GTMLogStandardFormatter
+
+- (id)init {
+  if ((self = [super init])) {
+    dateFormatter_ = [[NSDateFormatter alloc] init];
+    [dateFormatter_ setFormatterBehavior:NSDateFormatterBehavior10_4];
+    [dateFormatter_ setDateFormat:@"yyyy-MM-dd HH:mm:ss.SSS"];
+    pname_ = [[[NSProcessInfo processInfo] processName] copy];
+    pid_ = [[NSProcessInfo processInfo] processIdentifier];
+    if (!(dateFormatter_ && pname_)) {
+      [self release];
+      return nil;
+    }
+  }
+  return self;
+}
+
+- (void)dealloc {
+  [dateFormatter_ release];
+  [pname_ release];
+  [super dealloc];
+}
+
+- (NSString *)stringForFunc:(NSString *)func
+                 withFormat:(NSString *)fmt
+                     valist:(va_list)args
+                      level:(GTMLoggerLevel)level {
+  NSString *tstamp = nil;
+  @synchronized (dateFormatter_) {
+    tstamp = [dateFormatter_ stringFromDate:[NSDate date]];
+  }
+  return [NSString stringWithFormat:@"%@ %@[%d/%p] [lvl=%d] %@ %@",
+           tstamp, pname_, pid_, pthread_self(),
+           level, [self prettyNameForFunc:func],
+           // |super| has guard for nil |fmt| and |args|
+           [super stringForFunc:func withFormat:fmt valist:args level:level]];
+}
+
+@end  // GTMLogStandardFormatter
+
+
+@implementation GTMLogLevelFilter
+
+// Check the environment and the user preferences for the GTMVerboseLogging key
+// to see if verbose logging has been enabled. The environment variable will
+// override the defaults setting, so check the environment first.
+// COV_NF_START
+static BOOL IsVerboseLoggingEnabled(void) {
+  static NSString *const kVerboseLoggingKey = @"GTMVerboseLogging";
+  NSString *value = [[[NSProcessInfo processInfo] environment]
+                        objectForKey:kVerboseLoggingKey];
+  if (value) {
+    // Emulate [NSString boolValue] for pre-10.5
+    value = [value stringByTrimmingCharactersInSet:
+                [NSCharacterSet whitespaceAndNewlineCharacterSet]];
+    if ([[value uppercaseString] hasPrefix:@"Y"] ||
+        [[value uppercaseString] hasPrefix:@"T"] ||
+        [value intValue]) {
+      return YES;
+    } else {
+      return NO;
+    }
+  }
+  return [[NSUserDefaults standardUserDefaults] boolForKey:kVerboseLoggingKey];
+}
+// COV_NF_END
+
+// In DEBUG builds, log everything. If we're not in a debug build we'll assume
+// that we're in a Release build.
+- (BOOL)filterAllowsMessage:(NSString *)msg level:(GTMLoggerLevel)level {
+#if defined(DEBUG) && DEBUG
+  return YES;
+#endif
+
+  BOOL allow = YES;
+
+  switch (level) {
+    case kGTMLoggerLevelDebug:
+      allow = NO;
+      break;
+    case kGTMLoggerLevelInfo:
+      allow = IsVerboseLoggingEnabled();
+      break;
+    case kGTMLoggerLevelError:
+      allow = YES;
+      break;
+    case kGTMLoggerLevelAssert:
+      allow = YES;
+      break;
+    default:
+      allow = YES;
+      break;
+  }
+
+  return allow;
+}
+
+@end  // GTMLogLevelFilter
+
+
+@implementation GTMLogNoFilter
+
+- (BOOL)filterAllowsMessage:(NSString *)msg level:(GTMLoggerLevel)level {
+  return YES;  // Allow everything through
+}
+
+@end  // GTMLogNoFilter
+
+
+@implementation GTMLogAllowedLevelFilter
+
+// Private designated initializer
+- (id)initWithAllowedLevels:(NSIndexSet *)levels {
+  self = [super init];
+  if (self != nil) {
+    allowedLevels_ = [levels retain];
+    // Cap min/max level
+    if (!allowedLevels_ ||
+        // NSIndexSet is unsigned so only check the high bound, but need to
+        // check both first and last index because NSIndexSet appears to allow
+        // wraparound.
+        ([allowedLevels_ firstIndex] > kGTMLoggerLevelAssert) ||
+        ([allowedLevels_ lastIndex] > kGTMLoggerLevelAssert)) {
+      [self release];
+      return nil;
+    }
+  }
+  return self;
+}
+
+- (id)init {
+  // Allow all levels in default init
+  return [self initWithAllowedLevels:[NSIndexSet indexSetWithIndexesInRange:
+             NSMakeRange(kGTMLoggerLevelUnknown,
+                 (kGTMLoggerLevelAssert - kGTMLoggerLevelUnknown + 1))]];
+}
+
+- (void)dealloc {
+  [allowedLevels_ release];
+  [super dealloc];
+}
+
+- (BOOL)filterAllowsMessage:(NSString *)msg level:(GTMLoggerLevel)level {
+  return [allowedLevels_ containsIndex:level];
+}
+
+@end  // GTMLogAllowedLevelFilter
+
+
+@implementation GTMLogMininumLevelFilter
+
+- (id)initWithMinimumLevel:(GTMLoggerLevel)level {
+  return [super initWithAllowedLevels:[NSIndexSet indexSetWithIndexesInRange:
+             NSMakeRange(level,
+                         (kGTMLoggerLevelAssert - level + 1))]];
+}
+
+@end  // GTMLogMininumLevelFilter
+
+
+@implementation GTMLogMaximumLevelFilter
+
+- (id)initWithMaximumLevel:(GTMLoggerLevel)level {
+  return [super initWithAllowedLevels:[NSIndexSet indexSetWithIndexesInRange:
+             NSMakeRange(kGTMLoggerLevelUnknown, level + 1)]];
+}
+
+@end  // GTMLogMaximumLevelFilter
+
+#if !defined(__clang__) && (__GNUC__*10+__GNUC_MINOR__ >= 42)
+// See comment at top of file.
+#pragma GCC diagnostic error "-Wmissing-format-attribute"
+#endif  // !__clang__
+
diff --git a/google-breakpad/src/common/mac/HTTPMultipartUpload.h b/google-breakpad/src/common/mac/HTTPMultipartUpload.h
new file mode 100644
index 0000000..42e8fed
--- /dev/null
+++ b/google-breakpad/src/common/mac/HTTPMultipartUpload.h
@@ -0,0 +1,61 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// HTTPMultipartUpload: A multipart/form-data HTTP uploader.
+// Each parameter pair is sent as a boundary
+// Each file is sent with a name field in addition to the filename and data
+// The data will be sent synchronously.
+
+#import <Foundation/Foundation.h>
+
+@interface HTTPMultipartUpload : NSObject {
+ @protected
+  NSURL *url_;                  // The destination URL (STRONG)
+  NSDictionary *parameters_;    // The key/value pairs for sending data (STRONG)
+  NSMutableDictionary *files_;  // Dictionary of name/file-path (STRONG)
+  NSString *boundary_;          // The boundary string (STRONG)
+  NSHTTPURLResponse *response_; // The response from the send (STRONG)
+}
+
+- (id)initWithURL:(NSURL *)url;
+
+- (NSURL *)URL;
+
+- (void)setParameters:(NSDictionary *)parameters;
+- (NSDictionary *)parameters;
+
+- (void)addFileAtPath:(NSString *)path name:(NSString *)name;
+- (void)addFileContents:(NSData *)data name:(NSString *)name;
+- (NSDictionary *)files;
+
+// Set the data and return the response
+- (NSData *)send:(NSError **)error;
+- (NSHTTPURLResponse *)response;
+
+@end
diff --git a/google-breakpad/src/common/mac/HTTPMultipartUpload.m b/google-breakpad/src/common/mac/HTTPMultipartUpload.m
new file mode 100644
index 0000000..29fa040
--- /dev/null
+++ b/google-breakpad/src/common/mac/HTTPMultipartUpload.m
@@ -0,0 +1,213 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#import "HTTPMultipartUpload.h"
+#import "GTMDefines.h"
+
+@interface HTTPMultipartUpload(PrivateMethods)
+- (NSString *)multipartBoundary;
+// Each of the following methods will append the starting multipart boundary,
+// but not the ending one.
+- (NSData *)formDataForKey:(NSString *)key value:(NSString *)value;
+- (NSData *)formDataForFileContents:(NSData *)contents name:(NSString *)name;
+- (NSData *)formDataForFile:(NSString *)file name:(NSString *)name;
+@end
+
+@implementation HTTPMultipartUpload
+//=============================================================================
+#pragma mark -
+#pragma mark || Private ||
+//=============================================================================
+- (NSString *)multipartBoundary {
+  // The boundary has 27 '-' characters followed by 16 hex digits
+  return [NSString stringWithFormat:@"---------------------------%08X%08X",
+    rand(), rand()];
+}
+
+//=============================================================================
+- (NSData *)formDataForKey:(NSString *)key value:(NSString *)value {
+  NSString *escaped =
+    [key stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
+  NSString *fmt =
+    @"--%@\r\nContent-Disposition: form-data; name=\"%@\"\r\n\r\n%@\r\n";
+  NSString *form = [NSString stringWithFormat:fmt, boundary_, escaped, value];
+
+  return [form dataUsingEncoding:NSUTF8StringEncoding];
+}
+
+//=============================================================================
+- (NSData *)formDataForFileContents:(NSData *)contents name:(NSString *)name {
+  NSMutableData *data = [NSMutableData data];
+  NSString *escaped =
+    [name stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
+  NSString *fmt = @"--%@\r\nContent-Disposition: form-data; name=\"%@\"; "
+    "filename=\"minidump.dmp\"\r\nContent-Type: application/octet-stream\r\n\r\n";
+  NSString *pre = [NSString stringWithFormat:fmt, boundary_, escaped];
+
+  [data appendData:[pre dataUsingEncoding:NSUTF8StringEncoding]];
+  [data appendData:contents];
+
+  return data;
+}
+
+//=============================================================================
+- (NSData *)formDataForFile:(NSString *)file name:(NSString *)name {
+  NSData *contents = [NSData dataWithContentsOfFile:file];
+
+  return [self formDataForFileContents:contents name:name];
+}
+
+//=============================================================================
+#pragma mark -
+#pragma mark || Public ||
+//=============================================================================
+- (id)initWithURL:(NSURL *)url {
+  if ((self = [super init])) {
+    url_ = [url copy];
+    boundary_ = [[self multipartBoundary] retain];
+    files_ = [[NSMutableDictionary alloc] init];
+  }
+
+  return self;
+}
+
+//=============================================================================
+- (void)dealloc {
+  [url_ release];
+  [parameters_ release];
+  [files_ release];
+  [boundary_ release];
+  [response_ release];
+
+  [super dealloc];
+}
+
+//=============================================================================
+- (NSURL *)URL {
+  return url_;
+}
+
+//=============================================================================
+- (void)setParameters:(NSDictionary *)parameters {
+  if (parameters != parameters_) {
+    [parameters_ release];
+    parameters_ = [parameters copy];
+  }
+}
+
+//=============================================================================
+- (NSDictionary *)parameters {
+  return parameters_;
+}
+
+//=============================================================================
+- (void)addFileAtPath:(NSString *)path name:(NSString *)name {
+  [files_ setObject:path forKey:name];
+}
+
+//=============================================================================
+- (void)addFileContents:(NSData *)data name:(NSString *)name {
+  [files_ setObject:data forKey:name];
+}
+
+//=============================================================================
+- (NSDictionary *)files {
+  return files_;
+}
+
+//=============================================================================
+- (NSData *)send:(NSError **)error {
+  NSMutableURLRequest *req =
+    [[NSMutableURLRequest alloc]
+          initWithURL:url_ cachePolicy:NSURLRequestUseProtocolCachePolicy
+      timeoutInterval:10.0 ];
+
+  NSMutableData *postBody = [NSMutableData data];
+
+  [req setValue:[NSString stringWithFormat:@"multipart/form-data; boundary=%@",
+    boundary_] forHTTPHeaderField:@"Content-type"];
+
+  // Add any parameters to the message
+  NSArray *parameterKeys = [parameters_ allKeys];
+  NSString *key;
+
+  NSInteger count = [parameterKeys count];
+  for (NSInteger i = 0; i < count; ++i) {
+    key = [parameterKeys objectAtIndex:i];
+    [postBody appendData:[self formDataForKey:key
+                                        value:[parameters_ objectForKey:key]]];
+  }
+
+  // Add any files to the message
+  NSArray *fileNames = [files_ allKeys];
+  count = [fileNames count];
+  for (NSInteger i = 0; i < count; ++i) {
+    NSString *name = [fileNames objectAtIndex:i];
+    id fileOrData = [files_ objectForKey:name];
+    NSData *fileData;
+
+    // The object can be either the path to a file (NSString) or the contents
+    // of the file (NSData).
+    if ([fileOrData isKindOfClass:[NSData class]])
+      fileData = [self formDataForFileContents:fileOrData name:name];
+    else
+      fileData = [self formDataForFile:fileOrData name:name];
+
+    [postBody appendData:fileData];
+  }
+
+  NSString *epilogue = [NSString stringWithFormat:@"\r\n--%@--\r\n", boundary_];
+  [postBody appendData:[epilogue dataUsingEncoding:NSUTF8StringEncoding]];
+
+  [req setHTTPBody:postBody];
+  [req setHTTPMethod:@"POST"];
+
+  [response_ release];
+  response_ = nil;
+
+  NSData *data = nil;
+  if ([[req URL] isFileURL]) {
+    [[req HTTPBody] writeToURL:[req URL] options:0 error:error];
+  } else {
+    data = [NSURLConnection sendSynchronousRequest:req
+                                 returningResponse:&response_
+                                             error:error];
+    [response_ retain];
+  }
+  [req release];
+
+  return data;
+}
+
+//=============================================================================
+- (NSHTTPURLResponse *)response {
+  return response_;
+}
+
+@end
diff --git a/google-breakpad/src/common/mac/MachIPC.h b/google-breakpad/src/common/mac/MachIPC.h
new file mode 100644
index 0000000..8df9165
--- /dev/null
+++ b/google-breakpad/src/common/mac/MachIPC.h
@@ -0,0 +1,301 @@
+// Copyright (c) 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+//  MachIPC.h
+//
+//  Some helpful wrappers for using Mach IPC calls
+
+#ifndef MACH_IPC_H__
+#define MACH_IPC_H__
+
+#import <mach/mach.h>
+#import <mach/message.h>
+#import <servers/bootstrap.h>
+#import <sys/types.h>
+
+#import <CoreServices/CoreServices.h>
+
+//==============================================================================
+// DISCUSSION:
+//
+// The three main classes of interest are
+//
+//  MachMessage:    a wrapper for a mach message of the following form
+//   mach_msg_header_t
+//   mach_msg_body_t
+//   optional descriptors
+//   optional extra message data
+//
+//  MachReceiveMessage and MachSendMessage subclass MachMessage
+//    and are used instead of MachMessage which is an abstract base class
+//
+//  ReceivePort:
+//    Represents a mach port for which we have receive rights
+//
+//  MachPortSender:
+//    Represents a mach port for which we have send rights
+//
+// Here's an example to receive a message on a server port:
+//
+//        // This creates our named server port
+//        ReceivePort receivePort("com.Google.MyService");
+//
+//        MachReceiveMessage message;
+//        kern_return_t result = receivePort.WaitForMessage(&message, 0);
+//
+//        if (result == KERN_SUCCESS && message.GetMessageID() == 57) {
+//          mach_port_t task = message.GetTranslatedPort(0);
+//          mach_port_t thread = message.GetTranslatedPort(1);
+//
+//          char *messageString = message.GetData();
+//
+//          printf("message string = %s\n", messageString);
+//        }
+//
+// Here is an example of using these classes to send a message to this port:
+//
+//    // send to already named port
+//    MachPortSender sender("com.Google.MyService");
+//    MachSendMessage message(57);      // our message ID is 57
+//
+//    // add some ports to be translated for us
+//    message.AddDescriptor(mach_task_self());     // our task
+//    message.AddDescriptor(mach_thread_self());   // this thread
+//
+//    char messageString[] = "Hello server!\n";
+//    message.SetData(messageString, strlen(messageString)+1);
+//
+//    kern_return_t result = sender.SendMessage(message, 1000); // timeout 1000ms
+//
+
+namespace google_breakpad {
+#define PRINT_MACH_RESULT(result_, message_) \
+  printf(message_" %s (%d)\n", mach_error_string(result_), result_ );
+
+//==============================================================================
+// A wrapper class for mach_msg_port_descriptor_t (with same memory layout)
+// with convenient constructors and accessors
+class MachMsgPortDescriptor : public mach_msg_port_descriptor_t {
+ public:
+  // General-purpose constructor
+  MachMsgPortDescriptor(mach_port_t in_name,
+                        mach_msg_type_name_t in_disposition) {
+    name = in_name;
+    pad1 = 0;
+    pad2 = 0;
+    disposition = in_disposition;
+    type = MACH_MSG_PORT_DESCRIPTOR;
+  }
+
+  // For passing send rights to a port
+  MachMsgPortDescriptor(mach_port_t in_name) {
+    name = in_name;
+    pad1 = 0;
+    pad2 = 0;
+    disposition = MACH_MSG_TYPE_COPY_SEND;
+    type = MACH_MSG_PORT_DESCRIPTOR;
+  }
+
+  // Copy constructor
+  MachMsgPortDescriptor(const MachMsgPortDescriptor& desc) {
+    name = desc.name;
+    pad1 = desc.pad1;
+    pad2 = desc.pad2;
+    disposition = desc.disposition;
+    type = desc.type;
+  }
+
+  mach_port_t GetMachPort() const {
+    return name;
+  }
+
+  mach_msg_type_name_t GetDisposition() const {
+    return disposition;
+  }
+
+  // For convenience
+  operator mach_port_t() const {
+    return GetMachPort();
+  }
+};
+
+//==============================================================================
+// MachMessage: a wrapper for a mach message
+//  (mach_msg_header_t, mach_msg_body_t, extra data)
+//
+//  This considerably simplifies the construction of a message for sending
+//  and the getting at relevant data and descriptors for the receiver.
+//
+//  Currently the combined size of the descriptors plus data must be
+//  less than 1024.  But as a benefit no memory allocation is necessary.
+//
+// TODO: could consider adding malloc() support for very large messages
+//
+//  A MachMessage object is used by ReceivePort::WaitForMessage
+//  and MachPortSender::SendMessage
+//
+class MachMessage {
+ public:
+
+  // The receiver of the message can retrieve the raw data this way
+  uint8_t *GetData() {
+    return GetDataLength() > 0 ? GetDataPacket()->data : NULL;
+  }
+
+  uint32_t GetDataLength() {
+    return EndianU32_LtoN(GetDataPacket()->data_length);
+  }
+
+  // The message ID may be used as a code identifying the type of message
+  void SetMessageID(int32_t message_id) {
+    GetDataPacket()->id = EndianU32_NtoL(message_id);
+  }
+
+  int32_t GetMessageID() { return EndianU32_LtoN(GetDataPacket()->id); }
+
+  // Adds a descriptor (typically a mach port) to be translated
+  // returns true if successful, otherwise not enough space
+  bool AddDescriptor(const MachMsgPortDescriptor &desc);
+
+  int GetDescriptorCount() const { return body.msgh_descriptor_count; }
+  MachMsgPortDescriptor *GetDescriptor(int n);
+
+  // Convenience method which gets the mach port described by the descriptor
+  mach_port_t GetTranslatedPort(int n);
+
+  // A simple message is one with no descriptors
+  bool IsSimpleMessage() const { return GetDescriptorCount() == 0; }
+
+  // Sets raw data for the message (returns false if not enough space)
+  bool SetData(void *data, int32_t data_length);
+
+ protected:
+  // Consider this an abstract base class - must create an actual instance
+  // of MachReceiveMessage or MachSendMessage
+
+  MachMessage() {
+    memset(this, 0, sizeof(MachMessage));
+  }
+
+  friend class ReceivePort;
+  friend class MachPortSender;
+
+  // Represents raw data in our message
+  struct MessageDataPacket {
+    int32_t      id;          // little-endian
+    int32_t      data_length; // little-endian
+    uint8_t      data[1];     // actual size limited by sizeof(MachMessage)
+  };
+
+  MessageDataPacket* GetDataPacket();
+
+  void SetDescriptorCount(int n);
+  void SetDescriptor(int n, const MachMsgPortDescriptor &desc);
+
+  // Returns total message size setting msgh_size in the header to this value
+  mach_msg_size_t CalculateSize();
+
+  mach_msg_header_t  head;
+  mach_msg_body_t    body;
+  uint8_t            padding[1024]; // descriptors and data may be embedded here
+};
+
+//==============================================================================
+// MachReceiveMessage and MachSendMessage are useful to separate the idea
+// of a mach message being sent and being received, and adds increased type
+// safety:
+//  ReceivePort::WaitForMessage() only accepts a MachReceiveMessage
+//  MachPortSender::SendMessage() only accepts a MachSendMessage
+
+//==============================================================================
+class MachReceiveMessage : public MachMessage {
+ public:
+  MachReceiveMessage() : MachMessage() {};
+};
+
+//==============================================================================
+class MachSendMessage : public MachMessage {
+ public:
+  MachSendMessage(int32_t message_id);
+};
+
+//==============================================================================
+// Represents a mach port for which we have receive rights
+class ReceivePort {
+ public:
+  // Creates a new mach port for receiving messages and registers a name for it
+  explicit ReceivePort(const char *receive_port_name);
+
+  // Given an already existing mach port, use it.  We take ownership of the
+  // port and deallocate it in our destructor.
+  explicit ReceivePort(mach_port_t receive_port);
+
+  // Create a new mach port for receiving messages
+  ReceivePort();
+
+  ~ReceivePort();
+
+  // Waits on the mach port until message received or timeout
+  kern_return_t WaitForMessage(MachReceiveMessage *out_message,
+                               mach_msg_timeout_t timeout);
+
+  // The underlying mach port that we wrap
+  mach_port_t  GetPort() const { return port_; }
+
+ private:
+  ReceivePort(const ReceivePort&);  // disable copy c-tor
+
+  mach_port_t   port_;
+  kern_return_t init_result_;
+};
+
+//==============================================================================
+// Represents a mach port for which we have send rights
+class MachPortSender {
+ public:
+  // get a port with send rights corresponding to a named registered service
+  explicit MachPortSender(const char *receive_port_name);
+
+
+  // Given an already existing mach port, use it.
+  explicit MachPortSender(mach_port_t send_port);
+
+  kern_return_t SendMessage(MachSendMessage &message,
+                            mach_msg_timeout_t timeout);
+
+ private:
+  MachPortSender(const MachPortSender&);  // disable copy c-tor
+
+  mach_port_t   send_port_;
+  kern_return_t init_result_;
+};
+
+}  // namespace google_breakpad
+
+#endif // MACH_IPC_H__
diff --git a/google-breakpad/src/common/mac/MachIPC.mm b/google-breakpad/src/common/mac/MachIPC.mm
new file mode 100644
index 0000000..dc9773f
--- /dev/null
+++ b/google-breakpad/src/common/mac/MachIPC.mm
@@ -0,0 +1,306 @@
+// Copyright (c) 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+//  MachIPC.mm
+//  Wrapper for mach IPC calls
+
+#import <stdio.h>
+#import "MachIPC.h"
+#include "common/mac/bootstrap_compat.h"
+
+namespace google_breakpad {
+//==============================================================================
+MachSendMessage::MachSendMessage(int32_t message_id) : MachMessage() {
+  head.msgh_bits = MACH_MSGH_BITS(MACH_MSG_TYPE_COPY_SEND, 0);
+
+  // head.msgh_remote_port = ...; // filled out in MachPortSender::SendMessage()
+  head.msgh_local_port = MACH_PORT_NULL;
+  head.msgh_reserved = 0;
+  head.msgh_id = 0;
+
+  SetDescriptorCount(0);  // start out with no descriptors
+
+  SetMessageID(message_id);
+  SetData(NULL, 0);       // client may add data later
+}
+
+//==============================================================================
+// returns true if successful
+bool MachMessage::SetData(void *data,
+                          int32_t data_length) {
+  // first check to make sure we have enough space
+  size_t size = CalculateSize();
+  size_t new_size = size + data_length;
+  
+  if (new_size > sizeof(MachMessage)) {
+    return false;  // not enough space
+  }
+
+  GetDataPacket()->data_length = EndianU32_NtoL(data_length);
+  if (data) memcpy(GetDataPacket()->data, data, data_length);
+
+  CalculateSize();
+
+  return true;
+}
+
+//==============================================================================
+// calculates and returns the total size of the message
+// Currently, the entire message MUST fit inside of the MachMessage
+//    messsage size <= sizeof(MachMessage)
+mach_msg_size_t MachMessage::CalculateSize() {
+  size_t size = sizeof(mach_msg_header_t) + sizeof(mach_msg_body_t);
+  
+  // add space for MessageDataPacket
+  int32_t alignedDataLength = (GetDataLength() + 3) & ~0x3;
+  size += 2*sizeof(int32_t) + alignedDataLength;
+  
+  // add space for descriptors
+  size += GetDescriptorCount() * sizeof(MachMsgPortDescriptor);
+  
+  head.msgh_size = static_cast<mach_msg_size_t>(size);
+  
+  return head.msgh_size;
+}
+
+//==============================================================================
+MachMessage::MessageDataPacket *MachMessage::GetDataPacket() {
+  size_t desc_size = sizeof(MachMsgPortDescriptor)*GetDescriptorCount();
+  MessageDataPacket *packet =
+    reinterpret_cast<MessageDataPacket*>(padding + desc_size);
+
+  return packet;
+}
+
+//==============================================================================
+void MachMessage::SetDescriptor(int n,
+                                const MachMsgPortDescriptor &desc) {
+  MachMsgPortDescriptor *desc_array =
+    reinterpret_cast<MachMsgPortDescriptor*>(padding);
+  desc_array[n] = desc;
+}
+
+//==============================================================================
+// returns true if successful otherwise there was not enough space
+bool MachMessage::AddDescriptor(const MachMsgPortDescriptor &desc) {
+  // first check to make sure we have enough space
+  int size = CalculateSize();
+  size_t new_size = size + sizeof(MachMsgPortDescriptor);
+  
+  if (new_size > sizeof(MachMessage)) {
+    return false;  // not enough space
+  }
+
+  // unfortunately, we need to move the data to allow space for the
+  // new descriptor
+  u_int8_t *p = reinterpret_cast<u_int8_t*>(GetDataPacket());
+  bcopy(p, p+sizeof(MachMsgPortDescriptor), GetDataLength()+2*sizeof(int32_t));
+  
+  SetDescriptor(GetDescriptorCount(), desc);
+  SetDescriptorCount(GetDescriptorCount() + 1);
+
+  CalculateSize();
+  
+  return true;
+}
+
+//==============================================================================
+void MachMessage::SetDescriptorCount(int n) {
+  body.msgh_descriptor_count = n;
+
+  if (n > 0) {
+    head.msgh_bits |= MACH_MSGH_BITS_COMPLEX;
+  } else {
+    head.msgh_bits &= ~MACH_MSGH_BITS_COMPLEX;
+  }
+}
+
+//==============================================================================
+MachMsgPortDescriptor *MachMessage::GetDescriptor(int n) {
+  if (n < GetDescriptorCount()) {
+    MachMsgPortDescriptor *desc =
+      reinterpret_cast<MachMsgPortDescriptor*>(padding);
+    return desc + n;
+  }
+  
+  return nil;
+}
+
+//==============================================================================
+mach_port_t MachMessage::GetTranslatedPort(int n) {
+  if (n < GetDescriptorCount()) {
+    return GetDescriptor(n)->GetMachPort();
+  }
+  return MACH_PORT_NULL;
+}
+
+#pragma mark -
+
+//==============================================================================
+// create a new mach port for receiving messages and register a name for it
+ReceivePort::ReceivePort(const char *receive_port_name) {
+  mach_port_t current_task = mach_task_self();
+
+  init_result_ = mach_port_allocate(current_task,
+                                    MACH_PORT_RIGHT_RECEIVE,
+                                    &port_);
+
+  if (init_result_ != KERN_SUCCESS)
+    return;
+    
+  init_result_ = mach_port_insert_right(current_task,
+                                        port_,
+                                        port_,
+                                        MACH_MSG_TYPE_MAKE_SEND);
+
+  if (init_result_ != KERN_SUCCESS)
+    return;
+
+  mach_port_t task_bootstrap_port = 0;
+  init_result_ = task_get_bootstrap_port(current_task, &task_bootstrap_port);
+
+  if (init_result_ != KERN_SUCCESS)
+    return;
+
+  init_result_ = breakpad::BootstrapRegister(
+      bootstrap_port,
+      const_cast<char*>(receive_port_name),
+      port_);
+}
+
+//==============================================================================
+// create a new mach port for receiving messages
+ReceivePort::ReceivePort() {
+  mach_port_t current_task = mach_task_self();
+
+  init_result_ = mach_port_allocate(current_task,
+                                    MACH_PORT_RIGHT_RECEIVE,
+                                    &port_);
+
+  if (init_result_ != KERN_SUCCESS)
+    return;
+
+  init_result_ =   mach_port_insert_right(current_task,
+                                          port_,
+                                          port_,
+                                          MACH_MSG_TYPE_MAKE_SEND);
+}
+
+//==============================================================================
+// Given an already existing mach port, use it.  We take ownership of the
+// port and deallocate it in our destructor.
+ReceivePort::ReceivePort(mach_port_t receive_port)
+  : port_(receive_port),
+    init_result_(KERN_SUCCESS) {
+}
+
+//==============================================================================
+ReceivePort::~ReceivePort() {
+  if (init_result_ == KERN_SUCCESS)
+    mach_port_deallocate(mach_task_self(), port_);
+}
+
+//==============================================================================
+kern_return_t ReceivePort::WaitForMessage(MachReceiveMessage *out_message,
+                                          mach_msg_timeout_t timeout) {
+  if (!out_message) {
+    return KERN_INVALID_ARGUMENT;
+  }
+
+  // return any error condition encountered in constructor
+  if (init_result_ != KERN_SUCCESS)
+    return init_result_;
+  
+  out_message->head.msgh_bits = 0;
+  out_message->head.msgh_local_port = port_;
+  out_message->head.msgh_remote_port = MACH_PORT_NULL;
+  out_message->head.msgh_reserved = 0;
+  out_message->head.msgh_id = 0;
+
+  mach_msg_option_t options = MACH_RCV_MSG;
+  if (timeout != MACH_MSG_TIMEOUT_NONE)
+    options |= MACH_RCV_TIMEOUT;
+  kern_return_t result = mach_msg(&out_message->head,
+                                  options,
+                                  0,
+                                  sizeof(MachMessage),
+                                  port_,
+                                  timeout,              // timeout in ms
+                                  MACH_PORT_NULL);
+
+  return result;
+}
+
+#pragma mark -
+
+//==============================================================================
+// get a port with send rights corresponding to a named registered service
+MachPortSender::MachPortSender(const char *receive_port_name) {
+  mach_port_t task_bootstrap_port = 0;
+  init_result_ = task_get_bootstrap_port(mach_task_self(), 
+                                         &task_bootstrap_port);
+  
+  if (init_result_ != KERN_SUCCESS)
+    return;
+
+  init_result_ = bootstrap_look_up(task_bootstrap_port,
+                    const_cast<char*>(receive_port_name),
+                    &send_port_);
+}
+
+//==============================================================================
+MachPortSender::MachPortSender(mach_port_t send_port) 
+  : send_port_(send_port),
+    init_result_(KERN_SUCCESS) {
+}
+
+//==============================================================================
+kern_return_t MachPortSender::SendMessage(MachSendMessage &message,
+                                          mach_msg_timeout_t timeout) {
+  if (message.head.msgh_size == 0) {
+    return KERN_INVALID_VALUE;    // just for safety -- never should occur
+  };
+  
+  if (init_result_ != KERN_SUCCESS)
+    return init_result_;
+  
+  message.head.msgh_remote_port = send_port_;
+
+  kern_return_t result = mach_msg(&message.head,
+                                  MACH_SEND_MSG | MACH_SEND_TIMEOUT,
+                                  message.head.msgh_size,
+                                  0,
+                                  MACH_PORT_NULL,
+                                  timeout,              // timeout in ms
+                                  MACH_PORT_NULL);
+
+  return result;
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/common/mac/arch_utilities.cc b/google-breakpad/src/common/mac/arch_utilities.cc
new file mode 100644
index 0000000..94e3be3
--- /dev/null
+++ b/google-breakpad/src/common/mac/arch_utilities.cc
@@ -0,0 +1,113 @@
+// Copyright (c) 2012, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include "common/mac/arch_utilities.h"
+
+#include <mach-o/arch.h>
+#include <stdio.h>
+#include <string.h>
+
+#ifndef CPU_TYPE_ARM
+#define CPU_TYPE_ARM (static_cast<cpu_type_t>(12))
+#endif  // CPU_TYPE_ARM
+
+#ifndef CPU_SUBTYPE_ARM_V7
+#define CPU_SUBTYPE_ARM_V7 (static_cast<cpu_subtype_t>(9))
+#endif  // CPU_SUBTYPE_ARM_V7
+
+#ifndef CPU_SUBTYPE_ARM_V7S
+#define CPU_SUBTYPE_ARM_V7S (static_cast<cpu_subtype_t>(11))
+#endif  // CPU_SUBTYPE_ARM_V7S
+
+#ifndef CPU_TYPE_ARM64
+#define CPU_TYPE_ARM64 (static_cast<cpu_type_t>(16777228))
+#endif  // CPU_TYPE_ARM64
+
+#ifndef CPU_SUBTYPE_ARM64_ALL
+#define CPU_SUBTYPE_ARM64_ALL (static_cast<cpu_type_t>(0))
+#endif  // CPU_SUBTYPE_ARM64_ALL
+
+namespace {
+
+const NXArchInfo* ArchInfo_arm64() {
+  NXArchInfo* arm64 = new NXArchInfo;
+  *arm64 = *NXGetArchInfoFromCpuType(CPU_TYPE_ARM,
+                                     CPU_SUBTYPE_ARM_V7);
+  arm64->name = "arm64";
+  arm64->cputype = CPU_TYPE_ARM64;
+  arm64->cpusubtype = CPU_SUBTYPE_ARM64_ALL;
+  arm64->description = "arm 64";
+  return arm64;
+}
+
+const NXArchInfo* ArchInfo_armv7s() {
+  NXArchInfo* armv7s = new NXArchInfo;
+  *armv7s = *NXGetArchInfoFromCpuType(CPU_TYPE_ARM,
+                                      CPU_SUBTYPE_ARM_V7);
+  armv7s->name = "armv7s";
+  armv7s->cpusubtype = CPU_SUBTYPE_ARM_V7S;
+  armv7s->description = "arm v7s";
+  return armv7s;
+}
+
+}  // namespace
+
+namespace google_breakpad {
+
+const NXArchInfo* BreakpadGetArchInfoFromName(const char* arch_name) {
+  // TODO: Remove this when the OS knows about arm64.
+  if (!strcmp("arm64", arch_name))
+    return BreakpadGetArchInfoFromCpuType(CPU_TYPE_ARM64,
+                                          CPU_SUBTYPE_ARM64_ALL);
+
+  // TODO: Remove this when the OS knows about armv7s.
+  if (!strcmp("armv7s", arch_name))
+    return BreakpadGetArchInfoFromCpuType(CPU_TYPE_ARM, CPU_SUBTYPE_ARM_V7S);
+
+  return NXGetArchInfoFromName(arch_name);
+}
+
+const NXArchInfo* BreakpadGetArchInfoFromCpuType(cpu_type_t cpu_type,
+                                                 cpu_subtype_t cpu_subtype) {
+  // TODO: Remove this when the OS knows about arm64.
+  if (cpu_type == CPU_TYPE_ARM64 && cpu_subtype == CPU_SUBTYPE_ARM64_ALL) {
+    static const NXArchInfo* arm64 = ArchInfo_arm64();
+    return arm64;
+  }
+
+  // TODO: Remove this when the OS knows about armv7s.
+  if (cpu_type == CPU_TYPE_ARM && cpu_subtype == CPU_SUBTYPE_ARM_V7S) {
+    static const NXArchInfo* armv7s = ArchInfo_armv7s();
+    return armv7s;
+  }
+
+  return NXGetArchInfoFromCpuType(cpu_type, cpu_subtype);
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/common/mac/arch_utilities.h b/google-breakpad/src/common/mac/arch_utilities.h
new file mode 100644
index 0000000..397c1f5
--- /dev/null
+++ b/google-breakpad/src/common/mac/arch_utilities.h
@@ -0,0 +1,47 @@
+// Copyright (c) 2012, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// arch_utilities.h: Utilities for architecture introspection for Mac platform.
+
+#ifndef COMMON_MAC_ARCH_UTILITIES_H__
+#define COMMON_MAC_ARCH_UTILITIES_H__
+
+#include <mach-o/arch.h>
+
+namespace google_breakpad {
+
+// Custom implementation of |NXGetArchInfoFromName| and
+// |NXGetArchInfoFromCpuType| that handle newer CPU on older OSes.
+const NXArchInfo* BreakpadGetArchInfoFromName(const char* arch_name);
+const NXArchInfo* BreakpadGetArchInfoFromCpuType(cpu_type_t cpu_type,
+                                                 cpu_subtype_t cpu_subtype);
+
+}  // namespace google_breakpad
+
+#endif  // COMMON_MAC_ARCH_UTILITIES_H__
diff --git a/google-breakpad/src/common/mac/bootstrap_compat.cc b/google-breakpad/src/common/mac/bootstrap_compat.cc
new file mode 100644
index 0000000..d875d95
--- /dev/null
+++ b/google-breakpad/src/common/mac/bootstrap_compat.cc
@@ -0,0 +1,42 @@
+// Copyright (c) 2012, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include "common/mac/bootstrap_compat.h"
+
+namespace breakpad {
+
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+kern_return_t BootstrapRegister(mach_port_t bp,
+                                name_t service_name,
+                                mach_port_t sp) {
+  return bootstrap_register(bp, service_name, sp);
+}
+#pragma GCC diagnostic warning "-Wdeprecated-declarations"
+
+}  // namesapce breakpad
diff --git a/google-breakpad/src/common/mac/bootstrap_compat.h b/google-breakpad/src/common/mac/bootstrap_compat.h
new file mode 100644
index 0000000..8ca7357
--- /dev/null
+++ b/google-breakpad/src/common/mac/bootstrap_compat.h
@@ -0,0 +1,54 @@
+// Copyright (c) 2012, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef COMMON_MAC_BOOTSTRAP_COMPAT_H_
+#define COMMON_MAC_BOOTSTRAP_COMPAT_H_
+
+#include <servers/bootstrap.h>
+
+namespace breakpad {
+
+// Wrapper for bootstrap_register to avoid deprecation warnings.
+//
+// In 10.6, it's possible to call bootstrap_check_in as the one-stop-shop for
+// handling what bootstrap_register is used for. In 10.5, bootstrap_check_in
+// can't check in a service whose name has not yet been registered, despite
+// bootstrap_register being marked as deprecated in that OS release. Breakpad
+// needs to register new service names, and in 10.5, calling
+// bootstrap_register is the only way to achieve that. Attempts to call
+// bootstrap_check_in for a new service name on 10.5 will result in
+// BOOTSTRAP_UNKNOWN_SERVICE being returned rather than registration of the
+// new service name.
+kern_return_t BootstrapRegister(mach_port_t bp,
+                                name_t service_name,
+                                mach_port_t sp);
+
+}  // namespace breakpad
+
+#endif  // COMMON_MAC_BOOTSTRAP_COMPAT_H_
diff --git a/google-breakpad/src/common/mac/byteswap.h b/google-breakpad/src/common/mac/byteswap.h
new file mode 100644
index 0000000..a5d745b
--- /dev/null
+++ b/google-breakpad/src/common/mac/byteswap.h
@@ -0,0 +1,48 @@
+// -*- mode: c++ -*-
+
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Jim Blandy <jim@mozilla.com> <jimb@red-bean.com>
+
+// byteswap.h: Overloaded functions for conveniently byteswapping values.
+
+#ifndef COMMON_MAC_BYTESWAP_H_
+#define COMMON_MAC_BYTESWAP_H_
+
+#include <libkern/OSByteOrder.h>
+
+static inline uint16_t ByteSwap(uint16_t v) { return OSSwapInt16(v); }
+static inline uint32_t ByteSwap(uint32_t v) { return OSSwapInt32(v); }
+static inline uint64_t ByteSwap(uint64_t v) { return OSSwapInt64(v); }
+static inline int16_t  ByteSwap(int16_t  v) { return OSSwapInt16(v); }
+static inline int32_t  ByteSwap(int32_t  v) { return OSSwapInt32(v); }
+static inline int64_t  ByteSwap(int64_t  v) { return OSSwapInt64(v); }
+
+#endif  // COMMON_MAC_BYTESWAP_H_
diff --git a/google-breakpad/src/common/mac/dump_syms.h b/google-breakpad/src/common/mac/dump_syms.h
new file mode 100644
index 0000000..34e8397
--- /dev/null
+++ b/google-breakpad/src/common/mac/dump_syms.h
@@ -0,0 +1,187 @@
+// -*- mode: c++ -*-
+
+// Copyright (c) 2011, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// dump_syms.h: Declaration of google_breakpad::DumpSymbols, a class for
+// reading debugging information from Mach-O files and writing it out as a
+// Breakpad symbol file.
+
+#include <Foundation/Foundation.h>
+#include <mach-o/loader.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <ostream>
+#include <string>
+#include <vector>
+
+#include "common/byte_cursor.h"
+#include "common/mac/macho_reader.h"
+#include "common/module.h"
+#include "common/symbol_data.h"
+
+namespace google_breakpad {
+
+class DumpSymbols {
+ public:
+  DumpSymbols(SymbolData symbol_data, bool handle_inter_cu_refs)
+      : symbol_data_(symbol_data),
+        handle_inter_cu_refs_(handle_inter_cu_refs),
+        input_pathname_(),
+        object_filename_(),
+        contents_(),
+        selected_object_file_(),
+        selected_object_name_() { }
+  ~DumpSymbols() {
+    [input_pathname_ release];
+    [object_filename_ release];
+    [contents_ release];
+  }
+
+  // Prepare to read debugging information from |filename|. |filename| may be
+  // the name of a universal binary, a Mach-O file, or a dSYM bundle
+  // containing either of the above. On success, return true; if there is a
+  // problem reading |filename|, report it and return false.
+  //
+  // (This class uses NSString for filenames and related values,
+  // because the Mac Foundation framework seems to support
+  // filename-related operations more fully on NSString values.)
+  bool Read(NSString *filename);
+
+  // If this dumper's file includes an object file for |cpu_type| and
+  // |cpu_subtype|, then select that object file for dumping, and return
+  // true. Otherwise, return false, and leave this dumper's selected
+  // architecture unchanged.
+  //
+  // By default, if this dumper's file contains only one object file, then
+  // the dumper will dump those symbols; and if it contains more than one
+  // object file, then the dumper will dump the object file whose
+  // architecture matches that of this dumper program.
+  bool SetArchitecture(cpu_type_t cpu_type, cpu_subtype_t cpu_subtype);
+
+  // If this dumper's file includes an object file for |arch_name|, then select
+  // that object file for dumping, and return true. Otherwise, return false,
+  // and leave this dumper's selected architecture unchanged.
+  //
+  // By default, if this dumper's file contains only one object file, then
+  // the dumper will dump those symbols; and if it contains more than one
+  // object file, then the dumper will dump the object file whose
+  // architecture matches that of this dumper program.
+  bool SetArchitecture(const std::string &arch_name);
+
+  // Return a pointer to an array of 'struct fat_arch' structures,
+  // describing the object files contained in this dumper's file. Set
+  // *|count| to the number of elements in the array. The returned array is
+  // owned by this DumpSymbols instance.
+  //
+  // If there are no available architectures, this function
+  // may return NULL.
+  const struct fat_arch *AvailableArchitectures(size_t *count) {
+    *count = object_files_.size();
+    if (object_files_.size() > 0)
+      return &object_files_[0];
+    return NULL;
+  }
+
+  // Read the selected object file's debugging information, and write it out to
+  // |stream|. Return true on success; if an error occurs, report it and
+  // return false.
+  bool WriteSymbolFile(std::ostream &stream);
+
+  // As above, but simply return the debugging information in module
+  // instead of writing it to a stream. The caller owns the resulting
+  // module object and must delete it when finished.
+  bool ReadSymbolData(Module** module);
+
+ private:
+  // Used internally.
+  class DumperLineToModule;
+  class LoadCommandDumper;
+
+  // Return an identifier string for the file this DumpSymbols is dumping.
+  std::string Identifier();
+
+  // Read debugging information from |dwarf_sections|, which was taken from
+  // |macho_reader|, and add it to |module|. On success, return true;
+  // on failure, report the problem and return false.
+  bool ReadDwarf(google_breakpad::Module *module,
+                 const mach_o::Reader &macho_reader,
+                 const mach_o::SectionMap &dwarf_sections,
+                 bool handle_inter_cu_refs) const;
+
+  // Read DWARF CFI or .eh_frame data from |section|, belonging to
+  // |macho_reader|, and record it in |module|.  If |eh_frame| is true,
+  // then the data is .eh_frame-format data; otherwise, it is standard DWARF
+  // .debug_frame data. On success, return true; on failure, report
+  // the problem and return false.
+  bool ReadCFI(google_breakpad::Module *module,
+               const mach_o::Reader &macho_reader,
+               const mach_o::Section &section,
+               bool eh_frame) const;
+
+  // The selection of what type of symbol data to read/write.
+  const SymbolData symbol_data_;
+
+  // Whether to handle references between compilation units.
+  const bool handle_inter_cu_refs_;
+
+  // The name of the file or bundle whose symbols this will dump.
+  // This is the path given to Read, for use in error messages.
+  NSString *input_pathname_;
+
+  // The name of the file this DumpSymbols will actually read debugging
+  // information from. Normally, this is the same as input_pathname_, but if
+  // filename refers to a dSYM bundle, then this is the resource file
+  // within that bundle.
+  NSString *object_filename_;
+
+  // The complete contents of object_filename_, mapped into memory.
+  NSData *contents_;
+
+  // A vector of fat_arch structures describing the object files
+  // object_filename_ contains. If object_filename_ refers to a fat binary,
+  // this may have more than one element; if it refers to a Mach-O file, this
+  // has exactly one element.
+  vector<struct fat_arch> object_files_;
+
+  // The object file in object_files_ selected to dump, or NULL if
+  // SetArchitecture hasn't been called yet.
+  const struct fat_arch *selected_object_file_;
+
+  // A string that identifies the selected object file, for use in error
+  // messages.  This is usually object_filename_, but if that refers to a
+  // fat binary, it includes an indication of the particular architecture
+  // within that binary.
+  string selected_object_name_;
+};
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/common/mac/dump_syms.mm b/google-breakpad/src/common/mac/dump_syms.mm
new file mode 100644
index 0000000..f2420f1
--- /dev/null
+++ b/google-breakpad/src/common/mac/dump_syms.mm
@@ -0,0 +1,553 @@
+// -*- mode: c++ -*-
+
+// Copyright (c) 2011, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// dump_syms.mm: Create a symbol file for use with minidumps
+
+#include "common/mac/dump_syms.h"
+
+#include <Foundation/Foundation.h>
+#include <mach-o/arch.h>
+#include <mach-o/fat.h>
+#include <stdio.h>
+
+#include <ostream>
+#include <string>
+#include <vector>
+
+#include "common/dwarf/bytereader-inl.h"
+#include "common/dwarf/dwarf2reader.h"
+#include "common/dwarf_cfi_to_module.h"
+#include "common/dwarf_cu_to_module.h"
+#include "common/dwarf_line_to_module.h"
+#include "common/mac/file_id.h"
+#include "common/mac/arch_utilities.h"
+#include "common/mac/macho_reader.h"
+#include "common/module.h"
+#include "common/scoped_ptr.h"
+#include "common/stabs_reader.h"
+#include "common/stabs_to_module.h"
+#include "common/symbol_data.h"
+
+#ifndef CPU_TYPE_ARM
+#define CPU_TYPE_ARM (static_cast<cpu_type_t>(12))
+#endif //  CPU_TYPE_ARM
+
+#ifndef CPU_TYPE_ARM64
+#define CPU_TYPE_ARM64 (static_cast<cpu_type_t>(16777228))
+#endif  // CPU_TYPE_ARM64
+
+using dwarf2reader::ByteReader;
+using google_breakpad::DwarfCUToModule;
+using google_breakpad::DwarfLineToModule;
+using google_breakpad::FileID;
+using google_breakpad::mach_o::FatReader;
+using google_breakpad::mach_o::Section;
+using google_breakpad::mach_o::Segment;
+using google_breakpad::Module;
+using google_breakpad::StabsReader;
+using google_breakpad::StabsToModule;
+using google_breakpad::scoped_ptr;
+using std::make_pair;
+using std::pair;
+using std::string;
+using std::vector;
+
+namespace google_breakpad {
+
+bool DumpSymbols::Read(NSString *filename) {
+  if (![[NSFileManager defaultManager] fileExistsAtPath:filename]) {
+    fprintf(stderr, "Object file does not exist: %s\n",
+            [filename fileSystemRepresentation]);
+    return false;
+  }
+
+  input_pathname_ = [filename retain];
+
+  // Does this filename refer to a dSYM bundle?
+  NSBundle *bundle = [NSBundle bundleWithPath:input_pathname_];
+
+  if (bundle) {
+    // Filenames referring to bundles usually have names of the form
+    // "<basename>.dSYM"; however, if the user has specified a wrapper
+    // suffix (the WRAPPER_SUFFIX and WRAPPER_EXTENSION build settings),
+    // then the name may have the form "<basename>.<extension>.dSYM". In
+    // either case, the resource name for the file containing the DWARF
+    // info within the bundle is <basename>.
+    //
+    // Since there's no way to tell how much to strip off, remove one
+    // extension at a time, and use the first one that
+    // pathForResource:ofType:inDirectory likes.
+    NSString *base_name = [input_pathname_ lastPathComponent];
+    NSString *dwarf_resource;
+
+    do {
+      NSString *new_base_name = [base_name stringByDeletingPathExtension];
+
+      // If stringByDeletingPathExtension returned the name unchanged, then
+      // there's nothing more for us to strip off --- lose.
+      if ([new_base_name isEqualToString:base_name]) {
+        fprintf(stderr, "Unable to find DWARF-bearing file in bundle: %s\n",
+                [input_pathname_ fileSystemRepresentation]);
+        return false;
+      }
+
+      // Take the shortened result as our new base_name.
+      base_name = new_base_name;
+
+      // Try to find a DWARF resource in the bundle under the new base_name.
+      dwarf_resource = [bundle pathForResource:base_name
+                        ofType:nil inDirectory:@"DWARF"];
+    } while (!dwarf_resource);
+
+    object_filename_ = [dwarf_resource retain];
+  } else {
+    object_filename_ = [input_pathname_ retain];
+  }
+
+  // Read the file's contents into memory.
+  //
+  // The documentation for dataWithContentsOfMappedFile says:
+  //
+  //     Because of file mapping restrictions, this method should only be
+  //     used if the file is guaranteed to exist for the duration of the
+  //     data object’s existence. It is generally safer to use the
+  //     dataWithContentsOfFile: method.
+  //
+  // I gather this means that OS X doesn't have (or at least, that method
+  // doesn't use) a form of mapping like Linux's MAP_PRIVATE, where the
+  // process appears to get its own copy of the data, and changes to the
+  // file don't affect memory and vice versa).
+  NSError *error;
+  contents_ = [NSData dataWithContentsOfFile:object_filename_
+                                     options:0
+                                       error:&error];
+  if (!contents_) {
+    fprintf(stderr, "Error reading object file: %s: %s\n",
+            [object_filename_ fileSystemRepresentation],
+            [[error localizedDescription] UTF8String]);
+    return false;
+  }
+  [contents_ retain];
+
+  // Get the list of object files present in the file.
+  FatReader::Reporter fat_reporter([object_filename_
+                                    fileSystemRepresentation]);
+  FatReader fat_reader(&fat_reporter);
+  if (!fat_reader.Read(reinterpret_cast<const uint8_t *>([contents_ bytes]),
+                       [contents_ length])) {
+    return false;
+  }
+
+  // Get our own copy of fat_reader's object file list.
+  size_t object_files_count;
+  const struct fat_arch *object_files =
+    fat_reader.object_files(&object_files_count);
+  if (object_files_count == 0) {
+    fprintf(stderr, "Fat binary file contains *no* architectures: %s\n",
+            [object_filename_ fileSystemRepresentation]);
+    return false;
+  }
+  object_files_.resize(object_files_count);
+  memcpy(&object_files_[0], object_files,
+         sizeof(struct fat_arch) * object_files_count);
+
+  return true;
+}
+
+bool DumpSymbols::SetArchitecture(cpu_type_t cpu_type,
+                                  cpu_subtype_t cpu_subtype) {
+  // Find the best match for the architecture the user requested.
+  const struct fat_arch *best_match
+    = NXFindBestFatArch(cpu_type, cpu_subtype, &object_files_[0],
+                        static_cast<uint32_t>(object_files_.size()));
+  if (!best_match) return false;
+
+  // Record the selected object file.
+  selected_object_file_ = best_match;
+  return true;
+}
+
+bool DumpSymbols::SetArchitecture(const std::string &arch_name) {
+  bool arch_set = false;
+  const NXArchInfo *arch_info =
+      google_breakpad::BreakpadGetArchInfoFromName(arch_name.c_str());
+  if (arch_info) {
+    arch_set = SetArchitecture(arch_info->cputype, arch_info->cpusubtype);
+  }
+  return arch_set;
+}
+
+string DumpSymbols::Identifier() {
+  FileID file_id([object_filename_ fileSystemRepresentation]);
+  unsigned char identifier_bytes[16];
+  cpu_type_t cpu_type = selected_object_file_->cputype;
+  cpu_subtype_t cpu_subtype = selected_object_file_->cpusubtype;
+  if (!file_id.MachoIdentifier(cpu_type, cpu_subtype, identifier_bytes)) {
+    fprintf(stderr, "Unable to calculate UUID of mach-o binary %s!\n",
+            [object_filename_ fileSystemRepresentation]);
+    return "";
+  }
+
+  char identifier_string[40];
+  FileID::ConvertIdentifierToString(identifier_bytes, identifier_string,
+                                    sizeof(identifier_string));
+
+  string compacted(identifier_string);
+  for(size_t i = compacted.find('-'); i != string::npos;
+      i = compacted.find('-', i))
+    compacted.erase(i, 1);
+
+  return compacted;
+}
+
+// A line-to-module loader that accepts line number info parsed by
+// dwarf2reader::LineInfo and populates a Module and a line vector
+// with the results.
+class DumpSymbols::DumperLineToModule:
+      public DwarfCUToModule::LineToModuleHandler {
+ public:
+  // Create a line-to-module converter using BYTE_READER.
+  DumperLineToModule(dwarf2reader::ByteReader *byte_reader)
+      : byte_reader_(byte_reader) { }
+
+  void StartCompilationUnit(const string& compilation_dir) {
+    compilation_dir_ = compilation_dir;
+  }
+
+  void ReadProgram(const char *program, uint64 length,
+                   Module *module, vector<Module::Line> *lines) {
+    DwarfLineToModule handler(module, compilation_dir_, lines);
+    dwarf2reader::LineInfo parser(program, length, byte_reader_, &handler);
+    parser.Start();
+  }
+ private:
+  string compilation_dir_;
+  dwarf2reader::ByteReader *byte_reader_;  // WEAK
+};
+
+bool DumpSymbols::ReadDwarf(google_breakpad::Module *module,
+                            const mach_o::Reader &macho_reader,
+                            const mach_o::SectionMap &dwarf_sections,
+                            bool handle_inter_cu_refs) const {
+  // Build a byte reader of the appropriate endianness.
+  ByteReader byte_reader(macho_reader.big_endian()
+                         ? dwarf2reader::ENDIANNESS_BIG
+                         : dwarf2reader::ENDIANNESS_LITTLE);
+
+  // Construct a context for this file.
+  DwarfCUToModule::FileContext file_context(selected_object_name_,
+                                            module,
+                                            handle_inter_cu_refs);
+
+  // Build a dwarf2reader::SectionMap from our mach_o::SectionMap.
+  for (mach_o::SectionMap::const_iterator it = dwarf_sections.begin();
+       it != dwarf_sections.end(); ++it) {
+    file_context.AddSectionToSectionMap(
+        it->first,
+        reinterpret_cast<const char *>(it->second.contents.start),
+        it->second.contents.Size());
+  }
+
+  // Find the __debug_info section.
+  dwarf2reader::SectionMap::const_iterator debug_info_entry =
+      file_context.section_map().find("__debug_info");
+  assert(debug_info_entry != file_context.section_map().end());
+  const std::pair<const char*, uint64>& debug_info_section =
+      debug_info_entry->second;
+  // There had better be a __debug_info section!
+  if (!debug_info_section.first) {
+    fprintf(stderr, "%s: __DWARF segment of file has no __debug_info section\n",
+            selected_object_name_.c_str());
+    return false;
+  }
+
+  // Build a line-to-module loader for the root handler to use.
+  DumperLineToModule line_to_module(&byte_reader);
+
+  // Walk the __debug_info section, one compilation unit at a time.
+  uint64 debug_info_length = debug_info_section.second;
+  for (uint64 offset = 0; offset < debug_info_length;) {
+    // Make a handler for the root DIE that populates MODULE with the
+    // debug info.
+    DwarfCUToModule::WarningReporter reporter(selected_object_name_,
+                                              offset);
+    DwarfCUToModule root_handler(&file_context, &line_to_module, &reporter);
+    // Make a Dwarf2Handler that drives our DIEHandler.
+    dwarf2reader::DIEDispatcher die_dispatcher(&root_handler);
+    // Make a DWARF parser for the compilation unit at OFFSET.
+    dwarf2reader::CompilationUnit dwarf_reader(file_context.section_map(),
+                                               offset,
+                                               &byte_reader,
+                                               &die_dispatcher);
+    // Process the entire compilation unit; get the offset of the next.
+    offset += dwarf_reader.Start();
+  }
+
+  return true;
+}
+
+bool DumpSymbols::ReadCFI(google_breakpad::Module *module,
+                          const mach_o::Reader &macho_reader,
+                          const mach_o::Section &section,
+                          bool eh_frame) const {
+  // Find the appropriate set of register names for this file's
+  // architecture.
+  vector<string> register_names;
+  switch (macho_reader.cpu_type()) {
+    case CPU_TYPE_X86:
+      register_names = DwarfCFIToModule::RegisterNames::I386();
+      break;
+    case CPU_TYPE_X86_64:
+      register_names = DwarfCFIToModule::RegisterNames::X86_64();
+      break;
+    case CPU_TYPE_ARM:
+      register_names = DwarfCFIToModule::RegisterNames::ARM();
+      break;
+    case CPU_TYPE_ARM64:
+      register_names = DwarfCFIToModule::RegisterNames::ARM64();
+      break;
+    default: {
+      const NXArchInfo *arch = google_breakpad::BreakpadGetArchInfoFromCpuType(
+          macho_reader.cpu_type(), macho_reader.cpu_subtype());
+      fprintf(stderr, "%s: cannot convert DWARF call frame information for ",
+              selected_object_name_.c_str());
+      if (arch)
+        fprintf(stderr, "architecture '%s'", arch->name);
+      else
+        fprintf(stderr, "architecture %d,%d",
+                macho_reader.cpu_type(), macho_reader.cpu_subtype());
+      fprintf(stderr, " to Breakpad symbol file: no register name table\n");
+      return false;
+    }
+  }
+
+  // Find the call frame information and its size.
+  const char *cfi = reinterpret_cast<const char *>(section.contents.start);
+  size_t cfi_size = section.contents.Size();
+
+  // Plug together the parser, handler, and their entourages.
+  DwarfCFIToModule::Reporter module_reporter(selected_object_name_,
+                                             section.section_name);
+  DwarfCFIToModule handler(module, register_names, &module_reporter);
+  dwarf2reader::ByteReader byte_reader(macho_reader.big_endian() ?
+                                       dwarf2reader::ENDIANNESS_BIG :
+                                       dwarf2reader::ENDIANNESS_LITTLE);
+  byte_reader.SetAddressSize(macho_reader.bits_64() ? 8 : 4);
+  // At the moment, according to folks at Apple and some cursory
+  // investigation, Mac OS X only uses DW_EH_PE_pcrel-based pointers, so
+  // this is the only base address the CFI parser will need.
+  byte_reader.SetCFIDataBase(section.address, cfi);
+
+  dwarf2reader::CallFrameInfo::Reporter dwarf_reporter(selected_object_name_,
+                                                       section.section_name);
+  dwarf2reader::CallFrameInfo parser(cfi, cfi_size,
+                                     &byte_reader, &handler, &dwarf_reporter,
+                                     eh_frame);
+  parser.Start();
+  return true;
+}
+
+// A LoadCommandHandler that loads whatever debugging data it finds into a
+// Module.
+class DumpSymbols::LoadCommandDumper:
+      public mach_o::Reader::LoadCommandHandler {
+ public:
+  // Create a load command dumper handling load commands from READER's
+  // file, and adding data to MODULE.
+  LoadCommandDumper(const DumpSymbols &dumper,
+                    google_breakpad::Module *module,
+                    const mach_o::Reader &reader,
+                    SymbolData symbol_data,
+                    bool handle_inter_cu_refs)
+      : dumper_(dumper),
+        module_(module),
+        reader_(reader),
+        symbol_data_(symbol_data),
+        handle_inter_cu_refs_(handle_inter_cu_refs) { }
+
+  bool SegmentCommand(const mach_o::Segment &segment);
+  bool SymtabCommand(const ByteBuffer &entries, const ByteBuffer &strings);
+
+ private:
+  const DumpSymbols &dumper_;
+  google_breakpad::Module *module_;  // WEAK
+  const mach_o::Reader &reader_;
+  const SymbolData symbol_data_;
+  const bool handle_inter_cu_refs_;
+};
+
+bool DumpSymbols::LoadCommandDumper::SegmentCommand(const Segment &segment) {
+  mach_o::SectionMap section_map;
+  if (!reader_.MapSegmentSections(segment, &section_map))
+    return false;
+
+  if (segment.name == "__TEXT") {
+    module_->SetLoadAddress(segment.vmaddr);
+    if (symbol_data_ != NO_CFI) {
+      mach_o::SectionMap::const_iterator eh_frame =
+          section_map.find("__eh_frame");
+      if (eh_frame != section_map.end()) {
+        // If there is a problem reading this, don't treat it as a fatal error.
+        dumper_.ReadCFI(module_, reader_, eh_frame->second, true);
+      }
+    }
+    return true;
+  }
+
+  if (segment.name == "__DWARF") {
+    if (symbol_data_ != ONLY_CFI) {
+      if (!dumper_.ReadDwarf(module_, reader_, section_map,
+                             handle_inter_cu_refs_)) {
+        return false;
+      }
+    }
+    if (symbol_data_ != NO_CFI) {
+      mach_o::SectionMap::const_iterator debug_frame
+          = section_map.find("__debug_frame");
+      if (debug_frame != section_map.end()) {
+        // If there is a problem reading this, don't treat it as a fatal error.
+        dumper_.ReadCFI(module_, reader_, debug_frame->second, false);
+      }
+    }
+  }
+
+  return true;
+}
+
+bool DumpSymbols::LoadCommandDumper::SymtabCommand(const ByteBuffer &entries,
+                                                   const ByteBuffer &strings) {
+  StabsToModule stabs_to_module(module_);
+  // Mac OS X STABS are never "unitized", and the size of the 'value' field
+  // matches the address size of the executable.
+  StabsReader stabs_reader(entries.start, entries.Size(),
+                           strings.start, strings.Size(),
+                           reader_.big_endian(),
+                           reader_.bits_64() ? 8 : 4,
+                           true,
+                           &stabs_to_module);
+  if (!stabs_reader.Process())
+    return false;
+  stabs_to_module.Finalize();
+  return true;
+}
+
+bool DumpSymbols::ReadSymbolData(Module** out_module) {
+  // Select an object file, if SetArchitecture hasn't been called to set one
+  // explicitly.
+  if (!selected_object_file_) {
+    // If there's only one architecture, that's the one.
+    if (object_files_.size() == 1)
+      selected_object_file_ = &object_files_[0];
+    else {
+      // Look for an object file whose architecture matches our own.
+      const NXArchInfo *local_arch = NXGetLocalArchInfo();
+      if (!SetArchitecture(local_arch->cputype, local_arch->cpusubtype)) {
+        fprintf(stderr, "%s: object file contains more than one"
+                " architecture, none of which match the current"
+                " architecture; specify an architecture explicitly"
+                " with '-a ARCH' to resolve the ambiguity\n",
+                [object_filename_ fileSystemRepresentation]);
+        return false;
+      }
+    }
+  }
+
+  assert(selected_object_file_);
+
+  // Find the name of the selected file's architecture, to appear in
+  // the MODULE record and in error messages.
+  const NXArchInfo *selected_arch_info =
+      google_breakpad::BreakpadGetArchInfoFromCpuType(
+          selected_object_file_->cputype, selected_object_file_->cpusubtype);
+
+  const char *selected_arch_name = selected_arch_info->name;
+  if (strcmp(selected_arch_name, "i386") == 0)
+    selected_arch_name = "x86";
+
+  // Produce a name to use in error messages that includes the
+  // filename, and the architecture, if there is more than one.
+  selected_object_name_ = [object_filename_ UTF8String];
+  if (object_files_.size() > 1) {
+    selected_object_name_ += ", architecture ";
+    selected_object_name_ + selected_arch_name;
+  }
+
+  // Compute a module name, to appear in the MODULE record.
+  NSString *module_name = [object_filename_ lastPathComponent];
+
+  // Choose an identifier string, to appear in the MODULE record.
+  string identifier = Identifier();
+  if (identifier.empty())
+    return false;
+  identifier += "0";
+
+  // Create a module to hold the debugging information.
+  scoped_ptr<Module> module(new Module([module_name UTF8String],
+                                       "mac",
+                                       selected_arch_name,
+                                       identifier));
+
+  // Parse the selected object file.
+  mach_o::Reader::Reporter reporter(selected_object_name_);
+  mach_o::Reader reader(&reporter);
+  if (!reader.Read(reinterpret_cast<const uint8_t *>([contents_ bytes])
+                   + selected_object_file_->offset,
+                   selected_object_file_->size,
+                   selected_object_file_->cputype,
+                   selected_object_file_->cpusubtype))
+    return false;
+
+  // Walk its load commands, and deal with whatever is there.
+  LoadCommandDumper load_command_dumper(*this, module.get(), reader,
+                                        symbol_data_, handle_inter_cu_refs_);
+  if (!reader.WalkLoadCommands(&load_command_dumper))
+    return false;
+
+  *out_module = module.release();
+
+  return true;
+}
+
+bool DumpSymbols::WriteSymbolFile(std::ostream &stream) {
+  Module* module = NULL;
+
+  if (ReadSymbolData(&module) && module) {
+    bool res = module->Write(stream, symbol_data_);
+    delete module;
+    return res;
+  }
+
+  return false;
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/common/mac/file_id.cc b/google-breakpad/src/common/mac/file_id.cc
new file mode 100644
index 0000000..c5d7ed5
--- /dev/null
+++ b/google-breakpad/src/common/mac/file_id.cc
@@ -0,0 +1,105 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// file_id.cc: Return a unique identifier for a file
+//
+// See file_id.h for documentation
+//
+// Author: Dan Waylonis
+
+#include <fcntl.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "common/mac/file_id.h"
+#include "common/mac/macho_id.h"
+
+using MacFileUtilities::MachoID;
+
+namespace google_breakpad {
+
+FileID::FileID(const char *path) {
+  strlcpy(path_, path, sizeof(path_));
+}
+
+bool FileID::FileIdentifier(unsigned char identifier[16]) {
+  int fd = open(path_, O_RDONLY);
+  if (fd == -1)
+    return false;
+
+  MD5Context md5;
+  MD5Init(&md5);
+
+  // Read 4k x 2 bytes at a time.  This is faster than just 4k bytes, but
+  // doesn't seem to be an unreasonable size for the stack.
+  unsigned char buffer[4096 * 2];
+  size_t buffer_size = sizeof(buffer);
+  while ((buffer_size = read(fd, buffer, buffer_size) > 0)) {
+    MD5Update(&md5, buffer, static_cast<unsigned>(buffer_size));
+  }
+
+  close(fd);
+  MD5Final(identifier, &md5);
+
+  return true;
+}
+
+bool FileID::MachoIdentifier(cpu_type_t cpu_type,
+                             cpu_subtype_t cpu_subtype,
+                             unsigned char identifier[16]) {
+  MachoID macho(path_);
+
+  if (macho.UUIDCommand(cpu_type, cpu_subtype, identifier))
+    return true;
+
+  return macho.MD5(cpu_type, cpu_subtype, identifier);
+}
+
+// static
+void FileID::ConvertIdentifierToString(const unsigned char identifier[16],
+                                       char *buffer, int buffer_length) {
+  int buffer_idx = 0;
+  for (int idx = 0; (buffer_idx < buffer_length) && (idx < 16); ++idx) {
+    int hi = (identifier[idx] >> 4) & 0x0F;
+    int lo = (identifier[idx]) & 0x0F;
+
+    if (idx == 4 || idx == 6 || idx == 8 || idx == 10)
+      buffer[buffer_idx++] = '-';
+
+    buffer[buffer_idx++] =
+        static_cast<char>((hi >= 10) ? ('A' + hi - 10) : ('0' + hi));
+    buffer[buffer_idx++] =
+        static_cast<char>((lo >= 10) ? ('A' + lo - 10) : ('0' + lo));
+  }
+
+  // NULL terminate
+  buffer[(buffer_idx < buffer_length) ? buffer_idx : buffer_idx - 1] = 0;
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/common/mac/file_id.h b/google-breakpad/src/common/mac/file_id.h
new file mode 100644
index 0000000..1d6dfde
--- /dev/null
+++ b/google-breakpad/src/common/mac/file_id.h
@@ -0,0 +1,81 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// file_id.h: Return a unique identifier for a file
+//
+// Author: Dan Waylonis
+
+#ifndef COMMON_MAC_FILE_ID_H__
+#define COMMON_MAC_FILE_ID_H__
+
+#include <limits.h>
+#include <mach/machine.h>
+
+namespace google_breakpad {
+
+class FileID {
+ public:
+  FileID(const char *path);
+  ~FileID() {};
+
+  // Load the identifier for the file path specified in the constructor into
+  // |identifier|.  Return false if the identifier could not be created for the
+  // file.
+  // The current implementation will return the MD5 hash of the file's bytes.
+  bool FileIdentifier(unsigned char identifier[16]);
+
+  // Treat the file as a mach-o file that will contain one or more archicture.
+  // Accepted values for |cpu_type| and |cpu_subtype| (e.g., CPU_TYPE_X86 or
+  // CPU_TYPE_POWERPC) are listed in /usr/include/mach/machine.h.
+  // If |cpu_type| is 0, then the native cpu type is used. If |cpu_subtype| is
+  // CPU_SUBTYPE_MULTIPLE, the match is only done on |cpu_type|.
+  // Returns false if opening the file failed or if the |cpu_type|/|cpu_subtype|
+  // is not present in the file.
+  // Return the unique identifier in |identifier|.
+  // The current implementation will look for the (in order of priority):
+  // LC_UUID, LC_ID_DYLIB, or MD5 hash of the given |cpu_type|.
+  bool MachoIdentifier(cpu_type_t cpu_type,
+                       cpu_subtype_t cpu_subtype,
+                       unsigned char identifier[16]);
+
+  // Convert the |identifier| data to a NULL terminated string.  The string will
+  // be formatted as a UUID (e.g., 22F065BB-FC9C-49F7-80FE-26A7CEBD7BCE).
+  // The |buffer| should be at least 37 bytes long to receive all of the data
+  // and termination.  Shorter buffers will contain truncated data.
+  static void ConvertIdentifierToString(const unsigned char identifier[16],
+                                        char *buffer, int buffer_length);
+
+ private:
+  // Storage for the path specified
+  char path_[PATH_MAX];
+};
+
+}  // namespace google_breakpad
+
+#endif  // COMMON_MAC_FILE_ID_H__
diff --git a/google-breakpad/src/common/mac/launch_reporter.cc b/google-breakpad/src/common/mac/launch_reporter.cc
new file mode 100644
index 0000000..245be82
--- /dev/null
+++ b/google-breakpad/src/common/mac/launch_reporter.cc
@@ -0,0 +1,84 @@
+// Copyright (c) 2014, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include <stdio.h>
+#include <sys/wait.h>
+#include <unistd.h>
+
+namespace google_breakpad {
+
+void LaunchReporter(const char *reporter_executable_path,
+                    const char *config_file_path) {
+  const char* argv[] = { reporter_executable_path, config_file_path, NULL };
+
+  // Launch the reporter
+  pid_t pid = fork();
+
+  if (pid == -1) {
+    perror("fork");
+    fprintf(stderr, "Failed to fork reporter process\n");
+    return;
+  }
+
+  // If we're in the child, load in our new executable and run.
+  // The parent will not wait for the child to complete.
+  if (pid == 0) {
+    execv(argv[0], (char* const*)argv);
+    perror("exec");
+    fprintf(stderr,
+            "Failed to launch reporter process from path %s\n",
+            reporter_executable_path);
+    unlink(config_file_path);  // launch failed - get rid of config file
+    _exit(1);
+  }
+
+  // Wait until the Reporter child process exits.
+  //
+
+  // We'll use a timeout of one minute.
+  int timeout_count = 60;   // 60 seconds
+
+  while (timeout_count-- > 0) {
+    int status;
+    pid_t result = waitpid(pid, &status, WNOHANG);
+
+    if (result == 0) {
+      // The child has not yet finished.
+      sleep(1);
+    } else if (result == -1) {
+      // error occurred.
+      break;
+    } else {
+      // child has finished
+      break;
+    }
+  }
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/common/mac/launch_reporter.h b/google-breakpad/src/common/mac/launch_reporter.h
new file mode 100644
index 0000000..4531123
--- /dev/null
+++ b/google-breakpad/src/common/mac/launch_reporter.h
@@ -0,0 +1,43 @@
+// Copyright (c) 2014, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef COMMON_MAC_LAUNCH_REPORTER_H__
+#define COMMON_MAC_LAUNCH_REPORTER_H__
+
+namespace google_breakpad {
+
+// Launch the crash dump sender app.
+// |reporter_executable_path| is the path to the sender executable.
+// |config_file_path| is the path to the config file.
+void LaunchReporter(const char *reporter_executable_path,
+                    const char *config_file_path);
+
+}  // namespace google_breakpad
+
+#endif  // COMMON_MAC_LAUNCH_REPORTER_H__
diff --git a/google-breakpad/src/common/mac/macho_id.cc b/google-breakpad/src/common/mac/macho_id.cc
new file mode 100644
index 0000000..09a2a82
--- /dev/null
+++ b/google-breakpad/src/common/mac/macho_id.cc
@@ -0,0 +1,371 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// macho_id.cc: Functions to gather identifying information from a macho file
+//
+// See macho_id.h for documentation
+//
+// Author: Dan Waylonis
+
+extern "C" {  // necessary for Leopard
+  #include <fcntl.h>
+  #include <mach-o/loader.h>
+  #include <mach-o/swap.h>
+  #include <stdio.h>
+  #include <stdlib.h>
+  #include <string.h>
+  #include <sys/time.h>
+  #include <sys/types.h>
+  #include <unistd.h>
+}
+
+#include "common/mac/macho_id.h"
+#include "common/mac/macho_walker.h"
+#include "common/mac/macho_utilities.h"
+
+namespace MacFileUtilities {
+
+using google_breakpad::MD5Init;
+using google_breakpad::MD5Update;
+using google_breakpad::MD5Final;
+
+MachoID::MachoID(const char *path)
+   : memory_(0),
+     memory_size_(0),
+     crc_(0), 
+     md5_context_(), 
+     update_function_(NULL) {
+  strlcpy(path_, path, sizeof(path_));
+}
+
+MachoID::MachoID(const char *path, void *memory, size_t size)
+   : memory_(memory),
+     memory_size_(size),
+     crc_(0), 
+     md5_context_(), 
+     update_function_(NULL) {
+  strlcpy(path_, path, sizeof(path_));
+}
+
+MachoID::~MachoID() {
+}
+
+// The CRC info is from http://en.wikipedia.org/wiki/Adler-32
+// With optimizations from http://www.zlib.net/
+
+// The largest prime smaller than 65536
+#define MOD_ADLER 65521
+// MAX_BLOCK is the largest n such that 255n(n+1)/2 + (n+1)(MAX_BLOCK-1) <= 2^32-1
+#define MAX_BLOCK 5552
+
+void MachoID::UpdateCRC(unsigned char *bytes, size_t size) {
+// Unrolled loops for summing
+#define DO1(buf,i)  {sum1 += (buf)[i]; sum2 += sum1;}
+#define DO2(buf,i)  DO1(buf,i); DO1(buf,i+1);
+#define DO4(buf,i)  DO2(buf,i); DO2(buf,i+2);
+#define DO8(buf,i)  DO4(buf,i); DO4(buf,i+4);
+#define DO16(buf)   DO8(buf,0); DO8(buf,8);
+  // Split up the crc
+  uint32_t sum1 = crc_ & 0xFFFF;
+  uint32_t sum2 = (crc_ >> 16) & 0xFFFF;
+
+  // Do large blocks
+  while (size >= MAX_BLOCK) {
+    size -= MAX_BLOCK;
+    int block_count = MAX_BLOCK / 16;
+    do {
+      DO16(bytes);
+      bytes += 16;
+    } while (--block_count);
+    sum1 %= MOD_ADLER;
+    sum2 %= MOD_ADLER;
+  }
+
+  // Do remaining bytes
+  if (size) {
+    while (size >= 16) {
+      size -= 16;
+      DO16(bytes);
+      bytes += 16;
+    }
+    while (size--) {
+      sum1 += *bytes++;
+      sum2 += sum1;
+    }
+    sum1 %= MOD_ADLER;
+    sum2 %= MOD_ADLER;
+    crc_ = (sum2 << 16) | sum1;
+  }
+}
+
+void MachoID::UpdateMD5(unsigned char *bytes, size_t size) {
+  MD5Update(&md5_context_, bytes, static_cast<unsigned>(size));
+}
+
+void MachoID::Update(MachoWalker *walker, off_t offset, size_t size) {
+  if (!update_function_ || !size)
+    return;
+
+  // Read up to 4k bytes at a time
+  unsigned char buffer[4096];
+  size_t buffer_size;
+  off_t file_offset = offset;
+  while (size > 0) {
+    if (size > sizeof(buffer)) {
+      buffer_size = sizeof(buffer);
+      size -= buffer_size;
+    } else {
+      buffer_size = size;
+      size = 0;
+    }
+
+    if (!walker->ReadBytes(buffer, buffer_size, file_offset))
+      return;
+
+    (this->*update_function_)(buffer, buffer_size);
+    file_offset += buffer_size;
+  }
+}
+
+bool MachoID::UUIDCommand(cpu_type_t cpu_type,
+                          cpu_subtype_t cpu_subtype,
+                          unsigned char bytes[16]) {
+  struct breakpad_uuid_command uuid_cmd;
+  uuid_cmd.cmd = 0;
+  if (!WalkHeader(cpu_type, cpu_subtype, UUIDWalkerCB, &uuid_cmd))
+    return false;
+
+  // If we found the command, we'll have initialized the uuid_command
+  // structure
+  if (uuid_cmd.cmd == LC_UUID) {
+    memcpy(bytes, uuid_cmd.uuid, sizeof(uuid_cmd.uuid));
+    return true;
+  }
+
+  return false;
+}
+
+bool MachoID::IDCommand(cpu_type_t cpu_type,
+                        cpu_subtype_t cpu_subtype,
+                        unsigned char identifier[16]) {
+  struct dylib_command dylib_cmd;
+  dylib_cmd.cmd = 0;
+  if (!WalkHeader(cpu_type, cpu_subtype, IDWalkerCB, &dylib_cmd))
+    return false;
+
+  // If we found the command, we'll have initialized the dylib_command
+  // structure
+  if (dylib_cmd.cmd == LC_ID_DYLIB) {
+    // Take the hashed filename, version, and compatability version bytes
+    // to form the first 12 bytes, pad the rest with zeros
+
+    // create a crude hash of the filename to generate the first 4 bytes
+    identifier[0] = 0;
+    identifier[1] = 0;
+    identifier[2] = 0;
+    identifier[3] = 0;
+
+    for (int j = 0, i = (int)strlen(path_)-1; i>=0 && path_[i]!='/'; ++j, --i) {
+      identifier[j%4] += path_[i];
+    }
+
+    identifier[4] = (dylib_cmd.dylib.current_version >> 24) & 0xFF;
+    identifier[5] = (dylib_cmd.dylib.current_version >> 16) & 0xFF;
+    identifier[6] = (dylib_cmd.dylib.current_version >> 8) & 0xFF;
+    identifier[7] = dylib_cmd.dylib.current_version & 0xFF;
+    identifier[8] = (dylib_cmd.dylib.compatibility_version >> 24) & 0xFF;
+    identifier[9] = (dylib_cmd.dylib.compatibility_version >> 16) & 0xFF;
+    identifier[10] = (dylib_cmd.dylib.compatibility_version >> 8) & 0xFF;
+    identifier[11] = dylib_cmd.dylib.compatibility_version & 0xFF;
+    identifier[12] = (cpu_type >> 24) & 0xFF;
+    identifier[13] = (cpu_type >> 16) & 0xFF;
+    identifier[14] = (cpu_type >> 8) & 0xFF;
+    identifier[15] = cpu_type & 0xFF;
+
+    return true;
+  }
+
+  return false;
+}
+
+uint32_t MachoID::Adler32(cpu_type_t cpu_type, cpu_subtype_t cpu_subtype) {
+  update_function_ = &MachoID::UpdateCRC;
+  crc_ = 0;
+
+  if (!WalkHeader(cpu_type, cpu_subtype, WalkerCB, this))
+    return 0;
+
+  return crc_;
+}
+
+bool MachoID::MD5(cpu_type_t cpu_type, cpu_subtype_t cpu_subtype, unsigned char identifier[16]) {
+  update_function_ = &MachoID::UpdateMD5;
+
+  MD5Init(&md5_context_);
+
+  if (!WalkHeader(cpu_type, cpu_subtype, WalkerCB, this))
+    return false;
+
+  MD5Final(identifier, &md5_context_);
+  return true;
+}
+
+bool MachoID::WalkHeader(cpu_type_t cpu_type,
+                         cpu_subtype_t cpu_subtype,
+                         MachoWalker::LoadCommandCallback callback,
+                         void *context) {
+  if (memory_) {
+    MachoWalker walker(memory_, memory_size_, callback, context);
+    return walker.WalkHeader(cpu_type, cpu_subtype);
+  } else {
+    MachoWalker walker(path_, callback, context);
+    return walker.WalkHeader(cpu_type, cpu_subtype);
+  }
+}
+
+// static
+bool MachoID::WalkerCB(MachoWalker *walker, load_command *cmd, off_t offset,
+                       bool swap, void *context) {
+  MachoID *macho_id = (MachoID *)context;
+
+  if (cmd->cmd == LC_SEGMENT) {
+    struct segment_command seg;
+
+    if (!walker->ReadBytes(&seg, sizeof(seg), offset))
+      return false;
+
+    if (swap)
+      swap_segment_command(&seg, NXHostByteOrder());
+
+    struct mach_header_64 header;
+    off_t header_offset;
+    
+    if (!walker->CurrentHeader(&header, &header_offset))
+      return false;
+        
+    // Process segments that have sections:
+    // (e.g., __TEXT, __DATA, __IMPORT, __OBJC)
+    offset += sizeof(struct segment_command);
+    struct section sec;
+    for (unsigned long i = 0; i < seg.nsects; ++i) {
+      if (!walker->ReadBytes(&sec, sizeof(sec), offset))
+        return false;
+
+      if (swap)
+        swap_section(&sec, 1, NXHostByteOrder());
+
+      // sections of type S_ZEROFILL are "virtual" and contain no data
+      // in the file itself
+      if ((sec.flags & SECTION_TYPE) != S_ZEROFILL && sec.offset != 0)
+        macho_id->Update(walker, header_offset + sec.offset, sec.size);
+
+      offset += sizeof(struct section);
+    }
+  } else if (cmd->cmd == LC_SEGMENT_64) {
+    struct segment_command_64 seg64;
+
+    if (!walker->ReadBytes(&seg64, sizeof(seg64), offset))
+      return false;
+
+    if (swap)
+      breakpad_swap_segment_command_64(&seg64, NXHostByteOrder());
+
+    struct mach_header_64 header;
+    off_t header_offset;
+    
+    if (!walker->CurrentHeader(&header, &header_offset))
+      return false;
+    
+    // Process segments that have sections:
+    // (e.g., __TEXT, __DATA, __IMPORT, __OBJC)
+    offset += sizeof(struct segment_command_64);
+    struct section_64 sec64;
+    for (unsigned long i = 0; i < seg64.nsects; ++i) {
+      if (!walker->ReadBytes(&sec64, sizeof(sec64), offset))
+        return false;
+
+      if (swap)
+        breakpad_swap_section_64(&sec64, 1, NXHostByteOrder());
+
+      // sections of type S_ZEROFILL are "virtual" and contain no data
+      // in the file itself
+      if ((sec64.flags & SECTION_TYPE) != S_ZEROFILL && sec64.offset != 0)
+        macho_id->Update(walker, 
+                         header_offset + sec64.offset, 
+                         (size_t)sec64.size);
+
+      offset += sizeof(struct section_64);
+    }
+  }
+
+  // Continue processing
+  return true;
+}
+
+// static
+bool MachoID::UUIDWalkerCB(MachoWalker *walker, load_command *cmd, off_t offset,
+                           bool swap, void *context) {
+  if (cmd->cmd == LC_UUID) {
+    struct breakpad_uuid_command *uuid_cmd =
+      (struct breakpad_uuid_command *)context;
+
+    if (!walker->ReadBytes(uuid_cmd, sizeof(struct breakpad_uuid_command),
+                           offset))
+      return false;
+
+    if (swap)
+      breakpad_swap_uuid_command(uuid_cmd, NXHostByteOrder());
+
+    return false;
+  }
+
+  // Continue processing
+  return true;
+}
+
+// static
+bool MachoID::IDWalkerCB(MachoWalker *walker, load_command *cmd, off_t offset,
+                         bool swap, void *context) {
+  if (cmd->cmd == LC_ID_DYLIB) {
+    struct dylib_command *dylib_cmd = (struct dylib_command *)context;
+
+    if (!walker->ReadBytes(dylib_cmd, sizeof(struct dylib_command), offset))
+      return false;
+
+    if (swap)
+      swap_dylib_command(dylib_cmd, NXHostByteOrder());
+
+    return false;
+  }
+
+  // Continue processing
+  return true;
+}
+
+}  // namespace MacFileUtilities
diff --git a/google-breakpad/src/common/mac/macho_id.h b/google-breakpad/src/common/mac/macho_id.h
new file mode 100644
index 0000000..1037549
--- /dev/null
+++ b/google-breakpad/src/common/mac/macho_id.h
@@ -0,0 +1,131 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// macho_id.h: Functions to gather identifying information from a macho file
+//
+// Author: Dan Waylonis
+
+#ifndef COMMON_MAC_MACHO_ID_H__
+#define COMMON_MAC_MACHO_ID_H__
+
+#include <limits.h>
+#include <mach/machine.h>
+#include <mach-o/loader.h>
+
+#include "common/mac/macho_walker.h"
+#include "common/md5.h"
+
+namespace MacFileUtilities {
+
+class MachoID {
+ public:
+  MachoID(const char *path);
+  MachoID(const char *path, void *memory, size_t size);
+  ~MachoID();
+
+  // For the given |cpu_type| and |cpu_subtype|, return a UUID from the LC_UUID
+  // command.
+  // Return false if there isn't a LC_UUID command.
+  bool UUIDCommand(cpu_type_t cpu_type,
+                   cpu_subtype_t cpu_subtype,
+                   unsigned char identifier[16]);
+
+  // For the given |cpu_type| and |cpu_subtype|, return a UUID from the
+  // LC_ID_DYLIB command.
+  // Return false if there isn't a LC_ID_DYLIB command.
+  bool IDCommand(cpu_type_t cpu_type,
+                 cpu_subtype_t cpu_subtype,
+                 unsigned char identifier[16]);
+
+  // For the given |cpu_type| and |cpu_subtype|, return the Adler32 CRC for the
+  // mach-o data segment(s).
+  // Return 0 on error (e.g., if the file is not a mach-o file)
+  uint32_t Adler32(cpu_type_t cpu_type,
+                   cpu_subtype_t cpu_subtype);
+
+  // For the given |cpu_type|, and |cpu_subtype| return the MD5 for the mach-o
+  // data segment(s).
+  // Return true on success, false otherwise
+  bool MD5(cpu_type_t cpu_type,
+           cpu_subtype_t cpu_subtype,
+           unsigned char identifier[16]);
+
+ private:
+  // Signature of class member function to be called with data read from file
+  typedef void (MachoID::*UpdateFunction)(unsigned char *bytes, size_t size);
+
+  // Update the CRC value by examining |size| |bytes| and applying the algorithm
+  // to each byte.
+  void UpdateCRC(unsigned char *bytes, size_t size);
+
+  // Update the MD5 value by examining |size| |bytes| and applying the algorithm
+  // to each byte.
+  void UpdateMD5(unsigned char *bytes, size_t size);
+
+  // Bottleneck for update routines
+  void Update(MachoWalker *walker, off_t offset, size_t size);
+
+  // Factory for the MachoWalker
+  bool WalkHeader(cpu_type_t cpu_type, cpu_subtype_t cpu_subtype,
+                  MachoWalker::LoadCommandCallback callback, void *context);
+
+  // The callback from the MachoWalker for CRC and MD5
+  static bool WalkerCB(MachoWalker *walker, load_command *cmd, off_t offset,
+                       bool swap, void *context);
+
+  // The callback from the MachoWalker for LC_UUID
+  static bool UUIDWalkerCB(MachoWalker *walker, load_command *cmd, off_t offset,
+                           bool swap, void *context);
+
+  // The callback from the MachoWalker for LC_ID_DYLIB
+  static bool IDWalkerCB(MachoWalker *walker, load_command *cmd, off_t offset,
+                         bool swap, void *context);
+
+  // File path
+  char path_[PATH_MAX];
+
+  // Memory region to read from
+  void *memory_;
+
+  // Size of the memory region
+  size_t memory_size_;
+
+  // The current crc value
+  uint32_t crc_;
+
+  // The MD5 context
+  google_breakpad::MD5Context md5_context_;
+
+  // The current update to call from the Update callback
+  UpdateFunction update_function_;
+};
+
+}  // namespace MacFileUtilities
+
+#endif  // COMMON_MAC_MACHO_ID_H__
diff --git a/google-breakpad/src/common/mac/macho_reader.cc b/google-breakpad/src/common/mac/macho_reader.cc
new file mode 100644
index 0000000..84b595a
--- /dev/null
+++ b/google-breakpad/src/common/mac/macho_reader.cc
@@ -0,0 +1,535 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// macho_reader.cc: Implementation of google_breakpad::Mach_O::FatReader and
+// google_breakpad::Mach_O::Reader. See macho_reader.h for details.
+
+#include "common/mac/macho_reader.h"
+
+#include <assert.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+// Unfortunately, CPU_TYPE_ARM is not define for 10.4.
+#if !defined(CPU_TYPE_ARM)
+#define CPU_TYPE_ARM 12
+#endif
+
+#if !defined(CPU_TYPE_ARM_64)
+#define CPU_TYPE_ARM_64 16777228
+#endif
+
+namespace google_breakpad {
+namespace mach_o {
+
+// If NDEBUG is #defined, then the 'assert' macro doesn't evaluate its
+// arguments, so you can't place expressions that do necessary work in
+// the argument of an assert. Nor can you assign the result of the
+// expression to a variable and assert that the variable's value is
+// true: you'll get unused variable warnings when NDEBUG is #defined.
+//
+// ASSERT_ALWAYS_EVAL always evaluates its argument, and asserts that
+// the result is true if NDEBUG is not #defined.
+#if defined(NDEBUG)
+#define ASSERT_ALWAYS_EVAL(x) (x)
+#else
+#define ASSERT_ALWAYS_EVAL(x) assert(x)
+#endif
+
+void FatReader::Reporter::BadHeader() {
+  fprintf(stderr, "%s: file is neither a fat binary file"
+          " nor a Mach-O object file\n", filename_.c_str());
+}
+
+void FatReader::Reporter::TooShort() {
+  fprintf(stderr, "%s: file too short for the data it claims to contain\n",
+          filename_.c_str());
+}
+
+void FatReader::Reporter::MisplacedObjectFile() {
+  fprintf(stderr, "%s: file too short for the object files it claims"
+          " to contain\n", filename_.c_str());
+}
+
+bool FatReader::Read(const uint8_t *buffer, size_t size) {
+  buffer_.start = buffer;
+  buffer_.end = buffer + size;
+  ByteCursor cursor(&buffer_);
+
+  // Fat binaries always use big-endian, so read the magic number in
+  // that endianness. To recognize Mach-O magic numbers, which can use
+  // either endianness, check for both the proper and reversed forms
+  // of the magic numbers.
+  cursor.set_big_endian(true);
+  if (cursor >> magic_) {
+    if (magic_ == FAT_MAGIC) {
+      // How many object files does this fat binary contain?
+      uint32_t object_files_count;
+      if (!(cursor >> object_files_count)) {  // nfat_arch
+        reporter_->TooShort();
+        return false;
+      }
+
+      // Read the list of object files.
+      object_files_.resize(object_files_count);
+      for (size_t i = 0; i < object_files_count; i++) {
+        struct fat_arch *objfile = &object_files_[i];
+
+        // Read this object file entry, byte-swapping as appropriate.
+        cursor >> objfile->cputype
+               >> objfile->cpusubtype
+               >> objfile->offset
+               >> objfile->size
+               >> objfile->align;
+        if (!cursor) {
+          reporter_->TooShort();
+          return false;
+        }
+        // Does the file actually have the bytes this entry refers to?
+        size_t fat_size = buffer_.Size();
+        if (objfile->offset > fat_size ||
+            objfile->size > fat_size - objfile->offset) {
+          reporter_->MisplacedObjectFile();
+          return false;
+        }
+      }
+
+      return true;
+    } else if (magic_ == MH_MAGIC || magic_ == MH_MAGIC_64 ||
+               magic_ == MH_CIGAM || magic_ == MH_CIGAM_64) {
+      // If this is a little-endian Mach-O file, fix the cursor's endianness.
+      if (magic_ == MH_CIGAM || magic_ == MH_CIGAM_64)
+        cursor.set_big_endian(false);
+      // Record the entire file as a single entry in the object file list.
+      object_files_.resize(1);
+
+      // Get the cpu type and subtype from the Mach-O header.
+      if (!(cursor >> object_files_[0].cputype
+                   >> object_files_[0].cpusubtype)) {
+        reporter_->TooShort();
+        return false;
+      }
+
+      object_files_[0].offset = 0;
+      object_files_[0].size = static_cast<uint32_t>(buffer_.Size());
+      // This alignment is correct for 32 and 64-bit x86 and ppc.
+      // See get_align in the lipo source for other architectures:
+      // http://www.opensource.apple.com/source/cctools/cctools-773/misc/lipo.c
+      object_files_[0].align = 12;  // 2^12 == 4096
+      
+      return true;
+    }
+  }
+  
+  reporter_->BadHeader();
+  return false;
+}
+
+void Reader::Reporter::BadHeader() {
+  fprintf(stderr, "%s: file is not a Mach-O object file\n", filename_.c_str());
+}
+
+void Reader::Reporter::CPUTypeMismatch(cpu_type_t cpu_type,
+                                       cpu_subtype_t cpu_subtype,
+                                       cpu_type_t expected_cpu_type,
+                                       cpu_subtype_t expected_cpu_subtype) {
+  fprintf(stderr, "%s: CPU type %d, subtype %d does not match expected"
+          " type %d, subtype %d\n",
+          filename_.c_str(), cpu_type, cpu_subtype,
+          expected_cpu_type, expected_cpu_subtype);
+}
+
+void Reader::Reporter::HeaderTruncated() {
+  fprintf(stderr, "%s: file does not contain a complete Mach-O header\n",
+          filename_.c_str());
+}
+
+void Reader::Reporter::LoadCommandRegionTruncated() {
+  fprintf(stderr, "%s: file too short to hold load command region"
+          " given in Mach-O header\n", filename_.c_str());
+}
+
+void Reader::Reporter::LoadCommandsOverrun(size_t claimed, size_t i,
+                                           LoadCommandType type) {
+  fprintf(stderr, "%s: file's header claims there are %ld"
+          " load commands, but load command #%ld",
+          filename_.c_str(), claimed, i);
+  if (type) fprintf(stderr, ", of type %d,", type);
+  fprintf(stderr, " extends beyond the end of the load command region\n");
+}
+
+void Reader::Reporter::LoadCommandTooShort(size_t i, LoadCommandType type) {
+  fprintf(stderr, "%s: the contents of load command #%ld, of type %d,"
+          " extend beyond the size given in the load command's header\n",
+          filename_.c_str(), i, type);
+}
+
+void Reader::Reporter::SectionsMissing(const string &name) {
+  fprintf(stderr, "%s: the load command for segment '%s'"
+          " is too short to hold the section headers it claims to have\n",
+          filename_.c_str(), name.c_str());
+}
+
+void Reader::Reporter::MisplacedSegmentData(const string &name) {
+  fprintf(stderr, "%s: the segment '%s' claims its contents lie beyond"
+          " the end of the file\n", filename_.c_str(), name.c_str());
+}
+
+void Reader::Reporter::MisplacedSectionData(const string &section,
+                                            const string &segment) {
+  fprintf(stderr, "%s: the section '%s' in segment '%s'"
+          " claims its contents lie outside the segment's contents\n",
+          filename_.c_str(), section.c_str(), segment.c_str());
+}
+
+void Reader::Reporter::MisplacedSymbolTable() {
+  fprintf(stderr, "%s: the LC_SYMTAB load command claims that the symbol"
+          " table's contents are located beyond the end of the file\n",
+          filename_.c_str());
+}
+
+void Reader::Reporter::UnsupportedCPUType(cpu_type_t cpu_type) {
+  fprintf(stderr, "%s: CPU type %d is not supported\n",
+          filename_.c_str(), cpu_type);
+}
+
+bool Reader::Read(const uint8_t *buffer,
+                  size_t size,
+                  cpu_type_t expected_cpu_type,
+                  cpu_subtype_t expected_cpu_subtype) {
+  assert(!buffer_.start);
+  buffer_.start = buffer;
+  buffer_.end = buffer + size;
+  ByteCursor cursor(&buffer_, true);
+  uint32_t magic;
+  if (!(cursor >> magic)) {
+    reporter_->HeaderTruncated();
+    return false;
+  }
+
+  if (expected_cpu_type != CPU_TYPE_ANY) {
+    uint32_t expected_magic;
+    // validate that magic matches the expected cpu type
+    switch (expected_cpu_type) {
+      case CPU_TYPE_ARM:
+      case CPU_TYPE_I386:
+        expected_magic = MH_CIGAM;
+        break;
+      case CPU_TYPE_POWERPC:
+        expected_magic = MH_MAGIC;
+        break;
+      case CPU_TYPE_ARM_64:
+      case CPU_TYPE_X86_64:
+        expected_magic = MH_CIGAM_64;
+        break;
+      case CPU_TYPE_POWERPC64:
+        expected_magic = MH_MAGIC_64;
+        break;
+      default:
+        reporter_->UnsupportedCPUType(expected_cpu_type);
+        return false;
+    }
+
+    if (expected_magic != magic) {
+      reporter_->BadHeader();
+      return false;
+    }
+  }
+
+  // Since the byte cursor is in big-endian mode, a reversed magic number
+  // always indicates a little-endian file, regardless of our own endianness.
+  switch (magic) {
+    case MH_MAGIC:    big_endian_ = true;  bits_64_ = false; break;
+    case MH_CIGAM:    big_endian_ = false; bits_64_ = false; break;
+    case MH_MAGIC_64: big_endian_ = true;  bits_64_ = true;  break;
+    case MH_CIGAM_64: big_endian_ = false; bits_64_ = true;  break;
+    default:
+      reporter_->BadHeader();
+      return false;
+  }
+  cursor.set_big_endian(big_endian_);
+  uint32_t commands_size, reserved;
+  cursor >> cpu_type_ >> cpu_subtype_ >> file_type_ >> load_command_count_
+         >> commands_size >> flags_;
+  if (bits_64_)
+    cursor >> reserved;
+  if (!cursor) {
+    reporter_->HeaderTruncated();
+    return false;
+  }
+
+  if (expected_cpu_type != CPU_TYPE_ANY &&
+      (expected_cpu_type != cpu_type_ ||
+       expected_cpu_subtype != cpu_subtype_)) {
+    reporter_->CPUTypeMismatch(cpu_type_, cpu_subtype_,
+                              expected_cpu_type, expected_cpu_subtype);
+    return false;
+  }
+
+  cursor
+      .PointTo(&load_commands_.start, commands_size)
+      .PointTo(&load_commands_.end, 0);
+  if (!cursor) {
+    reporter_->LoadCommandRegionTruncated();
+    return false;
+  }
+
+  return true;
+}
+
+bool Reader::WalkLoadCommands(Reader::LoadCommandHandler *handler) const {
+  ByteCursor list_cursor(&load_commands_, big_endian_);
+
+  for (size_t index = 0; index < load_command_count_; ++index) {
+    // command refers to this load command alone, so that cursor will
+    // refuse to read past the load command's end. But since we haven't
+    // read the size yet, let command initially refer to the entire
+    // remainder of the load command series.
+    ByteBuffer command(list_cursor.here(), list_cursor.Available());
+    ByteCursor cursor(&command, big_endian_);
+    
+    // Read the command type and size --- fields common to all commands.
+    uint32_t type, size;
+    if (!(cursor >> type)) {
+      reporter_->LoadCommandsOverrun(load_command_count_, index, 0);
+      return false;
+    }
+    if (!(cursor >> size) || size > command.Size()) {
+      reporter_->LoadCommandsOverrun(load_command_count_, index, type);
+      return false;
+    }
+
+    // Now that we've read the length, restrict command's range to this
+    // load command only.
+    command.end = command.start + size;
+
+    switch (type) {
+      case LC_SEGMENT:
+      case LC_SEGMENT_64: {
+        Segment segment;
+        segment.bits_64 = (type == LC_SEGMENT_64);
+        size_t word_size = segment.bits_64 ? 8 : 4;
+        cursor.CString(&segment.name, 16);
+        size_t file_offset, file_size;
+        cursor
+            .Read(word_size, false, &segment.vmaddr)
+            .Read(word_size, false, &segment.vmsize)
+            .Read(word_size, false, &file_offset)
+            .Read(word_size, false, &file_size);
+        cursor >> segment.maxprot
+               >> segment.initprot
+               >> segment.nsects
+               >> segment.flags;
+        if (!cursor) {
+          reporter_->LoadCommandTooShort(index, type);
+          return false;
+        }
+        if (file_offset > buffer_.Size() ||
+            file_size > buffer_.Size() - file_offset) {
+          reporter_->MisplacedSegmentData(segment.name);
+          return false;
+        }
+        // Mach-O files in .dSYM bundles have the contents of the loaded
+        // segments removed, and their file offsets and file sizes zeroed
+        // out. To help us handle this special case properly, give such
+        // segments' contents NULL starting and ending pointers.
+        if (file_offset == 0 && file_size == 0) {
+          segment.contents.start = segment.contents.end = NULL;
+        } else {
+          segment.contents.start = buffer_.start + file_offset;
+          segment.contents.end = segment.contents.start + file_size;
+        }
+        // The section list occupies the remainder of this load command's space.
+        segment.section_list.start = cursor.here();
+        segment.section_list.end = command.end;
+
+        if (!handler->SegmentCommand(segment))
+          return false;
+        break;
+      }
+
+      case LC_SYMTAB: {
+        uint32_t symoff, nsyms, stroff, strsize;
+        cursor >> symoff >> nsyms >> stroff >> strsize;
+        if (!cursor) {
+          reporter_->LoadCommandTooShort(index, type);
+          return false;
+        }
+        // How big are the entries in the symbol table?
+        // sizeof(struct nlist_64) : sizeof(struct nlist),
+        // but be paranoid about alignment vs. target architecture.
+        size_t symbol_size = bits_64_ ? 16 : 12;
+        // How big is the entire symbol array?
+        size_t symbols_size = nsyms * symbol_size;
+        if (symoff > buffer_.Size() || symbols_size > buffer_.Size() - symoff ||
+            stroff > buffer_.Size() || strsize > buffer_.Size() - stroff) {
+          reporter_->MisplacedSymbolTable();
+          return false;
+        }
+        ByteBuffer entries(buffer_.start + symoff, symbols_size);
+        ByteBuffer names(buffer_.start + stroff, strsize);
+        if (!handler->SymtabCommand(entries, names))
+          return false;
+        break;
+      }
+      
+      default: {
+        if (!handler->UnknownCommand(type, command))
+          return false;
+        break;
+      }
+    }
+
+    list_cursor.set_here(command.end);
+  }
+
+  return true;
+}
+
+// A load command handler that looks for a segment of a given name.
+class Reader::SegmentFinder : public LoadCommandHandler {
+ public:
+  // Create a load command handler that looks for a segment named NAME,
+  // and sets SEGMENT to describe it if found.
+  SegmentFinder(const string &name, Segment *segment) 
+      : name_(name), segment_(segment), found_() { }
+
+  // Return true if the traversal found the segment, false otherwise.
+  bool found() const { return found_; }
+
+  bool SegmentCommand(const Segment &segment) {
+    if (segment.name == name_) {
+      *segment_ = segment;
+      found_ = true;
+      return false;
+    }
+    return true;
+  }
+
+ private:
+  // The name of the segment our creator is looking for.
+  const string &name_;
+
+  // Where we should store the segment if found. (WEAK)
+  Segment *segment_;
+
+  // True if we found the segment.
+  bool found_;
+};
+
+bool Reader::FindSegment(const string &name, Segment *segment) const {
+  SegmentFinder finder(name, segment);
+  WalkLoadCommands(&finder);
+  return finder.found();
+}
+
+bool Reader::WalkSegmentSections(const Segment &segment,
+                                 SectionHandler *handler) const {
+  size_t word_size = segment.bits_64 ? 8 : 4;
+  ByteCursor cursor(&segment.section_list, big_endian_);
+
+  for (size_t i = 0; i < segment.nsects; i++) {
+    Section section;
+    section.bits_64 = segment.bits_64;
+    uint64_t size;
+    uint32_t offset, dummy32;
+    cursor
+        .CString(&section.section_name, 16)
+        .CString(&section.segment_name, 16)
+        .Read(word_size, false, &section.address)
+        .Read(word_size, false, &size)
+        >> offset
+        >> section.align
+        >> dummy32
+        >> dummy32
+        >> section.flags
+        >> dummy32
+        >> dummy32;
+    if (section.bits_64)
+      cursor >> dummy32;
+    if (!cursor) {
+      reporter_->SectionsMissing(segment.name);
+      return false;
+    }
+    if ((section.flags & SECTION_TYPE) == S_ZEROFILL) {
+      // Zero-fill sections have a size, but no contents.
+      section.contents.start = section.contents.end = NULL;
+    } else if (segment.contents.start == NULL && 
+               segment.contents.end == NULL) {
+      // Mach-O files in .dSYM bundles have the contents of the loaded
+      // segments removed, and their file offsets and file sizes zeroed
+      // out.  However, the sections within those segments still have
+      // non-zero sizes.  There's no reason to call MisplacedSectionData in
+      // this case; the caller may just need the section's load
+      // address. But do set the contents' limits to NULL, for safety.
+      section.contents.start = section.contents.end = NULL;
+    } else {
+      if (offset < size_t(segment.contents.start - buffer_.start) ||
+          offset > size_t(segment.contents.end - buffer_.start) ||
+          size > size_t(segment.contents.end - buffer_.start - offset)) {
+        reporter_->MisplacedSectionData(section.section_name,
+                                        section.segment_name);
+        return false;
+      }
+      section.contents.start = buffer_.start + offset;
+      section.contents.end = section.contents.start + size;
+    }
+    if (!handler->HandleSection(section))
+      return false;
+  }
+  return true;
+}
+
+// A SectionHandler that builds a SectionMap for the sections within a
+// given segment.
+class Reader::SectionMapper: public SectionHandler {
+ public:
+  // Create a SectionHandler that populates MAP with an entry for
+  // each section it is given.
+  SectionMapper(SectionMap *map) : map_(map) { }
+  bool HandleSection(const Section &section) {
+    (*map_)[section.section_name] = section;
+    return true;
+  }
+ private:
+  // The map under construction. (WEAK)
+  SectionMap *map_;
+};
+
+bool Reader::MapSegmentSections(const Segment &segment,
+                                SectionMap *section_map) const {
+  section_map->clear();
+  SectionMapper mapper(section_map);
+  return WalkSegmentSections(segment, &mapper);
+}
+
+}  // namespace mach_o
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/common/mac/macho_reader.h b/google-breakpad/src/common/mac/macho_reader.h
new file mode 100644
index 0000000..7537648
--- /dev/null
+++ b/google-breakpad/src/common/mac/macho_reader.h
@@ -0,0 +1,459 @@
+// -*- mode: C++ -*-
+
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// macho_reader.h: A class for parsing Mach-O files.
+
+#ifndef BREAKPAD_COMMON_MAC_MACHO_READER_H_
+#define BREAKPAD_COMMON_MAC_MACHO_READER_H_
+
+#include <mach-o/loader.h>
+#include <mach-o/fat.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#include <map>
+#include <string>
+#include <vector>
+
+#include "common/byte_cursor.h"
+
+namespace google_breakpad {
+namespace mach_o {
+
+using std::map;
+using std::string;
+using std::vector;
+
+// The Mac headers don't specify particular types for these groups of
+// constants, but defining them here provides some documentation
+// value.  We also give them the same width as the fields in which
+// they appear, which makes them a bit easier to use with ByteCursors.
+typedef uint32_t Magic;
+typedef uint32_t FileType;
+typedef uint32_t FileFlags;
+typedef uint32_t LoadCommandType;
+typedef uint32_t SegmentFlags;
+typedef uint32_t SectionFlags;
+
+// A parser for fat binary files, used to store universal binaries.
+// When applied to a (non-fat) Mach-O file, this behaves as if the
+// file were a fat file containing a single object file.
+class FatReader {
+ public:
+
+  // A class for reporting errors found while parsing fat binary files. The
+  // default definitions of these methods print messages to stderr.
+  class Reporter {
+   public:
+    // Create a reporter that attributes problems to |filename|.
+    explicit Reporter(const string &filename) : filename_(filename) { }
+
+    virtual ~Reporter() { }
+
+    // The data does not begin with a fat binary or Mach-O magic number.
+    // This is a fatal error.
+    virtual void BadHeader();
+
+    // The Mach-O fat binary file ends abruptly, without enough space
+    // to contain an object file it claims is present.
+    virtual void MisplacedObjectFile();
+
+    // The file ends abruptly: either it is not large enough to hold a
+    // complete header, or the header implies that contents are present
+    // beyond the actual end of the file.
+    virtual void TooShort();
+  
+   private:
+    // The filename to which the reader should attribute problems.
+    string filename_;
+  };
+
+  // Create a fat binary file reader that uses |reporter| to report problems.
+  explicit FatReader(Reporter *reporter) : reporter_(reporter) { }
+  
+  // Read the |size| bytes at |buffer| as a fat binary file. On success,
+  // return true; on failure, report the problem to reporter_ and return
+  // false.
+  //
+  // If the data is a plain Mach-O file, rather than a fat binary file,
+  // then the reader behaves as if it had found a fat binary file whose
+  // single object file is the Mach-O file.
+  bool Read(const uint8_t *buffer, size_t size);
+
+  // Return an array of 'struct fat_arch' structures describing the
+  // object files present in this fat binary file. Set |size| to the
+  // number of elements in the array.
+  //
+  // Assuming Read returned true, the entries are validated: it is
+  // safe to assume that the offsets and sizes in each 'struct
+  // fat_arch' refer to subranges of the bytes passed to Read.
+  //
+  // If there are no object files in this fat binary, then this
+  // function can return NULL.
+  //
+  // The array is owned by this FatReader instance; it will be freed when
+  // this FatReader is destroyed.
+  //
+  // This function returns a C-style array instead of a vector to make it
+  // possible to use the result with OS X functions like NXFindBestFatArch,
+  // so that the symbol dumper will behave consistently with other OS X
+  // utilities that work with fat binaries.
+  const struct fat_arch *object_files(size_t *count) const { 
+    *count = object_files_.size();
+    if (object_files_.size() > 0)
+      return &object_files_[0];
+    return NULL;
+  }
+
+ private:
+  // We use this to report problems parsing the file's contents. (WEAK)
+  Reporter *reporter_;
+
+  // The contents of the fat binary or Mach-O file we're parsing. We do not
+  // own the storage it refers to.
+  ByteBuffer buffer_;
+
+  // The magic number of this binary, in host byte order.
+  Magic magic_;
+
+  // The list of object files in this binary.
+  // object_files_.size() == fat_header.nfat_arch
+  vector<struct fat_arch> object_files_;
+};
+
+// A segment in a Mach-O file. All these fields have been byte-swapped as
+// appropriate for use by the executing architecture.
+struct Segment {
+  // The ByteBuffers below point into the bytes passed to the Reader that
+  // created this Segment.
+
+  ByteBuffer section_list;    // This segment's section list.
+  ByteBuffer contents;        // This segment's contents.
+
+  // This segment's name.
+  string name;
+
+  // The address at which this segment should be loaded in memory. If
+  // bits_64 is false, only the bottom 32 bits of this value are valid.
+  uint64_t vmaddr;
+
+  // The size of this segment when loaded into memory. This may be larger
+  // than contents.Size(), in which case the extra area will be
+  // initialized with zeros. If bits_64 is false, only the bottom 32 bits
+  // of this value are valid.
+  uint64_t vmsize;
+
+  // The maximum and initial VM protection of this segment's contents.
+  uint32_t maxprot;
+  uint32_t initprot;
+  
+  // The number of sections in section_list.
+  uint32_t nsects;
+
+  // Flags describing this segment, from SegmentFlags.
+  uint32_t flags;
+
+  // True if this is a 64-bit section; false if it is a 32-bit section.
+  bool bits_64;
+};
+
+// A section in a Mach-O file. All these fields have been byte-swapped as
+// appropriate for use by the executing architecture.
+struct Section {
+  // This section's contents. This points into the bytes passed to the
+  // Reader that created this Section.
+  ByteBuffer contents;
+
+  // This section's name.
+  string section_name;  // section[_64].sectname
+  // The name of the segment this section belongs to.
+  string segment_name;  // section[_64].segname
+
+  // The address at which this section's contents should be loaded in
+  // memory. If bits_64 is false, only the bottom 32 bits of this value
+  // are valid.
+  uint64_t address;
+
+  // The contents of this section should be loaded into memory at an
+  // address which is a multiple of (two raised to this power).
+  uint32_t align;
+
+  // Flags from SectionFlags describing the section's contents.
+  uint32_t flags;
+
+  // We don't support reading relocations yet.
+
+  // True if this is a 64-bit section; false if it is a 32-bit section.
+  bool bits_64;
+};
+
+// A map from section names to Sections.
+typedef map<string, Section> SectionMap;
+
+// A reader for a Mach-O file.
+//
+// This does not handle fat binaries; see FatReader above. FatReader
+// provides a friendly interface for parsing data that could be either a
+// fat binary or a Mach-O file.
+class Reader {
+ public:
+
+  // A class for reporting errors found while parsing Mach-O files. The
+  // default definitions of these member functions print messages to
+  // stderr.
+  class Reporter {
+   public:
+    // Create a reporter that attributes problems to |filename|.
+    explicit Reporter(const string &filename) : filename_(filename) { }
+    virtual ~Reporter() { }
+
+    // Reporter functions for fatal errors return void; the reader will
+    // definitely return an error to its caller after calling them
+
+    // The data does not begin with a Mach-O magic number, or the magic
+    // number does not match the expected value for the cpu architecture.
+    // This is a fatal error.
+    virtual void BadHeader();
+
+    // The data contained in a Mach-O fat binary (|cpu_type|, |cpu_subtype|)
+    // does not match the expected CPU architecture
+    // (|expected_cpu_type|, |expected_cpu_subtype|).
+    virtual void CPUTypeMismatch(cpu_type_t cpu_type,
+                                 cpu_subtype_t cpu_subtype,
+                                 cpu_type_t expected_cpu_type,
+                                 cpu_subtype_t expected_cpu_subtype);
+
+    // The file ends abruptly: either it is not large enough to hold a
+    // complete header, or the header implies that contents are present
+    // beyond the actual end of the file.
+    virtual void HeaderTruncated();
+
+    // The file's load command region, as given in the Mach-O header, is
+    // too large for the file.
+    virtual void LoadCommandRegionTruncated();
+
+    // The file's Mach-O header claims the file contains |claimed| load
+    // commands, but the I'th load command, of type |type|, extends beyond
+    // the end of the load command region, as given by the Mach-O header.
+    // If |type| is zero, the command's type was unreadable.
+    virtual void LoadCommandsOverrun(size_t claimed, size_t i,
+                                     LoadCommandType type);
+
+    // The contents of the |i|'th load command, of type |type|, extend beyond
+    // the size given in the load command's header.
+    virtual void LoadCommandTooShort(size_t i, LoadCommandType type);
+
+    // The LC_SEGMENT or LC_SEGMENT_64 load command for the segment named
+    // |name| is too short to hold the sections that its header says it does.
+    // (This more specific than LoadCommandTooShort.)
+    virtual void SectionsMissing(const string &name);
+
+    // The segment named |name| claims that its contents lie beyond the end
+    // of the file.
+    virtual void MisplacedSegmentData(const string &name);
+
+    // The section named |section| in the segment named |segment| claims that
+    // its contents do not lie entirely within the segment.
+    virtual void MisplacedSectionData(const string &section,
+                                      const string &segment);
+
+    // The LC_SYMTAB command claims that symbol table contents are located
+    // beyond the end of the file.
+    virtual void MisplacedSymbolTable();
+
+    // An attempt was made to read a Mach-O file of the unsupported
+    // CPU architecture |cpu_type|.
+    virtual void UnsupportedCPUType(cpu_type_t cpu_type);
+
+   private:
+    string filename_;
+  };
+
+  // A handler for sections parsed from a segment. The WalkSegmentSections
+  // member function accepts an instance of this class, and applies it to
+  // each section defined in a given segment.
+  class SectionHandler {
+   public:
+    virtual ~SectionHandler() { }
+
+    // Called to report that the segment's section list contains |section|.
+    // This should return true if the iteration should continue, or false
+    // if it should stop.
+    virtual bool HandleSection(const Section &section) = 0;
+  };
+
+  // A handler for the load commands in a Mach-O file.
+  class LoadCommandHandler {
+   public:
+    LoadCommandHandler() { }
+    virtual ~LoadCommandHandler() { }
+
+    // When called from WalkLoadCommands, the following handler functions
+    // should return true if they wish to continue iterating over the load
+    // command list, or false if they wish to stop iterating.
+    //
+    // When called from LoadCommandIterator::Handle or Reader::Handle,
+    // these functions' return values are simply passed through to Handle's
+    // caller.
+    //
+    // The definitions provided by this base class simply return true; the
+    // default is to silently ignore sections whose member functions the
+    // subclass doesn't override.
+
+    // COMMAND is load command we don't recognize. We provide only the
+    // command type and a ByteBuffer enclosing the command's data (If we
+    // cannot parse the command type or its size, we call
+    // reporter_->IncompleteLoadCommand instead.)
+    virtual bool UnknownCommand(LoadCommandType type,
+                                const ByteBuffer &contents) {
+      return true;
+    }
+
+    // The load command is LC_SEGMENT or LC_SEGMENT_64, defining a segment
+    // with the properties given in |segment|.
+    virtual bool SegmentCommand(const Segment &segment) {
+      return true;
+    }
+
+    // The load command is LC_SYMTAB. |entries| holds the array of nlist
+    // entries, and |names| holds the strings the entries refer to.
+    virtual bool SymtabCommand(const ByteBuffer &entries,
+                               const ByteBuffer &names) {
+      return true;
+    }
+
+    // Add handler functions for more load commands here as needed.
+  };
+
+  // Create a Mach-O file reader that reports problems to |reporter|.
+  explicit Reader(Reporter *reporter)
+      : reporter_(reporter) { }
+
+  // Read the given data as a Mach-O file. The reader retains pointers
+  // into the data passed, so the data should live as long as the reader
+  // does. On success, return true; on failure, return false.
+  //
+  // At most one of these functions should be invoked once on each Reader
+  // instance.
+  bool Read(const uint8_t *buffer,
+            size_t size,
+            cpu_type_t expected_cpu_type,
+            cpu_subtype_t expected_cpu_subtype);
+  bool Read(const ByteBuffer &buffer,
+            cpu_type_t expected_cpu_type,
+            cpu_subtype_t expected_cpu_subtype) {
+    return Read(buffer.start,
+                buffer.Size(),
+                expected_cpu_type,
+                expected_cpu_subtype); 
+  }
+
+  // Return this file's characteristics, as found in the Mach-O header.
+  cpu_type_t    cpu_type()    const { return cpu_type_; }
+  cpu_subtype_t cpu_subtype() const { return cpu_subtype_; }
+  FileType      file_type()   const { return file_type_; }
+  FileFlags     flags()       const { return flags_; }
+
+  // Return true if this is a 64-bit Mach-O file, false if it is a 32-bit
+  // Mach-O file.
+  bool bits_64() const { return bits_64_; }
+
+  // Return true if this is a big-endian Mach-O file, false if it is
+  // little-endian.
+  bool big_endian() const { return big_endian_; }
+
+  // Apply |handler| to each load command in this Mach-O file, stopping when
+  // a handler function returns false. If we encounter a malformed load
+  // command, report it via reporter_ and return false. Return true if all
+  // load commands were parseable and all handlers returned true.
+  bool WalkLoadCommands(LoadCommandHandler *handler) const;
+
+  // Set |segment| to describe the segment named |name|, if present. If
+  // found, |segment|'s byte buffers refer to a subregion of the bytes
+  // passed to Read. If we find the section, return true; otherwise,
+  // return false.
+  bool FindSegment(const string &name, Segment *segment) const;
+
+  // Apply |handler| to each section defined in |segment|. If |handler| returns
+  // false, stop iterating and return false. If all calls to |handler| return
+  // true and we reach the end of the section list, return true.
+  bool WalkSegmentSections(const Segment &segment, SectionHandler *handler)
+    const;
+
+  // Clear |section_map| and then populate it with a map of the sections
+  // in |segment|, from section names to Section structures.
+  // Each Section's contents refer to bytes in |segment|'s contents.
+  // On success, return true; if a problem occurs, report it and return false.
+  bool MapSegmentSections(const Segment &segment, SectionMap *section_map)
+    const;
+
+ private:
+  // Used internally.
+  class SegmentFinder;
+  class SectionMapper;
+
+  // We use this to report problems parsing the file's contents. (WEAK)
+  Reporter *reporter_;
+
+  // The contents of the Mach-O file we're parsing. We do not own the
+  // storage it refers to.
+  ByteBuffer buffer_;
+
+  // True if this file is big-endian.
+  bool big_endian_;
+
+  // True if this file is a 64-bit Mach-O file.
+  bool bits_64_;
+
+  // This file's cpu type and subtype.
+  cpu_type_t cpu_type_;        // mach_header[_64].cputype
+  cpu_subtype_t cpu_subtype_;  // mach_header[_64].cpusubtype
+
+  // This file's type.
+  FileType file_type_;         // mach_header[_64].filetype
+
+  // The region of buffer_ occupied by load commands.
+  ByteBuffer load_commands_;
+
+  // The number of load commands in load_commands_.
+  uint32_t load_command_count_;  // mach_header[_64].ncmds
+
+  // This file's header flags.
+  FileFlags flags_;
+};
+
+}  // namespace mach_o
+}  // namespace google_breakpad
+
+#endif  // BREAKPAD_COMMON_MAC_MACHO_READER_H_
diff --git a/google-breakpad/src/common/mac/macho_reader_unittest.cc b/google-breakpad/src/common/mac/macho_reader_unittest.cc
new file mode 100644
index 0000000..9bc6d25
--- /dev/null
+++ b/google-breakpad/src/common/mac/macho_reader_unittest.cc
@@ -0,0 +1,1898 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// macho_reader_unittest.cc: Unit tests for google_breakpad::Mach_O::FatReader
+// and google_breakpad::Mach_O::Reader.
+
+#include <map>
+#include <string>
+#include <vector>
+
+#include "breakpad_googletest_includes.h"
+#include "common/mac/macho_reader.h"
+#include "common/test_assembler.h"
+
+namespace mach_o = google_breakpad::mach_o;
+namespace test_assembler = google_breakpad::test_assembler;
+
+using mach_o::FatReader;
+using mach_o::FileFlags;
+using mach_o::FileType;
+using mach_o::LoadCommandType;
+using mach_o::Reader;
+using mach_o::Section;
+using mach_o::SectionMap;
+using mach_o::Segment;
+using test_assembler::Endianness;
+using test_assembler::Label;
+using test_assembler::kBigEndian;
+using test_assembler::kLittleEndian;
+using test_assembler::kUnsetEndian;
+using google_breakpad::ByteBuffer;
+using std::map;
+using std::string;
+using std::vector;
+using testing::AllOf;
+using testing::DoAll;
+using testing::Field;
+using testing::InSequence;
+using testing::Matcher;
+using testing::Return;
+using testing::SaveArg;
+using testing::Test;
+using testing::_;
+
+
+// Mock classes for the reader's various reporters and handlers.
+
+class MockFatReaderReporter: public FatReader::Reporter {
+ public:
+  MockFatReaderReporter(const string &filename)
+      : FatReader::Reporter(filename) { }
+  MOCK_METHOD0(BadHeader, void());
+  MOCK_METHOD0(MisplacedObjectFile, void());
+  MOCK_METHOD0(TooShort, void());
+};
+
+class MockReaderReporter: public Reader::Reporter {
+ public:
+  MockReaderReporter(const string &filename) : Reader::Reporter(filename) { }
+  MOCK_METHOD0(BadHeader, void());
+  MOCK_METHOD4(CPUTypeMismatch, void(cpu_type_t cpu_type,
+                                     cpu_subtype_t cpu_subtype,
+                                     cpu_type_t expected_cpu_type,
+                                     cpu_subtype_t expected_cpu_subtype));
+  MOCK_METHOD0(HeaderTruncated, void());
+  MOCK_METHOD0(LoadCommandRegionTruncated, void());
+  MOCK_METHOD3(LoadCommandsOverrun, void(size_t claimed, size_t i,
+                                         LoadCommandType type));
+  MOCK_METHOD2(LoadCommandTooShort, void(size_t i, LoadCommandType type));
+  MOCK_METHOD1(SectionsMissing, void(const string &name));
+  MOCK_METHOD1(MisplacedSegmentData, void(const string &name));
+  MOCK_METHOD2(MisplacedSectionData, void(const string &section,
+                                          const string &segment));
+  MOCK_METHOD0(MisplacedSymbolTable, void());
+  MOCK_METHOD1(UnsupportedCPUType, void(cpu_type_t cpu_type));
+};
+
+class MockLoadCommandHandler: public Reader::LoadCommandHandler {
+ public:
+  MOCK_METHOD2(UnknownCommand, bool(LoadCommandType, const ByteBuffer &));
+  MOCK_METHOD1(SegmentCommand, bool(const Segment &));
+  MOCK_METHOD2(SymtabCommand,  bool(const ByteBuffer &, const ByteBuffer &));
+};
+
+class MockSectionHandler: public Reader::SectionHandler {
+ public:
+  MOCK_METHOD1(HandleSection, bool(const Section &section));
+};
+
+
+// Tests for mach_o::FatReader.
+
+// Since the effect of these functions is to write to stderr, the
+// results of these tests must be inspected by hand.
+TEST(FatReaderReporter, BadHeader) {
+  FatReader::Reporter reporter("filename");
+  reporter.BadHeader();
+}
+
+TEST(FatReaderReporter, MisplacedObjectFile) {
+  FatReader::Reporter reporter("filename");
+  reporter.MisplacedObjectFile();
+}
+
+TEST(FatReaderReporter, TooShort) {
+  FatReader::Reporter reporter("filename");
+  reporter.TooShort();
+}
+
+TEST(MachOReaderReporter, BadHeader) {
+  Reader::Reporter reporter("filename");
+  reporter.BadHeader();
+}
+
+TEST(MachOReaderReporter, CPUTypeMismatch) {
+  Reader::Reporter reporter("filename");
+  reporter.CPUTypeMismatch(CPU_TYPE_I386, CPU_SUBTYPE_X86_ALL,
+                           CPU_TYPE_POWERPC, CPU_SUBTYPE_POWERPC_ALL);
+}
+
+TEST(MachOReaderReporter, HeaderTruncated) {
+  Reader::Reporter reporter("filename");
+  reporter.HeaderTruncated();
+}
+
+TEST(MachOReaderReporter, LoadCommandRegionTruncated) {
+  Reader::Reporter reporter("filename");
+  reporter.LoadCommandRegionTruncated();
+}
+
+TEST(MachOReaderReporter, LoadCommandsOverrun) {
+  Reader::Reporter reporter("filename");
+  reporter.LoadCommandsOverrun(10, 9, LC_DYSYMTAB);
+  reporter.LoadCommandsOverrun(10, 9, 0);
+}
+
+TEST(MachOReaderReporter, LoadCommandTooShort) {
+  Reader::Reporter reporter("filename");
+  reporter.LoadCommandTooShort(11, LC_SYMTAB);
+}
+
+TEST(MachOReaderReporter, SectionsMissing) {
+  Reader::Reporter reporter("filename");
+  reporter.SectionsMissing("segment name");
+}
+
+TEST(MachOReaderReporter, MisplacedSegmentData) {
+  Reader::Reporter reporter("filename");
+  reporter.MisplacedSegmentData("segment name");
+}
+
+TEST(MachOReaderReporter, MisplacedSectionData) {
+  Reader::Reporter reporter("filename");
+  reporter.MisplacedSectionData("section name", "segment name");
+}
+
+TEST(MachOReaderReporter, MisplacedSymbolTable) {
+  Reader::Reporter reporter("filename");
+  reporter.MisplacedSymbolTable();
+}
+
+TEST(MachOReaderReporter, UnsupportedCPUType) {
+  Reader::Reporter reporter("filename");
+  reporter.UnsupportedCPUType(CPU_TYPE_HPPA);
+}
+
+struct FatReaderFixture {
+  FatReaderFixture()
+      : fat(kBigEndian),
+        reporter("reporter filename"),
+        reader(&reporter), object_files(), object_files_size() { 
+    EXPECT_CALL(reporter, BadHeader()).Times(0);
+    EXPECT_CALL(reporter, TooShort()).Times(0);
+
+    // here, start, and Mark are file offsets in 'fat'.
+    fat.start() = 0;
+  }
+  // Append a 'fat_arch' entry to 'fat', with the given field values.
+  void AppendFatArch(cpu_type_t type, cpu_subtype_t subtype,
+                     Label offset, Label size, uint32_t align) {
+    fat
+        .B32(type)
+        .B32(subtype)
+        .B32(offset)
+        .B32(size)
+        .B32(align);
+  }
+  // Append |n| dummy 'fat_arch' entries to 'fat'. The cpu type and
+  // subtype have unrealistic values.
+  void AppendDummyArchEntries(int n) {
+    for (int i = 0; i < n; i++)
+      AppendFatArch(0xb68ad617, 0x715a0840, 0, 0, 1);
+  }
+  void ReadFat(bool expect_parse_success = true) {
+    ASSERT_TRUE(fat.GetContents(&contents));
+    fat_bytes = reinterpret_cast<const uint8_t *>(contents.data());
+    if (expect_parse_success) {
+      EXPECT_TRUE(reader.Read(fat_bytes, contents.size()));
+      object_files = reader.object_files(&object_files_size);
+    }
+    else
+      EXPECT_FALSE(reader.Read(fat_bytes, contents.size()));
+  }
+  test_assembler::Section fat;
+  MockFatReaderReporter reporter;
+  FatReader reader;
+  string contents;
+  const uint8_t *fat_bytes;
+  const struct fat_arch *object_files;
+  size_t object_files_size;
+};
+
+class FatReaderTest: public FatReaderFixture, public Test { };
+
+TEST_F(FatReaderTest, BadMagic) {
+  EXPECT_CALL(reporter, BadHeader()).Times(1);
+  fat
+      .B32(0xcafed00d)           // magic number (incorrect)
+      .B32(10);                  // number of architectures
+  AppendDummyArchEntries(10);
+  ReadFat(false);
+}
+
+TEST_F(FatReaderTest, HeaderTooShort) {
+  EXPECT_CALL(reporter, TooShort()).Times(1);
+  fat
+      .B32(0xcafebabe);             // magic number
+  ReadFat(false);
+}
+
+TEST_F(FatReaderTest, ObjectListTooShort) {
+  EXPECT_CALL(reporter, TooShort()).Times(1);
+  fat
+      .B32(0xcafebabe)              // magic number
+      .B32(10);                     // number of architectures
+  AppendDummyArchEntries(9);        // nine dummy architecture entries...
+  fat                               // and a tenth, missing a byte at the end
+      .B32(0x3d46c8fc)              // cpu type
+      .B32(0x8a7bfb01)              // cpu subtype
+      .B32(0)                       // offset
+      .B32(0)                       // size
+      .Append(3, '*');              // one byte short of a four-byte alignment
+  ReadFat(false);
+}
+
+TEST_F(FatReaderTest, DataTooShort) {
+  EXPECT_CALL(reporter, MisplacedObjectFile()).Times(1);
+  Label arch_data;
+  fat
+      .B32(0xcafebabe)              // magic number
+      .B32(1);                      // number of architectures
+  AppendFatArch(0xb4d4a366, 0x4ba4f525, arch_data, 40, 0);
+  fat
+      .Mark(&arch_data)             // file data begins here
+      .Append(30, '*');             // only 30 bytes, not 40 as header claims
+  ReadFat(false);
+}
+
+TEST_F(FatReaderTest, NoObjectFiles) {
+  fat
+      .B32(0xcafebabe)              // magic number
+      .B32(0);                      // number of architectures
+  ReadFat();
+  EXPECT_EQ(0U, object_files_size);
+}
+
+TEST_F(FatReaderTest, OneObjectFile) {
+  Label obj1_offset;
+  fat
+      .B32(0xcafebabe)              // magic number
+      .B32(1);                      // number of architectures
+  // First object file list entry
+  AppendFatArch(0x5e3a6e91, 0x52ccd852, obj1_offset, 0x42, 0x355b15b2);
+  // First object file data
+  fat
+      .Mark(&obj1_offset)           
+      .Append(0x42, '*');           // dummy contents
+  ReadFat();
+  ASSERT_EQ(1U, object_files_size);
+  EXPECT_EQ(0x5e3a6e91, object_files[0].cputype);
+  EXPECT_EQ(0x52ccd852, object_files[0].cpusubtype);
+  EXPECT_EQ(obj1_offset.Value(), object_files[0].offset);
+  EXPECT_EQ(0x42U, object_files[0].size);
+  EXPECT_EQ(0x355b15b2U, object_files[0].align);
+}
+
+TEST_F(FatReaderTest, ThreeObjectFiles) {
+  Label obj1, obj2, obj3;
+  fat
+      .B32(0xcafebabe)              // magic number
+      .B32(3);                      // number of architectures
+  // Three object file list entries.
+  AppendFatArch(0x0cb92c30, 0x6a159a71, obj1, 0xfb4, 0x2615dbe8);
+  AppendFatArch(0x0f3f1cbb, 0x6c55e90f, obj2, 0xc31, 0x83af6ffd);
+  AppendFatArch(0x3717276d, 0x10ecdc84, obj3, 0x4b3, 0x035267d7);
+  fat
+      // First object file data
+      .Mark(&obj1)           
+      .Append(0xfb4, '*')           // dummy contents
+      // Second object file data
+      .Mark(&obj2)           
+      .Append(0xc31, '%')           // dummy contents
+      // Third object file data
+      .Mark(&obj3)           
+      .Append(0x4b3, '^');          // dummy contents
+  
+  ReadFat();
+
+  ASSERT_EQ(3U, object_files_size);
+
+  // First object file.
+  EXPECT_EQ(0x0cb92c30, object_files[0].cputype);
+  EXPECT_EQ(0x6a159a71, object_files[0].cpusubtype);
+  EXPECT_EQ(obj1.Value(), object_files[0].offset);
+  EXPECT_EQ(0xfb4U, object_files[0].size);
+  EXPECT_EQ(0x2615dbe8U, object_files[0].align);
+
+  // Second object file.
+  EXPECT_EQ(0x0f3f1cbb, object_files[1].cputype);
+  EXPECT_EQ(0x6c55e90f, object_files[1].cpusubtype);
+  EXPECT_EQ(obj2.Value(), object_files[1].offset);
+  EXPECT_EQ(0xc31U, object_files[1].size);
+  EXPECT_EQ(0x83af6ffdU, object_files[1].align);
+
+  // Third object file.
+  EXPECT_EQ(0x3717276d, object_files[2].cputype);
+  EXPECT_EQ(0x10ecdc84, object_files[2].cpusubtype);
+  EXPECT_EQ(obj3.Value(), object_files[2].offset);
+  EXPECT_EQ(0x4b3U, object_files[2].size);
+  EXPECT_EQ(0x035267d7U, object_files[2].align);
+}
+
+TEST_F(FatReaderTest, BigEndianMachO32) {
+  fat.set_endianness(kBigEndian);
+  fat
+      .D32(0xfeedface)                  // Mach-O file magic number
+      .D32(0x1a9d0518)                  // cpu type
+      .D32(0x1b779357)                  // cpu subtype
+      .D32(0x009df67e)                  // file type
+      .D32(0)                           // no load commands
+      .D32(0)                           // the load commands occupy no bytes
+      .D32(0x21987a99);                 // flags
+
+  ReadFat();
+
+  // FatReader should treat a Mach-O file as if it were a fat binary file
+  // containing one object file --- the whole thing.
+  ASSERT_EQ(1U, object_files_size);
+  EXPECT_EQ(0x1a9d0518, object_files[0].cputype);
+  EXPECT_EQ(0x1b779357, object_files[0].cpusubtype);
+  EXPECT_EQ(0U, object_files[0].offset);
+  EXPECT_EQ(contents.size(), object_files[0].size);
+}
+
+TEST_F(FatReaderTest, BigEndianMachO64) {
+  fat.set_endianness(kBigEndian);
+  fat
+      .D32(0xfeedfacf)                  // Mach-O 64-bit file magic number
+      .D32(0x5aff8487)                  // cpu type
+      .D32(0x4c6a57f7)                  // cpu subtype
+      .D32(0x4392d2c8)                  // file type
+      .D32(0)                           // no load commands
+      .D32(0)                           // the load commands occupy no bytes
+      .D32(0x1b033eea);                 // flags
+
+  ReadFat();
+
+  // FatReader should treat a Mach-O file as if it were a fat binary file
+  // containing one object file --- the whole thing.
+  ASSERT_EQ(1U, object_files_size);
+  EXPECT_EQ(0x5aff8487, object_files[0].cputype);
+  EXPECT_EQ(0x4c6a57f7, object_files[0].cpusubtype);
+  EXPECT_EQ(0U, object_files[0].offset);
+  EXPECT_EQ(contents.size(), object_files[0].size);
+}
+
+TEST_F(FatReaderTest, LittleEndianMachO32) {
+  fat.set_endianness(kLittleEndian);
+  fat
+      .D32(0xfeedface)                  // Mach-O file magic number
+      .D32(0x1a9d0518)                  // cpu type
+      .D32(0x1b779357)                  // cpu subtype
+      .D32(0x009df67e)                  // file type
+      .D32(0)                           // no load commands
+      .D32(0)                           // the load commands occupy no bytes
+      .D32(0x21987a99);                 // flags
+
+  ReadFat();
+
+  // FatReader should treat a Mach-O file as if it were a fat binary file
+  // containing one object file --- the whole thing.
+  ASSERT_EQ(1U, object_files_size);
+  EXPECT_EQ(0x1a9d0518, object_files[0].cputype);
+  EXPECT_EQ(0x1b779357, object_files[0].cpusubtype);
+  EXPECT_EQ(0U, object_files[0].offset);
+  EXPECT_EQ(contents.size(), object_files[0].size);
+}
+
+TEST_F(FatReaderTest, LittleEndianMachO64) {
+  fat.set_endianness(kLittleEndian);
+  fat
+      .D32(0xfeedfacf)                  // Mach-O 64-bit file magic number
+      .D32(0x5aff8487)                  // cpu type
+      .D32(0x4c6a57f7)                  // cpu subtype
+      .D32(0x4392d2c8)                  // file type
+      .D32(0)                           // no load commands
+      .D32(0)                           // the load commands occupy no bytes
+      .D32(0x1b033eea);                 // flags
+
+  ReadFat();
+
+  // FatReader should treat a Mach-O file as if it were a fat binary file
+  // containing one object file --- the whole thing.
+  ASSERT_EQ(1U, object_files_size);
+  EXPECT_EQ(0x5aff8487, object_files[0].cputype);
+  EXPECT_EQ(0x4c6a57f7, object_files[0].cpusubtype);
+  EXPECT_EQ(0U, object_files[0].offset);
+  EXPECT_EQ(contents.size(), object_files[0].size);
+}
+
+TEST_F(FatReaderTest, IncompleteMach) {
+  fat.set_endianness(kLittleEndian);
+  fat
+      .D32(0xfeedfacf)                  // Mach-O 64-bit file magic number
+      .D32(0x5aff8487);                 // cpu type
+      // Truncated!
+
+  EXPECT_CALL(reporter, TooShort()).WillOnce(Return());
+
+  ReadFat(false);
+}
+
+
+// General mach_o::Reader tests.
+
+// Dynamically scoped configuration data.
+class WithConfiguration {
+ public:
+  // Establish the given parameters as the default for SizedSections
+  // created within the dynamic scope of this instance.
+  WithConfiguration(Endianness endianness, size_t word_size)
+      : endianness_(endianness), word_size_(word_size), saved_(current_) {
+    current_ = this;
+  }
+  ~WithConfiguration() { current_ = saved_; }
+  static Endianness endianness() { 
+    assert(current_);
+    return current_->endianness_;
+  }
+  static size_t word_size() { 
+    assert(current_);
+    return current_->word_size_;
+  }
+
+ private:
+  // The innermost WithConfiguration in whose dynamic scope we are
+  // currently executing.
+  static WithConfiguration *current_;
+
+  // The innermost WithConfiguration whose dynamic scope encloses this
+  // WithConfiguration.
+  Endianness endianness_;
+  size_t word_size_;
+  WithConfiguration *saved_;
+};
+
+WithConfiguration *WithConfiguration::current_ = NULL;
+
+// A test_assembler::Section with a size that we can cite. The start(),
+// Here() and Mark() member functions of a SizedSection always represent
+// offsets within the overall file.
+class SizedSection: public test_assembler::Section {
+ public:
+  // Construct a section of the given endianness and word size.
+  explicit SizedSection(Endianness endianness, size_t word_size)
+      : test_assembler::Section(endianness), word_size_(word_size) {
+    assert(word_size_ == 32 || word_size_ == 64);
+  }
+  SizedSection()
+      : test_assembler::Section(WithConfiguration::endianness()),
+        word_size_(WithConfiguration::word_size()) {
+    assert(word_size_ == 32 || word_size_ == 64);
+  }
+
+  // Access/set this section's word size.
+  size_t word_size() const { return word_size_; }
+  void set_word_size(size_t word_size) { 
+    assert(word_size_ == 32 || word_size_ == 64);
+    word_size_ = word_size;
+  }
+
+  // Return a label representing the size this section will have when it
+  // is Placed in some containing section.
+  Label final_size() const { return final_size_; }
+
+  // Append SECTION to the end of this section, and call its Finish member.
+  // Return a reference to this section.
+  SizedSection &Place(SizedSection *section) {
+    assert(section->endianness() == endianness());
+    section->Finish();
+    section->start() = Here();
+    test_assembler::Section::Append(*section);
+    return *this;
+  }
+
+ protected:
+  // Mark this section's contents as complete. For plain SizedSections, we
+  // set SECTION's start to its position in this section, and its final_size
+  // label to its current size. Derived classes can extend this as needed
+  // for their additional semantics.
+  virtual void Finish() {
+    final_size_ = Size();
+  }
+
+  // The word size for this data: either 32 or 64.
+  size_t word_size_;
+
+ private:
+  // This section's final size, set when we are placed in some other
+  // SizedSection.
+  Label final_size_;
+};
+
+// A SizedSection that is loaded into memory at a particular address.
+class LoadedSection: public SizedSection {
+ public:
+  explicit LoadedSection(Label address = Label()) : address_(address) { }
+
+  // Return a label representing this section's address.
+  Label address() const { return address_; }
+
+  // Placing a loaded section within a loaded section sets the relationship
+  // between their addresses.
+  LoadedSection &Place(LoadedSection *section) {
+    section->address() = address() + Size();
+    SizedSection::Place(section);
+    return *this;
+  }
+
+ protected:
+  // The address at which this section's contents will be loaded.
+  Label address_;
+};
+  
+// A SizedSection representing a segment load command.
+class SegmentLoadCommand: public SizedSection {
+ public:
+  SegmentLoadCommand() : section_count_(0) { }
+
+  // Append a segment load command header with the given characteristics.
+  // The load command will refer to CONTENTS, which must be Placed in the
+  // file separately, at the desired position. Return a reference to this
+  // section.
+  SegmentLoadCommand &Header(const string &name, const LoadedSection &contents,
+                             uint32_t maxprot, uint32_t initprot,
+                             uint32_t flags) {
+    assert(contents.word_size() == word_size());
+    D32(word_size() == 32 ? LC_SEGMENT : LC_SEGMENT_64);
+    D32(final_size());
+    AppendCString(name, 16);
+    Append(endianness(), word_size() / 8, contents.address());
+    Append(endianness(), word_size() / 8, vmsize_);
+    Append(endianness(), word_size() / 8, contents.start());
+    Append(endianness(), word_size() / 8, contents.final_size());
+    D32(maxprot);
+    D32(initprot);
+    D32(final_section_count_);
+    D32(flags);
+
+    content_final_size_ = contents.final_size();
+
+    return *this;
+  }
+
+  // Return a label representing the size of this segment when loaded into
+  // memory. If this label is still undefined by the time we place this
+  // segment, it defaults to the final size of the segment's in-file
+  // contents. Return a reference to this load command.
+  Label &vmsize() { return vmsize_; }
+
+  // Add a section entry with the given characteristics to this segment
+  // load command. Return a reference to this. The section entry will refer
+  // to CONTENTS, which must be Placed in the segment's contents
+  // separately, at the desired position.
+  SegmentLoadCommand &AppendSectionEntry(const string &section_name,
+                                         const string &segment_name,
+                                         uint32_t alignment, uint32_t flags,
+                                         const LoadedSection &contents) {
+    AppendCString(section_name, 16);
+    AppendCString(segment_name, 16);
+    Append(endianness(), word_size() / 8, contents.address());
+    Append(endianness(), word_size() / 8, contents.final_size());
+    D32(contents.start());
+    D32(alignment);
+    D32(0);                  // relocations start
+    D32(0);                  // relocations size
+    D32(flags);
+    D32(0x93656b95);         // reserved1
+    D32(0xc35a2473);         // reserved2
+    if (word_size() == 64)
+      D32(0x70284b95);       // reserved3
+
+    section_count_++;
+
+    return *this;
+  }
+
+ protected:
+  void Finish() {
+    final_section_count_ = section_count_;
+    if (!vmsize_.IsKnownConstant())
+      vmsize_ = content_final_size_;
+    SizedSection::Finish();
+  }
+
+ private:
+  // The number of sections that have been added to this segment so far.
+  size_t section_count_;
+
+  // A label representing the final number of sections this segment will hold.
+  Label final_section_count_;
+
+  // The size of the contents for this segment present in the file.
+  Label content_final_size_;
+
+  // A label representing the size of this segment when loaded; this can be
+  // larger than the size of its file contents, the difference being
+  // zero-filled. If not set explicitly by calling set_vmsize, this is set
+  // equal to the size of the contents.
+  Label vmsize_;
+};
+
+// A SizedSection holding a list of Mach-O load commands.
+class LoadCommands: public SizedSection {
+ public:
+  LoadCommands() : command_count_(0) { }
+
+  // Return a label representing the final load command count.
+  Label final_command_count() const { return final_command_count_; }
+
+  // Increment the command count; return a reference to this section.
+  LoadCommands &CountCommand() {
+    command_count_++;
+    return *this;
+  }
+
+  // Place COMMAND, containing a load command, at the end of this section.
+  // Return a reference to this section.
+  LoadCommands &Place(SizedSection *section) {
+    SizedSection::Place(section);
+    CountCommand();
+    return *this;
+  }
+
+ protected:
+  // Mark this load command list as complete.
+  void Finish() {
+    SizedSection::Finish();
+    final_command_count_ = command_count_;
+  }
+
+ private:
+  // The number of load commands we have added to this file so far.
+  size_t command_count_;
+
+  // A label representing the final command count.
+  Label final_command_count_;
+};
+
+// A SizedSection holding the contents of a Mach-O file. Within a
+// MachOFile, the start, Here, and Mark members refer to file offsets.
+class MachOFile: public SizedSection {
+ public:
+  MachOFile() { 
+    start() = 0;
+  }
+
+  // Create a Mach-O file header using the given characteristics and load
+  // command list. This Places COMMANDS immediately after the header.
+  // Return a reference to this section.
+  MachOFile &Header(LoadCommands *commands,
+                    cpu_type_t cpu_type = CPU_TYPE_X86,
+                    cpu_subtype_t cpu_subtype = CPU_SUBTYPE_I386_ALL,
+                    FileType file_type = MH_EXECUTE,
+                    uint32_t file_flags = (MH_TWOLEVEL |
+                                           MH_DYLDLINK |
+                                           MH_NOUNDEFS)) {
+    D32(word_size() == 32 ? 0xfeedface : 0xfeedfacf);  // magic number
+    D32(cpu_type);                              // cpu type
+    D32(cpu_subtype);                           // cpu subtype
+    D32(file_type);                             // file type
+    D32(commands->final_command_count());       // number of load commands
+    D32(commands->final_size());                // their size in bytes
+    D32(file_flags);                            // flags
+    if (word_size() == 64)
+      D32(0x55638b90);                          // reserved
+    Place(commands);
+    return *this;
+  }
+};
+
+
+struct ReaderFixture {
+  ReaderFixture()
+      : reporter("reporter filename"),
+        reader(&reporter) { 
+    EXPECT_CALL(reporter, BadHeader()).Times(0);
+    EXPECT_CALL(reporter, CPUTypeMismatch(_, _, _, _)).Times(0);
+    EXPECT_CALL(reporter, HeaderTruncated()).Times(0);
+    EXPECT_CALL(reporter, LoadCommandRegionTruncated()).Times(0);
+    EXPECT_CALL(reporter, LoadCommandsOverrun(_, _, _)).Times(0);
+    EXPECT_CALL(reporter, LoadCommandTooShort(_, _)).Times(0);
+    EXPECT_CALL(reporter, SectionsMissing(_)).Times(0);
+    EXPECT_CALL(reporter, MisplacedSegmentData(_)).Times(0);
+    EXPECT_CALL(reporter, MisplacedSectionData(_, _)).Times(0);
+    EXPECT_CALL(reporter, MisplacedSymbolTable()).Times(0);
+    EXPECT_CALL(reporter, UnsupportedCPUType(_)).Times(0);
+
+    EXPECT_CALL(load_command_handler, UnknownCommand(_, _)).Times(0);
+    EXPECT_CALL(load_command_handler, SegmentCommand(_)).Times(0);
+  }
+
+  void ReadFile(MachOFile *file,
+                bool expect_parse_success,
+                cpu_type_t expected_cpu_type,
+                cpu_subtype_t expected_cpu_subtype) {
+    ASSERT_TRUE(file->GetContents(&file_contents));
+    file_bytes = reinterpret_cast<const uint8_t *>(file_contents.data());
+    if (expect_parse_success) {
+      EXPECT_TRUE(reader.Read(file_bytes,
+                              file_contents.size(),
+                              expected_cpu_type,
+                              expected_cpu_subtype));
+    } else {
+      EXPECT_FALSE(reader.Read(file_bytes,
+                               file_contents.size(),
+                               expected_cpu_type,
+                               expected_cpu_subtype));
+    }
+  }
+
+  string file_contents;
+  const uint8_t *file_bytes;
+  MockReaderReporter reporter;
+  Reader reader;
+  MockLoadCommandHandler load_command_handler;
+  MockSectionHandler section_handler;
+};
+
+class ReaderTest: public ReaderFixture, public Test { };
+
+TEST_F(ReaderTest, BadMagic) {
+  WithConfiguration config(kLittleEndian, 32);
+  const cpu_type_t kCPUType = 0x46b760df;
+  const cpu_subtype_t kCPUSubType = 0x76a0e7f7;
+  MachOFile file;
+  file
+      .D32(0x67bdebe1)                  // Not a proper magic number.
+      .D32(kCPUType)                    // cpu type
+      .D32(kCPUSubType)                 // cpu subtype
+      .D32(0x149fc717)                  // file type
+      .D32(0)                           // no load commands
+      .D32(0)                           // they occupy no bytes
+      .D32(0x80e71d64)                  // flags
+      .D32(0);                          // reserved
+  EXPECT_CALL(reporter, BadHeader()).WillOnce(Return());
+  ReadFile(&file, false, CPU_TYPE_ANY, kCPUSubType);
+}
+
+TEST_F(ReaderTest, MismatchedMagic) {
+  WithConfiguration config(kLittleEndian, 32);
+  const cpu_type_t kCPUType = CPU_TYPE_I386;
+  const cpu_subtype_t kCPUSubType = CPU_SUBTYPE_X86_ALL;
+  MachOFile file;
+  file
+      .D32(MH_CIGAM)                    // Right magic, but winds up wrong
+                                        // due to bitswapping
+      .D32(kCPUType)                    // cpu type
+      .D32(kCPUSubType)                 // cpu subtype
+      .D32(0x149fc717)                  // file type
+      .D32(0)                           // no load commands
+      .D32(0)                           // they occupy no bytes
+      .D32(0x80e71d64)                  // flags
+      .D32(0);                          // reserved
+  EXPECT_CALL(reporter, BadHeader()).WillOnce(Return());
+  ReadFile(&file, false, kCPUType, kCPUSubType);
+}
+
+TEST_F(ReaderTest, ShortMagic) {
+  WithConfiguration config(kBigEndian, 32);
+  MachOFile file;
+  file
+      .D16(0xfeed);                     // magic number
+                                        // truncated!
+  EXPECT_CALL(reporter, HeaderTruncated()).WillOnce(Return());
+  ReadFile(&file, false, CPU_TYPE_ANY, 0);
+}
+
+TEST_F(ReaderTest, ShortHeader) {
+  WithConfiguration config(kBigEndian, 32);
+  const cpu_type_t kCPUType = CPU_TYPE_ANY;
+  const cpu_subtype_t kCPUSubType = 0x76a0e7f7;
+  MachOFile file;
+  file
+      .D32(0xfeedface)                  // magic number
+      .D32(kCPUType)                    // cpu type
+      .D32(kCPUSubType)                 // cpu subtype
+      .D32(0x149fc717)                  // file type
+      .D32(0)                           // no load commands
+      .D32(0);                          // they occupy no bytes
+  EXPECT_CALL(reporter, HeaderTruncated()).WillOnce(Return());
+  ReadFile(&file, false, CPU_TYPE_ANY, kCPUSubType);
+}
+
+TEST_F(ReaderTest, MismatchedCPU) {
+  WithConfiguration config(kBigEndian, 32);
+  const cpu_type_t kCPUType = CPU_TYPE_I386;
+  const cpu_subtype_t kCPUSubType = CPU_SUBTYPE_X86_ALL;
+  MachOFile file;
+  file
+      .D32(MH_MAGIC)                    // Right magic for PPC (once bitswapped)
+      .D32(kCPUType)                    // cpu type
+      .D32(kCPUSubType)                 // cpu subtype
+      .D32(0x149fc717)                  // file type
+      .D32(0)                           // no load commands
+      .D32(0)                           // they occupy no bytes
+      .D32(0x80e71d64)                  // flags
+      .D32(0);                          // reserved
+  EXPECT_CALL(reporter,
+              CPUTypeMismatch(CPU_TYPE_I386, CPU_SUBTYPE_X86_ALL,
+                              CPU_TYPE_POWERPC, CPU_SUBTYPE_POWERPC_ALL))
+    .WillOnce(Return());
+  ReadFile(&file, false, CPU_TYPE_POWERPC, CPU_SUBTYPE_POWERPC_ALL);
+}
+
+TEST_F(ReaderTest, LittleEndian32Bit) {
+  WithConfiguration config(kLittleEndian, 32);
+  const cpu_type_t kCPUType = 0x46b760df;
+  const cpu_subtype_t kCPUSubType = 0x76a0e7f7;
+  MachOFile file;
+  file
+      .D32(0xfeedface)                  // magic number
+      .D32(kCPUType)                    // cpu type
+      .D32(kCPUSubType)                 // cpu subtype
+      .D32(0x149fc717)                  // file type
+      .D32(0)                           // no load commands
+      .D32(0)                           // they occupy no bytes
+      .D32(0x80e71d64)                  // flags
+      .D32(0);                          // reserved
+           ReadFile(&file, true, CPU_TYPE_ANY, kCPUSubType);
+  EXPECT_FALSE(reader.bits_64());
+  EXPECT_FALSE(reader.big_endian());
+  EXPECT_EQ(kCPUType,               reader.cpu_type());
+  EXPECT_EQ(kCPUSubType,            reader.cpu_subtype());
+  EXPECT_EQ(FileType(0x149fc717),   reader.file_type());
+  EXPECT_EQ(FileFlags(0x80e71d64),  reader.flags());
+}
+
+TEST_F(ReaderTest, LittleEndian64Bit) {
+  WithConfiguration config(kLittleEndian, 64);
+  const cpu_type_t kCPUType = 0x46b760df;
+  const cpu_subtype_t kCPUSubType = 0x76a0e7f7;
+  MachOFile file;
+  file
+      .D32(0xfeedfacf)                  // magic number
+      .D32(kCPUType)                    // cpu type
+      .D32(kCPUSubType)                 // cpu subtype
+      .D32(0x149fc717)                  // file type
+      .D32(0)                           // no load commands
+      .D32(0)                           // they occupy no bytes
+      .D32(0x80e71d64)                  // flags
+      .D32(0);                          // reserved
+  ReadFile(&file, true, CPU_TYPE_ANY, kCPUSubType);
+  EXPECT_TRUE(reader.bits_64());
+  EXPECT_FALSE(reader.big_endian());
+  EXPECT_EQ(kCPUType,               reader.cpu_type());
+  EXPECT_EQ(kCPUSubType,            reader.cpu_subtype());
+  EXPECT_EQ(FileType(0x149fc717),   reader.file_type());
+  EXPECT_EQ(FileFlags(0x80e71d64),  reader.flags());
+}
+
+TEST_F(ReaderTest, BigEndian32Bit) {
+  WithConfiguration config(kBigEndian, 32);
+  const cpu_type_t kCPUType = 0x46b760df;
+  const cpu_subtype_t kCPUSubType = 0x76a0e7f7;
+  MachOFile file;
+  file
+      .D32(0xfeedface)                  // magic number
+      .D32(kCPUType)                    // cpu type
+      .D32(kCPUSubType)                 // cpu subtype
+      .D32(0x149fc717)                  // file type
+      .D32(0)                           // no load commands
+      .D32(0)                           // they occupy no bytes
+      .D32(0x80e71d64)                  // flags
+      .D32(0);                          // reserved
+  ReadFile(&file, true, CPU_TYPE_ANY, kCPUSubType);
+  EXPECT_FALSE(reader.bits_64());
+  EXPECT_TRUE(reader.big_endian());
+  EXPECT_EQ(kCPUType,               reader.cpu_type());
+  EXPECT_EQ(kCPUSubType,            reader.cpu_subtype());
+  EXPECT_EQ(FileType(0x149fc717),   reader.file_type());
+  EXPECT_EQ(FileFlags(0x80e71d64),  reader.flags());
+}
+
+TEST_F(ReaderTest, BigEndian64Bit) {
+  WithConfiguration config(kBigEndian, 64);
+  const cpu_type_t kCPUType = 0x46b760df;
+  const cpu_subtype_t kCPUSubType = 0x76a0e7f7;
+  MachOFile file;
+  file
+      .D32(0xfeedfacf)                  // magic number
+      .D32(kCPUType)                    // cpu type
+      .D32(kCPUSubType)                 // cpu subtype
+      .D32(0x149fc717)                  // file type
+      .D32(0)                           // no load commands
+      .D32(0)                           // they occupy no bytes
+      .D32(0x80e71d64)                  // flags
+      .D32(0);                          // reserved
+  ReadFile(&file, true, CPU_TYPE_ANY, kCPUSubType);
+  EXPECT_TRUE(reader.bits_64());
+  EXPECT_TRUE(reader.big_endian());
+  EXPECT_EQ(kCPUType,               reader.cpu_type());
+  EXPECT_EQ(kCPUSubType,            reader.cpu_subtype());
+  EXPECT_EQ(FileType(0x149fc717),   reader.file_type());
+  EXPECT_EQ(FileFlags(0x80e71d64),  reader.flags());
+}
+
+
+// Load command tests.
+
+class LoadCommand: public ReaderFixture, public Test { };
+
+TEST_F(LoadCommand, RegionTruncated) {
+  WithConfiguration config(kBigEndian, 64);
+  const cpu_type_t kCPUType = 0x46b760df;
+  const cpu_subtype_t kCPUSubType = 0x76a0e7f7;
+  MachOFile file;
+  file
+      .D32(0xfeedfacf)                  // magic number
+      .D32(kCPUType)                    // cpu type
+      .D32(kCPUSubType)                 // cpu subtype
+      .D32(0x149fc717)                  // file type
+      .D32(1)                           // one load command
+      .D32(40)                          // occupying 40 bytes
+      .D32(0x80e71d64)                  // flags
+      .D32(0)                           // reserved
+      .Append(20, 0);                   // load command region, not as long as
+                                        // Mach-O header promised
+
+  EXPECT_CALL(reporter, LoadCommandRegionTruncated()).WillOnce(Return());
+
+  ReadFile(&file, false, CPU_TYPE_ANY, kCPUSubType);
+}
+
+TEST_F(LoadCommand, None) {
+  WithConfiguration config(kLittleEndian, 32);
+  LoadCommands load_commands;
+  MachOFile file;
+  file.Header(&load_commands);
+
+  ReadFile(&file, true, CPU_TYPE_X86, CPU_SUBTYPE_I386_ALL);
+
+  EXPECT_FALSE(reader.bits_64());
+  EXPECT_FALSE(reader.big_endian());
+  EXPECT_EQ(CPU_TYPE_X86,         reader.cpu_type());
+  EXPECT_EQ(CPU_SUBTYPE_I386_ALL, reader.cpu_subtype());
+  EXPECT_EQ(static_cast<uint32_t>(MH_EXECUTE), reader.file_type());
+  EXPECT_EQ(FileFlags(MH_TWOLEVEL |
+                      MH_DYLDLINK |
+                      MH_NOUNDEFS),
+            FileFlags(reader.flags()));
+  
+  EXPECT_TRUE(reader.WalkLoadCommands(&load_command_handler));
+}
+
+TEST_F(LoadCommand, Unknown) {
+  WithConfiguration config(kBigEndian, 32);
+  LoadCommands load_commands;
+  load_commands
+      .CountCommand()
+      .D32(0x33293d4a)                  // unknown load command
+      .D32(40)                          // total size in bytes
+      .Append(32, '*');                 // dummy data
+  MachOFile file;
+  file.Header(&load_commands);
+
+  ReadFile(&file, true, CPU_TYPE_ANY, 0);
+
+  EXPECT_FALSE(reader.bits_64());
+  EXPECT_TRUE(reader.big_endian());
+  EXPECT_EQ(CPU_TYPE_X86,         reader.cpu_type());
+  EXPECT_EQ(CPU_SUBTYPE_I386_ALL, reader.cpu_subtype());
+  EXPECT_EQ(static_cast<uint32_t>(MH_EXECUTE), reader.file_type());
+  EXPECT_EQ(FileFlags(MH_TWOLEVEL |
+                      MH_DYLDLINK |
+                      MH_NOUNDEFS),
+            reader.flags());
+
+  ByteBuffer expected;
+  expected.start = file_bytes + load_commands.start().Value();
+  expected.end = expected.start + load_commands.final_size().Value();
+  EXPECT_CALL(load_command_handler, UnknownCommand(0x33293d4a,
+                                                   expected))
+      .WillOnce(Return(true));
+
+  EXPECT_TRUE(reader.WalkLoadCommands(&load_command_handler));
+}
+
+TEST_F(LoadCommand, TypeIncomplete) {
+  WithConfiguration config(kLittleEndian, 32);
+  LoadCommands load_commands;
+  load_commands
+      .CountCommand()
+      .Append(3, 0);                    // load command type, incomplete
+
+  MachOFile file;
+  file.Header(&load_commands);
+
+  ReadFile(&file, true, CPU_TYPE_ANY, 0);
+
+  EXPECT_CALL(reporter, LoadCommandsOverrun(1, 0, 0))
+      .WillOnce(Return());
+  EXPECT_FALSE(reader.WalkLoadCommands(&load_command_handler));
+}
+
+TEST_F(LoadCommand, LengthIncomplete) {
+  WithConfiguration config(kBigEndian, 64);
+  LoadCommands load_commands;
+  load_commands
+      .CountCommand()
+      .D32(LC_SEGMENT);                 // load command
+                                                // no length
+  MachOFile file;
+  file.Header(&load_commands);
+
+  ReadFile(&file, true, CPU_TYPE_ANY, 0);
+
+  EXPECT_CALL(reporter, LoadCommandsOverrun(1, 0, LC_SEGMENT))
+      .WillOnce(Return());
+  EXPECT_FALSE(reader.WalkLoadCommands(&load_command_handler));
+}
+
+TEST_F(LoadCommand, ContentIncomplete) {
+  WithConfiguration config(kLittleEndian, 64);
+  LoadCommands load_commands;
+  load_commands
+      .CountCommand()
+      .D32(LC_SEGMENT)          // load command
+      .D32(40)                          // total size in bytes
+      .Append(28, '*');                 // not enough dummy data
+  MachOFile file;
+  file.Header(&load_commands);
+
+  ReadFile(&file, true, CPU_TYPE_ANY, 0);
+
+  EXPECT_CALL(reporter, LoadCommandsOverrun(1, 0, LC_SEGMENT))
+      .WillOnce(Return());
+  EXPECT_FALSE(reader.WalkLoadCommands(&load_command_handler));
+}
+
+TEST_F(LoadCommand, SegmentBE32) {
+  WithConfiguration config(kBigEndian, 32);
+  LoadedSection segment;
+  segment.address() = 0x1891139c;
+  segment.Append(42, '*');              // segment contents
+  SegmentLoadCommand segment_command;
+  segment_command
+      .Header("froon", segment, 0x94d6dd22, 0x8bdbc319, 0x990a16dd);
+  segment_command.vmsize() = 0xcb76584fU;
+  LoadCommands load_commands;
+  load_commands.Place(&segment_command);
+  MachOFile file;
+  file
+      .Header(&load_commands)
+      .Place(&segment);
+
+  ReadFile(&file, true, CPU_TYPE_ANY, 0);
+
+  Segment actual_segment;
+  EXPECT_CALL(load_command_handler, SegmentCommand(_))
+    .WillOnce(DoAll(SaveArg<0>(&actual_segment),
+                    Return(true)));
+  EXPECT_TRUE(reader.WalkLoadCommands(&load_command_handler));
+
+  EXPECT_EQ(false,                        actual_segment.bits_64);
+  EXPECT_EQ("froon",                      actual_segment.name);
+  EXPECT_EQ(0x1891139cU,                  actual_segment.vmaddr);
+  EXPECT_EQ(0xcb76584fU,                  actual_segment.vmsize);
+  EXPECT_EQ(0x94d6dd22U,                  actual_segment.maxprot);
+  EXPECT_EQ(0x8bdbc319U,                  actual_segment.initprot);
+  EXPECT_EQ(0x990a16ddU,                  actual_segment.flags);
+  EXPECT_EQ(0U,                           actual_segment.nsects);
+  EXPECT_EQ(0U,                           actual_segment.section_list.Size());
+  EXPECT_EQ(segment.final_size().Value(), actual_segment.contents.Size());
+}
+
+TEST_F(LoadCommand, SegmentLE32) {
+  WithConfiguration config(kLittleEndian, 32);
+  LoadedSection segment;
+  segment.address() = 0x4b877866;
+  segment.Append(42, '*');              // segment contents
+  SegmentLoadCommand segment_command;
+  segment_command
+      .Header("sixteenprecisely", segment,
+              0x350759ed, 0x6cf5a62e, 0x990a16dd);
+  segment_command.vmsize() = 0xcb76584fU;
+  LoadCommands load_commands;
+  load_commands.Place(&segment_command);
+  MachOFile file;
+  file
+      .Header(&load_commands)
+      .Place(&segment);
+
+  ReadFile(&file, true, CPU_TYPE_ANY, 0);
+
+  Segment actual_segment;
+  EXPECT_CALL(load_command_handler, SegmentCommand(_))
+    .WillOnce(DoAll(SaveArg<0>(&actual_segment),
+                    Return(true)));
+  EXPECT_TRUE(reader.WalkLoadCommands(&load_command_handler));
+
+  EXPECT_EQ(false,                        actual_segment.bits_64);
+  EXPECT_EQ("sixteenprecisely",           actual_segment.name);
+  EXPECT_EQ(0x4b877866U,                  actual_segment.vmaddr);
+  EXPECT_EQ(0xcb76584fU,                  actual_segment.vmsize);
+  EXPECT_EQ(0x350759edU,                  actual_segment.maxprot);
+  EXPECT_EQ(0x6cf5a62eU,                  actual_segment.initprot);
+  EXPECT_EQ(0x990a16ddU,                  actual_segment.flags);
+  EXPECT_EQ(0U,                           actual_segment.nsects);
+  EXPECT_EQ(0U,                           actual_segment.section_list.Size());
+  EXPECT_EQ(segment.final_size().Value(), actual_segment.contents.Size());
+}
+
+TEST_F(LoadCommand, SegmentBE64) {
+  WithConfiguration config(kBigEndian, 64);
+  LoadedSection segment;
+  segment.address() = 0x79f484f77009e511ULL;
+  segment.Append(42, '*');              // segment contents
+  SegmentLoadCommand segment_command;
+  segment_command
+      .Header("froon", segment, 0x42b45da5, 0x8bdbc319, 0xb2335220);
+  segment_command.vmsize() = 0x8d92397ce6248abaULL;
+  LoadCommands load_commands;
+  load_commands.Place(&segment_command);
+  MachOFile file;
+  file
+      .Header(&load_commands)
+      .Place(&segment);
+
+  ReadFile(&file, true, CPU_TYPE_ANY, 0);
+
+  Segment actual_segment;
+  EXPECT_CALL(load_command_handler, SegmentCommand(_))
+    .WillOnce(DoAll(SaveArg<0>(&actual_segment),
+                    Return(true)));
+  EXPECT_TRUE(reader.WalkLoadCommands(&load_command_handler));
+
+  EXPECT_EQ(true,                         actual_segment.bits_64);
+  EXPECT_EQ("froon",                      actual_segment.name);
+  EXPECT_EQ(0x79f484f77009e511ULL,        actual_segment.vmaddr);
+  EXPECT_EQ(0x8d92397ce6248abaULL,        actual_segment.vmsize);
+  EXPECT_EQ(0x42b45da5U,                  actual_segment.maxprot);
+  EXPECT_EQ(0x8bdbc319U,                  actual_segment.initprot);
+  EXPECT_EQ(0xb2335220U,                  actual_segment.flags);
+  EXPECT_EQ(0U,                           actual_segment.nsects);
+  EXPECT_EQ(0U,                           actual_segment.section_list.Size());
+  EXPECT_EQ(segment.final_size().Value(), actual_segment.contents.Size());
+}
+
+TEST_F(LoadCommand, SegmentLE64) {
+  WithConfiguration config(kLittleEndian, 64);
+  LoadedSection segment;
+  segment.address() = 0x50c0501dc5922d35ULL;
+  segment.Append(42, '*');              // segment contents
+  SegmentLoadCommand segment_command;
+  segment_command
+      .Header("sixteenprecisely", segment,
+              0x917c339d, 0xdbc446fa, 0xb650b563);
+  segment_command.vmsize() = 0x84ae73e7c75469bfULL;
+  LoadCommands load_commands;
+  load_commands.Place(&segment_command);
+  MachOFile file;
+  file
+      .Header(&load_commands)
+      .Place(&segment);
+
+  ReadFile(&file, true, CPU_TYPE_ANY, 0);
+
+  Segment actual_segment;
+  EXPECT_CALL(load_command_handler, SegmentCommand(_))
+    .WillOnce(DoAll(SaveArg<0>(&actual_segment),
+                    Return(true)));
+  EXPECT_TRUE(reader.WalkLoadCommands(&load_command_handler));
+
+  EXPECT_EQ(true,                         actual_segment.bits_64);
+  EXPECT_EQ("sixteenprecisely",           actual_segment.name);
+  EXPECT_EQ(0x50c0501dc5922d35ULL,        actual_segment.vmaddr);
+  EXPECT_EQ(0x84ae73e7c75469bfULL,        actual_segment.vmsize);
+  EXPECT_EQ(0x917c339dU,                  actual_segment.maxprot);
+  EXPECT_EQ(0xdbc446faU,                  actual_segment.initprot);
+  EXPECT_EQ(0xb650b563U,                  actual_segment.flags);
+  EXPECT_EQ(0U,                           actual_segment.nsects);
+  EXPECT_EQ(0U,                           actual_segment.section_list.Size());
+  EXPECT_EQ(segment.final_size().Value(), actual_segment.contents.Size());
+}
+
+TEST_F(LoadCommand, SegmentCommandTruncated) {
+  WithConfiguration config(kBigEndian, 32);
+  LoadedSection segment_contents;
+  segment_contents.Append(20, '*');     	// lah di dah
+  SizedSection command;
+  command
+      .D32(LC_SEGMENT)          	// command type
+      .D32(command.final_size())                // command size
+      .AppendCString("too-short", 16)           // segment name
+      .D32(0x9c759211)                          // vmaddr
+      .D32(segment_contents.final_size())       // vmsize
+      .D32(segment_contents.start())            // file offset
+      .D32(segment_contents.final_size())       // file size
+      .D32(0x56f28446)                          // max protection
+      .D32(0xe7910dcb)                          // initial protection
+      .D32(0)                                   // no sections
+      .Append(3, 0);                            // flags (one byte short!)
+  LoadCommands load_commands;
+  load_commands.Place(&command);
+  MachOFile file;
+  file
+      .Header(&load_commands)
+      .Place(&segment_contents);
+  
+  ReadFile(&file, true, CPU_TYPE_ANY, 0);
+
+  EXPECT_CALL(reporter, LoadCommandTooShort(0, LC_SEGMENT))
+      .WillOnce(Return());
+
+  EXPECT_FALSE(reader.WalkLoadCommands(&load_command_handler));
+}
+
+TEST_F(LoadCommand, SegmentBadContentOffset) {
+  WithConfiguration config(kLittleEndian, 32);
+  // Instead of letting a Place call set the segment's file offset and size,
+  // set them ourselves, to check that the parser catches invalid offsets
+  // instead of handing us bogus pointers.
+  LoadedSection segment;
+  segment.address() = 0x4db5489c;
+  segment.start() = 0x7e189e76;         // beyond end of file
+  segment.final_size() = 0x98b9c3ab;
+  SegmentLoadCommand segment_command;
+  segment_command
+      .Header("notmerelyfifteen", segment, 0xcbab25ee, 0x359a20db, 0x68a3933f);
+  LoadCommands load_commands;
+  load_commands.Place(&segment_command);
+  MachOFile file;
+  file.Header(&load_commands);
+
+  ReadFile(&file, true, CPU_TYPE_ANY, 0);
+
+  EXPECT_CALL(reporter, MisplacedSegmentData("notmerelyfifteen"))
+      .WillOnce(Return());
+
+  EXPECT_FALSE(reader.WalkLoadCommands(&load_command_handler));
+}
+
+TEST_F(LoadCommand, ThreeLoadCommands) {
+  WithConfiguration config(kBigEndian, 32);
+  LoadedSection seg1, seg2, seg3;
+  SegmentLoadCommand cmd1, cmd2, cmd3;
+
+  seg1.Append(128, '@');
+  seg1.address() = 0xa7f61ef6;
+  cmd1.Header("head", seg1, 0x88bf1cc7, 0x889a26a4, 0xe9b80d87);
+  // Include some dummy data at the end of the load command. Since we
+  // didn't claim to have any sections, the reader should ignore this. But
+  // making sure the commands have different lengths ensures that we're
+  // using the right command's length to advance the LoadCommandIterator.
+  cmd1.Append(128, '!');
+
+  seg2.Append(42, '*');
+  seg2.address() = 0xc70fc909;
+  cmd2.Header("thorax", seg2, 0xde7327f4, 0xfdaf771d, 0x65e74b30);
+  // More dummy data at the end of the load command. 
+  cmd2.Append(32, '^');
+
+  seg3.Append(42, '%');
+  seg3.address() = 0x46b3ab05;
+  cmd3.Header("abdomen", seg3, 0x7098b70d, 0x8d8d7728, 0x5131419b);
+  // More dummy data at the end of the load command. 
+  cmd3.Append(64, '&');
+
+  LoadCommands load_commands;
+  load_commands.Place(&cmd1).Place(&cmd2).Place(&cmd3);
+
+  MachOFile file;
+  file.Header(&load_commands).Place(&seg1).Place(&seg2).Place(&seg3);
+
+  ReadFile(&file, true, CPU_TYPE_ANY, 0);
+
+  {
+    InSequence s;
+    EXPECT_CALL(load_command_handler,
+                SegmentCommand(Field(&Segment::name, "head")))
+      .WillOnce(Return(true));
+    EXPECT_CALL(load_command_handler,
+                SegmentCommand(Field(&Segment::name, "thorax")))
+      .WillOnce(Return(true));
+    EXPECT_CALL(load_command_handler,
+                SegmentCommand(Field(&Segment::name, "abdomen")))
+      .WillOnce(Return(true));
+  }
+
+  EXPECT_TRUE(reader.WalkLoadCommands(&load_command_handler));
+}
+
+static inline Matcher<const Section &> MatchSection(
+    Matcher<bool> bits_64,
+    Matcher<const string &> section_name,
+    Matcher<const string &> segment_name,
+    Matcher<uint64_t> address,
+    Matcher<uint32_t> alignment,
+    Matcher<uint32_t> flags,
+    Matcher<const ByteBuffer &> contents) {
+  return AllOf(AllOf(Field(&Section::bits_64, bits_64),
+                     Field(&Section::section_name, section_name),
+                     Field(&Section::segment_name, segment_name),
+                     Field(&Section::address, address)),
+               AllOf(Field(&Section::align, alignment),
+                     Field(&Section::flags, flags),
+                     Field(&Section::contents, contents)));
+}
+
+static inline Matcher<const Section &> MatchSection(
+    Matcher<bool> bits_64,
+    Matcher<const string &> section_name,
+    Matcher<const string &> segment_name,
+    Matcher<uint64_t> address) {
+  return AllOf(Field(&Section::bits_64, bits_64),
+               Field(&Section::section_name, section_name),
+               Field(&Section::segment_name, segment_name),
+               Field(&Section::address, address));
+}
+
+TEST_F(LoadCommand, OneSegmentTwoSections) {
+  WithConfiguration config(kBigEndian, 64);
+
+  // Create some sections with some data.
+  LoadedSection section1, section2;
+  section1.Append("buddha's hand");
+  section2.Append("kumquat");
+
+  // Create a segment to hold them.
+  LoadedSection segment;
+  segment.address() = 0xe1d0eeec;
+  segment.Place(&section2).Place(&section1);
+
+  SegmentLoadCommand segment_command;
+  segment_command
+      .Header("head", segment, 0x92c9568c, 0xa89f2627, 0x4dc7a1e2)
+      .AppendSectionEntry("mandarin", "kishu", 12, 0x8cd4604bU, section1)
+      .AppendSectionEntry("bergamot", "cara cara", 12, 0x98746efaU, section2);
+
+  LoadCommands commands;
+  commands.Place(&segment_command);
+
+  MachOFile file;
+  file.Header(&commands).Place(&segment);
+
+  ReadFile(&file, true, CPU_TYPE_ANY, 0);
+  
+  Segment actual_segment;
+  EXPECT_CALL(load_command_handler, SegmentCommand(_))
+      .WillOnce(DoAll(SaveArg<0>(&actual_segment),
+                      Return(true)));
+  EXPECT_TRUE(reader.WalkLoadCommands(&load_command_handler));
+
+  {
+    InSequence s;
+    ByteBuffer contents1;
+    contents1.start = file_bytes + section1.start().Value();
+    contents1.end = contents1.start + section1.final_size().Value();
+    EXPECT_EQ("buddha's hand",
+              string(reinterpret_cast<const char *>(contents1.start),
+                     contents1.Size()));
+    EXPECT_CALL(section_handler,
+                HandleSection(MatchSection(true, "mandarin", "kishu",
+                                           section1.address().Value(), 12,
+                                           0x8cd4604bU, contents1)))
+      .WillOnce(Return(true));
+    
+    ByteBuffer contents2;
+    contents2.start = file_bytes + section2.start().Value();
+    contents2.end = contents2.start + section2.final_size().Value();
+    EXPECT_EQ("kumquat",
+              string(reinterpret_cast<const char *>(contents2.start),
+                     contents2.Size()));
+    EXPECT_CALL(section_handler,
+                HandleSection(MatchSection(true, "bergamot", "cara cara",
+                                           section2.address().Value(), 12,
+                                           0x98746efaU, contents2)))
+      .WillOnce(Return(true));
+  }
+
+  EXPECT_TRUE(reader.WalkSegmentSections(actual_segment, &section_handler));
+}
+
+TEST_F(LoadCommand, MisplacedSectionBefore) {
+  WithConfiguration config(kLittleEndian, 64);
+
+  // The segment.
+  LoadedSection segment;
+  segment.address() = 0x696d83cc;
+  segment.Append(10, '0');
+
+  // The contents of the following sections don't matter, because
+  // we're not really going to Place them in segment; we're just going
+  // to set all their labels by hand to get the (impossible)
+  // configurations we want.
+
+  // A section whose starting offset is before that of its section.
+  LoadedSection before;
+  before.Append(10, '1');
+  before.start()   = segment.start() - 1;
+  before.address() = segment.address() - 1;
+  before.final_size() = before.Size();
+  
+  SegmentLoadCommand command;
+  command
+    .Header("segment", segment, 0x173baa29, 0x8407275d, 0xed8f7057)
+    .AppendSectionEntry("before",     "segment", 0, 0x686c6921, before);
+
+  LoadCommands commands;
+  commands.Place(&command);
+
+  MachOFile file;
+  file.Header(&commands).Place(&segment);
+
+  ReadFile(&file, true, CPU_TYPE_ANY, 0);
+
+  Segment actual_segment;
+  EXPECT_TRUE(reader.FindSegment("segment", &actual_segment));
+
+  EXPECT_CALL(reporter, MisplacedSectionData("before", "segment"))
+    .WillOnce(Return());
+  EXPECT_FALSE(reader.WalkSegmentSections(actual_segment, &section_handler));
+}
+
+TEST_F(LoadCommand, MisplacedSectionAfter) {
+  WithConfiguration config(kLittleEndian, 64);
+
+  // The segment.
+  LoadedSection segment;
+  segment.address() = 0x696d83cc;
+  segment.Append(10, '0');
+
+  // The contents of the following sections don't matter, because
+  // we're not really going to Place them in segment; we're just going
+  // to set all their labels by hand to get the (impossible)
+  // configurations we want.
+
+  // A section whose starting offset is after the end of its section.
+  LoadedSection after;
+  after.Append(10, '2');
+  after.start()    = segment.start() + 11;
+  after.address()   = segment.address() + 11;
+  after.final_size() = after.Size();
+
+  SegmentLoadCommand command;
+  command
+    .Header("segment", segment, 0x173baa29, 0x8407275d, 0xed8f7057)
+    .AppendSectionEntry("after",      "segment", 0, 0x2ee50124, after);
+
+  LoadCommands commands;
+  commands.Place(&command);
+
+  MachOFile file;
+  file.Header(&commands).Place(&segment);
+
+  ReadFile(&file, true, CPU_TYPE_ANY, 0);
+
+  Segment actual_segment;
+  EXPECT_TRUE(reader.FindSegment("segment", &actual_segment));
+
+  EXPECT_CALL(reporter, MisplacedSectionData("after", "segment"))
+    .WillOnce(Return());
+  EXPECT_FALSE(reader.WalkSegmentSections(actual_segment, &section_handler));
+}
+
+TEST_F(LoadCommand, MisplacedSectionTooBig) {
+  WithConfiguration config(kLittleEndian, 64);
+
+  // The segment.
+  LoadedSection segment;
+  segment.address() = 0x696d83cc;
+  segment.Append(10, '0');
+
+  // The contents of the following sections don't matter, because
+  // we're not really going to Place them in segment; we're just going
+  // to set all their labels by hand to get the (impossible)
+  // configurations we want.
+
+  // A section that extends beyond the end of its section.
+  LoadedSection too_big;
+  too_big.Append(10, '3');
+  too_big.start()   = segment.start() + 1;
+  too_big.address() = segment.address() + 1;
+  too_big.final_size() = too_big.Size();
+
+  SegmentLoadCommand command;
+  command
+    .Header("segment", segment, 0x173baa29, 0x8407275d, 0xed8f7057)
+    .AppendSectionEntry("too big",    "segment", 0, 0x8b53ae5c, too_big);
+
+  LoadCommands commands;
+  commands.Place(&command);
+
+  MachOFile file;
+  file.Header(&commands).Place(&segment);
+
+  ReadFile(&file, true, CPU_TYPE_ANY, 0);
+
+  Segment actual_segment;
+  EXPECT_TRUE(reader.FindSegment("segment", &actual_segment));
+
+  EXPECT_CALL(reporter, MisplacedSectionData("too big", "segment"))
+    .WillOnce(Return());
+  EXPECT_FALSE(reader.WalkSegmentSections(actual_segment, &section_handler));
+}
+
+
+// The segments in a .dSYM bundle's Mach-O file have their file offset
+// and size set to zero, but the sections don't.  The reader shouldn't
+// report an error in this case.
+TEST_F(LoadCommand, ZappedSegment) {
+  WithConfiguration config(kBigEndian, 32);
+
+  // The segment.
+  LoadedSection segment;
+  segment.address() = 0x696d83cc;
+  segment.start() = 0;
+  segment.final_size() = 0;
+
+  // The section.
+  LoadedSection section;
+  section.address() = segment.address();
+  section.start() = 0;
+  section.final_size() = 1000;          // extends beyond its segment
+  
+  SegmentLoadCommand command;
+  command
+    .Header("zapped", segment, 0x0861a5cb, 0x68ccff67, 0x0b66255c)
+    .AppendSectionEntry("twitching", "zapped", 0, 0x93b3bd42, section);
+
+  LoadCommands commands;
+  commands.Place(&command);
+
+  MachOFile file;
+  file.Header(&commands);
+
+  ReadFile(&file, true, CPU_TYPE_ANY, 0);
+
+  Segment actual_segment;
+  EXPECT_TRUE(reader.FindSegment("zapped", &actual_segment));
+
+  ByteBuffer zapped_extent(NULL, 0);
+  EXPECT_CALL(section_handler,
+              HandleSection(MatchSection(false, "twitching", "zapped",
+                                         0x696d83cc, 0, 0x93b3bd42,
+                                         zapped_extent)))
+    .WillOnce(Return(true));
+
+  EXPECT_TRUE(reader.WalkSegmentSections(actual_segment, &section_handler));
+}
+
+TEST_F(LoadCommand, MapSegmentSections) {
+  WithConfiguration config(kLittleEndian, 32);
+
+  // Create some sections with some data.
+  LoadedSection section1, section2, section3, section4;
+  section1.Append("buddha's hand");
+  section2.start() = 0;                 // Section 2 is an S_ZEROFILL section.
+  section2.final_size() = 0;
+  section3.Append("shasta gold");
+  section4.Append("satsuma");
+
+  // Create two segments to hold them.
+  LoadedSection segment1, segment2;
+  segment1.address() = 0x13e6c8a9;
+  segment1.Place(&section3).Place(&section1);
+  segment2.set_word_size(64);
+  segment2.address() = 0x04d462e2;
+  segment2.Place(&section4);
+  section2.address() = segment2.address() + segment2.Size();
+
+  SegmentLoadCommand segment_command1, segment_command2;
+  segment_command1
+      .Header("head", segment1, 0x67d955a6, 0x7a61c13e, 0xe3e50c64)
+      .AppendSectionEntry("mandarin", "head", 12, 0x5bb565d7, section1)
+      .AppendSectionEntry("bergamot", "head", 12, 0x8620de73, section3);
+  segment_command2.set_word_size(64);
+  segment_command2
+      .Header("thorax", segment2, 0x7aab2419, 0xe908007f, 0x17961d33)
+      .AppendSectionEntry("sixteenprecisely", "thorax",
+                          12, S_ZEROFILL, section2)
+      .AppendSectionEntry("cara cara", "thorax", 12, 0xb6c5dd8a, section4);
+
+  LoadCommands commands;
+  commands.Place(&segment_command1).Place(&segment_command2);
+
+  MachOFile file;
+  file.Header(&commands).Place(&segment1).Place(&segment2);
+
+  ReadFile(&file, true, CPU_TYPE_ANY, 0);
+
+  Segment segment;
+  SectionMap section_map;
+
+  EXPECT_FALSE(reader.FindSegment("smoot", &segment));
+
+  ASSERT_TRUE(reader.FindSegment("thorax", &segment));
+  ASSERT_TRUE(reader.MapSegmentSections(segment, &section_map));
+
+  EXPECT_FALSE(section_map.find("sixteenpreciselyandthensome")
+               != section_map.end());
+  EXPECT_FALSE(section_map.find("mandarin") != section_map.end());
+  ASSERT_TRUE(section_map.find("cara cara") != section_map.end());
+  EXPECT_THAT(section_map["cara cara"],
+              MatchSection(true, "cara cara", "thorax", 0x04d462e2));
+  ASSERT_TRUE(section_map.find("sixteenprecisely")
+              != section_map.end());
+  ByteBuffer sixteenprecisely_contents(NULL, 0);
+  EXPECT_THAT(section_map["sixteenprecisely"],
+              MatchSection(true, "sixteenprecisely", "thorax",
+                           0x04d462e2 + 7, 12, S_ZEROFILL,
+                           sixteenprecisely_contents));
+
+  ASSERT_TRUE(reader.FindSegment("head", &segment));
+  ASSERT_TRUE(reader.MapSegmentSections(segment, &section_map));
+
+  ASSERT_TRUE(section_map.find("mandarin") != section_map.end());
+  EXPECT_THAT(section_map["mandarin"],
+              MatchSection(false, "mandarin", "head", 0x13e6c8a9 + 11));
+  ASSERT_TRUE(section_map.find("bergamot") != section_map.end());
+  EXPECT_THAT(section_map["bergamot"],
+              MatchSection(false, "bergamot", "head", 0x13e6c8a9));
+}
+
+TEST_F(LoadCommand, FindSegment) {
+  WithConfiguration config(kBigEndian, 32);
+
+  LoadedSection segment1, segment2, segment3;
+  segment1.address() = 0xb8ae5752;
+  segment1.Append("Some contents!");
+  segment2.address() = 0xd6b0ce83;
+  segment2.Append("Different stuff.");
+  segment3.address() = 0x7374fd2a;
+  segment3.Append("Further materials.");
+
+  SegmentLoadCommand cmd1, cmd2, cmd3;
+  cmd1.Header("first",  segment1, 0xfadb6932, 0x175bf529, 0x0de790ad);
+  cmd2.Header("second", segment2, 0xeef716e0, 0xe103a9d7, 0x7d38a8ef);
+  cmd3.Header("third",  segment3, 0xe172b39e, 0x86012f07, 0x080ac94d);
+
+  LoadCommands commands;
+  commands.Place(&cmd1).Place(&cmd2).Place(&cmd3);
+
+  MachOFile file;
+  file.Header(&commands).Place(&segment1).Place(&segment2).Place(&segment3);
+
+  ReadFile(&file, true, CPU_TYPE_ANY, 0);
+
+  Segment actual_segment;
+
+  EXPECT_FALSE(reader.FindSegment("murphy", &actual_segment));
+
+  EXPECT_TRUE(reader.FindSegment("second", &actual_segment));
+  EXPECT_EQ(0xd6b0ce83, actual_segment.vmaddr);
+}
+
+
+// Symtab tests.
+
+// A StringAssembler is a class for generating .stabstr sections to present
+// as input to the STABS parser.
+class StringAssembler: public SizedSection {
+ public:
+  // Add the string S to this StringAssembler, and return the string's
+  // offset within this compilation unit's strings.
+  size_t Add(const string &s) {
+    size_t offset = Size();
+    AppendCString(s);
+    return offset;
+  }
+};
+
+// A SymbolAssembler is a class for generating .stab sections to present as
+// test input for the STABS parser.
+class SymbolAssembler: public SizedSection {
+ public:
+  // Create a SymbolAssembler that uses StringAssembler for its strings.
+  explicit SymbolAssembler(StringAssembler *string_assembler) 
+      : string_assembler_(string_assembler),
+        entry_count_(0) { }
+
+  // Append a STAB entry to the end of this section with the given
+  // characteristics. NAME is the offset of this entry's name string within
+  // its compilation unit's portion of the .stabstr section; this can be a
+  // value generated by a StringAssembler. Return a reference to this
+  // SymbolAssembler.
+  SymbolAssembler &Symbol(uint8_t type, uint8_t other, Label descriptor,
+                          Label value, Label name) {
+    D32(name);
+    D8(type);
+    D8(other);
+    D16(descriptor);
+    Append(endianness(), word_size_ / 8, value);
+    entry_count_++;
+    return *this;
+  }
+
+  // As above, but automatically add NAME to our StringAssembler.
+  SymbolAssembler &Symbol(uint8_t type, uint8_t other, Label descriptor,
+                       Label value, const string &name) {
+    return Symbol(type, other, descriptor, value, string_assembler_->Add(name));
+  }
+
+ private:
+  // The strings for our STABS entries.
+  StringAssembler *string_assembler_;
+
+  // The number of entries in this compilation unit so far.
+  size_t entry_count_;
+};
+
+class Symtab: public ReaderFixture, public Test { };
+
+TEST_F(Symtab, Symtab32) {
+  WithConfiguration config(kLittleEndian, 32);
+
+  StringAssembler strings;
+  SymbolAssembler symbols(&strings);
+  symbols
+      .Symbol(0x52, 0x7c, 0x3470, 0x9bb02e7c, "hrududu")
+      .Symbol(0x50, 0x90, 0x7520, 0x1122525d, "Frith");
+
+  SizedSection symtab_command;
+  symtab_command
+      .D32(LC_SYMTAB)                    // command
+      .D32(symtab_command.final_size())  // size
+      .D32(symbols.start())              // file offset of symbols
+      .D32(2)                            // symbol count
+      .D32(strings.start())              // file offset of strings
+      .D32(strings.final_size());        // strings size
+
+  LoadCommands load_commands;
+  load_commands.Place(&symtab_command);
+
+  MachOFile file;
+  file.Header(&load_commands).Place(&symbols).Place(&strings);
+
+  ReadFile(&file, true, CPU_TYPE_ANY, 0);
+
+  ByteBuffer symbols_found, strings_found;
+  EXPECT_CALL(load_command_handler, SymtabCommand(_, _))
+      .WillOnce(DoAll(SaveArg<0>(&symbols_found),
+                      SaveArg<1>(&strings_found),
+                      Return(true)));
+  EXPECT_TRUE(reader.WalkLoadCommands(&load_command_handler));
+
+  EXPECT_EQ(24U, symbols_found.Size());
+  EXPECT_EQ(14U, strings_found.Size());
+}
+
+TEST_F(Symtab, Symtab64) {
+  WithConfiguration config(kBigEndian, 64);
+
+  StringAssembler strings;
+  SymbolAssembler symbols(&strings);
+  symbols
+      .Symbol(0xa7, 0xaf, 0x03af, 0x42f3072c74335181ULL, "foo")
+      .Symbol(0xb0, 0x9a, 0x2aa7, 0x2e2d349b3d5744a0ULL, "bar");
+
+  SizedSection symtab_command;
+  symtab_command
+      .D32(LC_SYMTAB)                    // command
+      .D32(symtab_command.final_size())  // size
+      .D32(symbols.start())              // file offset of symbols
+      .D32(2)                            // symbol count
+      .D32(strings.start())              // file offset of strings
+      .D32(strings.final_size());        // strings size
+
+  LoadCommands load_commands;
+  load_commands.Place(&symtab_command);
+
+  MachOFile file;
+  file.Header(&load_commands).Place(&symbols).Place(&strings);
+
+  ReadFile(&file, true, CPU_TYPE_ANY, 0);
+
+  ByteBuffer symbols_found, strings_found;
+  EXPECT_CALL(load_command_handler, SymtabCommand(_, _))
+      .WillOnce(DoAll(SaveArg<0>(&symbols_found),
+                      SaveArg<1>(&strings_found),
+                      Return(true)));
+  EXPECT_TRUE(reader.WalkLoadCommands(&load_command_handler));
+
+  EXPECT_EQ(32U, symbols_found.Size());
+  EXPECT_EQ(8U,  strings_found.Size());
+}
+
+TEST_F(Symtab, SymtabMisplacedSymbols) {
+  WithConfiguration config(kBigEndian, 32);
+
+  StringAssembler strings;
+  SymbolAssembler symbols(&strings);
+  symbols
+      .Symbol(0xa7, 0xaf, 0x03af, 0x42f3072c74335181ULL, "foo")
+      .Symbol(0xb0, 0x9a, 0x2aa7, 0x2e2d349b3d5744a0ULL, "bar");
+
+  SizedSection symtab_command;
+  symtab_command
+      .D32(LC_SYMTAB)                    // command
+      .D32(symtab_command.final_size())  // size
+      .D32(symbols.start())              // file offset of symbols
+      .D32(3)                            // symbol count (too many)
+      .D32(strings.start())              // file offset of strings
+      .D32(strings.final_size());        // strings size
+
+  LoadCommands load_commands;
+  load_commands.Place(&symtab_command);
+
+  MachOFile file;
+  // Put symbols at end, so the excessive length will be noticed.
+  file.Header(&load_commands).Place(&strings).Place(&symbols);
+
+  ReadFile(&file, true, CPU_TYPE_ANY, 0);
+
+  EXPECT_CALL(reporter, MisplacedSymbolTable()).Times(1);
+  EXPECT_FALSE(reader.WalkLoadCommands(&load_command_handler));
+}
+
+TEST_F(Symtab, SymtabMisplacedStrings) {
+  WithConfiguration config(kLittleEndian, 32);
+
+  StringAssembler strings;
+  SymbolAssembler symbols(&strings);
+  symbols
+      .Symbol(0xa7, 0xaf, 0x03af, 0x42f3072c74335181ULL, "foo")
+      .Symbol(0xb0, 0x9a, 0x2aa7, 0x2e2d349b3d5744a0ULL, "bar");
+
+  SizedSection symtab_command;
+  symtab_command
+      .D32(LC_SYMTAB)                    // command
+      .D32(symtab_command.final_size())  // size
+      .D32(symbols.start())              // file offset of symbols
+      .D32(2)                            // symbol count
+      .D32(strings.start())              // file offset of strings
+      .D32(strings.final_size() + 1);    // strings size (too long)
+
+  LoadCommands load_commands;
+  load_commands.Place(&symtab_command);
+
+  MachOFile file;
+  // Put strings at end, so the excessive length will be noticed.
+  file.Header(&load_commands).Place(&symbols).Place(&strings);
+
+  ReadFile(&file, true, CPU_TYPE_ANY, 0);
+
+  EXPECT_CALL(reporter, MisplacedSymbolTable()).Times(1);
+  EXPECT_FALSE(reader.WalkLoadCommands(&load_command_handler));
+}
+
diff --git a/google-breakpad/src/common/mac/macho_utilities.cc b/google-breakpad/src/common/mac/macho_utilities.cc
new file mode 100644
index 0000000..89f9e77
--- /dev/null
+++ b/google-breakpad/src/common/mac/macho_utilities.cc
@@ -0,0 +1,90 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// macho_utilties.cc: Utilities for dealing with mach-o files
+//
+// Author: Dave Camp
+
+#include "common/mac/byteswap.h"
+#include "common/mac/macho_utilities.h"
+
+void breakpad_swap_uuid_command(struct breakpad_uuid_command *uc,
+                                enum NXByteOrder target_byte_order)
+{
+  uc->cmd = ByteSwap(uc->cmd);
+  uc->cmdsize = ByteSwap(uc->cmdsize);
+}
+
+void breakpad_swap_segment_command_64(struct segment_command_64 *sg,
+                                      enum NXByteOrder target_byte_order)
+{
+  sg->cmd = ByteSwap(sg->cmd);
+  sg->cmdsize = ByteSwap(sg->cmdsize);
+
+  sg->vmaddr = ByteSwap(sg->vmaddr);
+  sg->vmsize = ByteSwap(sg->vmsize);
+  sg->fileoff = ByteSwap(sg->fileoff);
+  sg->filesize = ByteSwap(sg->filesize);
+
+  sg->maxprot = ByteSwap(sg->maxprot);
+  sg->initprot = ByteSwap(sg->initprot);
+  sg->nsects = ByteSwap(sg->nsects);
+  sg->flags = ByteSwap(sg->flags);
+}
+
+void breakpad_swap_mach_header_64(struct mach_header_64 *mh,
+                                  enum NXByteOrder target_byte_order)
+{
+  mh->magic = ByteSwap(mh->magic);
+  mh->cputype = ByteSwap(mh->cputype);
+  mh->cpusubtype = ByteSwap(mh->cpusubtype);
+  mh->filetype = ByteSwap(mh->filetype);
+  mh->ncmds = ByteSwap(mh->ncmds);
+  mh->sizeofcmds = ByteSwap(mh->sizeofcmds);
+  mh->flags = ByteSwap(mh->flags);
+  mh->reserved = ByteSwap(mh->reserved);
+}
+
+void breakpad_swap_section_64(struct section_64 *s,
+                              uint32_t nsects,
+                              enum NXByteOrder target_byte_order)
+{
+  for (uint32_t i = 0; i < nsects; i++) {
+    s[i].addr = ByteSwap(s[i].addr);
+    s[i].size = ByteSwap(s[i].size);
+
+    s[i].offset = ByteSwap(s[i].offset);
+    s[i].align = ByteSwap(s[i].align);
+    s[i].reloff = ByteSwap(s[i].reloff);
+    s[i].nreloc = ByteSwap(s[i].nreloc);
+    s[i].flags = ByteSwap(s[i].flags);
+    s[i].reserved1 = ByteSwap(s[i].reserved1);
+    s[i].reserved2 = ByteSwap(s[i].reserved2);
+  }
+}
diff --git a/google-breakpad/src/common/mac/macho_utilities.h b/google-breakpad/src/common/mac/macho_utilities.h
new file mode 100644
index 0000000..a200c0f
--- /dev/null
+++ b/google-breakpad/src/common/mac/macho_utilities.h
@@ -0,0 +1,84 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// macho_utilities.h: Utilities for dealing with mach-o files
+//
+// Author: Dave Camp
+
+#ifndef COMMON_MAC_MACHO_UTILITIES_H__
+#define COMMON_MAC_MACHO_UTILITIES_H__
+
+#include <mach-o/loader.h>
+#include <mach/thread_status.h>
+
+/* Some #defines and structs that aren't defined in older SDKs */
+#ifndef CPU_ARCH_ABI64
+# define CPU_ARCH_ABI64    0x01000000
+#endif
+
+#ifndef CPU_TYPE_X86
+# define CPU_TYPE_X86 CPU_TYPE_I386
+#endif
+
+#ifndef CPU_TYPE_POWERPC64
+# define CPU_TYPE_POWERPC64 (CPU_TYPE_POWERPC | CPU_ARCH_ABI64)
+#endif
+
+#ifndef LC_UUID
+# define LC_UUID         0x1b    /* the uuid */
+#endif
+
+// The uuid_command struct/swap routines were added during the 10.4 series.
+// Their presence isn't guaranteed.
+struct breakpad_uuid_command {
+  uint32_t    cmd;            /* LC_UUID */
+  uint32_t    cmdsize;        /* sizeof(struct uuid_command) */
+  uint8_t     uuid[16];       /* the 128-bit uuid */
+};
+
+void breakpad_swap_uuid_command(struct breakpad_uuid_command *uc,
+                                enum NXByteOrder target_byte_order);
+
+// Older SDKs defines thread_state_data_t as an int[] instead
+// of the natural_t[] it should be.
+typedef natural_t breakpad_thread_state_data_t[THREAD_STATE_MAX];
+
+// The 64-bit swap routines were added during the 10.4 series, their
+// presence isn't guaranteed.
+void breakpad_swap_segment_command_64(struct segment_command_64 *sg,
+                                      enum NXByteOrder target_byte_order);
+
+void breakpad_swap_mach_header_64(struct mach_header_64 *mh,
+                                  enum NXByteOrder target_byte_order);
+
+void breakpad_swap_section_64(struct section_64 *s,
+                              uint32_t nsects,
+                              enum NXByteOrder target_byte_order);
+
+#endif
diff --git a/google-breakpad/src/common/mac/macho_walker.cc b/google-breakpad/src/common/mac/macho_walker.cc
new file mode 100644
index 0000000..eee27d6
--- /dev/null
+++ b/google-breakpad/src/common/mac/macho_walker.cc
@@ -0,0 +1,270 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// macho_walker.cc: Iterate over the load commands in a mach-o file
+//
+// See macho_walker.h for documentation
+//
+// Author: Dan Waylonis
+
+extern "C" {  // necessary for Leopard
+  #include <assert.h>
+  #include <fcntl.h>
+  #include <mach-o/arch.h>
+  #include <mach-o/loader.h>
+  #include <mach-o/swap.h>
+  #include <string.h>
+  #include <unistd.h>
+}
+
+#include "common/mac/byteswap.h"
+#include "common/mac/macho_walker.h"
+#include "common/mac/macho_utilities.h"
+
+namespace MacFileUtilities {
+
+MachoWalker::MachoWalker(const char *path, LoadCommandCallback callback,
+                         void *context)
+    : file_(-1),
+      memory_(NULL),
+      memory_size_(0),
+      callback_(callback),
+      callback_context_(context),
+      current_header_(NULL),
+      current_header_size_(0),
+      current_header_offset_(0) {
+  file_ = open(path, O_RDONLY);
+}
+
+MachoWalker::MachoWalker(void *memory, size_t size,
+                         LoadCommandCallback callback, void *context)
+    : file_(-1),
+      memory_(memory),
+      memory_size_(size),
+      callback_(callback),
+      callback_context_(context),
+      current_header_(NULL),
+      current_header_size_(0),
+      current_header_offset_(0) {
+}
+
+MachoWalker::~MachoWalker() {
+  if (file_ != -1)
+    close(file_);
+}
+
+bool MachoWalker::WalkHeader(cpu_type_t cpu_type, cpu_subtype_t cpu_subtype) {
+  cpu_type_t valid_cpu_type = cpu_type;
+  cpu_subtype_t valid_cpu_subtype = cpu_subtype;
+  // if |cpu_type| is 0, use the native cpu type.
+  if (cpu_type == 0) {
+    const NXArchInfo *arch = NXGetLocalArchInfo();
+    assert(arch);
+    valid_cpu_type = arch->cputype;
+    valid_cpu_subtype = CPU_SUBTYPE_MULTIPLE;
+  }
+  off_t offset;
+  if (FindHeader(valid_cpu_type, valid_cpu_subtype, offset)) {
+    if (cpu_type & CPU_ARCH_ABI64)
+      return WalkHeader64AtOffset(offset);
+
+    return WalkHeaderAtOffset(offset);
+  }
+
+  return false;
+}
+
+bool MachoWalker::ReadBytes(void *buffer, size_t size, off_t offset) {
+  if (memory_) {
+    if (offset < 0)
+      return false;
+    bool result = true;
+    if (offset + size > memory_size_) {
+      if (static_cast<size_t>(offset) >= memory_size_)
+        return false;
+      size = memory_size_ - static_cast<size_t>(offset);
+      result = false;
+    }
+    memcpy(buffer, static_cast<char *>(memory_) + offset, size);
+    return result;
+  } else {
+    return pread(file_, buffer, size, offset) == (ssize_t)size;
+  }
+}
+
+bool MachoWalker::CurrentHeader(struct mach_header_64 *header, off_t *offset) {
+  if (current_header_) {
+    memcpy(header, current_header_, sizeof(mach_header_64));
+    *offset = current_header_offset_;
+    return true;
+  }
+
+  return false;
+}
+
+bool MachoWalker::FindHeader(cpu_type_t cpu_type,
+                             cpu_subtype_t cpu_subtype,
+                             off_t &offset) {
+  // Read the magic bytes that's common amongst all mach-o files
+  uint32_t magic;
+  if (!ReadBytes(&magic, sizeof(magic), 0))
+    return false;
+
+  offset = sizeof(magic);
+
+  // Figure out what type of file we've got
+  bool is_fat = false;
+  if (magic == FAT_MAGIC || magic == FAT_CIGAM) {
+    is_fat = true;
+  }
+  else if (magic != MH_MAGIC && magic != MH_CIGAM && magic != MH_MAGIC_64 &&
+           magic != MH_CIGAM_64) {
+    return false;
+  }
+
+  if (!is_fat) {
+    // If we don't have a fat header, check if the cpu type matches the single
+    // header
+    struct mach_header header;
+    if (!ReadBytes(&header, sizeof(header), 0))
+      return false;
+
+    if (magic == MH_CIGAM || magic == MH_CIGAM_64)
+      swap_mach_header(&header, NXHostByteOrder());
+
+    if (cpu_type != header.cputype ||
+        (cpu_subtype != CPU_SUBTYPE_MULTIPLE &&
+         cpu_subtype != header.cpusubtype)) {
+      return false;
+    }
+
+    offset = 0;
+    return true;
+  } else {
+    // Read the fat header and find an appropriate architecture
+    offset = 0;
+    struct fat_header fat;
+    if (!ReadBytes(&fat, sizeof(fat), offset))
+      return false;
+
+    if (NXHostByteOrder() != NX_BigEndian)
+      swap_fat_header(&fat, NXHostByteOrder());
+
+    offset += sizeof(fat);
+
+    // Search each architecture for the desired one
+    struct fat_arch arch;
+    for (uint32_t i = 0; i < fat.nfat_arch; ++i) {
+      if (!ReadBytes(&arch, sizeof(arch), offset))
+        return false;
+
+      if (NXHostByteOrder() != NX_BigEndian)
+        swap_fat_arch(&arch, 1, NXHostByteOrder());
+
+      if (arch.cputype == cpu_type &&
+          (cpu_subtype == CPU_SUBTYPE_MULTIPLE ||
+           arch.cpusubtype == cpu_subtype)) {
+        offset = arch.offset;
+        return true;
+      }
+
+      offset += sizeof(arch);
+    }
+  }
+
+  return false;
+}
+
+bool MachoWalker::WalkHeaderAtOffset(off_t offset) {
+  struct mach_header header;
+  if (!ReadBytes(&header, sizeof(header), offset))
+    return false;
+
+  bool swap = (header.magic == MH_CIGAM);
+  if (swap)
+    swap_mach_header(&header, NXHostByteOrder());
+
+  // Copy the data into the mach_header_64 structure.  Since the 32-bit and
+  // 64-bit only differ in the last field (reserved), this is safe to do.
+  struct mach_header_64 header64;
+  memcpy((void *)&header64, (const void *)&header, sizeof(header));
+  header64.reserved = 0;
+
+  current_header_ = &header64;
+  current_header_size_ = sizeof(header); // 32-bit, not 64-bit
+  current_header_offset_ = offset;
+  offset += current_header_size_;
+  bool result = WalkHeaderCore(offset, header.ncmds, swap);
+  current_header_ = NULL;
+  current_header_size_ = 0;
+  current_header_offset_ = 0;
+  return result;
+}
+
+bool MachoWalker::WalkHeader64AtOffset(off_t offset) {
+  struct mach_header_64 header;
+  if (!ReadBytes(&header, sizeof(header), offset))
+    return false;
+
+  bool swap = (header.magic == MH_CIGAM_64);
+  if (swap)
+    breakpad_swap_mach_header_64(&header, NXHostByteOrder());
+
+  current_header_ = &header;
+  current_header_size_ = sizeof(header);
+  current_header_offset_ = offset;
+  offset += current_header_size_;
+  bool result = WalkHeaderCore(offset, header.ncmds, swap);
+  current_header_ = NULL;
+  current_header_size_ = 0;
+  current_header_offset_ = 0;
+  return result;
+}
+
+bool MachoWalker::WalkHeaderCore(off_t offset, uint32_t number_of_commands,
+                                 bool swap) {
+  for (uint32_t i = 0; i < number_of_commands; ++i) {
+    struct load_command cmd;
+    if (!ReadBytes(&cmd, sizeof(cmd), offset))
+      return false;
+
+    if (swap)
+      swap_load_command(&cmd, NXHostByteOrder());
+
+    // Call the user callback
+    if (callback_ && !callback_(this, &cmd, offset, swap, callback_context_))
+      break;
+
+    offset += cmd.cmdsize;
+  }
+
+  return true;
+}
+
+}  // namespace MacFileUtilities
diff --git a/google-breakpad/src/common/mac/macho_walker.h b/google-breakpad/src/common/mac/macho_walker.h
new file mode 100644
index 0000000..dd53581
--- /dev/null
+++ b/google-breakpad/src/common/mac/macho_walker.h
@@ -0,0 +1,119 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// macho_walker.h: Iterate over the load commands in a mach-o file
+//
+// Author: Dan Waylonis
+
+#ifndef COMMON_MAC_MACHO_WALKER_H__
+#define COMMON_MAC_MACHO_WALKER_H__
+
+#include <mach/machine.h>
+#include <mach-o/loader.h>
+#include <sys/types.h>
+
+namespace MacFileUtilities {
+
+class MachoWalker {
+ public:
+  // A callback function executed when a new load command is read.  If no
+  // further processing of load commands is desired, return false.  Otherwise,
+  // return true.
+  // |cmd| is the current command, and |offset| is the location relative to the
+  // beginning of the file (not header) where the command was read.  If |swap|
+  // is set, then any command data (other than the returned load_command) should
+  // be swapped when read
+  typedef bool (*LoadCommandCallback)(MachoWalker *walker, load_command *cmd,
+                                      off_t offset, bool swap, void *context);
+
+  MachoWalker(const char *path, LoadCommandCallback callback, void *context);
+  MachoWalker(void *memory, size_t size, LoadCommandCallback callback,
+              void *context);
+  ~MachoWalker();
+
+  // Begin walking the header for |cpu_type| and |cpu_subtype|.  If |cpu_type|
+  // is 0, then the native cpu type is used. Otherwise, accepted values are
+  // listed in /usr/include/mach/machine.h (e.g., CPU_TYPE_X86 or
+  // CPU_TYPE_POWERPC). If |cpu_subtype| is CPU_SUBTYPE_MULTIPLE, the match is
+  // only done on |cpu_type|.
+  // Returns false if opening the file failed or if the |cpu_type|/|cpu_subtype|
+  // is not present in the file.
+  bool WalkHeader(cpu_type_t cpu_type, cpu_subtype_t cpu_subtype);
+
+  // Read |size| bytes from the opened file at |offset| into |buffer|
+  bool ReadBytes(void *buffer, size_t size, off_t offset);
+
+  // Return the current header and header offset
+  bool CurrentHeader(struct mach_header_64 *header, off_t *offset);
+
+ private:
+  // Locate (if any) the header offset for |cpu_type| and return in |offset|.
+  // Return true if found, false otherwise.
+  bool FindHeader(cpu_type_t cpu_type,
+                  cpu_subtype_t cpu_subtype,
+                  off_t &offset);
+
+  // Process an individual header starting at |offset| from the start of the
+  // file.  Return true if successful, false otherwise.
+  bool WalkHeaderAtOffset(off_t offset);
+  bool WalkHeader64AtOffset(off_t offset);
+
+  // Bottleneck for walking the load commands
+  bool WalkHeaderCore(off_t offset, uint32_t number_of_commands, bool swap);
+
+  // File descriptor to the opened file
+  int file_;
+
+  // Memory location to read from.
+  void *memory_;
+
+  // Size of the memory segment we can read from.
+  size_t memory_size_;
+
+  // User specified callback & context
+  LoadCommandCallback callback_;
+  void *callback_context_;
+
+  // Current header, size, and offset.  The mach_header_64 is used for both
+  // 32-bit and 64-bit headers because they only differ in their last field
+  // (reserved).  By adding the |current_header_size_| and the
+  // |current_header_offset_|, you can determine the offset in the file just
+  // after the header.
+  struct mach_header_64 *current_header_;
+  unsigned long current_header_size_;
+  off_t current_header_offset_;
+
+ private:
+  MachoWalker(const MachoWalker &);
+  MachoWalker &operator=(const MachoWalker &);
+};
+
+}  // namespace MacFileUtilities
+
+#endif  // COMMON_MAC_MACHO_WALKER_H__
diff --git a/google-breakpad/src/common/mac/scoped_task_suspend-inl.h b/google-breakpad/src/common/mac/scoped_task_suspend-inl.h
new file mode 100644
index 0000000..d6d1bef
--- /dev/null
+++ b/google-breakpad/src/common/mac/scoped_task_suspend-inl.h
@@ -0,0 +1,56 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Inline implementation of ScopedTaskSuspend, which suspends a Mach
+// task for the duration of its scope.
+
+#ifndef GOOGLE_BREAKPAD_COMMON_MAC_SCOPED_TASK_SUSPEND_H_
+#define GOOGLE_BREAKPAD_COMMON_MAC_SCOPED_TASK_SUSPEND_H_
+
+#include <mach/mach.h>
+
+namespace google_breakpad {
+
+class ScopedTaskSuspend {
+ public:
+  explicit ScopedTaskSuspend(mach_port_t target) : target_(target) {
+    task_suspend(target_);
+  }
+
+  ~ScopedTaskSuspend() {
+    task_resume(target_);
+  }
+
+ private:
+  mach_port_t target_;
+};
+
+}  // namespace google_breakpad
+
+#endif  // GOOGLE_BREAKPAD_COMMON_MAC_SCOPED_TASK_SUSPEND_H_
diff --git a/google-breakpad/src/common/mac/string_utilities.cc b/google-breakpad/src/common/mac/string_utilities.cc
new file mode 100644
index 0000000..07c0f42
--- /dev/null
+++ b/google-breakpad/src/common/mac/string_utilities.cc
@@ -0,0 +1,84 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include "common/scoped_ptr.h"
+#include "common/mac/string_utilities.h"
+
+namespace MacStringUtils {
+
+using google_breakpad::scoped_array;
+
+std::string ConvertToString(CFStringRef str) {
+  CFIndex length = CFStringGetLength(str);
+  std::string result;
+
+  if (!length)
+    return result;
+
+  CFIndex maxUTF8Length =
+    CFStringGetMaximumSizeForEncoding(length, kCFStringEncodingUTF8);
+  scoped_array<UInt8> buffer(new UInt8[maxUTF8Length + 1]);
+  CFIndex actualUTF8Length;
+  CFStringGetBytes(str, CFRangeMake(0, length), kCFStringEncodingUTF8, 0,
+                   false, buffer.get(), maxUTF8Length, &actualUTF8Length);
+  buffer[actualUTF8Length] = 0;
+  result.assign((const char *)buffer.get());
+
+  return result;
+}
+
+unsigned int IntegerValueAtIndex(string &str, unsigned int idx) {
+  string digits("0123456789"), temp;
+  size_t start = 0;
+  size_t end;
+  size_t found = 0;
+  unsigned int result = 0;
+
+  for (; found <= idx; ++found) {
+    end = str.find_first_not_of(digits, start);
+
+    if (end == string::npos)
+      end = str.size();
+
+    temp = str.substr(start, end - start);
+
+    if (found == idx) {
+      result = atoi(temp.c_str());
+    }
+
+    start = str.find_first_of(digits, end + 1);
+
+    if (start == string::npos)
+      break;
+  }
+
+  return result;
+}
+
+}  // namespace MacStringUtils
diff --git a/google-breakpad/src/common/mac/string_utilities.h b/google-breakpad/src/common/mac/string_utilities.h
new file mode 100644
index 0000000..6d89c83
--- /dev/null
+++ b/google-breakpad/src/common/mac/string_utilities.h
@@ -0,0 +1,52 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// string_utilities.h: Utilities for strings for Mac platform
+
+#ifndef COMMON_MAC_STRING_UTILITIES_H__
+#define COMMON_MAC_STRING_UTILITIES_H__
+
+#include <CoreFoundation/CoreFoundation.h>
+
+#include <string>
+
+namespace MacStringUtils {
+
+using std::string;
+
+// Convert a CoreFoundation string into a std::string
+string ConvertToString(CFStringRef str);
+
+// Return the idx'th decimal integer in str, separated by non-decimal-digits
+// E.g., str = 10.4.8, idx = 1 -> 4
+unsigned int IntegerValueAtIndex(string &str, unsigned int idx);
+
+}  // namespace MacStringUtils
+
+#endif  // COMMON_MAC_STRING_UTILITIES_H__
diff --git a/google-breakpad/src/common/mac/testing/GTMSenTestCase.h b/google-breakpad/src/common/mac/testing/GTMSenTestCase.h
new file mode 100644
index 0000000..ce3d902
--- /dev/null
+++ b/google-breakpad/src/common/mac/testing/GTMSenTestCase.h
@@ -0,0 +1,1110 @@
+//
+//  GTMSenTestCase.h
+//
+//  Copyright 2007-2008 Google Inc.
+//
+//  Licensed under the Apache License, Version 2.0 (the "License"); you may not
+//  use this file except in compliance with the License.  You may obtain a copy
+//  of the License at
+//
+//  http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+//  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+//  License for the specific language governing permissions and limitations under
+//  the License.
+//
+
+// Portions of this file fall under the following license, marked with
+// SENTE_BEGIN - SENTE_END
+//
+// Copyright (c) 1997-2005, Sen:te (Sente SA).  All rights reserved.
+//
+// Use of this source code is governed by the following license:
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// (1) Redistributions of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// (2) Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+// IN NO EVENT SHALL Sente SA OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
+// OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Note: this license is equivalent to the FreeBSD license.
+//
+// This notice may not be removed from this file.
+
+// Some extra test case macros that would have been convenient for SenTestingKit
+// to provide. I didn't stick GTM in front of the Macro names, so that they would
+// be easy to remember.
+
+#import "GTMDefines.h"
+
+#if (!GTM_IPHONE_SDK) || (GTM_IPHONE_USE_SENTEST)
+#import <SenTestingKit/SenTestingKit.h>
+#else
+#import <Foundation/Foundation.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+  
+#if defined __clang__
+// gcc and gcc-llvm do not allow you to use STAssert(blah, nil) with nil
+// as a description if you have the NS_FORMAT_FUNCTION on.
+// clang however will not compile without warnings if you don't have it.
+NSString *STComposeString(NSString *, ...) NS_FORMAT_FUNCTION(1, 2);
+#else
+NSString *STComposeString(NSString *, ...);
+#endif  // __clang__
+  
+#ifdef __cplusplus
+}
+#endif
+
+#endif  // !GTM_IPHONE_SDK || GTM_IPHONE_USE_SENTEST
+
+// Generates a failure when a1 != noErr
+//  Args:
+//    a1: should be either an OSErr or an OSStatus
+//    description: A format string as in the printf() function. Can be nil or
+//                 an empty string but must be present.
+//    ...: A variable number of arguments to the format string. Can be absent.
+#define STAssertNoErr(a1, description, ...) \
+do { \
+  @try { \
+    OSStatus a1value = (a1); \
+    if (a1value != noErr) { \
+      NSString *_expression = [NSString stringWithFormat:@"Expected noErr, got %ld for (%s)", (long)a1value, #a1]; \
+      [self failWithException:([NSException failureInCondition:_expression \
+                       isTrue:NO \
+                       inFile:[NSString stringWithUTF8String:__FILE__] \
+                       atLine:__LINE__ \
+              withDescription:@"%@", STComposeString(description, ##__VA_ARGS__)])]; \
+    } \
+  } \
+  @catch (id anException) { \
+    [self failWithException:[NSException failureInRaise:[NSString stringWithFormat:@"(%s) == noErr fails", #a1] \
+                                              exception:anException \
+                                                 inFile:[NSString stringWithUTF8String:__FILE__] \
+                                                 atLine:__LINE__ \
+                                        withDescription:@"%@", STComposeString(description, ##__VA_ARGS__)]]; \
+  } \
+} while(0)
+
+// Generates a failure when a1 != a2
+//  Args:
+//    a1: received value. Should be either an OSErr or an OSStatus
+//    a2: expected value. Should be either an OSErr or an OSStatus
+//    description: A format string as in the printf() function. Can be nil or
+//                 an empty string but must be present.
+//    ...: A variable number of arguments to the format string. Can be absent.
+#define STAssertErr(a1, a2, description, ...) \
+do { \
+  @try { \
+    OSStatus a1value = (a1); \
+    OSStatus a2value = (a2); \
+    if (a1value != a2value) { \
+      NSString *_expression = [NSString stringWithFormat:@"Expected %s(%ld) but got %ld for (%s)", #a2, (long)a2value, (long)a1value, #a1]; \
+      [self failWithException:([NSException failureInCondition:_expression \
+                       isTrue:NO \
+                       inFile:[NSString stringWithUTF8String:__FILE__] \
+                       atLine:__LINE__ \
+              withDescription:@"%@", STComposeString(description, ##__VA_ARGS__)])]; \
+    } \
+  } \
+  @catch (id anException) { \
+    [self failWithException:[NSException failureInRaise:[NSString stringWithFormat:@"(%s) == (%s) fails", #a1, #a2] \
+                                              exception:anException \
+                                                 inFile:[NSString stringWithUTF8String:__FILE__] \
+                                                 atLine:__LINE__ \
+                                        withDescription:@"%@", STComposeString(description, ##__VA_ARGS__)]]; \
+  } \
+} while(0)
+
+
+// Generates a failure when a1 is NULL
+//  Args:
+//    a1: should be a pointer (use STAssertNotNil for an object)
+//    description: A format string as in the printf() function. Can be nil or
+//                 an empty string but must be present.
+//    ...: A variable number of arguments to the format string. Can be absent.
+#define STAssertNotNULL(a1, description, ...) \
+do { \
+  @try { \
+    __typeof__(a1) a1value = (a1); \
+    if (a1value == (__typeof__(a1))NULL) { \
+      NSString *_expression = [NSString stringWithFormat:@"((%s) != NULL)", #a1]; \
+      [self failWithException:([NSException failureInCondition:_expression \
+                       isTrue:NO \
+                       inFile:[NSString stringWithUTF8String:__FILE__] \
+                       atLine:__LINE__ \
+              withDescription:@"%@", STComposeString(description, ##__VA_ARGS__)])]; \
+    } \
+  } \
+  @catch (id anException) { \
+    [self failWithException:[NSException failureInRaise:[NSString stringWithFormat:@"(%s) != NULL fails", #a1] \
+                                              exception:anException \
+                                                 inFile:[NSString stringWithUTF8String:__FILE__] \
+                                                 atLine:__LINE__ \
+                                        withDescription:@"%@", STComposeString(description, ##__VA_ARGS__)]]; \
+  } \
+} while(0)
+
+// Generates a failure when a1 is not NULL
+//  Args:
+//    a1: should be a pointer (use STAssertNil for an object)
+//    description: A format string as in the printf() function. Can be nil or
+//                 an empty string but must be present.
+//    ...: A variable number of arguments to the format string. Can be absent.
+#define STAssertNULL(a1, description, ...) \
+do { \
+  @try { \
+    __typeof__(a1) a1value = (a1); \
+    if (a1value != (__typeof__(a1))NULL) { \
+      NSString *_expression = [NSString stringWithFormat:@"((%s) == NULL)", #a1]; \
+      [self failWithException:([NSException failureInCondition:_expression \
+                                                        isTrue:NO \
+                                                        inFile:[NSString stringWithUTF8String:__FILE__] \
+                                                        atLine:__LINE__ \
+                                               withDescription:@"%@", STComposeString(description, ##__VA_ARGS__)])]; \
+    } \
+  } \
+  @catch (id anException) { \
+    [self failWithException:[NSException failureInRaise:[NSString stringWithFormat:@"(%s) == NULL fails", #a1] \
+                                              exception:anException \
+                                                 inFile:[NSString stringWithUTF8String:__FILE__] \
+                                                 atLine:__LINE__ \
+                                        withDescription:@"%@", STComposeString(description, ##__VA_ARGS__)]]; \
+  } \
+} while(0)
+
+// Generates a failure when a1 is equal to a2. This test is for C scalars,
+// structs and unions.
+//  Args:
+//    a1: argument 1
+//    a2: argument 2
+//    description: A format string as in the printf() function. Can be nil or
+//                 an empty string but must be present.
+//    ...: A variable number of arguments to the format string. Can be absent.
+#define STAssertNotEquals(a1, a2, description, ...) \
+do { \
+  @try { \
+    if (strcmp(@encode(__typeof__(a1)), @encode(__typeof__(a2)))) { \
+      [self failWithException:[NSException failureInFile:[NSString stringWithUTF8String:__FILE__] \
+                                                  atLine:__LINE__ \
+                                         withDescription:@"Type mismatch -- %@", STComposeString(description, ##__VA_ARGS__)]]; \
+    } else { \
+      __typeof__(a1) a1value = (a1); \
+      __typeof__(a2) a2value = (a2); \
+      NSValue *a1encoded = [NSValue value:&a1value withObjCType:@encode(__typeof__(a1))]; \
+      NSValue *a2encoded = [NSValue value:&a2value withObjCType:@encode(__typeof__(a2))]; \
+      if ([a1encoded isEqualToValue:a2encoded]) { \
+        NSString *_expression = [NSString stringWithFormat:@"((%s) != (%s))", #a1, #a2]; \
+        [self failWithException:([NSException failureInCondition:_expression \
+                         isTrue:NO \
+                         inFile:[NSString stringWithUTF8String:__FILE__] \
+                         atLine:__LINE__ \
+                withDescription:@"%@", STComposeString(description, ##__VA_ARGS__)])]; \
+      }\
+    } \
+  } \
+  @catch (id anException) { \
+    [self failWithException:[NSException failureInRaise:[NSString stringWithFormat:@"(%s) != (%s)", #a1, #a2] \
+                                              exception:anException \
+                                                 inFile:[NSString stringWithUTF8String:__FILE__] \
+                                                 atLine:__LINE__ \
+            withDescription:@"%@", STComposeString(description, ##__VA_ARGS__)]]; \
+  } \
+} while(0)
+
+// Generates a failure when a1 is equal to a2. This test is for objects.
+//  Args:
+//    a1: argument 1. object.
+//    a2: argument 2. object.
+//    description: A format string as in the printf() function. Can be nil or
+//                 an empty string but must be present.
+//    ...: A variable number of arguments to the format string. Can be absent.
+#define STAssertNotEqualObjects(a1, a2, description, ...) \
+do { \
+  @try {\
+    id a1value = (a1); \
+    id a2value = (a2); \
+    if ( (strcmp(@encode(__typeof__(a1value)), @encode(id)) == 0) && \
+         (strcmp(@encode(__typeof__(a2value)), @encode(id)) == 0) && \
+         (![(id)a1value isEqual:(id)a2value]) ) continue; \
+    [self failWithException:([NSException failureInEqualityBetweenObject:a1value \
+                  andObject:a2value \
+                     inFile:[NSString stringWithUTF8String:__FILE__] \
+                     atLine:__LINE__ \
+            withDescription:@"%@", STComposeString(description, ##__VA_ARGS__)])]; \
+  }\
+  @catch (id anException) {\
+    [self failWithException:([NSException failureInRaise:[NSString stringWithFormat:@"(%s) != (%s)", #a1, #a2] \
+                                               exception:anException \
+                                                  inFile:[NSString stringWithUTF8String:__FILE__] \
+                                                  atLine:__LINE__ \
+                                         withDescription:@"%@", STComposeString(description, ##__VA_ARGS__)])]; \
+  }\
+} while(0)
+
+// Generates a failure when a1 is not 'op' to a2. This test is for C scalars.
+//  Args:
+//    a1: argument 1
+//    a2: argument 2
+//    op: operation
+//    description: A format string as in the printf() function. Can be nil or
+//                 an empty string but must be present.
+//    ...: A variable number of arguments to the format string. Can be absent.
+#define STAssertOperation(a1, a2, op, description, ...) \
+do { \
+  @try { \
+    if (strcmp(@encode(__typeof__(a1)), @encode(__typeof__(a2)))) { \
+      [self failWithException:[NSException failureInFile:[NSString stringWithUTF8String:__FILE__] \
+                                                  atLine:__LINE__ \
+                                         withDescription:@"Type mismatch -- %@", STComposeString(description, ##__VA_ARGS__)]]; \
+    } else { \
+      __typeof__(a1) a1value = (a1); \
+      __typeof__(a2) a2value = (a2); \
+      if (!(a1value op a2value)) { \
+        double a1DoubleValue = a1value; \
+        double a2DoubleValue = a2value; \
+        NSString *_expression = [NSString stringWithFormat:@"(%s (%lg) %s %s (%lg))", #a1, a1DoubleValue, #op, #a2, a2DoubleValue]; \
+        [self failWithException:([NSException failureInCondition:_expression \
+                         isTrue:NO \
+                         inFile:[NSString stringWithUTF8String:__FILE__] \
+                         atLine:__LINE__ \
+                withDescription:@"%@", STComposeString(description, ##__VA_ARGS__)])]; \
+      } \
+    } \
+  } \
+  @catch (id anException) { \
+    [self failWithException:[NSException \
+             failureInRaise:[NSString stringWithFormat:@"(%s) %s (%s)", #a1, #op, #a2] \
+                  exception:anException \
+                     inFile:[NSString stringWithUTF8String:__FILE__] \
+                     atLine:__LINE__ \
+            withDescription:@"%@", STComposeString(description, ##__VA_ARGS__)]]; \
+  } \
+} while(0)
+
+// Generates a failure when a1 is not > a2. This test is for C scalars.
+//  Args:
+//    a1: argument 1
+//    a2: argument 2
+//    op: operation
+//    description: A format string as in the printf() function. Can be nil or
+//                 an empty string but must be present.
+//    ...: A variable number of arguments to the format string. Can be absent.
+#define STAssertGreaterThan(a1, a2, description, ...) \
+  STAssertOperation(a1, a2, >, description, ##__VA_ARGS__)
+
+// Generates a failure when a1 is not >= a2. This test is for C scalars.
+//  Args:
+//    a1: argument 1
+//    a2: argument 2
+//    op: operation
+//    description: A format string as in the printf() function. Can be nil or
+//                 an empty string but must be present.
+//    ...: A variable number of arguments to the format string. Can be absent.
+#define STAssertGreaterThanOrEqual(a1, a2, description, ...) \
+  STAssertOperation(a1, a2, >=, description, ##__VA_ARGS__)
+
+// Generates a failure when a1 is not < a2. This test is for C scalars.
+//  Args:
+//    a1: argument 1
+//    a2: argument 2
+//    op: operation
+//    description: A format string as in the printf() function. Can be nil or
+//                 an empty string but must be present.
+//    ...: A variable number of arguments to the format string. Can be absent.
+#define STAssertLessThan(a1, a2, description, ...) \
+  STAssertOperation(a1, a2, <, description, ##__VA_ARGS__)
+
+// Generates a failure when a1 is not <= a2. This test is for C scalars.
+//  Args:
+//    a1: argument 1
+//    a2: argument 2
+//    op: operation
+//    description: A format string as in the printf() function. Can be nil or
+//                 an empty string but must be present.
+//    ...: A variable number of arguments to the format string. Can be absent.
+#define STAssertLessThanOrEqual(a1, a2, description, ...) \
+  STAssertOperation(a1, a2, <=, description, ##__VA_ARGS__)
+
+// Generates a failure when string a1 is not equal to string a2. This call
+// differs from STAssertEqualObjects in that strings that are different in
+// composition (precomposed vs decomposed) will compare equal if their final
+// representation is equal.
+// ex O + umlaut decomposed is the same as O + umlaut composed.
+//  Args:
+//    a1: string 1
+//    a2: string 2
+//    description: A format string as in the printf() function. Can be nil or
+//                 an empty string but must be present.
+//    ...: A variable number of arguments to the format string. Can be absent.
+#define STAssertEqualStrings(a1, a2, description, ...) \
+do { \
+  @try { \
+    id a1value = (a1); \
+    id a2value = (a2); \
+    if (a1value == a2value) continue; \
+    if ([a1value isKindOfClass:[NSString class]] && \
+        [a2value isKindOfClass:[NSString class]] && \
+        [a1value compare:a2value options:0] == NSOrderedSame) continue; \
+     [self failWithException:[NSException failureInEqualityBetweenObject:a1value \
+                                                               andObject:a2value \
+                                                                  inFile:[NSString stringWithUTF8String:__FILE__] \
+                                                                  atLine:__LINE__ \
+                                                         withDescription:@"%@", STComposeString(description, ##__VA_ARGS__)]]; \
+  } \
+  @catch (id anException) { \
+    [self failWithException:[NSException failureInRaise:[NSString stringWithFormat:@"(%s) == (%s)", #a1, #a2] \
+                                              exception:anException \
+                                                 inFile:[NSString stringWithUTF8String:__FILE__] \
+                                                 atLine:__LINE__ \
+                                        withDescription:@"%@", STComposeString(description, ##__VA_ARGS__)]]; \
+  } \
+} while(0)
+
+// Generates a failure when string a1 is equal to string a2. This call
+// differs from STAssertEqualObjects in that strings that are different in
+// composition (precomposed vs decomposed) will compare equal if their final
+// representation is equal.
+// ex O + umlaut decomposed is the same as O + umlaut composed.
+//  Args:
+//    a1: string 1
+//    a2: string 2
+//    description: A format string as in the printf() function. Can be nil or
+//                 an empty string but must be present.
+//    ...: A variable number of arguments to the format string. Can be absent.
+#define STAssertNotEqualStrings(a1, a2, description, ...) \
+do { \
+  @try { \
+    id a1value = (a1); \
+    id a2value = (a2); \
+    if ([a1value isKindOfClass:[NSString class]] && \
+        [a2value isKindOfClass:[NSString class]] && \
+        [a1value compare:a2value options:0] != NSOrderedSame) continue; \
+     [self failWithException:[NSException failureInEqualityBetweenObject:a1value \
+                                                               andObject:a2value \
+                                                                  inFile:[NSString stringWithUTF8String:__FILE__] \
+                                                                  atLine:__LINE__ \
+                                                         withDescription:@"%@", STComposeString(description, ##__VA_ARGS__)]]; \
+  } \
+  @catch (id anException) { \
+    [self failWithException:[NSException failureInRaise:[NSString stringWithFormat:@"(%s) != (%s)", #a1, #a2] \
+                                              exception:anException \
+                                                 inFile:[NSString stringWithUTF8String:__FILE__] \
+                                                 atLine:__LINE__ \
+                                        withDescription:@"%@", STComposeString(description, ##__VA_ARGS__)]]; \
+  } \
+} while(0)
+
+// Generates a failure when c-string a1 is not equal to c-string a2.
+//  Args:
+//    a1: string 1
+//    a2: string 2
+//    description: A format string as in the printf() function. Can be nil or
+//                 an empty string but must be present.
+//    ...: A variable number of arguments to the format string. Can be absent.
+#define STAssertEqualCStrings(a1, a2, description, ...) \
+do { \
+  @try { \
+    const char* a1value = (a1); \
+    const char* a2value = (a2); \
+    if (a1value == a2value) continue; \
+    if (strcmp(a1value, a2value) == 0) continue; \
+    [self failWithException:[NSException failureInEqualityBetweenObject:[NSString stringWithUTF8String:a1value] \
+                                                              andObject:[NSString stringWithUTF8String:a2value] \
+                                                                 inFile:[NSString stringWithUTF8String:__FILE__] \
+                                                                 atLine:__LINE__ \
+                                                        withDescription:@"%@", STComposeString(description, ##__VA_ARGS__)]]; \
+  } \
+  @catch (id anException) { \
+    [self failWithException:[NSException failureInRaise:[NSString stringWithFormat:@"(%s) == (%s)", #a1, #a2] \
+                                              exception:anException \
+                                                 inFile:[NSString stringWithUTF8String:__FILE__] \
+                                                 atLine:__LINE__ \
+                                        withDescription:@"%@", STComposeString(description, ##__VA_ARGS__)]]; \
+  } \
+} while(0)
+
+// Generates a failure when c-string a1 is equal to c-string a2.
+//  Args:
+//    a1: string 1
+//    a2: string 2
+//    description: A format string as in the printf() function. Can be nil or
+//                 an empty string but must be present.
+//    ...: A variable number of arguments to the format string. Can be absent.
+#define STAssertNotEqualCStrings(a1, a2, description, ...) \
+do { \
+  @try { \
+    const char* a1value = (a1); \
+    const char* a2value = (a2); \
+    if (strcmp(a1value, a2value) != 0) continue; \
+    [self failWithException:[NSException failureInEqualityBetweenObject:[NSString stringWithUTF8String:a1value] \
+                                                              andObject:[NSString stringWithUTF8String:a2value] \
+                                                                 inFile:[NSString stringWithUTF8String:__FILE__] \
+                                                                 atLine:__LINE__ \
+                                                        withDescription:@"%@", STComposeString(description, ##__VA_ARGS__)]]; \
+  } \
+  @catch (id anException) { \
+    [self failWithException:[NSException failureInRaise:[NSString stringWithFormat:@"(%s) != (%s)", #a1, #a2] \
+                                              exception:anException \
+                                                 inFile:[NSString stringWithUTF8String:__FILE__] \
+                                                 atLine:__LINE__ \
+                                        withDescription:@"%@", STComposeString(description, ##__VA_ARGS__)]]; \
+  } \
+} while(0)
+
+/*" Generates a failure when a1 is not equal to a2 within + or - accuracy is false.
+  This test is for GLKit types (GLKVector, GLKMatrix) where small differences
+  could  make these items not exactly equal. Do not use this version directly.
+  Use the explicit STAssertEqualGLKVectors and STAssertEqualGLKMatrices defined
+  below.
+  _{a1    The GLKType on the left.}
+  _{a2    The GLKType on the right.}
+  _{accuracy  The maximum difference between a1 and a2 for these values to be
+  considered equal.}
+  _{description A format string as in the printf() function. Can be nil or
+                      an empty string but must be present.}
+  _{... A variable number of arguments to the format string. Can be absent.}
+"*/
+
+#define STInternalAssertEqualGLKVectorsOrMatrices(a1, a2, accuracy, description, ...) \
+do { \
+  @try { \
+    if (strcmp(@encode(__typeof__(a1)), @encode(__typeof__(a2)))) { \
+      [self failWithException:[NSException failureInFile:[NSString stringWithUTF8String:__FILE__] \
+                                                                                 atLine:__LINE__ \
+                                                                        withDescription:@"Type mismatch -- %@", STComposeString(description, ##__VA_ARGS__)]]; \
+    } else { \
+      __typeof__(a1) a1GLKValue = (a1); \
+      __typeof__(a2) a2GLKValue = (a2); \
+      __typeof__(accuracy) accuracyvalue = (accuracy); \
+      float *a1FloatValue = ((float*)&a1GLKValue); \
+      float *a2FloatValue = ((float*)&a2GLKValue); \
+      for (size_t i = 0; i < sizeof(__typeof__(a1)) / sizeof(float); ++i) { \
+        float a1value = a1FloatValue[i]; \
+        float a2value = a2FloatValue[i]; \
+        if (STAbsoluteDifference(a1value, a2value) > accuracyvalue) { \
+          NSMutableArray *strings = [NSMutableArray arrayWithCapacity:sizeof(a1) / sizeof(float)]; \
+          NSString *string; \
+          for (size_t j = 0; j < sizeof(__typeof__(a1)) / sizeof(float); ++j) { \
+            string = [NSString stringWithFormat:@"(%0.3f == %0.3f)", a1FloatValue[j], a2FloatValue[j]]; \
+            [strings addObject:string]; \
+          } \
+          string = [strings componentsJoinedByString:@", "]; \
+          NSString *desc = STComposeString(description, ##__VA_ARGS__); \
+          desc = [NSString stringWithFormat:@"%@ With Accuracy %0.3f: %@", string, (float)accuracyvalue, desc]; \
+          [self failWithException:[NSException failureInFile:[NSString stringWithUTF8String:__FILE__] \
+                                                      atLine:__LINE__ \
+                                             withDescription:@"%@", desc]]; \
+          break; \
+        } \
+      } \
+    } \
+  } \
+  @catch (id anException) { \
+    [self failWithException:[NSException failureInRaise:[NSString stringWithFormat:@"(%s) == (%s)", #a1, #a2] \
+                                              exception:anException \
+                                                 inFile:[NSString stringWithUTF8String:__FILE__] \
+                                                 atLine:__LINE__ \
+                                        withDescription:@"%@", STComposeString(description, ##__VA_ARGS__)]]; \
+  } \
+} while(0)
+
+#define STAssertEqualGLKVectors(a1, a2, accuracy, description, ...) \
+     STInternalAssertEqualGLKVectorsOrMatrices(a1, a2, accuracy, description, ##__VA_ARGS__)
+
+#define STAssertEqualGLKMatrices(a1, a2, accuracy, description, ...) \
+     STInternalAssertEqualGLKVectorsOrMatrices(a1, a2, accuracy, description, ##__VA_ARGS__)
+
+#define STAssertEqualGLKQuaternions(a1, a2, accuracy, description, ...) \
+     STInternalAssertEqualGLKVectorsOrMatrices(a1, a2, accuracy, description, ##__VA_ARGS__)
+
+#if GTM_IPHONE_SDK && !GTM_IPHONE_USE_SENTEST
+// When not using the Xcode provided version, define everything ourselves.
+
+// SENTE_BEGIN
+/*" Generates a failure when !{ [a1 isEqualTo:a2] } is false
+	(or one is nil and the other is not).
+	_{a1    The object on the left.}
+	_{a2    The object on the right.}
+	_{description A format string as in the printf() function. Can be nil or
+		an empty string but must be present.}
+	_{... A variable number of arguments to the format string. Can be absent.}
+"*/
+#define STAssertEqualObjects(a1, a2, description, ...) \
+do { \
+  @try { \
+    id a1value = (a1); \
+    id a2value = (a2); \
+    if (a1value == a2value) continue; \
+    if ((strcmp(@encode(__typeof__(a1value)), @encode(id)) == 0) && \
+        (strcmp(@encode(__typeof__(a2value)), @encode(id)) == 0) && \
+        [(id)a1value isEqual:(id)a2value]) continue; \
+    [self failWithException:[NSException failureInEqualityBetweenObject:a1value \
+                                                              andObject:a2value \
+                                                                 inFile:[NSString stringWithUTF8String:__FILE__] \
+                                                                 atLine:__LINE__ \
+                                                        withDescription:@"%@", STComposeString(description, ##__VA_ARGS__)]]; \
+  } \
+  @catch (id anException) { \
+    [self failWithException:[NSException failureInRaise:[NSString stringWithFormat:@"(%s) == (%s)", #a1, #a2] \
+                                              exception:anException \
+                                                 inFile:[NSString stringWithUTF8String:__FILE__] \
+                                                 atLine:__LINE__ \
+                                        withDescription:@"%@", STComposeString(description, ##__VA_ARGS__)]]; \
+  } \
+} while(0)
+
+
+/*" Generates a failure when a1 is not equal to a2. This test is for
+    C scalars, structs and unions.
+    _{a1    The argument on the left.}
+    _{a2    The argument on the right.}
+    _{description A format string as in the printf() function. Can be nil or
+                        an empty string but must be present.}
+    _{... A variable number of arguments to the format string. Can be absent.}
+"*/
+#define STAssertEquals(a1, a2, description, ...) \
+do { \
+  @try { \
+    if (strcmp(@encode(__typeof__(a1)), @encode(__typeof__(a2)))) { \
+      [self failWithException:[NSException failureInFile:[NSString stringWithUTF8String:__FILE__] \
+                                                                                 atLine:__LINE__ \
+                                                                        withDescription:@"Type mismatch -- %@", STComposeString(description, ##__VA_ARGS__)]]; \
+    } else { \
+      __typeof__(a1) a1value = (a1); \
+      __typeof__(a2) a2value = (a2); \
+      NSValue *a1encoded = [NSValue value:&a1value withObjCType:@encode(__typeof__(a1))]; \
+      NSValue *a2encoded = [NSValue value:&a2value withObjCType:@encode(__typeof__(a2))]; \
+      if (![a1encoded isEqualToValue:a2encoded]) { \
+        [self failWithException:[NSException failureInEqualityBetweenValue:a1encoded \
+                                                                  andValue:a2encoded \
+                                                              withAccuracy:nil \
+                                                                    inFile:[NSString stringWithUTF8String:__FILE__] \
+                                                                    atLine:__LINE__ \
+                                                           withDescription:@"%@", STComposeString(description, ##__VA_ARGS__)]]; \
+      } \
+    } \
+  } \
+  @catch (id anException) { \
+    [self failWithException:[NSException failureInRaise:[NSString stringWithFormat:@"(%s) == (%s)", #a1, #a2] \
+                                              exception:anException \
+                                                 inFile:[NSString stringWithUTF8String:__FILE__] \
+                                                 atLine:__LINE__ \
+                                        withDescription:@"%@", STComposeString(description, ##__VA_ARGS__)]]; \
+  } \
+} while(0)
+
+#define STAbsoluteDifference(left,right) (MAX(left,right)-MIN(left,right))
+
+
+/*" Generates a failure when a1 is not equal to a2 within + or - accuracy is false.
+  This test is for scalars such as floats and doubles where small differences
+  could make these items not exactly equal, but also works for all scalars.
+  _{a1    The scalar on the left.}
+  _{a2    The scalar on the right.}
+  _{accuracy  The maximum difference between a1 and a2 for these values to be
+  considered equal.}
+  _{description A format string as in the printf() function. Can be nil or
+                      an empty string but must be present.}
+  _{... A variable number of arguments to the format string. Can be absent.}
+"*/
+
+#define STAssertEqualsWithAccuracy(a1, a2, accuracy, description, ...) \
+do { \
+  @try { \
+    if (strcmp(@encode(__typeof__(a1)), @encode(__typeof__(a2)))) { \
+      [self failWithException:[NSException failureInFile:[NSString stringWithUTF8String:__FILE__] \
+                                                                                 atLine:__LINE__ \
+                                                                        withDescription:@"Type mismatch -- %@", STComposeString(description, ##__VA_ARGS__)]]; \
+    } else { \
+      __typeof__(a1) a1value = (a1); \
+      __typeof__(a2) a2value = (a2); \
+      __typeof__(accuracy) accuracyvalue = (accuracy); \
+      if (STAbsoluteDifference(a1value, a2value) > accuracyvalue) { \
+              NSValue *a1encoded = [NSValue value:&a1value withObjCType:@encode(__typeof__(a1))]; \
+              NSValue *a2encoded = [NSValue value:&a2value withObjCType:@encode(__typeof__(a2))]; \
+              NSValue *accuracyencoded = [NSValue value:&accuracyvalue withObjCType:@encode(__typeof__(accuracy))]; \
+              [self failWithException:[NSException failureInEqualityBetweenValue:a1encoded \
+                                                                        andValue:a2encoded \
+                                                                    withAccuracy:accuracyencoded \
+                                                                          inFile:[NSString stringWithUTF8String:__FILE__] \
+                                                                          atLine:__LINE__ \
+                                                                 withDescription:@"%@", STComposeString(description, ##__VA_ARGS__)]]; \
+      } \
+    } \
+  } \
+  @catch (id anException) { \
+    [self failWithException:[NSException failureInRaise:[NSString stringWithFormat:@"(%s) == (%s)", #a1, #a2] \
+                                                                         exception:anException \
+                                                                            inFile:[NSString stringWithUTF8String:__FILE__] \
+                                                                            atLine:__LINE__ \
+                                                                   withDescription:@"%@", STComposeString(description, ##__VA_ARGS__)]]; \
+  } \
+} while(0)
+
+
+
+/*" Generates a failure unconditionally.
+  _{description A format string as in the printf() function. Can be nil or
+                      an empty string but must be present.}
+  _{... A variable number of arguments to the format string. Can be absent.}
+"*/
+#define STFail(description, ...) \
+[self failWithException:[NSException failureInFile:[NSString stringWithUTF8String:__FILE__] \
+                                            atLine:__LINE__ \
+                                   withDescription:@"%@", STComposeString(description, ##__VA_ARGS__)]]
+
+
+
+/*" Generates a failure when a1 is not nil.
+  _{a1    An object.}
+  _{description A format string as in the printf() function. Can be nil or
+    an empty string but must be present.}
+  _{... A variable number of arguments to the format string. Can be absent.}
+"*/
+#define STAssertNil(a1, description, ...) \
+do { \
+  @try { \
+    id a1value = (a1); \
+    if (a1value != nil) { \
+      NSString *_a1 = [NSString stringWithUTF8String:#a1]; \
+      NSString *_expression = [NSString stringWithFormat:@"((%@) == nil)", _a1]; \
+      [self failWithException:[NSException failureInCondition:_expression \
+                                                       isTrue:NO \
+                                                       inFile:[NSString stringWithUTF8String:__FILE__] \
+                                                       atLine:__LINE__ \
+                                              withDescription:@"%@", STComposeString(description, ##__VA_ARGS__)]]; \
+    } \
+  } \
+  @catch (id anException) { \
+    [self failWithException:[NSException failureInRaise:[NSString stringWithFormat:@"(%s) == nil fails", #a1] \
+                                              exception:anException \
+                                                 inFile:[NSString stringWithUTF8String:__FILE__] \
+                                                 atLine:__LINE__ \
+                                        withDescription:@"%@", STComposeString(description, ##__VA_ARGS__)]]; \
+  } \
+} while(0)
+
+
+/*" Generates a failure when a1 is nil.
+  _{a1    An object.}
+  _{description A format string as in the printf() function. Can be nil or
+  an empty string but must be present.}
+  _{... A variable number of arguments to the format string. Can be absent.}
+"*/
+#define STAssertNotNil(a1, description, ...) \
+do { \
+  @try { \
+    id a1value = (a1); \
+    if (a1value == nil) { \
+      NSString *_a1 = [NSString stringWithUTF8String:#a1]; \
+      NSString *_expression = [NSString stringWithFormat:@"((%@) != nil)", _a1]; \
+      [self failWithException:[NSException failureInCondition:_expression \
+                                                       isTrue:NO \
+                                                       inFile:[NSString stringWithUTF8String:__FILE__] \
+                                                       atLine:__LINE__ \
+                                              withDescription:@"%@", STComposeString(description, ##__VA_ARGS__)]]; \
+    } \
+  } \
+  @catch (id anException) { \
+    [self failWithException:[NSException failureInRaise:[NSString stringWithFormat:@"(%s) != nil fails", #a1] \
+                                              exception:anException \
+                                                 inFile:[NSString stringWithUTF8String:__FILE__] \
+                                                 atLine:__LINE__ \
+                                        withDescription:@"%@", STComposeString(description, ##__VA_ARGS__)]]; \
+  } \
+} while(0)
+
+
+/*" Generates a failure when expression evaluates to false.
+  _{expr    The expression that is tested.}
+  _{description A format string as in the printf() function. Can be nil or
+  an empty string but must be present.}
+  _{... A variable number of arguments to the format string. Can be absent.}
+"*/
+#define STAssertTrue(expr, description, ...) \
+do { \
+  BOOL _evaluatedExpression = (expr); \
+  if (!_evaluatedExpression) { \
+    NSString *_expression = [NSString stringWithUTF8String:#expr]; \
+    [self failWithException:[NSException failureInCondition:_expression \
+                                                     isTrue:NO \
+                                                     inFile:[NSString stringWithUTF8String:__FILE__] \
+                                                     atLine:__LINE__ \
+                                            withDescription:@"%@", STComposeString(description, ##__VA_ARGS__)]]; \
+  } \
+} while (0)
+
+
+/*" Generates a failure when expression evaluates to false and in addition will
+  generate error messages if an exception is encountered.
+  _{expr    The expression that is tested.}
+  _{description A format string as in the printf() function. Can be nil or
+  an empty string but must be present.}
+  _{... A variable number of arguments to the format string. Can be absent.}
+"*/
+#define STAssertTrueNoThrow(expr, description, ...) \
+do { \
+  @try { \
+    BOOL _evaluatedExpression = (expr); \
+    if (!_evaluatedExpression) { \
+      NSString *_expression = [NSString stringWithUTF8String:#expr]; \
+      [self failWithException:[NSException failureInCondition:_expression \
+                                                       isTrue:NO \
+                                                       inFile:[NSString stringWithUTF8String:__FILE__] \
+                                                       atLine:__LINE__ \
+                                              withDescription:@"%@", STComposeString(description, ##__VA_ARGS__)]]; \
+    } \
+  } \
+  @catch (id anException) { \
+    [self failWithException:[NSException failureInRaise:[NSString stringWithFormat:@"(%s) ", #expr] \
+                                              exception:anException \
+                                                 inFile:[NSString stringWithUTF8String:__FILE__] \
+                                                 atLine:__LINE__ \
+                                        withDescription:@"%@", STComposeString(description, ##__VA_ARGS__)]]; \
+  } \
+} while (0)
+
+
+/*" Generates a failure when the expression evaluates to true.
+  _{expr    The expression that is tested.}
+  _{description A format string as in the printf() function. Can be nil or
+  an empty string but must be present.}
+  _{... A variable number of arguments to the format string. Can be absent.}
+"*/
+#define STAssertFalse(expr, description, ...) \
+do { \
+  BOOL _evaluatedExpression = (expr); \
+  if (_evaluatedExpression) { \
+    NSString *_expression = [NSString stringWithUTF8String:#expr]; \
+    [self failWithException:[NSException failureInCondition:_expression \
+                                                     isTrue:YES \
+                                                     inFile:[NSString stringWithUTF8String:__FILE__] \
+                                                     atLine:__LINE__ \
+                                            withDescription:@"%@", STComposeString(description, ##__VA_ARGS__)]]; \
+  } \
+} while (0)
+
+
+/*" Generates a failure when the expression evaluates to true and in addition
+  will generate error messages if an exception is encountered.
+  _{expr    The expression that is tested.}
+  _{description A format string as in the printf() function. Can be nil or
+  an empty string but must be present.}
+  _{... A variable number of arguments to the format string. Can be absent.}
+"*/
+#define STAssertFalseNoThrow(expr, description, ...) \
+do { \
+  @try { \
+    BOOL _evaluatedExpression = (expr); \
+    if (_evaluatedExpression) { \
+      NSString *_expression = [NSString stringWithUTF8String:#expr]; \
+      [self failWithException:[NSException failureInCondition:_expression \
+                                                       isTrue:YES \
+                                                       inFile:[NSString stringWithUTF8String:__FILE__] \
+                                                       atLine:__LINE__ \
+                                              withDescription:@"%@", STComposeString(description, ##__VA_ARGS__)]]; \
+    } \
+  } \
+  @catch (id anException) { \
+    [self failWithException:[NSException failureInRaise:[NSString stringWithFormat:@"!(%s) ", #expr] \
+                                              exception:anException \
+                                                 inFile:[NSString stringWithUTF8String:__FILE__] \
+                                                 atLine:__LINE__ \
+                                        withDescription:@"%@", STComposeString(description, ##__VA_ARGS__)]]; \
+  } \
+} while (0)
+
+
+/*" Generates a failure when expression does not throw an exception.
+  _{expression    The expression that is evaluated.}
+  _{description A format string as in the printf() function. Can be nil or
+  an empty string but must be present.}
+  _{... A variable number of arguments to the format string. Can be absent.
+"*/
+#define STAssertThrows(expr, description, ...) \
+do { \
+  @try { \
+    (expr); \
+  } \
+  @catch (id anException) { \
+    continue; \
+  } \
+  [self failWithException:[NSException failureInRaise:[NSString stringWithUTF8String:#expr] \
+                                            exception:nil \
+                                               inFile:[NSString stringWithUTF8String:__FILE__] \
+                                               atLine:__LINE__ \
+                                      withDescription:@"%@", STComposeString(description, ##__VA_ARGS__)]]; \
+} while (0)
+
+
+/*" Generates a failure when expression does not throw an exception of a
+  specific class.
+  _{expression    The expression that is evaluated.}
+  _{specificException    The specified class of the exception.}
+  _{description A format string as in the printf() function. Can be nil or
+  an empty string but must be present.}
+  _{... A variable number of arguments to the format string. Can be absent.}
+"*/
+#define STAssertThrowsSpecific(expr, specificException, description, ...) \
+do { \
+  @try { \
+    (expr); \
+  } \
+  @catch (specificException *anException) { \
+    continue; \
+  } \
+  @catch (id anException) { \
+    NSString *_descrip = STComposeString(@"(Expected exception: %@) %@", NSStringFromClass([specificException class]), description); \
+    [self failWithException:[NSException failureInRaise:[NSString stringWithUTF8String:#expr] \
+                                              exception:anException \
+                                                 inFile:[NSString stringWithUTF8String:__FILE__] \
+                                                 atLine:__LINE__ \
+                                        withDescription:@"%@", STComposeString(_descrip, ##__VA_ARGS__)]]; \
+                                            continue; \
+  } \
+  NSString *_descrip = STComposeString(@"(Expected exception: %@) %@", NSStringFromClass([specificException class]), description); \
+  [self failWithException:[NSException failureInRaise:[NSString stringWithUTF8String:#expr] \
+                                            exception:nil \
+                                               inFile:[NSString stringWithUTF8String:__FILE__] \
+                                               atLine:__LINE__ \
+                                      withDescription:@"%@", STComposeString(_descrip, ##__VA_ARGS__)]]; \
+} while (0)
+
+
+/*" Generates a failure when expression does not throw an exception of a
+  specific class with a specific name.  Useful for those frameworks like
+  AppKit or Foundation that throw generic NSException w/specific names
+  (NSInvalidArgumentException, etc).
+  _{expression    The expression that is evaluated.}
+  _{specificException    The specified class of the exception.}
+  _{aName    The name of the specified exception.}
+  _{description A format string as in the printf() function. Can be nil or
+  an empty string but must be present.}
+  _{... A variable number of arguments to the format string. Can be absent.}
+
+"*/
+#define STAssertThrowsSpecificNamed(expr, specificException, aName, description, ...) \
+do { \
+  @try { \
+    (expr); \
+  } \
+  @catch (specificException *anException) { \
+    if ([aName isEqualToString:[anException name]]) continue; \
+    NSString *_descrip = STComposeString(@"(Expected exception: %@ (name: %@)) %@", NSStringFromClass([specificException class]), aName, description); \
+    [self failWithException: \
+      [NSException failureInRaise:[NSString stringWithUTF8String:#expr] \
+                        exception:anException \
+                           inFile:[NSString stringWithUTF8String:__FILE__] \
+                           atLine:__LINE__ \
+                  withDescription:@"%@", STComposeString(_descrip, ##__VA_ARGS__)]]; \
+    continue; \
+  } \
+  @catch (id anException) { \
+    NSString *_descrip = STComposeString(@"(Expected exception: %@) %@", NSStringFromClass([specificException class]), description); \
+    [self failWithException: \
+      [NSException failureInRaise:[NSString stringWithUTF8String:#expr] \
+                        exception:anException \
+                           inFile:[NSString stringWithUTF8String:__FILE__] \
+                           atLine:__LINE__ \
+                  withDescription:@"%@", STComposeString(_descrip, ##__VA_ARGS__)]]; \
+    continue; \
+  } \
+  NSString *_descrip = STComposeString(@"(Expected exception: %@) %@", NSStringFromClass([specificException class]), description); \
+  [self failWithException: \
+    [NSException failureInRaise:[NSString stringWithUTF8String:#expr] \
+                      exception:nil \
+                         inFile:[NSString stringWithUTF8String:__FILE__] \
+                         atLine:__LINE__ \
+                withDescription:@"%@", STComposeString(_descrip, ##__VA_ARGS__)]]; \
+} while (0)
+
+
+/*" Generates a failure when expression does throw an exception.
+  _{expression    The expression that is evaluated.}
+  _{description A format string as in the printf() function. Can be nil or
+  an empty string but must be present.}
+  _{... A variable number of arguments to the format string. Can be absent.}
+"*/
+#define STAssertNoThrow(expr, description, ...) \
+do { \
+  @try { \
+    (expr); \
+  } \
+  @catch (id anException) { \
+    [self failWithException:[NSException failureInRaise:[NSString stringWithUTF8String:#expr] \
+                                              exception:anException \
+                                                 inFile:[NSString stringWithUTF8String:__FILE__] \
+                                                 atLine:__LINE__ \
+                                        withDescription:@"%@", STComposeString(description, ##__VA_ARGS__)]]; \
+  } \
+} while (0)
+
+
+/*" Generates a failure when expression does throw an exception of the specitied
+  class. Any other exception is okay (i.e. does not generate a failure).
+  _{expression    The expression that is evaluated.}
+  _{specificException    The specified class of the exception.}
+  _{description A format string as in the printf() function. Can be nil or
+  an empty string but must be present.}
+  _{... A variable number of arguments to the format string. Can be absent.}
+"*/
+#define STAssertNoThrowSpecific(expr, specificException, description, ...) \
+do { \
+  @try { \
+    (expr); \
+  } \
+  @catch (specificException *anException) { \
+    [self failWithException:[NSException failureInRaise:[NSString stringWithUTF8String:#expr] \
+                                              exception:anException \
+                                                 inFile:[NSString stringWithUTF8String:__FILE__] \
+                                                 atLine:__LINE__ \
+                                        withDescription:@"%@", STComposeString(description, ##__VA_ARGS__)]]; \
+  } \
+  @catch (id anythingElse) { \
+    ; \
+  } \
+} while (0)
+
+
+/*" Generates a failure when expression does throw an exception of a
+  specific class with a specific name.  Useful for those frameworks like
+  AppKit or Foundation that throw generic NSException w/specific names
+  (NSInvalidArgumentException, etc).
+  _{expression    The expression that is evaluated.}
+  _{specificException    The specified class of the exception.}
+  _{aName    The name of the specified exception.}
+  _{description A format string as in the printf() function. Can be nil or
+  an empty string but must be present.}
+  _{... A variable number of arguments to the format string. Can be absent.}
+
+"*/
+#define STAssertNoThrowSpecificNamed(expr, specificException, aName, description, ...) \
+do { \
+  @try { \
+    (expr); \
+  } \
+  @catch (specificException *anException) { \
+    if ([aName isEqualToString:[anException name]]) { \
+      NSString *_descrip = STComposeString(@"(Expected exception: %@ (name: %@)) %@", NSStringFromClass([specificException class]), aName, description); \
+      [self failWithException: \
+        [NSException failureInRaise:[NSString stringWithUTF8String:#expr] \
+                          exception:anException \
+                             inFile:[NSString stringWithUTF8String:__FILE__] \
+                             atLine:__LINE__ \
+                    withDescription:@"%@", STComposeString(_descrip, ##__VA_ARGS__)]]; \
+    } \
+    continue; \
+  } \
+  @catch (id anythingElse) { \
+    ; \
+  } \
+} while (0)
+
+
+
+@interface NSException (GTMSenTestAdditions)
++ (NSException *)failureInFile:(NSString *)filename
+                        atLine:(int)lineNumber
+               withDescription:(NSString *)formatString, ... NS_FORMAT_FUNCTION(3, 4);
++ (NSException *)failureInCondition:(NSString *)condition
+                             isTrue:(BOOL)isTrue
+                             inFile:(NSString *)filename
+                             atLine:(int)lineNumber
+                    withDescription:(NSString *)formatString, ... NS_FORMAT_FUNCTION(5, 6);
++ (NSException *)failureInEqualityBetweenObject:(id)left
+                                      andObject:(id)right
+                                         inFile:(NSString *)filename
+                                         atLine:(int)lineNumber
+                                withDescription:(NSString *)formatString, ... NS_FORMAT_FUNCTION(5, 6);
++ (NSException *)failureInEqualityBetweenValue:(NSValue *)left
+                                      andValue:(NSValue *)right
+                                  withAccuracy:(NSValue *)accuracy
+                                        inFile:(NSString *)filename
+                                        atLine:(int) ineNumber
+                               withDescription:(NSString *)formatString, ... NS_FORMAT_FUNCTION(6, 7);
++ (NSException *)failureInRaise:(NSString *)expression
+                         inFile:(NSString *)filename
+                         atLine:(int)lineNumber
+                withDescription:(NSString *)formatString, ... NS_FORMAT_FUNCTION(4, 5);
++ (NSException *)failureInRaise:(NSString *)expression
+                      exception:(NSException *)exception
+                         inFile:(NSString *)filename
+                         atLine:(int)lineNumber
+                withDescription:(NSString *)formatString, ... NS_FORMAT_FUNCTION(5, 6);
+@end
+
+// SENTE_END
+
+@protocol SenTestCase
++ (id)testCaseWithInvocation:(NSInvocation *)anInvocation;
+- (id)initWithInvocation:(NSInvocation *)anInvocation;
+- (void)setUp;
+- (void)invokeTest;
+- (void)tearDown;
+- (void)performTest;
+- (void)failWithException:(NSException*)exception;
+- (NSInvocation *)invocation;
+- (SEL)selector;
++ (NSArray *)testInvocations;
+@end
+
+@interface SenTestCase : NSObject<SenTestCase> {
+ @private
+  NSInvocation *invocation_;
+}
+@end
+
+GTM_EXTERN NSString *const SenTestFailureException;
+
+GTM_EXTERN NSString *const SenTestFilenameKey;
+GTM_EXTERN NSString *const SenTestLineNumberKey;
+
+#endif // GTM_IPHONE_SDK && !GTM_IPHONE_USE_SENTEST
+
+// All unittest cases in GTM should inherit from GTMTestCase. It makes sure
+// to set up our logging system correctly to verify logging calls.
+// See GTMUnitTestDevLog.h for details
+@interface GTMTestCase : SenTestCase
+
+// Returns YES if this is an abstract testCase class as opposed to a concrete
+// testCase class that you want tests run against. SenTestCase is not designed
+// out of the box to handle an abstract class hierarchy descending from it with
+// some concrete subclasses.  In some cases we want all the "concrete"
+// subclasses of an abstract subclass of SenTestCase to run a test, but we don't
+// want that test to be run against an instance of an abstract subclass itself.
+// By returning "YES" here, the tests defined by this class won't be run against
+// an instance of this class. As an example class hierarchy:
+//
+//                                            FooExtensionTestCase
+// GTMTestCase <- ExtensionAbstractTestCase <
+//                                            BarExtensionTestCase
+//
+// So FooExtensionTestCase and BarExtensionTestCase inherit from
+// ExtensionAbstractTestCase (and probably FooExtension and BarExtension inherit
+// from a class named Extension). We want the tests in ExtensionAbstractTestCase
+// to be run as part of FooExtensionTestCase and BarExtensionTestCase, but we
+// don't want them run against ExtensionAbstractTestCase. The default
+// implementation checks to see if the name of the class contains the word
+// "AbstractTest" (case sensitive).
++ (BOOL)isAbstractTestCase;
+
+@end
diff --git a/google-breakpad/src/common/mac/testing/GTMSenTestCase.m b/google-breakpad/src/common/mac/testing/GTMSenTestCase.m
new file mode 100644
index 0000000..5607c31
--- /dev/null
+++ b/google-breakpad/src/common/mac/testing/GTMSenTestCase.m
@@ -0,0 +1,500 @@
+//
+//  GTMSenTestCase.m
+//
+//  Copyright 2007-2008 Google Inc.
+//
+//  Licensed under the Apache License, Version 2.0 (the "License"); you may not
+//  use this file except in compliance with the License.  You may obtain a copy
+//  of the License at
+//
+//  http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+//  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+//  License for the specific language governing permissions and limitations under
+//  the License.
+//
+
+#import "GTMSenTestCase.h"
+
+#import <unistd.h>
+#if GTM_IPHONE_SIMULATOR
+#import <objc/message.h>
+#endif
+
+#import "GTMObjC2Runtime.h"
+#import "GTMUnitTestDevLog.h"
+
+#if !GTM_IPHONE_SDK
+#import "GTMGarbageCollection.h"
+#endif  // !GTM_IPHONE_SDK
+
+#if GTM_IPHONE_SDK && !GTM_IPHONE_USE_SENTEST
+#import <stdarg.h>
+
+@interface NSException (GTMSenTestPrivateAdditions)
++ (NSException *)failureInFile:(NSString *)filename
+                        atLine:(int)lineNumber
+                        reason:(NSString *)reason;
+@end
+
+@implementation NSException (GTMSenTestPrivateAdditions)
++ (NSException *)failureInFile:(NSString *)filename
+                        atLine:(int)lineNumber
+                        reason:(NSString *)reason {
+  NSDictionary *userInfo =
+    [NSDictionary dictionaryWithObjectsAndKeys:
+     [NSNumber numberWithInteger:lineNumber], SenTestLineNumberKey,
+     filename, SenTestFilenameKey,
+     nil];
+
+  return [self exceptionWithName:SenTestFailureException
+                          reason:reason
+                        userInfo:userInfo];
+}
+@end
+
+@implementation NSException (GTMSenTestAdditions)
+
++ (NSException *)failureInFile:(NSString *)filename
+                        atLine:(int)lineNumber
+               withDescription:(NSString *)formatString, ... {
+
+  NSString *testDescription = @"";
+  if (formatString) {
+    va_list vl;
+    va_start(vl, formatString);
+    testDescription =
+      [[[NSString alloc] initWithFormat:formatString arguments:vl] autorelease];
+    va_end(vl);
+  }
+
+  NSString *reason = testDescription;
+
+  return [self failureInFile:filename atLine:lineNumber reason:reason];
+}
+
++ (NSException *)failureInCondition:(NSString *)condition
+                             isTrue:(BOOL)isTrue
+                             inFile:(NSString *)filename
+                             atLine:(int)lineNumber
+                    withDescription:(NSString *)formatString, ... {
+
+  NSString *testDescription = @"";
+  if (formatString) {
+    va_list vl;
+    va_start(vl, formatString);
+    testDescription =
+      [[[NSString alloc] initWithFormat:formatString arguments:vl] autorelease];
+    va_end(vl);
+  }
+
+  NSString *reason = [NSString stringWithFormat:@"'%@' should be %s. %@",
+                      condition, isTrue ? "false" : "true", testDescription];
+
+  return [self failureInFile:filename atLine:lineNumber reason:reason];
+}
+
++ (NSException *)failureInEqualityBetweenObject:(id)left
+                                      andObject:(id)right
+                                         inFile:(NSString *)filename
+                                         atLine:(int)lineNumber
+                                withDescription:(NSString *)formatString, ... {
+
+  NSString *testDescription = @"";
+  if (formatString) {
+    va_list vl;
+    va_start(vl, formatString);
+    testDescription =
+      [[[NSString alloc] initWithFormat:formatString arguments:vl] autorelease];
+    va_end(vl);
+  }
+
+  NSString *reason =
+    [NSString stringWithFormat:@"'%@' should be equal to '%@'. %@",
+     [left description], [right description], testDescription];
+
+  return [self failureInFile:filename atLine:lineNumber reason:reason];
+}
+
++ (NSException *)failureInEqualityBetweenValue:(NSValue *)left
+                                      andValue:(NSValue *)right
+                                  withAccuracy:(NSValue *)accuracy
+                                        inFile:(NSString *)filename
+                                        atLine:(int)lineNumber
+                               withDescription:(NSString *)formatString, ... {
+
+  NSString *testDescription = @"";
+  if (formatString) {
+    va_list vl;
+    va_start(vl, formatString);
+    testDescription =
+      [[[NSString alloc] initWithFormat:formatString arguments:vl] autorelease];
+    va_end(vl);
+  }
+
+  NSString *reason;
+  if (accuracy) {
+    reason =
+      [NSString stringWithFormat:@"'%@' should be equal to '%@'. %@",
+       left, right, testDescription];
+  } else {
+    reason =
+      [NSString stringWithFormat:@"'%@' should be equal to '%@' +/-'%@'. %@",
+       left, right, accuracy, testDescription];
+  }
+
+  return [self failureInFile:filename atLine:lineNumber reason:reason];
+}
+
++ (NSException *)failureInRaise:(NSString *)expression
+                         inFile:(NSString *)filename
+                         atLine:(int)lineNumber
+                withDescription:(NSString *)formatString, ... {
+
+  NSString *testDescription = @"";
+  if (formatString) {
+    va_list vl;
+    va_start(vl, formatString);
+    testDescription =
+      [[[NSString alloc] initWithFormat:formatString arguments:vl] autorelease];
+    va_end(vl);
+  }
+
+  NSString *reason = [NSString stringWithFormat:@"'%@' should raise. %@",
+                      expression, testDescription];
+
+  return [self failureInFile:filename atLine:lineNumber reason:reason];
+}
+
++ (NSException *)failureInRaise:(NSString *)expression
+                      exception:(NSException *)exception
+                         inFile:(NSString *)filename
+                         atLine:(int)lineNumber
+                withDescription:(NSString *)formatString, ... {
+
+  NSString *testDescription = @"";
+  if (formatString) {
+    va_list vl;
+    va_start(vl, formatString);
+    testDescription =
+      [[[NSString alloc] initWithFormat:formatString arguments:vl] autorelease];
+    va_end(vl);
+  }
+
+  NSString *reason;
+  if ([[exception name] isEqualToString:SenTestFailureException]) {
+    // it's our exception, assume it has the right description on it.
+    reason = [exception reason];
+  } else {
+    // not one of our exception, use the exceptions reason and our description
+    reason = [NSString stringWithFormat:@"'%@' raised '%@'. %@",
+              expression, [exception reason], testDescription];
+  }
+
+  return [self failureInFile:filename atLine:lineNumber reason:reason];
+}
+
+@end
+
+NSString *STComposeString(NSString *formatString, ...) {
+  NSString *reason = @"";
+  if (formatString) {
+    va_list vl;
+    va_start(vl, formatString);
+    reason =
+      [[[NSString alloc] initWithFormat:formatString arguments:vl] autorelease];
+    va_end(vl);
+  }
+  return reason;
+}
+
+NSString *const SenTestFailureException = @"SenTestFailureException";
+NSString *const SenTestFilenameKey = @"SenTestFilenameKey";
+NSString *const SenTestLineNumberKey = @"SenTestLineNumberKey";
+
+@interface SenTestCase (SenTestCasePrivate)
+// our method of logging errors
++ (void)printException:(NSException *)exception fromTestName:(NSString *)name;
+@end
+
+@implementation SenTestCase
++ (id)testCaseWithInvocation:(NSInvocation *)anInvocation {
+  return [[[self alloc] initWithInvocation:anInvocation] autorelease];
+}
+
+- (id)initWithInvocation:(NSInvocation *)anInvocation {
+  if ((self = [super init])) {
+    invocation_ = [anInvocation retain];
+  }
+  return self;
+}
+
+- (void)dealloc {
+  [invocation_ release];
+  [super dealloc];
+}
+
+- (void)failWithException:(NSException*)exception {
+  [exception raise];
+}
+
+- (void)setUp {
+}
+
+- (void)performTest {
+  @try {
+    [self invokeTest];
+  } @catch (NSException *exception) {
+    [[self class] printException:exception
+                    fromTestName:NSStringFromSelector([self selector])];
+    [exception raise];
+  }
+}
+
+- (NSInvocation *)invocation {
+  return invocation_;
+}
+
+- (SEL)selector {
+  return [invocation_ selector];
+}
+
++ (void)printException:(NSException *)exception fromTestName:(NSString *)name {
+  NSDictionary *userInfo = [exception userInfo];
+  NSString *filename = [userInfo objectForKey:SenTestFilenameKey];
+  NSNumber *lineNumber = [userInfo objectForKey:SenTestLineNumberKey];
+  NSString *className = NSStringFromClass([self class]);
+  if ([filename length] == 0) {
+    filename = @"Unknown.m";
+  }
+  fprintf(stderr, "%s:%ld: error: -[%s %s] : %s\n",
+          [filename UTF8String],
+          (long)[lineNumber integerValue],
+          [className UTF8String],
+          [name UTF8String],
+          [[exception reason] UTF8String]);
+  fflush(stderr);
+}
+
+- (void)invokeTest {
+  NSException *e = nil;
+  @try {
+    // Wrap things in autorelease pools because they may
+    // have an STMacro in their dealloc which may get called
+    // when the pool is cleaned up
+    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
+    // We don't log exceptions here, instead we let the person that called
+    // this log the exception.  This ensures they are only logged once but the
+    // outer layers get the exceptions to report counts, etc.
+    @try {
+      [self setUp];
+      @try {
+        NSInvocation *invocation = [self invocation];
+#if GTM_IPHONE_SIMULATOR
+        // We don't call [invocation invokeWithTarget:self]; because of
+        // Radar 8081169: NSInvalidArgumentException can't be caught
+        // It turns out that on iOS4 (and 3.2) exceptions thrown inside an
+        // [invocation invoke] on the simulator cannot be caught.
+        // http://openradar.appspot.com/8081169
+        objc_msgSend(self, [invocation selector]);
+#else
+        [invocation invokeWithTarget:self];
+#endif
+      } @catch (NSException *exception) {
+        e = [exception retain];
+      }
+      [self tearDown];
+    } @catch (NSException *exception) {
+      e = [exception retain];
+    }
+    [pool release];
+  } @catch (NSException *exception) {
+    e = [exception retain];
+  }
+  if (e) {
+    [e autorelease];
+    [e raise];
+  }
+}
+
+- (void)tearDown {
+}
+
+- (NSString *)description {
+  // This matches the description OCUnit would return to you
+  return [NSString stringWithFormat:@"-[%@ %@]", [self class],
+          NSStringFromSelector([self selector])];
+}
+
+// Used for sorting methods below
+static int MethodSort(id a, id b, void *context) {
+  NSInvocation *invocationA = a;
+  NSInvocation *invocationB = b;
+  const char *nameA = sel_getName([invocationA selector]);
+  const char *nameB = sel_getName([invocationB selector]);
+  return strcmp(nameA, nameB);
+}
+
+
++ (NSArray *)testInvocations {
+  NSMutableArray *invocations = nil;
+  // Need to walk all the way up the parent classes collecting methods (in case
+  // a test is a subclass of another test).
+  Class senTestCaseClass = [SenTestCase class];
+  for (Class currentClass = self;
+       currentClass && (currentClass != senTestCaseClass);
+       currentClass = class_getSuperclass(currentClass)) {
+    unsigned int methodCount;
+    Method *methods = class_copyMethodList(currentClass, &methodCount);
+    if (methods) {
+      // This handles disposing of methods for us even if an exception should fly.
+      [NSData dataWithBytesNoCopy:methods
+                           length:sizeof(Method) * methodCount];
+      if (!invocations) {
+        invocations = [NSMutableArray arrayWithCapacity:methodCount];
+      }
+      for (size_t i = 0; i < methodCount; ++i) {
+        Method currMethod = methods[i];
+        SEL sel = method_getName(currMethod);
+        char *returnType = NULL;
+        const char *name = sel_getName(sel);
+        // If it starts with test, takes 2 args (target and sel) and returns
+        // void run it.
+        if (strstr(name, "test") == name) {
+          returnType = method_copyReturnType(currMethod);
+          if (returnType) {
+            // This handles disposing of returnType for us even if an
+            // exception should fly. Length +1 for the terminator, not that
+            // the length really matters here, as we never reference inside
+            // the data block.
+            [NSData dataWithBytesNoCopy:returnType
+                                 length:strlen(returnType) + 1];
+          }
+        }
+        // TODO: If a test class is a subclass of another, and they reuse the
+        // same selector name (ie-subclass overrides it), this current loop
+        // and test here will cause cause it to get invoked twice.  To fix this
+        // the selector would have to be checked against all the ones already
+        // added, so it only gets done once.
+        if (returnType  // True if name starts with "test"
+            && strcmp(returnType, @encode(void)) == 0
+            && method_getNumberOfArguments(currMethod) == 2) {
+          NSMethodSignature *sig = [self instanceMethodSignatureForSelector:sel];
+          NSInvocation *invocation
+            = [NSInvocation invocationWithMethodSignature:sig];
+          [invocation setSelector:sel];
+          [invocations addObject:invocation];
+        }
+      }
+    }
+  }
+  // Match SenTestKit and run everything in alphbetical order.
+  [invocations sortUsingFunction:MethodSort context:nil];
+  return invocations;
+}
+
+@end
+
+#endif  // GTM_IPHONE_SDK && !GTM_IPHONE_USE_SENTEST
+
+@implementation GTMTestCase : SenTestCase
+- (void)invokeTest {
+  NSAutoreleasePool *localPool = [[NSAutoreleasePool alloc] init];
+  Class devLogClass = NSClassFromString(@"GTMUnitTestDevLog");
+  if (devLogClass) {
+    [devLogClass performSelector:@selector(enableTracking)];
+    [devLogClass performSelector:@selector(verifyNoMoreLogsExpected)];
+
+  }
+  [super invokeTest];
+  if (devLogClass) {
+    [devLogClass performSelector:@selector(verifyNoMoreLogsExpected)];
+    [devLogClass performSelector:@selector(disableTracking)];
+  }
+  [localPool drain];
+}
+
++ (BOOL)isAbstractTestCase {
+  NSString *name = NSStringFromClass(self);
+  return [name rangeOfString:@"AbstractTest"].location != NSNotFound;
+}
+
++ (NSArray *)testInvocations {
+  NSArray *invocations = nil;
+  if (![self isAbstractTestCase]) {
+    invocations = [super testInvocations];
+  }
+  return invocations;
+}
+
+@end
+
+// Leak detection
+#if !GTM_IPHONE_DEVICE && !GTM_SUPPRESS_RUN_LEAKS_HOOK
+// Don't want to get leaks on the iPhone Device as the device doesn't
+// have 'leaks'. The simulator does though.
+
+// COV_NF_START
+// We don't have leak checking on by default, so this won't be hit.
+static void _GTMRunLeaks(void) {
+  // This is an atexit handler. It runs leaks for us to check if we are
+  // leaking anything in our tests.
+  const char* cExclusionsEnv = getenv("GTM_LEAKS_SYMBOLS_TO_IGNORE");
+  NSMutableString *exclusions = [NSMutableString string];
+  if (cExclusionsEnv) {
+    NSString *exclusionsEnv = [NSString stringWithUTF8String:cExclusionsEnv];
+    NSArray *exclusionsArray = [exclusionsEnv componentsSeparatedByString:@","];
+    NSString *exclusion;
+    NSCharacterSet *wcSet = [NSCharacterSet whitespaceCharacterSet];
+    GTM_FOREACH_OBJECT(exclusion, exclusionsArray) {
+      exclusion = [exclusion stringByTrimmingCharactersInSet:wcSet];
+      [exclusions appendFormat:@"-exclude \"%@\" ", exclusion];
+    }
+  }
+  // Clearing out DYLD_ROOT_PATH because iPhone Simulator framework libraries
+  // are different from regular OS X libraries and leaks will fail to run
+  // because of missing symbols. Also capturing the output of leaks and then
+  // pipe rather than a direct pipe, because otherwise if leaks failed,
+  // the system() call will still be successful. Bug:
+  // http://code.google.com/p/google-toolbox-for-mac/issues/detail?id=56
+  NSString *string
+    = [NSString stringWithFormat:
+       @"LeakOut=`DYLD_ROOT_PATH='' /usr/bin/leaks %@%d` &&"
+       @"echo \"$LeakOut\"|/usr/bin/sed -e 's/Leak: /Leaks:0: warning: Leak /'",
+       exclusions, getpid()];
+  int ret = system([string UTF8String]);
+  if (ret) {
+    fprintf(stderr,
+            "%s:%d: Error: Unable to run leaks. 'system' returned: %d\n",
+            __FILE__, __LINE__, ret);
+    fflush(stderr);
+  }
+}
+// COV_NF_END
+
+static __attribute__((constructor)) void _GTMInstallLeaks(void) {
+  BOOL checkLeaks = YES;
+#if !GTM_IPHONE_SDK
+  checkLeaks = GTMIsGarbageCollectionEnabled() ? NO : YES;
+#endif  // !GTM_IPHONE_SDK
+  if (checkLeaks) {
+    checkLeaks = getenv("GTM_ENABLE_LEAKS") ? YES : NO;
+    if (checkLeaks) {
+      // COV_NF_START
+      // We don't have leak checking on by default, so this won't be hit.
+      fprintf(stderr, "Leak Checking Enabled\n");
+      fflush(stderr);
+      int ret = atexit(&_GTMRunLeaks);
+      // To avoid unused variable warning when _GTMDevAssert is stripped.
+      (void)ret;
+      _GTMDevAssert(ret == 0,
+                    @"Unable to install _GTMRunLeaks as an atexit handler (%d)",
+                    errno);
+      // COV_NF_END
+    }
+  }
+}
+
+#endif   // !GTM_IPHONE_DEVICE && !GTM_SUPPRESS_RUN_LEAKS_HOOK
diff --git a/google-breakpad/src/common/md5.cc b/google-breakpad/src/common/md5.cc
new file mode 100644
index 0000000..a0d9a1b
--- /dev/null
+++ b/google-breakpad/src/common/md5.cc
@@ -0,0 +1,251 @@
+/*
+ * written by Colin Plumb in 1993, no copyright is claimed.
+ * This code is in the public domain; do with it what you wish.
+ *
+ * Equivalent code is available from RSA Data Security, Inc.
+ * This code has been tested against that, and is equivalent,
+ * except that you don't need to include two pages of legalese
+ * with every copy.
+ *
+ * To compute the message digest of a chunk of bytes, declare an
+ * MD5Context structure, pass it to MD5Init, call MD5Update as
+ * needed on buffers full of bytes, and then call MD5Final, which
+ * will fill a supplied 16-byte array with the digest.
+ */
+
+#include <string.h>
+
+#include "common/md5.h"
+
+namespace google_breakpad {
+
+#ifndef WORDS_BIGENDIAN
+#define byteReverse(buf, len)   /* Nothing */
+#else
+/*
+ * Note: this code is harmless on little-endian machines.
+ */
+static void byteReverse(unsigned char *buf, unsigned longs)
+{
+  u32 t;
+  do {
+    t = (u32) ((unsigned) buf[3] << 8 | buf[2]) << 16 |
+      ((unsigned) buf[1] << 8 | buf[0]);
+    *(u32 *) buf = t;
+    buf += 4;
+  } while (--longs);
+}
+#endif
+
+static void MD5Transform(u32 buf[4], u32 const in[16]);
+
+/*
+ * Start MD5 accumulation.  Set bit count to 0 and buffer to mysterious
+ * initialization constants.
+ */
+void MD5Init(struct MD5Context *ctx)
+{
+  ctx->buf[0] = 0x67452301;
+  ctx->buf[1] = 0xefcdab89;
+  ctx->buf[2] = 0x98badcfe;
+  ctx->buf[3] = 0x10325476;
+
+  ctx->bits[0] = 0;
+  ctx->bits[1] = 0;
+}
+
+/*
+ * Update context to reflect the concatenation of another buffer full
+ * of bytes.
+ */
+void MD5Update(struct MD5Context *ctx, unsigned char const *buf, size_t len)
+{
+  u32 t;
+
+  /* Update bitcount */
+
+  t = ctx->bits[0];
+  if ((ctx->bits[0] = t + ((u32) len << 3)) < t)
+    ctx->bits[1]++;         /* Carry from low to high */
+  ctx->bits[1] += len >> 29;
+
+  t = (t >> 3) & 0x3f;        /* Bytes already in shsInfo->data */
+
+  /* Handle any leading odd-sized chunks */
+
+  if (t) {
+    unsigned char *p = (unsigned char *) ctx->in + t;
+
+    t = 64 - t;
+    if (len < t) {
+      memcpy(p, buf, len);
+      return;
+    }
+    memcpy(p, buf, t);
+    byteReverse(ctx->in, 16);
+    MD5Transform(ctx->buf, (u32 *) ctx->in);
+    buf += t;
+    len -= t;
+  }
+  /* Process data in 64-byte chunks */
+
+  while (len >= 64) {
+    memcpy(ctx->in, buf, 64);
+    byteReverse(ctx->in, 16);
+    MD5Transform(ctx->buf, (u32 *) ctx->in);
+    buf += 64;
+    len -= 64;
+  }
+
+  /* Handle any remaining bytes of data. */
+
+  memcpy(ctx->in, buf, len);
+}
+
+/*
+ * Final wrapup - pad to 64-byte boundary with the bit pattern
+ * 1 0* (64-bit count of bits processed, MSB-first)
+ */
+void MD5Final(unsigned char digest[16], struct MD5Context *ctx)
+{
+  unsigned count;
+  unsigned char *p;
+
+  /* Compute number of bytes mod 64 */
+  count = (ctx->bits[0] >> 3) & 0x3F;
+
+  /* Set the first char of padding to 0x80.  This is safe since there is
+     always at least one byte free */
+  p = ctx->in + count;
+  *p++ = 0x80;
+
+  /* Bytes of padding needed to make 64 bytes */
+  count = 64 - 1 - count;
+
+  /* Pad out to 56 mod 64 */
+  if (count < 8) {
+    /* Two lots of padding:  Pad the first block to 64 bytes */
+    memset(p, 0, count);
+    byteReverse(ctx->in, 16);
+    MD5Transform(ctx->buf, (u32 *) ctx->in);
+
+    /* Now fill the next block with 56 bytes */
+    memset(ctx->in, 0, 56);
+  } else {
+    /* Pad block to 56 bytes */
+    memset(p, 0, count - 8);
+  }
+  byteReverse(ctx->in, 14);
+
+  /* Append length in bits and transform */
+  ((u32 *) ctx->in)[14] = ctx->bits[0];
+  ((u32 *) ctx->in)[15] = ctx->bits[1];
+
+  MD5Transform(ctx->buf, (u32 *) ctx->in);
+  byteReverse((unsigned char *) ctx->buf, 4);
+  memcpy(digest, ctx->buf, 16);
+  memset(ctx, 0, sizeof(*ctx));        /* In case it's sensitive */
+}
+
+/* The four core functions - F1 is optimized somewhat */
+
+/* #define F1(x, y, z) (x & y | ~x & z) */
+#define F1(x, y, z) (z ^ (x & (y ^ z)))
+#define F2(x, y, z) F1(z, x, y)
+#define F3(x, y, z) (x ^ y ^ z)
+#define F4(x, y, z) (y ^ (x | ~z))
+
+/* This is the central step in the MD5 algorithm. */
+#define MD5STEP(f, w, x, y, z, data, s) \
+  ( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
+
+/*
+ * The core of the MD5 algorithm, this alters an existing MD5 hash to
+ * reflect the addition of 16 longwords of new data.  MD5Update blocks
+ * the data and converts bytes into longwords for this routine.
+ */
+static void MD5Transform(u32 buf[4], u32 const in[16])
+{
+  u32 a, b, c, d;
+
+  a = buf[0];
+  b = buf[1];
+  c = buf[2];
+  d = buf[3];
+
+  MD5STEP(F1, a, b, c, d, in[0] + 0xd76aa478, 7);
+  MD5STEP(F1, d, a, b, c, in[1] + 0xe8c7b756, 12);
+  MD5STEP(F1, c, d, a, b, in[2] + 0x242070db, 17);
+  MD5STEP(F1, b, c, d, a, in[3] + 0xc1bdceee, 22);
+  MD5STEP(F1, a, b, c, d, in[4] + 0xf57c0faf, 7);
+  MD5STEP(F1, d, a, b, c, in[5] + 0x4787c62a, 12);
+  MD5STEP(F1, c, d, a, b, in[6] + 0xa8304613, 17);
+  MD5STEP(F1, b, c, d, a, in[7] + 0xfd469501, 22);
+  MD5STEP(F1, a, b, c, d, in[8] + 0x698098d8, 7);
+  MD5STEP(F1, d, a, b, c, in[9] + 0x8b44f7af, 12);
+  MD5STEP(F1, c, d, a, b, in[10] + 0xffff5bb1, 17);
+  MD5STEP(F1, b, c, d, a, in[11] + 0x895cd7be, 22);
+  MD5STEP(F1, a, b, c, d, in[12] + 0x6b901122, 7);
+  MD5STEP(F1, d, a, b, c, in[13] + 0xfd987193, 12);
+  MD5STEP(F1, c, d, a, b, in[14] + 0xa679438e, 17);
+  MD5STEP(F1, b, c, d, a, in[15] + 0x49b40821, 22);
+
+  MD5STEP(F2, a, b, c, d, in[1] + 0xf61e2562, 5);
+  MD5STEP(F2, d, a, b, c, in[6] + 0xc040b340, 9);
+  MD5STEP(F2, c, d, a, b, in[11] + 0x265e5a51, 14);
+  MD5STEP(F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20);
+  MD5STEP(F2, a, b, c, d, in[5] + 0xd62f105d, 5);
+  MD5STEP(F2, d, a, b, c, in[10] + 0x02441453, 9);
+  MD5STEP(F2, c, d, a, b, in[15] + 0xd8a1e681, 14);
+  MD5STEP(F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20);
+  MD5STEP(F2, a, b, c, d, in[9] + 0x21e1cde6, 5);
+  MD5STEP(F2, d, a, b, c, in[14] + 0xc33707d6, 9);
+  MD5STEP(F2, c, d, a, b, in[3] + 0xf4d50d87, 14);
+  MD5STEP(F2, b, c, d, a, in[8] + 0x455a14ed, 20);
+  MD5STEP(F2, a, b, c, d, in[13] + 0xa9e3e905, 5);
+  MD5STEP(F2, d, a, b, c, in[2] + 0xfcefa3f8, 9);
+  MD5STEP(F2, c, d, a, b, in[7] + 0x676f02d9, 14);
+  MD5STEP(F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20);
+
+  MD5STEP(F3, a, b, c, d, in[5] + 0xfffa3942, 4);
+  MD5STEP(F3, d, a, b, c, in[8] + 0x8771f681, 11);
+  MD5STEP(F3, c, d, a, b, in[11] + 0x6d9d6122, 16);
+  MD5STEP(F3, b, c, d, a, in[14] + 0xfde5380c, 23);
+  MD5STEP(F3, a, b, c, d, in[1] + 0xa4beea44, 4);
+  MD5STEP(F3, d, a, b, c, in[4] + 0x4bdecfa9, 11);
+  MD5STEP(F3, c, d, a, b, in[7] + 0xf6bb4b60, 16);
+  MD5STEP(F3, b, c, d, a, in[10] + 0xbebfbc70, 23);
+  MD5STEP(F3, a, b, c, d, in[13] + 0x289b7ec6, 4);
+  MD5STEP(F3, d, a, b, c, in[0] + 0xeaa127fa, 11);
+  MD5STEP(F3, c, d, a, b, in[3] + 0xd4ef3085, 16);
+  MD5STEP(F3, b, c, d, a, in[6] + 0x04881d05, 23);
+  MD5STEP(F3, a, b, c, d, in[9] + 0xd9d4d039, 4);
+  MD5STEP(F3, d, a, b, c, in[12] + 0xe6db99e5, 11);
+  MD5STEP(F3, c, d, a, b, in[15] + 0x1fa27cf8, 16);
+  MD5STEP(F3, b, c, d, a, in[2] + 0xc4ac5665, 23);
+
+  MD5STEP(F4, a, b, c, d, in[0] + 0xf4292244, 6);
+  MD5STEP(F4, d, a, b, c, in[7] + 0x432aff97, 10);
+  MD5STEP(F4, c, d, a, b, in[14] + 0xab9423a7, 15);
+  MD5STEP(F4, b, c, d, a, in[5] + 0xfc93a039, 21);
+  MD5STEP(F4, a, b, c, d, in[12] + 0x655b59c3, 6);
+  MD5STEP(F4, d, a, b, c, in[3] + 0x8f0ccc92, 10);
+  MD5STEP(F4, c, d, a, b, in[10] + 0xffeff47d, 15);
+  MD5STEP(F4, b, c, d, a, in[1] + 0x85845dd1, 21);
+  MD5STEP(F4, a, b, c, d, in[8] + 0x6fa87e4f, 6);
+  MD5STEP(F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10);
+  MD5STEP(F4, c, d, a, b, in[6] + 0xa3014314, 15);
+  MD5STEP(F4, b, c, d, a, in[13] + 0x4e0811a1, 21);
+  MD5STEP(F4, a, b, c, d, in[4] + 0xf7537e82, 6);
+  MD5STEP(F4, d, a, b, c, in[11] + 0xbd3af235, 10);
+  MD5STEP(F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15);
+  MD5STEP(F4, b, c, d, a, in[9] + 0xeb86d391, 21);
+
+  buf[0] += a;
+  buf[1] += b;
+  buf[2] += c;
+  buf[3] += d;
+}
+
+}  // namespace google_breakpad
+
diff --git a/google-breakpad/src/common/md5.h b/google-breakpad/src/common/md5.h
new file mode 100644
index 0000000..2ab0ab9
--- /dev/null
+++ b/google-breakpad/src/common/md5.h
@@ -0,0 +1,27 @@
+// Copyright 2007 Google Inc. All Rights Reserved.
+// Author: liuli@google.com (Liu Li)
+#ifndef COMMON_MD5_H__
+#define COMMON_MD5_H__
+
+#include <stdint.h>
+
+namespace google_breakpad {
+
+typedef uint32_t u32;
+typedef uint8_t u8;
+
+struct MD5Context {
+  u32 buf[4];
+  u32 bits[2];
+  u8 in[64];
+};
+
+void MD5Init(struct MD5Context *ctx);
+
+void MD5Update(struct MD5Context *ctx, unsigned char const *buf, size_t len);
+
+void MD5Final(unsigned char digest[16], struct MD5Context *ctx);
+
+}  // namespace google_breakpad
+
+#endif  // COMMON_MD5_H__
diff --git a/google-breakpad/src/common/memory.h b/google-breakpad/src/common/memory.h
new file mode 100644
index 0000000..d6aa137
--- /dev/null
+++ b/google-breakpad/src/common/memory.h
@@ -0,0 +1,212 @@
+// Copyright (c) 2009, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef GOOGLE_BREAKPAD_COMMON_MEMORY_H_
+#define GOOGLE_BREAKPAD_COMMON_MEMORY_H_
+
+#include <stdint.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <sys/mman.h>
+
+#include <memory>
+#include <vector>
+
+#if defined(MEMORY_SANITIZER)
+#include <sanitizer/msan_interface.h>
+#endif
+
+#ifdef __APPLE__
+#define sys_mmap mmap
+#define sys_mmap2 mmap
+#define sys_munmap munmap
+#define MAP_ANONYMOUS MAP_ANON
+#else
+#include "third_party/lss/linux_syscall_support.h"
+#endif
+
+namespace google_breakpad {
+
+// This is very simple allocator which fetches pages from the kernel directly.
+// Thus, it can be used even when the heap may be corrupted.
+//
+// There is no free operation. The pages are only freed when the object is
+// destroyed.
+class PageAllocator {
+ public:
+  PageAllocator()
+      : page_size_(getpagesize()),
+        last_(NULL),
+        current_page_(NULL),
+        page_offset_(0) {
+  }
+
+  ~PageAllocator() {
+    FreeAll();
+  }
+
+  void *Alloc(size_t bytes) {
+    if (!bytes)
+      return NULL;
+
+    if (current_page_ && page_size_ - page_offset_ >= bytes) {
+      uint8_t *const ret = current_page_ + page_offset_;
+      page_offset_ += bytes;
+      if (page_offset_ == page_size_) {
+        page_offset_ = 0;
+        current_page_ = NULL;
+      }
+
+      return ret;
+    }
+
+    const size_t pages =
+        (bytes + sizeof(PageHeader) + page_size_ - 1) / page_size_;
+    uint8_t *const ret = GetNPages(pages);
+    if (!ret)
+      return NULL;
+
+    page_offset_ =
+        (page_size_ - (page_size_ * pages - (bytes + sizeof(PageHeader)))) %
+        page_size_;
+    current_page_ = page_offset_ ? ret + page_size_ * (pages - 1) : NULL;
+
+    return ret + sizeof(PageHeader);
+  }
+
+  // Checks whether the page allocator owns the passed-in pointer.
+  // This method exists for testing pursposes only.
+  bool OwnsPointer(const void* p) {
+    for (PageHeader* header = last_; header; header = header->next) {
+      const char* current = reinterpret_cast<char*>(header);
+      if ((p >= current) && (p < current + header->num_pages * page_size_))
+        return true;
+    }
+
+    return false;
+  }
+
+ private:
+  uint8_t *GetNPages(size_t num_pages) {
+#if defined(__x86_64__) || defined(__aarch64__) || defined(__aarch64__) || \
+    ((defined(__mips__) && _MIPS_SIM == _ABI64))
+    void *a = sys_mmap(NULL, page_size_ * num_pages, PROT_READ | PROT_WRITE,
+                       MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+#else
+    void *a = sys_mmap2(NULL, page_size_ * num_pages, PROT_READ | PROT_WRITE,
+                        MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+#endif
+    if (a == MAP_FAILED)
+      return NULL;
+
+#if defined(MEMORY_SANITIZER)
+    // We need to indicate to MSan that memory allocated through sys_mmap is
+    // initialized, since linux_syscall_support.h doesn't have MSan hooks.
+    __msan_unpoison(a, page_size_ * num_pages);
+#endif
+
+    struct PageHeader *header = reinterpret_cast<PageHeader*>(a);
+    header->next = last_;
+    header->num_pages = num_pages;
+    last_ = header;
+
+    return reinterpret_cast<uint8_t*>(a);
+  }
+
+  void FreeAll() {
+    PageHeader *next;
+
+    for (PageHeader *cur = last_; cur; cur = next) {
+      next = cur->next;
+      sys_munmap(cur, cur->num_pages * page_size_);
+    }
+  }
+
+  struct PageHeader {
+    PageHeader *next;  // pointer to the start of the next set of pages.
+    size_t num_pages;  // the number of pages in this set.
+  };
+
+  const size_t page_size_;
+  PageHeader *last_;
+  uint8_t *current_page_;
+  size_t page_offset_;
+};
+
+// Wrapper to use with STL containers
+template <typename T>
+struct PageStdAllocator : public std::allocator<T> {
+  typedef typename std::allocator<T>::pointer pointer;
+  typedef typename std::allocator<T>::size_type size_type;
+
+  explicit PageStdAllocator(PageAllocator& allocator): allocator_(allocator) {}
+  template <class Other> PageStdAllocator(const PageStdAllocator<Other>& other)
+      : allocator_(other.allocator_) {}
+
+  inline pointer allocate(size_type n, const void* = 0) {
+    return static_cast<pointer>(allocator_.Alloc(sizeof(T) * n));
+  }
+
+  inline void deallocate(pointer, size_type) {
+    // The PageAllocator doesn't free.
+  }
+
+  template <typename U> struct rebind {
+    typedef PageStdAllocator<U> other;
+  };
+
+ private:
+  // Silly workaround for the gcc from Android's ndk (gcc 4.6), which will
+  // otherwise complain that `other.allocator_` is private in the constructor
+  // code.
+  template<typename Other> friend struct PageStdAllocator;
+
+  PageAllocator& allocator_;
+};
+
+// A wasteful vector is a std::vector, except that it allocates memory from a
+// PageAllocator. It's wasteful because, when resizing, it always allocates a
+// whole new array since the PageAllocator doesn't support realloc.
+template<class T>
+class wasteful_vector : public std::vector<T, PageStdAllocator<T> > {
+ public:
+  wasteful_vector(PageAllocator* allocator, unsigned size_hint = 16)
+      : std::vector<T, PageStdAllocator<T> >(PageStdAllocator<T>(*allocator)) {
+    std::vector<T, PageStdAllocator<T> >::reserve(size_hint);
+  }
+};
+
+}  // namespace google_breakpad
+
+inline void* operator new(size_t nbytes,
+                          google_breakpad::PageAllocator& allocator) {
+  return allocator.Alloc(nbytes);
+}
+
+#endif  // GOOGLE_BREAKPAD_COMMON_MEMORY_H_
diff --git a/google-breakpad/src/common/memory_range.h b/google-breakpad/src/common/memory_range.h
new file mode 100644
index 0000000..41dd2da
--- /dev/null
+++ b/google-breakpad/src/common/memory_range.h
@@ -0,0 +1,145 @@
+// Copyright (c) 2011, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// memory_range.h: Define the google_breakpad::MemoryRange class, which
+// is a lightweight wrapper with a pointer and a length to encapsulate
+// a contiguous range of memory.
+
+#ifndef COMMON_MEMORY_RANGE_H_
+#define COMMON_MEMORY_RANGE_H_
+
+#include <stddef.h>
+
+#include "google_breakpad/common/breakpad_types.h"
+
+namespace google_breakpad {
+
+// A lightweight wrapper with a pointer and a length to encapsulate a
+// contiguous range of memory. It provides helper methods for checked
+// access of a subrange of the memory. Its implemementation does not
+// allocate memory or call into libc functions, and is thus safer to use
+// in a crashed environment.
+class MemoryRange {
+ public:
+  MemoryRange() : data_(NULL), length_(0) {}
+
+  MemoryRange(const void* data, size_t length) {
+    Set(data, length);
+  }
+
+  // Returns true if this memory range contains no data.
+  bool IsEmpty() const {
+    // Set() guarantees that |length_| is zero if |data_| is NULL.
+    return length_ == 0;
+  }
+
+  // Resets to an empty range.
+  void Reset() {
+    data_ = NULL;
+    length_ = 0;
+  }
+
+  // Sets this memory range to point to |data| and its length to |length|.
+  void Set(const void* data, size_t length) {
+    data_ = reinterpret_cast<const uint8_t*>(data);
+    // Always set |length_| to zero if |data_| is NULL.
+    length_ = data ? length : 0;
+  }
+
+  // Returns true if this range covers a subrange of |sub_length| bytes
+  // at |sub_offset| bytes of this memory range, or false otherwise.
+  bool Covers(size_t sub_offset, size_t sub_length) const {
+    // The following checks verify that:
+    // 1. sub_offset is within [ 0 .. length_ - 1 ]
+    // 2. sub_offset + sub_length is within
+    //    [ sub_offset .. length_ ]
+    return sub_offset < length_ &&
+           sub_offset + sub_length >= sub_offset &&
+           sub_offset + sub_length <= length_;
+  }
+
+  // Returns a raw data pointer to a subrange of |sub_length| bytes at
+  // |sub_offset| bytes of this memory range, or NULL if the subrange
+  // is out of bounds.
+  const void* GetData(size_t sub_offset, size_t sub_length) const {
+    return Covers(sub_offset, sub_length) ? (data_ + sub_offset) : NULL;
+  }
+
+  // Same as the two-argument version of GetData() but uses sizeof(DataType)
+  // as the subrange length and returns an |DataType| pointer for convenience.
+  template <typename DataType>
+  const DataType* GetData(size_t sub_offset) const {
+    return reinterpret_cast<const DataType*>(
+        GetData(sub_offset, sizeof(DataType)));
+  }
+
+  // Returns a raw pointer to the |element_index|-th element of an array
+  // of elements of length |element_size| starting at |sub_offset| bytes
+  // of this memory range, or NULL if the element is out of bounds.
+  const void* GetArrayElement(size_t element_offset,
+                              size_t element_size,
+                              unsigned element_index) const {
+    size_t sub_offset = element_offset + element_index * element_size;
+    return GetData(sub_offset, element_size);
+  }
+
+  // Same as the three-argument version of GetArrayElement() but deduces
+  // the element size using sizeof(ElementType) and returns an |ElementType|
+  // pointer for convenience.
+  template <typename ElementType>
+  const ElementType* GetArrayElement(size_t element_offset,
+                                     unsigned element_index) const {
+    return reinterpret_cast<const ElementType*>(
+        GetArrayElement(element_offset, sizeof(ElementType), element_index));
+  }
+
+  // Returns a subrange of |sub_length| bytes at |sub_offset| bytes of
+  // this memory range, or an empty range if the subrange is out of bounds.
+  MemoryRange Subrange(size_t sub_offset, size_t sub_length) const {
+    return Covers(sub_offset, sub_length) ?
+        MemoryRange(data_ + sub_offset, sub_length) : MemoryRange();
+  }
+
+  // Returns a pointer to the beginning of this memory range.
+  const uint8_t* data() const { return data_; }
+
+  // Returns the length, in bytes, of this memory range.
+  size_t length() const { return length_; }
+
+ private:
+  // Pointer to the beginning of this memory range.
+  const uint8_t* data_;
+
+  // Length, in bytes, of this memory range.
+  size_t length_;
+};
+
+}  // namespace google_breakpad
+
+#endif  // COMMON_MEMORY_RANGE_H_
diff --git a/google-breakpad/src/common/memory_range_unittest.cc b/google-breakpad/src/common/memory_range_unittest.cc
new file mode 100644
index 0000000..f6cf8c8
--- /dev/null
+++ b/google-breakpad/src/common/memory_range_unittest.cc
@@ -0,0 +1,193 @@
+// Copyright (c) 2011, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// memory_range_unittest.cc: Unit tests for google_breakpad::MemoryRange.
+
+#include "breakpad_googletest_includes.h"
+#include "common/memory_range.h"
+
+using google_breakpad::MemoryRange;
+using testing::Message;
+
+namespace {
+
+const uint32_t kBuffer[10] = { 0 };
+const size_t kBufferSize = sizeof(kBuffer);
+const uint8_t* kBufferPointer = reinterpret_cast<const uint8_t*>(kBuffer);
+
+// Test vectors for verifying Covers, GetData, and Subrange.
+const struct {
+  bool valid;
+  size_t offset;
+  size_t length;
+} kSubranges[] = {
+  { true, 0, 0 },
+  { true, 0, 2 },
+  { true, 0, kBufferSize },
+  { true, 2, 0 },
+  { true, 2, 4 },
+  { true, 2, kBufferSize - 2 },
+  { true, kBufferSize - 1, 1 },
+  { false, kBufferSize, 0 },
+  { false, kBufferSize, static_cast<size_t>(-1) },
+  { false, kBufferSize + 1, 0 },
+  { false, static_cast<size_t>(-1), 2 },
+  { false, 1, kBufferSize },
+  { false, kBufferSize - 1, 2 },
+  { false, 0, static_cast<size_t>(-1) },
+  { false, 1, static_cast<size_t>(-1) },
+};
+const size_t kNumSubranges = sizeof(kSubranges) / sizeof(kSubranges[0]);
+
+// Test vectors for verifying GetArrayElement.
+const struct {
+  size_t offset;
+  size_t size;
+  size_t index;
+  const void* const pointer;
+} kElements[] = {
+  // Valid array elemenets
+  { 0, 1, 0, kBufferPointer },
+  { 0, 1, 1, kBufferPointer + 1 },
+  { 0, 1, kBufferSize - 1, kBufferPointer + kBufferSize - 1 },
+  { 0, 2, 1, kBufferPointer + 2 },
+  { 0, 4, 2, kBufferPointer + 8 },
+  { 0, 4, 9, kBufferPointer + 36 },
+  { kBufferSize - 1, 1, 0, kBufferPointer + kBufferSize - 1 },
+  // Invalid array elemenets
+  { 0, 1, kBufferSize, NULL },
+  { 0, 4, 10, NULL },
+  { kBufferSize - 1, 1, 1, NULL },
+  { kBufferSize - 1, 2, 0, NULL },
+  { kBufferSize, 1, 0, NULL },
+};
+const size_t kNumElements = sizeof(kElements) / sizeof(kElements[0]);
+
+}  // namespace
+
+TEST(MemoryRangeTest, DefaultConstructor) {
+  MemoryRange range;
+  EXPECT_EQ(NULL, range.data());
+  EXPECT_EQ(0U, range.length());
+}
+
+TEST(MemoryRangeTest, ConstructorWithDataAndLength) {
+  MemoryRange range(kBuffer, kBufferSize);
+  EXPECT_EQ(kBufferPointer, range.data());
+  EXPECT_EQ(kBufferSize, range.length());
+}
+
+TEST(MemoryRangeTest, Reset) {
+  MemoryRange range;
+  range.Reset();
+  EXPECT_EQ(NULL, range.data());
+  EXPECT_EQ(0U, range.length());
+
+  range.Set(kBuffer, kBufferSize);
+  EXPECT_EQ(kBufferPointer, range.data());
+  EXPECT_EQ(kBufferSize, range.length());
+
+  range.Reset();
+  EXPECT_EQ(NULL, range.data());
+  EXPECT_EQ(0U, range.length());
+}
+
+TEST(MemoryRangeTest, Set) {
+  MemoryRange range;
+  range.Set(kBuffer, kBufferSize);
+  EXPECT_EQ(kBufferPointer, range.data());
+  EXPECT_EQ(kBufferSize, range.length());
+
+  range.Set(NULL, 0);
+  EXPECT_EQ(NULL, range.data());
+  EXPECT_EQ(0U, range.length());
+}
+
+TEST(MemoryRangeTest, SubrangeOfEmptyMemoryRange) {
+  MemoryRange range;
+  MemoryRange subrange = range.Subrange(0, 10);
+  EXPECT_EQ(NULL, subrange.data());
+  EXPECT_EQ(0U, subrange.length());
+}
+
+TEST(MemoryRangeTest, SubrangeAndGetData) {
+  MemoryRange range(kBuffer, kBufferSize);
+  for (size_t i = 0; i < kNumSubranges; ++i) {
+    bool valid = kSubranges[i].valid;
+    size_t sub_offset = kSubranges[i].offset;
+    size_t sub_length = kSubranges[i].length;
+    SCOPED_TRACE(Message() << "offset=" << sub_offset
+                 << ", length=" << sub_length);
+
+    MemoryRange subrange = range.Subrange(sub_offset, sub_length);
+    if (valid) {
+      EXPECT_TRUE(range.Covers(sub_offset, sub_length));
+      EXPECT_EQ(kBufferPointer + sub_offset,
+                range.GetData(sub_offset, sub_length));
+      EXPECT_EQ(kBufferPointer + sub_offset, subrange.data());
+      EXPECT_EQ(sub_length, subrange.length());
+    } else {
+      EXPECT_FALSE(range.Covers(sub_offset, sub_length));
+      EXPECT_EQ(NULL, range.GetData(sub_offset, sub_length));
+      EXPECT_EQ(NULL, subrange.data());
+      EXPECT_EQ(0U, subrange.length());
+    }
+  }
+}
+
+TEST(MemoryRangeTest, GetDataWithTemplateType) {
+  MemoryRange range(kBuffer, kBufferSize);
+  const char* char_pointer = range.GetData<char>(0);
+  EXPECT_EQ(reinterpret_cast<const char*>(kBufferPointer), char_pointer);
+  const int* int_pointer = range.GetData<int>(0);
+  EXPECT_EQ(reinterpret_cast<const int*>(kBufferPointer), int_pointer);
+}
+
+TEST(MemoryRangeTest, GetArrayElement) {
+  MemoryRange range(kBuffer, kBufferSize);
+  for (size_t i = 0; i < kNumElements; ++i) {
+    size_t element_offset = kElements[i].offset;
+    size_t element_size = kElements[i].size;
+    unsigned element_index = kElements[i].index;
+    const void* const element_pointer = kElements[i].pointer;
+    SCOPED_TRACE(Message() << "offset=" << element_offset
+                 << ", size=" << element_size
+                 << ", index=" << element_index);
+    EXPECT_EQ(element_pointer, range.GetArrayElement(
+        element_offset, element_size, element_index));
+  }
+}
+
+TEST(MemoryRangeTest, GetArrayElmentWithTemplateType) {
+  MemoryRange range(kBuffer, kBufferSize);
+  const char* char_pointer = range.GetArrayElement<char>(0, 0);
+  EXPECT_EQ(reinterpret_cast<const char*>(kBufferPointer), char_pointer);
+  const int* int_pointer = range.GetArrayElement<int>(0, 0);
+  EXPECT_EQ(reinterpret_cast<const int*>(kBufferPointer), int_pointer);
+}
diff --git a/google-breakpad/src/common/memory_unittest.cc b/google-breakpad/src/common/memory_unittest.cc
new file mode 100644
index 0000000..1e511ca
--- /dev/null
+++ b/google-breakpad/src/common/memory_unittest.cc
@@ -0,0 +1,97 @@
+// Copyright (c) 2009, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include "breakpad_googletest_includes.h"
+#include "common/memory.h"
+
+using namespace google_breakpad;
+
+namespace {
+typedef testing::Test PageAllocatorTest;
+}
+
+TEST(PageAllocatorTest, Setup) {
+  PageAllocator allocator;
+}
+
+TEST(PageAllocatorTest, SmallObjects) {
+  PageAllocator allocator;
+
+  for (unsigned i = 1; i < 1024; ++i) {
+    uint8_t *p = reinterpret_cast<uint8_t*>(allocator.Alloc(i));
+    ASSERT_FALSE(p == NULL);
+    memset(p, 0, i);
+  }
+}
+
+TEST(PageAllocatorTest, LargeObject) {
+  PageAllocator allocator;
+
+  uint8_t *p = reinterpret_cast<uint8_t*>(allocator.Alloc(10000));
+  ASSERT_FALSE(p == NULL);
+  for (unsigned i = 1; i < 10; ++i) {
+    uint8_t *p = reinterpret_cast<uint8_t*>(allocator.Alloc(i));
+    ASSERT_FALSE(p == NULL);
+    memset(p, 0, i);
+  }
+}
+
+namespace {
+typedef testing::Test WastefulVectorTest;
+}
+
+TEST(WastefulVectorTest, Setup) {
+  PageAllocator allocator_;
+  wasteful_vector<int> v(&allocator_);
+  ASSERT_TRUE(v.empty());
+  ASSERT_EQ(v.size(), 0u);
+}
+
+TEST(WastefulVectorTest, Simple) {
+  PageAllocator allocator_;
+  wasteful_vector<unsigned> v(&allocator_);
+
+  for (unsigned i = 0; i < 256; ++i) {
+    v.push_back(i);
+    ASSERT_EQ(i, v.back());
+    ASSERT_EQ(&v.back(), &v[i]);
+  }
+  ASSERT_FALSE(v.empty());
+  ASSERT_EQ(v.size(), 256u);
+  for (unsigned i = 0; i < 256; ++i)
+    ASSERT_EQ(v[i], i);
+}
+
+TEST(WastefulVectorTest, UsesPageAllocator) {
+  PageAllocator allocator_;
+  wasteful_vector<unsigned> v(&allocator_);
+
+  v.push_back(1);
+  ASSERT_TRUE(allocator_.OwnsPointer(&v[0]));
+}
diff --git a/google-breakpad/src/common/minidump_type_helper.h b/google-breakpad/src/common/minidump_type_helper.h
new file mode 100644
index 0000000..5a7d5a6
--- /dev/null
+++ b/google-breakpad/src/common/minidump_type_helper.h
@@ -0,0 +1,56 @@
+// Copyright (c) 2014, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef GOOGLE_BREAKPAD_COMMON_MINIDUMP_TYPE_HELPER_H_
+#define GOOGLE_BREAKPAD_COMMON_MINIDUMP_TYPE_HELPER_H_
+
+#include <stdint.h>
+
+#include "google_breakpad/common/minidump_format.h"
+
+namespace google_breakpad {
+
+template <size_t>
+struct MDTypeHelper;
+
+template <>
+struct MDTypeHelper<sizeof(uint32_t)> {
+  typedef MDRawDebug32 MDRawDebug;
+  typedef MDRawLinkMap32 MDRawLinkMap;
+};
+
+template <>
+struct MDTypeHelper<sizeof(uint64_t)> {
+  typedef MDRawDebug64 MDRawDebug;
+  typedef MDRawLinkMap64 MDRawLinkMap;
+};
+
+}  // namespace google_breakpad
+
+#endif  // GOOGLE_BREAKPAD_COMMON_MINIDUMP_TYPE_HELPER_H_
diff --git a/google-breakpad/src/common/module.cc b/google-breakpad/src/common/module.cc
new file mode 100644
index 0000000..fa798f4
--- /dev/null
+++ b/google-breakpad/src/common/module.cc
@@ -0,0 +1,319 @@
+// Copyright (c) 2011 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// module.cc: Implement google_breakpad::Module.  See module.h.
+
+#include "common/module.h"
+
+#include <assert.h>
+#include <errno.h>
+#include <stdio.h>
+#include <string.h>
+
+#include <iostream>
+#include <utility>
+
+namespace google_breakpad {
+
+using std::dec;
+using std::endl;
+using std::hex;
+
+
+Module::Module(const string &name, const string &os,
+               const string &architecture, const string &id) :
+    name_(name),
+    os_(os),
+    architecture_(architecture),
+    id_(id),
+    load_address_(0) { }
+
+Module::~Module() {
+  for (FileByNameMap::iterator it = files_.begin(); it != files_.end(); ++it)
+    delete it->second;
+  for (FunctionSet::iterator it = functions_.begin();
+       it != functions_.end(); ++it) {
+    delete *it;
+  }
+  for (vector<StackFrameEntry *>::iterator it = stack_frame_entries_.begin();
+       it != stack_frame_entries_.end(); ++it) {
+    delete *it;
+  }
+  for (ExternSet::iterator it = externs_.begin(); it != externs_.end(); ++it)
+    delete *it;
+}
+
+void Module::SetLoadAddress(Address address) {
+  load_address_ = address;
+}
+
+void Module::AddFunction(Function *function) {
+  // FUNC lines must not hold an empty name, so catch the problem early if
+  // callers try to add one.
+  assert(!function->name.empty());
+
+  // FUNCs are better than PUBLICs as they come with sizes, so remove an extern
+  // with the same address if present.
+  Extern ext(function->address);
+  ExternSet::iterator it_ext = externs_.find(&ext);
+  if (it_ext == externs_.end() &&
+      architecture_ == "arm" &&
+      (function->address & 0x1) == 0) {
+    // ARM THUMB functions have bit 0 set. ARM64 does not have THUMB.
+    Extern arm_thumb_ext(function->address | 0x1);
+    it_ext = externs_.find(&arm_thumb_ext);
+  }
+  if (it_ext != externs_.end()) {
+    delete *it_ext;
+    externs_.erase(it_ext);
+  }
+#if _DEBUG
+  {
+    // There should be no other PUBLIC symbols that overlap with the function.
+    Extern debug_ext(function->address);
+    ExternSet::iterator it_debug = externs_.lower_bound(&ext);
+    assert(it_debug == externs_.end() ||
+           (*it_debug)->address >= function->address + function->size);
+  }
+#endif
+
+  std::pair<FunctionSet::iterator,bool> ret = functions_.insert(function);
+  if (!ret.second && (*ret.first != function)) {
+    // Free the duplicate that was not inserted because this Module
+    // now owns it.
+    delete function;
+  }
+}
+
+void Module::AddFunctions(vector<Function *>::iterator begin,
+                          vector<Function *>::iterator end) {
+  for (vector<Function *>::iterator it = begin; it != end; ++it)
+    AddFunction(*it);
+}
+
+void Module::AddStackFrameEntry(StackFrameEntry *stack_frame_entry) {
+  stack_frame_entries_.push_back(stack_frame_entry);
+}
+
+void Module::AddExtern(Extern *ext) {
+  std::pair<ExternSet::iterator,bool> ret = externs_.insert(ext);
+  if (!ret.second) {
+    // Free the duplicate that was not inserted because this Module
+    // now owns it.
+    delete ext;
+  }
+}
+
+void Module::GetFunctions(vector<Function *> *vec,
+                          vector<Function *>::iterator i) {
+  vec->insert(i, functions_.begin(), functions_.end());
+}
+
+void Module::GetExterns(vector<Extern *> *vec,
+                        vector<Extern *>::iterator i) {
+  vec->insert(i, externs_.begin(), externs_.end());
+}
+
+Module::File *Module::FindFile(const string &name) {
+  // A tricky bit here.  The key of each map entry needs to be a
+  // pointer to the entry's File's name string.  This means that we
+  // can't do the initial lookup with any operation that would create
+  // an empty entry for us if the name isn't found (like, say,
+  // operator[] or insert do), because such a created entry's key will
+  // be a pointer the string passed as our argument.  Since the key of
+  // a map's value type is const, we can't fix it up once we've
+  // created our file.  lower_bound does the lookup without doing an
+  // insertion, and returns a good hint iterator to pass to insert.
+  // Our "destiny" is where we belong, whether we're there or not now.
+  FileByNameMap::iterator destiny = files_.lower_bound(&name);
+  if (destiny == files_.end()
+      || *destiny->first != name) {  // Repeated string comparison, boo hoo.
+    File *file = new File(name);
+    file->source_id = -1;
+    destiny = files_.insert(destiny,
+                            FileByNameMap::value_type(&file->name, file));
+  }
+  return destiny->second;
+}
+
+Module::File *Module::FindFile(const char *name) {
+  string name_string = name;
+  return FindFile(name_string);
+}
+
+Module::File *Module::FindExistingFile(const string &name) {
+  FileByNameMap::iterator it = files_.find(&name);
+  return (it == files_.end()) ? NULL : it->second;
+}
+
+void Module::GetFiles(vector<File *> *vec) {
+  vec->clear();
+  for (FileByNameMap::iterator it = files_.begin(); it != files_.end(); ++it)
+    vec->push_back(it->second);
+}
+
+void Module::GetStackFrameEntries(vector<StackFrameEntry *> *vec) const {
+  *vec = stack_frame_entries_;
+}
+
+void Module::AssignSourceIds() {
+  // First, give every source file an id of -1.
+  for (FileByNameMap::iterator file_it = files_.begin();
+       file_it != files_.end(); ++file_it) {
+    file_it->second->source_id = -1;
+  }
+
+  // Next, mark all files actually cited by our functions' line number
+  // info, by setting each one's source id to zero.
+  for (FunctionSet::const_iterator func_it = functions_.begin();
+       func_it != functions_.end(); ++func_it) {
+    Function *func = *func_it;
+    for (vector<Line>::iterator line_it = func->lines.begin();
+         line_it != func->lines.end(); ++line_it)
+      line_it->file->source_id = 0;
+  }
+
+  // Finally, assign source ids to those files that have been marked.
+  // We could have just assigned source id numbers while traversing
+  // the line numbers, but doing it this way numbers the files in
+  // lexicographical order by name, which is neat.
+  int next_source_id = 0;
+  for (FileByNameMap::iterator file_it = files_.begin();
+       file_it != files_.end(); ++file_it) {
+    if (!file_it->second->source_id)
+      file_it->second->source_id = next_source_id++;
+  }
+}
+
+bool Module::ReportError() {
+  fprintf(stderr, "error writing symbol file: %s\n",
+          strerror(errno));
+  return false;
+}
+
+bool Module::WriteRuleMap(const RuleMap &rule_map, std::ostream &stream) {
+  for (RuleMap::const_iterator it = rule_map.begin();
+       it != rule_map.end(); ++it) {
+    if (it != rule_map.begin())
+      stream << ' ';
+    stream << it->first << ": " << it->second;
+  }
+  return stream.good();
+}
+
+bool Module::Write(std::ostream &stream, SymbolData symbol_data) {
+  stream << "MODULE " << os_ << " " << architecture_ << " "
+         << id_ << " " << name_ << endl;
+  if (!stream.good())
+    return ReportError();
+
+  if (symbol_data != ONLY_CFI) {
+    AssignSourceIds();
+
+    // Write out files.
+    for (FileByNameMap::iterator file_it = files_.begin();
+         file_it != files_.end(); ++file_it) {
+      File *file = file_it->second;
+      if (file->source_id >= 0) {
+        stream << "FILE " << file->source_id << " " <<  file->name << endl;
+        if (!stream.good())
+          return ReportError();
+      }
+    }
+
+    // Write out functions and their lines.
+    for (FunctionSet::const_iterator func_it = functions_.begin();
+         func_it != functions_.end(); ++func_it) {
+      Function *func = *func_it;
+      stream << "FUNC " << hex
+             << (func->address - load_address_) << " "
+             << func->size << " "
+             << func->parameter_size << " "
+             << func->name << dec << endl;
+      if (!stream.good())
+        return ReportError();
+
+      for (vector<Line>::iterator line_it = func->lines.begin();
+           line_it != func->lines.end(); ++line_it) {
+        stream << hex
+               << (line_it->address - load_address_) << " "
+               << line_it->size << " "
+               << dec
+               << line_it->number << " "
+               << line_it->file->source_id << endl;
+        if (!stream.good())
+          return ReportError();
+      }
+    }
+
+    // Write out 'PUBLIC' records.
+    for (ExternSet::const_iterator extern_it = externs_.begin();
+         extern_it != externs_.end(); ++extern_it) {
+      Extern *ext = *extern_it;
+      stream << "PUBLIC " << hex
+             << (ext->address - load_address_) << " 0 "
+             << ext->name << dec << endl;
+    }
+  }
+
+  if (symbol_data != NO_CFI) {
+    // Write out 'STACK CFI INIT' and 'STACK CFI' records.
+    vector<StackFrameEntry *>::const_iterator frame_it;
+    for (frame_it = stack_frame_entries_.begin();
+         frame_it != stack_frame_entries_.end(); ++frame_it) {
+      StackFrameEntry *entry = *frame_it;
+      stream << "STACK CFI INIT " << hex
+             << (entry->address - load_address_) << " "
+             << entry->size << " " << dec;
+      if (!stream.good()
+          || !WriteRuleMap(entry->initial_rules, stream))
+        return ReportError();
+
+      stream << endl;
+
+      // Write out this entry's delta rules as 'STACK CFI' records.
+      for (RuleChangeMap::const_iterator delta_it = entry->rule_changes.begin();
+           delta_it != entry->rule_changes.end(); ++delta_it) {
+        stream << "STACK CFI " << hex
+               << (delta_it->first - load_address_) << " " << dec;
+        if (!stream.good()
+            || !WriteRuleMap(delta_it->second, stream))
+          return ReportError();
+
+        stream << endl;
+      }
+    }
+  }
+
+  return true;
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/common/module.h b/google-breakpad/src/common/module.h
new file mode 100644
index 0000000..65b5595
--- /dev/null
+++ b/google-breakpad/src/common/module.h
@@ -0,0 +1,336 @@
+// -*- mode: c++ -*-
+
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// module.h: Define google_breakpad::Module. A Module holds debugging
+// information, and can write that information out as a Breakpad
+// symbol file.
+
+#ifndef COMMON_LINUX_MODULE_H__
+#define COMMON_LINUX_MODULE_H__
+
+#include <iostream>
+#include <map>
+#include <set>
+#include <string>
+#include <vector>
+
+#include "common/symbol_data.h"
+#include "common/using_std_string.h"
+#include "google_breakpad/common/breakpad_types.h"
+
+namespace google_breakpad {
+
+using std::set;
+using std::vector;
+using std::map;
+
+// A Module represents the contents of a module, and supports methods
+// for adding information produced by parsing STABS or DWARF data
+// --- possibly both from the same file --- and then writing out the
+// unified contents as a Breakpad-format symbol file.
+class Module {
+ public:
+  // The type of addresses and sizes in a symbol table.
+  typedef uint64_t Address;
+  struct File;
+  struct Function;
+  struct Line;
+  struct Extern;
+
+  // Addresses appearing in File, Function, and Line structures are
+  // absolute, not relative to the the module's load address.  That
+  // is, if the module were loaded at its nominal load address, the
+  // addresses would be correct.
+
+  // A source file.
+  struct File {
+    explicit File(const string &name_input) : name(name_input), source_id(0) {}
+
+    // The name of the source file.
+    const string name;
+
+    // The file's source id.  The Write member function clears this
+    // field and assigns source ids a fresh, so any value placed here
+    // before calling Write will be lost.
+    int source_id;
+  };
+
+  // A function.
+  struct Function {
+    Function(const string &name_input, const Address &address_input) :
+        name(name_input), address(address_input), size(0), parameter_size(0) {}
+
+    // For sorting by address.  (Not style-guide compliant, but it's
+    // stupid not to put this in the struct.)
+    static bool CompareByAddress(const Function *x, const Function *y) {
+      return x->address < y->address;
+    }
+
+    // The function's name.
+    const string name;
+
+    // The start address and length of the function's code.
+    const Address address;
+    Address size;
+
+    // The function's parameter size.
+    Address parameter_size;
+
+    // Source lines belonging to this function, sorted by increasing
+    // address.
+    vector<Line> lines;
+  };
+
+  // A source line.
+  struct Line {
+    // For sorting by address.  (Not style-guide compliant, but it's
+    // stupid not to put this in the struct.)
+    static bool CompareByAddress(const Module::Line &x, const Module::Line &y) {
+      return x.address < y.address;
+    }
+
+    Address address, size;    // The address and size of the line's code.
+    File *file;                // The source file.
+    int number;                // The source line number.
+  };
+
+  // An exported symbol.
+  struct Extern {
+    explicit Extern(const Address &address_input) : address(address_input) {}
+    const Address address;
+    string name;
+  };
+
+  // A map from register names to postfix expressions that recover
+  // their their values. This can represent a complete set of rules to
+  // follow at some address, or a set of changes to be applied to an
+  // extant set of rules.
+  typedef map<string, string> RuleMap;
+
+  // A map from addresses to RuleMaps, representing changes that take
+  // effect at given addresses.
+  typedef map<Address, RuleMap> RuleChangeMap;
+
+  // A range of 'STACK CFI' stack walking information. An instance of
+  // this structure corresponds to a 'STACK CFI INIT' record and the
+  // subsequent 'STACK CFI' records that fall within its range.
+  struct StackFrameEntry {
+    // The starting address and number of bytes of machine code this
+    // entry covers.
+    Address address, size;
+
+    // The initial register recovery rules, in force at the starting
+    // address.
+    RuleMap initial_rules;
+
+    // A map from addresses to rule changes. To find the rules in
+    // force at a given address, start with initial_rules, and then
+    // apply the changes given in this map for all addresses up to and
+    // including the address you're interested in.
+    RuleChangeMap rule_changes;
+  };
+
+  struct FunctionCompare {
+    bool operator() (const Function *lhs,
+                     const Function *rhs) const {
+      if (lhs->address == rhs->address)
+        return lhs->name < rhs->name;
+      return lhs->address < rhs->address;
+    }
+  };
+
+  struct ExternCompare {
+    bool operator() (const Extern *lhs,
+                     const Extern *rhs) const {
+      return lhs->address < rhs->address;
+    }
+  };
+
+  // Create a new module with the given name, operating system,
+  // architecture, and ID string.
+  Module(const string &name, const string &os, const string &architecture,
+         const string &id);
+  ~Module();
+
+  // Set the module's load address to LOAD_ADDRESS; addresses given
+  // for functions and lines will be written to the Breakpad symbol
+  // file as offsets from this address.  Construction initializes this
+  // module's load address to zero: addresses written to the symbol
+  // file will be the same as they appear in the Function, Line, and
+  // StackFrameEntry structures.
+  //
+  // Note that this member function has no effect on addresses stored
+  // in the data added to this module; the Write member function
+  // simply subtracts off the load address from addresses before it
+  // prints them. Only the last load address given before calling
+  // Write is used.
+  void SetLoadAddress(Address load_address);
+
+  // Add FUNCTION to the module. FUNCTION's name must not be empty.
+  // This module owns all Function objects added with this function:
+  // destroying the module destroys them as well.
+  void AddFunction(Function *function);
+
+  // Add all the functions in [BEGIN,END) to the module.
+  // This module owns all Function objects added with this function:
+  // destroying the module destroys them as well.
+  void AddFunctions(vector<Function *>::iterator begin,
+                    vector<Function *>::iterator end);
+
+  // Add STACK_FRAME_ENTRY to the module.
+  // This module owns all StackFrameEntry objects added with this
+  // function: destroying the module destroys them as well.
+  void AddStackFrameEntry(StackFrameEntry *stack_frame_entry);
+
+  // Add PUBLIC to the module.
+  // This module owns all Extern objects added with this function:
+  // destroying the module destroys them as well.
+  void AddExtern(Extern *ext);
+
+  // If this module has a file named NAME, return a pointer to it. If
+  // it has none, then create one and return a pointer to the new
+  // file. This module owns all File objects created using these
+  // functions; destroying the module destroys them as well.
+  File *FindFile(const string &name);
+  File *FindFile(const char *name);
+
+  // If this module has a file named NAME, return a pointer to it.
+  // Otherwise, return NULL.
+  File *FindExistingFile(const string &name);
+
+  // Insert pointers to the functions added to this module at I in
+  // VEC. The pointed-to Functions are still owned by this module.
+  // (Since this is effectively a copy of the function list, this is
+  // mostly useful for testing; other uses should probably get a more
+  // appropriate interface.)
+  void GetFunctions(vector<Function *> *vec, vector<Function *>::iterator i);
+
+  // Insert pointers to the externs added to this module at I in
+  // VEC. The pointed-to Externs are still owned by this module.
+  // (Since this is effectively a copy of the extern list, this is
+  // mostly useful for testing; other uses should probably get a more
+  // appropriate interface.)
+  void GetExterns(vector<Extern *> *vec, vector<Extern *>::iterator i);
+
+  // Clear VEC and fill it with pointers to the Files added to this
+  // module, sorted by name. The pointed-to Files are still owned by
+  // this module. (Since this is effectively a copy of the file list,
+  // this is mostly useful for testing; other uses should probably get
+  // a more appropriate interface.)
+  void GetFiles(vector<File *> *vec);
+
+  // Clear VEC and fill it with pointers to the StackFrameEntry
+  // objects that have been added to this module. (Since this is
+  // effectively a copy of the stack frame entry list, this is mostly
+  // useful for testing; other uses should probably get
+  // a more appropriate interface.)
+  void GetStackFrameEntries(vector<StackFrameEntry *> *vec) const;
+
+  // Find those files in this module that are actually referred to by
+  // functions' line number data, and assign them source id numbers.
+  // Set the source id numbers for all other files --- unused by the
+  // source line data --- to -1.  We do this before writing out the
+  // symbol file, at which point we omit any unused files.
+  void AssignSourceIds();
+
+  // Call AssignSourceIds, and write this module to STREAM in the
+  // breakpad symbol format. Return true if all goes well, or false if
+  // an error occurs. This method writes out:
+  // - a header based on the values given to the constructor,
+  // If symbol_data is not ONLY_CFI then:
+  // - the source files added via FindFile,
+  // - the functions added via AddFunctions, each with its lines,
+  // - all public records,
+  // If symbol_data is not NO_CFI then:
+  // - all CFI records.
+  // Addresses in the output are all relative to the load address
+  // established by SetLoadAddress.
+  bool Write(std::ostream &stream, SymbolData symbol_data);
+
+  string name() const { return name_; }
+  string os() const { return os_; }
+  string architecture() const { return architecture_; }
+  string identifier() const { return id_; }
+
+ private:
+  // Report an error that has occurred writing the symbol file, using
+  // errno to find the appropriate cause.  Return false.
+  static bool ReportError();
+
+  // Write RULE_MAP to STREAM, in the form appropriate for 'STACK CFI'
+  // records, without a final newline. Return true if all goes well;
+  // if an error occurs, return false, and leave errno set.
+  static bool WriteRuleMap(const RuleMap &rule_map, std::ostream &stream);
+
+  // Module header entries.
+  string name_, os_, architecture_, id_;
+
+  // The module's nominal load address.  Addresses for functions and
+  // lines are absolute, assuming the module is loaded at this
+  // address.
+  Address load_address_;
+
+  // Relation for maps whose keys are strings shared with some other
+  // structure.
+  struct CompareStringPtrs {
+    bool operator()(const string *x, const string *y) const { return *x < *y; }
+  };
+
+  // A map from filenames to File structures.  The map's keys are
+  // pointers to the Files' names.
+  typedef map<const string *, File *, CompareStringPtrs> FileByNameMap;
+
+  // A set containing Function structures, sorted by address.
+  typedef set<Function *, FunctionCompare> FunctionSet;
+
+  // A set containing Extern structures, sorted by address.
+  typedef set<Extern *, ExternCompare> ExternSet;
+
+  // The module owns all the files and functions that have been added
+  // to it; destroying the module frees the Files and Functions these
+  // point to.
+  FileByNameMap files_;    // This module's source files.
+  FunctionSet functions_;  // This module's functions.
+
+  // The module owns all the call frame info entries that have been
+  // added to it.
+  vector<StackFrameEntry *> stack_frame_entries_;
+
+  // The module owns all the externs that have been added to it;
+  // destroying the module frees the Externs these point to.
+  ExternSet externs_;
+};
+
+}  // namespace google_breakpad
+
+#endif  // COMMON_LINUX_MODULE_H__
diff --git a/google-breakpad/src/common/module_unittest.cc b/google-breakpad/src/common/module_unittest.cc
new file mode 100644
index 0000000..0b64327
--- /dev/null
+++ b/google-breakpad/src/common/module_unittest.cc
@@ -0,0 +1,546 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// module_unittest.cc: Unit tests for google_breakpad::Module.
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <algorithm>
+#include <sstream>
+#include <string>
+
+#include "breakpad_googletest_includes.h"
+#include "common/module.h"
+#include "common/using_std_string.h"
+
+using google_breakpad::Module;
+using std::stringstream;
+using std::vector;
+using testing::ContainerEq;
+
+static Module::Function *generate_duplicate_function(const string &name) {
+  const Module::Address DUP_ADDRESS = 0xd35402aac7a7ad5cLL;
+  const Module::Address DUP_SIZE = 0x200b26e605f99071LL;
+  const Module::Address DUP_PARAMETER_SIZE = 0xf14ac4fed48c4a99LL;
+
+  Module::Function *function = new Module::Function(name, DUP_ADDRESS);
+  function->size = DUP_SIZE;
+  function->parameter_size = DUP_PARAMETER_SIZE;
+  return function;
+}
+
+#define MODULE_NAME "name with spaces"
+#define MODULE_OS "os-name"
+#define MODULE_ARCH "architecture"
+#define MODULE_ID "id-string"
+
+TEST(Write, Header) {
+  stringstream s;
+  Module m(MODULE_NAME, MODULE_OS, MODULE_ARCH, MODULE_ID);
+  m.Write(s, ALL_SYMBOL_DATA);
+  string contents = s.str();
+  EXPECT_STREQ("MODULE os-name architecture id-string name with spaces\n",
+               contents.c_str());
+}
+
+TEST(Write, OneLineFunc) {
+  stringstream s;
+  Module m(MODULE_NAME, MODULE_OS, MODULE_ARCH, MODULE_ID);
+
+  Module::File *file = m.FindFile("file_name.cc");
+  Module::Function *function = new Module::Function(
+      "function_name", 0xe165bf8023b9d9abLL);
+  function->size = 0x1e4bb0eb1cbf5b09LL;
+  function->parameter_size = 0x772beee89114358aLL;
+  Module::Line line = { 0xe165bf8023b9d9abLL, 0x1e4bb0eb1cbf5b09LL,
+                        file, 67519080 };
+  function->lines.push_back(line);
+  m.AddFunction(function);
+
+  m.Write(s, ALL_SYMBOL_DATA);
+  string contents = s.str();
+  EXPECT_STREQ("MODULE os-name architecture id-string name with spaces\n"
+               "FILE 0 file_name.cc\n"
+               "FUNC e165bf8023b9d9ab 1e4bb0eb1cbf5b09 772beee89114358a"
+               " function_name\n"
+               "e165bf8023b9d9ab 1e4bb0eb1cbf5b09 67519080 0\n",
+               contents.c_str());
+}
+
+TEST(Write, RelativeLoadAddress) {
+  stringstream s;
+  Module m(MODULE_NAME, MODULE_OS, MODULE_ARCH, MODULE_ID);
+
+  // Some source files.  We will expect to see them in lexicographic order.
+  Module::File *file1 = m.FindFile("filename-b.cc");
+  Module::File *file2 = m.FindFile("filename-a.cc");
+
+  // A function.
+  Module::Function *function = new Module::Function(
+      "A_FLIBBERTIJIBBET::a_will_o_the_wisp(a clown)", 0xbec774ea5dd935f3LL);
+  function->size = 0x2922088f98d3f6fcLL;
+  function->parameter_size = 0xe5e9aa008bd5f0d0LL;
+
+  // Some source lines.  The module should not sort these.
+  Module::Line line1 = { 0xbec774ea5dd935f3LL, 0x1c2be6d6c5af2611LL,
+                         file1, 41676901 };
+  Module::Line line2 = { 0xdaf35bc123885c04LL, 0xcf621b8d324d0ebLL,
+                         file2, 67519080 };
+  function->lines.push_back(line2);
+  function->lines.push_back(line1);
+
+  m.AddFunction(function);
+
+  // Some stack information.
+  Module::StackFrameEntry *entry = new Module::StackFrameEntry();
+  entry->address = 0x30f9e5c83323973dULL;
+  entry->size = 0x49fc9ca7c7c13dc2ULL;
+  entry->initial_rules[".cfa"] = "he was a handsome man";
+  entry->initial_rules["and"] = "what i want to know is";
+  entry->rule_changes[0x30f9e5c83323973eULL]["how"] =
+    "do you like your blueeyed boy";
+  entry->rule_changes[0x30f9e5c83323973eULL]["Mister"] = "Death";
+  m.AddStackFrameEntry(entry);
+
+  // Set the load address.  Doing this after adding all the data to
+  // the module must work fine.
+  m.SetLoadAddress(0x2ab698b0b6407073LL);
+
+  m.Write(s, ALL_SYMBOL_DATA);
+  string contents = s.str();
+  EXPECT_STREQ("MODULE os-name architecture id-string name with spaces\n"
+               "FILE 0 filename-a.cc\n"
+               "FILE 1 filename-b.cc\n"
+               "FUNC 9410dc39a798c580 2922088f98d3f6fc e5e9aa008bd5f0d0"
+               " A_FLIBBERTIJIBBET::a_will_o_the_wisp(a clown)\n"
+               "b03cc3106d47eb91 cf621b8d324d0eb 67519080 0\n"
+               "9410dc39a798c580 1c2be6d6c5af2611 41676901 1\n"
+               "STACK CFI INIT 6434d177ce326ca 49fc9ca7c7c13dc2"
+               " .cfa: he was a handsome man"
+               " and: what i want to know is\n"
+               "STACK CFI 6434d177ce326cb"
+               " Mister: Death"
+               " how: do you like your blueeyed boy\n",
+               contents.c_str());
+}
+
+TEST(Write, OmitUnusedFiles) {
+  Module m(MODULE_NAME, MODULE_OS, MODULE_ARCH, MODULE_ID);
+
+  // Create some source files.
+  Module::File *file1 = m.FindFile("filename1");
+  m.FindFile("filename2");  // not used by any line
+  Module::File *file3 = m.FindFile("filename3");
+
+  // Create a function.
+  Module::Function *function = new Module::Function(
+      "function_name", 0x9b926d464f0b9384LL);
+  function->size = 0x4f524a4ba795e6a6LL;
+  function->parameter_size = 0xbbe8133a6641c9b7LL;
+
+  // Source files that refer to some files, but not others.
+  Module::Line line1 = { 0x595fa44ebacc1086LL, 0x1e1e0191b066c5b3LL,
+                         file1, 137850127 };
+  Module::Line line2 = { 0x401ce8c8a12d25e3LL, 0x895751c41b8d2ce2LL,
+                         file3, 28113549 };
+  function->lines.push_back(line1);
+  function->lines.push_back(line2);
+  m.AddFunction(function);
+
+  m.AssignSourceIds();
+
+  vector<Module::File *> vec;
+  m.GetFiles(&vec);
+  EXPECT_EQ((size_t) 3, vec.size());
+  EXPECT_STREQ("filename1", vec[0]->name.c_str());
+  EXPECT_NE(-1, vec[0]->source_id);
+  // Expect filename2 not to be used.
+  EXPECT_STREQ("filename2", vec[1]->name.c_str());
+  EXPECT_EQ(-1, vec[1]->source_id);
+  EXPECT_STREQ("filename3", vec[2]->name.c_str());
+  EXPECT_NE(-1, vec[2]->source_id);
+
+  stringstream s;
+  m.Write(s, ALL_SYMBOL_DATA);
+  string contents = s.str();
+  EXPECT_STREQ("MODULE os-name architecture id-string name with spaces\n"
+               "FILE 0 filename1\n"
+               "FILE 1 filename3\n"
+               "FUNC 9b926d464f0b9384 4f524a4ba795e6a6 bbe8133a6641c9b7"
+               " function_name\n"
+               "595fa44ebacc1086 1e1e0191b066c5b3 137850127 0\n"
+               "401ce8c8a12d25e3 895751c41b8d2ce2 28113549 1\n",
+               contents.c_str());
+}
+
+TEST(Write, NoCFI) {
+  stringstream s;
+  Module m(MODULE_NAME, MODULE_OS, MODULE_ARCH, MODULE_ID);
+
+  // Some source files.  We will expect to see them in lexicographic order.
+  Module::File *file1 = m.FindFile("filename.cc");
+
+  // A function.
+  Module::Function *function = new Module::Function(
+      "A_FLIBBERTIJIBBET::a_will_o_the_wisp(a clown)", 0xbec774ea5dd935f3LL);
+  function->size = 0x2922088f98d3f6fcLL;
+  function->parameter_size = 0xe5e9aa008bd5f0d0LL;
+
+  // Some source lines.  The module should not sort these.
+  Module::Line line1 = { 0xbec774ea5dd935f3LL, 0x1c2be6d6c5af2611LL,
+                         file1, 41676901 };
+  function->lines.push_back(line1);
+
+  m.AddFunction(function);
+
+  // Some stack information.
+  Module::StackFrameEntry *entry = new Module::StackFrameEntry();
+  entry->address = 0x30f9e5c83323973dULL;
+  entry->size = 0x49fc9ca7c7c13dc2ULL;
+  entry->initial_rules[".cfa"] = "he was a handsome man";
+  entry->initial_rules["and"] = "what i want to know is";
+  entry->rule_changes[0x30f9e5c83323973eULL]["how"] =
+    "do you like your blueeyed boy";
+  entry->rule_changes[0x30f9e5c83323973eULL]["Mister"] = "Death";
+  m.AddStackFrameEntry(entry);
+
+  // Set the load address.  Doing this after adding all the data to
+  // the module must work fine.
+  m.SetLoadAddress(0x2ab698b0b6407073LL);
+
+  m.Write(s, NO_CFI);
+  string contents = s.str();
+  EXPECT_STREQ("MODULE os-name architecture id-string name with spaces\n"
+               "FILE 0 filename.cc\n"
+               "FUNC 9410dc39a798c580 2922088f98d3f6fc e5e9aa008bd5f0d0"
+               " A_FLIBBERTIJIBBET::a_will_o_the_wisp(a clown)\n"
+               "9410dc39a798c580 1c2be6d6c5af2611 41676901 0\n",
+               contents.c_str());
+}
+
+TEST(Construct, AddFunctions) {
+  stringstream s;
+  Module m(MODULE_NAME, MODULE_OS, MODULE_ARCH, MODULE_ID);
+
+  // Two functions.
+  Module::Function *function1 = new Module::Function(
+      "_without_form", 0xd35024aa7ca7da5cLL);
+  function1->size = 0x200b26e605f99071LL;
+  function1->parameter_size = 0xf14ac4fed48c4a99LL;
+
+  Module::Function *function2 = new Module::Function(
+      "_and_void", 0x2987743d0b35b13fLL);
+  function2->size = 0xb369db048deb3010LL;
+  function2->parameter_size = 0x938e556cb5a79988LL;
+
+  // Put them in a vector.
+  vector<Module::Function *> vec;
+  vec.push_back(function1);
+  vec.push_back(function2);
+
+  m.AddFunctions(vec.begin(), vec.end());
+
+  m.Write(s, ALL_SYMBOL_DATA);
+  string contents = s.str();
+  EXPECT_STREQ("MODULE os-name architecture id-string name with spaces\n"
+               "FUNC 2987743d0b35b13f b369db048deb3010 938e556cb5a79988"
+               " _and_void\n"
+               "FUNC d35024aa7ca7da5c 200b26e605f99071 f14ac4fed48c4a99"
+               " _without_form\n",
+               contents.c_str());
+
+  // Check that m.GetFunctions returns the functions we expect.
+  vec.clear();
+  m.GetFunctions(&vec, vec.end());
+  EXPECT_TRUE(vec.end() != find(vec.begin(), vec.end(), function1));
+  EXPECT_TRUE(vec.end() != find(vec.begin(), vec.end(), function2));
+  EXPECT_EQ((size_t) 2, vec.size());
+}
+
+TEST(Construct, AddFrames) {
+  stringstream s;
+  Module m(MODULE_NAME, MODULE_OS, MODULE_ARCH, MODULE_ID);
+
+  // First STACK CFI entry, with no initial rules or deltas.
+  Module::StackFrameEntry *entry1 = new Module::StackFrameEntry();
+  entry1->address = 0xddb5f41285aa7757ULL;
+  entry1->size = 0x1486493370dc5073ULL;
+  m.AddStackFrameEntry(entry1);
+
+  // Second STACK CFI entry, with initial rules but no deltas.
+  Module::StackFrameEntry *entry2 = new Module::StackFrameEntry();
+  entry2->address = 0x8064f3af5e067e38ULL;
+  entry2->size = 0x0de2a5ee55509407ULL;
+  entry2->initial_rules[".cfa"] = "I think that I shall never see";
+  entry2->initial_rules["stromboli"] = "a poem lovely as a tree";
+  entry2->initial_rules["cannoli"] = "a tree whose hungry mouth is prest";
+  m.AddStackFrameEntry(entry2);
+
+  // Third STACK CFI entry, with initial rules and deltas.
+  Module::StackFrameEntry *entry3 = new Module::StackFrameEntry();
+  entry3->address = 0x5e8d0db0a7075c6cULL;
+  entry3->size = 0x1c7edb12a7aea229ULL;
+  entry3->initial_rules[".cfa"] = "Whose woods are these";
+  entry3->rule_changes[0x47ceb0f63c269d7fULL]["calzone"] =
+    "the village though";
+  entry3->rule_changes[0x47ceb0f63c269d7fULL]["cannoli"] =
+    "he will not see me stopping here";
+  entry3->rule_changes[0x36682fad3763ffffULL]["stromboli"] =
+    "his house is in";
+  entry3->rule_changes[0x36682fad3763ffffULL][".cfa"] =
+    "I think I know";
+  m.AddStackFrameEntry(entry3);
+
+  // Check that Write writes STACK CFI records properly.
+  m.Write(s, ALL_SYMBOL_DATA);
+  string contents = s.str();
+  EXPECT_STREQ("MODULE os-name architecture id-string name with spaces\n"
+               "STACK CFI INIT ddb5f41285aa7757 1486493370dc5073 \n"
+               "STACK CFI INIT 8064f3af5e067e38 de2a5ee55509407"
+               " .cfa: I think that I shall never see"
+               " cannoli: a tree whose hungry mouth is prest"
+               " stromboli: a poem lovely as a tree\n"
+               "STACK CFI INIT 5e8d0db0a7075c6c 1c7edb12a7aea229"
+               " .cfa: Whose woods are these\n"
+               "STACK CFI 36682fad3763ffff"
+               " .cfa: I think I know"
+               " stromboli: his house is in\n"
+               "STACK CFI 47ceb0f63c269d7f"
+               " calzone: the village though"
+               " cannoli: he will not see me stopping here\n",
+               contents.c_str());
+
+  // Check that GetStackFrameEntries works.
+  vector<Module::StackFrameEntry *> entries;
+  m.GetStackFrameEntries(&entries);
+  ASSERT_EQ(3U, entries.size());
+  // Check first entry.
+  EXPECT_EQ(0xddb5f41285aa7757ULL, entries[0]->address);
+  EXPECT_EQ(0x1486493370dc5073ULL, entries[0]->size);
+  ASSERT_EQ(0U, entries[0]->initial_rules.size());
+  ASSERT_EQ(0U, entries[0]->rule_changes.size());
+  // Check second entry.
+  EXPECT_EQ(0x8064f3af5e067e38ULL, entries[1]->address);
+  EXPECT_EQ(0x0de2a5ee55509407ULL, entries[1]->size);
+  ASSERT_EQ(3U, entries[1]->initial_rules.size());
+  Module::RuleMap entry2_initial;
+  entry2_initial[".cfa"] = "I think that I shall never see";
+  entry2_initial["stromboli"] = "a poem lovely as a tree";
+  entry2_initial["cannoli"] = "a tree whose hungry mouth is prest";
+  EXPECT_THAT(entries[1]->initial_rules, ContainerEq(entry2_initial));
+  ASSERT_EQ(0U, entries[1]->rule_changes.size());
+  // Check third entry.
+  EXPECT_EQ(0x5e8d0db0a7075c6cULL, entries[2]->address);
+  EXPECT_EQ(0x1c7edb12a7aea229ULL, entries[2]->size);
+  Module::RuleMap entry3_initial;
+  entry3_initial[".cfa"] = "Whose woods are these";
+  EXPECT_THAT(entries[2]->initial_rules, ContainerEq(entry3_initial));
+  Module::RuleChangeMap entry3_changes;
+  entry3_changes[0x36682fad3763ffffULL][".cfa"] = "I think I know";
+  entry3_changes[0x36682fad3763ffffULL]["stromboli"] = "his house is in";
+  entry3_changes[0x47ceb0f63c269d7fULL]["calzone"] = "the village though";
+  entry3_changes[0x47ceb0f63c269d7fULL]["cannoli"] =
+    "he will not see me stopping here";
+  EXPECT_THAT(entries[2]->rule_changes, ContainerEq(entry3_changes));
+}
+
+TEST(Construct, UniqueFiles) {
+  Module m(MODULE_NAME, MODULE_OS, MODULE_ARCH, MODULE_ID);
+  Module::File *file1 = m.FindFile("foo");
+  Module::File *file2 = m.FindFile(string("bar"));
+  Module::File *file3 = m.FindFile(string("foo"));
+  Module::File *file4 = m.FindFile("bar");
+  EXPECT_NE(file1, file2);
+  EXPECT_EQ(file1, file3);
+  EXPECT_EQ(file2, file4);
+  EXPECT_EQ(file1, m.FindExistingFile("foo"));
+  EXPECT_TRUE(m.FindExistingFile("baz") == NULL);
+}
+
+TEST(Construct, DuplicateFunctions) {
+  stringstream s;
+  Module m(MODULE_NAME, MODULE_OS, MODULE_ARCH, MODULE_ID);
+
+  // Two functions.
+  Module::Function *function1 = generate_duplicate_function("_without_form");
+  Module::Function *function2 = generate_duplicate_function("_without_form");
+
+  m.AddFunction(function1);
+  m.AddFunction(function2);
+
+  m.Write(s, ALL_SYMBOL_DATA);
+  string contents = s.str();
+  EXPECT_STREQ("MODULE os-name architecture id-string name with spaces\n"
+               "FUNC d35402aac7a7ad5c 200b26e605f99071 f14ac4fed48c4a99"
+               " _without_form\n",
+               contents.c_str());
+}
+
+TEST(Construct, FunctionsWithSameAddress) {
+  stringstream s;
+  Module m(MODULE_NAME, MODULE_OS, MODULE_ARCH, MODULE_ID);
+
+  // Two functions.
+  Module::Function *function1 = generate_duplicate_function("_without_form");
+  Module::Function *function2 = generate_duplicate_function("_and_void");
+
+  m.AddFunction(function1);
+  m.AddFunction(function2);
+
+  m.Write(s, ALL_SYMBOL_DATA);
+  string contents = s.str();
+  EXPECT_STREQ("MODULE os-name architecture id-string name with spaces\n"
+               "FUNC d35402aac7a7ad5c 200b26e605f99071 f14ac4fed48c4a99"
+               " _and_void\n"
+               "FUNC d35402aac7a7ad5c 200b26e605f99071 f14ac4fed48c4a99"
+               " _without_form\n",
+               contents.c_str());
+}
+
+// Externs should be written out as PUBLIC records, sorted by
+// address.
+TEST(Construct, Externs) {
+  stringstream s;
+  Module m(MODULE_NAME, MODULE_OS, MODULE_ARCH, MODULE_ID);
+
+  // Two externs.
+  Module::Extern *extern1 = new Module::Extern(0xffff);
+  extern1->name = "_abc";
+  Module::Extern *extern2 = new Module::Extern(0xaaaa);
+  extern2->name = "_xyz";
+
+  m.AddExtern(extern1);
+  m.AddExtern(extern2);
+
+  m.Write(s, ALL_SYMBOL_DATA);
+  string contents = s.str();
+
+  EXPECT_STREQ("MODULE " MODULE_OS " " MODULE_ARCH " "
+               MODULE_ID " " MODULE_NAME "\n"
+               "PUBLIC aaaa 0 _xyz\n"
+               "PUBLIC ffff 0 _abc\n",
+               contents.c_str());
+}
+
+// Externs with the same address should only keep the first entry
+// added.
+TEST(Construct, DuplicateExterns) {
+  stringstream s;
+  Module m(MODULE_NAME, MODULE_OS, MODULE_ARCH, MODULE_ID);
+
+  // Two externs.
+  Module::Extern *extern1 = new Module::Extern(0xffff);
+  extern1->name = "_xyz";
+  Module::Extern *extern2 = new Module::Extern(0xffff);
+  extern2->name = "_abc";
+
+  m.AddExtern(extern1);
+  m.AddExtern(extern2);
+
+  m.Write(s, ALL_SYMBOL_DATA);
+  string contents = s.str();
+
+  EXPECT_STREQ("MODULE " MODULE_OS " " MODULE_ARCH " "
+               MODULE_ID " " MODULE_NAME "\n"
+               "PUBLIC ffff 0 _xyz\n",
+               contents.c_str());
+}
+
+// If there exists an extern and a function at the same address, only write
+// out the FUNC entry.
+TEST(Construct, FunctionsAndExternsWithSameAddress) {
+  stringstream s;
+  Module m(MODULE_NAME, MODULE_OS, MODULE_ARCH, MODULE_ID);
+
+  // Two externs.
+  Module::Extern* extern1 = new Module::Extern(0xabc0);
+  extern1->name = "abc";
+  Module::Extern* extern2 = new Module::Extern(0xfff0);
+  extern2->name = "xyz";
+
+  m.AddExtern(extern1);
+  m.AddExtern(extern2);
+
+  Module::Function* function = new Module::Function("_xyz", 0xfff0);
+  function->size = 0x10;
+  function->parameter_size = 0;
+  m.AddFunction(function);
+
+  m.Write(s, ALL_SYMBOL_DATA);
+  string contents = s.str();
+
+  EXPECT_STREQ("MODULE " MODULE_OS " " MODULE_ARCH " "
+               MODULE_ID " " MODULE_NAME "\n"
+               "FUNC fff0 10 0 _xyz\n"
+               "PUBLIC abc0 0 abc\n",
+               contents.c_str());
+}
+
+// If there exists an extern and a function at the same address, only write
+// out the FUNC entry. For ARM THUMB, the extern that comes from the ELF
+// symbol section has bit 0 set.
+TEST(Construct, FunctionsAndThumbExternsWithSameAddress) {
+  stringstream s;
+  Module m(MODULE_NAME, MODULE_OS, "arm", MODULE_ID);
+
+  // Two THUMB externs.
+  Module::Extern* thumb_extern1 = new Module::Extern(0xabc1);
+  thumb_extern1->name = "thumb_abc";
+  Module::Extern* thumb_extern2 = new Module::Extern(0xfff1);
+  thumb_extern2->name = "thumb_xyz";
+
+  Module::Extern* arm_extern1 = new Module::Extern(0xcc00);
+  arm_extern1->name = "arm_func";
+
+  m.AddExtern(thumb_extern1);
+  m.AddExtern(thumb_extern2);
+  m.AddExtern(arm_extern1);
+
+  // The corresponding function from the DWARF debug data have the actual
+  // address.
+  Module::Function* function = new Module::Function("_thumb_xyz", 0xfff0);
+  function->size = 0x10;
+  function->parameter_size = 0;
+  m.AddFunction(function);
+
+  m.Write(s, ALL_SYMBOL_DATA);
+  string contents = s.str();
+
+  EXPECT_STREQ("MODULE " MODULE_OS " arm "
+               MODULE_ID " " MODULE_NAME "\n"
+               "FUNC fff0 10 0 _thumb_xyz\n"
+               "PUBLIC abc1 0 thumb_abc\n"
+               "PUBLIC cc00 0 arm_func\n",
+               contents.c_str());
+}
diff --git a/google-breakpad/src/common/scoped_ptr.h b/google-breakpad/src/common/scoped_ptr.h
new file mode 100644
index 0000000..d137c18
--- /dev/null
+++ b/google-breakpad/src/common/scoped_ptr.h
@@ -0,0 +1,404 @@
+// Copyright 2013 Google Inc. All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Scopers help you manage ownership of a pointer, helping you easily manage the
+// a pointer within a scope, and automatically destroying the pointer at the
+// end of a scope.  There are two main classes you will use, which correspond
+// to the operators new/delete and new[]/delete[].
+//
+// Example usage (scoped_ptr):
+//   {
+//     scoped_ptr<Foo> foo(new Foo("wee"));
+//   }  // foo goes out of scope, releasing the pointer with it.
+//
+//   {
+//     scoped_ptr<Foo> foo;          // No pointer managed.
+//     foo.reset(new Foo("wee"));    // Now a pointer is managed.
+//     foo.reset(new Foo("wee2"));   // Foo("wee") was destroyed.
+//     foo.reset(new Foo("wee3"));   // Foo("wee2") was destroyed.
+//     foo->Method();                // Foo::Method() called.
+//     foo.get()->Method();          // Foo::Method() called.
+//     SomeFunc(foo.release());      // SomeFunc takes ownership, foo no longer
+//                                   // manages a pointer.
+//     foo.reset(new Foo("wee4"));   // foo manages a pointer again.
+//     foo.reset();                  // Foo("wee4") destroyed, foo no longer
+//                                   // manages a pointer.
+//   }  // foo wasn't managing a pointer, so nothing was destroyed.
+//
+// Example usage (scoped_array):
+//   {
+//     scoped_array<Foo> foo(new Foo[100]);
+//     foo.get()->Method();  // Foo::Method on the 0th element.
+//     foo[10].Method();     // Foo::Method on the 10th element.
+//   }
+
+#ifndef COMMON_SCOPED_PTR_H_
+#define COMMON_SCOPED_PTR_H_
+
+// This is an implementation designed to match the anticipated future TR2
+// implementation of the scoped_ptr class, and its closely-related brethren,
+// scoped_array, scoped_ptr_malloc.
+
+#include <assert.h>
+#include <stddef.h>
+#include <stdlib.h>
+
+namespace google_breakpad {
+
+// A scoped_ptr<T> is like a T*, except that the destructor of scoped_ptr<T>
+// automatically deletes the pointer it holds (if any).
+// That is, scoped_ptr<T> owns the T object that it points to.
+// Like a T*, a scoped_ptr<T> may hold either NULL or a pointer to a T object.
+// Also like T*, scoped_ptr<T> is thread-compatible, and once you
+// dereference it, you get the threadsafety guarantees of T.
+//
+// The size of a scoped_ptr is small:
+// sizeof(scoped_ptr<C>) == sizeof(C*)
+template <class C>
+class scoped_ptr {
+ public:
+
+  // The element type
+  typedef C element_type;
+
+  // Constructor.  Defaults to initializing with NULL.
+  // There is no way to create an uninitialized scoped_ptr.
+  // The input parameter must be allocated with new.
+  explicit scoped_ptr(C* p = NULL) : ptr_(p) { }
+
+  // Destructor.  If there is a C object, delete it.
+  // We don't need to test ptr_ == NULL because C++ does that for us.
+  ~scoped_ptr() {
+    enum { type_must_be_complete = sizeof(C) };
+    delete ptr_;
+  }
+
+  // Reset.  Deletes the current owned object, if any.
+  // Then takes ownership of a new object, if given.
+  // this->reset(this->get()) works.
+  void reset(C* p = NULL) {
+    if (p != ptr_) {
+      enum { type_must_be_complete = sizeof(C) };
+      delete ptr_;
+      ptr_ = p;
+    }
+  }
+
+  // Accessors to get the owned object.
+  // operator* and operator-> will assert() if there is no current object.
+  C& operator*() const {
+    assert(ptr_ != NULL);
+    return *ptr_;
+  }
+  C* operator->() const  {
+    assert(ptr_ != NULL);
+    return ptr_;
+  }
+  C* get() const { return ptr_; }
+
+  // Comparison operators.
+  // These return whether two scoped_ptr refer to the same object, not just to
+  // two different but equal objects.
+  bool operator==(C* p) const { return ptr_ == p; }
+  bool operator!=(C* p) const { return ptr_ != p; }
+
+  // Swap two scoped pointers.
+  void swap(scoped_ptr& p2) {
+    C* tmp = ptr_;
+    ptr_ = p2.ptr_;
+    p2.ptr_ = tmp;
+  }
+
+  // Release a pointer.
+  // The return value is the current pointer held by this object.
+  // If this object holds a NULL pointer, the return value is NULL.
+  // After this operation, this object will hold a NULL pointer,
+  // and will not own the object any more.
+  C* release() {
+    C* retVal = ptr_;
+    ptr_ = NULL;
+    return retVal;
+  }
+
+ private:
+  C* ptr_;
+
+  // Forbid comparison of scoped_ptr types.  If C2 != C, it totally doesn't
+  // make sense, and if C2 == C, it still doesn't make sense because you should
+  // never have the same object owned by two different scoped_ptrs.
+  template <class C2> bool operator==(scoped_ptr<C2> const& p2) const;
+  template <class C2> bool operator!=(scoped_ptr<C2> const& p2) const;
+
+  // Disallow evil constructors
+  scoped_ptr(const scoped_ptr&);
+  void operator=(const scoped_ptr&);
+};
+
+// Free functions
+template <class C>
+void swap(scoped_ptr<C>& p1, scoped_ptr<C>& p2) {
+  p1.swap(p2);
+}
+
+template <class C>
+bool operator==(C* p1, const scoped_ptr<C>& p2) {
+  return p1 == p2.get();
+}
+
+template <class C>
+bool operator!=(C* p1, const scoped_ptr<C>& p2) {
+  return p1 != p2.get();
+}
+
+// scoped_array<C> is like scoped_ptr<C>, except that the caller must allocate
+// with new [] and the destructor deletes objects with delete [].
+//
+// As with scoped_ptr<C>, a scoped_array<C> either points to an object
+// or is NULL.  A scoped_array<C> owns the object that it points to.
+// scoped_array<T> is thread-compatible, and once you index into it,
+// the returned objects have only the threadsafety guarantees of T.
+//
+// Size: sizeof(scoped_array<C>) == sizeof(C*)
+template <class C>
+class scoped_array {
+ public:
+
+  // The element type
+  typedef C element_type;
+
+  // Constructor.  Defaults to intializing with NULL.
+  // There is no way to create an uninitialized scoped_array.
+  // The input parameter must be allocated with new [].
+  explicit scoped_array(C* p = NULL) : array_(p) { }
+
+  // Destructor.  If there is a C object, delete it.
+  // We don't need to test ptr_ == NULL because C++ does that for us.
+  ~scoped_array() {
+    enum { type_must_be_complete = sizeof(C) };
+    delete[] array_;
+  }
+
+  // Reset.  Deletes the current owned object, if any.
+  // Then takes ownership of a new object, if given.
+  // this->reset(this->get()) works.
+  void reset(C* p = NULL) {
+    if (p != array_) {
+      enum { type_must_be_complete = sizeof(C) };
+      delete[] array_;
+      array_ = p;
+    }
+  }
+
+  // Get one element of the current object.
+  // Will assert() if there is no current object, or index i is negative.
+  C& operator[](ptrdiff_t i) const {
+    assert(i >= 0);
+    assert(array_ != NULL);
+    return array_[i];
+  }
+
+  // Get a pointer to the zeroth element of the current object.
+  // If there is no current object, return NULL.
+  C* get() const {
+    return array_;
+  }
+
+  // Comparison operators.
+  // These return whether two scoped_array refer to the same object, not just to
+  // two different but equal objects.
+  bool operator==(C* p) const { return array_ == p; }
+  bool operator!=(C* p) const { return array_ != p; }
+
+  // Swap two scoped arrays.
+  void swap(scoped_array& p2) {
+    C* tmp = array_;
+    array_ = p2.array_;
+    p2.array_ = tmp;
+  }
+
+  // Release an array.
+  // The return value is the current pointer held by this object.
+  // If this object holds a NULL pointer, the return value is NULL.
+  // After this operation, this object will hold a NULL pointer,
+  // and will not own the object any more.
+  C* release() {
+    C* retVal = array_;
+    array_ = NULL;
+    return retVal;
+  }
+
+ private:
+  C* array_;
+
+  // Forbid comparison of different scoped_array types.
+  template <class C2> bool operator==(scoped_array<C2> const& p2) const;
+  template <class C2> bool operator!=(scoped_array<C2> const& p2) const;
+
+  // Disallow evil constructors
+  scoped_array(const scoped_array&);
+  void operator=(const scoped_array&);
+};
+
+// Free functions
+template <class C>
+void swap(scoped_array<C>& p1, scoped_array<C>& p2) {
+  p1.swap(p2);
+}
+
+template <class C>
+bool operator==(C* p1, const scoped_array<C>& p2) {
+  return p1 == p2.get();
+}
+
+template <class C>
+bool operator!=(C* p1, const scoped_array<C>& p2) {
+  return p1 != p2.get();
+}
+
+// This class wraps the c library function free() in a class that can be
+// passed as a template argument to scoped_ptr_malloc below.
+class ScopedPtrMallocFree {
+ public:
+  inline void operator()(void* x) const {
+    free(x);
+  }
+};
+
+// scoped_ptr_malloc<> is similar to scoped_ptr<>, but it accepts a
+// second template argument, the functor used to free the object.
+
+template<class C, class FreeProc = ScopedPtrMallocFree>
+class scoped_ptr_malloc {
+ public:
+
+  // The element type
+  typedef C element_type;
+
+  // Constructor.  Defaults to initializing with NULL.
+  // There is no way to create an uninitialized scoped_ptr.
+  // The input parameter must be allocated with an allocator that matches the
+  // Free functor.  For the default Free functor, this is malloc, calloc, or
+  // realloc.
+  explicit scoped_ptr_malloc(C* p = NULL): ptr_(p) {}
+
+  // Destructor.  If there is a C object, call the Free functor.
+  ~scoped_ptr_malloc() {
+    reset();
+  }
+
+  // Reset.  Calls the Free functor on the current owned object, if any.
+  // Then takes ownership of a new object, if given.
+  // this->reset(this->get()) works.
+  void reset(C* p = NULL) {
+    if (ptr_ != p) {
+      FreeProc free_proc;
+      free_proc(ptr_);
+      ptr_ = p;
+    }
+  }
+
+  // Get the current object.
+  // operator* and operator-> will cause an assert() failure if there is
+  // no current object.
+  C& operator*() const {
+    assert(ptr_ != NULL);
+    return *ptr_;
+  }
+
+  C* operator->() const {
+    assert(ptr_ != NULL);
+    return ptr_;
+  }
+
+  C* get() const {
+    return ptr_;
+  }
+
+  // Comparison operators.
+  // These return whether a scoped_ptr_malloc and a plain pointer refer
+  // to the same object, not just to two different but equal objects.
+  // For compatibility with the boost-derived implementation, these
+  // take non-const arguments.
+  bool operator==(C* p) const {
+    return ptr_ == p;
+  }
+
+  bool operator!=(C* p) const {
+    return ptr_ != p;
+  }
+
+  // Swap two scoped pointers.
+  void swap(scoped_ptr_malloc & b) {
+    C* tmp = b.ptr_;
+    b.ptr_ = ptr_;
+    ptr_ = tmp;
+  }
+
+  // Release a pointer.
+  // The return value is the current pointer held by this object.
+  // If this object holds a NULL pointer, the return value is NULL.
+  // After this operation, this object will hold a NULL pointer,
+  // and will not own the object any more.
+  C* release() {
+    C* tmp = ptr_;
+    ptr_ = NULL;
+    return tmp;
+  }
+
+ private:
+  C* ptr_;
+
+  // no reason to use these: each scoped_ptr_malloc should have its own object
+  template <class C2, class GP>
+  bool operator==(scoped_ptr_malloc<C2, GP> const& p) const;
+  template <class C2, class GP>
+  bool operator!=(scoped_ptr_malloc<C2, GP> const& p) const;
+
+  // Disallow evil constructors
+  scoped_ptr_malloc(const scoped_ptr_malloc&);
+  void operator=(const scoped_ptr_malloc&);
+};
+
+template<class C, class FP> inline
+void swap(scoped_ptr_malloc<C, FP>& a, scoped_ptr_malloc<C, FP>& b) {
+  a.swap(b);
+}
+
+template<class C, class FP> inline
+bool operator==(C* p, const scoped_ptr_malloc<C, FP>& b) {
+  return p == b.get();
+}
+
+template<class C, class FP> inline
+bool operator!=(C* p, const scoped_ptr_malloc<C, FP>& b) {
+  return p != b.get();
+}
+
+}  // namespace google_breakpad
+
+#endif  // COMMON_SCOPED_PTR_H_
diff --git a/google-breakpad/src/common/simple_string_dictionary.cc b/google-breakpad/src/common/simple_string_dictionary.cc
new file mode 100644
index 0000000..e0a74ce
--- /dev/null
+++ b/google-breakpad/src/common/simple_string_dictionary.cc
@@ -0,0 +1,45 @@
+// Copyright (c) 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include "common/simple_string_dictionary.h"
+
+namespace google_breakpad {
+
+namespace {
+
+// In C++98 (ISO 14882), section 9.5.1 says that a union cannot have a member
+// with a non-trivial ctor, copy ctor, dtor, or assignment operator. Use this
+// property to ensure that Entry remains POD.
+union Compile_Assert {
+  NonAllocatingMap<1, 1, 1>::Entry Compile_Assert__entry_must_be_pod;
+};
+
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/common/simple_string_dictionary.h b/google-breakpad/src/common/simple_string_dictionary.h
new file mode 100644
index 0000000..d2ab17f
--- /dev/null
+++ b/google-breakpad/src/common/simple_string_dictionary.h
@@ -0,0 +1,260 @@
+// Copyright (c) 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef COMMON_SIMPLE_STRING_DICTIONARY_H_
+#define COMMON_SIMPLE_STRING_DICTIONARY_H_
+
+#include <assert.h>
+#include <string.h>
+
+#include "common/basictypes.h"
+
+namespace google_breakpad {
+
+// Opaque type for the serialized representation of a NonAllocatingMap. One is
+// created in NonAllocatingMap::Serialize and can be deserialized using one of
+// the constructors.
+struct SerializedNonAllocatingMap;
+
+// NonAllocatingMap is an implementation of a map/dictionary collection that
+// uses a fixed amount of storage, so that it does not perform any dynamic
+// allocations for its operations.
+//
+// The actual map storage (the Entry) is guaranteed to be POD, so that it can
+// be transmitted over various IPC mechanisms.
+//
+// The template parameters control the amount of storage used for the key,
+// value, and map. The KeySize and ValueSize are measured in bytes, not glyphs,
+// and includes space for a \0 byte. This gives space for KeySize-1 and
+// ValueSize-1 characters in an entry. NumEntries is the total number of
+// entries that will fit in the map.
+template <size_t KeySize, size_t ValueSize, size_t NumEntries>
+class NonAllocatingMap {
+ public:
+  // Constant and publicly accessible versions of the template parameters.
+  static const size_t key_size = KeySize;
+  static const size_t value_size = ValueSize;
+  static const size_t num_entries = NumEntries;
+
+  // An Entry object is a single entry in the map. If the key is a 0-length
+  // NUL-terminated string, the entry is empty.
+  struct Entry {
+    char key[KeySize];
+    char value[ValueSize];
+
+    bool is_active() const {
+      return key[0] != '\0';
+    }
+  };
+
+  // An Iterator can be used to iterate over all the active entries in a
+  // NonAllocatingMap.
+  class Iterator {
+   public:
+    explicit Iterator(const NonAllocatingMap& map)
+        : map_(map),
+          current_(0) {
+    }
+
+    // Returns the next entry in the map, or NULL if at the end of the
+    // collection.
+    const Entry* Next() {
+      while (current_ < map_.num_entries) {
+        const Entry* entry = &map_.entries_[current_++];
+        if (entry->is_active()) {
+          return entry;
+        }
+      }
+      return NULL;
+    }
+
+   private:
+    const NonAllocatingMap& map_;
+    size_t current_;
+
+    DISALLOW_COPY_AND_ASSIGN(Iterator);
+  };
+
+  NonAllocatingMap() : entries_() {
+  }
+
+  NonAllocatingMap(const NonAllocatingMap& other) {
+    *this = other;
+  }
+
+  NonAllocatingMap& operator=(const NonAllocatingMap& other) {
+    assert(other.key_size == key_size);
+    assert(other.value_size == value_size);
+    assert(other.num_entries == num_entries);
+    if (other.key_size == key_size && other.value_size == value_size &&
+        other.num_entries == num_entries) {
+      memcpy(entries_, other.entries_, sizeof(entries_));
+    }
+    return *this;
+  }
+
+  // Constructs a map from its serialized form. |map| should be the out
+  // parameter from Serialize() and |size| should be its return value.
+  NonAllocatingMap(const SerializedNonAllocatingMap* map, size_t size) {
+    assert(size == sizeof(entries_));
+    if (size == sizeof(entries_)) {
+      memcpy(entries_, map, size);
+    }
+  }
+
+  // Returns the number of active key/value pairs. The upper limit for this
+  // is NumEntries.
+  size_t GetCount() const {
+    size_t count = 0;
+    for (size_t i = 0; i < num_entries; ++i) {
+      if (entries_[i].is_active()) {
+        ++count;
+      }
+    }
+    return count;
+  }
+
+  // Given |key|, returns its corresponding |value|. |key| must not be NULL. If
+  // the key is not found, NULL is returned.
+  const char* GetValueForKey(const char* key) const {
+    assert(key);
+    if (!key)
+      return NULL;
+
+    const Entry* entry = GetConstEntryForKey(key);
+    if (!entry)
+      return NULL;
+
+    return entry->value;
+  }
+
+  // Stores |value| into |key|, replacing the existing value if |key| is
+  // already present. |key| must not be NULL. If |value| is NULL, the key is
+  // removed from the map. If there is no more space in the map, then the
+  // operation silently fails.
+  void SetKeyValue(const char* key, const char* value) {
+    if (!value) {
+      RemoveKey(key);
+      return;
+    }
+
+    assert(key);
+    if (!key)
+      return;
+
+    // Key must not be an empty string.
+    assert(key[0] != '\0');
+    if (key[0] == '\0')
+      return;
+
+    Entry* entry = GetEntryForKey(key);
+
+    // If it does not yet exist, attempt to insert it.
+    if (!entry) {
+      for (size_t i = 0; i < num_entries; ++i) {
+        if (!entries_[i].is_active()) {
+          entry = &entries_[i];
+
+          strncpy(entry->key, key, key_size);
+          entry->key[key_size - 1] = '\0';
+
+          break;
+        }
+      }
+    }
+
+    // If the map is out of space, entry will be NULL.
+    if (!entry)
+      return;
+
+#ifndef NDEBUG
+    // Sanity check that the key only appears once.
+    int count = 0;
+    for (size_t i = 0; i < num_entries; ++i) {
+      if (strncmp(entries_[i].key, key, key_size) == 0)
+        ++count;
+    }
+    assert(count == 1);
+#endif
+
+    strncpy(entry->value, value, value_size);
+    entry->value[value_size - 1] = '\0';
+  }
+
+  // Given |key|, removes any associated value. |key| must not be NULL. If
+  // the key is not found, this is a noop.
+  void RemoveKey(const char* key) {
+    assert(key);
+    if (!key)
+      return;
+
+    Entry* entry = GetEntryForKey(key);
+    if (entry) {
+      entry->key[0] = '\0';
+      entry->value[0] = '\0';
+    }
+
+#ifndef NDEBUG
+    assert(GetEntryForKey(key) == NULL);
+#endif
+  }
+
+  // Places a serialized version of the map into |map| and returns the size.
+  // Both of these should be passed to the deserializing constructor. Note that
+  // the serialized |map| is scoped to the lifetime of the non-serialized
+  // instance of this class. The |map| can be copied across IPC boundaries.
+  size_t Serialize(const SerializedNonAllocatingMap** map) const {
+    *map = reinterpret_cast<const SerializedNonAllocatingMap*>(entries_);
+    return sizeof(entries_);
+  }
+
+ private:
+  const Entry* GetConstEntryForKey(const char* key) const {
+    for (size_t i = 0; i < num_entries; ++i) {
+      if (strncmp(key, entries_[i].key, key_size) == 0) {
+        return &entries_[i];
+      }
+    }
+    return NULL;
+  }
+
+  Entry* GetEntryForKey(const char* key) {
+    return const_cast<Entry*>(GetConstEntryForKey(key));
+  }
+
+  Entry entries_[NumEntries];
+};
+
+// For historical reasons this specialized version is available with the same
+// size factors as a previous implementation.
+typedef NonAllocatingMap<256, 256, 64> SimpleStringDictionary;
+
+}  // namespace google_breakpad
+
+#endif  // COMMON_SIMPLE_STRING_DICTIONARY_H_
diff --git a/google-breakpad/src/common/simple_string_dictionary_unittest.cc b/google-breakpad/src/common/simple_string_dictionary_unittest.cc
new file mode 100644
index 0000000..34f4b9e
--- /dev/null
+++ b/google-breakpad/src/common/simple_string_dictionary_unittest.cc
@@ -0,0 +1,308 @@
+// Copyright (c) 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include "breakpad_googletest_includes.h"
+#include "common/simple_string_dictionary.h"
+
+namespace google_breakpad {
+
+TEST(NonAllocatingMapTest, Entry) {
+  typedef NonAllocatingMap<5, 9, 15> TestMap;
+  TestMap map;
+
+  const TestMap::Entry* entry = TestMap::Iterator(map).Next();
+  EXPECT_FALSE(entry);
+
+  // Try setting a key/value and then verify.
+  map.SetKeyValue("key1", "value1");
+  entry = TestMap::Iterator(map).Next();
+  ASSERT_TRUE(entry);
+  EXPECT_STREQ(entry->key, "key1");
+  EXPECT_STREQ(entry->value, "value1");
+
+  // Try setting a new value.
+  map.SetKeyValue("key1", "value3");
+  EXPECT_STREQ(entry->value, "value3");
+
+  // Make sure the key didn't change.
+  EXPECT_STREQ(entry->key, "key1");
+
+  // Clear the entry and verify the key and value are empty strings.
+  map.RemoveKey("key1");
+  EXPECT_FALSE(entry->is_active());
+  EXPECT_EQ(strlen(entry->key), 0u);
+  EXPECT_EQ(strlen(entry->value), 0u);
+}
+
+TEST(NonAllocatingMapTest, SimpleStringDictionary) {
+  // Make a new dictionary
+  SimpleStringDictionary dict;
+
+  // Set three distinct values on three keys
+  dict.SetKeyValue("key1", "value1");
+  dict.SetKeyValue("key2", "value2");
+  dict.SetKeyValue("key3", "value3");
+
+  EXPECT_NE(dict.GetValueForKey("key1"), "value1");
+  EXPECT_NE(dict.GetValueForKey("key2"), "value2");
+  EXPECT_NE(dict.GetValueForKey("key3"), "value3");
+  EXPECT_EQ(dict.GetCount(), 3u);
+  // try an unknown key
+  EXPECT_FALSE(dict.GetValueForKey("key4"));
+
+  // Remove a key
+  dict.RemoveKey("key3");
+
+  // Now make sure it's not there anymore
+  EXPECT_FALSE(dict.GetValueForKey("key3"));
+
+  // Remove by setting value to NULL
+  dict.SetKeyValue("key2", NULL);
+
+  // Now make sure it's not there anymore
+  EXPECT_FALSE(dict.GetValueForKey("key2"));
+}
+
+TEST(NonAllocatingMapTest, CopyAndAssign) {
+  NonAllocatingMap<10, 10, 10> map;
+  map.SetKeyValue("one", "a");
+  map.SetKeyValue("two", "b");
+  map.SetKeyValue("three", "c");
+  map.RemoveKey("two");
+  EXPECT_EQ(2u, map.GetCount());
+
+  // Test copy.
+  NonAllocatingMap<10, 10, 10> map_copy(map);
+  EXPECT_EQ(2u, map_copy.GetCount());
+  EXPECT_STREQ("a", map_copy.GetValueForKey("one"));
+  EXPECT_STREQ("c", map_copy.GetValueForKey("three"));
+  map_copy.SetKeyValue("four", "d");
+  EXPECT_STREQ("d", map_copy.GetValueForKey("four"));
+  EXPECT_FALSE(map.GetValueForKey("four"));
+
+  // Test assign.
+  NonAllocatingMap<10, 10, 10> map_assign;
+  map_assign = map;
+  EXPECT_EQ(2u, map_assign.GetCount());
+  EXPECT_STREQ("a", map_assign.GetValueForKey("one"));
+  EXPECT_STREQ("c", map_assign.GetValueForKey("three"));
+  map_assign.SetKeyValue("four", "d");
+  EXPECT_STREQ("d", map_assign.GetValueForKey("four"));
+  EXPECT_FALSE(map.GetValueForKey("four"));
+
+  map.RemoveKey("one");
+  EXPECT_FALSE(map.GetValueForKey("one"));
+  EXPECT_STREQ("a", map_copy.GetValueForKey("one"));
+  EXPECT_STREQ("a", map_assign.GetValueForKey("one"));
+}
+
+// Add a bunch of values to the dictionary, remove some entries in the middle,
+// and then add more.
+TEST(NonAllocatingMapTest, Iterator) {
+  SimpleStringDictionary* dict = new SimpleStringDictionary();
+  ASSERT_TRUE(dict);
+
+  char key[SimpleStringDictionary::key_size];
+  char value[SimpleStringDictionary::value_size];
+
+  const int kDictionaryCapacity = SimpleStringDictionary::num_entries;
+  const int kPartitionIndex = kDictionaryCapacity - 5;
+
+  // We assume at least this size in the tests below
+  ASSERT_GE(kDictionaryCapacity, 64);
+
+  // We'll keep track of the number of key/value pairs we think should
+  // be in the dictionary
+  int expectedDictionarySize = 0;
+
+  // Set a bunch of key/value pairs like key0/value0, key1/value1, ...
+  for (int i = 0; i < kPartitionIndex; ++i) {
+    sprintf(key, "key%d", i);
+    sprintf(value, "value%d", i);
+    dict->SetKeyValue(key, value);
+  }
+  expectedDictionarySize = kPartitionIndex;
+
+  // set a couple of the keys twice (with the same value) - should be nop
+  dict->SetKeyValue("key2", "value2");
+  dict->SetKeyValue("key4", "value4");
+  dict->SetKeyValue("key15", "value15");
+
+  // Remove some random elements in the middle
+  dict->RemoveKey("key7");
+  dict->RemoveKey("key18");
+  dict->RemoveKey("key23");
+  dict->RemoveKey("key31");
+  expectedDictionarySize -= 4;  // we just removed four key/value pairs
+
+  // Set some more key/value pairs like key59/value59, key60/value60, ...
+  for (int i = kPartitionIndex; i < kDictionaryCapacity; ++i) {
+    sprintf(key, "key%d", i);
+    sprintf(value, "value%d", i);
+    dict->SetKeyValue(key, value);
+  }
+  expectedDictionarySize += kDictionaryCapacity - kPartitionIndex;
+
+  // Now create an iterator on the dictionary
+  SimpleStringDictionary::Iterator iter(*dict);
+
+  // We then verify that it iterates through exactly the number of
+  // key/value pairs we expect, and that they match one-for-one with what we
+  // would expect.  The ordering of the iteration does not matter...
+
+  // used to keep track of number of occurrences found for key/value pairs
+  int count[kDictionaryCapacity];
+  memset(count, 0, sizeof(count));
+
+  int totalCount = 0;
+
+  const SimpleStringDictionary::Entry* entry;
+  while ((entry = iter.Next())) {
+    totalCount++;
+
+    // Extract keyNumber from a string of the form key<keyNumber>
+    int keyNumber;
+    sscanf(entry->key, "key%d", &keyNumber);
+
+    // Extract valueNumber from a string of the form value<valueNumber>
+    int valueNumber;
+    sscanf(entry->value, "value%d", &valueNumber);
+
+    // The value number should equal the key number since that's how we set them
+    EXPECT_EQ(keyNumber, valueNumber);
+
+    // Key and value numbers should be in proper range:
+    // 0 <= keyNumber < kDictionaryCapacity
+    bool isKeyInGoodRange =
+      (keyNumber >= 0 && keyNumber < kDictionaryCapacity);
+    bool isValueInGoodRange =
+      (valueNumber >= 0 && valueNumber < kDictionaryCapacity);
+    EXPECT_TRUE(isKeyInGoodRange);
+    EXPECT_TRUE(isValueInGoodRange);
+
+    if (isKeyInGoodRange && isValueInGoodRange) {
+      ++count[keyNumber];
+    }
+  }
+
+  // Make sure each of the key/value pairs showed up exactly one time, except
+  // for the ones which we removed.
+  for (size_t i = 0; i < kDictionaryCapacity; ++i) {
+    // Skip over key7, key18, key23, and key31, since we removed them
+    if (!(i == 7 || i == 18 || i == 23 || i == 31)) {
+      EXPECT_EQ(count[i], 1);
+    }
+  }
+
+  // Make sure the number of iterations matches the expected dictionary size.
+  EXPECT_EQ(totalCount, expectedDictionarySize);
+}
+
+
+TEST(NonAllocatingMapTest, AddRemove) {
+  NonAllocatingMap<5, 7, 6> map;
+  map.SetKeyValue("rob", "ert");
+  map.SetKeyValue("mike", "pink");
+  map.SetKeyValue("mark", "allays");
+
+  EXPECT_EQ(3u, map.GetCount());
+  EXPECT_STREQ("ert", map.GetValueForKey("rob"));
+  EXPECT_STREQ("pink", map.GetValueForKey("mike"));
+  EXPECT_STREQ("allays", map.GetValueForKey("mark"));
+
+  map.RemoveKey("mike");
+
+  EXPECT_EQ(2u, map.GetCount());
+  EXPECT_FALSE(map.GetValueForKey("mike"));
+
+  map.SetKeyValue("mark", "mal");
+  EXPECT_EQ(2u, map.GetCount());
+  EXPECT_STREQ("mal", map.GetValueForKey("mark"));
+
+  map.RemoveKey("mark");
+  EXPECT_EQ(1u, map.GetCount());
+  EXPECT_FALSE(map.GetValueForKey("mark"));
+}
+
+TEST(NonAllocatingMapTest, Serialize) {
+  typedef NonAllocatingMap<4, 5, 7> TestMap;
+  TestMap map;
+  map.SetKeyValue("one", "abc");
+  map.SetKeyValue("two", "def");
+  map.SetKeyValue("tre", "hig");
+
+  EXPECT_STREQ("abc", map.GetValueForKey("one"));
+  EXPECT_STREQ("def", map.GetValueForKey("two"));
+  EXPECT_STREQ("hig", map.GetValueForKey("tre"));
+
+  const SerializedNonAllocatingMap* serialized;
+  size_t size = map.Serialize(&serialized);
+
+  SerializedNonAllocatingMap* serialized_copy =
+      reinterpret_cast<SerializedNonAllocatingMap*>(malloc(size));
+  ASSERT_TRUE(serialized_copy);
+  memcpy(serialized_copy, serialized, size);
+
+  TestMap deserialized(serialized_copy, size);
+  free(serialized_copy);
+
+  EXPECT_EQ(3u, deserialized.GetCount());
+  EXPECT_STREQ("abc", deserialized.GetValueForKey("one"));
+  EXPECT_STREQ("def", deserialized.GetValueForKey("two"));
+  EXPECT_STREQ("hig", deserialized.GetValueForKey("tre"));
+}
+
+// Running out of space shouldn't crash.
+TEST(NonAllocatingMapTest, OutOfSpace) {
+  NonAllocatingMap<3, 2, 2> map;
+  map.SetKeyValue("a", "1");
+  map.SetKeyValue("b", "2");
+  map.SetKeyValue("c", "3");
+  EXPECT_EQ(2u, map.GetCount());
+  EXPECT_FALSE(map.GetValueForKey("c"));
+}
+
+#ifndef NDEBUG
+
+TEST(NonAllocatingMapTest, NullKey) {
+  NonAllocatingMap<4, 6, 6> map;
+  ASSERT_DEATH(map.SetKeyValue(NULL, "hello"), "");
+
+  map.SetKeyValue("hi", "there");
+  ASSERT_DEATH(map.GetValueForKey(NULL), "");
+  EXPECT_STREQ("there", map.GetValueForKey("hi"));
+
+  ASSERT_DEATH(map.GetValueForKey(NULL), "");
+  map.RemoveKey("hi");
+  EXPECT_EQ(0u, map.GetCount());
+}
+
+#endif  // !NDEBUG
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/common/solaris/dump_symbols.cc b/google-breakpad/src/common/solaris/dump_symbols.cc
new file mode 100644
index 0000000..168d0b2
--- /dev/null
+++ b/google-breakpad/src/common/solaris/dump_symbols.cc
@@ -0,0 +1,681 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Author: Alfred Peng
+
+#include <demangle.h>
+#include <fcntl.h>
+#include <gelf.h>
+#include <link.h>
+#include <sys/mman.h>
+#include <stab.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+#include <functional>
+#include <map>
+#include <vector>
+
+#include "common/scoped_ptr.h"
+#include "common/solaris/dump_symbols.h"
+#include "common/solaris/file_id.h"
+#include "common/solaris/guid_creator.h"
+
+// This namespace contains helper functions.
+namespace {
+
+using std::make_pair;
+
+#if defined(_LP64)
+typedef Elf64_Sym   Elf_Sym;
+#else
+typedef Elf32_Sym   Elf_Sym;
+#endif
+
+// Symbol table entry from stabs. Sun CC specific.
+struct slist {
+  // String table index.
+  unsigned int n_strx;
+  // Stab type. 
+  unsigned char n_type;
+  char n_other;
+  short n_desc;
+  unsigned long n_value;
+};
+
+// Symbol table entry
+struct SymbolEntry {
+  // Offset from the start of the file.
+  GElf_Addr offset;
+  // Function size.
+  GElf_Word size;
+};
+
+// Infomation of a line.
+struct LineInfo {
+  // Offset from start of the function.
+  // Load from stab symbol.
+  GElf_Off rva_to_func;
+  // Offset from base of the loading binary.
+  GElf_Off rva_to_base;
+  // Size of the line.
+  // The first line: equals to rva_to_func.
+  // The other lines: the difference of rva_to_func of the line and
+  // rva_to_func of the previous N_SLINE.
+  uint32_t size;
+  // Line number.
+  uint32_t line_num;
+};
+
+// Information of a function.
+struct FuncInfo {
+  // Name of the function.
+  const char *name;
+  // Offset from the base of the loading address.
+  GElf_Off rva_to_base;
+  // Virtual address of the function.
+  // Load from stab symbol.
+  GElf_Addr addr;
+  // Size of the function.
+  // Equal to rva_to_func of the last function line.
+  uint32_t size;
+  // Total size of stack parameters.
+  uint32_t stack_param_size;
+  // Line information array.
+  std::vector<struct LineInfo> line_info;
+};
+
+// Information of a source file.
+struct SourceFileInfo {
+  // Name of the source file.
+  const char *name;
+  // Starting address of the source file.
+  GElf_Addr addr;
+  // Id of the source file.
+  int source_id;
+  // Functions information.
+  std::vector<struct FuncInfo> func_info;
+};
+
+struct CompareString {
+  bool operator()(const char *s1, const char *s2) const {
+    return strcmp(s1, s2) < 0;
+  }
+};
+
+typedef std::map<const char *, struct SymbolEntry *, CompareString> SymbolMap;
+
+// Information of a symbol table.
+// This is the root of all types of symbol.
+struct SymbolInfo {
+  std::vector<struct SourceFileInfo> source_file_info;
+  // Symbols information.
+  SymbolMap symbol_entries;
+};
+
+// Stab section name.
+const char *kStabName = ".stab";
+
+// Stab str section name.
+const char *kStabStrName = ".stabstr";
+
+// Symtab section name.
+const char *kSymtabName = ".symtab";
+
+// Strtab section name.
+const char *kStrtabName = ".strtab";
+
+// Default buffer lenght for demangle.
+const int demangleLen = 20000;
+
+// Offset to the string table.
+uint64_t stringOffset = 0;
+
+// Update the offset to the start of the string index of the next
+// object module for every N_ENDM stabs.
+inline void RecalculateOffset(struct slist* cur_list, char *stabstr) {
+  while ((--cur_list)->n_strx == 0) ;
+  stringOffset += cur_list->n_strx;
+
+  char *temp = stabstr + stringOffset;
+  while (*temp != '\0') {
+    ++stringOffset;
+    ++temp;
+  }
+  // Skip the extra '\0'
+  ++stringOffset;
+}
+
+// Demangle using demangle library on Solaris.
+std::string Demangle(const char *mangled) {
+  int status = 0;
+  std::string str(mangled);
+  char *demangled = (char *)malloc(demangleLen);
+
+  if (!demangled) {
+    fprintf(stderr, "no enough memory.\n");
+    goto out;
+  }
+
+  if ((status = cplus_demangle(mangled, demangled, demangleLen)) ==
+      DEMANGLE_ESPACE) {
+    fprintf(stderr, "incorrect demangle.\n");
+    goto out;
+  }
+
+  str = demangled;
+  free(demangled);
+
+out:
+  return str; 
+}
+
+bool WriteFormat(int fd, const char *fmt, ...) {
+  va_list list;
+  char buffer[4096];
+  ssize_t expected, written;
+  va_start(list, fmt);
+  vsnprintf(buffer, sizeof(buffer), fmt, list);
+  expected = strlen(buffer);
+  written = write(fd, buffer, strlen(buffer));
+  va_end(list);
+  return expected == written;
+}
+
+bool IsValidElf(const GElf_Ehdr *elf_header) {
+  return memcmp(elf_header, ELFMAG, SELFMAG) == 0;
+}
+
+static bool FindSectionByName(Elf *elf, const char *name,
+                              int shstrndx,
+                              GElf_Shdr *shdr) {
+  assert(name != NULL);
+
+  if (strlen(name) == 0)
+    return false;
+
+  Elf_Scn *scn = NULL;
+
+  while ((scn = elf_nextscn(elf, scn)) != NULL) {
+    if (gelf_getshdr(scn, shdr) == (GElf_Shdr *)0) {
+      fprintf(stderr, "failed to read section header: %s\n", elf_errmsg(0));
+      return false;
+    }
+
+    const char *section_name = elf_strptr(elf, shstrndx, shdr->sh_name);
+    if (!section_name) {
+      fprintf(stderr, "Section name error: %s\n", elf_errmsg(-1));
+      continue;
+    }
+
+    if (strcmp(section_name, name) == 0)
+      return true;
+  }
+
+  return false;
+}
+
+// The parameter size is used for FPO-optimized code, and
+// this is all tied up with the debugging data for Windows x86.
+// Set it to 0 on Solaris.
+int LoadStackParamSize(struct slist *list,
+                       struct slist *list_end,
+                       struct FuncInfo *func_info) {
+  struct slist *cur_list = list;
+  int step = 1;
+  while (cur_list < list_end && cur_list->n_type == N_PSYM) {
+    ++cur_list;
+    ++step;
+  }
+
+  func_info->stack_param_size = 0;
+  return step;
+}
+
+int LoadLineInfo(struct slist *list,
+                 struct slist *list_end,
+                 struct FuncInfo *func_info) {
+  struct slist *cur_list = list;
+  do {
+    // Skip non line information.
+    while (cur_list < list_end && cur_list->n_type != N_SLINE) {
+      // Only exit when got another function, or source file, or end stab.
+      if (cur_list->n_type == N_FUN || cur_list->n_type == N_SO ||
+          cur_list->n_type == N_ENDM) {
+        return cur_list - list;
+      }
+      ++cur_list;
+    }
+    struct LineInfo line;
+    while (cur_list < list_end && cur_list->n_type == N_SLINE) {
+      line.rva_to_func = cur_list->n_value;
+      // n_desc is a signed short
+      line.line_num = (unsigned short)cur_list->n_desc;
+      func_info->line_info.push_back(line);
+      ++cur_list;
+    }
+    if (cur_list == list_end && cur_list->n_type == N_ENDM)
+      break;
+  } while (list < list_end);
+
+  return cur_list - list;
+}
+
+int LoadFuncSymbols(struct slist *list,
+                    struct slist *list_end,
+                    char *stabstr,
+                    GElf_Word base,
+                    struct SourceFileInfo *source_file_info) {
+  struct slist *cur_list = list;
+  assert(cur_list->n_type == N_SO);
+  ++cur_list;
+
+  source_file_info->func_info.clear();
+  while (cur_list < list_end) {
+    // Go until the function symbol.
+    while (cur_list < list_end && cur_list->n_type != N_FUN) {
+      if (cur_list->n_type == N_SO) {
+        return cur_list - list;
+      }
+      ++cur_list;
+      if (cur_list->n_type == N_ENDM)
+        RecalculateOffset(cur_list, stabstr);
+      continue;
+    }
+    while (cur_list->n_type == N_FUN) {
+      struct FuncInfo func_info;
+      memset(&func_info, 0, sizeof(func_info));
+      func_info.name = stabstr + cur_list->n_strx + stringOffset;
+      // The n_value field is always 0 from stab generated by Sun CC.
+      // TODO(Alfred): Find the correct value.
+      func_info.addr = cur_list->n_value;
+      ++cur_list;
+      if (cur_list->n_type == N_ENDM)
+        RecalculateOffset(cur_list, stabstr);
+      if (cur_list->n_type != N_ESYM && cur_list->n_type != N_ISYM &&
+          cur_list->n_type != N_FUN) {
+        // Stack parameter size.
+        cur_list += LoadStackParamSize(cur_list, list_end, &func_info);
+        // Line info.
+        cur_list += LoadLineInfo(cur_list, list_end, &func_info);
+      }
+      if (cur_list < list_end && cur_list->n_type == N_ENDM)
+        RecalculateOffset(cur_list, stabstr);
+      // Functions in this module should have address bigger than the module
+      // starting address.
+      //
+      // These two values are always 0 with Sun CC.
+      // TODO(Alfred): Get the correct value or remove the condition statement.
+      if (func_info.addr >= source_file_info->addr) {
+        source_file_info->func_info.push_back(func_info);
+      }
+    }
+  }
+  return cur_list - list;
+}
+
+// Compute size and rva information based on symbols loaded from stab section.
+bool ComputeSizeAndRVA(struct SymbolInfo *symbols) {
+  std::vector<struct SourceFileInfo> *sorted_files =
+    &(symbols->source_file_info);
+  SymbolMap *symbol_entries = &(symbols->symbol_entries);
+  for (size_t i = 0; i < sorted_files->size(); ++i) {
+    struct SourceFileInfo &source_file = (*sorted_files)[i];
+    std::vector<struct FuncInfo> *sorted_functions = &(source_file.func_info);
+    int func_size = sorted_functions->size();
+
+    for (size_t j = 0; j < func_size; ++j) {
+      struct FuncInfo &func_info = (*sorted_functions)[j];
+      int line_count = func_info.line_info.size();
+
+      // Discard the ending part of the name.
+      std::string func_name(func_info.name);
+      std::string::size_type last_colon = func_name.find_first_of(':');
+      if (last_colon != std::string::npos)
+        func_name = func_name.substr(0, last_colon);
+
+      // Fine the symbol offset from the loading address and size by name.
+      SymbolMap::const_iterator it = symbol_entries->find(func_name.c_str());
+      if (it->second) {
+        func_info.rva_to_base = it->second->offset;
+        func_info.size = (line_count == 0) ? 0 : it->second->size;
+      } else {
+        func_info.rva_to_base = 0;
+        func_info.size = 0;
+      }
+
+      // Compute function and line size.
+      for (size_t k = 0; k < line_count; ++k) {
+        struct LineInfo &line_info = func_info.line_info[k];
+
+        line_info.rva_to_base = line_info.rva_to_func + func_info.rva_to_base;
+        if (k == line_count - 1) {
+          line_info.size = func_info.size - line_info.rva_to_func;
+        } else {
+          struct LineInfo &next_line = func_info.line_info[k + 1];
+          line_info.size = next_line.rva_to_func - line_info.rva_to_func;
+        }
+      }  // for each line.
+    }  // for each function.
+  }  // for each source file.
+  for (SymbolMap::iterator it = symbol_entries->begin();
+       it != symbol_entries->end(); ++it) {
+    free(it->second);
+  }
+  return true;
+}
+
+bool LoadAllSymbols(const GElf_Shdr *stab_section,
+                    const GElf_Shdr *stabstr_section,
+                    GElf_Word base,
+                    struct SymbolInfo *symbols) {
+  if (stab_section == NULL || stabstr_section == NULL)
+    return false;
+
+  char *stabstr = 
+    reinterpret_cast<char *>(stabstr_section->sh_offset + base);
+  struct slist *lists =
+    reinterpret_cast<struct slist *>(stab_section->sh_offset + base);
+  int nstab = stab_section->sh_size / sizeof(struct slist);
+  int source_id = 0;
+
+  // First pass, load all symbols from the object file.
+  for (int i = 0; i < nstab; ) {
+    int step = 1;
+    struct slist *cur_list = lists + i;
+    if (cur_list->n_type == N_SO) {
+      // FUNC <address> <size> <param_stack_size> <function>
+      struct SourceFileInfo source_file_info;
+      source_file_info.name = stabstr + cur_list->n_strx + stringOffset;
+      // The n_value field is always 0 from stab generated by Sun CC.
+      // TODO(Alfred): Find the correct value.
+      source_file_info.addr = cur_list->n_value;
+      if (strchr(source_file_info.name, '.'))
+        source_file_info.source_id = source_id++;
+      else
+        source_file_info.source_id = -1;
+      step = LoadFuncSymbols(cur_list, lists + nstab - 1, stabstr,
+                             base, &source_file_info);
+      symbols->source_file_info.push_back(source_file_info);
+    }
+    i += step;
+  }
+  // Second pass, compute the size of functions and lines.
+  return ComputeSizeAndRVA(symbols);
+}
+
+bool LoadSymbols(Elf *elf, GElf_Ehdr *elf_header, struct SymbolInfo *symbols,
+                 void *obj_base) {
+  GElf_Word base = reinterpret_cast<GElf_Word>(obj_base);
+
+  const GElf_Shdr *sections =
+    reinterpret_cast<GElf_Shdr *>(elf_header->e_shoff + base);
+  GElf_Shdr stab_section;
+  if (!FindSectionByName(elf, kStabName, elf_header->e_shstrndx,
+                         &stab_section)) {
+    fprintf(stderr, "Stab section not found.\n");
+    return false;
+  }
+  GElf_Shdr stabstr_section;
+  if (!FindSectionByName(elf, kStabStrName, elf_header->e_shstrndx,
+                         &stabstr_section)) {
+    fprintf(stderr, "Stabstr section not found.\n");
+    return false;
+  }
+  GElf_Shdr symtab_section;
+  if (!FindSectionByName(elf, kSymtabName, elf_header->e_shstrndx,
+                         &symtab_section)) {
+    fprintf(stderr, "Symtab section not found.\n");
+    return false;
+  }
+  GElf_Shdr strtab_section;
+  if (!FindSectionByName(elf, kStrtabName, elf_header->e_shstrndx,
+                         &strtab_section)) {
+    fprintf(stderr, "Strtab section not found.\n");
+    return false;
+  }
+
+  Elf_Sym *symbol = (Elf_Sym *)((char *)base + symtab_section.sh_offset);
+  for (int i = 0; i < symtab_section.sh_size/symtab_section.sh_entsize; ++i) {
+    struct SymbolEntry *symbol_entry =
+        (struct SymbolEntry *)malloc(sizeof(struct SymbolEntry));
+    const char *name = reinterpret_cast<char *>(
+        strtab_section.sh_offset + (GElf_Word)base + symbol->st_name);
+    symbol_entry->offset = symbol->st_value;
+    symbol_entry->size = symbol->st_size;
+    symbols->symbol_entries.insert(make_pair(name, symbol_entry));
+    ++symbol;
+  }
+
+
+  // Load symbols.
+  return LoadAllSymbols(&stab_section, &stabstr_section, base, symbols);
+}
+
+bool WriteModuleInfo(int fd, GElf_Half arch, const std::string &obj_file) {
+  const char *arch_name = NULL;
+  if (arch == EM_386)
+    arch_name = "x86";
+  else if (arch == EM_X86_64)
+    arch_name = "x86_64";
+  else if (arch == EM_SPARC32PLUS)
+    arch_name = "SPARC_32+";
+  else {
+    printf("Please add more ARCH support\n");
+    return false;
+  }
+
+  unsigned char identifier[16];
+  google_breakpad::FileID file_id(obj_file.c_str());
+  if (file_id.ElfFileIdentifier(identifier)) {
+    char identifier_str[40];
+    file_id.ConvertIdentifierToString(identifier,
+                                      identifier_str, sizeof(identifier_str));
+    std::string filename = obj_file;
+    size_t slash_pos = obj_file.find_last_of("/");
+    if (slash_pos != std::string::npos)
+      filename = obj_file.substr(slash_pos + 1);
+    return WriteFormat(fd, "MODULE solaris %s %s %s\n", arch_name,
+                       identifier_str, filename.c_str());
+  }
+  return false;
+}
+
+bool WriteSourceFileInfo(int fd, const struct SymbolInfo &symbols) {
+  for (size_t i = 0; i < symbols.source_file_info.size(); ++i) {
+    if (symbols.source_file_info[i].source_id != -1) {
+      const char *name = symbols.source_file_info[i].name;
+      if (!WriteFormat(fd, "FILE %d %s\n",
+                       symbols.source_file_info[i].source_id, name))
+        return false;
+    }
+  }
+  return true;
+}
+
+bool WriteOneFunction(int fd, int source_id,
+                      const struct FuncInfo &func_info){
+  // Discard the ending part of the name.
+  std::string func_name(func_info.name);
+  std::string::size_type last_colon = func_name.find_last_of(':');
+  if (last_colon != std::string::npos)
+    func_name = func_name.substr(0, last_colon);
+  func_name = Demangle(func_name.c_str());
+
+  if (func_info.size <= 0)
+    return true;
+
+  // rva_to_base could be unsigned long(32 bit) or unsigned long long(64 bit).
+  if (WriteFormat(fd, "FUNC %llx %x %d %s\n",
+                  (long long)func_info.rva_to_base,
+                  func_info.size,
+                  func_info.stack_param_size,
+                  func_name.c_str())) {
+    for (size_t i = 0; i < func_info.line_info.size(); ++i) {
+      const struct LineInfo &line_info = func_info.line_info[i];
+      if (line_info.line_num == 0)
+        return true;
+      if (!WriteFormat(fd, "%llx %x %d %d\n",
+                       (long long)line_info.rva_to_base,
+                       line_info.size,
+                       line_info.line_num,
+                       source_id))
+        return false;
+    }
+    return true;
+  }
+  return false;
+}
+
+bool WriteFunctionInfo(int fd, const struct SymbolInfo &symbols) {
+  for (size_t i = 0; i < symbols.source_file_info.size(); ++i) {
+    const struct SourceFileInfo &file_info = symbols.source_file_info[i];
+    for (size_t j = 0; j < file_info.func_info.size(); ++j) {
+      const struct FuncInfo &func_info = file_info.func_info[j];
+      if (!WriteOneFunction(fd, file_info.source_id, func_info))
+        return false;
+    }
+  }
+  return true;
+}
+
+bool DumpStabSymbols(int fd, const struct SymbolInfo &symbols) {
+  return WriteSourceFileInfo(fd, symbols) &&
+    WriteFunctionInfo(fd, symbols);
+}
+
+//
+// FDWrapper
+//
+// Wrapper class to make sure opened file is closed.
+//
+class FDWrapper {
+ public:
+  explicit FDWrapper(int fd) :
+    fd_(fd) {
+    }
+  ~FDWrapper() {
+    if (fd_ != -1)
+      close(fd_);
+  }
+  int get() {
+    return fd_;
+  }
+  int release() {
+    int fd = fd_;
+    fd_ = -1;
+    return fd;
+  }
+ private:
+  int fd_;
+};
+
+//
+// MmapWrapper
+//
+// Wrapper class to make sure mapped regions are unmapped.
+//
+class MmapWrapper {
+ public:
+  MmapWrapper(void *mapped_address, size_t mapped_size) :
+    base_(mapped_address), size_(mapped_size) {
+  }
+  ~MmapWrapper() {
+    if (base_ != NULL) {
+      assert(size_ > 0);
+      munmap((char *)base_, size_);
+    }
+  }
+  void release() {
+    base_ = NULL;
+    size_ = 0;
+  }
+
+ private:
+  void *base_;
+  size_t size_;
+};
+
+}  // namespace
+
+namespace google_breakpad {
+
+class AutoElfEnder {
+ public:
+  AutoElfEnder(Elf *elf) : elf_(elf) {}
+  ~AutoElfEnder() { if (elf_) elf_end(elf_); }
+ private:
+  Elf *elf_;
+};
+
+
+bool DumpSymbols::WriteSymbolFile(const std::string &obj_file, int sym_fd) {
+  if (elf_version(EV_CURRENT) == EV_NONE) {
+    fprintf(stderr, "elf_version() failed: %s\n", elf_errmsg(0));
+    return false;
+  }
+
+  int obj_fd = open(obj_file.c_str(), O_RDONLY);
+  if (obj_fd < 0)
+    return false;
+  FDWrapper obj_fd_wrapper(obj_fd);
+  struct stat st;
+  if (fstat(obj_fd, &st) != 0 && st.st_size <= 0)
+    return false;
+  void *obj_base = mmap(NULL, st.st_size,
+                        PROT_READ, MAP_PRIVATE, obj_fd, 0);
+  if (obj_base == MAP_FAILED)
+    return false;
+  MmapWrapper map_wrapper(obj_base, st.st_size);
+  GElf_Ehdr elf_header;
+  Elf *elf = elf_begin(obj_fd, ELF_C_READ, NULL);
+  AutoElfEnder elfEnder(elf);
+
+  if (gelf_getehdr(elf, &elf_header) == (GElf_Ehdr *)NULL) {
+    fprintf(stderr, "failed to read elf header: %s\n", elf_errmsg(-1));
+    return false;
+  }
+
+  if (!IsValidElf(&elf_header)) {
+    fprintf(stderr, "header magic doesn't match\n");
+    return false;
+  }
+  struct SymbolInfo symbols;
+  if (!LoadSymbols(elf, &elf_header, &symbols, obj_base))
+    return false;
+  // Write to symbol file.
+  if (WriteModuleInfo(sym_fd, elf_header.e_machine, obj_file) &&
+      DumpStabSymbols(sym_fd, symbols))
+    return true;
+
+  return false;
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/common/solaris/dump_symbols.h b/google-breakpad/src/common/solaris/dump_symbols.h
new file mode 100644
index 0000000..7f4baad
--- /dev/null
+++ b/google-breakpad/src/common/solaris/dump_symbols.h
@@ -0,0 +1,49 @@
+// Copyright (c) 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// dump_symbols.cc: Implements a Solaris stab debugging format dumper.
+//
+// Author: Alfred Peng
+
+#ifndef COMMON_SOLARIS_DUMP_SYMBOLS_H__
+#define COMMON_SOLARIS_DUMP_SYMBOLS_H__
+
+#include <string>
+
+namespace google_breakpad {
+
+class DumpSymbols {
+ public:
+  bool WriteSymbolFile(const std::string &obj_file,
+                       int sym_fd);
+};
+
+}  // namespace google_breakpad
+
+#endif  // COMMON_SOLARIS_DUMP_SYMBOLS_H__
diff --git a/google-breakpad/src/common/solaris/file_id.cc b/google-breakpad/src/common/solaris/file_id.cc
new file mode 100644
index 0000000..643a146
--- /dev/null
+++ b/google-breakpad/src/common/solaris/file_id.cc
@@ -0,0 +1,197 @@
+// Copyright (c) 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// file_id.cc: Return a unique identifier for a file
+//
+// See file_id.h for documentation
+//
+// Author: Alfred Peng
+
+#include <elf.h>
+#include <fcntl.h>
+#include <gelf.h>
+#include <sys/mman.h>
+#include <sys/ksyms.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <cassert>
+#include <cstdio>
+
+#include "common/md5.h"
+#include "common/solaris/file_id.h"
+#include "common/solaris/message_output.h"
+#include "google_breakpad/common/minidump_format.h"
+
+namespace google_breakpad {
+
+class AutoElfEnder {
+ public:
+  AutoElfEnder(Elf *elf) : elf_(elf) {}
+  ~AutoElfEnder() { if (elf_) elf_end(elf_); }
+ private:
+  Elf *elf_;
+};
+
+// Find the text section in elf object file.
+// Return the section start address and the size.
+static bool FindElfTextSection(int fd, const void *elf_base,
+                               const void **text_start,
+                               int *text_size) {
+  assert(text_start);
+  assert(text_size);
+
+  *text_start = NULL;
+  *text_size = 0;
+
+  if (elf_version(EV_CURRENT) == EV_NONE) {
+    print_message2(2, "elf_version() failed: %s\n", elf_errmsg(0));
+    return false;
+  }
+
+  GElf_Ehdr elf_header;
+  lseek(fd, 0L, 0);
+  Elf *elf = elf_begin(fd, ELF_C_READ, NULL);
+  AutoElfEnder elfEnder(elf);
+
+  if (gelf_getehdr(elf, &elf_header) == (GElf_Ehdr *)NULL) {
+    print_message2(2, "failed to read elf header: %s\n", elf_errmsg(-1));
+    return false;
+  }
+
+  if (elf_header.e_ident[EI_MAG0] != ELFMAG0 ||
+      elf_header.e_ident[EI_MAG1] != ELFMAG1 ||
+      elf_header.e_ident[EI_MAG2] != ELFMAG2 ||
+      elf_header.e_ident[EI_MAG3] != ELFMAG3) {
+    print_message1(2, "header magic doesn't match\n");
+    return false;
+  }
+
+  static const char kTextSectionName[] = ".text";
+  const GElf_Shdr *text_section = NULL;
+  Elf_Scn *scn = NULL;
+  GElf_Shdr shdr;
+
+  while ((scn = elf_nextscn(elf, scn)) != NULL) {
+    if (gelf_getshdr(scn, &shdr) == (GElf_Shdr *)0) {
+      print_message2(2, "failed to read section header: %s\n", elf_errmsg(0));
+      return false;
+    }
+
+    if (shdr.sh_type == SHT_PROGBITS) {
+      const char *section_name = elf_strptr(elf, elf_header.e_shstrndx,
+                                            shdr.sh_name);
+      if (!section_name) {
+        print_message2(2, "Section name error: %s\n", elf_errmsg(-1));
+        continue;
+      }
+
+      if (strcmp(section_name, kTextSectionName) == 0) {
+        text_section = &shdr;
+        break;
+      }
+    }
+  }
+  if (text_section != NULL && text_section->sh_size > 0) {
+    *text_start = (char *)elf_base + text_section->sh_offset;
+    *text_size = text_section->sh_size;
+    return true;
+  }
+
+  return false;
+}
+
+FileID::FileID(const char *path) {
+  strcpy(path_, path);
+}
+
+class AutoCloser {
+ public:
+  AutoCloser(int fd) : fd_(fd) {}
+  ~AutoCloser() { if (fd_) close(fd_); }
+ private:
+  int fd_;
+};
+
+bool FileID::ElfFileIdentifier(unsigned char identifier[16]) {
+  int fd = 0;
+  if ((fd = open(path_, O_RDONLY)) < 0)
+    return false;
+
+  AutoCloser autocloser(fd);
+  struct stat st;
+  if (fstat(fd, &st) != 0 || st.st_size <= 0)
+    return false;
+
+  void *base = mmap(NULL, st.st_size, PROT_READ, MAP_PRIVATE, fd, 0);
+  if (base == MAP_FAILED)
+    return false;
+
+  bool success = false;
+  const void *text_section = NULL;
+  int text_size = 0;
+
+  if (FindElfTextSection(fd, base, &text_section, &text_size)) {
+    MD5Context md5;
+    MD5Init(&md5);
+    MD5Update(&md5, (const unsigned char *)text_section, text_size);
+    MD5Final(identifier, &md5);
+    success = true;
+  }
+
+  munmap((char *)base, st.st_size);
+  return success;
+}
+
+// static
+bool FileID::ConvertIdentifierToString(const unsigned char identifier[16],
+                                       char *buffer, int buffer_length) {
+  if (buffer_length < 34)
+    return false;
+
+  int buffer_idx = 0;
+  for (int idx = 0; idx < 16; ++idx) {
+    int hi = (identifier[idx] >> 4) & 0x0F;
+    int lo = (identifier[idx]) & 0x0F;
+
+    buffer[buffer_idx++] = (hi >= 10) ? 'A' + hi - 10 : '0' + hi;
+    buffer[buffer_idx++] = (lo >= 10) ? 'A' + lo - 10 : '0' + lo;
+  }
+
+  // Add an extra "0" by the end.
+  buffer[buffer_idx++] = '0';
+
+  // NULL terminate
+  buffer[buffer_idx] = 0;
+
+  return true;
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/common/solaris/file_id.h b/google-breakpad/src/common/solaris/file_id.h
new file mode 100644
index 0000000..375e857
--- /dev/null
+++ b/google-breakpad/src/common/solaris/file_id.h
@@ -0,0 +1,66 @@
+// Copyright (c) 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// file_id.h: Return a unique identifier for a file
+//
+// Author: Alfred Peng
+
+#ifndef COMMON_SOLARIS_FILE_ID_H__
+#define COMMON_SOLARIS_FILE_ID_H__
+
+#include <limits.h>
+
+namespace google_breakpad {
+
+class FileID {
+ public:
+  FileID(const char *path);
+  ~FileID() {};
+
+  // Load the identifier for the elf file path specified in the constructor into
+  // |identifier|.  Return false if the identifier could not be created for the
+  // file.
+  // The current implementation will return the MD5 hash of the file's bytes.
+  bool ElfFileIdentifier(unsigned char identifier[16]);
+
+  // Convert the |identifier| data to a NULL terminated string.  The string will
+  // be formatted as a MDCVInfoPDB70 struct.
+  // The |buffer| should be at least 34 bytes long to receive all of the data
+  // and termination. Shorter buffers will return false.
+  static bool ConvertIdentifierToString(const unsigned char identifier[16],
+                                        char *buffer, int buffer_length);
+
+ private:
+  // Storage for the path specified
+  char path_[PATH_MAX];
+};
+
+}  // namespace google_breakpad
+
+#endif  // COMMON_SOLARIS_FILE_ID_H__
diff --git a/google-breakpad/src/common/solaris/guid_creator.cc b/google-breakpad/src/common/solaris/guid_creator.cc
new file mode 100644
index 0000000..c4d58e0
--- /dev/null
+++ b/google-breakpad/src/common/solaris/guid_creator.cc
@@ -0,0 +1,84 @@
+// Copyright (c) 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Author: Alfred Peng
+
+#include <cassert>
+#include <ctime>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#include "common/solaris/guid_creator.h"
+
+//
+// GUIDGenerator
+//
+// This class is used to generate random GUID.
+// Currently use random number to generate a GUID. This should be OK since
+// we don't expect crash to happen very offen.
+//
+class GUIDGenerator {
+ public:
+  GUIDGenerator() {
+    srandom(time(NULL));
+  }
+
+  bool CreateGUID(GUID *guid) const {
+    guid->data1 = random();
+    guid->data2 = (uint16_t)(random());
+    guid->data3 = (uint16_t)(random());
+    *reinterpret_cast<uint32_t*>(&guid->data4[0]) = random();
+    *reinterpret_cast<uint32_t*>(&guid->data4[4]) = random();
+    return true;
+  }
+};
+
+// Guid generator.
+const GUIDGenerator kGuidGenerator;
+
+bool CreateGUID(GUID *guid) {
+  return kGuidGenerator.CreateGUID(guid);
+};
+
+// Parse guid to string.
+bool GUIDToString(const GUID *guid, char *buf, int buf_len) {
+  // Should allow more space the the max length of GUID.
+  assert(buf_len > kGUIDStringLength);
+  int num = snprintf(buf, buf_len, kGUIDFormatString,
+                     guid->data1, guid->data2, guid->data3,
+                     *reinterpret_cast<const uint32_t *>(&(guid->data4[0])),
+                     *reinterpret_cast<const uint32_t *>(&(guid->data4[4])));
+  if (num != kGUIDStringLength)
+    return false;
+
+  buf[num] = '\0';
+  return true;
+}
diff --git a/google-breakpad/src/common/solaris/guid_creator.h b/google-breakpad/src/common/solaris/guid_creator.h
new file mode 100644
index 0000000..4aee3a1
--- /dev/null
+++ b/google-breakpad/src/common/solaris/guid_creator.h
@@ -0,0 +1,50 @@
+// Copyright (c) 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Author: Alfred Peng
+
+#ifndef COMMON_SOLARIS_GUID_CREATOR_H__
+#define COMMON_SOLARIS_GUID_CREATOR_H__
+
+#include "google_breakpad/common/minidump_format.h"
+
+typedef MDGUID GUID;
+
+// Format string for parsing GUID.
+#define kGUIDFormatString "%08x-%04x-%04x-%08x-%08x"
+// Length of GUID string. Don't count the ending '\0'.
+#define kGUIDStringLength 36
+
+// Create a guid.
+bool CreateGUID(GUID *guid);
+
+// Get the string from guid.
+bool GUIDToString(const GUID *guid, char *buf, int buf_len);
+
+#endif  // COMMON_SOLARIS_GUID_CREATOR_H__
diff --git a/google-breakpad/src/common/solaris/message_output.h b/google-breakpad/src/common/solaris/message_output.h
new file mode 100644
index 0000000..3e3b1d4
--- /dev/null
+++ b/google-breakpad/src/common/solaris/message_output.h
@@ -0,0 +1,54 @@
+// Copyright (c) 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Author: Alfred Peng
+
+#ifndef COMMON_SOLARIS_MESSAGE_OUTPUT_H__
+#define COMMON_SOLARIS_MESSAGE_OUTPUT_H__
+
+namespace google_breakpad {
+
+const int MESSAGE_MAX = 1000;
+
+// Message output macros.
+// snprintf doesn't operate heap on Solaris, while printf and fprintf do.
+// Use snprintf here to avoid heap allocation.
+#define print_message1(std, message) \
+  char buffer[MESSAGE_MAX]; \
+  int len = snprintf(buffer, MESSAGE_MAX, message); \
+  write(std, buffer, len)
+
+#define print_message2(std, message, para) \
+  char buffer[MESSAGE_MAX]; \
+  int len = snprintf(buffer, MESSAGE_MAX, message, para); \
+  write(std, buffer, len);
+
+}  // namespace google_breakpad
+
+#endif  // COMMON_SOLARIS_MESSAGE_OUTPUT_H__
diff --git a/google-breakpad/src/common/stabs_reader.cc b/google-breakpad/src/common/stabs_reader.cc
new file mode 100644
index 0000000..6019fc7
--- /dev/null
+++ b/google-breakpad/src/common/stabs_reader.cc
@@ -0,0 +1,315 @@
+// Copyright (c) 2010 Google Inc. All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// This file implements the google_breakpad::StabsReader class.
+// See stabs_reader.h.
+
+#include "common/stabs_reader.h"
+
+#include <assert.h>
+#include <stab.h>
+#include <string.h>
+
+#include <string>
+
+#include "common/using_std_string.h"
+
+using std::vector;
+
+namespace google_breakpad {
+
+StabsReader::EntryIterator::EntryIterator(const ByteBuffer *buffer,
+                                          bool big_endian, size_t value_size)
+    : value_size_(value_size), cursor_(buffer, big_endian) {
+  // Actually, we could handle weird sizes just fine, but they're
+  // probably mistakes --- expressed in bits, say.
+  assert(value_size == 4 || value_size == 8);
+  entry_.index = 0;
+  Fetch();
+}
+
+void StabsReader::EntryIterator::Fetch() {
+  cursor_
+      .Read(4, false, &entry_.name_offset)
+      .Read(1, false, &entry_.type)
+      .Read(1, false, &entry_.other)
+      .Read(2, false, &entry_.descriptor)
+      .Read(value_size_, false, &entry_.value);
+  entry_.at_end = !cursor_;
+}
+
+StabsReader::StabsReader(const uint8_t *stab,    size_t stab_size,
+                         const uint8_t *stabstr, size_t stabstr_size,
+                         bool big_endian, size_t value_size, bool unitized,
+                         StabsHandler *handler)
+    : entries_(stab, stab_size),
+      strings_(stabstr, stabstr_size),
+      iterator_(&entries_, big_endian, value_size),
+      unitized_(unitized),
+      handler_(handler),
+      string_offset_(0),
+      next_cu_string_offset_(0),
+      current_source_file_(NULL) { }
+
+const char *StabsReader::SymbolString() {
+  ptrdiff_t offset = string_offset_ + iterator_->name_offset;
+  if (offset < 0 || (size_t) offset >= strings_.Size()) {
+    handler_->Warning("symbol %d: name offset outside the string section\n",
+                      iterator_->index);
+    // Return our null string, to keep our promise about all names being
+    // taken from the string section.
+    offset = 0;
+  }
+  return reinterpret_cast<const char *>(strings_.start + offset);
+}
+
+bool StabsReader::Process() {
+  while (!iterator_->at_end) {
+    if (iterator_->type == N_SO) {
+      if (! ProcessCompilationUnit())
+        return false;
+    } else if (iterator_->type == N_UNDF && unitized_) {
+      // In unitized STABS (including Linux STABS, and pretty much anything
+      // else that puts STABS data in sections), at the head of each
+      // compilation unit's entries there is an N_UNDF stab giving the
+      // number of symbols in the compilation unit, and the number of bytes
+      // that compilation unit's strings take up in the .stabstr section.
+      // Each CU's strings are separate; the n_strx values are offsets
+      // within the current CU's portion of the .stabstr section.
+      //
+      // As an optimization, the GNU linker combines all the
+      // compilation units into one, with a single N_UNDF at the
+      // beginning. However, other linkers, like Gold, do not perform
+      // this optimization.
+      string_offset_ = next_cu_string_offset_;
+      next_cu_string_offset_ = iterator_->value;
+      ++iterator_;
+    }
+#if defined(HAVE_MACH_O_NLIST_H)
+    // Export symbols in Mach-O binaries look like this.
+    // This is necessary in order to be able to dump symbols
+    // from OS X system libraries.
+    else if ((iterator_->type & N_STAB) == 0 &&
+               (iterator_->type & N_TYPE) == N_SECT) {
+      ProcessExtern();
+    }
+#endif
+    else {
+      ++iterator_;
+    }
+  }
+  return true;
+}
+
+bool StabsReader::ProcessCompilationUnit() {
+  assert(!iterator_->at_end && iterator_->type == N_SO);
+
+  // There may be an N_SO entry whose name ends with a slash,
+  // indicating the directory in which the compilation occurred.
+  // The build directory defaults to NULL.
+  const char *build_directory = NULL;
+  {
+    const char *name = SymbolString();
+    if (name[0] && name[strlen(name) - 1] == '/') {
+      build_directory = name;
+      ++iterator_;
+    }
+  }
+
+  // We expect to see an N_SO entry with a filename next, indicating
+  // the start of the compilation unit.
+  {
+    if (iterator_->at_end || iterator_->type != N_SO)
+      return true;
+    const char *name = SymbolString();
+    if (name[0] == '\0') {
+      // This seems to be a stray end-of-compilation-unit marker;
+      // consume it, but don't report the end, since we didn't see a
+      // beginning.
+      ++iterator_;
+      return true;
+    }
+    current_source_file_ = name;
+  }
+
+  if (! handler_->StartCompilationUnit(current_source_file_,
+                                       iterator_->value,
+                                       build_directory))
+    return false;
+
+  ++iterator_;
+
+  // The STABS documentation says that some compilers may emit
+  // additional N_SO entries with names immediately following the
+  // first, and that they should be ignored.  However, the original
+  // Breakpad STABS reader doesn't ignore them, so we won't either.
+
+  // Process the body of the compilation unit, up to the next N_SO.
+  while (!iterator_->at_end && iterator_->type != N_SO) {
+    if (iterator_->type == N_FUN) {
+      if (! ProcessFunction())
+        return false;
+    } else if (iterator_->type == N_SLINE) {
+      // Mac OS X STABS place SLINE records before functions.
+      Line line;
+      // The value of an N_SLINE entry that appears outside a function is
+      // the absolute address of the line.
+      line.address = iterator_->value;
+      line.filename = current_source_file_;
+      // The n_desc of a N_SLINE entry is the line number.  It's a
+      // signed 16-bit field; line numbers from 32768 to 65535 are
+      // stored as n-65536.
+      line.number = (uint16_t) iterator_->descriptor;
+      queued_lines_.push_back(line);
+      ++iterator_;
+    } else if (iterator_->type == N_SOL) {
+      current_source_file_ = SymbolString();
+      ++iterator_;
+    } else {
+      // Ignore anything else.
+      ++iterator_;
+    }
+  }
+
+  // An N_SO with an empty name indicates the end of the compilation
+  // unit.  Default to zero.
+  uint64_t ending_address = 0;
+  if (!iterator_->at_end) {
+    assert(iterator_->type == N_SO);
+    const char *name = SymbolString();
+    if (name[0] == '\0') {
+      ending_address = iterator_->value;
+      ++iterator_;
+    }
+  }
+
+  if (! handler_->EndCompilationUnit(ending_address))
+    return false;
+
+  queued_lines_.clear();
+
+  return true;
+}
+
+bool StabsReader::ProcessFunction() {
+  assert(!iterator_->at_end && iterator_->type == N_FUN);
+
+  uint64_t function_address = iterator_->value;
+  // The STABS string for an N_FUN entry is the name of the function,
+  // followed by a colon, followed by type information for the
+  // function.  We want to pass the name alone to StartFunction.
+  const char *stab_string = SymbolString();
+  const char *name_end = strchr(stab_string, ':');
+  if (! name_end)
+    name_end = stab_string + strlen(stab_string);
+  string name(stab_string, name_end - stab_string);
+  if (! handler_->StartFunction(name, function_address))
+    return false;
+  ++iterator_;
+
+  // If there were any SLINE records given before the function, report them now.
+  for (vector<Line>::const_iterator it = queued_lines_.begin();
+       it != queued_lines_.end(); it++) {
+    if (!handler_->Line(it->address, it->filename, it->number))
+      return false;
+  }
+  queued_lines_.clear();
+
+  while (!iterator_->at_end) {
+    if (iterator_->type == N_SO || iterator_->type == N_FUN)
+      break;
+    else if (iterator_->type == N_SLINE) {
+      // The value of an N_SLINE entry is the offset of the line from
+      // the function's start address.
+      uint64_t line_address = function_address + iterator_->value;
+      // The n_desc of a N_SLINE entry is the line number.  It's a
+      // signed 16-bit field; line numbers from 32768 to 65535 are
+      // stored as n-65536.
+      uint16_t line_number = iterator_->descriptor;
+      if (! handler_->Line(line_address, current_source_file_, line_number))
+        return false;
+      ++iterator_;
+    } else if (iterator_->type == N_SOL) {
+      current_source_file_ = SymbolString();
+      ++iterator_;
+    } else
+      // Ignore anything else.
+      ++iterator_;
+  }
+
+  // We've reached the end of the function. See if we can figure out its
+  // ending address.
+  uint64_t ending_address = 0;
+  if (!iterator_->at_end) {
+    assert(iterator_->type == N_SO || iterator_->type == N_FUN);
+    if (iterator_->type == N_FUN) {
+      const char *symbol_name = SymbolString();
+      if (symbol_name[0] == '\0') {
+        // An N_FUN entry with no name is a terminator for this function;
+        // its value is the function's size.
+        ending_address = function_address + iterator_->value;
+        ++iterator_;
+      } else {
+        // An N_FUN entry with a name is the next function, and we can take
+        // its value as our ending address. Don't advance the iterator, as
+        // we'll use this symbol to start the next function as well.
+        ending_address = iterator_->value;
+      }
+    } else {
+      // An N_SO entry could be an end-of-compilation-unit marker, or the
+      // start of the next compilation unit, but in either case, its value
+      // is our ending address. We don't advance the iterator;
+      // ProcessCompilationUnit will decide what to do with this symbol.
+      ending_address = iterator_->value;
+    }
+  }
+
+  if (! handler_->EndFunction(ending_address))
+    return false;
+
+  return true;
+}
+
+bool StabsReader::ProcessExtern() {
+#if defined(HAVE_MACH_O_NLIST_H)
+  assert(!iterator_->at_end &&
+         (iterator_->type & N_STAB) == 0 &&
+         (iterator_->type & N_TYPE) == N_SECT);
+#endif
+
+  // TODO(mark): only do symbols in the text section?
+  if (!handler_->Extern(SymbolString(), iterator_->value))
+    return false;
+
+  ++iterator_;
+  return true;
+}
+
+} // namespace google_breakpad
diff --git a/google-breakpad/src/common/stabs_reader.h b/google-breakpad/src/common/stabs_reader.h
new file mode 100644
index 0000000..d89afc0
--- /dev/null
+++ b/google-breakpad/src/common/stabs_reader.h
@@ -0,0 +1,326 @@
+// -*- mode: c++ -*-
+
+// Copyright (c) 2010 Google Inc. All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// stabs_reader.h: Define StabsReader, a parser for STABS debugging
+// information. A description of the STABS debugging format can be
+// found at:
+//
+//    http://sourceware.org/gdb/current/onlinedocs/stabs_toc.html
+//
+// The comments here assume you understand the format.
+//
+// This parser can handle big-endian and little-endian data, and the symbol
+// values may be either 32 or 64 bits long. It handles both STABS in
+// sections (as used on Linux) and STABS appearing directly in an
+// a.out-like symbol table (as used in Darwin OS X Mach-O files).
+
+#ifndef COMMON_STABS_READER_H__
+#define COMMON_STABS_READER_H__
+
+#include <stddef.h>
+#include <stdint.h>
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_A_OUT_H
+#include <a.out.h>
+#endif
+#ifdef HAVE_MACH_O_NLIST_H
+#include <mach-o/nlist.h>
+#endif
+
+#include <string>
+#include <vector>
+
+#include "common/byte_cursor.h"
+#include "common/using_std_string.h"
+
+namespace google_breakpad {
+
+class StabsHandler;
+
+class StabsReader {
+ public:
+  // Create a reader for the STABS debug information whose .stab section is
+  // being traversed by ITERATOR, and whose .stabstr section is referred to
+  // by STRINGS. The reader will call the member functions of HANDLER to
+  // report the information it finds, when the reader's 'Process' member
+  // function is called.
+  //
+  // BIG_ENDIAN should be true if the entries in the .stab section are in
+  // big-endian form, or false if they are in little-endian form.
+  //
+  // VALUE_SIZE should be either 4 or 8, indicating the size of the 'value'
+  // field in each entry in bytes.
+  //
+  // UNITIZED should be true if the STABS data is stored in units with
+  // N_UNDF headers. This is usually the case for STABS stored in sections,
+  // like .stab/.stabstr, and usually not the case for STABS stored in the
+  // actual symbol table; UNITIZED should be true when parsing Linux stabs,
+  // false when parsing Mac OS X STABS. For details, see:
+  // http://sourceware.org/gdb/current/onlinedocs/stabs/Stab-Section-Basics.html
+  // 
+  // Note that, in ELF, the .stabstr section should be found using the
+  // 'sh_link' field of the .stab section header, not by name.
+  StabsReader(const uint8_t *stab,    size_t stab_size,
+              const uint8_t *stabstr, size_t stabstr_size,
+              bool big_endian, size_t value_size, bool unitized,
+              StabsHandler *handler);
+
+  // Process the STABS data, calling the handler's member functions to
+  // report what we find.  While the handler functions return true,
+  // continue to process until we reach the end of the section.  If we
+  // processed the entire section and all handlers returned true,
+  // return true.  If any handler returned false, return false.
+  // 
+  // This is only meant to be called once per StabsReader instance;
+  // resuming a prior processing pass that stopped abruptly isn't supported.
+  bool Process();
+
+ private:
+
+  // An class for walking arrays of STABS entries. This isolates the main
+  // STABS reader from the exact format (size; endianness) of the entries
+  // themselves.
+  class EntryIterator {
+   public:
+    // The contents of a STABS entry, adjusted for the host's endianness,
+    // word size, 'struct nlist' layout, and so on.
+    struct Entry {
+      // True if this iterator has reached the end of the entry array. When
+      // this is set, the other members of this structure are not valid.
+      bool at_end;
+
+      // The number of this entry within the list.
+      size_t index;
+
+      // The current entry's name offset. This is the offset within the
+      // current compilation unit's strings, as establish by the N_UNDF entries.
+      size_t name_offset;
+
+      // The current entry's type, 'other' field, descriptor, and value.
+      unsigned char type;
+      unsigned char other;
+      short descriptor;
+      uint64_t value;
+    };
+
+    // Create a EntryIterator walking the entries in BUFFER. Treat the
+    // entries as big-endian if BIG_ENDIAN is true, as little-endian
+    // otherwise. Assume each entry has a 'value' field whose size is
+    // VALUE_SIZE.
+    //
+    // This would not be terribly clean to extend to other format variations,
+    // but it's enough to handle Linux and Mac, and we'd like STABS to die
+    // anyway.
+    //
+    // For the record: on Linux, STABS entry values are always 32 bits,
+    // regardless of the architecture address size (don't ask me why); on
+    // Mac, they are 32 or 64 bits long. Oddly, the section header's entry
+    // size for a Linux ELF .stab section varies according to the ELF class
+    // from 12 to 20 even as the actual entries remain unchanged.
+    EntryIterator(const ByteBuffer *buffer, bool big_endian, size_t value_size);
+
+    // Move to the next entry. This function's behavior is undefined if
+    // at_end() is true when it is called.
+    EntryIterator &operator++() { Fetch(); entry_.index++; return *this; }
+
+    // Dereferencing this iterator produces a reference to an Entry structure
+    // that holds the current entry's values. The entry is owned by this
+    // EntryIterator, and will be invalidated at the next call to operator++.
+    const Entry &operator*() const { return entry_; }
+    const Entry *operator->() const { return &entry_; }
+
+   private:
+    // Read the STABS entry at cursor_, and set entry_ appropriately.
+    void Fetch();
+
+    // The size of entries' value field, in bytes.
+    size_t value_size_;
+
+    // A byte cursor traversing buffer_.
+    ByteCursor cursor_;
+
+    // Values for the entry this iterator refers to.
+    Entry entry_;
+  };
+
+  // A source line, saved to be reported later.
+  struct Line {
+    uint64_t address;
+    const char *filename;
+    int number;
+  };
+
+  // Return the name of the current symbol.
+  const char *SymbolString();
+
+  // Process a compilation unit starting at symbol_.  Return true
+  // to continue processing, or false to abort.
+  bool ProcessCompilationUnit();
+
+  // Process a function in current_source_file_ starting at symbol_.
+  // Return true to continue processing, or false to abort.
+  bool ProcessFunction();
+
+  // Process an exported function symbol.
+  // Return true to continue processing, or false to abort.
+  bool ProcessExtern();
+
+  // The STABS entries being parsed.
+  ByteBuffer entries_;
+
+  // The string section to which the entries refer.
+  ByteBuffer strings_;
+
+  // The iterator walking the STABS entries.
+  EntryIterator iterator_;
+
+  // True if the data is "unitized"; see the explanation in the comment for
+  // StabsReader::StabsReader.
+  bool unitized_;
+
+  StabsHandler *handler_;
+
+  // The offset of the current compilation unit's strings within stabstr_.
+  size_t string_offset_;
+
+  // The value string_offset_ should have for the next compilation unit,
+  // as established by N_UNDF entries.
+  size_t next_cu_string_offset_;
+
+  // The current source file name.
+  const char *current_source_file_;
+
+  // Mac OS X STABS place SLINE records before functions; we accumulate a
+  // vector of these until we see the FUN record, and then report them
+  // after the StartFunction call.
+  std::vector<Line> queued_lines_;
+};
+
+// Consumer-provided callback structure for the STABS reader.  Clients
+// of the STABS reader provide an instance of this structure.  The
+// reader then invokes the member functions of that instance to report
+// the information it finds.
+//
+// The default definitions of the member functions do nothing, and return
+// true so processing will continue.
+class StabsHandler {
+ public:
+  StabsHandler() { }
+  virtual ~StabsHandler() { }
+
+  // Some general notes about the handler callback functions:
+
+  // Processing proceeds until the end of the .stabs section, or until
+  // one of these functions returns false.
+
+  // The addresses given are as reported in the STABS info, without
+  // regard for whether the module may be loaded at different
+  // addresses at different times (a shared library, say).  When
+  // processing STABS from an ELF shared library, the addresses given
+  // all assume the library is loaded at its nominal load address.
+  // They are *not* offsets from the nominal load address.  If you
+  // want offsets, you must subtract off the library's nominal load
+  // address.
+
+  // The arguments to these functions named FILENAME are all
+  // references to strings stored in the .stabstr section.  Because
+  // both the Linux and Solaris linkers factor out duplicate strings
+  // from the .stabstr section, the consumer can assume that if two
+  // FILENAME values are different addresses, they represent different
+  // file names.
+  //
+  // Thus, it's safe to use (say) std::map<char *, ...>, which does
+  // string address comparisons, not string content comparisons.
+  // Since all the strings are in same array of characters --- the
+  // .stabstr section --- comparing their addresses produces
+  // predictable, if not lexicographically meaningful, results.
+
+  // Begin processing a compilation unit whose main source file is
+  // named FILENAME, and whose base address is ADDRESS.  If
+  // BUILD_DIRECTORY is non-NULL, it is the name of the build
+  // directory in which the compilation occurred.
+  virtual bool StartCompilationUnit(const char *filename, uint64_t address,
+                                    const char *build_directory) {
+    return true;
+  }
+
+  // Finish processing the compilation unit.  If ADDRESS is non-zero,
+  // it is the ending address of the compilation unit.  If ADDRESS is
+  // zero, then the compilation unit's ending address is not
+  // available, and the consumer must infer it by other means.
+  virtual bool EndCompilationUnit(uint64_t address) { return true; }
+
+  // Begin processing a function named NAME, whose starting address is
+  // ADDRESS.  This function belongs to the compilation unit that was
+  // most recently started but not ended.
+  //
+  // Note that, unlike filenames, NAME is not a pointer into the
+  // .stabstr section; this is because the name as it appears in the
+  // STABS data is followed by type information.  The value passed to
+  // StartFunction is the function name alone.
+  //
+  // In languages that use name mangling, like C++, NAME is mangled.
+  virtual bool StartFunction(const string &name, uint64_t address) {
+    return true;
+  }
+
+  // Finish processing the function.  If ADDRESS is non-zero, it is
+  // the ending address for the function.  If ADDRESS is zero, then
+  // the function's ending address is not available, and the consumer
+  // must infer it by other means.
+  virtual bool EndFunction(uint64_t address) { return true; }
+  
+  // Report that the code at ADDRESS is attributable to line NUMBER of
+  // the source file named FILENAME.  The caller must infer the ending
+  // address of the line.
+  virtual bool Line(uint64_t address, const char *filename, int number) {
+    return true;
+  }
+
+  // Report that an exported function NAME is present at ADDRESS.
+  // The size of the function is unknown.
+  virtual bool Extern(const string &name, uint64_t address) {
+    return true;
+  }
+
+  // Report a warning.  FORMAT is a printf-like format string,
+  // specifying how to format the subsequent arguments.
+  virtual void Warning(const char *format, ...) = 0;
+};
+
+} // namespace google_breakpad
+
+#endif  // COMMON_STABS_READER_H__
diff --git a/google-breakpad/src/common/stabs_reader_unittest.cc b/google-breakpad/src/common/stabs_reader_unittest.cc
new file mode 100644
index 0000000..a84da1c
--- /dev/null
+++ b/google-breakpad/src/common/stabs_reader_unittest.cc
@@ -0,0 +1,611 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// stabs_reader_unittest.cc: Unit tests for google_breakpad::StabsReader.
+
+#include <assert.h>
+#include <errno.h>
+#include <stab.h>
+#include <stdarg.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <fstream>
+#include <iomanip>
+#include <iostream>
+#include <map>
+#include <sstream>
+#include <string>
+
+#include "breakpad_googletest_includes.h"
+#include "common/stabs_reader.h"
+#include "common/test_assembler.h"
+#include "common/using_std_string.h"
+
+using ::testing::Eq;
+using ::testing::InSequence;
+using ::testing::Return;
+using ::testing::StrEq;
+using ::testing::Test;
+using ::testing::_;
+using google_breakpad::StabsHandler;
+using google_breakpad::StabsReader;
+using google_breakpad::test_assembler::Label;
+using google_breakpad::test_assembler::Section;
+using google_breakpad::test_assembler::kBigEndian;
+using google_breakpad::test_assembler::kLittleEndian;
+using std::map;
+
+namespace {
+
+// A StringAssembler is a class for generating .stabstr sections to present
+// as input to the STABS parser.
+class StringAssembler: public Section {
+ public:
+  StringAssembler() : in_cu_(false) { StartCU(); }
+
+  // Add the string S to this StringAssembler, and return the string's
+  // offset within this compilation unit's strings. If S has been added
+  // already, this returns the offset of its first instance.
+  size_t Add(const string &s) {
+    map<string, size_t>::iterator it = added_.find(s);
+    if (it != added_.end())
+      return it->second;
+    size_t offset = Size() - cu_start_;
+    AppendCString(s);
+    added_[s] = offset;
+    return offset;
+  }
+
+  // Start a fresh compilation unit string collection.
+  void StartCU() {
+    // Ignore duplicate calls to StartCU. Our test data don't always call
+    // StartCU at all, meaning that our constructor has to take care of it,
+    // meaning that tests that *do* call StartCU call it twice at the
+    // beginning.  This is not worth smoothing out.
+    if (in_cu_) return;
+
+    added_.clear();
+    cu_start_ = Size();
+
+    // Each compilation unit's strings start with an empty string.
+    AppendCString("");
+    added_[""] = 0;
+
+    in_cu_ = true;
+  }
+
+  // Finish off the current CU's strings.
+  size_t EndCU() {
+    assert(in_cu_);
+    in_cu_ = false;
+    return Size() - cu_start_;
+  }
+
+ private:
+  // The offset of the start of this compilation unit's strings.
+  size_t cu_start_;
+
+  // True if we're in a CU.
+  bool in_cu_;
+
+  // A map from the strings that have been added to this section to
+  // their starting indices within their compilation unit.
+  map<string, size_t> added_;
+};
+
+// A StabsAssembler is a class for generating .stab sections to present as
+// test input for the STABS parser.
+class StabsAssembler: public Section {
+ public:
+  // Create a StabsAssembler that uses StringAssembler for its strings.
+  StabsAssembler(StringAssembler *string_assembler)
+      : Section(string_assembler->endianness()),
+        string_assembler_(string_assembler),
+        value_size_(0),
+        entry_count_(0),
+        cu_header_(NULL) { }
+  ~StabsAssembler() { assert(!cu_header_); }
+
+  // Accessor and setter for value_size_.
+  size_t value_size() const { return value_size_; }
+  StabsAssembler &set_value_size(size_t value_size) {
+    value_size_ = value_size;
+    return *this;
+  }
+
+  // Append a STAB entry to the end of this section with the given
+  // characteristics. NAME is the offset of this entry's name string within
+  // its compilation unit's portion of the .stabstr section; this can be a
+  // value generated by a StringAssembler. Return a reference to this
+  // StabsAssembler.
+  StabsAssembler &Stab(uint8_t type, uint8_t other, Label descriptor,
+                       Label value, Label name) {
+    D32(name);
+    D8(type);
+    D8(other);
+    D16(descriptor);
+    Append(endianness(), value_size_, value);
+    entry_count_++;
+    return *this;
+  }
+
+  // As above, but automatically add NAME to our StringAssembler.
+  StabsAssembler &Stab(uint8_t type, uint8_t other, Label descriptor,
+                       Label value, const string &name) {
+    return Stab(type, other, descriptor, value, string_assembler_->Add(name));
+  }
+
+  // Start a compilation unit named NAME, with an N_UNDF symbol to start
+  // it, and its own portion of the string section. Return a reference to
+  // this StabsAssembler.
+  StabsAssembler &StartCU(const string &name) {
+    assert(!cu_header_);
+    cu_header_ = new CUHeader;
+    string_assembler_->StartCU();
+    entry_count_ = 0;
+    return Stab(N_UNDF, 0,
+                cu_header_->final_entry_count,
+                cu_header_->final_string_size,
+                string_assembler_->Add(name));
+  }
+
+  // Close off the current compilation unit. Return a reference to this
+  // StabsAssembler.
+  StabsAssembler &EndCU() {
+    assert(cu_header_);
+    cu_header_->final_entry_count = entry_count_;
+    cu_header_->final_string_size = string_assembler_->EndCU();
+    delete cu_header_;
+    cu_header_ = NULL;
+    return *this;
+  }
+
+ private:
+  // Data used in a compilation unit header STAB that we won't know until
+  // we've finished the compilation unit.
+  struct CUHeader {
+    // The final number of entries this compilation unit will hold.
+    Label final_entry_count;
+
+    // The final size of this compilation unit's strings.
+    Label final_string_size;
+  };
+
+  // The strings for our STABS entries.
+  StringAssembler *string_assembler_;
+
+  // The size of the 'value' field of stabs entries in this section.
+  size_t value_size_;
+
+  // The number of entries in this compilation unit so far.
+  size_t entry_count_;
+
+  // Header labels for this compilation unit, if we've started one but not
+  // finished it.
+  CUHeader *cu_header_;
+};
+
+class MockStabsReaderHandler: public StabsHandler {
+ public:
+  MOCK_METHOD3(StartCompilationUnit,
+               bool(const char *, uint64_t, const char *));
+  MOCK_METHOD1(EndCompilationUnit, bool(uint64_t));
+  MOCK_METHOD2(StartFunction, bool(const string &, uint64_t));
+  MOCK_METHOD1(EndFunction, bool(uint64_t));
+  MOCK_METHOD3(Line, bool(uint64_t, const char *, int));
+  MOCK_METHOD2(Extern, bool(const string &, uint64_t));
+  void Warning(const char *format, ...) { MockWarning(format); }
+  MOCK_METHOD1(MockWarning, void(const char *));
+};
+
+struct StabsFixture {
+  StabsFixture() : stabs(&strings), unitized(true) { }
+
+  // Create a StabsReader to parse the mock stabs data in stabs and
+  // strings, and pass the parsed information to mock_handler. Use the
+  // endianness and value size of stabs to parse the data. If all goes
+  // well, return the result of calling the reader's Process member
+  // function. Otherwise, return false.
+  bool ApplyHandlerToMockStabsData() {
+    string stabs_contents, stabstr_contents;
+    if (!stabs.GetContents(&stabs_contents) ||
+        !strings.GetContents(&stabstr_contents))
+      return false;
+
+    // Run the parser on the test input, passing whatever we find to HANDLER.
+    StabsReader reader(
+        reinterpret_cast<const uint8_t *>(stabs_contents.data()),
+        stabs_contents.size(),
+        reinterpret_cast<const uint8_t *>(stabstr_contents.data()),
+        stabstr_contents.size(),
+        stabs.endianness() == kBigEndian, stabs.value_size(), unitized,
+        &mock_handler);
+    return reader.Process();
+  }
+
+  StringAssembler strings;
+  StabsAssembler stabs;
+  bool unitized;
+  MockStabsReaderHandler mock_handler;
+};
+
+class Stabs: public StabsFixture, public Test { };
+
+TEST_F(Stabs, MockStabsInput) {
+  stabs.set_endianness(kLittleEndian);
+  stabs.set_value_size(4);
+  stabs
+      .Stab(N_SO,      149, 40232, 0x18a2a72bU, "builddir/")
+      .Stab(N_FUN,      83, 50010, 0x91a5353fU,
+            "not the SO with source file name we expected ")
+      .Stab(N_SO,      165, 24791, 0xfe69d23cU, "")
+      .Stab(N_SO,      184, 34178, 0xca4d883aU, "builddir1/")
+      .Stab(N_SO,       83, 40859, 0xd2fe5df3U, "file1.c")
+      .Stab(N_LSYM,    147, 39565, 0x60d4bb8aU, "not the FUN we're looking for")
+      .Stab(N_FUN,     120, 50271, 0xa049f4b1U, "fun1")
+      .Stab(N_BINCL,   150, 15694, 0xef65c659U,
+            "something to ignore in a FUN body")
+      .Stab(N_SLINE,   147,  4967, 0xd904b3f, "")
+      .Stab(N_SOL,     177, 56135, 0xbd97b1dcU, "header.h")
+      .Stab(N_SLINE,   130, 24610, 0x90f145b, "")
+      .Stab(N_FUN,      45, 32441, 0xbf27cf93U,
+            "fun2:some stabs type info here:to trim from the name")
+      .Stab(N_SLINE,   138, 39002, 0x8148b87, "")
+      .Stab(N_SOL,      60, 49318, 0x1d06e025U, "file1.c")
+      .Stab(N_SLINE,    29, 52163, 0x6eebbb7, "")
+      .Stab(N_SO,      167,  4647, 0xd04b7448U, "")
+      .Stab(N_LSYM,     58, 37837, 0xe6b14d37U, "")
+      .Stab(N_SO,      152,  7810, 0x11759f10U, "file3.c")
+      .Stab(N_SO,      218, 12447, 0x11cfe4b5U, "");
+
+  {
+    InSequence s;
+
+    EXPECT_CALL(mock_handler,
+                StartCompilationUnit(StrEq("file1.c"), 0xd2fe5df3U,
+                                     StrEq("builddir1/")))
+        .WillOnce(Return(true));
+    EXPECT_CALL(mock_handler, StartFunction(StrEq("fun1"), 0xa049f4b1U))
+        .WillOnce(Return(true));
+    EXPECT_CALL(mock_handler,
+                Line(0xa049f4b1U + 0xd904b3f, StrEq("file1.c"), 4967))
+        .WillOnce(Return(true));
+    EXPECT_CALL(mock_handler,
+                Line(0xa049f4b1U + 0x90f145b, StrEq("header.h"), 24610))
+        .WillOnce(Return(true));
+    EXPECT_CALL(mock_handler, EndFunction(0xbf27cf93U))
+        .WillOnce(Return(true));
+    EXPECT_CALL(mock_handler, StartFunction(StrEq("fun2"), 0xbf27cf93U))
+        .WillOnce(Return(true));
+    EXPECT_CALL(mock_handler,
+                Line(0xbf27cf93U + 0x8148b87, StrEq("header.h"), 39002))
+        .WillOnce(Return(true));
+    EXPECT_CALL(mock_handler,
+                Line(0xbf27cf93U + 0x6eebbb7, StrEq("file1.c"), 52163))
+        .WillOnce(Return(true));
+    EXPECT_CALL(mock_handler, EndFunction(0xd04b7448U))
+        .WillOnce(Return(true));
+    EXPECT_CALL(mock_handler, EndCompilationUnit(0xd04b7448U))
+        .WillOnce(Return(true));
+    EXPECT_CALL(mock_handler, StartCompilationUnit(StrEq("file3.c"),
+                                                   0x11759f10U, NULL))
+        .WillOnce(Return(true));
+    EXPECT_CALL(mock_handler, EndCompilationUnit(0x11cfe4b5U))
+        .WillOnce(Return(true));
+  }
+
+  ASSERT_TRUE(ApplyHandlerToMockStabsData());
+}
+
+TEST_F(Stabs, AbruptCU) {
+  stabs.set_endianness(kBigEndian);
+  stabs.set_value_size(4);
+  stabs.Stab(N_SO, 177, 23446, 0xbf10d5e4, "file2-1.c");
+
+  {
+    InSequence s;
+
+    EXPECT_CALL(mock_handler,
+                StartCompilationUnit(StrEq("file2-1.c"), 0xbf10d5e4, NULL))
+        .WillOnce(Return(true));
+    EXPECT_CALL(mock_handler, EndCompilationUnit(0))
+        .WillOnce(Return(true));
+  }
+
+  ASSERT_TRUE(ApplyHandlerToMockStabsData());
+}
+
+TEST_F(Stabs, AbruptFunction) {
+  stabs.set_endianness(kLittleEndian);
+  stabs.set_value_size(8);
+  stabs
+      .Stab(N_SO,      218,   26631,   0xb83ddf10U, "file3-1.c")
+      .Stab(N_FUN,     113,   24765,   0xbbd4a145U, "fun3_1");
+
+  {
+    InSequence s;
+
+    EXPECT_CALL(mock_handler,
+                StartCompilationUnit(StrEq("file3-1.c"), 0xb83ddf10U, NULL))
+        .WillOnce(Return(true));
+    EXPECT_CALL(mock_handler, StartFunction(StrEq("fun3_1"), 0xbbd4a145U))
+        .WillOnce(Return(true));
+    EXPECT_CALL(mock_handler, EndFunction(0))
+        .WillOnce(Return(true));
+    EXPECT_CALL(mock_handler, EndCompilationUnit(0))
+        .WillOnce(Return(true));
+  }
+
+  ASSERT_TRUE(ApplyHandlerToMockStabsData());
+}
+
+TEST_F(Stabs, NoCU) {
+  stabs.set_endianness(kBigEndian);
+  stabs.set_value_size(8);
+  stabs.Stab(N_SO, 161, 25673, 0x8f676e7bU, "build-directory/");
+
+  EXPECT_CALL(mock_handler, StartCompilationUnit(_, _, _))
+      .Times(0);
+  EXPECT_CALL(mock_handler, StartFunction(_, _))
+      .Times(0);
+
+  ASSERT_TRUE(ApplyHandlerToMockStabsData());
+}
+
+TEST_F(Stabs, NoCUEnd) {
+  stabs.set_endianness(kBigEndian);
+  stabs.set_value_size(8);
+  stabs
+      .Stab(N_SO,      116,   58280,   0x2f7493c9U, "file5-1.c")
+      .Stab(N_SO,      224,   23057,   0xf9f1d50fU, "file5-2.c");
+
+  {
+    InSequence s;
+
+    EXPECT_CALL(mock_handler,
+                StartCompilationUnit(StrEq("file5-1.c"), 0x2f7493c9U, NULL))
+        .WillOnce(Return(true));
+    EXPECT_CALL(mock_handler, EndCompilationUnit(0))
+        .WillOnce(Return(true));
+    EXPECT_CALL(mock_handler,
+                StartCompilationUnit(StrEq("file5-2.c"), 0xf9f1d50fU, NULL))
+        .WillOnce(Return(true));
+    EXPECT_CALL(mock_handler, EndCompilationUnit(0))
+        .WillOnce(Return(true));
+  }
+
+  ASSERT_TRUE(ApplyHandlerToMockStabsData());
+}
+
+// On systems that store STABS in sections, string offsets are relative to
+// the beginning of that compilation unit's strings, marked with N_UNDF
+// symbols; see the comments for StabsReader::StabsReader.
+TEST_F(Stabs, Unitized) {
+  stabs.set_endianness(kBigEndian);
+  stabs.set_value_size(4);
+  stabs
+      .StartCU("antimony")
+      .Stab(N_SO,   49, 26043, 0x7e259f1aU, "antimony")
+      .Stab(N_FUN, 101, 63253, 0x7fbcccaeU, "arsenic")
+      .Stab(N_SO,  124, 37175, 0x80b0014cU, "")
+      .EndCU()
+      .StartCU("aluminum")
+      .Stab(N_SO,   72, 23084, 0x86756839U, "aluminum")
+      .Stab(N_FUN,  59,  3305, 0xa8e120b0U, "selenium")
+      .Stab(N_SO,  178, 56949, 0xbffff983U, "")
+      .EndCU();
+
+  {
+    InSequence s;
+    EXPECT_CALL(mock_handler,
+                StartCompilationUnit(StrEq("antimony"), 0x7e259f1aU, NULL))
+        .WillOnce(Return(true));
+    EXPECT_CALL(mock_handler, StartFunction(Eq("arsenic"), 0x7fbcccaeU))
+        .WillOnce(Return(true));
+    EXPECT_CALL(mock_handler, EndFunction(0x80b0014cU))
+        .WillOnce(Return(true));
+    EXPECT_CALL(mock_handler, EndCompilationUnit(0x80b0014cU))
+        .WillOnce(Return(true));
+    EXPECT_CALL(mock_handler,
+                StartCompilationUnit(StrEq("aluminum"), 0x86756839U, NULL))
+        .WillOnce(Return(true));
+    EXPECT_CALL(mock_handler, StartFunction(Eq("selenium"), 0xa8e120b0U))
+        .WillOnce(Return(true));
+    EXPECT_CALL(mock_handler, EndFunction(0xbffff983U))
+        .WillOnce(Return(true));
+    EXPECT_CALL(mock_handler, EndCompilationUnit(0xbffff983U))
+        .WillOnce(Return(true));
+  }
+
+  ASSERT_TRUE(ApplyHandlerToMockStabsData());
+}
+
+// On systems that store STABS entries in the real symbol table, the N_UNDF
+// entries have no special meaning, and shouldn't mess up the string
+// indices.
+TEST_F(Stabs, NonUnitized) {
+  stabs.set_endianness(kLittleEndian);
+  stabs.set_value_size(4);
+  unitized = false;
+  stabs
+      .Stab(N_UNDF,    21, 11551, 0x9bad2b2e, "")
+      .Stab(N_UNDF,    21, 11551, 0x9bad2b2e, "")
+      .Stab(N_SO,      71, 45139, 0x11a97352, "Tanzania")
+      .Stab(N_SO,     221, 41976, 0x21a97352, "");
+
+  {
+    InSequence s;
+    EXPECT_CALL(mock_handler,
+                StartCompilationUnit(StrEq("Tanzania"),
+                                     0x11a97352, NULL))
+        .WillOnce(Return(true));
+    EXPECT_CALL(mock_handler, EndCompilationUnit(0x21a97352))
+        .WillOnce(Return(true));
+  }
+
+  ASSERT_TRUE(ApplyHandlerToMockStabsData());
+}
+
+TEST_F(Stabs, FunctionEnd) {
+  stabs.set_endianness(kLittleEndian);
+  stabs.set_value_size(8);
+  stabs
+      .Stab(N_SO,    102, 62362, 0x52a830d644cd6942ULL, "compilation unit")
+      // This function is terminated by the start of the next function.
+      .Stab(N_FUN,   216, 38405, 0xbb5ab70ecdd23bfeULL, "function 1")
+      // This function is terminated by an explicit end-of-function stab,
+      // whose value is a size in bytes.
+      .Stab(N_FUN,   240, 10973, 0xc954de9b8fb3e5e2ULL, "function 2")
+      .Stab(N_FUN,    14, 36749, 0xc1ab,     "")
+      // This function is terminated by the end of the compilation unit.
+      .Stab(N_FUN,   143, 64514, 0xdff98c9a35386e1fULL, "function 3")
+      .Stab(N_SO,    164, 60142, 0xfdacb856e78bbf57ULL, "");
+
+  {
+    InSequence s;
+    EXPECT_CALL(mock_handler,
+                StartCompilationUnit(StrEq("compilation unit"),
+                                     0x52a830d644cd6942ULL, NULL))
+        .WillOnce(Return(true));
+    EXPECT_CALL(mock_handler,
+                StartFunction(Eq("function 1"), 0xbb5ab70ecdd23bfeULL))
+        .WillOnce(Return(true));
+    EXPECT_CALL(mock_handler, EndFunction(0xc954de9b8fb3e5e2ULL))
+        .WillOnce(Return(true));
+    EXPECT_CALL(mock_handler,
+                StartFunction(Eq("function 2"), 0xc954de9b8fb3e5e2ULL))
+        .WillOnce(Return(true));
+    EXPECT_CALL(mock_handler, EndFunction(0xc954de9b8fb3e5e2ULL + 0xc1ab))
+        .WillOnce(Return(true));
+    EXPECT_CALL(mock_handler,
+                StartFunction(Eq("function 3"), 0xdff98c9a35386e1fULL))
+        .WillOnce(Return(true));
+    EXPECT_CALL(mock_handler, EndFunction(0xfdacb856e78bbf57ULL))
+        .WillOnce(Return(true));
+    EXPECT_CALL(mock_handler, EndCompilationUnit(0xfdacb856e78bbf57ULL))
+        .WillOnce(Return(true));
+  }
+
+  ASSERT_TRUE(ApplyHandlerToMockStabsData());
+}
+
+// On Mac OS X, SLINE records can appear before the FUN stab to which they
+// belong, and their values are absolute addresses, not offsets.
+TEST_F(Stabs, LeadingLine) {
+  stabs.set_endianness(kBigEndian);
+  stabs.set_value_size(4);
+  stabs
+      .Stab(N_SO,    179, 27357, 0x8adabc15, "build directory/")
+      .Stab(N_SO,     52, 53058, 0x4c7e3bf4, "compilation unit")
+      .Stab(N_SOL,   165, 12086, 0x6a797ca3, "source file name")
+      .Stab(N_SLINE, 229, 20015, 0x4cb3d7e0, "")
+      .Stab(N_SLINE,  89, 43802, 0x4cba8b88, "")
+      .Stab(N_FUN,   251, 51639, 0xce1b98fa, "rutabaga")
+      .Stab(N_FUN,   218, 16113, 0x5798,     "")
+      .Stab(N_SO,     52, 53058, 0xd4af4415, "");
+
+  {
+    InSequence s;
+    EXPECT_CALL(mock_handler,
+                StartCompilationUnit(StrEq("compilation unit"),
+                                     0x4c7e3bf4, StrEq("build directory/")))
+        .WillOnce(Return(true));
+    EXPECT_CALL(mock_handler,
+                StartFunction(Eq("rutabaga"), 0xce1b98fa))
+        .WillOnce(Return(true));
+    EXPECT_CALL(mock_handler,
+                Line(0x4cb3d7e0, StrEq("source file name"), 20015))
+        .WillOnce(Return(true));
+    EXPECT_CALL(mock_handler,
+                Line(0x4cba8b88, StrEq("source file name"), 43802))
+        .WillOnce(Return(true));
+    EXPECT_CALL(mock_handler, EndFunction(0xce1b98fa + 0x5798))
+        .WillOnce(Return(true));
+    EXPECT_CALL(mock_handler, EndCompilationUnit(0xd4af4415))
+        .WillOnce(Return(true));
+  }
+
+  ASSERT_TRUE(ApplyHandlerToMockStabsData());
+}
+
+
+#if defined(HAVE_MACH_O_NLIST_H)
+// These tests have no meaning on non-Mach-O-based systems, as
+// only Mach-O uses N_SECT to represent public symbols.
+TEST_F(Stabs, OnePublicSymbol) {
+  stabs.set_endianness(kLittleEndian);
+  stabs.set_value_size(4);
+
+  const uint32_t kExpectedAddress = 0x9000;
+  const string kExpectedFunctionName("public_function");
+  stabs
+    .Stab(N_SECT, 1, 0, kExpectedAddress, kExpectedFunctionName);
+
+  {
+    InSequence s;
+    EXPECT_CALL(mock_handler,
+                Extern(StrEq(kExpectedFunctionName),
+                       kExpectedAddress))
+        .WillOnce(Return(true));
+  }
+  ASSERT_TRUE(ApplyHandlerToMockStabsData());
+}
+
+TEST_F(Stabs, TwoPublicSymbols) {
+  stabs.set_endianness(kLittleEndian);
+  stabs.set_value_size(4);
+
+  const uint32_t kExpectedAddress1 = 0xB0B0B0B0;
+  const string kExpectedFunctionName1("public_function");
+  const uint32_t kExpectedAddress2 = 0xF0F0F0F0;
+  const string kExpectedFunctionName2("something else");
+  stabs
+    .Stab(N_SECT, 1, 0, kExpectedAddress1, kExpectedFunctionName1)
+    .Stab(N_SECT, 1, 0, kExpectedAddress2, kExpectedFunctionName2);
+
+  {
+    InSequence s;
+    EXPECT_CALL(mock_handler,
+                Extern(StrEq(kExpectedFunctionName1),
+                       kExpectedAddress1))
+        .WillOnce(Return(true));
+    EXPECT_CALL(mock_handler,
+                Extern(StrEq(kExpectedFunctionName2),
+                       kExpectedAddress2))
+        .WillOnce(Return(true));
+  }
+  ASSERT_TRUE(ApplyHandlerToMockStabsData());
+}
+
+#endif
+
+} // anonymous namespace
diff --git a/google-breakpad/src/common/stabs_to_module.cc b/google-breakpad/src/common/stabs_to_module.cc
new file mode 100644
index 0000000..0a83cf2
--- /dev/null
+++ b/google-breakpad/src/common/stabs_to_module.cc
@@ -0,0 +1,197 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// dump_stabs.cc --- implement the StabsToModule class.
+
+#include <assert.h>
+#include <cxxabi.h>
+#include <stdarg.h>
+#include <stdio.h>
+
+#include <algorithm>
+
+#include "common/stabs_to_module.h"
+#include "common/using_std_string.h"
+
+namespace google_breakpad {
+
+// Demangle using abi call.
+// Older GCC may not support it.
+static string Demangle(const string &mangled) {
+  int status = 0;
+  char *demangled = abi::__cxa_demangle(mangled.c_str(), NULL, NULL, &status);
+  if (status == 0 && demangled != NULL) {
+    string str(demangled);
+    free(demangled);
+    return str;
+  }
+  return string(mangled);
+}
+
+StabsToModule::~StabsToModule() {
+  // Free any functions we've accumulated but not added to the module.
+  for (vector<Module::Function *>::const_iterator func_it = functions_.begin();
+       func_it != functions_.end(); func_it++)
+    delete *func_it;
+  // Free any function that we're currently within.
+  delete current_function_;
+}
+
+bool StabsToModule::StartCompilationUnit(const char *name, uint64_t address,
+                                         const char *build_directory) {
+  assert(!in_compilation_unit_);
+  in_compilation_unit_ = true;
+  current_source_file_name_ = name;
+  current_source_file_ = module_->FindFile(name);
+  comp_unit_base_address_ = address;
+  boundaries_.push_back(static_cast<Module::Address>(address));
+  return true;
+}
+
+bool StabsToModule::EndCompilationUnit(uint64_t address) {
+  assert(in_compilation_unit_);
+  in_compilation_unit_ = false;
+  comp_unit_base_address_ = 0;
+  current_source_file_ = NULL;
+  current_source_file_name_ = NULL;
+  if (address)
+    boundaries_.push_back(static_cast<Module::Address>(address));
+  return true;
+}
+
+bool StabsToModule::StartFunction(const string &name,
+                                  uint64_t address) {
+  assert(!current_function_);
+  Module::Function *f = new Module::Function(Demangle(name), address);
+  f->size = 0;           // We compute this in StabsToModule::Finalize().
+  f->parameter_size = 0; // We don't provide this information.
+  current_function_ = f;
+  boundaries_.push_back(static_cast<Module::Address>(address));
+  return true;
+}
+
+bool StabsToModule::EndFunction(uint64_t address) {
+  assert(current_function_);
+  // Functions in this compilation unit should have address bigger
+  // than the compilation unit's starting address.  There may be a lot
+  // of duplicated entries for functions in the STABS data. We will
+  // count on the Module to remove the duplicates.
+  if (current_function_->address >= comp_unit_base_address_)
+    functions_.push_back(current_function_);
+  else
+    delete current_function_;
+  current_function_ = NULL;
+  if (address)
+    boundaries_.push_back(static_cast<Module::Address>(address));
+  return true;
+}
+
+bool StabsToModule::Line(uint64_t address, const char *name, int number) {
+  assert(current_function_);
+  assert(current_source_file_);
+  if (name != current_source_file_name_) {
+    current_source_file_ = module_->FindFile(name);
+    current_source_file_name_ = name;
+  }
+  Module::Line line;
+  line.address = address;
+  line.size = 0;  // We compute this in StabsToModule::Finalize().
+  line.file = current_source_file_;
+  line.number = number;
+  current_function_->lines.push_back(line);
+  return true;
+}
+
+bool StabsToModule::Extern(const string &name, uint64_t address) {
+  Module::Extern *ext = new Module::Extern(address);
+  // Older libstdc++ demangle implementations can crash on unexpected
+  // input, so be careful about what gets passed in.
+  if (name.compare(0, 3, "__Z") == 0) {
+    ext->name = Demangle(name.substr(1));
+  } else if (name[0] == '_') {
+    ext->name = name.substr(1);
+  } else {
+    ext->name = name;
+  }
+  module_->AddExtern(ext);
+  return true;
+}
+
+void StabsToModule::Warning(const char *format, ...) {
+  va_list args;
+  va_start(args, format);
+  vfprintf(stderr, format, args);
+  va_end(args);
+}
+
+void StabsToModule::Finalize() {
+  // Sort our boundary list, so we can search it quickly.
+  sort(boundaries_.begin(), boundaries_.end());
+  // Sort all functions by address, just for neatness.
+  sort(functions_.begin(), functions_.end(),
+       Module::Function::CompareByAddress);
+
+  for (vector<Module::Function *>::const_iterator func_it = functions_.begin();
+       func_it != functions_.end();
+       func_it++) {
+    Module::Function *f = *func_it;
+    // Compute the function f's size.
+    vector<Module::Address>::const_iterator boundary
+        = std::upper_bound(boundaries_.begin(), boundaries_.end(), f->address);
+    if (boundary != boundaries_.end())
+      f->size = *boundary - f->address;
+    else
+      // If this is the last function in the module, and the STABS
+      // reader was unable to give us its ending address, then assign
+      // it a bogus, very large value.  This will happen at most once
+      // per module: since we've added all functions' addresses to the
+      // boundary table, only one can be the last.
+      f->size = kFallbackSize;
+
+    // Compute sizes for each of the function f's lines --- if it has any.
+    if (!f->lines.empty()) {
+      stable_sort(f->lines.begin(), f->lines.end(),
+                  Module::Line::CompareByAddress);
+      vector<Module::Line>::iterator last_line = f->lines.end() - 1;
+      for (vector<Module::Line>::iterator line_it = f->lines.begin();
+           line_it != last_line; line_it++)
+        line_it[0].size = line_it[1].address - line_it[0].address;
+      // Compute the size of the last line from f's end address.
+      last_line->size = (f->address + f->size) - last_line->address;
+    }
+  }
+  // Now that everything has a size, add our functions to the module, and
+  // dispose of our private list.
+  module_->AddFunctions(functions_.begin(), functions_.end());
+  functions_.clear();
+}
+
+} // namespace google_breakpad
diff --git a/google-breakpad/src/common/stabs_to_module.h b/google-breakpad/src/common/stabs_to_module.h
new file mode 100644
index 0000000..5e04fa7
--- /dev/null
+++ b/google-breakpad/src/common/stabs_to_module.h
@@ -0,0 +1,143 @@
+// -*- mode: C++ -*-
+
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// dump_stabs.h: Define the StabsToModule class, which receives
+// STABS debugging information from a parser and adds it to a Breakpad
+// symbol file.
+
+#ifndef BREAKPAD_COMMON_STABS_TO_MODULE_H_
+#define BREAKPAD_COMMON_STABS_TO_MODULE_H_
+
+#include <stdint.h>
+
+#include <string>
+#include <vector>
+
+#include "common/module.h"
+#include "common/stabs_reader.h"
+#include "common/using_std_string.h"
+
+namespace google_breakpad {
+
+using std::vector;
+
+// A StabsToModule is a handler that receives parsed STABS debugging 
+// information from a StabsReader, and uses that to populate
+// a Module. (All classes are in the google_breakpad namespace.) A
+// Module represents the contents of a Breakpad symbol file, and knows
+// how to write itself out as such. A StabsToModule thus acts as
+// the bridge between STABS and Breakpad data.
+// When processing Darwin Mach-O files, this also receives public linker
+// symbols, like those found in system libraries.
+class StabsToModule: public google_breakpad::StabsHandler {
+ public:
+  // Receive parsed debugging information from a StabsReader, and
+  // store it all in MODULE.
+  StabsToModule(Module *module) :
+      module_(module),
+      in_compilation_unit_(false),
+      comp_unit_base_address_(0),
+      current_function_(NULL),
+      current_source_file_(NULL),
+      current_source_file_name_(NULL) { }
+  ~StabsToModule();
+
+  // The standard StabsHandler virtual member functions.
+  bool StartCompilationUnit(const char *name, uint64_t address,
+                            const char *build_directory);
+  bool EndCompilationUnit(uint64_t address);
+  bool StartFunction(const string &name, uint64_t address);
+  bool EndFunction(uint64_t address);
+  bool Line(uint64_t address, const char *name, int number);
+  bool Extern(const string &name, uint64_t address);
+  void Warning(const char *format, ...);
+
+  // Do any final processing necessary to make module_ contain all the
+  // data provided by the STABS reader.
+  //
+  // Because STABS does not provide reliable size information for
+  // functions and lines, we need to make a pass over the data after
+  // processing all the STABS to compute those sizes.  We take care of
+  // that here.
+  void Finalize();
+
+ private:
+
+  // An arbitrary, but very large, size to use for functions whose
+  // size we can't compute properly.
+  static const uint64_t kFallbackSize = 0x10000000;
+
+  // The module we're contributing debugging info to.
+  Module *module_;
+
+  // The functions we've generated so far.  We don't add these to
+  // module_ as we parse them.  Instead, we wait until we've computed
+  // their ending address, and their lines' ending addresses.
+  //
+  // We could just stick them in module_ from the outset, but if
+  // module_ already contains data gathered from other debugging
+  // formats, that would complicate the size computation.
+  vector<Module::Function *> functions_;
+
+  // Boundary addresses.  STABS doesn't necessarily supply sizes for
+  // functions and lines, so we need to compute them ourselves by
+  // finding the next object.
+  vector<Module::Address> boundaries_;
+
+  // True if we are currently within a compilation unit: we have gotten a
+  // StartCompilationUnit call, but no matching EndCompilationUnit call
+  // yet. We use this for sanity checks.
+  bool in_compilation_unit_;
+
+  // The base address of the current compilation unit.  We use this to
+  // recognize functions we should omit from the symbol file.  (If you
+  // know the details of why we omit these, please patch this
+  // comment.)
+  Module::Address comp_unit_base_address_;
+
+  // The function we're currently contributing lines to.
+  Module::Function *current_function_;
+
+  // The last Module::File we got a line number in.
+  Module::File *current_source_file_;
+
+  // The pointer in the .stabstr section of the name that
+  // current_source_file_ is built from.  This allows us to quickly
+  // recognize when the current line is in the same file as the
+  // previous one (which it usually is).
+  const char *current_source_file_name_;
+};
+
+}  // namespace google_breakpad
+
+#endif  // BREAKPAD_COMMON_STABS_TO_MODULE_H_
diff --git a/google-breakpad/src/common/stabs_to_module_unittest.cc b/google-breakpad/src/common/stabs_to_module_unittest.cc
new file mode 100644
index 0000000..d445d1d
--- /dev/null
+++ b/google-breakpad/src/common/stabs_to_module_unittest.cc
@@ -0,0 +1,258 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// dump_stabs_unittest.cc: Unit tests for StabsToModule.
+
+#include <vector>
+
+#include "breakpad_googletest_includes.h"
+#include "common/stabs_to_module.h"
+
+using google_breakpad::Module;
+using google_breakpad::StabsToModule;
+using std::vector;
+
+TEST(StabsToModule, SimpleCU) {
+  Module m("name", "os", "arch", "id");
+  StabsToModule h(&m);
+
+  // Feed in a simple compilation unit that defines a function with
+  // one line.
+  EXPECT_TRUE(h.StartCompilationUnit("compilation-unit", 0x9f4d1271e50db93bLL,
+                                     "build-directory"));
+  EXPECT_TRUE(h.StartFunction("function", 0xfde4abbed390c394LL));
+  EXPECT_TRUE(h.Line(0xfde4abbed390c394LL, "source-file-name", 174823314));
+  EXPECT_TRUE(h.EndFunction(0xfde4abbed390c3a4LL));
+  EXPECT_TRUE(h.EndCompilationUnit(0xfee4abbed390c3a4LL));
+  h.Finalize();
+
+  // Now check to see what has been added to the Module.
+  Module::File *file = m.FindExistingFile("source-file-name");
+  ASSERT_TRUE(file != NULL);
+
+  vector<Module::Function *> functions;
+  m.GetFunctions(&functions, functions.end());
+  ASSERT_EQ((size_t) 1, functions.size());
+  Module::Function *function = functions[0];
+  EXPECT_STREQ("function", function->name.c_str());
+  EXPECT_EQ(0xfde4abbed390c394LL, function->address);
+  EXPECT_EQ(0x10U, function->size);
+  EXPECT_EQ(0U, function->parameter_size);
+  ASSERT_EQ((size_t) 1, function->lines.size());
+  Module::Line *line = &function->lines[0];
+  EXPECT_EQ(0xfde4abbed390c394LL, line->address);
+  EXPECT_EQ(0x10U, line->size); // derived from EndFunction
+  EXPECT_TRUE(line->file == file);
+  EXPECT_EQ(174823314, line->number);
+}
+
+#ifdef __GNUC__
+// Function name mangling can vary by compiler, so only run mangled-name
+// tests on GCC for simplicity's sake.
+TEST(StabsToModule, Externs) {
+  Module m("name", "os", "arch", "id");
+  StabsToModule h(&m);
+
+  // Feed in a few Extern symbols.
+  EXPECT_TRUE(h.Extern("_foo", 0xffff));
+  EXPECT_TRUE(h.Extern("__Z21dyldGlobalLockAcquirev", 0xaaaa));
+  EXPECT_TRUE(h.Extern("_MorphTableGetNextMorphChain", 0x1111));
+  h.Finalize();
+
+  // Now check to see what has been added to the Module.
+  vector<Module::Extern *> externs;
+  m.GetExterns(&externs, externs.end());
+  ASSERT_EQ((size_t) 3, externs.size());
+  Module::Extern *extern1 = externs[0];
+  EXPECT_STREQ("MorphTableGetNextMorphChain", extern1->name.c_str());
+  EXPECT_EQ((Module::Address)0x1111, extern1->address);
+  Module::Extern *extern2 = externs[1];
+  EXPECT_STREQ("dyldGlobalLockAcquire()", extern2->name.c_str());
+  EXPECT_EQ((Module::Address)0xaaaa, extern2->address);
+  Module::Extern *extern3 = externs[2];
+  EXPECT_STREQ("foo", extern3->name.c_str());
+  EXPECT_EQ((Module::Address)0xffff, extern3->address);
+}
+#endif  // __GNUC__
+
+TEST(StabsToModule, DuplicateFunctionNames) {
+  Module m("name", "os", "arch", "id");
+  StabsToModule h(&m);
+
+  // Compilation unit with one function, mangled name.
+  EXPECT_TRUE(h.StartCompilationUnit("compilation-unit", 0xf2cfda36ecf7f46cLL,
+                                     "build-directory"));
+  EXPECT_TRUE(h.StartFunction("funcfoo",
+                              0xf2cfda36ecf7f46dLL));
+  EXPECT_TRUE(h.EndFunction(0));
+  EXPECT_TRUE(h.StartFunction("funcfoo",
+                              0xf2cfda36ecf7f46dLL));
+  EXPECT_TRUE(h.EndFunction(0));
+  EXPECT_TRUE(h.EndCompilationUnit(0));
+
+  h.Finalize();
+
+  // Now check to see what has been added to the Module.
+  Module::File *file = m.FindExistingFile("compilation-unit");
+  ASSERT_TRUE(file != NULL);
+
+  vector<Module::Function *> functions;
+  m.GetFunctions(&functions, functions.end());
+  ASSERT_EQ(1U, functions.size());
+
+  Module::Function *function = functions[0];
+  EXPECT_EQ(0xf2cfda36ecf7f46dLL, function->address);
+  EXPECT_LT(0U, function->size);  // should have used dummy size
+  EXPECT_EQ(0U, function->parameter_size);
+  ASSERT_EQ(0U, function->lines.size());
+}
+
+TEST(InferSizes, LineSize) {
+  Module m("name", "os", "arch", "id");
+  StabsToModule h(&m);
+
+  // Feed in a simple compilation unit that defines a function with
+  // one line.
+  EXPECT_TRUE(h.StartCompilationUnit("compilation-unit", 0xb4513962eff94e92LL,
+                                     "build-directory"));
+  EXPECT_TRUE(h.StartFunction("function", 0xb4513962eff94e92LL));
+  EXPECT_TRUE(h.Line(0xb4513962eff94e92LL, "source-file-name-1", 77396614));
+  EXPECT_TRUE(h.Line(0xb4513963eff94e92LL, "source-file-name-2", 87660088));
+  EXPECT_TRUE(h.EndFunction(0));  // unknown function end address
+  EXPECT_TRUE(h.EndCompilationUnit(0)); // unknown CU end address
+  EXPECT_TRUE(h.StartCompilationUnit("compilation-unit-2", 0xb4523963eff94e92LL,
+                                     "build-directory-2")); // next boundary
+  EXPECT_TRUE(h.EndCompilationUnit(0));
+  h.Finalize();
+
+  // Now check to see what has been added to the Module.
+  Module::File *file1 = m.FindExistingFile("source-file-name-1");
+  ASSERT_TRUE(file1 != NULL);
+  Module::File *file2 = m.FindExistingFile("source-file-name-2");
+  ASSERT_TRUE(file2 != NULL);
+
+  vector<Module::Function *> functions;
+  m.GetFunctions(&functions, functions.end());
+  ASSERT_EQ((size_t) 1, functions.size());
+
+  Module::Function *function = functions[0];
+  EXPECT_STREQ("function", function->name.c_str());
+  EXPECT_EQ(0xb4513962eff94e92LL, function->address);
+  EXPECT_EQ(0x1000100000000ULL, function->size); // inferred from CU end
+  EXPECT_EQ(0U, function->parameter_size);
+  ASSERT_EQ((size_t) 2, function->lines.size());
+
+  Module::Line *line1 = &function->lines[0];
+  EXPECT_EQ(0xb4513962eff94e92LL, line1->address);
+  EXPECT_EQ(0x100000000ULL, line1->size); // derived from EndFunction
+  EXPECT_TRUE(line1->file == file1);
+  EXPECT_EQ(77396614, line1->number);
+
+  Module::Line *line2 = &function->lines[1];
+  EXPECT_EQ(0xb4513963eff94e92LL, line2->address);
+  EXPECT_EQ(0x1000000000000ULL, line2->size); // derived from EndFunction
+  EXPECT_TRUE(line2->file == file2);
+  EXPECT_EQ(87660088, line2->number);
+}
+
+#ifdef __GNUC__
+// Function name mangling can vary by compiler, so only run mangled-name
+// tests on GCC for simplicity's sake.
+TEST(FunctionNames, Mangled) {
+  Module m("name", "os", "arch", "id");
+  StabsToModule h(&m);
+
+  // Compilation unit with one function, mangled name.
+  EXPECT_TRUE(h.StartCompilationUnit("compilation-unit", 0xf2cfda63cef7f46cLL,
+                                     "build-directory"));
+  EXPECT_TRUE(h.StartFunction("_ZNSt6vectorIySaIyEE9push_backERKy",
+                              0xf2cfda63cef7f46dLL));
+  EXPECT_TRUE(h.EndFunction(0));
+  EXPECT_TRUE(h.EndCompilationUnit(0));
+
+  h.Finalize();
+
+  // Now check to see what has been added to the Module.
+  Module::File *file = m.FindExistingFile("compilation-unit");
+  ASSERT_TRUE(file != NULL);
+
+  vector<Module::Function *> functions;
+  m.GetFunctions(&functions, functions.end());
+  ASSERT_EQ(1U, functions.size());
+
+  Module::Function *function = functions[0];
+  // This is GCC-specific, but we shouldn't be seeing STABS data anywhere
+  // but Linux.
+  EXPECT_STREQ("std::vector<unsigned long long, "
+               "std::allocator<unsigned long long> >::"
+               "push_back(unsigned long long const&)",
+               function->name.c_str());
+  EXPECT_EQ(0xf2cfda63cef7f46dLL, function->address);
+  EXPECT_LT(0U, function->size); // should have used dummy size
+  EXPECT_EQ(0U, function->parameter_size);
+  ASSERT_EQ(0U, function->lines.size());
+}
+#endif  // __GNUC__
+
+// The GNU toolchain can omit functions that are not used; however,
+// when it does so, it doesn't clean up the debugging information that
+// refers to them. In STABS, this results in compilation units whose
+// SO addresses are zero.
+TEST(Omitted, Function) {
+  Module m("name", "os", "arch", "id");
+  StabsToModule h(&m);
+
+  // The StartCompilationUnit and EndCompilationUnit calls may both have an
+  // address of zero if the compilation unit has had sections removed.
+  EXPECT_TRUE(h.StartCompilationUnit("compilation-unit", 0, "build-directory"));
+  EXPECT_TRUE(h.StartFunction("function", 0x2a133596));
+  EXPECT_TRUE(h.EndFunction(0));
+  EXPECT_TRUE(h.EndCompilationUnit(0));
+}
+
+// TODO --- if we actually cared about STABS. Even without these we've
+// got full coverage of non-failure source lines in dump_stabs.cc.
+
+// Line size from next line
+// Line size from function end
+// Line size from next function start
+// line size from cu end
+// line size from next cu start
+// fallback size is something plausible
+
+// function size from function end
+// function size from next function start
+// function size from cu end
+// function size from next cu start
+// fallback size is something plausible
+
+// omitting functions outside the compilation unit's address range
+// zero-line, one-line, many-line functions
diff --git a/google-breakpad/src/common/string_conversion.cc b/google-breakpad/src/common/string_conversion.cc
new file mode 100644
index 0000000..9c0d623
--- /dev/null
+++ b/google-breakpad/src/common/string_conversion.cc
@@ -0,0 +1,155 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include <string.h>
+
+#include "common/convert_UTF.h"
+#include "common/scoped_ptr.h"
+#include "common/string_conversion.h"
+#include "common/using_std_string.h"
+
+namespace google_breakpad {
+
+using std::vector;
+
+void UTF8ToUTF16(const char *in, vector<uint16_t> *out) {
+  size_t source_length = strlen(in);
+  const UTF8 *source_ptr = reinterpret_cast<const UTF8 *>(in);
+  const UTF8 *source_end_ptr = source_ptr + source_length;
+  // Erase the contents and zero fill to the expected size
+  out->clear();
+  out->insert(out->begin(), source_length, 0);
+  uint16_t *target_ptr = &(*out)[0];
+  uint16_t *target_end_ptr = target_ptr + out->capacity() * sizeof(uint16_t);
+  ConversionResult result = ConvertUTF8toUTF16(&source_ptr, source_end_ptr,
+                                               &target_ptr, target_end_ptr,
+                                               strictConversion);
+
+  // Resize to be the size of the # of converted characters + NULL
+  out->resize(result == conversionOK ? target_ptr - &(*out)[0] + 1: 0);
+}
+
+int UTF8ToUTF16Char(const char *in, int in_length, uint16_t out[2]) {
+  const UTF8 *source_ptr = reinterpret_cast<const UTF8 *>(in);
+  const UTF8 *source_end_ptr = source_ptr + sizeof(char);
+  uint16_t *target_ptr = out;
+  uint16_t *target_end_ptr = target_ptr + 2 * sizeof(uint16_t);
+  out[0] = out[1] = 0;
+
+  // Process one character at a time
+  while (1) {
+    ConversionResult result = ConvertUTF8toUTF16(&source_ptr, source_end_ptr,
+                                                 &target_ptr, target_end_ptr,
+                                                 strictConversion);
+
+    if (result == conversionOK)
+      return static_cast<int>(source_ptr - reinterpret_cast<const UTF8 *>(in));
+
+    // Add another character to the input stream and try again
+    source_ptr = reinterpret_cast<const UTF8 *>(in);
+    ++source_end_ptr;
+
+    if (source_end_ptr > reinterpret_cast<const UTF8 *>(in) + in_length)
+      break;
+  }
+
+  return 0;
+}
+
+void UTF32ToUTF16(const wchar_t *in, vector<uint16_t> *out) {
+  size_t source_length = wcslen(in);
+  const UTF32 *source_ptr = reinterpret_cast<const UTF32 *>(in);
+  const UTF32 *source_end_ptr = source_ptr + source_length;
+  // Erase the contents and zero fill to the expected size
+  out->clear();
+  out->insert(out->begin(), source_length, 0);
+  uint16_t *target_ptr = &(*out)[0];
+  uint16_t *target_end_ptr = target_ptr + out->capacity() * sizeof(uint16_t);
+  ConversionResult result = ConvertUTF32toUTF16(&source_ptr, source_end_ptr,
+                                                &target_ptr, target_end_ptr,
+                                                strictConversion);
+
+  // Resize to be the size of the # of converted characters + NULL
+  out->resize(result == conversionOK ? target_ptr - &(*out)[0] + 1: 0);
+}
+
+void UTF32ToUTF16Char(wchar_t in, uint16_t out[2]) {
+  const UTF32 *source_ptr = reinterpret_cast<const UTF32 *>(&in);
+  const UTF32 *source_end_ptr = source_ptr + 1;
+  uint16_t *target_ptr = out;
+  uint16_t *target_end_ptr = target_ptr + 2 * sizeof(uint16_t);
+  out[0] = out[1] = 0;
+  ConversionResult result = ConvertUTF32toUTF16(&source_ptr, source_end_ptr,
+                                                &target_ptr, target_end_ptr,
+                                                strictConversion);
+
+  if (result != conversionOK) {
+    out[0] = out[1] = 0;
+  }
+}
+
+static inline uint16_t Swap(uint16_t value) {
+  return (value >> 8) | static_cast<uint16_t>(value << 8);
+}
+
+string UTF16ToUTF8(const vector<uint16_t> &in, bool swap) {
+  const UTF16 *source_ptr = &in[0];
+  scoped_array<uint16_t> source_buffer;
+
+  // If we're to swap, we need to make a local copy and swap each byte pair
+  if (swap) {
+    int idx = 0;
+    source_buffer.reset(new uint16_t[in.size()]);
+    UTF16 *source_buffer_ptr = source_buffer.get();
+    for (vector<uint16_t>::const_iterator it = in.begin();
+         it != in.end(); ++it, ++idx)
+      source_buffer_ptr[idx] = Swap(*it);
+
+    source_ptr = source_buffer.get();
+  }
+
+  // The maximum expansion would be 4x the size of the input string.
+  const UTF16 *source_end_ptr = source_ptr + in.size();
+  size_t target_capacity = in.size() * 4;
+  scoped_array<UTF8> target_buffer(new UTF8[target_capacity]);
+  UTF8 *target_ptr = target_buffer.get();
+  UTF8 *target_end_ptr = target_ptr + target_capacity;
+  ConversionResult result = ConvertUTF16toUTF8(&source_ptr, source_end_ptr,
+                                               &target_ptr, target_end_ptr,
+                                               strictConversion);
+
+  if (result == conversionOK) {
+    const char *targetPtr = reinterpret_cast<const char *>(target_buffer.get());
+    return targetPtr;
+  }
+
+  return "";
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/common/string_conversion.h b/google-breakpad/src/common/string_conversion.h
new file mode 100644
index 0000000..b9ba96a
--- /dev/null
+++ b/google-breakpad/src/common/string_conversion.h
@@ -0,0 +1,68 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// string_conversion.h: Conversion between different UTF-8/16/32 encodings.
+
+#ifndef COMMON_STRING_CONVERSION_H__
+#define COMMON_STRING_CONVERSION_H__
+
+#include <string>
+#include <vector>
+
+#include "common/using_std_string.h"
+#include "google_breakpad/common/breakpad_types.h"
+
+namespace google_breakpad {
+  
+using std::vector;
+
+// Convert |in| to UTF-16 into |out|.  Use platform byte ordering.  If the
+// conversion failed, |out| will be zero length.
+void UTF8ToUTF16(const char *in, vector<uint16_t> *out);
+
+// Convert at least one character (up to a maximum of |in_length|) from |in|
+// to UTF-16 into |out|.  Return the number of characters consumed from |in|.
+// Any unused characters in |out| will be initialized to 0.  No memory will
+// be allocated by this routine.
+int UTF8ToUTF16Char(const char *in, int in_length, uint16_t out[2]);
+
+// Convert |in| to UTF-16 into |out|.  Use platform byte ordering.  If the
+// conversion failed, |out| will be zero length.
+void UTF32ToUTF16(const wchar_t *in, vector<uint16_t> *out);
+
+// Convert |in| to UTF-16 into |out|.  Any unused characters in |out| will be
+// initialized to 0.  No memory will be allocated by this routine.
+void UTF32ToUTF16Char(wchar_t in, uint16_t out[2]);
+
+// Convert |in| to UTF-8.  If |swap| is true, swap bytes before converting.
+string UTF16ToUTF8(const vector<uint16_t> &in, bool swap);
+
+}  // namespace google_breakpad
+
+#endif  // COMMON_STRING_CONVERSION_H__
diff --git a/google-breakpad/src/common/symbol_data.h b/google-breakpad/src/common/symbol_data.h
new file mode 100644
index 0000000..2cf15a8
--- /dev/null
+++ b/google-breakpad/src/common/symbol_data.h
@@ -0,0 +1,42 @@
+// -*- mode: c++ -*-
+
+// Copyright (c) 2013 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef COMMON_SYMBOL_DATA_H_
+#define COMMON_SYMBOL_DATA_H_
+
+// Control what data is used from the symbol file.
+enum SymbolData {
+  ALL_SYMBOL_DATA,
+  NO_CFI,
+  ONLY_CFI
+};
+
+#endif  // COMMON_SYMBOL_DATA_H_
diff --git a/google-breakpad/src/common/test_assembler.cc b/google-breakpad/src/common/test_assembler.cc
new file mode 100644
index 0000000..1e783b4
--- /dev/null
+++ b/google-breakpad/src/common/test_assembler.cc
@@ -0,0 +1,359 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// test_assembler.cc: Implementation of google_breakpad::TestAssembler.
+// See test_assembler.h for details.
+
+#include "common/test_assembler.h"
+
+#include <assert.h>
+#include <stdio.h>
+
+#include <iterator>
+
+namespace google_breakpad {
+namespace test_assembler {
+
+using std::back_insert_iterator;
+
+Label::Label() : value_(new Binding()) { }
+Label::Label(uint64_t value) : value_(new Binding(value)) { }
+Label::Label(const Label &label) {
+  value_ = label.value_;
+  value_->Acquire();
+}
+Label::~Label() {
+  if (value_->Release()) delete value_;
+}
+
+Label &Label::operator=(uint64_t value) {
+  value_->Set(NULL, value);
+  return *this;
+}
+
+Label &Label::operator=(const Label &label) {
+  value_->Set(label.value_, 0);
+  return *this;
+}
+
+Label Label::operator+(uint64_t addend) const {
+  Label l;
+  l.value_->Set(this->value_, addend);
+  return l;
+}
+
+Label Label::operator-(uint64_t subtrahend) const {
+  Label l;
+  l.value_->Set(this->value_, -subtrahend);
+  return l;
+}
+
+// When NDEBUG is #defined, assert doesn't evaluate its argument. This
+// means you can't simply use assert to check the return value of a
+// function with necessary side effects.
+//
+// ALWAYS_EVALUATE_AND_ASSERT(x) evaluates x regardless of whether
+// NDEBUG is #defined; when NDEBUG is not #defined, it further asserts
+// that x is true.
+#ifdef NDEBUG
+#define ALWAYS_EVALUATE_AND_ASSERT(x) x
+#else
+#define ALWAYS_EVALUATE_AND_ASSERT(x) assert(x)
+#endif
+
+uint64_t Label::operator-(const Label &label) const {
+  uint64_t offset;
+  ALWAYS_EVALUATE_AND_ASSERT(IsKnownOffsetFrom(label, &offset));
+  return offset;
+}
+
+uint64_t Label::Value() const {
+  uint64_t v = 0;
+  ALWAYS_EVALUATE_AND_ASSERT(IsKnownConstant(&v));
+  return v;
+};
+
+bool Label::IsKnownConstant(uint64_t *value_p) const {
+  Binding *base;
+  uint64_t addend;
+  value_->Get(&base, &addend);
+  if (base != NULL) return false;
+  if (value_p) *value_p = addend;
+  return true;
+}
+
+bool Label::IsKnownOffsetFrom(const Label &label, uint64_t *offset_p) const
+{
+  Binding *label_base, *this_base;
+  uint64_t label_addend, this_addend;
+  label.value_->Get(&label_base, &label_addend);
+  value_->Get(&this_base, &this_addend);
+  // If this and label are related, Get will find their final
+  // common ancestor, regardless of how indirect the relation is. This
+  // comparison also handles the constant vs. constant case.
+  if (this_base != label_base) return false;
+  if (offset_p) *offset_p = this_addend - label_addend;
+  return true;
+}
+
+Label::Binding::Binding() : base_(this), addend_(), reference_count_(1) { }
+
+Label::Binding::Binding(uint64_t addend)
+    : base_(NULL), addend_(addend), reference_count_(1) { }
+
+Label::Binding::~Binding() {
+  assert(reference_count_ == 0);
+  if (base_ && base_ != this && base_->Release())
+    delete base_;
+}
+
+void Label::Binding::Set(Binding *binding, uint64_t addend) {
+  if (!base_ && !binding) {
+    // We're equating two constants. This could be okay.
+    assert(addend_ == addend);
+  } else if (!base_) {
+    // We are a known constant, but BINDING may not be, so turn the
+    // tables and try to set BINDING's value instead.
+    binding->Set(NULL, addend_ - addend);
+  } else {
+    if (binding) {
+      // Find binding's final value. Since the final value is always either
+      // completely unconstrained or a constant, never a reference to
+      // another variable (otherwise, it wouldn't be final), this
+      // guarantees we won't create cycles here, even for code like this:
+      //   l = m, m = n, n = l;
+      uint64_t binding_addend;
+      binding->Get(&binding, &binding_addend);
+      addend += binding_addend;
+    }
+
+    // It seems likely that setting a binding to itself is a bug
+    // (although I can imagine this might turn out to be helpful to
+    // permit).
+    assert(binding != this);
+
+    if (base_ != this) {
+      // Set the other bindings on our chain as well. Note that this
+      // is sufficient even though binding relationships form trees:
+      // All binding operations traverse their chains to the end, and
+      // all bindings related to us share some tail of our chain, so
+      // they will see the changes we make here.
+      base_->Set(binding, addend - addend_);
+      // We're not going to use base_ any more.
+      if (base_->Release()) delete base_;
+    }
+    
+    // Adopt BINDING as our base. Note that it should be correct to
+    // acquire here, after the release above, even though the usual
+    // reference-counting rules call for acquiring first, and then
+    // releasing: the self-reference assertion above should have
+    // complained if BINDING were 'this' or anywhere along our chain,
+    // so we didn't release BINDING.
+    if (binding) binding->Acquire();
+    base_ = binding;
+    addend_ = addend;
+  }
+}
+
+void Label::Binding::Get(Binding **base, uint64_t *addend) {
+  if (base_ && base_ != this) {
+    // Recurse to find the end of our reference chain (the root of our
+    // tree), and then rewrite every binding along the chain to refer
+    // to it directly, adjusting addends appropriately. (This is why
+    // this member function isn't this-const.)
+    Binding *final_base;
+    uint64_t final_addend;
+    base_->Get(&final_base, &final_addend);
+    if (final_base) final_base->Acquire();
+    if (base_->Release()) delete base_;
+    base_ = final_base;
+    addend_ += final_addend;
+  }
+  *base = base_;
+  *addend = addend_;
+}
+
+template<typename Inserter>
+static inline void InsertEndian(test_assembler::Endianness endianness,
+                                size_t size, uint64_t number, Inserter dest) {
+  assert(size > 0);
+  if (endianness == kLittleEndian) {
+    for (size_t i = 0; i < size; i++) {
+      *dest++ = (char) (number & 0xff);
+      number >>= 8;
+    }
+  } else {
+    assert(endianness == kBigEndian);
+    // The loop condition is odd, but it's correct for size_t.
+    for (size_t i = size - 1; i < size; i--)
+      *dest++ = (char) ((number >> (i * 8)) & 0xff);
+  }
+}
+
+Section &Section::Append(Endianness endianness, size_t size, uint64_t number) {
+  InsertEndian(endianness, size, number,
+               back_insert_iterator<string>(contents_));
+  return *this;
+}
+
+Section &Section::Append(Endianness endianness, size_t size,
+                         const Label &label) {
+  // If this label's value is known, there's no reason to waste an
+  // entry in references_ on it.
+  uint64_t value;
+  if (label.IsKnownConstant(&value))
+    return Append(endianness, size, value);
+
+  // This will get caught when the references are resolved, but it's
+  // nicer to find out earlier.
+  assert(endianness != kUnsetEndian);
+
+  references_.push_back(Reference(contents_.size(), endianness, size, label));
+  contents_.append(size, 0);
+  return *this;
+}
+
+#define ENDIANNESS_L kLittleEndian
+#define ENDIANNESS_B kBigEndian
+#define ENDIANNESS(e) ENDIANNESS_ ## e
+
+#define DEFINE_SHORT_APPEND_NUMBER_ENDIAN(e, bits)                      \
+  Section &Section::e ## bits(uint ## bits ## _t v) {                  \
+    InsertEndian(ENDIANNESS(e), bits / 8, v,                            \
+                 back_insert_iterator<string>(contents_));              \
+    return *this;                                                       \
+  }
+
+#define DEFINE_SHORT_APPEND_LABEL_ENDIAN(e, bits)                       \
+  Section &Section::e ## bits(const Label &v) {                         \
+    return Append(ENDIANNESS(e), bits / 8, v);                          \
+  }
+
+// Define L16, B32, and friends.
+#define DEFINE_SHORT_APPEND_ENDIAN(e, bits)                             \
+  DEFINE_SHORT_APPEND_NUMBER_ENDIAN(e, bits)                            \
+  DEFINE_SHORT_APPEND_LABEL_ENDIAN(e, bits)
+
+DEFINE_SHORT_APPEND_LABEL_ENDIAN(L, 8);
+DEFINE_SHORT_APPEND_LABEL_ENDIAN(B, 8);
+DEFINE_SHORT_APPEND_ENDIAN(L, 16);
+DEFINE_SHORT_APPEND_ENDIAN(L, 32);
+DEFINE_SHORT_APPEND_ENDIAN(L, 64);
+DEFINE_SHORT_APPEND_ENDIAN(B, 16);
+DEFINE_SHORT_APPEND_ENDIAN(B, 32);
+DEFINE_SHORT_APPEND_ENDIAN(B, 64);
+
+#define DEFINE_SHORT_APPEND_NUMBER_DEFAULT(bits)                        \
+  Section &Section::D ## bits(uint ## bits ## _t v) {                  \
+    InsertEndian(endianness_, bits / 8, v,                              \
+                 back_insert_iterator<string>(contents_));              \
+    return *this;                                                       \
+  }
+#define DEFINE_SHORT_APPEND_LABEL_DEFAULT(bits)                         \
+  Section &Section::D ## bits(const Label &v) {                         \
+    return Append(endianness_, bits / 8, v);                            \
+  }
+#define DEFINE_SHORT_APPEND_DEFAULT(bits)                               \
+  DEFINE_SHORT_APPEND_NUMBER_DEFAULT(bits)                              \
+  DEFINE_SHORT_APPEND_LABEL_DEFAULT(bits)
+
+DEFINE_SHORT_APPEND_LABEL_DEFAULT(8)
+DEFINE_SHORT_APPEND_DEFAULT(16);
+DEFINE_SHORT_APPEND_DEFAULT(32);
+DEFINE_SHORT_APPEND_DEFAULT(64);
+
+Section &Section::Append(const Section &section) {
+  size_t base = contents_.size();
+  contents_.append(section.contents_);
+  for (vector<Reference>::const_iterator it = section.references_.begin();
+       it != section.references_.end(); it++)
+    references_.push_back(Reference(base + it->offset, it->endianness,
+                                    it->size, it->label));
+  return *this;
+}
+
+Section &Section::LEB128(long long value) {
+  while (value < -0x40 || 0x3f < value) {
+    contents_ += (value & 0x7f) | 0x80;
+    if (value < 0)
+      value = (value >> 7) | ~(((unsigned long long) -1) >> 7);
+    else
+      value = (value >> 7);
+  }
+  contents_ += value & 0x7f;
+  return *this;
+}
+
+Section &Section::ULEB128(uint64_t value) {
+  while (value > 0x7f) {
+    contents_ += (value & 0x7f) | 0x80;
+    value = (value >> 7);
+  }
+  contents_ += value;
+  return *this;
+}
+
+Section &Section::Align(size_t alignment, uint8_t pad_byte) {
+  // ALIGNMENT must be a power of two.
+  assert(((alignment - 1) & alignment) == 0);
+  size_t new_size = (contents_.size() + alignment - 1) & ~(alignment - 1);
+  contents_.append(new_size - contents_.size(), pad_byte);
+  assert((contents_.size() & (alignment - 1)) == 0);
+  return *this;
+}
+
+void Section::Clear() {
+  contents_.clear();
+  references_.clear();
+}
+
+bool Section::GetContents(string *contents) {
+  // For each label reference, find the label's value, and patch it into
+  // the section's contents.
+  for (size_t i = 0; i < references_.size(); i++) {
+    Reference &r = references_[i];
+    uint64_t value;
+    if (!r.label.IsKnownConstant(&value)) {
+      fprintf(stderr, "Undefined label #%zu at offset 0x%zx\n", i, r.offset);
+      return false;
+    }
+    assert(r.offset < contents_.size());
+    assert(contents_.size() - r.offset >= r.size);
+    InsertEndian(r.endianness, r.size, value, contents_.begin() + r.offset);
+  }
+  contents->clear();
+  std::swap(contents_, *contents);
+  references_.clear();
+  return true;
+}
+
+}  // namespace test_assembler
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/common/test_assembler.h b/google-breakpad/src/common/test_assembler.h
new file mode 100644
index 0000000..373dbeb
--- /dev/null
+++ b/google-breakpad/src/common/test_assembler.h
@@ -0,0 +1,484 @@
+// -*- mode: C++ -*-
+
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// test-assembler.h: interface to class for building complex binary streams.
+
+// To test the Breakpad symbol dumper and processor thoroughly, for
+// all combinations of host system and minidump processor
+// architecture, we need to be able to easily generate complex test
+// data like debugging information and minidump files.
+// 
+// For example, if we want our unit tests to provide full code
+// coverage for stack walking, it may be difficult to persuade the
+// compiler to generate every possible sort of stack walking
+// information that we want to support; there are probably DWARF CFI
+// opcodes that GCC never emits. Similarly, if we want to test our
+// error handling, we will need to generate damaged minidumps or
+// debugging information that (we hope) the client or compiler will
+// never produce on its own.
+//
+// google_breakpad::TestAssembler provides a predictable and
+// (relatively) simple way to generate complex formatted data streams
+// like minidumps and CFI. Furthermore, because TestAssembler is
+// portable, developers without access to (say) Visual Studio or a
+// SPARC assembler can still work on test data for those targets.
+
+#ifndef PROCESSOR_TEST_ASSEMBLER_H_
+#define PROCESSOR_TEST_ASSEMBLER_H_
+
+#include <list>
+#include <vector>
+#include <string>
+
+#include "common/using_std_string.h"
+#include "google_breakpad/common/breakpad_types.h"
+
+namespace google_breakpad {
+
+using std::list;
+using std::vector;
+
+namespace test_assembler {
+
+// A Label represents a value not yet known that we need to store in a
+// section. As long as all the labels a section refers to are defined
+// by the time we retrieve its contents as bytes, we can use undefined
+// labels freely in that section's construction.
+//
+// A label can be in one of three states:
+// - undefined,
+// - defined as the sum of some other label and a constant, or
+// - a constant.
+// 
+// A label's value never changes, but it can accumulate constraints.
+// Adding labels and integers is permitted, and yields a label.
+// Subtracting a constant from a label is permitted, and also yields a
+// label. Subtracting two labels that have some relationship to each
+// other is permitted, and yields a constant.
+//
+// For example:
+//
+//   Label a;               // a's value is undefined
+//   Label b;               // b's value is undefined
+//   {
+//     Label c = a + 4;     // okay, even though a's value is unknown
+//     b = c + 4;           // also okay; b is now a+8
+//   }
+//   Label d = b - 2;       // okay; d == a+6, even though c is gone
+//   d.Value();             // error: d's value is not yet known
+//   d - a;                 // is 6, even though their values are not known
+//   a = 12;                // now b == 20, and d == 18
+//   d.Value();             // 18: no longer an error
+//   b.Value();             // 20
+//   d = 10;                // error: d is already defined.
+//
+// Label objects' lifetimes are unconstrained: notice that, in the
+// above example, even though a and b are only related through c, and
+// c goes out of scope, the assignment to a sets b's value as well. In
+// particular, it's not necessary to ensure that a Label lives beyond
+// Sections that refer to it.
+class Label {
+ public:
+  Label();                      // An undefined label.
+  Label(uint64_t value);       // A label with a fixed value
+  Label(const Label &value);    // A label equal to another.
+  ~Label();
+
+  // Return this label's value; it must be known.
+  //
+  // Providing this as a cast operator is nifty, but the conversions
+  // happen in unexpected places. In particular, ISO C++ says that
+  // Label + size_t becomes ambigious, because it can't decide whether
+  // to convert the Label to a uint64_t and then to a size_t, or use
+  // the overloaded operator that returns a new label, even though the
+  // former could fail if the label is not yet defined and the latter won't.
+  uint64_t Value() const;
+
+  Label &operator=(uint64_t value);
+  Label &operator=(const Label &value);
+  Label operator+(uint64_t addend) const;
+  Label operator-(uint64_t subtrahend) const;
+  uint64_t operator-(const Label &subtrahend) const;
+
+  // We could also provide == and != that work on undefined, but
+  // related, labels.
+
+  // Return true if this label's value is known. If VALUE_P is given,
+  // set *VALUE_P to the known value if returning true.
+  bool IsKnownConstant(uint64_t *value_p = NULL) const;
+
+  // Return true if the offset from LABEL to this label is known. If
+  // OFFSET_P is given, set *OFFSET_P to the offset when returning true.
+  //
+  // You can think of l.KnownOffsetFrom(m, &d) as being like 'd = l-m',
+  // except that it also returns a value indicating whether the
+  // subtraction is possible given what we currently know of l and m.
+  // It can be possible even if we don't know l and m's values. For
+  // example:
+  // 
+  //   Label l, m;
+  //   m = l + 10;
+  //   l.IsKnownConstant();             // false
+  //   m.IsKnownConstant();             // false
+  //   uint64_t d;                     
+  //   l.IsKnownOffsetFrom(m, &d);      // true, and sets d to -10.
+  //   l-m                              // -10
+  //   m-l                              // 10
+  //   m.Value()                        // error: m's value is not known
+  bool IsKnownOffsetFrom(const Label &label, uint64_t *offset_p = NULL) const;
+
+ private:
+  // A label's value, or if that is not yet known, how the value is
+  // related to other labels' values. A binding may be:
+  // - a known constant,
+  // - constrained to be equal to some other binding plus a constant, or
+  // - unconstrained, and free to take on any value.
+  //
+  // Many labels may point to a single binding, and each binding may
+  // refer to another, so bindings and labels form trees whose leaves
+  // are labels, whose interior nodes (and roots) are bindings, and
+  // where links point from children to parents. Bindings are
+  // reference counted, allowing labels to be lightweight, copyable,
+  // assignable, placed in containers, and so on.
+  class Binding {
+   public:
+    Binding();
+    Binding(uint64_t addend);
+    ~Binding();
+
+    // Increment our reference count.
+    void Acquire() { reference_count_++; };
+    // Decrement our reference count, and return true if it is zero.
+    bool Release() { return --reference_count_ == 0; }
+
+    // Set this binding to be equal to BINDING + ADDEND. If BINDING is
+    // NULL, then set this binding to the known constant ADDEND.
+    // Update every binding on this binding's chain to point directly
+    // to BINDING, or to be a constant, with addends adjusted
+    // appropriately.
+    void Set(Binding *binding, uint64_t value);
+
+    // Return what we know about the value of this binding.
+    // - If this binding's value is a known constant, set BASE to
+    //   NULL, and set ADDEND to its value.
+    // - If this binding is not a known constant but related to other
+    //   bindings, set BASE to the binding at the end of the relation
+    //   chain (which will always be unconstrained), and set ADDEND to the
+    //   value to add to that binding's value to get this binding's
+    //   value.
+    // - If this binding is unconstrained, set BASE to this, and leave
+    //   ADDEND unchanged.
+    void Get(Binding **base, uint64_t *addend);
+
+   private:
+    // There are three cases:
+    //
+    // - A binding representing a known constant value has base_ NULL,
+    //   and addend_ equal to the value.
+    //
+    // - A binding representing a completely unconstrained value has
+    //   base_ pointing to this; addend_ is unused.
+    //
+    // - A binding whose value is related to some other binding's
+    //   value has base_ pointing to that other binding, and addend_
+    //   set to the amount to add to that binding's value to get this
+    //   binding's value. We only represent relationships of the form
+    //   x = y+c.
+    //
+    // Thus, the bind_ links form a chain terminating in either a
+    // known constant value or a completely unconstrained value. Most
+    // operations on bindings do path compression: they change every
+    // binding on the chain to point directly to the final value,
+    // adjusting addends as appropriate.
+    Binding *base_;
+    uint64_t addend_;
+
+    // The number of Labels and Bindings pointing to this binding.
+    // (When a binding points to itself, indicating a completely
+    // unconstrained binding, that doesn't count as a reference.)
+    int reference_count_;
+  };
+
+  // This label's value.
+  Binding *value_;
+};
+
+inline Label operator+(uint64_t a, const Label &l) { return l + a; }
+// Note that int-Label isn't defined, as negating a Label is not an
+// operation we support.
+
+// Conventions for representing larger numbers as sequences of bytes.
+enum Endianness {
+  kBigEndian,        // Big-endian: the most significant byte comes first.
+  kLittleEndian,     // Little-endian: the least significant byte comes first.
+  kUnsetEndian,      // used internally
+};
+ 
+// A section is a sequence of bytes, constructed by appending bytes
+// to the end. Sections have a convenient and flexible set of member
+// functions for appending data in various formats: big-endian and
+// little-endian signed and unsigned values of different sizes;
+// LEB128 and ULEB128 values (see below), and raw blocks of bytes.
+//
+// If you need to append a value to a section that is not convenient
+// to compute immediately, you can create a label, append the
+// label's value to the section, and then set the label's value
+// later, when it's convenient to do so. Once a label's value is
+// known, the section class takes care of updating all previously
+// appended references to it.
+//
+// Once all the labels to which a section refers have had their
+// values determined, you can get a copy of the section's contents
+// as a string.
+//
+// Note that there is no specified "start of section" label. This is
+// because there are typically several different meanings for "the
+// start of a section": the offset of the section within an object
+// file, the address in memory at which the section's content appear,
+// and so on. It's up to the code that uses the Section class to 
+// keep track of these explicitly, as they depend on the application.
+class Section {
+ public:
+  Section(Endianness endianness = kUnsetEndian)
+      : endianness_(endianness) { };
+
+  // A base class destructor should be either public and virtual,
+  // or protected and nonvirtual.
+  virtual ~Section() { };
+
+  // Set the default endianness of this section to ENDIANNESS. This
+  // sets the behavior of the D<N> appending functions. If the
+  // assembler's default endianness was set, this is the 
+  void set_endianness(Endianness endianness) {
+    endianness_ = endianness;
+  }
+
+  // Return the default endianness of this section.
+  Endianness endianness() const { return endianness_; }
+
+  // Append the SIZE bytes at DATA or the contents of STRING to the
+  // end of this section. Return a reference to this section.
+  Section &Append(const uint8_t *data, size_t size) {
+    contents_.append(reinterpret_cast<const char *>(data), size);
+    return *this;
+  };
+  Section &Append(const string &data) {
+    contents_.append(data);
+    return *this;
+  };
+
+  // Append SIZE copies of BYTE to the end of this section. Return a
+  // reference to this section.
+  Section &Append(size_t size, uint8_t byte) {
+    contents_.append(size, (char) byte);
+    return *this;
+  }
+      
+  // Append NUMBER to this section. ENDIANNESS is the endianness to
+  // use to write the number. SIZE is the length of the number in
+  // bytes. Return a reference to this section.
+  Section &Append(Endianness endianness, size_t size, uint64_t number);
+  Section &Append(Endianness endianness, size_t size, const Label &label);
+
+  // Append SECTION to the end of this section. The labels SECTION
+  // refers to need not be defined yet.
+  //
+  // Note that this has no effect on any Labels' values, or on
+  // SECTION. If placing SECTION within 'this' provides new
+  // constraints on existing labels' values, then it's up to the
+  // caller to fiddle with those labels as needed.
+  Section &Append(const Section &section);
+
+  // Append the contents of DATA as a series of bytes terminated by
+  // a NULL character.
+  Section &AppendCString(const string &data) {
+    Append(data);
+    contents_ += '\0';
+    return *this;
+  }
+
+  // Append at most SIZE bytes from DATA; if DATA is less than SIZE bytes
+  // long, pad with '\0' characters.
+  Section &AppendCString(const string &data, size_t size) {
+    contents_.append(data, 0, size);
+    if (data.size() < size)
+      Append(size - data.size(), 0);
+    return *this;
+  }
+
+  // Append VALUE or LABEL to this section, with the given bit width and
+  // endianness. Return a reference to this section.
+  //
+  // The names of these functions have the form <ENDIANNESS><BITWIDTH>:
+  // <ENDIANNESS> is either 'L' (little-endian, least significant byte first),
+  //                        'B' (big-endian, most significant byte first), or
+  //                        'D' (default, the section's default endianness)
+  // <BITWIDTH> is 8, 16, 32, or 64.
+  //
+  // Since endianness doesn't matter for a single byte, all the
+  // <BITWIDTH>=8 functions are equivalent.
+  //
+  // These can be used to write both signed and unsigned values, as
+  // the compiler will properly sign-extend a signed value before
+  // passing it to the function, at which point the function's
+  // behavior is the same either way.
+  Section &L8(uint8_t value) { contents_ += value; return *this; }
+  Section &B8(uint8_t value) { contents_ += value; return *this; }
+  Section &D8(uint8_t value) { contents_ += value; return *this; }
+  Section &L16(uint16_t), &L32(uint32_t), &L64(uint64_t),
+          &B16(uint16_t), &B32(uint32_t), &B64(uint64_t),
+          &D16(uint16_t), &D32(uint32_t), &D64(uint64_t);
+  Section &L8(const Label &label),  &L16(const Label &label),
+          &L32(const Label &label), &L64(const Label &label),
+          &B8(const Label &label),  &B16(const Label &label),
+          &B32(const Label &label), &B64(const Label &label),
+          &D8(const Label &label),  &D16(const Label &label),
+          &D32(const Label &label), &D64(const Label &label);
+
+  // Append VALUE in a signed LEB128 (Little-Endian Base 128) form.
+  // 
+  // The signed LEB128 representation of an integer N is a variable
+  // number of bytes:
+  //
+  // - If N is between -0x40 and 0x3f, then its signed LEB128
+  //   representation is a single byte whose value is N.
+  // 
+  // - Otherwise, its signed LEB128 representation is (N & 0x7f) |
+  //   0x80, followed by the signed LEB128 representation of N / 128,
+  //   rounded towards negative infinity.
+  //
+  // In other words, we break VALUE into groups of seven bits, put
+  // them in little-endian order, and then write them as eight-bit
+  // bytes with the high bit on all but the last.
+  //
+  // Note that VALUE cannot be a Label (we would have to implement
+  // relaxation).
+  Section &LEB128(long long value);
+
+  // Append VALUE in unsigned LEB128 (Little-Endian Base 128) form.
+  // 
+  // The unsigned LEB128 representation of an integer N is a variable
+  // number of bytes:
+  //
+  // - If N is between 0 and 0x7f, then its unsigned LEB128
+  //   representation is a single byte whose value is N.
+  // 
+  // - Otherwise, its unsigned LEB128 representation is (N & 0x7f) |
+  //   0x80, followed by the unsigned LEB128 representation of N /
+  //   128, rounded towards negative infinity.
+  //
+  // Note that VALUE cannot be a Label (we would have to implement
+  // relaxation).
+  Section &ULEB128(uint64_t value);
+
+  // Jump to the next location aligned on an ALIGNMENT-byte boundary,
+  // relative to the start of the section. Fill the gap with PAD_BYTE.
+  // ALIGNMENT must be a power of two. Return a reference to this
+  // section.
+  Section &Align(size_t alignment, uint8_t pad_byte = 0);
+
+  // Clear the contents of this section.
+  void Clear();
+
+  // Return the current size of the section.
+  size_t Size() const { return contents_.size(); }
+
+  // Return a label representing the start of the section.
+  // 
+  // It is up to the user whether this label represents the section's
+  // position in an object file, the section's address in memory, or
+  // what have you; some applications may need both, in which case
+  // this simple-minded interface won't be enough. This class only
+  // provides a single start label, for use with the Here and Mark
+  // member functions.
+  //
+  // Ideally, we'd provide this in a subclass that actually knows more
+  // about the application at hand and can provide an appropriate
+  // collection of start labels. But then the appending member
+  // functions like Append and D32 would return a reference to the
+  // base class, not the derived class, and the chaining won't work.
+  // Since the only value here is in pretty notation, that's a fatal
+  // flaw.
+  Label start() const { return start_; }
+
+  // Return a label representing the point at which the next Appended
+  // item will appear in the section, relative to start().
+  Label Here() const { return start_ + Size(); }
+
+  // Set *LABEL to Here, and return a reference to this section.
+  Section &Mark(Label *label) { *label = Here(); return *this; }
+
+  // If there are no undefined label references left in this
+  // section, set CONTENTS to the contents of this section, as a
+  // string, and clear this section. Return true on success, or false
+  // if there were still undefined labels.
+  bool GetContents(string *contents);
+
+ private:
+  // Used internally. A reference to a label's value.
+  struct Reference {
+    Reference(size_t set_offset, Endianness set_endianness,  size_t set_size,
+              const Label &set_label)
+        : offset(set_offset), endianness(set_endianness), size(set_size),
+          label(set_label) { }
+      
+    // The offset of the reference within the section.
+    size_t offset;
+
+    // The endianness of the reference.
+    Endianness endianness;
+
+    // The size of the reference.
+    size_t size;
+
+    // The label to which this is a reference.
+    Label label;
+  };
+
+  // The default endianness of this section.
+  Endianness endianness_;
+
+  // The contents of the section.
+  string contents_;
+  
+  // References to labels within those contents.
+  vector<Reference> references_;
+
+  // A label referring to the beginning of the section.
+  Label start_;
+};
+
+}  // namespace test_assembler
+}  // namespace google_breakpad
+
+#endif  // PROCESSOR_TEST_ASSEMBLER_H_
diff --git a/google-breakpad/src/common/test_assembler_unittest.cc b/google-breakpad/src/common/test_assembler_unittest.cc
new file mode 100644
index 0000000..94b5a5c
--- /dev/null
+++ b/google-breakpad/src/common/test_assembler_unittest.cc
@@ -0,0 +1,1662 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// test_assembler_unittest.cc: Unit tests for google_breakpad::TestAssembler.
+
+#include <string>
+#include <string.h>
+
+#include "breakpad_googletest_includes.h"
+#include "common/test_assembler.h"
+#include "common/using_std_string.h"
+
+using google_breakpad::test_assembler::Label;
+using google_breakpad::test_assembler::Section;
+using google_breakpad::test_assembler::kBigEndian;
+using google_breakpad::test_assembler::kLittleEndian;
+using testing::Test;
+
+TEST(ConstructLabel, Simple) {
+  Label l;
+}
+
+TEST(ConstructLabel, Undefined) {
+  Label l;
+  EXPECT_FALSE(l.IsKnownConstant());
+}
+
+TEST(ConstructLabelDeathTest, Undefined) {
+  Label l;
+  ASSERT_DEATH(l.Value(), "IsKnownConstant\\(&v\\)");
+}
+
+TEST(ConstructLabel, Constant) {
+  Label l(0x060b9f974eaf301eULL);
+  uint64_t v;
+  EXPECT_TRUE(l.IsKnownConstant(&v));
+  EXPECT_EQ(v, 0x060b9f974eaf301eULL);
+  EXPECT_EQ(l.Value(), 0x060b9f974eaf301eULL);
+}
+
+TEST(ConstructLabel, Copy) {
+  Label l;
+  Label m(l);
+  uint64_t v;
+  EXPECT_TRUE(l.IsKnownOffsetFrom(m, &v));
+  EXPECT_EQ(0U, v);
+}
+
+// The left-hand-side of a label assignment can be either
+// unconstrained, related, or known. The right-hand-side can be any of
+// those, or an integer.
+TEST(Assignment, UnconstrainedToUnconstrained) {
+  Label l, m;
+  l = m;
+  EXPECT_EQ(0U, l-m);
+  EXPECT_TRUE(l.IsKnownOffsetFrom(m));
+  uint64_t d;
+  EXPECT_TRUE(l.IsKnownOffsetFrom(m, &d));
+  EXPECT_EQ(0U, d);
+  EXPECT_FALSE(l.IsKnownConstant());
+}
+
+TEST(Assignment, UnconstrainedToRelated) {
+  Label l, m, n;
+  l = n;
+  l = m;
+  EXPECT_EQ(0U, l-m);
+  EXPECT_TRUE(l.IsKnownOffsetFrom(m));
+  uint64_t d;
+  EXPECT_TRUE(l.IsKnownOffsetFrom(m, &d));
+  EXPECT_EQ(0U, d);
+  EXPECT_FALSE(l.IsKnownConstant());
+}
+
+TEST(Assignment, UnconstrainedToKnown) {
+  Label l, m;
+  l = 0x8fd16e55b20a39c1ULL;
+  l = m;
+  EXPECT_EQ(0U, l-m);
+  EXPECT_TRUE(l.IsKnownOffsetFrom(m));
+  uint64_t d;
+  EXPECT_TRUE(l.IsKnownOffsetFrom(m, &d));
+  EXPECT_EQ(0U, d);
+  EXPECT_TRUE(m.IsKnownConstant());
+  EXPECT_EQ(0x8fd16e55b20a39c1ULL, m.Value());
+}
+
+TEST(Assignment, RelatedToUnconstrained) {
+  Label l, m, n;
+  m = n;
+  l = m;
+  EXPECT_EQ(0U, l-n);
+  EXPECT_TRUE(l.IsKnownOffsetFrom(n));
+  uint64_t d;
+  EXPECT_TRUE(l.IsKnownOffsetFrom(n, &d));
+  EXPECT_EQ(0U, d);
+  EXPECT_FALSE(l.IsKnownConstant());
+}
+
+TEST(Assignment, RelatedToRelated) {
+  Label l, m, n, o;
+  l = n;
+  m = o;
+  l = m;
+  EXPECT_EQ(0U, n-o);
+  EXPECT_TRUE(n.IsKnownOffsetFrom(o));
+  uint64_t d;
+  EXPECT_TRUE(n.IsKnownOffsetFrom(o, &d));
+  EXPECT_EQ(0U, d);
+  EXPECT_FALSE(l.IsKnownConstant());
+}
+
+TEST(Assignment, RelatedToKnown) {
+  Label l, m, n;
+  m = n;
+  l = 0xd2011f8c82ad56f2ULL;
+  l = m;
+  EXPECT_TRUE(l.IsKnownConstant());
+  EXPECT_EQ(0xd2011f8c82ad56f2ULL, l.Value());
+  EXPECT_TRUE(m.IsKnownConstant());
+  EXPECT_EQ(0xd2011f8c82ad56f2ULL, m.Value());
+  EXPECT_TRUE(n.IsKnownConstant());
+  EXPECT_EQ(0xd2011f8c82ad56f2ULL, n.Value());
+}
+
+TEST(Assignment, KnownToUnconstrained) {
+  Label l, m;
+  m = 0x50b024c0d6073887ULL;
+  l = m;
+  EXPECT_TRUE(l.IsKnownConstant());
+  EXPECT_EQ(0x50b024c0d6073887ULL, l.Value());
+  EXPECT_TRUE(m.IsKnownConstant());
+  EXPECT_EQ(0x50b024c0d6073887ULL, m.Value());
+}
+
+TEST(Assignment, KnownToRelated) {
+  Label l, m, n;
+  l = n;
+  m = 0x5348883655c727e5ULL;
+  l = m;
+  EXPECT_TRUE(l.IsKnownConstant());
+  EXPECT_EQ(0x5348883655c727e5ULL, l.Value());
+  EXPECT_TRUE(m.IsKnownConstant());
+  EXPECT_EQ(0x5348883655c727e5ULL, m.Value());
+  EXPECT_TRUE(n.IsKnownConstant());
+  EXPECT_EQ(0x5348883655c727e5ULL, n.Value());
+}
+
+TEST(Assignment, KnownToKnown) {
+  Label l, m;
+  l = 0x36c209c20987564eULL;
+  m = 0x36c209c20987564eULL;
+  l = m;
+  EXPECT_TRUE(l.IsKnownConstant());
+  EXPECT_EQ(0x36c209c20987564eULL, l.Value());
+  EXPECT_TRUE(m.IsKnownConstant());
+  EXPECT_EQ(0x36c209c20987564eULL, m.Value());
+}
+
+TEST(Assignment, ConstantToUnconstrained) {
+  Label l;
+  l = 0xc02495f4d7f5a957ULL;
+  EXPECT_TRUE(l.IsKnownConstant());
+  EXPECT_EQ(0xc02495f4d7f5a957ULL, l.Value());
+}
+
+TEST(Assignment, ConstantToRelated) {
+  Label l, m;
+  l = m;
+  l = 0x4577901cf275488dULL;
+  EXPECT_TRUE(l.IsKnownConstant());
+  EXPECT_EQ(0x4577901cf275488dULL, l.Value());
+  EXPECT_TRUE(m.IsKnownConstant());
+  EXPECT_EQ(0x4577901cf275488dULL, m.Value());
+}
+
+TEST(Assignment, ConstantToKnown) {
+  Label l;
+  l = 0xec0b9c369b7e8ea7ULL;
+  l = 0xec0b9c369b7e8ea7ULL;
+  EXPECT_TRUE(l.IsKnownConstant());
+  EXPECT_EQ(0xec0b9c369b7e8ea7ULL, l.Value());
+}
+
+TEST(AssignmentDeathTest, Self) {
+  Label l;
+  ASSERT_DEATH(l = l, "binding != this");
+}
+
+TEST(AssignmentDeathTest, IndirectCycle) {
+  Label l, m, n;
+  l = m;
+  m = n;
+  ASSERT_DEATH(n = l, "binding != this");
+}
+
+TEST(AssignmentDeathTest, Cycle) {
+  Label l, m, n, o;
+  l = m;
+  m = n;
+  o = n;
+  ASSERT_DEATH(o = l, "binding != this");
+}
+
+TEST(Addition, LabelConstant) {
+  Label l, m;
+  m = l + 0x5248d93e8bbe9497ULL;
+  EXPECT_TRUE(m.IsKnownOffsetFrom(l));
+  uint64_t d;
+  EXPECT_TRUE(m.IsKnownOffsetFrom(l, &d));
+  EXPECT_EQ(0x5248d93e8bbe9497ULL, d);
+  EXPECT_FALSE(m.IsKnownConstant());
+}
+
+TEST(Addition, ConstantLabel) {
+  Label l, m;
+  m = 0xf51e94e00d6e3c84ULL + l;
+  EXPECT_TRUE(m.IsKnownOffsetFrom(l));
+  uint64_t d;
+  EXPECT_TRUE(m.IsKnownOffsetFrom(l, &d));
+  EXPECT_EQ(0xf51e94e00d6e3c84ULL, d);
+  EXPECT_FALSE(m.IsKnownConstant());
+}
+
+TEST(Addition, KnownLabelConstant) {
+  Label l, m;
+  l = 0x16286307042ce0d8ULL;
+  m = l + 0x3fdddd91306719d7ULL;
+  EXPECT_TRUE(m.IsKnownOffsetFrom(l));
+  uint64_t d;
+  EXPECT_TRUE(m.IsKnownOffsetFrom(l, &d));
+  EXPECT_EQ(0x3fdddd91306719d7ULL, d);
+  EXPECT_TRUE(m.IsKnownConstant());
+  EXPECT_EQ(0x16286307042ce0d8ULL + 0x3fdddd91306719d7ULL, m.Value());
+}
+
+TEST(Addition, ConstantKnownLabel) {
+  Label l, m;
+  l = 0x50f62d0cdd1031deULL;
+  m = 0x1b13462d8577c538ULL + l;
+  EXPECT_TRUE(m.IsKnownOffsetFrom(l));
+  uint64_t d;
+  EXPECT_TRUE(m.IsKnownOffsetFrom(l, &d));
+  EXPECT_EQ(0x1b13462d8577c538ULL, d);
+  EXPECT_TRUE(m.IsKnownConstant());
+  EXPECT_EQ(0x50f62d0cdd1031deULL + 0x1b13462d8577c538ULL, m.Value());
+}
+
+TEST(Subtraction, LabelConstant) {
+  Label l, m;
+  m = l - 0x0620884d21d3138eULL;
+  EXPECT_TRUE(m.IsKnownOffsetFrom(l));
+  uint64_t d;
+  EXPECT_TRUE(m.IsKnownOffsetFrom(l, &d));
+  EXPECT_EQ(-0x0620884d21d3138eULL, d);
+  EXPECT_FALSE(m.IsKnownConstant());
+}
+
+TEST(Subtraction, KnownLabelConstant) {
+  Label l, m;
+  l = 0x6237fbaf9ef7929eULL;
+  m = l - 0x317730995d2ab6eeULL;
+  EXPECT_TRUE(m.IsKnownOffsetFrom(l));
+  uint64_t d;
+  EXPECT_TRUE(m.IsKnownOffsetFrom(l, &d));
+  EXPECT_EQ(-0x317730995d2ab6eeULL, d);
+  EXPECT_TRUE(m.IsKnownConstant());
+  EXPECT_EQ(0x6237fbaf9ef7929eULL - 0x317730995d2ab6eeULL, m.Value());
+}
+
+TEST(SubtractionDeathTest, LabelLabel) {
+  Label l, m;
+  ASSERT_DEATH(l - m, "IsKnownOffsetFrom\\(label, &offset\\)");
+}
+
+TEST(Subtraction, LabelLabel) {
+  Label l, m;
+  l = m + 0x7fa77ec63e28a17aULL;
+  EXPECT_EQ(0x7fa77ec63e28a17aULL, l - m);
+  EXPECT_EQ(-0x7fa77ec63e28a17aULL, m - l);
+}
+
+TEST(IsKnownConstant, Undefined) {
+  Label l;
+  EXPECT_FALSE(l.IsKnownConstant());
+}
+
+TEST(IsKnownConstant, RelatedLabel) {
+  Label l, m;
+  l = m;
+  EXPECT_FALSE(l.IsKnownConstant());
+  EXPECT_FALSE(m.IsKnownConstant());
+}
+
+TEST(IsKnownConstant, Constant) {
+  Label l;
+  l = 0xf374b1bdd6a22576ULL;
+  EXPECT_TRUE(l.IsKnownConstant());
+}
+
+TEST(IsKnownOffsetFrom, Unrelated) {
+  Label l, m;
+  EXPECT_FALSE(l.IsKnownOffsetFrom(m));
+}
+
+TEST(IsKnownOffsetFrom, Related) {
+  Label l, m;
+  l = m;
+  EXPECT_TRUE(l.IsKnownOffsetFrom(m));
+}
+
+// Test the construction of chains of related labels, and the
+// propagation of values through them.
+//
+// Although the relations between labels are supposed to behave
+// symmetrically --- that is, 'a = b' should put a and b in
+// indistinguishable states --- there's a distinction made internally
+// between the target (a) and the source (b).
+// 
+// So there are five test axes to cover:
+//
+// - Do we construct the chain with assignment ("Assign") or with constructors
+//   ("Construct")?
+//
+// - Do we set the value of the label at the start of the chain
+//   ("Start") or the label at the end ("End")?
+//
+// - Are we testing the propagation of a relationship between variable
+//   values ("Relation"), or the propagation of a known constant value
+//   ("Value")?
+//
+// - Do we set the value before building the chain ("Before") or after
+//   the chain has been built ("After")?
+//
+// - Do we add new relationships to the end of the existing chain
+//   ("Forward") or to the beginning ("Backward")?
+//
+// Of course, "Construct" and "Backward" can't be combined, which
+// eliminates eight combinations, and "Construct", "End", and "Before"
+// can't be combined, which eliminates two more, so there are are 22
+// combinations, not 32.
+
+TEST(LabelChain, AssignStartRelationBeforeForward) {
+  Label a, b, c, d;
+  Label x;
+  a = x;
+  b = a + 0x1;
+  c = b + 0x10;
+  d = c + 0x100;
+  EXPECT_EQ(0x111U, d-x);
+  EXPECT_EQ(0x11U,  c-x);
+  EXPECT_EQ(0x1U,   b-x);
+  EXPECT_EQ(0U,     a-x);
+}
+
+TEST(LabelChain, AssignStartRelationBeforeBackward) {
+  Label a, b, c, d;
+  Label x;
+  a = x;
+  d = c + 0x100;
+  c = b + 0x10;
+  b = a + 0x1;
+  EXPECT_EQ(0x111U, d-x);
+  EXPECT_EQ(0x11U,  c-x);
+  EXPECT_EQ(0x1U,   b-x);
+  EXPECT_EQ(0U,     a-x);
+}
+
+TEST(LabelChain, AssignStartRelationAfterForward) {
+  Label a, b, c, d;
+  Label x;
+  b = a + 0x1;
+  c = b + 0x10;
+  d = c + 0x100;
+  a = x;
+  EXPECT_EQ(0x111U, d-x);
+  EXPECT_EQ(0x11U,  c-x);
+  EXPECT_EQ(0x1U,   b-x);
+  EXPECT_EQ(0U,     a-x);
+}
+
+TEST(LabelChain, AssignStartRelationAfterBackward) {
+  Label a, b, c, d;
+  Label x;
+  d = c + 0x100;
+  c = b + 0x10;
+  b = a + 0x1;
+  a = x;
+  EXPECT_EQ(0x111U, d-x);
+  EXPECT_EQ(0x11U,  c-x);
+  EXPECT_EQ(0x1U,   b-x);
+  EXPECT_EQ(0U,     a-x);
+}
+
+TEST(LabelChain, AssignStartValueBeforeForward) {
+  Label a, b, c, d;
+  a = 0xa131200190546ac2ULL;
+  b = a + 0x1;
+  c = b + 0x10;
+  d = c + 0x100;
+  EXPECT_EQ(0xa131200190546ac2ULL + 0x111U, d.Value());
+  EXPECT_EQ(0xa131200190546ac2ULL + 0x11U,  c.Value());
+  EXPECT_EQ(0xa131200190546ac2ULL + 0x1U,   b.Value());
+  EXPECT_EQ(0xa131200190546ac2ULL + 0U,     a.Value());
+}
+
+TEST(LabelChain, AssignStartValueBeforeBackward) {
+  Label a, b, c, d;
+  a = 0x8da17e1670ad4fa2ULL;
+  d = c + 0x100;
+  c = b + 0x10;
+  b = a + 0x1;
+  EXPECT_EQ(0x8da17e1670ad4fa2ULL + 0x111U, d.Value());
+  EXPECT_EQ(0x8da17e1670ad4fa2ULL + 0x11U,  c.Value());
+  EXPECT_EQ(0x8da17e1670ad4fa2ULL + 0x1U,   b.Value());
+  EXPECT_EQ(0x8da17e1670ad4fa2ULL + 0U,     a.Value());
+}
+
+TEST(LabelChain, AssignStartValueAfterForward) {
+  Label a, b, c, d;
+  b = a + 0x1;
+  c = b + 0x10;
+  d = c + 0x100;
+  a = 0x99b8f51bafd41adaULL;
+  EXPECT_EQ(0x99b8f51bafd41adaULL + 0x111U, d.Value());
+  EXPECT_EQ(0x99b8f51bafd41adaULL + 0x11U,  c.Value());
+  EXPECT_EQ(0x99b8f51bafd41adaULL + 0x1U,   b.Value());
+  EXPECT_EQ(0x99b8f51bafd41adaULL + 0U,     a.Value());
+}
+
+TEST(LabelChain, AssignStartValueAfterBackward) {
+  Label a, b, c, d;
+  d = c + 0x100;
+  c = b + 0x10;
+  b = a + 0x1;
+  a = 0xc86ca1d97ab5df6eULL;
+  EXPECT_EQ(0xc86ca1d97ab5df6eULL + 0x111U, d.Value());
+  EXPECT_EQ(0xc86ca1d97ab5df6eULL + 0x11U,  c.Value());
+  EXPECT_EQ(0xc86ca1d97ab5df6eULL + 0x1U,   b.Value());
+  EXPECT_EQ(0xc86ca1d97ab5df6eULL + 0U,     a.Value());
+}
+
+TEST(LabelChain, AssignEndRelationBeforeForward) {
+  Label a, b, c, d;
+  Label x;
+  x = d;
+  b = a + 0x1;
+  c = b + 0x10;
+  d = c + 0x100;
+  EXPECT_EQ(-(uint64_t)0x111U, a-x);
+  EXPECT_EQ(-(uint64_t)0x110U, b-x);
+  EXPECT_EQ(-(uint64_t)0x100U, c-x);
+  EXPECT_EQ(-(uint64_t)0U,     d-x);
+}
+
+TEST(LabelChain, AssignEndRelationBeforeBackward) {
+  Label a, b, c, d;
+  Label x;
+  x = d;
+  d = c + 0x100;
+  c = b + 0x10;
+  b = a + 0x1;
+  EXPECT_EQ(-(uint64_t)0x111U, a-x);
+  EXPECT_EQ(-(uint64_t)0x110U, b-x);
+  EXPECT_EQ(-(uint64_t)0x100U, c-x);
+  EXPECT_EQ(-(uint64_t)0U,     d-x);
+}
+
+TEST(LabelChain, AssignEndRelationAfterForward) {
+  Label a, b, c, d;
+  Label x;
+  b = a + 0x1;
+  c = b + 0x10;
+  d = c + 0x100;
+  x = d;
+  EXPECT_EQ(-(uint64_t)0x111U, a-x);
+  EXPECT_EQ(-(uint64_t)0x110U, b-x);
+  EXPECT_EQ(-(uint64_t)0x100U, c-x);
+  EXPECT_EQ(-(uint64_t)0x000U, d-x);
+}
+
+TEST(LabelChain, AssignEndRelationAfterBackward) {
+  Label a, b, c, d;
+  Label x;
+  d = c + 0x100;
+  c = b + 0x10;
+  b = a + 0x1;
+  x = d;
+  EXPECT_EQ(-(uint64_t)0x111U, a-x);
+  EXPECT_EQ(-(uint64_t)0x110U, b-x);
+  EXPECT_EQ(-(uint64_t)0x100U, c-x);
+  EXPECT_EQ(-(uint64_t)0x000U, d-x);
+}
+
+TEST(LabelChain, AssignEndValueBeforeForward) {
+  Label a, b, c, d;
+  d = 0xa131200190546ac2ULL;
+  b = a + 0x1;
+  c = b + 0x10;
+  d = c + 0x100;
+  EXPECT_EQ(0xa131200190546ac2ULL - 0x111, a.Value());
+  EXPECT_EQ(0xa131200190546ac2ULL - 0x110, b.Value());
+  EXPECT_EQ(0xa131200190546ac2ULL - 0x100, c.Value());
+  EXPECT_EQ(0xa131200190546ac2ULL - 0x000, d.Value());
+}
+
+TEST(LabelChain, AssignEndValueBeforeBackward) {
+  Label a, b, c, d;
+  d = 0x8da17e1670ad4fa2ULL;
+  d = c + 0x100;
+  c = b + 0x10;
+  b = a + 0x1;
+  EXPECT_EQ(0x8da17e1670ad4fa2ULL - 0x111, a.Value());
+  EXPECT_EQ(0x8da17e1670ad4fa2ULL - 0x110, b.Value());
+  EXPECT_EQ(0x8da17e1670ad4fa2ULL - 0x100, c.Value());
+  EXPECT_EQ(0x8da17e1670ad4fa2ULL - 0x000, d.Value());
+}
+
+TEST(LabelChain, AssignEndValueAfterForward) {
+  Label a, b, c, d;
+  b = a + 0x1;
+  c = b + 0x10;
+  d = c + 0x100;
+  d = 0x99b8f51bafd41adaULL;
+  EXPECT_EQ(0x99b8f51bafd41adaULL - 0x111, a.Value());
+  EXPECT_EQ(0x99b8f51bafd41adaULL - 0x110, b.Value());
+  EXPECT_EQ(0x99b8f51bafd41adaULL - 0x100, c.Value());
+  EXPECT_EQ(0x99b8f51bafd41adaULL - 0x000, d.Value());
+}
+
+TEST(LabelChain, AssignEndValueAfterBackward) {
+  Label a, b, c, d;
+  d = c + 0x100;
+  c = b + 0x10;
+  b = a + 0x1;
+  d = 0xc86ca1d97ab5df6eULL;
+  EXPECT_EQ(0xc86ca1d97ab5df6eULL - 0x111, a.Value());
+  EXPECT_EQ(0xc86ca1d97ab5df6eULL - 0x110, b.Value());
+  EXPECT_EQ(0xc86ca1d97ab5df6eULL - 0x100, c.Value());
+  EXPECT_EQ(0xc86ca1d97ab5df6eULL - 0x000, d.Value());
+}
+
+TEST(LabelChain, ConstructStartRelationBeforeForward) {
+  Label x;
+  Label a(x);
+  Label b(a + 0x1);
+  Label c(b + 0x10);
+  Label d(c + 0x100);
+  EXPECT_EQ(0x111U, d-x);
+  EXPECT_EQ(0x11U,  c-x);
+  EXPECT_EQ(0x1U,   b-x);
+  EXPECT_EQ(0U,     a-x);
+}
+
+TEST(LabelChain, ConstructStartRelationAfterForward) {
+  Label x;
+  Label a;
+  Label b(a + 0x1);
+  Label c(b + 0x10);
+  Label d(c + 0x100);
+  a = x;
+  EXPECT_EQ(0x111U, d-x);
+  EXPECT_EQ(0x11U,  c-x);
+  EXPECT_EQ(0x1U,   b-x);
+  EXPECT_EQ(0U,     a-x);
+}
+
+TEST(LabelChain, ConstructStartValueBeforeForward) {
+  Label a(0x5d234d177d01ccc8ULL);
+  Label b(a + 0x1);
+  Label c(b + 0x10);
+  Label d(c + 0x100);
+  EXPECT_EQ(0x5d234d177d01ccc8ULL + 0x111U, d.Value());
+  EXPECT_EQ(0x5d234d177d01ccc8ULL + 0x011U, c.Value());
+  EXPECT_EQ(0x5d234d177d01ccc8ULL + 0x001U, b.Value());
+  EXPECT_EQ(0x5d234d177d01ccc8ULL + 0x000U, a.Value());
+}
+
+TEST(LabelChain, ConstructStartValueAfterForward) {
+  Label a;
+  Label b(a + 0x1);
+  Label c(b + 0x10);
+  Label d(c + 0x100);
+  a = 0xded85d54586e84fcULL;
+  EXPECT_EQ(0xded85d54586e84fcULL + 0x111U, d.Value());
+  EXPECT_EQ(0xded85d54586e84fcULL + 0x011U, c.Value());
+  EXPECT_EQ(0xded85d54586e84fcULL + 0x001U, b.Value());
+  EXPECT_EQ(0xded85d54586e84fcULL + 0x000U, a.Value());
+}
+
+TEST(LabelChain, ConstructEndRelationAfterForward) {
+  Label x;
+  Label a;
+  Label b(a + 0x1);
+  Label c(b + 0x10);
+  Label d(c + 0x100);
+  x = d;
+  EXPECT_EQ(-(uint64_t)0x111U, a-x);
+  EXPECT_EQ(-(uint64_t)0x110U, b-x);
+  EXPECT_EQ(-(uint64_t)0x100U, c-x);
+  EXPECT_EQ(-(uint64_t)0x000U, d-x);
+}
+
+TEST(LabelChain, ConstructEndValueAfterForward) {
+  Label a;
+  Label b(a + 0x1);
+  Label c(b + 0x10);
+  Label d(c + 0x100);
+  d = 0x99b8f51bafd41adaULL;
+  EXPECT_EQ(0x99b8f51bafd41adaULL - 0x111, a.Value());
+  EXPECT_EQ(0x99b8f51bafd41adaULL - 0x110, b.Value());
+  EXPECT_EQ(0x99b8f51bafd41adaULL - 0x100, c.Value());
+  EXPECT_EQ(0x99b8f51bafd41adaULL - 0x000, d.Value());
+}
+
+TEST(LabelTree, KnownValue) {
+  Label l, m, n, o, p;
+  l = m;
+  m = n;
+  o = p;
+  p = n;
+  l = 0x536b5de3d468a1b5ULL;
+  EXPECT_EQ(0x536b5de3d468a1b5ULL, o.Value());
+}
+
+TEST(LabelTree, Related) {
+  Label l, m, n, o, p;
+  l = m - 1;
+  m = n - 10;
+  o = p + 100;
+  p = n + 1000;
+  EXPECT_EQ(1111U, o - l);
+}
+
+TEST(EquationDeathTest, EqualConstants) {
+  Label m = 0x0d3962f280f07d24ULL;
+  Label n = 0x0d3962f280f07d24ULL;
+  m = n; // no death expected
+}
+
+TEST(EquationDeathTest, EqualIndirectConstants) {
+  Label m = 0xa347f1e5238fe6a1ULL;
+  Label n;
+  Label o = n;
+  n = 0xa347f1e5238fe6a1ULL;
+  n = m; // no death expected
+}
+
+TEST(EquationDeathTest, ConstantClash) {
+  Label m = 0xd4cc0f4f630ec741ULL;
+  Label n = 0x934cd2d8254fc3eaULL;
+  ASSERT_DEATH(m = n, "addend_ == addend");
+}
+
+TEST(EquationDeathTest, IndirectConstantClash) {
+  Label m = 0xd4cc0f4f630ec741ULL;
+  Label n, o;
+  n = o;
+  o = 0xcfbe3b83ac49ce86ULL;
+  ASSERT_DEATH(m = n, "addend_ == addend");
+}
+
+// Assigning to a related label may free the next Binding on its
+// chain. This test always passes; it is interesting to memory
+// checkers and coverage analysis.
+TEST(LabelReferenceCount, AssignmentFree) {
+  Label l;
+  {
+    Label m;
+    l = m;
+  }
+  // This should free m's Binding.
+  l = 0xca8bae92f0376d4fULL;
+  ASSERT_EQ(0xca8bae92f0376d4fULL, l.Value());
+}
+
+// Finding the value of a label may free the Binding it refers to. This test
+// always passes; it is interesting to memory checkers and coverage analysis.
+TEST(LabelReferenceCount, FindValueFree) {
+  Label l;
+  {
+    Label m, n;
+    l = m;
+    m = n;
+    n = 0x7a0b0c576672daafULL;
+    // At this point, l's Binding refers to m's Binding, which refers
+    // to n's binding.
+  }
+  // Now, l is the only reference keeping the three Bindings alive.
+  // Resolving its value should free l's and m's original bindings.
+  ASSERT_EQ(0x7a0b0c576672daafULL, l.Value());
+}
+
+TEST(ConstructSection, Simple) {
+  Section s;
+}
+
+TEST(ConstructSection, WithEndian) {
+  Section s(kBigEndian);
+}
+
+// A fixture class for TestAssembler::Section tests.
+class SectionFixture {
+ public:
+  Section section;
+  string contents;
+  static const uint8_t data[];
+  static const size_t data_size;
+};
+
+const uint8_t SectionFixture::data[] = {
+  0x87, 0x4f, 0x43, 0x67, 0x30, 0xd0, 0xd4, 0x0e
+};
+
+#define I0()
+#define I1(a) { a }
+#define I2(a,b) { a,b }
+#define I3(a,b,c) { a,b,c }
+#define I4(a,b,c,d) { a,b,c,d }
+#define I5(a,b,c,d,e) { a,b,c,d,e }
+#define I6(a,b,c,d,e,f) { a,b,c,d,e,f }
+#define I7(a,b,c,d,e,f,g) { a,b,c,d,e,f,g }
+#define I8(a,b,c,d,e,f,g,h) { a,b,c,d,e,f,g,h }
+#define I9(a,b,c,d,e,f,g,h,i) { a,b,c,d,e,f,g,h,i }
+#define ASSERT_BYTES(s, b)                                              \
+  do                                                                    \
+    {                                                                   \
+      static const uint8_t expected_bytes[] = b;                       \
+      ASSERT_EQ(sizeof(expected_bytes), s.size());                      \
+      ASSERT_TRUE(memcmp(s.data(), (const char *) expected_bytes,       \
+                         sizeof(expected_bytes)) == 0);                 \
+    }                                                                   \
+  while(0)
+
+class Append: public SectionFixture, public Test { };
+
+TEST_F(Append, Bytes) {
+  section.Append(data, sizeof(data));
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_EQ(sizeof(data), contents.size());
+  EXPECT_TRUE(0 == memcmp(contents.data(), (const char *) data, sizeof(data)));
+}
+
+TEST_F(Append, BytesTwice) {
+  section.Append(data, sizeof(data));
+  section.Append(data, sizeof(data));
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_EQ(2 * sizeof(data), contents.size());
+  ASSERT_TRUE(0 == memcmp(contents.data(), (const char *) data, sizeof(data)));
+  ASSERT_TRUE(0 == memcmp(contents.data() + sizeof(data),
+                          (const char *) data, sizeof(data)));
+}
+
+TEST_F(Append, String) {
+  string s1 = "howdy ";
+  string s2 = "there";
+  section.Append(s1);
+  section.Append(s2);
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_STREQ(contents.c_str(), "howdy there");
+}
+
+TEST_F(Append, CString) {
+  section.AppendCString("howdy");
+  section.AppendCString("");
+  section.AppendCString("there");
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_EQ(string("howdy\0\0there\0", 13), contents);
+}
+
+TEST_F(Append, CStringSize) {
+  section.AppendCString("howdy", 3);
+  section.AppendCString("there", 5);
+  section.AppendCString("fred", 6);
+  section.AppendCString("natalie", 0);
+  section.AppendCString("", 10);
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_EQ(string("howtherefred\0\0\0\0\0\0\0\0\0\0\0\0", 24), contents);
+}
+
+TEST_F(Append, RepeatedBytes) {
+  section.Append((size_t) 10, '*');
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_STREQ(contents.c_str(), "**********");
+}
+
+TEST_F(Append, GeneralLE1) {
+  section.Append(kLittleEndian, 1, 42);
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I1(42));
+}
+
+TEST_F(Append, GeneralLE2) {
+  section.Append(kLittleEndian, 2, 0x15a1);
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I2(0xa1, 0x15));
+}
+
+TEST_F(Append, GeneralLE3) {
+  section.Append(kLittleEndian, 3, 0x59ae8d);
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I3(0x8d, 0xae, 0x59));
+}
+
+TEST_F(Append, GeneralLE4) {
+  section.Append(kLittleEndian, 4, 0x51603c56);
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I4(0x56, 0x3c, 0x60, 0x51));
+}
+
+TEST_F(Append, GeneralLE5) {
+  section.Append(kLittleEndian, 5, 0x385e2803b4ULL);
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I5(0xb4, 0x03, 0x28, 0x5e, 0x38));
+}
+
+TEST_F(Append, GeneralLE6) {
+  section.Append(kLittleEndian, 6, 0xc7db9534dd1fULL);
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I6(0x1f, 0xdd, 0x34, 0x95, 0xdb, 0xc7));
+}
+
+TEST_F(Append, GeneralLE7) {
+  section.Append(kLittleEndian, 7, 0x1445c9f1b843e6ULL);
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I7(0xe6, 0x43, 0xb8, 0xf1, 0xc9, 0x45, 0x14));
+}
+
+TEST_F(Append, GeneralLE8) {
+  section.Append(kLittleEndian, 8, 0xaf48019dfe5c01e5ULL);
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I8(0xe5, 0x01, 0x5c, 0xfe, 0x9d, 0x01, 0x48, 0xaf));
+}
+
+TEST_F(Append, GeneralBE1) {
+  section.Append(kBigEndian, 1, 0xd0ULL);
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I1(0xd0));
+}
+
+TEST_F(Append, GeneralBE2) {
+  section.Append(kBigEndian, 2, 0x2e7eULL);
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I2(0x2e, 0x7e));
+}
+
+TEST_F(Append, GeneralBE3) {
+  section.Append(kBigEndian, 3, 0x37dad6ULL);
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I3(0x37, 0xda, 0xd6));
+}
+
+TEST_F(Append, GeneralBE4) {
+  section.Append(kBigEndian, 4, 0x715935c7ULL);
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I4(0x71, 0x59, 0x35, 0xc7));
+}
+
+TEST_F(Append, GeneralBE5) {
+  section.Append(kBigEndian, 5, 0x42baeb02b7ULL);
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I5(0x42, 0xba, 0xeb, 0x02, 0xb7));
+}
+
+TEST_F(Append, GeneralBE6) {
+  section.Append(kBigEndian, 6, 0xf1cdf10e7b18ULL);
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I6(0xf1, 0xcd, 0xf1, 0x0e, 0x7b, 0x18));
+}
+
+TEST_F(Append, GeneralBE7) {
+  section.Append(kBigEndian, 7, 0xf50a724f0b0d20ULL);
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I7(0xf5, 0x0a, 0x72, 0x4f, 0x0b, 0x0d, 0x20));
+}
+
+TEST_F(Append, GeneralBE8) {
+  section.Append(kBigEndian, 8, 0xa6b2cb5e98dc9c16ULL);
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I8(0xa6, 0xb2, 0xcb, 0x5e, 0x98, 0xdc, 0x9c, 0x16));
+}
+
+TEST_F(Append, GeneralLE1Label) {
+  Label l;
+  section.Append(kLittleEndian, 1, l);
+  l = 42;
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I1(42));
+}
+
+TEST_F(Append, GeneralLE2Label) {
+  Label l;
+  section.Append(kLittleEndian, 2, l);
+  l = 0x15a1;
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I2(0xa1, 0x15));
+}
+
+TEST_F(Append, GeneralLE3Label) {
+  Label l;
+  section.Append(kLittleEndian, 3, l);
+  l = 0x59ae8d;
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I3(0x8d, 0xae, 0x59));
+}
+
+TEST_F(Append, GeneralLE4Label) {
+  Label l;
+  section.Append(kLittleEndian, 4, l);
+  l = 0x51603c56;
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I4(0x56, 0x3c, 0x60, 0x51));
+}
+
+TEST_F(Append, GeneralLE5Label) {
+  Label l;
+  section.Append(kLittleEndian, 5, l);
+  l = 0x385e2803b4ULL;
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I5(0xb4, 0x03, 0x28, 0x5e, 0x38));
+}
+
+TEST_F(Append, GeneralLE6Label) {
+  Label l;
+  section.Append(kLittleEndian, 6, l);
+  l = 0xc7db9534dd1fULL;
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I6(0x1f, 0xdd, 0x34, 0x95, 0xdb, 0xc7));
+}
+
+TEST_F(Append, GeneralLE7Label) {
+  Label l;
+  section.Append(kLittleEndian, 7, l);
+  l = 0x1445c9f1b843e6ULL;
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I7(0xe6, 0x43, 0xb8, 0xf1, 0xc9, 0x45, 0x14));
+}
+
+TEST_F(Append, GeneralLE8Label) {
+  Label l;
+  section.Append(kLittleEndian, 8, l);
+  l = 0xaf48019dfe5c01e5ULL;
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I8(0xe5, 0x01, 0x5c, 0xfe, 0x9d, 0x01, 0x48, 0xaf));
+}
+
+TEST_F(Append, GeneralBE1Label) {
+  Label l;
+  section.Append(kBigEndian, 1, l);
+  l = 0xd0ULL;
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I1(0xd0));
+}
+
+TEST_F(Append, GeneralBE2Label) {
+  Label l;
+  section.Append(kBigEndian, 2, l);
+  l = 0x2e7eULL;
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I2(0x2e, 0x7e));
+}
+
+TEST_F(Append, GeneralBE3Label) {
+  Label l;
+  section.Append(kBigEndian, 3, l);
+  l = 0x37dad6ULL;
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I3(0x37, 0xda, 0xd6));
+}
+
+TEST_F(Append, GeneralBE4Label) {
+  Label l;
+  section.Append(kBigEndian, 4, l);
+  l = 0x715935c7ULL;
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I4(0x71, 0x59, 0x35, 0xc7));
+}
+
+TEST_F(Append, GeneralBE5Label) {
+  Label l;
+  section.Append(kBigEndian, 5, l);
+  l = 0x42baeb02b7ULL;
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I5(0x42, 0xba, 0xeb, 0x02, 0xb7));
+}
+
+TEST_F(Append, GeneralBE6Label) {
+  Label l;
+  section.Append(kBigEndian, 6, l);
+  l = 0xf1cdf10e7b18ULL;
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I6(0xf1, 0xcd, 0xf1, 0x0e, 0x7b, 0x18));
+}
+
+TEST_F(Append, GeneralBE7Label) {
+  Label l;
+  section.Append(kBigEndian, 7, l);
+  l = 0xf50a724f0b0d20ULL;
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I7(0xf5, 0x0a, 0x72, 0x4f, 0x0b, 0x0d, 0x20));
+}
+
+TEST_F(Append, GeneralBE8Label) {
+  Label l;
+  section.Append(kBigEndian, 8, l);
+  l = 0xa6b2cb5e98dc9c16ULL;
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I8(0xa6, 0xb2, 0xcb, 0x5e, 0x98, 0xdc, 0x9c, 0x16));
+}
+
+TEST_F(Append, B8) {
+  section.Append(1, 0x2a);
+  section.B8(0xd3U);
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I2(0x2a, 0xd3));
+}
+
+TEST_F(Append, B8Label) {
+  Label l;
+  section.Append(1, 0x2a);
+  section.B8(l);
+  l = 0x4bU;
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I2(0x2a, 0x4b));
+}
+
+TEST_F(Append, B16) {
+  section.Append(1, 0x2a);
+  section.B16(0x472aU);
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I3(0x2a, 0x47, 0x2a));
+}
+
+TEST_F(Append, B16Label) {
+  Label l;
+  section.Append(1, 0x2a);
+  section.B16(l);
+  l = 0x55e8U;
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I3(0x2a, 0x55, 0xe8));
+}
+
+TEST_F(Append, B32) {
+  section.Append(1, 0x2a);
+  section.B32(0xbd412cbcU);
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I5(0x2a, 0xbd, 0x41, 0x2c, 0xbc));
+}
+
+TEST_F(Append, B32Label) {
+  Label l;
+  section.Append(1, 0x2a);
+  section.B32(l);
+  l = 0x208e37d5U;
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I5(0x2a, 0x20, 0x8e, 0x37, 0xd5));
+}
+
+TEST_F(Append, B64) {
+  section.Append(1, 0x2a);
+  section.B64(0x3402a013111e68adULL);
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, 
+               I9(0x2a, 0x34, 0x02, 0xa0, 0x13, 0x11, 0x1e, 0x68, 0xad));
+}
+
+TEST_F(Append, B64Label) {
+  Label l;
+  section.Append(1, 0x2a);
+  section.B64(l);
+  l = 0x355dbfbb4ac6d57fULL;
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, 
+               I9(0x2a, 0x35, 0x5d, 0xbf, 0xbb, 0x4a, 0xc6, 0xd5, 0x7f));
+}
+
+TEST_F(Append, L8) {
+  section.Append(1, 0x2a);
+  section.L8(0x26U);
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I2(0x2a, 0x26));
+}
+
+TEST_F(Append, L8Label) {
+  Label l;
+  section.Append(1, 0x2a);
+  section.L8(l);
+  l = 0xa8U;
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I2(0x2a, 0xa8));
+}
+
+TEST_F(Append, L16) {
+  section.Append(1, 0x2a);
+  section.L16(0xca6dU);
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I3(0x2a, 0x6d, 0xca));
+}
+
+TEST_F(Append, L16Label) {
+  Label l;
+  section.Append(1, 0x2a);
+  section.L16(l);
+  l = 0xd21fU;
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I3(0x2a, 0x1f, 0xd2));
+}
+
+TEST_F(Append, L32) {
+  section.Append(1, 0x2a);
+  section.L32(0x558f6181U);
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I5(0x2a, 0x81, 0x61, 0x8f, 0x55));
+}
+
+TEST_F(Append, L32Label) {
+  Label l;
+  section.Append(1, 0x2a);
+  section.L32(l);
+  l = 0x4b810f82U;
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I5(0x2a, 0x82, 0x0f, 0x81, 0x4b));
+}
+
+TEST_F(Append, L64) {
+  section.Append(1, 0x2a);
+  section.L64(0x564384f7579515bfULL);
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, 
+               I9(0x2a, 0xbf, 0x15, 0x95, 0x57, 0xf7, 0x84, 0x43, 0x56));
+}
+
+TEST_F(Append, L64Label) {
+  Label l;
+  section.Append(1, 0x2a);
+  section.L64(l);
+  l = 0x424b1d020667c8dbULL;
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, 
+               I9(0x2a, 0xdb, 0xc8, 0x67, 0x06, 0x02, 0x1d, 0x4b, 0x42));
+}
+
+TEST_F(Append, D8Big) {
+  section.set_endianness(kBigEndian);
+  section.Append(1, 0x2a);
+  section.D8(0xe6U);
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I2(0x2a, 0xe6));
+}
+
+TEST_F(Append, D8BigLabel) {
+  Label l;
+  section.set_endianness(kBigEndian);
+  section.Append(1, 0x2a);
+  section.D8(l);
+  l = 0xeeU;
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I2(0x2a, 0xee));
+}
+
+TEST_F(Append, D16Big) {
+  section.set_endianness(kBigEndian);
+  section.Append(1, 0x2a);
+  section.D16(0x83b1U);
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I3(0x2a, 0x83, 0xb1));
+}
+
+TEST_F(Append, D16BigLabel) {
+  Label l;
+  section.set_endianness(kBigEndian);
+  section.Append(1, 0x2a);
+  section.D16(l);
+  l = 0x5b55U;
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I3(0x2a, 0x5b, 0x55));
+}
+
+TEST_F(Append, D32Big) {
+  section.set_endianness(kBigEndian);
+  section.Append(1, 0x2a);
+  section.D32(0xd0b0e431U);
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I5(0x2a, 0xd0, 0xb0, 0xe4, 0x31));
+}
+
+TEST_F(Append, D32BigLabel) {
+  Label l;
+  section.set_endianness(kBigEndian);
+  section.Append(1, 0x2a);
+  section.D32(l);
+  l = 0x312fb340U;
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I5(0x2a, 0x31, 0x2f, 0xb3, 0x40));
+}
+
+TEST_F(Append, D64Big) {
+  section.set_endianness(kBigEndian);
+  section.Append(1, 0x2a);
+  section.D64(0xb109843500dbcb16ULL);
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, 
+               I9(0x2a, 0xb1, 0x09, 0x84, 0x35, 0x00, 0xdb, 0xcb, 0x16));
+}
+
+TEST_F(Append, D64BigLabel) {
+  Label l;
+  section.set_endianness(kBigEndian);
+  section.Append(1, 0x2a);
+  section.D64(l);
+  l = 0x9a0d61b70f671fd7ULL;
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, 
+               I9(0x2a, 0x9a, 0x0d, 0x61, 0xb7, 0x0f, 0x67, 0x1f, 0xd7));
+}
+
+TEST_F(Append, D8Little) {
+  section.set_endianness(kLittleEndian);
+  section.Append(1, 0x2a);
+  section.D8(0x42U);
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I2(0x2a, 0x42));
+}
+
+TEST_F(Append, D8LittleLabel) {
+  Label l;
+  section.set_endianness(kLittleEndian);
+  section.Append(1, 0x2a);
+  section.D8(l);
+  l = 0x05U;
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I2(0x2a, 0x05));
+}
+
+TEST_F(Append, D16Little) {
+  section.set_endianness(kLittleEndian);
+  section.Append(1, 0x2a);
+  section.D16(0xc5c5U);
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I3(0x2a, 0xc5, 0xc5));
+}
+
+TEST_F(Append, D16LittleLabel) {
+  Label l;
+  section.set_endianness(kLittleEndian);
+  section.Append(1, 0x2a);
+  section.D16(l);
+  l = 0xb620U;
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I3(0x2a, 0x20, 0xb6));
+}
+
+TEST_F(Append, D32Little) {
+  section.set_endianness(kLittleEndian);
+  section.Append(1, 0x2a);
+  section.D32(0x1a87d0feU);
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I5(0x2a, 0xfe, 0xd0, 0x87, 0x1a));
+}
+
+TEST_F(Append, D32LittleLabel) {
+  Label l;
+  section.set_endianness(kLittleEndian);
+  section.Append(1, 0x2a);
+  section.D32(l);
+  l = 0xb8012d6bU;
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I5(0x2a, 0x6b, 0x2d, 0x01, 0xb8));
+}
+
+TEST_F(Append, D64Little) {
+  section.set_endianness(kLittleEndian);
+  section.Append(1, 0x2a);
+  section.D64(0x42de75c61375a1deULL);
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, 
+               I9(0x2a, 0xde, 0xa1, 0x75, 0x13, 0xc6, 0x75, 0xde, 0x42));
+}
+
+TEST_F(Append, D64LittleLabel) {
+  Label l;
+  section.set_endianness(kLittleEndian);
+  section.Append(1, 0x2a);
+  section.D64(l);
+  l = 0x8b3bececf3fb5312ULL;
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, 
+               I9(0x2a, 0x12, 0x53, 0xfb, 0xf3, 0xec, 0xec, 0x3b, 0x8b));
+}
+
+TEST_F(Append, Variety) {
+  Label a, b, c, d, e, f, g, h;
+  section.Append(kBigEndian, 1, a)
+      .Append(kLittleEndian, 8, h)
+      .Append(kBigEndian, 1, 0x8bULL)
+      .Append(kLittleEndian, 8, 0x0ea56540448f4439ULL)
+      .Append(kBigEndian, 2, b)
+      .Append(kLittleEndian, 7, g)
+      .Append(kBigEndian, 2, 0xcf15ULL)
+      .Append(kLittleEndian, 7, 0x29694f04c5724aULL)
+      .Append(kBigEndian, 3, c)
+      .Append(kLittleEndian, 6, f)
+      .Append(kBigEndian, 3, 0x8c3ffdULL)
+      .Append(kLittleEndian, 6, 0x6f11ba80187aULL)
+      .Append(kBigEndian, 4, d)
+      .Append(kLittleEndian, 5, e)
+      .Append(kBigEndian, 4, 0x2fda2472ULL)
+      .Append(kLittleEndian, 5, 0x0aa02d423fULL)
+      .Append(kBigEndian, 5, e)
+      .Append(kLittleEndian, 4, d)
+      .Append(kBigEndian, 5, 0x53ba432138ULL)
+      .Append(kLittleEndian, 4, 0xf139ae60ULL)
+      .Append(kBigEndian, 6, f)
+      .Append(kLittleEndian, 3, c)
+      .Append(kBigEndian, 6, 0x168e436af716ULL)
+      .Append(kLittleEndian, 3, 0x3ef189ULL)
+      .Append(kBigEndian, 7, g)
+      .Append(kLittleEndian, 2, b)
+      .Append(kBigEndian, 7, 0xacd4ef233e47d9ULL)
+      .Append(kLittleEndian, 2, 0x5311ULL)
+      .Append(kBigEndian, 8, h)
+      .Append(kLittleEndian, 1, a)
+      .Append(kBigEndian, 8, 0x4668d5f1c93637a1ULL)
+      .Append(kLittleEndian, 1, 0x65ULL);
+  a = 0x79ac9bd8aa256b35ULL;
+  b = 0x22d13097ef86c91cULL;
+  c = 0xf204968b0a05862fULL;
+  d = 0x163177f15a0eb4ecULL;
+  e = 0xbd1b0f1d977f2246ULL;
+  f = 0x2b0842eee83c6461ULL;
+  g = 0x92f4b928a4bf875eULL;
+  h = 0x61a199a8f7286ba6ULL;
+  ASSERT_EQ(8 * 18U, section.Size());
+  ASSERT_TRUE(section.GetContents(&contents));
+
+  static const uint8_t expected[] = {
+    0x35,    0xa6, 0x6b, 0x28, 0xf7, 0xa8, 0x99, 0xa1, 0x61,
+    0x8b,    0x39, 0x44, 0x8f, 0x44, 0x40, 0x65, 0xa5, 0x0e,
+    0xc9, 0x1c,    0x5e, 0x87, 0xbf, 0xa4, 0x28, 0xb9, 0xf4,
+    0xcf, 0x15,    0x4a, 0x72, 0xc5, 0x04, 0x4f, 0x69, 0x29,
+    0x05, 0x86, 0x2f,    0x61, 0x64, 0x3c, 0xe8, 0xee, 0x42,
+    0x8c, 0x3f, 0xfd,    0x7a, 0x18, 0x80, 0xba, 0x11, 0x6f,
+    0x5a, 0x0e, 0xb4, 0xec,    0x46, 0x22, 0x7f, 0x97, 0x1d,
+    0x2f, 0xda, 0x24, 0x72,    0x3f, 0x42, 0x2d, 0xa0, 0x0a,
+    0x1d, 0x97, 0x7f, 0x22, 0x46,    0xec, 0xb4, 0x0e, 0x5a,
+    0x53, 0xba, 0x43, 0x21, 0x38,    0x60, 0xae, 0x39, 0xf1,
+    0x42, 0xee, 0xe8, 0x3c, 0x64, 0x61,    0x2f, 0x86, 0x05,
+    0x16, 0x8e, 0x43, 0x6a, 0xf7, 0x16,    0x89, 0xf1, 0x3e,
+    0xf4, 0xb9, 0x28, 0xa4, 0xbf, 0x87, 0x5e,    0x1c, 0xc9,
+    0xac, 0xd4, 0xef, 0x23, 0x3e, 0x47, 0xd9,    0x11, 0x53,
+    0x61, 0xa1, 0x99, 0xa8, 0xf7, 0x28, 0x6b, 0xa6,    0x35,
+    0x46, 0x68, 0xd5, 0xf1, 0xc9, 0x36, 0x37, 0xa1,    0x65,
+  };
+
+  ASSERT_TRUE(0 == memcmp(contents.data(), expected, sizeof(expected)));
+}
+
+TEST_F(Append, Section) {
+  section.Append("murder");
+  {
+    Section middle;
+    middle.Append(" she");
+    section.Append(middle);
+  }
+  section.Append(" wrote");
+  EXPECT_EQ(16U, section.Size());
+  EXPECT_TRUE(section.GetContents(&contents));
+  EXPECT_STREQ(contents.c_str(), "murder she wrote");
+}
+
+TEST_F(Append, SectionRefs) {
+  section.Append("sugar ");
+  Label l;
+  {
+    Section middle;
+    Label m;
+    middle.B32(m);
+    section.Append(middle);
+    m = 0x66726565;
+  }
+  section.Append(" jazz");
+  EXPECT_EQ(15U, section.Size());
+  EXPECT_TRUE(section.GetContents(&contents));
+  EXPECT_STREQ(contents.c_str(), "sugar free jazz");
+}
+
+TEST_F(Append, LEB128_0) {
+  section.LEB128(0);
+  EXPECT_TRUE(section.GetContents(&contents));
+  EXPECT_EQ(string("\0", 1), contents);
+}
+
+TEST_F(Append, LEB128_0x3f) {
+  section.LEB128(0x3f);
+  EXPECT_TRUE(section.GetContents(&contents));
+  EXPECT_EQ(string("\x3f", 1), contents);
+}
+
+TEST_F(Append, LEB128_0x40) {
+  section.LEB128(0x40);
+  EXPECT_TRUE(section.GetContents(&contents));
+  EXPECT_EQ(string("\xc0\x00", 2), contents);
+}
+
+TEST_F(Append, LEB128_0x7f) {
+  section.LEB128(0x7f);
+  EXPECT_TRUE(section.GetContents(&contents));
+  EXPECT_EQ(string("\xff\x00", 2), contents);
+}
+
+TEST_F(Append, LEB128_0x80) {
+  section.LEB128(0x80);
+  EXPECT_TRUE(section.GetContents(&contents));
+  EXPECT_EQ(string("\x80\x01", 2), contents);
+}
+
+TEST_F(Append, LEB128_0xff) {
+  section.LEB128(0xff);
+  EXPECT_TRUE(section.GetContents(&contents));
+  EXPECT_EQ(string("\xff\x01", 2), contents);
+}
+
+TEST_F(Append, LEB128_0x1fff) {
+  section.LEB128(0x1fff);
+  EXPECT_TRUE(section.GetContents(&contents));
+  EXPECT_EQ(string("\xff\x3f", 2), contents);
+}
+
+TEST_F(Append, LEB128_0x2000) {
+  section.LEB128(0x2000);
+  EXPECT_TRUE(section.GetContents(&contents));
+  EXPECT_EQ(string("\x80\xc0\x00", 3), contents);
+}
+
+TEST_F(Append, LEB128_n1) {
+  section.LEB128(-1);
+  EXPECT_TRUE(section.GetContents(&contents));
+  EXPECT_EQ(string("\x7f", 1), contents);
+}
+
+TEST_F(Append, LEB128_n0x40) {
+  section.LEB128(-0x40);
+  EXPECT_TRUE(section.GetContents(&contents));
+  EXPECT_EQ(string("\x40", 1), contents);
+}
+
+TEST_F(Append, LEB128_n0x41) {
+  section.LEB128(-0x41);
+  EXPECT_TRUE(section.GetContents(&contents));
+  EXPECT_EQ(string("\xbf\x7f", 2), contents);
+}
+
+TEST_F(Append, LEB128_n0x7f) {
+  section.LEB128(-0x7f);
+  EXPECT_TRUE(section.GetContents(&contents));
+  EXPECT_EQ(string("\x81\x7f", 2), contents);
+}
+
+TEST_F(Append, LEB128_n0x80) {
+  section.LEB128(-0x80);
+  EXPECT_TRUE(section.GetContents(&contents));
+  EXPECT_EQ(string("\x80\x7f", 2), contents);
+}
+
+TEST_F(Append, LEB128_n0x2000) {
+  section.LEB128(-0x2000);
+  EXPECT_TRUE(section.GetContents(&contents));
+  EXPECT_EQ(string("\x80\x40", 2), contents);
+}
+
+TEST_F(Append, LEB128_n0x2001) {
+  section.LEB128(-0x2001);
+  EXPECT_TRUE(section.GetContents(&contents));
+  EXPECT_EQ(string("\xff\xbf\x7f", 3), contents);
+}
+
+TEST_F(Append,ULEB128_0) {
+  section.ULEB128(0);
+  EXPECT_TRUE(section.GetContents(&contents));
+  EXPECT_EQ(string("\0", 1), contents);
+}
+
+TEST_F(Append,ULEB128_1) {
+  section.ULEB128(1);
+  EXPECT_TRUE(section.GetContents(&contents));
+  EXPECT_EQ(string("\x01", 1), contents);
+}
+
+TEST_F(Append,ULEB128_0x3f) {
+  section.ULEB128(0x3f);
+  EXPECT_TRUE(section.GetContents(&contents));
+  EXPECT_EQ(string("\x3f", 1), contents);
+}
+
+TEST_F(Append,ULEB128_0x40) {
+  section.ULEB128(0x40);
+  EXPECT_TRUE(section.GetContents(&contents));
+  EXPECT_EQ(string("\x40", 1), contents);
+}
+
+TEST_F(Append,ULEB128_0x7f) {
+  section.ULEB128(0x7f);
+  EXPECT_TRUE(section.GetContents(&contents));
+  EXPECT_EQ(string("\x7f", 1), contents);
+}
+
+TEST_F(Append,ULEB128_0x80) {
+  section.ULEB128(0x80);
+  EXPECT_TRUE(section.GetContents(&contents));
+  EXPECT_EQ(string("\x80\x01", 2), contents);
+}
+
+TEST_F(Append,ULEB128_0xff) {
+  section.ULEB128(0xff);
+  EXPECT_TRUE(section.GetContents(&contents));
+  EXPECT_EQ(string("\xff\x01", 2), contents);
+}
+
+TEST_F(Append,ULEB128_0x100) {
+  section.ULEB128(0x100);
+  EXPECT_TRUE(section.GetContents(&contents));
+  EXPECT_EQ(string("\x80\x02", 2), contents);
+}
+
+TEST_F(Append,ULEB128_0x1fff) {
+  section.ULEB128(0x1fff);
+  EXPECT_TRUE(section.GetContents(&contents));
+  EXPECT_EQ(string("\xff\x3f", 2), contents);
+}
+
+TEST_F(Append,ULEB128_0x2000) {
+  section.ULEB128(0x2000);
+  EXPECT_TRUE(section.GetContents(&contents));
+  EXPECT_EQ(string("\x80\x40", 2), contents);
+}
+
+TEST_F(Append,ULEB128_0x3fff) {
+  section.ULEB128(0x3fff);
+  EXPECT_TRUE(section.GetContents(&contents));
+  EXPECT_EQ(string("\xff\x7f", 2), contents);
+}
+
+TEST_F(Append,ULEB128_0x4000) {
+  section.ULEB128(0x4000);
+  EXPECT_TRUE(section.GetContents(&contents));
+  EXPECT_EQ(string("\x80\x80\x01", 3), contents);
+}
+
+TEST_F(Append,ULEB128_12857) {
+  section.ULEB128(12857);
+  EXPECT_TRUE(section.GetContents(&contents));
+  EXPECT_EQ(string("\xb9\x64", 2), contents);
+}
+
+TEST_F(Append, LEBChain) {
+  section.LEB128(-0x80).ULEB128(12857).Append("*");
+  EXPECT_TRUE(section.GetContents(&contents));
+  EXPECT_EQ(string("\x80\x7f\xb9\x64*", 5), contents);
+}
+
+
+class GetContents: public SectionFixture, public Test { };
+
+TEST_F(GetContents, Undefined) {
+  Label l;
+  section.Append(kLittleEndian, 8, l);
+  ASSERT_FALSE(section.GetContents(&contents));
+}
+
+TEST_F(GetContents, ClearsContents) {
+  section.Append((size_t) 10, '*');
+  EXPECT_EQ(10U, section.Size());
+  EXPECT_TRUE(section.GetContents(&contents));
+  EXPECT_EQ(0U, section.Size());
+}
+
+TEST_F(GetContents, ClearsReferences) {
+  Label l;
+  section.Append(kBigEndian, 1, l);
+  l = 42;
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_BYTES(contents, I1(42));
+  ASSERT_TRUE(section.GetContents(&contents)); // should not die
+}
+
+class Miscellanea: public SectionFixture, public Test { };
+
+TEST_F(Miscellanea, Clear) {
+  section.Append("howdy");
+  Label l;
+  section.L32(l);
+  EXPECT_EQ(9U, section.Size());
+  section.Clear();
+  EXPECT_EQ(0U, section.Size());
+  l = 0x8d231bf0U;
+  ASSERT_TRUE(section.GetContents(&contents)); // should not die
+}
+
+TEST_F(Miscellanea, Align) {
+  section.Append("*");
+  EXPECT_EQ(1U, section.Size());
+  section.Align(4).Append("*");
+  EXPECT_EQ(5U, section.Size());
+  section.Append("*").Align(2);
+  EXPECT_EQ(6U, section.Size());
+}
+
+TEST_F(Miscellanea, AlignPad) {
+  section.Append("*");
+  EXPECT_EQ(1U, section.Size());
+  section.Align(4, ' ').Append("*");
+  EXPECT_EQ(5U, section.Size());
+  section.Append("*").Align(2, ' ');
+  EXPECT_EQ(6U, section.Size());
+  ASSERT_TRUE(section.GetContents(&contents));
+  ASSERT_EQ(string("*   **"), contents);
+}
+
+TEST_F(Miscellanea, StartHereMark) {
+  Label m;
+  section.Append(42, ' ').Mark(&m).Append(13, '+');
+  EXPECT_EQ(42U, m - section.start());
+  EXPECT_EQ(42U + 13U, section.Here() - section.start());
+  EXPECT_FALSE(section.start().IsKnownConstant());
+  EXPECT_FALSE(m.IsKnownConstant());
+  EXPECT_FALSE(section.Here().IsKnownConstant());
+}
+
+TEST_F(Miscellanea, Endianness) {
+  section.set_endianness(kBigEndian);
+  EXPECT_EQ(kBigEndian, section.endianness());
+  section.set_endianness(kLittleEndian);
+  EXPECT_EQ(kLittleEndian, section.endianness());
+}
diff --git a/google-breakpad/src/common/testdata/func-line-pairing.h b/google-breakpad/src/common/testdata/func-line-pairing.h
new file mode 100644
index 0000000..05538f9
--- /dev/null
+++ b/google-breakpad/src/common/testdata/func-line-pairing.h
@@ -0,0 +1,676 @@
+// -*- mode: c++ -*-
+
+// Test data for pairing functions and lines.
+// 
+// For a pair of functions that are adjacent (10,20),(20,25) and a
+// pair that are not (10,15),(20,25), we include a test case for every
+// possible arrangement of two lines relative to those functions. We
+// include cases only for non-empty ranges, since empty functions and
+// lines are dropped before we do any pairing.
+//
+// Each test case is represented by a macro call of the form:
+// 
+//   PAIRING(func1_start, func1_end, func2_start, func2_end,
+//           line1_start, line1_end, line2_start, line2_end,
+//           func1_num_lines, func2_num_lines,
+//           func1_line1_start, func1_line1_end,
+//           func1_line2_start, func1_line2_end,
+//           func2_line1_start, func2_line1_end,
+//           func2_line2_start, func2_line2_end,
+//           uncovered_funcs, uncovered_lines)
+//
+// where:
+// - funcN_{start,end} is the range of the N'th function
+// - lineN_{start,end} is the range of the N'th function
+// - funcN_num_lines is the number of source lines that should be
+//   paired with the N'th function
+// - funcN_lineM_{start,end} is the range of the M'th line
+//   paired with the N'th function, where 0,0 indicates that
+//   there should be no such line paired
+// - uncovered_funcs is the number of functions with area that is
+//   uncovered by any line, and
+// - uncovered_lines is the reverse.
+
+//      func1   func2    line1   line2    num    pairing1        pairing2       uncovered
+PAIRING(10, 20, 20, 25,  6,  7,  7,  8,   0, 0,  0,  0,  0,  0,  0,  0,  0,  0,   2, 2) // #0
+PAIRING(10, 20, 20, 25,  6,  7,  7, 10,   0, 0,  0,  0,  0,  0,  0,  0,  0,  0,   2, 2) // #1
+PAIRING(10, 20, 20, 25,  6,  7,  7, 11,   1, 0, 10, 11,  0,  0,  0,  0,  0,  0,   2, 2) // #2
+PAIRING(10, 20, 20, 25,  6,  7,  7, 20,   1, 0, 10, 20,  0,  0,  0,  0,  0,  0,   1, 2) // #3
+PAIRING(10, 20, 20, 25,  6,  7,  7, 21,   1, 1, 10, 20,  0,  0, 20, 21,  0,  0,   1, 2) // #4
+PAIRING(10, 20, 20, 25,  6,  7,  7, 25,   1, 1, 10, 20,  0,  0, 20, 25,  0,  0,   0, 2) // #5
+PAIRING(10, 20, 20, 25,  6,  7,  7, 26,   1, 1, 10, 20,  0,  0, 20, 25,  0,  0,   0, 2) // #6
+PAIRING(10, 20, 20, 25,  6,  7,  8,  9,   0, 0,  0,  0,  0,  0,  0,  0,  0,  0,   2, 2) // #7
+PAIRING(10, 20, 20, 25,  6,  7,  8, 10,   0, 0,  0,  0,  0,  0,  0,  0,  0,  0,   2, 2) // #8
+PAIRING(10, 20, 20, 25,  6,  7,  8, 11,   1, 0, 10, 11,  0,  0,  0,  0,  0,  0,   2, 2) // #9
+PAIRING(10, 20, 20, 25,  6,  7,  8, 20,   1, 0, 10, 20,  0,  0,  0,  0,  0,  0,   1, 2) // #10
+PAIRING(10, 20, 20, 25,  6,  7,  8, 21,   1, 1, 10, 20,  0,  0, 20, 21,  0,  0,   1, 2) // #11
+PAIRING(10, 20, 20, 25,  6,  7,  8, 25,   1, 1, 10, 20,  0,  0, 20, 25,  0,  0,   0, 2) // #12
+PAIRING(10, 20, 20, 25,  6,  7,  8, 26,   1, 1, 10, 20,  0,  0, 20, 25,  0,  0,   0, 2) // #13
+PAIRING(10, 20, 20, 25,  6,  7, 10, 11,   1, 0, 10, 11,  0,  0,  0,  0,  0,  0,   2, 1) // #14
+PAIRING(10, 20, 20, 25,  6,  7, 10, 20,   1, 0, 10, 20,  0,  0,  0,  0,  0,  0,   1, 1) // #15
+PAIRING(10, 20, 20, 25,  6,  7, 10, 21,   1, 1, 10, 20,  0,  0, 20, 21,  0,  0,   1, 1) // #16
+PAIRING(10, 20, 20, 25,  6,  7, 10, 25,   1, 1, 10, 20,  0,  0, 20, 25,  0,  0,   0, 1) // #17
+PAIRING(10, 20, 20, 25,  6,  7, 10, 26,   1, 1, 10, 20,  0,  0, 20, 25,  0,  0,   0, 2) // #18
+PAIRING(10, 20, 20, 25,  6,  7, 11, 12,   1, 0, 11, 12,  0,  0,  0,  0,  0,  0,   2, 1) // #19
+PAIRING(10, 20, 20, 25,  6,  7, 11, 20,   1, 0, 11, 20,  0,  0,  0,  0,  0,  0,   2, 1) // #20
+PAIRING(10, 20, 20, 25,  6,  7, 11, 21,   1, 1, 11, 20,  0,  0, 20, 21,  0,  0,   2, 1) // #21
+PAIRING(10, 20, 20, 25,  6,  7, 11, 25,   1, 1, 11, 20,  0,  0, 20, 25,  0,  0,   1, 1) // #22
+PAIRING(10, 20, 20, 25,  6,  7, 11, 26,   1, 1, 11, 20,  0,  0, 20, 25,  0,  0,   1, 2) // #23
+PAIRING(10, 20, 20, 25,  6,  7, 20, 21,   0, 1,  0,  0,  0,  0, 20, 21,  0,  0,   2, 1) // #24
+PAIRING(10, 20, 20, 25,  6,  7, 20, 25,   0, 1,  0,  0,  0,  0, 20, 25,  0,  0,   1, 1) // #25
+PAIRING(10, 20, 20, 25,  6,  7, 20, 26,   0, 1,  0,  0,  0,  0, 20, 25,  0,  0,   1, 2) // #26
+PAIRING(10, 20, 20, 25,  6,  7, 21, 22,   0, 1,  0,  0,  0,  0, 21, 22,  0,  0,   2, 1) // #27
+PAIRING(10, 20, 20, 25,  6,  7, 21, 25,   0, 1,  0,  0,  0,  0, 21, 25,  0,  0,   2, 1) // #28
+PAIRING(10, 20, 20, 25,  6,  7, 21, 26,   0, 1,  0,  0,  0,  0, 21, 25,  0,  0,   2, 2) // #29
+PAIRING(10, 20, 20, 25,  6,  7, 25, 26,   0, 0,  0,  0,  0,  0,  0,  0,  0,  0,   2, 2) // #30
+PAIRING(10, 20, 20, 25,  6,  7, 26, 27,   0, 0,  0,  0,  0,  0,  0,  0,  0,  0,   2, 2) // #31
+PAIRING(10, 20, 20, 25,  6, 10, 10, 11,   1, 0, 10, 11,  0,  0,  0,  0,  0,  0,   2, 1) // #32
+PAIRING(10, 20, 20, 25,  6, 10, 10, 20,   1, 0, 10, 20,  0,  0,  0,  0,  0,  0,   1, 1) // #33
+PAIRING(10, 20, 20, 25,  6, 10, 10, 21,   1, 1, 10, 20,  0,  0, 20, 21,  0,  0,   1, 1) // #34
+PAIRING(10, 20, 20, 25,  6, 10, 10, 25,   1, 1, 10, 20,  0,  0, 20, 25,  0,  0,   0, 1) // #35
+PAIRING(10, 20, 20, 25,  6, 10, 10, 26,   1, 1, 10, 20,  0,  0, 20, 25,  0,  0,   0, 2) // #36
+PAIRING(10, 20, 20, 25,  6, 10, 11, 12,   1, 0, 11, 12,  0,  0,  0,  0,  0,  0,   2, 1) // #37
+PAIRING(10, 20, 20, 25,  6, 10, 11, 20,   1, 0, 11, 20,  0,  0,  0,  0,  0,  0,   2, 1) // #38
+PAIRING(10, 20, 20, 25,  6, 10, 11, 21,   1, 1, 11, 20,  0,  0, 20, 21,  0,  0,   2, 1) // #39
+PAIRING(10, 20, 20, 25,  6, 10, 11, 25,   1, 1, 11, 20,  0,  0, 20, 25,  0,  0,   1, 1) // #40
+PAIRING(10, 20, 20, 25,  6, 10, 11, 26,   1, 1, 11, 20,  0,  0, 20, 25,  0,  0,   1, 2) // #41
+PAIRING(10, 20, 20, 25,  6, 10, 20, 21,   0, 1,  0,  0,  0,  0, 20, 21,  0,  0,   2, 1) // #42
+PAIRING(10, 20, 20, 25,  6, 10, 20, 25,   0, 1,  0,  0,  0,  0, 20, 25,  0,  0,   1, 1) // #43
+PAIRING(10, 20, 20, 25,  6, 10, 20, 26,   0, 1,  0,  0,  0,  0, 20, 25,  0,  0,   1, 2) // #44
+PAIRING(10, 20, 20, 25,  6, 10, 21, 22,   0, 1,  0,  0,  0,  0, 21, 22,  0,  0,   2, 1) // #45
+PAIRING(10, 20, 20, 25,  6, 10, 21, 25,   0, 1,  0,  0,  0,  0, 21, 25,  0,  0,   2, 1) // #46
+PAIRING(10, 20, 20, 25,  6, 10, 21, 26,   0, 1,  0,  0,  0,  0, 21, 25,  0,  0,   2, 2) // #47
+PAIRING(10, 20, 20, 25,  6, 10, 25, 26,   0, 0,  0,  0,  0,  0,  0,  0,  0,  0,   2, 2) // #48
+PAIRING(10, 20, 20, 25,  6, 10, 26, 27,   0, 0,  0,  0,  0,  0,  0,  0,  0,  0,   2, 2) // #49
+PAIRING(10, 20, 20, 25,  6, 11, 11, 12,   2, 0, 10, 11, 11, 12,  0,  0,  0,  0,   2, 1) // #50
+PAIRING(10, 20, 20, 25,  6, 11, 11, 20,   2, 0, 10, 11, 11, 20,  0,  0,  0,  0,   1, 1) // #51
+PAIRING(10, 20, 20, 25,  6, 11, 11, 21,   2, 1, 10, 11, 11, 20, 20, 21,  0,  0,   1, 1) // #52
+PAIRING(10, 20, 20, 25,  6, 11, 11, 25,   2, 1, 10, 11, 11, 20, 20, 25,  0,  0,   0, 1) // #53
+PAIRING(10, 20, 20, 25,  6, 11, 11, 26,   2, 1, 10, 11, 11, 20, 20, 25,  0,  0,   0, 2) // #54
+PAIRING(10, 20, 20, 25,  6, 11, 12, 13,   2, 0, 10, 11, 12, 13,  0,  0,  0,  0,   2, 1) // #55
+PAIRING(10, 20, 20, 25,  6, 11, 12, 20,   2, 0, 10, 11, 12, 20,  0,  0,  0,  0,   2, 1) // #56
+PAIRING(10, 20, 20, 25,  6, 11, 12, 21,   2, 1, 10, 11, 12, 20, 20, 21,  0,  0,   2, 1) // #57
+PAIRING(10, 20, 20, 25,  6, 11, 12, 25,   2, 1, 10, 11, 12, 20, 20, 25,  0,  0,   1, 1) // #58
+PAIRING(10, 20, 20, 25,  6, 11, 12, 26,   2, 1, 10, 11, 12, 20, 20, 25,  0,  0,   1, 2) // #59
+PAIRING(10, 20, 20, 25,  6, 11, 20, 21,   1, 1, 10, 11,  0,  0, 20, 21,  0,  0,   2, 1) // #60
+PAIRING(10, 20, 20, 25,  6, 11, 20, 25,   1, 1, 10, 11,  0,  0, 20, 25,  0,  0,   1, 1) // #61
+PAIRING(10, 20, 20, 25,  6, 11, 20, 26,   1, 1, 10, 11,  0,  0, 20, 25,  0,  0,   1, 2) // #62
+PAIRING(10, 20, 20, 25,  6, 11, 21, 22,   1, 1, 10, 11,  0,  0, 21, 22,  0,  0,   2, 1) // #63
+PAIRING(10, 20, 20, 25,  6, 11, 21, 25,   1, 1, 10, 11,  0,  0, 21, 25,  0,  0,   2, 1) // #64
+PAIRING(10, 20, 20, 25,  6, 11, 21, 26,   1, 1, 10, 11,  0,  0, 21, 25,  0,  0,   2, 2) // #65
+PAIRING(10, 20, 20, 25,  6, 11, 25, 26,   1, 0, 10, 11,  0,  0,  0,  0,  0,  0,   2, 2) // #66
+PAIRING(10, 20, 20, 25,  6, 11, 26, 27,   1, 0, 10, 11,  0,  0,  0,  0,  0,  0,   2, 2) // #67
+PAIRING(10, 20, 20, 25,  6, 20, 20, 21,   1, 1, 10, 20,  0,  0, 20, 21,  0,  0,   1, 1) // #68
+PAIRING(10, 20, 20, 25,  6, 20, 20, 25,   1, 1, 10, 20,  0,  0, 20, 25,  0,  0,   0, 1) // #69
+PAIRING(10, 20, 20, 25,  6, 20, 20, 26,   1, 1, 10, 20,  0,  0, 20, 25,  0,  0,   0, 2) // #70
+PAIRING(10, 20, 20, 25,  6, 20, 21, 22,   1, 1, 10, 20,  0,  0, 21, 22,  0,  0,   1, 1) // #71
+PAIRING(10, 20, 20, 25,  6, 20, 21, 25,   1, 1, 10, 20,  0,  0, 21, 25,  0,  0,   1, 1) // #72
+PAIRING(10, 20, 20, 25,  6, 20, 21, 26,   1, 1, 10, 20,  0,  0, 21, 25,  0,  0,   1, 2) // #73
+PAIRING(10, 20, 20, 25,  6, 20, 25, 26,   1, 0, 10, 20,  0,  0,  0,  0,  0,  0,   1, 2) // #74
+PAIRING(10, 20, 20, 25,  6, 20, 26, 27,   1, 0, 10, 20,  0,  0,  0,  0,  0,  0,   1, 2) // #75
+PAIRING(10, 20, 20, 25,  6, 21, 21, 22,   1, 2, 10, 20,  0,  0, 20, 21, 21, 22,   1, 1) // #76
+PAIRING(10, 20, 20, 25,  6, 21, 21, 25,   1, 2, 10, 20,  0,  0, 20, 21, 21, 25,   0, 1) // #77
+PAIRING(10, 20, 20, 25,  6, 21, 21, 26,   1, 2, 10, 20,  0,  0, 20, 21, 21, 25,   0, 2) // #78
+PAIRING(10, 20, 20, 25,  6, 21, 22, 23,   1, 2, 10, 20,  0,  0, 20, 21, 22, 23,   1, 1) // #79
+PAIRING(10, 20, 20, 25,  6, 21, 22, 25,   1, 2, 10, 20,  0,  0, 20, 21, 22, 25,   1, 1) // #80
+PAIRING(10, 20, 20, 25,  6, 21, 22, 26,   1, 2, 10, 20,  0,  0, 20, 21, 22, 25,   1, 2) // #81
+PAIRING(10, 20, 20, 25,  6, 21, 25, 26,   1, 1, 10, 20,  0,  0, 20, 21,  0,  0,   1, 2) // #82
+PAIRING(10, 20, 20, 25,  6, 21, 26, 27,   1, 1, 10, 20,  0,  0, 20, 21,  0,  0,   1, 2) // #83
+PAIRING(10, 20, 20, 25,  6, 25, 25, 26,   1, 1, 10, 20,  0,  0, 20, 25,  0,  0,   0, 2) // #84
+PAIRING(10, 20, 20, 25,  6, 25, 26, 27,   1, 1, 10, 20,  0,  0, 20, 25,  0,  0,   0, 2) // #85
+PAIRING(10, 20, 20, 25,  6, 26, 26, 27,   1, 1, 10, 20,  0,  0, 20, 25,  0,  0,   0, 2) // #86
+PAIRING(10, 20, 20, 25,  6, 26, 27, 28,   1, 1, 10, 20,  0,  0, 20, 25,  0,  0,   0, 2) // #87
+PAIRING(10, 20, 20, 25, 10, 11, 11, 12,   2, 0, 10, 11, 11, 12,  0,  0,  0,  0,   2, 0) // #88
+PAIRING(10, 20, 20, 25, 10, 11, 11, 20,   2, 0, 10, 11, 11, 20,  0,  0,  0,  0,   1, 0) // #89
+PAIRING(10, 20, 20, 25, 10, 11, 11, 21,   2, 1, 10, 11, 11, 20, 20, 21,  0,  0,   1, 0) // #90
+PAIRING(10, 20, 20, 25, 10, 11, 11, 25,   2, 1, 10, 11, 11, 20, 20, 25,  0,  0,   0, 0) // #91
+PAIRING(10, 20, 20, 25, 10, 11, 11, 26,   2, 1, 10, 11, 11, 20, 20, 25,  0,  0,   0, 1) // #92
+PAIRING(10, 20, 20, 25, 10, 11, 12, 13,   2, 0, 10, 11, 12, 13,  0,  0,  0,  0,   2, 0) // #93
+PAIRING(10, 20, 20, 25, 10, 11, 12, 20,   2, 0, 10, 11, 12, 20,  0,  0,  0,  0,   2, 0) // #94
+PAIRING(10, 20, 20, 25, 10, 11, 12, 21,   2, 1, 10, 11, 12, 20, 20, 21,  0,  0,   2, 0) // #95
+PAIRING(10, 20, 20, 25, 10, 11, 12, 25,   2, 1, 10, 11, 12, 20, 20, 25,  0,  0,   1, 0) // #96
+PAIRING(10, 20, 20, 25, 10, 11, 12, 26,   2, 1, 10, 11, 12, 20, 20, 25,  0,  0,   1, 1) // #97
+PAIRING(10, 20, 20, 25, 10, 11, 20, 21,   1, 1, 10, 11,  0,  0, 20, 21,  0,  0,   2, 0) // #98
+PAIRING(10, 20, 20, 25, 10, 11, 20, 25,   1, 1, 10, 11,  0,  0, 20, 25,  0,  0,   1, 0) // #99
+PAIRING(10, 20, 20, 25, 10, 11, 20, 26,   1, 1, 10, 11,  0,  0, 20, 25,  0,  0,   1, 1) // #100
+PAIRING(10, 20, 20, 25, 10, 11, 21, 22,   1, 1, 10, 11,  0,  0, 21, 22,  0,  0,   2, 0) // #101
+PAIRING(10, 20, 20, 25, 10, 11, 21, 25,   1, 1, 10, 11,  0,  0, 21, 25,  0,  0,   2, 0) // #102
+PAIRING(10, 20, 20, 25, 10, 11, 21, 26,   1, 1, 10, 11,  0,  0, 21, 25,  0,  0,   2, 1) // #103
+PAIRING(10, 20, 20, 25, 10, 11, 25, 26,   1, 0, 10, 11,  0,  0,  0,  0,  0,  0,   2, 1) // #104
+PAIRING(10, 20, 20, 25, 10, 11, 26, 27,   1, 0, 10, 11,  0,  0,  0,  0,  0,  0,   2, 1) // #105
+PAIRING(10, 20, 20, 25, 10, 20, 20, 21,   1, 1, 10, 20,  0,  0, 20, 21,  0,  0,   1, 0) // #106
+PAIRING(10, 20, 20, 25, 10, 20, 20, 25,   1, 1, 10, 20,  0,  0, 20, 25,  0,  0,   0, 0) // #107
+PAIRING(10, 20, 20, 25, 10, 20, 20, 26,   1, 1, 10, 20,  0,  0, 20, 25,  0,  0,   0, 1) // #108
+PAIRING(10, 20, 20, 25, 10, 20, 21, 22,   1, 1, 10, 20,  0,  0, 21, 22,  0,  0,   1, 0) // #109
+PAIRING(10, 20, 20, 25, 10, 20, 21, 25,   1, 1, 10, 20,  0,  0, 21, 25,  0,  0,   1, 0) // #110
+PAIRING(10, 20, 20, 25, 10, 20, 21, 26,   1, 1, 10, 20,  0,  0, 21, 25,  0,  0,   1, 1) // #111
+PAIRING(10, 20, 20, 25, 10, 20, 25, 26,   1, 0, 10, 20,  0,  0,  0,  0,  0,  0,   1, 1) // #112
+PAIRING(10, 20, 20, 25, 10, 20, 26, 27,   1, 0, 10, 20,  0,  0,  0,  0,  0,  0,   1, 1) // #113
+PAIRING(10, 20, 20, 25, 10, 21, 21, 22,   1, 2, 10, 20,  0,  0, 20, 21, 21, 22,   1, 0) // #114
+PAIRING(10, 20, 20, 25, 10, 21, 21, 25,   1, 2, 10, 20,  0,  0, 20, 21, 21, 25,   0, 0) // #115
+PAIRING(10, 20, 20, 25, 10, 21, 21, 26,   1, 2, 10, 20,  0,  0, 20, 21, 21, 25,   0, 1) // #116
+PAIRING(10, 20, 20, 25, 10, 21, 22, 23,   1, 2, 10, 20,  0,  0, 20, 21, 22, 23,   1, 0) // #117
+PAIRING(10, 20, 20, 25, 10, 21, 22, 25,   1, 2, 10, 20,  0,  0, 20, 21, 22, 25,   1, 0) // #118
+PAIRING(10, 20, 20, 25, 10, 21, 22, 26,   1, 2, 10, 20,  0,  0, 20, 21, 22, 25,   1, 1) // #119
+PAIRING(10, 20, 20, 25, 10, 21, 25, 26,   1, 1, 10, 20,  0,  0, 20, 21,  0,  0,   1, 1) // #120
+PAIRING(10, 20, 20, 25, 10, 21, 26, 27,   1, 1, 10, 20,  0,  0, 20, 21,  0,  0,   1, 1) // #121
+PAIRING(10, 20, 20, 25, 10, 25, 25, 26,   1, 1, 10, 20,  0,  0, 20, 25,  0,  0,   0, 1) // #122
+PAIRING(10, 20, 20, 25, 10, 25, 26, 27,   1, 1, 10, 20,  0,  0, 20, 25,  0,  0,   0, 1) // #123
+PAIRING(10, 20, 20, 25, 10, 26, 26, 27,   1, 1, 10, 20,  0,  0, 20, 25,  0,  0,   0, 2) // #124
+PAIRING(10, 20, 20, 25, 10, 26, 27, 28,   1, 1, 10, 20,  0,  0, 20, 25,  0,  0,   0, 2) // #125
+PAIRING(10, 20, 20, 25, 11, 12, 12, 13,   2, 0, 11, 12, 12, 13,  0,  0,  0,  0,   2, 0) // #126
+PAIRING(10, 20, 20, 25, 11, 12, 12, 20,   2, 0, 11, 12, 12, 20,  0,  0,  0,  0,   2, 0) // #127
+PAIRING(10, 20, 20, 25, 11, 12, 12, 21,   2, 1, 11, 12, 12, 20, 20, 21,  0,  0,   2, 0) // #128
+PAIRING(10, 20, 20, 25, 11, 12, 12, 25,   2, 1, 11, 12, 12, 20, 20, 25,  0,  0,   1, 0) // #129
+PAIRING(10, 20, 20, 25, 11, 12, 12, 26,   2, 1, 11, 12, 12, 20, 20, 25,  0,  0,   1, 1) // #130
+PAIRING(10, 20, 20, 25, 11, 12, 13, 14,   2, 0, 11, 12, 13, 14,  0,  0,  0,  0,   2, 0) // #131
+PAIRING(10, 20, 20, 25, 11, 12, 13, 20,   2, 0, 11, 12, 13, 20,  0,  0,  0,  0,   2, 0) // #132
+PAIRING(10, 20, 20, 25, 11, 12, 13, 21,   2, 1, 11, 12, 13, 20, 20, 21,  0,  0,   2, 0) // #133
+PAIRING(10, 20, 20, 25, 11, 12, 13, 25,   2, 1, 11, 12, 13, 20, 20, 25,  0,  0,   1, 0) // #134
+PAIRING(10, 20, 20, 25, 11, 12, 13, 26,   2, 1, 11, 12, 13, 20, 20, 25,  0,  0,   1, 1) // #135
+PAIRING(10, 20, 20, 25, 11, 12, 20, 21,   1, 1, 11, 12,  0,  0, 20, 21,  0,  0,   2, 0) // #136
+PAIRING(10, 20, 20, 25, 11, 12, 20, 25,   1, 1, 11, 12,  0,  0, 20, 25,  0,  0,   1, 0) // #137
+PAIRING(10, 20, 20, 25, 11, 12, 20, 26,   1, 1, 11, 12,  0,  0, 20, 25,  0,  0,   1, 1) // #138
+PAIRING(10, 20, 20, 25, 11, 12, 21, 22,   1, 1, 11, 12,  0,  0, 21, 22,  0,  0,   2, 0) // #139
+PAIRING(10, 20, 20, 25, 11, 12, 21, 25,   1, 1, 11, 12,  0,  0, 21, 25,  0,  0,   2, 0) // #140
+PAIRING(10, 20, 20, 25, 11, 12, 21, 26,   1, 1, 11, 12,  0,  0, 21, 25,  0,  0,   2, 1) // #141
+PAIRING(10, 20, 20, 25, 11, 12, 25, 26,   1, 0, 11, 12,  0,  0,  0,  0,  0,  0,   2, 1) // #142
+PAIRING(10, 20, 20, 25, 11, 12, 26, 27,   1, 0, 11, 12,  0,  0,  0,  0,  0,  0,   2, 1) // #143
+PAIRING(10, 20, 20, 25, 11, 20, 20, 21,   1, 1, 11, 20,  0,  0, 20, 21,  0,  0,   2, 0) // #144
+PAIRING(10, 20, 20, 25, 11, 20, 20, 25,   1, 1, 11, 20,  0,  0, 20, 25,  0,  0,   1, 0) // #145
+PAIRING(10, 20, 20, 25, 11, 20, 20, 26,   1, 1, 11, 20,  0,  0, 20, 25,  0,  0,   1, 1) // #146
+PAIRING(10, 20, 20, 25, 11, 20, 21, 22,   1, 1, 11, 20,  0,  0, 21, 22,  0,  0,   2, 0) // #147
+PAIRING(10, 20, 20, 25, 11, 20, 21, 25,   1, 1, 11, 20,  0,  0, 21, 25,  0,  0,   2, 0) // #148
+PAIRING(10, 20, 20, 25, 11, 20, 21, 26,   1, 1, 11, 20,  0,  0, 21, 25,  0,  0,   2, 1) // #149
+PAIRING(10, 20, 20, 25, 11, 20, 25, 26,   1, 0, 11, 20,  0,  0,  0,  0,  0,  0,   2, 1) // #150
+PAIRING(10, 20, 20, 25, 11, 20, 26, 27,   1, 0, 11, 20,  0,  0,  0,  0,  0,  0,   2, 1) // #151
+PAIRING(10, 20, 20, 25, 11, 21, 21, 22,   1, 2, 11, 20,  0,  0, 20, 21, 21, 22,   2, 0) // #152
+PAIRING(10, 20, 20, 25, 11, 21, 21, 25,   1, 2, 11, 20,  0,  0, 20, 21, 21, 25,   1, 0) // #153
+PAIRING(10, 20, 20, 25, 11, 21, 21, 26,   1, 2, 11, 20,  0,  0, 20, 21, 21, 25,   1, 1) // #154
+PAIRING(10, 20, 20, 25, 11, 21, 22, 23,   1, 2, 11, 20,  0,  0, 20, 21, 22, 23,   2, 0) // #155
+PAIRING(10, 20, 20, 25, 11, 21, 22, 25,   1, 2, 11, 20,  0,  0, 20, 21, 22, 25,   2, 0) // #156
+PAIRING(10, 20, 20, 25, 11, 21, 22, 26,   1, 2, 11, 20,  0,  0, 20, 21, 22, 25,   2, 1) // #157
+PAIRING(10, 20, 20, 25, 11, 21, 25, 26,   1, 1, 11, 20,  0,  0, 20, 21,  0,  0,   2, 1) // #158
+PAIRING(10, 20, 20, 25, 11, 21, 26, 27,   1, 1, 11, 20,  0,  0, 20, 21,  0,  0,   2, 1) // #159
+PAIRING(10, 20, 20, 25, 11, 25, 25, 26,   1, 1, 11, 20,  0,  0, 20, 25,  0,  0,   1, 1) // #160
+PAIRING(10, 20, 20, 25, 11, 25, 26, 27,   1, 1, 11, 20,  0,  0, 20, 25,  0,  0,   1, 1) // #161
+PAIRING(10, 20, 20, 25, 11, 26, 26, 27,   1, 1, 11, 20,  0,  0, 20, 25,  0,  0,   1, 2) // #162
+PAIRING(10, 20, 20, 25, 11, 26, 27, 28,   1, 1, 11, 20,  0,  0, 20, 25,  0,  0,   1, 2) // #163
+PAIRING(10, 20, 20, 25, 20, 21, 21, 22,   0, 2,  0,  0,  0,  0, 20, 21, 21, 22,   2, 0) // #164
+PAIRING(10, 20, 20, 25, 20, 21, 21, 25,   0, 2,  0,  0,  0,  0, 20, 21, 21, 25,   1, 0) // #165
+PAIRING(10, 20, 20, 25, 20, 21, 21, 26,   0, 2,  0,  0,  0,  0, 20, 21, 21, 25,   1, 1) // #166
+PAIRING(10, 20, 20, 25, 20, 21, 22, 23,   0, 2,  0,  0,  0,  0, 20, 21, 22, 23,   2, 0) // #167
+PAIRING(10, 20, 20, 25, 20, 21, 22, 25,   0, 2,  0,  0,  0,  0, 20, 21, 22, 25,   2, 0) // #168
+PAIRING(10, 20, 20, 25, 20, 21, 22, 26,   0, 2,  0,  0,  0,  0, 20, 21, 22, 25,   2, 1) // #169
+PAIRING(10, 20, 20, 25, 20, 21, 25, 26,   0, 1,  0,  0,  0,  0, 20, 21,  0,  0,   2, 1) // #170
+PAIRING(10, 20, 20, 25, 20, 21, 26, 27,   0, 1,  0,  0,  0,  0, 20, 21,  0,  0,   2, 1) // #171
+PAIRING(10, 20, 20, 25, 20, 25, 25, 26,   0, 1,  0,  0,  0,  0, 20, 25,  0,  0,   1, 1) // #172
+PAIRING(10, 20, 20, 25, 20, 25, 26, 27,   0, 1,  0,  0,  0,  0, 20, 25,  0,  0,   1, 1) // #173
+PAIRING(10, 20, 20, 25, 20, 26, 26, 27,   0, 1,  0,  0,  0,  0, 20, 25,  0,  0,   1, 2) // #174
+PAIRING(10, 20, 20, 25, 20, 26, 27, 28,   0, 1,  0,  0,  0,  0, 20, 25,  0,  0,   1, 2) // #175
+PAIRING(10, 20, 20, 25, 21, 22, 22, 23,   0, 2,  0,  0,  0,  0, 21, 22, 22, 23,   2, 0) // #176
+PAIRING(10, 20, 20, 25, 21, 22, 22, 25,   0, 2,  0,  0,  0,  0, 21, 22, 22, 25,   2, 0) // #177
+PAIRING(10, 20, 20, 25, 21, 22, 22, 26,   0, 2,  0,  0,  0,  0, 21, 22, 22, 25,   2, 1) // #178
+PAIRING(10, 20, 20, 25, 21, 22, 23, 24,   0, 2,  0,  0,  0,  0, 21, 22, 23, 24,   2, 0) // #179
+PAIRING(10, 20, 20, 25, 21, 22, 23, 25,   0, 2,  0,  0,  0,  0, 21, 22, 23, 25,   2, 0) // #180
+PAIRING(10, 20, 20, 25, 21, 22, 23, 26,   0, 2,  0,  0,  0,  0, 21, 22, 23, 25,   2, 1) // #181
+PAIRING(10, 20, 20, 25, 21, 22, 25, 26,   0, 1,  0,  0,  0,  0, 21, 22,  0,  0,   2, 1) // #182
+PAIRING(10, 20, 20, 25, 21, 22, 26, 27,   0, 1,  0,  0,  0,  0, 21, 22,  0,  0,   2, 1) // #183
+PAIRING(10, 20, 20, 25, 21, 25, 25, 26,   0, 1,  0,  0,  0,  0, 21, 25,  0,  0,   2, 1) // #184
+PAIRING(10, 20, 20, 25, 21, 25, 26, 27,   0, 1,  0,  0,  0,  0, 21, 25,  0,  0,   2, 1) // #185
+PAIRING(10, 20, 20, 25, 21, 26, 26, 27,   0, 1,  0,  0,  0,  0, 21, 25,  0,  0,   2, 2) // #186
+PAIRING(10, 20, 20, 25, 21, 26, 27, 28,   0, 1,  0,  0,  0,  0, 21, 25,  0,  0,   2, 2) // #187
+PAIRING(10, 20, 20, 25, 25, 26, 26, 27,   0, 0,  0,  0,  0,  0,  0,  0,  0,  0,   2, 2) // #188
+PAIRING(10, 20, 20, 25, 25, 26, 27, 28,   0, 0,  0,  0,  0,  0,  0,  0,  0,  0,   2, 2) // #189
+PAIRING(10, 20, 20, 25, 26, 27, 27, 28,   0, 0,  0,  0,  0,  0,  0,  0,  0,  0,   2, 2) // #190
+PAIRING(10, 20, 20, 25, 26, 27, 28, 29,   0, 0,  0,  0,  0,  0,  0,  0,  0,  0,   2, 2) // #191
+PAIRING(10, 15, 20, 25,  6,  7,  7,  8,   0, 0,  0,  0,  0,  0,  0,  0,  0,  0,   2, 2) // #192
+PAIRING(10, 15, 20, 25,  6,  7,  7, 10,   0, 0,  0,  0,  0,  0,  0,  0,  0,  0,   2, 2) // #193
+PAIRING(10, 15, 20, 25,  6,  7,  7, 11,   1, 0, 10, 11,  0,  0,  0,  0,  0,  0,   2, 2) // #194
+PAIRING(10, 15, 20, 25,  6,  7,  7, 15,   1, 0, 10, 15,  0,  0,  0,  0,  0,  0,   1, 2) // #195
+PAIRING(10, 15, 20, 25,  6,  7,  7, 16,   1, 0, 10, 15,  0,  0,  0,  0,  0,  0,   1, 2) // #196
+PAIRING(10, 15, 20, 25,  6,  7,  7, 20,   1, 0, 10, 15,  0,  0,  0,  0,  0,  0,   1, 2) // #197
+PAIRING(10, 15, 20, 25,  6,  7,  7, 21,   1, 1, 10, 15,  0,  0, 20, 21,  0,  0,   1, 2) // #198
+PAIRING(10, 15, 20, 25,  6,  7,  7, 25,   1, 1, 10, 15,  0,  0, 20, 25,  0,  0,   0, 2) // #199
+PAIRING(10, 15, 20, 25,  6,  7,  7, 26,   1, 1, 10, 15,  0,  0, 20, 25,  0,  0,   0, 2) // #200
+PAIRING(10, 15, 20, 25,  6,  7,  8,  9,   0, 0,  0,  0,  0,  0,  0,  0,  0,  0,   2, 2) // #201
+PAIRING(10, 15, 20, 25,  6,  7,  8, 10,   0, 0,  0,  0,  0,  0,  0,  0,  0,  0,   2, 2) // #202
+PAIRING(10, 15, 20, 25,  6,  7,  8, 11,   1, 0, 10, 11,  0,  0,  0,  0,  0,  0,   2, 2) // #203
+PAIRING(10, 15, 20, 25,  6,  7,  8, 15,   1, 0, 10, 15,  0,  0,  0,  0,  0,  0,   1, 2) // #204
+PAIRING(10, 15, 20, 25,  6,  7,  8, 16,   1, 0, 10, 15,  0,  0,  0,  0,  0,  0,   1, 2) // #205
+PAIRING(10, 15, 20, 25,  6,  7,  8, 20,   1, 0, 10, 15,  0,  0,  0,  0,  0,  0,   1, 2) // #206
+PAIRING(10, 15, 20, 25,  6,  7,  8, 21,   1, 1, 10, 15,  0,  0, 20, 21,  0,  0,   1, 2) // #207
+PAIRING(10, 15, 20, 25,  6,  7,  8, 25,   1, 1, 10, 15,  0,  0, 20, 25,  0,  0,   0, 2) // #208
+PAIRING(10, 15, 20, 25,  6,  7,  8, 26,   1, 1, 10, 15,  0,  0, 20, 25,  0,  0,   0, 2) // #209
+PAIRING(10, 15, 20, 25,  6,  7, 10, 11,   1, 0, 10, 11,  0,  0,  0,  0,  0,  0,   2, 1) // #210
+PAIRING(10, 15, 20, 25,  6,  7, 10, 15,   1, 0, 10, 15,  0,  0,  0,  0,  0,  0,   1, 1) // #211
+PAIRING(10, 15, 20, 25,  6,  7, 10, 16,   1, 0, 10, 15,  0,  0,  0,  0,  0,  0,   1, 2) // #212
+PAIRING(10, 15, 20, 25,  6,  7, 10, 20,   1, 0, 10, 15,  0,  0,  0,  0,  0,  0,   1, 1) // #213
+PAIRING(10, 15, 20, 25,  6,  7, 10, 21,   1, 1, 10, 15,  0,  0, 20, 21,  0,  0,   1, 2) // #214
+PAIRING(10, 15, 20, 25,  6,  7, 10, 25,   1, 1, 10, 15,  0,  0, 20, 25,  0,  0,   0, 2) // #215
+PAIRING(10, 15, 20, 25,  6,  7, 10, 26,   1, 1, 10, 15,  0,  0, 20, 25,  0,  0,   0, 2) // #216
+PAIRING(10, 15, 20, 25,  6,  7, 11, 12,   1, 0, 11, 12,  0,  0,  0,  0,  0,  0,   2, 1) // #217
+PAIRING(10, 15, 20, 25,  6,  7, 11, 15,   1, 0, 11, 15,  0,  0,  0,  0,  0,  0,   2, 1) // #218
+PAIRING(10, 15, 20, 25,  6,  7, 11, 16,   1, 0, 11, 15,  0,  0,  0,  0,  0,  0,   2, 2) // #219
+PAIRING(10, 15, 20, 25,  6,  7, 11, 20,   1, 0, 11, 15,  0,  0,  0,  0,  0,  0,   2, 1) // #220
+PAIRING(10, 15, 20, 25,  6,  7, 11, 21,   1, 1, 11, 15,  0,  0, 20, 21,  0,  0,   2, 2) // #221
+PAIRING(10, 15, 20, 25,  6,  7, 11, 25,   1, 1, 11, 15,  0,  0, 20, 25,  0,  0,   1, 2) // #222
+PAIRING(10, 15, 20, 25,  6,  7, 11, 26,   1, 1, 11, 15,  0,  0, 20, 25,  0,  0,   1, 2) // #223
+PAIRING(10, 15, 20, 25,  6,  7, 15, 16,   0, 0,  0,  0,  0,  0,  0,  0,  0,  0,   2, 2) // #224
+PAIRING(10, 15, 20, 25,  6,  7, 15, 20,   0, 0,  0,  0,  0,  0,  0,  0,  0,  0,   2, 2) // #225
+PAIRING(10, 15, 20, 25,  6,  7, 15, 21,   0, 1,  0,  0,  0,  0, 20, 21,  0,  0,   2, 2) // #226
+PAIRING(10, 15, 20, 25,  6,  7, 15, 25,   0, 1,  0,  0,  0,  0, 20, 25,  0,  0,   1, 2) // #227
+PAIRING(10, 15, 20, 25,  6,  7, 15, 26,   0, 1,  0,  0,  0,  0, 20, 25,  0,  0,   1, 2) // #228
+PAIRING(10, 15, 20, 25,  6,  7, 16, 17,   0, 0,  0,  0,  0,  0,  0,  0,  0,  0,   2, 2) // #229
+PAIRING(10, 15, 20, 25,  6,  7, 16, 20,   0, 0,  0,  0,  0,  0,  0,  0,  0,  0,   2, 2) // #230
+PAIRING(10, 15, 20, 25,  6,  7, 16, 21,   0, 1,  0,  0,  0,  0, 20, 21,  0,  0,   2, 2) // #231
+PAIRING(10, 15, 20, 25,  6,  7, 16, 25,   0, 1,  0,  0,  0,  0, 20, 25,  0,  0,   1, 2) // #232
+PAIRING(10, 15, 20, 25,  6,  7, 16, 26,   0, 1,  0,  0,  0,  0, 20, 25,  0,  0,   1, 2) // #233
+PAIRING(10, 15, 20, 25,  6,  7, 20, 21,   0, 1,  0,  0,  0,  0, 20, 21,  0,  0,   2, 1) // #234
+PAIRING(10, 15, 20, 25,  6,  7, 20, 25,   0, 1,  0,  0,  0,  0, 20, 25,  0,  0,   1, 1) // #235
+PAIRING(10, 15, 20, 25,  6,  7, 20, 26,   0, 1,  0,  0,  0,  0, 20, 25,  0,  0,   1, 2) // #236
+PAIRING(10, 15, 20, 25,  6,  7, 21, 22,   0, 1,  0,  0,  0,  0, 21, 22,  0,  0,   2, 1) // #237
+PAIRING(10, 15, 20, 25,  6,  7, 21, 25,   0, 1,  0,  0,  0,  0, 21, 25,  0,  0,   2, 1) // #238
+PAIRING(10, 15, 20, 25,  6,  7, 21, 26,   0, 1,  0,  0,  0,  0, 21, 25,  0,  0,   2, 2) // #239
+PAIRING(10, 15, 20, 25,  6,  7, 25, 26,   0, 0,  0,  0,  0,  0,  0,  0,  0,  0,   2, 2) // #240
+PAIRING(10, 15, 20, 25,  6,  7, 26, 27,   0, 0,  0,  0,  0,  0,  0,  0,  0,  0,   2, 2) // #241
+PAIRING(10, 15, 20, 25,  6, 10, 10, 11,   1, 0, 10, 11,  0,  0,  0,  0,  0,  0,   2, 1) // #242
+PAIRING(10, 15, 20, 25,  6, 10, 10, 15,   1, 0, 10, 15,  0,  0,  0,  0,  0,  0,   1, 1) // #243
+PAIRING(10, 15, 20, 25,  6, 10, 10, 16,   1, 0, 10, 15,  0,  0,  0,  0,  0,  0,   1, 2) // #244
+PAIRING(10, 15, 20, 25,  6, 10, 10, 20,   1, 0, 10, 15,  0,  0,  0,  0,  0,  0,   1, 1) // #245
+PAIRING(10, 15, 20, 25,  6, 10, 10, 21,   1, 1, 10, 15,  0,  0, 20, 21,  0,  0,   1, 2) // #246
+PAIRING(10, 15, 20, 25,  6, 10, 10, 25,   1, 1, 10, 15,  0,  0, 20, 25,  0,  0,   0, 2) // #247
+PAIRING(10, 15, 20, 25,  6, 10, 10, 26,   1, 1, 10, 15,  0,  0, 20, 25,  0,  0,   0, 2) // #248
+PAIRING(10, 15, 20, 25,  6, 10, 11, 12,   1, 0, 11, 12,  0,  0,  0,  0,  0,  0,   2, 1) // #249
+PAIRING(10, 15, 20, 25,  6, 10, 11, 15,   1, 0, 11, 15,  0,  0,  0,  0,  0,  0,   2, 1) // #250
+PAIRING(10, 15, 20, 25,  6, 10, 11, 16,   1, 0, 11, 15,  0,  0,  0,  0,  0,  0,   2, 2) // #251
+PAIRING(10, 15, 20, 25,  6, 10, 11, 20,   1, 0, 11, 15,  0,  0,  0,  0,  0,  0,   2, 1) // #252
+PAIRING(10, 15, 20, 25,  6, 10, 11, 21,   1, 1, 11, 15,  0,  0, 20, 21,  0,  0,   2, 2) // #253
+PAIRING(10, 15, 20, 25,  6, 10, 11, 25,   1, 1, 11, 15,  0,  0, 20, 25,  0,  0,   1, 2) // #254
+PAIRING(10, 15, 20, 25,  6, 10, 11, 26,   1, 1, 11, 15,  0,  0, 20, 25,  0,  0,   1, 2) // #255
+PAIRING(10, 15, 20, 25,  6, 10, 15, 16,   0, 0,  0,  0,  0,  0,  0,  0,  0,  0,   2, 2) // #256
+PAIRING(10, 15, 20, 25,  6, 10, 15, 20,   0, 0,  0,  0,  0,  0,  0,  0,  0,  0,   2, 2) // #257
+PAIRING(10, 15, 20, 25,  6, 10, 15, 21,   0, 1,  0,  0,  0,  0, 20, 21,  0,  0,   2, 2) // #258
+PAIRING(10, 15, 20, 25,  6, 10, 15, 25,   0, 1,  0,  0,  0,  0, 20, 25,  0,  0,   1, 2) // #259
+PAIRING(10, 15, 20, 25,  6, 10, 15, 26,   0, 1,  0,  0,  0,  0, 20, 25,  0,  0,   1, 2) // #260
+PAIRING(10, 15, 20, 25,  6, 10, 16, 17,   0, 0,  0,  0,  0,  0,  0,  0,  0,  0,   2, 2) // #261
+PAIRING(10, 15, 20, 25,  6, 10, 16, 20,   0, 0,  0,  0,  0,  0,  0,  0,  0,  0,   2, 2) // #262
+PAIRING(10, 15, 20, 25,  6, 10, 16, 21,   0, 1,  0,  0,  0,  0, 20, 21,  0,  0,   2, 2) // #263
+PAIRING(10, 15, 20, 25,  6, 10, 16, 25,   0, 1,  0,  0,  0,  0, 20, 25,  0,  0,   1, 2) // #264
+PAIRING(10, 15, 20, 25,  6, 10, 16, 26,   0, 1,  0,  0,  0,  0, 20, 25,  0,  0,   1, 2) // #265
+PAIRING(10, 15, 20, 25,  6, 10, 20, 21,   0, 1,  0,  0,  0,  0, 20, 21,  0,  0,   2, 1) // #266
+PAIRING(10, 15, 20, 25,  6, 10, 20, 25,   0, 1,  0,  0,  0,  0, 20, 25,  0,  0,   1, 1) // #267
+PAIRING(10, 15, 20, 25,  6, 10, 20, 26,   0, 1,  0,  0,  0,  0, 20, 25,  0,  0,   1, 2) // #268
+PAIRING(10, 15, 20, 25,  6, 10, 21, 22,   0, 1,  0,  0,  0,  0, 21, 22,  0,  0,   2, 1) // #269
+PAIRING(10, 15, 20, 25,  6, 10, 21, 25,   0, 1,  0,  0,  0,  0, 21, 25,  0,  0,   2, 1) // #270
+PAIRING(10, 15, 20, 25,  6, 10, 21, 26,   0, 1,  0,  0,  0,  0, 21, 25,  0,  0,   2, 2) // #271
+PAIRING(10, 15, 20, 25,  6, 10, 25, 26,   0, 0,  0,  0,  0,  0,  0,  0,  0,  0,   2, 2) // #272
+PAIRING(10, 15, 20, 25,  6, 10, 26, 27,   0, 0,  0,  0,  0,  0,  0,  0,  0,  0,   2, 2) // #273
+PAIRING(10, 15, 20, 25,  6, 11, 11, 12,   2, 0, 10, 11, 11, 12,  0,  0,  0,  0,   2, 1) // #274
+PAIRING(10, 15, 20, 25,  6, 11, 11, 15,   2, 0, 10, 11, 11, 15,  0,  0,  0,  0,   1, 1) // #275
+PAIRING(10, 15, 20, 25,  6, 11, 11, 16,   2, 0, 10, 11, 11, 15,  0,  0,  0,  0,   1, 2) // #276
+PAIRING(10, 15, 20, 25,  6, 11, 11, 20,   2, 0, 10, 11, 11, 15,  0,  0,  0,  0,   1, 1) // #277
+PAIRING(10, 15, 20, 25,  6, 11, 11, 21,   2, 1, 10, 11, 11, 15, 20, 21,  0,  0,   1, 2) // #278
+PAIRING(10, 15, 20, 25,  6, 11, 11, 25,   2, 1, 10, 11, 11, 15, 20, 25,  0,  0,   0, 2) // #279
+PAIRING(10, 15, 20, 25,  6, 11, 11, 26,   2, 1, 10, 11, 11, 15, 20, 25,  0,  0,   0, 2) // #280
+PAIRING(10, 15, 20, 25,  6, 11, 12, 13,   2, 0, 10, 11, 12, 13,  0,  0,  0,  0,   2, 1) // #281
+PAIRING(10, 15, 20, 25,  6, 11, 12, 15,   2, 0, 10, 11, 12, 15,  0,  0,  0,  0,   2, 1) // #282
+PAIRING(10, 15, 20, 25,  6, 11, 12, 16,   2, 0, 10, 11, 12, 15,  0,  0,  0,  0,   2, 2) // #283
+PAIRING(10, 15, 20, 25,  6, 11, 12, 20,   2, 0, 10, 11, 12, 15,  0,  0,  0,  0,   2, 1) // #284
+PAIRING(10, 15, 20, 25,  6, 11, 12, 21,   2, 1, 10, 11, 12, 15, 20, 21,  0,  0,   2, 2) // #285
+PAIRING(10, 15, 20, 25,  6, 11, 12, 25,   2, 1, 10, 11, 12, 15, 20, 25,  0,  0,   1, 2) // #286
+PAIRING(10, 15, 20, 25,  6, 11, 12, 26,   2, 1, 10, 11, 12, 15, 20, 25,  0,  0,   1, 2) // #287
+PAIRING(10, 15, 20, 25,  6, 11, 15, 16,   1, 0, 10, 11,  0,  0,  0,  0,  0,  0,   2, 2) // #288
+PAIRING(10, 15, 20, 25,  6, 11, 15, 20,   1, 0, 10, 11,  0,  0,  0,  0,  0,  0,   2, 2) // #289
+PAIRING(10, 15, 20, 25,  6, 11, 15, 21,   1, 1, 10, 11,  0,  0, 20, 21,  0,  0,   2, 2) // #290
+PAIRING(10, 15, 20, 25,  6, 11, 15, 25,   1, 1, 10, 11,  0,  0, 20, 25,  0,  0,   1, 2) // #291
+PAIRING(10, 15, 20, 25,  6, 11, 15, 26,   1, 1, 10, 11,  0,  0, 20, 25,  0,  0,   1, 2) // #292
+PAIRING(10, 15, 20, 25,  6, 11, 16, 17,   1, 0, 10, 11,  0,  0,  0,  0,  0,  0,   2, 2) // #293
+PAIRING(10, 15, 20, 25,  6, 11, 16, 20,   1, 0, 10, 11,  0,  0,  0,  0,  0,  0,   2, 2) // #294
+PAIRING(10, 15, 20, 25,  6, 11, 16, 21,   1, 1, 10, 11,  0,  0, 20, 21,  0,  0,   2, 2) // #295
+PAIRING(10, 15, 20, 25,  6, 11, 16, 25,   1, 1, 10, 11,  0,  0, 20, 25,  0,  0,   1, 2) // #296
+PAIRING(10, 15, 20, 25,  6, 11, 16, 26,   1, 1, 10, 11,  0,  0, 20, 25,  0,  0,   1, 2) // #297
+PAIRING(10, 15, 20, 25,  6, 11, 20, 21,   1, 1, 10, 11,  0,  0, 20, 21,  0,  0,   2, 1) // #298
+PAIRING(10, 15, 20, 25,  6, 11, 20, 25,   1, 1, 10, 11,  0,  0, 20, 25,  0,  0,   1, 1) // #299
+PAIRING(10, 15, 20, 25,  6, 11, 20, 26,   1, 1, 10, 11,  0,  0, 20, 25,  0,  0,   1, 2) // #300
+PAIRING(10, 15, 20, 25,  6, 11, 21, 22,   1, 1, 10, 11,  0,  0, 21, 22,  0,  0,   2, 1) // #301
+PAIRING(10, 15, 20, 25,  6, 11, 21, 25,   1, 1, 10, 11,  0,  0, 21, 25,  0,  0,   2, 1) // #302
+PAIRING(10, 15, 20, 25,  6, 11, 21, 26,   1, 1, 10, 11,  0,  0, 21, 25,  0,  0,   2, 2) // #303
+PAIRING(10, 15, 20, 25,  6, 11, 25, 26,   1, 0, 10, 11,  0,  0,  0,  0,  0,  0,   2, 2) // #304
+PAIRING(10, 15, 20, 25,  6, 11, 26, 27,   1, 0, 10, 11,  0,  0,  0,  0,  0,  0,   2, 2) // #305
+PAIRING(10, 15, 20, 25,  6, 15, 15, 16,   1, 0, 10, 15,  0,  0,  0,  0,  0,  0,   1, 2) // #306
+PAIRING(10, 15, 20, 25,  6, 15, 15, 20,   1, 0, 10, 15,  0,  0,  0,  0,  0,  0,   1, 2) // #307
+PAIRING(10, 15, 20, 25,  6, 15, 15, 21,   1, 1, 10, 15,  0,  0, 20, 21,  0,  0,   1, 2) // #308
+PAIRING(10, 15, 20, 25,  6, 15, 15, 25,   1, 1, 10, 15,  0,  0, 20, 25,  0,  0,   0, 2) // #309
+PAIRING(10, 15, 20, 25,  6, 15, 15, 26,   1, 1, 10, 15,  0,  0, 20, 25,  0,  0,   0, 2) // #310
+PAIRING(10, 15, 20, 25,  6, 15, 16, 17,   1, 0, 10, 15,  0,  0,  0,  0,  0,  0,   1, 2) // #311
+PAIRING(10, 15, 20, 25,  6, 15, 16, 20,   1, 0, 10, 15,  0,  0,  0,  0,  0,  0,   1, 2) // #312
+PAIRING(10, 15, 20, 25,  6, 15, 16, 21,   1, 1, 10, 15,  0,  0, 20, 21,  0,  0,   1, 2) // #313
+PAIRING(10, 15, 20, 25,  6, 15, 16, 25,   1, 1, 10, 15,  0,  0, 20, 25,  0,  0,   0, 2) // #314
+PAIRING(10, 15, 20, 25,  6, 15, 16, 26,   1, 1, 10, 15,  0,  0, 20, 25,  0,  0,   0, 2) // #315
+PAIRING(10, 15, 20, 25,  6, 15, 20, 21,   1, 1, 10, 15,  0,  0, 20, 21,  0,  0,   1, 1) // #316
+PAIRING(10, 15, 20, 25,  6, 15, 20, 25,   1, 1, 10, 15,  0,  0, 20, 25,  0,  0,   0, 1) // #317
+PAIRING(10, 15, 20, 25,  6, 15, 20, 26,   1, 1, 10, 15,  0,  0, 20, 25,  0,  0,   0, 2) // #318
+PAIRING(10, 15, 20, 25,  6, 15, 21, 22,   1, 1, 10, 15,  0,  0, 21, 22,  0,  0,   1, 1) // #319
+PAIRING(10, 15, 20, 25,  6, 15, 21, 25,   1, 1, 10, 15,  0,  0, 21, 25,  0,  0,   1, 1) // #320
+PAIRING(10, 15, 20, 25,  6, 15, 21, 26,   1, 1, 10, 15,  0,  0, 21, 25,  0,  0,   1, 2) // #321
+PAIRING(10, 15, 20, 25,  6, 15, 25, 26,   1, 0, 10, 15,  0,  0,  0,  0,  0,  0,   1, 2) // #322
+PAIRING(10, 15, 20, 25,  6, 15, 26, 27,   1, 0, 10, 15,  0,  0,  0,  0,  0,  0,   1, 2) // #323
+PAIRING(10, 15, 20, 25,  6, 16, 16, 17,   1, 0, 10, 15,  0,  0,  0,  0,  0,  0,   1, 2) // #324
+PAIRING(10, 15, 20, 25,  6, 16, 16, 20,   1, 0, 10, 15,  0,  0,  0,  0,  0,  0,   1, 2) // #325
+PAIRING(10, 15, 20, 25,  6, 16, 16, 21,   1, 1, 10, 15,  0,  0, 20, 21,  0,  0,   1, 2) // #326
+PAIRING(10, 15, 20, 25,  6, 16, 16, 25,   1, 1, 10, 15,  0,  0, 20, 25,  0,  0,   0, 2) // #327
+PAIRING(10, 15, 20, 25,  6, 16, 16, 26,   1, 1, 10, 15,  0,  0, 20, 25,  0,  0,   0, 2) // #328
+PAIRING(10, 15, 20, 25,  6, 16, 17, 18,   1, 0, 10, 15,  0,  0,  0,  0,  0,  0,   1, 2) // #329
+PAIRING(10, 15, 20, 25,  6, 16, 17, 20,   1, 0, 10, 15,  0,  0,  0,  0,  0,  0,   1, 2) // #330
+PAIRING(10, 15, 20, 25,  6, 16, 17, 21,   1, 1, 10, 15,  0,  0, 20, 21,  0,  0,   1, 2) // #331
+PAIRING(10, 15, 20, 25,  6, 16, 17, 25,   1, 1, 10, 15,  0,  0, 20, 25,  0,  0,   0, 2) // #332
+PAIRING(10, 15, 20, 25,  6, 16, 17, 26,   1, 1, 10, 15,  0,  0, 20, 25,  0,  0,   0, 2) // #333
+PAIRING(10, 15, 20, 25,  6, 16, 20, 21,   1, 1, 10, 15,  0,  0, 20, 21,  0,  0,   1, 1) // #334
+PAIRING(10, 15, 20, 25,  6, 16, 20, 25,   1, 1, 10, 15,  0,  0, 20, 25,  0,  0,   0, 1) // #335
+PAIRING(10, 15, 20, 25,  6, 16, 20, 26,   1, 1, 10, 15,  0,  0, 20, 25,  0,  0,   0, 2) // #336
+PAIRING(10, 15, 20, 25,  6, 16, 21, 22,   1, 1, 10, 15,  0,  0, 21, 22,  0,  0,   1, 1) // #337
+PAIRING(10, 15, 20, 25,  6, 16, 21, 25,   1, 1, 10, 15,  0,  0, 21, 25,  0,  0,   1, 1) // #338
+PAIRING(10, 15, 20, 25,  6, 16, 21, 26,   1, 1, 10, 15,  0,  0, 21, 25,  0,  0,   1, 2) // #339
+PAIRING(10, 15, 20, 25,  6, 16, 25, 26,   1, 0, 10, 15,  0,  0,  0,  0,  0,  0,   1, 2) // #340
+PAIRING(10, 15, 20, 25,  6, 16, 26, 27,   1, 0, 10, 15,  0,  0,  0,  0,  0,  0,   1, 2) // #341
+PAIRING(10, 15, 20, 25,  6, 20, 20, 21,   1, 1, 10, 15,  0,  0, 20, 21,  0,  0,   1, 1) // #342
+PAIRING(10, 15, 20, 25,  6, 20, 20, 25,   1, 1, 10, 15,  0,  0, 20, 25,  0,  0,   0, 1) // #343
+PAIRING(10, 15, 20, 25,  6, 20, 20, 26,   1, 1, 10, 15,  0,  0, 20, 25,  0,  0,   0, 2) // #344
+PAIRING(10, 15, 20, 25,  6, 20, 21, 22,   1, 1, 10, 15,  0,  0, 21, 22,  0,  0,   1, 1) // #345
+PAIRING(10, 15, 20, 25,  6, 20, 21, 25,   1, 1, 10, 15,  0,  0, 21, 25,  0,  0,   1, 1) // #346
+PAIRING(10, 15, 20, 25,  6, 20, 21, 26,   1, 1, 10, 15,  0,  0, 21, 25,  0,  0,   1, 2) // #347
+PAIRING(10, 15, 20, 25,  6, 20, 25, 26,   1, 0, 10, 15,  0,  0,  0,  0,  0,  0,   1, 2) // #348
+PAIRING(10, 15, 20, 25,  6, 20, 26, 27,   1, 0, 10, 15,  0,  0,  0,  0,  0,  0,   1, 2) // #349
+PAIRING(10, 15, 20, 25,  6, 21, 21, 22,   1, 2, 10, 15,  0,  0, 20, 21, 21, 22,   1, 1) // #350
+PAIRING(10, 15, 20, 25,  6, 21, 21, 25,   1, 2, 10, 15,  0,  0, 20, 21, 21, 25,   0, 1) // #351
+PAIRING(10, 15, 20, 25,  6, 21, 21, 26,   1, 2, 10, 15,  0,  0, 20, 21, 21, 25,   0, 2) // #352
+PAIRING(10, 15, 20, 25,  6, 21, 22, 23,   1, 2, 10, 15,  0,  0, 20, 21, 22, 23,   1, 1) // #353
+PAIRING(10, 15, 20, 25,  6, 21, 22, 25,   1, 2, 10, 15,  0,  0, 20, 21, 22, 25,   1, 1) // #354
+PAIRING(10, 15, 20, 25,  6, 21, 22, 26,   1, 2, 10, 15,  0,  0, 20, 21, 22, 25,   1, 2) // #355
+PAIRING(10, 15, 20, 25,  6, 21, 25, 26,   1, 1, 10, 15,  0,  0, 20, 21,  0,  0,   1, 2) // #356
+PAIRING(10, 15, 20, 25,  6, 21, 26, 27,   1, 1, 10, 15,  0,  0, 20, 21,  0,  0,   1, 2) // #357
+PAIRING(10, 15, 20, 25,  6, 25, 25, 26,   1, 1, 10, 15,  0,  0, 20, 25,  0,  0,   0, 2) // #358
+PAIRING(10, 15, 20, 25,  6, 25, 26, 27,   1, 1, 10, 15,  0,  0, 20, 25,  0,  0,   0, 2) // #359
+PAIRING(10, 15, 20, 25,  6, 26, 26, 27,   1, 1, 10, 15,  0,  0, 20, 25,  0,  0,   0, 2) // #360
+PAIRING(10, 15, 20, 25,  6, 26, 27, 28,   1, 1, 10, 15,  0,  0, 20, 25,  0,  0,   0, 2) // #361
+PAIRING(10, 15, 20, 25, 10, 11, 11, 12,   2, 0, 10, 11, 11, 12,  0,  0,  0,  0,   2, 0) // #362
+PAIRING(10, 15, 20, 25, 10, 11, 11, 15,   2, 0, 10, 11, 11, 15,  0,  0,  0,  0,   1, 0) // #363
+PAIRING(10, 15, 20, 25, 10, 11, 11, 16,   2, 0, 10, 11, 11, 15,  0,  0,  0,  0,   1, 1) // #364
+PAIRING(10, 15, 20, 25, 10, 11, 11, 20,   2, 0, 10, 11, 11, 15,  0,  0,  0,  0,   1, 0) // #365
+PAIRING(10, 15, 20, 25, 10, 11, 11, 21,   2, 1, 10, 11, 11, 15, 20, 21,  0,  0,   1, 1) // #366
+PAIRING(10, 15, 20, 25, 10, 11, 11, 25,   2, 1, 10, 11, 11, 15, 20, 25,  0,  0,   0, 1) // #367
+PAIRING(10, 15, 20, 25, 10, 11, 11, 26,   2, 1, 10, 11, 11, 15, 20, 25,  0,  0,   0, 1) // #368
+PAIRING(10, 15, 20, 25, 10, 11, 12, 13,   2, 0, 10, 11, 12, 13,  0,  0,  0,  0,   2, 0) // #369
+PAIRING(10, 15, 20, 25, 10, 11, 12, 15,   2, 0, 10, 11, 12, 15,  0,  0,  0,  0,   2, 0) // #370
+PAIRING(10, 15, 20, 25, 10, 11, 12, 16,   2, 0, 10, 11, 12, 15,  0,  0,  0,  0,   2, 1) // #371
+PAIRING(10, 15, 20, 25, 10, 11, 12, 20,   2, 0, 10, 11, 12, 15,  0,  0,  0,  0,   2, 0) // #372
+PAIRING(10, 15, 20, 25, 10, 11, 12, 21,   2, 1, 10, 11, 12, 15, 20, 21,  0,  0,   2, 1) // #373
+PAIRING(10, 15, 20, 25, 10, 11, 12, 25,   2, 1, 10, 11, 12, 15, 20, 25,  0,  0,   1, 1) // #374
+PAIRING(10, 15, 20, 25, 10, 11, 12, 26,   2, 1, 10, 11, 12, 15, 20, 25,  0,  0,   1, 1) // #375
+PAIRING(10, 15, 20, 25, 10, 11, 15, 16,   1, 0, 10, 11,  0,  0,  0,  0,  0,  0,   2, 1) // #376
+PAIRING(10, 15, 20, 25, 10, 11, 15, 20,   1, 0, 10, 11,  0,  0,  0,  0,  0,  0,   2, 1) // #377
+PAIRING(10, 15, 20, 25, 10, 11, 15, 21,   1, 1, 10, 11,  0,  0, 20, 21,  0,  0,   2, 1) // #378
+PAIRING(10, 15, 20, 25, 10, 11, 15, 25,   1, 1, 10, 11,  0,  0, 20, 25,  0,  0,   1, 1) // #379
+PAIRING(10, 15, 20, 25, 10, 11, 15, 26,   1, 1, 10, 11,  0,  0, 20, 25,  0,  0,   1, 1) // #380
+PAIRING(10, 15, 20, 25, 10, 11, 16, 17,   1, 0, 10, 11,  0,  0,  0,  0,  0,  0,   2, 1) // #381
+PAIRING(10, 15, 20, 25, 10, 11, 16, 20,   1, 0, 10, 11,  0,  0,  0,  0,  0,  0,   2, 1) // #382
+PAIRING(10, 15, 20, 25, 10, 11, 16, 21,   1, 1, 10, 11,  0,  0, 20, 21,  0,  0,   2, 1) // #383
+PAIRING(10, 15, 20, 25, 10, 11, 16, 25,   1, 1, 10, 11,  0,  0, 20, 25,  0,  0,   1, 1) // #384
+PAIRING(10, 15, 20, 25, 10, 11, 16, 26,   1, 1, 10, 11,  0,  0, 20, 25,  0,  0,   1, 1) // #385
+PAIRING(10, 15, 20, 25, 10, 11, 20, 21,   1, 1, 10, 11,  0,  0, 20, 21,  0,  0,   2, 0) // #386
+PAIRING(10, 15, 20, 25, 10, 11, 20, 25,   1, 1, 10, 11,  0,  0, 20, 25,  0,  0,   1, 0) // #387
+PAIRING(10, 15, 20, 25, 10, 11, 20, 26,   1, 1, 10, 11,  0,  0, 20, 25,  0,  0,   1, 1) // #388
+PAIRING(10, 15, 20, 25, 10, 11, 21, 22,   1, 1, 10, 11,  0,  0, 21, 22,  0,  0,   2, 0) // #389
+PAIRING(10, 15, 20, 25, 10, 11, 21, 25,   1, 1, 10, 11,  0,  0, 21, 25,  0,  0,   2, 0) // #390
+PAIRING(10, 15, 20, 25, 10, 11, 21, 26,   1, 1, 10, 11,  0,  0, 21, 25,  0,  0,   2, 1) // #391
+PAIRING(10, 15, 20, 25, 10, 11, 25, 26,   1, 0, 10, 11,  0,  0,  0,  0,  0,  0,   2, 1) // #392
+PAIRING(10, 15, 20, 25, 10, 11, 26, 27,   1, 0, 10, 11,  0,  0,  0,  0,  0,  0,   2, 1) // #393
+PAIRING(10, 15, 20, 25, 10, 15, 15, 16,   1, 0, 10, 15,  0,  0,  0,  0,  0,  0,   1, 1) // #394
+PAIRING(10, 15, 20, 25, 10, 15, 15, 20,   1, 0, 10, 15,  0,  0,  0,  0,  0,  0,   1, 1) // #395
+PAIRING(10, 15, 20, 25, 10, 15, 15, 21,   1, 1, 10, 15,  0,  0, 20, 21,  0,  0,   1, 1) // #396
+PAIRING(10, 15, 20, 25, 10, 15, 15, 25,   1, 1, 10, 15,  0,  0, 20, 25,  0,  0,   0, 1) // #397
+PAIRING(10, 15, 20, 25, 10, 15, 15, 26,   1, 1, 10, 15,  0,  0, 20, 25,  0,  0,   0, 1) // #398
+PAIRING(10, 15, 20, 25, 10, 15, 16, 17,   1, 0, 10, 15,  0,  0,  0,  0,  0,  0,   1, 1) // #399
+PAIRING(10, 15, 20, 25, 10, 15, 16, 20,   1, 0, 10, 15,  0,  0,  0,  0,  0,  0,   1, 1) // #400
+PAIRING(10, 15, 20, 25, 10, 15, 16, 21,   1, 1, 10, 15,  0,  0, 20, 21,  0,  0,   1, 1) // #401
+PAIRING(10, 15, 20, 25, 10, 15, 16, 25,   1, 1, 10, 15,  0,  0, 20, 25,  0,  0,   0, 1) // #402
+PAIRING(10, 15, 20, 25, 10, 15, 16, 26,   1, 1, 10, 15,  0,  0, 20, 25,  0,  0,   0, 1) // #403
+PAIRING(10, 15, 20, 25, 10, 15, 20, 21,   1, 1, 10, 15,  0,  0, 20, 21,  0,  0,   1, 0) // #404
+PAIRING(10, 15, 20, 25, 10, 15, 20, 25,   1, 1, 10, 15,  0,  0, 20, 25,  0,  0,   0, 0) // #405
+PAIRING(10, 15, 20, 25, 10, 15, 20, 26,   1, 1, 10, 15,  0,  0, 20, 25,  0,  0,   0, 1) // #406
+PAIRING(10, 15, 20, 25, 10, 15, 21, 22,   1, 1, 10, 15,  0,  0, 21, 22,  0,  0,   1, 0) // #407
+PAIRING(10, 15, 20, 25, 10, 15, 21, 25,   1, 1, 10, 15,  0,  0, 21, 25,  0,  0,   1, 0) // #408
+PAIRING(10, 15, 20, 25, 10, 15, 21, 26,   1, 1, 10, 15,  0,  0, 21, 25,  0,  0,   1, 1) // #409
+PAIRING(10, 15, 20, 25, 10, 15, 25, 26,   1, 0, 10, 15,  0,  0,  0,  0,  0,  0,   1, 1) // #410
+PAIRING(10, 15, 20, 25, 10, 15, 26, 27,   1, 0, 10, 15,  0,  0,  0,  0,  0,  0,   1, 1) // #411
+PAIRING(10, 15, 20, 25, 10, 16, 16, 17,   1, 0, 10, 15,  0,  0,  0,  0,  0,  0,   1, 2) // #412
+PAIRING(10, 15, 20, 25, 10, 16, 16, 20,   1, 0, 10, 15,  0,  0,  0,  0,  0,  0,   1, 2) // #413
+PAIRING(10, 15, 20, 25, 10, 16, 16, 21,   1, 1, 10, 15,  0,  0, 20, 21,  0,  0,   1, 2) // #414
+PAIRING(10, 15, 20, 25, 10, 16, 16, 25,   1, 1, 10, 15,  0,  0, 20, 25,  0,  0,   0, 2) // #415
+PAIRING(10, 15, 20, 25, 10, 16, 16, 26,   1, 1, 10, 15,  0,  0, 20, 25,  0,  0,   0, 2) // #416
+PAIRING(10, 15, 20, 25, 10, 16, 17, 18,   1, 0, 10, 15,  0,  0,  0,  0,  0,  0,   1, 2) // #417
+PAIRING(10, 15, 20, 25, 10, 16, 17, 20,   1, 0, 10, 15,  0,  0,  0,  0,  0,  0,   1, 2) // #418
+PAIRING(10, 15, 20, 25, 10, 16, 17, 21,   1, 1, 10, 15,  0,  0, 20, 21,  0,  0,   1, 2) // #419
+PAIRING(10, 15, 20, 25, 10, 16, 17, 25,   1, 1, 10, 15,  0,  0, 20, 25,  0,  0,   0, 2) // #420
+PAIRING(10, 15, 20, 25, 10, 16, 17, 26,   1, 1, 10, 15,  0,  0, 20, 25,  0,  0,   0, 2) // #421
+PAIRING(10, 15, 20, 25, 10, 16, 20, 21,   1, 1, 10, 15,  0,  0, 20, 21,  0,  0,   1, 1) // #422
+PAIRING(10, 15, 20, 25, 10, 16, 20, 25,   1, 1, 10, 15,  0,  0, 20, 25,  0,  0,   0, 1) // #423
+PAIRING(10, 15, 20, 25, 10, 16, 20, 26,   1, 1, 10, 15,  0,  0, 20, 25,  0,  0,   0, 2) // #424
+PAIRING(10, 15, 20, 25, 10, 16, 21, 22,   1, 1, 10, 15,  0,  0, 21, 22,  0,  0,   1, 1) // #425
+PAIRING(10, 15, 20, 25, 10, 16, 21, 25,   1, 1, 10, 15,  0,  0, 21, 25,  0,  0,   1, 1) // #426
+PAIRING(10, 15, 20, 25, 10, 16, 21, 26,   1, 1, 10, 15,  0,  0, 21, 25,  0,  0,   1, 2) // #427
+PAIRING(10, 15, 20, 25, 10, 16, 25, 26,   1, 0, 10, 15,  0,  0,  0,  0,  0,  0,   1, 2) // #428
+PAIRING(10, 15, 20, 25, 10, 16, 26, 27,   1, 0, 10, 15,  0,  0,  0,  0,  0,  0,   1, 2) // #429
+PAIRING(10, 15, 20, 25, 10, 20, 20, 21,   1, 1, 10, 15,  0,  0, 20, 21,  0,  0,   1, 0) // #430
+PAIRING(10, 15, 20, 25, 10, 20, 20, 25,   1, 1, 10, 15,  0,  0, 20, 25,  0,  0,   0, 0) // #431
+PAIRING(10, 15, 20, 25, 10, 20, 20, 26,   1, 1, 10, 15,  0,  0, 20, 25,  0,  0,   0, 1) // #432
+PAIRING(10, 15, 20, 25, 10, 20, 21, 22,   1, 1, 10, 15,  0,  0, 21, 22,  0,  0,   1, 0) // #433
+PAIRING(10, 15, 20, 25, 10, 20, 21, 25,   1, 1, 10, 15,  0,  0, 21, 25,  0,  0,   1, 0) // #434
+PAIRING(10, 15, 20, 25, 10, 20, 21, 26,   1, 1, 10, 15,  0,  0, 21, 25,  0,  0,   1, 1) // #435
+PAIRING(10, 15, 20, 25, 10, 20, 25, 26,   1, 0, 10, 15,  0,  0,  0,  0,  0,  0,   1, 1) // #436
+PAIRING(10, 15, 20, 25, 10, 20, 26, 27,   1, 0, 10, 15,  0,  0,  0,  0,  0,  0,   1, 1) // #437
+PAIRING(10, 15, 20, 25, 10, 21, 21, 22,   1, 2, 10, 15,  0,  0, 20, 21, 21, 22,   1, 1) // #438
+PAIRING(10, 15, 20, 25, 10, 21, 21, 25,   1, 2, 10, 15,  0,  0, 20, 21, 21, 25,   0, 1) // #439
+PAIRING(10, 15, 20, 25, 10, 21, 21, 26,   1, 2, 10, 15,  0,  0, 20, 21, 21, 25,   0, 2) // #440
+PAIRING(10, 15, 20, 25, 10, 21, 22, 23,   1, 2, 10, 15,  0,  0, 20, 21, 22, 23,   1, 1) // #441
+PAIRING(10, 15, 20, 25, 10, 21, 22, 25,   1, 2, 10, 15,  0,  0, 20, 21, 22, 25,   1, 1) // #442
+PAIRING(10, 15, 20, 25, 10, 21, 22, 26,   1, 2, 10, 15,  0,  0, 20, 21, 22, 25,   1, 2) // #443
+PAIRING(10, 15, 20, 25, 10, 21, 25, 26,   1, 1, 10, 15,  0,  0, 20, 21,  0,  0,   1, 2) // #444
+PAIRING(10, 15, 20, 25, 10, 21, 26, 27,   1, 1, 10, 15,  0,  0, 20, 21,  0,  0,   1, 2) // #445
+PAIRING(10, 15, 20, 25, 10, 25, 25, 26,   1, 1, 10, 15,  0,  0, 20, 25,  0,  0,   0, 2) // #446
+PAIRING(10, 15, 20, 25, 10, 25, 26, 27,   1, 1, 10, 15,  0,  0, 20, 25,  0,  0,   0, 2) // #447
+PAIRING(10, 15, 20, 25, 10, 26, 26, 27,   1, 1, 10, 15,  0,  0, 20, 25,  0,  0,   0, 2) // #448
+PAIRING(10, 15, 20, 25, 10, 26, 27, 28,   1, 1, 10, 15,  0,  0, 20, 25,  0,  0,   0, 2) // #449
+PAIRING(10, 15, 20, 25, 11, 12, 12, 13,   2, 0, 11, 12, 12, 13,  0,  0,  0,  0,   2, 0) // #450
+PAIRING(10, 15, 20, 25, 11, 12, 12, 15,   2, 0, 11, 12, 12, 15,  0,  0,  0,  0,   2, 0) // #451
+PAIRING(10, 15, 20, 25, 11, 12, 12, 16,   2, 0, 11, 12, 12, 15,  0,  0,  0,  0,   2, 1) // #452
+PAIRING(10, 15, 20, 25, 11, 12, 12, 20,   2, 0, 11, 12, 12, 15,  0,  0,  0,  0,   2, 0) // #453
+PAIRING(10, 15, 20, 25, 11, 12, 12, 21,   2, 1, 11, 12, 12, 15, 20, 21,  0,  0,   2, 1) // #454
+PAIRING(10, 15, 20, 25, 11, 12, 12, 25,   2, 1, 11, 12, 12, 15, 20, 25,  0,  0,   1, 1) // #455
+PAIRING(10, 15, 20, 25, 11, 12, 12, 26,   2, 1, 11, 12, 12, 15, 20, 25,  0,  0,   1, 1) // #456
+PAIRING(10, 15, 20, 25, 11, 12, 13, 14,   2, 0, 11, 12, 13, 14,  0,  0,  0,  0,   2, 0) // #457
+PAIRING(10, 15, 20, 25, 11, 12, 13, 15,   2, 0, 11, 12, 13, 15,  0,  0,  0,  0,   2, 0) // #458
+PAIRING(10, 15, 20, 25, 11, 12, 13, 16,   2, 0, 11, 12, 13, 15,  0,  0,  0,  0,   2, 1) // #459
+PAIRING(10, 15, 20, 25, 11, 12, 13, 20,   2, 0, 11, 12, 13, 15,  0,  0,  0,  0,   2, 0) // #460
+PAIRING(10, 15, 20, 25, 11, 12, 13, 21,   2, 1, 11, 12, 13, 15, 20, 21,  0,  0,   2, 1) // #461
+PAIRING(10, 15, 20, 25, 11, 12, 13, 25,   2, 1, 11, 12, 13, 15, 20, 25,  0,  0,   1, 1) // #462
+PAIRING(10, 15, 20, 25, 11, 12, 13, 26,   2, 1, 11, 12, 13, 15, 20, 25,  0,  0,   1, 1) // #463
+PAIRING(10, 15, 20, 25, 11, 12, 15, 16,   1, 0, 11, 12,  0,  0,  0,  0,  0,  0,   2, 1) // #464
+PAIRING(10, 15, 20, 25, 11, 12, 15, 20,   1, 0, 11, 12,  0,  0,  0,  0,  0,  0,   2, 1) // #465
+PAIRING(10, 15, 20, 25, 11, 12, 15, 21,   1, 1, 11, 12,  0,  0, 20, 21,  0,  0,   2, 1) // #466
+PAIRING(10, 15, 20, 25, 11, 12, 15, 25,   1, 1, 11, 12,  0,  0, 20, 25,  0,  0,   1, 1) // #467
+PAIRING(10, 15, 20, 25, 11, 12, 15, 26,   1, 1, 11, 12,  0,  0, 20, 25,  0,  0,   1, 1) // #468
+PAIRING(10, 15, 20, 25, 11, 12, 16, 17,   1, 0, 11, 12,  0,  0,  0,  0,  0,  0,   2, 1) // #469
+PAIRING(10, 15, 20, 25, 11, 12, 16, 20,   1, 0, 11, 12,  0,  0,  0,  0,  0,  0,   2, 1) // #470
+PAIRING(10, 15, 20, 25, 11, 12, 16, 21,   1, 1, 11, 12,  0,  0, 20, 21,  0,  0,   2, 1) // #471
+PAIRING(10, 15, 20, 25, 11, 12, 16, 25,   1, 1, 11, 12,  0,  0, 20, 25,  0,  0,   1, 1) // #472
+PAIRING(10, 15, 20, 25, 11, 12, 16, 26,   1, 1, 11, 12,  0,  0, 20, 25,  0,  0,   1, 1) // #473
+PAIRING(10, 15, 20, 25, 11, 12, 20, 21,   1, 1, 11, 12,  0,  0, 20, 21,  0,  0,   2, 0) // #474
+PAIRING(10, 15, 20, 25, 11, 12, 20, 25,   1, 1, 11, 12,  0,  0, 20, 25,  0,  0,   1, 0) // #475
+PAIRING(10, 15, 20, 25, 11, 12, 20, 26,   1, 1, 11, 12,  0,  0, 20, 25,  0,  0,   1, 1) // #476
+PAIRING(10, 15, 20, 25, 11, 12, 21, 22,   1, 1, 11, 12,  0,  0, 21, 22,  0,  0,   2, 0) // #477
+PAIRING(10, 15, 20, 25, 11, 12, 21, 25,   1, 1, 11, 12,  0,  0, 21, 25,  0,  0,   2, 0) // #478
+PAIRING(10, 15, 20, 25, 11, 12, 21, 26,   1, 1, 11, 12,  0,  0, 21, 25,  0,  0,   2, 1) // #479
+PAIRING(10, 15, 20, 25, 11, 12, 25, 26,   1, 0, 11, 12,  0,  0,  0,  0,  0,  0,   2, 1) // #480
+PAIRING(10, 15, 20, 25, 11, 12, 26, 27,   1, 0, 11, 12,  0,  0,  0,  0,  0,  0,   2, 1) // #481
+PAIRING(10, 15, 20, 25, 11, 15, 15, 16,   1, 0, 11, 15,  0,  0,  0,  0,  0,  0,   2, 1) // #482
+PAIRING(10, 15, 20, 25, 11, 15, 15, 20,   1, 0, 11, 15,  0,  0,  0,  0,  0,  0,   2, 1) // #483
+PAIRING(10, 15, 20, 25, 11, 15, 15, 21,   1, 1, 11, 15,  0,  0, 20, 21,  0,  0,   2, 1) // #484
+PAIRING(10, 15, 20, 25, 11, 15, 15, 25,   1, 1, 11, 15,  0,  0, 20, 25,  0,  0,   1, 1) // #485
+PAIRING(10, 15, 20, 25, 11, 15, 15, 26,   1, 1, 11, 15,  0,  0, 20, 25,  0,  0,   1, 1) // #486
+PAIRING(10, 15, 20, 25, 11, 15, 16, 17,   1, 0, 11, 15,  0,  0,  0,  0,  0,  0,   2, 1) // #487
+PAIRING(10, 15, 20, 25, 11, 15, 16, 20,   1, 0, 11, 15,  0,  0,  0,  0,  0,  0,   2, 1) // #488
+PAIRING(10, 15, 20, 25, 11, 15, 16, 21,   1, 1, 11, 15,  0,  0, 20, 21,  0,  0,   2, 1) // #489
+PAIRING(10, 15, 20, 25, 11, 15, 16, 25,   1, 1, 11, 15,  0,  0, 20, 25,  0,  0,   1, 1) // #490
+PAIRING(10, 15, 20, 25, 11, 15, 16, 26,   1, 1, 11, 15,  0,  0, 20, 25,  0,  0,   1, 1) // #491
+PAIRING(10, 15, 20, 25, 11, 15, 20, 21,   1, 1, 11, 15,  0,  0, 20, 21,  0,  0,   2, 0) // #492
+PAIRING(10, 15, 20, 25, 11, 15, 20, 25,   1, 1, 11, 15,  0,  0, 20, 25,  0,  0,   1, 0) // #493
+PAIRING(10, 15, 20, 25, 11, 15, 20, 26,   1, 1, 11, 15,  0,  0, 20, 25,  0,  0,   1, 1) // #494
+PAIRING(10, 15, 20, 25, 11, 15, 21, 22,   1, 1, 11, 15,  0,  0, 21, 22,  0,  0,   2, 0) // #495
+PAIRING(10, 15, 20, 25, 11, 15, 21, 25,   1, 1, 11, 15,  0,  0, 21, 25,  0,  0,   2, 0) // #496
+PAIRING(10, 15, 20, 25, 11, 15, 21, 26,   1, 1, 11, 15,  0,  0, 21, 25,  0,  0,   2, 1) // #497
+PAIRING(10, 15, 20, 25, 11, 15, 25, 26,   1, 0, 11, 15,  0,  0,  0,  0,  0,  0,   2, 1) // #498
+PAIRING(10, 15, 20, 25, 11, 15, 26, 27,   1, 0, 11, 15,  0,  0,  0,  0,  0,  0,   2, 1) // #499
+PAIRING(10, 15, 20, 25, 11, 16, 16, 17,   1, 0, 11, 15,  0,  0,  0,  0,  0,  0,   2, 2) // #500
+PAIRING(10, 15, 20, 25, 11, 16, 16, 20,   1, 0, 11, 15,  0,  0,  0,  0,  0,  0,   2, 2) // #501
+PAIRING(10, 15, 20, 25, 11, 16, 16, 21,   1, 1, 11, 15,  0,  0, 20, 21,  0,  0,   2, 2) // #502
+PAIRING(10, 15, 20, 25, 11, 16, 16, 25,   1, 1, 11, 15,  0,  0, 20, 25,  0,  0,   1, 2) // #503
+PAIRING(10, 15, 20, 25, 11, 16, 16, 26,   1, 1, 11, 15,  0,  0, 20, 25,  0,  0,   1, 2) // #504
+PAIRING(10, 15, 20, 25, 11, 16, 17, 18,   1, 0, 11, 15,  0,  0,  0,  0,  0,  0,   2, 2) // #505
+PAIRING(10, 15, 20, 25, 11, 16, 17, 20,   1, 0, 11, 15,  0,  0,  0,  0,  0,  0,   2, 2) // #506
+PAIRING(10, 15, 20, 25, 11, 16, 17, 21,   1, 1, 11, 15,  0,  0, 20, 21,  0,  0,   2, 2) // #507
+PAIRING(10, 15, 20, 25, 11, 16, 17, 25,   1, 1, 11, 15,  0,  0, 20, 25,  0,  0,   1, 2) // #508
+PAIRING(10, 15, 20, 25, 11, 16, 17, 26,   1, 1, 11, 15,  0,  0, 20, 25,  0,  0,   1, 2) // #509
+PAIRING(10, 15, 20, 25, 11, 16, 20, 21,   1, 1, 11, 15,  0,  0, 20, 21,  0,  0,   2, 1) // #510
+PAIRING(10, 15, 20, 25, 11, 16, 20, 25,   1, 1, 11, 15,  0,  0, 20, 25,  0,  0,   1, 1) // #511
+PAIRING(10, 15, 20, 25, 11, 16, 20, 26,   1, 1, 11, 15,  0,  0, 20, 25,  0,  0,   1, 2) // #512
+PAIRING(10, 15, 20, 25, 11, 16, 21, 22,   1, 1, 11, 15,  0,  0, 21, 22,  0,  0,   2, 1) // #513
+PAIRING(10, 15, 20, 25, 11, 16, 21, 25,   1, 1, 11, 15,  0,  0, 21, 25,  0,  0,   2, 1) // #514
+PAIRING(10, 15, 20, 25, 11, 16, 21, 26,   1, 1, 11, 15,  0,  0, 21, 25,  0,  0,   2, 2) // #515
+PAIRING(10, 15, 20, 25, 11, 16, 25, 26,   1, 0, 11, 15,  0,  0,  0,  0,  0,  0,   2, 2) // #516
+PAIRING(10, 15, 20, 25, 11, 16, 26, 27,   1, 0, 11, 15,  0,  0,  0,  0,  0,  0,   2, 2) // #517
+PAIRING(10, 15, 20, 25, 11, 20, 20, 21,   1, 1, 11, 15,  0,  0, 20, 21,  0,  0,   2, 0) // #518
+PAIRING(10, 15, 20, 25, 11, 20, 20, 25,   1, 1, 11, 15,  0,  0, 20, 25,  0,  0,   1, 0) // #519
+PAIRING(10, 15, 20, 25, 11, 20, 20, 26,   1, 1, 11, 15,  0,  0, 20, 25,  0,  0,   1, 1) // #520
+PAIRING(10, 15, 20, 25, 11, 20, 21, 22,   1, 1, 11, 15,  0,  0, 21, 22,  0,  0,   2, 0) // #521
+PAIRING(10, 15, 20, 25, 11, 20, 21, 25,   1, 1, 11, 15,  0,  0, 21, 25,  0,  0,   2, 0) // #522
+PAIRING(10, 15, 20, 25, 11, 20, 21, 26,   1, 1, 11, 15,  0,  0, 21, 25,  0,  0,   2, 1) // #523
+PAIRING(10, 15, 20, 25, 11, 20, 25, 26,   1, 0, 11, 15,  0,  0,  0,  0,  0,  0,   2, 1) // #524
+PAIRING(10, 15, 20, 25, 11, 20, 26, 27,   1, 0, 11, 15,  0,  0,  0,  0,  0,  0,   2, 1) // #525
+PAIRING(10, 15, 20, 25, 11, 21, 21, 22,   1, 2, 11, 15,  0,  0, 20, 21, 21, 22,   2, 1) // #526
+PAIRING(10, 15, 20, 25, 11, 21, 21, 25,   1, 2, 11, 15,  0,  0, 20, 21, 21, 25,   1, 1) // #527
+PAIRING(10, 15, 20, 25, 11, 21, 21, 26,   1, 2, 11, 15,  0,  0, 20, 21, 21, 25,   1, 2) // #528
+PAIRING(10, 15, 20, 25, 11, 21, 22, 23,   1, 2, 11, 15,  0,  0, 20, 21, 22, 23,   2, 1) // #529
+PAIRING(10, 15, 20, 25, 11, 21, 22, 25,   1, 2, 11, 15,  0,  0, 20, 21, 22, 25,   2, 1) // #530
+PAIRING(10, 15, 20, 25, 11, 21, 22, 26,   1, 2, 11, 15,  0,  0, 20, 21, 22, 25,   2, 2) // #531
+PAIRING(10, 15, 20, 25, 11, 21, 25, 26,   1, 1, 11, 15,  0,  0, 20, 21,  0,  0,   2, 2) // #532
+PAIRING(10, 15, 20, 25, 11, 21, 26, 27,   1, 1, 11, 15,  0,  0, 20, 21,  0,  0,   2, 2) // #533
+PAIRING(10, 15, 20, 25, 11, 25, 25, 26,   1, 1, 11, 15,  0,  0, 20, 25,  0,  0,   1, 2) // #534
+PAIRING(10, 15, 20, 25, 11, 25, 26, 27,   1, 1, 11, 15,  0,  0, 20, 25,  0,  0,   1, 2) // #535
+PAIRING(10, 15, 20, 25, 11, 26, 26, 27,   1, 1, 11, 15,  0,  0, 20, 25,  0,  0,   1, 2) // #536
+PAIRING(10, 15, 20, 25, 11, 26, 27, 28,   1, 1, 11, 15,  0,  0, 20, 25,  0,  0,   1, 2) // #537
+PAIRING(10, 15, 20, 25, 15, 16, 16, 17,   0, 0,  0,  0,  0,  0,  0,  0,  0,  0,   2, 2) // #538
+PAIRING(10, 15, 20, 25, 15, 16, 16, 20,   0, 0,  0,  0,  0,  0,  0,  0,  0,  0,   2, 2) // #539
+PAIRING(10, 15, 20, 25, 15, 16, 16, 21,   0, 1,  0,  0,  0,  0, 20, 21,  0,  0,   2, 2) // #540
+PAIRING(10, 15, 20, 25, 15, 16, 16, 25,   0, 1,  0,  0,  0,  0, 20, 25,  0,  0,   1, 2) // #541
+PAIRING(10, 15, 20, 25, 15, 16, 16, 26,   0, 1,  0,  0,  0,  0, 20, 25,  0,  0,   1, 2) // #542
+PAIRING(10, 15, 20, 25, 15, 16, 17, 18,   0, 0,  0,  0,  0,  0,  0,  0,  0,  0,   2, 2) // #543
+PAIRING(10, 15, 20, 25, 15, 16, 17, 20,   0, 0,  0,  0,  0,  0,  0,  0,  0,  0,   2, 2) // #544
+PAIRING(10, 15, 20, 25, 15, 16, 17, 21,   0, 1,  0,  0,  0,  0, 20, 21,  0,  0,   2, 2) // #545
+PAIRING(10, 15, 20, 25, 15, 16, 17, 25,   0, 1,  0,  0,  0,  0, 20, 25,  0,  0,   1, 2) // #546
+PAIRING(10, 15, 20, 25, 15, 16, 17, 26,   0, 1,  0,  0,  0,  0, 20, 25,  0,  0,   1, 2) // #547
+PAIRING(10, 15, 20, 25, 15, 16, 20, 21,   0, 1,  0,  0,  0,  0, 20, 21,  0,  0,   2, 1) // #548
+PAIRING(10, 15, 20, 25, 15, 16, 20, 25,   0, 1,  0,  0,  0,  0, 20, 25,  0,  0,   1, 1) // #549
+PAIRING(10, 15, 20, 25, 15, 16, 20, 26,   0, 1,  0,  0,  0,  0, 20, 25,  0,  0,   1, 2) // #550
+PAIRING(10, 15, 20, 25, 15, 16, 21, 22,   0, 1,  0,  0,  0,  0, 21, 22,  0,  0,   2, 1) // #551
+PAIRING(10, 15, 20, 25, 15, 16, 21, 25,   0, 1,  0,  0,  0,  0, 21, 25,  0,  0,   2, 1) // #552
+PAIRING(10, 15, 20, 25, 15, 16, 21, 26,   0, 1,  0,  0,  0,  0, 21, 25,  0,  0,   2, 2) // #553
+PAIRING(10, 15, 20, 25, 15, 16, 25, 26,   0, 0,  0,  0,  0,  0,  0,  0,  0,  0,   2, 2) // #554
+PAIRING(10, 15, 20, 25, 15, 16, 26, 27,   0, 0,  0,  0,  0,  0,  0,  0,  0,  0,   2, 2) // #555
+PAIRING(10, 15, 20, 25, 15, 20, 20, 21,   0, 1,  0,  0,  0,  0, 20, 21,  0,  0,   2, 1) // #556
+PAIRING(10, 15, 20, 25, 15, 20, 20, 25,   0, 1,  0,  0,  0,  0, 20, 25,  0,  0,   1, 1) // #557
+PAIRING(10, 15, 20, 25, 15, 20, 20, 26,   0, 1,  0,  0,  0,  0, 20, 25,  0,  0,   1, 2) // #558
+PAIRING(10, 15, 20, 25, 15, 20, 21, 22,   0, 1,  0,  0,  0,  0, 21, 22,  0,  0,   2, 1) // #559
+PAIRING(10, 15, 20, 25, 15, 20, 21, 25,   0, 1,  0,  0,  0,  0, 21, 25,  0,  0,   2, 1) // #560
+PAIRING(10, 15, 20, 25, 15, 20, 21, 26,   0, 1,  0,  0,  0,  0, 21, 25,  0,  0,   2, 2) // #561
+PAIRING(10, 15, 20, 25, 15, 20, 25, 26,   0, 0,  0,  0,  0,  0,  0,  0,  0,  0,   2, 2) // #562
+PAIRING(10, 15, 20, 25, 15, 20, 26, 27,   0, 0,  0,  0,  0,  0,  0,  0,  0,  0,   2, 2) // #563
+PAIRING(10, 15, 20, 25, 15, 21, 21, 22,   0, 2,  0,  0,  0,  0, 20, 21, 21, 22,   2, 1) // #564
+PAIRING(10, 15, 20, 25, 15, 21, 21, 25,   0, 2,  0,  0,  0,  0, 20, 21, 21, 25,   1, 1) // #565
+PAIRING(10, 15, 20, 25, 15, 21, 21, 26,   0, 2,  0,  0,  0,  0, 20, 21, 21, 25,   1, 2) // #566
+PAIRING(10, 15, 20, 25, 15, 21, 22, 23,   0, 2,  0,  0,  0,  0, 20, 21, 22, 23,   2, 1) // #567
+PAIRING(10, 15, 20, 25, 15, 21, 22, 25,   0, 2,  0,  0,  0,  0, 20, 21, 22, 25,   2, 1) // #568
+PAIRING(10, 15, 20, 25, 15, 21, 22, 26,   0, 2,  0,  0,  0,  0, 20, 21, 22, 25,   2, 2) // #569
+PAIRING(10, 15, 20, 25, 15, 21, 25, 26,   0, 1,  0,  0,  0,  0, 20, 21,  0,  0,   2, 2) // #570
+PAIRING(10, 15, 20, 25, 15, 21, 26, 27,   0, 1,  0,  0,  0,  0, 20, 21,  0,  0,   2, 2) // #571
+PAIRING(10, 15, 20, 25, 15, 25, 25, 26,   0, 1,  0,  0,  0,  0, 20, 25,  0,  0,   1, 2) // #572
+PAIRING(10, 15, 20, 25, 15, 25, 26, 27,   0, 1,  0,  0,  0,  0, 20, 25,  0,  0,   1, 2) // #573
+PAIRING(10, 15, 20, 25, 15, 26, 26, 27,   0, 1,  0,  0,  0,  0, 20, 25,  0,  0,   1, 2) // #574
+PAIRING(10, 15, 20, 25, 15, 26, 27, 28,   0, 1,  0,  0,  0,  0, 20, 25,  0,  0,   1, 2) // #575
+PAIRING(10, 15, 20, 25, 16, 17, 17, 18,   0, 0,  0,  0,  0,  0,  0,  0,  0,  0,   2, 2) // #576
+PAIRING(10, 15, 20, 25, 16, 17, 17, 20,   0, 0,  0,  0,  0,  0,  0,  0,  0,  0,   2, 2) // #577
+PAIRING(10, 15, 20, 25, 16, 17, 17, 21,   0, 1,  0,  0,  0,  0, 20, 21,  0,  0,   2, 2) // #578
+PAIRING(10, 15, 20, 25, 16, 17, 17, 25,   0, 1,  0,  0,  0,  0, 20, 25,  0,  0,   1, 2) // #579
+PAIRING(10, 15, 20, 25, 16, 17, 17, 26,   0, 1,  0,  0,  0,  0, 20, 25,  0,  0,   1, 2) // #580
+PAIRING(10, 15, 20, 25, 16, 17, 18, 19,   0, 0,  0,  0,  0,  0,  0,  0,  0,  0,   2, 2) // #581
+PAIRING(10, 15, 20, 25, 16, 17, 18, 20,   0, 0,  0,  0,  0,  0,  0,  0,  0,  0,   2, 2) // #582
+PAIRING(10, 15, 20, 25, 16, 17, 18, 21,   0, 1,  0,  0,  0,  0, 20, 21,  0,  0,   2, 2) // #583
+PAIRING(10, 15, 20, 25, 16, 17, 18, 25,   0, 1,  0,  0,  0,  0, 20, 25,  0,  0,   1, 2) // #584
+PAIRING(10, 15, 20, 25, 16, 17, 18, 26,   0, 1,  0,  0,  0,  0, 20, 25,  0,  0,   1, 2) // #585
+PAIRING(10, 15, 20, 25, 16, 17, 20, 21,   0, 1,  0,  0,  0,  0, 20, 21,  0,  0,   2, 1) // #586
+PAIRING(10, 15, 20, 25, 16, 17, 20, 25,   0, 1,  0,  0,  0,  0, 20, 25,  0,  0,   1, 1) // #587
+PAIRING(10, 15, 20, 25, 16, 17, 20, 26,   0, 1,  0,  0,  0,  0, 20, 25,  0,  0,   1, 2) // #588
+PAIRING(10, 15, 20, 25, 16, 17, 21, 22,   0, 1,  0,  0,  0,  0, 21, 22,  0,  0,   2, 1) // #589
+PAIRING(10, 15, 20, 25, 16, 17, 21, 25,   0, 1,  0,  0,  0,  0, 21, 25,  0,  0,   2, 1) // #590
+PAIRING(10, 15, 20, 25, 16, 17, 21, 26,   0, 1,  0,  0,  0,  0, 21, 25,  0,  0,   2, 2) // #591
+PAIRING(10, 15, 20, 25, 16, 17, 25, 26,   0, 0,  0,  0,  0,  0,  0,  0,  0,  0,   2, 2) // #592
+PAIRING(10, 15, 20, 25, 16, 17, 26, 27,   0, 0,  0,  0,  0,  0,  0,  0,  0,  0,   2, 2) // #593
+PAIRING(10, 15, 20, 25, 16, 20, 20, 21,   0, 1,  0,  0,  0,  0, 20, 21,  0,  0,   2, 1) // #594
+PAIRING(10, 15, 20, 25, 16, 20, 20, 25,   0, 1,  0,  0,  0,  0, 20, 25,  0,  0,   1, 1) // #595
+PAIRING(10, 15, 20, 25, 16, 20, 20, 26,   0, 1,  0,  0,  0,  0, 20, 25,  0,  0,   1, 2) // #596
+PAIRING(10, 15, 20, 25, 16, 20, 21, 22,   0, 1,  0,  0,  0,  0, 21, 22,  0,  0,   2, 1) // #597
+PAIRING(10, 15, 20, 25, 16, 20, 21, 25,   0, 1,  0,  0,  0,  0, 21, 25,  0,  0,   2, 1) // #598
+PAIRING(10, 15, 20, 25, 16, 20, 21, 26,   0, 1,  0,  0,  0,  0, 21, 25,  0,  0,   2, 2) // #599
+PAIRING(10, 15, 20, 25, 16, 20, 25, 26,   0, 0,  0,  0,  0,  0,  0,  0,  0,  0,   2, 2) // #600
+PAIRING(10, 15, 20, 25, 16, 20, 26, 27,   0, 0,  0,  0,  0,  0,  0,  0,  0,  0,   2, 2) // #601
+PAIRING(10, 15, 20, 25, 16, 21, 21, 22,   0, 2,  0,  0,  0,  0, 20, 21, 21, 22,   2, 1) // #602
+PAIRING(10, 15, 20, 25, 16, 21, 21, 25,   0, 2,  0,  0,  0,  0, 20, 21, 21, 25,   1, 1) // #603
+PAIRING(10, 15, 20, 25, 16, 21, 21, 26,   0, 2,  0,  0,  0,  0, 20, 21, 21, 25,   1, 2) // #604
+PAIRING(10, 15, 20, 25, 16, 21, 22, 23,   0, 2,  0,  0,  0,  0, 20, 21, 22, 23,   2, 1) // #605
+PAIRING(10, 15, 20, 25, 16, 21, 22, 25,   0, 2,  0,  0,  0,  0, 20, 21, 22, 25,   2, 1) // #606
+PAIRING(10, 15, 20, 25, 16, 21, 22, 26,   0, 2,  0,  0,  0,  0, 20, 21, 22, 25,   2, 2) // #607
+PAIRING(10, 15, 20, 25, 16, 21, 25, 26,   0, 1,  0,  0,  0,  0, 20, 21,  0,  0,   2, 2) // #608
+PAIRING(10, 15, 20, 25, 16, 21, 26, 27,   0, 1,  0,  0,  0,  0, 20, 21,  0,  0,   2, 2) // #609
+PAIRING(10, 15, 20, 25, 16, 25, 25, 26,   0, 1,  0,  0,  0,  0, 20, 25,  0,  0,   1, 2) // #610
+PAIRING(10, 15, 20, 25, 16, 25, 26, 27,   0, 1,  0,  0,  0,  0, 20, 25,  0,  0,   1, 2) // #611
+PAIRING(10, 15, 20, 25, 16, 26, 26, 27,   0, 1,  0,  0,  0,  0, 20, 25,  0,  0,   1, 2) // #612
+PAIRING(10, 15, 20, 25, 16, 26, 27, 28,   0, 1,  0,  0,  0,  0, 20, 25,  0,  0,   1, 2) // #613
+PAIRING(10, 15, 20, 25, 20, 21, 21, 22,   0, 2,  0,  0,  0,  0, 20, 21, 21, 22,   2, 0) // #614
+PAIRING(10, 15, 20, 25, 20, 21, 21, 25,   0, 2,  0,  0,  0,  0, 20, 21, 21, 25,   1, 0) // #615
+PAIRING(10, 15, 20, 25, 20, 21, 21, 26,   0, 2,  0,  0,  0,  0, 20, 21, 21, 25,   1, 1) // #616
+PAIRING(10, 15, 20, 25, 20, 21, 22, 23,   0, 2,  0,  0,  0,  0, 20, 21, 22, 23,   2, 0) // #617
+PAIRING(10, 15, 20, 25, 20, 21, 22, 25,   0, 2,  0,  0,  0,  0, 20, 21, 22, 25,   2, 0) // #618
+PAIRING(10, 15, 20, 25, 20, 21, 22, 26,   0, 2,  0,  0,  0,  0, 20, 21, 22, 25,   2, 1) // #619
+PAIRING(10, 15, 20, 25, 20, 21, 25, 26,   0, 1,  0,  0,  0,  0, 20, 21,  0,  0,   2, 1) // #620
+PAIRING(10, 15, 20, 25, 20, 21, 26, 27,   0, 1,  0,  0,  0,  0, 20, 21,  0,  0,   2, 1) // #621
+PAIRING(10, 15, 20, 25, 20, 25, 25, 26,   0, 1,  0,  0,  0,  0, 20, 25,  0,  0,   1, 1) // #622
+PAIRING(10, 15, 20, 25, 20, 25, 26, 27,   0, 1,  0,  0,  0,  0, 20, 25,  0,  0,   1, 1) // #623
+PAIRING(10, 15, 20, 25, 20, 26, 26, 27,   0, 1,  0,  0,  0,  0, 20, 25,  0,  0,   1, 2) // #624
+PAIRING(10, 15, 20, 25, 20, 26, 27, 28,   0, 1,  0,  0,  0,  0, 20, 25,  0,  0,   1, 2) // #625
+PAIRING(10, 15, 20, 25, 21, 22, 22, 23,   0, 2,  0,  0,  0,  0, 21, 22, 22, 23,   2, 0) // #626
+PAIRING(10, 15, 20, 25, 21, 22, 22, 25,   0, 2,  0,  0,  0,  0, 21, 22, 22, 25,   2, 0) // #627
+PAIRING(10, 15, 20, 25, 21, 22, 22, 26,   0, 2,  0,  0,  0,  0, 21, 22, 22, 25,   2, 1) // #628
+PAIRING(10, 15, 20, 25, 21, 22, 23, 24,   0, 2,  0,  0,  0,  0, 21, 22, 23, 24,   2, 0) // #629
+PAIRING(10, 15, 20, 25, 21, 22, 23, 25,   0, 2,  0,  0,  0,  0, 21, 22, 23, 25,   2, 0) // #630
+PAIRING(10, 15, 20, 25, 21, 22, 23, 26,   0, 2,  0,  0,  0,  0, 21, 22, 23, 25,   2, 1) // #631
+PAIRING(10, 15, 20, 25, 21, 22, 25, 26,   0, 1,  0,  0,  0,  0, 21, 22,  0,  0,   2, 1) // #632
+PAIRING(10, 15, 20, 25, 21, 22, 26, 27,   0, 1,  0,  0,  0,  0, 21, 22,  0,  0,   2, 1) // #633
+PAIRING(10, 15, 20, 25, 21, 25, 25, 26,   0, 1,  0,  0,  0,  0, 21, 25,  0,  0,   2, 1) // #634
+PAIRING(10, 15, 20, 25, 21, 25, 26, 27,   0, 1,  0,  0,  0,  0, 21, 25,  0,  0,   2, 1) // #635
+PAIRING(10, 15, 20, 25, 21, 26, 26, 27,   0, 1,  0,  0,  0,  0, 21, 25,  0,  0,   2, 2) // #636
+PAIRING(10, 15, 20, 25, 21, 26, 27, 28,   0, 1,  0,  0,  0,  0, 21, 25,  0,  0,   2, 2) // #637
+PAIRING(10, 15, 20, 25, 25, 26, 26, 27,   0, 0,  0,  0,  0,  0,  0,  0,  0,  0,   2, 2) // #638
+PAIRING(10, 15, 20, 25, 25, 26, 27, 28,   0, 0,  0,  0,  0,  0,  0,  0,  0,  0,   2, 2) // #639
+PAIRING(10, 15, 20, 25, 26, 27, 27, 28,   0, 0,  0,  0,  0,  0,  0,  0,  0,  0,   2, 2) // #640
+PAIRING(10, 15, 20, 25, 26, 27, 28, 29,   0, 0,  0,  0,  0,  0,  0,  0,  0,  0,   2, 2) // #641
diff --git a/google-breakpad/src/common/tests/auto_tempdir.h b/google-breakpad/src/common/tests/auto_tempdir.h
new file mode 100644
index 0000000..1df88db
--- /dev/null
+++ b/google-breakpad/src/common/tests/auto_tempdir.h
@@ -0,0 +1,100 @@
+// Copyright (c) 2011, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Utility class for creating a temporary directory for unit tests
+// that is deleted in the destructor.
+#ifndef GOOGLE_BREAKPAD_COMMON_TESTS_AUTO_TEMPDIR
+#define GOOGLE_BREAKPAD_COMMON_TESTS_AUTO_TEMPDIR
+
+#include <dirent.h>
+#include <sys/types.h>
+
+#include <string>
+
+#include "breakpad_googletest_includes.h"
+#include "common/using_std_string.h"
+
+#if !defined(__ANDROID__)
+#define TEMPDIR "/tmp"
+#else
+#define TEMPDIR "/data/local/tmp"
+#include "common/android/testing/mkdtemp.h"
+#endif
+
+namespace google_breakpad {
+
+class AutoTempDir {
+ public:
+  AutoTempDir() {
+    char temp_dir[] = TEMPDIR "/breakpad.XXXXXX";
+    EXPECT_TRUE(mkdtemp(temp_dir) != NULL);
+    path_.assign(temp_dir);
+  }
+
+  ~AutoTempDir() {
+    DeleteRecursively(path_);
+  }
+
+  const string& path() const {
+    return path_;
+  }
+
+ private:
+  void DeleteRecursively(const string& path) {
+    // First remove any files in the dir
+    DIR* dir = opendir(path.c_str());
+    if (!dir)
+      return;
+
+    dirent* entry;
+    while ((entry = readdir(dir)) != NULL) {
+      if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0)
+        continue;
+      string entry_path = path + "/" + entry->d_name;
+      struct stat stats;
+      EXPECT_TRUE(lstat(entry_path.c_str(), &stats) == 0);
+      if (S_ISDIR(stats.st_mode))
+        DeleteRecursively(entry_path);
+      else
+        EXPECT_TRUE(unlink(entry_path.c_str()) == 0);
+    }
+    EXPECT_TRUE(closedir(dir) == 0);
+    EXPECT_TRUE(rmdir(path.c_str()) == 0);
+  }
+
+  // prevent copy construction and assignment
+  AutoTempDir(const AutoTempDir&);
+  AutoTempDir& operator=(const AutoTempDir&);
+
+  string path_;
+};
+
+}  // namespace google_breakpad
+
+#endif  // GOOGLE_BREAKPAD_COMMON_TESTS_AUTO_TEMPDIR
diff --git a/google-breakpad/src/common/tests/file_utils.cc b/google-breakpad/src/common/tests/file_utils.cc
new file mode 100644
index 0000000..1c04177
--- /dev/null
+++ b/google-breakpad/src/common/tests/file_utils.cc
@@ -0,0 +1,153 @@
+// Copyright (c) 2011, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// file_utils.cc: Implement utility functions for file manipulation.
+// See file_utils.h for details.
+
+#include <fcntl.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+#include "common/linux/eintr_wrapper.h"
+#include "common/tests/file_utils.h"
+
+namespace google_breakpad {
+
+bool CopyFile(const char* from_path, const char* to_path) {
+  int infile = HANDLE_EINTR(open(from_path, O_RDONLY));
+  if (infile < 0) {
+    perror("open");
+    return false;
+  }
+
+  int outfile = HANDLE_EINTR(creat(to_path, 0666));
+  if (outfile < 0) {
+    perror("creat");
+    if (IGNORE_EINTR(close(infile)) < 0) {
+      perror("close");
+    }
+    return false;
+  }
+
+  char buffer[1024];
+  bool result = true;
+
+  while (result) {
+    ssize_t bytes_read = HANDLE_EINTR(read(infile, buffer, sizeof(buffer)));
+    if (bytes_read < 0) {
+      perror("read");
+      result = false;
+      break;
+    }
+    if (bytes_read == 0)
+      break;
+    ssize_t bytes_written_per_read = 0;
+    do {
+      ssize_t bytes_written_partial = HANDLE_EINTR(write(
+          outfile,
+          &buffer[bytes_written_per_read],
+          bytes_read - bytes_written_per_read));
+      if (bytes_written_partial < 0) {
+        perror("write");
+        result = false;
+        break;
+      }
+      bytes_written_per_read += bytes_written_partial;
+    } while (bytes_written_per_read < bytes_read);
+  }
+
+  if (IGNORE_EINTR(close(infile)) == -1) {
+    perror("close");
+    result = false;
+  }
+  if (IGNORE_EINTR(close(outfile)) == -1) {
+    perror("close");
+    result = false;
+  }
+
+  return result;
+}
+
+bool ReadFile(const char* path, void* buffer, ssize_t* buffer_size) {
+  int fd = HANDLE_EINTR(open(path, O_RDONLY));
+  if (fd == -1) {
+    perror("open");
+    return false;
+  }
+
+  bool ok = true;
+  if (buffer && buffer_size && *buffer_size > 0) {
+    memset(buffer, 0, sizeof(*buffer_size));
+    *buffer_size = HANDLE_EINTR(read(fd, buffer, *buffer_size));
+    if (*buffer_size == -1) {
+      perror("read");
+      ok = false;
+    }
+  }
+  if (IGNORE_EINTR(close(fd)) == -1) {
+    perror("close");
+    ok = false;
+  }
+  return ok;
+}
+
+bool WriteFile(const char* path, const void* buffer, size_t buffer_size) {
+  int fd = HANDLE_EINTR(open(path, O_CREAT | O_TRUNC | O_WRONLY, S_IRWXU));
+  if (fd == -1) {
+    perror("open");
+    return false;
+  }
+
+  bool ok = true;
+  if (buffer) {
+    size_t bytes_written_total = 0;
+    ssize_t bytes_written_partial = 0;
+    const char* data = reinterpret_cast<const char*>(buffer);
+    while (bytes_written_total < buffer_size) {
+      bytes_written_partial =
+          HANDLE_EINTR(write(fd, data + bytes_written_total,
+                             buffer_size - bytes_written_total));
+      if (bytes_written_partial < 0) {
+        perror("write");
+        ok = false;
+        break;
+      }
+      bytes_written_total += bytes_written_partial;
+    }
+  }
+  if (IGNORE_EINTR(close(fd)) == -1) {
+    perror("close");
+    ok = false;
+  }
+  return ok;
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/common/tests/file_utils.h b/google-breakpad/src/common/tests/file_utils.h
new file mode 100644
index 0000000..c98a9bf
--- /dev/null
+++ b/google-breakpad/src/common/tests/file_utils.h
@@ -0,0 +1,52 @@
+// Copyright (c) 2011, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// file_utils.h: Define utility functions for file manipulation, which
+// are used for testing.
+
+#ifndef COMMON_TESTS_FILE_UTILS_H_
+#define COMMON_TESTS_FILE_UTILS_H_
+
+namespace google_breakpad {
+
+// Copies a file from |from_path| to |to_path|. Returns true on success.
+bool CopyFile(const char* from_path, const char* to_path);
+
+// Reads the content of a file at |path| into |buffer|. |buffer_size| specifies
+// the size of |buffer| in bytes and returns the number of bytes read from the
+// file on success. Returns true on success.
+bool ReadFile(const char* path, void* buffer, ssize_t* buffer_size);
+
+// Writes |buffer_size| bytes of the content in |buffer| to a file at |path|.
+// Returns true on success.
+bool WriteFile(const char* path, const void* buffer, size_t buffer_size);
+
+}  // namespace google_breakpad
+
+#endif  // COMMON_TESTS_FILE_UTILS_H_
diff --git a/google-breakpad/src/common/unordered.h b/google-breakpad/src/common/unordered.h
new file mode 100644
index 0000000..ec665cc
--- /dev/null
+++ b/google-breakpad/src/common/unordered.h
@@ -0,0 +1,62 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Include this file to use unordered_map and unordered_set.  If tr1
+// or C++11 is not available, you can switch to using hash_set and
+// hash_map by defining BP_USE_HASH_SET.
+
+#ifndef COMMON_UNORDERED_H_
+#define COMMON_UNORDERED_H_
+
+#if defined(BP_USE_HASH_SET)
+#include <hash_map>
+#include <hash_set>
+
+// For hash<string>.
+#include "util/hash/hash.h"
+
+template <class T, class U, class H = __gnu_cxx::hash<T> >
+struct unordered_map : public hash_map<T, U, H> {};
+template <class T, class H = __gnu_cxx::hash<T> >
+struct unordered_set : public hash_set<T, H> {};
+
+#elif defined(_LIBCPP_VERSION)  // c++11
+#include <unordered_map>
+#include <unordered_set>
+using std::unordered_map;
+using std::unordered_set;
+
+#else  // Fallback to tr1::unordered
+#include <tr1/unordered_map>
+#include <tr1/unordered_set>
+using std::tr1::unordered_map;
+using std::tr1::unordered_set;
+#endif
+
+#endif  // COMMON_UNORDERED_H_
diff --git a/google-breakpad/src/common/using_std_string.h b/google-breakpad/src/common/using_std_string.h
new file mode 100644
index 0000000..13c1da5
--- /dev/null
+++ b/google-breakpad/src/common/using_std_string.h
@@ -0,0 +1,65 @@
+// -*- mode: C++ -*-
+
+// Copyright (c) 2012, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Ivan Penkov
+
+// using_std_string.h: Allows building this code in environments where
+//                     global string (::string) exists.
+//
+// The problem:
+// -------------
+// Let's say you want to build this code in an environment where a global
+// string type is defined (i.e. ::string).  Now, let's suppose that ::string
+// is different that std::string and you'd like to have the option to easily
+// choose between the two string types.  Ideally you'd like to control which
+// string type is chosen by simply #defining an identifier.
+//
+// The solution:
+// -------------
+// #define HAS_GLOBAL_STRING somewhere in a global header file and then
+// globally replace std::string with string.  Then include this header
+// file everywhere where string is used.  If you want to revert back to
+// using std::string, simply remove the #define (HAS_GLOBAL_STRING).
+
+#ifndef THIRD_PARTY_BREAKPAD_SRC_COMMON_USING_STD_STRING_H_
+#define THIRD_PARTY_BREAKPAD_SRC_COMMON_USING_STD_STRING_H_
+
+#ifdef HAS_GLOBAL_STRING
+  typedef ::string google_breakpad_string;
+#else
+  using std::string;
+  typedef std::string google_breakpad_string;
+#endif
+
+// Inicates that type google_breakpad_string is defined
+#define HAS_GOOGLE_BREAKPAD_STRING
+
+#endif  // THIRD_PARTY_BREAKPAD_SRC_COMMON_USING_STD_STRING_H_
diff --git a/google-breakpad/src/common/windows/common_windows.gyp b/google-breakpad/src/common/windows/common_windows.gyp
new file mode 100644
index 0000000..c98333a
--- /dev/null
+++ b/google-breakpad/src/common/windows/common_windows.gyp
@@ -0,0 +1,105 @@
+# Copyright 2013 Google Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+{
+  'includes': [
+    '../../build/common.gypi',
+  ],
+  'targets': [
+    {
+      'target_name': 'dia_sdk',
+      'type': 'none',
+      'all_dependent_settings': {
+        'include_dirs': [
+          '<(DEPTH)',
+          '$(VSInstallDir)/DIA SDK/include',
+        ],
+        'msvs_settings': {
+          'VCLinkerTool': {
+            'AdditionalDependencies': [
+              'diaguids.lib',
+              'imagehlp.lib',
+            ],
+          },
+        },
+        'configurations': {
+          'x86_Base': {
+            'msvs_settings': {
+              'VCLinkerTool': {
+                'AdditionalLibraryDirectories':
+                  ['$(VSInstallDir)/DIA SDK/lib'],
+              },
+            },
+          },
+          'x64_Base': {
+            'msvs_settings': {
+              'VCLinkerTool': {
+                'AdditionalLibraryDirectories':
+                  ['$(VSInstallDir)/DIA SDK/lib/amd64'],
+              },
+            },
+          },
+        },
+      },
+    },
+    {
+      'target_name': 'common_windows_lib',
+      'type': 'static_library',
+      'sources': [
+        'dia_util.cc',
+        'dia_util.h',
+        'guid_string.cc',
+        'guid_string.h',
+        'http_upload.cc',
+        'http_upload.h',
+        'omap.cc',
+        'omap.h',
+        'omap_internal.h',
+        'pdb_source_line_writer.cc',
+        'pdb_source_line_writer.h',
+        'string_utils.cc',
+        'string_utils-inl.h',
+      ],
+      'dependencies': [
+        'dia_sdk',
+      ],
+    },
+    {
+      'target_name': 'common_windows_unittests',
+      'type': 'executable',
+      'sources': [
+        'omap_unittest.cc',
+      ],
+      'dependencies': [
+        '<(DEPTH)/client/windows/unittests/testing.gyp:gmock',
+        '<(DEPTH)/client/windows/unittests/testing.gyp:gtest',
+        'common_windows_lib',
+      ],
+    },
+  ],
+}
diff --git a/google-breakpad/src/common/windows/dia_util.cc b/google-breakpad/src/common/windows/dia_util.cc
new file mode 100644
index 0000000..ed8cb5b
--- /dev/null
+++ b/google-breakpad/src/common/windows/dia_util.cc
@@ -0,0 +1,92 @@
+// Copyright 2013 Google Inc. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include "common/windows/dia_util.h"
+
+#include <atlbase.h>
+
+namespace google_breakpad {
+
+bool FindDebugStream(const wchar_t* name,
+                     IDiaSession* session,
+                     IDiaEnumDebugStreamData** debug_stream) {
+  CComPtr<IDiaEnumDebugStreams> enum_debug_streams;
+  if (FAILED(session->getEnumDebugStreams(&enum_debug_streams))) {
+    fprintf(stderr, "IDiaSession::getEnumDebugStreams failed\n");
+    return false;
+  }
+
+  CComPtr<IDiaEnumDebugStreamData> temp_debug_stream;
+  ULONG fetched = 0;
+  while (SUCCEEDED(enum_debug_streams->Next(1, &temp_debug_stream, &fetched)) &&
+         fetched == 1) {
+    CComBSTR stream_name;
+    if (FAILED(temp_debug_stream->get_name(&stream_name))) {
+      fprintf(stderr, "IDiaEnumDebugStreamData::get_name failed\n");
+      return false;
+    }
+
+    // Found the stream?
+    if (wcsncmp((LPWSTR)stream_name, name, stream_name.Length()) == 0) {
+      *debug_stream = temp_debug_stream.Detach();
+      return true;
+    }
+
+    temp_debug_stream.Release();
+  }
+
+  // No table was found.
+  return false;
+}
+
+bool FindTable(REFIID iid, IDiaSession* session, void** table) {
+  // Get the table enumerator.
+  CComPtr<IDiaEnumTables> enum_tables;
+  if (FAILED(session->getEnumTables(&enum_tables))) {
+    fprintf(stderr, "IDiaSession::getEnumTables failed\n");
+    return false;
+  }
+
+  // Iterate through the tables.
+  CComPtr<IDiaTable> temp_table;
+  ULONG fetched = 0;
+  while (SUCCEEDED(enum_tables->Next(1, &temp_table, &fetched)) &&
+         fetched == 1) {
+    void* temp = NULL;
+    if (SUCCEEDED(temp_table->QueryInterface(iid, &temp))) {
+      *table = temp;
+      return true;
+    }
+    temp_table.Release();
+  }
+
+  // The table was not found.
+  return false;
+}
+
+}  // namespace google_breakpad
\ No newline at end of file
diff --git a/google-breakpad/src/common/windows/dia_util.h b/google-breakpad/src/common/windows/dia_util.h
new file mode 100644
index 0000000..b9e0df2
--- /dev/null
+++ b/google-breakpad/src/common/windows/dia_util.h
@@ -0,0 +1,64 @@
+// Copyright 2013 Google Inc. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Utilities for loading debug streams and tables from a PDB file.
+
+#ifndef COMMON_WINDOWS_DIA_UTIL_H_
+#define COMMON_WINDOWS_DIA_UTIL_H_
+
+#include <Windows.h>
+#include <dia2.h>
+
+namespace google_breakpad {
+
+// Find the debug stream of the given |name| in the given |session|. Returns
+// true on success, false on error of if the stream does not exist. On success
+// the stream will be returned via |debug_stream|.
+bool FindDebugStream(const wchar_t* name,
+                     IDiaSession* session,
+                     IDiaEnumDebugStreamData** debug_stream);
+
+// Finds the first table implementing the COM interface with ID |iid| in the
+// given |session|. Returns true on success, false on error or if no such
+// table is found. On success the table will be returned via |table|.
+bool FindTable(REFIID iid, IDiaSession* session, void** table);
+
+// A templated version of FindTable. Finds the first table implementing type
+// |InterfaceType| in the given |session|. Returns true on success, false on
+// error or if no such table is found. On success the table will be returned via
+// |table|.
+template<typename InterfaceType>
+bool FindTable(IDiaSession* session, InterfaceType** table) {
+  return FindTable(__uuidof(InterfaceType),
+                   session,
+                   reinterpret_cast<void**>(table));
+}
+
+}  // namespace google_breakpad
+
+#endif  // COMMON_WINDOWS_DIA_UTIL_H_
diff --git a/google-breakpad/src/common/windows/guid_string.cc b/google-breakpad/src/common/windows/guid_string.cc
new file mode 100644
index 0000000..b7f877e
--- /dev/null
+++ b/google-breakpad/src/common/windows/guid_string.cc
@@ -0,0 +1,76 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// guid_string.cc: Convert GUIDs to strings.
+//
+// See guid_string.h for documentation.
+
+#include <wchar.h>
+
+#include "common/windows/string_utils-inl.h"
+
+#include "common/windows/guid_string.h"
+
+namespace google_breakpad {
+
+// static
+wstring GUIDString::GUIDToWString(GUID *guid) {
+  wchar_t guid_string[37];
+  swprintf(
+      guid_string, sizeof(guid_string) / sizeof(guid_string[0]),
+      L"%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
+      guid->Data1, guid->Data2, guid->Data3,
+      guid->Data4[0], guid->Data4[1], guid->Data4[2],
+      guid->Data4[3], guid->Data4[4], guid->Data4[5],
+      guid->Data4[6], guid->Data4[7]);
+
+  // remove when VC++7.1 is no longer supported
+  guid_string[sizeof(guid_string) / sizeof(guid_string[0]) - 1] = L'\0';
+
+  return wstring(guid_string);
+}
+
+// static
+wstring GUIDString::GUIDToSymbolServerWString(GUID *guid) {
+  wchar_t guid_string[33];
+  swprintf(
+      guid_string, sizeof(guid_string) / sizeof(guid_string[0]),
+      L"%08X%04X%04X%02X%02X%02X%02X%02X%02X%02X%02X",
+      guid->Data1, guid->Data2, guid->Data3,
+      guid->Data4[0], guid->Data4[1], guid->Data4[2],
+      guid->Data4[3], guid->Data4[4], guid->Data4[5],
+      guid->Data4[6], guid->Data4[7]);
+
+  // remove when VC++7.1 is no longer supported
+  guid_string[sizeof(guid_string) / sizeof(guid_string[0]) - 1] = L'\0';
+
+  return wstring(guid_string);
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/common/windows/guid_string.h b/google-breakpad/src/common/windows/guid_string.h
new file mode 100644
index 0000000..48a5c1d
--- /dev/null
+++ b/google-breakpad/src/common/windows/guid_string.h
@@ -0,0 +1,58 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// guid_string.cc: Convert GUIDs to strings.
+
+#ifndef COMMON_WINDOWS_GUID_STRING_H_
+#define COMMON_WINDOWS_GUID_STRING_H_
+
+#include <guiddef.h>
+
+#include <string>
+
+namespace google_breakpad {
+
+using std::wstring;
+
+class GUIDString {
+ public:
+  // Converts guid to a string in the format recommended by RFC 4122 and
+  // returns the string.
+  static wstring GUIDToWString(GUID *guid);
+
+  // Converts guid to a string formatted as uppercase hexadecimal, with
+  // no separators, and returns the string.  This is the format used for
+  // symbol server identifiers, although identifiers have an age tacked
+  // on to the string.
+  static wstring GUIDToSymbolServerWString(GUID *guid);
+};
+
+}  // namespace google_breakpad
+
+#endif  // COMMON_WINDOWS_GUID_STRING_H_
diff --git a/google-breakpad/src/common/windows/http_upload.cc b/google-breakpad/src/common/windows/http_upload.cc
new file mode 100644
index 0000000..ba04d7d
--- /dev/null
+++ b/google-breakpad/src/common/windows/http_upload.cc
@@ -0,0 +1,420 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include <assert.h>
+
+// Disable exception handler warnings.
+#pragma warning(disable:4530)
+
+#include <fstream>
+
+#include "common/windows/string_utils-inl.h"
+
+#include "common/windows/http_upload.h"
+
+namespace google_breakpad {
+
+using std::ifstream;
+using std::ios;
+
+static const wchar_t kUserAgent[] = L"Breakpad/1.0 (Windows)";
+
+// Helper class which closes an internet handle when it goes away
+class HTTPUpload::AutoInternetHandle {
+ public:
+  explicit AutoInternetHandle(HINTERNET handle) : handle_(handle) {}
+  ~AutoInternetHandle() {
+    if (handle_) {
+      InternetCloseHandle(handle_);
+    }
+  }
+
+  HINTERNET get() { return handle_; }
+
+ private:
+  HINTERNET handle_;
+};
+
+// static
+bool HTTPUpload::SendRequest(const wstring &url,
+                             const map<wstring, wstring> &parameters,
+                             const wstring &upload_file,
+                             const wstring &file_part_name,
+                             int *timeout,
+                             wstring *response_body,
+                             int *response_code) {
+  if (response_code) {
+    *response_code = 0;
+  }
+
+  // TODO(bryner): support non-ASCII parameter names
+  if (!CheckParameters(parameters)) {
+    return false;
+  }
+
+  // Break up the URL and make sure we can handle it
+  wchar_t scheme[16], host[256], path[256];
+  URL_COMPONENTS components;
+  memset(&components, 0, sizeof(components));
+  components.dwStructSize = sizeof(components);
+  components.lpszScheme = scheme;
+  components.dwSchemeLength = sizeof(scheme) / sizeof(scheme[0]);
+  components.lpszHostName = host;
+  components.dwHostNameLength = sizeof(host) / sizeof(host[0]);
+  components.lpszUrlPath = path;
+  components.dwUrlPathLength = sizeof(path) / sizeof(path[0]);
+  if (!InternetCrackUrl(url.c_str(), static_cast<DWORD>(url.size()),
+                        0, &components)) {
+    return false;
+  }
+  bool secure = false;
+  if (wcscmp(scheme, L"https") == 0) {
+    secure = true;
+  } else if (wcscmp(scheme, L"http") != 0) {
+    return false;
+  }
+
+  AutoInternetHandle internet(InternetOpen(kUserAgent,
+                                           INTERNET_OPEN_TYPE_PRECONFIG,
+                                           NULL,  // proxy name
+                                           NULL,  // proxy bypass
+                                           0));   // flags
+  if (!internet.get()) {
+    return false;
+  }
+
+  AutoInternetHandle connection(InternetConnect(internet.get(),
+                                                host,
+                                                components.nPort,
+                                                NULL,    // user name
+                                                NULL,    // password
+                                                INTERNET_SERVICE_HTTP,
+                                                0,       // flags
+                                                NULL));  // context
+  if (!connection.get()) {
+    return false;
+  }
+
+  DWORD http_open_flags = secure ? INTERNET_FLAG_SECURE : 0;
+  http_open_flags |= INTERNET_FLAG_NO_COOKIES;
+  AutoInternetHandle request(HttpOpenRequest(connection.get(),
+                                             L"POST",
+                                             path,
+                                             NULL,    // version
+                                             NULL,    // referer
+                                             NULL,    // agent type
+                                             http_open_flags,
+                                             NULL));  // context
+  if (!request.get()) {
+    return false;
+  }
+
+  wstring boundary = GenerateMultipartBoundary();
+  wstring content_type_header = GenerateRequestHeader(boundary);
+  HttpAddRequestHeaders(request.get(),
+                        content_type_header.c_str(),
+                        static_cast<DWORD>(-1),
+                        HTTP_ADDREQ_FLAG_ADD);
+
+  string request_body;
+  if (!GenerateRequestBody(parameters, upload_file,
+                           file_part_name, boundary, &request_body)) {
+    return false;
+  }
+
+  if (timeout) {
+    if (!InternetSetOption(request.get(),
+                           INTERNET_OPTION_SEND_TIMEOUT,
+                           timeout,
+                           sizeof(*timeout))) {
+      fwprintf(stderr, L"Could not unset send timeout, continuing...\n");
+    }
+
+    if (!InternetSetOption(request.get(),
+                           INTERNET_OPTION_RECEIVE_TIMEOUT,
+                           timeout,
+                           sizeof(*timeout))) {
+      fwprintf(stderr, L"Could not unset receive timeout, continuing...\n");
+    }
+  }
+
+  if (!HttpSendRequest(request.get(), NULL, 0,
+                       const_cast<char *>(request_body.data()),
+                       static_cast<DWORD>(request_body.size()))) {
+    return false;
+  }
+
+  // The server indicates a successful upload with HTTP status 200.
+  wchar_t http_status[4];
+  DWORD http_status_size = sizeof(http_status);
+  if (!HttpQueryInfo(request.get(), HTTP_QUERY_STATUS_CODE,
+                     static_cast<LPVOID>(&http_status), &http_status_size,
+                     0)) {
+    return false;
+  }
+
+  int http_response = wcstol(http_status, NULL, 10);
+  if (response_code) {
+    *response_code = http_response;
+  }
+
+  bool result = (http_response == 200);
+
+  if (result) {
+    result = ReadResponse(request.get(), response_body);
+  }
+
+  return result;
+}
+
+// static
+bool HTTPUpload::ReadResponse(HINTERNET request, wstring *response) {
+  bool has_content_length_header = false;
+  wchar_t content_length[32];
+  DWORD content_length_size = sizeof(content_length);
+  DWORD claimed_size = 0;
+  string response_body;
+
+  if (HttpQueryInfo(request, HTTP_QUERY_CONTENT_LENGTH,
+                    static_cast<LPVOID>(&content_length),
+                    &content_length_size, 0)) {
+    has_content_length_header = true;
+    claimed_size = wcstol(content_length, NULL, 10);
+    response_body.reserve(claimed_size);
+  }
+
+
+  DWORD bytes_available;
+  DWORD total_read = 0;
+  BOOL return_code;
+
+  while (((return_code = InternetQueryDataAvailable(request, &bytes_available,
+      0, 0)) != 0) && bytes_available > 0) {
+    vector<char> response_buffer(bytes_available);
+    DWORD size_read;
+
+    return_code = InternetReadFile(request,
+                                   &response_buffer[0],
+                                   bytes_available, &size_read);
+
+    if (return_code && size_read > 0) {
+      total_read += size_read;
+      response_body.append(&response_buffer[0], size_read);
+    } else {
+      break;
+    }
+  }
+
+  bool succeeded = return_code && (!has_content_length_header ||
+                                   (total_read == claimed_size));
+  if (succeeded && response) {
+    *response = UTF8ToWide(response_body);
+  }
+
+  return succeeded;
+}
+
+// static
+wstring HTTPUpload::GenerateMultipartBoundary() {
+  // The boundary has 27 '-' characters followed by 16 hex digits
+  static const wchar_t kBoundaryPrefix[] = L"---------------------------";
+  static const int kBoundaryLength = 27 + 16 + 1;
+
+  // Generate some random numbers to fill out the boundary
+  int r0 = rand();
+  int r1 = rand();
+
+  wchar_t temp[kBoundaryLength];
+  swprintf(temp, kBoundaryLength, L"%s%08X%08X", kBoundaryPrefix, r0, r1);
+
+  // remove when VC++7.1 is no longer supported
+  temp[kBoundaryLength - 1] = L'\0';
+
+  return wstring(temp);
+}
+
+// static
+wstring HTTPUpload::GenerateRequestHeader(const wstring &boundary) {
+  wstring header = L"Content-Type: multipart/form-data; boundary=";
+  header += boundary;
+  return header;
+}
+
+// static
+bool HTTPUpload::GenerateRequestBody(const map<wstring, wstring> &parameters,
+                                     const wstring &upload_file,
+                                     const wstring &file_part_name,
+                                     const wstring &boundary,
+                                     string *request_body) {
+  vector<char> contents;
+  if (!GetFileContents(upload_file, &contents)) {
+    return false;
+  }
+
+  string boundary_str = WideToUTF8(boundary);
+  if (boundary_str.empty()) {
+    return false;
+  }
+
+  request_body->clear();
+
+  // Append each of the parameter pairs as a form-data part
+  for (map<wstring, wstring>::const_iterator pos = parameters.begin();
+       pos != parameters.end(); ++pos) {
+    request_body->append("--" + boundary_str + "\r\n");
+    request_body->append("Content-Disposition: form-data; name=\"" +
+                         WideToUTF8(pos->first) + "\"\r\n\r\n" +
+                         WideToUTF8(pos->second) + "\r\n");
+  }
+
+  // Now append the upload file as a binary (octet-stream) part
+  string filename_utf8 = WideToUTF8(upload_file);
+  if (filename_utf8.empty()) {
+    return false;
+  }
+
+  string file_part_name_utf8 = WideToUTF8(file_part_name);
+  if (file_part_name_utf8.empty()) {
+    return false;
+  }
+
+  request_body->append("--" + boundary_str + "\r\n");
+  request_body->append("Content-Disposition: form-data; "
+                       "name=\"" + file_part_name_utf8 + "\"; "
+                       "filename=\"" + filename_utf8 + "\"\r\n");
+  request_body->append("Content-Type: application/octet-stream\r\n");
+  request_body->append("\r\n");
+
+  if (!contents.empty()) {
+      request_body->append(&(contents[0]), contents.size());
+  }
+  request_body->append("\r\n");
+  request_body->append("--" + boundary_str + "--\r\n");
+  return true;
+}
+
+// static
+bool HTTPUpload::GetFileContents(const wstring &filename,
+                                 vector<char> *contents) {
+  bool rv = false;
+  // The "open" method on pre-MSVC8 ifstream implementations doesn't accept a
+  // wchar_t* filename, so use _wfopen directly in that case.  For VC8 and
+  // later, _wfopen has been deprecated in favor of _wfopen_s, which does
+  // not exist in earlier versions, so let the ifstream open the file itself.
+  // GCC doesn't support wide file name and opening on FILE* requires ugly
+  // hacks, so fallback to multi byte file.
+#ifdef _MSC_VER
+  ifstream file;
+  file.open(filename.c_str(), ios::binary);
+#else // GCC
+  ifstream file(WideToMBCP(filename, CP_ACP).c_str(), ios::binary);
+#endif  // _MSC_VER >= 1400
+  if (file.is_open()) {
+    file.seekg(0, ios::end);
+    std::streamoff length = file.tellg();
+    // Check for loss of data when converting lenght from std::streamoff into
+    // std::vector<char>::size_type
+    std::vector<char>::size_type vector_size =
+        static_cast<std::vector<char>::size_type>(length);
+    if (static_cast<std::streamoff>(vector_size) == length) {
+      contents->resize(vector_size);
+      if (length != 0) {
+        file.seekg(0, ios::beg);
+        file.read(&((*contents)[0]), length);
+      }
+      rv = true;
+    }
+    file.close();
+  }
+  return rv;
+}
+
+// static
+wstring HTTPUpload::UTF8ToWide(const string &utf8) {
+  if (utf8.length() == 0) {
+    return wstring();
+  }
+
+  // compute the length of the buffer we'll need
+  int charcount = MultiByteToWideChar(CP_UTF8, 0, utf8.c_str(), -1, NULL, 0);
+
+  if (charcount == 0) {
+    return wstring();
+  }
+
+  // convert
+  wchar_t* buf = new wchar_t[charcount];
+  MultiByteToWideChar(CP_UTF8, 0, utf8.c_str(), -1, buf, charcount);
+  wstring result(buf);
+  delete[] buf;
+  return result;
+}
+
+// static
+string HTTPUpload::WideToMBCP(const wstring &wide, unsigned int cp) {
+  if (wide.length() == 0) {
+    return string();
+  }
+
+  // compute the length of the buffer we'll need
+  int charcount = WideCharToMultiByte(cp, 0, wide.c_str(), -1,
+                                      NULL, 0, NULL, NULL);
+  if (charcount == 0) {
+    return string();
+  }
+
+  // convert
+  char *buf = new char[charcount];
+  WideCharToMultiByte(cp, 0, wide.c_str(), -1, buf, charcount,
+                      NULL, NULL);
+
+  string result(buf);
+  delete[] buf;
+  return result;
+}
+
+// static
+bool HTTPUpload::CheckParameters(const map<wstring, wstring> &parameters) {
+  for (map<wstring, wstring>::const_iterator pos = parameters.begin();
+       pos != parameters.end(); ++pos) {
+    const wstring &str = pos->first;
+    if (str.size() == 0) {
+      return false;  // disallow empty parameter names
+    }
+    for (unsigned int i = 0; i < str.size(); ++i) {
+      wchar_t c = str[i];
+      if (c < 32 || c == '"' || c > 127) {
+        return false;
+      }
+    }
+  }
+  return true;
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/common/windows/http_upload.h b/google-breakpad/src/common/windows/http_upload.h
new file mode 100644
index 0000000..e485b70
--- /dev/null
+++ b/google-breakpad/src/common/windows/http_upload.h
@@ -0,0 +1,131 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// HTTPUpload provides a "nice" API to send a multipart HTTP(S) POST
+// request using wininet.  It currently supports requests that contain
+// a set of string parameters (key/value pairs), and a file to upload.
+
+#ifndef COMMON_WINDOWS_HTTP_UPLOAD_H_
+#define COMMON_WINDOWS_HTTP_UPLOAD_H_
+
+#pragma warning(push)
+// Disable exception handler warnings.
+#pragma warning(disable : 4530)
+
+#include <windows.h>
+#include <wininet.h>
+
+#include <map>
+#include <string>
+#include <vector>
+
+namespace google_breakpad {
+
+using std::string;
+using std::wstring;
+using std::map;
+using std::vector;
+
+class HTTPUpload {
+ public:
+  // Sends the given set of parameters, along with the contents of
+  // upload_file, as a multipart POST request to the given URL.
+  // file_part_name contains the name of the file part of the request
+  // (i.e. it corresponds to the name= attribute on an <input type="file">.
+  // Parameter names must contain only printable ASCII characters,
+  // and may not contain a quote (") character.
+  // Only HTTP(S) URLs are currently supported.  Returns true on success.
+  // If the request is successful and response_body is non-NULL,
+  // the response body will be returned in response_body.
+  // If response_code is non-NULL, it will be set to the HTTP response code
+  // received (or 0 if the request failed before getting an HTTP response).
+  static bool SendRequest(const wstring &url,
+                          const map<wstring, wstring> &parameters,
+                          const wstring &upload_file,
+                          const wstring &file_part_name,
+                          int *timeout,
+                          wstring *response_body,
+                          int *response_code);
+
+ private:
+  class AutoInternetHandle;
+
+  // Retrieves the HTTP response.  If NULL is passed in for response,
+  // this merely checks (via the return value) that we were successfully
+  // able to retrieve exactly as many bytes of content in the response as
+  // were specified in the Content-Length header.
+  static bool ReadResponse(HINTERNET request, wstring* response);
+
+  // Generates a new multipart boundary for a POST request
+  static wstring GenerateMultipartBoundary();
+
+  // Generates a HTTP request header for a multipart form submit.
+  static wstring GenerateRequestHeader(const wstring &boundary);
+
+  // Given a set of parameters, an upload filename, and a file part name,
+  // generates a multipart request body string with these parameters
+  // and minidump contents.  Returns true on success.
+  static bool GenerateRequestBody(const map<wstring, wstring> &parameters,
+                                  const wstring &upload_file,
+                                  const wstring &file_part_name,
+                                  const wstring &boundary,
+                                  string *request_body);
+
+  // Fills the supplied vector with the contents of filename.
+  static bool GetFileContents(const wstring &filename, vector<char> *contents);
+
+  // Converts a UTF8 string to UTF16.
+  static wstring UTF8ToWide(const string &utf8);
+
+  // Converts a UTF16 string to UTF8.
+  static string WideToUTF8(const wstring &wide) {
+      return WideToMBCP(wide, CP_UTF8);
+  }
+
+  // Converts a UTF16 string to specified code page.
+  static string WideToMBCP(const wstring &wide, unsigned int cp);
+
+  // Checks that the given list of parameters has only printable
+  // ASCII characters in the parameter name, and does not contain
+  // any quote (") characters.  Returns true if so.
+  static bool CheckParameters(const map<wstring, wstring> &parameters);
+
+  // No instances of this class should be created.
+  // Disallow all constructors, destructors, and operator=.
+  HTTPUpload();
+  explicit HTTPUpload(const HTTPUpload &);
+  void operator=(const HTTPUpload &);
+  ~HTTPUpload();
+};
+
+}  // namespace google_breakpad
+
+#pragma warning(pop)
+
+#endif  // COMMON_WINDOWS_HTTP_UPLOAD_H_
diff --git a/google-breakpad/src/common/windows/omap.cc b/google-breakpad/src/common/windows/omap.cc
new file mode 100644
index 0000000..67b9206
--- /dev/null
+++ b/google-breakpad/src/common/windows/omap.cc
@@ -0,0 +1,694 @@
+// Copyright 2013 Google Inc. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// This contains a suite of tools for transforming symbol information when
+// when that information has been extracted from a PDB containing OMAP
+// information.
+
+// OMAP information is a lightweight description of a mapping between two
+// address spaces. It consists of two streams, each of them a vector 2-tuples.
+// The OMAPTO stream contains tuples of the form
+//
+//   (RVA in transformed image, RVA in original image)
+//
+// while the OMAPFROM stream contains tuples of the form
+//
+//   (RVA in original image, RVA in transformed image)
+//
+// The entries in each vector are sorted by the first value of the tuple, and
+// the lengths associated with a mapping are implicit as the distance between
+// two successive addresses in the vector.
+
+// Consider a trivial 10-byte function described by the following symbol:
+//
+//   Function: RVA 0x00001000, length 10, "foo"
+//
+// Now consider the same function, but with 5-bytes of instrumentation injected
+// at offset 5. The OMAP streams describing this would look like:
+//
+//   OMAPTO  :  [ [0x00001000, 0x00001000],
+//                [0x00001005, 0xFFFFFFFF],
+//                [0x0000100a, 0x00001005] ]
+//   OMAPFROM:  [ [0x00001000, 0x00001000],
+//                [0x00001005, 0x0000100a] ]
+//
+// In this case the injected code has been marked as not originating in the
+// source image, and thus it will have no symbol information at all. However,
+// the injected code may also be associated with an original address range;
+// for example, when prepending instrumentation to a basic block the
+// instrumentation can be labelled as originating from the same source BB such
+// that symbol resolution will still find the appropriate source code line
+// number. In this case the OMAP stream would look like:
+//
+//   OMAPTO  :  [ [0x00001000, 0x00001000],
+//                [0x00001005, 0x00001005],
+//                [0x0000100a, 0x00001005] ]
+//   OMAPFROM:  [ [0x00001000, 0x00001000],
+//                [0x00001005, 0x0000100a] ]
+//
+// Suppose we asked DIA to lookup the symbol at location 0x0000100a of the
+// instrumented image. It would first run this through the OMAPTO table and
+// translate that address to 0x00001005. It would then lookup the symbol
+// at that address and return the symbol for the function "foo". This is the
+// correct result.
+//
+// However, if we query DIA for the length and address of the symbol it will
+// tell us that it has length 10 and is at RVA 0x00001000. The location is
+// correct, but the length doesn't take into account the 5-bytes of injected
+// code. Symbol resolution works (starting from an instrumented address,
+// mapping to an original address, and looking up a symbol), but the symbol
+// metadata is incorrect.
+//
+// If we dump the symbols using DIA they will have their addresses
+// appropriately transformed and reflect positions in the instrumented image.
+// However, if we try to do a lookup using those symbols resolution can fail.
+// For example, the address 0x0000100a will not map to the symbol for "foo",
+// because DIA tells us it is at location 0x00001000 (correct) with length
+// 10 (incorrect). The problem is one of order of operations: in this case
+// we're attempting symbol resolution by looking up an instrumented address
+// in the table of translated symbols.
+//
+// One way to handle this is to dump the OMAP information as part of the
+// breakpad symbols. This requires the rest of the toolchain to be aware of
+// OMAP information and to use it when present prior to performing lookup. The
+// other option is to properly transform the symbols (updating length as well as
+// position) so that resolution will work as expected for translated addresses.
+// This is transparent to the rest of the toolchain.
+
+#include "common/windows/omap.h"
+
+#include <atlbase.h>
+
+#include <algorithm>
+#include <cassert>
+#include <set>
+
+#include "common/windows/dia_util.h"
+
+namespace google_breakpad {
+
+namespace {
+
+static const wchar_t kOmapToDebugStreamName[] = L"OMAPTO";
+static const wchar_t kOmapFromDebugStreamName[] = L"OMAPFROM";
+
+// Dependending on where this is used in breakpad we sometimes get min/max from
+// windef, and other times from algorithm. To get around this we simply
+// define our own min/max functions.
+template<typename T>
+const T& Min(const T& t1, const T& t2) { return t1 < t2 ? t1 : t2; }
+template<typename T>
+const T& Max(const T& t1, const T& t2) { return t1 > t2 ? t1 : t2; }
+
+// It makes things more readable to have two different OMAP types. We cast
+// normal OMAPs into these. They must be the same size as the OMAP structure
+// for this to work, hence the static asserts.
+struct OmapOrigToTran {
+  DWORD rva_original;
+  DWORD rva_transformed;
+};
+struct OmapTranToOrig {
+  DWORD rva_transformed;
+  DWORD rva_original;
+};
+static_assert(sizeof(OmapOrigToTran) == sizeof(OMAP),
+              "OmapOrigToTran must have same size as OMAP.");
+static_assert(sizeof(OmapTranToOrig) == sizeof(OMAP),
+              "OmapTranToOrig must have same size as OMAP.");
+typedef std::vector<OmapOrigToTran> OmapFromTable;
+typedef std::vector<OmapTranToOrig> OmapToTable;
+
+// Used for sorting and searching through a Mapping.
+bool MappedRangeOriginalLess(const MappedRange& lhs, const MappedRange& rhs) {
+  if (lhs.rva_original < rhs.rva_original)
+    return true;
+  if (lhs.rva_original > rhs.rva_original)
+    return false;
+  return lhs.length < rhs.length;
+}
+bool MappedRangeMappedLess(const MappedRange& lhs, const MappedRange& rhs) {
+  if (lhs.rva_transformed < rhs.rva_transformed)
+    return true;
+  if (lhs.rva_transformed > rhs.rva_transformed)
+    return false;
+  return lhs.length < rhs.length;
+}
+
+// Used for searching through the EndpointIndexMap.
+bool EndpointIndexLess(const EndpointIndex& ei1, const EndpointIndex& ei2) {
+  return ei1.endpoint < ei2.endpoint;
+}
+
+// Finds the debug stream with the given |name| in the given |session|, and
+// populates |table| with its contents. Casts the data directly into OMAP
+// structs.
+bool FindAndLoadOmapTable(const wchar_t* name,
+                          IDiaSession* session,
+                          OmapTable* table) {
+  assert(name != NULL);
+  assert(session != NULL);
+  assert(table != NULL);
+
+  CComPtr<IDiaEnumDebugStreamData> stream;
+  if (!FindDebugStream(name, session, &stream))
+    return false;
+  assert(stream.p != NULL);
+
+  LONG count = 0;
+  if (FAILED(stream->get_Count(&count))) {
+    fprintf(stderr, "IDiaEnumDebugStreamData::get_Count failed for stream "
+                    "\"%ws\"\n", name);
+    return false;
+  }
+
+  // Get the length of the stream in bytes.
+  DWORD bytes_read = 0;
+  ULONG count_read = 0;
+  if (FAILED(stream->Next(count, 0, &bytes_read, NULL, &count_read))) {
+    fprintf(stderr, "IDiaEnumDebugStreamData::Next failed while reading "
+                    "length of stream \"%ws\"\n", name);
+    return false;
+  }
+
+  // Ensure it's consistent with the OMAP data type.
+  DWORD bytes_expected = count * sizeof(OmapTable::value_type);
+  if (count * sizeof(OmapTable::value_type) != bytes_read) {
+    fprintf(stderr, "DIA debug stream \"%ws\" has an unexpected length", name);
+    return false;
+  }
+
+  // Read the table.
+  table->resize(count);
+  bytes_read = 0;
+  count_read = 0;
+  if (FAILED(stream->Next(count, bytes_expected, &bytes_read,
+                          reinterpret_cast<BYTE*>(&table->at(0)),
+                          &count_read))) {
+    fprintf(stderr, "IDiaEnumDebugStreamData::Next failed while reading "
+                    "data from stream \"%ws\"\n");
+    return false;
+  }
+
+  return true;
+}
+
+// This determines the original image length by looking through the segment
+// table.
+bool GetOriginalImageLength(IDiaSession* session, DWORD* image_length) {
+  assert(session != NULL);
+  assert(image_length != NULL);
+
+  CComPtr<IDiaEnumSegments> enum_segments;
+  if (!FindTable(session, &enum_segments))
+    return false;
+  assert(enum_segments.p != NULL);
+
+  DWORD temp_image_length = 0;
+  CComPtr<IDiaSegment> segment;
+  ULONG fetched = 0;
+  while (SUCCEEDED(enum_segments->Next(1, &segment, &fetched)) &&
+         fetched == 1) {
+    assert(segment.p != NULL);
+
+    DWORD rva = 0;
+    DWORD length = 0;
+    DWORD frame = 0;
+    if (FAILED(segment->get_relativeVirtualAddress(&rva)) ||
+        FAILED(segment->get_length(&length)) ||
+        FAILED(segment->get_frame(&frame))) {
+      fprintf(stderr, "Failed to get basic properties for IDiaSegment\n");
+      return false;
+    }
+
+    if (frame > 0) {
+      DWORD segment_end = rva + length;
+      if (segment_end > temp_image_length)
+        temp_image_length = segment_end;
+    }
+    segment.Release();
+  }
+
+  *image_length = temp_image_length;
+  return true;
+}
+
+// Detects regions of the original image that have been removed in the
+// transformed image, and sets the 'removed' property on all mapped ranges
+// immediately preceding a gap. The mapped ranges must be sorted by
+// 'rva_original'.
+void FillInRemovedLengths(Mapping* mapping) {
+  assert(mapping != NULL);
+
+  // Find and fill gaps. We do this with two sweeps. We first sweep forward
+  // looking for gaps. When we identify a gap we then sweep forward with a
+  // second scan and set the 'removed' property for any intervals that
+  // immediately precede the gap.
+  //
+  // Gaps are typically between two successive intervals, but not always:
+  //
+  //   Range 1: ---------------
+  //   Range 2:     -------
+  //   Range 3:                      -------------
+  //   Gap    :                ******
+  //
+  // In the above example the gap is between range 1 and range 3. A forward
+  // sweep finds the gap, and a second forward sweep identifies that range 1
+  // immediately precedes the gap and sets its 'removed' property.
+
+  size_t fill = 0;
+  DWORD rva_front = 0;
+  for (size_t find = 0; find < mapping->size(); ++find) {
+#ifndef NDEBUG
+    // We expect the mapped ranges to be sorted by 'rva_original'.
+    if (find > 0) {
+      assert(mapping->at(find - 1).rva_original <=
+                 mapping->at(find).rva_original);
+    }
+#endif
+
+    if (rva_front < mapping->at(find).rva_original) {
+      // We've found a gap. Fill it in by setting the 'removed' property for
+      // any affected intervals.
+      DWORD removed = mapping->at(find).rva_original - rva_front;
+      for (; fill < find; ++fill) {
+        if (mapping->at(fill).rva_original + mapping->at(fill).length !=
+                rva_front) {
+          continue;
+        }
+
+        // This interval ends right where the gap starts. It needs to have its
+        // 'removed' information filled in.
+        mapping->at(fill).removed = removed;
+      }
+    }
+
+    // Advance the front that indicates the covered portion of the image.
+    rva_front = mapping->at(find).rva_original + mapping->at(find).length;
+  }
+}
+
+// Builds a unified view of the mapping between the original and transformed
+// image space by merging OMAPTO and OMAPFROM data.
+void BuildMapping(const OmapData& omap_data, Mapping* mapping) {
+  assert(mapping != NULL);
+
+  mapping->clear();
+
+  if (omap_data.omap_from.empty() || omap_data.omap_to.empty())
+    return;
+
+  // The names 'omap_to' and 'omap_from' are awfully confusing, so we make
+  // ourselves more explicit here. This cast is only safe because the underlying
+  // types have the exact same size.
+  const OmapToTable& tran2orig =
+      reinterpret_cast<const OmapToTable&>(omap_data.omap_to);
+  const OmapFromTable& orig2tran = reinterpret_cast<const OmapFromTable&>(
+      omap_data.omap_from);
+
+  // Handle the range of data at the beginning of the image. This is not usually
+  // specified by the OMAP data.
+  if (tran2orig[0].rva_transformed > 0 && orig2tran[0].rva_original > 0) {
+    DWORD header_transformed = tran2orig[0].rva_transformed;
+    DWORD header_original = orig2tran[0].rva_original;
+    DWORD header = Min(header_transformed, header_original);
+
+    MappedRange mr = {};
+    mr.length = header;
+    mr.injected = header_transformed - header;
+    mr.removed = header_original - header;
+    mapping->push_back(mr);
+  }
+
+  // Convert the implied lengths to explicit lengths, and infer which content
+  // has been injected into the transformed image. Injected content is inferred
+  // as regions of the transformed address space that does not map back to
+  // known valid content in the original image.
+  for (size_t i = 0; i < tran2orig.size(); ++i) {
+    const OmapTranToOrig& o1 = tran2orig[i];
+
+    // This maps to content that is outside the original image, thus it
+    // describes injected content. We can skip this entry.
+    if (o1.rva_original >= omap_data.length_original)
+      continue;
+
+    // Calculate the length of the current OMAP entry. This is implicit as the
+    // distance between successive |rva| values, capped at the end of the
+    // original image.
+    DWORD length = 0;
+    if (i + 1 < tran2orig.size()) {
+      const OmapTranToOrig& o2 = tran2orig[i + 1];
+
+      // We expect the table to be sorted by rva_transformed.
+      assert(o1.rva_transformed <= o2.rva_transformed);
+
+      length = o2.rva_transformed - o1.rva_transformed;
+      if (o1.rva_original + length > omap_data.length_original) {
+        length = omap_data.length_original - o1.rva_original;
+      }
+    } else {
+      length = omap_data.length_original - o1.rva_original;
+    }
+
+    // Zero-length entries don't describe anything and can be ignored.
+    if (length == 0)
+      continue;
+
+    // Any gaps in the transformed address-space are due to injected content.
+    if (!mapping->empty()) {
+      MappedRange& prev_mr = mapping->back();
+      prev_mr.injected += o1.rva_transformed -
+          (prev_mr.rva_transformed + prev_mr.length);
+    }
+
+    MappedRange mr = {};
+    mr.rva_original = o1.rva_original;
+    mr.rva_transformed = o1.rva_transformed;
+    mr.length = length;
+    mapping->push_back(mr);
+  }
+
+  // Sort based on the original image addresses.
+  std::sort(mapping->begin(), mapping->end(), MappedRangeOriginalLess);
+
+  // Fill in the 'removed' lengths by looking for gaps in the coverage of the
+  // original address space.
+  FillInRemovedLengths(mapping);
+
+  return;
+}
+
+void BuildEndpointIndexMap(ImageMap* image_map) {
+  assert(image_map != NULL);
+
+  if (image_map->mapping.size() == 0)
+    return;
+
+  const Mapping& mapping = image_map->mapping;
+  EndpointIndexMap& eim = image_map->endpoint_index_map;
+
+  // Get the unique set of interval endpoints.
+  std::set<DWORD> endpoints;
+  for (size_t i = 0; i < mapping.size(); ++i) {
+    endpoints.insert(mapping[i].rva_original);
+    endpoints.insert(mapping[i].rva_original +
+                         mapping[i].length +
+                         mapping[i].removed);
+  }
+
+  // Use the endpoints to initialize the secondary search structure for the
+  // mapping.
+  eim.resize(endpoints.size());
+  std::set<DWORD>::const_iterator it = endpoints.begin();
+  for (size_t i = 0; it != endpoints.end(); ++it, ++i) {
+    eim[i].endpoint = *it;
+    eim[i].index = mapping.size();
+  }
+
+  // For each endpoint we want the smallest index of any interval containing
+  // it. We iterate over the intervals and update the indices associated with
+  // each interval endpoint contained in the current interval. In the general
+  // case of an arbitrary set of intervals this is O(n^2), but the structure of
+  // OMAP data makes this O(n).
+  for (size_t i = 0; i < mapping.size(); ++i) {
+    EndpointIndex ei1 = { mapping[i].rva_original, 0 };
+    EndpointIndexMap::iterator it1 = std::lower_bound(
+        eim.begin(), eim.end(), ei1, EndpointIndexLess);
+
+    EndpointIndex ei2 = { mapping[i].rva_original + mapping[i].length +
+                              mapping[i].removed, 0 };
+    EndpointIndexMap::iterator it2 = std::lower_bound(
+        eim.begin(), eim.end(), ei2, EndpointIndexLess);
+
+    for (; it1 != it2; ++it1)
+      it1->index = Min(i, it1->index);
+  }
+}
+
+// Clips the given mapped range.
+void ClipMappedRangeOriginal(const AddressRange& clip_range,
+                             MappedRange* mapped_range) {
+  assert(mapped_range != NULL);
+
+  // The clipping range is entirely outside of the mapped range.
+  if (clip_range.end() <= mapped_range->rva_original ||
+      mapped_range->rva_original + mapped_range->length +
+          mapped_range->removed <= clip_range.rva) {
+    mapped_range->length = 0;
+    mapped_range->injected = 0;
+    mapped_range->removed = 0;
+    return;
+  }
+
+  // Clip the left side.
+  if (mapped_range->rva_original < clip_range.rva) {
+    DWORD clip_left = clip_range.rva - mapped_range->rva_original;
+    mapped_range->rva_original += clip_left;
+    mapped_range->rva_transformed += clip_left;
+
+    if (clip_left > mapped_range->length) {
+      // The left clipping boundary entirely erases the content section of the
+      // range.
+      DWORD trim = clip_left - mapped_range->length;
+      mapped_range->length = 0;
+      mapped_range->injected -= Min(trim, mapped_range->injected);
+      // We know that trim <= mapped_range->remove.
+      mapped_range->removed -= trim;
+    } else {
+      // The left clipping boundary removes some, but not all, of the content.
+      // As such it leaves the removed/injected component intact.
+      mapped_range->length -= clip_left;
+    }
+  }
+
+  // Clip the right side.
+  DWORD end_original = mapped_range->rva_original + mapped_range->length;
+  if (clip_range.end() < end_original) {
+    // The right clipping boundary lands in the 'content' section of the range,
+    // entirely clearing the injected/removed portion.
+    DWORD clip_right = end_original - clip_range.end();
+    mapped_range->length -= clip_right;
+    mapped_range->injected = 0;
+    mapped_range->removed = 0;
+    return;
+  } else {
+    // The right clipping boundary is outside of the content, but may affect
+    // the removed/injected portion of the range.
+    DWORD end_removed = end_original + mapped_range->removed;
+    if (clip_range.end() < end_removed)
+      mapped_range->removed = clip_range.end() - end_original;
+
+    DWORD end_injected = end_original + mapped_range->injected;
+    if (clip_range.end() < end_injected)
+      mapped_range->injected = clip_range.end() - end_original;
+  }
+
+  return;
+}
+
+}  // namespace
+
+int AddressRange::Compare(const AddressRange& rhs) const {
+  if (end() <= rhs.rva)
+    return -1;
+  if (rhs.end() <= rva)
+    return 1;
+  return 0;
+}
+
+bool GetOmapDataAndDisableTranslation(IDiaSession* session,
+                                      OmapData* omap_data) {
+  assert(session != NULL);
+  assert(omap_data != NULL);
+
+  CComPtr<IDiaAddressMap> address_map;
+  if (FAILED(session->QueryInterface(&address_map))) {
+    fprintf(stderr, "IDiaSession::QueryInterface(IDiaAddressMap) failed\n");
+    return false;
+  }
+  assert(address_map.p != NULL);
+
+  BOOL omap_enabled = FALSE;
+  if (FAILED(address_map->get_addressMapEnabled(&omap_enabled))) {
+    fprintf(stderr, "IDiaAddressMap::get_addressMapEnabled failed\n");
+    return false;
+  }
+
+  if (!omap_enabled) {
+    // We indicate the non-presence of OMAP data by returning empty tables.
+    omap_data->omap_from.clear();
+    omap_data->omap_to.clear();
+    omap_data->length_original = 0;
+    return true;
+  }
+
+  // OMAP data is present. Disable translation.
+  if (FAILED(address_map->put_addressMapEnabled(FALSE))) {
+    fprintf(stderr, "IDiaAddressMap::put_addressMapEnabled failed\n");
+    return false;
+  }
+
+  // Read the OMAP streams.
+  if (!FindAndLoadOmapTable(kOmapFromDebugStreamName,
+                            session,
+                            &omap_data->omap_from)) {
+    return false;
+  }
+  if (!FindAndLoadOmapTable(kOmapToDebugStreamName,
+                            session,
+                            &omap_data->omap_to)) {
+    return false;
+  }
+
+  // Get the lengths of the address spaces.
+  if (!GetOriginalImageLength(session, &omap_data->length_original))
+    return false;
+
+  return true;
+}
+
+void BuildImageMap(const OmapData& omap_data, ImageMap* image_map) {
+  assert(image_map != NULL);
+
+  BuildMapping(omap_data, &image_map->mapping);
+  BuildEndpointIndexMap(image_map);
+}
+
+void MapAddressRange(const ImageMap& image_map,
+                     const AddressRange& original_range,
+                     AddressRangeVector* mapped_ranges) {
+  assert(mapped_ranges != NULL);
+
+  const Mapping& map = image_map.mapping;
+
+  // Handle the trivial case of an empty image_map. This means that there is
+  // no transformation to be applied, and we can simply return the original
+  // range.
+  if (map.empty()) {
+    mapped_ranges->push_back(original_range);
+    return;
+  }
+
+  // If we get a query of length 0 we need to handle it by using a non-zero
+  // query length.
+  AddressRange query_range(original_range);
+  if (query_range.length == 0)
+    query_range.length = 1;
+
+  // Find the range of intervals that can potentially intersect our query range.
+  size_t imin = 0;
+  size_t imax = 0;
+  {
+    // The index of the earliest possible range that can affect is us done by
+    // searching through the secondary indexing structure.
+    const EndpointIndexMap& eim = image_map.endpoint_index_map;
+    EndpointIndex q1 = { query_range.rva, 0 };
+    EndpointIndexMap::const_iterator it1 = std::lower_bound(
+        eim.begin(), eim.end(), q1, EndpointIndexLess);
+    if (it1 == eim.end()) {
+      imin  = map.size();
+    } else {
+      // Backup to find the interval that contains our query point.
+      if (it1 != eim.begin() && query_range.rva < it1->endpoint)
+        --it1;
+      imin = it1->index;
+    }
+
+    // The first range that can't possibly intersect us is found by searching
+    // through the image map directly as it is already sorted by interval start
+    // point.
+    MappedRange q2 = { query_range.end(), 0 };
+    Mapping::const_iterator it2 = std::lower_bound(
+        map.begin(), map.end(), q2, MappedRangeOriginalLess);
+    imax = it2 - map.begin();
+  }
+
+  // Find all intervals that intersect the query range.
+  Mapping temp_map;
+  for (size_t i = imin; i < imax; ++i) {
+    MappedRange mr = map[i];
+    ClipMappedRangeOriginal(query_range, &mr);
+    if (mr.length + mr.injected > 0)
+      temp_map.push_back(mr);
+  }
+
+  // If there are no intersecting ranges then the query range has been removed
+  // from the image in question.
+  if (temp_map.empty())
+    return;
+
+  // Sort based on transformed addresses.
+  std::sort(temp_map.begin(), temp_map.end(), MappedRangeMappedLess);
+
+  // Zero-length queries can't actually be merged. We simply output the set of
+  // unique RVAs that correspond to the query RVA.
+  if (original_range.length == 0) {
+    mapped_ranges->push_back(AddressRange(temp_map[0].rva_transformed, 0));
+    for (size_t i = 1; i < temp_map.size(); ++i) {
+      if (temp_map[i].rva_transformed > mapped_ranges->back().rva)
+        mapped_ranges->push_back(AddressRange(temp_map[i].rva_transformed, 0));
+    }
+    return;
+  }
+
+  // Merge any ranges that are consecutive in the mapped image. We merge over
+  // injected content if it makes ranges contiguous, but we ignore any injected
+  // content at the tail end of a range. This allows us to detect symbols that
+  // have been lengthened by injecting content in the middle. However, it
+  // misses the case where content has been injected at the head or the tail.
+  // The problem is that it doesn't know whether to attribute it to the
+  // preceding or following symbol. It is up to the author of the transform to
+  // output explicit OMAP info in these cases to ensure full coverage of the
+  // transformed address space.
+  DWORD rva_begin = temp_map[0].rva_transformed;
+  DWORD rva_cur_content = rva_begin + temp_map[0].length;
+  DWORD rva_cur_injected = rva_cur_content + temp_map[0].injected;
+  for (size_t i = 1; i < temp_map.size(); ++i) {
+    if (rva_cur_injected < temp_map[i].rva_transformed) {
+      // This marks the end of a continuous range in the image. Output the
+      // current range and start a new one.
+      if (rva_begin < rva_cur_content) {
+        mapped_ranges->push_back(
+            AddressRange(rva_begin, rva_cur_content - rva_begin));
+      }
+      rva_begin = temp_map[i].rva_transformed;
+    }
+
+    rva_cur_content = temp_map[i].rva_transformed + temp_map[i].length;
+    rva_cur_injected = rva_cur_content + temp_map[i].injected;
+  }
+
+  // Output the range in progress.
+  if (rva_begin < rva_cur_content) {
+    mapped_ranges->push_back(
+        AddressRange(rva_begin, rva_cur_content - rva_begin));
+  }
+
+  return;
+}
+
+}  // namespace google_breakpad
\ No newline at end of file
diff --git a/google-breakpad/src/common/windows/omap.h b/google-breakpad/src/common/windows/omap.h
new file mode 100644
index 0000000..bc293af
--- /dev/null
+++ b/google-breakpad/src/common/windows/omap.h
@@ -0,0 +1,72 @@
+// Copyright 2013 Google Inc. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Provides an API for mapping symbols through OMAP information, if a PDB file
+// is augmented with it. This allows breakpad to work with addresses in
+// transformed images by transforming the symbols themselves, rather than
+// transforming addresses prior to querying symbols (the way it is typically
+// done by Windows-native tools, including the DIA).
+
+#ifndef COMMON_WINDOWS_OMAP_H_
+#define COMMON_WINDOWS_OMAP_H_
+
+#include "common/windows/omap_internal.h"
+
+namespace google_breakpad {
+
+// If the given session contains OMAP data this extracts it, populating
+// |omap_data|, and then disabling automatic translation for the session.
+// OMAP data is present in the PDB if |omap_data| is not empty. This returns
+// true on success, false otherwise.
+bool GetOmapDataAndDisableTranslation(IDiaSession* dia_session,
+                                      OmapData* omap_data);
+
+// Given raw OMAP data builds an ImageMap. This can be used to query individual
+// image ranges using MapAddressRange.
+// |omap_data|| is the OMAP data extracted from the PDB.
+// |image_map| will be populated with a description of the image mapping. If
+//     |omap_data| is empty then this will also be empty.
+void BuildImageMap(const OmapData& omap_data, ImageMap* image_map);
+
+// Given an address range in the original image space determines how exactly it
+// has been tranformed.
+// |omap_data| is the OMAP data extracted from the PDB, which must not be
+//     empty.
+// |original_range| is the address range in the original image being queried.
+// |mapped_ranges| will be populated with a full description of the mapping.
+//     They may be disjoint in the transformed image so a vector is needed to
+//     fully represent the mapping. This will be appended to if it is not
+//     empty. If |omap_data| is empty then |mapped_ranges| will simply be
+//     populated with a copy of |original_range| (the identity transform).
+void MapAddressRange(const ImageMap& image_map,
+                     const AddressRange& original_range,
+                     AddressRangeVector* mapped_ranges);
+
+}  // namespace google_breakpad
+
+#endif  // COMMON_WINDOWS_OMAP_H_
diff --git a/google-breakpad/src/common/windows/omap_internal.h b/google-breakpad/src/common/windows/omap_internal.h
new file mode 100644
index 0000000..3f904d7
--- /dev/null
+++ b/google-breakpad/src/common/windows/omap_internal.h
@@ -0,0 +1,137 @@
+// Copyright 2013 Google Inc. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Declares internal implementation details for functionality in omap.h and
+// omap.cc.
+
+#ifndef COMMON_WINDOWS_OMAP_INTERNAL_H_
+#define COMMON_WINDOWS_OMAP_INTERNAL_H_
+
+#include <windows.h>
+#include <dia2.h>
+
+#include <vector>
+
+namespace google_breakpad {
+
+// The OMAP struct is defined by debughlp.h, which doesn't play nicely with
+// imagehlp.h. We simply redefine it.
+struct OMAP {
+  DWORD rva;
+  DWORD rvaTo;
+};
+static_assert(sizeof(OMAP) == 8, "Wrong size for OMAP structure.");
+typedef std::vector<OMAP> OmapTable;
+
+// This contains the OMAP data extracted from an image.
+struct OmapData {
+  // The table of OMAP entries describing the transformation from the
+  // original image to the transformed image.
+  OmapTable omap_from;  
+  // The table of OMAP entries describing the transformation from the
+  // instrumented image to the original image.
+  OmapTable omap_to;
+  // The length of the original untransformed image.
+  DWORD length_original;
+
+  OmapData() : length_original(0) { }
+};
+
+// This represents a range of addresses in an image.
+struct AddressRange {
+  DWORD rva;
+  DWORD length;
+
+  AddressRange() : rva(0), length(0) { }
+  AddressRange(DWORD rva, DWORD length) : rva(rva), length(length) { }
+
+  // Returns the end address of this range.
+  DWORD end() const { return rva + length; }
+
+  // Addreses only compare as less-than or greater-than if they are not
+  // overlapping. Otherwise, they compare equal.
+  int Compare(const AddressRange& rhs) const;
+  bool operator<(const AddressRange& rhs) const { return Compare(rhs) == -1; }
+  bool operator>(const AddressRange& rhs) const { return Compare(rhs) == 1; }
+
+  // Equality operators compare exact values.
+  bool operator==(const AddressRange& rhs) const {
+    return rva == rhs.rva && length == rhs.length;
+  }
+  bool operator!=(const  AddressRange& rhs) const { return !((*this) == rhs); }
+};
+
+typedef std::vector<AddressRange> AddressRangeVector;
+
+// This represents an address range in an original image, and its corresponding
+// range in the transformed image.
+struct MappedRange {
+  // An address in the original image.
+  DWORD rva_original;
+  // The corresponding addresses in the transformed image.
+  DWORD rva_transformed;
+  // The length of the address range.
+  DWORD length;
+  // It is possible for code to be injected into a transformed image, for which
+  // there is no corresponding code in the original image. If this range of
+  // transformed image is immediately followed by such injected code we maintain
+  // a record of its length here.
+  DWORD injected;
+  // It is possible for code to be removed from the original image. This happens
+  // for things like padding between blocks. There is no actual content lost,
+  // but the spacing between items may be lost. This keeps track of any removed
+  // content immediately following the |original| range.
+  DWORD removed;
+};
+// A vector of mapped ranges is used as a more useful representation of
+// OMAP data.
+typedef std::vector<MappedRange> Mapping;
+
+// Used as a secondary search structure accompanying a Mapping.
+struct EndpointIndex {
+  DWORD endpoint;
+  size_t index;
+};
+typedef std::vector<EndpointIndex> EndpointIndexMap;
+
+// An ImageMap is vector of mapped ranges, plus a secondary index into it for
+// doing interval searches. (An interval tree would also work, but is overkill
+// because we don't need insertion and deletion.)
+struct ImageMap {
+  // This is a description of the mapping between original and transformed
+  // image, sorted by addresses in the original image.
+  Mapping mapping;
+  // For all interval endpoints in |mapping| this stores the minimum index of
+  // an interval in |mapping| that contains the endpoint. Useful for doing
+  // interval intersection queries.
+  EndpointIndexMap endpoint_index_map;
+};
+
+}  // namespace google_breakpad
+
+#endif  // COMMON_WINDOWS_OMAP_INTERNAL_H_
diff --git a/google-breakpad/src/common/windows/omap_unittest.cc b/google-breakpad/src/common/windows/omap_unittest.cc
new file mode 100644
index 0000000..960a33f
--- /dev/null
+++ b/google-breakpad/src/common/windows/omap_unittest.cc
@@ -0,0 +1,330 @@
+// Copyright 2013 Google Inc. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Unittests for OMAP related functions.
+
+#include "common/windows/omap.h"
+
+#include "gmock/gmock.h"
+#include "gtest/gtest.h"
+
+namespace google_breakpad {
+
+// Equality operators for ContainerEq. These must be outside of the anonymous
+// namespace in order for them to be found.
+bool operator==(const MappedRange& mr1, const MappedRange& mr2) {
+  return mr1.rva_original == mr2.rva_original &&
+      mr1.rva_transformed == mr2.rva_transformed &&
+      mr1.length == mr2.length &&
+      mr1.injected == mr2.injected &&
+      mr1.removed == mr2.removed;
+}
+bool operator==(const EndpointIndex& ei1, const EndpointIndex& ei2) {
+  return ei1.endpoint == ei2.endpoint && ei1.index == ei2.index;
+}
+
+// Pretty printers for more meaningful error messages. Also need to be outside
+// the anonymous namespace.
+std::ostream& operator<<(std::ostream& os, const MappedRange& mr) {
+  os << "MappedRange(rva_original=" << mr.rva_original
+     << ", rva_transformed=" << mr.rva_transformed
+     << ", length=" << mr.length
+     << ", injected=" << mr.injected
+     << ", removed=" << mr.removed << ")";
+  return os;
+}
+std::ostream& operator<<(std::ostream& os, const EndpointIndex& ei) {
+  os << "EndpointIndex(endpoint=" << ei.endpoint
+     << ", index=" << ei.index << ")";
+  return os;
+}
+std::ostream& operator<<(std::ostream& os, const AddressRange& ar) {
+  os << "AddressRange(rva=" << ar.rva << ", length=" << ar.length << ")";
+  return os;
+}
+
+namespace {
+
+OMAP CreateOmap(DWORD rva, DWORD rvaTo) {
+  OMAP o = { rva, rvaTo };
+  return o;
+}
+
+MappedRange CreateMappedRange(DWORD rva_original,
+                              DWORD rva_transformed,
+                              DWORD length,
+                              DWORD injected,
+                              DWORD removed) {
+  MappedRange mr = { rva_original, rva_transformed, length, injected, removed };
+  return mr;
+}
+
+EndpointIndex CreateEndpointIndex(DWORD endpoint, size_t index) {
+  EndpointIndex ei = { endpoint, index };
+  return ei;
+}
+
+//              (C is removed)
+// Original   :  A B C D E F G H
+// Transformed:  A B D F E * H1 G1 G2 H2
+//              (* is injected, G is copied, H is split)
+// A is implied.
+
+// Layout of the original image.
+const AddressRange B(100, 15);
+const AddressRange C(B.end(), 10);
+const AddressRange D(C.end(), 25);
+const AddressRange E(D.end(), 10);
+const AddressRange F(E.end(), 40);
+const AddressRange G(F.end(), 3);
+const AddressRange H(G.end(), 7);
+
+// Layout of the transformed image.
+const AddressRange Bt(100, 15);
+const AddressRange Dt(Bt.end(), 20);  // D is shortened.
+const AddressRange Ft(Dt.end(), F.length);
+const AddressRange Et(Ft.end(), E.length);
+const AddressRange injected(Et.end(), 5);
+const AddressRange H1t(injected.end(), 4);  // H is split.
+const AddressRange G1t(H1t.end(), G.length);  // G is copied.
+const AddressRange G2t(G1t.end(), G.length);  // G is copied.
+const AddressRange H2t(G2t.end(), 3);  // H is split.
+
+class BuildImageMapTest : public testing::Test {
+ public:
+  static const DWORD kInvalidAddress = 0xFFFFFFFF;
+
+  void InitOmapData() {
+    omap_data.length_original = H.end();
+
+    // Build the OMAPTO vector (from transformed to original).
+    omap_data.omap_to.push_back(CreateOmap(Bt.rva, B.rva));
+    omap_data.omap_to.push_back(CreateOmap(Dt.rva, D.rva));
+    omap_data.omap_to.push_back(CreateOmap(Ft.rva, F.rva));
+    omap_data.omap_to.push_back(CreateOmap(Et.rva, E.rva));
+    omap_data.omap_to.push_back(CreateOmap(injected.rva, kInvalidAddress));
+    omap_data.omap_to.push_back(CreateOmap(H1t.rva, H.rva));
+    omap_data.omap_to.push_back(CreateOmap(G1t.rva, G.rva));
+    omap_data.omap_to.push_back(CreateOmap(G2t.rva, G.rva));
+    omap_data.omap_to.push_back(CreateOmap(H2t.rva, H.rva + H1t.length));
+    omap_data.omap_to.push_back(CreateOmap(H2t.end(), kInvalidAddress));
+
+    // Build the OMAPFROM vector (from original to transformed).
+    omap_data.omap_from.push_back(CreateOmap(B.rva, Bt.rva));
+    omap_data.omap_from.push_back(CreateOmap(C.rva, kInvalidAddress));
+    omap_data.omap_from.push_back(CreateOmap(D.rva, Dt.rva));
+    omap_data.omap_from.push_back(CreateOmap(E.rva, Et.rva));
+    omap_data.omap_from.push_back(CreateOmap(F.rva, Ft.rva));
+    omap_data.omap_from.push_back(CreateOmap(G.rva, G1t.rva));
+    omap_data.omap_from.push_back(CreateOmap(H.rva, H1t.rva));
+    omap_data.omap_from.push_back(CreateOmap(H.rva + H1t.length, H2t.rva));
+    omap_data.omap_from.push_back(CreateOmap(H.end(), kInvalidAddress));
+  }
+
+  OmapData omap_data;
+};
+
+}  // namespace
+
+TEST_F(BuildImageMapTest, EmptyImageMapOnEmptyOmapData) {
+  ASSERT_EQ(0u, omap_data.omap_from.size());
+  ASSERT_EQ(0u, omap_data.omap_to.size());
+  ASSERT_EQ(0u, omap_data.length_original);
+
+  ImageMap image_map;
+  BuildImageMap(omap_data, &image_map);
+  EXPECT_EQ(0u, image_map.mapping.size());
+  EXPECT_EQ(0u, image_map.endpoint_index_map.size());
+}
+
+TEST_F(BuildImageMapTest, ImageMapIsCorrect) {
+  InitOmapData();
+  ASSERT_LE(0u, omap_data.omap_from.size());
+  ASSERT_LE(0u, omap_data.omap_to.size());
+  ASSERT_LE(0u, omap_data.length_original);
+
+  ImageMap image_map;
+  BuildImageMap(omap_data, &image_map);
+  EXPECT_LE(9u, image_map.mapping.size());
+  EXPECT_LE(9u, image_map.endpoint_index_map.size());
+
+  Mapping mapping;
+  mapping.push_back(CreateMappedRange(0, 0, B.rva, 0, 0));
+  // C is removed, and it originally comes immediately after B.
+  mapping.push_back(CreateMappedRange(B.rva, Bt.rva, B.length, 0, C.length));
+  // D is shortened by a length of 5.
+  mapping.push_back(CreateMappedRange(D.rva, Dt.rva, Dt.length, 0, 5));
+  // The injected content comes immediately after E in the transformed image.
+  mapping.push_back(CreateMappedRange(E.rva, Et.rva, E.length, injected.length,
+                                      0));
+  mapping.push_back(CreateMappedRange(F.rva, Ft.rva, F.length, 0, 0));
+  // G is copied so creates two entries.
+  mapping.push_back(CreateMappedRange(G.rva, G1t.rva, G.length, 0, 0));
+  mapping.push_back(CreateMappedRange(G.rva, G2t.rva, G.length, 0, 0));
+  // H is split, so create two entries.
+  mapping.push_back(CreateMappedRange(H.rva, H1t.rva, H1t.length, 0, 0));
+  mapping.push_back(CreateMappedRange(H.rva + H1t.length, H2t.rva, H2t.length,
+                                      0, 0));
+  EXPECT_THAT(mapping,
+              testing::ContainerEq(image_map.mapping));
+
+  EndpointIndexMap endpoint_index_map;
+  endpoint_index_map.push_back(CreateEndpointIndex(0, 0));
+  endpoint_index_map.push_back(CreateEndpointIndex(B.rva, 1));
+  endpoint_index_map.push_back(CreateEndpointIndex(D.rva, 2));
+  endpoint_index_map.push_back(CreateEndpointIndex(E.rva, 3));
+  endpoint_index_map.push_back(CreateEndpointIndex(F.rva, 4));
+  // G is duplicated so 2 ranges map back to it, hence the skip from 5 to 7.
+  endpoint_index_map.push_back(CreateEndpointIndex(G.rva, 5));
+  // H is split so we expect 2 endpoints to show up attributed to it.
+  endpoint_index_map.push_back(CreateEndpointIndex(H.rva, 7));
+  endpoint_index_map.push_back(CreateEndpointIndex(H.rva + H1t.length, 8));
+  endpoint_index_map.push_back(CreateEndpointIndex(H.end(), 9));
+  EXPECT_THAT(endpoint_index_map,
+              testing::ContainerEq(image_map.endpoint_index_map));
+}
+
+namespace {
+
+class MapAddressRangeTest : public BuildImageMapTest {
+ public:
+  typedef BuildImageMapTest Super;
+  virtual void SetUp() {
+    Super::SetUp();
+    InitOmapData();
+    BuildImageMap(omap_data, &image_map);
+  }
+
+  ImageMap image_map;
+
+ private:
+  using BuildImageMapTest::InitOmapData;
+  using BuildImageMapTest::omap_data;
+};
+
+}  // namespace
+
+TEST_F(MapAddressRangeTest, EmptyImageMapReturnsIdentity) {
+  ImageMap im;
+  AddressRangeVector mapped_ranges;
+  AddressRange ar(0, 1024);
+  MapAddressRange(im, ar, &mapped_ranges);
+  EXPECT_EQ(1u, mapped_ranges.size());
+  EXPECT_EQ(ar, mapped_ranges[0]);
+}
+
+TEST_F(MapAddressRangeTest, MapOutOfImage) {
+  AddressRangeVector mapped_ranges;
+  MapAddressRange(image_map, AddressRange(H.end() + 10, 10), &mapped_ranges);
+  EXPECT_EQ(0u, mapped_ranges.size());
+}
+
+TEST_F(MapAddressRangeTest, MapIdentity) {
+  AddressRangeVector mapped_ranges;
+  MapAddressRange(image_map, B, &mapped_ranges);
+  EXPECT_EQ(1u, mapped_ranges.size());
+  EXPECT_THAT(mapped_ranges, testing::ElementsAre(B));
+}
+
+TEST_F(MapAddressRangeTest, MapReorderedContiguous) {
+  AddressRangeVector mapped_ranges;
+
+  AddressRange DEF(D.rva, F.end() - D.rva);
+  MapAddressRange(image_map, DEF, &mapped_ranges);
+  EXPECT_EQ(1u, mapped_ranges.size());
+
+  AddressRange DFEt(Dt.rva, Et.end() - Dt.rva);
+  EXPECT_THAT(mapped_ranges, testing::ElementsAre(DFEt));
+}
+
+TEST_F(MapAddressRangeTest, MapEmptySingle) {
+  AddressRangeVector mapped_ranges;
+  MapAddressRange(image_map, AddressRange(D.rva, 0), &mapped_ranges);
+  EXPECT_EQ(1u, mapped_ranges.size());
+  EXPECT_THAT(mapped_ranges, testing::ElementsAre(AddressRange(Dt.rva, 0)));
+}
+
+TEST_F(MapAddressRangeTest, MapEmptyCopied) {
+  AddressRangeVector mapped_ranges;
+  MapAddressRange(image_map, AddressRange(G.rva, 0), &mapped_ranges);
+  EXPECT_EQ(2u, mapped_ranges.size());
+  EXPECT_THAT(mapped_ranges, testing::ElementsAre(AddressRange(G1t.rva, 0),
+                                                  AddressRange(G2t.rva, 0)));
+}
+
+TEST_F(MapAddressRangeTest, MapCopiedContiguous) {
+  AddressRangeVector mapped_ranges;
+  MapAddressRange(image_map, G, &mapped_ranges);
+  EXPECT_EQ(1u, mapped_ranges.size());
+  EXPECT_THAT(mapped_ranges, testing::ElementsAre(
+      AddressRange(G1t.rva, G2t.end() - G1t.rva)));
+}
+
+TEST_F(MapAddressRangeTest, MapSplitDiscontiguous) {
+  AddressRangeVector mapped_ranges;
+  MapAddressRange(image_map, H, &mapped_ranges);
+  EXPECT_EQ(2u, mapped_ranges.size());
+  EXPECT_THAT(mapped_ranges, testing::ElementsAre(H1t, H2t));
+}
+
+TEST_F(MapAddressRangeTest, MapInjected) {
+  AddressRangeVector mapped_ranges;
+
+  AddressRange EFGH(E.rva, H.end() - E.rva);
+  MapAddressRange(image_map, EFGH, &mapped_ranges);
+  EXPECT_EQ(1u, mapped_ranges.size());
+
+  AddressRange FEHGGHt(Ft.rva, H2t.end() - Ft.rva);
+  EXPECT_THAT(mapped_ranges, testing::ElementsAre(FEHGGHt));
+}
+
+TEST_F(MapAddressRangeTest, MapRemovedEntirely) {
+  AddressRangeVector mapped_ranges;
+  MapAddressRange(image_map, C, &mapped_ranges);
+  EXPECT_EQ(0u, mapped_ranges.size());
+}
+
+TEST_F(MapAddressRangeTest, MapRemovedPartly) {
+  AddressRangeVector mapped_ranges;
+  MapAddressRange(image_map, D, &mapped_ranges);
+  EXPECT_EQ(1u, mapped_ranges.size());
+  EXPECT_THAT(mapped_ranges, testing::ElementsAre(Dt));
+}
+
+TEST_F(MapAddressRangeTest, MapFull) {
+  AddressRangeVector mapped_ranges;
+
+  AddressRange AH(0, H.end());
+  MapAddressRange(image_map, AH, &mapped_ranges);
+  EXPECT_EQ(1u, mapped_ranges.size());
+
+  AddressRange AHt(0, H2t.end());
+  EXPECT_THAT(mapped_ranges, testing::ElementsAre(AHt));
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/common/windows/pdb_source_line_writer.cc b/google-breakpad/src/common/windows/pdb_source_line_writer.cc
new file mode 100644
index 0000000..a3213dc
--- /dev/null
+++ b/google-breakpad/src/common/windows/pdb_source_line_writer.cc
@@ -0,0 +1,1325 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include "common/windows/pdb_source_line_writer.h"
+
+#include <windows.h>
+#include <winnt.h>
+#include <atlbase.h>
+#include <dia2.h>
+#include <ImageHlp.h>
+#include <stdio.h>
+
+#include <limits>
+#include <set>
+
+#include "common/windows/dia_util.h"
+#include "common/windows/guid_string.h"
+#include "common/windows/string_utils-inl.h"
+
+// This constant may be missing from DbgHelp.h.  See the documentation for
+// IDiaSymbol::get_undecoratedNameEx.
+#ifndef UNDNAME_NO_ECSU
+#define UNDNAME_NO_ECSU 0x8000  // Suppresses enum/class/struct/union.
+#endif  // UNDNAME_NO_ECSU
+
+/*
+ * Not defined in WinNT.h for some reason. Definitions taken from:
+ * http://uninformed.org/index.cgi?v=4&a=1&p=13
+ *
+ */
+typedef unsigned char UBYTE;
+
+#if !defined(_WIN64)
+#define UNW_FLAG_EHANDLER  0x01
+#define UNW_FLAG_UHANDLER  0x02
+#define UNW_FLAG_CHAININFO 0x04
+#endif
+
+union UnwindCode {
+  struct {
+    UBYTE offset_in_prolog;
+    UBYTE unwind_operation_code : 4;
+    UBYTE operation_info        : 4;
+  };
+  USHORT frame_offset;
+};
+
+enum UnwindOperationCodes {
+  UWOP_PUSH_NONVOL = 0, /* info == register number */
+  UWOP_ALLOC_LARGE,     /* no info, alloc size in next 2 slots */
+  UWOP_ALLOC_SMALL,     /* info == size of allocation / 8 - 1 */
+  UWOP_SET_FPREG,       /* no info, FP = RSP + UNWIND_INFO.FPRegOffset*16 */
+  UWOP_SAVE_NONVOL,     /* info == register number, offset in next slot */
+  UWOP_SAVE_NONVOL_FAR, /* info == register number, offset in next 2 slots */
+  // XXX: these are missing from MSDN!
+  // See: http://www.osronline.com/ddkx/kmarch/64bitamd_4rs7.htm
+  UWOP_SAVE_XMM,
+  UWOP_SAVE_XMM_FAR,
+  UWOP_SAVE_XMM128,     /* info == XMM reg number, offset in next slot */
+  UWOP_SAVE_XMM128_FAR, /* info == XMM reg number, offset in next 2 slots */
+  UWOP_PUSH_MACHFRAME   /* info == 0: no error-code, 1: error-code */
+};
+
+// See: http://msdn.microsoft.com/en-us/library/ddssxxy8.aspx
+// Note: some fields removed as we don't use them.
+struct UnwindInfo {
+  UBYTE version       : 3;
+  UBYTE flags         : 5;
+  UBYTE size_of_prolog;
+  UBYTE count_of_codes;
+  UBYTE frame_register : 4;
+  UBYTE frame_offset   : 4;
+  UnwindCode unwind_code[1];
+};
+
+namespace google_breakpad {
+
+namespace {
+
+using std::vector;
+
+// A helper class to scope a PLOADED_IMAGE.
+class AutoImage {
+ public:
+  explicit AutoImage(PLOADED_IMAGE img) : img_(img) {}
+  ~AutoImage() {
+    if (img_)
+      ImageUnload(img_);
+  }
+
+  operator PLOADED_IMAGE() { return img_; }
+  PLOADED_IMAGE operator->() { return img_; }
+
+ private:
+  PLOADED_IMAGE img_;
+};
+
+}  // namespace
+
+PDBSourceLineWriter::PDBSourceLineWriter() : output_(NULL) {
+}
+
+PDBSourceLineWriter::~PDBSourceLineWriter() {
+}
+
+bool PDBSourceLineWriter::SetCodeFile(const wstring &exe_file) {
+  if (code_file_.empty()) {
+    code_file_ = exe_file;
+    return true;
+  }
+  // Setting a different code file path is an error.  It is success only if the
+  // file paths are the same.
+  return exe_file == code_file_;
+}
+
+bool PDBSourceLineWriter::Open(const wstring &file, FileFormat format) {
+  Close();
+  code_file_.clear();
+
+  if (FAILED(CoInitialize(NULL))) {
+    fprintf(stderr, "CoInitialize failed\n");
+    return false;
+  }
+
+  CComPtr<IDiaDataSource> data_source;
+  if (FAILED(data_source.CoCreateInstance(CLSID_DiaSource))) {
+    const int kGuidSize = 64;
+    wchar_t classid[kGuidSize] = {0};
+    StringFromGUID2(CLSID_DiaSource, classid, kGuidSize);
+    // vc80 uses bce36434-2c24-499e-bf49-8bd99b0eeb68.
+    // vc90 uses 4C41678E-887B-4365-A09E-925D28DB33C2.
+    // vc100 uses B86AE24D-BF2F-4AC9-B5A2-34B14E4CE11D.
+    fprintf(stderr, "CoCreateInstance CLSID_DiaSource %S failed "
+            "(msdia*.dll unregistered?)\n", classid);
+    return false;
+  }
+
+  switch (format) {
+    case PDB_FILE:
+      if (FAILED(data_source->loadDataFromPdb(file.c_str()))) {
+        fprintf(stderr, "loadDataFromPdb failed for %ws\n", file.c_str());
+        return false;
+      }
+      break;
+    case EXE_FILE:
+      if (FAILED(data_source->loadDataForExe(file.c_str(), NULL, NULL))) {
+        fprintf(stderr, "loadDataForExe failed for %ws\n", file.c_str());
+        return false;
+      }
+      code_file_ = file;
+      break;
+    case ANY_FILE:
+      if (FAILED(data_source->loadDataFromPdb(file.c_str()))) {
+        if (FAILED(data_source->loadDataForExe(file.c_str(), NULL, NULL))) {
+          fprintf(stderr, "loadDataForPdb and loadDataFromExe failed for %ws\n",
+                  file.c_str());
+          return false;
+        }
+        code_file_ = file;
+      }
+      break;
+    default:
+      fprintf(stderr, "Unknown file format\n");
+      return false;
+  }
+
+  if (FAILED(data_source->openSession(&session_))) {
+    fprintf(stderr, "openSession failed\n");
+  }
+
+  return true;
+}
+
+bool PDBSourceLineWriter::PrintLines(IDiaEnumLineNumbers *lines) {
+  // The line number format is:
+  // <rva> <line number> <source file id>
+  CComPtr<IDiaLineNumber> line;
+  ULONG count;
+
+  while (SUCCEEDED(lines->Next(1, &line, &count)) && count == 1) {
+    DWORD rva;
+    if (FAILED(line->get_relativeVirtualAddress(&rva))) {
+      fprintf(stderr, "failed to get line rva\n");
+      return false;
+    }
+
+    DWORD length;
+    if (FAILED(line->get_length(&length))) {
+      fprintf(stderr, "failed to get line code length\n");
+      return false;
+    }
+
+    DWORD dia_source_id;
+    if (FAILED(line->get_sourceFileId(&dia_source_id))) {
+      fprintf(stderr, "failed to get line source file id\n");
+      return false;
+    }
+    // duplicate file names are coalesced to share one ID
+    DWORD source_id = GetRealFileID(dia_source_id);
+
+    DWORD line_num;
+    if (FAILED(line->get_lineNumber(&line_num))) {
+      fprintf(stderr, "failed to get line number\n");
+      return false;
+    }
+
+    AddressRangeVector ranges;
+    MapAddressRange(image_map_, AddressRange(rva, length), &ranges);
+    for (size_t i = 0; i < ranges.size(); ++i) {
+      fprintf(output_, "%x %x %d %d\n", ranges[i].rva, ranges[i].length,
+              line_num, source_id);
+    }
+    line.Release();
+  }
+  return true;
+}
+
+bool PDBSourceLineWriter::PrintFunction(IDiaSymbol *function,
+                                        IDiaSymbol *block) {
+  // The function format is:
+  // FUNC <address> <length> <param_stack_size> <function>
+  DWORD rva;
+  if (FAILED(block->get_relativeVirtualAddress(&rva))) {
+    fprintf(stderr, "couldn't get rva\n");
+    return false;
+  }
+
+  ULONGLONG length;
+  if (FAILED(block->get_length(&length))) {
+    fprintf(stderr, "failed to get function length\n");
+    return false;
+  }
+
+  if (length == 0) {
+    // Silently ignore zero-length functions, which can infrequently pop up.
+    return true;
+  }
+
+  CComBSTR name;
+  int stack_param_size;
+  if (!GetSymbolFunctionName(function, &name, &stack_param_size)) {
+    return false;
+  }
+
+  // If the decorated name didn't give the parameter size, try to
+  // calculate it.
+  if (stack_param_size < 0) {
+    stack_param_size = GetFunctionStackParamSize(function);
+  }
+
+  AddressRangeVector ranges;
+  MapAddressRange(image_map_, AddressRange(rva, static_cast<DWORD>(length)),
+                  &ranges);
+  for (size_t i = 0; i < ranges.size(); ++i) {
+    fprintf(output_, "FUNC %x %x %x %ws\n",
+            ranges[i].rva, ranges[i].length, stack_param_size, name);
+  }
+
+  CComPtr<IDiaEnumLineNumbers> lines;
+  if (FAILED(session_->findLinesByRVA(rva, DWORD(length), &lines))) {
+    return false;
+  }
+
+  if (!PrintLines(lines)) {
+    return false;
+  }
+  return true;
+}
+
+bool PDBSourceLineWriter::PrintSourceFiles() {
+  CComPtr<IDiaSymbol> global;
+  if (FAILED(session_->get_globalScope(&global))) {
+    fprintf(stderr, "get_globalScope failed\n");
+    return false;
+  }
+
+  CComPtr<IDiaEnumSymbols> compilands;
+  if (FAILED(global->findChildren(SymTagCompiland, NULL,
+                                  nsNone, &compilands))) {
+    fprintf(stderr, "findChildren failed\n");
+    return false;
+  }
+
+  CComPtr<IDiaSymbol> compiland;
+  ULONG count;
+  while (SUCCEEDED(compilands->Next(1, &compiland, &count)) && count == 1) {
+    CComPtr<IDiaEnumSourceFiles> source_files;
+    if (FAILED(session_->findFile(compiland, NULL, nsNone, &source_files))) {
+      return false;
+    }
+    CComPtr<IDiaSourceFile> file;
+    while (SUCCEEDED(source_files->Next(1, &file, &count)) && count == 1) {
+      DWORD file_id;
+      if (FAILED(file->get_uniqueId(&file_id))) {
+        return false;
+      }
+
+      CComBSTR file_name;
+      if (FAILED(file->get_fileName(&file_name))) {
+        return false;
+      }
+
+      wstring file_name_string(file_name);
+      if (!FileIDIsCached(file_name_string)) {
+        // this is a new file name, cache it and output a FILE line.
+        CacheFileID(file_name_string, file_id);
+        fwprintf(output_, L"FILE %d %s\n", file_id, file_name);
+      } else {
+        // this file name has already been seen, just save this
+        // ID for later lookup.
+        StoreDuplicateFileID(file_name_string, file_id);
+      }
+      file.Release();
+    }
+    compiland.Release();
+  }
+  return true;
+}
+
+bool PDBSourceLineWriter::PrintFunctions() {
+  ULONG count = 0;
+  DWORD rva = 0;
+  CComPtr<IDiaSymbol> global;
+  HRESULT hr;
+
+  if (FAILED(session_->get_globalScope(&global))) {
+    fprintf(stderr, "get_globalScope failed\n");
+    return false;
+  }
+
+  CComPtr<IDiaEnumSymbols> symbols = NULL;
+
+  // Find all function symbols first.
+  std::set<DWORD> rvas;
+  hr = global->findChildren(SymTagFunction, NULL, nsNone, &symbols);
+
+  if (SUCCEEDED(hr)) {
+    CComPtr<IDiaSymbol> symbol = NULL;
+
+    while (SUCCEEDED(symbols->Next(1, &symbol, &count)) && count == 1) {
+      if (SUCCEEDED(symbol->get_relativeVirtualAddress(&rva))) {
+        // To maintain existing behavior of one symbol per address, place the
+        // rva onto a set here to uniquify them.
+        rvas.insert(rva);
+      } else {
+        fprintf(stderr, "get_relativeVirtualAddress failed on the symbol\n");
+        return false;
+      }
+
+      symbol.Release();
+    }
+
+    symbols.Release();
+  }
+
+  // Find all public symbols.  Store public symbols that are not also private
+  // symbols for later.
+  std::set<DWORD> public_only_rvas;
+  hr = global->findChildren(SymTagPublicSymbol, NULL, nsNone, &symbols);
+
+  if (SUCCEEDED(hr)) {
+    CComPtr<IDiaSymbol> symbol = NULL;
+
+    while (SUCCEEDED(symbols->Next(1, &symbol, &count)) && count == 1) {
+      if (SUCCEEDED(symbol->get_relativeVirtualAddress(&rva))) {
+        if (rvas.count(rva) == 0) {
+          rvas.insert(rva); // Keep symbols in rva order.
+          public_only_rvas.insert(rva);
+        }
+      } else {
+        fprintf(stderr, "get_relativeVirtualAddress failed on the symbol\n");
+        return false;
+      }
+
+      symbol.Release();
+    }
+
+    symbols.Release();
+  }
+
+  std::set<DWORD>::iterator it;
+
+  // For each rva, dump the first symbol DIA knows about at the address.
+  for (it = rvas.begin(); it != rvas.end(); ++it) {
+    CComPtr<IDiaSymbol> symbol = NULL;
+    // If the symbol is not in the public list, look for SymTagFunction. This is
+    // a workaround to a bug where DIA will hang if searching for a private
+    // symbol at an address where only a public symbol exists.
+    // See http://connect.microsoft.com/VisualStudio/feedback/details/722366
+    if (public_only_rvas.count(*it) == 0) {
+      if (SUCCEEDED(session_->findSymbolByRVA(*it, SymTagFunction, &symbol))) {
+        // Sometimes findSymbolByRVA returns S_OK, but NULL.
+        if (symbol) {
+          if (!PrintFunction(symbol, symbol))
+            return false;
+          symbol.Release();
+        }
+      } else {
+        fprintf(stderr, "findSymbolByRVA SymTagFunction failed\n");
+        return false;
+      }
+    } else if (SUCCEEDED(session_->findSymbolByRVA(*it,
+                                                   SymTagPublicSymbol,
+                                                   &symbol))) {
+      // Sometimes findSymbolByRVA returns S_OK, but NULL.
+      if (symbol) {
+        if (!PrintCodePublicSymbol(symbol))
+          return false;
+        symbol.Release();
+      }
+    } else {
+      fprintf(stderr, "findSymbolByRVA SymTagPublicSymbol failed\n");
+      return false;
+    }
+  }
+
+  // When building with PGO, the compiler can split functions into
+  // "hot" and "cold" blocks, and move the "cold" blocks out to separate
+  // pages, so the function can be noncontiguous. To find these blocks,
+  // we have to iterate over all the compilands, and then find blocks
+  // that are children of them. We can then find the lexical parents
+  // of those blocks and print out an extra FUNC line for blocks
+  // that are not contained in their parent functions.
+  CComPtr<IDiaEnumSymbols> compilands;
+  if (FAILED(global->findChildren(SymTagCompiland, NULL,
+                                  nsNone, &compilands))) {
+    fprintf(stderr, "findChildren failed on the global\n");
+    return false;
+  }
+
+  CComPtr<IDiaSymbol> compiland;
+  while (SUCCEEDED(compilands->Next(1, &compiland, &count)) && count == 1) {
+    CComPtr<IDiaEnumSymbols> blocks;
+    if (FAILED(compiland->findChildren(SymTagBlock, NULL,
+                                       nsNone, &blocks))) {
+      fprintf(stderr, "findChildren failed on a compiland\n");
+      return false;
+    }
+
+    CComPtr<IDiaSymbol> block;
+    while (SUCCEEDED(blocks->Next(1, &block, &count)) && count == 1) {
+      // find this block's lexical parent function
+      CComPtr<IDiaSymbol> parent;
+      DWORD tag;
+      if (SUCCEEDED(block->get_lexicalParent(&parent)) &&
+          SUCCEEDED(parent->get_symTag(&tag)) &&
+          tag == SymTagFunction) {
+        // now get the block's offset and the function's offset and size,
+        // and determine if the block is outside of the function
+        DWORD func_rva, block_rva;
+        ULONGLONG func_length;
+        if (SUCCEEDED(block->get_relativeVirtualAddress(&block_rva)) &&
+            SUCCEEDED(parent->get_relativeVirtualAddress(&func_rva)) &&
+            SUCCEEDED(parent->get_length(&func_length))) {
+          if (block_rva < func_rva || block_rva > (func_rva + func_length)) {
+            if (!PrintFunction(parent, block)) {
+              return false;
+            }
+          }
+        }
+      }
+      parent.Release();
+      block.Release();
+    }
+    blocks.Release();
+    compiland.Release();
+  }
+
+  global.Release();
+  return true;
+}
+
+#undef max
+
+bool PDBSourceLineWriter::PrintFrameDataUsingPDB() {
+  // It would be nice if it were possible to output frame data alongside the
+  // associated function, as is done with line numbers, but the DIA API
+  // doesn't make it possible to get the frame data in that way.
+
+  CComPtr<IDiaEnumFrameData> frame_data_enum;
+  if (!FindTable(session_, &frame_data_enum))
+    return false;
+
+  DWORD last_type = std::numeric_limits<DWORD>::max();
+  DWORD last_rva = std::numeric_limits<DWORD>::max();
+  DWORD last_code_size = 0;
+  DWORD last_prolog_size = std::numeric_limits<DWORD>::max();
+
+  CComPtr<IDiaFrameData> frame_data;
+  ULONG count = 0;
+  while (SUCCEEDED(frame_data_enum->Next(1, &frame_data, &count)) &&
+         count == 1) {
+    DWORD type;
+    if (FAILED(frame_data->get_type(&type)))
+      return false;
+
+    DWORD rva;
+    if (FAILED(frame_data->get_relativeVirtualAddress(&rva)))
+      return false;
+
+    DWORD code_size;
+    if (FAILED(frame_data->get_lengthBlock(&code_size)))
+      return false;
+
+    DWORD prolog_size;
+    if (FAILED(frame_data->get_lengthProlog(&prolog_size)))
+      return false;
+
+    // parameter_size is the size of parameters passed on the stack.  If any
+    // parameters are not passed on the stack (such as in registers), their
+    // sizes will not be included in parameter_size.
+    DWORD parameter_size;
+    if (FAILED(frame_data->get_lengthParams(&parameter_size)))
+      return false;
+
+    DWORD saved_register_size;
+    if (FAILED(frame_data->get_lengthSavedRegisters(&saved_register_size)))
+      return false;
+
+    DWORD local_size;
+    if (FAILED(frame_data->get_lengthLocals(&local_size)))
+      return false;
+
+    // get_maxStack can return S_FALSE, just use 0 in that case.
+    DWORD max_stack_size = 0;
+    if (FAILED(frame_data->get_maxStack(&max_stack_size)))
+      return false;
+
+    // get_programString can return S_FALSE, indicating that there is no
+    // program string.  In that case, check whether %ebp is used.
+    HRESULT program_string_result;
+    CComBSTR program_string;
+    if (FAILED(program_string_result = frame_data->get_program(
+        &program_string))) {
+      return false;
+    }
+
+    // get_allocatesBasePointer can return S_FALSE, treat that as though
+    // %ebp is not used.
+    BOOL allocates_base_pointer = FALSE;
+    if (program_string_result != S_OK) {
+      if (FAILED(frame_data->get_allocatesBasePointer(
+          &allocates_base_pointer))) {
+        return false;
+      }
+    }
+
+    // Only print out a line if type, rva, code_size, or prolog_size have
+    // changed from the last line.  It is surprisingly common (especially in
+    // system library PDBs) for DIA to return a series of identical
+    // IDiaFrameData objects.  For kernel32.pdb from Windows XP SP2 on x86,
+    // this check reduces the size of the dumped symbol file by a third.
+    if (type != last_type || rva != last_rva || code_size != last_code_size ||
+        prolog_size != last_prolog_size) {
+      // The prolog and the code portions of the frame have to be treated
+      // independently as they may have independently changed in size, or may
+      // even have been split.
+      // NOTE: If epilog size is ever non-zero, we have to do something
+      //     similar with it.
+
+      // Figure out where the prolog bytes have landed.
+      AddressRangeVector prolog_ranges;
+      if (prolog_size > 0) {
+        MapAddressRange(image_map_, AddressRange(rva, prolog_size),
+                        &prolog_ranges);
+      }
+
+      // And figure out where the code bytes have landed.
+      AddressRangeVector code_ranges;
+      MapAddressRange(image_map_,
+                      AddressRange(rva + prolog_size,
+                                   code_size - prolog_size),
+                      &code_ranges);
+
+      struct FrameInfo {
+        DWORD rva;
+        DWORD code_size;
+        DWORD prolog_size;
+      };
+      std::vector<FrameInfo> frame_infos;
+
+      // Special case: The prolog and the code bytes remain contiguous. This is
+      // only done for compactness of the symbol file, and we could actually
+      // be outputting independent frame info for the prolog and code portions.
+      if (prolog_ranges.size() == 1 && code_ranges.size() == 1 &&
+          prolog_ranges[0].end() == code_ranges[0].rva) {
+        FrameInfo fi = { prolog_ranges[0].rva,
+                         prolog_ranges[0].length + code_ranges[0].length,
+                         prolog_ranges[0].length };
+        frame_infos.push_back(fi);
+      } else {
+        // Otherwise we output the prolog and code frame info independently.
+        for (size_t i = 0; i < prolog_ranges.size(); ++i) {
+          FrameInfo fi = { prolog_ranges[i].rva,
+                           prolog_ranges[i].length,
+                           prolog_ranges[i].length };
+          frame_infos.push_back(fi);
+        }
+        for (size_t i = 0; i < code_ranges.size(); ++i) {
+          FrameInfo fi = { code_ranges[i].rva, code_ranges[i].length, 0 };
+          frame_infos.push_back(fi);
+        }
+      }
+
+      for (size_t i = 0; i < frame_infos.size(); ++i) {
+        const FrameInfo& fi(frame_infos[i]);
+        fprintf(output_, "STACK WIN %x %x %x %x %x %x %x %x %x %d ",
+                type, fi.rva, fi.code_size, fi.prolog_size,
+                0 /* epilog_size */, parameter_size, saved_register_size,
+                local_size, max_stack_size, program_string_result == S_OK);
+        if (program_string_result == S_OK) {
+          fprintf(output_, "%ws\n", program_string);
+        } else {
+          fprintf(output_, "%d\n", allocates_base_pointer);
+        }
+      }
+
+      last_type = type;
+      last_rva = rva;
+      last_code_size = code_size;
+      last_prolog_size = prolog_size;
+    }
+
+    frame_data.Release();
+  }
+
+  return true;
+}
+
+bool PDBSourceLineWriter::PrintFrameDataUsingEXE() {
+  if (code_file_.empty() && !FindPEFile()) {
+    fprintf(stderr, "Couldn't locate EXE or DLL file.\n");
+    return false;
+  }
+
+  // Convert wchar to native charset because ImageLoad only takes
+  // a PSTR as input.
+  string code_file;
+  if (!WindowsStringUtils::safe_wcstombs(code_file_, &code_file)) {
+    return false;
+  }
+
+  AutoImage img(ImageLoad((PSTR)code_file.c_str(), NULL));
+  if (!img) {
+    fprintf(stderr, "Failed to load %s\n", code_file.c_str());
+    return false;
+  }
+  PIMAGE_OPTIONAL_HEADER64 optional_header =
+    &(reinterpret_cast<PIMAGE_NT_HEADERS64>(img->FileHeader))->OptionalHeader;
+  if (optional_header->Magic != IMAGE_NT_OPTIONAL_HDR64_MAGIC) {
+    fprintf(stderr, "Not a PE32+ image\n");
+    return false;
+  }
+
+  // Read Exception Directory
+  DWORD exception_rva = optional_header->
+    DataDirectory[IMAGE_DIRECTORY_ENTRY_EXCEPTION].VirtualAddress;
+  DWORD exception_size = optional_header->
+    DataDirectory[IMAGE_DIRECTORY_ENTRY_EXCEPTION].Size;
+  PIMAGE_RUNTIME_FUNCTION_ENTRY funcs =
+    static_cast<PIMAGE_RUNTIME_FUNCTION_ENTRY>(
+        ImageRvaToVa(img->FileHeader,
+                     img->MappedAddress,
+                     exception_rva,
+                     &img->LastRvaSection));
+  for (DWORD i = 0; i < exception_size / sizeof(*funcs); i++) {
+    DWORD unwind_rva = funcs[i].UnwindInfoAddress;
+    // handle chaining
+    while (unwind_rva & 0x1) {
+      unwind_rva ^= 0x1;
+      PIMAGE_RUNTIME_FUNCTION_ENTRY chained_func =
+        static_cast<PIMAGE_RUNTIME_FUNCTION_ENTRY>(
+            ImageRvaToVa(img->FileHeader,
+                         img->MappedAddress,
+                         unwind_rva,
+                         &img->LastRvaSection));
+      unwind_rva = chained_func->UnwindInfoAddress;
+    }
+
+    UnwindInfo *unwind_info = static_cast<UnwindInfo *>(
+        ImageRvaToVa(img->FileHeader,
+                     img->MappedAddress,
+                     unwind_rva,
+                     &img->LastRvaSection));
+
+    DWORD stack_size = 8;  // minimal stack size is 8 for RIP
+    DWORD rip_offset = 8;
+    do {
+      for (UBYTE c = 0; c < unwind_info->count_of_codes; c++) {
+        UnwindCode *unwind_code = &unwind_info->unwind_code[c];
+        switch (unwind_code->unwind_operation_code) {
+          case UWOP_PUSH_NONVOL: {
+            stack_size += 8;
+            break;
+          }
+          case UWOP_ALLOC_LARGE: {
+            if (unwind_code->operation_info == 0) {
+              c++;
+              if (c < unwind_info->count_of_codes)
+                stack_size += (unwind_code + 1)->frame_offset * 8;
+            } else {
+              c += 2;
+              if (c < unwind_info->count_of_codes)
+                stack_size += (unwind_code + 1)->frame_offset |
+                              ((unwind_code + 2)->frame_offset << 16);
+            }
+            break;
+          }
+          case UWOP_ALLOC_SMALL: {
+            stack_size += unwind_code->operation_info * 8 + 8;
+            break;
+          }
+          case UWOP_SET_FPREG:
+          case UWOP_SAVE_XMM:
+          case UWOP_SAVE_XMM_FAR:
+            break;
+          case UWOP_SAVE_NONVOL:
+          case UWOP_SAVE_XMM128: {
+            c++;  // skip slot with offset
+            break;
+          }
+          case UWOP_SAVE_NONVOL_FAR:
+          case UWOP_SAVE_XMM128_FAR: {
+            c += 2;  // skip 2 slots with offset
+            break;
+          }
+          case UWOP_PUSH_MACHFRAME: {
+            if (unwind_code->operation_info) {
+              stack_size += 88;
+            } else {
+              stack_size += 80;
+            }
+            rip_offset += 80;
+            break;
+          }
+        }
+      }
+      if (unwind_info->flags & UNW_FLAG_CHAININFO) {
+        PIMAGE_RUNTIME_FUNCTION_ENTRY chained_func =
+          reinterpret_cast<PIMAGE_RUNTIME_FUNCTION_ENTRY>(
+              (unwind_info->unwind_code +
+              ((unwind_info->count_of_codes + 1) & ~1)));
+
+        unwind_info = static_cast<UnwindInfo *>(
+            ImageRvaToVa(img->FileHeader,
+                         img->MappedAddress,
+                         chained_func->UnwindInfoAddress,
+                         &img->LastRvaSection));
+      } else {
+        unwind_info = NULL;
+      }
+    } while (unwind_info);
+    fprintf(output_, "STACK CFI INIT %x %x .cfa: $rsp .ra: .cfa %d - ^\n",
+            funcs[i].BeginAddress,
+            funcs[i].EndAddress - funcs[i].BeginAddress, rip_offset);
+    fprintf(output_, "STACK CFI %x .cfa: $rsp %d +\n",
+            funcs[i].BeginAddress, stack_size);
+  }
+
+  return true;
+}
+
+bool PDBSourceLineWriter::PrintFrameData() {
+  PDBModuleInfo info;
+  if (GetModuleInfo(&info) && info.cpu == L"x86_64") {
+    return PrintFrameDataUsingEXE();
+  } else {
+    return PrintFrameDataUsingPDB();
+  }
+  return false;
+}
+
+bool PDBSourceLineWriter::PrintCodePublicSymbol(IDiaSymbol *symbol) {
+  BOOL is_code;
+  if (FAILED(symbol->get_code(&is_code))) {
+    return false;
+  }
+  if (!is_code) {
+    return true;
+  }
+
+  DWORD rva;
+  if (FAILED(symbol->get_relativeVirtualAddress(&rva))) {
+    return false;
+  }
+
+  CComBSTR name;
+  int stack_param_size;
+  if (!GetSymbolFunctionName(symbol, &name, &stack_param_size)) {
+    return false;
+  }
+
+  AddressRangeVector ranges;
+  MapAddressRange(image_map_, AddressRange(rva, 1), &ranges);
+  for (size_t i = 0; i < ranges.size(); ++i) {
+    fprintf(output_, "PUBLIC %x %x %ws\n", ranges[i].rva,
+            stack_param_size > 0 ? stack_param_size : 0, name);
+  }
+  return true;
+}
+
+bool PDBSourceLineWriter::PrintPDBInfo() {
+  PDBModuleInfo info;
+  if (!GetModuleInfo(&info)) {
+    return false;
+  }
+
+  // Hard-code "windows" for the OS because that's the only thing that makes
+  // sense for PDB files.  (This might not be strictly correct for Windows CE
+  // support, but we don't care about that at the moment.)
+  fprintf(output_, "MODULE windows %ws %ws %ws\n",
+          info.cpu.c_str(), info.debug_identifier.c_str(),
+          info.debug_file.c_str());
+
+  return true;
+}
+
+bool PDBSourceLineWriter::PrintPEInfo() {
+  PEModuleInfo info;
+  if (!GetPEInfo(&info)) {
+    return false;
+  }
+
+  fprintf(output_, "INFO CODE_ID %ws %ws\n",
+          info.code_identifier.c_str(),
+          info.code_file.c_str());
+  return true;
+}
+
+// wcstol_positive_strict is sort of like wcstol, but much stricter.  string
+// should be a buffer pointing to a null-terminated string containing only
+// decimal digits.  If the entire string can be converted to an integer
+// without overflowing, and there are no non-digit characters before the
+// result is set to the value and this function returns true.  Otherwise,
+// this function returns false.  This is an alternative to the strtol, atoi,
+// and scanf families, which are not as strict about input and in some cases
+// don't provide a good way for the caller to determine if a conversion was
+// successful.
+static bool wcstol_positive_strict(wchar_t *string, int *result) {
+  int value = 0;
+  for (wchar_t *c = string; *c != '\0'; ++c) {
+    int last_value = value;
+    value *= 10;
+    // Detect overflow.
+    if (value / 10 != last_value || value < 0) {
+      return false;
+    }
+    if (*c < '0' || *c > '9') {
+      return false;
+    }
+    unsigned int c_value = *c - '0';
+    last_value = value;
+    value += c_value;
+    // Detect overflow.
+    if (value < last_value) {
+      return false;
+    }
+    // Forbid leading zeroes unless the string is just "0".
+    if (value == 0 && *(c+1) != '\0') {
+      return false;
+    }
+  }
+  *result = value;
+  return true;
+}
+
+bool PDBSourceLineWriter::FindPEFile() {
+  CComPtr<IDiaSymbol> global;
+  if (FAILED(session_->get_globalScope(&global))) {
+    fprintf(stderr, "get_globalScope failed\n");
+    return false;
+  }
+
+  CComBSTR symbols_file;
+  if (SUCCEEDED(global->get_symbolsFileName(&symbols_file))) {
+    wstring file(symbols_file);
+
+    // Look for an EXE or DLL file.
+    const wchar_t *extensions[] = { L"exe", L"dll" };
+    for (int i = 0; i < sizeof(extensions) / sizeof(extensions[0]); i++) {
+      size_t dot_pos = file.find_last_of(L".");
+      if (dot_pos != wstring::npos) {
+        file.replace(dot_pos + 1, wstring::npos, extensions[i]);
+        // Check if this file exists.
+        if (GetFileAttributesW(file.c_str()) != INVALID_FILE_ATTRIBUTES) {
+          code_file_ = file;
+          return true;
+        }
+      }
+    }
+  }
+
+  return false;
+}
+
+// static
+bool PDBSourceLineWriter::GetSymbolFunctionName(IDiaSymbol *function,
+                                                BSTR *name,
+                                                int *stack_param_size) {
+  *stack_param_size = -1;
+  const DWORD undecorate_options = UNDNAME_NO_MS_KEYWORDS |
+                                   UNDNAME_NO_FUNCTION_RETURNS |
+                                   UNDNAME_NO_ALLOCATION_MODEL |
+                                   UNDNAME_NO_ALLOCATION_LANGUAGE |
+                                   UNDNAME_NO_THISTYPE |
+                                   UNDNAME_NO_ACCESS_SPECIFIERS |
+                                   UNDNAME_NO_THROW_SIGNATURES |
+                                   UNDNAME_NO_MEMBER_TYPE |
+                                   UNDNAME_NO_RETURN_UDT_MODEL |
+                                   UNDNAME_NO_ECSU;
+
+  // Use get_undecoratedNameEx to get readable C++ names with arguments.
+  if (function->get_undecoratedNameEx(undecorate_options, name) != S_OK) {
+    if (function->get_name(name) != S_OK) {
+      fprintf(stderr, "failed to get function name\n");
+      return false;
+    }
+    // If a name comes from get_name because no undecorated form existed,
+    // it's already formatted properly to be used as output.  Don't do any
+    // additional processing.
+    //
+    // MSVC7's DIA seems to not undecorate names in as many cases as MSVC8's.
+    // This will result in calling get_name for some C++ symbols, so
+    // all of the parameter and return type information may not be included in
+    // the name string.
+  } else {
+    // C++ uses a bogus "void" argument for functions and methods that don't
+    // take any parameters.  Take it out of the undecorated name because it's
+    // ugly and unnecessary.
+    const wchar_t *replace_string = L"(void)";
+    const size_t replace_length = wcslen(replace_string);
+    const wchar_t *replacement_string = L"()";
+    size_t length = wcslen(*name);
+    if (length >= replace_length) {
+      wchar_t *name_end = *name + length - replace_length;
+      if (wcscmp(name_end, replace_string) == 0) {
+        WindowsStringUtils::safe_wcscpy(name_end, replace_length,
+                                        replacement_string);
+        length = wcslen(*name);
+      }
+    }
+
+    // Undecorate names used for stdcall and fastcall.  These names prefix
+    // the identifier with '_' (stdcall) or '@' (fastcall) and suffix it
+    // with '@' followed by the number of bytes of parameters, in decimal.
+    // If such a name is found, take note of the size and undecorate it.
+    // Only do this for names that aren't C++, which is determined based on
+    // whether the undecorated name contains any ':' or '(' characters.
+    if (!wcschr(*name, ':') && !wcschr(*name, '(') &&
+        (*name[0] == '_' || *name[0] == '@')) {
+      wchar_t *last_at = wcsrchr(*name + 1, '@');
+      if (last_at && wcstol_positive_strict(last_at + 1, stack_param_size)) {
+        // If this function adheres to the fastcall convention, it accepts up
+        // to the first 8 bytes of parameters in registers (%ecx and %edx).
+        // We're only interested in the stack space used for parameters, so
+        // so subtract 8 and don't let the size go below 0.
+        if (*name[0] == '@') {
+          if (*stack_param_size > 8) {
+            *stack_param_size -= 8;
+          } else {
+            *stack_param_size = 0;
+          }
+        }
+
+        // Undecorate the name by moving it one character to the left in its
+        // buffer, and terminating it where the last '@' had been.
+        WindowsStringUtils::safe_wcsncpy(*name, length,
+                                         *name + 1, last_at - *name - 1);
+     } else if (*name[0] == '_') {
+        // This symbol's name is encoded according to the cdecl rules.  The
+        // name doesn't end in a '@' character followed by a decimal positive
+        // integer, so it's not a stdcall name.  Strip off the leading
+        // underscore.
+        WindowsStringUtils::safe_wcsncpy(*name, length, *name + 1, length);
+      }
+    }
+  }
+
+  return true;
+}
+
+// static
+int PDBSourceLineWriter::GetFunctionStackParamSize(IDiaSymbol *function) {
+  // This implementation is highly x86-specific.
+
+  // Gather the symbols corresponding to data.
+  CComPtr<IDiaEnumSymbols> data_children;
+  if (FAILED(function->findChildren(SymTagData, NULL, nsNone,
+                                    &data_children))) {
+    return 0;
+  }
+
+  // lowest_base is the lowest %ebp-relative byte offset used for a parameter.
+  // highest_end is one greater than the highest offset (i.e. base + length).
+  // Stack parameters are assumed to be contiguous, because in reality, they
+  // are.
+  int lowest_base = INT_MAX;
+  int highest_end = INT_MIN;
+
+  CComPtr<IDiaSymbol> child;
+  DWORD count;
+  while (SUCCEEDED(data_children->Next(1, &child, &count)) && count == 1) {
+    // If any operation fails at this point, just proceed to the next child.
+    // Use the next_child label instead of continue because child needs to
+    // be released before it's reused.  Declare constructable/destructable
+    // types early to avoid gotos that cross initializations.
+    CComPtr<IDiaSymbol> child_type;
+
+    // DataIsObjectPtr is only used for |this|.  Because |this| can be passed
+    // as a stack parameter, look for it in addition to traditional
+    // parameters.
+    DWORD child_kind;
+    if (FAILED(child->get_dataKind(&child_kind)) ||
+        (child_kind != DataIsParam && child_kind != DataIsObjectPtr)) {
+      goto next_child;
+    }
+
+    // Only concentrate on register-relative parameters.  Parameters may also
+    // be enregistered (passed directly in a register), but those don't
+    // consume any stack space, so they're not of interest.
+    DWORD child_location_type;
+    if (FAILED(child->get_locationType(&child_location_type)) ||
+        child_location_type != LocIsRegRel) {
+      goto next_child;
+    }
+
+    // Of register-relative parameters, the only ones that make any sense are
+    // %ebp- or %esp-relative.  Note that MSVC's debugging information always
+    // gives parameters as %ebp-relative even when a function doesn't use a
+    // traditional frame pointer and stack parameters are accessed relative to
+    // %esp, so just look for %ebp-relative parameters.  If you wanted to
+    // access parameters, you'd probably want to treat these %ebp-relative
+    // offsets as if they were relative to %esp before a function's prolog
+    // executed.
+    DWORD child_register;
+    if (FAILED(child->get_registerId(&child_register)) ||
+        child_register != CV_REG_EBP) {
+      goto next_child;
+    }
+
+    LONG child_register_offset;
+    if (FAILED(child->get_offset(&child_register_offset))) {
+      goto next_child;
+    }
+
+    // IDiaSymbol::get_type can succeed but still pass back a NULL value.
+    if (FAILED(child->get_type(&child_type)) || !child_type) {
+      goto next_child;
+    }
+
+    ULONGLONG child_length;
+    if (FAILED(child_type->get_length(&child_length))) {
+      goto next_child;
+    }
+
+    int child_end = child_register_offset + static_cast<ULONG>(child_length);
+    if (child_register_offset < lowest_base) {
+      lowest_base = child_register_offset;
+    }
+    if (child_end > highest_end) {
+      highest_end = child_end;
+    }
+
+next_child:
+    child.Release();
+  }
+
+  int param_size = 0;
+  // Make sure lowest_base isn't less than 4, because [%esp+4] is the lowest
+  // possible address to find a stack parameter before executing a function's
+  // prolog (see above).  Some optimizations cause parameter offsets to be
+  // lower than 4, but we're not concerned with those because we're only
+  // looking for parameters contained in addresses higher than where the
+  // return address is stored.
+  if (lowest_base < 4) {
+    lowest_base = 4;
+  }
+  if (highest_end > lowest_base) {
+    // All stack parameters are pushed as at least 4-byte quantities.  If the
+    // last type was narrower than 4 bytes, promote it.  This assumes that all
+    // parameters' offsets are 4-byte-aligned, which is always the case.  Only
+    // worry about the last type, because we're not summing the type sizes,
+    // just looking at the lowest and highest offsets.
+    int remainder = highest_end % 4;
+    if (remainder) {
+      highest_end += 4 - remainder;
+    }
+
+    param_size = highest_end - lowest_base;
+  }
+
+  return param_size;
+}
+
+bool PDBSourceLineWriter::WriteMap(FILE *map_file) {
+  output_ = map_file;
+
+  // Load the OMAP information, and disable auto-translation of addresses in
+  // preference of doing it ourselves.
+  OmapData omap_data;
+  if (!GetOmapDataAndDisableTranslation(session_, &omap_data))
+    return false;
+  BuildImageMap(omap_data, &image_map_);
+
+  bool ret = PrintPDBInfo();
+  // This is not a critical piece of the symbol file.
+  PrintPEInfo();
+  ret = ret &&
+      PrintSourceFiles() &&
+      PrintFunctions() &&
+      PrintFrameData();
+
+  output_ = NULL;
+  return ret;
+}
+
+void PDBSourceLineWriter::Close() {
+  session_.Release();
+}
+
+bool PDBSourceLineWriter::GetModuleInfo(PDBModuleInfo *info) {
+  if (!info) {
+    return false;
+  }
+
+  info->debug_file.clear();
+  info->debug_identifier.clear();
+  info->cpu.clear();
+
+  CComPtr<IDiaSymbol> global;
+  if (FAILED(session_->get_globalScope(&global))) {
+    return false;
+  }
+
+  DWORD machine_type;
+  // get_machineType can return S_FALSE.
+  if (global->get_machineType(&machine_type) == S_OK) {
+    // The documentation claims that get_machineType returns a value from
+    // the CV_CPU_TYPE_e enumeration, but that's not the case.
+    // Instead, it returns one of the IMAGE_FILE_MACHINE values as
+    // defined here:
+    // http://msdn.microsoft.com/en-us/library/ms680313%28VS.85%29.aspx
+    switch (machine_type) {
+      case IMAGE_FILE_MACHINE_I386:
+        info->cpu = L"x86";
+        break;
+      case IMAGE_FILE_MACHINE_AMD64:
+        info->cpu = L"x86_64";
+        break;
+      default:
+        info->cpu = L"unknown";
+        break;
+    }
+  } else {
+    // Unexpected, but handle gracefully.
+    info->cpu = L"unknown";
+  }
+
+  // DWORD* and int* are not compatible.  This is clean and avoids a cast.
+  DWORD age;
+  if (FAILED(global->get_age(&age))) {
+    return false;
+  }
+
+  bool uses_guid;
+  if (!UsesGUID(&uses_guid)) {
+    return false;
+  }
+
+  if (uses_guid) {
+    GUID guid;
+    if (FAILED(global->get_guid(&guid))) {
+      return false;
+    }
+
+    // Use the same format that the MS symbol server uses in filesystem
+    // hierarchies.
+    wchar_t age_string[9];
+    swprintf(age_string, sizeof(age_string) / sizeof(age_string[0]),
+             L"%x", age);
+
+    // remove when VC++7.1 is no longer supported
+    age_string[sizeof(age_string) / sizeof(age_string[0]) - 1] = L'\0';
+
+    info->debug_identifier = GUIDString::GUIDToSymbolServerWString(&guid);
+    info->debug_identifier.append(age_string);
+  } else {
+    DWORD signature;
+    if (FAILED(global->get_signature(&signature))) {
+      return false;
+    }
+
+    // Use the same format that the MS symbol server uses in filesystem
+    // hierarchies.
+    wchar_t identifier_string[17];
+    swprintf(identifier_string,
+             sizeof(identifier_string) / sizeof(identifier_string[0]),
+             L"%08X%x", signature, age);
+
+    // remove when VC++7.1 is no longer supported
+    identifier_string[sizeof(identifier_string) /
+                      sizeof(identifier_string[0]) - 1] = L'\0';
+
+    info->debug_identifier = identifier_string;
+  }
+
+  CComBSTR debug_file_string;
+  if (FAILED(global->get_symbolsFileName(&debug_file_string))) {
+    return false;
+  }
+  info->debug_file =
+      WindowsStringUtils::GetBaseName(wstring(debug_file_string));
+
+  return true;
+}
+
+bool PDBSourceLineWriter::GetPEInfo(PEModuleInfo *info) {
+  if (!info) {
+    return false;
+  }
+
+  if (code_file_.empty() && !FindPEFile()) {
+    fprintf(stderr, "Couldn't locate EXE or DLL file.\n");
+    return false;
+  }
+
+  // Convert wchar to native charset because ImageLoad only takes
+  // a PSTR as input.
+  string code_file;
+  if (!WindowsStringUtils::safe_wcstombs(code_file_, &code_file)) {
+    return false;
+  }
+
+  AutoImage img(ImageLoad((PSTR)code_file.c_str(), NULL));
+  if (!img) {
+    fprintf(stderr, "Failed to open PE file: %s\n", code_file.c_str());
+    return false;
+  }
+
+  info->code_file = WindowsStringUtils::GetBaseName(code_file_);
+
+  // The date and time that the file was created by the linker.
+  DWORD TimeDateStamp = img->FileHeader->FileHeader.TimeDateStamp;
+  // The size of the file in bytes, including all headers.
+  DWORD SizeOfImage = 0;
+  PIMAGE_OPTIONAL_HEADER64 opt =
+    &((PIMAGE_NT_HEADERS64)img->FileHeader)->OptionalHeader;
+  if (opt->Magic == IMAGE_NT_OPTIONAL_HDR64_MAGIC) {
+    // 64-bit PE file.
+    SizeOfImage = opt->SizeOfImage;
+  } else {
+    // 32-bit PE file.
+    SizeOfImage = img->FileHeader->OptionalHeader.SizeOfImage;
+  }
+  wchar_t code_identifier[32];
+  swprintf(code_identifier,
+      sizeof(code_identifier) / sizeof(code_identifier[0]),
+      L"%08X%X", TimeDateStamp, SizeOfImage);
+  info->code_identifier = code_identifier;
+
+  return true;
+}
+
+bool PDBSourceLineWriter::UsesGUID(bool *uses_guid) {
+  if (!uses_guid)
+    return false;
+
+  CComPtr<IDiaSymbol> global;
+  if (FAILED(session_->get_globalScope(&global)))
+    return false;
+
+  GUID guid;
+  if (FAILED(global->get_guid(&guid)))
+    return false;
+
+  DWORD signature;
+  if (FAILED(global->get_signature(&signature)))
+    return false;
+
+  // There are two possibilities for guid: either it's a real 128-bit GUID
+  // as identified in a code module by a new-style CodeView record, or it's
+  // a 32-bit signature (timestamp) as identified by an old-style record.
+  // See MDCVInfoPDB70 and MDCVInfoPDB20 in minidump_format.h.
+  //
+  // Because DIA doesn't provide a way to directly determine whether a module
+  // uses a GUID or a 32-bit signature, this code checks whether the first 32
+  // bits of guid are the same as the signature, and if the rest of guid is
+  // zero.  If so, then with a pretty high degree of certainty, there's an
+  // old-style CodeView record in use.  This method will only falsely find an
+  // an old-style CodeView record if a real 128-bit GUID has its first 32
+  // bits set the same as the module's signature (timestamp) and the rest of
+  // the GUID is set to 0.  This is highly unlikely.
+
+  GUID signature_guid = {signature};  // 0-initializes other members
+  *uses_guid = !IsEqualGUID(guid, signature_guid);
+  return true;
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/common/windows/pdb_source_line_writer.h b/google-breakpad/src/common/windows/pdb_source_line_writer.h
new file mode 100644
index 0000000..e9e89bb
--- /dev/null
+++ b/google-breakpad/src/common/windows/pdb_source_line_writer.h
@@ -0,0 +1,257 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// PDBSourceLineWriter uses a pdb file produced by Visual C++ to output
+// a line/address map for use with BasicSourceLineResolver.
+
+#ifndef COMMON_WINDOWS_PDB_SOURCE_LINE_WRITER_H_
+#define COMMON_WINDOWS_PDB_SOURCE_LINE_WRITER_H_
+
+#include <atlcomcli.h>
+
+#include <unordered_map>
+#include <string>
+
+#include "common/windows/omap.h"
+
+struct IDiaEnumLineNumbers;
+struct IDiaSession;
+struct IDiaSymbol;
+
+namespace google_breakpad {
+
+using std::wstring;
+using std::unordered_map;
+
+// A structure that carries information that identifies a pdb file.
+struct PDBModuleInfo {
+ public:
+  // The basename of the pdb file from which information was loaded.
+  wstring debug_file;
+
+  // The pdb's identifier.  For recent pdb files, the identifier consists
+  // of the pdb's guid, in uppercase hexadecimal form without any dashes
+  // or separators, followed immediately by the pdb's age, also in
+  // uppercase hexadecimal form.  For older pdb files which have no guid,
+  // the identifier is the pdb's 32-bit signature value, in zero-padded
+  // hexadecimal form, followed immediately by the pdb's age, in lowercase
+  // hexadecimal form.
+  wstring debug_identifier;
+
+  // A string identifying the cpu that the pdb is associated with.
+  // Currently, this may be "x86" or "unknown".
+  wstring cpu;
+};
+
+// A structure that carries information that identifies a PE file,
+// either an EXE or a DLL.
+struct PEModuleInfo {
+  // The basename of the PE file.
+  wstring code_file;
+
+  // The PE file's code identifier, which consists of its timestamp
+  // and file size concatenated together into a single hex string.
+  // (The fields IMAGE_OPTIONAL_HEADER::SizeOfImage and
+  // IMAGE_FILE_HEADER::TimeDateStamp, as defined in the ImageHlp
+  // documentation.) This is not well documented, if it's documented
+  // at all, but it's what symstore does and what DbgHelp supports.
+  wstring code_identifier;
+};
+
+class PDBSourceLineWriter {
+ public:
+  enum FileFormat {
+    PDB_FILE,  // a .pdb file containing debug symbols
+    EXE_FILE,  // a .exe or .dll file
+    ANY_FILE   // try PDB_FILE and then EXE_FILE
+  };
+
+  explicit PDBSourceLineWriter();
+  ~PDBSourceLineWriter();
+
+  // Opens the given file.  For executable files, the corresponding pdb
+  // file must be available; Open will be if it is not.
+  // If there is already a pdb file open, it is automatically closed.
+  // Returns true on success.
+  bool Open(const wstring &file, FileFormat format);
+
+  // Sets the code file full path.  This is optional for 32-bit modules.  It is
+  // also optional for 64-bit modules when there is an executable file stored
+  // in the same directory as the PDB file.  It is only required for 64-bit
+  // modules when the executable file is not in the same location as the PDB
+  // file and it must be called after Open() and before WriteMap().
+  // If Open() was called for an executable file, then it is an error to call
+  // SetCodeFile() with a different file path and it will return false.
+  bool SetCodeFile(const wstring &exe_file);
+
+  // Writes a map file from the current pdb file to the given file stream.
+  // Returns true on success.
+  bool WriteMap(FILE *map_file);
+
+  // Closes the current pdb file and its associated resources.
+  void Close();
+
+  // Retrieves information about the module's debugging file.  Returns
+  // true on success and false on failure.
+  bool GetModuleInfo(PDBModuleInfo *info);
+
+  // Retrieves information about the module's PE file.  Returns
+  // true on success and false on failure.
+  bool GetPEInfo(PEModuleInfo *info);
+
+  // Sets uses_guid to true if the opened file uses a new-style CodeView
+  // record with a 128-bit GUID, or false if the opened file uses an old-style
+  // CodeView record.  When no GUID is available, a 32-bit signature should be
+  // used to identify the module instead.  If the information cannot be
+  // determined, this method returns false.
+  bool UsesGUID(bool *uses_guid);
+
+ private:
+  // Outputs the line/address pairs for each line in the enumerator.
+  // Returns true on success.
+  bool PrintLines(IDiaEnumLineNumbers *lines);
+
+  // Outputs a function address and name, followed by its source line list.
+  // block can be the same object as function, or it can be a reference
+  // to a code block that is lexically part of this function, but
+  // resides at a separate address.
+  // Returns true on success.
+  bool PrintFunction(IDiaSymbol *function, IDiaSymbol *block);
+
+  // Outputs all functions as described above.  Returns true on success.
+  bool PrintFunctions();
+
+  // Outputs all of the source files in the session's pdb file.
+  // Returns true on success.
+  bool PrintSourceFiles();
+
+  // Outputs all of the frame information necessary to construct stack
+  // backtraces in the absence of frame pointers. For x86 data stored in
+  // .pdb files. Returns true on success.
+  bool PrintFrameDataUsingPDB();
+
+  // Outputs all of the frame information necessary to construct stack
+  // backtraces in the absence of frame pointers. For x64 data stored in
+  // .exe, .dll files. Returns true on success.
+  bool PrintFrameDataUsingEXE();
+
+  // Outputs all of the frame information necessary to construct stack
+  // backtraces in the absence of frame pointers.  Returns true on success.
+  bool PrintFrameData();
+
+  // Outputs a single public symbol address and name, if the symbol corresponds
+  // to a code address.  Returns true on success.  If symbol is does not
+  // correspond to code, returns true without outputting anything.
+  bool PrintCodePublicSymbol(IDiaSymbol *symbol);
+
+  // Outputs a line identifying the PDB file that is being dumped, along with
+  // its uuid and age.
+  bool PrintPDBInfo();
+
+  // Outputs a line identifying the PE file corresponding to the PDB
+  // file that is being dumped, along with its code identifier,
+  // which consists of its timestamp and file size.
+  bool PrintPEInfo();
+
+  // Returns true if this filename has already been seen,
+  // and an ID is stored for it, or false if it has not.
+  bool FileIDIsCached(const wstring &file) {
+    return unique_files_.find(file) != unique_files_.end();
+  }
+
+  // Cache this filename and ID for later reuse.
+  void CacheFileID(const wstring &file, DWORD id) {
+    unique_files_[file] = id;
+  }
+
+  // Store this ID in the cache as a duplicate for this filename.
+  void StoreDuplicateFileID(const wstring &file, DWORD id) {
+    unordered_map<wstring, DWORD>::iterator iter = unique_files_.find(file);
+    if (iter != unique_files_.end()) {
+      // map this id to the previously seen one
+      file_ids_[id] = iter->second;
+    }
+  }
+
+  // Given a file's unique ID, return the ID that should be used to
+  // reference it. There may be multiple files with identical filenames
+  // but different unique IDs. The cache attempts to coalesce these into
+  // one ID per unique filename.
+  DWORD GetRealFileID(DWORD id) {
+    unordered_map<DWORD, DWORD>::iterator iter = file_ids_.find(id);
+    if (iter == file_ids_.end())
+      return id;
+    return iter->second;
+  }
+
+  // Find the PE file corresponding to the loaded PDB file, and
+  // set the code_file_ member. Returns false on failure.
+  bool FindPEFile();
+
+  // Returns the function name for a symbol.  If possible, the name is
+  // undecorated.  If the symbol's decorated form indicates the size of
+  // parameters on the stack, this information is returned in stack_param_size.
+  // Returns true on success.  If the symbol doesn't encode parameter size
+  // information, stack_param_size is set to -1.
+  static bool GetSymbolFunctionName(IDiaSymbol *function, BSTR *name,
+                                    int *stack_param_size);
+
+  // Returns the number of bytes of stack space used for a function's
+  // parameters.  function must have the tag SymTagFunction.  In the event of
+  // a failure, returns 0, which is also a valid number of bytes.
+  static int GetFunctionStackParamSize(IDiaSymbol *function);
+
+  // The filename of the PE file corresponding to the currently-open
+  // pdb file.
+  wstring code_file_;
+
+  // The session for the currently-open pdb file.
+  CComPtr<IDiaSession> session_;
+
+  // The current output file for this WriteMap invocation.
+  FILE *output_;
+
+  // There may be many duplicate filenames with different IDs.
+  // This maps from the DIA "unique ID" to a single ID per unique
+  // filename.
+  unordered_map<DWORD, DWORD> file_ids_;
+  // This maps unique filenames to file IDs.
+  unordered_map<wstring, DWORD> unique_files_;
+
+  // This is used for calculating post-transform symbol addresses and lengths.
+  ImageMap image_map_;
+
+  // Disallow copy ctor and operator=
+  PDBSourceLineWriter(const PDBSourceLineWriter&);
+  void operator=(const PDBSourceLineWriter&);
+};
+
+}  // namespace google_breakpad
+
+#endif  // COMMON_WINDOWS_PDB_SOURCE_LINE_WRITER_H_
diff --git a/google-breakpad/src/common/windows/string_utils-inl.h b/google-breakpad/src/common/windows/string_utils-inl.h
new file mode 100644
index 0000000..9b63607
--- /dev/null
+++ b/google-breakpad/src/common/windows/string_utils-inl.h
@@ -0,0 +1,142 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// string_utils-inl.h: Safer string manipulation on Windows, supporting
+// pre-MSVC8 environments.
+
+#ifndef COMMON_WINDOWS_STRING_UTILS_INL_H_
+#define COMMON_WINDOWS_STRING_UTILS_INL_H_
+
+#include <stdarg.h>
+#include <wchar.h>
+
+#include <string>
+
+// The "ll" printf format size specifier corresponding to |long long| was
+// intrudced in MSVC8.  Earlier versions did not provide this size specifier,
+// but "I64" can be used to print 64-bit types.  Don't use "I64" where "ll"
+// is available, in the event of oddball systems where |long long| is not
+// 64 bits wide.
+#if _MSC_VER >= 1400  // MSVC 2005/8
+#define WIN_STRING_FORMAT_LL "ll"
+#else  // MSC_VER >= 1400
+#define WIN_STRING_FORMAT_LL "I64"
+#endif  // MSC_VER >= 1400
+
+// A nonconforming version of swprintf, without the length argument, was
+// included with the CRT prior to MSVC8.  Although a conforming version was
+// also available via an overload, it is not reliably chosen.  _snwprintf
+// behaves as a standards-confirming swprintf should, so force the use of
+// _snwprintf when using older CRTs.
+#if _MSC_VER < 1400  // MSVC 2005/8
+#define swprintf _snwprintf
+#else
+// For MSVC8 and newer, swprintf_s is the recommended method. Conveniently,
+// it takes the same argument list as swprintf.
+#define swprintf swprintf_s
+#endif  // MSC_VER < 1400
+
+namespace google_breakpad {
+
+using std::string;
+using std::wstring;
+
+class WindowsStringUtils {
+ public:
+  // Roughly equivalent to MSVC8's wcscpy_s, except pre-MSVC8, this does
+  // not fail if source is longer than destination_size.  The destination
+  // buffer is always 0-terminated.
+  static void safe_wcscpy(wchar_t *destination, size_t destination_size,
+                          const wchar_t *source);
+
+  // Roughly equivalent to MSVC8's wcsncpy_s, except that _TRUNCATE cannot
+  // be passed directly, and pre-MSVC8, this will not fail if source or count
+  // are longer than destination_size.  The destination buffer is always
+  // 0-terminated.
+  static void safe_wcsncpy(wchar_t *destination, size_t destination_size,
+                           const wchar_t *source, size_t count);
+
+  // Performs multi-byte to wide character conversion on C++ strings, using
+  // mbstowcs_s (MSVC8) or mbstowcs (pre-MSVC8).  Returns false on failure,
+  // without setting wcs.
+  static bool safe_mbstowcs(const string &mbs, wstring *wcs);
+
+  // The inverse of safe_mbstowcs.
+  static bool safe_wcstombs(const wstring &wcs, string *mbs);
+
+  // Returns the base name of a file, e.g. strips off the path.
+  static wstring GetBaseName(const wstring &filename);
+
+ private:
+  // Disallow instantiation and other object-based operations.
+  WindowsStringUtils();
+  WindowsStringUtils(const WindowsStringUtils&);
+  ~WindowsStringUtils();
+  void operator=(const WindowsStringUtils&);
+};
+
+// static
+inline void WindowsStringUtils::safe_wcscpy(wchar_t *destination,
+                                            size_t destination_size,
+                                            const wchar_t *source) {
+#if _MSC_VER >= 1400  // MSVC 2005/8
+  wcscpy_s(destination, destination_size, source);
+#else  // _MSC_VER >= 1400
+  // Pre-MSVC 2005/8 doesn't have wcscpy_s.  Simulate it with wcsncpy.
+  // wcsncpy doesn't 0-terminate the destination buffer if the source string
+  // is longer than size.  Ensure that the destination is 0-terminated.
+  wcsncpy(destination, source, destination_size);
+  if (destination && destination_size)
+    destination[destination_size - 1] = 0;
+#endif  // _MSC_VER >= 1400
+}
+
+// static
+inline void WindowsStringUtils::safe_wcsncpy(wchar_t *destination,
+                                             size_t destination_size,
+                                             const wchar_t *source,
+                                             size_t count) {
+#if _MSC_VER >= 1400  // MSVC 2005/8
+  wcsncpy_s(destination, destination_size, source, count);
+#else  // _MSC_VER >= 1400
+  // Pre-MSVC 2005/8 doesn't have wcsncpy_s.  Simulate it with wcsncpy.
+  // wcsncpy doesn't 0-terminate the destination buffer if the source string
+  // is longer than size.  Ensure that the destination is 0-terminated.
+  if (destination_size < count)
+    count = destination_size;
+
+  wcsncpy(destination, source, count);
+  if (destination && count)
+    destination[count - 1] = 0;
+#endif  // _MSC_VER >= 1400
+}
+
+}  // namespace google_breakpad
+
+#endif  // COMMON_WINDOWS_STRING_UTILS_INL_H_
diff --git a/google-breakpad/src/common/windows/string_utils.cc b/google-breakpad/src/common/windows/string_utils.cc
new file mode 100644
index 0000000..2728000
--- /dev/null
+++ b/google-breakpad/src/common/windows/string_utils.cc
@@ -0,0 +1,133 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include <cassert>
+#include <vector>
+
+#include "common/windows/string_utils-inl.h"
+
+namespace google_breakpad {
+
+// static
+wstring WindowsStringUtils::GetBaseName(const wstring &filename) {
+  wstring base_name(filename);
+  size_t slash_pos = base_name.find_last_of(L"/\\");
+  if (slash_pos != wstring::npos) {
+    base_name.erase(0, slash_pos + 1);
+  }
+  return base_name;
+}
+
+// static
+bool WindowsStringUtils::safe_mbstowcs(const string &mbs, wstring *wcs) {
+  assert(wcs);
+
+  // First, determine the length of the destination buffer.
+  size_t wcs_length;
+
+#if _MSC_VER >= 1400  // MSVC 2005/8
+  errno_t err;
+  if ((err = mbstowcs_s(&wcs_length, NULL, 0, mbs.c_str(), _TRUNCATE)) != 0) {
+    return false;
+  }
+  assert(wcs_length > 0);
+#else  // _MSC_VER >= 1400
+  if ((wcs_length = mbstowcs(NULL, mbs.c_str(), mbs.length())) == (size_t)-1) {
+    return false;
+  }
+
+  // Leave space for the 0-terminator.
+  ++wcs_length;
+#endif  // _MSC_VER >= 1400
+
+  std::vector<wchar_t> wcs_v(wcs_length);
+
+  // Now, convert.
+#if _MSC_VER >= 1400  // MSVC 2005/8
+  if ((err = mbstowcs_s(NULL, &wcs_v[0], wcs_length, mbs.c_str(),
+                        _TRUNCATE)) != 0) {
+    return false;
+  }
+#else  // _MSC_VER >= 1400
+  if (mbstowcs(&wcs_v[0], mbs.c_str(), mbs.length()) == (size_t)-1) {
+    return false;
+  }
+
+  // Ensure presence of 0-terminator.
+  wcs_v[wcs_length - 1] = '\0';
+#endif  // _MSC_VER >= 1400
+
+  *wcs = &wcs_v[0];
+  return true;
+}
+
+// static
+bool WindowsStringUtils::safe_wcstombs(const wstring &wcs, string *mbs) {
+  assert(mbs);
+
+  // First, determine the length of the destination buffer.
+  size_t mbs_length;
+
+#if _MSC_VER >= 1400  // MSVC 2005/8
+  errno_t err;
+  if ((err = wcstombs_s(&mbs_length, NULL, 0, wcs.c_str(), _TRUNCATE)) != 0) {
+    return false;
+  }
+  assert(mbs_length > 0);
+#else  // _MSC_VER >= 1400
+  if ((mbs_length = wcstombs(NULL, wcs.c_str(), wcs.length())) == (size_t)-1) {
+    return false;
+  }
+
+  // Leave space for the 0-terminator.
+  ++mbs_length;
+#endif  // _MSC_VER >= 1400
+
+  std::vector<char> mbs_v(mbs_length);
+
+  // Now, convert.
+#if _MSC_VER >= 1400  // MSVC 2005/8
+  if ((err = wcstombs_s(NULL, &mbs_v[0], mbs_length, wcs.c_str(),
+                        _TRUNCATE)) != 0) {
+    return false;
+  }
+#else  // _MSC_VER >= 1400
+  if (wcstombs(&mbs_v[0], wcs.c_str(), wcs.length()) == (size_t)-1) {
+    return false;
+  }
+
+  // Ensure presence of 0-terminator.
+  mbs_v[mbs_length - 1] = '\0';
+#endif  // _MSC_VER >= 1400
+
+  *mbs = &mbs_v[0];
+  return true;
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/config.h.in b/google-breakpad/src/config.h.in
new file mode 100644
index 0000000..1db0159
--- /dev/null
+++ b/google-breakpad/src/config.h.in
@@ -0,0 +1,76 @@
+/* src/config.h.in.  Generated from configure.ac by autoheader.  */
+
+/* Define to 1 if you have the <a.out.h> header file. */
+#undef HAVE_A_OUT_H
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define if you have POSIX threads libraries and header files. */
+#undef HAVE_PTHREAD
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Name of package */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the home page for this package. */
+#undef PACKAGE_URL
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* Define to necessary symbol if this constant uses a non-standard name on
+   your system. */
+#undef PTHREAD_CREATE_JOINABLE
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Version number of package */
+#undef VERSION
+
+/* Enable large inode numbers on Mac OS X 10.5.  */
+#ifndef _DARWIN_USE_64_BIT_INODE
+# define _DARWIN_USE_64_BIT_INODE 1
+#endif
+
+/* Number of bits in a file offset, on hosts where this is settable. */
+#undef _FILE_OFFSET_BITS
+
+/* Define for large files, on AIX-style hosts. */
+#undef _LARGE_FILES
diff --git a/google-breakpad/src/google_breakpad/common/breakpad_types.h b/google-breakpad/src/google_breakpad/common/breakpad_types.h
new file mode 100644
index 0000000..e92436f
--- /dev/null
+++ b/google-breakpad/src/google_breakpad/common/breakpad_types.h
@@ -0,0 +1,86 @@
+/* Copyright (c) 2006, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
+
+/* breakpad_types.h: Precise-width types
+ *
+ * (This is C99 source, please don't corrupt it with C++.)
+ *
+ * This file ensures that types uintN_t are defined for N = 8, 16, 32, and
+ * 64.  Types of precise widths are crucial to the task of writing data
+ * structures on one platform and reading them on another.
+ *
+ * Author: Mark Mentovai */
+
+#ifndef GOOGLE_BREAKPAD_COMMON_BREAKPAD_TYPES_H__
+#define GOOGLE_BREAKPAD_COMMON_BREAKPAD_TYPES_H__
+
+#ifndef _WIN32
+
+#ifndef __STDC_FORMAT_MACROS
+#define __STDC_FORMAT_MACROS
+#endif  /* __STDC_FORMAT_MACROS */
+#include <inttypes.h>
+
+#else  /* !_WIN32 */
+
+#if _MSC_VER >= 1600
+#include <stdint.h>
+#elif defined(BREAKPAD_CUSTOM_STDINT_H)
+/* Visual C++ Pre-2010 did not ship a stdint.h, so allow
+ * consumers of this library to provide their own because
+ * there are often subtle type incompatibilities.
+ */
+#include BREAKPAD_CUSTOM_STDINT_H
+#else
+#include <wtypes.h>
+
+typedef unsigned __int8  uint8_t;
+typedef unsigned __int16 uint16_t;
+typedef __int32 int32_t;
+typedef unsigned __int32 uint32_t;
+typedef unsigned __int64 uint64_t;
+#endif
+
+#endif  /* !_WIN32 */
+
+typedef struct {
+  uint64_t high;
+  uint64_t low;
+} uint128_struct;
+
+typedef uint64_t breakpad_time_t;
+
+/* Try to get PRIx64 from inttypes.h, but if it's not defined, fall back to
+ * llx, which is the format string for "long long" - this is a 64-bit
+ * integral type on many systems. */
+#ifndef PRIx64
+#define PRIx64 "llx"
+#endif  /* !PRIx64 */
+
+#endif  /* GOOGLE_BREAKPAD_COMMON_BREAKPAD_TYPES_H__ */
diff --git a/google-breakpad/src/google_breakpad/common/minidump_cpu_amd64.h b/google-breakpad/src/google_breakpad/common/minidump_cpu_amd64.h
new file mode 100644
index 0000000..4256706
--- /dev/null
+++ b/google-breakpad/src/google_breakpad/common/minidump_cpu_amd64.h
@@ -0,0 +1,235 @@
+/* Copyright (c) 2006, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
+
+/* minidump_format.h: A cross-platform reimplementation of minidump-related
+ * portions of DbgHelp.h from the Windows Platform SDK.
+ *
+ * (This is C99 source, please don't corrupt it with C++.)
+ *
+ * This file contains the necessary definitions to read minidump files
+ * produced on amd64.  These files may be read on any platform provided
+ * that the alignments of these structures on the processing system are
+ * identical to the alignments of these structures on the producing system.
+ * For this reason, precise-sized types are used.  The structures defined
+ * by this file have been laid out to minimize alignment problems by ensuring
+ * ensuring that all members are aligned on their natural boundaries.  In
+ * In some cases, tail-padding may be significant when different ABIs specify
+ * different tail-padding behaviors.  To avoid problems when reading or
+ * writing affected structures, MD_*_SIZE macros are provided where needed,
+ * containing the useful size of the structures without padding.
+ *
+ * Structures that are defined by Microsoft to contain a zero-length array
+ * are instead defined here to contain an array with one element, as
+ * zero-length arrays are forbidden by standard C and C++.  In these cases,
+ * *_minsize constants are provided to be used in place of sizeof.  For a
+ * cleaner interface to these sizes when using C++, see minidump_size.h.
+ *
+ * These structures are also sufficient to populate minidump files.
+ *
+ * These definitions may be extended to support handling minidump files
+ * for other CPUs and other operating systems.
+ *
+ * Because precise data type sizes are crucial for this implementation to
+ * function properly and portably in terms of interoperability with minidumps
+ * produced by DbgHelp on Windows, a set of primitive types with known sizes
+ * are used as the basis of each structure defined by this file.  DbgHelp
+ * on Windows is assumed to be the reference implementation; this file
+ * seeks to provide a cross-platform compatible implementation.  To avoid
+ * collisions with the types and values defined and used by DbgHelp in the
+ * event that this implementation is used on Windows, each type and value
+ * defined here is given a new name, beginning with "MD".  Names of the
+ * equivalent types and values in the Windows Platform SDK are given in
+ * comments.
+ *
+ * Author: Mark Mentovai
+ * Change to split into its own file: Neal Sidhwaney */
+
+#ifndef GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_AMD64_H__
+#define GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_AMD64_H__
+
+
+/*
+ * AMD64 support, see WINNT.H
+ */
+
+typedef struct {
+  uint16_t       control_word;
+  uint16_t       status_word;
+  uint8_t        tag_word;
+  uint8_t        reserved1;
+  uint16_t       error_opcode;
+  uint32_t       error_offset;
+  uint16_t       error_selector;
+  uint16_t       reserved2;
+  uint32_t       data_offset;
+  uint16_t       data_selector;
+  uint16_t       reserved3;
+  uint32_t       mx_csr;
+  uint32_t       mx_csr_mask;
+  uint128_struct float_registers[8];
+  uint128_struct xmm_registers[16];
+  uint8_t        reserved4[96];
+} MDXmmSaveArea32AMD64;  /* XMM_SAVE_AREA32 */
+
+#define MD_CONTEXT_AMD64_VR_COUNT 26
+
+typedef struct {
+  /*
+   * Register parameter home addresses.
+   */
+  uint64_t  p1_home;
+  uint64_t  p2_home;
+  uint64_t  p3_home;
+  uint64_t  p4_home;
+  uint64_t  p5_home;
+  uint64_t  p6_home;
+
+  /* The next field determines the layout of the structure, and which parts
+   * of it are populated */
+  uint32_t  context_flags;
+  uint32_t  mx_csr;
+
+  /* The next register is included with MD_CONTEXT_AMD64_CONTROL */
+  uint16_t  cs;
+
+  /* The next 4 registers are included with MD_CONTEXT_AMD64_SEGMENTS */
+  uint16_t  ds;
+  uint16_t  es;
+  uint16_t  fs;
+  uint16_t  gs;
+
+  /* The next 2 registers are included with MD_CONTEXT_AMD64_CONTROL */
+  uint16_t  ss;
+  uint32_t  eflags;
+
+  /* The next 6 registers are included with MD_CONTEXT_AMD64_DEBUG_REGISTERS */
+  uint64_t  dr0;
+  uint64_t  dr1;
+  uint64_t  dr2;
+  uint64_t  dr3;
+  uint64_t  dr6;
+  uint64_t  dr7;
+
+  /* The next 4 registers are included with MD_CONTEXT_AMD64_INTEGER */
+  uint64_t  rax;
+  uint64_t  rcx;
+  uint64_t  rdx;
+  uint64_t  rbx;
+
+  /* The next register is included with MD_CONTEXT_AMD64_CONTROL */
+  uint64_t  rsp;
+
+  /* The next 11 registers are included with MD_CONTEXT_AMD64_INTEGER */
+  uint64_t  rbp;
+  uint64_t  rsi;
+  uint64_t  rdi;
+  uint64_t  r8;
+  uint64_t  r9;
+  uint64_t  r10;
+  uint64_t  r11;
+  uint64_t  r12;
+  uint64_t  r13;
+  uint64_t  r14;
+  uint64_t  r15;
+
+  /* The next register is included with MD_CONTEXT_AMD64_CONTROL */
+  uint64_t  rip;
+
+  /* The next set of registers are included with
+   * MD_CONTEXT_AMD64_FLOATING_POINT
+   */
+  union {
+    MDXmmSaveArea32AMD64 flt_save;
+    struct {
+      uint128_struct header[2];
+      uint128_struct legacy[8];
+      uint128_struct xmm0;
+      uint128_struct xmm1;
+      uint128_struct xmm2;
+      uint128_struct xmm3;
+      uint128_struct xmm4;
+      uint128_struct xmm5;
+      uint128_struct xmm6;
+      uint128_struct xmm7;
+      uint128_struct xmm8;
+      uint128_struct xmm9;
+      uint128_struct xmm10;
+      uint128_struct xmm11;
+      uint128_struct xmm12;
+      uint128_struct xmm13;
+      uint128_struct xmm14;
+      uint128_struct xmm15;
+    } sse_registers;
+  };
+
+  uint128_struct vector_register[MD_CONTEXT_AMD64_VR_COUNT];
+  uint64_t       vector_control;
+
+  /* The next 5 registers are included with MD_CONTEXT_AMD64_DEBUG_REGISTERS */
+  uint64_t debug_control;
+  uint64_t last_branch_to_rip;
+  uint64_t last_branch_from_rip;
+  uint64_t last_exception_to_rip;
+  uint64_t last_exception_from_rip;
+
+} MDRawContextAMD64;  /* CONTEXT */
+
+/* For (MDRawContextAMD64).context_flags.  These values indicate the type of
+ * context stored in the structure.  The high 24 bits identify the CPU, the
+ * low 8 bits identify the type of context saved. */
+#define MD_CONTEXT_AMD64 0x00100000  /* CONTEXT_AMD64 */
+#define MD_CONTEXT_AMD64_CONTROL         (MD_CONTEXT_AMD64 | 0x00000001)
+     /* CONTEXT_CONTROL */
+#define MD_CONTEXT_AMD64_INTEGER         (MD_CONTEXT_AMD64 | 0x00000002)
+     /* CONTEXT_INTEGER */
+#define MD_CONTEXT_AMD64_SEGMENTS        (MD_CONTEXT_AMD64 | 0x00000004)
+     /* CONTEXT_SEGMENTS */
+#define MD_CONTEXT_AMD64_FLOATING_POINT  (MD_CONTEXT_AMD64 | 0x00000008)
+     /* CONTEXT_FLOATING_POINT */
+#define MD_CONTEXT_AMD64_DEBUG_REGISTERS (MD_CONTEXT_AMD64 | 0x00000010)
+     /* CONTEXT_DEBUG_REGISTERS */
+#define MD_CONTEXT_AMD64_XSTATE          (MD_CONTEXT_AMD64 | 0x00000040)
+     /* CONTEXT_XSTATE */
+
+/* WinNT.h refers to CONTEXT_MMX_REGISTERS but doesn't appear to define it
+ * I think it really means CONTEXT_FLOATING_POINT.
+ */
+
+#define MD_CONTEXT_AMD64_FULL            (MD_CONTEXT_AMD64_CONTROL | \
+                                          MD_CONTEXT_AMD64_INTEGER | \
+                                          MD_CONTEXT_AMD64_FLOATING_POINT)
+     /* CONTEXT_FULL */
+
+#define MD_CONTEXT_AMD64_ALL             (MD_CONTEXT_AMD64_FULL | \
+                                          MD_CONTEXT_AMD64_SEGMENTS | \
+                                          MD_CONTEXT_X86_DEBUG_REGISTERS)
+     /* CONTEXT_ALL */
+
+
+#endif /* GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_AMD64_H__ */
diff --git a/google-breakpad/src/google_breakpad/common/minidump_cpu_arm.h b/google-breakpad/src/google_breakpad/common/minidump_cpu_arm.h
new file mode 100644
index 0000000..6a71138
--- /dev/null
+++ b/google-breakpad/src/google_breakpad/common/minidump_cpu_arm.h
@@ -0,0 +1,151 @@
+/* Copyright (c) 2009, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
+
+/* minidump_format.h: A cross-platform reimplementation of minidump-related
+ * portions of DbgHelp.h from the Windows Platform SDK.
+ *
+ * (This is C99 source, please don't corrupt it with C++.)
+ *
+ * This file contains the necessary definitions to read minidump files
+ * produced on ARM.  These files may be read on any platform provided
+ * that the alignments of these structures on the processing system are
+ * identical to the alignments of these structures on the producing system.
+ * For this reason, precise-sized types are used.  The structures defined
+ * by this file have been laid out to minimize alignment problems by
+ * ensuring that all members are aligned on their natural boundaries.
+ * In some cases, tail-padding may be significant when different ABIs specify
+ * different tail-padding behaviors.  To avoid problems when reading or
+ * writing affected structures, MD_*_SIZE macros are provided where needed,
+ * containing the useful size of the structures without padding.
+ *
+ * Structures that are defined by Microsoft to contain a zero-length array
+ * are instead defined here to contain an array with one element, as
+ * zero-length arrays are forbidden by standard C and C++.  In these cases,
+ * *_minsize constants are provided to be used in place of sizeof.  For a
+ * cleaner interface to these sizes when using C++, see minidump_size.h.
+ *
+ * These structures are also sufficient to populate minidump files.
+ *
+ * Because precise data type sizes are crucial for this implementation to
+ * function properly and portably, a set of primitive types with known sizes
+ * are used as the basis of each structure defined by this file.
+ *
+ * Author: Julian Seward
+ */
+
+/*
+ * ARM support
+ */
+
+#ifndef GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_ARM_H__
+#define GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_ARM_H__
+
+#define MD_FLOATINGSAVEAREA_ARM_FPR_COUNT 32
+#define MD_FLOATINGSAVEAREA_ARM_FPEXTRA_COUNT 8
+
+/*
+ * Note that these structures *do not* map directly to the CONTEXT
+ * structure defined in WinNT.h in the Windows Mobile SDK. That structure
+ * does not accomodate VFPv3, and I'm unsure if it was ever used in the
+ * wild anyway, as Windows CE only seems to produce "cedumps" which
+ * are not exactly minidumps.
+ */
+typedef struct {
+  uint64_t      fpscr;      /* FPU status register */
+
+  /* 32 64-bit floating point registers, d0 .. d31. */
+  uint64_t      regs[MD_FLOATINGSAVEAREA_ARM_FPR_COUNT];
+
+  /* Miscellaneous control words */
+  uint32_t     extra[MD_FLOATINGSAVEAREA_ARM_FPEXTRA_COUNT];
+} MDFloatingSaveAreaARM;
+
+#define MD_CONTEXT_ARM_GPR_COUNT 16
+
+typedef struct {
+  /* The next field determines the layout of the structure, and which parts
+   * of it are populated
+   */
+  uint32_t      context_flags;
+
+  /* 16 32-bit integer registers, r0 .. r15
+   * Note the following fixed uses:
+   *   r13 is the stack pointer
+   *   r14 is the link register
+   *   r15 is the program counter
+   */
+  uint32_t     iregs[MD_CONTEXT_ARM_GPR_COUNT];
+
+  /* CPSR (flags, basically): 32 bits:
+        bit 31 - N (negative)
+        bit 30 - Z (zero)
+        bit 29 - C (carry)
+        bit 28 - V (overflow)
+        bit 27 - Q (saturation flag, sticky)
+     All other fields -- ignore */
+  uint32_t    cpsr;
+
+  /* The next field is included with MD_CONTEXT_ARM_FLOATING_POINT */
+  MDFloatingSaveAreaARM float_save;
+
+} MDRawContextARM;
+
+/* Indices into iregs for registers with a dedicated or conventional
+ * purpose.
+ */
+enum MDARMRegisterNumbers {
+  MD_CONTEXT_ARM_REG_IOS_FP = 7,
+  MD_CONTEXT_ARM_REG_FP     = 11,
+  MD_CONTEXT_ARM_REG_SP     = 13,
+  MD_CONTEXT_ARM_REG_LR     = 14,
+  MD_CONTEXT_ARM_REG_PC     = 15
+};
+
+/* For (MDRawContextARM).context_flags.  These values indicate the type of
+ * context stored in the structure. */
+/* CONTEXT_ARM from the Windows CE 5.0 SDK. This value isn't correct
+ * because this bit can be used for flags. Presumably this value was
+ * never actually used in minidumps, but only in "CEDumps" which
+ * are a whole parallel minidump file format for Windows CE.
+ * Therefore, Breakpad defines its own value for ARM CPUs.
+ */
+#define MD_CONTEXT_ARM_OLD               0x00000040
+/* This value was chosen to avoid likely conflicts with MD_CONTEXT_*
+ * for other CPUs. */
+#define MD_CONTEXT_ARM                   0x40000000
+#define MD_CONTEXT_ARM_INTEGER           (MD_CONTEXT_ARM | 0x00000002)
+#define MD_CONTEXT_ARM_FLOATING_POINT    (MD_CONTEXT_ARM | 0x00000004)
+
+#define MD_CONTEXT_ARM_FULL              (MD_CONTEXT_ARM_INTEGER | \
+                                          MD_CONTEXT_ARM_FLOATING_POINT)
+
+#define MD_CONTEXT_ARM_ALL               (MD_CONTEXT_ARM_INTEGER | \
+                                          MD_CONTEXT_ARM_FLOATING_POINT)
+
+#endif  /* GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_ARM_H__ */
diff --git a/google-breakpad/src/google_breakpad/common/minidump_cpu_arm64.h b/google-breakpad/src/google_breakpad/common/minidump_cpu_arm64.h
new file mode 100644
index 0000000..5ace0d9
--- /dev/null
+++ b/google-breakpad/src/google_breakpad/common/minidump_cpu_arm64.h
@@ -0,0 +1,140 @@
+/* Copyright 2013 Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
+
+/* minidump_format.h: A cross-platform reimplementation of minidump-related
+ * portions of DbgHelp.h from the Windows Platform SDK.
+ *
+ * (This is C99 source, please don't corrupt it with C++.)
+ *
+ * This file contains the necessary definitions to read minidump files
+ * produced on ARM.  These files may be read on any platform provided
+ * that the alignments of these structures on the processing system are
+ * identical to the alignments of these structures on the producing system.
+ * For this reason, precise-sized types are used.  The structures defined
+ * by this file have been laid out to minimize alignment problems by
+ * ensuring that all members are aligned on their natural boundaries.
+ * In some cases, tail-padding may be significant when different ABIs specify
+ * different tail-padding behaviors.  To avoid problems when reading or
+ * writing affected structures, MD_*_SIZE macros are provided where needed,
+ * containing the useful size of the structures without padding.
+ *
+ * Structures that are defined by Microsoft to contain a zero-length array
+ * are instead defined here to contain an array with one element, as
+ * zero-length arrays are forbidden by standard C and C++.  In these cases,
+ * *_minsize constants are provided to be used in place of sizeof.  For a
+ * cleaner interface to these sizes when using C++, see minidump_size.h.
+ *
+ * These structures are also sufficient to populate minidump files.
+ *
+ * Because precise data type sizes are crucial for this implementation to
+ * function properly and portably, a set of primitive types with known sizes
+ * are used as the basis of each structure defined by this file.
+ *
+ * Author: Colin Blundell
+ */
+
+/*
+ * ARM64 support
+ */
+
+#ifndef GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_ARM64_H__
+#define GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_ARM64_H__
+
+#define MD_FLOATINGSAVEAREA_ARM64_FPR_COUNT 32
+
+typedef struct {
+  uint32_t       fpsr;      /* FPU status register */
+  uint32_t       fpcr;      /* FPU control register */
+
+  /* 32 128-bit floating point registers, d0 .. d31. */
+  uint128_struct regs[MD_FLOATINGSAVEAREA_ARM64_FPR_COUNT];
+} MDFloatingSaveAreaARM64;
+
+#define MD_CONTEXT_ARM64_GPR_COUNT 33
+
+/* Use the same 32-bit alignment when accessing this structure from 64-bit code
+ * as is used natively in 32-bit code. */
+#pragma pack(push, 4)
+
+typedef struct {
+  /* The next field determines the layout of the structure, and which parts
+   * of it are populated
+   */
+  uint64_t      context_flags;
+
+  /* 33 64-bit integer registers, x0 .. x31 + the PC
+   * Note the following fixed uses:
+   *   x29 is the frame pointer
+   *   x30 is the link register
+   *   x31 is the stack pointer
+   *   The PC is effectively x32.
+   */
+  uint64_t     iregs[MD_CONTEXT_ARM64_GPR_COUNT];
+
+  /* CPSR (flags, basically): 32 bits:
+        bit 31 - N (negative)
+        bit 30 - Z (zero)
+        bit 29 - C (carry)
+        bit 28 - V (overflow)
+        bit 27 - Q (saturation flag, sticky)
+     All other fields -- ignore */
+  uint32_t    cpsr;
+
+  /* The next field is included with MD_CONTEXT64_ARM_FLOATING_POINT */
+  MDFloatingSaveAreaARM64 float_save;
+
+} MDRawContextARM64;
+
+#pragma pack(pop)
+
+/* Indices into iregs for registers with a dedicated or conventional
+ * purpose.
+ */
+enum MDARM64RegisterNumbers {
+  MD_CONTEXT_ARM64_REG_FP     = 29,
+  MD_CONTEXT_ARM64_REG_LR     = 30,
+  MD_CONTEXT_ARM64_REG_SP     = 31,
+  MD_CONTEXT_ARM64_REG_PC     = 32
+};
+
+/* For (MDRawContextARM64).context_flags.  These values indicate the type of
+ * context stored in the structure. MD_CONTEXT_ARM64 is Breakpad-defined.
+ * This value was chosen to avoid likely conflicts with MD_CONTEXT_*
+ * for other CPUs. */
+#define MD_CONTEXT_ARM64                   0x80000000
+#define MD_CONTEXT_ARM64_INTEGER           (MD_CONTEXT_ARM64 | 0x00000002)
+#define MD_CONTEXT_ARM64_FLOATING_POINT    (MD_CONTEXT_ARM64 | 0x00000004)
+
+#define MD_CONTEXT_ARM64_FULL              (MD_CONTEXT_ARM64_INTEGER | \
+                                          MD_CONTEXT_ARM64_FLOATING_POINT)
+
+#define MD_CONTEXT_ARM64_ALL               (MD_CONTEXT_ARM64_INTEGER | \
+                                          MD_CONTEXT_ARM64_FLOATING_POINT)
+
+#endif  /* GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_ARM64_H__ */
diff --git a/google-breakpad/src/google_breakpad/common/minidump_cpu_mips.h b/google-breakpad/src/google_breakpad/common/minidump_cpu_mips.h
new file mode 100644
index 0000000..4378aac
--- /dev/null
+++ b/google-breakpad/src/google_breakpad/common/minidump_cpu_mips.h
@@ -0,0 +1,178 @@
+/* Copyright (c) 2013, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
+
+/* minidump_format.h: A cross-platform reimplementation of minidump-related
+ * portions of DbgHelp.h from the Windows Platform SDK.
+ *
+ * (This is C99 source, please don't corrupt it with C++.)
+ *
+ * This file contains the necessary definitions to read minidump files
+ * produced on MIPS.  These files may be read on any platform provided
+ * that the alignments of these structures on the processing system are
+ * identical to the alignments of these structures on the producing system.
+ * For this reason, precise-sized types are used.  The structures defined
+ * by this file have been laid out to minimize alignment problems by
+ * ensuring that all members are aligned on their natural boundaries.
+ * In some cases, tail-padding may be significant when different ABIs specify
+ * different tail-padding behaviors.  To avoid problems when reading or
+ * writing affected structures, MD_*_SIZE macros are provided where needed,
+ * containing the useful size of the structures without padding.
+ *
+ * Structures that are defined by Microsoft to contain a zero-length array
+ * are instead defined here to contain an array with one element, as
+ * zero-length arrays are forbidden by standard C and C++.  In these cases,
+ * *_minsize constants are provided to be used in place of sizeof.  For a
+ * cleaner interface to these sizes when using C++, see minidump_size.h.
+ *
+ * These structures are also sufficient to populate minidump files.
+ *
+ * Because precise data type sizes are crucial for this implementation to
+ * function properly and portably, a set of primitive types with known sizes
+ * are used as the basis of each structure defined by this file.
+ *
+ * Author: Chris Dearman
+ */
+
+/*
+ * MIPS support
+ */
+
+#ifndef GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_MIPS_H__
+#define GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_MIPS_H__
+
+#if defined(__mips__) && !defined(__ANDROID__)
+typedef struct {
+  uint64_t regs[32];
+  uint64_t lo;
+  uint64_t hi;
+  uint64_t epc;
+  uint64_t badvaddr;
+  uint64_t status;
+  uint64_t cause;
+} user_regs_struct;
+
+typedef struct {
+  uint64_t regs[32];
+  uint32_t fpcsr;
+  uint32_t fir;
+} user_fpregs_struct;
+#endif
+
+#define MD_CONTEXT_MIPS_GPR_COUNT 32
+#define MD_FLOATINGSAVEAREA_MIPS_FPR_COUNT 32
+#define MD_CONTEXT_MIPS_DSP_COUNT 3
+
+/*
+ * Note that these structures *do not* map directly to the CONTEXT
+ * structure defined in WinNT.h in the Windows Mobile SDK. That structure
+ * does not accomodate VFPv3, and I'm unsure if it was ever used in the
+ * wild anyway, as Windows CE only seems to produce "cedumps" which
+ * are not exactly minidumps.
+ */
+typedef struct {
+  /* 32 64-bit floating point registers, f0..f31 */
+  uint64_t regs[MD_FLOATINGSAVEAREA_MIPS_FPR_COUNT];
+
+  uint32_t fpcsr; /* FPU status register. */
+  uint32_t fir; /* FPU implementation register. */
+} MDFloatingSaveAreaMIPS;
+
+typedef struct {
+  /* The next field determines the layout of the structure, and which parts
+   * of it are populated.
+   */
+  uint32_t context_flags;
+  uint32_t _pad0;
+
+  /* 32 64-bit integer registers, r0..r31.
+   * Note the following fixed uses:
+   *   r30 is the stack pointer.
+   *   r31 is the return address (link register).
+   */
+  uint64_t iregs[MD_CONTEXT_MIPS_GPR_COUNT];
+
+  /* multiply/divide result. */
+  uint64_t mdhi, mdlo;
+
+  /* DSP accumulators. */
+  uint32_t hi[MD_CONTEXT_MIPS_DSP_COUNT];
+  uint32_t lo[MD_CONTEXT_MIPS_DSP_COUNT];
+  uint32_t dsp_control;
+  uint32_t _pad1;
+
+  uint64_t epc;
+  uint64_t badvaddr;
+  uint32_t status;
+  uint32_t cause;
+
+  /* The next field is included with MD_CONTEXT_MIPS_FLOATING_POINT. */
+  MDFloatingSaveAreaMIPS float_save;
+
+} MDRawContextMIPS;
+
+/* Indices into iregs for registers with a dedicated or conventional
+ * purpose.
+ */
+enum MDMIPSRegisterNumbers {
+  MD_CONTEXT_MIPS_REG_S0     = 16,
+  MD_CONTEXT_MIPS_REG_S1     = 17,
+  MD_CONTEXT_MIPS_REG_S2     = 18,
+  MD_CONTEXT_MIPS_REG_S3     = 19,
+  MD_CONTEXT_MIPS_REG_S4     = 20,
+  MD_CONTEXT_MIPS_REG_S5     = 21,
+  MD_CONTEXT_MIPS_REG_S6     = 22,
+  MD_CONTEXT_MIPS_REG_S7     = 23,
+  MD_CONTEXT_MIPS_REG_GP     = 28,
+  MD_CONTEXT_MIPS_REG_SP     = 29,
+  MD_CONTEXT_MIPS_REG_FP     = 30,
+  MD_CONTEXT_MIPS_REG_RA     = 31,
+};
+
+/* For (MDRawContextMIPS).context_flags.  These values indicate the type of
+ * context stored in the structure. */
+/* CONTEXT_MIPS from the Windows CE 5.0 SDK. This value isn't correct
+ * because this bit can be used for flags. Presumably this value was
+ * never actually used in minidumps, but only in "CEDumps" which
+ * are a whole parallel minidump file format for Windows CE.
+ * Therefore, Breakpad defines its own value for MIPS CPUs.
+ */
+#define MD_CONTEXT_MIPS  0x00040000
+#define MD_CONTEXT_MIPS_INTEGER           (MD_CONTEXT_MIPS | 0x00000002)
+#define MD_CONTEXT_MIPS_FLOATING_POINT    (MD_CONTEXT_MIPS | 0x00000004)
+#define MD_CONTEXT_MIPS_DSP               (MD_CONTEXT_MIPS | 0x00000008)
+
+#define MD_CONTEXT_MIPS_FULL              (MD_CONTEXT_MIPS_INTEGER | \
+                                           MD_CONTEXT_MIPS_FLOATING_POINT | \
+                                           MD_CONTEXT_MIPS_DSP)
+
+#define MD_CONTEXT_MIPS_ALL               (MD_CONTEXT_MIPS_INTEGER | \
+                                           MD_CONTEXT_MIPS_FLOATING_POINT \
+                                           MD_CONTEXT_MIPS_DSP)
+
+#endif  // GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_MIPS_H__
diff --git a/google-breakpad/src/google_breakpad/common/minidump_cpu_ppc.h b/google-breakpad/src/google_breakpad/common/minidump_cpu_ppc.h
new file mode 100644
index 0000000..02ac322
--- /dev/null
+++ b/google-breakpad/src/google_breakpad/common/minidump_cpu_ppc.h
@@ -0,0 +1,163 @@
+/* Copyright (c) 2006, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
+
+/* minidump_format.h: A cross-platform reimplementation of minidump-related
+ * portions of DbgHelp.h from the Windows Platform SDK.
+ *
+ * (This is C99 source, please don't corrupt it with C++.)
+ *
+ * This file contains the necessary definitions to read minidump files
+ * produced on ppc.  These files may be read on any platform provided
+ * that the alignments of these structures on the processing system are
+ * identical to the alignments of these structures on the producing system.
+ * For this reason, precise-sized types are used.  The structures defined
+ * by this file have been laid out to minimize alignment problems by ensuring
+ * ensuring that all members are aligned on their natural boundaries.  In
+ * In some cases, tail-padding may be significant when different ABIs specify
+ * different tail-padding behaviors.  To avoid problems when reading or
+ * writing affected structures, MD_*_SIZE macros are provided where needed,
+ * containing the useful size of the structures without padding.
+ *
+ * Structures that are defined by Microsoft to contain a zero-length array
+ * are instead defined here to contain an array with one element, as
+ * zero-length arrays are forbidden by standard C and C++.  In these cases,
+ * *_minsize constants are provided to be used in place of sizeof.  For a
+ * cleaner interface to these sizes when using C++, see minidump_size.h.
+ *
+ * These structures are also sufficient to populate minidump files.
+ *
+ * These definitions may be extended to support handling minidump files
+ * for other CPUs and other operating systems.
+ *
+ * Because precise data type sizes are crucial for this implementation to
+ * function properly and portably in terms of interoperability with minidumps
+ * produced by DbgHelp on Windows, a set of primitive types with known sizes
+ * are used as the basis of each structure defined by this file.  DbgHelp
+ * on Windows is assumed to be the reference implementation; this file
+ * seeks to provide a cross-platform compatible implementation.  To avoid
+ * collisions with the types and values defined and used by DbgHelp in the
+ * event that this implementation is used on Windows, each type and value
+ * defined here is given a new name, beginning with "MD".  Names of the
+ * equivalent types and values in the Windows Platform SDK are given in
+ * comments.
+ *
+ * Author: Mark Mentovai 
+ * Change to split into its own file: Neal Sidhwaney */
+
+/*
+ * Breakpad minidump extension for PowerPC support.  Based on Darwin/Mac OS X'
+ * mach/ppc/_types.h
+ */
+
+#ifndef GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_PPC_H__
+#define GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_PPC_H__
+
+#define MD_FLOATINGSAVEAREA_PPC_FPR_COUNT 32
+
+typedef struct {
+  /* fpregs is a double[32] in mach/ppc/_types.h, but a uint64_t is used
+   * here for precise sizing. */
+  uint64_t fpregs[MD_FLOATINGSAVEAREA_PPC_FPR_COUNT];
+  uint32_t fpscr_pad;
+  uint32_t fpscr;      /* Status/control */
+} MDFloatingSaveAreaPPC;  /* Based on ppc_float_state */
+
+
+#define MD_VECTORSAVEAREA_PPC_VR_COUNT 32
+
+typedef struct {
+  /* Vector registers (including vscr) are 128 bits, but mach/ppc/_types.h
+   * exposes them as four 32-bit quantities. */
+  uint128_struct save_vr[MD_VECTORSAVEAREA_PPC_VR_COUNT];
+  uint128_struct save_vscr;  /* Status/control */
+  uint32_t       save_pad5[4];
+  uint32_t       save_vrvalid;  /* Indicates which vector registers are saved */
+  uint32_t       save_pad6[7];
+} MDVectorSaveAreaPPC;  /* ppc_vector_state */
+
+
+#define MD_CONTEXT_PPC_GPR_COUNT 32
+
+/* Use the same 32-bit alignment when accessing this structure from 64-bit code
+ * as is used natively in 32-bit code.  #pragma pack is a MSVC extension
+ * supported by gcc. */
+#if defined(__SUNPRO_C) || defined(__SUNPRO_CC)
+#pragma pack(4)
+#else
+#pragma pack(push, 4)
+#endif
+
+typedef struct {
+  /* context_flags is not present in ppc_thread_state, but it aids
+   * identification of MDRawContextPPC among other raw context types,
+   * and it guarantees alignment when we get to float_save. */
+  uint32_t              context_flags;
+
+  uint32_t              srr0;    /* Machine status save/restore: stores pc
+                                  * (instruction) */
+  uint32_t              srr1;    /* Machine status save/restore: stores msr
+                                  * (ps, program/machine state) */
+  /* ppc_thread_state contains 32 fields, r0 .. r31.  Here, an array is
+   * used for brevity. */
+  uint32_t              gpr[MD_CONTEXT_PPC_GPR_COUNT];
+  uint32_t              cr;      /* Condition */
+  uint32_t              xer;     /* Integer (fiXed-point) exception */
+  uint32_t              lr;      /* Link */
+  uint32_t              ctr;     /* Count */
+  uint32_t              mq;      /* Multiply/Quotient (PPC 601, POWER only) */
+  uint32_t              vrsave;  /* Vector save */
+
+  /* float_save and vector_save aren't present in ppc_thread_state, but
+   * are represented in separate structures that still define a thread's
+   * context. */
+  MDFloatingSaveAreaPPC float_save;
+  MDVectorSaveAreaPPC   vector_save;
+} MDRawContextPPC;  /* Based on ppc_thread_state */
+
+#if defined(__SUNPRO_C) || defined(__SUNPRO_CC)
+#pragma pack(0)
+#else
+#pragma pack(pop)
+#endif
+
+/* For (MDRawContextPPC).context_flags.  These values indicate the type of
+ * context stored in the structure.  MD_CONTEXT_PPC is Breakpad-defined.  Its
+ * value was chosen to avoid likely conflicts with MD_CONTEXT_* for other
+ * CPUs. */
+#define MD_CONTEXT_PPC                0x20000000
+#define MD_CONTEXT_PPC_BASE           (MD_CONTEXT_PPC | 0x00000001)
+#define MD_CONTEXT_PPC_FLOATING_POINT (MD_CONTEXT_PPC | 0x00000008)
+#define MD_CONTEXT_PPC_VECTOR         (MD_CONTEXT_PPC | 0x00000020)
+
+#define MD_CONTEXT_PPC_FULL           MD_CONTEXT_PPC_BASE
+#define MD_CONTEXT_PPC_ALL            (MD_CONTEXT_PPC_FULL | \
+                                       MD_CONTEXT_PPC_FLOATING_POINT | \
+                                       MD_CONTEXT_PPC_VECTOR)
+
+#endif /* GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_PPC_H__ */
diff --git a/google-breakpad/src/google_breakpad/common/minidump_cpu_ppc64.h b/google-breakpad/src/google_breakpad/common/minidump_cpu_ppc64.h
new file mode 100644
index 0000000..3a88323
--- /dev/null
+++ b/google-breakpad/src/google_breakpad/common/minidump_cpu_ppc64.h
@@ -0,0 +1,129 @@
+/* Copyright (c) 2008, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
+
+/* minidump_format.h: A cross-platform reimplementation of minidump-related
+ * portions of DbgHelp.h from the Windows Platform SDK.
+ *
+ * (This is C99 source, please don't corrupt it with C++.)
+ *
+ * This file contains the necessary definitions to read minidump files
+ * produced on ppc64.  These files may be read on any platform provided
+ * that the alignments of these structures on the processing system are
+ * identical to the alignments of these structures on the producing system.
+ * For this reason, precise-sized types are used.  The structures defined
+ * by this file have been laid out to minimize alignment problems by ensuring
+ * ensuring that all members are aligned on their natural boundaries.  In
+ * In some cases, tail-padding may be significant when different ABIs specify
+ * different tail-padding behaviors.  To avoid problems when reading or
+ * writing affected structures, MD_*_SIZE macros are provided where needed,
+ * containing the useful size of the structures without padding.
+ *
+ * Structures that are defined by Microsoft to contain a zero-length array
+ * are instead defined here to contain an array with one element, as
+ * zero-length arrays are forbidden by standard C and C++.  In these cases,
+ * *_minsize constants are provided to be used in place of sizeof.  For a
+ * cleaner interface to these sizes when using C++, see minidump_size.h.
+ *
+ * These structures are also sufficient to populate minidump files.
+ *
+ * These definitions may be extended to support handling minidump files
+ * for other CPUs and other operating systems.
+ *
+ * Because precise data type sizes are crucial for this implementation to
+ * function properly and portably in terms of interoperability with minidumps
+ * produced by DbgHelp on Windows, a set of primitive types with known sizes
+ * are used as the basis of each structure defined by this file.  DbgHelp
+ * on Windows is assumed to be the reference implementation; this file
+ * seeks to provide a cross-platform compatible implementation.  To avoid
+ * collisions with the types and values defined and used by DbgHelp in the
+ * event that this implementation is used on Windows, each type and value
+ * defined here is given a new name, beginning with "MD".  Names of the
+ * equivalent types and values in the Windows Platform SDK are given in
+ * comments.
+ *
+ * Author: Neal Sidhwaney */
+
+
+/*
+ * Breakpad minidump extension for PPC64 support.  Based on Darwin/Mac OS X'
+ * mach/ppc/_types.h
+ */
+
+#ifndef GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_PPC64_H__
+#define GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_PPC64_H__
+
+#include "minidump_cpu_ppc.h"
+
+// these types are the same in ppc64 & ppc
+typedef MDFloatingSaveAreaPPC MDFloatingSaveAreaPPC64;
+typedef MDVectorSaveAreaPPC MDVectorSaveAreaPPC64;
+
+#define MD_CONTEXT_PPC64_GPR_COUNT MD_CONTEXT_PPC_GPR_COUNT
+
+typedef struct {
+  /* context_flags is not present in ppc_thread_state, but it aids
+   * identification of MDRawContextPPC among other raw context types,
+   * and it guarantees alignment when we get to float_save. */
+  uint64_t              context_flags;
+
+  uint64_t              srr0;    /* Machine status save/restore: stores pc
+                                  * (instruction) */
+  uint64_t              srr1;    /* Machine status save/restore: stores msr
+                                  * (ps, program/machine state) */
+  /* ppc_thread_state contains 32 fields, r0 .. r31.  Here, an array is
+   * used for brevity. */
+  uint64_t              gpr[MD_CONTEXT_PPC64_GPR_COUNT];
+  uint64_t              cr;      /* Condition */
+  uint64_t              xer;     /* Integer (fiXed-point) exception */
+  uint64_t              lr;      /* Link */
+  uint64_t              ctr;     /* Count */
+  uint64_t              vrsave;  /* Vector save */
+
+  /* float_save and vector_save aren't present in ppc_thread_state, but
+   * are represented in separate structures that still define a thread's
+   * context. */
+  MDFloatingSaveAreaPPC float_save;
+  MDVectorSaveAreaPPC   vector_save;
+} MDRawContextPPC64;  /* Based on ppc_thread_state */
+
+/* For (MDRawContextPPC).context_flags.  These values indicate the type of
+ * context stored in the structure.  MD_CONTEXT_PPC is Breakpad-defined.  Its
+ * value was chosen to avoid likely conflicts with MD_CONTEXT_* for other
+ * CPUs. */
+#define MD_CONTEXT_PPC64                0x01000000
+#define MD_CONTEXT_PPC64_BASE           (MD_CONTEXT_PPC64 | 0x00000001)
+#define MD_CONTEXT_PPC64_FLOATING_POINT (MD_CONTEXT_PPC64 | 0x00000008)
+#define MD_CONTEXT_PPC64_VECTOR         (MD_CONTEXT_PPC64 | 0x00000020)
+
+#define MD_CONTEXT_PPC64_FULL           MD_CONTEXT_PPC64_BASE
+#define MD_CONTEXT_PPC64_ALL            (MD_CONTEXT_PPC64_FULL | \
+                                         MD_CONTEXT_PPC64_FLOATING_POINT | \
+                                         MD_CONTEXT_PPC64_VECTOR)
+
+#endif /* GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_PPC64_H__ */
diff --git a/google-breakpad/src/google_breakpad/common/minidump_cpu_sparc.h b/google-breakpad/src/google_breakpad/common/minidump_cpu_sparc.h
new file mode 100644
index 0000000..ddc4c75
--- /dev/null
+++ b/google-breakpad/src/google_breakpad/common/minidump_cpu_sparc.h
@@ -0,0 +1,158 @@
+/* Copyright (c) 2006, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
+
+/* minidump_format.h: A cross-platform reimplementation of minidump-related
+ * portions of DbgHelp.h from the Windows Platform SDK.
+ *
+ * (This is C99 source, please don't corrupt it with C++.)
+ *
+ * This file contains the necessary definitions to read minidump files
+ * produced on sparc.  These files may be read on any platform provided
+ * that the alignments of these structures on the processing system are
+ * identical to the alignments of these structures on the producing system.
+ * For this reason, precise-sized types are used.  The structures defined
+ * by this file have been laid out to minimize alignment problems by ensuring
+ * ensuring that all members are aligned on their natural boundaries.  In
+ * In some cases, tail-padding may be significant when different ABIs specify
+ * different tail-padding behaviors.  To avoid problems when reading or
+ * writing affected structures, MD_*_SIZE macros are provided where needed,
+ * containing the useful size of the structures without padding.
+ *
+ * Structures that are defined by Microsoft to contain a zero-length array
+ * are instead defined here to contain an array with one element, as
+ * zero-length arrays are forbidden by standard C and C++.  In these cases,
+ * *_minsize constants are provided to be used in place of sizeof.  For a
+ * cleaner interface to these sizes when using C++, see minidump_size.h.
+ *
+ * These structures are also sufficient to populate minidump files.
+ *
+ * These definitions may be extended to support handling minidump files
+ * for other CPUs and other operating systems.
+ *
+ * Because precise data type sizes are crucial for this implementation to
+ * function properly and portably in terms of interoperability with minidumps
+ * produced by DbgHelp on Windows, a set of primitive types with known sizes
+ * are used as the basis of each structure defined by this file.  DbgHelp
+ * on Windows is assumed to be the reference implementation; this file
+ * seeks to provide a cross-platform compatible implementation.  To avoid
+ * collisions with the types and values defined and used by DbgHelp in the
+ * event that this implementation is used on Windows, each type and value
+ * defined here is given a new name, beginning with "MD".  Names of the
+ * equivalent types and values in the Windows Platform SDK are given in
+ * comments.
+ *
+ * Author: Mark Mentovai
+ * Change to split into its own file: Neal Sidhwaney */
+
+/*
+ * SPARC support, see (solaris)sys/procfs_isa.h also
+ */
+
+#ifndef GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_SPARC_H__
+#define GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_SPARC_H__
+
+#define MD_FLOATINGSAVEAREA_SPARC_FPR_COUNT 32
+
+typedef struct {
+
+  /* FPU floating point regs */
+  uint64_t      regs[MD_FLOATINGSAVEAREA_SPARC_FPR_COUNT];
+
+  uint64_t      filler;
+  uint64_t      fsr;        /* FPU status register */
+} MDFloatingSaveAreaSPARC;  /* FLOATING_SAVE_AREA */
+
+#define MD_CONTEXT_SPARC_GPR_COUNT 32
+
+typedef struct {
+  /* The next field determines the layout of the structure, and which parts
+   * of it are populated
+   */
+  uint32_t      context_flags;
+  uint32_t      flag_pad;
+  /*
+   * General register access (SPARC).
+   * Don't confuse definitions here with definitions in <sys/regset.h>.
+   * Registers are 32 bits for ILP32, 64 bits for LP64.
+   * SPARC V7/V8 is for 32bit, SPARC V9 is for 64bit
+   */
+
+  /* 32 Integer working registers */
+
+  /* g_r[0-7]   global registers(g0-g7)
+   * g_r[8-15]  out registers(o0-o7)
+   * g_r[16-23] local registers(l0-l7)
+   * g_r[24-31] in registers(i0-i7)
+   */
+  uint64_t     g_r[MD_CONTEXT_SPARC_GPR_COUNT];
+
+  /* several control registers */
+
+  /* Processor State register(PSR) for SPARC V7/V8
+   * Condition Code register (CCR) for SPARC V9
+   */
+  uint64_t     ccr;
+
+  uint64_t     pc;     /* Program Counter register (PC) */
+  uint64_t     npc;    /* Next Program Counter register (nPC) */
+  uint64_t     y;      /* Y register (Y) */
+
+  /* Address Space Identifier register (ASI) for SPARC V9
+   * WIM for SPARC V7/V8
+   */
+  uint64_t     asi;
+
+  /* Floating-Point Registers State register (FPRS) for SPARC V9
+   * TBR for for SPARC V7/V8
+   */
+  uint64_t     fprs;
+
+  /* The next field is included with MD_CONTEXT_SPARC_FLOATING_POINT */
+  MDFloatingSaveAreaSPARC float_save;
+
+} MDRawContextSPARC;  /* CONTEXT_SPARC */
+
+/* For (MDRawContextSPARC).context_flags.  These values indicate the type of
+ * context stored in the structure.  MD_CONTEXT_SPARC is Breakpad-defined.  Its
+ * value was chosen to avoid likely conflicts with MD_CONTEXT_* for other
+ * CPUs. */
+#define MD_CONTEXT_SPARC                 0x10000000
+#define MD_CONTEXT_SPARC_CONTROL         (MD_CONTEXT_SPARC | 0x00000001)
+#define MD_CONTEXT_SPARC_INTEGER         (MD_CONTEXT_SPARC | 0x00000002)
+#define MD_CONTEXT_SAPARC_FLOATING_POINT (MD_CONTEXT_SPARC | 0x00000004)
+#define MD_CONTEXT_SAPARC_EXTRA          (MD_CONTEXT_SPARC | 0x00000008)
+
+#define MD_CONTEXT_SPARC_FULL            (MD_CONTEXT_SPARC_CONTROL | \
+                                          MD_CONTEXT_SPARC_INTEGER)
+
+#define MD_CONTEXT_SPARC_ALL             (MD_CONTEXT_SPARC_FULL | \
+                                          MD_CONTEXT_SAPARC_FLOATING_POINT | \
+                                          MD_CONTEXT_SAPARC_EXTRA)
+
+#endif /* GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_SPARC_H__ */
diff --git a/google-breakpad/src/google_breakpad/common/minidump_cpu_x86.h b/google-breakpad/src/google_breakpad/common/minidump_cpu_x86.h
new file mode 100644
index 0000000..e09cb7c
--- /dev/null
+++ b/google-breakpad/src/google_breakpad/common/minidump_cpu_x86.h
@@ -0,0 +1,174 @@
+/* Copyright (c) 2006, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
+
+/* minidump_format.h: A cross-platform reimplementation of minidump-related
+ * portions of DbgHelp.h from the Windows Platform SDK.
+ *
+ * (This is C99 source, please don't corrupt it with C++.)
+ *
+ * This file contains the necessary definitions to read minidump files
+ * produced on x86.  These files may be read on any platform provided
+ * that the alignments of these structures on the processing system are
+ * identical to the alignments of these structures on the producing system.
+ * For this reason, precise-sized types are used.  The structures defined
+ * by this file have been laid out to minimize alignment problems by ensuring
+ * ensuring that all members are aligned on their natural boundaries.  In
+ * In some cases, tail-padding may be significant when different ABIs specify
+ * different tail-padding behaviors.  To avoid problems when reading or
+ * writing affected structures, MD_*_SIZE macros are provided where needed,
+ * containing the useful size of the structures without padding.
+ *
+ * Structures that are defined by Microsoft to contain a zero-length array
+ * are instead defined here to contain an array with one element, as
+ * zero-length arrays are forbidden by standard C and C++.  In these cases,
+ * *_minsize constants are provided to be used in place of sizeof.  For a
+ * cleaner interface to these sizes when using C++, see minidump_size.h.
+ *
+ * These structures are also sufficient to populate minidump files.
+ *
+ * These definitions may be extended to support handling minidump files
+ * for other CPUs and other operating systems.
+ *
+ * Because precise data type sizes are crucial for this implementation to
+ * function properly and portably in terms of interoperability with minidumps
+ * produced by DbgHelp on Windows, a set of primitive types with known sizes
+ * are used as the basis of each structure defined by this file.  DbgHelp
+ * on Windows is assumed to be the reference implementation; this file
+ * seeks to provide a cross-platform compatible implementation.  To avoid
+ * collisions with the types and values defined and used by DbgHelp in the
+ * event that this implementation is used on Windows, each type and value
+ * defined here is given a new name, beginning with "MD".  Names of the
+ * equivalent types and values in the Windows Platform SDK are given in
+ * comments.
+ *
+ * Author: Mark Mentovai */
+
+#ifndef GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_X86_H__
+#define GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_X86_H__
+
+#define MD_FLOATINGSAVEAREA_X86_REGISTERAREA_SIZE 80
+     /* SIZE_OF_80387_REGISTERS */
+
+typedef struct {
+  uint32_t control_word;
+  uint32_t status_word;
+  uint32_t tag_word;
+  uint32_t error_offset;
+  uint32_t error_selector;
+  uint32_t data_offset;
+  uint32_t data_selector;
+
+  /* register_area contains eight 80-bit (x87 "long double") quantities for
+   * floating-point registers %st0 (%mm0) through %st7 (%mm7). */
+  uint8_t  register_area[MD_FLOATINGSAVEAREA_X86_REGISTERAREA_SIZE];
+  uint32_t cr0_npx_state;
+} MDFloatingSaveAreaX86;  /* FLOATING_SAVE_AREA */
+
+
+#define MD_CONTEXT_X86_EXTENDED_REGISTERS_SIZE 512
+     /* MAXIMUM_SUPPORTED_EXTENSION */
+
+typedef struct {
+  /* The next field determines the layout of the structure, and which parts
+   * of it are populated */
+  uint32_t             context_flags;
+
+  /* The next 6 registers are included with MD_CONTEXT_X86_DEBUG_REGISTERS */
+  uint32_t             dr0;
+  uint32_t             dr1;
+  uint32_t             dr2;
+  uint32_t             dr3;
+  uint32_t             dr6;
+  uint32_t             dr7;
+
+  /* The next field is included with MD_CONTEXT_X86_FLOATING_POINT */
+  MDFloatingSaveAreaX86 float_save;
+
+  /* The next 4 registers are included with MD_CONTEXT_X86_SEGMENTS */
+  uint32_t             gs; 
+  uint32_t             fs;
+  uint32_t             es;
+  uint32_t             ds;
+  /* The next 6 registers are included with MD_CONTEXT_X86_INTEGER */
+  uint32_t             edi;
+  uint32_t             esi;
+  uint32_t             ebx;
+  uint32_t             edx;
+  uint32_t             ecx;
+  uint32_t             eax;
+
+  /* The next 6 registers are included with MD_CONTEXT_X86_CONTROL */
+  uint32_t             ebp;
+  uint32_t             eip;
+  uint32_t             cs;      /* WinNT.h says "must be sanitized" */
+  uint32_t             eflags;  /* WinNT.h says "must be sanitized" */
+  uint32_t             esp;
+  uint32_t             ss;
+
+  /* The next field is included with MD_CONTEXT_X86_EXTENDED_REGISTERS.
+   * It contains vector (MMX/SSE) registers.  It it laid out in the
+   * format used by the fxsave and fsrstor instructions, so it includes
+   * a copy of the x87 floating-point registers as well.  See FXSAVE in
+   * "Intel Architecture Software Developer's Manual, Volume 2." */
+  uint8_t              extended_registers[
+                         MD_CONTEXT_X86_EXTENDED_REGISTERS_SIZE];
+} MDRawContextX86;  /* CONTEXT */
+
+/* For (MDRawContextX86).context_flags.  These values indicate the type of
+ * context stored in the structure.  The high 24 bits identify the CPU, the
+ * low 8 bits identify the type of context saved. */
+#define MD_CONTEXT_X86                    0x00010000
+     /* CONTEXT_i386, CONTEXT_i486: identifies CPU */
+#define MD_CONTEXT_X86_CONTROL            (MD_CONTEXT_X86 | 0x00000001)
+     /* CONTEXT_CONTROL */
+#define MD_CONTEXT_X86_INTEGER            (MD_CONTEXT_X86 | 0x00000002)
+     /* CONTEXT_INTEGER */
+#define MD_CONTEXT_X86_SEGMENTS           (MD_CONTEXT_X86 | 0x00000004)
+     /* CONTEXT_SEGMENTS */
+#define MD_CONTEXT_X86_FLOATING_POINT     (MD_CONTEXT_X86 | 0x00000008)
+     /* CONTEXT_FLOATING_POINT */
+#define MD_CONTEXT_X86_DEBUG_REGISTERS    (MD_CONTEXT_X86 | 0x00000010)
+     /* CONTEXT_DEBUG_REGISTERS */
+#define MD_CONTEXT_X86_EXTENDED_REGISTERS (MD_CONTEXT_X86 | 0x00000020)
+     /* CONTEXT_EXTENDED_REGISTERS */
+#define MD_CONTEXT_X86_XSTATE             (MD_CONTEXT_X86 | 0x00000040)
+     /* CONTEXT_XSTATE */
+
+#define MD_CONTEXT_X86_FULL              (MD_CONTEXT_X86_CONTROL | \
+                                          MD_CONTEXT_X86_INTEGER | \
+                                          MD_CONTEXT_X86_SEGMENTS)
+     /* CONTEXT_FULL */
+
+#define MD_CONTEXT_X86_ALL               (MD_CONTEXT_X86_FULL | \
+                                          MD_CONTEXT_X86_FLOATING_POINT | \
+                                          MD_CONTEXT_X86_DEBUG_REGISTERS | \
+                                          MD_CONTEXT_X86_EXTENDED_REGISTERS)
+     /* CONTEXT_ALL */
+
+#endif /* GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_X86_H__ */
diff --git a/google-breakpad/src/google_breakpad/common/minidump_exception_linux.h b/google-breakpad/src/google_breakpad/common/minidump_exception_linux.h
new file mode 100644
index 0000000..9e7e4f1
--- /dev/null
+++ b/google-breakpad/src/google_breakpad/common/minidump_exception_linux.h
@@ -0,0 +1,87 @@
+/* Copyright (c) 2006, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
+
+/* minidump_exception_linux.h: A definition of exception codes for
+ * Linux
+ *
+ * (This is C99 source, please don't corrupt it with C++.)
+ *
+ * Author: Mark Mentovai
+ * Split into its own file: Neal Sidhwaney */
+ 
+
+#ifndef GOOGLE_BREAKPAD_COMMON_MINIDUMP_EXCEPTION_LINUX_H__
+#define GOOGLE_BREAKPAD_COMMON_MINIDUMP_EXCEPTION_LINUX_H__
+
+#include <stddef.h>
+
+#include "google_breakpad/common/breakpad_types.h"
+
+
+/* For (MDException).exception_code.  These values come from bits/signum.h.
+ */
+typedef enum {
+  MD_EXCEPTION_CODE_LIN_SIGHUP = 1,      /* Hangup (POSIX) */
+  MD_EXCEPTION_CODE_LIN_SIGINT = 2,      /* Interrupt (ANSI) */
+  MD_EXCEPTION_CODE_LIN_SIGQUIT = 3,     /* Quit (POSIX) */
+  MD_EXCEPTION_CODE_LIN_SIGILL = 4,      /* Illegal instruction (ANSI) */
+  MD_EXCEPTION_CODE_LIN_SIGTRAP = 5,     /* Trace trap (POSIX) */
+  MD_EXCEPTION_CODE_LIN_SIGABRT = 6,     /* Abort (ANSI) */
+  MD_EXCEPTION_CODE_LIN_SIGBUS = 7,      /* BUS error (4.2 BSD) */
+  MD_EXCEPTION_CODE_LIN_SIGFPE = 8,      /* Floating-point exception (ANSI) */
+  MD_EXCEPTION_CODE_LIN_SIGKILL = 9,     /* Kill, unblockable (POSIX) */
+  MD_EXCEPTION_CODE_LIN_SIGUSR1 = 10,    /* User-defined signal 1 (POSIX).  */
+  MD_EXCEPTION_CODE_LIN_SIGSEGV = 11,    /* Segmentation violation (ANSI) */
+  MD_EXCEPTION_CODE_LIN_SIGUSR2 = 12,    /* User-defined signal 2 (POSIX) */
+  MD_EXCEPTION_CODE_LIN_SIGPIPE = 13,    /* Broken pipe (POSIX) */
+  MD_EXCEPTION_CODE_LIN_SIGALRM = 14,    /* Alarm clock (POSIX) */
+  MD_EXCEPTION_CODE_LIN_SIGTERM = 15,    /* Termination (ANSI) */
+  MD_EXCEPTION_CODE_LIN_SIGSTKFLT = 16,  /* Stack faultd */
+  MD_EXCEPTION_CODE_LIN_SIGCHLD = 17,    /* Child status has changed (POSIX) */
+  MD_EXCEPTION_CODE_LIN_SIGCONT = 18,    /* Continue (POSIX) */
+  MD_EXCEPTION_CODE_LIN_SIGSTOP = 19,    /* Stop, unblockable (POSIX) */
+  MD_EXCEPTION_CODE_LIN_SIGTSTP = 20,    /* Keyboard stop (POSIX) */
+  MD_EXCEPTION_CODE_LIN_SIGTTIN = 21,    /* Background read from tty (POSIX) */
+  MD_EXCEPTION_CODE_LIN_SIGTTOU = 22,    /* Background write to tty (POSIX) */
+  MD_EXCEPTION_CODE_LIN_SIGURG = 23,
+    /* Urgent condition on socket (4.2 BSD) */
+  MD_EXCEPTION_CODE_LIN_SIGXCPU = 24,    /* CPU limit exceeded (4.2 BSD) */
+  MD_EXCEPTION_CODE_LIN_SIGXFSZ = 25,
+    /* File size limit exceeded (4.2 BSD) */
+  MD_EXCEPTION_CODE_LIN_SIGVTALRM = 26,  /* Virtual alarm clock (4.2 BSD) */
+  MD_EXCEPTION_CODE_LIN_SIGPROF = 27,    /* Profiling alarm clock (4.2 BSD) */
+  MD_EXCEPTION_CODE_LIN_SIGWINCH = 28,   /* Window size change (4.3 BSD, Sun) */
+  MD_EXCEPTION_CODE_LIN_SIGIO = 29,      /* I/O now possible (4.2 BSD) */
+  MD_EXCEPTION_CODE_LIN_SIGPWR = 30,     /* Power failure restart (System V) */
+  MD_EXCEPTION_CODE_LIN_SIGSYS = 31,     /* Bad system call */
+  MD_EXCEPTION_CODE_LIN_DUMP_REQUESTED = 0xFFFFFFFF /* No exception,
+                                                       dump requested. */
+} MDExceptionCodeLinux;
+
+#endif  /* GOOGLE_BREAKPAD_COMMON_MINIDUMP_EXCEPTION_LINUX_H__ */
diff --git a/google-breakpad/src/google_breakpad/common/minidump_exception_mac.h b/google-breakpad/src/google_breakpad/common/minidump_exception_mac.h
new file mode 100644
index 0000000..91c1c09
--- /dev/null
+++ b/google-breakpad/src/google_breakpad/common/minidump_exception_mac.h
@@ -0,0 +1,205 @@
+/* Copyright (c) 2006, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
+
+/* minidump_exception_mac.h: A definition of exception codes for Mac
+ * OS X
+ *
+ * (This is C99 source, please don't corrupt it with C++.)
+ *
+ * Author: Mark Mentovai
+ * Split into its own file: Neal Sidhwaney */
+ 
+
+#ifndef GOOGLE_BREAKPAD_COMMON_MINIDUMP_EXCEPTION_MAC_H__
+#define GOOGLE_BREAKPAD_COMMON_MINIDUMP_EXCEPTION_MAC_H__
+
+#include <stddef.h>
+
+#include "google_breakpad/common/breakpad_types.h"
+
+/* For (MDException).exception_code.  Breakpad minidump extension for Mac OS X
+ * support.  Based on Darwin/Mac OS X' mach/exception_types.h.  This is
+ * what Mac OS X calls an "exception", not a "code". */
+typedef enum {
+  /* Exception code.  The high 16 bits of exception_code contains one of
+   * these values. */
+  MD_EXCEPTION_MAC_BAD_ACCESS      = 1,  /* code can be a kern_return_t */
+      /* EXC_BAD_ACCESS */
+  MD_EXCEPTION_MAC_BAD_INSTRUCTION = 2,  /* code is CPU-specific */
+      /* EXC_BAD_INSTRUCTION */
+  MD_EXCEPTION_MAC_ARITHMETIC      = 3,  /* code is CPU-specific */
+      /* EXC_ARITHMETIC */
+  MD_EXCEPTION_MAC_EMULATION       = 4,  /* code is CPU-specific */
+      /* EXC_EMULATION */
+  MD_EXCEPTION_MAC_SOFTWARE        = 5,
+      /* EXC_SOFTWARE */
+  MD_EXCEPTION_MAC_BREAKPOINT      = 6,  /* code is CPU-specific */
+      /* EXC_BREAKPOINT */
+  MD_EXCEPTION_MAC_SYSCALL         = 7,
+      /* EXC_SYSCALL */
+  MD_EXCEPTION_MAC_MACH_SYSCALL    = 8,
+      /* EXC_MACH_SYSCALL */
+  MD_EXCEPTION_MAC_RPC_ALERT       = 9
+      /* EXC_RPC_ALERT */
+} MDExceptionMac;
+
+/* For (MDException).exception_flags.  Breakpad minidump extension for Mac OS X
+ * support.  Based on Darwin/Mac OS X' mach/ppc/exception.h and
+ * mach/i386/exception.h.  This is what Mac OS X calls a "code". */
+typedef enum {
+  /* With MD_EXCEPTION_BAD_ACCESS.  These are relevant kern_return_t values
+   * from mach/kern_return.h. */
+  MD_EXCEPTION_CODE_MAC_INVALID_ADDRESS    =  1,
+      /* KERN_INVALID_ADDRESS */
+  MD_EXCEPTION_CODE_MAC_PROTECTION_FAILURE =  2,
+      /* KERN_PROTECTION_FAILURE */
+  MD_EXCEPTION_CODE_MAC_NO_ACCESS          =  8,
+      /* KERN_NO_ACCESS */
+  MD_EXCEPTION_CODE_MAC_MEMORY_FAILURE     =  9,
+      /* KERN_MEMORY_FAILURE */
+  MD_EXCEPTION_CODE_MAC_MEMORY_ERROR       = 10,
+      /* KERN_MEMORY_ERROR */
+
+  /* With MD_EXCEPTION_SOFTWARE */
+  MD_EXCEPTION_CODE_MAC_BAD_SYSCALL  = 0x00010000,  /* Mach SIGSYS */
+  MD_EXCEPTION_CODE_MAC_BAD_PIPE     = 0x00010001,  /* Mach SIGPIPE */
+  MD_EXCEPTION_CODE_MAC_ABORT        = 0x00010002,  /* Mach SIGABRT */
+  /* Custom values */
+  MD_EXCEPTION_CODE_MAC_NS_EXCEPTION = 0xDEADC0DE,  /* uncaught NSException */
+
+  /* With MD_EXCEPTION_MAC_BAD_ACCESS on arm */
+  MD_EXCEPTION_CODE_MAC_ARM_DA_ALIGN = 0x0101,  /* EXC_ARM_DA_ALIGN */
+  MD_EXCEPTION_CODE_MAC_ARM_DA_DEBUG = 0x0102,  /* EXC_ARM_DA_DEBUG */
+
+  /* With MD_EXCEPTION_MAC_BAD_INSTRUCTION on arm */
+  MD_EXCEPTION_CODE_MAC_ARM_UNDEFINED = 1,  /* EXC_ARM_UNDEFINED */
+
+  /* With MD_EXCEPTION_MAC_BREAKPOINT on arm */
+  MD_EXCEPTION_CODE_MAC_ARM_BREAKPOINT = 1, /* EXC_ARM_BREAKPOINT */
+
+  /* With MD_EXCEPTION_MAC_BAD_ACCESS on ppc */
+  MD_EXCEPTION_CODE_MAC_PPC_VM_PROT_READ = 0x0101,
+      /* EXC_PPC_VM_PROT_READ */
+  MD_EXCEPTION_CODE_MAC_PPC_BADSPACE     = 0x0102,
+      /* EXC_PPC_BADSPACE */
+  MD_EXCEPTION_CODE_MAC_PPC_UNALIGNED    = 0x0103,
+      /* EXC_PPC_UNALIGNED */
+
+  /* With MD_EXCEPTION_MAC_BAD_INSTRUCTION on ppc */
+  MD_EXCEPTION_CODE_MAC_PPC_INVALID_SYSCALL           = 1,
+      /* EXC_PPC_INVALID_SYSCALL */
+  MD_EXCEPTION_CODE_MAC_PPC_UNIMPLEMENTED_INSTRUCTION = 2,
+      /* EXC_PPC_UNIPL_INST */
+  MD_EXCEPTION_CODE_MAC_PPC_PRIVILEGED_INSTRUCTION    = 3,
+      /* EXC_PPC_PRIVINST */
+  MD_EXCEPTION_CODE_MAC_PPC_PRIVILEGED_REGISTER       = 4,
+      /* EXC_PPC_PRIVREG */
+  MD_EXCEPTION_CODE_MAC_PPC_TRACE                     = 5,
+      /* EXC_PPC_TRACE */
+  MD_EXCEPTION_CODE_MAC_PPC_PERFORMANCE_MONITOR       = 6,
+      /* EXC_PPC_PERFMON */
+
+  /* With MD_EXCEPTION_MAC_ARITHMETIC on ppc */
+  MD_EXCEPTION_CODE_MAC_PPC_OVERFLOW           = 1,
+      /* EXC_PPC_OVERFLOW */
+  MD_EXCEPTION_CODE_MAC_PPC_ZERO_DIVIDE        = 2,
+      /* EXC_PPC_ZERO_DIVIDE */
+  MD_EXCEPTION_CODE_MAC_PPC_FLOAT_INEXACT      = 3,
+      /* EXC_FLT_INEXACT */
+  MD_EXCEPTION_CODE_MAC_PPC_FLOAT_ZERO_DIVIDE  = 4,
+      /* EXC_PPC_FLT_ZERO_DIVIDE */
+  MD_EXCEPTION_CODE_MAC_PPC_FLOAT_UNDERFLOW    = 5,
+      /* EXC_PPC_FLT_UNDERFLOW */
+  MD_EXCEPTION_CODE_MAC_PPC_FLOAT_OVERFLOW     = 6,
+      /* EXC_PPC_FLT_OVERFLOW */
+  MD_EXCEPTION_CODE_MAC_PPC_FLOAT_NOT_A_NUMBER = 7,
+      /* EXC_PPC_FLT_NOT_A_NUMBER */
+
+  /* With MD_EXCEPTION_MAC_EMULATION on ppc */
+  MD_EXCEPTION_CODE_MAC_PPC_NO_EMULATION   = 8,
+      /* EXC_PPC_NOEMULATION */
+  MD_EXCEPTION_CODE_MAC_PPC_ALTIVEC_ASSIST = 9,
+      /* EXC_PPC_ALTIVECASSIST */
+
+  /* With MD_EXCEPTION_MAC_SOFTWARE on ppc */
+  MD_EXCEPTION_CODE_MAC_PPC_TRAP    = 0x00000001,  /* EXC_PPC_TRAP */
+  MD_EXCEPTION_CODE_MAC_PPC_MIGRATE = 0x00010100,  /* EXC_PPC_MIGRATE */
+
+  /* With MD_EXCEPTION_MAC_BREAKPOINT on ppc */
+  MD_EXCEPTION_CODE_MAC_PPC_BREAKPOINT = 1,  /* EXC_PPC_BREAKPOINT */
+
+  /* With MD_EXCEPTION_MAC_BAD_INSTRUCTION on x86, see also x86 interrupt
+   * values below. */
+  MD_EXCEPTION_CODE_MAC_X86_INVALID_OPERATION = 1,  /* EXC_I386_INVOP */
+
+  /* With MD_EXCEPTION_MAC_ARITHMETIC on x86 */
+  MD_EXCEPTION_CODE_MAC_X86_DIV       = 1,  /* EXC_I386_DIV */
+  MD_EXCEPTION_CODE_MAC_X86_INTO      = 2,  /* EXC_I386_INTO */
+  MD_EXCEPTION_CODE_MAC_X86_NOEXT     = 3,  /* EXC_I386_NOEXT */
+  MD_EXCEPTION_CODE_MAC_X86_EXTOVR    = 4,  /* EXC_I386_EXTOVR */
+  MD_EXCEPTION_CODE_MAC_X86_EXTERR    = 5,  /* EXC_I386_EXTERR */
+  MD_EXCEPTION_CODE_MAC_X86_EMERR     = 6,  /* EXC_I386_EMERR */
+  MD_EXCEPTION_CODE_MAC_X86_BOUND     = 7,  /* EXC_I386_BOUND */
+  MD_EXCEPTION_CODE_MAC_X86_SSEEXTERR = 8,  /* EXC_I386_SSEEXTERR */
+
+  /* With MD_EXCEPTION_MAC_BREAKPOINT on x86 */
+  MD_EXCEPTION_CODE_MAC_X86_SGL = 1,  /* EXC_I386_SGL */
+  MD_EXCEPTION_CODE_MAC_X86_BPT = 2,  /* EXC_I386_BPT */
+
+  /* With MD_EXCEPTION_MAC_BAD_INSTRUCTION on x86.  These are the raw
+   * x86 interrupt codes.  Most of these are mapped to other Mach
+   * exceptions and codes, are handled, or should not occur in user space.
+   * A few of these will do occur with MD_EXCEPTION_MAC_BAD_INSTRUCTION. */
+  /* EXC_I386_DIVERR    =  0: mapped to EXC_ARITHMETIC/EXC_I386_DIV */
+  /* EXC_I386_SGLSTP    =  1: mapped to EXC_BREAKPOINT/EXC_I386_SGL */
+  /* EXC_I386_NMIFLT    =  2: should not occur in user space */
+  /* EXC_I386_BPTFLT    =  3: mapped to EXC_BREAKPOINT/EXC_I386_BPT */
+  /* EXC_I386_INTOFLT   =  4: mapped to EXC_ARITHMETIC/EXC_I386_INTO */
+  /* EXC_I386_BOUNDFLT  =  5: mapped to EXC_ARITHMETIC/EXC_I386_BOUND */
+  /* EXC_I386_INVOPFLT  =  6: mapped to EXC_BAD_INSTRUCTION/EXC_I386_INVOP */
+  /* EXC_I386_NOEXTFLT  =  7: should be handled by the kernel */
+  /* EXC_I386_DBLFLT    =  8: should be handled (if possible) by the kernel */
+  /* EXC_I386_EXTOVRFLT =  9: mapped to EXC_BAD_ACCESS/(PROT_READ|PROT_EXEC) */
+  MD_EXCEPTION_CODE_MAC_X86_INVALID_TASK_STATE_SEGMENT = 10,
+      /* EXC_INVTSSFLT */
+  MD_EXCEPTION_CODE_MAC_X86_SEGMENT_NOT_PRESENT        = 11,
+      /* EXC_SEGNPFLT */
+  MD_EXCEPTION_CODE_MAC_X86_STACK_FAULT                = 12,
+      /* EXC_STKFLT */
+  MD_EXCEPTION_CODE_MAC_X86_GENERAL_PROTECTION_FAULT   = 13,
+      /* EXC_GPFLT */
+  /* EXC_I386_PGFLT     = 14: should not occur in user space */
+  /* EXC_I386_EXTERRFLT = 16: mapped to EXC_ARITHMETIC/EXC_I386_EXTERR */
+  MD_EXCEPTION_CODE_MAC_X86_ALIGNMENT_FAULT            = 17
+      /* EXC_ALIGNFLT (for vector operations) */
+  /* EXC_I386_ENOEXTFLT = 32: should be handled by the kernel */
+  /* EXC_I386_ENDPERR   = 33: should not occur */
+} MDExceptionCodeMac;
+
+#endif  /* GOOGLE_BREAKPAD_COMMON_MINIDUMP_EXCEPTION_MAC_OSX_H__ */
diff --git a/google-breakpad/src/google_breakpad/common/minidump_exception_ps3.h b/google-breakpad/src/google_breakpad/common/minidump_exception_ps3.h
new file mode 100644
index 0000000..adff5a6
--- /dev/null
+++ b/google-breakpad/src/google_breakpad/common/minidump_exception_ps3.h
@@ -0,0 +1,67 @@
+/* Copyright (c) 2013, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
+
+/* minidump_exception_ps3.h: A definition of exception codes for
+ * PS3 */
+
+
+#ifndef GOOGLE_BREAKPAD_COMMON_MINIDUMP_EXCEPTION_PS3_H__
+#define GOOGLE_BREAKPAD_COMMON_MINIDUMP_EXCEPTION_PS3_H__
+
+#include <stddef.h>
+
+#include "google_breakpad/common/breakpad_types.h"
+
+typedef enum {
+  MD_EXCEPTION_CODE_PS3_UNKNOWN = 0,
+  MD_EXCEPTION_CODE_PS3_TRAP_EXCEP = 1,
+  MD_EXCEPTION_CODE_PS3_PRIV_INSTR = 2,
+  MD_EXCEPTION_CODE_PS3_ILLEGAL_INSTR = 3,
+  MD_EXCEPTION_CODE_PS3_INSTR_STORAGE = 4,
+  MD_EXCEPTION_CODE_PS3_INSTR_SEGMENT = 5,
+  MD_EXCEPTION_CODE_PS3_DATA_STORAGE = 6,
+  MD_EXCEPTION_CODE_PS3_DATA_SEGMENT = 7,
+  MD_EXCEPTION_CODE_PS3_FLOAT_POINT = 8,
+  MD_EXCEPTION_CODE_PS3_DABR_MATCH = 9,
+  MD_EXCEPTION_CODE_PS3_ALIGN_EXCEP = 10,
+  MD_EXCEPTION_CODE_PS3_MEMORY_ACCESS = 11,
+  MD_EXCEPTION_CODE_PS3_COPRO_ALIGN = 12,
+  MD_EXCEPTION_CODE_PS3_COPRO_INVALID_COM = 13,
+  MD_EXCEPTION_CODE_PS3_COPRO_ERR = 14,
+  MD_EXCEPTION_CODE_PS3_COPRO_FIR = 15,
+  MD_EXCEPTION_CODE_PS3_COPRO_DATA_SEGMENT = 16,
+  MD_EXCEPTION_CODE_PS3_COPRO_DATA_STORAGE = 17,
+  MD_EXCEPTION_CODE_PS3_COPRO_STOP_INSTR = 18,
+  MD_EXCEPTION_CODE_PS3_COPRO_HALT_INSTR = 19,
+  MD_EXCEPTION_CODE_PS3_COPRO_HALTINST_UNKNOWN = 20,
+  MD_EXCEPTION_CODE_PS3_COPRO_MEMORY_ACCESS = 21,
+  MD_EXCEPTION_CODE_PS3_GRAPHIC = 22
+} MDExceptionCodePS3;
+
+#endif /* GOOGLE_BREAKPAD_COMMON_MINIDUMP_EXCEPTION_PS3_H__ */
diff --git a/google-breakpad/src/google_breakpad/common/minidump_exception_solaris.h b/google-breakpad/src/google_breakpad/common/minidump_exception_solaris.h
new file mode 100644
index 0000000..f18ddf4
--- /dev/null
+++ b/google-breakpad/src/google_breakpad/common/minidump_exception_solaris.h
@@ -0,0 +1,94 @@
+/* Copyright (c) 2006, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
+
+/* minidump_exception_solaris.h: A definition of exception codes for
+ * Solaris
+ *
+ * (This is C99 source, please don't corrupt it with C++.)
+ *
+ * Author: Mark Mentovai
+ * Split into its own file: Neal Sidhwaney */
+
+
+#ifndef GOOGLE_BREAKPAD_COMMON_MINIDUMP_EXCEPTION_SOLARIS_H__
+#define GOOGLE_BREAKPAD_COMMON_MINIDUMP_EXCEPTION_SOLARIS_H__
+
+#include <stddef.h>
+
+#include "google_breakpad/common/breakpad_types.h"
+
+/* For (MDException).exception_code.  These values come from sys/iso/signal_iso.h
+ */
+typedef enum {
+  MD_EXCEPTION_CODE_SOL_SIGHUP = 1,      /* Hangup */
+  MD_EXCEPTION_CODE_SOL_SIGINT = 2,      /* interrupt (rubout) */
+  MD_EXCEPTION_CODE_SOL_SIGQUIT = 3,     /* quit (ASCII FS) */
+  MD_EXCEPTION_CODE_SOL_SIGILL = 4,      /* illegal instruction (not reset when caught) */
+  MD_EXCEPTION_CODE_SOL_SIGTRAP = 5,     /* trace trap (not reset when caught) */
+  MD_EXCEPTION_CODE_SOL_SIGIOT = 6,      /* IOT instruction */
+  MD_EXCEPTION_CODE_SOL_SIGABRT = 6,     /* used by abort, replace SIGIOT in the future */
+  MD_EXCEPTION_CODE_SOL_SIGEMT = 7,      /* EMT instruction */
+  MD_EXCEPTION_CODE_SOL_SIGFPE = 8,      /* floating point exception */
+  MD_EXCEPTION_CODE_SOL_SIGKILL = 9,     /* kill (cannot be caught or ignored) */
+  MD_EXCEPTION_CODE_SOL_SIGBUS = 10,     /* bus error */
+  MD_EXCEPTION_CODE_SOL_SIGSEGV = 11,    /* segmentation violation */
+  MD_EXCEPTION_CODE_SOL_SIGSYS = 12,     /* bad argument to system call */
+  MD_EXCEPTION_CODE_SOL_SIGPIPE = 13,    /* write on a pipe with no one to read it */
+  MD_EXCEPTION_CODE_SOL_SIGALRM = 14,    /* alarm clock */
+  MD_EXCEPTION_CODE_SOL_SIGTERM = 15,    /* software termination signal from kill */
+  MD_EXCEPTION_CODE_SOL_SIGUSR1 = 16,    /* user defined signal 1 */
+  MD_EXCEPTION_CODE_SOL_SIGUSR2 = 17,    /* user defined signal 2 */
+  MD_EXCEPTION_CODE_SOL_SIGCLD = 18,     /* child status change */
+  MD_EXCEPTION_CODE_SOL_SIGCHLD = 18,    /* child status change alias (POSIX) */
+  MD_EXCEPTION_CODE_SOL_SIGPWR = 19,     /* power-fail restart */
+  MD_EXCEPTION_CODE_SOL_SIGWINCH = 20,   /* window size change */
+  MD_EXCEPTION_CODE_SOL_SIGURG = 21,     /* urgent socket condition */
+  MD_EXCEPTION_CODE_SOL_SIGPOLL = 22,    /* pollable event occurred */
+  MD_EXCEPTION_CODE_SOL_SIGIO = 22,      /* socket I/O possible (SIGPOLL alias) */
+  MD_EXCEPTION_CODE_SOL_SIGSTOP = 23,    /* stop (cannot be caught or ignored) */
+  MD_EXCEPTION_CODE_SOL_SIGTSTP = 24,    /* user stop requested from tty */
+  MD_EXCEPTION_CODE_SOL_SIGCONT = 25,    /* stopped process has been continued */
+  MD_EXCEPTION_CODE_SOL_SIGTTIN = 26,    /* background tty read attempted */
+  MD_EXCEPTION_CODE_SOL_SIGTTOU = 27,    /* background tty write attempted */
+  MD_EXCEPTION_CODE_SOL_SIGVTALRM = 28,  /* virtual timer expired */
+  MD_EXCEPTION_CODE_SOL_SIGPROF = 29,    /* profiling timer expired */
+  MD_EXCEPTION_CODE_SOL_SIGXCPU = 30,    /* exceeded cpu limit */
+  MD_EXCEPTION_CODE_SOL_SIGXFSZ = 31,    /* exceeded file size limit */
+  MD_EXCEPTION_CODE_SOL_SIGWAITING = 32, /* reserved signal no longer used by threading code */
+  MD_EXCEPTION_CODE_SOL_SIGLWP = 33,     /* reserved signal no longer used by threading code */
+  MD_EXCEPTION_CODE_SOL_SIGFREEZE = 34,  /* special signal used by CPR */
+  MD_EXCEPTION_CODE_SOL_SIGTHAW = 35,    /* special signal used by CPR */
+  MD_EXCEPTION_CODE_SOL_SIGCANCEL = 36,  /* reserved signal for thread cancellation */
+  MD_EXCEPTION_CODE_SOL_SIGLOST = 37,    /* resource lost (eg, record-lock lost) */
+  MD_EXCEPTION_CODE_SOL_SIGXRES = 38,    /* resource control exceeded */
+  MD_EXCEPTION_CODE_SOL_SIGJVM1 = 39,    /* reserved signal for Java Virtual Machine */
+  MD_EXCEPTION_CODE_SOL_SIGJVM2 = 40     /* reserved signal for Java Virtual Machine */
+} MDExceptionCodeSolaris;
+
+#endif  /* GOOGLE_BREAKPAD_COMMON_MINIDUMP_EXCEPTION_SOLARIS_H__ */
diff --git a/google-breakpad/src/google_breakpad/common/minidump_exception_win32.h b/google-breakpad/src/google_breakpad/common/minidump_exception_win32.h
new file mode 100644
index 0000000..e4cd59e
--- /dev/null
+++ b/google-breakpad/src/google_breakpad/common/minidump_exception_win32.h
@@ -0,0 +1,2261 @@
+/* Copyright (c) 2006, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
+
+/* minidump_exception_win32.h: Definitions of exception codes for
+ * Win32 platform
+ *
+ * (This is C99 source, please don't corrupt it with C++.)
+ *
+ * Author: Mark Mentovai
+ * Split into its own file: Neal Sidhwaney */
+
+
+#ifndef GOOGLE_BREAKPAD_COMMON_MINIDUMP_EXCEPTION_WIN32_H__
+#define GOOGLE_BREAKPAD_COMMON_MINIDUMP_EXCEPTION_WIN32_H__
+
+#include <stddef.h>
+
+#include "google_breakpad/common/breakpad_types.h"
+
+
+/* For (MDException).exception_code.  These values come from WinBase.h
+ * and WinNT.h (names beginning with EXCEPTION_ are in WinBase.h,
+ * they are STATUS_ in WinNT.h). */
+typedef enum {
+  MD_EXCEPTION_CODE_WIN_CONTROL_C                = 0x40010005,
+      /* DBG_CONTROL_C */
+  MD_EXCEPTION_CODE_WIN_GUARD_PAGE_VIOLATION     = 0x80000001,
+      /* EXCEPTION_GUARD_PAGE */
+  MD_EXCEPTION_CODE_WIN_DATATYPE_MISALIGNMENT    = 0x80000002,
+      /* EXCEPTION_DATATYPE_MISALIGNMENT */
+  MD_EXCEPTION_CODE_WIN_BREAKPOINT               = 0x80000003,
+      /* EXCEPTION_BREAKPOINT */
+  MD_EXCEPTION_CODE_WIN_SINGLE_STEP              = 0x80000004,
+      /* EXCEPTION_SINGLE_STEP */
+  MD_EXCEPTION_CODE_WIN_ACCESS_VIOLATION         = 0xc0000005,
+      /* EXCEPTION_ACCESS_VIOLATION */
+  MD_EXCEPTION_CODE_WIN_IN_PAGE_ERROR            = 0xc0000006,
+      /* EXCEPTION_IN_PAGE_ERROR */
+  MD_EXCEPTION_CODE_WIN_INVALID_HANDLE           = 0xc0000008,
+      /* EXCEPTION_INVALID_HANDLE */
+  MD_EXCEPTION_CODE_WIN_ILLEGAL_INSTRUCTION      = 0xc000001d,
+      /* EXCEPTION_ILLEGAL_INSTRUCTION */
+  MD_EXCEPTION_CODE_WIN_NONCONTINUABLE_EXCEPTION = 0xc0000025,
+      /* EXCEPTION_NONCONTINUABLE_EXCEPTION */
+  MD_EXCEPTION_CODE_WIN_INVALID_DISPOSITION      = 0xc0000026,
+      /* EXCEPTION_INVALID_DISPOSITION */
+  MD_EXCEPTION_CODE_WIN_ARRAY_BOUNDS_EXCEEDED    = 0xc000008c,
+      /* EXCEPTION_BOUNDS_EXCEEDED */
+  MD_EXCEPTION_CODE_WIN_FLOAT_DENORMAL_OPERAND   = 0xc000008d,
+      /* EXCEPTION_FLT_DENORMAL_OPERAND */
+  MD_EXCEPTION_CODE_WIN_FLOAT_DIVIDE_BY_ZERO     = 0xc000008e,
+      /* EXCEPTION_FLT_DIVIDE_BY_ZERO */
+  MD_EXCEPTION_CODE_WIN_FLOAT_INEXACT_RESULT     = 0xc000008f,
+      /* EXCEPTION_FLT_INEXACT_RESULT */
+  MD_EXCEPTION_CODE_WIN_FLOAT_INVALID_OPERATION  = 0xc0000090,
+      /* EXCEPTION_FLT_INVALID_OPERATION */
+  MD_EXCEPTION_CODE_WIN_FLOAT_OVERFLOW           = 0xc0000091,
+      /* EXCEPTION_FLT_OVERFLOW */
+  MD_EXCEPTION_CODE_WIN_FLOAT_STACK_CHECK        = 0xc0000092,
+      /* EXCEPTION_FLT_STACK_CHECK */
+  MD_EXCEPTION_CODE_WIN_FLOAT_UNDERFLOW          = 0xc0000093,
+      /* EXCEPTION_FLT_UNDERFLOW */
+  MD_EXCEPTION_CODE_WIN_INTEGER_DIVIDE_BY_ZERO   = 0xc0000094,
+      /* EXCEPTION_INT_DIVIDE_BY_ZERO */
+  MD_EXCEPTION_CODE_WIN_INTEGER_OVERFLOW         = 0xc0000095,
+      /* EXCEPTION_INT_OVERFLOW */
+  MD_EXCEPTION_CODE_WIN_PRIVILEGED_INSTRUCTION   = 0xc0000096,
+      /* EXCEPTION_PRIV_INSTRUCTION */
+  MD_EXCEPTION_CODE_WIN_STACK_OVERFLOW           = 0xc00000fd,
+      /* EXCEPTION_STACK_OVERFLOW */
+  MD_EXCEPTION_CODE_WIN_POSSIBLE_DEADLOCK        = 0xc0000194,
+      /* EXCEPTION_POSSIBLE_DEADLOCK */
+  MD_EXCEPTION_CODE_WIN_STACK_BUFFER_OVERRUN     = 0xc0000409,
+      /* STATUS_STACK_BUFFER_OVERRUN */
+  MD_EXCEPTION_CODE_WIN_HEAP_CORRUPTION          = 0xc0000374,
+      /* STATUS_HEAP_CORRUPTION */
+  MD_EXCEPTION_CODE_WIN_UNHANDLED_CPP_EXCEPTION  = 0xe06d7363
+      /* Per http://support.microsoft.com/kb/185294,
+         generated by Visual C++ compiler */
+} MDExceptionCodeWin;
+
+
+/* For (MDException).exception_information[2], when (MDException).exception_code
+ * is MD_EXCEPTION_CODE_WIN_IN_PAGE_ERROR. This describes the underlying reason
+ * for the error. These values come from ntstatus.h.
+ *
+ * The content of this enum was created from ntstatus.h in the 8.1 SDK with
+ *
+ * egrep '#define [A-Z_0-9]+\s+\(\(NTSTATUS\)0xC[0-9A-F]+L\)' ntstatus.h
+ * | tr -d '\r'
+ * | sed -r 's@#define ([A-Z_0-9]+)\s+\(\(NTSTATUS\)(0xC[0-9A-F]+)L\).*@\2 \1@'
+ * | sort
+ * | sed -r 's@(0xC[0-9A-F]+) ([A-Z_0-9]+)@  MD_NTSTATUS_WIN_\2 = \1,@'
+ *
+ * With easy copy to clipboard with
+ * | xclip -selection c  # on linux
+ * | clip  # on windows
+ * | pbcopy  # on mac
+ *
+ * and then the last comma manually removed. */
+typedef enum {
+  MD_NTSTATUS_WIN_STATUS_UNSUCCESSFUL = 0xC0000001,
+  MD_NTSTATUS_WIN_STATUS_NOT_IMPLEMENTED = 0xC0000002,
+  MD_NTSTATUS_WIN_STATUS_INVALID_INFO_CLASS = 0xC0000003,
+  MD_NTSTATUS_WIN_STATUS_INFO_LENGTH_MISMATCH = 0xC0000004,
+  MD_NTSTATUS_WIN_STATUS_ACCESS_VIOLATION = 0xC0000005,
+  MD_NTSTATUS_WIN_STATUS_IN_PAGE_ERROR = 0xC0000006,
+  MD_NTSTATUS_WIN_STATUS_PAGEFILE_QUOTA = 0xC0000007,
+  MD_NTSTATUS_WIN_STATUS_INVALID_HANDLE = 0xC0000008,
+  MD_NTSTATUS_WIN_STATUS_BAD_INITIAL_STACK = 0xC0000009,
+  MD_NTSTATUS_WIN_STATUS_BAD_INITIAL_PC = 0xC000000A,
+  MD_NTSTATUS_WIN_STATUS_INVALID_CID = 0xC000000B,
+  MD_NTSTATUS_WIN_STATUS_TIMER_NOT_CANCELED = 0xC000000C,
+  MD_NTSTATUS_WIN_STATUS_INVALID_PARAMETER = 0xC000000D,
+  MD_NTSTATUS_WIN_STATUS_NO_SUCH_DEVICE = 0xC000000E,
+  MD_NTSTATUS_WIN_STATUS_NO_SUCH_FILE = 0xC000000F,
+  MD_NTSTATUS_WIN_STATUS_INVALID_DEVICE_REQUEST = 0xC0000010,
+  MD_NTSTATUS_WIN_STATUS_END_OF_FILE = 0xC0000011,
+  MD_NTSTATUS_WIN_STATUS_WRONG_VOLUME = 0xC0000012,
+  MD_NTSTATUS_WIN_STATUS_NO_MEDIA_IN_DEVICE = 0xC0000013,
+  MD_NTSTATUS_WIN_STATUS_UNRECOGNIZED_MEDIA = 0xC0000014,
+  MD_NTSTATUS_WIN_STATUS_NONEXISTENT_SECTOR = 0xC0000015,
+  MD_NTSTATUS_WIN_STATUS_MORE_PROCESSING_REQUIRED = 0xC0000016,
+  MD_NTSTATUS_WIN_STATUS_NO_MEMORY = 0xC0000017,
+  MD_NTSTATUS_WIN_STATUS_CONFLICTING_ADDRESSES = 0xC0000018,
+  MD_NTSTATUS_WIN_STATUS_NOT_MAPPED_VIEW = 0xC0000019,
+  MD_NTSTATUS_WIN_STATUS_UNABLE_TO_FREE_VM = 0xC000001A,
+  MD_NTSTATUS_WIN_STATUS_UNABLE_TO_DELETE_SECTION = 0xC000001B,
+  MD_NTSTATUS_WIN_STATUS_INVALID_SYSTEM_SERVICE = 0xC000001C,
+  MD_NTSTATUS_WIN_STATUS_ILLEGAL_INSTRUCTION = 0xC000001D,
+  MD_NTSTATUS_WIN_STATUS_INVALID_LOCK_SEQUENCE = 0xC000001E,
+  MD_NTSTATUS_WIN_STATUS_INVALID_VIEW_SIZE = 0xC000001F,
+  MD_NTSTATUS_WIN_STATUS_INVALID_FILE_FOR_SECTION = 0xC0000020,
+  MD_NTSTATUS_WIN_STATUS_ALREADY_COMMITTED = 0xC0000021,
+  MD_NTSTATUS_WIN_STATUS_ACCESS_DENIED = 0xC0000022,
+  MD_NTSTATUS_WIN_STATUS_BUFFER_TOO_SMALL = 0xC0000023,
+  MD_NTSTATUS_WIN_STATUS_OBJECT_TYPE_MISMATCH = 0xC0000024,
+  MD_NTSTATUS_WIN_STATUS_NONCONTINUABLE_EXCEPTION = 0xC0000025,
+  MD_NTSTATUS_WIN_STATUS_INVALID_DISPOSITION = 0xC0000026,
+  MD_NTSTATUS_WIN_STATUS_UNWIND = 0xC0000027,
+  MD_NTSTATUS_WIN_STATUS_BAD_STACK = 0xC0000028,
+  MD_NTSTATUS_WIN_STATUS_INVALID_UNWIND_TARGET = 0xC0000029,
+  MD_NTSTATUS_WIN_STATUS_NOT_LOCKED = 0xC000002A,
+  MD_NTSTATUS_WIN_STATUS_PARITY_ERROR = 0xC000002B,
+  MD_NTSTATUS_WIN_STATUS_UNABLE_TO_DECOMMIT_VM = 0xC000002C,
+  MD_NTSTATUS_WIN_STATUS_NOT_COMMITTED = 0xC000002D,
+  MD_NTSTATUS_WIN_STATUS_INVALID_PORT_ATTRIBUTES = 0xC000002E,
+  MD_NTSTATUS_WIN_STATUS_PORT_MESSAGE_TOO_LONG = 0xC000002F,
+  MD_NTSTATUS_WIN_STATUS_INVALID_PARAMETER_MIX = 0xC0000030,
+  MD_NTSTATUS_WIN_STATUS_INVALID_QUOTA_LOWER = 0xC0000031,
+  MD_NTSTATUS_WIN_STATUS_DISK_CORRUPT_ERROR = 0xC0000032,
+  MD_NTSTATUS_WIN_STATUS_OBJECT_NAME_INVALID = 0xC0000033,
+  MD_NTSTATUS_WIN_STATUS_OBJECT_NAME_NOT_FOUND = 0xC0000034,
+  MD_NTSTATUS_WIN_STATUS_OBJECT_NAME_COLLISION = 0xC0000035,
+  MD_NTSTATUS_WIN_STATUS_PORT_DISCONNECTED = 0xC0000037,
+  MD_NTSTATUS_WIN_STATUS_DEVICE_ALREADY_ATTACHED = 0xC0000038,
+  MD_NTSTATUS_WIN_STATUS_OBJECT_PATH_INVALID = 0xC0000039,
+  MD_NTSTATUS_WIN_STATUS_OBJECT_PATH_NOT_FOUND = 0xC000003A,
+  MD_NTSTATUS_WIN_STATUS_OBJECT_PATH_SYNTAX_BAD = 0xC000003B,
+  MD_NTSTATUS_WIN_STATUS_DATA_OVERRUN = 0xC000003C,
+  MD_NTSTATUS_WIN_STATUS_DATA_LATE_ERROR = 0xC000003D,
+  MD_NTSTATUS_WIN_STATUS_DATA_ERROR = 0xC000003E,
+  MD_NTSTATUS_WIN_STATUS_CRC_ERROR = 0xC000003F,
+  MD_NTSTATUS_WIN_STATUS_SECTION_TOO_BIG = 0xC0000040,
+  MD_NTSTATUS_WIN_STATUS_PORT_CONNECTION_REFUSED = 0xC0000041,
+  MD_NTSTATUS_WIN_STATUS_INVALID_PORT_HANDLE = 0xC0000042,
+  MD_NTSTATUS_WIN_STATUS_SHARING_VIOLATION = 0xC0000043,
+  MD_NTSTATUS_WIN_STATUS_QUOTA_EXCEEDED = 0xC0000044,
+  MD_NTSTATUS_WIN_STATUS_INVALID_PAGE_PROTECTION = 0xC0000045,
+  MD_NTSTATUS_WIN_STATUS_MUTANT_NOT_OWNED = 0xC0000046,
+  MD_NTSTATUS_WIN_STATUS_SEMAPHORE_LIMIT_EXCEEDED = 0xC0000047,
+  MD_NTSTATUS_WIN_STATUS_PORT_ALREADY_SET = 0xC0000048,
+  MD_NTSTATUS_WIN_STATUS_SECTION_NOT_IMAGE = 0xC0000049,
+  MD_NTSTATUS_WIN_STATUS_SUSPEND_COUNT_EXCEEDED = 0xC000004A,
+  MD_NTSTATUS_WIN_STATUS_THREAD_IS_TERMINATING = 0xC000004B,
+  MD_NTSTATUS_WIN_STATUS_BAD_WORKING_SET_LIMIT = 0xC000004C,
+  MD_NTSTATUS_WIN_STATUS_INCOMPATIBLE_FILE_MAP = 0xC000004D,
+  MD_NTSTATUS_WIN_STATUS_SECTION_PROTECTION = 0xC000004E,
+  MD_NTSTATUS_WIN_STATUS_EAS_NOT_SUPPORTED = 0xC000004F,
+  MD_NTSTATUS_WIN_STATUS_EA_TOO_LARGE = 0xC0000050,
+  MD_NTSTATUS_WIN_STATUS_NONEXISTENT_EA_ENTRY = 0xC0000051,
+  MD_NTSTATUS_WIN_STATUS_NO_EAS_ON_FILE = 0xC0000052,
+  MD_NTSTATUS_WIN_STATUS_EA_CORRUPT_ERROR = 0xC0000053,
+  MD_NTSTATUS_WIN_STATUS_FILE_LOCK_CONFLICT = 0xC0000054,
+  MD_NTSTATUS_WIN_STATUS_LOCK_NOT_GRANTED = 0xC0000055,
+  MD_NTSTATUS_WIN_STATUS_DELETE_PENDING = 0xC0000056,
+  MD_NTSTATUS_WIN_STATUS_CTL_FILE_NOT_SUPPORTED = 0xC0000057,
+  MD_NTSTATUS_WIN_STATUS_UNKNOWN_REVISION = 0xC0000058,
+  MD_NTSTATUS_WIN_STATUS_REVISION_MISMATCH = 0xC0000059,
+  MD_NTSTATUS_WIN_STATUS_INVALID_OWNER = 0xC000005A,
+  MD_NTSTATUS_WIN_STATUS_INVALID_PRIMARY_GROUP = 0xC000005B,
+  MD_NTSTATUS_WIN_STATUS_NO_IMPERSONATION_TOKEN = 0xC000005C,
+  MD_NTSTATUS_WIN_STATUS_CANT_DISABLE_MANDATORY = 0xC000005D,
+  MD_NTSTATUS_WIN_STATUS_NO_LOGON_SERVERS = 0xC000005E,
+  MD_NTSTATUS_WIN_STATUS_NO_SUCH_LOGON_SESSION = 0xC000005F,
+  MD_NTSTATUS_WIN_STATUS_NO_SUCH_PRIVILEGE = 0xC0000060,
+  MD_NTSTATUS_WIN_STATUS_PRIVILEGE_NOT_HELD = 0xC0000061,
+  MD_NTSTATUS_WIN_STATUS_INVALID_ACCOUNT_NAME = 0xC0000062,
+  MD_NTSTATUS_WIN_STATUS_USER_EXISTS = 0xC0000063,
+  MD_NTSTATUS_WIN_STATUS_NO_SUCH_USER = 0xC0000064,
+  MD_NTSTATUS_WIN_STATUS_GROUP_EXISTS = 0xC0000065,
+  MD_NTSTATUS_WIN_STATUS_NO_SUCH_GROUP = 0xC0000066,
+  MD_NTSTATUS_WIN_STATUS_MEMBER_IN_GROUP = 0xC0000067,
+  MD_NTSTATUS_WIN_STATUS_MEMBER_NOT_IN_GROUP = 0xC0000068,
+  MD_NTSTATUS_WIN_STATUS_LAST_ADMIN = 0xC0000069,
+  MD_NTSTATUS_WIN_STATUS_WRONG_PASSWORD = 0xC000006A,
+  MD_NTSTATUS_WIN_STATUS_ILL_FORMED_PASSWORD = 0xC000006B,
+  MD_NTSTATUS_WIN_STATUS_PASSWORD_RESTRICTION = 0xC000006C,
+  MD_NTSTATUS_WIN_STATUS_LOGON_FAILURE = 0xC000006D,
+  MD_NTSTATUS_WIN_STATUS_ACCOUNT_RESTRICTION = 0xC000006E,
+  MD_NTSTATUS_WIN_STATUS_INVALID_LOGON_HOURS = 0xC000006F,
+  MD_NTSTATUS_WIN_STATUS_INVALID_WORKSTATION = 0xC0000070,
+  MD_NTSTATUS_WIN_STATUS_PASSWORD_EXPIRED = 0xC0000071,
+  MD_NTSTATUS_WIN_STATUS_ACCOUNT_DISABLED = 0xC0000072,
+  MD_NTSTATUS_WIN_STATUS_NONE_MAPPED = 0xC0000073,
+  MD_NTSTATUS_WIN_STATUS_TOO_MANY_LUIDS_REQUESTED = 0xC0000074,
+  MD_NTSTATUS_WIN_STATUS_LUIDS_EXHAUSTED = 0xC0000075,
+  MD_NTSTATUS_WIN_STATUS_INVALID_SUB_AUTHORITY = 0xC0000076,
+  MD_NTSTATUS_WIN_STATUS_INVALID_ACL = 0xC0000077,
+  MD_NTSTATUS_WIN_STATUS_INVALID_SID = 0xC0000078,
+  MD_NTSTATUS_WIN_STATUS_INVALID_SECURITY_DESCR = 0xC0000079,
+  MD_NTSTATUS_WIN_STATUS_PROCEDURE_NOT_FOUND = 0xC000007A,
+  MD_NTSTATUS_WIN_STATUS_INVALID_IMAGE_FORMAT = 0xC000007B,
+  MD_NTSTATUS_WIN_STATUS_NO_TOKEN = 0xC000007C,
+  MD_NTSTATUS_WIN_STATUS_BAD_INHERITANCE_ACL = 0xC000007D,
+  MD_NTSTATUS_WIN_STATUS_RANGE_NOT_LOCKED = 0xC000007E,
+  MD_NTSTATUS_WIN_STATUS_DISK_FULL = 0xC000007F,
+  MD_NTSTATUS_WIN_STATUS_SERVER_DISABLED = 0xC0000080,
+  MD_NTSTATUS_WIN_STATUS_SERVER_NOT_DISABLED = 0xC0000081,
+  MD_NTSTATUS_WIN_STATUS_TOO_MANY_GUIDS_REQUESTED = 0xC0000082,
+  MD_NTSTATUS_WIN_STATUS_GUIDS_EXHAUSTED = 0xC0000083,
+  MD_NTSTATUS_WIN_STATUS_INVALID_ID_AUTHORITY = 0xC0000084,
+  MD_NTSTATUS_WIN_STATUS_AGENTS_EXHAUSTED = 0xC0000085,
+  MD_NTSTATUS_WIN_STATUS_INVALID_VOLUME_LABEL = 0xC0000086,
+  MD_NTSTATUS_WIN_STATUS_SECTION_NOT_EXTENDED = 0xC0000087,
+  MD_NTSTATUS_WIN_STATUS_NOT_MAPPED_DATA = 0xC0000088,
+  MD_NTSTATUS_WIN_STATUS_RESOURCE_DATA_NOT_FOUND = 0xC0000089,
+  MD_NTSTATUS_WIN_STATUS_RESOURCE_TYPE_NOT_FOUND = 0xC000008A,
+  MD_NTSTATUS_WIN_STATUS_RESOURCE_NAME_NOT_FOUND = 0xC000008B,
+  MD_NTSTATUS_WIN_STATUS_ARRAY_BOUNDS_EXCEEDED = 0xC000008C,
+  MD_NTSTATUS_WIN_STATUS_FLOAT_DENORMAL_OPERAND = 0xC000008D,
+  MD_NTSTATUS_WIN_STATUS_FLOAT_DIVIDE_BY_ZERO = 0xC000008E,
+  MD_NTSTATUS_WIN_STATUS_FLOAT_INEXACT_RESULT = 0xC000008F,
+  MD_NTSTATUS_WIN_STATUS_FLOAT_INVALID_OPERATION = 0xC0000090,
+  MD_NTSTATUS_WIN_STATUS_FLOAT_OVERFLOW = 0xC0000091,
+  MD_NTSTATUS_WIN_STATUS_FLOAT_STACK_CHECK = 0xC0000092,
+  MD_NTSTATUS_WIN_STATUS_FLOAT_UNDERFLOW = 0xC0000093,
+  MD_NTSTATUS_WIN_STATUS_INTEGER_DIVIDE_BY_ZERO = 0xC0000094,
+  MD_NTSTATUS_WIN_STATUS_INTEGER_OVERFLOW = 0xC0000095,
+  MD_NTSTATUS_WIN_STATUS_PRIVILEGED_INSTRUCTION = 0xC0000096,
+  MD_NTSTATUS_WIN_STATUS_TOO_MANY_PAGING_FILES = 0xC0000097,
+  MD_NTSTATUS_WIN_STATUS_FILE_INVALID = 0xC0000098,
+  MD_NTSTATUS_WIN_STATUS_ALLOTTED_SPACE_EXCEEDED = 0xC0000099,
+  MD_NTSTATUS_WIN_STATUS_INSUFFICIENT_RESOURCES = 0xC000009A,
+  MD_NTSTATUS_WIN_STATUS_DFS_EXIT_PATH_FOUND = 0xC000009B,
+  MD_NTSTATUS_WIN_STATUS_DEVICE_DATA_ERROR = 0xC000009C,
+  MD_NTSTATUS_WIN_STATUS_DEVICE_NOT_CONNECTED = 0xC000009D,
+  MD_NTSTATUS_WIN_STATUS_DEVICE_POWER_FAILURE = 0xC000009E,
+  MD_NTSTATUS_WIN_STATUS_FREE_VM_NOT_AT_BASE = 0xC000009F,
+  MD_NTSTATUS_WIN_STATUS_MEMORY_NOT_ALLOCATED = 0xC00000A0,
+  MD_NTSTATUS_WIN_STATUS_WORKING_SET_QUOTA = 0xC00000A1,
+  MD_NTSTATUS_WIN_STATUS_MEDIA_WRITE_PROTECTED = 0xC00000A2,
+  MD_NTSTATUS_WIN_STATUS_DEVICE_NOT_READY = 0xC00000A3,
+  MD_NTSTATUS_WIN_STATUS_INVALID_GROUP_ATTRIBUTES = 0xC00000A4,
+  MD_NTSTATUS_WIN_STATUS_BAD_IMPERSONATION_LEVEL = 0xC00000A5,
+  MD_NTSTATUS_WIN_STATUS_CANT_OPEN_ANONYMOUS = 0xC00000A6,
+  MD_NTSTATUS_WIN_STATUS_BAD_VALIDATION_CLASS = 0xC00000A7,
+  MD_NTSTATUS_WIN_STATUS_BAD_TOKEN_TYPE = 0xC00000A8,
+  MD_NTSTATUS_WIN_STATUS_BAD_MASTER_BOOT_RECORD = 0xC00000A9,
+  MD_NTSTATUS_WIN_STATUS_INSTRUCTION_MISALIGNMENT = 0xC00000AA,
+  MD_NTSTATUS_WIN_STATUS_INSTANCE_NOT_AVAILABLE = 0xC00000AB,
+  MD_NTSTATUS_WIN_STATUS_PIPE_NOT_AVAILABLE = 0xC00000AC,
+  MD_NTSTATUS_WIN_STATUS_INVALID_PIPE_STATE = 0xC00000AD,
+  MD_NTSTATUS_WIN_STATUS_PIPE_BUSY = 0xC00000AE,
+  MD_NTSTATUS_WIN_STATUS_ILLEGAL_FUNCTION = 0xC00000AF,
+  MD_NTSTATUS_WIN_STATUS_PIPE_DISCONNECTED = 0xC00000B0,
+  MD_NTSTATUS_WIN_STATUS_PIPE_CLOSING = 0xC00000B1,
+  MD_NTSTATUS_WIN_STATUS_PIPE_CONNECTED = 0xC00000B2,
+  MD_NTSTATUS_WIN_STATUS_PIPE_LISTENING = 0xC00000B3,
+  MD_NTSTATUS_WIN_STATUS_INVALID_READ_MODE = 0xC00000B4,
+  MD_NTSTATUS_WIN_STATUS_IO_TIMEOUT = 0xC00000B5,
+  MD_NTSTATUS_WIN_STATUS_FILE_FORCED_CLOSED = 0xC00000B6,
+  MD_NTSTATUS_WIN_STATUS_PROFILING_NOT_STARTED = 0xC00000B7,
+  MD_NTSTATUS_WIN_STATUS_PROFILING_NOT_STOPPED = 0xC00000B8,
+  MD_NTSTATUS_WIN_STATUS_COULD_NOT_INTERPRET = 0xC00000B9,
+  MD_NTSTATUS_WIN_STATUS_FILE_IS_A_DIRECTORY = 0xC00000BA,
+  MD_NTSTATUS_WIN_STATUS_NOT_SUPPORTED = 0xC00000BB,
+  MD_NTSTATUS_WIN_STATUS_REMOTE_NOT_LISTENING = 0xC00000BC,
+  MD_NTSTATUS_WIN_STATUS_DUPLICATE_NAME = 0xC00000BD,
+  MD_NTSTATUS_WIN_STATUS_BAD_NETWORK_PATH = 0xC00000BE,
+  MD_NTSTATUS_WIN_STATUS_NETWORK_BUSY = 0xC00000BF,
+  MD_NTSTATUS_WIN_STATUS_DEVICE_DOES_NOT_EXIST = 0xC00000C0,
+  MD_NTSTATUS_WIN_STATUS_TOO_MANY_COMMANDS = 0xC00000C1,
+  MD_NTSTATUS_WIN_STATUS_ADAPTER_HARDWARE_ERROR = 0xC00000C2,
+  MD_NTSTATUS_WIN_STATUS_INVALID_NETWORK_RESPONSE = 0xC00000C3,
+  MD_NTSTATUS_WIN_STATUS_UNEXPECTED_NETWORK_ERROR = 0xC00000C4,
+  MD_NTSTATUS_WIN_STATUS_BAD_REMOTE_ADAPTER = 0xC00000C5,
+  MD_NTSTATUS_WIN_STATUS_PRINT_QUEUE_FULL = 0xC00000C6,
+  MD_NTSTATUS_WIN_STATUS_NO_SPOOL_SPACE = 0xC00000C7,
+  MD_NTSTATUS_WIN_STATUS_PRINT_CANCELLED = 0xC00000C8,
+  MD_NTSTATUS_WIN_STATUS_NETWORK_NAME_DELETED = 0xC00000C9,
+  MD_NTSTATUS_WIN_STATUS_NETWORK_ACCESS_DENIED = 0xC00000CA,
+  MD_NTSTATUS_WIN_STATUS_BAD_DEVICE_TYPE = 0xC00000CB,
+  MD_NTSTATUS_WIN_STATUS_BAD_NETWORK_NAME = 0xC00000CC,
+  MD_NTSTATUS_WIN_STATUS_TOO_MANY_NAMES = 0xC00000CD,
+  MD_NTSTATUS_WIN_STATUS_TOO_MANY_SESSIONS = 0xC00000CE,
+  MD_NTSTATUS_WIN_STATUS_SHARING_PAUSED = 0xC00000CF,
+  MD_NTSTATUS_WIN_STATUS_REQUEST_NOT_ACCEPTED = 0xC00000D0,
+  MD_NTSTATUS_WIN_STATUS_REDIRECTOR_PAUSED = 0xC00000D1,
+  MD_NTSTATUS_WIN_STATUS_NET_WRITE_FAULT = 0xC00000D2,
+  MD_NTSTATUS_WIN_STATUS_PROFILING_AT_LIMIT = 0xC00000D3,
+  MD_NTSTATUS_WIN_STATUS_NOT_SAME_DEVICE = 0xC00000D4,
+  MD_NTSTATUS_WIN_STATUS_FILE_RENAMED = 0xC00000D5,
+  MD_NTSTATUS_WIN_STATUS_VIRTUAL_CIRCUIT_CLOSED = 0xC00000D6,
+  MD_NTSTATUS_WIN_STATUS_NO_SECURITY_ON_OBJECT = 0xC00000D7,
+  MD_NTSTATUS_WIN_STATUS_CANT_WAIT = 0xC00000D8,
+  MD_NTSTATUS_WIN_STATUS_PIPE_EMPTY = 0xC00000D9,
+  MD_NTSTATUS_WIN_STATUS_CANT_ACCESS_DOMAIN_INFO = 0xC00000DA,
+  MD_NTSTATUS_WIN_STATUS_CANT_TERMINATE_SELF = 0xC00000DB,
+  MD_NTSTATUS_WIN_STATUS_INVALID_SERVER_STATE = 0xC00000DC,
+  MD_NTSTATUS_WIN_STATUS_INVALID_DOMAIN_STATE = 0xC00000DD,
+  MD_NTSTATUS_WIN_STATUS_INVALID_DOMAIN_ROLE = 0xC00000DE,
+  MD_NTSTATUS_WIN_STATUS_NO_SUCH_DOMAIN = 0xC00000DF,
+  MD_NTSTATUS_WIN_STATUS_DOMAIN_EXISTS = 0xC00000E0,
+  MD_NTSTATUS_WIN_STATUS_DOMAIN_LIMIT_EXCEEDED = 0xC00000E1,
+  MD_NTSTATUS_WIN_STATUS_OPLOCK_NOT_GRANTED = 0xC00000E2,
+  MD_NTSTATUS_WIN_STATUS_INVALID_OPLOCK_PROTOCOL = 0xC00000E3,
+  MD_NTSTATUS_WIN_STATUS_INTERNAL_DB_CORRUPTION = 0xC00000E4,
+  MD_NTSTATUS_WIN_STATUS_INTERNAL_ERROR = 0xC00000E5,
+  MD_NTSTATUS_WIN_STATUS_GENERIC_NOT_MAPPED = 0xC00000E6,
+  MD_NTSTATUS_WIN_STATUS_BAD_DESCRIPTOR_FORMAT = 0xC00000E7,
+  MD_NTSTATUS_WIN_STATUS_INVALID_USER_BUFFER = 0xC00000E8,
+  MD_NTSTATUS_WIN_STATUS_UNEXPECTED_IO_ERROR = 0xC00000E9,
+  MD_NTSTATUS_WIN_STATUS_UNEXPECTED_MM_CREATE_ERR = 0xC00000EA,
+  MD_NTSTATUS_WIN_STATUS_UNEXPECTED_MM_MAP_ERROR = 0xC00000EB,
+  MD_NTSTATUS_WIN_STATUS_UNEXPECTED_MM_EXTEND_ERR = 0xC00000EC,
+  MD_NTSTATUS_WIN_STATUS_NOT_LOGON_PROCESS = 0xC00000ED,
+  MD_NTSTATUS_WIN_STATUS_LOGON_SESSION_EXISTS = 0xC00000EE,
+  MD_NTSTATUS_WIN_STATUS_INVALID_PARAMETER_1 = 0xC00000EF,
+  MD_NTSTATUS_WIN_STATUS_INVALID_PARAMETER_2 = 0xC00000F0,
+  MD_NTSTATUS_WIN_STATUS_INVALID_PARAMETER_3 = 0xC00000F1,
+  MD_NTSTATUS_WIN_STATUS_INVALID_PARAMETER_4 = 0xC00000F2,
+  MD_NTSTATUS_WIN_STATUS_INVALID_PARAMETER_5 = 0xC00000F3,
+  MD_NTSTATUS_WIN_STATUS_INVALID_PARAMETER_6 = 0xC00000F4,
+  MD_NTSTATUS_WIN_STATUS_INVALID_PARAMETER_7 = 0xC00000F5,
+  MD_NTSTATUS_WIN_STATUS_INVALID_PARAMETER_8 = 0xC00000F6,
+  MD_NTSTATUS_WIN_STATUS_INVALID_PARAMETER_9 = 0xC00000F7,
+  MD_NTSTATUS_WIN_STATUS_INVALID_PARAMETER_10 = 0xC00000F8,
+  MD_NTSTATUS_WIN_STATUS_INVALID_PARAMETER_11 = 0xC00000F9,
+  MD_NTSTATUS_WIN_STATUS_INVALID_PARAMETER_12 = 0xC00000FA,
+  MD_NTSTATUS_WIN_STATUS_REDIRECTOR_NOT_STARTED = 0xC00000FB,
+  MD_NTSTATUS_WIN_STATUS_REDIRECTOR_STARTED = 0xC00000FC,
+  MD_NTSTATUS_WIN_STATUS_STACK_OVERFLOW = 0xC00000FD,
+  MD_NTSTATUS_WIN_STATUS_NO_SUCH_PACKAGE = 0xC00000FE,
+  MD_NTSTATUS_WIN_STATUS_BAD_FUNCTION_TABLE = 0xC00000FF,
+  MD_NTSTATUS_WIN_STATUS_VARIABLE_NOT_FOUND = 0xC0000100,
+  MD_NTSTATUS_WIN_STATUS_DIRECTORY_NOT_EMPTY = 0xC0000101,
+  MD_NTSTATUS_WIN_STATUS_FILE_CORRUPT_ERROR = 0xC0000102,
+  MD_NTSTATUS_WIN_STATUS_NOT_A_DIRECTORY = 0xC0000103,
+  MD_NTSTATUS_WIN_STATUS_BAD_LOGON_SESSION_STATE = 0xC0000104,
+  MD_NTSTATUS_WIN_STATUS_LOGON_SESSION_COLLISION = 0xC0000105,
+  MD_NTSTATUS_WIN_STATUS_NAME_TOO_LONG = 0xC0000106,
+  MD_NTSTATUS_WIN_STATUS_FILES_OPEN = 0xC0000107,
+  MD_NTSTATUS_WIN_STATUS_CONNECTION_IN_USE = 0xC0000108,
+  MD_NTSTATUS_WIN_STATUS_MESSAGE_NOT_FOUND = 0xC0000109,
+  MD_NTSTATUS_WIN_STATUS_PROCESS_IS_TERMINATING = 0xC000010A,
+  MD_NTSTATUS_WIN_STATUS_INVALID_LOGON_TYPE = 0xC000010B,
+  MD_NTSTATUS_WIN_STATUS_NO_GUID_TRANSLATION = 0xC000010C,
+  MD_NTSTATUS_WIN_STATUS_CANNOT_IMPERSONATE = 0xC000010D,
+  MD_NTSTATUS_WIN_STATUS_IMAGE_ALREADY_LOADED = 0xC000010E,
+  MD_NTSTATUS_WIN_STATUS_ABIOS_NOT_PRESENT = 0xC000010F,
+  MD_NTSTATUS_WIN_STATUS_ABIOS_LID_NOT_EXIST = 0xC0000110,
+  MD_NTSTATUS_WIN_STATUS_ABIOS_LID_ALREADY_OWNED = 0xC0000111,
+  MD_NTSTATUS_WIN_STATUS_ABIOS_NOT_LID_OWNER = 0xC0000112,
+  MD_NTSTATUS_WIN_STATUS_ABIOS_INVALID_COMMAND = 0xC0000113,
+  MD_NTSTATUS_WIN_STATUS_ABIOS_INVALID_LID = 0xC0000114,
+  MD_NTSTATUS_WIN_STATUS_ABIOS_SELECTOR_NOT_AVAILABLE = 0xC0000115,
+  MD_NTSTATUS_WIN_STATUS_ABIOS_INVALID_SELECTOR = 0xC0000116,
+  MD_NTSTATUS_WIN_STATUS_NO_LDT = 0xC0000117,
+  MD_NTSTATUS_WIN_STATUS_INVALID_LDT_SIZE = 0xC0000118,
+  MD_NTSTATUS_WIN_STATUS_INVALID_LDT_OFFSET = 0xC0000119,
+  MD_NTSTATUS_WIN_STATUS_INVALID_LDT_DESCRIPTOR = 0xC000011A,
+  MD_NTSTATUS_WIN_STATUS_INVALID_IMAGE_NE_FORMAT = 0xC000011B,
+  MD_NTSTATUS_WIN_STATUS_RXACT_INVALID_STATE = 0xC000011C,
+  MD_NTSTATUS_WIN_STATUS_RXACT_COMMIT_FAILURE = 0xC000011D,
+  MD_NTSTATUS_WIN_STATUS_MAPPED_FILE_SIZE_ZERO = 0xC000011E,
+  MD_NTSTATUS_WIN_STATUS_TOO_MANY_OPENED_FILES = 0xC000011F,
+  MD_NTSTATUS_WIN_STATUS_CANCELLED = 0xC0000120,
+  MD_NTSTATUS_WIN_STATUS_CANNOT_DELETE = 0xC0000121,
+  MD_NTSTATUS_WIN_STATUS_INVALID_COMPUTER_NAME = 0xC0000122,
+  MD_NTSTATUS_WIN_STATUS_FILE_DELETED = 0xC0000123,
+  MD_NTSTATUS_WIN_STATUS_SPECIAL_ACCOUNT = 0xC0000124,
+  MD_NTSTATUS_WIN_STATUS_SPECIAL_GROUP = 0xC0000125,
+  MD_NTSTATUS_WIN_STATUS_SPECIAL_USER = 0xC0000126,
+  MD_NTSTATUS_WIN_STATUS_MEMBERS_PRIMARY_GROUP = 0xC0000127,
+  MD_NTSTATUS_WIN_STATUS_FILE_CLOSED = 0xC0000128,
+  MD_NTSTATUS_WIN_STATUS_TOO_MANY_THREADS = 0xC0000129,
+  MD_NTSTATUS_WIN_STATUS_THREAD_NOT_IN_PROCESS = 0xC000012A,
+  MD_NTSTATUS_WIN_STATUS_TOKEN_ALREADY_IN_USE = 0xC000012B,
+  MD_NTSTATUS_WIN_STATUS_PAGEFILE_QUOTA_EXCEEDED = 0xC000012C,
+  MD_NTSTATUS_WIN_STATUS_COMMITMENT_LIMIT = 0xC000012D,
+  MD_NTSTATUS_WIN_STATUS_INVALID_IMAGE_LE_FORMAT = 0xC000012E,
+  MD_NTSTATUS_WIN_STATUS_INVALID_IMAGE_NOT_MZ = 0xC000012F,
+  MD_NTSTATUS_WIN_STATUS_INVALID_IMAGE_PROTECT = 0xC0000130,
+  MD_NTSTATUS_WIN_STATUS_INVALID_IMAGE_WIN_16 = 0xC0000131,
+  MD_NTSTATUS_WIN_STATUS_LOGON_SERVER_CONFLICT = 0xC0000132,
+  MD_NTSTATUS_WIN_STATUS_TIME_DIFFERENCE_AT_DC = 0xC0000133,
+  MD_NTSTATUS_WIN_STATUS_SYNCHRONIZATION_REQUIRED = 0xC0000134,
+  MD_NTSTATUS_WIN_STATUS_DLL_NOT_FOUND = 0xC0000135,
+  MD_NTSTATUS_WIN_STATUS_OPEN_FAILED = 0xC0000136,
+  MD_NTSTATUS_WIN_STATUS_IO_PRIVILEGE_FAILED = 0xC0000137,
+  MD_NTSTATUS_WIN_STATUS_ORDINAL_NOT_FOUND = 0xC0000138,
+  MD_NTSTATUS_WIN_STATUS_ENTRYPOINT_NOT_FOUND = 0xC0000139,
+  MD_NTSTATUS_WIN_STATUS_CONTROL_C_EXIT = 0xC000013A,
+  MD_NTSTATUS_WIN_STATUS_LOCAL_DISCONNECT = 0xC000013B,
+  MD_NTSTATUS_WIN_STATUS_REMOTE_DISCONNECT = 0xC000013C,
+  MD_NTSTATUS_WIN_STATUS_REMOTE_RESOURCES = 0xC000013D,
+  MD_NTSTATUS_WIN_STATUS_LINK_FAILED = 0xC000013E,
+  MD_NTSTATUS_WIN_STATUS_LINK_TIMEOUT = 0xC000013F,
+  MD_NTSTATUS_WIN_STATUS_INVALID_CONNECTION = 0xC0000140,
+  MD_NTSTATUS_WIN_STATUS_INVALID_ADDRESS = 0xC0000141,
+  MD_NTSTATUS_WIN_STATUS_DLL_INIT_FAILED = 0xC0000142,
+  MD_NTSTATUS_WIN_STATUS_MISSING_SYSTEMFILE = 0xC0000143,
+  MD_NTSTATUS_WIN_STATUS_UNHANDLED_EXCEPTION = 0xC0000144,
+  MD_NTSTATUS_WIN_STATUS_APP_INIT_FAILURE = 0xC0000145,
+  MD_NTSTATUS_WIN_STATUS_PAGEFILE_CREATE_FAILED = 0xC0000146,
+  MD_NTSTATUS_WIN_STATUS_NO_PAGEFILE = 0xC0000147,
+  MD_NTSTATUS_WIN_STATUS_INVALID_LEVEL = 0xC0000148,
+  MD_NTSTATUS_WIN_STATUS_WRONG_PASSWORD_CORE = 0xC0000149,
+  MD_NTSTATUS_WIN_STATUS_ILLEGAL_FLOAT_CONTEXT = 0xC000014A,
+  MD_NTSTATUS_WIN_STATUS_PIPE_BROKEN = 0xC000014B,
+  MD_NTSTATUS_WIN_STATUS_REGISTRY_CORRUPT = 0xC000014C,
+  MD_NTSTATUS_WIN_STATUS_REGISTRY_IO_FAILED = 0xC000014D,
+  MD_NTSTATUS_WIN_STATUS_NO_EVENT_PAIR = 0xC000014E,
+  MD_NTSTATUS_WIN_STATUS_UNRECOGNIZED_VOLUME = 0xC000014F,
+  MD_NTSTATUS_WIN_STATUS_SERIAL_NO_DEVICE_INITED = 0xC0000150,
+  MD_NTSTATUS_WIN_STATUS_NO_SUCH_ALIAS = 0xC0000151,
+  MD_NTSTATUS_WIN_STATUS_MEMBER_NOT_IN_ALIAS = 0xC0000152,
+  MD_NTSTATUS_WIN_STATUS_MEMBER_IN_ALIAS = 0xC0000153,
+  MD_NTSTATUS_WIN_STATUS_ALIAS_EXISTS = 0xC0000154,
+  MD_NTSTATUS_WIN_STATUS_LOGON_NOT_GRANTED = 0xC0000155,
+  MD_NTSTATUS_WIN_STATUS_TOO_MANY_SECRETS = 0xC0000156,
+  MD_NTSTATUS_WIN_STATUS_SECRET_TOO_LONG = 0xC0000157,
+  MD_NTSTATUS_WIN_STATUS_INTERNAL_DB_ERROR = 0xC0000158,
+  MD_NTSTATUS_WIN_STATUS_FULLSCREEN_MODE = 0xC0000159,
+  MD_NTSTATUS_WIN_STATUS_TOO_MANY_CONTEXT_IDS = 0xC000015A,
+  MD_NTSTATUS_WIN_STATUS_LOGON_TYPE_NOT_GRANTED = 0xC000015B,
+  MD_NTSTATUS_WIN_STATUS_NOT_REGISTRY_FILE = 0xC000015C,
+  MD_NTSTATUS_WIN_STATUS_NT_CROSS_ENCRYPTION_REQUIRED = 0xC000015D,
+  MD_NTSTATUS_WIN_STATUS_DOMAIN_CTRLR_CONFIG_ERROR = 0xC000015E,
+  MD_NTSTATUS_WIN_STATUS_FT_MISSING_MEMBER = 0xC000015F,
+  MD_NTSTATUS_WIN_STATUS_ILL_FORMED_SERVICE_ENTRY = 0xC0000160,
+  MD_NTSTATUS_WIN_STATUS_ILLEGAL_CHARACTER = 0xC0000161,
+  MD_NTSTATUS_WIN_STATUS_UNMAPPABLE_CHARACTER = 0xC0000162,
+  MD_NTSTATUS_WIN_STATUS_UNDEFINED_CHARACTER = 0xC0000163,
+  MD_NTSTATUS_WIN_STATUS_FLOPPY_VOLUME = 0xC0000164,
+  MD_NTSTATUS_WIN_STATUS_FLOPPY_ID_MARK_NOT_FOUND = 0xC0000165,
+  MD_NTSTATUS_WIN_STATUS_FLOPPY_WRONG_CYLINDER = 0xC0000166,
+  MD_NTSTATUS_WIN_STATUS_FLOPPY_UNKNOWN_ERROR = 0xC0000167,
+  MD_NTSTATUS_WIN_STATUS_FLOPPY_BAD_REGISTERS = 0xC0000168,
+  MD_NTSTATUS_WIN_STATUS_DISK_RECALIBRATE_FAILED = 0xC0000169,
+  MD_NTSTATUS_WIN_STATUS_DISK_OPERATION_FAILED = 0xC000016A,
+  MD_NTSTATUS_WIN_STATUS_DISK_RESET_FAILED = 0xC000016B,
+  MD_NTSTATUS_WIN_STATUS_SHARED_IRQ_BUSY = 0xC000016C,
+  MD_NTSTATUS_WIN_STATUS_FT_ORPHANING = 0xC000016D,
+  MD_NTSTATUS_WIN_STATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT = 0xC000016E,
+  MD_NTSTATUS_WIN_STATUS_PARTITION_FAILURE = 0xC0000172,
+  MD_NTSTATUS_WIN_STATUS_INVALID_BLOCK_LENGTH = 0xC0000173,
+  MD_NTSTATUS_WIN_STATUS_DEVICE_NOT_PARTITIONED = 0xC0000174,
+  MD_NTSTATUS_WIN_STATUS_UNABLE_TO_LOCK_MEDIA = 0xC0000175,
+  MD_NTSTATUS_WIN_STATUS_UNABLE_TO_UNLOAD_MEDIA = 0xC0000176,
+  MD_NTSTATUS_WIN_STATUS_EOM_OVERFLOW = 0xC0000177,
+  MD_NTSTATUS_WIN_STATUS_NO_MEDIA = 0xC0000178,
+  MD_NTSTATUS_WIN_STATUS_NO_SUCH_MEMBER = 0xC000017A,
+  MD_NTSTATUS_WIN_STATUS_INVALID_MEMBER = 0xC000017B,
+  MD_NTSTATUS_WIN_STATUS_KEY_DELETED = 0xC000017C,
+  MD_NTSTATUS_WIN_STATUS_NO_LOG_SPACE = 0xC000017D,
+  MD_NTSTATUS_WIN_STATUS_TOO_MANY_SIDS = 0xC000017E,
+  MD_NTSTATUS_WIN_STATUS_LM_CROSS_ENCRYPTION_REQUIRED = 0xC000017F,
+  MD_NTSTATUS_WIN_STATUS_KEY_HAS_CHILDREN = 0xC0000180,
+  MD_NTSTATUS_WIN_STATUS_CHILD_MUST_BE_VOLATILE = 0xC0000181,
+  MD_NTSTATUS_WIN_STATUS_DEVICE_CONFIGURATION_ERROR = 0xC0000182,
+  MD_NTSTATUS_WIN_STATUS_DRIVER_INTERNAL_ERROR = 0xC0000183,
+  MD_NTSTATUS_WIN_STATUS_INVALID_DEVICE_STATE = 0xC0000184,
+  MD_NTSTATUS_WIN_STATUS_IO_DEVICE_ERROR = 0xC0000185,
+  MD_NTSTATUS_WIN_STATUS_DEVICE_PROTOCOL_ERROR = 0xC0000186,
+  MD_NTSTATUS_WIN_STATUS_BACKUP_CONTROLLER = 0xC0000187,
+  MD_NTSTATUS_WIN_STATUS_LOG_FILE_FULL = 0xC0000188,
+  MD_NTSTATUS_WIN_STATUS_TOO_LATE = 0xC0000189,
+  MD_NTSTATUS_WIN_STATUS_NO_TRUST_LSA_SECRET = 0xC000018A,
+  MD_NTSTATUS_WIN_STATUS_NO_TRUST_SAM_ACCOUNT = 0xC000018B,
+  MD_NTSTATUS_WIN_STATUS_TRUSTED_DOMAIN_FAILURE = 0xC000018C,
+  MD_NTSTATUS_WIN_STATUS_TRUSTED_RELATIONSHIP_FAILURE = 0xC000018D,
+  MD_NTSTATUS_WIN_STATUS_EVENTLOG_FILE_CORRUPT = 0xC000018E,
+  MD_NTSTATUS_WIN_STATUS_EVENTLOG_CANT_START = 0xC000018F,
+  MD_NTSTATUS_WIN_STATUS_TRUST_FAILURE = 0xC0000190,
+  MD_NTSTATUS_WIN_STATUS_MUTANT_LIMIT_EXCEEDED = 0xC0000191,
+  MD_NTSTATUS_WIN_STATUS_NETLOGON_NOT_STARTED = 0xC0000192,
+  MD_NTSTATUS_WIN_STATUS_ACCOUNT_EXPIRED = 0xC0000193,
+  MD_NTSTATUS_WIN_STATUS_POSSIBLE_DEADLOCK = 0xC0000194,
+  MD_NTSTATUS_WIN_STATUS_NETWORK_CREDENTIAL_CONFLICT = 0xC0000195,
+  MD_NTSTATUS_WIN_STATUS_REMOTE_SESSION_LIMIT = 0xC0000196,
+  MD_NTSTATUS_WIN_STATUS_EVENTLOG_FILE_CHANGED = 0xC0000197,
+  MD_NTSTATUS_WIN_STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT = 0xC0000198,
+  MD_NTSTATUS_WIN_STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT = 0xC0000199,
+  MD_NTSTATUS_WIN_STATUS_NOLOGON_SERVER_TRUST_ACCOUNT = 0xC000019A,
+  MD_NTSTATUS_WIN_STATUS_DOMAIN_TRUST_INCONSISTENT = 0xC000019B,
+  MD_NTSTATUS_WIN_STATUS_FS_DRIVER_REQUIRED = 0xC000019C,
+  MD_NTSTATUS_WIN_STATUS_IMAGE_ALREADY_LOADED_AS_DLL = 0xC000019D,
+  MD_NTSTATUS_WIN_STATUS_INCOMPATIBLE_WITH_GLOBAL_SHORT_NAME_REGISTRY_SETTING = 0xC000019E,
+  MD_NTSTATUS_WIN_STATUS_SHORT_NAMES_NOT_ENABLED_ON_VOLUME = 0xC000019F,
+  MD_NTSTATUS_WIN_STATUS_SECURITY_STREAM_IS_INCONSISTENT = 0xC00001A0,
+  MD_NTSTATUS_WIN_STATUS_INVALID_LOCK_RANGE = 0xC00001A1,
+  MD_NTSTATUS_WIN_STATUS_INVALID_ACE_CONDITION = 0xC00001A2,
+  MD_NTSTATUS_WIN_STATUS_IMAGE_SUBSYSTEM_NOT_PRESENT = 0xC00001A3,
+  MD_NTSTATUS_WIN_STATUS_NOTIFICATION_GUID_ALREADY_DEFINED = 0xC00001A4,
+  MD_NTSTATUS_WIN_STATUS_INVALID_EXCEPTION_HANDLER = 0xC00001A5,
+  MD_NTSTATUS_WIN_STATUS_DUPLICATE_PRIVILEGES = 0xC00001A6,
+  MD_NTSTATUS_WIN_STATUS_NOT_ALLOWED_ON_SYSTEM_FILE = 0xC00001A7,
+  MD_NTSTATUS_WIN_STATUS_REPAIR_NEEDED = 0xC00001A8,
+  MD_NTSTATUS_WIN_STATUS_QUOTA_NOT_ENABLED = 0xC00001A9,
+  MD_NTSTATUS_WIN_STATUS_NO_APPLICATION_PACKAGE = 0xC00001AA,
+  MD_NTSTATUS_WIN_STATUS_NETWORK_OPEN_RESTRICTION = 0xC0000201,
+  MD_NTSTATUS_WIN_STATUS_NO_USER_SESSION_KEY = 0xC0000202,
+  MD_NTSTATUS_WIN_STATUS_USER_SESSION_DELETED = 0xC0000203,
+  MD_NTSTATUS_WIN_STATUS_RESOURCE_LANG_NOT_FOUND = 0xC0000204,
+  MD_NTSTATUS_WIN_STATUS_INSUFF_SERVER_RESOURCES = 0xC0000205,
+  MD_NTSTATUS_WIN_STATUS_INVALID_BUFFER_SIZE = 0xC0000206,
+  MD_NTSTATUS_WIN_STATUS_INVALID_ADDRESS_COMPONENT = 0xC0000207,
+  MD_NTSTATUS_WIN_STATUS_INVALID_ADDRESS_WILDCARD = 0xC0000208,
+  MD_NTSTATUS_WIN_STATUS_TOO_MANY_ADDRESSES = 0xC0000209,
+  MD_NTSTATUS_WIN_STATUS_ADDRESS_ALREADY_EXISTS = 0xC000020A,
+  MD_NTSTATUS_WIN_STATUS_ADDRESS_CLOSED = 0xC000020B,
+  MD_NTSTATUS_WIN_STATUS_CONNECTION_DISCONNECTED = 0xC000020C,
+  MD_NTSTATUS_WIN_STATUS_CONNECTION_RESET = 0xC000020D,
+  MD_NTSTATUS_WIN_STATUS_TOO_MANY_NODES = 0xC000020E,
+  MD_NTSTATUS_WIN_STATUS_TRANSACTION_ABORTED = 0xC000020F,
+  MD_NTSTATUS_WIN_STATUS_TRANSACTION_TIMED_OUT = 0xC0000210,
+  MD_NTSTATUS_WIN_STATUS_TRANSACTION_NO_RELEASE = 0xC0000211,
+  MD_NTSTATUS_WIN_STATUS_TRANSACTION_NO_MATCH = 0xC0000212,
+  MD_NTSTATUS_WIN_STATUS_TRANSACTION_RESPONDED = 0xC0000213,
+  MD_NTSTATUS_WIN_STATUS_TRANSACTION_INVALID_ID = 0xC0000214,
+  MD_NTSTATUS_WIN_STATUS_TRANSACTION_INVALID_TYPE = 0xC0000215,
+  MD_NTSTATUS_WIN_STATUS_NOT_SERVER_SESSION = 0xC0000216,
+  MD_NTSTATUS_WIN_STATUS_NOT_CLIENT_SESSION = 0xC0000217,
+  MD_NTSTATUS_WIN_STATUS_CANNOT_LOAD_REGISTRY_FILE = 0xC0000218,
+  MD_NTSTATUS_WIN_STATUS_DEBUG_ATTACH_FAILED = 0xC0000219,
+  MD_NTSTATUS_WIN_STATUS_SYSTEM_PROCESS_TERMINATED = 0xC000021A,
+  MD_NTSTATUS_WIN_STATUS_DATA_NOT_ACCEPTED = 0xC000021B,
+  MD_NTSTATUS_WIN_STATUS_NO_BROWSER_SERVERS_FOUND = 0xC000021C,
+  MD_NTSTATUS_WIN_STATUS_VDM_HARD_ERROR = 0xC000021D,
+  MD_NTSTATUS_WIN_STATUS_DRIVER_CANCEL_TIMEOUT = 0xC000021E,
+  MD_NTSTATUS_WIN_STATUS_REPLY_MESSAGE_MISMATCH = 0xC000021F,
+  MD_NTSTATUS_WIN_STATUS_MAPPED_ALIGNMENT = 0xC0000220,
+  MD_NTSTATUS_WIN_STATUS_IMAGE_CHECKSUM_MISMATCH = 0xC0000221,
+  MD_NTSTATUS_WIN_STATUS_LOST_WRITEBEHIND_DATA = 0xC0000222,
+  MD_NTSTATUS_WIN_STATUS_CLIENT_SERVER_PARAMETERS_INVALID = 0xC0000223,
+  MD_NTSTATUS_WIN_STATUS_PASSWORD_MUST_CHANGE = 0xC0000224,
+  MD_NTSTATUS_WIN_STATUS_NOT_FOUND = 0xC0000225,
+  MD_NTSTATUS_WIN_STATUS_NOT_TINY_STREAM = 0xC0000226,
+  MD_NTSTATUS_WIN_STATUS_RECOVERY_FAILURE = 0xC0000227,
+  MD_NTSTATUS_WIN_STATUS_STACK_OVERFLOW_READ = 0xC0000228,
+  MD_NTSTATUS_WIN_STATUS_FAIL_CHECK = 0xC0000229,
+  MD_NTSTATUS_WIN_STATUS_DUPLICATE_OBJECTID = 0xC000022A,
+  MD_NTSTATUS_WIN_STATUS_OBJECTID_EXISTS = 0xC000022B,
+  MD_NTSTATUS_WIN_STATUS_CONVERT_TO_LARGE = 0xC000022C,
+  MD_NTSTATUS_WIN_STATUS_RETRY = 0xC000022D,
+  MD_NTSTATUS_WIN_STATUS_FOUND_OUT_OF_SCOPE = 0xC000022E,
+  MD_NTSTATUS_WIN_STATUS_ALLOCATE_BUCKET = 0xC000022F,
+  MD_NTSTATUS_WIN_STATUS_PROPSET_NOT_FOUND = 0xC0000230,
+  MD_NTSTATUS_WIN_STATUS_MARSHALL_OVERFLOW = 0xC0000231,
+  MD_NTSTATUS_WIN_STATUS_INVALID_VARIANT = 0xC0000232,
+  MD_NTSTATUS_WIN_STATUS_DOMAIN_CONTROLLER_NOT_FOUND = 0xC0000233,
+  MD_NTSTATUS_WIN_STATUS_ACCOUNT_LOCKED_OUT = 0xC0000234,
+  MD_NTSTATUS_WIN_STATUS_HANDLE_NOT_CLOSABLE = 0xC0000235,
+  MD_NTSTATUS_WIN_STATUS_CONNECTION_REFUSED = 0xC0000236,
+  MD_NTSTATUS_WIN_STATUS_GRACEFUL_DISCONNECT = 0xC0000237,
+  MD_NTSTATUS_WIN_STATUS_ADDRESS_ALREADY_ASSOCIATED = 0xC0000238,
+  MD_NTSTATUS_WIN_STATUS_ADDRESS_NOT_ASSOCIATED = 0xC0000239,
+  MD_NTSTATUS_WIN_STATUS_CONNECTION_INVALID = 0xC000023A,
+  MD_NTSTATUS_WIN_STATUS_CONNECTION_ACTIVE = 0xC000023B,
+  MD_NTSTATUS_WIN_STATUS_NETWORK_UNREACHABLE = 0xC000023C,
+  MD_NTSTATUS_WIN_STATUS_HOST_UNREACHABLE = 0xC000023D,
+  MD_NTSTATUS_WIN_STATUS_PROTOCOL_UNREACHABLE = 0xC000023E,
+  MD_NTSTATUS_WIN_STATUS_PORT_UNREACHABLE = 0xC000023F,
+  MD_NTSTATUS_WIN_STATUS_REQUEST_ABORTED = 0xC0000240,
+  MD_NTSTATUS_WIN_STATUS_CONNECTION_ABORTED = 0xC0000241,
+  MD_NTSTATUS_WIN_STATUS_BAD_COMPRESSION_BUFFER = 0xC0000242,
+  MD_NTSTATUS_WIN_STATUS_USER_MAPPED_FILE = 0xC0000243,
+  MD_NTSTATUS_WIN_STATUS_AUDIT_FAILED = 0xC0000244,
+  MD_NTSTATUS_WIN_STATUS_TIMER_RESOLUTION_NOT_SET = 0xC0000245,
+  MD_NTSTATUS_WIN_STATUS_CONNECTION_COUNT_LIMIT = 0xC0000246,
+  MD_NTSTATUS_WIN_STATUS_LOGIN_TIME_RESTRICTION = 0xC0000247,
+  MD_NTSTATUS_WIN_STATUS_LOGIN_WKSTA_RESTRICTION = 0xC0000248,
+  MD_NTSTATUS_WIN_STATUS_IMAGE_MP_UP_MISMATCH = 0xC0000249,
+  MD_NTSTATUS_WIN_STATUS_INSUFFICIENT_LOGON_INFO = 0xC0000250,
+  MD_NTSTATUS_WIN_STATUS_BAD_DLL_ENTRYPOINT = 0xC0000251,
+  MD_NTSTATUS_WIN_STATUS_BAD_SERVICE_ENTRYPOINT = 0xC0000252,
+  MD_NTSTATUS_WIN_STATUS_LPC_REPLY_LOST = 0xC0000253,
+  MD_NTSTATUS_WIN_STATUS_IP_ADDRESS_CONFLICT1 = 0xC0000254,
+  MD_NTSTATUS_WIN_STATUS_IP_ADDRESS_CONFLICT2 = 0xC0000255,
+  MD_NTSTATUS_WIN_STATUS_REGISTRY_QUOTA_LIMIT = 0xC0000256,
+  MD_NTSTATUS_WIN_STATUS_PATH_NOT_COVERED = 0xC0000257,
+  MD_NTSTATUS_WIN_STATUS_NO_CALLBACK_ACTIVE = 0xC0000258,
+  MD_NTSTATUS_WIN_STATUS_LICENSE_QUOTA_EXCEEDED = 0xC0000259,
+  MD_NTSTATUS_WIN_STATUS_PWD_TOO_SHORT = 0xC000025A,
+  MD_NTSTATUS_WIN_STATUS_PWD_TOO_RECENT = 0xC000025B,
+  MD_NTSTATUS_WIN_STATUS_PWD_HISTORY_CONFLICT = 0xC000025C,
+  MD_NTSTATUS_WIN_STATUS_PLUGPLAY_NO_DEVICE = 0xC000025E,
+  MD_NTSTATUS_WIN_STATUS_UNSUPPORTED_COMPRESSION = 0xC000025F,
+  MD_NTSTATUS_WIN_STATUS_INVALID_HW_PROFILE = 0xC0000260,
+  MD_NTSTATUS_WIN_STATUS_INVALID_PLUGPLAY_DEVICE_PATH = 0xC0000261,
+  MD_NTSTATUS_WIN_STATUS_DRIVER_ORDINAL_NOT_FOUND = 0xC0000262,
+  MD_NTSTATUS_WIN_STATUS_DRIVER_ENTRYPOINT_NOT_FOUND = 0xC0000263,
+  MD_NTSTATUS_WIN_STATUS_RESOURCE_NOT_OWNED = 0xC0000264,
+  MD_NTSTATUS_WIN_STATUS_TOO_MANY_LINKS = 0xC0000265,
+  MD_NTSTATUS_WIN_STATUS_QUOTA_LIST_INCONSISTENT = 0xC0000266,
+  MD_NTSTATUS_WIN_STATUS_FILE_IS_OFFLINE = 0xC0000267,
+  MD_NTSTATUS_WIN_STATUS_EVALUATION_EXPIRATION = 0xC0000268,
+  MD_NTSTATUS_WIN_STATUS_ILLEGAL_DLL_RELOCATION = 0xC0000269,
+  MD_NTSTATUS_WIN_STATUS_LICENSE_VIOLATION = 0xC000026A,
+  MD_NTSTATUS_WIN_STATUS_DLL_INIT_FAILED_LOGOFF = 0xC000026B,
+  MD_NTSTATUS_WIN_STATUS_DRIVER_UNABLE_TO_LOAD = 0xC000026C,
+  MD_NTSTATUS_WIN_STATUS_DFS_UNAVAILABLE = 0xC000026D,
+  MD_NTSTATUS_WIN_STATUS_VOLUME_DISMOUNTED = 0xC000026E,
+  MD_NTSTATUS_WIN_STATUS_WX86_INTERNAL_ERROR = 0xC000026F,
+  MD_NTSTATUS_WIN_STATUS_WX86_FLOAT_STACK_CHECK = 0xC0000270,
+  MD_NTSTATUS_WIN_STATUS_VALIDATE_CONTINUE = 0xC0000271,
+  MD_NTSTATUS_WIN_STATUS_NO_MATCH = 0xC0000272,
+  MD_NTSTATUS_WIN_STATUS_NO_MORE_MATCHES = 0xC0000273,
+  MD_NTSTATUS_WIN_STATUS_NOT_A_REPARSE_POINT = 0xC0000275,
+  MD_NTSTATUS_WIN_STATUS_IO_REPARSE_TAG_INVALID = 0xC0000276,
+  MD_NTSTATUS_WIN_STATUS_IO_REPARSE_TAG_MISMATCH = 0xC0000277,
+  MD_NTSTATUS_WIN_STATUS_IO_REPARSE_DATA_INVALID = 0xC0000278,
+  MD_NTSTATUS_WIN_STATUS_IO_REPARSE_TAG_NOT_HANDLED = 0xC0000279,
+  MD_NTSTATUS_WIN_STATUS_PWD_TOO_LONG = 0xC000027A,
+  MD_NTSTATUS_WIN_STATUS_STOWED_EXCEPTION = 0xC000027B,
+  MD_NTSTATUS_WIN_STATUS_REPARSE_POINT_NOT_RESOLVED = 0xC0000280,
+  MD_NTSTATUS_WIN_STATUS_DIRECTORY_IS_A_REPARSE_POINT = 0xC0000281,
+  MD_NTSTATUS_WIN_STATUS_RANGE_LIST_CONFLICT = 0xC0000282,
+  MD_NTSTATUS_WIN_STATUS_SOURCE_ELEMENT_EMPTY = 0xC0000283,
+  MD_NTSTATUS_WIN_STATUS_DESTINATION_ELEMENT_FULL = 0xC0000284,
+  MD_NTSTATUS_WIN_STATUS_ILLEGAL_ELEMENT_ADDRESS = 0xC0000285,
+  MD_NTSTATUS_WIN_STATUS_MAGAZINE_NOT_PRESENT = 0xC0000286,
+  MD_NTSTATUS_WIN_STATUS_REINITIALIZATION_NEEDED = 0xC0000287,
+  MD_NTSTATUS_WIN_STATUS_ENCRYPTION_FAILED = 0xC000028A,
+  MD_NTSTATUS_WIN_STATUS_DECRYPTION_FAILED = 0xC000028B,
+  MD_NTSTATUS_WIN_STATUS_RANGE_NOT_FOUND = 0xC000028C,
+  MD_NTSTATUS_WIN_STATUS_NO_RECOVERY_POLICY = 0xC000028D,
+  MD_NTSTATUS_WIN_STATUS_NO_EFS = 0xC000028E,
+  MD_NTSTATUS_WIN_STATUS_WRONG_EFS = 0xC000028F,
+  MD_NTSTATUS_WIN_STATUS_NO_USER_KEYS = 0xC0000290,
+  MD_NTSTATUS_WIN_STATUS_FILE_NOT_ENCRYPTED = 0xC0000291,
+  MD_NTSTATUS_WIN_STATUS_NOT_EXPORT_FORMAT = 0xC0000292,
+  MD_NTSTATUS_WIN_STATUS_FILE_ENCRYPTED = 0xC0000293,
+  MD_NTSTATUS_WIN_STATUS_WMI_GUID_NOT_FOUND = 0xC0000295,
+  MD_NTSTATUS_WIN_STATUS_WMI_INSTANCE_NOT_FOUND = 0xC0000296,
+  MD_NTSTATUS_WIN_STATUS_WMI_ITEMID_NOT_FOUND = 0xC0000297,
+  MD_NTSTATUS_WIN_STATUS_WMI_TRY_AGAIN = 0xC0000298,
+  MD_NTSTATUS_WIN_STATUS_SHARED_POLICY = 0xC0000299,
+  MD_NTSTATUS_WIN_STATUS_POLICY_OBJECT_NOT_FOUND = 0xC000029A,
+  MD_NTSTATUS_WIN_STATUS_POLICY_ONLY_IN_DS = 0xC000029B,
+  MD_NTSTATUS_WIN_STATUS_VOLUME_NOT_UPGRADED = 0xC000029C,
+  MD_NTSTATUS_WIN_STATUS_REMOTE_STORAGE_NOT_ACTIVE = 0xC000029D,
+  MD_NTSTATUS_WIN_STATUS_REMOTE_STORAGE_MEDIA_ERROR = 0xC000029E,
+  MD_NTSTATUS_WIN_STATUS_NO_TRACKING_SERVICE = 0xC000029F,
+  MD_NTSTATUS_WIN_STATUS_SERVER_SID_MISMATCH = 0xC00002A0,
+  MD_NTSTATUS_WIN_STATUS_DS_NO_ATTRIBUTE_OR_VALUE = 0xC00002A1,
+  MD_NTSTATUS_WIN_STATUS_DS_INVALID_ATTRIBUTE_SYNTAX = 0xC00002A2,
+  MD_NTSTATUS_WIN_STATUS_DS_ATTRIBUTE_TYPE_UNDEFINED = 0xC00002A3,
+  MD_NTSTATUS_WIN_STATUS_DS_ATTRIBUTE_OR_VALUE_EXISTS = 0xC00002A4,
+  MD_NTSTATUS_WIN_STATUS_DS_BUSY = 0xC00002A5,
+  MD_NTSTATUS_WIN_STATUS_DS_UNAVAILABLE = 0xC00002A6,
+  MD_NTSTATUS_WIN_STATUS_DS_NO_RIDS_ALLOCATED = 0xC00002A7,
+  MD_NTSTATUS_WIN_STATUS_DS_NO_MORE_RIDS = 0xC00002A8,
+  MD_NTSTATUS_WIN_STATUS_DS_INCORRECT_ROLE_OWNER = 0xC00002A9,
+  MD_NTSTATUS_WIN_STATUS_DS_RIDMGR_INIT_ERROR = 0xC00002AA,
+  MD_NTSTATUS_WIN_STATUS_DS_OBJ_CLASS_VIOLATION = 0xC00002AB,
+  MD_NTSTATUS_WIN_STATUS_DS_CANT_ON_NON_LEAF = 0xC00002AC,
+  MD_NTSTATUS_WIN_STATUS_DS_CANT_ON_RDN = 0xC00002AD,
+  MD_NTSTATUS_WIN_STATUS_DS_CANT_MOD_OBJ_CLASS = 0xC00002AE,
+  MD_NTSTATUS_WIN_STATUS_DS_CROSS_DOM_MOVE_FAILED = 0xC00002AF,
+  MD_NTSTATUS_WIN_STATUS_DS_GC_NOT_AVAILABLE = 0xC00002B0,
+  MD_NTSTATUS_WIN_STATUS_DIRECTORY_SERVICE_REQUIRED = 0xC00002B1,
+  MD_NTSTATUS_WIN_STATUS_REPARSE_ATTRIBUTE_CONFLICT = 0xC00002B2,
+  MD_NTSTATUS_WIN_STATUS_CANT_ENABLE_DENY_ONLY = 0xC00002B3,
+  MD_NTSTATUS_WIN_STATUS_FLOAT_MULTIPLE_FAULTS = 0xC00002B4,
+  MD_NTSTATUS_WIN_STATUS_FLOAT_MULTIPLE_TRAPS = 0xC00002B5,
+  MD_NTSTATUS_WIN_STATUS_DEVICE_REMOVED = 0xC00002B6,
+  MD_NTSTATUS_WIN_STATUS_JOURNAL_DELETE_IN_PROGRESS = 0xC00002B7,
+  MD_NTSTATUS_WIN_STATUS_JOURNAL_NOT_ACTIVE = 0xC00002B8,
+  MD_NTSTATUS_WIN_STATUS_NOINTERFACE = 0xC00002B9,
+  MD_NTSTATUS_WIN_STATUS_DS_RIDMGR_DISABLED = 0xC00002BA,
+  MD_NTSTATUS_WIN_STATUS_DS_ADMIN_LIMIT_EXCEEDED = 0xC00002C1,
+  MD_NTSTATUS_WIN_STATUS_DRIVER_FAILED_SLEEP = 0xC00002C2,
+  MD_NTSTATUS_WIN_STATUS_MUTUAL_AUTHENTICATION_FAILED = 0xC00002C3,
+  MD_NTSTATUS_WIN_STATUS_CORRUPT_SYSTEM_FILE = 0xC00002C4,
+  MD_NTSTATUS_WIN_STATUS_DATATYPE_MISALIGNMENT_ERROR = 0xC00002C5,
+  MD_NTSTATUS_WIN_STATUS_WMI_READ_ONLY = 0xC00002C6,
+  MD_NTSTATUS_WIN_STATUS_WMI_SET_FAILURE = 0xC00002C7,
+  MD_NTSTATUS_WIN_STATUS_COMMITMENT_MINIMUM = 0xC00002C8,
+  MD_NTSTATUS_WIN_STATUS_REG_NAT_CONSUMPTION = 0xC00002C9,
+  MD_NTSTATUS_WIN_STATUS_TRANSPORT_FULL = 0xC00002CA,
+  MD_NTSTATUS_WIN_STATUS_DS_SAM_INIT_FAILURE = 0xC00002CB,
+  MD_NTSTATUS_WIN_STATUS_ONLY_IF_CONNECTED = 0xC00002CC,
+  MD_NTSTATUS_WIN_STATUS_DS_SENSITIVE_GROUP_VIOLATION = 0xC00002CD,
+  MD_NTSTATUS_WIN_STATUS_PNP_RESTART_ENUMERATION = 0xC00002CE,
+  MD_NTSTATUS_WIN_STATUS_JOURNAL_ENTRY_DELETED = 0xC00002CF,
+  MD_NTSTATUS_WIN_STATUS_DS_CANT_MOD_PRIMARYGROUPID = 0xC00002D0,
+  MD_NTSTATUS_WIN_STATUS_SYSTEM_IMAGE_BAD_SIGNATURE = 0xC00002D1,
+  MD_NTSTATUS_WIN_STATUS_PNP_REBOOT_REQUIRED = 0xC00002D2,
+  MD_NTSTATUS_WIN_STATUS_POWER_STATE_INVALID = 0xC00002D3,
+  MD_NTSTATUS_WIN_STATUS_DS_INVALID_GROUP_TYPE = 0xC00002D4,
+  MD_NTSTATUS_WIN_STATUS_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN = 0xC00002D5,
+  MD_NTSTATUS_WIN_STATUS_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN = 0xC00002D6,
+  MD_NTSTATUS_WIN_STATUS_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER = 0xC00002D7,
+  MD_NTSTATUS_WIN_STATUS_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER = 0xC00002D8,
+  MD_NTSTATUS_WIN_STATUS_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER = 0xC00002D9,
+  MD_NTSTATUS_WIN_STATUS_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER = 0xC00002DA,
+  MD_NTSTATUS_WIN_STATUS_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER = 0xC00002DB,
+  MD_NTSTATUS_WIN_STATUS_DS_HAVE_PRIMARY_MEMBERS = 0xC00002DC,
+  MD_NTSTATUS_WIN_STATUS_WMI_NOT_SUPPORTED = 0xC00002DD,
+  MD_NTSTATUS_WIN_STATUS_INSUFFICIENT_POWER = 0xC00002DE,
+  MD_NTSTATUS_WIN_STATUS_SAM_NEED_BOOTKEY_PASSWORD = 0xC00002DF,
+  MD_NTSTATUS_WIN_STATUS_SAM_NEED_BOOTKEY_FLOPPY = 0xC00002E0,
+  MD_NTSTATUS_WIN_STATUS_DS_CANT_START = 0xC00002E1,
+  MD_NTSTATUS_WIN_STATUS_DS_INIT_FAILURE = 0xC00002E2,
+  MD_NTSTATUS_WIN_STATUS_SAM_INIT_FAILURE = 0xC00002E3,
+  MD_NTSTATUS_WIN_STATUS_DS_GC_REQUIRED = 0xC00002E4,
+  MD_NTSTATUS_WIN_STATUS_DS_LOCAL_MEMBER_OF_LOCAL_ONLY = 0xC00002E5,
+  MD_NTSTATUS_WIN_STATUS_DS_NO_FPO_IN_UNIVERSAL_GROUPS = 0xC00002E6,
+  MD_NTSTATUS_WIN_STATUS_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED = 0xC00002E7,
+  MD_NTSTATUS_WIN_STATUS_MULTIPLE_FAULT_VIOLATION = 0xC00002E8,
+  MD_NTSTATUS_WIN_STATUS_CURRENT_DOMAIN_NOT_ALLOWED = 0xC00002E9,
+  MD_NTSTATUS_WIN_STATUS_CANNOT_MAKE = 0xC00002EA,
+  MD_NTSTATUS_WIN_STATUS_SYSTEM_SHUTDOWN = 0xC00002EB,
+  MD_NTSTATUS_WIN_STATUS_DS_INIT_FAILURE_CONSOLE = 0xC00002EC,
+  MD_NTSTATUS_WIN_STATUS_DS_SAM_INIT_FAILURE_CONSOLE = 0xC00002ED,
+  MD_NTSTATUS_WIN_STATUS_UNFINISHED_CONTEXT_DELETED = 0xC00002EE,
+  MD_NTSTATUS_WIN_STATUS_NO_TGT_REPLY = 0xC00002EF,
+  MD_NTSTATUS_WIN_STATUS_OBJECTID_NOT_FOUND = 0xC00002F0,
+  MD_NTSTATUS_WIN_STATUS_NO_IP_ADDRESSES = 0xC00002F1,
+  MD_NTSTATUS_WIN_STATUS_WRONG_CREDENTIAL_HANDLE = 0xC00002F2,
+  MD_NTSTATUS_WIN_STATUS_CRYPTO_SYSTEM_INVALID = 0xC00002F3,
+  MD_NTSTATUS_WIN_STATUS_MAX_REFERRALS_EXCEEDED = 0xC00002F4,
+  MD_NTSTATUS_WIN_STATUS_MUST_BE_KDC = 0xC00002F5,
+  MD_NTSTATUS_WIN_STATUS_STRONG_CRYPTO_NOT_SUPPORTED = 0xC00002F6,
+  MD_NTSTATUS_WIN_STATUS_TOO_MANY_PRINCIPALS = 0xC00002F7,
+  MD_NTSTATUS_WIN_STATUS_NO_PA_DATA = 0xC00002F8,
+  MD_NTSTATUS_WIN_STATUS_PKINIT_NAME_MISMATCH = 0xC00002F9,
+  MD_NTSTATUS_WIN_STATUS_SMARTCARD_LOGON_REQUIRED = 0xC00002FA,
+  MD_NTSTATUS_WIN_STATUS_KDC_INVALID_REQUEST = 0xC00002FB,
+  MD_NTSTATUS_WIN_STATUS_KDC_UNABLE_TO_REFER = 0xC00002FC,
+  MD_NTSTATUS_WIN_STATUS_KDC_UNKNOWN_ETYPE = 0xC00002FD,
+  MD_NTSTATUS_WIN_STATUS_SHUTDOWN_IN_PROGRESS = 0xC00002FE,
+  MD_NTSTATUS_WIN_STATUS_SERVER_SHUTDOWN_IN_PROGRESS = 0xC00002FF,
+  MD_NTSTATUS_WIN_STATUS_NOT_SUPPORTED_ON_SBS = 0xC0000300,
+  MD_NTSTATUS_WIN_STATUS_WMI_GUID_DISCONNECTED = 0xC0000301,
+  MD_NTSTATUS_WIN_STATUS_WMI_ALREADY_DISABLED = 0xC0000302,
+  MD_NTSTATUS_WIN_STATUS_WMI_ALREADY_ENABLED = 0xC0000303,
+  MD_NTSTATUS_WIN_STATUS_MFT_TOO_FRAGMENTED = 0xC0000304,
+  MD_NTSTATUS_WIN_STATUS_COPY_PROTECTION_FAILURE = 0xC0000305,
+  MD_NTSTATUS_WIN_STATUS_CSS_AUTHENTICATION_FAILURE = 0xC0000306,
+  MD_NTSTATUS_WIN_STATUS_CSS_KEY_NOT_PRESENT = 0xC0000307,
+  MD_NTSTATUS_WIN_STATUS_CSS_KEY_NOT_ESTABLISHED = 0xC0000308,
+  MD_NTSTATUS_WIN_STATUS_CSS_SCRAMBLED_SECTOR = 0xC0000309,
+  MD_NTSTATUS_WIN_STATUS_CSS_REGION_MISMATCH = 0xC000030A,
+  MD_NTSTATUS_WIN_STATUS_CSS_RESETS_EXHAUSTED = 0xC000030B,
+  MD_NTSTATUS_WIN_STATUS_PASSWORD_CHANGE_REQUIRED = 0xC000030C,
+  MD_NTSTATUS_WIN_STATUS_PKINIT_FAILURE = 0xC0000320,
+  MD_NTSTATUS_WIN_STATUS_SMARTCARD_SUBSYSTEM_FAILURE = 0xC0000321,
+  MD_NTSTATUS_WIN_STATUS_NO_KERB_KEY = 0xC0000322,
+  MD_NTSTATUS_WIN_STATUS_HOST_DOWN = 0xC0000350,
+  MD_NTSTATUS_WIN_STATUS_UNSUPPORTED_PREAUTH = 0xC0000351,
+  MD_NTSTATUS_WIN_STATUS_EFS_ALG_BLOB_TOO_BIG = 0xC0000352,
+  MD_NTSTATUS_WIN_STATUS_PORT_NOT_SET = 0xC0000353,
+  MD_NTSTATUS_WIN_STATUS_DEBUGGER_INACTIVE = 0xC0000354,
+  MD_NTSTATUS_WIN_STATUS_DS_VERSION_CHECK_FAILURE = 0xC0000355,
+  MD_NTSTATUS_WIN_STATUS_AUDITING_DISABLED = 0xC0000356,
+  MD_NTSTATUS_WIN_STATUS_PRENT4_MACHINE_ACCOUNT = 0xC0000357,
+  MD_NTSTATUS_WIN_STATUS_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER = 0xC0000358,
+  MD_NTSTATUS_WIN_STATUS_INVALID_IMAGE_WIN_32 = 0xC0000359,
+  MD_NTSTATUS_WIN_STATUS_INVALID_IMAGE_WIN_64 = 0xC000035A,
+  MD_NTSTATUS_WIN_STATUS_BAD_BINDINGS = 0xC000035B,
+  MD_NTSTATUS_WIN_STATUS_NETWORK_SESSION_EXPIRED = 0xC000035C,
+  MD_NTSTATUS_WIN_STATUS_APPHELP_BLOCK = 0xC000035D,
+  MD_NTSTATUS_WIN_STATUS_ALL_SIDS_FILTERED = 0xC000035E,
+  MD_NTSTATUS_WIN_STATUS_NOT_SAFE_MODE_DRIVER = 0xC000035F,
+  MD_NTSTATUS_WIN_STATUS_ACCESS_DISABLED_BY_POLICY_DEFAULT = 0xC0000361,
+  MD_NTSTATUS_WIN_STATUS_ACCESS_DISABLED_BY_POLICY_PATH = 0xC0000362,
+  MD_NTSTATUS_WIN_STATUS_ACCESS_DISABLED_BY_POLICY_PUBLISHER = 0xC0000363,
+  MD_NTSTATUS_WIN_STATUS_ACCESS_DISABLED_BY_POLICY_OTHER = 0xC0000364,
+  MD_NTSTATUS_WIN_STATUS_FAILED_DRIVER_ENTRY = 0xC0000365,
+  MD_NTSTATUS_WIN_STATUS_DEVICE_ENUMERATION_ERROR = 0xC0000366,
+  MD_NTSTATUS_WIN_STATUS_MOUNT_POINT_NOT_RESOLVED = 0xC0000368,
+  MD_NTSTATUS_WIN_STATUS_INVALID_DEVICE_OBJECT_PARAMETER = 0xC0000369,
+  MD_NTSTATUS_WIN_STATUS_MCA_OCCURED = 0xC000036A,
+  MD_NTSTATUS_WIN_STATUS_DRIVER_BLOCKED_CRITICAL = 0xC000036B,
+  MD_NTSTATUS_WIN_STATUS_DRIVER_BLOCKED = 0xC000036C,
+  MD_NTSTATUS_WIN_STATUS_DRIVER_DATABASE_ERROR = 0xC000036D,
+  MD_NTSTATUS_WIN_STATUS_SYSTEM_HIVE_TOO_LARGE = 0xC000036E,
+  MD_NTSTATUS_WIN_STATUS_INVALID_IMPORT_OF_NON_DLL = 0xC000036F,
+  MD_NTSTATUS_WIN_STATUS_NO_SECRETS = 0xC0000371,
+  MD_NTSTATUS_WIN_STATUS_ACCESS_DISABLED_NO_SAFER_UI_BY_POLICY = 0xC0000372,
+  MD_NTSTATUS_WIN_STATUS_FAILED_STACK_SWITCH = 0xC0000373,
+  MD_NTSTATUS_WIN_STATUS_HEAP_CORRUPTION = 0xC0000374,
+  MD_NTSTATUS_WIN_STATUS_SMARTCARD_WRONG_PIN = 0xC0000380,
+  MD_NTSTATUS_WIN_STATUS_SMARTCARD_CARD_BLOCKED = 0xC0000381,
+  MD_NTSTATUS_WIN_STATUS_SMARTCARD_CARD_NOT_AUTHENTICATED = 0xC0000382,
+  MD_NTSTATUS_WIN_STATUS_SMARTCARD_NO_CARD = 0xC0000383,
+  MD_NTSTATUS_WIN_STATUS_SMARTCARD_NO_KEY_CONTAINER = 0xC0000384,
+  MD_NTSTATUS_WIN_STATUS_SMARTCARD_NO_CERTIFICATE = 0xC0000385,
+  MD_NTSTATUS_WIN_STATUS_SMARTCARD_NO_KEYSET = 0xC0000386,
+  MD_NTSTATUS_WIN_STATUS_SMARTCARD_IO_ERROR = 0xC0000387,
+  MD_NTSTATUS_WIN_STATUS_DOWNGRADE_DETECTED = 0xC0000388,
+  MD_NTSTATUS_WIN_STATUS_SMARTCARD_CERT_REVOKED = 0xC0000389,
+  MD_NTSTATUS_WIN_STATUS_ISSUING_CA_UNTRUSTED = 0xC000038A,
+  MD_NTSTATUS_WIN_STATUS_REVOCATION_OFFLINE_C = 0xC000038B,
+  MD_NTSTATUS_WIN_STATUS_PKINIT_CLIENT_FAILURE = 0xC000038C,
+  MD_NTSTATUS_WIN_STATUS_SMARTCARD_CERT_EXPIRED = 0xC000038D,
+  MD_NTSTATUS_WIN_STATUS_DRIVER_FAILED_PRIOR_UNLOAD = 0xC000038E,
+  MD_NTSTATUS_WIN_STATUS_SMARTCARD_SILENT_CONTEXT = 0xC000038F,
+  MD_NTSTATUS_WIN_STATUS_PER_USER_TRUST_QUOTA_EXCEEDED = 0xC0000401,
+  MD_NTSTATUS_WIN_STATUS_ALL_USER_TRUST_QUOTA_EXCEEDED = 0xC0000402,
+  MD_NTSTATUS_WIN_STATUS_USER_DELETE_TRUST_QUOTA_EXCEEDED = 0xC0000403,
+  MD_NTSTATUS_WIN_STATUS_DS_NAME_NOT_UNIQUE = 0xC0000404,
+  MD_NTSTATUS_WIN_STATUS_DS_DUPLICATE_ID_FOUND = 0xC0000405,
+  MD_NTSTATUS_WIN_STATUS_DS_GROUP_CONVERSION_ERROR = 0xC0000406,
+  MD_NTSTATUS_WIN_STATUS_VOLSNAP_PREPARE_HIBERNATE = 0xC0000407,
+  MD_NTSTATUS_WIN_STATUS_USER2USER_REQUIRED = 0xC0000408,
+  MD_NTSTATUS_WIN_STATUS_STACK_BUFFER_OVERRUN = 0xC0000409,
+  MD_NTSTATUS_WIN_STATUS_NO_S4U_PROT_SUPPORT = 0xC000040A,
+  MD_NTSTATUS_WIN_STATUS_CROSSREALM_DELEGATION_FAILURE = 0xC000040B,
+  MD_NTSTATUS_WIN_STATUS_REVOCATION_OFFLINE_KDC = 0xC000040C,
+  MD_NTSTATUS_WIN_STATUS_ISSUING_CA_UNTRUSTED_KDC = 0xC000040D,
+  MD_NTSTATUS_WIN_STATUS_KDC_CERT_EXPIRED = 0xC000040E,
+  MD_NTSTATUS_WIN_STATUS_KDC_CERT_REVOKED = 0xC000040F,
+  MD_NTSTATUS_WIN_STATUS_PARAMETER_QUOTA_EXCEEDED = 0xC0000410,
+  MD_NTSTATUS_WIN_STATUS_HIBERNATION_FAILURE = 0xC0000411,
+  MD_NTSTATUS_WIN_STATUS_DELAY_LOAD_FAILED = 0xC0000412,
+  MD_NTSTATUS_WIN_STATUS_AUTHENTICATION_FIREWALL_FAILED = 0xC0000413,
+  MD_NTSTATUS_WIN_STATUS_VDM_DISALLOWED = 0xC0000414,
+  MD_NTSTATUS_WIN_STATUS_HUNG_DISPLAY_DRIVER_THREAD = 0xC0000415,
+  MD_NTSTATUS_WIN_STATUS_INSUFFICIENT_RESOURCE_FOR_SPECIFIED_SHARED_SECTION_SIZE = 0xC0000416,
+  MD_NTSTATUS_WIN_STATUS_INVALID_CRUNTIME_PARAMETER = 0xC0000417,
+  MD_NTSTATUS_WIN_STATUS_NTLM_BLOCKED = 0xC0000418,
+  MD_NTSTATUS_WIN_STATUS_DS_SRC_SID_EXISTS_IN_FOREST = 0xC0000419,
+  MD_NTSTATUS_WIN_STATUS_DS_DOMAIN_NAME_EXISTS_IN_FOREST = 0xC000041A,
+  MD_NTSTATUS_WIN_STATUS_DS_FLAT_NAME_EXISTS_IN_FOREST = 0xC000041B,
+  MD_NTSTATUS_WIN_STATUS_INVALID_USER_PRINCIPAL_NAME = 0xC000041C,
+  MD_NTSTATUS_WIN_STATUS_FATAL_USER_CALLBACK_EXCEPTION = 0xC000041D,
+  MD_NTSTATUS_WIN_STATUS_ASSERTION_FAILURE = 0xC0000420,
+  MD_NTSTATUS_WIN_STATUS_VERIFIER_STOP = 0xC0000421,
+  MD_NTSTATUS_WIN_STATUS_CALLBACK_POP_STACK = 0xC0000423,
+  MD_NTSTATUS_WIN_STATUS_INCOMPATIBLE_DRIVER_BLOCKED = 0xC0000424,
+  MD_NTSTATUS_WIN_STATUS_HIVE_UNLOADED = 0xC0000425,
+  MD_NTSTATUS_WIN_STATUS_COMPRESSION_DISABLED = 0xC0000426,
+  MD_NTSTATUS_WIN_STATUS_FILE_SYSTEM_LIMITATION = 0xC0000427,
+  MD_NTSTATUS_WIN_STATUS_INVALID_IMAGE_HASH = 0xC0000428,
+  MD_NTSTATUS_WIN_STATUS_NOT_CAPABLE = 0xC0000429,
+  MD_NTSTATUS_WIN_STATUS_REQUEST_OUT_OF_SEQUENCE = 0xC000042A,
+  MD_NTSTATUS_WIN_STATUS_IMPLEMENTATION_LIMIT = 0xC000042B,
+  MD_NTSTATUS_WIN_STATUS_ELEVATION_REQUIRED = 0xC000042C,
+  MD_NTSTATUS_WIN_STATUS_NO_SECURITY_CONTEXT = 0xC000042D,
+  MD_NTSTATUS_WIN_STATUS_PKU2U_CERT_FAILURE = 0xC000042F,
+  MD_NTSTATUS_WIN_STATUS_BEYOND_VDL = 0xC0000432,
+  MD_NTSTATUS_WIN_STATUS_ENCOUNTERED_WRITE_IN_PROGRESS = 0xC0000433,
+  MD_NTSTATUS_WIN_STATUS_PTE_CHANGED = 0xC0000434,
+  MD_NTSTATUS_WIN_STATUS_PURGE_FAILED = 0xC0000435,
+  MD_NTSTATUS_WIN_STATUS_CRED_REQUIRES_CONFIRMATION = 0xC0000440,
+  MD_NTSTATUS_WIN_STATUS_CS_ENCRYPTION_INVALID_SERVER_RESPONSE = 0xC0000441,
+  MD_NTSTATUS_WIN_STATUS_CS_ENCRYPTION_UNSUPPORTED_SERVER = 0xC0000442,
+  MD_NTSTATUS_WIN_STATUS_CS_ENCRYPTION_EXISTING_ENCRYPTED_FILE = 0xC0000443,
+  MD_NTSTATUS_WIN_STATUS_CS_ENCRYPTION_NEW_ENCRYPTED_FILE = 0xC0000444,
+  MD_NTSTATUS_WIN_STATUS_CS_ENCRYPTION_FILE_NOT_CSE = 0xC0000445,
+  MD_NTSTATUS_WIN_STATUS_INVALID_LABEL = 0xC0000446,
+  MD_NTSTATUS_WIN_STATUS_DRIVER_PROCESS_TERMINATED = 0xC0000450,
+  MD_NTSTATUS_WIN_STATUS_AMBIGUOUS_SYSTEM_DEVICE = 0xC0000451,
+  MD_NTSTATUS_WIN_STATUS_SYSTEM_DEVICE_NOT_FOUND = 0xC0000452,
+  MD_NTSTATUS_WIN_STATUS_RESTART_BOOT_APPLICATION = 0xC0000453,
+  MD_NTSTATUS_WIN_STATUS_INSUFFICIENT_NVRAM_RESOURCES = 0xC0000454,
+  MD_NTSTATUS_WIN_STATUS_INVALID_SESSION = 0xC0000455,
+  MD_NTSTATUS_WIN_STATUS_THREAD_ALREADY_IN_SESSION = 0xC0000456,
+  MD_NTSTATUS_WIN_STATUS_THREAD_NOT_IN_SESSION = 0xC0000457,
+  MD_NTSTATUS_WIN_STATUS_INVALID_WEIGHT = 0xC0000458,
+  MD_NTSTATUS_WIN_STATUS_REQUEST_PAUSED = 0xC0000459,
+  MD_NTSTATUS_WIN_STATUS_NO_RANGES_PROCESSED = 0xC0000460,
+  MD_NTSTATUS_WIN_STATUS_DISK_RESOURCES_EXHAUSTED = 0xC0000461,
+  MD_NTSTATUS_WIN_STATUS_NEEDS_REMEDIATION = 0xC0000462,
+  MD_NTSTATUS_WIN_STATUS_DEVICE_FEATURE_NOT_SUPPORTED = 0xC0000463,
+  MD_NTSTATUS_WIN_STATUS_DEVICE_UNREACHABLE = 0xC0000464,
+  MD_NTSTATUS_WIN_STATUS_INVALID_TOKEN = 0xC0000465,
+  MD_NTSTATUS_WIN_STATUS_SERVER_UNAVAILABLE = 0xC0000466,
+  MD_NTSTATUS_WIN_STATUS_FILE_NOT_AVAILABLE = 0xC0000467,
+  MD_NTSTATUS_WIN_STATUS_DEVICE_INSUFFICIENT_RESOURCES = 0xC0000468,
+  MD_NTSTATUS_WIN_STATUS_PACKAGE_UPDATING = 0xC0000469,
+  MD_NTSTATUS_WIN_STATUS_NOT_READ_FROM_COPY = 0xC000046A,
+  MD_NTSTATUS_WIN_STATUS_FT_WRITE_FAILURE = 0xC000046B,
+  MD_NTSTATUS_WIN_STATUS_FT_DI_SCAN_REQUIRED = 0xC000046C,
+  MD_NTSTATUS_WIN_STATUS_OBJECT_NOT_EXTERNALLY_BACKED = 0xC000046D,
+  MD_NTSTATUS_WIN_STATUS_EXTERNAL_BACKING_PROVIDER_UNKNOWN = 0xC000046E,
+  MD_NTSTATUS_WIN_STATUS_DATA_CHECKSUM_ERROR = 0xC0000470,
+  MD_NTSTATUS_WIN_STATUS_INTERMIXED_KERNEL_EA_OPERATION = 0xC0000471,
+  MD_NTSTATUS_WIN_STATUS_TRIM_READ_ZERO_NOT_SUPPORTED = 0xC0000472,
+  MD_NTSTATUS_WIN_STATUS_TOO_MANY_SEGMENT_DESCRIPTORS = 0xC0000473,
+  MD_NTSTATUS_WIN_STATUS_INVALID_OFFSET_ALIGNMENT = 0xC0000474,
+  MD_NTSTATUS_WIN_STATUS_INVALID_FIELD_IN_PARAMETER_LIST = 0xC0000475,
+  MD_NTSTATUS_WIN_STATUS_OPERATION_IN_PROGRESS = 0xC0000476,
+  MD_NTSTATUS_WIN_STATUS_INVALID_INITIATOR_TARGET_PATH = 0xC0000477,
+  MD_NTSTATUS_WIN_STATUS_SCRUB_DATA_DISABLED = 0xC0000478,
+  MD_NTSTATUS_WIN_STATUS_NOT_REDUNDANT_STORAGE = 0xC0000479,
+  MD_NTSTATUS_WIN_STATUS_RESIDENT_FILE_NOT_SUPPORTED = 0xC000047A,
+  MD_NTSTATUS_WIN_STATUS_COMPRESSED_FILE_NOT_SUPPORTED = 0xC000047B,
+  MD_NTSTATUS_WIN_STATUS_DIRECTORY_NOT_SUPPORTED = 0xC000047C,
+  MD_NTSTATUS_WIN_STATUS_IO_OPERATION_TIMEOUT = 0xC000047D,
+  MD_NTSTATUS_WIN_STATUS_SYSTEM_NEEDS_REMEDIATION = 0xC000047E,
+  MD_NTSTATUS_WIN_STATUS_APPX_INTEGRITY_FAILURE_CLR_NGEN = 0xC000047F,
+  MD_NTSTATUS_WIN_STATUS_SHARE_UNAVAILABLE = 0xC0000480,
+  MD_NTSTATUS_WIN_STATUS_APISET_NOT_HOSTED = 0xC0000481,
+  MD_NTSTATUS_WIN_STATUS_APISET_NOT_PRESENT = 0xC0000482,
+  MD_NTSTATUS_WIN_STATUS_DEVICE_HARDWARE_ERROR = 0xC0000483,
+  MD_NTSTATUS_WIN_STATUS_INVALID_TASK_NAME = 0xC0000500,
+  MD_NTSTATUS_WIN_STATUS_INVALID_TASK_INDEX = 0xC0000501,
+  MD_NTSTATUS_WIN_STATUS_THREAD_ALREADY_IN_TASK = 0xC0000502,
+  MD_NTSTATUS_WIN_STATUS_CALLBACK_BYPASS = 0xC0000503,
+  MD_NTSTATUS_WIN_STATUS_UNDEFINED_SCOPE = 0xC0000504,
+  MD_NTSTATUS_WIN_STATUS_INVALID_CAP = 0xC0000505,
+  MD_NTSTATUS_WIN_STATUS_NOT_GUI_PROCESS = 0xC0000506,
+  MD_NTSTATUS_WIN_STATUS_FAIL_FAST_EXCEPTION = 0xC0000602,
+  MD_NTSTATUS_WIN_STATUS_IMAGE_CERT_REVOKED = 0xC0000603,
+  MD_NTSTATUS_WIN_STATUS_DYNAMIC_CODE_BLOCKED = 0xC0000604,
+  MD_NTSTATUS_WIN_STATUS_PORT_CLOSED = 0xC0000700,
+  MD_NTSTATUS_WIN_STATUS_MESSAGE_LOST = 0xC0000701,
+  MD_NTSTATUS_WIN_STATUS_INVALID_MESSAGE = 0xC0000702,
+  MD_NTSTATUS_WIN_STATUS_REQUEST_CANCELED = 0xC0000703,
+  MD_NTSTATUS_WIN_STATUS_RECURSIVE_DISPATCH = 0xC0000704,
+  MD_NTSTATUS_WIN_STATUS_LPC_RECEIVE_BUFFER_EXPECTED = 0xC0000705,
+  MD_NTSTATUS_WIN_STATUS_LPC_INVALID_CONNECTION_USAGE = 0xC0000706,
+  MD_NTSTATUS_WIN_STATUS_LPC_REQUESTS_NOT_ALLOWED = 0xC0000707,
+  MD_NTSTATUS_WIN_STATUS_RESOURCE_IN_USE = 0xC0000708,
+  MD_NTSTATUS_WIN_STATUS_HARDWARE_MEMORY_ERROR = 0xC0000709,
+  MD_NTSTATUS_WIN_STATUS_THREADPOOL_HANDLE_EXCEPTION = 0xC000070A,
+  MD_NTSTATUS_WIN_STATUS_THREADPOOL_SET_EVENT_ON_COMPLETION_FAILED = 0xC000070B,
+  MD_NTSTATUS_WIN_STATUS_THREADPOOL_RELEASE_SEMAPHORE_ON_COMPLETION_FAILED = 0xC000070C,
+  MD_NTSTATUS_WIN_STATUS_THREADPOOL_RELEASE_MUTEX_ON_COMPLETION_FAILED = 0xC000070D,
+  MD_NTSTATUS_WIN_STATUS_THREADPOOL_FREE_LIBRARY_ON_COMPLETION_FAILED = 0xC000070E,
+  MD_NTSTATUS_WIN_STATUS_THREADPOOL_RELEASED_DURING_OPERATION = 0xC000070F,
+  MD_NTSTATUS_WIN_STATUS_CALLBACK_RETURNED_WHILE_IMPERSONATING = 0xC0000710,
+  MD_NTSTATUS_WIN_STATUS_APC_RETURNED_WHILE_IMPERSONATING = 0xC0000711,
+  MD_NTSTATUS_WIN_STATUS_PROCESS_IS_PROTECTED = 0xC0000712,
+  MD_NTSTATUS_WIN_STATUS_MCA_EXCEPTION = 0xC0000713,
+  MD_NTSTATUS_WIN_STATUS_CERTIFICATE_MAPPING_NOT_UNIQUE = 0xC0000714,
+  MD_NTSTATUS_WIN_STATUS_SYMLINK_CLASS_DISABLED = 0xC0000715,
+  MD_NTSTATUS_WIN_STATUS_INVALID_IDN_NORMALIZATION = 0xC0000716,
+  MD_NTSTATUS_WIN_STATUS_NO_UNICODE_TRANSLATION = 0xC0000717,
+  MD_NTSTATUS_WIN_STATUS_ALREADY_REGISTERED = 0xC0000718,
+  MD_NTSTATUS_WIN_STATUS_CONTEXT_MISMATCH = 0xC0000719,
+  MD_NTSTATUS_WIN_STATUS_PORT_ALREADY_HAS_COMPLETION_LIST = 0xC000071A,
+  MD_NTSTATUS_WIN_STATUS_CALLBACK_RETURNED_THREAD_PRIORITY = 0xC000071B,
+  MD_NTSTATUS_WIN_STATUS_INVALID_THREAD = 0xC000071C,
+  MD_NTSTATUS_WIN_STATUS_CALLBACK_RETURNED_TRANSACTION = 0xC000071D,
+  MD_NTSTATUS_WIN_STATUS_CALLBACK_RETURNED_LDR_LOCK = 0xC000071E,
+  MD_NTSTATUS_WIN_STATUS_CALLBACK_RETURNED_LANG = 0xC000071F,
+  MD_NTSTATUS_WIN_STATUS_CALLBACK_RETURNED_PRI_BACK = 0xC0000720,
+  MD_NTSTATUS_WIN_STATUS_CALLBACK_RETURNED_THREAD_AFFINITY = 0xC0000721,
+  MD_NTSTATUS_WIN_STATUS_DISK_REPAIR_DISABLED = 0xC0000800,
+  MD_NTSTATUS_WIN_STATUS_DS_DOMAIN_RENAME_IN_PROGRESS = 0xC0000801,
+  MD_NTSTATUS_WIN_STATUS_DISK_QUOTA_EXCEEDED = 0xC0000802,
+  MD_NTSTATUS_WIN_STATUS_CONTENT_BLOCKED = 0xC0000804,
+  MD_NTSTATUS_WIN_STATUS_BAD_CLUSTERS = 0xC0000805,
+  MD_NTSTATUS_WIN_STATUS_VOLUME_DIRTY = 0xC0000806,
+  MD_NTSTATUS_WIN_STATUS_DISK_REPAIR_UNSUCCESSFUL = 0xC0000808,
+  MD_NTSTATUS_WIN_STATUS_CORRUPT_LOG_OVERFULL = 0xC0000809,
+  MD_NTSTATUS_WIN_STATUS_CORRUPT_LOG_CORRUPTED = 0xC000080A,
+  MD_NTSTATUS_WIN_STATUS_CORRUPT_LOG_UNAVAILABLE = 0xC000080B,
+  MD_NTSTATUS_WIN_STATUS_CORRUPT_LOG_DELETED_FULL = 0xC000080C,
+  MD_NTSTATUS_WIN_STATUS_CORRUPT_LOG_CLEARED = 0xC000080D,
+  MD_NTSTATUS_WIN_STATUS_ORPHAN_NAME_EXHAUSTED = 0xC000080E,
+  MD_NTSTATUS_WIN_STATUS_PROACTIVE_SCAN_IN_PROGRESS = 0xC000080F,
+  MD_NTSTATUS_WIN_STATUS_ENCRYPTED_IO_NOT_POSSIBLE = 0xC0000810,
+  MD_NTSTATUS_WIN_STATUS_CORRUPT_LOG_UPLEVEL_RECORDS = 0xC0000811,
+  MD_NTSTATUS_WIN_STATUS_FILE_CHECKED_OUT = 0xC0000901,
+  MD_NTSTATUS_WIN_STATUS_CHECKOUT_REQUIRED = 0xC0000902,
+  MD_NTSTATUS_WIN_STATUS_BAD_FILE_TYPE = 0xC0000903,
+  MD_NTSTATUS_WIN_STATUS_FILE_TOO_LARGE = 0xC0000904,
+  MD_NTSTATUS_WIN_STATUS_FORMS_AUTH_REQUIRED = 0xC0000905,
+  MD_NTSTATUS_WIN_STATUS_VIRUS_INFECTED = 0xC0000906,
+  MD_NTSTATUS_WIN_STATUS_VIRUS_DELETED = 0xC0000907,
+  MD_NTSTATUS_WIN_STATUS_BAD_MCFG_TABLE = 0xC0000908,
+  MD_NTSTATUS_WIN_STATUS_CANNOT_BREAK_OPLOCK = 0xC0000909,
+  MD_NTSTATUS_WIN_STATUS_BAD_KEY = 0xC000090A,
+  MD_NTSTATUS_WIN_STATUS_BAD_DATA = 0xC000090B,
+  MD_NTSTATUS_WIN_STATUS_NO_KEY = 0xC000090C,
+  MD_NTSTATUS_WIN_STATUS_FILE_HANDLE_REVOKED = 0xC0000910,
+  MD_NTSTATUS_WIN_STATUS_WOW_ASSERTION = 0xC0009898,
+  MD_NTSTATUS_WIN_STATUS_INVALID_SIGNATURE = 0xC000A000,
+  MD_NTSTATUS_WIN_STATUS_HMAC_NOT_SUPPORTED = 0xC000A001,
+  MD_NTSTATUS_WIN_STATUS_AUTH_TAG_MISMATCH = 0xC000A002,
+  MD_NTSTATUS_WIN_STATUS_INVALID_STATE_TRANSITION = 0xC000A003,
+  MD_NTSTATUS_WIN_STATUS_INVALID_KERNEL_INFO_VERSION = 0xC000A004,
+  MD_NTSTATUS_WIN_STATUS_INVALID_PEP_INFO_VERSION = 0xC000A005,
+  MD_NTSTATUS_WIN_STATUS_IPSEC_QUEUE_OVERFLOW = 0xC000A010,
+  MD_NTSTATUS_WIN_STATUS_ND_QUEUE_OVERFLOW = 0xC000A011,
+  MD_NTSTATUS_WIN_STATUS_HOPLIMIT_EXCEEDED = 0xC000A012,
+  MD_NTSTATUS_WIN_STATUS_PROTOCOL_NOT_SUPPORTED = 0xC000A013,
+  MD_NTSTATUS_WIN_STATUS_FASTPATH_REJECTED = 0xC000A014,
+  MD_NTSTATUS_WIN_STATUS_LOST_WRITEBEHIND_DATA_NETWORK_DISCONNECTED = 0xC000A080,
+  MD_NTSTATUS_WIN_STATUS_LOST_WRITEBEHIND_DATA_NETWORK_SERVER_ERROR = 0xC000A081,
+  MD_NTSTATUS_WIN_STATUS_LOST_WRITEBEHIND_DATA_LOCAL_DISK_ERROR = 0xC000A082,
+  MD_NTSTATUS_WIN_STATUS_XML_PARSE_ERROR = 0xC000A083,
+  MD_NTSTATUS_WIN_STATUS_XMLDSIG_ERROR = 0xC000A084,
+  MD_NTSTATUS_WIN_STATUS_WRONG_COMPARTMENT = 0xC000A085,
+  MD_NTSTATUS_WIN_STATUS_AUTHIP_FAILURE = 0xC000A086,
+  MD_NTSTATUS_WIN_STATUS_DS_OID_MAPPED_GROUP_CANT_HAVE_MEMBERS = 0xC000A087,
+  MD_NTSTATUS_WIN_STATUS_DS_OID_NOT_FOUND = 0xC000A088,
+  MD_NTSTATUS_WIN_STATUS_INCORRECT_ACCOUNT_TYPE = 0xC000A089,
+  MD_NTSTATUS_WIN_STATUS_HASH_NOT_SUPPORTED = 0xC000A100,
+  MD_NTSTATUS_WIN_STATUS_HASH_NOT_PRESENT = 0xC000A101,
+  MD_NTSTATUS_WIN_STATUS_SECONDARY_IC_PROVIDER_NOT_REGISTERED = 0xC000A121,
+  MD_NTSTATUS_WIN_STATUS_GPIO_CLIENT_INFORMATION_INVALID = 0xC000A122,
+  MD_NTSTATUS_WIN_STATUS_GPIO_VERSION_NOT_SUPPORTED = 0xC000A123,
+  MD_NTSTATUS_WIN_STATUS_GPIO_INVALID_REGISTRATION_PACKET = 0xC000A124,
+  MD_NTSTATUS_WIN_STATUS_GPIO_OPERATION_DENIED = 0xC000A125,
+  MD_NTSTATUS_WIN_STATUS_GPIO_INCOMPATIBLE_CONNECT_MODE = 0xC000A126,
+  MD_NTSTATUS_WIN_STATUS_CANNOT_SWITCH_RUNLEVEL = 0xC000A141,
+  MD_NTSTATUS_WIN_STATUS_INVALID_RUNLEVEL_SETTING = 0xC000A142,
+  MD_NTSTATUS_WIN_STATUS_RUNLEVEL_SWITCH_TIMEOUT = 0xC000A143,
+  MD_NTSTATUS_WIN_STATUS_RUNLEVEL_SWITCH_AGENT_TIMEOUT = 0xC000A145,
+  MD_NTSTATUS_WIN_STATUS_RUNLEVEL_SWITCH_IN_PROGRESS = 0xC000A146,
+  MD_NTSTATUS_WIN_STATUS_NOT_APPCONTAINER = 0xC000A200,
+  MD_NTSTATUS_WIN_STATUS_NOT_SUPPORTED_IN_APPCONTAINER = 0xC000A201,
+  MD_NTSTATUS_WIN_STATUS_INVALID_PACKAGE_SID_LENGTH = 0xC000A202,
+  MD_NTSTATUS_WIN_STATUS_APP_DATA_NOT_FOUND = 0xC000A281,
+  MD_NTSTATUS_WIN_STATUS_APP_DATA_EXPIRED = 0xC000A282,
+  MD_NTSTATUS_WIN_STATUS_APP_DATA_CORRUPT = 0xC000A283,
+  MD_NTSTATUS_WIN_STATUS_APP_DATA_LIMIT_EXCEEDED = 0xC000A284,
+  MD_NTSTATUS_WIN_STATUS_APP_DATA_REBOOT_REQUIRED = 0xC000A285,
+  MD_NTSTATUS_WIN_STATUS_OFFLOAD_READ_FLT_NOT_SUPPORTED = 0xC000A2A1,
+  MD_NTSTATUS_WIN_STATUS_OFFLOAD_WRITE_FLT_NOT_SUPPORTED = 0xC000A2A2,
+  MD_NTSTATUS_WIN_STATUS_OFFLOAD_READ_FILE_NOT_SUPPORTED = 0xC000A2A3,
+  MD_NTSTATUS_WIN_STATUS_OFFLOAD_WRITE_FILE_NOT_SUPPORTED = 0xC000A2A4,
+  MD_NTSTATUS_WIN_DBG_NO_STATE_CHANGE = 0xC0010001,
+  MD_NTSTATUS_WIN_DBG_APP_NOT_IDLE = 0xC0010002,
+  MD_NTSTATUS_WIN_RPC_NT_INVALID_STRING_BINDING = 0xC0020001,
+  MD_NTSTATUS_WIN_RPC_NT_WRONG_KIND_OF_BINDING = 0xC0020002,
+  MD_NTSTATUS_WIN_RPC_NT_INVALID_BINDING = 0xC0020003,
+  MD_NTSTATUS_WIN_RPC_NT_PROTSEQ_NOT_SUPPORTED = 0xC0020004,
+  MD_NTSTATUS_WIN_RPC_NT_INVALID_RPC_PROTSEQ = 0xC0020005,
+  MD_NTSTATUS_WIN_RPC_NT_INVALID_STRING_UUID = 0xC0020006,
+  MD_NTSTATUS_WIN_RPC_NT_INVALID_ENDPOINT_FORMAT = 0xC0020007,
+  MD_NTSTATUS_WIN_RPC_NT_INVALID_NET_ADDR = 0xC0020008,
+  MD_NTSTATUS_WIN_RPC_NT_NO_ENDPOINT_FOUND = 0xC0020009,
+  MD_NTSTATUS_WIN_RPC_NT_INVALID_TIMEOUT = 0xC002000A,
+  MD_NTSTATUS_WIN_RPC_NT_OBJECT_NOT_FOUND = 0xC002000B,
+  MD_NTSTATUS_WIN_RPC_NT_ALREADY_REGISTERED = 0xC002000C,
+  MD_NTSTATUS_WIN_RPC_NT_TYPE_ALREADY_REGISTERED = 0xC002000D,
+  MD_NTSTATUS_WIN_RPC_NT_ALREADY_LISTENING = 0xC002000E,
+  MD_NTSTATUS_WIN_RPC_NT_NO_PROTSEQS_REGISTERED = 0xC002000F,
+  MD_NTSTATUS_WIN_RPC_NT_NOT_LISTENING = 0xC0020010,
+  MD_NTSTATUS_WIN_RPC_NT_UNKNOWN_MGR_TYPE = 0xC0020011,
+  MD_NTSTATUS_WIN_RPC_NT_UNKNOWN_IF = 0xC0020012,
+  MD_NTSTATUS_WIN_RPC_NT_NO_BINDINGS = 0xC0020013,
+  MD_NTSTATUS_WIN_RPC_NT_NO_PROTSEQS = 0xC0020014,
+  MD_NTSTATUS_WIN_RPC_NT_CANT_CREATE_ENDPOINT = 0xC0020015,
+  MD_NTSTATUS_WIN_RPC_NT_OUT_OF_RESOURCES = 0xC0020016,
+  MD_NTSTATUS_WIN_RPC_NT_SERVER_UNAVAILABLE = 0xC0020017,
+  MD_NTSTATUS_WIN_RPC_NT_SERVER_TOO_BUSY = 0xC0020018,
+  MD_NTSTATUS_WIN_RPC_NT_INVALID_NETWORK_OPTIONS = 0xC0020019,
+  MD_NTSTATUS_WIN_RPC_NT_NO_CALL_ACTIVE = 0xC002001A,
+  MD_NTSTATUS_WIN_RPC_NT_CALL_FAILED = 0xC002001B,
+  MD_NTSTATUS_WIN_RPC_NT_CALL_FAILED_DNE = 0xC002001C,
+  MD_NTSTATUS_WIN_RPC_NT_PROTOCOL_ERROR = 0xC002001D,
+  MD_NTSTATUS_WIN_RPC_NT_UNSUPPORTED_TRANS_SYN = 0xC002001F,
+  MD_NTSTATUS_WIN_RPC_NT_UNSUPPORTED_TYPE = 0xC0020021,
+  MD_NTSTATUS_WIN_RPC_NT_INVALID_TAG = 0xC0020022,
+  MD_NTSTATUS_WIN_RPC_NT_INVALID_BOUND = 0xC0020023,
+  MD_NTSTATUS_WIN_RPC_NT_NO_ENTRY_NAME = 0xC0020024,
+  MD_NTSTATUS_WIN_RPC_NT_INVALID_NAME_SYNTAX = 0xC0020025,
+  MD_NTSTATUS_WIN_RPC_NT_UNSUPPORTED_NAME_SYNTAX = 0xC0020026,
+  MD_NTSTATUS_WIN_RPC_NT_UUID_NO_ADDRESS = 0xC0020028,
+  MD_NTSTATUS_WIN_RPC_NT_DUPLICATE_ENDPOINT = 0xC0020029,
+  MD_NTSTATUS_WIN_RPC_NT_UNKNOWN_AUTHN_TYPE = 0xC002002A,
+  MD_NTSTATUS_WIN_RPC_NT_MAX_CALLS_TOO_SMALL = 0xC002002B,
+  MD_NTSTATUS_WIN_RPC_NT_STRING_TOO_LONG = 0xC002002C,
+  MD_NTSTATUS_WIN_RPC_NT_PROTSEQ_NOT_FOUND = 0xC002002D,
+  MD_NTSTATUS_WIN_RPC_NT_PROCNUM_OUT_OF_RANGE = 0xC002002E,
+  MD_NTSTATUS_WIN_RPC_NT_BINDING_HAS_NO_AUTH = 0xC002002F,
+  MD_NTSTATUS_WIN_RPC_NT_UNKNOWN_AUTHN_SERVICE = 0xC0020030,
+  MD_NTSTATUS_WIN_RPC_NT_UNKNOWN_AUTHN_LEVEL = 0xC0020031,
+  MD_NTSTATUS_WIN_RPC_NT_INVALID_AUTH_IDENTITY = 0xC0020032,
+  MD_NTSTATUS_WIN_RPC_NT_UNKNOWN_AUTHZ_SERVICE = 0xC0020033,
+  MD_NTSTATUS_WIN_EPT_NT_INVALID_ENTRY = 0xC0020034,
+  MD_NTSTATUS_WIN_EPT_NT_CANT_PERFORM_OP = 0xC0020035,
+  MD_NTSTATUS_WIN_EPT_NT_NOT_REGISTERED = 0xC0020036,
+  MD_NTSTATUS_WIN_RPC_NT_NOTHING_TO_EXPORT = 0xC0020037,
+  MD_NTSTATUS_WIN_RPC_NT_INCOMPLETE_NAME = 0xC0020038,
+  MD_NTSTATUS_WIN_RPC_NT_INVALID_VERS_OPTION = 0xC0020039,
+  MD_NTSTATUS_WIN_RPC_NT_NO_MORE_MEMBERS = 0xC002003A,
+  MD_NTSTATUS_WIN_RPC_NT_NOT_ALL_OBJS_UNEXPORTED = 0xC002003B,
+  MD_NTSTATUS_WIN_RPC_NT_INTERFACE_NOT_FOUND = 0xC002003C,
+  MD_NTSTATUS_WIN_RPC_NT_ENTRY_ALREADY_EXISTS = 0xC002003D,
+  MD_NTSTATUS_WIN_RPC_NT_ENTRY_NOT_FOUND = 0xC002003E,
+  MD_NTSTATUS_WIN_RPC_NT_NAME_SERVICE_UNAVAILABLE = 0xC002003F,
+  MD_NTSTATUS_WIN_RPC_NT_INVALID_NAF_ID = 0xC0020040,
+  MD_NTSTATUS_WIN_RPC_NT_CANNOT_SUPPORT = 0xC0020041,
+  MD_NTSTATUS_WIN_RPC_NT_NO_CONTEXT_AVAILABLE = 0xC0020042,
+  MD_NTSTATUS_WIN_RPC_NT_INTERNAL_ERROR = 0xC0020043,
+  MD_NTSTATUS_WIN_RPC_NT_ZERO_DIVIDE = 0xC0020044,
+  MD_NTSTATUS_WIN_RPC_NT_ADDRESS_ERROR = 0xC0020045,
+  MD_NTSTATUS_WIN_RPC_NT_FP_DIV_ZERO = 0xC0020046,
+  MD_NTSTATUS_WIN_RPC_NT_FP_UNDERFLOW = 0xC0020047,
+  MD_NTSTATUS_WIN_RPC_NT_FP_OVERFLOW = 0xC0020048,
+  MD_NTSTATUS_WIN_RPC_NT_CALL_IN_PROGRESS = 0xC0020049,
+  MD_NTSTATUS_WIN_RPC_NT_NO_MORE_BINDINGS = 0xC002004A,
+  MD_NTSTATUS_WIN_RPC_NT_GROUP_MEMBER_NOT_FOUND = 0xC002004B,
+  MD_NTSTATUS_WIN_EPT_NT_CANT_CREATE = 0xC002004C,
+  MD_NTSTATUS_WIN_RPC_NT_INVALID_OBJECT = 0xC002004D,
+  MD_NTSTATUS_WIN_RPC_NT_NO_INTERFACES = 0xC002004F,
+  MD_NTSTATUS_WIN_RPC_NT_CALL_CANCELLED = 0xC0020050,
+  MD_NTSTATUS_WIN_RPC_NT_BINDING_INCOMPLETE = 0xC0020051,
+  MD_NTSTATUS_WIN_RPC_NT_COMM_FAILURE = 0xC0020052,
+  MD_NTSTATUS_WIN_RPC_NT_UNSUPPORTED_AUTHN_LEVEL = 0xC0020053,
+  MD_NTSTATUS_WIN_RPC_NT_NO_PRINC_NAME = 0xC0020054,
+  MD_NTSTATUS_WIN_RPC_NT_NOT_RPC_ERROR = 0xC0020055,
+  MD_NTSTATUS_WIN_RPC_NT_SEC_PKG_ERROR = 0xC0020057,
+  MD_NTSTATUS_WIN_RPC_NT_NOT_CANCELLED = 0xC0020058,
+  MD_NTSTATUS_WIN_RPC_NT_INVALID_ASYNC_HANDLE = 0xC0020062,
+  MD_NTSTATUS_WIN_RPC_NT_INVALID_ASYNC_CALL = 0xC0020063,
+  MD_NTSTATUS_WIN_RPC_NT_PROXY_ACCESS_DENIED = 0xC0020064,
+  MD_NTSTATUS_WIN_RPC_NT_COOKIE_AUTH_FAILED = 0xC0020065,
+  MD_NTSTATUS_WIN_RPC_NT_NO_MORE_ENTRIES = 0xC0030001,
+  MD_NTSTATUS_WIN_RPC_NT_SS_CHAR_TRANS_OPEN_FAIL = 0xC0030002,
+  MD_NTSTATUS_WIN_RPC_NT_SS_CHAR_TRANS_SHORT_FILE = 0xC0030003,
+  MD_NTSTATUS_WIN_RPC_NT_SS_IN_NULL_CONTEXT = 0xC0030004,
+  MD_NTSTATUS_WIN_RPC_NT_SS_CONTEXT_MISMATCH = 0xC0030005,
+  MD_NTSTATUS_WIN_RPC_NT_SS_CONTEXT_DAMAGED = 0xC0030006,
+  MD_NTSTATUS_WIN_RPC_NT_SS_HANDLES_MISMATCH = 0xC0030007,
+  MD_NTSTATUS_WIN_RPC_NT_SS_CANNOT_GET_CALL_HANDLE = 0xC0030008,
+  MD_NTSTATUS_WIN_RPC_NT_NULL_REF_POINTER = 0xC0030009,
+  MD_NTSTATUS_WIN_RPC_NT_ENUM_VALUE_OUT_OF_RANGE = 0xC003000A,
+  MD_NTSTATUS_WIN_RPC_NT_BYTE_COUNT_TOO_SMALL = 0xC003000B,
+  MD_NTSTATUS_WIN_RPC_NT_BAD_STUB_DATA = 0xC003000C,
+  MD_NTSTATUS_WIN_RPC_NT_INVALID_ES_ACTION = 0xC0030059,
+  MD_NTSTATUS_WIN_RPC_NT_WRONG_ES_VERSION = 0xC003005A,
+  MD_NTSTATUS_WIN_RPC_NT_WRONG_STUB_VERSION = 0xC003005B,
+  MD_NTSTATUS_WIN_RPC_NT_INVALID_PIPE_OBJECT = 0xC003005C,
+  MD_NTSTATUS_WIN_RPC_NT_INVALID_PIPE_OPERATION = 0xC003005D,
+  MD_NTSTATUS_WIN_RPC_NT_WRONG_PIPE_VERSION = 0xC003005E,
+  MD_NTSTATUS_WIN_RPC_NT_PIPE_CLOSED = 0xC003005F,
+  MD_NTSTATUS_WIN_RPC_NT_PIPE_DISCIPLINE_ERROR = 0xC0030060,
+  MD_NTSTATUS_WIN_RPC_NT_PIPE_EMPTY = 0xC0030061,
+  MD_NTSTATUS_WIN_STATUS_PNP_BAD_MPS_TABLE = 0xC0040035,
+  MD_NTSTATUS_WIN_STATUS_PNP_TRANSLATION_FAILED = 0xC0040036,
+  MD_NTSTATUS_WIN_STATUS_PNP_IRQ_TRANSLATION_FAILED = 0xC0040037,
+  MD_NTSTATUS_WIN_STATUS_PNP_INVALID_ID = 0xC0040038,
+  MD_NTSTATUS_WIN_STATUS_IO_REISSUE_AS_CACHED = 0xC0040039,
+  MD_NTSTATUS_WIN_STATUS_CTX_WINSTATION_NAME_INVALID = 0xC00A0001,
+  MD_NTSTATUS_WIN_STATUS_CTX_INVALID_PD = 0xC00A0002,
+  MD_NTSTATUS_WIN_STATUS_CTX_PD_NOT_FOUND = 0xC00A0003,
+  MD_NTSTATUS_WIN_STATUS_CTX_CLOSE_PENDING = 0xC00A0006,
+  MD_NTSTATUS_WIN_STATUS_CTX_NO_OUTBUF = 0xC00A0007,
+  MD_NTSTATUS_WIN_STATUS_CTX_MODEM_INF_NOT_FOUND = 0xC00A0008,
+  MD_NTSTATUS_WIN_STATUS_CTX_INVALID_MODEMNAME = 0xC00A0009,
+  MD_NTSTATUS_WIN_STATUS_CTX_RESPONSE_ERROR = 0xC00A000A,
+  MD_NTSTATUS_WIN_STATUS_CTX_MODEM_RESPONSE_TIMEOUT = 0xC00A000B,
+  MD_NTSTATUS_WIN_STATUS_CTX_MODEM_RESPONSE_NO_CARRIER = 0xC00A000C,
+  MD_NTSTATUS_WIN_STATUS_CTX_MODEM_RESPONSE_NO_DIALTONE = 0xC00A000D,
+  MD_NTSTATUS_WIN_STATUS_CTX_MODEM_RESPONSE_BUSY = 0xC00A000E,
+  MD_NTSTATUS_WIN_STATUS_CTX_MODEM_RESPONSE_VOICE = 0xC00A000F,
+  MD_NTSTATUS_WIN_STATUS_CTX_TD_ERROR = 0xC00A0010,
+  MD_NTSTATUS_WIN_STATUS_CTX_LICENSE_CLIENT_INVALID = 0xC00A0012,
+  MD_NTSTATUS_WIN_STATUS_CTX_LICENSE_NOT_AVAILABLE = 0xC00A0013,
+  MD_NTSTATUS_WIN_STATUS_CTX_LICENSE_EXPIRED = 0xC00A0014,
+  MD_NTSTATUS_WIN_STATUS_CTX_WINSTATION_NOT_FOUND = 0xC00A0015,
+  MD_NTSTATUS_WIN_STATUS_CTX_WINSTATION_NAME_COLLISION = 0xC00A0016,
+  MD_NTSTATUS_WIN_STATUS_CTX_WINSTATION_BUSY = 0xC00A0017,
+  MD_NTSTATUS_WIN_STATUS_CTX_BAD_VIDEO_MODE = 0xC00A0018,
+  MD_NTSTATUS_WIN_STATUS_CTX_GRAPHICS_INVALID = 0xC00A0022,
+  MD_NTSTATUS_WIN_STATUS_CTX_NOT_CONSOLE = 0xC00A0024,
+  MD_NTSTATUS_WIN_STATUS_CTX_CLIENT_QUERY_TIMEOUT = 0xC00A0026,
+  MD_NTSTATUS_WIN_STATUS_CTX_CONSOLE_DISCONNECT = 0xC00A0027,
+  MD_NTSTATUS_WIN_STATUS_CTX_CONSOLE_CONNECT = 0xC00A0028,
+  MD_NTSTATUS_WIN_STATUS_CTX_SHADOW_DENIED = 0xC00A002A,
+  MD_NTSTATUS_WIN_STATUS_CTX_WINSTATION_ACCESS_DENIED = 0xC00A002B,
+  MD_NTSTATUS_WIN_STATUS_CTX_INVALID_WD = 0xC00A002E,
+  MD_NTSTATUS_WIN_STATUS_CTX_WD_NOT_FOUND = 0xC00A002F,
+  MD_NTSTATUS_WIN_STATUS_CTX_SHADOW_INVALID = 0xC00A0030,
+  MD_NTSTATUS_WIN_STATUS_CTX_SHADOW_DISABLED = 0xC00A0031,
+  MD_NTSTATUS_WIN_STATUS_RDP_PROTOCOL_ERROR = 0xC00A0032,
+  MD_NTSTATUS_WIN_STATUS_CTX_CLIENT_LICENSE_NOT_SET = 0xC00A0033,
+  MD_NTSTATUS_WIN_STATUS_CTX_CLIENT_LICENSE_IN_USE = 0xC00A0034,
+  MD_NTSTATUS_WIN_STATUS_CTX_SHADOW_ENDED_BY_MODE_CHANGE = 0xC00A0035,
+  MD_NTSTATUS_WIN_STATUS_CTX_SHADOW_NOT_RUNNING = 0xC00A0036,
+  MD_NTSTATUS_WIN_STATUS_CTX_LOGON_DISABLED = 0xC00A0037,
+  MD_NTSTATUS_WIN_STATUS_CTX_SECURITY_LAYER_ERROR = 0xC00A0038,
+  MD_NTSTATUS_WIN_STATUS_TS_INCOMPATIBLE_SESSIONS = 0xC00A0039,
+  MD_NTSTATUS_WIN_STATUS_TS_VIDEO_SUBSYSTEM_ERROR = 0xC00A003A,
+  MD_NTSTATUS_WIN_STATUS_MUI_FILE_NOT_FOUND = 0xC00B0001,
+  MD_NTSTATUS_WIN_STATUS_MUI_INVALID_FILE = 0xC00B0002,
+  MD_NTSTATUS_WIN_STATUS_MUI_INVALID_RC_CONFIG = 0xC00B0003,
+  MD_NTSTATUS_WIN_STATUS_MUI_INVALID_LOCALE_NAME = 0xC00B0004,
+  MD_NTSTATUS_WIN_STATUS_MUI_INVALID_ULTIMATEFALLBACK_NAME = 0xC00B0005,
+  MD_NTSTATUS_WIN_STATUS_MUI_FILE_NOT_LOADED = 0xC00B0006,
+  MD_NTSTATUS_WIN_STATUS_RESOURCE_ENUM_USER_STOP = 0xC00B0007,
+  MD_NTSTATUS_WIN_STATUS_CLUSTER_INVALID_NODE = 0xC0130001,
+  MD_NTSTATUS_WIN_STATUS_CLUSTER_NODE_EXISTS = 0xC0130002,
+  MD_NTSTATUS_WIN_STATUS_CLUSTER_JOIN_IN_PROGRESS = 0xC0130003,
+  MD_NTSTATUS_WIN_STATUS_CLUSTER_NODE_NOT_FOUND = 0xC0130004,
+  MD_NTSTATUS_WIN_STATUS_CLUSTER_LOCAL_NODE_NOT_FOUND = 0xC0130005,
+  MD_NTSTATUS_WIN_STATUS_CLUSTER_NETWORK_EXISTS = 0xC0130006,
+  MD_NTSTATUS_WIN_STATUS_CLUSTER_NETWORK_NOT_FOUND = 0xC0130007,
+  MD_NTSTATUS_WIN_STATUS_CLUSTER_NETINTERFACE_EXISTS = 0xC0130008,
+  MD_NTSTATUS_WIN_STATUS_CLUSTER_NETINTERFACE_NOT_FOUND = 0xC0130009,
+  MD_NTSTATUS_WIN_STATUS_CLUSTER_INVALID_REQUEST = 0xC013000A,
+  MD_NTSTATUS_WIN_STATUS_CLUSTER_INVALID_NETWORK_PROVIDER = 0xC013000B,
+  MD_NTSTATUS_WIN_STATUS_CLUSTER_NODE_DOWN = 0xC013000C,
+  MD_NTSTATUS_WIN_STATUS_CLUSTER_NODE_UNREACHABLE = 0xC013000D,
+  MD_NTSTATUS_WIN_STATUS_CLUSTER_NODE_NOT_MEMBER = 0xC013000E,
+  MD_NTSTATUS_WIN_STATUS_CLUSTER_JOIN_NOT_IN_PROGRESS = 0xC013000F,
+  MD_NTSTATUS_WIN_STATUS_CLUSTER_INVALID_NETWORK = 0xC0130010,
+  MD_NTSTATUS_WIN_STATUS_CLUSTER_NO_NET_ADAPTERS = 0xC0130011,
+  MD_NTSTATUS_WIN_STATUS_CLUSTER_NODE_UP = 0xC0130012,
+  MD_NTSTATUS_WIN_STATUS_CLUSTER_NODE_PAUSED = 0xC0130013,
+  MD_NTSTATUS_WIN_STATUS_CLUSTER_NODE_NOT_PAUSED = 0xC0130014,
+  MD_NTSTATUS_WIN_STATUS_CLUSTER_NO_SECURITY_CONTEXT = 0xC0130015,
+  MD_NTSTATUS_WIN_STATUS_CLUSTER_NETWORK_NOT_INTERNAL = 0xC0130016,
+  MD_NTSTATUS_WIN_STATUS_CLUSTER_POISONED = 0xC0130017,
+  MD_NTSTATUS_WIN_STATUS_CLUSTER_NON_CSV_PATH = 0xC0130018,
+  MD_NTSTATUS_WIN_STATUS_CLUSTER_CSV_VOLUME_NOT_LOCAL = 0xC0130019,
+  MD_NTSTATUS_WIN_STATUS_CLUSTER_CSV_READ_OPLOCK_BREAK_IN_PROGRESS = 0xC0130020,
+  MD_NTSTATUS_WIN_STATUS_CLUSTER_CSV_AUTO_PAUSE_ERROR = 0xC0130021,
+  MD_NTSTATUS_WIN_STATUS_CLUSTER_CSV_REDIRECTED = 0xC0130022,
+  MD_NTSTATUS_WIN_STATUS_CLUSTER_CSV_NOT_REDIRECTED = 0xC0130023,
+  MD_NTSTATUS_WIN_STATUS_CLUSTER_CSV_VOLUME_DRAINING = 0xC0130024,
+  MD_NTSTATUS_WIN_STATUS_CLUSTER_CSV_SNAPSHOT_CREATION_IN_PROGRESS = 0xC0130025,
+  MD_NTSTATUS_WIN_STATUS_CLUSTER_CSV_VOLUME_DRAINING_SUCCEEDED_DOWNLEVEL = 0xC0130026,
+  MD_NTSTATUS_WIN_STATUS_ACPI_INVALID_OPCODE = 0xC0140001,
+  MD_NTSTATUS_WIN_STATUS_ACPI_STACK_OVERFLOW = 0xC0140002,
+  MD_NTSTATUS_WIN_STATUS_ACPI_ASSERT_FAILED = 0xC0140003,
+  MD_NTSTATUS_WIN_STATUS_ACPI_INVALID_INDEX = 0xC0140004,
+  MD_NTSTATUS_WIN_STATUS_ACPI_INVALID_ARGUMENT = 0xC0140005,
+  MD_NTSTATUS_WIN_STATUS_ACPI_FATAL = 0xC0140006,
+  MD_NTSTATUS_WIN_STATUS_ACPI_INVALID_SUPERNAME = 0xC0140007,
+  MD_NTSTATUS_WIN_STATUS_ACPI_INVALID_ARGTYPE = 0xC0140008,
+  MD_NTSTATUS_WIN_STATUS_ACPI_INVALID_OBJTYPE = 0xC0140009,
+  MD_NTSTATUS_WIN_STATUS_ACPI_INVALID_TARGETTYPE = 0xC014000A,
+  MD_NTSTATUS_WIN_STATUS_ACPI_INCORRECT_ARGUMENT_COUNT = 0xC014000B,
+  MD_NTSTATUS_WIN_STATUS_ACPI_ADDRESS_NOT_MAPPED = 0xC014000C,
+  MD_NTSTATUS_WIN_STATUS_ACPI_INVALID_EVENTTYPE = 0xC014000D,
+  MD_NTSTATUS_WIN_STATUS_ACPI_HANDLER_COLLISION = 0xC014000E,
+  MD_NTSTATUS_WIN_STATUS_ACPI_INVALID_DATA = 0xC014000F,
+  MD_NTSTATUS_WIN_STATUS_ACPI_INVALID_REGION = 0xC0140010,
+  MD_NTSTATUS_WIN_STATUS_ACPI_INVALID_ACCESS_SIZE = 0xC0140011,
+  MD_NTSTATUS_WIN_STATUS_ACPI_ACQUIRE_GLOBAL_LOCK = 0xC0140012,
+  MD_NTSTATUS_WIN_STATUS_ACPI_ALREADY_INITIALIZED = 0xC0140013,
+  MD_NTSTATUS_WIN_STATUS_ACPI_NOT_INITIALIZED = 0xC0140014,
+  MD_NTSTATUS_WIN_STATUS_ACPI_INVALID_MUTEX_LEVEL = 0xC0140015,
+  MD_NTSTATUS_WIN_STATUS_ACPI_MUTEX_NOT_OWNED = 0xC0140016,
+  MD_NTSTATUS_WIN_STATUS_ACPI_MUTEX_NOT_OWNER = 0xC0140017,
+  MD_NTSTATUS_WIN_STATUS_ACPI_RS_ACCESS = 0xC0140018,
+  MD_NTSTATUS_WIN_STATUS_ACPI_INVALID_TABLE = 0xC0140019,
+  MD_NTSTATUS_WIN_STATUS_ACPI_REG_HANDLER_FAILED = 0xC0140020,
+  MD_NTSTATUS_WIN_STATUS_ACPI_POWER_REQUEST_FAILED = 0xC0140021,
+  MD_NTSTATUS_WIN_STATUS_SXS_SECTION_NOT_FOUND = 0xC0150001,
+  MD_NTSTATUS_WIN_STATUS_SXS_CANT_GEN_ACTCTX = 0xC0150002,
+  MD_NTSTATUS_WIN_STATUS_SXS_INVALID_ACTCTXDATA_FORMAT = 0xC0150003,
+  MD_NTSTATUS_WIN_STATUS_SXS_ASSEMBLY_NOT_FOUND = 0xC0150004,
+  MD_NTSTATUS_WIN_STATUS_SXS_MANIFEST_FORMAT_ERROR = 0xC0150005,
+  MD_NTSTATUS_WIN_STATUS_SXS_MANIFEST_PARSE_ERROR = 0xC0150006,
+  MD_NTSTATUS_WIN_STATUS_SXS_ACTIVATION_CONTEXT_DISABLED = 0xC0150007,
+  MD_NTSTATUS_WIN_STATUS_SXS_KEY_NOT_FOUND = 0xC0150008,
+  MD_NTSTATUS_WIN_STATUS_SXS_VERSION_CONFLICT = 0xC0150009,
+  MD_NTSTATUS_WIN_STATUS_SXS_WRONG_SECTION_TYPE = 0xC015000A,
+  MD_NTSTATUS_WIN_STATUS_SXS_THREAD_QUERIES_DISABLED = 0xC015000B,
+  MD_NTSTATUS_WIN_STATUS_SXS_ASSEMBLY_MISSING = 0xC015000C,
+  MD_NTSTATUS_WIN_STATUS_SXS_PROCESS_DEFAULT_ALREADY_SET = 0xC015000E,
+  MD_NTSTATUS_WIN_STATUS_SXS_EARLY_DEACTIVATION = 0xC015000F,
+  MD_NTSTATUS_WIN_STATUS_SXS_INVALID_DEACTIVATION = 0xC0150010,
+  MD_NTSTATUS_WIN_STATUS_SXS_MULTIPLE_DEACTIVATION = 0xC0150011,
+  MD_NTSTATUS_WIN_STATUS_SXS_SYSTEM_DEFAULT_ACTIVATION_CONTEXT_EMPTY = 0xC0150012,
+  MD_NTSTATUS_WIN_STATUS_SXS_PROCESS_TERMINATION_REQUESTED = 0xC0150013,
+  MD_NTSTATUS_WIN_STATUS_SXS_CORRUPT_ACTIVATION_STACK = 0xC0150014,
+  MD_NTSTATUS_WIN_STATUS_SXS_CORRUPTION = 0xC0150015,
+  MD_NTSTATUS_WIN_STATUS_SXS_INVALID_IDENTITY_ATTRIBUTE_VALUE = 0xC0150016,
+  MD_NTSTATUS_WIN_STATUS_SXS_INVALID_IDENTITY_ATTRIBUTE_NAME = 0xC0150017,
+  MD_NTSTATUS_WIN_STATUS_SXS_IDENTITY_DUPLICATE_ATTRIBUTE = 0xC0150018,
+  MD_NTSTATUS_WIN_STATUS_SXS_IDENTITY_PARSE_ERROR = 0xC0150019,
+  MD_NTSTATUS_WIN_STATUS_SXS_COMPONENT_STORE_CORRUPT = 0xC015001A,
+  MD_NTSTATUS_WIN_STATUS_SXS_FILE_HASH_MISMATCH = 0xC015001B,
+  MD_NTSTATUS_WIN_STATUS_SXS_MANIFEST_IDENTITY_SAME_BUT_CONTENTS_DIFFERENT = 0xC015001C,
+  MD_NTSTATUS_WIN_STATUS_SXS_IDENTITIES_DIFFERENT = 0xC015001D,
+  MD_NTSTATUS_WIN_STATUS_SXS_ASSEMBLY_IS_NOT_A_DEPLOYMENT = 0xC015001E,
+  MD_NTSTATUS_WIN_STATUS_SXS_FILE_NOT_PART_OF_ASSEMBLY = 0xC015001F,
+  MD_NTSTATUS_WIN_STATUS_ADVANCED_INSTALLER_FAILED = 0xC0150020,
+  MD_NTSTATUS_WIN_STATUS_XML_ENCODING_MISMATCH = 0xC0150021,
+  MD_NTSTATUS_WIN_STATUS_SXS_MANIFEST_TOO_BIG = 0xC0150022,
+  MD_NTSTATUS_WIN_STATUS_SXS_SETTING_NOT_REGISTERED = 0xC0150023,
+  MD_NTSTATUS_WIN_STATUS_SXS_TRANSACTION_CLOSURE_INCOMPLETE = 0xC0150024,
+  MD_NTSTATUS_WIN_STATUS_SMI_PRIMITIVE_INSTALLER_FAILED = 0xC0150025,
+  MD_NTSTATUS_WIN_STATUS_GENERIC_COMMAND_FAILED = 0xC0150026,
+  MD_NTSTATUS_WIN_STATUS_SXS_FILE_HASH_MISSING = 0xC0150027,
+  MD_NTSTATUS_WIN_STATUS_TRANSACTIONAL_CONFLICT = 0xC0190001,
+  MD_NTSTATUS_WIN_STATUS_INVALID_TRANSACTION = 0xC0190002,
+  MD_NTSTATUS_WIN_STATUS_TRANSACTION_NOT_ACTIVE = 0xC0190003,
+  MD_NTSTATUS_WIN_STATUS_TM_INITIALIZATION_FAILED = 0xC0190004,
+  MD_NTSTATUS_WIN_STATUS_RM_NOT_ACTIVE = 0xC0190005,
+  MD_NTSTATUS_WIN_STATUS_RM_METADATA_CORRUPT = 0xC0190006,
+  MD_NTSTATUS_WIN_STATUS_TRANSACTION_NOT_JOINED = 0xC0190007,
+  MD_NTSTATUS_WIN_STATUS_DIRECTORY_NOT_RM = 0xC0190008,
+  MD_NTSTATUS_WIN_STATUS_TRANSACTIONS_UNSUPPORTED_REMOTE = 0xC019000A,
+  MD_NTSTATUS_WIN_STATUS_LOG_RESIZE_INVALID_SIZE = 0xC019000B,
+  MD_NTSTATUS_WIN_STATUS_REMOTE_FILE_VERSION_MISMATCH = 0xC019000C,
+  MD_NTSTATUS_WIN_STATUS_CRM_PROTOCOL_ALREADY_EXISTS = 0xC019000F,
+  MD_NTSTATUS_WIN_STATUS_TRANSACTION_PROPAGATION_FAILED = 0xC0190010,
+  MD_NTSTATUS_WIN_STATUS_CRM_PROTOCOL_NOT_FOUND = 0xC0190011,
+  MD_NTSTATUS_WIN_STATUS_TRANSACTION_SUPERIOR_EXISTS = 0xC0190012,
+  MD_NTSTATUS_WIN_STATUS_TRANSACTION_REQUEST_NOT_VALID = 0xC0190013,
+  MD_NTSTATUS_WIN_STATUS_TRANSACTION_NOT_REQUESTED = 0xC0190014,
+  MD_NTSTATUS_WIN_STATUS_TRANSACTION_ALREADY_ABORTED = 0xC0190015,
+  MD_NTSTATUS_WIN_STATUS_TRANSACTION_ALREADY_COMMITTED = 0xC0190016,
+  MD_NTSTATUS_WIN_STATUS_TRANSACTION_INVALID_MARSHALL_BUFFER = 0xC0190017,
+  MD_NTSTATUS_WIN_STATUS_CURRENT_TRANSACTION_NOT_VALID = 0xC0190018,
+  MD_NTSTATUS_WIN_STATUS_LOG_GROWTH_FAILED = 0xC0190019,
+  MD_NTSTATUS_WIN_STATUS_OBJECT_NO_LONGER_EXISTS = 0xC0190021,
+  MD_NTSTATUS_WIN_STATUS_STREAM_MINIVERSION_NOT_FOUND = 0xC0190022,
+  MD_NTSTATUS_WIN_STATUS_STREAM_MINIVERSION_NOT_VALID = 0xC0190023,
+  MD_NTSTATUS_WIN_STATUS_MINIVERSION_INACCESSIBLE_FROM_SPECIFIED_TRANSACTION = 0xC0190024,
+  MD_NTSTATUS_WIN_STATUS_CANT_OPEN_MINIVERSION_WITH_MODIFY_INTENT = 0xC0190025,
+  MD_NTSTATUS_WIN_STATUS_CANT_CREATE_MORE_STREAM_MINIVERSIONS = 0xC0190026,
+  MD_NTSTATUS_WIN_STATUS_HANDLE_NO_LONGER_VALID = 0xC0190028,
+  MD_NTSTATUS_WIN_STATUS_LOG_CORRUPTION_DETECTED = 0xC0190030,
+  MD_NTSTATUS_WIN_STATUS_RM_DISCONNECTED = 0xC0190032,
+  MD_NTSTATUS_WIN_STATUS_ENLISTMENT_NOT_SUPERIOR = 0xC0190033,
+  MD_NTSTATUS_WIN_STATUS_FILE_IDENTITY_NOT_PERSISTENT = 0xC0190036,
+  MD_NTSTATUS_WIN_STATUS_CANT_BREAK_TRANSACTIONAL_DEPENDENCY = 0xC0190037,
+  MD_NTSTATUS_WIN_STATUS_CANT_CROSS_RM_BOUNDARY = 0xC0190038,
+  MD_NTSTATUS_WIN_STATUS_TXF_DIR_NOT_EMPTY = 0xC0190039,
+  MD_NTSTATUS_WIN_STATUS_INDOUBT_TRANSACTIONS_EXIST = 0xC019003A,
+  MD_NTSTATUS_WIN_STATUS_TM_VOLATILE = 0xC019003B,
+  MD_NTSTATUS_WIN_STATUS_ROLLBACK_TIMER_EXPIRED = 0xC019003C,
+  MD_NTSTATUS_WIN_STATUS_TXF_ATTRIBUTE_CORRUPT = 0xC019003D,
+  MD_NTSTATUS_WIN_STATUS_EFS_NOT_ALLOWED_IN_TRANSACTION = 0xC019003E,
+  MD_NTSTATUS_WIN_STATUS_TRANSACTIONAL_OPEN_NOT_ALLOWED = 0xC019003F,
+  MD_NTSTATUS_WIN_STATUS_TRANSACTED_MAPPING_UNSUPPORTED_REMOTE = 0xC0190040,
+  MD_NTSTATUS_WIN_STATUS_TRANSACTION_REQUIRED_PROMOTION = 0xC0190043,
+  MD_NTSTATUS_WIN_STATUS_CANNOT_EXECUTE_FILE_IN_TRANSACTION = 0xC0190044,
+  MD_NTSTATUS_WIN_STATUS_TRANSACTIONS_NOT_FROZEN = 0xC0190045,
+  MD_NTSTATUS_WIN_STATUS_TRANSACTION_FREEZE_IN_PROGRESS = 0xC0190046,
+  MD_NTSTATUS_WIN_STATUS_NOT_SNAPSHOT_VOLUME = 0xC0190047,
+  MD_NTSTATUS_WIN_STATUS_NO_SAVEPOINT_WITH_OPEN_FILES = 0xC0190048,
+  MD_NTSTATUS_WIN_STATUS_SPARSE_NOT_ALLOWED_IN_TRANSACTION = 0xC0190049,
+  MD_NTSTATUS_WIN_STATUS_TM_IDENTITY_MISMATCH = 0xC019004A,
+  MD_NTSTATUS_WIN_STATUS_FLOATED_SECTION = 0xC019004B,
+  MD_NTSTATUS_WIN_STATUS_CANNOT_ACCEPT_TRANSACTED_WORK = 0xC019004C,
+  MD_NTSTATUS_WIN_STATUS_CANNOT_ABORT_TRANSACTIONS = 0xC019004D,
+  MD_NTSTATUS_WIN_STATUS_TRANSACTION_NOT_FOUND = 0xC019004E,
+  MD_NTSTATUS_WIN_STATUS_RESOURCEMANAGER_NOT_FOUND = 0xC019004F,
+  MD_NTSTATUS_WIN_STATUS_ENLISTMENT_NOT_FOUND = 0xC0190050,
+  MD_NTSTATUS_WIN_STATUS_TRANSACTIONMANAGER_NOT_FOUND = 0xC0190051,
+  MD_NTSTATUS_WIN_STATUS_TRANSACTIONMANAGER_NOT_ONLINE = 0xC0190052,
+  MD_NTSTATUS_WIN_STATUS_TRANSACTIONMANAGER_RECOVERY_NAME_COLLISION = 0xC0190053,
+  MD_NTSTATUS_WIN_STATUS_TRANSACTION_NOT_ROOT = 0xC0190054,
+  MD_NTSTATUS_WIN_STATUS_TRANSACTION_OBJECT_EXPIRED = 0xC0190055,
+  MD_NTSTATUS_WIN_STATUS_COMPRESSION_NOT_ALLOWED_IN_TRANSACTION = 0xC0190056,
+  MD_NTSTATUS_WIN_STATUS_TRANSACTION_RESPONSE_NOT_ENLISTED = 0xC0190057,
+  MD_NTSTATUS_WIN_STATUS_TRANSACTION_RECORD_TOO_LONG = 0xC0190058,
+  MD_NTSTATUS_WIN_STATUS_NO_LINK_TRACKING_IN_TRANSACTION = 0xC0190059,
+  MD_NTSTATUS_WIN_STATUS_OPERATION_NOT_SUPPORTED_IN_TRANSACTION = 0xC019005A,
+  MD_NTSTATUS_WIN_STATUS_TRANSACTION_INTEGRITY_VIOLATED = 0xC019005B,
+  MD_NTSTATUS_WIN_STATUS_TRANSACTIONMANAGER_IDENTITY_MISMATCH = 0xC019005C,
+  MD_NTSTATUS_WIN_STATUS_RM_CANNOT_BE_FROZEN_FOR_SNAPSHOT = 0xC019005D,
+  MD_NTSTATUS_WIN_STATUS_TRANSACTION_MUST_WRITETHROUGH = 0xC019005E,
+  MD_NTSTATUS_WIN_STATUS_TRANSACTION_NO_SUPERIOR = 0xC019005F,
+  MD_NTSTATUS_WIN_STATUS_EXPIRED_HANDLE = 0xC0190060,
+  MD_NTSTATUS_WIN_STATUS_TRANSACTION_NOT_ENLISTED = 0xC0190061,
+  MD_NTSTATUS_WIN_STATUS_LOG_SECTOR_INVALID = 0xC01A0001,
+  MD_NTSTATUS_WIN_STATUS_LOG_SECTOR_PARITY_INVALID = 0xC01A0002,
+  MD_NTSTATUS_WIN_STATUS_LOG_SECTOR_REMAPPED = 0xC01A0003,
+  MD_NTSTATUS_WIN_STATUS_LOG_BLOCK_INCOMPLETE = 0xC01A0004,
+  MD_NTSTATUS_WIN_STATUS_LOG_INVALID_RANGE = 0xC01A0005,
+  MD_NTSTATUS_WIN_STATUS_LOG_BLOCKS_EXHAUSTED = 0xC01A0006,
+  MD_NTSTATUS_WIN_STATUS_LOG_READ_CONTEXT_INVALID = 0xC01A0007,
+  MD_NTSTATUS_WIN_STATUS_LOG_RESTART_INVALID = 0xC01A0008,
+  MD_NTSTATUS_WIN_STATUS_LOG_BLOCK_VERSION = 0xC01A0009,
+  MD_NTSTATUS_WIN_STATUS_LOG_BLOCK_INVALID = 0xC01A000A,
+  MD_NTSTATUS_WIN_STATUS_LOG_READ_MODE_INVALID = 0xC01A000B,
+  MD_NTSTATUS_WIN_STATUS_LOG_METADATA_CORRUPT = 0xC01A000D,
+  MD_NTSTATUS_WIN_STATUS_LOG_METADATA_INVALID = 0xC01A000E,
+  MD_NTSTATUS_WIN_STATUS_LOG_METADATA_INCONSISTENT = 0xC01A000F,
+  MD_NTSTATUS_WIN_STATUS_LOG_RESERVATION_INVALID = 0xC01A0010,
+  MD_NTSTATUS_WIN_STATUS_LOG_CANT_DELETE = 0xC01A0011,
+  MD_NTSTATUS_WIN_STATUS_LOG_CONTAINER_LIMIT_EXCEEDED = 0xC01A0012,
+  MD_NTSTATUS_WIN_STATUS_LOG_START_OF_LOG = 0xC01A0013,
+  MD_NTSTATUS_WIN_STATUS_LOG_POLICY_ALREADY_INSTALLED = 0xC01A0014,
+  MD_NTSTATUS_WIN_STATUS_LOG_POLICY_NOT_INSTALLED = 0xC01A0015,
+  MD_NTSTATUS_WIN_STATUS_LOG_POLICY_INVALID = 0xC01A0016,
+  MD_NTSTATUS_WIN_STATUS_LOG_POLICY_CONFLICT = 0xC01A0017,
+  MD_NTSTATUS_WIN_STATUS_LOG_PINNED_ARCHIVE_TAIL = 0xC01A0018,
+  MD_NTSTATUS_WIN_STATUS_LOG_RECORD_NONEXISTENT = 0xC01A0019,
+  MD_NTSTATUS_WIN_STATUS_LOG_RECORDS_RESERVED_INVALID = 0xC01A001A,
+  MD_NTSTATUS_WIN_STATUS_LOG_SPACE_RESERVED_INVALID = 0xC01A001B,
+  MD_NTSTATUS_WIN_STATUS_LOG_TAIL_INVALID = 0xC01A001C,
+  MD_NTSTATUS_WIN_STATUS_LOG_FULL = 0xC01A001D,
+  MD_NTSTATUS_WIN_STATUS_LOG_MULTIPLEXED = 0xC01A001E,
+  MD_NTSTATUS_WIN_STATUS_LOG_DEDICATED = 0xC01A001F,
+  MD_NTSTATUS_WIN_STATUS_LOG_ARCHIVE_NOT_IN_PROGRESS = 0xC01A0020,
+  MD_NTSTATUS_WIN_STATUS_LOG_ARCHIVE_IN_PROGRESS = 0xC01A0021,
+  MD_NTSTATUS_WIN_STATUS_LOG_EPHEMERAL = 0xC01A0022,
+  MD_NTSTATUS_WIN_STATUS_LOG_NOT_ENOUGH_CONTAINERS = 0xC01A0023,
+  MD_NTSTATUS_WIN_STATUS_LOG_CLIENT_ALREADY_REGISTERED = 0xC01A0024,
+  MD_NTSTATUS_WIN_STATUS_LOG_CLIENT_NOT_REGISTERED = 0xC01A0025,
+  MD_NTSTATUS_WIN_STATUS_LOG_FULL_HANDLER_IN_PROGRESS = 0xC01A0026,
+  MD_NTSTATUS_WIN_STATUS_LOG_CONTAINER_READ_FAILED = 0xC01A0027,
+  MD_NTSTATUS_WIN_STATUS_LOG_CONTAINER_WRITE_FAILED = 0xC01A0028,
+  MD_NTSTATUS_WIN_STATUS_LOG_CONTAINER_OPEN_FAILED = 0xC01A0029,
+  MD_NTSTATUS_WIN_STATUS_LOG_CONTAINER_STATE_INVALID = 0xC01A002A,
+  MD_NTSTATUS_WIN_STATUS_LOG_STATE_INVALID = 0xC01A002B,
+  MD_NTSTATUS_WIN_STATUS_LOG_PINNED = 0xC01A002C,
+  MD_NTSTATUS_WIN_STATUS_LOG_METADATA_FLUSH_FAILED = 0xC01A002D,
+  MD_NTSTATUS_WIN_STATUS_LOG_INCONSISTENT_SECURITY = 0xC01A002E,
+  MD_NTSTATUS_WIN_STATUS_LOG_APPENDED_FLUSH_FAILED = 0xC01A002F,
+  MD_NTSTATUS_WIN_STATUS_LOG_PINNED_RESERVATION = 0xC01A0030,
+  MD_NTSTATUS_WIN_STATUS_VIDEO_HUNG_DISPLAY_DRIVER_THREAD = 0xC01B00EA,
+  MD_NTSTATUS_WIN_STATUS_FLT_NO_HANDLER_DEFINED = 0xC01C0001,
+  MD_NTSTATUS_WIN_STATUS_FLT_CONTEXT_ALREADY_DEFINED = 0xC01C0002,
+  MD_NTSTATUS_WIN_STATUS_FLT_INVALID_ASYNCHRONOUS_REQUEST = 0xC01C0003,
+  MD_NTSTATUS_WIN_STATUS_FLT_DISALLOW_FAST_IO = 0xC01C0004,
+  MD_NTSTATUS_WIN_STATUS_FLT_INVALID_NAME_REQUEST = 0xC01C0005,
+  MD_NTSTATUS_WIN_STATUS_FLT_NOT_SAFE_TO_POST_OPERATION = 0xC01C0006,
+  MD_NTSTATUS_WIN_STATUS_FLT_NOT_INITIALIZED = 0xC01C0007,
+  MD_NTSTATUS_WIN_STATUS_FLT_FILTER_NOT_READY = 0xC01C0008,
+  MD_NTSTATUS_WIN_STATUS_FLT_POST_OPERATION_CLEANUP = 0xC01C0009,
+  MD_NTSTATUS_WIN_STATUS_FLT_INTERNAL_ERROR = 0xC01C000A,
+  MD_NTSTATUS_WIN_STATUS_FLT_DELETING_OBJECT = 0xC01C000B,
+  MD_NTSTATUS_WIN_STATUS_FLT_MUST_BE_NONPAGED_POOL = 0xC01C000C,
+  MD_NTSTATUS_WIN_STATUS_FLT_DUPLICATE_ENTRY = 0xC01C000D,
+  MD_NTSTATUS_WIN_STATUS_FLT_CBDQ_DISABLED = 0xC01C000E,
+  MD_NTSTATUS_WIN_STATUS_FLT_DO_NOT_ATTACH = 0xC01C000F,
+  MD_NTSTATUS_WIN_STATUS_FLT_DO_NOT_DETACH = 0xC01C0010,
+  MD_NTSTATUS_WIN_STATUS_FLT_INSTANCE_ALTITUDE_COLLISION = 0xC01C0011,
+  MD_NTSTATUS_WIN_STATUS_FLT_INSTANCE_NAME_COLLISION = 0xC01C0012,
+  MD_NTSTATUS_WIN_STATUS_FLT_FILTER_NOT_FOUND = 0xC01C0013,
+  MD_NTSTATUS_WIN_STATUS_FLT_VOLUME_NOT_FOUND = 0xC01C0014,
+  MD_NTSTATUS_WIN_STATUS_FLT_INSTANCE_NOT_FOUND = 0xC01C0015,
+  MD_NTSTATUS_WIN_STATUS_FLT_CONTEXT_ALLOCATION_NOT_FOUND = 0xC01C0016,
+  MD_NTSTATUS_WIN_STATUS_FLT_INVALID_CONTEXT_REGISTRATION = 0xC01C0017,
+  MD_NTSTATUS_WIN_STATUS_FLT_NAME_CACHE_MISS = 0xC01C0018,
+  MD_NTSTATUS_WIN_STATUS_FLT_NO_DEVICE_OBJECT = 0xC01C0019,
+  MD_NTSTATUS_WIN_STATUS_FLT_VOLUME_ALREADY_MOUNTED = 0xC01C001A,
+  MD_NTSTATUS_WIN_STATUS_FLT_ALREADY_ENLISTED = 0xC01C001B,
+  MD_NTSTATUS_WIN_STATUS_FLT_CONTEXT_ALREADY_LINKED = 0xC01C001C,
+  MD_NTSTATUS_WIN_STATUS_FLT_NO_WAITER_FOR_REPLY = 0xC01C0020,
+  MD_NTSTATUS_WIN_STATUS_FLT_REGISTRATION_BUSY = 0xC01C0023,
+  MD_NTSTATUS_WIN_STATUS_MONITOR_NO_DESCRIPTOR = 0xC01D0001,
+  MD_NTSTATUS_WIN_STATUS_MONITOR_UNKNOWN_DESCRIPTOR_FORMAT = 0xC01D0002,
+  MD_NTSTATUS_WIN_STATUS_MONITOR_INVALID_DESCRIPTOR_CHECKSUM = 0xC01D0003,
+  MD_NTSTATUS_WIN_STATUS_MONITOR_INVALID_STANDARD_TIMING_BLOCK = 0xC01D0004,
+  MD_NTSTATUS_WIN_STATUS_MONITOR_WMI_DATABLOCK_REGISTRATION_FAILED = 0xC01D0005,
+  MD_NTSTATUS_WIN_STATUS_MONITOR_INVALID_SERIAL_NUMBER_MONDSC_BLOCK = 0xC01D0006,
+  MD_NTSTATUS_WIN_STATUS_MONITOR_INVALID_USER_FRIENDLY_MONDSC_BLOCK = 0xC01D0007,
+  MD_NTSTATUS_WIN_STATUS_MONITOR_NO_MORE_DESCRIPTOR_DATA = 0xC01D0008,
+  MD_NTSTATUS_WIN_STATUS_MONITOR_INVALID_DETAILED_TIMING_BLOCK = 0xC01D0009,
+  MD_NTSTATUS_WIN_STATUS_MONITOR_INVALID_MANUFACTURE_DATE = 0xC01D000A,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_NOT_EXCLUSIVE_MODE_OWNER = 0xC01E0000,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER = 0xC01E0001,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_DISPLAY_ADAPTER = 0xC01E0002,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_ADAPTER_WAS_RESET = 0xC01E0003,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_DRIVER_MODEL = 0xC01E0004,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_PRESENT_MODE_CHANGED = 0xC01E0005,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_PRESENT_OCCLUDED = 0xC01E0006,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_PRESENT_DENIED = 0xC01E0007,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_CANNOTCOLORCONVERT = 0xC01E0008,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_DRIVER_MISMATCH = 0xC01E0009,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_PRESENT_REDIRECTION_DISABLED = 0xC01E000B,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_PRESENT_UNOCCLUDED = 0xC01E000C,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_WINDOWDC_NOT_AVAILABLE = 0xC01E000D,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_WINDOWLESS_PRESENT_DISABLED = 0xC01E000E,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_NO_VIDEO_MEMORY = 0xC01E0100,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_CANT_LOCK_MEMORY = 0xC01E0101,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_ALLOCATION_BUSY = 0xC01E0102,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_TOO_MANY_REFERENCES = 0xC01E0103,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_TRY_AGAIN_LATER = 0xC01E0104,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_TRY_AGAIN_NOW = 0xC01E0105,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_ALLOCATION_INVALID = 0xC01E0106,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_UNSWIZZLING_APERTURE_UNAVAILABLE = 0xC01E0107,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_UNSWIZZLING_APERTURE_UNSUPPORTED = 0xC01E0108,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_CANT_EVICT_PINNED_ALLOCATION = 0xC01E0109,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_ALLOCATION_USAGE = 0xC01E0110,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_CANT_RENDER_LOCKED_ALLOCATION = 0xC01E0111,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_ALLOCATION_CLOSED = 0xC01E0112,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_ALLOCATION_INSTANCE = 0xC01E0113,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_ALLOCATION_HANDLE = 0xC01E0114,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_WRONG_ALLOCATION_DEVICE = 0xC01E0115,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_ALLOCATION_CONTENT_LOST = 0xC01E0116,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_GPU_EXCEPTION_ON_DEVICE = 0xC01E0200,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_VIDPN_TOPOLOGY = 0xC01E0300,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_VIDPN_TOPOLOGY_NOT_SUPPORTED = 0xC01E0301,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_VIDPN_TOPOLOGY_CURRENTLY_NOT_SUPPORTED = 0xC01E0302,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_VIDPN = 0xC01E0303,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE = 0xC01E0304,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET = 0xC01E0305,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_VIDPN_MODALITY_NOT_SUPPORTED = 0xC01E0306,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_VIDPN_SOURCEMODESET = 0xC01E0308,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_VIDPN_TARGETMODESET = 0xC01E0309,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_FREQUENCY = 0xC01E030A,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_ACTIVE_REGION = 0xC01E030B,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_TOTAL_REGION = 0xC01E030C,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE_MODE = 0xC01E0310,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET_MODE = 0xC01E0311,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_PINNED_MODE_MUST_REMAIN_IN_SET = 0xC01E0312,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_PATH_ALREADY_IN_TOPOLOGY = 0xC01E0313,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_MODE_ALREADY_IN_MODESET = 0xC01E0314,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_VIDEOPRESENTSOURCESET = 0xC01E0315,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_VIDEOPRESENTTARGETSET = 0xC01E0316,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_SOURCE_ALREADY_IN_SET = 0xC01E0317,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_TARGET_ALREADY_IN_SET = 0xC01E0318,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_VIDPN_PRESENT_PATH = 0xC01E0319,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_NO_RECOMMENDED_VIDPN_TOPOLOGY = 0xC01E031A,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGESET = 0xC01E031B,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE = 0xC01E031C,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_FREQUENCYRANGE_NOT_IN_SET = 0xC01E031D,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_FREQUENCYRANGE_ALREADY_IN_SET = 0xC01E031F,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_STALE_MODESET = 0xC01E0320,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_MONITOR_SOURCEMODESET = 0xC01E0321,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_MONITOR_SOURCE_MODE = 0xC01E0322,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_NO_RECOMMENDED_FUNCTIONAL_VIDPN = 0xC01E0323,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_MODE_ID_MUST_BE_UNIQUE = 0xC01E0324,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_EMPTY_ADAPTER_MONITOR_MODE_SUPPORT_INTERSECTION = 0xC01E0325,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_VIDEO_PRESENT_TARGETS_LESS_THAN_SOURCES = 0xC01E0326,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_PATH_NOT_IN_TOPOLOGY = 0xC01E0327,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_SOURCE = 0xC01E0328,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_TARGET = 0xC01E0329,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_MONITORDESCRIPTORSET = 0xC01E032A,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_MONITORDESCRIPTOR = 0xC01E032B,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_MONITORDESCRIPTOR_NOT_IN_SET = 0xC01E032C,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_MONITORDESCRIPTOR_ALREADY_IN_SET = 0xC01E032D,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_MONITORDESCRIPTOR_ID_MUST_BE_UNIQUE = 0xC01E032E,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_VIDPN_TARGET_SUBSET_TYPE = 0xC01E032F,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_RESOURCES_NOT_RELATED = 0xC01E0330,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_SOURCE_ID_MUST_BE_UNIQUE = 0xC01E0331,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_TARGET_ID_MUST_BE_UNIQUE = 0xC01E0332,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_NO_AVAILABLE_VIDPN_TARGET = 0xC01E0333,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_MONITOR_COULD_NOT_BE_ASSOCIATED_WITH_ADAPTER = 0xC01E0334,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_NO_VIDPNMGR = 0xC01E0335,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_NO_ACTIVE_VIDPN = 0xC01E0336,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_STALE_VIDPN_TOPOLOGY = 0xC01E0337,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_MONITOR_NOT_CONNECTED = 0xC01E0338,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_SOURCE_NOT_IN_TOPOLOGY = 0xC01E0339,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_PRIMARYSURFACE_SIZE = 0xC01E033A,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_VISIBLEREGION_SIZE = 0xC01E033B,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_STRIDE = 0xC01E033C,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_PIXELFORMAT = 0xC01E033D,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_COLORBASIS = 0xC01E033E,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_PIXELVALUEACCESSMODE = 0xC01E033F,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_TARGET_NOT_IN_TOPOLOGY = 0xC01E0340,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_NO_DISPLAY_MODE_MANAGEMENT_SUPPORT = 0xC01E0341,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_VIDPN_SOURCE_IN_USE = 0xC01E0342,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_CANT_ACCESS_ACTIVE_VIDPN = 0xC01E0343,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_PATH_IMPORTANCE_ORDINAL = 0xC01E0344,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_PATH_CONTENT_GEOMETRY_TRANSFORMATION = 0xC01E0345,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_SUPPORTED = 0xC01E0346,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_GAMMA_RAMP = 0xC01E0347,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_GAMMA_RAMP_NOT_SUPPORTED = 0xC01E0348,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_MULTISAMPLING_NOT_SUPPORTED = 0xC01E0349,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_MODE_NOT_IN_MODESET = 0xC01E034A,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_VIDPN_TOPOLOGY_RECOMMENDATION_REASON = 0xC01E034D,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_PATH_CONTENT_TYPE = 0xC01E034E,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_COPYPROTECTION_TYPE = 0xC01E034F,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_UNASSIGNED_MODESET_ALREADY_EXISTS = 0xC01E0350,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_SCANLINE_ORDERING = 0xC01E0352,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_TOPOLOGY_CHANGES_NOT_ALLOWED = 0xC01E0353,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_NO_AVAILABLE_IMPORTANCE_ORDINALS = 0xC01E0354,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_INCOMPATIBLE_PRIVATE_FORMAT = 0xC01E0355,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_MODE_PRUNING_ALGORITHM = 0xC01E0356,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_MONITOR_CAPABILITY_ORIGIN = 0xC01E0357,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE_CONSTRAINT = 0xC01E0358,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_MAX_NUM_PATHS_REACHED = 0xC01E0359,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_CANCEL_VIDPN_TOPOLOGY_AUGMENTATION = 0xC01E035A,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_CLIENT_TYPE = 0xC01E035B,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_CLIENTVIDPN_NOT_SET = 0xC01E035C,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_SPECIFIED_CHILD_ALREADY_CONNECTED = 0xC01E0400,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_CHILD_DESCRIPTOR_NOT_SUPPORTED = 0xC01E0401,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_NOT_A_LINKED_ADAPTER = 0xC01E0430,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_LEADLINK_NOT_ENUMERATED = 0xC01E0431,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_CHAINLINKS_NOT_ENUMERATED = 0xC01E0432,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_ADAPTER_CHAIN_NOT_READY = 0xC01E0433,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_CHAINLINKS_NOT_STARTED = 0xC01E0434,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_CHAINLINKS_NOT_POWERED_ON = 0xC01E0435,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_INCONSISTENT_DEVICE_LINK_STATE = 0xC01E0436,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_NOT_POST_DEVICE_DRIVER = 0xC01E0438,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_ADAPTER_ACCESS_NOT_EXCLUDED = 0xC01E043B,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_OPM_NOT_SUPPORTED = 0xC01E0500,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_COPP_NOT_SUPPORTED = 0xC01E0501,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_UAB_NOT_SUPPORTED = 0xC01E0502,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_OPM_INVALID_ENCRYPTED_PARAMETERS = 0xC01E0503,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_OPM_NO_PROTECTED_OUTPUTS_EXIST = 0xC01E0505,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_OPM_INTERNAL_ERROR = 0xC01E050B,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_OPM_INVALID_HANDLE = 0xC01E050C,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_PVP_INVALID_CERTIFICATE_LENGTH = 0xC01E050E,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_OPM_SPANNING_MODE_ENABLED = 0xC01E050F,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_OPM_THEATER_MODE_ENABLED = 0xC01E0510,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_PVP_HFS_FAILED = 0xC01E0511,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_OPM_INVALID_SRM = 0xC01E0512,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_HDCP = 0xC01E0513,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_ACP = 0xC01E0514,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_CGMSA = 0xC01E0515,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_OPM_HDCP_SRM_NEVER_SET = 0xC01E0516,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_OPM_RESOLUTION_TOO_HIGH = 0xC01E0517,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_OPM_ALL_HDCP_HARDWARE_ALREADY_IN_USE = 0xC01E0518,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_NO_LONGER_EXISTS = 0xC01E051A,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_DOES_NOT_HAVE_COPP_SEMANTICS = 0xC01E051C,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_OPM_INVALID_INFORMATION_REQUEST = 0xC01E051D,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_OPM_DRIVER_INTERNAL_ERROR = 0xC01E051E,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_DOES_NOT_HAVE_OPM_SEMANTICS = 0xC01E051F,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_OPM_SIGNALING_NOT_SUPPORTED = 0xC01E0520,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_OPM_INVALID_CONFIGURATION_REQUEST = 0xC01E0521,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_I2C_NOT_SUPPORTED = 0xC01E0580,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_I2C_DEVICE_DOES_NOT_EXIST = 0xC01E0581,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_I2C_ERROR_TRANSMITTING_DATA = 0xC01E0582,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_I2C_ERROR_RECEIVING_DATA = 0xC01E0583,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_DDCCI_VCP_NOT_SUPPORTED = 0xC01E0584,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_DDCCI_INVALID_DATA = 0xC01E0585,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_DDCCI_MONITOR_RETURNED_INVALID_TIMING_STATUS_BYTE = 0xC01E0586,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_DDCCI_INVALID_CAPABILITIES_STRING = 0xC01E0587,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_MCA_INTERNAL_ERROR = 0xC01E0588,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_DDCCI_INVALID_MESSAGE_COMMAND = 0xC01E0589,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_DDCCI_INVALID_MESSAGE_LENGTH = 0xC01E058A,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_DDCCI_INVALID_MESSAGE_CHECKSUM = 0xC01E058B,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_PHYSICAL_MONITOR_HANDLE = 0xC01E058C,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_MONITOR_NO_LONGER_EXISTS = 0xC01E058D,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_ONLY_CONSOLE_SESSION_SUPPORTED = 0xC01E05E0,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_NO_DISPLAY_DEVICE_CORRESPONDS_TO_NAME = 0xC01E05E1,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_DISPLAY_DEVICE_NOT_ATTACHED_TO_DESKTOP = 0xC01E05E2,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_MIRRORING_DEVICES_NOT_SUPPORTED = 0xC01E05E3,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_POINTER = 0xC01E05E4,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_NO_MONITORS_CORRESPOND_TO_DISPLAY_DEVICE = 0xC01E05E5,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_PARAMETER_ARRAY_TOO_SMALL = 0xC01E05E6,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_INTERNAL_ERROR = 0xC01E05E7,
+  MD_NTSTATUS_WIN_STATUS_GRAPHICS_SESSION_TYPE_CHANGE_IN_PROGRESS = 0xC01E05E8,
+  MD_NTSTATUS_WIN_STATUS_FVE_LOCKED_VOLUME = 0xC0210000,
+  MD_NTSTATUS_WIN_STATUS_FVE_NOT_ENCRYPTED = 0xC0210001,
+  MD_NTSTATUS_WIN_STATUS_FVE_BAD_INFORMATION = 0xC0210002,
+  MD_NTSTATUS_WIN_STATUS_FVE_TOO_SMALL = 0xC0210003,
+  MD_NTSTATUS_WIN_STATUS_FVE_FAILED_WRONG_FS = 0xC0210004,
+  MD_NTSTATUS_WIN_STATUS_FVE_BAD_PARTITION_SIZE = 0xC0210005,
+  MD_NTSTATUS_WIN_STATUS_FVE_FS_NOT_EXTENDED = 0xC0210006,
+  MD_NTSTATUS_WIN_STATUS_FVE_FS_MOUNTED = 0xC0210007,
+  MD_NTSTATUS_WIN_STATUS_FVE_NO_LICENSE = 0xC0210008,
+  MD_NTSTATUS_WIN_STATUS_FVE_ACTION_NOT_ALLOWED = 0xC0210009,
+  MD_NTSTATUS_WIN_STATUS_FVE_BAD_DATA = 0xC021000A,
+  MD_NTSTATUS_WIN_STATUS_FVE_VOLUME_NOT_BOUND = 0xC021000B,
+  MD_NTSTATUS_WIN_STATUS_FVE_NOT_DATA_VOLUME = 0xC021000C,
+  MD_NTSTATUS_WIN_STATUS_FVE_CONV_READ_ERROR = 0xC021000D,
+  MD_NTSTATUS_WIN_STATUS_FVE_CONV_WRITE_ERROR = 0xC021000E,
+  MD_NTSTATUS_WIN_STATUS_FVE_OVERLAPPED_UPDATE = 0xC021000F,
+  MD_NTSTATUS_WIN_STATUS_FVE_FAILED_SECTOR_SIZE = 0xC0210010,
+  MD_NTSTATUS_WIN_STATUS_FVE_FAILED_AUTHENTICATION = 0xC0210011,
+  MD_NTSTATUS_WIN_STATUS_FVE_NOT_OS_VOLUME = 0xC0210012,
+  MD_NTSTATUS_WIN_STATUS_FVE_KEYFILE_NOT_FOUND = 0xC0210013,
+  MD_NTSTATUS_WIN_STATUS_FVE_KEYFILE_INVALID = 0xC0210014,
+  MD_NTSTATUS_WIN_STATUS_FVE_KEYFILE_NO_VMK = 0xC0210015,
+  MD_NTSTATUS_WIN_STATUS_FVE_TPM_DISABLED = 0xC0210016,
+  MD_NTSTATUS_WIN_STATUS_FVE_TPM_SRK_AUTH_NOT_ZERO = 0xC0210017,
+  MD_NTSTATUS_WIN_STATUS_FVE_TPM_INVALID_PCR = 0xC0210018,
+  MD_NTSTATUS_WIN_STATUS_FVE_TPM_NO_VMK = 0xC0210019,
+  MD_NTSTATUS_WIN_STATUS_FVE_PIN_INVALID = 0xC021001A,
+  MD_NTSTATUS_WIN_STATUS_FVE_AUTH_INVALID_APPLICATION = 0xC021001B,
+  MD_NTSTATUS_WIN_STATUS_FVE_AUTH_INVALID_CONFIG = 0xC021001C,
+  MD_NTSTATUS_WIN_STATUS_FVE_DEBUGGER_ENABLED = 0xC021001D,
+  MD_NTSTATUS_WIN_STATUS_FVE_DRY_RUN_FAILED = 0xC021001E,
+  MD_NTSTATUS_WIN_STATUS_FVE_BAD_METADATA_POINTER = 0xC021001F,
+  MD_NTSTATUS_WIN_STATUS_FVE_OLD_METADATA_COPY = 0xC0210020,
+  MD_NTSTATUS_WIN_STATUS_FVE_REBOOT_REQUIRED = 0xC0210021,
+  MD_NTSTATUS_WIN_STATUS_FVE_RAW_ACCESS = 0xC0210022,
+  MD_NTSTATUS_WIN_STATUS_FVE_RAW_BLOCKED = 0xC0210023,
+  MD_NTSTATUS_WIN_STATUS_FVE_NO_AUTOUNLOCK_MASTER_KEY = 0xC0210024,
+  MD_NTSTATUS_WIN_STATUS_FVE_MOR_FAILED = 0xC0210025,
+  MD_NTSTATUS_WIN_STATUS_FVE_NO_FEATURE_LICENSE = 0xC0210026,
+  MD_NTSTATUS_WIN_STATUS_FVE_POLICY_USER_DISABLE_RDV_NOT_ALLOWED = 0xC0210027,
+  MD_NTSTATUS_WIN_STATUS_FVE_CONV_RECOVERY_FAILED = 0xC0210028,
+  MD_NTSTATUS_WIN_STATUS_FVE_VIRTUALIZED_SPACE_TOO_BIG = 0xC0210029,
+  MD_NTSTATUS_WIN_STATUS_FVE_INVALID_DATUM_TYPE = 0xC021002A,
+  MD_NTSTATUS_WIN_STATUS_FVE_VOLUME_TOO_SMALL = 0xC0210030,
+  MD_NTSTATUS_WIN_STATUS_FVE_ENH_PIN_INVALID = 0xC0210031,
+  MD_NTSTATUS_WIN_STATUS_FVE_FULL_ENCRYPTION_NOT_ALLOWED_ON_TP_STORAGE = 0xC0210032,
+  MD_NTSTATUS_WIN_STATUS_FVE_WIPE_NOT_ALLOWED_ON_TP_STORAGE = 0xC0210033,
+  MD_NTSTATUS_WIN_STATUS_FVE_NOT_ALLOWED_ON_CSV_STACK = 0xC0210034,
+  MD_NTSTATUS_WIN_STATUS_FVE_NOT_ALLOWED_ON_CLUSTER = 0xC0210035,
+  MD_NTSTATUS_WIN_STATUS_FVE_NOT_ALLOWED_TO_UPGRADE_WHILE_CONVERTING = 0xC0210036,
+  MD_NTSTATUS_WIN_STATUS_FVE_WIPE_CANCEL_NOT_APPLICABLE = 0xC0210037,
+  MD_NTSTATUS_WIN_STATUS_FVE_EDRIVE_DRY_RUN_FAILED = 0xC0210038,
+  MD_NTSTATUS_WIN_STATUS_FVE_SECUREBOOT_DISABLED = 0xC0210039,
+  MD_NTSTATUS_WIN_STATUS_FVE_SECUREBOOT_CONFIG_CHANGE = 0xC021003A,
+  MD_NTSTATUS_WIN_STATUS_FVE_DEVICE_LOCKEDOUT = 0xC021003B,
+  MD_NTSTATUS_WIN_STATUS_FVE_VOLUME_EXTEND_PREVENTS_EOW_DECRYPT = 0xC021003C,
+  MD_NTSTATUS_WIN_STATUS_FVE_NOT_DE_VOLUME = 0xC021003D,
+  MD_NTSTATUS_WIN_STATUS_FVE_PROTECTION_DISABLED = 0xC021003E,
+  MD_NTSTATUS_WIN_STATUS_FVE_PROTECTION_CANNOT_BE_DISABLED = 0xC021003F,
+  MD_NTSTATUS_WIN_STATUS_FWP_CALLOUT_NOT_FOUND = 0xC0220001,
+  MD_NTSTATUS_WIN_STATUS_FWP_CONDITION_NOT_FOUND = 0xC0220002,
+  MD_NTSTATUS_WIN_STATUS_FWP_FILTER_NOT_FOUND = 0xC0220003,
+  MD_NTSTATUS_WIN_STATUS_FWP_LAYER_NOT_FOUND = 0xC0220004,
+  MD_NTSTATUS_WIN_STATUS_FWP_PROVIDER_NOT_FOUND = 0xC0220005,
+  MD_NTSTATUS_WIN_STATUS_FWP_PROVIDER_CONTEXT_NOT_FOUND = 0xC0220006,
+  MD_NTSTATUS_WIN_STATUS_FWP_SUBLAYER_NOT_FOUND = 0xC0220007,
+  MD_NTSTATUS_WIN_STATUS_FWP_NOT_FOUND = 0xC0220008,
+  MD_NTSTATUS_WIN_STATUS_FWP_ALREADY_EXISTS = 0xC0220009,
+  MD_NTSTATUS_WIN_STATUS_FWP_IN_USE = 0xC022000A,
+  MD_NTSTATUS_WIN_STATUS_FWP_DYNAMIC_SESSION_IN_PROGRESS = 0xC022000B,
+  MD_NTSTATUS_WIN_STATUS_FWP_WRONG_SESSION = 0xC022000C,
+  MD_NTSTATUS_WIN_STATUS_FWP_NO_TXN_IN_PROGRESS = 0xC022000D,
+  MD_NTSTATUS_WIN_STATUS_FWP_TXN_IN_PROGRESS = 0xC022000E,
+  MD_NTSTATUS_WIN_STATUS_FWP_TXN_ABORTED = 0xC022000F,
+  MD_NTSTATUS_WIN_STATUS_FWP_SESSION_ABORTED = 0xC0220010,
+  MD_NTSTATUS_WIN_STATUS_FWP_INCOMPATIBLE_TXN = 0xC0220011,
+  MD_NTSTATUS_WIN_STATUS_FWP_TIMEOUT = 0xC0220012,
+  MD_NTSTATUS_WIN_STATUS_FWP_NET_EVENTS_DISABLED = 0xC0220013,
+  MD_NTSTATUS_WIN_STATUS_FWP_INCOMPATIBLE_LAYER = 0xC0220014,
+  MD_NTSTATUS_WIN_STATUS_FWP_KM_CLIENTS_ONLY = 0xC0220015,
+  MD_NTSTATUS_WIN_STATUS_FWP_LIFETIME_MISMATCH = 0xC0220016,
+  MD_NTSTATUS_WIN_STATUS_FWP_BUILTIN_OBJECT = 0xC0220017,
+  MD_NTSTATUS_WIN_STATUS_FWP_TOO_MANY_CALLOUTS = 0xC0220018,
+  MD_NTSTATUS_WIN_STATUS_FWP_NOTIFICATION_DROPPED = 0xC0220019,
+  MD_NTSTATUS_WIN_STATUS_FWP_TRAFFIC_MISMATCH = 0xC022001A,
+  MD_NTSTATUS_WIN_STATUS_FWP_INCOMPATIBLE_SA_STATE = 0xC022001B,
+  MD_NTSTATUS_WIN_STATUS_FWP_NULL_POINTER = 0xC022001C,
+  MD_NTSTATUS_WIN_STATUS_FWP_INVALID_ENUMERATOR = 0xC022001D,
+  MD_NTSTATUS_WIN_STATUS_FWP_INVALID_FLAGS = 0xC022001E,
+  MD_NTSTATUS_WIN_STATUS_FWP_INVALID_NET_MASK = 0xC022001F,
+  MD_NTSTATUS_WIN_STATUS_FWP_INVALID_RANGE = 0xC0220020,
+  MD_NTSTATUS_WIN_STATUS_FWP_INVALID_INTERVAL = 0xC0220021,
+  MD_NTSTATUS_WIN_STATUS_FWP_ZERO_LENGTH_ARRAY = 0xC0220022,
+  MD_NTSTATUS_WIN_STATUS_FWP_NULL_DISPLAY_NAME = 0xC0220023,
+  MD_NTSTATUS_WIN_STATUS_FWP_INVALID_ACTION_TYPE = 0xC0220024,
+  MD_NTSTATUS_WIN_STATUS_FWP_INVALID_WEIGHT = 0xC0220025,
+  MD_NTSTATUS_WIN_STATUS_FWP_MATCH_TYPE_MISMATCH = 0xC0220026,
+  MD_NTSTATUS_WIN_STATUS_FWP_TYPE_MISMATCH = 0xC0220027,
+  MD_NTSTATUS_WIN_STATUS_FWP_OUT_OF_BOUNDS = 0xC0220028,
+  MD_NTSTATUS_WIN_STATUS_FWP_RESERVED = 0xC0220029,
+  MD_NTSTATUS_WIN_STATUS_FWP_DUPLICATE_CONDITION = 0xC022002A,
+  MD_NTSTATUS_WIN_STATUS_FWP_DUPLICATE_KEYMOD = 0xC022002B,
+  MD_NTSTATUS_WIN_STATUS_FWP_ACTION_INCOMPATIBLE_WITH_LAYER = 0xC022002C,
+  MD_NTSTATUS_WIN_STATUS_FWP_ACTION_INCOMPATIBLE_WITH_SUBLAYER = 0xC022002D,
+  MD_NTSTATUS_WIN_STATUS_FWP_CONTEXT_INCOMPATIBLE_WITH_LAYER = 0xC022002E,
+  MD_NTSTATUS_WIN_STATUS_FWP_CONTEXT_INCOMPATIBLE_WITH_CALLOUT = 0xC022002F,
+  MD_NTSTATUS_WIN_STATUS_FWP_INCOMPATIBLE_AUTH_METHOD = 0xC0220030,
+  MD_NTSTATUS_WIN_STATUS_FWP_INCOMPATIBLE_DH_GROUP = 0xC0220031,
+  MD_NTSTATUS_WIN_STATUS_FWP_EM_NOT_SUPPORTED = 0xC0220032,
+  MD_NTSTATUS_WIN_STATUS_FWP_NEVER_MATCH = 0xC0220033,
+  MD_NTSTATUS_WIN_STATUS_FWP_PROVIDER_CONTEXT_MISMATCH = 0xC0220034,
+  MD_NTSTATUS_WIN_STATUS_FWP_INVALID_PARAMETER = 0xC0220035,
+  MD_NTSTATUS_WIN_STATUS_FWP_TOO_MANY_SUBLAYERS = 0xC0220036,
+  MD_NTSTATUS_WIN_STATUS_FWP_CALLOUT_NOTIFICATION_FAILED = 0xC0220037,
+  MD_NTSTATUS_WIN_STATUS_FWP_INVALID_AUTH_TRANSFORM = 0xC0220038,
+  MD_NTSTATUS_WIN_STATUS_FWP_INVALID_CIPHER_TRANSFORM = 0xC0220039,
+  MD_NTSTATUS_WIN_STATUS_FWP_INCOMPATIBLE_CIPHER_TRANSFORM = 0xC022003A,
+  MD_NTSTATUS_WIN_STATUS_FWP_INVALID_TRANSFORM_COMBINATION = 0xC022003B,
+  MD_NTSTATUS_WIN_STATUS_FWP_DUPLICATE_AUTH_METHOD = 0xC022003C,
+  MD_NTSTATUS_WIN_STATUS_FWP_INVALID_TUNNEL_ENDPOINT = 0xC022003D,
+  MD_NTSTATUS_WIN_STATUS_FWP_L2_DRIVER_NOT_READY = 0xC022003E,
+  MD_NTSTATUS_WIN_STATUS_FWP_KEY_DICTATOR_ALREADY_REGISTERED = 0xC022003F,
+  MD_NTSTATUS_WIN_STATUS_FWP_KEY_DICTATION_INVALID_KEYING_MATERIAL = 0xC0220040,
+  MD_NTSTATUS_WIN_STATUS_FWP_CONNECTIONS_DISABLED = 0xC0220041,
+  MD_NTSTATUS_WIN_STATUS_FWP_INVALID_DNS_NAME = 0xC0220042,
+  MD_NTSTATUS_WIN_STATUS_FWP_STILL_ON = 0xC0220043,
+  MD_NTSTATUS_WIN_STATUS_FWP_IKEEXT_NOT_RUNNING = 0xC0220044,
+  MD_NTSTATUS_WIN_STATUS_FWP_TCPIP_NOT_READY = 0xC0220100,
+  MD_NTSTATUS_WIN_STATUS_FWP_INJECT_HANDLE_CLOSING = 0xC0220101,
+  MD_NTSTATUS_WIN_STATUS_FWP_INJECT_HANDLE_STALE = 0xC0220102,
+  MD_NTSTATUS_WIN_STATUS_FWP_CANNOT_PEND = 0xC0220103,
+  MD_NTSTATUS_WIN_STATUS_FWP_DROP_NOICMP = 0xC0220104,
+  MD_NTSTATUS_WIN_STATUS_NDIS_CLOSING = 0xC0230002,
+  MD_NTSTATUS_WIN_STATUS_NDIS_BAD_VERSION = 0xC0230004,
+  MD_NTSTATUS_WIN_STATUS_NDIS_BAD_CHARACTERISTICS = 0xC0230005,
+  MD_NTSTATUS_WIN_STATUS_NDIS_ADAPTER_NOT_FOUND = 0xC0230006,
+  MD_NTSTATUS_WIN_STATUS_NDIS_OPEN_FAILED = 0xC0230007,
+  MD_NTSTATUS_WIN_STATUS_NDIS_DEVICE_FAILED = 0xC0230008,
+  MD_NTSTATUS_WIN_STATUS_NDIS_MULTICAST_FULL = 0xC0230009,
+  MD_NTSTATUS_WIN_STATUS_NDIS_MULTICAST_EXISTS = 0xC023000A,
+  MD_NTSTATUS_WIN_STATUS_NDIS_MULTICAST_NOT_FOUND = 0xC023000B,
+  MD_NTSTATUS_WIN_STATUS_NDIS_REQUEST_ABORTED = 0xC023000C,
+  MD_NTSTATUS_WIN_STATUS_NDIS_RESET_IN_PROGRESS = 0xC023000D,
+  MD_NTSTATUS_WIN_STATUS_NDIS_INVALID_PACKET = 0xC023000F,
+  MD_NTSTATUS_WIN_STATUS_NDIS_INVALID_DEVICE_REQUEST = 0xC0230010,
+  MD_NTSTATUS_WIN_STATUS_NDIS_ADAPTER_NOT_READY = 0xC0230011,
+  MD_NTSTATUS_WIN_STATUS_NDIS_INVALID_LENGTH = 0xC0230014,
+  MD_NTSTATUS_WIN_STATUS_NDIS_INVALID_DATA = 0xC0230015,
+  MD_NTSTATUS_WIN_STATUS_NDIS_BUFFER_TOO_SHORT = 0xC0230016,
+  MD_NTSTATUS_WIN_STATUS_NDIS_INVALID_OID = 0xC0230017,
+  MD_NTSTATUS_WIN_STATUS_NDIS_ADAPTER_REMOVED = 0xC0230018,
+  MD_NTSTATUS_WIN_STATUS_NDIS_UNSUPPORTED_MEDIA = 0xC0230019,
+  MD_NTSTATUS_WIN_STATUS_NDIS_GROUP_ADDRESS_IN_USE = 0xC023001A,
+  MD_NTSTATUS_WIN_STATUS_NDIS_FILE_NOT_FOUND = 0xC023001B,
+  MD_NTSTATUS_WIN_STATUS_NDIS_ERROR_READING_FILE = 0xC023001C,
+  MD_NTSTATUS_WIN_STATUS_NDIS_ALREADY_MAPPED = 0xC023001D,
+  MD_NTSTATUS_WIN_STATUS_NDIS_RESOURCE_CONFLICT = 0xC023001E,
+  MD_NTSTATUS_WIN_STATUS_NDIS_MEDIA_DISCONNECTED = 0xC023001F,
+  MD_NTSTATUS_WIN_STATUS_NDIS_INVALID_ADDRESS = 0xC0230022,
+  MD_NTSTATUS_WIN_STATUS_NDIS_PAUSED = 0xC023002A,
+  MD_NTSTATUS_WIN_STATUS_NDIS_INTERFACE_NOT_FOUND = 0xC023002B,
+  MD_NTSTATUS_WIN_STATUS_NDIS_UNSUPPORTED_REVISION = 0xC023002C,
+  MD_NTSTATUS_WIN_STATUS_NDIS_INVALID_PORT = 0xC023002D,
+  MD_NTSTATUS_WIN_STATUS_NDIS_INVALID_PORT_STATE = 0xC023002E,
+  MD_NTSTATUS_WIN_STATUS_NDIS_LOW_POWER_STATE = 0xC023002F,
+  MD_NTSTATUS_WIN_STATUS_NDIS_REINIT_REQUIRED = 0xC0230030,
+  MD_NTSTATUS_WIN_STATUS_NDIS_NOT_SUPPORTED = 0xC02300BB,
+  MD_NTSTATUS_WIN_STATUS_NDIS_OFFLOAD_POLICY = 0xC023100F,
+  MD_NTSTATUS_WIN_STATUS_NDIS_OFFLOAD_CONNECTION_REJECTED = 0xC0231012,
+  MD_NTSTATUS_WIN_STATUS_NDIS_OFFLOAD_PATH_REJECTED = 0xC0231013,
+  MD_NTSTATUS_WIN_STATUS_NDIS_DOT11_AUTO_CONFIG_ENABLED = 0xC0232000,
+  MD_NTSTATUS_WIN_STATUS_NDIS_DOT11_MEDIA_IN_USE = 0xC0232001,
+  MD_NTSTATUS_WIN_STATUS_NDIS_DOT11_POWER_STATE_INVALID = 0xC0232002,
+  MD_NTSTATUS_WIN_STATUS_NDIS_PM_WOL_PATTERN_LIST_FULL = 0xC0232003,
+  MD_NTSTATUS_WIN_STATUS_NDIS_PM_PROTOCOL_OFFLOAD_LIST_FULL = 0xC0232004,
+  MD_NTSTATUS_WIN_STATUS_TPM_ERROR_MASK = 0xC0290000,
+  MD_NTSTATUS_WIN_STATUS_TPM_AUTHFAIL = 0xC0290001,
+  MD_NTSTATUS_WIN_STATUS_TPM_BADINDEX = 0xC0290002,
+  MD_NTSTATUS_WIN_STATUS_TPM_BAD_PARAMETER = 0xC0290003,
+  MD_NTSTATUS_WIN_STATUS_TPM_AUDITFAILURE = 0xC0290004,
+  MD_NTSTATUS_WIN_STATUS_TPM_CLEAR_DISABLED = 0xC0290005,
+  MD_NTSTATUS_WIN_STATUS_TPM_DEACTIVATED = 0xC0290006,
+  MD_NTSTATUS_WIN_STATUS_TPM_DISABLED = 0xC0290007,
+  MD_NTSTATUS_WIN_STATUS_TPM_DISABLED_CMD = 0xC0290008,
+  MD_NTSTATUS_WIN_STATUS_TPM_FAIL = 0xC0290009,
+  MD_NTSTATUS_WIN_STATUS_TPM_BAD_ORDINAL = 0xC029000A,
+  MD_NTSTATUS_WIN_STATUS_TPM_INSTALL_DISABLED = 0xC029000B,
+  MD_NTSTATUS_WIN_STATUS_TPM_INVALID_KEYHANDLE = 0xC029000C,
+  MD_NTSTATUS_WIN_STATUS_TPM_KEYNOTFOUND = 0xC029000D,
+  MD_NTSTATUS_WIN_STATUS_TPM_INAPPROPRIATE_ENC = 0xC029000E,
+  MD_NTSTATUS_WIN_STATUS_TPM_MIGRATEFAIL = 0xC029000F,
+  MD_NTSTATUS_WIN_STATUS_TPM_INVALID_PCR_INFO = 0xC0290010,
+  MD_NTSTATUS_WIN_STATUS_TPM_NOSPACE = 0xC0290011,
+  MD_NTSTATUS_WIN_STATUS_TPM_NOSRK = 0xC0290012,
+  MD_NTSTATUS_WIN_STATUS_TPM_NOTSEALED_BLOB = 0xC0290013,
+  MD_NTSTATUS_WIN_STATUS_TPM_OWNER_SET = 0xC0290014,
+  MD_NTSTATUS_WIN_STATUS_TPM_RESOURCES = 0xC0290015,
+  MD_NTSTATUS_WIN_STATUS_TPM_SHORTRANDOM = 0xC0290016,
+  MD_NTSTATUS_WIN_STATUS_TPM_SIZE = 0xC0290017,
+  MD_NTSTATUS_WIN_STATUS_TPM_WRONGPCRVAL = 0xC0290018,
+  MD_NTSTATUS_WIN_STATUS_TPM_BAD_PARAM_SIZE = 0xC0290019,
+  MD_NTSTATUS_WIN_STATUS_TPM_SHA_THREAD = 0xC029001A,
+  MD_NTSTATUS_WIN_STATUS_TPM_SHA_ERROR = 0xC029001B,
+  MD_NTSTATUS_WIN_STATUS_TPM_FAILEDSELFTEST = 0xC029001C,
+  MD_NTSTATUS_WIN_STATUS_TPM_AUTH2FAIL = 0xC029001D,
+  MD_NTSTATUS_WIN_STATUS_TPM_BADTAG = 0xC029001E,
+  MD_NTSTATUS_WIN_STATUS_TPM_IOERROR = 0xC029001F,
+  MD_NTSTATUS_WIN_STATUS_TPM_ENCRYPT_ERROR = 0xC0290020,
+  MD_NTSTATUS_WIN_STATUS_TPM_DECRYPT_ERROR = 0xC0290021,
+  MD_NTSTATUS_WIN_STATUS_TPM_INVALID_AUTHHANDLE = 0xC0290022,
+  MD_NTSTATUS_WIN_STATUS_TPM_NO_ENDORSEMENT = 0xC0290023,
+  MD_NTSTATUS_WIN_STATUS_TPM_INVALID_KEYUSAGE = 0xC0290024,
+  MD_NTSTATUS_WIN_STATUS_TPM_WRONG_ENTITYTYPE = 0xC0290025,
+  MD_NTSTATUS_WIN_STATUS_TPM_INVALID_POSTINIT = 0xC0290026,
+  MD_NTSTATUS_WIN_STATUS_TPM_INAPPROPRIATE_SIG = 0xC0290027,
+  MD_NTSTATUS_WIN_STATUS_TPM_BAD_KEY_PROPERTY = 0xC0290028,
+  MD_NTSTATUS_WIN_STATUS_TPM_BAD_MIGRATION = 0xC0290029,
+  MD_NTSTATUS_WIN_STATUS_TPM_BAD_SCHEME = 0xC029002A,
+  MD_NTSTATUS_WIN_STATUS_TPM_BAD_DATASIZE = 0xC029002B,
+  MD_NTSTATUS_WIN_STATUS_TPM_BAD_MODE = 0xC029002C,
+  MD_NTSTATUS_WIN_STATUS_TPM_BAD_PRESENCE = 0xC029002D,
+  MD_NTSTATUS_WIN_STATUS_TPM_BAD_VERSION = 0xC029002E,
+  MD_NTSTATUS_WIN_STATUS_TPM_NO_WRAP_TRANSPORT = 0xC029002F,
+  MD_NTSTATUS_WIN_STATUS_TPM_AUDITFAIL_UNSUCCESSFUL = 0xC0290030,
+  MD_NTSTATUS_WIN_STATUS_TPM_AUDITFAIL_SUCCESSFUL = 0xC0290031,
+  MD_NTSTATUS_WIN_STATUS_TPM_NOTRESETABLE = 0xC0290032,
+  MD_NTSTATUS_WIN_STATUS_TPM_NOTLOCAL = 0xC0290033,
+  MD_NTSTATUS_WIN_STATUS_TPM_BAD_TYPE = 0xC0290034,
+  MD_NTSTATUS_WIN_STATUS_TPM_INVALID_RESOURCE = 0xC0290035,
+  MD_NTSTATUS_WIN_STATUS_TPM_NOTFIPS = 0xC0290036,
+  MD_NTSTATUS_WIN_STATUS_TPM_INVALID_FAMILY = 0xC0290037,
+  MD_NTSTATUS_WIN_STATUS_TPM_NO_NV_PERMISSION = 0xC0290038,
+  MD_NTSTATUS_WIN_STATUS_TPM_REQUIRES_SIGN = 0xC0290039,
+  MD_NTSTATUS_WIN_STATUS_TPM_KEY_NOTSUPPORTED = 0xC029003A,
+  MD_NTSTATUS_WIN_STATUS_TPM_AUTH_CONFLICT = 0xC029003B,
+  MD_NTSTATUS_WIN_STATUS_TPM_AREA_LOCKED = 0xC029003C,
+  MD_NTSTATUS_WIN_STATUS_TPM_BAD_LOCALITY = 0xC029003D,
+  MD_NTSTATUS_WIN_STATUS_TPM_READ_ONLY = 0xC029003E,
+  MD_NTSTATUS_WIN_STATUS_TPM_PER_NOWRITE = 0xC029003F,
+  MD_NTSTATUS_WIN_STATUS_TPM_FAMILYCOUNT = 0xC0290040,
+  MD_NTSTATUS_WIN_STATUS_TPM_WRITE_LOCKED = 0xC0290041,
+  MD_NTSTATUS_WIN_STATUS_TPM_BAD_ATTRIBUTES = 0xC0290042,
+  MD_NTSTATUS_WIN_STATUS_TPM_INVALID_STRUCTURE = 0xC0290043,
+  MD_NTSTATUS_WIN_STATUS_TPM_KEY_OWNER_CONTROL = 0xC0290044,
+  MD_NTSTATUS_WIN_STATUS_TPM_BAD_COUNTER = 0xC0290045,
+  MD_NTSTATUS_WIN_STATUS_TPM_NOT_FULLWRITE = 0xC0290046,
+  MD_NTSTATUS_WIN_STATUS_TPM_CONTEXT_GAP = 0xC0290047,
+  MD_NTSTATUS_WIN_STATUS_TPM_MAXNVWRITES = 0xC0290048,
+  MD_NTSTATUS_WIN_STATUS_TPM_NOOPERATOR = 0xC0290049,
+  MD_NTSTATUS_WIN_STATUS_TPM_RESOURCEMISSING = 0xC029004A,
+  MD_NTSTATUS_WIN_STATUS_TPM_DELEGATE_LOCK = 0xC029004B,
+  MD_NTSTATUS_WIN_STATUS_TPM_DELEGATE_FAMILY = 0xC029004C,
+  MD_NTSTATUS_WIN_STATUS_TPM_DELEGATE_ADMIN = 0xC029004D,
+  MD_NTSTATUS_WIN_STATUS_TPM_TRANSPORT_NOTEXCLUSIVE = 0xC029004E,
+  MD_NTSTATUS_WIN_STATUS_TPM_OWNER_CONTROL = 0xC029004F,
+  MD_NTSTATUS_WIN_STATUS_TPM_DAA_RESOURCES = 0xC0290050,
+  MD_NTSTATUS_WIN_STATUS_TPM_DAA_INPUT_DATA0 = 0xC0290051,
+  MD_NTSTATUS_WIN_STATUS_TPM_DAA_INPUT_DATA1 = 0xC0290052,
+  MD_NTSTATUS_WIN_STATUS_TPM_DAA_ISSUER_SETTINGS = 0xC0290053,
+  MD_NTSTATUS_WIN_STATUS_TPM_DAA_TPM_SETTINGS = 0xC0290054,
+  MD_NTSTATUS_WIN_STATUS_TPM_DAA_STAGE = 0xC0290055,
+  MD_NTSTATUS_WIN_STATUS_TPM_DAA_ISSUER_VALIDITY = 0xC0290056,
+  MD_NTSTATUS_WIN_STATUS_TPM_DAA_WRONG_W = 0xC0290057,
+  MD_NTSTATUS_WIN_STATUS_TPM_BAD_HANDLE = 0xC0290058,
+  MD_NTSTATUS_WIN_STATUS_TPM_BAD_DELEGATE = 0xC0290059,
+  MD_NTSTATUS_WIN_STATUS_TPM_BADCONTEXT = 0xC029005A,
+  MD_NTSTATUS_WIN_STATUS_TPM_TOOMANYCONTEXTS = 0xC029005B,
+  MD_NTSTATUS_WIN_STATUS_TPM_MA_TICKET_SIGNATURE = 0xC029005C,
+  MD_NTSTATUS_WIN_STATUS_TPM_MA_DESTINATION = 0xC029005D,
+  MD_NTSTATUS_WIN_STATUS_TPM_MA_SOURCE = 0xC029005E,
+  MD_NTSTATUS_WIN_STATUS_TPM_MA_AUTHORITY = 0xC029005F,
+  MD_NTSTATUS_WIN_STATUS_TPM_PERMANENTEK = 0xC0290061,
+  MD_NTSTATUS_WIN_STATUS_TPM_BAD_SIGNATURE = 0xC0290062,
+  MD_NTSTATUS_WIN_STATUS_TPM_NOCONTEXTSPACE = 0xC0290063,
+  MD_NTSTATUS_WIN_STATUS_TPM_COMMAND_BLOCKED = 0xC0290400,
+  MD_NTSTATUS_WIN_STATUS_TPM_INVALID_HANDLE = 0xC0290401,
+  MD_NTSTATUS_WIN_STATUS_TPM_DUPLICATE_VHANDLE = 0xC0290402,
+  MD_NTSTATUS_WIN_STATUS_TPM_EMBEDDED_COMMAND_BLOCKED = 0xC0290403,
+  MD_NTSTATUS_WIN_STATUS_TPM_EMBEDDED_COMMAND_UNSUPPORTED = 0xC0290404,
+  MD_NTSTATUS_WIN_STATUS_TPM_RETRY = 0xC0290800,
+  MD_NTSTATUS_WIN_STATUS_TPM_NEEDS_SELFTEST = 0xC0290801,
+  MD_NTSTATUS_WIN_STATUS_TPM_DOING_SELFTEST = 0xC0290802,
+  MD_NTSTATUS_WIN_STATUS_TPM_DEFEND_LOCK_RUNNING = 0xC0290803,
+  MD_NTSTATUS_WIN_STATUS_TPM_COMMAND_CANCELED = 0xC0291001,
+  MD_NTSTATUS_WIN_STATUS_TPM_TOO_MANY_CONTEXTS = 0xC0291002,
+  MD_NTSTATUS_WIN_STATUS_TPM_NOT_FOUND = 0xC0291003,
+  MD_NTSTATUS_WIN_STATUS_TPM_ACCESS_DENIED = 0xC0291004,
+  MD_NTSTATUS_WIN_STATUS_TPM_INSUFFICIENT_BUFFER = 0xC0291005,
+  MD_NTSTATUS_WIN_STATUS_TPM_PPI_FUNCTION_UNSUPPORTED = 0xC0291006,
+  MD_NTSTATUS_WIN_STATUS_PCP_ERROR_MASK = 0xC0292000,
+  MD_NTSTATUS_WIN_STATUS_PCP_DEVICE_NOT_READY = 0xC0292001,
+  MD_NTSTATUS_WIN_STATUS_PCP_INVALID_HANDLE = 0xC0292002,
+  MD_NTSTATUS_WIN_STATUS_PCP_INVALID_PARAMETER = 0xC0292003,
+  MD_NTSTATUS_WIN_STATUS_PCP_FLAG_NOT_SUPPORTED = 0xC0292004,
+  MD_NTSTATUS_WIN_STATUS_PCP_NOT_SUPPORTED = 0xC0292005,
+  MD_NTSTATUS_WIN_STATUS_PCP_BUFFER_TOO_SMALL = 0xC0292006,
+  MD_NTSTATUS_WIN_STATUS_PCP_INTERNAL_ERROR = 0xC0292007,
+  MD_NTSTATUS_WIN_STATUS_PCP_AUTHENTICATION_FAILED = 0xC0292008,
+  MD_NTSTATUS_WIN_STATUS_PCP_AUTHENTICATION_IGNORED = 0xC0292009,
+  MD_NTSTATUS_WIN_STATUS_PCP_POLICY_NOT_FOUND = 0xC029200A,
+  MD_NTSTATUS_WIN_STATUS_PCP_PROFILE_NOT_FOUND = 0xC029200B,
+  MD_NTSTATUS_WIN_STATUS_PCP_VALIDATION_FAILED = 0xC029200C,
+  MD_NTSTATUS_WIN_STATUS_PCP_DEVICE_NOT_FOUND = 0xC029200D,
+  MD_NTSTATUS_WIN_STATUS_HV_INVALID_HYPERCALL_CODE = 0xC0350002,
+  MD_NTSTATUS_WIN_STATUS_HV_INVALID_HYPERCALL_INPUT = 0xC0350003,
+  MD_NTSTATUS_WIN_STATUS_HV_INVALID_ALIGNMENT = 0xC0350004,
+  MD_NTSTATUS_WIN_STATUS_HV_INVALID_PARAMETER = 0xC0350005,
+  MD_NTSTATUS_WIN_STATUS_HV_ACCESS_DENIED = 0xC0350006,
+  MD_NTSTATUS_WIN_STATUS_HV_INVALID_PARTITION_STATE = 0xC0350007,
+  MD_NTSTATUS_WIN_STATUS_HV_OPERATION_DENIED = 0xC0350008,
+  MD_NTSTATUS_WIN_STATUS_HV_UNKNOWN_PROPERTY = 0xC0350009,
+  MD_NTSTATUS_WIN_STATUS_HV_PROPERTY_VALUE_OUT_OF_RANGE = 0xC035000A,
+  MD_NTSTATUS_WIN_STATUS_HV_INSUFFICIENT_MEMORY = 0xC035000B,
+  MD_NTSTATUS_WIN_STATUS_HV_PARTITION_TOO_DEEP = 0xC035000C,
+  MD_NTSTATUS_WIN_STATUS_HV_INVALID_PARTITION_ID = 0xC035000D,
+  MD_NTSTATUS_WIN_STATUS_HV_INVALID_VP_INDEX = 0xC035000E,
+  MD_NTSTATUS_WIN_STATUS_HV_INVALID_PORT_ID = 0xC0350011,
+  MD_NTSTATUS_WIN_STATUS_HV_INVALID_CONNECTION_ID = 0xC0350012,
+  MD_NTSTATUS_WIN_STATUS_HV_INSUFFICIENT_BUFFERS = 0xC0350013,
+  MD_NTSTATUS_WIN_STATUS_HV_NOT_ACKNOWLEDGED = 0xC0350014,
+  MD_NTSTATUS_WIN_STATUS_HV_ACKNOWLEDGED = 0xC0350016,
+  MD_NTSTATUS_WIN_STATUS_HV_INVALID_SAVE_RESTORE_STATE = 0xC0350017,
+  MD_NTSTATUS_WIN_STATUS_HV_INVALID_SYNIC_STATE = 0xC0350018,
+  MD_NTSTATUS_WIN_STATUS_HV_OBJECT_IN_USE = 0xC0350019,
+  MD_NTSTATUS_WIN_STATUS_HV_INVALID_PROXIMITY_DOMAIN_INFO = 0xC035001A,
+  MD_NTSTATUS_WIN_STATUS_HV_NO_DATA = 0xC035001B,
+  MD_NTSTATUS_WIN_STATUS_HV_INACTIVE = 0xC035001C,
+  MD_NTSTATUS_WIN_STATUS_HV_NO_RESOURCES = 0xC035001D,
+  MD_NTSTATUS_WIN_STATUS_HV_FEATURE_UNAVAILABLE = 0xC035001E,
+  MD_NTSTATUS_WIN_STATUS_HV_INSUFFICIENT_BUFFER = 0xC0350033,
+  MD_NTSTATUS_WIN_STATUS_HV_INSUFFICIENT_DEVICE_DOMAINS = 0xC0350038,
+  MD_NTSTATUS_WIN_STATUS_HV_INVALID_LP_INDEX = 0xC0350041,
+  MD_NTSTATUS_WIN_STATUS_HV_NOT_PRESENT = 0xC0351000,
+  MD_NTSTATUS_WIN_STATUS_IPSEC_BAD_SPI = 0xC0360001,
+  MD_NTSTATUS_WIN_STATUS_IPSEC_SA_LIFETIME_EXPIRED = 0xC0360002,
+  MD_NTSTATUS_WIN_STATUS_IPSEC_WRONG_SA = 0xC0360003,
+  MD_NTSTATUS_WIN_STATUS_IPSEC_REPLAY_CHECK_FAILED = 0xC0360004,
+  MD_NTSTATUS_WIN_STATUS_IPSEC_INVALID_PACKET = 0xC0360005,
+  MD_NTSTATUS_WIN_STATUS_IPSEC_INTEGRITY_CHECK_FAILED = 0xC0360006,
+  MD_NTSTATUS_WIN_STATUS_IPSEC_CLEAR_TEXT_DROP = 0xC0360007,
+  MD_NTSTATUS_WIN_STATUS_IPSEC_AUTH_FIREWALL_DROP = 0xC0360008,
+  MD_NTSTATUS_WIN_STATUS_IPSEC_THROTTLE_DROP = 0xC0360009,
+  MD_NTSTATUS_WIN_STATUS_IPSEC_DOSP_BLOCK = 0xC0368000,
+  MD_NTSTATUS_WIN_STATUS_IPSEC_DOSP_RECEIVED_MULTICAST = 0xC0368001,
+  MD_NTSTATUS_WIN_STATUS_IPSEC_DOSP_INVALID_PACKET = 0xC0368002,
+  MD_NTSTATUS_WIN_STATUS_IPSEC_DOSP_STATE_LOOKUP_FAILED = 0xC0368003,
+  MD_NTSTATUS_WIN_STATUS_IPSEC_DOSP_MAX_ENTRIES = 0xC0368004,
+  MD_NTSTATUS_WIN_STATUS_IPSEC_DOSP_KEYMOD_NOT_ALLOWED = 0xC0368005,
+  MD_NTSTATUS_WIN_STATUS_IPSEC_DOSP_MAX_PER_IP_RATELIMIT_QUEUES = 0xC0368006,
+  MD_NTSTATUS_WIN_STATUS_VID_DUPLICATE_HANDLER = 0xC0370001,
+  MD_NTSTATUS_WIN_STATUS_VID_TOO_MANY_HANDLERS = 0xC0370002,
+  MD_NTSTATUS_WIN_STATUS_VID_QUEUE_FULL = 0xC0370003,
+  MD_NTSTATUS_WIN_STATUS_VID_HANDLER_NOT_PRESENT = 0xC0370004,
+  MD_NTSTATUS_WIN_STATUS_VID_INVALID_OBJECT_NAME = 0xC0370005,
+  MD_NTSTATUS_WIN_STATUS_VID_PARTITION_NAME_TOO_LONG = 0xC0370006,
+  MD_NTSTATUS_WIN_STATUS_VID_MESSAGE_QUEUE_NAME_TOO_LONG = 0xC0370007,
+  MD_NTSTATUS_WIN_STATUS_VID_PARTITION_ALREADY_EXISTS = 0xC0370008,
+  MD_NTSTATUS_WIN_STATUS_VID_PARTITION_DOES_NOT_EXIST = 0xC0370009,
+  MD_NTSTATUS_WIN_STATUS_VID_PARTITION_NAME_NOT_FOUND = 0xC037000A,
+  MD_NTSTATUS_WIN_STATUS_VID_MESSAGE_QUEUE_ALREADY_EXISTS = 0xC037000B,
+  MD_NTSTATUS_WIN_STATUS_VID_EXCEEDED_MBP_ENTRY_MAP_LIMIT = 0xC037000C,
+  MD_NTSTATUS_WIN_STATUS_VID_MB_STILL_REFERENCED = 0xC037000D,
+  MD_NTSTATUS_WIN_STATUS_VID_CHILD_GPA_PAGE_SET_CORRUPTED = 0xC037000E,
+  MD_NTSTATUS_WIN_STATUS_VID_INVALID_NUMA_SETTINGS = 0xC037000F,
+  MD_NTSTATUS_WIN_STATUS_VID_INVALID_NUMA_NODE_INDEX = 0xC0370010,
+  MD_NTSTATUS_WIN_STATUS_VID_NOTIFICATION_QUEUE_ALREADY_ASSOCIATED = 0xC0370011,
+  MD_NTSTATUS_WIN_STATUS_VID_INVALID_MEMORY_BLOCK_HANDLE = 0xC0370012,
+  MD_NTSTATUS_WIN_STATUS_VID_PAGE_RANGE_OVERFLOW = 0xC0370013,
+  MD_NTSTATUS_WIN_STATUS_VID_INVALID_MESSAGE_QUEUE_HANDLE = 0xC0370014,
+  MD_NTSTATUS_WIN_STATUS_VID_INVALID_GPA_RANGE_HANDLE = 0xC0370015,
+  MD_NTSTATUS_WIN_STATUS_VID_NO_MEMORY_BLOCK_NOTIFICATION_QUEUE = 0xC0370016,
+  MD_NTSTATUS_WIN_STATUS_VID_MEMORY_BLOCK_LOCK_COUNT_EXCEEDED = 0xC0370017,
+  MD_NTSTATUS_WIN_STATUS_VID_INVALID_PPM_HANDLE = 0xC0370018,
+  MD_NTSTATUS_WIN_STATUS_VID_MBPS_ARE_LOCKED = 0xC0370019,
+  MD_NTSTATUS_WIN_STATUS_VID_MESSAGE_QUEUE_CLOSED = 0xC037001A,
+  MD_NTSTATUS_WIN_STATUS_VID_VIRTUAL_PROCESSOR_LIMIT_EXCEEDED = 0xC037001B,
+  MD_NTSTATUS_WIN_STATUS_VID_STOP_PENDING = 0xC037001C,
+  MD_NTSTATUS_WIN_STATUS_VID_INVALID_PROCESSOR_STATE = 0xC037001D,
+  MD_NTSTATUS_WIN_STATUS_VID_EXCEEDED_KM_CONTEXT_COUNT_LIMIT = 0xC037001E,
+  MD_NTSTATUS_WIN_STATUS_VID_KM_INTERFACE_ALREADY_INITIALIZED = 0xC037001F,
+  MD_NTSTATUS_WIN_STATUS_VID_MB_PROPERTY_ALREADY_SET_RESET = 0xC0370020,
+  MD_NTSTATUS_WIN_STATUS_VID_MMIO_RANGE_DESTROYED = 0xC0370021,
+  MD_NTSTATUS_WIN_STATUS_VID_INVALID_CHILD_GPA_PAGE_SET = 0xC0370022,
+  MD_NTSTATUS_WIN_STATUS_VID_RESERVE_PAGE_SET_IS_BEING_USED = 0xC0370023,
+  MD_NTSTATUS_WIN_STATUS_VID_RESERVE_PAGE_SET_TOO_SMALL = 0xC0370024,
+  MD_NTSTATUS_WIN_STATUS_VID_MBP_ALREADY_LOCKED_USING_RESERVED_PAGE = 0xC0370025,
+  MD_NTSTATUS_WIN_STATUS_VID_MBP_COUNT_EXCEEDED_LIMIT = 0xC0370026,
+  MD_NTSTATUS_WIN_STATUS_VID_SAVED_STATE_CORRUPT = 0xC0370027,
+  MD_NTSTATUS_WIN_STATUS_VID_SAVED_STATE_UNRECOGNIZED_ITEM = 0xC0370028,
+  MD_NTSTATUS_WIN_STATUS_VID_SAVED_STATE_INCOMPATIBLE = 0xC0370029,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_DATABASE_FULL = 0xC0380001,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_DISK_CONFIGURATION_CORRUPTED = 0xC0380002,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_DISK_CONFIGURATION_NOT_IN_SYNC = 0xC0380003,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_PACK_CONFIG_UPDATE_FAILED = 0xC0380004,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_DISK_CONTAINS_NON_SIMPLE_VOLUME = 0xC0380005,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_DISK_DUPLICATE = 0xC0380006,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_DISK_DYNAMIC = 0xC0380007,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_DISK_ID_INVALID = 0xC0380008,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_DISK_INVALID = 0xC0380009,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_DISK_LAST_VOTER = 0xC038000A,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_DISK_LAYOUT_INVALID = 0xC038000B,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_DISK_LAYOUT_NON_BASIC_BETWEEN_BASIC_PARTITIONS = 0xC038000C,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_DISK_LAYOUT_NOT_CYLINDER_ALIGNED = 0xC038000D,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_DISK_LAYOUT_PARTITIONS_TOO_SMALL = 0xC038000E,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_DISK_LAYOUT_PRIMARY_BETWEEN_LOGICAL_PARTITIONS = 0xC038000F,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_DISK_LAYOUT_TOO_MANY_PARTITIONS = 0xC0380010,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_DISK_MISSING = 0xC0380011,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_DISK_NOT_EMPTY = 0xC0380012,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_DISK_NOT_ENOUGH_SPACE = 0xC0380013,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_DISK_REVECTORING_FAILED = 0xC0380014,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_DISK_SECTOR_SIZE_INVALID = 0xC0380015,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_DISK_SET_NOT_CONTAINED = 0xC0380016,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_DISK_USED_BY_MULTIPLE_MEMBERS = 0xC0380017,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_DISK_USED_BY_MULTIPLE_PLEXES = 0xC0380018,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_DYNAMIC_DISK_NOT_SUPPORTED = 0xC0380019,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_EXTENT_ALREADY_USED = 0xC038001A,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_EXTENT_NOT_CONTIGUOUS = 0xC038001B,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_EXTENT_NOT_IN_PUBLIC_REGION = 0xC038001C,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_EXTENT_NOT_SECTOR_ALIGNED = 0xC038001D,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_EXTENT_OVERLAPS_EBR_PARTITION = 0xC038001E,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_EXTENT_VOLUME_LENGTHS_DO_NOT_MATCH = 0xC038001F,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_FAULT_TOLERANT_NOT_SUPPORTED = 0xC0380020,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_INTERLEAVE_LENGTH_INVALID = 0xC0380021,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_MAXIMUM_REGISTERED_USERS = 0xC0380022,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_MEMBER_IN_SYNC = 0xC0380023,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_MEMBER_INDEX_DUPLICATE = 0xC0380024,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_MEMBER_INDEX_INVALID = 0xC0380025,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_MEMBER_MISSING = 0xC0380026,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_MEMBER_NOT_DETACHED = 0xC0380027,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_MEMBER_REGENERATING = 0xC0380028,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_ALL_DISKS_FAILED = 0xC0380029,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_NO_REGISTERED_USERS = 0xC038002A,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_NO_SUCH_USER = 0xC038002B,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_NOTIFICATION_RESET = 0xC038002C,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_NUMBER_OF_MEMBERS_INVALID = 0xC038002D,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_NUMBER_OF_PLEXES_INVALID = 0xC038002E,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_PACK_DUPLICATE = 0xC038002F,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_PACK_ID_INVALID = 0xC0380030,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_PACK_INVALID = 0xC0380031,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_PACK_NAME_INVALID = 0xC0380032,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_PACK_OFFLINE = 0xC0380033,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_PACK_HAS_QUORUM = 0xC0380034,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_PACK_WITHOUT_QUORUM = 0xC0380035,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_PARTITION_STYLE_INVALID = 0xC0380036,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_PARTITION_UPDATE_FAILED = 0xC0380037,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_PLEX_IN_SYNC = 0xC0380038,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_PLEX_INDEX_DUPLICATE = 0xC0380039,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_PLEX_INDEX_INVALID = 0xC038003A,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_PLEX_LAST_ACTIVE = 0xC038003B,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_PLEX_MISSING = 0xC038003C,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_PLEX_REGENERATING = 0xC038003D,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_PLEX_TYPE_INVALID = 0xC038003E,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_PLEX_NOT_RAID5 = 0xC038003F,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_PLEX_NOT_SIMPLE = 0xC0380040,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_STRUCTURE_SIZE_INVALID = 0xC0380041,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_TOO_MANY_NOTIFICATION_REQUESTS = 0xC0380042,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_TRANSACTION_IN_PROGRESS = 0xC0380043,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_UNEXPECTED_DISK_LAYOUT_CHANGE = 0xC0380044,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_VOLUME_CONTAINS_MISSING_DISK = 0xC0380045,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_VOLUME_ID_INVALID = 0xC0380046,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_VOLUME_LENGTH_INVALID = 0xC0380047,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_VOLUME_LENGTH_NOT_SECTOR_SIZE_MULTIPLE = 0xC0380048,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_VOLUME_NOT_MIRRORED = 0xC0380049,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_VOLUME_NOT_RETAINED = 0xC038004A,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_VOLUME_OFFLINE = 0xC038004B,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_VOLUME_RETAINED = 0xC038004C,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_NUMBER_OF_EXTENTS_INVALID = 0xC038004D,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_DIFFERENT_SECTOR_SIZE = 0xC038004E,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_BAD_BOOT_DISK = 0xC038004F,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_PACK_CONFIG_OFFLINE = 0xC0380050,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_PACK_CONFIG_ONLINE = 0xC0380051,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_NOT_PRIMARY_PACK = 0xC0380052,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_PACK_LOG_UPDATE_FAILED = 0xC0380053,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_NUMBER_OF_DISKS_IN_PLEX_INVALID = 0xC0380054,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_NUMBER_OF_DISKS_IN_MEMBER_INVALID = 0xC0380055,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_VOLUME_MIRRORED = 0xC0380056,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_PLEX_NOT_SIMPLE_SPANNED = 0xC0380057,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_NO_VALID_LOG_COPIES = 0xC0380058,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_PRIMARY_PACK_PRESENT = 0xC0380059,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_NUMBER_OF_DISKS_INVALID = 0xC038005A,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_MIRROR_NOT_SUPPORTED = 0xC038005B,
+  MD_NTSTATUS_WIN_STATUS_VOLMGR_RAID5_NOT_SUPPORTED = 0xC038005C,
+  MD_NTSTATUS_WIN_STATUS_BCD_TOO_MANY_ELEMENTS = 0xC0390002,
+  MD_NTSTATUS_WIN_STATUS_VHD_DRIVE_FOOTER_MISSING = 0xC03A0001,
+  MD_NTSTATUS_WIN_STATUS_VHD_DRIVE_FOOTER_CHECKSUM_MISMATCH = 0xC03A0002,
+  MD_NTSTATUS_WIN_STATUS_VHD_DRIVE_FOOTER_CORRUPT = 0xC03A0003,
+  MD_NTSTATUS_WIN_STATUS_VHD_FORMAT_UNKNOWN = 0xC03A0004,
+  MD_NTSTATUS_WIN_STATUS_VHD_FORMAT_UNSUPPORTED_VERSION = 0xC03A0005,
+  MD_NTSTATUS_WIN_STATUS_VHD_SPARSE_HEADER_CHECKSUM_MISMATCH = 0xC03A0006,
+  MD_NTSTATUS_WIN_STATUS_VHD_SPARSE_HEADER_UNSUPPORTED_VERSION = 0xC03A0007,
+  MD_NTSTATUS_WIN_STATUS_VHD_SPARSE_HEADER_CORRUPT = 0xC03A0008,
+  MD_NTSTATUS_WIN_STATUS_VHD_BLOCK_ALLOCATION_FAILURE = 0xC03A0009,
+  MD_NTSTATUS_WIN_STATUS_VHD_BLOCK_ALLOCATION_TABLE_CORRUPT = 0xC03A000A,
+  MD_NTSTATUS_WIN_STATUS_VHD_INVALID_BLOCK_SIZE = 0xC03A000B,
+  MD_NTSTATUS_WIN_STATUS_VHD_BITMAP_MISMATCH = 0xC03A000C,
+  MD_NTSTATUS_WIN_STATUS_VHD_PARENT_VHD_NOT_FOUND = 0xC03A000D,
+  MD_NTSTATUS_WIN_STATUS_VHD_CHILD_PARENT_ID_MISMATCH = 0xC03A000E,
+  MD_NTSTATUS_WIN_STATUS_VHD_CHILD_PARENT_TIMESTAMP_MISMATCH = 0xC03A000F,
+  MD_NTSTATUS_WIN_STATUS_VHD_METADATA_READ_FAILURE = 0xC03A0010,
+  MD_NTSTATUS_WIN_STATUS_VHD_METADATA_WRITE_FAILURE = 0xC03A0011,
+  MD_NTSTATUS_WIN_STATUS_VHD_INVALID_SIZE = 0xC03A0012,
+  MD_NTSTATUS_WIN_STATUS_VHD_INVALID_FILE_SIZE = 0xC03A0013,
+  MD_NTSTATUS_WIN_STATUS_VIRTDISK_PROVIDER_NOT_FOUND = 0xC03A0014,
+  MD_NTSTATUS_WIN_STATUS_VIRTDISK_NOT_VIRTUAL_DISK = 0xC03A0015,
+  MD_NTSTATUS_WIN_STATUS_VHD_PARENT_VHD_ACCESS_DENIED = 0xC03A0016,
+  MD_NTSTATUS_WIN_STATUS_VHD_CHILD_PARENT_SIZE_MISMATCH = 0xC03A0017,
+  MD_NTSTATUS_WIN_STATUS_VHD_DIFFERENCING_CHAIN_CYCLE_DETECTED = 0xC03A0018,
+  MD_NTSTATUS_WIN_STATUS_VHD_DIFFERENCING_CHAIN_ERROR_IN_PARENT = 0xC03A0019,
+  MD_NTSTATUS_WIN_STATUS_VIRTUAL_DISK_LIMITATION = 0xC03A001A,
+  MD_NTSTATUS_WIN_STATUS_VHD_INVALID_TYPE = 0xC03A001B,
+  MD_NTSTATUS_WIN_STATUS_VHD_INVALID_STATE = 0xC03A001C,
+  MD_NTSTATUS_WIN_STATUS_VIRTDISK_UNSUPPORTED_DISK_SECTOR_SIZE = 0xC03A001D,
+  MD_NTSTATUS_WIN_STATUS_VIRTDISK_DISK_ALREADY_OWNED = 0xC03A001E,
+  MD_NTSTATUS_WIN_STATUS_VIRTDISK_DISK_ONLINE_AND_WRITABLE = 0xC03A001F,
+  MD_NTSTATUS_WIN_STATUS_CTLOG_TRACKING_NOT_INITIALIZED = 0xC03A0020,
+  MD_NTSTATUS_WIN_STATUS_CTLOG_LOGFILE_SIZE_EXCEEDED_MAXSIZE = 0xC03A0021,
+  MD_NTSTATUS_WIN_STATUS_CTLOG_VHD_CHANGED_OFFLINE = 0xC03A0022,
+  MD_NTSTATUS_WIN_STATUS_CTLOG_INVALID_TRACKING_STATE = 0xC03A0023,
+  MD_NTSTATUS_WIN_STATUS_CTLOG_INCONSISTENT_TRACKING_FILE = 0xC03A0024,
+  MD_NTSTATUS_WIN_STATUS_VHD_METADATA_FULL = 0xC03A0028,
+  MD_NTSTATUS_WIN_STATUS_RKF_KEY_NOT_FOUND = 0xC0400001,
+  MD_NTSTATUS_WIN_STATUS_RKF_DUPLICATE_KEY = 0xC0400002,
+  MD_NTSTATUS_WIN_STATUS_RKF_BLOB_FULL = 0xC0400003,
+  MD_NTSTATUS_WIN_STATUS_RKF_STORE_FULL = 0xC0400004,
+  MD_NTSTATUS_WIN_STATUS_RKF_FILE_BLOCKED = 0xC0400005,
+  MD_NTSTATUS_WIN_STATUS_RKF_ACTIVE_KEY = 0xC0400006,
+  MD_NTSTATUS_WIN_STATUS_RDBSS_RESTART_OPERATION = 0xC0410001,
+  MD_NTSTATUS_WIN_STATUS_RDBSS_CONTINUE_OPERATION = 0xC0410002,
+  MD_NTSTATUS_WIN_STATUS_RDBSS_POST_OPERATION = 0xC0410003,
+  MD_NTSTATUS_WIN_STATUS_BTH_ATT_INVALID_HANDLE = 0xC0420001,
+  MD_NTSTATUS_WIN_STATUS_BTH_ATT_READ_NOT_PERMITTED = 0xC0420002,
+  MD_NTSTATUS_WIN_STATUS_BTH_ATT_WRITE_NOT_PERMITTED = 0xC0420003,
+  MD_NTSTATUS_WIN_STATUS_BTH_ATT_INVALID_PDU = 0xC0420004,
+  MD_NTSTATUS_WIN_STATUS_BTH_ATT_INSUFFICIENT_AUTHENTICATION = 0xC0420005,
+  MD_NTSTATUS_WIN_STATUS_BTH_ATT_REQUEST_NOT_SUPPORTED = 0xC0420006,
+  MD_NTSTATUS_WIN_STATUS_BTH_ATT_INVALID_OFFSET = 0xC0420007,
+  MD_NTSTATUS_WIN_STATUS_BTH_ATT_INSUFFICIENT_AUTHORIZATION = 0xC0420008,
+  MD_NTSTATUS_WIN_STATUS_BTH_ATT_PREPARE_QUEUE_FULL = 0xC0420009,
+  MD_NTSTATUS_WIN_STATUS_BTH_ATT_ATTRIBUTE_NOT_FOUND = 0xC042000A,
+  MD_NTSTATUS_WIN_STATUS_BTH_ATT_ATTRIBUTE_NOT_LONG = 0xC042000B,
+  MD_NTSTATUS_WIN_STATUS_BTH_ATT_INSUFFICIENT_ENCRYPTION_KEY_SIZE = 0xC042000C,
+  MD_NTSTATUS_WIN_STATUS_BTH_ATT_INVALID_ATTRIBUTE_VALUE_LENGTH = 0xC042000D,
+  MD_NTSTATUS_WIN_STATUS_BTH_ATT_UNLIKELY = 0xC042000E,
+  MD_NTSTATUS_WIN_STATUS_BTH_ATT_INSUFFICIENT_ENCRYPTION = 0xC042000F,
+  MD_NTSTATUS_WIN_STATUS_BTH_ATT_UNSUPPORTED_GROUP_TYPE = 0xC0420010,
+  MD_NTSTATUS_WIN_STATUS_BTH_ATT_INSUFFICIENT_RESOURCES = 0xC0420011,
+  MD_NTSTATUS_WIN_STATUS_BTH_ATT_UNKNOWN_ERROR = 0xC0421000,
+  MD_NTSTATUS_WIN_STATUS_SECUREBOOT_ROLLBACK_DETECTED = 0xC0430001,
+  MD_NTSTATUS_WIN_STATUS_SECUREBOOT_POLICY_VIOLATION = 0xC0430002,
+  MD_NTSTATUS_WIN_STATUS_SECUREBOOT_INVALID_POLICY = 0xC0430003,
+  MD_NTSTATUS_WIN_STATUS_SECUREBOOT_POLICY_PUBLISHER_NOT_FOUND = 0xC0430004,
+  MD_NTSTATUS_WIN_STATUS_SECUREBOOT_POLICY_NOT_SIGNED = 0xC0430005,
+  MD_NTSTATUS_WIN_STATUS_SECUREBOOT_FILE_REPLACED = 0xC0430007,
+  MD_NTSTATUS_WIN_STATUS_AUDIO_ENGINE_NODE_NOT_FOUND = 0xC0440001,
+  MD_NTSTATUS_WIN_STATUS_HDAUDIO_EMPTY_CONNECTION_LIST = 0xC0440002,
+  MD_NTSTATUS_WIN_STATUS_HDAUDIO_CONNECTION_LIST_NOT_SUPPORTED = 0xC0440003,
+  MD_NTSTATUS_WIN_STATUS_HDAUDIO_NO_LOGICAL_DEVICES_CREATED = 0xC0440004,
+  MD_NTSTATUS_WIN_STATUS_HDAUDIO_NULL_LINKED_LIST_ENTRY = 0xC0440005,
+  MD_NTSTATUS_WIN_STATUS_VOLSNAP_BOOTFILE_NOT_VALID = 0xC0500003,
+  MD_NTSTATUS_WIN_STATUS_IO_PREEMPTED = 0xC0510001,
+  MD_NTSTATUS_WIN_STATUS_SVHDX_ERROR_STORED = 0xC05C0000,
+  MD_NTSTATUS_WIN_STATUS_SVHDX_ERROR_NOT_AVAILABLE = 0xC05CFF00,
+  MD_NTSTATUS_WIN_STATUS_SVHDX_UNIT_ATTENTION_AVAILABLE = 0xC05CFF01,
+  MD_NTSTATUS_WIN_STATUS_SVHDX_UNIT_ATTENTION_CAPACITY_DATA_CHANGED = 0xC05CFF02,
+  MD_NTSTATUS_WIN_STATUS_SVHDX_UNIT_ATTENTION_RESERVATIONS_PREEMPTED = 0xC05CFF03,
+  MD_NTSTATUS_WIN_STATUS_SVHDX_UNIT_ATTENTION_RESERVATIONS_RELEASED = 0xC05CFF04,
+  MD_NTSTATUS_WIN_STATUS_SVHDX_UNIT_ATTENTION_REGISTRATIONS_PREEMPTED = 0xC05CFF05,
+  MD_NTSTATUS_WIN_STATUS_SVHDX_UNIT_ATTENTION_OPERATING_DEFINITION_CHANGED = 0xC05CFF06,
+  MD_NTSTATUS_WIN_STATUS_SVHDX_RESERVATION_CONFLICT = 0xC05CFF07,
+  MD_NTSTATUS_WIN_STATUS_SVHDX_WRONG_FILE_TYPE = 0xC05CFF08,
+  MD_NTSTATUS_WIN_STATUS_SVHDX_VERSION_MISMATCH = 0xC05CFF09,
+  MD_NTSTATUS_WIN_STATUS_VHD_SHARED = 0xC05CFF0A,
+  MD_NTSTATUS_WIN_STATUS_SPACES_RESILIENCY_TYPE_INVALID = 0xC0E70003,
+  MD_NTSTATUS_WIN_STATUS_SPACES_DRIVE_SECTOR_SIZE_INVALID = 0xC0E70004,
+  MD_NTSTATUS_WIN_STATUS_SPACES_INTERLEAVE_LENGTH_INVALID = 0xC0E70009,
+  MD_NTSTATUS_WIN_STATUS_SPACES_NUMBER_OF_COLUMNS_INVALID = 0xC0E7000A,
+  MD_NTSTATUS_WIN_STATUS_SPACES_NOT_ENOUGH_DRIVES = 0xC0E7000B
+} MDNTStatusCodeWin;
+
+// These constants are defined in the MSDN documentation of
+// the EXCEPTION_RECORD structure.
+typedef enum {
+  MD_ACCESS_VIOLATION_WIN_READ  = 0,
+  MD_ACCESS_VIOLATION_WIN_WRITE = 1,
+  MD_ACCESS_VIOLATION_WIN_EXEC  = 8
+} MDAccessViolationTypeWin;
+
+// These constants are defined in the MSDN documentation of
+// the EXCEPTION_RECORD structure.
+typedef enum {
+  MD_IN_PAGE_ERROR_WIN_READ  = 0,
+  MD_IN_PAGE_ERROR_WIN_WRITE = 1,
+  MD_IN_PAGE_ERROR_WIN_EXEC  = 8
+} MDInPageErrorTypeWin;
+
+#endif  /* GOOGLE_BREAKPAD_COMMON_MINIDUMP_EXCEPTION_WIN32_H__ */
diff --git a/google-breakpad/src/google_breakpad/common/minidump_format.h b/google-breakpad/src/google_breakpad/common/minidump_format.h
new file mode 100644
index 0000000..17a5abb
--- /dev/null
+++ b/google-breakpad/src/google_breakpad/common/minidump_format.h
@@ -0,0 +1,972 @@
+/* Copyright (c) 2006, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
+
+/* minidump_format.h: A cross-platform reimplementation of minidump-related
+ * portions of DbgHelp.h from the Windows Platform SDK.
+ *
+ * (This is C99 source, please don't corrupt it with C++.)
+ *
+ * Structures that are defined by Microsoft to contain a zero-length array
+ * are instead defined here to contain an array with one element, as
+ * zero-length arrays are forbidden by standard C and C++.  In these cases,
+ * *_minsize constants are provided to be used in place of sizeof.  For a
+ * cleaner interface to these sizes when using C++, see minidump_size.h.
+ *
+ * These structures are also sufficient to populate minidump files.
+ *
+ * These definitions may be extended to support handling minidump files
+ * for other CPUs and other operating systems.
+ *
+ * Because precise data type sizes are crucial for this implementation to
+ * function properly and portably in terms of interoperability with minidumps
+ * produced by DbgHelp on Windows, a set of primitive types with known sizes
+ * are used as the basis of each structure defined by this file.  DbgHelp
+ * on Windows is assumed to be the reference implementation; this file
+ * seeks to provide a cross-platform compatible implementation.  To avoid
+ * collisions with the types and values defined and used by DbgHelp in the
+ * event that this implementation is used on Windows, each type and value
+ * defined here is given a new name, beginning with "MD".  Names of the
+ * equivalent types and values in the Windows Platform SDK are given in
+ * comments.
+ *
+ * Author: Mark Mentovai */
+
+
+#ifndef GOOGLE_BREAKPAD_COMMON_MINIDUMP_FORMAT_H__
+#define GOOGLE_BREAKPAD_COMMON_MINIDUMP_FORMAT_H__
+
+#include <stddef.h>
+
+#include "google_breakpad/common/breakpad_types.h"
+
+
+#if defined(_MSC_VER)
+/* Disable "zero-sized array in struct/union" warnings when compiling in
+ * MSVC.  DbgHelp.h does this too. */
+#pragma warning(push)
+#pragma warning(disable:4200)
+#endif  /* _MSC_VER */
+
+
+/*
+ * guiddef.h
+ */
+
+typedef struct {
+  uint32_t data1;
+  uint16_t data2;
+  uint16_t data3;
+  uint8_t  data4[8];
+} MDGUID;  /* GUID */
+
+
+/*
+ * WinNT.h
+ */
+
+/* Non-x86 CPU identifiers found in the high 24 bits of
+ * (MDRawContext*).context_flags.  These aren't used by Breakpad, but are
+ * defined here for reference, to avoid assigning values that conflict
+ * (although some values already conflict). */
+#define MD_CONTEXT_IA64  0x00080000  /* CONTEXT_IA64 */
+/* Additional values from winnt.h in the Windows CE 5.0 SDK: */
+#define MD_CONTEXT_SHX   0x000000c0  /* CONTEXT_SH4 (Super-H, includes SH3) */
+#define MD_CONTEXT_ALPHA 0x00020000  /* CONTEXT_ALPHA */
+
+/* As of Windows 7 SP1, the number of flag bits has increased to
+ * include 0x40 (CONTEXT_XSTATE):
+ * http://msdn.microsoft.com/en-us/library/hh134238%28v=vs.85%29.aspx */
+#define MD_CONTEXT_CPU_MASK 0xffffff00
+
+
+/* This is a base type for MDRawContextX86 and MDRawContextPPC.  This
+ * structure should never be allocated directly.  The actual structure type
+ * can be determined by examining the context_flags field. */
+typedef struct {
+  uint32_t context_flags;
+} MDRawContextBase;
+
+#include "minidump_cpu_amd64.h"
+#include "minidump_cpu_arm.h"
+#include "minidump_cpu_arm64.h"
+#include "minidump_cpu_mips.h"
+#include "minidump_cpu_ppc.h"
+#include "minidump_cpu_ppc64.h"
+#include "minidump_cpu_sparc.h"
+#include "minidump_cpu_x86.h"
+
+/*
+ * WinVer.h
+ */
+
+
+typedef struct {
+  uint32_t signature;
+  uint32_t struct_version;
+  uint32_t file_version_hi;
+  uint32_t file_version_lo;
+  uint32_t product_version_hi;
+  uint32_t product_version_lo;
+  uint32_t file_flags_mask;    /* Identifies valid bits in fileFlags */
+  uint32_t file_flags;
+  uint32_t file_os;
+  uint32_t file_type;
+  uint32_t file_subtype;
+  uint32_t file_date_hi;
+  uint32_t file_date_lo;
+} MDVSFixedFileInfo;  /* VS_FIXEDFILEINFO */
+
+/* For (MDVSFixedFileInfo).signature */
+#define MD_VSFIXEDFILEINFO_SIGNATURE 0xfeef04bd
+     /* VS_FFI_SIGNATURE */
+
+/* For (MDVSFixedFileInfo).version */
+#define MD_VSFIXEDFILEINFO_VERSION 0x00010000
+     /* VS_FFI_STRUCVERSION */
+
+/* For (MDVSFixedFileInfo).file_flags_mask and
+ * (MDVSFixedFileInfo).file_flags */
+#define MD_VSFIXEDFILEINFO_FILE_FLAGS_DEBUG        0x00000001
+     /* VS_FF_DEBUG */
+#define MD_VSFIXEDFILEINFO_FILE_FLAGS_PRERELEASE   0x00000002
+     /* VS_FF_PRERELEASE */
+#define MD_VSFIXEDFILEINFO_FILE_FLAGS_PATCHED      0x00000004
+     /* VS_FF_PATCHED */
+#define MD_VSFIXEDFILEINFO_FILE_FLAGS_PRIVATEBUILD 0x00000008
+     /* VS_FF_PRIVATEBUILD */
+#define MD_VSFIXEDFILEINFO_FILE_FLAGS_INFOINFERRED 0x00000010
+     /* VS_FF_INFOINFERRED */
+#define MD_VSFIXEDFILEINFO_FILE_FLAGS_SPECIALBUILD 0x00000020
+     /* VS_FF_SPECIALBUILD */
+
+/* For (MDVSFixedFileInfo).file_os: high 16 bits */
+#define MD_VSFIXEDFILEINFO_FILE_OS_UNKNOWN    0          /* VOS_UNKNOWN */
+#define MD_VSFIXEDFILEINFO_FILE_OS_DOS        (1 << 16)  /* VOS_DOS */
+#define MD_VSFIXEDFILEINFO_FILE_OS_OS216      (2 << 16)  /* VOS_OS216 */
+#define MD_VSFIXEDFILEINFO_FILE_OS_OS232      (3 << 16)  /* VOS_OS232 */
+#define MD_VSFIXEDFILEINFO_FILE_OS_NT         (4 << 16)  /* VOS_NT */
+#define MD_VSFIXEDFILEINFO_FILE_OS_WINCE      (5 << 16)  /* VOS_WINCE */
+/* Low 16 bits */
+#define MD_VSFIXEDFILEINFO_FILE_OS__BASE      0          /* VOS__BASE */
+#define MD_VSFIXEDFILEINFO_FILE_OS__WINDOWS16 1          /* VOS__WINDOWS16 */
+#define MD_VSFIXEDFILEINFO_FILE_OS__PM16      2          /* VOS__PM16 */
+#define MD_VSFIXEDFILEINFO_FILE_OS__PM32      3          /* VOS__PM32 */
+#define MD_VSFIXEDFILEINFO_FILE_OS__WINDOWS32 4          /* VOS__WINDOWS32 */
+
+/* For (MDVSFixedFileInfo).file_type */
+#define MD_VSFIXEDFILEINFO_FILE_TYPE_UNKNOWN    0  /* VFT_UNKNOWN */
+#define MD_VSFIXEDFILEINFO_FILE_TYPE_APP        1  /* VFT_APP */
+#define MD_VSFIXEDFILEINFO_FILE_TYPE_DLL        2  /* VFT_DLL */
+#define MD_VSFIXEDFILEINFO_FILE_TYPE_DRV        3  /* VFT_DLL */
+#define MD_VSFIXEDFILEINFO_FILE_TYPE_FONT       4  /* VFT_FONT */
+#define MD_VSFIXEDFILEINFO_FILE_TYPE_VXD        5  /* VFT_VXD */
+#define MD_VSFIXEDFILEINFO_FILE_TYPE_STATIC_LIB 7  /* VFT_STATIC_LIB */
+
+/* For (MDVSFixedFileInfo).file_subtype */
+#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_UNKNOWN                0
+     /* VFT2_UNKNOWN */
+/* with file_type = MD_VSFIXEDFILEINFO_FILETYPE_DRV */
+#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_PRINTER            1
+     /* VFT2_DRV_PRINTER */
+#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_KEYBOARD           2
+     /* VFT2_DRV_KEYBOARD */
+#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_LANGUAGE           3
+     /* VFT2_DRV_LANGUAGE */
+#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_DISPLAY            4
+     /* VFT2_DRV_DISPLAY */
+#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_MOUSE              5
+     /* VFT2_DRV_MOUSE */
+#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_NETWORK            6
+     /* VFT2_DRV_NETWORK */
+#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_SYSTEM             7
+     /* VFT2_DRV_SYSTEM */
+#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_INSTALLABLE        8
+     /* VFT2_DRV_INSTALLABLE */
+#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_SOUND              9
+     /* VFT2_DRV_SOUND */
+#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_COMM              10
+     /* VFT2_DRV_COMM */
+#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_INPUTMETHOD       11
+     /* VFT2_DRV_INPUTMETHOD */
+#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_VERSIONED_PRINTER 12
+     /* VFT2_DRV_VERSIONED_PRINTER */
+/* with file_type = MD_VSFIXEDFILEINFO_FILETYPE_FONT */
+#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_FONT_RASTER            1
+     /* VFT2_FONT_RASTER */
+#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_FONT_VECTOR            2
+     /* VFT2_FONT_VECTOR */
+#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_FONT_TRUETYPE          3
+     /* VFT2_FONT_TRUETYPE */
+
+
+/*
+ * DbgHelp.h
+ */
+
+
+/* An MDRVA is an offset into the minidump file.  The beginning of the
+ * MDRawHeader is at offset 0. */
+typedef uint32_t MDRVA;  /* RVA */
+
+typedef struct {
+  uint32_t  data_size;
+  MDRVA     rva;
+} MDLocationDescriptor;  /* MINIDUMP_LOCATION_DESCRIPTOR */
+
+
+typedef struct {
+  /* The base address of the memory range on the host that produced the
+   * minidump. */
+  uint64_t             start_of_memory_range;
+
+  MDLocationDescriptor memory;
+} MDMemoryDescriptor;  /* MINIDUMP_MEMORY_DESCRIPTOR */
+
+
+typedef struct {
+  uint32_t  signature;
+  uint32_t  version;
+  uint32_t  stream_count;
+  MDRVA     stream_directory_rva;  /* A |stream_count|-sized array of
+                                    * MDRawDirectory structures. */
+  uint32_t  checksum;              /* Can be 0.  In fact, that's all that's
+                                    * been found in minidump files. */
+  uint32_t  time_date_stamp;       /* time_t */
+  uint64_t  flags;
+} MDRawHeader;  /* MINIDUMP_HEADER */
+
+/* For (MDRawHeader).signature and (MDRawHeader).version.  Note that only the
+ * low 16 bits of (MDRawHeader).version are MD_HEADER_VERSION.  Per the
+ * documentation, the high 16 bits are implementation-specific. */
+#define MD_HEADER_SIGNATURE 0x504d444d /* 'PMDM' */
+     /* MINIDUMP_SIGNATURE */
+#define MD_HEADER_VERSION   0x0000a793 /* 42899 */
+     /* MINIDUMP_VERSION */
+
+/* For (MDRawHeader).flags: */
+typedef enum {
+  /* MD_NORMAL is the standard type of minidump.  It includes full
+   * streams for the thread list, module list, exception, system info,
+   * and miscellaneous info.  A memory list stream is also present,
+   * pointing to the same stack memory contained in the thread list,
+   * as well as a 256-byte region around the instruction address that
+   * was executing when the exception occurred.  Stack memory is from
+   * 4 bytes below a thread's stack pointer up to the top of the
+   * memory region encompassing the stack. */
+  MD_NORMAL                            = 0x00000000,
+  MD_WITH_DATA_SEGS                    = 0x00000001,
+  MD_WITH_FULL_MEMORY                  = 0x00000002,
+  MD_WITH_HANDLE_DATA                  = 0x00000004,
+  MD_FILTER_MEMORY                     = 0x00000008,
+  MD_SCAN_MEMORY                       = 0x00000010,
+  MD_WITH_UNLOADED_MODULES             = 0x00000020,
+  MD_WITH_INDIRECTLY_REFERENCED_MEMORY = 0x00000040,
+  MD_FILTER_MODULE_PATHS               = 0x00000080,
+  MD_WITH_PROCESS_THREAD_DATA          = 0x00000100,
+  MD_WITH_PRIVATE_READ_WRITE_MEMORY    = 0x00000200,
+  MD_WITHOUT_OPTIONAL_DATA             = 0x00000400,
+  MD_WITH_FULL_MEMORY_INFO             = 0x00000800,
+  MD_WITH_THREAD_INFO                  = 0x00001000,
+  MD_WITH_CODE_SEGS                    = 0x00002000,
+  MD_WITHOUT_AUXILLIARY_SEGS           = 0x00004000,
+  MD_WITH_FULL_AUXILLIARY_STATE        = 0x00008000,
+  MD_WITH_PRIVATE_WRITE_COPY_MEMORY    = 0x00010000,
+  MD_IGNORE_INACCESSIBLE_MEMORY        = 0x00020000,
+  MD_WITH_TOKEN_INFORMATION            = 0x00040000
+} MDType;  /* MINIDUMP_TYPE */
+
+
+typedef struct {
+  uint32_t             stream_type;
+  MDLocationDescriptor location;
+} MDRawDirectory;  /* MINIDUMP_DIRECTORY */
+
+/* For (MDRawDirectory).stream_type */
+typedef enum {
+  MD_UNUSED_STREAM               =  0,
+  MD_RESERVED_STREAM_0           =  1,
+  MD_RESERVED_STREAM_1           =  2,
+  MD_THREAD_LIST_STREAM          =  3,  /* MDRawThreadList */
+  MD_MODULE_LIST_STREAM          =  4,  /* MDRawModuleList */
+  MD_MEMORY_LIST_STREAM          =  5,  /* MDRawMemoryList */
+  MD_EXCEPTION_STREAM            =  6,  /* MDRawExceptionStream */
+  MD_SYSTEM_INFO_STREAM          =  7,  /* MDRawSystemInfo */
+  MD_THREAD_EX_LIST_STREAM       =  8,
+  MD_MEMORY_64_LIST_STREAM       =  9,
+  MD_COMMENT_STREAM_A            = 10,
+  MD_COMMENT_STREAM_W            = 11,
+  MD_HANDLE_DATA_STREAM          = 12,
+  MD_FUNCTION_TABLE_STREAM       = 13,
+  MD_UNLOADED_MODULE_LIST_STREAM = 14,
+  MD_MISC_INFO_STREAM            = 15,  /* MDRawMiscInfo */
+  MD_MEMORY_INFO_LIST_STREAM     = 16,  /* MDRawMemoryInfoList */
+  MD_THREAD_INFO_LIST_STREAM     = 17,
+  MD_HANDLE_OPERATION_LIST_STREAM = 18,
+  MD_LAST_RESERVED_STREAM        = 0x0000ffff,
+
+  /* Breakpad extension types.  0x4767 = "Gg" */
+  MD_BREAKPAD_INFO_STREAM        = 0x47670001,  /* MDRawBreakpadInfo  */
+  MD_ASSERTION_INFO_STREAM       = 0x47670002,  /* MDRawAssertionInfo */
+  /* These are additional minidump stream values which are specific to
+   * the linux breakpad implementation. */
+  MD_LINUX_CPU_INFO              = 0x47670003,  /* /proc/cpuinfo      */
+  MD_LINUX_PROC_STATUS           = 0x47670004,  /* /proc/$x/status    */
+  MD_LINUX_LSB_RELEASE           = 0x47670005,  /* /etc/lsb-release   */
+  MD_LINUX_CMD_LINE              = 0x47670006,  /* /proc/$x/cmdline   */
+  MD_LINUX_ENVIRON               = 0x47670007,  /* /proc/$x/environ   */
+  MD_LINUX_AUXV                  = 0x47670008,  /* /proc/$x/auxv      */
+  MD_LINUX_MAPS                  = 0x47670009,  /* /proc/$x/maps      */
+  MD_LINUX_DSO_DEBUG             = 0x4767000A   /* MDRawDebug{32,64}  */
+} MDStreamType;  /* MINIDUMP_STREAM_TYPE */
+
+
+typedef struct {
+  uint32_t length;     /* Length of buffer in bytes (not characters),
+                        * excluding 0-terminator */
+  uint16_t buffer[1];  /* UTF-16-encoded, 0-terminated */
+} MDString;  /* MINIDUMP_STRING */
+
+static const size_t MDString_minsize = offsetof(MDString, buffer[0]);
+
+
+typedef struct {
+  uint32_t             thread_id;
+  uint32_t             suspend_count;
+  uint32_t             priority_class;
+  uint32_t             priority;
+  uint64_t             teb;             /* Thread environment block */
+  MDMemoryDescriptor   stack;
+  MDLocationDescriptor thread_context;  /* MDRawContext[CPU] */
+} MDRawThread;  /* MINIDUMP_THREAD */
+
+
+typedef struct {
+  uint32_t    number_of_threads;
+  MDRawThread threads[1];
+} MDRawThreadList;  /* MINIDUMP_THREAD_LIST */
+
+static const size_t MDRawThreadList_minsize = offsetof(MDRawThreadList,
+                                                       threads[0]);
+
+
+typedef struct {
+  uint64_t             base_of_image;
+  uint32_t             size_of_image;
+  uint32_t             checksum;         /* 0 if unknown */
+  uint32_t             time_date_stamp;  /* time_t */
+  MDRVA                module_name_rva;  /* MDString, pathname or filename */
+  MDVSFixedFileInfo    version_info;
+
+  /* The next field stores a CodeView record and is populated when a module's
+   * debug information resides in a PDB file.  It identifies the PDB file. */
+  MDLocationDescriptor cv_record;
+
+  /* The next field is populated when a module's debug information resides
+   * in a DBG file.  It identifies the DBG file.  This field is effectively
+   * obsolete with modules built by recent toolchains. */
+  MDLocationDescriptor misc_record;
+
+  /* Alignment problem: reserved0 and reserved1 are defined by the platform
+   * SDK as 64-bit quantities.  However, that results in a structure whose
+   * alignment is unpredictable on different CPUs and ABIs.  If the ABI
+   * specifies full alignment of 64-bit quantities in structures (as ppc
+   * does), there will be padding between miscRecord and reserved0.  If
+   * 64-bit quantities can be aligned on 32-bit boundaries (as on x86),
+   * this padding will not exist.  (Note that the structure up to this point
+   * contains 1 64-bit member followed by 21 32-bit members.)
+   * As a workaround, reserved0 and reserved1 are instead defined here as
+   * four 32-bit quantities.  This should be harmless, as there are
+   * currently no known uses for these fields. */
+  uint32_t             reserved0[2];
+  uint32_t             reserved1[2];
+} MDRawModule;  /* MINIDUMP_MODULE */
+
+/* The inclusion of a 64-bit type in MINIDUMP_MODULE forces the struct to
+ * be tail-padded out to a multiple of 64 bits under some ABIs (such as PPC).
+ * This doesn't occur on systems that don't tail-pad in this manner.  Define
+ * this macro to be the usable size of the MDRawModule struct, and use it in
+ * place of sizeof(MDRawModule). */
+#define MD_MODULE_SIZE 108
+
+
+/* (MDRawModule).cv_record can reference MDCVInfoPDB20 or MDCVInfoPDB70.
+ * Ref.: http://www.debuginfo.com/articles/debuginfomatch.html
+ * MDCVInfoPDB70 is the expected structure type with recent toolchains. */
+
+typedef struct {
+  uint32_t signature;
+  uint32_t offset;     /* Offset to debug data (expect 0 in minidump) */
+} MDCVHeader;
+
+typedef struct {
+  MDCVHeader cv_header;
+  uint32_t   signature;         /* time_t debug information created */
+  uint32_t   age;               /* revision of PDB file */
+  uint8_t    pdb_file_name[1];  /* Pathname or filename of PDB file */
+} MDCVInfoPDB20;
+
+static const size_t MDCVInfoPDB20_minsize = offsetof(MDCVInfoPDB20,
+                                                     pdb_file_name[0]);
+
+#define MD_CVINFOPDB20_SIGNATURE 0x3031424e  /* cvHeader.signature = '01BN' */
+
+typedef struct {
+  uint32_t  cv_signature;
+  MDGUID    signature;         /* GUID, identifies PDB file */
+  uint32_t  age;               /* Identifies incremental changes to PDB file */
+  uint8_t   pdb_file_name[1];  /* Pathname or filename of PDB file,
+                                * 0-terminated 8-bit character data (UTF-8?) */
+} MDCVInfoPDB70;
+
+static const size_t MDCVInfoPDB70_minsize = offsetof(MDCVInfoPDB70,
+                                                     pdb_file_name[0]);
+
+#define MD_CVINFOPDB70_SIGNATURE 0x53445352  /* cvSignature = 'SDSR' */
+
+typedef struct {
+  uint32_t data1[2];
+  uint32_t data2;
+  uint32_t data3;
+  uint32_t data4;
+  uint32_t data5[3];
+  uint8_t  extra[2];
+} MDCVInfoELF;
+
+/* In addition to the two CodeView record formats above, used for linking
+ * to external pdb files, it is possible for debugging data to be carried
+ * directly in the CodeView record itself.  These signature values will
+ * be found in the first 4 bytes of the CodeView record.  Additional values
+ * not commonly experienced in the wild are given by "Microsoft Symbol and
+ * Type Information", http://www.x86.org/ftp/manuals/tools/sym.pdf, section
+ * 7.2.  An in-depth description of the CodeView 4.1 format is given by
+ * "Undocumented Windows 2000 Secrets", Windows 2000 Debugging Support/
+ * Microsoft Symbol File Internals/CodeView Subsections,
+ * http://www.rawol.com/features/undocumented/sbs-w2k-1-windows-2000-debugging-support.pdf
+ */
+#define MD_CVINFOCV41_SIGNATURE 0x3930424e  /* '90BN', CodeView 4.10. */
+#define MD_CVINFOCV50_SIGNATURE 0x3131424e  /* '11BN', CodeView 5.0,
+                                             * MS C7-format (/Z7). */
+
+#define MD_CVINFOUNKNOWN_SIGNATURE 0xffffffff  /* An unlikely value. */
+
+/* (MDRawModule).miscRecord can reference MDImageDebugMisc.  The Windows
+ * structure is actually defined in WinNT.h.  This structure is effectively
+ * obsolete with modules built by recent toolchains. */
+
+typedef struct {
+  uint32_t  data_type;    /* IMAGE_DEBUG_TYPE_*, not defined here because
+                           * this debug record type is mostly obsolete. */
+  uint32_t  length;       /* Length of entire MDImageDebugMisc structure */
+  uint8_t   unicode;      /* True if data is multibyte */
+  uint8_t   reserved[3];
+  uint8_t   data[1];
+} MDImageDebugMisc;  /* IMAGE_DEBUG_MISC */
+
+static const size_t MDImageDebugMisc_minsize = offsetof(MDImageDebugMisc,
+                                                        data[0]);
+
+
+typedef struct {
+  uint32_t    number_of_modules;
+  MDRawModule modules[1];
+} MDRawModuleList;  /* MINIDUMP_MODULE_LIST */
+
+static const size_t MDRawModuleList_minsize = offsetof(MDRawModuleList,
+                                                       modules[0]);
+
+
+typedef struct {
+  uint32_t           number_of_memory_ranges;
+  MDMemoryDescriptor memory_ranges[1];
+} MDRawMemoryList;  /* MINIDUMP_MEMORY_LIST */
+
+static const size_t MDRawMemoryList_minsize = offsetof(MDRawMemoryList,
+                                                       memory_ranges[0]);
+
+
+#define MD_EXCEPTION_MAXIMUM_PARAMETERS 15
+
+typedef struct {
+  uint32_t  exception_code;     /* Windows: MDExceptionCodeWin,
+                                 * Mac OS X: MDExceptionMac,
+                                 * Linux: MDExceptionCodeLinux. */
+  uint32_t  exception_flags;    /* Windows: 1 if noncontinuable,
+                                   Mac OS X: MDExceptionCodeMac. */
+  uint64_t  exception_record;   /* Address (in the minidump-producing host's
+                                 * memory) of another MDException, for
+                                 * nested exceptions. */
+  uint64_t  exception_address;  /* The address that caused the exception.
+                                 * Mac OS X: exception subcode (which is
+                                 *           typically the address). */
+  uint32_t  number_parameters;  /* Number of valid elements in
+                                 * exception_information. */
+  uint32_t  __align;
+  uint64_t  exception_information[MD_EXCEPTION_MAXIMUM_PARAMETERS];
+} MDException;  /* MINIDUMP_EXCEPTION */
+
+#include "minidump_exception_linux.h"
+#include "minidump_exception_mac.h"
+#include "minidump_exception_ps3.h"
+#include "minidump_exception_solaris.h"
+#include "minidump_exception_win32.h"
+
+typedef struct {
+  uint32_t             thread_id;         /* Thread in which the exception
+                                           * occurred.  Corresponds to
+                                           * (MDRawThread).thread_id. */
+  uint32_t             __align;
+  MDException          exception_record;
+  MDLocationDescriptor thread_context;    /* MDRawContext[CPU] */
+} MDRawExceptionStream;  /* MINIDUMP_EXCEPTION_STREAM */
+
+
+typedef union {
+  struct {
+    uint32_t vendor_id[3];               /* cpuid 0: ebx, edx, ecx */
+    uint32_t version_information;        /* cpuid 1: eax */
+    uint32_t feature_information;        /* cpuid 1: edx */
+    uint32_t amd_extended_cpu_features;  /* cpuid 0x80000001, ebx */
+  } x86_cpu_info;
+  struct {
+    uint32_t cpuid;
+    uint32_t elf_hwcaps;    /* linux specific, 0 otherwise */
+  } arm_cpu_info;
+  struct {
+    uint64_t processor_features[2];
+  } other_cpu_info;
+} MDCPUInformation;  /* CPU_INFORMATION */
+
+/* For (MDCPUInformation).arm_cpu_info.elf_hwcaps.
+ * This matches the Linux kernel definitions from <asm/hwcaps.h> */
+typedef enum {
+  MD_CPU_ARM_ELF_HWCAP_SWP       = (1 << 0),
+  MD_CPU_ARM_ELF_HWCAP_HALF      = (1 << 1),
+  MD_CPU_ARM_ELF_HWCAP_THUMB     = (1 << 2),
+  MD_CPU_ARM_ELF_HWCAP_26BIT     = (1 << 3),
+  MD_CPU_ARM_ELF_HWCAP_FAST_MULT = (1 << 4),
+  MD_CPU_ARM_ELF_HWCAP_FPA       = (1 << 5),
+  MD_CPU_ARM_ELF_HWCAP_VFP       = (1 << 6),
+  MD_CPU_ARM_ELF_HWCAP_EDSP      = (1 << 7),
+  MD_CPU_ARM_ELF_HWCAP_JAVA      = (1 << 8),
+  MD_CPU_ARM_ELF_HWCAP_IWMMXT    = (1 << 9),
+  MD_CPU_ARM_ELF_HWCAP_CRUNCH    = (1 << 10),
+  MD_CPU_ARM_ELF_HWCAP_THUMBEE   = (1 << 11),
+  MD_CPU_ARM_ELF_HWCAP_NEON      = (1 << 12),
+  MD_CPU_ARM_ELF_HWCAP_VFPv3     = (1 << 13),
+  MD_CPU_ARM_ELF_HWCAP_VFPv3D16  = (1 << 14),
+  MD_CPU_ARM_ELF_HWCAP_TLS       = (1 << 15),
+  MD_CPU_ARM_ELF_HWCAP_VFPv4     = (1 << 16),
+  MD_CPU_ARM_ELF_HWCAP_IDIVA     = (1 << 17),
+  MD_CPU_ARM_ELF_HWCAP_IDIVT     = (1 << 18),
+} MDCPUInformationARMElfHwCaps;
+
+typedef struct {
+  /* The next 3 fields and numberOfProcessors are from the SYSTEM_INFO
+   * structure as returned by GetSystemInfo */
+  uint16_t         processor_architecture;
+  uint16_t         processor_level;         /* x86: 5 = 586, 6 = 686, ... */
+                                            /* ARM: 6 = ARMv6, 7 = ARMv7 ... */
+  uint16_t         processor_revision;      /* x86: 0xMMSS, where MM=model,
+                                             *      SS=stepping */
+                                            /* ARM: 0 */
+
+  uint8_t          number_of_processors;
+  uint8_t          product_type;            /* Windows: VER_NT_* from WinNT.h */
+
+  /* The next 5 fields are from the OSVERSIONINFO structure as returned
+   * by GetVersionEx */
+  uint32_t         major_version;
+  uint32_t         minor_version;
+  uint32_t         build_number;
+  uint32_t         platform_id;
+  MDRVA            csd_version_rva;  /* MDString further identifying the
+                                      * host OS.
+                                      * Windows: name of the installed OS
+                                      *          service pack.
+                                      * Mac OS X: the Apple OS build number
+                                      *           (sw_vers -buildVersion).
+                                      * Linux: uname -srvmo */
+
+  uint16_t         suite_mask;       /* Windows: VER_SUITE_* from WinNT.h */
+  uint16_t         reserved2;
+
+  MDCPUInformation cpu;
+} MDRawSystemInfo;  /* MINIDUMP_SYSTEM_INFO */
+
+/* For (MDRawSystemInfo).processor_architecture: */
+typedef enum {
+  MD_CPU_ARCHITECTURE_X86       =  0,  /* PROCESSOR_ARCHITECTURE_INTEL */
+  MD_CPU_ARCHITECTURE_MIPS      =  1,  /* PROCESSOR_ARCHITECTURE_MIPS */
+  MD_CPU_ARCHITECTURE_ALPHA     =  2,  /* PROCESSOR_ARCHITECTURE_ALPHA */
+  MD_CPU_ARCHITECTURE_PPC       =  3,  /* PROCESSOR_ARCHITECTURE_PPC */
+  MD_CPU_ARCHITECTURE_SHX       =  4,  /* PROCESSOR_ARCHITECTURE_SHX
+                                        * (Super-H) */
+  MD_CPU_ARCHITECTURE_ARM       =  5,  /* PROCESSOR_ARCHITECTURE_ARM */
+  MD_CPU_ARCHITECTURE_IA64      =  6,  /* PROCESSOR_ARCHITECTURE_IA64 */
+  MD_CPU_ARCHITECTURE_ALPHA64   =  7,  /* PROCESSOR_ARCHITECTURE_ALPHA64 */
+  MD_CPU_ARCHITECTURE_MSIL      =  8,  /* PROCESSOR_ARCHITECTURE_MSIL
+                                        * (Microsoft Intermediate Language) */
+  MD_CPU_ARCHITECTURE_AMD64     =  9,  /* PROCESSOR_ARCHITECTURE_AMD64 */
+  MD_CPU_ARCHITECTURE_X86_WIN64 = 10,
+      /* PROCESSOR_ARCHITECTURE_IA32_ON_WIN64 (WoW64) */
+  MD_CPU_ARCHITECTURE_SPARC     = 0x8001, /* Breakpad-defined value for SPARC */
+  MD_CPU_ARCHITECTURE_PPC64     = 0x8002, /* Breakpad-defined value for PPC64 */
+  MD_CPU_ARCHITECTURE_ARM64     = 0x8003, /* Breakpad-defined value for ARM64 */
+  MD_CPU_ARCHITECTURE_UNKNOWN   = 0xffff  /* PROCESSOR_ARCHITECTURE_UNKNOWN */
+} MDCPUArchitecture;
+
+/* For (MDRawSystemInfo).platform_id: */
+typedef enum {
+  MD_OS_WIN32S        = 0,  /* VER_PLATFORM_WIN32s (Windows 3.1) */
+  MD_OS_WIN32_WINDOWS = 1,  /* VER_PLATFORM_WIN32_WINDOWS (Windows 95-98-Me) */
+  MD_OS_WIN32_NT      = 2,  /* VER_PLATFORM_WIN32_NT (Windows NT, 2000+) */
+  MD_OS_WIN32_CE      = 3,  /* VER_PLATFORM_WIN32_CE, VER_PLATFORM_WIN32_HH
+                             * (Windows CE, Windows Mobile, "Handheld") */
+
+  /* The following values are Breakpad-defined. */
+  MD_OS_UNIX          = 0x8000,  /* Generic Unix-ish */
+  MD_OS_MAC_OS_X      = 0x8101,  /* Mac OS X/Darwin */
+  MD_OS_IOS           = 0x8102,  /* iOS */
+  MD_OS_LINUX         = 0x8201,  /* Linux */
+  MD_OS_SOLARIS       = 0x8202,  /* Solaris */
+  MD_OS_ANDROID       = 0x8203,  /* Android */
+  MD_OS_PS3           = 0x8204,  /* PS3 */
+  MD_OS_NACL          = 0x8205   /* Native Client (NaCl) */
+} MDOSPlatform;
+
+typedef struct {
+  uint16_t year;
+  uint16_t month;
+  uint16_t day_of_week;
+  uint16_t day;
+  uint16_t hour;
+  uint16_t minute;
+  uint16_t second;
+  uint16_t milliseconds;
+} MDSystemTime;  /* SYSTEMTIME */
+
+typedef struct {
+  /* Required field.  The bias is the difference, in minutes, between
+   * Coordinated Universal Time (UTC) and local time.
+   *   Formula: UTC = local time + bias */
+  int32_t bias;
+  /* A description for standard time.  For example, "EST" could indicate Eastern
+   * Standard Time.  In practice this contains the full time zone names.  This
+   * string can be empty. */
+  uint16_t standard_name[32];  /* UTF-16-encoded, 0-terminated */
+  /* A MDSystemTime structure that contains a date and local time when the
+   * transition from daylight saving time to standard time occurs on this
+   * operating system.  If the time zone does not support daylight saving time, 
+   * the month member in the MDSystemTime structure is zero. */
+  MDSystemTime standard_date;
+  /* The bias value to be used during local time translations that occur during
+   * standard time. */
+  int32_t standard_bias;
+  /* A description for daylight saving time.  For example, "PDT" could indicate
+   * Pacific Daylight Time.  In practice this contains the full time zone names.
+   * This string can be empty. */
+  uint16_t daylight_name[32];  /* UTF-16-encoded, 0-terminated */
+  /* A MDSystemTime structure that contains a date and local time when the
+   * transition from standard time to daylight saving time occurs on this
+   * operating system.  If the time zone does not support daylight saving time, 
+   * the month member in the MDSystemTime structure is zero.*/
+  MDSystemTime daylight_date;
+  /* The bias value to be used during local time translations that occur during
+   * daylight saving time. */
+  int32_t daylight_bias;
+} MDTimeZoneInformation;  /* TIME_ZONE_INFORMATION */
+
+/* MAX_PATH from windef.h */
+#define MD_MAX_PATH 260
+
+/* The miscellaneous information stream contains a variety
+ * of small pieces of information.  A member is valid if
+ * it's within the available size and its corresponding
+ * bit is set. */
+typedef struct {
+  uint32_t size_of_info;  /* Length of entire MDRawMiscInfo structure. */
+  uint32_t flags1;
+
+  /* The next field is only valid if flags1 contains
+   * MD_MISCINFO_FLAGS1_PROCESS_ID. */
+  uint32_t process_id;
+
+  /* The next 3 fields are only valid if flags1 contains
+   * MD_MISCINFO_FLAGS1_PROCESS_TIMES. */
+  uint32_t process_create_time;  /* time_t process started */
+  uint32_t process_user_time;    /* seconds of user CPU time */
+  uint32_t process_kernel_time;  /* seconds of kernel CPU time */
+
+  /* The following fields are not present in MINIDUMP_MISC_INFO but are
+   * in MINIDUMP_MISC_INFO_2.  When this struct is populated, these values
+   * may not be set.  Use flags1 and size_of_info to determine whether these
+   * values are present.  These are only valid when flags1 contains
+   * MD_MISCINFO_FLAGS1_PROCESSOR_POWER_INFO. */
+  uint32_t processor_max_mhz;
+  uint32_t processor_current_mhz;
+  uint32_t processor_mhz_limit;
+  uint32_t processor_max_idle_state;
+  uint32_t processor_current_idle_state;
+
+  /* The following fields are not present in MINIDUMP_MISC_INFO_2 but are
+   * in MINIDUMP_MISC_INFO_3.  When this struct is populated, these values
+   * may not be set.  Use flags1 and size_of_info to determine whether these
+   * values are present. */
+   
+  /* The following field is only valid if flags1 contains
+   * MD_MISCINFO_FLAGS1_PROCESS_INTEGRITY. */
+  uint32_t process_integrity_level;
+
+  /* The following field is only valid if flags1 contains
+   * MD_MISCINFO_FLAGS1_PROCESS_EXECUTE_FLAGS. */
+  uint32_t process_execute_flags;
+
+  /* The following field is only valid if flags1 contains
+   * MD_MISCINFO_FLAGS1_PROTECTED_PROCESS. */
+  uint32_t protected_process;
+
+  /* The following 2 fields are only valid if flags1 contains
+   * MD_MISCINFO_FLAGS1_TIMEZONE. */
+  uint32_t time_zone_id;
+  MDTimeZoneInformation time_zone;
+
+  /* The following fields are not present in MINIDUMP_MISC_INFO_3 but are
+   * in MINIDUMP_MISC_INFO_4.  When this struct is populated, these values
+   * may not be set.  Use flags1 and size_of_info to determine whether these
+   * values are present. */
+
+  /* The following 2 fields are only valid if flags1 contains
+   * MD_MISCINFO_FLAGS1_BUILDSTRING. */
+  uint16_t build_string[MD_MAX_PATH];  /* UTF-16-encoded, 0-terminated */
+  uint16_t dbg_bld_str[40];            /* UTF-16-encoded, 0-terminated */
+} MDRawMiscInfo;  /* MINIDUMP_MISC_INFO, MINIDUMP_MISC_INFO_2,
+                   * MINIDUMP_MISC_INFO_3, MINIDUMP_MISC_INFO_4,
+                   * MINIDUMP_MISC_INFO_N */
+
+static const size_t MD_MISCINFO_SIZE =
+    offsetof(MDRawMiscInfo, processor_max_mhz);
+static const size_t MD_MISCINFO2_SIZE =
+    offsetof(MDRawMiscInfo, process_integrity_level);
+static const size_t MD_MISCINFO3_SIZE =
+    offsetof(MDRawMiscInfo, build_string[0]);
+static const size_t MD_MISCINFO4_SIZE = sizeof(MDRawMiscInfo);
+
+/* For (MDRawMiscInfo).flags1.  These values indicate which fields in the
+ * MDRawMiscInfoStructure are valid. */
+typedef enum {
+  MD_MISCINFO_FLAGS1_PROCESS_ID            = 0x00000001,
+      /* MINIDUMP_MISC1_PROCESS_ID */
+  MD_MISCINFO_FLAGS1_PROCESS_TIMES         = 0x00000002,
+      /* MINIDUMP_MISC1_PROCESS_TIMES */
+  MD_MISCINFO_FLAGS1_PROCESSOR_POWER_INFO  = 0x00000004,
+      /* MINIDUMP_MISC1_PROCESSOR_POWER_INFO */
+  MD_MISCINFO_FLAGS1_PROCESS_INTEGRITY     = 0x00000010,
+      /* MINIDUMP_MISC3_PROCESS_INTEGRITY */
+  MD_MISCINFO_FLAGS1_PROCESS_EXECUTE_FLAGS = 0x00000020,
+      /* MINIDUMP_MISC3_PROCESS_EXECUTE_FLAGS */
+  MD_MISCINFO_FLAGS1_TIMEZONE              = 0x00000040,
+      /* MINIDUMP_MISC3_TIMEZONE */
+  MD_MISCINFO_FLAGS1_PROTECTED_PROCESS     = 0x00000080,
+      /* MINIDUMP_MISC3_PROTECTED_PROCESS */
+  MD_MISCINFO_FLAGS1_BUILDSTRING           = 0x00000100,
+      /* MINIDUMP_MISC4_BUILDSTRING */
+} MDMiscInfoFlags1;
+
+/*
+ * Around DbgHelp version 6.0, the style of new LIST structures changed
+ * from including an array of length 1 at the end of the struct to
+ * represent the variable-length data to including explicit
+ * "size of header", "size of entry" and "number of entries" fields
+ * in the header, presumably to allow backwards-compatibly-extending
+ * the structures in the future. The actual list entries follow the
+ * header data directly in this case.
+ */
+
+typedef struct {
+  uint32_t size_of_header;    /* sizeof(MDRawMemoryInfoList) */
+  uint32_t size_of_entry;     /* sizeof(MDRawMemoryInfo) */
+  uint64_t number_of_entries;
+} MDRawMemoryInfoList;  /* MINIDUMP_MEMORY_INFO_LIST */
+
+typedef struct {
+  uint64_t  base_address;           /* Base address of a region of pages */
+  uint64_t  allocation_base;        /* Base address of a range of pages
+                                     * within this region. */
+  uint32_t  allocation_protection;  /* Memory protection when this region
+                                     * was originally allocated:
+                                     * MDMemoryProtection */
+  uint32_t  __alignment1;
+  uint64_t  region_size;
+  uint32_t  state;                  /* MDMemoryState */
+  uint32_t  protection;             /* MDMemoryProtection */
+  uint32_t  type;                   /* MDMemoryType */
+  uint32_t  __alignment2;
+} MDRawMemoryInfo;  /* MINIDUMP_MEMORY_INFO */
+
+/* For (MDRawMemoryInfo).state */
+typedef enum {
+  MD_MEMORY_STATE_COMMIT   = 0x1000,  /* physical storage has been allocated */
+  MD_MEMORY_STATE_RESERVE  = 0x2000,  /* reserved, but no physical storage */
+  MD_MEMORY_STATE_FREE     = 0x10000  /* available to be allocated */
+} MDMemoryState;
+
+/* For (MDRawMemoryInfo).allocation_protection and .protection */
+typedef enum {
+  MD_MEMORY_PROTECT_NOACCESS          = 0x01,  /* PAGE_NOACCESS */
+  MD_MEMORY_PROTECT_READONLY          = 0x02,  /* PAGE_READONLY */
+  MD_MEMORY_PROTECT_READWRITE         = 0x04,  /* PAGE_READWRITE */
+  MD_MEMORY_PROTECT_WRITECOPY         = 0x08,  /* PAGE_WRITECOPY */
+  MD_MEMORY_PROTECT_EXECUTE           = 0x10,  /* PAGE_EXECUTE */
+  MD_MEMORY_PROTECT_EXECUTE_READ      = 0x20,  /* PAGE_EXECUTE_READ */
+  MD_MEMORY_PROTECT_EXECUTE_READWRITE = 0x40,  /* PAGE_EXECUTE_READWRITE */
+  MD_MEMORY_PROTECT_EXECUTE_WRITECOPY = 0x80,  /* PAGE_EXECUTE_WRITECOPY */
+  /* These options can be combined with the previous flags. */
+  MD_MEMORY_PROTECT_GUARD             = 0x100,  /* PAGE_GUARD */
+  MD_MEMORY_PROTECT_NOCACHE           = 0x200,  /* PAGE_NOCACHE */
+  MD_MEMORY_PROTECT_WRITECOMBINE      = 0x400,  /* PAGE_WRITECOMBINE */
+} MDMemoryProtection;
+
+/* Used to mask the mutually exclusive options from the combinable flags. */
+const uint32_t MD_MEMORY_PROTECTION_ACCESS_MASK = 0xFF;
+
+/* For (MDRawMemoryInfo).type */
+typedef enum {
+  MD_MEMORY_TYPE_PRIVATE = 0x20000,   /* not shared by other processes */
+  MD_MEMORY_TYPE_MAPPED  = 0x40000,   /* mapped into the view of a section */
+  MD_MEMORY_TYPE_IMAGE   = 0x1000000  /* mapped into the view of an image */
+} MDMemoryType;
+
+/*
+ * Breakpad extension types
+ */
+
+
+typedef struct {
+  /* validity is a bitmask with values from MDBreakpadInfoValidity, indicating
+   * which of the other fields in the structure are valid. */
+  uint32_t validity;
+
+  /* Thread ID of the handler thread.  dump_thread_id should correspond to
+   * the thread_id of an MDRawThread in the minidump's MDRawThreadList if
+   * a dedicated thread in that list was used to produce the minidump.  If
+   * the MDRawThreadList does not contain a dedicated thread used to produce
+   * the minidump, this field should be set to 0 and the validity field
+   * must not contain MD_BREAKPAD_INFO_VALID_DUMP_THREAD_ID. */
+  uint32_t dump_thread_id;
+
+  /* Thread ID of the thread that requested the minidump be produced.  As
+   * with dump_thread_id, requesting_thread_id should correspond to the
+   * thread_id of an MDRawThread in the minidump's MDRawThreadList.  For
+   * minidumps produced as a result of an exception, requesting_thread_id
+   * will be the same as the MDRawExceptionStream's thread_id field.  For
+   * minidumps produced "manually" at the program's request,
+   * requesting_thread_id will indicate which thread caused the dump to be
+   * written.  If the minidump was produced at the request of something
+   * other than a thread in the MDRawThreadList, this field should be set
+   * to 0 and the validity field must not contain
+   * MD_BREAKPAD_INFO_VALID_REQUESTING_THREAD_ID. */
+  uint32_t requesting_thread_id;
+} MDRawBreakpadInfo;
+
+/* For (MDRawBreakpadInfo).validity: */
+typedef enum {
+  /* When set, the dump_thread_id field is valid. */
+  MD_BREAKPAD_INFO_VALID_DUMP_THREAD_ID       = 1 << 0,
+
+  /* When set, the requesting_thread_id field is valid. */
+  MD_BREAKPAD_INFO_VALID_REQUESTING_THREAD_ID = 1 << 1
+} MDBreakpadInfoValidity;
+
+typedef struct {
+  /* expression, function, and file are 0-terminated UTF-16 strings.  They
+   * may be truncated if necessary, but should always be 0-terminated when
+   * written to a file.
+   * Fixed-length strings are used because MiniDumpWriteDump doesn't offer
+   * a way for user streams to point to arbitrary RVAs for strings. */
+  uint16_t expression[128];  /* Assertion that failed... */
+  uint16_t function[128];    /* ...within this function... */
+  uint16_t file[128];        /* ...in this file... */
+  uint32_t line;             /* ...at this line. */
+  uint32_t type;
+} MDRawAssertionInfo;
+
+/* For (MDRawAssertionInfo).type: */
+typedef enum {
+  MD_ASSERTION_INFO_TYPE_UNKNOWN = 0,
+
+  /* Used for assertions that would be raised by the MSVC CRT but are
+   * directed to an invalid parameter handler instead. */
+  MD_ASSERTION_INFO_TYPE_INVALID_PARAMETER,
+
+  /* Used for assertions that would be raised by the MSVC CRT but are
+   * directed to a pure virtual call handler instead. */
+  MD_ASSERTION_INFO_TYPE_PURE_VIRTUAL_CALL
+} MDAssertionInfoData;
+
+/* These structs are used to store the DSO debug data in Linux minidumps,
+ * which is necessary for converting minidumps to usable coredumps.
+ * Because of a historical accident, several fields are variably encoded
+ * according to client word size, so tools potentially need to support both. */
+
+typedef struct {
+  uint32_t  addr;
+  MDRVA     name;
+  uint32_t  ld;
+} MDRawLinkMap32;
+
+typedef struct {
+  uint32_t  version;
+  MDRVA     map;  /* array of MDRawLinkMap32 */
+  uint32_t  dso_count;
+  uint32_t  brk;
+  uint32_t  ldbase;
+  uint32_t  dynamic;
+} MDRawDebug32;
+
+typedef struct {
+  uint64_t  addr;
+  MDRVA     name;
+  uint64_t  ld;
+} MDRawLinkMap64;
+
+typedef struct {
+  uint32_t  version;
+  MDRVA     map;  /* array of MDRawLinkMap64 */
+  uint32_t  dso_count;
+  uint64_t  brk;
+  uint64_t  ldbase;
+  uint64_t  dynamic;
+} MDRawDebug64;
+
+#if defined(_MSC_VER)
+#pragma warning(pop)
+#endif  /* _MSC_VER */
+
+
+#endif  /* GOOGLE_BREAKPAD_COMMON_MINIDUMP_FORMAT_H__ */
diff --git a/google-breakpad/src/google_breakpad/common/minidump_size.h b/google-breakpad/src/google_breakpad/common/minidump_size.h
new file mode 100644
index 0000000..918544b
--- /dev/null
+++ b/google-breakpad/src/google_breakpad/common/minidump_size.h
@@ -0,0 +1,107 @@
+// Copyright (c) 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
+
+// minidump_size.h: Provides a C++ template for programmatic access to
+// the sizes of various types defined in minidump_format.h.
+//
+// Author: Mark Mentovai
+
+#ifndef GOOGLE_BREAKPAD_COMMON_MINIDUMP_SIZE_H__
+#define GOOGLE_BREAKPAD_COMMON_MINIDUMP_SIZE_H__
+
+#include <sys/types.h>
+
+#include "google_breakpad/common/minidump_format.h"
+
+namespace google_breakpad {
+
+template<typename T>
+class minidump_size {
+ public:
+  static size_t size() { return sizeof(T); }
+};
+
+// Explicit specializations for variable-length types.  The size returned
+// for these should be the size for an object without its variable-length
+// section.
+
+template<>
+class minidump_size<MDString> {
+ public:
+  static size_t size() { return MDString_minsize; }
+};
+
+template<>
+class minidump_size<MDRawThreadList> {
+ public:
+  static size_t size() { return MDRawThreadList_minsize; }
+};
+
+template<>
+class minidump_size<MDCVInfoPDB20> {
+ public:
+  static size_t size() { return MDCVInfoPDB20_minsize; }
+};
+
+template<>
+class minidump_size<MDCVInfoPDB70> {
+ public:
+  static size_t size() { return MDCVInfoPDB70_minsize; }
+};
+
+template<>
+class minidump_size<MDImageDebugMisc> {
+ public:
+  static size_t size() { return MDImageDebugMisc_minsize; }
+};
+
+template<>
+class minidump_size<MDRawModuleList> {
+ public:
+  static size_t size() { return MDRawModuleList_minsize; }
+};
+
+template<>
+class minidump_size<MDRawMemoryList> {
+ public:
+  static size_t size() { return MDRawMemoryList_minsize; }
+};
+
+// Explicit specialization for MDRawModule, for which sizeof may include
+// tail-padding on some architectures but not others.
+
+template<>
+class minidump_size<MDRawModule> {
+ public:
+  static size_t size() { return MD_MODULE_SIZE; }
+};
+
+}  // namespace google_breakpad
+
+#endif  // GOOGLE_BREAKPAD_COMMON_MINIDUMP_SIZE_H__
diff --git a/google-breakpad/src/google_breakpad/processor/basic_source_line_resolver.h b/google-breakpad/src/google_breakpad/processor/basic_source_line_resolver.h
new file mode 100644
index 0000000..6bb6d86
--- /dev/null
+++ b/google-breakpad/src/google_breakpad/processor/basic_source_line_resolver.h
@@ -0,0 +1,144 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// basic_source_line_resolver.h: BasicSourceLineResolver is derived from
+// SourceLineResolverBase, and is a concrete implementation of
+// SourceLineResolverInterface, using address map files produced by a
+// compatible writer, e.g. PDBSourceLineWriter.
+//
+// see "processor/source_line_resolver_base.h"
+// and "source_line_resolver_interface.h" for more documentation.
+
+#ifndef GOOGLE_BREAKPAD_PROCESSOR_BASIC_SOURCE_LINE_RESOLVER_H__
+#define GOOGLE_BREAKPAD_PROCESSOR_BASIC_SOURCE_LINE_RESOLVER_H__
+
+#include <map>
+#include <string>
+
+#include "common/using_std_string.h"
+#include "google_breakpad/processor/source_line_resolver_base.h"
+
+namespace google_breakpad {
+
+using std::map;
+
+class BasicSourceLineResolver : public SourceLineResolverBase {
+ public:
+  BasicSourceLineResolver();
+  virtual ~BasicSourceLineResolver() { }
+
+  using SourceLineResolverBase::LoadModule;
+  using SourceLineResolverBase::LoadModuleUsingMapBuffer;
+  using SourceLineResolverBase::LoadModuleUsingMemoryBuffer;
+  using SourceLineResolverBase::ShouldDeleteMemoryBufferAfterLoadModule;
+  using SourceLineResolverBase::UnloadModule;
+  using SourceLineResolverBase::HasModule;
+  using SourceLineResolverBase::IsModuleCorrupt;
+  using SourceLineResolverBase::FillSourceLineInfo;
+  using SourceLineResolverBase::FindWindowsFrameInfo;
+  using SourceLineResolverBase::FindCFIFrameInfo;
+
+ private:
+  // friend declarations:
+  friend class BasicModuleFactory;
+  friend class ModuleComparer;
+  friend class ModuleSerializer;
+  template<class> friend class SimpleSerializer;
+
+  // Function derives from SourceLineResolverBase::Function.
+  struct Function;
+  // Module implements SourceLineResolverBase::Module interface.
+  class Module;
+
+  // Disallow unwanted copy ctor and assignment operator
+  BasicSourceLineResolver(const BasicSourceLineResolver&);
+  void operator=(const BasicSourceLineResolver&);
+};
+
+// Helper class, containing useful methods for parsing of Breakpad symbol files.
+class SymbolParseHelper {
+ public:
+  // Parses a |file_line| declaration.  Returns true on success.
+  // Format: FILE <id> <filename>.
+  // Notice, that this method modifies the input |file_line| which is why it
+  // can't be const.  On success, <id>, and <filename> are stored in |*index|,
+  // and |*filename|.  No allocation is done, |*filename| simply points inside
+  // |file_line|.
+  static bool ParseFile(char *file_line,   // in
+                        long *index,       // out
+                        char **filename);  // out
+
+  // Parses a |function_line| declaration.  Returns true on success.
+  // Format:  FUNC <address> <size> <stack_param_size> <name>.
+  // Notice, that this method modifies the input |function_line| which is why it
+  // can't be const.  On success, <address>, <size>, <stack_param_size>, and
+  // <name> are stored in |*address|, |*size|, |*stack_param_size|, and |*name|.
+  // No allocation is done, |*name| simply points inside |function_line|.
+  static bool ParseFunction(char *function_line,     // in
+                            uint64_t *address,       // out
+                            uint64_t *size,          // out
+                            long *stack_param_size,  // out
+                            char **name);            // out
+
+  // Parses a |line| declaration.  Returns true on success.
+  // Format:  <address> <size> <line number> <source file id>
+  // Notice, that this method modifies the input |function_line| which is why
+  // it can't be const.  On success, <address>, <size>, <line number>, and
+  // <source file id> are stored in |*address|, |*size|, |*line_number|, and
+  // |*source_file|.
+  static bool ParseLine(char *line_line,     // in
+                        uint64_t *address,   // out
+                        uint64_t *size,      // out
+                        long *line_number,   // out
+                        long *source_file);  // out
+
+  // Parses a |public_line| declaration.  Returns true on success.
+  // Format:  PUBLIC <address> <stack_param_size> <name>
+  // Notice, that this method modifies the input |function_line| which is why
+  // it can't be const.  On success, <address>, <stack_param_size>, <name>
+  // are stored in |*address|, |*stack_param_size|, and |*name|.
+  // No allocation is done, |*name| simply points inside |public_line|.
+  static bool ParsePublicSymbol(char *public_line,       // in
+                                uint64_t *address,       // out
+                                long *stack_param_size,  // out
+                                char **name);            // out
+
+ private:
+  // Used for success checks after strtoull and strtol.
+  static bool IsValidAfterNumber(char *after_number);
+
+  // Only allow static methods.
+  SymbolParseHelper();
+  SymbolParseHelper(const SymbolParseHelper&);
+  void operator=(const SymbolParseHelper&);
+};
+
+}  // namespace google_breakpad
+
+#endif  // GOOGLE_BREAKPAD_PROCESSOR_BASIC_SOURCE_LINE_RESOLVER_H__
diff --git a/google-breakpad/src/google_breakpad/processor/call_stack.h b/google-breakpad/src/google_breakpad/processor/call_stack.h
new file mode 100644
index 0000000..21f595e
--- /dev/null
+++ b/google-breakpad/src/google_breakpad/processor/call_stack.h
@@ -0,0 +1,77 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// call_stack.h: A call stack comprised of stack frames.
+//
+// This class manages a vector of stack frames.  It is used instead of
+// exposing the vector directly to allow the CallStack to own StackFrame
+// pointers without having to publicly export the linked_ptr class.  A
+// CallStack must be composed of pointers instead of objects to allow for
+// CPU-specific StackFrame subclasses.
+//
+// By convention, the stack frame at index 0 is the innermost callee frame,
+// and the frame at the highest index in a call stack is the outermost
+// caller.  CallStack only allows stacks to be built by pushing frames,
+// beginning with the innermost callee frame.
+//
+// Author: Mark Mentovai
+
+#ifndef GOOGLE_BREAKPAD_PROCESSOR_CALL_STACK_H__
+#define GOOGLE_BREAKPAD_PROCESSOR_CALL_STACK_H__
+
+#include <vector>
+
+namespace google_breakpad {
+
+using std::vector;
+
+struct StackFrame;
+template<typename T> class linked_ptr;
+
+class CallStack {
+ public:
+  CallStack() { Clear(); }
+  ~CallStack();
+
+  // Resets the CallStack to its initial empty state
+  void Clear();
+  
+  const vector<StackFrame*>* frames() const { return &frames_; }
+
+ private:
+  // Stackwalker is responsible for building the frames_ vector.
+  friend class Stackwalker;
+
+  // Storage for pushed frames.
+  vector<StackFrame*> frames_;
+};
+
+}  // namespace google_breakpad
+
+#endif  // GOOGLE_BREAKPAD_PROCSSOR_CALL_STACK_H__
diff --git a/google-breakpad/src/google_breakpad/processor/code_module.h b/google-breakpad/src/google_breakpad/processor/code_module.h
new file mode 100644
index 0000000..4e89282
--- /dev/null
+++ b/google-breakpad/src/google_breakpad/processor/code_module.h
@@ -0,0 +1,94 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// code_module.h: Carries information about code modules that are loaded
+// into a process.
+//
+// Author: Mark Mentovai
+
+#ifndef GOOGLE_BREAKPAD_PROCESSOR_CODE_MODULE_H__
+#define GOOGLE_BREAKPAD_PROCESSOR_CODE_MODULE_H__
+
+#include <string>
+
+#include "common/using_std_string.h"
+#include "google_breakpad/common/breakpad_types.h"
+
+namespace google_breakpad {
+
+class CodeModule {
+ public:
+  virtual ~CodeModule() {}
+
+  // The base address of this code module as it was loaded by the process.
+  // (uint64_t)-1 on error.
+  virtual uint64_t base_address() const = 0;
+
+  // The size of the code module.  0 on error.
+  virtual uint64_t size() const = 0;
+
+  // The path or file name that the code module was loaded from.  Empty on
+  // error.
+  virtual string code_file() const = 0;
+
+  // An identifying string used to discriminate between multiple versions and
+  // builds of the same code module.  This may contain a uuid, timestamp,
+  // version number, or any combination of this or other information, in an
+  // implementation-defined format.  Empty on error.
+  virtual string code_identifier() const = 0;
+
+  // The filename containing debugging information associated with the code
+  // module.  If debugging information is stored in a file separate from the
+  // code module itself (as is the case when .pdb or .dSYM files are used),
+  // this will be different from code_file.  If debugging information is
+  // stored in the code module itself (possibly prior to stripping), this
+  // will be the same as code_file.  Empty on error.
+  virtual string debug_file() const = 0;
+
+  // An identifying string similar to code_identifier, but identifies a
+  // specific version and build of the associated debug file.  This may be
+  // the same as code_identifier when the debug_file and code_file are
+  // identical or when the same identifier is used to identify distinct
+  // debug and code files.
+  virtual string debug_identifier() const = 0;
+
+  // A human-readable representation of the code module's version.  Empty on
+  // error.
+  virtual string version() const = 0;
+
+  // Creates a new copy of this CodeModule object, which the caller takes
+  // ownership of.  The new CodeModule may be of a different concrete class
+  // than the CodeModule being copied, but will behave identically to the
+  // copied CodeModule as far as the CodeModule interface is concerned.
+  virtual const CodeModule* Copy() const = 0;
+};
+
+}  // namespace google_breakpad
+
+#endif  // GOOGLE_BREAKPAD_PROCESSOR_CODE_MODULE_H__
diff --git a/google-breakpad/src/google_breakpad/processor/code_modules.h b/google-breakpad/src/google_breakpad/processor/code_modules.h
new file mode 100644
index 0000000..a38579a
--- /dev/null
+++ b/google-breakpad/src/google_breakpad/processor/code_modules.h
@@ -0,0 +1,98 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// code_modules.h: Contains all of the CodeModule objects that were loaded
+// into a single process.
+//
+// Author: Mark Mentovai
+
+#ifndef GOOGLE_BREAKPAD_PROCESSOR_CODE_MODULES_H__
+#define GOOGLE_BREAKPAD_PROCESSOR_CODE_MODULES_H__
+
+#include "google_breakpad/common/breakpad_types.h"
+
+namespace google_breakpad {
+
+class CodeModule;
+
+class CodeModules {
+ public:
+  virtual ~CodeModules() {}
+
+  // The number of contained CodeModule objects.
+  virtual unsigned int module_count() const = 0;
+
+  // Random access to modules.  Returns the module whose code is present
+  // at the address indicated by |address|.  If no module is present at this
+  // address, returns NULL.  Ownership of the returned CodeModule is retained
+  // by the CodeModules object; pointers returned by this method are valid for
+  // comparison with pointers returned by the other Get methods.
+  virtual const CodeModule* GetModuleForAddress(uint64_t address) const = 0;
+
+  // Returns the module corresponding to the main executable.  If there is
+  // no main executable, returns NULL.  Ownership of the returned CodeModule
+  // is retained by the CodeModules object; pointers returned by this method
+  // are valid for comparison with pointers returned by the other Get
+  // methods.
+  virtual const CodeModule* GetMainModule() const = 0;
+
+  // Sequential access to modules.  A sequence number of 0 corresponds to the
+  // module residing lowest in memory.  If the sequence number is out of
+  // range, returns NULL.  Ownership of the returned CodeModule is retained
+  // by the CodeModules object; pointers returned by this method are valid for
+  // comparison with pointers returned by the other Get methods.
+  virtual const CodeModule* GetModuleAtSequence(
+      unsigned int sequence) const = 0;
+
+  // Sequential access to modules.  This is similar to GetModuleAtSequence,
+  // except no ordering requirement is enforced.  A CodeModules implementation
+  // may return CodeModule objects from GetModuleAtIndex in any order it
+  // wishes, provided that the order remain the same throughout the life of
+  // the CodeModules object.  Typically, GetModuleAtIndex would be used by
+  // a caller to enumerate all CodeModule objects quickly when the enumeration
+  // does not require any ordering.  If the index argument is out of range,
+  // returns NULL.  Ownership of the returned CodeModule is retained by
+  // the CodeModules object; pointers returned by this method are valid for
+  // comparison with pointers returned by the other Get methods.
+  virtual const CodeModule* GetModuleAtIndex(unsigned int index) const = 0;
+
+  // Creates a new copy of this CodeModules object, which the caller takes
+  // ownership of.  The new object will also contain copies of the existing
+  // object's child CodeModule objects.  The new CodeModules object may be of
+  // a different concrete class than the object being copied, but will behave
+  // identically to the copied object as far as the CodeModules and CodeModule
+  // interfaces are concerned, except that the order that GetModuleAtIndex
+  // returns objects in may differ between a copy and the original CodeModules
+  // object.
+  virtual const CodeModules* Copy() const = 0;
+};
+
+}  // namespace google_breakpad
+
+#endif  // GOOGLE_BREAKPAD_PROCESSOR_CODE_MODULES_H__
diff --git a/google-breakpad/src/google_breakpad/processor/dump_context.h b/google-breakpad/src/google_breakpad/processor/dump_context.h
new file mode 100644
index 0000000..f6238ff
--- /dev/null
+++ b/google-breakpad/src/google_breakpad/processor/dump_context.h
@@ -0,0 +1,112 @@
+// Copyright (c) 2014 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// dump_context.h: A (mini/micro) dump CPU-specific context.
+
+#ifndef GOOGLE_BREAKPAD_PROCESSOR_DUMP_CONTEXT_H__
+#define GOOGLE_BREAKPAD_PROCESSOR_DUMP_CONTEXT_H__
+
+#include "google_breakpad/common/minidump_format.h"
+#include "google_breakpad/processor/dump_object.h"
+
+namespace google_breakpad {
+
+// DumpContext carries a CPU-specific MDRawContext structure, which contains CPU
+// context such as register states.
+class DumpContext : public DumpObject {
+ public:
+  virtual ~DumpContext();
+
+  // Returns an MD_CONTEXT_* value such as MD_CONTEXT_X86 or MD_CONTEXT_PPC
+  // identifying the CPU type that the context was collected from.  The
+  // returned value will identify the CPU only, and will have any other
+  // MD_CONTEXT_* bits masked out.  Returns 0 on failure.
+  uint32_t GetContextCPU() const;
+
+  // Return the raw value of |context_flags_|
+  uint32_t GetContextFlags() const;
+
+  // Returns raw CPU-specific context data for the named CPU type.  If the
+  // context data does not match the CPU type or does not exist, returns NULL.
+  const MDRawContextAMD64* GetContextAMD64() const;
+  const MDRawContextARM*   GetContextARM() const;
+  const MDRawContextARM64* GetContextARM64() const;
+  const MDRawContextMIPS*  GetContextMIPS() const;
+  const MDRawContextPPC*   GetContextPPC() const;
+  const MDRawContextPPC64* GetContextPPC64() const;
+  const MDRawContextSPARC* GetContextSPARC() const;
+  const MDRawContextX86*   GetContextX86() const;
+
+  // A convenience method to get the instruction pointer out of the
+  // MDRawContext, since it varies per-CPU architecture.
+  bool GetInstructionPointer(uint64_t* ip) const;
+
+  // Print a human-readable representation of the object to stdout.
+  void Print();
+
+ protected:
+  DumpContext();
+
+  // Sets row CPU-specific context data for the names CPU type.
+  void SetContextFlags(uint32_t context_flags);
+  void SetContextX86(MDRawContextX86* x86);
+  void SetContextPPC(MDRawContextPPC* ppc);
+  void SetContextPPC64(MDRawContextPPC64* ppc64);
+  void SetContextAMD64(MDRawContextAMD64* amd64);
+  void SetContextSPARC(MDRawContextSPARC* ctx_sparc);
+  void SetContextARM(MDRawContextARM* arm);
+  void SetContextARM64(MDRawContextARM64* arm64);
+  void SetContextMIPS(MDRawContextMIPS* ctx_mips);
+
+  // Free the CPU-specific context structure.
+  void FreeContext();
+
+ private:
+  // The CPU-specific context structure.
+  union {
+    MDRawContextBase*  base;
+    MDRawContextX86*   x86;
+    MDRawContextPPC*   ppc;
+    MDRawContextPPC64* ppc64;
+    MDRawContextAMD64* amd64;
+    // on Solaris SPARC, sparc is defined as a numeric constant,
+    // so variables can NOT be named as sparc
+    MDRawContextSPARC* ctx_sparc;
+    MDRawContextARM*   arm;
+    MDRawContextARM64* arm64;
+    MDRawContextMIPS*  ctx_mips;
+  } context_;
+
+  // Store this separately because of the weirdo AMD64 context
+  uint32_t context_flags_;
+};
+
+}  // namespace google_breakpad
+
+#endif  // GOOGLE_BREAKPAD_PROCESSOR_DUMP_CONTEXT_H__
diff --git a/google-breakpad/src/google_breakpad/processor/dump_object.h b/google-breakpad/src/google_breakpad/processor/dump_object.h
new file mode 100644
index 0000000..112f687
--- /dev/null
+++ b/google-breakpad/src/google_breakpad/processor/dump_object.h
@@ -0,0 +1,53 @@
+// Copyright (c) 2014 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// dump_object.h: A base class for all mini/micro dump object.
+
+#ifndef GOOGLE_BREAKPAD_PROCESSOR_DUMP_OBJECT_H__
+#define GOOGLE_BREAKPAD_PROCESSOR_DUMP_OBJECT_H__
+
+namespace google_breakpad {
+
+// DumpObject is the base of various mini/micro dump's objects.
+class DumpObject {
+ public:
+  DumpObject();
+
+  bool valid() const { return valid_; }
+
+ protected:
+  // DumpObjects are not valid when created.  When a subclass populates its own
+  // fields, it can set valid_ to true.  Accessors and mutators may wish to
+  // consider or alter the valid_ state as they interact with objects.
+  bool valid_;
+};
+
+}  // namespace google_breakpad
+
+#endif  // GOOGLE_BREAKPAD_PROCESSOR_DUMP_OBJECT_H__
diff --git a/google-breakpad/src/google_breakpad/processor/exploitability.h b/google-breakpad/src/google_breakpad/processor/exploitability.h
new file mode 100644
index 0000000..67255a3
--- /dev/null
+++ b/google-breakpad/src/google_breakpad/processor/exploitability.h
@@ -0,0 +1,73 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// exploitability_engine.h: Generic exploitability engine.
+//
+// The Exploitability class is an abstract base class providing common
+// generic methods that apply to exploitability engines for specific platforms.
+// Specific implementations will extend this class by providing run
+// methods to fill in the exploitability_ enumeration of the ProcessState
+// for a crash.
+//
+// Author: Cris Neckar
+
+#ifndef GOOGLE_BREAKPAD_PROCESSOR_EXPLOITABILITY_H_
+#define GOOGLE_BREAKPAD_PROCESSOR_EXPLOITABILITY_H_
+
+#include "google_breakpad/common/breakpad_types.h"
+#include "google_breakpad/processor/minidump.h"
+#include "google_breakpad/processor/process_state.h"
+
+namespace google_breakpad {
+
+class Exploitability {
+ public:
+  virtual ~Exploitability() {}
+
+  static Exploitability *ExploitabilityForPlatform(Minidump *dump,
+                                                   ProcessState *process_state);
+
+  ExploitabilityRating CheckExploitability();
+  bool AddressIsAscii(uint64_t);
+
+ protected:
+  Exploitability(Minidump *dump,
+                 ProcessState *process_state);
+
+  Minidump *dump_;
+  ProcessState *process_state_;
+  SystemInfo *system_info_;
+
+ private:
+  virtual ExploitabilityRating CheckPlatformExploitability() = 0;
+};
+
+}  // namespace google_breakpad
+
+#endif  // GOOGLE_BREAKPAD_PROCESSOR_EXPLOITABILITY_H_
diff --git a/google-breakpad/src/google_breakpad/processor/fast_source_line_resolver.h b/google-breakpad/src/google_breakpad/processor/fast_source_line_resolver.h
new file mode 100644
index 0000000..fdf9107
--- /dev/null
+++ b/google-breakpad/src/google_breakpad/processor/fast_source_line_resolver.h
@@ -0,0 +1,100 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// fast_source_line_resolver.h: FastSourceLineResolver is derived from
+// SourceLineResolverBase, and is a concrete implementation of
+// SourceLineResolverInterface.
+//
+// FastSourceLineResolver is a sibling class of BasicSourceLineResolver.  The
+// difference is FastSourceLineResolver loads a serialized memory chunk of data
+// which can be used directly a Module without parsing or copying of underlying
+// data.  Therefore loading a symbol in FastSourceLineResolver is much faster
+// and more memory-efficient than BasicSourceLineResolver.
+//
+// See "source_line_resolver_base.h" and
+// "google_breakpad/source_line_resolver_interface.h" for more reference.
+//
+// Author: Siyang Xie (lambxsy@google.com)
+
+#ifndef GOOGLE_BREAKPAD_PROCESSOR_FAST_SOURCE_LINE_RESOLVER_H__
+#define GOOGLE_BREAKPAD_PROCESSOR_FAST_SOURCE_LINE_RESOLVER_H__
+
+#include <map>
+#include <string>
+
+#include "google_breakpad/processor/source_line_resolver_base.h"
+
+namespace google_breakpad {
+
+using std::map;
+
+class FastSourceLineResolver : public SourceLineResolverBase {
+ public:
+  FastSourceLineResolver();
+  virtual ~FastSourceLineResolver() { }
+
+  using SourceLineResolverBase::FillSourceLineInfo;
+  using SourceLineResolverBase::FindCFIFrameInfo;
+  using SourceLineResolverBase::FindWindowsFrameInfo;
+  using SourceLineResolverBase::HasModule;
+  using SourceLineResolverBase::IsModuleCorrupt;
+  using SourceLineResolverBase::LoadModule;
+  using SourceLineResolverBase::LoadModuleUsingMapBuffer;
+  using SourceLineResolverBase::LoadModuleUsingMemoryBuffer;
+  using SourceLineResolverBase::UnloadModule;
+
+ private:
+  // Friend declarations.
+  friend class ModuleComparer;
+  friend class ModuleSerializer;
+  friend class FastModuleFactory;
+
+  // Nested types that will derive from corresponding nested types defined in
+  // SourceLineResolverBase.
+  struct Line;
+  struct Function;
+  struct PublicSymbol;
+  class Module;
+
+  // Deserialize raw memory data to construct a WindowsFrameInfo object.
+  static WindowsFrameInfo CopyWFI(const char *raw_memory);
+
+  // FastSourceLineResolver requires the memory buffer stays alive during the
+  // lifetime of a corresponding module, therefore it needs to redefine this
+  // virtual method.
+  virtual bool ShouldDeleteMemoryBufferAfterLoadModule();
+
+  // Disallow unwanted copy ctor and assignment operator
+  FastSourceLineResolver(const FastSourceLineResolver&);
+  void operator=(const FastSourceLineResolver&);
+};
+
+}  // namespace google_breakpad
+
+#endif  // GOOGLE_BREAKPAD_PROCESSOR_FAST_SOURCE_LINE_RESOLVER_H__
diff --git a/google-breakpad/src/google_breakpad/processor/memory_region.h b/google-breakpad/src/google_breakpad/processor/memory_region.h
new file mode 100644
index 0000000..30f88df
--- /dev/null
+++ b/google-breakpad/src/google_breakpad/processor/memory_region.h
@@ -0,0 +1,79 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// memory_region.h: Access to memory regions.
+//
+// A MemoryRegion provides virtual access to a range of memory.  It is an
+// abstraction allowing the actual source of memory to be independent of
+// methods which need to access a virtual memory space.
+//
+// Author: Mark Mentovai
+
+#ifndef GOOGLE_BREAKPAD_PROCESSOR_MEMORY_REGION_H__
+#define GOOGLE_BREAKPAD_PROCESSOR_MEMORY_REGION_H__
+
+
+#include "google_breakpad/common/breakpad_types.h"
+
+
+namespace google_breakpad {
+
+
+class MemoryRegion {
+ public:
+  virtual ~MemoryRegion() {}
+
+  // The base address of this memory region.
+  virtual uint64_t GetBase() const = 0;
+
+  // The size of this memory region.
+  virtual uint32_t GetSize() const = 0;
+
+  // Access to data of various sizes within the memory region.  address
+  // is a pointer to read, and it must lie within the memory region as
+  // defined by its base address and size.  The location pointed to by
+  // value is set to the value at address.  Byte-swapping is performed
+  // if necessary so that the value is appropriate for the running
+  // program.  Returns true on success.  Fails and returns false if address
+  // is out of the region's bounds (after considering the width of value),
+  // or for other types of errors.
+  virtual bool GetMemoryAtAddress(uint64_t address, uint8_t*  value) const = 0;
+  virtual bool GetMemoryAtAddress(uint64_t address, uint16_t* value) const = 0;
+  virtual bool GetMemoryAtAddress(uint64_t address, uint32_t* value) const = 0;
+  virtual bool GetMemoryAtAddress(uint64_t address, uint64_t* value) const = 0;
+
+  // Print a human-readable representation of the object to stdout.
+  virtual void Print() const = 0;
+};
+
+
+}  // namespace google_breakpad
+
+
+#endif  // GOOGLE_BREAKPAD_PROCESSOR_MEMORY_REGION_H__
diff --git a/google-breakpad/src/google_breakpad/processor/microdump.h b/google-breakpad/src/google_breakpad/processor/microdump.h
new file mode 100644
index 0000000..abdaecb
--- /dev/null
+++ b/google-breakpad/src/google_breakpad/processor/microdump.h
@@ -0,0 +1,126 @@
+// Copyright (c) 2014 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// microdump.h: A microdump reader.  Microdump is a minified variant of a
+// minidump (see minidump.h for documentation) which contains the minimum
+// amount of information required to get a stack trace for the crashing thread.
+// The information contained in a microdump is:
+// - the crashing thread stack
+// - system information (os type / version)
+// - cpu context (state of the registers)
+// - list of mmaps
+
+#ifndef GOOGLE_BREAKPAD_PROCESSOR_MICRODUMP_H__
+#define GOOGLE_BREAKPAD_PROCESSOR_MICRODUMP_H__
+
+#include <string>
+#include <vector>
+
+#include "common/scoped_ptr.h"
+#include "common/using_std_string.h"
+#include "google_breakpad/processor/dump_context.h"
+#include "google_breakpad/processor/memory_region.h"
+#include "google_breakpad/processor/system_info.h"
+#include "processor/basic_code_modules.h"
+
+namespace google_breakpad {
+
+// MicrodumpModuleList contains all of the loaded code modules for a process
+// in the form of MicrodumpModules.  It maintains a vector of these modules
+// and provides access to a code module corresponding to a specific address.
+class MicrodumpModules : public BasicCodeModules {
+ public:
+  // Takes over ownership of |module|.
+  void Add(const CodeModule* module);
+};
+
+// MicrodumpContext carries a CPU-specific context.
+// See dump_context.h for documentation.
+class MicrodumpContext : public DumpContext {
+ public:
+  virtual void SetContextARM(MDRawContextARM* arm);
+  virtual void SetContextARM64(MDRawContextARM64* arm64);
+};
+
+// This class provides access to microdump memory regions.
+// See memory_region.h for documentation.
+class MicrodumpMemoryRegion : public MemoryRegion {
+ public:
+  MicrodumpMemoryRegion();
+  virtual ~MicrodumpMemoryRegion() {}
+
+  // Set this region's address and contents. If we have placed an
+  // instance of this class in a test fixture class, individual tests
+  // can use this to provide the region's contents.
+  void Init(uint64_t base_address, const std::vector<uint8_t>& contents);
+
+  virtual uint64_t GetBase() const;
+  virtual uint32_t GetSize() const;
+
+  virtual bool GetMemoryAtAddress(uint64_t address, uint8_t* value) const;
+  virtual bool GetMemoryAtAddress(uint64_t address, uint16_t* value) const;
+  virtual bool GetMemoryAtAddress(uint64_t address, uint32_t* value) const;
+  virtual bool GetMemoryAtAddress(uint64_t address, uint64_t* value) const;
+
+  // Print a human-readable representation of the object to stdout.
+  virtual void Print() const;
+
+ private:
+  // Fetch a little-endian value from ADDRESS in contents_ whose size
+  // is BYTES, and store it in *VALUE.  Returns true on success.
+  template<typename ValueType>
+  bool GetMemoryLittleEndian(uint64_t address, ValueType* value) const;
+
+  uint64_t base_address_;
+  std::vector<uint8_t> contents_;
+};
+
+// Microdump is the user's interface to a microdump file.  It provides access to
+// the microdump's context, memory regions and modules.
+class Microdump {
+ public:
+  explicit Microdump(const string& contents);
+  virtual ~Microdump() {}
+
+  DumpContext* GetContext() { return context_.get(); }
+  MicrodumpMemoryRegion* GetMemory() { return stack_region_.get(); }
+  MicrodumpModules* GetModules() { return modules_.get(); }
+  SystemInfo* GetSystemInfo() { return system_info_.get(); }
+
+ private:
+  scoped_ptr<MicrodumpContext> context_;
+  scoped_ptr<MicrodumpMemoryRegion> stack_region_;
+  scoped_ptr<MicrodumpModules> modules_;
+  scoped_ptr<SystemInfo> system_info_;
+};
+
+}  // namespace google_breakpad
+
+#endif  // GOOGLE_BREAKPAD_PROCESSOR_MICRODUMP_H__
+
diff --git a/google-breakpad/src/google_breakpad/processor/microdump_processor.h b/google-breakpad/src/google_breakpad/processor/microdump_processor.h
new file mode 100644
index 0000000..1322a01
--- /dev/null
+++ b/google-breakpad/src/google_breakpad/processor/microdump_processor.h
@@ -0,0 +1,63 @@
+// Copyright (c) 2014, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// The processor for microdump (a reduced dump containing only the state of the
+// crashing thread). See crbug.com/410294 for more info and design docs.
+
+#ifndef GOOGLE_BREAKPAD_PROCESSOR_MICRODUMP_PROCESSOR_H__
+#define GOOGLE_BREAKPAD_PROCESSOR_MICRODUMP_PROCESSOR_H__
+
+#include <string>
+
+#include "common/using_std_string.h"
+#include "google_breakpad/processor/process_result.h"
+
+namespace google_breakpad {
+
+class ProcessState;
+class StackFrameSymbolizer;
+ 
+class MicrodumpProcessor {
+ public:
+  // Initializes the MicrodumpProcessor with a stack frame symbolizer.
+  // Does not take ownership of frame_symbolizer, which must NOT be NULL.
+  explicit MicrodumpProcessor(StackFrameSymbolizer* frame_symbolizer);
+
+  virtual ~MicrodumpProcessor();
+
+  // Processes the microdump contents and fills process_state with the result.
+  google_breakpad::ProcessResult Process(const string& microdump_contents,
+                                         ProcessState* process_state);
+ private:
+  StackFrameSymbolizer* frame_symbolizer_;
+};
+
+}  // namespace google_breakpad
+
+#endif  // GOOGLE_BREAKPAD_PROCESSOR_MICRODUMP_PROCESSOR_H__
diff --git a/google-breakpad/src/google_breakpad/processor/minidump.h b/google-breakpad/src/google_breakpad/processor/minidump.h
new file mode 100644
index 0000000..51f1502
--- /dev/null
+++ b/google-breakpad/src/google_breakpad/processor/minidump.h
@@ -0,0 +1,1030 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// minidump.h: A minidump reader.
+//
+// The basic structure of this module tracks the structure of the minidump
+// file itself.  At the top level, a minidump file is represented by a
+// Minidump object.  Like most other classes in this module, Minidump
+// provides a Read method that initializes the object with information from
+// the file.  Most of the classes in this file are wrappers around the
+// "raw" structures found in the minidump file itself, and defined in
+// minidump_format.h.  For example, each thread is represented by a
+// MinidumpThread object, whose parameters are specified in an MDRawThread
+// structure.  A properly byte-swapped MDRawThread can be obtained from a
+// MinidumpThread easily by calling its thread() method.
+//
+// Most of the module lazily reads only the portion of the minidump file
+// necessary to fulfill the user's request.  Calling Minidump::Read
+// only reads the minidump's directory.  The thread list is not read until
+// it is needed, and even once it's read, the memory regions for each
+// thread's stack aren't read until they're needed.  This strategy avoids
+// unnecessary file input, and allocating memory for data in which the user
+// has no interest.  Note that although memory allocations for a typical
+// minidump file are not particularly large, it is possible for legitimate
+// minidumps to be sizable.  A full-memory minidump, for example, contains
+// a snapshot of the entire mapped memory space.  Even a normal minidump,
+// with stack memory only, can be large if, for example, the dump was
+// generated in response to a crash that occurred due to an infinite-
+// recursion bug that caused the stack's limits to be exceeded.  Finally,
+// some users of this library will unfortunately find themselves in the
+// position of having to process potentially-hostile minidumps that might
+// attempt to cause problems by forcing the minidump processor to over-
+// allocate memory.
+//
+// Memory management in this module is based on a strict
+// you-don't-own-anything policy.  The only object owned by the user is
+// the top-level Minidump object, the creation and destruction of which
+// must be the user's own responsibility.  All other objects obtained
+// through interaction with this module are ultimately owned by the
+// Minidump object, and will be freed upon the Minidump object's destruction.
+// Because memory regions can potentially involve large allocations, a
+// FreeMemory method is provided by MinidumpMemoryRegion, allowing the user
+// to release data when it is no longer needed.  Use of this method is
+// optional but recommended.  If freed data is later required, it will
+// be read back in from the minidump file again.
+//
+// There is one exception to this memory management policy:
+// Minidump::ReadString will return a string object to the user, and the user
+// is responsible for its deletion.
+//
+// Author: Mark Mentovai
+
+#ifndef GOOGLE_BREAKPAD_PROCESSOR_MINIDUMP_H__
+#define GOOGLE_BREAKPAD_PROCESSOR_MINIDUMP_H__
+
+#ifndef _WIN32
+#include <unistd.h>
+#endif
+
+#include <iostream>
+#include <map>
+#include <string>
+#include <vector>
+
+#include "common/using_std_string.h"
+#include "google_breakpad/processor/code_module.h"
+#include "google_breakpad/processor/code_modules.h"
+#include "google_breakpad/processor/dump_context.h"
+#include "google_breakpad/processor/dump_object.h"
+#include "google_breakpad/processor/memory_region.h"
+
+
+namespace google_breakpad {
+
+
+using std::map;
+using std::vector;
+
+
+class Minidump;
+template<typename AddressType, typename EntryType> class RangeMap;
+
+
+// MinidumpObject is the base of all Minidump* objects except for Minidump
+// itself.
+class MinidumpObject : public DumpObject {
+ public:
+  virtual ~MinidumpObject() {}
+
+ protected:
+  explicit MinidumpObject(Minidump* minidump);
+
+  // Refers to the Minidump object that is the ultimate parent of this
+  // Some MinidumpObjects are owned by other MinidumpObjects, but at the
+  // root of the ownership tree is always a Minidump.  The Minidump object
+  // is kept here for access to its seeking and reading facilities, and
+  // for access to data about the minidump file itself, such as whether
+  // it should be byte-swapped.
+  Minidump* minidump_;
+};
+
+
+// This class exists primarily to provide a virtual destructor in a base
+// class common to all objects that might be stored in
+// Minidump::mStreamObjects.  Some object types will never be stored in
+// Minidump::mStreamObjects, but are represented as streams and adhere to the
+// same interface, and may be derived from this class.
+class MinidumpStream : public MinidumpObject {
+ public:
+  virtual ~MinidumpStream() {}
+
+ protected:
+  explicit MinidumpStream(Minidump* minidump);
+
+ private:
+  // Populate (and validate) the MinidumpStream.  minidump_ is expected
+  // to be positioned at the beginning of the stream, so that the next
+  // read from the minidump will be at the beginning of the stream.
+  // expected_size should be set to the stream's length as contained in
+  // the MDRawDirectory record or other identifying record.  A class
+  // that implements MinidumpStream can compare expected_size to a
+  // known size as an integrity check.
+  virtual bool Read(uint32_t expected_size) = 0;
+};
+
+
+// MinidumpContext carries a CPU-specific MDRawContext structure, which
+// contains CPU context such as register states.  Each thread has its
+// own context, and the exception record, if present, also has its own
+// context.  Note that if the exception record is present, the context it
+// refers to is probably what the user wants to use for the exception
+// thread, instead of that thread's own context.  The exception thread's
+// context (as opposed to the exception record's context) will contain
+// context for the exception handler (which performs minidump generation),
+// and not the context that caused the exception (which is probably what the
+// user wants).
+class MinidumpContext : public DumpContext {
+ public:
+  virtual ~MinidumpContext();
+
+ protected:
+  explicit MinidumpContext(Minidump* minidump);
+
+ private:
+  friend class MinidumpThread;
+  friend class MinidumpException;
+
+  bool Read(uint32_t expected_size);
+
+  // If the minidump contains a SYSTEM_INFO_STREAM, makes sure that the
+  // system info stream gives an appropriate CPU type matching the context
+  // CPU type in context_cpu_type.  Returns false if the CPU type does not
+  // match.  Returns true if the CPU type matches or if the minidump does
+  // not contain a system info stream.
+  bool CheckAgainstSystemInfo(uint32_t context_cpu_type);
+
+  // Refers to the Minidump object that is the ultimate parent of this
+  // Some MinidumpObjects are owned by other MinidumpObjects, but at the
+  // root of the ownership tree is always a Minidump.  The Minidump object
+  // is kept here for access to its seeking and reading facilities, and
+  // for access to data about the minidump file itself, such as whether
+  // it should be byte-swapped.
+  Minidump* minidump_;
+};
+
+
+// MinidumpMemoryRegion does not wrap any MDRaw structure, and only contains
+// a reference to an MDMemoryDescriptor.  This object is intended to wrap
+// portions of a minidump file that contain memory dumps.  In normal
+// minidumps, each MinidumpThread owns a MinidumpMemoryRegion corresponding
+// to the thread's stack memory.  MinidumpMemoryList also gives access to
+// memory regions in its list as MinidumpMemoryRegions.  This class
+// adheres to MemoryRegion so that it may be used as a data provider to
+// the Stackwalker family of classes.
+class MinidumpMemoryRegion : public MinidumpObject,
+                             public MemoryRegion {
+ public:
+  virtual ~MinidumpMemoryRegion();
+
+  static void set_max_bytes(uint32_t max_bytes) { max_bytes_ = max_bytes; }
+  static uint32_t max_bytes() { return max_bytes_; }
+
+  // Returns a pointer to the base of the memory region.  Returns the
+  // cached value if available, otherwise, reads the minidump file and
+  // caches the memory region.
+  const uint8_t* GetMemory() const;
+
+  // The address of the base of the memory region.
+  uint64_t GetBase() const;
+
+  // The size, in bytes, of the memory region.
+  uint32_t GetSize() const;
+
+  // Frees the cached memory region, if cached.
+  void FreeMemory();
+
+  // Obtains the value of memory at the pointer specified by address.
+  bool GetMemoryAtAddress(uint64_t address, uint8_t*  value) const;
+  bool GetMemoryAtAddress(uint64_t address, uint16_t* value) const;
+  bool GetMemoryAtAddress(uint64_t address, uint32_t* value) const;
+  bool GetMemoryAtAddress(uint64_t address, uint64_t* value) const;
+
+  // Print a human-readable representation of the object to stdout.
+  void Print() const;
+
+ protected:
+  explicit MinidumpMemoryRegion(Minidump* minidump);
+
+ private:
+  friend class MinidumpThread;
+  friend class MinidumpMemoryList;
+
+  // Identify the base address and size of the memory region, and the
+  // location it may be found in the minidump file.
+  void SetDescriptor(MDMemoryDescriptor* descriptor);
+
+  // Implementation for GetMemoryAtAddress
+  template<typename T> bool GetMemoryAtAddressInternal(uint64_t address,
+                                                       T*        value) const;
+
+  // The largest memory region that will be read from a minidump.  The
+  // default is 1MB.
+  static uint32_t max_bytes_;
+
+  // Base address and size of the memory region, and its position in the
+  // minidump file.
+  MDMemoryDescriptor* descriptor_;
+
+  // Cached memory.
+  mutable vector<uint8_t>* memory_;
+};
+
+
+// MinidumpThread contains information about a thread of execution,
+// including a snapshot of the thread's stack and CPU context.  For
+// the thread that caused an exception, the context carried by
+// MinidumpException is probably desired instead of the CPU context
+// provided here.
+// Note that a MinidumpThread may be valid() even if it does not
+// contain a memory region or context.
+class MinidumpThread : public MinidumpObject {
+ public:
+  virtual ~MinidumpThread();
+
+  const MDRawThread* thread() const { return valid_ ? &thread_ : NULL; }
+  // GetMemory may return NULL even if the MinidumpThread is valid,
+  // if the thread memory cannot be read.
+  virtual MinidumpMemoryRegion* GetMemory();
+  // GetContext may return NULL even if the MinidumpThread is valid.
+  virtual MinidumpContext* GetContext();
+
+  // The thread ID is used to determine if a thread is the exception thread,
+  // so a special getter is provided to retrieve this data from the
+  // MDRawThread structure.  Returns false if the thread ID cannot be
+  // determined.
+  virtual bool GetThreadID(uint32_t *thread_id) const;
+
+  // Print a human-readable representation of the object to stdout.
+  void Print();
+
+  // Returns the start address of the thread stack memory region.  Returns 0 if
+  // MinidumpThread is invalid.  Note that this method can be called even when
+  // the thread memory cannot be read and GetMemory returns NULL.
+  virtual uint64_t GetStartOfStackMemoryRange() const;
+
+ protected:
+  explicit MinidumpThread(Minidump* minidump);
+
+ private:
+  // These objects are managed by MinidumpThreadList.
+  friend class MinidumpThreadList;
+
+  // This works like MinidumpStream::Read, but is driven by
+  // MinidumpThreadList.  No size checking is done, because
+  // MinidumpThreadList handles that directly.
+  bool Read();
+
+  MDRawThread           thread_;
+  MinidumpMemoryRegion* memory_;
+  MinidumpContext*      context_;
+};
+
+
+// MinidumpThreadList contains all of the threads (as MinidumpThreads) in
+// a process.
+class MinidumpThreadList : public MinidumpStream {
+ public:
+  virtual ~MinidumpThreadList();
+
+  static void set_max_threads(uint32_t max_threads) {
+    max_threads_ = max_threads;
+  }
+  static uint32_t max_threads() { return max_threads_; }
+
+  virtual unsigned int thread_count() const {
+    return valid_ ? thread_count_ : 0;
+  }
+
+  // Sequential access to threads.
+  virtual MinidumpThread* GetThreadAtIndex(unsigned int index) const;
+
+  // Random access to threads.
+  MinidumpThread* GetThreadByID(uint32_t thread_id);
+
+  // Print a human-readable representation of the object to stdout.
+  void Print();
+
+ protected:
+  explicit MinidumpThreadList(Minidump* aMinidump);
+
+ private:
+  friend class Minidump;
+
+  typedef map<uint32_t, MinidumpThread*> IDToThreadMap;
+  typedef vector<MinidumpThread> MinidumpThreads;
+
+  static const uint32_t kStreamType = MD_THREAD_LIST_STREAM;
+
+  bool Read(uint32_t aExpectedSize);
+
+  // The largest number of threads that will be read from a minidump.  The
+  // default is 256.
+  static uint32_t max_threads_;
+
+  // Access to threads using the thread ID as the key.
+  IDToThreadMap    id_to_thread_map_;
+
+  // The list of threads.
+  MinidumpThreads* threads_;
+  uint32_t        thread_count_;
+};
+
+
+// MinidumpModule wraps MDRawModule, which contains information about loaded
+// code modules.  Access is provided to various data referenced indirectly
+// by MDRawModule, such as the module's name and a specification for where
+// to locate debugging information for the module.
+class MinidumpModule : public MinidumpObject,
+                       public CodeModule {
+ public:
+  virtual ~MinidumpModule();
+
+  static void set_max_cv_bytes(uint32_t max_cv_bytes) {
+    max_cv_bytes_ = max_cv_bytes;
+  }
+  static uint32_t max_cv_bytes() { return max_cv_bytes_; }
+
+  static void set_max_misc_bytes(uint32_t max_misc_bytes) {
+    max_misc_bytes_ = max_misc_bytes;
+  }
+  static uint32_t max_misc_bytes() { return max_misc_bytes_; }
+
+  const MDRawModule* module() const { return valid_ ? &module_ : NULL; }
+
+  // CodeModule implementation
+  virtual uint64_t base_address() const {
+    return valid_ ? module_.base_of_image : static_cast<uint64_t>(-1);
+  }
+  virtual uint64_t size() const { return valid_ ? module_.size_of_image : 0; }
+  virtual string code_file() const;
+  virtual string code_identifier() const;
+  virtual string debug_file() const;
+  virtual string debug_identifier() const;
+  virtual string version() const;
+  virtual const CodeModule* Copy() const;
+
+  // The CodeView record, which contains information to locate the module's
+  // debugging information (pdb).  This is returned as uint8_t* because
+  // the data can be of types MDCVInfoPDB20* or MDCVInfoPDB70*, or it may be
+  // of a type unknown to Breakpad, in which case the raw data will still be
+  // returned but no byte-swapping will have been performed.  Check the
+  // record's signature in the first four bytes to differentiate between
+  // the various types.  Current toolchains generate modules which carry
+  // MDCVInfoPDB70 by default.  Returns a pointer to the CodeView record on
+  // success, and NULL on failure.  On success, the optional |size| argument
+  // is set to the size of the CodeView record.
+  const uint8_t* GetCVRecord(uint32_t* size);
+
+  // The miscellaneous debug record, which is obsolete.  Current toolchains
+  // do not generate this type of debugging information (dbg), and this
+  // field is not expected to be present.  Returns a pointer to the debugging
+  // record on success, and NULL on failure.  On success, the optional |size|
+  // argument is set to the size of the debugging record.
+  const MDImageDebugMisc* GetMiscRecord(uint32_t* size);
+
+  // Print a human-readable representation of the object to stdout.
+  void Print();
+
+ private:
+  // These objects are managed by MinidumpModuleList.
+  friend class MinidumpModuleList;
+
+  explicit MinidumpModule(Minidump* minidump);
+
+  // This works like MinidumpStream::Read, but is driven by
+  // MinidumpModuleList.  No size checking is done, because
+  // MinidumpModuleList handles that directly.
+  bool Read();
+
+  // Reads indirectly-referenced data, including the module name, CodeView
+  // record, and miscellaneous debugging record.  This is necessary to allow
+  // MinidumpModuleList to fully construct MinidumpModule objects without
+  // requiring seeks to read a contiguous set of MinidumpModule objects.
+  // All auxiliary data should be available when Read is called, in order to
+  // allow the CodeModule getters to be const methods.
+  bool ReadAuxiliaryData();
+
+  // The largest number of bytes that will be read from a minidump for a
+  // CodeView record or miscellaneous debugging record, respectively.  The
+  // default for each is 1024.
+  static uint32_t max_cv_bytes_;
+  static uint32_t max_misc_bytes_;
+
+  // True after a successful Read.  This is different from valid_, which is
+  // not set true until ReadAuxiliaryData also completes successfully.
+  // module_valid_ is only used by ReadAuxiliaryData and the functions it
+  // calls to determine whether the object is ready for auxiliary data to
+  // be read.
+  bool              module_valid_;
+
+  // True if debug info was read from the module.  Certain modules
+  // may contain debug records in formats we don't support,
+  // so we can just set this to false to ignore them.
+  bool              has_debug_info_;
+
+  MDRawModule       module_;
+
+  // Cached module name.
+  const string*     name_;
+
+  // Cached CodeView record - this is MDCVInfoPDB20 or (likely)
+  // MDCVInfoPDB70, or possibly something else entirely.  Stored as a uint8_t
+  // because the structure contains a variable-sized string and its exact
+  // size cannot be known until it is processed.
+  vector<uint8_t>* cv_record_;
+
+  // If cv_record_ is present, cv_record_signature_ contains a copy of the
+  // CodeView record's first four bytes, for ease of determinining the
+  // type of structure that cv_record_ contains.
+  uint32_t cv_record_signature_;
+
+  // Cached MDImageDebugMisc (usually not present), stored as uint8_t
+  // because the structure contains a variable-sized string and its exact
+  // size cannot be known until it is processed.
+  vector<uint8_t>* misc_record_;
+};
+
+
+// MinidumpModuleList contains all of the loaded code modules for a process
+// in the form of MinidumpModules.  It maintains a map of these modules
+// so that it may easily provide a code module corresponding to a specific
+// address.
+class MinidumpModuleList : public MinidumpStream,
+                           public CodeModules {
+ public:
+  virtual ~MinidumpModuleList();
+
+  static void set_max_modules(uint32_t max_modules) {
+    max_modules_ = max_modules;
+  }
+  static uint32_t max_modules() { return max_modules_; }
+
+  // CodeModules implementation.
+  virtual unsigned int module_count() const {
+    return valid_ ? module_count_ : 0;
+  }
+  virtual const MinidumpModule* GetModuleForAddress(uint64_t address) const;
+  virtual const MinidumpModule* GetMainModule() const;
+  virtual const MinidumpModule* GetModuleAtSequence(
+      unsigned int sequence) const;
+  virtual const MinidumpModule* GetModuleAtIndex(unsigned int index) const;
+  virtual const CodeModules* Copy() const;
+
+  // Print a human-readable representation of the object to stdout.
+  void Print();
+
+ protected:
+  explicit MinidumpModuleList(Minidump* minidump);
+
+ private:
+  friend class Minidump;
+
+  typedef vector<MinidumpModule> MinidumpModules;
+
+  static const uint32_t kStreamType = MD_MODULE_LIST_STREAM;
+
+  bool Read(uint32_t expected_size);
+
+  // The largest number of modules that will be read from a minidump.  The
+  // default is 1024.
+  static uint32_t max_modules_;
+
+  // Access to modules using addresses as the key.
+  RangeMap<uint64_t, unsigned int> *range_map_;
+
+  MinidumpModules *modules_;
+  uint32_t module_count_;
+};
+
+
+// MinidumpMemoryList corresponds to a minidump's MEMORY_LIST_STREAM stream,
+// which references the snapshots of all of the memory regions contained
+// within the minidump.  For a normal minidump, this includes stack memory
+// (also referenced by each MinidumpThread, in fact, the MDMemoryDescriptors
+// here and in MDRawThread both point to exactly the same data in a
+// minidump file, conserving space), as well as a 256-byte snapshot of memory
+// surrounding the instruction pointer in the case of an exception.  Other
+// types of minidumps may contain significantly more memory regions.  Full-
+// memory minidumps contain all of a process' mapped memory.
+class MinidumpMemoryList : public MinidumpStream {
+ public:
+  virtual ~MinidumpMemoryList();
+
+  static void set_max_regions(uint32_t max_regions) {
+    max_regions_ = max_regions;
+  }
+  static uint32_t max_regions() { return max_regions_; }
+
+  unsigned int region_count() const { return valid_ ? region_count_ : 0; }
+
+  // Sequential access to memory regions.
+  MinidumpMemoryRegion* GetMemoryRegionAtIndex(unsigned int index);
+
+  // Random access to memory regions.  Returns the region encompassing
+  // the address identified by address.
+  virtual MinidumpMemoryRegion* GetMemoryRegionForAddress(uint64_t address);
+
+  // Print a human-readable representation of the object to stdout.
+  void Print();
+
+ private:
+  friend class Minidump;
+  friend class MockMinidumpMemoryList;
+
+  typedef vector<MDMemoryDescriptor>   MemoryDescriptors;
+  typedef vector<MinidumpMemoryRegion> MemoryRegions;
+
+  static const uint32_t kStreamType = MD_MEMORY_LIST_STREAM;
+
+  explicit MinidumpMemoryList(Minidump* minidump);
+
+  bool Read(uint32_t expected_size);
+
+  // The largest number of memory regions that will be read from a minidump.
+  // The default is 256.
+  static uint32_t max_regions_;
+
+  // Access to memory regions using addresses as the key.
+  RangeMap<uint64_t, unsigned int> *range_map_;
+
+  // The list of descriptors.  This is maintained separately from the list
+  // of regions, because MemoryRegion doesn't own its MemoryDescriptor, it
+  // maintains a pointer to it.  descriptors_ provides the storage for this
+  // purpose.
+  MemoryDescriptors *descriptors_;
+
+  // The list of regions.
+  MemoryRegions *regions_;
+  uint32_t region_count_;
+};
+
+
+// MinidumpException wraps MDRawExceptionStream, which contains information
+// about the exception that caused the minidump to be generated, if the
+// minidump was generated in an exception handler called as a result of an
+// exception.  It also provides access to a MinidumpContext object, which
+// contains the CPU context for the exception thread at the time the exception
+// occurred.
+class MinidumpException : public MinidumpStream {
+ public:
+  virtual ~MinidumpException();
+
+  const MDRawExceptionStream* exception() const {
+    return valid_ ? &exception_ : NULL;
+  }
+
+  // The thread ID is used to determine if a thread is the exception thread,
+  // so a special getter is provided to retrieve this data from the
+  // MDRawExceptionStream structure.  Returns false if the thread ID cannot
+  // be determined.
+  bool GetThreadID(uint32_t *thread_id) const;
+
+  MinidumpContext* GetContext();
+
+  // Print a human-readable representation of the object to stdout.
+  void Print();
+
+ private:
+  friend class Minidump;
+
+  static const uint32_t kStreamType = MD_EXCEPTION_STREAM;
+
+  explicit MinidumpException(Minidump* minidump);
+
+  bool Read(uint32_t expected_size);
+
+  MDRawExceptionStream exception_;
+  MinidumpContext*     context_;
+};
+
+// MinidumpAssertion wraps MDRawAssertionInfo, which contains information
+// about an assertion that caused the minidump to be generated.
+class MinidumpAssertion : public MinidumpStream {
+ public:
+  virtual ~MinidumpAssertion();
+
+  const MDRawAssertionInfo* assertion() const {
+    return valid_ ? &assertion_ : NULL;
+  }
+
+  string expression() const {
+    return valid_ ? expression_ : "";
+  }
+
+  string function() const {
+    return valid_ ? function_ : "";
+  }
+
+  string file() const {
+    return valid_ ? file_ : "";
+  }
+
+  // Print a human-readable representation of the object to stdout.
+  void Print();
+
+ private:
+  friend class Minidump;
+
+  static const uint32_t kStreamType = MD_ASSERTION_INFO_STREAM;
+
+  explicit MinidumpAssertion(Minidump* minidump);
+
+  bool Read(uint32_t expected_size);
+
+  MDRawAssertionInfo assertion_;
+  string expression_;
+  string function_;
+  string file_;
+};
+
+
+// MinidumpSystemInfo wraps MDRawSystemInfo and provides information about
+// the system on which the minidump was generated.  See also MinidumpMiscInfo.
+class MinidumpSystemInfo : public MinidumpStream {
+ public:
+  virtual ~MinidumpSystemInfo();
+
+  const MDRawSystemInfo* system_info() const {
+    return valid_ ? &system_info_ : NULL;
+  }
+
+  // GetOS and GetCPU return textual representations of the operating system
+  // and CPU that produced the minidump.  Unlike most other Minidump* methods,
+  // they return string objects, not weak pointers.  Defined values for
+  // GetOS() are "mac", "windows", and "linux".  Defined values for GetCPU
+  // are "x86" and "ppc".  These methods return an empty string when their
+  // values are unknown.
+  string GetOS();
+  string GetCPU();
+
+  // I don't know what CSD stands for, but this field is documented as
+  // returning a textual representation of the OS service pack.  On other
+  // platforms, this provides additional information about an OS version
+  // level beyond major.minor.micro.  Returns NULL if unknown.
+  const string* GetCSDVersion();
+
+  // If a CPU vendor string can be determined, returns a pointer to it,
+  // otherwise, returns NULL.  CPU vendor strings can be determined from
+  // x86 CPUs with CPUID 0.
+  const string* GetCPUVendor();
+
+  // Print a human-readable representation of the object to stdout.
+  void Print();
+
+ protected:
+  explicit MinidumpSystemInfo(Minidump* minidump);
+  MDRawSystemInfo system_info_;
+
+  // Textual representation of the OS service pack, for minidumps produced
+  // by MiniDumpWriteDump on Windows.
+  const string* csd_version_;
+
+ private:
+  friend class Minidump;
+
+  static const uint32_t kStreamType = MD_SYSTEM_INFO_STREAM;
+
+  bool Read(uint32_t expected_size);
+
+  // A string identifying the CPU vendor, if known.
+  const string* cpu_vendor_;
+};
+
+
+// MinidumpMiscInfo wraps MDRawMiscInfo and provides information about
+// the process that generated the minidump, and optionally additional system
+// information.  See also MinidumpSystemInfo.
+class MinidumpMiscInfo : public MinidumpStream {
+ public:
+  const MDRawMiscInfo* misc_info() const {
+    return valid_ ? &misc_info_ : NULL;
+  }
+
+  // Print a human-readable representation of the object to stdout.
+  void Print();
+
+ private:
+  friend class Minidump;
+  friend class TestMinidumpMiscInfo;
+
+  static const uint32_t kStreamType = MD_MISC_INFO_STREAM;
+
+  explicit MinidumpMiscInfo(Minidump* minidump_);
+
+  bool Read(uint32_t expected_size_);
+
+  MDRawMiscInfo misc_info_;
+
+  // Populated by Read.  Contains the converted strings from the corresponding
+  // UTF-16 fields in misc_info_
+  string standard_name_;
+  string daylight_name_;
+  string build_string_;
+  string dbg_bld_str_;
+};
+
+
+// MinidumpBreakpadInfo wraps MDRawBreakpadInfo, which is an optional stream in
+// a minidump that provides additional information about the process state
+// at the time the minidump was generated.
+class MinidumpBreakpadInfo : public MinidumpStream {
+ public:
+  const MDRawBreakpadInfo* breakpad_info() const {
+    return valid_ ? &breakpad_info_ : NULL;
+  }
+
+  // These thread IDs are used to determine if threads deserve special
+  // treatment, so special getters are provided to retrieve this data from
+  // the MDRawBreakpadInfo structure.  The getters return false if the thread
+  // IDs cannot be determined.
+  bool GetDumpThreadID(uint32_t *thread_id) const;
+  bool GetRequestingThreadID(uint32_t *thread_id) const;
+
+  // Print a human-readable representation of the object to stdout.
+  void Print();
+
+ private:
+  friend class Minidump;
+
+  static const uint32_t kStreamType = MD_BREAKPAD_INFO_STREAM;
+
+  explicit MinidumpBreakpadInfo(Minidump* minidump_);
+
+  bool Read(uint32_t expected_size_);
+
+  MDRawBreakpadInfo breakpad_info_;
+};
+
+// MinidumpMemoryInfo wraps MDRawMemoryInfo, which provides information
+// about mapped memory regions in a process, including their ranges
+// and protection.
+class MinidumpMemoryInfo : public MinidumpObject {
+ public:
+  const MDRawMemoryInfo* info() const { return valid_ ? &memory_info_ : NULL; }
+
+  // The address of the base of the memory region.
+  uint64_t GetBase() const { return valid_ ? memory_info_.base_address : 0; }
+
+  // The size, in bytes, of the memory region.
+  uint64_t GetSize() const { return valid_ ? memory_info_.region_size : 0; }
+
+  // Return true if the memory protection allows execution.
+  bool IsExecutable() const;
+
+  // Return true if the memory protection allows writing.
+  bool IsWritable() const;
+
+  // Print a human-readable representation of the object to stdout.
+  void Print();
+
+ private:
+  // These objects are managed by MinidumpMemoryInfoList.
+  friend class MinidumpMemoryInfoList;
+
+  explicit MinidumpMemoryInfo(Minidump* minidump);
+
+  // This works like MinidumpStream::Read, but is driven by
+  // MinidumpMemoryInfoList.  No size checking is done, because
+  // MinidumpMemoryInfoList handles that directly.
+  bool Read();
+
+  MDRawMemoryInfo memory_info_;
+};
+
+// MinidumpMemoryInfoList contains a list of information about
+// mapped memory regions for a process in the form of MDRawMemoryInfo.
+// It maintains a map of these structures so that it may easily provide
+// info corresponding to a specific address.
+class MinidumpMemoryInfoList : public MinidumpStream {
+ public:
+  virtual ~MinidumpMemoryInfoList();
+
+  unsigned int info_count() const { return valid_ ? info_count_ : 0; }
+
+  const MinidumpMemoryInfo* GetMemoryInfoForAddress(uint64_t address) const;
+  const MinidumpMemoryInfo* GetMemoryInfoAtIndex(unsigned int index) const;
+
+  // Print a human-readable representation of the object to stdout.
+  void Print();
+
+ private:
+  friend class Minidump;
+
+  typedef vector<MinidumpMemoryInfo> MinidumpMemoryInfos;
+
+  static const uint32_t kStreamType = MD_MEMORY_INFO_LIST_STREAM;
+
+  explicit MinidumpMemoryInfoList(Minidump* minidump);
+
+  bool Read(uint32_t expected_size);
+
+  // Access to memory info using addresses as the key.
+  RangeMap<uint64_t, unsigned int> *range_map_;
+
+  MinidumpMemoryInfos* infos_;
+  uint32_t info_count_;
+};
+
+
+// Minidump is the user's interface to a minidump file.  It wraps MDRawHeader
+// and provides access to the minidump's top-level stream directory.
+class Minidump {
+ public:
+  // path is the pathname of a file containing the minidump.
+  explicit Minidump(const string& path);
+  // input is an istream wrapping minidump data. Minidump holds a
+  // weak pointer to input, and the caller must ensure that the stream
+  // is valid as long as the Minidump object is.
+  explicit Minidump(std::istream& input);
+
+  virtual ~Minidump();
+
+  // path may be empty if the minidump was not opened from a file
+  virtual string path() const {
+    return path_;
+  }
+  static void set_max_streams(uint32_t max_streams) {
+    max_streams_ = max_streams;
+  }
+  static uint32_t max_streams() { return max_streams_; }
+
+  static void set_max_string_length(uint32_t max_string_length) {
+    max_string_length_ = max_string_length;
+  }
+  static uint32_t max_string_length() { return max_string_length_; }
+
+  virtual const MDRawHeader* header() const { return valid_ ? &header_ : NULL; }
+
+  // Reads the CPU information from the system info stream and generates the
+  // appropriate CPU flags.  The returned context_cpu_flags are the same as
+  // if the CPU type bits were set in the context_flags of a context record.
+  // On success, context_cpu_flags will have the flags that identify the CPU.
+  // If a system info stream is missing, context_cpu_flags will be 0.
+  // Returns true if the current position in the stream was not changed.
+  // Returns false when the current location in the stream was changed and the
+  // attempt to restore the original position failed.
+  bool GetContextCPUFlagsFromSystemInfo(uint32_t* context_cpu_flags);
+
+  // Reads the minidump file's header and top-level stream directory.
+  // The minidump is expected to be positioned at the beginning of the
+  // header.  Read() sets up the stream list and map, and validates the
+  // Minidump object.
+  virtual bool Read();
+
+  // The next set of methods are stubs that call GetStream.  They exist to
+  // force code generation of the templatized API within the module, and
+  // to avoid exposing an ugly API (GetStream needs to accept a garbage
+  // parameter).
+  virtual MinidumpThreadList* GetThreadList();
+  virtual MinidumpModuleList* GetModuleList();
+  virtual MinidumpMemoryList* GetMemoryList();
+  virtual MinidumpException* GetException();
+  virtual MinidumpAssertion* GetAssertion();
+  virtual MinidumpSystemInfo* GetSystemInfo();
+  virtual MinidumpMiscInfo* GetMiscInfo();
+  virtual MinidumpBreakpadInfo* GetBreakpadInfo();
+  virtual MinidumpMemoryInfoList* GetMemoryInfoList();
+
+  // The next set of methods are provided for users who wish to access
+  // data in minidump files directly, while leveraging the rest of
+  // this class and related classes to handle the basic minidump
+  // structure and known stream types.
+
+  unsigned int GetDirectoryEntryCount() const {
+    return valid_ ? header_.stream_count : 0;
+  }
+  const MDRawDirectory* GetDirectoryEntryAtIndex(unsigned int index) const;
+
+  // The next 2 methods are lower-level I/O routines.  They use fd_.
+
+  // Reads count bytes from the minidump at the current position into
+  // the storage area pointed to by bytes.  bytes must be of sufficient
+  // size.  After the read, the file position is advanced by count.
+  bool ReadBytes(void* bytes, size_t count);
+
+  // Sets the position of the minidump file to offset.
+  bool SeekSet(off_t offset);
+
+  // Returns the current position of the minidump file.
+  off_t Tell();
+
+  // The next 2 methods are medium-level I/O routines.
+
+  // ReadString returns a string which is owned by the caller!  offset
+  // specifies the offset that a length-encoded string is stored at in the
+  // minidump file.
+  string* ReadString(off_t offset);
+
+  // SeekToStreamType positions the file at the beginning of a stream
+  // identified by stream_type, and informs the caller of the stream's
+  // length by setting *stream_length.  Because stream_map maps each stream
+  // type to only one stream in the file, this might mislead the user into
+  // thinking that the stream that this seeks to is the only stream with
+  // type stream_type.  That can't happen for streams that these classes
+  // deal with directly, because they're only supposed to be present in the
+  // file singly, and that's verified when stream_map_ is built.  Users who
+  // are looking for other stream types should be aware of this
+  // possibility, and consider using GetDirectoryEntryAtIndex (possibly
+  // with GetDirectoryEntryCount) if expecting multiple streams of the same
+  // type in a single minidump file.
+  bool SeekToStreamType(uint32_t stream_type, uint32_t* stream_length);
+
+  bool swap() const { return valid_ ? swap_ : false; }
+
+  // Print a human-readable representation of the object to stdout.
+  void Print();
+
+ private:
+  // MinidumpStreamInfo is used in the MinidumpStreamMap.  It lets
+  // the Minidump object locate interesting streams quickly, and
+  // provides a convenient place to stash MinidumpStream objects.
+  struct MinidumpStreamInfo {
+    MinidumpStreamInfo() : stream_index(0), stream(NULL) {}
+    ~MinidumpStreamInfo() { delete stream; }
+
+    // Index into the MinidumpDirectoryEntries vector
+    unsigned int    stream_index;
+
+    // Pointer to the stream if cached, or NULL if not yet populated
+    MinidumpStream* stream;
+  };
+
+  typedef vector<MDRawDirectory> MinidumpDirectoryEntries;
+  typedef map<uint32_t, MinidumpStreamInfo> MinidumpStreamMap;
+
+  template<typename T> T* GetStream(T** stream);
+
+  // Opens the minidump file, or if already open, seeks to the beginning.
+  bool Open();
+
+  // The largest number of top-level streams that will be read from a minidump.
+  // Note that streams are only read (and only consume memory) as needed,
+  // when directed by the caller.  The default is 128.
+  static uint32_t max_streams_;
+
+  // The maximum length of a UTF-16 string that will be read from a minidump
+  // in 16-bit words.  The default is 1024.  UTF-16 strings are converted
+  // to UTF-8 when stored in memory, and each UTF-16 word will be represented
+  // by as many as 3 bytes in UTF-8.
+  static unsigned int max_string_length_;
+
+  MDRawHeader               header_;
+
+  // The list of streams.
+  MinidumpDirectoryEntries* directory_;
+
+  // Access to streams using the stream type as the key.
+  MinidumpStreamMap*        stream_map_;
+
+  // The pathname of the minidump file to process, set in the constructor.
+  // This may be empty if the minidump was opened directly from a stream.
+  const string              path_;
+
+  // The stream for all file I/O.  Used by ReadBytes and SeekSet.
+  // Set based on the path in Open, or directly in the constructor.
+  std::istream*             stream_;
+
+  // swap_ is true if the minidump file should be byte-swapped.  If the
+  // minidump was produced by a CPU that is other-endian than the CPU
+  // processing the minidump, this will be true.  If the two CPUs are
+  // same-endian, this will be false.
+  bool                      swap_;
+
+  // Validity of the Minidump structure, false immediately after
+  // construction or after a failed Read(); true following a successful
+  // Read().
+  bool                      valid_;
+};
+
+
+}  // namespace google_breakpad
+
+
+#endif  // GOOGLE_BREAKPAD_PROCESSOR_MINIDUMP_H__
diff --git a/google-breakpad/src/google_breakpad/processor/minidump_processor.h b/google-breakpad/src/google_breakpad/processor/minidump_processor.h
new file mode 100644
index 0000000..d2c94e2
--- /dev/null
+++ b/google-breakpad/src/google_breakpad/processor/minidump_processor.h
@@ -0,0 +1,141 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef GOOGLE_BREAKPAD_PROCESSOR_MINIDUMP_PROCESSOR_H__
+#define GOOGLE_BREAKPAD_PROCESSOR_MINIDUMP_PROCESSOR_H__
+
+#include <assert.h>
+#include <string>
+
+#include "common/using_std_string.h"
+#include "google_breakpad/common/breakpad_types.h"
+#include "google_breakpad/processor/process_result.h"
+
+namespace google_breakpad {
+
+class Minidump;
+class ProcessState;
+class StackFrameSymbolizer;
+class SourceLineResolverInterface;
+class SymbolSupplier;
+struct SystemInfo;
+
+class MinidumpProcessor {
+ public:
+  // Initializes this MinidumpProcessor.  supplier should be an
+  // implementation of the SymbolSupplier abstract base class.
+  MinidumpProcessor(SymbolSupplier* supplier,
+                    SourceLineResolverInterface* resolver);
+
+  // Initializes the MinidumpProcessor with the option of
+  // enabling the exploitability framework to analyze dumps
+  // for probable security relevance.
+  MinidumpProcessor(SymbolSupplier* supplier,
+                    SourceLineResolverInterface* resolver,
+                    bool enable_exploitability);
+
+  // Initializes the MinidumpProcessor with source line resolver helper, and
+  // the option of enabling the exploitability framework to analyze dumps
+  // for probable security relevance.
+  // Does not take ownership of resolver_helper, which must NOT be NULL.
+  MinidumpProcessor(StackFrameSymbolizer* stack_frame_symbolizer,
+                    bool enable_exploitability);
+
+  ~MinidumpProcessor();
+
+  // Processes the minidump file and fills process_state with the result.
+  ProcessResult Process(const string &minidump_file,
+                        ProcessState* process_state);
+
+  // Processes the minidump structure and fills process_state with the
+  // result.
+  ProcessResult Process(Minidump* minidump,
+                        ProcessState* process_state);
+  // Populates the cpu_* fields of the |info| parameter with textual
+  // representations of the CPU type that the minidump in |dump| was
+  // produced on.  Returns false if this information is not available in
+  // the minidump.
+  static bool GetCPUInfo(Minidump* dump, SystemInfo* info);
+
+  // Populates the os_* fields of the |info| parameter with textual
+  // representations of the operating system that the minidump in |dump|
+  // was produced on.  Returns false if this information is not available in
+  // the minidump.
+  static bool GetOSInfo(Minidump* dump, SystemInfo* info);
+
+  // Populates the |process_create_time| parameter with the create time of the
+  // crashed process.  Returns false if this information is not available in
+  // the minidump |dump|.
+  static bool GetProcessCreateTime(Minidump* dump,
+                                   uint32_t* process_create_time);
+
+  // Returns a textual representation of the reason that a crash occurred,
+  // if the minidump in dump was produced as a result of a crash.  Returns
+  // an empty string if this information cannot be determined.  If address
+  // is non-NULL, it will be set to contain the address that caused the
+  // exception, if this information is available.  This will be a code
+  // address when the crash was caused by problems such as illegal
+  // instructions or divisions by zero, or a data address when the crash
+  // was caused by a memory access violation.
+  static string GetCrashReason(Minidump* dump, uint64_t* address);
+
+  // This function returns true if the passed-in error code is
+  // something unrecoverable(i.e. retry should not happen).  For
+  // instance, if the minidump is corrupt, then it makes no sense to
+  // retry as we won't be able to glean additional information.
+  // However, as an example of the other case, the symbol supplier can
+  // return an error code indicating it was 'interrupted', which can
+  // happen of the symbols are fetched from a remote store, and a
+  // retry might be successful later on.
+  // You should not call this method with PROCESS_OK! Test for
+  // that separately before calling this.
+  static bool IsErrorUnrecoverable(ProcessResult p) {
+    assert(p !=  PROCESS_OK);
+    return (p != PROCESS_SYMBOL_SUPPLIER_INTERRUPTED);
+  }
+
+  // Returns a textual representation of an assertion included
+  // in the minidump.  Returns an empty string if this information
+  // does not exist or cannot be determined.
+  static string GetAssertion(Minidump* dump);
+
+ private:
+  StackFrameSymbolizer* frame_symbolizer_;
+  // Indicate whether resolver_helper_ is owned by this instance.
+  bool own_frame_symbolizer_;
+
+  // This flag enables the exploitability scanner which attempts to
+  // guess how likely it is that the crash represents an exploitable
+  // memory corruption issue.
+  bool enable_exploitability_;
+};
+
+}  // namespace google_breakpad
+
+#endif  // GOOGLE_BREAKPAD_PROCESSOR_MINIDUMP_PROCESSOR_H__
diff --git a/google-breakpad/src/google_breakpad/processor/process_result.h b/google-breakpad/src/google_breakpad/processor/process_result.h
new file mode 100644
index 0000000..15c7213
--- /dev/null
+++ b/google-breakpad/src/google_breakpad/processor/process_result.h
@@ -0,0 +1,66 @@
+// Copyright (c) 2014, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef GOOGLE_BREAKPAD_PROCESSOR_PROCESS_RESULT_H__
+#define GOOGLE_BREAKPAD_PROCESSOR_PROCESS_RESULT_H__
+
+namespace google_breakpad {
+
+// Return type for MinidumpProcessor or MicrodumpProcessor's Process()
+enum ProcessResult {
+  PROCESS_OK,                                  // The dump was processed
+                                               // successfully.
+
+  PROCESS_ERROR_MINIDUMP_NOT_FOUND,            // The minidump file was not
+                                               // found.
+
+  PROCESS_ERROR_NO_MINIDUMP_HEADER,            // The minidump file had no
+                                               // header.
+
+  PROCESS_ERROR_NO_THREAD_LIST,                // The minidump file has no
+                                               // thread list.
+
+  PROCESS_ERROR_GETTING_THREAD,                // There was an error getting one
+                                               // thread's data from th dump.
+
+  PROCESS_ERROR_GETTING_THREAD_ID,             // There was an error getting a
+                                               // thread id from the thread's
+                                               // data.
+
+  PROCESS_ERROR_DUPLICATE_REQUESTING_THREADS,  // There was more than one
+                                               // requesting thread.
+
+  PROCESS_SYMBOL_SUPPLIER_INTERRUPTED          // The dump processing was
+                                               // interrupted by the
+                                               // SymbolSupplier(not fatal).
+};
+
+}  // namespace google_breakpad
+
+#endif  // GOOGLE_BREAKPAD_PROCESSOR_PROCESS_RESULT_H__
diff --git a/google-breakpad/src/google_breakpad/processor/process_state.h b/google-breakpad/src/google_breakpad/processor/process_state.h
new file mode 100644
index 0000000..ac3b603
--- /dev/null
+++ b/google-breakpad/src/google_breakpad/processor/process_state.h
@@ -0,0 +1,189 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// process_state.h: A snapshot of a process, in a fully-digested state.
+//
+// Author: Mark Mentovai
+
+#ifndef GOOGLE_BREAKPAD_PROCESSOR_PROCESS_STATE_H__
+#define GOOGLE_BREAKPAD_PROCESSOR_PROCESS_STATE_H__
+
+#include <string>
+#include <vector>
+
+#include "common/using_std_string.h"
+#include "google_breakpad/common/breakpad_types.h"
+#include "google_breakpad/processor/system_info.h"
+#include "google_breakpad/processor/minidump.h"
+
+namespace google_breakpad {
+
+using std::vector;
+
+class CallStack;
+class CodeModules;
+
+enum ExploitabilityRating {
+  EXPLOITABILITY_HIGH,                 // The crash likely represents
+                                       // a exploitable memory corruption
+                                       // vulnerability.
+
+  EXPLOITABILITY_MEDIUM,               // The crash appears to corrupt
+                                       // memory in a way which may be
+                                       // exploitable in some situations.
+
+  EXPLOITABLITY_MEDIUM = EXPLOITABILITY_MEDIUM,  // an old misspelling
+
+  EXPLOITABILITY_LOW,                  // The crash either does not corrupt
+                                       // memory directly or control over
+                                       // the affected data is limited. The
+                                       // issue may still be exploitable
+                                       // on certain platforms or situations.
+
+  EXPLOITABILITY_INTERESTING,          // The crash does not appear to be
+                                       // directly exploitable. However it
+                                       // represents a condition which should
+                                       // be further analyzed.
+
+  EXPLOITABILITY_NONE,                 // The crash does not appear to represent
+                                       // an exploitable condition.
+
+  EXPLOITABILITY_NOT_ANALYZED,         // The crash was not analyzed for
+                                       // exploitability because the engine
+                                       // was disabled.
+
+  EXPLOITABILITY_ERR_NOENGINE,         // The supplied minidump's platform does
+                                       // not have a exploitability engine
+                                       // associated with it.
+
+  EXPLOITABILITY_ERR_PROCESSING        // An error occured within the
+                                       // exploitability engine and no rating
+                                       // was calculated.
+};
+
+class ProcessState {
+ public:
+  ProcessState() : modules_(NULL) { Clear(); }
+  ~ProcessState();
+
+  // Resets the ProcessState to its default values
+  void Clear();
+
+  // Accessors.  See the data declarations below.
+  uint32_t time_date_stamp() const { return time_date_stamp_; }
+  uint32_t process_create_time() const { return process_create_time_; }
+  bool crashed() const { return crashed_; }
+  string crash_reason() const { return crash_reason_; }
+  uint64_t crash_address() const { return crash_address_; }
+  string assertion() const { return assertion_; }
+  int requesting_thread() const { return requesting_thread_; }
+  const vector<CallStack*>* threads() const { return &threads_; }
+  const vector<MemoryRegion*>* thread_memory_regions() const {
+    return &thread_memory_regions_;
+  }
+  const SystemInfo* system_info() const { return &system_info_; }
+  const CodeModules* modules() const { return modules_; }
+  const vector<const CodeModule*>* modules_without_symbols() const {
+    return &modules_without_symbols_;
+  }
+  const vector<const CodeModule*>* modules_with_corrupt_symbols() const {
+    return &modules_with_corrupt_symbols_;
+  }
+  ExploitabilityRating exploitability() const { return exploitability_; }
+
+ private:
+  // MinidumpProcessor and MicrodumpProcessor are responsible for building
+  // ProcessState objects.
+  friend class MinidumpProcessor;
+  friend class MicrodumpProcessor;
+
+  // The time-date stamp of the minidump (time_t format)
+  uint32_t time_date_stamp_;
+
+  // The time-date stamp when the process was created (time_t format)
+  uint32_t process_create_time_;
+
+  // True if the process crashed, false if the dump was produced outside
+  // of an exception handler.
+  bool crashed_;
+
+  // If the process crashed, the type of crash.  OS- and possibly CPU-
+  // specific.  For example, "EXCEPTION_ACCESS_VIOLATION" (Windows),
+  // "EXC_BAD_ACCESS / KERN_INVALID_ADDRESS" (Mac OS X), "SIGSEGV"
+  // (other Unix).
+  string crash_reason_;
+
+  // If the process crashed, and if crash_reason implicates memory,
+  // the memory address that caused the crash.  For data access errors,
+  // this will be the data address that caused the fault.  For code errors,
+  // this will be the address of the instruction that caused the fault.
+  uint64_t crash_address_;
+
+  // If there was an assertion that was hit, a textual representation
+  // of that assertion, possibly including the file and line at which
+  // it occurred.
+  string assertion_;
+
+  // The index of the thread that requested a dump be written in the
+  // threads vector.  If a dump was produced as a result of a crash, this
+  // will point to the thread that crashed.  If the dump was produced as
+  // by user code without crashing, and the dump contains extended Breakpad
+  // information, this will point to the thread that requested the dump.
+  // If the dump was not produced as a result of an exception and no
+  // extended Breakpad information is present, this field will be set to -1,
+  // indicating that the dump thread is not available.
+  int requesting_thread_;
+
+  // Stacks for each thread (except possibly the exception handler
+  // thread) at the time of the crash.
+  vector<CallStack*> threads_;
+  vector<MemoryRegion*> thread_memory_regions_;
+
+  // OS and CPU information.
+  SystemInfo system_info_;
+
+  // The modules that were loaded into the process represented by the
+  // ProcessState.
+  const CodeModules *modules_;
+
+  // The modules that didn't have symbols when the report was processed.
+  vector<const CodeModule*> modules_without_symbols_;
+
+  // The modules that had corrupt symbols when the report was processed.
+  vector<const CodeModule*> modules_with_corrupt_symbols_;
+
+  // The exploitability rating as determined by the exploitability
+  // engine. When the exploitability engine is not enabled this
+  // defaults to EXPLOITABILITY_NONE.
+  ExploitabilityRating exploitability_;
+};
+
+}  // namespace google_breakpad
+
+#endif  // GOOGLE_BREAKPAD_PROCESSOR_PROCESS_STATE_H__
diff --git a/google-breakpad/src/google_breakpad/processor/source_line_resolver_base.h b/google-breakpad/src/google_breakpad/processor/source_line_resolver_base.h
new file mode 100644
index 0000000..c720b0c
--- /dev/null
+++ b/google-breakpad/src/google_breakpad/processor/source_line_resolver_base.h
@@ -0,0 +1,128 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// source_line_resolver_base.h: SourceLineResolverBase, an (incomplete)
+// implementation of SourceLineResolverInterface.  It serves as a common base
+// class for concrete implementations: FastSourceLineResolver and
+// BasicSourceLineResolver.  It is designed for refactoring that removes
+// code redundancy in the two concrete source line resolver classes.
+//
+// See "google_breakpad/processor/source_line_resolver_interface.h" for more
+// documentation.
+
+// Author: Siyang Xie (lambxsy@google.com)
+
+#ifndef GOOGLE_BREAKPAD_PROCESSOR_SOURCE_LINE_RESOLVER_BASE_H__
+#define GOOGLE_BREAKPAD_PROCESSOR_SOURCE_LINE_RESOLVER_BASE_H__
+
+#include <map>
+#include <set>
+#include <string>
+
+#include "google_breakpad/processor/source_line_resolver_interface.h"
+
+namespace google_breakpad {
+
+using std::map;
+using std::set;
+
+// Forward declaration.
+// ModuleFactory is a simple factory interface for creating a Module instance
+// at run-time.
+class ModuleFactory;
+
+class SourceLineResolverBase : public SourceLineResolverInterface {
+ public:
+  // Read the symbol_data from a file with given file_name.
+  // The part of code was originally in BasicSourceLineResolver::Module's
+  // LoadMap() method.
+  // Place dynamically allocated heap buffer in symbol_data. Caller has the
+  // ownership of the buffer, and should call delete [] to free the buffer.
+  static bool ReadSymbolFile(const string &file_name,
+                             char **symbol_data,
+                             size_t *symbol_data_size);
+
+ protected:
+  // Users are not allowed create SourceLineResolverBase instance directly.
+  SourceLineResolverBase(ModuleFactory *module_factory);
+  virtual ~SourceLineResolverBase();
+
+  // Virtual methods inherited from SourceLineResolverInterface.
+  virtual bool LoadModule(const CodeModule *module, const string &map_file);
+  virtual bool LoadModuleUsingMapBuffer(const CodeModule *module,
+                                        const string &map_buffer);
+  virtual bool LoadModuleUsingMemoryBuffer(const CodeModule *module,
+                                           char *memory_buffer,
+                                           size_t memory_buffer_size);
+  virtual bool ShouldDeleteMemoryBufferAfterLoadModule();
+  virtual void UnloadModule(const CodeModule *module);
+  virtual bool HasModule(const CodeModule *module);
+  virtual bool IsModuleCorrupt(const CodeModule *module);
+  virtual void FillSourceLineInfo(StackFrame *frame);
+  virtual WindowsFrameInfo *FindWindowsFrameInfo(const StackFrame *frame);
+  virtual CFIFrameInfo *FindCFIFrameInfo(const StackFrame *frame);
+
+  // Nested structs and classes.
+  struct Line;
+  struct Function;
+  struct PublicSymbol;
+  struct CompareString {
+    bool operator()(const string &s1, const string &s2) const;
+  };
+  // Module is an interface for an in-memory symbol file.
+  class Module;
+  class AutoFileCloser;
+
+  // All of the modules that are loaded.
+  typedef map<string, Module*, CompareString> ModuleMap;
+  ModuleMap *modules_;
+
+  // The loaded modules that were detecting to be corrupt during load.
+  typedef set<string, CompareString> ModuleSet;
+  ModuleSet *corrupt_modules_;
+
+  // All of heap-allocated buffers that are owned locally by resolver.
+  typedef std::map<string, char*, CompareString> MemoryMap;
+  MemoryMap *memory_buffers_;
+
+  // Creates a concrete module at run-time.
+  ModuleFactory *module_factory_;
+
+ private:
+  // ModuleFactory needs to have access to protected type Module.
+  friend class ModuleFactory;
+
+  // Disallow unwanted copy ctor and assignment operator
+  SourceLineResolverBase(const SourceLineResolverBase&);
+  void operator=(const SourceLineResolverBase&);
+};
+
+}  // namespace google_breakpad
+
+#endif  // GOOGLE_BREAKPAD_PROCESSOR_SOURCE_LINE_RESOLVER_BASE_H__
diff --git a/google-breakpad/src/google_breakpad/processor/source_line_resolver_interface.h b/google-breakpad/src/google_breakpad/processor/source_line_resolver_interface.h
new file mode 100644
index 0000000..a694bf2
--- /dev/null
+++ b/google-breakpad/src/google_breakpad/processor/source_line_resolver_interface.h
@@ -0,0 +1,117 @@
+// -*- mode: C++ -*-
+
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Abstract interface to return function/file/line info for a memory address.
+
+#ifndef GOOGLE_BREAKPAD_PROCESSOR_SOURCE_LINE_RESOLVER_INTERFACE_H__
+#define GOOGLE_BREAKPAD_PROCESSOR_SOURCE_LINE_RESOLVER_INTERFACE_H__
+
+#include <string>
+
+#include "common/using_std_string.h"
+#include "google_breakpad/common/breakpad_types.h"
+#include "google_breakpad/processor/code_module.h"
+
+namespace google_breakpad {
+
+struct StackFrame;
+struct WindowsFrameInfo;
+class CFIFrameInfo;
+
+class SourceLineResolverInterface {
+ public:
+  typedef uint64_t MemAddr;
+
+  virtual ~SourceLineResolverInterface() {}
+
+  // Adds a module to this resolver, returning true on success.
+  //
+  // module should have at least the code_file, debug_file,
+  // and debug_identifier members populated.
+  //
+  // map_file should contain line/address mappings for this module.
+  virtual bool LoadModule(const CodeModule *module,
+                          const string &map_file) = 0;
+  // Same as above, but takes the contents of a pre-read map buffer
+  virtual bool LoadModuleUsingMapBuffer(const CodeModule *module,
+                                        const string &map_buffer) = 0;
+
+  // Add an interface to load symbol using C-String data instead of string.
+  // This is useful in the optimization design for avoiding unnecessary copying
+  // of symbol data, in order to improve memory efficiency.
+  // LoadModuleUsingMemoryBuffer() does NOT take ownership of memory_buffer.
+  // LoadModuleUsingMemoryBuffer() null terminates the passed in buffer, if
+  // the last character is not a null terminator.
+  virtual bool LoadModuleUsingMemoryBuffer(const CodeModule *module,
+                                           char *memory_buffer,
+                                           size_t memory_buffer_size) = 0;
+
+  // Return true if the memory buffer should be deleted immediately after
+  // LoadModuleUsingMemoryBuffer(). Return false if the memory buffer has to be
+  // alive during the lifetime of the corresponding Module.
+  virtual bool ShouldDeleteMemoryBufferAfterLoadModule() = 0;
+
+  // Request that the specified module be unloaded from this resolver.
+  // A resolver may choose to ignore such a request.
+  virtual void UnloadModule(const CodeModule *module) = 0;
+
+  // Returns true if the module has been loaded.
+  virtual bool HasModule(const CodeModule *module) = 0;
+
+  // Returns true if the module has been loaded and it is corrupt.
+  virtual bool IsModuleCorrupt(const CodeModule *module) = 0;
+
+  // Fills in the function_base, function_name, source_file_name,
+  // and source_line fields of the StackFrame.  The instruction and
+  // module_name fields must already be filled in.
+  virtual void FillSourceLineInfo(StackFrame *frame) = 0;
+
+  // If Windows stack walking information is available covering
+  // FRAME's instruction address, return a WindowsFrameInfo structure
+  // describing it. If the information is not available, returns NULL.
+  // A NULL return value does not indicate an error. The caller takes
+  // ownership of any returned WindowsFrameInfo object.
+  virtual WindowsFrameInfo *FindWindowsFrameInfo(const StackFrame *frame) = 0;
+
+  // If CFI stack walking information is available covering ADDRESS,
+  // return a CFIFrameInfo structure describing it. If the information
+  // is not available, return NULL. The caller takes ownership of any
+  // returned CFIFrameInfo object.
+  virtual CFIFrameInfo *FindCFIFrameInfo(const StackFrame *frame) = 0;
+
+ protected:
+  // SourceLineResolverInterface cannot be instantiated except by subclasses
+  SourceLineResolverInterface() {}
+};
+
+}  // namespace google_breakpad
+
+#endif  // GOOGLE_BREAKPAD_PROCESSOR_SOURCE_LINE_RESOLVER_INTERFACE_H__
diff --git a/google-breakpad/src/google_breakpad/processor/stack_frame.h b/google-breakpad/src/google_breakpad/processor/stack_frame.h
new file mode 100644
index 0000000..b55eb9c
--- /dev/null
+++ b/google-breakpad/src/google_breakpad/processor/stack_frame.h
@@ -0,0 +1,144 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef GOOGLE_BREAKPAD_PROCESSOR_STACK_FRAME_H__
+#define GOOGLE_BREAKPAD_PROCESSOR_STACK_FRAME_H__
+
+#include <string>
+
+#include "common/using_std_string.h"
+#include "google_breakpad/common/breakpad_types.h"
+
+namespace google_breakpad {
+
+class CodeModule;
+
+struct StackFrame {
+  // Indicates how well the instruction pointer derived during
+  // stack walking is trusted. Since the stack walker can resort to
+  // stack scanning, it can wind up with dubious frames.
+  // In rough order of "trust metric".
+  enum FrameTrust {
+    FRAME_TRUST_NONE,      // Unknown
+    FRAME_TRUST_SCAN,      // Scanned the stack, found this
+    FRAME_TRUST_CFI_SCAN,  // Found while scanning stack using call frame info
+    FRAME_TRUST_FP,        // Derived from frame pointer
+    FRAME_TRUST_CFI,       // Derived from call frame info
+    FRAME_TRUST_PREWALKED, // Explicitly provided by some external stack walker.
+    FRAME_TRUST_CONTEXT    // Given as instruction pointer in a context
+  };
+
+  StackFrame()
+      : instruction(),
+        module(NULL),
+        function_name(),
+        function_base(),
+        source_file_name(),
+        source_line(),
+        source_line_base(),
+        trust(FRAME_TRUST_NONE) {}
+  virtual ~StackFrame() {}
+
+  // Return a string describing how this stack frame was found
+  // by the stackwalker.
+  string trust_description() const {
+    switch (trust) {
+      case StackFrame::FRAME_TRUST_CONTEXT:
+        return "given as instruction pointer in context";
+      case StackFrame::FRAME_TRUST_PREWALKED:
+        return "recovered by external stack walker";
+      case StackFrame::FRAME_TRUST_CFI:
+        return "call frame info";
+      case StackFrame::FRAME_TRUST_CFI_SCAN:
+        return "call frame info with scanning";
+      case StackFrame::FRAME_TRUST_FP:
+        return "previous frame's frame pointer";
+      case StackFrame::FRAME_TRUST_SCAN:
+        return "stack scanning";
+      default:
+        return "unknown";
+    }
+  };
+
+  // Return the actual return address, as saved on the stack or in a
+  // register. See the comments for 'instruction', below, for details.
+  virtual uint64_t ReturnAddress() const { return instruction; }
+
+  // The program counter location as an absolute virtual address.
+  //
+  // - For the innermost called frame in a stack, this will be an exact
+  //   program counter or instruction pointer value.
+  //
+  // - For all other frames, this address is within the instruction that
+  //   caused execution to branch to this frame's callee (although it may
+  //   not point to the exact beginning of that instruction). This ensures
+  //   that, when we look up the source code location for this frame, we
+  //   get the source location of the call, not of the point at which
+  //   control will resume when the call returns, which may be on the next
+  //   line. (If the compiler knows the callee never returns, it may even
+  //   place the call instruction at the very end of the caller's machine
+  //   code, such that the "return address" (which will never be used)
+  //   immediately after the call instruction is in an entirely different
+  //   function, perhaps even from a different source file.)
+  //
+  // On some architectures, the return address as saved on the stack or in
+  // a register is fine for looking up the point of the call. On others, it
+  // requires adjustment. ReturnAddress returns the address as saved by the
+  // machine.
+  uint64_t instruction;
+
+  // The module in which the instruction resides.
+  const CodeModule *module;
+
+  // The function name, may be omitted if debug symbols are not available.
+  string function_name;
+
+  // The start address of the function, may be omitted if debug symbols
+  // are not available.
+  uint64_t function_base;
+
+  // The source file name, may be omitted if debug symbols are not available.
+  string source_file_name;
+
+  // The (1-based) source line number, may be omitted if debug symbols are
+  // not available.
+  int source_line;
+
+  // The start address of the source line, may be omitted if debug symbols
+  // are not available.
+  uint64_t source_line_base;
+
+  // Amount of trust the stack walker has in the instruction pointer
+  // of this frame.
+  FrameTrust trust;
+};
+
+}  // namespace google_breakpad
+
+#endif  // GOOGLE_BREAKPAD_PROCESSOR_STACK_FRAME_H__
diff --git a/google-breakpad/src/google_breakpad/processor/stack_frame_cpu.h b/google-breakpad/src/google_breakpad/processor/stack_frame_cpu.h
new file mode 100644
index 0000000..dc5d8ae
--- /dev/null
+++ b/google-breakpad/src/google_breakpad/processor/stack_frame_cpu.h
@@ -0,0 +1,405 @@
+// -*- mode: c++ -*-
+
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// stack_frame_cpu.h: CPU-specific StackFrame extensions.
+//
+// These types extend the StackFrame structure to carry CPU-specific register
+// state.  They are defined in this header instead of stack_frame.h to
+// avoid the need to include minidump_format.h when only the generic
+// StackFrame type is needed.
+//
+// Author: Mark Mentovai
+
+#ifndef GOOGLE_BREAKPAD_PROCESSOR_STACK_FRAME_CPU_H__
+#define GOOGLE_BREAKPAD_PROCESSOR_STACK_FRAME_CPU_H__
+
+#include "google_breakpad/common/minidump_format.h"
+#include "google_breakpad/processor/stack_frame.h"
+
+namespace google_breakpad {
+
+struct WindowsFrameInfo;
+class CFIFrameInfo;
+
+struct StackFrameX86 : public StackFrame {
+  // ContextValidity has one entry for each relevant hardware pointer
+  // register (%eip and %esp) and one entry for each general-purpose
+  // register. It's worthwhile having validity flags for caller-saves
+  // registers: they are valid in the youngest frame, and such a frame
+  // might save a callee-saves register in a caller-saves register, but
+  // SimpleCFIWalker won't touch registers unless they're marked as valid.
+  enum ContextValidity {
+    CONTEXT_VALID_NONE = 0,
+    CONTEXT_VALID_EIP  = 1 << 0,
+    CONTEXT_VALID_ESP  = 1 << 1,
+    CONTEXT_VALID_EBP  = 1 << 2,
+    CONTEXT_VALID_EAX  = 1 << 3,
+    CONTEXT_VALID_EBX  = 1 << 4,
+    CONTEXT_VALID_ECX  = 1 << 5,
+    CONTEXT_VALID_EDX  = 1 << 6,
+    CONTEXT_VALID_ESI  = 1 << 7,
+    CONTEXT_VALID_EDI  = 1 << 8,
+    CONTEXT_VALID_ALL  = -1
+  };
+
+  StackFrameX86()
+     : context(),
+       context_validity(CONTEXT_VALID_NONE),
+       windows_frame_info(NULL),
+       cfi_frame_info(NULL) {}
+  ~StackFrameX86();
+
+  // Overriden to return the return address as saved on the stack.
+  virtual uint64_t ReturnAddress() const;
+
+  // Register state.  This is only fully valid for the topmost frame in a
+  // stack.  In other frames, the values of nonvolatile registers may be
+  // present, given sufficient debugging information.  Refer to
+  // context_validity.
+  MDRawContextX86 context;
+
+  // context_validity is actually ContextValidity, but int is used because
+  // the OR operator doesn't work well with enumerated types.  This indicates
+  // which fields in context are valid.
+  int context_validity;
+
+  // Any stack walking information we found describing this.instruction.
+  // These may be NULL if there is no such information for that address.
+  WindowsFrameInfo *windows_frame_info;
+  CFIFrameInfo *cfi_frame_info;
+};
+
+struct StackFramePPC : public StackFrame {
+  // ContextValidity should eventually contain entries for the validity of
+  // other nonvolatile (callee-save) registers as in
+  // StackFrameX86::ContextValidity, but the ppc stackwalker doesn't currently
+  // locate registers other than the ones listed here.
+  enum ContextValidity {
+    CONTEXT_VALID_NONE = 0,
+    CONTEXT_VALID_SRR0 = 1 << 0,
+    CONTEXT_VALID_GPR1 = 1 << 1,
+    CONTEXT_VALID_ALL  = -1
+  };
+
+  StackFramePPC() : context(), context_validity(CONTEXT_VALID_NONE) {}
+
+  // Register state.  This is only fully valid for the topmost frame in a
+  // stack.  In other frames, the values of nonvolatile registers may be
+  // present, given sufficient debugging information.  Refer to
+  // context_validity.
+  MDRawContextPPC context;
+
+  // context_validity is actually ContextValidity, but int is used because
+  // the OR operator doesn't work well with enumerated types.  This indicates
+  // which fields in context are valid.
+  int context_validity;
+};
+
+struct StackFramePPC64 : public StackFrame {
+  // ContextValidity should eventually contain entries for the validity of
+  // other nonvolatile (callee-save) registers as in
+  // StackFrameX86::ContextValidity, but the ppc stackwalker doesn't currently
+  // locate registers other than the ones listed here.
+  enum ContextValidity {
+    CONTEXT_VALID_NONE = 0,
+    CONTEXT_VALID_SRR0 = 1 << 0,
+    CONTEXT_VALID_GPR1 = 1 << 1,
+    CONTEXT_VALID_ALL  = -1
+  };
+
+  StackFramePPC64() : context(), context_validity(CONTEXT_VALID_NONE) {}
+
+  // Register state.  This is only fully valid for the topmost frame in a
+  // stack.  In other frames, the values of nonvolatile registers may be
+  // present, given sufficient debugging information.  Refer to
+  // context_validity.
+  MDRawContextPPC64 context;
+
+  // context_validity is actually ContextValidity, but int is used because
+  // the OR operator doesn't work well with enumerated types.  This indicates
+  // which fields in context are valid.
+  int context_validity;
+};
+
+struct StackFrameAMD64 : public StackFrame {
+  // ContextValidity has one entry for each register that we might be able
+  // to recover.
+  enum ContextValidity {
+    CONTEXT_VALID_NONE  = 0,
+    CONTEXT_VALID_RAX   = 1 << 0,
+    CONTEXT_VALID_RDX   = 1 << 1,
+    CONTEXT_VALID_RCX   = 1 << 2,
+    CONTEXT_VALID_RBX   = 1 << 3,
+    CONTEXT_VALID_RSI   = 1 << 4,
+    CONTEXT_VALID_RDI   = 1 << 5,
+    CONTEXT_VALID_RBP   = 1 << 6,
+    CONTEXT_VALID_RSP   = 1 << 7,
+    CONTEXT_VALID_R8    = 1 << 8,
+    CONTEXT_VALID_R9    = 1 << 9,
+    CONTEXT_VALID_R10   = 1 << 10,
+    CONTEXT_VALID_R11   = 1 << 11,
+    CONTEXT_VALID_R12   = 1 << 12,
+    CONTEXT_VALID_R13   = 1 << 13,
+    CONTEXT_VALID_R14   = 1 << 14,
+    CONTEXT_VALID_R15   = 1 << 15,
+    CONTEXT_VALID_RIP   = 1 << 16,
+    CONTEXT_VALID_ALL  = -1
+  };
+
+  StackFrameAMD64() : context(), context_validity(CONTEXT_VALID_NONE) {}
+
+  // Overriden to return the return address as saved on the stack.
+  virtual uint64_t ReturnAddress() const;
+
+  // Register state. This is only fully valid for the topmost frame in a
+  // stack. In other frames, which registers are present depends on what
+  // debugging information we had available. Refer to context_validity.
+  MDRawContextAMD64 context;
+
+  // For each register in context whose value has been recovered, we set
+  // the corresponding CONTEXT_VALID_ bit in context_validity.
+  //
+  // context_validity's type should actually be ContextValidity, but
+  // we use int instead because the bitwise inclusive or operator
+  // yields an int when applied to enum values, and C++ doesn't
+  // silently convert from ints to enums.
+  int context_validity;
+};
+
+struct StackFrameSPARC : public StackFrame {
+  // to be confirmed
+  enum ContextValidity {
+    CONTEXT_VALID_NONE = 0,
+    CONTEXT_VALID_PC   = 1 << 0,
+    CONTEXT_VALID_SP   = 1 << 1,
+    CONTEXT_VALID_FP   = 1 << 2,
+    CONTEXT_VALID_ALL  = -1
+  };
+
+  StackFrameSPARC() : context(), context_validity(CONTEXT_VALID_NONE) {}
+
+  // Register state.  This is only fully valid for the topmost frame in a
+  // stack.  In other frames, the values of nonvolatile registers may be
+  // present, given sufficient debugging information.  Refer to
+  // context_validity.
+  MDRawContextSPARC context;
+
+  // context_validity is actually ContextValidity, but int is used because
+  // the OR operator doesn't work well with enumerated types.  This indicates
+  // which fields in context are valid.
+  int context_validity;
+};
+
+struct StackFrameARM : public StackFrame {
+  // A flag for each register we might know.
+  enum ContextValidity {
+    CONTEXT_VALID_NONE = 0,
+    CONTEXT_VALID_R0   = 1 << 0,
+    CONTEXT_VALID_R1   = 1 << 1,
+    CONTEXT_VALID_R2   = 1 << 2,
+    CONTEXT_VALID_R3   = 1 << 3,
+    CONTEXT_VALID_R4   = 1 << 4,
+    CONTEXT_VALID_R5   = 1 << 5,
+    CONTEXT_VALID_R6   = 1 << 6,
+    CONTEXT_VALID_R7   = 1 << 7,
+    CONTEXT_VALID_R8   = 1 << 8,
+    CONTEXT_VALID_R9   = 1 << 9,
+    CONTEXT_VALID_R10  = 1 << 10,
+    CONTEXT_VALID_R11  = 1 << 11,
+    CONTEXT_VALID_R12  = 1 << 12,
+    CONTEXT_VALID_R13  = 1 << 13,
+    CONTEXT_VALID_R14  = 1 << 14,
+    CONTEXT_VALID_R15  = 1 << 15,
+    CONTEXT_VALID_ALL  = ~CONTEXT_VALID_NONE,
+
+    // Aliases for registers with dedicated or conventional roles.
+    CONTEXT_VALID_FP   = CONTEXT_VALID_R11,
+    CONTEXT_VALID_SP   = CONTEXT_VALID_R13,
+    CONTEXT_VALID_LR   = CONTEXT_VALID_R14,
+    CONTEXT_VALID_PC   = CONTEXT_VALID_R15
+  };
+
+  StackFrameARM() : context(), context_validity(CONTEXT_VALID_NONE) {}
+
+  // Return the ContextValidity flag for register rN.
+  static ContextValidity RegisterValidFlag(int n) {
+    return ContextValidity(1 << n);
+  }
+
+  // Register state.  This is only fully valid for the topmost frame in a
+  // stack.  In other frames, the values of nonvolatile registers may be
+  // present, given sufficient debugging information.  Refer to
+  // context_validity.
+  MDRawContextARM context;
+
+  // For each register in context whose value has been recovered, we set
+  // the corresponding CONTEXT_VALID_ bit in context_validity.
+  //
+  // context_validity's type should actually be ContextValidity, but
+  // we use int instead because the bitwise inclusive or operator
+  // yields an int when applied to enum values, and C++ doesn't
+  // silently convert from ints to enums.
+  int context_validity;
+};
+
+struct StackFrameARM64 : public StackFrame {
+  // A flag for each register we might know. Note that we can't use an enum
+  // here as there are 33 values to represent.
+  static const uint64_t CONTEXT_VALID_NONE = 0;
+  static const uint64_t CONTEXT_VALID_X0   = 1ULL << 0;
+  static const uint64_t CONTEXT_VALID_X1   = 1ULL << 1;
+  static const uint64_t CONTEXT_VALID_X2   = 1ULL << 2;
+  static const uint64_t CONTEXT_VALID_X3   = 1ULL << 3;
+  static const uint64_t CONTEXT_VALID_X4   = 1ULL << 4;
+  static const uint64_t CONTEXT_VALID_X5   = 1ULL << 5;
+  static const uint64_t CONTEXT_VALID_X6   = 1ULL << 6;
+  static const uint64_t CONTEXT_VALID_X7   = 1ULL << 7;
+  static const uint64_t CONTEXT_VALID_X8   = 1ULL << 8;
+  static const uint64_t CONTEXT_VALID_X9   = 1ULL << 9;
+  static const uint64_t CONTEXT_VALID_X10  = 1ULL << 10;
+  static const uint64_t CONTEXT_VALID_X11  = 1ULL << 11;
+  static const uint64_t CONTEXT_VALID_X12  = 1ULL << 12;
+  static const uint64_t CONTEXT_VALID_X13  = 1ULL << 13;
+  static const uint64_t CONTEXT_VALID_X14  = 1ULL << 14;
+  static const uint64_t CONTEXT_VALID_X15  = 1ULL << 15;
+  static const uint64_t CONTEXT_VALID_X16  = 1ULL << 16;
+  static const uint64_t CONTEXT_VALID_X17  = 1ULL << 17;
+  static const uint64_t CONTEXT_VALID_X18  = 1ULL << 18;
+  static const uint64_t CONTEXT_VALID_X19  = 1ULL << 19;
+  static const uint64_t CONTEXT_VALID_X20  = 1ULL << 20;
+  static const uint64_t CONTEXT_VALID_X21  = 1ULL << 21;
+  static const uint64_t CONTEXT_VALID_X22  = 1ULL << 22;
+  static const uint64_t CONTEXT_VALID_X23  = 1ULL << 23;
+  static const uint64_t CONTEXT_VALID_X24  = 1ULL << 24;
+  static const uint64_t CONTEXT_VALID_X25  = 1ULL << 25;
+  static const uint64_t CONTEXT_VALID_X26  = 1ULL << 26;
+  static const uint64_t CONTEXT_VALID_X27  = 1ULL << 27;
+  static const uint64_t CONTEXT_VALID_X28  = 1ULL << 28;
+  static const uint64_t CONTEXT_VALID_X29  = 1ULL << 29;
+  static const uint64_t CONTEXT_VALID_X30  = 1ULL << 30;
+  static const uint64_t CONTEXT_VALID_X31  = 1ULL << 31;
+  static const uint64_t CONTEXT_VALID_X32  = 1ULL << 32;
+  static const uint64_t CONTEXT_VALID_ALL  = ~CONTEXT_VALID_NONE;
+
+  // Aliases for registers with dedicated or conventional roles.
+  static const uint64_t CONTEXT_VALID_FP   = CONTEXT_VALID_X29;
+  static const uint64_t CONTEXT_VALID_LR   = CONTEXT_VALID_X30;
+  static const uint64_t CONTEXT_VALID_SP   = CONTEXT_VALID_X31;
+  static const uint64_t CONTEXT_VALID_PC   = CONTEXT_VALID_X32;
+
+  StackFrameARM64() : context(),
+                      context_validity(CONTEXT_VALID_NONE) {}
+
+  // Return the validity flag for register xN.
+  static uint64_t RegisterValidFlag(int n) {
+    return 1ULL << n;
+  }
+
+  // Register state.  This is only fully valid for the topmost frame in a
+  // stack.  In other frames, the values of nonvolatile registers may be
+  // present, given sufficient debugging information.  Refer to
+  // context_validity.
+  MDRawContextARM64 context;
+
+  // For each register in context whose value has been recovered, we set
+  // the corresponding CONTEXT_VALID_ bit in context_validity.
+  uint64_t context_validity;
+};
+
+struct StackFrameMIPS : public StackFrame {  
+  // MIPS callee save registers for o32 ABI (32bit registers) are: 
+  // 1. $s0-$s7, 
+  // 2. $sp, $fp
+  // 3. $f20-$f31 
+  // 
+  // The register structure is available at
+  // http://en.wikipedia.org/wiki/MIPS_architecture#Compiler_register_usage
+
+#define INDEX_MIPS_REG_S0 MD_CONTEXT_MIPS_REG_S0  // 16
+#define INDEX_MIPS_REG_S7 MD_CONTEXT_MIPS_REG_S7  // 23
+#define INDEX_MIPS_REG_GP MD_CONTEXT_MIPS_REG_GP  // 28
+#define INDEX_MIPS_REG_RA MD_CONTEXT_MIPS_REG_RA  // 31
+#define INDEX_MIPS_REG_PC 34 
+#define SHIFT_MIPS_REG_S0 0
+#define SHIFT_MIPS_REG_GP 8
+#define SHIFT_MIPS_REG_PC 12 
+
+  enum ContextValidity {
+    CONTEXT_VALID_NONE = 0,
+    CONTEXT_VALID_S0 = 1 << 0,  // $16
+    CONTEXT_VALID_S1 = 1 << 1,  // $17
+    CONTEXT_VALID_S2 = 1 << 2,  // $18
+    CONTEXT_VALID_S3 = 1 << 3,  // $19
+    CONTEXT_VALID_S4 = 1 << 4,  // $20
+    CONTEXT_VALID_S5 = 1 << 5,  // $21
+    CONTEXT_VALID_S6 = 1 << 6,  // $22
+    CONTEXT_VALID_S7 = 1 << 7,  // $23
+    // GP is not calee-save for o32 abi.
+    CONTEXT_VALID_GP = 1 << 8,  // $28
+    CONTEXT_VALID_SP = 1 << 9,  // $29
+    CONTEXT_VALID_FP = 1 << 10,  // $30
+    CONTEXT_VALID_RA = 1 << 11,  // $31  
+    CONTEXT_VALID_PC = 1 << 12,  // $34
+    CONTEXT_VALID_ALL = ~CONTEXT_VALID_NONE
+  };
+  
+  // Return the ContextValidity flag for register rN.
+  static ContextValidity RegisterValidFlag(int n) {
+    if (n >= INDEX_MIPS_REG_S0 && n <= INDEX_MIPS_REG_S7)
+      return ContextValidity(1 << (n - INDEX_MIPS_REG_S0 + SHIFT_MIPS_REG_S0));
+    else if (n >= INDEX_MIPS_REG_GP && n <= INDEX_MIPS_REG_RA)
+      return ContextValidity(1 << (n - INDEX_MIPS_REG_GP + SHIFT_MIPS_REG_GP));
+    else if (n == INDEX_MIPS_REG_PC)
+      return ContextValidity(1 << SHIFT_MIPS_REG_PC);
+
+    return CONTEXT_VALID_NONE;
+  }
+
+  StackFrameMIPS() : context(), context_validity(CONTEXT_VALID_NONE) {}
+
+  // Register state. This is only fully valid for the topmost frame in a
+  // stack. In other frames, which registers are present depends on what
+  // debugging information were available. Refer to 'context_validity' below.
+  MDRawContextMIPS context;   
+
+  // For each register in context whose value has been recovered,
+  // the corresponding CONTEXT_VALID_ bit in 'context_validity' is set.
+  //
+  // context_validity's type should actually be ContextValidity, but
+  // type int is used instead because the bitwise inclusive or operator
+  // yields an int when applied to enum values, and C++ doesn't
+  // silently convert from ints to enums.
+  int context_validity;
+};
+
+}  // namespace google_breakpad
+
+#endif  // GOOGLE_BREAKPAD_PROCESSOR_STACK_FRAME_CPU_H__
diff --git a/google-breakpad/src/google_breakpad/processor/stack_frame_symbolizer.h b/google-breakpad/src/google_breakpad/processor/stack_frame_symbolizer.h
new file mode 100644
index 0000000..074907c
--- /dev/null
+++ b/google-breakpad/src/google_breakpad/processor/stack_frame_symbolizer.h
@@ -0,0 +1,108 @@
+// -*- mode: C++ -*-
+
+// Copyright (c) 2012 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Helper class that encapsulates the logic of how symbol supplier interacts
+// with source line resolver to fill stack frame information.
+
+#ifndef GOOGLE_BREAKPAD_PROCESSOR_STACK_FRAME_SYMBOLIZER_H__
+#define GOOGLE_BREAKPAD_PROCESSOR_STACK_FRAME_SYMBOLIZER_H__
+
+#include <set>
+#include <string>
+
+#include "common/using_std_string.h"
+#include "google_breakpad/common/breakpad_types.h"
+#include "google_breakpad/processor/code_module.h"
+
+namespace google_breakpad {
+class CFIFrameInfo;
+class CodeModules;
+class SymbolSupplier;
+class SourceLineResolverInterface;
+struct StackFrame;
+struct SystemInfo;
+struct WindowsFrameInfo;
+
+class StackFrameSymbolizer {
+ public:
+  enum SymbolizerResult {
+    // Symbol data was found and successfully loaded in resolver.
+    // This does NOT guarantee source line info is found within symbol file.
+    kNoError,
+    // This indicates non-critical error, such as, no code module found for
+    // frame's instruction, no symbol file, or resolver failed to load symbol.
+    kError,
+    // This indicates error for which stack walk should be interrupted
+    // and retried in future.
+    kInterrupt,
+    // Symbol data was found and loaded in resolver however some corruptions
+    // were detected.
+    kWarningCorruptSymbols,
+  };
+
+  StackFrameSymbolizer(SymbolSupplier* supplier,
+                       SourceLineResolverInterface* resolver);
+
+  virtual ~StackFrameSymbolizer() { }
+
+  // Encapsulate the step of resolving source line info for a stack frame.
+  // "frame" must not be NULL.
+  virtual SymbolizerResult FillSourceLineInfo(const CodeModules* modules,
+                                              const SystemInfo* system_info,
+                                              StackFrame* stack_frame);
+
+  virtual WindowsFrameInfo* FindWindowsFrameInfo(const StackFrame* frame);
+
+  virtual CFIFrameInfo* FindCFIFrameInfo(const StackFrame* frame);
+
+  // Reset internal (locally owned) data as if the helper is re-instantiated.
+  // A typical case is to call Reset() after processing an individual report
+  // before start to process next one, in order to reset internal information
+  // about missing symbols found so far.
+  virtual void Reset() { no_symbol_modules_.clear(); }
+
+  // Returns true if there is valid implementation for stack symbolization.
+  virtual bool HasImplementation() { return resolver_ && supplier_; }
+
+  SourceLineResolverInterface* resolver() { return resolver_; }
+  SymbolSupplier* supplier() { return supplier_; }
+
+ protected:
+  SymbolSupplier* supplier_;
+  SourceLineResolverInterface* resolver_;
+  // A list of modules known to have symbols missing. This helps avoid
+  // repeated lookups for the missing symbols within one minidump.
+  std::set<string> no_symbol_modules_;
+};
+
+}  // namespace google_breakpad
+
+#endif  // GOOGLE_BREAKPAD_PROCESSOR_STACK_FRAME_SYMBOLIZER_H__
diff --git a/google-breakpad/src/google_breakpad/processor/stackwalker.h b/google-breakpad/src/google_breakpad/processor/stackwalker.h
new file mode 100644
index 0000000..a1bd3e7
--- /dev/null
+++ b/google-breakpad/src/google_breakpad/processor/stackwalker.h
@@ -0,0 +1,235 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// stackwalker.h: Generic stackwalker.
+//
+// The Stackwalker class is an abstract base class providing common generic
+// methods that apply to stacks from all systems.  Specific implementations
+// will extend this class by providing GetContextFrame and GetCallerFrame
+// methods to fill in system-specific data in a StackFrame structure.
+// Stackwalker assembles these StackFrame strucutres into a CallStack.
+//
+// Author: Mark Mentovai
+
+
+#ifndef GOOGLE_BREAKPAD_PROCESSOR_STACKWALKER_H__
+#define GOOGLE_BREAKPAD_PROCESSOR_STACKWALKER_H__
+
+#include <set>
+#include <string>
+#include <vector>
+
+#include "common/using_std_string.h"
+#include "google_breakpad/common/breakpad_types.h"
+#include "google_breakpad/processor/code_modules.h"
+#include "google_breakpad/processor/memory_region.h"
+#include "google_breakpad/processor/stack_frame_symbolizer.h"
+
+namespace google_breakpad {
+
+class CallStack;
+class DumpContext;
+class StackFrameSymbolizer;
+
+using std::set;
+using std::vector;
+
+class Stackwalker {
+ public:
+  virtual ~Stackwalker() {}
+
+  // Populates the given CallStack by calling GetContextFrame and
+  // GetCallerFrame.  The frames are further processed to fill all available
+  // data.  Returns true if the stackwalk completed, or false if it was
+  // interrupted by SymbolSupplier::GetSymbolFile().
+  // Upon return, |modules_without_symbols| will be populated with pointers to
+  // the code modules (CodeModule*) that DON'T have symbols.
+  // |modules_with_corrupt_symbols| will be populated with pointers to the
+  // modules which have corrupt symbols.  |modules_without_symbols| and
+  // |modules_with_corrupt_symbols| DO NOT take ownership of the code modules.
+  // The lifetime of these code modules is the same as the lifetime of the
+  // CodeModules passed to the StackWalker constructor (which currently
+  // happens to be the lifetime of the Breakpad's ProcessingState object).
+  // There is a check for duplicate modules so no duplicates are expected.
+  bool Walk(CallStack* stack,
+            vector<const CodeModule*>* modules_without_symbols,
+            vector<const CodeModule*>* modules_with_corrupt_symbols);
+
+  // Returns a new concrete subclass suitable for the CPU that a stack was
+  // generated on, according to the CPU type indicated by the context
+  // argument.  If no suitable concrete subclass exists, returns NULL.
+  static Stackwalker* StackwalkerForCPU(
+     const SystemInfo* system_info,
+     DumpContext* context,
+     MemoryRegion* memory,
+     const CodeModules* modules,
+     StackFrameSymbolizer* resolver_helper);
+
+  static void set_max_frames(uint32_t max_frames) {
+    max_frames_ = max_frames;
+    max_frames_set_ = true;
+  }
+  static uint32_t max_frames() { return max_frames_; }
+
+  static void set_max_frames_scanned(uint32_t max_frames_scanned) {
+    max_frames_scanned_ = max_frames_scanned;
+  }
+
+ protected:
+  // system_info identifies the operating system, NULL or empty if unknown.
+  // memory identifies a MemoryRegion that provides the stack memory
+  // for the stack to walk.  modules, if non-NULL, is a CodeModules
+  // object that is used to look up which code module each stack frame is
+  // associated with.  frame_symbolizer is a StackFrameSymbolizer object that
+  // encapsulates the logic of how source line resolver interacts with symbol
+  // supplier to symbolize stack frame and look up caller frame information
+  // (see stack_frame_symbolizer.h).
+  // frame_symbolizer MUST NOT be NULL (asserted).
+  Stackwalker(const SystemInfo* system_info,
+              MemoryRegion* memory,
+              const CodeModules* modules,
+              StackFrameSymbolizer* frame_symbolizer);
+
+  // This can be used to filter out potential return addresses when
+  // the stack walker resorts to stack scanning.
+  // Returns true if any of:
+  // * This address is within a loaded module, but we don't have symbols
+  //   for that module.
+  // * This address is within a loaded module for which we have symbols,
+  //   and falls inside a function in that module.
+  // Returns false otherwise.
+  bool InstructionAddressSeemsValid(uint64_t address);
+
+  // The default number of words to search through on the stack
+  // for a return address.
+  static const int kRASearchWords;
+
+  template<typename InstructionType>
+  bool ScanForReturnAddress(InstructionType location_start,
+                            InstructionType* location_found,
+                            InstructionType* ip_found,
+                            bool is_context_frame) {
+    // When searching for the caller of the context frame,
+    // allow the scanner to look farther down the stack.
+    const int search_words = is_context_frame ?
+      kRASearchWords * 4 :
+      kRASearchWords;
+
+    return ScanForReturnAddress(location_start, location_found, ip_found,
+                                search_words);
+  }
+
+  // Scan the stack starting at location_start, looking for an address
+  // that looks like a valid instruction pointer. Addresses must
+  // 1) be contained in the current stack memory
+  // 2) pass the checks in InstructionAddressSeemsValid
+  //
+  // Returns true if a valid-looking instruction pointer was found.
+  // When returning true, sets location_found to the address at which
+  // the value was found, and ip_found to the value contained at that
+  // location in memory.
+  template<typename InstructionType>
+  bool ScanForReturnAddress(InstructionType location_start,
+                            InstructionType* location_found,
+                            InstructionType* ip_found,
+                            int searchwords) {
+    for (InstructionType location = location_start;
+         location <= location_start + searchwords * sizeof(InstructionType);
+         location += sizeof(InstructionType)) {
+      InstructionType ip;
+      if (!memory_->GetMemoryAtAddress(location, &ip))
+        break;
+
+      if (modules_ && modules_->GetModuleForAddress(ip) &&
+          InstructionAddressSeemsValid(ip)) {
+        *ip_found = ip;
+        *location_found = location;
+        return true;
+      }
+    }
+    // nothing found
+    return false;
+  }
+
+  // Information about the system that produced the minidump.  Subclasses
+  // and the SymbolSupplier may find this information useful.
+  const SystemInfo* system_info_;
+
+  // The stack memory to walk.  Subclasses will require this region to
+  // get information from the stack.
+  MemoryRegion* memory_;
+
+  // A list of modules, for populating each StackFrame's module information.
+  // This field is optional and may be NULL.
+  const CodeModules* modules_;
+
+ protected:
+  // The StackFrameSymbolizer implementation.
+  StackFrameSymbolizer* frame_symbolizer_;
+
+ private:
+  // Obtains the context frame, the innermost called procedure in a stack
+  // trace.  Returns NULL on failure.  GetContextFrame allocates a new
+  // StackFrame (or StackFrame subclass), ownership of which is taken by
+  // the caller.
+  virtual StackFrame* GetContextFrame() = 0;
+
+  // Obtains a caller frame.  Each call to GetCallerFrame should return the
+  // frame that called the last frame returned by GetContextFrame or
+  // GetCallerFrame.  To aid this purpose, stack contains the CallStack
+  // made of frames that have already been walked.  GetCallerFrame should
+  // return NULL on failure or when there are no more caller frames (when
+  // the end of the stack has been reached).  GetCallerFrame allocates a new
+  // StackFrame (or StackFrame subclass), ownership of which is taken by
+  // the caller.  |stack_scan_allowed| controls whether stack scanning is
+  // an allowable frame-recovery method, since it is desirable to be able to
+  // disable stack scanning in performance-critical use cases.
+  virtual StackFrame* GetCallerFrame(const CallStack* stack,
+                                     bool stack_scan_allowed) = 0;
+
+  // The maximum number of frames Stackwalker will walk through.
+  // This defaults to 1024 to prevent infinite loops.
+  static uint32_t max_frames_;
+
+  // Keep track of whether max_frames_ has been set by the user, since
+  // it affects whether or not an error message is printed in the case
+  // where an unwind got stopped by the limit.
+  static bool max_frames_set_;
+
+  // The maximum number of stack-scanned and otherwise untrustworthy
+  // frames allowed.  Stack-scanning can be expensive, so the option to
+  // disable or limit it is helpful in cases where unwind performance is
+  // important.  This defaults to 1024, the same as max_frames_.
+  static uint32_t max_frames_scanned_;
+};
+
+}  // namespace google_breakpad
+
+
+#endif  // GOOGLE_BREAKPAD_PROCESSOR_STACKWALKER_H__
diff --git a/google-breakpad/src/google_breakpad/processor/symbol_supplier.h b/google-breakpad/src/google_breakpad/processor/symbol_supplier.h
new file mode 100644
index 0000000..a042081
--- /dev/null
+++ b/google-breakpad/src/google_breakpad/processor/symbol_supplier.h
@@ -0,0 +1,99 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// The caller may implement the SymbolSupplier abstract base class
+// to provide symbols for a given module.
+
+#ifndef GOOGLE_BREAKPAD_PROCESSOR_SYMBOL_SUPPLIER_H__
+#define GOOGLE_BREAKPAD_PROCESSOR_SYMBOL_SUPPLIER_H__
+
+#include <string>
+#include "common/using_std_string.h"
+
+namespace google_breakpad {
+
+class CodeModule;
+struct SystemInfo;
+
+class SymbolSupplier {
+ public:
+  // Result type for GetSymbolFile
+  enum SymbolResult {
+    // no symbols were found, but continue processing
+    NOT_FOUND,
+
+    // symbols were found, and the path has been placed in symbol_file
+    FOUND,
+
+    // stops processing the minidump immediately
+    INTERRUPT
+  };
+
+  virtual ~SymbolSupplier() {}
+
+  // Retrieves the symbol file for the given CodeModule, placing the
+  // path in symbol_file if successful.  system_info contains strings
+  // identifying the operating system and CPU; SymbolSupplier may use
+  // to help locate the symbol file.  system_info may be NULL or its
+  // fields may be empty if these values are unknown.  symbol_file
+  // must be a pointer to a valid string
+  virtual SymbolResult GetSymbolFile(const CodeModule *module,
+                                     const SystemInfo *system_info,
+                                     string *symbol_file) = 0;
+  // Same as above, except also places symbol data into symbol_data.
+  // If symbol_data is NULL, the data is not returned.
+  // TODO(nealsid) Once we have symbol data caching behavior implemented
+  // investigate making all symbol suppliers implement all methods,
+  // and make this pure virtual
+  virtual SymbolResult GetSymbolFile(const CodeModule *module,
+                                     const SystemInfo *system_info,
+                                     string *symbol_file,
+                                     string *symbol_data) = 0;
+
+  // Same as above, except allocates data buffer on heap and then places the
+  // symbol data into the buffer as C-string.
+  // SymbolSupplier is responsible for deleting the data buffer. After the call
+  // to GetCStringSymbolData(), the caller should call FreeSymbolData(const
+  // Module *module) once the data buffer is no longer needed.
+  // If symbol_data is not NULL, symbol supplier won't return FOUND unless it
+  // returns a valid buffer in symbol_data, e.g., returns INTERRUPT on memory
+  // allocation failure.
+  virtual SymbolResult GetCStringSymbolData(const CodeModule *module,
+                                            const SystemInfo *system_info,
+                                            string *symbol_file,
+                                            char **symbol_data,
+                                            size_t *symbol_data_size) = 0;
+
+  // Frees the data buffer allocated for the module in GetCStringSymbolData.
+  virtual void FreeSymbolData(const CodeModule *module) = 0;
+};
+
+}  // namespace google_breakpad
+
+#endif  // GOOGLE_BREAKPAD_PROCESSOR_SYMBOL_SUPPLIER_H__
diff --git a/google-breakpad/src/google_breakpad/processor/system_info.h b/google-breakpad/src/google_breakpad/processor/system_info.h
new file mode 100644
index 0000000..9583d9e
--- /dev/null
+++ b/google-breakpad/src/google_breakpad/processor/system_info.h
@@ -0,0 +1,98 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// system_info.h: Information about the system that was running a program
+// when a crash report was produced.
+//
+// Author: Mark Mentovai
+
+#ifndef GOOGLE_BREAKPAD_PROCESSOR_SYSTEM_INFO_H__
+#define GOOGLE_BREAKPAD_PROCESSOR_SYSTEM_INFO_H__
+
+#include <string>
+
+#include "common/using_std_string.h"
+
+namespace google_breakpad {
+
+struct SystemInfo {
+ public:
+  SystemInfo() : os(), os_short(), os_version(), cpu(), cpu_info(),
+    cpu_count(0) {}
+
+  // Resets the SystemInfo object to its default values.
+  void Clear() {
+    os.clear();
+    os_short.clear();
+    os_version.clear();
+    cpu.clear();
+    cpu_info.clear();
+    cpu_count = 0;
+  }
+
+  // A string identifying the operating system, such as "Windows NT",
+  // "Mac OS X", or "Linux".  If the information is present in the dump but
+  // its value is unknown, this field will contain a numeric value.  If
+  // the information is not present in the dump, this field will be empty.
+  string os;
+
+  // A short form of the os string, using lowercase letters and no spaces,
+  // suitable for use in a filesystem.  Possible values include "windows",
+  // "mac", "linux" and "nacl".  Empty if the information is not present
+  // in the dump or if the OS given by the dump is unknown.  The values
+  // stored in this field should match those used by
+  // MinidumpSystemInfo::GetOS.
+  string os_short;
+
+  // A string identifying the version of the operating system, such as
+  // "5.1.2600 Service Pack 2" or "10.4.8 8L2127".  If the dump does not
+  // contain this information, this field will be empty.
+  string os_version;
+
+  // A string identifying the basic CPU family, such as "x86" or "ppc".
+  // If this information is present in the dump but its value is unknown,
+  // this field will contain a numeric value.  If the information is not
+  // present in the dump, this field will be empty.  The values stored in
+  // this field should match those used by MinidumpSystemInfo::GetCPU.
+  string cpu;
+
+  // A string further identifying the specific CPU, such as
+  // "GenuineIntel level 6 model 13 stepping 8".  If the information is not
+  // present in the dump, or additional identifying information is not
+  // defined for the CPU family, this field will be empty.
+  string cpu_info;
+
+  // The number of processors in the system.  Will be greater than one for
+  // multi-core systems.
+  int cpu_count;
+};
+
+}  // namespace google_breakpad
+
+#endif  // GOOGLE_BREAKPAD_PROCESSOR_SYSTEM_INFO_H__
diff --git a/google-breakpad/src/processor/address_map-inl.h b/google-breakpad/src/processor/address_map-inl.h
new file mode 100644
index 0000000..251c447
--- /dev/null
+++ b/google-breakpad/src/processor/address_map-inl.h
@@ -0,0 +1,93 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// address_map-inl.h: Address map implementation.
+//
+// See address_map.h for documentation.
+//
+// Author: Mark Mentovai
+
+#ifndef PROCESSOR_ADDRESS_MAP_INL_H__
+#define PROCESSOR_ADDRESS_MAP_INL_H__
+
+#include "processor/address_map.h"
+
+#include <assert.h>
+
+#include "processor/logging.h"
+
+namespace google_breakpad {
+
+template<typename AddressType, typename EntryType>
+bool AddressMap<AddressType, EntryType>::Store(const AddressType &address,
+                                               const EntryType &entry) {
+  // Ensure that the specified address doesn't conflict with something already
+  // in the map.
+  if (map_.find(address) != map_.end()) {
+    BPLOG(INFO) << "Store failed, address " << HexString(address) <<
+                   " is already present";
+    return false;
+  }
+
+  map_.insert(MapValue(address, entry));
+  return true;
+}
+
+template<typename AddressType, typename EntryType>
+bool AddressMap<AddressType, EntryType>::Retrieve(
+    const AddressType &address,
+    EntryType *entry, AddressType *entry_address) const {
+  BPLOG_IF(ERROR, !entry) << "AddressMap::Retrieve requires |entry|";
+  assert(entry);
+
+  // upper_bound gives the first element whose key is greater than address,
+  // but we want the first element whose key is less than or equal to address.
+  // Decrement the iterator to get there, but not if the upper_bound already
+  // points to the beginning of the map - in that case, address is lower than
+  // the lowest stored key, so return false.
+  MapConstIterator iterator = map_.upper_bound(address);
+  if (iterator == map_.begin())
+    return false;
+  --iterator;
+
+  *entry = iterator->second;
+  if (entry_address)
+    *entry_address = iterator->first;
+
+  return true;
+}
+
+template<typename AddressType, typename EntryType>
+void AddressMap<AddressType, EntryType>::Clear() {
+  map_.clear();
+}
+
+}  // namespace google_breakpad
+
+#endif  // PROCESSOR_ADDRESS_MAP_INL_H__
diff --git a/google-breakpad/src/processor/address_map.h b/google-breakpad/src/processor/address_map.h
new file mode 100644
index 0000000..2972cbb
--- /dev/null
+++ b/google-breakpad/src/processor/address_map.h
@@ -0,0 +1,85 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// address_map.h: Address maps.
+//
+// An address map contains a set of objects keyed by address.  Objects are
+// retrieved from the map by returning the object with the highest key less
+// than or equal to the lookup key.
+//
+// Author: Mark Mentovai
+
+#ifndef PROCESSOR_ADDRESS_MAP_H__
+#define PROCESSOR_ADDRESS_MAP_H__
+
+#include <map>
+
+namespace google_breakpad {
+
+// Forward declarations (for later friend declarations).
+template<class, class> class AddressMapSerializer;
+
+template<typename AddressType, typename EntryType>
+class AddressMap {
+ public:
+  AddressMap() : map_() {}
+
+  // Inserts an entry into the map.  Returns false without storing the entry
+  // if an entry is already stored in the map at the same address as specified
+  // by the address argument.
+  bool Store(const AddressType &address, const EntryType &entry);
+
+  // Locates the entry stored at the highest address less than or equal to
+  // the address argument.  If there is no such range, returns false.  The
+  // entry is returned in entry, which is a required argument.  If
+  // entry_address is not NULL, it will be set to the address that the entry
+  // was stored at.
+  bool Retrieve(const AddressType &address,
+                EntryType *entry, AddressType *entry_address) const;
+
+  // Empties the address map, restoring it to the same state as when it was
+  // initially created.
+  void Clear();
+
+ private:
+  friend class AddressMapSerializer<AddressType, EntryType>;
+  friend class ModuleComparer;
+
+  // Convenience types.
+  typedef std::map<AddressType, EntryType> AddressToEntryMap;
+  typedef typename AddressToEntryMap::const_iterator MapConstIterator;
+  typedef typename AddressToEntryMap::value_type MapValue;
+
+  // Maps the address of each entry to an EntryType.
+  AddressToEntryMap map_;
+};
+
+}  // namespace google_breakpad
+
+#endif  // PROCESSOR_ADDRESS_MAP_H__
diff --git a/google-breakpad/src/processor/address_map_unittest.cc b/google-breakpad/src/processor/address_map_unittest.cc
new file mode 100644
index 0000000..9b4095b
--- /dev/null
+++ b/google-breakpad/src/processor/address_map_unittest.cc
@@ -0,0 +1,196 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// address_map_unittest.cc: Unit tests for AddressMap.
+//
+// Author: Mark Mentovai
+
+#include <limits.h>
+#include <stdio.h>
+
+#include "processor/address_map-inl.h"
+#include "processor/linked_ptr.h"
+#include "processor/logging.h"
+
+#define ASSERT_TRUE(condition) \
+  if (!(condition)) { \
+    fprintf(stderr, "FAIL: %s @ %s:%d\n", #condition, __FILE__, __LINE__); \
+    return false; \
+  }
+
+#define ASSERT_FALSE(condition) ASSERT_TRUE(!(condition))
+
+#define ASSERT_EQ(e1, e2) ASSERT_TRUE((e1) == (e2))
+
+namespace {
+
+using google_breakpad::AddressMap;
+using google_breakpad::linked_ptr;
+
+// A CountedObject holds an int.  A global (not thread safe!) count of
+// allocated CountedObjects is maintained to help test memory management.
+class CountedObject {
+ public:
+  explicit CountedObject(int id) : id_(id) { ++count_; }
+  ~CountedObject() { --count_; }
+
+  static int count() { return count_; }
+  int id() const { return id_; }
+
+ private:
+  static int count_;
+  int id_;
+};
+
+int CountedObject::count_;
+
+typedef int AddressType;
+typedef AddressMap< AddressType, linked_ptr<CountedObject> > TestMap;
+
+static bool DoAddressMapTest() {
+  ASSERT_EQ(CountedObject::count(), 0);
+
+  TestMap test_map;
+  linked_ptr<CountedObject> entry;
+  AddressType address;
+
+  // Check that a new map is truly empty.
+  ASSERT_FALSE(test_map.Retrieve(0, &entry, &address));
+  ASSERT_FALSE(test_map.Retrieve(INT_MIN, &entry, &address));
+  ASSERT_FALSE(test_map.Retrieve(INT_MAX, &entry, &address));
+
+  // Check that Clear clears the map without leaking.
+  ASSERT_EQ(CountedObject::count(), 0);
+  ASSERT_TRUE(test_map.Store(1,
+      linked_ptr<CountedObject>(new CountedObject(0))));
+  ASSERT_TRUE(test_map.Retrieve(1, &entry, &address));
+  ASSERT_EQ(CountedObject::count(), 1);
+  test_map.Clear();
+  ASSERT_EQ(CountedObject::count(), 1);  // still holding entry in this scope
+
+  // Check that a cleared map is truly empty.
+  ASSERT_FALSE(test_map.Retrieve(0, &entry, &address));
+  ASSERT_FALSE(test_map.Retrieve(INT_MIN, &entry, &address));
+  ASSERT_FALSE(test_map.Retrieve(INT_MAX, &entry, &address));
+
+  // Check a single-element map.
+  ASSERT_TRUE(test_map.Store(10,
+      linked_ptr<CountedObject>(new CountedObject(1))));
+  ASSERT_FALSE(test_map.Retrieve(9, &entry, &address));
+  ASSERT_TRUE(test_map.Retrieve(10, &entry, &address));
+  ASSERT_EQ(CountedObject::count(), 1);
+  ASSERT_EQ(entry->id(), 1);
+  ASSERT_EQ(address, 10);
+  ASSERT_TRUE(test_map.Retrieve(11, &entry, &address));
+  ASSERT_TRUE(test_map.Retrieve(11, &entry, NULL));     // NULL ok here
+
+  // Add some more elements.
+  ASSERT_TRUE(test_map.Store(5,
+      linked_ptr<CountedObject>(new CountedObject(2))));
+  ASSERT_EQ(CountedObject::count(), 2);
+  ASSERT_TRUE(test_map.Store(20,
+      linked_ptr<CountedObject>(new CountedObject(3))));
+  ASSERT_TRUE(test_map.Store(15,
+      linked_ptr<CountedObject>(new CountedObject(4))));
+  ASSERT_FALSE(test_map.Store(10,
+      linked_ptr<CountedObject>(new CountedObject(5))));  // already in map
+  ASSERT_TRUE(test_map.Store(16,
+      linked_ptr<CountedObject>(new CountedObject(6))));
+  ASSERT_TRUE(test_map.Store(14,
+      linked_ptr<CountedObject>(new CountedObject(7))));
+
+  // Nothing was stored with a key under 5.  Don't use ASSERT inside loops
+  // because it won't show exactly which key/entry/address failed.
+  for (AddressType key = 0; key < 5; ++key) {
+    if (test_map.Retrieve(key, &entry, &address)) {
+      fprintf(stderr,
+              "FAIL: retrieve %d expected false observed true @ %s:%d\n",
+              key, __FILE__, __LINE__);
+      return false;
+    }
+  }
+
+  // Check everything that was stored.
+  const int id_verify[] = { 0, 0, 0, 0, 0,    // unused
+                            2, 2, 2, 2, 2,    // 5 - 9
+                            1, 1, 1, 1, 7,    // 10 - 14
+                            4, 6, 6, 6, 6,    // 15 - 19
+                            3, 3, 3, 3, 3,    // 20 - 24
+                            3, 3, 3, 3, 3 };  // 25 - 29
+  const AddressType address_verify[] = {  0,  0,  0,  0,  0,    // unused
+                                          5,  5,  5,  5,  5,    // 5 - 9
+                                         10, 10, 10, 10, 14,    // 10 - 14
+                                         15, 16, 16, 16, 16,    // 15 - 19
+                                         20, 20, 20, 20, 20,    // 20 - 24
+                                         20, 20, 20, 20, 20 };  // 25 - 29
+
+  for (AddressType key = 5; key < 30; ++key) {
+    if (!test_map.Retrieve(key, &entry, &address)) {
+      fprintf(stderr,
+              "FAIL: retrieve %d expected true observed false @ %s:%d\n",
+              key, __FILE__, __LINE__);
+      return false;
+    }
+    if (entry->id() != id_verify[key]) {
+      fprintf(stderr,
+              "FAIL: retrieve %d expected entry %d observed %d @ %s:%d\n",
+              key, id_verify[key], entry->id(), __FILE__, __LINE__);
+      return false;
+    }
+    if (address != address_verify[key]) {
+      fprintf(stderr,
+              "FAIL: retrieve %d expected address %d observed %d @ %s:%d\n",
+              key, address_verify[key], address, __FILE__, __LINE__);
+      return false;
+    }
+  }
+
+  // The stored objects should still be in the map.
+  ASSERT_EQ(CountedObject::count(), 6);
+
+  return true;
+}
+
+static bool RunTests() {
+  if (!DoAddressMapTest())
+    return false;
+
+  // Leak check.
+  ASSERT_EQ(CountedObject::count(), 0);
+
+  return true;
+}
+
+}  // namespace
+
+int main(int argc, char **argv) {
+  BPLOG_INIT(&argc, &argv);
+
+  return RunTests() ? 0 : 1;
+}
diff --git a/google-breakpad/src/processor/basic_code_module.h b/google-breakpad/src/processor/basic_code_module.h
new file mode 100644
index 0000000..3fe782b
--- /dev/null
+++ b/google-breakpad/src/processor/basic_code_module.h
@@ -0,0 +1,109 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// basic_code_module.h: Carries information about code modules that are loaded
+// into a process.
+//
+// This is a basic concrete implementation of CodeModule.  It cannot be
+// instantiated directly, only based on other objects that implement
+// the CodeModule interface.  It exists to provide a CodeModule implementation
+// a place to store information when the life of the original object (such as
+// a MinidumpModule) cannot be guaranteed.
+//
+// Author: Mark Mentovai
+
+#ifndef PROCESSOR_BASIC_CODE_MODULE_H__
+#define PROCESSOR_BASIC_CODE_MODULE_H__
+
+#include <string>
+
+#include "common/using_std_string.h"
+#include "google_breakpad/processor/code_module.h"
+
+namespace google_breakpad {
+
+class BasicCodeModule : public CodeModule {
+ public:
+  // Creates a new BasicCodeModule given any existing CodeModule
+  // implementation.  This is useful to make a copy of the data relevant to
+  // the CodeModule interface without requiring all of the resources that
+  // other CodeModule implementations may require.
+  explicit BasicCodeModule(const CodeModule *that)
+      : base_address_(that->base_address()),
+        size_(that->size()),
+        code_file_(that->code_file()),
+        code_identifier_(that->code_identifier()),
+        debug_file_(that->debug_file()),
+        debug_identifier_(that->debug_identifier()),
+        version_(that->version()) {}
+
+  BasicCodeModule(uint64_t base_address, uint64_t size,
+		  const string &code_file,
+		  const string &code_identifier,
+		  const string &debug_file,
+		  const string &debug_identifier,
+		  const string &version)
+    : base_address_(base_address),
+      size_(size),
+      code_file_(code_file),
+      code_identifier_(code_identifier),
+      debug_file_(debug_file),
+      debug_identifier_(debug_identifier),
+      version_(version)
+    {}
+  virtual ~BasicCodeModule() {}
+
+  // See code_module.h for descriptions of these methods and the associated
+  // members.
+  virtual uint64_t base_address() const { return base_address_; }
+  virtual uint64_t size() const { return size_; }
+  virtual string code_file() const { return code_file_; }
+  virtual string code_identifier() const { return code_identifier_; }
+  virtual string debug_file() const { return debug_file_; }
+  virtual string debug_identifier() const { return debug_identifier_; }
+  virtual string version() const { return version_; }
+  virtual const CodeModule* Copy() const { return new BasicCodeModule(this); }
+
+ private:
+  uint64_t base_address_;
+  uint64_t size_;
+  string code_file_;
+  string code_identifier_;
+  string debug_file_;
+  string debug_identifier_;
+  string version_;
+
+  // Disallow copy constructor and assignment operator.
+  BasicCodeModule(const BasicCodeModule &that);
+  void operator=(const BasicCodeModule &that);
+};
+
+}  // namespace google_breakpad
+
+#endif  // PROCESSOR_BASIC_CODE_MODULE_H__
diff --git a/google-breakpad/src/processor/basic_code_modules.cc b/google-breakpad/src/processor/basic_code_modules.cc
new file mode 100644
index 0000000..40b45a8
--- /dev/null
+++ b/google-breakpad/src/processor/basic_code_modules.cc
@@ -0,0 +1,128 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// basic_code_modules.cc: Contains all of the CodeModule objects that
+// were loaded into a single process.
+//
+// See basic_code_modules.h for documentation.
+//
+// Author: Mark Mentovai
+
+#include "processor/basic_code_modules.h"
+
+#include <assert.h>
+
+#include "google_breakpad/processor/code_module.h"
+#include "processor/linked_ptr.h"
+#include "processor/logging.h"
+#include "processor/range_map-inl.h"
+
+namespace google_breakpad {
+
+BasicCodeModules::BasicCodeModules(const CodeModules *that)
+    : main_address_(0),
+      map_(new RangeMap<uint64_t, linked_ptr<const CodeModule> >()) {
+  BPLOG_IF(ERROR, !that) << "BasicCodeModules::BasicCodeModules requires "
+                            "|that|";
+  assert(that);
+
+  const CodeModule *main_module = that->GetMainModule();
+  if (main_module)
+    main_address_ = main_module->base_address();
+
+  unsigned int count = that->module_count();
+  for (unsigned int module_sequence = 0;
+       module_sequence < count;
+       ++module_sequence) {
+    // Make a copy of the module and insert it into the map.  Use
+    // GetModuleAtIndex because ordering is unimportant when slurping the
+    // entire list, and GetModuleAtIndex may be faster than
+    // GetModuleAtSequence.
+    linked_ptr<const CodeModule> module(
+        that->GetModuleAtIndex(module_sequence)->Copy());
+    if (!map_->StoreRange(module->base_address(), module->size(), module)) {
+      BPLOG(ERROR) << "Module " << module->code_file() <<
+                      " could not be stored";
+    }
+  }
+}
+
+BasicCodeModules::BasicCodeModules()
+  : main_address_(0),
+    map_(new RangeMap<uint64_t, linked_ptr<const CodeModule> >()) {
+}
+
+BasicCodeModules::~BasicCodeModules() {
+  delete map_;
+}
+
+unsigned int BasicCodeModules::module_count() const {
+  return map_->GetCount();
+}
+
+const CodeModule* BasicCodeModules::GetModuleForAddress(
+    uint64_t address) const {
+  linked_ptr<const CodeModule> module;
+  if (!map_->RetrieveRange(address, &module, NULL, NULL)) {
+    BPLOG(INFO) << "No module at " << HexString(address);
+    return NULL;
+  }
+
+  return module.get();
+}
+
+const CodeModule* BasicCodeModules::GetMainModule() const {
+  return GetModuleForAddress(main_address_);
+}
+
+const CodeModule* BasicCodeModules::GetModuleAtSequence(
+    unsigned int sequence) const {
+  linked_ptr<const CodeModule> module;
+  if (!map_->RetrieveRangeAtIndex(sequence, &module, NULL, NULL)) {
+    BPLOG(ERROR) << "RetrieveRangeAtIndex failed for sequence " << sequence;
+    return NULL;
+  }
+
+  return module.get();
+}
+
+const CodeModule* BasicCodeModules::GetModuleAtIndex(
+    unsigned int index) const {
+  // This class stores everything in a RangeMap, without any more-efficient
+  // way to walk the list of CodeModule objects.  Implement GetModuleAtIndex
+  // using GetModuleAtSequence, which meets all of the requirements, and
+  // in addition, guarantees ordering.
+  return GetModuleAtSequence(index);
+}
+
+const CodeModules* BasicCodeModules::Copy() const {
+  return new BasicCodeModules(this);
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/processor/basic_code_modules.h b/google-breakpad/src/processor/basic_code_modules.h
new file mode 100644
index 0000000..ace569b
--- /dev/null
+++ b/google-breakpad/src/processor/basic_code_modules.h
@@ -0,0 +1,88 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// basic_code_modules.h: Contains all of the CodeModule objects that
+// were loaded into a single process.
+//
+// This is a basic concrete implementation of CodeModules.  It cannot be
+// instantiated directly, only based on other objects that implement
+// the CodeModules interface.  It exists to provide a CodeModules
+// implementation a place to store information when the life of the original
+// object (such as a MinidumpModuleList) cannot be guaranteed.
+//
+// Author: Mark Mentovai
+
+#ifndef PROCESSOR_BASIC_CODE_MODULES_H__
+#define PROCESSOR_BASIC_CODE_MODULES_H__
+
+#include "google_breakpad/processor/code_modules.h"
+
+namespace google_breakpad {
+
+template<typename T> class linked_ptr;
+template<typename AddressType, typename EntryType> class RangeMap;
+
+class BasicCodeModules : public CodeModules {
+ public:
+  // Creates a new BasicCodeModules object given any existing CodeModules
+  // implementation.  This is useful to make a copy of the data relevant to
+  // the CodeModules and CodeModule interfaces without requiring all of the
+  // resources that other implementations may require.  A copy will be
+  // made of each contained CodeModule using CodeModule::Copy.
+  explicit BasicCodeModules(const CodeModules *that);
+
+  virtual ~BasicCodeModules();
+
+  // See code_modules.h for descriptions of these methods.
+  virtual unsigned int module_count() const;
+  virtual const CodeModule* GetModuleForAddress(uint64_t address) const;
+  virtual const CodeModule* GetMainModule() const;
+  virtual const CodeModule* GetModuleAtSequence(unsigned int sequence) const;
+  virtual const CodeModule* GetModuleAtIndex(unsigned int index) const;
+  virtual const CodeModules* Copy() const;
+
+ protected:
+  BasicCodeModules();
+
+  // The base address of the main module.
+  uint64_t main_address_;
+
+  // The map used to contain each CodeModule, keyed by each CodeModule's
+  // address range.
+  RangeMap<uint64_t, linked_ptr<const CodeModule> > *map_;
+
+ private:
+  // Disallow copy constructor and assignment operator.
+  BasicCodeModules(const BasicCodeModules &that);
+  void operator=(const BasicCodeModules &that);
+};
+
+}  // namespace google_breakpad
+
+#endif  // PROCESSOR_BASIC_CODE_MODULES_H__
diff --git a/google-breakpad/src/processor/basic_source_line_resolver.cc b/google-breakpad/src/processor/basic_source_line_resolver.cc
new file mode 100644
index 0000000..62aa413
--- /dev/null
+++ b/google-breakpad/src/processor/basic_source_line_resolver.cc
@@ -0,0 +1,609 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// basic_source_line_resolver.cc: BasicSourceLineResolver implementation.
+//
+// See basic_source_line_resolver.h and basic_source_line_resolver_types.h
+// for documentation.
+
+#include <assert.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include <limits>
+#include <map>
+#include <utility>
+#include <vector>
+
+#include "google_breakpad/processor/basic_source_line_resolver.h"
+#include "processor/basic_source_line_resolver_types.h"
+#include "processor/module_factory.h"
+
+#include "processor/tokenize.h"
+
+using std::map;
+using std::vector;
+using std::make_pair;
+
+namespace google_breakpad {
+
+#ifdef _WIN32
+#define strtok_r strtok_s
+#define strtoull _strtoui64
+#endif
+
+static const char *kWhitespace = " \r\n";
+static const int kMaxErrorsPrinted = 5;
+static const int kMaxErrorsBeforeBailing = 100;
+
+BasicSourceLineResolver::BasicSourceLineResolver() :
+    SourceLineResolverBase(new BasicModuleFactory) { }
+
+// static
+void BasicSourceLineResolver::Module::LogParseError(
+   const string &message,
+   int line_number,
+   int *num_errors) {
+  if (++(*num_errors) <= kMaxErrorsPrinted) {
+    if (line_number > 0) {
+      BPLOG(ERROR) << "Line " << line_number << ": " << message;
+    } else {
+      BPLOG(ERROR) << message;
+    }
+  }
+}
+
+bool BasicSourceLineResolver::Module::LoadMapFromMemory(
+    char *memory_buffer,
+    size_t memory_buffer_size) {
+  linked_ptr<Function> cur_func;
+  int line_number = 0;
+  int num_errors = 0;
+  char *save_ptr;
+
+  // If the length is 0, we can still pretend we have a symbol file. This is
+  // for scenarios that want to test symbol lookup, but don't necessarily care
+  // if certain modules do not have any information, like system libraries.
+  if (memory_buffer_size == 0) {
+    return true;
+  }
+
+  // Make sure the last character is null terminator.
+  size_t last_null_terminator = memory_buffer_size - 1;
+  if (memory_buffer[last_null_terminator] != '\0') {
+    memory_buffer[last_null_terminator] = '\0';
+  }
+
+  // Skip any null terminators at the end of the memory buffer, and make sure
+  // there are no other null terminators in the middle of the memory buffer.
+  bool has_null_terminator_in_the_middle = false;
+  while (last_null_terminator > 0 &&
+         memory_buffer[last_null_terminator - 1] == '\0') {
+    last_null_terminator--;
+  }
+  for (size_t i = 0; i < last_null_terminator; i++) {
+    if (memory_buffer[i] == '\0') {
+      memory_buffer[i] = '_';
+      has_null_terminator_in_the_middle = true;
+    }
+  }
+  if (has_null_terminator_in_the_middle) {
+    LogParseError(
+       "Null terminator is not expected in the middle of the symbol data",
+       line_number,
+       &num_errors);
+  }
+
+  char *buffer;
+  buffer = strtok_r(memory_buffer, "\r\n", &save_ptr);
+
+  while (buffer != NULL) {
+    ++line_number;
+
+    if (strncmp(buffer, "FILE ", 5) == 0) {
+      if (!ParseFile(buffer)) {
+        LogParseError("ParseFile on buffer failed", line_number, &num_errors);
+      }
+    } else if (strncmp(buffer, "STACK ", 6) == 0) {
+      if (!ParseStackInfo(buffer)) {
+        LogParseError("ParseStackInfo failed", line_number, &num_errors);
+      }
+    } else if (strncmp(buffer, "FUNC ", 5) == 0) {
+      cur_func.reset(ParseFunction(buffer));
+      if (!cur_func.get()) {
+        LogParseError("ParseFunction failed", line_number, &num_errors);
+      } else {
+        // StoreRange will fail if the function has an invalid address or size.
+        // We'll silently ignore this, the function and any corresponding lines
+        // will be destroyed when cur_func is released.
+        functions_.StoreRange(cur_func->address, cur_func->size, cur_func);
+      }
+    } else if (strncmp(buffer, "PUBLIC ", 7) == 0) {
+      // Clear cur_func: public symbols don't contain line number information.
+      cur_func.reset();
+
+      if (!ParsePublicSymbol(buffer)) {
+        LogParseError("ParsePublicSymbol failed", line_number, &num_errors);
+      }
+    } else if (strncmp(buffer, "MODULE ", 7) == 0) {
+      // Ignore these.  They're not of any use to BasicSourceLineResolver,
+      // which is fed modules by a SymbolSupplier.  These lines are present to
+      // aid other tools in properly placing symbol files so that they can
+      // be accessed by a SymbolSupplier.
+      //
+      // MODULE <guid> <age> <filename>
+    } else if (strncmp(buffer, "INFO ", 5) == 0) {
+      // Ignore these as well, they're similarly just for housekeeping.
+      //
+      // INFO CODE_ID <code id> <filename>
+    } else {
+      if (!cur_func.get()) {
+        LogParseError("Found source line data without a function",
+                       line_number, &num_errors);
+      } else {
+        Line *line = ParseLine(buffer);
+        if (!line) {
+          LogParseError("ParseLine failed", line_number, &num_errors);
+        } else {
+          cur_func->lines.StoreRange(line->address, line->size,
+                                     linked_ptr<Line>(line));
+        }
+      }
+    }
+    if (num_errors > kMaxErrorsBeforeBailing) {
+      break;
+    }
+    buffer = strtok_r(NULL, "\r\n", &save_ptr);
+  }
+  is_corrupt_ = num_errors > 0;
+  return true;
+}
+
+void BasicSourceLineResolver::Module::LookupAddress(StackFrame *frame) const {
+  MemAddr address = frame->instruction - frame->module->base_address();
+
+  // First, look for a FUNC record that covers address. Use
+  // RetrieveNearestRange instead of RetrieveRange so that, if there
+  // is no such function, we can use the next function to bound the
+  // extent of the PUBLIC symbol we find, below. This does mean we
+  // need to check that address indeed falls within the function we
+  // find; do the range comparison in an overflow-friendly way.
+  linked_ptr<Function> func;
+  linked_ptr<PublicSymbol> public_symbol;
+  MemAddr function_base;
+  MemAddr function_size;
+  MemAddr public_address;
+  if (functions_.RetrieveNearestRange(address, &func,
+                                      &function_base, &function_size) &&
+      address >= function_base && address - function_base < function_size) {
+    frame->function_name = func->name;
+    frame->function_base = frame->module->base_address() + function_base;
+
+    linked_ptr<Line> line;
+    MemAddr line_base;
+    if (func->lines.RetrieveRange(address, &line, &line_base, NULL)) {
+      FileMap::const_iterator it = files_.find(line->source_file_id);
+      if (it != files_.end()) {
+        frame->source_file_name = files_.find(line->source_file_id)->second;
+      }
+      frame->source_line = line->line;
+      frame->source_line_base = frame->module->base_address() + line_base;
+    }
+  } else if (public_symbols_.Retrieve(address,
+                                      &public_symbol, &public_address) &&
+             (!func.get() || public_address > function_base)) {
+    frame->function_name = public_symbol->name;
+    frame->function_base = frame->module->base_address() + public_address;
+  }
+}
+
+WindowsFrameInfo *BasicSourceLineResolver::Module::FindWindowsFrameInfo(
+    const StackFrame *frame) const {
+  MemAddr address = frame->instruction - frame->module->base_address();
+  scoped_ptr<WindowsFrameInfo> result(new WindowsFrameInfo());
+
+  // We only know about WindowsFrameInfo::STACK_INFO_FRAME_DATA and
+  // WindowsFrameInfo::STACK_INFO_FPO. Prefer them in this order.
+  // WindowsFrameInfo::STACK_INFO_FRAME_DATA is the newer type that
+  // includes its own program string.
+  // WindowsFrameInfo::STACK_INFO_FPO is the older type
+  // corresponding to the FPO_DATA struct. See stackwalker_x86.cc.
+  linked_ptr<WindowsFrameInfo> frame_info;
+  if ((windows_frame_info_[WindowsFrameInfo::STACK_INFO_FRAME_DATA]
+       .RetrieveRange(address, &frame_info))
+      || (windows_frame_info_[WindowsFrameInfo::STACK_INFO_FPO]
+          .RetrieveRange(address, &frame_info))) {
+    result->CopyFrom(*frame_info.get());
+    return result.release();
+  }
+
+  // Even without a relevant STACK line, many functions contain
+  // information about how much space their parameters consume on the
+  // stack. Use RetrieveNearestRange instead of RetrieveRange, so that
+  // we can use the function to bound the extent of the PUBLIC symbol,
+  // below. However, this does mean we need to check that ADDRESS
+  // falls within the retrieved function's range; do the range
+  // comparison in an overflow-friendly way.
+  linked_ptr<Function> function;
+  MemAddr function_base, function_size;
+  if (functions_.RetrieveNearestRange(address, &function,
+                                      &function_base, &function_size) &&
+      address >= function_base && address - function_base < function_size) {
+    result->parameter_size = function->parameter_size;
+    result->valid |= WindowsFrameInfo::VALID_PARAMETER_SIZE;
+    return result.release();
+  }
+
+  // PUBLIC symbols might have a parameter size. Use the function we
+  // found above to limit the range the public symbol covers.
+  linked_ptr<PublicSymbol> public_symbol;
+  MemAddr public_address;
+  if (public_symbols_.Retrieve(address, &public_symbol, &public_address) &&
+      (!function.get() || public_address > function_base)) {
+    result->parameter_size = public_symbol->parameter_size;
+  }
+
+  return NULL;
+}
+
+CFIFrameInfo *BasicSourceLineResolver::Module::FindCFIFrameInfo(
+    const StackFrame *frame) const {
+  MemAddr address = frame->instruction - frame->module->base_address();
+  MemAddr initial_base, initial_size;
+  string initial_rules;
+
+  // Find the initial rule whose range covers this address. That
+  // provides an initial set of register recovery rules. Then, walk
+  // forward from the initial rule's starting address to frame's
+  // instruction address, applying delta rules.
+  if (!cfi_initial_rules_.RetrieveRange(address, &initial_rules,
+                                        &initial_base, &initial_size)) {
+    return NULL;
+  }
+
+  // Create a frame info structure, and populate it with the rules from
+  // the STACK CFI INIT record.
+  scoped_ptr<CFIFrameInfo> rules(new CFIFrameInfo());
+  if (!ParseCFIRuleSet(initial_rules, rules.get()))
+    return NULL;
+
+  // Find the first delta rule that falls within the initial rule's range.
+  map<MemAddr, string>::const_iterator delta =
+    cfi_delta_rules_.lower_bound(initial_base);
+
+  // Apply delta rules up to and including the frame's address.
+  while (delta != cfi_delta_rules_.end() && delta->first <= address) {
+    ParseCFIRuleSet(delta->second, rules.get());
+    delta++;
+  }
+
+  return rules.release();
+}
+
+bool BasicSourceLineResolver::Module::ParseFile(char *file_line) {
+  long index;
+  char *filename;
+  if (SymbolParseHelper::ParseFile(file_line, &index, &filename)) {
+    files_.insert(make_pair(index, string(filename)));
+    return true;
+  }
+  return false;
+}
+
+BasicSourceLineResolver::Function*
+BasicSourceLineResolver::Module::ParseFunction(char *function_line) {
+  uint64_t address;
+  uint64_t size;
+  long stack_param_size;
+  char *name;
+  if (SymbolParseHelper::ParseFunction(function_line, &address, &size,
+                                       &stack_param_size, &name)) {
+    return new Function(name, address, size, stack_param_size);
+  }
+  return NULL;
+}
+
+BasicSourceLineResolver::Line* BasicSourceLineResolver::Module::ParseLine(
+    char *line_line) {
+  uint64_t address;
+  uint64_t size;
+  long line_number;
+  long source_file;
+
+  if (SymbolParseHelper::ParseLine(line_line, &address, &size, &line_number,
+                                   &source_file)) {
+    return new Line(address, size, source_file, line_number);
+  }
+  return NULL;
+}
+
+bool BasicSourceLineResolver::Module::ParsePublicSymbol(char *public_line) {
+  uint64_t address;
+  long stack_param_size;
+  char *name;
+
+  if (SymbolParseHelper::ParsePublicSymbol(public_line, &address,
+                                           &stack_param_size, &name)) {
+    // A few public symbols show up with an address of 0.  This has been seen
+    // in the dumped output of ntdll.pdb for symbols such as _CIlog, _CIpow,
+    // RtlDescribeChunkLZNT1, and RtlReserveChunkLZNT1.  They would conflict
+    // with one another if they were allowed into the public_symbols_ map,
+    // but since the address is obviously invalid, gracefully accept them
+    // as input without putting them into the map.
+    if (address == 0) {
+      return true;
+    }
+
+    linked_ptr<PublicSymbol> symbol(new PublicSymbol(name, address,
+                                                     stack_param_size));
+    return public_symbols_.Store(address, symbol);
+  }
+  return false;
+}
+
+bool BasicSourceLineResolver::Module::ParseStackInfo(char *stack_info_line) {
+  // Skip "STACK " prefix.
+  stack_info_line += 6;
+
+  // Find the token indicating what sort of stack frame walking
+  // information this is.
+  while (*stack_info_line == ' ')
+    stack_info_line++;
+  const char *platform = stack_info_line;
+  while (!strchr(kWhitespace, *stack_info_line))
+    stack_info_line++;
+  *stack_info_line++ = '\0';
+
+  // MSVC stack frame info.
+  if (strcmp(platform, "WIN") == 0) {
+    int type = 0;
+    uint64_t rva, code_size;
+    linked_ptr<WindowsFrameInfo>
+      stack_frame_info(WindowsFrameInfo::ParseFromString(stack_info_line,
+                                                         type,
+                                                         rva,
+                                                         code_size));
+    if (stack_frame_info == NULL)
+      return false;
+
+    // TODO(mmentovai): I wanted to use StoreRange's return value as this
+    // method's return value, but MSVC infrequently outputs stack info that
+    // violates the containment rules.  This happens with a section of code
+    // in strncpy_s in test_app.cc (testdata/minidump2).  There, problem looks
+    // like this:
+    //   STACK WIN 4 4242 1a a 0 ...  (STACK WIN 4 base size prolog 0 ...)
+    //   STACK WIN 4 4243 2e 9 0 ...
+    // ContainedRangeMap treats these two blocks as conflicting.  In reality,
+    // when the prolog lengths are taken into account, the actual code of
+    // these blocks doesn't conflict.  However, we can't take the prolog lengths
+    // into account directly here because we'd wind up with a different set
+    // of range conflicts when MSVC outputs stack info like this:
+    //   STACK WIN 4 1040 73 33 0 ...
+    //   STACK WIN 4 105a 59 19 0 ...
+    // because in both of these entries, the beginning of the code after the
+    // prolog is at 0x1073, and the last byte of contained code is at 0x10b2.
+    // Perhaps we could get away with storing ranges by rva + prolog_size
+    // if ContainedRangeMap were modified to allow replacement of
+    // already-stored values.
+
+    windows_frame_info_[type].StoreRange(rva, code_size, stack_frame_info);
+    return true;
+  } else if (strcmp(platform, "CFI") == 0) {
+    // DWARF CFI stack frame info
+    return ParseCFIFrameInfo(stack_info_line);
+  } else {
+    // Something unrecognized.
+    return false;
+  }
+}
+
+bool BasicSourceLineResolver::Module::ParseCFIFrameInfo(
+    char *stack_info_line) {
+  char *cursor;
+
+  // Is this an INIT record or a delta record?
+  char *init_or_address = strtok_r(stack_info_line, " \r\n", &cursor);
+  if (!init_or_address)
+    return false;
+
+  if (strcmp(init_or_address, "INIT") == 0) {
+    // This record has the form "STACK INIT <address> <size> <rules...>".
+    char *address_field = strtok_r(NULL, " \r\n", &cursor);
+    if (!address_field) return false;
+
+    char *size_field = strtok_r(NULL, " \r\n", &cursor);
+    if (!size_field) return false;
+
+    char *initial_rules = strtok_r(NULL, "\r\n", &cursor);
+    if (!initial_rules) return false;
+
+    MemAddr address = strtoul(address_field, NULL, 16);
+    MemAddr size    = strtoul(size_field,    NULL, 16);
+    cfi_initial_rules_.StoreRange(address, size, initial_rules);
+    return true;
+  }
+
+  // This record has the form "STACK <address> <rules...>".
+  char *address_field = init_or_address;
+  char *delta_rules = strtok_r(NULL, "\r\n", &cursor);
+  if (!delta_rules) return false;
+  MemAddr address = strtoul(address_field, NULL, 16);
+  cfi_delta_rules_[address] = delta_rules;
+  return true;
+}
+
+// static
+bool SymbolParseHelper::ParseFile(char *file_line, long *index,
+                                  char **filename) {
+  // FILE <id> <filename>
+  assert(strncmp(file_line, "FILE ", 5) == 0);
+  file_line += 5;  // skip prefix
+
+  vector<char*> tokens;
+  if (!Tokenize(file_line, kWhitespace, 2, &tokens)) {
+    return false;
+  }
+
+  char *after_number;
+  *index = strtol(tokens[0], &after_number, 10);
+  if (!IsValidAfterNumber(after_number) || *index < 0 ||
+      *index == std::numeric_limits<long>::max()) {
+    return false;
+  }
+
+  *filename = tokens[1];
+  if (!filename) {
+    return false;
+  }
+
+  return true;
+}
+
+// static
+bool SymbolParseHelper::ParseFunction(char *function_line, uint64_t *address,
+                                      uint64_t *size, long *stack_param_size,
+                                      char **name) {
+  // FUNC <address> <size> <stack_param_size> <name>
+  assert(strncmp(function_line, "FUNC ", 5) == 0);
+  function_line += 5;  // skip prefix
+
+  vector<char*> tokens;
+  if (!Tokenize(function_line, kWhitespace, 4, &tokens)) {
+    return false;
+  }
+
+  char *after_number;
+  *address = strtoull(tokens[0], &after_number, 16);
+  if (!IsValidAfterNumber(after_number) ||
+      *address == std::numeric_limits<unsigned long long>::max()) {
+    return false;
+  }
+  *size = strtoull(tokens[1], &after_number, 16);
+  if (!IsValidAfterNumber(after_number) ||
+      *size == std::numeric_limits<unsigned long long>::max()) {
+    return false;
+  }
+  *stack_param_size = strtol(tokens[2], &after_number, 16);
+  if (!IsValidAfterNumber(after_number) ||
+      *stack_param_size == std::numeric_limits<long>::max() ||
+      *stack_param_size < 0) {
+    return false;
+  }
+  *name = tokens[3];
+
+  return true;
+}
+
+// static
+bool SymbolParseHelper::ParseLine(char *line_line, uint64_t *address,
+                                  uint64_t *size, long *line_number,
+                                  long *source_file) {
+  // <address> <size> <line number> <source file id>
+  vector<char*> tokens;
+  if (!Tokenize(line_line, kWhitespace, 4, &tokens)) {
+    return false;
+  }
+
+  char *after_number;
+  *address  = strtoull(tokens[0], &after_number, 16);
+  if (!IsValidAfterNumber(after_number) ||
+      *address == std::numeric_limits<unsigned long long>::max()) {
+    return false;
+  }
+  *size = strtoull(tokens[1], &after_number, 16);
+  if (!IsValidAfterNumber(after_number) ||
+      *size == std::numeric_limits<unsigned long long>::max()) {
+    return false;
+  }
+  *line_number = strtol(tokens[2], &after_number, 10);
+  if (!IsValidAfterNumber(after_number) ||
+      *line_number == std::numeric_limits<long>::max()) {
+    return false;
+  }
+  *source_file = strtol(tokens[3], &after_number, 10);
+  if (!IsValidAfterNumber(after_number) || *source_file < 0 ||
+      *source_file == std::numeric_limits<long>::max()) {
+    return false;
+  }
+
+  // Valid line numbers normally start from 1, however there are functions that
+  // are associated with a source file but not associated with any line number
+  // (block helper function) and for such functions the symbol file contains 0
+  // for the line numbers.  Hence, 0 should be treated as a valid line number.
+  // For more information on block helper functions, please, take a look at:
+  // http://clang.llvm.org/docs/Block-ABI-Apple.html
+  if (*line_number < 0) {
+    return false;
+  }
+
+  return true;
+}
+
+// static
+bool SymbolParseHelper::ParsePublicSymbol(char *public_line,
+                                          uint64_t *address,
+                                          long *stack_param_size,
+                                          char **name) {
+  // PUBLIC <address> <stack_param_size> <name>
+  assert(strncmp(public_line, "PUBLIC ", 7) == 0);
+  public_line += 7;  // skip prefix
+
+  vector<char*> tokens;
+  if (!Tokenize(public_line, kWhitespace, 3, &tokens)) {
+    return false;
+  }
+
+  char *after_number;
+  *address = strtoull(tokens[0], &after_number, 16);
+  if (!IsValidAfterNumber(after_number) ||
+      *address == std::numeric_limits<unsigned long long>::max()) {
+    return false;
+  }
+  *stack_param_size = strtol(tokens[1], &after_number, 16);
+  if (!IsValidAfterNumber(after_number) ||
+      *stack_param_size == std::numeric_limits<long>::max() ||
+      *stack_param_size < 0) {
+    return false;
+  }
+  *name = tokens[2]; 
+
+  return true;
+}
+
+// static
+bool SymbolParseHelper::IsValidAfterNumber(char *after_number) {
+  if (after_number != NULL && strchr(kWhitespace, *after_number) != NULL) {
+    return true;
+  }
+  return false;
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/processor/basic_source_line_resolver_types.h b/google-breakpad/src/processor/basic_source_line_resolver_types.h
new file mode 100644
index 0000000..a022bc0
--- /dev/null
+++ b/google-breakpad/src/processor/basic_source_line_resolver_types.h
@@ -0,0 +1,177 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// basic_source_line_types.h: definition of nested classes/structs in
+// BasicSourceLineResolver.  It moves the definitions out of
+// basic_source_line_resolver.cc, so that other classes could have access
+// to these private nested types without including basic_source_line_resolver.cc
+//
+// Author: Siyang Xie (lambxsy@google.com)
+
+#ifndef PROCESSOR_BASIC_SOURCE_LINE_RESOLVER_TYPES_H__
+#define PROCESSOR_BASIC_SOURCE_LINE_RESOLVER_TYPES_H__
+
+#include <map>
+#include <string>
+
+#include "common/scoped_ptr.h"
+#include "google_breakpad/processor/basic_source_line_resolver.h"
+#include "processor/source_line_resolver_base_types.h"
+
+#include "processor/address_map-inl.h"
+#include "processor/range_map-inl.h"
+#include "processor/contained_range_map-inl.h"
+
+#include "processor/linked_ptr.h"
+#include "google_breakpad/processor/stack_frame.h"
+#include "processor/cfi_frame_info.h"
+#include "processor/windows_frame_info.h"
+
+namespace google_breakpad {
+
+struct
+BasicSourceLineResolver::Function : public SourceLineResolverBase::Function {
+  Function(const string &function_name,
+           MemAddr function_address,
+           MemAddr code_size,
+           int set_parameter_size) : Base(function_name,
+                                          function_address,
+                                          code_size,
+                                          set_parameter_size),
+                                     lines() { }
+  RangeMap< MemAddr, linked_ptr<Line> > lines;
+ private:
+  typedef SourceLineResolverBase::Function Base;
+};
+
+
+class BasicSourceLineResolver::Module : public SourceLineResolverBase::Module {
+ public:
+  explicit Module(const string &name) : name_(name), is_corrupt_(false) { }
+  virtual ~Module() { }
+
+  // Loads a map from the given buffer in char* type.
+  // Does NOT have ownership of memory_buffer.
+  // The passed in |memory buffer| is of size |memory_buffer_size|.  If it is
+  // not null terminated, LoadMapFromMemory() will null terminate it by
+  // modifying the passed in buffer.
+  virtual bool LoadMapFromMemory(char *memory_buffer,
+                                 size_t memory_buffer_size);
+
+  // Tells whether the loaded symbol data is corrupt.  Return value is
+  // undefined, if the symbol data hasn't been loaded yet.
+  virtual bool IsCorrupt() const { return is_corrupt_; }
+
+  // Looks up the given relative address, and fills the StackFrame struct
+  // with the result.
+  virtual void LookupAddress(StackFrame *frame) const;
+
+  // If Windows stack walking information is available covering ADDRESS,
+  // return a WindowsFrameInfo structure describing it. If the information
+  // is not available, returns NULL. A NULL return value does not indicate
+  // an error. The caller takes ownership of any returned WindowsFrameInfo
+  // object.
+  virtual WindowsFrameInfo *FindWindowsFrameInfo(const StackFrame *frame) const;
+
+  // If CFI stack walking information is available covering ADDRESS,
+  // return a CFIFrameInfo structure describing it. If the information
+  // is not available, return NULL. The caller takes ownership of any
+  // returned CFIFrameInfo object.
+  virtual CFIFrameInfo *FindCFIFrameInfo(const StackFrame *frame) const;
+
+ private:
+  // Friend declarations.
+  friend class BasicSourceLineResolver;
+  friend class ModuleComparer;
+  friend class ModuleSerializer;
+
+  typedef std::map<int, string> FileMap;
+
+  // Logs parse errors.  |*num_errors| is increased every time LogParseError is
+  // called.
+  static void LogParseError(
+      const string &message,
+      int line_number,
+      int *num_errors);
+
+  // Parses a file declaration
+  bool ParseFile(char *file_line);
+
+  // Parses a function declaration, returning a new Function object.
+  Function* ParseFunction(char *function_line);
+
+  // Parses a line declaration, returning a new Line object.
+  Line* ParseLine(char *line_line);
+
+  // Parses a PUBLIC symbol declaration, storing it in public_symbols_.
+  // Returns false if an error occurs.
+  bool ParsePublicSymbol(char *public_line);
+
+  // Parses a STACK WIN or STACK CFI frame info declaration, storing
+  // it in the appropriate table.
+  bool ParseStackInfo(char *stack_info_line);
+
+  // Parses a STACK CFI record, storing it in cfi_frame_info_.
+  bool ParseCFIFrameInfo(char *stack_info_line);
+
+  string name_;
+  FileMap files_;
+  RangeMap< MemAddr, linked_ptr<Function> > functions_;
+  AddressMap< MemAddr, linked_ptr<PublicSymbol> > public_symbols_;
+  bool is_corrupt_;
+
+  // Each element in the array is a ContainedRangeMap for a type
+  // listed in WindowsFrameInfoTypes. These are split by type because
+  // there may be overlaps between maps of different types, but some
+  // information is only available as certain types.
+  ContainedRangeMap< MemAddr, linked_ptr<WindowsFrameInfo> >
+    windows_frame_info_[WindowsFrameInfo::STACK_INFO_LAST];
+
+  // DWARF CFI stack walking data. The Module stores the initial rule sets
+  // and rule deltas as strings, just as they appear in the symbol file:
+  // although the file may contain hundreds of thousands of STACK CFI
+  // records, walking a stack will only ever use a few of them, so it's
+  // best to delay parsing a record until it's actually needed.
+
+  // STACK CFI INIT records: for each range, an initial set of register
+  // recovery rules. The RangeMap's itself gives the starting and ending
+  // addresses.
+  RangeMap<MemAddr, string> cfi_initial_rules_;
+
+  // STACK CFI records: at a given address, the changes to the register
+  // recovery rules that take effect at that address. The map key is the
+  // starting address; the ending address is the key of the next entry in
+  // this map, or the end of the range as given by the cfi_initial_rules_
+  // entry (which FindCFIFrameInfo looks up first).
+  std::map<MemAddr, string> cfi_delta_rules_;
+};
+
+}  // namespace google_breakpad
+
+#endif  // PROCESSOR_BASIC_SOURCE_LINE_RESOLVER_TYPES_H__
diff --git a/google-breakpad/src/processor/basic_source_line_resolver_unittest.cc b/google-breakpad/src/processor/basic_source_line_resolver_unittest.cc
new file mode 100644
index 0000000..7d4cd5c
--- /dev/null
+++ b/google-breakpad/src/processor/basic_source_line_resolver_unittest.cc
@@ -0,0 +1,680 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include <assert.h>
+#include <stdio.h>
+
+#include <string>
+
+#include "breakpad_googletest_includes.h"
+#include "common/scoped_ptr.h"
+#include "common/using_std_string.h"
+#include "google_breakpad/processor/basic_source_line_resolver.h"
+#include "google_breakpad/processor/code_module.h"
+#include "google_breakpad/processor/stack_frame.h"
+#include "google_breakpad/processor/memory_region.h"
+#include "processor/linked_ptr.h"
+#include "processor/logging.h"
+#include "processor/windows_frame_info.h"
+#include "processor/cfi_frame_info.h"
+
+namespace {
+
+using google_breakpad::BasicSourceLineResolver;
+using google_breakpad::CFIFrameInfo;
+using google_breakpad::CodeModule;
+using google_breakpad::MemoryRegion;
+using google_breakpad::StackFrame;
+using google_breakpad::WindowsFrameInfo;
+using google_breakpad::linked_ptr;
+using google_breakpad::scoped_ptr;
+using google_breakpad::SymbolParseHelper;
+
+class TestCodeModule : public CodeModule {
+ public:
+  TestCodeModule(string code_file) : code_file_(code_file) {}
+  virtual ~TestCodeModule() {}
+
+  virtual uint64_t base_address() const { return 0; }
+  virtual uint64_t size() const { return 0xb000; }
+  virtual string code_file() const { return code_file_; }
+  virtual string code_identifier() const { return ""; }
+  virtual string debug_file() const { return ""; }
+  virtual string debug_identifier() const { return ""; }
+  virtual string version() const { return ""; }
+  virtual const CodeModule* Copy() const {
+    return new TestCodeModule(code_file_);
+  }
+
+ private:
+  string code_file_;
+};
+
+// A mock memory region object, for use by the STACK CFI tests.
+class MockMemoryRegion: public MemoryRegion {
+  uint64_t GetBase() const { return 0x10000; }
+  uint32_t GetSize() const { return 0x01000; }
+  bool GetMemoryAtAddress(uint64_t address, uint8_t *value) const {
+    *value = address & 0xff;
+    return true;
+  }
+  bool GetMemoryAtAddress(uint64_t address, uint16_t *value) const {
+    *value = address & 0xffff;
+    return true;
+  }
+  bool GetMemoryAtAddress(uint64_t address, uint32_t *value) const {
+    switch (address) {
+      case 0x10008: *value = 0x98ecadc3; break; // saved %ebx
+      case 0x1000c: *value = 0x878f7524; break; // saved %esi
+      case 0x10010: *value = 0x6312f9a5; break; // saved %edi
+      case 0x10014: *value = 0x10038;    break; // caller's %ebp
+      case 0x10018: *value = 0xf6438648; break; // return address
+      default: *value = 0xdeadbeef;      break; // junk
+    }
+    return true;
+  }
+  bool GetMemoryAtAddress(uint64_t address, uint64_t *value) const {
+    *value = address;
+    return true;
+  }
+  void Print() const {
+    assert(false);
+  }
+};
+
+// Verify that, for every association in ACTUAL, EXPECTED has the same
+// association. (That is, ACTUAL's associations should be a subset of
+// EXPECTED's.) Also verify that ACTUAL has associations for ".ra" and
+// ".cfa".
+static bool VerifyRegisters(
+    const char *file, int line,
+    const CFIFrameInfo::RegisterValueMap<uint32_t> &expected,
+    const CFIFrameInfo::RegisterValueMap<uint32_t> &actual) {
+  CFIFrameInfo::RegisterValueMap<uint32_t>::const_iterator a;
+  a = actual.find(".cfa");
+  if (a == actual.end())
+    return false;
+  a = actual.find(".ra");
+  if (a == actual.end())
+    return false;
+  for (a = actual.begin(); a != actual.end(); a++) {
+    CFIFrameInfo::RegisterValueMap<uint32_t>::const_iterator e =
+      expected.find(a->first);
+    if (e == expected.end()) {
+      fprintf(stderr, "%s:%d: unexpected register '%s' recovered, value 0x%x\n",
+              file, line, a->first.c_str(), a->second);
+      return false;
+    }
+    if (e->second != a->second) {
+      fprintf(stderr,
+              "%s:%d: register '%s' recovered value was 0x%x, expected 0x%x\n",
+              file, line, a->first.c_str(), a->second, e->second);
+      return false;
+    }
+    // Don't complain if this doesn't recover all registers. Although
+    // the DWARF spec says that unmentioned registers are undefined,
+    // GCC uses omission to mean that they are unchanged.
+  }
+  return true;
+}
+
+
+static bool VerifyEmpty(const StackFrame &frame) {
+  if (frame.function_name.empty() &&
+      frame.source_file_name.empty() &&
+      frame.source_line == 0)
+    return true;
+  return false;
+}
+
+static void ClearSourceLineInfo(StackFrame *frame) {
+  frame->function_name.clear();
+  frame->module = NULL;
+  frame->source_file_name.clear();
+  frame->source_line = 0;
+}
+
+class TestBasicSourceLineResolver : public ::testing::Test {
+public:
+  void SetUp() {
+    testdata_dir = string(getenv("srcdir") ? getenv("srcdir") : ".") +
+                         "/src/processor/testdata";
+  }
+
+  BasicSourceLineResolver resolver;
+  string testdata_dir;
+};
+
+TEST_F(TestBasicSourceLineResolver, TestLoadAndResolve)
+{
+  TestCodeModule module1("module1");
+  ASSERT_TRUE(resolver.LoadModule(&module1, testdata_dir + "/module1.out"));
+  ASSERT_TRUE(resolver.HasModule(&module1));
+  TestCodeModule module2("module2");
+  ASSERT_TRUE(resolver.LoadModule(&module2, testdata_dir + "/module2.out"));
+  ASSERT_TRUE(resolver.HasModule(&module2));
+
+
+  StackFrame frame;
+  scoped_ptr<WindowsFrameInfo> windows_frame_info;
+  scoped_ptr<CFIFrameInfo> cfi_frame_info;
+  frame.instruction = 0x1000;
+  frame.module = NULL;
+  resolver.FillSourceLineInfo(&frame);
+  ASSERT_FALSE(frame.module);
+  ASSERT_TRUE(frame.function_name.empty());
+  ASSERT_EQ(frame.function_base, 0U);
+  ASSERT_TRUE(frame.source_file_name.empty());
+  ASSERT_EQ(frame.source_line, 0);
+  ASSERT_EQ(frame.source_line_base, 0U);
+
+  frame.module = &module1;
+  resolver.FillSourceLineInfo(&frame);
+  ASSERT_EQ(frame.function_name, "Function1_1");
+  ASSERT_TRUE(frame.module);
+  ASSERT_EQ(frame.module->code_file(), "module1");
+  ASSERT_EQ(frame.function_base, 0x1000U);
+  ASSERT_EQ(frame.source_file_name, "file1_1.cc");
+  ASSERT_EQ(frame.source_line, 44);
+  ASSERT_EQ(frame.source_line_base, 0x1000U);
+  windows_frame_info.reset(resolver.FindWindowsFrameInfo(&frame));
+  ASSERT_TRUE(windows_frame_info.get());
+  ASSERT_EQ(windows_frame_info->type_, WindowsFrameInfo::STACK_INFO_FRAME_DATA);
+  ASSERT_FALSE(windows_frame_info->allocates_base_pointer);
+  ASSERT_EQ(windows_frame_info->program_string,
+            "$eip 4 + ^ = $esp $ebp 8 + = $ebp $ebp ^ =");
+
+  ClearSourceLineInfo(&frame);
+  frame.instruction = 0x800;
+  frame.module = &module1;
+  resolver.FillSourceLineInfo(&frame);
+  ASSERT_TRUE(VerifyEmpty(frame));
+  windows_frame_info.reset(resolver.FindWindowsFrameInfo(&frame));
+  ASSERT_FALSE(windows_frame_info.get());
+
+  frame.instruction = 0x1280;
+  resolver.FillSourceLineInfo(&frame);
+  ASSERT_EQ(frame.function_name, "Function1_3");
+  ASSERT_TRUE(frame.source_file_name.empty());
+  ASSERT_EQ(frame.source_line, 0);
+  windows_frame_info.reset(resolver.FindWindowsFrameInfo(&frame));
+  ASSERT_TRUE(windows_frame_info.get());
+  ASSERT_EQ(windows_frame_info->type_, WindowsFrameInfo::STACK_INFO_UNKNOWN);
+  ASSERT_FALSE(windows_frame_info->allocates_base_pointer);
+  ASSERT_TRUE(windows_frame_info->program_string.empty());
+
+  frame.instruction = 0x1380;
+  resolver.FillSourceLineInfo(&frame);
+  ASSERT_EQ(frame.function_name, "Function1_4");
+  ASSERT_TRUE(frame.source_file_name.empty());
+  ASSERT_EQ(frame.source_line, 0);
+  windows_frame_info.reset(resolver.FindWindowsFrameInfo(&frame));
+  ASSERT_EQ(windows_frame_info->type_, WindowsFrameInfo::STACK_INFO_FRAME_DATA);
+  ASSERT_TRUE(windows_frame_info.get());
+  ASSERT_FALSE(windows_frame_info->allocates_base_pointer);
+  ASSERT_FALSE(windows_frame_info->program_string.empty());
+
+  frame.instruction = 0x2000;
+  windows_frame_info.reset(resolver.FindWindowsFrameInfo(&frame));
+  ASSERT_FALSE(windows_frame_info.get());
+
+  // module1 has STACK CFI records covering 3d40..3def;
+  // module2 has STACK CFI records covering 3df0..3e9f;
+  // check that FindCFIFrameInfo doesn't claim to find any outside those ranges.
+  frame.instruction = 0x3d3f;
+  frame.module = &module1;
+  cfi_frame_info.reset(resolver.FindCFIFrameInfo(&frame));
+  ASSERT_FALSE(cfi_frame_info.get());
+
+  frame.instruction = 0x3e9f;
+  frame.module = &module1;
+  cfi_frame_info.reset(resolver.FindCFIFrameInfo(&frame));
+  ASSERT_FALSE(cfi_frame_info.get());
+
+  CFIFrameInfo::RegisterValueMap<uint32_t> current_registers;
+  CFIFrameInfo::RegisterValueMap<uint32_t> caller_registers;
+  CFIFrameInfo::RegisterValueMap<uint32_t> expected_caller_registers;
+  MockMemoryRegion memory;
+
+  // Regardless of which instruction evaluation takes place at, it
+  // should produce the same values for the caller's registers.
+  expected_caller_registers[".cfa"] = 0x1001c;
+  expected_caller_registers[".ra"]  = 0xf6438648;
+  expected_caller_registers["$ebp"] = 0x10038;
+  expected_caller_registers["$ebx"] = 0x98ecadc3;
+  expected_caller_registers["$esi"] = 0x878f7524;
+  expected_caller_registers["$edi"] = 0x6312f9a5;
+
+  frame.instruction = 0x3d40;
+  frame.module = &module1;
+  current_registers.clear();
+  current_registers["$esp"] = 0x10018;
+  current_registers["$ebp"] = 0x10038;
+  current_registers["$ebx"] = 0x98ecadc3;
+  current_registers["$esi"] = 0x878f7524;
+  current_registers["$edi"] = 0x6312f9a5;
+  cfi_frame_info.reset(resolver.FindCFIFrameInfo(&frame));
+  ASSERT_TRUE(cfi_frame_info.get());
+  ASSERT_TRUE(cfi_frame_info.get()
+              ->FindCallerRegs<uint32_t>(current_registers, memory,
+                                          &caller_registers));
+  ASSERT_TRUE(VerifyRegisters(__FILE__, __LINE__,
+                              expected_caller_registers, caller_registers));
+
+  frame.instruction = 0x3d41;
+  current_registers["$esp"] = 0x10014;
+  cfi_frame_info.reset(resolver.FindCFIFrameInfo(&frame));
+  ASSERT_TRUE(cfi_frame_info.get());
+  ASSERT_TRUE(cfi_frame_info.get()
+              ->FindCallerRegs<uint32_t>(current_registers, memory,
+                                          &caller_registers));
+  ASSERT_TRUE(VerifyRegisters(__FILE__, __LINE__,
+                              expected_caller_registers, caller_registers));
+
+  frame.instruction = 0x3d43;
+  current_registers["$ebp"] = 0x10014;
+  cfi_frame_info.reset(resolver.FindCFIFrameInfo(&frame));
+  ASSERT_TRUE(cfi_frame_info.get());
+  ASSERT_TRUE(cfi_frame_info.get()
+              ->FindCallerRegs<uint32_t>(current_registers, memory,
+                                          &caller_registers));
+  VerifyRegisters(__FILE__, __LINE__,
+                  expected_caller_registers, caller_registers);
+
+  frame.instruction = 0x3d54;
+  current_registers["$ebx"] = 0x6864f054U;
+  cfi_frame_info.reset(resolver.FindCFIFrameInfo(&frame));
+  ASSERT_TRUE(cfi_frame_info.get());
+  ASSERT_TRUE(cfi_frame_info.get()
+              ->FindCallerRegs<uint32_t>(current_registers, memory,
+                                          &caller_registers));
+  VerifyRegisters(__FILE__, __LINE__,
+                  expected_caller_registers, caller_registers);
+
+  frame.instruction = 0x3d5a;
+  current_registers["$esi"] = 0x6285f79aU;
+  cfi_frame_info.reset(resolver.FindCFIFrameInfo(&frame));
+  ASSERT_TRUE(cfi_frame_info.get());
+  ASSERT_TRUE(cfi_frame_info.get()
+              ->FindCallerRegs<uint32_t>(current_registers, memory,
+                                          &caller_registers));
+  VerifyRegisters(__FILE__, __LINE__,
+                  expected_caller_registers, caller_registers);
+
+  frame.instruction = 0x3d84;
+  current_registers["$edi"] = 0x64061449U;
+  cfi_frame_info.reset(resolver.FindCFIFrameInfo(&frame));
+  ASSERT_TRUE(cfi_frame_info.get());
+  ASSERT_TRUE(cfi_frame_info.get()
+              ->FindCallerRegs<uint32_t>(current_registers, memory,
+                                          &caller_registers));
+  VerifyRegisters(__FILE__, __LINE__,
+                  expected_caller_registers, caller_registers);
+
+  frame.instruction = 0x2900;
+  frame.module = &module1;
+  resolver.FillSourceLineInfo(&frame);
+  ASSERT_EQ(frame.function_name, string("PublicSymbol"));
+
+  frame.instruction = 0x4000;
+  frame.module = &module1;
+  resolver.FillSourceLineInfo(&frame);
+  ASSERT_EQ(frame.function_name, string("LargeFunction"));
+
+  frame.instruction = 0x2181;
+  frame.module = &module2;
+  resolver.FillSourceLineInfo(&frame);
+  ASSERT_EQ(frame.function_name, "Function2_2");
+  ASSERT_EQ(frame.function_base, 0x2170U);
+  ASSERT_TRUE(frame.module);
+  ASSERT_EQ(frame.module->code_file(), "module2");
+  ASSERT_EQ(frame.source_file_name, "file2_2.cc");
+  ASSERT_EQ(frame.source_line, 21);
+  ASSERT_EQ(frame.source_line_base, 0x2180U);
+  windows_frame_info.reset(resolver.FindWindowsFrameInfo(&frame));
+  ASSERT_TRUE(windows_frame_info.get());
+  ASSERT_EQ(windows_frame_info->type_, WindowsFrameInfo::STACK_INFO_FRAME_DATA);
+  ASSERT_EQ(windows_frame_info->prolog_size, 1U);
+
+  frame.instruction = 0x216f;
+  resolver.FillSourceLineInfo(&frame);
+  ASSERT_EQ(frame.function_name, "Public2_1");
+
+  ClearSourceLineInfo(&frame);
+  frame.instruction = 0x219f;
+  frame.module = &module2;
+  resolver.FillSourceLineInfo(&frame);
+  ASSERT_TRUE(frame.function_name.empty());
+
+  frame.instruction = 0x21a0;
+  frame.module = &module2;
+  resolver.FillSourceLineInfo(&frame);
+  ASSERT_EQ(frame.function_name, "Public2_2");
+}
+
+TEST_F(TestBasicSourceLineResolver, TestInvalidLoads)
+{
+  TestCodeModule module3("module3");
+  ASSERT_TRUE(resolver.LoadModule(&module3,
+                                   testdata_dir + "/module3_bad.out"));
+  ASSERT_TRUE(resolver.HasModule(&module3));
+  ASSERT_TRUE(resolver.IsModuleCorrupt(&module3));
+  TestCodeModule module4("module4");
+  ASSERT_TRUE(resolver.LoadModule(&module4,
+                                   testdata_dir + "/module4_bad.out"));
+  ASSERT_TRUE(resolver.HasModule(&module4));
+  ASSERT_TRUE(resolver.IsModuleCorrupt(&module4));
+  TestCodeModule module5("module5");
+  ASSERT_FALSE(resolver.LoadModule(&module5,
+                                   testdata_dir + "/invalid-filename"));
+  ASSERT_FALSE(resolver.HasModule(&module5));
+  TestCodeModule invalidmodule("invalid-module");
+  ASSERT_FALSE(resolver.HasModule(&invalidmodule));
+}
+
+TEST_F(TestBasicSourceLineResolver, TestUnload)
+{
+  TestCodeModule module1("module1");
+  ASSERT_FALSE(resolver.HasModule(&module1));
+  ASSERT_TRUE(resolver.LoadModule(&module1, testdata_dir + "/module1.out"));
+  ASSERT_TRUE(resolver.HasModule(&module1));
+  resolver.UnloadModule(&module1);
+  ASSERT_FALSE(resolver.HasModule(&module1));
+  ASSERT_TRUE(resolver.LoadModule(&module1, testdata_dir + "/module1.out"));
+  ASSERT_TRUE(resolver.HasModule(&module1));
+}
+
+// Test parsing of valid FILE lines.  The format is:
+// FILE <id> <filename>
+TEST(SymbolParseHelper, ParseFileValid) {
+  long index;
+  char *filename;
+
+  char kTestLine[] = "FILE 1 file name";
+  ASSERT_TRUE(SymbolParseHelper::ParseFile(kTestLine, &index, &filename));
+  EXPECT_EQ(1, index);
+  EXPECT_EQ("file name", string(filename));
+
+  // 0 is a valid index.
+  char kTestLine1[] = "FILE 0 file name";
+  ASSERT_TRUE(SymbolParseHelper::ParseFile(kTestLine1, &index, &filename));
+  EXPECT_EQ(0, index);
+  EXPECT_EQ("file name", string(filename));
+}
+
+// Test parsing of invalid FILE lines.  The format is:
+// FILE <id> <filename>
+TEST(SymbolParseHelper, ParseFileInvalid) {
+  long index;
+  char *filename;
+
+  // Test missing file name.
+  char kTestLine[] = "FILE 1 ";
+  ASSERT_FALSE(SymbolParseHelper::ParseFile(kTestLine, &index, &filename));
+
+  // Test bad index.
+  char kTestLine1[] = "FILE x1 file name";
+  ASSERT_FALSE(SymbolParseHelper::ParseFile(kTestLine1, &index, &filename));
+
+  // Test large index.
+  char kTestLine2[] = "FILE 123123123123123123123123 file name";
+  ASSERT_FALSE(SymbolParseHelper::ParseFile(kTestLine2, &index, &filename));
+
+  // Test negative index.
+  char kTestLine3[] = "FILE -2 file name";
+  ASSERT_FALSE(SymbolParseHelper::ParseFile(kTestLine3, &index, &filename));
+}
+
+// Test parsing of valid FUNC lines.  The format is:
+// FUNC <address> <size> <stack_param_size> <name>
+TEST(SymbolParseHelper, ParseFunctionValid) {
+  uint64_t address;
+  uint64_t size;
+  long stack_param_size;
+  char *name;
+
+  char kTestLine[] = "FUNC 1 2 3 function name";
+  ASSERT_TRUE(SymbolParseHelper::ParseFunction(kTestLine, &address, &size,
+                                               &stack_param_size, &name));
+  EXPECT_EQ(1ULL, address);
+  EXPECT_EQ(2ULL, size);
+  EXPECT_EQ(3, stack_param_size);
+  EXPECT_EQ("function name", string(name));
+
+  // Test hex address, size, and param size.
+  char kTestLine1[] = "FUNC a1 a2 a3 function name";
+  ASSERT_TRUE(SymbolParseHelper::ParseFunction(kTestLine1, &address, &size,
+                                               &stack_param_size, &name));
+  EXPECT_EQ(0xa1ULL, address);
+  EXPECT_EQ(0xa2ULL, size);
+  EXPECT_EQ(0xa3, stack_param_size);
+  EXPECT_EQ("function name", string(name));
+
+  char kTestLine2[] = "FUNC 0 0 0 function name";
+  ASSERT_TRUE(SymbolParseHelper::ParseFunction(kTestLine2, &address, &size,
+                                               &stack_param_size, &name));
+  EXPECT_EQ(0ULL, address);
+  EXPECT_EQ(0ULL, size);
+  EXPECT_EQ(0, stack_param_size);
+  EXPECT_EQ("function name", string(name));
+}
+
+// Test parsing of invalid FUNC lines.  The format is:
+// FUNC <address> <size> <stack_param_size> <name>
+TEST(SymbolParseHelper, ParseFunctionInvalid) {
+  uint64_t address;
+  uint64_t size;
+  long stack_param_size;
+  char *name;
+
+  // Test missing function name.
+  char kTestLine[] = "FUNC 1 2 3 ";
+  ASSERT_FALSE(SymbolParseHelper::ParseFunction(kTestLine, &address, &size,
+                                                &stack_param_size, &name));
+  // Test bad address.
+  char kTestLine1[] = "FUNC 1z 2 3 function name";
+  ASSERT_FALSE(SymbolParseHelper::ParseFunction(kTestLine1, &address, &size,
+                                                &stack_param_size, &name));
+  // Test large address.
+  char kTestLine2[] = "FUNC 123123123123123123123123123 2 3 function name";
+  ASSERT_FALSE(SymbolParseHelper::ParseFunction(kTestLine2, &address, &size,
+                                                &stack_param_size, &name));
+  // Test bad size.
+  char kTestLine3[] = "FUNC 1 z2 3 function name";
+  ASSERT_FALSE(SymbolParseHelper::ParseFunction(kTestLine3, &address, &size,
+                                                &stack_param_size, &name));
+  // Test large size.
+  char kTestLine4[] = "FUNC 1 231231231231231231231231232 3 function name";
+  ASSERT_FALSE(SymbolParseHelper::ParseFunction(kTestLine4, &address, &size,
+                                                &stack_param_size, &name));
+  // Test bad param size.
+  char kTestLine5[] = "FUNC 1 2 3z function name";
+  ASSERT_FALSE(SymbolParseHelper::ParseFunction(kTestLine5, &address, &size,
+                                                &stack_param_size, &name));
+  // Test large param size.
+  char kTestLine6[] = "FUNC 1 2 312312312312312312312312323 function name";
+  ASSERT_FALSE(SymbolParseHelper::ParseFunction(kTestLine6, &address, &size,
+                                                &stack_param_size, &name));
+  // Negative param size.
+  char kTestLine7[] = "FUNC 1 2 -5 function name";
+  ASSERT_FALSE(SymbolParseHelper::ParseFunction(kTestLine7, &address, &size,
+                                                &stack_param_size, &name));
+}
+
+// Test parsing of valid lines.  The format is:
+// <address> <size> <line number> <source file id>
+TEST(SymbolParseHelper, ParseLineValid) {
+  uint64_t address;
+  uint64_t size;
+  long line_number;
+  long source_file;
+
+  char kTestLine[] = "1 2 3 4";
+  ASSERT_TRUE(SymbolParseHelper::ParseLine(kTestLine, &address, &size,
+                                           &line_number, &source_file));
+  EXPECT_EQ(1ULL, address);
+  EXPECT_EQ(2ULL, size);
+  EXPECT_EQ(3, line_number);
+  EXPECT_EQ(4, source_file);
+
+  // Test hex size and address.
+  char kTestLine1[] = "a1 a2 3 4  // some comment";
+  ASSERT_TRUE(SymbolParseHelper::ParseLine(kTestLine1, &address, &size,
+                                           &line_number, &source_file));
+  EXPECT_EQ(0xa1ULL, address);
+  EXPECT_EQ(0xa2ULL, size);
+  EXPECT_EQ(3, line_number);
+  EXPECT_EQ(4, source_file);
+
+  // 0 is a valid line number.
+  char kTestLine2[] = "a1 a2 0 4  // some comment";
+  ASSERT_TRUE(SymbolParseHelper::ParseLine(kTestLine2, &address, &size,
+                                           &line_number, &source_file));
+  EXPECT_EQ(0xa1ULL, address);
+  EXPECT_EQ(0xa2ULL, size);
+  EXPECT_EQ(0, line_number);
+  EXPECT_EQ(4, source_file);
+}
+
+// Test parsing of invalid lines.  The format is:
+// <address> <size> <line number> <source file id>
+TEST(SymbolParseHelper, ParseLineInvalid) {
+  uint64_t address;
+  uint64_t size;
+  long line_number;
+  long source_file;
+
+  // Test missing source file id.
+  char kTestLine[] = "1 2 3";
+  ASSERT_FALSE(SymbolParseHelper::ParseLine(kTestLine, &address, &size,
+                                            &line_number, &source_file));
+  // Test bad address.
+  char kTestLine1[] = "1z 2 3 4";
+  ASSERT_FALSE(SymbolParseHelper::ParseLine(kTestLine1, &address, &size,
+                                            &line_number, &source_file));
+  // Test large address.
+  char kTestLine2[] = "123123123123123123123123 2 3 4";
+  ASSERT_FALSE(SymbolParseHelper::ParseLine(kTestLine2, &address, &size,
+                                            &line_number, &source_file));
+  // Test bad size.
+  char kTestLine3[] = "1 z2 3 4";
+  ASSERT_FALSE(SymbolParseHelper::ParseLine(kTestLine3, &address, &size,
+                                            &line_number, &source_file));
+  // Test large size.
+  char kTestLine4[] = "1 123123123123123123123123 3 4";
+  ASSERT_FALSE(SymbolParseHelper::ParseLine(kTestLine4, &address, &size,
+                                            &line_number, &source_file));
+  // Test bad line number.
+  char kTestLine5[] = "1 2 z3 4";
+  ASSERT_FALSE(SymbolParseHelper::ParseLine(kTestLine5, &address, &size,
+                                            &line_number, &source_file));
+  // Test negative line number.
+  char kTestLine6[] = "1 2 -1 4";
+  ASSERT_FALSE(SymbolParseHelper::ParseLine(kTestLine6, &address, &size,
+                                            &line_number, &source_file));
+  // Test large line number.
+  char kTestLine7[] = "1 2 123123123123123123123 4";
+  ASSERT_FALSE(SymbolParseHelper::ParseLine(kTestLine7, &address, &size,
+                                            &line_number, &source_file));
+  // Test bad source file id.
+  char kTestLine8[] = "1 2 3 f";
+  ASSERT_FALSE(SymbolParseHelper::ParseLine(kTestLine8, &address, &size,
+                                            &line_number, &source_file));
+}
+
+// Test parsing of valid PUBLIC lines.  The format is:
+// PUBLIC <address> <stack_param_size> <name>
+TEST(SymbolParseHelper, ParsePublicSymbolValid) {
+  uint64_t address;
+  long stack_param_size;
+  char *name;
+
+  char kTestLine[] = "PUBLIC 1 2 3";
+  ASSERT_TRUE(SymbolParseHelper::ParsePublicSymbol(kTestLine, &address,
+                                                   &stack_param_size, &name));
+  EXPECT_EQ(1ULL, address);
+  EXPECT_EQ(2, stack_param_size);
+  EXPECT_EQ("3", string(name));
+
+  // Test hex size and address.
+  char kTestLine1[] = "PUBLIC a1 a2 function name";
+  ASSERT_TRUE(SymbolParseHelper::ParsePublicSymbol(kTestLine1, &address,
+                                                   &stack_param_size, &name));
+  EXPECT_EQ(0xa1ULL, address);
+  EXPECT_EQ(0xa2, stack_param_size);
+  EXPECT_EQ("function name", string(name));
+
+  // Test 0 is a valid address.
+  char kTestLine2[] = "PUBLIC 0 a2 function name";
+  ASSERT_TRUE(SymbolParseHelper::ParsePublicSymbol(kTestLine2, &address,
+                                                   &stack_param_size, &name));
+  EXPECT_EQ(0ULL, address);
+  EXPECT_EQ(0xa2, stack_param_size);
+  EXPECT_EQ("function name", string(name));
+}
+
+// Test parsing of invalid PUBLIC lines.  The format is:
+// PUBLIC <address> <stack_param_size> <name>
+TEST(SymbolParseHelper, ParsePublicSymbolInvalid) {
+  uint64_t address;
+  long stack_param_size;
+  char *name;
+
+  // Test missing source function name.
+  char kTestLine[] = "PUBLIC 1 2 ";
+  ASSERT_FALSE(SymbolParseHelper::ParsePublicSymbol(kTestLine, &address,
+                                                    &stack_param_size, &name));
+  // Test bad address.
+  char kTestLine1[] = "PUBLIC 1z 2 3";
+  ASSERT_FALSE(SymbolParseHelper::ParsePublicSymbol(kTestLine1, &address,
+                                                    &stack_param_size, &name));
+  // Test large address.
+  char kTestLine2[] = "PUBLIC 123123123123123123123123 2 3";
+  ASSERT_FALSE(SymbolParseHelper::ParsePublicSymbol(kTestLine2, &address,
+                                                    &stack_param_size, &name));
+  // Test bad param stack size.
+  char kTestLine3[] = "PUBLIC 1 z2 3";
+  ASSERT_FALSE(SymbolParseHelper::ParsePublicSymbol(kTestLine3, &address,
+                                                    &stack_param_size, &name));
+  // Test large param stack size.
+  char kTestLine4[] = "PUBLIC 1 123123123123123123123123123 3";
+  ASSERT_FALSE(SymbolParseHelper::ParsePublicSymbol(kTestLine4, &address,
+                                                    &stack_param_size, &name));
+  // Test negative param stack size.
+  char kTestLine5[] = "PUBLIC 1 -5 3";
+  ASSERT_FALSE(SymbolParseHelper::ParsePublicSymbol(kTestLine5, &address,
+                                                    &stack_param_size, &name));
+}
+
+}  // namespace
+
+int main(int argc, char *argv[]) {
+  ::testing::InitGoogleTest(&argc, argv);
+  return RUN_ALL_TESTS();
+}
diff --git a/google-breakpad/src/processor/binarystream.cc b/google-breakpad/src/processor/binarystream.cc
new file mode 100644
index 0000000..bf92225
--- /dev/null
+++ b/google-breakpad/src/processor/binarystream.cc
@@ -0,0 +1,124 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include <arpa/inet.h>
+#include <limits.h>
+
+#include <string>
+#include <vector>
+
+#include "common/using_std_string.h"
+#include "processor/binarystream.h"
+
+namespace google_breakpad {
+using std::vector;
+
+binarystream &binarystream::operator>>(string &str) {
+  uint16_t length;
+  *this >> length;
+  if (eof())
+    return *this;
+  if (length == 0) {
+    str.clear();
+    return *this;
+  }
+  vector<char> buffer(length);
+  stream_.read(&buffer[0], length);
+  if (!eof())
+    str.assign(&buffer[0], length);
+  return *this;
+}
+
+binarystream &binarystream::operator>>(uint8_t &u8) {
+  stream_.read((char *)&u8, 1);
+  return *this;
+}
+
+binarystream &binarystream::operator>>(uint16_t &u16) {
+  uint16_t temp;
+  stream_.read((char *)&temp, 2);
+  if (!eof())
+    u16 = ntohs(temp);
+  return *this;
+}
+
+binarystream &binarystream::operator>>(uint32_t &u32) {
+  uint32_t temp;
+  stream_.read((char *)&temp, 4);
+  if (!eof())
+    u32 = ntohl(temp);
+  return *this;
+}
+
+binarystream &binarystream::operator>>(uint64_t &u64) {
+  uint32_t lower, upper;
+  *this >> lower >> upper;
+  if (!eof())
+    u64 = static_cast<uint64_t>(lower) | (static_cast<uint64_t>(upper) << 32);
+  return *this;
+}
+
+binarystream &binarystream::operator<<(const string &str) {
+  if (str.length() > USHRT_MAX) {
+    // truncate to 16-bit length
+    *this << static_cast<uint16_t>(USHRT_MAX);
+    stream_.write(str.c_str(), USHRT_MAX);
+  } else {
+    *this << (uint16_t)(str.length() & 0xFFFF);
+    stream_.write(str.c_str(), str.length());
+  }
+  return *this;
+}
+
+binarystream &binarystream::operator<<(uint8_t u8) {
+  stream_.write((const char*)&u8, 1);
+  return *this;
+}
+
+binarystream &binarystream::operator<<(uint16_t u16) {
+  u16 = htons(u16);
+  stream_.write((const char*)&u16, 2);
+  return *this;
+}
+
+binarystream &binarystream::operator<<(uint32_t u32) {
+  u32 = htonl(u32);
+  stream_.write((const char*)&u32, 4);
+  return *this;
+}
+
+binarystream &binarystream::operator<<(uint64_t u64) {
+  // write 64-bit ints as two 32-bit ints, so we can byte-swap them easily
+  uint32_t lower = static_cast<uint32_t>(u64 & 0xFFFFFFFF);
+  uint32_t upper = static_cast<uint32_t>(u64 >> 32);
+  *this << lower << upper;
+  return *this;
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/processor/binarystream.h b/google-breakpad/src/processor/binarystream.h
new file mode 100644
index 0000000..172e09b
--- /dev/null
+++ b/google-breakpad/src/processor/binarystream.h
@@ -0,0 +1,92 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// binarystream implements part of the std::iostream interface as a
+// wrapper around std::stringstream to allow reading and writing strings
+// and integers of known size.
+
+#ifndef GOOGLE_BREAKPAD_PROCESSOR_BINARYSTREAM_H_
+#define GOOGLE_BREAKPAD_PROCESSOR_BINARYSTREAM_H_
+
+#include <sstream>
+#include <string>
+
+#include "common/using_std_string.h"
+#include "google_breakpad/common/breakpad_types.h"
+
+namespace google_breakpad {
+using std::ios_base;
+using std::ios;
+
+class binarystream {
+ public:
+  explicit binarystream(ios_base::openmode which = ios_base::out|ios_base::in)
+    : stream_(which) {}
+  explicit binarystream(const string &str,
+                        ios_base::openmode which = ios_base::out|ios_base::in)
+    : stream_(str, which) {}
+  explicit binarystream(const char *str, size_t size,
+                        ios_base::openmode which = ios_base::out|ios_base::in)
+    : stream_(string(str, size), which) {}
+
+  binarystream &operator>>(string &str);
+  binarystream &operator>>(uint8_t &u8);
+  binarystream &operator>>(uint16_t &u16);
+  binarystream &operator>>(uint32_t &u32);
+  binarystream &operator>>(uint64_t &u64);
+
+  // Note: strings are truncated at 65535 characters
+  binarystream &operator<<(const string &str);
+  binarystream &operator<<(uint8_t u8);
+  binarystream &operator<<(uint16_t u16);
+  binarystream &operator<<(uint32_t u32);
+  binarystream &operator<<(uint64_t u64);
+
+  // Forward a few methods directly from the stream object
+  bool eof() const { return stream_.eof(); }
+  void clear() { stream_.clear(); }
+  string str() const { return stream_.str(); }
+  void str(const string &s) { stream_.str(s); }
+    
+  // Seek both read and write pointers to the beginning of the stream.
+  void rewind() {
+    stream_.seekg (0, ios::beg);
+    stream_.seekp (0, ios::beg);
+    // This is to clear all the error flags, since only the EOF flag is cleared
+    // with seekg().
+    stream_.clear();
+  }
+
+ private:
+  std::stringstream stream_;
+};
+
+}  // namespace google_breakpad
+
+#endif  // GOOGLE_BREAKPAD_PROCESSOR_BINARYSTREAM_H_
diff --git a/google-breakpad/src/processor/binarystream_unittest.cc b/google-breakpad/src/processor/binarystream_unittest.cc
new file mode 100644
index 0000000..bf020ed
--- /dev/null
+++ b/google-breakpad/src/processor/binarystream_unittest.cc
@@ -0,0 +1,432 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include <ios>
+#include <string>
+#include <vector>
+
+#include "breakpad_googletest_includes.h"
+#include "common/using_std_string.h"
+#include "processor/binarystream.h"
+
+namespace {
+using std::ios_base;
+using std::vector;
+using google_breakpad::binarystream;
+
+
+class BinaryStreamBasicTest : public ::testing::Test {
+protected:
+  binarystream stream;
+};
+ 
+TEST_F(BinaryStreamBasicTest, ReadU8) {
+  uint8_t u8 = 0;
+  ASSERT_FALSE(stream.eof());
+  stream >> u8;
+  ASSERT_TRUE(stream.eof());
+  EXPECT_EQ(0U, u8);
+  stream.rewind();
+  stream.clear();
+  stream << (uint8_t)1;
+  ASSERT_FALSE(stream.eof());
+  stream >> u8;
+  EXPECT_EQ(1, u8);
+  EXPECT_FALSE(stream.eof());
+}
+
+TEST_F(BinaryStreamBasicTest, ReadU16) {
+  uint16_t u16 = 0;
+  ASSERT_FALSE(stream.eof());
+  stream >> u16;
+  ASSERT_TRUE(stream.eof());
+  EXPECT_EQ(0U, u16);
+  stream.rewind();
+  stream.clear();
+  stream << (uint16_t)1;
+  ASSERT_FALSE(stream.eof());
+  stream >> u16;
+  EXPECT_EQ(1, u16);
+  EXPECT_FALSE(stream.eof());
+}
+
+TEST_F(BinaryStreamBasicTest, ReadU32) {
+  uint32_t u32 = 0;
+  ASSERT_FALSE(stream.eof());
+  stream >> u32;
+  ASSERT_TRUE(stream.eof());
+  EXPECT_EQ(0U, u32);
+  stream.rewind();
+  stream.clear();
+  stream << (uint32_t)1;
+  ASSERT_FALSE(stream.eof());
+  stream >> u32;
+  EXPECT_EQ(1U, u32);
+  EXPECT_FALSE(stream.eof());
+}
+
+TEST_F(BinaryStreamBasicTest, ReadU64) {
+  uint64_t u64 = 0;
+  ASSERT_FALSE(stream.eof());
+  stream >> u64;
+  ASSERT_TRUE(stream.eof());
+  EXPECT_EQ(0U, u64);
+  stream.rewind();
+  stream.clear();
+  stream << (uint64_t)1;
+  ASSERT_FALSE(stream.eof());
+  stream >> u64;
+  EXPECT_EQ(1U, u64);
+  EXPECT_FALSE(stream.eof());
+}
+
+TEST_F(BinaryStreamBasicTest, ReadString) {
+  string s("");
+  ASSERT_FALSE(stream.eof());
+  stream >> s;
+  ASSERT_TRUE(stream.eof());
+  EXPECT_EQ("", s);
+  // write an empty string to the stream, read it back
+  s = "abcd";
+  stream.rewind();
+  stream.clear();
+  stream << string("");
+  stream >> s;
+  EXPECT_EQ("", s);
+  EXPECT_FALSE(stream.eof());
+  stream.rewind();
+  stream.clear();
+  stream << string("test");
+  ASSERT_FALSE(stream.eof());
+  stream >> s;
+  EXPECT_EQ("test", s);
+  EXPECT_FALSE(stream.eof());
+}
+
+TEST_F(BinaryStreamBasicTest, ReadEmptyString) {
+  string s("abc");
+  stream << string("");
+  stream >> s;
+  EXPECT_EQ("", s);
+}
+
+TEST_F(BinaryStreamBasicTest, ReadMultiU8) {
+  const uint8_t ea = 0, eb = 100, ec = 200, ed = 0xFF;
+  uint8_t a, b, c, d, e;
+  stream << ea << eb << ec << ed;
+  stream >> a >> b >> c >> d;
+  ASSERT_FALSE(stream.eof());
+  EXPECT_EQ(ea, a);
+  EXPECT_EQ(eb, b);
+  EXPECT_EQ(ec, c);
+  EXPECT_EQ(ed, d);
+  ASSERT_FALSE(stream.eof());
+  e = 0;
+  stream >> e;
+  EXPECT_EQ(0U, e);
+  ASSERT_TRUE(stream.eof());
+  // try reading all at once, including one past eof
+  stream.rewind();
+  stream.clear();
+  ASSERT_FALSE(stream.eof());
+  a = b = c = d = e = 0;
+  stream << ea << eb << ec << ed;
+  stream >> a >> b >> c >> d >> e;
+  EXPECT_EQ(ea, a);
+  EXPECT_EQ(eb, b);
+  EXPECT_EQ(ec, c);
+  EXPECT_EQ(ed, d);
+  EXPECT_EQ(0U, e);
+  EXPECT_TRUE(stream.eof());
+}
+
+TEST_F(BinaryStreamBasicTest, ReadMultiU16) {
+  const uint16_t ea = 0, eb = 0x100, ec = 0x8000, ed = 0xFFFF;
+  uint16_t a, b, c, d, e;
+  stream << ea << eb << ec << ed;
+  stream >> a >> b >> c >> d;
+  ASSERT_FALSE(stream.eof());
+  EXPECT_EQ(ea, a);
+  EXPECT_EQ(eb, b);
+  EXPECT_EQ(ec, c);
+  EXPECT_EQ(ed, d);
+  ASSERT_FALSE(stream.eof());
+  e = 0;
+  stream >> e;
+  EXPECT_EQ(0U, e);
+  EXPECT_TRUE(stream.eof());
+  // try reading all at once, including one past eof
+  stream.rewind();
+  stream.clear();
+  ASSERT_FALSE(stream.eof());
+  a = b = c = d = e = 0;
+  stream << ea << eb << ec << ed;
+  stream >> a >> b >> c >> d >> e;
+  EXPECT_EQ(ea, a);
+  EXPECT_EQ(eb, b);
+  EXPECT_EQ(ec, c);
+  EXPECT_EQ(ed, d);
+  EXPECT_EQ(0U, e);
+  EXPECT_TRUE(stream.eof());
+}
+
+TEST_F(BinaryStreamBasicTest, ReadMultiU32) {
+  const uint32_t ea = 0, eb = 0x10000, ec = 0x8000000, ed = 0xFFFFFFFF;
+  uint32_t a, b, c, d, e;
+  stream << ea << eb << ec << ed;
+  stream >> a >> b >> c >> d;
+  ASSERT_FALSE(stream.eof());
+  EXPECT_EQ(ea, a);
+  EXPECT_EQ(eb, b);
+  EXPECT_EQ(ec, c);
+  EXPECT_EQ(ed, d);
+  ASSERT_FALSE(stream.eof());
+  e = 0;
+  stream >> e;
+  EXPECT_EQ(0U, e);
+  EXPECT_TRUE(stream.eof());
+  // try reading all at once, including one past eof
+  stream.rewind();
+  stream.clear();
+  ASSERT_FALSE(stream.eof());
+  a = b = c = d = e = 0;
+  stream << ea << eb << ec << ed;
+  stream >> a >> b >> c >> d >> e;
+  EXPECT_EQ(ea, a);
+  EXPECT_EQ(eb, b);
+  EXPECT_EQ(ec, c);
+  EXPECT_EQ(ed, d);
+  EXPECT_EQ(0U, e);
+  EXPECT_TRUE(stream.eof());
+}
+
+TEST_F(BinaryStreamBasicTest, ReadMultiU64) {
+  const uint64_t ea = 0, eb = 0x10000, ec = 0x100000000ULL,
+    ed = 0xFFFFFFFFFFFFFFFFULL;
+  uint64_t a, b, c, d, e;
+  stream << ea << eb << ec << ed;
+  stream >> a >> b >> c >> d;
+  ASSERT_FALSE(stream.eof());
+  EXPECT_EQ(ea, a);
+  EXPECT_EQ(eb, b);
+  EXPECT_EQ(ec, c);
+  EXPECT_EQ(ed, d);
+  ASSERT_FALSE(stream.eof());
+  e = 0;
+  stream >> e;
+  EXPECT_EQ(0U, e);
+  EXPECT_TRUE(stream.eof());
+  // try reading all at once, including one past eof
+  stream.rewind();
+  stream.clear();
+  ASSERT_FALSE(stream.eof());
+  a = b = c = d = e = 0;
+  stream << ea << eb << ec << ed;
+  stream >> a >> b >> c >> d >> e;
+  EXPECT_EQ(ea, a);
+  EXPECT_EQ(eb, b);
+  EXPECT_EQ(ec, c);
+  EXPECT_EQ(ed, d);
+  EXPECT_EQ(0U, e);
+  EXPECT_TRUE(stream.eof());
+}
+
+TEST_F(BinaryStreamBasicTest, ReadMixed) {
+  const uint8_t e8 = 0x10;
+  const uint16_t e16 = 0x2020;
+  const uint32_t e32 = 0x30303030;
+  const uint64_t e64 = 0x4040404040404040ULL;
+  const string es = "test";
+  uint8_t u8 = 0;
+  uint16_t u16 = 0;
+  uint32_t u32 = 0;
+  uint64_t u64 = 0;
+  string s("test");
+  stream << e8 << e16 << e32 << e64 << es;
+  stream >> u8 >> u16 >> u32 >> u64 >> s;
+  EXPECT_FALSE(stream.eof());
+  EXPECT_EQ(e8, u8);
+  EXPECT_EQ(e16, u16);
+  EXPECT_EQ(e32, u32);
+  EXPECT_EQ(e64, u64);
+  EXPECT_EQ(es, s);
+}
+
+TEST_F(BinaryStreamBasicTest, ReadStringMissing) {
+  // ensure that reading a string where only the length is present fails
+  uint16_t u16 = 8;
+  stream << u16;
+  stream.rewind();
+  string s("");
+  stream >> s;
+  EXPECT_EQ("", s);
+  EXPECT_TRUE(stream.eof());
+}
+
+TEST_F(BinaryStreamBasicTest, ReadStringTruncated) {
+  // ensure that reading a string where not all the data is present fails
+  uint16_t u16 = 8;
+  stream << u16;
+  stream << (uint8_t)'t' << (uint8_t)'e' << (uint8_t)'s' << (uint8_t)'t';
+  stream.rewind();
+  string s("");
+  stream >> s;
+  EXPECT_EQ("", s);
+  EXPECT_TRUE(stream.eof());
+}
+
+TEST_F(BinaryStreamBasicTest, StreamByteLength) {
+  // Test that the stream buffer contains the right amount of data
+  stream << (uint8_t)0 << (uint16_t)1 << (uint32_t)2 << (uint64_t)3
+         << string("test");
+  string s = stream.str();
+  EXPECT_EQ(21U, s.length());
+}
+
+TEST_F(BinaryStreamBasicTest, AppendStreamResultsByteLength) {
+  // Test that appending the str() results from two streams
+  // gives the right byte length
+  binarystream stream2;
+  stream << (uint8_t)0 << (uint16_t)1;
+  stream2 << (uint32_t)0 << (uint64_t)2
+          << string("test");
+  string s = stream.str();
+  string s2 = stream2.str();
+  s.append(s2);
+  EXPECT_EQ(21U, s.length());
+}
+
+TEST_F(BinaryStreamBasicTest, StreamSetStr) {
+  const string es("test");
+  stream << es;
+  binarystream stream2;
+  stream2.str(stream.str());
+  string s;
+  stream2 >> s;
+  EXPECT_FALSE(stream2.eof());
+  EXPECT_EQ("test", s);
+  s = "";
+  stream2.str(stream.str());
+  stream2.rewind();
+  stream2 >> s;
+  EXPECT_FALSE(stream2.eof());
+  EXPECT_EQ("test", s);
+}
+
+class BinaryStreamU8Test : public ::testing::Test {
+protected:
+  binarystream stream;
+
+  void SetUp() {
+    stream << (uint8_t)1;
+  }
+};
+
+TEST_F(BinaryStreamU8Test, ReadU16) {
+  uint16_t u16 = 0;
+  ASSERT_FALSE(stream.eof());
+  stream >> u16;
+  ASSERT_TRUE(stream.eof());
+  EXPECT_EQ(0U, u16);
+}
+
+TEST_F(BinaryStreamU8Test, ReadU32) {
+  uint32_t u32 = 0;
+  ASSERT_FALSE(stream.eof());
+  stream >> u32;
+  ASSERT_TRUE(stream.eof());
+  EXPECT_EQ(0U, u32);
+}
+
+TEST_F(BinaryStreamU8Test, ReadU64) {
+  uint64_t u64 = 0;
+  ASSERT_FALSE(stream.eof());
+  stream >> u64;
+  ASSERT_TRUE(stream.eof());
+  EXPECT_EQ(0U, u64);
+}
+
+TEST_F(BinaryStreamU8Test, ReadString) {
+  string s("");
+  ASSERT_FALSE(stream.eof());
+  stream >> s;
+  ASSERT_TRUE(stream.eof());
+  EXPECT_EQ("", s);
+}
+
+
+TEST(BinaryStreamTest, InitWithData) {
+  const char *data = "abcd";
+  binarystream stream(data);
+  uint8_t a, b, c, d;
+  stream >> a >> b >> c >> d;
+  ASSERT_FALSE(stream.eof());
+  EXPECT_EQ('a', a);
+  EXPECT_EQ('b', b);
+  EXPECT_EQ('c', c);
+  EXPECT_EQ('d', d);
+}
+
+TEST(BinaryStreamTest, InitWithDataLeadingNull) {
+  const char *data = "\0abcd";
+  binarystream stream(data, 5);
+  uint8_t z, a, b, c, d;
+  stream >> z >> a >> b >> c >> d;
+  ASSERT_FALSE(stream.eof());
+  EXPECT_EQ(0U, z);
+  EXPECT_EQ('a', a);
+  EXPECT_EQ('b', b);
+  EXPECT_EQ('c', c);
+  EXPECT_EQ('d', d);
+}
+
+TEST(BinaryStreamTest, InitWithDataVector) {
+  vector<char> data;
+  data.push_back('a');
+  data.push_back('b');
+  data.push_back('c');
+  data.push_back('d');
+  data.push_back('e');
+  data.resize(4);
+  binarystream stream(&data[0], data.size());
+  uint8_t a, b, c, d;
+  stream >> a >> b >> c >> d;
+  ASSERT_FALSE(stream.eof());
+  EXPECT_EQ('a', a);
+  EXPECT_EQ('b', b);
+  EXPECT_EQ('c', c);
+  EXPECT_EQ('d', d);
+}
+
+} // namespace
+
+int main(int argc, char *argv[]) {
+  ::testing::InitGoogleTest(&argc, argv);
+  return RUN_ALL_TESTS();
+}
diff --git a/google-breakpad/src/processor/call_stack.cc b/google-breakpad/src/processor/call_stack.cc
new file mode 100644
index 0000000..e327671
--- /dev/null
+++ b/google-breakpad/src/processor/call_stack.cc
@@ -0,0 +1,53 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// call_stack.cc: A call stack comprised of stack frames.
+//
+// See call_stack.h for documentation.
+//
+// Author: Mark Mentovai
+
+#include "google_breakpad/processor/call_stack.h"
+#include "google_breakpad/processor/stack_frame.h"
+
+namespace google_breakpad {
+
+CallStack::~CallStack() {
+  Clear();
+}
+
+void CallStack::Clear() {
+  for (vector<StackFrame *>::const_iterator iterator = frames_.begin();
+       iterator != frames_.end();
+       ++iterator) {
+    delete *iterator;
+  }
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/processor/cfi_frame_info-inl.h b/google-breakpad/src/processor/cfi_frame_info-inl.h
new file mode 100644
index 0000000..7e7af0a
--- /dev/null
+++ b/google-breakpad/src/processor/cfi_frame_info-inl.h
@@ -0,0 +1,119 @@
+// -*- mode: C++ -*-
+
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// cfi_frame_info-inl.h: Definitions for cfi_frame_info.h inlined functions.
+
+#ifndef PROCESSOR_CFI_FRAME_INFO_INL_H_
+#define PROCESSOR_CFI_FRAME_INFO_INL_H_
+
+#include <string.h>
+
+namespace google_breakpad {
+
+template <typename RegisterType, class RawContextType>
+bool SimpleCFIWalker<RegisterType, RawContextType>::FindCallerRegisters(
+    const MemoryRegion &memory,
+    const CFIFrameInfo &cfi_frame_info,
+    const RawContextType &callee_context,
+    int callee_validity,
+    RawContextType *caller_context,
+    int *caller_validity) const {
+  typedef CFIFrameInfo::RegisterValueMap<RegisterType> ValueMap;
+  ValueMap callee_registers;
+  ValueMap caller_registers;
+  // Just for brevity.
+  typename ValueMap::const_iterator caller_none = caller_registers.end();
+
+  // Populate callee_registers with register values from callee_context.
+  for (size_t i = 0; i < map_size_; i++) {
+    const RegisterSet &r = register_map_[i];
+    if (callee_validity & r.validity_flag)
+      callee_registers[r.name] = callee_context.*r.context_member;
+  }
+
+  // Apply the rules, and see what register values they yield.
+  if (!cfi_frame_info.FindCallerRegs<RegisterType>(callee_registers, memory,
+                                                   &caller_registers))
+    return false;
+
+  // Populate *caller_context with the values the rules placed in
+  // caller_registers.
+  memset(caller_context, 0xda, sizeof(*caller_context));
+  *caller_validity = 0;
+  for (size_t i = 0; i < map_size_; i++) {
+    const RegisterSet &r = register_map_[i];
+    typename ValueMap::const_iterator caller_entry;
+
+    // Did the rules provide a value for this register by its name?
+    caller_entry = caller_registers.find(r.name);
+    if (caller_entry != caller_none) {
+      caller_context->*r.context_member = caller_entry->second;
+      *caller_validity |= r.validity_flag;
+      continue;
+    }
+
+    // Did the rules provide a value for this register under its
+    // alternate name?
+    if (r.alternate_name) {
+      caller_entry = caller_registers.find(r.alternate_name);
+      if (caller_entry != caller_none) {
+        caller_context->*r.context_member = caller_entry->second;
+        *caller_validity |= r.validity_flag;
+        continue;
+      }
+    }
+
+    // Is this a callee-saves register? The walker assumes that these
+    // still hold the caller's value if the CFI doesn't mention them.
+    //
+    // Note that other frame walkers may fail to recover callee-saves
+    // registers; for example, the x86 "traditional" strategy only
+    // recovers %eip, %esp, and %ebp, even though %ebx, %esi, and %edi
+    // are callee-saves, too. It is not correct to blindly set the
+    // valid bit for all callee-saves registers, without first
+    // checking its validity bit in the callee.
+    if (r.callee_saves && (callee_validity & r.validity_flag) != 0) {
+      caller_context->*r.context_member = callee_context.*r.context_member;
+      *caller_validity |= r.validity_flag;
+      continue;
+    }
+
+    // Otherwise, the register's value is unknown.
+  }
+
+  return true;
+}
+
+} // namespace google_breakpad
+
+#endif // PROCESSOR_CFI_FRAME_INFO_INL_H_
diff --git a/google-breakpad/src/processor/cfi_frame_info.cc b/google-breakpad/src/processor/cfi_frame_info.cc
new file mode 100644
index 0000000..5106ba0
--- /dev/null
+++ b/google-breakpad/src/processor/cfi_frame_info.cc
@@ -0,0 +1,186 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// cfi_frame_info.cc: Implementation of CFIFrameInfo class.
+// See cfi_frame_info.h for details.
+
+#include "processor/cfi_frame_info.h"
+
+#include <string.h>
+
+#include <sstream>
+
+#include "common/scoped_ptr.h"
+#include "processor/postfix_evaluator-inl.h"
+
+namespace google_breakpad {
+
+#ifdef _WIN32
+#define strtok_r strtok_s
+#endif
+
+template<typename V>
+bool CFIFrameInfo::FindCallerRegs(const RegisterValueMap<V> &registers,
+                                  const MemoryRegion &memory,
+                                  RegisterValueMap<V> *caller_registers) const {
+  // If there are not rules for both .ra and .cfa in effect at this address,
+  // don't use this CFI data for stack walking.
+  if (cfa_rule_.empty() || ra_rule_.empty())
+    return false;
+
+  RegisterValueMap<V> working;
+  PostfixEvaluator<V> evaluator(&working, &memory);
+
+  caller_registers->clear();
+
+  // First, compute the CFA.
+  V cfa;
+  working = registers;
+  if (!evaluator.EvaluateForValue(cfa_rule_, &cfa))
+    return false;
+
+  // Then, compute the return address.
+  V ra;
+  working = registers;
+  working[".cfa"] = cfa;
+  if (!evaluator.EvaluateForValue(ra_rule_, &ra))
+    return false;
+
+  // Now, compute values for all the registers register_rules_ mentions.
+  for (RuleMap::const_iterator it = register_rules_.begin();
+       it != register_rules_.end(); it++) {
+    V value;
+    working = registers;
+    working[".cfa"] = cfa;
+    if (!evaluator.EvaluateForValue(it->second, &value))
+      return false;
+    (*caller_registers)[it->first] = value;
+  }
+
+  (*caller_registers)[".ra"] = ra;
+  (*caller_registers)[".cfa"] = cfa;
+
+  return true;
+}
+
+// Explicit instantiations for 32-bit and 64-bit architectures.
+template bool CFIFrameInfo::FindCallerRegs<uint32_t>(
+    const RegisterValueMap<uint32_t> &registers,
+    const MemoryRegion &memory,
+    RegisterValueMap<uint32_t> *caller_registers) const;
+template bool CFIFrameInfo::FindCallerRegs<uint64_t>(
+    const RegisterValueMap<uint64_t> &registers,
+    const MemoryRegion &memory,
+    RegisterValueMap<uint64_t> *caller_registers) const;
+
+string CFIFrameInfo::Serialize() const {
+  std::ostringstream stream;
+
+  if (!cfa_rule_.empty()) {
+    stream << ".cfa: " << cfa_rule_;
+  }
+  if (!ra_rule_.empty()) {
+    if (static_cast<std::streamoff>(stream.tellp()) != 0)
+      stream << " ";
+    stream << ".ra: " << ra_rule_;
+  }
+  for (RuleMap::const_iterator iter = register_rules_.begin();
+       iter != register_rules_.end();
+       ++iter) {
+    if (static_cast<std::streamoff>(stream.tellp()) != 0)
+      stream << " ";
+    stream << iter->first << ": " << iter->second;
+  }
+
+  return stream.str();
+}
+
+bool CFIRuleParser::Parse(const string &rule_set) {
+  size_t rule_set_len = rule_set.size();
+  scoped_array<char> working_copy(new char[rule_set_len + 1]);
+  memcpy(working_copy.get(), rule_set.data(), rule_set_len);
+  working_copy[rule_set_len] = '\0';
+
+  name_.clear();
+  expression_.clear();
+
+  char *cursor;
+  static const char token_breaks[] = " \t\r\n";
+  char *token = strtok_r(working_copy.get(), token_breaks, &cursor);
+
+  for (;;) {
+    // End of rule set?
+    if (!token) return Report();
+
+    // Register/pseudoregister name?
+    size_t token_len = strlen(token);
+    if (token_len >= 1 && token[token_len - 1] == ':') {
+      // Names can't be empty.
+      if (token_len < 2) return false;
+      // If there is any pending content, report it.
+      if (!name_.empty() || !expression_.empty()) {
+        if (!Report()) return false;
+      }
+      name_.assign(token, token_len - 1);
+      expression_.clear();
+    } else {
+      // Another expression component.
+      assert(token_len > 0); // strtok_r guarantees this, I think.
+      if (!expression_.empty())
+        expression_ += ' ';
+      expression_ += token;
+    }
+    token = strtok_r(NULL, token_breaks, &cursor);
+  }
+}
+
+bool CFIRuleParser::Report() {
+  if (name_.empty() || expression_.empty()) return false;
+  if (name_ == ".cfa") handler_->CFARule(expression_);
+  else if (name_ == ".ra") handler_->RARule(expression_);
+  else handler_->RegisterRule(name_, expression_);
+  return true;
+}
+
+void CFIFrameInfoParseHandler::CFARule(const string &expression) {
+  frame_info_->SetCFARule(expression);
+}
+
+void CFIFrameInfoParseHandler::RARule(const string &expression) {
+  frame_info_->SetRARule(expression);
+}
+
+void CFIFrameInfoParseHandler::RegisterRule(const string &name,
+                                            const string &expression) {
+  frame_info_->SetRegisterRule(name, expression);
+}
+
+} // namespace google_breakpad
diff --git a/google-breakpad/src/processor/cfi_frame_info.h b/google-breakpad/src/processor/cfi_frame_info.h
new file mode 100644
index 0000000..bba2978
--- /dev/null
+++ b/google-breakpad/src/processor/cfi_frame_info.h
@@ -0,0 +1,275 @@
+// -*- mode: C++ -*-
+
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// cfi_frame_info.h: Define the CFIFrameInfo class, which holds the
+// set of 'STACK CFI'-derived register recovery rules that apply at a
+// given instruction.
+
+#ifndef PROCESSOR_CFI_FRAME_INFO_H_
+#define PROCESSOR_CFI_FRAME_INFO_H_
+
+#include <map>
+#include <string>
+
+#include "common/using_std_string.h"
+#include "google_breakpad/common/breakpad_types.h"
+
+namespace google_breakpad {
+
+using std::map;
+
+class MemoryRegion;
+
+// A set of rules for recovering the calling frame's registers'
+// values, when the PC is at a given address in the current frame's
+// function. See the description of 'STACK CFI' records at:
+//
+// http://code.google.com/p/google-breakpad/wiki/SymbolFiles
+//
+// To prepare an instance of CFIFrameInfo for use at a given
+// instruction, first populate it with the rules from the 'STACK CFI
+// INIT' record that covers that instruction, and then apply the
+// changes given by the 'STACK CFI' records up to our instruction's
+// address. Then, use the FindCallerRegs member function to apply the
+// rules to the callee frame's register values, yielding the caller
+// frame's register values.
+class CFIFrameInfo {
+ public:
+  // A map from register names onto values.
+  template<typename ValueType> class RegisterValueMap: 
+    public map<string, ValueType> { };
+
+  // Set the expression for computing a call frame address, return
+  // address, or register's value. At least the CFA rule and the RA
+  // rule must be set before calling FindCallerRegs.
+  void SetCFARule(const string &expression) { cfa_rule_ = expression; }
+  void SetRARule(const string &expression)  { ra_rule_ = expression; }
+  void SetRegisterRule(const string &register_name, const string &expression) {
+    register_rules_[register_name] = expression;
+  }
+
+  // Compute the values of the calling frame's registers, according to
+  // this rule set. Use ValueType in expression evaluation; this
+  // should be uint32_t on machines with 32-bit addresses, or
+  // uint64_t on machines with 64-bit addresses.
+  //
+  // Return true on success, false otherwise.
+  //
+  // MEMORY provides access to the contents of the stack. REGISTERS is
+  // a dictionary mapping the names of registers whose values are
+  // known in the current frame to their values. CALLER_REGISTERS is
+  // populated with the values of the recoverable registers in the
+  // frame that called the current frame.
+  //
+  // In addition, CALLER_REGISTERS[".ra"] will be the return address,
+  // and CALLER_REGISTERS[".cfa"] will be the call frame address.
+  // These may be helpful in computing the caller's PC and stack
+  // pointer, if their values are not explicitly specified.
+  template<typename ValueType>
+  bool FindCallerRegs(const RegisterValueMap<ValueType> &registers,
+                      const MemoryRegion &memory,
+                      RegisterValueMap<ValueType> *caller_registers) const;
+
+  // Serialize the rules in this object into a string in the format
+  // of STACK CFI records.
+  string Serialize() const;
+
+ private:
+
+  // A map from register names onto evaluation rules. 
+  typedef map<string, string> RuleMap;
+
+  // In this type, a "postfix expression" is an expression of the sort
+  // interpreted by google_breakpad::PostfixEvaluator.
+
+  // A postfix expression for computing the current frame's CFA (call
+  // frame address). The CFA is a reference address for the frame that
+  // remains unchanged throughout the frame's lifetime. You should
+  // evaluate this expression with a dictionary initially populated
+  // with the values of the current frame's known registers.
+  string cfa_rule_;
+
+  // The following expressions should be evaluated with a dictionary
+  // initially populated with the values of the current frame's known
+  // registers, and with ".cfa" set to the result of evaluating the
+  // cfa_rule expression, above.
+
+  // A postfix expression for computing the current frame's return
+  // address. 
+  string ra_rule_;
+
+  // For a register named REG, rules[REG] is a postfix expression
+  // which leaves the value of REG in the calling frame on the top of
+  // the stack. You should evaluate this expression
+  RuleMap register_rules_;
+};
+
+// A parser for STACK CFI-style rule sets.
+// This may seem bureaucratic: there's no legitimate run-time reason
+// to use a parser/handler pattern for this, as it's not a likely
+// reuse boundary. But doing so makes finer-grained unit testing
+// possible.
+class CFIRuleParser {
+ public:
+
+  class Handler {
+   public:
+    Handler() { }
+    virtual ~Handler() { }
+
+    // The input specifies EXPRESSION as the CFA/RA computation rule.
+    virtual void CFARule(const string &expression) = 0;
+    virtual void RARule(const string &expression) = 0;
+
+    // The input specifies EXPRESSION as the recovery rule for register NAME.
+    virtual void RegisterRule(const string &name, const string &expression) = 0;
+  };
+    
+  // Construct a parser which feeds its results to HANDLER.
+  CFIRuleParser(Handler *handler) : handler_(handler) { }
+
+  // Parse RULE_SET as a set of CFA computation and RA/register
+  // recovery rules, as appearing in STACK CFI records. Report the
+  // results of parsing by making the appropriate calls to handler_.
+  // Return true if parsing was successful, false otherwise.
+  bool Parse(const string &rule_set);
+
+ private:
+  // Report any accumulated rule to handler_
+  bool Report();
+
+  // The handler to which the parser reports its findings.
+  Handler *handler_;
+
+  // Working data.
+  string name_, expression_;
+};
+
+// A handler for rule set parsing that populates a CFIFrameInfo with
+// the results.
+class CFIFrameInfoParseHandler: public CFIRuleParser::Handler {
+ public:
+  // Populate FRAME_INFO with the results of parsing.
+  CFIFrameInfoParseHandler(CFIFrameInfo *frame_info)
+      : frame_info_(frame_info) { }
+
+  void CFARule(const string &expression);
+  void RARule(const string &expression);
+  void RegisterRule(const string &name, const string &expression);
+
+ private:
+  CFIFrameInfo *frame_info_;
+};
+
+// A utility class template for simple 'STACK CFI'-driven stack walkers.
+// Given a CFIFrameInfo instance, a table describing the architecture's
+// register set, and a context holding the last frame's registers, an
+// instance of this class can populate a new context with the caller's
+// registers.
+//
+// This class template doesn't use any internal knowledge of CFIFrameInfo
+// or the other stack walking structures; it just uses the public interface
+// of CFIFrameInfo to do the usual things. But the logic it handles should
+// be common to many different architectures' stack walkers, so wrapping it
+// up in a class should allow the walkers to share code.
+//
+// RegisterType should be the type of this architecture's registers, either
+// uint32_t or uint64_t. RawContextType should be the raw context
+// structure type for this architecture.
+template <typename RegisterType, class RawContextType>
+class SimpleCFIWalker {
+ public:
+  // A structure describing one architecture register.
+  struct RegisterSet {
+    // The register name, as it appears in STACK CFI rules.
+    const char *name;
+
+    // An alternate name that the register's value might be found
+    // under in a register value dictionary, or NULL. When generating
+    // names, prefer NAME to this value. It's common to list ".cfa" as
+    // an alternative name for the stack pointer, and ".ra" as an
+    // alternative name for the instruction pointer.
+    const char *alternate_name;
+
+    // True if the callee is expected to preserve the value of this
+    // register. If this flag is true for some register R, and the STACK
+    // CFI records provide no rule to recover R, then SimpleCFIWalker
+    // assumes that the callee has not changed R's value, and the caller's
+    // value for R is that currently in the callee's context.
+    bool callee_saves;
+
+    // The ContextValidity flag representing the register's presence.
+    int validity_flag;
+
+    // A pointer to the RawContextType member that holds the
+    // register's value.
+    RegisterType RawContextType::*context_member;
+  };
+
+  // Create a simple CFI-based frame walker, given a description of the
+  // architecture's register set. REGISTER_MAP is an array of
+  // RegisterSet structures; MAP_SIZE is the number of elements in the
+  // array.
+  SimpleCFIWalker(const RegisterSet *register_map, size_t map_size)
+      : register_map_(register_map), map_size_(map_size) { }
+
+  // Compute the calling frame's raw context given the callee's raw
+  // context.
+  //
+  // Given:
+  //
+  // - MEMORY, holding the stack's contents,
+  // - CFI_FRAME_INFO, describing the called function,
+  // - CALLEE_CONTEXT, holding the called frame's registers, and
+  // - CALLEE_VALIDITY, indicating which registers in CALLEE_CONTEXT are valid,
+  //
+  // fill in CALLER_CONTEXT with the caller's register values, and set
+  // CALLER_VALIDITY to indicate which registers are valid in
+  // CALLER_CONTEXT. Return true on success, or false on failure.
+  bool FindCallerRegisters(const MemoryRegion &memory,
+                           const CFIFrameInfo &cfi_frame_info,
+                           const RawContextType &callee_context,
+                           int callee_validity,
+                           RawContextType *caller_context,
+                           int *caller_validity) const;
+
+ private:
+  const RegisterSet *register_map_;
+  size_t map_size_;
+};
+
+}  // namespace google_breakpad
+
+#include "cfi_frame_info-inl.h"
+
+#endif  // PROCESSOR_CFI_FRAME_INFO_H_
diff --git a/google-breakpad/src/processor/cfi_frame_info_unittest.cc b/google-breakpad/src/processor/cfi_frame_info_unittest.cc
new file mode 100644
index 0000000..542b284
--- /dev/null
+++ b/google-breakpad/src/processor/cfi_frame_info_unittest.cc
@@ -0,0 +1,546 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// cfi_frame_info_unittest.cc: Unit tests for CFIFrameInfo,
+// CFIRuleParser, CFIFrameInfoParseHandler, and SimpleCFIWalker.
+
+#include <string.h>
+
+#include "breakpad_googletest_includes.h"
+#include "common/using_std_string.h"
+#include "processor/cfi_frame_info.h"
+#include "google_breakpad/processor/memory_region.h"
+
+using google_breakpad::CFIFrameInfo;
+using google_breakpad::CFIFrameInfoParseHandler;
+using google_breakpad::CFIRuleParser;
+using google_breakpad::MemoryRegion;
+using google_breakpad::SimpleCFIWalker;
+using testing::_;
+using testing::A;
+using testing::AtMost;
+using testing::DoAll;
+using testing::Return;
+using testing::SetArgumentPointee;
+using testing::Test;
+
+class MockMemoryRegion: public MemoryRegion {
+ public:
+  MOCK_CONST_METHOD0(GetBase, uint64_t());
+  MOCK_CONST_METHOD0(GetSize, uint32_t());
+  MOCK_CONST_METHOD2(GetMemoryAtAddress, bool(uint64_t, uint8_t *));
+  MOCK_CONST_METHOD2(GetMemoryAtAddress, bool(uint64_t, uint16_t *));
+  MOCK_CONST_METHOD2(GetMemoryAtAddress, bool(uint64_t, uint32_t *));
+  MOCK_CONST_METHOD2(GetMemoryAtAddress, bool(uint64_t, uint64_t *));
+  MOCK_CONST_METHOD0(Print, void());
+};
+
+// Handy definitions for all tests.
+struct CFIFixture {
+
+  // Set up the mock memory object to expect no references.
+  void ExpectNoMemoryReferences() {
+    EXPECT_CALL(memory, GetBase()).Times(0);
+    EXPECT_CALL(memory, GetSize()).Times(0);
+    EXPECT_CALL(memory, GetMemoryAtAddress(_, A<uint8_t *>())).Times(0);
+    EXPECT_CALL(memory, GetMemoryAtAddress(_, A<uint16_t *>())).Times(0);
+    EXPECT_CALL(memory, GetMemoryAtAddress(_, A<uint32_t *>())).Times(0);
+    EXPECT_CALL(memory, GetMemoryAtAddress(_, A<uint64_t *>())).Times(0);
+  }
+
+  CFIFrameInfo cfi;
+  MockMemoryRegion memory;
+  CFIFrameInfo::RegisterValueMap<uint64_t> registers, caller_registers;
+};
+
+class Simple: public CFIFixture, public Test { };
+
+// FindCallerRegs should fail if no .cfa rule is provided.
+TEST_F(Simple, NoCFA) {
+  ExpectNoMemoryReferences();
+
+  cfi.SetRARule("0");
+  ASSERT_FALSE(cfi.FindCallerRegs<uint64_t>(registers, memory,
+                                             &caller_registers));
+  ASSERT_EQ(".ra: 0", cfi.Serialize());
+}
+
+// FindCallerRegs should fail if no .ra rule is provided.
+TEST_F(Simple, NoRA) {
+  ExpectNoMemoryReferences();
+
+  cfi.SetCFARule("0");
+  ASSERT_FALSE(cfi.FindCallerRegs<uint64_t>(registers, memory,
+                                             &caller_registers));
+  ASSERT_EQ(".cfa: 0", cfi.Serialize());
+}
+
+TEST_F(Simple, SetCFAAndRARule) {
+  ExpectNoMemoryReferences();
+
+  cfi.SetCFARule("330903416631436410");
+  cfi.SetRARule("5870666104170902211");
+  ASSERT_TRUE(cfi.FindCallerRegs<uint64_t>(registers, memory,
+                                            &caller_registers));
+  ASSERT_EQ(2U, caller_registers.size());
+  ASSERT_EQ(330903416631436410ULL, caller_registers[".cfa"]);
+  ASSERT_EQ(5870666104170902211ULL, caller_registers[".ra"]);
+
+  ASSERT_EQ(".cfa: 330903416631436410 .ra: 5870666104170902211",
+            cfi.Serialize());
+}
+
+TEST_F(Simple, SetManyRules) {
+  ExpectNoMemoryReferences();
+
+  cfi.SetCFARule("$temp1 68737028 = $temp2 61072337 = $temp1 $temp2 -");
+  cfi.SetRARule(".cfa 99804755 +");
+  cfi.SetRegisterRule("register1", ".cfa 54370437 *");
+  cfi.SetRegisterRule("vodkathumbscrewingly", "24076308 .cfa +");
+  cfi.SetRegisterRule("pubvexingfjordschmaltzy", ".cfa 29801007 -");
+  cfi.SetRegisterRule("uncopyrightables", "92642917 .cfa /");
+  ASSERT_TRUE(cfi.FindCallerRegs<uint64_t>(registers, memory,
+                                            &caller_registers));
+  ASSERT_EQ(6U, caller_registers.size());
+  ASSERT_EQ(7664691U,           caller_registers[".cfa"]);
+  ASSERT_EQ(107469446U,         caller_registers[".ra"]);
+  ASSERT_EQ(416732599139967ULL, caller_registers["register1"]);
+  ASSERT_EQ(31740999U,          caller_registers["vodkathumbscrewingly"]);
+  ASSERT_EQ(-22136316ULL,       caller_registers["pubvexingfjordschmaltzy"]);
+  ASSERT_EQ(12U,                caller_registers["uncopyrightables"]);
+  ASSERT_EQ(".cfa: $temp1 68737028 = $temp2 61072337 = $temp1 $temp2 - "
+            ".ra: .cfa 99804755 + "
+            "pubvexingfjordschmaltzy: .cfa 29801007 - "
+            "register1: .cfa 54370437 * "
+            "uncopyrightables: 92642917 .cfa / "
+            "vodkathumbscrewingly: 24076308 .cfa +",
+            cfi.Serialize());
+}
+
+TEST_F(Simple, RulesOverride) {
+  ExpectNoMemoryReferences();
+
+  cfi.SetCFARule("330903416631436410");
+  cfi.SetRARule("5870666104170902211");
+  cfi.SetCFARule("2828089117179001");
+  ASSERT_TRUE(cfi.FindCallerRegs<uint64_t>(registers, memory,
+                                            &caller_registers));
+  ASSERT_EQ(2U, caller_registers.size());
+  ASSERT_EQ(2828089117179001ULL, caller_registers[".cfa"]);
+  ASSERT_EQ(5870666104170902211ULL, caller_registers[".ra"]);
+  ASSERT_EQ(".cfa: 2828089117179001 .ra: 5870666104170902211",
+            cfi.Serialize());
+}
+
+class Scope: public CFIFixture, public Test { };
+
+// There should be no value for .cfa in scope when evaluating the CFA rule.
+TEST_F(Scope, CFALacksCFA) {
+  ExpectNoMemoryReferences();
+
+  cfi.SetCFARule(".cfa");
+  cfi.SetRARule("0");
+  ASSERT_FALSE(cfi.FindCallerRegs<uint64_t>(registers, memory,
+                                             &caller_registers));
+}
+
+// There should be no value for .ra in scope when evaluating the CFA rule.
+TEST_F(Scope, CFALacksRA) {
+  ExpectNoMemoryReferences();
+
+  cfi.SetCFARule(".ra");
+  cfi.SetRARule("0");
+  ASSERT_FALSE(cfi.FindCallerRegs<uint64_t>(registers, memory,
+                                             &caller_registers));
+}
+
+// The current frame's registers should be in scope when evaluating
+// the CFA rule.
+TEST_F(Scope, CFASeesCurrentRegs) {
+  ExpectNoMemoryReferences();
+
+  registers[".baraminology"] = 0x06a7bc63e4f13893ULL;
+  registers[".ornithorhynchus"] = 0x5e0bf850bafce9d2ULL;
+  cfi.SetCFARule(".baraminology .ornithorhynchus +");
+  cfi.SetRARule("0");
+  ASSERT_TRUE(cfi.FindCallerRegs<uint64_t>(registers, memory,
+                                            &caller_registers));
+  ASSERT_EQ(2U, caller_registers.size());
+  ASSERT_EQ(0x06a7bc63e4f13893ULL + 0x5e0bf850bafce9d2ULL,
+            caller_registers[".cfa"]);
+}
+
+// .cfa should be in scope in the return address expression.
+TEST_F(Scope, RASeesCFA) {
+  ExpectNoMemoryReferences();
+
+  cfi.SetCFARule("48364076");
+  cfi.SetRARule(".cfa");
+  ASSERT_TRUE(cfi.FindCallerRegs<uint64_t>(registers, memory,
+                                            &caller_registers));
+  ASSERT_EQ(2U, caller_registers.size());
+  ASSERT_EQ(48364076U, caller_registers[".ra"]);
+}
+
+// There should be no value for .ra in scope when evaluating the CFA rule.
+TEST_F(Scope, RALacksRA) {
+  ExpectNoMemoryReferences();
+
+  cfi.SetCFARule("0");
+  cfi.SetRARule(".ra");
+  ASSERT_FALSE(cfi.FindCallerRegs<uint64_t>(registers, memory,
+                                             &caller_registers));
+}
+
+// The current frame's registers should be in scope in the return
+// address expression.
+TEST_F(Scope, RASeesCurrentRegs) {
+  ExpectNoMemoryReferences();
+
+  registers["noachian"] = 0x54dc4a5d8e5eb503ULL;
+  cfi.SetCFARule("10359370");
+  cfi.SetRARule("noachian");
+  ASSERT_TRUE(cfi.FindCallerRegs<uint64_t>(registers, memory,
+                                            &caller_registers));
+  ASSERT_EQ(2U, caller_registers.size());
+  ASSERT_EQ(0x54dc4a5d8e5eb503ULL, caller_registers[".ra"]);
+}
+
+// .cfa should be in scope for register rules.
+TEST_F(Scope, RegistersSeeCFA) {
+  ExpectNoMemoryReferences();
+
+  cfi.SetCFARule("6515179");
+  cfi.SetRARule(".cfa");
+  cfi.SetRegisterRule("rogerian", ".cfa");
+  ASSERT_TRUE(cfi.FindCallerRegs<uint64_t>(registers, memory,
+                                            &caller_registers));
+  ASSERT_EQ(3U, caller_registers.size());
+  ASSERT_EQ(6515179U, caller_registers["rogerian"]);
+}
+
+// The return address should not be in scope for register rules.
+TEST_F(Scope, RegsLackRA) {
+  ExpectNoMemoryReferences();
+
+  cfi.SetCFARule("42740329");
+  cfi.SetRARule("27045204");
+  cfi.SetRegisterRule("$r1", ".ra");
+  ASSERT_FALSE(cfi.FindCallerRegs<uint64_t>(registers, memory,
+                                             &caller_registers));
+}
+
+// Register rules can see the current frame's register values.
+TEST_F(Scope, RegsSeeRegs) {
+  ExpectNoMemoryReferences();
+
+  registers["$r1"] = 0x6ed3582c4bedb9adULL;
+  registers["$r2"] = 0xd27d9e742b8df6d0ULL;
+  cfi.SetCFARule("88239303");
+  cfi.SetRARule("30503835");
+  cfi.SetRegisterRule("$r1", "$r1 42175211 = $r2");
+  cfi.SetRegisterRule("$r2", "$r2 21357221 = $r1");
+  ASSERT_TRUE(cfi.FindCallerRegs<uint64_t>(registers, memory,
+                                            &caller_registers));
+  ASSERT_EQ(4U, caller_registers.size());
+  ASSERT_EQ(0xd27d9e742b8df6d0ULL, caller_registers["$r1"]);
+  ASSERT_EQ(0x6ed3582c4bedb9adULL, caller_registers["$r2"]);
+}
+
+// Each rule's temporaries are separate.
+TEST_F(Scope, SeparateTempsRA) {
+  ExpectNoMemoryReferences();
+
+  cfi.SetCFARule("$temp1 76569129 = $temp1");
+  cfi.SetRARule("0");
+  ASSERT_TRUE(cfi.FindCallerRegs<uint64_t>(registers, memory,
+                                            &caller_registers));
+
+  cfi.SetCFARule("$temp1 76569129 = $temp1");
+  cfi.SetRARule("$temp1");
+  ASSERT_FALSE(cfi.FindCallerRegs<uint64_t>(registers, memory,
+                                             &caller_registers));
+}
+
+class MockCFIRuleParserHandler: public CFIRuleParser::Handler {
+ public:
+  MOCK_METHOD1(CFARule, void(const string &));
+  MOCK_METHOD1(RARule,  void(const string &));
+  MOCK_METHOD2(RegisterRule, void(const string &, const string &));
+};
+
+// A fixture class for testing CFIRuleParser.
+class CFIParserFixture {
+ public:
+  CFIParserFixture() : parser(&mock_handler) {
+    // Expect no parsing results to be reported to mock_handler. Individual
+    // tests can override this.
+    EXPECT_CALL(mock_handler, CFARule(_)).Times(0);
+    EXPECT_CALL(mock_handler, RARule(_)).Times(0);
+    EXPECT_CALL(mock_handler, RegisterRule(_, _)).Times(0);
+  }
+
+  MockCFIRuleParserHandler mock_handler;
+  CFIRuleParser parser;
+};
+
+class Parser: public CFIParserFixture, public Test { };
+
+TEST_F(Parser, Empty) {
+  EXPECT_FALSE(parser.Parse(""));
+}
+
+TEST_F(Parser, LoneColon) {
+  EXPECT_FALSE(parser.Parse(":"));
+}
+
+TEST_F(Parser, CFANoExpr) {
+  EXPECT_FALSE(parser.Parse(".cfa:"));
+}
+
+TEST_F(Parser, CFANoColonNoExpr) {
+  EXPECT_FALSE(parser.Parse(".cfa"));
+}
+
+TEST_F(Parser, RANoExpr) {
+  EXPECT_FALSE(parser.Parse(".ra:"));
+}
+
+TEST_F(Parser, RANoColonNoExpr) {
+  EXPECT_FALSE(parser.Parse(".ra"));
+}
+
+TEST_F(Parser, RegNoExpr) {
+  EXPECT_FALSE(parser.Parse("reg:"));
+}
+
+TEST_F(Parser, NoName) {
+  EXPECT_FALSE(parser.Parse("expr"));
+}
+
+TEST_F(Parser, NoNameTwo) {
+  EXPECT_FALSE(parser.Parse("expr1 expr2"));
+}
+
+TEST_F(Parser, StartsWithExpr) {
+  EXPECT_FALSE(parser.Parse("expr1 reg: expr2"));
+}
+
+TEST_F(Parser, CFA) {
+  EXPECT_CALL(mock_handler, CFARule("spleen")).WillOnce(Return());
+  EXPECT_TRUE(parser.Parse(".cfa: spleen"));
+}
+
+TEST_F(Parser, RA) {
+  EXPECT_CALL(mock_handler, RARule("notoriety")).WillOnce(Return());
+  EXPECT_TRUE(parser.Parse(".ra: notoriety"));
+}
+
+TEST_F(Parser, Reg) {
+  EXPECT_CALL(mock_handler, RegisterRule("nemo", "mellifluous"))
+      .WillOnce(Return());
+  EXPECT_TRUE(parser.Parse("nemo: mellifluous"));
+}
+
+TEST_F(Parser, CFARARegs) {
+  EXPECT_CALL(mock_handler, CFARule("cfa expression")).WillOnce(Return());
+  EXPECT_CALL(mock_handler, RARule("ra expression")).WillOnce(Return());
+  EXPECT_CALL(mock_handler, RegisterRule("galba", "praetorian"))
+      .WillOnce(Return());
+  EXPECT_CALL(mock_handler, RegisterRule("otho", "vitellius"))
+      .WillOnce(Return());
+  EXPECT_TRUE(parser.Parse(".cfa: cfa expression .ra: ra expression "
+                    "galba: praetorian otho: vitellius"));
+}
+
+TEST_F(Parser, Whitespace) {
+  EXPECT_CALL(mock_handler, RegisterRule("r1", "r1 expression"))
+      .WillOnce(Return());
+  EXPECT_CALL(mock_handler, RegisterRule("r2", "r2 expression"))
+      .WillOnce(Return());
+  EXPECT_TRUE(parser.Parse(" r1:\tr1\nexpression \tr2:\t\rr2\r\n "
+                           "expression  \n"));
+}
+
+TEST_F(Parser, WhitespaceLoneColon) {
+  EXPECT_FALSE(parser.Parse("  \n:\t  "));
+}
+
+TEST_F(Parser, EmptyName) {
+  EXPECT_CALL(mock_handler, RegisterRule("reg", _))
+      .Times(AtMost(1))
+      .WillRepeatedly(Return());
+  EXPECT_FALSE(parser.Parse("reg: expr1 : expr2"));
+}
+
+TEST_F(Parser, RuleLoneColon) {
+  EXPECT_CALL(mock_handler, RegisterRule("r1", "expr"))
+      .Times(AtMost(1))
+      .WillRepeatedly(Return());
+  EXPECT_FALSE(parser.Parse(" r1:   expr   :"));
+}
+
+TEST_F(Parser, RegNoExprRule) {
+  EXPECT_CALL(mock_handler, RegisterRule("r1", "expr"))
+      .Times(AtMost(1))
+      .WillRepeatedly(Return());
+  EXPECT_FALSE(parser.Parse("r0: r1:   expr"));
+}
+
+class ParseHandlerFixture: public CFIFixture {
+ public:
+  ParseHandlerFixture() : CFIFixture(), handler(&cfi) { }
+  CFIFrameInfoParseHandler handler;
+};
+
+class ParseHandler: public ParseHandlerFixture, public Test { };
+
+TEST_F(ParseHandler, CFARARule) {
+  handler.CFARule("reg-for-cfa");
+  handler.RARule("reg-for-ra");
+  registers["reg-for-cfa"] = 0x268a9a4a3821a797ULL;
+  registers["reg-for-ra"] = 0x6301b475b8b91c02ULL;
+  ASSERT_TRUE(cfi.FindCallerRegs<uint64_t>(registers, memory,
+                                            &caller_registers));
+  ASSERT_EQ(0x268a9a4a3821a797ULL, caller_registers[".cfa"]);
+  ASSERT_EQ(0x6301b475b8b91c02ULL, caller_registers[".ra"]);
+}
+
+TEST_F(ParseHandler, RegisterRules) {
+  handler.CFARule("reg-for-cfa");
+  handler.RARule("reg-for-ra");
+  handler.RegisterRule("reg1", "reg-for-reg1");
+  handler.RegisterRule("reg2", "reg-for-reg2");
+  registers["reg-for-cfa"] = 0x268a9a4a3821a797ULL;
+  registers["reg-for-ra"] = 0x6301b475b8b91c02ULL;
+  registers["reg-for-reg1"] = 0x06cde8e2ff062481ULL;
+  registers["reg-for-reg2"] = 0xff0c4f76403173e2ULL;
+  ASSERT_TRUE(cfi.FindCallerRegs<uint64_t>(registers, memory,
+                                            &caller_registers));
+  ASSERT_EQ(0x268a9a4a3821a797ULL, caller_registers[".cfa"]);
+  ASSERT_EQ(0x6301b475b8b91c02ULL, caller_registers[".ra"]);
+  ASSERT_EQ(0x06cde8e2ff062481ULL, caller_registers["reg1"]);
+  ASSERT_EQ(0xff0c4f76403173e2ULL, caller_registers["reg2"]);
+}
+
+struct SimpleCFIWalkerFixture {
+  struct RawContext {
+    uint64_t r0, r1, r2, r3, r4, sp, pc;
+  };
+  enum Validity {
+    R0_VALID = 0x01,
+    R1_VALID = 0x02,
+    R2_VALID = 0x04,
+    R3_VALID = 0x08,
+    R4_VALID = 0x10,
+    SP_VALID = 0x20,
+    PC_VALID = 0x40
+  };
+  typedef SimpleCFIWalker<uint64_t, RawContext> CFIWalker;
+
+  SimpleCFIWalkerFixture()
+      : walker(register_map,
+               sizeof(register_map) / sizeof(register_map[0])) { }
+
+  static CFIWalker::RegisterSet register_map[7];
+  CFIFrameInfo call_frame_info;
+  CFIWalker walker;
+  MockMemoryRegion memory;
+  RawContext callee_context, caller_context;
+};
+
+SimpleCFIWalkerFixture::CFIWalker::RegisterSet
+SimpleCFIWalkerFixture::register_map[7] = {
+  { "r0", NULL,   true,  R0_VALID, &RawContext::r0 },
+  { "r1", NULL,   true,  R1_VALID, &RawContext::r1 },
+  { "r2", NULL,   false, R2_VALID, &RawContext::r2 },
+  { "r3", NULL,   false, R3_VALID, &RawContext::r3 },
+  { "r4", NULL,   true,  R4_VALID, &RawContext::r4 },
+  { "sp", ".cfa", true,  SP_VALID, &RawContext::sp },
+  { "pc", ".ra",  true,  PC_VALID, &RawContext::pc },
+};
+
+class SimpleWalker: public SimpleCFIWalkerFixture, public Test { };
+
+TEST_F(SimpleWalker, Walk) {
+  // Stack_top is the current stack pointer, pointing to the lowest
+  // address of a frame that looks like this (all 64-bit words):
+  //
+  // sp ->  saved r0
+  //        garbage
+  //        return address
+  // cfa -> 
+  //
+  // r0 has been saved on the stack.
+  // r1 has been saved in r2.
+  // r2 and r3 are not recoverable.
+  // r4 is not recoverable, even though it is a callee-saves register.
+  //    Some earlier frame's unwinder must have failed to recover it.
+
+  uint64_t stack_top = 0x83254944b20d5512ULL;
+
+  // Saved r0.
+  EXPECT_CALL(memory,
+              GetMemoryAtAddress(stack_top, A<uint64_t *>()))
+      .WillRepeatedly(DoAll(SetArgumentPointee<1>(0xdc1975eba8602302ULL),
+                            Return(true)));
+  // Saved return address.
+  EXPECT_CALL(memory,
+              GetMemoryAtAddress(stack_top + 16, A<uint64_t *>()))
+      .WillRepeatedly(DoAll(SetArgumentPointee<1>(0xba5ad6d9acce28deULL),
+                            Return(true)));
+
+  call_frame_info.SetCFARule("sp 24 +");
+  call_frame_info.SetRARule(".cfa 8 - ^");
+  call_frame_info.SetRegisterRule("r0", ".cfa 24 - ^");
+  call_frame_info.SetRegisterRule("r1", "r2");
+
+  callee_context.r0 = 0x94e030ca79edd119ULL;
+  callee_context.r1 = 0x937b4d7e95ce52d9ULL;
+  callee_context.r2 = 0x5fe0027416b8b62aULL; // caller's r1
+  // callee_context.r3 is not valid in callee.
+  // callee_context.r4 is not valid in callee.
+  callee_context.sp = stack_top;
+  callee_context.pc = 0x25b21b224311d280ULL;
+  int callee_validity = R0_VALID | R1_VALID | R2_VALID | SP_VALID | PC_VALID;
+
+  memset(&caller_context, 0, sizeof(caller_context));
+
+  int caller_validity;
+  EXPECT_TRUE(walker.FindCallerRegisters(memory, call_frame_info,
+                                         callee_context, callee_validity,
+                                         &caller_context, &caller_validity));
+  EXPECT_EQ(R0_VALID | R1_VALID | SP_VALID | PC_VALID, caller_validity);
+  EXPECT_EQ(0xdc1975eba8602302ULL, caller_context.r0);
+  EXPECT_EQ(0x5fe0027416b8b62aULL, caller_context.r1);
+  EXPECT_EQ(stack_top + 24,        caller_context.sp);
+  EXPECT_EQ(0xba5ad6d9acce28deULL, caller_context.pc);
+}
diff --git a/google-breakpad/src/processor/contained_range_map-inl.h b/google-breakpad/src/processor/contained_range_map-inl.h
new file mode 100644
index 0000000..4c0ad41
--- /dev/null
+++ b/google-breakpad/src/processor/contained_range_map-inl.h
@@ -0,0 +1,197 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// contained_range_map-inl.h: Hierarchically-organized range map implementation.
+//
+// See contained_range_map.h for documentation.
+//
+// Author: Mark Mentovai
+
+#ifndef PROCESSOR_CONTAINED_RANGE_MAP_INL_H__
+#define PROCESSOR_CONTAINED_RANGE_MAP_INL_H__
+
+#include "processor/contained_range_map.h"
+
+#include <assert.h>
+
+#include "processor/logging.h"
+
+
+namespace google_breakpad {
+
+
+template<typename AddressType, typename EntryType>
+ContainedRangeMap<AddressType, EntryType>::~ContainedRangeMap() {
+  // Clear frees the children pointed to by the map, and frees the map itself.
+  Clear();
+}
+
+
+template<typename AddressType, typename EntryType>
+bool ContainedRangeMap<AddressType, EntryType>::StoreRange(
+    const AddressType &base, const AddressType &size, const EntryType &entry) {
+  AddressType high = base + size - 1;
+
+  // Check for undersize or overflow.
+  if (size <= 0 || high < base) {
+    //TODO(nealsid) We are commenting this out in order to prevent
+    // excessive logging.  We plan to move to better logging as this
+    // failure happens quite often and is expected(see comment in
+    // basic_source_line_resolver.cc:671).
+    // BPLOG(INFO) << "StoreRange failed, " << HexString(base) << "+"
+    // << HexString(size) << ", " << HexString(high);
+    return false;
+  }
+
+  if (!map_)
+    map_ = new AddressToRangeMap();
+
+  MapIterator iterator_base = map_->lower_bound(base);
+  MapIterator iterator_high = map_->lower_bound(high);
+  MapIterator iterator_end = map_->end();
+
+  if (iterator_base == iterator_high && iterator_base != iterator_end &&
+      base >= iterator_base->second->base_) {
+    // The new range is entirely within an existing child range.
+
+    // If the new range's geometry is exactly equal to an existing child
+    // range's, it violates the containment rules, and an attempt to store
+    // it must fail.  iterator_base->first contains the key, which was the
+    // containing child's high address.
+    if (iterator_base->second->base_ == base && iterator_base->first == high) {
+      // TODO(nealsid): See the TODO above on why this is commented out.
+//       BPLOG(INFO) << "StoreRange failed, identical range is already "
+//                      "present: " << HexString(base) << "+" << HexString(size);
+      return false;
+    }
+
+    // Pass the new range on to the child to attempt to store.
+    return iterator_base->second->StoreRange(base, size, entry);
+  }
+
+  // iterator_high might refer to an irrelevant range: one whose base address
+  // is higher than the new range's high address.  Set contains_high to true
+  // only if iterator_high refers to a range that is at least partially
+  // within the new range.
+  bool contains_high = iterator_high != iterator_end &&
+                       high >= iterator_high->second->base_;
+
+  // If the new range encompasses any existing child ranges, it must do so
+  // fully.  Partial containment isn't allowed.
+  if ((iterator_base != iterator_end && base > iterator_base->second->base_) ||
+      (contains_high && high < iterator_high->first)) {
+    // TODO(mmentovai): Some symbol files will trip this check frequently
+    // on STACK lines.  Too many messages will be produced.  These are more
+    // suitable for a DEBUG channel than an INFO channel.
+    // BPLOG(INFO) << "StoreRange failed, new range partially contains "
+    //               "existing range: " << HexString(base) << "+" <<
+    //               HexString(size);
+    return false;
+  }
+
+  // When copying and erasing contained ranges, the "end" iterator needs to
+  // point one past the last item of the range to copy.  If contains_high is
+  // false, the iterator's already in the right place; the increment is safe
+  // because contains_high can't be true if iterator_high == iterator_end.
+  if (contains_high)
+    ++iterator_high;
+
+  // Optimization: if the iterators are equal, no child ranges would be
+  // moved.  Create the new child range with a NULL map to conserve space
+  // in leaf nodes, of which there will be many.
+  AddressToRangeMap *child_map = NULL;
+
+  if (iterator_base != iterator_high) {
+    // The children of this range that are contained by the new range must
+    // be transferred over to the new range.  Create the new child range map
+    // and copy the pointers to range maps it should contain into it.
+    child_map = new AddressToRangeMap(iterator_base, iterator_high);
+
+    // Remove the copied child pointers from this range's map of children.
+    map_->erase(iterator_base, iterator_high);
+  }
+
+  // Store the new range in the map by its high address.  Any children that
+  // the new child range contains were formerly children of this range but
+  // are now this range's grandchildren.  Ownership of these is transferred
+  // to the new child range.
+  map_->insert(MapValue(high,
+                        new ContainedRangeMap(base, entry, child_map)));
+  return true;
+}
+
+
+template<typename AddressType, typename EntryType>
+bool ContainedRangeMap<AddressType, EntryType>::RetrieveRange(
+    const AddressType &address, EntryType *entry) const {
+  BPLOG_IF(ERROR, !entry) << "ContainedRangeMap::RetrieveRange requires "
+                             "|entry|";
+  assert(entry);
+
+  // If nothing was ever stored, then there's nothing to retrieve.
+  if (!map_)
+    return false;
+
+  // Get an iterator to the child range whose high address is equal to or
+  // greater than the supplied address.  If the supplied address is higher
+  // than all of the high addresses in the range, then this range does not
+  // contain a child at address, so return false.  If the supplied address
+  // is lower than the base address of the child range, then it is not within
+  // the child range, so return false.
+  MapConstIterator iterator = map_->lower_bound(address);
+  if (iterator == map_->end() || address < iterator->second->base_)
+    return false;
+
+  // The child in iterator->second contains the specified address.  Find out
+  // if it has a more-specific descendant that also contains it.  If it does,
+  // it will set |entry| appropriately.  If not, set |entry| to the child.
+  if (!iterator->second->RetrieveRange(address, entry))
+    *entry = iterator->second->entry_;
+
+  return true;
+}
+
+
+template<typename AddressType, typename EntryType>
+void ContainedRangeMap<AddressType, EntryType>::Clear() {
+  if (map_) {
+    MapConstIterator end = map_->end();
+    for (MapConstIterator child = map_->begin(); child != end; ++child)
+      delete child->second;
+
+    delete map_;
+    map_ = NULL;
+  }
+}
+
+
+}  // namespace google_breakpad
+
+
+#endif  // PROCESSOR_CONTAINED_RANGE_MAP_INL_H__
diff --git a/google-breakpad/src/processor/contained_range_map.h b/google-breakpad/src/processor/contained_range_map.h
new file mode 100644
index 0000000..1015ae8
--- /dev/null
+++ b/google-breakpad/src/processor/contained_range_map.h
@@ -0,0 +1,150 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// contained_range_map.h: Hierarchically-organized range maps.
+//
+// A contained range map is similar to a standard range map, except it allows
+// objects to be organized hierarchically.  A contained range map allows
+// objects to contain other objects.  It is not sensitive to the order that
+// objects are added to the map: larger, more general, containing objects
+// may be added either before or after smaller, more specific, contained
+// ones.
+//
+// Contained range maps guarantee that each object may only contain smaller
+// objects than itself, and that a parent object may only contain child
+// objects located entirely within the parent's address space.  Attempts
+// to introduce objects (via StoreRange) that violate these rules will fail.
+// Retrieval (via RetrieveRange) always returns the most specific (smallest)
+// object that contains the address being queried.  Note that while it is
+// not possible to insert two objects into a map that have exactly the same
+// geometry (base address and size), it is possible to completely mask a
+// larger object by inserting smaller objects that entirely fill the larger
+// object's address space.
+//
+// Internally, contained range maps are implemented as a tree.  Each tree
+// node except for the root node describes an object in the map.  Each node
+// maintains its list of children in a map similar to a standard range map,
+// keyed by the highest address that each child occupies.  Each node's
+// children occupy address ranges entirely within the node.  The root node
+// is the only node directly accessible to the user, and represents the
+// entire address space.
+//
+// Author: Mark Mentovai
+
+#ifndef PROCESSOR_CONTAINED_RANGE_MAP_H__
+#define PROCESSOR_CONTAINED_RANGE_MAP_H__
+
+
+#include <map>
+
+
+namespace google_breakpad {
+
+// Forward declarations (for later friend declarations of specialized template).
+template<class, class> class ContainedRangeMapSerializer;
+
+template<typename AddressType, typename EntryType>
+class ContainedRangeMap {
+ public:
+  // The default constructor creates a ContainedRangeMap with no geometry
+  // and no entry, and as such is only suitable for the root node of a
+  // ContainedRangeMap tree.
+  ContainedRangeMap() : base_(), entry_(), map_(NULL) {}
+
+  ~ContainedRangeMap();
+
+  // Inserts a range into the map.  If the new range is encompassed by
+  // an existing child range, the new range is passed into the child range's
+  // StoreRange method.  If the new range encompasses any existing child
+  // ranges, those child ranges are moved to the new range, becoming
+  // grandchildren of this ContainedRangeMap.  Returns false for a
+  // parameter error, or if the ContainedRangeMap hierarchy guarantees
+  // would be violated.
+  bool StoreRange(const AddressType &base,
+                  const AddressType &size,
+                  const EntryType &entry);
+
+  // Retrieves the most specific (smallest) descendant range encompassing
+  // the specified address.  This method will only return entries held by
+  // child ranges, and not the entry contained by |this|.  This is necessary
+  // to support a sparsely-populated root range.  If no descendant range
+  // encompasses the address, returns false.
+  bool RetrieveRange(const AddressType &address, EntryType *entry) const;
+
+  // Removes all children.  Note that Clear only removes descendants,
+  // leaving the node on which it is called intact.  Because the only
+  // meaningful things contained by a root node are descendants, this
+  // is sufficient to restore an entire ContainedRangeMap to its initial
+  // empty state when called on the root node.
+  void Clear();
+
+ private:
+  friend class ContainedRangeMapSerializer<AddressType, EntryType>;
+  friend class ModuleComparer;
+
+  // AddressToRangeMap stores pointers.  This makes reparenting simpler in
+  // StoreRange, because it doesn't need to copy entire objects.
+  typedef std::map<AddressType, ContainedRangeMap *> AddressToRangeMap;
+  typedef typename AddressToRangeMap::const_iterator MapConstIterator;
+  typedef typename AddressToRangeMap::iterator MapIterator;
+  typedef typename AddressToRangeMap::value_type MapValue;
+
+  // Creates a new ContainedRangeMap with the specified base address, entry,
+  // and initial child map, which may be NULL.  This is only used internally
+  // by ContainedRangeMap when it creates a new child.
+  ContainedRangeMap(const AddressType &base, const EntryType &entry,
+                    AddressToRangeMap *map)
+      : base_(base), entry_(entry), map_(map) {}
+
+  // The base address of this range.  The high address does not need to
+  // be stored, because it is used as the key to an object in its parent's
+  // map, and all ContainedRangeMaps except for the root range are contained
+  // within maps.  The root range does not actually contain an entry, so its
+  // base_ field is meaningless, and the fact that it has no parent and thus
+  // no key is unimportant.  For this reason, the base_ field should only be
+  // is accessed on child ContainedRangeMap objects, and never on |this|.
+  const AddressType base_;
+
+  // The entry corresponding to this range.  The root range does not
+  // actually contain an entry, so its entry_ field is meaningless.  For
+  // this reason, the entry_ field should only be accessed on child
+  // ContainedRangeMap objects, and never on |this|.
+  const EntryType entry_;
+
+  // The map containing child ranges, keyed by each child range's high
+  // address.  This is a pointer to avoid allocating map structures for
+  // leaf nodes, where they are not needed.
+  AddressToRangeMap *map_;
+};
+
+
+}  // namespace google_breakpad
+
+
+#endif  // PROCESSOR_CONTAINED_RANGE_MAP_H__
diff --git a/google-breakpad/src/processor/contained_range_map_unittest.cc b/google-breakpad/src/processor/contained_range_map_unittest.cc
new file mode 100644
index 0000000..e5910da
--- /dev/null
+++ b/google-breakpad/src/processor/contained_range_map_unittest.cc
@@ -0,0 +1,263 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// contained_range_map_unittest.cc: Unit tests for ContainedRangeMap
+//
+// Author: Mark Mentovai
+
+#include <stdio.h>
+
+#include "processor/contained_range_map-inl.h"
+
+#include "processor/logging.h"
+
+
+#define ASSERT_TRUE(condition) \
+  if (!(condition)) { \
+    fprintf(stderr, "FAIL: %s @ %s:%d\n", #condition, __FILE__, __LINE__); \
+    return false; \
+  }
+
+#define ASSERT_FALSE(condition) ASSERT_TRUE(!(condition))
+
+
+namespace {
+
+
+using google_breakpad::ContainedRangeMap;
+
+
+static bool RunTests() {
+  ContainedRangeMap<unsigned int, int> crm;
+
+  // First, do the StoreRange tests.  This validates the containment
+  // rules.
+  ASSERT_TRUE (crm.StoreRange(10, 10,  1));
+  ASSERT_FALSE(crm.StoreRange(10, 10,  2));  // exactly equal to 1
+  ASSERT_FALSE(crm.StoreRange(11, 10,  3));  // begins inside 1 and extends up
+  ASSERT_FALSE(crm.StoreRange( 9, 10,  4));  // begins below 1 and ends inside
+  ASSERT_TRUE (crm.StoreRange(11,  9,  5));  // contained by existing
+  ASSERT_TRUE (crm.StoreRange(12,  7,  6));
+  ASSERT_TRUE (crm.StoreRange( 9, 12,  7));  // contains existing
+  ASSERT_TRUE (crm.StoreRange( 9, 13,  8));
+  ASSERT_TRUE (crm.StoreRange( 8, 14,  9));
+  ASSERT_TRUE (crm.StoreRange(30,  3, 10));
+  ASSERT_TRUE (crm.StoreRange(33,  3, 11));
+  ASSERT_TRUE (crm.StoreRange(30,  6, 12));  // storable but totally masked
+  ASSERT_TRUE (crm.StoreRange(40,  8, 13));  // will be totally masked
+  ASSERT_TRUE (crm.StoreRange(40,  4, 14));
+  ASSERT_TRUE (crm.StoreRange(44,  4, 15));
+  ASSERT_FALSE(crm.StoreRange(32, 10, 16));  // begins in #10, ends in #14
+  ASSERT_FALSE(crm.StoreRange(50,  0, 17));  // zero length
+  ASSERT_TRUE (crm.StoreRange(50, 10, 18));
+  ASSERT_TRUE (crm.StoreRange(50,  1, 19));
+  ASSERT_TRUE (crm.StoreRange(59,  1, 20));
+  ASSERT_TRUE (crm.StoreRange(60,  1, 21));
+  ASSERT_TRUE (crm.StoreRange(69,  1, 22));
+  ASSERT_TRUE (crm.StoreRange(60, 10, 23));
+  ASSERT_TRUE (crm.StoreRange(68,  1, 24));
+  ASSERT_TRUE (crm.StoreRange(61,  1, 25));
+  ASSERT_TRUE (crm.StoreRange(61,  8, 26));
+  ASSERT_FALSE(crm.StoreRange(59,  9, 27));
+  ASSERT_FALSE(crm.StoreRange(59, 10, 28));
+  ASSERT_FALSE(crm.StoreRange(59, 11, 29));
+  ASSERT_TRUE (crm.StoreRange(70, 10, 30));
+  ASSERT_TRUE (crm.StoreRange(74,  2, 31));
+  ASSERT_TRUE (crm.StoreRange(77,  2, 32));
+  ASSERT_FALSE(crm.StoreRange(72,  6, 33));
+  ASSERT_TRUE (crm.StoreRange(80,  3, 34));
+  ASSERT_TRUE (crm.StoreRange(81,  1, 35));
+  ASSERT_TRUE (crm.StoreRange(82,  1, 36));
+  ASSERT_TRUE (crm.StoreRange(83,  3, 37));
+  ASSERT_TRUE (crm.StoreRange(84,  1, 38));
+  ASSERT_TRUE (crm.StoreRange(83,  1, 39));
+  ASSERT_TRUE (crm.StoreRange(86,  5, 40));
+  ASSERT_TRUE (crm.StoreRange(88,  1, 41));
+  ASSERT_TRUE (crm.StoreRange(90,  1, 42));
+  ASSERT_TRUE (crm.StoreRange(86,  1, 43));
+  ASSERT_TRUE (crm.StoreRange(87,  1, 44));
+  ASSERT_TRUE (crm.StoreRange(89,  1, 45));
+  ASSERT_TRUE (crm.StoreRange(87,  4, 46));
+  ASSERT_TRUE (crm.StoreRange(87,  3, 47));
+  ASSERT_FALSE(crm.StoreRange(86,  2, 48));
+
+  // Each element in test_data contains the expected result when calling
+  // RetrieveRange on an address.
+  const int test_data[] = {
+    0,   // 0
+    0,   // 1
+    0,   // 2
+    0,   // 3
+    0,   // 4
+    0,   // 5
+    0,   // 6
+    0,   // 7
+    9,   // 8
+    7,   // 9
+    1,   // 10
+    5,   // 11
+    6,   // 12
+    6,   // 13
+    6,   // 14
+    6,   // 15
+    6,   // 16
+    6,   // 17
+    6,   // 18
+    5,   // 19
+    7,   // 20
+    8,   // 21
+    0,   // 22
+    0,   // 23
+    0,   // 24
+    0,   // 25
+    0,   // 26
+    0,   // 27
+    0,   // 28
+    0,   // 29
+    10,  // 30
+    10,  // 31
+    10,  // 32
+    11,  // 33
+    11,  // 34
+    11,  // 35
+    0,   // 36
+    0,   // 37
+    0,   // 38
+    0,   // 39
+    14,  // 40
+    14,  // 41
+    14,  // 42
+    14,  // 43
+    15,  // 44
+    15,  // 45
+    15,  // 46
+    15,  // 47
+    0,   // 48
+    0,   // 49
+    19,  // 50
+    18,  // 51
+    18,  // 52
+    18,  // 53
+    18,  // 54
+    18,  // 55
+    18,  // 56
+    18,  // 57
+    18,  // 58
+    20,  // 59
+    21,  // 60
+    25,  // 61
+    26,  // 62
+    26,  // 63
+    26,  // 64
+    26,  // 65
+    26,  // 66
+    26,  // 67
+    24,  // 68
+    22,  // 69
+    30,  // 70
+    30,  // 71
+    30,  // 72
+    30,  // 73
+    31,  // 74
+    31,  // 75
+    30,  // 76
+    32,  // 77
+    32,  // 78
+    30,  // 79
+    34,  // 80
+    35,  // 81
+    36,  // 82
+    39,  // 83
+    38,  // 84
+    37,  // 85
+    43,  // 86
+    44,  // 87
+    41,  // 88
+    45,  // 89
+    42,  // 90
+    0,   // 91
+    0,   // 92
+    0,   // 93
+    0,   // 94
+    0,   // 95
+    0,   // 96
+    0,   // 97
+    0,   // 98
+    0    // 99
+  };
+  unsigned int test_high = sizeof(test_data) / sizeof(int);
+
+  // Now, do the RetrieveRange tests.  This further validates that the
+  // objects were stored properly and that retrieval returns the correct
+  // object.
+  // If GENERATE_TEST_DATA is defined, instead of the retrieval tests, a
+  // new test_data array will be printed.  Exercise caution when doing this.
+  // Be sure to verify the results manually!
+#ifdef GENERATE_TEST_DATA
+  printf("  const int test_data[] = {\n");
+#endif  // GENERATE_TEST_DATA
+
+  for (unsigned int address = 0; address < test_high; ++address) {
+    int value;
+    if (!crm.RetrieveRange(address, &value))
+      value = 0;
+
+#ifndef GENERATE_TEST_DATA
+    // Don't use ASSERT inside the loop because it won't show the failed
+    // |address|, and the line number will always be the same.  That makes
+    // it difficult to figure out which test failed.
+    if (value != test_data[address]) {
+      fprintf(stderr, "FAIL: retrieve %d expected %d observed %d @ %s:%d\n",
+              address, test_data[address], value, __FILE__, __LINE__);
+      return false;
+    }
+#else  // !GENERATE_TEST_DATA
+    printf("    %d%c%s  // %d\n", value,
+                                  address == test_high - 1 ? ' ' : ',',
+                                  value < 10 ? " " : "",
+                                  address);
+#endif  // !GENERATE_TEST_DATA
+  }
+
+#ifdef GENERATE_TEST_DATA
+  printf("  };\n");
+#endif  // GENERATE_TEST_DATA
+
+  return true;
+}
+
+
+}  // namespace
+
+
+int main(int argc, char **argv) {
+  BPLOG_INIT(&argc, &argv);
+
+  return RunTests() ? 0 : 1;
+}
diff --git a/google-breakpad/src/processor/disassembler_x86.cc b/google-breakpad/src/processor/disassembler_x86.cc
new file mode 100644
index 0000000..9eba848
--- /dev/null
+++ b/google-breakpad/src/processor/disassembler_x86.cc
@@ -0,0 +1,241 @@
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// disassembler_x86.cc: simple x86 disassembler.
+//
+// Provides single step disassembly of x86 bytecode and flags instructions
+// that utilize known bad register values.
+//
+// Author: Cris Neckar
+
+#include "processor/disassembler_x86.h"
+
+#include <string.h>
+#include <unistd.h>
+
+namespace google_breakpad {
+
+DisassemblerX86::DisassemblerX86(const uint8_t *bytecode,
+                                 uint32_t size,
+                                 uint32_t virtual_address) :
+                                     bytecode_(bytecode),
+                                     size_(size),
+                                     virtual_address_(virtual_address),
+                                     current_byte_offset_(0),
+                                     current_inst_offset_(0),
+                                     instr_valid_(false),
+                                     register_valid_(false),
+                                     pushed_bad_value_(false),
+                                     end_of_block_(false),
+                                     flags_(0) {
+  libdis::x86_init(libdis::opt_none, NULL, NULL);
+}
+
+DisassemblerX86::~DisassemblerX86() {
+  if (instr_valid_)
+    libdis::x86_oplist_free(&current_instr_);
+
+  libdis::x86_cleanup();
+}
+
+uint32_t DisassemblerX86::NextInstruction() {
+  if (instr_valid_)
+    libdis::x86_oplist_free(&current_instr_);
+
+  if (current_byte_offset_ >= size_) {
+    instr_valid_ = false;
+    return 0;
+  }
+  uint32_t instr_size = 0;
+  instr_size = libdis::x86_disasm((unsigned char *)bytecode_, size_,
+                          virtual_address_, current_byte_offset_,
+                          &current_instr_);
+  if (instr_size == 0) {
+    instr_valid_ = false;
+    return 0;
+  }
+
+  current_byte_offset_ += instr_size;
+  current_inst_offset_++;
+  instr_valid_ = libdis::x86_insn_is_valid(&current_instr_);
+  if (!instr_valid_)
+    return 0;
+
+  if (current_instr_.type == libdis::insn_return)
+    end_of_block_ = true;
+  libdis::x86_op_t *src = libdis::x86_get_src_operand(&current_instr_);
+  libdis::x86_op_t *dest = libdis::x86_get_dest_operand(&current_instr_);
+
+  if (register_valid_) {
+    switch (current_instr_.group) {
+      // Flag branches based off of bad registers and calls that occur
+      // after pushing bad values.
+      case libdis::insn_controlflow:
+        switch (current_instr_.type) {
+          case libdis::insn_jmp:
+          case libdis::insn_jcc:
+          case libdis::insn_call:
+          case libdis::insn_callcc:
+            if (dest) {
+              switch (dest->type) {
+                case libdis::op_expression:
+                  if (dest->data.expression.base.id == bad_register_.id)
+                    flags_ |= DISX86_BAD_BRANCH_TARGET;
+                  break;
+                case libdis::op_register:
+                  if (dest->data.reg.id == bad_register_.id)
+                    flags_ |= DISX86_BAD_BRANCH_TARGET;
+                  break;
+                default:
+                  if (pushed_bad_value_ &&
+                      (current_instr_.type == libdis::insn_call ||
+                      current_instr_.type == libdis::insn_callcc))
+                    flags_ |= DISX86_BAD_ARGUMENT_PASSED;
+                  break;
+              }
+            }
+            break;
+          default:
+            break;
+        }
+        break;
+
+      // Flag block data operations that use bad registers for src or dest.
+      case libdis::insn_string:
+        if (dest && dest->type == libdis::op_expression &&
+            dest->data.expression.base.id == bad_register_.id)
+          flags_ |= DISX86_BAD_BLOCK_WRITE;
+        if (src && src->type == libdis::op_expression &&
+            src->data.expression.base.id == bad_register_.id)
+          flags_ |= DISX86_BAD_BLOCK_READ;
+        break;
+
+      // Flag comparisons based on bad data.
+      case libdis::insn_comparison:
+        if ((dest && dest->type == libdis::op_expression &&
+            dest->data.expression.base.id == bad_register_.id) ||
+            (src && src->type == libdis::op_expression &&
+            src->data.expression.base.id == bad_register_.id) ||
+            (dest && dest->type == libdis::op_register &&
+            dest->data.reg.id == bad_register_.id) ||
+            (src && src->type == libdis::op_register &&
+            src->data.reg.id == bad_register_.id))
+          flags_ |= DISX86_BAD_COMPARISON;
+        break;
+
+      // Flag any other instruction which derefs a bad register for
+      // src or dest.
+      default:
+        if (dest && dest->type == libdis::op_expression &&
+            dest->data.expression.base.id == bad_register_.id)
+          flags_ |= DISX86_BAD_WRITE;
+        if (src && src->type == libdis::op_expression &&
+            src->data.expression.base.id == bad_register_.id)
+          flags_ |= DISX86_BAD_READ;
+        break;
+    }
+  }
+
+  // When a register is marked as tainted check if it is pushed.
+  // TODO(cdn): may also want to check for MOVs into EBP offsets.
+  if (register_valid_ && dest && current_instr_.type == libdis::insn_push) {
+    switch (dest->type) {
+      case libdis::op_expression:
+        if (dest->data.expression.base.id == bad_register_.id ||
+            dest->data.expression.index.id == bad_register_.id)
+          pushed_bad_value_ = true;
+        break;
+      case libdis::op_register:
+        if (dest->data.reg.id == bad_register_.id)
+          pushed_bad_value_ = true;
+        break;
+      default:
+        break;
+    }
+  }
+
+  // Check if a tainted register value is clobbered.
+  // For conditional MOVs and XCHGs assume that
+  // there is a hit.
+  if (register_valid_) {
+    switch (current_instr_.type) {
+      case libdis::insn_xor:
+        if (src && src->type == libdis::op_register &&
+            dest && dest->type == libdis::op_register &&
+            src->data.reg.id == bad_register_.id &&
+            src->data.reg.id == dest->data.reg.id)
+          register_valid_ = false;
+        break;
+      case libdis::insn_pop:
+      case libdis::insn_mov:
+      case libdis::insn_movcc:
+        if (dest && dest->type == libdis::op_register &&
+            dest->data.reg.id == bad_register_.id)
+          register_valid_ = false;
+        break;
+      case libdis::insn_popregs:
+        register_valid_ = false;
+        break;
+      case libdis::insn_xchg:
+      case libdis::insn_xchgcc:
+        if (dest && dest->type == libdis::op_register &&
+            src && src->type == libdis::op_register) {
+          if (dest->data.reg.id == bad_register_.id)
+            memcpy(&bad_register_, &src->data.reg, sizeof(libdis::x86_reg_t));
+          else if (src->data.reg.id == bad_register_.id)
+            memcpy(&bad_register_, &dest->data.reg, sizeof(libdis::x86_reg_t));
+        }
+        break;
+      default:
+        break;
+    }
+  }
+
+  return instr_size;
+}
+
+bool DisassemblerX86::setBadRead() {
+  if (!instr_valid_)
+    return false;
+
+  libdis::x86_op_t *operand = libdis::x86_get_src_operand(&current_instr_);
+  if (!operand || operand->type != libdis::op_expression)
+    return false;
+
+  memcpy(&bad_register_, &operand->data.expression.base,
+         sizeof(libdis::x86_reg_t));
+  register_valid_ = true;
+  return true;
+}
+
+bool DisassemblerX86::setBadWrite() {
+  if (!instr_valid_)
+    return false;
+
+  libdis::x86_op_t *operand = libdis::x86_get_dest_operand(&current_instr_);
+  if (!operand || operand->type != libdis::op_expression)
+    return false;
+
+  memcpy(&bad_register_, &operand->data.expression.base,
+         sizeof(libdis::x86_reg_t));
+  register_valid_ = true;
+  return true;
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/processor/disassembler_x86.h b/google-breakpad/src/processor/disassembler_x86.h
new file mode 100644
index 0000000..7106941
--- /dev/null
+++ b/google-breakpad/src/processor/disassembler_x86.h
@@ -0,0 +1,127 @@
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// disassembler_x86.h: Basic x86 bytecode disassembler
+//
+// Provides a simple disassembler which wraps libdisasm. This allows simple
+// tests to be run against bytecode to test for various properties.
+//
+// Author: Cris Neckar
+
+#ifndef GOOGLE_BREAKPAD_PROCESSOR_DISASSEMBLER_X86_H_
+#define GOOGLE_BREAKPAD_PROCESSOR_DISASSEMBLER_X86_H_
+
+#include <stddef.h>
+#include <sys/types.h>
+
+#include "google_breakpad/common/breakpad_types.h"
+
+namespace libdis {
+#include "third_party/libdisasm/libdis.h"
+}
+
+namespace google_breakpad {
+
+enum {
+  DISX86_NONE =                 0x0,
+  DISX86_BAD_BRANCH_TARGET =    0x1,
+  DISX86_BAD_ARGUMENT_PASSED =  0x2,
+  DISX86_BAD_WRITE =            0x4,
+  DISX86_BAD_BLOCK_WRITE =      0x8,
+  DISX86_BAD_READ =             0x10,
+  DISX86_BAD_BLOCK_READ =       0x20,
+  DISX86_BAD_COMPARISON =       0x40
+};
+
+class DisassemblerX86 {
+  public:
+    // TODO(cdn): Modify this class to take a MemoryRegion instead of just
+    // a raw buffer. This will make it easier to use this on arbitrary
+    // minidumps without first copying out the code segment.
+    DisassemblerX86(const uint8_t *bytecode, uint32_t, uint32_t);
+    ~DisassemblerX86();
+
+    // This walks to the next instruction in the memory region and
+    // sets flags based on the type of instruction and previous state
+    // including any registers marked as bad through setBadRead()
+    // or setBadWrite(). This method can be called in a loop to
+    // disassemble until the end of a region.
+    uint32_t NextInstruction();
+
+    // Indicates whether the current disassembled instruction was valid.
+    bool currentInstructionValid() { return instr_valid_; }
+
+    // Returns the current instruction as defined in libdis.h,
+    // or NULL if the current instruction is not valid.
+    const libdis::x86_insn_t* currentInstruction() {
+      return instr_valid_ ? &current_instr_ : NULL;
+    }
+
+    // Returns the type of the current instruction as defined in libdis.h.
+    libdis::x86_insn_group currentInstructionGroup() {
+      return current_instr_.group;
+    }
+
+    // Indicates whether a return instruction has been encountered.
+    bool endOfBlock() { return end_of_block_; }
+
+    // The flags set so far for the disassembly.
+    uint16_t flags() { return flags_; }
+
+    // This sets an indicator that the register used to determine
+    // src or dest for the current instruction is tainted. These can
+    // be used after examining the current instruction to indicate,
+    // for example that a bad read or write occurred and the pointer
+    // stored in the register is currently invalid.
+    bool setBadRead();
+    bool setBadWrite();
+
+  protected:
+    const uint8_t *bytecode_;
+    uint32_t size_;
+    uint32_t virtual_address_;
+    uint32_t current_byte_offset_;
+    uint32_t current_inst_offset_;
+
+    bool instr_valid_;
+    libdis::x86_insn_t current_instr_;
+
+    // TODO(cdn): Maybe also track an expression's index register.
+    // ex: mov eax, [ebx + ecx]; ebx is base, ecx is index.
+    bool register_valid_;
+    libdis::x86_reg_t bad_register_;
+
+    bool pushed_bad_value_;
+    bool end_of_block_;
+
+    uint16_t flags_;
+};
+
+}  // namespace google_breakpad
+
+#endif  // GOOGLE_BREAKPAD_PROCESSOR_DISASSEMBLER_X86_H_
diff --git a/google-breakpad/src/processor/disassembler_x86_unittest.cc b/google-breakpad/src/processor/disassembler_x86_unittest.cc
new file mode 100644
index 0000000..352905f
--- /dev/null
+++ b/google-breakpad/src/processor/disassembler_x86_unittest.cc
@@ -0,0 +1,233 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
+
+#include <unistd.h>
+
+#include "breakpad_googletest_includes.h"
+#include "processor/disassembler_x86.h"
+#include "third_party/libdisasm/libdis.h"
+
+namespace {
+
+using google_breakpad::DisassemblerX86;
+
+unsigned char just_return[] = "\xc3";  // retn
+
+unsigned char invalid_instruction[] = "\x00";  // invalid
+
+unsigned char read_eax_jmp_eax[] =
+    "\x8b\x18"                  // mov ebx, [eax];
+    "\x33\xc9"                  // xor ebx, ebx;
+    "\xff\x20"                  // jmp eax;
+    "\xc3";                     // retn;
+
+unsigned char write_eax_arg_to_call[] =
+    "\x89\xa8\x00\x02\x00\x00"  // mov [eax+200], ebp;
+    "\xc1\xeb\x02"              // shr ebx, 2;
+    "\x50"                      // push eax;
+    "\xe8\xd1\x24\x77\x88"      // call something;
+    "\xc3";                     // retn;
+
+unsigned char read_edi_stosb[] =
+    "\x8b\x07"                  // mov eax, [edi];
+    "\x8b\xc8"                  // mov ecx, eax;
+    "\xf3\xaa"                  // rep stosb;
+    "\xc3";                     // retn;
+
+unsigned char read_clobber_write[] =
+    "\x03\x18"                  // add ebx, [eax];
+    "\x8b\xc1"                  // mov eax, ecx;
+    "\x89\x10"                  // mov [eax], edx;
+    "\xc3";                     // retn;
+
+unsigned char read_xchg_write[] =
+    "\x03\x18"                  // add ebx, [eax];
+    "\x91"                      // xchg eax, ecx;
+    "\x89\x18"                  // mov [eax], ebx;
+    "\x89\x11"                  // mov [ecx], edx;
+    "\xc3";                     // retn;
+
+unsigned char read_cmp[] =
+    "\x03\x18"                  // add ebx, [eax];
+    "\x83\xf8\x00"              // cmp eax, 0;
+    "\x74\x04"                  // je +4;
+    "\xc3";                     // retn;
+
+TEST(DisassemblerX86Test, SimpleReturnInstruction) {
+  DisassemblerX86 dis(just_return, sizeof(just_return)-1, 0);
+  EXPECT_EQ(1U, dis.NextInstruction());
+  EXPECT_TRUE(dis.currentInstructionValid());
+  EXPECT_EQ(0U, dis.flags());
+  EXPECT_TRUE(dis.endOfBlock());
+  EXPECT_EQ(libdis::insn_controlflow, dis.currentInstructionGroup());
+  const libdis::x86_insn_t* instruction = dis.currentInstruction();
+  EXPECT_EQ(libdis::insn_controlflow, instruction->group);
+  EXPECT_EQ(libdis::insn_return, instruction->type);
+  EXPECT_EQ(0U, dis.NextInstruction());
+  EXPECT_FALSE(dis.currentInstructionValid());
+  EXPECT_EQ(NULL, dis.currentInstruction());
+}
+
+TEST(DisassemblerX86Test, SimpleInvalidInstruction) {
+  DisassemblerX86 dis(invalid_instruction, sizeof(invalid_instruction)-1, 0);
+  EXPECT_EQ(0U, dis.NextInstruction());
+  EXPECT_FALSE(dis.currentInstructionValid());
+}
+
+TEST(DisassemblerX86Test, BadReadLeadsToBranch) {
+  DisassemblerX86 dis(read_eax_jmp_eax, sizeof(read_eax_jmp_eax)-1, 0);
+  EXPECT_EQ(2U, dis.NextInstruction());
+  EXPECT_TRUE(dis.currentInstructionValid());
+  EXPECT_EQ(0U, dis.flags());
+  EXPECT_FALSE(dis.endOfBlock());
+  EXPECT_EQ(libdis::insn_move, dis.currentInstructionGroup());
+  EXPECT_TRUE(dis.setBadRead());
+  EXPECT_EQ(2U, dis.NextInstruction());
+  EXPECT_TRUE(dis.currentInstructionValid());
+  EXPECT_EQ(0U, dis.flags());
+  EXPECT_FALSE(dis.endOfBlock());
+  EXPECT_EQ(libdis::insn_logic, dis.currentInstructionGroup());
+  EXPECT_EQ(2U, dis.NextInstruction());
+  EXPECT_TRUE(dis.currentInstructionValid());
+  EXPECT_EQ(google_breakpad::DISX86_BAD_BRANCH_TARGET, dis.flags());
+  EXPECT_FALSE(dis.endOfBlock());
+  EXPECT_EQ(libdis::insn_controlflow, dis.currentInstructionGroup());
+}
+
+TEST(DisassemblerX86Test, BadWriteLeadsToPushedArg) {
+  DisassemblerX86 dis(write_eax_arg_to_call,
+                      sizeof(write_eax_arg_to_call)-1, 0);
+  EXPECT_EQ(6U, dis.NextInstruction());
+  EXPECT_TRUE(dis.currentInstructionValid());
+  EXPECT_EQ(0U, dis.flags());
+  EXPECT_FALSE(dis.endOfBlock());
+  EXPECT_EQ(libdis::insn_move, dis.currentInstructionGroup());
+  EXPECT_TRUE(dis.setBadWrite());
+  EXPECT_EQ(3U, dis.NextInstruction());
+  EXPECT_TRUE(dis.currentInstructionValid());
+  EXPECT_EQ(0U, dis.flags());
+  EXPECT_FALSE(dis.endOfBlock());
+  EXPECT_EQ(libdis::insn_arithmetic, dis.currentInstructionGroup());
+  EXPECT_EQ(1U, dis.NextInstruction());
+  EXPECT_TRUE(dis.currentInstructionValid());
+  EXPECT_EQ(0U, dis.flags());
+  EXPECT_FALSE(dis.endOfBlock());
+  EXPECT_EQ(5U, dis.NextInstruction());
+  EXPECT_TRUE(dis.currentInstructionValid());
+  EXPECT_EQ(google_breakpad::DISX86_BAD_ARGUMENT_PASSED, dis.flags());
+  EXPECT_EQ(libdis::insn_controlflow, dis.currentInstructionGroup());
+  EXPECT_FALSE(dis.endOfBlock());
+}
+
+
+TEST(DisassemblerX86Test, BadReadLeadsToBlockWrite) {
+  DisassemblerX86 dis(read_edi_stosb, sizeof(read_edi_stosb)-1, 0);
+  EXPECT_EQ(2U, dis.NextInstruction());
+  EXPECT_TRUE(dis.currentInstructionValid());
+  EXPECT_EQ(0U, dis.flags());
+  EXPECT_FALSE(dis.endOfBlock());
+  EXPECT_EQ(libdis::insn_move, dis.currentInstructionGroup());
+  EXPECT_TRUE(dis.setBadRead());
+  EXPECT_EQ(2U, dis.NextInstruction());
+  EXPECT_TRUE(dis.currentInstructionValid());
+  EXPECT_EQ(0U, dis.flags());
+  EXPECT_FALSE(dis.endOfBlock());
+  EXPECT_EQ(libdis::insn_move, dis.currentInstructionGroup());
+  EXPECT_EQ(2U, dis.NextInstruction());
+  EXPECT_TRUE(dis.currentInstructionValid());
+  EXPECT_EQ(google_breakpad::DISX86_BAD_BLOCK_WRITE, dis.flags());
+  EXPECT_FALSE(dis.endOfBlock());
+  EXPECT_EQ(libdis::insn_string, dis.currentInstructionGroup());
+}
+
+TEST(DisassemblerX86Test, BadReadClobberThenWrite) {
+  DisassemblerX86 dis(read_clobber_write, sizeof(read_clobber_write)-1, 0);
+  EXPECT_EQ(2U, dis.NextInstruction());
+  EXPECT_TRUE(dis.currentInstructionValid());
+  EXPECT_EQ(0U, dis.flags());
+  EXPECT_FALSE(dis.endOfBlock());
+  EXPECT_EQ(libdis::insn_arithmetic, dis.currentInstructionGroup());
+  EXPECT_TRUE(dis.setBadRead());
+  EXPECT_EQ(2U, dis.NextInstruction());
+  EXPECT_TRUE(dis.currentInstructionValid());
+  EXPECT_EQ(0U, dis.flags());
+  EXPECT_FALSE(dis.endOfBlock());
+  EXPECT_EQ(libdis::insn_move, dis.currentInstructionGroup());
+  EXPECT_EQ(2U, dis.NextInstruction());
+  EXPECT_TRUE(dis.currentInstructionValid());
+  EXPECT_EQ(0U, dis.flags());
+  EXPECT_FALSE(dis.endOfBlock());
+  EXPECT_EQ(libdis::insn_move, dis.currentInstructionGroup());
+}
+
+TEST(DisassemblerX86Test, BadReadXCHGThenWrite) {
+  DisassemblerX86 dis(read_xchg_write, sizeof(read_xchg_write)-1, 0);
+  EXPECT_EQ(2U, dis.NextInstruction());
+  EXPECT_TRUE(dis.currentInstructionValid());
+  EXPECT_EQ(0U, dis.flags());
+  EXPECT_FALSE(dis.endOfBlock());
+  EXPECT_EQ(libdis::insn_arithmetic, dis.currentInstructionGroup());
+  EXPECT_TRUE(dis.setBadRead());
+  EXPECT_EQ(1U, dis.NextInstruction());
+  EXPECT_TRUE(dis.currentInstructionValid());
+  EXPECT_EQ(0U, dis.flags());
+  EXPECT_FALSE(dis.endOfBlock());
+  EXPECT_EQ(libdis::insn_move, dis.currentInstructionGroup());
+  EXPECT_EQ(2U, dis.NextInstruction());
+  EXPECT_TRUE(dis.currentInstructionValid());
+  EXPECT_EQ(0U, dis.flags());
+  EXPECT_FALSE(dis.endOfBlock());
+  EXPECT_EQ(libdis::insn_move, dis.currentInstructionGroup());
+  EXPECT_EQ(2U, dis.NextInstruction());
+  EXPECT_TRUE(dis.currentInstructionValid());
+  EXPECT_EQ(google_breakpad::DISX86_BAD_WRITE, dis.flags());
+  EXPECT_FALSE(dis.endOfBlock());
+  EXPECT_EQ(libdis::insn_move, dis.currentInstructionGroup());
+}
+
+TEST(DisassemblerX86Test, BadReadThenCMP) {
+  DisassemblerX86 dis(read_cmp, sizeof(read_cmp)-1, 0);
+  EXPECT_EQ(2U, dis.NextInstruction());
+  EXPECT_TRUE(dis.currentInstructionValid());
+  EXPECT_EQ(0U, dis.flags());
+  EXPECT_FALSE(dis.endOfBlock());
+  EXPECT_EQ(libdis::insn_arithmetic, dis.currentInstructionGroup());
+  EXPECT_TRUE(dis.setBadRead());
+  EXPECT_EQ(3U, dis.NextInstruction());
+  EXPECT_TRUE(dis.currentInstructionValid());
+  EXPECT_EQ(google_breakpad::DISX86_BAD_COMPARISON, dis.flags());
+  EXPECT_FALSE(dis.endOfBlock());
+  EXPECT_EQ(libdis::insn_comparison, dis.currentInstructionGroup());
+  EXPECT_EQ(2U, dis.NextInstruction());
+  EXPECT_TRUE(dis.currentInstructionValid());
+  EXPECT_EQ(google_breakpad::DISX86_BAD_COMPARISON, dis.flags());
+  EXPECT_FALSE(dis.endOfBlock());
+  EXPECT_EQ(libdis::insn_controlflow, dis.currentInstructionGroup());
+}
+}
diff --git a/google-breakpad/src/processor/dump_context.cc b/google-breakpad/src/processor/dump_context.cc
new file mode 100644
index 0000000..cadf93f
--- /dev/null
+++ b/google-breakpad/src/processor/dump_context.cc
@@ -0,0 +1,614 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// dump_context.cc: A (mini/micro)dump context.
+//
+// See dump_context.h for documentation.
+
+#include "google_breakpad/processor/dump_context.h"
+
+#include <assert.h>
+#include <stdio.h>
+
+#ifdef _WIN32
+#include <io.h>
+#define PRIx64 "llx"
+#define PRIx32 "lx"
+#define snprintf _snprintf
+#else  // _WIN32
+#include <unistd.h>
+#endif  // _WIN32
+
+#include "processor/logging.h"
+
+namespace google_breakpad {
+
+DumpContext::DumpContext() : context_(),
+                             context_flags_(0) { }
+
+DumpContext::~DumpContext() {
+  FreeContext();
+}
+
+uint32_t DumpContext::GetContextCPU() const {
+  if (!valid_) {
+    // Don't log a message, GetContextCPU can be legitimately called with
+    // valid_ false by FreeContext, which is called by Read.
+    return 0;
+  }
+
+  return context_flags_ & MD_CONTEXT_CPU_MASK;
+}
+
+uint32_t DumpContext::GetContextFlags() const {
+  return context_flags_;
+}
+
+const MDRawContextX86* DumpContext::GetContextX86() const {
+  if (GetContextCPU() != MD_CONTEXT_X86) {
+    BPLOG(ERROR) << "DumpContext cannot get x86 context";
+    return NULL;
+  }
+
+  return context_.x86;
+}
+
+const MDRawContextPPC* DumpContext::GetContextPPC() const {
+  if (GetContextCPU() != MD_CONTEXT_PPC) {
+    BPLOG(ERROR) << "DumpContext cannot get ppc context";
+    return NULL;
+  }
+
+  return context_.ppc;
+}
+
+const MDRawContextPPC64* DumpContext::GetContextPPC64() const {
+  if (GetContextCPU() != MD_CONTEXT_PPC64) {
+    BPLOG(ERROR) << "DumpContext cannot get ppc64 context";
+    return NULL;
+  }
+
+  return context_.ppc64;
+}
+
+const MDRawContextAMD64* DumpContext::GetContextAMD64() const {
+  if (GetContextCPU() != MD_CONTEXT_AMD64) {
+    BPLOG(ERROR) << "DumpContext cannot get amd64 context";
+    return NULL;
+  }
+
+  return context_.amd64;
+}
+
+const MDRawContextSPARC* DumpContext::GetContextSPARC() const {
+  if (GetContextCPU() != MD_CONTEXT_SPARC) {
+    BPLOG(ERROR) << "DumpContext cannot get sparc context";
+    return NULL;
+  }
+
+  return context_.ctx_sparc;
+}
+
+const MDRawContextARM* DumpContext::GetContextARM() const {
+  if (GetContextCPU() != MD_CONTEXT_ARM) {
+    BPLOG(ERROR) << "DumpContext cannot get arm context";
+    return NULL;
+  }
+
+  return context_.arm;
+}
+
+const MDRawContextARM64* DumpContext::GetContextARM64() const {
+  if (GetContextCPU() != MD_CONTEXT_ARM64) {
+    BPLOG(ERROR) << "DumpContext cannot get arm64 context";
+    return NULL;
+  }
+
+  return context_.arm64;
+}
+
+const MDRawContextMIPS* DumpContext::GetContextMIPS() const {
+  if (GetContextCPU() != MD_CONTEXT_MIPS) {
+    BPLOG(ERROR) << "DumpContext cannot get MIPS context";
+    return NULL;
+  }
+
+  return context_.ctx_mips;
+}
+
+bool DumpContext::GetInstructionPointer(uint64_t* ip) const {
+  BPLOG_IF(ERROR, !ip) << "DumpContext::GetInstructionPointer requires |ip|";
+  assert(ip);
+  *ip = 0;
+
+  if (!valid_) {
+    BPLOG(ERROR) << "Invalid DumpContext for GetInstructionPointer";
+    return false;
+  }
+
+  switch (GetContextCPU()) {
+  case MD_CONTEXT_AMD64:
+    *ip = GetContextAMD64()->rip;
+    break;
+  case MD_CONTEXT_ARM:
+    *ip = GetContextARM()->iregs[MD_CONTEXT_ARM_REG_PC];
+    break;
+  case MD_CONTEXT_ARM64:
+    *ip = GetContextARM64()->iregs[MD_CONTEXT_ARM64_REG_PC];
+    break;
+  case MD_CONTEXT_PPC:
+    *ip = GetContextPPC()->srr0;
+    break;
+  case MD_CONTEXT_PPC64:
+    *ip = GetContextPPC64()->srr0;
+    break;
+  case MD_CONTEXT_SPARC:
+    *ip = GetContextSPARC()->pc;
+    break;
+  case MD_CONTEXT_X86:
+    *ip = GetContextX86()->eip;
+    break;
+  case MD_CONTEXT_MIPS:
+    *ip = GetContextMIPS()->epc;
+    break;
+  default:
+    // This should never happen.
+    BPLOG(ERROR) << "Unknown CPU architecture in GetInstructionPointer";
+    return false;
+  }
+  return true;
+}
+
+void DumpContext::SetContextFlags(uint32_t context_flags) {
+  context_flags_ = context_flags;
+}
+
+void DumpContext::SetContextX86(MDRawContextX86* x86) {
+  context_.x86 = x86;
+}
+
+void DumpContext::SetContextPPC(MDRawContextPPC* ppc) {
+  context_.ppc = ppc;
+}
+
+void DumpContext::SetContextPPC64(MDRawContextPPC64* ppc64) {
+  context_.ppc64 = ppc64;
+}
+
+void DumpContext::SetContextAMD64(MDRawContextAMD64* amd64) {
+  context_.amd64 = amd64;
+}
+
+void DumpContext::SetContextSPARC(MDRawContextSPARC* ctx_sparc) {
+  context_.ctx_sparc = ctx_sparc;
+}
+
+void DumpContext::SetContextARM(MDRawContextARM* arm) {
+  context_.arm = arm;
+}
+
+void DumpContext::SetContextARM64(MDRawContextARM64* arm64) {
+  context_.arm64 = arm64;
+}
+
+void DumpContext::SetContextMIPS(MDRawContextMIPS* ctx_mips) {
+  context_.ctx_mips = ctx_mips;
+}
+
+void DumpContext::FreeContext() {
+  switch (GetContextCPU()) {
+    case MD_CONTEXT_X86:
+      delete context_.x86;
+      break;
+
+    case MD_CONTEXT_PPC:
+      delete context_.ppc;
+      break;
+
+    case MD_CONTEXT_PPC64:
+      delete context_.ppc64;
+      break;
+
+    case MD_CONTEXT_AMD64:
+      delete context_.amd64;
+      break;
+
+    case MD_CONTEXT_SPARC:
+      delete context_.ctx_sparc;
+      break;
+
+    case MD_CONTEXT_ARM:
+      delete context_.arm;
+      break;
+
+    case MD_CONTEXT_ARM64:
+      delete context_.arm64;
+      break;
+
+    case MD_CONTEXT_MIPS:
+      delete context_.ctx_mips;
+      break;
+
+    default:
+      // There is no context record (valid_ is false) or there's a
+      // context record for an unknown CPU (shouldn't happen, only known
+      // records are stored by Read).
+      break;
+  }
+
+  context_flags_ = 0;
+  context_.base = NULL;
+}
+
+void DumpContext::Print() {
+  if (!valid_) {
+    BPLOG(ERROR) << "DumpContext cannot print invalid data";
+    return;
+  }
+
+  switch (GetContextCPU()) {
+    case MD_CONTEXT_X86: {
+      const MDRawContextX86* context_x86 = GetContextX86();
+      printf("MDRawContextX86\n");
+      printf("  context_flags                = 0x%x\n",
+             context_x86->context_flags);
+      printf("  dr0                          = 0x%x\n", context_x86->dr0);
+      printf("  dr1                          = 0x%x\n", context_x86->dr1);
+      printf("  dr2                          = 0x%x\n", context_x86->dr2);
+      printf("  dr3                          = 0x%x\n", context_x86->dr3);
+      printf("  dr6                          = 0x%x\n", context_x86->dr6);
+      printf("  dr7                          = 0x%x\n", context_x86->dr7);
+      printf("  float_save.control_word      = 0x%x\n",
+             context_x86->float_save.control_word);
+      printf("  float_save.status_word       = 0x%x\n",
+             context_x86->float_save.status_word);
+      printf("  float_save.tag_word          = 0x%x\n",
+             context_x86->float_save.tag_word);
+      printf("  float_save.error_offset      = 0x%x\n",
+             context_x86->float_save.error_offset);
+      printf("  float_save.error_selector    = 0x%x\n",
+             context_x86->float_save.error_selector);
+      printf("  float_save.data_offset       = 0x%x\n",
+             context_x86->float_save.data_offset);
+      printf("  float_save.data_selector     = 0x%x\n",
+             context_x86->float_save.data_selector);
+      printf("  float_save.register_area[%2d] = 0x",
+             MD_FLOATINGSAVEAREA_X86_REGISTERAREA_SIZE);
+      for (unsigned int register_index = 0;
+           register_index < MD_FLOATINGSAVEAREA_X86_REGISTERAREA_SIZE;
+           ++register_index) {
+        printf("%02x", context_x86->float_save.register_area[register_index]);
+      }
+      printf("\n");
+      printf("  float_save.cr0_npx_state     = 0x%x\n",
+             context_x86->float_save.cr0_npx_state);
+      printf("  gs                           = 0x%x\n", context_x86->gs);
+      printf("  fs                           = 0x%x\n", context_x86->fs);
+      printf("  es                           = 0x%x\n", context_x86->es);
+      printf("  ds                           = 0x%x\n", context_x86->ds);
+      printf("  edi                          = 0x%x\n", context_x86->edi);
+      printf("  esi                          = 0x%x\n", context_x86->esi);
+      printf("  ebx                          = 0x%x\n", context_x86->ebx);
+      printf("  edx                          = 0x%x\n", context_x86->edx);
+      printf("  ecx                          = 0x%x\n", context_x86->ecx);
+      printf("  eax                          = 0x%x\n", context_x86->eax);
+      printf("  ebp                          = 0x%x\n", context_x86->ebp);
+      printf("  eip                          = 0x%x\n", context_x86->eip);
+      printf("  cs                           = 0x%x\n", context_x86->cs);
+      printf("  eflags                       = 0x%x\n", context_x86->eflags);
+      printf("  esp                          = 0x%x\n", context_x86->esp);
+      printf("  ss                           = 0x%x\n", context_x86->ss);
+      printf("  extended_registers[%3d]      = 0x",
+             MD_CONTEXT_X86_EXTENDED_REGISTERS_SIZE);
+      for (unsigned int register_index = 0;
+           register_index < MD_CONTEXT_X86_EXTENDED_REGISTERS_SIZE;
+           ++register_index) {
+        printf("%02x", context_x86->extended_registers[register_index]);
+      }
+      printf("\n\n");
+
+      break;
+    }
+
+    case MD_CONTEXT_PPC: {
+      const MDRawContextPPC* context_ppc = GetContextPPC();
+      printf("MDRawContextPPC\n");
+      printf("  context_flags            = 0x%x\n",
+             context_ppc->context_flags);
+      printf("  srr0                     = 0x%x\n", context_ppc->srr0);
+      printf("  srr1                     = 0x%x\n", context_ppc->srr1);
+      for (unsigned int gpr_index = 0;
+           gpr_index < MD_CONTEXT_PPC_GPR_COUNT;
+           ++gpr_index) {
+        printf("  gpr[%2d]                  = 0x%x\n",
+               gpr_index, context_ppc->gpr[gpr_index]);
+      }
+      printf("  cr                       = 0x%x\n", context_ppc->cr);
+      printf("  xer                      = 0x%x\n", context_ppc->xer);
+      printf("  lr                       = 0x%x\n", context_ppc->lr);
+      printf("  ctr                      = 0x%x\n", context_ppc->ctr);
+      printf("  mq                       = 0x%x\n", context_ppc->mq);
+      printf("  vrsave                   = 0x%x\n", context_ppc->vrsave);
+      for (unsigned int fpr_index = 0;
+           fpr_index < MD_FLOATINGSAVEAREA_PPC_FPR_COUNT;
+           ++fpr_index) {
+        printf("  float_save.fpregs[%2d]    = 0x%" PRIx64 "\n",
+               fpr_index, context_ppc->float_save.fpregs[fpr_index]);
+      }
+      printf("  float_save.fpscr         = 0x%x\n",
+             context_ppc->float_save.fpscr);
+      // TODO(mmentovai): print the 128-bit quantities in
+      // context_ppc->vector_save.  This isn't done yet because printf
+      // doesn't support 128-bit quantities, and printing them using
+      // PRIx64 as two 64-bit quantities requires knowledge of the CPU's
+      // byte ordering.
+      printf("  vector_save.save_vrvalid = 0x%x\n",
+             context_ppc->vector_save.save_vrvalid);
+      printf("\n");
+
+      break;
+    }
+
+    case MD_CONTEXT_PPC64: {
+      const MDRawContextPPC64* context_ppc64 = GetContextPPC64();
+      printf("MDRawContextPPC64\n");
+      printf("  context_flags            = 0x%" PRIx64 "\n",
+             context_ppc64->context_flags);
+      printf("  srr0                     = 0x%" PRIx64 "\n",
+             context_ppc64->srr0);
+      printf("  srr1                     = 0x%" PRIx64 "\n",
+             context_ppc64->srr1);
+      for (unsigned int gpr_index = 0;
+           gpr_index < MD_CONTEXT_PPC64_GPR_COUNT;
+           ++gpr_index) {
+        printf("  gpr[%2d]                  = 0x%" PRIx64 "\n",
+               gpr_index, context_ppc64->gpr[gpr_index]);
+      }
+      printf("  cr                       = 0x%" PRIx64 "\n", context_ppc64->cr);
+      printf("  xer                      = 0x%" PRIx64 "\n",
+             context_ppc64->xer);
+      printf("  lr                       = 0x%" PRIx64 "\n", context_ppc64->lr);
+      printf("  ctr                      = 0x%" PRIx64 "\n",
+             context_ppc64->ctr);
+      printf("  vrsave                   = 0x%" PRIx64 "\n",
+             context_ppc64->vrsave);
+      for (unsigned int fpr_index = 0;
+           fpr_index < MD_FLOATINGSAVEAREA_PPC_FPR_COUNT;
+           ++fpr_index) {
+        printf("  float_save.fpregs[%2d]    = 0x%" PRIx64 "\n",
+               fpr_index, context_ppc64->float_save.fpregs[fpr_index]);
+      }
+      printf("  float_save.fpscr         = 0x%x\n",
+             context_ppc64->float_save.fpscr);
+      // TODO(mmentovai): print the 128-bit quantities in
+      // context_ppc64->vector_save.  This isn't done yet because printf
+      // doesn't support 128-bit quantities, and printing them using
+      // PRIx64 as two 64-bit quantities requires knowledge of the CPU's
+      // byte ordering.
+      printf("  vector_save.save_vrvalid = 0x%x\n",
+             context_ppc64->vector_save.save_vrvalid);
+      printf("\n");
+
+      break;
+    }
+
+    case MD_CONTEXT_AMD64: {
+      const MDRawContextAMD64* context_amd64 = GetContextAMD64();
+      printf("MDRawContextAMD64\n");
+      printf("  p1_home       = 0x%" PRIx64 "\n",
+             context_amd64->p1_home);
+      printf("  p2_home       = 0x%" PRIx64 "\n",
+             context_amd64->p2_home);
+      printf("  p3_home       = 0x%" PRIx64 "\n",
+             context_amd64->p3_home);
+      printf("  p4_home       = 0x%" PRIx64 "\n",
+             context_amd64->p4_home);
+      printf("  p5_home       = 0x%" PRIx64 "\n",
+             context_amd64->p5_home);
+      printf("  p6_home       = 0x%" PRIx64 "\n",
+             context_amd64->p6_home);
+      printf("  context_flags = 0x%x\n",
+             context_amd64->context_flags);
+      printf("  mx_csr        = 0x%x\n",
+             context_amd64->mx_csr);
+      printf("  cs            = 0x%x\n", context_amd64->cs);
+      printf("  ds            = 0x%x\n", context_amd64->ds);
+      printf("  es            = 0x%x\n", context_amd64->es);
+      printf("  fs            = 0x%x\n", context_amd64->fs);
+      printf("  gs            = 0x%x\n", context_amd64->gs);
+      printf("  ss            = 0x%x\n", context_amd64->ss);
+      printf("  eflags        = 0x%x\n", context_amd64->eflags);
+      printf("  dr0           = 0x%" PRIx64 "\n", context_amd64->dr0);
+      printf("  dr1           = 0x%" PRIx64 "\n", context_amd64->dr1);
+      printf("  dr2           = 0x%" PRIx64 "\n", context_amd64->dr2);
+      printf("  dr3           = 0x%" PRIx64 "\n", context_amd64->dr3);
+      printf("  dr6           = 0x%" PRIx64 "\n", context_amd64->dr6);
+      printf("  dr7           = 0x%" PRIx64 "\n", context_amd64->dr7);
+      printf("  rax           = 0x%" PRIx64 "\n", context_amd64->rax);
+      printf("  rcx           = 0x%" PRIx64 "\n", context_amd64->rcx);
+      printf("  rdx           = 0x%" PRIx64 "\n", context_amd64->rdx);
+      printf("  rbx           = 0x%" PRIx64 "\n", context_amd64->rbx);
+      printf("  rsp           = 0x%" PRIx64 "\n", context_amd64->rsp);
+      printf("  rbp           = 0x%" PRIx64 "\n", context_amd64->rbp);
+      printf("  rsi           = 0x%" PRIx64 "\n", context_amd64->rsi);
+      printf("  rdi           = 0x%" PRIx64 "\n", context_amd64->rdi);
+      printf("  r8            = 0x%" PRIx64 "\n", context_amd64->r8);
+      printf("  r9            = 0x%" PRIx64 "\n", context_amd64->r9);
+      printf("  r10           = 0x%" PRIx64 "\n", context_amd64->r10);
+      printf("  r11           = 0x%" PRIx64 "\n", context_amd64->r11);
+      printf("  r12           = 0x%" PRIx64 "\n", context_amd64->r12);
+      printf("  r13           = 0x%" PRIx64 "\n", context_amd64->r13);
+      printf("  r14           = 0x%" PRIx64 "\n", context_amd64->r14);
+      printf("  r15           = 0x%" PRIx64 "\n", context_amd64->r15);
+      printf("  rip           = 0x%" PRIx64 "\n", context_amd64->rip);
+      // TODO: print xmm, vector, debug registers
+      printf("\n");
+      break;
+    }
+
+    case MD_CONTEXT_SPARC: {
+      const MDRawContextSPARC* context_sparc = GetContextSPARC();
+      printf("MDRawContextSPARC\n");
+      printf("  context_flags       = 0x%x\n",
+             context_sparc->context_flags);
+      for (unsigned int g_r_index = 0;
+           g_r_index < MD_CONTEXT_SPARC_GPR_COUNT;
+           ++g_r_index) {
+        printf("  g_r[%2d]             = 0x%" PRIx64 "\n",
+               g_r_index, context_sparc->g_r[g_r_index]);
+      }
+      printf("  ccr                 = 0x%" PRIx64 "\n", context_sparc->ccr);
+      printf("  pc                  = 0x%" PRIx64 "\n", context_sparc->pc);
+      printf("  npc                 = 0x%" PRIx64 "\n", context_sparc->npc);
+      printf("  y                   = 0x%" PRIx64 "\n", context_sparc->y);
+      printf("  asi                 = 0x%" PRIx64 "\n", context_sparc->asi);
+      printf("  fprs                = 0x%" PRIx64 "\n", context_sparc->fprs);
+
+      for (unsigned int fpr_index = 0;
+           fpr_index < MD_FLOATINGSAVEAREA_SPARC_FPR_COUNT;
+           ++fpr_index) {
+        printf("  float_save.regs[%2d] = 0x%" PRIx64 "\n",
+               fpr_index, context_sparc->float_save.regs[fpr_index]);
+      }
+      printf("  float_save.filler   = 0x%" PRIx64 "\n",
+             context_sparc->float_save.filler);
+      printf("  float_save.fsr      = 0x%" PRIx64 "\n",
+             context_sparc->float_save.fsr);
+      break;
+    }
+
+    case MD_CONTEXT_ARM: {
+      const MDRawContextARM* context_arm = GetContextARM();
+      printf("MDRawContextARM\n");
+      printf("  context_flags       = 0x%x\n",
+             context_arm->context_flags);
+      for (unsigned int ireg_index = 0;
+           ireg_index < MD_CONTEXT_ARM_GPR_COUNT;
+           ++ireg_index) {
+        printf("  iregs[%2d]            = 0x%x\n",
+               ireg_index, context_arm->iregs[ireg_index]);
+      }
+      printf("  cpsr                = 0x%x\n", context_arm->cpsr);
+      printf("  float_save.fpscr     = 0x%" PRIx64 "\n",
+             context_arm->float_save.fpscr);
+      for (unsigned int fpr_index = 0;
+           fpr_index < MD_FLOATINGSAVEAREA_ARM_FPR_COUNT;
+           ++fpr_index) {
+        printf("  float_save.regs[%2d] = 0x%" PRIx64 "\n",
+               fpr_index, context_arm->float_save.regs[fpr_index]);
+      }
+      for (unsigned int fpe_index = 0;
+           fpe_index < MD_FLOATINGSAVEAREA_ARM_FPEXTRA_COUNT;
+           ++fpe_index) {
+        printf("  float_save.extra[%2d] = 0x%" PRIx32 "\n",
+               fpe_index, context_arm->float_save.extra[fpe_index]);
+      }
+
+      break;
+    }
+
+    case MD_CONTEXT_ARM64: {
+      const MDRawContextARM64* context_arm64 = GetContextARM64();
+      printf("MDRawContextARM64\n");
+      printf("  context_flags       = 0x%" PRIx64 "\n",
+             context_arm64->context_flags);
+      for (unsigned int ireg_index = 0;
+           ireg_index < MD_CONTEXT_ARM64_GPR_COUNT;
+           ++ireg_index) {
+        printf("  iregs[%2d]            = 0x%" PRIx64 "\n",
+               ireg_index, context_arm64->iregs[ireg_index]);
+      }
+      printf("  cpsr                = 0x%x\n", context_arm64->cpsr);
+      printf("  float_save.fpsr     = 0x%x\n", context_arm64->float_save.fpsr);
+      printf("  float_save.fpcr     = 0x%x\n", context_arm64->float_save.fpcr);
+
+      for (unsigned int freg_index = 0;
+           freg_index < MD_FLOATINGSAVEAREA_ARM64_FPR_COUNT;
+           ++freg_index) {
+        uint128_struct fp_value = context_arm64->float_save.regs[freg_index];
+        printf("  float_save.regs[%2d]            = 0x%" PRIx64 "%" PRIx64 "\n",
+               freg_index, fp_value.high, fp_value.low);
+      }
+      break;
+    }
+
+    case MD_CONTEXT_MIPS: {
+      const MDRawContextMIPS* context_mips = GetContextMIPS();
+      printf("MDRawContextMIPS\n");
+      printf("  context_flags        = 0x%x\n",
+             context_mips->context_flags);
+      for (int ireg_index = 0;
+           ireg_index < MD_CONTEXT_MIPS_GPR_COUNT;
+           ++ireg_index) {
+        printf("  iregs[%2d]           = 0x%" PRIx64 "\n",
+               ireg_index, context_mips->iregs[ireg_index]);
+      }
+      printf("  mdhi                 = 0x%" PRIx64 "\n",
+             context_mips->mdhi);
+      printf("  mdlo                 = 0x%" PRIx64 "\n",
+             context_mips->mdhi);
+      for (int dsp_index = 0;
+           dsp_index < MD_CONTEXT_MIPS_DSP_COUNT;
+           ++dsp_index) {
+        printf("  hi[%1d]              = 0x%" PRIx32 "\n",
+               dsp_index, context_mips->hi[dsp_index]);
+        printf("  lo[%1d]              = 0x%" PRIx32 "\n",
+               dsp_index, context_mips->lo[dsp_index]);
+      }
+      printf("  dsp_control          = 0x%" PRIx32 "\n",
+             context_mips->dsp_control);
+      printf("  epc                  = 0x%" PRIx64 "\n",
+             context_mips->epc);
+      printf("  badvaddr             = 0x%" PRIx64 "\n",
+             context_mips->badvaddr);
+      printf("  status               = 0x%" PRIx32 "\n",
+             context_mips->status);
+      printf("  cause                = 0x%" PRIx32 "\n",
+             context_mips->cause);
+
+      for (int fpr_index = 0;
+           fpr_index < MD_FLOATINGSAVEAREA_MIPS_FPR_COUNT;
+           ++fpr_index) {
+        printf("  float_save.regs[%2d] = 0x%" PRIx64 "\n",
+               fpr_index, context_mips->float_save.regs[fpr_index]);
+      }
+      printf("  float_save.fpcsr     = 0x%" PRIx32 "\n",
+             context_mips->float_save.fpcsr);
+      printf("  float_save.fir       = 0x%" PRIx32 "\n",
+             context_mips->float_save.fir);
+      break;
+    }
+
+    default: {
+      break;
+    }
+  }
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/processor/dump_object.cc b/google-breakpad/src/processor/dump_object.cc
new file mode 100644
index 0000000..2c82b20
--- /dev/null
+++ b/google-breakpad/src/processor/dump_object.cc
@@ -0,0 +1,39 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// dump_object.cc: A base class for all mini/micro dump object.
+
+#include "google_breakpad/processor/dump_object.h"
+
+namespace google_breakpad {
+
+DumpObject::DumpObject() : valid_(false) {
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/processor/exploitability.cc b/google-breakpad/src/processor/exploitability.cc
new file mode 100644
index 0000000..384c499
--- /dev/null
+++ b/google-breakpad/src/processor/exploitability.cc
@@ -0,0 +1,110 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// exploitability_engine.cc: Generic exploitability engine.
+//
+// See exploitable_engine.h for documentation.
+//
+// Author: Cris Neckar
+
+
+#include <cassert>
+
+#include "common/scoped_ptr.h"
+#include "google_breakpad/processor/exploitability.h"
+#include "google_breakpad/processor/minidump.h"
+#include "google_breakpad/processor/process_state.h"
+#include "processor/exploitability_linux.h"
+#include "processor/exploitability_win.h"
+#include "processor/logging.h"
+
+namespace google_breakpad {
+
+Exploitability::Exploitability(Minidump *dump,
+                               ProcessState *process_state)
+    : dump_(dump),
+      process_state_(process_state) {}
+
+ExploitabilityRating Exploitability::CheckExploitability() {
+  return CheckPlatformExploitability();
+}
+
+Exploitability *Exploitability::ExploitabilityForPlatform(
+    Minidump *dump,
+    ProcessState *process_state) {
+  Exploitability *platform_exploitability = NULL;
+  MinidumpSystemInfo *minidump_system_info = dump->GetSystemInfo();
+  if (!minidump_system_info)
+    return NULL;
+
+  const MDRawSystemInfo *raw_system_info =
+    minidump_system_info->system_info();
+  if (!raw_system_info)
+    return NULL;
+
+  switch (raw_system_info->platform_id) {
+    case MD_OS_WIN32_NT:
+    case MD_OS_WIN32_WINDOWS: {
+      platform_exploitability = new ExploitabilityWin(dump, process_state);
+      break;
+    }
+    case MD_OS_LINUX: {
+      platform_exploitability = new ExploitabilityLinux(dump, process_state);
+      break;
+    }
+    case MD_OS_MAC_OS_X:
+    case MD_OS_IOS:
+    case MD_OS_UNIX:
+    case MD_OS_SOLARIS:
+    case MD_OS_ANDROID:
+    case MD_OS_PS3:
+    default: {
+      platform_exploitability = NULL;
+      break;
+    }
+  }
+
+  BPLOG_IF(ERROR, !platform_exploitability) <<
+    "No Exploitability module for platform: " <<
+    process_state->system_info()->os;
+  return platform_exploitability;
+}
+
+bool Exploitability::AddressIsAscii(uint64_t address) {
+  for (int i = 0; i < 8; i++) {
+    uint8_t byte = (address >> (8*i)) & 0xff;
+    if ((byte >= ' ' && byte <= '~') || byte == 0)
+      continue;
+    return false;
+  }
+  return true;
+}
+
+}  // namespace google_breakpad
+
diff --git a/google-breakpad/src/processor/exploitability_linux.cc b/google-breakpad/src/processor/exploitability_linux.cc
new file mode 100644
index 0000000..13ebad1
--- /dev/null
+++ b/google-breakpad/src/processor/exploitability_linux.cc
@@ -0,0 +1,86 @@
+// Copyright (c) 2013 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// exploitability_linux.cc: Linux specific exploitability engine.
+//
+// Provides a guess at the exploitability of the crash for the Linux
+// platform given a minidump and process_state.
+//
+// Author: Matthew Riley
+
+#include "processor/exploitability_linux.h"
+
+#include "google_breakpad/processor/process_state.h"
+#include "google_breakpad/processor/call_stack.h"
+#include "google_breakpad/processor/stack_frame.h"
+
+namespace {
+
+// This function in libc is called if the program was compiled with
+// -fstack-protector and a function's stack canary changes.
+const char kStackCheckFailureFunction[] = "__stack_chk_fail";
+
+// This function in libc is called if the program was compiled with
+// -D_FORTIFY_SOURCE=2, a function like strcpy() is called, and the runtime
+// can determine that the call would overflow the target buffer.
+const char kBoundsCheckFailureFunction[] = "__chk_fail";
+
+}  // namespace
+
+namespace google_breakpad {
+
+ExploitabilityLinux::ExploitabilityLinux(Minidump *dump,
+                                         ProcessState *process_state)
+    : Exploitability(dump, process_state) { }
+
+ExploitabilityRating ExploitabilityLinux::CheckPlatformExploitability() {
+  // Check the crashing thread for functions suggesting a buffer overflow or
+  // stack smash.
+  if (process_state_->requesting_thread() != -1) {
+    CallStack* crashing_thread =
+        process_state_->threads()->at(process_state_->requesting_thread());
+    const vector<StackFrame*>& crashing_thread_frames =
+        *crashing_thread->frames();
+    for (size_t i = 0; i < crashing_thread_frames.size(); ++i) {
+      if (crashing_thread_frames[i]->function_name ==
+          kStackCheckFailureFunction) {
+        return EXPLOITABILITY_HIGH;
+      }
+
+      if (crashing_thread_frames[i]->function_name ==
+          kBoundsCheckFailureFunction) {
+        return EXPLOITABILITY_HIGH;
+      }
+    }
+  }
+
+  return EXPLOITABILITY_NONE;
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/processor/exploitability_linux.h b/google-breakpad/src/processor/exploitability_linux.h
new file mode 100644
index 0000000..c63c045
--- /dev/null
+++ b/google-breakpad/src/processor/exploitability_linux.h
@@ -0,0 +1,55 @@
+// Copyright (c) 2013 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// exploitability_linux.h: Linux specific exploitability engine.
+//
+// Provides a guess at the exploitability of the crash for the Linux
+// platform given a minidump and process_state.
+//
+// Author: Matthew Riley
+
+#ifndef GOOGLE_BREAKPAD_PROCESSOR_EXPLOITABILITY_LINUX_H_
+#define GOOGLE_BREAKPAD_PROCESSOR_EXPLOITABILITY_LINUX_H_
+
+#include "google_breakpad/common/breakpad_types.h"
+#include "google_breakpad/processor/exploitability.h"
+
+namespace google_breakpad {
+
+class ExploitabilityLinux : public Exploitability {
+ public:
+  ExploitabilityLinux(Minidump *dump,
+                      ProcessState *process_state);
+
+  virtual ExploitabilityRating CheckPlatformExploitability();
+};
+
+}  // namespace google_breakpad
+
+#endif  // GOOGLE_BREAKPAD_PROCESSOR_EXPLOITABILITY_LINUX_H_
diff --git a/google-breakpad/src/processor/exploitability_unittest.cc b/google-breakpad/src/processor/exploitability_unittest.cc
new file mode 100644
index 0000000..72994d5
--- /dev/null
+++ b/google-breakpad/src/processor/exploitability_unittest.cc
@@ -0,0 +1,117 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
+
+#include <stdlib.h>
+#include <unistd.h>
+
+#include <string>
+
+#include "breakpad_googletest_includes.h"
+#include "common/using_std_string.h"
+#include "google_breakpad/processor/basic_source_line_resolver.h"
+#include "google_breakpad/processor/minidump_processor.h"
+#include "google_breakpad/processor/process_state.h"
+#include "processor/simple_symbol_supplier.h"
+
+namespace {
+
+using google_breakpad::BasicSourceLineResolver;
+using google_breakpad::MinidumpProcessor;
+using google_breakpad::ProcessState;
+using google_breakpad::SimpleSymbolSupplier;
+
+string TestDataDir() {
+  return string(getenv("srcdir") ? getenv("srcdir") : ".") +
+      "/src/processor/testdata";
+}
+
+// Find the given dump file in <srcdir>/src/processor/testdata, process it,
+// and get the exploitability rating. Returns EXPLOITABILITY_ERR_PROCESSING
+// if the crash dump can't be processed.
+google_breakpad::ExploitabilityRating
+ExploitabilityFor(const string& filename) {
+  SimpleSymbolSupplier supplier(TestDataDir() + "/symbols");
+  BasicSourceLineResolver resolver;
+  MinidumpProcessor processor(&supplier, &resolver, true);
+  ProcessState state;
+
+  string minidump_file = TestDataDir() + "/" + filename;
+
+  if (processor.Process(minidump_file, &state) !=
+      google_breakpad::PROCESS_OK) {
+    return google_breakpad::EXPLOITABILITY_ERR_PROCESSING;
+  }
+
+  return state.exploitability();
+}
+
+TEST(ExploitabilityTest, TestWindowsEngine) {
+  ASSERT_EQ(google_breakpad::EXPLOITABILITY_HIGH,
+            ExploitabilityFor("ascii_read_av.dmp"));
+  ASSERT_EQ(google_breakpad::EXPLOITABILITY_HIGH,
+            ExploitabilityFor("ascii_read_av_block_write.dmp"));
+  ASSERT_EQ(google_breakpad::EXPLOITABILITY_HIGH,
+            ExploitabilityFor("ascii_read_av_clobber_write.dmp"));
+  ASSERT_EQ(google_breakpad::EXPLOITABILITY_HIGH,
+            ExploitabilityFor("ascii_read_av_conditional.dmp"));
+  ASSERT_EQ(google_breakpad::EXPLOITABILITY_HIGH,
+            ExploitabilityFor("ascii_read_av_then_jmp.dmp"));
+  ASSERT_EQ(google_breakpad::EXPLOITABILITY_HIGH,
+            ExploitabilityFor("ascii_read_av_xchg_write.dmp"));
+  ASSERT_EQ(google_breakpad::EXPLOITABILITY_HIGH,
+            ExploitabilityFor("ascii_write_av.dmp"));
+  ASSERT_EQ(google_breakpad::EXPLOITABILITY_HIGH,
+            ExploitabilityFor("ascii_write_av_arg_to_call.dmp"));
+  ASSERT_EQ(google_breakpad::EXPLOITABILITY_NONE,
+            ExploitabilityFor("null_read_av.dmp"));
+  ASSERT_EQ(google_breakpad::EXPLOITABILITY_NONE,
+            ExploitabilityFor("null_write_av.dmp"));
+  ASSERT_EQ(google_breakpad::EXPLOITABILITY_NONE,
+            ExploitabilityFor("stack_exhaustion.dmp"));
+  ASSERT_EQ(google_breakpad::EXPLOITABILITY_HIGH,
+            ExploitabilityFor("exec_av_on_stack.dmp"));
+  ASSERT_EQ(google_breakpad::EXPLOITABILITY_MEDIUM,
+            ExploitabilityFor("write_av_non_null.dmp"));
+  ASSERT_EQ(google_breakpad::EXPLOITABILITY_LOW,
+            ExploitabilityFor("read_av_non_null.dmp"));
+  ASSERT_EQ(google_breakpad::EXPLOITABILITY_LOW,
+            ExploitabilityFor("read_av_clobber_write.dmp"));
+  ASSERT_EQ(google_breakpad::EXPLOITABILITY_LOW,
+            ExploitabilityFor("read_av_conditional.dmp"));
+}
+
+TEST(ExploitabilityTest, TestLinuxEngine) {
+  ASSERT_EQ(google_breakpad::EXPLOITABILITY_NONE,
+            ExploitabilityFor("linux_null_read_av.dmp"));
+  ASSERT_EQ(google_breakpad::EXPLOITABILITY_HIGH,
+            ExploitabilityFor("linux_overflow.dmp"));
+  ASSERT_EQ(google_breakpad::EXPLOITABILITY_HIGH,
+            ExploitabilityFor("linux_stacksmash.dmp"));
+}
+}
diff --git a/google-breakpad/src/processor/exploitability_win.cc b/google-breakpad/src/processor/exploitability_win.cc
new file mode 100644
index 0000000..8a444eb
--- /dev/null
+++ b/google-breakpad/src/processor/exploitability_win.cc
@@ -0,0 +1,287 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// exploitability_win.cc: Windows specific exploitability engine.
+//
+// Provides a guess at the exploitability of the crash for the Windows
+// platform given a minidump and process_state.
+//
+// Author: Cris Neckar
+
+#include <vector>
+
+#include "processor/exploitability_win.h"
+
+#include "common/scoped_ptr.h"
+#include "google_breakpad/common/minidump_exception_win32.h"
+#include "google_breakpad/processor/minidump.h"
+#include "processor/disassembler_x86.h"
+#include "processor/logging.h"
+
+#include "third_party/libdisasm/libdis.h"
+
+namespace google_breakpad {
+
+// The cutoff that we use to judge if and address is likely an offset
+// from various interesting addresses.
+static const uint64_t kProbableNullOffset = 4096;
+static const uint64_t kProbableStackOffset = 8192;
+
+// The various cutoffs for the different ratings.
+static const size_t kHighCutoff        = 100;
+static const size_t kMediumCutoff      = 80;
+static const size_t kLowCutoff         = 50;
+static const size_t kInterestingCutoff = 25;
+
+// Predefined incremental values for conditional weighting.
+static const size_t kTinyBump          = 5;
+static const size_t kSmallBump         = 20;
+static const size_t kMediumBump        = 50;
+static const size_t kLargeBump         = 70;
+static const size_t kHugeBump          = 90;
+
+// The maximum number of bytes to disassemble past the program counter.
+static const size_t kDisassembleBytesBeyondPC = 2048;
+
+ExploitabilityWin::ExploitabilityWin(Minidump *dump,
+                                     ProcessState *process_state)
+    : Exploitability(dump, process_state) { }
+
+ExploitabilityRating ExploitabilityWin::CheckPlatformExploitability() {
+  MinidumpException *exception = dump_->GetException();
+  if (!exception) {
+    BPLOG(INFO) << "Minidump does not have exception record.";
+    return EXPLOITABILITY_ERR_PROCESSING;
+  }
+
+  const MDRawExceptionStream *raw_exception = exception->exception();
+  if (!raw_exception) {
+    BPLOG(INFO) << "Could not obtain raw exception info.";
+    return EXPLOITABILITY_ERR_PROCESSING;
+  }
+
+  const MinidumpContext *context = exception->GetContext();
+  if (!context) {
+    BPLOG(INFO) << "Could not obtain exception context.";
+    return EXPLOITABILITY_ERR_PROCESSING;
+  }
+
+  MinidumpMemoryList *memory_list = dump_->GetMemoryList();
+  bool memory_available = true;
+  if (!memory_list) {
+    BPLOG(INFO) << "Minidump memory segments not available.";
+    memory_available = false;
+  }
+  uint64_t address = process_state_->crash_address();
+  uint32_t exception_code = raw_exception->exception_record.exception_code;
+
+  uint32_t exploitability_weight = 0;
+
+  uint64_t stack_ptr = 0;
+  uint64_t instruction_ptr = 0;
+
+  switch (context->GetContextCPU()) {
+    case MD_CONTEXT_X86:
+      stack_ptr = context->GetContextX86()->esp;
+      instruction_ptr = context->GetContextX86()->eip;
+      break;
+    case MD_CONTEXT_AMD64:
+      stack_ptr = context->GetContextAMD64()->rsp;
+      instruction_ptr = context->GetContextAMD64()->rip;
+      break;
+    default:
+      BPLOG(INFO) << "Unsupported architecture.";
+      return EXPLOITABILITY_ERR_PROCESSING;
+  }
+
+  // Check if we are executing on the stack.
+  if (instruction_ptr <= (stack_ptr + kProbableStackOffset) &&
+      instruction_ptr >= (stack_ptr - kProbableStackOffset))
+    exploitability_weight += kHugeBump;
+
+  switch (exception_code) {
+    // This is almost certainly recursion.
+    case MD_EXCEPTION_CODE_WIN_STACK_OVERFLOW:
+      exploitability_weight += kTinyBump;
+      break;
+
+    // These exceptions tend to be benign and we can generally ignore them.
+    case MD_EXCEPTION_CODE_WIN_INTEGER_DIVIDE_BY_ZERO:
+    case MD_EXCEPTION_CODE_WIN_INTEGER_OVERFLOW:
+    case MD_EXCEPTION_CODE_WIN_FLOAT_DIVIDE_BY_ZERO:
+    case MD_EXCEPTION_CODE_WIN_FLOAT_INEXACT_RESULT:
+    case MD_EXCEPTION_CODE_WIN_FLOAT_OVERFLOW:
+    case MD_EXCEPTION_CODE_WIN_FLOAT_UNDERFLOW:
+    case MD_EXCEPTION_CODE_WIN_IN_PAGE_ERROR:
+      exploitability_weight += kTinyBump;
+      break;
+
+    // These exceptions will typically mean that we have jumped where we
+    // shouldn't.
+    case MD_EXCEPTION_CODE_WIN_ILLEGAL_INSTRUCTION:
+    case MD_EXCEPTION_CODE_WIN_FLOAT_INVALID_OPERATION:
+    case MD_EXCEPTION_CODE_WIN_PRIVILEGED_INSTRUCTION:
+      exploitability_weight += kLargeBump;
+      break;
+
+    // These represent bugs in exception handlers.
+    case MD_EXCEPTION_CODE_WIN_INVALID_DISPOSITION:
+    case MD_EXCEPTION_CODE_WIN_NONCONTINUABLE_EXCEPTION:
+      exploitability_weight += kSmallBump;
+      break;
+
+    case MD_EXCEPTION_CODE_WIN_HEAP_CORRUPTION:
+    case MD_EXCEPTION_CODE_WIN_STACK_BUFFER_OVERRUN:
+      exploitability_weight += kHugeBump;
+      break;
+
+    case MD_EXCEPTION_CODE_WIN_GUARD_PAGE_VIOLATION:
+      exploitability_weight += kLargeBump;
+      break;
+
+    case MD_EXCEPTION_CODE_WIN_ACCESS_VIOLATION:
+      bool near_null = (address <= kProbableNullOffset);
+      bool bad_read = false;
+      bool bad_write = false;
+      if (raw_exception->exception_record.number_parameters >= 1) {
+        MDAccessViolationTypeWin av_type =
+            static_cast<MDAccessViolationTypeWin>
+            (raw_exception->exception_record.exception_information[0]);
+        switch (av_type) {
+          case MD_ACCESS_VIOLATION_WIN_READ:
+            bad_read = true;
+            if (near_null)
+              exploitability_weight += kSmallBump;
+            else
+              exploitability_weight += kMediumBump;
+            break;
+          case MD_ACCESS_VIOLATION_WIN_WRITE:
+            bad_write = true;
+            if (near_null)
+              exploitability_weight += kSmallBump;
+            else
+              exploitability_weight += kHugeBump;
+            break;
+          case MD_ACCESS_VIOLATION_WIN_EXEC:
+            if (near_null)
+              exploitability_weight += kSmallBump;
+            else
+              exploitability_weight += kHugeBump;
+            break;
+          default:
+            BPLOG(INFO) << "Unrecognized access violation type.";
+            return EXPLOITABILITY_ERR_PROCESSING;
+            break;
+        }
+        MinidumpMemoryRegion *instruction_region = 0;
+        if (memory_available) {
+          instruction_region =
+              memory_list->GetMemoryRegionForAddress(instruction_ptr);
+        }
+        if (!near_null && instruction_region &&
+            context->GetContextCPU() == MD_CONTEXT_X86 &&
+            (bad_read || bad_write)) {
+          // Perform checks related to memory around instruction pointer.
+          uint32_t memory_offset =
+              instruction_ptr - instruction_region->GetBase();
+          uint32_t available_memory =
+              instruction_region->GetSize() - memory_offset;
+          available_memory = available_memory > kDisassembleBytesBeyondPC ?
+              kDisassembleBytesBeyondPC : available_memory;
+          if (available_memory) {
+            const uint8_t *raw_memory =
+                instruction_region->GetMemory() + memory_offset;
+            DisassemblerX86 disassembler(raw_memory,
+                                         available_memory,
+                                         instruction_ptr);
+            disassembler.NextInstruction();
+            if (bad_read)
+              disassembler.setBadRead();
+            else
+              disassembler.setBadWrite();
+            if (disassembler.currentInstructionValid()) {
+              // Check if the faulting instruction falls into one of
+              // several interesting groups.
+              switch (disassembler.currentInstructionGroup()) {
+                case libdis::insn_controlflow:
+                  exploitability_weight += kLargeBump;
+                  break;
+                case libdis::insn_string:
+                  exploitability_weight += kHugeBump;
+                  break;
+                default:
+                  break;
+              }
+              // Loop the disassembler through the code and check if it
+              // IDed any interesting conditions in the near future.
+              // Multiple flags may be set so treat each equally.
+              while (disassembler.NextInstruction() &&
+                     disassembler.currentInstructionValid() &&
+                     !disassembler.endOfBlock())
+                continue;
+              if (disassembler.flags() & DISX86_BAD_BRANCH_TARGET)
+                exploitability_weight += kLargeBump;
+              if (disassembler.flags() & DISX86_BAD_ARGUMENT_PASSED)
+                exploitability_weight += kTinyBump;
+              if (disassembler.flags() & DISX86_BAD_WRITE)
+                exploitability_weight += kMediumBump;
+              if (disassembler.flags() & DISX86_BAD_BLOCK_WRITE)
+                exploitability_weight += kMediumBump;
+              if (disassembler.flags() & DISX86_BAD_READ)
+                exploitability_weight += kTinyBump;
+              if (disassembler.flags() & DISX86_BAD_BLOCK_READ)
+                exploitability_weight += kTinyBump;
+              if (disassembler.flags() & DISX86_BAD_COMPARISON)
+                exploitability_weight += kTinyBump;
+            }
+          }
+        }
+        if (!near_null && AddressIsAscii(address))
+          exploitability_weight += kMediumBump;
+      } else {
+        BPLOG(INFO) << "Access violation type parameter missing.";
+        return EXPLOITABILITY_ERR_PROCESSING;
+      }
+  }
+
+  // Based on the calculated weight we return a simplified classification.
+  BPLOG(INFO) << "Calculated exploitability weight: " << exploitability_weight;
+  if (exploitability_weight >= kHighCutoff)
+    return EXPLOITABILITY_HIGH;
+  if (exploitability_weight >= kMediumCutoff)
+    return EXPLOITABLITY_MEDIUM;
+  if (exploitability_weight >= kLowCutoff)
+    return EXPLOITABILITY_LOW;
+  if (exploitability_weight >= kInterestingCutoff)
+    return EXPLOITABILITY_INTERESTING;
+
+  return EXPLOITABILITY_NONE;
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/processor/exploitability_win.h b/google-breakpad/src/processor/exploitability_win.h
new file mode 100644
index 0000000..4e08aef
--- /dev/null
+++ b/google-breakpad/src/processor/exploitability_win.h
@@ -0,0 +1,55 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// exploitability_win.h: Windows specific exploitability engine.
+//
+// Provides a guess at the exploitability of the crash for the Windows
+// platform given a minidump and process_state.
+//
+// Author: Cris Neckar
+
+#ifndef GOOGLE_BREAKPAD_PROCESSOR_EXPLOITABILITY_WIN_H_
+#define GOOGLE_BREAKPAD_PROCESSOR_EXPLOITABILITY_WIN_H_
+
+#include "google_breakpad/common/breakpad_types.h"
+#include "google_breakpad/processor/exploitability.h"
+
+namespace google_breakpad {
+
+class ExploitabilityWin : public Exploitability {
+  public:
+    ExploitabilityWin(Minidump *dump,
+                      ProcessState *process_state);
+
+    virtual ExploitabilityRating CheckPlatformExploitability();
+};
+
+}  // namespace google_breakpad
+
+#endif  // GOOGLE_BREAKPAD_PROCESSOR_EXPLOITABILITY_WIN_H_
diff --git a/google-breakpad/src/processor/fast_source_line_resolver.cc b/google-breakpad/src/processor/fast_source_line_resolver.cc
new file mode 100644
index 0000000..4a3d000
--- /dev/null
+++ b/google-breakpad/src/processor/fast_source_line_resolver.cc
@@ -0,0 +1,275 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// fast_source_line_resolver.cc: FastSourceLineResolver is a concrete class that
+// implements SourceLineResolverInterface.  Both FastSourceLineResolver and
+// BasicSourceLineResolver inherit from SourceLineResolverBase class to reduce
+// code redundancy.
+//
+// See fast_source_line_resolver.h and fast_source_line_resolver_types.h
+// for more documentation.
+//
+// Author: Siyang Xie (lambxsy@google.com)
+
+#include "google_breakpad/processor/fast_source_line_resolver.h"
+#include "processor/fast_source_line_resolver_types.h"
+
+#include <map>
+#include <string>
+#include <utility>
+
+#include "common/scoped_ptr.h"
+#include "common/using_std_string.h"
+#include "processor/module_factory.h"
+#include "processor/simple_serializer-inl.h"
+
+using std::map;
+using std::make_pair;
+
+namespace google_breakpad {
+
+FastSourceLineResolver::FastSourceLineResolver()
+  : SourceLineResolverBase(new FastModuleFactory) { }
+
+bool FastSourceLineResolver::ShouldDeleteMemoryBufferAfterLoadModule() {
+  return false;
+}
+
+void FastSourceLineResolver::Module::LookupAddress(StackFrame *frame) const {
+  MemAddr address = frame->instruction - frame->module->base_address();
+
+  // First, look for a FUNC record that covers address. Use
+  // RetrieveNearestRange instead of RetrieveRange so that, if there
+  // is no such function, we can use the next function to bound the
+  // extent of the PUBLIC symbol we find, below. This does mean we
+  // need to check that address indeed falls within the function we
+  // find; do the range comparison in an overflow-friendly way.
+  scoped_ptr<Function> func(new Function);
+  const Function* func_ptr = 0;
+  scoped_ptr<PublicSymbol> public_symbol(new PublicSymbol);
+  const PublicSymbol* public_symbol_ptr = 0;
+  MemAddr function_base;
+  MemAddr function_size;
+  MemAddr public_address;
+
+  if (functions_.RetrieveNearestRange(address, func_ptr,
+                                      &function_base, &function_size) &&
+      address >= function_base && address - function_base < function_size) {
+    func.get()->CopyFrom(func_ptr);
+    frame->function_name = func->name;
+    frame->function_base = frame->module->base_address() + function_base;
+
+    scoped_ptr<Line> line(new Line);
+    const Line* line_ptr = 0;
+    MemAddr line_base;
+    if (func->lines.RetrieveRange(address, line_ptr, &line_base, NULL)) {
+      line.get()->CopyFrom(line_ptr);
+      FileMap::iterator it = files_.find(line->source_file_id);
+      if (it != files_.end()) {
+        frame->source_file_name =
+            files_.find(line->source_file_id).GetValuePtr();
+      }
+      frame->source_line = line->line;
+      frame->source_line_base = frame->module->base_address() + line_base;
+    }
+  } else if (public_symbols_.Retrieve(address,
+                                      public_symbol_ptr, &public_address) &&
+             (!func_ptr || public_address > function_base)) {
+    public_symbol.get()->CopyFrom(public_symbol_ptr);
+    frame->function_name = public_symbol->name;
+    frame->function_base = frame->module->base_address() + public_address;
+  }
+}
+
+// WFI: WindowsFrameInfo.
+// Returns a WFI object reading from a raw memory chunk of data
+WindowsFrameInfo FastSourceLineResolver::CopyWFI(const char *raw) {
+  const WindowsFrameInfo::StackInfoTypes type =
+     static_cast<const WindowsFrameInfo::StackInfoTypes>(
+         *reinterpret_cast<const int32_t*>(raw));
+
+  // The first 8 bytes of int data are unused.
+  // They correspond to "StackInfoTypes type_;" and "int valid;"
+  // data member of WFI.
+  const uint32_t *para_uint32 = reinterpret_cast<const uint32_t*>(
+      raw + 2 * sizeof(int32_t));
+
+  uint32_t prolog_size = para_uint32[0];;
+  uint32_t epilog_size = para_uint32[1];
+  uint32_t parameter_size = para_uint32[2];
+  uint32_t saved_register_size = para_uint32[3];
+  uint32_t local_size = para_uint32[4];
+  uint32_t max_stack_size = para_uint32[5];
+  const char *boolean = reinterpret_cast<const char*>(para_uint32 + 6);
+  bool allocates_base_pointer = (*boolean != 0);
+  string program_string = boolean + 1;
+
+  return WindowsFrameInfo(type,
+                          prolog_size,
+                          epilog_size,
+                          parameter_size,
+                          saved_register_size,
+                          local_size,
+                          max_stack_size,
+                          allocates_base_pointer,
+                          program_string);
+}
+
+// Loads a map from the given buffer in char* type.
+// Does NOT take ownership of mem_buffer.
+// In addition, treat mem_buffer as const char*.
+bool FastSourceLineResolver::Module::LoadMapFromMemory(
+    char *memory_buffer,
+    size_t memory_buffer_size) {
+  if (!memory_buffer) return false;
+
+  // Read the "is_corrupt" flag.
+  const char *mem_buffer = memory_buffer;
+  mem_buffer = SimpleSerializer<bool>::Read(mem_buffer, &is_corrupt_);
+
+  const uint32_t *map_sizes = reinterpret_cast<const uint32_t*>(mem_buffer);
+
+  unsigned int header_size = kNumberMaps_ * sizeof(unsigned int);
+
+  // offsets[]: an array of offset addresses (with respect to mem_buffer),
+  // for each "Static***Map" component of Module.
+  // "Static***Map": static version of std::map or map wrapper, i.e., StaticMap,
+  // StaticAddressMap, StaticContainedRangeMap, and StaticRangeMap.
+  unsigned int offsets[kNumberMaps_];
+  offsets[0] = header_size;
+  for (int i = 1; i < kNumberMaps_; ++i) {
+    offsets[i] = offsets[i - 1] + map_sizes[i - 1];
+  }
+
+  // Use pointers to construct Static*Map data members in Module:
+  int map_id = 0;
+  files_ = StaticMap<int, char>(mem_buffer + offsets[map_id++]);
+  functions_ =
+      StaticRangeMap<MemAddr, Function>(mem_buffer + offsets[map_id++]);
+  public_symbols_ =
+      StaticAddressMap<MemAddr, PublicSymbol>(mem_buffer + offsets[map_id++]);
+  for (int i = 0; i < WindowsFrameInfo::STACK_INFO_LAST; ++i)
+    windows_frame_info_[i] =
+        StaticContainedRangeMap<MemAddr, char>(mem_buffer + offsets[map_id++]);
+
+  cfi_initial_rules_ =
+      StaticRangeMap<MemAddr, char>(mem_buffer + offsets[map_id++]);
+  cfi_delta_rules_ = StaticMap<MemAddr, char>(mem_buffer + offsets[map_id++]);
+
+  return true;
+}
+
+WindowsFrameInfo *FastSourceLineResolver::Module::FindWindowsFrameInfo(
+    const StackFrame *frame) const {
+  MemAddr address = frame->instruction - frame->module->base_address();
+  scoped_ptr<WindowsFrameInfo> result(new WindowsFrameInfo());
+
+  // We only know about WindowsFrameInfo::STACK_INFO_FRAME_DATA and
+  // WindowsFrameInfo::STACK_INFO_FPO. Prefer them in this order.
+  // WindowsFrameInfo::STACK_INFO_FRAME_DATA is the newer type that
+  // includes its own program string.
+  // WindowsFrameInfo::STACK_INFO_FPO is the older type
+  // corresponding to the FPO_DATA struct. See stackwalker_x86.cc.
+  const char* frame_info_ptr;
+  if ((windows_frame_info_[WindowsFrameInfo::STACK_INFO_FRAME_DATA]
+       .RetrieveRange(address, frame_info_ptr))
+      || (windows_frame_info_[WindowsFrameInfo::STACK_INFO_FPO]
+          .RetrieveRange(address, frame_info_ptr))) {
+    result->CopyFrom(CopyWFI(frame_info_ptr));
+    return result.release();
+  }
+
+  // Even without a relevant STACK line, many functions contain
+  // information about how much space their parameters consume on the
+  // stack. Use RetrieveNearestRange instead of RetrieveRange, so that
+  // we can use the function to bound the extent of the PUBLIC symbol,
+  // below. However, this does mean we need to check that ADDRESS
+  // falls within the retrieved function's range; do the range
+  // comparison in an overflow-friendly way.
+  scoped_ptr<Function> function(new Function);
+  const Function* function_ptr = 0;
+  MemAddr function_base, function_size;
+  if (functions_.RetrieveNearestRange(address, function_ptr,
+                                      &function_base, &function_size) &&
+      address >= function_base && address - function_base < function_size) {
+    function.get()->CopyFrom(function_ptr);
+    result->parameter_size = function->parameter_size;
+    result->valid |= WindowsFrameInfo::VALID_PARAMETER_SIZE;
+    return result.release();
+  }
+
+  // PUBLIC symbols might have a parameter size. Use the function we
+  // found above to limit the range the public symbol covers.
+  scoped_ptr<PublicSymbol> public_symbol(new PublicSymbol);
+  const PublicSymbol* public_symbol_ptr = 0;
+  MemAddr public_address;
+  if (public_symbols_.Retrieve(address, public_symbol_ptr, &public_address) &&
+      (!function_ptr || public_address > function_base)) {
+    public_symbol.get()->CopyFrom(public_symbol_ptr);
+    result->parameter_size = public_symbol->parameter_size;
+  }
+
+  return NULL;
+}
+
+CFIFrameInfo *FastSourceLineResolver::Module::FindCFIFrameInfo(
+    const StackFrame *frame) const {
+  MemAddr address = frame->instruction - frame->module->base_address();
+  MemAddr initial_base, initial_size;
+  const char* initial_rules = NULL;
+
+  // Find the initial rule whose range covers this address. That
+  // provides an initial set of register recovery rules. Then, walk
+  // forward from the initial rule's starting address to frame's
+  // instruction address, applying delta rules.
+  if (!cfi_initial_rules_.RetrieveRange(address, initial_rules,
+                                        &initial_base, &initial_size)) {
+    return NULL;
+  }
+
+  // Create a frame info structure, and populate it with the rules from
+  // the STACK CFI INIT record.
+  scoped_ptr<CFIFrameInfo> rules(new CFIFrameInfo());
+  if (!ParseCFIRuleSet(initial_rules, rules.get()))
+    return NULL;
+
+  // Find the first delta rule that falls within the initial rule's range.
+  StaticMap<MemAddr, char>::iterator delta =
+    cfi_delta_rules_.lower_bound(initial_base);
+
+  // Apply delta rules up to and including the frame's address.
+  while (delta != cfi_delta_rules_.end() && delta.GetKey() <= address) {
+    ParseCFIRuleSet(delta.GetValuePtr(), rules.get());
+    delta++;
+  }
+
+  return rules.release();
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/processor/fast_source_line_resolver_types.h b/google-breakpad/src/processor/fast_source_line_resolver_types.h
new file mode 100644
index 0000000..2c01047
--- /dev/null
+++ b/google-breakpad/src/processor/fast_source_line_resolver_types.h
@@ -0,0 +1,185 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// fast_source_line_resolver_types.h: definition of nested classes/structs in
+// FastSourceLineResolver.  It moves the definitions out of
+// fast_source_line_resolver.cc, so that other classes could have access
+// to these private nested types without including fast_source_line_resolver.cc
+//
+// Author: lambxsy@google.com (Siyang Xie)
+
+#ifndef PROCESSOR_FAST_SOURCE_LINE_RESOLVER_TYPES_H__
+#define PROCESSOR_FAST_SOURCE_LINE_RESOLVER_TYPES_H__
+
+#include "google_breakpad/processor/fast_source_line_resolver.h"
+#include "processor/source_line_resolver_base_types.h"
+
+#include <map>
+#include <string>
+
+#include "google_breakpad/processor/stack_frame.h"
+#include "processor/cfi_frame_info.h"
+#include "processor/static_address_map-inl.h"
+#include "processor/static_contained_range_map-inl.h"
+#include "processor/static_map.h"
+#include "processor/static_range_map-inl.h"
+#include "processor/windows_frame_info.h"
+
+namespace google_breakpad {
+
+struct FastSourceLineResolver::Line : public SourceLineResolverBase::Line {
+  void CopyFrom(const Line *line_ptr) {
+    const char *raw = reinterpret_cast<const char*>(line_ptr);
+    CopyFrom(raw);
+  }
+
+  // De-serialize the memory data of a Line.
+  void CopyFrom(const char *raw) {
+    address = *(reinterpret_cast<const MemAddr*>(raw));
+    size = *(reinterpret_cast<const MemAddr*>(raw + sizeof(address)));
+    source_file_id = *(reinterpret_cast<const int32_t *>(
+        raw + 2 * sizeof(address)));
+    line = *(reinterpret_cast<const int32_t*>(
+        raw + 2 * sizeof(address) + sizeof(source_file_id)));
+  }
+};
+
+struct FastSourceLineResolver::Function :
+public SourceLineResolverBase::Function {
+  void CopyFrom(const Function *func_ptr) {
+    const char *raw = reinterpret_cast<const char*>(func_ptr);
+    CopyFrom(raw);
+  }
+
+  // De-serialize the memory data of a Function.
+  void CopyFrom(const char *raw) {
+    size_t name_size = strlen(raw) + 1;
+    name = raw;
+    address = *(reinterpret_cast<const MemAddr*>(raw + name_size));
+    size = *(reinterpret_cast<const MemAddr*>(
+        raw + name_size + sizeof(MemAddr)));
+    parameter_size = *(reinterpret_cast<const int32_t*>(
+        raw + name_size + 2 * sizeof(MemAddr)));
+    lines = StaticRangeMap<MemAddr, Line>(
+        raw + name_size + 2 * sizeof(MemAddr) + sizeof(int32_t));
+  }
+
+  StaticRangeMap<MemAddr, Line> lines;
+};
+
+struct FastSourceLineResolver::PublicSymbol :
+public SourceLineResolverBase::PublicSymbol {
+  void CopyFrom(const PublicSymbol *public_symbol_ptr) {
+    const char *raw = reinterpret_cast<const char*>(public_symbol_ptr);
+    CopyFrom(raw);
+  }
+
+  // De-serialize the memory data of a PublicSymbol.
+  void CopyFrom(const char *raw) {
+    size_t name_size = strlen(raw) + 1;
+    name = raw;
+    address = *(reinterpret_cast<const MemAddr*>(raw + name_size));
+    parameter_size = *(reinterpret_cast<const int32_t*>(
+        raw + name_size + sizeof(MemAddr)));
+  }
+};
+
+class FastSourceLineResolver::Module: public SourceLineResolverBase::Module {
+ public:
+  explicit Module(const string &name) : name_(name), is_corrupt_(false) { }
+  virtual ~Module() { }
+
+  // Looks up the given relative address, and fills the StackFrame struct
+  // with the result.
+  virtual void LookupAddress(StackFrame *frame) const;
+
+  // Loads a map from the given buffer in char* type.
+  virtual bool LoadMapFromMemory(char *memory_buffer,
+                                 size_t memory_buffer_size);
+
+  // Tells whether the loaded symbol data is corrupt.  Return value is
+  // undefined, if the symbol data hasn't been loaded yet.
+  virtual bool IsCorrupt() const { return is_corrupt_; }
+
+  // If Windows stack walking information is available covering ADDRESS,
+  // return a WindowsFrameInfo structure describing it. If the information
+  // is not available, returns NULL. A NULL return value does not indicate
+  // an error. The caller takes ownership of any returned WindowsFrameInfo
+  // object.
+  virtual WindowsFrameInfo *FindWindowsFrameInfo(const StackFrame *frame) const;
+
+  // If CFI stack walking information is available covering ADDRESS,
+  // return a CFIFrameInfo structure describing it. If the information
+  // is not available, return NULL. The caller takes ownership of any
+  // returned CFIFrameInfo object.
+  virtual CFIFrameInfo *FindCFIFrameInfo(const StackFrame *frame) const;
+
+  // Number of serialized map components of Module.
+  static const int kNumberMaps_ = 5 + WindowsFrameInfo::STACK_INFO_LAST;
+
+ private:
+  friend class FastSourceLineResolver;
+  friend class ModuleComparer;
+  typedef StaticMap<int, char> FileMap;
+
+  string name_;
+  StaticMap<int, char> files_;
+  StaticRangeMap<MemAddr, Function> functions_;
+  StaticAddressMap<MemAddr, PublicSymbol> public_symbols_;
+  bool is_corrupt_;
+
+  // Each element in the array is a ContainedRangeMap for a type
+  // listed in WindowsFrameInfoTypes. These are split by type because
+  // there may be overlaps between maps of different types, but some
+  // information is only available as certain types.
+  StaticContainedRangeMap<MemAddr, char>
+    windows_frame_info_[WindowsFrameInfo::STACK_INFO_LAST];
+
+  // DWARF CFI stack walking data. The Module stores the initial rule sets
+  // and rule deltas as strings, just as they appear in the symbol file:
+  // although the file may contain hundreds of thousands of STACK CFI
+  // records, walking a stack will only ever use a few of them, so it's
+  // best to delay parsing a record until it's actually needed.
+  //
+  // STACK CFI INIT records: for each range, an initial set of register
+  // recovery rules. The RangeMap's itself gives the starting and ending
+  // addresses.
+  StaticRangeMap<MemAddr, char> cfi_initial_rules_;
+
+  // STACK CFI records: at a given address, the changes to the register
+  // recovery rules that take effect at that address. The map key is the
+  // starting address; the ending address is the key of the next entry in
+  // this map, or the end of the range as given by the cfi_initial_rules_
+  // entry (which FindCFIFrameInfo looks up first).
+  StaticMap<MemAddr, char> cfi_delta_rules_;
+};
+
+}  // namespace google_breakpad
+
+#endif  // PROCESSOR_FAST_SOURCE_LINE_RESOLVER_TYPES_H__
diff --git a/google-breakpad/src/processor/fast_source_line_resolver_unittest.cc b/google-breakpad/src/processor/fast_source_line_resolver_unittest.cc
new file mode 100644
index 0000000..72632f8
--- /dev/null
+++ b/google-breakpad/src/processor/fast_source_line_resolver_unittest.cc
@@ -0,0 +1,489 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// fast_source_line_resolver_unittest.cc: Unit tests for FastSourceLineResolver.
+// Two different approaches for testing fast source line resolver:
+// First, use the same unit test data for basic source line resolver.
+// Second, read data from symbol files, load them as basic modules, and then
+// serialize them and load the serialized data as fast modules.  Then compare
+// modules to assure the fast module contains exactly the same data as
+// basic module.
+//
+// Author: Siyang Xie (lambxsy@google.com)
+
+#include <assert.h>
+#include <stdio.h>
+
+#include <sstream>
+#include <string>
+
+#include "breakpad_googletest_includes.h"
+#include "common/using_std_string.h"
+#include "google_breakpad/processor/code_module.h"
+#include "google_breakpad/processor/stack_frame.h"
+#include "google_breakpad/processor/memory_region.h"
+#include "processor/logging.h"
+#include "processor/module_serializer.h"
+#include "processor/module_comparer.h"
+
+namespace {
+
+using google_breakpad::SourceLineResolverBase;
+using google_breakpad::BasicSourceLineResolver;
+using google_breakpad::FastSourceLineResolver;
+using google_breakpad::ModuleSerializer;
+using google_breakpad::ModuleComparer;
+using google_breakpad::CFIFrameInfo;
+using google_breakpad::CodeModule;
+using google_breakpad::MemoryRegion;
+using google_breakpad::StackFrame;
+using google_breakpad::WindowsFrameInfo;
+using google_breakpad::linked_ptr;
+using google_breakpad::scoped_ptr;
+
+class TestCodeModule : public CodeModule {
+ public:
+  explicit TestCodeModule(string code_file) : code_file_(code_file) {}
+  virtual ~TestCodeModule() {}
+
+  virtual uint64_t base_address() const { return 0; }
+  virtual uint64_t size() const { return 0xb000; }
+  virtual string code_file() const { return code_file_; }
+  virtual string code_identifier() const { return ""; }
+  virtual string debug_file() const { return ""; }
+  virtual string debug_identifier() const { return ""; }
+  virtual string version() const { return ""; }
+  virtual const CodeModule* Copy() const {
+    return new TestCodeModule(code_file_);
+  }
+
+ private:
+  string code_file_;
+};
+
+// A mock memory region object, for use by the STACK CFI tests.
+class MockMemoryRegion: public MemoryRegion {
+  uint64_t GetBase() const { return 0x10000; }
+  uint32_t GetSize() const { return 0x01000; }
+  bool GetMemoryAtAddress(uint64_t address, uint8_t *value) const {
+    *value = address & 0xff;
+    return true;
+  }
+  bool GetMemoryAtAddress(uint64_t address, uint16_t *value) const {
+    *value = address & 0xffff;
+    return true;
+  }
+  bool GetMemoryAtAddress(uint64_t address, uint32_t *value) const {
+    switch (address) {
+      case 0x10008: *value = 0x98ecadc3; break;  // saved %ebx
+      case 0x1000c: *value = 0x878f7524; break;  // saved %esi
+      case 0x10010: *value = 0x6312f9a5; break;  // saved %edi
+      case 0x10014: *value = 0x10038;    break;  // caller's %ebp
+      case 0x10018: *value = 0xf6438648; break;  // return address
+      default: *value = 0xdeadbeef;      break;  // junk
+    }
+    return true;
+  }
+  bool GetMemoryAtAddress(uint64_t address, uint64_t *value) const {
+    *value = address;
+    return true;
+  }
+  void Print() const {
+    assert(false);
+  }
+};
+
+// Verify that, for every association in ACTUAL, EXPECTED has the same
+// association. (That is, ACTUAL's associations should be a subset of
+// EXPECTED's.) Also verify that ACTUAL has associations for ".ra" and
+// ".cfa".
+static bool VerifyRegisters(
+    const char *file, int line,
+    const CFIFrameInfo::RegisterValueMap<uint32_t> &expected,
+    const CFIFrameInfo::RegisterValueMap<uint32_t> &actual) {
+  CFIFrameInfo::RegisterValueMap<uint32_t>::const_iterator a;
+  a = actual.find(".cfa");
+  if (a == actual.end())
+    return false;
+  a = actual.find(".ra");
+  if (a == actual.end())
+    return false;
+  for (a = actual.begin(); a != actual.end(); a++) {
+    CFIFrameInfo::RegisterValueMap<uint32_t>::const_iterator e =
+      expected.find(a->first);
+    if (e == expected.end()) {
+      fprintf(stderr, "%s:%d: unexpected register '%s' recovered, value 0x%x\n",
+              file, line, a->first.c_str(), a->second);
+      return false;
+    }
+    if (e->second != a->second) {
+      fprintf(stderr,
+              "%s:%d: register '%s' recovered value was 0x%x, expected 0x%x\n",
+              file, line, a->first.c_str(), a->second, e->second);
+      return false;
+    }
+    // Don't complain if this doesn't recover all registers. Although
+    // the DWARF spec says that unmentioned registers are undefined,
+    // GCC uses omission to mean that they are unchanged.
+  }
+  return true;
+}
+
+static bool VerifyEmpty(const StackFrame &frame) {
+  if (frame.function_name.empty() &&
+      frame.source_file_name.empty() &&
+      frame.source_line == 0)
+    return true;
+  return false;
+}
+
+static void ClearSourceLineInfo(StackFrame *frame) {
+  frame->function_name.clear();
+  frame->module = NULL;
+  frame->source_file_name.clear();
+  frame->source_line = 0;
+}
+
+class TestFastSourceLineResolver : public ::testing::Test {
+ public:
+  void SetUp() {
+    testdata_dir = string(getenv("srcdir") ? getenv("srcdir") : ".") +
+                         "/src/processor/testdata";
+  }
+
+  string symbol_file(int file_index) {
+    std::stringstream ss;
+    ss << testdata_dir << "/module" << file_index << ".out";
+    return ss.str();
+  }
+
+  ModuleSerializer serializer;
+  BasicSourceLineResolver basic_resolver;
+  FastSourceLineResolver fast_resolver;
+  ModuleComparer module_comparer;
+
+  string testdata_dir;
+};
+
+// Test adapted from basic_source_line_resolver_unittest.
+TEST_F(TestFastSourceLineResolver, TestLoadAndResolve) {
+  TestCodeModule module1("module1");
+  ASSERT_TRUE(basic_resolver.LoadModule(&module1, symbol_file(1)));
+  ASSERT_TRUE(basic_resolver.HasModule(&module1));
+  // Convert module1 to fast_module:
+  ASSERT_TRUE(serializer.ConvertOneModule(
+      module1.code_file(), &basic_resolver, &fast_resolver));
+  ASSERT_TRUE(fast_resolver.HasModule(&module1));
+
+  TestCodeModule module2("module2");
+  ASSERT_TRUE(basic_resolver.LoadModule(&module2, symbol_file(2)));
+  ASSERT_TRUE(basic_resolver.HasModule(&module2));
+  // Convert module2 to fast_module:
+  ASSERT_TRUE(serializer.ConvertOneModule(
+      module2.code_file(), &basic_resolver, &fast_resolver));
+  ASSERT_TRUE(fast_resolver.HasModule(&module2));
+
+  StackFrame frame;
+  scoped_ptr<WindowsFrameInfo> windows_frame_info;
+  scoped_ptr<CFIFrameInfo> cfi_frame_info;
+  frame.instruction = 0x1000;
+  frame.module = NULL;
+  fast_resolver.FillSourceLineInfo(&frame);
+  ASSERT_FALSE(frame.module);
+  ASSERT_TRUE(frame.function_name.empty());
+  ASSERT_EQ(frame.function_base, 0U);
+  ASSERT_TRUE(frame.source_file_name.empty());
+  ASSERT_EQ(frame.source_line, 0);
+  ASSERT_EQ(frame.source_line_base, 0U);
+
+  frame.module = &module1;
+  fast_resolver.FillSourceLineInfo(&frame);
+  ASSERT_EQ(frame.function_name, "Function1_1");
+  ASSERT_TRUE(frame.module);
+  ASSERT_EQ(frame.module->code_file(), "module1");
+  ASSERT_EQ(frame.function_base, 0x1000U);
+  ASSERT_EQ(frame.source_file_name, "file1_1.cc");
+  ASSERT_EQ(frame.source_line, 44);
+  ASSERT_EQ(frame.source_line_base, 0x1000U);
+  windows_frame_info.reset(fast_resolver.FindWindowsFrameInfo(&frame));
+  ASSERT_TRUE(windows_frame_info.get());
+  ASSERT_FALSE(windows_frame_info->allocates_base_pointer);
+  ASSERT_EQ(windows_frame_info->program_string,
+            "$eip 4 + ^ = $esp $ebp 8 + = $ebp $ebp ^ =");
+
+  ClearSourceLineInfo(&frame);
+  frame.instruction = 0x800;
+  frame.module = &module1;
+  fast_resolver.FillSourceLineInfo(&frame);
+  ASSERT_TRUE(VerifyEmpty(frame));
+  windows_frame_info.reset(fast_resolver.FindWindowsFrameInfo(&frame));
+  ASSERT_FALSE(windows_frame_info.get());
+
+  frame.instruction = 0x1280;
+  fast_resolver.FillSourceLineInfo(&frame);
+  ASSERT_EQ(frame.function_name, "Function1_3");
+  ASSERT_TRUE(frame.source_file_name.empty());
+  ASSERT_EQ(frame.source_line, 0);
+  windows_frame_info.reset(fast_resolver.FindWindowsFrameInfo(&frame));
+  ASSERT_TRUE(windows_frame_info.get());
+  ASSERT_EQ(windows_frame_info->type_, WindowsFrameInfo::STACK_INFO_UNKNOWN);
+  ASSERT_FALSE(windows_frame_info->allocates_base_pointer);
+  ASSERT_TRUE(windows_frame_info->program_string.empty());
+
+  frame.instruction = 0x1380;
+  fast_resolver.FillSourceLineInfo(&frame);
+  ASSERT_EQ(frame.function_name, "Function1_4");
+  ASSERT_TRUE(frame.source_file_name.empty());
+  ASSERT_EQ(frame.source_line, 0);
+  windows_frame_info.reset(fast_resolver.FindWindowsFrameInfo(&frame));
+  ASSERT_TRUE(windows_frame_info.get());
+  ASSERT_EQ(windows_frame_info->type_, WindowsFrameInfo::STACK_INFO_FRAME_DATA);
+  ASSERT_FALSE(windows_frame_info->allocates_base_pointer);
+  ASSERT_FALSE(windows_frame_info->program_string.empty());
+
+  frame.instruction = 0x2000;
+  windows_frame_info.reset(fast_resolver.FindWindowsFrameInfo(&frame));
+  ASSERT_FALSE(windows_frame_info.get());
+
+  // module1 has STACK CFI records covering 3d40..3def;
+  // module2 has STACK CFI records covering 3df0..3e9f;
+  // check that FindCFIFrameInfo doesn't claim to find any outside those ranges.
+  frame.instruction = 0x3d3f;
+  frame.module = &module1;
+  cfi_frame_info.reset(fast_resolver.FindCFIFrameInfo(&frame));
+  ASSERT_FALSE(cfi_frame_info.get());
+
+  frame.instruction = 0x3e9f;
+  frame.module = &module1;
+  cfi_frame_info.reset(fast_resolver.FindCFIFrameInfo(&frame));
+  ASSERT_FALSE(cfi_frame_info.get());
+
+  CFIFrameInfo::RegisterValueMap<uint32_t> current_registers;
+  CFIFrameInfo::RegisterValueMap<uint32_t> caller_registers;
+  CFIFrameInfo::RegisterValueMap<uint32_t> expected_caller_registers;
+  MockMemoryRegion memory;
+
+  // Regardless of which instruction evaluation takes place at, it
+  // should produce the same values for the caller's registers.
+  expected_caller_registers[".cfa"] = 0x1001c;
+  expected_caller_registers[".ra"]  = 0xf6438648;
+  expected_caller_registers["$ebp"] = 0x10038;
+  expected_caller_registers["$ebx"] = 0x98ecadc3;
+  expected_caller_registers["$esi"] = 0x878f7524;
+  expected_caller_registers["$edi"] = 0x6312f9a5;
+
+  frame.instruction = 0x3d40;
+  frame.module = &module1;
+  current_registers.clear();
+  current_registers["$esp"] = 0x10018;
+  current_registers["$ebp"] = 0x10038;
+  current_registers["$ebx"] = 0x98ecadc3;
+  current_registers["$esi"] = 0x878f7524;
+  current_registers["$edi"] = 0x6312f9a5;
+  cfi_frame_info.reset(fast_resolver.FindCFIFrameInfo(&frame));
+  ASSERT_TRUE(cfi_frame_info.get());
+  ASSERT_TRUE(cfi_frame_info.get()
+              ->FindCallerRegs<uint32_t>(current_registers, memory,
+                                          &caller_registers));
+  ASSERT_TRUE(VerifyRegisters(__FILE__, __LINE__,
+                              expected_caller_registers, caller_registers));
+
+  frame.instruction = 0x3d41;
+  current_registers["$esp"] = 0x10014;
+  cfi_frame_info.reset(fast_resolver.FindCFIFrameInfo(&frame));
+  ASSERT_TRUE(cfi_frame_info.get());
+  ASSERT_TRUE(cfi_frame_info.get()
+              ->FindCallerRegs<uint32_t>(current_registers, memory,
+                                          &caller_registers));
+  ASSERT_TRUE(VerifyRegisters(__FILE__, __LINE__,
+                              expected_caller_registers, caller_registers));
+
+  frame.instruction = 0x3d43;
+  current_registers["$ebp"] = 0x10014;
+  cfi_frame_info.reset(fast_resolver.FindCFIFrameInfo(&frame));
+  ASSERT_TRUE(cfi_frame_info.get());
+  ASSERT_TRUE(cfi_frame_info.get()
+              ->FindCallerRegs<uint32_t>(current_registers, memory,
+                                          &caller_registers));
+  VerifyRegisters(__FILE__, __LINE__,
+                  expected_caller_registers, caller_registers);
+
+  frame.instruction = 0x3d54;
+  current_registers["$ebx"] = 0x6864f054U;
+  cfi_frame_info.reset(fast_resolver.FindCFIFrameInfo(&frame));
+  ASSERT_TRUE(cfi_frame_info.get());
+  ASSERT_TRUE(cfi_frame_info.get()
+              ->FindCallerRegs<uint32_t>(current_registers, memory,
+                                          &caller_registers));
+  VerifyRegisters(__FILE__, __LINE__,
+                  expected_caller_registers, caller_registers);
+
+  frame.instruction = 0x3d5a;
+  current_registers["$esi"] = 0x6285f79aU;
+  cfi_frame_info.reset(fast_resolver.FindCFIFrameInfo(&frame));
+  ASSERT_TRUE(cfi_frame_info.get());
+  ASSERT_TRUE(cfi_frame_info.get()
+              ->FindCallerRegs<uint32_t>(current_registers, memory,
+                                          &caller_registers));
+  VerifyRegisters(__FILE__, __LINE__,
+                  expected_caller_registers, caller_registers);
+
+  frame.instruction = 0x3d84;
+  current_registers["$edi"] = 0x64061449U;
+  cfi_frame_info.reset(fast_resolver.FindCFIFrameInfo(&frame));
+  ASSERT_TRUE(cfi_frame_info.get());
+  ASSERT_TRUE(cfi_frame_info.get()
+              ->FindCallerRegs<uint32_t>(current_registers, memory,
+                                          &caller_registers));
+  VerifyRegisters(__FILE__, __LINE__,
+                  expected_caller_registers, caller_registers);
+
+  frame.instruction = 0x2900;
+  frame.module = &module1;
+  fast_resolver.FillSourceLineInfo(&frame);
+  ASSERT_EQ(frame.function_name, string("PublicSymbol"));
+
+  frame.instruction = 0x4000;
+  frame.module = &module1;
+  fast_resolver.FillSourceLineInfo(&frame);
+  ASSERT_EQ(frame.function_name, string("LargeFunction"));
+
+  frame.instruction = 0x2181;
+  frame.module = &module2;
+  fast_resolver.FillSourceLineInfo(&frame);
+  ASSERT_EQ(frame.function_name, "Function2_2");
+  ASSERT_EQ(frame.function_base, 0x2170U);
+  ASSERT_TRUE(frame.module);
+  ASSERT_EQ(frame.module->code_file(), "module2");
+  ASSERT_EQ(frame.source_file_name, "file2_2.cc");
+  ASSERT_EQ(frame.source_line, 21);
+  ASSERT_EQ(frame.source_line_base, 0x2180U);
+  windows_frame_info.reset(fast_resolver.FindWindowsFrameInfo(&frame));
+  ASSERT_TRUE(windows_frame_info.get());
+  ASSERT_EQ(windows_frame_info->type_, WindowsFrameInfo::STACK_INFO_FRAME_DATA);
+  ASSERT_EQ(windows_frame_info->prolog_size, 1U);
+
+  frame.instruction = 0x216f;
+  fast_resolver.FillSourceLineInfo(&frame);
+  ASSERT_EQ(frame.function_name, "Public2_1");
+
+  ClearSourceLineInfo(&frame);
+  frame.instruction = 0x219f;
+  frame.module = &module2;
+  fast_resolver.FillSourceLineInfo(&frame);
+  ASSERT_TRUE(frame.function_name.empty());
+
+  frame.instruction = 0x21a0;
+  frame.module = &module2;
+  fast_resolver.FillSourceLineInfo(&frame);
+  ASSERT_EQ(frame.function_name, "Public2_2");
+}
+
+TEST_F(TestFastSourceLineResolver, TestInvalidLoads) {
+  TestCodeModule module3("module3");
+  ASSERT_TRUE(basic_resolver.LoadModule(&module3,
+                                        testdata_dir + "/module3_bad.out"));
+  ASSERT_TRUE(basic_resolver.HasModule(&module3));
+  ASSERT_TRUE(basic_resolver.IsModuleCorrupt(&module3));
+  // Convert module3 to fast_module:
+  ASSERT_TRUE(serializer.ConvertOneModule(module3.code_file(),
+                                          &basic_resolver,
+                                          &fast_resolver));
+  ASSERT_TRUE(fast_resolver.HasModule(&module3));
+  ASSERT_TRUE(fast_resolver.IsModuleCorrupt(&module3));
+
+  TestCodeModule module4("module4");
+  ASSERT_TRUE(basic_resolver.LoadModule(&module4,
+                                        testdata_dir + "/module4_bad.out"));
+  ASSERT_TRUE(basic_resolver.HasModule(&module4));
+  ASSERT_TRUE(basic_resolver.IsModuleCorrupt(&module4));
+  // Convert module4 to fast_module:
+  ASSERT_TRUE(serializer.ConvertOneModule(module4.code_file(),
+                                          &basic_resolver,
+                                          &fast_resolver));
+  ASSERT_TRUE(fast_resolver.HasModule(&module4));
+  ASSERT_TRUE(fast_resolver.IsModuleCorrupt(&module4));
+
+  TestCodeModule module5("module5");
+  ASSERT_FALSE(fast_resolver.LoadModule(&module5,
+                                        testdata_dir + "/invalid-filename"));
+  ASSERT_FALSE(fast_resolver.HasModule(&module5));
+
+  TestCodeModule invalidmodule("invalid-module");
+  ASSERT_FALSE(fast_resolver.HasModule(&invalidmodule));
+}
+
+TEST_F(TestFastSourceLineResolver, TestUnload) {
+  TestCodeModule module1("module1");
+  ASSERT_FALSE(basic_resolver.HasModule(&module1));
+
+  ASSERT_TRUE(basic_resolver.LoadModule(&module1, symbol_file(1)));
+  ASSERT_TRUE(basic_resolver.HasModule(&module1));
+  // Convert module1 to fast_module.
+  ASSERT_TRUE(serializer.ConvertOneModule(module1.code_file(),
+                                          &basic_resolver,
+                                          &fast_resolver));
+  ASSERT_TRUE(fast_resolver.HasModule(&module1));
+  basic_resolver.UnloadModule(&module1);
+  fast_resolver.UnloadModule(&module1);
+  ASSERT_FALSE(fast_resolver.HasModule(&module1));
+
+  ASSERT_TRUE(basic_resolver.LoadModule(&module1, symbol_file(1)));
+  ASSERT_TRUE(basic_resolver.HasModule(&module1));
+  // Convert module1 to fast_module.
+  ASSERT_TRUE(serializer.ConvertOneModule(module1.code_file(),
+                                          &basic_resolver,
+                                          &fast_resolver));
+  ASSERT_TRUE(fast_resolver.HasModule(&module1));
+}
+
+TEST_F(TestFastSourceLineResolver, CompareModule) {
+  char *symbol_data;
+  size_t symbol_data_size;
+  string symbol_data_string;
+  string filename;
+
+  for (int module_index = 0; module_index < 3; ++module_index) {
+    std::stringstream ss;
+    ss << testdata_dir << "/module" << module_index << ".out";
+    filename = ss.str();
+    ASSERT_TRUE(SourceLineResolverBase::ReadSymbolFile(
+        symbol_file(module_index), &symbol_data, &symbol_data_size));
+    symbol_data_string.assign(symbol_data, symbol_data_size);
+    delete [] symbol_data;
+    ASSERT_TRUE(module_comparer.Compare(symbol_data_string));
+  }
+}
+
+}  // namespace
+
+int main(int argc, char *argv[]) {
+  ::testing::InitGoogleTest(&argc, argv);
+  return RUN_ALL_TESTS();
+}
diff --git a/google-breakpad/src/processor/linked_ptr.h b/google-breakpad/src/processor/linked_ptr.h
new file mode 100644
index 0000000..72fbba8
--- /dev/null
+++ b/google-breakpad/src/processor/linked_ptr.h
@@ -0,0 +1,193 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// A "smart" pointer type with reference tracking.  Every pointer to a
+// particular object is kept on a circular linked list.  When the last pointer
+// to an object is destroyed or reassigned, the object is deleted.
+//
+// Used properly, this deletes the object when the last reference goes away.
+// There are several caveats:
+// - Like all reference counting schemes, cycles lead to leaks.
+// - Each smart pointer is actually two pointers (8 bytes instead of 4).
+// - Every time a pointer is assigned, the entire list of pointers to that
+//   object is traversed.  This class is therefore NOT SUITABLE when there
+//   will often be more than two or three pointers to a particular object.
+// - References are only tracked as long as linked_ptr<> objects are copied.
+//   If a linked_ptr<> is converted to a raw pointer and back, BAD THINGS
+//   will happen (double deletion).
+//
+// A good use of this class is storing object references in STL containers.
+// You can safely put linked_ptr<> in a vector<>.
+// Other uses may not be as good.
+//
+// Note: If you use an incomplete type with linked_ptr<>, the class
+// *containing* linked_ptr<> must have a constructor and destructor (even
+// if they do nothing!).
+
+#ifndef PROCESSOR_LINKED_PTR_H__
+#define PROCESSOR_LINKED_PTR_H__
+
+namespace google_breakpad {
+
+// This is used internally by all instances of linked_ptr<>.  It needs to be
+// a non-template class because different types of linked_ptr<> can refer to
+// the same object (linked_ptr<Superclass>(obj) vs linked_ptr<Subclass>(obj)).
+// So, it needs to be possible for different types of linked_ptr to participate
+// in the same circular linked list, so we need a single class type here.
+//
+// DO NOT USE THIS CLASS DIRECTLY YOURSELF.  Use linked_ptr<T>.
+class linked_ptr_internal {
+ public:
+  // Create a new circle that includes only this instance.
+  void join_new() {
+    next_ = this;
+  }
+
+  // Join an existing circle.
+  void join(linked_ptr_internal const* ptr) {
+    linked_ptr_internal const* p = ptr;
+    while (p->next_ != ptr) p = p->next_;
+    p->next_ = this;
+    next_ = ptr;
+  }
+
+  // Leave whatever circle we're part of.  Returns true iff we were the
+  // last member of the circle.  Once this is done, you can join() another.
+  bool depart() {
+    if (next_ == this) return true;
+    linked_ptr_internal const* p = next_;
+    while (p->next_ != this) p = p->next_;
+    p->next_ = next_;
+    return false;
+  }
+
+ private:
+  mutable linked_ptr_internal const* next_;
+};
+
+template <typename T>
+class linked_ptr {
+ public:
+  typedef T element_type;
+
+  // Take over ownership of a raw pointer.  This should happen as soon as
+  // possible after the object is created.
+  explicit linked_ptr(T* ptr = NULL) { capture(ptr); }
+  ~linked_ptr() { depart(); }
+
+  // Copy an existing linked_ptr<>, adding ourselves to the list of references.
+  template <typename U> linked_ptr(linked_ptr<U> const& ptr) { copy(&ptr); }
+  linked_ptr(linked_ptr const& ptr) { copy(&ptr); }
+
+  // Assignment releases the old value and acquires the new.
+  template <typename U> linked_ptr& operator=(linked_ptr<U> const& ptr) {
+    depart();
+    copy(&ptr);
+    return *this;
+  }
+
+  linked_ptr& operator=(linked_ptr const& ptr) {
+    if (&ptr != this) {
+      depart();
+      copy(&ptr);
+    }
+    return *this;
+  }
+
+  // Smart pointer members.
+  void reset(T* ptr = NULL) { depart(); capture(ptr); }
+  T* get() const { return value_; }
+  T* operator->() const { return value_; }
+  T& operator*() const { return *value_; }
+  // Release ownership of the pointed object and returns it.
+  // Sole ownership by this linked_ptr object is required.
+  T* release() {
+    link_.depart();
+    T* v = value_;
+    value_ = NULL;
+    return v;
+  }
+
+  bool operator==(T* p) const { return value_ == p; }
+  bool operator!=(T* p) const { return value_ != p; }
+  template <typename U>
+  bool operator==(linked_ptr<U> const& ptr) const {
+    return value_ == ptr.get();
+  }
+  template <typename U>
+  bool operator!=(linked_ptr<U> const& ptr) const {
+    return value_ != ptr.get();
+  }
+
+ private:
+  template <typename U>
+  friend class linked_ptr;
+
+  T* value_;
+  linked_ptr_internal link_;
+
+  void depart() {
+    if (link_.depart()) delete value_;
+  }
+
+  void capture(T* ptr) {
+    value_ = ptr;
+    link_.join_new();
+  }
+
+  template <typename U> void copy(linked_ptr<U> const* ptr) {
+    value_ = ptr->get();
+    if (value_)
+      link_.join(&ptr->link_);
+    else
+      link_.join_new();
+  }
+};
+
+template<typename T> inline
+bool operator==(T* ptr, const linked_ptr<T>& x) {
+  return ptr == x.get();
+}
+
+template<typename T> inline
+bool operator!=(T* ptr, const linked_ptr<T>& x) {
+  return ptr != x.get();
+}
+
+// A function to convert T* into linked_ptr<T>
+// Doing e.g. make_linked_ptr(new FooBarBaz<type>(arg)) is a shorter notation
+// for linked_ptr<FooBarBaz<type> >(new FooBarBaz<type>(arg))
+template <typename T>
+linked_ptr<T> make_linked_ptr(T* ptr) {
+  return linked_ptr<T>(ptr);
+}
+
+}  // namespace google_breakpad
+
+#endif  // PROCESSOR_LINKED_PTR_H__
diff --git a/google-breakpad/src/processor/logging.cc b/google-breakpad/src/processor/logging.cc
new file mode 100644
index 0000000..8bb95a6
--- /dev/null
+++ b/google-breakpad/src/processor/logging.cc
@@ -0,0 +1,115 @@
+// Copyright (c) 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// logging.cc: Breakpad logging
+//
+// See logging.h for documentation.
+//
+// Author: Mark Mentovai
+
+#include <assert.h>
+#include <errno.h>
+#include <stdio.h>
+#include <string.h>
+#include <time.h>
+
+#include <string>
+
+#include "common/using_std_string.h"
+#include "processor/logging.h"
+#include "processor/pathname_stripper.h"
+
+#ifdef _WIN32
+#define snprintf _snprintf
+#endif
+
+namespace google_breakpad {
+
+LogStream::LogStream(std::ostream &stream, Severity severity,
+                     const char *file, int line)
+    : stream_(stream) {
+  time_t clock;
+  time(&clock);
+  struct tm tm_struct;
+#ifdef _WIN32
+  localtime_s(&tm_struct, &clock);
+#else
+  localtime_r(&clock, &tm_struct);
+#endif
+  char time_string[20];
+  strftime(time_string, sizeof(time_string), "%Y-%m-%d %H:%M:%S", &tm_struct);
+
+  const char *severity_string = "UNKNOWN_SEVERITY";
+  switch (severity) {
+    case SEVERITY_INFO:
+      severity_string = "INFO";
+      break;
+    case SEVERITY_ERROR:
+      severity_string = "ERROR";
+      break;
+  }
+
+  stream_ << time_string << ": " << PathnameStripper::File(file) << ":" <<
+             line << ": " << severity_string << ": ";
+}
+
+LogStream::~LogStream() {
+  stream_ << std::endl;
+}
+
+string HexString(uint32_t number) {
+  char buffer[11];
+  snprintf(buffer, sizeof(buffer), "0x%x", number);
+  return string(buffer);
+}
+
+string HexString(uint64_t number) {
+  char buffer[19];
+  snprintf(buffer, sizeof(buffer), "0x%" PRIx64, number);
+  return string(buffer);
+}
+
+string HexString(int number) {
+  char buffer[19];
+  snprintf(buffer, sizeof(buffer), "0x%x", number);
+  return string(buffer);
+}
+
+int ErrnoString(string *error_string) {
+  assert(error_string);
+
+  // strerror isn't necessarily thread-safe.  strerror_r would be preferrable,
+  // but GNU libc uses a nonstandard strerror_r by default, which returns a
+  // char* (rather than an int success indicator) and doesn't necessarily
+  // use the supplied buffer.
+  error_string->assign(strerror(errno));
+  return errno;
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/processor/logging.h b/google-breakpad/src/processor/logging.h
new file mode 100644
index 0000000..406fb67
--- /dev/null
+++ b/google-breakpad/src/processor/logging.h
@@ -0,0 +1,186 @@
+// Copyright (c) 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// logging.h: Breakpad logging
+//
+// Breakpad itself uses Breakpad logging with statements of the form:
+//   BPLOG(severity) << "message";
+// severity may be INFO, ERROR, or other values defined in this file.
+//
+// BPLOG is an overridable macro so that users can customize Breakpad's
+// logging.  Left at the default, logging messages are sent to stderr along
+// with a timestamp and the source code location that produced a message.
+// The streams may be changed by redefining BPLOG_*_STREAM, the logging
+// behavior may be changed by redefining BPLOG_*, and the entire logging
+// system may be overridden by redefining BPLOG(severity).  These
+// redefinitions may be passed to the preprocessor as a command-line flag
+// (-D).
+//
+// If an additional header is required to override Breakpad logging, it can
+// be specified by the BP_LOGGING_INCLUDE macro.  If defined, this header
+// will #include the header specified by that macro.
+//
+// If any initialization is needed before logging, it can be performed by
+// a function called through the BPLOG_INIT macro.  Each main function of
+// an executable program in the Breakpad processor library calls
+// BPLOG_INIT(&argc, &argv); before any logging can be performed; define
+// BPLOG_INIT appropriately if initialization is required.
+//
+// Author: Mark Mentovai
+
+#ifndef PROCESSOR_LOGGING_H__
+#define PROCESSOR_LOGGING_H__
+
+#include <iostream>
+#include <string>
+
+#include "common/using_std_string.h"
+#include "google_breakpad/common/breakpad_types.h"
+
+#ifdef BP_LOGGING_INCLUDE
+#include BP_LOGGING_INCLUDE
+#endif  // BP_LOGGING_INCLUDE
+
+#ifndef THIRD_PARTY_BREAKPAD_GOOGLE_GLUE_LOGGING_H_
+namespace base_logging {
+
+// The open-source copy of logging.h has diverged from Google's internal copy
+// (temporarily, at least).  To support the transition to structured logging
+// a definition for base_logging::LogMessage is needed, which is a ostream-
+// like object for streaming arguments to construct a log message.
+typedef std::ostream LogMessage;
+
+}  // namespace base_logging
+#endif  // THIRD_PARTY_BREAKPAD_GOOGLE_GLUE_LOGGING_H_
+
+namespace google_breakpad {
+
+// These are defined in Microsoft headers.
+#ifdef SEVERITY_ERROR
+#undef SEVERITY_ERROR
+#endif
+
+#ifdef ERROR
+#undef ERROR
+#endif
+
+class LogStream {
+ public:
+  enum Severity {
+    SEVERITY_INFO,
+    SEVERITY_ERROR
+  };
+
+  // Begin logging a message to the stream identified by |stream|, at the
+  // indicated severity.  The file and line parameters should be set so as to
+  // identify the line of source code that is producing a message.
+  LogStream(std::ostream &stream, Severity severity,
+            const char *file, int line);
+
+  // Finish logging by printing a newline and flushing the output stream.
+  ~LogStream();
+
+  template<typename T> std::ostream& operator<<(const T &t) {
+    return stream_ << t;
+  }
+
+ private:
+  std::ostream &stream_;
+
+  // Disallow copy constructor and assignment operator
+  explicit LogStream(const LogStream &that);
+  void operator=(const LogStream &that);
+};
+
+// This class is used to explicitly ignore values in the conditional logging
+// macros.  This avoids compiler warnings like "value computed is not used"
+// and "statement has no effect".
+class LogMessageVoidify {
+ public:
+  LogMessageVoidify() {}
+
+  // This has to be an operator with a precedence lower than << but higher
+  // than ?:
+  void operator&(base_logging::LogMessage &) {}
+};
+
+// Returns number formatted as a hexadecimal string, such as "0x7b".
+string HexString(uint32_t number);
+string HexString(uint64_t number);
+string HexString(int number);
+
+// Returns the error code as set in the global errno variable, and sets
+// error_string, a required argument, to a string describing that error
+// code.
+int ErrnoString(string *error_string);
+
+}  // namespace google_breakpad
+
+#ifndef BPLOG_INIT
+#define BPLOG_INIT(pargc, pargv)
+#endif  // BPLOG_INIT
+
+#define BPLOG_LAZY_STREAM(stream, condition) \
+    !(condition) ? (void) 0 : \
+                   google_breakpad::LogMessageVoidify() & (BPLOG_ ## stream)
+
+#ifndef BPLOG_MINIMUM_SEVERITY
+#define BPLOG_MINIMUM_SEVERITY SEVERITY_INFO
+#endif
+
+#define BPLOG_LOG_IS_ON(severity) \
+    ((google_breakpad::LogStream::SEVERITY_ ## severity) >= \
+     (google_breakpad::LogStream::BPLOG_MINIMUM_SEVERITY))
+
+#ifndef BPLOG
+#define BPLOG(severity) BPLOG_LAZY_STREAM(severity, BPLOG_LOG_IS_ON(severity))
+#endif  // BPLOG
+
+#ifndef BPLOG_INFO
+#ifndef BPLOG_INFO_STREAM
+#define BPLOG_INFO_STREAM std::clog
+#endif  // BPLOG_INFO_STREAM
+#define BPLOG_INFO google_breakpad::LogStream(BPLOG_INFO_STREAM, \
+                       google_breakpad::LogStream::SEVERITY_INFO, \
+                       __FILE__, __LINE__)
+#endif  // BPLOG_INFO
+
+#ifndef BPLOG_ERROR
+#ifndef BPLOG_ERROR_STREAM
+#define BPLOG_ERROR_STREAM std::cerr
+#endif  // BPLOG_ERROR_STREAM
+#define BPLOG_ERROR google_breakpad::LogStream(BPLOG_ERROR_STREAM, \
+                        google_breakpad::LogStream::SEVERITY_ERROR, \
+                        __FILE__, __LINE__)
+#endif  // BPLOG_ERROR
+
+#define BPLOG_IF(severity, condition) \
+    BPLOG_LAZY_STREAM(severity, ((condition) && BPLOG_LOG_IS_ON(severity)))
+
+#endif  // PROCESSOR_LOGGING_H__
diff --git a/google-breakpad/src/processor/map_serializers-inl.h b/google-breakpad/src/processor/map_serializers-inl.h
new file mode 100644
index 0000000..61c7bbd
--- /dev/null
+++ b/google-breakpad/src/processor/map_serializers-inl.h
@@ -0,0 +1,266 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// map_serializers_inl.h: implementation for serializing std::map and its
+// wrapper classes.
+//
+// See map_serializers.h for documentation.
+//
+// Author: Siyang Xie (lambxsy@google.com)
+
+#ifndef PROCESSOR_MAP_SERIALIZERS_INL_H__
+#define PROCESSOR_MAP_SERIALIZERS_INL_H__
+
+#include <map>
+#include <string>
+
+#include "processor/map_serializers.h"
+#include "processor/simple_serializer.h"
+
+#include "processor/address_map-inl.h"
+#include "processor/range_map-inl.h"
+#include "processor/contained_range_map-inl.h"
+
+#include "processor/logging.h"
+
+namespace google_breakpad {
+
+template<typename Key, typename Value>
+size_t StdMapSerializer<Key, Value>::SizeOf(
+    const std::map<Key, Value> &m) const {
+  size_t size = 0;
+  size_t header_size = (1 + m.size()) * sizeof(uint32_t);
+  size += header_size;
+
+  typename std::map<Key, Value>::const_iterator iter;
+  for (iter = m.begin(); iter != m.end(); ++iter) {
+    size += key_serializer_.SizeOf(iter->first);
+    size += value_serializer_.SizeOf(iter->second);
+  }
+  return size;
+}
+
+template<typename Key, typename Value>
+char *StdMapSerializer<Key, Value>::Write(const std::map<Key, Value> &m,
+                                          char *dest) const {
+  if (!dest) {
+    BPLOG(ERROR) << "StdMapSerializer failed: write to NULL address.";
+    return NULL;
+  }
+  char *start_address = dest;
+
+  // Write header:
+  // Number of nodes.
+  dest = SimpleSerializer<uint32_t>::Write(m.size(), dest);
+  // Nodes offsets.
+  uint32_t *offsets = reinterpret_cast<uint32_t*>(dest);
+  dest += sizeof(uint32_t) * m.size();
+
+  char *key_address = dest;
+  dest += sizeof(Key) * m.size();
+
+  // Traverse map.
+  typename std::map<Key, Value>::const_iterator iter;
+  int index = 0;
+  for (iter = m.begin(); iter != m.end(); ++iter, ++index) {
+    offsets[index] = static_cast<uint32_t>(dest - start_address);
+    key_address = key_serializer_.Write(iter->first, key_address);
+    dest = value_serializer_.Write(iter->second, dest);
+  }
+  return dest;
+}
+
+template<typename Key, typename Value>
+char *StdMapSerializer<Key, Value>::Serialize(
+    const std::map<Key, Value> &m, unsigned int *size) const {
+  // Compute size of memory to be allocated.
+  unsigned int size_to_alloc = SizeOf(m);
+  // Allocate memory.
+  char *serialized_data = new char[size_to_alloc];
+  if (!serialized_data) {
+    BPLOG(INFO) << "StdMapSerializer memory allocation failed.";
+    if (size) *size = 0;
+    return NULL;
+  }
+  // Write serialized data into memory.
+  Write(m, serialized_data);
+
+  if (size) *size = size_to_alloc;
+  return serialized_data;
+}
+
+template<typename Address, typename Entry>
+size_t RangeMapSerializer<Address, Entry>::SizeOf(
+    const RangeMap<Address, Entry> &m) const {
+  size_t size = 0;
+  size_t header_size = (1 + m.map_.size()) * sizeof(uint32_t);
+  size += header_size;
+
+  typename std::map<Address, Range>::const_iterator iter;
+  for (iter = m.map_.begin(); iter != m.map_.end(); ++iter) {
+    // Size of key (high address).
+    size += address_serializer_.SizeOf(iter->first);
+    // Size of base (low address).
+    size += address_serializer_.SizeOf(iter->second.base());
+    // Size of entry.
+    size += entry_serializer_.SizeOf(iter->second.entry());
+  }
+  return size;
+}
+
+template<typename Address, typename Entry>
+char *RangeMapSerializer<Address, Entry>::Write(
+    const RangeMap<Address, Entry> &m, char *dest) const {
+  if (!dest) {
+    BPLOG(ERROR) << "RangeMapSerializer failed: write to NULL address.";
+    return NULL;
+  }
+  char *start_address = dest;
+
+  // Write header:
+  // Number of nodes.
+  dest = SimpleSerializer<uint32_t>::Write(m.map_.size(), dest);
+  // Nodes offsets.
+  uint32_t *offsets = reinterpret_cast<uint32_t*>(dest);
+  dest += sizeof(uint32_t) * m.map_.size();
+
+  char *key_address = dest;
+  dest += sizeof(Address) * m.map_.size();
+
+  // Traverse map.
+  typename std::map<Address, Range>::const_iterator iter;
+  int index = 0;
+  for (iter = m.map_.begin(); iter != m.map_.end(); ++iter, ++index) {
+    offsets[index] = static_cast<uint32_t>(dest - start_address);
+    key_address = address_serializer_.Write(iter->first, key_address);
+    dest = address_serializer_.Write(iter->second.base(), dest);
+    dest = entry_serializer_.Write(iter->second.entry(), dest);
+  }
+  return dest;
+}
+
+template<typename Address, typename Entry>
+char *RangeMapSerializer<Address, Entry>::Serialize(
+    const RangeMap<Address, Entry> &m, unsigned int *size) const {
+  // Compute size of memory to be allocated.
+  unsigned int size_to_alloc = SizeOf(m);
+  // Allocate memory.
+  char *serialized_data = new char[size_to_alloc];
+  if (!serialized_data) {
+    BPLOG(INFO) << "RangeMapSerializer memory allocation failed.";
+    if (size) *size = 0;
+    return NULL;
+  }
+
+  // Write serialized data into memory.
+  Write(m, serialized_data);
+
+  if (size) *size = size_to_alloc;
+  return serialized_data;
+}
+
+
+template<class AddrType, class EntryType>
+size_t ContainedRangeMapSerializer<AddrType, EntryType>::SizeOf(
+    const ContainedRangeMap<AddrType, EntryType> *m) const {
+  size_t size = 0;
+  size_t header_size = addr_serializer_.SizeOf(m->base_)
+                       + entry_serializer_.SizeOf(m->entry_)
+                       + sizeof(uint32_t);
+  size += header_size;
+  // In case m.map_ == NULL, we treat it as an empty map:
+  size += sizeof(uint32_t);
+  if (m->map_) {
+    size += m->map_->size() * sizeof(uint32_t);
+    typename Map::const_iterator iter;
+    for (iter = m->map_->begin(); iter != m->map_->end(); ++iter) {
+      size += addr_serializer_.SizeOf(iter->first);
+      // Recursive calculation of size:
+      size += SizeOf(iter->second);
+    }
+  }
+  return size;
+}
+
+template<class AddrType, class EntryType>
+char *ContainedRangeMapSerializer<AddrType, EntryType>::Write(
+    const ContainedRangeMap<AddrType, EntryType> *m, char *dest) const {
+  if (!dest) {
+    BPLOG(ERROR) << "StdMapSerializer failed: write to NULL address.";
+    return NULL;
+  }
+  dest = addr_serializer_.Write(m->base_, dest);
+  dest = SimpleSerializer<uint32_t>::Write(entry_serializer_.SizeOf(m->entry_),
+                                            dest);
+  dest = entry_serializer_.Write(m->entry_, dest);
+
+  // Write map<<AddrType, ContainedRangeMap*>:
+  char *map_address = dest;
+  if (m->map_ == NULL) {
+    dest = SimpleSerializer<uint32_t>::Write(0, dest);
+  } else {
+    dest = SimpleSerializer<uint32_t>::Write(m->map_->size(), dest);
+    uint32_t *offsets = reinterpret_cast<uint32_t*>(dest);
+    dest += sizeof(uint32_t) * m->map_->size();
+
+    char *key_address = dest;
+    dest += sizeof(AddrType) * m->map_->size();
+
+    // Traverse map.
+    typename Map::const_iterator iter;
+    int index = 0;
+    for (iter = m->map_->begin(); iter != m->map_->end(); ++iter, ++index) {
+      offsets[index] = static_cast<uint32_t>(dest - map_address);
+      key_address = addr_serializer_.Write(iter->first, key_address);
+      // Recursively write.
+      dest = Write(iter->second, dest);
+    }
+  }
+  return dest;
+}
+
+template<class AddrType, class EntryType>
+char *ContainedRangeMapSerializer<AddrType, EntryType>::Serialize(
+    const ContainedRangeMap<AddrType, EntryType> *m, unsigned int *size) const {
+  unsigned int size_to_alloc = SizeOf(m);
+  // Allocating memory.
+  char *serialized_data = new char[size_to_alloc];
+  if (!serialized_data) {
+    BPLOG(INFO) << "ContainedRangeMapSerializer memory allocation failed.";
+    if (size) *size = 0;
+    return NULL;
+  }
+  Write(m, serialized_data);
+  if (size) *size = size_to_alloc;
+  return serialized_data;
+}
+
+}  // namespace google_breakpad
+
+#endif  // PROCESSOR_MAP_SERIALIZERS_INL_H__
diff --git a/google-breakpad/src/processor/map_serializers.h b/google-breakpad/src/processor/map_serializers.h
new file mode 100644
index 0000000..a0b9d3f
--- /dev/null
+++ b/google-breakpad/src/processor/map_serializers.h
@@ -0,0 +1,168 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// map_serializers.h: defines templates for serializing std::map and its
+// wrappers: AddressMap, RangeMap, and ContainedRangeMap.
+//
+// Author: Siyang Xie (lambxsy@google.com)
+
+
+#ifndef PROCESSOR_MAP_SERIALIZERS_H__
+#define PROCESSOR_MAP_SERIALIZERS_H__
+
+#include <map>
+#include <string>
+
+#include "processor/simple_serializer.h"
+
+#include "processor/address_map-inl.h"
+#include "processor/range_map-inl.h"
+#include "processor/contained_range_map-inl.h"
+
+namespace google_breakpad {
+
+// StdMapSerializer allocates memory and serializes an std::map instance into a
+// chunk of memory data.
+template<typename Key, typename Value>
+class StdMapSerializer {
+ public:
+  // Calculate the memory size of serialized data.
+  size_t SizeOf(const std::map<Key, Value> &m) const;
+
+  // Writes the serialized data to memory with start address = dest,
+  // and returns the "end" of data, i.e., return the address follow the final
+  // byte of data.
+  // NOTE: caller has to allocate enough memory before invoke Write() method.
+  char* Write(const std::map<Key, Value> &m, char* dest) const;
+
+  // Serializes a std::map object into a chunk of memory data with format
+  // described in "StaticMap.h" comment.
+  // Returns a pointer to the serialized data.  If size != NULL, *size is set
+  // to the size of serialized data, i.e., SizeOf(m).
+  // Caller has the ownership of memory allocated as "new char[]".
+  char* Serialize(const std::map<Key, Value> &m, unsigned int *size) const;
+
+ private:
+  SimpleSerializer<Key> key_serializer_;
+  SimpleSerializer<Value> value_serializer_;
+};
+
+// AddressMapSerializer allocates memory and serializes an AddressMap into a
+// chunk of memory data.
+template<typename Addr, typename Entry>
+class AddressMapSerializer {
+ public:
+  // Calculate the memory size of serialized data.
+  size_t SizeOf(const AddressMap<Addr, Entry> &m) const {
+    return std_map_serializer_.SizeOf(m.map_);
+  }
+
+  // Write the serialized data to specified memory location.  Return the "end"
+  // of data, i.e., return the address after the final byte of data.
+  // NOTE: caller has to allocate enough memory before invoke Write() method.
+  char* Write(const AddressMap<Addr, Entry> &m, char *dest) const {
+    return std_map_serializer_.Write(m.map_, dest);
+  }
+
+  // Serializes an AddressMap object into a chunk of memory data.
+  // Returns a pointer to the serialized data.  If size != NULL, *size is set
+  // to the size of serialized data, i.e., SizeOf(m).
+  // Caller has the ownership of memory allocated as "new char[]".
+  char* Serialize(const AddressMap<Addr, Entry> &m, unsigned int *size) const {
+    return std_map_serializer_.Serialize(m.map_, size);
+  }
+
+ private:
+  // AddressMapSerializer is a simple wrapper of StdMapSerializer, just as
+  // AddressMap is a simple wrapper of std::map.
+  StdMapSerializer<Addr, Entry> std_map_serializer_;
+};
+
+// RangeMapSerializer allocates memory and serializes a RangeMap instance into a
+// chunk of memory data.
+template<typename Address, typename Entry>
+class RangeMapSerializer {
+ public:
+  // Calculate the memory size of serialized data.
+  size_t SizeOf(const RangeMap<Address, Entry> &m) const;
+
+  // Write the serialized data to specified memory location.  Return the "end"
+  // of data, i.e., return the address after the final byte of data.
+  // NOTE: caller has to allocate enough memory before invoke Write() method.
+  char* Write(const RangeMap<Address, Entry> &m, char* dest) const;
+
+  // Serializes a RangeMap object into a chunk of memory data.
+  // Returns a pointer to the serialized data.  If size != NULL, *size is set
+  // to the size of serialized data, i.e., SizeOf(m).
+  // Caller has the ownership of memory allocated as "new char[]".
+  char* Serialize(const RangeMap<Address, Entry> &m, unsigned int *size) const;
+
+ private:
+  // Convenient type name for Range.
+  typedef typename RangeMap<Address, Entry>::Range Range;
+
+  // Serializer for RangeMap's key and Range::base_.
+  SimpleSerializer<Address> address_serializer_;
+  // Serializer for RangeMap::Range::entry_.
+  SimpleSerializer<Entry> entry_serializer_;
+};
+
+// ContainedRangeMapSerializer allocates memory and serializes a
+// ContainedRangeMap instance into a chunk of memory data.
+template<class AddrType, class EntryType>
+class ContainedRangeMapSerializer {
+ public:
+  // Calculate the memory size of serialized data.
+  size_t SizeOf(const ContainedRangeMap<AddrType, EntryType> *m) const;
+
+  // Write the serialized data to specified memory location.  Return the "end"
+  // of data, i.e., return the address after the final byte of data.
+  // NOTE: caller has to allocate enough memory before invoke Write() method.
+  char* Write(const ContainedRangeMap<AddrType, EntryType> *m,
+              char* dest) const;
+
+  // Serializes a ContainedRangeMap object into a chunk of memory data.
+  // Returns a pointer to the serialized data.  If size != NULL, *size is set
+  // to the size of serialized data, i.e., SizeOf(m).
+  // Caller has the ownership of memory allocated as "new char[]".
+  char* Serialize(const ContainedRangeMap<AddrType, EntryType> *m,
+                  unsigned int *size) const;
+
+ private:
+  // Convenient type name for the underlying map type.
+  typedef std::map<AddrType, ContainedRangeMap<AddrType, EntryType>*> Map;
+
+  // Serializer for addresses and entries stored in ContainedRangeMap.
+  SimpleSerializer<AddrType> addr_serializer_;
+  SimpleSerializer<EntryType> entry_serializer_;
+};
+
+}  // namespace google_breakpad
+
+#endif  // PROCESSOR_MAP_SERIALIZERS_H__
diff --git a/google-breakpad/src/processor/map_serializers_unittest.cc b/google-breakpad/src/processor/map_serializers_unittest.cc
new file mode 100644
index 0000000..0d872ec
--- /dev/null
+++ b/google-breakpad/src/processor/map_serializers_unittest.cc
@@ -0,0 +1,386 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// map_serializers_unittest.cc: Unit tests for std::map serializer and
+// std::map wrapper serializers.
+//
+// Author: Siyang Xie (lambxsy@google.com)
+
+#include <climits>
+#include <map>
+#include <string>
+#include <utility>
+#include <iostream>
+#include <sstream>
+
+#include "breakpad_googletest_includes.h"
+#include "map_serializers-inl.h"
+
+#include "processor/address_map-inl.h"
+#include "processor/range_map-inl.h"
+#include "processor/contained_range_map-inl.h"
+
+typedef int32_t AddrType;
+typedef int32_t EntryType;
+
+class TestStdMapSerializer : public ::testing::Test {
+ protected:
+  void SetUp() {
+    serialized_size_ = 0;
+    serialized_data_ = NULL;
+  }
+
+  void TearDown() {
+    delete [] serialized_data_;
+  }
+
+  std::map<AddrType, EntryType> std_map_;
+  google_breakpad::StdMapSerializer<AddrType, EntryType> serializer_;
+  uint32_t serialized_size_;
+  char *serialized_data_;
+};
+
+TEST_F(TestStdMapSerializer, EmptyMapTestCase) {
+  const int32_t correct_data[] = { 0 };
+  uint32_t correct_size = sizeof(correct_data);
+
+  // std_map_ is empty.
+  serialized_data_ = serializer_.Serialize(std_map_, &serialized_size_);
+
+  EXPECT_EQ(correct_size, serialized_size_);
+  EXPECT_EQ(memcmp(correct_data, serialized_data_, correct_size), 0);
+}
+
+TEST_F(TestStdMapSerializer, MapWithTwoElementsTestCase) {
+  const int32_t correct_data[] = {
+      // # of nodes
+      2,
+      // Offsets
+      20, 24,
+      // Keys
+      1, 3,
+      // Values
+      2, 6
+  };
+  uint32_t correct_size = sizeof(correct_data);
+
+  std_map_.insert(std::make_pair(1, 2));
+  std_map_.insert(std::make_pair(3, 6));
+
+  serialized_data_ = serializer_.Serialize(std_map_, &serialized_size_);
+
+  EXPECT_EQ(correct_size, serialized_size_);
+  EXPECT_EQ(memcmp(correct_data, serialized_data_, correct_size), 0);
+}
+
+TEST_F(TestStdMapSerializer, MapWithFiveElementsTestCase) {
+  const int32_t correct_data[] = {
+      // # of nodes
+      5,
+      // Offsets
+      44, 48, 52, 56, 60,
+      // Keys
+      1, 2, 3, 4, 5,
+      // Values
+      11, 12, 13, 14, 15
+  };
+  uint32_t correct_size = sizeof(correct_data);
+
+  for (int i = 1; i < 6; ++i)
+    std_map_.insert(std::make_pair(i, 10 + i));
+
+  serialized_data_ = serializer_.Serialize(std_map_, &serialized_size_);
+
+  EXPECT_EQ(correct_size, serialized_size_);
+  EXPECT_EQ(memcmp(correct_data, serialized_data_, correct_size), 0);
+}
+
+class TestAddressMapSerializer : public ::testing::Test {
+ protected:
+  void SetUp() {
+    serialized_size_ = 0;
+    serialized_data_ = 0;
+  }
+
+  void TearDown() {
+    delete [] serialized_data_;
+  }
+
+  google_breakpad::AddressMap<AddrType, EntryType> address_map_;
+  google_breakpad::AddressMapSerializer<AddrType, EntryType> serializer_;
+  uint32_t serialized_size_;
+  char *serialized_data_;
+};
+
+TEST_F(TestAddressMapSerializer, EmptyMapTestCase) {
+  const int32_t correct_data[] = { 0 };
+  uint32_t correct_size = sizeof(correct_data);
+
+  // std_map_ is empty.
+  serialized_data_ = serializer_.Serialize(address_map_, &serialized_size_);
+
+  EXPECT_EQ(correct_size, serialized_size_);
+  EXPECT_EQ(memcmp(correct_data, serialized_data_, correct_size), 0);
+}
+
+TEST_F(TestAddressMapSerializer, MapWithTwoElementsTestCase) {
+  const int32_t correct_data[] = {
+      // # of nodes
+      2,
+      // Offsets
+      20, 24,
+      // Keys
+      1, 3,
+      // Values
+      2, 6
+  };
+  uint32_t correct_size = sizeof(correct_data);
+
+  address_map_.Store(1, 2);
+  address_map_.Store(3, 6);
+
+  serialized_data_ = serializer_.Serialize(address_map_, &serialized_size_);
+
+  EXPECT_EQ(correct_size, serialized_size_);
+  EXPECT_EQ(memcmp(correct_data, serialized_data_, correct_size), 0);
+}
+
+TEST_F(TestAddressMapSerializer, MapWithFourElementsTestCase) {
+  const int32_t correct_data[] = {
+      // # of nodes
+      4,
+      // Offsets
+      36, 40, 44, 48,
+      // Keys
+      -6, -4, 8, 123,
+      // Values
+      2, 3, 5, 8
+  };
+  uint32_t correct_size = sizeof(correct_data);
+
+  address_map_.Store(-6, 2);
+  address_map_.Store(-4, 3);
+  address_map_.Store(8, 5);
+  address_map_.Store(123, 8);
+
+  serialized_data_ = serializer_.Serialize(address_map_, &serialized_size_);
+
+  EXPECT_EQ(correct_size, serialized_size_);
+  EXPECT_EQ(memcmp(correct_data, serialized_data_, correct_size), 0);
+}
+
+
+class TestRangeMapSerializer : public ::testing::Test {
+ protected:
+  void SetUp() {
+    serialized_size_ = 0;
+    serialized_data_ = 0;
+  }
+
+  void TearDown() {
+    delete [] serialized_data_;
+  }
+
+  google_breakpad::RangeMap<AddrType, EntryType> range_map_;
+  google_breakpad::RangeMapSerializer<AddrType, EntryType> serializer_;
+  uint32_t serialized_size_;
+  char *serialized_data_;
+};
+
+TEST_F(TestRangeMapSerializer, EmptyMapTestCase) {
+  const int32_t correct_data[] = { 0 };
+  uint32_t correct_size = sizeof(correct_data);
+
+  // range_map_ is empty.
+  serialized_data_ = serializer_.Serialize(range_map_, &serialized_size_);
+
+  EXPECT_EQ(correct_size, serialized_size_);
+  EXPECT_EQ(memcmp(correct_data, serialized_data_, correct_size), 0);
+}
+
+TEST_F(TestRangeMapSerializer, MapWithOneRangeTestCase) {
+  const int32_t correct_data[] = {
+      // # of nodes
+      1,
+      // Offsets
+      12,
+      // Keys: high address
+      10,
+      // Values: (low address, entry) pairs
+      1, 6
+  };
+  uint32_t correct_size = sizeof(correct_data);
+
+  range_map_.StoreRange(1, 10, 6);
+
+  serialized_data_ = serializer_.Serialize(range_map_, &serialized_size_);
+
+  EXPECT_EQ(correct_size, serialized_size_);
+  EXPECT_EQ(memcmp(correct_data, serialized_data_, correct_size), 0);
+}
+
+TEST_F(TestRangeMapSerializer, MapWithThreeRangesTestCase) {
+  const int32_t correct_data[] = {
+      // # of nodes
+      3,
+      // Offsets
+      28,    36,    44,
+      // Keys: high address
+      5,     9,     20,
+      // Values: (low address, entry) pairs
+      2, 1,  6, 2,  10, 3
+  };
+  uint32_t correct_size = sizeof(correct_data);
+
+  ASSERT_TRUE(range_map_.StoreRange(2, 4, 1));
+  ASSERT_TRUE(range_map_.StoreRange(6, 4, 2));
+  ASSERT_TRUE(range_map_.StoreRange(10, 11, 3));
+
+  serialized_data_ = serializer_.Serialize(range_map_, &serialized_size_);
+
+  EXPECT_EQ(correct_size, serialized_size_);
+  EXPECT_EQ(memcmp(correct_data, serialized_data_, correct_size), 0);
+}
+
+
+class TestContainedRangeMapSerializer : public ::testing::Test {
+ protected:
+  void SetUp() {
+    serialized_size_ = 0;
+    serialized_data_ = 0;
+  }
+
+  void TearDown() {
+    delete [] serialized_data_;
+  }
+
+  google_breakpad::ContainedRangeMap<AddrType, EntryType> crm_map_;
+  google_breakpad::ContainedRangeMapSerializer<AddrType, EntryType> serializer_;
+  uint32_t serialized_size_;
+  char *serialized_data_;
+};
+
+TEST_F(TestContainedRangeMapSerializer, EmptyMapTestCase) {
+  const int32_t correct_data[] = {
+      0,  // base address of root
+      4,  // size of entry
+      0,  // entry stored at root
+      0   // empty map stored at root
+  };
+  uint32_t correct_size = sizeof(correct_data);
+
+  // crm_map_ is empty.
+  serialized_data_ = serializer_.Serialize(&crm_map_, &serialized_size_);
+
+  EXPECT_EQ(correct_size, serialized_size_);
+  EXPECT_EQ(memcmp(correct_data, serialized_data_, correct_size), 0);
+}
+
+TEST_F(TestContainedRangeMapSerializer, MapWithOneRangeTestCase) {
+  const int32_t correct_data[] = {
+      0,  // base address of root
+      4,  // size of entry
+      0,  // entry stored at root
+      // Map stored at root node:
+      1,  // # of nodes
+      12, // offset
+      9,  // key
+      // value: a child ContainedRangeMap
+      3,  // base address of child CRM
+      4,  // size of entry
+      -1, // entry stored in child CRM
+      0   // empty sub-map stored in child CRM
+  };
+  uint32_t correct_size = sizeof(correct_data);
+
+  crm_map_.StoreRange(3, 7, -1);
+
+  serialized_data_ = serializer_.Serialize(&crm_map_, &serialized_size_);
+
+  EXPECT_EQ(correct_size, serialized_size_);
+  EXPECT_EQ(memcmp(correct_data, serialized_data_, correct_size), 0);
+}
+
+TEST_F(TestContainedRangeMapSerializer, MapWithTwoLevelsTestCase) {
+  // Tree structure of ranges:
+  //           root              level 0
+  //            |
+  //           map
+  //         /     \             level 1: child1, child2
+  //      2~8      10~20
+  //       |         |
+  //      map       map
+  //     /   \       |
+  //    3~4 6~7    16-20         level 2: grandchild1, grandchild2, grandchild3
+
+  const int32_t correct_data[] = {
+      // root: base, entry_size, entry
+      0, 4, 0,
+      // root's map: # of nodes, offset1, offset2, key1, key2
+      2, 20, 84, 8, 20,
+      // child1: base, entry_size, entry:
+      2, 4, -1,
+      // child1's map: # of nodes, offset1, offset2, key1, key2
+      2, 20, 36, 4, 7,
+        // grandchild1: base, entry_size, entry, empty_map
+        3, 4, -1, 0,
+        // grandchild2: base, entry_size, entry, empty_map
+        6, 4, -1, 0,
+      // child2: base, entry_size, entry:
+      10, 4, -1,
+      // child2's map: # of nodes, offset1, key1
+      1, 12, 20,
+        // grandchild3: base, entry_size, entry, empty_map
+        16, 4, -1, 0
+  };
+  uint32_t correct_size = sizeof(correct_data);
+
+  // Store child1.
+  ASSERT_TRUE(crm_map_.StoreRange(2, 7, -1));
+  // Store child2.
+  ASSERT_TRUE(crm_map_.StoreRange(10, 11, -1));
+  // Store grandchild1.
+  ASSERT_TRUE(crm_map_.StoreRange(3, 2, -1));
+  // Store grandchild2.
+  ASSERT_TRUE(crm_map_.StoreRange(6, 2, -1));
+  // Store grandchild3.
+  ASSERT_TRUE(crm_map_.StoreRange(16, 5, -1));
+
+  serialized_data_ = serializer_.Serialize(&crm_map_, &serialized_size_);
+
+  EXPECT_EQ(correct_size, serialized_size_);
+  EXPECT_EQ(memcmp(correct_data, serialized_data_, correct_size), 0);
+}
+
+
+int main(int argc, char *argv[]) {
+  ::testing::InitGoogleTest(&argc, argv);
+
+  return RUN_ALL_TESTS();
+}
diff --git a/google-breakpad/src/processor/microdump.cc b/google-breakpad/src/processor/microdump.cc
new file mode 100644
index 0000000..bf62855
--- /dev/null
+++ b/google-breakpad/src/processor/microdump.cc
@@ -0,0 +1,306 @@
+// Copyright (c) 2014 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// microdump.cc: A microdump reader.
+//
+// See microdump.h for documentation.
+
+#include "google_breakpad/processor/microdump.h"
+
+#include <stdio.h>
+#include <string.h>
+
+#include <memory>
+#include <sstream>
+#include <string>
+#include <vector>
+
+#include "google_breakpad/common/minidump_cpu_arm.h"
+#include "google_breakpad/processor/code_module.h"
+#include "processor/basic_code_module.h"
+#include "processor/linked_ptr.h"
+#include "processor/logging.h"
+#include "processor/range_map-inl.h"
+
+namespace {
+static const char kGoogleBreakpadKey[] = "google-breakpad";
+static const char kMicrodumpBegin[] = "-----BEGIN BREAKPAD MICRODUMP-----";
+static const char kMicrodumpEnd[] = "-----END BREAKPAD MICRODUMP-----";
+static const char kOsKey[] = ": O ";
+static const char kCpuKey[] = ": C ";
+static const char kMmapKey[] = ": M ";
+static const char kStackKey[] = ": S ";
+static const char kStackFirstLineKey[] = ": S 0 ";
+static const char kArmArchitecture[] = "arm";
+static const char kArm64Architecture[] = "arm64";
+
+template<typename T>
+T HexStrToL(const string& str) {
+  uint64_t res = 0;
+  std::istringstream ss(str);
+  ss >> std::hex >> res;
+  return static_cast<T>(res);
+}
+
+std::vector<uint8_t> ParseHexBuf(const string& str) {
+  std::vector<uint8_t> buf;
+  for (size_t i = 0; i < str.length(); i += 2) {
+    buf.push_back(HexStrToL<uint8_t>(str.substr(i, 2)));
+  }
+  return buf;
+}
+
+}  // namespace
+
+namespace google_breakpad {
+
+//
+// MicrodumpModules
+//
+
+void MicrodumpModules::Add(const CodeModule* module) {
+  linked_ptr<const CodeModule> module_ptr(module);
+  if (!map_->StoreRange(module->base_address(), module->size(), module_ptr)) {
+    BPLOG(ERROR) << "Module " << module->code_file() <<
+                    " could not be stored";
+  }
+}
+
+
+//
+// MicrodumpContext
+//
+
+void MicrodumpContext::SetContextARM(MDRawContextARM* arm) {
+  DumpContext::SetContextFlags(MD_CONTEXT_ARM);
+  DumpContext::SetContextARM(arm);
+  valid_ = true;
+}
+
+void MicrodumpContext::SetContextARM64(MDRawContextARM64* arm64) {
+  DumpContext::SetContextFlags(MD_CONTEXT_ARM64);
+  DumpContext::SetContextARM64(arm64);
+  valid_ = true;
+}
+
+
+//
+// MicrodumpMemoryRegion
+//
+
+MicrodumpMemoryRegion::MicrodumpMemoryRegion() : base_address_(0) { }
+
+void MicrodumpMemoryRegion::Init(uint64_t base_address,
+                                 const std::vector<uint8_t>& contents) {
+  base_address_ = base_address;
+  contents_ = contents;
+}
+
+uint64_t MicrodumpMemoryRegion::GetBase() const { return base_address_; }
+
+uint32_t MicrodumpMemoryRegion::GetSize() const { return contents_.size(); }
+
+bool MicrodumpMemoryRegion::GetMemoryAtAddress(uint64_t address,
+                                               uint8_t* value) const {
+  return GetMemoryLittleEndian(address, value);
+}
+
+bool MicrodumpMemoryRegion::GetMemoryAtAddress(uint64_t address,
+                                               uint16_t* value) const {
+  return GetMemoryLittleEndian(address, value);
+}
+
+bool MicrodumpMemoryRegion::GetMemoryAtAddress(uint64_t address,
+                                               uint32_t* value) const {
+  return GetMemoryLittleEndian(address, value);
+}
+
+bool MicrodumpMemoryRegion::GetMemoryAtAddress(uint64_t address,
+                                               uint64_t* value) const {
+  return GetMemoryLittleEndian(address, value);
+}
+
+template<typename ValueType>
+bool MicrodumpMemoryRegion::GetMemoryLittleEndian(uint64_t address,
+                                                  ValueType* value) const {
+  if (address < base_address_ ||
+      address - base_address_ + sizeof(ValueType) > contents_.size())
+    return false;
+  ValueType v = 0;
+  uint64_t start = address - base_address_;
+  // The loop condition is odd, but it's correct for size_t.
+  for (size_t i = sizeof(ValueType) - 1; i < sizeof(ValueType); i--)
+    v = (v << 8) | static_cast<uint8_t>(contents_[start + i]);
+  *value = v;
+  return true;
+}
+
+void MicrodumpMemoryRegion::Print() const {
+  // Not reached, just needed to honor the base class contract.
+  assert(false);
+}
+
+//
+// Microdump
+//
+Microdump::Microdump(const string& contents)
+  : context_(new MicrodumpContext()),
+    stack_region_(new MicrodumpMemoryRegion()),
+    modules_(new MicrodumpModules()),
+    system_info_(new SystemInfo()) {
+  assert(!contents.empty());
+
+  bool in_microdump = false;
+  string line;
+  uint64_t stack_start = 0;
+  std::vector<uint8_t> stack_content;
+  string arch;
+
+  std::istringstream stream(contents);
+  while (std::getline(stream, line)) {
+    if (line.find(kGoogleBreakpadKey) == string::npos) {
+      continue;
+    }
+    if (line.find(kMicrodumpBegin) != string::npos) {
+      in_microdump = true;
+      continue;
+    }
+    if (line.find(kMicrodumpEnd) != string::npos) {
+      break;
+    }
+
+    if (!in_microdump) {
+      continue;
+    }
+
+    size_t pos;
+    if ((pos = line.find(kOsKey)) != string::npos) {
+      string os_str(line, pos + strlen(kOsKey));
+      std::istringstream os_tokens(os_str);
+      string os_id;
+      string num_cpus;
+      string os_version;
+      // This reflect the actual HW arch and might not match the arch emulated
+      // for the execution (e.g., running a 32-bit binary on a 64-bit cpu).
+      string hw_arch;
+
+      os_tokens >> os_id;
+      os_tokens >> arch;
+      os_tokens >> num_cpus;
+      os_tokens >> hw_arch;
+      std::getline(os_tokens, os_version);
+      os_version.erase(0, 1);  // remove leading space.
+
+      system_info_->cpu = hw_arch;
+      system_info_->cpu_count = HexStrToL<uint8_t>(num_cpus);
+      system_info_->os_version = os_version;
+
+      if (os_id == "L") {
+        system_info_->os = "Linux";
+        system_info_->os_short = "linux";
+      } else if (os_id == "A") {
+        system_info_->os = "Android";
+        system_info_->os_short = "android";
+      }
+
+      // OS line also contains release and version for future use.
+    } else if ((pos = line.find(kStackKey)) != string::npos) {
+      if (line.find(kStackFirstLineKey) != string::npos) {
+        // The first line of the stack (S 0 stack header) provides the value of
+        // the stack pointer, the start address of the stack being dumped and
+        // the length of the stack. We could use it in future to double check
+        // that we received all the stack as expected.
+        continue;
+      }
+      string stack_str(line, pos + strlen(kStackKey));
+      std::istringstream stack_tokens(stack_str);
+      string start_addr_str;
+      string raw_content;
+      stack_tokens >> start_addr_str;
+      stack_tokens >> raw_content;
+      uint64_t start_addr = HexStrToL<uint64_t>(start_addr_str);
+
+      if (stack_start != 0) {
+        // Verify that the stack chunks in the microdump are contiguous.
+        assert(start_addr == stack_start + stack_content.size());
+      } else {
+        stack_start = start_addr;
+      }
+      std::vector<uint8_t> chunk = ParseHexBuf(raw_content);
+      stack_content.insert(stack_content.end(), chunk.begin(), chunk.end());
+
+    } else if ((pos = line.find(kCpuKey)) != string::npos) {
+      string cpu_state_str(line, pos + strlen(kCpuKey));
+      std::vector<uint8_t> cpu_state_raw = ParseHexBuf(cpu_state_str);
+      if (strcmp(arch.c_str(), kArmArchitecture) == 0) {
+        if (cpu_state_raw.size() != sizeof(MDRawContextARM)) {
+          std::cerr << "Malformed CPU context. Got " << cpu_state_raw.size() <<
+              " bytes instead of " << sizeof(MDRawContextARM) << std::endl;
+          continue;
+        }
+        MDRawContextARM* arm = new MDRawContextARM();
+        memcpy(arm, &cpu_state_raw[0], cpu_state_raw.size());
+        context_->SetContextARM(arm);
+      } else if (strcmp(arch.c_str(), kArm64Architecture) == 0) {
+        if (cpu_state_raw.size() != sizeof(MDRawContextARM64)) {
+          std::cerr << "Malformed CPU context. Got " << cpu_state_raw.size() <<
+              " bytes instead of " << sizeof(MDRawContextARM64) << std::endl;
+          continue;
+        }
+        MDRawContextARM64* arm = new MDRawContextARM64();
+        memcpy(arm, &cpu_state_raw[0], cpu_state_raw.size());
+        context_->SetContextARM64(arm);
+      } else {
+        std::cerr << "Unsupported architecture: " << arch << std::endl;
+      }
+    } else if ((pos = line.find(kMmapKey)) != string::npos) {
+      string mmap_line(line, pos + strlen(kMmapKey));
+      std::istringstream mmap_tokens(mmap_line);
+      string addr, offset, size, identifier, filename;
+      mmap_tokens >> addr;
+      mmap_tokens >> offset;
+      mmap_tokens >> size;
+      mmap_tokens >> identifier;
+      mmap_tokens >> filename;
+
+      modules_->Add(new BasicCodeModule(
+          HexStrToL<uint64_t>(addr),  // base_address
+          HexStrToL<uint64_t>(size),  // size
+          filename,                   // code_file
+          identifier,                 // code_identifier
+          filename,                   // debug_file
+          identifier,                 // debug_identifier
+          ""));                       // version
+    }
+  }
+  stack_region_->Init(stack_start, stack_content);
+}
+
+}  // namespace google_breakpad
+
diff --git a/google-breakpad/src/processor/microdump_processor.cc b/google-breakpad/src/processor/microdump_processor.cc
new file mode 100644
index 0000000..366e3f3
--- /dev/null
+++ b/google-breakpad/src/processor/microdump_processor.cc
@@ -0,0 +1,100 @@
+// Copyright (c) 2014, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//    * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// microdump_processor.cc: A microdump processor.
+//
+// See microdump_processor.h for documentation.
+
+#include "google_breakpad/processor/microdump_processor.h"
+
+#include <assert.h>
+
+#include <string>
+
+#include "common/using_std_string.h"
+#include "google_breakpad/processor/call_stack.h"
+#include "google_breakpad/processor/microdump.h"
+#include "google_breakpad/processor/process_state.h"
+#include "google_breakpad/processor/stackwalker.h"
+#include "google_breakpad/processor/stack_frame_symbolizer.h"
+#include "processor/logging.h"
+
+namespace google_breakpad {
+
+MicrodumpProcessor::MicrodumpProcessor(StackFrameSymbolizer* frame_symbolizer)
+    : frame_symbolizer_(frame_symbolizer) {
+  assert(frame_symbolizer);
+}
+
+MicrodumpProcessor::~MicrodumpProcessor() {}
+
+ProcessResult MicrodumpProcessor::Process(const string &microdump_contents,
+                                          ProcessState* process_state) {
+  assert(process_state);
+
+  process_state->Clear();
+
+  if (microdump_contents.empty()) {
+    BPLOG(ERROR) << "Microdump is empty.";
+    return PROCESS_ERROR_MINIDUMP_NOT_FOUND;
+  }
+
+  Microdump microdump(microdump_contents);
+  process_state->modules_ = microdump.GetModules()->Copy();
+  scoped_ptr<Stackwalker> stackwalker(
+      Stackwalker::StackwalkerForCPU(
+                            &process_state->system_info_,
+                            microdump.GetContext(),
+                            microdump.GetMemory(),
+                            process_state->modules_,
+                            frame_symbolizer_));
+
+  scoped_ptr<CallStack> stack(new CallStack());
+  if (stackwalker.get()) {
+    if (!stackwalker->Walk(stack.get(),
+                           &process_state->modules_without_symbols_,
+                           &process_state->modules_with_corrupt_symbols_)) {
+      BPLOG(INFO) << "Processing was interrupted.";
+      return PROCESS_SYMBOL_SUPPLIER_INTERRUPTED;
+    }
+  } else {
+    BPLOG(ERROR) << "No stackwalker found for microdump.";
+    return PROCESS_ERROR_NO_THREAD_LIST;
+  }
+
+  process_state->threads_.push_back(stack.release());
+  process_state->thread_memory_regions_.push_back(microdump.GetMemory());
+  process_state->crashed_ = true;
+  process_state->requesting_thread_ = 0;
+  process_state->system_info_ = *microdump.GetSystemInfo();
+
+  return PROCESS_OK;
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/processor/microdump_processor_unittest.cc b/google-breakpad/src/processor/microdump_processor_unittest.cc
new file mode 100644
index 0000000..10e5351
--- /dev/null
+++ b/google-breakpad/src/processor/microdump_processor_unittest.cc
@@ -0,0 +1,197 @@
+// Copyright (c) 2014, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Unit test for MicrodumpProcessor.
+
+#include <fstream>
+#include <iostream>
+#include <string>
+#include <vector>
+
+#include "breakpad_googletest_includes.h"
+#include "google_breakpad/processor/basic_source_line_resolver.h"
+#include "google_breakpad/processor/call_stack.h"
+#include "google_breakpad/processor/microdump_processor.h"
+#include "google_breakpad/processor/process_state.h"
+#include "google_breakpad/processor/stack_frame.h"
+#include "google_breakpad/processor/stack_frame_symbolizer.h"
+#include "processor/simple_symbol_supplier.h"
+#include "processor/stackwalker_unittest_utils.h"
+
+namespace {
+
+using google_breakpad::BasicSourceLineResolver;
+using google_breakpad::MicrodumpProcessor;
+using google_breakpad::ProcessState;
+using google_breakpad::SimpleSymbolSupplier;
+using google_breakpad::StackFrameSymbolizer;
+
+class MicrodumpProcessorTest : public ::testing::Test {
+ public:
+  MicrodumpProcessorTest()
+    : files_path_(string(getenv("srcdir") ? getenv("srcdir") : ".") +
+                  "/src/processor/testdata/") {
+  }
+
+  void ReadFile(const string& file_name, string* file_contents) {
+    assert(file_contents);
+    std::ifstream file_stream(file_name.c_str(), std::ios::in);
+    ASSERT_TRUE(file_stream.good());
+    std::vector<char> bytes;
+    file_stream.seekg(0, std::ios_base::end);
+    ASSERT_TRUE(file_stream.good());
+    bytes.resize(file_stream.tellg());
+    file_stream.seekg(0, std::ios_base::beg);
+    ASSERT_TRUE(file_stream.good());
+    file_stream.read(&bytes[0], bytes.size());
+    ASSERT_TRUE(file_stream.good());
+    *file_contents = string(&bytes[0], bytes.size());
+  }
+
+  google_breakpad::ProcessResult ProcessMicrodump(
+      const string& symbols_file,
+      const string& microdump_contents,
+      ProcessState* state) {
+    SimpleSymbolSupplier supplier(symbols_file);
+    BasicSourceLineResolver resolver;
+    StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+    MicrodumpProcessor processor(&frame_symbolizer);
+
+    return processor.Process(microdump_contents, state);
+  }
+
+  void AnalyzeDump(const string& microdump_file_name, ProcessState* state,
+                   bool omit_symbols) {
+    string symbols_file = omit_symbols ? "" : files_path_ + "symbols/microdump";
+    string microdump_file_path = files_path_ + microdump_file_name;
+    string microdump_contents;
+    ReadFile(microdump_file_path, &microdump_contents);
+
+    google_breakpad::ProcessResult result =
+        ProcessMicrodump(symbols_file, microdump_contents, state);
+
+    ASSERT_EQ(google_breakpad::PROCESS_OK, result);
+    ASSERT_TRUE(state->crashed());
+    ASSERT_EQ(0, state->requesting_thread());
+    ASSERT_EQ(1U, state->threads()->size());
+
+    ASSERT_EQ(2, state->system_info()->cpu_count);
+    ASSERT_EQ("android", state->system_info()->os_short);
+    ASSERT_EQ("Android", state->system_info()->os);
+  }
+
+  string files_path_;
+};
+
+TEST_F(MicrodumpProcessorTest, TestProcess_Empty) {
+  ProcessState state;
+  google_breakpad::ProcessResult result =
+      ProcessMicrodump("", "", &state);
+  ASSERT_EQ(google_breakpad::PROCESS_ERROR_MINIDUMP_NOT_FOUND, result);
+}
+
+TEST_F(MicrodumpProcessorTest, TestProcess_Invalid) {
+  ProcessState state;
+  google_breakpad::ProcessResult result =
+      ProcessMicrodump("", "This is not a valid microdump", &state);
+  ASSERT_EQ(google_breakpad::PROCESS_ERROR_NO_THREAD_LIST, result);
+}
+
+TEST_F(MicrodumpProcessorTest, TestProcess_MissingSymbols) {
+  ProcessState state;
+  AnalyzeDump("microdump-arm64.dmp", &state, true /* omit_symbols */);
+
+  ASSERT_EQ(8U, state.modules()->module_count());
+  ASSERT_EQ("aarch64", state.system_info()->cpu);
+  ASSERT_EQ("OS 64 VERSION INFO", state.system_info()->os_version);
+  ASSERT_EQ(1U, state.threads()->size());
+  ASSERT_EQ(12U, state.threads()->at(0)->frames()->size());
+
+  ASSERT_EQ("",
+            state.threads()->at(0)->frames()->at(0)->function_name);
+  ASSERT_EQ("",
+            state.threads()->at(0)->frames()->at(3)->function_name);
+}
+
+TEST_F(MicrodumpProcessorTest, TestProcess_UnsupportedArch) {
+  string microdump_contents =
+      "W/google-breakpad(26491): -----BEGIN BREAKPAD MICRODUMP-----\n"
+      "W/google-breakpad(26491): O A \"unsupported-arch\"\n"
+      "W/google-breakpad(26491): S 0 A48BD840 A48BD000 00002000\n";
+
+  ProcessState state;
+
+  google_breakpad::ProcessResult result =
+      ProcessMicrodump("", microdump_contents, &state);
+
+  ASSERT_EQ(google_breakpad::PROCESS_ERROR_NO_THREAD_LIST, result);
+}
+
+TEST_F(MicrodumpProcessorTest, TestProcessArm) {
+  ProcessState state;
+  AnalyzeDump("microdump-arm.dmp", &state, false /* omit_symbols */);
+
+  ASSERT_EQ(6U, state.modules()->module_count());
+  ASSERT_EQ("armv7l", state.system_info()->cpu);
+  ASSERT_EQ("OS VERSION INFO", state.system_info()->os_version);
+  ASSERT_EQ(8U, state.threads()->at(0)->frames()->size());
+  ASSERT_EQ("MicrodumpWriterTest_Setup_Test::TestBody",
+            state.threads()->at(0)->frames()->at(0)->function_name);
+  ASSERT_EQ("testing::Test::Run",
+            state.threads()->at(0)->frames()->at(1)->function_name);
+  ASSERT_EQ("main",
+            state.threads()->at(0)->frames()->at(6)->function_name);
+  ASSERT_EQ("breakpad_unittests",
+            state.threads()->at(0)->frames()->at(6)->module->code_file());
+}
+
+TEST_F(MicrodumpProcessorTest, TestProcessArm64) {
+  ProcessState state;
+  AnalyzeDump("microdump-arm64.dmp", &state, false /* omit_symbols */);
+
+  ASSERT_EQ(8U, state.modules()->module_count());
+  ASSERT_EQ("aarch64", state.system_info()->cpu);
+  ASSERT_EQ("OS 64 VERSION INFO", state.system_info()->os_version);
+  ASSERT_EQ(9U, state.threads()->at(0)->frames()->size());
+  ASSERT_EQ("MicrodumpWriterTest_Setup_Test::TestBody",
+            state.threads()->at(0)->frames()->at(0)->function_name);
+  ASSERT_EQ("testing::Test::Run",
+            state.threads()->at(0)->frames()->at(2)->function_name);
+  ASSERT_EQ("main",
+            state.threads()->at(0)->frames()->at(7)->function_name);
+  ASSERT_EQ("breakpad_unittests",
+            state.threads()->at(0)->frames()->at(7)->module->code_file());
+}
+
+}  // namespace
+
+int main(int argc, char* argv[]) {
+  ::testing::InitGoogleTest(&argc, argv);
+  return RUN_ALL_TESTS();
+}
diff --git a/google-breakpad/src/processor/microdump_stackwalk.cc b/google-breakpad/src/processor/microdump_stackwalk.cc
new file mode 100644
index 0000000..7ea8049
--- /dev/null
+++ b/google-breakpad/src/processor/microdump_stackwalk.cc
@@ -0,0 +1,151 @@
+// Copyright (c) 2014 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// microdump_stackwalk.cc: Process a microdump with MicrodumpProcessor, printing
+// the results, including stack traces.
+
+#include <stdio.h>
+#include <string.h>
+
+#include <fstream>
+#include <string>
+#include <vector>
+
+#include "common/scoped_ptr.h"
+#include "common/using_std_string.h"
+#include "google_breakpad/processor/basic_source_line_resolver.h"
+#include "google_breakpad/processor/microdump_processor.h"
+#include "google_breakpad/processor/process_state.h"
+#include "google_breakpad/processor/stack_frame_symbolizer.h"
+#include "processor/logging.h"
+#include "processor/simple_symbol_supplier.h"
+#include "processor/stackwalk_common.h"
+
+
+namespace {
+
+using google_breakpad::BasicSourceLineResolver;
+using google_breakpad::MicrodumpProcessor;
+using google_breakpad::ProcessResult;
+using google_breakpad::ProcessState;
+using google_breakpad::scoped_ptr;
+using google_breakpad::SimpleSymbolSupplier;
+using google_breakpad::StackFrameSymbolizer;
+
+// Processes |microdump_file| using MicrodumpProcessor. |symbol_path|, if
+// non-empty, is the base directory of a symbol storage area, laid out in
+// the format required by SimpleSymbolSupplier.  If such a storage area
+// is specified, it is made available for use by the MicrodumpProcessor.
+//
+// Returns the value of MicrodumpProcessor::Process. If processing succeeds,
+// prints identifying OS and CPU information from the microdump, crash
+// information and call stacks for the crashing thread.
+// All information is printed to stdout.
+int PrintMicrodumpProcess(const char* microdump_file,
+                          const std::vector<string>& symbol_paths,
+                          bool machine_readable) {
+  std::ifstream file_stream(microdump_file);
+  std::vector<char> bytes;
+  file_stream.seekg(0, std::ios_base::end);
+  bytes.resize(file_stream.tellg());
+  file_stream.seekg(0, std::ios_base::beg);
+  file_stream.read(&bytes[0], bytes.size());
+  string microdump_content(&bytes[0], bytes.size());
+
+  scoped_ptr<SimpleSymbolSupplier> symbol_supplier;
+  if (!symbol_paths.empty()) {
+    symbol_supplier.reset(new SimpleSymbolSupplier(symbol_paths));
+  }
+
+  BasicSourceLineResolver resolver;
+  StackFrameSymbolizer frame_symbolizer(symbol_supplier.get(), &resolver);
+  ProcessState process_state;
+  MicrodumpProcessor microdump_processor(&frame_symbolizer);
+  ProcessResult res = microdump_processor.Process(microdump_content,
+                                                  &process_state);
+
+  if (res == google_breakpad::PROCESS_OK) {
+    if (machine_readable) {
+      PrintProcessStateMachineReadable(process_state);
+    } else {
+      PrintProcessState(process_state, false, &resolver);
+    }
+    return 0;
+  }
+
+  BPLOG(ERROR) << "MicrodumpProcessor::Process failed (code = " << res << ")";
+  return 1;
+}
+
+void usage(const char *program_name) {
+  fprintf(stderr, "usage: %s [-m] <microdump-file> [symbol-path ...]\n"
+          "    -m : Output in machine-readable format\n",
+          program_name);
+}
+
+}  // namespace
+
+int main(int argc, char** argv) {
+  BPLOG_INIT(&argc, &argv);
+
+  if (argc < 2) {
+    usage(argv[0]);
+    return 1;
+  }
+
+  const char* microdump_file;
+  bool machine_readable;
+  int symbol_path_arg;
+
+  if (strcmp(argv[1], "-m") == 0) {
+    if (argc < 3) {
+      usage(argv[0]);
+      return 1;
+    }
+
+    machine_readable = true;
+    microdump_file = argv[2];
+    symbol_path_arg = 3;
+  } else {
+    machine_readable = false;
+    microdump_file = argv[1];
+    symbol_path_arg = 2;
+  }
+
+  // extra arguments are symbol paths
+  std::vector<string> symbol_paths;
+  if (argc > symbol_path_arg) {
+    for (int argi = symbol_path_arg; argi < argc; ++argi)
+      symbol_paths.push_back(argv[argi]);
+  }
+
+  return PrintMicrodumpProcess(microdump_file,
+                               symbol_paths,
+                               machine_readable);
+}
diff --git a/google-breakpad/src/processor/microdump_stackwalk_machine_readable_test b/google-breakpad/src/processor/microdump_stackwalk_machine_readable_test
new file mode 100755
index 0000000..fadec26
--- /dev/null
+++ b/google-breakpad/src/processor/microdump_stackwalk_machine_readable_test
@@ -0,0 +1,43 @@
+#!/bin/sh
+
+# Copyright (c) 2014, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+source "${0%/*}/microdump_stackwalk_test_vars"  # for MICRODUMP_SUPPORTED_ARCHS.
+testdata_dir=$srcdir/src/processor/testdata
+
+set -e  # Bail out with an error if any of the commands below fails.
+for ARCH in $MICRODUMP_SUPPORTED_ARCHS; do
+  echo "Testing microdump_stackwalk -m for arch $ARCH"
+  ./src/processor/microdump_stackwalk -m $testdata_dir/microdump-${ARCH}.dmp \
+                                         $testdata_dir/symbols/microdump | \
+   tr -d '\015' | \
+   diff -u $testdata_dir/microdump.stackwalk.machine_readable-${ARCH}.out -
+done
+exit 0
diff --git a/google-breakpad/src/processor/microdump_stackwalk_test b/google-breakpad/src/processor/microdump_stackwalk_test
new file mode 100755
index 0000000..5a1f3d5
--- /dev/null
+++ b/google-breakpad/src/processor/microdump_stackwalk_test
@@ -0,0 +1,43 @@
+#!/bin/sh
+
+# Copyright (c) 2014, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+source "${0%/*}/microdump_stackwalk_test_vars"  # for MICRODUMP_SUPPORTED_ARCHS.
+testdata_dir=$srcdir/src/processor/testdata
+
+set -e  # Bail out with an error if any of the commands below fails.
+for ARCH in $MICRODUMP_SUPPORTED_ARCHS; do
+  echo "Testing microdump_stackwalk for arch $ARCH"
+  ./src/processor/microdump_stackwalk $testdata_dir/microdump-${ARCH}.dmp \
+                                      $testdata_dir/symbols/microdump | \
+   tr -d '\015' | \
+   diff -u $testdata_dir/microdump.stackwalk-${ARCH}.out -
+done
+exit 0
diff --git a/google-breakpad/src/processor/microdump_stackwalk_test_vars b/google-breakpad/src/processor/microdump_stackwalk_test_vars
new file mode 100644
index 0000000..a8b0e0d
--- /dev/null
+++ b/google-breakpad/src/processor/microdump_stackwalk_test_vars
@@ -0,0 +1 @@
+MICRODUMP_SUPPORTED_ARCHS="arm arm64"
diff --git a/google-breakpad/src/processor/minidump.cc b/google-breakpad/src/processor/minidump.cc
new file mode 100644
index 0000000..08f6465
--- /dev/null
+++ b/google-breakpad/src/processor/minidump.cc
@@ -0,0 +1,4631 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// minidump.cc: A minidump reader.
+//
+// See minidump.h for documentation.
+//
+// Author: Mark Mentovai
+
+#include "google_breakpad/processor/minidump.h"
+
+#include <assert.h>
+#include <fcntl.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <string.h>
+#include <time.h>
+
+#ifdef _WIN32
+#include <io.h>
+#define PRIx64 "llx"
+#define PRIx32 "lx"
+#define snprintf _snprintf
+#else  // _WIN32
+#include <unistd.h>
+#endif  // _WIN32
+
+#include <fstream>
+#include <iostream>
+#include <limits>
+#include <map>
+#include <vector>
+
+#include "processor/range_map-inl.h"
+
+#include "common/scoped_ptr.h"
+#include "google_breakpad/processor/dump_context.h"
+#include "processor/basic_code_module.h"
+#include "processor/basic_code_modules.h"
+#include "processor/logging.h"
+
+namespace google_breakpad {
+
+
+using std::istream;
+using std::ifstream;
+using std::numeric_limits;
+using std::vector;
+
+// Returns true iff |context_size| matches exactly one of the sizes of the
+// various MDRawContext* types.
+// TODO(blundell): This function can be removed once
+// http://code.google.com/p/google-breakpad/issues/detail?id=550 is fixed.
+static bool IsContextSizeUnique(uint32_t context_size) {
+  int num_matching_contexts = 0;
+  if (context_size == sizeof(MDRawContextX86))
+    num_matching_contexts++;
+  if (context_size == sizeof(MDRawContextPPC))
+    num_matching_contexts++;
+  if (context_size == sizeof(MDRawContextPPC64))
+    num_matching_contexts++;
+  if (context_size == sizeof(MDRawContextAMD64))
+    num_matching_contexts++;
+  if (context_size == sizeof(MDRawContextSPARC))
+    num_matching_contexts++;
+  if (context_size == sizeof(MDRawContextARM))
+    num_matching_contexts++;
+  if (context_size == sizeof(MDRawContextARM64))
+    num_matching_contexts++;
+  if (context_size == sizeof(MDRawContextMIPS))
+    num_matching_contexts++;
+  return num_matching_contexts == 1;
+}
+
+//
+// Swapping routines
+//
+// Inlining these doesn't increase code size significantly, and it saves
+// a whole lot of unnecessary jumping back and forth.
+//
+
+
+// Swapping an 8-bit quantity is a no-op.  This function is only provided
+// to account for certain templatized operations that require swapping for
+// wider types but handle uint8_t too
+// (MinidumpMemoryRegion::GetMemoryAtAddressInternal).
+static inline void Swap(uint8_t* value) {
+}
+
+
+// Optimization: don't need to AND the furthest right shift, because we're
+// shifting an unsigned quantity.  The standard requires zero-filling in this
+// case.  If the quantities were signed, a bitmask whould be needed for this
+// right shift to avoid an arithmetic shift (which retains the sign bit).
+// The furthest left shift never needs to be ANDed bitmask.
+
+
+static inline void Swap(uint16_t* value) {
+  *value = (*value >> 8) |
+           (*value << 8);
+}
+
+
+static inline void Swap(uint32_t* value) {
+  *value =  (*value >> 24) |
+           ((*value >> 8)  & 0x0000ff00) |
+           ((*value << 8)  & 0x00ff0000) |
+            (*value << 24);
+}
+
+
+static inline void Swap(uint64_t* value) {
+  uint32_t* value32 = reinterpret_cast<uint32_t*>(value);
+  Swap(&value32[0]);
+  Swap(&value32[1]);
+  uint32_t temp = value32[0];
+  value32[0] = value32[1];
+  value32[1] = temp;
+}
+
+
+// Given a pointer to a 128-bit int in the minidump data, set the "low"
+// and "high" fields appropriately.
+static void Normalize128(uint128_struct* value, bool is_big_endian) {
+  // The struct format is [high, low], so if the format is big-endian,
+  // the most significant bytes will already be in the high field.
+  if (!is_big_endian) {
+    uint64_t temp = value->low;
+    value->low = value->high;
+    value->high = temp;
+  }
+}
+
+// This just swaps each int64 half of the 128-bit value.
+// The value should also be normalized by calling Normalize128().
+static void Swap(uint128_struct* value) {
+  Swap(&value->low);
+  Swap(&value->high);
+}
+
+// Swapping signed integers
+static inline void Swap(int16_t* value) {
+  Swap(reinterpret_cast<uint16_t*>(value));
+}
+
+static inline void Swap(int32_t* value) {
+  Swap(reinterpret_cast<uint32_t*>(value));
+}
+
+static inline void Swap(int64_t* value) {
+  Swap(reinterpret_cast<uint64_t*>(value));
+}
+
+
+static inline void Swap(MDLocationDescriptor* location_descriptor) {
+  Swap(&location_descriptor->data_size);
+  Swap(&location_descriptor->rva);
+}
+
+
+static inline void Swap(MDMemoryDescriptor* memory_descriptor) {
+  Swap(&memory_descriptor->start_of_memory_range);
+  Swap(&memory_descriptor->memory);
+}
+
+
+static inline void Swap(MDGUID* guid) {
+  Swap(&guid->data1);
+  Swap(&guid->data2);
+  Swap(&guid->data3);
+  // Don't swap guid->data4[] because it contains 8-bit quantities.
+}
+
+static inline void Swap(MDSystemTime* system_time) {
+  Swap(&system_time->year);
+  Swap(&system_time->month);
+  Swap(&system_time->day_of_week);
+  Swap(&system_time->day);
+  Swap(&system_time->hour);
+  Swap(&system_time->minute);
+  Swap(&system_time->second);
+  Swap(&system_time->milliseconds);
+}
+
+static inline void Swap(uint16_t* data, size_t size_in_bytes) {
+  size_t data_length = size_in_bytes / sizeof(data[0]);
+  for (size_t i = 0; i < data_length; i++) {
+    Swap(&data[i]);
+  }
+}
+
+//
+// Character conversion routines
+//
+
+
+// Standard wide-character conversion routines depend on the system's own
+// idea of what width a wide character should be: some use 16 bits, and
+// some use 32 bits.  For the purposes of a minidump, wide strings are
+// always represented with 16-bit UTF-16 chracters.  iconv isn't available
+// everywhere, and its interface varies where it is available.  iconv also
+// deals purely with char* pointers, so in addition to considering the swap
+// parameter, a converter that uses iconv would also need to take the host
+// CPU's endianness into consideration.  It doesn't seems worth the trouble
+// of making it a dependency when we don't care about anything but UTF-16.
+static string* UTF16ToUTF8(const vector<uint16_t>& in,
+                           bool swap) {
+  scoped_ptr<string> out(new string());
+
+  // Set the string's initial capacity to the number of UTF-16 characters,
+  // because the UTF-8 representation will always be at least this long.
+  // If the UTF-8 representation is longer, the string will grow dynamically.
+  out->reserve(in.size());
+
+  for (vector<uint16_t>::const_iterator iterator = in.begin();
+       iterator != in.end();
+       ++iterator) {
+    // Get a 16-bit value from the input
+    uint16_t in_word = *iterator;
+    if (swap)
+      Swap(&in_word);
+
+    // Convert the input value (in_word) into a Unicode code point (unichar).
+    uint32_t unichar;
+    if (in_word >= 0xdc00 && in_word <= 0xdcff) {
+      BPLOG(ERROR) << "UTF16ToUTF8 found low surrogate " <<
+                      HexString(in_word) << " without high";
+      return NULL;
+    } else if (in_word >= 0xd800 && in_word <= 0xdbff) {
+      // High surrogate.
+      unichar = (in_word - 0xd7c0) << 10;
+      if (++iterator == in.end()) {
+        BPLOG(ERROR) << "UTF16ToUTF8 found high surrogate " <<
+                        HexString(in_word) << " at end of string";
+        return NULL;
+      }
+      uint32_t high_word = in_word;
+      in_word = *iterator;
+      if (in_word < 0xdc00 || in_word > 0xdcff) {
+        BPLOG(ERROR) << "UTF16ToUTF8 found high surrogate " <<
+                        HexString(high_word) << " without low " <<
+                        HexString(in_word);
+        return NULL;
+      }
+      unichar |= in_word & 0x03ff;
+    } else {
+      // The ordinary case, a single non-surrogate Unicode character encoded
+      // as a single 16-bit value.
+      unichar = in_word;
+    }
+
+    // Convert the Unicode code point (unichar) into its UTF-8 representation,
+    // appending it to the out string.
+    if (unichar < 0x80) {
+      (*out) += static_cast<char>(unichar);
+    } else if (unichar < 0x800) {
+      (*out) += 0xc0 | static_cast<char>(unichar >> 6);
+      (*out) += 0x80 | static_cast<char>(unichar & 0x3f);
+    } else if (unichar < 0x10000) {
+      (*out) += 0xe0 | static_cast<char>(unichar >> 12);
+      (*out) += 0x80 | static_cast<char>((unichar >> 6) & 0x3f);
+      (*out) += 0x80 | static_cast<char>(unichar & 0x3f);
+    } else if (unichar < 0x200000) {
+      (*out) += 0xf0 | static_cast<char>(unichar >> 18);
+      (*out) += 0x80 | static_cast<char>((unichar >> 12) & 0x3f);
+      (*out) += 0x80 | static_cast<char>((unichar >> 6) & 0x3f);
+      (*out) += 0x80 | static_cast<char>(unichar & 0x3f);
+    } else {
+      BPLOG(ERROR) << "UTF16ToUTF8 cannot represent high value " <<
+                      HexString(unichar) << " in UTF-8";
+      return NULL;
+    }
+  }
+
+  return out.release();
+}
+
+// Return the smaller of the number of code units in the UTF-16 string,
+// not including the terminating null word, or maxlen.
+static size_t UTF16codeunits(const uint16_t *string, size_t maxlen) {
+  size_t count = 0;
+  while (count < maxlen && string[count] != 0)
+    count++;
+  return count;
+}
+
+static inline void Swap(MDTimeZoneInformation* time_zone) {
+  Swap(&time_zone->bias);
+  // Skip time_zone->standard_name.  No need to swap UTF-16 fields.
+  // The swap will be done as part of the conversion to UTF-8.
+  Swap(&time_zone->standard_date);
+  Swap(&time_zone->standard_bias);
+  // Skip time_zone->daylight_name.  No need to swap UTF-16 fields.
+  // The swap will be done as part of the conversion to UTF-8.
+  Swap(&time_zone->daylight_date);
+  Swap(&time_zone->daylight_bias);
+}
+
+static void ConvertUTF16BufferToUTF8String(const uint16_t* utf16_data,
+                                           size_t max_length_in_bytes,
+                                           string* utf8_result,
+                                           bool swap) {
+  // Since there is no explicit byte length for each string, use
+  // UTF16codeunits to calculate word length, then derive byte
+  // length from that.
+  size_t max_word_length = max_length_in_bytes / sizeof(utf16_data[0]);
+  size_t word_length = UTF16codeunits(utf16_data, max_word_length);
+  if (word_length > 0) {
+    size_t byte_length = word_length * sizeof(utf16_data[0]);
+    vector<uint16_t> utf16_vector(word_length);
+    memcpy(&utf16_vector[0], &utf16_data[0], byte_length);
+    scoped_ptr<string> temp(UTF16ToUTF8(utf16_vector, swap));
+    if (temp.get()) {
+      utf8_result->assign(*temp);
+    }
+  } else {
+    utf8_result->clear();
+  }
+}
+
+
+// For fields that may or may not be valid, PrintValueOrInvalid will print the
+// string "(invalid)" if the field is not valid, and will print the value if
+// the field is valid. The value is printed as hexadecimal or decimal.
+
+enum NumberFormat {
+  kNumberFormatDecimal,
+  kNumberFormatHexadecimal,
+};
+
+static void PrintValueOrInvalid(bool valid,
+                                NumberFormat number_format,
+                                uint32_t value) {
+  if (!valid) {
+    printf("(invalid)\n");
+  } else if (number_format == kNumberFormatDecimal) {
+    printf("%d\n", value);
+  } else {
+    printf("0x%x\n", value);
+  }
+}
+
+// Converts a time_t to a string showing the time in UTC.
+string TimeTToUTCString(time_t tt) {
+  struct tm timestruct;
+#ifdef _WIN32
+  gmtime_s(&timestruct, &tt);
+#else
+  gmtime_r(&tt, &timestruct);
+#endif
+
+  char timestr[20];
+  int rv = strftime(timestr, 20, "%Y-%m-%d %H:%M:%S", &timestruct);
+  if (rv == 0) {
+    return string();
+  }
+
+  return string(timestr);
+}
+
+
+//
+// MinidumpObject
+//
+
+
+MinidumpObject::MinidumpObject(Minidump* minidump)
+    : DumpObject(),
+      minidump_(minidump) {
+}
+
+
+//
+// MinidumpStream
+//
+
+
+MinidumpStream::MinidumpStream(Minidump* minidump)
+    : MinidumpObject(minidump) {
+}
+
+
+//
+// MinidumpContext
+//
+
+
+MinidumpContext::MinidumpContext(Minidump* minidump)
+    : DumpContext(),
+      minidump_(minidump) {
+}
+
+MinidumpContext::~MinidumpContext() {
+}
+
+bool MinidumpContext::Read(uint32_t expected_size) {
+  valid_ = false;
+
+  // Certain raw context types are currently assumed to have unique sizes.
+  if (!IsContextSizeUnique(sizeof(MDRawContextAMD64))) {
+    BPLOG(ERROR) << "sizeof(MDRawContextAMD64) cannot match the size of any "
+                 << "other raw context";
+    return false;
+  }
+  if (!IsContextSizeUnique(sizeof(MDRawContextPPC64))) {
+    BPLOG(ERROR) << "sizeof(MDRawContextPPC64) cannot match the size of any "
+                 << "other raw context";
+    return false;
+  }
+  if (!IsContextSizeUnique(sizeof(MDRawContextARM64))) {
+    BPLOG(ERROR) << "sizeof(MDRawContextARM64) cannot match the size of any "
+                 << "other raw context";
+    return false;
+  }
+
+  FreeContext();
+
+  // First, figure out what type of CPU this context structure is for.
+  // For some reason, the AMD64 Context doesn't have context_flags
+  // at the beginning of the structure, so special case it here.
+  if (expected_size == sizeof(MDRawContextAMD64)) {
+    BPLOG(INFO) << "MinidumpContext: looks like AMD64 context";
+
+    scoped_ptr<MDRawContextAMD64> context_amd64(new MDRawContextAMD64());
+    if (!minidump_->ReadBytes(context_amd64.get(),
+                              sizeof(MDRawContextAMD64))) {
+      BPLOG(ERROR) << "MinidumpContext could not read amd64 context";
+      return false;
+    }
+
+    if (minidump_->swap())
+      Swap(&context_amd64->context_flags);
+
+    uint32_t cpu_type = context_amd64->context_flags & MD_CONTEXT_CPU_MASK;
+    if (cpu_type == 0) {
+      if (minidump_->GetContextCPUFlagsFromSystemInfo(&cpu_type)) {
+        context_amd64->context_flags |= cpu_type;
+      } else {
+        BPLOG(ERROR) << "Failed to preserve the current stream position";
+        return false;
+      }
+    }
+
+    if (cpu_type != MD_CONTEXT_AMD64) {
+      // TODO: Fall through to switch below.
+      // http://code.google.com/p/google-breakpad/issues/detail?id=550
+      BPLOG(ERROR) << "MinidumpContext not actually amd64 context";
+      return false;
+    }
+
+    // Do this after reading the entire MDRawContext structure because
+    // GetSystemInfo may seek minidump to a new position.
+    if (!CheckAgainstSystemInfo(cpu_type)) {
+      BPLOG(ERROR) << "MinidumpContext amd64 does not match system info";
+      return false;
+    }
+
+    // Normalize the 128-bit types in the dump.
+    // Since this is AMD64, by definition, the values are little-endian.
+    for (unsigned int vr_index = 0;
+         vr_index < MD_CONTEXT_AMD64_VR_COUNT;
+         ++vr_index)
+      Normalize128(&context_amd64->vector_register[vr_index], false);
+
+    if (minidump_->swap()) {
+      Swap(&context_amd64->p1_home);
+      Swap(&context_amd64->p2_home);
+      Swap(&context_amd64->p3_home);
+      Swap(&context_amd64->p4_home);
+      Swap(&context_amd64->p5_home);
+      Swap(&context_amd64->p6_home);
+      // context_flags is already swapped
+      Swap(&context_amd64->mx_csr);
+      Swap(&context_amd64->cs);
+      Swap(&context_amd64->ds);
+      Swap(&context_amd64->es);
+      Swap(&context_amd64->fs);
+      Swap(&context_amd64->ss);
+      Swap(&context_amd64->eflags);
+      Swap(&context_amd64->dr0);
+      Swap(&context_amd64->dr1);
+      Swap(&context_amd64->dr2);
+      Swap(&context_amd64->dr3);
+      Swap(&context_amd64->dr6);
+      Swap(&context_amd64->dr7);
+      Swap(&context_amd64->rax);
+      Swap(&context_amd64->rcx);
+      Swap(&context_amd64->rdx);
+      Swap(&context_amd64->rbx);
+      Swap(&context_amd64->rsp);
+      Swap(&context_amd64->rbp);
+      Swap(&context_amd64->rsi);
+      Swap(&context_amd64->rdi);
+      Swap(&context_amd64->r8);
+      Swap(&context_amd64->r9);
+      Swap(&context_amd64->r10);
+      Swap(&context_amd64->r11);
+      Swap(&context_amd64->r12);
+      Swap(&context_amd64->r13);
+      Swap(&context_amd64->r14);
+      Swap(&context_amd64->r15);
+      Swap(&context_amd64->rip);
+      // FIXME: I'm not sure what actually determines
+      // which member of the union {flt_save, sse_registers}
+      // is valid.  We're not currently using either,
+      // but it would be good to have them swapped properly.
+
+      for (unsigned int vr_index = 0;
+           vr_index < MD_CONTEXT_AMD64_VR_COUNT;
+           ++vr_index)
+        Swap(&context_amd64->vector_register[vr_index]);
+      Swap(&context_amd64->vector_control);
+      Swap(&context_amd64->debug_control);
+      Swap(&context_amd64->last_branch_to_rip);
+      Swap(&context_amd64->last_branch_from_rip);
+      Swap(&context_amd64->last_exception_to_rip);
+      Swap(&context_amd64->last_exception_from_rip);
+    }
+
+    SetContextFlags(context_amd64->context_flags);
+
+    SetContextAMD64(context_amd64.release());
+  } else if (expected_size == sizeof(MDRawContextPPC64)) {
+    // |context_flags| of MDRawContextPPC64 is 64 bits, but other MDRawContext
+    // in the else case have 32 bits |context_flags|, so special case it here.
+    uint64_t context_flags;
+    if (!minidump_->ReadBytes(&context_flags, sizeof(context_flags))) {
+      BPLOG(ERROR) << "MinidumpContext could not read context flags";
+      return false;
+    }
+    if (minidump_->swap())
+      Swap(&context_flags);
+
+    uint32_t cpu_type = context_flags & MD_CONTEXT_CPU_MASK;
+    scoped_ptr<MDRawContextPPC64> context_ppc64(new MDRawContextPPC64());
+
+    if (cpu_type == 0) {
+      if (minidump_->GetContextCPUFlagsFromSystemInfo(&cpu_type)) {
+        context_ppc64->context_flags |= cpu_type;
+      } else {
+        BPLOG(ERROR) << "Failed to preserve the current stream position";
+        return false;
+      }
+    }
+
+    if (cpu_type != MD_CONTEXT_PPC64) {
+      // TODO: Fall through to switch below.
+      // http://code.google.com/p/google-breakpad/issues/detail?id=550
+      BPLOG(ERROR) << "MinidumpContext not actually ppc64 context";
+      return false;
+    }
+
+    // Set the context_flags member, which has already been read, and
+    // read the rest of the structure beginning with the first member
+    // after context_flags.
+    context_ppc64->context_flags = context_flags;
+
+    size_t flags_size = sizeof(context_ppc64->context_flags);
+    uint8_t* context_after_flags =
+          reinterpret_cast<uint8_t*>(context_ppc64.get()) + flags_size;
+    if (!minidump_->ReadBytes(context_after_flags,
+                              sizeof(MDRawContextPPC64) - flags_size)) {
+      BPLOG(ERROR) << "MinidumpContext could not read ppc64 context";
+      return false;
+    }
+
+    // Do this after reading the entire MDRawContext structure because
+    // GetSystemInfo may seek minidump to a new position.
+    if (!CheckAgainstSystemInfo(cpu_type)) {
+      BPLOG(ERROR) << "MinidumpContext ppc64 does not match system info";
+      return false;
+    }
+    if (minidump_->swap()) {
+      // context_ppc64->context_flags was already swapped.
+      Swap(&context_ppc64->srr0);
+      Swap(&context_ppc64->srr1);
+      for (unsigned int gpr_index = 0;
+           gpr_index < MD_CONTEXT_PPC64_GPR_COUNT;
+           ++gpr_index) {
+        Swap(&context_ppc64->gpr[gpr_index]);
+      }
+      Swap(&context_ppc64->cr);
+      Swap(&context_ppc64->xer);
+      Swap(&context_ppc64->lr);
+      Swap(&context_ppc64->ctr);
+      Swap(&context_ppc64->vrsave);
+      for (unsigned int fpr_index = 0;
+           fpr_index < MD_FLOATINGSAVEAREA_PPC_FPR_COUNT;
+           ++fpr_index) {
+        Swap(&context_ppc64->float_save.fpregs[fpr_index]);
+      }
+      // Don't swap context_ppc64->float_save.fpscr_pad because it is only
+      // used for padding.
+      Swap(&context_ppc64->float_save.fpscr);
+      for (unsigned int vr_index = 0;
+           vr_index < MD_VECTORSAVEAREA_PPC_VR_COUNT;
+           ++vr_index) {
+        Normalize128(&context_ppc64->vector_save.save_vr[vr_index], true);
+        Swap(&context_ppc64->vector_save.save_vr[vr_index]);
+      }
+      Swap(&context_ppc64->vector_save.save_vscr);
+      // Don't swap the padding fields in vector_save.
+      Swap(&context_ppc64->vector_save.save_vrvalid);
+    }
+
+    SetContextFlags(static_cast<uint32_t>(context_ppc64->context_flags));
+
+    // Check for data loss when converting context flags from uint64_t into
+    // uint32_t
+    if (static_cast<uint64_t>(GetContextFlags()) !=
+        context_ppc64->context_flags) {
+      BPLOG(ERROR) << "Data loss detected when converting PPC64 context_flags";
+      return false;
+    }
+
+    SetContextPPC64(context_ppc64.release());
+  } else if (expected_size == sizeof(MDRawContextARM64)) {
+    // |context_flags| of MDRawContextARM64 is 64 bits, but other MDRawContext
+    // in the else case have 32 bits |context_flags|, so special case it here.
+    uint64_t context_flags;
+
+    BPLOG(INFO) << "MinidumpContext: looks like ARM64 context";
+
+    if (!minidump_->ReadBytes(&context_flags, sizeof(context_flags))) {
+      BPLOG(ERROR) << "MinidumpContext could not read context flags";
+      return false;
+    }
+    if (minidump_->swap())
+      Swap(&context_flags);
+
+    scoped_ptr<MDRawContextARM64> context_arm64(new MDRawContextARM64());
+
+    uint32_t cpu_type = context_flags & MD_CONTEXT_CPU_MASK;
+    if (cpu_type == 0) {
+      if (minidump_->GetContextCPUFlagsFromSystemInfo(&cpu_type)) {
+        context_arm64->context_flags |= cpu_type;
+      } else {
+        BPLOG(ERROR) << "Failed to preserve the current stream position";
+        return false;
+      }
+    }
+
+    if (cpu_type != MD_CONTEXT_ARM64) {
+      // TODO: Fall through to switch below.
+      // http://code.google.com/p/google-breakpad/issues/detail?id=550
+      BPLOG(ERROR) << "MinidumpContext not actually arm64 context";
+      return false;
+    }
+
+    // Set the context_flags member, which has already been read, and
+    // read the rest of the structure beginning with the first member
+    // after context_flags.
+    context_arm64->context_flags = context_flags;
+
+    size_t flags_size = sizeof(context_arm64->context_flags);
+    uint8_t* context_after_flags =
+        reinterpret_cast<uint8_t*>(context_arm64.get()) + flags_size;
+    if (!minidump_->ReadBytes(context_after_flags,
+                              sizeof(MDRawContextARM64) - flags_size)) {
+      BPLOG(ERROR) << "MinidumpContext could not read arm64 context";
+      return false;
+    }
+
+    // Do this after reading the entire MDRawContext structure because
+    // GetSystemInfo may seek minidump to a new position.
+    if (!CheckAgainstSystemInfo(cpu_type)) {
+      BPLOG(ERROR) << "MinidumpContext arm64 does not match system info";
+      return false;
+    }
+
+    if (minidump_->swap()) {
+      // context_arm64->context_flags was already swapped.
+      for (unsigned int ireg_index = 0;
+           ireg_index < MD_CONTEXT_ARM64_GPR_COUNT;
+           ++ireg_index) {
+        Swap(&context_arm64->iregs[ireg_index]);
+      }
+      Swap(&context_arm64->cpsr);
+      Swap(&context_arm64->float_save.fpsr);
+      Swap(&context_arm64->float_save.fpcr);
+      for (unsigned int fpr_index = 0;
+           fpr_index < MD_FLOATINGSAVEAREA_ARM64_FPR_COUNT;
+           ++fpr_index) {
+        // While ARM64 is bi-endian, iOS (currently the only platform
+        // for which ARM64 support has been brought up) uses ARM64 exclusively
+        // in little-endian mode.
+        Normalize128(&context_arm64->float_save.regs[fpr_index], false);
+        Swap(&context_arm64->float_save.regs[fpr_index]);
+      }
+    }
+    SetContextFlags(static_cast<uint32_t>(context_arm64->context_flags));
+
+    // Check for data loss when converting context flags from uint64_t into
+    // uint32_t
+    if (static_cast<uint64_t>(GetContextFlags()) !=
+        context_arm64->context_flags) {
+      BPLOG(ERROR) << "Data loss detected when converting ARM64 context_flags";
+      return false;
+    }
+
+    SetContextARM64(context_arm64.release());
+  } else {
+    uint32_t context_flags;
+    if (!minidump_->ReadBytes(&context_flags, sizeof(context_flags))) {
+      BPLOG(ERROR) << "MinidumpContext could not read context flags";
+      return false;
+    }
+    if (minidump_->swap())
+      Swap(&context_flags);
+
+    uint32_t cpu_type = context_flags & MD_CONTEXT_CPU_MASK;
+    if (cpu_type == 0) {
+      // Unfortunately the flag for MD_CONTEXT_ARM that was taken
+      // from a Windows CE SDK header conflicts in practice with
+      // the CONTEXT_XSTATE flag. MD_CONTEXT_ARM has been renumbered,
+      // but handle dumps with the legacy value gracefully here.
+      if (context_flags & MD_CONTEXT_ARM_OLD) {
+        context_flags |= MD_CONTEXT_ARM;
+        context_flags &= ~MD_CONTEXT_ARM_OLD;
+        cpu_type = MD_CONTEXT_ARM;
+      }
+    }
+
+    if (cpu_type == 0) {
+      if (minidump_->GetContextCPUFlagsFromSystemInfo(&cpu_type)) {
+        context_flags |= cpu_type;
+      } else {
+        BPLOG(ERROR) << "Failed to preserve the current stream position";
+        return false;
+      }
+    }
+
+    // Allocate the context structure for the correct CPU and fill it.  The
+    // casts are slightly unorthodox, but it seems better to do that than to
+    // maintain a separate pointer for each type of CPU context structure
+    // when only one of them will be used.
+    switch (cpu_type) {
+      case MD_CONTEXT_X86: {
+        if (expected_size != sizeof(MDRawContextX86)) {
+          BPLOG(ERROR) << "MinidumpContext x86 size mismatch, " <<
+            expected_size << " != " << sizeof(MDRawContextX86);
+          return false;
+        }
+
+        scoped_ptr<MDRawContextX86> context_x86(new MDRawContextX86());
+
+        // Set the context_flags member, which has already been read, and
+        // read the rest of the structure beginning with the first member
+        // after context_flags.
+        context_x86->context_flags = context_flags;
+
+        size_t flags_size = sizeof(context_x86->context_flags);
+        uint8_t* context_after_flags =
+          reinterpret_cast<uint8_t*>(context_x86.get()) + flags_size;
+        if (!minidump_->ReadBytes(context_after_flags,
+                                  sizeof(MDRawContextX86) - flags_size)) {
+          BPLOG(ERROR) << "MinidumpContext could not read x86 context";
+          return false;
+        }
+
+        // Do this after reading the entire MDRawContext structure because
+        // GetSystemInfo may seek minidump to a new position.
+        if (!CheckAgainstSystemInfo(cpu_type)) {
+          BPLOG(ERROR) << "MinidumpContext x86 does not match system info";
+          return false;
+        }
+
+        if (minidump_->swap()) {
+          // context_x86->context_flags was already swapped.
+          Swap(&context_x86->dr0);
+          Swap(&context_x86->dr1);
+          Swap(&context_x86->dr2);
+          Swap(&context_x86->dr3);
+          Swap(&context_x86->dr6);
+          Swap(&context_x86->dr7);
+          Swap(&context_x86->float_save.control_word);
+          Swap(&context_x86->float_save.status_word);
+          Swap(&context_x86->float_save.tag_word);
+          Swap(&context_x86->float_save.error_offset);
+          Swap(&context_x86->float_save.error_selector);
+          Swap(&context_x86->float_save.data_offset);
+          Swap(&context_x86->float_save.data_selector);
+          // context_x86->float_save.register_area[] contains 8-bit quantities
+          // and does not need to be swapped.
+          Swap(&context_x86->float_save.cr0_npx_state);
+          Swap(&context_x86->gs);
+          Swap(&context_x86->fs);
+          Swap(&context_x86->es);
+          Swap(&context_x86->ds);
+          Swap(&context_x86->edi);
+          Swap(&context_x86->esi);
+          Swap(&context_x86->ebx);
+          Swap(&context_x86->edx);
+          Swap(&context_x86->ecx);
+          Swap(&context_x86->eax);
+          Swap(&context_x86->ebp);
+          Swap(&context_x86->eip);
+          Swap(&context_x86->cs);
+          Swap(&context_x86->eflags);
+          Swap(&context_x86->esp);
+          Swap(&context_x86->ss);
+          // context_x86->extended_registers[] contains 8-bit quantities and
+          // does not need to be swapped.
+        }
+
+        SetContextX86(context_x86.release());
+
+        break;
+      }
+
+      case MD_CONTEXT_PPC: {
+        if (expected_size != sizeof(MDRawContextPPC)) {
+          BPLOG(ERROR) << "MinidumpContext ppc size mismatch, " <<
+            expected_size << " != " << sizeof(MDRawContextPPC);
+          return false;
+        }
+
+        scoped_ptr<MDRawContextPPC> context_ppc(new MDRawContextPPC());
+
+        // Set the context_flags member, which has already been read, and
+        // read the rest of the structure beginning with the first member
+        // after context_flags.
+        context_ppc->context_flags = context_flags;
+
+        size_t flags_size = sizeof(context_ppc->context_flags);
+        uint8_t* context_after_flags =
+          reinterpret_cast<uint8_t*>(context_ppc.get()) + flags_size;
+        if (!minidump_->ReadBytes(context_after_flags,
+                                  sizeof(MDRawContextPPC) - flags_size)) {
+          BPLOG(ERROR) << "MinidumpContext could not read ppc context";
+          return false;
+        }
+
+        // Do this after reading the entire MDRawContext structure because
+        // GetSystemInfo may seek minidump to a new position.
+        if (!CheckAgainstSystemInfo(cpu_type)) {
+          BPLOG(ERROR) << "MinidumpContext ppc does not match system info";
+          return false;
+        }
+
+        // Normalize the 128-bit types in the dump.
+        // Since this is PowerPC, by definition, the values are big-endian.
+        for (unsigned int vr_index = 0;
+             vr_index < MD_VECTORSAVEAREA_PPC_VR_COUNT;
+             ++vr_index) {
+          Normalize128(&context_ppc->vector_save.save_vr[vr_index], true);
+        }
+
+        if (minidump_->swap()) {
+          // context_ppc->context_flags was already swapped.
+          Swap(&context_ppc->srr0);
+          Swap(&context_ppc->srr1);
+          for (unsigned int gpr_index = 0;
+               gpr_index < MD_CONTEXT_PPC_GPR_COUNT;
+               ++gpr_index) {
+            Swap(&context_ppc->gpr[gpr_index]);
+          }
+          Swap(&context_ppc->cr);
+          Swap(&context_ppc->xer);
+          Swap(&context_ppc->lr);
+          Swap(&context_ppc->ctr);
+          Swap(&context_ppc->mq);
+          Swap(&context_ppc->vrsave);
+          for (unsigned int fpr_index = 0;
+               fpr_index < MD_FLOATINGSAVEAREA_PPC_FPR_COUNT;
+               ++fpr_index) {
+            Swap(&context_ppc->float_save.fpregs[fpr_index]);
+          }
+          // Don't swap context_ppc->float_save.fpscr_pad because it is only
+          // used for padding.
+          Swap(&context_ppc->float_save.fpscr);
+          for (unsigned int vr_index = 0;
+               vr_index < MD_VECTORSAVEAREA_PPC_VR_COUNT;
+               ++vr_index) {
+            Swap(&context_ppc->vector_save.save_vr[vr_index]);
+          }
+          Swap(&context_ppc->vector_save.save_vscr);
+          // Don't swap the padding fields in vector_save.
+          Swap(&context_ppc->vector_save.save_vrvalid);
+        }
+
+        SetContextPPC(context_ppc.release());
+
+        break;
+      }
+
+      case MD_CONTEXT_SPARC: {
+        if (expected_size != sizeof(MDRawContextSPARC)) {
+          BPLOG(ERROR) << "MinidumpContext sparc size mismatch, " <<
+            expected_size << " != " << sizeof(MDRawContextSPARC);
+          return false;
+        }
+
+        scoped_ptr<MDRawContextSPARC> context_sparc(new MDRawContextSPARC());
+
+        // Set the context_flags member, which has already been read, and
+        // read the rest of the structure beginning with the first member
+        // after context_flags.
+        context_sparc->context_flags = context_flags;
+
+        size_t flags_size = sizeof(context_sparc->context_flags);
+        uint8_t* context_after_flags =
+            reinterpret_cast<uint8_t*>(context_sparc.get()) + flags_size;
+        if (!minidump_->ReadBytes(context_after_flags,
+                                  sizeof(MDRawContextSPARC) - flags_size)) {
+          BPLOG(ERROR) << "MinidumpContext could not read sparc context";
+          return false;
+        }
+
+        // Do this after reading the entire MDRawContext structure because
+        // GetSystemInfo may seek minidump to a new position.
+        if (!CheckAgainstSystemInfo(cpu_type)) {
+          BPLOG(ERROR) << "MinidumpContext sparc does not match system info";
+          return false;
+        }
+
+        if (minidump_->swap()) {
+          // context_sparc->context_flags was already swapped.
+          for (unsigned int gpr_index = 0;
+               gpr_index < MD_CONTEXT_SPARC_GPR_COUNT;
+               ++gpr_index) {
+            Swap(&context_sparc->g_r[gpr_index]);
+          }
+          Swap(&context_sparc->ccr);
+          Swap(&context_sparc->pc);
+          Swap(&context_sparc->npc);
+          Swap(&context_sparc->y);
+          Swap(&context_sparc->asi);
+          Swap(&context_sparc->fprs);
+          for (unsigned int fpr_index = 0;
+               fpr_index < MD_FLOATINGSAVEAREA_SPARC_FPR_COUNT;
+               ++fpr_index) {
+            Swap(&context_sparc->float_save.regs[fpr_index]);
+          }
+          Swap(&context_sparc->float_save.filler);
+          Swap(&context_sparc->float_save.fsr);
+        }
+        SetContextSPARC(context_sparc.release());
+
+        break;
+      }
+
+      case MD_CONTEXT_ARM: {
+        if (expected_size != sizeof(MDRawContextARM)) {
+          BPLOG(ERROR) << "MinidumpContext arm size mismatch, " <<
+            expected_size << " != " << sizeof(MDRawContextARM);
+          return false;
+        }
+
+        scoped_ptr<MDRawContextARM> context_arm(new MDRawContextARM());
+
+        // Set the context_flags member, which has already been read, and
+        // read the rest of the structure beginning with the first member
+        // after context_flags.
+        context_arm->context_flags = context_flags;
+
+        size_t flags_size = sizeof(context_arm->context_flags);
+        uint8_t* context_after_flags =
+            reinterpret_cast<uint8_t*>(context_arm.get()) + flags_size;
+        if (!minidump_->ReadBytes(context_after_flags,
+                                  sizeof(MDRawContextARM) - flags_size)) {
+          BPLOG(ERROR) << "MinidumpContext could not read arm context";
+          return false;
+        }
+
+        // Do this after reading the entire MDRawContext structure because
+        // GetSystemInfo may seek minidump to a new position.
+        if (!CheckAgainstSystemInfo(cpu_type)) {
+          BPLOG(ERROR) << "MinidumpContext arm does not match system info";
+          return false;
+        }
+
+        if (minidump_->swap()) {
+          // context_arm->context_flags was already swapped.
+          for (unsigned int ireg_index = 0;
+               ireg_index < MD_CONTEXT_ARM_GPR_COUNT;
+               ++ireg_index) {
+            Swap(&context_arm->iregs[ireg_index]);
+          }
+          Swap(&context_arm->cpsr);
+          Swap(&context_arm->float_save.fpscr);
+          for (unsigned int fpr_index = 0;
+               fpr_index < MD_FLOATINGSAVEAREA_ARM_FPR_COUNT;
+               ++fpr_index) {
+            Swap(&context_arm->float_save.regs[fpr_index]);
+          }
+          for (unsigned int fpe_index = 0;
+               fpe_index < MD_FLOATINGSAVEAREA_ARM_FPEXTRA_COUNT;
+               ++fpe_index) {
+            Swap(&context_arm->float_save.extra[fpe_index]);
+          }
+        }
+        SetContextARM(context_arm.release());
+
+        break;
+      }
+
+      case MD_CONTEXT_MIPS: {
+        if (expected_size != sizeof(MDRawContextMIPS)) {
+          BPLOG(ERROR) << "MinidumpContext MIPS size mismatch, "
+                       << expected_size
+                       << " != "
+                       << sizeof(MDRawContextMIPS);
+          return false;
+        }
+
+        scoped_ptr<MDRawContextMIPS> context_mips(new MDRawContextMIPS());
+
+        // Set the context_flags member, which has already been read, and
+        // read the rest of the structure beginning with the first member
+        // after context_flags.
+        context_mips->context_flags = context_flags;
+
+        size_t flags_size = sizeof(context_mips->context_flags);
+        uint8_t* context_after_flags =
+            reinterpret_cast<uint8_t*>(context_mips.get()) + flags_size;
+        if (!minidump_->ReadBytes(context_after_flags,
+                                  sizeof(MDRawContextMIPS) - flags_size)) {
+          BPLOG(ERROR) << "MinidumpContext could not read MIPS context";
+          return false;
+        }
+
+        // Do this after reading the entire MDRawContext structure because
+        // GetSystemInfo may seek minidump to a new position.
+        if (!CheckAgainstSystemInfo(cpu_type)) {
+          BPLOG(ERROR) << "MinidumpContext MIPS does not match system info";
+          return false;
+        }
+
+        if (minidump_->swap()) {
+          // context_mips->context_flags was already swapped.
+          for (int ireg_index = 0;
+               ireg_index < MD_CONTEXT_MIPS_GPR_COUNT;
+               ++ireg_index) {
+            Swap(&context_mips->iregs[ireg_index]);
+          }
+	  Swap(&context_mips->mdhi);
+	  Swap(&context_mips->mdlo);
+          for (int dsp_index = 0;
+               dsp_index < MD_CONTEXT_MIPS_DSP_COUNT;
+               ++dsp_index) {
+            Swap(&context_mips->hi[dsp_index]);
+            Swap(&context_mips->lo[dsp_index]);
+          }
+	  Swap(&context_mips->dsp_control);
+          Swap(&context_mips->epc);
+          Swap(&context_mips->badvaddr);
+          Swap(&context_mips->status);
+          Swap(&context_mips->cause);
+          for (int fpr_index = 0;
+               fpr_index < MD_FLOATINGSAVEAREA_MIPS_FPR_COUNT;
+               ++fpr_index) {
+            Swap(&context_mips->float_save.regs[fpr_index]);
+          }
+          Swap(&context_mips->float_save.fpcsr);
+          Swap(&context_mips->float_save.fir);
+        }
+        SetContextMIPS(context_mips.release());
+
+        break;
+      }
+
+      default: {
+        // Unknown context type - Don't log as an error yet. Let the
+        // caller work that out.
+        BPLOG(INFO) << "MinidumpContext unknown context type " <<
+          HexString(cpu_type);
+        return false;
+        break;
+      }
+    }
+    SetContextFlags(context_flags);
+  }
+
+  valid_ = true;
+  return true;
+}
+
+bool MinidumpContext::CheckAgainstSystemInfo(uint32_t context_cpu_type) {
+  // It's OK if the minidump doesn't contain an MD_SYSTEM_INFO_STREAM,
+  // as this function just implements a sanity check.
+  MinidumpSystemInfo* system_info = minidump_->GetSystemInfo();
+  if (!system_info) {
+    BPLOG(INFO) << "MinidumpContext could not be compared against "
+                   "MinidumpSystemInfo";
+    return true;
+  }
+
+  // If there is an MD_SYSTEM_INFO_STREAM, it should contain valid system info.
+  const MDRawSystemInfo* raw_system_info = system_info->system_info();
+  if (!raw_system_info) {
+    BPLOG(INFO) << "MinidumpContext could not be compared against "
+                   "MDRawSystemInfo";
+    return false;
+  }
+
+  MDCPUArchitecture system_info_cpu_type = static_cast<MDCPUArchitecture>(
+      raw_system_info->processor_architecture);
+
+  // Compare the CPU type of the context record to the CPU type in the
+  // minidump's system info stream.
+  bool return_value = false;
+  switch (context_cpu_type) {
+    case MD_CONTEXT_X86:
+      if (system_info_cpu_type == MD_CPU_ARCHITECTURE_X86 ||
+          system_info_cpu_type == MD_CPU_ARCHITECTURE_X86_WIN64 ||
+          system_info_cpu_type == MD_CPU_ARCHITECTURE_AMD64) {
+        return_value = true;
+      }
+      break;
+
+    case MD_CONTEXT_PPC:
+      if (system_info_cpu_type == MD_CPU_ARCHITECTURE_PPC)
+        return_value = true;
+      break;
+
+    case MD_CONTEXT_PPC64:
+      if (system_info_cpu_type == MD_CPU_ARCHITECTURE_PPC64)
+        return_value = true;
+      break;
+
+    case MD_CONTEXT_AMD64:
+      if (system_info_cpu_type == MD_CPU_ARCHITECTURE_AMD64)
+        return_value = true;
+      break;
+
+    case MD_CONTEXT_SPARC:
+      if (system_info_cpu_type == MD_CPU_ARCHITECTURE_SPARC)
+        return_value = true;
+      break;
+
+    case MD_CONTEXT_ARM:
+      if (system_info_cpu_type == MD_CPU_ARCHITECTURE_ARM)
+        return_value = true;
+      break;
+
+    case MD_CONTEXT_ARM64:
+      if (system_info_cpu_type == MD_CPU_ARCHITECTURE_ARM64)
+        return_value = true;
+      break;
+
+    case MD_CONTEXT_MIPS:
+      if (system_info_cpu_type == MD_CPU_ARCHITECTURE_MIPS)
+        return_value = true;
+      break;
+  }
+
+  BPLOG_IF(ERROR, !return_value) << "MinidumpContext CPU " <<
+                                    HexString(context_cpu_type) <<
+                                    " wrong for MinidumpSystemInfo CPU " <<
+                                    HexString(system_info_cpu_type);
+
+  return return_value;
+}
+
+
+//
+// MinidumpMemoryRegion
+//
+
+
+uint32_t MinidumpMemoryRegion::max_bytes_ = 1024 * 1024;  // 1MB
+
+
+MinidumpMemoryRegion::MinidumpMemoryRegion(Minidump* minidump)
+    : MinidumpObject(minidump),
+      descriptor_(NULL),
+      memory_(NULL) {
+}
+
+
+MinidumpMemoryRegion::~MinidumpMemoryRegion() {
+  delete memory_;
+}
+
+
+void MinidumpMemoryRegion::SetDescriptor(MDMemoryDescriptor* descriptor) {
+  descriptor_ = descriptor;
+  valid_ = descriptor &&
+           descriptor_->memory.data_size <=
+               numeric_limits<uint64_t>::max() -
+               descriptor_->start_of_memory_range;
+}
+
+
+const uint8_t* MinidumpMemoryRegion::GetMemory() const {
+  if (!valid_) {
+    BPLOG(ERROR) << "Invalid MinidumpMemoryRegion for GetMemory";
+    return NULL;
+  }
+
+  if (!memory_) {
+    if (descriptor_->memory.data_size == 0) {
+      BPLOG(ERROR) << "MinidumpMemoryRegion is empty";
+      return NULL;
+    }
+
+    if (!minidump_->SeekSet(descriptor_->memory.rva)) {
+      BPLOG(ERROR) << "MinidumpMemoryRegion could not seek to memory region";
+      return NULL;
+    }
+
+    if (descriptor_->memory.data_size > max_bytes_) {
+      BPLOG(ERROR) << "MinidumpMemoryRegion size " <<
+                      descriptor_->memory.data_size << " exceeds maximum " <<
+                      max_bytes_;
+      return NULL;
+    }
+
+    scoped_ptr< vector<uint8_t> > memory(
+        new vector<uint8_t>(descriptor_->memory.data_size));
+
+    if (!minidump_->ReadBytes(&(*memory)[0], descriptor_->memory.data_size)) {
+      BPLOG(ERROR) << "MinidumpMemoryRegion could not read memory region";
+      return NULL;
+    }
+
+    memory_ = memory.release();
+  }
+
+  return &(*memory_)[0];
+}
+
+
+uint64_t MinidumpMemoryRegion::GetBase() const {
+  if (!valid_) {
+    BPLOG(ERROR) << "Invalid MinidumpMemoryRegion for GetBase";
+    return static_cast<uint64_t>(-1);
+  }
+
+  return descriptor_->start_of_memory_range;
+}
+
+
+uint32_t MinidumpMemoryRegion::GetSize() const {
+  if (!valid_) {
+    BPLOG(ERROR) << "Invalid MinidumpMemoryRegion for GetSize";
+    return 0;
+  }
+
+  return descriptor_->memory.data_size;
+}
+
+
+void MinidumpMemoryRegion::FreeMemory() {
+  delete memory_;
+  memory_ = NULL;
+}
+
+
+template<typename T>
+bool MinidumpMemoryRegion::GetMemoryAtAddressInternal(uint64_t address,
+                                                      T*        value) const {
+  BPLOG_IF(ERROR, !value) << "MinidumpMemoryRegion::GetMemoryAtAddressInternal "
+                             "requires |value|";
+  assert(value);
+  *value = 0;
+
+  if (!valid_) {
+    BPLOG(ERROR) << "Invalid MinidumpMemoryRegion for "
+                    "GetMemoryAtAddressInternal";
+    return false;
+  }
+
+  // Common failure case
+  if (address < descriptor_->start_of_memory_range ||
+      sizeof(T) > numeric_limits<uint64_t>::max() - address ||
+      address + sizeof(T) > descriptor_->start_of_memory_range +
+                            descriptor_->memory.data_size) {
+    BPLOG(INFO) << "MinidumpMemoryRegion request out of range: " <<
+                    HexString(address) << "+" << sizeof(T) << "/" <<
+                    HexString(descriptor_->start_of_memory_range) << "+" <<
+                    HexString(descriptor_->memory.data_size);
+    return false;
+  }
+
+  const uint8_t* memory = GetMemory();
+  if (!memory) {
+    // GetMemory already logged a perfectly good message.
+    return false;
+  }
+
+  // If the CPU requires memory accesses to be aligned, this can crash.
+  // x86 and ppc are able to cope, though.
+  *value = *reinterpret_cast<const T*>(
+      &memory[address - descriptor_->start_of_memory_range]);
+
+  if (minidump_->swap())
+    Swap(value);
+
+  return true;
+}
+
+
+bool MinidumpMemoryRegion::GetMemoryAtAddress(uint64_t  address,
+                                              uint8_t*  value) const {
+  return GetMemoryAtAddressInternal(address, value);
+}
+
+
+bool MinidumpMemoryRegion::GetMemoryAtAddress(uint64_t  address,
+                                              uint16_t* value) const {
+  return GetMemoryAtAddressInternal(address, value);
+}
+
+
+bool MinidumpMemoryRegion::GetMemoryAtAddress(uint64_t  address,
+                                              uint32_t* value) const {
+  return GetMemoryAtAddressInternal(address, value);
+}
+
+
+bool MinidumpMemoryRegion::GetMemoryAtAddress(uint64_t  address,
+                                              uint64_t* value) const {
+  return GetMemoryAtAddressInternal(address, value);
+}
+
+
+void MinidumpMemoryRegion::Print() const {
+  if (!valid_) {
+    BPLOG(ERROR) << "MinidumpMemoryRegion cannot print invalid data";
+    return;
+  }
+
+  const uint8_t* memory = GetMemory();
+  if (memory) {
+    printf("0x");
+    for (unsigned int byte_index = 0;
+         byte_index < descriptor_->memory.data_size;
+         byte_index++) {
+      printf("%02x", memory[byte_index]);
+    }
+    printf("\n");
+  } else {
+    printf("No memory\n");
+  }
+}
+
+
+//
+// MinidumpThread
+//
+
+
+MinidumpThread::MinidumpThread(Minidump* minidump)
+    : MinidumpObject(minidump),
+      thread_(),
+      memory_(NULL),
+      context_(NULL) {
+}
+
+
+MinidumpThread::~MinidumpThread() {
+  delete memory_;
+  delete context_;
+}
+
+
+bool MinidumpThread::Read() {
+  // Invalidate cached data.
+  delete memory_;
+  memory_ = NULL;
+  delete context_;
+  context_ = NULL;
+
+  valid_ = false;
+
+  if (!minidump_->ReadBytes(&thread_, sizeof(thread_))) {
+    BPLOG(ERROR) << "MinidumpThread cannot read thread";
+    return false;
+  }
+
+  if (minidump_->swap()) {
+    Swap(&thread_.thread_id);
+    Swap(&thread_.suspend_count);
+    Swap(&thread_.priority_class);
+    Swap(&thread_.priority);
+    Swap(&thread_.teb);
+    Swap(&thread_.stack);
+    Swap(&thread_.thread_context);
+  }
+
+  // Check for base + size overflow or undersize.
+  if (thread_.stack.memory.rva == 0 ||
+      thread_.stack.memory.data_size == 0 ||
+      thread_.stack.memory.data_size > numeric_limits<uint64_t>::max() -
+                                       thread_.stack.start_of_memory_range) {
+    // This is ok, but log an error anyway.
+    BPLOG(ERROR) << "MinidumpThread has a memory region problem, " <<
+                    HexString(thread_.stack.start_of_memory_range) << "+" <<
+                    HexString(thread_.stack.memory.data_size) <<
+                    ", RVA 0x" << HexString(thread_.stack.memory.rva);
+  } else {
+    memory_ = new MinidumpMemoryRegion(minidump_);
+    memory_->SetDescriptor(&thread_.stack);
+  }
+
+  valid_ = true;
+  return true;
+}
+
+uint64_t MinidumpThread::GetStartOfStackMemoryRange() const {
+  if (!valid_) {
+    BPLOG(ERROR) << "GetStartOfStackMemoryRange: Invalid MinidumpThread";
+    return 0;
+  }
+
+  return thread_.stack.start_of_memory_range;
+}
+
+MinidumpMemoryRegion* MinidumpThread::GetMemory() {
+  if (!valid_) {
+    BPLOG(ERROR) << "Invalid MinidumpThread for GetMemory";
+    return NULL;
+  }
+
+  return memory_;
+}
+
+
+MinidumpContext* MinidumpThread::GetContext() {
+  if (!valid_) {
+    BPLOG(ERROR) << "Invalid MinidumpThread for GetContext";
+    return NULL;
+  }
+
+  if (!context_) {
+    if (!minidump_->SeekSet(thread_.thread_context.rva)) {
+      BPLOG(ERROR) << "MinidumpThread cannot seek to context";
+      return NULL;
+    }
+
+    scoped_ptr<MinidumpContext> context(new MinidumpContext(minidump_));
+
+    if (!context->Read(thread_.thread_context.data_size)) {
+      BPLOG(ERROR) << "MinidumpThread cannot read context";
+      return NULL;
+    }
+
+    context_ = context.release();
+  }
+
+  return context_;
+}
+
+
+bool MinidumpThread::GetThreadID(uint32_t *thread_id) const {
+  BPLOG_IF(ERROR, !thread_id) << "MinidumpThread::GetThreadID requires "
+                                 "|thread_id|";
+  assert(thread_id);
+  *thread_id = 0;
+
+  if (!valid_) {
+    BPLOG(ERROR) << "Invalid MinidumpThread for GetThreadID";
+    return false;
+  }
+
+  *thread_id = thread_.thread_id;
+  return true;
+}
+
+
+void MinidumpThread::Print() {
+  if (!valid_) {
+    BPLOG(ERROR) << "MinidumpThread cannot print invalid data";
+    return;
+  }
+
+  printf("MDRawThread\n");
+  printf("  thread_id                   = 0x%x\n",   thread_.thread_id);
+  printf("  suspend_count               = %d\n",     thread_.suspend_count);
+  printf("  priority_class              = 0x%x\n",   thread_.priority_class);
+  printf("  priority                    = 0x%x\n",   thread_.priority);
+  printf("  teb                         = 0x%" PRIx64 "\n", thread_.teb);
+  printf("  stack.start_of_memory_range = 0x%" PRIx64 "\n",
+         thread_.stack.start_of_memory_range);
+  printf("  stack.memory.data_size      = 0x%x\n",
+         thread_.stack.memory.data_size);
+  printf("  stack.memory.rva            = 0x%x\n",   thread_.stack.memory.rva);
+  printf("  thread_context.data_size    = 0x%x\n",
+         thread_.thread_context.data_size);
+  printf("  thread_context.rva          = 0x%x\n",
+         thread_.thread_context.rva);
+
+  MinidumpContext* context = GetContext();
+  if (context) {
+    printf("\n");
+    context->Print();
+  } else {
+    printf("  (no context)\n");
+    printf("\n");
+  }
+
+  MinidumpMemoryRegion* memory = GetMemory();
+  if (memory) {
+    printf("Stack\n");
+    memory->Print();
+  } else {
+    printf("No stack\n");
+  }
+  printf("\n");
+}
+
+
+//
+// MinidumpThreadList
+//
+
+
+uint32_t MinidumpThreadList::max_threads_ = 4096;
+
+
+MinidumpThreadList::MinidumpThreadList(Minidump* minidump)
+    : MinidumpStream(minidump),
+      id_to_thread_map_(),
+      threads_(NULL),
+      thread_count_(0) {
+}
+
+
+MinidumpThreadList::~MinidumpThreadList() {
+  delete threads_;
+}
+
+
+bool MinidumpThreadList::Read(uint32_t expected_size) {
+  // Invalidate cached data.
+  id_to_thread_map_.clear();
+  delete threads_;
+  threads_ = NULL;
+  thread_count_ = 0;
+
+  valid_ = false;
+
+  uint32_t thread_count;
+  if (expected_size < sizeof(thread_count)) {
+    BPLOG(ERROR) << "MinidumpThreadList count size mismatch, " <<
+                    expected_size << " < " << sizeof(thread_count);
+    return false;
+  }
+  if (!minidump_->ReadBytes(&thread_count, sizeof(thread_count))) {
+    BPLOG(ERROR) << "MinidumpThreadList cannot read thread count";
+    return false;
+  }
+
+  if (minidump_->swap())
+    Swap(&thread_count);
+
+  if (thread_count > numeric_limits<uint32_t>::max() / sizeof(MDRawThread)) {
+    BPLOG(ERROR) << "MinidumpThreadList thread count " << thread_count <<
+                    " would cause multiplication overflow";
+    return false;
+  }
+
+  if (expected_size != sizeof(thread_count) +
+                       thread_count * sizeof(MDRawThread)) {
+    // may be padded with 4 bytes on 64bit ABIs for alignment
+    if (expected_size == sizeof(thread_count) + 4 +
+                         thread_count * sizeof(MDRawThread)) {
+      uint32_t useless;
+      if (!minidump_->ReadBytes(&useless, 4)) {
+        BPLOG(ERROR) << "MinidumpThreadList cannot read threadlist padded "
+                        "bytes";
+        return false;
+      }
+    } else {
+      BPLOG(ERROR) << "MinidumpThreadList size mismatch, " << expected_size <<
+                    " != " << sizeof(thread_count) +
+                    thread_count * sizeof(MDRawThread);
+      return false;
+    }
+  }
+
+
+  if (thread_count > max_threads_) {
+    BPLOG(ERROR) << "MinidumpThreadList count " << thread_count <<
+                    " exceeds maximum " << max_threads_;
+    return false;
+  }
+
+  if (thread_count != 0) {
+    scoped_ptr<MinidumpThreads> threads(
+        new MinidumpThreads(thread_count, MinidumpThread(minidump_)));
+
+    for (unsigned int thread_index = 0;
+         thread_index < thread_count;
+         ++thread_index) {
+      MinidumpThread* thread = &(*threads)[thread_index];
+
+      // Assume that the file offset is correct after the last read.
+      if (!thread->Read()) {
+        BPLOG(ERROR) << "MinidumpThreadList cannot read thread " <<
+                        thread_index << "/" << thread_count;
+        return false;
+      }
+
+      uint32_t thread_id;
+      if (!thread->GetThreadID(&thread_id)) {
+        BPLOG(ERROR) << "MinidumpThreadList cannot get thread ID for thread " <<
+                        thread_index << "/" << thread_count;
+        return false;
+      }
+
+      if (GetThreadByID(thread_id)) {
+        // Another thread with this ID is already in the list.  Data error.
+        BPLOG(ERROR) << "MinidumpThreadList found multiple threads with ID " <<
+                        HexString(thread_id) << " at thread " <<
+                        thread_index << "/" << thread_count;
+        return false;
+      }
+      id_to_thread_map_[thread_id] = thread;
+    }
+
+    threads_ = threads.release();
+  }
+
+  thread_count_ = thread_count;
+
+  valid_ = true;
+  return true;
+}
+
+
+MinidumpThread* MinidumpThreadList::GetThreadAtIndex(unsigned int index)
+    const {
+  if (!valid_) {
+    BPLOG(ERROR) << "Invalid MinidumpThreadList for GetThreadAtIndex";
+    return NULL;
+  }
+
+  if (index >= thread_count_) {
+    BPLOG(ERROR) << "MinidumpThreadList index out of range: " <<
+                    index << "/" << thread_count_;
+    return NULL;
+  }
+
+  return &(*threads_)[index];
+}
+
+
+MinidumpThread* MinidumpThreadList::GetThreadByID(uint32_t thread_id) {
+  // Don't check valid_.  Read calls this method before everything is
+  // validated.  It is safe to not check valid_ here.
+  return id_to_thread_map_[thread_id];
+}
+
+
+void MinidumpThreadList::Print() {
+  if (!valid_) {
+    BPLOG(ERROR) << "MinidumpThreadList cannot print invalid data";
+    return;
+  }
+
+  printf("MinidumpThreadList\n");
+  printf("  thread_count = %d\n", thread_count_);
+  printf("\n");
+
+  for (unsigned int thread_index = 0;
+       thread_index < thread_count_;
+       ++thread_index) {
+    printf("thread[%d]\n", thread_index);
+
+    (*threads_)[thread_index].Print();
+  }
+}
+
+
+//
+// MinidumpModule
+//
+
+
+uint32_t MinidumpModule::max_cv_bytes_ = 32768;
+uint32_t MinidumpModule::max_misc_bytes_ = 32768;
+
+
+MinidumpModule::MinidumpModule(Minidump* minidump)
+    : MinidumpObject(minidump),
+      module_valid_(false),
+      has_debug_info_(false),
+      module_(),
+      name_(NULL),
+      cv_record_(NULL),
+      cv_record_signature_(MD_CVINFOUNKNOWN_SIGNATURE),
+      misc_record_(NULL) {
+}
+
+
+MinidumpModule::~MinidumpModule() {
+  delete name_;
+  delete cv_record_;
+  delete misc_record_;
+}
+
+
+bool MinidumpModule::Read() {
+  // Invalidate cached data.
+  delete name_;
+  name_ = NULL;
+  delete cv_record_;
+  cv_record_ = NULL;
+  cv_record_signature_ = MD_CVINFOUNKNOWN_SIGNATURE;
+  delete misc_record_;
+  misc_record_ = NULL;
+
+  module_valid_ = false;
+  has_debug_info_ = false;
+  valid_ = false;
+
+  if (!minidump_->ReadBytes(&module_, MD_MODULE_SIZE)) {
+    BPLOG(ERROR) << "MinidumpModule cannot read module";
+    return false;
+  }
+
+  if (minidump_->swap()) {
+    Swap(&module_.base_of_image);
+    Swap(&module_.size_of_image);
+    Swap(&module_.checksum);
+    Swap(&module_.time_date_stamp);
+    Swap(&module_.module_name_rva);
+    Swap(&module_.version_info.signature);
+    Swap(&module_.version_info.struct_version);
+    Swap(&module_.version_info.file_version_hi);
+    Swap(&module_.version_info.file_version_lo);
+    Swap(&module_.version_info.product_version_hi);
+    Swap(&module_.version_info.product_version_lo);
+    Swap(&module_.version_info.file_flags_mask);
+    Swap(&module_.version_info.file_flags);
+    Swap(&module_.version_info.file_os);
+    Swap(&module_.version_info.file_type);
+    Swap(&module_.version_info.file_subtype);
+    Swap(&module_.version_info.file_date_hi);
+    Swap(&module_.version_info.file_date_lo);
+    Swap(&module_.cv_record);
+    Swap(&module_.misc_record);
+    // Don't swap reserved fields because their contents are unknown (as
+    // are their proper widths).
+  }
+
+  // Check for base + size overflow or undersize.
+  if (module_.size_of_image == 0 ||
+      module_.size_of_image >
+          numeric_limits<uint64_t>::max() - module_.base_of_image) {
+    BPLOG(ERROR) << "MinidumpModule has a module problem, " <<
+                    HexString(module_.base_of_image) << "+" <<
+                    HexString(module_.size_of_image);
+    return false;
+  }
+
+  module_valid_ = true;
+  return true;
+}
+
+
+bool MinidumpModule::ReadAuxiliaryData() {
+  if (!module_valid_) {
+    BPLOG(ERROR) << "Invalid MinidumpModule for ReadAuxiliaryData";
+    return false;
+  }
+
+  // Each module must have a name.
+  name_ = minidump_->ReadString(module_.module_name_rva);
+  if (!name_) {
+    BPLOG(ERROR) << "MinidumpModule could not read name";
+    return false;
+  }
+
+  // At this point, we have enough info for the module to be valid.
+  valid_ = true;
+
+  // CodeView and miscellaneous debug records are only required if the
+  // module indicates that they exist.
+  if (module_.cv_record.data_size && !GetCVRecord(NULL)) {
+    BPLOG(ERROR) << "MinidumpModule has no CodeView record, "
+                    "but one was expected";
+    return false;
+  }
+
+  if (module_.misc_record.data_size && !GetMiscRecord(NULL)) {
+    BPLOG(ERROR) << "MinidumpModule has no miscellaneous debug record, "
+                    "but one was expected";
+    return false;
+  }
+
+  has_debug_info_ = true;
+  return true;
+}
+
+
+string MinidumpModule::code_file() const {
+  if (!valid_) {
+    BPLOG(ERROR) << "Invalid MinidumpModule for code_file";
+    return "";
+  }
+
+  return *name_;
+}
+
+
+string MinidumpModule::code_identifier() const {
+  if (!valid_) {
+    BPLOG(ERROR) << "Invalid MinidumpModule for code_identifier";
+    return "";
+  }
+
+  if (!has_debug_info_)
+    return "";
+
+  MinidumpSystemInfo *minidump_system_info = minidump_->GetSystemInfo();
+  if (!minidump_system_info) {
+    BPLOG(ERROR) << "MinidumpModule code_identifier requires "
+                    "MinidumpSystemInfo";
+    return "";
+  }
+
+  const MDRawSystemInfo *raw_system_info = minidump_system_info->system_info();
+  if (!raw_system_info) {
+    BPLOG(ERROR) << "MinidumpModule code_identifier requires MDRawSystemInfo";
+    return "";
+  }
+
+  string identifier;
+
+  switch (raw_system_info->platform_id) {
+    case MD_OS_WIN32_NT:
+    case MD_OS_WIN32_WINDOWS: {
+      // Use the same format that the MS symbol server uses in filesystem
+      // hierarchies.
+      char identifier_string[17];
+      snprintf(identifier_string, sizeof(identifier_string), "%08X%x",
+               module_.time_date_stamp, module_.size_of_image);
+      identifier = identifier_string;
+      break;
+    }
+
+    case MD_OS_MAC_OS_X:
+    case MD_OS_IOS:
+    case MD_OS_SOLARIS:
+    case MD_OS_ANDROID:
+    case MD_OS_LINUX:
+    case MD_OS_NACL:
+    case MD_OS_PS3: {
+      // TODO(mmentovai): support uuid extension if present, otherwise fall
+      // back to version (from LC_ID_DYLIB?), otherwise fall back to something
+      // else.
+      identifier = "id";
+      break;
+    }
+
+    default: {
+      // Without knowing what OS generated the dump, we can't generate a good
+      // identifier.  Return an empty string, signalling failure.
+      BPLOG(ERROR) << "MinidumpModule code_identifier requires known platform, "
+                      "found " << HexString(raw_system_info->platform_id);
+      break;
+    }
+  }
+
+  return identifier;
+}
+
+
+string MinidumpModule::debug_file() const {
+  if (!valid_) {
+    BPLOG(ERROR) << "Invalid MinidumpModule for debug_file";
+    return "";
+  }
+
+  if (!has_debug_info_)
+    return "";
+
+  string file;
+  // Prefer the CodeView record if present.
+  if (cv_record_) {
+    if (cv_record_signature_ == MD_CVINFOPDB70_SIGNATURE) {
+      // It's actually an MDCVInfoPDB70 structure.
+      const MDCVInfoPDB70* cv_record_70 =
+          reinterpret_cast<const MDCVInfoPDB70*>(&(*cv_record_)[0]);
+      assert(cv_record_70->cv_signature == MD_CVINFOPDB70_SIGNATURE);
+
+      // GetCVRecord guarantees pdb_file_name is null-terminated.
+      file = reinterpret_cast<const char*>(cv_record_70->pdb_file_name);
+    } else if (cv_record_signature_ == MD_CVINFOPDB20_SIGNATURE) {
+      // It's actually an MDCVInfoPDB20 structure.
+      const MDCVInfoPDB20* cv_record_20 =
+          reinterpret_cast<const MDCVInfoPDB20*>(&(*cv_record_)[0]);
+      assert(cv_record_20->cv_header.signature == MD_CVINFOPDB20_SIGNATURE);
+
+      // GetCVRecord guarantees pdb_file_name is null-terminated.
+      file = reinterpret_cast<const char*>(cv_record_20->pdb_file_name);
+    }
+
+    // If there's a CodeView record but it doesn't match a known signature,
+    // try the miscellaneous record.
+  }
+
+  if (file.empty()) {
+    // No usable CodeView record.  Try the miscellaneous debug record.
+    if (misc_record_) {
+      const MDImageDebugMisc* misc_record =
+          reinterpret_cast<const MDImageDebugMisc *>(&(*misc_record_)[0]);
+      if (!misc_record->unicode) {
+        // If it's not Unicode, just stuff it into the string.  It's unclear
+        // if misc_record->data is 0-terminated, so use an explicit size.
+        file = string(
+            reinterpret_cast<const char*>(misc_record->data),
+            module_.misc_record.data_size - MDImageDebugMisc_minsize);
+      } else {
+        // There's a misc_record but it encodes the debug filename in UTF-16.
+        // (Actually, because miscellaneous records are so old, it's probably
+        // UCS-2.)  Convert it to UTF-8 for congruity with the other strings
+        // that this method (and all other methods in the Minidump family)
+        // return.
+
+        unsigned int bytes =
+            module_.misc_record.data_size - MDImageDebugMisc_minsize;
+        if (bytes % 2 == 0) {
+          unsigned int utf16_words = bytes / 2;
+
+          // UTF16ToUTF8 expects a vector<uint16_t>, so create a temporary one
+          // and copy the UTF-16 data into it.
+          vector<uint16_t> string_utf16(utf16_words);
+          if (utf16_words)
+            memcpy(&string_utf16[0], &misc_record->data, bytes);
+
+          // GetMiscRecord already byte-swapped the data[] field if it contains
+          // UTF-16, so pass false as the swap argument.
+          scoped_ptr<string> new_file(UTF16ToUTF8(string_utf16, false));
+          file = *new_file;
+        }
+      }
+    }
+  }
+
+  // Relatively common case
+  BPLOG_IF(INFO, file.empty()) << "MinidumpModule could not determine "
+                                  "debug_file for " << *name_;
+
+  return file;
+}
+
+
+string MinidumpModule::debug_identifier() const {
+  if (!valid_) {
+    BPLOG(ERROR) << "Invalid MinidumpModule for debug_identifier";
+    return "";
+  }
+
+  if (!has_debug_info_)
+    return "";
+
+  string identifier;
+
+  // Use the CodeView record if present.
+  if (cv_record_) {
+    if (cv_record_signature_ == MD_CVINFOPDB70_SIGNATURE) {
+      // It's actually an MDCVInfoPDB70 structure.
+      const MDCVInfoPDB70* cv_record_70 =
+          reinterpret_cast<const MDCVInfoPDB70*>(&(*cv_record_)[0]);
+      assert(cv_record_70->cv_signature == MD_CVINFOPDB70_SIGNATURE);
+
+      // Use the same format that the MS symbol server uses in filesystem
+      // hierarchies.
+      char identifier_string[41];
+      snprintf(identifier_string, sizeof(identifier_string),
+               "%08X%04X%04X%02X%02X%02X%02X%02X%02X%02X%02X%x",
+               cv_record_70->signature.data1,
+               cv_record_70->signature.data2,
+               cv_record_70->signature.data3,
+               cv_record_70->signature.data4[0],
+               cv_record_70->signature.data4[1],
+               cv_record_70->signature.data4[2],
+               cv_record_70->signature.data4[3],
+               cv_record_70->signature.data4[4],
+               cv_record_70->signature.data4[5],
+               cv_record_70->signature.data4[6],
+               cv_record_70->signature.data4[7],
+               cv_record_70->age);
+      identifier = identifier_string;
+    } else if (cv_record_signature_ == MD_CVINFOPDB20_SIGNATURE) {
+      // It's actually an MDCVInfoPDB20 structure.
+      const MDCVInfoPDB20* cv_record_20 =
+          reinterpret_cast<const MDCVInfoPDB20*>(&(*cv_record_)[0]);
+      assert(cv_record_20->cv_header.signature == MD_CVINFOPDB20_SIGNATURE);
+
+      // Use the same format that the MS symbol server uses in filesystem
+      // hierarchies.
+      char identifier_string[17];
+      snprintf(identifier_string, sizeof(identifier_string),
+               "%08X%x", cv_record_20->signature, cv_record_20->age);
+      identifier = identifier_string;
+    }
+  }
+
+  // TODO(mmentovai): if there's no usable CodeView record, there might be a
+  // miscellaneous debug record.  It only carries a filename, though, and no
+  // identifier.  I'm not sure what the right thing to do for the identifier
+  // is in that case, but I don't expect to find many modules without a
+  // CodeView record (or some other Breakpad extension structure in place of
+  // a CodeView record).  Treat it as an error (empty identifier) for now.
+
+  // TODO(mmentovai): on the Mac, provide fallbacks as in code_identifier().
+
+  // Relatively common case
+  BPLOG_IF(INFO, identifier.empty()) << "MinidumpModule could not determine "
+                                        "debug_identifier for " << *name_;
+
+  return identifier;
+}
+
+
+string MinidumpModule::version() const {
+  if (!valid_) {
+    BPLOG(ERROR) << "Invalid MinidumpModule for version";
+    return "";
+  }
+
+  string version;
+
+  if (module_.version_info.signature == MD_VSFIXEDFILEINFO_SIGNATURE &&
+      module_.version_info.struct_version & MD_VSFIXEDFILEINFO_VERSION) {
+    char version_string[24];
+    snprintf(version_string, sizeof(version_string), "%u.%u.%u.%u",
+             module_.version_info.file_version_hi >> 16,
+             module_.version_info.file_version_hi & 0xffff,
+             module_.version_info.file_version_lo >> 16,
+             module_.version_info.file_version_lo & 0xffff);
+    version = version_string;
+  }
+
+  // TODO(mmentovai): possibly support other struct types in place of
+  // the one used with MD_VSFIXEDFILEINFO_SIGNATURE.  We can possibly use
+  // a different structure that better represents versioning facilities on
+  // Mac OS X and Linux, instead of forcing them to adhere to the dotted
+  // quad of 16-bit ints that Windows uses.
+
+  BPLOG_IF(INFO, version.empty()) << "MinidumpModule could not determine "
+                                     "version for " << *name_;
+
+  return version;
+}
+
+
+const CodeModule* MinidumpModule::Copy() const {
+  return new BasicCodeModule(this);
+}
+
+
+const uint8_t* MinidumpModule::GetCVRecord(uint32_t* size) {
+  if (!module_valid_) {
+    BPLOG(ERROR) << "Invalid MinidumpModule for GetCVRecord";
+    return NULL;
+  }
+
+  if (!cv_record_) {
+    // This just guards against 0-sized CodeView records; more specific checks
+    // are used when the signature is checked against various structure types.
+    if (module_.cv_record.data_size == 0) {
+      return NULL;
+    }
+
+    if (!minidump_->SeekSet(module_.cv_record.rva)) {
+      BPLOG(ERROR) << "MinidumpModule could not seek to CodeView record";
+      return NULL;
+    }
+
+    if (module_.cv_record.data_size > max_cv_bytes_) {
+      BPLOG(ERROR) << "MinidumpModule CodeView record size " <<
+                      module_.cv_record.data_size << " exceeds maximum " <<
+                      max_cv_bytes_;
+      return NULL;
+    }
+
+    // Allocating something that will be accessed as MDCVInfoPDB70 or
+    // MDCVInfoPDB20 but is allocated as uint8_t[] can cause alignment
+    // problems.  x86 and ppc are able to cope, though.  This allocation
+    // style is needed because the MDCVInfoPDB70 or MDCVInfoPDB20 are
+    // variable-sized due to their pdb_file_name fields; these structures
+    // are not MDCVInfoPDB70_minsize or MDCVInfoPDB20_minsize and treating
+    // them as such would result in incomplete structures or overruns.
+    scoped_ptr< vector<uint8_t> > cv_record(
+        new vector<uint8_t>(module_.cv_record.data_size));
+
+    if (!minidump_->ReadBytes(&(*cv_record)[0], module_.cv_record.data_size)) {
+      BPLOG(ERROR) << "MinidumpModule could not read CodeView record";
+      return NULL;
+    }
+
+    uint32_t signature = MD_CVINFOUNKNOWN_SIGNATURE;
+    if (module_.cv_record.data_size > sizeof(signature)) {
+      MDCVInfoPDB70* cv_record_signature =
+          reinterpret_cast<MDCVInfoPDB70*>(&(*cv_record)[0]);
+      signature = cv_record_signature->cv_signature;
+      if (minidump_->swap())
+        Swap(&signature);
+    }
+
+    if (signature == MD_CVINFOPDB70_SIGNATURE) {
+      // Now that the structure type is known, recheck the size.
+      if (MDCVInfoPDB70_minsize > module_.cv_record.data_size) {
+        BPLOG(ERROR) << "MinidumpModule CodeView7 record size mismatch, " <<
+                        MDCVInfoPDB70_minsize << " > " <<
+                        module_.cv_record.data_size;
+        return NULL;
+      }
+
+      if (minidump_->swap()) {
+        MDCVInfoPDB70* cv_record_70 =
+            reinterpret_cast<MDCVInfoPDB70*>(&(*cv_record)[0]);
+        Swap(&cv_record_70->cv_signature);
+        Swap(&cv_record_70->signature);
+        Swap(&cv_record_70->age);
+        // Don't swap cv_record_70.pdb_file_name because it's an array of 8-bit
+        // quantities.  (It's a path, is it UTF-8?)
+      }
+
+      // The last field of either structure is null-terminated 8-bit character
+      // data.  Ensure that it's null-terminated.
+      if ((*cv_record)[module_.cv_record.data_size - 1] != '\0') {
+        BPLOG(ERROR) << "MinidumpModule CodeView7 record string is not "
+                        "0-terminated";
+        return NULL;
+      }
+    } else if (signature == MD_CVINFOPDB20_SIGNATURE) {
+      // Now that the structure type is known, recheck the size.
+      if (MDCVInfoPDB20_minsize > module_.cv_record.data_size) {
+        BPLOG(ERROR) << "MinidumpModule CodeView2 record size mismatch, " <<
+                        MDCVInfoPDB20_minsize << " > " <<
+                        module_.cv_record.data_size;
+        return NULL;
+      }
+      if (minidump_->swap()) {
+        MDCVInfoPDB20* cv_record_20 =
+            reinterpret_cast<MDCVInfoPDB20*>(&(*cv_record)[0]);
+        Swap(&cv_record_20->cv_header.signature);
+        Swap(&cv_record_20->cv_header.offset);
+        Swap(&cv_record_20->signature);
+        Swap(&cv_record_20->age);
+        // Don't swap cv_record_20.pdb_file_name because it's an array of 8-bit
+        // quantities.  (It's a path, is it UTF-8?)
+      }
+
+      // The last field of either structure is null-terminated 8-bit character
+      // data.  Ensure that it's null-terminated.
+      if ((*cv_record)[module_.cv_record.data_size - 1] != '\0') {
+        BPLOG(ERROR) << "MindumpModule CodeView2 record string is not "
+                        "0-terminated";
+        return NULL;
+      }
+    }
+
+    // If the signature doesn't match something above, it's not something
+    // that Breakpad can presently handle directly.  Because some modules in
+    // the wild contain such CodeView records as MD_CVINFOCV50_SIGNATURE,
+    // don't bail out here - allow the data to be returned to the user,
+    // although byte-swapping can't be done.
+
+    // Store the vector type because that's how storage was allocated, but
+    // return it casted to uint8_t*.
+    cv_record_ = cv_record.release();
+    cv_record_signature_ = signature;
+  }
+
+  if (size)
+    *size = module_.cv_record.data_size;
+
+  return &(*cv_record_)[0];
+}
+
+
+const MDImageDebugMisc* MinidumpModule::GetMiscRecord(uint32_t* size) {
+  if (!module_valid_) {
+    BPLOG(ERROR) << "Invalid MinidumpModule for GetMiscRecord";
+    return NULL;
+  }
+
+  if (!misc_record_) {
+    if (module_.misc_record.data_size == 0) {
+      return NULL;
+    }
+
+    if (MDImageDebugMisc_minsize > module_.misc_record.data_size) {
+      BPLOG(ERROR) << "MinidumpModule miscellaneous debugging record "
+                      "size mismatch, " << MDImageDebugMisc_minsize << " > " <<
+                      module_.misc_record.data_size;
+      return NULL;
+    }
+
+    if (!minidump_->SeekSet(module_.misc_record.rva)) {
+      BPLOG(ERROR) << "MinidumpModule could not seek to miscellaneous "
+                      "debugging record";
+      return NULL;
+    }
+
+    if (module_.misc_record.data_size > max_misc_bytes_) {
+      BPLOG(ERROR) << "MinidumpModule miscellaneous debugging record size " <<
+                      module_.misc_record.data_size << " exceeds maximum " <<
+                      max_misc_bytes_;
+      return NULL;
+    }
+
+    // Allocating something that will be accessed as MDImageDebugMisc but
+    // is allocated as uint8_t[] can cause alignment problems.  x86 and
+    // ppc are able to cope, though.  This allocation style is needed
+    // because the MDImageDebugMisc is variable-sized due to its data field;
+    // this structure is not MDImageDebugMisc_minsize and treating it as such
+    // would result in an incomplete structure or an overrun.
+    scoped_ptr< vector<uint8_t> > misc_record_mem(
+        new vector<uint8_t>(module_.misc_record.data_size));
+    MDImageDebugMisc* misc_record =
+        reinterpret_cast<MDImageDebugMisc*>(&(*misc_record_mem)[0]);
+
+    if (!minidump_->ReadBytes(misc_record, module_.misc_record.data_size)) {
+      BPLOG(ERROR) << "MinidumpModule could not read miscellaneous debugging "
+                      "record";
+      return NULL;
+    }
+
+    if (minidump_->swap()) {
+      Swap(&misc_record->data_type);
+      Swap(&misc_record->length);
+      // Don't swap misc_record.unicode because it's an 8-bit quantity.
+      // Don't swap the reserved fields for the same reason, and because
+      // they don't contain any valid data.
+      if (misc_record->unicode) {
+        // There is a potential alignment problem, but shouldn't be a problem
+        // in practice due to the layout of MDImageDebugMisc.
+        uint16_t* data16 = reinterpret_cast<uint16_t*>(&(misc_record->data));
+        unsigned int dataBytes = module_.misc_record.data_size -
+                                 MDImageDebugMisc_minsize;
+        Swap(data16, dataBytes);
+      }
+    }
+
+    if (module_.misc_record.data_size != misc_record->length) {
+      BPLOG(ERROR) << "MinidumpModule miscellaneous debugging record data "
+                      "size mismatch, " << module_.misc_record.data_size <<
+                      " != " << misc_record->length;
+      return NULL;
+    }
+
+    // Store the vector type because that's how storage was allocated, but
+    // return it casted to MDImageDebugMisc*.
+    misc_record_ = misc_record_mem.release();
+  }
+
+  if (size)
+    *size = module_.misc_record.data_size;
+
+  return reinterpret_cast<MDImageDebugMisc*>(&(*misc_record_)[0]);
+}
+
+
+void MinidumpModule::Print() {
+  if (!valid_) {
+    BPLOG(ERROR) << "MinidumpModule cannot print invalid data";
+    return;
+  }
+
+  printf("MDRawModule\n");
+  printf("  base_of_image                   = 0x%" PRIx64 "\n",
+         module_.base_of_image);
+  printf("  size_of_image                   = 0x%x\n",
+         module_.size_of_image);
+  printf("  checksum                        = 0x%x\n",
+         module_.checksum);
+  printf("  time_date_stamp                 = 0x%x %s\n",
+         module_.time_date_stamp,
+         TimeTToUTCString(module_.time_date_stamp).c_str());
+  printf("  module_name_rva                 = 0x%x\n",
+         module_.module_name_rva);
+  printf("  version_info.signature          = 0x%x\n",
+         module_.version_info.signature);
+  printf("  version_info.struct_version     = 0x%x\n",
+         module_.version_info.struct_version);
+  printf("  version_info.file_version       = 0x%x:0x%x\n",
+         module_.version_info.file_version_hi,
+         module_.version_info.file_version_lo);
+  printf("  version_info.product_version    = 0x%x:0x%x\n",
+         module_.version_info.product_version_hi,
+         module_.version_info.product_version_lo);
+  printf("  version_info.file_flags_mask    = 0x%x\n",
+         module_.version_info.file_flags_mask);
+  printf("  version_info.file_flags         = 0x%x\n",
+         module_.version_info.file_flags);
+  printf("  version_info.file_os            = 0x%x\n",
+         module_.version_info.file_os);
+  printf("  version_info.file_type          = 0x%x\n",
+         module_.version_info.file_type);
+  printf("  version_info.file_subtype       = 0x%x\n",
+         module_.version_info.file_subtype);
+  printf("  version_info.file_date          = 0x%x:0x%x\n",
+         module_.version_info.file_date_hi,
+         module_.version_info.file_date_lo);
+  printf("  cv_record.data_size             = %d\n",
+         module_.cv_record.data_size);
+  printf("  cv_record.rva                   = 0x%x\n",
+         module_.cv_record.rva);
+  printf("  misc_record.data_size           = %d\n",
+         module_.misc_record.data_size);
+  printf("  misc_record.rva                 = 0x%x\n",
+         module_.misc_record.rva);
+
+  printf("  (code_file)                     = \"%s\"\n", code_file().c_str());
+  printf("  (code_identifier)               = \"%s\"\n",
+         code_identifier().c_str());
+
+  uint32_t cv_record_size;
+  const uint8_t *cv_record = GetCVRecord(&cv_record_size);
+  if (cv_record) {
+    if (cv_record_signature_ == MD_CVINFOPDB70_SIGNATURE) {
+      const MDCVInfoPDB70* cv_record_70 =
+          reinterpret_cast<const MDCVInfoPDB70*>(cv_record);
+      assert(cv_record_70->cv_signature == MD_CVINFOPDB70_SIGNATURE);
+
+      printf("  (cv_record).cv_signature        = 0x%x\n",
+             cv_record_70->cv_signature);
+      printf("  (cv_record).signature           = %08x-%04x-%04x-%02x%02x-",
+             cv_record_70->signature.data1,
+             cv_record_70->signature.data2,
+             cv_record_70->signature.data3,
+             cv_record_70->signature.data4[0],
+             cv_record_70->signature.data4[1]);
+      for (unsigned int guidIndex = 2;
+           guidIndex < 8;
+           ++guidIndex) {
+        printf("%02x", cv_record_70->signature.data4[guidIndex]);
+      }
+      printf("\n");
+      printf("  (cv_record).age                 = %d\n",
+             cv_record_70->age);
+      printf("  (cv_record).pdb_file_name       = \"%s\"\n",
+             cv_record_70->pdb_file_name);
+    } else if (cv_record_signature_ == MD_CVINFOPDB20_SIGNATURE) {
+      const MDCVInfoPDB20* cv_record_20 =
+          reinterpret_cast<const MDCVInfoPDB20*>(cv_record);
+      assert(cv_record_20->cv_header.signature == MD_CVINFOPDB20_SIGNATURE);
+
+      printf("  (cv_record).cv_header.signature = 0x%x\n",
+             cv_record_20->cv_header.signature);
+      printf("  (cv_record).cv_header.offset    = 0x%x\n",
+             cv_record_20->cv_header.offset);
+      printf("  (cv_record).signature           = 0x%x %s\n",
+             cv_record_20->signature,
+             TimeTToUTCString(cv_record_20->signature).c_str());
+      printf("  (cv_record).age                 = %d\n",
+             cv_record_20->age);
+      printf("  (cv_record).pdb_file_name       = \"%s\"\n",
+             cv_record_20->pdb_file_name);
+    } else {
+      printf("  (cv_record)                     = ");
+      for (unsigned int cv_byte_index = 0;
+           cv_byte_index < cv_record_size;
+           ++cv_byte_index) {
+        printf("%02x", cv_record[cv_byte_index]);
+      }
+      printf("\n");
+    }
+  } else {
+    printf("  (cv_record)                     = (null)\n");
+  }
+
+  const MDImageDebugMisc* misc_record = GetMiscRecord(NULL);
+  if (misc_record) {
+    printf("  (misc_record).data_type         = 0x%x\n",
+           misc_record->data_type);
+    printf("  (misc_record).length            = 0x%x\n",
+           misc_record->length);
+    printf("  (misc_record).unicode           = %d\n",
+           misc_record->unicode);
+    if (misc_record->unicode) {
+      string misc_record_data_utf8;
+      ConvertUTF16BufferToUTF8String(
+          reinterpret_cast<const uint16_t*>(misc_record->data),
+          misc_record->length - offsetof(MDImageDebugMisc, data),
+          &misc_record_data_utf8,
+          false);  // already swapped
+      printf("  (misc_record).data              = \"%s\"\n",
+             misc_record_data_utf8.c_str());
+    } else {
+      printf("  (misc_record).data              = \"%s\"\n",
+             misc_record->data);
+    }
+  } else {
+    printf("  (misc_record)                   = (null)\n");
+  }
+
+  printf("  (debug_file)                    = \"%s\"\n", debug_file().c_str());
+  printf("  (debug_identifier)              = \"%s\"\n",
+         debug_identifier().c_str());
+  printf("  (version)                       = \"%s\"\n", version().c_str());
+  printf("\n");
+}
+
+
+//
+// MinidumpModuleList
+//
+
+
+uint32_t MinidumpModuleList::max_modules_ = 1024;
+
+
+MinidumpModuleList::MinidumpModuleList(Minidump* minidump)
+    : MinidumpStream(minidump),
+      range_map_(new RangeMap<uint64_t, unsigned int>()),
+      modules_(NULL),
+      module_count_(0) {
+}
+
+
+MinidumpModuleList::~MinidumpModuleList() {
+  delete range_map_;
+  delete modules_;
+}
+
+
+bool MinidumpModuleList::Read(uint32_t expected_size) {
+  // Invalidate cached data.
+  range_map_->Clear();
+  delete modules_;
+  modules_ = NULL;
+  module_count_ = 0;
+
+  valid_ = false;
+
+  uint32_t module_count;
+  if (expected_size < sizeof(module_count)) {
+    BPLOG(ERROR) << "MinidumpModuleList count size mismatch, " <<
+                    expected_size << " < " << sizeof(module_count);
+    return false;
+  }
+  if (!minidump_->ReadBytes(&module_count, sizeof(module_count))) {
+    BPLOG(ERROR) << "MinidumpModuleList could not read module count";
+    return false;
+  }
+
+  if (minidump_->swap())
+    Swap(&module_count);
+
+  if (module_count > numeric_limits<uint32_t>::max() / MD_MODULE_SIZE) {
+    BPLOG(ERROR) << "MinidumpModuleList module count " << module_count <<
+                    " would cause multiplication overflow";
+    return false;
+  }
+
+  if (expected_size != sizeof(module_count) +
+                       module_count * MD_MODULE_SIZE) {
+    // may be padded with 4 bytes on 64bit ABIs for alignment
+    if (expected_size == sizeof(module_count) + 4 +
+                         module_count * MD_MODULE_SIZE) {
+      uint32_t useless;
+      if (!minidump_->ReadBytes(&useless, 4)) {
+        BPLOG(ERROR) << "MinidumpModuleList cannot read modulelist padded "
+                        "bytes";
+        return false;
+      }
+    } else {
+      BPLOG(ERROR) << "MinidumpModuleList size mismatch, " << expected_size <<
+                      " != " << sizeof(module_count) +
+                      module_count * MD_MODULE_SIZE;
+      return false;
+    }
+  }
+
+  if (module_count > max_modules_) {
+    BPLOG(ERROR) << "MinidumpModuleList count " << module_count_ <<
+                    " exceeds maximum " << max_modules_;
+    return false;
+  }
+
+  if (module_count != 0) {
+    scoped_ptr<MinidumpModules> modules(
+        new MinidumpModules(module_count, MinidumpModule(minidump_)));
+
+    for (unsigned int module_index = 0;
+         module_index < module_count;
+         ++module_index) {
+      MinidumpModule* module = &(*modules)[module_index];
+
+      // Assume that the file offset is correct after the last read.
+      if (!module->Read()) {
+        BPLOG(ERROR) << "MinidumpModuleList could not read module " <<
+                        module_index << "/" << module_count;
+        return false;
+      }
+    }
+
+    // Loop through the module list once more to read additional data and
+    // build the range map.  This is done in a second pass because
+    // MinidumpModule::ReadAuxiliaryData seeks around, and if it were
+    // included in the loop above, additional seeks would be needed where
+    // none are now to read contiguous data.
+    for (unsigned int module_index = 0;
+         module_index < module_count;
+         ++module_index) {
+      MinidumpModule* module = &(*modules)[module_index];
+
+      // ReadAuxiliaryData fails if any data that the module indicates should
+      // exist is missing, but we treat some such cases as valid anyway.  See
+      // issue #222: if a debugging record is of a format that's too large to
+      // handle, it shouldn't render the entire dump invalid.  Check module
+      // validity before giving up.
+      if (!module->ReadAuxiliaryData() && !module->valid()) {
+        BPLOG(ERROR) << "MinidumpModuleList could not read required module "
+                        "auxiliary data for module " <<
+                        module_index << "/" << module_count;
+        return false;
+      }
+
+      // It is safe to use module->code_file() after successfully calling
+      // module->ReadAuxiliaryData or noting that the module is valid.
+
+      uint64_t base_address = module->base_address();
+      uint64_t module_size = module->size();
+      if (base_address == static_cast<uint64_t>(-1)) {
+        BPLOG(ERROR) << "MinidumpModuleList found bad base address "
+                        "for module " << module_index << "/" << module_count <<
+                        ", " << module->code_file();
+        return false;
+      }
+
+      if (!range_map_->StoreRange(base_address, module_size, module_index)) {
+        // Android's shared memory implementation /dev/ashmem can contain
+        // duplicate entries for JITted code, so ignore these.
+        // TODO(wfh): Remove this code when Android is fixed.
+        // See https://crbug.com/439531
+        const string kDevAshmem("/dev/ashmem/");
+        if (module->code_file().compare(
+            0, kDevAshmem.length(), kDevAshmem) != 0) {
+          BPLOG(ERROR) << "MinidumpModuleList could not store module " <<
+                          module_index << "/" << module_count << ", " <<
+                          module->code_file() << ", " <<
+                          HexString(base_address) << "+" <<
+                          HexString(module_size);
+          return false;
+        } else {
+          BPLOG(INFO) << "MinidumpModuleList ignoring overlapping module " <<
+                          module_index << "/" << module_count << ", " <<
+                          module->code_file() << ", " <<
+                          HexString(base_address) << "+" <<
+                          HexString(module_size);
+        }
+      }
+    }
+
+    modules_ = modules.release();
+  }
+
+  module_count_ = module_count;
+
+  valid_ = true;
+  return true;
+}
+
+
+const MinidumpModule* MinidumpModuleList::GetModuleForAddress(
+    uint64_t address) const {
+  if (!valid_) {
+    BPLOG(ERROR) << "Invalid MinidumpModuleList for GetModuleForAddress";
+    return NULL;
+  }
+
+  unsigned int module_index;
+  if (!range_map_->RetrieveRange(address, &module_index, NULL, NULL)) {
+    BPLOG(INFO) << "MinidumpModuleList has no module at " <<
+                   HexString(address);
+    return NULL;
+  }
+
+  return GetModuleAtIndex(module_index);
+}
+
+
+const MinidumpModule* MinidumpModuleList::GetMainModule() const {
+  if (!valid_) {
+    BPLOG(ERROR) << "Invalid MinidumpModuleList for GetMainModule";
+    return NULL;
+  }
+
+  // The main code module is the first one present in a minidump file's
+  // MDRawModuleList.
+  return GetModuleAtIndex(0);
+}
+
+
+const MinidumpModule* MinidumpModuleList::GetModuleAtSequence(
+    unsigned int sequence) const {
+  if (!valid_) {
+    BPLOG(ERROR) << "Invalid MinidumpModuleList for GetModuleAtSequence";
+    return NULL;
+  }
+
+  if (sequence >= module_count_) {
+    BPLOG(ERROR) << "MinidumpModuleList sequence out of range: " <<
+                    sequence << "/" << module_count_;
+    return NULL;
+  }
+
+  unsigned int module_index;
+  if (!range_map_->RetrieveRangeAtIndex(sequence, &module_index, NULL, NULL)) {
+    BPLOG(ERROR) << "MinidumpModuleList has no module at sequence " << sequence;
+    return NULL;
+  }
+
+  return GetModuleAtIndex(module_index);
+}
+
+
+const MinidumpModule* MinidumpModuleList::GetModuleAtIndex(
+    unsigned int index) const {
+  if (!valid_) {
+    BPLOG(ERROR) << "Invalid MinidumpModuleList for GetModuleAtIndex";
+    return NULL;
+  }
+
+  if (index >= module_count_) {
+    BPLOG(ERROR) << "MinidumpModuleList index out of range: " <<
+                    index << "/" << module_count_;
+    return NULL;
+  }
+
+  return &(*modules_)[index];
+}
+
+
+const CodeModules* MinidumpModuleList::Copy() const {
+  return new BasicCodeModules(this);
+}
+
+
+void MinidumpModuleList::Print() {
+  if (!valid_) {
+    BPLOG(ERROR) << "MinidumpModuleList cannot print invalid data";
+    return;
+  }
+
+  printf("MinidumpModuleList\n");
+  printf("  module_count = %d\n", module_count_);
+  printf("\n");
+
+  for (unsigned int module_index = 0;
+       module_index < module_count_;
+       ++module_index) {
+    printf("module[%d]\n", module_index);
+
+    (*modules_)[module_index].Print();
+  }
+}
+
+
+//
+// MinidumpMemoryList
+//
+
+
+uint32_t MinidumpMemoryList::max_regions_ = 4096;
+
+
+MinidumpMemoryList::MinidumpMemoryList(Minidump* minidump)
+    : MinidumpStream(minidump),
+      range_map_(new RangeMap<uint64_t, unsigned int>()),
+      descriptors_(NULL),
+      regions_(NULL),
+      region_count_(0) {
+}
+
+
+MinidumpMemoryList::~MinidumpMemoryList() {
+  delete range_map_;
+  delete descriptors_;
+  delete regions_;
+}
+
+
+bool MinidumpMemoryList::Read(uint32_t expected_size) {
+  // Invalidate cached data.
+  delete descriptors_;
+  descriptors_ = NULL;
+  delete regions_;
+  regions_ = NULL;
+  range_map_->Clear();
+  region_count_ = 0;
+
+  valid_ = false;
+
+  uint32_t region_count;
+  if (expected_size < sizeof(region_count)) {
+    BPLOG(ERROR) << "MinidumpMemoryList count size mismatch, " <<
+                    expected_size << " < " << sizeof(region_count);
+    return false;
+  }
+  if (!minidump_->ReadBytes(&region_count, sizeof(region_count))) {
+    BPLOG(ERROR) << "MinidumpMemoryList could not read memory region count";
+    return false;
+  }
+
+  if (minidump_->swap())
+    Swap(&region_count);
+
+  if (region_count >
+          numeric_limits<uint32_t>::max() / sizeof(MDMemoryDescriptor)) {
+    BPLOG(ERROR) << "MinidumpMemoryList region count " << region_count <<
+                    " would cause multiplication overflow";
+    return false;
+  }
+
+  if (expected_size != sizeof(region_count) +
+                       region_count * sizeof(MDMemoryDescriptor)) {
+    // may be padded with 4 bytes on 64bit ABIs for alignment
+    if (expected_size == sizeof(region_count) + 4 +
+                         region_count * sizeof(MDMemoryDescriptor)) {
+      uint32_t useless;
+      if (!minidump_->ReadBytes(&useless, 4)) {
+        BPLOG(ERROR) << "MinidumpMemoryList cannot read memorylist padded "
+                        "bytes";
+        return false;
+      }
+    } else {
+      BPLOG(ERROR) << "MinidumpMemoryList size mismatch, " << expected_size <<
+                      " != " << sizeof(region_count) +
+                      region_count * sizeof(MDMemoryDescriptor);
+      return false;
+    }
+  }
+
+  if (region_count > max_regions_) {
+    BPLOG(ERROR) << "MinidumpMemoryList count " << region_count <<
+                    " exceeds maximum " << max_regions_;
+    return false;
+  }
+
+  if (region_count != 0) {
+    scoped_ptr<MemoryDescriptors> descriptors(
+        new MemoryDescriptors(region_count));
+
+    // Read the entire array in one fell swoop, instead of reading one entry
+    // at a time in the loop.
+    if (!minidump_->ReadBytes(&(*descriptors)[0],
+                              sizeof(MDMemoryDescriptor) * region_count)) {
+      BPLOG(ERROR) << "MinidumpMemoryList could not read memory region list";
+      return false;
+    }
+
+    scoped_ptr<MemoryRegions> regions(
+        new MemoryRegions(region_count, MinidumpMemoryRegion(minidump_)));
+
+    for (unsigned int region_index = 0;
+         region_index < region_count;
+         ++region_index) {
+      MDMemoryDescriptor* descriptor = &(*descriptors)[region_index];
+
+      if (minidump_->swap())
+        Swap(descriptor);
+
+      uint64_t base_address = descriptor->start_of_memory_range;
+      uint32_t region_size = descriptor->memory.data_size;
+
+      // Check for base + size overflow or undersize.
+      if (region_size == 0 ||
+          region_size > numeric_limits<uint64_t>::max() - base_address) {
+        BPLOG(ERROR) << "MinidumpMemoryList has a memory region problem, " <<
+                        " region " << region_index << "/" << region_count <<
+                        ", " << HexString(base_address) << "+" <<
+                        HexString(region_size);
+        return false;
+      }
+
+      if (!range_map_->StoreRange(base_address, region_size, region_index)) {
+        BPLOG(ERROR) << "MinidumpMemoryList could not store memory region " <<
+                        region_index << "/" << region_count << ", " <<
+                        HexString(base_address) << "+" <<
+                        HexString(region_size);
+        return false;
+      }
+
+      (*regions)[region_index].SetDescriptor(descriptor);
+    }
+
+    descriptors_ = descriptors.release();
+    regions_ = regions.release();
+  }
+
+  region_count_ = region_count;
+
+  valid_ = true;
+  return true;
+}
+
+
+MinidumpMemoryRegion* MinidumpMemoryList::GetMemoryRegionAtIndex(
+      unsigned int index) {
+  if (!valid_) {
+    BPLOG(ERROR) << "Invalid MinidumpMemoryList for GetMemoryRegionAtIndex";
+    return NULL;
+  }
+
+  if (index >= region_count_) {
+    BPLOG(ERROR) << "MinidumpMemoryList index out of range: " <<
+                    index << "/" << region_count_;
+    return NULL;
+  }
+
+  return &(*regions_)[index];
+}
+
+
+MinidumpMemoryRegion* MinidumpMemoryList::GetMemoryRegionForAddress(
+    uint64_t address) {
+  if (!valid_) {
+    BPLOG(ERROR) << "Invalid MinidumpMemoryList for GetMemoryRegionForAddress";
+    return NULL;
+  }
+
+  unsigned int region_index;
+  if (!range_map_->RetrieveRange(address, &region_index, NULL, NULL)) {
+    BPLOG(INFO) << "MinidumpMemoryList has no memory region at " <<
+                   HexString(address);
+    return NULL;
+  }
+
+  return GetMemoryRegionAtIndex(region_index);
+}
+
+
+void MinidumpMemoryList::Print() {
+  if (!valid_) {
+    BPLOG(ERROR) << "MinidumpMemoryList cannot print invalid data";
+    return;
+  }
+
+  printf("MinidumpMemoryList\n");
+  printf("  region_count = %d\n", region_count_);
+  printf("\n");
+
+  for (unsigned int region_index = 0;
+       region_index < region_count_;
+       ++region_index) {
+    MDMemoryDescriptor* descriptor = &(*descriptors_)[region_index];
+    printf("region[%d]\n", region_index);
+    printf("MDMemoryDescriptor\n");
+    printf("  start_of_memory_range = 0x%" PRIx64 "\n",
+           descriptor->start_of_memory_range);
+    printf("  memory.data_size      = 0x%x\n", descriptor->memory.data_size);
+    printf("  memory.rva            = 0x%x\n", descriptor->memory.rva);
+    MinidumpMemoryRegion* region = GetMemoryRegionAtIndex(region_index);
+    if (region) {
+      printf("Memory\n");
+      region->Print();
+    } else {
+      printf("No memory\n");
+    }
+    printf("\n");
+  }
+}
+
+
+//
+// MinidumpException
+//
+
+
+MinidumpException::MinidumpException(Minidump* minidump)
+    : MinidumpStream(minidump),
+      exception_(),
+      context_(NULL) {
+}
+
+
+MinidumpException::~MinidumpException() {
+  delete context_;
+}
+
+
+bool MinidumpException::Read(uint32_t expected_size) {
+  // Invalidate cached data.
+  delete context_;
+  context_ = NULL;
+
+  valid_ = false;
+
+  if (expected_size != sizeof(exception_)) {
+    BPLOG(ERROR) << "MinidumpException size mismatch, " << expected_size <<
+                    " != " << sizeof(exception_);
+    return false;
+  }
+
+  if (!minidump_->ReadBytes(&exception_, sizeof(exception_))) {
+    BPLOG(ERROR) << "MinidumpException cannot read exception";
+    return false;
+  }
+
+  if (minidump_->swap()) {
+    Swap(&exception_.thread_id);
+    // exception_.__align is for alignment only and does not need to be
+    // swapped.
+    Swap(&exception_.exception_record.exception_code);
+    Swap(&exception_.exception_record.exception_flags);
+    Swap(&exception_.exception_record.exception_record);
+    Swap(&exception_.exception_record.exception_address);
+    Swap(&exception_.exception_record.number_parameters);
+    // exception_.exception_record.__align is for alignment only and does not
+    // need to be swapped.
+    for (unsigned int parameter_index = 0;
+         parameter_index < MD_EXCEPTION_MAXIMUM_PARAMETERS;
+         ++parameter_index) {
+      Swap(&exception_.exception_record.exception_information[parameter_index]);
+    }
+    Swap(&exception_.thread_context);
+  }
+
+  valid_ = true;
+  return true;
+}
+
+
+bool MinidumpException::GetThreadID(uint32_t *thread_id) const {
+  BPLOG_IF(ERROR, !thread_id) << "MinidumpException::GetThreadID requires "
+                                 "|thread_id|";
+  assert(thread_id);
+  *thread_id = 0;
+
+  if (!valid_) {
+    BPLOG(ERROR) << "Invalid MinidumpException for GetThreadID";
+    return false;
+  }
+
+  *thread_id = exception_.thread_id;
+  return true;
+}
+
+
+MinidumpContext* MinidumpException::GetContext() {
+  if (!valid_) {
+    BPLOG(ERROR) << "Invalid MinidumpException for GetContext";
+    return NULL;
+  }
+
+  if (!context_) {
+    if (!minidump_->SeekSet(exception_.thread_context.rva)) {
+      BPLOG(ERROR) << "MinidumpException cannot seek to context";
+      return NULL;
+    }
+
+    scoped_ptr<MinidumpContext> context(new MinidumpContext(minidump_));
+
+    // Don't log as an error if we can still fall back on the thread's context
+    // (which must be possible if we got this far.)
+    if (!context->Read(exception_.thread_context.data_size)) {
+      BPLOG(INFO) << "MinidumpException cannot read context";
+      return NULL;
+    }
+
+    context_ = context.release();
+  }
+
+  return context_;
+}
+
+
+void MinidumpException::Print() {
+  if (!valid_) {
+    BPLOG(ERROR) << "MinidumpException cannot print invalid data";
+    return;
+  }
+
+  printf("MDException\n");
+  printf("  thread_id                                  = 0x%x\n",
+         exception_.thread_id);
+  printf("  exception_record.exception_code            = 0x%x\n",
+         exception_.exception_record.exception_code);
+  printf("  exception_record.exception_flags           = 0x%x\n",
+         exception_.exception_record.exception_flags);
+  printf("  exception_record.exception_record          = 0x%" PRIx64 "\n",
+         exception_.exception_record.exception_record);
+  printf("  exception_record.exception_address         = 0x%" PRIx64 "\n",
+         exception_.exception_record.exception_address);
+  printf("  exception_record.number_parameters         = %d\n",
+         exception_.exception_record.number_parameters);
+  for (unsigned int parameterIndex = 0;
+       parameterIndex < exception_.exception_record.number_parameters;
+       ++parameterIndex) {
+    printf("  exception_record.exception_information[%2d] = 0x%" PRIx64 "\n",
+           parameterIndex,
+           exception_.exception_record.exception_information[parameterIndex]);
+  }
+  printf("  thread_context.data_size                   = %d\n",
+         exception_.thread_context.data_size);
+  printf("  thread_context.rva                         = 0x%x\n",
+         exception_.thread_context.rva);
+  MinidumpContext* context = GetContext();
+  if (context) {
+    printf("\n");
+    context->Print();
+  } else {
+    printf("  (no context)\n");
+    printf("\n");
+  }
+}
+
+//
+// MinidumpAssertion
+//
+
+
+MinidumpAssertion::MinidumpAssertion(Minidump* minidump)
+    : MinidumpStream(minidump),
+      assertion_(),
+      expression_(),
+      function_(),
+      file_() {
+}
+
+
+MinidumpAssertion::~MinidumpAssertion() {
+}
+
+
+bool MinidumpAssertion::Read(uint32_t expected_size) {
+  // Invalidate cached data.
+  valid_ = false;
+
+  if (expected_size != sizeof(assertion_)) {
+    BPLOG(ERROR) << "MinidumpAssertion size mismatch, " << expected_size <<
+                    " != " << sizeof(assertion_);
+    return false;
+  }
+
+  if (!minidump_->ReadBytes(&assertion_, sizeof(assertion_))) {
+    BPLOG(ERROR) << "MinidumpAssertion cannot read assertion";
+    return false;
+  }
+
+  // Each of {expression, function, file} is a UTF-16 string,
+  // we'll convert them to UTF-8 for ease of use.
+  ConvertUTF16BufferToUTF8String(assertion_.expression,
+                                 sizeof(assertion_.expression), &expression_,
+                                 minidump_->swap());
+  ConvertUTF16BufferToUTF8String(assertion_.function,
+                                 sizeof(assertion_.function), &function_,
+                                 minidump_->swap());
+  ConvertUTF16BufferToUTF8String(assertion_.file, sizeof(assertion_.file),
+                                 &file_, minidump_->swap());
+
+  if (minidump_->swap()) {
+    Swap(&assertion_.line);
+    Swap(&assertion_.type);
+  }
+
+  valid_ = true;
+  return true;
+}
+
+void MinidumpAssertion::Print() {
+  if (!valid_) {
+    BPLOG(ERROR) << "MinidumpAssertion cannot print invalid data";
+    return;
+  }
+
+  printf("MDAssertion\n");
+  printf("  expression                                 = %s\n",
+         expression_.c_str());
+  printf("  function                                   = %s\n",
+         function_.c_str());
+  printf("  file                                       = %s\n",
+         file_.c_str());
+  printf("  line                                       = %u\n",
+         assertion_.line);
+  printf("  type                                       = %u\n",
+         assertion_.type);
+  printf("\n");
+}
+
+//
+// MinidumpSystemInfo
+//
+
+
+MinidumpSystemInfo::MinidumpSystemInfo(Minidump* minidump)
+    : MinidumpStream(minidump),
+      system_info_(),
+      csd_version_(NULL),
+      cpu_vendor_(NULL) {
+}
+
+
+MinidumpSystemInfo::~MinidumpSystemInfo() {
+  delete csd_version_;
+  delete cpu_vendor_;
+}
+
+
+bool MinidumpSystemInfo::Read(uint32_t expected_size) {
+  // Invalidate cached data.
+  delete csd_version_;
+  csd_version_ = NULL;
+  delete cpu_vendor_;
+  cpu_vendor_ = NULL;
+
+  valid_ = false;
+
+  if (expected_size != sizeof(system_info_)) {
+    BPLOG(ERROR) << "MinidumpSystemInfo size mismatch, " << expected_size <<
+                    " != " << sizeof(system_info_);
+    return false;
+  }
+
+  if (!minidump_->ReadBytes(&system_info_, sizeof(system_info_))) {
+    BPLOG(ERROR) << "MinidumpSystemInfo cannot read system info";
+    return false;
+  }
+
+  if (minidump_->swap()) {
+    Swap(&system_info_.processor_architecture);
+    Swap(&system_info_.processor_level);
+    Swap(&system_info_.processor_revision);
+    // number_of_processors and product_type are 8-bit quantities and need no
+    // swapping.
+    Swap(&system_info_.major_version);
+    Swap(&system_info_.minor_version);
+    Swap(&system_info_.build_number);
+    Swap(&system_info_.platform_id);
+    Swap(&system_info_.csd_version_rva);
+    Swap(&system_info_.suite_mask);
+    // Don't swap the reserved2 field because its contents are unknown.
+
+    if (system_info_.processor_architecture == MD_CPU_ARCHITECTURE_X86 ||
+        system_info_.processor_architecture == MD_CPU_ARCHITECTURE_X86_WIN64) {
+      for (unsigned int i = 0; i < 3; ++i)
+        Swap(&system_info_.cpu.x86_cpu_info.vendor_id[i]);
+      Swap(&system_info_.cpu.x86_cpu_info.version_information);
+      Swap(&system_info_.cpu.x86_cpu_info.feature_information);
+      Swap(&system_info_.cpu.x86_cpu_info.amd_extended_cpu_features);
+    } else {
+      for (unsigned int i = 0; i < 2; ++i)
+        Swap(&system_info_.cpu.other_cpu_info.processor_features[i]);
+    }
+  }
+
+  valid_ = true;
+  return true;
+}
+
+
+string MinidumpSystemInfo::GetOS() {
+  string os;
+
+  if (!valid_) {
+    BPLOG(ERROR) << "Invalid MinidumpSystemInfo for GetOS";
+    return os;
+  }
+
+  switch (system_info_.platform_id) {
+    case MD_OS_WIN32_NT:
+    case MD_OS_WIN32_WINDOWS:
+      os = "windows";
+      break;
+
+    case MD_OS_MAC_OS_X:
+      os = "mac";
+      break;
+
+    case MD_OS_IOS:
+      os = "ios";
+      break;
+
+    case MD_OS_LINUX:
+      os = "linux";
+      break;
+
+    case MD_OS_SOLARIS:
+      os = "solaris";
+      break;
+
+    case MD_OS_ANDROID:
+      os = "android";
+      break;
+
+    case MD_OS_PS3:
+      os = "ps3";
+      break;
+
+    case MD_OS_NACL:
+      os = "nacl";
+      break;
+
+    default:
+      BPLOG(ERROR) << "MinidumpSystemInfo unknown OS for platform " <<
+                      HexString(system_info_.platform_id);
+      break;
+  }
+
+  return os;
+}
+
+
+string MinidumpSystemInfo::GetCPU() {
+  if (!valid_) {
+    BPLOG(ERROR) << "Invalid MinidumpSystemInfo for GetCPU";
+    return "";
+  }
+
+  string cpu;
+
+  switch (system_info_.processor_architecture) {
+    case MD_CPU_ARCHITECTURE_X86:
+    case MD_CPU_ARCHITECTURE_X86_WIN64:
+      cpu = "x86";
+      break;
+
+    case MD_CPU_ARCHITECTURE_AMD64:
+      cpu = "x86-64";
+      break;
+
+    case MD_CPU_ARCHITECTURE_PPC:
+      cpu = "ppc";
+      break;
+
+    case MD_CPU_ARCHITECTURE_PPC64:
+      cpu = "ppc64";
+      break;
+
+    case MD_CPU_ARCHITECTURE_SPARC:
+      cpu = "sparc";
+      break;
+
+    case MD_CPU_ARCHITECTURE_ARM:
+      cpu = "arm";
+      break;
+
+    case MD_CPU_ARCHITECTURE_ARM64:
+      cpu = "arm64";
+      break;
+
+    default:
+      BPLOG(ERROR) << "MinidumpSystemInfo unknown CPU for architecture " <<
+                      HexString(system_info_.processor_architecture);
+      break;
+  }
+
+  return cpu;
+}
+
+
+const string* MinidumpSystemInfo::GetCSDVersion() {
+  if (!valid_) {
+    BPLOG(ERROR) << "Invalid MinidumpSystemInfo for GetCSDVersion";
+    return NULL;
+  }
+
+  if (!csd_version_)
+    csd_version_ = minidump_->ReadString(system_info_.csd_version_rva);
+
+  BPLOG_IF(ERROR, !csd_version_) << "MinidumpSystemInfo could not read "
+                                    "CSD version";
+
+  return csd_version_;
+}
+
+
+const string* MinidumpSystemInfo::GetCPUVendor() {
+  if (!valid_) {
+    BPLOG(ERROR) << "Invalid MinidumpSystemInfo for GetCPUVendor";
+    return NULL;
+  }
+
+  // CPU vendor information can only be determined from x86 minidumps.
+  if (!cpu_vendor_ &&
+      (system_info_.processor_architecture == MD_CPU_ARCHITECTURE_X86 ||
+       system_info_.processor_architecture == MD_CPU_ARCHITECTURE_X86_WIN64)) {
+    char cpu_vendor_string[13];
+    snprintf(cpu_vendor_string, sizeof(cpu_vendor_string),
+             "%c%c%c%c%c%c%c%c%c%c%c%c",
+              system_info_.cpu.x86_cpu_info.vendor_id[0] & 0xff,
+             (system_info_.cpu.x86_cpu_info.vendor_id[0] >> 8) & 0xff,
+             (system_info_.cpu.x86_cpu_info.vendor_id[0] >> 16) & 0xff,
+             (system_info_.cpu.x86_cpu_info.vendor_id[0] >> 24) & 0xff,
+              system_info_.cpu.x86_cpu_info.vendor_id[1] & 0xff,
+             (system_info_.cpu.x86_cpu_info.vendor_id[1] >> 8) & 0xff,
+             (system_info_.cpu.x86_cpu_info.vendor_id[1] >> 16) & 0xff,
+             (system_info_.cpu.x86_cpu_info.vendor_id[1] >> 24) & 0xff,
+              system_info_.cpu.x86_cpu_info.vendor_id[2] & 0xff,
+             (system_info_.cpu.x86_cpu_info.vendor_id[2] >> 8) & 0xff,
+             (system_info_.cpu.x86_cpu_info.vendor_id[2] >> 16) & 0xff,
+             (system_info_.cpu.x86_cpu_info.vendor_id[2] >> 24) & 0xff);
+    cpu_vendor_ = new string(cpu_vendor_string);
+  }
+
+  return cpu_vendor_;
+}
+
+
+void MinidumpSystemInfo::Print() {
+  if (!valid_) {
+    BPLOG(ERROR) << "MinidumpSystemInfo cannot print invalid data";
+    return;
+  }
+
+  printf("MDRawSystemInfo\n");
+  printf("  processor_architecture                     = 0x%x\n",
+         system_info_.processor_architecture);
+  printf("  processor_level                            = %d\n",
+         system_info_.processor_level);
+  printf("  processor_revision                         = 0x%x\n",
+         system_info_.processor_revision);
+  printf("  number_of_processors                       = %d\n",
+         system_info_.number_of_processors);
+  printf("  product_type                               = %d\n",
+         system_info_.product_type);
+  printf("  major_version                              = %d\n",
+         system_info_.major_version);
+  printf("  minor_version                              = %d\n",
+         system_info_.minor_version);
+  printf("  build_number                               = %d\n",
+         system_info_.build_number);
+  printf("  platform_id                                = 0x%x\n",
+         system_info_.platform_id);
+  printf("  csd_version_rva                            = 0x%x\n",
+         system_info_.csd_version_rva);
+  printf("  suite_mask                                 = 0x%x\n",
+         system_info_.suite_mask);
+  if (system_info_.processor_architecture == MD_CPU_ARCHITECTURE_X86 ||
+      system_info_.processor_architecture == MD_CPU_ARCHITECTURE_X86_WIN64) {
+    printf("  cpu.x86_cpu_info (valid):\n");
+  } else {
+    printf("  cpu.x86_cpu_info (invalid):\n");
+  }
+  for (unsigned int i = 0; i < 3; ++i) {
+    printf("  cpu.x86_cpu_info.vendor_id[%d]              = 0x%x\n",
+           i, system_info_.cpu.x86_cpu_info.vendor_id[i]);
+  }
+  printf("  cpu.x86_cpu_info.version_information       = 0x%x\n",
+         system_info_.cpu.x86_cpu_info.version_information);
+  printf("  cpu.x86_cpu_info.feature_information       = 0x%x\n",
+         system_info_.cpu.x86_cpu_info.feature_information);
+  printf("  cpu.x86_cpu_info.amd_extended_cpu_features = 0x%x\n",
+         system_info_.cpu.x86_cpu_info.amd_extended_cpu_features);
+  if (system_info_.processor_architecture != MD_CPU_ARCHITECTURE_X86 &&
+      system_info_.processor_architecture != MD_CPU_ARCHITECTURE_X86_WIN64) {
+    printf("  cpu.other_cpu_info (valid):\n");
+    for (unsigned int i = 0; i < 2; ++i) {
+      printf("  cpu.other_cpu_info.processor_features[%d]   = 0x%" PRIx64 "\n",
+             i, system_info_.cpu.other_cpu_info.processor_features[i]);
+    }
+  }
+  const string* csd_version = GetCSDVersion();
+  if (csd_version) {
+    printf("  (csd_version)                              = \"%s\"\n",
+           csd_version->c_str());
+  } else {
+    printf("  (csd_version)                              = (null)\n");
+  }
+  const string* cpu_vendor = GetCPUVendor();
+  if (cpu_vendor) {
+    printf("  (cpu_vendor)                               = \"%s\"\n",
+           cpu_vendor->c_str());
+  } else {
+    printf("  (cpu_vendor)                               = (null)\n");
+  }
+  printf("\n");
+}
+
+
+//
+// MinidumpMiscInfo
+//
+
+
+MinidumpMiscInfo::MinidumpMiscInfo(Minidump* minidump)
+    : MinidumpStream(minidump),
+      misc_info_() {
+}
+
+
+bool MinidumpMiscInfo::Read(uint32_t expected_size) {
+  valid_ = false;
+
+  if (expected_size != MD_MISCINFO_SIZE &&
+      expected_size != MD_MISCINFO2_SIZE &&
+      expected_size != MD_MISCINFO3_SIZE &&
+      expected_size != MD_MISCINFO4_SIZE) {
+    BPLOG(ERROR) << "MinidumpMiscInfo size mismatch, " << expected_size
+                 << " != " << MD_MISCINFO_SIZE << ", " << MD_MISCINFO2_SIZE
+                 << ", " << MD_MISCINFO3_SIZE << ", " << MD_MISCINFO4_SIZE
+                 << ")";
+    return false;
+  }
+
+  if (!minidump_->ReadBytes(&misc_info_, expected_size)) {
+    BPLOG(ERROR) << "MinidumpMiscInfo cannot read miscellaneous info";
+    return false;
+  }
+
+  if (minidump_->swap()) {
+    // Swap version 1 fields
+    Swap(&misc_info_.size_of_info);
+    Swap(&misc_info_.flags1);
+    Swap(&misc_info_.process_id);
+    Swap(&misc_info_.process_create_time);
+    Swap(&misc_info_.process_user_time);
+    Swap(&misc_info_.process_kernel_time);
+    if (misc_info_.size_of_info > MD_MISCINFO_SIZE) {
+      // Swap version 2 fields
+      Swap(&misc_info_.processor_max_mhz);
+      Swap(&misc_info_.processor_current_mhz);
+      Swap(&misc_info_.processor_mhz_limit);
+      Swap(&misc_info_.processor_max_idle_state);
+      Swap(&misc_info_.processor_current_idle_state);
+    }
+    if (misc_info_.size_of_info > MD_MISCINFO2_SIZE) {
+      // Swap version 3 fields
+      Swap(&misc_info_.process_integrity_level);
+      Swap(&misc_info_.process_execute_flags);
+      Swap(&misc_info_.protected_process);
+      Swap(&misc_info_.time_zone_id);
+      Swap(&misc_info_.time_zone);
+    }
+    if (misc_info_.size_of_info > MD_MISCINFO3_SIZE) {
+      // Swap version 4 fields.
+      // Do not swap UTF-16 strings.  The swap is done as part of the
+      // conversion to UTF-8 (code follows below).
+    }
+  }
+
+  if (expected_size != misc_info_.size_of_info) {
+    BPLOG(ERROR) << "MinidumpMiscInfo size mismatch, " <<
+                    expected_size << " != " << misc_info_.size_of_info;
+    return false;
+  }
+
+  // Convert UTF-16 strings
+  if (misc_info_.size_of_info > MD_MISCINFO2_SIZE) {
+    // Convert UTF-16 strings in version 3 fields
+    ConvertUTF16BufferToUTF8String(misc_info_.time_zone.standard_name,
+                                   sizeof(misc_info_.time_zone.standard_name),
+                                   &standard_name_, minidump_->swap());
+    ConvertUTF16BufferToUTF8String(misc_info_.time_zone.daylight_name,
+                                   sizeof(misc_info_.time_zone.daylight_name),
+                                   &daylight_name_, minidump_->swap());
+  }
+  if (misc_info_.size_of_info > MD_MISCINFO3_SIZE) {
+    // Convert UTF-16 strings in version 4 fields
+    ConvertUTF16BufferToUTF8String(misc_info_.build_string,
+                                   sizeof(misc_info_.build_string),
+                                   &build_string_, minidump_->swap());
+    ConvertUTF16BufferToUTF8String(misc_info_.dbg_bld_str,
+                                   sizeof(misc_info_.dbg_bld_str),
+                                   &dbg_bld_str_, minidump_->swap());
+  }
+
+  valid_ = true;
+  return true;
+}
+
+
+void MinidumpMiscInfo::Print() {
+  if (!valid_) {
+    BPLOG(ERROR) << "MinidumpMiscInfo cannot print invalid data";
+    return;
+  }
+
+  printf("MDRawMiscInfo\n");
+  // Print version 1 fields
+  printf("  size_of_info                 = %d\n",   misc_info_.size_of_info);
+  printf("  flags1                       = 0x%x\n", misc_info_.flags1);
+  printf("  process_id                   = ");
+  PrintValueOrInvalid(misc_info_.flags1 & MD_MISCINFO_FLAGS1_PROCESS_ID,
+                      kNumberFormatDecimal, misc_info_.process_id);
+  if (misc_info_.flags1 & MD_MISCINFO_FLAGS1_PROCESS_TIMES) {
+    printf("  process_create_time          = 0x%x %s\n",
+           misc_info_.process_create_time,
+           TimeTToUTCString(misc_info_.process_create_time).c_str());
+  } else {
+    printf("  process_create_time          = (invalid)\n");
+  }
+  printf("  process_user_time            = ");
+  PrintValueOrInvalid(misc_info_.flags1 & MD_MISCINFO_FLAGS1_PROCESS_TIMES,
+                      kNumberFormatDecimal, misc_info_.process_user_time);
+  printf("  process_kernel_time          = ");
+  PrintValueOrInvalid(misc_info_.flags1 & MD_MISCINFO_FLAGS1_PROCESS_TIMES,
+                      kNumberFormatDecimal, misc_info_.process_kernel_time);
+  if (misc_info_.size_of_info > MD_MISCINFO_SIZE) {
+    // Print version 2 fields
+    printf("  processor_max_mhz            = ");
+    PrintValueOrInvalid(misc_info_.flags1 &
+                            MD_MISCINFO_FLAGS1_PROCESSOR_POWER_INFO,
+                        kNumberFormatDecimal, misc_info_.processor_max_mhz);
+    printf("  processor_current_mhz        = ");
+    PrintValueOrInvalid(misc_info_.flags1 &
+                            MD_MISCINFO_FLAGS1_PROCESSOR_POWER_INFO,
+                        kNumberFormatDecimal, misc_info_.processor_current_mhz);
+    printf("  processor_mhz_limit          = ");
+    PrintValueOrInvalid(misc_info_.flags1 &
+                            MD_MISCINFO_FLAGS1_PROCESSOR_POWER_INFO,
+                        kNumberFormatDecimal, misc_info_.processor_mhz_limit);
+    printf("  processor_max_idle_state     = ");
+    PrintValueOrInvalid(misc_info_.flags1 &
+                            MD_MISCINFO_FLAGS1_PROCESSOR_POWER_INFO,
+                        kNumberFormatDecimal,
+                        misc_info_.processor_max_idle_state);
+    printf("  processor_current_idle_state = ");
+    PrintValueOrInvalid(misc_info_.flags1 &
+                            MD_MISCINFO_FLAGS1_PROCESSOR_POWER_INFO,
+                        kNumberFormatDecimal,
+                        misc_info_.processor_current_idle_state);
+  }
+  if (misc_info_.size_of_info > MD_MISCINFO2_SIZE) {
+    // Print version 3 fields
+    printf("  process_integrity_level      = ");
+    PrintValueOrInvalid(misc_info_.flags1 &
+                            MD_MISCINFO_FLAGS1_PROCESS_INTEGRITY,
+                        kNumberFormatHexadecimal,
+                        misc_info_.process_integrity_level);
+    printf("  process_execute_flags        = ");
+    PrintValueOrInvalid(misc_info_.flags1 &
+                            MD_MISCINFO_FLAGS1_PROCESS_EXECUTE_FLAGS,
+                        kNumberFormatHexadecimal,
+                        misc_info_.process_execute_flags);
+    printf("  protected_process            = ");
+    PrintValueOrInvalid(misc_info_.flags1 &
+                            MD_MISCINFO_FLAGS1_PROTECTED_PROCESS,
+                        kNumberFormatDecimal, misc_info_.protected_process);
+    printf("  time_zone_id                 = ");
+    PrintValueOrInvalid(misc_info_.flags1 & MD_MISCINFO_FLAGS1_TIMEZONE,
+                        kNumberFormatDecimal, misc_info_.time_zone_id);
+    if (misc_info_.flags1 & MD_MISCINFO_FLAGS1_TIMEZONE) {
+      printf("  time_zone.bias               = %d\n",
+             misc_info_.time_zone.bias);
+      printf("  time_zone.standard_name      = %s\n", standard_name_.c_str());
+      printf("  time_zone.standard_date      = "
+                 "%04d-%02d-%02d (%d) %02d:%02d:%02d.%03d\n",
+             misc_info_.time_zone.standard_date.year,
+             misc_info_.time_zone.standard_date.month,
+             misc_info_.time_zone.standard_date.day,
+             misc_info_.time_zone.standard_date.day_of_week,
+             misc_info_.time_zone.standard_date.hour,
+             misc_info_.time_zone.standard_date.minute,
+             misc_info_.time_zone.standard_date.second,
+             misc_info_.time_zone.standard_date.milliseconds);
+      printf("  time_zone.standard_bias      = %d\n",
+             misc_info_.time_zone.standard_bias);
+      printf("  time_zone.daylight_name      = %s\n", daylight_name_.c_str());
+      printf("  time_zone.daylight_date      = "
+                 "%04d-%02d-%02d (%d) %02d:%02d:%02d.%03d\n",
+             misc_info_.time_zone.daylight_date.year,
+             misc_info_.time_zone.daylight_date.month,
+             misc_info_.time_zone.daylight_date.day,
+             misc_info_.time_zone.daylight_date.day_of_week,
+             misc_info_.time_zone.daylight_date.hour,
+             misc_info_.time_zone.daylight_date.minute,
+             misc_info_.time_zone.daylight_date.second,
+             misc_info_.time_zone.daylight_date.milliseconds);
+      printf("  time_zone.daylight_bias      = %d\n",
+             misc_info_.time_zone.daylight_bias);
+    } else {
+      printf("  time_zone.bias               = (invalid)\n");
+      printf("  time_zone.standard_name      = (invalid)\n");
+      printf("  time_zone.standard_date      = (invalid)\n");
+      printf("  time_zone.standard_bias      = (invalid)\n");
+      printf("  time_zone.daylight_name      = (invalid)\n");
+      printf("  time_zone.daylight_date      = (invalid)\n");
+      printf("  time_zone.daylight_bias      = (invalid)\n");
+    }
+  }
+  if (misc_info_.size_of_info > MD_MISCINFO3_SIZE) {
+    // Print version 4 fields
+    if (misc_info_.flags1 & MD_MISCINFO_FLAGS1_BUILDSTRING) {
+      printf("  build_string                 = %s\n", build_string_.c_str());
+      printf("  dbg_bld_str                  = %s\n", dbg_bld_str_.c_str());
+    } else {
+      printf("  build_string                 = (invalid)\n");
+      printf("  dbg_bld_str                  = (invalid)\n");
+    }
+  }
+  printf("\n");
+}
+
+
+//
+// MinidumpBreakpadInfo
+//
+
+
+MinidumpBreakpadInfo::MinidumpBreakpadInfo(Minidump* minidump)
+    : MinidumpStream(minidump),
+      breakpad_info_() {
+}
+
+
+bool MinidumpBreakpadInfo::Read(uint32_t expected_size) {
+  valid_ = false;
+
+  if (expected_size != sizeof(breakpad_info_)) {
+    BPLOG(ERROR) << "MinidumpBreakpadInfo size mismatch, " << expected_size <<
+                    " != " << sizeof(breakpad_info_);
+    return false;
+  }
+
+  if (!minidump_->ReadBytes(&breakpad_info_, sizeof(breakpad_info_))) {
+    BPLOG(ERROR) << "MinidumpBreakpadInfo cannot read Breakpad info";
+    return false;
+  }
+
+  if (minidump_->swap()) {
+    Swap(&breakpad_info_.validity);
+    Swap(&breakpad_info_.dump_thread_id);
+    Swap(&breakpad_info_.requesting_thread_id);
+  }
+
+  valid_ = true;
+  return true;
+}
+
+
+bool MinidumpBreakpadInfo::GetDumpThreadID(uint32_t *thread_id) const {
+  BPLOG_IF(ERROR, !thread_id) << "MinidumpBreakpadInfo::GetDumpThreadID "
+                                 "requires |thread_id|";
+  assert(thread_id);
+  *thread_id = 0;
+
+  if (!valid_) {
+    BPLOG(ERROR) << "Invalid MinidumpBreakpadInfo for GetDumpThreadID";
+    return false;
+  }
+
+  if (!(breakpad_info_.validity & MD_BREAKPAD_INFO_VALID_DUMP_THREAD_ID)) {
+    BPLOG(INFO) << "MinidumpBreakpadInfo has no dump thread";
+    return false;
+  }
+
+  *thread_id = breakpad_info_.dump_thread_id;
+  return true;
+}
+
+
+bool MinidumpBreakpadInfo::GetRequestingThreadID(uint32_t *thread_id)
+    const {
+  BPLOG_IF(ERROR, !thread_id) << "MinidumpBreakpadInfo::GetRequestingThreadID "
+                                 "requires |thread_id|";
+  assert(thread_id);
+  *thread_id = 0;
+
+  if (!thread_id || !valid_) {
+    BPLOG(ERROR) << "Invalid MinidumpBreakpadInfo for GetRequestingThreadID";
+    return false;
+  }
+
+  if (!(breakpad_info_.validity &
+            MD_BREAKPAD_INFO_VALID_REQUESTING_THREAD_ID)) {
+    BPLOG(INFO) << "MinidumpBreakpadInfo has no requesting thread";
+    return false;
+  }
+
+  *thread_id = breakpad_info_.requesting_thread_id;
+  return true;
+}
+
+
+void MinidumpBreakpadInfo::Print() {
+  if (!valid_) {
+    BPLOG(ERROR) << "MinidumpBreakpadInfo cannot print invalid data";
+    return;
+  }
+
+  printf("MDRawBreakpadInfo\n");
+  printf("  validity             = 0x%x\n", breakpad_info_.validity);
+  printf("  dump_thread_id       = ");
+  PrintValueOrInvalid(breakpad_info_.validity &
+                          MD_BREAKPAD_INFO_VALID_DUMP_THREAD_ID,
+                      kNumberFormatHexadecimal, breakpad_info_.dump_thread_id);
+  printf("  requesting_thread_id = ");
+  PrintValueOrInvalid(breakpad_info_.validity &
+                          MD_BREAKPAD_INFO_VALID_REQUESTING_THREAD_ID,
+                      kNumberFormatHexadecimal,
+                      breakpad_info_.requesting_thread_id);
+
+  printf("\n");
+}
+
+
+//
+// MinidumpMemoryInfo
+//
+
+
+MinidumpMemoryInfo::MinidumpMemoryInfo(Minidump* minidump)
+    : MinidumpObject(minidump),
+      memory_info_() {
+}
+
+
+bool MinidumpMemoryInfo::IsExecutable() const {
+  uint32_t protection =
+      memory_info_.protection & MD_MEMORY_PROTECTION_ACCESS_MASK;
+  return protection == MD_MEMORY_PROTECT_EXECUTE ||
+      protection == MD_MEMORY_PROTECT_EXECUTE_READ ||
+      protection == MD_MEMORY_PROTECT_EXECUTE_READWRITE;
+}
+
+
+bool MinidumpMemoryInfo::IsWritable() const {
+  uint32_t protection =
+      memory_info_.protection & MD_MEMORY_PROTECTION_ACCESS_MASK;
+  return protection == MD_MEMORY_PROTECT_READWRITE ||
+    protection == MD_MEMORY_PROTECT_WRITECOPY ||
+    protection == MD_MEMORY_PROTECT_EXECUTE_READWRITE ||
+    protection == MD_MEMORY_PROTECT_EXECUTE_WRITECOPY;
+}
+
+
+bool MinidumpMemoryInfo::Read() {
+  valid_ = false;
+
+  if (!minidump_->ReadBytes(&memory_info_, sizeof(memory_info_))) {
+    BPLOG(ERROR) << "MinidumpMemoryInfo cannot read memory info";
+    return false;
+  }
+
+  if (minidump_->swap()) {
+    Swap(&memory_info_.base_address);
+    Swap(&memory_info_.allocation_base);
+    Swap(&memory_info_.allocation_protection);
+    Swap(&memory_info_.region_size);
+    Swap(&memory_info_.state);
+    Swap(&memory_info_.protection);
+    Swap(&memory_info_.type);
+  }
+
+  // Check for base + size overflow or undersize.
+  if (memory_info_.region_size == 0 ||
+      memory_info_.region_size > numeric_limits<uint64_t>::max() -
+                                     memory_info_.base_address) {
+    BPLOG(ERROR) << "MinidumpMemoryInfo has a memory region problem, " <<
+                    HexString(memory_info_.base_address) << "+" <<
+                    HexString(memory_info_.region_size);
+    return false;
+  }
+
+  valid_ = true;
+  return true;
+}
+
+
+void MinidumpMemoryInfo::Print() {
+  if (!valid_) {
+    BPLOG(ERROR) << "MinidumpMemoryInfo cannot print invalid data";
+    return;
+  }
+
+  printf("MDRawMemoryInfo\n");
+  printf("  base_address          = 0x%" PRIx64 "\n",
+         memory_info_.base_address);
+  printf("  allocation_base       = 0x%" PRIx64 "\n",
+         memory_info_.allocation_base);
+  printf("  allocation_protection = 0x%x\n",
+         memory_info_.allocation_protection);
+  printf("  region_size           = 0x%" PRIx64 "\n", memory_info_.region_size);
+  printf("  state                 = 0x%x\n", memory_info_.state);
+  printf("  protection            = 0x%x\n", memory_info_.protection);
+  printf("  type                  = 0x%x\n", memory_info_.type);
+}
+
+
+//
+// MinidumpMemoryInfoList
+//
+
+
+MinidumpMemoryInfoList::MinidumpMemoryInfoList(Minidump* minidump)
+    : MinidumpStream(minidump),
+      range_map_(new RangeMap<uint64_t, unsigned int>()),
+      infos_(NULL),
+      info_count_(0) {
+}
+
+
+MinidumpMemoryInfoList::~MinidumpMemoryInfoList() {
+  delete range_map_;
+  delete infos_;
+}
+
+
+bool MinidumpMemoryInfoList::Read(uint32_t expected_size) {
+  // Invalidate cached data.
+  delete infos_;
+  infos_ = NULL;
+  range_map_->Clear();
+  info_count_ = 0;
+
+  valid_ = false;
+
+  MDRawMemoryInfoList header;
+  if (expected_size < sizeof(MDRawMemoryInfoList)) {
+    BPLOG(ERROR) << "MinidumpMemoryInfoList header size mismatch, " <<
+                    expected_size << " < " << sizeof(MDRawMemoryInfoList);
+    return false;
+  }
+  if (!minidump_->ReadBytes(&header, sizeof(header))) {
+    BPLOG(ERROR) << "MinidumpMemoryInfoList could not read header";
+    return false;
+  }
+
+  if (minidump_->swap()) {
+    Swap(&header.size_of_header);
+    Swap(&header.size_of_entry);
+    Swap(&header.number_of_entries);
+  }
+
+  // Sanity check that the header is the expected size.
+  // TODO(ted): could possibly handle this more gracefully, assuming
+  // that future versions of the structs would be backwards-compatible.
+  if (header.size_of_header != sizeof(MDRawMemoryInfoList)) {
+    BPLOG(ERROR) << "MinidumpMemoryInfoList header size mismatch, " <<
+                    header.size_of_header << " != " <<
+                    sizeof(MDRawMemoryInfoList);
+    return false;
+  }
+
+  // Sanity check that the entries are the expected size.
+  if (header.size_of_entry != sizeof(MDRawMemoryInfo)) {
+    BPLOG(ERROR) << "MinidumpMemoryInfoList entry size mismatch, " <<
+                    header.size_of_entry << " != " <<
+                    sizeof(MDRawMemoryInfo);
+    return false;
+  }
+
+  if (header.number_of_entries >
+          numeric_limits<uint32_t>::max() / sizeof(MDRawMemoryInfo)) {
+    BPLOG(ERROR) << "MinidumpMemoryInfoList info count " <<
+                    header.number_of_entries <<
+                    " would cause multiplication overflow";
+    return false;
+  }
+
+  if (expected_size != sizeof(MDRawMemoryInfoList) +
+                        header.number_of_entries * sizeof(MDRawMemoryInfo)) {
+    BPLOG(ERROR) << "MinidumpMemoryInfoList size mismatch, " << expected_size <<
+                    " != " << sizeof(MDRawMemoryInfoList) +
+                        header.number_of_entries * sizeof(MDRawMemoryInfo);
+    return false;
+  }
+
+  // Check for data loss when converting header.number_of_entries from
+  // uint64_t into MinidumpMemoryInfos::size_type (uint32_t)
+  MinidumpMemoryInfos::size_type header_number_of_entries =
+      static_cast<unsigned int>(header.number_of_entries);
+  if (static_cast<uint64_t>(header_number_of_entries) !=
+      header.number_of_entries) {
+    BPLOG(ERROR) << "Data loss detected when converting "
+                    "the header's number_of_entries";
+    return false;
+  }
+
+  if (header.number_of_entries != 0) {
+    scoped_ptr<MinidumpMemoryInfos> infos(
+        new MinidumpMemoryInfos(header_number_of_entries,
+                                MinidumpMemoryInfo(minidump_)));
+
+    for (unsigned int index = 0;
+         index < header.number_of_entries;
+         ++index) {
+      MinidumpMemoryInfo* info = &(*infos)[index];
+
+      // Assume that the file offset is correct after the last read.
+      if (!info->Read()) {
+        BPLOG(ERROR) << "MinidumpMemoryInfoList cannot read info " <<
+                        index << "/" << header.number_of_entries;
+        return false;
+      }
+
+      uint64_t base_address = info->GetBase();
+      uint64_t region_size = info->GetSize();
+
+      if (!range_map_->StoreRange(base_address, region_size, index)) {
+        BPLOG(ERROR) << "MinidumpMemoryInfoList could not store"
+                        " memory region " <<
+                        index << "/" << header.number_of_entries << ", " <<
+                        HexString(base_address) << "+" <<
+                        HexString(region_size);
+        return false;
+      }
+    }
+
+    infos_ = infos.release();
+  }
+
+  info_count_ = header_number_of_entries;
+
+  valid_ = true;
+  return true;
+}
+
+
+const MinidumpMemoryInfo* MinidumpMemoryInfoList::GetMemoryInfoAtIndex(
+      unsigned int index) const {
+  if (!valid_) {
+    BPLOG(ERROR) << "Invalid MinidumpMemoryInfoList for GetMemoryInfoAtIndex";
+    return NULL;
+  }
+
+  if (index >= info_count_) {
+    BPLOG(ERROR) << "MinidumpMemoryInfoList index out of range: " <<
+                    index << "/" << info_count_;
+    return NULL;
+  }
+
+  return &(*infos_)[index];
+}
+
+
+const MinidumpMemoryInfo* MinidumpMemoryInfoList::GetMemoryInfoForAddress(
+    uint64_t address) const {
+  if (!valid_) {
+    BPLOG(ERROR) << "Invalid MinidumpMemoryInfoList for"
+                    " GetMemoryInfoForAddress";
+    return NULL;
+  }
+
+  unsigned int info_index;
+  if (!range_map_->RetrieveRange(address, &info_index, NULL, NULL)) {
+    BPLOG(INFO) << "MinidumpMemoryInfoList has no memory info at " <<
+                   HexString(address);
+    return NULL;
+  }
+
+  return GetMemoryInfoAtIndex(info_index);
+}
+
+
+void MinidumpMemoryInfoList::Print() {
+  if (!valid_) {
+    BPLOG(ERROR) << "MinidumpMemoryInfoList cannot print invalid data";
+    return;
+  }
+
+  printf("MinidumpMemoryInfoList\n");
+  printf("  info_count = %d\n", info_count_);
+  printf("\n");
+
+  for (unsigned int info_index = 0;
+       info_index < info_count_;
+       ++info_index) {
+    printf("info[%d]\n", info_index);
+    (*infos_)[info_index].Print();
+    printf("\n");
+  }
+}
+
+
+//
+// Minidump
+//
+
+
+uint32_t Minidump::max_streams_ = 128;
+unsigned int Minidump::max_string_length_ = 1024;
+
+
+Minidump::Minidump(const string& path)
+    : header_(),
+      directory_(NULL),
+      stream_map_(new MinidumpStreamMap()),
+      path_(path),
+      stream_(NULL),
+      swap_(false),
+      valid_(false) {
+}
+
+Minidump::Minidump(istream& stream)
+    : header_(),
+      directory_(NULL),
+      stream_map_(new MinidumpStreamMap()),
+      path_(),
+      stream_(&stream),
+      swap_(false),
+      valid_(false) {
+}
+
+Minidump::~Minidump() {
+  if (stream_) {
+    BPLOG(INFO) << "Minidump closing minidump";
+  }
+  if (!path_.empty()) {
+    delete stream_;
+  }
+  delete directory_;
+  delete stream_map_;
+}
+
+
+bool Minidump::Open() {
+  if (stream_ != NULL) {
+    BPLOG(INFO) << "Minidump reopening minidump " << path_;
+
+    // The file is already open.  Seek to the beginning, which is the position
+    // the file would be at if it were opened anew.
+    return SeekSet(0);
+  }
+
+  stream_ = new ifstream(path_.c_str(), std::ios::in | std::ios::binary);
+  if (!stream_ || !stream_->good()) {
+    string error_string;
+    int error_code = ErrnoString(&error_string);
+    BPLOG(ERROR) << "Minidump could not open minidump " << path_ <<
+                    ", error " << error_code << ": " << error_string;
+    return false;
+  }
+
+  BPLOG(INFO) << "Minidump opened minidump " << path_;
+  return true;
+}
+
+bool Minidump::GetContextCPUFlagsFromSystemInfo(uint32_t *context_cpu_flags) {
+  // Initialize output parameters
+  *context_cpu_flags = 0;
+
+  // Save the current stream position
+  off_t saved_position = Tell();
+  if (saved_position == -1) {
+    // Failed to save the current stream position.
+    // Returns true because the current position of the stream is preserved.
+    return true;
+  }
+
+  const MDRawSystemInfo* system_info =
+    GetSystemInfo() ? GetSystemInfo()->system_info() : NULL;
+
+  if (system_info != NULL) {
+    switch (system_info->processor_architecture) {
+      case MD_CPU_ARCHITECTURE_X86:
+        *context_cpu_flags = MD_CONTEXT_X86;
+        break;
+      case MD_CPU_ARCHITECTURE_MIPS:
+        *context_cpu_flags = MD_CONTEXT_MIPS;
+        break;
+      case MD_CPU_ARCHITECTURE_ALPHA:
+        *context_cpu_flags = MD_CONTEXT_ALPHA;
+        break;
+      case MD_CPU_ARCHITECTURE_PPC:
+        *context_cpu_flags = MD_CONTEXT_PPC;
+        break;
+      case MD_CPU_ARCHITECTURE_PPC64:
+        *context_cpu_flags = MD_CONTEXT_PPC64;
+        break;
+      case MD_CPU_ARCHITECTURE_SHX:
+        *context_cpu_flags = MD_CONTEXT_SHX;
+        break;
+      case MD_CPU_ARCHITECTURE_ARM:
+        *context_cpu_flags = MD_CONTEXT_ARM;
+        break;
+      case MD_CPU_ARCHITECTURE_ARM64:
+        *context_cpu_flags = MD_CONTEXT_ARM64;
+        break;
+      case MD_CPU_ARCHITECTURE_IA64:
+        *context_cpu_flags = MD_CONTEXT_IA64;
+        break;
+      case MD_CPU_ARCHITECTURE_ALPHA64:
+        *context_cpu_flags = 0;
+        break;
+      case MD_CPU_ARCHITECTURE_MSIL:
+        *context_cpu_flags = 0;
+        break;
+      case MD_CPU_ARCHITECTURE_AMD64:
+        *context_cpu_flags = MD_CONTEXT_AMD64;
+        break;
+      case MD_CPU_ARCHITECTURE_X86_WIN64:
+        *context_cpu_flags = 0;
+        break;
+      case MD_CPU_ARCHITECTURE_SPARC:
+        *context_cpu_flags = MD_CONTEXT_SPARC;
+        break;
+      case MD_CPU_ARCHITECTURE_UNKNOWN:
+        *context_cpu_flags = 0;
+        break;
+      default:
+        *context_cpu_flags = 0;
+        break;
+    }
+  }
+
+  // Restore position and return
+  return SeekSet(saved_position);
+}
+
+
+bool Minidump::Read() {
+  // Invalidate cached data.
+  delete directory_;
+  directory_ = NULL;
+  stream_map_->clear();
+
+  valid_ = false;
+
+  if (!Open()) {
+    BPLOG(ERROR) << "Minidump cannot open minidump";
+    return false;
+  }
+
+  if (!ReadBytes(&header_, sizeof(MDRawHeader))) {
+    BPLOG(ERROR) << "Minidump cannot read header";
+    return false;
+  }
+
+  if (header_.signature != MD_HEADER_SIGNATURE) {
+    // The file may be byte-swapped.  Under the present architecture, these
+    // classes don't know or need to know what CPU (or endianness) the
+    // minidump was produced on in order to parse it.  Use the signature as
+    // a byte order marker.
+    uint32_t signature_swapped = header_.signature;
+    Swap(&signature_swapped);
+    if (signature_swapped != MD_HEADER_SIGNATURE) {
+      // This isn't a minidump or a byte-swapped minidump.
+      BPLOG(ERROR) << "Minidump header signature mismatch: (" <<
+                      HexString(header_.signature) << ", " <<
+                      HexString(signature_swapped) << ") != " <<
+                      HexString(MD_HEADER_SIGNATURE);
+      return false;
+    }
+    swap_ = true;
+  } else {
+    // The file is not byte-swapped.  Set swap_ false (it may have been true
+    // if the object is being reused?)
+    swap_ = false;
+  }
+
+  BPLOG(INFO) << "Minidump " << (swap_ ? "" : "not ") <<
+                 "byte-swapping minidump";
+
+  if (swap_) {
+    Swap(&header_.signature);
+    Swap(&header_.version);
+    Swap(&header_.stream_count);
+    Swap(&header_.stream_directory_rva);
+    Swap(&header_.checksum);
+    Swap(&header_.time_date_stamp);
+    Swap(&header_.flags);
+  }
+
+  // Version check.  The high 16 bits of header_.version contain something
+  // else "implementation specific."
+  if ((header_.version & 0x0000ffff) != MD_HEADER_VERSION) {
+    BPLOG(ERROR) << "Minidump version mismatch: " <<
+                    HexString(header_.version & 0x0000ffff) << " != " <<
+                    HexString(MD_HEADER_VERSION);
+    return false;
+  }
+
+  if (!SeekSet(header_.stream_directory_rva)) {
+    BPLOG(ERROR) << "Minidump cannot seek to stream directory";
+    return false;
+  }
+
+  if (header_.stream_count > max_streams_) {
+    BPLOG(ERROR) << "Minidump stream count " << header_.stream_count <<
+                    " exceeds maximum " << max_streams_;
+    return false;
+  }
+
+  if (header_.stream_count != 0) {
+    scoped_ptr<MinidumpDirectoryEntries> directory(
+        new MinidumpDirectoryEntries(header_.stream_count));
+
+    // Read the entire array in one fell swoop, instead of reading one entry
+    // at a time in the loop.
+    if (!ReadBytes(&(*directory)[0],
+                   sizeof(MDRawDirectory) * header_.stream_count)) {
+      BPLOG(ERROR) << "Minidump cannot read stream directory";
+      return false;
+    }
+
+    for (unsigned int stream_index = 0;
+         stream_index < header_.stream_count;
+         ++stream_index) {
+      MDRawDirectory* directory_entry = &(*directory)[stream_index];
+
+      if (swap_) {
+        Swap(&directory_entry->stream_type);
+        Swap(&directory_entry->location);
+      }
+
+      // Initialize the stream_map_ map, which speeds locating a stream by
+      // type.
+      unsigned int stream_type = directory_entry->stream_type;
+      switch (stream_type) {
+        case MD_THREAD_LIST_STREAM:
+        case MD_MODULE_LIST_STREAM:
+        case MD_MEMORY_LIST_STREAM:
+        case MD_EXCEPTION_STREAM:
+        case MD_SYSTEM_INFO_STREAM:
+        case MD_MISC_INFO_STREAM:
+        case MD_BREAKPAD_INFO_STREAM: {
+          if (stream_map_->find(stream_type) != stream_map_->end()) {
+            // Another stream with this type was already found.  A minidump
+            // file should contain at most one of each of these stream types.
+            BPLOG(ERROR) << "Minidump found multiple streams of type " <<
+                            stream_type << ", but can only deal with one";
+            return false;
+          }
+          // Fall through to default
+        }
+
+        default: {
+          // Overwrites for stream types other than those above, but it's
+          // expected to be the user's burden in that case.
+          (*stream_map_)[stream_type].stream_index = stream_index;
+        }
+      }
+    }
+
+    directory_ = directory.release();
+  }
+
+  valid_ = true;
+  return true;
+}
+
+
+MinidumpThreadList* Minidump::GetThreadList() {
+  MinidumpThreadList* thread_list;
+  return GetStream(&thread_list);
+}
+
+
+MinidumpModuleList* Minidump::GetModuleList() {
+  MinidumpModuleList* module_list;
+  return GetStream(&module_list);
+}
+
+
+MinidumpMemoryList* Minidump::GetMemoryList() {
+  MinidumpMemoryList* memory_list;
+  return GetStream(&memory_list);
+}
+
+
+MinidumpException* Minidump::GetException() {
+  MinidumpException* exception;
+  return GetStream(&exception);
+}
+
+MinidumpAssertion* Minidump::GetAssertion() {
+  MinidumpAssertion* assertion;
+  return GetStream(&assertion);
+}
+
+
+MinidumpSystemInfo* Minidump::GetSystemInfo() {
+  MinidumpSystemInfo* system_info;
+  return GetStream(&system_info);
+}
+
+
+MinidumpMiscInfo* Minidump::GetMiscInfo() {
+  MinidumpMiscInfo* misc_info;
+  return GetStream(&misc_info);
+}
+
+
+MinidumpBreakpadInfo* Minidump::GetBreakpadInfo() {
+  MinidumpBreakpadInfo* breakpad_info;
+  return GetStream(&breakpad_info);
+}
+
+MinidumpMemoryInfoList* Minidump::GetMemoryInfoList() {
+  MinidumpMemoryInfoList* memory_info_list;
+  return GetStream(&memory_info_list);
+}
+
+static const char* get_stream_name(uint32_t stream_type) {
+  switch (stream_type) {
+  case MD_UNUSED_STREAM:
+    return "MD_UNUSED_STREAM";
+  case MD_RESERVED_STREAM_0:
+    return "MD_RESERVED_STREAM_0";
+  case MD_RESERVED_STREAM_1:
+    return "MD_RESERVED_STREAM_1";
+  case MD_THREAD_LIST_STREAM:
+    return "MD_THREAD_LIST_STREAM";
+  case MD_MODULE_LIST_STREAM:
+    return "MD_MODULE_LIST_STREAM";
+  case MD_MEMORY_LIST_STREAM:
+    return "MD_MEMORY_LIST_STREAM";
+  case MD_EXCEPTION_STREAM:
+    return "MD_EXCEPTION_STREAM";
+  case MD_SYSTEM_INFO_STREAM:
+    return "MD_SYSTEM_INFO_STREAM";
+  case MD_THREAD_EX_LIST_STREAM:
+    return "MD_THREAD_EX_LIST_STREAM";
+  case MD_MEMORY_64_LIST_STREAM:
+    return "MD_MEMORY_64_LIST_STREAM";
+  case MD_COMMENT_STREAM_A:
+    return "MD_COMMENT_STREAM_A";
+  case MD_COMMENT_STREAM_W:
+    return "MD_COMMENT_STREAM_W";
+  case MD_HANDLE_DATA_STREAM:
+    return "MD_HANDLE_DATA_STREAM";
+  case MD_FUNCTION_TABLE_STREAM:
+    return "MD_FUNCTION_TABLE_STREAM";
+  case MD_UNLOADED_MODULE_LIST_STREAM:
+    return "MD_UNLOADED_MODULE_LIST_STREAM";
+  case MD_MISC_INFO_STREAM:
+    return "MD_MISC_INFO_STREAM";
+  case MD_MEMORY_INFO_LIST_STREAM:
+    return "MD_MEMORY_INFO_LIST_STREAM";
+  case MD_THREAD_INFO_LIST_STREAM:
+    return "MD_THREAD_INFO_LIST_STREAM";
+  case MD_HANDLE_OPERATION_LIST_STREAM:
+    return "MD_HANDLE_OPERATION_LIST_STREAM";
+  case MD_LAST_RESERVED_STREAM:
+    return "MD_LAST_RESERVED_STREAM";
+  case MD_BREAKPAD_INFO_STREAM:
+    return "MD_BREAKPAD_INFO_STREAM";
+  case MD_ASSERTION_INFO_STREAM:
+    return "MD_ASSERTION_INFO_STREAM";
+  case MD_LINUX_CPU_INFO:
+    return "MD_LINUX_CPU_INFO";
+  case MD_LINUX_PROC_STATUS:
+    return "MD_LINUX_PROC_STATUS";
+  case MD_LINUX_LSB_RELEASE:
+    return "MD_LINUX_LSB_RELEASE";
+  case MD_LINUX_CMD_LINE:
+    return "MD_LINUX_CMD_LINE";
+  case MD_LINUX_ENVIRON:
+    return "MD_LINUX_ENVIRON";
+  case MD_LINUX_AUXV:
+    return "MD_LINUX_AUXV";
+  case MD_LINUX_MAPS:
+    return "MD_LINUX_MAPS";
+  case MD_LINUX_DSO_DEBUG:
+    return "MD_LINUX_DSO_DEBUG";
+  default:
+    return "unknown";
+  }
+}
+
+void Minidump::Print() {
+  if (!valid_) {
+    BPLOG(ERROR) << "Minidump cannot print invalid data";
+    return;
+  }
+
+  printf("MDRawHeader\n");
+  printf("  signature            = 0x%x\n",    header_.signature);
+  printf("  version              = 0x%x\n",    header_.version);
+  printf("  stream_count         = %d\n",      header_.stream_count);
+  printf("  stream_directory_rva = 0x%x\n",    header_.stream_directory_rva);
+  printf("  checksum             = 0x%x\n",    header_.checksum);
+  printf("  time_date_stamp      = 0x%x %s\n",
+         header_.time_date_stamp,
+         TimeTToUTCString(header_.time_date_stamp).c_str());
+  printf("  flags                = 0x%" PRIx64 "\n",  header_.flags);
+  printf("\n");
+
+  for (unsigned int stream_index = 0;
+       stream_index < header_.stream_count;
+       ++stream_index) {
+    MDRawDirectory* directory_entry = &(*directory_)[stream_index];
+
+    printf("mDirectory[%d]\n", stream_index);
+    printf("MDRawDirectory\n");
+    printf("  stream_type        = 0x%x (%s)\n", directory_entry->stream_type,
+           get_stream_name(directory_entry->stream_type));
+    printf("  location.data_size = %d\n",
+           directory_entry->location.data_size);
+    printf("  location.rva       = 0x%x\n", directory_entry->location.rva);
+    printf("\n");
+  }
+
+  printf("Streams:\n");
+  for (MinidumpStreamMap::const_iterator iterator = stream_map_->begin();
+       iterator != stream_map_->end();
+       ++iterator) {
+    uint32_t stream_type = iterator->first;
+    MinidumpStreamInfo info = iterator->second;
+    printf("  stream type 0x%x (%s) at index %d\n", stream_type,
+           get_stream_name(stream_type),
+           info.stream_index);
+  }
+  printf("\n");
+}
+
+
+const MDRawDirectory* Minidump::GetDirectoryEntryAtIndex(unsigned int index)
+      const {
+  if (!valid_) {
+    BPLOG(ERROR) << "Invalid Minidump for GetDirectoryEntryAtIndex";
+    return NULL;
+  }
+
+  if (index >= header_.stream_count) {
+    BPLOG(ERROR) << "Minidump stream directory index out of range: " <<
+                    index << "/" << header_.stream_count;
+    return NULL;
+  }
+
+  return &(*directory_)[index];
+}
+
+
+bool Minidump::ReadBytes(void* bytes, size_t count) {
+  // Can't check valid_ because Read needs to call this method before
+  // validity can be determined.
+  if (!stream_) {
+    return false;
+  }
+  stream_->read(static_cast<char*>(bytes), count);
+  std::streamsize bytes_read = stream_->gcount();
+  if (bytes_read == -1) {
+    string error_string;
+    int error_code = ErrnoString(&error_string);
+    BPLOG(ERROR) << "ReadBytes: error " << error_code << ": " << error_string;
+    return false;
+  }
+
+  // Convert to size_t and check for data loss
+  size_t bytes_read_converted = static_cast<size_t>(bytes_read);
+  if (static_cast<std::streamsize>(bytes_read_converted) != bytes_read) {
+    BPLOG(ERROR) << "ReadBytes: conversion data loss detected when converting "
+                 << bytes_read << " to " << bytes_read_converted;
+    return false;
+  }
+
+  if (bytes_read_converted != count) {
+    BPLOG(ERROR) << "ReadBytes: read " << bytes_read_converted << "/" << count;
+    return false;
+  }
+
+  return true;
+}
+
+
+bool Minidump::SeekSet(off_t offset) {
+  // Can't check valid_ because Read needs to call this method before
+  // validity can be determined.
+  if (!stream_) {
+    return false;
+  }
+  stream_->seekg(offset, std::ios_base::beg);
+  if (!stream_->good()) {
+    string error_string;
+    int error_code = ErrnoString(&error_string);
+    BPLOG(ERROR) << "SeekSet: error " << error_code << ": " << error_string;
+    return false;
+  }
+  return true;
+}
+
+off_t Minidump::Tell() {
+  if (!valid_ || !stream_) {
+    return (off_t)-1;
+  }
+
+  // Check for conversion data loss
+  std::streamoff std_streamoff = stream_->tellg();
+  off_t rv = static_cast<off_t>(std_streamoff);
+  if (static_cast<std::streamoff>(rv) == std_streamoff) {
+    return rv;
+  } else {
+    BPLOG(ERROR) << "Data loss detected";
+    return (off_t)-1;
+  }
+}
+
+
+string* Minidump::ReadString(off_t offset) {
+  if (!valid_) {
+    BPLOG(ERROR) << "Invalid Minidump for ReadString";
+    return NULL;
+  }
+  if (!SeekSet(offset)) {
+    BPLOG(ERROR) << "ReadString could not seek to string at offset " << offset;
+    return NULL;
+  }
+
+  uint32_t bytes;
+  if (!ReadBytes(&bytes, sizeof(bytes))) {
+    BPLOG(ERROR) << "ReadString could not read string size at offset " <<
+                    offset;
+    return NULL;
+  }
+  if (swap_)
+    Swap(&bytes);
+
+  if (bytes % 2 != 0) {
+    BPLOG(ERROR) << "ReadString found odd-sized " << bytes <<
+                    "-byte string at offset " << offset;
+    return NULL;
+  }
+  unsigned int utf16_words = bytes / 2;
+
+  if (utf16_words > max_string_length_) {
+    BPLOG(ERROR) << "ReadString string length " << utf16_words <<
+                    " exceeds maximum " << max_string_length_ <<
+                    " at offset " << offset;
+    return NULL;
+  }
+
+  vector<uint16_t> string_utf16(utf16_words);
+
+  if (utf16_words) {
+    if (!ReadBytes(&string_utf16[0], bytes)) {
+      BPLOG(ERROR) << "ReadString could not read " << bytes <<
+                      "-byte string at offset " << offset;
+      return NULL;
+    }
+  }
+
+  return UTF16ToUTF8(string_utf16, swap_);
+}
+
+
+bool Minidump::SeekToStreamType(uint32_t  stream_type,
+                                uint32_t* stream_length) {
+  BPLOG_IF(ERROR, !stream_length) << "Minidump::SeekToStreamType requires "
+                                     "|stream_length|";
+  assert(stream_length);
+  *stream_length = 0;
+
+  if (!valid_) {
+    BPLOG(ERROR) << "Invalid Mindump for SeekToStreamType";
+    return false;
+  }
+
+  MinidumpStreamMap::const_iterator iterator = stream_map_->find(stream_type);
+  if (iterator == stream_map_->end()) {
+    // This stream type didn't exist in the directory.
+    BPLOG(INFO) << "SeekToStreamType: type " << stream_type << " not present";
+    return false;
+  }
+
+  MinidumpStreamInfo info = iterator->second;
+  if (info.stream_index >= header_.stream_count) {
+    BPLOG(ERROR) << "SeekToStreamType: type " << stream_type <<
+                    " out of range: " <<
+                    info.stream_index << "/" << header_.stream_count;
+    return false;
+  }
+
+  MDRawDirectory* directory_entry = &(*directory_)[info.stream_index];
+  if (!SeekSet(directory_entry->location.rva)) {
+    BPLOG(ERROR) << "SeekToStreamType could not seek to stream type " <<
+                    stream_type;
+    return false;
+  }
+
+  *stream_length = directory_entry->location.data_size;
+
+  return true;
+}
+
+
+template<typename T>
+T* Minidump::GetStream(T** stream) {
+  // stream is a garbage parameter that's present only to account for C++'s
+  // inability to overload a method based solely on its return type.
+
+  const uint32_t stream_type = T::kStreamType;
+
+  BPLOG_IF(ERROR, !stream) << "Minidump::GetStream type " << stream_type <<
+                              " requires |stream|";
+  assert(stream);
+  *stream = NULL;
+
+  if (!valid_) {
+    BPLOG(ERROR) << "Invalid Minidump for GetStream type " << stream_type;
+    return NULL;
+  }
+
+  MinidumpStreamMap::iterator iterator = stream_map_->find(stream_type);
+  if (iterator == stream_map_->end()) {
+    // This stream type didn't exist in the directory.
+    BPLOG(INFO) << "GetStream: type " << stream_type << " not present";
+    return NULL;
+  }
+
+  // Get a pointer so that the stored stream field can be altered.
+  MinidumpStreamInfo* info = &iterator->second;
+
+  if (info->stream) {
+    // This cast is safe because info.stream is only populated by this
+    // method, and there is a direct correlation between T and stream_type.
+    *stream = static_cast<T*>(info->stream);
+    return *stream;
+  }
+
+  uint32_t stream_length;
+  if (!SeekToStreamType(stream_type, &stream_length)) {
+    BPLOG(ERROR) << "GetStream could not seek to stream type " << stream_type;
+    return NULL;
+  }
+
+  scoped_ptr<T> new_stream(new T(this));
+
+  if (!new_stream->Read(stream_length)) {
+    BPLOG(ERROR) << "GetStream could not read stream type " << stream_type;
+    return NULL;
+  }
+
+  *stream = new_stream.release();
+  info->stream = *stream;
+  return *stream;
+}
+
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/processor/minidump_dump.cc b/google-breakpad/src/processor/minidump_dump.cc
new file mode 100644
index 0000000..343f044
--- /dev/null
+++ b/google-breakpad/src/processor/minidump_dump.cc
@@ -0,0 +1,213 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// minidump_dump.cc: Print the contents of a minidump file in somewhat
+// readable text.
+//
+// Author: Mark Mentovai
+
+#include <stdio.h>
+#include <string.h>
+
+#include "common/scoped_ptr.h"
+#include "google_breakpad/processor/minidump.h"
+#include "processor/logging.h"
+
+namespace {
+
+using google_breakpad::Minidump;
+using google_breakpad::MinidumpThreadList;
+using google_breakpad::MinidumpModuleList;
+using google_breakpad::MinidumpMemoryInfoList;
+using google_breakpad::MinidumpMemoryList;
+using google_breakpad::MinidumpException;
+using google_breakpad::MinidumpAssertion;
+using google_breakpad::MinidumpSystemInfo;
+using google_breakpad::MinidumpMiscInfo;
+using google_breakpad::MinidumpBreakpadInfo;
+
+static void DumpRawStream(Minidump *minidump,
+                          uint32_t stream_type,
+                          const char *stream_name,
+                          int *errors) {
+  uint32_t length = 0;
+  if (!minidump->SeekToStreamType(stream_type, &length)) {
+    return;
+  }
+
+  printf("Stream %s:\n", stream_name);
+
+  if (length == 0) {
+    printf("\n");
+    return;
+  }
+  std::vector<char> contents(length);
+  if (!minidump->ReadBytes(&contents[0], length)) {
+    ++*errors;
+    BPLOG(ERROR) << "minidump.ReadBytes failed";
+    return;
+  }
+  size_t current_offset = 0;
+  while (current_offset < length) {
+    size_t remaining = length - current_offset;
+    // Printf requires an int and direct casting from size_t results
+    // in compatibility warnings.
+    uint32_t int_remaining = remaining;
+    printf("%.*s", int_remaining, &contents[current_offset]);
+    char *next_null = reinterpret_cast<char *>(
+        memchr(&contents[current_offset], 0, remaining));
+    if (next_null == NULL)
+      break;
+    printf("\\0\n");
+    size_t null_offset = next_null - &contents[0];
+    current_offset = null_offset + 1;
+  }
+  printf("\n\n");
+}
+
+static bool PrintMinidumpDump(const char *minidump_file) {
+  Minidump minidump(minidump_file);
+  if (!minidump.Read()) {
+    BPLOG(ERROR) << "minidump.Read() failed";
+    return false;
+  }
+  minidump.Print();
+
+  int errors = 0;
+
+  MinidumpThreadList *thread_list = minidump.GetThreadList();
+  if (!thread_list) {
+    ++errors;
+    BPLOG(ERROR) << "minidump.GetThreadList() failed";
+  } else {
+    thread_list->Print();
+  }
+
+  MinidumpModuleList *module_list = minidump.GetModuleList();
+  if (!module_list) {
+    ++errors;
+    BPLOG(ERROR) << "minidump.GetModuleList() failed";
+  } else {
+    module_list->Print();
+  }
+
+  MinidumpMemoryList *memory_list = minidump.GetMemoryList();
+  if (!memory_list) {
+    ++errors;
+    BPLOG(ERROR) << "minidump.GetMemoryList() failed";
+  } else {
+    memory_list->Print();
+  }
+
+  MinidumpException *exception = minidump.GetException();
+  if (!exception) {
+    BPLOG(INFO) << "minidump.GetException() failed";
+  } else {
+    exception->Print();
+  }
+
+  MinidumpAssertion *assertion = minidump.GetAssertion();
+  if (!assertion) {
+    BPLOG(INFO) << "minidump.GetAssertion() failed";
+  } else {
+    assertion->Print();
+  }
+
+  MinidumpSystemInfo *system_info = minidump.GetSystemInfo();
+  if (!system_info) {
+    ++errors;
+    BPLOG(ERROR) << "minidump.GetSystemInfo() failed";
+  } else {
+    system_info->Print();
+  }
+
+  MinidumpMiscInfo *misc_info = minidump.GetMiscInfo();
+  if (!misc_info) {
+    ++errors;
+    BPLOG(ERROR) << "minidump.GetMiscInfo() failed";
+  } else {
+    misc_info->Print();
+  }
+
+  MinidumpBreakpadInfo *breakpad_info = minidump.GetBreakpadInfo();
+  if (!breakpad_info) {
+    // Breakpad info is optional, so don't treat this as an error.
+    BPLOG(INFO) << "minidump.GetBreakpadInfo() failed";
+  } else {
+    breakpad_info->Print();
+  }
+
+  MinidumpMemoryInfoList *memory_info_list = minidump.GetMemoryInfoList();
+  if (!memory_info_list) {
+    ++errors;
+    BPLOG(ERROR) << "minidump.GetMemoryInfoList() failed";
+  } else {
+    memory_info_list->Print();
+  }
+
+  DumpRawStream(&minidump,
+                MD_LINUX_CMD_LINE,
+                "MD_LINUX_CMD_LINE",
+                &errors);
+  DumpRawStream(&minidump,
+                MD_LINUX_ENVIRON,
+                "MD_LINUX_ENVIRON",
+                &errors);
+  DumpRawStream(&minidump,
+                MD_LINUX_LSB_RELEASE,
+                "MD_LINUX_LSB_RELEASE",
+                &errors);
+  DumpRawStream(&minidump,
+                MD_LINUX_PROC_STATUS,
+                "MD_LINUX_PROC_STATUS",
+                &errors);
+  DumpRawStream(&minidump,
+                MD_LINUX_CPU_INFO,
+                "MD_LINUX_CPU_INFO",
+                &errors);
+  DumpRawStream(&minidump,
+                MD_LINUX_MAPS,
+                "MD_LINUX_MAPS",
+                &errors);
+
+  return errors == 0;
+}
+
+}  // namespace
+
+int main(int argc, char **argv) {
+  BPLOG_INIT(&argc, &argv);
+
+  if (argc != 2) {
+    fprintf(stderr, "usage: %s <file>\n", argv[0]);
+    return 1;
+  }
+
+  return PrintMinidumpDump(argv[1]) ? 0 : 1;
+}
diff --git a/google-breakpad/src/processor/minidump_dump_test b/google-breakpad/src/processor/minidump_dump_test
new file mode 100755
index 0000000..fb62ace
--- /dev/null
+++ b/google-breakpad/src/processor/minidump_dump_test
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+# Copyright (c) 2006, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+testdata_dir=$srcdir/src/processor/testdata
+./src/processor/minidump_dump $testdata_dir/minidump2.dmp | \
+ tr -d '\015' | \
+ diff -u $testdata_dir/minidump2.dump.out -
+exit $?
diff --git a/google-breakpad/src/processor/minidump_processor.cc b/google-breakpad/src/processor/minidump_processor.cc
new file mode 100644
index 0000000..71dedab
--- /dev/null
+++ b/google-breakpad/src/processor/minidump_processor.cc
@@ -0,0 +1,1536 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//    * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include "google_breakpad/processor/minidump_processor.h"
+
+#include <assert.h>
+#include <stdio.h>
+
+#include <string>
+
+#include "common/scoped_ptr.h"
+#include "common/using_std_string.h"
+#include "google_breakpad/processor/call_stack.h"
+#include "google_breakpad/processor/minidump.h"
+#include "google_breakpad/processor/process_state.h"
+#include "google_breakpad/processor/exploitability.h"
+#include "google_breakpad/processor/stack_frame_symbolizer.h"
+#include "processor/logging.h"
+#include "processor/stackwalker_x86.h"
+#include "processor/symbolic_constants_win.h"
+
+namespace google_breakpad {
+
+MinidumpProcessor::MinidumpProcessor(SymbolSupplier *supplier,
+                                     SourceLineResolverInterface *resolver)
+    : frame_symbolizer_(new StackFrameSymbolizer(supplier, resolver)),
+      own_frame_symbolizer_(true),
+      enable_exploitability_(false) {
+}
+
+MinidumpProcessor::MinidumpProcessor(SymbolSupplier *supplier,
+                                     SourceLineResolverInterface *resolver,
+                                     bool enable_exploitability)
+    : frame_symbolizer_(new StackFrameSymbolizer(supplier, resolver)),
+      own_frame_symbolizer_(true),
+      enable_exploitability_(enable_exploitability) {
+}
+
+MinidumpProcessor::MinidumpProcessor(StackFrameSymbolizer *frame_symbolizer,
+                                     bool enable_exploitability)
+    : frame_symbolizer_(frame_symbolizer),
+      own_frame_symbolizer_(false),
+      enable_exploitability_(enable_exploitability) {
+  assert(frame_symbolizer_);
+}
+
+MinidumpProcessor::~MinidumpProcessor() {
+  if (own_frame_symbolizer_) delete frame_symbolizer_;
+}
+
+ProcessResult MinidumpProcessor::Process(
+    Minidump *dump, ProcessState *process_state) {
+  assert(dump);
+  assert(process_state);
+
+  process_state->Clear();
+
+  const MDRawHeader *header = dump->header();
+  if (!header) {
+    BPLOG(ERROR) << "Minidump " << dump->path() << " has no header";
+    return PROCESS_ERROR_NO_MINIDUMP_HEADER;
+  }
+  process_state->time_date_stamp_ = header->time_date_stamp;
+
+  bool has_process_create_time =
+      GetProcessCreateTime(dump, &process_state->process_create_time_);
+
+  bool has_cpu_info = GetCPUInfo(dump, &process_state->system_info_);
+  bool has_os_info = GetOSInfo(dump, &process_state->system_info_);
+
+  uint32_t dump_thread_id = 0;
+  bool has_dump_thread = false;
+  uint32_t requesting_thread_id = 0;
+  bool has_requesting_thread = false;
+
+  MinidumpBreakpadInfo *breakpad_info = dump->GetBreakpadInfo();
+  if (breakpad_info) {
+    has_dump_thread = breakpad_info->GetDumpThreadID(&dump_thread_id);
+    has_requesting_thread =
+        breakpad_info->GetRequestingThreadID(&requesting_thread_id);
+  }
+
+  MinidumpException *exception = dump->GetException();
+  if (exception) {
+    process_state->crashed_ = true;
+    has_requesting_thread = exception->GetThreadID(&requesting_thread_id);
+
+    process_state->crash_reason_ = GetCrashReason(
+        dump, &process_state->crash_address_);
+  }
+
+  // This will just return an empty string if it doesn't exist.
+  process_state->assertion_ = GetAssertion(dump);
+
+  MinidumpModuleList *module_list = dump->GetModuleList();
+
+  // Put a copy of the module list into ProcessState object.  This is not
+  // necessarily a MinidumpModuleList, but it adheres to the CodeModules
+  // interface, which is all that ProcessState needs to expose.
+  if (module_list)
+    process_state->modules_ = module_list->Copy();
+
+  MinidumpMemoryList *memory_list = dump->GetMemoryList();
+  if (memory_list) {
+    BPLOG(INFO) << "Found " << memory_list->region_count()
+                << " memory regions.";
+  }
+
+  MinidumpThreadList *threads = dump->GetThreadList();
+  if (!threads) {
+    BPLOG(ERROR) << "Minidump " << dump->path() << " has no thread list";
+    return PROCESS_ERROR_NO_THREAD_LIST;
+  }
+
+  BPLOG(INFO) << "Minidump " << dump->path() << " has " <<
+      (has_cpu_info            ? "" : "no ") << "CPU info, " <<
+      (has_os_info             ? "" : "no ") << "OS info, " <<
+      (breakpad_info != NULL   ? "" : "no ") << "Breakpad info, " <<
+      (exception != NULL       ? "" : "no ") << "exception, " <<
+      (module_list != NULL     ? "" : "no ") << "module list, " <<
+      (threads != NULL         ? "" : "no ") << "thread list, " <<
+      (has_dump_thread         ? "" : "no ") << "dump thread, " <<
+      (has_requesting_thread   ? "" : "no ") << "requesting thread, and " <<
+      (has_process_create_time ? "" : "no ") << "process create time";
+
+  bool interrupted = false;
+  bool found_requesting_thread = false;
+  unsigned int thread_count = threads->thread_count();
+
+  // Reset frame_symbolizer_ at the beginning of stackwalk for each minidump.
+  frame_symbolizer_->Reset();
+
+  for (unsigned int thread_index = 0;
+       thread_index < thread_count;
+       ++thread_index) {
+    char thread_string_buffer[64];
+    snprintf(thread_string_buffer, sizeof(thread_string_buffer), "%d/%d",
+             thread_index, thread_count);
+    string thread_string = dump->path() + ":" + thread_string_buffer;
+
+    MinidumpThread *thread = threads->GetThreadAtIndex(thread_index);
+    if (!thread) {
+      BPLOG(ERROR) << "Could not get thread for " << thread_string;
+      return PROCESS_ERROR_GETTING_THREAD;
+    }
+
+    uint32_t thread_id;
+    if (!thread->GetThreadID(&thread_id)) {
+      BPLOG(ERROR) << "Could not get thread ID for " << thread_string;
+      return PROCESS_ERROR_GETTING_THREAD_ID;
+    }
+
+    thread_string += " id " + HexString(thread_id);
+    BPLOG(INFO) << "Looking at thread " << thread_string;
+
+    // If this thread is the thread that produced the minidump, don't process
+    // it.  Because of the problems associated with a thread producing a
+    // dump of itself (when both its context and its stack are in flux),
+    // processing that stack wouldn't provide much useful data.
+    if (has_dump_thread && thread_id == dump_thread_id) {
+      continue;
+    }
+
+    MinidumpContext *context = thread->GetContext();
+
+    if (has_requesting_thread && thread_id == requesting_thread_id) {
+      if (found_requesting_thread) {
+        // There can't be more than one requesting thread.
+        BPLOG(ERROR) << "Duplicate requesting thread: " << thread_string;
+        return PROCESS_ERROR_DUPLICATE_REQUESTING_THREADS;
+      }
+
+      // Use processed_state->threads_.size() instead of thread_index.
+      // thread_index points to the thread index in the minidump, which
+      // might be greater than the thread index in the threads vector if
+      // any of the minidump's threads are skipped and not placed into the
+      // processed threads vector.  The thread vector's current size will
+      // be the index of the current thread when it's pushed into the
+      // vector.
+      process_state->requesting_thread_ = process_state->threads_.size();
+
+      found_requesting_thread = true;
+
+      if (process_state->crashed_) {
+        // Use the exception record's context for the crashed thread, instead
+        // of the thread's own context.  For the crashed thread, the thread's
+        // own context is the state inside the exception handler.  Using it
+        // would not result in the expected stack trace from the time of the
+        // crash. If the exception context is invalid, however, we fall back
+        // on the thread context.
+        MinidumpContext *ctx = exception->GetContext();
+        context = ctx ? ctx : thread->GetContext();
+      }
+    }
+
+    // If the memory region for the stack cannot be read using the RVA stored
+    // in the memory descriptor inside MINIDUMP_THREAD, try to locate and use
+    // a memory region (containing the stack) from the minidump memory list.
+    MinidumpMemoryRegion *thread_memory = thread->GetMemory();
+    if (!thread_memory && memory_list) {
+      uint64_t start_stack_memory_range = thread->GetStartOfStackMemoryRange();
+      if (start_stack_memory_range) {
+        thread_memory = memory_list->GetMemoryRegionForAddress(
+           start_stack_memory_range);
+      }
+    }
+    if (!thread_memory) {
+      BPLOG(ERROR) << "No memory region for " << thread_string;
+    }
+
+    // Use process_state->modules_ instead of module_list, because the
+    // |modules| argument will be used to populate the |module| fields in
+    // the returned StackFrame objects, which will be placed into the
+    // returned ProcessState object.  module_list's lifetime is only as
+    // long as the Minidump object: it will be deleted when this function
+    // returns.  process_state->modules_ is owned by the ProcessState object
+    // (just like the StackFrame objects), and is much more suitable for this
+    // task.
+    scoped_ptr<Stackwalker> stackwalker(
+        Stackwalker::StackwalkerForCPU(process_state->system_info(),
+                                       context,
+                                       thread_memory,
+                                       process_state->modules_,
+                                       frame_symbolizer_));
+
+    scoped_ptr<CallStack> stack(new CallStack());
+    if (stackwalker.get()) {
+      if (!stackwalker->Walk(stack.get(),
+                             &process_state->modules_without_symbols_,
+                             &process_state->modules_with_corrupt_symbols_)) {
+        BPLOG(INFO) << "Stackwalker interrupt (missing symbols?) at "
+                    << thread_string;
+        interrupted = true;
+      }
+    } else {
+      // Threads with missing CPU contexts will hit this, but
+      // don't abort processing the rest of the dump just for
+      // one bad thread.
+      BPLOG(ERROR) << "No stackwalker for " << thread_string;
+    }
+    process_state->threads_.push_back(stack.release());
+    process_state->thread_memory_regions_.push_back(thread_memory);
+  }
+
+  if (interrupted) {
+    BPLOG(INFO) << "Processing interrupted for " << dump->path();
+    return PROCESS_SYMBOL_SUPPLIER_INTERRUPTED;
+  }
+
+  // If a requesting thread was indicated, it must be present.
+  if (has_requesting_thread && !found_requesting_thread) {
+    // Don't mark as an error, but invalidate the requesting thread
+    BPLOG(ERROR) << "Minidump indicated requesting thread " <<
+        HexString(requesting_thread_id) << ", not found in " <<
+        dump->path();
+    process_state->requesting_thread_ = -1;
+  }
+
+  // Exploitability defaults to EXPLOITABILITY_NOT_ANALYZED
+  process_state->exploitability_ = EXPLOITABILITY_NOT_ANALYZED;
+
+  // If an exploitability run was requested we perform the platform specific
+  // rating.
+  if (enable_exploitability_) {
+    scoped_ptr<Exploitability> exploitability(
+        Exploitability::ExploitabilityForPlatform(dump, process_state));
+    // The engine will be null if the platform is not supported
+    if (exploitability != NULL) {
+      process_state->exploitability_ = exploitability->CheckExploitability();
+    } else {
+      process_state->exploitability_ = EXPLOITABILITY_ERR_NOENGINE;
+    }
+  }
+
+  BPLOG(INFO) << "Processed " << dump->path();
+  return PROCESS_OK;
+}
+
+ProcessResult MinidumpProcessor::Process(
+    const string &minidump_file, ProcessState *process_state) {
+  BPLOG(INFO) << "Processing minidump in file " << minidump_file;
+
+  Minidump dump(minidump_file);
+  if (!dump.Read()) {
+     BPLOG(ERROR) << "Minidump " << dump.path() << " could not be read";
+     return PROCESS_ERROR_MINIDUMP_NOT_FOUND;
+  }
+
+  return Process(&dump, process_state);
+}
+
+// Returns the MDRawSystemInfo from a minidump, or NULL if system info is
+// not available from the minidump.  If system_info is non-NULL, it is used
+// to pass back the MinidumpSystemInfo object.
+static const MDRawSystemInfo* GetSystemInfo(Minidump *dump,
+                                            MinidumpSystemInfo **system_info) {
+  MinidumpSystemInfo *minidump_system_info = dump->GetSystemInfo();
+  if (!minidump_system_info)
+    return NULL;
+
+  if (system_info)
+    *system_info = minidump_system_info;
+
+  return minidump_system_info->system_info();
+}
+
+// Extract CPU info string from ARM-specific MDRawSystemInfo structure.
+// raw_info: pointer to source MDRawSystemInfo.
+// cpu_info: address of target string, cpu info text will be appended to it.
+static void GetARMCpuInfo(const MDRawSystemInfo* raw_info,
+                          string* cpu_info) {
+  assert(raw_info != NULL && cpu_info != NULL);
+
+  // Write ARM architecture version.
+  char cpu_string[32];
+  snprintf(cpu_string, sizeof(cpu_string), "ARMv%d",
+           raw_info->processor_level);
+  cpu_info->append(cpu_string);
+
+  // There is no good list of implementer id values, but the following
+  // pages provide some help:
+  //   http://comments.gmane.org/gmane.linux.linaro.devel/6903
+  //   http://forum.xda-developers.com/archive/index.php/t-480226.html
+  const struct {
+    uint32_t id;
+    const char* name;
+  } vendors[] = {
+    { 0x41, "ARM" },
+    { 0x51, "Qualcomm" },
+    { 0x56, "Marvell" },
+    { 0x69, "Intel/Marvell" },
+  };
+  const struct {
+    uint32_t id;
+    const char* name;
+  } parts[] = {
+    { 0x4100c050, "Cortex-A5" },
+    { 0x4100c080, "Cortex-A8" },
+    { 0x4100c090, "Cortex-A9" },
+    { 0x4100c0f0, "Cortex-A15" },
+    { 0x4100c140, "Cortex-R4" },
+    { 0x4100c150, "Cortex-R5" },
+    { 0x4100b360, "ARM1136" },
+    { 0x4100b560, "ARM1156" },
+    { 0x4100b760, "ARM1176" },
+    { 0x4100b020, "ARM11-MPCore" },
+    { 0x41009260, "ARM926" },
+    { 0x41009460, "ARM946" },
+    { 0x41009660, "ARM966" },
+    { 0x510006f0, "Krait" },
+    { 0x510000f0, "Scorpion" },
+  };
+
+  const struct {
+    uint32_t hwcap;
+    const char* name;
+  } features[] = {
+    { MD_CPU_ARM_ELF_HWCAP_SWP, "swp" },
+    { MD_CPU_ARM_ELF_HWCAP_HALF, "half" },
+    { MD_CPU_ARM_ELF_HWCAP_THUMB, "thumb" },
+    { MD_CPU_ARM_ELF_HWCAP_26BIT, "26bit" },
+    { MD_CPU_ARM_ELF_HWCAP_FAST_MULT, "fastmult" },
+    { MD_CPU_ARM_ELF_HWCAP_FPA, "fpa" },
+    { MD_CPU_ARM_ELF_HWCAP_VFP, "vfpv2" },
+    { MD_CPU_ARM_ELF_HWCAP_EDSP, "edsp" },
+    { MD_CPU_ARM_ELF_HWCAP_JAVA, "java" },
+    { MD_CPU_ARM_ELF_HWCAP_IWMMXT, "iwmmxt" },
+    { MD_CPU_ARM_ELF_HWCAP_CRUNCH, "crunch" },
+    { MD_CPU_ARM_ELF_HWCAP_THUMBEE, "thumbee" },
+    { MD_CPU_ARM_ELF_HWCAP_NEON, "neon" },
+    { MD_CPU_ARM_ELF_HWCAP_VFPv3, "vfpv3" },
+    { MD_CPU_ARM_ELF_HWCAP_VFPv3D16, "vfpv3d16" },
+    { MD_CPU_ARM_ELF_HWCAP_TLS, "tls" },
+    { MD_CPU_ARM_ELF_HWCAP_VFPv4, "vfpv4" },
+    { MD_CPU_ARM_ELF_HWCAP_IDIVA, "idiva" },
+    { MD_CPU_ARM_ELF_HWCAP_IDIVT, "idivt" },
+  };
+
+  uint32_t cpuid = raw_info->cpu.arm_cpu_info.cpuid;
+  if (cpuid != 0) {
+    // Extract vendor name from CPUID
+    const char* vendor = NULL;
+    uint32_t vendor_id = (cpuid >> 24) & 0xff;
+    for (size_t i = 0; i < sizeof(vendors)/sizeof(vendors[0]); ++i) {
+      if (vendors[i].id == vendor_id) {
+        vendor = vendors[i].name;
+        break;
+      }
+    }
+    cpu_info->append(" ");
+    if (vendor) {
+      cpu_info->append(vendor);
+    } else {
+      snprintf(cpu_string, sizeof(cpu_string), "vendor(0x%x)", vendor_id);
+      cpu_info->append(cpu_string);
+    }
+
+    // Extract part name from CPUID
+    uint32_t part_id = (cpuid & 0xff00fff0);
+    const char* part = NULL;
+    for (size_t i = 0; i < sizeof(parts)/sizeof(parts[0]); ++i) {
+      if (parts[i].id == part_id) {
+        part = parts[i].name;
+        break;
+      }
+    }
+    cpu_info->append(" ");
+    if (part != NULL) {
+      cpu_info->append(part);
+    } else {
+      snprintf(cpu_string, sizeof(cpu_string), "part(0x%x)", part_id);
+      cpu_info->append(cpu_string);
+    }
+  }
+  uint32_t elf_hwcaps = raw_info->cpu.arm_cpu_info.elf_hwcaps;
+  if (elf_hwcaps != 0) {
+    cpu_info->append(" features: ");
+    const char* comma = "";
+    for (size_t i = 0; i < sizeof(features)/sizeof(features[0]); ++i) {
+      if (elf_hwcaps & features[i].hwcap) {
+        cpu_info->append(comma);
+        cpu_info->append(features[i].name);
+        comma = ",";
+      }
+    }
+  }
+}
+
+// static
+bool MinidumpProcessor::GetCPUInfo(Minidump *dump, SystemInfo *info) {
+  assert(dump);
+  assert(info);
+
+  info->cpu.clear();
+  info->cpu_info.clear();
+
+  MinidumpSystemInfo *system_info;
+  const MDRawSystemInfo *raw_system_info = GetSystemInfo(dump, &system_info);
+  if (!raw_system_info)
+    return false;
+
+  switch (raw_system_info->processor_architecture) {
+    case MD_CPU_ARCHITECTURE_X86:
+    case MD_CPU_ARCHITECTURE_AMD64: {
+      if (raw_system_info->processor_architecture ==
+          MD_CPU_ARCHITECTURE_X86)
+        info->cpu = "x86";
+      else
+        info->cpu = "amd64";
+
+      const string *cpu_vendor = system_info->GetCPUVendor();
+      if (cpu_vendor) {
+        info->cpu_info = *cpu_vendor;
+        info->cpu_info.append(" ");
+      }
+
+      char x86_info[36];
+      snprintf(x86_info, sizeof(x86_info), "family %u model %u stepping %u",
+               raw_system_info->processor_level,
+               raw_system_info->processor_revision >> 8,
+               raw_system_info->processor_revision & 0xff);
+      info->cpu_info.append(x86_info);
+      break;
+    }
+
+    case MD_CPU_ARCHITECTURE_PPC: {
+      info->cpu = "ppc";
+      break;
+    }
+
+    case MD_CPU_ARCHITECTURE_PPC64: {
+      info->cpu = "ppc64";
+      break;
+    }
+
+    case MD_CPU_ARCHITECTURE_SPARC: {
+      info->cpu = "sparc";
+      break;
+    }
+
+    case MD_CPU_ARCHITECTURE_ARM: {
+      info->cpu = "arm";
+      GetARMCpuInfo(raw_system_info, &info->cpu_info);
+      break;
+    }
+
+    case MD_CPU_ARCHITECTURE_ARM64: {
+      info->cpu = "arm64";
+      break;
+    }
+
+    case MD_CPU_ARCHITECTURE_MIPS: {
+      info->cpu = "mips";
+      break;
+    }
+
+    default: {
+      // Assign the numeric architecture ID into the CPU string.
+      char cpu_string[7];
+      snprintf(cpu_string, sizeof(cpu_string), "0x%04x",
+               raw_system_info->processor_architecture);
+      info->cpu = cpu_string;
+      break;
+    }
+  }
+
+  info->cpu_count = raw_system_info->number_of_processors;
+
+  return true;
+}
+
+// static
+bool MinidumpProcessor::GetOSInfo(Minidump *dump, SystemInfo *info) {
+  assert(dump);
+  assert(info);
+
+  info->os.clear();
+  info->os_short.clear();
+  info->os_version.clear();
+
+  MinidumpSystemInfo *system_info;
+  const MDRawSystemInfo *raw_system_info = GetSystemInfo(dump, &system_info);
+  if (!raw_system_info)
+    return false;
+
+  info->os_short = system_info->GetOS();
+
+  switch (raw_system_info->platform_id) {
+    case MD_OS_WIN32_NT: {
+      info->os = "Windows NT";
+      break;
+    }
+
+    case MD_OS_WIN32_WINDOWS: {
+      info->os = "Windows";
+      break;
+    }
+
+    case MD_OS_MAC_OS_X: {
+      info->os = "Mac OS X";
+      break;
+    }
+
+    case MD_OS_IOS: {
+      info->os = "iOS";
+      break;
+    }
+
+    case MD_OS_LINUX: {
+      info->os = "Linux";
+      break;
+    }
+
+    case MD_OS_SOLARIS: {
+      info->os = "Solaris";
+      break;
+    }
+
+    case MD_OS_ANDROID: {
+      info->os = "Android";
+      break;
+    }
+
+    case MD_OS_PS3: {
+      info->os = "PS3";
+      break;
+    }
+
+    case MD_OS_NACL: {
+      info->os = "NaCl";
+      break;
+    }
+
+    default: {
+      // Assign the numeric platform ID into the OS string.
+      char os_string[11];
+      snprintf(os_string, sizeof(os_string), "0x%08x",
+               raw_system_info->platform_id);
+      info->os = os_string;
+      break;
+    }
+  }
+
+  char os_version_string[33];
+  snprintf(os_version_string, sizeof(os_version_string), "%u.%u.%u",
+           raw_system_info->major_version,
+           raw_system_info->minor_version,
+           raw_system_info->build_number);
+  info->os_version = os_version_string;
+
+  const string *csd_version = system_info->GetCSDVersion();
+  if (csd_version) {
+    info->os_version.append(" ");
+    info->os_version.append(*csd_version);
+  }
+
+  return true;
+}
+
+// static
+bool MinidumpProcessor::GetProcessCreateTime(Minidump* dump,
+                                             uint32_t* process_create_time) {
+  assert(dump);
+  assert(process_create_time);
+
+  *process_create_time = 0;
+
+  MinidumpMiscInfo* minidump_misc_info = dump->GetMiscInfo();
+  if (!minidump_misc_info) {
+    return false;
+  }
+
+  const MDRawMiscInfo* md_raw_misc_info = minidump_misc_info->misc_info();
+  if (!md_raw_misc_info) {
+    return false;
+  }
+
+  if (!(md_raw_misc_info->flags1 & MD_MISCINFO_FLAGS1_PROCESS_TIMES)) {
+    return false;
+  }
+
+  *process_create_time = md_raw_misc_info->process_create_time;
+  return true;
+}
+
+// static
+string MinidumpProcessor::GetCrashReason(Minidump *dump, uint64_t *address) {
+  MinidumpException *exception = dump->GetException();
+  if (!exception)
+    return "";
+
+  const MDRawExceptionStream *raw_exception = exception->exception();
+  if (!raw_exception)
+    return "";
+
+  if (address)
+    *address = raw_exception->exception_record.exception_address;
+
+  // The reason value is OS-specific and possibly CPU-specific.  Set up
+  // sensible numeric defaults for the reason string in case we can't
+  // map the codes to a string (because there's no system info, or because
+  // it's an unrecognized platform, or because it's an unrecognized code.)
+  char reason_string[24];
+  uint32_t exception_code = raw_exception->exception_record.exception_code;
+  uint32_t exception_flags = raw_exception->exception_record.exception_flags;
+  snprintf(reason_string, sizeof(reason_string), "0x%08x / 0x%08x",
+           exception_code, exception_flags);
+  string reason = reason_string;
+
+  const MDRawSystemInfo *raw_system_info = GetSystemInfo(dump, NULL);
+  if (!raw_system_info)
+    return reason;
+
+  switch (raw_system_info->platform_id) {
+    case MD_OS_MAC_OS_X:
+    case MD_OS_IOS: {
+      char flags_string[11];
+      snprintf(flags_string, sizeof(flags_string), "0x%08x", exception_flags);
+      switch (exception_code) {
+        case MD_EXCEPTION_MAC_BAD_ACCESS:
+          reason = "EXC_BAD_ACCESS / ";
+          switch (exception_flags) {
+            case MD_EXCEPTION_CODE_MAC_INVALID_ADDRESS:
+              reason.append("KERN_INVALID_ADDRESS");
+              break;
+            case MD_EXCEPTION_CODE_MAC_PROTECTION_FAILURE:
+              reason.append("KERN_PROTECTION_FAILURE");
+              break;
+            case MD_EXCEPTION_CODE_MAC_NO_ACCESS:
+              reason.append("KERN_NO_ACCESS");
+              break;
+            case MD_EXCEPTION_CODE_MAC_MEMORY_FAILURE:
+              reason.append("KERN_MEMORY_FAILURE");
+              break;
+            case MD_EXCEPTION_CODE_MAC_MEMORY_ERROR:
+              reason.append("KERN_MEMORY_ERROR");
+              break;
+            default:
+              // arm and ppc overlap
+              if (raw_system_info->processor_architecture ==
+                  MD_CPU_ARCHITECTURE_ARM ||
+                  raw_system_info->processor_architecture ==
+                  MD_CPU_ARCHITECTURE_ARM64) {
+                switch (exception_flags) {
+                  case MD_EXCEPTION_CODE_MAC_ARM_DA_ALIGN:
+                    reason.append("EXC_ARM_DA_ALIGN");
+                    break;
+                  case MD_EXCEPTION_CODE_MAC_ARM_DA_DEBUG:
+                    reason.append("EXC_ARM_DA_DEBUG");
+                    break;
+                  default:
+                    reason.append(flags_string);
+                    BPLOG(INFO) << "Unknown exception reason " << reason;
+                    break;
+                }
+              } else if (raw_system_info->processor_architecture ==
+                         MD_CPU_ARCHITECTURE_PPC) {
+                switch (exception_flags) {
+                  case MD_EXCEPTION_CODE_MAC_PPC_VM_PROT_READ:
+                    reason.append("EXC_PPC_VM_PROT_READ");
+                    break;
+                  case MD_EXCEPTION_CODE_MAC_PPC_BADSPACE:
+                    reason.append("EXC_PPC_BADSPACE");
+                    break;
+                  case MD_EXCEPTION_CODE_MAC_PPC_UNALIGNED:
+                    reason.append("EXC_PPC_UNALIGNED");
+                    break;
+                  default:
+                    reason.append(flags_string);
+                    BPLOG(INFO) << "Unknown exception reason " << reason;
+                    break;
+                }
+              } else {
+                reason.append(flags_string);
+                BPLOG(INFO) << "Unknown exception reason " << reason;
+              }
+              break;
+          }
+          break;
+        case MD_EXCEPTION_MAC_BAD_INSTRUCTION:
+          reason = "EXC_BAD_INSTRUCTION / ";
+          switch (raw_system_info->processor_architecture) {
+            case MD_CPU_ARCHITECTURE_ARM:
+            case MD_CPU_ARCHITECTURE_ARM64: {
+              switch (exception_flags) {
+                case MD_EXCEPTION_CODE_MAC_ARM_UNDEFINED:
+                  reason.append("EXC_ARM_UNDEFINED");
+                  break;
+                default:
+                  reason.append(flags_string);
+                  BPLOG(INFO) << "Unknown exception reason " << reason;
+                  break;
+              }
+              break;
+            }
+            case MD_CPU_ARCHITECTURE_PPC: {
+              switch (exception_flags) {
+                case MD_EXCEPTION_CODE_MAC_PPC_INVALID_SYSCALL:
+                  reason.append("EXC_PPC_INVALID_SYSCALL");
+                  break;
+                case MD_EXCEPTION_CODE_MAC_PPC_UNIMPLEMENTED_INSTRUCTION:
+                  reason.append("EXC_PPC_UNIPL_INST");
+                  break;
+                case MD_EXCEPTION_CODE_MAC_PPC_PRIVILEGED_INSTRUCTION:
+                  reason.append("EXC_PPC_PRIVINST");
+                  break;
+                case MD_EXCEPTION_CODE_MAC_PPC_PRIVILEGED_REGISTER:
+                  reason.append("EXC_PPC_PRIVREG");
+                  break;
+                case MD_EXCEPTION_CODE_MAC_PPC_TRACE:
+                  reason.append("EXC_PPC_TRACE");
+                  break;
+                case MD_EXCEPTION_CODE_MAC_PPC_PERFORMANCE_MONITOR:
+                  reason.append("EXC_PPC_PERFMON");
+                  break;
+                default:
+                  reason.append(flags_string);
+                  BPLOG(INFO) << "Unknown exception reason " << reason;
+                  break;
+              }
+              break;
+            }
+            case MD_CPU_ARCHITECTURE_X86: {
+              switch (exception_flags) {
+                case MD_EXCEPTION_CODE_MAC_X86_INVALID_OPERATION:
+                  reason.append("EXC_I386_INVOP");
+                  break;
+                case MD_EXCEPTION_CODE_MAC_X86_INVALID_TASK_STATE_SEGMENT:
+                  reason.append("EXC_INVTSSFLT");
+                  break;
+                case MD_EXCEPTION_CODE_MAC_X86_SEGMENT_NOT_PRESENT:
+                  reason.append("EXC_SEGNPFLT");
+                  break;
+                case MD_EXCEPTION_CODE_MAC_X86_STACK_FAULT:
+                  reason.append("EXC_STKFLT");
+                  break;
+                case MD_EXCEPTION_CODE_MAC_X86_GENERAL_PROTECTION_FAULT:
+                  reason.append("EXC_GPFLT");
+                  break;
+                case MD_EXCEPTION_CODE_MAC_X86_ALIGNMENT_FAULT:
+                  reason.append("EXC_ALIGNFLT");
+                  break;
+                default:
+                  reason.append(flags_string);
+                  BPLOG(INFO) << "Unknown exception reason " << reason;
+                  break;
+              }
+              break;
+            }
+            default:
+              reason.append(flags_string);
+              BPLOG(INFO) << "Unknown exception reason " << reason;
+              break;
+          }
+          break;
+        case MD_EXCEPTION_MAC_ARITHMETIC:
+          reason = "EXC_ARITHMETIC / ";
+          switch (raw_system_info->processor_architecture) {
+            case MD_CPU_ARCHITECTURE_PPC: {
+              switch (exception_flags) {
+                case MD_EXCEPTION_CODE_MAC_PPC_OVERFLOW:
+                  reason.append("EXC_PPC_OVERFLOW");
+                  break;
+                case MD_EXCEPTION_CODE_MAC_PPC_ZERO_DIVIDE:
+                  reason.append("EXC_PPC_ZERO_DIVIDE");
+                  break;
+                case MD_EXCEPTION_CODE_MAC_PPC_FLOAT_INEXACT:
+                  reason.append("EXC_FLT_INEXACT");
+                  break;
+                case MD_EXCEPTION_CODE_MAC_PPC_FLOAT_ZERO_DIVIDE:
+                  reason.append("EXC_PPC_FLT_ZERO_DIVIDE");
+                  break;
+                case MD_EXCEPTION_CODE_MAC_PPC_FLOAT_UNDERFLOW:
+                  reason.append("EXC_PPC_FLT_UNDERFLOW");
+                  break;
+                case MD_EXCEPTION_CODE_MAC_PPC_FLOAT_OVERFLOW:
+                  reason.append("EXC_PPC_FLT_OVERFLOW");
+                  break;
+                case MD_EXCEPTION_CODE_MAC_PPC_FLOAT_NOT_A_NUMBER:
+                  reason.append("EXC_PPC_FLT_NOT_A_NUMBER");
+                  break;
+                case MD_EXCEPTION_CODE_MAC_PPC_NO_EMULATION:
+                  reason.append("EXC_PPC_NOEMULATION");
+                  break;
+                case MD_EXCEPTION_CODE_MAC_PPC_ALTIVEC_ASSIST:
+                  reason.append("EXC_PPC_ALTIVECASSIST");
+                default:
+                  reason.append(flags_string);
+                  BPLOG(INFO) << "Unknown exception reason " << reason;
+                  break;
+              }
+              break;
+            }
+            case MD_CPU_ARCHITECTURE_X86: {
+              switch (exception_flags) {
+                case MD_EXCEPTION_CODE_MAC_X86_DIV:
+                  reason.append("EXC_I386_DIV");
+                  break;
+                case MD_EXCEPTION_CODE_MAC_X86_INTO:
+                  reason.append("EXC_I386_INTO");
+                  break;
+                case MD_EXCEPTION_CODE_MAC_X86_NOEXT:
+                  reason.append("EXC_I386_NOEXT");
+                  break;
+                case MD_EXCEPTION_CODE_MAC_X86_EXTOVR:
+                  reason.append("EXC_I386_EXTOVR");
+                  break;
+                case MD_EXCEPTION_CODE_MAC_X86_EXTERR:
+                  reason.append("EXC_I386_EXTERR");
+                  break;
+                case MD_EXCEPTION_CODE_MAC_X86_EMERR:
+                  reason.append("EXC_I386_EMERR");
+                  break;
+                case MD_EXCEPTION_CODE_MAC_X86_BOUND:
+                  reason.append("EXC_I386_BOUND");
+                  break;
+                case MD_EXCEPTION_CODE_MAC_X86_SSEEXTERR:
+                  reason.append("EXC_I386_SSEEXTERR");
+                  break;
+                default:
+                  reason.append(flags_string);
+                  BPLOG(INFO) << "Unknown exception reason " << reason;
+                  break;
+              }
+              break;
+            }
+            default:
+              reason.append(flags_string);
+              BPLOG(INFO) << "Unknown exception reason " << reason;
+              break;
+          }
+          break;
+        case MD_EXCEPTION_MAC_EMULATION:
+          reason = "EXC_EMULATION / ";
+          reason.append(flags_string);
+          break;
+        case MD_EXCEPTION_MAC_SOFTWARE:
+          reason = "EXC_SOFTWARE / ";
+          switch (exception_flags) {
+            case MD_EXCEPTION_CODE_MAC_ABORT:
+              reason.append("SIGABRT");
+              break;
+            case MD_EXCEPTION_CODE_MAC_NS_EXCEPTION:
+              reason.append("UNCAUGHT_NS_EXCEPTION");
+              break;
+            // These are ppc only but shouldn't be a problem as they're
+            // unused on x86
+            case MD_EXCEPTION_CODE_MAC_PPC_TRAP:
+              reason.append("EXC_PPC_TRAP");
+              break;
+            case MD_EXCEPTION_CODE_MAC_PPC_MIGRATE:
+              reason.append("EXC_PPC_MIGRATE");
+              break;
+            default:
+              reason.append(flags_string);
+              BPLOG(INFO) << "Unknown exception reason " << reason;
+              break;
+          }
+          break;
+        case MD_EXCEPTION_MAC_BREAKPOINT:
+          reason = "EXC_BREAKPOINT / ";
+          switch (raw_system_info->processor_architecture) {
+            case MD_CPU_ARCHITECTURE_ARM:
+            case MD_CPU_ARCHITECTURE_ARM64: {
+              switch (exception_flags) {
+                case MD_EXCEPTION_CODE_MAC_ARM_DA_ALIGN:
+                  reason.append("EXC_ARM_DA_ALIGN");
+                  break;
+                case MD_EXCEPTION_CODE_MAC_ARM_DA_DEBUG:
+                  reason.append("EXC_ARM_DA_DEBUG");
+                  break;
+                case MD_EXCEPTION_CODE_MAC_ARM_BREAKPOINT:
+                  reason.append("EXC_ARM_BREAKPOINT");
+                  break;
+                default:
+                  reason.append(flags_string);
+                  BPLOG(INFO) << "Unknown exception reason " << reason;
+                  break;
+              }
+              break;
+            }
+            case MD_CPU_ARCHITECTURE_PPC: {
+              switch (exception_flags) {
+                case MD_EXCEPTION_CODE_MAC_PPC_BREAKPOINT:
+                  reason.append("EXC_PPC_BREAKPOINT");
+                  break;
+                default:
+                  reason.append(flags_string);
+                  BPLOG(INFO) << "Unknown exception reason " << reason;
+                  break;
+              }
+              break;
+            }
+            case MD_CPU_ARCHITECTURE_X86: {
+              switch (exception_flags) {
+                case MD_EXCEPTION_CODE_MAC_X86_SGL:
+                  reason.append("EXC_I386_SGL");
+                  break;
+                case MD_EXCEPTION_CODE_MAC_X86_BPT:
+                  reason.append("EXC_I386_BPT");
+                  break;
+                default:
+                  reason.append(flags_string);
+                  BPLOG(INFO) << "Unknown exception reason " << reason;
+                  break;
+              }
+              break;
+            }
+            default:
+              reason.append(flags_string);
+              BPLOG(INFO) << "Unknown exception reason " << reason;
+              break;
+          }
+          break;
+        case MD_EXCEPTION_MAC_SYSCALL:
+          reason = "EXC_SYSCALL / ";
+          reason.append(flags_string);
+          break;
+        case MD_EXCEPTION_MAC_MACH_SYSCALL:
+          reason = "EXC_MACH_SYSCALL / ";
+          reason.append(flags_string);
+          break;
+        case MD_EXCEPTION_MAC_RPC_ALERT:
+          reason = "EXC_RPC_ALERT / ";
+          reason.append(flags_string);
+          break;
+      }
+      break;
+    }
+
+    case MD_OS_WIN32_NT:
+    case MD_OS_WIN32_WINDOWS: {
+      switch (exception_code) {
+        case MD_EXCEPTION_CODE_WIN_CONTROL_C:
+          reason = "DBG_CONTROL_C";
+          break;
+        case MD_EXCEPTION_CODE_WIN_GUARD_PAGE_VIOLATION:
+          reason = "EXCEPTION_GUARD_PAGE";
+          break;
+        case MD_EXCEPTION_CODE_WIN_DATATYPE_MISALIGNMENT:
+          reason = "EXCEPTION_DATATYPE_MISALIGNMENT";
+          break;
+        case MD_EXCEPTION_CODE_WIN_BREAKPOINT:
+          reason = "EXCEPTION_BREAKPOINT";
+          break;
+        case MD_EXCEPTION_CODE_WIN_SINGLE_STEP:
+          reason = "EXCEPTION_SINGLE_STEP";
+          break;
+        case MD_EXCEPTION_CODE_WIN_ACCESS_VIOLATION:
+          // For EXCEPTION_ACCESS_VIOLATION, Windows puts the address that
+          // caused the fault in exception_information[1].
+          // exception_information[0] is 0 if the violation was caused by
+          // an attempt to read data, 1 if it was an attempt to write data,
+          // and 8 if this was a data execution violation.
+          // This information is useful in addition to the code address, which
+          // will be present in the crash thread's instruction field anyway.
+          if (raw_exception->exception_record.number_parameters >= 1) {
+            MDAccessViolationTypeWin av_type =
+                static_cast<MDAccessViolationTypeWin>
+                (raw_exception->exception_record.exception_information[0]);
+            switch (av_type) {
+              case MD_ACCESS_VIOLATION_WIN_READ:
+                reason = "EXCEPTION_ACCESS_VIOLATION_READ";
+                break;
+              case MD_ACCESS_VIOLATION_WIN_WRITE:
+                reason = "EXCEPTION_ACCESS_VIOLATION_WRITE";
+                break;
+              case MD_ACCESS_VIOLATION_WIN_EXEC:
+                reason = "EXCEPTION_ACCESS_VIOLATION_EXEC";
+                break;
+              default:
+                reason = "EXCEPTION_ACCESS_VIOLATION";
+                break;
+            }
+          } else {
+            reason = "EXCEPTION_ACCESS_VIOLATION";
+          }
+          if (address &&
+              raw_exception->exception_record.number_parameters >= 2) {
+            *address =
+                raw_exception->exception_record.exception_information[1];
+          }
+          break;
+        case MD_EXCEPTION_CODE_WIN_IN_PAGE_ERROR:
+          // For EXCEPTION_IN_PAGE_ERROR, Windows puts the address that
+          // caused the fault in exception_information[1].
+          // exception_information[0] is 0 if the violation was caused by
+          // an attempt to read data, 1 if it was an attempt to write data,
+          // and 8 if this was a data execution violation.
+          // exception_information[2] contains the underlying NTSTATUS code,
+          // which is the explanation for why this error occured.
+          // This information is useful in addition to the code address, which
+          // will be present in the crash thread's instruction field anyway.
+          if (raw_exception->exception_record.number_parameters >= 1) {
+            MDInPageErrorTypeWin av_type =
+                static_cast<MDInPageErrorTypeWin>
+                (raw_exception->exception_record.exception_information[0]);
+            switch (av_type) {
+              case MD_IN_PAGE_ERROR_WIN_READ:
+                reason = "EXCEPTION_IN_PAGE_ERROR_READ";
+                break;
+              case MD_IN_PAGE_ERROR_WIN_WRITE:
+                reason = "EXCEPTION_IN_PAGE_ERROR_WRITE";
+                break;
+              case MD_IN_PAGE_ERROR_WIN_EXEC:
+                reason = "EXCEPTION_IN_PAGE_ERROR_EXEC";
+                break;
+              default:
+                reason = "EXCEPTION_IN_PAGE_ERROR";
+                break;
+            }
+          } else {
+            reason = "EXCEPTION_IN_PAGE_ERROR";
+          }
+          if (address &&
+              raw_exception->exception_record.number_parameters >= 2) {
+            *address =
+                raw_exception->exception_record.exception_information[1];
+          }
+          if (raw_exception->exception_record.number_parameters >= 3) {
+            uint32_t ntstatus =
+                static_cast<uint32_t>
+                (raw_exception->exception_record.exception_information[2]);
+            reason.append(" / ");
+            reason.append(NTStatusToString(ntstatus));
+          }
+          break;
+        case MD_EXCEPTION_CODE_WIN_INVALID_HANDLE:
+          reason = "EXCEPTION_INVALID_HANDLE";
+          break;
+        case MD_EXCEPTION_CODE_WIN_ILLEGAL_INSTRUCTION:
+          reason = "EXCEPTION_ILLEGAL_INSTRUCTION";
+          break;
+        case MD_EXCEPTION_CODE_WIN_NONCONTINUABLE_EXCEPTION:
+          reason = "EXCEPTION_NONCONTINUABLE_EXCEPTION";
+          break;
+        case MD_EXCEPTION_CODE_WIN_INVALID_DISPOSITION:
+          reason = "EXCEPTION_INVALID_DISPOSITION";
+          break;
+        case MD_EXCEPTION_CODE_WIN_ARRAY_BOUNDS_EXCEEDED:
+          reason = "EXCEPTION_BOUNDS_EXCEEDED";
+          break;
+        case MD_EXCEPTION_CODE_WIN_FLOAT_DENORMAL_OPERAND:
+          reason = "EXCEPTION_FLT_DENORMAL_OPERAND";
+          break;
+        case MD_EXCEPTION_CODE_WIN_FLOAT_DIVIDE_BY_ZERO:
+          reason = "EXCEPTION_FLT_DIVIDE_BY_ZERO";
+          break;
+        case MD_EXCEPTION_CODE_WIN_FLOAT_INEXACT_RESULT:
+          reason = "EXCEPTION_FLT_INEXACT_RESULT";
+          break;
+        case MD_EXCEPTION_CODE_WIN_FLOAT_INVALID_OPERATION:
+          reason = "EXCEPTION_FLT_INVALID_OPERATION";
+          break;
+        case MD_EXCEPTION_CODE_WIN_FLOAT_OVERFLOW:
+          reason = "EXCEPTION_FLT_OVERFLOW";
+          break;
+        case MD_EXCEPTION_CODE_WIN_FLOAT_STACK_CHECK:
+          reason = "EXCEPTION_FLT_STACK_CHECK";
+          break;
+        case MD_EXCEPTION_CODE_WIN_FLOAT_UNDERFLOW:
+          reason = "EXCEPTION_FLT_UNDERFLOW";
+          break;
+        case MD_EXCEPTION_CODE_WIN_INTEGER_DIVIDE_BY_ZERO:
+          reason = "EXCEPTION_INT_DIVIDE_BY_ZERO";
+          break;
+        case MD_EXCEPTION_CODE_WIN_INTEGER_OVERFLOW:
+          reason = "EXCEPTION_INT_OVERFLOW";
+          break;
+        case MD_EXCEPTION_CODE_WIN_PRIVILEGED_INSTRUCTION:
+          reason = "EXCEPTION_PRIV_INSTRUCTION";
+          break;
+        case MD_EXCEPTION_CODE_WIN_STACK_OVERFLOW:
+          reason = "EXCEPTION_STACK_OVERFLOW";
+          break;
+        case MD_EXCEPTION_CODE_WIN_POSSIBLE_DEADLOCK:
+          reason = "EXCEPTION_POSSIBLE_DEADLOCK";
+          break;
+        case MD_EXCEPTION_CODE_WIN_STACK_BUFFER_OVERRUN:
+          reason = "EXCEPTION_STACK_BUFFER_OVERRUN";
+          break;
+        case MD_EXCEPTION_CODE_WIN_HEAP_CORRUPTION:
+          reason = "EXCEPTION_HEAP_CORRUPTION";
+          break;
+        case MD_EXCEPTION_CODE_WIN_UNHANDLED_CPP_EXCEPTION:
+          reason = "Unhandled C++ Exception";
+          break;
+        default:
+          BPLOG(INFO) << "Unknown exception reason " << reason;
+          break;
+      }
+      break;
+    }
+
+    case MD_OS_ANDROID:
+    case MD_OS_LINUX: {
+      switch (exception_code) {
+        case MD_EXCEPTION_CODE_LIN_SIGHUP:
+          reason = "SIGHUP";
+          break;
+        case MD_EXCEPTION_CODE_LIN_SIGINT:
+          reason = "SIGINT";
+          break;
+        case MD_EXCEPTION_CODE_LIN_SIGQUIT:
+          reason = "SIGQUIT";
+          break;
+        case MD_EXCEPTION_CODE_LIN_SIGILL:
+          reason = "SIGILL";
+          break;
+        case MD_EXCEPTION_CODE_LIN_SIGTRAP:
+          reason = "SIGTRAP";
+          break;
+        case MD_EXCEPTION_CODE_LIN_SIGABRT:
+          reason = "SIGABRT";
+          break;
+        case MD_EXCEPTION_CODE_LIN_SIGBUS:
+          reason = "SIGBUS";
+          break;
+        case MD_EXCEPTION_CODE_LIN_SIGFPE:
+          reason = "SIGFPE";
+          break;
+        case MD_EXCEPTION_CODE_LIN_SIGKILL:
+          reason = "SIGKILL";
+          break;
+        case MD_EXCEPTION_CODE_LIN_SIGUSR1:
+          reason = "SIGUSR1";
+          break;
+        case MD_EXCEPTION_CODE_LIN_SIGSEGV:
+          reason = "SIGSEGV";
+          break;
+        case MD_EXCEPTION_CODE_LIN_SIGUSR2:
+          reason = "SIGUSR2";
+          break;
+        case MD_EXCEPTION_CODE_LIN_SIGPIPE:
+          reason = "SIGPIPE";
+          break;
+        case MD_EXCEPTION_CODE_LIN_SIGALRM:
+          reason = "SIGALRM";
+          break;
+        case MD_EXCEPTION_CODE_LIN_SIGTERM:
+          reason = "SIGTERM";
+          break;
+        case MD_EXCEPTION_CODE_LIN_SIGSTKFLT:
+          reason = "SIGSTKFLT";
+          break;
+        case MD_EXCEPTION_CODE_LIN_SIGCHLD:
+          reason = "SIGCHLD";
+          break;
+        case MD_EXCEPTION_CODE_LIN_SIGCONT:
+          reason = "SIGCONT";
+          break;
+        case MD_EXCEPTION_CODE_LIN_SIGSTOP:
+          reason = "SIGSTOP";
+          break;
+        case MD_EXCEPTION_CODE_LIN_SIGTSTP:
+          reason = "SIGTSTP";
+          break;
+        case MD_EXCEPTION_CODE_LIN_SIGTTIN:
+          reason = "SIGTTIN";
+          break;
+        case MD_EXCEPTION_CODE_LIN_SIGTTOU:
+          reason = "SIGTTOU";
+          break;
+        case MD_EXCEPTION_CODE_LIN_SIGURG:
+          reason = "SIGURG";
+          break;
+        case MD_EXCEPTION_CODE_LIN_SIGXCPU:
+          reason = "SIGXCPU";
+          break;
+        case MD_EXCEPTION_CODE_LIN_SIGXFSZ:
+          reason = "SIGXFSZ";
+          break;
+        case MD_EXCEPTION_CODE_LIN_SIGVTALRM:
+          reason = "SIGVTALRM";
+          break;
+        case MD_EXCEPTION_CODE_LIN_SIGPROF:
+          reason = "SIGPROF";
+          break;
+        case MD_EXCEPTION_CODE_LIN_SIGWINCH:
+          reason = "SIGWINCH";
+          break;
+        case MD_EXCEPTION_CODE_LIN_SIGIO:
+          reason = "SIGIO";
+          break;
+        case MD_EXCEPTION_CODE_LIN_SIGPWR:
+          reason = "SIGPWR";
+          break;
+        case MD_EXCEPTION_CODE_LIN_SIGSYS:
+          reason = "SIGSYS";
+          break;
+      case MD_EXCEPTION_CODE_LIN_DUMP_REQUESTED:
+          reason = "DUMP_REQUESTED";
+          break;
+        default:
+          BPLOG(INFO) << "Unknown exception reason " << reason;
+          break;
+      }
+      break;
+    }
+
+    case MD_OS_SOLARIS: {
+      switch (exception_code) {
+        case MD_EXCEPTION_CODE_SOL_SIGHUP:
+          reason = "SIGHUP";
+          break;
+        case MD_EXCEPTION_CODE_SOL_SIGINT:
+          reason = "SIGINT";
+          break;
+        case MD_EXCEPTION_CODE_SOL_SIGQUIT:
+          reason = "SIGQUIT";
+          break;
+        case MD_EXCEPTION_CODE_SOL_SIGILL:
+          reason = "SIGILL";
+          break;
+        case MD_EXCEPTION_CODE_SOL_SIGTRAP:
+          reason = "SIGTRAP";
+          break;
+        case MD_EXCEPTION_CODE_SOL_SIGIOT:
+          reason = "SIGIOT | SIGABRT";
+          break;
+        case MD_EXCEPTION_CODE_SOL_SIGEMT:
+          reason = "SIGEMT";
+          break;
+        case MD_EXCEPTION_CODE_SOL_SIGFPE:
+          reason = "SIGFPE";
+          break;
+        case MD_EXCEPTION_CODE_SOL_SIGKILL:
+          reason = "SIGKILL";
+          break;
+        case MD_EXCEPTION_CODE_SOL_SIGBUS:
+          reason = "SIGBUS";
+          break;
+        case MD_EXCEPTION_CODE_SOL_SIGSEGV:
+          reason = "SIGSEGV";
+          break;
+        case MD_EXCEPTION_CODE_SOL_SIGSYS:
+          reason = "SIGSYS";
+          break;
+        case MD_EXCEPTION_CODE_SOL_SIGPIPE:
+          reason = "SIGPIPE";
+          break;
+        case MD_EXCEPTION_CODE_SOL_SIGALRM:
+          reason = "SIGALRM";
+          break;
+        case MD_EXCEPTION_CODE_SOL_SIGTERM:
+          reason = "SIGTERM";
+          break;
+        case MD_EXCEPTION_CODE_SOL_SIGUSR1:
+          reason = "SIGUSR1";
+          break;
+        case MD_EXCEPTION_CODE_SOL_SIGUSR2:
+          reason = "SIGUSR2";
+          break;
+        case MD_EXCEPTION_CODE_SOL_SIGCLD:
+          reason = "SIGCLD | SIGCHLD";
+          break;
+        case MD_EXCEPTION_CODE_SOL_SIGPWR:
+          reason = "SIGPWR";
+          break;
+        case MD_EXCEPTION_CODE_SOL_SIGWINCH:
+          reason = "SIGWINCH";
+          break;
+        case MD_EXCEPTION_CODE_SOL_SIGURG:
+          reason = "SIGURG";
+          break;
+        case MD_EXCEPTION_CODE_SOL_SIGPOLL:
+          reason = "SIGPOLL | SIGIO";
+          break;
+        case MD_EXCEPTION_CODE_SOL_SIGSTOP:
+          reason = "SIGSTOP";
+          break;
+        case MD_EXCEPTION_CODE_SOL_SIGTSTP:
+          reason = "SIGTSTP";
+          break;
+        case MD_EXCEPTION_CODE_SOL_SIGCONT:
+          reason = "SIGCONT";
+          break;
+        case MD_EXCEPTION_CODE_SOL_SIGTTIN:
+          reason = "SIGTTIN";
+          break;
+        case MD_EXCEPTION_CODE_SOL_SIGTTOU:
+          reason = "SIGTTOU";
+          break;
+        case MD_EXCEPTION_CODE_SOL_SIGVTALRM:
+          reason = "SIGVTALRM";
+          break;
+        case MD_EXCEPTION_CODE_SOL_SIGPROF:
+          reason = "SIGPROF";
+          break;
+        case MD_EXCEPTION_CODE_SOL_SIGXCPU:
+          reason = "SIGXCPU";
+          break;
+        case MD_EXCEPTION_CODE_SOL_SIGXFSZ:
+          reason = "SIGXFSZ";
+          break;
+        case MD_EXCEPTION_CODE_SOL_SIGWAITING:
+          reason = "SIGWAITING";
+          break;
+        case MD_EXCEPTION_CODE_SOL_SIGLWP:
+          reason = "SIGLWP";
+          break;
+        case MD_EXCEPTION_CODE_SOL_SIGFREEZE:
+          reason = "SIGFREEZE";
+          break;
+        case MD_EXCEPTION_CODE_SOL_SIGTHAW:
+          reason = "SIGTHAW";
+          break;
+        case MD_EXCEPTION_CODE_SOL_SIGCANCEL:
+          reason = "SIGCANCEL";
+          break;
+        case MD_EXCEPTION_CODE_SOL_SIGLOST:
+          reason = "SIGLOST";
+          break;
+        case MD_EXCEPTION_CODE_SOL_SIGXRES:
+          reason = "SIGXRES";
+          break;
+        case MD_EXCEPTION_CODE_SOL_SIGJVM1:
+          reason = "SIGJVM1";
+          break;
+        case MD_EXCEPTION_CODE_SOL_SIGJVM2:
+          reason = "SIGJVM2";
+          break;
+        default:
+          BPLOG(INFO) << "Unknown exception reason " << reason;
+          break;
+      }
+      break;
+    }
+
+    case MD_OS_PS3: {
+      switch (exception_code) {
+        case MD_EXCEPTION_CODE_PS3_UNKNOWN:
+          reason = "UNKNOWN";
+          break;
+        case MD_EXCEPTION_CODE_PS3_TRAP_EXCEP:
+          reason = "TRAP_EXCEP";
+          break;
+        case MD_EXCEPTION_CODE_PS3_PRIV_INSTR:
+          reason = "PRIV_INSTR";
+          break;
+        case MD_EXCEPTION_CODE_PS3_ILLEGAL_INSTR:
+          reason = "ILLEGAL_INSTR";
+          break;
+        case MD_EXCEPTION_CODE_PS3_INSTR_STORAGE:
+          reason = "INSTR_STORAGE";
+          break;
+        case MD_EXCEPTION_CODE_PS3_INSTR_SEGMENT:
+          reason = "INSTR_SEGMENT";
+          break;
+        case MD_EXCEPTION_CODE_PS3_DATA_STORAGE:
+          reason = "DATA_STORAGE";
+          break;
+        case MD_EXCEPTION_CODE_PS3_DATA_SEGMENT:
+          reason = "DATA_SEGMENT";
+          break;
+        case MD_EXCEPTION_CODE_PS3_FLOAT_POINT:
+          reason = "FLOAT_POINT";
+          break;
+        case MD_EXCEPTION_CODE_PS3_DABR_MATCH:
+          reason = "DABR_MATCH";
+          break;
+        case MD_EXCEPTION_CODE_PS3_ALIGN_EXCEP:
+          reason = "ALIGN_EXCEP";
+          break;
+        case MD_EXCEPTION_CODE_PS3_MEMORY_ACCESS:
+          reason = "MEMORY_ACCESS";
+          break;
+        case MD_EXCEPTION_CODE_PS3_COPRO_ALIGN:
+          reason = "COPRO_ALIGN";
+          break;
+        case MD_EXCEPTION_CODE_PS3_COPRO_INVALID_COM:
+          reason = "COPRO_INVALID_COM";
+          break;
+        case MD_EXCEPTION_CODE_PS3_COPRO_ERR:
+          reason = "COPRO_ERR";
+          break;
+        case MD_EXCEPTION_CODE_PS3_COPRO_FIR:
+          reason = "COPRO_FIR";
+          break;
+        case MD_EXCEPTION_CODE_PS3_COPRO_DATA_SEGMENT:
+          reason = "COPRO_DATA_SEGMENT";
+          break;
+        case MD_EXCEPTION_CODE_PS3_COPRO_DATA_STORAGE:
+          reason = "COPRO_DATA_STORAGE";
+          break;
+        case MD_EXCEPTION_CODE_PS3_COPRO_STOP_INSTR:
+          reason = "COPRO_STOP_INSTR";
+          break;
+        case MD_EXCEPTION_CODE_PS3_COPRO_HALT_INSTR:
+          reason = "COPRO_HALT_INSTR";
+          break;
+        case MD_EXCEPTION_CODE_PS3_COPRO_HALTINST_UNKNOWN:
+          reason = "COPRO_HALTINSTR_UNKNOWN";
+          break;
+        case MD_EXCEPTION_CODE_PS3_COPRO_MEMORY_ACCESS:
+          reason = "COPRO_MEMORY_ACCESS";
+          break;
+        case MD_EXCEPTION_CODE_PS3_GRAPHIC:
+          reason = "GRAPHIC";
+          break;
+        default:
+          BPLOG(INFO) << "Unknown exception reason "<< reason;
+          break;
+      }
+      break;
+    }
+
+    default: {
+      BPLOG(INFO) << "Unknown exception reason " << reason;
+      break;
+    }
+  }
+
+  return reason;
+}
+
+// static
+string MinidumpProcessor::GetAssertion(Minidump *dump) {
+  MinidumpAssertion *assertion = dump->GetAssertion();
+  if (!assertion)
+    return "";
+
+  const MDRawAssertionInfo *raw_assertion = assertion->assertion();
+  if (!raw_assertion)
+    return "";
+
+  string assertion_string;
+  switch (raw_assertion->type) {
+  case MD_ASSERTION_INFO_TYPE_INVALID_PARAMETER:
+    assertion_string = "Invalid parameter passed to library function";
+    break;
+  case MD_ASSERTION_INFO_TYPE_PURE_VIRTUAL_CALL:
+    assertion_string = "Pure virtual function called";
+    break;
+  default: {
+    char assertion_type[32];
+    snprintf(assertion_type, sizeof(assertion_type),
+             "0x%08x", raw_assertion->type);
+    assertion_string = "Unknown assertion type ";
+    assertion_string += assertion_type;
+    break;
+  }
+  }
+
+  string expression = assertion->expression();
+  if (!expression.empty()) {
+    assertion_string.append(" " + expression);
+  }
+
+  string function = assertion->function();
+  if (!function.empty()) {
+    assertion_string.append(" in function " + function);
+  }
+
+  string file = assertion->file();
+  if (!file.empty()) {
+    assertion_string.append(", in file " + file);
+  }
+
+  if (raw_assertion->line != 0) {
+    char assertion_line[32];
+    snprintf(assertion_line, sizeof(assertion_line), "%u", raw_assertion->line);
+    assertion_string.append(" at line ");
+    assertion_string.append(assertion_line);
+  }
+
+  return assertion_string;
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/processor/minidump_processor_unittest.cc b/google-breakpad/src/processor/minidump_processor_unittest.cc
new file mode 100644
index 0000000..69e1f42
--- /dev/null
+++ b/google-breakpad/src/processor/minidump_processor_unittest.cc
@@ -0,0 +1,644 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Unit test for MinidumpProcessor.  Uses a pre-generated minidump and
+// corresponding symbol file, and checks the stack frames for correctness.
+
+#include <stdlib.h>
+
+#include <string>
+#include <iostream>
+#include <fstream>
+#include <map>
+#include <utility>
+
+#include "breakpad_googletest_includes.h"
+#include "common/scoped_ptr.h"
+#include "common/using_std_string.h"
+#include "google_breakpad/processor/basic_source_line_resolver.h"
+#include "google_breakpad/processor/call_stack.h"
+#include "google_breakpad/processor/code_module.h"
+#include "google_breakpad/processor/code_modules.h"
+#include "google_breakpad/processor/minidump.h"
+#include "google_breakpad/processor/minidump_processor.h"
+#include "google_breakpad/processor/process_state.h"
+#include "google_breakpad/processor/stack_frame.h"
+#include "google_breakpad/processor/symbol_supplier.h"
+#include "processor/logging.h"
+#include "processor/stackwalker_unittest_utils.h"
+
+using std::map;
+
+namespace google_breakpad {
+class MockMinidump : public Minidump {
+ public:
+  MockMinidump() : Minidump("") {
+  }
+
+  MOCK_METHOD0(Read, bool());
+  MOCK_CONST_METHOD0(path, string());
+  MOCK_CONST_METHOD0(header, const MDRawHeader*());
+  MOCK_METHOD0(GetThreadList, MinidumpThreadList*());
+  MOCK_METHOD0(GetSystemInfo, MinidumpSystemInfo*());
+  MOCK_METHOD0(GetMiscInfo, MinidumpMiscInfo*());
+  MOCK_METHOD0(GetBreakpadInfo, MinidumpBreakpadInfo*());
+  MOCK_METHOD0(GetException, MinidumpException*());
+  MOCK_METHOD0(GetAssertion, MinidumpAssertion*());
+  MOCK_METHOD0(GetModuleList, MinidumpModuleList*());
+  MOCK_METHOD0(GetMemoryList, MinidumpMemoryList*());
+};
+
+class MockMinidumpThreadList : public MinidumpThreadList {
+ public:
+  MockMinidumpThreadList() : MinidumpThreadList(NULL) {}
+
+  MOCK_CONST_METHOD0(thread_count, unsigned int());
+  MOCK_CONST_METHOD1(GetThreadAtIndex, MinidumpThread*(unsigned int));
+};
+
+class MockMinidumpMemoryList : public MinidumpMemoryList {
+ public:
+  MockMinidumpMemoryList() : MinidumpMemoryList(NULL) {}
+
+  MOCK_METHOD1(GetMemoryRegionForAddress, MinidumpMemoryRegion*(uint64_t));
+};
+
+class MockMinidumpThread : public MinidumpThread {
+ public:
+  MockMinidumpThread() : MinidumpThread(NULL) {}
+
+  MOCK_CONST_METHOD1(GetThreadID, bool(uint32_t*));
+  MOCK_METHOD0(GetContext, MinidumpContext*());
+  MOCK_METHOD0(GetMemory, MinidumpMemoryRegion*());
+  MOCK_CONST_METHOD0(GetStartOfStackMemoryRange, uint64_t());
+};
+
+// This is crappy, but MinidumpProcessor really does want a
+// MinidumpMemoryRegion.
+class MockMinidumpMemoryRegion : public MinidumpMemoryRegion {
+ public:
+  MockMinidumpMemoryRegion(uint64_t base, const string& contents) :
+      MinidumpMemoryRegion(NULL) {
+    region_.Init(base, contents);
+  }
+
+  uint64_t GetBase() const { return region_.GetBase(); }
+  uint32_t GetSize() const { return region_.GetSize(); }
+
+  bool GetMemoryAtAddress(uint64_t address, uint8_t  *value) const {
+    return region_.GetMemoryAtAddress(address, value);
+  }
+  bool GetMemoryAtAddress(uint64_t address, uint16_t *value) const {
+    return region_.GetMemoryAtAddress(address, value);
+  }
+  bool GetMemoryAtAddress(uint64_t address, uint32_t *value) const {
+    return region_.GetMemoryAtAddress(address, value);
+  }
+  bool GetMemoryAtAddress(uint64_t address, uint64_t *value) const {
+    return region_.GetMemoryAtAddress(address, value);
+  }
+
+  MockMemoryRegion region_;
+};
+
+// A test miscelaneous info stream, just returns values from the
+// MDRawMiscInfo fed to it.
+class TestMinidumpMiscInfo : public MinidumpMiscInfo {
+ public:
+  explicit TestMinidumpMiscInfo(const MDRawMiscInfo& misc_info) :
+      MinidumpMiscInfo(NULL) {
+    valid_ = true;
+    misc_info_ = misc_info;
+  }
+};
+
+}  // namespace google_breakpad
+
+namespace {
+
+using google_breakpad::BasicSourceLineResolver;
+using google_breakpad::CallStack;
+using google_breakpad::CodeModule;
+using google_breakpad::MinidumpContext;
+using google_breakpad::MinidumpMemoryRegion;
+using google_breakpad::MinidumpMiscInfo;
+using google_breakpad::MinidumpProcessor;
+using google_breakpad::MinidumpSystemInfo;
+using google_breakpad::MinidumpThreadList;
+using google_breakpad::MinidumpThread;
+using google_breakpad::MockMinidump;
+using google_breakpad::MockMinidumpMemoryList;
+using google_breakpad::MockMinidumpMemoryRegion;
+using google_breakpad::MockMinidumpThread;
+using google_breakpad::MockMinidumpThreadList;
+using google_breakpad::ProcessState;
+using google_breakpad::scoped_ptr;
+using google_breakpad::SymbolSupplier;
+using google_breakpad::SystemInfo;
+using ::testing::_;
+using ::testing::AnyNumber;
+using ::testing::DoAll;
+using ::testing::Mock;
+using ::testing::Ne;
+using ::testing::Property;
+using ::testing::Return;
+using ::testing::SetArgumentPointee;
+
+static const char *kSystemInfoOS = "Windows NT";
+static const char *kSystemInfoOSShort = "windows";
+static const char *kSystemInfoOSVersion = "5.1.2600 Service Pack 2";
+static const char *kSystemInfoCPU = "x86";
+static const char *kSystemInfoCPUInfo =
+    "GenuineIntel family 6 model 13 stepping 8";
+
+#define ASSERT_TRUE_ABORT(cond) \
+  if (!(cond)) {                                                        \
+    fprintf(stderr, "FAILED: %s at %s:%d\n", #cond, __FILE__, __LINE__); \
+    abort(); \
+  }
+
+#define ASSERT_EQ_ABORT(e1, e2) ASSERT_TRUE_ABORT((e1) == (e2))
+
+class TestSymbolSupplier : public SymbolSupplier {
+ public:
+  TestSymbolSupplier() : interrupt_(false) {}
+
+  virtual SymbolResult GetSymbolFile(const CodeModule *module,
+                                     const SystemInfo *system_info,
+                                     string *symbol_file);
+
+  virtual SymbolResult GetSymbolFile(const CodeModule *module,
+                                     const SystemInfo *system_info,
+                                     string *symbol_file,
+                                     string *symbol_data);
+
+  virtual SymbolResult GetCStringSymbolData(const CodeModule *module,
+                                            const SystemInfo *system_info,
+                                            string *symbol_file,
+                                            char **symbol_data,
+                                            size_t *symbol_data_size);
+
+  virtual void FreeSymbolData(const CodeModule *module);
+
+  // When set to true, causes the SymbolSupplier to return INTERRUPT
+  void set_interrupt(bool interrupt) { interrupt_ = interrupt; }
+
+ private:
+  bool interrupt_;
+  map<string, char *> memory_buffers_;
+};
+
+SymbolSupplier::SymbolResult TestSymbolSupplier::GetSymbolFile(
+    const CodeModule *module,
+    const SystemInfo *system_info,
+    string *symbol_file) {
+  ASSERT_TRUE_ABORT(module);
+  ASSERT_TRUE_ABORT(system_info);
+  ASSERT_EQ_ABORT(system_info->cpu, kSystemInfoCPU);
+  ASSERT_EQ_ABORT(system_info->cpu_info, kSystemInfoCPUInfo);
+  ASSERT_EQ_ABORT(system_info->os, kSystemInfoOS);
+  ASSERT_EQ_ABORT(system_info->os_short, kSystemInfoOSShort);
+  ASSERT_EQ_ABORT(system_info->os_version, kSystemInfoOSVersion);
+
+  if (interrupt_) {
+    return INTERRUPT;
+  }
+
+  if (module && module->code_file() == "c:\\test_app.exe") {
+      *symbol_file = string(getenv("srcdir") ? getenv("srcdir") : ".") +
+                     "/src/processor/testdata/symbols/test_app.pdb/" +
+                     module->debug_identifier() +
+                     "/test_app.sym";
+    return FOUND;
+  }
+
+  return NOT_FOUND;
+}
+
+SymbolSupplier::SymbolResult TestSymbolSupplier::GetSymbolFile(
+    const CodeModule *module,
+    const SystemInfo *system_info,
+    string *symbol_file,
+    string *symbol_data) {
+  SymbolSupplier::SymbolResult s = GetSymbolFile(module, system_info,
+                                                 symbol_file);
+  if (s == FOUND) {
+    std::ifstream in(symbol_file->c_str());
+    std::getline(in, *symbol_data, string::traits_type::to_char_type(
+                     string::traits_type::eof()));
+    in.close();
+  }
+
+  return s;
+}
+
+SymbolSupplier::SymbolResult TestSymbolSupplier::GetCStringSymbolData(
+    const CodeModule *module,
+    const SystemInfo *system_info,
+    string *symbol_file,
+    char **symbol_data,
+    size_t *symbol_data_size) {
+  string symbol_data_string;
+  SymbolSupplier::SymbolResult s = GetSymbolFile(module,
+                                                 system_info,
+                                                 symbol_file,
+                                                 &symbol_data_string);
+  if (s == FOUND) {
+    *symbol_data_size = symbol_data_string.size() + 1;
+    *symbol_data = new char[*symbol_data_size];
+    if (*symbol_data == NULL) {
+      BPLOG(ERROR) << "Memory allocation failed for module: "
+                   << module->code_file() << " size: " << *symbol_data_size;
+      return INTERRUPT;
+    }
+    memcpy(*symbol_data, symbol_data_string.c_str(), symbol_data_string.size());
+    (*symbol_data)[symbol_data_string.size()] = '\0';
+    memory_buffers_.insert(make_pair(module->code_file(), *symbol_data));
+  }
+
+  return s;
+}
+
+void TestSymbolSupplier::FreeSymbolData(const CodeModule *module) {
+  map<string, char *>::iterator it = memory_buffers_.find(module->code_file());
+  if (it != memory_buffers_.end()) {
+    delete [] it->second;
+    memory_buffers_.erase(it);
+  }
+}
+
+// A test system info stream, just returns values from the
+// MDRawSystemInfo fed to it.
+class TestMinidumpSystemInfo : public MinidumpSystemInfo {
+ public:
+  explicit TestMinidumpSystemInfo(MDRawSystemInfo info) :
+      MinidumpSystemInfo(NULL) {
+    valid_ = true;
+    system_info_ = info;
+    csd_version_ = new string("");
+  }
+};
+
+// A test minidump context, just returns the MDRawContextX86
+// fed to it.
+class TestMinidumpContext : public MinidumpContext {
+ public:
+  explicit TestMinidumpContext(const MDRawContextX86& context) :
+      MinidumpContext(NULL) {
+    valid_ = true;
+    SetContextX86(new MDRawContextX86(context));
+    SetContextFlags(MD_CONTEXT_X86);
+  }
+};
+
+class MinidumpProcessorTest : public ::testing::Test {
+};
+
+TEST_F(MinidumpProcessorTest, TestCorruptMinidumps) {
+  MockMinidump dump;
+  TestSymbolSupplier supplier;
+  BasicSourceLineResolver resolver;
+  MinidumpProcessor processor(&supplier, &resolver);
+  ProcessState state;
+
+  EXPECT_EQ(processor.Process("nonexistent minidump", &state),
+            google_breakpad::PROCESS_ERROR_MINIDUMP_NOT_FOUND);
+
+  EXPECT_CALL(dump, path()).WillRepeatedly(Return("mock minidump"));
+  EXPECT_CALL(dump, Read()).WillRepeatedly(Return(true));
+
+  MDRawHeader fakeHeader;
+  fakeHeader.time_date_stamp = 0;
+  EXPECT_CALL(dump, header()).
+      WillOnce(Return(reinterpret_cast<MDRawHeader*>(NULL))).
+      WillRepeatedly(Return(&fakeHeader));
+
+  EXPECT_EQ(processor.Process(&dump, &state),
+            google_breakpad::PROCESS_ERROR_NO_MINIDUMP_HEADER);
+
+  EXPECT_CALL(dump, GetThreadList()).
+      WillOnce(Return(reinterpret_cast<MinidumpThreadList*>(NULL)));
+  EXPECT_CALL(dump, GetSystemInfo()).
+      WillRepeatedly(Return(reinterpret_cast<MinidumpSystemInfo*>(NULL)));
+
+  EXPECT_EQ(processor.Process(&dump, &state),
+            google_breakpad::PROCESS_ERROR_NO_THREAD_LIST);
+}
+
+// This test case verifies that the symbol supplier is only consulted
+// once per minidump per module.
+TEST_F(MinidumpProcessorTest, TestSymbolSupplierLookupCounts) {
+  MockSymbolSupplier supplier;
+  BasicSourceLineResolver resolver;
+  MinidumpProcessor processor(&supplier, &resolver);
+
+  string minidump_file = string(getenv("srcdir") ? getenv("srcdir") : ".") +
+                         "/src/processor/testdata/minidump2.dmp";
+  ProcessState state;
+  EXPECT_CALL(supplier, GetCStringSymbolData(
+      Property(&google_breakpad::CodeModule::code_file,
+               "c:\\test_app.exe"),
+      _, _, _, _)).WillOnce(Return(SymbolSupplier::NOT_FOUND));
+  EXPECT_CALL(supplier, GetCStringSymbolData(
+      Property(&google_breakpad::CodeModule::code_file,
+               Ne("c:\\test_app.exe")),
+      _, _, _, _)).WillRepeatedly(Return(SymbolSupplier::NOT_FOUND));
+  // Avoid GMOCK WARNING "Uninteresting mock function call - returning
+  // directly" for FreeSymbolData().
+  EXPECT_CALL(supplier, FreeSymbolData(_)).Times(AnyNumber());
+  ASSERT_EQ(processor.Process(minidump_file, &state),
+            google_breakpad::PROCESS_OK);
+
+  ASSERT_TRUE(Mock::VerifyAndClearExpectations(&supplier));
+
+  // We need to verify that across minidumps, the processor will refetch
+  // symbol files, even with the same symbol supplier.
+  EXPECT_CALL(supplier, GetCStringSymbolData(
+      Property(&google_breakpad::CodeModule::code_file,
+               "c:\\test_app.exe"),
+      _, _, _, _)).WillOnce(Return(SymbolSupplier::NOT_FOUND));
+  EXPECT_CALL(supplier, GetCStringSymbolData(
+      Property(&google_breakpad::CodeModule::code_file,
+               Ne("c:\\test_app.exe")),
+      _, _, _, _)).WillRepeatedly(Return(SymbolSupplier::NOT_FOUND));
+  // Avoid GMOCK WARNING "Uninteresting mock function call - returning
+  // directly" for FreeSymbolData().
+  EXPECT_CALL(supplier, FreeSymbolData(_)).Times(AnyNumber());
+  ASSERT_EQ(processor.Process(minidump_file, &state),
+            google_breakpad::PROCESS_OK);
+}
+
+TEST_F(MinidumpProcessorTest, TestBasicProcessing) {
+  TestSymbolSupplier supplier;
+  BasicSourceLineResolver resolver;
+  MinidumpProcessor processor(&supplier, &resolver);
+
+  string minidump_file = string(getenv("srcdir") ? getenv("srcdir") : ".") +
+                         "/src/processor/testdata/minidump2.dmp";
+
+  ProcessState state;
+  ASSERT_EQ(processor.Process(minidump_file, &state),
+            google_breakpad::PROCESS_OK);
+  ASSERT_EQ(state.system_info()->os, kSystemInfoOS);
+  ASSERT_EQ(state.system_info()->os_short, kSystemInfoOSShort);
+  ASSERT_EQ(state.system_info()->os_version, kSystemInfoOSVersion);
+  ASSERT_EQ(state.system_info()->cpu, kSystemInfoCPU);
+  ASSERT_EQ(state.system_info()->cpu_info, kSystemInfoCPUInfo);
+  ASSERT_TRUE(state.crashed());
+  ASSERT_EQ(state.crash_reason(), "EXCEPTION_ACCESS_VIOLATION_WRITE");
+  ASSERT_EQ(state.crash_address(), 0x45U);
+  ASSERT_EQ(state.threads()->size(), size_t(1));
+  ASSERT_EQ(state.requesting_thread(), 0);
+  EXPECT_EQ(1171480435U, state.time_date_stamp());
+  EXPECT_EQ(1171480435U, state.process_create_time());
+
+  CallStack *stack = state.threads()->at(0);
+  ASSERT_TRUE(stack);
+  ASSERT_EQ(stack->frames()->size(), 4U);
+
+  ASSERT_TRUE(stack->frames()->at(0)->module);
+  ASSERT_EQ(stack->frames()->at(0)->module->base_address(), 0x400000U);
+  ASSERT_EQ(stack->frames()->at(0)->module->code_file(), "c:\\test_app.exe");
+  ASSERT_EQ(stack->frames()->at(0)->function_name,
+            "`anonymous namespace'::CrashFunction");
+  ASSERT_EQ(stack->frames()->at(0)->source_file_name, "c:\\test_app.cc");
+  ASSERT_EQ(stack->frames()->at(0)->source_line, 58);
+
+  ASSERT_TRUE(stack->frames()->at(1)->module);
+  ASSERT_EQ(stack->frames()->at(1)->module->base_address(), 0x400000U);
+  ASSERT_EQ(stack->frames()->at(1)->module->code_file(), "c:\\test_app.exe");
+  ASSERT_EQ(stack->frames()->at(1)->function_name, "main");
+  ASSERT_EQ(stack->frames()->at(1)->source_file_name, "c:\\test_app.cc");
+  ASSERT_EQ(stack->frames()->at(1)->source_line, 65);
+
+  // This comes from the CRT
+  ASSERT_TRUE(stack->frames()->at(2)->module);
+  ASSERT_EQ(stack->frames()->at(2)->module->base_address(), 0x400000U);
+  ASSERT_EQ(stack->frames()->at(2)->module->code_file(), "c:\\test_app.exe");
+  ASSERT_EQ(stack->frames()->at(2)->function_name, "__tmainCRTStartup");
+  ASSERT_EQ(stack->frames()->at(2)->source_file_name,
+            "f:\\sp\\vctools\\crt_bld\\self_x86\\crt\\src\\crt0.c");
+  ASSERT_EQ(stack->frames()->at(2)->source_line, 327);
+
+  // No debug info available for kernel32.dll
+  ASSERT_TRUE(stack->frames()->at(3)->module);
+  ASSERT_EQ(stack->frames()->at(3)->module->base_address(), 0x7c800000U);
+  ASSERT_EQ(stack->frames()->at(3)->module->code_file(),
+            "C:\\WINDOWS\\system32\\kernel32.dll");
+  ASSERT_TRUE(stack->frames()->at(3)->function_name.empty());
+  ASSERT_TRUE(stack->frames()->at(3)->source_file_name.empty());
+  ASSERT_EQ(stack->frames()->at(3)->source_line, 0);
+
+  ASSERT_EQ(state.modules()->module_count(), 13U);
+  ASSERT_TRUE(state.modules()->GetMainModule());
+  ASSERT_EQ(state.modules()->GetMainModule()->code_file(), "c:\\test_app.exe");
+  ASSERT_FALSE(state.modules()->GetModuleForAddress(0));
+  ASSERT_EQ(state.modules()->GetMainModule(),
+            state.modules()->GetModuleForAddress(0x400000));
+  ASSERT_EQ(state.modules()->GetModuleForAddress(0x7c801234)->debug_file(),
+            "kernel32.pdb");
+  ASSERT_EQ(state.modules()->GetModuleForAddress(0x77d43210)->version(),
+            "5.1.2600.2622");
+
+  // Test that disabled exploitability engine defaults to
+  // EXPLOITABILITY_NOT_ANALYZED.
+  ASSERT_EQ(google_breakpad::EXPLOITABILITY_NOT_ANALYZED,
+            state.exploitability());
+
+  // Test that the symbol supplier can interrupt processing
+  state.Clear();
+  supplier.set_interrupt(true);
+  ASSERT_EQ(processor.Process(minidump_file, &state),
+            google_breakpad::PROCESS_SYMBOL_SUPPLIER_INTERRUPTED);
+}
+
+TEST_F(MinidumpProcessorTest, TestThreadMissingMemory) {
+  MockMinidump dump;
+  EXPECT_CALL(dump, path()).WillRepeatedly(Return("mock minidump"));
+  EXPECT_CALL(dump, Read()).WillRepeatedly(Return(true));
+
+  MDRawHeader fake_header;
+  fake_header.time_date_stamp = 0;
+  EXPECT_CALL(dump, header()).WillRepeatedly(Return(&fake_header));
+
+  MDRawSystemInfo raw_system_info;
+  memset(&raw_system_info, 0, sizeof(raw_system_info));
+  raw_system_info.processor_architecture = MD_CPU_ARCHITECTURE_X86;
+  raw_system_info.platform_id = MD_OS_WIN32_NT;
+  TestMinidumpSystemInfo dump_system_info(raw_system_info);
+
+  EXPECT_CALL(dump, GetSystemInfo()).
+      WillRepeatedly(Return(&dump_system_info));
+
+  MockMinidumpThreadList thread_list;
+  EXPECT_CALL(dump, GetThreadList()).
+      WillOnce(Return(&thread_list));
+
+  MockMinidumpMemoryList memory_list;
+  EXPECT_CALL(dump, GetMemoryList()).
+      WillOnce(Return(&memory_list));
+
+  // Return a thread missing stack memory.
+  MockMinidumpThread no_memory_thread;
+  EXPECT_CALL(no_memory_thread, GetThreadID(_)).
+    WillRepeatedly(DoAll(SetArgumentPointee<0>(1),
+                         Return(true)));
+  EXPECT_CALL(no_memory_thread, GetMemory()).
+    WillRepeatedly(Return(reinterpret_cast<MinidumpMemoryRegion*>(NULL)));
+
+  const uint64_t kTestStartOfMemoryRange = 0x1234;
+  EXPECT_CALL(no_memory_thread, GetStartOfStackMemoryRange()).
+    WillRepeatedly(Return(kTestStartOfMemoryRange));
+  EXPECT_CALL(memory_list, GetMemoryRegionForAddress(kTestStartOfMemoryRange)).
+    WillRepeatedly(Return(reinterpret_cast<MinidumpMemoryRegion*>(NULL)));
+
+  MDRawContextX86 no_memory_thread_raw_context;
+  memset(&no_memory_thread_raw_context, 0,
+         sizeof(no_memory_thread_raw_context));
+  no_memory_thread_raw_context.context_flags = MD_CONTEXT_X86_FULL;
+  const uint32_t kExpectedEIP = 0xabcd1234;
+  no_memory_thread_raw_context.eip = kExpectedEIP;
+  TestMinidumpContext no_memory_thread_context(no_memory_thread_raw_context);
+  EXPECT_CALL(no_memory_thread, GetContext()).
+    WillRepeatedly(Return(&no_memory_thread_context));
+
+  EXPECT_CALL(thread_list, thread_count()).
+    WillRepeatedly(Return(1));
+  EXPECT_CALL(thread_list, GetThreadAtIndex(0)).
+    WillOnce(Return(&no_memory_thread));
+
+  MinidumpProcessor processor(reinterpret_cast<SymbolSupplier*>(NULL), NULL);
+  ProcessState state;
+  EXPECT_EQ(processor.Process(&dump, &state),
+            google_breakpad::PROCESS_OK);
+
+  // Should have a single thread with a single frame in it.
+  ASSERT_EQ(1U, state.threads()->size());
+  ASSERT_EQ(1U, state.threads()->at(0)->frames()->size());
+  ASSERT_EQ(kExpectedEIP, state.threads()->at(0)->frames()->at(0)->instruction);
+}
+
+TEST_F(MinidumpProcessorTest, GetProcessCreateTime) {
+  const uint32_t kProcessCreateTime = 2000;
+  const uint32_t kTimeDateStamp = 5000;
+  MockMinidump dump;
+  EXPECT_CALL(dump, path()).WillRepeatedly(Return("mock minidump"));
+  EXPECT_CALL(dump, Read()).WillRepeatedly(Return(true));
+
+  // Set time of crash.
+  MDRawHeader fake_header;
+  fake_header.time_date_stamp = kTimeDateStamp;
+  EXPECT_CALL(dump, header()).WillRepeatedly(Return(&fake_header));
+
+  // Set process create time.
+  MDRawMiscInfo raw_misc_info;
+  memset(&raw_misc_info, 0, sizeof(raw_misc_info));
+  raw_misc_info.process_create_time = kProcessCreateTime;
+  raw_misc_info.flags1 |= MD_MISCINFO_FLAGS1_PROCESS_TIMES;
+  google_breakpad::TestMinidumpMiscInfo dump_misc_info(raw_misc_info);
+  EXPECT_CALL(dump, GetMiscInfo()).WillRepeatedly(Return(&dump_misc_info));
+
+  // No threads
+  MockMinidumpThreadList thread_list;
+  EXPECT_CALL(dump, GetThreadList()).WillOnce(Return(&thread_list));
+  EXPECT_CALL(thread_list, thread_count()).WillRepeatedly(Return(0));
+
+  MinidumpProcessor processor(reinterpret_cast<SymbolSupplier*>(NULL), NULL);
+  ProcessState state;
+  EXPECT_EQ(google_breakpad::PROCESS_OK, processor.Process(&dump, &state));
+
+  // Verify the time stamps.
+  ASSERT_EQ(kTimeDateStamp, state.time_date_stamp());
+  ASSERT_EQ(kProcessCreateTime, state.process_create_time());
+}
+
+TEST_F(MinidumpProcessorTest, TestThreadMissingContext) {
+  MockMinidump dump;
+  EXPECT_CALL(dump, path()).WillRepeatedly(Return("mock minidump"));
+  EXPECT_CALL(dump, Read()).WillRepeatedly(Return(true));
+
+  MDRawHeader fake_header;
+  fake_header.time_date_stamp = 0;
+  EXPECT_CALL(dump, header()).WillRepeatedly(Return(&fake_header));
+
+  MDRawSystemInfo raw_system_info;
+  memset(&raw_system_info, 0, sizeof(raw_system_info));
+  raw_system_info.processor_architecture = MD_CPU_ARCHITECTURE_X86;
+  raw_system_info.platform_id = MD_OS_WIN32_NT;
+  TestMinidumpSystemInfo dump_system_info(raw_system_info);
+
+  EXPECT_CALL(dump, GetSystemInfo()).
+      WillRepeatedly(Return(&dump_system_info));
+
+  MockMinidumpThreadList thread_list;
+  EXPECT_CALL(dump, GetThreadList()).
+      WillOnce(Return(&thread_list));
+
+  MockMinidumpMemoryList memory_list;
+  EXPECT_CALL(dump, GetMemoryList()).
+      WillOnce(Return(&memory_list));
+
+  // Return a thread missing a thread context.
+  MockMinidumpThread no_context_thread;
+  EXPECT_CALL(no_context_thread, GetThreadID(_)).
+    WillRepeatedly(DoAll(SetArgumentPointee<0>(1),
+                         Return(true)));
+  EXPECT_CALL(no_context_thread, GetContext()).
+    WillRepeatedly(Return(reinterpret_cast<MinidumpContext*>(NULL)));
+
+  // The memory contents don't really matter here, since it won't be used.
+  MockMinidumpMemoryRegion no_context_thread_memory(0x1234, "xxx");
+  EXPECT_CALL(no_context_thread, GetMemory()).
+    WillRepeatedly(Return(&no_context_thread_memory));
+  EXPECT_CALL(no_context_thread, GetStartOfStackMemoryRange()).
+    Times(0);
+  EXPECT_CALL(memory_list, GetMemoryRegionForAddress(_)).
+    Times(0);
+
+  EXPECT_CALL(thread_list, thread_count()).
+    WillRepeatedly(Return(1));
+  EXPECT_CALL(thread_list, GetThreadAtIndex(0)).
+    WillOnce(Return(&no_context_thread));
+
+  MinidumpProcessor processor(reinterpret_cast<SymbolSupplier*>(NULL), NULL);
+  ProcessState state;
+  EXPECT_EQ(processor.Process(&dump, &state),
+            google_breakpad::PROCESS_OK);
+
+  // Should have a single thread with zero frames.
+  ASSERT_EQ(1U, state.threads()->size());
+  ASSERT_EQ(0U, state.threads()->at(0)->frames()->size());
+}
+
+}  // namespace
+
+int main(int argc, char *argv[]) {
+  ::testing::InitGoogleTest(&argc, argv);
+  return RUN_ALL_TESTS();
+}
diff --git a/google-breakpad/src/processor/minidump_stackwalk.cc b/google-breakpad/src/processor/minidump_stackwalk.cc
new file mode 100644
index 0000000..8f83969
--- /dev/null
+++ b/google-breakpad/src/processor/minidump_stackwalk.cc
@@ -0,0 +1,162 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// minidump_stackwalk.cc: Process a minidump with MinidumpProcessor, printing
+// the results, including stack traces.
+//
+// Author: Mark Mentovai
+
+#include <stdio.h>
+#include <string.h>
+
+#include <string>
+#include <vector>
+
+#include "common/scoped_ptr.h"
+#include "common/using_std_string.h"
+#include "google_breakpad/processor/basic_source_line_resolver.h"
+#include "google_breakpad/processor/minidump.h"
+#include "google_breakpad/processor/minidump_processor.h"
+#include "google_breakpad/processor/process_state.h"
+#include "processor/logging.h"
+#include "processor/simple_symbol_supplier.h"
+#include "processor/stackwalk_common.h"
+
+
+namespace {
+
+using google_breakpad::BasicSourceLineResolver;
+using google_breakpad::Minidump;
+using google_breakpad::MinidumpProcessor;
+using google_breakpad::ProcessState;
+using google_breakpad::SimpleSymbolSupplier;
+using google_breakpad::scoped_ptr;
+
+// Processes |minidump_file| using MinidumpProcessor.  |symbol_path|, if
+// non-empty, is the base directory of a symbol storage area, laid out in
+// the format required by SimpleSymbolSupplier.  If such a storage area
+// is specified, it is made available for use by the MinidumpProcessor.
+//
+// Returns the value of MinidumpProcessor::Process.  If processing succeeds,
+// prints identifying OS and CPU information from the minidump, crash
+// information if the minidump was produced as a result of a crash, and
+// call stacks for each thread contained in the minidump.  All information
+// is printed to stdout.
+bool PrintMinidumpProcess(const string &minidump_file,
+                          const std::vector<string> &symbol_paths,
+                          bool machine_readable,
+                          bool output_stack_contents) {
+  scoped_ptr<SimpleSymbolSupplier> symbol_supplier;
+  if (!symbol_paths.empty()) {
+    // TODO(mmentovai): check existence of symbol_path if specified?
+    symbol_supplier.reset(new SimpleSymbolSupplier(symbol_paths));
+  }
+
+  BasicSourceLineResolver resolver;
+  MinidumpProcessor minidump_processor(symbol_supplier.get(), &resolver);
+
+  // Process the minidump.
+  Minidump dump(minidump_file);
+  if (!dump.Read()) {
+     BPLOG(ERROR) << "Minidump " << dump.path() << " could not be read";
+     return false;
+  }
+  ProcessState process_state;
+  if (minidump_processor.Process(&dump, &process_state) !=
+      google_breakpad::PROCESS_OK) {
+    BPLOG(ERROR) << "MinidumpProcessor::Process failed";
+    return false;
+  }
+
+  if (machine_readable) {
+    PrintProcessStateMachineReadable(process_state);
+  } else {
+    PrintProcessState(process_state, output_stack_contents, &resolver);
+  }
+
+  return true;
+}
+
+void usage(const char *program_name) {
+  fprintf(stderr, "usage: %s [-m|-s] <minidump-file> [symbol-path ...]\n"
+          "    -m : Output in machine-readable format\n"
+          "    -s : Output stack contents\n",
+          program_name);
+}
+
+}  // namespace
+
+int main(int argc, char **argv) {
+  BPLOG_INIT(&argc, &argv);
+
+  if (argc < 2) {
+    usage(argv[0]);
+    return 1;
+  }
+
+  const char *minidump_file;
+  bool machine_readable = false;
+  bool output_stack_contents = false;
+  int symbol_path_arg;
+
+  if (strcmp(argv[1], "-m") == 0) {
+    if (argc < 3) {
+      usage(argv[0]);
+      return 1;
+    }
+
+    machine_readable = true;
+    minidump_file = argv[2];
+    symbol_path_arg = 3;
+  } else if (strcmp(argv[1], "-s") == 0) {
+    if (argc < 3) {
+      usage(argv[0]);
+      return 1;
+    }
+
+    output_stack_contents = true;
+    minidump_file = argv[2];
+    symbol_path_arg = 3;
+  } else {
+    minidump_file = argv[1];
+    symbol_path_arg = 2;
+  }
+
+  // extra arguments are symbol paths
+  std::vector<string> symbol_paths;
+  if (argc > symbol_path_arg) {
+    for (int argi = symbol_path_arg; argi < argc; ++argi)
+      symbol_paths.push_back(argv[argi]);
+  }
+
+  return PrintMinidumpProcess(minidump_file,
+                              symbol_paths,
+                              machine_readable,
+                              output_stack_contents) ? 0 : 1;
+}
diff --git a/google-breakpad/src/processor/minidump_stackwalk_machine_readable_test b/google-breakpad/src/processor/minidump_stackwalk_machine_readable_test
new file mode 100755
index 0000000..2aadb24
--- /dev/null
+++ b/google-breakpad/src/processor/minidump_stackwalk_machine_readable_test
@@ -0,0 +1,37 @@
+#!/bin/sh
+
+# Copyright (c) 2007, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+testdata_dir=$srcdir/src/processor/testdata
+./src/processor/minidump_stackwalk -m $testdata_dir/minidump2.dmp \
+                                      $testdata_dir/symbols | \
+ tr -d '\015' | \
+ diff -u $testdata_dir/minidump2.stackwalk.machine_readable.out -
+exit $?
diff --git a/google-breakpad/src/processor/minidump_stackwalk_test b/google-breakpad/src/processor/minidump_stackwalk_test
new file mode 100755
index 0000000..f979027
--- /dev/null
+++ b/google-breakpad/src/processor/minidump_stackwalk_test
@@ -0,0 +1,37 @@
+#!/bin/sh
+
+# Copyright (c) 2006, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+testdata_dir=$srcdir/src/processor/testdata
+./src/processor/minidump_stackwalk $testdata_dir/minidump2.dmp \
+                                   $testdata_dir/symbols | \
+ tr -d '\015' | \
+ diff -u $testdata_dir/minidump2.stackwalk.out -
+exit $?
diff --git a/google-breakpad/src/processor/minidump_unittest.cc b/google-breakpad/src/processor/minidump_unittest.cc
new file mode 100644
index 0000000..bb7dac6
--- /dev/null
+++ b/google-breakpad/src/processor/minidump_unittest.cc
@@ -0,0 +1,1266 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Unit test for Minidump.  Uses a pre-generated minidump and
+// verifies that certain streams are correct.
+
+#include <iostream>
+#include <fstream>
+#include <sstream>
+#include <stdlib.h>
+#include <string>
+#include <vector>
+
+#include "breakpad_googletest_includes.h"
+#include "common/using_std_string.h"
+#include "google_breakpad/common/minidump_format.h"
+#include "google_breakpad/processor/minidump.h"
+#include "processor/logging.h"
+#include "processor/synth_minidump.h"
+
+namespace {
+
+using google_breakpad::Minidump;
+using google_breakpad::MinidumpContext;
+using google_breakpad::MinidumpException;
+using google_breakpad::MinidumpMemoryInfo;
+using google_breakpad::MinidumpMemoryInfoList;
+using google_breakpad::MinidumpMemoryList;
+using google_breakpad::MinidumpMemoryRegion;
+using google_breakpad::MinidumpModule;
+using google_breakpad::MinidumpModuleList;
+using google_breakpad::MinidumpSystemInfo;
+using google_breakpad::MinidumpThread;
+using google_breakpad::MinidumpThreadList;
+using google_breakpad::SynthMinidump::Context;
+using google_breakpad::SynthMinidump::Dump;
+using google_breakpad::SynthMinidump::Exception;
+using google_breakpad::SynthMinidump::Memory;
+using google_breakpad::SynthMinidump::Module;
+using google_breakpad::SynthMinidump::Stream;
+using google_breakpad::SynthMinidump::String;
+using google_breakpad::SynthMinidump::SystemInfo;
+using google_breakpad::SynthMinidump::Thread;
+using google_breakpad::test_assembler::kBigEndian;
+using google_breakpad::test_assembler::kLittleEndian;
+using std::ifstream;
+using std::istringstream;
+using std::vector;
+using ::testing::Return;
+
+class MinidumpTest : public ::testing::Test {
+public:
+  void SetUp() {
+    minidump_file_ = string(getenv("srcdir") ? getenv("srcdir") : ".") +
+      "/src/processor/testdata/minidump2.dmp";
+  }
+  string minidump_file_;
+};
+
+TEST_F(MinidumpTest, TestMinidumpFromFile) {
+  Minidump minidump(minidump_file_);
+  ASSERT_EQ(minidump.path(), minidump_file_);
+  ASSERT_TRUE(minidump.Read());
+  const MDRawHeader* header = minidump.header();
+  ASSERT_NE(header, (MDRawHeader*)NULL);
+  ASSERT_EQ(header->signature, uint32_t(MD_HEADER_SIGNATURE));
+  //TODO: add more checks here
+}
+
+TEST_F(MinidumpTest, TestMinidumpFromStream) {
+  // read minidump contents into memory, construct a stringstream around them
+  ifstream file_stream(minidump_file_.c_str(), std::ios::in);
+  ASSERT_TRUE(file_stream.good());
+  vector<char> bytes;
+  file_stream.seekg(0, std::ios_base::end);
+  ASSERT_TRUE(file_stream.good());
+  bytes.resize(file_stream.tellg());
+  file_stream.seekg(0, std::ios_base::beg);
+  ASSERT_TRUE(file_stream.good());
+  file_stream.read(&bytes[0], bytes.size());
+  ASSERT_TRUE(file_stream.good());
+  string str(&bytes[0], bytes.size());
+  istringstream stream(str);
+  ASSERT_TRUE(stream.good());
+
+  // now read minidump from stringstream
+  Minidump minidump(stream);
+  ASSERT_EQ(minidump.path(), "");
+  ASSERT_TRUE(minidump.Read());
+  const MDRawHeader* header = minidump.header();
+  ASSERT_NE(header, (MDRawHeader*)NULL);
+  ASSERT_EQ(header->signature, uint32_t(MD_HEADER_SIGNATURE));
+  //TODO: add more checks here
+}
+
+TEST(Dump, ReadBackEmpty) {
+  Dump dump(0);
+  dump.Finish();
+  string contents;
+  ASSERT_TRUE(dump.GetContents(&contents));
+  istringstream stream(contents);
+  Minidump minidump(stream);
+  ASSERT_TRUE(minidump.Read());
+  ASSERT_EQ(0U, minidump.GetDirectoryEntryCount());
+}
+
+TEST(Dump, ReadBackEmptyBigEndian) {
+  Dump big_minidump(0, kBigEndian);
+  big_minidump.Finish();
+  string contents;
+  ASSERT_TRUE(big_minidump.GetContents(&contents));
+  istringstream stream(contents);
+  Minidump minidump(stream);
+  ASSERT_TRUE(minidump.Read());
+  ASSERT_EQ(0U, minidump.GetDirectoryEntryCount());
+}
+
+TEST(Dump, OneStream) {
+  Dump dump(0, kBigEndian);
+  Stream stream(dump, 0xfbb7fa2bU);
+  stream.Append("stream contents");
+  dump.Add(&stream);
+  dump.Finish();
+  
+  string contents;
+  ASSERT_TRUE(dump.GetContents(&contents));
+  istringstream minidump_stream(contents);
+  Minidump minidump(minidump_stream);
+  ASSERT_TRUE(minidump.Read());
+  ASSERT_EQ(1U, minidump.GetDirectoryEntryCount());
+
+  const MDRawDirectory *dir = minidump.GetDirectoryEntryAtIndex(0);
+  ASSERT_TRUE(dir != NULL);
+  EXPECT_EQ(0xfbb7fa2bU, dir->stream_type);
+
+  uint32_t stream_length;
+  ASSERT_TRUE(minidump.SeekToStreamType(0xfbb7fa2bU, &stream_length));
+  ASSERT_EQ(15U, stream_length);
+  char stream_contents[15];
+  ASSERT_TRUE(minidump.ReadBytes(stream_contents, sizeof(stream_contents)));
+  EXPECT_EQ(string("stream contents"),
+            string(stream_contents, sizeof(stream_contents)));
+
+  EXPECT_FALSE(minidump.GetThreadList());
+  EXPECT_FALSE(minidump.GetModuleList());
+  EXPECT_FALSE(minidump.GetMemoryList());
+  EXPECT_FALSE(minidump.GetException());
+  EXPECT_FALSE(minidump.GetAssertion());
+  EXPECT_FALSE(minidump.GetSystemInfo());
+  EXPECT_FALSE(minidump.GetMiscInfo());
+  EXPECT_FALSE(minidump.GetBreakpadInfo());
+}
+
+TEST(Dump, OneMemory) {
+  Dump dump(0, kBigEndian);
+  Memory memory(dump, 0x309d68010bd21b2cULL);
+  memory.Append("memory contents");
+  dump.Add(&memory);
+  dump.Finish();
+
+  string contents;
+  ASSERT_TRUE(dump.GetContents(&contents));
+  istringstream minidump_stream(contents);
+  Minidump minidump(minidump_stream);
+  ASSERT_TRUE(minidump.Read());
+  ASSERT_EQ(1U, minidump.GetDirectoryEntryCount());
+
+  const MDRawDirectory *dir = minidump.GetDirectoryEntryAtIndex(0);
+  ASSERT_TRUE(dir != NULL);
+  EXPECT_EQ((uint32_t) MD_MEMORY_LIST_STREAM, dir->stream_type);
+
+  MinidumpMemoryList *memory_list = minidump.GetMemoryList();
+  ASSERT_TRUE(memory_list != NULL);
+  ASSERT_EQ(1U, memory_list->region_count());
+
+  MinidumpMemoryRegion *region1 = memory_list->GetMemoryRegionAtIndex(0);
+  ASSERT_EQ(0x309d68010bd21b2cULL, region1->GetBase());
+  ASSERT_EQ(15U, region1->GetSize());
+  const uint8_t *region1_bytes = region1->GetMemory();
+  ASSERT_TRUE(memcmp("memory contents", region1_bytes, 15) == 0);
+}
+
+// One thread --- and its requisite entourage.
+TEST(Dump, OneThread) {
+  Dump dump(0, kLittleEndian);
+  Memory stack(dump, 0x2326a0fa);
+  stack.Append("stack for thread");
+
+  MDRawContextX86 raw_context;
+  const uint32_t kExpectedEIP = 0x6913f540;
+  raw_context.context_flags = MD_CONTEXT_X86_INTEGER | MD_CONTEXT_X86_CONTROL;
+  raw_context.edi = 0x3ecba80d;
+  raw_context.esi = 0x382583b9;
+  raw_context.ebx = 0x7fccc03f;
+  raw_context.edx = 0xf62f8ec2;
+  raw_context.ecx = 0x46a6a6a8;
+  raw_context.eax = 0x6a5025e2;
+  raw_context.ebp = 0xd9fabb4a;
+  raw_context.eip = kExpectedEIP;
+  raw_context.cs = 0xbffe6eda;
+  raw_context.eflags = 0xb2ce1e2d;
+  raw_context.esp = 0x659caaa4;
+  raw_context.ss = 0x2e951ef7;
+  Context context(dump, raw_context);
+  
+  Thread thread(dump, 0xa898f11b, stack, context,
+                0x9e39439f, 0x4abfc15f, 0xe499898a, 0x0d43e939dcfd0372ULL);
+  
+  dump.Add(&stack);
+  dump.Add(&context);
+  dump.Add(&thread);
+  dump.Finish();
+
+  string contents;
+  ASSERT_TRUE(dump.GetContents(&contents));
+
+  istringstream minidump_stream(contents);
+  Minidump minidump(minidump_stream);
+  ASSERT_TRUE(minidump.Read());
+  ASSERT_EQ(2U, minidump.GetDirectoryEntryCount());
+
+  MinidumpMemoryList *md_memory_list = minidump.GetMemoryList();
+  ASSERT_TRUE(md_memory_list != NULL);
+  ASSERT_EQ(1U, md_memory_list->region_count());
+
+  MinidumpMemoryRegion *md_region = md_memory_list->GetMemoryRegionAtIndex(0);
+  ASSERT_EQ(0x2326a0faU, md_region->GetBase());
+  ASSERT_EQ(16U, md_region->GetSize());
+  const uint8_t *region_bytes = md_region->GetMemory();
+  ASSERT_TRUE(memcmp("stack for thread", region_bytes, 16) == 0);
+
+  MinidumpThreadList *thread_list = minidump.GetThreadList();
+  ASSERT_TRUE(thread_list != NULL);
+  ASSERT_EQ(1U, thread_list->thread_count());
+
+  MinidumpThread *md_thread = thread_list->GetThreadAtIndex(0);
+  ASSERT_TRUE(md_thread != NULL);
+  uint32_t thread_id;
+  ASSERT_TRUE(md_thread->GetThreadID(&thread_id));
+  ASSERT_EQ(0xa898f11bU, thread_id);
+  MinidumpMemoryRegion *md_stack = md_thread->GetMemory();
+  ASSERT_TRUE(md_stack != NULL);
+  ASSERT_EQ(0x2326a0faU, md_stack->GetBase());
+  ASSERT_EQ(16U, md_stack->GetSize());
+  const uint8_t *md_stack_bytes = md_stack->GetMemory();
+  ASSERT_TRUE(memcmp("stack for thread", md_stack_bytes, 16) == 0);
+
+  MinidumpContext *md_context = md_thread->GetContext();
+  ASSERT_TRUE(md_context != NULL);
+  ASSERT_EQ((uint32_t) MD_CONTEXT_X86, md_context->GetContextCPU());
+
+  uint64_t eip;
+  ASSERT_TRUE(md_context->GetInstructionPointer(&eip));
+  EXPECT_EQ(kExpectedEIP, eip);
+
+  const MDRawContextX86 *md_raw_context = md_context->GetContextX86();
+  ASSERT_TRUE(md_raw_context != NULL);
+  ASSERT_EQ((uint32_t) (MD_CONTEXT_X86_INTEGER | MD_CONTEXT_X86_CONTROL),
+            (md_raw_context->context_flags
+             & (MD_CONTEXT_X86_INTEGER | MD_CONTEXT_X86_CONTROL)));
+  EXPECT_EQ(0x3ecba80dU, raw_context.edi);
+  EXPECT_EQ(0x382583b9U, raw_context.esi);
+  EXPECT_EQ(0x7fccc03fU, raw_context.ebx);
+  EXPECT_EQ(0xf62f8ec2U, raw_context.edx);
+  EXPECT_EQ(0x46a6a6a8U, raw_context.ecx);
+  EXPECT_EQ(0x6a5025e2U, raw_context.eax);
+  EXPECT_EQ(0xd9fabb4aU, raw_context.ebp);
+  EXPECT_EQ(kExpectedEIP, raw_context.eip);
+  EXPECT_EQ(0xbffe6edaU, raw_context.cs);
+  EXPECT_EQ(0xb2ce1e2dU, raw_context.eflags);
+  EXPECT_EQ(0x659caaa4U, raw_context.esp);
+  EXPECT_EQ(0x2e951ef7U, raw_context.ss);
+}
+
+TEST(Dump, ThreadMissingMemory) {
+  Dump dump(0, kLittleEndian);
+  Memory stack(dump, 0x2326a0fa);
+  // Stack has no contents.
+
+  MDRawContextX86 raw_context;
+  memset(&raw_context, 0, sizeof(raw_context));
+  raw_context.context_flags = MD_CONTEXT_X86_INTEGER | MD_CONTEXT_X86_CONTROL;
+  Context context(dump, raw_context);
+
+  Thread thread(dump, 0xa898f11b, stack, context,
+                0x9e39439f, 0x4abfc15f, 0xe499898a, 0x0d43e939dcfd0372ULL);
+
+  dump.Add(&stack);
+  dump.Add(&context);
+  dump.Add(&thread);
+  dump.Finish();
+
+  string contents;
+  ASSERT_TRUE(dump.GetContents(&contents));
+
+  istringstream minidump_stream(contents);
+  Minidump minidump(minidump_stream);
+  ASSERT_TRUE(minidump.Read());
+  ASSERT_EQ(2U, minidump.GetDirectoryEntryCount());
+
+  // This should succeed even though the thread has no stack memory.
+  MinidumpThreadList* thread_list = minidump.GetThreadList();
+  ASSERT_TRUE(thread_list != NULL);
+  ASSERT_EQ(1U, thread_list->thread_count());
+
+  MinidumpThread* md_thread = thread_list->GetThreadAtIndex(0);
+  ASSERT_TRUE(md_thread != NULL);
+
+  uint32_t thread_id;
+  ASSERT_TRUE(md_thread->GetThreadID(&thread_id));
+  ASSERT_EQ(0xa898f11bU, thread_id);
+
+  MinidumpContext* md_context = md_thread->GetContext();
+  ASSERT_NE(reinterpret_cast<MinidumpContext*>(NULL), md_context);
+
+  MinidumpMemoryRegion* md_stack = md_thread->GetMemory();
+  ASSERT_EQ(reinterpret_cast<MinidumpMemoryRegion*>(NULL), md_stack);
+}
+
+TEST(Dump, ThreadMissingContext) {
+  Dump dump(0, kLittleEndian);
+  Memory stack(dump, 0x2326a0fa);
+  stack.Append("stack for thread");
+
+  // Context is empty.
+  Context context(dump);
+
+  Thread thread(dump, 0xa898f11b, stack, context,
+                0x9e39439f, 0x4abfc15f, 0xe499898a, 0x0d43e939dcfd0372ULL);
+
+  dump.Add(&stack);
+  dump.Add(&context);
+  dump.Add(&thread);
+  dump.Finish();
+
+  string contents;
+  ASSERT_TRUE(dump.GetContents(&contents));
+
+  istringstream minidump_stream(contents);
+  Minidump minidump(minidump_stream);
+  ASSERT_TRUE(minidump.Read());
+  ASSERT_EQ(2U, minidump.GetDirectoryEntryCount());
+
+  // This should succeed even though the thread has no stack memory.
+  MinidumpThreadList* thread_list = minidump.GetThreadList();
+  ASSERT_TRUE(thread_list != NULL);
+  ASSERT_EQ(1U, thread_list->thread_count());
+
+  MinidumpThread* md_thread = thread_list->GetThreadAtIndex(0);
+  ASSERT_TRUE(md_thread != NULL);
+
+  uint32_t thread_id;
+  ASSERT_TRUE(md_thread->GetThreadID(&thread_id));
+  ASSERT_EQ(0xa898f11bU, thread_id);
+  MinidumpMemoryRegion* md_stack = md_thread->GetMemory();
+  ASSERT_NE(reinterpret_cast<MinidumpMemoryRegion*>(NULL), md_stack);
+
+  MinidumpContext* md_context = md_thread->GetContext();
+  ASSERT_EQ(reinterpret_cast<MinidumpContext*>(NULL), md_context);
+}
+
+TEST(Dump, OneModule) {
+  static const MDVSFixedFileInfo fixed_file_info = {
+    0xb2fba33a,                           // signature
+    0x33d7a728,                           // struct_version
+    0x31afcb20,                           // file_version_hi
+    0xe51cdab1,                           // file_version_lo
+    0xd1ea6907,                           // product_version_hi
+    0x03032857,                           // product_version_lo
+    0x11bf71d7,                           // file_flags_mask
+    0x5fb8cdbf,                           // file_flags
+    0xe45d0d5d,                           // file_os
+    0x107d9562,                           // file_type
+    0x5a8844d4,                           // file_subtype
+    0xa8d30b20,                           // file_date_hi
+    0x651c3e4e                            // file_date_lo
+  };
+
+  Dump dump(0, kBigEndian);
+  String module_name(dump, "single module");
+  Module module(dump, 0xa90206ca83eb2852ULL, 0xada542bd,
+                module_name,
+                0xb1054d2a,
+                0x34571371,
+                fixed_file_info, // from synth_minidump_unittest_data.h
+                NULL, NULL);
+
+  dump.Add(&module);
+  dump.Add(&module_name);
+  dump.Finish();
+  
+  string contents;
+  ASSERT_TRUE(dump.GetContents(&contents));
+  istringstream minidump_stream(contents);
+  Minidump minidump(minidump_stream);
+  ASSERT_TRUE(minidump.Read());
+  ASSERT_EQ(1U, minidump.GetDirectoryEntryCount());
+
+  const MDRawDirectory *dir = minidump.GetDirectoryEntryAtIndex(0);
+  ASSERT_TRUE(dir != NULL);
+  EXPECT_EQ((uint32_t) MD_MODULE_LIST_STREAM, dir->stream_type);
+
+  MinidumpModuleList *md_module_list = minidump.GetModuleList();
+  ASSERT_TRUE(md_module_list != NULL);
+  ASSERT_EQ(1U, md_module_list->module_count());
+
+  const MinidumpModule *md_module = md_module_list->GetModuleAtIndex(0);
+  ASSERT_TRUE(md_module != NULL);
+  ASSERT_EQ(0xa90206ca83eb2852ULL, md_module->base_address());
+  ASSERT_EQ(0xada542bd, md_module->size());
+  ASSERT_EQ("single module", md_module->code_file());
+
+  const MDRawModule *md_raw_module = md_module->module();
+  ASSERT_TRUE(md_raw_module != NULL);
+  ASSERT_EQ(0xb1054d2aU, md_raw_module->time_date_stamp);
+  ASSERT_EQ(0x34571371U, md_raw_module->checksum);
+  ASSERT_TRUE(memcmp(&md_raw_module->version_info, &fixed_file_info,
+                     sizeof(fixed_file_info)) == 0);
+}
+
+TEST(Dump, OneSystemInfo) {
+  Dump dump(0, kLittleEndian);
+  String csd_version(dump, "Petulant Pierogi");
+  SystemInfo system_info(dump, SystemInfo::windows_x86, csd_version);
+
+  dump.Add(&system_info);
+  dump.Add(&csd_version);
+  dump.Finish();
+                         
+  string contents;
+  ASSERT_TRUE(dump.GetContents(&contents));
+  istringstream minidump_stream(contents);
+  Minidump minidump(minidump_stream);
+  ASSERT_TRUE(minidump.Read());
+  ASSERT_EQ(1U, minidump.GetDirectoryEntryCount());
+
+  const MDRawDirectory *dir = minidump.GetDirectoryEntryAtIndex(0);
+  ASSERT_TRUE(dir != NULL);
+  EXPECT_EQ((uint32_t) MD_SYSTEM_INFO_STREAM, dir->stream_type);
+
+  MinidumpSystemInfo *md_system_info = minidump.GetSystemInfo();
+  ASSERT_TRUE(md_system_info != NULL);
+  ASSERT_EQ("windows", md_system_info->GetOS());
+  ASSERT_EQ("x86", md_system_info->GetCPU());
+  ASSERT_EQ("Petulant Pierogi", *md_system_info->GetCSDVersion());
+  ASSERT_EQ("GenuineIntel", *md_system_info->GetCPUVendor());
+}
+
+TEST(Dump, BigDump) {
+  Dump dump(0, kLittleEndian);
+
+  // A SystemInfo stream.
+  String csd_version(dump, "Munificent Macaque");
+  SystemInfo system_info(dump, SystemInfo::windows_x86, csd_version);
+  dump.Add(&csd_version);
+  dump.Add(&system_info);
+
+  // Five threads!
+  Memory stack0(dump, 0x70b9ebfc);
+  stack0.Append("stack for thread zero");
+  MDRawContextX86 raw_context0;
+  raw_context0.context_flags = MD_CONTEXT_X86_INTEGER;
+  raw_context0.eip = 0xaf0709e4;
+  Context context0(dump, raw_context0);
+  Thread thread0(dump, 0xbbef4432, stack0, context0,
+                 0xd0377e7b, 0xdb8eb0cf, 0xd73bc314, 0x09d357bac7f9a163ULL);
+  dump.Add(&stack0);
+  dump.Add(&context0);
+  dump.Add(&thread0);
+
+  Memory stack1(dump, 0xf988cc45);
+  stack1.Append("stack for thread one");
+  MDRawContextX86 raw_context1;
+  raw_context1.context_flags = MD_CONTEXT_X86_INTEGER;
+  raw_context1.eip = 0xe4f56f81;
+  Context context1(dump, raw_context1);
+  Thread thread1(dump, 0x657c3f58, stack1, context1,
+                 0xa68fa182, 0x6f3cf8dd, 0xe3a78ccf, 0x78cc84775e4534bbULL);
+  dump.Add(&stack1);
+  dump.Add(&context1);
+  dump.Add(&thread1);
+
+  Memory stack2(dump, 0xc8a92e7c);
+  stack2.Append("stack for thread two");
+  MDRawContextX86 raw_context2;
+  raw_context2.context_flags = MD_CONTEXT_X86_INTEGER;
+  raw_context2.eip = 0xb336a438;
+  Context context2(dump, raw_context2);
+  Thread thread2(dump, 0xdf4b8a71, stack2, context2,
+                 0x674c26b6, 0x445d7120, 0x7e700c56, 0xd89bf778e7793e17ULL);
+  dump.Add(&stack2);
+  dump.Add(&context2);
+  dump.Add(&thread2);
+
+  Memory stack3(dump, 0x36d08e08);
+  stack3.Append("stack for thread three");
+  MDRawContextX86 raw_context3;
+  raw_context3.context_flags = MD_CONTEXT_X86_INTEGER;
+  raw_context3.eip = 0xdf99a60c;
+  Context context3(dump, raw_context3);
+  Thread thread3(dump, 0x86e6c341, stack3, context3,
+                 0x32dc5c55, 0x17a2aba8, 0xe0cc75e7, 0xa46393994dae83aeULL);
+  dump.Add(&stack3);
+  dump.Add(&context3);
+  dump.Add(&thread3);
+
+  Memory stack4(dump, 0x1e0ab4fa);
+  stack4.Append("stack for thread four");
+  MDRawContextX86 raw_context4;
+  raw_context4.context_flags = MD_CONTEXT_X86_INTEGER;
+  raw_context4.eip = 0xaa646267;
+  Context context4(dump, raw_context4);
+  Thread thread4(dump, 0x261a28d4, stack4, context4,
+                 0x6ebd389e, 0xa0cd4759, 0x30168846, 0x164f650a0cf39d35ULL);
+  dump.Add(&stack4);
+  dump.Add(&context4);
+  dump.Add(&thread4);
+
+  // Three modules!
+  String module1_name(dump, "module one");
+  Module module1(dump, 0xeb77da57b5d4cbdaULL, 0x83cd5a37, module1_name);
+  dump.Add(&module1_name);
+  dump.Add(&module1);
+
+  String module2_name(dump, "module two");
+  Module module2(dump, 0x8675884adfe5ac90ULL, 0xb11e4ea3, module2_name);
+  dump.Add(&module2_name);
+  dump.Add(&module2);
+
+  String module3_name(dump, "module three");
+  Module module3(dump, 0x95fc1544da321b6cULL, 0x7c2bf081, module3_name);
+  dump.Add(&module3_name);
+  dump.Add(&module3);
+
+  // Add one more memory region, on top of the five stacks.
+  Memory memory5(dump, 0x61979e828040e564ULL);
+  memory5.Append("contents of memory 5");
+  dump.Add(&memory5);
+
+  dump.Finish();
+
+  string contents;
+  ASSERT_TRUE(dump.GetContents(&contents));
+  istringstream minidump_stream(contents);
+  Minidump minidump(minidump_stream);
+  ASSERT_TRUE(minidump.Read());
+  ASSERT_EQ(4U, minidump.GetDirectoryEntryCount());
+
+  // Check the threads.
+  MinidumpThreadList *thread_list = minidump.GetThreadList();
+  ASSERT_TRUE(thread_list != NULL);
+  ASSERT_EQ(5U, thread_list->thread_count());
+  uint32_t thread_id;
+  ASSERT_TRUE(thread_list->GetThreadAtIndex(0)->GetThreadID(&thread_id));
+  ASSERT_EQ(0xbbef4432U, thread_id);
+  ASSERT_EQ(0x70b9ebfcU,
+            thread_list->GetThreadAtIndex(0)->GetMemory()->GetBase());
+  ASSERT_EQ(0xaf0709e4U,
+            thread_list->GetThreadAtIndex(0)->GetContext()->GetContextX86()
+            ->eip);
+
+  ASSERT_TRUE(thread_list->GetThreadAtIndex(1)->GetThreadID(&thread_id));
+  ASSERT_EQ(0x657c3f58U, thread_id);
+  ASSERT_EQ(0xf988cc45U,
+            thread_list->GetThreadAtIndex(1)->GetMemory()->GetBase());
+  ASSERT_EQ(0xe4f56f81U,
+            thread_list->GetThreadAtIndex(1)->GetContext()->GetContextX86()
+            ->eip);
+
+  ASSERT_TRUE(thread_list->GetThreadAtIndex(2)->GetThreadID(&thread_id));
+  ASSERT_EQ(0xdf4b8a71U, thread_id);
+  ASSERT_EQ(0xc8a92e7cU,
+            thread_list->GetThreadAtIndex(2)->GetMemory()->GetBase());
+  ASSERT_EQ(0xb336a438U,
+            thread_list->GetThreadAtIndex(2)->GetContext()->GetContextX86()
+            ->eip);
+
+  ASSERT_TRUE(thread_list->GetThreadAtIndex(3)->GetThreadID(&thread_id));
+  ASSERT_EQ(0x86e6c341U, thread_id);
+  ASSERT_EQ(0x36d08e08U,
+            thread_list->GetThreadAtIndex(3)->GetMemory()->GetBase());
+  ASSERT_EQ(0xdf99a60cU,
+            thread_list->GetThreadAtIndex(3)->GetContext()->GetContextX86()
+            ->eip);
+
+  ASSERT_TRUE(thread_list->GetThreadAtIndex(4)->GetThreadID(&thread_id));
+  ASSERT_EQ(0x261a28d4U, thread_id);
+  ASSERT_EQ(0x1e0ab4faU,
+            thread_list->GetThreadAtIndex(4)->GetMemory()->GetBase());
+  ASSERT_EQ(0xaa646267U,
+            thread_list->GetThreadAtIndex(4)->GetContext()->GetContextX86()
+            ->eip);
+
+  // Check the modules.
+  MinidumpModuleList *md_module_list = minidump.GetModuleList();
+  ASSERT_TRUE(md_module_list != NULL);
+  ASSERT_EQ(3U, md_module_list->module_count());
+  EXPECT_EQ(0xeb77da57b5d4cbdaULL,
+            md_module_list->GetModuleAtIndex(0)->base_address());
+  EXPECT_EQ(0x8675884adfe5ac90ULL,
+            md_module_list->GetModuleAtIndex(1)->base_address());
+  EXPECT_EQ(0x95fc1544da321b6cULL,
+            md_module_list->GetModuleAtIndex(2)->base_address());
+}
+
+TEST(Dump, OneMemoryInfo) {
+  Dump dump(0, kBigEndian);
+  Stream stream(dump, MD_MEMORY_INFO_LIST_STREAM);
+
+  // Add the MDRawMemoryInfoList header.
+  const uint64_t kNumberOfEntries = 1;
+  stream.D32(sizeof(MDRawMemoryInfoList))  // size_of_header
+        .D32(sizeof(MDRawMemoryInfo))      // size_of_entry
+        .D64(kNumberOfEntries);            // number_of_entries
+
+  
+  // Now add a MDRawMemoryInfo entry.
+  const uint64_t kBaseAddress = 0x1000;
+  const uint64_t kRegionSize = 0x2000;
+  stream.D64(kBaseAddress)                         // base_address
+        .D64(kBaseAddress)                         // allocation_base
+        .D32(MD_MEMORY_PROTECT_EXECUTE_READWRITE)  // allocation_protection
+        .D32(0)                                    // __alignment1
+        .D64(kRegionSize)                          // region_size
+        .D32(MD_MEMORY_STATE_COMMIT)               // state
+        .D32(MD_MEMORY_PROTECT_EXECUTE_READWRITE)  // protection
+        .D32(MD_MEMORY_TYPE_PRIVATE)               // type
+        .D32(0);                                   // __alignment2
+
+  dump.Add(&stream);
+  dump.Finish();
+
+  string contents;
+  ASSERT_TRUE(dump.GetContents(&contents));
+  istringstream minidump_stream(contents);
+  Minidump minidump(minidump_stream);
+  ASSERT_TRUE(minidump.Read());
+  ASSERT_EQ(1U, minidump.GetDirectoryEntryCount());
+
+  const MDRawDirectory *dir = minidump.GetDirectoryEntryAtIndex(0);
+  ASSERT_TRUE(dir != NULL);
+  EXPECT_EQ((uint32_t) MD_MEMORY_INFO_LIST_STREAM, dir->stream_type);
+
+  MinidumpMemoryInfoList *info_list = minidump.GetMemoryInfoList();
+  ASSERT_TRUE(info_list != NULL);
+  ASSERT_EQ(1U, info_list->info_count());
+
+  const MinidumpMemoryInfo *info1 = info_list->GetMemoryInfoAtIndex(0);
+  ASSERT_EQ(kBaseAddress, info1->GetBase());
+  ASSERT_EQ(kRegionSize, info1->GetSize());
+  ASSERT_TRUE(info1->IsExecutable());
+  ASSERT_TRUE(info1->IsWritable());
+
+  // Should get back the same memory region here.
+  const MinidumpMemoryInfo *info2 =
+      info_list->GetMemoryInfoForAddress(kBaseAddress + kRegionSize / 2);
+  ASSERT_EQ(kBaseAddress, info2->GetBase());
+  ASSERT_EQ(kRegionSize, info2->GetSize());
+}
+
+TEST(Dump, OneExceptionX86) {
+  Dump dump(0, kLittleEndian);
+
+  MDRawContextX86 raw_context;
+  raw_context.context_flags = MD_CONTEXT_X86_INTEGER | MD_CONTEXT_X86_CONTROL;
+  raw_context.edi = 0x3ecba80d;
+  raw_context.esi = 0x382583b9;
+  raw_context.ebx = 0x7fccc03f;
+  raw_context.edx = 0xf62f8ec2;
+  raw_context.ecx = 0x46a6a6a8;
+  raw_context.eax = 0x6a5025e2;
+  raw_context.ebp = 0xd9fabb4a;
+  raw_context.eip = 0x6913f540;
+  raw_context.cs = 0xbffe6eda;
+  raw_context.eflags = 0xb2ce1e2d;
+  raw_context.esp = 0x659caaa4;
+  raw_context.ss = 0x2e951ef7;
+  Context context(dump, raw_context);
+
+  Exception exception(dump, context,
+                      0x1234abcd, // thread id
+                      0xdcba4321, // exception code
+                      0xf0e0d0c0, // exception flags
+                      0x0919a9b9c9d9e9f9ULL); // exception address
+  
+  dump.Add(&context);
+  dump.Add(&exception);
+  dump.Finish();
+
+  string contents;
+  ASSERT_TRUE(dump.GetContents(&contents));
+
+  istringstream minidump_stream(contents);
+  Minidump minidump(minidump_stream);
+  ASSERT_TRUE(minidump.Read());
+  ASSERT_EQ(1U, minidump.GetDirectoryEntryCount());
+
+  MinidumpException *md_exception = minidump.GetException();
+  ASSERT_TRUE(md_exception != NULL);
+
+  uint32_t thread_id;
+  ASSERT_TRUE(md_exception->GetThreadID(&thread_id));
+  ASSERT_EQ(0x1234abcdU, thread_id);
+
+  const MDRawExceptionStream* raw_exception = md_exception->exception();
+  ASSERT_TRUE(raw_exception != NULL);
+  EXPECT_EQ(0xdcba4321, raw_exception->exception_record.exception_code);
+  EXPECT_EQ(0xf0e0d0c0, raw_exception->exception_record.exception_flags);
+  EXPECT_EQ(0x0919a9b9c9d9e9f9ULL,
+            raw_exception->exception_record.exception_address);
+
+  MinidumpContext *md_context = md_exception->GetContext();
+  ASSERT_TRUE(md_context != NULL);
+  ASSERT_EQ((uint32_t) MD_CONTEXT_X86, md_context->GetContextCPU());
+  const MDRawContextX86 *md_raw_context = md_context->GetContextX86();
+  ASSERT_TRUE(md_raw_context != NULL);
+  ASSERT_EQ((uint32_t) (MD_CONTEXT_X86_INTEGER | MD_CONTEXT_X86_CONTROL),
+            (md_raw_context->context_flags
+             & (MD_CONTEXT_X86_INTEGER | MD_CONTEXT_X86_CONTROL)));
+  EXPECT_EQ(0x3ecba80dU, raw_context.edi);
+  EXPECT_EQ(0x382583b9U, raw_context.esi);
+  EXPECT_EQ(0x7fccc03fU, raw_context.ebx);
+  EXPECT_EQ(0xf62f8ec2U, raw_context.edx);
+  EXPECT_EQ(0x46a6a6a8U, raw_context.ecx);
+  EXPECT_EQ(0x6a5025e2U, raw_context.eax);
+  EXPECT_EQ(0xd9fabb4aU, raw_context.ebp);
+  EXPECT_EQ(0x6913f540U, raw_context.eip);
+  EXPECT_EQ(0xbffe6edaU, raw_context.cs);
+  EXPECT_EQ(0xb2ce1e2dU, raw_context.eflags);
+  EXPECT_EQ(0x659caaa4U, raw_context.esp);
+  EXPECT_EQ(0x2e951ef7U, raw_context.ss);
+}
+
+TEST(Dump, OneExceptionX86XState) {
+  Dump dump(0, kLittleEndian);
+
+  MDRawContextX86 raw_context;
+  raw_context.context_flags = MD_CONTEXT_X86_INTEGER |
+    MD_CONTEXT_X86_CONTROL | MD_CONTEXT_X86_XSTATE;
+  raw_context.edi = 0x3ecba80d;
+  raw_context.esi = 0x382583b9;
+  raw_context.ebx = 0x7fccc03f;
+  raw_context.edx = 0xf62f8ec2;
+  raw_context.ecx = 0x46a6a6a8;
+  raw_context.eax = 0x6a5025e2;
+  raw_context.ebp = 0xd9fabb4a;
+  raw_context.eip = 0x6913f540;
+  raw_context.cs = 0xbffe6eda;
+  raw_context.eflags = 0xb2ce1e2d;
+  raw_context.esp = 0x659caaa4;
+  raw_context.ss = 0x2e951ef7;
+  Context context(dump, raw_context);
+
+  Exception exception(dump, context,
+                      0x1234abcd, // thread id
+                      0xdcba4321, // exception code
+                      0xf0e0d0c0, // exception flags
+                      0x0919a9b9c9d9e9f9ULL); // exception address
+  
+  dump.Add(&context);
+  dump.Add(&exception);
+  dump.Finish();
+
+  string contents;
+  ASSERT_TRUE(dump.GetContents(&contents));
+
+  istringstream minidump_stream(contents);
+  Minidump minidump(minidump_stream);
+  ASSERT_TRUE(minidump.Read());
+  ASSERT_EQ(1U, minidump.GetDirectoryEntryCount());
+
+  MinidumpException *md_exception = minidump.GetException();
+  ASSERT_TRUE(md_exception != NULL);
+
+  uint32_t thread_id;
+  ASSERT_TRUE(md_exception->GetThreadID(&thread_id));
+  ASSERT_EQ(0x1234abcdU, thread_id);
+
+  const MDRawExceptionStream* raw_exception = md_exception->exception();
+  ASSERT_TRUE(raw_exception != NULL);
+  EXPECT_EQ(0xdcba4321, raw_exception->exception_record.exception_code);
+  EXPECT_EQ(0xf0e0d0c0, raw_exception->exception_record.exception_flags);
+  EXPECT_EQ(0x0919a9b9c9d9e9f9ULL,
+            raw_exception->exception_record.exception_address);
+
+  MinidumpContext *md_context = md_exception->GetContext();
+  ASSERT_TRUE(md_context != NULL);
+  ASSERT_EQ((uint32_t) MD_CONTEXT_X86, md_context->GetContextCPU());
+  const MDRawContextX86 *md_raw_context = md_context->GetContextX86();
+  ASSERT_TRUE(md_raw_context != NULL);
+  ASSERT_EQ((uint32_t) (MD_CONTEXT_X86_INTEGER | MD_CONTEXT_X86_CONTROL),
+            (md_raw_context->context_flags
+             & (MD_CONTEXT_X86_INTEGER | MD_CONTEXT_X86_CONTROL)));
+  EXPECT_EQ(0x3ecba80dU, raw_context.edi);
+  EXPECT_EQ(0x382583b9U, raw_context.esi);
+  EXPECT_EQ(0x7fccc03fU, raw_context.ebx);
+  EXPECT_EQ(0xf62f8ec2U, raw_context.edx);
+  EXPECT_EQ(0x46a6a6a8U, raw_context.ecx);
+  EXPECT_EQ(0x6a5025e2U, raw_context.eax);
+  EXPECT_EQ(0xd9fabb4aU, raw_context.ebp);
+  EXPECT_EQ(0x6913f540U, raw_context.eip);
+  EXPECT_EQ(0xbffe6edaU, raw_context.cs);
+  EXPECT_EQ(0xb2ce1e2dU, raw_context.eflags);
+  EXPECT_EQ(0x659caaa4U, raw_context.esp);
+  EXPECT_EQ(0x2e951ef7U, raw_context.ss);
+}
+
+// Testing that the CPU type can be loaded from a system info stream when
+// the CPU flags are missing from the context_flags of an exception record
+TEST(Dump, OneExceptionX86NoCPUFlags) {
+  Dump dump(0, kLittleEndian);
+
+  MDRawContextX86 raw_context;
+  // Intentionally not setting CPU type in the context_flags
+  raw_context.context_flags = 0;
+  raw_context.edi = 0x3ecba80d;
+  raw_context.esi = 0x382583b9;
+  raw_context.ebx = 0x7fccc03f;
+  raw_context.edx = 0xf62f8ec2;
+  raw_context.ecx = 0x46a6a6a8;
+  raw_context.eax = 0x6a5025e2;
+  raw_context.ebp = 0xd9fabb4a;
+  raw_context.eip = 0x6913f540;
+  raw_context.cs = 0xbffe6eda;
+  raw_context.eflags = 0xb2ce1e2d;
+  raw_context.esp = 0x659caaa4;
+  raw_context.ss = 0x2e951ef7;
+  Context context(dump, raw_context);
+
+  Exception exception(dump, context,
+                      0x1234abcd, // thread id
+                      0xdcba4321, // exception code
+                      0xf0e0d0c0, // exception flags
+                      0x0919a9b9c9d9e9f9ULL); // exception address
+  
+  dump.Add(&context);
+  dump.Add(&exception);
+
+  // Add system info.  This is needed as an alternative source for CPU type
+  // information.  Note, that the CPU flags were intentionally skipped from
+  // the context_flags and this alternative source is required.
+  String csd_version(dump, "Service Pack 2");
+  SystemInfo system_info(dump, SystemInfo::windows_x86, csd_version);
+  dump.Add(&system_info);
+  dump.Add(&csd_version);
+
+  dump.Finish();
+
+  string contents;
+  ASSERT_TRUE(dump.GetContents(&contents));
+
+  istringstream minidump_stream(contents);
+  Minidump minidump(minidump_stream);
+  ASSERT_TRUE(minidump.Read());
+  ASSERT_EQ(2U, minidump.GetDirectoryEntryCount());
+
+  MinidumpException *md_exception = minidump.GetException();
+  ASSERT_TRUE(md_exception != NULL);
+
+  uint32_t thread_id;
+  ASSERT_TRUE(md_exception->GetThreadID(&thread_id));
+  ASSERT_EQ(0x1234abcdU, thread_id);
+
+  const MDRawExceptionStream* raw_exception = md_exception->exception();
+  ASSERT_TRUE(raw_exception != NULL);
+  EXPECT_EQ(0xdcba4321, raw_exception->exception_record.exception_code);
+  EXPECT_EQ(0xf0e0d0c0, raw_exception->exception_record.exception_flags);
+  EXPECT_EQ(0x0919a9b9c9d9e9f9ULL,
+            raw_exception->exception_record.exception_address);
+
+  MinidumpContext *md_context = md_exception->GetContext();
+  ASSERT_TRUE(md_context != NULL);
+
+  ASSERT_EQ((uint32_t) MD_CONTEXT_X86, md_context->GetContextCPU());
+  const MDRawContextX86 *md_raw_context = md_context->GetContextX86();
+  ASSERT_TRUE(md_raw_context != NULL);
+
+  // Even though the CPU flags were missing from the context_flags, the
+  // GetContext call above is expected to load the missing CPU flags from the
+  // system info stream and set the CPU type bits in context_flags.
+  ASSERT_EQ((uint32_t) (MD_CONTEXT_X86), md_raw_context->context_flags);
+
+  EXPECT_EQ(0x3ecba80dU, raw_context.edi);
+  EXPECT_EQ(0x382583b9U, raw_context.esi);
+  EXPECT_EQ(0x7fccc03fU, raw_context.ebx);
+  EXPECT_EQ(0xf62f8ec2U, raw_context.edx);
+  EXPECT_EQ(0x46a6a6a8U, raw_context.ecx);
+  EXPECT_EQ(0x6a5025e2U, raw_context.eax);
+  EXPECT_EQ(0xd9fabb4aU, raw_context.ebp);
+  EXPECT_EQ(0x6913f540U, raw_context.eip);
+  EXPECT_EQ(0xbffe6edaU, raw_context.cs);
+  EXPECT_EQ(0xb2ce1e2dU, raw_context.eflags);
+  EXPECT_EQ(0x659caaa4U, raw_context.esp);
+  EXPECT_EQ(0x2e951ef7U, raw_context.ss);
+}
+
+// This test covers a scenario where a dump contains an exception but the
+// context record of the exception is missing the CPU type information in its
+// context_flags.  The dump has no system info stream so it is imposible to
+// deduce the CPU type, hence the context record is unusable.
+TEST(Dump, OneExceptionX86NoCPUFlagsNoSystemInfo) {
+  Dump dump(0, kLittleEndian);
+
+  MDRawContextX86 raw_context;
+  // Intentionally not setting CPU type in the context_flags
+  raw_context.context_flags = 0;
+  raw_context.edi = 0x3ecba80d;
+  raw_context.esi = 0x382583b9;
+  raw_context.ebx = 0x7fccc03f;
+  raw_context.edx = 0xf62f8ec2;
+  raw_context.ecx = 0x46a6a6a8;
+  raw_context.eax = 0x6a5025e2;
+  raw_context.ebp = 0xd9fabb4a;
+  raw_context.eip = 0x6913f540;
+  raw_context.cs = 0xbffe6eda;
+  raw_context.eflags = 0xb2ce1e2d;
+  raw_context.esp = 0x659caaa4;
+  raw_context.ss = 0x2e951ef7;
+  Context context(dump, raw_context);
+
+  Exception exception(dump, context,
+                      0x1234abcd, // thread id
+                      0xdcba4321, // exception code
+                      0xf0e0d0c0, // exception flags
+                      0x0919a9b9c9d9e9f9ULL); // exception address
+  
+  dump.Add(&context);
+  dump.Add(&exception);
+  dump.Finish();
+
+  string contents;
+  ASSERT_TRUE(dump.GetContents(&contents));
+
+  istringstream minidump_stream(contents);
+  Minidump minidump(minidump_stream);
+  ASSERT_TRUE(minidump.Read());
+  ASSERT_EQ(1U, minidump.GetDirectoryEntryCount());
+
+  MinidumpException *md_exception = minidump.GetException();
+  ASSERT_TRUE(md_exception != NULL);
+
+  uint32_t thread_id;
+  ASSERT_TRUE(md_exception->GetThreadID(&thread_id));
+  ASSERT_EQ(0x1234abcdU, thread_id);
+
+  const MDRawExceptionStream* raw_exception = md_exception->exception();
+  ASSERT_TRUE(raw_exception != NULL);
+  EXPECT_EQ(0xdcba4321, raw_exception->exception_record.exception_code);
+  EXPECT_EQ(0xf0e0d0c0, raw_exception->exception_record.exception_flags);
+  EXPECT_EQ(0x0919a9b9c9d9e9f9ULL,
+            raw_exception->exception_record.exception_address);
+
+  // The context record of the exception is unusable because the context_flags
+  // don't have CPU type information and at the same time the minidump lacks
+  // system info stream so it is impossible to deduce the CPU type.
+  MinidumpContext *md_context = md_exception->GetContext();
+  ASSERT_EQ(NULL, md_context);
+}
+
+TEST(Dump, OneExceptionARM) {
+  Dump dump(0, kLittleEndian);
+
+  MDRawContextARM raw_context;
+  raw_context.context_flags = MD_CONTEXT_ARM_INTEGER;
+  raw_context.iregs[0] = 0x3ecba80d;
+  raw_context.iregs[1] = 0x382583b9;
+  raw_context.iregs[2] = 0x7fccc03f;
+  raw_context.iregs[3] = 0xf62f8ec2;
+  raw_context.iregs[4] = 0x46a6a6a8;
+  raw_context.iregs[5] = 0x6a5025e2;
+  raw_context.iregs[6] = 0xd9fabb4a;
+  raw_context.iregs[7] = 0x6913f540;
+  raw_context.iregs[8] = 0xbffe6eda;
+  raw_context.iregs[9] = 0xb2ce1e2d;
+  raw_context.iregs[10] = 0x659caaa4;
+  raw_context.iregs[11] = 0xf0e0d0c0;
+  raw_context.iregs[12] = 0xa9b8c7d6;
+  raw_context.iregs[13] = 0x12345678;
+  raw_context.iregs[14] = 0xabcd1234;
+  raw_context.iregs[15] = 0x10203040;
+  raw_context.cpsr = 0x2e951ef7;
+  Context context(dump, raw_context);
+
+  Exception exception(dump, context,
+                      0x1234abcd, // thread id
+                      0xdcba4321, // exception code
+                      0xf0e0d0c0, // exception flags
+                      0x0919a9b9c9d9e9f9ULL); // exception address
+  
+  dump.Add(&context);
+  dump.Add(&exception);
+  dump.Finish();
+
+  string contents;
+  ASSERT_TRUE(dump.GetContents(&contents));
+
+  istringstream minidump_stream(contents);
+  Minidump minidump(minidump_stream);
+  ASSERT_TRUE(minidump.Read());
+  ASSERT_EQ(1U, minidump.GetDirectoryEntryCount());
+
+  MinidumpException *md_exception = minidump.GetException();
+  ASSERT_TRUE(md_exception != NULL);
+
+  uint32_t thread_id;
+  ASSERT_TRUE(md_exception->GetThreadID(&thread_id));
+  ASSERT_EQ(0x1234abcdU, thread_id);
+
+  const MDRawExceptionStream* raw_exception = md_exception->exception();
+  ASSERT_TRUE(raw_exception != NULL);
+  EXPECT_EQ(0xdcba4321, raw_exception->exception_record.exception_code);
+  EXPECT_EQ(0xf0e0d0c0, raw_exception->exception_record.exception_flags);
+  EXPECT_EQ(0x0919a9b9c9d9e9f9ULL,
+            raw_exception->exception_record.exception_address);
+
+  MinidumpContext *md_context = md_exception->GetContext();
+  ASSERT_TRUE(md_context != NULL);
+  ASSERT_EQ((uint32_t) MD_CONTEXT_ARM, md_context->GetContextCPU());
+  const MDRawContextARM *md_raw_context = md_context->GetContextARM();
+  ASSERT_TRUE(md_raw_context != NULL);
+  ASSERT_EQ((uint32_t) MD_CONTEXT_ARM_INTEGER,
+            (md_raw_context->context_flags
+             & MD_CONTEXT_ARM_INTEGER));
+  EXPECT_EQ(0x3ecba80dU, raw_context.iregs[0]);
+  EXPECT_EQ(0x382583b9U, raw_context.iregs[1]);
+  EXPECT_EQ(0x7fccc03fU, raw_context.iregs[2]);
+  EXPECT_EQ(0xf62f8ec2U, raw_context.iregs[3]);
+  EXPECT_EQ(0x46a6a6a8U, raw_context.iregs[4]);
+  EXPECT_EQ(0x6a5025e2U, raw_context.iregs[5]);
+  EXPECT_EQ(0xd9fabb4aU, raw_context.iregs[6]);
+  EXPECT_EQ(0x6913f540U, raw_context.iregs[7]);
+  EXPECT_EQ(0xbffe6edaU, raw_context.iregs[8]);
+  EXPECT_EQ(0xb2ce1e2dU, raw_context.iregs[9]);
+  EXPECT_EQ(0x659caaa4U, raw_context.iregs[10]);
+  EXPECT_EQ(0xf0e0d0c0U, raw_context.iregs[11]);
+  EXPECT_EQ(0xa9b8c7d6U, raw_context.iregs[12]);
+  EXPECT_EQ(0x12345678U, raw_context.iregs[13]);
+  EXPECT_EQ(0xabcd1234U, raw_context.iregs[14]);
+  EXPECT_EQ(0x10203040U, raw_context.iregs[15]);
+  EXPECT_EQ(0x2e951ef7U, raw_context.cpsr);
+}
+
+TEST(Dump, OneExceptionARMOldFlags) {
+  Dump dump(0, kLittleEndian);
+
+  MDRawContextARM raw_context;
+  // MD_CONTEXT_ARM_INTEGER, but with _OLD
+  raw_context.context_flags = MD_CONTEXT_ARM_OLD | 0x00000002;
+  raw_context.iregs[0] = 0x3ecba80d;
+  raw_context.iregs[1] = 0x382583b9;
+  raw_context.iregs[2] = 0x7fccc03f;
+  raw_context.iregs[3] = 0xf62f8ec2;
+  raw_context.iregs[4] = 0x46a6a6a8;
+  raw_context.iregs[5] = 0x6a5025e2;
+  raw_context.iregs[6] = 0xd9fabb4a;
+  raw_context.iregs[7] = 0x6913f540;
+  raw_context.iregs[8] = 0xbffe6eda;
+  raw_context.iregs[9] = 0xb2ce1e2d;
+  raw_context.iregs[10] = 0x659caaa4;
+  raw_context.iregs[11] = 0xf0e0d0c0;
+  raw_context.iregs[12] = 0xa9b8c7d6;
+  raw_context.iregs[13] = 0x12345678;
+  raw_context.iregs[14] = 0xabcd1234;
+  raw_context.iregs[15] = 0x10203040;
+  raw_context.cpsr = 0x2e951ef7;
+  Context context(dump, raw_context);
+
+  Exception exception(dump, context,
+                      0x1234abcd, // thread id
+                      0xdcba4321, // exception code
+                      0xf0e0d0c0, // exception flags
+                      0x0919a9b9c9d9e9f9ULL); // exception address
+  
+  dump.Add(&context);
+  dump.Add(&exception);
+  dump.Finish();
+
+  string contents;
+  ASSERT_TRUE(dump.GetContents(&contents));
+
+  istringstream minidump_stream(contents);
+  Minidump minidump(minidump_stream);
+  ASSERT_TRUE(minidump.Read());
+  ASSERT_EQ(1U, minidump.GetDirectoryEntryCount());
+
+  MinidumpException *md_exception = minidump.GetException();
+  ASSERT_TRUE(md_exception != NULL);
+
+  uint32_t thread_id;
+  ASSERT_TRUE(md_exception->GetThreadID(&thread_id));
+  ASSERT_EQ(0x1234abcdU, thread_id);
+
+  const MDRawExceptionStream* raw_exception = md_exception->exception();
+  ASSERT_TRUE(raw_exception != NULL);
+  EXPECT_EQ(0xdcba4321, raw_exception->exception_record.exception_code);
+  EXPECT_EQ(0xf0e0d0c0, raw_exception->exception_record.exception_flags);
+  EXPECT_EQ(0x0919a9b9c9d9e9f9ULL,
+            raw_exception->exception_record.exception_address);
+
+  MinidumpContext *md_context = md_exception->GetContext();
+  ASSERT_TRUE(md_context != NULL);
+  ASSERT_EQ((uint32_t) MD_CONTEXT_ARM, md_context->GetContextCPU());
+  const MDRawContextARM *md_raw_context = md_context->GetContextARM();
+  ASSERT_TRUE(md_raw_context != NULL);
+  ASSERT_EQ((uint32_t) MD_CONTEXT_ARM_INTEGER,
+            (md_raw_context->context_flags
+             & MD_CONTEXT_ARM_INTEGER));
+  EXPECT_EQ(0x3ecba80dU, raw_context.iregs[0]);
+  EXPECT_EQ(0x382583b9U, raw_context.iregs[1]);
+  EXPECT_EQ(0x7fccc03fU, raw_context.iregs[2]);
+  EXPECT_EQ(0xf62f8ec2U, raw_context.iregs[3]);
+  EXPECT_EQ(0x46a6a6a8U, raw_context.iregs[4]);
+  EXPECT_EQ(0x6a5025e2U, raw_context.iregs[5]);
+  EXPECT_EQ(0xd9fabb4aU, raw_context.iregs[6]);
+  EXPECT_EQ(0x6913f540U, raw_context.iregs[7]);
+  EXPECT_EQ(0xbffe6edaU, raw_context.iregs[8]);
+  EXPECT_EQ(0xb2ce1e2dU, raw_context.iregs[9]);
+  EXPECT_EQ(0x659caaa4U, raw_context.iregs[10]);
+  EXPECT_EQ(0xf0e0d0c0U, raw_context.iregs[11]);
+  EXPECT_EQ(0xa9b8c7d6U, raw_context.iregs[12]);
+  EXPECT_EQ(0x12345678U, raw_context.iregs[13]);
+  EXPECT_EQ(0xabcd1234U, raw_context.iregs[14]);
+  EXPECT_EQ(0x10203040U, raw_context.iregs[15]);
+  EXPECT_EQ(0x2e951ef7U, raw_context.cpsr);
+}
+
+TEST(Dump, OneExceptionMIPS) {
+  Dump dump(0, kLittleEndian);
+
+  MDRawContextMIPS raw_context;
+  raw_context.context_flags = MD_CONTEXT_MIPS_INTEGER;
+  raw_context.iregs[0] = 0x3ecba80d;
+  raw_context.iregs[1] = 0x382583b9;
+  raw_context.iregs[2] = 0x7fccc03f;
+  raw_context.iregs[3] = 0xf62f8ec2;
+  raw_context.iregs[4] = 0x46a6a6a8;
+  raw_context.iregs[5] = 0x6a5025e2;
+  raw_context.iregs[6] = 0xd9fabb4a;
+  raw_context.iregs[7] = 0x6913f540;
+  raw_context.iregs[8] = 0xbffe6eda;
+  raw_context.iregs[9] = 0xb2ce1e2d;
+  raw_context.iregs[10] = 0x659caaa4;
+  raw_context.iregs[11] = 0xf0e0d0c0;
+  raw_context.iregs[12] = 0xa9b8c7d6;
+  raw_context.iregs[13] = 0x12345678;
+  raw_context.iregs[14] = 0xabcd1234;
+  raw_context.iregs[15] = 0x10203040;
+  raw_context.iregs[16] = 0xa80d3ecb;
+  raw_context.iregs[17] = 0x83b93825;
+  raw_context.iregs[18] = 0xc03f7fcc;
+  raw_context.iregs[19] = 0x8ec2f62f;
+  raw_context.iregs[20] = 0xa6a846a6;
+  raw_context.iregs[21] = 0x25e26a50;
+  raw_context.iregs[22] = 0xbb4ad9fa;
+  raw_context.iregs[23] = 0xf5406913;
+  raw_context.iregs[24] = 0x6edabffe;
+  raw_context.iregs[25] = 0x1e2db2ce;
+  raw_context.iregs[26] = 0xaaa4659c;
+  raw_context.iregs[27] = 0xd0c0f0e0;
+  raw_context.iregs[28] = 0xc7d6a9b8;
+  raw_context.iregs[29] = 0x56781234;
+  raw_context.iregs[30] = 0x1234abcd;
+  raw_context.iregs[31] = 0x30401020;
+
+  Context context(dump, raw_context);
+
+  Exception exception(dump, context,
+                      0x1234abcd,  // Thread id.
+                      0xdcba4321,  // Exception code.
+                      0xf0e0d0c0,  // Exception flags.
+                      0x0919a9b9); // Exception address.
+  
+  dump.Add(&context);
+  dump.Add(&exception);
+  dump.Finish();
+
+  string contents;
+  ASSERT_TRUE(dump.GetContents(&contents));
+
+  istringstream minidump_stream(contents);
+  Minidump minidump(minidump_stream);
+  ASSERT_TRUE(minidump.Read());
+  ASSERT_EQ(1U, minidump.GetDirectoryEntryCount());
+
+  MinidumpException *md_exception = minidump.GetException();
+  ASSERT_TRUE(md_exception != NULL);
+
+  uint32_t thread_id;
+  ASSERT_TRUE(md_exception->GetThreadID(&thread_id));
+  ASSERT_EQ(0x1234abcdU, thread_id);
+
+  const MDRawExceptionStream* raw_exception = md_exception->exception();
+  ASSERT_TRUE(raw_exception != NULL);
+  EXPECT_EQ(0xdcba4321, raw_exception->exception_record.exception_code);
+  EXPECT_EQ(0xf0e0d0c0, raw_exception->exception_record.exception_flags);
+  EXPECT_EQ(0x0919a9b9U,
+            raw_exception->exception_record.exception_address);
+
+  MinidumpContext* md_context = md_exception->GetContext();
+  ASSERT_TRUE(md_context != NULL);
+  ASSERT_EQ((uint32_t) MD_CONTEXT_MIPS, md_context->GetContextCPU());
+  const MDRawContextMIPS* md_raw_context = md_context->GetContextMIPS();
+  ASSERT_TRUE(md_raw_context != NULL);
+  ASSERT_EQ((uint32_t) MD_CONTEXT_MIPS_INTEGER,
+            (md_raw_context->context_flags & MD_CONTEXT_MIPS_INTEGER));
+  EXPECT_EQ(0x3ecba80dU, raw_context.iregs[0]);
+  EXPECT_EQ(0x382583b9U, raw_context.iregs[1]);
+  EXPECT_EQ(0x7fccc03fU, raw_context.iregs[2]);
+  EXPECT_EQ(0xf62f8ec2U, raw_context.iregs[3]);
+  EXPECT_EQ(0x46a6a6a8U, raw_context.iregs[4]);
+  EXPECT_EQ(0x6a5025e2U, raw_context.iregs[5]);
+  EXPECT_EQ(0xd9fabb4aU, raw_context.iregs[6]);
+  EXPECT_EQ(0x6913f540U, raw_context.iregs[7]);
+  EXPECT_EQ(0xbffe6edaU, raw_context.iregs[8]);
+  EXPECT_EQ(0xb2ce1e2dU, raw_context.iregs[9]);
+  EXPECT_EQ(0x659caaa4U, raw_context.iregs[10]);
+  EXPECT_EQ(0xf0e0d0c0U, raw_context.iregs[11]);
+  EXPECT_EQ(0xa9b8c7d6U, raw_context.iregs[12]);
+  EXPECT_EQ(0x12345678U, raw_context.iregs[13]);
+  EXPECT_EQ(0xabcd1234U, raw_context.iregs[14]);
+  EXPECT_EQ(0x10203040U, raw_context.iregs[15]);
+  EXPECT_EQ(0xa80d3ecbU, raw_context.iregs[16]);
+  EXPECT_EQ(0x83b93825U, raw_context.iregs[17]);
+  EXPECT_EQ(0xc03f7fccU, raw_context.iregs[18]);
+  EXPECT_EQ(0x8ec2f62fU, raw_context.iregs[19]);
+  EXPECT_EQ(0xa6a846a6U, raw_context.iregs[20]);
+  EXPECT_EQ(0x25e26a50U, raw_context.iregs[21]);
+  EXPECT_EQ(0xbb4ad9faU, raw_context.iregs[22]);
+  EXPECT_EQ(0xf5406913U, raw_context.iregs[23]);
+  EXPECT_EQ(0x6edabffeU, raw_context.iregs[24]);
+  EXPECT_EQ(0x1e2db2ceU, raw_context.iregs[25]);
+  EXPECT_EQ(0xaaa4659cU, raw_context.iregs[26]);
+  EXPECT_EQ(0xd0c0f0e0U, raw_context.iregs[27]);
+  EXPECT_EQ(0xc7d6a9b8U, raw_context.iregs[28]);
+  EXPECT_EQ(0x56781234U, raw_context.iregs[29]);
+  EXPECT_EQ(0x1234abcdU, raw_context.iregs[30]);
+  EXPECT_EQ(0x30401020U, raw_context.iregs[31]);
+}
+
+}  // namespace
diff --git a/google-breakpad/src/processor/module_comparer.cc b/google-breakpad/src/processor/module_comparer.cc
new file mode 100644
index 0000000..025ab88
--- /dev/null
+++ b/google-breakpad/src/processor/module_comparer.cc
@@ -0,0 +1,302 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// module_comparer.cc: ModuleComparer implementation.
+// See module_comparer.h for documentation.
+//
+// Author: lambxsy@google.com (Siyang Xie)
+
+#include "processor/module_comparer.h"
+
+#include <map>
+#include <string>
+
+#include "common/scoped_ptr.h"
+#include "processor/basic_code_module.h"
+#include "processor/logging.h"
+
+#define ASSERT_TRUE(condition) \
+  if (!(condition)) { \
+    BPLOG(ERROR) << "FAIL: " << #condition << " @ " \
+                 << __FILE__ << ":" << __LINE__; \
+    return false; \
+  }
+
+#define ASSERT_FALSE(condition) ASSERT_TRUE(!(condition))
+
+namespace google_breakpad {
+
+bool ModuleComparer::Compare(const string &symbol_data) {
+  scoped_ptr<BasicModule> basic_module(new BasicModule("test_module"));
+  scoped_ptr<FastModule> fast_module(new FastModule("test_module"));
+
+  // Load symbol data into basic_module
+  scoped_array<char> buffer(new char[symbol_data.size() + 1]);
+  memcpy(buffer.get(), symbol_data.c_str(), symbol_data.size());
+  buffer.get()[symbol_data.size()] = '\0';
+  ASSERT_TRUE(basic_module->LoadMapFromMemory(buffer.get(),
+                                              symbol_data.size() + 1));
+  buffer.reset();
+
+  // Serialize BasicSourceLineResolver::Module.
+  unsigned int serialized_size = 0;
+  scoped_array<char> serialized_data(
+      serializer_.Serialize(*(basic_module.get()), &serialized_size));
+  ASSERT_TRUE(serialized_data.get());
+  BPLOG(INFO) << "Serialized size = " << serialized_size << " Bytes";
+
+  // Load FastSourceLineResolver::Module using serialized data.
+  ASSERT_TRUE(fast_module->LoadMapFromMemory(serialized_data.get(),
+                                             serialized_size));
+  ASSERT_TRUE(fast_module->IsCorrupt() == basic_module->IsCorrupt());
+
+  // Compare FastSourceLineResolver::Module with
+  // BasicSourceLineResolver::Module.
+  ASSERT_TRUE(CompareModule(basic_module.get(), fast_module.get()));
+
+  return true;
+}
+
+// Traversal the content of module and do comparison
+bool ModuleComparer::CompareModule(const BasicModule *basic_module,
+                                  const FastModule *fast_module) const {
+  // Compare name_.
+  ASSERT_TRUE(basic_module->name_ == fast_module->name_);
+
+  // Compare files_:
+  {
+    BasicModule::FileMap::const_iterator iter1 = basic_module->files_.begin();
+    FastModule::FileMap::iterator iter2 = fast_module->files_.begin();
+    while (iter1 != basic_module->files_.end()
+        && iter2 != fast_module->files_.end()) {
+      ASSERT_TRUE(iter1->first == iter2.GetKey());
+      string tmp(iter2.GetValuePtr());
+      ASSERT_TRUE(iter1->second == tmp);
+      ++iter1;
+      ++iter2;
+    }
+    ASSERT_TRUE(iter1 == basic_module->files_.end());
+    ASSERT_TRUE(iter2 == fast_module->files_.end());
+  }
+
+  // Compare functions_:
+  {
+    RangeMap<MemAddr, linked_ptr<BasicFunc> >::MapConstIterator iter1;
+    StaticRangeMap<MemAddr, FastFunc>::MapConstIterator iter2;
+    iter1 = basic_module->functions_.map_.begin();
+    iter2 = fast_module->functions_.map_.begin();
+    while (iter1 != basic_module->functions_.map_.end()
+        && iter2 != fast_module->functions_.map_.end()) {
+      ASSERT_TRUE(iter1->first == iter2.GetKey());
+      ASSERT_TRUE(iter1->second.base() == iter2.GetValuePtr()->base());
+      ASSERT_TRUE(CompareFunction(
+          iter1->second.entry().get(), iter2.GetValuePtr()->entryptr()));
+      ++iter1;
+      ++iter2;
+    }
+    ASSERT_TRUE(iter1 == basic_module->functions_.map_.end());
+    ASSERT_TRUE(iter2 == fast_module->functions_.map_.end());
+  }
+
+  // Compare public_symbols_:
+  {
+    AddressMap<MemAddr, linked_ptr<BasicPubSymbol> >::MapConstIterator iter1;
+    StaticAddressMap<MemAddr, FastPubSymbol>::MapConstIterator iter2;
+    iter1 = basic_module->public_symbols_.map_.begin();
+    iter2 = fast_module->public_symbols_.map_.begin();
+    while (iter1 != basic_module->public_symbols_.map_.end()
+          && iter2 != fast_module->public_symbols_.map_.end()) {
+      ASSERT_TRUE(iter1->first == iter2.GetKey());
+      ASSERT_TRUE(ComparePubSymbol(
+          iter1->second.get(), iter2.GetValuePtr()));
+      ++iter1;
+      ++iter2;
+    }
+    ASSERT_TRUE(iter1 == basic_module->public_symbols_.map_.end());
+    ASSERT_TRUE(iter2 == fast_module->public_symbols_.map_.end());
+  }
+
+  // Compare windows_frame_info_[]:
+  for (int i = 0; i < WindowsFrameInfo::STACK_INFO_LAST; ++i) {
+    ASSERT_TRUE(CompareCRM(&(basic_module->windows_frame_info_[i]),
+                           &(fast_module->windows_frame_info_[i])));
+  }
+
+  // Compare cfi_initial_rules_:
+  {
+    RangeMap<MemAddr, string>::MapConstIterator iter1;
+    StaticRangeMap<MemAddr, char>::MapConstIterator iter2;
+    iter1 = basic_module->cfi_initial_rules_.map_.begin();
+    iter2 = fast_module->cfi_initial_rules_.map_.begin();
+    while (iter1 != basic_module->cfi_initial_rules_.map_.end()
+        && iter2 != fast_module->cfi_initial_rules_.map_.end()) {
+      ASSERT_TRUE(iter1->first == iter2.GetKey());
+      ASSERT_TRUE(iter1->second.base() == iter2.GetValuePtr()->base());
+      string tmp(iter2.GetValuePtr()->entryptr());
+      ASSERT_TRUE(iter1->second.entry() == tmp);
+      ++iter1;
+      ++iter2;
+    }
+    ASSERT_TRUE(iter1 == basic_module->cfi_initial_rules_.map_.end());
+    ASSERT_TRUE(iter2 == fast_module->cfi_initial_rules_.map_.end());
+  }
+
+  // Compare cfi_delta_rules_:
+  {
+    map<MemAddr, string>::const_iterator iter1;
+    StaticMap<MemAddr, char>::iterator iter2;
+    iter1 = basic_module->cfi_delta_rules_.begin();
+    iter2 = fast_module->cfi_delta_rules_.begin();
+    while (iter1 != basic_module->cfi_delta_rules_.end()
+        && iter2 != fast_module->cfi_delta_rules_.end()) {
+      ASSERT_TRUE(iter1->first == iter2.GetKey());
+      string tmp(iter2.GetValuePtr());
+      ASSERT_TRUE(iter1->second == tmp);
+      ++iter1;
+      ++iter2;
+    }
+    ASSERT_TRUE(iter1 == basic_module->cfi_delta_rules_.end());
+    ASSERT_TRUE(iter2 == fast_module->cfi_delta_rules_.end());
+  }
+
+  return true;
+}
+
+bool ModuleComparer::CompareFunction(const BasicFunc *basic_func,
+                                    const FastFunc *fast_func_raw) const {
+  FastFunc* fast_func = new FastFunc();
+  fast_func->CopyFrom(fast_func_raw);
+  ASSERT_TRUE(basic_func->name == fast_func->name);
+  ASSERT_TRUE(basic_func->address == fast_func->address);
+  ASSERT_TRUE(basic_func->size == fast_func->size);
+
+  // compare range map of lines:
+  RangeMap<MemAddr, linked_ptr<BasicLine> >::MapConstIterator iter1;
+  StaticRangeMap<MemAddr, FastLine>::MapConstIterator iter2;
+  iter1 = basic_func->lines.map_.begin();
+  iter2 = fast_func->lines.map_.begin();
+  while (iter1 != basic_func->lines.map_.end()
+      && iter2 != fast_func->lines.map_.end()) {
+    ASSERT_TRUE(iter1->first == iter2.GetKey());
+    ASSERT_TRUE(iter1->second.base() == iter2.GetValuePtr()->base());
+    ASSERT_TRUE(CompareLine(iter1->second.entry().get(),
+                            iter2.GetValuePtr()->entryptr()));
+    ++iter1;
+    ++iter2;
+  }
+  ASSERT_TRUE(iter1 == basic_func->lines.map_.end());
+  ASSERT_TRUE(iter2 == fast_func->lines.map_.end());
+
+  delete fast_func;
+  return true;
+}
+
+bool ModuleComparer::CompareLine(const BasicLine *basic_line,
+                                const FastLine *fast_line_raw) const {
+  FastLine *fast_line = new FastLine;
+  fast_line->CopyFrom(fast_line_raw);
+
+  ASSERT_TRUE(basic_line->address == fast_line->address);
+  ASSERT_TRUE(basic_line->size == fast_line->size);
+  ASSERT_TRUE(basic_line->source_file_id == fast_line->source_file_id);
+  ASSERT_TRUE(basic_line->line == fast_line->line);
+
+  delete fast_line;
+  return true;
+}
+
+bool ModuleComparer::ComparePubSymbol(const BasicPubSymbol* basic_ps,
+                                     const FastPubSymbol* fastps_raw) const {
+  FastPubSymbol *fast_ps = new FastPubSymbol;
+  fast_ps->CopyFrom(fastps_raw);
+  ASSERT_TRUE(basic_ps->name == fast_ps->name);
+  ASSERT_TRUE(basic_ps->address == fast_ps->address);
+  ASSERT_TRUE(basic_ps->parameter_size == fast_ps->parameter_size);
+  delete fast_ps;
+  return true;
+}
+
+bool ModuleComparer::CompareWFI(const WindowsFrameInfo& wfi1,
+                               const WindowsFrameInfo& wfi2) const {
+  ASSERT_TRUE(wfi1.type_ == wfi2.type_);
+  ASSERT_TRUE(wfi1.valid == wfi2.valid);
+  ASSERT_TRUE(wfi1.prolog_size == wfi2.prolog_size);
+  ASSERT_TRUE(wfi1.epilog_size == wfi2.epilog_size);
+  ASSERT_TRUE(wfi1.parameter_size == wfi2.parameter_size);
+  ASSERT_TRUE(wfi1.saved_register_size == wfi2.saved_register_size);
+  ASSERT_TRUE(wfi1.local_size == wfi2.local_size);
+  ASSERT_TRUE(wfi1.max_stack_size == wfi2.max_stack_size);
+  ASSERT_TRUE(wfi1.allocates_base_pointer == wfi2.allocates_base_pointer);
+  ASSERT_TRUE(wfi1.program_string == wfi2.program_string);
+  return true;
+}
+
+// Compare ContainedRangeMap
+bool ModuleComparer::CompareCRM(
+    const ContainedRangeMap<MemAddr, linked_ptr<WFI> >* basic_crm,
+    const StaticContainedRangeMap<MemAddr, char>* fast_crm) const {
+  ASSERT_TRUE(basic_crm->base_ == fast_crm->base_);
+
+  if (!basic_crm->entry_.get() || !fast_crm->entry_ptr_) {
+    // empty entry:
+    ASSERT_TRUE(!basic_crm->entry_.get() && !fast_crm->entry_ptr_);
+  } else {
+    WFI newwfi;
+    newwfi.CopyFrom(fast_resolver_->CopyWFI(fast_crm->entry_ptr_));
+    ASSERT_TRUE(CompareWFI(*(basic_crm->entry_.get()), newwfi));
+  }
+
+  if ((!basic_crm->map_ || basic_crm->map_->empty())
+      || fast_crm->map_.empty()) {
+    ASSERT_TRUE((!basic_crm->map_ || basic_crm->map_->empty())
+               && fast_crm->map_.empty());
+  } else {
+    ContainedRangeMap<MemAddr, linked_ptr<WFI> >::MapConstIterator iter1;
+    StaticContainedRangeMap<MemAddr, char>::MapConstIterator iter2;
+    iter1 = basic_crm->map_->begin();
+    iter2 = fast_crm->map_.begin();
+    while (iter1 != basic_crm->map_->end()
+        && iter2 != fast_crm->map_.end()) {
+      ASSERT_TRUE(iter1->first == iter2.GetKey());
+      StaticContainedRangeMap<MemAddr, char> *child =
+          new StaticContainedRangeMap<MemAddr, char>(
+              reinterpret_cast<const char*>(iter2.GetValuePtr()));
+      ASSERT_TRUE(CompareCRM(iter1->second, child));
+      delete child;
+      ++iter1;
+      ++iter2;
+    }
+    ASSERT_TRUE(iter1 == basic_crm->map_->end());
+    ASSERT_TRUE(iter2 == fast_crm->map_.end());
+  }
+
+  return true;
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/processor/module_comparer.h b/google-breakpad/src/processor/module_comparer.h
new file mode 100644
index 0000000..fcbd517
--- /dev/null
+++ b/google-breakpad/src/processor/module_comparer.h
@@ -0,0 +1,98 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// module_comparer.h: ModuleComparer reads a string format of symbol file, and
+// loads the symbol into both BasicSourceLineResolver::Module and
+// FastSourceLineResolve::Module.  It then traverses both Modules and compare
+// the content of data to verify the correctness of new fast module.
+// ModuleCompare class is a tool to verify correctness of a loaded
+// FastSourceLineResolver::Module instance, i.e., in-memory representation of
+// parsed symbol.  ModuleComparer class should be used for testing purpose only,
+// e.g., in fast_source_line_resolver_unittest.
+//
+// Author: lambxsy@google.com (Siyang Xie)
+
+#ifndef PROCESSOR_MODULE_COMPARER_H__
+#define PROCESSOR_MODULE_COMPARER_H__
+
+#include <string>
+
+#include "processor/basic_source_line_resolver_types.h"
+#include "processor/fast_source_line_resolver_types.h"
+#include "processor/module_serializer.h"
+#include "processor/windows_frame_info.h"
+
+namespace google_breakpad {
+
+class ModuleComparer {
+ public:
+  ModuleComparer(): fast_resolver_(new FastSourceLineResolver),
+                   basic_resolver_(new BasicSourceLineResolver) { }
+  ~ModuleComparer() {
+    delete fast_resolver_;
+    delete basic_resolver_;
+  }
+
+  // BasicSourceLineResolver loads its module using the symbol data,
+  // ModuleSerializer serialize the loaded module into a memory chunk,
+  // FastSourceLineResolver loads its module using the serialized memory chunk,
+  // Then, traverse both modules together and compare underlying data
+  // return true if both modules contain exactly same data.
+  bool Compare(const string &symbol_data);
+
+ private:
+  typedef BasicSourceLineResolver::Module BasicModule;
+  typedef FastSourceLineResolver::Module FastModule;
+  typedef BasicSourceLineResolver::Function BasicFunc;
+  typedef FastSourceLineResolver::Function FastFunc;
+  typedef BasicSourceLineResolver::Line BasicLine;
+  typedef FastSourceLineResolver::Line FastLine;
+  typedef BasicSourceLineResolver::PublicSymbol BasicPubSymbol;
+  typedef FastSourceLineResolver::PublicSymbol FastPubSymbol;
+  typedef WindowsFrameInfo WFI;
+
+  bool CompareModule(const BasicModule *oldmodule,
+                     const FastModule *newmodule) const;
+  bool CompareFunction(const BasicFunc *oldfunc, const FastFunc *newfunc) const;
+  bool CompareLine(const BasicLine *oldline, const FastLine *newline) const;
+  bool ComparePubSymbol(const BasicPubSymbol*, const FastPubSymbol*) const;
+  bool CompareWFI(const WindowsFrameInfo&, const WindowsFrameInfo&) const;
+
+  // Compare ContainedRangeMap
+  bool CompareCRM(const ContainedRangeMap<MemAddr, linked_ptr<WFI> >*,
+                  const StaticContainedRangeMap<MemAddr, char>*) const;
+
+  FastSourceLineResolver *fast_resolver_;
+  BasicSourceLineResolver *basic_resolver_;
+  ModuleSerializer serializer_;
+};
+
+}  // namespace google_breakpad
+
+#endif  // PROCESSOR_MODULE_COMPARER_H__
diff --git a/google-breakpad/src/processor/module_factory.h b/google-breakpad/src/processor/module_factory.h
new file mode 100644
index 0000000..7aa7caa
--- /dev/null
+++ b/google-breakpad/src/processor/module_factory.h
@@ -0,0 +1,72 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// module_factory.h: ModuleFactory a factory that provides
+// an interface for creating a Module and deferring instantiation to subclasses
+// BasicModuleFactory and FastModuleFactory.
+
+// Author: Siyang Xie (lambxsy@google.com)
+
+#ifndef PROCESSOR_MODULE_FACTORY_H__
+#define PROCESSOR_MODULE_FACTORY_H__
+
+#include "processor/basic_source_line_resolver_types.h"
+#include "processor/fast_source_line_resolver_types.h"
+#include "processor/source_line_resolver_base_types.h"
+
+namespace google_breakpad {
+
+class ModuleFactory {
+ public:
+  virtual ~ModuleFactory() { };
+  virtual SourceLineResolverBase::Module* CreateModule(
+      const string &name) const = 0;
+};
+
+class BasicModuleFactory : public ModuleFactory {
+ public:
+  virtual ~BasicModuleFactory() { }
+  virtual BasicSourceLineResolver::Module* CreateModule(
+      const string &name) const {
+    return new BasicSourceLineResolver::Module(name);
+  }
+};
+
+class FastModuleFactory : public ModuleFactory {
+ public:
+  virtual ~FastModuleFactory() { }
+  virtual FastSourceLineResolver::Module* CreateModule(
+      const string &name) const {
+    return new FastSourceLineResolver::Module(name);
+  }
+};
+
+}  // namespace google_breakpad
+
+#endif  // PROCESSOR_MODULE_FACTORY_H__
diff --git a/google-breakpad/src/processor/module_serializer.cc b/google-breakpad/src/processor/module_serializer.cc
new file mode 100644
index 0000000..6ac60c1
--- /dev/null
+++ b/google-breakpad/src/processor/module_serializer.cc
@@ -0,0 +1,207 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// module_serializer.cc: ModuleSerializer implementation.
+//
+// See module_serializer.h for documentation.
+//
+// Author: Siyang Xie (lambxsy@google.com)
+
+#include "processor/module_serializer.h"
+
+#include <map>
+#include <string>
+
+#include "processor/basic_code_module.h"
+#include "processor/logging.h"
+
+namespace google_breakpad {
+
+// Definition of static member variable in SimplerSerializer<Funcion>, which
+// is declared in file "simple_serializer-inl.h"
+RangeMapSerializer< MemAddr, linked_ptr<BasicSourceLineResolver::Line> >
+SimpleSerializer<BasicSourceLineResolver::Function>::range_map_serializer_;
+
+size_t ModuleSerializer::SizeOf(const BasicSourceLineResolver::Module &module) {
+  size_t total_size_alloc_ = 0;
+
+  // Size of the "is_corrupt" flag.
+  total_size_alloc_ += SimpleSerializer<bool>::SizeOf(module.is_corrupt_);
+
+  // Compute memory size for each map component in Module class.
+  int map_index = 0;
+  map_sizes_[map_index++] = files_serializer_.SizeOf(module.files_);
+  map_sizes_[map_index++] = functions_serializer_.SizeOf(module.functions_);
+  map_sizes_[map_index++] = pubsym_serializer_.SizeOf(module.public_symbols_);
+  for (int i = 0; i < WindowsFrameInfo::STACK_INFO_LAST; ++i)
+   map_sizes_[map_index++] =
+       wfi_serializer_.SizeOf(&(module.windows_frame_info_[i]));
+  map_sizes_[map_index++] = cfi_init_rules_serializer_.SizeOf(
+     module.cfi_initial_rules_);
+  map_sizes_[map_index++] = cfi_delta_rules_serializer_.SizeOf(
+     module.cfi_delta_rules_);
+
+  // Header size.
+  total_size_alloc_ += kNumberMaps_ * sizeof(uint32_t);
+
+  for (int i = 0; i < kNumberMaps_; ++i) {
+    total_size_alloc_ += map_sizes_[i];
+  }
+
+  // Extra one byte for null terminator for C-string copy safety.
+  total_size_alloc_ += SimpleSerializer<char>::SizeOf(0);
+
+  return total_size_alloc_;
+}
+
+char *ModuleSerializer::Write(const BasicSourceLineResolver::Module &module,
+                              char *dest) {
+  // Write the is_corrupt flag.
+  dest = SimpleSerializer<bool>::Write(module.is_corrupt_, dest);
+  // Write header.
+  memcpy(dest, map_sizes_, kNumberMaps_ * sizeof(uint32_t));
+  dest += kNumberMaps_ * sizeof(uint32_t);
+  // Write each map.
+  dest = files_serializer_.Write(module.files_, dest);
+  dest = functions_serializer_.Write(module.functions_, dest);
+  dest = pubsym_serializer_.Write(module.public_symbols_, dest);
+  for (int i = 0; i < WindowsFrameInfo::STACK_INFO_LAST; ++i)
+    dest = wfi_serializer_.Write(&(module.windows_frame_info_[i]), dest);
+  dest = cfi_init_rules_serializer_.Write(module.cfi_initial_rules_, dest);
+  dest = cfi_delta_rules_serializer_.Write(module.cfi_delta_rules_, dest);
+  // Write a null terminator.
+  dest = SimpleSerializer<char>::Write(0, dest);
+  return dest;
+}
+
+char* ModuleSerializer::Serialize(
+    const BasicSourceLineResolver::Module &module, unsigned int *size) {
+  // Compute size of memory to allocate.
+  unsigned int size_to_alloc = SizeOf(module);
+
+  // Allocate memory for serialized data.
+  char *serialized_data = new char[size_to_alloc];
+  if (!serialized_data) {
+    BPLOG(ERROR) << "ModuleSerializer: memory allocation failed, "
+                 << "size to alloc: " << size_to_alloc;
+    if (size) *size = 0;
+    return NULL;
+  }
+
+  // Write serialized data to allocated memory chunk.
+  char *end_address = Write(module, serialized_data);
+  // Verify the allocated memory size is equal to the size of data been written.
+  unsigned int size_written =
+      static_cast<unsigned int>(end_address - serialized_data);
+  if (size_to_alloc != size_written) {
+    BPLOG(ERROR) << "size_to_alloc differs from size_written: "
+                   << size_to_alloc << " vs " << size_written;
+  }
+
+  // Set size and return the start address of memory chunk.
+  if (size)
+    *size = size_to_alloc;
+  return serialized_data;
+}
+
+bool ModuleSerializer::SerializeModuleAndLoadIntoFastResolver(
+    const BasicSourceLineResolver::ModuleMap::const_iterator &iter,
+    FastSourceLineResolver *fast_resolver) {
+  BPLOG(INFO) << "Converting symbol " << iter->first.c_str();
+
+  // Cast SourceLineResolverBase::Module* to BasicSourceLineResolver::Module*.
+  BasicSourceLineResolver::Module* basic_module =
+      dynamic_cast<BasicSourceLineResolver::Module*>(iter->second);
+
+  unsigned int size = 0;
+  scoped_array<char> symbol_data(Serialize(*basic_module, &size));
+  if (!symbol_data.get()) {
+    BPLOG(ERROR) << "Serialization failed for module: " << basic_module->name_;
+    return false;
+  }
+  BPLOG(INFO) << "Serialized Symbol Size " << size;
+
+  // Copy the data into string.
+  // Must pass string to LoadModuleUsingMapBuffer(), instead of passing char* to
+  // LoadModuleUsingMemoryBuffer(), becaused of data ownership/lifetime issue.
+  string symbol_data_string(symbol_data.get(), size);
+  symbol_data.reset();
+
+  scoped_ptr<CodeModule> code_module(
+      new BasicCodeModule(0, 0, iter->first, "", "", "", ""));
+
+  return fast_resolver->LoadModuleUsingMapBuffer(code_module.get(),
+                                                 symbol_data_string);
+}
+
+void ModuleSerializer::ConvertAllModules(
+    const BasicSourceLineResolver *basic_resolver,
+    FastSourceLineResolver *fast_resolver) {
+  // Check for NULL pointer.
+  if (!basic_resolver || !fast_resolver)
+    return;
+
+  // Traverse module list in basic resolver.
+  BasicSourceLineResolver::ModuleMap::const_iterator iter;
+  iter = basic_resolver->modules_->begin();
+  for (; iter != basic_resolver->modules_->end(); ++iter)
+    SerializeModuleAndLoadIntoFastResolver(iter, fast_resolver);
+}
+
+bool ModuleSerializer::ConvertOneModule(
+    const string &moduleid,
+    const BasicSourceLineResolver *basic_resolver,
+    FastSourceLineResolver *fast_resolver) {
+  // Check for NULL pointer.
+  if (!basic_resolver || !fast_resolver)
+    return false;
+
+  BasicSourceLineResolver::ModuleMap::const_iterator iter;
+  iter = basic_resolver->modules_->find(moduleid);
+  if (iter == basic_resolver->modules_->end())
+    return false;
+
+  return SerializeModuleAndLoadIntoFastResolver(iter, fast_resolver);
+}
+
+char* ModuleSerializer::SerializeSymbolFileData(
+    const string &symbol_data, unsigned int *size) {
+  scoped_ptr<BasicSourceLineResolver::Module> module(
+      new BasicSourceLineResolver::Module("no name"));
+  scoped_array<char> buffer(new char[symbol_data.size() + 1]);
+  memcpy(buffer.get(), symbol_data.c_str(), symbol_data.size());
+  buffer.get()[symbol_data.size()] = '\0';
+  if (!module->LoadMapFromMemory(buffer.get(), symbol_data.size() + 1)) {
+    return NULL;
+  }
+  buffer.reset(NULL);
+  return Serialize(*(module.get()), size);
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/processor/module_serializer.h b/google-breakpad/src/processor/module_serializer.h
new file mode 100644
index 0000000..effb009
--- /dev/null
+++ b/google-breakpad/src/processor/module_serializer.h
@@ -0,0 +1,127 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// module_serializer.h: ModuleSerializer serializes a loaded symbol,
+// i.e., a loaded BasicSouceLineResolver::Module instance, into a memory
+// chunk of data. The serialized data can be read and loaded by
+// FastSourceLineResolver without CPU & memory-intensive parsing.
+//
+// Author: Siyang Xie (lambxsy@google.com)
+
+#ifndef PROCESSOR_MODULE_SERIALIZER_H__
+#define PROCESSOR_MODULE_SERIALIZER_H__
+
+#include <map>
+#include <string>
+
+#include "google_breakpad/processor/basic_source_line_resolver.h"
+#include "google_breakpad/processor/fast_source_line_resolver.h"
+#include "processor/basic_source_line_resolver_types.h"
+#include "processor/fast_source_line_resolver_types.h"
+#include "processor/linked_ptr.h"
+#include "processor/map_serializers-inl.h"
+#include "processor/simple_serializer-inl.h"
+#include "processor/windows_frame_info.h"
+
+namespace google_breakpad {
+
+// ModuleSerializer serializes a loaded BasicSourceLineResolver::Module into a
+// chunk of memory data. ModuleSerializer also provides interface to compute
+// memory size of the serialized data, write serialized data directly into
+// memory, convert ASCII format symbol data into serialized binary data, and
+// convert loaded BasicSourceLineResolver::Module into
+// FastSourceLineResolver::Module.
+class ModuleSerializer {
+ public:
+  // Compute the size of memory required to serialize a module.  Return the
+  // total size needed for serialization.
+  size_t SizeOf(const BasicSourceLineResolver::Module &module);
+
+  // Write a module into an allocated memory chunk with required size.
+  // Return the "end" of data, i.e., the address after the final byte of data.
+  char* Write(const BasicSourceLineResolver::Module &module, char *dest);
+
+  // Serializes a loaded Module object into a chunk of memory data and returns
+  // the address of memory chunk.  If size != NULL, *size is set to the memory
+  // size allocated for the serialized data.
+  // Caller takes the ownership of the memory chunk (allocated on heap), and
+  // owner should call delete [] to free the memory after use.
+  char* Serialize(const BasicSourceLineResolver::Module &module,
+                  unsigned int *size = NULL);
+
+  // Given the string format symbol_data, produces a chunk of serialized data.
+  // Caller takes ownership of the serialized data (on heap), and owner should
+  // call delete [] to free the memory after use.
+  char* SerializeSymbolFileData(const string &symbol_data,
+                                unsigned int *size = NULL);
+
+  // Serializes one loaded module with given moduleid in the basic source line
+  // resolver, and loads the serialized data into the fast source line resolver.
+  // Return false if the basic source line doesn't have a module with the given
+  // moduleid.
+  bool ConvertOneModule(const string &moduleid,
+                        const BasicSourceLineResolver *basic_resolver,
+                        FastSourceLineResolver *fast_resolver);
+
+  // Serializes all the loaded modules in a basic source line resolver, and
+  // loads the serialized data into a fast source line resolver.
+  void ConvertAllModules(const BasicSourceLineResolver *basic_resolver,
+                         FastSourceLineResolver *fast_resolver);
+
+ private:
+  // Convenient type names.
+  typedef BasicSourceLineResolver::Line Line;
+  typedef BasicSourceLineResolver::Function Function;
+  typedef BasicSourceLineResolver::PublicSymbol PublicSymbol;
+
+  // Internal implementation for ConvertOneModule and ConvertAllModules methods.
+  bool SerializeModuleAndLoadIntoFastResolver(
+      const BasicSourceLineResolver::ModuleMap::const_iterator &iter,
+      FastSourceLineResolver *fast_resolver);
+
+  // Number of Maps that Module class contains.
+  static const int32_t kNumberMaps_ =
+      FastSourceLineResolver::Module::kNumberMaps_;
+
+  // Memory sizes required to serialize map components in Module.
+  uint32_t map_sizes_[kNumberMaps_];
+
+  // Serializers for each individual map component in Module class.
+  StdMapSerializer<int, string> files_serializer_;
+  RangeMapSerializer<MemAddr, linked_ptr<Function> > functions_serializer_;
+  AddressMapSerializer<MemAddr, linked_ptr<PublicSymbol> > pubsym_serializer_;
+  ContainedRangeMapSerializer<MemAddr,
+                              linked_ptr<WindowsFrameInfo> > wfi_serializer_;
+  RangeMapSerializer<MemAddr, string> cfi_init_rules_serializer_;
+  StdMapSerializer<MemAddr, string> cfi_delta_rules_serializer_;
+};
+
+}  // namespace google_breakpad
+
+#endif  // PROCESSOR_MODULE_SERIALIZER_H__
diff --git a/google-breakpad/src/processor/pathname_stripper.cc b/google-breakpad/src/processor/pathname_stripper.cc
new file mode 100644
index 0000000..839287b
--- /dev/null
+++ b/google-breakpad/src/processor/pathname_stripper.cc
@@ -0,0 +1,56 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// pathname_stripper.cc: Manipulates pathnames into their component parts.
+//
+// See pathname_stripper.h for documentation.
+//
+// Author: Mark Mentovai
+
+#include "processor/pathname_stripper.h"
+
+namespace google_breakpad {
+
+// static
+string PathnameStripper::File(const string &path) {
+  string::size_type slash = path.rfind('/');
+  string::size_type backslash = path.rfind('\\');
+
+  string::size_type file_start = 0;
+  if (slash != string::npos &&
+      (backslash == string::npos || slash > backslash)) {
+    file_start = slash + 1;
+  } else if (backslash != string::npos) {
+    file_start = backslash + 1;
+  }
+
+  return path.substr(file_start);
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/processor/pathname_stripper.h b/google-breakpad/src/processor/pathname_stripper.h
new file mode 100644
index 0000000..423ca0d
--- /dev/null
+++ b/google-breakpad/src/processor/pathname_stripper.h
@@ -0,0 +1,53 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// pathname_stripper.h: Manipulates pathnames into their component parts.
+//
+// Author: Mark Mentovai
+
+#ifndef PROCESSOR_PATHNAME_STRIPPER_H__
+#define PROCESSOR_PATHNAME_STRIPPER_H__
+
+#include <string>
+
+#include "common/using_std_string.h"
+
+namespace google_breakpad {
+
+class PathnameStripper {
+ public:
+  // Given path, a pathname with components separated by slashes (/) or
+  // backslashes (\), returns the trailing component, without any separator.
+  // If path ends in a separator character, returns an empty string.
+  static string File(const string &path);
+};
+
+}  // namespace google_breakpad
+
+#endif  // PROCESSOR_PATHNAME_STRIPPER_H__
diff --git a/google-breakpad/src/processor/pathname_stripper_unittest.cc b/google-breakpad/src/processor/pathname_stripper_unittest.cc
new file mode 100644
index 0000000..1bff4cb
--- /dev/null
+++ b/google-breakpad/src/processor/pathname_stripper_unittest.cc
@@ -0,0 +1,87 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include <stdio.h>
+
+#include "processor/pathname_stripper.h"
+#include "processor/logging.h"
+
+#define ASSERT_TRUE(condition) \
+  if (!(condition)) { \
+    fprintf(stderr, "FAIL: %s @ %s:%d\n", #condition, __FILE__, __LINE__); \
+    return false; \
+  }
+
+#define ASSERT_EQ(e1, e2) ASSERT_TRUE((e1) == (e2))
+
+namespace {
+
+using google_breakpad::PathnameStripper;
+
+static bool RunTests() {
+  ASSERT_EQ(PathnameStripper::File("/dir/file"), "file");
+  ASSERT_EQ(PathnameStripper::File("\\dir\\file"), "file");
+  ASSERT_EQ(PathnameStripper::File("/dir\\file"), "file");
+  ASSERT_EQ(PathnameStripper::File("\\dir/file"), "file");
+  ASSERT_EQ(PathnameStripper::File("dir/file"), "file");
+  ASSERT_EQ(PathnameStripper::File("dir\\file"), "file");
+  ASSERT_EQ(PathnameStripper::File("dir/\\file"), "file");
+  ASSERT_EQ(PathnameStripper::File("dir\\/file"), "file");
+  ASSERT_EQ(PathnameStripper::File("file"), "file");
+  ASSERT_EQ(PathnameStripper::File("dir/"), "");
+  ASSERT_EQ(PathnameStripper::File("dir\\"), "");
+  ASSERT_EQ(PathnameStripper::File("dir/dir/"), "");
+  ASSERT_EQ(PathnameStripper::File("dir\\dir\\"), "");
+  ASSERT_EQ(PathnameStripper::File("dir1/dir2/file"), "file");
+  ASSERT_EQ(PathnameStripper::File("dir1\\dir2\\file"), "file");
+  ASSERT_EQ(PathnameStripper::File("dir1/dir2\\file"), "file");
+  ASSERT_EQ(PathnameStripper::File("dir1\\dir2/file"), "file");
+  ASSERT_EQ(PathnameStripper::File(""), "");
+  ASSERT_EQ(PathnameStripper::File("1"), "1");
+  ASSERT_EQ(PathnameStripper::File("1/2"), "2");
+  ASSERT_EQ(PathnameStripper::File("1\\2"), "2");
+  ASSERT_EQ(PathnameStripper::File("/1/2"), "2");
+  ASSERT_EQ(PathnameStripper::File("\\1\\2"), "2");
+  ASSERT_EQ(PathnameStripper::File("dir//file"), "file");
+  ASSERT_EQ(PathnameStripper::File("dir\\\\file"), "file");
+  ASSERT_EQ(PathnameStripper::File("/dir//file"), "file");
+  ASSERT_EQ(PathnameStripper::File("\\dir\\\\file"), "file");
+  ASSERT_EQ(PathnameStripper::File("c:\\dir\\file"), "file");
+  ASSERT_EQ(PathnameStripper::File("c:\\dir\\file.ext"), "file.ext");
+
+  return true;
+}
+
+}  // namespace
+
+int main(int argc, char **argv) {
+  BPLOG_INIT(&argc, &argv);
+
+  return RunTests() ? 0 : 1;
+}
diff --git a/google-breakpad/src/processor/postfix_evaluator-inl.h b/google-breakpad/src/processor/postfix_evaluator-inl.h
new file mode 100644
index 0000000..d7dbeac
--- /dev/null
+++ b/google-breakpad/src/processor/postfix_evaluator-inl.h
@@ -0,0 +1,363 @@
+// -*- mode: c++ -*-
+
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// postfix_evaluator-inl.h: Postfix (reverse Polish) notation expression
+// evaluator.
+//
+// Documentation in postfix_evaluator.h.
+//
+// Author: Mark Mentovai
+
+#ifndef PROCESSOR_POSTFIX_EVALUATOR_INL_H__
+#define PROCESSOR_POSTFIX_EVALUATOR_INL_H__
+
+#include "processor/postfix_evaluator.h"
+
+#include <stdio.h>
+
+#include <sstream>
+
+#include "google_breakpad/processor/memory_region.h"
+#include "processor/logging.h"
+
+namespace google_breakpad {
+
+using std::istringstream;
+using std::ostringstream;
+
+
+// A small class used in Evaluate to make sure to clean up the stack
+// before returning failure.
+class AutoStackClearer {
+ public:
+  explicit AutoStackClearer(vector<string> *stack) : stack_(stack) {}
+  ~AutoStackClearer() { stack_->clear(); }
+
+ private:
+  vector<string> *stack_;
+};
+
+
+template<typename ValueType>
+bool PostfixEvaluator<ValueType>::EvaluateToken(
+    const string &token,
+    const string &expression,
+    DictionaryValidityType *assigned) {
+  // There are enough binary operations that do exactly the same thing
+  // (other than the specific operation, of course) that it makes sense
+  // to share as much code as possible.
+  enum BinaryOperation {
+    BINARY_OP_NONE = 0,
+    BINARY_OP_ADD,
+    BINARY_OP_SUBTRACT,
+    BINARY_OP_MULTIPLY,
+    BINARY_OP_DIVIDE_QUOTIENT,
+    BINARY_OP_DIVIDE_MODULUS,
+    BINARY_OP_ALIGN
+  };
+
+  BinaryOperation operation = BINARY_OP_NONE;
+  if (token == "+")
+    operation = BINARY_OP_ADD;
+  else if (token == "-")
+    operation = BINARY_OP_SUBTRACT;
+  else if (token == "*")
+    operation = BINARY_OP_MULTIPLY;
+  else if (token == "/")
+    operation = BINARY_OP_DIVIDE_QUOTIENT;
+  else if (token == "%")
+    operation = BINARY_OP_DIVIDE_MODULUS;
+  else if (token == "@")
+    operation = BINARY_OP_ALIGN;
+
+  if (operation != BINARY_OP_NONE) {
+    // Get the operands.
+    ValueType operand1 = ValueType();
+    ValueType operand2 = ValueType();
+    if (!PopValues(&operand1, &operand2)) {
+      BPLOG(ERROR) << "Could not PopValues to get two values for binary "
+                      "operation " << token << ": " << expression;
+      return false;
+    }
+
+    // Perform the operation.
+    ValueType result;
+    switch (operation) {
+      case BINARY_OP_ADD:
+        result = operand1 + operand2;
+        break;
+      case BINARY_OP_SUBTRACT:
+        result = operand1 - operand2;
+        break;
+      case BINARY_OP_MULTIPLY:
+        result = operand1 * operand2;
+        break;
+      case BINARY_OP_DIVIDE_QUOTIENT:
+        result = operand1 / operand2;
+        break;
+      case BINARY_OP_DIVIDE_MODULUS:
+        result = operand1 % operand2;
+        break;
+      case BINARY_OP_ALIGN:
+	result =
+	  operand1 & (static_cast<ValueType>(-1) ^ (operand2 - 1));
+        break;
+      case BINARY_OP_NONE:
+        // This will not happen, but compilers will want a default or
+        // BINARY_OP_NONE case.
+        BPLOG(ERROR) << "Not reached!";
+        return false;
+        break;
+    }
+
+    // Save the result.
+    PushValue(result);
+  } else if (token == "^") {
+    // ^ for unary dereference.  Can't dereference without memory.
+    if (!memory_) {
+      BPLOG(ERROR) << "Attempt to dereference without memory: " <<
+                      expression;
+      return false;
+    }
+
+    ValueType address;
+    if (!PopValue(&address)) {
+      BPLOG(ERROR) << "Could not PopValue to get value to derefence: " <<
+                      expression;
+      return false;
+    }
+
+    ValueType value;
+    if (!memory_->GetMemoryAtAddress(address, &value)) {
+      BPLOG(ERROR) << "Could not dereference memory at address " <<
+                      HexString(address) << ": " << expression;
+      return false;
+    }
+
+    PushValue(value);
+  } else if (token == "=") {
+    // = for assignment.
+    ValueType value;
+    if (!PopValue(&value)) {
+      BPLOG(INFO) << "Could not PopValue to get value to assign: " <<
+                     expression;
+      return false;
+    }
+
+    // Assignment is only meaningful when assigning into an identifier.
+    // The identifier must name a variable, not a constant.  Variables
+    // begin with '$'.
+    string identifier;
+    if (PopValueOrIdentifier(NULL, &identifier) != POP_RESULT_IDENTIFIER) {
+      BPLOG(ERROR) << "PopValueOrIdentifier returned a value, but an "
+                      "identifier is needed to assign " <<
+                      HexString(value) << ": " << expression;
+      return false;
+    }
+    if (identifier.empty() || identifier[0] != '$') {
+      BPLOG(ERROR) << "Can't assign " << HexString(value) << " to " <<
+                      identifier << ": " << expression;
+      return false;
+    }
+
+    (*dictionary_)[identifier] = value;
+    if (assigned)
+      (*assigned)[identifier] = true;
+  } else {
+    // The token is not an operator, it's a literal value or an identifier.
+    // Push it onto the stack as-is.  Use push_back instead of PushValue
+    // because PushValue pushes ValueType as a string, but token is already
+    // a string.
+    stack_.push_back(token);
+  }
+  return true;
+}
+
+template<typename ValueType>
+bool PostfixEvaluator<ValueType>::EvaluateInternal(
+    const string &expression,
+    DictionaryValidityType *assigned) {
+  // Tokenize, splitting on whitespace.
+  istringstream stream(expression);
+  string token;
+  while (stream >> token) {
+    // Normally, tokens are whitespace-separated, but occasionally, the
+    // assignment operator is smashed up against the next token, i.e.
+    // $T0 $ebp 128 + =$eip $T0 4 + ^ =$ebp $T0 ^ =
+    // This has been observed in program strings produced by MSVS 2010 in LTO
+    // mode.
+    if (token.size() > 1 && token[0] == '=') {
+      if (!EvaluateToken("=", expression, assigned)) {
+        return false;
+      }
+
+      if (!EvaluateToken(token.substr(1), expression, assigned)) {
+        return false;
+      }
+    } else if (!EvaluateToken(token, expression, assigned)) {
+      return false;
+    }
+  }
+
+  return true;
+}
+
+template<typename ValueType>
+bool PostfixEvaluator<ValueType>::Evaluate(const string &expression,
+                                           DictionaryValidityType *assigned) {
+  // Ensure that the stack is cleared before returning.
+  AutoStackClearer clearer(&stack_);
+
+  if (!EvaluateInternal(expression, assigned))
+    return false;
+
+  // If there's anything left on the stack, it indicates incomplete execution.
+  // This is a failure case.  If the stack is empty, evalution was complete
+  // and successful.
+  if (stack_.empty())
+    return true;
+
+  BPLOG(ERROR) << "Incomplete execution: " << expression;
+  return false;
+}
+
+template<typename ValueType>
+bool PostfixEvaluator<ValueType>::EvaluateForValue(const string &expression,
+                                                   ValueType *result) {
+  // Ensure that the stack is cleared before returning.
+  AutoStackClearer clearer(&stack_);
+
+  if (!EvaluateInternal(expression, NULL))
+    return false;
+
+  // A successful execution should leave exactly one value on the stack.
+  if (stack_.size() != 1) {
+    BPLOG(ERROR) << "Expression yielded bad number of results: "
+                 << "'" << expression << "'";
+    return false;
+  }
+
+  return PopValue(result);
+}
+
+template<typename ValueType>
+typename PostfixEvaluator<ValueType>::PopResult
+PostfixEvaluator<ValueType>::PopValueOrIdentifier(
+    ValueType *value, string *identifier) {
+  // There needs to be at least one element on the stack to pop.
+  if (!stack_.size())
+    return POP_RESULT_FAIL;
+
+  string token = stack_.back();
+  stack_.pop_back();
+
+  // First, try to treat the value as a literal. Literals may have leading
+  // '-' sign, and the entire remaining string must be parseable as
+  // ValueType. If this isn't possible, it can't be a literal, so treat it
+  // as an identifier instead.
+  //
+  // Some versions of the libstdc++, the GNU standard C++ library, have
+  // stream extractors for unsigned integer values that permit a leading
+  // '-' sign (6.0.13); others do not (6.0.9). Since we require it, we
+  // handle it explicitly here.
+  istringstream token_stream(token);
+  ValueType literal = ValueType();
+  bool negative;
+  if (token_stream.peek() == '-') {
+    negative = true;
+    token_stream.get();
+  } else {
+    negative = false;
+  }
+  if (token_stream >> literal && token_stream.peek() == EOF) {
+    if (value) {
+      *value = literal;
+    }
+    if (negative)
+      *value = -*value;
+    return POP_RESULT_VALUE;
+  } else {
+    if (identifier) {
+      *identifier = token;
+    }
+    return POP_RESULT_IDENTIFIER;
+  }
+}
+
+
+template<typename ValueType>
+bool PostfixEvaluator<ValueType>::PopValue(ValueType *value) {
+  ValueType literal = ValueType();
+  string token;
+  PopResult result;
+  if ((result = PopValueOrIdentifier(&literal, &token)) == POP_RESULT_FAIL) {
+    return false;
+  } else if (result == POP_RESULT_VALUE) {
+    // This is the easy case.
+    *value = literal;
+  } else {  // result == POP_RESULT_IDENTIFIER
+    // There was an identifier at the top of the stack.  Resolve it to a
+    // value by looking it up in the dictionary.
+    typename DictionaryType::const_iterator iterator =
+        dictionary_->find(token);
+    if (iterator == dictionary_->end()) {
+      // The identifier wasn't found in the dictionary.  Don't imply any
+      // default value, just fail.
+      BPLOG(INFO) << "Identifier " << token << " not in dictionary";
+      return false;
+    }
+
+    *value = iterator->second;
+  }
+
+  return true;
+}
+
+
+template<typename ValueType>
+bool PostfixEvaluator<ValueType>::PopValues(ValueType *value1,
+                                            ValueType *value2) {
+  return PopValue(value2) && PopValue(value1);
+}
+
+
+template<typename ValueType>
+void PostfixEvaluator<ValueType>::PushValue(const ValueType &value) {
+  ostringstream token_stream;
+  token_stream << value;
+  stack_.push_back(token_stream.str());
+}
+
+
+}  // namespace google_breakpad
+
+
+#endif  // PROCESSOR_POSTFIX_EVALUATOR_INL_H__
diff --git a/google-breakpad/src/processor/postfix_evaluator.h b/google-breakpad/src/processor/postfix_evaluator.h
new file mode 100644
index 0000000..94b6619
--- /dev/null
+++ b/google-breakpad/src/processor/postfix_evaluator.h
@@ -0,0 +1,179 @@
+// -*- mode: C++ -*-
+
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// postfix_evaluator.h: Postfix (reverse Polish) notation expression evaluator.
+//
+// PostfixEvaluator evaluates an expression, using the expression itself
+// in postfix (reverse Polish) notation and a dictionary mapping constants
+// and variables to their values.  The evaluator supports standard
+// arithmetic operations, assignment into variables, and when an optional
+// MemoryRange is provided, dereferencing.  (Any unary key-to-value operation
+// may be used with a MemoryRange implementation that returns the appropriate
+// values, but PostfixEvaluator was written with dereferencing in mind.)
+//
+// The expression language is simple.  Expressions are supplied as strings,
+// with operands and operators delimited by whitespace.  Operands may be
+// either literal values suitable for ValueType, or constants or variables,
+// which reference the dictionary.  The supported binary operators are +
+// (addition), - (subtraction), * (multiplication), / (quotient of division),
+// % (modulus of division), and @ (data alignment). The alignment operator (@)
+// accepts a value and an alignment size, and produces a result that is a
+// multiple of the alignment size by truncating the input value.
+// The unary ^ (dereference) operator is also provided.  These operators
+// allow any operand to be either a literal value, constant, or variable.
+// Assignment (=) of any type of operand into a variable is also supported.
+//
+// The dictionary is provided as a map with string keys.  Keys beginning
+// with the '$' character are treated as variables.  All other keys are
+// treated as constants.  Any results must be assigned into variables in the
+// dictionary.  These variables do not need to exist prior to calling
+// Evaluate, unless used in an expression prior to being assigned to.  The
+// internal stack state is not made available after evaluation, and any
+// values remaining on the stack are treated as evidence of incomplete
+// execution and cause the evaluator to indicate failure.
+//
+// PostfixEvaluator is intended to support evaluation of "program strings"
+// obtained from MSVC frame data debugging information in pdb files as
+// returned by the DIA APIs.
+//
+// Author: Mark Mentovai
+
+#ifndef PROCESSOR_POSTFIX_EVALUATOR_H__
+#define PROCESSOR_POSTFIX_EVALUATOR_H__
+
+
+#include <map>
+#include <string>
+#include <vector>
+
+#include "common/using_std_string.h"
+
+namespace google_breakpad {
+
+using std::map;
+using std::vector;
+
+class MemoryRegion;
+
+template<typename ValueType>
+class PostfixEvaluator {
+ public:
+  typedef map<string, ValueType> DictionaryType;
+  typedef map<string, bool> DictionaryValidityType;
+
+  // Create a PostfixEvaluator object that may be used (with Evaluate) on
+  // one or more expressions.  PostfixEvaluator does not take ownership of
+  // either argument.  |memory| may be NULL, in which case dereferencing
+  // (^) will not be supported.  |dictionary| may be NULL, but evaluation
+  // will fail in that case unless set_dictionary is used before calling
+  // Evaluate.
+  PostfixEvaluator(DictionaryType *dictionary, const MemoryRegion *memory)
+      : dictionary_(dictionary), memory_(memory), stack_() {}
+
+  // Evaluate the expression, starting with an empty stack. The results of
+  // execution will be stored in one (or more) variables in the dictionary.
+  // Returns false if any failures occur during execution, leaving
+  // variables in the dictionary in an indeterminate state. If assigned is
+  // non-NULL, any keys set in the dictionary as a result of evaluation
+  // will also be set to true in assigned, providing a way to determine if
+  // an expression modifies any of its input variables.
+  bool Evaluate(const string &expression, DictionaryValidityType *assigned);
+
+  // Like Evaluate, but provides the value left on the stack to the
+  // caller. If evaluation succeeds and leaves exactly one value on
+  // the stack, pop that value, store it in *result, and return true.
+  // Otherwise, return false.
+  bool EvaluateForValue(const string &expression, ValueType *result);
+
+  DictionaryType* dictionary() const { return dictionary_; }
+
+  // Reset the dictionary.  PostfixEvaluator does not take ownership.
+  void set_dictionary(DictionaryType *dictionary) {dictionary_ = dictionary; }
+
+ private:
+  // Return values for PopValueOrIdentifier
+  enum PopResult {
+    POP_RESULT_FAIL = 0,
+    POP_RESULT_VALUE,
+    POP_RESULT_IDENTIFIER
+  };
+
+  // Retrieves the topmost literal value, constant, or variable from the
+  // stack.  Returns POP_RESULT_VALUE if the topmost entry is a literal
+  // value, and sets |value| accordingly.  Returns POP_RESULT_IDENTIFIER
+  // if the topmost entry is a constant or variable identifier, and sets
+  // |identifier| accordingly.  Returns POP_RESULT_FAIL on failure, such
+  // as when the stack is empty.
+  PopResult PopValueOrIdentifier(ValueType *value, string *identifier);
+
+  // Retrieves the topmost value on the stack.  If the topmost entry is
+  // an identifier, the dictionary is queried for the identifier's value.
+  // Returns false on failure, such as when the stack is empty or when
+  // a nonexistent identifier is named.
+  bool PopValue(ValueType *value);
+
+  // Retrieves the top two values on the stack, in the style of PopValue.
+  // value2 is popped before value1, so that value1 corresponds to the
+  // entry that was pushed prior to value2.  Returns false on failure.
+  bool PopValues(ValueType *value1, ValueType *value2);
+
+  // Pushes a new value onto the stack.
+  void PushValue(const ValueType &value);
+
+  // Evaluate expression, updating *assigned if it is non-zero. Return
+  // true if evaluation completes successfully. Do not clear the stack
+  // upon successful evaluation.
+  bool EvaluateInternal(const string &expression,
+                        DictionaryValidityType *assigned);
+
+  bool EvaluateToken(const string &token,
+                     const string &expression,
+                     DictionaryValidityType *assigned);
+
+  // The dictionary mapping constant and variable identifiers (strings) to
+  // values.  Keys beginning with '$' are treated as variable names, and
+  // PostfixEvaluator is free to create and modify these keys.  Weak pointer.
+  DictionaryType *dictionary_;
+
+  // If non-NULL, the MemoryRegion used for dereference (^) operations.
+  // If NULL, dereferencing is unsupported and will fail.  Weak pointer.
+  const MemoryRegion *memory_;
+
+  // The stack contains state information as execution progresses.  Values
+  // are pushed on to it as the expression string is read and as operations
+  // yield values; values are popped when used as operands to operators.
+  vector<string> stack_;
+};
+
+}  // namespace google_breakpad
+
+
+#endif  // PROCESSOR_POSTFIX_EVALUATOR_H__
diff --git a/google-breakpad/src/processor/postfix_evaluator_unittest.cc b/google-breakpad/src/processor/postfix_evaluator_unittest.cc
new file mode 100644
index 0000000..f118982
--- /dev/null
+++ b/google-breakpad/src/processor/postfix_evaluator_unittest.cc
@@ -0,0 +1,403 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// postfix_evaluator_unittest.cc: Unit tests for PostfixEvaluator.
+//
+// Author: Mark Mentovai
+
+#include <assert.h>
+#include <stdio.h>
+
+#include <map>
+#include <string>
+
+#include "processor/postfix_evaluator-inl.h"
+
+#include "common/using_std_string.h"
+#include "google_breakpad/common/breakpad_types.h"
+#include "google_breakpad/processor/memory_region.h"
+#include "processor/logging.h"
+
+
+namespace {
+
+
+using std::map;
+using google_breakpad::MemoryRegion;
+using google_breakpad::PostfixEvaluator;
+
+
+// FakeMemoryRegion is used to test PostfixEvaluator's dereference (^)
+// operator.  The result of dereferencing a value is one greater than
+// the value.
+class FakeMemoryRegion : public MemoryRegion {
+ public:
+  virtual uint64_t GetBase() const { return 0; }
+  virtual uint32_t GetSize() const { return 0; }
+  virtual bool GetMemoryAtAddress(uint64_t address, uint8_t  *value) const {
+    *value = address + 1;
+    return true;
+  }
+  virtual bool GetMemoryAtAddress(uint64_t address, uint16_t *value) const {
+    *value = address + 1;
+    return true;
+  }
+  virtual bool GetMemoryAtAddress(uint64_t address, uint32_t *value) const {
+    *value = address + 1;
+    return true;
+  }
+  virtual bool GetMemoryAtAddress(uint64_t address, uint64_t *value) const {
+    *value = address + 1;
+    return true;
+  }
+  virtual void Print() const {
+    assert(false);
+  }
+};
+
+
+struct EvaluateTest {
+  // Expression passed to PostfixEvaluator::Evaluate.
+  const string expression;
+
+  // True if the expression is expected to be evaluable, false if evaluation
+  // is expected to fail.
+  bool evaluable;
+};
+
+
+struct EvaluateTestSet {
+  // The dictionary used for all tests in the set.
+  PostfixEvaluator<unsigned int>::DictionaryType *dictionary;
+
+  // The list of tests.
+  const EvaluateTest *evaluate_tests;
+
+  // The number of tests.
+  unsigned int evaluate_test_count;
+
+  // Identifiers and their expected values upon completion of the Evaluate
+  // tests in the set.
+  map<string, unsigned int> *validate_data;
+};
+
+
+struct EvaluateForValueTest {
+  // Expression passed to PostfixEvaluator::Evaluate.
+  const string expression;
+  
+  // True if the expression is expected to be evaluable, false if evaluation
+  // is expected to fail.
+  bool evaluable;
+
+  // If evaluable, the value we expect it to yield.
+  unsigned int value;
+};
+
+static bool RunTests() {
+  // The first test set checks the basic operations and failure modes.
+  PostfixEvaluator<unsigned int>::DictionaryType dictionary_0;
+  const EvaluateTest evaluate_tests_0[] = {
+    { "$rAdd 2 2 + =",     true },   // $rAdd = 2 + 2 = 4
+    { "$rAdd $rAdd 2 + =", true },   // $rAdd = $rAdd + 2 = 6
+    { "$rAdd 2 $rAdd + =", true },   // $rAdd = 2 + $rAdd = 8
+    { "99",                false },  // put some junk on the stack...
+    { "$rAdd2 2 2 + =",    true },   // ...and make sure things still work
+    { "$rAdd2\t2\n2 + =",  true },   // same but with different whitespace
+    { "$rAdd2 2 2 + = ",   true },   // trailing whitespace
+    { " $rAdd2 2 2 + =",   true },   // leading whitespace
+    { "$rAdd2  2 2 +   =", true },   // extra whitespace
+    { "$T0 2 = +",         false },  // too few operands for add
+    { "2 + =",             false },  // too few operands for add
+    { "2 +",               false },  // too few operands for add
+    { "+",                 false },  // too few operands for add
+    { "^",                 false },  // too few operands for dereference
+    { "=",                 false },  // too few operands for assignment
+    { "2 =",               false },  // too few operands for assignment
+    { "2 2 + =",           false },  // too few operands for assignment
+    { "2 2 =",             false },  // can't assign into a literal
+    { "k 2 =",             false },  // can't assign into a constant
+    { "2",                 false },  // leftover data on stack
+    { "2 2 +",             false },  // leftover data on stack
+    { "$rAdd",             false },  // leftover data on stack
+    { "0 $T1 0 0 + =",     false },  // leftover data on stack
+    { "$T2 $T2 2 + =",     false },  // can't operate on an undefined value
+    { "$rMul 9 6 * =",     true },   // $rMul = 9 * 6 = 54
+    { "$rSub 9 6 - =",     true },   // $rSub = 9 - 6 = 3
+    { "$rDivQ 9 6 / =",    true },   // $rDivQ = 9 / 6 = 1
+    { "$rDivM 9 6 % =",    true },   // $rDivM = 9 % 6 = 3
+    { "$rDeref 9 ^ =",     true },   // $rDeref = ^9 = 10 (FakeMemoryRegion)
+    { "$rAlign 36 8 @ =",  true },   // $rAlign = 36 @ 8
+    { "$rAdd3 2 2 + =$rMul2 9 6 * =", true } // smashed-equals tokenization
+  };
+  map<string, unsigned int> validate_data_0;
+  validate_data_0["$rAdd"]   = 8;
+  validate_data_0["$rAdd2"]  = 4;
+  validate_data_0["$rSub"]   = 3;
+  validate_data_0["$rMul"]   = 54;
+  validate_data_0["$rDivQ"]  = 1;
+  validate_data_0["$rDivM"]  = 3;
+  validate_data_0["$rDeref"] = 10;
+  validate_data_0["$rAlign"] = 32;
+  validate_data_0["$rAdd3"]  = 4;
+  validate_data_0["$rMul2"]  = 54;
+
+  // The second test set simulates a couple of MSVC program strings.
+  // The data is fudged a little bit because the tests use FakeMemoryRegion
+  // instead of a real stack snapshot, but the program strings are real and
+  // the implementation doesn't know or care that the data is not real.
+  PostfixEvaluator<unsigned int>::DictionaryType dictionary_1;
+  dictionary_1["$ebp"] = 0xbfff0010;
+  dictionary_1["$eip"] = 0x10000000;
+  dictionary_1["$esp"] = 0xbfff0000;
+  dictionary_1[".cbSavedRegs"] = 4;
+  dictionary_1[".cbParams"] = 4;
+  dictionary_1[".raSearchStart"] = 0xbfff0020;
+  const EvaluateTest evaluate_tests_1[] = {
+    { "$T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = "
+      "$L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =", true },
+    // Intermediate state: $T0  = 0xbfff0010, $eip = 0xbfff0015,
+    //                     $ebp = 0xbfff0011, $esp = 0xbfff0018,
+    //                     $L   = 0xbfff000c, $P   = 0xbfff001c
+    { "$T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = "
+      "$L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ =",
+      true },
+    // Intermediate state: $T0  = 0xbfff0011, $eip = 0xbfff0016,
+    //                     $ebp = 0xbfff0012, $esp = 0xbfff0019,
+    //                     $L   = 0xbfff000d, $P   = 0xbfff001d,
+    //                     $ebx = 0xbffefff6
+    { "$T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = "
+      "$esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = "
+      "$ebx $T0 28 - ^ =",
+      true }
+  };
+  map<string, unsigned int> validate_data_1;
+  validate_data_1["$T0"]  = 0xbfff0012;
+  validate_data_1["$T1"]  = 0xbfff0020;
+  validate_data_1["$T2"]  = 0xbfff0019;
+  validate_data_1["$eip"] = 0xbfff0021;
+  validate_data_1["$ebp"] = 0xbfff0012;
+  validate_data_1["$esp"] = 0xbfff0024;
+  validate_data_1["$L"]   = 0xbfff000e;
+  validate_data_1["$P"]   = 0xbfff0028;
+  validate_data_1["$ebx"] = 0xbffefff7;
+  validate_data_1[".cbSavedRegs"] = 4;
+  validate_data_1[".cbParams"] = 4;
+
+  EvaluateTestSet evaluate_test_sets[] = {
+    { &dictionary_0, evaluate_tests_0,
+          sizeof(evaluate_tests_0) / sizeof(EvaluateTest), &validate_data_0 },
+    { &dictionary_1, evaluate_tests_1,
+          sizeof(evaluate_tests_1) / sizeof(EvaluateTest), &validate_data_1 },
+  };
+
+  unsigned int evaluate_test_set_count = sizeof(evaluate_test_sets) /
+                                         sizeof(EvaluateTestSet);
+
+  FakeMemoryRegion fake_memory;
+  PostfixEvaluator<unsigned int> postfix_evaluator =
+      PostfixEvaluator<unsigned int>(NULL, &fake_memory);
+
+  for (unsigned int evaluate_test_set_index = 0;
+       evaluate_test_set_index < evaluate_test_set_count;
+       ++evaluate_test_set_index) {
+    EvaluateTestSet *evaluate_test_set =
+        &evaluate_test_sets[evaluate_test_set_index];
+    const EvaluateTest *evaluate_tests = evaluate_test_set->evaluate_tests;
+    unsigned int evaluate_test_count = evaluate_test_set->evaluate_test_count;
+
+    // The same dictionary will be used for each test in the set.  Earlier
+    // tests can affect the state of the dictionary for later tests.
+    postfix_evaluator.set_dictionary(evaluate_test_set->dictionary);
+
+    // Use a new validity dictionary for each test set.
+    PostfixEvaluator<unsigned int>::DictionaryValidityType assigned;
+
+    for (unsigned int evaluate_test_index = 0;
+         evaluate_test_index < evaluate_test_count;
+         ++evaluate_test_index) {
+      const EvaluateTest *evaluate_test = &evaluate_tests[evaluate_test_index];
+
+      // Do the test.
+      bool result = postfix_evaluator.Evaluate(evaluate_test->expression,
+                                               &assigned);
+      if (result != evaluate_test->evaluable) {
+        fprintf(stderr, "FAIL: evaluate set %d/%d, test %d/%d, "
+                        "expression \"%s\", expected %s, observed %s\n",
+                evaluate_test_set_index, evaluate_test_set_count,
+                evaluate_test_index, evaluate_test_count,
+                evaluate_test->expression.c_str(),
+                evaluate_test->evaluable ? "evaluable" : "not evaluable",
+                result ? "evaluted" : "not evaluated");
+        return false;
+      }
+    }
+
+    // Validate the results.
+    for (map<string, unsigned int>::const_iterator validate_iterator =
+            evaluate_test_set->validate_data->begin();
+        validate_iterator != evaluate_test_set->validate_data->end();
+        ++validate_iterator) {
+      const string identifier = validate_iterator->first;
+      unsigned int expected_value = validate_iterator->second;
+
+      map<string, unsigned int>::const_iterator dictionary_iterator =
+          evaluate_test_set->dictionary->find(identifier);
+
+      // The identifier must exist in the dictionary.
+      if (dictionary_iterator == evaluate_test_set->dictionary->end()) {
+        fprintf(stderr, "FAIL: evaluate test set %d/%d, "
+                        "validate identifier \"%s\", "
+                        "expected %d, observed not found\n",
+                evaluate_test_set_index, evaluate_test_set_count,
+                identifier.c_str(), expected_value);
+        return false;
+      }
+
+      // The value in the dictionary must be the same as the expected value.
+      unsigned int observed_value = dictionary_iterator->second;
+      if (expected_value != observed_value) {
+        fprintf(stderr, "FAIL: evaluate test set %d/%d, "
+                        "validate identifier \"%s\", "
+                        "expected %d, observed %d\n",
+                evaluate_test_set_index, evaluate_test_set_count,
+                identifier.c_str(), expected_value, observed_value);
+        return false;
+      }
+
+      // The value must be set in the "assigned" dictionary if it was a
+      // variable.  It must not have been assigned if it was a constant.
+      bool expected_assigned = identifier[0] == '$';
+      bool observed_assigned = false;
+      PostfixEvaluator<unsigned int>::DictionaryValidityType::const_iterator
+          iterator_assigned = assigned.find(identifier);
+      if (iterator_assigned != assigned.end()) {
+        observed_assigned = iterator_assigned->second;
+      }
+      if (expected_assigned != observed_assigned) {
+        fprintf(stderr, "FAIL: evaluate test set %d/%d, "
+                        "validate assignment of \"%s\", "
+                        "expected %d, observed %d\n",
+                evaluate_test_set_index, evaluate_test_set_count,
+                identifier.c_str(), expected_assigned, observed_assigned);
+        return false;
+      }
+    }
+  }
+
+  // EvaluateForValue tests.
+  PostfixEvaluator<unsigned int>::DictionaryType dictionary_2;
+  dictionary_2["$ebp"] = 0xbfff0010;
+  dictionary_2["$eip"] = 0x10000000;
+  dictionary_2["$esp"] = 0xbfff0000;
+  dictionary_2[".cbSavedRegs"] = 4;
+  dictionary_2[".cbParams"] = 4;
+  dictionary_2[".raSearchStart"] = 0xbfff0020;
+  const EvaluateForValueTest evaluate_for_value_tests_2[] = {
+    { "28907223",               true,  28907223 },      // simple constant
+    { "89854293 40010015 +",    true,  89854293 + 40010015 }, // arithmetic
+    { "-870245 8769343 +",      true,  7899098 },       // negative constants
+    { "$ebp $esp - $eip +",     true,  0x10000010 },    // variable references
+    { "18929794 34015074",      false, 0 },             // too many values
+    { "$ebp $ebp 4 - =",        false, 0 },             // too few values
+    { "$new $eip = $new",       true,  0x10000000 },    // make new variable
+    { "$new 4 +",               true,  0x10000004 },    // see prior assignments
+    { ".cfa 42 = 10",           false, 0 }              // can't set constants
+  };
+  const int evaluate_for_value_tests_2_size
+      = (sizeof (evaluate_for_value_tests_2)
+         / sizeof (evaluate_for_value_tests_2[0]));
+  map<string, unsigned int> validate_data_2;
+  validate_data_2["$eip"] = 0x10000000;
+  validate_data_2["$ebp"] = 0xbfff000c;
+  validate_data_2["$esp"] = 0xbfff0000;
+  validate_data_2["$new"] = 0x10000000;
+  validate_data_2[".cbSavedRegs"] = 4;
+  validate_data_2[".cbParams"] = 4;
+  validate_data_2[".raSearchStart"] = 0xbfff0020;
+
+  postfix_evaluator.set_dictionary(&dictionary_2);
+  for (int i = 0; i < evaluate_for_value_tests_2_size; i++) {
+    const EvaluateForValueTest *test = &evaluate_for_value_tests_2[i];
+    unsigned int result;
+    if (postfix_evaluator.EvaluateForValue(test->expression, &result)
+        != test->evaluable) {
+      fprintf(stderr, "FAIL: evaluate for value test %d, "
+              "expected evaluation to %s, but it %s\n",
+              i, test->evaluable ? "succeed" : "fail",
+              test->evaluable ? "failed" : "succeeded");
+      return false;
+    }
+    if (test->evaluable && result != test->value) {
+      fprintf(stderr, "FAIL: evaluate for value test %d, "
+              "expected value to be 0x%x, but it was 0x%x\n",
+              i, test->value, result);
+      return false;
+    }
+  }
+
+  for (map<string, unsigned int>::iterator v = validate_data_2.begin();
+       v != validate_data_2.end(); v++) {
+    map<string, unsigned int>::iterator a = dictionary_2.find(v->first);
+    if (a == dictionary_2.end()) {
+      fprintf(stderr, "FAIL: evaluate for value dictionary check: "
+              "expected dict[\"%s\"] to be 0x%x, but it was unset\n",
+              v->first.c_str(), v->second);
+      return false;
+    } else if (a->second != v->second) {
+      fprintf(stderr, "FAIL: evaluate for value dictionary check: "
+              "expected dict[\"%s\"] to be 0x%x, but it was 0x%x\n",
+              v->first.c_str(), v->second, a->second);
+      return false;
+    } 
+    dictionary_2.erase(a);
+  }
+  
+  map<string, unsigned int>::iterator remaining = dictionary_2.begin();
+  if (remaining != dictionary_2.end()) {
+    fprintf(stderr, "FAIL: evaluation of test expressions put unexpected "
+            "values in dictionary:\n");
+    for (; remaining != dictionary_2.end(); remaining++)
+      fprintf(stderr, "    dict[\"%s\"] == 0x%x\n",
+              remaining->first.c_str(), remaining->second);
+    return false;
+  }
+
+  return true;
+}
+
+
+}  // namespace
+
+
+int main(int argc, char **argv) {
+  BPLOG_INIT(&argc, &argv);
+
+  return RunTests() ? 0 : 1;
+}
diff --git a/google-breakpad/src/processor/process_state.cc b/google-breakpad/src/processor/process_state.cc
new file mode 100644
index 0000000..5a5cd7f
--- /dev/null
+++ b/google-breakpad/src/processor/process_state.cc
@@ -0,0 +1,69 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// process_state.cc: A snapshot of a process, in a fully-digested state.
+//
+// See process_state.h for documentation.
+//
+// Author: Mark Mentovai
+
+#include "google_breakpad/processor/process_state.h"
+#include "google_breakpad/processor/call_stack.h"
+#include "google_breakpad/processor/code_modules.h"
+
+namespace google_breakpad {
+
+ProcessState::~ProcessState() {
+  Clear();
+}
+
+void ProcessState::Clear() {
+  time_date_stamp_ = 0;
+  process_create_time_ = 0;
+  crashed_ = false;
+  crash_reason_.clear();
+  crash_address_ = 0;
+  assertion_.clear();
+  requesting_thread_ = -1;
+  for (vector<CallStack *>::const_iterator iterator = threads_.begin();
+       iterator != threads_.end();
+       ++iterator) {
+    delete *iterator;
+  }
+  threads_.clear();
+  system_info_.Clear();
+  // modules_without_symbols_ and modules_with_corrupt_symbols_ DO NOT own
+  // the underlying CodeModule pointers.  Just clear the vectors.
+  modules_without_symbols_.clear();
+  modules_with_corrupt_symbols_.clear();
+  delete modules_;
+  modules_ = NULL;
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/processor/processor.gyp b/google-breakpad/src/processor/processor.gyp
new file mode 100644
index 0000000..fb3d7cd
--- /dev/null
+++ b/google-breakpad/src/processor/processor.gyp
@@ -0,0 +1,183 @@
+# Copyright 2014 Google Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+{
+  'includes': [
+    'processor_tools.gypi',
+  ],
+  'targets': [
+    {
+      'target_name': 'processor',
+      'type': 'static_library',
+      'sources': [
+        'address_map-inl.h',
+        'address_map.h',
+        'basic_code_module.h',
+        'basic_code_modules.cc',
+        'basic_code_modules.h',
+        'basic_source_line_resolver.cc',
+        'basic_source_line_resolver_types.h',
+        'binarystream.cc',
+        'binarystream.h',
+        'call_stack.cc',
+        'cfi_frame_info-inl.h',
+        'cfi_frame_info.cc',
+        'cfi_frame_info.h',
+        'contained_range_map-inl.h',
+        'contained_range_map.h',
+        'disassembler_x86.cc',
+        'disassembler_x86.h',
+        'dump_context.cc',
+        'dump_object.cc',
+        'exploitability.cc',
+        'exploitability_linux.cc',
+        'exploitability_linux.h',
+        'exploitability_win.cc',
+        'exploitability_win.h',
+        'fast_source_line_resolver.cc',
+        'fast_source_line_resolver_types.h',
+        'linked_ptr.h',
+        'logging.cc',
+        'logging.h',
+        'map_serializers-inl.h',
+        'map_serializers.h',
+        'microdump_processor.cc',
+        'minidump.cc',
+        'minidump_processor.cc',
+        'module_comparer.cc',
+        'module_comparer.h',
+        'module_factory.h',
+        'module_serializer.cc',
+        'module_serializer.h',
+        'pathname_stripper.cc',
+        'pathname_stripper.h',
+        'postfix_evaluator-inl.h',
+        'postfix_evaluator.h',
+        'process_state.cc',
+        'range_map-inl.h',
+        'range_map.h',
+        'simple_serializer-inl.h',
+        'simple_serializer.h',
+        'simple_symbol_supplier.cc',
+        'simple_symbol_supplier.h',
+        'source_line_resolver_base.cc',
+        'source_line_resolver_base_types.h',
+        'stack_frame_cpu.cc',
+        'stack_frame_symbolizer.cc',
+        'stackwalk_common.cc',
+        'stackwalk_common.h',
+        'stackwalker.cc',
+        'stackwalker_address_list.cc',
+        'stackwalker_address_list.h',
+        'stackwalker_amd64.cc',
+        'stackwalker_amd64.h',
+        'stackwalker_arm.cc',
+        'stackwalker_arm.h',
+        'stackwalker_arm64.cc',
+        'stackwalker_arm64.h',
+        'stackwalker_mips.cc',
+        'stackwalker_mips.h',
+        'stackwalker_ppc.cc',
+        'stackwalker_ppc.h',
+        'stackwalker_ppc64.cc',
+        'stackwalker_ppc64.h',
+        'stackwalker_selftest.cc',
+        'stackwalker_sparc.cc',
+        'stackwalker_sparc.h',
+        'stackwalker_x86.cc',
+        'stackwalker_x86.h',
+        'static_address_map-inl.h',
+        'static_address_map.h',
+        'static_contained_range_map-inl.h',
+        'static_contained_range_map.h',
+        'static_map-inl.h',
+        'static_map.h',
+        'static_map_iterator-inl.h',
+        'static_map_iterator.h',
+        'static_range_map-inl.h',
+        'static_range_map.h',
+        'symbolic_constants_win.cc',
+        'symbolic_constants_win.h',
+        'synth_minidump.cc',
+        'synth_minidump.h',
+        'tokenize.cc',
+        'tokenize.h',
+        'windows_frame_info.h',
+      ],
+      'include_dirs': [
+        '..',
+      ],
+      'dependencies': [
+        '../common/common.gyp:common',
+        '../third_party/libdisasm/libdisasm.gyp:libdisasm',
+      ],
+    },
+    {
+      'target_name': 'processor_unittests',
+      'type': 'executable',
+      'sources': [
+        'address_map_unittest.cc',
+        'basic_source_line_resolver_unittest.cc',
+        'binarystream_unittest.cc',
+        'cfi_frame_info_unittest.cc',
+        'contained_range_map_unittest.cc',
+        'disassembler_x86_unittest.cc',
+        'exploitability_unittest.cc',
+        'fast_source_line_resolver_unittest.cc',
+        'map_serializers_unittest.cc',
+        'microdump_processor_unittest.cc',
+        'minidump_processor_unittest.cc',
+        'minidump_unittest.cc',
+        'pathname_stripper_unittest.cc',
+        'postfix_evaluator_unittest.cc',
+        'range_map_unittest.cc',
+        'stackwalker_address_list_unittest.cc',
+        'stackwalker_amd64_unittest.cc',
+        'stackwalker_arm64_unittest.cc',
+        'stackwalker_arm_unittest.cc',
+        'stackwalker_mips_unittest.cc',
+        'stackwalker_unittest_utils.h',
+        'stackwalker_x86_unittest.cc',
+        'static_address_map_unittest.cc',
+        'static_contained_range_map_unittest.cc',
+        'static_map_unittest.cc',
+        'static_range_map_unittest.cc',
+        'synth_minidump_unittest.cc',
+        'synth_minidump_unittest_data.h',
+      ],
+      'include_dirs': [
+        '..',
+      ],
+      'dependencies': [
+        'processor',
+        '../build/testing.gypi:gmock',
+        '../build/testing.gypi:gtest',
+      ],
+    },
+  ],
+}
diff --git a/google-breakpad/src/processor/processor_tools.gypi b/google-breakpad/src/processor/processor_tools.gypi
new file mode 100644
index 0000000..ecb450d
--- /dev/null
+++ b/google-breakpad/src/processor/processor_tools.gypi
@@ -0,0 +1,57 @@
+# Copyright 2014 Google Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+{
+  'target_defaults': {
+    'include_dirs': [
+      '..',
+    ],
+  },
+  'targets': [
+    {
+      'target_name': 'minidump_dump',
+      'type': 'executable',
+      'sources': [
+        'minidump_dump.cc',
+      ],
+      'dependencies': [
+        'processor',
+      ],
+    },
+    {
+      'target_name': 'minidump_stackwalk',
+      'type': 'executable',
+      'sources': [
+        'minidump_stackwalk.cc',
+      ],
+      'dependencies': [
+        'processor',
+      ],
+    },
+  ],
+}
diff --git a/google-breakpad/src/processor/proto/README b/google-breakpad/src/processor/proto/README
new file mode 100644
index 0000000..df37b6f
--- /dev/null
+++ b/google-breakpad/src/processor/proto/README
@@ -0,0 +1,20 @@
+If you wish to use these protobufs, you must generate their source files
+using  protoc from the protobuf project (http://code.google.com/p/protobuf/).
+
+-----
+Troubleshooting for Protobuf:
+
+Install:
+If you are getting permission errors install, make sure you are not trying to
+install from an NFS.
+
+
+Running protoc:
+protoc: error while loading shared libraries: libprotobuf.so.0: cannot open
+shared object file: No such file or directory
+
+The issue is that Ubuntu 8.04 doesn't include /usr/local/lib in
+library paths. 
+
+To fix it for your current terminal session, just type in
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib 
diff --git a/google-breakpad/src/processor/proto/process_state.proto b/google-breakpad/src/processor/proto/process_state.proto
new file mode 100644
index 0000000..d3e02dc
--- /dev/null
+++ b/google-breakpad/src/processor/proto/process_state.proto
@@ -0,0 +1,210 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// process_state_proto.proto: A client proto representation of a process,
+// in a fully-digested state.
+//
+// Derived from earlier struct and class based models of a client-side
+// processed minidump found under src/google_breakpad/processor.  The
+// file process_state.h  holds the top level representation of this model,
+// supported by additional classes.  We've added a proto representation
+// to ease serialization and parsing for server-side storage of crash
+// reports processed on the client.
+//
+// Author: Jess Gray
+
+syntax = "proto2";
+
+package google_breakpad;
+
+// A proto representation of a process, in a fully-digested state.
+// See src/google_breakpad/processor/process_state.h
+message ProcessStateProto {
+  // Next value: 14
+
+  // The time-date stamp of the original minidump (time_t format)
+  optional int64 time_date_stamp = 1;
+
+  // The time-date stamp when the process was created (time_t format)
+  optional int64 process_create_time = 13;
+
+  message Crash {
+    // The type of crash.  OS- and possibly CPU- specific.  For example,
+    // "EXCEPTION_ACCESS_VIOLATION" (Windows), "EXC_BAD_ACCESS /
+    // KERN_INVALID_ADDRESS" (Mac OS X), "SIGSEGV" (other Unix).
+    required string reason = 1;
+
+    // If crash_reason implicates memory, the memory address that caused the
+    // crash.  For data access errors, this will be the data address that
+    // caused the fault.  For code errors, this will be the address of the
+    // instruction that caused the fault.
+    required int64 address = 2;
+  }
+  optional Crash crash = 2;
+
+
+  // If there was an assertion that was hit, a textual representation
+  // of that assertion, possibly including the file and line at which
+  // it occurred.
+  optional string assertion = 3;
+
+  // The index of the thread that requested a dump be written in the
+  // threads vector.  If a dump was produced as a result of a crash, this
+  // will point to the thread that crashed.  If the dump was produced as
+  // by user code without crashing, and the dump contains extended Breakpad
+  // information, this will point to the thread that requested the dump.
+  optional int32 requesting_thread = 4;
+
+  message Thread {
+    // Stack for the given thread
+    repeated StackFrame frames = 1;
+  }
+
+  // Stacks for each thread (except possibly the exception handler
+  // thread) at the time of the crash.
+  repeated Thread threads = 5;
+
+  // The modules that were loaded into the process represented by the
+  // ProcessState.
+  repeated CodeModule modules = 6;
+
+  // System Info: OS and CPU
+
+  // A string identifying the operating system, such as "Windows NT",
+  // "Mac OS X", or "Linux".  If the information is present in the dump but
+  // its value is unknown, this field will contain a numeric value.  If
+  // the information is not present in the dump, this field will be empty.
+  optional string os = 7;
+
+   // A short form of the os string, using lowercase letters and no spaces,
+  // suitable for use in a filesystem.  Possible values are "windows",
+  // "mac", and "linux".  Empty if the information is not present in the dump
+  // or if the OS given by the dump is unknown.  The values stored in this
+  // field should match those used by MinidumpSystemInfo::GetOS.
+  optional string os_short = 8;
+
+  // A string identifying the version of the operating system, such as
+  // "5.1.2600 Service Pack 2" or "10.4.8 8L2127".  If the dump does not
+  // contain this information, this field will be empty.
+  optional string os_version = 9;
+
+  // A string identifying the basic CPU family, such as "x86" or "ppc".
+  // If this information is present in the dump but its value is unknown,
+  // this field will contain a numeric value.  If the information is not
+  // present in the dump, this field will be empty.  The values stored in
+  // this field should match those used by MinidumpSystemInfo::GetCPU.
+  optional string cpu = 10;
+
+  // A string further identifying the specific CPU, such as
+  // "GenuineIntel level 6 model 13 stepping 8".  If the information is not
+  // present in the dump, or additional identifying information is not
+  // defined for the CPU family, this field will be empty.
+  optional string cpu_info = 11;
+
+  // The number of processors in the system.  Will be greater than one for
+  // multi-core systems.
+  optional int32 cpu_count = 12;
+
+  // Leave the ability to add the raw minidump to this representation
+}
+
+
+// Represents a single frame in a stack  
+// See src/google_breakpad/processor/code_module.h
+message StackFrame {
+  // Next value: 8
+
+  // The program counter location as an absolute virtual address.  For the
+  // innermost called frame in a stack, this will be an exact program counter
+  // or instruction pointer value.  For all other frames, this will be within
+  // the instruction that caused execution to branch to a called function,
+  // but may not necessarily point to the exact beginning of that instruction.
+  required int64 instruction = 1;
+
+  // The module in which the instruction resides.
+  optional CodeModule module = 2;
+
+  // The function name, may be omitted if debug symbols are not available.
+  optional string function_name = 3;
+
+  // The start address of the function, may be omitted if debug symbols
+  // are not available.
+  optional int64 function_base = 4;
+
+  // The source file name, may be omitted if debug symbols are not available.
+  optional string source_file_name = 5;
+
+  // The (1-based) source line number, may be omitted if debug symbols are
+  // not available.
+  optional int32 source_line = 6;
+
+  // The start address of the source line, may be omitted if debug symbols
+  // are not available.
+  optional int64 source_line_base = 7;
+}
+
+
+// Carries information about code modules that are loaded into a process.
+// See src/google_breakpad/processor/code_module.h
+message CodeModule {
+  // Next value: 8
+
+  // The base address of this code module as it was loaded by the process.
+  optional int64 base_address = 1;
+
+  // The size of the code module.
+  optional int64 size = 2;
+
+  // The path or file name that the code module was loaded from.
+  optional string code_file = 3;
+
+  // An identifying string used to discriminate between multiple versions and
+  // builds of the same code module.  This may contain a uuid, timestamp,
+  // version number, or any combination of this or other information, in an
+  // implementation-defined format.
+  optional string code_identifier = 4;
+
+  // The filename containing debugging information associated with the code
+  // module.  If debugging information is stored in a file separate from the
+  // code module itself (as is the case when .pdb or .dSYM files are used),
+  // this will be different from code_file.  If debugging information is
+  // stored in the code module itself (possibly prior to stripping), this
+  // will be the same as code_file.
+  optional string debug_file = 5;
+
+  // An identifying string similar to code_identifier, but identifies a
+  // specific version and build of the associated debug file.  This may be
+  // the same as code_identifier when the debug_file and code_file are
+  // identical or when the same identifier is used to identify distinct
+  // debug and code files.
+  optional string debug_identifier = 6;
+
+  // A human-readable representation of the code module's version.
+  optional string version = 7;
+}
diff --git a/google-breakpad/src/processor/range_map-inl.h b/google-breakpad/src/processor/range_map-inl.h
new file mode 100644
index 0000000..55dae83
--- /dev/null
+++ b/google-breakpad/src/processor/range_map-inl.h
@@ -0,0 +1,220 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// range_map-inl.h: Range map implementation.
+//
+// See range_map.h for documentation.
+//
+// Author: Mark Mentovai
+
+#ifndef PROCESSOR_RANGE_MAP_INL_H__
+#define PROCESSOR_RANGE_MAP_INL_H__
+
+
+#include <assert.h>
+
+#include "processor/range_map.h"
+#include "processor/logging.h"
+
+
+namespace google_breakpad {
+
+
+template<typename AddressType, typename EntryType>
+bool RangeMap<AddressType, EntryType>::StoreRange(const AddressType &base,
+                                                  const AddressType &size,
+                                                  const EntryType &entry) {
+  AddressType high = base + size - 1;
+
+  // Check for undersize or overflow.
+  if (size <= 0 || high < base) {
+    // The processor will hit this case too frequently with common symbol
+    // files in the size == 0 case, which is more suited to a DEBUG channel.
+    // Filter those out since there's no DEBUG channel at the moment.
+    BPLOG_IF(INFO, size != 0) << "StoreRange failed, " << HexString(base) <<
+                                 "+" << HexString(size) << ", " <<
+                                 HexString(high);
+    return false;
+  }
+
+  // Ensure that this range does not overlap with another one already in the
+  // map.
+  MapConstIterator iterator_base = map_.lower_bound(base);
+  MapConstIterator iterator_high = map_.lower_bound(high);
+
+  if (iterator_base != iterator_high) {
+    // Some other range begins in the space used by this range.  It may be
+    // contained within the space used by this range, or it may extend lower.
+    // Regardless, it is an error.
+    // The processor hits this case too frequently with common symbol files.
+    // This is most appropriate for a DEBUG channel, but since none exists now
+    // simply comment out this logging.
+    //
+    // AddressType other_base = iterator_base->second.base();
+    // AddressType other_size = iterator_base->first - other_base + 1;
+    // BPLOG(INFO) << "StoreRange failed, an existing range is contained by or "
+    //                "extends lower than the new range: new " <<
+    //                 HexString(base) << "+" << HexString(size) <<
+    //                 ", existing " << HexString(other_base) << "+" <<
+    //                 HexString(other_size);
+
+    return false;
+  }
+
+  if (iterator_high != map_.end()) {
+    if (iterator_high->second.base() <= high) {
+      // The range above this one overlaps with this one.  It may fully
+      // contain this range, or it may begin within this range and extend
+      // higher.  Regardless, it's an error.
+      // The processor hits this case too frequently with common symbol files.
+      // This is most appropriate for a DEBUG channel, but since none exists now
+      // simply comment out this logging.
+      //
+      // AddressType other_base = iterator_high->second.base();
+      // AddressType other_size = iterator_high->first - other_base + 1;
+      // BPLOG(INFO) << "StoreRange failed, an existing range contains or "
+      //                "extends higher than the new range: new " <<
+      //                HexString(base) << "+" << HexString(size) <<
+      //                ", existing " << HexString(other_base) << "+" <<
+      //                HexString(other_size);
+      return false;
+    }
+  }
+
+  // Store the range in the map by its high address, so that lower_bound can
+  // be used to quickly locate a range by address.
+  map_.insert(MapValue(high, Range(base, entry)));
+  return true;
+}
+
+
+template<typename AddressType, typename EntryType>
+bool RangeMap<AddressType, EntryType>::RetrieveRange(
+    const AddressType &address, EntryType *entry,
+    AddressType *entry_base, AddressType *entry_size) const {
+  BPLOG_IF(ERROR, !entry) << "RangeMap::RetrieveRange requires |entry|";
+  assert(entry);
+
+  MapConstIterator iterator = map_.lower_bound(address);
+  if (iterator == map_.end())
+    return false;
+
+  // The map is keyed by the high address of each range, so |address| is
+  // guaranteed to be lower than the range's high address.  If |range| is
+  // not directly preceded by another range, it's possible for address to
+  // be below the range's low address, though.  When that happens, address
+  // references something not within any range, so return false.
+  if (address < iterator->second.base())
+    return false;
+
+  *entry = iterator->second.entry();
+  if (entry_base)
+    *entry_base = iterator->second.base();
+  if (entry_size)
+    *entry_size = iterator->first - iterator->second.base() + 1;
+
+  return true;
+}
+
+
+template<typename AddressType, typename EntryType>
+bool RangeMap<AddressType, EntryType>::RetrieveNearestRange(
+    const AddressType &address, EntryType *entry,
+    AddressType *entry_base, AddressType *entry_size) const {
+  BPLOG_IF(ERROR, !entry) << "RangeMap::RetrieveNearestRange requires |entry|";
+  assert(entry);
+
+  // If address is within a range, RetrieveRange can handle it.
+  if (RetrieveRange(address, entry, entry_base, entry_size))
+    return true;
+
+  // upper_bound gives the first element whose key is greater than address,
+  // but we want the first element whose key is less than or equal to address.
+  // Decrement the iterator to get there, but not if the upper_bound already
+  // points to the beginning of the map - in that case, address is lower than
+  // the lowest stored key, so return false.
+  MapConstIterator iterator = map_.upper_bound(address);
+  if (iterator == map_.begin())
+    return false;
+  --iterator;
+
+  *entry = iterator->second.entry();
+  if (entry_base)
+    *entry_base = iterator->second.base();
+  if (entry_size)
+    *entry_size = iterator->first - iterator->second.base() + 1;
+
+  return true;
+}
+
+
+template<typename AddressType, typename EntryType>
+bool RangeMap<AddressType, EntryType>::RetrieveRangeAtIndex(
+    int index, EntryType *entry,
+    AddressType *entry_base, AddressType *entry_size) const {
+  BPLOG_IF(ERROR, !entry) << "RangeMap::RetrieveRangeAtIndex requires |entry|";
+  assert(entry);
+
+  if (index >= GetCount()) {
+    BPLOG(ERROR) << "Index out of range: " << index << "/" << GetCount();
+    return false;
+  }
+
+  // Walk through the map.  Although it's ordered, it's not a vector, so it
+  // can't be addressed directly by index.
+  MapConstIterator iterator = map_.begin();
+  for (int this_index = 0; this_index < index; ++this_index)
+    ++iterator;
+
+  *entry = iterator->second.entry();
+  if (entry_base)
+    *entry_base = iterator->second.base();
+  if (entry_size)
+    *entry_size = iterator->first - iterator->second.base() + 1;
+
+  return true;
+}
+
+
+template<typename AddressType, typename EntryType>
+int RangeMap<AddressType, EntryType>::GetCount() const {
+  return map_.size();
+}
+
+
+template<typename AddressType, typename EntryType>
+void RangeMap<AddressType, EntryType>::Clear() {
+  map_.clear();
+}
+
+
+}  // namespace google_breakpad
+
+
+#endif  // PROCESSOR_RANGE_MAP_INL_H__
diff --git a/google-breakpad/src/processor/range_map.h b/google-breakpad/src/processor/range_map.h
new file mode 100644
index 0000000..2572e49
--- /dev/null
+++ b/google-breakpad/src/processor/range_map.h
@@ -0,0 +1,132 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// range_map.h: Range maps.
+//
+// A range map associates a range of addresses with a specific object.  This
+// is useful when certain objects of variable size are located within an
+// address space.  The range map makes it simple to determine which object is
+// associated with a specific address, which may be any address within the
+// range associated with an object.
+//
+// Author: Mark Mentovai
+
+#ifndef PROCESSOR_RANGE_MAP_H__
+#define PROCESSOR_RANGE_MAP_H__
+
+
+#include <map>
+
+
+namespace google_breakpad {
+
+// Forward declarations (for later friend declarations of specialized template).
+template<class, class> class RangeMapSerializer;
+
+template<typename AddressType, typename EntryType>
+class RangeMap {
+ public:
+  RangeMap() : map_() {}
+
+  // Inserts a range into the map.  Returns false for a parameter error,
+  // or if the location of the range would conflict with a range already
+  // stored in the map.
+  bool StoreRange(const AddressType &base,
+                  const AddressType &size,
+                  const EntryType &entry);
+
+  // Locates the range encompassing the supplied address.  If there is
+  // no such range, returns false.  entry_base and entry_size, if non-NULL,
+  // are set to the base and size of the entry's range.
+  bool RetrieveRange(const AddressType &address, EntryType *entry,
+                     AddressType *entry_base, AddressType *entry_size) const;
+
+  // Locates the range encompassing the supplied address, if one exists.
+  // If no range encompasses the supplied address, locates the nearest range
+  // to the supplied address that is lower than the address.  Returns false
+  // if no range meets these criteria.  entry_base and entry_size, if
+  // non-NULL, are set to the base and size of the entry's range.
+  bool RetrieveNearestRange(const AddressType &address, EntryType *entry,
+                            AddressType *entry_base, AddressType *entry_size)
+                            const;
+
+  // Treating all ranges as a list ordered by the address spaces that they
+  // occupy, locates the range at the index specified by index.  Returns
+  // false if index is larger than the number of ranges stored.  entry_base
+  // and entry_size, if non-NULL, are set to the base and size of the entry's
+  // range.
+  //
+  // RetrieveRangeAtIndex is not optimized for speedy operation.
+  bool RetrieveRangeAtIndex(int index, EntryType *entry,
+                            AddressType *entry_base, AddressType *entry_size)
+                            const;
+
+  // Returns the number of ranges stored in the RangeMap.
+  int GetCount() const;
+
+  // Empties the range map, restoring it to the state it was when it was
+  // initially created.
+  void Clear();
+
+ private:
+  // Friend declarations.
+  friend class ModuleComparer;
+  friend class RangeMapSerializer<AddressType, EntryType>;
+
+  class Range {
+   public:
+    Range(const AddressType &base, const EntryType &entry)
+        : base_(base), entry_(entry) {}
+
+    AddressType base() const { return base_; }
+    EntryType entry() const { return entry_; }
+
+   private:
+    // The base address of the range.  The high address does not need to
+    // be stored, because RangeMap uses it as the key to the map.
+    const AddressType base_;
+
+    // The entry corresponding to a range.
+    const EntryType entry_;
+  };
+
+  // Convenience types.
+  typedef std::map<AddressType, Range> AddressToRangeMap;
+  typedef typename AddressToRangeMap::const_iterator MapConstIterator;
+  typedef typename AddressToRangeMap::value_type MapValue;
+
+  // Maps the high address of each range to a EntryType.
+  AddressToRangeMap map_;
+};
+
+
+}  // namespace google_breakpad
+
+
+#endif  // PROCESSOR_RANGE_MAP_H__
diff --git a/google-breakpad/src/processor/range_map_unittest.cc b/google-breakpad/src/processor/range_map_unittest.cc
new file mode 100644
index 0000000..bf9b727
--- /dev/null
+++ b/google-breakpad/src/processor/range_map_unittest.cc
@@ -0,0 +1,552 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// range_map_unittest.cc: Unit tests for RangeMap
+//
+// Author: Mark Mentovai
+
+
+#include <limits.h>
+#include <stdio.h>
+
+#include "processor/range_map-inl.h"
+
+#include "common/scoped_ptr.h"
+#include "processor/linked_ptr.h"
+#include "processor/logging.h"
+
+namespace {
+
+
+using google_breakpad::linked_ptr;
+using google_breakpad::scoped_ptr;
+using google_breakpad::RangeMap;
+
+
+// A CountedObject holds an int.  A global (not thread safe!) count of
+// allocated CountedObjects is maintained to help test memory management.
+class CountedObject {
+ public:
+  explicit CountedObject(int id) : id_(id) { ++count_; }
+  ~CountedObject() { --count_; }
+
+  static int count() { return count_; }
+  int id() const { return id_; }
+
+ private:
+  static int count_;
+  int id_;
+};
+
+int CountedObject::count_;
+
+
+typedef int AddressType;
+typedef RangeMap< AddressType, linked_ptr<CountedObject> > TestMap;
+
+
+// RangeTest contains data to use for store and retrieve tests.  See
+// RunTests for descriptions of the tests.
+struct RangeTest {
+  // Base address to use for test
+  AddressType address;
+
+  // Size of range to use for test
+  AddressType size;
+
+  // Unique ID of range - unstorable ranges must have unique IDs too
+  int id;
+
+  // Whether this range is expected to be stored successfully or not
+  bool expect_storable;
+};
+
+
+// A RangeTestSet encompasses multiple RangeTests, which are run in
+// sequence on the same RangeMap.
+struct RangeTestSet {
+  // An array of RangeTests
+  const RangeTest *range_tests;
+
+  // The number of tests in the set
+  unsigned int range_test_count;
+};
+
+
+// StoreTest uses the data in a RangeTest and calls StoreRange on the
+// test RangeMap.  It returns true if the expected result occurred, and
+// false if something else happened.
+static bool StoreTest(TestMap *range_map, const RangeTest *range_test) {
+  linked_ptr<CountedObject> object(new CountedObject(range_test->id));
+  bool stored = range_map->StoreRange(range_test->address,
+                                      range_test->size,
+                                      object);
+
+  if (stored != range_test->expect_storable) {
+    fprintf(stderr, "FAILED: "
+            "StoreRange id %d, expected %s, observed %s\n",
+            range_test->id,
+            range_test->expect_storable ? "storable" : "not storable",
+            stored ? "stored" : "not stored");
+    return false;
+  }
+
+  return true;
+}
+
+
+// RetrieveTest uses the data in RangeTest and calls RetrieveRange on the
+// test RangeMap.  If it retrieves the expected value (which can be no
+// map entry at the specified range,) it returns true, otherwise, it returns
+// false.  RetrieveTest will check the values around the base address and
+// the high address of a range to guard against off-by-one errors.
+static bool RetrieveTest(TestMap *range_map, const RangeTest *range_test) {
+  for (unsigned int side = 0; side <= 1; ++side) {
+    // When side == 0, check the low side (base address) of each range.
+    // When side == 1, check the high side (base + size) of each range.
+
+    // Check one-less and one-greater than the target address in addition
+    // to the target address itself.
+
+    // If the size of the range is only 1, don't check one greater than
+    // the base or one less than the high - for a successfully stored
+    // range, these tests would erroneously fail because the range is too
+    // small.
+    AddressType low_offset = -1;
+    AddressType high_offset = 1;
+    if (range_test->size == 1) {
+      if (!side)          // When checking the low side,
+        high_offset = 0;  // don't check one over the target.
+      else                // When checking the high side,
+        low_offset = 0;   // don't check one under the target.
+    }
+
+    for (AddressType offset = low_offset; offset <= high_offset; ++offset) {
+      AddressType address =
+          offset +
+          (!side ? range_test->address :
+                   range_test->address + range_test->size - 1);
+
+      bool expected_result = false;  // This is correct for tests not stored.
+      if (range_test->expect_storable) {
+        if (offset == 0)             // When checking the target address,
+          expected_result = true;    // test should always succeed.
+        else if (offset == -1)       // When checking one below the target,
+          expected_result = side;    // should fail low and succeed high.
+        else                         // When checking one above the target,
+          expected_result = !side;   // should succeed low and fail high.
+      }
+
+      linked_ptr<CountedObject> object;
+      AddressType retrieved_base = AddressType();
+      AddressType retrieved_size = AddressType();
+      bool retrieved = range_map->RetrieveRange(address, &object,
+                                                &retrieved_base,
+                                                &retrieved_size);
+
+      bool observed_result = retrieved && object->id() == range_test->id;
+
+      if (observed_result != expected_result) {
+        fprintf(stderr, "FAILED: "
+                        "RetrieveRange id %d, side %d, offset %d, "
+                        "expected %s, observed %s\n",
+                        range_test->id,
+                        side,
+                        offset,
+                        expected_result ? "true" : "false",
+                        observed_result ? "true" : "false");
+        return false;
+      }
+
+      // If a range was successfully retrieved, check that the returned
+      // bounds match the range as stored.
+      if (observed_result == true &&
+          (retrieved_base != range_test->address ||
+           retrieved_size != range_test->size)) {
+        fprintf(stderr, "FAILED: "
+                        "RetrieveRange id %d, side %d, offset %d, "
+                        "expected base/size %d/%d, observed %d/%d\n",
+                        range_test->id,
+                        side,
+                        offset,
+                        range_test->address, range_test->size,
+                        retrieved_base, retrieved_size);
+        return false;
+      }
+
+      // Now, check RetrieveNearestRange.  The nearest range is always
+      // expected to be different from the test range when checking one
+      // less than the low side.
+      bool expected_nearest = range_test->expect_storable;
+      if (!side && offset < 0)
+        expected_nearest = false;
+
+      linked_ptr<CountedObject> nearest_object;
+      AddressType nearest_base = AddressType();
+      AddressType nearest_size = AddressType();
+      bool retrieved_nearest = range_map->RetrieveNearestRange(address,
+                                                               &nearest_object,
+                                                               &nearest_base,
+                                                               &nearest_size);
+
+      // When checking one greater than the high side, RetrieveNearestRange
+      // should usually return the test range.  When a different range begins
+      // at that address, though, then RetrieveNearestRange should return the
+      // range at the address instead of the test range.
+      if (side && offset > 0 && nearest_base == address) {
+        expected_nearest = false;
+      }
+
+      bool observed_nearest = retrieved_nearest &&
+                              nearest_object->id() == range_test->id;
+
+      if (observed_nearest != expected_nearest) {
+        fprintf(stderr, "FAILED: "
+                        "RetrieveNearestRange id %d, side %d, offset %d, "
+                        "expected %s, observed %s\n",
+                        range_test->id,
+                        side,
+                        offset,
+                        expected_nearest ? "true" : "false",
+                        observed_nearest ? "true" : "false");
+        return false;
+      }
+
+      // If a range was successfully retrieved, check that the returned
+      // bounds match the range as stored.
+      if (expected_nearest &&
+          (nearest_base != range_test->address ||
+           nearest_size != range_test->size)) {
+        fprintf(stderr, "FAILED: "
+                        "RetrieveNearestRange id %d, side %d, offset %d, "
+                        "expected base/size %d/%d, observed %d/%d\n",
+                        range_test->id,
+                        side,
+                        offset,
+                        range_test->address, range_test->size,
+                        nearest_base, nearest_size);
+        return false;
+      }
+    }
+  }
+
+  return true;
+}
+
+
+// Test RetrieveRangeAtIndex, which is supposed to return objects in order
+// according to their addresses.  This test is performed by looping through
+// the map, calling RetrieveRangeAtIndex for all possible indices in sequence,
+// and verifying that each call returns a different object than the previous
+// call, and that ranges are returned with increasing base addresses.  Returns
+// false if the test fails.
+static bool RetrieveIndexTest(TestMap *range_map, int set) {
+  linked_ptr<CountedObject> object;
+  CountedObject *last_object = NULL;
+  AddressType last_base = 0;
+
+  int object_count = range_map->GetCount();
+  for (int object_index = 0; object_index < object_count; ++object_index) {
+    AddressType base;
+    if (!range_map->RetrieveRangeAtIndex(object_index, &object, &base, NULL)) {
+      fprintf(stderr, "FAILED: RetrieveRangeAtIndex set %d index %d, "
+              "expected success, observed failure\n",
+              set, object_index);
+      return false;
+    }
+
+    if (!object.get()) {
+      fprintf(stderr, "FAILED: RetrieveRangeAtIndex set %d index %d, "
+              "expected object, observed NULL\n",
+              set, object_index);
+      return false;
+    }
+
+    // It's impossible to do these comparisons unless there's a previous
+    // object to compare against.
+    if (last_object) {
+      // The object must be different from the last one.
+      if (object->id() == last_object->id()) {
+        fprintf(stderr, "FAILED: RetrieveRangeAtIndex set %d index %d, "
+                "expected different objects, observed same objects (%d)\n",
+                set, object_index, object->id());
+        return false;
+      }
+
+      // Each object must have a base greater than the previous object's base.
+      if (base <= last_base) {
+        fprintf(stderr, "FAILED: RetrieveRangeAtIndex set %d index %d, "
+                "expected different bases, observed same bases (%d)\n",
+                set, object_index, base);
+        return false;
+      }
+    }
+
+    last_object = object.get();
+    last_base = base;
+  }
+
+  // Make sure that RetrieveRangeAtIndex doesn't allow lookups at indices that
+  // are too high.
+  if (range_map->RetrieveRangeAtIndex(object_count, &object, NULL, NULL)) {
+    fprintf(stderr, "FAILED: RetrieveRangeAtIndex set %d index %d (too large), "
+            "expected failure, observed success\n",
+            set, object_count);
+    return false;
+  }
+
+  return true;
+}
+
+// Additional RetriveAtIndex test to expose the bug in RetrieveRangeAtIndex().
+// Bug info: RetrieveRangeAtIndex() previously retrieves the high address of
+// entry, however, it is supposed to retrieve the base address of entry as
+// stated in the comment in range_map.h.
+static bool RetriveAtIndexTest2() {
+  scoped_ptr<TestMap> range_map(new TestMap());
+
+  // Store ranges with base address = 2 * object_id:
+  const int range_size = 2;
+  for (int object_id = 0; object_id < 100; ++object_id) {
+    linked_ptr<CountedObject> object(new CountedObject(object_id));
+    int base_address = 2 * object_id;
+    range_map->StoreRange(base_address, range_size, object);
+  }
+
+  linked_ptr<CountedObject> object;
+  int object_count = range_map->GetCount();
+  for (int object_index = 0; object_index < object_count; ++object_index) {
+    AddressType base;
+    if (!range_map->RetrieveRangeAtIndex(object_index, &object, &base, NULL)) {
+      fprintf(stderr, "FAILED: RetrieveAtIndexTest2 index %d, "
+              "expected success, observed failure\n", object_index);
+      return false;
+    }
+
+    int expected_base = 2 * object->id();
+    if (base != expected_base) {
+      fprintf(stderr, "FAILED: RetriveAtIndexTest2 index %d, "
+              "expected base %d, observed base %d",
+              object_index, expected_base, base);
+      return false;
+    }
+  }
+
+  return true;
+}
+
+
+// RunTests runs a series of test sets.
+static bool RunTests() {
+  // These tests will be run sequentially.  The first set of tests exercises
+  // most functions of RangeTest, and verifies all of the bounds-checking.
+  const RangeTest range_tests_0[] = {
+    { INT_MIN,     16,      1,  true },   // lowest possible range
+    { -2,          5,       2,  true },   // a range through zero
+    { INT_MAX - 9, 11,      3,  false },  // tests anti-overflow
+    { INT_MAX - 9, 10,      4,  true },   // highest possible range
+    { 5,           0,       5,  false },  // tests anti-zero-size
+    { 5,           1,       6,  true },   // smallest possible range
+    { -20,         15,      7,  true },   // entirely negative
+
+    { 10,          10,      10, true },   // causes the following tests to fail
+    { 9,           10,      11, false },  // one-less base, one-less high
+    { 9,           11,      12, false },  // one-less base, identical high
+    { 9,           12,      13, false },  // completely contains existing
+    { 10,          9,       14, false },  // identical base, one-less high
+    { 10,          10,      15, false },  // exactly identical to existing range
+    { 10,          11,      16, false },  // identical base, one-greater high
+    { 11,          8,       17, false },  // contained completely within
+    { 11,          9,       18, false },  // one-greater base, identical high
+    { 11,          10,      19, false },  // one-greater base, one-greater high
+    { 9,           2,       20, false },  // overlaps bottom by one
+    { 10,          1,       21, false },  // overlaps bottom by one, contained
+    { 19,          1,       22, false },  // overlaps top by one, contained
+    { 19,          2,       23, false },  // overlaps top by one
+
+    { 9,           1,       24, true },   // directly below without overlap
+    { 20,          1,       25, true },   // directly above without overlap
+
+    { 6,           3,       26, true },   // exactly between two ranges, gapless
+    { 7,           3,       27, false },  // tries to span two ranges
+    { 7,           5,       28, false },  // tries to span three ranges
+    { 4,           20,      29, false },  // tries to contain several ranges
+
+    { 30,          50,      30, true },
+    { 90,          25,      31, true },
+    { 35,          65,      32, false },  // tries to span two noncontiguous
+    { 120,         10000,   33, true },   // > 8-bit
+    { 20000,       20000,   34, true },   // > 8-bit
+    { 0x10001,     0x10001, 35, true },   // > 16-bit
+
+    { 27,          -1,      36, false }   // tests high < base
+  };
+
+  // Attempt to fill the entire space.  The entire space must be filled with
+  // three stores because AddressType is signed for these tests, so RangeMap
+  // treats the size as signed and rejects sizes that appear to be negative.
+  // Even if these tests were run as unsigned, two stores would be needed
+  // to fill the space because the entire size of the space could only be
+  // described by using one more bit than would be present in AddressType.
+  const RangeTest range_tests_1[] = {
+    { INT_MIN, INT_MAX, 50, true },   // From INT_MIN to -2, inclusive
+    { -1,      2,       51, true },   // From -1 to 0, inclusive
+    { 1,       INT_MAX, 52, true },   // From 1 to INT_MAX, inclusive
+    { INT_MIN, INT_MAX, 53, false },  // Can't fill the space twice
+    { -1,      2,       54, false },
+    { 1,       INT_MAX, 55, false },
+    { -3,      6,       56, false },  // -3 to 2, inclusive - spans 3 ranges
+  };
+
+  // A light round of testing to verify that RetrieveRange does the right
+  // the right thing at the extremities of the range when nothing is stored
+  // there.  Checks are forced without storing anything at the extremities
+  // by setting size = 0.
+  const RangeTest range_tests_2[] = {
+    { INT_MIN, 0, 100, false },  // makes RetrieveRange check low end
+    { -1,      3, 101, true },
+    { INT_MAX, 0, 102, false },  // makes RetrieveRange check high end
+  };
+
+  // Similar to the previous test set, but with a couple of ranges closer
+  // to the extremities.
+  const RangeTest range_tests_3[] = {
+    { INT_MIN + 1, 1, 110, true },
+    { INT_MAX - 1, 1, 111, true },
+    { INT_MIN,     0, 112, false },  // makes RetrieveRange check low end
+    { INT_MAX,     0, 113, false }   // makes RetrieveRange check high end
+  };
+
+  // The range map is cleared between sets of tests listed here.
+  const RangeTestSet range_test_sets[] = {
+    { range_tests_0, sizeof(range_tests_0) / sizeof(RangeTest) },
+    { range_tests_1, sizeof(range_tests_1) / sizeof(RangeTest) },
+    { range_tests_2, sizeof(range_tests_2) / sizeof(RangeTest) },
+    { range_tests_3, sizeof(range_tests_3) / sizeof(RangeTest) },
+    { range_tests_0, sizeof(range_tests_0) / sizeof(RangeTest) }   // Run again
+  };
+
+  // Maintain the range map in a pointer so that deletion can be meaningfully
+  // tested.
+  scoped_ptr<TestMap> range_map(new TestMap());
+
+  // Run all of the test sets in sequence.
+  unsigned int range_test_set_count = sizeof(range_test_sets) /
+                                      sizeof(RangeTestSet);
+  for (unsigned int range_test_set_index = 0;
+       range_test_set_index < range_test_set_count;
+       ++range_test_set_index) {
+    const RangeTest *range_tests =
+        range_test_sets[range_test_set_index].range_tests;
+    unsigned int range_test_count =
+        range_test_sets[range_test_set_index].range_test_count;
+
+    // Run the StoreRange test, which validates StoreRange and initializes
+    // the RangeMap with data for the RetrieveRange test.
+    int stored_count = 0;  // The number of ranges successfully stored
+    for (unsigned int range_test_index = 0;
+         range_test_index < range_test_count;
+         ++range_test_index) {
+      const RangeTest *range_test = &range_tests[range_test_index];
+      if (!StoreTest(range_map.get(), range_test))
+        return false;
+
+      if (range_test->expect_storable)
+        ++stored_count;
+    }
+
+    // There should be exactly one CountedObject for everything successfully
+    // stored in the RangeMap.
+    if (CountedObject::count() != stored_count) {
+      fprintf(stderr, "FAILED: "
+              "stored object counts don't match, expected %d, observed %d\n",
+              stored_count,
+              CountedObject::count());
+
+      return false;
+    }
+
+    // The RangeMap's own count of objects should also match.
+    if (range_map->GetCount() != stored_count) {
+      fprintf(stderr, "FAILED: stored object count doesn't match GetCount, "
+              "expected %d, observed %d\n",
+              stored_count, range_map->GetCount());
+
+      return false;
+    }
+
+    // Run the RetrieveRange test
+    for (unsigned int range_test_index = 0;
+         range_test_index < range_test_count;
+         ++range_test_index) {
+      const RangeTest *range_test = &range_tests[range_test_index];
+      if (!RetrieveTest(range_map.get(), range_test))
+        return false;
+    }
+
+    if (!RetrieveIndexTest(range_map.get(), range_test_set_index))
+      return false;
+
+    // Clear the map between test sets.  If this is the final test set,
+    // delete the map instead to test destruction.
+    if (range_test_set_index < range_test_set_count - 1)
+      range_map->Clear();
+    else
+      range_map.reset();
+
+    // Test that all stored objects are freed when the RangeMap is cleared
+    // or deleted.
+    if (CountedObject::count() != 0) {
+      fprintf(stderr, "FAILED: "
+              "did not free all objects after %s, %d still allocated\n",
+              range_test_set_index < range_test_set_count - 1 ? "clear"
+                                                              : "delete",
+              CountedObject::count());
+
+      return false;
+    }
+  }
+
+  if (!RetriveAtIndexTest2()) {
+    fprintf(stderr, "FAILED: did not pass RetrieveAtIndexTest2()\n");
+    return false;
+  }
+
+  return true;
+}
+
+
+}  // namespace
+
+
+int main(int argc, char **argv) {
+  BPLOG_INIT(&argc, &argv);
+
+  return RunTests() ? 0 : 1;
+}
diff --git a/google-breakpad/src/processor/simple_serializer-inl.h b/google-breakpad/src/processor/simple_serializer-inl.h
new file mode 100644
index 0000000..606bb3c
--- /dev/null
+++ b/google-breakpad/src/processor/simple_serializer-inl.h
@@ -0,0 +1,260 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// simple_serializer-inl.h: template specializations for following types:
+// bool, const char *(C-string), string,
+// Line, Function, PublicSymbol, WindowsFrameInfo and their linked pointers.
+//
+// See simple_serializer.h for moredocumentation.
+//
+// Author: Siyang Xie (lambxsy@google.com)
+
+#ifndef PROCESSOR_SIMPLE_SERIALIZER_INL_H__
+#define PROCESSOR_SIMPLE_SERIALIZER_INL_H__
+
+#include <string>
+
+#include "processor/simple_serializer.h"
+#include "map_serializers-inl.h"
+
+#include "google_breakpad/processor/basic_source_line_resolver.h"
+#include "processor/basic_source_line_resolver_types.h"
+#include "processor/linked_ptr.h"
+#include "processor/windows_frame_info.h"
+
+namespace google_breakpad {
+
+// Specializations of SimpleSerializer: bool
+template<>
+class SimpleSerializer<bool> {
+ public:
+  static size_t SizeOf(bool boolean) { return 1; }
+
+  static char *Write(bool boolean, char *dest) {
+    *dest = static_cast<char>(boolean? 255 : 0);
+    return ++dest;
+  }
+
+  static const char *Read(const char *source, bool *value) {
+    *value = ((*source) == 0 ? false : true);
+    return ++source;
+  }
+};
+
+// Specializations of SimpleSerializer: string
+template<>
+class SimpleSerializer<string> {
+ public:
+  static size_t SizeOf(const string &str) { return str.size() + 1; }
+
+  static char *Write(const string &str, char *dest) {
+    strcpy(dest, str.c_str());
+    return dest + SizeOf(str);
+  }
+};
+
+// Specializations of SimpleSerializer: C-string
+template<>
+class SimpleSerializer<const char*> {
+ public:
+  static size_t SizeOf(const char *cstring) {
+    return strlen(cstring) + 1;
+  }
+
+  static char *Write(const char *cstring, char *dest) {
+    strcpy(dest, cstring);
+    return dest + SizeOf(cstring);
+  }
+};
+
+// Specializations of SimpleSerializer: Line
+template<>
+class SimpleSerializer<BasicSourceLineResolver::Line> {
+  typedef BasicSourceLineResolver::Line Line;
+ public:
+  static size_t SizeOf(const Line &line) {
+    return SimpleSerializer<MemAddr>::SizeOf(line.address)
+         + SimpleSerializer<MemAddr>::SizeOf(line.size)
+         + SimpleSerializer<int32_t>::SizeOf(line.source_file_id)
+         + SimpleSerializer<int32_t>::SizeOf(line.line);
+  }
+  static char *Write(const Line &line, char *dest) {
+    dest = SimpleSerializer<MemAddr>::Write(line.address, dest);
+    dest = SimpleSerializer<MemAddr>::Write(line.size, dest);
+    dest = SimpleSerializer<int32_t>::Write(line.source_file_id, dest);
+    dest = SimpleSerializer<int32_t>::Write(line.line, dest);
+    return dest;
+  }
+};
+
+// Specializations of SimpleSerializer: PublicSymbol
+template<>
+class SimpleSerializer<BasicSourceLineResolver::PublicSymbol> {
+  typedef BasicSourceLineResolver::PublicSymbol PublicSymbol;
+ public:
+  static size_t SizeOf(const PublicSymbol &pubsymbol) {
+    return SimpleSerializer<string>::SizeOf(pubsymbol.name)
+         + SimpleSerializer<MemAddr>::SizeOf(pubsymbol.address)
+         + SimpleSerializer<int32_t>::SizeOf(pubsymbol.parameter_size);
+  }
+  static char *Write(const PublicSymbol &pubsymbol, char *dest) {
+    dest = SimpleSerializer<string>::Write(pubsymbol.name, dest);
+    dest = SimpleSerializer<MemAddr>::Write(pubsymbol.address, dest);
+    dest = SimpleSerializer<int32_t>::Write(pubsymbol.parameter_size, dest);
+    return dest;
+  }
+};
+
+// Specializations of SimpleSerializer: WindowsFrameInfo
+template<>
+class SimpleSerializer<WindowsFrameInfo> {
+ public:
+  static size_t SizeOf(const WindowsFrameInfo &wfi) {
+    unsigned int size = 0;
+    size += sizeof(int32_t);  // wfi.type_
+    size += SimpleSerializer<int32_t>::SizeOf(wfi.valid);
+    size += SimpleSerializer<uint32_t>::SizeOf(wfi.prolog_size);
+    size += SimpleSerializer<uint32_t>::SizeOf(wfi.epilog_size);
+    size += SimpleSerializer<uint32_t>::SizeOf(wfi.parameter_size);
+    size += SimpleSerializer<uint32_t>::SizeOf(wfi.saved_register_size);
+    size += SimpleSerializer<uint32_t>::SizeOf(wfi.local_size);
+    size += SimpleSerializer<uint32_t>::SizeOf(wfi.max_stack_size);
+    size += SimpleSerializer<bool>::SizeOf(wfi.allocates_base_pointer);
+    size += SimpleSerializer<string>::SizeOf(wfi.program_string);
+    return size;
+  }
+  static char *Write(const WindowsFrameInfo &wfi, char *dest) {
+    dest = SimpleSerializer<int32_t>::Write(
+        static_cast<const int32_t>(wfi.type_), dest);
+    dest = SimpleSerializer<int32_t>::Write(wfi.valid, dest);
+    dest = SimpleSerializer<uint32_t>::Write(wfi.prolog_size, dest);
+    dest = SimpleSerializer<uint32_t>::Write(wfi.epilog_size, dest);
+    dest = SimpleSerializer<uint32_t>::Write(wfi.parameter_size, dest);
+    dest = SimpleSerializer<uint32_t>::Write(wfi.saved_register_size, dest);
+    dest = SimpleSerializer<uint32_t>::Write(wfi.local_size, dest);
+    dest = SimpleSerializer<uint32_t>::Write(wfi.max_stack_size, dest);
+    dest = SimpleSerializer<bool>::Write(wfi.allocates_base_pointer, dest);
+    return SimpleSerializer<string>::Write(wfi.program_string, dest);
+  }
+};
+
+// Specializations of SimpleSerializer: Linked_ptr version of
+// Line, Function, PublicSymbol, WindowsFrameInfo.
+template<>
+class SimpleSerializer< linked_ptr<BasicSourceLineResolver::Line> > {
+  typedef BasicSourceLineResolver::Line Line;
+ public:
+  static size_t SizeOf(const linked_ptr<Line> &lineptr) {
+    if (lineptr.get() == NULL) return 0;
+    return SimpleSerializer<Line>::SizeOf(*(lineptr.get()));
+  }
+  static char *Write(const linked_ptr<Line> &lineptr, char *dest) {
+    if (lineptr.get())
+      dest = SimpleSerializer<Line>::Write(*(lineptr.get()), dest);
+    return dest;
+  }
+};
+
+template<>
+class SimpleSerializer<BasicSourceLineResolver::Function> {
+  // Convenient type names.
+  typedef BasicSourceLineResolver::Function Function;
+  typedef BasicSourceLineResolver::Line Line;
+ public:
+  static size_t SizeOf(const Function &func) {
+    unsigned int size = 0;
+    size += SimpleSerializer<string>::SizeOf(func.name);
+    size += SimpleSerializer<MemAddr>::SizeOf(func.address);
+    size += SimpleSerializer<MemAddr>::SizeOf(func.size);
+    size += SimpleSerializer<int32_t>::SizeOf(func.parameter_size);
+    size += range_map_serializer_.SizeOf(func.lines);
+    return size;
+  }
+
+  static char *Write(const Function &func, char *dest) {
+    dest = SimpleSerializer<string>::Write(func.name, dest);
+    dest = SimpleSerializer<MemAddr>::Write(func.address, dest);
+    dest = SimpleSerializer<MemAddr>::Write(func.size, dest);
+    dest = SimpleSerializer<int32_t>::Write(func.parameter_size, dest);
+    dest = range_map_serializer_.Write(func.lines, dest);
+    return dest;
+  }
+ private:
+  // This static member is defined in module_serializer.cc.
+  static RangeMapSerializer< MemAddr, linked_ptr<Line> > range_map_serializer_;
+};
+
+template<>
+class SimpleSerializer< linked_ptr<BasicSourceLineResolver::Function> > {
+  typedef BasicSourceLineResolver::Function Function;
+ public:
+  static size_t SizeOf(const linked_ptr<Function> &func) {
+    if (!func.get()) return 0;
+    return SimpleSerializer<Function>::SizeOf(*(func.get()));
+  }
+
+  static char *Write(const linked_ptr<Function> &func, char *dest) {
+    if (func.get())
+      dest = SimpleSerializer<Function>::Write(*(func.get()), dest);
+    return dest;
+  }
+};
+
+template<>
+class SimpleSerializer< linked_ptr<BasicSourceLineResolver::PublicSymbol> > {
+  typedef BasicSourceLineResolver::PublicSymbol PublicSymbol;
+ public:
+  static size_t SizeOf(const linked_ptr<PublicSymbol> &pubsymbol) {
+    if (pubsymbol.get() == NULL) return 0;
+    return SimpleSerializer<PublicSymbol>::SizeOf(*(pubsymbol.get()));
+  }
+  static char *Write(const linked_ptr<PublicSymbol> &pubsymbol, char *dest) {
+    if (pubsymbol.get())
+      dest = SimpleSerializer<PublicSymbol>::Write(*(pubsymbol.get()), dest);
+    return dest;
+  }
+};
+
+template<>
+class SimpleSerializer< linked_ptr<WindowsFrameInfo> > {
+ public:
+  static size_t SizeOf(const linked_ptr<WindowsFrameInfo> &wfi) {
+    if (wfi.get() == NULL) return 0;
+    return SimpleSerializer<WindowsFrameInfo>::SizeOf(*(wfi.get()));
+  }
+  static char *Write(const linked_ptr<WindowsFrameInfo> &wfi, char *dest) {
+    if (wfi.get())
+      dest = SimpleSerializer<WindowsFrameInfo>::Write(*(wfi.get()), dest);
+    return dest;
+  }
+};
+
+}  // namespace google_breakpad
+
+#endif  // PROCESSOR_SIMPLE_SERIALIZER_INL_H__
diff --git a/google-breakpad/src/processor/simple_serializer.h b/google-breakpad/src/processor/simple_serializer.h
new file mode 100644
index 0000000..275f51c
--- /dev/null
+++ b/google-breakpad/src/processor/simple_serializer.h
@@ -0,0 +1,63 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// simple_serializer.h: SimpleSerializer is a template for calculating size and
+// writing to specific memory location for objects of primitive types, C-style
+// string, string, breakpad types/structs etc.
+// All specializations of SimpleSerializer template are defined in the
+// "simple_serializer-inl.h" file.
+//
+// Author: Siyang Xie (lambxsy@google.com)
+
+#ifndef PROCESSOR_SIMPLE_SERIALIZER_H__
+#define PROCESSOR_SIMPLE_SERIALIZER_H__
+
+#include "google_breakpad/common/breakpad_types.h"
+
+namespace google_breakpad {
+
+typedef uint64_t MemAddr;
+
+// Default implementation of SimpleSerializer template.
+// Specializations are defined in "simple_serializer-inl.h".
+template<class Type> class SimpleSerializer {
+ public:
+  // Calculate and return the size of the 'item'.
+  static size_t SizeOf(const Type &item) { return sizeof(item); }
+  // Write 'item' to memory location 'dest', and return to the "end" address of
+  // data written, i.e., the address after the final byte written.
+  static char *Write(const Type &item, char *dest) {
+    new (dest) Type(item);
+    return dest + SizeOf(item);
+  }
+};
+
+}  // namespace google_breakpad
+
+#endif  // PROCESSOR_SIMPLE_SERIALIZER_H__
diff --git a/google-breakpad/src/processor/simple_symbol_supplier.cc b/google-breakpad/src/processor/simple_symbol_supplier.cc
new file mode 100644
index 0000000..bc5ebb6
--- /dev/null
+++ b/google-breakpad/src/processor/simple_symbol_supplier.cc
@@ -0,0 +1,204 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// simple_symbol_supplier.cc: A simple SymbolSupplier implementation
+//
+// See simple_symbol_supplier.h for documentation.
+//
+// Author: Mark Mentovai
+
+#include "processor/simple_symbol_supplier.h"
+
+#include <assert.h>
+#include <string.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include <algorithm>
+#include <iostream>
+#include <fstream>
+
+#include "common/using_std_string.h"
+#include "google_breakpad/processor/code_module.h"
+#include "google_breakpad/processor/system_info.h"
+#include "processor/logging.h"
+#include "processor/pathname_stripper.h"
+
+namespace google_breakpad {
+
+static bool file_exists(const string &file_name) {
+  struct stat sb;
+  return stat(file_name.c_str(), &sb) == 0;
+}
+
+SymbolSupplier::SymbolResult SimpleSymbolSupplier::GetSymbolFile(
+    const CodeModule *module, const SystemInfo *system_info,
+    string *symbol_file) {
+  BPLOG_IF(ERROR, !symbol_file) << "SimpleSymbolSupplier::GetSymbolFile "
+                                   "requires |symbol_file|";
+  assert(symbol_file);
+  symbol_file->clear();
+
+  for (unsigned int path_index = 0; path_index < paths_.size(); ++path_index) {
+    SymbolResult result;
+    if ((result = GetSymbolFileAtPathFromRoot(module, system_info,
+                                              paths_[path_index],
+                                              symbol_file)) != NOT_FOUND) {
+      return result;
+    }
+  }
+  return NOT_FOUND;
+}
+
+SymbolSupplier::SymbolResult SimpleSymbolSupplier::GetSymbolFile(
+    const CodeModule *module,
+    const SystemInfo *system_info,
+    string *symbol_file,
+    string *symbol_data) {
+  assert(symbol_data);
+  symbol_data->clear();
+
+  SymbolSupplier::SymbolResult s = GetSymbolFile(module, system_info,
+                                                 symbol_file);
+  if (s == FOUND) {
+    std::ifstream in(symbol_file->c_str());
+    std::getline(in, *symbol_data, string::traits_type::to_char_type(
+                     string::traits_type::eof()));
+    in.close();
+  }
+  return s;
+}
+
+SymbolSupplier::SymbolResult SimpleSymbolSupplier::GetCStringSymbolData(
+    const CodeModule *module,
+    const SystemInfo *system_info,
+    string *symbol_file,
+    char **symbol_data,
+    size_t *symbol_data_size) {
+  assert(symbol_data);
+  assert(symbol_data_size);
+
+  string symbol_data_string;
+  SymbolSupplier::SymbolResult s =
+      GetSymbolFile(module, system_info, symbol_file, &symbol_data_string);
+
+  if (s == FOUND) {
+    *symbol_data_size = symbol_data_string.size() + 1;
+    *symbol_data = new char[*symbol_data_size];
+    if (*symbol_data == NULL) {
+      BPLOG(ERROR) << "Memory allocation for size " << *symbol_data_size
+                   << " failed";
+      return INTERRUPT;
+    }
+    memcpy(*symbol_data, symbol_data_string.c_str(), symbol_data_string.size());
+    (*symbol_data)[symbol_data_string.size()] = '\0';
+    memory_buffers_.insert(make_pair(module->code_file(), *symbol_data));
+  }
+  return s;
+}
+
+void SimpleSymbolSupplier::FreeSymbolData(const CodeModule *module) {
+  if (!module) {
+    BPLOG(INFO) << "Cannot free symbol data buffer for NULL module";
+    return;
+  }
+
+  map<string, char *>::iterator it = memory_buffers_.find(module->code_file());
+  if (it == memory_buffers_.end()) {
+    BPLOG(INFO) << "Cannot find symbol data buffer for module "
+                << module->code_file();
+    return;
+  }
+  delete [] it->second;
+  memory_buffers_.erase(it);
+}
+
+SymbolSupplier::SymbolResult SimpleSymbolSupplier::GetSymbolFileAtPathFromRoot(
+    const CodeModule *module, const SystemInfo *system_info,
+    const string &root_path, string *symbol_file) {
+  BPLOG_IF(ERROR, !symbol_file) << "SimpleSymbolSupplier::GetSymbolFileAtPath "
+                                   "requires |symbol_file|";
+  assert(symbol_file);
+  symbol_file->clear();
+
+  if (!module)
+    return NOT_FOUND;
+
+  // Start with the base path.
+  string path = root_path;
+
+  // Append the debug (pdb) file name as a directory name.
+  path.append("/");
+  string debug_file_name = PathnameStripper::File(module->debug_file());
+  if (debug_file_name.empty()) {
+    BPLOG(ERROR) << "Can't construct symbol file path without debug_file "
+                    "(code_file = " <<
+                    PathnameStripper::File(module->code_file()) << ")";
+    return NOT_FOUND;
+  }
+  path.append(debug_file_name);
+
+  // Append the identifier as a directory name.
+  path.append("/");
+  string identifier = module->debug_identifier();
+  if (identifier.empty()) {
+    BPLOG(ERROR) << "Can't construct symbol file path without debug_identifier "
+                    "(code_file = " <<
+                    PathnameStripper::File(module->code_file()) <<
+                    ", debug_file = " << debug_file_name << ")";
+    return NOT_FOUND;
+  }
+  path.append(identifier);
+
+  // Transform the debug file name into one ending in .sym.  If the existing
+  // name ends in .pdb, strip the .pdb.  Otherwise, add .sym to the non-.pdb
+  // name.
+  path.append("/");
+  string debug_file_extension;
+  if (debug_file_name.size() > 4)
+    debug_file_extension = debug_file_name.substr(debug_file_name.size() - 4);
+  std::transform(debug_file_extension.begin(), debug_file_extension.end(),
+                 debug_file_extension.begin(), tolower);
+  if (debug_file_extension == ".pdb") {
+    path.append(debug_file_name.substr(0, debug_file_name.size() - 4));
+  } else {
+    path.append(debug_file_name);
+  }
+  path.append(".sym");
+
+  if (!file_exists(path)) {
+    BPLOG(INFO) << "No symbol file at " << path;
+    return NOT_FOUND;
+  }
+
+  *symbol_file = path;
+  return FOUND;
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/processor/simple_symbol_supplier.h b/google-breakpad/src/processor/simple_symbol_supplier.h
new file mode 100644
index 0000000..0cde85c
--- /dev/null
+++ b/google-breakpad/src/processor/simple_symbol_supplier.h
@@ -0,0 +1,140 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// simple_symbol_supplier.h: A simple SymbolSupplier implementation
+//
+// SimpleSymbolSupplier is a straightforward implementation of SymbolSupplier
+// that stores symbol files in a filesystem tree.  A SimpleSymbolSupplier is
+// created with one or more base directories, which are the root paths for all
+// symbol files.  Each symbol file contained therein has a directory entry in
+// the base directory with a name identical to the corresponding debugging 
+// file (pdb).  Within each of these directories, there are subdirectories
+// named for the debugging file's identifier.  For recent pdb files, this is
+// a concatenation of the pdb's uuid and age, presented in hexadecimal form,
+// without any dashes or separators.  The uuid is in uppercase hexadecimal
+// and the age is in lowercase hexadecimal.  Within that subdirectory,
+// SimpleSymbolSupplier expects to find the symbol file, which is named
+// identically to the debug file, but with a .sym extension.  If the original
+// debug file had a name ending in .pdb, the .pdb extension will be replaced
+// with .sym.  This sample hierarchy is rooted at the "symbols" base
+// directory:
+//
+// symbols
+// symbols/test_app.pdb
+// symbols/test_app.pdb/63FE4780728D49379B9D7BB6460CB42A1
+// symbols/test_app.pdb/63FE4780728D49379B9D7BB6460CB42A1/test_app.sym
+// symbols/kernel32.pdb
+// symbols/kernel32.pdb/BCE8785C57B44245A669896B6A19B9542
+// symbols/kernel32.pdb/BCE8785C57B44245A669896B6A19B9542/kernel32.sym
+//
+// In this case, the uuid of test_app.pdb is
+// 63fe4780-728d-4937-9b9d-7bb6460cb42a and its age is 1.
+//
+// This scheme was chosen to be roughly analogous to the way that
+// symbol files may be accessed from Microsoft Symbol Server.  A hierarchy
+// used for Microsoft Symbol Server storage is usable as a hierarchy for
+// SimpleSymbolServer, provided that the pdb files are transformed to dumped
+// format using a tool such as dump_syms, and given a .sym extension.
+//
+// SimpleSymbolSupplier will iterate over all root paths searching for
+// a symbol file existing in that path.
+//
+// SimpleSymbolSupplier supports any debugging file which can be identified
+// by a CodeModule object's debug_file and debug_identifier accessors.  The
+// expected ultimate source of these CodeModule objects are MinidumpModule
+// objects; it is this class that is responsible for assigning appropriate
+// values for debug_file and debug_identifier.
+//
+// Author: Mark Mentovai
+
+#ifndef PROCESSOR_SIMPLE_SYMBOL_SUPPLIER_H__
+#define PROCESSOR_SIMPLE_SYMBOL_SUPPLIER_H__
+
+#include <map>
+#include <string>
+#include <vector>
+
+#include "common/using_std_string.h"
+#include "google_breakpad/processor/symbol_supplier.h"
+
+namespace google_breakpad {
+
+using std::map;
+using std::vector;
+
+class CodeModule;
+
+class SimpleSymbolSupplier : public SymbolSupplier {
+ public:
+  // Creates a new SimpleSymbolSupplier, using path as the root path where
+  // symbols are stored.
+  explicit SimpleSymbolSupplier(const string &path) : paths_(1, path) {}
+
+  // Creates a new SimpleSymbolSupplier, using paths as a list of root
+  // paths where symbols may be stored.
+  explicit SimpleSymbolSupplier(const vector<string> &paths) : paths_(paths) {}
+
+  virtual ~SimpleSymbolSupplier() {}
+
+  // Returns the path to the symbol file for the given module.  See the
+  // description above.
+  virtual SymbolResult GetSymbolFile(const CodeModule *module,
+                                     const SystemInfo *system_info,
+                                     string *symbol_file);
+
+  virtual SymbolResult GetSymbolFile(const CodeModule *module,
+                                     const SystemInfo *system_info,
+                                     string *symbol_file,
+                                     string *symbol_data);
+
+  // Allocates data buffer on heap and writes symbol data into buffer.
+  // Symbol supplier ALWAYS takes ownership of the data buffer.
+  virtual SymbolResult GetCStringSymbolData(const CodeModule *module,
+                                            const SystemInfo *system_info,
+                                            string *symbol_file,
+                                            char **symbol_data,
+                                            size_t *symbol_data_size);
+
+  // Free the data buffer allocated in the above GetCStringSymbolData();
+  virtual void FreeSymbolData(const CodeModule *module);
+
+ protected:
+  SymbolResult GetSymbolFileAtPathFromRoot(const CodeModule *module,
+                                           const SystemInfo *system_info,
+                                           const string &root_path,
+                                           string *symbol_file);
+
+ private:
+  map<string, char *> memory_buffers_;
+  vector<string> paths_;
+};
+
+}  // namespace google_breakpad
+
+#endif  // PROCESSOR_SIMPLE_SYMBOL_SUPPLIER_H__
diff --git a/google-breakpad/src/processor/source_line_resolver_base.cc b/google-breakpad/src/processor/source_line_resolver_base.cc
new file mode 100644
index 0000000..6eff1f9
--- /dev/null
+++ b/google-breakpad/src/processor/source_line_resolver_base.cc
@@ -0,0 +1,341 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// source_line_resolver_base.cc: Implementation of SourceLineResolverBase.
+//
+// See source_line_resolver_base.h and source_line_resolver_base_types.h for
+// more documentation.
+//
+// Author: Siyang Xie (lambxsy@google.com)
+
+#include <stdio.h>
+#include <string.h>
+#include <sys/stat.h>
+
+#include <map>
+#include <utility>
+
+#include "google_breakpad/processor/source_line_resolver_base.h"
+#include "processor/source_line_resolver_base_types.h"
+#include "processor/module_factory.h"
+
+using std::map;
+using std::make_pair;
+
+namespace google_breakpad {
+
+SourceLineResolverBase::SourceLineResolverBase(
+    ModuleFactory *module_factory)
+  : modules_(new ModuleMap),
+    corrupt_modules_(new ModuleSet),
+    memory_buffers_(new MemoryMap),
+    module_factory_(module_factory) {
+}
+
+SourceLineResolverBase::~SourceLineResolverBase() {
+  ModuleMap::iterator it;
+  // Iterate through ModuleMap and delete all loaded modules.
+  for (it = modules_->begin(); it != modules_->end(); ++it) {
+    // Delete individual module.
+    delete it->second;
+  }
+  // Delete the map of modules.
+  delete modules_;
+  modules_ = NULL;
+
+  // Delete the set of corrupt modules.
+  delete corrupt_modules_;
+  corrupt_modules_ = NULL;
+
+  MemoryMap::iterator iter = memory_buffers_->begin();
+  for (; iter != memory_buffers_->end(); ++iter) {
+    delete [] iter->second;
+  }
+  // Delete the map of memory buffers.
+  delete memory_buffers_;
+  memory_buffers_ = NULL;
+
+  delete module_factory_;
+  module_factory_ = NULL;
+}
+
+bool SourceLineResolverBase::ReadSymbolFile(const string &map_file,
+                                            char **symbol_data,
+                                            size_t *symbol_data_size) {
+  if (symbol_data == NULL || symbol_data_size == NULL) {
+    BPLOG(ERROR) << "Could not Read file into Null memory pointer";
+    return false;
+  }
+
+  struct stat buf;
+  int error_code = stat(map_file.c_str(), &buf);
+  if (error_code == -1) {
+    string error_string;
+    error_code = ErrnoString(&error_string);
+    BPLOG(ERROR) << "Could not open " << map_file <<
+        ", error " << error_code << ": " << error_string;
+    return false;
+  }
+
+  off_t file_size = buf.st_size;
+
+  // Allocate memory for file contents, plus a null terminator
+  // since we may use strtok() on the contents.
+  *symbol_data_size = file_size + 1;
+  *symbol_data = new char[file_size + 1];
+
+  if (*symbol_data == NULL) {
+    BPLOG(ERROR) << "Could not allocate memory for " << map_file;
+    return false;
+  }
+
+  BPLOG(INFO) << "Opening " << map_file;
+
+  FILE *f = fopen(map_file.c_str(), "rt");
+  if (!f) {
+    string error_string;
+    error_code = ErrnoString(&error_string);
+    BPLOG(ERROR) << "Could not open " << map_file <<
+        ", error " << error_code << ": " << error_string;
+    delete [] (*symbol_data);
+    *symbol_data = NULL;
+    return false;
+  }
+
+  AutoFileCloser closer(f);
+
+  int items_read = 0;
+
+  items_read = fread(*symbol_data, 1, file_size, f);
+
+  if (items_read != file_size) {
+    string error_string;
+    error_code = ErrnoString(&error_string);
+    BPLOG(ERROR) << "Could not slurp " << map_file <<
+        ", error " << error_code << ": " << error_string;
+    delete [] (*symbol_data);
+    *symbol_data = NULL;
+    return false;
+  }
+
+  (*symbol_data)[file_size] = '\0';
+  return true;
+}
+
+bool SourceLineResolverBase::LoadModule(const CodeModule *module,
+                                        const string &map_file) {
+  if (module == NULL)
+    return false;
+
+  // Make sure we don't already have a module with the given name.
+  if (modules_->find(module->code_file()) != modules_->end()) {
+    BPLOG(INFO) << "Symbols for module " << module->code_file()
+                << " already loaded";
+    return false;
+  }
+
+  BPLOG(INFO) << "Loading symbols for module " << module->code_file()
+              << " from " << map_file;
+
+  char *memory_buffer;
+  size_t memory_buffer_size;
+  if (!ReadSymbolFile(map_file, &memory_buffer, &memory_buffer_size))
+    return false;
+
+  BPLOG(INFO) << "Read symbol file " << map_file << " succeeded";
+
+  bool load_result = LoadModuleUsingMemoryBuffer(module, memory_buffer,
+                                                 memory_buffer_size);
+
+  if (load_result && !ShouldDeleteMemoryBufferAfterLoadModule()) {
+    // memory_buffer has to stay alive as long as the module.
+    memory_buffers_->insert(make_pair(module->code_file(), memory_buffer));
+  } else {
+    delete [] memory_buffer;
+  }
+
+  return load_result;
+}
+
+bool SourceLineResolverBase::LoadModuleUsingMapBuffer(
+    const CodeModule *module, const string &map_buffer) {
+  if (module == NULL)
+    return false;
+
+  // Make sure we don't already have a module with the given name.
+  if (modules_->find(module->code_file()) != modules_->end()) {
+    BPLOG(INFO) << "Symbols for module " << module->code_file()
+                << " already loaded";
+    return false;
+  }
+
+  size_t memory_buffer_size = map_buffer.size() + 1;
+  char *memory_buffer = new char[memory_buffer_size];
+  if (memory_buffer == NULL) {
+    BPLOG(ERROR) << "Could not allocate memory for " << module->code_file();
+    return false;
+  }
+
+  // Can't use strcpy, as the data may contain '\0's before the end.
+  memcpy(memory_buffer, map_buffer.c_str(), map_buffer.size());
+  memory_buffer[map_buffer.size()] = '\0';
+
+  bool load_result = LoadModuleUsingMemoryBuffer(module, memory_buffer,
+                                                 memory_buffer_size);
+
+  if (load_result && !ShouldDeleteMemoryBufferAfterLoadModule()) {
+    // memory_buffer has to stay alive as long as the module.
+    memory_buffers_->insert(make_pair(module->code_file(), memory_buffer));
+  } else {
+    delete [] memory_buffer;
+  }
+
+  return load_result;
+}
+
+bool SourceLineResolverBase::LoadModuleUsingMemoryBuffer(
+    const CodeModule *module,
+    char *memory_buffer,
+    size_t memory_buffer_size) {
+  if (!module)
+    return false;
+
+  // Make sure we don't already have a module with the given name.
+  if (modules_->find(module->code_file()) != modules_->end()) {
+    BPLOG(INFO) << "Symbols for module " << module->code_file()
+                << " already loaded";
+    return false;
+  }
+
+  BPLOG(INFO) << "Loading symbols for module " << module->code_file()
+             << " from memory buffer";
+
+  Module *basic_module = module_factory_->CreateModule(module->code_file());
+
+  // Ownership of memory is NOT transfered to Module::LoadMapFromMemory().
+  if (!basic_module->LoadMapFromMemory(memory_buffer, memory_buffer_size)) {
+    BPLOG(ERROR) << "Too many error while parsing symbol data for module "
+                 << module->code_file();
+    // Returning false from here would be an indication that the symbols for
+    // this module are missing which would be wrong.  Intentionally fall through
+    // and add the module to both the modules_ and the corrupt_modules_ lists.
+    assert(basic_module->IsCorrupt());
+  }
+
+  modules_->insert(make_pair(module->code_file(), basic_module));
+  if (basic_module->IsCorrupt()) {
+    corrupt_modules_->insert(module->code_file());
+  }
+  return true;
+}
+
+bool SourceLineResolverBase::ShouldDeleteMemoryBufferAfterLoadModule() {
+  return true;
+}
+
+void SourceLineResolverBase::UnloadModule(const CodeModule *code_module) {
+  if (!code_module)
+    return;
+
+  ModuleMap::iterator mod_iter = modules_->find(code_module->code_file());
+  if (mod_iter != modules_->end()) {
+    Module *symbol_module = mod_iter->second;
+    delete symbol_module;
+    corrupt_modules_->erase(mod_iter->first);
+    modules_->erase(mod_iter);
+  }
+
+  if (ShouldDeleteMemoryBufferAfterLoadModule()) {
+    // No-op.  Because we never store any memory buffers.
+  } else {
+    // There may be a buffer stored locally, we need to find and delete it.
+    MemoryMap::iterator iter = memory_buffers_->find(code_module->code_file());
+    if (iter != memory_buffers_->end()) {
+      delete [] iter->second;
+      memory_buffers_->erase(iter);
+    }
+  }
+}
+
+bool SourceLineResolverBase::HasModule(const CodeModule *module) {
+  if (!module)
+    return false;
+  return modules_->find(module->code_file()) != modules_->end();
+}
+
+bool SourceLineResolverBase::IsModuleCorrupt(const CodeModule *module) {
+  if (!module)
+    return false;
+  return corrupt_modules_->find(module->code_file()) != corrupt_modules_->end();
+}
+
+void SourceLineResolverBase::FillSourceLineInfo(StackFrame *frame) {
+  if (frame->module) {
+    ModuleMap::const_iterator it = modules_->find(frame->module->code_file());
+    if (it != modules_->end()) {
+      it->second->LookupAddress(frame);
+    }
+  }
+}
+
+WindowsFrameInfo *SourceLineResolverBase::FindWindowsFrameInfo(
+    const StackFrame *frame) {
+  if (frame->module) {
+    ModuleMap::const_iterator it = modules_->find(frame->module->code_file());
+    if (it != modules_->end()) {
+      return it->second->FindWindowsFrameInfo(frame);
+    }
+  }
+  return NULL;
+}
+
+CFIFrameInfo *SourceLineResolverBase::FindCFIFrameInfo(
+    const StackFrame *frame) {
+  if (frame->module) {
+    ModuleMap::const_iterator it = modules_->find(frame->module->code_file());
+    if (it != modules_->end()) {
+      return it->second->FindCFIFrameInfo(frame);
+    }
+  }
+  return NULL;
+}
+
+bool SourceLineResolverBase::CompareString::operator()(
+    const string &s1, const string &s2) const {
+  return strcmp(s1.c_str(), s2.c_str()) < 0;
+}
+
+bool SourceLineResolverBase::Module::ParseCFIRuleSet(
+    const string &rule_set, CFIFrameInfo *frame_info) const {
+  CFIFrameInfoParseHandler handler(frame_info);
+  CFIRuleParser parser(&handler);
+  return parser.Parse(rule_set);
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/processor/source_line_resolver_base_types.h b/google-breakpad/src/processor/source_line_resolver_base_types.h
new file mode 100644
index 0000000..4a9dfb3
--- /dev/null
+++ b/google-breakpad/src/processor/source_line_resolver_base_types.h
@@ -0,0 +1,158 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// source_line_resolver_base_types.h: definition of nested classes/structs in
+// SourceLineResolverBase.  It moves the definitions out of
+// source_line_resolver_base.cc, so that other classes may have access
+// to these private nested types without including source_line_resolver_base.cc
+// In addition, Module is defined as a pure abstract class to be implemented by
+// each concrete source line resolver class.
+//
+// See source_line_resolver_base.h for more documentation.
+//
+// Author: Siyang Xie (lambxsy@google.com)
+
+#include <stdio.h>
+
+#include <map>
+#include <string>
+
+#include "google_breakpad/common/breakpad_types.h"
+#include "google_breakpad/processor/source_line_resolver_base.h"
+#include "google_breakpad/processor/stack_frame.h"
+#include "processor/cfi_frame_info.h"
+#include "processor/windows_frame_info.h"
+
+#ifndef PROCESSOR_SOURCE_LINE_RESOLVER_BASE_TYPES_H__
+#define PROCESSOR_SOURCE_LINE_RESOLVER_BASE_TYPES_H__
+
+namespace google_breakpad {
+
+class SourceLineResolverBase::AutoFileCloser {
+ public:
+  explicit AutoFileCloser(FILE *file) : file_(file) {}
+  ~AutoFileCloser() {
+    if (file_)
+      fclose(file_);
+  }
+
+ private:
+  FILE *file_;
+};
+
+struct SourceLineResolverBase::Line {
+  Line() { }
+  Line(MemAddr addr, MemAddr code_size, int file_id, int source_line)
+      : address(addr)
+      , size(code_size)
+      , source_file_id(file_id)
+      , line(source_line) { }
+
+  MemAddr address;
+  MemAddr size;
+  int32_t source_file_id;
+  int32_t line;
+};
+
+struct SourceLineResolverBase::Function {
+  Function() { }
+  Function(const string &function_name,
+           MemAddr function_address,
+           MemAddr code_size,
+           int set_parameter_size)
+      : name(function_name), address(function_address), size(code_size),
+        parameter_size(set_parameter_size) { }
+
+  string name;
+  MemAddr address;
+  MemAddr size;
+
+  // The size of parameters passed to this function on the stack.
+  int32_t parameter_size;
+};
+
+struct SourceLineResolverBase::PublicSymbol {
+  PublicSymbol() { }
+  PublicSymbol(const string& set_name,
+               MemAddr set_address,
+               int set_parameter_size)
+      : name(set_name),
+        address(set_address),
+        parameter_size(set_parameter_size) {}
+
+  string name;
+  MemAddr address;
+
+  // If the public symbol is used as a function entry point, parameter_size
+  // is set to the size of the parameters passed to the funciton on the
+  // stack, if known.
+  int32_t parameter_size;
+};
+
+class SourceLineResolverBase::Module {
+ public:
+  virtual ~Module() { };
+  // Loads a map from the given buffer in char* type.
+  // Does NOT take ownership of memory_buffer (the caller, source line resolver,
+  // is the owner of memory_buffer).
+  // The passed in |memory buffer| is of size |memory_buffer_size|.  If it is
+  // not null terminated, LoadMapFromMemory will null terminate it by modifying
+  // the passed in buffer.
+  virtual bool LoadMapFromMemory(char *memory_buffer,
+                                 size_t memory_buffer_size) = 0;
+
+  // Tells whether the loaded symbol data is corrupt.  Return value is
+  // undefined, if the symbol data hasn't been loaded yet.
+  virtual bool IsCorrupt() const = 0;
+
+  // Looks up the given relative address, and fills the StackFrame struct
+  // with the result.
+  virtual void LookupAddress(StackFrame *frame) const = 0;
+
+  // If Windows stack walking information is available covering ADDRESS,
+  // return a WindowsFrameInfo structure describing it. If the information
+  // is not available, returns NULL. A NULL return value does not indicate
+  // an error. The caller takes ownership of any returned WindowsFrameInfo
+  // object.
+  virtual WindowsFrameInfo *
+  FindWindowsFrameInfo(const StackFrame *frame) const = 0;
+
+  // If CFI stack walking information is available covering ADDRESS,
+  // return a CFIFrameInfo structure describing it. If the information
+  // is not available, return NULL. The caller takes ownership of any
+  // returned CFIFrameInfo object.
+  virtual CFIFrameInfo *FindCFIFrameInfo(const StackFrame *frame) const = 0;
+ protected:
+  virtual bool ParseCFIRuleSet(const string &rule_set,
+                               CFIFrameInfo *frame_info) const;
+};
+
+}  // namespace google_breakpad
+
+#endif  // PROCESSOR_SOURCE_LINE_RESOLVER_BASE_TYPES_H__
diff --git a/google-breakpad/src/processor/stack_frame_cpu.cc b/google-breakpad/src/processor/stack_frame_cpu.cc
new file mode 100644
index 0000000..6175dc7
--- /dev/null
+++ b/google-breakpad/src/processor/stack_frame_cpu.cc
@@ -0,0 +1,79 @@
+// Copyright 2013 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// stack_frame_cpu.h: CPU-specific StackFrame extensions.
+//
+// See google_breakpad/processor/stack_frame_cpu.h for documentation.
+//
+// Author: Colin Blundell
+
+#include "google_breakpad/processor/stack_frame_cpu.h"
+
+namespace google_breakpad {
+
+const uint64_t StackFrameARM64::CONTEXT_VALID_X0;
+const uint64_t StackFrameARM64::CONTEXT_VALID_X1;
+const uint64_t StackFrameARM64::CONTEXT_VALID_X2;
+const uint64_t StackFrameARM64::CONTEXT_VALID_X3;
+const uint64_t StackFrameARM64::CONTEXT_VALID_X4;
+const uint64_t StackFrameARM64::CONTEXT_VALID_X5;
+const uint64_t StackFrameARM64::CONTEXT_VALID_X6;
+const uint64_t StackFrameARM64::CONTEXT_VALID_X7;
+const uint64_t StackFrameARM64::CONTEXT_VALID_X8;
+const uint64_t StackFrameARM64::CONTEXT_VALID_X9;
+const uint64_t StackFrameARM64::CONTEXT_VALID_X10;
+const uint64_t StackFrameARM64::CONTEXT_VALID_X11;
+const uint64_t StackFrameARM64::CONTEXT_VALID_X12;
+const uint64_t StackFrameARM64::CONTEXT_VALID_X13;
+const uint64_t StackFrameARM64::CONTEXT_VALID_X14;
+const uint64_t StackFrameARM64::CONTEXT_VALID_X15;
+const uint64_t StackFrameARM64::CONTEXT_VALID_X16;
+const uint64_t StackFrameARM64::CONTEXT_VALID_X17;
+const uint64_t StackFrameARM64::CONTEXT_VALID_X18;
+const uint64_t StackFrameARM64::CONTEXT_VALID_X19;
+const uint64_t StackFrameARM64::CONTEXT_VALID_X20;
+const uint64_t StackFrameARM64::CONTEXT_VALID_X21;
+const uint64_t StackFrameARM64::CONTEXT_VALID_X22;
+const uint64_t StackFrameARM64::CONTEXT_VALID_X23;
+const uint64_t StackFrameARM64::CONTEXT_VALID_X24;
+const uint64_t StackFrameARM64::CONTEXT_VALID_X25;
+const uint64_t StackFrameARM64::CONTEXT_VALID_X26;
+const uint64_t StackFrameARM64::CONTEXT_VALID_X27;
+const uint64_t StackFrameARM64::CONTEXT_VALID_X28;
+const uint64_t StackFrameARM64::CONTEXT_VALID_X29;
+const uint64_t StackFrameARM64::CONTEXT_VALID_X30;
+const uint64_t StackFrameARM64::CONTEXT_VALID_X31;
+const uint64_t StackFrameARM64::CONTEXT_VALID_X32;
+const uint64_t StackFrameARM64::CONTEXT_VALID_FP;
+const uint64_t StackFrameARM64::CONTEXT_VALID_LR;
+const uint64_t StackFrameARM64::CONTEXT_VALID_SP;
+const uint64_t StackFrameARM64::CONTEXT_VALID_PC;
+const uint64_t StackFrameARM64::CONTEXT_VALID_ALL;
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/processor/stack_frame_symbolizer.cc b/google-breakpad/src/processor/stack_frame_symbolizer.cc
new file mode 100644
index 0000000..5c8dbe5
--- /dev/null
+++ b/google-breakpad/src/processor/stack_frame_symbolizer.cc
@@ -0,0 +1,138 @@
+// Copyright (c) 2012 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Implementation of StackFrameSymbolizer, which encapsulates the logic of how
+// SourceLineResolverInterface interacts with SymbolSupplier to fill source
+// line information in a stack frame, and also looks up WindowsFrameInfo or
+// CFIFrameInfo for a stack frame.
+
+#include "google_breakpad/processor/stack_frame_symbolizer.h"
+
+#include <assert.h>
+
+#include "common/scoped_ptr.h"
+#include "google_breakpad/processor/code_module.h"
+#include "google_breakpad/processor/code_modules.h"
+#include "google_breakpad/processor/source_line_resolver_interface.h"
+#include "google_breakpad/processor/stack_frame.h"
+#include "google_breakpad/processor/symbol_supplier.h"
+#include "google_breakpad/processor/system_info.h"
+#include "processor/linked_ptr.h"
+#include "processor/logging.h"
+
+namespace google_breakpad {
+
+StackFrameSymbolizer::StackFrameSymbolizer(
+    SymbolSupplier* supplier,
+    SourceLineResolverInterface* resolver) : supplier_(supplier),
+                                             resolver_(resolver) { }
+
+StackFrameSymbolizer::SymbolizerResult StackFrameSymbolizer::FillSourceLineInfo(
+    const CodeModules* modules,
+    const SystemInfo* system_info,
+    StackFrame* frame) {
+  assert(frame);
+
+  if (!modules) return kError;
+  const CodeModule* module = modules->GetModuleForAddress(frame->instruction);
+  if (!module) return kError;
+  frame->module = module;
+
+  if (!resolver_) return kError;  // no resolver.
+  // If module is known to have missing symbol file, return.
+  if (no_symbol_modules_.find(module->code_file()) !=
+      no_symbol_modules_.end()) {
+    return kError;
+  }
+
+  // If module is already loaded, go ahead to fill source line info and return.
+  if (resolver_->HasModule(frame->module)) {
+    resolver_->FillSourceLineInfo(frame);
+    return resolver_->IsModuleCorrupt(frame->module) ?
+        kWarningCorruptSymbols : kNoError;
+  }
+
+  // Module needs to fetch symbol file. First check to see if supplier exists.
+  if (!supplier_) {
+    return kError;
+  }
+
+  // Start fetching symbol from supplier.
+  string symbol_file;
+  char* symbol_data = NULL;
+  size_t symbol_data_size;
+  SymbolSupplier::SymbolResult symbol_result = supplier_->GetCStringSymbolData(
+      module, system_info, &symbol_file, &symbol_data, &symbol_data_size);
+
+  switch (symbol_result) {
+    case SymbolSupplier::FOUND: {
+      bool load_success = resolver_->LoadModuleUsingMemoryBuffer(
+          frame->module,
+          symbol_data,
+          symbol_data_size);
+      if (resolver_->ShouldDeleteMemoryBufferAfterLoadModule()) {
+        supplier_->FreeSymbolData(module);
+      }
+
+      if (load_success) {
+        resolver_->FillSourceLineInfo(frame);
+        return resolver_->IsModuleCorrupt(frame->module) ?
+            kWarningCorruptSymbols : kNoError;
+      } else {
+        BPLOG(ERROR) << "Failed to load symbol file in resolver.";
+        no_symbol_modules_.insert(module->code_file());
+        return kError;
+      }
+    }
+
+    case SymbolSupplier::NOT_FOUND:
+      no_symbol_modules_.insert(module->code_file());
+      return kError;
+
+    case SymbolSupplier::INTERRUPT:
+      return kInterrupt;
+
+    default:
+      BPLOG(ERROR) << "Unknown SymbolResult enum: " << symbol_result;
+      return kError;
+  }
+  return kError;
+}
+
+WindowsFrameInfo* StackFrameSymbolizer::FindWindowsFrameInfo(
+    const StackFrame* frame) {
+  return resolver_ ? resolver_->FindWindowsFrameInfo(frame) : NULL;
+}
+
+CFIFrameInfo* StackFrameSymbolizer::FindCFIFrameInfo(
+    const StackFrame* frame) {
+  return resolver_ ? resolver_->FindCFIFrameInfo(frame) : NULL;
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/processor/stackwalk_common.cc b/google-breakpad/src/processor/stackwalk_common.cc
new file mode 100644
index 0000000..3a6e17f
--- /dev/null
+++ b/google-breakpad/src/processor/stackwalk_common.cc
@@ -0,0 +1,929 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// stackwalk_common.cc: Module shared by the {micro,mini}dump_stackwalck
+// executables to print the content of dumps (w/ stack traces) on the console.
+//
+// Author: Mark Mentovai
+
+#include "processor/stackwalk_common.h"
+
+#include <assert.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <string>
+#include <vector>
+
+#include "common/using_std_string.h"
+#include "google_breakpad/processor/call_stack.h"
+#include "google_breakpad/processor/code_module.h"
+#include "google_breakpad/processor/code_modules.h"
+#include "google_breakpad/processor/process_state.h"
+#include "google_breakpad/processor/source_line_resolver_interface.h"
+#include "google_breakpad/processor/stack_frame_cpu.h"
+#include "processor/logging.h"
+#include "processor/pathname_stripper.h"
+
+namespace google_breakpad {
+
+namespace {
+
+using std::vector;
+
+// Separator character for machine readable output.
+static const char kOutputSeparator = '|';
+
+// PrintRegister prints a register's name and value to stdout.  It will
+// print four registers on a line.  For the first register in a set,
+// pass 0 for |start_col|.  For registers in a set, pass the most recent
+// return value of PrintRegister.
+// The caller is responsible for printing the final newline after a set
+// of registers is completely printed, regardless of the number of calls
+// to PrintRegister.
+static const int kMaxWidth = 80;  // optimize for an 80-column terminal
+static int PrintRegister(const char *name, uint32_t value, int start_col) {
+  char buffer[64];
+  snprintf(buffer, sizeof(buffer), " %5s = 0x%08x", name, value);
+
+  if (start_col + static_cast<ssize_t>(strlen(buffer)) > kMaxWidth) {
+    start_col = 0;
+    printf("\n ");
+  }
+  fputs(buffer, stdout);
+
+  return start_col + strlen(buffer);
+}
+
+// PrintRegister64 does the same thing, but for 64-bit registers.
+static int PrintRegister64(const char *name, uint64_t value, int start_col) {
+  char buffer[64];
+  snprintf(buffer, sizeof(buffer), " %5s = 0x%016" PRIx64 , name, value);
+
+  if (start_col + static_cast<ssize_t>(strlen(buffer)) > kMaxWidth) {
+    start_col = 0;
+    printf("\n ");
+  }
+  fputs(buffer, stdout);
+
+  return start_col + strlen(buffer);
+}
+
+// StripSeparator takes a string |original| and returns a copy
+// of the string with all occurences of |kOutputSeparator| removed.
+static string StripSeparator(const string &original) {
+  string result = original;
+  string::size_type position = 0;
+  while ((position = result.find(kOutputSeparator, position)) != string::npos) {
+    result.erase(position, 1);
+  }
+  position = 0;
+  while ((position = result.find('\n', position)) != string::npos) {
+    result.erase(position, 1);
+  }
+  return result;
+}
+
+// PrintStackContents prints the stack contents of the current frame to stdout.
+static void PrintStackContents(const std::string &indent,
+                               const StackFrame *frame,
+                               const StackFrame *prev_frame,
+                               const std::string &cpu,
+                               const MemoryRegion *memory,
+                               const CodeModules* modules,
+                               SourceLineResolverInterface *resolver) {
+  // Find stack range.
+  int word_length = 0;
+  uint64_t stack_begin = 0, stack_end = 0;
+  if (cpu == "x86") {
+    word_length = 4;
+    const StackFrameX86 *frame_x86 = static_cast<const StackFrameX86*>(frame);
+    const StackFrameX86 *prev_frame_x86 =
+        static_cast<const StackFrameX86*>(prev_frame);
+    if ((frame_x86->context_validity & StackFrameX86::CONTEXT_VALID_ESP) &&
+        (prev_frame_x86->context_validity & StackFrameX86::CONTEXT_VALID_ESP)) {
+      stack_begin = frame_x86->context.esp;
+      stack_end = prev_frame_x86->context.esp;
+    }
+  } else if (cpu == "amd64") {
+    word_length = 8;
+    const StackFrameAMD64 *frame_amd64 =
+        static_cast<const StackFrameAMD64*>(frame);
+    const StackFrameAMD64 *prev_frame_amd64 =
+        static_cast<const StackFrameAMD64*>(prev_frame);
+    if ((frame_amd64->context_validity & StackFrameAMD64::CONTEXT_VALID_RSP) &&
+        (prev_frame_amd64->context_validity &
+         StackFrameAMD64::CONTEXT_VALID_RSP)) {
+      stack_begin = frame_amd64->context.rsp;
+      stack_end = prev_frame_amd64->context.rsp;
+    }
+  } else if (cpu == "arm") {
+    word_length = 4;
+    const StackFrameARM *frame_arm = static_cast<const StackFrameARM*>(frame);
+    const StackFrameARM *prev_frame_arm =
+        static_cast<const StackFrameARM*>(prev_frame);
+    if ((frame_arm->context_validity & StackFrameARM::CONTEXT_VALID_SP) &&
+        (prev_frame_arm->context_validity & StackFrameARM::CONTEXT_VALID_SP)) {
+      stack_begin = frame_arm->context.iregs[13];
+      stack_end = prev_frame_arm->context.iregs[13];
+    }
+  } else if (cpu == "arm64") {
+    word_length = 8;
+    const StackFrameARM64 *frame_arm64 =
+        static_cast<const StackFrameARM64*>(frame);
+    const StackFrameARM64 *prev_frame_arm64 =
+        static_cast<const StackFrameARM64*>(prev_frame);
+    if ((frame_arm64->context_validity & StackFrameARM64::CONTEXT_VALID_SP) &&
+        (prev_frame_arm64->context_validity &
+         StackFrameARM64::CONTEXT_VALID_SP)) {
+      stack_begin = frame_arm64->context.iregs[31];
+      stack_end = prev_frame_arm64->context.iregs[31];
+    }
+  }
+  if (!word_length || !stack_begin || !stack_end)
+    return;
+
+  // Print stack contents.
+  printf("\n%sStack contents:", indent.c_str());
+  for(uint64_t address = stack_begin; address < stack_end; ) {
+    // Print the start address of this row.
+    if (word_length == 4)
+      printf("\n%s %08x", indent.c_str(), static_cast<uint32_t>(address));
+    else
+      printf("\n%s %016" PRIx64, indent.c_str(), address);
+
+    // Print data in hex.
+    const int kBytesPerRow = 16;
+    std::string data_as_string;
+    for (int i = 0; i < kBytesPerRow; ++i, ++address) {
+      uint8_t value = 0;
+      if (address < stack_end &&
+          memory->GetMemoryAtAddress(address, &value)) {
+        printf(" %02x", value);
+        data_as_string.push_back(isprint(value) ? value : '.');
+      } else {
+        printf("   ");
+        data_as_string.push_back(' ');
+      }
+    }
+    // Print data as string.
+    printf("  %s", data_as_string.c_str());
+  }
+
+  // Try to find instruction pointers from stack.
+  printf("\n%sPossible instruction pointers:\n", indent.c_str());
+  for (uint64_t address = stack_begin; address < stack_end;
+       address += word_length) {
+    StackFrame pointee_frame;
+
+    // Read a word (possible instruction pointer) from stack.
+    if (word_length == 4) {
+      uint32_t data32 = 0;
+      memory->GetMemoryAtAddress(address, &data32);
+      pointee_frame.instruction = data32;
+    } else {
+      uint64_t data64 = 0;
+      memory->GetMemoryAtAddress(address, &data64);
+      pointee_frame.instruction = data64;
+    }
+    pointee_frame.module =
+        modules->GetModuleForAddress(pointee_frame.instruction);
+
+    // Try to look up the function name.
+    if (pointee_frame.module)
+      resolver->FillSourceLineInfo(&pointee_frame);
+
+    // Print function name.
+    if (!pointee_frame.function_name.empty()) {
+      if (word_length == 4) {
+        printf("%s *(0x%08x) = 0x%08x", indent.c_str(),
+               static_cast<uint32_t>(address),
+               static_cast<uint32_t>(pointee_frame.instruction));
+      } else {
+        printf("%s *(0x%016" PRIx64 ") = 0x%016" PRIx64,
+               indent.c_str(), address, pointee_frame.instruction);
+      }
+      printf(" <%s> [%s : %d + 0x%" PRIx64 "]\n",
+             pointee_frame.function_name.c_str(),
+             PathnameStripper::File(pointee_frame.source_file_name).c_str(),
+             pointee_frame.source_line,
+             pointee_frame.instruction - pointee_frame.source_line_base);
+    }
+  }
+  printf("\n");
+}
+
+// PrintStack prints the call stack in |stack| to stdout, in a reasonably
+// useful form.  Module, function, and source file names are displayed if
+// they are available.  The code offset to the base code address of the
+// source line, function, or module is printed, preferring them in that
+// order.  If no source line, function, or module information is available,
+// an absolute code offset is printed.
+//
+// If |cpu| is a recognized CPU name, relevant register state for each stack
+// frame printed is also output, if available.
+static void PrintStack(const CallStack *stack,
+                       const string &cpu,
+                       bool output_stack_contents,
+                       const MemoryRegion* memory,
+                       const CodeModules* modules,
+                       SourceLineResolverInterface* resolver) {
+  int frame_count = stack->frames()->size();
+  if (frame_count == 0) {
+    printf(" <no frames>\n");
+  }
+  for (int frame_index = 0; frame_index < frame_count; ++frame_index) {
+    const StackFrame *frame = stack->frames()->at(frame_index);
+    printf("%2d  ", frame_index);
+
+    uint64_t instruction_address = frame->ReturnAddress();
+
+    if (frame->module) {
+      printf("%s", PathnameStripper::File(frame->module->code_file()).c_str());
+      if (!frame->function_name.empty()) {
+        printf("!%s", frame->function_name.c_str());
+        if (!frame->source_file_name.empty()) {
+          string source_file = PathnameStripper::File(frame->source_file_name);
+          printf(" [%s : %d + 0x%" PRIx64 "]",
+                 source_file.c_str(),
+                 frame->source_line,
+                 instruction_address - frame->source_line_base);
+        } else {
+          printf(" + 0x%" PRIx64, instruction_address - frame->function_base);
+        }
+      } else {
+        printf(" + 0x%" PRIx64,
+               instruction_address - frame->module->base_address());
+      }
+    } else {
+      printf("0x%" PRIx64, instruction_address);
+    }
+    printf("\n ");
+
+    int sequence = 0;
+    if (cpu == "x86") {
+      const StackFrameX86 *frame_x86 =
+        reinterpret_cast<const StackFrameX86*>(frame);
+
+      if (frame_x86->context_validity & StackFrameX86::CONTEXT_VALID_EIP)
+        sequence = PrintRegister("eip", frame_x86->context.eip, sequence);
+      if (frame_x86->context_validity & StackFrameX86::CONTEXT_VALID_ESP)
+        sequence = PrintRegister("esp", frame_x86->context.esp, sequence);
+      if (frame_x86->context_validity & StackFrameX86::CONTEXT_VALID_EBP)
+        sequence = PrintRegister("ebp", frame_x86->context.ebp, sequence);
+      if (frame_x86->context_validity & StackFrameX86::CONTEXT_VALID_EBX)
+        sequence = PrintRegister("ebx", frame_x86->context.ebx, sequence);
+      if (frame_x86->context_validity & StackFrameX86::CONTEXT_VALID_ESI)
+        sequence = PrintRegister("esi", frame_x86->context.esi, sequence);
+      if (frame_x86->context_validity & StackFrameX86::CONTEXT_VALID_EDI)
+        sequence = PrintRegister("edi", frame_x86->context.edi, sequence);
+      if (frame_x86->context_validity == StackFrameX86::CONTEXT_VALID_ALL) {
+        sequence = PrintRegister("eax", frame_x86->context.eax, sequence);
+        sequence = PrintRegister("ecx", frame_x86->context.ecx, sequence);
+        sequence = PrintRegister("edx", frame_x86->context.edx, sequence);
+        sequence = PrintRegister("efl", frame_x86->context.eflags, sequence);
+      }
+    } else if (cpu == "ppc") {
+      const StackFramePPC *frame_ppc =
+        reinterpret_cast<const StackFramePPC*>(frame);
+
+      if (frame_ppc->context_validity & StackFramePPC::CONTEXT_VALID_SRR0)
+        sequence = PrintRegister("srr0", frame_ppc->context.srr0, sequence);
+      if (frame_ppc->context_validity & StackFramePPC::CONTEXT_VALID_GPR1)
+        sequence = PrintRegister("r1", frame_ppc->context.gpr[1], sequence);
+    } else if (cpu == "amd64") {
+      const StackFrameAMD64 *frame_amd64 =
+        reinterpret_cast<const StackFrameAMD64*>(frame);
+
+      if (frame_amd64->context_validity & StackFrameAMD64::CONTEXT_VALID_RAX)
+        sequence = PrintRegister64("rax", frame_amd64->context.rax, sequence);
+      if (frame_amd64->context_validity & StackFrameAMD64::CONTEXT_VALID_RDX)
+        sequence = PrintRegister64("rdx", frame_amd64->context.rdx, sequence);
+      if (frame_amd64->context_validity & StackFrameAMD64::CONTEXT_VALID_RCX)
+        sequence = PrintRegister64("rcx", frame_amd64->context.rcx, sequence);
+      if (frame_amd64->context_validity & StackFrameAMD64::CONTEXT_VALID_RBX)
+        sequence = PrintRegister64("rbx", frame_amd64->context.rbx, sequence);
+      if (frame_amd64->context_validity & StackFrameAMD64::CONTEXT_VALID_RSI)
+        sequence = PrintRegister64("rsi", frame_amd64->context.rsi, sequence);
+      if (frame_amd64->context_validity & StackFrameAMD64::CONTEXT_VALID_RDI)
+        sequence = PrintRegister64("rdi", frame_amd64->context.rdi, sequence);
+      if (frame_amd64->context_validity & StackFrameAMD64::CONTEXT_VALID_RBP)
+        sequence = PrintRegister64("rbp", frame_amd64->context.rbp, sequence);
+      if (frame_amd64->context_validity & StackFrameAMD64::CONTEXT_VALID_RSP)
+        sequence = PrintRegister64("rsp", frame_amd64->context.rsp, sequence);
+      if (frame_amd64->context_validity & StackFrameAMD64::CONTEXT_VALID_R8)
+        sequence = PrintRegister64("r8", frame_amd64->context.r8, sequence);
+      if (frame_amd64->context_validity & StackFrameAMD64::CONTEXT_VALID_R9)
+        sequence = PrintRegister64("r9", frame_amd64->context.r9, sequence);
+      if (frame_amd64->context_validity & StackFrameAMD64::CONTEXT_VALID_R10)
+        sequence = PrintRegister64("r10", frame_amd64->context.r10, sequence);
+      if (frame_amd64->context_validity & StackFrameAMD64::CONTEXT_VALID_R11)
+        sequence = PrintRegister64("r11", frame_amd64->context.r11, sequence);
+      if (frame_amd64->context_validity & StackFrameAMD64::CONTEXT_VALID_R12)
+        sequence = PrintRegister64("r12", frame_amd64->context.r12, sequence);
+      if (frame_amd64->context_validity & StackFrameAMD64::CONTEXT_VALID_R13)
+        sequence = PrintRegister64("r13", frame_amd64->context.r13, sequence);
+      if (frame_amd64->context_validity & StackFrameAMD64::CONTEXT_VALID_R14)
+        sequence = PrintRegister64("r14", frame_amd64->context.r14, sequence);
+      if (frame_amd64->context_validity & StackFrameAMD64::CONTEXT_VALID_R15)
+        sequence = PrintRegister64("r15", frame_amd64->context.r15, sequence);
+      if (frame_amd64->context_validity & StackFrameAMD64::CONTEXT_VALID_RIP)
+        sequence = PrintRegister64("rip", frame_amd64->context.rip, sequence);
+    } else if (cpu == "sparc") {
+      const StackFrameSPARC *frame_sparc =
+        reinterpret_cast<const StackFrameSPARC*>(frame);
+
+      if (frame_sparc->context_validity & StackFrameSPARC::CONTEXT_VALID_SP)
+        sequence = PrintRegister("sp", frame_sparc->context.g_r[14], sequence);
+      if (frame_sparc->context_validity & StackFrameSPARC::CONTEXT_VALID_FP)
+        sequence = PrintRegister("fp", frame_sparc->context.g_r[30], sequence);
+      if (frame_sparc->context_validity & StackFrameSPARC::CONTEXT_VALID_PC)
+        sequence = PrintRegister("pc", frame_sparc->context.pc, sequence);
+    } else if (cpu == "arm") {
+      const StackFrameARM *frame_arm =
+        reinterpret_cast<const StackFrameARM*>(frame);
+
+      // Argument registers (caller-saves), which will likely only be valid
+      // for the youngest frame.
+      if (frame_arm->context_validity & StackFrameARM::CONTEXT_VALID_R0)
+        sequence = PrintRegister("r0", frame_arm->context.iregs[0], sequence);
+      if (frame_arm->context_validity & StackFrameARM::CONTEXT_VALID_R1)
+        sequence = PrintRegister("r1", frame_arm->context.iregs[1], sequence);
+      if (frame_arm->context_validity & StackFrameARM::CONTEXT_VALID_R2)
+        sequence = PrintRegister("r2", frame_arm->context.iregs[2], sequence);
+      if (frame_arm->context_validity & StackFrameARM::CONTEXT_VALID_R3)
+        sequence = PrintRegister("r3", frame_arm->context.iregs[3], sequence);
+
+      // General-purpose callee-saves registers.
+      if (frame_arm->context_validity & StackFrameARM::CONTEXT_VALID_R4)
+        sequence = PrintRegister("r4", frame_arm->context.iregs[4], sequence);
+      if (frame_arm->context_validity & StackFrameARM::CONTEXT_VALID_R5)
+        sequence = PrintRegister("r5", frame_arm->context.iregs[5], sequence);
+      if (frame_arm->context_validity & StackFrameARM::CONTEXT_VALID_R6)
+        sequence = PrintRegister("r6", frame_arm->context.iregs[6], sequence);
+      if (frame_arm->context_validity & StackFrameARM::CONTEXT_VALID_R7)
+        sequence = PrintRegister("r7", frame_arm->context.iregs[7], sequence);
+      if (frame_arm->context_validity & StackFrameARM::CONTEXT_VALID_R8)
+        sequence = PrintRegister("r8", frame_arm->context.iregs[8], sequence);
+      if (frame_arm->context_validity & StackFrameARM::CONTEXT_VALID_R9)
+        sequence = PrintRegister("r9", frame_arm->context.iregs[9], sequence);
+      if (frame_arm->context_validity & StackFrameARM::CONTEXT_VALID_R10)
+        sequence = PrintRegister("r10", frame_arm->context.iregs[10], sequence);
+      if (frame_arm->context_validity & StackFrameARM::CONTEXT_VALID_R12)
+        sequence = PrintRegister("r12", frame_arm->context.iregs[12], sequence);
+
+      // Registers with a dedicated or conventional purpose.
+      if (frame_arm->context_validity & StackFrameARM::CONTEXT_VALID_FP)
+        sequence = PrintRegister("fp", frame_arm->context.iregs[11], sequence);
+      if (frame_arm->context_validity & StackFrameARM::CONTEXT_VALID_SP)
+        sequence = PrintRegister("sp", frame_arm->context.iregs[13], sequence);
+      if (frame_arm->context_validity & StackFrameARM::CONTEXT_VALID_LR)
+        sequence = PrintRegister("lr", frame_arm->context.iregs[14], sequence);
+      if (frame_arm->context_validity & StackFrameARM::CONTEXT_VALID_PC)
+        sequence = PrintRegister("pc", frame_arm->context.iregs[15], sequence);
+    } else if (cpu == "arm64") {
+      const StackFrameARM64 *frame_arm64 =
+        reinterpret_cast<const StackFrameARM64*>(frame);
+
+      if (frame_arm64->context_validity & StackFrameARM64::CONTEXT_VALID_X0) {
+        sequence =
+            PrintRegister64("x0", frame_arm64->context.iregs[0], sequence);
+      }
+      if (frame_arm64->context_validity & StackFrameARM64::CONTEXT_VALID_X1) {
+        sequence =
+            PrintRegister64("x1", frame_arm64->context.iregs[1], sequence);
+      }
+      if (frame_arm64->context_validity & StackFrameARM64::CONTEXT_VALID_X2) {
+        sequence =
+            PrintRegister64("x2", frame_arm64->context.iregs[2], sequence);
+      }
+      if (frame_arm64->context_validity & StackFrameARM64::CONTEXT_VALID_X3) {
+        sequence =
+            PrintRegister64("x3", frame_arm64->context.iregs[3], sequence);
+      }
+      if (frame_arm64->context_validity & StackFrameARM64::CONTEXT_VALID_X4) {
+        sequence =
+            PrintRegister64("x4", frame_arm64->context.iregs[4], sequence);
+      }
+      if (frame_arm64->context_validity & StackFrameARM64::CONTEXT_VALID_X5) {
+        sequence =
+            PrintRegister64("x5", frame_arm64->context.iregs[5], sequence);
+      }
+      if (frame_arm64->context_validity & StackFrameARM64::CONTEXT_VALID_X6) {
+        sequence =
+            PrintRegister64("x6", frame_arm64->context.iregs[6], sequence);
+      }
+      if (frame_arm64->context_validity & StackFrameARM64::CONTEXT_VALID_X7) {
+        sequence =
+            PrintRegister64("x7", frame_arm64->context.iregs[7], sequence);
+      }
+      if (frame_arm64->context_validity & StackFrameARM64::CONTEXT_VALID_X8) {
+        sequence =
+            PrintRegister64("x8", frame_arm64->context.iregs[8], sequence);
+      }
+      if (frame_arm64->context_validity & StackFrameARM64::CONTEXT_VALID_X9) {
+        sequence =
+            PrintRegister64("x9", frame_arm64->context.iregs[9], sequence);
+      }
+      if (frame_arm64->context_validity & StackFrameARM64::CONTEXT_VALID_X10) {
+        sequence =
+            PrintRegister64("x10", frame_arm64->context.iregs[10], sequence);
+      }
+      if (frame_arm64->context_validity & StackFrameARM64::CONTEXT_VALID_X11) {
+        sequence =
+            PrintRegister64("x11", frame_arm64->context.iregs[11], sequence);
+      }
+      if (frame_arm64->context_validity & StackFrameARM64::CONTEXT_VALID_X12) {
+        sequence =
+            PrintRegister64("x12", frame_arm64->context.iregs[12], sequence);
+      }
+      if (frame_arm64->context_validity & StackFrameARM64::CONTEXT_VALID_X13) {
+        sequence =
+            PrintRegister64("x13", frame_arm64->context.iregs[13], sequence);
+      }
+      if (frame_arm64->context_validity & StackFrameARM64::CONTEXT_VALID_X14) {
+        sequence =
+            PrintRegister64("x14", frame_arm64->context.iregs[14], sequence);
+      }
+      if (frame_arm64->context_validity & StackFrameARM64::CONTEXT_VALID_X15) {
+        sequence =
+            PrintRegister64("x15", frame_arm64->context.iregs[15], sequence);
+      }
+      if (frame_arm64->context_validity & StackFrameARM64::CONTEXT_VALID_X16) {
+        sequence =
+            PrintRegister64("x16", frame_arm64->context.iregs[16], sequence);
+      }
+      if (frame_arm64->context_validity & StackFrameARM64::CONTEXT_VALID_X17) {
+        sequence =
+            PrintRegister64("x17", frame_arm64->context.iregs[17], sequence);
+      }
+      if (frame_arm64->context_validity & StackFrameARM64::CONTEXT_VALID_X18) {
+        sequence =
+            PrintRegister64("x18", frame_arm64->context.iregs[18], sequence);
+      }
+      if (frame_arm64->context_validity & StackFrameARM64::CONTEXT_VALID_X19) {
+        sequence =
+            PrintRegister64("x19", frame_arm64->context.iregs[19], sequence);
+      }
+      if (frame_arm64->context_validity & StackFrameARM64::CONTEXT_VALID_X20) {
+        sequence =
+            PrintRegister64("x20", frame_arm64->context.iregs[20], sequence);
+      }
+      if (frame_arm64->context_validity & StackFrameARM64::CONTEXT_VALID_X21) {
+        sequence =
+            PrintRegister64("x21", frame_arm64->context.iregs[21], sequence);
+      }
+      if (frame_arm64->context_validity & StackFrameARM64::CONTEXT_VALID_X22) {
+        sequence =
+            PrintRegister64("x22", frame_arm64->context.iregs[22], sequence);
+      }
+      if (frame_arm64->context_validity & StackFrameARM64::CONTEXT_VALID_X23) {
+        sequence =
+            PrintRegister64("x23", frame_arm64->context.iregs[23], sequence);
+      }
+      if (frame_arm64->context_validity & StackFrameARM64::CONTEXT_VALID_X24) {
+        sequence =
+            PrintRegister64("x24", frame_arm64->context.iregs[24], sequence);
+      }
+      if (frame_arm64->context_validity & StackFrameARM64::CONTEXT_VALID_X25) {
+        sequence =
+            PrintRegister64("x25", frame_arm64->context.iregs[25], sequence);
+      }
+      if (frame_arm64->context_validity & StackFrameARM64::CONTEXT_VALID_X26) {
+        sequence =
+            PrintRegister64("x26", frame_arm64->context.iregs[26], sequence);
+      }
+      if (frame_arm64->context_validity & StackFrameARM64::CONTEXT_VALID_X27) {
+        sequence =
+            PrintRegister64("x27", frame_arm64->context.iregs[27], sequence);
+      }
+      if (frame_arm64->context_validity & StackFrameARM64::CONTEXT_VALID_X28) {
+        sequence =
+            PrintRegister64("x28", frame_arm64->context.iregs[28], sequence);
+      }
+
+      // Registers with a dedicated or conventional purpose.
+      if (frame_arm64->context_validity & StackFrameARM64::CONTEXT_VALID_FP) {
+        sequence =
+            PrintRegister64("fp", frame_arm64->context.iregs[29], sequence);
+      }
+      if (frame_arm64->context_validity & StackFrameARM64::CONTEXT_VALID_LR) {
+        sequence =
+            PrintRegister64("lr", frame_arm64->context.iregs[30], sequence);
+      }
+      if (frame_arm64->context_validity & StackFrameARM64::CONTEXT_VALID_SP) {
+        sequence =
+            PrintRegister64("sp", frame_arm64->context.iregs[31], sequence);
+      }
+      if (frame_arm64->context_validity & StackFrameARM64::CONTEXT_VALID_PC) {
+        sequence =
+            PrintRegister64("pc", frame_arm64->context.iregs[32], sequence);
+      }
+    } else if (cpu == "mips") {
+      const StackFrameMIPS* frame_mips =
+        reinterpret_cast<const StackFrameMIPS*>(frame);
+
+      if (frame_mips->context_validity & StackFrameMIPS::CONTEXT_VALID_GP)
+        sequence = PrintRegister64("gp",
+                     frame_mips->context.iregs[MD_CONTEXT_MIPS_REG_GP],
+                     sequence);
+      if (frame_mips->context_validity & StackFrameMIPS::CONTEXT_VALID_SP)
+        sequence = PrintRegister64("sp",
+                     frame_mips->context.iregs[MD_CONTEXT_MIPS_REG_SP],
+                     sequence);
+      if (frame_mips->context_validity & StackFrameMIPS::CONTEXT_VALID_FP)
+        sequence = PrintRegister64("fp",
+                     frame_mips->context.iregs[MD_CONTEXT_MIPS_REG_FP],
+                     sequence);
+      if (frame_mips->context_validity & StackFrameMIPS::CONTEXT_VALID_RA)
+        sequence = PrintRegister64("ra",
+                     frame_mips->context.iregs[MD_CONTEXT_MIPS_REG_RA],
+                     sequence);
+      if (frame_mips->context_validity & StackFrameMIPS::CONTEXT_VALID_PC)
+        sequence = PrintRegister64("pc", frame_mips->context.epc, sequence);
+
+      // Save registers s0-s7
+      if (frame_mips->context_validity & StackFrameMIPS::CONTEXT_VALID_S0)
+        sequence = PrintRegister64("s0",
+                     frame_mips->context.iregs[MD_CONTEXT_MIPS_REG_S0],
+                     sequence);
+      if (frame_mips->context_validity & StackFrameMIPS::CONTEXT_VALID_S1)
+        sequence = PrintRegister64("s1",
+                     frame_mips->context.iregs[MD_CONTEXT_MIPS_REG_S1],
+                     sequence);
+      if (frame_mips->context_validity & StackFrameMIPS::CONTEXT_VALID_S2)
+        sequence = PrintRegister64("s2",
+                     frame_mips->context.iregs[MD_CONTEXT_MIPS_REG_S2],
+                     sequence);
+      if (frame_mips->context_validity & StackFrameMIPS::CONTEXT_VALID_S3)
+        sequence = PrintRegister64("s3",
+                     frame_mips->context.iregs[MD_CONTEXT_MIPS_REG_S3],
+                     sequence);
+      if (frame_mips->context_validity & StackFrameMIPS::CONTEXT_VALID_S4)
+        sequence = PrintRegister64("s4",
+                     frame_mips->context.iregs[MD_CONTEXT_MIPS_REG_S4],
+                     sequence);
+      if (frame_mips->context_validity & StackFrameMIPS::CONTEXT_VALID_S5)
+        sequence = PrintRegister64("s5",
+                     frame_mips->context.iregs[MD_CONTEXT_MIPS_REG_S5],
+                     sequence);
+      if (frame_mips->context_validity & StackFrameMIPS::CONTEXT_VALID_S6)
+        sequence = PrintRegister64("s6",
+                     frame_mips->context.iregs[MD_CONTEXT_MIPS_REG_S6],
+                     sequence);
+      if (frame_mips->context_validity & StackFrameMIPS::CONTEXT_VALID_S7)
+        sequence = PrintRegister64("s7",
+                     frame_mips->context.iregs[MD_CONTEXT_MIPS_REG_S7],
+                     sequence);
+    }
+    printf("\n    Found by: %s\n", frame->trust_description().c_str());
+
+    // Print stack contents.
+    if (output_stack_contents && frame_index + 1 < frame_count) {
+      const std::string indent("    ");
+      PrintStackContents(indent, frame, stack->frames()->at(frame_index + 1),
+                         cpu, memory, modules, resolver);
+    }
+  }
+}
+
+// PrintStackMachineReadable prints the call stack in |stack| to stdout,
+// in the following machine readable pipe-delimited text format:
+// thread number|frame number|module|function|source file|line|offset
+//
+// Module, function, source file, and source line may all be empty
+// depending on availability.  The code offset follows the same rules as
+// PrintStack above.
+static void PrintStackMachineReadable(int thread_num, const CallStack *stack) {
+  int frame_count = stack->frames()->size();
+  for (int frame_index = 0; frame_index < frame_count; ++frame_index) {
+    const StackFrame *frame = stack->frames()->at(frame_index);
+    printf("%d%c%d%c", thread_num, kOutputSeparator, frame_index,
+           kOutputSeparator);
+
+    uint64_t instruction_address = frame->ReturnAddress();
+
+    if (frame->module) {
+      assert(!frame->module->code_file().empty());
+      printf("%s", StripSeparator(PathnameStripper::File(
+                     frame->module->code_file())).c_str());
+      if (!frame->function_name.empty()) {
+        printf("%c%s", kOutputSeparator,
+               StripSeparator(frame->function_name).c_str());
+        if (!frame->source_file_name.empty()) {
+          printf("%c%s%c%d%c0x%" PRIx64,
+                 kOutputSeparator,
+                 StripSeparator(frame->source_file_name).c_str(),
+                 kOutputSeparator,
+                 frame->source_line,
+                 kOutputSeparator,
+                 instruction_address - frame->source_line_base);
+        } else {
+          printf("%c%c%c0x%" PRIx64,
+                 kOutputSeparator,  // empty source file
+                 kOutputSeparator,  // empty source line
+                 kOutputSeparator,
+                 instruction_address - frame->function_base);
+        }
+      } else {
+        printf("%c%c%c%c0x%" PRIx64,
+               kOutputSeparator,  // empty function name
+               kOutputSeparator,  // empty source file
+               kOutputSeparator,  // empty source line
+               kOutputSeparator,
+               instruction_address - frame->module->base_address());
+      }
+    } else {
+      // the printf before this prints a trailing separator for module name
+      printf("%c%c%c%c0x%" PRIx64,
+             kOutputSeparator,  // empty function name
+             kOutputSeparator,  // empty source file
+             kOutputSeparator,  // empty source line
+             kOutputSeparator,
+             instruction_address);
+    }
+    printf("\n");
+  }
+}
+
+// ContainsModule checks whether a given |module| is in the vector
+// |modules_without_symbols|.
+static bool ContainsModule(
+    const vector<const CodeModule*> *modules,
+    const CodeModule *module) {
+  assert(modules);
+  assert(module);
+  vector<const CodeModule*>::const_iterator iter;
+  for (iter = modules->begin(); iter != modules->end(); ++iter) {
+    if (module->debug_file().compare((*iter)->debug_file()) == 0 &&
+        module->debug_identifier().compare((*iter)->debug_identifier()) == 0) {
+      return true;
+    }
+  }
+  return false;
+}
+
+// PrintModule prints a single |module| to stdout.
+// |modules_without_symbols| should contain the list of modules that were
+// confirmed to be missing their symbols during the stack walk.
+static void PrintModule(
+    const CodeModule *module,
+    const vector<const CodeModule*> *modules_without_symbols,
+    const vector<const CodeModule*> *modules_with_corrupt_symbols,
+    uint64_t main_address) {
+  string symbol_issues;
+  if (ContainsModule(modules_without_symbols, module)) {
+    symbol_issues = "  (WARNING: No symbols, " +
+        PathnameStripper::File(module->debug_file()) + ", " +
+        module->debug_identifier() + ")";
+  } else if (ContainsModule(modules_with_corrupt_symbols, module)) {
+    symbol_issues = "  (WARNING: Corrupt symbols, " +
+        PathnameStripper::File(module->debug_file()) + ", " +
+        module->debug_identifier() + ")";
+  }
+  uint64_t base_address = module->base_address();
+  printf("0x%08" PRIx64 " - 0x%08" PRIx64 "  %s  %s%s%s\n",
+         base_address, base_address + module->size() - 1,
+         PathnameStripper::File(module->code_file()).c_str(),
+         module->version().empty() ? "???" : module->version().c_str(),
+         main_address != 0 && base_address == main_address ? "  (main)" : "",
+         symbol_issues.c_str());
+}
+
+// PrintModules prints the list of all loaded |modules| to stdout.
+// |modules_without_symbols| should contain the list of modules that were
+// confirmed to be missing their symbols during the stack walk.
+static void PrintModules(
+    const CodeModules *modules,
+    const vector<const CodeModule*> *modules_without_symbols,
+    const vector<const CodeModule*> *modules_with_corrupt_symbols) {
+  if (!modules)
+    return;
+
+  printf("\n");
+  printf("Loaded modules:\n");
+
+  uint64_t main_address = 0;
+  const CodeModule *main_module = modules->GetMainModule();
+  if (main_module) {
+    main_address = main_module->base_address();
+  }
+
+  unsigned int module_count = modules->module_count();
+  for (unsigned int module_sequence = 0;
+       module_sequence < module_count;
+       ++module_sequence) {
+    const CodeModule *module = modules->GetModuleAtSequence(module_sequence);
+    PrintModule(module, modules_without_symbols, modules_with_corrupt_symbols,
+                main_address);
+  }
+}
+
+// PrintModulesMachineReadable outputs a list of loaded modules,
+// one per line, in the following machine-readable pipe-delimited
+// text format:
+// Module|{Module Filename}|{Version}|{Debug Filename}|{Debug Identifier}|
+// {Base Address}|{Max Address}|{Main}
+static void PrintModulesMachineReadable(const CodeModules *modules) {
+  if (!modules)
+    return;
+
+  uint64_t main_address = 0;
+  const CodeModule *main_module = modules->GetMainModule();
+  if (main_module) {
+    main_address = main_module->base_address();
+  }
+
+  unsigned int module_count = modules->module_count();
+  for (unsigned int module_sequence = 0;
+       module_sequence < module_count;
+       ++module_sequence) {
+    const CodeModule *module = modules->GetModuleAtSequence(module_sequence);
+    uint64_t base_address = module->base_address();
+    printf("Module%c%s%c%s%c%s%c%s%c0x%08" PRIx64 "%c0x%08" PRIx64 "%c%d\n",
+           kOutputSeparator,
+           StripSeparator(PathnameStripper::File(module->code_file())).c_str(),
+           kOutputSeparator, StripSeparator(module->version()).c_str(),
+           kOutputSeparator,
+           StripSeparator(PathnameStripper::File(module->debug_file())).c_str(),
+           kOutputSeparator,
+           StripSeparator(module->debug_identifier()).c_str(),
+           kOutputSeparator, base_address,
+           kOutputSeparator, base_address + module->size() - 1,
+           kOutputSeparator,
+           main_module != NULL && base_address == main_address ? 1 : 0);
+  }
+}
+
+}  // namespace
+
+void PrintProcessState(const ProcessState& process_state,
+                       bool output_stack_contents,
+                       SourceLineResolverInterface* resolver) {
+  // Print OS and CPU information.
+  string cpu = process_state.system_info()->cpu;
+  string cpu_info = process_state.system_info()->cpu_info;
+  printf("Operating system: %s\n", process_state.system_info()->os.c_str());
+  printf("                  %s\n",
+         process_state.system_info()->os_version.c_str());
+  printf("CPU: %s\n", cpu.c_str());
+  if (!cpu_info.empty()) {
+    // This field is optional.
+    printf("     %s\n", cpu_info.c_str());
+  }
+  printf("     %d CPU%s\n",
+         process_state.system_info()->cpu_count,
+         process_state.system_info()->cpu_count != 1 ? "s" : "");
+  printf("\n");
+
+  // Print crash information.
+  if (process_state.crashed()) {
+    printf("Crash reason:  %s\n", process_state.crash_reason().c_str());
+    printf("Crash address: 0x%" PRIx64 "\n", process_state.crash_address());
+  } else {
+    printf("No crash\n");
+  }
+
+  string assertion = process_state.assertion();
+  if (!assertion.empty()) {
+    printf("Assertion: %s\n", assertion.c_str());
+  }
+
+  // Compute process uptime if the process creation and crash times are
+  // available in the dump.
+  if (process_state.time_date_stamp() != 0 &&
+      process_state.process_create_time() != 0 &&
+      process_state.time_date_stamp() >= process_state.process_create_time()) {
+    printf("Process uptime: %d seconds\n",
+           process_state.time_date_stamp() -
+               process_state.process_create_time());
+  } else {
+    printf("Process uptime: not available\n");
+  }
+
+  // If the thread that requested the dump is known, print it first.
+  int requesting_thread = process_state.requesting_thread();
+  if (requesting_thread != -1) {
+    printf("\n");
+    printf("Thread %d (%s)\n",
+          requesting_thread,
+          process_state.crashed() ? "crashed" :
+                                    "requested dump, did not crash");
+    PrintStack(process_state.threads()->at(requesting_thread), cpu,
+               output_stack_contents,
+               process_state.thread_memory_regions()->at(requesting_thread),
+               process_state.modules(), resolver);
+  }
+
+  // Print all of the threads in the dump.
+  int thread_count = process_state.threads()->size();
+  for (int thread_index = 0; thread_index < thread_count; ++thread_index) {
+    if (thread_index != requesting_thread) {
+      // Don't print the crash thread again, it was already printed.
+      printf("\n");
+      printf("Thread %d\n", thread_index);
+      PrintStack(process_state.threads()->at(thread_index), cpu,
+                 output_stack_contents,
+                 process_state.thread_memory_regions()->at(thread_index),
+                 process_state.modules(), resolver);
+    }
+  }
+
+  PrintModules(process_state.modules(),
+               process_state.modules_without_symbols(),
+               process_state.modules_with_corrupt_symbols());
+}
+
+void PrintProcessStateMachineReadable(const ProcessState& process_state) {
+  // Print OS and CPU information.
+  // OS|{OS Name}|{OS Version}
+  // CPU|{CPU Name}|{CPU Info}|{Number of CPUs}
+  printf("OS%c%s%c%s\n", kOutputSeparator,
+         StripSeparator(process_state.system_info()->os).c_str(),
+         kOutputSeparator,
+         StripSeparator(process_state.system_info()->os_version).c_str());
+  printf("CPU%c%s%c%s%c%d\n", kOutputSeparator,
+         StripSeparator(process_state.system_info()->cpu).c_str(),
+         kOutputSeparator,
+         // this may be empty
+         StripSeparator(process_state.system_info()->cpu_info).c_str(),
+         kOutputSeparator,
+         process_state.system_info()->cpu_count);
+
+  int requesting_thread = process_state.requesting_thread();
+
+  // Print crash information.
+  // Crash|{Crash Reason}|{Crash Address}|{Crashed Thread}
+  printf("Crash%c", kOutputSeparator);
+  if (process_state.crashed()) {
+    printf("%s%c0x%" PRIx64 "%c",
+           StripSeparator(process_state.crash_reason()).c_str(),
+           kOutputSeparator, process_state.crash_address(), kOutputSeparator);
+  } else {
+    // print assertion info, if available, in place of crash reason,
+    // instead of the unhelpful "No crash"
+    string assertion = process_state.assertion();
+    if (!assertion.empty()) {
+      printf("%s%c%c", StripSeparator(assertion).c_str(),
+             kOutputSeparator, kOutputSeparator);
+    } else {
+      printf("No crash%c%c", kOutputSeparator, kOutputSeparator);
+    }
+  }
+
+  if (requesting_thread != -1) {
+    printf("%d\n", requesting_thread);
+  } else {
+    printf("\n");
+  }
+
+  PrintModulesMachineReadable(process_state.modules());
+
+  // blank line to indicate start of threads
+  printf("\n");
+
+  // If the thread that requested the dump is known, print it first.
+  if (requesting_thread != -1) {
+    PrintStackMachineReadable(requesting_thread,
+                              process_state.threads()->at(requesting_thread));
+  }
+
+  // Print all of the threads in the dump.
+  int thread_count = process_state.threads()->size();
+  for (int thread_index = 0; thread_index < thread_count; ++thread_index) {
+    if (thread_index != requesting_thread) {
+      // Don't print the crash thread again, it was already printed.
+      PrintStackMachineReadable(thread_index,
+                                process_state.threads()->at(thread_index));
+    }
+  }
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/processor/stackwalk_common.h b/google-breakpad/src/processor/stackwalk_common.h
new file mode 100644
index 0000000..a74f7b6
--- /dev/null
+++ b/google-breakpad/src/processor/stackwalk_common.h
@@ -0,0 +1,49 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// stackwalk_common.cc: Module shared by the {micro,mini}dump_stackwalck
+// executables to print the content of dumps (w/ stack traces) on the console.
+
+
+#ifndef PROCESSOR_STACKWALK_COMMON_H__
+#define PROCESSOR_STACKWALK_COMMON_H__
+
+namespace google_breakpad {
+
+class ProcessState;
+class SourceLineResolverInterface;
+
+void PrintProcessStateMachineReadable(const ProcessState& process_state);
+void PrintProcessState(const ProcessState& process_state,
+                       bool output_stack_contents,
+                       SourceLineResolverInterface* resolver);
+
+}  // namespace google_breakpad
+
+#endif  // PROCESSOR_STACKWALK_COMMON_H__
diff --git a/google-breakpad/src/processor/stackwalker.cc b/google-breakpad/src/processor/stackwalker.cc
new file mode 100644
index 0000000..424cf4c
--- /dev/null
+++ b/google-breakpad/src/processor/stackwalker.cc
@@ -0,0 +1,295 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// stackwalker.cc: Generic stackwalker.
+//
+// See stackwalker.h for documentation.
+//
+// Author: Mark Mentovai
+
+#include "google_breakpad/processor/stackwalker.h"
+
+#include <assert.h>
+
+#include "common/scoped_ptr.h"
+#include "google_breakpad/processor/call_stack.h"
+#include "google_breakpad/processor/code_module.h"
+#include "google_breakpad/processor/code_modules.h"
+#include "google_breakpad/processor/dump_context.h"
+#include "google_breakpad/processor/stack_frame.h"
+#include "google_breakpad/processor/stack_frame_symbolizer.h"
+#include "google_breakpad/processor/system_info.h"
+#include "processor/linked_ptr.h"
+#include "processor/logging.h"
+#include "processor/stackwalker_ppc.h"
+#include "processor/stackwalker_ppc64.h"
+#include "processor/stackwalker_sparc.h"
+#include "processor/stackwalker_x86.h"
+#include "processor/stackwalker_amd64.h"
+#include "processor/stackwalker_arm.h"
+#include "processor/stackwalker_arm64.h"
+#include "processor/stackwalker_mips.h"
+
+namespace google_breakpad {
+
+const int Stackwalker::kRASearchWords = 30;
+
+uint32_t Stackwalker::max_frames_ = 1024;
+bool Stackwalker::max_frames_set_ = false;
+
+uint32_t Stackwalker::max_frames_scanned_ = 1024;
+
+Stackwalker::Stackwalker(const SystemInfo* system_info,
+                         MemoryRegion* memory,
+                         const CodeModules* modules,
+                         StackFrameSymbolizer* frame_symbolizer)
+    : system_info_(system_info),
+      memory_(memory),
+      modules_(modules),
+      frame_symbolizer_(frame_symbolizer) {
+  assert(frame_symbolizer_);
+}
+
+void InsertSpecialAttentionModule(
+    StackFrameSymbolizer::SymbolizerResult symbolizer_result,
+    const CodeModule* module,
+    vector<const CodeModule*>* modules) {
+  if (!module) {
+    return;
+  }
+  assert(symbolizer_result == StackFrameSymbolizer::kError ||
+         symbolizer_result == StackFrameSymbolizer::kWarningCorruptSymbols);
+  bool found = false;
+  vector<const CodeModule*>::iterator iter;
+  for (iter = modules->begin(); iter != modules->end(); ++iter) {
+    if (*iter == module) {
+      found = true;
+      break;
+    }
+  }
+  if (!found) {
+    BPLOG(INFO) << ((symbolizer_result == StackFrameSymbolizer::kError) ?
+                       "Couldn't load symbols for: " :
+                       "Detected corrupt symbols for: ")
+                << module->debug_file() << "|" << module->debug_identifier();
+    modules->push_back(module);
+  }
+}
+
+bool Stackwalker::Walk(
+    CallStack* stack,
+    vector<const CodeModule*>* modules_without_symbols,
+    vector<const CodeModule*>* modules_with_corrupt_symbols) {
+  BPLOG_IF(ERROR, !stack) << "Stackwalker::Walk requires |stack|";
+  assert(stack);
+  stack->Clear();
+
+  BPLOG_IF(ERROR, !modules_without_symbols) << "Stackwalker::Walk requires "
+                                            << "|modules_without_symbols|";
+  BPLOG_IF(ERROR, !modules_without_symbols) << "Stackwalker::Walk requires "
+                                            << "|modules_with_corrupt_symbols|";
+  assert(modules_without_symbols);
+  assert(modules_with_corrupt_symbols);
+
+  // Begin with the context frame, and keep getting callers until there are
+  // no more.
+
+  // Keep track of the number of scanned or otherwise dubious frames seen
+  // so far, as the caller may have set a limit.
+  uint32_t scanned_frames = 0;
+
+  // Take ownership of the pointer returned by GetContextFrame.
+  scoped_ptr<StackFrame> frame(GetContextFrame());
+
+  while (frame.get()) {
+    // frame already contains a good frame with properly set instruction and
+    // frame_pointer fields.  The frame structure comes from either the
+    // context frame (above) or a caller frame (below).
+
+    // Resolve the module information, if a module map was provided.
+    StackFrameSymbolizer::SymbolizerResult symbolizer_result =
+        frame_symbolizer_->FillSourceLineInfo(modules_, system_info_,
+                                             frame.get());
+    switch (symbolizer_result) {
+      case StackFrameSymbolizer::kInterrupt:
+        BPLOG(INFO) << "Stack walk is interrupted.";
+        return false;
+        break;
+      case StackFrameSymbolizer::kError:
+        InsertSpecialAttentionModule(symbolizer_result, frame->module,
+                                     modules_without_symbols);
+        break;
+      case StackFrameSymbolizer::kWarningCorruptSymbols:
+        InsertSpecialAttentionModule(symbolizer_result, frame->module,
+                                     modules_with_corrupt_symbols);
+        break;
+      case StackFrameSymbolizer::kNoError:
+        break;
+      default:
+        assert(false);
+        break;
+    }
+
+    // Keep track of the number of dubious frames so far.
+    switch (frame.get()->trust) {
+       case StackFrame::FRAME_TRUST_NONE:
+       case StackFrame::FRAME_TRUST_SCAN:
+       case StackFrame::FRAME_TRUST_CFI_SCAN:
+         scanned_frames++;
+         break;
+      default:
+        break;
+    }
+
+    // Add the frame to the call stack.  Relinquish the ownership claim
+    // over the frame, because the stack now owns it.
+    stack->frames_.push_back(frame.release());
+    if (stack->frames_.size() > max_frames_) {
+      // Only emit an error message in the case where the limit
+      // reached is the default limit, not set by the user.
+      if (!max_frames_set_)
+        BPLOG(ERROR) << "The stack is over " << max_frames_ << " frames.";
+      break;
+    }
+
+    // Get the next frame and take ownership.
+    bool stack_scan_allowed = scanned_frames < max_frames_scanned_;
+    frame.reset(GetCallerFrame(stack, stack_scan_allowed));
+  }
+
+  return true;
+}
+
+
+// static
+Stackwalker* Stackwalker::StackwalkerForCPU(
+    const SystemInfo* system_info,
+    DumpContext* context,
+    MemoryRegion* memory,
+    const CodeModules* modules,
+    StackFrameSymbolizer* frame_symbolizer) {
+  if (!context) {
+    BPLOG(ERROR) << "Can't choose a stackwalker implementation without context";
+    return NULL;
+  }
+
+  Stackwalker* cpu_stackwalker = NULL;
+
+  uint32_t cpu = context->GetContextCPU();
+  switch (cpu) {
+    case MD_CONTEXT_X86:
+      cpu_stackwalker = new StackwalkerX86(system_info,
+                                           context->GetContextX86(),
+                                           memory, modules, frame_symbolizer);
+      break;
+
+    case MD_CONTEXT_PPC:
+      cpu_stackwalker = new StackwalkerPPC(system_info,
+                                           context->GetContextPPC(),
+                                           memory, modules, frame_symbolizer);
+      break;
+
+    case MD_CONTEXT_PPC64:
+      cpu_stackwalker = new StackwalkerPPC64(system_info,
+                                             context->GetContextPPC64(),
+                                             memory, modules, frame_symbolizer);
+      break;
+
+    case MD_CONTEXT_AMD64:
+      cpu_stackwalker = new StackwalkerAMD64(system_info,
+                                             context->GetContextAMD64(),
+                                             memory, modules, frame_symbolizer);
+      break;
+
+    case MD_CONTEXT_SPARC:
+      cpu_stackwalker = new StackwalkerSPARC(system_info,
+                                             context->GetContextSPARC(),
+                                             memory, modules, frame_symbolizer);
+      break;
+ 
+    case MD_CONTEXT_MIPS:
+      cpu_stackwalker = new StackwalkerMIPS(system_info,
+                                            context->GetContextMIPS(),
+                                            memory, modules, frame_symbolizer);
+      break;
+
+    case MD_CONTEXT_ARM:
+    {
+      int fp_register = -1;
+      if (system_info->os_short == "ios")
+        fp_register = MD_CONTEXT_ARM_REG_IOS_FP;
+      cpu_stackwalker = new StackwalkerARM(system_info,
+                                           context->GetContextARM(),
+                                           fp_register, memory, modules,
+                                           frame_symbolizer);
+      break;
+    }
+    
+    case MD_CONTEXT_ARM64:
+      cpu_stackwalker = new StackwalkerARM64(system_info,
+                                             context->GetContextARM64(),
+                                             memory, modules,
+                                             frame_symbolizer);
+      break;
+  }
+
+  BPLOG_IF(ERROR, !cpu_stackwalker) << "Unknown CPU type " << HexString(cpu) <<
+                                       ", can't choose a stackwalker "
+                                       "implementation";
+  return cpu_stackwalker;
+}
+
+bool Stackwalker::InstructionAddressSeemsValid(uint64_t address) {
+  StackFrame frame;
+  frame.instruction = address;
+  StackFrameSymbolizer::SymbolizerResult symbolizer_result =
+      frame_symbolizer_->FillSourceLineInfo(modules_, system_info_, &frame);
+
+  if (!frame.module) {
+    // not inside any loaded module
+    return false;
+  }
+
+  if (!frame_symbolizer_->HasImplementation()) {
+    // No valid implementation to symbolize stack frame, but the address is
+    // within a known module.
+    return true;
+  }
+
+  if (symbolizer_result != StackFrameSymbolizer::kNoError &&
+      symbolizer_result != StackFrameSymbolizer::kWarningCorruptSymbols) {
+    // Some error occurred during symbolization, but the address is within a
+    // known module
+    return true;
+  }
+
+  return !frame.function_name.empty();
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/processor/stackwalker_address_list.cc b/google-breakpad/src/processor/stackwalker_address_list.cc
new file mode 100644
index 0000000..e81fec2
--- /dev/null
+++ b/google-breakpad/src/processor/stackwalker_address_list.cc
@@ -0,0 +1,92 @@
+// Copyright (c) 2013 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// stackwalker_address_list.cc: a pseudo stack walker.
+//
+// See stackwalker_address_list.h for documentation.
+//
+// Author: Chris Hamilton <chrisha@chromium.org>
+
+#include <assert.h>
+
+#include <vector>
+
+#include "google_breakpad/processor/call_stack.h"
+#include "google_breakpad/processor/memory_region.h"
+#include "google_breakpad/processor/source_line_resolver_interface.h"
+#include "google_breakpad/processor/stack_frame.h"
+#include "processor/logging.h"
+#include "processor/stackwalker_address_list.h"
+
+namespace google_breakpad {
+
+StackwalkerAddressList::StackwalkerAddressList(
+    const uint64_t* frames,
+    size_t frame_count,
+    const CodeModules* modules,
+    StackFrameSymbolizer* frame_symbolizer)
+    : Stackwalker(NULL, NULL, modules, frame_symbolizer),
+      frames_(frames),
+      frame_count_(frame_count) {
+  assert(frames);
+  assert(frame_symbolizer);
+}
+
+StackFrame* StackwalkerAddressList::GetContextFrame() {
+  if (frame_count_ == 0)
+    return NULL;
+
+  StackFrame* frame = new StackFrame();
+  frame->instruction = frames_[0];
+  frame->trust = StackFrame::FRAME_TRUST_PREWALKED;
+  return frame;
+}
+
+StackFrame* StackwalkerAddressList::GetCallerFrame(const CallStack* stack,
+                                                   bool stack_scan_allowed) {
+  if (!stack) {
+    BPLOG(ERROR) << "Can't get caller frame without stack";
+    return NULL;
+  }
+
+  size_t frame_index = stack->frames()->size();
+
+  // There are no more frames to fetch.
+  if (frame_index >= frame_count_)
+    return NULL;
+
+  // All frames have the highest level of trust because they were
+  // explicitly provided.
+  StackFrame* frame = new StackFrame();
+  frame->instruction = frames_[frame_index];
+  frame->trust = StackFrame::FRAME_TRUST_PREWALKED;
+  return frame;
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/processor/stackwalker_address_list.h b/google-breakpad/src/processor/stackwalker_address_list.h
new file mode 100644
index 0000000..0f8c989
--- /dev/null
+++ b/google-breakpad/src/processor/stackwalker_address_list.h
@@ -0,0 +1,72 @@
+// Copyright (c) 2013 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// stackwalker_address_list.h: a pseudo stackwalker.
+//
+// Doesn't actually walk a stack, rather initializes a CallStack given an
+// explicit list of already walked return addresses.
+//
+// Author: Chris Hamilton <chrisha@chromium.org>
+
+#ifndef PROCESSOR_STACKWALKER_ADDRESS_LIST_H_
+#define PROCESSOR_STACKWALKER_ADDRESS_LIST_H_
+
+#include "common/basictypes.h"
+#include "google_breakpad/common/breakpad_types.h"
+#include "google_breakpad/processor/stackwalker.h"
+
+namespace google_breakpad {
+
+class CodeModules;
+
+class StackwalkerAddressList : public Stackwalker {
+ public:
+  // Initializes this stack walker with an explicit set of frame addresses.
+  // |modules| and |frame_symbolizer| are passed directly through to the base
+  // Stackwalker constructor.
+  StackwalkerAddressList(const uint64_t* frames,
+                         size_t frame_count,
+                         const CodeModules* modules,
+                         StackFrameSymbolizer* frame_symbolizer);
+
+ private:
+  // Implementation of Stackwalker.
+  virtual StackFrame* GetContextFrame();
+  virtual StackFrame* GetCallerFrame(const CallStack* stack,
+                                     bool stack_scan_allowed);
+
+  const uint64_t* frames_;
+  size_t frame_count_;
+
+  DISALLOW_COPY_AND_ASSIGN(StackwalkerAddressList);
+};
+
+}  // namespace google_breakpad
+
+#endif  // PROCESSOR_STACKWALKER_ADDRESS_LIST_H_
diff --git a/google-breakpad/src/processor/stackwalker_address_list_unittest.cc b/google-breakpad/src/processor/stackwalker_address_list_unittest.cc
new file mode 100644
index 0000000..ab4e9c0
--- /dev/null
+++ b/google-breakpad/src/processor/stackwalker_address_list_unittest.cc
@@ -0,0 +1,197 @@
+// Copyright (c) 2013, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// stackwalker_address_list_unittest.cc: Unit tests for the
+// StackwalkerAddressList class.
+//
+// Author: Chris Hamilton <chrisha@chromium.org>
+
+#include <string>
+#include <vector>
+
+#include "breakpad_googletest_includes.h"
+#include "common/using_std_string.h"
+#include "google_breakpad/common/minidump_format.h"
+#include "google_breakpad/processor/basic_source_line_resolver.h"
+#include "google_breakpad/processor/call_stack.h"
+#include "google_breakpad/processor/code_module.h"
+#include "google_breakpad/processor/source_line_resolver_interface.h"
+#include "google_breakpad/processor/stack_frame.h"
+#include "processor/stackwalker_unittest_utils.h"
+#include "processor/stackwalker_address_list.h"
+
+using google_breakpad::BasicSourceLineResolver;
+using google_breakpad::CallStack;
+using google_breakpad::CodeModule;
+using google_breakpad::StackFrameSymbolizer;
+using google_breakpad::StackFrame;
+using google_breakpad::Stackwalker;
+using google_breakpad::StackwalkerAddressList;
+using std::vector;
+using testing::_;
+using testing::AnyNumber;
+using testing::Return;
+using testing::SetArgumentPointee;
+
+#define arraysize(f) (sizeof(f) / sizeof(*f))
+
+// Addresses and sizes of a couple dummy modules.
+uint64_t kModule1Base = 0x40000000;
+uint64_t kModule1Size = 0x10000;
+uint64_t kModule2Base = 0x50000000;
+uint64_t kModule2Size = 0x10000;
+
+// A handful of addresses that lie within the modules above.
+const uint64_t kDummyFrames[] = {
+    0x50003000, 0x50002000, 0x50001000, 0x40002000, 0x40001000 };
+
+class StackwalkerAddressListTest : public testing::Test {
+ public:
+  StackwalkerAddressListTest()
+    : // Give the two modules reasonable standard locations and names
+      // for tests to play with.
+      module1(kModule1Base, kModule1Size, "module1", "version1"),
+      module2(kModule2Base, kModule2Size, "module2", "version2") {
+    // Create some modules with some stock debugging information.
+    modules.Add(&module1);
+    modules.Add(&module2);
+
+    // By default, none of the modules have symbol info; call
+    // SetModuleSymbols to override this.
+    EXPECT_CALL(supplier, GetCStringSymbolData(_, _, _, _, _))
+      .WillRepeatedly(Return(MockSymbolSupplier::NOT_FOUND));
+
+    // Avoid GMOCK WARNING "Uninteresting mock function call - returning
+    // directly" for FreeSymbolData().
+    EXPECT_CALL(supplier, FreeSymbolData(_)).Times(AnyNumber());
+  }
+
+  // Set the Breakpad symbol information that supplier should return for
+  // MODULE to INFO.
+  void SetModuleSymbols(MockCodeModule *module, const string &info) {
+    size_t buffer_size;
+    char *buffer = supplier.CopySymbolDataAndOwnTheCopy(info, &buffer_size);
+    EXPECT_CALL(supplier, GetCStringSymbolData(module, NULL, _, _, _))
+      .WillRepeatedly(DoAll(SetArgumentPointee<3>(buffer),
+                            SetArgumentPointee<4>(buffer_size),
+                            Return(MockSymbolSupplier::FOUND)));
+  }
+
+  void CheckCallStack(const CallStack& call_stack) {
+    const std::vector<StackFrame*>* frames = call_stack.frames();
+    ASSERT_EQ(arraysize(kDummyFrames), frames->size());
+    for (size_t i = 0; i < arraysize(kDummyFrames); ++i) {
+      ASSERT_EQ(kDummyFrames[i], frames->at(i)->instruction);
+      ASSERT_EQ(StackFrame::FRAME_TRUST_PREWALKED, frames->at(i)->trust);
+    }
+    ASSERT_EQ(static_cast<const CodeModule*>(&module2), frames->at(0)->module);
+    ASSERT_EQ(static_cast<const CodeModule*>(&module2), frames->at(1)->module);
+    ASSERT_EQ(static_cast<const CodeModule*>(&module2), frames->at(2)->module);
+    ASSERT_EQ(static_cast<const CodeModule*>(&module1), frames->at(3)->module);
+    ASSERT_EQ(static_cast<const CodeModule*>(&module1), frames->at(4)->module);
+  }
+
+  MockCodeModule module1;
+  MockCodeModule module2;
+  MockCodeModules modules;
+  MockSymbolSupplier supplier;
+  BasicSourceLineResolver resolver;
+};
+
+TEST_F(StackwalkerAddressListTest, ScanWithoutSymbols) {
+  StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+  StackwalkerAddressList walker(kDummyFrames, arraysize(kDummyFrames),
+                         &modules, &frame_symbolizer);
+
+  CallStack call_stack;
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+
+  // The stack starts in module2, so we expect that to be the first module
+  // found without symbols.
+  ASSERT_EQ(2U, modules_without_symbols.size());
+  ASSERT_EQ("module2", modules_without_symbols[0]->debug_file());
+  ASSERT_EQ("module1", modules_without_symbols[1]->debug_file());
+  ASSERT_EQ(0u, modules_with_corrupt_symbols.size());
+
+  ASSERT_NO_FATAL_FAILURE(CheckCallStack(call_stack));
+}
+
+TEST_F(StackwalkerAddressListTest, ScanWithSymbols) {
+  // File    : FILE number(dex) name
+  // Function: FUNC address(hex) size(hex) parameter_size(hex) name
+  // Line    : address(hex) size(hex) line(dec) filenum(dec)
+  SetModuleSymbols(&module2,
+                   "FILE 1 module2.cc\n"
+                   "FUNC 3000 100 10 mod2func3\n"
+                   "3000 10 1  1\n"
+                   "FUNC 2000 200 10 mod2func2\n"
+                   "FUNC 1000 300 10 mod2func1\n");
+  SetModuleSymbols(&module1,
+                   "FUNC 2000 200 10 mod1func2\n"
+                   "FUNC 1000 300 10 mod1func1\n");
+
+  StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+  StackwalkerAddressList walker(kDummyFrames, arraysize(kDummyFrames),
+                         &modules, &frame_symbolizer);
+
+  CallStack call_stack;
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+
+  ASSERT_EQ(0u, modules_without_symbols.size());
+  ASSERT_EQ(0u, modules_with_corrupt_symbols.size());
+
+  ASSERT_NO_FATAL_FAILURE(CheckCallStack(call_stack));
+
+  const std::vector<StackFrame*>* frames = call_stack.frames();
+
+  // We have full file/line information for the first function call.
+  ASSERT_EQ("mod2func3", frames->at(0)->function_name);
+  ASSERT_EQ(0x50003000u, frames->at(0)->function_base);
+  ASSERT_EQ("module2.cc", frames->at(0)->source_file_name);
+  ASSERT_EQ(1, frames->at(0)->source_line);
+  ASSERT_EQ(0x50003000u, frames->at(0)->source_line_base);
+
+  ASSERT_EQ("mod2func2", frames->at(1)->function_name);
+  ASSERT_EQ(0x50002000u, frames->at(1)->function_base);
+
+  ASSERT_EQ("mod2func1", frames->at(2)->function_name);
+  ASSERT_EQ(0x50001000u, frames->at(2)->function_base);
+
+  ASSERT_EQ("mod1func2", frames->at(3)->function_name);
+  ASSERT_EQ(0x40002000u, frames->at(3)->function_base);
+
+  ASSERT_EQ("mod1func1", frames->at(4)->function_name);
+  ASSERT_EQ(0x40001000u, frames->at(4)->function_base);
+}
diff --git a/google-breakpad/src/processor/stackwalker_amd64.cc b/google-breakpad/src/processor/stackwalker_amd64.cc
new file mode 100644
index 0000000..f252a33
--- /dev/null
+++ b/google-breakpad/src/processor/stackwalker_amd64.cc
@@ -0,0 +1,307 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// stackwalker_amd64.cc: amd64-specific stackwalker.
+//
+// See stackwalker_amd64.h for documentation.
+//
+// Author: Mark Mentovai, Ted Mielczarek
+
+#include <assert.h>
+
+#include "common/scoped_ptr.h"
+#include "google_breakpad/processor/call_stack.h"
+#include "google_breakpad/processor/memory_region.h"
+#include "google_breakpad/processor/source_line_resolver_interface.h"
+#include "google_breakpad/processor/stack_frame_cpu.h"
+#include "google_breakpad/processor/system_info.h"
+#include "processor/cfi_frame_info.h"
+#include "processor/logging.h"
+#include "processor/stackwalker_amd64.h"
+
+namespace google_breakpad {
+
+
+const StackwalkerAMD64::CFIWalker::RegisterSet
+StackwalkerAMD64::cfi_register_map_[] = {
+  // It may seem like $rip and $rsp are callee-saves, because the callee is
+  // responsible for having them restored upon return. But the callee_saves
+  // flags here really means that the walker should assume they're
+  // unchanged if the CFI doesn't mention them --- clearly wrong for $rip
+  // and $rsp.
+  { "$rax", NULL, false,
+    StackFrameAMD64::CONTEXT_VALID_RAX, &MDRawContextAMD64::rax },
+  { "$rdx", NULL, false,
+    StackFrameAMD64::CONTEXT_VALID_RDX, &MDRawContextAMD64::rdx },
+  { "$rcx", NULL, false,
+    StackFrameAMD64::CONTEXT_VALID_RCX, &MDRawContextAMD64::rcx },
+  { "$rbx", NULL, true,
+    StackFrameAMD64::CONTEXT_VALID_RBX, &MDRawContextAMD64::rbx },
+  { "$rsi", NULL, false,
+    StackFrameAMD64::CONTEXT_VALID_RSI, &MDRawContextAMD64::rsi },
+  { "$rdi", NULL, false,
+    StackFrameAMD64::CONTEXT_VALID_RDI, &MDRawContextAMD64::rdi },
+  { "$rbp", NULL, true,
+    StackFrameAMD64::CONTEXT_VALID_RBP, &MDRawContextAMD64::rbp },
+  { "$rsp", ".cfa", false,
+    StackFrameAMD64::CONTEXT_VALID_RSP, &MDRawContextAMD64::rsp },
+  { "$r8", NULL, false,
+    StackFrameAMD64::CONTEXT_VALID_R8,  &MDRawContextAMD64::r8 },
+  { "$r9", NULL, false,
+    StackFrameAMD64::CONTEXT_VALID_R9,  &MDRawContextAMD64::r9 },
+  { "$r10", NULL, false,
+    StackFrameAMD64::CONTEXT_VALID_R10, &MDRawContextAMD64::r10 },
+  { "$r11", NULL, false,
+    StackFrameAMD64::CONTEXT_VALID_R11, &MDRawContextAMD64::r11 },
+  { "$r12", NULL, true,
+    StackFrameAMD64::CONTEXT_VALID_R12, &MDRawContextAMD64::r12 },
+  { "$r13", NULL, true,
+    StackFrameAMD64::CONTEXT_VALID_R13, &MDRawContextAMD64::r13 },
+  { "$r14", NULL, true,
+    StackFrameAMD64::CONTEXT_VALID_R14, &MDRawContextAMD64::r14 },
+  { "$r15", NULL, true,
+    StackFrameAMD64::CONTEXT_VALID_R15, &MDRawContextAMD64::r15 },
+  { "$rip", ".ra", false,
+    StackFrameAMD64::CONTEXT_VALID_RIP, &MDRawContextAMD64::rip },
+};
+
+StackwalkerAMD64::StackwalkerAMD64(const SystemInfo* system_info,
+                                   const MDRawContextAMD64* context,
+                                   MemoryRegion* memory,
+                                   const CodeModules* modules,
+                                   StackFrameSymbolizer* resolver_helper)
+    : Stackwalker(system_info, memory, modules, resolver_helper),
+      context_(context),
+      cfi_walker_(cfi_register_map_,
+                  (sizeof(cfi_register_map_) / sizeof(cfi_register_map_[0]))) {
+}
+
+uint64_t StackFrameAMD64::ReturnAddress() const {
+  assert(context_validity & StackFrameAMD64::CONTEXT_VALID_RIP);
+  return context.rip;
+}
+
+StackFrame* StackwalkerAMD64::GetContextFrame() {
+  if (!context_) {
+    BPLOG(ERROR) << "Can't get context frame without context";
+    return NULL;
+  }
+
+  StackFrameAMD64* frame = new StackFrameAMD64();
+
+  // The instruction pointer is stored directly in a register, so pull it
+  // straight out of the CPU context structure.
+  frame->context = *context_;
+  frame->context_validity = StackFrameAMD64::CONTEXT_VALID_ALL;
+  frame->trust = StackFrame::FRAME_TRUST_CONTEXT;
+  frame->instruction = frame->context.rip;
+
+  return frame;
+}
+
+StackFrameAMD64* StackwalkerAMD64::GetCallerByCFIFrameInfo(
+    const vector<StackFrame*> &frames,
+    CFIFrameInfo* cfi_frame_info) {
+  StackFrameAMD64* last_frame = static_cast<StackFrameAMD64*>(frames.back());
+
+  scoped_ptr<StackFrameAMD64> frame(new StackFrameAMD64());
+  if (!cfi_walker_
+      .FindCallerRegisters(*memory_, *cfi_frame_info,
+                           last_frame->context, last_frame->context_validity,
+                           &frame->context, &frame->context_validity))
+    return NULL;
+
+  // Make sure we recovered all the essentials.
+  static const int essentials = (StackFrameAMD64::CONTEXT_VALID_RIP
+                                 | StackFrameAMD64::CONTEXT_VALID_RSP);
+  if ((frame->context_validity & essentials) != essentials)
+    return NULL;
+
+  frame->trust = StackFrame::FRAME_TRUST_CFI;
+  return frame.release();
+}
+
+StackFrameAMD64* StackwalkerAMD64::GetCallerByFramePointerRecovery(
+    const vector<StackFrame*>& frames) {
+  StackFrameAMD64* last_frame = static_cast<StackFrameAMD64*>(frames.back());
+  uint64_t last_rsp = last_frame->context.rsp;
+  uint64_t last_rbp = last_frame->context.rbp;
+
+  // Assume the presence of a frame pointer. This is not mandated by the
+  // AMD64 ABI, c.f. section 3.2.2 footnote 7, though it is typical for
+  // compilers to still preserve the frame pointer and not treat %rbp as a
+  // general purpose register.
+  //
+  // With this assumption, the CALL instruction pushes the return address
+  // onto the stack and sets %rip to the procedure to enter. The procedure
+  // then establishes the stack frame with a prologue that PUSHes the current
+  // %rbp onto the stack, MOVes the current %rsp to %rbp, and then allocates
+  // space for any local variables. Using this procedure linking information,
+  // it is possible to locate frame information for the callee:
+  //
+  // %caller_rsp = *(%callee_rbp + 16)
+  // %caller_rip = *(%callee_rbp + 8)
+  // %caller_rbp = *(%callee_rbp)
+
+  uint64_t caller_rip, caller_rbp;
+  if (memory_->GetMemoryAtAddress(last_rbp + 8, &caller_rip) &&
+      memory_->GetMemoryAtAddress(last_rbp, &caller_rbp)) {
+    uint64_t caller_rsp = last_rbp + 16;
+
+    // Simple sanity check that the stack is growing downwards as expected.
+    if (caller_rbp < last_rbp || caller_rsp < last_rsp)
+      return NULL;
+
+    StackFrameAMD64* frame = new StackFrameAMD64();
+    frame->trust = StackFrame::FRAME_TRUST_FP;
+    frame->context = last_frame->context;
+    frame->context.rip = caller_rip;
+    frame->context.rsp = caller_rsp;
+    frame->context.rbp = caller_rbp;
+    frame->context_validity = StackFrameAMD64::CONTEXT_VALID_RIP |
+                              StackFrameAMD64::CONTEXT_VALID_RSP |
+                              StackFrameAMD64::CONTEXT_VALID_RBP;
+    return frame;
+  }
+
+  return NULL;
+}
+
+StackFrameAMD64* StackwalkerAMD64::GetCallerByStackScan(
+    const vector<StackFrame*> &frames) {
+  StackFrameAMD64* last_frame = static_cast<StackFrameAMD64*>(frames.back());
+  uint64_t last_rsp = last_frame->context.rsp;
+  uint64_t caller_rip_address, caller_rip;
+
+  if (!ScanForReturnAddress(last_rsp, &caller_rip_address, &caller_rip,
+                            frames.size() == 1 /* is_context_frame */)) {
+    // No plausible return address was found.
+    return NULL;
+  }
+
+  // Create a new stack frame (ownership will be transferred to the caller)
+  // and fill it in.
+  StackFrameAMD64* frame = new StackFrameAMD64();
+
+  frame->trust = StackFrame::FRAME_TRUST_SCAN;
+  frame->context = last_frame->context;
+  frame->context.rip = caller_rip;
+  // The caller's %rsp is directly underneath the return address pushed by
+  // the call.
+  frame->context.rsp = caller_rip_address + 8;
+  frame->context_validity = StackFrameAMD64::CONTEXT_VALID_RIP |
+                            StackFrameAMD64::CONTEXT_VALID_RSP;
+
+  // Other unwinders give up if they don't have an %rbp value, so see if we
+  // can pass some plausible value on.
+  if (last_frame->context_validity & StackFrameAMD64::CONTEXT_VALID_RBP) {
+    // Functions typically push their caller's %rbp immediately upon entry,
+    // and then set %rbp to point to that. So if the callee's %rbp is
+    // pointing to the first word below the alleged return address, presume
+    // that the caller's %rbp is saved there.
+    if (caller_rip_address - 8 == last_frame->context.rbp) {
+      uint64_t caller_rbp = 0;
+      if (memory_->GetMemoryAtAddress(last_frame->context.rbp, &caller_rbp) &&
+          caller_rbp > caller_rip_address) {
+        frame->context.rbp = caller_rbp;
+        frame->context_validity |= StackFrameAMD64::CONTEXT_VALID_RBP;
+      }
+    } else if (last_frame->context.rbp >= caller_rip_address + 8) {
+      // If the callee's %rbp is plausible as a value for the caller's
+      // %rbp, presume that the callee left it unchanged.
+      frame->context.rbp = last_frame->context.rbp;
+      frame->context_validity |= StackFrameAMD64::CONTEXT_VALID_RBP;
+    }
+  }
+
+  return frame;
+}
+
+StackFrame* StackwalkerAMD64::GetCallerFrame(const CallStack* stack,
+                                             bool stack_scan_allowed) {
+  if (!memory_ || !stack) {
+    BPLOG(ERROR) << "Can't get caller frame without memory or stack";
+    return NULL;
+  }
+
+  const vector<StackFrame*> &frames = *stack->frames();
+  StackFrameAMD64* last_frame = static_cast<StackFrameAMD64*>(frames.back());
+  scoped_ptr<StackFrameAMD64> new_frame;
+
+  // If we have DWARF CFI information, use it.
+  scoped_ptr<CFIFrameInfo> cfi_frame_info(
+      frame_symbolizer_->FindCFIFrameInfo(last_frame));
+  if (cfi_frame_info.get())
+    new_frame.reset(GetCallerByCFIFrameInfo(frames, cfi_frame_info.get()));
+
+  // If CFI was not available or failed, try using frame pointer recovery.
+  if (!new_frame.get()) {
+    new_frame.reset(GetCallerByFramePointerRecovery(frames));
+  }
+
+  // If all else fails, fall back to stack scanning.
+  if (stack_scan_allowed && !new_frame.get()) {
+    new_frame.reset(GetCallerByStackScan(frames));
+  }
+
+  // If nothing worked, tell the caller.
+  if (!new_frame.get())
+    return NULL;
+
+  if (system_info_->os_short == "nacl") {
+    // Apply constraints from Native Client's x86-64 sandbox.  These
+    // registers have the 4GB-aligned sandbox base address (from r15)
+    // added to them, and only the bottom 32 bits are relevant for
+    // stack walking.
+    new_frame->context.rip = static_cast<uint32_t>(new_frame->context.rip);
+    new_frame->context.rsp = static_cast<uint32_t>(new_frame->context.rsp);
+    new_frame->context.rbp = static_cast<uint32_t>(new_frame->context.rbp);
+  }
+
+  // Treat an instruction address of 0 as end-of-stack.
+  if (new_frame->context.rip == 0)
+    return NULL;
+
+  // If the new stack pointer is at a lower address than the old, then
+  // that's clearly incorrect. Treat this as end-of-stack to enforce
+  // progress and avoid infinite loops.
+  if (new_frame->context.rsp <= last_frame->context.rsp)
+    return NULL;
+
+  // new_frame->context.rip is the return address, which is the instruction
+  // after the CALL that caused us to arrive at the callee. Set
+  // new_frame->instruction to one less than that, so it points within the
+  // CALL instruction. See StackFrame::instruction for details, and
+  // StackFrameAMD64::ReturnAddress.
+  new_frame->instruction = new_frame->context.rip - 1;
+
+  return new_frame.release();
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/processor/stackwalker_amd64.h b/google-breakpad/src/processor/stackwalker_amd64.h
new file mode 100644
index 0000000..8f3dbd5
--- /dev/null
+++ b/google-breakpad/src/processor/stackwalker_amd64.h
@@ -0,0 +1,108 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// stackwalker_amd64.h: amd64-specific stackwalker.
+//
+// Provides stack frames given amd64 register context and a memory region
+// corresponding to a amd64 stack.
+//
+// Author: Mark Mentovai, Ted Mielczarek
+
+
+#ifndef PROCESSOR_STACKWALKER_AMD64_H__
+#define PROCESSOR_STACKWALKER_AMD64_H__
+
+#include <vector>
+
+#include "google_breakpad/common/breakpad_types.h"
+#include "google_breakpad/common/minidump_format.h"
+#include "google_breakpad/processor/stackwalker.h"
+#include "google_breakpad/processor/stack_frame_cpu.h"
+#include "processor/cfi_frame_info.h"
+
+namespace google_breakpad {
+
+class CodeModules;
+
+class StackwalkerAMD64 : public Stackwalker {
+ public:
+  // context is a amd64 context object that gives access to amd64-specific
+  // register state corresponding to the innermost called frame to be
+  // included in the stack.  The other arguments are passed directly through
+  // to the base Stackwalker constructor.
+  StackwalkerAMD64(const SystemInfo* system_info,
+                   const MDRawContextAMD64* context,
+                   MemoryRegion* memory,
+                   const CodeModules* modules,
+                   StackFrameSymbolizer* frame_symbolizer);
+
+ private:
+  // A STACK CFI-driven frame walker for the AMD64
+  typedef SimpleCFIWalker<uint64_t, MDRawContextAMD64> CFIWalker;
+
+  // Implementation of Stackwalker, using amd64 context (stack pointer in %rsp,
+  // stack base in %rbp) and stack conventions (saved stack pointer at 0(%rbp))
+  virtual StackFrame* GetContextFrame();
+  virtual StackFrame* GetCallerFrame(const CallStack* stack,
+                                     bool stack_scan_allowed);
+
+  // Use cfi_frame_info (derived from STACK CFI records) to construct
+  // the frame that called frames.back(). The caller takes ownership
+  // of the returned frame. Return NULL on failure.
+  StackFrameAMD64* GetCallerByCFIFrameInfo(const vector<StackFrame*> &frames,
+                                           CFIFrameInfo* cfi_frame_info);
+
+  // Assumes a traditional frame layout where the frame pointer has not been
+  // omitted. The expectation is that caller's %rbp is pushed to the stack
+  // after the return address of the callee, and that the callee's %rsp can
+  // be used to find the pushed %rbp.
+  // Caller owns the returned frame object. Returns NULL on failure.
+  StackFrameAMD64* GetCallerByFramePointerRecovery(
+      const vector<StackFrame*>& frames);
+
+  // Scan the stack for plausible return addresses. The caller takes ownership
+  // of the returned frame. Return NULL on failure.
+  StackFrameAMD64* GetCallerByStackScan(const vector<StackFrame*> &frames);
+
+  // Stores the CPU context corresponding to the innermost stack frame to
+  // be returned by GetContextFrame.
+  const MDRawContextAMD64* context_;
+
+  // Our register map, for cfi_walker_.
+  static const CFIWalker::RegisterSet cfi_register_map_[];
+
+  // Our CFI frame walker.
+  const CFIWalker cfi_walker_;
+};
+
+
+}  // namespace google_breakpad
+
+
+#endif  // PROCESSOR_STACKWALKER_AMD64_H__
diff --git a/google-breakpad/src/processor/stackwalker_amd64_unittest.cc b/google-breakpad/src/processor/stackwalker_amd64_unittest.cc
new file mode 100644
index 0000000..a54198b
--- /dev/null
+++ b/google-breakpad/src/processor/stackwalker_amd64_unittest.cc
@@ -0,0 +1,699 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// stackwalker_amd64_unittest.cc: Unit tests for StackwalkerAMD64 class.
+
+#include <string.h>
+#include <string>
+#include <vector>
+
+#include "breakpad_googletest_includes.h"
+#include "common/test_assembler.h"
+#include "common/using_std_string.h"
+#include "google_breakpad/common/minidump_format.h"
+#include "google_breakpad/processor/basic_source_line_resolver.h"
+#include "google_breakpad/processor/call_stack.h"
+#include "google_breakpad/processor/code_module.h"
+#include "google_breakpad/processor/source_line_resolver_interface.h"
+#include "google_breakpad/processor/stack_frame_cpu.h"
+#include "processor/stackwalker_unittest_utils.h"
+#include "processor/stackwalker_amd64.h"
+
+using google_breakpad::BasicSourceLineResolver;
+using google_breakpad::CallStack;
+using google_breakpad::CodeModule;
+using google_breakpad::StackFrameSymbolizer;
+using google_breakpad::StackFrame;
+using google_breakpad::StackFrameAMD64;
+using google_breakpad::Stackwalker;
+using google_breakpad::StackwalkerAMD64;
+using google_breakpad::SystemInfo;
+using google_breakpad::test_assembler::kLittleEndian;
+using google_breakpad::test_assembler::Label;
+using google_breakpad::test_assembler::Section;
+using std::vector;
+using testing::_;
+using testing::AnyNumber;
+using testing::Return;
+using testing::SetArgumentPointee;
+using testing::Test;
+
+class StackwalkerAMD64Fixture {
+ public:
+  StackwalkerAMD64Fixture()
+    : stack_section(kLittleEndian),
+      // Give the two modules reasonable standard locations and names
+      // for tests to play with.
+      module1(0x40000000c0000000ULL, 0x10000, "module1", "version1"),
+      module2(0x50000000b0000000ULL, 0x10000, "module2", "version2") {
+    // Identify the system as a Linux system.
+    system_info.os = "Linux";
+    system_info.os_short = "linux";
+    system_info.os_version = "Horrendous Hippo";
+    system_info.cpu = "x86";
+    system_info.cpu_info = "";
+
+    // Put distinctive values in the raw CPU context.
+    BrandContext(&raw_context);
+
+    // Create some modules with some stock debugging information.
+    modules.Add(&module1);
+    modules.Add(&module2);
+
+    // By default, none of the modules have symbol info; call
+    // SetModuleSymbols to override this.
+    EXPECT_CALL(supplier, GetCStringSymbolData(_, _, _, _, _))
+      .WillRepeatedly(Return(MockSymbolSupplier::NOT_FOUND));
+
+    // Avoid GMOCK WARNING "Uninteresting mock function call - returning
+    // directly" for FreeSymbolData().
+    EXPECT_CALL(supplier, FreeSymbolData(_)).Times(AnyNumber());
+
+    // Reset max_frames_scanned since it's static.
+    Stackwalker::set_max_frames_scanned(1024);
+  }
+
+  // Set the Breakpad symbol information that supplier should return for
+  // MODULE to INFO.
+  void SetModuleSymbols(MockCodeModule *module, const string &info) {
+    size_t buffer_size;
+    char *buffer = supplier.CopySymbolDataAndOwnTheCopy(info, &buffer_size);
+    EXPECT_CALL(supplier, GetCStringSymbolData(module, &system_info, _, _, _))
+      .WillRepeatedly(DoAll(SetArgumentPointee<3>(buffer),
+                            SetArgumentPointee<4>(buffer_size),
+                            Return(MockSymbolSupplier::FOUND)));
+  }
+
+  // Populate stack_region with the contents of stack_section. Use
+  // stack_section.start() as the region's starting address.
+  void RegionFromSection() {
+    string contents;
+    ASSERT_TRUE(stack_section.GetContents(&contents));
+    stack_region.Init(stack_section.start().Value(), contents);
+  }
+
+  // Fill RAW_CONTEXT with pseudo-random data, for round-trip checking.
+  void BrandContext(MDRawContextAMD64 *raw_context) {
+    uint8_t x = 173;
+    for (size_t i = 0; i < sizeof(*raw_context); i++)
+      reinterpret_cast<uint8_t *>(raw_context)[i] = (x += 17);
+  }
+
+  SystemInfo system_info;
+  MDRawContextAMD64 raw_context;
+  Section stack_section;
+  MockMemoryRegion stack_region;
+  MockCodeModule module1;
+  MockCodeModule module2;
+  MockCodeModules modules;
+  MockSymbolSupplier supplier;
+  BasicSourceLineResolver resolver;
+  CallStack call_stack;
+  const vector<StackFrame *> *frames;
+};
+
+class GetContextFrame: public StackwalkerAMD64Fixture, public Test { };
+
+class SanityCheck: public StackwalkerAMD64Fixture, public Test { };
+
+TEST_F(SanityCheck, NoResolver) {
+  // There should be no references to the stack in this walk: we don't
+  // provide any call frame information, so trying to reconstruct the
+  // context frame's caller should fail. So there's no need for us to
+  // provide stack contents.
+  raw_context.rip = 0x40000000c0000200ULL;
+  raw_context.rbp = 0x8000000080000000ULL;
+
+  StackFrameSymbolizer frame_symbolizer(NULL, NULL);
+  StackwalkerAMD64 walker(&system_info, &raw_context, &stack_region, &modules,
+                          &frame_symbolizer);
+  // This should succeed even without a resolver or supplier.
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(1U, modules_without_symbols.size());
+  ASSERT_EQ("module1", modules_without_symbols[0]->debug_file());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+  ASSERT_GE(1U, frames->size());
+  StackFrameAMD64 *frame = static_cast<StackFrameAMD64 *>(frames->at(0));
+  // Check that the values from the original raw context made it
+  // through to the context in the stack frame.
+  EXPECT_EQ(0, memcmp(&raw_context, &frame->context, sizeof(raw_context)));
+}
+
+TEST_F(GetContextFrame, Simple) {
+  // There should be no references to the stack in this walk: we don't
+  // provide any call frame information, so trying to reconstruct the
+  // context frame's caller should fail. So there's no need for us to
+  // provide stack contents.
+  raw_context.rip = 0x40000000c0000200ULL;
+  raw_context.rbp = 0x8000000080000000ULL;
+
+  StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+  StackwalkerAMD64 walker(&system_info, &raw_context, &stack_region, &modules,
+                          &frame_symbolizer);
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(1U, modules_without_symbols.size());
+  ASSERT_EQ("module1", modules_without_symbols[0]->debug_file());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+  ASSERT_GE(1U, frames->size());
+  StackFrameAMD64 *frame = static_cast<StackFrameAMD64 *>(frames->at(0));
+  // Check that the values from the original raw context made it
+  // through to the context in the stack frame.
+  EXPECT_EQ(0, memcmp(&raw_context, &frame->context, sizeof(raw_context)));
+}
+
+// The stackwalker should be able to produce the context frame even
+// without stack memory present.
+TEST_F(GetContextFrame, NoStackMemory) {
+  raw_context.rip = 0x40000000c0000200ULL;
+  raw_context.rbp = 0x8000000080000000ULL;
+
+  StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+  StackwalkerAMD64 walker(&system_info, &raw_context, NULL, &modules,
+                          &frame_symbolizer);
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(1U, modules_without_symbols.size());
+  ASSERT_EQ("module1", modules_without_symbols[0]->debug_file());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+  ASSERT_GE(1U, frames->size());
+  StackFrameAMD64 *frame = static_cast<StackFrameAMD64 *>(frames->at(0));
+  // Check that the values from the original raw context made it
+  // through to the context in the stack frame.
+  EXPECT_EQ(0, memcmp(&raw_context, &frame->context, sizeof(raw_context)));
+}
+
+class GetCallerFrame: public StackwalkerAMD64Fixture, public Test { };
+
+TEST_F(GetCallerFrame, ScanWithoutSymbols) {
+  // When the stack walker resorts to scanning the stack,
+  // only addresses located within loaded modules are
+  // considered valid return addresses.
+  // Force scanning through three frames to ensure that the
+  // stack pointer is set properly in scan-recovered frames.
+  stack_section.start() = 0x8000000080000000ULL;
+  uint64_t return_address1 = 0x50000000b0000100ULL;
+  uint64_t return_address2 = 0x50000000b0000900ULL;
+  Label frame1_sp, frame2_sp, frame1_rbp;
+  stack_section
+    // frame 0
+    .Append(16, 0)                      // space
+
+    .D64(0x40000000b0000000ULL)         // junk that's not
+    .D64(0x50000000d0000000ULL)         // a return address
+
+    .D64(return_address1)               // actual return address
+    // frame 1
+    .Mark(&frame1_sp)
+    .Append(16, 0)                      // space
+
+    .D64(0x40000000b0000000ULL)         // more junk
+    .D64(0x50000000d0000000ULL)
+
+    .Mark(&frame1_rbp)
+    .D64(stack_section.start())         // This is in the right place to be
+                                        // a saved rbp, but it's bogus, so
+                                        // we shouldn't report it.
+
+    .D64(return_address2)               // actual return address
+    // frame 2
+    .Mark(&frame2_sp)
+    .Append(32, 0);                     // end of stack
+
+  RegionFromSection();
+
+  raw_context.rip = 0x40000000c0000200ULL;
+  raw_context.rbp = frame1_rbp.Value();
+  raw_context.rsp = stack_section.start().Value();
+
+  StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+  StackwalkerAMD64 walker(&system_info, &raw_context, &stack_region, &modules,
+                          &frame_symbolizer);
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(2U, modules_without_symbols.size());
+  ASSERT_EQ("module1", modules_without_symbols[0]->debug_file());
+  ASSERT_EQ("module2", modules_without_symbols[1]->debug_file());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+  ASSERT_EQ(3U, frames->size());
+
+  StackFrameAMD64 *frame0 = static_cast<StackFrameAMD64 *>(frames->at(0));
+  EXPECT_EQ(StackFrame::FRAME_TRUST_CONTEXT, frame0->trust);
+  ASSERT_EQ(StackFrameAMD64::CONTEXT_VALID_ALL, frame0->context_validity);
+  EXPECT_EQ(0, memcmp(&raw_context, &frame0->context, sizeof(raw_context)));
+
+  StackFrameAMD64 *frame1 = static_cast<StackFrameAMD64 *>(frames->at(1));
+  EXPECT_EQ(StackFrame::FRAME_TRUST_SCAN, frame1->trust);
+  ASSERT_EQ((StackFrameAMD64::CONTEXT_VALID_RIP |
+             StackFrameAMD64::CONTEXT_VALID_RSP |
+             StackFrameAMD64::CONTEXT_VALID_RBP),
+            frame1->context_validity);
+  EXPECT_EQ(return_address1, frame1->context.rip);
+  EXPECT_EQ(frame1_sp.Value(), frame1->context.rsp);
+  EXPECT_EQ(frame1_rbp.Value(), frame1->context.rbp);
+
+  StackFrameAMD64 *frame2 = static_cast<StackFrameAMD64 *>(frames->at(2));
+  EXPECT_EQ(StackFrame::FRAME_TRUST_SCAN, frame2->trust);
+  ASSERT_EQ((StackFrameAMD64::CONTEXT_VALID_RIP |
+             StackFrameAMD64::CONTEXT_VALID_RSP),
+            frame2->context_validity);
+  EXPECT_EQ(return_address2, frame2->context.rip);
+  EXPECT_EQ(frame2_sp.Value(), frame2->context.rsp);
+}
+
+TEST_F(GetCallerFrame, ScanWithFunctionSymbols) {
+  // During stack scanning, if a potential return address
+  // is located within a loaded module that has symbols,
+  // it is only considered a valid return address if it
+  // lies within a function's bounds.
+  stack_section.start() = 0x8000000080000000ULL;
+  uint64_t return_address = 0x50000000b0000110ULL;
+  Label frame1_sp, frame1_rbp;
+
+  stack_section
+    // frame 0
+    .Append(16, 0)                      // space
+
+    .D64(0x40000000b0000000ULL)         // junk that's not
+    .D64(0x50000000b0000000ULL)         // a return address
+
+    .D64(0x40000000c0001000ULL)         // a couple of plausible addresses
+    .D64(0x50000000b000aaaaULL)         // that are not within functions
+
+    .D64(return_address)                // actual return address
+    // frame 1
+    .Mark(&frame1_sp)
+    .Append(32, 0)                      // end of stack
+    .Mark(&frame1_rbp);
+  RegionFromSection();
+
+  raw_context.rip = 0x40000000c0000200ULL;
+  raw_context.rbp = frame1_rbp.Value();
+  raw_context.rsp = stack_section.start().Value();
+
+  SetModuleSymbols(&module1,
+                   // The youngest frame's function.
+                   "FUNC 100 400 10 platypus\n");
+  SetModuleSymbols(&module2,
+                   // The calling frame's function.
+                   "FUNC 100 400 10 echidna\n");
+
+  StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+  StackwalkerAMD64 walker(&system_info, &raw_context, &stack_region, &modules,
+                          &frame_symbolizer);
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(0U, modules_without_symbols.size());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+  ASSERT_EQ(2U, frames->size());
+
+  StackFrameAMD64 *frame0 = static_cast<StackFrameAMD64 *>(frames->at(0));
+  EXPECT_EQ(StackFrame::FRAME_TRUST_CONTEXT, frame0->trust);
+  ASSERT_EQ(StackFrameAMD64::CONTEXT_VALID_ALL, frame0->context_validity);
+  EXPECT_EQ("platypus", frame0->function_name);
+  EXPECT_EQ(0x40000000c0000100ULL, frame0->function_base);
+
+  StackFrameAMD64 *frame1 = static_cast<StackFrameAMD64 *>(frames->at(1));
+  EXPECT_EQ(StackFrame::FRAME_TRUST_SCAN, frame1->trust);
+  ASSERT_EQ((StackFrameAMD64::CONTEXT_VALID_RIP |
+             StackFrameAMD64::CONTEXT_VALID_RSP |
+             StackFrameAMD64::CONTEXT_VALID_RBP),
+            frame1->context_validity);
+  EXPECT_EQ(return_address, frame1->context.rip);
+  EXPECT_EQ(frame1_sp.Value(), frame1->context.rsp);
+  EXPECT_EQ(frame1_rbp.Value(), frame1->context.rbp);
+  EXPECT_EQ("echidna", frame1->function_name);
+  EXPECT_EQ(0x50000000b0000100ULL, frame1->function_base);
+}
+
+// Test that set_max_frames_scanned prevents using stack scanning
+// to find caller frames.
+TEST_F(GetCallerFrame, ScanningNotAllowed) {
+  // When the stack walker resorts to scanning the stack,
+  // only addresses located within loaded modules are
+  // considered valid return addresses.
+  stack_section.start() = 0x8000000080000000ULL;
+  uint64_t return_address1 = 0x50000000b0000100ULL;
+  uint64_t return_address2 = 0x50000000b0000900ULL;
+  Label frame1_sp, frame2_sp, frame1_rbp;
+  stack_section
+    // frame 0
+    .Append(16, 0)                      // space
+
+    .D64(0x40000000b0000000ULL)         // junk that's not
+    .D64(0x50000000d0000000ULL)         // a return address
+
+    .D64(return_address1)               // actual return address
+    // frame 1
+    .Mark(&frame1_sp)
+    .Append(16, 0)                      // space
+
+    .D64(0x40000000b0000000ULL)         // more junk
+    .D64(0x50000000d0000000ULL)
+
+    .Mark(&frame1_rbp)
+    .D64(stack_section.start())         // This is in the right place to be
+                                        // a saved rbp, but it's bogus, so
+                                        // we shouldn't report it.
+
+    .D64(return_address2)               // actual return address
+    // frame 2
+    .Mark(&frame2_sp)
+    .Append(32, 0);                     // end of stack
+
+  RegionFromSection();
+
+  raw_context.rip = 0x40000000c0000200ULL;
+  raw_context.rbp = frame1_rbp.Value();
+  raw_context.rsp = stack_section.start().Value();
+
+  StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+  StackwalkerAMD64 walker(&system_info, &raw_context, &stack_region, &modules,
+                          &frame_symbolizer);
+  Stackwalker::set_max_frames_scanned(0);
+
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(1U, modules_without_symbols.size());
+  ASSERT_EQ("module1", modules_without_symbols[0]->debug_file());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+  ASSERT_EQ(1U, frames->size());
+
+  StackFrameAMD64 *frame0 = static_cast<StackFrameAMD64 *>(frames->at(0));
+  EXPECT_EQ(StackFrame::FRAME_TRUST_CONTEXT, frame0->trust);
+  ASSERT_EQ(StackFrameAMD64::CONTEXT_VALID_ALL, frame0->context_validity);
+  EXPECT_EQ(0, memcmp(&raw_context, &frame0->context, sizeof(raw_context)));
+}
+
+TEST_F(GetCallerFrame, CallerPushedRBP) {
+  // Functions typically push their %rbp upon entry and set %rbp pointing
+  // there.  If stackwalking finds a plausible address for the next frame's
+  // %rbp directly below the return address, assume that it is indeed the
+  // next frame's %rbp.
+  stack_section.start() = 0x8000000080000000ULL;
+  uint64_t return_address = 0x50000000b0000110ULL;
+  Label frame0_rbp, frame1_sp, frame1_rbp;
+
+  stack_section
+    // frame 0
+    .Append(16, 0)                      // space
+
+    .D64(0x40000000b0000000ULL)         // junk that's not
+    .D64(0x50000000b0000000ULL)         // a return address
+
+    .D64(0x40000000c0001000ULL)         // a couple of plausible addresses
+    .D64(0x50000000b000aaaaULL)         // that are not within functions
+
+    .Mark(&frame0_rbp)
+    .D64(frame1_rbp)                    // caller-pushed %rbp
+    .D64(return_address)                // actual return address
+    // frame 1
+    .Mark(&frame1_sp)
+    .Append(32, 0)                      // body of frame1
+    .Mark(&frame1_rbp);                 // end of stack
+  RegionFromSection();
+
+  raw_context.rip = 0x40000000c0000200ULL;
+  raw_context.rbp = frame0_rbp.Value();
+  raw_context.rsp = stack_section.start().Value();
+
+  SetModuleSymbols(&module1,
+                   // The youngest frame's function.
+                   "FUNC 100 400 10 sasquatch\n");
+  SetModuleSymbols(&module2,
+                   // The calling frame's function.
+                   "FUNC 100 400 10 yeti\n");
+
+  StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+  StackwalkerAMD64 walker(&system_info, &raw_context, &stack_region, &modules,
+                          &frame_symbolizer);
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(0U, modules_without_symbols.size());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+  ASSERT_EQ(2U, frames->size());
+
+  StackFrameAMD64 *frame0 = static_cast<StackFrameAMD64 *>(frames->at(0));
+  EXPECT_EQ(StackFrame::FRAME_TRUST_CONTEXT, frame0->trust);
+  ASSERT_EQ(StackFrameAMD64::CONTEXT_VALID_ALL, frame0->context_validity);
+  EXPECT_EQ(frame0_rbp.Value(), frame0->context.rbp);
+  EXPECT_EQ("sasquatch", frame0->function_name);
+  EXPECT_EQ(0x40000000c0000100ULL, frame0->function_base);
+
+  StackFrameAMD64 *frame1 = static_cast<StackFrameAMD64 *>(frames->at(1));
+  EXPECT_EQ(StackFrame::FRAME_TRUST_FP, frame1->trust);
+  ASSERT_EQ((StackFrameAMD64::CONTEXT_VALID_RIP |
+             StackFrameAMD64::CONTEXT_VALID_RSP |
+             StackFrameAMD64::CONTEXT_VALID_RBP),
+            frame1->context_validity);
+  EXPECT_EQ(return_address, frame1->context.rip);
+  EXPECT_EQ(frame1_sp.Value(), frame1->context.rsp);
+  EXPECT_EQ(frame1_rbp.Value(), frame1->context.rbp);
+  EXPECT_EQ("yeti", frame1->function_name);
+  EXPECT_EQ(0x50000000b0000100ULL, frame1->function_base);
+}
+
+struct CFIFixture: public StackwalkerAMD64Fixture {
+  CFIFixture() {
+    // Provide a bunch of STACK CFI records; we'll walk to the caller
+    // from every point in this series, expecting to find the same set
+    // of register values.
+    SetModuleSymbols(&module1,
+                     // The youngest frame's function.
+                     "FUNC 4000 1000 10 enchiridion\n"
+                     // Initially, just a return address.
+                     "STACK CFI INIT 4000 100 .cfa: $rsp 8 + .ra: .cfa 8 - ^\n"
+                     // Push %rbx.
+                     "STACK CFI 4001 .cfa: $rsp 16 + $rbx: .cfa 16 - ^\n"
+                     // Save %r12 in %rbx.  Weird, but permitted.
+                     "STACK CFI 4002 $r12: $rbx\n"
+                     // Allocate frame space, and save %r13.
+                     "STACK CFI 4003 .cfa: $rsp 40 + $r13: .cfa 32 - ^\n"
+                     // Put the return address in %r13.
+                     "STACK CFI 4005 .ra: $r13\n"
+                     // Save %rbp, and use it as a frame pointer.
+                     "STACK CFI 4006 .cfa: $rbp 16 + $rbp: .cfa 24 - ^\n"
+
+                     // The calling function.
+                     "FUNC 5000 1000 10 epictetus\n"
+                     // Mark it as end of stack.
+                     "STACK CFI INIT 5000 1000 .cfa: $rsp .ra 0\n");
+
+    // Provide some distinctive values for the caller's registers.
+    expected.rsp = 0x8000000080000000ULL;
+    expected.rip = 0x40000000c0005510ULL;
+    expected.rbp = 0x68995b1de4700266ULL;
+    expected.rbx = 0x5a5beeb38de23be8ULL;
+    expected.r12 = 0xed1b02e8cc0fc79cULL;
+    expected.r13 = 0x1d20ad8acacbe930ULL;
+    expected.r14 = 0xe94cffc2f7adaa28ULL;
+    expected.r15 = 0xb638d17d8da413b5ULL;
+
+    // By default, registers are unchanged.
+    raw_context = expected;
+  }
+
+  // Walk the stack, using stack_section as the contents of the stack
+  // and raw_context as the current register values. (Set
+  // raw_context.rsp to the stack's starting address.) Expect two
+  // stack frames; in the older frame, expect the callee-saves
+  // registers to have values matching those in 'expected'.
+  void CheckWalk() {
+    RegionFromSection();
+    raw_context.rsp = stack_section.start().Value();
+
+    StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+    StackwalkerAMD64 walker(&system_info, &raw_context, &stack_region, &modules,
+                            &frame_symbolizer);
+    vector<const CodeModule*> modules_without_symbols;
+    vector<const CodeModule*> modules_with_corrupt_symbols;
+    ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                            &modules_with_corrupt_symbols));
+    ASSERT_EQ(0U, modules_without_symbols.size());
+    ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+    frames = call_stack.frames();
+    ASSERT_EQ(2U, frames->size());
+
+    StackFrameAMD64 *frame0 = static_cast<StackFrameAMD64 *>(frames->at(0));
+    EXPECT_EQ(StackFrame::FRAME_TRUST_CONTEXT, frame0->trust);
+    ASSERT_EQ(StackFrameAMD64::CONTEXT_VALID_ALL, frame0->context_validity);
+    EXPECT_EQ("enchiridion", frame0->function_name);
+    EXPECT_EQ(0x40000000c0004000ULL, frame0->function_base);
+
+    StackFrameAMD64 *frame1 = static_cast<StackFrameAMD64 *>(frames->at(1));
+    EXPECT_EQ(StackFrame::FRAME_TRUST_CFI, frame1->trust);
+    ASSERT_EQ((StackFrameAMD64::CONTEXT_VALID_RIP |
+               StackFrameAMD64::CONTEXT_VALID_RSP |
+               StackFrameAMD64::CONTEXT_VALID_RBP |
+               StackFrameAMD64::CONTEXT_VALID_RBX |
+               StackFrameAMD64::CONTEXT_VALID_R12 |
+               StackFrameAMD64::CONTEXT_VALID_R13 |
+               StackFrameAMD64::CONTEXT_VALID_R14 |
+               StackFrameAMD64::CONTEXT_VALID_R15),
+              frame1->context_validity);
+    EXPECT_EQ(expected.rip, frame1->context.rip);
+    EXPECT_EQ(expected.rsp, frame1->context.rsp);
+    EXPECT_EQ(expected.rbp, frame1->context.rbp);
+    EXPECT_EQ(expected.rbx, frame1->context.rbx);
+    EXPECT_EQ(expected.r12, frame1->context.r12);
+    EXPECT_EQ(expected.r13, frame1->context.r13);
+    EXPECT_EQ(expected.r14, frame1->context.r14);
+    EXPECT_EQ(expected.r15, frame1->context.r15);
+    EXPECT_EQ("epictetus", frame1->function_name);
+  }
+
+  // The values we expect to find for the caller's registers.
+  MDRawContextAMD64 expected;
+};
+
+class CFI: public CFIFixture, public Test { };
+
+TEST_F(CFI, At4000) {
+  Label frame1_rsp = expected.rsp;
+  stack_section
+    .D64(0x40000000c0005510ULL) // return address
+    .Mark(&frame1_rsp);         // This effectively sets stack_section.start().
+  raw_context.rip = 0x40000000c0004000ULL;
+  CheckWalk();
+}
+
+TEST_F(CFI, At4001) {
+  Label frame1_rsp = expected.rsp;
+  stack_section
+    .D64(0x5a5beeb38de23be8ULL) // saved %rbx
+    .D64(0x40000000c0005510ULL) // return address
+    .Mark(&frame1_rsp);         // This effectively sets stack_section.start().
+  raw_context.rip = 0x40000000c0004001ULL;
+  raw_context.rbx = 0xbe0487d2f9eafe29ULL; // callee's (distinct) %rbx value
+  CheckWalk();
+}
+
+TEST_F(CFI, At4002) {
+  Label frame1_rsp = expected.rsp;
+  stack_section
+    .D64(0x5a5beeb38de23be8ULL) // saved %rbx
+    .D64(0x40000000c0005510ULL) // return address
+    .Mark(&frame1_rsp);         // This effectively sets stack_section.start().
+  raw_context.rip = 0x40000000c0004002ULL;
+  raw_context.rbx = 0xed1b02e8cc0fc79cULL; // saved %r12
+  raw_context.r12 = 0xb0118de918a4bceaULL; // callee's (distinct) %r12 value
+  CheckWalk();
+}
+
+TEST_F(CFI, At4003) {
+  Label frame1_rsp = expected.rsp;
+  stack_section
+    .D64(0x0e023828dffd4d81ULL) // garbage
+    .D64(0x1d20ad8acacbe930ULL) // saved %r13
+    .D64(0x319e68b49e3ace0fULL) // garbage
+    .D64(0x5a5beeb38de23be8ULL) // saved %rbx
+    .D64(0x40000000c0005510ULL) // return address
+    .Mark(&frame1_rsp);         // This effectively sets stack_section.start().
+  raw_context.rip = 0x40000000c0004003ULL;
+  raw_context.rbx = 0xed1b02e8cc0fc79cULL; // saved %r12
+  raw_context.r12 = 0x89d04fa804c87a43ULL; // callee's (distinct) %r12
+  raw_context.r13 = 0x5118e02cbdb24b03ULL; // callee's (distinct) %r13
+  CheckWalk();
+}
+
+// The results here should be the same as those at module offset 0x4003.
+TEST_F(CFI, At4004) {
+  Label frame1_rsp = expected.rsp;
+  stack_section
+    .D64(0x0e023828dffd4d81ULL) // garbage
+    .D64(0x1d20ad8acacbe930ULL) // saved %r13
+    .D64(0x319e68b49e3ace0fULL) // garbage
+    .D64(0x5a5beeb38de23be8ULL) // saved %rbx
+    .D64(0x40000000c0005510ULL) // return address
+    .Mark(&frame1_rsp);         // This effectively sets stack_section.start().
+  raw_context.rip = 0x40000000c0004004ULL;
+  raw_context.rbx = 0xed1b02e8cc0fc79cULL; // saved %r12
+  raw_context.r12 = 0x89d04fa804c87a43ULL; // callee's (distinct) %r12
+  raw_context.r13 = 0x5118e02cbdb24b03ULL; // callee's (distinct) %r13
+  CheckWalk();
+}
+
+TEST_F(CFI, At4005) {
+  Label frame1_rsp = expected.rsp;
+  stack_section
+    .D64(0x4b516dd035745953ULL) // garbage
+    .D64(0x1d20ad8acacbe930ULL) // saved %r13
+    .D64(0xa6d445e16ae3d872ULL) // garbage
+    .D64(0x5a5beeb38de23be8ULL) // saved %rbx
+    .D64(0xaa95fa054aedfbaeULL) // garbage
+    .Mark(&frame1_rsp);         // This effectively sets stack_section.start().
+  raw_context.rip = 0x40000000c0004005ULL;
+  raw_context.rbx = 0xed1b02e8cc0fc79cULL; // saved %r12
+  raw_context.r12 = 0x46b1b8868891b34aULL; // callee's %r12
+  raw_context.r13 = 0x40000000c0005510ULL; // return address
+  CheckWalk();
+}
+
+TEST_F(CFI, At4006) {
+  Label frame0_rbp;
+  Label frame1_rsp = expected.rsp;
+  stack_section
+    .D64(0x043c6dfceb91aa34ULL) // garbage
+    .D64(0x1d20ad8acacbe930ULL) // saved %r13
+    .D64(0x68995b1de4700266ULL) // saved %rbp
+    .Mark(&frame0_rbp)          // frame pointer points here
+    .D64(0x5a5beeb38de23be8ULL) // saved %rbx
+    .D64(0xf015ee516ad89eabULL) // garbage
+    .Mark(&frame1_rsp);         // This effectively sets stack_section.start().
+  raw_context.rip = 0x40000000c0004006ULL;
+  raw_context.rbp = frame0_rbp.Value();
+  raw_context.rbx = 0xed1b02e8cc0fc79cULL; // saved %r12
+  raw_context.r12 = 0x26e007b341acfebdULL; // callee's %r12
+  raw_context.r13 = 0x40000000c0005510ULL; // return address
+  CheckWalk();
+}
diff --git a/google-breakpad/src/processor/stackwalker_arm.cc b/google-breakpad/src/processor/stackwalker_arm.cc
new file mode 100644
index 0000000..e4fc586
--- /dev/null
+++ b/google-breakpad/src/processor/stackwalker_arm.cc
@@ -0,0 +1,296 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// stackwalker_arm.cc: arm-specific stackwalker.
+//
+// See stackwalker_arm.h for documentation.
+//
+// Author: Mark Mentovai, Ted Mielczarek, Jim Blandy
+
+#include <vector>
+
+#include "common/scoped_ptr.h"
+#include "google_breakpad/processor/call_stack.h"
+#include "google_breakpad/processor/memory_region.h"
+#include "google_breakpad/processor/source_line_resolver_interface.h"
+#include "google_breakpad/processor/stack_frame_cpu.h"
+#include "processor/cfi_frame_info.h"
+#include "processor/logging.h"
+#include "processor/stackwalker_arm.h"
+
+namespace google_breakpad {
+
+
+StackwalkerARM::StackwalkerARM(const SystemInfo* system_info,
+                               const MDRawContextARM* context,
+                               int fp_register,
+                               MemoryRegion* memory,
+                               const CodeModules* modules,
+                               StackFrameSymbolizer* resolver_helper)
+    : Stackwalker(system_info, memory, modules, resolver_helper),
+      context_(context), fp_register_(fp_register),
+      context_frame_validity_(StackFrameARM::CONTEXT_VALID_ALL) { }
+
+
+StackFrame* StackwalkerARM::GetContextFrame() {
+  if (!context_) {
+    BPLOG(ERROR) << "Can't get context frame without context";
+    return NULL;
+  }
+
+  StackFrameARM* frame = new StackFrameARM();
+
+  // The instruction pointer is stored directly in a register (r15), so pull it
+  // straight out of the CPU context structure.
+  frame->context = *context_;
+  frame->context_validity = context_frame_validity_;
+  frame->trust = StackFrame::FRAME_TRUST_CONTEXT;
+  frame->instruction = frame->context.iregs[MD_CONTEXT_ARM_REG_PC];
+
+  return frame;
+}
+
+StackFrameARM* StackwalkerARM::GetCallerByCFIFrameInfo(
+    const vector<StackFrame*> &frames,
+    CFIFrameInfo* cfi_frame_info) {
+  StackFrameARM* last_frame = static_cast<StackFrameARM*>(frames.back());
+
+  static const char* register_names[] = {
+    "r0",  "r1",  "r2",  "r3",  "r4",  "r5",  "r6",  "r7",
+    "r8",  "r9",  "r10", "r11", "r12", "sp",  "lr",  "pc",
+    "f0",  "f1",  "f2",  "f3",  "f4",  "f5",  "f6",  "f7",
+    "fps", "cpsr",
+    NULL
+  };
+
+  // Populate a dictionary with the valid register values in last_frame.
+  CFIFrameInfo::RegisterValueMap<uint32_t> callee_registers;
+  for (int i = 0; register_names[i]; i++)
+    if (last_frame->context_validity & StackFrameARM::RegisterValidFlag(i))
+      callee_registers[register_names[i]] = last_frame->context.iregs[i];
+
+  // Use the STACK CFI data to recover the caller's register values.
+  CFIFrameInfo::RegisterValueMap<uint32_t> caller_registers;
+  if (!cfi_frame_info->FindCallerRegs(callee_registers, *memory_,
+                                      &caller_registers))
+    return NULL;
+
+  // Construct a new stack frame given the values the CFI recovered.
+  scoped_ptr<StackFrameARM> frame(new StackFrameARM());
+  for (int i = 0; register_names[i]; i++) {
+    CFIFrameInfo::RegisterValueMap<uint32_t>::iterator entry =
+      caller_registers.find(register_names[i]);
+    if (entry != caller_registers.end()) {
+      // We recovered the value of this register; fill the context with the
+      // value from caller_registers.
+      frame->context_validity |= StackFrameARM::RegisterValidFlag(i);
+      frame->context.iregs[i] = entry->second;
+    } else if (4 <= i && i <= 11 && (last_frame->context_validity &
+                                     StackFrameARM::RegisterValidFlag(i))) {
+      // If the STACK CFI data doesn't mention some callee-saves register, and
+      // it is valid in the callee, assume the callee has not yet changed it.
+      // Registers r4 through r11 are callee-saves, according to the Procedure
+      // Call Standard for the ARM Architecture, which the Linux ABI follows.
+      frame->context_validity |= StackFrameARM::RegisterValidFlag(i);
+      frame->context.iregs[i] = last_frame->context.iregs[i];
+    }
+  }
+  // If the CFI doesn't recover the PC explicitly, then use .ra.
+  if (!(frame->context_validity & StackFrameARM::CONTEXT_VALID_PC)) {
+    CFIFrameInfo::RegisterValueMap<uint32_t>::iterator entry =
+      caller_registers.find(".ra");
+    if (entry != caller_registers.end()) {
+      if (fp_register_ == -1) {
+        frame->context_validity |= StackFrameARM::CONTEXT_VALID_PC;
+        frame->context.iregs[MD_CONTEXT_ARM_REG_PC] = entry->second;
+      } else {
+        // The CFI updated the link register and not the program counter.
+        // Handle getting the program counter from the link register.
+        frame->context_validity |= StackFrameARM::CONTEXT_VALID_PC;
+        frame->context_validity |= StackFrameARM::CONTEXT_VALID_LR;
+        frame->context.iregs[MD_CONTEXT_ARM_REG_LR] = entry->second;
+        frame->context.iregs[MD_CONTEXT_ARM_REG_PC] =
+            last_frame->context.iregs[MD_CONTEXT_ARM_REG_LR];
+      }
+    }
+  }
+  // If the CFI doesn't recover the SP explicitly, then use .cfa.
+  if (!(frame->context_validity & StackFrameARM::CONTEXT_VALID_SP)) {
+    CFIFrameInfo::RegisterValueMap<uint32_t>::iterator entry =
+      caller_registers.find(".cfa");
+    if (entry != caller_registers.end()) {
+      frame->context_validity |= StackFrameARM::CONTEXT_VALID_SP;
+      frame->context.iregs[MD_CONTEXT_ARM_REG_SP] = entry->second;
+    }
+  }
+
+  // If we didn't recover the PC and the SP, then the frame isn't very useful.
+  static const int essentials = (StackFrameARM::CONTEXT_VALID_SP
+                                 | StackFrameARM::CONTEXT_VALID_PC);
+  if ((frame->context_validity & essentials) != essentials)
+    return NULL;
+
+  frame->trust = StackFrame::FRAME_TRUST_CFI;
+  return frame.release();
+}
+
+StackFrameARM* StackwalkerARM::GetCallerByStackScan(
+    const vector<StackFrame*> &frames) {
+  StackFrameARM* last_frame = static_cast<StackFrameARM*>(frames.back());
+  uint32_t last_sp = last_frame->context.iregs[MD_CONTEXT_ARM_REG_SP];
+  uint32_t caller_sp, caller_pc;
+
+  if (!ScanForReturnAddress(last_sp, &caller_sp, &caller_pc,
+                            frames.size() == 1 /* is_context_frame */)) {
+    // No plausible return address was found.
+    return NULL;
+  }
+
+  // ScanForReturnAddress found a reasonable return address. Advance
+  // %sp to the location above the one where the return address was
+  // found.
+  caller_sp += 4;
+
+  // Create a new stack frame (ownership will be transferred to the caller)
+  // and fill it in.
+  StackFrameARM* frame = new StackFrameARM();
+
+  frame->trust = StackFrame::FRAME_TRUST_SCAN;
+  frame->context = last_frame->context;
+  frame->context.iregs[MD_CONTEXT_ARM_REG_PC] = caller_pc;
+  frame->context.iregs[MD_CONTEXT_ARM_REG_SP] = caller_sp;
+  frame->context_validity = StackFrameARM::CONTEXT_VALID_PC |
+                            StackFrameARM::CONTEXT_VALID_SP;
+
+  return frame;
+}
+
+StackFrameARM* StackwalkerARM::GetCallerByFramePointer(
+    const vector<StackFrame*> &frames) {
+  StackFrameARM* last_frame = static_cast<StackFrameARM*>(frames.back());
+
+  if (!(last_frame->context_validity &
+        StackFrameARM::RegisterValidFlag(fp_register_))) {
+    return NULL;
+  }
+
+  uint32_t last_fp = last_frame->context.iregs[fp_register_];
+
+  uint32_t caller_fp = 0;
+  if (last_fp && !memory_->GetMemoryAtAddress(last_fp, &caller_fp)) {
+    BPLOG(ERROR) << "Unable to read caller_fp from last_fp: 0x"
+                 << std::hex << last_fp;
+    return NULL;
+  }
+
+  uint32_t caller_lr = 0;
+  if (last_fp && !memory_->GetMemoryAtAddress(last_fp + 4, &caller_lr)) {
+    BPLOG(ERROR) << "Unable to read caller_lr from last_fp + 4: 0x"
+                 << std::hex << (last_fp + 4);
+    return NULL;
+  }
+
+  uint32_t caller_sp = last_fp ? last_fp + 8 :
+      last_frame->context.iregs[MD_CONTEXT_ARM_REG_SP];
+
+  // Create a new stack frame (ownership will be transferred to the caller)
+  // and fill it in.
+  StackFrameARM* frame = new StackFrameARM();
+
+  frame->trust = StackFrame::FRAME_TRUST_FP;
+  frame->context = last_frame->context;
+  frame->context.iregs[fp_register_] = caller_fp;
+  frame->context.iregs[MD_CONTEXT_ARM_REG_SP] = caller_sp;
+  frame->context.iregs[MD_CONTEXT_ARM_REG_PC] =
+      last_frame->context.iregs[MD_CONTEXT_ARM_REG_LR];
+  frame->context.iregs[MD_CONTEXT_ARM_REG_LR] = caller_lr;
+  frame->context_validity = StackFrameARM::CONTEXT_VALID_PC |
+                            StackFrameARM::CONTEXT_VALID_LR |
+                            StackFrameARM::RegisterValidFlag(fp_register_) |
+                            StackFrameARM::CONTEXT_VALID_SP;
+  return frame;
+}
+
+StackFrame* StackwalkerARM::GetCallerFrame(const CallStack* stack,
+                                           bool stack_scan_allowed) {
+  if (!memory_ || !stack) {
+    BPLOG(ERROR) << "Can't get caller frame without memory or stack";
+    return NULL;
+  }
+
+  const vector<StackFrame*> &frames = *stack->frames();
+  StackFrameARM* last_frame = static_cast<StackFrameARM*>(frames.back());
+  scoped_ptr<StackFrameARM> frame;
+
+  // See if there is DWARF call frame information covering this address.
+  scoped_ptr<CFIFrameInfo> cfi_frame_info(
+      frame_symbolizer_->FindCFIFrameInfo(last_frame));
+  if (cfi_frame_info.get())
+    frame.reset(GetCallerByCFIFrameInfo(frames, cfi_frame_info.get()));
+
+  // If CFI failed, or there wasn't CFI available, fall back
+  // to frame pointer, if this is configured.
+  if (fp_register_ >= 0 && !frame.get())
+    frame.reset(GetCallerByFramePointer(frames));
+
+  // If everuthing failed, fall back to stack scanning.
+  if (stack_scan_allowed && !frame.get())
+    frame.reset(GetCallerByStackScan(frames));
+
+  // If nothing worked, tell the caller.
+  if (!frame.get())
+    return NULL;
+
+
+  // An instruction address of zero marks the end of the stack.
+  if (frame->context.iregs[MD_CONTEXT_ARM_REG_PC] == 0)
+    return NULL;
+
+  // If the new stack pointer is at a lower address than the old, then
+  // that's clearly incorrect. Treat this as end-of-stack to enforce
+  // progress and avoid infinite loops.
+  if (frame->context.iregs[MD_CONTEXT_ARM_REG_SP]
+      < last_frame->context.iregs[MD_CONTEXT_ARM_REG_SP])
+    return NULL;
+
+  // The new frame's context's PC is the return address, which is one
+  // instruction past the instruction that caused us to arrive at the
+  // callee. Set new_frame->instruction to one less than the PC. This won't
+  // reference the beginning of the call instruction, but it's at least
+  // within it, which is sufficient to get the source line information to
+  // match up with the line that contains the function call. Callers that
+  // require the exact return address value may access
+  // frame->context.iregs[MD_CONTEXT_ARM_REG_PC].
+  frame->instruction = frame->context.iregs[MD_CONTEXT_ARM_REG_PC] - 2;
+
+  return frame.release();
+}
+
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/processor/stackwalker_arm.h b/google-breakpad/src/processor/stackwalker_arm.h
new file mode 100644
index 0000000..9081a40
--- /dev/null
+++ b/google-breakpad/src/processor/stackwalker_arm.h
@@ -0,0 +1,107 @@
+// -*- mode: C++ -*-
+
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// stackwalker_arm.h: arm-specific stackwalker.
+//
+// Provides stack frames given arm register context and a memory region
+// corresponding to an arm stack.
+//
+// Author: Mark Mentovai, Ted Mielczarek
+
+
+#ifndef PROCESSOR_STACKWALKER_ARM_H__
+#define PROCESSOR_STACKWALKER_ARM_H__
+
+#include "google_breakpad/common/breakpad_types.h"
+#include "google_breakpad/common/minidump_format.h"
+#include "google_breakpad/processor/stackwalker.h"
+
+namespace google_breakpad {
+
+class CodeModules;
+
+class StackwalkerARM : public Stackwalker {
+ public:
+  // context is an arm context object that gives access to arm-specific
+  // register state corresponding to the innermost called frame to be
+  // included in the stack.  The other arguments are passed directly through
+  // to the base Stackwalker constructor.
+  StackwalkerARM(const SystemInfo* system_info,
+                 const MDRawContextARM* context,
+                 int fp_register,
+                 MemoryRegion* memory,
+                 const CodeModules* modules,
+                 StackFrameSymbolizer* frame_symbolizer);
+
+  // Change the context validity mask of the frame returned by
+  // GetContextFrame to VALID. This is only for use by unit tests; the
+  // default behavior is correct for all application code.
+  void SetContextFrameValidity(int valid) { context_frame_validity_ = valid; }
+
+ private:
+  // Implementation of Stackwalker, using arm context and stack conventions.
+  virtual StackFrame* GetContextFrame();
+  virtual StackFrame* GetCallerFrame(const CallStack* stack,
+                                     bool stack_scan_allowed);
+
+  // Use cfi_frame_info (derived from STACK CFI records) to construct
+  // the frame that called frames.back(). The caller takes ownership
+  // of the returned frame. Return NULL on failure.
+  StackFrameARM* GetCallerByCFIFrameInfo(const vector<StackFrame*> &frames,
+                                         CFIFrameInfo* cfi_frame_info);
+
+  // Use the frame pointer. The caller takes ownership of the returned frame.
+  // Return NULL on failure.
+  StackFrameARM* GetCallerByFramePointer(const vector<StackFrame*> &frames);
+
+  // Scan the stack for plausible return addresses. The caller takes ownership
+  // of the returned frame. Return NULL on failure.
+  StackFrameARM* GetCallerByStackScan(const vector<StackFrame*> &frames);
+
+  // Stores the CPU context corresponding to the youngest stack frame, to
+  // be returned by GetContextFrame.
+  const MDRawContextARM* context_;
+
+  // The register to use a as frame pointer. The value is -1 if frame pointer
+  // cannot be used.
+  int fp_register_;
+
+  // Validity mask for youngest stack frame. This is always
+  // CONTEXT_VALID_ALL in real use; it is only changeable for the sake of
+  // unit tests.
+  int context_frame_validity_;
+};
+
+
+}  // namespace google_breakpad
+
+
+#endif  // PROCESSOR_STACKWALKER_ARM_H__
diff --git a/google-breakpad/src/processor/stackwalker_arm64.cc b/google-breakpad/src/processor/stackwalker_arm64.cc
new file mode 100644
index 0000000..31119a9
--- /dev/null
+++ b/google-breakpad/src/processor/stackwalker_arm64.cc
@@ -0,0 +1,278 @@
+// Copyright (c) 2013 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// stackwalker_arm64.cc: arm64-specific stackwalker.
+//
+// See stackwalker_arm64.h for documentation.
+//
+// Author: Mark Mentovai, Ted Mielczarek, Jim Blandy, Colin Blundell
+
+#include <vector>
+
+#include "common/scoped_ptr.h"
+#include "google_breakpad/processor/call_stack.h"
+#include "google_breakpad/processor/memory_region.h"
+#include "google_breakpad/processor/source_line_resolver_interface.h"
+#include "google_breakpad/processor/stack_frame_cpu.h"
+#include "processor/cfi_frame_info.h"
+#include "processor/logging.h"
+#include "processor/stackwalker_arm64.h"
+
+namespace google_breakpad {
+
+
+StackwalkerARM64::StackwalkerARM64(const SystemInfo* system_info,
+                                   const MDRawContextARM64* context,
+                                   MemoryRegion* memory,
+                                   const CodeModules* modules,
+                                   StackFrameSymbolizer* resolver_helper)
+    : Stackwalker(system_info, memory, modules, resolver_helper),
+      context_(context),
+      context_frame_validity_(StackFrameARM64::CONTEXT_VALID_ALL) { }
+
+
+StackFrame* StackwalkerARM64::GetContextFrame() {
+  if (!context_) {
+    BPLOG(ERROR) << "Can't get context frame without context";
+    return NULL;
+  }
+
+  StackFrameARM64* frame = new StackFrameARM64();
+
+  // The instruction pointer is stored directly in a register (x32), so pull it
+  // straight out of the CPU context structure.
+  frame->context = *context_;
+  frame->context_validity = context_frame_validity_;
+  frame->trust = StackFrame::FRAME_TRUST_CONTEXT;
+  frame->instruction = frame->context.iregs[MD_CONTEXT_ARM64_REG_PC];
+
+  return frame;
+}
+
+StackFrameARM64* StackwalkerARM64::GetCallerByCFIFrameInfo(
+    const vector<StackFrame*> &frames,
+    CFIFrameInfo* cfi_frame_info) {
+  StackFrameARM64* last_frame = static_cast<StackFrameARM64*>(frames.back());
+
+  static const char* register_names[] = {
+    "x0",  "x1",  "x2",  "x3",  "x4",  "x5",  "x6",  "x7",
+    "x8",  "x9",  "x10", "x11", "x12", "x13", "x14", "x15",
+    "x16", "x17", "x18", "x19", "x20", "x21", "x22", "x23",
+    "x24", "x25", "x26", "x27", "x28", "x29", "x30", "sp",
+    "pc",  NULL
+  };
+
+  // Populate a dictionary with the valid register values in last_frame.
+  CFIFrameInfo::RegisterValueMap<uint64_t> callee_registers;
+  for (int i = 0; register_names[i]; i++) {
+    if (last_frame->context_validity & StackFrameARM64::RegisterValidFlag(i))
+      callee_registers[register_names[i]] = last_frame->context.iregs[i];
+  }
+
+  // Use the STACK CFI data to recover the caller's register values.
+  CFIFrameInfo::RegisterValueMap<uint64_t> caller_registers;
+  if (!cfi_frame_info->FindCallerRegs(callee_registers, *memory_,
+                                      &caller_registers)) {
+    return NULL;
+  }
+  // Construct a new stack frame given the values the CFI recovered.
+  scoped_ptr<StackFrameARM64> frame(new StackFrameARM64());
+  for (int i = 0; register_names[i]; i++) {
+    CFIFrameInfo::RegisterValueMap<uint64_t>::iterator entry =
+      caller_registers.find(register_names[i]);
+    if (entry != caller_registers.end()) {
+      // We recovered the value of this register; fill the context with the
+      // value from caller_registers.
+      frame->context_validity |= StackFrameARM64::RegisterValidFlag(i);
+      frame->context.iregs[i] = entry->second;
+    } else if (19 <= i && i <= 29 && (last_frame->context_validity &
+                                      StackFrameARM64::RegisterValidFlag(i))) {
+      // If the STACK CFI data doesn't mention some callee-saves register, and
+      // it is valid in the callee, assume the callee has not yet changed it.
+      // Registers r19 through r29 are callee-saves, according to the Procedure
+      // Call Standard for the ARM AARCH64 Architecture, which the Linux ABI
+      // follows.
+      frame->context_validity |= StackFrameARM64::RegisterValidFlag(i);
+      frame->context.iregs[i] = last_frame->context.iregs[i];
+    }
+  }
+  // If the CFI doesn't recover the PC explicitly, then use .ra.
+  if (!(frame->context_validity & StackFrameARM64::CONTEXT_VALID_PC)) {
+    CFIFrameInfo::RegisterValueMap<uint64_t>::iterator entry =
+      caller_registers.find(".ra");
+    if (entry != caller_registers.end()) {
+      frame->context_validity |= StackFrameARM64::CONTEXT_VALID_PC;
+      frame->context.iregs[MD_CONTEXT_ARM64_REG_PC] = entry->second;
+    }
+  }
+  // If the CFI doesn't recover the SP explicitly, then use .cfa.
+  if (!(frame->context_validity & StackFrameARM64::CONTEXT_VALID_SP)) {
+    CFIFrameInfo::RegisterValueMap<uint64_t>::iterator entry =
+      caller_registers.find(".cfa");
+    if (entry != caller_registers.end()) {
+      frame->context_validity |= StackFrameARM64::CONTEXT_VALID_SP;
+      frame->context.iregs[MD_CONTEXT_ARM64_REG_SP] = entry->second;
+    }
+  }
+
+  // If we didn't recover the PC and the SP, then the frame isn't very useful.
+  static const uint64_t essentials = (StackFrameARM64::CONTEXT_VALID_SP
+                                     | StackFrameARM64::CONTEXT_VALID_PC);
+  if ((frame->context_validity & essentials) != essentials)
+    return NULL;
+
+  frame->trust = StackFrame::FRAME_TRUST_CFI;
+  return frame.release();
+}
+
+StackFrameARM64* StackwalkerARM64::GetCallerByStackScan(
+    const vector<StackFrame*> &frames) {
+  StackFrameARM64* last_frame = static_cast<StackFrameARM64*>(frames.back());
+  uint64_t last_sp = last_frame->context.iregs[MD_CONTEXT_ARM64_REG_SP];
+  uint64_t caller_sp, caller_pc;
+
+  if (!ScanForReturnAddress(last_sp, &caller_sp, &caller_pc,
+                            frames.size() == 1 /* is_context_frame */)) {
+    // No plausible return address was found.
+    return NULL;
+  }
+
+  // ScanForReturnAddress found a reasonable return address. Advance
+  // %sp to the location above the one where the return address was
+  // found.
+  caller_sp += 8;
+
+  // Create a new stack frame (ownership will be transferred to the caller)
+  // and fill it in.
+  StackFrameARM64* frame = new StackFrameARM64();
+
+  frame->trust = StackFrame::FRAME_TRUST_SCAN;
+  frame->context = last_frame->context;
+  frame->context.iregs[MD_CONTEXT_ARM64_REG_PC] = caller_pc;
+  frame->context.iregs[MD_CONTEXT_ARM64_REG_SP] = caller_sp;
+  frame->context_validity = StackFrameARM64::CONTEXT_VALID_PC |
+                            StackFrameARM64::CONTEXT_VALID_SP;
+
+  return frame;
+}
+
+StackFrameARM64* StackwalkerARM64::GetCallerByFramePointer(
+    const vector<StackFrame*> &frames) {
+  StackFrameARM64* last_frame = static_cast<StackFrameARM64*>(frames.back());
+
+  uint64_t last_fp = last_frame->context.iregs[MD_CONTEXT_ARM64_REG_FP];
+
+  uint64_t caller_fp = 0;
+  if (last_fp && !memory_->GetMemoryAtAddress(last_fp, &caller_fp)) {
+    BPLOG(ERROR) << "Unable to read caller_fp from last_fp: 0x"
+                 << std::hex << last_fp;
+    return NULL;
+  }
+
+  uint64_t caller_lr = 0;
+  if (last_fp && !memory_->GetMemoryAtAddress(last_fp + 8, &caller_lr)) {
+    BPLOG(ERROR) << "Unable to read caller_lr from last_fp + 8: 0x"
+                 << std::hex << (last_fp + 8);
+    return NULL;
+  }
+
+  uint64_t caller_sp = last_fp ? last_fp + 16 :
+      last_frame->context.iregs[MD_CONTEXT_ARM64_REG_SP];
+
+  // Create a new stack frame (ownership will be transferred to the caller)
+  // and fill it in.
+  StackFrameARM64* frame = new StackFrameARM64();
+
+  frame->trust = StackFrame::FRAME_TRUST_FP;
+  frame->context = last_frame->context;
+  frame->context.iregs[MD_CONTEXT_ARM64_REG_FP] = caller_fp;
+  frame->context.iregs[MD_CONTEXT_ARM64_REG_SP] = caller_sp;
+  frame->context.iregs[MD_CONTEXT_ARM64_REG_PC] =
+      last_frame->context.iregs[MD_CONTEXT_ARM64_REG_LR];
+  frame->context.iregs[MD_CONTEXT_ARM64_REG_LR] = caller_lr;
+  frame->context_validity = StackFrameARM64::CONTEXT_VALID_PC |
+                            StackFrameARM64::CONTEXT_VALID_LR |
+                            StackFrameARM64::CONTEXT_VALID_FP |
+                            StackFrameARM64::CONTEXT_VALID_SP;
+  return frame;
+}
+
+StackFrame* StackwalkerARM64::GetCallerFrame(const CallStack* stack,
+                                             bool stack_scan_allowed) {
+  if (!memory_ || !stack) {
+    BPLOG(ERROR) << "Can't get caller frame without memory or stack";
+    return NULL;
+  }
+
+  const vector<StackFrame*> &frames = *stack->frames();
+  StackFrameARM64* last_frame = static_cast<StackFrameARM64*>(frames.back());
+  scoped_ptr<StackFrameARM64> frame;
+
+  // See if there is DWARF call frame information covering this address.
+  scoped_ptr<CFIFrameInfo> cfi_frame_info(
+      frame_symbolizer_->FindCFIFrameInfo(last_frame));
+  if (cfi_frame_info.get())
+    frame.reset(GetCallerByCFIFrameInfo(frames, cfi_frame_info.get()));
+
+  // If CFI failed, or there wasn't CFI available, fall back to frame pointer.
+  if (!frame.get())
+    frame.reset(GetCallerByFramePointer(frames));
+
+  // If everything failed, fall back to stack scanning.
+  if (stack_scan_allowed && !frame.get())
+    frame.reset(GetCallerByStackScan(frames));
+
+  // If nothing worked, tell the caller.
+  if (!frame.get())
+    return NULL;
+
+  // An instruction address of zero marks the end of the stack.
+  if (frame->context.iregs[MD_CONTEXT_ARM64_REG_PC] == 0)
+    return NULL;
+
+  // If the new stack pointer is at a lower address than the old, then
+  // that's clearly incorrect. Treat this as end-of-stack to enforce
+  // progress and avoid infinite loops.
+  if (frame->context.iregs[MD_CONTEXT_ARM64_REG_SP]
+      < last_frame->context.iregs[MD_CONTEXT_ARM64_REG_SP])
+    return NULL;
+
+  // The new frame's context's PC is the return address, which is one
+  // instruction past the instruction that caused us to arrive at the callee.
+  // ARM64 instructions have a uniform 4-byte encoding, so subtracting 4 off
+  // the return address gets back to the beginning of the call instruction.
+  // Callers that require the exact return address value may access
+  // frame->context.iregs[MD_CONTEXT_ARM64_REG_PC].
+  frame->instruction = frame->context.iregs[MD_CONTEXT_ARM64_REG_PC] - 4;
+
+  return frame.release();
+}
+
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/processor/stackwalker_arm64.h b/google-breakpad/src/processor/stackwalker_arm64.h
new file mode 100644
index 0000000..121e824
--- /dev/null
+++ b/google-breakpad/src/processor/stackwalker_arm64.h
@@ -0,0 +1,104 @@
+// -*- mode: C++ -*-
+
+// Copyright (c) 2013 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// stackwalker_arm64.h: arm64-specific stackwalker.
+//
+// Provides stack frames given arm64 register context and a memory region
+// corresponding to an arm64 stack.
+//
+// Author: Mark Mentovai, Ted Mielczarek, Colin Blundell
+
+
+#ifndef PROCESSOR_STACKWALKER_ARM64_H__
+#define PROCESSOR_STACKWALKER_ARM64_H__
+
+#include "google_breakpad/common/breakpad_types.h"
+#include "google_breakpad/common/minidump_format.h"
+#include "google_breakpad/processor/stackwalker.h"
+
+namespace google_breakpad {
+
+class CodeModules;
+
+class StackwalkerARM64 : public Stackwalker {
+ public:
+  // context is an arm64 context object that gives access to arm64-specific
+  // register state corresponding to the innermost called frame to be
+  // included in the stack.  The other arguments are passed directly through
+  // to the base Stackwalker constructor.
+  StackwalkerARM64(const SystemInfo* system_info,
+                   const MDRawContextARM64* context,
+                   MemoryRegion* memory,
+                   const CodeModules* modules,
+                   StackFrameSymbolizer* frame_symbolizer);
+
+  // Change the context validity mask of the frame returned by
+  // GetContextFrame to VALID. This is only for use by unit tests; the
+  // default behavior is correct for all application code.
+  void SetContextFrameValidity(uint64_t valid) {
+    context_frame_validity_ = valid;
+  }
+
+ private:
+  // Implementation of Stackwalker, using arm64 context and stack conventions.
+  virtual StackFrame* GetContextFrame();
+  virtual StackFrame* GetCallerFrame(const CallStack* stack,
+                                     bool stack_scan_allowed);
+
+  // Use cfi_frame_info (derived from STACK CFI records) to construct
+  // the frame that called frames.back(). The caller takes ownership
+  // of the returned frame. Return NULL on failure.
+  StackFrameARM64* GetCallerByCFIFrameInfo(const vector<StackFrame*> &frames,
+                                           CFIFrameInfo* cfi_frame_info);
+
+  // Use the frame pointer. The caller takes ownership of the returned frame.
+  // Return NULL on failure.
+  StackFrameARM64* GetCallerByFramePointer(const vector<StackFrame*> &frames);
+
+  // Scan the stack for plausible return addresses. The caller takes ownership
+  // of the returned frame. Return NULL on failure.
+  StackFrameARM64* GetCallerByStackScan(const vector<StackFrame*> &frames);
+
+  // Stores the CPU context corresponding to the youngest stack frame, to
+  // be returned by GetContextFrame.
+  const MDRawContextARM64* context_;
+
+  // Validity mask for youngest stack frame. This is always
+  // CONTEXT_VALID_ALL in real use; it is only changeable for the sake of
+  // unit tests.
+  uint64_t context_frame_validity_;
+};
+
+
+}  // namespace google_breakpad
+
+
+#endif  // PROCESSOR_STACKWALKER_ARM64_H__
diff --git a/google-breakpad/src/processor/stackwalker_arm64_unittest.cc b/google-breakpad/src/processor/stackwalker_arm64_unittest.cc
new file mode 100644
index 0000000..dd617f6
--- /dev/null
+++ b/google-breakpad/src/processor/stackwalker_arm64_unittest.cc
@@ -0,0 +1,880 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// stackwalker_arm64_unittest.cc: Unit tests for StackwalkerARM64 class.
+
+#include <string.h>
+#include <string>
+#include <vector>
+
+#include "breakpad_googletest_includes.h"
+#include "common/test_assembler.h"
+#include "common/using_std_string.h"
+#include "google_breakpad/common/minidump_format.h"
+#include "google_breakpad/processor/basic_source_line_resolver.h"
+#include "google_breakpad/processor/call_stack.h"
+#include "google_breakpad/processor/code_module.h"
+#include "google_breakpad/processor/source_line_resolver_interface.h"
+#include "google_breakpad/processor/stack_frame_cpu.h"
+#include "processor/stackwalker_unittest_utils.h"
+#include "processor/stackwalker_arm64.h"
+#include "processor/windows_frame_info.h"
+
+using google_breakpad::BasicSourceLineResolver;
+using google_breakpad::CallStack;
+using google_breakpad::CodeModule;
+using google_breakpad::StackFrameSymbolizer;
+using google_breakpad::StackFrame;
+using google_breakpad::StackFrameARM64;
+using google_breakpad::Stackwalker;
+using google_breakpad::StackwalkerARM64;
+using google_breakpad::SystemInfo;
+using google_breakpad::WindowsFrameInfo;
+using google_breakpad::test_assembler::kLittleEndian;
+using google_breakpad::test_assembler::Label;
+using google_breakpad::test_assembler::Section;
+using std::vector;
+using testing::_;
+using testing::AnyNumber;
+using testing::Return;
+using testing::SetArgumentPointee;
+using testing::Test;
+
+class StackwalkerARM64Fixture {
+ public:
+  StackwalkerARM64Fixture()
+    : stack_section(kLittleEndian),
+      // Give the two modules reasonable standard locations and names
+      // for tests to play with.
+      module1(0x40000000, 0x10000, "module1", "version1"),
+      module2(0x50000000, 0x10000, "module2", "version2") {
+    // Identify the system as an iOS system.
+    system_info.os = "iOS";
+    system_info.os_short = "ios";
+    system_info.cpu = "arm64";
+    system_info.cpu_info = "";
+
+    // Put distinctive values in the raw CPU context.
+    BrandContext(&raw_context);
+
+    // Create some modules with some stock debugging information.
+    modules.Add(&module1);
+    modules.Add(&module2);
+
+    // By default, none of the modules have symbol info; call
+    // SetModuleSymbols to override this.
+    EXPECT_CALL(supplier, GetCStringSymbolData(_, _, _, _, _))
+      .WillRepeatedly(Return(MockSymbolSupplier::NOT_FOUND));
+
+    // Avoid GMOCK WARNING "Uninteresting mock function call - returning
+    // directly" for FreeSymbolData().
+    EXPECT_CALL(supplier, FreeSymbolData(_)).Times(AnyNumber());
+
+    // Reset max_frames_scanned since it's static.
+    Stackwalker::set_max_frames_scanned(1024);
+  }
+
+  // Set the Breakpad symbol information that supplier should return for
+  // MODULE to INFO.
+  void SetModuleSymbols(MockCodeModule *module, const string &info) {
+    size_t buffer_size;
+    char *buffer = supplier.CopySymbolDataAndOwnTheCopy(info, &buffer_size);
+    EXPECT_CALL(supplier, GetCStringSymbolData(module, &system_info, _, _, _))
+      .WillRepeatedly(DoAll(SetArgumentPointee<3>(buffer),
+                            SetArgumentPointee<4>(buffer_size),
+                            Return(MockSymbolSupplier::FOUND)));
+  }
+
+  // Populate stack_region with the contents of stack_section. Use
+  // stack_section.start() as the region's starting address.
+  void RegionFromSection() {
+    string contents;
+    ASSERT_TRUE(stack_section.GetContents(&contents));
+    stack_region.Init(stack_section.start().Value(), contents);
+  }
+
+  // Fill RAW_CONTEXT with pseudo-random data, for round-trip checking.
+  void BrandContext(MDRawContextARM64 *raw_context) {
+    uint8_t x = 173;
+    for (size_t i = 0; i < sizeof(*raw_context); i++)
+      reinterpret_cast<uint8_t *>(raw_context)[i] = (x += 17);
+  }
+
+  SystemInfo system_info;
+  MDRawContextARM64 raw_context;
+  Section stack_section;
+  MockMemoryRegion stack_region;
+  MockCodeModule module1;
+  MockCodeModule module2;
+  MockCodeModules modules;
+  MockSymbolSupplier supplier;
+  BasicSourceLineResolver resolver;
+  CallStack call_stack;
+  const vector<StackFrame *> *frames;
+};
+
+class SanityCheck: public StackwalkerARM64Fixture, public Test { };
+
+TEST_F(SanityCheck, NoResolver) {
+  // Since the context's frame pointer is garbage, the stack walk will end after
+  // the first frame.
+  StackFrameSymbolizer frame_symbolizer(NULL, NULL);
+  StackwalkerARM64 walker(&system_info, &raw_context, &stack_region, &modules,
+                          &frame_symbolizer);
+  // This should succeed even without a resolver or supplier.
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(0U, modules_without_symbols.size());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+  ASSERT_EQ(1U, frames->size());
+  StackFrameARM64 *frame = static_cast<StackFrameARM64 *>(frames->at(0));
+  // Check that the values from the original raw context made it
+  // through to the context in the stack frame.
+  EXPECT_EQ(0, memcmp(&raw_context, &frame->context, sizeof(raw_context)));
+}
+
+class GetContextFrame: public StackwalkerARM64Fixture, public Test { };
+
+// The stackwalker should be able to produce the context frame even
+// without stack memory present.
+TEST_F(GetContextFrame, NoStackMemory) {
+  StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+  StackwalkerARM64 walker(&system_info, &raw_context, NULL, &modules,
+                          &frame_symbolizer);
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(0U, modules_without_symbols.size());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+  ASSERT_EQ(1U, frames->size());
+  StackFrameARM64 *frame = static_cast<StackFrameARM64 *>(frames->at(0));
+  // Check that the values from the original raw context made it
+  // through to the context in the stack frame.
+  EXPECT_EQ(0, memcmp(&raw_context, &frame->context, sizeof(raw_context)));
+}
+
+class GetCallerFrame: public StackwalkerARM64Fixture, public Test { };
+
+TEST_F(GetCallerFrame, ScanWithoutSymbols) {
+  // When the stack walker resorts to scanning the stack,
+  // only addresses located within loaded modules are
+  // considered valid return addresses.
+  // Force scanning through three frames to ensure that the
+  // stack pointer is set properly in scan-recovered frames.
+  stack_section.start() = 0x80000000;
+  uint64_t return_address1 = 0x50000100;
+  uint64_t return_address2 = 0x50000900;
+  Label frame1_sp, frame2_sp;
+  stack_section
+    // frame 0
+    .Append(16, 0)                      // space
+
+    .D64(0x40090000)                    // junk that's not
+    .D64(0x60000000)                    // a return address
+
+    .D64(return_address1)               // actual return address
+    // frame 1
+    .Mark(&frame1_sp)
+    .Append(16, 0)                      // space
+
+    .D64(0xF0000000)                    // more junk
+    .D64(0x0000000D)
+
+    .D64(return_address2)               // actual return address
+    // frame 2
+    .Mark(&frame2_sp)
+    .Append(64, 0);                     // end of stack
+  RegionFromSection();
+
+  raw_context.iregs[MD_CONTEXT_ARM64_REG_PC] = 0x40005510;
+  raw_context.iregs[MD_CONTEXT_ARM64_REG_SP] = stack_section.start().Value();
+
+  StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+  StackwalkerARM64 walker(&system_info, &raw_context, &stack_region, &modules,
+                          &frame_symbolizer);
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(2U, modules_without_symbols.size());
+  ASSERT_EQ("module1", modules_without_symbols[0]->debug_file());
+  ASSERT_EQ("module2", modules_without_symbols[1]->debug_file());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+  ASSERT_EQ(3U, frames->size());
+
+  StackFrameARM64 *frame0 = static_cast<StackFrameARM64 *>(frames->at(0));
+  EXPECT_EQ(StackFrame::FRAME_TRUST_CONTEXT, frame0->trust);
+  ASSERT_EQ(StackFrameARM64::CONTEXT_VALID_ALL,
+            frame0->context_validity);
+  EXPECT_EQ(0, memcmp(&raw_context, &frame0->context, sizeof(raw_context)));
+
+  StackFrameARM64 *frame1 = static_cast<StackFrameARM64 *>(frames->at(1));
+  EXPECT_EQ(StackFrame::FRAME_TRUST_SCAN, frame1->trust);
+  ASSERT_EQ((StackFrameARM64::CONTEXT_VALID_PC |
+             StackFrameARM64::CONTEXT_VALID_SP),
+            frame1->context_validity);
+  EXPECT_EQ(return_address1, frame1->context.iregs[MD_CONTEXT_ARM64_REG_PC]);
+  EXPECT_EQ(frame1_sp.Value(), frame1->context.iregs[MD_CONTEXT_ARM64_REG_SP]);
+
+  StackFrameARM64 *frame2 = static_cast<StackFrameARM64 *>(frames->at(2));
+  EXPECT_EQ(StackFrame::FRAME_TRUST_SCAN, frame2->trust);
+  ASSERT_EQ((StackFrameARM64::CONTEXT_VALID_PC |
+             StackFrameARM64::CONTEXT_VALID_SP),
+            frame2->context_validity);
+  EXPECT_EQ(return_address2, frame2->context.iregs[MD_CONTEXT_ARM64_REG_PC]);
+  EXPECT_EQ(frame2_sp.Value(), frame2->context.iregs[MD_CONTEXT_ARM64_REG_SP]);
+}
+
+TEST_F(GetCallerFrame, ScanWithFunctionSymbols) {
+  // During stack scanning, if a potential return address
+  // is located within a loaded module that has symbols,
+  // it is only considered a valid return address if it
+  // lies within a function's bounds.
+  stack_section.start() = 0x80000000;
+  uint64_t return_address = 0x50000200;
+  Label frame1_sp;
+
+  stack_section
+    // frame 0
+    .Append(16, 0)                      // space
+
+    .D64(0x40090000)                    // junk that's not
+    .D64(0x60000000)                    // a return address
+
+    .D64(0x40001000)                    // a couple of plausible addresses
+    .D64(0x5000F000)                    // that are not within functions
+
+    .D64(return_address)                // actual return address
+    // frame 1
+    .Mark(&frame1_sp)
+    .Append(64, 0);                     // end of stack
+  RegionFromSection();
+
+  raw_context.iregs[MD_CONTEXT_ARM64_REG_PC] = 0x40000200;
+  raw_context.iregs[MD_CONTEXT_ARM64_REG_SP] = stack_section.start().Value();
+
+  SetModuleSymbols(&module1,
+                   // The youngest frame's function.
+                   "FUNC 100 400 10 monotreme\n");
+  SetModuleSymbols(&module2,
+                   // The calling frame's function.
+                   "FUNC 100 400 10 marsupial\n");
+
+  StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+  StackwalkerARM64 walker(&system_info, &raw_context, &stack_region, &modules,
+                          &frame_symbolizer);
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(0U, modules_without_symbols.size());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+  ASSERT_EQ(2U, frames->size());
+
+  StackFrameARM64 *frame0 = static_cast<StackFrameARM64 *>(frames->at(0));
+  EXPECT_EQ(StackFrame::FRAME_TRUST_CONTEXT, frame0->trust);
+  ASSERT_EQ(StackFrameARM64::CONTEXT_VALID_ALL,
+            frame0->context_validity);
+  EXPECT_EQ(0, memcmp(&raw_context, &frame0->context, sizeof(raw_context)));
+  EXPECT_EQ("monotreme", frame0->function_name);
+  EXPECT_EQ(0x40000100ULL, frame0->function_base);
+
+  StackFrameARM64 *frame1 = static_cast<StackFrameARM64 *>(frames->at(1));
+  EXPECT_EQ(StackFrame::FRAME_TRUST_SCAN, frame1->trust);
+  ASSERT_EQ((StackFrameARM64::CONTEXT_VALID_PC |
+             StackFrameARM64::CONTEXT_VALID_SP),
+            frame1->context_validity);
+  EXPECT_EQ(return_address, frame1->context.iregs[MD_CONTEXT_ARM64_REG_PC]);
+  EXPECT_EQ(frame1_sp.Value(), frame1->context.iregs[MD_CONTEXT_ARM64_REG_SP]);
+  EXPECT_EQ("marsupial", frame1->function_name);
+  EXPECT_EQ(0x50000100ULL, frame1->function_base);
+}
+
+TEST_F(GetCallerFrame, ScanFirstFrame) {
+  // If the stackwalker resorts to stack scanning, it will scan much
+  // farther to find the caller of the context frame.
+  stack_section.start() = 0x80000000;
+  uint64_t return_address1 = 0x50000100;
+  uint64_t return_address2 = 0x50000900;
+  Label frame1_sp, frame2_sp;
+  stack_section
+    // frame 0
+    .Append(32, 0)                      // space
+
+    .D64(0x40090000)                    // junk that's not
+    .D64(0x60000000)                    // a return address
+
+    .Append(96, 0)                      // more space
+
+    .D64(return_address1)               // actual return address
+    // frame 1
+    .Mark(&frame1_sp)
+    .Append(32, 0)                      // space
+
+    .D64(0xF0000000)                    // more junk
+    .D64(0x0000000D)
+
+    .Append(256, 0)                     // more space
+
+    .D64(return_address2)               // actual return address
+                                        // (won't be found)
+    // frame 2
+    .Mark(&frame2_sp)
+    .Append(64, 0);                     // end of stack
+  RegionFromSection();
+
+  raw_context.iregs[MD_CONTEXT_ARM64_REG_PC] = 0x40005510;
+  raw_context.iregs[MD_CONTEXT_ARM64_REG_SP] = stack_section.start().Value();
+
+  StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+  StackwalkerARM64 walker(&system_info, &raw_context, &stack_region, &modules,
+                          &frame_symbolizer);
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(2U, modules_without_symbols.size());
+  ASSERT_EQ("module1", modules_without_symbols[0]->debug_file());
+  ASSERT_EQ("module2", modules_without_symbols[1]->debug_file());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+  ASSERT_EQ(2U, frames->size());
+
+  StackFrameARM64 *frame0 = static_cast<StackFrameARM64 *>(frames->at(0));
+  EXPECT_EQ(StackFrame::FRAME_TRUST_CONTEXT, frame0->trust);
+  ASSERT_EQ(StackFrameARM64::CONTEXT_VALID_ALL,
+            frame0->context_validity);
+  EXPECT_EQ(0, memcmp(&raw_context, &frame0->context, sizeof(raw_context)));
+
+  StackFrameARM64 *frame1 = static_cast<StackFrameARM64 *>(frames->at(1));
+  EXPECT_EQ(StackFrame::FRAME_TRUST_SCAN, frame1->trust);
+  ASSERT_EQ((StackFrameARM64::CONTEXT_VALID_PC |
+             StackFrameARM64::CONTEXT_VALID_SP),
+            frame1->context_validity);
+  EXPECT_EQ(return_address1, frame1->context.iregs[MD_CONTEXT_ARM64_REG_PC]);
+  EXPECT_EQ(frame1_sp.Value(), frame1->context.iregs[MD_CONTEXT_ARM64_REG_SP]);
+}
+
+// Test that set_max_frames_scanned prevents using stack scanning
+// to find caller frames.
+TEST_F(GetCallerFrame, ScanningNotAllowed) {
+  // When the stack walker resorts to scanning the stack,
+  // only addresses located within loaded modules are
+  // considered valid return addresses.
+  stack_section.start() = 0x80000000;
+  uint64_t return_address1 = 0x50000100;
+  uint64_t return_address2 = 0x50000900;
+  Label frame1_sp, frame2_sp;
+  stack_section
+    // frame 0
+    .Append(16, 0)                      // space
+
+    .D64(0x40090000)                    // junk that's not
+    .D64(0x60000000)                    // a return address
+
+    .D64(return_address1)               // actual return address
+    // frame 1
+    .Mark(&frame1_sp)
+    .Append(16, 0)                      // space
+
+    .D64(0xF0000000)                    // more junk
+    .D64(0x0000000D)
+
+    .D64(return_address2)               // actual return address
+    // frame 2
+    .Mark(&frame2_sp)
+    .Append(64, 0);                     // end of stack
+  RegionFromSection();
+
+  raw_context.iregs[MD_CONTEXT_ARM64_REG_PC] = 0x40005510;
+  raw_context.iregs[MD_CONTEXT_ARM64_REG_SP] = stack_section.start().Value();
+
+  StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+  StackwalkerARM64 walker(&system_info, &raw_context, &stack_region, &modules,
+                          &frame_symbolizer);
+  Stackwalker::set_max_frames_scanned(0);
+
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(1U, modules_without_symbols.size());
+  ASSERT_EQ("module1", modules_without_symbols[0]->debug_file());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+  ASSERT_EQ(1U, frames->size());
+
+  StackFrameARM64 *frame0 = static_cast<StackFrameARM64 *>(frames->at(0));
+  EXPECT_EQ(StackFrame::FRAME_TRUST_CONTEXT, frame0->trust);
+  ASSERT_EQ(StackFrameARM64::CONTEXT_VALID_ALL,
+            frame0->context_validity);
+  EXPECT_EQ(0, memcmp(&raw_context, &frame0->context, sizeof(raw_context)));
+}
+
+class GetFramesByFramePointer: public StackwalkerARM64Fixture, public Test { };
+
+TEST_F(GetFramesByFramePointer, OnlyFramePointer) {
+  stack_section.start() = 0x80000000;
+  uint64_t return_address1 = 0x50000100;
+  uint64_t return_address2 = 0x50000900;
+  Label frame1_sp, frame2_sp;
+  Label frame1_fp, frame2_fp;
+  stack_section
+    // frame 0
+    .Append(64, 0)           // Whatever values on the stack.
+    .D64(0x0000000D)         // junk that's not
+    .D64(0xF0000000)         // a return address.
+
+    .Mark(&frame1_fp)        // Next fp will point to the next value.
+    .D64(frame2_fp)          // Save current frame pointer.
+    .D64(return_address2)    // Save current link register.
+    .Mark(&frame1_sp)
+
+    // frame 1
+    .Append(64, 0)           // Whatever values on the stack.
+    .D64(0x0000000D)         // junk that's not
+    .D64(0xF0000000)         // a return address.
+
+    .Mark(&frame2_fp)
+    .D64(0)
+    .D64(0)
+    .Mark(&frame2_sp)
+
+    // frame 2
+    .Append(64, 0)           // Whatever values on the stack.
+    .D64(0x0000000D)         // junk that's not
+    .D64(0xF0000000);        // a return address.
+  RegionFromSection();
+
+
+  raw_context.iregs[MD_CONTEXT_ARM64_REG_PC] = 0x40005510;
+  raw_context.iregs[MD_CONTEXT_ARM64_REG_LR] = return_address1;
+  raw_context.iregs[MD_CONTEXT_ARM64_REG_FP] = frame1_fp.Value();
+  raw_context.iregs[MD_CONTEXT_ARM64_REG_SP] = stack_section.start().Value();
+
+  StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+  StackwalkerARM64 walker(&system_info, &raw_context,
+                          &stack_region, &modules, &frame_symbolizer);
+
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(2U, modules_without_symbols.size());
+  ASSERT_EQ("module1", modules_without_symbols[0]->debug_file());
+  ASSERT_EQ("module2", modules_without_symbols[1]->debug_file());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+  ASSERT_EQ(3U, frames->size());
+
+  StackFrameARM64 *frame0 = static_cast<StackFrameARM64 *>(frames->at(0));
+  EXPECT_EQ(StackFrame::FRAME_TRUST_CONTEXT, frame0->trust);
+  ASSERT_EQ(StackFrameARM64::CONTEXT_VALID_ALL,
+            frame0->context_validity);
+  EXPECT_EQ(0, memcmp(&raw_context, &frame0->context, sizeof(raw_context)));
+
+  StackFrameARM64 *frame1 = static_cast<StackFrameARM64 *>(frames->at(1));
+  EXPECT_EQ(StackFrame::FRAME_TRUST_FP, frame1->trust);
+  ASSERT_EQ((StackFrameARM64::CONTEXT_VALID_PC |
+             StackFrameARM64::CONTEXT_VALID_LR |
+             StackFrameARM64::CONTEXT_VALID_FP |
+             StackFrameARM64::CONTEXT_VALID_SP),
+            frame1->context_validity);
+  EXPECT_EQ(return_address1, frame1->context.iregs[MD_CONTEXT_ARM64_REG_PC]);
+  EXPECT_EQ(return_address2, frame1->context.iregs[MD_CONTEXT_ARM64_REG_LR]);
+  EXPECT_EQ(frame1_sp.Value(), frame1->context.iregs[MD_CONTEXT_ARM64_REG_SP]);
+  EXPECT_EQ(frame2_fp.Value(),
+            frame1->context.iregs[MD_CONTEXT_ARM64_REG_FP]);
+
+  StackFrameARM64 *frame2 = static_cast<StackFrameARM64 *>(frames->at(2));
+  EXPECT_EQ(StackFrame::FRAME_TRUST_FP, frame2->trust);
+  ASSERT_EQ((StackFrameARM64::CONTEXT_VALID_PC |
+             StackFrameARM64::CONTEXT_VALID_LR |
+             StackFrameARM64::CONTEXT_VALID_FP |
+             StackFrameARM64::CONTEXT_VALID_SP),
+            frame2->context_validity);
+  EXPECT_EQ(return_address2, frame2->context.iregs[MD_CONTEXT_ARM64_REG_PC]);
+  EXPECT_EQ(0U, frame2->context.iregs[MD_CONTEXT_ARM64_REG_LR]);
+  EXPECT_EQ(frame2_sp.Value(), frame2->context.iregs[MD_CONTEXT_ARM64_REG_SP]);
+  EXPECT_EQ(0U, frame2->context.iregs[MD_CONTEXT_ARM64_REG_FP]);
+}
+
+struct CFIFixture: public StackwalkerARM64Fixture {
+  CFIFixture() {
+    // Provide a bunch of STACK CFI records; we'll walk to the caller
+    // from every point in this series, expecting to find the same set
+    // of register values.
+    SetModuleSymbols(&module1,
+                     // The youngest frame's function.
+                     "FUNC 4000 1000 10 enchiridion\n"
+                     // Initially, nothing has been pushed on the stack,
+                     // and the return address is still in the link
+                     // register (x30).
+                     "STACK CFI INIT 4000 100 .cfa: sp 0 + .ra: x30\n"
+                     // Push x19, x20, the frame pointer and the link register.
+                     "STACK CFI 4001 .cfa: sp 32 + .ra: .cfa -8 + ^"
+                     " x19: .cfa -32 + ^ x20: .cfa -24 + ^ "
+                     " x29: .cfa -16 + ^\n"
+                     // Save x19..x22 in x0..x3: verify that we populate
+                     // the youngest frame with all the values we have.
+                     "STACK CFI 4002 x19: x0 x20: x1 x21: x2 x22: x3\n"
+                     // Restore x19..x22. Save the non-callee-saves register x1.
+                     "STACK CFI 4003 .cfa: sp 40 + x1: .cfa 40 - ^"
+                     " x19: x19 x20: x20 x21: x21 x22: x22\n"
+                     // Move the .cfa back eight bytes, to point at the return
+                     // address, and restore the sp explicitly.
+                     "STACK CFI 4005 .cfa: sp 32 + x1: .cfa 32 - ^"
+                     " x29: .cfa 8 - ^ .ra: .cfa ^ sp: .cfa 8 +\n"
+                     // Recover the PC explicitly from a new stack slot;
+                     // provide garbage for the .ra.
+                     "STACK CFI 4006 .cfa: sp 40 + pc: .cfa 40 - ^\n"
+
+                     // The calling function.
+                     "FUNC 5000 1000 10 epictetus\n"
+                     // Mark it as end of stack.
+                     "STACK CFI INIT 5000 1000 .cfa: 0 .ra: 0\n"
+
+                     // A function whose CFI makes the stack pointer
+                     // go backwards.
+                     "FUNC 6000 1000 20 palinal\n"
+                     "STACK CFI INIT 6000 1000 .cfa: sp 8 - .ra: x30\n"
+
+                     // A function with CFI expressions that can't be
+                     // evaluated.
+                     "FUNC 7000 1000 20 rhetorical\n"
+                     "STACK CFI INIT 7000 1000 .cfa: moot .ra: ambiguous\n");
+
+    // Provide some distinctive values for the caller's registers.
+    expected.iregs[MD_CONTEXT_ARM64_REG_PC] = 0x0000000040005510L;
+    expected.iregs[MD_CONTEXT_ARM64_REG_SP] = 0x0000000080000000L;
+    expected.iregs[19] = 0x5e68b5d5b5d55e68L;
+    expected.iregs[20] = 0x34f3ebd1ebd134f3L;
+    expected.iregs[21] = 0x74bca31ea31e74bcL;
+    expected.iregs[22] = 0x16b32dcb2dcb16b3L;
+    expected.iregs[23] = 0x21372ada2ada2137L;
+    expected.iregs[24] = 0x557dbbbbbbbb557dL;
+    expected.iregs[25] = 0x8ca748bf48bf8ca7L;
+    expected.iregs[26] = 0x21f0ab46ab4621f0L;
+    expected.iregs[27] = 0x146732b732b71467L;
+    expected.iregs[28] = 0xa673645fa673645fL;
+    expected.iregs[MD_CONTEXT_ARM64_REG_FP] = 0xe11081128112e110L;
+
+    // Expect CFI to recover all callee-saves registers. Since CFI is the
+    // only stack frame construction technique we have, aside from the
+    // context frame itself, there's no way for us to have a set of valid
+    // registers smaller than this.
+    expected_validity = (StackFrameARM64::CONTEXT_VALID_PC  |
+                         StackFrameARM64::CONTEXT_VALID_SP  |
+                         StackFrameARM64::CONTEXT_VALID_X19 |
+                         StackFrameARM64::CONTEXT_VALID_X20 |
+                         StackFrameARM64::CONTEXT_VALID_X21 |
+                         StackFrameARM64::CONTEXT_VALID_X22 |
+                         StackFrameARM64::CONTEXT_VALID_X23 |
+                         StackFrameARM64::CONTEXT_VALID_X24 |
+                         StackFrameARM64::CONTEXT_VALID_X25 |
+                         StackFrameARM64::CONTEXT_VALID_X26 |
+                         StackFrameARM64::CONTEXT_VALID_X27 |
+                         StackFrameARM64::CONTEXT_VALID_X28 |
+                         StackFrameARM64::CONTEXT_VALID_FP);
+
+    // By default, context frames provide all registers, as normal.
+    context_frame_validity = StackFrameARM64::CONTEXT_VALID_ALL;
+
+    // By default, registers are unchanged.
+    raw_context = expected;
+  }
+
+  // Walk the stack, using stack_section as the contents of the stack
+  // and raw_context as the current register values. (Set the stack
+  // pointer to the stack's starting address.) Expect two stack
+  // frames; in the older frame, expect the callee-saves registers to
+  // have values matching those in 'expected'.
+  void CheckWalk() {
+    RegionFromSection();
+    raw_context.iregs[MD_CONTEXT_ARM64_REG_SP] = stack_section.start().Value();
+
+    StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+    StackwalkerARM64 walker(&system_info, &raw_context, &stack_region,
+                            &modules, &frame_symbolizer);
+    walker.SetContextFrameValidity(context_frame_validity);
+    vector<const CodeModule*> modules_without_symbols;
+    vector<const CodeModule*> modules_with_corrupt_symbols;
+    ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                            &modules_with_corrupt_symbols));
+    ASSERT_EQ(0U, modules_without_symbols.size());
+    ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+    frames = call_stack.frames();
+    ASSERT_EQ(2U, frames->size());
+
+    StackFrameARM64 *frame0 = static_cast<StackFrameARM64 *>(frames->at(0));
+    EXPECT_EQ(StackFrame::FRAME_TRUST_CONTEXT, frame0->trust);
+    ASSERT_EQ(context_frame_validity, frame0->context_validity);
+    EXPECT_EQ("enchiridion", frame0->function_name);
+    EXPECT_EQ(0x0000000040004000UL, frame0->function_base);
+
+    StackFrameARM64 *frame1 = static_cast<StackFrameARM64 *>(frames->at(1));
+    EXPECT_EQ(StackFrame::FRAME_TRUST_CFI, frame1->trust);
+    ASSERT_EQ(expected_validity, frame1->context_validity);
+    if (expected_validity & StackFrameARM64::CONTEXT_VALID_X1)
+      EXPECT_EQ(expected.iregs[1], frame1->context.iregs[1]);
+    if (expected_validity & StackFrameARM64::CONTEXT_VALID_X19)
+      EXPECT_EQ(expected.iregs[19], frame1->context.iregs[19]);
+    if (expected_validity & StackFrameARM64::CONTEXT_VALID_X20)
+      EXPECT_EQ(expected.iregs[20], frame1->context.iregs[20]);
+    if (expected_validity & StackFrameARM64::CONTEXT_VALID_X21)
+      EXPECT_EQ(expected.iregs[21], frame1->context.iregs[21]);
+    if (expected_validity & StackFrameARM64::CONTEXT_VALID_X22)
+      EXPECT_EQ(expected.iregs[22], frame1->context.iregs[22]);
+    if (expected_validity & StackFrameARM64::CONTEXT_VALID_X23)
+      EXPECT_EQ(expected.iregs[23], frame1->context.iregs[23]);
+    if (expected_validity & StackFrameARM64::CONTEXT_VALID_X24)
+      EXPECT_EQ(expected.iregs[24], frame1->context.iregs[24]);
+    if (expected_validity & StackFrameARM64::CONTEXT_VALID_X25)
+      EXPECT_EQ(expected.iregs[25], frame1->context.iregs[25]);
+    if (expected_validity & StackFrameARM64::CONTEXT_VALID_X26)
+      EXPECT_EQ(expected.iregs[26], frame1->context.iregs[26]);
+    if (expected_validity & StackFrameARM64::CONTEXT_VALID_X27)
+      EXPECT_EQ(expected.iregs[27], frame1->context.iregs[27]);
+    if (expected_validity & StackFrameARM64::CONTEXT_VALID_X28)
+      EXPECT_EQ(expected.iregs[28], frame1->context.iregs[28]);
+    if (expected_validity & StackFrameARM64::CONTEXT_VALID_FP)
+      EXPECT_EQ(expected.iregs[MD_CONTEXT_ARM64_REG_FP],
+                frame1->context.iregs[MD_CONTEXT_ARM64_REG_FP]);
+
+    // We would never have gotten a frame in the first place if the SP
+    // and PC weren't valid or ->instruction weren't set.
+    EXPECT_EQ(expected.iregs[MD_CONTEXT_ARM64_REG_SP],
+              frame1->context.iregs[MD_CONTEXT_ARM64_REG_SP]);
+    EXPECT_EQ(expected.iregs[MD_CONTEXT_ARM64_REG_PC],
+              frame1->context.iregs[MD_CONTEXT_ARM64_REG_PC]);
+    EXPECT_EQ(expected.iregs[MD_CONTEXT_ARM64_REG_PC],
+              frame1->instruction + 4);
+    EXPECT_EQ("epictetus", frame1->function_name);
+  }
+
+  // The values we expect to find for the caller's registers.
+  MDRawContextARM64 expected;
+
+  // The validity mask for expected.
+  uint64_t expected_validity;
+
+  // The validity mask to impose on the context frame.
+  uint64_t context_frame_validity;
+};
+
+class CFI: public CFIFixture, public Test { };
+
+TEST_F(CFI, At4000) {
+  stack_section.start() = expected.iregs[MD_CONTEXT_ARM64_REG_SP];
+  raw_context.iregs[MD_CONTEXT_ARM64_REG_PC] = 0x0000000040004000L;
+  raw_context.iregs[MD_CONTEXT_ARM64_REG_LR] = 0x0000000040005510L;
+  CheckWalk();
+}
+
+TEST_F(CFI, At4001) {
+  Label frame1_sp = expected.iregs[MD_CONTEXT_ARM64_REG_SP];
+  stack_section
+    .D64(0x5e68b5d5b5d55e68L)   // saved x19
+    .D64(0x34f3ebd1ebd134f3L)   // saved x20
+    .D64(0xe11081128112e110L)   // saved fp
+    .D64(0x0000000040005510L)   // return address
+    .Mark(&frame1_sp);          // This effectively sets stack_section.start().
+  raw_context.iregs[MD_CONTEXT_ARM64_REG_PC] = 0x0000000040004001L;
+  // distinct callee x19, x20 and fp
+  raw_context.iregs[19] = 0xadc9f635a635adc9L;
+  raw_context.iregs[20] = 0x623135ac35ac6231L;
+  raw_context.iregs[MD_CONTEXT_ARM64_REG_FP] = 0x5fc4be14be145fc4L;
+  CheckWalk();
+}
+
+// As above, but unwind from a context that has only the PC and SP.
+TEST_F(CFI, At4001LimitedValidity) {
+  Label frame1_sp = expected.iregs[MD_CONTEXT_ARM64_REG_SP];
+  stack_section
+    .D64(0x5e68b5d5b5d55e68L)   // saved x19
+    .D64(0x34f3ebd1ebd134f3L)   // saved x20
+    .D64(0xe11081128112e110L)   // saved fp
+    .D64(0x0000000040005510L)   // return address
+    .Mark(&frame1_sp);          // This effectively sets stack_section.start().
+  context_frame_validity =
+    StackFrameARM64::CONTEXT_VALID_PC | StackFrameARM64::CONTEXT_VALID_SP;
+  raw_context.iregs[MD_CONTEXT_ARM64_REG_PC] = 0x0000000040004001L;
+  raw_context.iregs[MD_CONTEXT_ARM64_REG_FP] = 0x5fc4be14be145fc4L;
+
+  expected_validity = (StackFrameARM64::CONTEXT_VALID_PC
+                       | StackFrameARM64::CONTEXT_VALID_SP
+                       | StackFrameARM64::CONTEXT_VALID_FP
+                       | StackFrameARM64::CONTEXT_VALID_X19
+                       | StackFrameARM64::CONTEXT_VALID_X20);
+  CheckWalk();
+}
+
+TEST_F(CFI, At4002) {
+  Label frame1_sp = expected.iregs[MD_CONTEXT_ARM64_REG_SP];
+  stack_section
+    .D64(0xff3dfb81fb81ff3dL)   // no longer saved x19
+    .D64(0x34f3ebd1ebd134f3L)   // no longer saved x20
+    .D64(0xe11081128112e110L)   // saved fp
+    .D64(0x0000000040005510L)   // return address
+    .Mark(&frame1_sp);          // This effectively sets stack_section.start().
+  raw_context.iregs[MD_CONTEXT_ARM64_REG_PC] = 0x0000000040004002L;
+  raw_context.iregs[0]  = 0x5e68b5d5b5d55e68L;  // saved x19
+  raw_context.iregs[1]  = 0x34f3ebd1ebd134f3L;  // saved x20
+  raw_context.iregs[2]  = 0x74bca31ea31e74bcL;  // saved x21
+  raw_context.iregs[3]  = 0x16b32dcb2dcb16b3L;  // saved x22
+  raw_context.iregs[19] = 0xadc9f635a635adc9L;  // distinct callee x19
+  raw_context.iregs[20] = 0x623135ac35ac6231L;  // distinct callee x20
+  raw_context.iregs[21] = 0xac4543564356ac45L;  // distinct callee x21
+  raw_context.iregs[22] = 0x2561562f562f2561L;  // distinct callee x22
+  // distinct callee fp
+  raw_context.iregs[MD_CONTEXT_ARM64_REG_FP] = 0x5fc4be14be145fc4L;
+  CheckWalk();
+}
+
+TEST_F(CFI, At4003) {
+  Label frame1_sp = expected.iregs[MD_CONTEXT_ARM64_REG_SP];
+  stack_section
+    .D64(0xdd5a48c848c8dd5aL)   // saved x1 (even though it's not callee-saves)
+    .D64(0xff3dfb81fb81ff3dL)   // no longer saved x19
+    .D64(0x34f3ebd1ebd134f3L)   // no longer saved x20
+    .D64(0xe11081128112e110L)   // saved fp
+    .D64(0x0000000040005510L)   // return address
+    .Mark(&frame1_sp);          // This effectively sets stack_section.start().
+  raw_context.iregs[MD_CONTEXT_ARM64_REG_PC] = 0x0000000040004003L;
+  // distinct callee x1 and fp
+  raw_context.iregs[1] = 0xfb756319fb756319L;
+  raw_context.iregs[MD_CONTEXT_ARM64_REG_FP] = 0x5fc4be14be145fc4L;
+  // caller's x1
+  expected.iregs[1] = 0xdd5a48c848c8dd5aL;
+  expected_validity |= StackFrameARM64::CONTEXT_VALID_X1;
+  CheckWalk();
+}
+
+// We have no new rule at module offset 0x4004, so the results here should
+// be the same as those at module offset 0x4003.
+TEST_F(CFI, At4004) {
+  Label frame1_sp = expected.iregs[MD_CONTEXT_ARM64_REG_SP];
+  stack_section
+    .D64(0xdd5a48c848c8dd5aL)   // saved x1 (even though it's not callee-saves)
+    .D64(0xff3dfb81fb81ff3dL)   // no longer saved x19
+    .D64(0x34f3ebd1ebd134f3L)   // no longer saved x20
+    .D64(0xe11081128112e110L)   // saved fp
+    .D64(0x0000000040005510L)   // return address
+    .Mark(&frame1_sp);          // This effectively sets stack_section.start().
+  raw_context.iregs[MD_CONTEXT_ARM64_REG_PC] = 0x0000000040004004L;
+  // distinct callee x1 and fp
+  raw_context.iregs[1] = 0xfb756319fb756319L;
+  raw_context.iregs[MD_CONTEXT_ARM64_REG_FP] = 0x5fc4be14be145fc4L;
+  // caller's x1
+  expected.iregs[1] = 0xdd5a48c848c8dd5aL;
+  expected_validity |= StackFrameARM64::CONTEXT_VALID_X1;
+  CheckWalk();
+}
+
+// Here we move the .cfa, but provide an explicit rule to recover the SP,
+// so again there should be no change in the registers recovered.
+TEST_F(CFI, At4005) {
+  Label frame1_sp = expected.iregs[MD_CONTEXT_ARM64_REG_SP];
+  stack_section
+    .D64(0xdd5a48c848c8dd5aL)   // saved x1 (even though it's not callee-saves)
+    .D64(0xff3dfb81fb81ff3dL)   // no longer saved x19
+    .D64(0x34f3ebd1ebd134f3L)   // no longer saved x20
+    .D64(0xe11081128112e110L)   // saved fp
+    .D64(0x0000000040005510L)   // return address
+    .Mark(&frame1_sp);          // This effectively sets stack_section.start().
+  raw_context.iregs[MD_CONTEXT_ARM64_REG_PC] = 0x0000000040004005L;
+  raw_context.iregs[1] = 0xfb756319fb756319L;  // distinct callee x1
+  expected.iregs[1] = 0xdd5a48c848c8dd5aL;     // caller's x1
+  expected_validity |= StackFrameARM64::CONTEXT_VALID_X1;
+  CheckWalk();
+}
+
+// Here we provide an explicit rule for the PC, and have the saved .ra be
+// bogus.
+TEST_F(CFI, At4006) {
+  Label frame1_sp = expected.iregs[MD_CONTEXT_ARM64_REG_SP];
+  stack_section
+    .D64(0x0000000040005510L)   // saved pc
+    .D64(0xdd5a48c848c8dd5aL)   // saved x1 (even though it's not callee-saves)
+    .D64(0xff3dfb81fb81ff3dL)   // no longer saved x19
+    .D64(0x34f3ebd1ebd134f3L)   // no longer saved x20
+    .D64(0xe11081128112e110L)   // saved fp
+    .D64(0xf8d157835783f8d1L)   // .ra rule recovers this, which is garbage
+    .Mark(&frame1_sp);          // This effectively sets stack_section.start().
+  raw_context.iregs[MD_CONTEXT_ARM64_REG_PC] = 0x0000000040004006L;
+  raw_context.iregs[1] = 0xfb756319fb756319L;  // distinct callee x1
+  expected.iregs[1] = 0xdd5a48c848c8dd5aL;     // caller's x1
+  expected_validity |= StackFrameARM64::CONTEXT_VALID_X1;
+  CheckWalk();
+}
+
+// Check that we reject rules that would cause the stack pointer to
+// move in the wrong direction.
+TEST_F(CFI, RejectBackwards) {
+  raw_context.iregs[MD_CONTEXT_ARM64_REG_PC] = 0x0000000040006000L;
+  raw_context.iregs[MD_CONTEXT_ARM64_REG_SP] = 0x0000000080000000L;
+  raw_context.iregs[MD_CONTEXT_ARM64_REG_LR] = 0x0000000040005510L;
+  StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+  StackwalkerARM64 walker(&system_info, &raw_context, &stack_region, &modules,
+                          &frame_symbolizer);
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(0U, modules_without_symbols.size());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+  ASSERT_EQ(1U, frames->size());
+}
+
+// Check that we reject rules whose expressions' evaluation fails.
+TEST_F(CFI, RejectBadExpressions) {
+  raw_context.iregs[MD_CONTEXT_ARM64_REG_PC] = 0x0000000040007000L;
+  raw_context.iregs[MD_CONTEXT_ARM64_REG_SP] = 0x0000000080000000L;
+  StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+  StackwalkerARM64 walker(&system_info, &raw_context, &stack_region, &modules,
+                          &frame_symbolizer);
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(0U, modules_without_symbols.size());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+  ASSERT_EQ(1U, frames->size());
+}
diff --git a/google-breakpad/src/processor/stackwalker_arm_unittest.cc b/google-breakpad/src/processor/stackwalker_arm_unittest.cc
new file mode 100644
index 0000000..c73322e
--- /dev/null
+++ b/google-breakpad/src/processor/stackwalker_arm_unittest.cc
@@ -0,0 +1,974 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// stackwalker_arm_unittest.cc: Unit tests for StackwalkerARM class.
+
+#include <string.h>
+#include <string>
+#include <vector>
+
+#include "breakpad_googletest_includes.h"
+#include "common/test_assembler.h"
+#include "common/using_std_string.h"
+#include "google_breakpad/common/minidump_format.h"
+#include "google_breakpad/processor/basic_source_line_resolver.h"
+#include "google_breakpad/processor/call_stack.h"
+#include "google_breakpad/processor/code_module.h"
+#include "google_breakpad/processor/source_line_resolver_interface.h"
+#include "google_breakpad/processor/stack_frame_cpu.h"
+#include "processor/stackwalker_unittest_utils.h"
+#include "processor/stackwalker_arm.h"
+#include "processor/windows_frame_info.h"
+
+using google_breakpad::BasicSourceLineResolver;
+using google_breakpad::CallStack;
+using google_breakpad::CodeModule;
+using google_breakpad::StackFrameSymbolizer;
+using google_breakpad::StackFrame;
+using google_breakpad::StackFrameARM;
+using google_breakpad::Stackwalker;
+using google_breakpad::StackwalkerARM;
+using google_breakpad::SystemInfo;
+using google_breakpad::WindowsFrameInfo;
+using google_breakpad::test_assembler::kLittleEndian;
+using google_breakpad::test_assembler::Label;
+using google_breakpad::test_assembler::Section;
+using std::vector;
+using testing::_;
+using testing::AnyNumber;
+using testing::Return;
+using testing::SetArgumentPointee;
+using testing::Test;
+
+class StackwalkerARMFixture {
+ public:
+  StackwalkerARMFixture()
+    : stack_section(kLittleEndian),
+      // Give the two modules reasonable standard locations and names
+      // for tests to play with.
+      module1(0x40000000, 0x10000, "module1", "version1"),
+      module2(0x50000000, 0x10000, "module2", "version2") {
+    // Identify the system as a Linux system.
+    system_info.os = "Linux";
+    system_info.os_short = "linux";
+    system_info.os_version = "Lugubrious Labrador";
+    system_info.cpu = "arm";
+    system_info.cpu_info = "";
+
+    // Put distinctive values in the raw CPU context.
+    BrandContext(&raw_context);
+
+    // Create some modules with some stock debugging information.
+    modules.Add(&module1);
+    modules.Add(&module2);
+
+    // By default, none of the modules have symbol info; call
+    // SetModuleSymbols to override this.
+    EXPECT_CALL(supplier, GetCStringSymbolData(_, _, _, _, _))
+      .WillRepeatedly(Return(MockSymbolSupplier::NOT_FOUND));
+
+    // Avoid GMOCK WARNING "Uninteresting mock function call - returning
+    // directly" for FreeSymbolData().
+    EXPECT_CALL(supplier, FreeSymbolData(_)).Times(AnyNumber());
+
+    // Reset max_frames_scanned since it's static.
+    Stackwalker::set_max_frames_scanned(1024);
+  }
+
+  // Set the Breakpad symbol information that supplier should return for
+  // MODULE to INFO.
+  void SetModuleSymbols(MockCodeModule *module, const string &info) {
+    size_t buffer_size;
+    char *buffer = supplier.CopySymbolDataAndOwnTheCopy(info, &buffer_size);
+    EXPECT_CALL(supplier, GetCStringSymbolData(module, &system_info, _, _, _))
+      .WillRepeatedly(DoAll(SetArgumentPointee<3>(buffer),
+                            SetArgumentPointee<4>(buffer_size),
+                            Return(MockSymbolSupplier::FOUND)));
+  }
+
+  // Populate stack_region with the contents of stack_section. Use
+  // stack_section.start() as the region's starting address.
+  void RegionFromSection() {
+    string contents;
+    ASSERT_TRUE(stack_section.GetContents(&contents));
+    stack_region.Init(stack_section.start().Value(), contents);
+  }
+
+  // Fill RAW_CONTEXT with pseudo-random data, for round-trip checking.
+  void BrandContext(MDRawContextARM *raw_context) {
+    uint8_t x = 173;
+    for (size_t i = 0; i < sizeof(*raw_context); i++)
+      reinterpret_cast<uint8_t *>(raw_context)[i] = (x += 17);
+  }
+
+  SystemInfo system_info;
+  MDRawContextARM raw_context;
+  Section stack_section;
+  MockMemoryRegion stack_region;
+  MockCodeModule module1;
+  MockCodeModule module2;
+  MockCodeModules modules;
+  MockSymbolSupplier supplier;
+  BasicSourceLineResolver resolver;
+  CallStack call_stack;
+  const vector<StackFrame *> *frames;
+};
+
+class SanityCheck: public StackwalkerARMFixture, public Test { };
+
+TEST_F(SanityCheck, NoResolver) {
+  // Since we have no call frame information, and all unwinding
+  // requires call frame information, the stack walk will end after
+  // the first frame.
+  StackFrameSymbolizer frame_symbolizer(NULL, NULL);
+  StackwalkerARM walker(&system_info, &raw_context, -1, &stack_region, &modules,
+                        &frame_symbolizer);
+  // This should succeed even without a resolver or supplier.
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(0U, modules_without_symbols.size());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+  ASSERT_EQ(1U, frames->size());
+  StackFrameARM *frame = static_cast<StackFrameARM *>(frames->at(0));
+  // Check that the values from the original raw context made it
+  // through to the context in the stack frame.
+  EXPECT_EQ(0, memcmp(&raw_context, &frame->context, sizeof(raw_context)));
+}
+
+class GetContextFrame: public StackwalkerARMFixture, public Test { };
+
+TEST_F(GetContextFrame, Simple) {
+  // Since we have no call frame information, and all unwinding
+  // requires call frame information, the stack walk will end after
+  // the first frame.
+  StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+  StackwalkerARM walker(&system_info, &raw_context, -1, &stack_region, &modules,
+                        &frame_symbolizer);
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(0U, modules_without_symbols.size());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+  ASSERT_EQ(1U, frames->size());
+  StackFrameARM *frame = static_cast<StackFrameARM *>(frames->at(0));
+  // Check that the values from the original raw context made it
+  // through to the context in the stack frame.
+  EXPECT_EQ(0, memcmp(&raw_context, &frame->context, sizeof(raw_context)));
+}
+
+// The stackwalker should be able to produce the context frame even
+// without stack memory present.
+TEST_F(GetContextFrame, NoStackMemory) {
+  StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+  StackwalkerARM walker(&system_info, &raw_context, -1, NULL, &modules,
+                        &frame_symbolizer);
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(0U, modules_without_symbols.size());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+  ASSERT_EQ(1U, frames->size());
+  StackFrameARM *frame = static_cast<StackFrameARM *>(frames->at(0));
+  // Check that the values from the original raw context made it
+  // through to the context in the stack frame.
+  EXPECT_EQ(0, memcmp(&raw_context, &frame->context, sizeof(raw_context)));
+}
+
+class GetCallerFrame: public StackwalkerARMFixture, public Test { };
+
+TEST_F(GetCallerFrame, ScanWithoutSymbols) {
+  // When the stack walker resorts to scanning the stack,
+  // only addresses located within loaded modules are
+  // considered valid return addresses.
+  // Force scanning through three frames to ensure that the
+  // stack pointer is set properly in scan-recovered frames.
+  stack_section.start() = 0x80000000;
+  uint32_t return_address1 = 0x50000100;
+  uint32_t return_address2 = 0x50000900;
+  Label frame1_sp, frame2_sp;
+  stack_section
+    // frame 0
+    .Append(16, 0)                      // space
+
+    .D32(0x40090000)                    // junk that's not
+    .D32(0x60000000)                    // a return address
+
+    .D32(return_address1)               // actual return address
+    // frame 1
+    .Mark(&frame1_sp)
+    .Append(16, 0)                      // space
+
+    .D32(0xF0000000)                    // more junk
+    .D32(0x0000000D)
+
+    .D32(return_address2)               // actual return address
+    // frame 2
+    .Mark(&frame2_sp)
+    .Append(32, 0);                     // end of stack
+  RegionFromSection();
+
+  raw_context.iregs[MD_CONTEXT_ARM_REG_PC] = 0x40005510;
+  raw_context.iregs[MD_CONTEXT_ARM_REG_SP] = stack_section.start().Value();
+
+  StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+  StackwalkerARM walker(&system_info, &raw_context, -1, &stack_region, &modules,
+                        &frame_symbolizer);
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(2U, modules_without_symbols.size());
+  ASSERT_EQ("module1", modules_without_symbols[0]->debug_file());
+  ASSERT_EQ("module2", modules_without_symbols[1]->debug_file());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+  ASSERT_EQ(3U, frames->size());
+
+  StackFrameARM *frame0 = static_cast<StackFrameARM *>(frames->at(0));
+  EXPECT_EQ(StackFrame::FRAME_TRUST_CONTEXT, frame0->trust);
+  ASSERT_EQ(StackFrameARM::CONTEXT_VALID_ALL, frame0->context_validity);
+  EXPECT_EQ(0, memcmp(&raw_context, &frame0->context, sizeof(raw_context)));
+
+  StackFrameARM *frame1 = static_cast<StackFrameARM *>(frames->at(1));
+  EXPECT_EQ(StackFrame::FRAME_TRUST_SCAN, frame1->trust);
+  ASSERT_EQ((StackFrameARM::CONTEXT_VALID_PC |
+             StackFrameARM::CONTEXT_VALID_SP),
+            frame1->context_validity);
+  EXPECT_EQ(return_address1, frame1->context.iregs[MD_CONTEXT_ARM_REG_PC]);
+  EXPECT_EQ(frame1_sp.Value(), frame1->context.iregs[MD_CONTEXT_ARM_REG_SP]);
+
+  StackFrameARM *frame2 = static_cast<StackFrameARM *>(frames->at(2));
+  EXPECT_EQ(StackFrame::FRAME_TRUST_SCAN, frame2->trust);
+  ASSERT_EQ((StackFrameARM::CONTEXT_VALID_PC |
+             StackFrameARM::CONTEXT_VALID_SP),
+            frame2->context_validity);
+  EXPECT_EQ(return_address2, frame2->context.iregs[MD_CONTEXT_ARM_REG_PC]);
+  EXPECT_EQ(frame2_sp.Value(), frame2->context.iregs[MD_CONTEXT_ARM_REG_SP]);
+}
+
+TEST_F(GetCallerFrame, ScanWithFunctionSymbols) {
+  // During stack scanning, if a potential return address
+  // is located within a loaded module that has symbols,
+  // it is only considered a valid return address if it
+  // lies within a function's bounds.
+  stack_section.start() = 0x80000000;
+  uint32_t return_address = 0x50000200;
+  Label frame1_sp;
+
+  stack_section
+    // frame 0
+    .Append(16, 0)                      // space
+
+    .D32(0x40090000)                    // junk that's not
+    .D32(0x60000000)                    // a return address
+
+    .D32(0x40001000)                    // a couple of plausible addresses
+    .D32(0x5000F000)                    // that are not within functions
+
+    .D32(return_address)                // actual return address
+    // frame 1
+    .Mark(&frame1_sp)
+    .Append(32, 0);                     // end of stack
+  RegionFromSection();
+
+  raw_context.iregs[MD_CONTEXT_ARM_REG_PC] = 0x40000200;
+  raw_context.iregs[MD_CONTEXT_ARM_REG_SP] = stack_section.start().Value();
+
+  SetModuleSymbols(&module1,
+                   // The youngest frame's function.
+                   "FUNC 100 400 10 monotreme\n");
+  SetModuleSymbols(&module2,
+                   // The calling frame's function.
+                   "FUNC 100 400 10 marsupial\n");
+
+  StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+  StackwalkerARM walker(&system_info, &raw_context, -1, &stack_region, &modules,
+                        &frame_symbolizer);
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(0U, modules_without_symbols.size());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+  ASSERT_EQ(2U, frames->size());
+
+  StackFrameARM *frame0 = static_cast<StackFrameARM *>(frames->at(0));
+  EXPECT_EQ(StackFrame::FRAME_TRUST_CONTEXT, frame0->trust);
+  ASSERT_EQ(StackFrameARM::CONTEXT_VALID_ALL, frame0->context_validity);
+  EXPECT_EQ(0, memcmp(&raw_context, &frame0->context, sizeof(raw_context)));
+  EXPECT_EQ("monotreme", frame0->function_name);
+  EXPECT_EQ(0x40000100U, frame0->function_base);
+
+  StackFrameARM *frame1 = static_cast<StackFrameARM *>(frames->at(1));
+  EXPECT_EQ(StackFrame::FRAME_TRUST_SCAN, frame1->trust);
+  ASSERT_EQ((StackFrameARM::CONTEXT_VALID_PC |
+             StackFrameARM::CONTEXT_VALID_SP),
+            frame1->context_validity);
+  EXPECT_EQ(return_address, frame1->context.iregs[MD_CONTEXT_ARM_REG_PC]);
+  EXPECT_EQ(frame1_sp.Value(), frame1->context.iregs[MD_CONTEXT_ARM_REG_SP]);
+  EXPECT_EQ("marsupial", frame1->function_name);
+  EXPECT_EQ(0x50000100U, frame1->function_base);
+}
+
+TEST_F(GetCallerFrame, ScanFirstFrame) {
+  // If the stackwalker resorts to stack scanning, it will scan much
+  // farther to find the caller of the context frame.
+  stack_section.start() = 0x80000000;
+  uint32_t return_address1 = 0x50000100;
+  uint32_t return_address2 = 0x50000900;
+  Label frame1_sp, frame2_sp;
+  stack_section
+    // frame 0
+    .Append(32, 0)                      // space
+
+    .D32(0x40090000)                    // junk that's not
+    .D32(0x60000000)                    // a return address
+
+    .Append(96, 0)                      // more space
+
+    .D32(return_address1)               // actual return address
+    // frame 1
+    .Mark(&frame1_sp)
+    .Append(32, 0)                      // space
+
+    .D32(0xF0000000)                    // more junk
+    .D32(0x0000000D)
+
+    .Append(96, 0)                      // more space
+
+    .D32(return_address2)               // actual return address
+                                        // (won't be found)
+    // frame 2
+    .Mark(&frame2_sp)
+    .Append(32, 0);                     // end of stack
+  RegionFromSection();
+
+  raw_context.iregs[MD_CONTEXT_ARM_REG_PC] = 0x40005510;
+  raw_context.iregs[MD_CONTEXT_ARM_REG_SP] = stack_section.start().Value();
+
+  StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+  StackwalkerARM walker(&system_info, &raw_context, -1, &stack_region, &modules,
+                        &frame_symbolizer);
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(2U, modules_without_symbols.size());
+  ASSERT_EQ("module1", modules_without_symbols[0]->debug_file());
+  ASSERT_EQ("module2", modules_without_symbols[1]->debug_file());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+  ASSERT_EQ(2U, frames->size());
+
+  StackFrameARM *frame0 = static_cast<StackFrameARM *>(frames->at(0));
+  EXPECT_EQ(StackFrame::FRAME_TRUST_CONTEXT, frame0->trust);
+  ASSERT_EQ(StackFrameARM::CONTEXT_VALID_ALL, frame0->context_validity);
+  EXPECT_EQ(0, memcmp(&raw_context, &frame0->context, sizeof(raw_context)));
+
+  StackFrameARM *frame1 = static_cast<StackFrameARM *>(frames->at(1));
+  EXPECT_EQ(StackFrame::FRAME_TRUST_SCAN, frame1->trust);
+  ASSERT_EQ((StackFrameARM::CONTEXT_VALID_PC |
+             StackFrameARM::CONTEXT_VALID_SP),
+            frame1->context_validity);
+  EXPECT_EQ(return_address1, frame1->context.iregs[MD_CONTEXT_ARM_REG_PC]);
+  EXPECT_EQ(frame1_sp.Value(), frame1->context.iregs[MD_CONTEXT_ARM_REG_SP]);
+}
+
+// Test that set_max_frames_scanned prevents using stack scanning
+// to find caller frames.
+TEST_F(GetCallerFrame, ScanningNotAllowed) {
+  // When the stack walker resorts to scanning the stack,
+  // only addresses located within loaded modules are
+  // considered valid return addresses.
+  stack_section.start() = 0x80000000;
+  uint32_t return_address1 = 0x50000100;
+  uint32_t return_address2 = 0x50000900;
+  Label frame1_sp, frame2_sp;
+  stack_section
+    // frame 0
+    .Append(16, 0)                      // space
+
+    .D32(0x40090000)                    // junk that's not
+    .D32(0x60000000)                    // a return address
+
+    .D32(return_address1)               // actual return address
+    // frame 1
+    .Mark(&frame1_sp)
+    .Append(16, 0)                      // space
+
+    .D32(0xF0000000)                    // more junk
+    .D32(0x0000000D)
+
+    .D32(return_address2)               // actual return address
+    // frame 2
+    .Mark(&frame2_sp)
+    .Append(32, 0);                     // end of stack
+  RegionFromSection();
+
+  raw_context.iregs[MD_CONTEXT_ARM_REG_PC] = 0x40005510;
+  raw_context.iregs[MD_CONTEXT_ARM_REG_SP] = stack_section.start().Value();
+
+  StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+  StackwalkerARM walker(&system_info, &raw_context, -1, &stack_region, &modules,
+                        &frame_symbolizer);
+  Stackwalker::set_max_frames_scanned(0);
+
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(1U, modules_without_symbols.size());
+  ASSERT_EQ("module1", modules_without_symbols[0]->debug_file());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+  ASSERT_EQ(1U, frames->size());
+
+  StackFrameARM *frame0 = static_cast<StackFrameARM *>(frames->at(0));
+  EXPECT_EQ(StackFrame::FRAME_TRUST_CONTEXT, frame0->trust);
+  ASSERT_EQ(StackFrameARM::CONTEXT_VALID_ALL, frame0->context_validity);
+  EXPECT_EQ(0, memcmp(&raw_context, &frame0->context, sizeof(raw_context)));
+}
+
+struct CFIFixture: public StackwalkerARMFixture {
+  CFIFixture() {
+    // Provide a bunch of STACK CFI records; we'll walk to the caller
+    // from every point in this series, expecting to find the same set
+    // of register values.
+    SetModuleSymbols(&module1,
+                     // The youngest frame's function.
+                     "FUNC 4000 1000 10 enchiridion\n"
+                     // Initially, nothing has been pushed on the stack,
+                     // and the return address is still in the link register.
+                     "STACK CFI INIT 4000 100 .cfa: sp .ra: lr\n"
+                     // Push r4, the frame pointer, and the link register.
+                     "STACK CFI 4001 .cfa: sp 12 + r4: .cfa 12 - ^"
+                     " r11: .cfa 8 - ^ .ra: .cfa 4 - ^\n"
+                     // Save r4..r7 in r0..r3: verify that we populate
+                     // the youngest frame with all the values we have.
+                     "STACK CFI 4002 r4: r0 r5: r1 r6: r2 r7: r3\n"
+                     // Restore r4..r7. Save the non-callee-saves register r1.
+                     "STACK CFI 4003 .cfa: sp 16 + r1: .cfa 16 - ^"
+                     " r4: r4 r5: r5 r6: r6 r7: r7\n"
+                     // Move the .cfa back four bytes, to point at the return
+                     // address, and restore the sp explicitly.
+                     "STACK CFI 4005 .cfa: sp 12 + r1: .cfa 12 - ^"
+                     " r11: .cfa 4 - ^ .ra: .cfa ^ sp: .cfa 4 +\n"
+                     // Recover the PC explicitly from a new stack slot;
+                     // provide garbage for the .ra.
+                     "STACK CFI 4006 .cfa: sp 16 + pc: .cfa 16 - ^\n"
+
+                     // The calling function.
+                     "FUNC 5000 1000 10 epictetus\n"
+                     // Mark it as end of stack.
+                     "STACK CFI INIT 5000 1000 .cfa: 0 .ra: 0\n"
+
+                     // A function whose CFI makes the stack pointer
+                     // go backwards.
+                     "FUNC 6000 1000 20 palinal\n"
+                     "STACK CFI INIT 6000 1000 .cfa: sp 4 - .ra: lr\n"
+
+                     // A function with CFI expressions that can't be
+                     // evaluated.
+                     "FUNC 7000 1000 20 rhetorical\n"
+                     "STACK CFI INIT 7000 1000 .cfa: moot .ra: ambiguous\n");
+
+    // Provide some distinctive values for the caller's registers.
+    expected.iregs[MD_CONTEXT_ARM_REG_PC] = 0x40005510;
+    expected.iregs[MD_CONTEXT_ARM_REG_SP] = 0x80000000;
+    expected.iregs[4] = 0xb5d55e68;
+    expected.iregs[5] = 0xebd134f3;
+    expected.iregs[6] = 0xa31e74bc;
+    expected.iregs[7] = 0x2dcb16b3;
+    expected.iregs[8] = 0x2ada2137;
+    expected.iregs[9] = 0xbbbb557d;
+    expected.iregs[10] = 0x48bf8ca7;
+    expected.iregs[MD_CONTEXT_ARM_REG_FP] = 0x8112e110;
+
+    // Expect CFI to recover all callee-saves registers. Since CFI is the
+    // only stack frame construction technique we have, aside from the
+    // context frame itself, there's no way for us to have a set of valid
+    // registers smaller than this.
+    expected_validity = (StackFrameARM::CONTEXT_VALID_PC |
+                         StackFrameARM::CONTEXT_VALID_SP |
+                         StackFrameARM::CONTEXT_VALID_R4 |
+                         StackFrameARM::CONTEXT_VALID_R5 |
+                         StackFrameARM::CONTEXT_VALID_R6 |
+                         StackFrameARM::CONTEXT_VALID_R7 |
+                         StackFrameARM::CONTEXT_VALID_R8 |
+                         StackFrameARM::CONTEXT_VALID_R9 |
+                         StackFrameARM::CONTEXT_VALID_R10 |
+                         StackFrameARM::CONTEXT_VALID_FP);
+
+    // By default, context frames provide all registers, as normal.
+    context_frame_validity = StackFrameARM::CONTEXT_VALID_ALL;
+
+    // By default, registers are unchanged.
+    raw_context = expected;
+  }
+
+  // Walk the stack, using stack_section as the contents of the stack
+  // and raw_context as the current register values. (Set the stack
+  // pointer to the stack's starting address.) Expect two stack
+  // frames; in the older frame, expect the callee-saves registers to
+  // have values matching those in 'expected'.
+  void CheckWalk() {
+    RegionFromSection();
+    raw_context.iregs[MD_CONTEXT_ARM_REG_SP] = stack_section.start().Value();
+
+    StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+    StackwalkerARM walker(&system_info, &raw_context, -1, &stack_region,
+                          &modules, &frame_symbolizer);
+    walker.SetContextFrameValidity(context_frame_validity);
+    vector<const CodeModule*> modules_without_symbols;
+    vector<const CodeModule*> modules_with_corrupt_symbols;
+    ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                            &modules_with_corrupt_symbols));
+    ASSERT_EQ(0U, modules_without_symbols.size());
+    ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+    frames = call_stack.frames();
+    ASSERT_EQ(2U, frames->size());
+
+    StackFrameARM *frame0 = static_cast<StackFrameARM *>(frames->at(0));
+    EXPECT_EQ(StackFrame::FRAME_TRUST_CONTEXT, frame0->trust);
+    ASSERT_EQ(context_frame_validity, frame0->context_validity);
+    EXPECT_EQ("enchiridion", frame0->function_name);
+    EXPECT_EQ(0x40004000U, frame0->function_base);
+
+    StackFrameARM *frame1 = static_cast<StackFrameARM *>(frames->at(1));
+    EXPECT_EQ(StackFrame::FRAME_TRUST_CFI, frame1->trust);
+    ASSERT_EQ(expected_validity, frame1->context_validity);
+    if (expected_validity & StackFrameARM::CONTEXT_VALID_R1)
+      EXPECT_EQ(expected.iregs[1], frame1->context.iregs[1]);
+    if (expected_validity & StackFrameARM::CONTEXT_VALID_R4)
+      EXPECT_EQ(expected.iregs[4], frame1->context.iregs[4]);
+    if (expected_validity & StackFrameARM::CONTEXT_VALID_R5)
+      EXPECT_EQ(expected.iregs[5], frame1->context.iregs[5]);
+    if (expected_validity & StackFrameARM::CONTEXT_VALID_R6)
+      EXPECT_EQ(expected.iregs[6], frame1->context.iregs[6]);
+    if (expected_validity & StackFrameARM::CONTEXT_VALID_R7)
+      EXPECT_EQ(expected.iregs[7], frame1->context.iregs[7]);
+    if (expected_validity & StackFrameARM::CONTEXT_VALID_R8)
+      EXPECT_EQ(expected.iregs[8], frame1->context.iregs[8]);
+    if (expected_validity & StackFrameARM::CONTEXT_VALID_R9)
+      EXPECT_EQ(expected.iregs[9], frame1->context.iregs[9]);
+    if (expected_validity & StackFrameARM::CONTEXT_VALID_R10)
+      EXPECT_EQ(expected.iregs[10], frame1->context.iregs[10]);
+    if (expected_validity & StackFrameARM::CONTEXT_VALID_FP)
+      EXPECT_EQ(expected.iregs[MD_CONTEXT_ARM_REG_FP],
+                frame1->context.iregs[MD_CONTEXT_ARM_REG_FP]);
+
+    // We would never have gotten a frame in the first place if the SP
+    // and PC weren't valid or ->instruction weren't set.
+    EXPECT_EQ(expected.iregs[MD_CONTEXT_ARM_REG_SP],
+              frame1->context.iregs[MD_CONTEXT_ARM_REG_SP]);
+    EXPECT_EQ(expected.iregs[MD_CONTEXT_ARM_REG_PC],
+              frame1->context.iregs[MD_CONTEXT_ARM_REG_PC]);
+    EXPECT_EQ(expected.iregs[MD_CONTEXT_ARM_REG_PC],
+              frame1->instruction + 2);
+    EXPECT_EQ("epictetus", frame1->function_name);
+  }
+
+  // The values we expect to find for the caller's registers.
+  MDRawContextARM expected;
+
+  // The validity mask for expected.
+  int expected_validity;
+
+  // The validity mask to impose on the context frame.
+  int context_frame_validity;
+};
+
+class CFI: public CFIFixture, public Test { };
+
+TEST_F(CFI, At4000) {
+  stack_section.start() = expected.iregs[MD_CONTEXT_ARM_REG_SP];
+  raw_context.iregs[MD_CONTEXT_ARM_REG_PC] = 0x40004000;
+  raw_context.iregs[MD_CONTEXT_ARM_REG_LR] = 0x40005510;
+  CheckWalk();
+}
+
+TEST_F(CFI, At4001) {
+  Label frame1_sp = expected.iregs[MD_CONTEXT_ARM_REG_SP];
+  stack_section
+    .D32(0xb5d55e68)            // saved r4
+    .D32(0x8112e110)            // saved fp
+    .D32(0x40005510)            // return address
+    .Mark(&frame1_sp);          // This effectively sets stack_section.start().
+  raw_context.iregs[MD_CONTEXT_ARM_REG_PC] = 0x40004001;
+  raw_context.iregs[4] = 0x635adc9f;                     // distinct callee r4
+  raw_context.iregs[MD_CONTEXT_ARM_REG_FP] = 0xbe145fc4; // distinct callee fp
+  CheckWalk();
+}
+
+// As above, but unwind from a context that has only the PC and SP.
+TEST_F(CFI, At4001LimitedValidity) {
+  context_frame_validity =
+    StackFrameARM::CONTEXT_VALID_PC | StackFrameARM::CONTEXT_VALID_SP;
+  raw_context.iregs[MD_CONTEXT_ARM_REG_PC] = 0x40004001;
+  raw_context.iregs[MD_CONTEXT_ARM_REG_FP] = 0xbe145fc4; // distinct callee fp
+  Label frame1_sp = expected.iregs[MD_CONTEXT_ARM_REG_SP];
+  stack_section
+    .D32(0xb5d55e68)            // saved r4
+    .D32(0x8112e110)            // saved fp
+    .D32(0x40005510)            // return address
+    .Mark(&frame1_sp);          // This effectively sets stack_section.start().
+  expected_validity = (StackFrameARM::CONTEXT_VALID_PC
+                       | StackFrameARM::CONTEXT_VALID_SP
+                       | StackFrameARM::CONTEXT_VALID_FP
+                       | StackFrameARM::CONTEXT_VALID_R4);
+  CheckWalk();
+}
+
+TEST_F(CFI, At4002) {
+  Label frame1_sp = expected.iregs[MD_CONTEXT_ARM_REG_SP];
+  stack_section
+    .D32(0xfb81ff3d)            // no longer saved r4
+    .D32(0x8112e110)            // saved fp
+    .D32(0x40005510)            // return address
+    .Mark(&frame1_sp);          // This effectively sets stack_section.start().
+  raw_context.iregs[MD_CONTEXT_ARM_REG_PC] = 0x40004002;
+  raw_context.iregs[0] = 0xb5d55e68;  // saved r4
+  raw_context.iregs[1] = 0xebd134f3;  // saved r5
+  raw_context.iregs[2] = 0xa31e74bc;  // saved r6
+  raw_context.iregs[3] = 0x2dcb16b3;  // saved r7
+  raw_context.iregs[4] = 0xfdd35466;  // distinct callee r4
+  raw_context.iregs[5] = 0xf18c946c;  // distinct callee r5
+  raw_context.iregs[6] = 0xac2079e8;  // distinct callee r6
+  raw_context.iregs[7] = 0xa449829f;  // distinct callee r7
+  raw_context.iregs[MD_CONTEXT_ARM_REG_FP] = 0xbe145fc4; // distinct callee fp
+  CheckWalk();
+}
+
+TEST_F(CFI, At4003) {
+  Label frame1_sp = expected.iregs[MD_CONTEXT_ARM_REG_SP];
+  stack_section
+    .D32(0x48c8dd5a)            // saved r1 (even though it's not callee-saves)
+    .D32(0xcb78040e)            // no longer saved r4
+    .D32(0x8112e110)            // saved fp
+    .D32(0x40005510)            // return address
+    .Mark(&frame1_sp);          // This effectively sets stack_section.start().
+  raw_context.iregs[MD_CONTEXT_ARM_REG_PC] = 0x40004003;
+  raw_context.iregs[1] = 0xfb756319;                     // distinct callee r1
+  raw_context.iregs[MD_CONTEXT_ARM_REG_FP] = 0x0a2857ea; // distinct callee fp
+  expected.iregs[1] = 0x48c8dd5a;    // caller's r1
+  expected_validity |= StackFrameARM::CONTEXT_VALID_R1;
+  CheckWalk();
+}
+
+// We have no new rule at module offset 0x4004, so the results here should
+// be the same as those at module offset 0x4003.
+TEST_F(CFI, At4004) {
+  Label frame1_sp = expected.iregs[MD_CONTEXT_ARM_REG_SP];
+  stack_section
+    .D32(0x48c8dd5a)            // saved r1 (even though it's not callee-saves)
+    .D32(0xcb78040e)            // no longer saved r4
+    .D32(0x8112e110)            // saved fp
+    .D32(0x40005510)            // return address
+    .Mark(&frame1_sp);          // This effectively sets stack_section.start().
+  raw_context.iregs[MD_CONTEXT_ARM_REG_PC] = 0x40004004;
+  raw_context.iregs[1] = 0xfb756319; // distinct callee r1
+  expected.iregs[1] = 0x48c8dd5a; // caller's r1
+  expected_validity |= StackFrameARM::CONTEXT_VALID_R1;
+  CheckWalk();
+}
+
+// Here we move the .cfa, but provide an explicit rule to recover the SP,
+// so again there should be no change in the registers recovered.
+TEST_F(CFI, At4005) {
+  Label frame1_sp = expected.iregs[MD_CONTEXT_ARM_REG_SP];
+  stack_section
+    .D32(0x48c8dd5a)            // saved r1 (even though it's not callee-saves)
+    .D32(0xf013f841)            // no longer saved r4
+    .D32(0x8112e110)            // saved fp
+    .D32(0x40005510)            // return address
+    .Mark(&frame1_sp);          // This effectively sets stack_section.start().
+  raw_context.iregs[MD_CONTEXT_ARM_REG_PC] = 0x40004005;
+  raw_context.iregs[1] = 0xfb756319; // distinct callee r1
+  expected.iregs[1] = 0x48c8dd5a; // caller's r1
+  expected_validity |= StackFrameARM::CONTEXT_VALID_R1;
+  CheckWalk();
+}
+
+// Here we provide an explicit rule for the PC, and have the saved .ra be
+// bogus.
+TEST_F(CFI, At4006) {
+  Label frame1_sp = expected.iregs[MD_CONTEXT_ARM_REG_SP];
+  stack_section
+    .D32(0x40005510)            // saved pc
+    .D32(0x48c8dd5a)            // saved r1 (even though it's not callee-saves)
+    .D32(0xf013f841)            // no longer saved r4
+    .D32(0x8112e110)            // saved fp
+    .D32(0xf8d15783)            // .ra rule recovers this, which is garbage
+    .Mark(&frame1_sp);          // This effectively sets stack_section.start().
+  raw_context.iregs[MD_CONTEXT_ARM_REG_PC] = 0x40004006;
+  raw_context.iregs[1] = 0xfb756319; // callee's r1, different from caller's
+  expected.iregs[1] = 0x48c8dd5a; // caller's r1
+  expected_validity |= StackFrameARM::CONTEXT_VALID_R1;
+  CheckWalk();
+}
+
+// Check that we reject rules that would cause the stack pointer to
+// move in the wrong direction.
+TEST_F(CFI, RejectBackwards) {
+  raw_context.iregs[MD_CONTEXT_ARM_REG_PC] = 0x40006000;
+  raw_context.iregs[MD_CONTEXT_ARM_REG_SP] = 0x80000000;
+  raw_context.iregs[MD_CONTEXT_ARM_REG_LR] = 0x40005510;
+  StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+  StackwalkerARM walker(&system_info, &raw_context, -1, &stack_region, &modules,
+                        &frame_symbolizer);
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(0U, modules_without_symbols.size());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+  ASSERT_EQ(1U, frames->size());
+}
+
+// Check that we reject rules whose expressions' evaluation fails.
+TEST_F(CFI, RejectBadExpressions) {
+  raw_context.iregs[MD_CONTEXT_ARM_REG_PC] = 0x40007000;
+  raw_context.iregs[MD_CONTEXT_ARM_REG_SP] = 0x80000000;
+  StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+  StackwalkerARM walker(&system_info, &raw_context, -1, &stack_region, &modules,
+                        &frame_symbolizer);
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(0U, modules_without_symbols.size());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+  ASSERT_EQ(1U, frames->size());
+}
+
+class StackwalkerARMFixtureIOS : public StackwalkerARMFixture {
+ public:
+  StackwalkerARMFixtureIOS() {
+    system_info.os = "iOS";
+    system_info.os_short = "ios";
+  }
+};
+
+class GetFramesByFramePointer: public StackwalkerARMFixtureIOS, public Test { };
+
+TEST_F(GetFramesByFramePointer, OnlyFramePointer) {
+  stack_section.start() = 0x80000000;
+  uint32_t return_address1 = 0x50000100;
+  uint32_t return_address2 = 0x50000900;
+  Label frame1_sp, frame2_sp;
+  Label frame1_fp, frame2_fp;
+  stack_section
+    // frame 0
+    .Append(32, 0)           // Whatever values on the stack.
+    .D32(0x0000000D)         // junk that's not
+    .D32(0xF0000000)         // a return address.
+
+    .Mark(&frame1_fp)        // Next fp will point to the next value.
+    .D32(frame2_fp)          // Save current frame pointer.
+    .D32(return_address2)    // Save current link register.
+    .Mark(&frame1_sp)
+
+    // frame 1
+    .Append(32, 0)           // Whatever values on the stack.
+    .D32(0x0000000D)         // junk that's not
+    .D32(0xF0000000)         // a return address.
+
+    .Mark(&frame2_fp)
+    .D32(0)
+    .D32(0)
+    .Mark(&frame2_sp)
+
+    // frame 2
+    .Append(32, 0)           // Whatever values on the stack.
+    .D32(0x0000000D)         // junk that's not
+    .D32(0xF0000000);        // a return address.
+  RegionFromSection();
+
+
+  raw_context.iregs[MD_CONTEXT_ARM_REG_PC] = 0x40005510;
+  raw_context.iregs[MD_CONTEXT_ARM_REG_LR] = return_address1;
+  raw_context.iregs[MD_CONTEXT_ARM_REG_IOS_FP] = frame1_fp.Value();
+  raw_context.iregs[MD_CONTEXT_ARM_REG_SP] = stack_section.start().Value();
+
+  StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+  StackwalkerARM walker(&system_info, &raw_context, MD_CONTEXT_ARM_REG_IOS_FP,
+                        &stack_region, &modules, &frame_symbolizer);
+
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(2U, modules_without_symbols.size());
+  ASSERT_EQ("module1", modules_without_symbols[0]->debug_file());
+  ASSERT_EQ("module2", modules_without_symbols[1]->debug_file());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+  ASSERT_EQ(3U, frames->size());
+
+  StackFrameARM *frame0 = static_cast<StackFrameARM *>(frames->at(0));
+  EXPECT_EQ(StackFrame::FRAME_TRUST_CONTEXT, frame0->trust);
+  ASSERT_EQ(StackFrameARM::CONTEXT_VALID_ALL, frame0->context_validity);
+  EXPECT_EQ(0, memcmp(&raw_context, &frame0->context, sizeof(raw_context)));
+
+  StackFrameARM *frame1 = static_cast<StackFrameARM *>(frames->at(1));
+  EXPECT_EQ(StackFrame::FRAME_TRUST_FP, frame1->trust);
+  ASSERT_EQ((StackFrameARM::CONTEXT_VALID_PC |
+             StackFrameARM::CONTEXT_VALID_LR |
+             StackFrameARM::RegisterValidFlag(MD_CONTEXT_ARM_REG_IOS_FP) |
+             StackFrameARM::CONTEXT_VALID_SP),
+            frame1->context_validity);
+  EXPECT_EQ(return_address1, frame1->context.iregs[MD_CONTEXT_ARM_REG_PC]);
+  EXPECT_EQ(return_address2, frame1->context.iregs[MD_CONTEXT_ARM_REG_LR]);
+  EXPECT_EQ(frame1_sp.Value(), frame1->context.iregs[MD_CONTEXT_ARM_REG_SP]);
+  EXPECT_EQ(frame2_fp.Value(),
+            frame1->context.iregs[MD_CONTEXT_ARM_REG_IOS_FP]);
+
+  StackFrameARM *frame2 = static_cast<StackFrameARM *>(frames->at(2));
+  EXPECT_EQ(StackFrame::FRAME_TRUST_FP, frame2->trust);
+  ASSERT_EQ((StackFrameARM::CONTEXT_VALID_PC |
+             StackFrameARM::CONTEXT_VALID_LR |
+             StackFrameARM::RegisterValidFlag(MD_CONTEXT_ARM_REG_IOS_FP) |
+             StackFrameARM::CONTEXT_VALID_SP),
+            frame2->context_validity);
+  EXPECT_EQ(return_address2, frame2->context.iregs[MD_CONTEXT_ARM_REG_PC]);
+  EXPECT_EQ(0U, frame2->context.iregs[MD_CONTEXT_ARM_REG_LR]);
+  EXPECT_EQ(frame2_sp.Value(), frame2->context.iregs[MD_CONTEXT_ARM_REG_SP]);
+  EXPECT_EQ(0U, frame2->context.iregs[MD_CONTEXT_ARM_REG_IOS_FP]);
+}
+
+TEST_F(GetFramesByFramePointer, FramePointerAndCFI) {
+  // Provide the standatd STACK CFI records that is obtained when exmining an
+  // executable produced by XCode.
+  SetModuleSymbols(&module1,
+                     // Adding a function in CFI.
+                     "FUNC 4000 1000 10 enchiridion\n"
+
+                     "STACK CFI INIT 4000 100 .cfa: sp 0 + .ra: lr\n"
+                     "STACK CFI 4001 .cfa: sp 8 + .ra: .cfa -4 + ^"
+                     " r7: .cfa -8 + ^\n"
+                     "STACK CFI 4002 .cfa: r7 8 +\n"
+                  );
+
+  stack_section.start() = 0x80000000;
+  uint32_t return_address1 = 0x40004010;
+  uint32_t return_address2 = 0x50000900;
+  Label frame1_sp, frame2_sp;
+  Label frame1_fp, frame2_fp;
+  stack_section
+    // frame 0
+    .Append(32, 0)           // Whatever values on the stack.
+    .D32(0x0000000D)         // junk that's not
+    .D32(0xF0000000)         // a return address.
+
+    .Mark(&frame1_fp)        // Next fp will point to the next value.
+    .D32(frame2_fp)          // Save current frame pointer.
+    .D32(return_address2)    // Save current link register.
+    .Mark(&frame1_sp)
+
+    // frame 1
+    .Append(32, 0)           // Whatever values on the stack.
+    .D32(0x0000000D)         // junk that's not
+    .D32(0xF0000000)         // a return address.
+
+    .Mark(&frame2_fp)
+    .D32(0)
+    .D32(0)
+    .Mark(&frame2_sp)
+
+    // frame 2
+    .Append(32, 0)           // Whatever values on the stack.
+    .D32(0x0000000D)         // junk that's not
+    .D32(0xF0000000);        // a return address.
+  RegionFromSection();
+
+
+  raw_context.iregs[MD_CONTEXT_ARM_REG_PC] = 0x50000400;
+  raw_context.iregs[MD_CONTEXT_ARM_REG_LR] = return_address1;
+  raw_context.iregs[MD_CONTEXT_ARM_REG_IOS_FP] = frame1_fp.Value();
+  raw_context.iregs[MD_CONTEXT_ARM_REG_SP] = stack_section.start().Value();
+
+  StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+  StackwalkerARM walker(&system_info, &raw_context, MD_CONTEXT_ARM_REG_IOS_FP,
+                        &stack_region, &modules, &frame_symbolizer);
+
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(1U, modules_without_symbols.size());
+  ASSERT_EQ("module2", modules_without_symbols[0]->debug_file());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+  ASSERT_EQ(3U, frames->size());
+
+  StackFrameARM *frame0 = static_cast<StackFrameARM *>(frames->at(0));
+  EXPECT_EQ(StackFrame::FRAME_TRUST_CONTEXT, frame0->trust);
+  ASSERT_EQ(StackFrameARM::CONTEXT_VALID_ALL, frame0->context_validity);
+  EXPECT_EQ(0, memcmp(&raw_context, &frame0->context, sizeof(raw_context)));
+
+  StackFrameARM *frame1 = static_cast<StackFrameARM *>(frames->at(1));
+  EXPECT_EQ(StackFrame::FRAME_TRUST_FP, frame1->trust);
+  ASSERT_EQ((StackFrameARM::CONTEXT_VALID_PC |
+             StackFrameARM::CONTEXT_VALID_LR |
+             StackFrameARM::RegisterValidFlag(MD_CONTEXT_ARM_REG_IOS_FP) |
+             StackFrameARM::CONTEXT_VALID_SP),
+            frame1->context_validity);
+  EXPECT_EQ(return_address1, frame1->context.iregs[MD_CONTEXT_ARM_REG_PC]);
+  EXPECT_EQ(return_address2, frame1->context.iregs[MD_CONTEXT_ARM_REG_LR]);
+  EXPECT_EQ(frame1_sp.Value(), frame1->context.iregs[MD_CONTEXT_ARM_REG_SP]);
+  EXPECT_EQ(frame2_fp.Value(),
+            frame1->context.iregs[MD_CONTEXT_ARM_REG_IOS_FP]);
+  EXPECT_EQ("enchiridion", frame1->function_name);
+  EXPECT_EQ(0x40004000U, frame1->function_base);
+
+
+  StackFrameARM *frame2 = static_cast<StackFrameARM *>(frames->at(2));
+  EXPECT_EQ(StackFrame::FRAME_TRUST_CFI, frame2->trust);
+  ASSERT_EQ((StackFrameARM::CONTEXT_VALID_PC |
+             StackFrameARM::CONTEXT_VALID_LR |
+             StackFrameARM::RegisterValidFlag(MD_CONTEXT_ARM_REG_IOS_FP) |
+             StackFrameARM::CONTEXT_VALID_SP),
+            frame2->context_validity);
+  EXPECT_EQ(return_address2, frame2->context.iregs[MD_CONTEXT_ARM_REG_PC]);
+  EXPECT_EQ(0U, frame2->context.iregs[MD_CONTEXT_ARM_REG_LR]);
+  EXPECT_EQ(frame2_sp.Value(), frame2->context.iregs[MD_CONTEXT_ARM_REG_SP]);
+  EXPECT_EQ(0U, frame2->context.iregs[MD_CONTEXT_ARM_REG_IOS_FP]);
+}
diff --git a/google-breakpad/src/processor/stackwalker_mips.cc b/google-breakpad/src/processor/stackwalker_mips.cc
new file mode 100644
index 0000000..7db3421
--- /dev/null
+++ b/google-breakpad/src/processor/stackwalker_mips.cc
@@ -0,0 +1,300 @@
+// Copyright (c) 2013 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// stackwalker_mips.cc: MIPS-specific stackwalker.
+//
+// See stackwalker_mips.h for documentation.
+//
+// Author: Tata Elxsi
+
+#include "common/scoped_ptr.h"
+#include "google_breakpad/processor/call_stack.h"
+#include "google_breakpad/processor/code_modules.h"
+#include "google_breakpad/processor/memory_region.h"
+#include "google_breakpad/processor/source_line_resolver_interface.h"
+#include "google_breakpad/processor/stack_frame_cpu.h"
+#include "processor/cfi_frame_info.h"
+#include "processor/logging.h"
+#include "processor/postfix_evaluator-inl.h"
+#include "processor/stackwalker_mips.h"
+#include "processor/windows_frame_info.h"
+#include "google_breakpad/common/minidump_cpu_mips.h"
+
+namespace google_breakpad {
+
+StackwalkerMIPS::StackwalkerMIPS(const SystemInfo* system_info,
+                                 const MDRawContextMIPS* context,
+                                 MemoryRegion* memory,
+                                 const CodeModules* modules,
+                                 StackFrameSymbolizer* resolver_helper)
+    : Stackwalker(system_info, memory, modules, resolver_helper),
+      context_(context) {
+  if (memory_ && memory_->GetBase() + memory_->GetSize() - 1 > 0xffffffff) {
+    BPLOG(ERROR) << "Memory out of range for stackwalking: "
+                 << HexString(memory_->GetBase())
+                 << "+"
+                 << HexString(memory_->GetSize());
+    memory_ = NULL;
+  }
+}
+
+StackFrame* StackwalkerMIPS::GetContextFrame() {
+  if (!context_) {
+    BPLOG(ERROR) << "Can't get context frame without context.";
+    return NULL;
+  }
+
+  StackFrameMIPS* frame = new StackFrameMIPS();
+
+  // The instruction pointer is stored directly in a register, so pull it
+  // straight out of the CPU context structure.
+  frame->context = *context_;
+  frame->context_validity = StackFrameMIPS::CONTEXT_VALID_ALL;
+  frame->trust = StackFrame::FRAME_TRUST_CONTEXT;
+  frame->instruction = frame->context.epc;
+
+  return frame;
+}
+
+// Register names for mips.
+static const char* const kRegisterNames[] = {
+   "$zero", "$at", "$v0", "$v1", "$a0", "$a1", "$a2", "$a3", "$to", "$t1",
+   "$t2",   "$t3", "$t4", "$t5", "$t6", "$t7", "$s0", "$s1", "$s2", "$s3",
+   "$s4",   "$s5", "$s6", "$s7", "$t8", "$t9", "$k0", "$k1", "$gp", "$sp",
+   "$fp",   "$ra", NULL
+  // TODO(gordanac): add float point save registers
+};
+
+StackFrameMIPS* StackwalkerMIPS::GetCallerByCFIFrameInfo(
+    const vector<StackFrame*>& frames,
+    CFIFrameInfo* cfi_frame_info) {
+  StackFrameMIPS* last_frame = static_cast<StackFrameMIPS*>(frames.back());
+
+  uint32_t sp = 0, pc = 0;
+
+  // Populate a dictionary with the valid register values in last_frame.
+  CFIFrameInfo::RegisterValueMap<uint32_t> callee_registers;
+  // Use the STACK CFI data to recover the caller's register values.
+  CFIFrameInfo::RegisterValueMap<uint32_t> caller_registers;
+
+  for (int i = 0; kRegisterNames[i]; ++i) {
+    caller_registers[kRegisterNames[i]] = last_frame->context.iregs[i];
+    callee_registers[kRegisterNames[i]] = last_frame->context.iregs[i];
+  }
+
+  if (!cfi_frame_info->FindCallerRegs(callee_registers, *memory_,
+                                      &caller_registers))  {
+    return NULL;
+  }
+
+  CFIFrameInfo::RegisterValueMap<uint32_t>::const_iterator entry =
+      caller_registers.find(".cfa");
+
+  if (entry != caller_registers.end()) {
+    sp = entry->second;
+    caller_registers["$sp"] = entry->second;
+  }
+
+  entry = caller_registers.find(".ra");
+  if (entry != caller_registers.end()) {
+    caller_registers["$ra"] = entry->second;
+    pc = entry->second - 2 * sizeof(pc);
+  }
+  caller_registers["$pc"] = pc;
+  // Construct a new stack frame given the values the CFI recovered.
+  scoped_ptr<StackFrameMIPS> frame(new StackFrameMIPS());
+
+  for (int i = 0; kRegisterNames[i]; ++i) {
+    CFIFrameInfo::RegisterValueMap<uint32_t>::const_iterator caller_entry =
+        caller_registers.find(kRegisterNames[i]);
+
+    if (caller_entry != caller_registers.end()) {
+      // The value of this register is recovered; fill the context with the
+      // value from caller_registers.
+      frame->context.iregs[i] = caller_entry->second;
+      frame->context_validity |= StackFrameMIPS::RegisterValidFlag(i);
+    } else if (((i >= INDEX_MIPS_REG_S0 && i <= INDEX_MIPS_REG_S7) ||
+                (i > INDEX_MIPS_REG_GP && i < INDEX_MIPS_REG_RA)) &&
+               (last_frame->context_validity &
+                StackFrameMIPS::RegisterValidFlag(i))) {
+      // If the STACK CFI data doesn't mention some callee-save register, and
+      // it is valid in the callee, assume the callee has not yet changed it.
+      // Calee-save registers according to the MIPS o32 ABI specification are:
+      // $s0 to $s7
+      // $sp, $s8
+      frame->context.iregs[i] = last_frame->context.iregs[i];
+      frame->context_validity |= StackFrameMIPS::RegisterValidFlag(i);
+    }
+  }
+
+  frame->context.epc = caller_registers["$pc"];
+  frame->instruction = caller_registers["$pc"];
+  frame->context_validity |= StackFrameMIPS::CONTEXT_VALID_PC;
+  
+  frame->context.iregs[MD_CONTEXT_MIPS_REG_RA] = caller_registers["$ra"];
+  frame->context_validity |= StackFrameMIPS::CONTEXT_VALID_RA;
+
+  frame->trust = StackFrame::FRAME_TRUST_CFI;
+
+  return frame.release();
+}
+
+StackFrame* StackwalkerMIPS::GetCallerFrame(const CallStack* stack,
+                                            bool stack_scan_allowed) {
+  if (!memory_ || !stack) {
+    BPLOG(ERROR) << "Can't get caller frame without memory or stack";
+    return NULL;
+  }
+
+  const vector<StackFrame*>& frames = *stack->frames();
+  StackFrameMIPS* last_frame = static_cast<StackFrameMIPS*>(frames.back());
+  scoped_ptr<StackFrameMIPS> new_frame;
+
+  // See if there is DWARF call frame information covering this address.
+  scoped_ptr<CFIFrameInfo> cfi_frame_info(
+    frame_symbolizer_->FindCFIFrameInfo(last_frame));
+  if (cfi_frame_info.get())
+    new_frame.reset(GetCallerByCFIFrameInfo(frames, cfi_frame_info.get()));
+
+  // If caller frame is not found in CFI try analyzing the stack.
+  if (stack_scan_allowed && !new_frame.get()) {
+    new_frame.reset(GetCallerByStackScan(frames));
+  }
+
+  // If nothing worked, tell the caller.
+  if (!new_frame.get()) {
+    return NULL;
+  }
+
+  // Treat an instruction address of 0 as end-of-stack.
+  if (new_frame->context.epc == 0) {
+    return NULL;
+  }
+
+  // If the new stack pointer is at a lower address than the old, then
+  // that's clearly incorrect. Treat this as end-of-stack to enforce
+  // progress and avoid infinite loops.
+  if (new_frame->context.iregs[MD_CONTEXT_MIPS_REG_SP] <=
+      last_frame->context.iregs[MD_CONTEXT_MIPS_REG_SP]) {
+    return NULL;
+  }
+  
+  return new_frame.release();
+}
+
+StackFrameMIPS* StackwalkerMIPS::GetCallerByStackScan(
+    const vector<StackFrame*>& frames) {
+  const uint32_t kMaxFrameStackSize = 1024;
+  const uint32_t kMinArgsOnStack = 4;
+
+  StackFrameMIPS* last_frame = static_cast<StackFrameMIPS*>(frames.back());
+
+  uint32_t last_sp = last_frame->context.iregs[MD_CONTEXT_MIPS_REG_SP];
+  uint32_t caller_pc, caller_sp, caller_fp;
+
+  // Return address cannot be obtained directly.
+  // Force stackwalking.
+
+  // We cannot use frame pointer to get the return address.
+  // We'll scan the stack for a
+  // return address. This can happen if last_frame is executing code
+  // for a module for which we don't have symbols.
+  int count = kMaxFrameStackSize / sizeof(caller_pc);
+
+  if (frames.size() > 1) {
+      // In case of mips32 ABI stack frame of a nonleaf function
+      // must have minimum stack frame assigned for 4 arguments (4 words).
+      // Move stack pointer for 4 words to avoid reporting non-existing frames
+      // for all frames except the topmost one.
+      // There is no way of knowing if topmost frame belongs to a leaf or
+      // a nonleaf function.
+      last_sp +=  kMinArgsOnStack * sizeof(caller_pc);
+      // Adjust 'count' so that return address is scanned only in limits 
+      // of one stack frame.
+      count -= kMinArgsOnStack;
+  }
+
+  do {
+    // Scanning for return address from stack pointer of the last frame.
+    if (!ScanForReturnAddress(last_sp, &caller_sp, &caller_pc, count)) {
+      // If we can't find an instruction pointer even with stack scanning,
+      // give up.
+      BPLOG(ERROR) << " ScanForReturnAddress failed ";
+      return NULL;
+    }
+    // Get $fp stored in the stack frame.
+    if (!memory_->GetMemoryAtAddress(caller_sp - sizeof(caller_pc),
+                                     &caller_fp)) {
+      BPLOG(INFO) << " GetMemoryAtAddress for fp failed " ;
+      return NULL;
+    }
+
+    count = count - (caller_sp - last_sp) / sizeof(caller_pc);
+    // Now scan the next address in the stack.
+    last_sp = caller_sp + sizeof(caller_pc);
+  } while ((caller_fp - caller_sp >= kMaxFrameStackSize) && count > 0);
+
+  if (!count) {
+    BPLOG(INFO) << " No frame found " ;
+    return NULL;
+  }
+
+  // ScanForReturnAddress found a reasonable return address. Advance
+  // $sp to the location above the one where the return address was
+  // found. 
+  caller_sp += sizeof(caller_pc);
+  // caller_pc is actually containing $ra value;
+  // $pc is two instructions before $ra,
+  // so the caller_pc needs to be decremented accordingly.
+  caller_pc -= 2 * sizeof(caller_pc);
+
+
+  // Create a new stack frame (ownership will be transferred to the caller)
+  // and fill it in.
+  StackFrameMIPS* frame = new StackFrameMIPS();
+  frame->trust = StackFrame::FRAME_TRUST_SCAN;
+  frame->context = last_frame->context;
+  frame->context.epc = caller_pc;
+  frame->context_validity |= StackFrameMIPS::CONTEXT_VALID_PC;
+  frame->instruction = caller_pc;
+
+  frame->context.iregs[MD_CONTEXT_MIPS_REG_SP] = caller_sp;
+  frame->context_validity |= StackFrameMIPS::CONTEXT_VALID_SP;
+  frame->context.iregs[MD_CONTEXT_MIPS_REG_FP] = caller_fp;
+  frame->context_validity |= StackFrameMIPS::CONTEXT_VALID_FP;
+
+  frame->context.iregs[MD_CONTEXT_MIPS_REG_RA] =
+      caller_pc + 2 * sizeof(caller_pc);
+  frame->context_validity |= StackFrameMIPS::CONTEXT_VALID_RA;
+
+  return frame;
+}
+
+}  // namespace google_breakpad
+
diff --git a/google-breakpad/src/processor/stackwalker_mips.h b/google-breakpad/src/processor/stackwalker_mips.h
new file mode 100644
index 0000000..5f97791
--- /dev/null
+++ b/google-breakpad/src/processor/stackwalker_mips.h
@@ -0,0 +1,85 @@
+// Copyright (c) 2013 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// stackwalker_mips.h: MIPS-specific stackwalker.
+//
+// Provides stack frames given MIPS register context and a memory region
+// corresponding to a MIPSstack.
+//
+// Author: Tata Elxsi
+
+#ifndef PROCESSOR_STACKWALKER_MIPS_H__
+#define PROCESSOR_STACKWALKER_MIPS_H__
+
+#include "google_breakpad/common/breakpad_types.h"
+#include "google_breakpad/common/minidump_format.h"
+#include "google_breakpad/processor/stackwalker.h"
+#include "google_breakpad/processor/stack_frame_cpu.h"
+#include "processor/cfi_frame_info.h"
+
+namespace google_breakpad {
+
+class CodeModules;
+
+class StackwalkerMIPS : public Stackwalker {
+ public:
+  // Context is a MIPS context object that gives access to mips-specific
+  // register state corresponding to the innermost called frame to be
+  // included in the stack.  The other arguments are passed directly
+  // through to the base Stackwalker constructor.
+  StackwalkerMIPS(const SystemInfo* system_info,
+                  const MDRawContextMIPS* context,
+                  MemoryRegion* memory,
+                  const CodeModules* modules,
+                  StackFrameSymbolizer* frame_symbolizer);
+
+ private:
+  // Implementation of Stackwalker, using mips context and stack conventions.
+  virtual StackFrame* GetContextFrame();
+  virtual StackFrame* GetCallerFrame(const CallStack* stack,
+                                     bool stack_scan_allowed);
+
+  // Use cfi_frame_info (derived from STACK CFI records) to construct
+  // the frame that called frames.back(). The caller takes ownership
+  // of the returned frame. Return NULL on failure.
+  StackFrameMIPS* GetCallerByCFIFrameInfo(const vector<StackFrame*>& frames,
+                                          CFIFrameInfo* cfi_frame_info);
+
+  // Scan the stack for plausible return address and frame pointer pair. 
+  // The caller takes ownership of the returned frame. Return NULL on failure.
+  StackFrameMIPS* GetCallerByStackScan(const vector<StackFrame*>& frames);
+
+  // Stores the CPU context corresponding to the innermost stack frame to
+  // be returned by GetContextFrame.
+  const MDRawContextMIPS* context_;
+};
+
+}  // namespace google_breakpad
+
+#endif  // PROCESSOR_STACKWALKER_MIPS_H__
diff --git a/google-breakpad/src/processor/stackwalker_mips_unittest.cc b/google-breakpad/src/processor/stackwalker_mips_unittest.cc
new file mode 100644
index 0000000..ed4be4f
--- /dev/null
+++ b/google-breakpad/src/processor/stackwalker_mips_unittest.cc
@@ -0,0 +1,697 @@
+// Copyright (c) 2013, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Gordana Cmiljanovic <gordana.cmiljanovic@imgtec.com>
+
+// stackwalker_mips_unittest.cc: Unit tests for StackwalkerMIPS class.
+
+#include <string.h>
+#include <string>
+#include <vector>
+
+#include "breakpad_googletest_includes.h"
+#include "common/test_assembler.h"
+#include "common/using_std_string.h"
+#include "google_breakpad/common/minidump_format.h"
+#include "google_breakpad/processor/basic_source_line_resolver.h"
+#include "google_breakpad/processor/call_stack.h"
+#include "google_breakpad/processor/code_module.h"
+#include "google_breakpad/processor/source_line_resolver_interface.h"
+#include "google_breakpad/processor/stack_frame_cpu.h"
+#include "processor/stackwalker_unittest_utils.h"
+#include "processor/stackwalker_mips.h"
+#include "processor/windows_frame_info.h"
+
+using google_breakpad::BasicSourceLineResolver;
+using google_breakpad::CallStack;
+using google_breakpad::CodeModule;
+using google_breakpad::StackFrameSymbolizer;
+using google_breakpad::StackFrame;
+using google_breakpad::StackFrameMIPS;
+using google_breakpad::Stackwalker;
+using google_breakpad::StackwalkerMIPS;
+using google_breakpad::SystemInfo;
+using google_breakpad::WindowsFrameInfo;
+using google_breakpad::test_assembler::kLittleEndian;
+using google_breakpad::test_assembler::Label;
+using google_breakpad::test_assembler::Section;
+using std::vector;
+using testing::_;
+using testing::AnyNumber;
+using testing::Return;
+using testing::SetArgumentPointee;
+using testing::Test;
+
+class StackwalkerMIPSFixture {
+ public:
+  StackwalkerMIPSFixture()
+    : stack_section(kLittleEndian),
+      // Give the two modules reasonable standard locations and names
+      // for tests to play with.
+      module1(0x00400000, 0x10000, "module1", "version1"),
+      module2(0x00500000, 0x10000, "module2", "version2") {
+    // Identify the system as a Linux system.
+    system_info.os = "Linux";
+    system_info.os_short = "linux";
+    system_info.os_version = "Observant Opossum";  // Jealous Jellyfish
+    system_info.cpu = "mips";
+    system_info.cpu_info = "";
+
+    // Put distinctive values in the raw CPU context.
+    BrandContext(&raw_context);
+
+    // Create some modules with some stock debugging information.
+    modules.Add(&module1);
+    modules.Add(&module2);
+
+    // By default, none of the modules have symbol info; call
+    // SetModuleSymbols to override this.
+    EXPECT_CALL(supplier, GetCStringSymbolData(_, _, _, _, _))
+      .WillRepeatedly(Return(MockSymbolSupplier::NOT_FOUND));
+
+    // Avoid GMOCK WARNING "Uninteresting mock function call - returning
+    // directly" for FreeSymbolData().
+    EXPECT_CALL(supplier, FreeSymbolData(_)).Times(AnyNumber());
+
+    // Reset max_frames_scanned since it's static.
+    Stackwalker::set_max_frames_scanned(1024);    
+  }
+
+  // Set the Breakpad symbol information that supplier should return for
+  // MODULE to INFO.
+  void SetModuleSymbols(MockCodeModule* module, const string& info) {
+    size_t buffer_size;
+    char* buffer = supplier.CopySymbolDataAndOwnTheCopy(info, &buffer_size);
+    EXPECT_CALL(supplier, GetCStringSymbolData(module, &system_info, _, _, _))
+      .WillRepeatedly(DoAll(SetArgumentPointee<3>(buffer),
+                            SetArgumentPointee<4>(buffer_size),
+                            Return(MockSymbolSupplier::FOUND)));
+  }
+
+  // Populate stack_region with the contents of stack_section. Use
+  // stack_section.start() as the region's starting address.
+  void RegionFromSection() {
+    string contents;
+    ASSERT_TRUE(stack_section.GetContents(&contents));
+    stack_region.Init(stack_section.start().Value(), contents);
+  }
+
+  // Fill RAW_CONTEXT with pseudo-random data, for round-trip checking.
+  void BrandContext(MDRawContextMIPS* raw_context) {
+    uint8_t x = 173;
+    for (size_t i = 0; i < sizeof(*raw_context); ++i)
+      reinterpret_cast<uint8_t*>(raw_context)[i] = (x += 17);
+  }
+
+  SystemInfo system_info;
+  MDRawContextMIPS raw_context;
+  Section stack_section;
+  MockMemoryRegion stack_region;
+  MockCodeModule module1;
+  MockCodeModule module2;
+  MockCodeModules modules;
+  MockSymbolSupplier supplier;
+  BasicSourceLineResolver resolver;
+  CallStack call_stack;
+  const vector<StackFrame*>* frames;
+};
+
+class SanityCheck: public StackwalkerMIPSFixture, public Test { };
+
+TEST_F(SanityCheck, NoResolver) {
+  stack_section.start() = 0x80000000;
+  stack_section.D32(0).D32(0x0);
+  RegionFromSection();
+  raw_context.epc = 0x00400020;
+  raw_context.iregs[MD_CONTEXT_MIPS_REG_SP] = 0x80000000;
+
+  StackFrameSymbolizer frame_symbolizer(NULL, NULL);
+  StackwalkerMIPS walker(&system_info, &raw_context, &stack_region, &modules,
+                        &frame_symbolizer);
+  // This should succeed, even without a resolver or supplier.
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(1U, modules_without_symbols.size());
+  ASSERT_EQ("module1", modules_without_symbols[0]->debug_file());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+  ASSERT_EQ(1U, frames->size());
+  StackFrameMIPS* frame = static_cast<StackFrameMIPS*>(frames->at(0));
+  // Check that the values from the original raw context made it
+  // through to the context in the stack frame.
+  EXPECT_EQ(0, memcmp(&raw_context, &frame->context, sizeof(raw_context)));
+}
+
+class GetContextFrame: public StackwalkerMIPSFixture, public Test { };
+
+TEST_F(GetContextFrame, Simple) {
+  stack_section.start() = 0x80000000;
+  stack_section.D32(0).D32(0x0);
+  RegionFromSection();
+  raw_context.epc = 0x00400020;
+  raw_context.iregs[MD_CONTEXT_MIPS_REG_SP] = 0x80000000;
+
+  StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+  StackwalkerMIPS walker(&system_info, &raw_context, &stack_region, &modules,
+                         &frame_symbolizer);
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(1U, modules_without_symbols.size());
+  ASSERT_EQ("module1", modules_without_symbols[0]->debug_file());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+  StackFrameMIPS* frame = static_cast<StackFrameMIPS*>(frames->at(0));
+  // Check that the values from the original raw context made it
+  // through to the context in the stack frame.
+  EXPECT_EQ(0, memcmp(&raw_context, &frame->context, sizeof(raw_context)));
+}
+
+// The stackwalker should be able to produce the context frame even
+// without stack memory present.
+TEST_F(GetContextFrame, NoStackMemory) {
+  raw_context.epc = 0x00400020;
+  raw_context.iregs[MD_CONTEXT_MIPS_REG_SP] = 0x80000000;
+
+  StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+  StackwalkerMIPS walker(&system_info, &raw_context, NULL, &modules,
+                         &frame_symbolizer);
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(1U, modules_without_symbols.size());
+  ASSERT_EQ("module1", modules_without_symbols[0]->debug_file());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+  StackFrameMIPS* frame = static_cast<StackFrameMIPS*>(frames->at(0));
+  // Check that the values from the original raw context made it
+  // through to the context in the stack frame.
+  EXPECT_EQ(0, memcmp(&raw_context, &frame->context, sizeof(raw_context)));
+}
+
+class GetCallerFrame: public StackwalkerMIPSFixture, public Test { };
+
+TEST_F(GetCallerFrame, ScanWithoutSymbols) {
+  // When the stack walker resorts to scanning the stack,
+  // only addresses located within loaded modules are
+  // considered valid return addresses.
+  // Force scanning through three frames to ensure that the
+  // stack pointer is set properly in scan-recovered frames.
+  stack_section.start() = 0x80000000;
+  uint32_t return_address1 = 0x00400100;
+  uint32_t return_address2 = 0x00400900;
+  Label frame1_sp, frame2_sp;
+  stack_section
+    // frame 0
+    .Append(16, 0)                      // space
+
+    .D32(0x00490000)                    // junk that's not
+    .D32(0x00600000)                    // a return address
+
+    .D32(frame1_sp)                     // stack pointer
+    .D32(return_address1)               // actual return address
+    // frame 1
+    .Mark(&frame1_sp)
+    .Append(16, 0)                      // space
+
+    .D32(0xF0000000)                    // more junk
+    .D32(0x0000000D)
+
+    .D32(frame2_sp)                     // stack pointer
+    .D32(return_address2)               // actual return address
+    // frame 2
+    .Mark(&frame2_sp)
+    .Append(32, 0);                     // end of stack
+  RegionFromSection();
+
+  raw_context.epc = 0x00405510;
+  raw_context.iregs[MD_CONTEXT_MIPS_REG_SP] = stack_section.start().Value();
+  raw_context.iregs[MD_CONTEXT_MIPS_REG_RA] = return_address1;
+
+  StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+  StackwalkerMIPS walker(&system_info, &raw_context, &stack_region, &modules,
+                         &frame_symbolizer);
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(1U, modules_without_symbols.size());
+  ASSERT_EQ("module1", modules_without_symbols[0]->debug_file());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+  ASSERT_EQ(3U, frames->size());
+
+  StackFrameMIPS* frame0 = static_cast<StackFrameMIPS*>(frames->at(0));
+  EXPECT_EQ(StackFrame::FRAME_TRUST_CONTEXT, frame0->trust);
+  ASSERT_EQ(StackFrameMIPS::CONTEXT_VALID_ALL, frame0->context_validity);
+  EXPECT_EQ(0, memcmp(&raw_context, &frame0->context, sizeof(raw_context)));
+
+  StackFrameMIPS* frame1 = static_cast<StackFrameMIPS*>(frames->at(1));
+  EXPECT_EQ(StackFrame::FRAME_TRUST_SCAN, frame1->trust);
+  ASSERT_EQ((StackFrameMIPS::CONTEXT_VALID_PC |
+             StackFrameMIPS::CONTEXT_VALID_SP |
+             StackFrameMIPS::CONTEXT_VALID_FP |
+             StackFrameMIPS::CONTEXT_VALID_RA),
+            frame1->context_validity);
+  EXPECT_EQ(return_address1 - 2 * sizeof(return_address1), frame1->context.epc);
+  EXPECT_EQ(frame1_sp.Value(), frame1->context.iregs[MD_CONTEXT_MIPS_REG_SP]);
+
+  StackFrameMIPS* frame2 = static_cast<StackFrameMIPS*>(frames->at(2));
+  EXPECT_EQ(StackFrame::FRAME_TRUST_SCAN, frame2->trust);
+  ASSERT_EQ((StackFrameMIPS::CONTEXT_VALID_PC |
+             StackFrameMIPS::CONTEXT_VALID_SP |
+             StackFrameMIPS::CONTEXT_VALID_FP |
+             StackFrameMIPS::CONTEXT_VALID_RA),
+            frame2->context_validity);
+  EXPECT_EQ(return_address2 - 2 * sizeof(return_address2), frame2->context.epc);
+  EXPECT_EQ(frame2_sp.Value(), frame2->context.iregs[MD_CONTEXT_MIPS_REG_SP]);
+}
+
+TEST_F(GetCallerFrame, ScanWithFunctionSymbols) {
+  // During stack scanning, if a potential return address
+  // is located within a loaded module that has symbols,
+  // it is only considered a valid return address if it
+  // lies within a function's bounds.
+  stack_section.start() = 0x80000000;
+  uint32_t return_address = 0x00500200;
+  Label frame1_sp;
+  stack_section
+    // frame 0
+    .Append(16, 0)                      // space
+
+    .D32(0x00490000)                    // junk that's not
+    .D32(0x00600000)                    // a return address
+    
+    .D32(0x00401000)                    // a couple of plausible addresses
+    .D32(0x0050F000)                    // that are not within functions
+
+    .D32(frame1_sp)                     // stack pointer
+    .D32(return_address)                // actual return address
+    // frame 1
+    .Mark(&frame1_sp)
+    .Append(32, 0);                     // end of stack
+  RegionFromSection();
+
+  raw_context.epc = 0x00400200;
+  raw_context.iregs[MD_CONTEXT_MIPS_REG_SP] = stack_section.start().Value();
+  raw_context.iregs[MD_CONTEXT_MIPS_REG_RA] = return_address;
+
+  SetModuleSymbols(&module1,
+                   // The youngest frame's function.
+                   "FUNC 100 400 10 monotreme\n");
+  SetModuleSymbols(&module2,
+                   // The calling frame's function.
+                   "FUNC 100 400 10 marsupial\n");
+
+  StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+  StackwalkerMIPS walker(&system_info, &raw_context, &stack_region, &modules,
+                         &frame_symbolizer);
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(0U, modules_without_symbols.size());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+  ASSERT_EQ(2U, frames->size());
+
+  StackFrameMIPS* frame0 = static_cast<StackFrameMIPS*>(frames->at(0));
+  EXPECT_EQ(StackFrame::FRAME_TRUST_CONTEXT, frame0->trust);
+  ASSERT_EQ(StackFrameMIPS::CONTEXT_VALID_ALL, frame0->context_validity);
+  EXPECT_EQ(0, memcmp(&raw_context, &frame0->context, sizeof(raw_context)));
+  EXPECT_EQ("monotreme", frame0->function_name);
+  EXPECT_EQ(0x00400100U, frame0->function_base);
+
+  StackFrameMIPS* frame1 = static_cast<StackFrameMIPS*>(frames->at(1));
+  EXPECT_EQ(StackFrame::FRAME_TRUST_SCAN, frame1->trust);
+  ASSERT_EQ((StackFrameMIPS::CONTEXT_VALID_PC |
+             StackFrameMIPS::CONTEXT_VALID_SP |
+             StackFrameMIPS::CONTEXT_VALID_FP |
+             StackFrameMIPS::CONTEXT_VALID_RA),
+            frame1->context_validity);
+  EXPECT_EQ(return_address - 2 * sizeof(return_address), frame1->context.epc);
+  EXPECT_EQ(frame1_sp.Value(), frame1->context.iregs[MD_CONTEXT_MIPS_REG_SP]);
+  EXPECT_EQ("marsupial", frame1->function_name);
+  EXPECT_EQ(0x00500100U, frame1->function_base);
+}
+
+TEST_F(GetCallerFrame, CheckStackFrameSizeLimit) {
+  // If the stackwalker resorts to stack scanning, it will scan only
+  // 1024 bytes of stack which correspondes to maximum size of stack frame.
+  stack_section.start() = 0x80000000;
+  uint32_t return_address1 = 0x00500100;
+  uint32_t return_address2 = 0x00500900;
+  Label frame1_sp, frame2_sp;
+  stack_section
+    // frame 0
+    .Append(32, 0)                      // space
+
+    .D32(0x00490000)                    // junk that's not
+    .D32(0x00600000)                    // a return address
+
+    .Append(96, 0)                      // more space
+
+    .D32(frame1_sp)                     // stack pointer
+    .D32(return_address1)               // actual return address
+    // frame 1
+    .Mark(&frame1_sp)
+    .Append(128 * 4, 0)                 // space
+
+    .D32(0x00F00000)                    // more junk
+    .D32(0x0000000D)
+
+    .Append(128 * 4, 0)                 // more space
+
+    .D32(frame2_sp)                     // stack pointer
+    .D32(return_address2)               // actual return address
+                                        // (won't be found)
+    // frame 2
+    .Mark(&frame2_sp)
+    .Append(32, 0);                     // end of stack
+  RegionFromSection();
+
+  raw_context.epc = 0x00405510;
+  raw_context.iregs[MD_CONTEXT_MIPS_REG_SP] = stack_section.start().Value();
+  raw_context.iregs[MD_CONTEXT_MIPS_REG_RA] = return_address1;
+
+  StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+  StackwalkerMIPS walker(&system_info, &raw_context, &stack_region, &modules,
+                         &frame_symbolizer);
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(2U, modules_without_symbols.size());
+  ASSERT_EQ("module1", modules_without_symbols[0]->debug_file());
+  ASSERT_EQ("module2", modules_without_symbols[1]->debug_file());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+  ASSERT_EQ(2U, frames->size());
+
+  StackFrameMIPS* frame0 = static_cast<StackFrameMIPS*>(frames->at(0));
+  EXPECT_EQ(StackFrame::FRAME_TRUST_CONTEXT, frame0->trust);
+  ASSERT_EQ(StackFrameMIPS::CONTEXT_VALID_ALL, frame0->context_validity);
+  EXPECT_EQ(0, memcmp(&raw_context, &frame0->context, sizeof(raw_context)));
+
+  StackFrameMIPS* frame1 = static_cast<StackFrameMIPS*>(frames->at(1));
+  EXPECT_EQ(StackFrame::FRAME_TRUST_SCAN, frame1->trust);
+  ASSERT_EQ((StackFrameMIPS::CONTEXT_VALID_PC |
+             StackFrameMIPS::CONTEXT_VALID_SP |
+             StackFrameMIPS::CONTEXT_VALID_FP |
+             StackFrameMIPS::CONTEXT_VALID_RA),
+            frame1->context_validity);
+  EXPECT_EQ(return_address1 - 2 * sizeof(return_address1), frame1->context.epc);
+  EXPECT_EQ(frame1_sp.Value(), frame1->context.iregs[MD_CONTEXT_MIPS_REG_SP]);
+}
+
+// Test that set_max_frames_scanned prevents using stack scanning
+// to find caller frames.
+TEST_F(GetCallerFrame, ScanningNotAllowed) {
+  // When the stack walker resorts to scanning the stack,
+  // only fixed number of frames are allowed to be scanned out from stack
+  stack_section.start() = 0x80000000;
+  uint32_t return_address1 = 0x00500100;
+  uint32_t return_address2 = 0x00500900;
+  Label frame1_sp, frame2_sp;
+  stack_section
+    // frame 0
+    .Append(32, 0)                      // space
+
+    .D32(0x00490000)                    // junk that's not
+    .D32(0x00600000)                    // a return address
+
+    .Append(96, 0)                      // more space
+
+    .D32(frame1_sp)                     // stack pointer
+    .D32(return_address1)               // actual return address
+    // frame 1
+    .Mark(&frame1_sp)
+    .Append(128 * 4, 0)                 // space
+
+    .D32(0x00F00000)                    // more junk
+    .D32(0x0000000D)
+
+    .Append(128 * 4, 0)                 // more space
+
+    .D32(frame2_sp)                     // stack pointer
+    .D32(return_address2)               // actual return address
+                                        // (won't be found)
+    // frame 2
+    .Mark(&frame2_sp)
+    .Append(32, 0);                     // end of stack
+  RegionFromSection();
+
+  raw_context.epc = 0x00405510;
+  raw_context.iregs[MD_CONTEXT_MIPS_REG_SP] = stack_section.start().Value();
+  raw_context.iregs[MD_CONTEXT_MIPS_REG_RA] = return_address1;
+
+  StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+  StackwalkerMIPS walker(&system_info, &raw_context, &stack_region, &modules,
+                         &frame_symbolizer);
+  Stackwalker::set_max_frames_scanned(0);
+                         
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(1U, modules_without_symbols.size());
+  ASSERT_EQ("module1", modules_without_symbols[0]->debug_file());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+  ASSERT_EQ(1U, frames->size());
+
+  StackFrameMIPS* frame0 = static_cast<StackFrameMIPS*>(frames->at(0));
+  EXPECT_EQ(StackFrame::FRAME_TRUST_CONTEXT, frame0->trust);
+  ASSERT_EQ(StackFrameMIPS::CONTEXT_VALID_ALL, frame0->context_validity);
+  EXPECT_EQ(0, memcmp(&raw_context, &frame0->context, sizeof(raw_context)));
+}
+
+struct CFIFixture: public StackwalkerMIPSFixture {
+  CFIFixture() {
+    // Provide some STACK CFI records;
+    SetModuleSymbols(&module1,
+                     // The youngest frame's function.
+                     "FUNC 4000 1000 0 enchiridion\n"
+                     // Initially, nothing has been pushed on the stack,
+                     // and the return address is still in the $ra register.
+                     "STACK CFI INIT 4000 1000 .cfa: $sp 0 + .ra: $ra\n"
+                     // Move stack pointer.
+                     "STACK CFI 4004 .cfa: $sp 32 +\n"
+                     // store $fp and ra
+                     "STACK CFI 4008 $fp: .cfa -8 + ^ .ra: .cfa -4 + ^\n"
+                     // restore $fp
+                     "STACK CFI 400c .cfa: $fp 32 +\n"
+                     // restore $sp
+                     "STACK CFI 4018 .cfa: $sp 32 +\n"
+
+                     "STACK CFI 4020 $fp: $fp .cfa: $sp 0 + .ra: .ra\n"
+
+                     // The calling function.
+                     "FUNC 5000 1000 0 epictetus\n"
+                     // Initially, nothing has been pushed on the stack,
+                     // and the return address is still in the $ra register.
+                     "STACK CFI INIT 5000 1000 .cfa: $sp .ra: $ra\n"
+                     // Mark it as end of stack.
+                     "STACK CFI INIT 5000 8 .cfa: $sp 0 + .ra: $ra\n"
+
+                     // A function whose CFI makes the stack pointer
+                     // go backwards.
+                     "FUNC 6000 1000 20 palinal\n"
+                     "STACK CFI INIT 6000 1000 .cfa: $sp 4 - .ra: $ra\n"
+
+                     // A function with CFI expressions that can't be
+                     // evaluated.
+                     "FUNC 7000 1000 20 rhetorical\n"
+                     "STACK CFI INIT 7000 1000 .cfa: moot .ra: ambiguous\n"
+                   );
+
+    // Provide some distinctive values for the caller's registers.
+    expected.epc = 0x00405508;
+    expected.iregs[MD_CONTEXT_MIPS_REG_S0] = 0x0;
+    expected.iregs[MD_CONTEXT_MIPS_REG_S1] = 0x1;
+    expected.iregs[MD_CONTEXT_MIPS_REG_S2] = 0x2;
+    expected.iregs[MD_CONTEXT_MIPS_REG_S3] = 0x3;
+    expected.iregs[MD_CONTEXT_MIPS_REG_S4] = 0x4;
+    expected.iregs[MD_CONTEXT_MIPS_REG_S5] = 0x5;
+    expected.iregs[MD_CONTEXT_MIPS_REG_S6] = 0x6;
+    expected.iregs[MD_CONTEXT_MIPS_REG_S7] = 0x7;
+    expected.iregs[MD_CONTEXT_MIPS_REG_SP] = 0x80000000;
+    expected.iregs[MD_CONTEXT_MIPS_REG_FP] = 0x80000000;
+    expected.iregs[MD_CONTEXT_MIPS_REG_RA] = 0x00405510;
+
+    // Expect CFI to recover all callee-save registers. Since CFI is the
+    // only stack frame construction technique we have, aside from the
+    // context frame itself, there's no way for us to have a set of valid
+    // registers smaller than this.
+    expected_validity = (StackFrameMIPS::CONTEXT_VALID_PC |
+                         StackFrameMIPS::CONTEXT_VALID_S0 |
+                         StackFrameMIPS::CONTEXT_VALID_S1 |
+                         StackFrameMIPS::CONTEXT_VALID_S2 |
+                         StackFrameMIPS::CONTEXT_VALID_S3 |
+                         StackFrameMIPS::CONTEXT_VALID_S4 |
+                         StackFrameMIPS::CONTEXT_VALID_S5 |
+                         StackFrameMIPS::CONTEXT_VALID_S6 |
+                         StackFrameMIPS::CONTEXT_VALID_S7 |
+                         StackFrameMIPS::CONTEXT_VALID_SP |
+                         StackFrameMIPS::CONTEXT_VALID_FP |
+                         StackFrameMIPS::CONTEXT_VALID_RA);
+
+    // By default, context frames provide all registers, as normal.
+    context_frame_validity = StackFrameMIPS::CONTEXT_VALID_ALL;
+
+    // By default, registers are unchanged.
+    raw_context = expected;
+  }
+
+  // Walk the stack, using stack_section as the contents of the stack
+  // and raw_context as the current register values. (Set the stack
+  // pointer to the stack's starting address.) Expect two stack
+  // frames; in the older frame, expect the callee-saves registers to
+  // have values matching those in 'expected'.
+  void CheckWalk() {
+    RegionFromSection();
+    raw_context.iregs[MD_CONTEXT_MIPS_REG_SP] = stack_section.start().Value();
+
+    StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+    StackwalkerMIPS walker(&system_info, &raw_context, &stack_region,
+                           &modules, &frame_symbolizer);
+    vector<const CodeModule*> modules_without_symbols;
+    vector<const CodeModule*> modules_with_corrupt_symbols;
+    ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                            &modules_with_corrupt_symbols));
+    ASSERT_EQ(0U, modules_without_symbols.size());
+    ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+    frames = call_stack.frames();
+    ASSERT_EQ(2U, frames->size());
+
+    StackFrameMIPS* frame0 = static_cast<StackFrameMIPS*>(frames->at(0));
+    EXPECT_EQ(StackFrame::FRAME_TRUST_CONTEXT, frame0->trust);
+    ASSERT_EQ(StackFrameMIPS::CONTEXT_VALID_ALL, frame0->context_validity);
+    EXPECT_EQ("enchiridion", frame0->function_name);
+    EXPECT_EQ(0x00404000U, frame0->function_base);
+
+    StackFrameMIPS* frame1 = static_cast<StackFrameMIPS*>(frames->at(1));
+    EXPECT_EQ(StackFrame::FRAME_TRUST_CFI, frame1->trust);
+    ASSERT_EQ(expected_validity, frame1->context_validity);
+    EXPECT_EQ(expected.iregs[MD_CONTEXT_MIPS_REG_S0],
+              frame1->context.iregs[MD_CONTEXT_MIPS_REG_S0]);
+    EXPECT_EQ(expected.iregs[MD_CONTEXT_MIPS_REG_S1],
+              frame1->context.iregs[MD_CONTEXT_MIPS_REG_S1]);
+    EXPECT_EQ(expected.iregs[MD_CONTEXT_MIPS_REG_S2],
+              frame1->context.iregs[MD_CONTEXT_MIPS_REG_S2]);
+    EXPECT_EQ(expected.iregs[MD_CONTEXT_MIPS_REG_S3],
+              frame1->context.iregs[MD_CONTEXT_MIPS_REG_S3]);
+    EXPECT_EQ(expected.iregs[MD_CONTEXT_MIPS_REG_S4],
+              frame1->context.iregs[MD_CONTEXT_MIPS_REG_S4]);
+    EXPECT_EQ(expected.iregs[MD_CONTEXT_MIPS_REG_S5],
+              frame1->context.iregs[MD_CONTEXT_MIPS_REG_S5]);
+    EXPECT_EQ(expected.iregs[MD_CONTEXT_MIPS_REG_S6],
+              frame1->context.iregs[MD_CONTEXT_MIPS_REG_S6]);
+    EXPECT_EQ(expected.iregs[MD_CONTEXT_MIPS_REG_S7],
+              frame1->context.iregs[MD_CONTEXT_MIPS_REG_S7]);
+    EXPECT_EQ(expected.iregs[MD_CONTEXT_MIPS_REG_FP],
+              frame1->context.iregs[MD_CONTEXT_MIPS_REG_FP]);
+    EXPECT_EQ(expected.iregs[MD_CONTEXT_MIPS_REG_RA],
+              frame1->context.iregs[MD_CONTEXT_MIPS_REG_RA]);
+    EXPECT_EQ(expected.iregs[MD_CONTEXT_MIPS_REG_SP],
+              frame1->context.iregs[MD_CONTEXT_MIPS_REG_SP]);
+    EXPECT_EQ(expected.epc, frame1->context.epc);
+    EXPECT_EQ(expected.epc, frame1->instruction);
+    EXPECT_EQ("epictetus", frame1->function_name);
+    EXPECT_EQ(0x00405000U, frame1->function_base);    
+  }
+
+  // The values we expect to find for the caller's registers.
+  MDRawContextMIPS expected;
+
+  // The validity mask for expected.
+  int expected_validity;
+
+  // The validity mask to impose on the context frame.
+  int context_frame_validity;
+};
+
+class CFI: public CFIFixture, public Test { };
+
+// TODO(gordanac): add CFI tests
+
+TEST_F(CFI, At4004) {
+  Label frame1_sp = expected.iregs[MD_CONTEXT_MIPS_REG_SP];
+  stack_section
+    // frame0
+    .Append(24, 0)               // space
+    .D32(frame1_sp)              // stack pointer
+    .D32(0x00405510)             // return address
+    .Mark(&frame1_sp);           // This effectively sets stack_section.start().
+  raw_context.epc = 0x00404004;
+  CheckWalk();
+}
+
+// Check that we reject rules that would cause the stack pointer to
+// move in the wrong direction.
+TEST_F(CFI, RejectBackwards) {
+  raw_context.epc = 0x40005000;
+  raw_context.iregs[MD_CONTEXT_MIPS_REG_SP] = 0x80000000;
+  raw_context.iregs[MD_CONTEXT_MIPS_REG_RA] = 0x00405510;
+  
+  StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+  StackwalkerMIPS walker(&system_info, &raw_context, &stack_region, &modules,
+                         &frame_symbolizer);
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(0U, modules_without_symbols.size());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+  ASSERT_EQ(1U, frames->size());
+}
+
+// Check that we reject rules whose expressions' evaluation fails.
+TEST_F(CFI, RejectBadExpressions) {
+  raw_context.epc = 0x00407000;
+  raw_context.iregs[MD_CONTEXT_MIPS_REG_SP] = 0x80000000;
+  raw_context.iregs[MD_CONTEXT_MIPS_REG_RA] = 0x00405510;
+  
+  StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+  StackwalkerMIPS walker(&system_info, &raw_context, &stack_region, &modules,
+                         &frame_symbolizer);
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(0U, modules_without_symbols.size());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+  ASSERT_EQ(1U, frames->size());
+}
diff --git a/google-breakpad/src/processor/stackwalker_ppc.cc b/google-breakpad/src/processor/stackwalker_ppc.cc
new file mode 100644
index 0000000..7e20884
--- /dev/null
+++ b/google-breakpad/src/processor/stackwalker_ppc.cc
@@ -0,0 +1,146 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// stackwalker_ppc.cc: ppc-specific stackwalker.
+//
+// See stackwalker_ppc.h for documentation.
+//
+// Author: Mark Mentovai
+
+
+#include "processor/stackwalker_ppc.h"
+#include "google_breakpad/processor/call_stack.h"
+#include "google_breakpad/processor/memory_region.h"
+#include "google_breakpad/processor/stack_frame_cpu.h"
+#include "processor/logging.h"
+
+namespace google_breakpad {
+
+
+StackwalkerPPC::StackwalkerPPC(const SystemInfo* system_info,
+                               const MDRawContextPPC* context,
+                               MemoryRegion* memory,
+                               const CodeModules* modules,
+                               StackFrameSymbolizer* resolver_helper)
+    : Stackwalker(system_info, memory, modules, resolver_helper),
+      context_(context) {
+  if (memory_ && memory_->GetBase() + memory_->GetSize() - 1 > 0xffffffff) {
+    // This implementation only covers 32-bit ppc CPUs.  The limits of the
+    // supplied stack are invalid.  Mark memory_ = NULL, which will cause
+    // stackwalking to fail.
+    BPLOG(ERROR) << "Memory out of range for stackwalking: " <<
+                    HexString(memory_->GetBase()) << "+" <<
+                    HexString(memory_->GetSize());
+    memory_ = NULL;
+  }
+}
+
+
+StackFrame* StackwalkerPPC::GetContextFrame() {
+  if (!context_) {
+    BPLOG(ERROR) << "Can't get context frame without context";
+    return NULL;
+  }
+
+  StackFramePPC* frame = new StackFramePPC();
+
+  // The instruction pointer is stored directly in a register, so pull it
+  // straight out of the CPU context structure.
+  frame->context = *context_;
+  frame->context_validity = StackFramePPC::CONTEXT_VALID_ALL;
+  frame->trust = StackFrame::FRAME_TRUST_CONTEXT;
+  frame->instruction = frame->context.srr0;
+
+  return frame;
+}
+
+
+StackFrame* StackwalkerPPC::GetCallerFrame(const CallStack* stack,
+                                           bool stack_scan_allowed) {
+  if (!memory_ || !stack) {
+    BPLOG(ERROR) << "Can't get caller frame without memory or stack";
+    return NULL;
+  }
+
+  // The instruction pointers for previous frames are saved on the stack.
+  // The typical ppc calling convention is for the called procedure to store
+  // its return address in the calling procedure's stack frame at 8(%r1),
+  // and to allocate its own stack frame by decrementing %r1 (the stack
+  // pointer) and saving the old value of %r1 at 0(%r1).  Because the ppc has
+  // no hardware stack, there is no distinction between the stack pointer and
+  // frame pointer, and what is typically thought of as the frame pointer on
+  // an x86 is usually referred to as the stack pointer on a ppc.
+
+  StackFramePPC* last_frame = static_cast<StackFramePPC*>(
+      stack->frames()->back());
+
+  // A caller frame must reside higher in memory than its callee frames.
+  // Anything else is an error, or an indication that we've reached the
+  // end of the stack.
+  uint32_t stack_pointer;
+  if (!memory_->GetMemoryAtAddress(last_frame->context.gpr[1],
+                                   &stack_pointer) ||
+      stack_pointer <= last_frame->context.gpr[1]) {
+    return NULL;
+  }
+
+  // Mac OS X/Darwin gives 1 as the return address from the bottom-most
+  // frame in a stack (a thread's entry point).  I haven't found any
+  // documentation on this, but 0 or 1 would be bogus return addresses,
+  // so check for them here and return false (end of stack) when they're
+  // hit to avoid having a phantom frame.
+  uint32_t instruction;
+  if (!memory_->GetMemoryAtAddress(stack_pointer + 8, &instruction) ||
+      instruction <= 1) {
+    return NULL;
+  }
+
+  StackFramePPC* frame = new StackFramePPC();
+
+  frame->context = last_frame->context;
+  frame->context.srr0 = instruction;
+  frame->context.gpr[1] = stack_pointer;
+  frame->context_validity = StackFramePPC::CONTEXT_VALID_SRR0 |
+                            StackFramePPC::CONTEXT_VALID_GPR1;
+  frame->trust = StackFrame::FRAME_TRUST_FP;
+
+  // frame->context.srr0 is the return address, which is one instruction
+  // past the branch that caused us to arrive at the callee.  Set
+  // frame_ppc->instruction to four less than that.  Since all ppc
+  // instructions are 4 bytes wide, this is the address of the branch
+  // instruction.  This allows source line information to match up with the
+  // line that contains a function call.  Callers that require the exact
+  // return address value may access the context.srr0 field of StackFramePPC.
+  frame->instruction = frame->context.srr0 - 4;
+
+  return frame;
+}
+
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/processor/stackwalker_ppc.h b/google-breakpad/src/processor/stackwalker_ppc.h
new file mode 100644
index 0000000..012e5c3
--- /dev/null
+++ b/google-breakpad/src/processor/stackwalker_ppc.h
@@ -0,0 +1,79 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// stackwalker_ppc.h: ppc-specific stackwalker.
+//
+// Provides stack frames given ppc register context and a memory region
+// corresponding to a ppc stack.
+//
+// Author: Mark Mentovai
+
+
+#ifndef PROCESSOR_STACKWALKER_PPC_H__
+#define PROCESSOR_STACKWALKER_PPC_H__
+
+
+#include "google_breakpad/common/breakpad_types.h"
+#include "google_breakpad/common/minidump_format.h"
+#include "google_breakpad/processor/stackwalker.h"
+
+namespace google_breakpad {
+
+class CodeModules;
+
+class StackwalkerPPC : public Stackwalker {
+ public:
+  // context is a ppc context object that gives access to ppc-specific
+  // register state corresponding to the innermost called frame to be
+  // included in the stack.  The other arguments are passed directly through
+  // to the base Stackwalker constructor.
+  StackwalkerPPC(const SystemInfo* system_info,
+                 const MDRawContextPPC* context,
+                 MemoryRegion* memory,
+                 const CodeModules* modules,
+                 StackFrameSymbolizer* frame_symbolizer);
+
+ private:
+  // Implementation of Stackwalker, using ppc context (stack pointer in %r1,
+  // saved program counter in %srr0) and stack conventions (saved stack
+  // pointer at 0(%r1), return address at 8(0(%r1)).
+  virtual StackFrame* GetContextFrame();
+  virtual StackFrame* GetCallerFrame(const CallStack* stack,
+                                     bool stack_scan_allowed);
+
+  // Stores the CPU context corresponding to the innermost stack frame to
+  // be returned by GetContextFrame.
+  const MDRawContextPPC* context_;
+};
+
+
+}  // namespace google_breakpad
+
+
+#endif  // PROCESSOR_STACKWALKER_PPC_H__
diff --git a/google-breakpad/src/processor/stackwalker_ppc64.cc b/google-breakpad/src/processor/stackwalker_ppc64.cc
new file mode 100644
index 0000000..51c71fe
--- /dev/null
+++ b/google-breakpad/src/processor/stackwalker_ppc64.cc
@@ -0,0 +1,137 @@
+// Copyright (c) 2013 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// stackwalker_ppc64.cc: ppc64-specific stackwalker.
+//
+// See stackwalker_ppc64.h for documentation.
+
+
+#include "processor/stackwalker_ppc64.h"
+#include "google_breakpad/processor/call_stack.h"
+#include "google_breakpad/processor/memory_region.h"
+#include "google_breakpad/processor/stack_frame_cpu.h"
+#include "processor/logging.h"
+
+#include <stdio.h>
+
+namespace google_breakpad {
+
+
+StackwalkerPPC64::StackwalkerPPC64(const SystemInfo* system_info,
+                                   const MDRawContextPPC64* context,
+                                   MemoryRegion* memory,
+                                   const CodeModules* modules,
+                                   StackFrameSymbolizer* resolver_helper)
+    : Stackwalker(system_info, memory, modules, resolver_helper),
+      context_(context) {
+}
+
+
+StackFrame* StackwalkerPPC64::GetContextFrame() {
+  if (!context_) {
+    BPLOG(ERROR) << "Can't get context frame without context";
+    return NULL;
+  }
+
+  StackFramePPC64* frame = new StackFramePPC64();
+
+  // The instruction pointer is stored directly in a register, so pull it
+  // straight out of the CPU context structure.
+  frame->context = *context_;
+  frame->context_validity = StackFramePPC64::CONTEXT_VALID_ALL;
+  frame->trust = StackFrame::FRAME_TRUST_CONTEXT;
+  frame->instruction = frame->context.srr0;
+
+  return frame;
+}
+
+
+StackFrame* StackwalkerPPC64::GetCallerFrame(const CallStack* stack,
+                                             bool stack_scan_allowed) {
+  if (!memory_ || !stack) {
+    BPLOG(ERROR) << "Can't get caller frame without memory or stack";
+    return NULL;
+  }
+
+  // The instruction pointers for previous frames are saved on the stack.
+  // The typical ppc64 calling convention is for the called procedure to store
+  // its return address in the calling procedure's stack frame at 8(%r1),
+  // and to allocate its own stack frame by decrementing %r1 (the stack
+  // pointer) and saving the old value of %r1 at 0(%r1).  Because the ppc64 has
+  // no hardware stack, there is no distinction between the stack pointer and
+  // frame pointer, and what is typically thought of as the frame pointer on
+  // an x86 is usually referred to as the stack pointer on a ppc64.
+
+  StackFramePPC64* last_frame = static_cast<StackFramePPC64*>(
+      stack->frames()->back());
+
+  // A caller frame must reside higher in memory than its callee frames.
+  // Anything else is an error, or an indication that we've reached the
+  // end of the stack.
+  uint64_t stack_pointer;
+  if (!memory_->GetMemoryAtAddress(last_frame->context.gpr[1],
+                                   &stack_pointer) ||
+      stack_pointer <= last_frame->context.gpr[1]) {
+    return NULL;
+  }
+
+  // Mac OS X/Darwin gives 1 as the return address from the bottom-most
+  // frame in a stack (a thread's entry point).  I haven't found any
+  // documentation on this, but 0 or 1 would be bogus return addresses,
+  // so check for them here and return false (end of stack) when they're
+  // hit to avoid having a phantom frame.
+  uint64_t instruction;
+  if (!memory_->GetMemoryAtAddress(stack_pointer + 16, &instruction) ||
+      instruction <= 1) {
+    return NULL;
+  }
+
+  StackFramePPC64* frame = new StackFramePPC64();
+
+  frame->context = last_frame->context;
+  frame->context.srr0 = instruction;
+  frame->context.gpr[1] = stack_pointer;
+  frame->context_validity = StackFramePPC64::CONTEXT_VALID_SRR0 |
+                            StackFramePPC64::CONTEXT_VALID_GPR1;
+  frame->trust = StackFrame::FRAME_TRUST_FP;
+
+  // frame->context.srr0 is the return address, which is one instruction
+  // past the branch that caused us to arrive at the callee.  Set
+  // frame_ppc64->instruction to eight less than that.  Since all ppc64
+  // instructions are 8 bytes wide, this is the address of the branch
+  // instruction.  This allows source line information to match up with the
+  // line that contains a function call.  Callers that require the exact
+  // return address value may access the context.srr0 field of StackFramePPC64.
+  frame->instruction = frame->context.srr0 - 8;
+
+  return frame;
+}
+
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/processor/stackwalker_ppc64.h b/google-breakpad/src/processor/stackwalker_ppc64.h
new file mode 100644
index 0000000..a406343
--- /dev/null
+++ b/google-breakpad/src/processor/stackwalker_ppc64.h
@@ -0,0 +1,77 @@
+// Copyright (c) 2013 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// stackwalker_ppc64.h: ppc-specific stackwalker.
+//
+// Provides stack frames given ppc64 register context and a memory region
+// corresponding to a ppc64 stack.
+
+
+#ifndef PROCESSOR_STACKWALKER_PPC64_H__
+#define PROCESSOR_STACKWALKER_PPC64_H__
+
+
+#include "google_breakpad/common/breakpad_types.h"
+#include "google_breakpad/common/minidump_format.h"
+#include "google_breakpad/processor/stackwalker.h"
+
+namespace google_breakpad {
+
+class CodeModules;
+
+class StackwalkerPPC64 : public Stackwalker {
+ public:
+  // context is a ppc64 context object that gives access to ppc64-specific
+  // register state corresponding to the innermost called frame to be
+  // included in the stack.  The other arguments are passed directly through
+  // to the base Stackwalker constructor.
+  StackwalkerPPC64(const SystemInfo* system_info,
+                   const MDRawContextPPC64* context,
+                   MemoryRegion* memory,
+                   const CodeModules* modules,
+                   StackFrameSymbolizer* frame_symbolizer);
+
+ private:
+  // Implementation of Stackwalker, using ppc64 context (stack pointer in %r1,
+  // saved program counter in %srr0) and stack conventions (saved stack
+  // pointer at 0(%r1), return address at 8(0(%r1)).
+  virtual StackFrame* GetContextFrame();
+  virtual StackFrame* GetCallerFrame(const CallStack* stack,
+                                     bool stack_scan_allowed);
+
+  // Stores the CPU context corresponding to the innermost stack frame to
+  // be returned by GetContextFrame.
+  const MDRawContextPPC64* context_;
+};
+
+
+}  // namespace google_breakpad
+
+
+#endif  // PROCESSOR_STACKWALKER_PPC64_H__
diff --git a/google-breakpad/src/processor/stackwalker_selftest.cc b/google-breakpad/src/processor/stackwalker_selftest.cc
new file mode 100644
index 0000000..f692d4c
--- /dev/null
+++ b/google-breakpad/src/processor/stackwalker_selftest.cc
@@ -0,0 +1,433 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// stackwalker_selftest.cc: Tests StackwalkerX86 or StackwalkerPPC using the
+// running process' stack as test data, if running on an x86 or ppc and
+// compiled with gcc.  This test is not enabled in the "make check" suite
+// by default, because certain optimizations interfere with its proper
+// operation.  To turn it on, configure with --enable-selftest.
+//
+// Optimizations that cause problems:
+//  - stack frame reuse.  The Recursor function here calls itself with
+//    |return Recursor|.  When the caller's frame is reused, it will cause
+//    CountCallerFrames to correctly return the same number of frames
+//    in both the caller and callee.  This is considered an unexpected
+//    condition in the test, which expects a callee to have one more
+//    caller frame in the stack than its caller.
+//  - frame pointer omission.  Even with a stackwalker that understands
+//    this optimization, the code to harness debug information currently
+//    only exists to retrieve it from minidumps, not the current process.
+//
+// This test can also serve as a developmental and debugging aid if
+// PRINT_STACKS is defined.
+//
+// Author: Mark Mentovai
+
+#include <assert.h>
+
+#include "processor/logging.h"
+
+#if defined(__i386) && !defined(__i386__)
+#define __i386__
+#endif
+#if defined(__sparc) && !defined(__sparc__)
+#define __sparc__
+#endif
+ 
+#if (defined(__SUNPRO_CC) || defined(__GNUC__)) && \
+    (defined(__i386__) || defined(__ppc__) || defined(__sparc__))
+
+
+#include <stdio.h>
+
+#include "common/scoped_ptr.h"
+#include "google_breakpad/common/breakpad_types.h"
+#include "google_breakpad/common/minidump_format.h"
+#include "google_breakpad/processor/basic_source_line_resolver.h"
+#include "google_breakpad/processor/call_stack.h"
+#include "google_breakpad/processor/code_module.h"
+#include "google_breakpad/processor/memory_region.h"
+#include "google_breakpad/processor/stack_frame.h"
+#include "google_breakpad/processor/stack_frame_cpu.h"
+
+using google_breakpad::BasicSourceLineResolver;
+using google_breakpad::CallStack;
+using google_breakpad::CodeModule;
+using google_breakpad::MemoryRegion;
+using google_breakpad::scoped_ptr;
+using google_breakpad::StackFrame;
+using google_breakpad::StackFramePPC;
+using google_breakpad::StackFrameX86;
+using google_breakpad::StackFrameSPARC;
+
+#if defined(__i386__)
+#include "processor/stackwalker_x86.h"
+using google_breakpad::StackwalkerX86;
+#elif defined(__ppc__)
+#include "processor/stackwalker_ppc.h"
+using google_breakpad::StackwalkerPPC;
+#elif defined(__sparc__)
+#include "processor/stackwalker_sparc.h"
+using google_breakpad::StackwalkerSPARC;
+#endif  // __i386__ || __ppc__ || __sparc__
+
+#define RECURSION_DEPTH 100
+
+
+// A simple MemoryRegion subclass that provides direct access to this
+// process' memory space by pointer.
+class SelfMemoryRegion : public MemoryRegion {
+ public:
+  virtual uint64_t GetBase() const { return 0; }
+  virtual uint32_t GetSize() const { return 0xffffffff; }
+
+  bool GetMemoryAtAddress(uint64_t address, uint8_t*  value) const {
+      return GetMemoryAtAddressInternal(address, value); }
+  bool GetMemoryAtAddress(uint64_t address, uint16_t* value) const {
+      return GetMemoryAtAddressInternal(address, value); }
+  bool GetMemoryAtAddress(uint64_t address, uint32_t* value) const {
+      return GetMemoryAtAddressInternal(address, value); }
+  bool GetMemoryAtAddress(uint64_t address, uint64_t* value) const {
+      return GetMemoryAtAddressInternal(address, value); }
+  void Print() const {
+    assert(false);
+  }
+
+ private:
+  template<typename T> bool GetMemoryAtAddressInternal(uint64_t address,
+                                                       T*        value) {
+    // Without knowing what addresses are actually mapped, just assume that
+    // everything low is not mapped.  This helps the stackwalker catch the
+    // end of a stack when it tries to dereference a null or low pointer
+    // in an attempt to find the caller frame.  Other unmapped accesses will
+    // cause the program to crash, but that would properly be a test failure.
+    if (address < 0x100)
+      return false;
+
+    uint8_t* memory = 0;
+    *value = *reinterpret_cast<const T*>(&memory[address]);
+    return true;
+  }
+};
+
+
+#if defined(__GNUC__)
+
+
+#if defined(__i386__)
+
+// GetEBP returns the current value of the %ebp register.  Because it's
+// implemented as a function, %ebp itself contains GetEBP's frame pointer
+// and not the caller's frame pointer.  Dereference %ebp to obtain the
+// caller's frame pointer, which the compiler-generated preamble stored
+// on the stack (provided frame pointers are not being omitted.)  Because
+// this function depends on the compiler-generated preamble, inlining is
+// disabled.
+static uint32_t GetEBP() __attribute__((noinline));
+static uint32_t GetEBP() {
+  uint32_t ebp;
+  __asm__ __volatile__(
+    "movl (%%ebp), %0"
+    : "=a" (ebp)
+  );
+  return ebp;
+}
+
+
+// The caller's %esp is 8 higher than the value of %ebp in this function,
+// assuming that it's not inlined and that the standard prolog is used.
+// The CALL instruction places a 4-byte return address on the stack above
+// the caller's %esp, and this function's prolog will save the caller's %ebp
+// on the stack as well, for another 4 bytes, before storing %esp in %ebp.
+static uint32_t GetESP() __attribute__((noinline));
+static uint32_t GetESP() {
+  uint32_t ebp;
+  __asm__ __volatile__(
+    "movl %%ebp, %0"
+    : "=a" (ebp)
+  );
+  return ebp + 8;
+}
+
+
+// GetEIP returns the instruction pointer identifying the next instruction
+// to execute after GetEIP returns.  It obtains this information from the
+// stack, where it was placed by the call instruction that called GetEIP.
+// This function depends on frame pointers not being omitted.  It is possible
+// to write a pure asm version of this routine that has no compiler-generated
+// preamble and uses %esp instead of %ebp; that would function in the
+// absence of frame pointers.  However, the simpler approach is used here
+// because GetEBP and stackwalking necessarily depends on access to frame
+// pointers.  Because this function depends on a call instruction and the
+// compiler-generated preamble, inlining is disabled.
+static uint32_t GetEIP() __attribute__((noinline));
+static uint32_t GetEIP() {
+  uint32_t eip;
+  __asm__ __volatile__(
+    "movl 4(%%ebp), %0"
+    : "=a" (eip)
+  );
+  return eip;
+}
+
+
+#elif defined(__ppc__)
+
+
+// GetSP returns the current value of the %r1 register, which by convention,
+// is the stack pointer on ppc.  Because it's implemented as a function,
+// %r1 itself contains GetSP's own stack pointer and not the caller's stack
+// pointer.  Dereference %r1 to obtain the caller's stack pointer, which the
+// compiler-generated prolog stored on the stack.  Because this function
+// depends on the compiler-generated prolog, inlining is disabled.
+static uint32_t GetSP() __attribute__((noinline));
+static uint32_t GetSP() {
+  uint32_t sp;
+  __asm__ __volatile__(
+    "lwz %0, 0(r1)"
+    : "=r" (sp)
+  );
+  return sp;
+}
+
+
+// GetPC returns the program counter identifying the next instruction to
+// execute after GetPC returns.  It obtains this information from the
+// link register, where it was placed by the branch instruction that called
+// GetPC.  Because this function depends on the caller's use of a branch
+// instruction, inlining is disabled.
+static uint32_t GetPC() __attribute__((noinline));
+static uint32_t GetPC() {
+  uint32_t lr;
+  __asm__ __volatile__(
+    "mflr %0"
+    : "=r" (lr)
+  );
+  return lr;
+}
+
+
+#elif defined(__sparc__)
+
+
+// GetSP returns the current value of the %sp/%o6/%g_r[14] register, which 
+// by convention, is the stack pointer on sparc.  Because it's implemented
+// as a function, %sp itself contains GetSP's own stack pointer and not 
+// the caller's stack pointer.  Dereference  to obtain the caller's stack 
+// pointer, which the compiler-generated prolog stored on the stack.
+// Because this function depends on the compiler-generated prolog, inlining
+// is disabled.
+static uint32_t GetSP() __attribute__((noinline));
+static uint32_t GetSP() {
+  uint32_t sp;
+  __asm__ __volatile__(
+    "mov %%fp, %0"
+    : "=r" (sp)
+  );
+  return sp;
+}
+
+// GetFP returns the current value of the %fp register.  Because it's
+// implemented as a function, %fp itself contains GetFP's frame pointer
+// and not the caller's frame pointer.  Dereference %fp to obtain the
+// caller's frame pointer, which the compiler-generated preamble stored
+// on the stack (provided frame pointers are not being omitted.)  Because
+// this function depends on the compiler-generated preamble, inlining is
+// disabled.
+static uint32_t GetFP() __attribute__((noinline));
+static uint32_t GetFP() {
+  uint32_t fp;
+  __asm__ __volatile__(
+    "ld [%%fp+56], %0"
+    : "=r" (fp)
+  );
+  return fp;
+}
+
+// GetPC returns the program counter identifying the next instruction to
+// execute after GetPC returns.  It obtains this information from the
+// link register, where it was placed by the branch instruction that called
+// GetPC.  Because this function depends on the caller's use of a branch
+// instruction, inlining is disabled.
+static uint32_t GetPC() __attribute__((noinline));
+static uint32_t GetPC() {
+  uint32_t pc;
+  __asm__ __volatile__(
+    "mov %%i7, %0"
+    : "=r" (pc)
+  );
+  return pc + 8;
+}
+
+#endif  // __i386__ || __ppc__ || __sparc__
+
+#elif defined(__SUNPRO_CC)
+
+#if defined(__i386__)
+extern "C" {
+extern uint32_t GetEIP();
+extern uint32_t GetEBP();
+extern uint32_t GetESP();
+}
+#elif defined(__sparc__)
+extern "C" {
+extern uint32_t GetPC();
+extern uint32_t GetFP();
+extern uint32_t GetSP();
+}
+#endif // __i386__ || __sparc__
+
+#endif // __GNUC__ || __SUNPRO_CC
+
+// CountCallerFrames returns the number of stack frames beneath the function
+// that called CountCallerFrames.  Because this function's return value
+// is dependent on the size of the stack beneath it, inlining is disabled,
+// and any function that calls this should not be inlined either.
+#if defined(__GNUC__)
+static unsigned int CountCallerFrames() __attribute__((noinline));
+#elif defined(__SUNPRO_CC)
+static unsigned int CountCallerFrames();
+#endif
+static unsigned int CountCallerFrames() {
+  SelfMemoryRegion memory;
+  BasicSourceLineResolver resolver;
+
+#if defined(__i386__)
+  MDRawContextX86 context = MDRawContextX86();
+  context.eip = GetEIP();
+  context.ebp = GetEBP();
+  context.esp = GetESP();
+
+  StackwalkerX86 stackwalker = StackwalkerX86(NULL, &context, &memory, NULL,
+                                              NULL, &resolver);
+#elif defined(__ppc__)
+  MDRawContextPPC context = MDRawContextPPC();
+  context.srr0 = GetPC();
+  context.gpr[1] = GetSP();
+
+  StackwalkerPPC stackwalker = StackwalkerPPC(NULL, &context, &memory, NULL,
+                                              NULL, &resolver);
+#elif defined(__sparc__)
+  MDRawContextSPARC context = MDRawContextSPARC();
+  context.pc = GetPC();
+  context.g_r[14] = GetSP();
+  context.g_r[30] = GetFP();
+
+  StackwalkerSPARC stackwalker = StackwalkerSPARC(NULL, &context, &memory,
+                                                  NULL, NULL, &resolver);
+#endif  // __i386__ || __ppc__ || __sparc__
+
+  CallStack stack;
+  vector<const CodeModule*> modules_without_symbols;
+  stackwalker.Walk(&stack, &modules_without_symbols);
+
+#ifdef PRINT_STACKS
+  printf("\n");
+  for (unsigned int frame_index = 0;
+      frame_index < stack.frames()->size();
+      ++frame_index) {
+    StackFrame *frame = stack.frames()->at(frame_index);
+    printf("frame %-3d  instruction = 0x%08" PRIx64,
+           frame_index, frame->instruction);
+#if defined(__i386__)
+    StackFrameX86 *frame_x86 = reinterpret_cast<StackFrameX86*>(frame);
+    printf("  esp = 0x%08x  ebp = 0x%08x\n",
+           frame_x86->context.esp, frame_x86->context.ebp);
+#elif defined(__ppc__)
+    StackFramePPC *frame_ppc = reinterpret_cast<StackFramePPC*>(frame);
+    printf("  gpr[1] = 0x%08x\n", frame_ppc->context.gpr[1]);
+#elif defined(__sparc__)
+    StackFrameSPARC *frame_sparc = reinterpret_cast<StackFrameSPARC*>(frame);
+    printf("  sp = 0x%08x  fp = 0x%08x\n",
+           frame_sparc->context.g_r[14], frame_sparc->context.g_r[30]);
+#endif  // __i386__ || __ppc__ || __sparc__
+  }
+#endif  // PRINT_STACKS
+
+  // Subtract 1 because the caller wants the number of frames beneath
+  // itself.  Because the caller called us, subract two for our frame and its
+  // frame, which are included in stack.size().
+  return stack.frames()->size() - 2;
+}
+
+
+// Recursor verifies that the number stack frames beneath itself is one more
+// than the number of stack frames beneath its parent.  When depth frames
+// have been reached, Recursor stops checking and returns success.  If the
+// frame count check fails at any depth, Recursor will stop and return false.
+// Because this calls CountCallerFrames, inlining is disabled.
+#if defined(__GNUC__)
+static bool Recursor(unsigned int depth, unsigned int parent_callers)
+    __attribute__((noinline));
+#elif defined(__SUNPRO_CC)
+static bool Recursor(unsigned int depth, unsigned int parent_callers);
+#endif
+static bool Recursor(unsigned int depth, unsigned int parent_callers) {
+  unsigned int callers = CountCallerFrames();
+  if (callers != parent_callers + 1)
+    return false;
+
+  if (depth)
+    return Recursor(depth - 1, callers);
+
+  // depth == 0
+  return true;
+}
+
+
+// Because this calls CountCallerFrames, inlining is disabled - but because
+// it's main (and nobody calls it other than the entry point), it wouldn't
+// be inlined anyway.
+#if defined(__GNUC__)
+int main(int argc, char** argv) __attribute__((noinline));
+#elif defined(__SUNPRO_CC)
+int main(int argc, char** argv);
+#endif
+int main(int argc, char** argv) {
+  BPLOG_INIT(&argc, &argv);
+
+  return Recursor(RECURSION_DEPTH, CountCallerFrames()) ? 0 : 1;
+}
+
+
+#else
+// Not i386 or ppc or sparc?  We can only test stacks we know how to walk.
+
+
+int main(int argc, char **argv) {
+  BPLOG_INIT(&argc, &argv);
+
+  // "make check" interprets an exit status of 77 to mean that the test is
+  // not supported.
+  BPLOG(ERROR) << "Selftest not supported here";
+  return 77;
+}
+
+
+#endif  // (__GNUC__ || __SUNPRO_CC) && (__i386__ || __ppc__ || __sparc__)
diff --git a/google-breakpad/src/processor/stackwalker_selftest_sol.s b/google-breakpad/src/processor/stackwalker_selftest_sol.s
new file mode 100644
index 0000000..648b049
--- /dev/null
+++ b/google-breakpad/src/processor/stackwalker_selftest_sol.s
@@ -0,0 +1,111 @@
+/* Copyright (c) 2007, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/* stackwalker_selftest_sol.s
+ * On Solaris, the recommeded compiler is CC, so we can not use gcc inline
+ * asm, use this method instead.
+ *
+ * How to compile: as -P -L -D_ASM -D_STDC -K PIC -o \
+ *                 src/processor/stackwalker_selftest_sol.o \
+ *                 src/processor/stackwalker_selftest_sol.s
+ *
+ * Author: Michael Shang
+ */
+
+#include <sys/asm_linkage.h>
+
+#if defined(__i386)
+
+
+ENTRY(GetEBP) 
+      pushl    %ebp
+      movl     %esp,%ebp
+      subl     $0x00000004,%esp
+      movl     0x00000000(%ebp),%eax
+      movl     %eax,0xfffffffc(%ebp)
+      movl     0xfffffffc(%ebp),%eax
+      leave    
+      ret      
+SET_SIZE(GetEBP)
+
+ENTRY(GetEIP) 
+      pushl    %ebp
+      movl     %esp,%ebp
+      subl     $0x00000004,%esp
+      movl     0x00000004(%ebp),%eax
+      movl     %eax,0xfffffffc(%ebp)
+      movl     0xfffffffc(%ebp),%eax
+      leave    
+      ret      
+SET_SIZE(GetEIP)
+
+ENTRY(GetESP) 
+      pushl    %ebp
+      movl     %esp,%ebp
+      subl     $0x00000004,%esp
+      movl     %ebp,%eax
+      movl     %eax,0xfffffffc(%ebp)
+      movl     0xfffffffc(%ebp),%eax
+      addl     $0x00000008,%eax
+      leave    
+      ret      
+SET_SIZE(GetESP)
+
+
+#elif defined(__sparc)
+
+
+ENTRY(GetPC)
+      save     %sp, -120, %sp
+      mov      %i7, %i4
+      inccc    8, %i4
+      mov      %i4, %i0
+      ret      
+      restore  
+SET_SIZE(GetPC)
+
+ENTRY(GetSP)
+      save     %sp, -120, %sp
+      mov      %fp, %i4
+      mov      %i4, %i0
+      ret      
+      restore  
+SET_SIZE(GetSP)
+
+ENTRY(GetFP)
+      save     %sp, -120, %sp
+      ld       [%fp + 56], %g1
+      mov      %g1, %i0
+      ret      
+      restore  
+SET_SIZE(GetFP)
+
+
+#endif  // __i386 || __sparc
diff --git a/google-breakpad/src/processor/stackwalker_sparc.cc b/google-breakpad/src/processor/stackwalker_sparc.cc
new file mode 100644
index 0000000..ff2ea75
--- /dev/null
+++ b/google-breakpad/src/processor/stackwalker_sparc.cc
@@ -0,0 +1,139 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// stackwalker_sparc.cc: sparc-specific stackwalker.
+//
+// See stackwalker_sparc.h for documentation.
+//
+// Author: Michael Shang
+
+
+#include "google_breakpad/processor/call_stack.h"
+#include "google_breakpad/processor/memory_region.h"
+#include "google_breakpad/processor/stack_frame_cpu.h"
+#include "processor/logging.h"
+#include "processor/stackwalker_sparc.h"
+
+namespace google_breakpad {
+
+
+StackwalkerSPARC::StackwalkerSPARC(const SystemInfo* system_info,
+                                   const MDRawContextSPARC* context,
+                                   MemoryRegion* memory,
+                                   const CodeModules* modules,
+                                   StackFrameSymbolizer* resolver_helper)
+    : Stackwalker(system_info, memory, modules, resolver_helper),
+      context_(context) {
+}
+
+
+StackFrame* StackwalkerSPARC::GetContextFrame() {
+  if (!context_) {
+    BPLOG(ERROR) << "Can't get context frame without context";
+    return NULL;
+  }
+
+  StackFrameSPARC* frame = new StackFrameSPARC();
+
+  // The instruction pointer is stored directly in a register, so pull it
+  // straight out of the CPU context structure.
+  frame->context = *context_;
+  frame->context_validity = StackFrameSPARC::CONTEXT_VALID_ALL;
+  frame->trust = StackFrame::FRAME_TRUST_CONTEXT;
+  frame->instruction = frame->context.pc;
+
+  return frame;
+}
+
+
+StackFrame* StackwalkerSPARC::GetCallerFrame(const CallStack* stack,
+                                             bool stack_scan_allowed) {
+  if (!memory_ || !stack) {
+    BPLOG(ERROR) << "Can't get caller frame without memory or stack";
+    return NULL;
+  }
+
+  StackFrameSPARC* last_frame = static_cast<StackFrameSPARC*>(
+      stack->frames()->back());
+
+  // new: caller
+  // old: callee
+  // %fp, %i6 and g_r[30] is the same, see minidump_format.h
+  // %sp, %o6 and g_r[14] is the same, see minidump_format.h
+  // %sp_new = %fp_old
+  // %fp_new = *(%fp_old + 32 + 32 - 8), where the callee's %i6
+  // %pc_new = *(%fp_old + 32 + 32 - 4) + 8
+  // which is callee's %i7 plus 8
+
+  // A caller frame must reside higher in memory than its callee frames.
+  // Anything else is an error, or an indication that we've reached the
+  // end of the stack.
+  uint64_t stack_pointer = last_frame->context.g_r[30];
+  if (stack_pointer <= last_frame->context.g_r[14]) {
+    return NULL;
+  }
+
+  uint32_t instruction;
+  if (!memory_->GetMemoryAtAddress(stack_pointer + 60,
+                     &instruction) || instruction <= 1) {
+    return NULL;
+  }
+
+  uint32_t stack_base;
+  if (!memory_->GetMemoryAtAddress(stack_pointer + 56,
+                     &stack_base) || stack_base <= 1) {
+    return NULL;
+  }
+
+  StackFrameSPARC* frame = new StackFrameSPARC();
+
+  frame->context = last_frame->context;
+  frame->context.g_r[14] = stack_pointer;
+  frame->context.g_r[30] = stack_base;
+
+  // frame->context.pc is the return address, which is 2 instruction
+  // past the branch that caused us to arrive at the callee, which are
+  // a CALL instruction then a NOP instruction.
+  // frame_ppc->instruction to 8 less than that.  Since all sparc
+  // instructions are 4 bytes wide, this is the address of the branch
+  // instruction.  This allows source line information to match up with the
+  // line that contains a function call.  Callers that require the exact
+  // return address value may access the %i7/g_r[31] field of StackFrameSPARC.
+  frame->context.pc = instruction + 8;
+  frame->instruction = instruction;
+  frame->context_validity = StackFrameSPARC::CONTEXT_VALID_PC |
+                            StackFrameSPARC::CONTEXT_VALID_SP |
+                            StackFrameSPARC::CONTEXT_VALID_FP;
+  frame->trust = StackFrame::FRAME_TRUST_FP;
+
+  return frame;
+}
+
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/processor/stackwalker_sparc.h b/google-breakpad/src/processor/stackwalker_sparc.h
new file mode 100644
index 0000000..e8f2a38
--- /dev/null
+++ b/google-breakpad/src/processor/stackwalker_sparc.h
@@ -0,0 +1,78 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// stackwalker_sparc.h: sparc-specific stackwalker.
+//
+// Provides stack frames given sparc register context and a memory region
+// corresponding to an sparc stack.
+//
+// Author: Michael Shang
+
+
+#ifndef PROCESSOR_STACKWALKER_SPARC_H__
+#define PROCESSOR_STACKWALKER_SPARC_H__
+
+
+#include "google_breakpad/common/breakpad_types.h"
+#include "google_breakpad/common/minidump_format.h"
+#include "google_breakpad/processor/stackwalker.h"
+
+namespace google_breakpad {
+
+class CodeModules;
+
+class StackwalkerSPARC : public Stackwalker {
+ public:
+  // context is a sparc context object that gives access to sparc-specific
+  // register state corresponding to the innermost called frame to be
+  // included in the stack.  The other arguments are passed directly through
+  // to the base Stackwalker constructor.
+  StackwalkerSPARC(const SystemInfo* system_info,
+                   const MDRawContextSPARC* context,
+                   MemoryRegion* memory,
+                   const CodeModules* modules,
+                   StackFrameSymbolizer* frame_symbolizer);
+
+ private:
+  // Implementation of Stackwalker, using sparc context (%fp, %sp, %pc) and
+  // stack conventions
+  virtual StackFrame* GetContextFrame();
+  virtual StackFrame* GetCallerFrame(const CallStack* stack,
+                                     bool stack_scan_allowed);
+
+  // Stores the CPU context corresponding to the innermost stack frame to
+  // be returned by GetContextFrame.
+  const MDRawContextSPARC* context_;
+};
+
+
+}  // namespace google_breakpad
+
+
+#endif  // PROCESSOR_STACKWALKER_SPARC_H__
diff --git a/google-breakpad/src/processor/stackwalker_unittest_utils.h b/google-breakpad/src/processor/stackwalker_unittest_utils.h
new file mode 100644
index 0000000..73ceb19
--- /dev/null
+++ b/google-breakpad/src/processor/stackwalker_unittest_utils.h
@@ -0,0 +1,211 @@
+// -*- mode: C++ -*-
+
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// Mock classes for writing stackwalker tests, shared amongst architectures.
+
+#ifndef PROCESSOR_STACKWALKER_UNITTEST_UTILS_H_
+#define PROCESSOR_STACKWALKER_UNITTEST_UTILS_H_
+
+#include <assert.h>
+#include <stdlib.h>
+#include <string>
+#include <vector>
+
+#include "common/using_std_string.h"
+#include "google_breakpad/common/breakpad_types.h"
+#include "google_breakpad/processor/code_module.h"
+#include "google_breakpad/processor/code_modules.h"
+#include "google_breakpad/processor/memory_region.h"
+#include "google_breakpad/processor/symbol_supplier.h"
+#include "google_breakpad/processor/system_info.h"
+
+class MockMemoryRegion: public google_breakpad::MemoryRegion {
+ public:
+  MockMemoryRegion(): base_address_(0) { }
+
+  // Set this region's address and contents. If we have placed an
+  // instance of this class in a test fixture class, individual tests
+  // can use this to provide the region's contents.
+  void Init(uint64_t base_address, const string &contents) {
+    base_address_ = base_address;
+    contents_ = contents;
+  }
+
+  uint64_t GetBase() const { return base_address_; }
+  uint32_t GetSize() const { return contents_.size(); }
+
+  bool GetMemoryAtAddress(uint64_t address, uint8_t  *value) const {
+    return GetMemoryLittleEndian(address, value);
+  }
+  bool GetMemoryAtAddress(uint64_t address, uint16_t *value) const {
+    return GetMemoryLittleEndian(address, value);
+  }
+  bool GetMemoryAtAddress(uint64_t address, uint32_t *value) const {
+    return GetMemoryLittleEndian(address, value);
+  }
+  bool GetMemoryAtAddress(uint64_t address, uint64_t *value) const {
+    return GetMemoryLittleEndian(address, value);
+  }
+  void Print() const {
+    assert(false);
+  }
+
+ private:
+  // Fetch a little-endian value from ADDRESS in contents_ whose size
+  // is BYTES, and store it in *VALUE. Return true on success.
+  template<typename ValueType>
+  bool GetMemoryLittleEndian(uint64_t address, ValueType *value) const {
+    if (address < base_address_ ||
+        address - base_address_ + sizeof(ValueType) > contents_.size())
+      return false;
+    ValueType v = 0;
+    int start = address - base_address_;
+    // The loop condition is odd, but it's correct for size_t.
+    for (size_t i = sizeof(ValueType) - 1; i < sizeof(ValueType); i--)
+      v = (v << 8) | static_cast<unsigned char>(contents_[start + i]);
+    *value = v;
+    return true;
+  }
+
+  uint64_t base_address_;
+  string contents_;
+};
+
+class MockCodeModule: public google_breakpad::CodeModule {
+ public:
+  MockCodeModule(uint64_t base_address, uint64_t size,
+                 const string &code_file, const string &version)
+      : base_address_(base_address), size_(size), code_file_(code_file) { }
+
+  uint64_t base_address()       const { return base_address_; }
+  uint64_t size()               const { return size_; }
+  string code_file()        const { return code_file_; }
+  string code_identifier()  const { return code_file_; }
+  string debug_file()       const { return code_file_; }
+  string debug_identifier() const { return code_file_; }
+  string version()          const { return version_; }
+  const google_breakpad::CodeModule *Copy() const {
+    abort(); // Tests won't use this.
+  }
+
+ private:
+  uint64_t base_address_;
+  uint64_t size_;
+  string code_file_;
+  string version_;
+};
+
+class MockCodeModules: public google_breakpad::CodeModules {
+ public:  
+  typedef google_breakpad::CodeModule CodeModule;
+  typedef google_breakpad::CodeModules CodeModules;
+
+  void Add(const MockCodeModule *module) { 
+    modules_.push_back(module);
+  }
+
+  unsigned int module_count() const { return modules_.size(); }
+
+  const CodeModule *GetModuleForAddress(uint64_t address) const {
+    for (ModuleVector::const_iterator i = modules_.begin();
+         i != modules_.end(); i++) {
+      const MockCodeModule *module = *i;
+      if (module->base_address() <= address &&
+          address - module->base_address() < module->size())
+        return module;
+    }
+    return NULL;
+  };
+
+  const CodeModule *GetMainModule() const { return modules_[0]; }
+
+  const CodeModule *GetModuleAtSequence(unsigned int sequence) const {
+    return modules_.at(sequence);
+  }
+
+  const CodeModule *GetModuleAtIndex(unsigned int index) const {
+    return modules_.at(index);
+  }
+
+  const CodeModules *Copy() const { abort(); } // Tests won't use this.
+
+ private:  
+  typedef std::vector<const MockCodeModule *> ModuleVector;
+  ModuleVector modules_;
+};
+
+class MockSymbolSupplier: public google_breakpad::SymbolSupplier {
+ public:
+  typedef google_breakpad::CodeModule CodeModule;
+  typedef google_breakpad::SystemInfo SystemInfo;
+  MOCK_METHOD3(GetSymbolFile, SymbolResult(const CodeModule *module,
+                                           const SystemInfo *system_info,
+                                           string *symbol_file));
+  MOCK_METHOD4(GetSymbolFile, SymbolResult(const CodeModule *module,
+                                           const SystemInfo *system_info,
+                                           string *symbol_file,
+                                           string *symbol_data));
+  MOCK_METHOD5(GetCStringSymbolData, SymbolResult(const CodeModule *module,
+                                                  const SystemInfo *system_info,
+                                                  string *symbol_file,
+                                                  char **symbol_data,
+                                                  size_t *symbol_data_size));
+  MOCK_METHOD1(FreeSymbolData, void(const CodeModule *module));
+
+  // Copies the passed string contents into a newly allocated buffer.
+  // The newly allocated buffer will be freed during destruction.
+  char* CopySymbolDataAndOwnTheCopy(const std::string &info,
+                                    size_t *symbol_data_size) {
+    *symbol_data_size = info.size() + 1;
+    char *symbol_data = new char[*symbol_data_size];
+    memcpy(symbol_data, info.c_str(), info.size());
+    symbol_data[info.size()] = '\0';
+    symbol_data_to_free_.push_back(symbol_data);
+    return symbol_data;
+  }
+
+  virtual ~MockSymbolSupplier() {
+    for (SymbolDataVector::const_iterator i = symbol_data_to_free_.begin();
+         i != symbol_data_to_free_.end(); i++) {
+      char* symbol_data = *i;
+      delete [] symbol_data;
+    }
+  }
+
+ private:
+  // List of symbol data to be freed upon destruction
+  typedef std::vector<char*> SymbolDataVector;
+  SymbolDataVector symbol_data_to_free_;
+};
+
+#endif // PROCESSOR_STACKWALKER_UNITTEST_UTILS_H_
diff --git a/google-breakpad/src/processor/stackwalker_x86.cc b/google-breakpad/src/processor/stackwalker_x86.cc
new file mode 100644
index 0000000..29d98e4
--- /dev/null
+++ b/google-breakpad/src/processor/stackwalker_x86.cc
@@ -0,0 +1,672 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// stackwalker_x86.cc: x86-specific stackwalker.
+//
+// See stackwalker_x86.h for documentation.
+//
+// Author: Mark Mentovai
+
+#include <assert.h>
+#include <string>
+
+#include "common/scoped_ptr.h"
+#include "google_breakpad/processor/call_stack.h"
+#include "google_breakpad/processor/code_modules.h"
+#include "google_breakpad/processor/memory_region.h"
+#include "google_breakpad/processor/source_line_resolver_interface.h"
+#include "google_breakpad/processor/stack_frame_cpu.h"
+#include "processor/logging.h"
+#include "processor/postfix_evaluator-inl.h"
+#include "processor/stackwalker_x86.h"
+#include "processor/windows_frame_info.h"
+#include "processor/cfi_frame_info.h"
+
+namespace google_breakpad {
+
+// Max reasonable size for a single x86 frame is 128 KB.  This value is used in
+// a heuristic for recovering of the EBP chain after a scan for return address.
+// This value is based on a stack frame size histogram built for a set of
+// popular third party libraries which suggests that 99.5% of all frames are
+// smaller than 128 KB.
+static const uint32_t kMaxReasonableGapBetweenFrames = 128 * 1024;
+
+const StackwalkerX86::CFIWalker::RegisterSet
+StackwalkerX86::cfi_register_map_[] = {
+  // It may seem like $eip and $esp are callee-saves, because (with Unix or
+  // cdecl calling conventions) the callee is responsible for having them
+  // restored upon return. But the callee_saves flags here really means
+  // that the walker should assume they're unchanged if the CFI doesn't
+  // mention them, which is clearly wrong for $eip and $esp.
+  { "$eip", ".ra",  false,
+    StackFrameX86::CONTEXT_VALID_EIP, &MDRawContextX86::eip },
+  { "$esp", ".cfa", false,
+    StackFrameX86::CONTEXT_VALID_ESP, &MDRawContextX86::esp },
+  { "$ebp", NULL,   true,
+    StackFrameX86::CONTEXT_VALID_EBP, &MDRawContextX86::ebp },
+  { "$eax", NULL,   false,
+    StackFrameX86::CONTEXT_VALID_EAX, &MDRawContextX86::eax },
+  { "$ebx", NULL,   true,
+    StackFrameX86::CONTEXT_VALID_EBX, &MDRawContextX86::ebx },
+  { "$ecx", NULL,   false,
+    StackFrameX86::CONTEXT_VALID_ECX, &MDRawContextX86::ecx },
+  { "$edx", NULL,   false,
+    StackFrameX86::CONTEXT_VALID_EDX, &MDRawContextX86::edx },
+  { "$esi", NULL,   true,
+    StackFrameX86::CONTEXT_VALID_ESI, &MDRawContextX86::esi },
+  { "$edi", NULL,   true,
+    StackFrameX86::CONTEXT_VALID_EDI, &MDRawContextX86::edi },
+};
+
+StackwalkerX86::StackwalkerX86(const SystemInfo* system_info,
+                               const MDRawContextX86* context,
+                               MemoryRegion* memory,
+                               const CodeModules* modules,
+                               StackFrameSymbolizer* resolver_helper)
+    : Stackwalker(system_info, memory, modules, resolver_helper),
+      context_(context),
+      cfi_walker_(cfi_register_map_,
+                  (sizeof(cfi_register_map_) / sizeof(cfi_register_map_[0]))) {
+  if (memory_ && memory_->GetBase() + memory_->GetSize() - 1 > 0xffffffff) {
+    // The x86 is a 32-bit CPU, the limits of the supplied stack are invalid.
+    // Mark memory_ = NULL, which will cause stackwalking to fail.
+    BPLOG(ERROR) << "Memory out of range for stackwalking: " <<
+                    HexString(memory_->GetBase()) << "+" <<
+                    HexString(memory_->GetSize());
+    memory_ = NULL;
+  }
+}
+
+StackFrameX86::~StackFrameX86() {
+  if (windows_frame_info)
+    delete windows_frame_info;
+  windows_frame_info = NULL;
+  if (cfi_frame_info)
+    delete cfi_frame_info;
+  cfi_frame_info = NULL;
+}
+
+uint64_t StackFrameX86::ReturnAddress() const {
+  assert(context_validity & StackFrameX86::CONTEXT_VALID_EIP);
+  return context.eip;
+}
+
+StackFrame* StackwalkerX86::GetContextFrame() {
+  if (!context_) {
+    BPLOG(ERROR) << "Can't get context frame without context";
+    return NULL;
+  }
+
+  StackFrameX86* frame = new StackFrameX86();
+
+  // The instruction pointer is stored directly in a register, so pull it
+  // straight out of the CPU context structure.
+  frame->context = *context_;
+  frame->context_validity = StackFrameX86::CONTEXT_VALID_ALL;
+  frame->trust = StackFrame::FRAME_TRUST_CONTEXT;
+  frame->instruction = frame->context.eip;
+
+  return frame;
+}
+
+StackFrameX86* StackwalkerX86::GetCallerByWindowsFrameInfo(
+    const vector<StackFrame*> &frames,
+    WindowsFrameInfo* last_frame_info,
+    bool stack_scan_allowed) {
+  StackFrame::FrameTrust trust = StackFrame::FRAME_TRUST_NONE;
+
+  StackFrameX86* last_frame = static_cast<StackFrameX86*>(frames.back());
+
+  // Save the stack walking info we found, in case we need it later to
+  // find the callee of the frame we're constructing now.
+  last_frame->windows_frame_info = last_frame_info;
+
+  // This function only covers the full STACK WIN case. If
+  // last_frame_info is VALID_PARAMETER_SIZE-only, then we should
+  // assume the traditional frame format or use some other strategy.
+  if (last_frame_info->valid != WindowsFrameInfo::VALID_ALL)
+    return NULL;
+
+  // This stackwalker sets each frame's %esp to its value immediately prior
+  // to the CALL into the callee.  This means that %esp points to the last
+  // callee argument pushed onto the stack, which may not be where %esp points
+  // after the callee returns.  Specifically, the value is correct for the
+  // cdecl calling convention, but not other conventions.  The cdecl
+  // convention requires a caller to pop its callee's arguments from the
+  // stack after the callee returns.  This is usually accomplished by adding
+  // the known size of the arguments to %esp.  Other calling conventions,
+  // including stdcall, thiscall, and fastcall, require the callee to pop any
+  // parameters stored on the stack before returning.  This is usually
+  // accomplished by using the RET n instruction, which pops n bytes off
+  // the stack after popping the return address.
+  //
+  // Because each frame's %esp will point to a location on the stack after
+  // callee arguments have been PUSHed, when locating things in a stack frame
+  // relative to %esp, the size of the arguments to the callee need to be
+  // taken into account.  This seems a little bit unclean, but it's better
+  // than the alternative, which would need to take these same things into
+  // account, but only for cdecl functions.  With this implementation, we get
+  // to be agnostic about each function's calling convention.  Furthermore,
+  // this is how Windows debugging tools work, so it means that the %esp
+  // values produced by this stackwalker directly correspond to the %esp
+  // values you'll see there.
+  //
+  // If the last frame has no callee (because it's the context frame), just
+  // set the callee parameter size to 0: the stack pointer can't point to
+  // callee arguments because there's no callee.  This is correct as long
+  // as the context wasn't captured while arguments were being pushed for
+  // a function call.  Note that there may be functions whose parameter sizes
+  // are unknown, 0 is also used in that case.  When that happens, it should
+  // be possible to walk to the next frame without reference to %esp.
+
+  uint32_t last_frame_callee_parameter_size = 0;
+  int frames_already_walked = frames.size();
+  if (frames_already_walked >= 2) {
+    const StackFrameX86* last_frame_callee
+        = static_cast<StackFrameX86*>(frames[frames_already_walked - 2]);
+    WindowsFrameInfo* last_frame_callee_info
+        = last_frame_callee->windows_frame_info;
+    if (last_frame_callee_info &&
+        (last_frame_callee_info->valid
+         & WindowsFrameInfo::VALID_PARAMETER_SIZE)) {
+      last_frame_callee_parameter_size =
+          last_frame_callee_info->parameter_size;
+    }
+  }
+
+  // Set up the dictionary for the PostfixEvaluator.  %ebp and %esp are used
+  // in each program string, and their previous values are known, so set them
+  // here.
+  PostfixEvaluator<uint32_t>::DictionaryType dictionary;
+  // Provide the current register values.
+  dictionary["$ebp"] = last_frame->context.ebp;
+  dictionary["$esp"] = last_frame->context.esp;
+  // Provide constants from the debug info for last_frame and its callee.
+  // .cbCalleeParams is a Breakpad extension that allows us to use the
+  // PostfixEvaluator engine when certain types of debugging information
+  // are present without having to write the constants into the program
+  // string as literals.
+  dictionary[".cbCalleeParams"] = last_frame_callee_parameter_size;
+  dictionary[".cbSavedRegs"] = last_frame_info->saved_register_size;
+  dictionary[".cbLocals"] = last_frame_info->local_size;
+
+  uint32_t raSearchStart = last_frame->context.esp +
+                           last_frame_callee_parameter_size +
+                           last_frame_info->local_size +
+                           last_frame_info->saved_register_size;
+
+  uint32_t raSearchStartOld = raSearchStart;
+  uint32_t found = 0;  // dummy value
+  // Scan up to three words above the calculated search value, in case
+  // the stack was aligned to a quadword boundary.
+  //
+  // TODO(ivan.penkov): Consider cleaning up the scan for return address that
+  // follows.  The purpose of this scan is to adjust the .raSearchStart
+  // calculation (which is based on register %esp) in the cases where register
+  // %esp may have been aligned (up to a quadword).  There are two problems
+  // with this approach:
+  //  1) In practice, 64 byte boundary alignment is seen which clearly can not
+  //     be handled by a three word scan.
+  //  2) A search for a return address is "guesswork" by definition because
+  //     the results will be different depending on what is left on the stack
+  //     from previous executions.
+  // So, basically, the results from this scan should be ignored if other means
+  // for calculation of the value of .raSearchStart are available.
+  if (ScanForReturnAddress(raSearchStart, &raSearchStart, &found, 3) &&
+      last_frame->trust == StackFrame::FRAME_TRUST_CONTEXT &&
+      last_frame->windows_frame_info != NULL &&
+      last_frame_info->type_ == WindowsFrameInfo::STACK_INFO_FPO &&
+      raSearchStartOld == raSearchStart &&
+      found == last_frame->context.eip) {
+    // The context frame represents an FPO-optimized Windows system call.
+    // On the top of the stack we have a pointer to the current instruction.
+    // This means that the callee has returned but the return address is still
+    // on the top of the stack which is very atypical situaltion.
+    // Skip one slot from the stack and do another scan in order to get the
+    // actual return address.
+    raSearchStart += 4;
+    ScanForReturnAddress(raSearchStart, &raSearchStart, &found, 3);
+  }
+
+  dictionary[".cbParams"] = last_frame_info->parameter_size;
+
+  // Decide what type of program string to use. The program string is in
+  // postfix notation and will be passed to PostfixEvaluator::Evaluate.
+  // Given the dictionary and the program string, it is possible to compute
+  // the return address and the values of other registers in the calling
+  // function. Because of bugs described below, the stack may need to be
+  // scanned for these values. The results of program string evaluation
+  // will be used to determine whether to scan for better values.
+  string program_string;
+  bool recover_ebp = true;
+
+  trust = StackFrame::FRAME_TRUST_CFI;
+  if (!last_frame_info->program_string.empty()) {
+    // The FPO data has its own program string, which will tell us how to
+    // get to the caller frame, and may even fill in the values of
+    // nonvolatile registers and provide pointers to local variables and
+    // parameters.  In some cases, particularly with program strings that use
+    // .raSearchStart, the stack may need to be scanned afterward.
+    program_string = last_frame_info->program_string;
+  } else if (last_frame_info->allocates_base_pointer) {
+    // The function corresponding to the last frame doesn't use the frame
+    // pointer for conventional purposes, but it does allocate a new
+    // frame pointer and use it for its own purposes.  Its callee's
+    // information is still accessed relative to %esp, and the previous
+    // value of %ebp can be recovered from a location in its stack frame,
+    // within the saved-register area.
+    //
+    // Functions that fall into this category use the %ebp register for
+    // a purpose other than the frame pointer.  They restore the caller's
+    // %ebp before returning.  These functions create their stack frame
+    // after a CALL by decrementing the stack pointer in an amount
+    // sufficient to store local variables, and then PUSHing saved
+    // registers onto the stack.  Arguments to a callee function, if any,
+    // are PUSHed after that.  Walking up to the caller, therefore,
+    // can be done solely with calculations relative to the stack pointer
+    // (%esp).  The return address is recovered from the memory location
+    // above the known sizes of the callee's parameters, saved registers,
+    // and locals.  The caller's stack pointer (the value of %esp when
+    // the caller executed CALL) is the location immediately above the
+    // saved return address.  The saved value of %ebp to be restored for
+    // the caller is at a known location in the saved-register area of
+    // the stack frame.
+    //
+    // For this type of frame, MSVC 14 (from Visual Studio 8/2005) in
+    // link-time code generation mode (/LTCG and /GL) can generate erroneous
+    // debugging data.  The reported size of saved registers can be 0,
+    // which is clearly an error because these frames must, at the very
+    // least, save %ebp.  For this reason, in addition to those given above
+    // about the use of .raSearchStart, the stack may need to be scanned
+    // for a better return address and a better frame pointer after the
+    // program string is evaluated.
+    //
+    // %eip_new = *(%esp_old + callee_params + saved_regs + locals)
+    // %ebp_new = *(%esp_old + callee_params + saved_regs - 8)
+    // %esp_new = %esp_old + callee_params + saved_regs + locals + 4
+    program_string = "$eip .raSearchStart ^ = "
+        "$ebp $esp .cbCalleeParams + .cbSavedRegs + 8 - ^ = "
+        "$esp .raSearchStart 4 + =";
+  } else {
+    // The function corresponding to the last frame doesn't use %ebp at
+    // all.  The callee frame is located relative to %esp.
+    //
+    // The called procedure's instruction pointer and stack pointer are
+    // recovered in the same way as the case above, except that no
+    // frame pointer (%ebp) is used at all, so it is not saved anywhere
+    // in the callee's stack frame and does not need to be recovered.
+    // Because %ebp wasn't used in the callee, whatever value it has
+    // is the value that it had in the caller, so it can be carried
+    // straight through without bringing its validity into question.
+    //
+    // Because of the use of .raSearchStart, the stack will possibly be
+    // examined to locate a better return address after program string
+    // evaluation.  The stack will not be examined to locate a saved
+    // %ebp value, because these frames do not save (or use) %ebp.
+    //
+    // %eip_new = *(%esp_old + callee_params + saved_regs + locals)
+    // %esp_new = %esp_old + callee_params + saved_regs + locals + 4
+    // %ebp_new = %ebp_old
+    program_string = "$eip .raSearchStart ^ = "
+        "$esp .raSearchStart 4 + =";
+    recover_ebp = false;
+  }
+
+  // Check for alignment operators in the program string.  If alignment
+  // operators are found, then current %ebp must be valid and it is the only
+  // reliable data point that can be used for getting to the previous frame.
+  // E.g. the .raSearchStart calculation (above) is based on %esp and since
+  // %esp was aligned in the current frame (which is a lossy operation) the
+  // calculated value of .raSearchStart cannot be correct and should not be
+  // used.  Instead .raSearchStart must be calculated based on %ebp.
+  // The code that follows assumes that .raSearchStart is supposed to point
+  // at the saved return address (ebp + 4).
+  // For some more details on this topic, take a look at the following thread:
+  // https://groups.google.com/forum/#!topic/google-breakpad-dev/ZP1FA9B1JjM
+  if ((StackFrameX86::CONTEXT_VALID_EBP & last_frame->context_validity) != 0 &&
+      program_string.find('@') != string::npos) {
+    raSearchStart = last_frame->context.ebp + 4;
+  }
+
+  // The difference between raSearch and raSearchStart is unknown,
+  // but making them the same seems to work well in practice.
+  dictionary[".raSearchStart"] = raSearchStart;
+  dictionary[".raSearch"] = raSearchStart;
+
+  // Now crank it out, making sure that the program string set at least the
+  // two required variables.
+  PostfixEvaluator<uint32_t> evaluator =
+      PostfixEvaluator<uint32_t>(&dictionary, memory_);
+  PostfixEvaluator<uint32_t>::DictionaryValidityType dictionary_validity;
+  if (!evaluator.Evaluate(program_string, &dictionary_validity) ||
+      dictionary_validity.find("$eip") == dictionary_validity.end() ||
+      dictionary_validity.find("$esp") == dictionary_validity.end()) {
+    // Program string evaluation failed. It may be that %eip is not somewhere
+    // with stack frame info, and %ebp is pointing to non-stack memory, so
+    // our evaluation couldn't succeed. We'll scan the stack for a return
+    // address. This can happen if the stack is in a module for which
+    // we don't have symbols, and that module is compiled without a
+    // frame pointer.
+    uint32_t location_start = last_frame->context.esp;
+    uint32_t location, eip;
+    if (!stack_scan_allowed
+        || !ScanForReturnAddress(location_start, &location, &eip,
+                                 frames.size() == 1 /* is_context_frame */)) {
+      // if we can't find an instruction pointer even with stack scanning,
+      // give up.
+      return NULL;
+    }
+
+    // This seems like a reasonable return address. Since program string
+    // evaluation failed, use it and set %esp to the location above the
+    // one where the return address was found.
+    dictionary["$eip"] = eip;
+    dictionary["$esp"] = location + 4;
+    trust = StackFrame::FRAME_TRUST_SCAN;
+  }
+
+  // Since this stack frame did not use %ebp in a traditional way,
+  // locating the return address isn't entirely deterministic. In that
+  // case, the stack can be scanned to locate the return address.
+  //
+  // However, if program string evaluation resulted in both %eip and
+  // %ebp values of 0, trust that the end of the stack has been
+  // reached and don't scan for anything else.
+  if (dictionary["$eip"] != 0 || dictionary["$ebp"] != 0) {
+    int offset = 0;
+
+    // This scan can only be done if a CodeModules object is available, to
+    // check that candidate return addresses are in fact inside a module.
+    //
+    // TODO(mmentovai): This ignores dynamically-generated code.  One possible
+    // solution is to check the minidump's memory map to see if the candidate
+    // %eip value comes from a mapped executable page, although this would
+    // require dumps that contain MINIDUMP_MEMORY_INFO, which the Breakpad
+    // client doesn't currently write (it would need to call MiniDumpWriteDump
+    // with the MiniDumpWithFullMemoryInfo type bit set).  Even given this
+    // ability, older OSes (pre-XP SP2) and CPUs (pre-P4) don't enforce
+    // an independent execute privilege on memory pages.
+
+    uint32_t eip = dictionary["$eip"];
+    if (modules_ && !modules_->GetModuleForAddress(eip)) {
+      // The instruction pointer at .raSearchStart was invalid, so start
+      // looking one 32-bit word above that location.
+      uint32_t location_start = dictionary[".raSearchStart"] + 4;
+      uint32_t location;
+      if (stack_scan_allowed
+          && ScanForReturnAddress(location_start, &location, &eip,
+                                  frames.size() == 1 /* is_context_frame */)) {
+        // This is a better return address that what program string
+        // evaluation found.  Use it, and set %esp to the location above the
+        // one where the return address was found.
+        dictionary["$eip"] = eip;
+        dictionary["$esp"] = location + 4;
+        offset = location - location_start;
+        trust = StackFrame::FRAME_TRUST_CFI_SCAN;
+      }
+    }
+
+    if (recover_ebp) {
+      // When trying to recover the previous value of the frame pointer (%ebp),
+      // start looking at the lowest possible address in the saved-register
+      // area, and look at the entire saved register area, increased by the
+      // size of |offset| to account for additional data that may be on the
+      // stack.  The scan is performed from the highest possible address to
+      // the lowest, because the expectation is that the function's prolog
+      // would have saved %ebp early.
+      uint32_t ebp = dictionary["$ebp"];
+
+      // When a scan for return address is used, it is possible to skip one or
+      // more frames (when return address is not in a known module).  One
+      // indication for skipped frames is when the value of %ebp is lower than
+      // the location of the return address on the stack
+      bool has_skipped_frames =
+        (trust != StackFrame::FRAME_TRUST_CFI && ebp <= raSearchStart + offset);
+
+      uint32_t value;  // throwaway variable to check pointer validity
+      if (has_skipped_frames || !memory_->GetMemoryAtAddress(ebp, &value)) {
+        int fp_search_bytes = last_frame_info->saved_register_size + offset;
+        uint32_t location_end = last_frame->context.esp +
+                                 last_frame_callee_parameter_size;
+
+        for (uint32_t location = location_end + fp_search_bytes;
+             location >= location_end;
+             location -= 4) {
+          if (!memory_->GetMemoryAtAddress(location, &ebp))
+            break;
+
+          if (memory_->GetMemoryAtAddress(ebp, &value)) {
+            // The candidate value is a pointer to the same memory region
+            // (the stack).  Prefer it as a recovered %ebp result.
+            dictionary["$ebp"] = ebp;
+            break;
+          }
+        }
+      }
+    }
+  }
+
+  // Create a new stack frame (ownership will be transferred to the caller)
+  // and fill it in.
+  StackFrameX86* frame = new StackFrameX86();
+
+  frame->trust = trust;
+  frame->context = last_frame->context;
+  frame->context.eip = dictionary["$eip"];
+  frame->context.esp = dictionary["$esp"];
+  frame->context.ebp = dictionary["$ebp"];
+  frame->context_validity = StackFrameX86::CONTEXT_VALID_EIP |
+                                StackFrameX86::CONTEXT_VALID_ESP |
+                                StackFrameX86::CONTEXT_VALID_EBP;
+
+  // These are nonvolatile (callee-save) registers, and the program string
+  // may have filled them in.
+  if (dictionary_validity.find("$ebx") != dictionary_validity.end()) {
+    frame->context.ebx = dictionary["$ebx"];
+    frame->context_validity |= StackFrameX86::CONTEXT_VALID_EBX;
+  }
+  if (dictionary_validity.find("$esi") != dictionary_validity.end()) {
+    frame->context.esi = dictionary["$esi"];
+    frame->context_validity |= StackFrameX86::CONTEXT_VALID_ESI;
+  }
+  if (dictionary_validity.find("$edi") != dictionary_validity.end()) {
+    frame->context.edi = dictionary["$edi"];
+    frame->context_validity |= StackFrameX86::CONTEXT_VALID_EDI;
+  }
+
+  return frame;
+}
+
+StackFrameX86* StackwalkerX86::GetCallerByCFIFrameInfo(
+    const vector<StackFrame*> &frames,
+    CFIFrameInfo* cfi_frame_info) {
+  StackFrameX86* last_frame = static_cast<StackFrameX86*>(frames.back());
+  last_frame->cfi_frame_info = cfi_frame_info;
+
+  scoped_ptr<StackFrameX86> frame(new StackFrameX86());
+  if (!cfi_walker_
+      .FindCallerRegisters(*memory_, *cfi_frame_info,
+                           last_frame->context, last_frame->context_validity,
+                           &frame->context, &frame->context_validity))
+    return NULL;
+
+  // Make sure we recovered all the essentials.
+  static const int essentials = (StackFrameX86::CONTEXT_VALID_EIP
+                                 | StackFrameX86::CONTEXT_VALID_ESP
+                                 | StackFrameX86::CONTEXT_VALID_EBP);
+  if ((frame->context_validity & essentials) != essentials)
+    return NULL;
+
+  frame->trust = StackFrame::FRAME_TRUST_CFI;
+
+  return frame.release();
+}
+
+StackFrameX86* StackwalkerX86::GetCallerByEBPAtBase(
+    const vector<StackFrame*> &frames,
+    bool stack_scan_allowed) {
+  StackFrame::FrameTrust trust;
+  StackFrameX86* last_frame = static_cast<StackFrameX86*>(frames.back());
+  uint32_t last_esp = last_frame->context.esp;
+  uint32_t last_ebp = last_frame->context.ebp;
+
+  // Assume that the standard %ebp-using x86 calling convention is in
+  // use.
+  //
+  // The typical x86 calling convention, when frame pointers are present,
+  // is for the calling procedure to use CALL, which pushes the return
+  // address onto the stack and sets the instruction pointer (%eip) to
+  // the entry point of the called routine.  The called routine then
+  // PUSHes the calling routine's frame pointer (%ebp) onto the stack
+  // before copying the stack pointer (%esp) to the frame pointer (%ebp).
+  // Therefore, the calling procedure's frame pointer is always available
+  // by dereferencing the called procedure's frame pointer, and the return
+  // address is always available at the memory location immediately above
+  // the address pointed to by the called procedure's frame pointer.  The
+  // calling procedure's stack pointer (%esp) is 8 higher than the value
+  // of the called procedure's frame pointer at the time the calling
+  // procedure made the CALL: 4 bytes for the return address pushed by the
+  // CALL itself, and 4 bytes for the callee's PUSH of the caller's frame
+  // pointer.
+  //
+  // %eip_new = *(%ebp_old + 4)
+  // %esp_new = %ebp_old + 8
+  // %ebp_new = *(%ebp_old)
+
+  uint32_t caller_eip, caller_esp, caller_ebp;
+
+  if (memory_->GetMemoryAtAddress(last_ebp + 4, &caller_eip) &&
+      memory_->GetMemoryAtAddress(last_ebp, &caller_ebp)) {
+    caller_esp = last_ebp + 8;
+    trust = StackFrame::FRAME_TRUST_FP;
+  } else {
+    // We couldn't read the memory %ebp refers to. It may be that %ebp
+    // is pointing to non-stack memory. We'll scan the stack for a
+    // return address. This can happen if last_frame is executing code
+    // for a module for which we don't have symbols, and that module
+    // is compiled without a frame pointer.
+    if (!stack_scan_allowed
+        || !ScanForReturnAddress(last_esp, &caller_esp, &caller_eip,
+                                 frames.size() == 1 /* is_context_frame */)) {
+      // if we can't find an instruction pointer even with stack scanning,
+      // give up.
+      return NULL;
+    }
+
+    // ScanForReturnAddress found a reasonable return address. Advance %esp to
+    // the location immediately above the one where the return address was
+    // found.
+    caller_esp += 4;
+    // Try to restore the %ebp chain.  The caller %ebp should be stored at a
+    // location immediately below the one where the return address was found.
+    // A valid caller %ebp must be greater than the address where it is stored
+    // and the gap between the two adjacent frames should be reasonable.
+    uint32_t restored_ebp_chain = caller_esp - 8;
+    if (!memory_->GetMemoryAtAddress(restored_ebp_chain, &caller_ebp) ||
+        caller_ebp <= restored_ebp_chain ||
+        caller_ebp - restored_ebp_chain > kMaxReasonableGapBetweenFrames) {
+      // The restored %ebp chain doesn't appear to be valid.
+      // Assume that %ebp is unchanged.
+      caller_ebp = last_ebp;
+    }
+
+    trust = StackFrame::FRAME_TRUST_SCAN;
+  }
+
+  // Create a new stack frame (ownership will be transferred to the caller)
+  // and fill it in.
+  StackFrameX86* frame = new StackFrameX86();
+
+  frame->trust = trust;
+  frame->context = last_frame->context;
+  frame->context.eip = caller_eip;
+  frame->context.esp = caller_esp;
+  frame->context.ebp = caller_ebp;
+  frame->context_validity = StackFrameX86::CONTEXT_VALID_EIP |
+                            StackFrameX86::CONTEXT_VALID_ESP |
+                            StackFrameX86::CONTEXT_VALID_EBP;
+
+  return frame;
+}
+
+StackFrame* StackwalkerX86::GetCallerFrame(const CallStack* stack,
+                                           bool stack_scan_allowed) {
+  if (!memory_ || !stack) {
+    BPLOG(ERROR) << "Can't get caller frame without memory or stack";
+    return NULL;
+  }
+
+  const vector<StackFrame*> &frames = *stack->frames();
+  StackFrameX86* last_frame = static_cast<StackFrameX86*>(frames.back());
+  scoped_ptr<StackFrameX86> new_frame;
+
+  // If the resolver has Windows stack walking information, use that.
+  WindowsFrameInfo* windows_frame_info
+      = frame_symbolizer_->FindWindowsFrameInfo(last_frame);
+  if (windows_frame_info)
+    new_frame.reset(GetCallerByWindowsFrameInfo(frames, windows_frame_info,
+                                                stack_scan_allowed));
+
+  // If the resolver has DWARF CFI information, use that.
+  if (!new_frame.get()) {
+    CFIFrameInfo* cfi_frame_info =
+        frame_symbolizer_->FindCFIFrameInfo(last_frame);
+    if (cfi_frame_info)
+      new_frame.reset(GetCallerByCFIFrameInfo(frames, cfi_frame_info));
+  }
+
+  // Otherwise, hope that the program was using a traditional frame structure.
+  if (!new_frame.get())
+    new_frame.reset(GetCallerByEBPAtBase(frames, stack_scan_allowed));
+
+  // If nothing worked, tell the caller.
+  if (!new_frame.get())
+    return NULL;
+
+  // Treat an instruction address of 0 as end-of-stack.
+  if (new_frame->context.eip == 0)
+    return NULL;
+
+  // If the new stack pointer is at a lower address than the old, then
+  // that's clearly incorrect. Treat this as end-of-stack to enforce
+  // progress and avoid infinite loops.
+  if (new_frame->context.esp <= last_frame->context.esp)
+    return NULL;
+
+  // new_frame->context.eip is the return address, which is the instruction
+  // after the CALL that caused us to arrive at the callee. Set
+  // new_frame->instruction to one less than that, so it points within the
+  // CALL instruction. See StackFrame::instruction for details, and
+  // StackFrameAMD64::ReturnAddress.
+  new_frame->instruction = new_frame->context.eip - 1;
+
+  return new_frame.release();
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/processor/stackwalker_x86.h b/google-breakpad/src/processor/stackwalker_x86.h
new file mode 100644
index 0000000..0659a13
--- /dev/null
+++ b/google-breakpad/src/processor/stackwalker_x86.h
@@ -0,0 +1,117 @@
+// -*- mode: c++ -*-
+
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// stackwalker_x86.h: x86-specific stackwalker.
+//
+// Provides stack frames given x86 register context and a memory region
+// corresponding to an x86 stack.
+//
+// Author: Mark Mentovai
+
+
+#ifndef PROCESSOR_STACKWALKER_X86_H__
+#define PROCESSOR_STACKWALKER_X86_H__
+
+#include <vector>
+
+#include "google_breakpad/common/breakpad_types.h"
+#include "google_breakpad/common/minidump_format.h"
+#include "google_breakpad/processor/stackwalker.h"
+#include "google_breakpad/processor/stack_frame_cpu.h"
+#include "processor/cfi_frame_info.h"
+
+namespace google_breakpad {
+
+class CodeModules;
+
+
+class StackwalkerX86 : public Stackwalker {
+ public:
+  // context is an x86 context object that gives access to x86-specific
+  // register state corresponding to the innermost called frame to be
+  // included in the stack.  The other arguments are passed directly through
+  // to the base Stackwalker constructor.
+  StackwalkerX86(const SystemInfo* system_info,
+                 const MDRawContextX86* context,
+                 MemoryRegion* memory,
+                 const CodeModules* modules,
+                 StackFrameSymbolizer* frame_symbolizer);
+
+ private:
+  // A STACK CFI-driven frame walker for the X86.
+  typedef SimpleCFIWalker<uint32_t, MDRawContextX86> CFIWalker;
+
+  // Implementation of Stackwalker, using x86 context (%ebp, %esp, %eip) and
+  // stack conventions (saved %ebp at [%ebp], saved %eip at 4[%ebp], or
+  // alternate conventions as guided by any WindowsFrameInfo available for the
+  // code in question.).
+  virtual StackFrame* GetContextFrame();
+  virtual StackFrame* GetCallerFrame(const CallStack* stack,
+                                     bool stack_scan_allowed);
+
+  // Use windows_frame_info (derived from STACK WIN and FUNC records)
+  // to construct the frame that called frames.back(). The caller
+  // takes ownership of the returned frame. Return NULL on failure.
+  StackFrameX86* GetCallerByWindowsFrameInfo(
+      const vector<StackFrame*> &frames,
+      WindowsFrameInfo* windows_frame_info,
+      bool stack_scan_allowed);
+
+  // Use cfi_frame_info (derived from STACK CFI records) to construct
+  // the frame that called frames.back(). The caller takes ownership
+  // of the returned frame. Return NULL on failure.
+  StackFrameX86* GetCallerByCFIFrameInfo(const vector<StackFrame*> &frames,
+                                         CFIFrameInfo* cfi_frame_info);
+
+  // Assuming a traditional frame layout --- where the caller's %ebp
+  // has been pushed just after the return address and the callee's
+  // %ebp points to the saved %ebp --- construct the frame that called
+  // frames.back(). The caller takes ownership of the returned frame.
+  // Return NULL on failure.
+  StackFrameX86* GetCallerByEBPAtBase(const vector<StackFrame*> &frames,
+                                      bool stack_scan_allowed);
+
+  // Stores the CPU context corresponding to the innermost stack frame to
+  // be returned by GetContextFrame.
+  const MDRawContextX86* context_;
+
+  // Our register map, for cfi_walker_.
+  static const CFIWalker::RegisterSet cfi_register_map_[];
+
+  // Our CFI frame walker.
+  const CFIWalker cfi_walker_;
+};
+
+
+}  // namespace google_breakpad
+
+
+#endif  // PROCESSOR_STACKWALKER_X86_H__
diff --git a/google-breakpad/src/processor/stackwalker_x86_unittest.cc b/google-breakpad/src/processor/stackwalker_x86_unittest.cc
new file mode 100644
index 0000000..008b496
--- /dev/null
+++ b/google-breakpad/src/processor/stackwalker_x86_unittest.cc
@@ -0,0 +1,2128 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// stackwalker_x86_unittest.cc: Unit tests for StackwalkerX86 class.
+
+#include <string>
+#include <vector>
+
+#include "breakpad_googletest_includes.h"
+#include "common/test_assembler.h"
+#include "common/using_std_string.h"
+#include "google_breakpad/common/minidump_format.h"
+#include "google_breakpad/processor/basic_source_line_resolver.h"
+#include "google_breakpad/processor/call_stack.h"
+#include "google_breakpad/processor/code_module.h"
+#include "google_breakpad/processor/source_line_resolver_interface.h"
+#include "google_breakpad/processor/stack_frame_cpu.h"
+#include "processor/stackwalker_unittest_utils.h"
+#include "processor/stackwalker_x86.h"
+#include "processor/windows_frame_info.h"
+
+using google_breakpad::BasicSourceLineResolver;
+using google_breakpad::CallStack;
+using google_breakpad::CodeModule;
+using google_breakpad::StackFrameSymbolizer;
+using google_breakpad::StackFrame;
+using google_breakpad::StackFrameX86;
+using google_breakpad::Stackwalker;
+using google_breakpad::StackwalkerX86;
+using google_breakpad::SystemInfo;
+using google_breakpad::WindowsFrameInfo;
+using google_breakpad::test_assembler::kLittleEndian;
+using google_breakpad::test_assembler::Label;
+using google_breakpad::test_assembler::Section;
+using std::vector;
+using testing::_;
+using testing::AnyNumber;
+using testing::Return;
+using testing::SetArgumentPointee;
+using testing::Test;
+
+class StackwalkerX86Fixture {
+ public:
+  StackwalkerX86Fixture()
+    : stack_section(kLittleEndian),
+      // Give the two modules reasonable standard locations and names
+      // for tests to play with.
+      module1(0x40000000, 0x10000, "module1", "version1"),
+      module2(0x50000000, 0x10000, "module2", "version2"),
+      module3(0x771d0000, 0x180000, "module3", "version3"),
+      module4(0x75f90000, 0x46000, "module4", "version4"),
+      module5(0x75730000, 0x110000, "module5", "version5"),
+      module6(0x647f0000, 0x1ba8000, "module6", "version6") {
+    // Identify the system as a Linux system.
+    system_info.os = "Linux";
+    system_info.os_short = "linux";
+    system_info.os_version = "Salacious Skink";
+    system_info.cpu = "x86";
+    system_info.cpu_info = "";
+
+    // Put distinctive values in the raw CPU context.
+    BrandContext(&raw_context);
+
+    // Create some modules with some stock debugging information.
+    modules.Add(&module1);
+    modules.Add(&module2);
+    modules.Add(&module3);
+    modules.Add(&module4);
+    modules.Add(&module5);
+    modules.Add(&module6);
+
+    // By default, none of the modules have symbol info; call
+    // SetModuleSymbols to override this.
+    EXPECT_CALL(supplier, GetCStringSymbolData(_, _, _, _, _))
+      .WillRepeatedly(Return(MockSymbolSupplier::NOT_FOUND));
+
+    // Avoid GMOCK WARNING "Uninteresting mock function call - returning
+    // directly" for FreeSymbolData().
+    EXPECT_CALL(supplier, FreeSymbolData(_)).Times(AnyNumber());
+
+    // Reset max_frames_scanned since it's static.
+    Stackwalker::set_max_frames_scanned(1024);
+  }
+
+  // Set the Breakpad symbol information that supplier should return for
+  // MODULE to INFO.
+  void SetModuleSymbols(MockCodeModule *module, const string &info) {
+    size_t buffer_size;
+    char *buffer = supplier.CopySymbolDataAndOwnTheCopy(info, &buffer_size);
+    EXPECT_CALL(supplier, GetCStringSymbolData(module, &system_info, _, _, _))
+      .WillRepeatedly(DoAll(SetArgumentPointee<3>(buffer),
+                            SetArgumentPointee<4>(buffer_size),
+                            Return(MockSymbolSupplier::FOUND)));
+  }
+
+  // Populate stack_region with the contents of stack_section. Use
+  // stack_section.start() as the region's starting address.
+  void RegionFromSection() {
+    string contents;
+    ASSERT_TRUE(stack_section.GetContents(&contents));
+    stack_region.Init(stack_section.start().Value(), contents);
+  }
+
+  // Fill RAW_CONTEXT with pseudo-random data, for round-trip checking.
+  void BrandContext(MDRawContextX86 *raw_context) {
+    uint8_t x = 173;
+    for (size_t i = 0; i < sizeof(*raw_context); i++)
+      reinterpret_cast<uint8_t *>(raw_context)[i] = (x += 17);
+  }
+
+  SystemInfo system_info;
+  MDRawContextX86 raw_context;
+  Section stack_section;
+  MockMemoryRegion stack_region;
+  MockCodeModule module1;
+  MockCodeModule module2;
+  MockCodeModule module3;
+  MockCodeModule module4;
+  MockCodeModule module5;
+  MockCodeModule module6;
+  MockCodeModules modules;
+  MockSymbolSupplier supplier;
+  BasicSourceLineResolver resolver;
+  CallStack call_stack;
+  const vector<StackFrame *> *frames;
+};
+
+class SanityCheck: public StackwalkerX86Fixture, public Test { };
+
+TEST_F(SanityCheck, NoResolver) {
+  stack_section.start() = 0x80000000;
+  stack_section.D32(0).D32(0);  // end-of-stack marker
+  RegionFromSection();
+  raw_context.eip = 0x40000200;
+  raw_context.ebp = 0x80000000;
+
+  StackFrameSymbolizer frame_symbolizer(NULL, NULL);
+  StackwalkerX86 walker(&system_info, &raw_context, &stack_region, &modules,
+                        &frame_symbolizer);
+  // This should succeed, even without a resolver or supplier.
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(1U, modules_without_symbols.size());
+  ASSERT_EQ("module1", modules_without_symbols[0]->debug_file());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+  StackFrameX86 *frame = static_cast<StackFrameX86 *>(frames->at(0));
+  // Check that the values from the original raw context made it
+  // through to the context in the stack frame.
+  EXPECT_EQ(0, memcmp(&raw_context, &frame->context, sizeof(raw_context)));
+}
+
+class GetContextFrame: public StackwalkerX86Fixture, public Test { };
+
+TEST_F(GetContextFrame, Simple) {
+  stack_section.start() = 0x80000000;
+  stack_section.D32(0).D32(0);  // end-of-stack marker
+  RegionFromSection();
+  raw_context.eip = 0x40000200;
+  raw_context.ebp = 0x80000000;
+
+  StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+  StackwalkerX86 walker(&system_info, &raw_context, &stack_region, &modules,
+                        &frame_symbolizer);
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(1U, modules_without_symbols.size());
+  ASSERT_EQ("module1", modules_without_symbols[0]->debug_file());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+  StackFrameX86 *frame = static_cast<StackFrameX86 *>(frames->at(0));
+  // Check that the values from the original raw context made it
+  // through to the context in the stack frame.
+  EXPECT_EQ(0, memcmp(&raw_context, &frame->context, sizeof(raw_context)));
+}
+
+// The stackwalker should be able to produce the context frame even
+// without stack memory present.
+TEST_F(GetContextFrame, NoStackMemory) {
+  raw_context.eip = 0x40000200;
+  raw_context.ebp = 0x80000000;
+
+  StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+  StackwalkerX86 walker(&system_info, &raw_context, NULL, &modules,
+                        &frame_symbolizer);
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(1U, modules_without_symbols.size());
+  ASSERT_EQ("module1", modules_without_symbols[0]->debug_file());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+  StackFrameX86 *frame = static_cast<StackFrameX86 *>(frames->at(0));
+  // Check that the values from the original raw context made it
+  // through to the context in the stack frame.
+  EXPECT_EQ(0, memcmp(&raw_context, &frame->context, sizeof(raw_context)));
+}
+
+class GetCallerFrame: public StackwalkerX86Fixture, public Test {
+ protected:
+  void IPAddressIsNotInKnownModuleTestImpl(bool has_corrupt_symbols);
+};
+
+// Walk a traditional frame. A traditional frame saves the caller's
+// %ebp just below the return address, and has its own %ebp pointing
+// at the saved %ebp.
+TEST_F(GetCallerFrame, Traditional) {
+  stack_section.start() = 0x80000000;
+  Label frame0_ebp, frame1_ebp;
+  stack_section
+    .Append(12, 0)                      // frame 0: space
+    .Mark(&frame0_ebp)                  // frame 0 %ebp points here
+    .D32(frame1_ebp)                    // frame 0: saved %ebp
+    .D32(0x40008679)                    // frame 0: return address
+    .Append(8, 0)                       // frame 1: space
+    .Mark(&frame1_ebp)                  // frame 1 %ebp points here
+    .D32(0)                             // frame 1: saved %ebp (stack end)
+    .D32(0);                            // frame 1: return address (stack end)
+  RegionFromSection();
+  raw_context.eip = 0x4000c7a5;
+  raw_context.esp = stack_section.start().Value();
+  raw_context.ebp = frame0_ebp.Value();
+
+  StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+  StackwalkerX86 walker(&system_info, &raw_context, &stack_region, &modules,
+                        &frame_symbolizer);
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(1U, modules_without_symbols.size());
+  ASSERT_EQ("module1", modules_without_symbols[0]->debug_file());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+  ASSERT_EQ(2U, frames->size());
+
+  {  // To avoid reusing locals by mistake
+    StackFrameX86 *frame0 = static_cast<StackFrameX86 *>(frames->at(0));
+    EXPECT_EQ(StackFrame::FRAME_TRUST_CONTEXT, frame0->trust);
+    EXPECT_EQ(StackFrameX86::CONTEXT_VALID_ALL, frame0->context_validity);
+    EXPECT_EQ(0x4000c7a5U, frame0->instruction);
+    EXPECT_EQ(0x4000c7a5U, frame0->context.eip);
+    EXPECT_EQ(frame0_ebp.Value(), frame0->context.ebp);
+    EXPECT_EQ(NULL, frame0->windows_frame_info);
+  }
+
+  {  // To avoid reusing locals by mistake
+    StackFrameX86 *frame1 = static_cast<StackFrameX86 *>(frames->at(1));
+    EXPECT_EQ(StackFrame::FRAME_TRUST_FP, frame1->trust);
+    ASSERT_EQ((StackFrameX86::CONTEXT_VALID_EIP
+               | StackFrameX86::CONTEXT_VALID_ESP
+               | StackFrameX86::CONTEXT_VALID_EBP),
+              frame1->context_validity);
+    EXPECT_EQ(0x40008679U, frame1->instruction + 1);
+    EXPECT_EQ(0x40008679U, frame1->context.eip);
+    EXPECT_EQ(frame1_ebp.Value(), frame1->context.ebp);
+    EXPECT_EQ(NULL, frame1->windows_frame_info);
+  }
+}
+
+// Walk a traditional frame, but use a bogus %ebp value, forcing a scan
+// of the stack for something that looks like a return address.
+TEST_F(GetCallerFrame, TraditionalScan) {
+  stack_section.start() = 0x80000000;
+  Label frame1_ebp;
+  Label frame1_esp;
+  stack_section
+    // frame 0
+    .D32(0xf065dc76)    // locals area:
+    .D32(0x46ee2167)    // garbage that doesn't look like
+    .D32(0xbab023ec)    // a return address
+    .D32(frame1_ebp)    // saved %ebp (%ebp fails to point here, forcing scan)
+    .D32(0x4000129d)    // return address
+    // frame 1
+    .Mark(&frame1_esp)
+    .Append(8, 0)       // space
+    .Mark(&frame1_ebp)  // %ebp points here
+    .D32(0)             // saved %ebp (stack end)
+    .D32(0);            // return address (stack end)
+
+  RegionFromSection();
+  raw_context.eip = 0x4000f49d;
+  raw_context.esp = stack_section.start().Value();
+  // Make the frame pointer bogus, to make the stackwalker scan the stack
+  // for something that looks like a return address.
+  raw_context.ebp = 0xd43eed6e;
+
+  StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+  StackwalkerX86 walker(&system_info, &raw_context, &stack_region, &modules,
+                        &frame_symbolizer);
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(1U, modules_without_symbols.size());
+  ASSERT_EQ("module1", modules_without_symbols[0]->debug_file());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+  ASSERT_EQ(2U, frames->size());
+
+  {  // To avoid reusing locals by mistake
+    StackFrameX86 *frame0 = static_cast<StackFrameX86 *>(frames->at(0));
+    EXPECT_EQ(StackFrame::FRAME_TRUST_CONTEXT, frame0->trust);
+    ASSERT_EQ(StackFrameX86::CONTEXT_VALID_ALL, frame0->context_validity);
+    EXPECT_EQ(0x4000f49dU, frame0->instruction);
+    EXPECT_EQ(0x4000f49dU, frame0->context.eip);
+    EXPECT_EQ(stack_section.start().Value(), frame0->context.esp);
+    EXPECT_EQ(0xd43eed6eU, frame0->context.ebp);
+    EXPECT_EQ(NULL, frame0->windows_frame_info);
+  }
+
+  {  // To avoid reusing locals by mistake
+    StackFrameX86 *frame1 = static_cast<StackFrameX86 *>(frames->at(1));
+    EXPECT_EQ(StackFrame::FRAME_TRUST_SCAN, frame1->trust);
+    ASSERT_EQ((StackFrameX86::CONTEXT_VALID_EIP
+               | StackFrameX86::CONTEXT_VALID_ESP
+               | StackFrameX86::CONTEXT_VALID_EBP),
+              frame1->context_validity);
+    EXPECT_EQ(0x4000129dU, frame1->instruction + 1);
+    EXPECT_EQ(0x4000129dU, frame1->context.eip);
+    EXPECT_EQ(frame1_esp.Value(), frame1->context.esp);
+    EXPECT_EQ(frame1_ebp.Value(), frame1->context.ebp);
+    EXPECT_EQ(NULL, frame1->windows_frame_info);
+  }
+}
+
+// Force scanning for a return address a long way down the stack
+TEST_F(GetCallerFrame, TraditionalScanLongWay) {
+  stack_section.start() = 0x80000000;
+  Label frame1_ebp;
+  Label frame1_esp;
+  stack_section
+    // frame 0
+    .D32(0xf065dc76)    // locals area:
+    .D32(0x46ee2167)    // garbage that doesn't look like
+    .D32(0xbab023ec)    // a return address
+    .Append(20 * 4, 0)  // a bunch of space
+    .D32(frame1_ebp)    // saved %ebp (%ebp fails to point here, forcing scan)
+    .D32(0x4000129d)    // return address
+    // frame 1
+    .Mark(&frame1_esp)
+    .Append(8, 0)       // space
+    .Mark(&frame1_ebp)  // %ebp points here
+    .D32(0)             // saved %ebp (stack end)
+    .D32(0);            // return address (stack end)
+
+  RegionFromSection();
+  raw_context.eip = 0x4000f49d;
+  raw_context.esp = stack_section.start().Value();
+  // Make the frame pointer bogus, to make the stackwalker scan the stack
+  // for something that looks like a return address.
+  raw_context.ebp = 0xd43eed6e;
+
+  StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+  StackwalkerX86 walker(&system_info, &raw_context, &stack_region, &modules,
+                        &frame_symbolizer);
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(1U, modules_without_symbols.size());
+  ASSERT_EQ("module1", modules_without_symbols[0]->debug_file());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+  ASSERT_EQ(2U, frames->size());
+
+  {  // To avoid reusing locals by mistake
+    StackFrameX86 *frame0 = static_cast<StackFrameX86 *>(frames->at(0));
+    EXPECT_EQ(StackFrame::FRAME_TRUST_CONTEXT, frame0->trust);
+    ASSERT_EQ(StackFrameX86::CONTEXT_VALID_ALL, frame0->context_validity);
+    EXPECT_EQ(0x4000f49dU, frame0->instruction);
+    EXPECT_EQ(0x4000f49dU, frame0->context.eip);
+    EXPECT_EQ(stack_section.start().Value(), frame0->context.esp);
+    EXPECT_EQ(0xd43eed6eU, frame0->context.ebp);
+    EXPECT_EQ(NULL, frame0->windows_frame_info);
+  }
+
+  {  // To avoid reusing locals by mistake
+    StackFrameX86 *frame1 = static_cast<StackFrameX86 *>(frames->at(1));
+    EXPECT_EQ(StackFrame::FRAME_TRUST_SCAN, frame1->trust);
+    ASSERT_EQ((StackFrameX86::CONTEXT_VALID_EIP
+               | StackFrameX86::CONTEXT_VALID_ESP
+               | StackFrameX86::CONTEXT_VALID_EBP),
+              frame1->context_validity);
+    EXPECT_EQ(0x4000129dU, frame1->instruction + 1);
+    EXPECT_EQ(0x4000129dU, frame1->context.eip);
+    EXPECT_EQ(frame1_esp.Value(), frame1->context.esp);
+    EXPECT_EQ(frame1_ebp.Value(), frame1->context.ebp);
+    EXPECT_EQ(NULL, frame1->windows_frame_info);
+  }
+}
+
+// Test that set_max_frames_scanned prevents using stack scanning
+// to find caller frames.
+TEST_F(GetCallerFrame, ScanningNotAllowed) {
+  stack_section.start() = 0x80000000;
+  Label frame1_ebp;
+  stack_section
+    // frame 0
+    .D32(0xf065dc76)    // locals area:
+    .D32(0x46ee2167)    // garbage that doesn't look like
+    .D32(0xbab023ec)    // a return address
+    .D32(frame1_ebp)    // saved %ebp (%ebp fails to point here, forcing scan)
+    .D32(0x4000129d)    // return address
+    // frame 1
+    .Append(8, 0)       // space
+    .Mark(&frame1_ebp)  // %ebp points here
+    .D32(0)             // saved %ebp (stack end)
+    .D32(0);            // return address (stack end)
+
+  RegionFromSection();
+  raw_context.eip = 0x4000f49d;
+  raw_context.esp = stack_section.start().Value();
+  // Make the frame pointer bogus, to make the stackwalker scan the stack
+  // for something that looks like a return address.
+  raw_context.ebp = 0xd43eed6e;
+
+  StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+  StackwalkerX86 walker(&system_info, &raw_context, &stack_region, &modules,
+                        &frame_symbolizer);
+  Stackwalker::set_max_frames_scanned(0);
+
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(1U, modules_without_symbols.size());
+  ASSERT_EQ("module1", modules_without_symbols[0]->debug_file());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+  ASSERT_EQ(1U, frames->size());
+
+  {  // To avoid reusing locals by mistake
+    StackFrameX86 *frame0 = static_cast<StackFrameX86 *>(frames->at(0));
+    EXPECT_EQ(StackFrame::FRAME_TRUST_CONTEXT, frame0->trust);
+    ASSERT_EQ(StackFrameX86::CONTEXT_VALID_ALL, frame0->context_validity);
+    EXPECT_EQ(0x4000f49dU, frame0->instruction);
+    EXPECT_EQ(0x4000f49dU, frame0->context.eip);
+    EXPECT_EQ(stack_section.start().Value(), frame0->context.esp);
+    EXPECT_EQ(0xd43eed6eU, frame0->context.ebp);
+    EXPECT_EQ(NULL, frame0->windows_frame_info);
+  }
+}
+
+// Use Windows frame data (a "STACK WIN 4" record, from a
+// FrameTypeFrameData DIA record) to walk a stack frame.
+TEST_F(GetCallerFrame, WindowsFrameData) {
+  SetModuleSymbols(&module1,
+                   "STACK WIN 4 aa85 176 0 0 4 10 4 0 1"
+                   " $T2 $esp .cbSavedRegs + ="
+                   " $T0 .raSearchStart ="
+                   " $eip $T0 ^ ="
+                   " $esp $T0 4 + ="
+                   " $ebx $T2 4  - ^ ="
+                   " $edi $T2 8  - ^ ="
+                   " $esi $T2 12 - ^ ="
+                   " $ebp $T2 16 - ^ =\n");
+  Label frame1_esp, frame1_ebp;
+  stack_section.start() = 0x80000000;
+  stack_section
+    // frame 0
+    .D32(frame1_ebp)                    // saved regs: %ebp
+    .D32(0xa7120d1a)                    //             %esi
+    .D32(0x630891be)                    //             %edi
+    .D32(0x9068a878)                    //             %ebx
+    .D32(0xa08ea45f)                    // locals: unused
+    .D32(0x40001350)                    // return address
+    // frame 1
+    .Mark(&frame1_esp)
+    .Append(12, 0)                      // empty space
+    .Mark(&frame1_ebp)
+    .D32(0)                             // saved %ebp (stack end)
+    .D32(0);                            // saved %eip (stack end)
+
+  RegionFromSection();
+  raw_context.eip = 0x4000aa85;
+  raw_context.esp = stack_section.start().Value();
+  raw_context.ebp = 0xf052c1de;         // should not be needed to walk frame
+
+  StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+  StackwalkerX86 walker(&system_info, &raw_context, &stack_region, &modules,
+                        &frame_symbolizer);
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(0U, modules_without_symbols.size());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+  ASSERT_EQ(2U, frames->size());
+
+  {  // To avoid reusing locals by mistake
+    StackFrameX86 *frame0 = static_cast<StackFrameX86 *>(frames->at(0));
+    EXPECT_EQ(StackFrame::FRAME_TRUST_CONTEXT, frame0->trust);
+    ASSERT_EQ(StackFrameX86::CONTEXT_VALID_ALL, frame0->context_validity);
+    EXPECT_EQ(0x4000aa85U, frame0->instruction);
+    EXPECT_EQ(0x4000aa85U, frame0->context.eip);
+    EXPECT_EQ(stack_section.start().Value(), frame0->context.esp);
+    EXPECT_EQ(0xf052c1deU, frame0->context.ebp);
+    EXPECT_TRUE(frame0->windows_frame_info != NULL);
+  }
+
+  {  // To avoid reusing locals by mistake
+    StackFrameX86 *frame1 = static_cast<StackFrameX86 *>(frames->at(1));
+    EXPECT_EQ(StackFrame::FRAME_TRUST_CFI, frame1->trust);
+    ASSERT_EQ((StackFrameX86::CONTEXT_VALID_EIP
+               | StackFrameX86::CONTEXT_VALID_ESP
+               | StackFrameX86::CONTEXT_VALID_EBP
+               | StackFrameX86::CONTEXT_VALID_EBX
+               | StackFrameX86::CONTEXT_VALID_ESI
+               | StackFrameX86::CONTEXT_VALID_EDI),
+              frame1->context_validity);
+    EXPECT_EQ(0x40001350U, frame1->instruction + 1);
+    EXPECT_EQ(0x40001350U, frame1->context.eip);
+    EXPECT_EQ(frame1_esp.Value(), frame1->context.esp);
+    EXPECT_EQ(frame1_ebp.Value(), frame1->context.ebp);
+    EXPECT_EQ(0x9068a878U, frame1->context.ebx);
+    EXPECT_EQ(0xa7120d1aU, frame1->context.esi);
+    EXPECT_EQ(0x630891beU, frame1->context.edi);
+    EXPECT_EQ(NULL, frame1->windows_frame_info);
+  }
+}
+
+// Use Windows frame data (a "STACK WIN 4" record, from a
+// FrameTypeFrameData DIA record) to walk a stack frame where the stack
+// is aligned and we must search
+TEST_F(GetCallerFrame, WindowsFrameDataAligned) {
+  SetModuleSymbols(&module1,
+                   "STACK WIN 4 aa85 176 0 0 4 4 8 0 1"
+                   " $T1 .raSearch ="
+                   " $T0 $T1 4 - 8 @ ="
+                   " $ebp $T1 4 - ^ ="
+                   " $eip $T1 ^ ="
+                   " $esp $T1 4 + =");
+  Label frame0_esp, frame0_ebp;
+  Label frame1_esp, frame1_ebp;
+  stack_section.start() = 0x80000000;
+  stack_section
+    // frame 0
+    .Mark(&frame0_esp)
+    .D32(0x0ffa0ffa)                    // unused saved register
+    .D32(0xdeaddead)                    // locals
+    .D32(0xbeefbeef)
+    .D32(0)                             // 8-byte alignment
+    .Mark(&frame0_ebp)
+    .D32(frame1_ebp)                    // saved %ebp
+    .D32(0x5000129d)                    // return address
+    // frame 1
+    .Mark(&frame1_esp)
+    .D32(0x1)                           // parameter
+    .Mark(&frame1_ebp)
+    .D32(0)                             // saved %ebp (stack end)
+    .D32(0);                            // saved %eip (stack end)
+
+  RegionFromSection();
+  raw_context.eip = 0x4000aa85;
+  raw_context.esp = frame0_esp.Value();
+  raw_context.ebp = frame0_ebp.Value();
+
+  StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+  StackwalkerX86 walker(&system_info, &raw_context, &stack_region, &modules,
+                        &frame_symbolizer);
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(1U, modules_without_symbols.size());
+  ASSERT_EQ("module2", modules_without_symbols[0]->debug_file());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+  ASSERT_EQ(2U, frames->size());
+
+  {  // To avoid reusing locals by mistake
+    StackFrameX86 *frame0 = static_cast<StackFrameX86 *>(frames->at(0));
+    EXPECT_EQ(StackFrame::FRAME_TRUST_CONTEXT, frame0->trust);
+    ASSERT_EQ(StackFrameX86::CONTEXT_VALID_ALL, frame0->context_validity);
+    EXPECT_EQ(0x4000aa85U, frame0->instruction);
+    EXPECT_EQ(0x4000aa85U, frame0->context.eip);
+    EXPECT_EQ(frame0_esp.Value(), frame0->context.esp);
+    EXPECT_EQ(frame0_ebp.Value(), frame0->context.ebp);
+    EXPECT_TRUE(frame0->windows_frame_info != NULL);
+  }
+
+  {  // To avoid reusing locals by mistake
+    StackFrameX86 *frame1 = static_cast<StackFrameX86 *>(frames->at(1));
+    EXPECT_EQ(StackFrame::FRAME_TRUST_CFI, frame1->trust);
+    ASSERT_EQ((StackFrameX86::CONTEXT_VALID_EIP
+               | StackFrameX86::CONTEXT_VALID_ESP
+               | StackFrameX86::CONTEXT_VALID_EBP),
+              frame1->context_validity);
+    EXPECT_EQ(0x5000129dU, frame1->instruction + 1);
+    EXPECT_EQ(0x5000129dU, frame1->context.eip);
+    EXPECT_EQ(frame1_esp.Value(), frame1->context.esp);
+    EXPECT_EQ(frame1_ebp.Value(), frame1->context.ebp);
+    EXPECT_EQ(NULL, frame1->windows_frame_info);
+  }
+}
+
+// Use Windows frame data (a "STACK WIN 4" record, from a
+// FrameTypeFrameData DIA record) to walk a frame, and depend on the
+// parameter size from the callee as well.
+TEST_F(GetCallerFrame, WindowsFrameDataParameterSize) {
+  SetModuleSymbols(&module1, "FUNC 1000 100 c module1::wheedle\n");
+  SetModuleSymbols(&module2,
+                   // Note bogus parameter size in FUNC record; the stack walker
+                   // should prefer the STACK WIN record, and see '4' below.
+                   "FUNC aa85 176 beef module2::whine\n"
+                   "STACK WIN 4 aa85 176 0 0 4 10 4 0 1"
+                   " $T2 $esp .cbLocals + .cbSavedRegs + ="
+                   " $T0 .raSearchStart ="
+                   " $eip $T0 ^ ="
+                   " $esp $T0 4 + ="
+                   " $ebp $T0 20 - ^ ="
+                   " $ebx $T0 8 - ^ =\n");
+  Label frame0_esp, frame0_ebp;
+  Label frame1_esp;
+  Label frame2_esp, frame2_ebp;
+  stack_section.start() = 0x80000000;
+  stack_section
+    // frame 0, in module1::wheedle.  Traditional frame.
+    .Mark(&frame0_esp)
+    .Append(16, 0)      // frame space
+    .Mark(&frame0_ebp)
+    .D32(0x6fa902e0)    // saved %ebp.  Not a frame pointer.
+    .D32(0x5000aa95)    // return address, in module2::whine
+    // frame 1, in module2::whine.  FrameData frame.
+    .Mark(&frame1_esp)
+    .D32(0xbaa0cb7a)    // argument 3 passed to module1::wheedle
+    .D32(0xbdc92f9f)    // argument 2
+    .D32(0x0b1d8442)    // argument 1
+    .D32(frame2_ebp)    // saved %ebp
+    .D32(0xb1b90a15)    // unused
+    .D32(0xf18e072d)    // unused
+    .D32(0x2558c7f3)    // saved %ebx
+    .D32(0x0365e25e)    // unused
+    .D32(0x2a179e38)    // return address; $T0 points here
+    // frame 2, in no module
+    .Mark(&frame2_esp)
+    .Append(12, 0)      // empty space
+    .Mark(&frame2_ebp)
+    .D32(0)             // saved %ebp (stack end)
+    .D32(0);            // saved %eip (stack end)
+
+  RegionFromSection();
+  raw_context.eip = 0x40001004;  // in module1::wheedle
+  raw_context.esp = stack_section.start().Value();
+  raw_context.ebp = frame0_ebp.Value();
+
+  StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+  StackwalkerX86 walker(&system_info, &raw_context, &stack_region, &modules,
+                        &frame_symbolizer);
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(0U, modules_without_symbols.size());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+  ASSERT_EQ(3U, frames->size());
+
+  {  // To avoid reusing locals by mistake
+    StackFrameX86 *frame0 = static_cast<StackFrameX86 *>(frames->at(0));
+    EXPECT_EQ(StackFrame::FRAME_TRUST_CONTEXT, frame0->trust);
+    ASSERT_EQ(StackFrameX86::CONTEXT_VALID_ALL, frame0->context_validity);
+    EXPECT_EQ(0x40001004U, frame0->instruction);
+    EXPECT_EQ(0x40001004U, frame0->context.eip);
+    EXPECT_EQ(frame0_esp.Value(), frame0->context.esp);
+    EXPECT_EQ(frame0_ebp.Value(), frame0->context.ebp);
+    EXPECT_EQ(&module1, frame0->module);
+    EXPECT_EQ("module1::wheedle", frame0->function_name);
+    EXPECT_EQ(0x40001000U, frame0->function_base);
+    // The FUNC record for module1::wheedle should have produced a
+    // WindowsFrameInfo structure with only the parameter size valid.
+    ASSERT_TRUE(frame0->windows_frame_info != NULL);
+    EXPECT_EQ(WindowsFrameInfo::VALID_PARAMETER_SIZE,
+              frame0->windows_frame_info->valid);
+    EXPECT_EQ(WindowsFrameInfo::STACK_INFO_UNKNOWN,
+              frame0->windows_frame_info->type_);
+    EXPECT_EQ(12U, frame0->windows_frame_info->parameter_size);
+  }
+
+  {  // To avoid reusing locals by mistake
+    StackFrameX86 *frame1 = static_cast<StackFrameX86 *>(frames->at(1));
+    EXPECT_EQ(StackFrame::FRAME_TRUST_FP, frame1->trust);
+    ASSERT_EQ((StackFrameX86::CONTEXT_VALID_EIP
+               | StackFrameX86::CONTEXT_VALID_ESP
+               | StackFrameX86::CONTEXT_VALID_EBP),
+              frame1->context_validity);
+    EXPECT_EQ(0x5000aa95U, frame1->instruction + 1);
+    EXPECT_EQ(0x5000aa95U, frame1->context.eip);
+    EXPECT_EQ(frame1_esp.Value(), frame1->context.esp);
+    EXPECT_EQ(0x6fa902e0U, frame1->context.ebp);
+    EXPECT_EQ(&module2, frame1->module);
+    EXPECT_EQ("module2::whine", frame1->function_name);
+    EXPECT_EQ(0x5000aa85U, frame1->function_base);
+    ASSERT_TRUE(frame1->windows_frame_info != NULL);
+    EXPECT_EQ(WindowsFrameInfo::VALID_ALL, frame1->windows_frame_info->valid);
+    EXPECT_EQ(WindowsFrameInfo::STACK_INFO_FRAME_DATA,
+              frame1->windows_frame_info->type_);
+    // This should not see the 0xbeef parameter size from the FUNC
+    // record, but should instead see the STACK WIN record.
+    EXPECT_EQ(4U, frame1->windows_frame_info->parameter_size);
+  }
+
+  {  // To avoid reusing locals by mistake
+    StackFrameX86 *frame2 = static_cast<StackFrameX86 *>(frames->at(2));
+    EXPECT_EQ(StackFrame::FRAME_TRUST_CFI, frame2->trust);
+    ASSERT_EQ((StackFrameX86::CONTEXT_VALID_EIP
+               | StackFrameX86::CONTEXT_VALID_ESP
+               | StackFrameX86::CONTEXT_VALID_EBP
+               | StackFrameX86::CONTEXT_VALID_EBX),
+              frame2->context_validity);
+    EXPECT_EQ(0x2a179e38U, frame2->instruction + 1);
+    EXPECT_EQ(0x2a179e38U, frame2->context.eip);
+    EXPECT_EQ(frame2_esp.Value(), frame2->context.esp);
+    EXPECT_EQ(frame2_ebp.Value(), frame2->context.ebp);
+    EXPECT_EQ(0x2558c7f3U, frame2->context.ebx);
+    EXPECT_EQ(NULL, frame2->module);
+    EXPECT_EQ(NULL, frame2->windows_frame_info);
+  }
+}
+
+// Use Windows frame data (a "STACK WIN 4" record, from a
+// FrameTypeFrameData DIA record) to walk a stack frame, where the
+// expression fails to yield both an $eip and an $ebp value, and the stack
+// walker must scan.
+TEST_F(GetCallerFrame, WindowsFrameDataScan) {
+  SetModuleSymbols(&module1,
+                   "STACK WIN 4 c8c 111 0 0 4 10 4 0 1 bad program string\n");
+  // Mark frame 1's PC as the end of the stack.
+  SetModuleSymbols(&module2,
+                   "FUNC 7c38 accf 0 module2::function\n"
+                   "STACK WIN 4 7c38 accf 0 0 4 10 4 0 1 $eip 0 = $ebp 0 =\n");
+  Label frame1_esp;
+  stack_section.start() = 0x80000000;
+  stack_section
+    // frame 0
+    .Append(16, 0x2a)                   // unused, garbage
+    .D32(0x50007ce9)                    // return address
+    // frame 1
+    .Mark(&frame1_esp)
+    .Append(8, 0);                      // empty space
+
+  RegionFromSection();
+  raw_context.eip = 0x40000c9c;
+  raw_context.esp = stack_section.start().Value();
+  raw_context.ebp = 0x2ae314cd;         // should not be needed to walk frame
+
+  StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+  StackwalkerX86 walker(&system_info, &raw_context, &stack_region, &modules,
+                        &frame_symbolizer);
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(0U, modules_without_symbols.size());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+  ASSERT_EQ(2U, frames->size());
+
+  {  // To avoid reusing locals by mistake
+    StackFrameX86 *frame0 = static_cast<StackFrameX86 *>(frames->at(0));
+    EXPECT_EQ(StackFrame::FRAME_TRUST_CONTEXT, frame0->trust);
+    ASSERT_EQ(StackFrameX86::CONTEXT_VALID_ALL, frame0->context_validity);
+    EXPECT_EQ(0x40000c9cU, frame0->instruction);
+    EXPECT_EQ(0x40000c9cU, frame0->context.eip);
+    EXPECT_EQ(stack_section.start().Value(), frame0->context.esp);
+    EXPECT_EQ(0x2ae314cdU, frame0->context.ebp);
+    EXPECT_TRUE(frame0->windows_frame_info != NULL);
+  }
+
+  {  // To avoid reusing locals by mistake
+    StackFrameX86 *frame1 = static_cast<StackFrameX86 *>(frames->at(1));
+    EXPECT_EQ(StackFrame::FRAME_TRUST_SCAN, frame1->trust);
+    // I'd argue that CONTEXT_VALID_EBP shouldn't be here, since the walker
+    // does not actually fetch the EBP after a scan (forcing the next frame
+    // to be scanned as well). But let's grandfather the existing behavior in
+    // for now.
+    ASSERT_EQ((StackFrameX86::CONTEXT_VALID_EIP
+               | StackFrameX86::CONTEXT_VALID_ESP
+               | StackFrameX86::CONTEXT_VALID_EBP),
+              frame1->context_validity);
+    EXPECT_EQ(0x50007ce9U, frame1->instruction + 1);
+    EXPECT_EQ(0x50007ce9U, frame1->context.eip);
+    EXPECT_EQ(frame1_esp.Value(), frame1->context.esp);
+    EXPECT_TRUE(frame1->windows_frame_info != NULL);
+  }
+}
+
+// Use Windows frame data (a "STACK WIN 4" record, from a
+// FrameTypeFrameData DIA record) to walk a stack frame, where the
+// expression yields an $eip that falls outside of any module, and the
+// stack walker must scan.
+TEST_F(GetCallerFrame, WindowsFrameDataBadEIPScan) {
+  SetModuleSymbols(&module1,
+                   "STACK WIN 4 6e6 e7 0 0 0 8 4 0 1"
+                   // A traditional frame, actually.
+                   " $eip $ebp 4 + ^ = $esp $ebp 8 + = $ebp $ebp ^ =\n");
+  // Mark frame 1's PC as the end of the stack.
+  SetModuleSymbols(&module2,
+                   "FUNC cfdb 8406 0 module2::function\n"
+                   "STACK WIN 4 cfdb 8406 0 0 0 0 0 0 1 $eip 0 = $ebp 0 =\n");
+  stack_section.start() = 0x80000000;
+
+  // In this stack, the context's %ebp is pointing at the wrong place, so
+  // the stack walker needs to scan to find the return address, and then
+  // scan again to find the caller's saved %ebp.
+  Label frame0_ebp, frame1_ebp, frame1_esp;
+  stack_section
+    // frame 0
+    .Append(8, 0x2a)            // garbage
+    .Mark(&frame0_ebp)          // frame 0 %ebp points here, but should point
+                                // at *** below
+    // The STACK WIN record says that the following two values are
+    // frame 1's saved %ebp and return address, but the %ebp is wrong;
+    // they're garbage. The stack walker will scan for the right values.
+    .D32(0x3d937b2b)            // alleged to be frame 1's saved %ebp
+    .D32(0x17847f5b)            // alleged to be frame 1's return address
+    .D32(frame1_ebp)            // frame 1's real saved %ebp; scan will find
+    .D32(0x2b2b2b2b)            // first word of realigned register save area
+    // *** frame 0 %ebp ought to be pointing here
+    .D32(0x2c2c2c2c)            // realigned locals area
+    .D32(0x5000d000)            // frame 1's real saved %eip; scan will find
+    // Frame 1, in module2::function. The STACK WIN record describes
+    // this as the oldest frame, without referring to its contents, so
+    // we needn't to provide any actual data here.
+    .Mark(&frame1_esp)
+    .Mark(&frame1_ebp)          // frame 1 %ebp points here
+    // A dummy value for frame 1's %ebp to point at. The scan recognizes the
+    // saved %ebp because it points to a valid word in the stack memory region.
+    .D32(0x2d2d2d2d);
+
+  RegionFromSection();
+  raw_context.eip = 0x40000700;
+  raw_context.esp = stack_section.start().Value();
+  raw_context.ebp = frame0_ebp.Value();
+
+  StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+  StackwalkerX86 walker(&system_info, &raw_context, &stack_region, &modules,
+                        &frame_symbolizer);
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(0U, modules_without_symbols.size());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+  ASSERT_EQ(2U, frames->size());
+
+  {  // To avoid reusing locals by mistake
+    StackFrameX86 *frame0 = static_cast<StackFrameX86 *>(frames->at(0));
+    EXPECT_EQ(StackFrame::FRAME_TRUST_CONTEXT, frame0->trust);
+    ASSERT_EQ(StackFrameX86::CONTEXT_VALID_ALL, frame0->context_validity);
+    EXPECT_EQ(0x40000700U, frame0->instruction);
+    EXPECT_EQ(0x40000700U, frame0->context.eip);
+    EXPECT_EQ(stack_section.start().Value(), frame0->context.esp);
+    EXPECT_EQ(frame0_ebp.Value(), frame0->context.ebp);
+    EXPECT_TRUE(frame0->windows_frame_info != NULL);
+  }
+
+  {  // To avoid reusing locals by mistake
+    StackFrameX86 *frame1 = static_cast<StackFrameX86 *>(frames->at(1));
+    EXPECT_EQ(StackFrame::FRAME_TRUST_CFI_SCAN, frame1->trust);
+    // I'd argue that CONTEXT_VALID_EBP shouldn't be here, since the
+    // walker does not actually fetch the EBP after a scan (forcing the
+    // next frame to be scanned as well). But let's grandfather the existing
+    // behavior in for now.
+    ASSERT_EQ((StackFrameX86::CONTEXT_VALID_EIP
+               | StackFrameX86::CONTEXT_VALID_ESP
+               | StackFrameX86::CONTEXT_VALID_EBP),
+              frame1->context_validity);
+    EXPECT_EQ(0x5000d000U, frame1->instruction + 1);
+    EXPECT_EQ(0x5000d000U, frame1->context.eip);
+    EXPECT_EQ(frame1_esp.Value(), frame1->context.esp);
+    EXPECT_EQ(frame1_ebp.Value(), frame1->context.ebp);
+    EXPECT_TRUE(frame1->windows_frame_info != NULL);
+  }
+}
+
+// Use Windows FrameTypeFPO data to walk a stack frame for a function that
+// does not modify %ebp from the value it had in the caller.
+TEST_F(GetCallerFrame, WindowsFPOUnchangedEBP) {
+  SetModuleSymbols(&module1,
+                   // Note bogus parameter size in FUNC record; the walker
+                   // should prefer the STACK WIN record, and see the '8' below.
+                   "FUNC e8a8 100 feeb module1::discombobulated\n"
+                   "STACK WIN 0 e8a8 100 0 0 8 4 10 0 0 0\n");
+  Label frame0_esp;
+  Label frame1_esp, frame1_ebp;
+  stack_section.start() = 0x80000000;
+  stack_section
+    // frame 0, in module1::wheedle.  FrameTypeFPO (STACK WIN 0) frame.
+    .Mark(&frame0_esp)
+    // no outgoing parameters; this is the youngest frame.
+    .D32(0x7c521352)     // four bytes of saved registers
+    .Append(0x10, 0x42)  // local area
+    .D32(0x40009b5b)     // return address, in module1, no function
+    // frame 1, in module1, no function.
+    .Mark(&frame1_esp)
+    .D32(0xf60ea7fc)     // junk
+    .Mark(&frame1_ebp)
+    .D32(0)              // saved %ebp (stack end)
+    .D32(0);             // saved %eip (stack end)
+
+  RegionFromSection();
+  raw_context.eip = 0x4000e8b8;  // in module1::whine
+  raw_context.esp = stack_section.start().Value();
+  // Frame pointer unchanged from caller.
+  raw_context.ebp = frame1_ebp.Value();
+
+  StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+  StackwalkerX86 walker(&system_info, &raw_context, &stack_region, &modules,
+                        &frame_symbolizer);
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(0U, modules_without_symbols.size());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+  ASSERT_EQ(2U, frames->size());
+
+  {  // To avoid reusing locals by mistake
+    StackFrameX86 *frame0 = static_cast<StackFrameX86 *>(frames->at(0));
+    EXPECT_EQ(StackFrame::FRAME_TRUST_CONTEXT, frame0->trust);
+    ASSERT_EQ(StackFrameX86::CONTEXT_VALID_ALL, frame0->context_validity);
+    EXPECT_EQ(0x4000e8b8U, frame0->instruction);
+    EXPECT_EQ(0x4000e8b8U, frame0->context.eip);
+    EXPECT_EQ(frame0_esp.Value(), frame0->context.esp);
+    // unchanged from caller
+    EXPECT_EQ(frame1_ebp.Value(), frame0->context.ebp);
+    EXPECT_EQ(&module1, frame0->module);
+    EXPECT_EQ("module1::discombobulated", frame0->function_name);
+    EXPECT_EQ(0x4000e8a8U, frame0->function_base);
+    // The STACK WIN record for module1::discombobulated should have
+    // produced a fully populated WindowsFrameInfo structure.
+    ASSERT_TRUE(frame0->windows_frame_info != NULL);
+    EXPECT_EQ(WindowsFrameInfo::VALID_ALL, frame0->windows_frame_info->valid);
+    EXPECT_EQ(WindowsFrameInfo::STACK_INFO_FPO,
+              frame0->windows_frame_info->type_);
+    EXPECT_EQ(0x10U, frame0->windows_frame_info->local_size);
+  }
+
+  {  // To avoid reusing locals by mistake
+    StackFrameX86 *frame1 = static_cast<StackFrameX86 *>(frames->at(1));
+    EXPECT_EQ(StackFrame::FRAME_TRUST_CFI, frame1->trust);
+    ASSERT_EQ((StackFrameX86::CONTEXT_VALID_EIP
+               | StackFrameX86::CONTEXT_VALID_ESP
+               | StackFrameX86::CONTEXT_VALID_EBP),
+              frame1->context_validity);
+    EXPECT_EQ(0x40009b5bU, frame1->instruction + 1);
+    EXPECT_EQ(0x40009b5bU, frame1->context.eip);
+    EXPECT_EQ(frame1_esp.Value(), frame1->context.esp);
+    EXPECT_EQ(frame1_ebp.Value(), frame1->context.ebp);
+    EXPECT_EQ(&module1, frame1->module);
+    EXPECT_EQ("", frame1->function_name);
+    EXPECT_EQ(NULL, frame1->windows_frame_info);
+  }
+}
+
+// Use Windows FrameTypeFPO data to walk a stack frame for a function
+// that uses %ebp for its own purposes, saving the value it had in the
+// caller in the standard place in the saved register area.
+TEST_F(GetCallerFrame, WindowsFPOUsedEBP) {
+  SetModuleSymbols(&module1,
+                   // Note bogus parameter size in FUNC record; the walker
+                   // should prefer the STACK WIN record, and see the '8' below.
+                   "FUNC 9aa8 e6 abbe module1::RaisedByTheAliens\n"
+                   "STACK WIN 0 9aa8 e6 a 0 10 8 4 0 0 1\n");
+  Label frame0_esp;
+  Label frame1_esp, frame1_ebp;
+  stack_section.start() = 0x80000000;
+  stack_section
+    // frame 0, in module1::wheedle.  FrameTypeFPO (STACK WIN 0) frame.
+    .Mark(&frame0_esp)
+    // no outgoing parameters; this is the youngest frame.
+    .D32(frame1_ebp)    // saved register area: saved %ebp
+    .D32(0xb68bd5f9)    // saved register area: something else
+    .D32(0xd25d05fc)    // local area
+    .D32(0x4000debe)    // return address, in module1, no function
+    // frame 1, in module1, no function.
+    .Mark(&frame1_esp)
+    .D32(0xf0c9a974)    // junk
+    .Mark(&frame1_ebp)
+    .D32(0)             // saved %ebp (stack end)
+    .D32(0);            // saved %eip (stack end)
+
+  RegionFromSection();
+  raw_context.eip = 0x40009ab8;  // in module1::RaisedByTheAliens
+  raw_context.esp = stack_section.start().Value();
+  // RaisedByTheAliens uses %ebp for its own mysterious purposes.
+  raw_context.ebp = 0xecbdd1a5;
+
+  StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+  StackwalkerX86 walker(&system_info, &raw_context, &stack_region, &modules,
+                        &frame_symbolizer);
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(0U, modules_without_symbols.size());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+  ASSERT_EQ(2U, frames->size());
+
+  {  // To avoid reusing locals by mistake
+    StackFrameX86 *frame0 = static_cast<StackFrameX86 *>(frames->at(0));
+    EXPECT_EQ(StackFrame::FRAME_TRUST_CONTEXT, frame0->trust);
+    ASSERT_EQ(StackFrameX86::CONTEXT_VALID_ALL, frame0->context_validity);
+    EXPECT_EQ(0x40009ab8U, frame0->instruction);
+    EXPECT_EQ(0x40009ab8U, frame0->context.eip);
+    EXPECT_EQ(frame0_esp.Value(), frame0->context.esp);
+    EXPECT_EQ(0xecbdd1a5, frame0->context.ebp);
+    EXPECT_EQ(&module1, frame0->module);
+    EXPECT_EQ("module1::RaisedByTheAliens", frame0->function_name);
+    EXPECT_EQ(0x40009aa8U, frame0->function_base);
+    // The STACK WIN record for module1::RaisedByTheAliens should have
+    // produced a fully populated WindowsFrameInfo structure.
+    ASSERT_TRUE(frame0->windows_frame_info != NULL);
+    EXPECT_EQ(WindowsFrameInfo::VALID_ALL, frame0->windows_frame_info->valid);
+    EXPECT_EQ(WindowsFrameInfo::STACK_INFO_FPO,
+              frame0->windows_frame_info->type_);
+    EXPECT_EQ("", frame0->windows_frame_info->program_string);
+    EXPECT_TRUE(frame0->windows_frame_info->allocates_base_pointer);
+  }
+
+  {  // To avoid reusing locals by mistake
+    StackFrameX86 *frame1 = static_cast<StackFrameX86 *>(frames->at(1));
+    EXPECT_EQ(StackFrame::FRAME_TRUST_CFI, frame1->trust);
+    ASSERT_EQ((StackFrameX86::CONTEXT_VALID_EIP
+               | StackFrameX86::CONTEXT_VALID_ESP
+               | StackFrameX86::CONTEXT_VALID_EBP),
+              frame1->context_validity);
+    EXPECT_EQ(0x4000debeU, frame1->instruction + 1);
+    EXPECT_EQ(0x4000debeU, frame1->context.eip);
+    EXPECT_EQ(frame1_esp.Value(), frame1->context.esp);
+    EXPECT_EQ(frame1_ebp.Value(), frame1->context.ebp);
+    EXPECT_EQ(&module1, frame1->module);
+    EXPECT_EQ("", frame1->function_name);
+    EXPECT_EQ(NULL, frame1->windows_frame_info);
+  }
+}
+
+// This is a regression unit test which covers a bug which has to do with
+// FPO-optimized Windows system call stubs in the context frame.  There is
+// a more recent Windows system call dispatch mechanism which differs from
+// the one which is being tested here.  The newer system call dispatch
+// mechanism creates an extra context frame (KiFastSystemCallRet).
+TEST_F(GetCallerFrame, WindowsFPOSystemCall) {
+  SetModuleSymbols(&module3,  // ntdll.dll
+                   "PUBLIC 1f8ac c ZwWaitForSingleObject\n"
+                   "STACK WIN 0 1f8ac 1b 0 0 c 0 0 0 0 0\n");
+  SetModuleSymbols(&module4,  // kernelbase.dll
+                   "PUBLIC 109f9 c WaitForSingleObjectEx\n"
+                   "PUBLIC 36590 0 _except_handler4\n"
+                   "STACK WIN 4 109f9 df c 0 c c 48 0 1 $T0 $ebp = $eip "
+                   "$T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L "
+                   "$T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =\n"
+                   "STACK WIN 4 36590 154 17 0 10 0 14 0 1 $T0 $ebp = $eip "
+                   "$T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 "
+                   ".cbSavedRegs - = $P $T0 8 + .cbParams + =\n");
+  SetModuleSymbols(&module5,  // kernel32.dll
+                   "PUBLIC 11136 8 WaitForSingleObject\n"
+                   "PUBLIC 11151 c WaitForSingleObjectExImplementation\n"
+                   "STACK WIN 4 11136 16 5 0 8 0 0 0 1 $T0 $ebp = $eip "
+                   "$T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L "
+                   "$T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =\n"
+                   "STACK WIN 4 11151 7a 5 0 c 0 0 0 1 $T0 $ebp = $eip "
+                   "$T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L "
+                   "$T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =\n");
+  SetModuleSymbols(&module6,  // chrome.dll
+                   "FILE 7038 some_file_name.h\n"
+                   "FILE 839776 some_file_name.cc\n"
+                   "FUNC 217fda 17 4 function_217fda\n"
+                   "217fda 4 102 839776\n"
+                   "FUNC 217ff1 a 4 function_217ff1\n"
+                   "217ff1 0 594 7038\n"
+                   "217ff1 a 596 7038\n"
+                   "STACK WIN 0 217ff1 a 0 0 4 0 0 0 0 0\n");
+
+  Label frame0_esp, frame1_esp;
+  Label frame1_ebp, frame2_ebp, frame3_ebp;
+  stack_section.start() = 0x002ff290;
+  stack_section
+    .Mark(&frame0_esp)
+    .D32(0x771ef8c1)    // EIP in frame 0 (system call)
+    .D32(0x75fa0a91)    // return address of frame 0
+    .Mark(&frame1_esp)
+    .D32(0x000017b0)    // args to child
+    .D32(0x00000000)
+    .D32(0x002ff2d8)
+    .D32(0x88014a2e)
+    .D32(0x002ff364)
+    .D32(0x000017b0)
+    .D32(0x00000000)
+    .D32(0x00000024)
+    .D32(0x00000001)
+    .D32(0x00000000)
+    .D32(0x00000000)
+    .D32(0x00000000)
+    .D32(0x00000000)
+    .D32(0x00000000)
+    .D32(0x00000000)
+    .D32(0x00000000)
+    .D32(0x9e3b9800)
+    .D32(0xfffffff7)
+    .D32(0x00000000)
+    .D32(0x002ff2a4)
+    .D32(0x64a07ff1)    // random value to be confused with a return address
+    .D32(0x002ff8dc)
+    .D32(0x75fc6590)    // random value to be confused with a return address
+    .D32(0xfdd2c6ea)
+    .D32(0x00000000)
+    .Mark(&frame1_ebp)
+    .D32(frame2_ebp)    // Child EBP
+    .D32(0x75741194)    // return address of frame 1
+    .D32(0x000017b0)    // args to child
+    .D32(0x0036ee80)
+    .D32(0x00000000)
+    .D32(0x65bc7d14)
+    .Mark(&frame2_ebp)
+    .D32(frame3_ebp)    // Child EBP
+    .D32(0x75741148)    // return address of frame 2
+    .D32(0x000017b0)    // args to child
+    .D32(0x0036ee80)
+    .D32(0x00000000)
+    .Mark(&frame3_ebp)
+    .D32(0)             // saved %ebp (stack end)
+    .D32(0);            // saved %eip (stack end)
+
+  RegionFromSection();
+  raw_context.eip = 0x771ef8c1;  // in ntdll::ZwWaitForSingleObject
+  raw_context.esp = stack_section.start().Value();
+  ASSERT_TRUE(raw_context.esp == frame0_esp.Value());
+  raw_context.ebp = frame1_ebp.Value();
+
+  StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+  StackwalkerX86 walker(&system_info, &raw_context, &stack_region, &modules,
+                        &frame_symbolizer);
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(0U, modules_without_symbols.size());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+
+  ASSERT_EQ(4U, frames->size());
+
+  {  // To avoid reusing locals by mistake
+    StackFrameX86 *frame0 = static_cast<StackFrameX86 *>(frames->at(0));
+    EXPECT_EQ(StackFrame::FRAME_TRUST_CONTEXT, frame0->trust);
+    ASSERT_EQ(StackFrameX86::CONTEXT_VALID_ALL, frame0->context_validity);
+    EXPECT_EQ(0x771ef8c1U, frame0->instruction);
+    EXPECT_EQ(0x771ef8c1U, frame0->context.eip);
+    EXPECT_EQ(frame0_esp.Value(), frame0->context.esp);
+    EXPECT_EQ(frame1_ebp.Value(), frame0->context.ebp);
+    EXPECT_EQ(&module3, frame0->module);
+    EXPECT_EQ("ZwWaitForSingleObject", frame0->function_name);
+    // The STACK WIN record for module3!ZwWaitForSingleObject should have
+    // produced a fully populated WindowsFrameInfo structure.
+    ASSERT_TRUE(frame0->windows_frame_info != NULL);
+    EXPECT_EQ(WindowsFrameInfo::VALID_ALL, frame0->windows_frame_info->valid);
+    EXPECT_EQ(WindowsFrameInfo::STACK_INFO_FPO,
+              frame0->windows_frame_info->type_);
+    EXPECT_EQ("", frame0->windows_frame_info->program_string);
+    EXPECT_FALSE(frame0->windows_frame_info->allocates_base_pointer);
+  }
+
+  {  // To avoid reusing locals by mistake
+    StackFrameX86 *frame1 = static_cast<StackFrameX86 *>(frames->at(1));
+    EXPECT_EQ(StackFrame::FRAME_TRUST_CFI, frame1->trust);
+    ASSERT_EQ((StackFrameX86::CONTEXT_VALID_EIP
+               | StackFrameX86::CONTEXT_VALID_ESP
+               | StackFrameX86::CONTEXT_VALID_EBP),
+              frame1->context_validity);
+    EXPECT_EQ(0x75fa0a91U, frame1->instruction + 1);
+    EXPECT_EQ(0x75fa0a91U, frame1->context.eip);
+    EXPECT_EQ(frame1_esp.Value(), frame1->context.esp);
+    EXPECT_EQ(frame1_ebp.Value(), frame1->context.ebp);
+    EXPECT_EQ(&module4, frame1->module);
+    EXPECT_EQ("WaitForSingleObjectEx", frame1->function_name);
+    // The STACK WIN record for module4!WaitForSingleObjectEx should have
+    // produced a fully populated WindowsFrameInfo structure.
+    ASSERT_TRUE(frame1->windows_frame_info != NULL);
+    EXPECT_EQ(WindowsFrameInfo::VALID_ALL, frame1->windows_frame_info->valid);
+    EXPECT_EQ(WindowsFrameInfo::STACK_INFO_FRAME_DATA,
+              frame1->windows_frame_info->type_);
+    EXPECT_EQ("$T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L "
+              "$T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =",
+              frame1->windows_frame_info->program_string);
+    EXPECT_FALSE(frame1->windows_frame_info->allocates_base_pointer);
+  }
+}
+
+// Scan the stack for a better return address and potentially skip frames
+// when the calculated return address is not in a known module.  Note, that
+// the span of this scan is somewhat arbitrarily limited to 120 search words
+// for the context frame and 30 search words (pointers) for the other frames:
+//     const int kRASearchWords = 30;
+// This means that frames can be skipped only when their size is relatively
+// small: smaller than 4 * kRASearchWords * sizeof(InstructionType)
+TEST_F(GetCallerFrame, ReturnAddressIsNotInKnownModule) {
+  MockCodeModule msvcrt_dll(0x77be0000, 0x58000, "msvcrt.dll", "version1");
+  SetModuleSymbols(&msvcrt_dll,  // msvcrt.dll
+                   "PUBLIC 38180 0 wcsstr\n"
+                   "STACK WIN 4 38180 61 10 0 8 0 0 0 1 $T0 $ebp = $eip $T0 "
+                   "4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs "
+                   "- = $P $T0 4 + .cbParams + =\n");
+
+  MockCodeModule kernel32_dll(0x7c800000, 0x103000, "kernel32.dll", "version1");
+  SetModuleSymbols(&kernel32_dll,  // kernel32.dll
+                   "PUBLIC efda 8 FindNextFileW\n"
+                   "STACK WIN 4 efda 1bb c 0 8 8 3c 0 1 $T0 $ebp = $eip $T0 "
+                   "4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs "
+                   "- = $P $T0 4 + .cbParams + =\n");
+
+  MockCodeModule chrome_dll(0x1c30000, 0x28C8000, "chrome.dll", "version1");
+  SetModuleSymbols(&chrome_dll,  // chrome.dll
+                   "FUNC e3cff 4af 0 file_util::FileEnumerator::Next()\n"
+                   "e3cff 1a 711 2505\n"
+                   "STACK WIN 4 e3cff 4af 20 0 4 c 94 0 1 $T1 .raSearch = "
+                   "$T0  $T1 4 - 8 @ = $ebp $T1 4 - ^ = $eip $T1 ^ = $esp "
+                   "$T1 4 + = $20 $T0 152 - ^ =  $23 $T0 156 - ^ =  $24 "
+                   "$T0 160 - ^ =\n");
+
+  // Create some modules with some stock debugging information.
+  MockCodeModules local_modules;
+  local_modules.Add(&msvcrt_dll);
+  local_modules.Add(&kernel32_dll);
+  local_modules.Add(&chrome_dll);
+
+  Label frame0_esp;
+  Label frame0_ebp;
+  Label frame1_ebp;
+  Label frame2_ebp;
+  Label frame3_ebp;
+
+  stack_section.start() = 0x0932f2d0;
+  stack_section
+    .Mark(&frame0_esp)
+    .D32(0x0764e000)
+    .D32(0x0764e068)
+    .Mark(&frame0_ebp)
+    .D32(frame1_ebp)    // Child EBP
+    .D32(0x001767a0)    // return address of frame 0
+                        // Not in known module
+    .D32(0x0764e0c6)
+    .D32(0x001bb1b8)
+    .D32(0x0764e068)
+    .D32(0x00000003)
+    .D32(0x0764e068)
+    .D32(0x00000003)
+    .D32(0x07578828)
+    .D32(0x0764e000)
+    .D32(0x00000000)
+    .D32(0x001c0010)
+    .D32(0x0764e0c6)
+    .Mark(&frame1_ebp)
+    .D32(frame2_ebp)    // Child EBP
+    .D32(0x7c80f10f)    // return address of frame 1
+                        // inside kernel32!FindNextFileW
+    .D32(0x000008f8)
+    .D32(0x00000000)
+    .D32(0x00000000)
+    .D32(0x00000000)
+    .D32(0x0932f34c)
+    .D32(0x0764e000)
+    .D32(0x00001000)
+    .D32(0x00000000)
+    .D32(0x00000001)
+    .D32(0x00000000)
+    .D32(0x00000000)
+    .D32(0x0932f6a8)
+    .D32(0x00000000)
+    .D32(0x0932f6d8)
+    .D32(0x00000000)
+    .D32(0x000000d6)
+    .D32(0x0764e000)
+    .D32(0x7ff9a000)
+    .D32(0x0932f3fc)
+    .D32(0x00000001)
+    .D32(0x00000001)
+    .D32(0x07578828)
+    .D32(0x0000002e)
+    .D32(0x0932f340)
+    .D32(0x0932eef4)
+    .D32(0x0932ffdc)
+    .D32(0x7c839ad8)
+    .D32(0x7c80f0d8)
+    .D32(0x00000000)
+    .Mark(&frame2_ebp)
+    .D32(frame3_ebp)    // Child EBP
+    .D32(0x01d13f91)    // return address of frame 2
+                        // inside chrome_dll!file_util::FileEnumerator::Next
+    .D32(0x07578828)
+    .D32(0x0932f6ac)
+    .D32(0x0932f9c4)
+    .D32(0x0932f9b4)
+    .D32(0x00000000)
+    .D32(0x00000003)
+    .D32(0x0932f978)
+    .D32(0x01094330)
+    .D32(0x00000000)
+    .D32(0x00000001)
+    .D32(0x01094330)
+    .D32(0x00000000)
+    .D32(0x00000000)
+    .D32(0x07f30000)
+    .D32(0x01c3ba17)
+    .D32(0x08bab840)
+    .D32(0x07f31580)
+    .D32(0x00000000)
+    .D32(0x00000007)
+    .D32(0x0932f940)
+    .D32(0x0000002e)
+    .D32(0x0932f40c)
+    .D32(0x01d13b53)
+    .D32(0x0932f958)
+    .D32(0x00000001)
+    .D32(0x00000007)
+    .D32(0x0932f940)
+    .D32(0x0000002e)
+    .D32(0x00000000)
+    .D32(0x0932f6ac)
+    .D32(0x01e13ef0)
+    .D32(0x00000001)
+    .D32(0x00000007)
+    .D32(0x0932f958)
+    .D32(0x08bab840)
+    .D32(0x0932f9b4)
+    .D32(0x00000000)
+    .D32(0x0932f9b4)
+    .D32(0x000000a7)
+    .D32(0x000000a7)
+    .D32(0x0932f998)
+    .D32(0x579627a2)
+    .Mark(&frame3_ebp)
+    .D32(0)             // saved %ebp (stack end)
+    .D32(0);            // saved %eip (stack end)
+
+  RegionFromSection();
+  raw_context.eip = 0x77c181cd;  // inside msvcrt!wcsstr
+  raw_context.esp = frame0_esp.Value();
+  raw_context.ebp = frame0_ebp.Value();
+  // sanity
+  ASSERT_TRUE(raw_context.esp == stack_section.start().Value());
+  ASSERT_TRUE(raw_context.ebp == stack_section.start().Value() + 8);
+
+  StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+  StackwalkerX86 walker(&system_info, &raw_context, &stack_region,
+                        &local_modules, &frame_symbolizer);
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(0U, modules_without_symbols.size());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+
+  ASSERT_EQ(3U, frames->size());
+
+  {  // To avoid reusing locals by mistake
+    StackFrameX86 *frame0 = static_cast<StackFrameX86 *>(frames->at(0));
+    EXPECT_EQ(StackFrame::FRAME_TRUST_CONTEXT, frame0->trust);
+    ASSERT_EQ(StackFrameX86::CONTEXT_VALID_ALL, frame0->context_validity);
+    EXPECT_EQ(0x77c181cdU, frame0->instruction);
+    EXPECT_EQ(0x77c181cdU, frame0->context.eip);
+    EXPECT_EQ(frame0_esp.Value(), frame0->context.esp);
+    EXPECT_EQ(frame0_ebp.Value(), frame0->context.ebp);
+    EXPECT_EQ(&msvcrt_dll, frame0->module);
+    EXPECT_EQ("wcsstr", frame0->function_name);
+    ASSERT_TRUE(frame0->windows_frame_info != NULL);
+    EXPECT_EQ(WindowsFrameInfo::VALID_ALL, frame0->windows_frame_info->valid);
+    EXPECT_EQ(WindowsFrameInfo::STACK_INFO_FRAME_DATA,
+              frame0->windows_frame_info->type_);
+    EXPECT_EQ("$T0 $ebp = $eip $T0 "
+              "4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs "
+              "- = $P $T0 4 + .cbParams + =",
+              frame0->windows_frame_info->program_string);
+    // It has program string, so allocates_base_pointer is not expected
+    EXPECT_FALSE(frame0->windows_frame_info->allocates_base_pointer);
+  }
+
+  {  // To avoid reusing locals by mistake
+    StackFrameX86 *frame1 = static_cast<StackFrameX86 *>(frames->at(1));
+    EXPECT_EQ(StackFrame::FRAME_TRUST_CFI_SCAN, frame1->trust);
+    ASSERT_EQ((StackFrameX86::CONTEXT_VALID_EIP |
+               StackFrameX86::CONTEXT_VALID_ESP |
+               StackFrameX86::CONTEXT_VALID_EBP),
+              frame1->context_validity);
+    EXPECT_EQ(0x7c80f10fU, frame1->instruction + 1);
+    EXPECT_EQ(0x7c80f10fU, frame1->context.eip);
+    // frame 1 was skipped, so intead of frame1_ebp compare with frame2_ebp.
+    EXPECT_EQ(frame2_ebp.Value(), frame1->context.ebp);
+    EXPECT_EQ(&kernel32_dll, frame1->module);
+    EXPECT_EQ("FindNextFileW", frame1->function_name);
+    ASSERT_TRUE(frame1->windows_frame_info != NULL);
+    EXPECT_EQ(WindowsFrameInfo::VALID_ALL, frame1->windows_frame_info->valid);
+    EXPECT_EQ(WindowsFrameInfo::STACK_INFO_FRAME_DATA,
+              frame1->windows_frame_info->type_);
+    EXPECT_EQ("$T0 $ebp = $eip $T0 "
+              "4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs "
+              "- = $P $T0 4 + .cbParams + =",
+              frame1->windows_frame_info->program_string);
+    EXPECT_FALSE(frame1->windows_frame_info->allocates_base_pointer);
+  }
+
+  {  // To avoid reusing locals by mistake
+    StackFrameX86 *frame2 = static_cast<StackFrameX86 *>(frames->at(2));
+    EXPECT_EQ(StackFrame::FRAME_TRUST_CFI, frame2->trust);
+    ASSERT_EQ((StackFrameX86::CONTEXT_VALID_EIP |
+               StackFrameX86::CONTEXT_VALID_ESP |
+               StackFrameX86::CONTEXT_VALID_EBP),
+              frame2->context_validity);
+    EXPECT_EQ(0x01d13f91U, frame2->instruction + 1);
+    EXPECT_EQ(0x01d13f91U, frame2->context.eip);
+    // frame 1 was skipped, so intead of frame2_ebp compare with frame3_ebp.
+    EXPECT_EQ(frame3_ebp.Value(), frame2->context.ebp);
+    EXPECT_EQ(&chrome_dll, frame2->module);
+    EXPECT_EQ("file_util::FileEnumerator::Next()", frame2->function_name);
+    ASSERT_TRUE(frame2->windows_frame_info != NULL);
+    EXPECT_EQ(WindowsFrameInfo::VALID_ALL, frame2->windows_frame_info->valid);
+    EXPECT_EQ(WindowsFrameInfo::STACK_INFO_FRAME_DATA,
+              frame2->windows_frame_info->type_);
+    EXPECT_EQ("$T1 .raSearch = "
+              "$T0  $T1 4 - 8 @ = $ebp $T1 4 - ^ = $eip $T1 ^ = $esp "
+              "$T1 4 + = $20 $T0 152 - ^ =  $23 $T0 156 - ^ =  $24 "
+              "$T0 160 - ^ =",
+              frame2->windows_frame_info->program_string);
+    EXPECT_FALSE(frame2->windows_frame_info->allocates_base_pointer);
+  }
+}
+
+// Test the .raSearchStart/.raSearch calculation when alignment operators are
+// used in the program string.  The current %ebp must be valid and it is the
+// only reliable data point that can be used for that calculation.
+TEST_F(GetCallerFrame, HandleAlignmentInProgramString) {
+  MockCodeModule chrome_dll(0x59630000, 0x19e3000, "chrome.dll", "version1");
+  SetModuleSymbols(&chrome_dll,  // chrome.dll
+                   "FUNC 56422 50c 8 base::MessageLoop::RunTask"
+                   "(base::PendingTask const &)\n"
+                   "56422 e 458 4589\n"
+                   "STACK WIN 4 56422 50c 11 0 8 c ac 0 1 $T1 .raSearch = $T0 "
+                   "$T1 4 - 8 @ = $ebp $T1 4 - ^ = $eip $T1 ^ = $esp $T1 4 + = "
+                   "$20 $T0 176 - ^ =  $23 $T0 180 - ^ =  $24 $T0 184 - ^ =\n"
+                   "FUNC 55d34 34a 0 base::MessageLoop::DoWork()\n"
+                   "55d34 11 596 4589\n"
+                   "STACK WIN 4 55d34 34a 19 0 0 c 134 0 1 $T1 .raSearch = "
+                   "$T0  $T1 4 - 8 @ = $ebp $T1 4 - ^ = $eip $T1 ^ = $esp "
+                   "$T1 4 + = $20 $T0 312 - ^ =  $23 $T0 316 - ^ =  $24 $T0 "
+                   "320 - ^ =\n"
+                   "FUNC 55c39 fb 0 base::MessagePumpForIO::DoRunLoop()\n"
+                   "55c39 d 518 19962\n"
+                   "STACK WIN 4 55c39 fb d 0 0 c 34 0 1 $T1 .raSearch = $T0 "
+                   "$T1 4 - 64 @ = $ebp $T1 4 - ^ = $eip $T1 ^ = $esp $T1 4 + "
+                   "= $20 $T0 56 - ^ =  $23 $T0 60 - ^ =  $24 $T0 64 - ^ =\n"
+                   "FUNC 55bf0 49 4 base::MessagePumpWin::Run(base::"
+                   "MessagePump::Delegate *)\n"
+                   "55bf0 49 48 4724\n"
+                   "STACK WIN 4 55bf0 49 c 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 "
+                   "+ ^ = $ebp $T0 ^ = $esp $T0 8 + =\n"
+                   "FUNC 165d de 4 malloc\n"
+                   "165d 6 119 54\n"
+                   "STACK WIN 4 165d de d 0 4 8 0 0 1 $T1 .raSearch = $T0 "
+                   "$T1 4 - 8 @ = $ebp $T1 4 - ^ = $eip $T1 ^ = $esp $T1 4 "
+                   "+ = $23 $T0 4 - ^ =  $24 $T0 8 - ^ =\n"
+                   "FUNC 55ac9 79 0 base::MessageLoop::RunInternal()\n"
+                   "55ac9 d 427 4589\n"
+                   "STACK WIN 4 55ac9 79 d 0 0 8 10 0 1 $T1 .raSearch = $T0 "
+                   "$T1 4 - 8 @ = $ebp $T1 4 - ^ = $eip $T1 ^ = $esp $T1 4 + = "
+                   "$23 $T0 20 - ^ =  $24 $T0 24 - ^ =\n");
+
+  // Create some modules with some stock debugging information.
+  MockCodeModules local_modules;
+  local_modules.Add(&chrome_dll);
+
+  Label frame0_esp;
+  Label frame0_ebp;
+  Label frame1_esp;
+  Label frame1_ebp;
+  Label frame2_esp;
+  Label frame2_ebp;
+  Label frame3_esp;
+  Label frame3_ebp;
+
+  stack_section.start() = 0x046bfc80;
+  stack_section
+    .D32(0)
+    .Mark(&frame0_esp)
+    .D32(0x01e235a0)
+    .D32(0x00000000)
+    .D32(0x01e9f580)
+    .D32(0x01e9f580)
+    .D32(0x00000020)
+    .D32(0x00000000)
+    .D32(0x00463674)
+    .D32(0x00000020)
+    .D32(0x00000000)
+    .D32(0x046bfcd8)
+    .D32(0x046bfcd8)
+    .D32(0x0001204b)
+    .D32(0x00000000)
+    .D32(0xfdddb523)
+    .D32(0x00000000)
+    .D32(0x00000007)
+    .D32(0x00000040)
+    .D32(0x00000000)
+    .D32(0x59631693)  // chrome_59630000!malloc+0x36
+    .D32(0x01e9f580)
+    .D32(0x01e9f580)
+    .D32(0x046bfcf8)
+    .D32(0x77da6704)  // ntdll!NtSetIoCompletion+0xc
+    .D32(0x046bfd4c)
+    .D32(0x59685bec)  // chrome_59630000!base::MessageLoop::StartHistogrammer..
+    .D32(0x01e235a0)
+
+    .Mark(&frame0_ebp)
+    .D32(frame1_ebp)  // Child EBP    .D32(0x046bfd0c)
+    .D32(0x59685c2e)  // Return address in
+                      // chrome_59630000!base::MessagePumpWin::Run+0x3e
+    .Mark(&frame1_esp)
+    .D32(0x01e75a90)
+    .D32(0x046bfd4c)
+    .D32(0x01e75a90)
+    .D32(0x00000000)
+    .D32(0x00000300)
+    .D32(0x00000001)
+
+    .Mark(&frame1_ebp)
+    .D32(frame2_ebp)  // Child EBP    .D32(0x046bfd30)
+    .D32(0x59685b3c)  // Return address in
+                      // chrome_59630000!base::MessageLoop::RunInternal+0x73
+    .Mark(&frame2_esp)
+    .D32(0x01e75a90)
+    .D32(0x00000000)
+    .D32(0x046bfd4c)
+    .D32(0x59658123)  // chrome_59630000!std::deque..
+    .D32(0x046bfda0)
+    .D32(0x01e79d70)
+    .D32(0x046bfda0)
+
+    .Mark(&frame2_ebp)  // .D32(0x046bfd40)
+    .D32(0)             // saved %ebp (stack end)
+    .D32(0);            // saved %eip (stack end)
+
+  RegionFromSection();
+  raw_context.eip = 0x59685c46;  // Context frame in
+                                 // base::MessagePumpForIO::DoRunLoop
+  raw_context.esp = frame0_esp.Value();
+  raw_context.ebp = frame0_ebp.Value();
+
+  StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+  StackwalkerX86 walker(&system_info, &raw_context, &stack_region,
+                        &local_modules, &frame_symbolizer);
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(0U, modules_without_symbols.size());
+  ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  frames = call_stack.frames();
+
+  ASSERT_EQ(3U, frames->size());
+
+  {  // To avoid reusing locals by mistake
+    StackFrameX86 *frame = static_cast<StackFrameX86 *>(frames->at(0));
+    EXPECT_EQ(StackFrame::FRAME_TRUST_CONTEXT, frame->trust);
+    ASSERT_EQ(StackFrameX86::CONTEXT_VALID_ALL, frame->context_validity);
+    EXPECT_EQ("base::MessagePumpForIO::DoRunLoop()", frame->function_name);
+    EXPECT_EQ(0x59685c46U, frame->instruction);
+    EXPECT_EQ(0x59685c46U, frame->context.eip);
+    EXPECT_EQ(frame0_esp.Value(), frame->context.esp);
+    EXPECT_EQ(frame0_ebp.Value(), frame->context.ebp);
+    EXPECT_EQ(&chrome_dll, frame->module);
+    ASSERT_TRUE(frame->windows_frame_info != NULL);
+    EXPECT_EQ(WindowsFrameInfo::VALID_ALL, frame->windows_frame_info->valid);
+    EXPECT_EQ(WindowsFrameInfo::STACK_INFO_FRAME_DATA,
+              frame->windows_frame_info->type_);
+    EXPECT_EQ("$T1 .raSearch = $T0 "
+              "$T1 4 - 64 @ = $ebp $T1 4 - ^ = $eip $T1 ^ = $esp $T1 4 + "
+              "= $20 $T0 56 - ^ =  $23 $T0 60 - ^ =  $24 $T0 64 - ^ =",
+              frame->windows_frame_info->program_string);
+    EXPECT_FALSE(frame->windows_frame_info->allocates_base_pointer);
+  }
+
+  {  // To avoid reusing locals by mistake
+    StackFrameX86 *frame = static_cast<StackFrameX86 *>(frames->at(1));
+    EXPECT_EQ(StackFrame::FRAME_TRUST_CFI, frame->trust);
+    ASSERT_EQ((StackFrameX86::CONTEXT_VALID_EIP |
+               StackFrameX86::CONTEXT_VALID_ESP |
+               StackFrameX86::CONTEXT_VALID_EBP),
+              frame->context_validity);
+    EXPECT_EQ("base::MessagePumpWin::Run(base::MessagePump::Delegate *)",
+              frame->function_name);
+    EXPECT_EQ(1500011566U, frame->instruction + 1);
+    EXPECT_EQ(1500011566U, frame->context.eip);
+    EXPECT_EQ(frame1_esp.Value(), frame->context.esp);
+    EXPECT_EQ(frame1_ebp.Value(), frame->context.ebp);
+    EXPECT_EQ(&chrome_dll, frame->module);
+    ASSERT_TRUE(frame->windows_frame_info != NULL);
+    EXPECT_EQ(WindowsFrameInfo::VALID_ALL, frame->windows_frame_info->valid);
+    EXPECT_EQ(WindowsFrameInfo::STACK_INFO_FRAME_DATA,
+              frame->windows_frame_info->type_);
+    EXPECT_EQ("$T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =",
+              frame->windows_frame_info->program_string);
+    EXPECT_FALSE(frame->windows_frame_info->allocates_base_pointer);
+  }
+
+  {  // To avoid reusing locals by mistake
+    StackFrameX86 *frame = static_cast<StackFrameX86 *>(frames->at(2));
+    EXPECT_EQ(StackFrame::FRAME_TRUST_CFI, frame->trust);
+    ASSERT_EQ((StackFrameX86::CONTEXT_VALID_EIP |
+               StackFrameX86::CONTEXT_VALID_ESP |
+               StackFrameX86::CONTEXT_VALID_EBP),
+              frame->context_validity);
+    EXPECT_EQ("base::MessageLoop::RunInternal()", frame->function_name);
+    EXPECT_EQ(1500011324U, frame->instruction + 1);
+    EXPECT_EQ(1500011324U, frame->context.eip);
+    EXPECT_EQ(frame2_esp.Value(), frame->context.esp);
+    EXPECT_EQ(frame2_ebp.Value(), frame->context.ebp);
+    EXPECT_EQ(&chrome_dll, frame->module);
+    ASSERT_TRUE(frame->windows_frame_info != NULL);
+    EXPECT_EQ(WindowsFrameInfo::VALID_ALL, frame->windows_frame_info->valid);
+    EXPECT_EQ(WindowsFrameInfo::STACK_INFO_FRAME_DATA,
+              frame->windows_frame_info->type_);
+    EXPECT_EQ("$T1 .raSearch = $T0 "
+              "$T1 4 - 8 @ = $ebp $T1 4 - ^ = $eip $T1 ^ = $esp $T1 4 + = "
+              "$23 $T0 20 - ^ =  $24 $T0 24 - ^ =",
+              frame->windows_frame_info->program_string);
+    EXPECT_FALSE(frame->windows_frame_info->allocates_base_pointer);
+  }
+}
+
+// Scan the stack for a return address and potentially skip frames when the
+// current IP address is not in a known module.  Note, that that the span of
+// this scan is limited to 120 search words for the context frame and 30
+// search words (pointers) for the other frames:
+//     const int kRASearchWords = 30;
+void GetCallerFrame::IPAddressIsNotInKnownModuleTestImpl(
+    bool has_corrupt_symbols) {
+  MockCodeModule remoting_core_dll(0x54080000, 0x501000, "remoting_core.dll",
+                                   "version1");
+  string symbols_func_section =
+      "FUNC 137214 17d 10 PK11_Verify\n"
+      "FUNC 15c834 37 14 nsc_ECDSAVerifyStub\n"
+      "FUNC 1611d3 91 14 NSC_Verify\n"
+      "FUNC 162ff7 60 4 sftk_SessionFromHandle\n";
+  string symbols_stack_section =
+                   "STACK WIN 4 137214 17d 9 0 10 0 10 0 1 $T0 $ebp = "
+                   "$eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =\n"
+                   "STACK WIN 4 15c834 37 6 0 14 0 18 0 1 $T0 $ebp = "
+                   "$eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =\n"
+                   "STACK WIN 4 1611d3 91 7 0 14 0 8 0 1 $T0 $ebp = "
+                   "$eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =\n"
+                   "STACK WIN 4 162ff7 60 5 0 4 0 0 0 1 $T0 $ebp = "
+                   "$eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =\n";
+
+  string symbols = symbols_func_section;
+  if (has_corrupt_symbols) {
+    symbols.append(string(1, '\0'));           // null terminator in the middle
+    symbols.append("\n");
+    symbols.append("FUNC 1234\n"               // invalid FUNC records
+                   "FUNNC 1234\n"
+                   "STACK WIN 4 1234 234 23 "  // invalid STACK record
+                   "23423423 234 23 234 234 "
+                   "234 23 234 23 234 234 "
+                   "234 234 234\n");
+  }
+  symbols.append(symbols_stack_section);
+  SetModuleSymbols(&remoting_core_dll, symbols);
+
+  // Create some modules with some stock debugging information.
+  MockCodeModules local_modules;
+  local_modules.Add(&remoting_core_dll);
+
+  Label frame0_esp;
+  Label frame0_ebp;
+  Label frame1_ebp;
+  Label frame1_esp;
+  Label frame2_ebp;
+  Label frame2_esp;
+  Label frame3_ebp;
+  Label frame3_esp;
+  Label bogus_stack_location_1;
+  Label bogus_stack_location_2;
+  Label bogus_stack_location_3;
+
+  stack_section.start() = 0x01a3ea28;
+  stack_section
+    .Mark(&frame0_esp)
+    .D32(bogus_stack_location_2)
+    .D32(bogus_stack_location_1)
+    .D32(0x042478e4)
+    .D32(bogus_stack_location_2)
+    .D32(0x00000000)
+    .D32(0x041f0420)
+    .D32(0x00000000)
+    .D32(0x00000000)
+    .D32(0x00000040)
+    .D32(0x00000001)
+    .D32(0x00b7e0d0)
+    .D32(0x00000000)
+    .D32(0x00000040)
+    .D32(0x00000001)
+    .D32(0x00b7f570)
+    .Mark(&bogus_stack_location_1)
+    .D32(0x00000000)
+    .D32(0x00000040)
+    .D32(0x00000008)
+    .D32(0x04289530)
+    .D32(0x00000000)
+    .D32(0x00000040)
+    .D32(0x00000008)
+    .D32(0x00b7e910)
+    .D32(0x00000000)
+    .D32(0x00000040)
+    .D32(0x00000008)
+    .D32(0x00b7d998)
+    .D32(0x00000000)
+    .D32(0x00000040)
+    .D32(0x00000008)
+    .D32(0x00b7dec0)
+    .Mark(&bogus_stack_location_2)
+    .D32(0x00000000)
+    .D32(0x00000040)
+    .D32(0x00000008)
+    .D32(0x04289428)
+    .D32(0x00000000)
+    .D32(0x00000040)
+    .D32(0x00000008)
+    .D32(0x00b7f258)
+    .Mark(&bogus_stack_location_3)
+    .D32(0x00000000)
+    .D32(0x041f3560)
+    .D32(0x00000041)
+    .D32(0x00000020)
+    .D32(0xffffffff)
+    .Mark(&frame0_ebp)
+    .D32(frame1_ebp)  // Child %ebp
+    .D32(0x541dc866)  // return address of frame 0
+                      // inside remoting_core!nsc_ECDSAVerifyStub+0x32
+    .Mark(&frame1_esp)
+    .D32(0x04247860)
+    .D32(0x01a3eaec)
+    .D32(0x01a3eaf8)
+    .D32(0x541e304f)  // remoting_core!sftk_SessionFromHandle+0x58
+    .D32(0x0404c620)
+    .D32(0x00000040)
+    .D32(0x01a3eb2c)
+    .D32(0x01a3ec08)
+    .D32(0x00000014)
+    .Mark(&frame1_ebp)
+    .D32(frame2_ebp)  // Child %ebp
+    .D32(0x541e1234)  // return address of frame 1
+                      // inside remoting_core!NSC_Verify+0x61
+    .Mark(&frame2_esp)
+    .D32(0x04247858)
+    .D32(0x0404c620)
+    .D32(0x00000040)
+    .D32(0x01a3ec08)
+    .D32(0x00000014)
+    .D32(0x01000005)
+    .D32(0x00b2f7a0)
+    .D32(0x041f0420)
+    .D32(0x041f3650)
+    .Mark(&frame2_ebp)
+    .D32(frame3_ebp)  // Child %ebp
+    .D32(0x541b734d)  // return address of frame 1
+                      // inside remoting_core!PK11_Verify+0x139
+    .Mark(&frame3_esp)
+    .D32(0x01000005)
+    .D32(0x01a3ec08)
+    .D32(0x00000014)
+    .D32(0x0404c620)
+    .D32(0x00000040)
+    .D32(0x04073e00)
+    .D32(0x04073e00)
+    .D32(0x04247050)
+    .D32(0x00001041)
+    .D32(0x00000000)
+    .D32(0x00000000)
+    .D32(0x00000000)
+    .Mark(&frame3_ebp)
+    .D32(0)           // saved %ebp (stack end)
+    .D32(0);          // saved %eip (stack end)
+
+  RegionFromSection();
+  raw_context.eip = 0x4247860;   // IP address not in known module
+  raw_context.ebp = 0x5420362d;  // bogus
+  raw_context.esp = frame0_esp.Value();
+
+  // sanity
+  ASSERT_TRUE(raw_context.esp == stack_section.start().Value());
+
+  StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+  StackwalkerX86 walker(&system_info, &raw_context, &stack_region,
+                        &local_modules, &frame_symbolizer);
+  vector<const CodeModule*> modules_without_symbols;
+  vector<const CodeModule*> modules_with_corrupt_symbols;
+  ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                          &modules_with_corrupt_symbols));
+  ASSERT_EQ(0U, modules_without_symbols.size());
+  if (has_corrupt_symbols) {
+    ASSERT_EQ(1U, modules_with_corrupt_symbols.size());
+    ASSERT_EQ("remoting_core.dll",
+              modules_with_corrupt_symbols[0]->debug_file());
+  } else {
+    ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+  }
+  frames = call_stack.frames();
+
+  ASSERT_EQ(4U, frames->size());
+
+  {  // To avoid reusing locals by mistake
+    StackFrameX86 *frame0 = static_cast<StackFrameX86 *>(frames->at(0));
+    EXPECT_EQ(StackFrame::FRAME_TRUST_CONTEXT, frame0->trust);
+    ASSERT_EQ(StackFrameX86::CONTEXT_VALID_ALL, frame0->context_validity);
+    EXPECT_EQ(raw_context.eip, frame0->context.eip);
+    EXPECT_EQ(raw_context.ebp, frame0->context.ebp);
+    EXPECT_EQ(raw_context.esp, frame0->context.esp);
+    EXPECT_EQ(NULL, frame0->module);  // IP not in known module
+    EXPECT_EQ("", frame0->function_name);
+    ASSERT_EQ(NULL, frame0->windows_frame_info);
+  }
+
+  {  // To avoid reusing locals by mistake
+    StackFrameX86 *frame1 = static_cast<StackFrameX86 *>(frames->at(1));
+    EXPECT_EQ(StackFrame::FRAME_TRUST_SCAN, frame1->trust);
+    ASSERT_EQ((StackFrameX86::CONTEXT_VALID_EIP |
+               StackFrameX86::CONTEXT_VALID_ESP |
+               StackFrameX86::CONTEXT_VALID_EBP),
+              frame1->context_validity);
+    EXPECT_EQ(frame1_ebp.Value(), frame1->context.ebp);
+    EXPECT_EQ(frame1_esp.Value(), frame1->context.esp);
+    EXPECT_EQ(&remoting_core_dll, frame1->module);
+    EXPECT_EQ("nsc_ECDSAVerifyStub", frame1->function_name);
+    ASSERT_TRUE(frame1->windows_frame_info != NULL);
+    EXPECT_EQ(WindowsFrameInfo::VALID_ALL, frame1->windows_frame_info->valid);
+    EXPECT_EQ(WindowsFrameInfo::STACK_INFO_FRAME_DATA,
+              frame1->windows_frame_info->type_);
+    EXPECT_EQ("$T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =",
+              frame1->windows_frame_info->program_string);
+    EXPECT_FALSE(frame1->windows_frame_info->allocates_base_pointer);
+  }
+
+  {  // To avoid reusing locals by mistake
+    StackFrameX86 *frame2 = static_cast<StackFrameX86 *>(frames->at(2));
+    EXPECT_EQ(StackFrame::FRAME_TRUST_CFI, frame2->trust);
+    ASSERT_EQ((StackFrameX86::CONTEXT_VALID_EIP |
+               StackFrameX86::CONTEXT_VALID_ESP |
+               StackFrameX86::CONTEXT_VALID_EBP),
+              frame2->context_validity);
+    EXPECT_EQ(frame2_ebp.Value(), frame2->context.ebp);
+    EXPECT_EQ(frame2_esp.Value(), frame2->context.esp);
+    EXPECT_EQ(&remoting_core_dll, frame2->module);
+    EXPECT_EQ("NSC_Verify", frame2->function_name);
+    ASSERT_TRUE(frame2->windows_frame_info != NULL);
+    EXPECT_EQ(WindowsFrameInfo::VALID_ALL, frame2->windows_frame_info->valid);
+    EXPECT_EQ(WindowsFrameInfo::STACK_INFO_FRAME_DATA,
+              frame2->windows_frame_info->type_);
+    EXPECT_EQ("$T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =",
+              frame2->windows_frame_info->program_string);
+    EXPECT_FALSE(frame2->windows_frame_info->allocates_base_pointer);
+  }
+
+  {  // To avoid reusing locals by mistake
+    StackFrameX86 *frame3 = static_cast<StackFrameX86 *>(frames->at(3));
+    EXPECT_EQ(StackFrame::FRAME_TRUST_CFI, frame3->trust);
+    ASSERT_EQ((StackFrameX86::CONTEXT_VALID_EIP |
+               StackFrameX86::CONTEXT_VALID_ESP |
+               StackFrameX86::CONTEXT_VALID_EBP),
+              frame3->context_validity);
+    EXPECT_EQ(frame3_ebp.Value(), frame3->context.ebp);
+    EXPECT_EQ(frame3_esp.Value(), frame3->context.esp);
+    EXPECT_EQ(&remoting_core_dll, frame3->module);
+    EXPECT_EQ("PK11_Verify", frame3->function_name);
+    ASSERT_TRUE(frame3->windows_frame_info != NULL);
+    EXPECT_EQ(WindowsFrameInfo::VALID_ALL, frame3->windows_frame_info->valid);
+    EXPECT_EQ(WindowsFrameInfo::STACK_INFO_FRAME_DATA,
+              frame3->windows_frame_info->type_);
+    EXPECT_EQ("$T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =",
+              frame3->windows_frame_info->program_string);
+    EXPECT_FALSE(frame3->windows_frame_info->allocates_base_pointer);
+  }
+}
+
+// Runs IPAddressIsNotInKnownModule test with good symbols
+TEST_F(GetCallerFrame, IPAddressIsNotInKnownModule) {
+  IPAddressIsNotInKnownModuleTestImpl(false /* has_corrupt_modules */);
+}
+
+// Runs IPAddressIsNotInKnownModule test with corrupt symbols
+TEST_F(GetCallerFrame, IPAddressIsNotInKnownModule_CorruptSymbols) {
+  IPAddressIsNotInKnownModuleTestImpl(true /* has_corrupt_modules */);
+}
+
+struct CFIFixture: public StackwalkerX86Fixture {
+  CFIFixture() {
+    // Provide a bunch of STACK CFI records; individual tests walk to the
+    // caller from every point in this series, expecting to find the same
+    // set of register values.
+    SetModuleSymbols(&module1,
+                     // The youngest frame's function.
+                     "FUNC 4000 1000 10 enchiridion\n"
+                     // Initially, just a return address.
+                     "STACK CFI INIT 4000 100 .cfa: $esp 4 + .ra: .cfa 4 - ^\n"
+                     // Push %ebx.
+                     "STACK CFI 4001 .cfa: $esp 8 + $ebx: .cfa 8 - ^\n"
+                     // Move %esi into %ebx.  Weird, but permitted.
+                     "STACK CFI 4002 $esi: $ebx\n"
+                     // Allocate frame space, and save %edi.
+                     "STACK CFI 4003 .cfa: $esp 20 + $edi: .cfa 16 - ^\n"
+                     // Put the return address in %edi.
+                     "STACK CFI 4005 .ra: $edi\n"
+                     // Save %ebp, and use it as a frame pointer.
+                     "STACK CFI 4006 .cfa: $ebp 8 + $ebp: .cfa 12 - ^\n"
+
+                     // The calling function.
+                     "FUNC 5000 1000 10 epictetus\n"
+                     // Mark it as end of stack.
+                     "STACK CFI INIT 5000 1000 .cfa: $esp .ra 0\n");
+
+    // Provide some distinctive values for the caller's registers.
+    expected.esp = 0x80000000;
+    expected.eip = 0x40005510;
+    expected.ebp = 0xc0d4aab9;
+    expected.ebx = 0x60f20ce6;
+    expected.esi = 0x53d1379d;
+    expected.edi = 0xafbae234;
+
+    // By default, registers are unchanged.
+    raw_context = expected;
+  }
+
+  // Walk the stack, using stack_section as the contents of the stack
+  // and raw_context as the current register values. (Set
+  // raw_context.esp to the stack's starting address.) Expect two
+  // stack frames; in the older frame, expect the callee-saves
+  // registers to have values matching those in 'expected'.
+  void CheckWalk() {
+    RegionFromSection();
+    raw_context.esp = stack_section.start().Value();
+
+    StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
+    StackwalkerX86 walker(&system_info, &raw_context, &stack_region, &modules,
+                          &frame_symbolizer);
+    vector<const CodeModule*> modules_without_symbols;
+    vector<const CodeModule*> modules_with_corrupt_symbols;
+    ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols,
+                            &modules_with_corrupt_symbols));
+    ASSERT_EQ(0U, modules_without_symbols.size());
+    ASSERT_EQ(0U, modules_with_corrupt_symbols.size());
+    frames = call_stack.frames();
+    ASSERT_EQ(2U, frames->size());
+
+    {  // To avoid reusing locals by mistake
+      StackFrameX86 *frame0 = static_cast<StackFrameX86 *>(frames->at(0));
+      EXPECT_EQ(StackFrame::FRAME_TRUST_CONTEXT, frame0->trust);
+      ASSERT_EQ(StackFrameX86::CONTEXT_VALID_ALL, frame0->context_validity);
+      EXPECT_EQ("enchiridion", frame0->function_name);
+      EXPECT_EQ(0x40004000U, frame0->function_base);
+      ASSERT_TRUE(frame0->windows_frame_info != NULL);
+      ASSERT_EQ(WindowsFrameInfo::VALID_PARAMETER_SIZE,
+                frame0->windows_frame_info->valid);
+      ASSERT_TRUE(frame0->cfi_frame_info != NULL);
+    }
+
+    {  // To avoid reusing locals by mistake
+      StackFrameX86 *frame1 = static_cast<StackFrameX86 *>(frames->at(1));
+      EXPECT_EQ(StackFrame::FRAME_TRUST_CFI, frame1->trust);
+      ASSERT_EQ((StackFrameX86::CONTEXT_VALID_EIP |
+                 StackFrameX86::CONTEXT_VALID_ESP |
+                 StackFrameX86::CONTEXT_VALID_EBP |
+                 StackFrameX86::CONTEXT_VALID_EBX |
+                 StackFrameX86::CONTEXT_VALID_ESI |
+                 StackFrameX86::CONTEXT_VALID_EDI),
+                 frame1->context_validity);
+      EXPECT_EQ(expected.eip, frame1->context.eip);
+      EXPECT_EQ(expected.esp, frame1->context.esp);
+      EXPECT_EQ(expected.ebp, frame1->context.ebp);
+      EXPECT_EQ(expected.ebx, frame1->context.ebx);
+      EXPECT_EQ(expected.esi, frame1->context.esi);
+      EXPECT_EQ(expected.edi, frame1->context.edi);
+      EXPECT_EQ("epictetus", frame1->function_name);
+    }
+  }
+
+  // The values the stack walker should find for the caller's registers.
+  MDRawContextX86 expected;
+};
+
+class CFI: public CFIFixture, public Test { };
+
+TEST_F(CFI, At4000) {
+  Label frame1_esp = expected.esp;
+  stack_section
+    .D32(0x40005510)             // return address
+    .Mark(&frame1_esp);          // This effectively sets stack_section.start().
+  raw_context.eip = 0x40004000;
+  CheckWalk();
+}
+
+TEST_F(CFI, At4001) {
+  Label frame1_esp = expected.esp;
+  stack_section
+    .D32(0x60f20ce6)             // saved %ebx
+    .D32(0x40005510)             // return address
+    .Mark(&frame1_esp);          // This effectively sets stack_section.start().
+  raw_context.eip = 0x40004001;
+  raw_context.ebx = 0x91aa9a8b;  // callee's %ebx value
+  CheckWalk();
+}
+
+TEST_F(CFI, At4002) {
+  Label frame1_esp = expected.esp;
+  stack_section
+    .D32(0x60f20ce6)             // saved %ebx
+    .D32(0x40005510)             // return address
+    .Mark(&frame1_esp);          // This effectively sets stack_section.start().
+  raw_context.eip = 0x40004002;
+  raw_context.ebx = 0x53d1379d;  // saved %esi
+  raw_context.esi = 0xa5c790ed;  // callee's %esi value
+  CheckWalk();
+}
+
+TEST_F(CFI, At4003) {
+  Label frame1_esp = expected.esp;
+  stack_section
+    .D32(0x56ec3db7)             // garbage
+    .D32(0xafbae234)             // saved %edi
+    .D32(0x53d67131)             // garbage
+    .D32(0x60f20ce6)             // saved %ebx
+    .D32(0x40005510)             // return address
+    .Mark(&frame1_esp);          // This effectively sets stack_section.start().
+  raw_context.eip = 0x40004003;
+  raw_context.ebx = 0x53d1379d;  // saved %esi
+  raw_context.esi = 0xa97f229d;  // callee's %esi
+  raw_context.edi = 0xb05cc997;  // callee's %edi
+  CheckWalk();
+}
+
+// The results here should be the same as those at module offset
+// 0x4003.
+TEST_F(CFI, At4004) {
+  Label frame1_esp = expected.esp;
+  stack_section
+    .D32(0xe29782c2)             // garbage
+    .D32(0xafbae234)             // saved %edi
+    .D32(0x5ba29ce9)             // garbage
+    .D32(0x60f20ce6)             // saved %ebx
+    .D32(0x40005510)             // return address
+    .Mark(&frame1_esp);          // This effectively sets stack_section.start().
+  raw_context.eip = 0x40004004;
+  raw_context.ebx = 0x53d1379d;  // saved %esi
+  raw_context.esi = 0x0fb7dc4e;  // callee's %esi
+  raw_context.edi = 0x993b4280;  // callee's %edi
+  CheckWalk();
+}
+
+TEST_F(CFI, At4005) {
+  Label frame1_esp = expected.esp;
+  stack_section
+    .D32(0xe29782c2)             // garbage
+    .D32(0xafbae234)             // saved %edi
+    .D32(0x5ba29ce9)             // garbage
+    .D32(0x60f20ce6)             // saved %ebx
+    .D32(0x8036cc02)             // garbage
+    .Mark(&frame1_esp);          // This effectively sets stack_section.start().
+  raw_context.eip = 0x40004005;
+  raw_context.ebx = 0x53d1379d;  // saved %esi
+  raw_context.esi = 0x0fb7dc4e;  // callee's %esi
+  raw_context.edi = 0x40005510;  // return address
+  CheckWalk();
+}
+
+TEST_F(CFI, At4006) {
+  Label frame0_ebp;
+  Label frame1_esp = expected.esp;
+  stack_section
+    .D32(0xdcdd25cd)             // garbage
+    .D32(0xafbae234)             // saved %edi
+    .D32(0xc0d4aab9)             // saved %ebp
+    .Mark(&frame0_ebp)           // frame pointer points here
+    .D32(0x60f20ce6)             // saved %ebx
+    .D32(0x8036cc02)             // garbage
+    .Mark(&frame1_esp);          // This effectively sets stack_section.start().
+  raw_context.eip = 0x40004006;
+  raw_context.ebp = frame0_ebp.Value();
+  raw_context.ebx = 0x53d1379d;  // saved %esi
+  raw_context.esi = 0x743833c9;  // callee's %esi
+  raw_context.edi = 0x40005510;  // return address
+  CheckWalk();
+}
+
diff --git a/google-breakpad/src/processor/static_address_map-inl.h b/google-breakpad/src/processor/static_address_map-inl.h
new file mode 100644
index 0000000..67e0797
--- /dev/null
+++ b/google-breakpad/src/processor/static_address_map-inl.h
@@ -0,0 +1,71 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// static_address_map-inl.h: StaticAddressMap implementation.
+//
+// See static_address_map.h for documentation.
+//
+// Author: Siyang Xie (lambxsy@google.com)
+
+#ifndef PROCESSOR_STATIC_ADDRESS_MAP_INL_H__
+#define PROCESSOR_STATIC_ADDRESS_MAP_INL_H__
+
+#include "processor/static_address_map.h"
+
+#include "processor/logging.h"
+
+namespace google_breakpad {
+
+template<typename AddressType, typename EntryType>
+bool StaticAddressMap<AddressType, EntryType>::Retrieve(
+    const AddressType &address,
+    const EntryType *&entry, AddressType *entry_address) const {
+
+  // upper_bound gives the first element whose key is greater than address,
+  // but we want the first element whose key is less than or equal to address.
+  // Decrement the iterator to get there, but not if the upper_bound already
+  // points to the beginning of the map - in that case, address is lower than
+  // the lowest stored key, so return false.
+
+  MapConstIterator iterator = map_.upper_bound(address);
+  if (iterator == map_.begin())
+    return false;
+  --iterator;
+
+  entry = iterator.GetValuePtr();
+  // Make sure AddressType is a copyable basic type
+  if (entry_address)
+    *entry_address = iterator.GetKey();
+
+  return true;
+}
+
+}  // namespace google_breakpad
+
+#endif  // PROCESSOR_STATIC_ADDRESS_MAP_INL_H__
diff --git a/google-breakpad/src/processor/static_address_map.h b/google-breakpad/src/processor/static_address_map.h
new file mode 100644
index 0000000..6bafc66
--- /dev/null
+++ b/google-breakpad/src/processor/static_address_map.h
@@ -0,0 +1,78 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// static_address_map.h: StaticAddressMap.
+//
+// StaticAddressMap is a wrapper class of StaticMap, just as AddressMap wraps
+// std::map.  StaticAddressMap provides read-only Retrieve() operation, similar
+// as AddressMap.  However, the difference between StaticAddressMap and
+// AddressMap is that StaticAddressMap does not support dynamic operation
+// Store() due to the static nature of the underlying StaticMap.
+//
+// See address_map.h for reference.
+//
+// Author: Siyang Xie (lambxsy@google.com)
+
+#ifndef PROCESSOR_STATIC_ADDRESS_MAP_H__
+#define PROCESSOR_STATIC_ADDRESS_MAP_H__
+
+#include "processor/static_map-inl.h"
+
+namespace google_breakpad {
+
+// AddressType MUST be a basic type, e.g.: integer types etc
+// EntryType could be a complex type, so we retrieve its pointer instead.
+template<typename AddressType, typename EntryType>
+class StaticAddressMap {
+ public:
+  StaticAddressMap(): map_() { }
+  explicit StaticAddressMap(const char *map_data): map_(map_data) { }
+
+  // Locates the entry stored at the highest address less than or equal to
+  // the address argument.  If there is no such range, returns false.  The
+  // entry is returned in entry, which is a required argument.  If
+  // entry_address is not NULL, it will be set to the address that the entry
+  // was stored at.
+  bool Retrieve(const AddressType &address,
+                const EntryType *&entry, AddressType *entry_address) const;
+
+ private:
+  friend class ModuleComparer;
+  // Convenience types.
+  typedef StaticAddressMap* SelfPtr;
+  typedef StaticMap<AddressType, EntryType> AddressToEntryMap;
+  typedef typename AddressToEntryMap::const_iterator MapConstIterator;
+
+  AddressToEntryMap map_;
+};
+
+}  // namespace google_breakpad
+
+#endif  // PROCESSOR_STATIC_ADDRESS_MAP_H__
+
diff --git a/google-breakpad/src/processor/static_address_map_unittest.cc b/google-breakpad/src/processor/static_address_map_unittest.cc
new file mode 100644
index 0000000..12c735c
--- /dev/null
+++ b/google-breakpad/src/processor/static_address_map_unittest.cc
@@ -0,0 +1,236 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// static_address_map_unittest.cc: Unit tests for StaticAddressMap.
+//
+// Author: Siyang Xie (lambxsy@google.com)
+
+#include <climits>
+#include <cstdlib>
+#include <ctime>
+#include <string>
+#include <iostream>
+#include <sstream>
+
+#include "breakpad_googletest_includes.h"
+#include "common/using_std_string.h"
+#include "processor/address_map-inl.h"
+#include "processor/static_address_map-inl.h"
+#include "processor/simple_serializer-inl.h"
+#include "map_serializers-inl.h"
+
+typedef google_breakpad::StaticAddressMap<int, char> TestMap;
+typedef google_breakpad::AddressMap<int, string> AddrMap;
+
+class TestStaticAddressMap : public ::testing::Test {
+ protected:
+  void SetUp() {
+    for (int testcase = 0; testcase < kNumberTestCases; ++testcase) {
+      testdata[testcase] = new int[testsize[testcase]];
+    }
+
+    // Test data set0: NULL (empty map)
+
+    // Test data set1: single element.
+    testdata[1][0] = 10;
+
+    // Test data set2: six elements.
+    const int tempdata[] = {5, 10, 14, 15, 16, 20};
+    for (int i = 0; i < testsize[2]; ++i)
+      testdata[2][i] = tempdata[i];
+
+    // Test data set3:
+    srand(time(NULL));
+    for (int i = 0; i < testsize[3]; ++i)
+      testdata[3][i] = rand();
+
+    // Setup maps.
+    std::stringstream sstream;
+    for (int testcase = 0; testcase < kNumberTestCases; ++testcase) {
+      for (int data_item = 0; data_item < testsize[testcase]; ++data_item) {
+        sstream.clear();
+        sstream << "test " << testdata[testcase][data_item];
+        addr_map[testcase].Store(testdata[testcase][data_item], sstream.str());
+      }
+      map_data[testcase] = serializer.Serialize(addr_map[testcase], NULL);
+      test_map[testcase] = TestMap(map_data[testcase]);
+    }
+  }
+
+  void TearDown() {
+    for (int i = 0; i < kNumberTestCases; ++i) {
+      delete [] map_data[i];
+      delete [] testdata[i];
+    }
+  }
+
+  void CompareRetrieveResult(int testcase, int target) {
+    int address;
+    int address_test;
+    string entry;
+    string entry_test;
+    const char *entry_cstring = NULL;
+    bool found;
+    bool found_test;
+
+    found = addr_map[testcase].Retrieve(target, &entry, &address);
+    found_test =
+        test_map[testcase].Retrieve(target, entry_cstring, &address_test);
+
+    ASSERT_EQ(found, found_test);
+
+    if (found && found_test) {
+      ASSERT_EQ(address, address_test);
+      entry_test = entry_cstring;
+      ASSERT_EQ(entry, entry_test);
+    }
+  }
+
+  void RetrieveTester(int testcase) {
+    int target;
+    target = INT_MIN;
+    CompareRetrieveResult(testcase, target);
+    target = INT_MAX;
+    CompareRetrieveResult(testcase, target);
+
+    srand(time(0));
+    for (int data_item = 0; data_item < testsize[testcase]; ++data_item) {
+      // Retrive (aka, search) for target address and compare results from
+      // AddressMap and StaticAddressMap.
+
+      // First, assign the search target to be one of original testdata that is
+      // known to exist in the map.
+      target = testdata[testcase][data_item];
+      CompareRetrieveResult(testcase, target);
+      // Then, add +2 / -1 bias to target value, in order to test searching for
+      // a target address not stored in the map.
+      target -= 1;
+      CompareRetrieveResult(testcase, target);
+      target += 3;
+      CompareRetrieveResult(testcase, target);
+      // Repeatedly test searching for random target addresses.
+      target = rand();
+      CompareRetrieveResult(testcase, target);
+    }
+  }
+
+  // Test data sets:
+  static const int kNumberTestCases = 4;
+  static const int testsize[];
+  int *testdata[kNumberTestCases];
+
+  AddrMap addr_map[kNumberTestCases];
+  TestMap test_map[kNumberTestCases];
+  char *map_data[kNumberTestCases];
+  google_breakpad::AddressMapSerializer<int, string> serializer;
+};
+
+const int TestStaticAddressMap::testsize[] = {0, 1, 6, 1000};
+
+TEST_F(TestStaticAddressMap, TestEmptyMap) {
+  int testcase = 0;
+  int target;
+  target = INT_MIN;
+  CompareRetrieveResult(testcase, target);
+  target = INT_MAX;
+  CompareRetrieveResult(testcase, target);
+  for (int data_item = 0; data_item < testsize[testcase]; ++data_item) {
+    target = testdata[testcase][data_item];
+    CompareRetrieveResult(testcase, target);
+    target -= 1;
+    CompareRetrieveResult(testcase, target);
+    target += 3;
+    CompareRetrieveResult(testcase, target);
+    target = rand();
+    CompareRetrieveResult(testcase, target);
+  }
+}
+
+TEST_F(TestStaticAddressMap, TestOneElementMap) {
+  int testcase = 1;
+  int target;
+  target = INT_MIN;
+  CompareRetrieveResult(testcase, target);
+  target = INT_MAX;
+  CompareRetrieveResult(testcase, target);
+  for (int data_item = 0; data_item < testsize[testcase]; ++data_item) {
+    target = testdata[testcase][data_item];
+    CompareRetrieveResult(testcase, target);
+    target -= 1;
+    CompareRetrieveResult(testcase, target);
+    target += 3;
+    CompareRetrieveResult(testcase, target);
+    target = rand();
+    CompareRetrieveResult(testcase, target);
+  }
+}
+
+TEST_F(TestStaticAddressMap, TestSixElementsMap) {
+  int testcase = 2;
+  int target;
+  target = INT_MIN;
+  CompareRetrieveResult(testcase, target);
+  target = INT_MAX;
+  CompareRetrieveResult(testcase, target);
+  for (int data_item = 0; data_item < testsize[testcase]; ++data_item) {
+    target = testdata[testcase][data_item];
+    CompareRetrieveResult(testcase, target);
+    target -= 1;
+    CompareRetrieveResult(testcase, target);
+    target += 3;
+    CompareRetrieveResult(testcase, target);
+    target = rand();
+    CompareRetrieveResult(testcase, target);
+  }
+}
+
+TEST_F(TestStaticAddressMap, Test1000RandomElementsMap) {
+  int testcase = 3;
+  int target;
+  target = INT_MIN;
+  CompareRetrieveResult(testcase, target);
+  target = INT_MAX;
+  CompareRetrieveResult(testcase, target);
+  for (int data_item = 0; data_item < testsize[testcase]; ++data_item) {
+    target = testdata[testcase][data_item];
+    CompareRetrieveResult(testcase, target);
+    target -= 1;
+    CompareRetrieveResult(testcase, target);
+    target += 3;
+    CompareRetrieveResult(testcase, target);
+    target = rand();
+    CompareRetrieveResult(testcase, target);
+  }
+}
+
+int main(int argc, char *argv[]) {
+  ::testing::InitGoogleTest(&argc, argv);
+
+  return RUN_ALL_TESTS();
+}
diff --git a/google-breakpad/src/processor/static_contained_range_map-inl.h b/google-breakpad/src/processor/static_contained_range_map-inl.h
new file mode 100644
index 0000000..777c762
--- /dev/null
+++ b/google-breakpad/src/processor/static_contained_range_map-inl.h
@@ -0,0 +1,92 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// static_contained_range_map-inl.h: Hierarchically-organized range map,
+// i.e., StaticContainedRangeMap implementation.
+//
+// See static_contained_range_map.h for documentation.
+//
+// Author: Siyang Xie (lambxsy@google.com)
+
+#ifndef PROCESSOR_STATIC_CONTAINED_RANGE_MAP_INL_H__
+#define PROCESSOR_STATIC_CONTAINED_RANGE_MAP_INL_H__
+
+#include "processor/static_contained_range_map.h"
+#include "processor/logging.h"
+
+namespace google_breakpad {
+
+template<typename AddressType, typename EntryType>
+StaticContainedRangeMap<AddressType, EntryType>::StaticContainedRangeMap(
+    const char *base)
+    : base_(*(reinterpret_cast<const AddressType*>(base))),
+      entry_size_(*(reinterpret_cast<const uint32_t*>(base + sizeof(base_)))),
+      entry_ptr_(reinterpret_cast<const EntryType *>(
+          base + sizeof(base_) + sizeof(entry_size_))),
+      map_(base + sizeof(base_) + sizeof(entry_size_) + entry_size_) {
+  if (entry_size_ == 0)
+    entry_ptr_ = NULL;
+}
+
+
+template<typename AddressType, typename EntryType>
+bool StaticContainedRangeMap<AddressType, EntryType>::RetrieveRange(
+    const AddressType &address, const EntryType *&entry) const {
+
+  // Get an iterator to the child range whose high address is equal to or
+  // greater than the supplied address.  If the supplied address is higher
+  // than all of the high addresses in the range, then this range does not
+  // contain a child at address, so return false.  If the supplied address
+  // is lower than the base address of the child range, then it is not within
+  // the child range, so return false.
+  MapConstIterator iterator = map_.lower_bound(address);
+
+  if (iterator == map_.end())
+    return false;
+
+  const char *memory_child =
+      reinterpret_cast<const char*>(iterator.GetValuePtr());
+
+  StaticContainedRangeMap child_map(memory_child);
+
+  if (address < child_map.base_)
+    return false;
+
+  // The child in iterator->second contains the specified address.  Find out
+  // if it has a more-specific descendant that also contains it.  If it does,
+  // it will set |entry| appropriately.  If not, set |entry| to the child.
+  if (!child_map.RetrieveRange(address, entry))
+    entry = child_map.entry_ptr_;
+
+  return true;
+}
+
+}  // namespace google_breakpad
+
+#endif  // PROCESSOR_STATIC_CONTAINED_RANGE_MAP_INL_H__
diff --git a/google-breakpad/src/processor/static_contained_range_map.h b/google-breakpad/src/processor/static_contained_range_map.h
new file mode 100644
index 0000000..6a9b8b7
--- /dev/null
+++ b/google-breakpad/src/processor/static_contained_range_map.h
@@ -0,0 +1,96 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// static_contained_range_map.h: StaticContainedRangeMap.
+//
+// StaticContainedRangeMap is similar to ContainedRangeMap.  However,
+// StaticContainedRangeMap wraps a StaticMap instead of std::map, and does not
+// support dynamic operations like StoreRange(...).
+// StaticContainedRangeMap provides same RetrieveRange(...) interfaces as
+// ContainedRangeMap.
+//
+// Please see contained_range_map.h for more documentation.
+//
+// Author: Siyang Xie (lambxsy@google.com)
+
+#ifndef PROCESSOR_STATIC_CONTAINED_RANGE_MAP_H__
+#define PROCESSOR_STATIC_CONTAINED_RANGE_MAP_H__
+
+#include "processor/static_map-inl.h"
+
+namespace google_breakpad {
+
+template<typename AddressType, typename EntryType>
+class StaticContainedRangeMap {
+ public:
+  StaticContainedRangeMap(): base_(), entry_size_(), entry_ptr_(), map_() { }
+  explicit StaticContainedRangeMap(const char *base);
+
+  // Retrieves the most specific (smallest) descendant range encompassing
+  // the specified address.  This method will only return entries held by
+  // child ranges, and not the entry contained by |this|.  This is necessary
+  // to support a sparsely-populated root range.  If no descendant range
+  // encompasses the address, returns false.
+  bool RetrieveRange(const AddressType &address, const EntryType *&entry) const;
+
+ private:
+  friend class ModuleComparer;
+  // AddressToRangeMap stores pointers.  This makes reparenting simpler in
+  // StoreRange, because it doesn't need to copy entire objects.
+  typedef StaticContainedRangeMap* SelfPtr;
+  typedef
+  StaticMap<AddressType, StaticContainedRangeMap> AddressToRangeMap;
+  typedef typename AddressToRangeMap::const_iterator MapConstIterator;
+
+  // The base address of this range.  The high address does not need to
+  // be stored, because it is used as the key to an object in its parent's
+  // map, and all ContainedRangeMaps except for the root range are contained
+  // within maps.  The root range does not actually contain an entry, so its
+  // base_ field is meaningless, and the fact that it has no parent and thus
+  // no key is unimportant.  For this reason, the base_ field should only be
+  // is accessed on child ContainedRangeMap objects, and never on |this|.
+  AddressType base_;
+
+  // The entry corresponding to this range.  The root range does not
+  // actually contain an entry, so its entry_ field is meaningless.  For
+  // this reason, the entry_ field should only be accessed on child
+  // ContainedRangeMap objects, and never on |this|.
+  uint32_t entry_size_;
+  const EntryType *entry_ptr_;
+
+  // The map containing child ranges, keyed by each child range's high
+  // address.  This is a pointer to avoid allocating map structures for
+  // leaf nodes, where they are not needed.
+  AddressToRangeMap map_;
+};
+
+}  // namespace google_breakpad
+
+
+#endif  // PROCESSOR_STATIC_CONTAINED_RANGE_MAP_H__
diff --git a/google-breakpad/src/processor/static_contained_range_map_unittest.cc b/google-breakpad/src/processor/static_contained_range_map_unittest.cc
new file mode 100644
index 0000000..4ee4757
--- /dev/null
+++ b/google-breakpad/src/processor/static_contained_range_map_unittest.cc
@@ -0,0 +1,320 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// static_contained_range_map_unittest.cc: Unit tests for
+// StaticContainedRangeMap.
+//
+// Author: Siyang Xie (lambxsy@google.com)
+
+#include "breakpad_googletest_includes.h"
+#include "common/scoped_ptr.h"
+#include "processor/contained_range_map-inl.h"
+#include "processor/static_contained_range_map-inl.h"
+#include "processor/simple_serializer-inl.h"
+#include "processor/map_serializers-inl.h"
+#include "processor/logging.h"
+
+namespace {
+
+typedef google_breakpad::ContainedRangeMap<unsigned int, int> CRMMap;
+typedef google_breakpad::StaticContainedRangeMap<unsigned int, int> TestMap;
+
+// Each element in test_data contains the expected result when calling
+// RetrieveRange on an address.
+const int test_data[] = {
+  0,   // 0
+  0,   // 1
+  0,   // 2
+  0,   // 3
+  0,   // 4
+  0,   // 5
+  0,   // 6
+  0,   // 7
+  9,   // 8
+  7,   // 9
+  1,   // 10
+  5,   // 11
+  6,   // 12
+  6,   // 13
+  6,   // 14
+  6,   // 15
+  6,   // 16
+  6,   // 17
+  6,   // 18
+  5,   // 19
+  7,   // 20
+  8,   // 21
+  0,   // 22
+  0,   // 23
+  0,   // 24
+  0,   // 25
+  0,   // 26
+  0,   // 27
+  0,   // 28
+  0,   // 29
+  10,  // 30
+  10,  // 31
+  10,  // 32
+  11,  // 33
+  11,  // 34
+  11,  // 35
+  0,   // 36
+  0,   // 37
+  0,   // 38
+  0,   // 39
+  14,  // 40
+  14,  // 41
+  14,  // 42
+  14,  // 43
+  15,  // 44
+  15,  // 45
+  15,  // 46
+  15,  // 47
+  0,   // 48
+  0,   // 49
+  19,  // 50
+  18,  // 51
+  18,  // 52
+  18,  // 53
+  18,  // 54
+  18,  // 55
+  18,  // 56
+  18,  // 57
+  18,  // 58
+  20,  // 59
+  21,  // 60
+  25,  // 61
+  26,  // 62
+  26,  // 63
+  26,  // 64
+  26,  // 65
+  26,  // 66
+  26,  // 67
+  24,  // 68
+  22,  // 69
+  30,  // 70
+  30,  // 71
+  30,  // 72
+  30,  // 73
+  31,  // 74
+  31,  // 75
+  30,  // 76
+  32,  // 77
+  32,  // 78
+  30,  // 79
+  34,  // 80
+  35,  // 81
+  36,  // 82
+  39,  // 83
+  38,  // 84
+  37,  // 85
+  43,  // 86
+  44,  // 87
+  41,  // 88
+  45,  // 89
+  42,  // 90
+  0,   // 91
+  0,   // 92
+  0,   // 93
+  0,   // 94
+  0,   // 95
+  0,   // 96
+  0,   // 97
+  0,   // 98
+  0    // 99
+};
+
+}  // namespace
+
+namespace google_breakpad {
+
+class TestStaticCRMMap : public ::testing::Test {
+ protected:
+  void SetUp();
+
+  // A referrence map for testing StaticCRMMap.
+  google_breakpad::ContainedRangeMap<unsigned int, int> crm_map_;
+
+  // Static version of crm_map using serialized data of crm_map.
+  // The goal of testing is to make sure TestMap provides same results for
+  // lookup operation(s) as CRMMap does.
+  google_breakpad::StaticContainedRangeMap<unsigned int, int> test_map_;
+
+  google_breakpad::ContainedRangeMapSerializer<unsigned int, int> serializer_;
+
+  scoped_array<char> serialized_data_;
+};
+
+void TestStaticCRMMap::SetUp() {
+  // First, do the StoreRange tests.  This validates the containment
+  // rules.
+  // We confirm the referrence map correctly stores data during setup.
+  ASSERT_TRUE (crm_map_.StoreRange(10, 10,  1));
+  ASSERT_FALSE(crm_map_.StoreRange(10, 10,  2));  // exactly equal to 1
+  ASSERT_FALSE(crm_map_.StoreRange(11, 10,  3));  // begins inside 1 and extends up
+  ASSERT_FALSE(crm_map_.StoreRange( 9, 10,  4));  // begins below 1 and ends inside
+  ASSERT_TRUE (crm_map_.StoreRange(11,  9,  5));  // contained by existing
+  ASSERT_TRUE (crm_map_.StoreRange(12,  7,  6));
+  ASSERT_TRUE (crm_map_.StoreRange( 9, 12,  7));  // contains existing
+  ASSERT_TRUE (crm_map_.StoreRange( 9, 13,  8));
+  ASSERT_TRUE (crm_map_.StoreRange( 8, 14,  9));
+  ASSERT_TRUE (crm_map_.StoreRange(30,  3, 10));
+  ASSERT_TRUE (crm_map_.StoreRange(33,  3, 11));
+  ASSERT_TRUE (crm_map_.StoreRange(30,  6, 12));  // storable but totally masked
+  ASSERT_TRUE (crm_map_.StoreRange(40,  8, 13));  // will be totally masked
+  ASSERT_TRUE (crm_map_.StoreRange(40,  4, 14));
+  ASSERT_TRUE (crm_map_.StoreRange(44,  4, 15));
+  ASSERT_FALSE(crm_map_.StoreRange(32, 10, 16));  // begins in #10, ends in #14
+  ASSERT_FALSE(crm_map_.StoreRange(50,  0, 17));  // zero length
+  ASSERT_TRUE (crm_map_.StoreRange(50, 10, 18));
+  ASSERT_TRUE (crm_map_.StoreRange(50,  1, 19));
+  ASSERT_TRUE (crm_map_.StoreRange(59,  1, 20));
+  ASSERT_TRUE (crm_map_.StoreRange(60,  1, 21));
+  ASSERT_TRUE (crm_map_.StoreRange(69,  1, 22));
+  ASSERT_TRUE (crm_map_.StoreRange(60, 10, 23));
+  ASSERT_TRUE (crm_map_.StoreRange(68,  1, 24));
+  ASSERT_TRUE (crm_map_.StoreRange(61,  1, 25));
+  ASSERT_TRUE (crm_map_.StoreRange(61,  8, 26));
+  ASSERT_FALSE(crm_map_.StoreRange(59,  9, 27));
+  ASSERT_FALSE(crm_map_.StoreRange(59, 10, 28));
+  ASSERT_FALSE(crm_map_.StoreRange(59, 11, 29));
+  ASSERT_TRUE (crm_map_.StoreRange(70, 10, 30));
+  ASSERT_TRUE (crm_map_.StoreRange(74,  2, 31));
+  ASSERT_TRUE (crm_map_.StoreRange(77,  2, 32));
+  ASSERT_FALSE(crm_map_.StoreRange(72,  6, 33));
+  ASSERT_TRUE (crm_map_.StoreRange(80,  3, 34));
+  ASSERT_TRUE (crm_map_.StoreRange(81,  1, 35));
+  ASSERT_TRUE (crm_map_.StoreRange(82,  1, 36));
+  ASSERT_TRUE (crm_map_.StoreRange(83,  3, 37));
+  ASSERT_TRUE (crm_map_.StoreRange(84,  1, 38));
+  ASSERT_TRUE (crm_map_.StoreRange(83,  1, 39));
+  ASSERT_TRUE (crm_map_.StoreRange(86,  5, 40));
+  ASSERT_TRUE (crm_map_.StoreRange(88,  1, 41));
+  ASSERT_TRUE (crm_map_.StoreRange(90,  1, 42));
+  ASSERT_TRUE (crm_map_.StoreRange(86,  1, 43));
+  ASSERT_TRUE (crm_map_.StoreRange(87,  1, 44));
+  ASSERT_TRUE (crm_map_.StoreRange(89,  1, 45));
+  ASSERT_TRUE (crm_map_.StoreRange(87,  4, 46));
+  ASSERT_TRUE (crm_map_.StoreRange(87,  3, 47));
+  ASSERT_FALSE(crm_map_.StoreRange(86,  2, 48));
+
+  // Serialize crm_map to generate serialized data.
+  unsigned int size;
+  serialized_data_.reset(serializer_.Serialize(&crm_map_, &size));
+  BPLOG(INFO) << "Serialized data size: " << size << " Bytes.";
+
+  // Construct test_map_ from serialized data.
+  test_map_ = TestMap(serialized_data_.get());
+}
+
+TEST_F(TestStaticCRMMap, TestEmptyMap) {
+  CRMMap empty_crm_map;
+
+  unsigned int size;
+  scoped_array<char> serialized_data;
+  serialized_data.reset(serializer_.Serialize(&empty_crm_map, &size));
+  scoped_ptr<TestMap> test_map(new TestMap(serialized_data.get()));
+
+  const unsigned int kCorrectSizeForEmptyMap = 16;
+  ASSERT_EQ(kCorrectSizeForEmptyMap, size);
+
+  const int *entry_test;
+  ASSERT_FALSE(test_map->RetrieveRange(-1, entry_test));
+  ASSERT_FALSE(test_map->RetrieveRange(0, entry_test));
+  ASSERT_FALSE(test_map->RetrieveRange(10, entry_test));
+}
+
+TEST_F(TestStaticCRMMap, TestSingleElementMap) {
+  CRMMap crm_map;
+  // Test on one element:
+  int entry = 1;
+  crm_map.StoreRange(10, 10,  entry);
+
+  unsigned int size;
+  scoped_array<char> serialized_data;
+  serialized_data.reset(serializer_.Serialize(&crm_map, &size));
+  scoped_ptr<TestMap> test_map(new TestMap(serialized_data.get()));
+
+  const unsigned int kCorrectSizeForSingleElementMap = 40;
+  ASSERT_EQ(kCorrectSizeForSingleElementMap, size);
+
+  const int *entry_test;
+  ASSERT_FALSE(test_map->RetrieveRange(-1, entry_test));
+  ASSERT_FALSE(test_map->RetrieveRange(0, entry_test));
+  ASSERT_TRUE(test_map->RetrieveRange(10, entry_test));
+  ASSERT_EQ(*entry_test, entry);
+  ASSERT_TRUE(test_map->RetrieveRange(13, entry_test));
+  ASSERT_EQ(*entry_test, entry);
+}
+
+TEST_F(TestStaticCRMMap, RunTestData) {
+  unsigned int test_high = sizeof(test_data) / sizeof(test_data[0]);
+
+  // Now, do the RetrieveRange tests.  This further validates that the
+  // objects were stored properly and that retrieval returns the correct
+  // object.
+  // If GENERATE_TEST_DATA is defined, instead of the retrieval tests, a
+  // new test_data array will be printed.  Exercise caution when doing this.
+  // Be sure to verify the results manually!
+#ifdef GENERATE_TEST_DATA
+  printf("  const int test_data[] = {\n");
+#endif  // GENERATE_TEST_DATA
+
+  for (unsigned int address = 0; address < test_high; ++address) {
+    const int *entryptr;
+    int value = 0;
+    if (test_map_.RetrieveRange(address, entryptr))
+      value = *entryptr;
+
+#ifndef GENERATE_TEST_DATA
+    // Don't use ASSERT inside the loop because it won't show the failed
+    // |address|, and the line number will always be the same.  That makes
+    // it difficult to figure out which test failed.
+    EXPECT_EQ(value, test_data[address]) << "FAIL: retrieve address "
+                                         << address;
+#else  // !GENERATE_TEST_DATA
+    printf("    %d%c%s  // %d\n", value,
+                                  address == test_high - 1 ? ' ' : ',',
+                                  value < 10 ? " " : "",
+                                  address);
+#endif  // !GENERATE_TEST_DATA
+  }
+
+#ifdef GENERATE_TEST_DATA
+  printf("  };\n");
+#endif  // GENERATE_TEST_DATA
+}
+
+}  // namespace google_breakpad
+
+int main(int argc, char *argv[]) {
+  ::testing::InitGoogleTest(&argc, argv);
+
+  return RUN_ALL_TESTS();
+}
diff --git a/google-breakpad/src/processor/static_map-inl.h b/google-breakpad/src/processor/static_map-inl.h
new file mode 100644
index 0000000..e6aac6a
--- /dev/null
+++ b/google-breakpad/src/processor/static_map-inl.h
@@ -0,0 +1,176 @@
+// Copyright 2010 Google Inc. All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// static_map-inl.h: StaticMap implementation.
+//
+// See static_map.h for documentation.
+//
+// Author: Siyang Xie (lambxsy@google.com)
+
+
+#ifndef PROCESSOR_STATIC_MAP_INL_H__
+#define PROCESSOR_STATIC_MAP_INL_H__
+
+#include "processor/static_map.h"
+#include "processor/static_map_iterator-inl.h"
+#include "processor/logging.h"
+
+namespace google_breakpad {
+
+template<typename Key, typename Value, typename Compare>
+StaticMap<Key, Value, Compare>::StaticMap(const char* raw_data)
+    : raw_data_(raw_data),
+      compare_() {
+  // First 4 Bytes store the number of nodes.
+  num_nodes_ = *(reinterpret_cast<const uint32_t*>(raw_data_));
+
+  offsets_ = reinterpret_cast<const uint32_t*>(
+      raw_data_ + sizeof(num_nodes_));
+
+  keys_ = reinterpret_cast<const Key*>(
+      raw_data_ + (1 + num_nodes_) * sizeof(uint32_t));
+}
+
+// find(), lower_bound() and upper_bound() implement binary search algorithm.
+template<typename Key, typename Value, typename Compare>
+StaticMapIterator<Key, Value, Compare>
+StaticMap<Key, Value, Compare>::find(const Key &key) const {
+  int begin = 0;
+  int end = num_nodes_;
+  int middle;
+  int compare_result;
+  while (begin < end) {
+    middle = begin + (end - begin) / 2;
+    compare_result = compare_(key, GetKeyAtIndex(middle));
+    if (compare_result == 0)
+      return IteratorAtIndex(middle);
+    if (compare_result < 0) {
+      end = middle;
+    } else {
+      begin = middle + 1;
+    }
+  }
+  return this->end();
+}
+
+template<typename Key, typename Value, typename Compare>
+StaticMapIterator<Key, Value, Compare>
+StaticMap<Key, Value, Compare>::lower_bound(const Key &key) const {
+  int begin = 0;
+  int end = num_nodes_;
+  int middle;
+  int comp_result;
+  while (begin < end) {
+    middle = begin + (end - begin) / 2;
+    comp_result = compare_(key, GetKeyAtIndex(middle));
+    if (comp_result == 0)
+      return IteratorAtIndex(middle);
+    if (comp_result < 0) {
+      end = middle;
+    } else {
+      begin = middle + 1;
+    }
+  }
+  return IteratorAtIndex(begin);
+}
+
+template<typename Key, typename Value, typename Compare>
+StaticMapIterator<Key, Value, Compare>
+StaticMap<Key, Value, Compare>::upper_bound(const Key &key) const {
+  int begin = 0;
+  int end = num_nodes_;
+  int middle;
+  int compare_result;
+  while (begin < end) {
+    middle = begin + (end - begin) / 2;
+    compare_result = compare_(key, GetKeyAtIndex(middle));
+    if (compare_result == 0)
+      return IteratorAtIndex(middle + 1);
+    if (compare_result < 0) {
+      end = middle;
+    } else {
+      begin = middle + 1;
+    }
+  }
+  return IteratorAtIndex(begin);
+}
+
+template<typename Key, typename Value, typename Compare>
+bool StaticMap<Key, Value, Compare>::ValidateInMemoryStructure() const {
+  // check the number of nodes is non-negative:
+  if (!raw_data_) return false;
+  int32_t num_nodes = *(reinterpret_cast<const int32_t*>(raw_data_));
+  if (num_nodes < 0) {
+    BPLOG(INFO) << "StaticMap check failed: negative number of nodes";
+    return false;
+  }
+
+  int node_index = 0;
+  if (num_nodes_) {
+    uint64_t first_offset = sizeof(int32_t) * (num_nodes_ + 1)
+                           + sizeof(Key) * num_nodes_;
+    // Num_nodes_ is too large.
+    if (first_offset > 0xffffffffUL) {
+      BPLOG(INFO) << "StaticMap check failed: size exceeds limit";
+      return false;
+    }
+    if (offsets_[node_index] != static_cast<uint32_t>(first_offset)) {
+      BPLOG(INFO) << "StaticMap check failed: first node offset is incorrect";
+      return false;
+    }
+  }
+
+  for (node_index = 1; node_index < num_nodes_; ++node_index) {
+    // Check offsets[i] is strictly increasing:
+    if (offsets_[node_index] <= offsets_[node_index - 1]) {
+      BPLOG(INFO) << "StaticMap check failed: node offsets non-increasing";
+      return false;
+    }
+    // Check Key[i] is strictly increasing as no duplicate keys are allowed.
+    if (compare_(GetKeyAtIndex(node_index),
+                 GetKeyAtIndex(node_index - 1)) <= 0) {
+      BPLOG(INFO) << "StaticMap check failed: node keys non-increasing";
+      return false;
+    }
+  }
+  return true;
+}
+
+template<typename Key, typename Value, typename Compare>
+const Key StaticMap<Key, Value, Compare>::GetKeyAtIndex(int index) const {
+  if (index < 0 || index >= num_nodes_) {
+    BPLOG(ERROR) << "Key index out of range error";
+    // Key type is required to be primitive type.  Return 0 if index is invalid.
+    return 0;
+  }
+  return keys_[index];
+}
+
+}  // namespace google_breakpad
+
+#endif  // PROCESSOR_STATIC_MAP_INL_H__
diff --git a/google-breakpad/src/processor/static_map.h b/google-breakpad/src/processor/static_map.h
new file mode 100644
index 0000000..9723ab2
--- /dev/null
+++ b/google-breakpad/src/processor/static_map.h
@@ -0,0 +1,144 @@
+// Copyright 2010 Google Inc. All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// static_map.h: StaticMap.
+//
+// StaticMap provides lookup interfaces and iterators similar as stl::map's.
+// These lookup operations are purely Read-Only, thus memory
+// allocation & deallocation is mostly avoided (intentionally).
+//
+// The chunk of memory should contain data with pre-defined pattern:
+// **************** header ***************
+// uint32 (4 bytes): number of nodes
+// uint32 (4 bytes): address offset of node1's mapped_value
+// uint32 (4 bytes): address offset of node2's mapped_value
+// ...
+// uint32 (4 bytes): address offset of nodeN's mapped_value
+//
+// ************* Key array ************
+// (X bytes): node1's key
+// (X bytes): node2's key
+// ...
+// (X bytes): nodeN's key
+//
+// ************* Value array **********
+// (? bytes): node1's mapped_value
+// (? bytes): node2's mapped_value
+// ...
+// (? bytes): nodeN's mapped_value
+//
+// REQUIREMENT: Key type MUST be primitive type or pointers so that:
+// X = sizeof(typename Key);
+//
+// Note: since address offset is stored as uint32, user should keep in mind that
+// StaticMap only supports up to 4GB size of memory data.
+
+// Author: Siyang Xie (lambxsy@google.com)
+
+
+#ifndef PROCESSOR_STATIC_MAP_H__
+#define PROCESSOR_STATIC_MAP_H__
+
+#include "processor/static_map_iterator-inl.h"
+
+namespace google_breakpad {
+
+// Default functor to compare keys.
+template<typename Key>
+class DefaultCompare {
+ public:
+  int operator()(const Key &k1, const Key &k2) const {
+    if (k1 < k2) return -1;
+    if (k1 == k2) return 0;
+    return 1;
+  }
+};
+
+template<typename Key, typename Value, typename Compare = DefaultCompare<Key> >
+class StaticMap {
+ public:
+  typedef StaticMapIterator<Key, Value, Compare> iterator;
+  typedef StaticMapIterator<Key, Value, Compare> const_iterator;
+
+  StaticMap() : raw_data_(0),
+                num_nodes_(0),
+                offsets_(0),
+                compare_() { }
+
+  explicit StaticMap(const char* raw_data);
+
+  inline bool empty() const { return num_nodes_ == 0; }
+  inline unsigned int size() const { return num_nodes_; }
+
+  // Return iterators.
+  inline iterator begin() const { return IteratorAtIndex(0); }
+  inline iterator last() const { return IteratorAtIndex(num_nodes_ - 1); }
+  inline iterator end() const { return IteratorAtIndex(num_nodes_); }
+  inline iterator IteratorAtIndex(int index) const {
+    return iterator(raw_data_, index);
+  }
+
+  // Lookup operations.
+  iterator find(const Key &k) const;
+
+  // lower_bound(k) searches in a sorted range for the first element that has a
+  // key not less than the argument k.
+  iterator lower_bound(const Key &k) const;
+
+  // upper_bound(k) searches in a sorted range for the first element that has a
+  // key greater than the argument k.
+  iterator upper_bound(const Key &k) const;
+
+  // Checks if the underlying memory data conforms to the predefined pattern:
+  // first check the number of nodes is non-negative,
+  // then check both offsets and keys are strictly increasing (sorted).
+  bool ValidateInMemoryStructure() const;
+
+ private:
+  const Key GetKeyAtIndex(int i) const;
+
+  // Start address of a raw memory chunk with serialized data.
+  const char* raw_data_;
+
+  // Number of nodes in the static map.
+  int32_t num_nodes_;
+
+  // Array of offset addresses for stored values.
+  // For example:
+  // address_of_i-th_node_value = raw_data_ + offsets_[i]
+  const uint32_t* offsets_;
+
+  // keys_[i] = key of i_th node
+  const Key* keys_;
+
+  Compare compare_;
+};
+
+}  // namespace google_breakpad
+
+#endif  // PROCESSOR_STATIC_MAP_H__
diff --git a/google-breakpad/src/processor/static_map_iterator-inl.h b/google-breakpad/src/processor/static_map_iterator-inl.h
new file mode 100644
index 0000000..7a7db5a
--- /dev/null
+++ b/google-breakpad/src/processor/static_map_iterator-inl.h
@@ -0,0 +1,147 @@
+// Copyright 2010 Google Inc. All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// static_map_iterator-inl.h: StaticMapIterator implementation.
+//
+// See static_map_iterator.h for documentation.
+//
+// Author: Siyang Xie (lambxsy@google.com)
+
+#ifndef PROCESSOR_STATIC_MAP_ITERATOR_INL_H__
+#define PROCESSOR_STATIC_MAP_ITERATOR_INL_H__
+
+#include "processor/static_map_iterator.h"
+
+#include "processor/logging.h"
+
+namespace google_breakpad {
+
+template<typename Key, typename Value, typename Compare>
+StaticMapIterator<Key, Value, Compare>::StaticMapIterator(const char* base,
+                                                            const int &index):
+      index_(index), base_(base) {
+  // See static_map.h for documentation on
+  // bytes format of serialized StaticMap data.
+  num_nodes_ = *(reinterpret_cast<const int32_t*>(base_));
+  offsets_ = reinterpret_cast<const uint32_t*>(base_ + sizeof(num_nodes_));
+  keys_ = reinterpret_cast<const Key*>(
+      base_ + (1 + num_nodes_) * sizeof(num_nodes_));
+}
+
+// Increment & Decrement operators:
+template<typename Key, typename Value, typename Compare>
+StaticMapIterator<Key, Value, Compare>&
+StaticMapIterator<Key, Value, Compare>::operator++() {
+  if (!IsValid()) {
+    BPLOG(ERROR) << "operator++ on invalid iterator";
+    return *this;
+  }
+  if (++index_ > num_nodes_) index_ = num_nodes_;
+  return *this;
+}
+
+template<typename Key, typename Value, typename Compare>
+StaticMapIterator<Key, Value, Compare>
+StaticMapIterator<Key, Value, Compare>::operator++(int postfix_operator) {
+  if (!IsValid()) {
+    BPLOG(ERROR) << "operator++ on invalid iterator";
+    return *this;
+  }
+  StaticMapIterator<Key, Value, Compare> tmp = *this;
+  if (++index_ > num_nodes_) index_ = num_nodes_;
+  return tmp;
+}
+
+template<typename Key, typename Value, typename Compare>
+StaticMapIterator<Key, Value, Compare>&
+StaticMapIterator<Key, Value, Compare>::operator--() {
+  if (!IsValid()) {
+    BPLOG(ERROR) << "operator++ on invalid iterator";
+    return *this;
+  }
+
+  if (--index_ < 0) index_ = 0;
+  return *this;
+}
+
+template<typename Key, typename Value, typename Compare>
+StaticMapIterator<Key, Value, Compare>
+StaticMapIterator<Key, Value, Compare>::operator--(int postfix_operator) {
+  if (!IsValid()) {
+    BPLOG(ERROR) << "operator++ on invalid iterator";
+    return *this;
+  }
+  StaticMapIterator<Key, Value, Compare> tmp = *this;
+
+  if (--index_ < 0) index_ = 0;
+  return tmp;
+}
+
+template<typename Key, typename Value, typename Compare>
+const Key* StaticMapIterator<Key, Value, Compare>::GetKeyPtr() const {
+  if (!IsValid()) {
+    BPLOG(ERROR) << "call GetKeyPtr() on invalid iterator";
+    return NULL;
+  }
+  return &(keys_[index_]);
+}
+
+template<typename Key, typename Value, typename Compare>
+const char* StaticMapIterator<Key, Value, Compare>::GetValueRawPtr() const {
+  if (!IsValid()) {
+    BPLOG(ERROR) << "call GetValuePtr() on invalid iterator";
+    return NULL;
+  }
+  return base_ + offsets_[index_];
+}
+
+template<typename Key, typename Value, typename Compare>
+bool StaticMapIterator<Key, Value, Compare>::operator==(
+    const StaticMapIterator<Key, Value, Compare>& x) const {
+  return base_ == x.base_ && index_ == x.index_;
+}
+
+template<typename Key, typename Value, typename Compare>
+bool StaticMapIterator<Key, Value, Compare>::operator!=(
+    const StaticMapIterator<Key, Value, Compare>& x) const {
+  // Only need to compare base_ and index_.
+  // Other data members are auxiliary.
+  return base_ != x.base_ || index_ != x.index_;
+}
+
+template<typename Key, typename Value, typename Compare>
+bool StaticMapIterator<Key, Value, Compare>::IsValid() const {
+  if (!base_ || index_ < 0 || index_ > num_nodes_)
+    return false;
+
+  return true;
+}
+
+}  // namespace google_breakpad
+
+#endif  // PROCESSOR_STATIC_MAP_ITERATOR_INL_H__
diff --git a/google-breakpad/src/processor/static_map_iterator.h b/google-breakpad/src/processor/static_map_iterator.h
new file mode 100644
index 0000000..1af8fff
--- /dev/null
+++ b/google-breakpad/src/processor/static_map_iterator.h
@@ -0,0 +1,112 @@
+// Copyright 2010 Google Inc. All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// static_map_iterator.h: StaticMapIterator template class declaration.
+//
+// StaticMapIterator provides increment and decrement operators to iterate
+// through a StaticMap map.  It does not provide *, -> operators, user should
+// use GetKeyPtr(), GetKey(), GetValuePtr() interfaces to retrieve data or
+// pointer to data.  StaticMapIterator is essentially a const_iterator.
+//
+// Author: Siyang Xie (lambxsy@google.com)
+
+
+#ifndef PROCESSOR_STATIC_MAP_ITERATOR_H__
+#define PROCESSOR_STATIC_MAP_ITERATOR_H__
+
+#include "google_breakpad/common/breakpad_types.h"
+
+namespace google_breakpad {
+
+// Forward declaration.
+template<typename Key, typename Value, typename Compare> class StaticMap;
+
+// StaticMapIterator does not support operator*() or operator->(),
+// User should use GetKey(), GetKeyPtr(), GetValuePtr() instead;
+template<typename Key, typename Value, typename Compare>
+class StaticMapIterator {
+ public:
+  // Constructors.
+  StaticMapIterator(): index_(-1), base_(NULL) { }
+
+  // Increment & Decrement operators:
+  StaticMapIterator& operator++();
+  StaticMapIterator operator++(int post_fix_operator);
+
+  StaticMapIterator& operator--();
+  StaticMapIterator operator--(int post_fix_operator);
+
+  // Interface for retrieving data / pointer to data.
+  const Key* GetKeyPtr() const;
+
+  // Run time error will occur if GetKey() is called on an invalid iterator.
+  inline const Key GetKey() const { return *GetKeyPtr(); }
+
+  // return a raw memory pointer that points to the start address of value.
+  const char* GetValueRawPtr() const;
+
+  // return a reinterpret-casted pointer to the value.
+  inline const Value* GetValuePtr() const {
+    return reinterpret_cast<const Value*>(GetValueRawPtr());
+  }
+
+  bool operator==(const StaticMapIterator& x) const;
+  bool operator!=(const StaticMapIterator& x) const;
+
+  // Check if this iterator is valid.
+  // If iterator is invalid, user is forbidden to use ++/-- operator
+  // or interfaces for retrieving data / pointer to data.
+  bool IsValid() const;
+
+ private:
+  friend class StaticMap<Key, Value, Compare>;
+
+  // Only StaticMap can call this constructor.
+  explicit StaticMapIterator(const char* base, const int32_t &index);
+
+  // Index of node that the iterator is pointing to.
+  int32_t index_;
+
+  // Beginning address of the serialized map data.
+  const char* base_;
+
+  // Number of nodes in the map.  Use it to identify end() iterator.
+  int32_t num_nodes_;
+
+  // offsets_ is an array of offset addresses of mapped values.
+  // For example:
+  // address_of_i-th_node_value = base_ + offsets_[i]
+  const uint32_t* offsets_;
+
+  // keys_[i] = key of i_th node.
+  const Key* keys_;
+};
+
+}  // namespace google_breakpad
+
+#endif  // PROCESSOR_STATIC_MAP_ITERATOR_H__
diff --git a/google-breakpad/src/processor/static_map_unittest.cc b/google-breakpad/src/processor/static_map_unittest.cc
new file mode 100644
index 0000000..97b1e61
--- /dev/null
+++ b/google-breakpad/src/processor/static_map_unittest.cc
@@ -0,0 +1,386 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// static_map_unittest.cc: Unit tests for StaticMap.
+//
+// Author: Siyang Xie (lambxsy@google.com)
+
+#include <climits>
+#include <map>
+
+#include "breakpad_googletest_includes.h"
+#include "processor/static_map-inl.h"
+
+
+typedef int ValueType;
+typedef int KeyType;
+typedef google_breakpad::StaticMap< KeyType, ValueType > TestMap;
+typedef std::map< KeyType, ValueType > StdMap;
+
+template<typename Key, typename Value>
+class SimpleMapSerializer {
+ public:
+  static char* Serialize(const std::map<Key, Value> &stdmap,
+                   unsigned int* size = NULL) {
+    unsigned int size_per_node =
+        sizeof(uint32_t) + sizeof(Key) + sizeof(Value);
+    unsigned int memsize = sizeof(int32_t) + size_per_node * stdmap.size();
+    if (size) *size = memsize;
+
+    // Allocate memory for serialized data:
+    char* mem = reinterpret_cast<char*>(operator new(memsize));
+    char* address = mem;
+
+    // Writer the number of nodes:
+    new (address) uint32_t(static_cast<uint32_t>(stdmap.size()));
+    address += sizeof(uint32_t);
+
+    // Nodes' offset:
+    uint32_t* offsets = reinterpret_cast<uint32_t*>(address);
+    address += sizeof(uint32_t) * stdmap.size();
+
+    // Keys:
+    Key* keys = reinterpret_cast<Key*>(address);
+    address += sizeof(Key) * stdmap.size();
+
+    // Traversing map:
+    typename std::map<Key, Value>::const_iterator iter = stdmap.begin();
+    for (int index = 0; iter != stdmap.end(); ++iter, ++index) {
+      offsets[index] = static_cast<unsigned int>(address - mem);
+      keys[index] = iter->first;
+      new (address) Value(iter->second);
+      address += sizeof(Value);
+    }
+    return mem;
+  }
+};
+
+
+class TestInvalidMap : public ::testing::Test {
+ protected:
+  void SetUp() {
+    memset(data, 0, kMemorySize);
+  }
+
+  // 40 Bytes memory can hold a StaticMap with up to 3 nodes.
+  static const int kMemorySize = 40;
+  char data[kMemorySize];
+  TestMap test_map;
+};
+
+TEST_F(TestInvalidMap, TestNegativeNumberNodes) {
+  memset(data, 0xff, sizeof(uint32_t));  // Set the number of nodes = -1
+  test_map = TestMap(data);
+  ASSERT_FALSE(test_map.ValidateInMemoryStructure());
+}
+
+TEST_F(TestInvalidMap, TestWrongOffsets) {
+  uint32_t* header = reinterpret_cast<uint32_t*>(data);
+  const uint32_t kNumNodes = 2;
+  const uint32_t kHeaderOffset =
+        sizeof(uint32_t) + kNumNodes * (sizeof(uint32_t) + sizeof(KeyType));
+
+  header[0] = kNumNodes;
+  header[1] = kHeaderOffset + 3;   // Wrong offset for first node
+  test_map = TestMap(data);
+  ASSERT_FALSE(test_map.ValidateInMemoryStructure());
+
+  header[1] = kHeaderOffset;       // Correct offset for first node
+  header[2] = kHeaderOffset - 1;   // Wrong offset for second node
+  test_map = TestMap(data);
+  ASSERT_FALSE(test_map.ValidateInMemoryStructure());
+}
+
+TEST_F(TestInvalidMap, TestUnSortedKeys) {
+  uint32_t* header = reinterpret_cast<uint32_t*>(data);
+  const uint32_t kNumNodes = 2;
+  const uint32_t kHeaderOffset =
+      sizeof(uint32_t) + kNumNodes * (sizeof(uint32_t) + sizeof(KeyType));
+  header[0] = kNumNodes;
+  header[1] = kHeaderOffset;
+  header[2] = kHeaderOffset + sizeof(ValueType);
+
+  KeyType* keys = reinterpret_cast<KeyType*>(
+      data + (kNumNodes + 1) * sizeof(uint32_t));
+  // Set keys in non-increasing order.
+  keys[0] = 10;
+  keys[1] = 7;
+  test_map = TestMap(data);
+  ASSERT_FALSE(test_map.ValidateInMemoryStructure());
+}
+
+
+class TestValidMap : public ::testing::Test {
+ protected:
+  void SetUp() {
+    int testcase = 0;
+
+    // Empty map.
+    map_data[testcase] =
+        serializer.Serialize(std_map[testcase], &size[testcase]);
+    test_map[testcase] = TestMap(map_data[testcase]);
+    ++testcase;
+
+    // Single element.
+    std_map[testcase].insert(std::make_pair(2, 8));
+    map_data[testcase] =
+        serializer.Serialize(std_map[testcase], &size[testcase]);
+    test_map[testcase] = TestMap(map_data[testcase]);
+    ++testcase;
+
+    // 100 elements.
+    for (int i = 0; i < 100; ++i)
+          std_map[testcase].insert(std::make_pair(i, 2 * i));
+    map_data[testcase] =
+        serializer.Serialize(std_map[testcase], &size[testcase]);
+    test_map[testcase] = TestMap(map_data[testcase]);
+    ++testcase;
+
+    // 1000 random elements.
+    for (int i = 0; i < 1000; ++i)
+      std_map[testcase].insert(std::make_pair(rand(), rand()));
+    map_data[testcase] =
+        serializer.Serialize(std_map[testcase], &size[testcase]);
+    test_map[testcase] = TestMap(map_data[testcase]);
+
+    // Set correct size of memory allocation for each test case.
+    unsigned int size_per_node =
+        sizeof(uint32_t) + sizeof(KeyType) + sizeof(ValueType);
+    for (testcase = 0; testcase < kNumberTestCases; ++testcase) {
+      correct_size[testcase] =
+          sizeof(uint32_t) + std_map[testcase].size() * size_per_node;
+    }
+  }
+
+  void TearDown() {
+    for (int i = 0;i < kNumberTestCases; ++i)
+      delete map_data[i];
+  }
+
+
+  void IteratorTester(int test_case) {
+    // scan through:
+    iter_test = test_map[test_case].begin();
+    iter_std = std_map[test_case].begin();
+
+    for (; iter_test != test_map[test_case].end() &&
+           iter_std != std_map[test_case].end();
+         ++iter_test, ++iter_std) {
+      ASSERT_EQ(iter_test.GetKey(), iter_std->first);
+      ASSERT_EQ(*(iter_test.GetValuePtr()), iter_std->second);
+    }
+    ASSERT_TRUE(iter_test == test_map[test_case].end()
+             && iter_std == std_map[test_case].end());
+
+    // Boundary testcase.
+    if (!std_map[test_case].empty()) {
+      // rear boundary case:
+      iter_test = test_map[test_case].end();
+      iter_std = std_map[test_case].end();
+      --iter_std;
+      --iter_test;
+      ASSERT_EQ(iter_test.GetKey(), iter_std->first);
+      ASSERT_EQ(*(iter_test.GetValuePtr()), iter_std->second);
+
+      ++iter_test;
+      ++iter_std;
+      ASSERT_TRUE(iter_test == test_map[test_case].end());
+
+      --iter_test;
+      --iter_std;
+      ASSERT_TRUE(iter_test != test_map[test_case].end());
+      ASSERT_TRUE(iter_test == test_map[test_case].last());
+      ASSERT_EQ(iter_test.GetKey(), iter_std->first);
+      ASSERT_EQ(*(iter_test.GetValuePtr()), iter_std->second);
+
+      // front boundary case:
+      iter_test = test_map[test_case].begin();
+      --iter_test;
+      ASSERT_TRUE(iter_test == test_map[test_case].begin());
+    }
+  }
+
+  void CompareLookupResult(int test_case) {
+    bool found1 = (iter_test != test_map[test_case].end());
+    bool found2 = (iter_std != std_map[test_case].end());
+    ASSERT_EQ(found1, found2);
+
+    if (found1 && found2) {
+      ASSERT_EQ(iter_test.GetKey(), iter_std->first);
+      ASSERT_EQ(*(iter_test.GetValuePtr()), iter_std->second);
+    }
+  }
+
+  void FindTester(int test_case, const KeyType &key) {
+    iter_test = test_map[test_case].find(key);
+    iter_std = std_map[test_case].find(key);
+    CompareLookupResult(test_case);
+  }
+
+  void LowerBoundTester(int test_case, const KeyType &key) {
+    iter_test = test_map[test_case].lower_bound(key);
+    iter_std = std_map[test_case].lower_bound(key);
+    CompareLookupResult(test_case);
+  }
+
+  void UpperBoundTester(int test_case, const KeyType &key) {
+    iter_test = test_map[test_case].upper_bound(key);
+    iter_std = std_map[test_case].upper_bound(key);
+    CompareLookupResult(test_case);
+  }
+
+  void LookupTester(int test_case) {
+    StdMap::const_iterator iter;
+    // Test find():
+    for (iter = std_map[test_case].begin();
+        iter != std_map[test_case].end();
+        ++iter) {
+      FindTester(test_case, iter->first);
+      FindTester(test_case, iter->first + 1);
+      FindTester(test_case, iter->first - 1);
+    }
+    FindTester(test_case, INT_MIN);
+    FindTester(test_case, INT_MAX);
+    // random test:
+    for (int i = 0; i < rand()%5000 + 5000; ++i)
+      FindTester(test_case, rand());
+
+    // Test lower_bound():
+    for (iter = std_map[test_case].begin();
+        iter != std_map[test_case].end();
+        ++iter) {
+      LowerBoundTester(test_case, iter->first);
+      LowerBoundTester(test_case, iter->first + 1);
+      LowerBoundTester(test_case, iter->first - 1);
+    }
+    LowerBoundTester(test_case, INT_MIN);
+    LowerBoundTester(test_case, INT_MAX);
+    // random test:
+    for (int i = 0; i < rand()%5000 + 5000; ++i)
+      LowerBoundTester(test_case, rand());
+
+    // Test upper_bound():
+    for (iter = std_map[test_case].begin();
+        iter != std_map[test_case].end();
+        ++iter) {
+      UpperBoundTester(test_case, iter->first);
+      UpperBoundTester(test_case, iter->first + 1);
+      UpperBoundTester(test_case, iter->first - 1);
+    }
+    UpperBoundTester(test_case, INT_MIN);
+    UpperBoundTester(test_case, INT_MAX);
+    // random test:
+    for (int i = 0; i < rand()%5000 + 5000; ++i)
+      UpperBoundTester(test_case, rand());
+  }
+
+  static const int kNumberTestCases = 4;
+  StdMap std_map[kNumberTestCases];
+  TestMap test_map[kNumberTestCases];
+  TestMap::const_iterator iter_test;
+  StdMap::const_iterator iter_std;
+  char* map_data[kNumberTestCases];
+  unsigned int size[kNumberTestCases];
+  unsigned int correct_size[kNumberTestCases];
+  SimpleMapSerializer<KeyType, ValueType> serializer;
+};
+
+TEST_F(TestValidMap, TestEmptyMap) {
+  int test_case = 0;
+  // Assert memory size allocated during serialization is correct.
+  ASSERT_EQ(correct_size[test_case], size[test_case]);
+
+  // Sanity check of serialized data:
+  ASSERT_TRUE(test_map[test_case].ValidateInMemoryStructure());
+  ASSERT_EQ(std_map[test_case].empty(), test_map[test_case].empty());
+  ASSERT_EQ(std_map[test_case].size(), test_map[test_case].size());
+
+  // Test Iterator.
+  IteratorTester(test_case);
+
+  // Test lookup operations.
+  LookupTester(test_case);
+}
+
+TEST_F(TestValidMap, TestSingleElement) {
+  int test_case = 1;
+  // Assert memory size allocated during serialization is correct.
+  ASSERT_EQ(correct_size[test_case], size[test_case]);
+
+  // Sanity check of serialized data:
+  ASSERT_TRUE(test_map[test_case].ValidateInMemoryStructure());
+  ASSERT_EQ(std_map[test_case].empty(), test_map[test_case].empty());
+  ASSERT_EQ(std_map[test_case].size(), test_map[test_case].size());
+
+  // Test Iterator.
+  IteratorTester(test_case);
+
+  // Test lookup operations.
+  LookupTester(test_case);
+}
+
+TEST_F(TestValidMap, Test100Elements) {
+  int test_case = 2;
+  // Assert memory size allocated during serialization is correct.
+  ASSERT_EQ(correct_size[test_case], size[test_case]);
+
+  // Sanity check of serialized data:
+  ASSERT_TRUE(test_map[test_case].ValidateInMemoryStructure());
+  ASSERT_EQ(std_map[test_case].empty(), test_map[test_case].empty());
+  ASSERT_EQ(std_map[test_case].size(), test_map[test_case].size());
+
+  // Test Iterator.
+  IteratorTester(test_case);
+
+  // Test lookup operations.
+  LookupTester(test_case);
+}
+
+TEST_F(TestValidMap, Test1000RandomElements) {
+  int test_case = 3;
+  // Assert memory size allocated during serialization is correct.
+  ASSERT_EQ(correct_size[test_case], size[test_case]);
+
+  // Sanity check of serialized data:
+  ASSERT_TRUE(test_map[test_case].ValidateInMemoryStructure());
+  ASSERT_EQ(std_map[test_case].empty(), test_map[test_case].empty());
+  ASSERT_EQ(std_map[test_case].size(), test_map[test_case].size());
+
+  // Test Iterator.
+  IteratorTester(test_case);
+
+  // Test lookup operations.
+  LookupTester(test_case);
+}
+
+int main(int argc, char *argv[]) {
+  ::testing::InitGoogleTest(&argc, argv);
+
+  return RUN_ALL_TESTS();
+}
diff --git a/google-breakpad/src/processor/static_range_map-inl.h b/google-breakpad/src/processor/static_range_map-inl.h
new file mode 100644
index 0000000..f6cef1a
--- /dev/null
+++ b/google-breakpad/src/processor/static_range_map-inl.h
@@ -0,0 +1,130 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// static_range_map-inl.h: StaticRangeMap implementation.
+//
+// See static_range_map.h for documentation.
+//
+// Author: Siyang Xie (lambxsy@google.com)
+
+#ifndef PROCESSOR_STATIC_RANGE_MAP_INL_H__
+#define PROCESSOR_STATIC_RANGE_MAP_INL_H__
+
+#include "processor/static_range_map.h"
+#include "processor/logging.h"
+
+namespace google_breakpad {
+
+template<typename AddressType, typename EntryType>
+bool StaticRangeMap<AddressType, EntryType>::RetrieveRange(
+    const AddressType &address, const EntryType *&entry,
+    AddressType *entry_base, AddressType *entry_size) const {
+  MapConstIterator iterator = map_.lower_bound(address);
+  if (iterator == map_.end())
+    return false;
+
+  // The map is keyed by the high address of each range, so |address| is
+  // guaranteed to be lower than the range's high address.  If |range| is
+  // not directly preceded by another range, it's possible for address to
+  // be below the range's low address, though.  When that happens, address
+  // references something not within any range, so return false.
+
+  const Range *range = iterator.GetValuePtr();
+
+  // Make sure AddressType and EntryType are copyable basic types
+  // e.g.: integer types, pointers etc
+  if (address < range->base())
+    return false;
+
+  entry = range->entryptr();
+  if (entry_base)
+    *entry_base = range->base();
+  if (entry_size)
+    *entry_size = iterator.GetKey() - range->base() + 1;
+
+  return true;
+}
+
+
+template<typename AddressType, typename EntryType>
+bool StaticRangeMap<AddressType, EntryType>::RetrieveNearestRange(
+    const AddressType &address, const EntryType *&entry,
+    AddressType *entry_base, AddressType *entry_size) const {
+  // If address is within a range, RetrieveRange can handle it.
+  if (RetrieveRange(address, entry, entry_base, entry_size))
+    return true;
+
+  // upper_bound gives the first element whose key is greater than address,
+  // but we want the first element whose key is less than or equal to address.
+  // Decrement the iterator to get there, but not if the upper_bound already
+  // points to the beginning of the map - in that case, address is lower than
+  // the lowest stored key, so return false.
+
+  MapConstIterator iterator = map_.upper_bound(address);
+  if (iterator == map_.begin())
+    return false;
+  --iterator;
+
+  const Range *range = iterator.GetValuePtr();
+  entry = range->entryptr();
+  if (entry_base)
+    *entry_base = range->base();
+  if (entry_size)
+    *entry_size = iterator.GetKey() - range->base() + 1;
+
+  return true;
+}
+
+template<typename AddressType, typename EntryType>
+bool StaticRangeMap<AddressType, EntryType>::RetrieveRangeAtIndex(
+    int index, const EntryType *&entry,
+    AddressType *entry_base, AddressType *entry_size) const {
+
+  if (index >= GetCount()) {
+    BPLOG(ERROR) << "Index out of range: " << index << "/" << GetCount();
+    return false;
+  }
+
+  MapConstIterator iterator = map_.IteratorAtIndex(index);
+
+  const Range *range = iterator.GetValuePtr();
+
+  entry = range->entryptr();
+  if (entry_base)
+    *entry_base = range->base();
+  if (entry_size)
+    *entry_size = iterator.GetKey() - range->base() + 1;
+
+  return true;
+}
+
+}  // namespace google_breakpad
+
+
+#endif  // PROCESSOR_STATIC_RANGE_MAP_INL_H__
diff --git a/google-breakpad/src/processor/static_range_map.h b/google-breakpad/src/processor/static_range_map.h
new file mode 100644
index 0000000..91aabb0
--- /dev/null
+++ b/google-breakpad/src/processor/static_range_map.h
@@ -0,0 +1,106 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// static_range_map.h: StaticRangeMap.
+//
+// StaticRangeMap is similar as RangeMap.  However, StaticRangeMap wraps a
+// StaticMap instead of std::map, and does not support dynamic operations like
+// StoreRange(...).  StaticRangeMap provides same Retrieve*() interfaces as
+// RangeMap.  Please see range_map.h for more documentation.
+//
+// Author: Siyang Xie (lambxsy@google.com)
+
+#ifndef PROCESSOR_STATIC_RANGE_MAP_H__
+#define PROCESSOR_STATIC_RANGE_MAP_H__
+
+
+#include "processor/static_map-inl.h"
+
+namespace google_breakpad {
+
+// AddressType is basic type, e.g.: integer types, pointers etc
+// EntryType could be a complex type, so we retrieve its pointer instead.
+template<typename AddressType, typename EntryType>
+class StaticRangeMap {
+ public:
+  StaticRangeMap(): map_() { }
+  explicit StaticRangeMap(const char *memory): map_(memory) { }
+
+  // Locates the range encompassing the supplied address.  If there is
+  // no such range, returns false.  entry_base and entry_size, if non-NULL,
+  // are set to the base and size of the entry's range.
+  bool RetrieveRange(const AddressType &address, const EntryType *&entry,
+                     AddressType *entry_base, AddressType *entry_size) const;
+
+  // Locates the range encompassing the supplied address, if one exists.
+  // If no range encompasses the supplied address, locates the nearest range
+  // to the supplied address that is lower than the address.  Returns false
+  // if no range meets these criteria.  entry_base and entry_size, if
+  // non-NULL, are set to the base and size of the entry's range.
+  bool RetrieveNearestRange(const AddressType &address, const EntryType *&entry,
+                            AddressType *entry_base, AddressType *entry_size)
+                            const;
+
+  // Treating all ranges as a list ordered by the address spaces that they
+  // occupy, locates the range at the index specified by index.  Returns
+  // false if index is larger than the number of ranges stored.  entry_base
+  // and entry_size, if non-NULL, are set to the base and size of the entry's
+  // range.
+  //
+  // RetrieveRangeAtIndex is not optimized for speedy operation.
+  bool RetrieveRangeAtIndex(int index, const EntryType *&entry,
+                            AddressType *entry_base, AddressType *entry_size)
+                            const;
+
+  // Returns the number of ranges stored in the RangeMap.
+  inline int GetCount() const { return map_.size(); }
+
+ private:
+  friend class ModuleComparer;
+  class Range {
+   public:
+    AddressType base() const {
+      return *(reinterpret_cast<const AddressType*>(this));
+    }
+    const EntryType* entryptr() const {
+      return reinterpret_cast<const EntryType*>(this + sizeof(AddressType));
+    }
+  };
+
+  // Convenience types.
+  typedef StaticRangeMap* SelfPtr;
+  typedef StaticMap<AddressType, Range> AddressToRangeMap;
+  typedef typename AddressToRangeMap::const_iterator MapConstIterator;
+
+  AddressToRangeMap map_;
+};
+
+}  // namespace google_breakpad
+
+#endif  // PROCESSOR_STATIC_RANGE_MAP_H__
diff --git a/google-breakpad/src/processor/static_range_map_unittest.cc b/google-breakpad/src/processor/static_range_map_unittest.cc
new file mode 100644
index 0000000..2821736
--- /dev/null
+++ b/google-breakpad/src/processor/static_range_map_unittest.cc
@@ -0,0 +1,421 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// static_range_map_unittest.cc: Unit tests for StaticRangeMap.
+//
+// Author: Siyang Xie (lambxsy@google.com)
+
+#include "breakpad_googletest_includes.h"
+#include "common/scoped_ptr.h"
+#include "processor/range_map-inl.h"
+#include "processor/static_range_map-inl.h"
+#include "processor/simple_serializer-inl.h"
+#include "processor/map_serializers-inl.h"
+#include "processor/logging.h"
+
+
+namespace {
+// Types used for testing.
+typedef int AddressType;
+typedef int EntryType;
+typedef google_breakpad::StaticRangeMap< AddressType, EntryType > TestMap;
+typedef google_breakpad::RangeMap< AddressType, EntryType > RMap;
+
+// RangeTest contains data to use for store and retrieve tests.  See
+// RunTests for descriptions of the tests.
+struct RangeTest {
+  // Base address to use for test
+  AddressType address;
+
+  // Size of range to use for test
+  AddressType size;
+
+  // Unique ID of range - unstorable ranges must have unique IDs too
+  EntryType id;
+
+  // Whether this range is expected to be stored successfully or not
+  bool expect_storable;
+};
+
+// A RangeTestSet encompasses multiple RangeTests, which are run in
+// sequence on the same RangeMap.
+struct RangeTestSet {
+  // An array of RangeTests
+  const RangeTest* range_tests;
+
+  // The number of tests in the set
+  unsigned int range_test_count;
+};
+
+// These tests will be run sequentially.  The first set of tests exercises
+// most functions of RangeTest, and verifies all of the bounds-checking.
+const RangeTest range_tests_0[] = {
+  { INT_MIN,     16,      1,  true },   // lowest possible range
+  { -2,          5,       2,  true },   // a range through zero
+  { INT_MAX - 9, 11,      3,  false },  // tests anti-overflow
+  { INT_MAX - 9, 10,      4,  true },   // highest possible range
+  { 5,           0,       5,  false },  // tests anti-zero-size
+  { 5,           1,       6,  true },   // smallest possible range
+  { -20,         15,      7,  true },   // entirely negative
+
+  { 10,          10,      10, true },   // causes the following tests to fail
+  { 9,           10,      11, false },  // one-less base, one-less high
+  { 9,           11,      12, false },  // one-less base, identical high
+  { 9,           12,      13, false },  // completely contains existing
+  { 10,          9,       14, false },  // identical base, one-less high
+  { 10,          10,      15, false },  // exactly identical to existing range
+  { 10,          11,      16, false },  // identical base, one-greater high
+  { 11,          8,       17, false },  // contained completely within
+  { 11,          9,       18, false },  // one-greater base, identical high
+  { 11,          10,      19, false },  // one-greater base, one-greater high
+  { 9,           2,       20, false },  // overlaps bottom by one
+  { 10,          1,       21, false },  // overlaps bottom by one, contained
+  { 19,          1,       22, false },  // overlaps top by one, contained
+  { 19,          2,       23, false },  // overlaps top by one
+
+  { 9,           1,       24, true },   // directly below without overlap
+  { 20,          1,       25, true },   // directly above without overlap
+
+  { 6,           3,       26, true },   // exactly between two ranges, gapless
+  { 7,           3,       27, false },  // tries to span two ranges
+  { 7,           5,       28, false },  // tries to span three ranges
+  { 4,           20,      29, false },  // tries to contain several ranges
+
+  { 30,          50,      30, true },
+  { 90,          25,      31, true },
+  { 35,          65,      32, false },  // tries to span two noncontiguous
+  { 120,         10000,   33, true },   // > 8-bit
+  { 20000,       20000,   34, true },   // > 8-bit
+  { 0x10001,     0x10001, 35, true },   // > 16-bit
+
+  { 27,          -1,      36, false }   // tests high < base
+};
+
+// Attempt to fill the entire space.  The entire space must be filled with
+// three stores because AddressType is signed for these tests, so RangeMap
+// treats the size as signed and rejects sizes that appear to be negative.
+// Even if these tests were run as unsigned, two stores would be needed
+// to fill the space because the entire size of the space could only be
+// described by using one more bit than would be present in AddressType.
+const RangeTest range_tests_1[] = {
+  { INT_MIN, INT_MAX, 50, true },   // From INT_MIN to -2, inclusive
+  { -1,      2,       51, true },   // From -1 to 0, inclusive
+  { 1,       INT_MAX, 52, true },   // From 1 to INT_MAX, inclusive
+  { INT_MIN, INT_MAX, 53, false },  // Can't fill the space twice
+  { -1,      2,       54, false },
+  { 1,       INT_MAX, 55, false },
+  { -3,      6,       56, false },  // -3 to 2, inclusive - spans 3 ranges
+};
+
+// A light round of testing to verify that RetrieveRange does the right
+// the right thing at the extremities of the range when nothing is stored
+// there.  Checks are forced without storing anything at the extremities
+// by setting size = 0.
+const RangeTest range_tests_2[] = {
+  { INT_MIN, 0, 100, false },  // makes RetrieveRange check low end
+  { -1,      3, 101, true },
+  { INT_MAX, 0, 102, false },  // makes RetrieveRange check high end
+};
+
+// Similar to the previous test set, but with a couple of ranges closer
+// to the extremities.
+const RangeTest range_tests_3[] = {
+  { INT_MIN + 1, 1, 110, true },
+  { INT_MAX - 1, 1, 111, true },
+  { INT_MIN,     0, 112, false },  // makes RetrieveRange check low end
+  { INT_MAX,     0, 113, false }   // makes RetrieveRange check high end
+};
+
+// The range map is cleared between sets of tests listed here.
+const RangeTestSet range_test_sets[] = {
+  { range_tests_0, sizeof(range_tests_0) / sizeof(RangeTest) },
+  { range_tests_1, sizeof(range_tests_1) / sizeof(RangeTest) },
+  { range_tests_2, sizeof(range_tests_2) / sizeof(RangeTest) },
+  { range_tests_3, sizeof(range_tests_3) / sizeof(RangeTest) },
+  { range_tests_0, sizeof(range_tests_0) / sizeof(RangeTest) }   // Run again
+};
+
+}  // namespace
+
+namespace google_breakpad {
+class TestStaticRangeMap : public ::testing::Test {
+ protected:
+  void SetUp() {
+    kTestCasesCount_ = sizeof(range_test_sets) / sizeof(RangeTestSet);
+  }
+
+  // StoreTest uses the data in a RangeTest and calls StoreRange on the
+  // test RangeMap.  It returns true if the expected result occurred, and
+  // false if something else happened.
+  void StoreTest(RMap* range_map, const RangeTest* range_test);
+
+  // RetrieveTest uses the data in RangeTest and calls RetrieveRange on the
+  // test RangeMap.  If it retrieves the expected value (which can be no
+  // map entry at the specified range,) it returns true, otherwise, it returns
+  // false.  RetrieveTest will check the values around the base address and
+  // the high address of a range to guard against off-by-one errors.
+  void RetrieveTest(TestMap* range_map, const RangeTest* range_test);
+
+  // Test RetrieveRangeAtIndex, which is supposed to return objects in order
+  // according to their addresses.  This test is performed by looping through
+  // the map, calling RetrieveRangeAtIndex for all possible indices in sequence,
+  // and verifying that each call returns a different object than the previous
+  // call, and that ranges are returned with increasing base addresses.  Returns
+  // false if the test fails.
+  void RetrieveIndexTest(const TestMap* range_map, int set);
+
+  void RunTestCase(int test_case);
+
+  unsigned int kTestCasesCount_;
+  RangeMapSerializer<AddressType, EntryType> serializer_;
+};
+
+void TestStaticRangeMap::StoreTest(RMap* range_map,
+                                   const RangeTest* range_test) {
+  bool stored = range_map->StoreRange(range_test->address,
+                                      range_test->size,
+                                      range_test->id);
+  EXPECT_EQ(stored, range_test->expect_storable)
+      << "StoreRange id " << range_test->id << "FAILED";
+}
+
+void TestStaticRangeMap::RetrieveTest(TestMap* range_map,
+                                      const RangeTest* range_test) {
+  for (unsigned int side = 0; side <= 1; ++side) {
+    // When side == 0, check the low side (base address) of each range.
+    // When side == 1, check the high side (base + size) of each range.
+
+    // Check one-less and one-greater than the target address in addition
+    // to the target address itself.
+
+    // If the size of the range is only 1, don't check one greater than
+    // the base or one less than the high - for a successfully stored
+    // range, these tests would erroneously fail because the range is too
+    // small.
+    AddressType low_offset = -1;
+    AddressType high_offset = 1;
+    if (range_test->size == 1) {
+      if (!side)          // When checking the low side,
+        high_offset = 0;  // don't check one over the target.
+      else                // When checking the high side,
+        low_offset = 0;   // don't check one under the target.
+    }
+
+    for (AddressType offset = low_offset; offset <= high_offset; ++offset) {
+      AddressType address =
+          offset +
+          (!side ? range_test->address :
+                   range_test->address + range_test->size - 1);
+
+      bool expected_result = false;  // This is correct for tests not stored.
+      if (range_test->expect_storable) {
+        if (offset == 0)             // When checking the target address,
+          expected_result = true;    // test should always succeed.
+        else if (offset == -1)       // When checking one below the target,
+          expected_result = side;    // should fail low and succeed high.
+        else                         // When checking one above the target,
+          expected_result = !side;   // should succeed low and fail high.
+      }
+
+      const EntryType* id;
+      AddressType retrieved_base;
+      AddressType retrieved_size;
+      bool retrieved = range_map->RetrieveRange(address, id,
+                                                &retrieved_base,
+                                                &retrieved_size);
+
+      bool observed_result = retrieved && *id == range_test->id;
+      EXPECT_EQ(observed_result, expected_result)
+          << "RetrieveRange id " << range_test->id
+          << ", side " << side << ", offset " << offset << " FAILED.";
+
+      // If a range was successfully retrieved, check that the returned
+      // bounds match the range as stored.
+      if (observed_result == true) {
+        EXPECT_EQ(retrieved_base, range_test->address)
+            << "RetrieveRange id " << range_test->id
+            << ", side " << side << ", offset " << offset << " FAILED.";
+        EXPECT_EQ(retrieved_size, range_test->size)
+            << "RetrieveRange id " << range_test->id
+            << ", side " << side << ", offset " << offset << " FAILED.";
+      }
+
+      // Now, check RetrieveNearestRange.  The nearest range is always
+      // expected to be different from the test range when checking one
+      // less than the low side.
+      bool expected_nearest = range_test->expect_storable;
+      if (!side && offset < 0)
+        expected_nearest = false;
+
+      AddressType nearest_base;
+      AddressType nearest_size;
+      bool retrieved_nearest = range_map->RetrieveNearestRange(address,
+                                                               id,
+                                                               &nearest_base,
+                                                               &nearest_size);
+
+      // When checking one greater than the high side, RetrieveNearestRange
+      // should usually return the test range.  When a different range begins
+      // at that address, though, then RetrieveNearestRange should return the
+      // range at the address instead of the test range.
+      if (side && offset > 0 && nearest_base == address) {
+        expected_nearest = false;
+      }
+
+      bool observed_nearest = retrieved_nearest &&
+                              *id == range_test->id;
+
+      EXPECT_EQ(observed_nearest, expected_nearest)
+          << "RetrieveRange id " << range_test->id
+          << ", side " << side << ", offset " << offset << " FAILED.";
+
+      // If a range was successfully retrieved, check that the returned
+      // bounds match the range as stored.
+      if (expected_nearest ==true) {
+        EXPECT_EQ(nearest_base, range_test->address)
+            << "RetrieveRange id " << range_test->id
+            << ", side " << side << ", offset " << offset << " FAILED.";
+        EXPECT_EQ(nearest_size, range_test->size)
+            << "RetrieveRange id " << range_test->id
+            << ", side " << side << ", offset " << offset << " FAILED.";
+      }
+    }
+  }
+}
+
+void TestStaticRangeMap::RetrieveIndexTest(const TestMap* range_map, int set) {
+  AddressType last_base = 0;
+  const EntryType* last_entry = 0;
+  const EntryType* entry;
+  int object_count = range_map->GetCount();
+  for (int object_index = 0; object_index < object_count; ++object_index) {
+    AddressType base;
+    ASSERT_TRUE(range_map->RetrieveRangeAtIndex(object_index,
+                                                entry,
+                                                &base,
+                                                NULL))
+        << "FAILED: RetrieveRangeAtIndex set " << set
+        << " index " << object_index;
+
+    ASSERT_TRUE(entry) << "FAILED: RetrieveRangeAtIndex set " << set
+                           << " index " << object_index;
+
+    // It's impossible to do these comparisons unless there's a previous
+    // object to compare against.
+    if (last_entry) {
+      // The object must be different from the last_entry one.
+      EXPECT_NE(*entry, *last_entry) << "FAILED: RetrieveRangeAtIndex set "
+                                     << set << " index " << object_index;
+      // Each object must have a base greater than the previous object's base.
+      EXPECT_GT(base, last_base) << "FAILED: RetrieveRangeAtIndex set " << set
+                                 << " index " << object_index;
+    }
+    last_entry = entry;
+    last_base = base;
+  }
+
+  // Make sure that RetrieveRangeAtIndex doesn't allow lookups at indices that
+  // are too high.
+  ASSERT_FALSE(range_map->RetrieveRangeAtIndex(
+      object_count, entry, NULL, NULL)) << "FAILED: RetrieveRangeAtIndex set "
+                                        << set << " index " << object_count
+                                        << " (too large)";
+}
+
+// RunTests runs a series of test sets.
+void TestStaticRangeMap::RunTestCase(int test_case) {
+  // Maintain the range map in a pointer so that deletion can be meaningfully
+  // tested.
+  scoped_ptr<RMap> rmap(new RMap());
+
+  const RangeTest* range_tests = range_test_sets[test_case].range_tests;
+  unsigned int range_test_count = range_test_sets[test_case].range_test_count;
+
+  // Run the StoreRange test, which validates StoreRange and initializes
+  // the RangeMap with data for the RetrieveRange test.
+  int stored_count = 0;  // The number of ranges successfully stored
+  for (unsigned int range_test_index = 0;
+       range_test_index < range_test_count;
+       ++range_test_index) {
+    const RangeTest* range_test = &range_tests[range_test_index];
+    StoreTest(rmap.get(), range_test);
+
+    if (range_test->expect_storable)
+      ++stored_count;
+  }
+
+  scoped_array<char> memaddr(serializer_.Serialize(*rmap, NULL));
+  scoped_ptr<TestMap> static_range_map(new TestMap(memaddr.get()));
+
+  // The RangeMap's own count of objects should also match.
+  EXPECT_EQ(static_range_map->GetCount(), stored_count);
+
+  // Run the RetrieveRange test
+  for (unsigned int range_test_index = 0;
+       range_test_index < range_test_count;
+       ++range_test_index) {
+    const RangeTest* range_test = &range_tests[range_test_index];
+    RetrieveTest(static_range_map.get(), range_test);
+  }
+
+  RetrieveIndexTest(static_range_map.get(), test_case);
+}
+
+TEST_F(TestStaticRangeMap, TestCase0) {
+  int test_case = 0;
+  RunTestCase(test_case);
+}
+
+TEST_F(TestStaticRangeMap, TestCase1) {
+  int test_case = 1;
+  RunTestCase(test_case);
+}
+
+TEST_F(TestStaticRangeMap, TestCase2) {
+  int test_case = 2;
+  RunTestCase(test_case);
+}
+
+TEST_F(TestStaticRangeMap, TestCase3) {
+  int test_case = 3;
+  RunTestCase(test_case);
+}
+
+TEST_F(TestStaticRangeMap, RunTestCase0Again) {
+  int test_case = 0;
+  RunTestCase(test_case);
+}
+
+}  // namespace google_breakpad
+
+int main(int argc, char *argv[]) {
+  ::testing::InitGoogleTest(&argc, argv);
+
+  return RUN_ALL_TESTS();
+}
diff --git a/google-breakpad/src/processor/symbolic_constants_win.cc b/google-breakpad/src/processor/symbolic_constants_win.cc
new file mode 100644
index 0000000..333aa04
--- /dev/null
+++ b/google-breakpad/src/processor/symbolic_constants_win.cc
@@ -0,0 +1,6417 @@
+// Copyright (c) 2015 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// ntstatus_reason_win.h: Windows NTSTATUS code to string.
+//
+// Provides a means to convert NTSTATUS codes to strings.
+//
+// Author: Ben Wagner
+
+#include <cstdio>
+#include <string>
+
+#include "google_breakpad/common/breakpad_types.h"
+#include "google_breakpad/common/minidump_exception_win32.h"
+#include "processor/symbolic_constants_win.h"
+
+namespace google_breakpad {
+
+std::string NTStatusToString(uint32_t ntstatus) {
+  std::string reason;
+  // The content of this switch was created from ntstatus.h in the 8.1 SDK with
+  //
+  // egrep '#define [A-Z_0-9]+\s+\(\(NTSTATUS\)0xC[0-9A-F]+L\)' ntstatus.h
+  // | tr -d '\r'
+  // | sed -r 's@#define ([A-Z_0-9]+)\s+\(\(NTSTATUS\)(0xC[0-9A-F]+)L\).*@\2 \1@'
+  // | sort
+  // | sed -r 's@(0xC[0-9A-F]+) ([A-Z_0-9]+)@    case MD_NTSTATUS_WIN_\2:\n      reason = "\2";\n      break;@'
+  //
+  // With easy copy to clipboard with
+  // | xclip -selection c  # on linux
+  // | clip  # on windows
+  // | pbcopy  # on mac
+  //
+  // and then the default case added.
+  switch (ntstatus) {
+    case MD_NTSTATUS_WIN_STATUS_UNSUCCESSFUL:
+      reason = "STATUS_UNSUCCESSFUL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NOT_IMPLEMENTED:
+      reason = "STATUS_NOT_IMPLEMENTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_INFO_CLASS:
+      reason = "STATUS_INVALID_INFO_CLASS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INFO_LENGTH_MISMATCH:
+      reason = "STATUS_INFO_LENGTH_MISMATCH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ACCESS_VIOLATION:
+      reason = "STATUS_ACCESS_VIOLATION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_IN_PAGE_ERROR:
+      reason = "STATUS_IN_PAGE_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PAGEFILE_QUOTA:
+      reason = "STATUS_PAGEFILE_QUOTA";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_HANDLE:
+      reason = "STATUS_INVALID_HANDLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_BAD_INITIAL_STACK:
+      reason = "STATUS_BAD_INITIAL_STACK";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_BAD_INITIAL_PC:
+      reason = "STATUS_BAD_INITIAL_PC";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_CID:
+      reason = "STATUS_INVALID_CID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TIMER_NOT_CANCELED:
+      reason = "STATUS_TIMER_NOT_CANCELED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_PARAMETER:
+      reason = "STATUS_INVALID_PARAMETER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NO_SUCH_DEVICE:
+      reason = "STATUS_NO_SUCH_DEVICE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NO_SUCH_FILE:
+      reason = "STATUS_NO_SUCH_FILE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_DEVICE_REQUEST:
+      reason = "STATUS_INVALID_DEVICE_REQUEST";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_END_OF_FILE:
+      reason = "STATUS_END_OF_FILE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_WRONG_VOLUME:
+      reason = "STATUS_WRONG_VOLUME";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NO_MEDIA_IN_DEVICE:
+      reason = "STATUS_NO_MEDIA_IN_DEVICE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_UNRECOGNIZED_MEDIA:
+      reason = "STATUS_UNRECOGNIZED_MEDIA";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NONEXISTENT_SECTOR:
+      reason = "STATUS_NONEXISTENT_SECTOR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_MORE_PROCESSING_REQUIRED:
+      reason = "STATUS_MORE_PROCESSING_REQUIRED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NO_MEMORY:
+      reason = "STATUS_NO_MEMORY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CONFLICTING_ADDRESSES:
+      reason = "STATUS_CONFLICTING_ADDRESSES";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NOT_MAPPED_VIEW:
+      reason = "STATUS_NOT_MAPPED_VIEW";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_UNABLE_TO_FREE_VM:
+      reason = "STATUS_UNABLE_TO_FREE_VM";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_UNABLE_TO_DELETE_SECTION:
+      reason = "STATUS_UNABLE_TO_DELETE_SECTION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_SYSTEM_SERVICE:
+      reason = "STATUS_INVALID_SYSTEM_SERVICE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ILLEGAL_INSTRUCTION:
+      reason = "STATUS_ILLEGAL_INSTRUCTION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_LOCK_SEQUENCE:
+      reason = "STATUS_INVALID_LOCK_SEQUENCE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_VIEW_SIZE:
+      reason = "STATUS_INVALID_VIEW_SIZE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_FILE_FOR_SECTION:
+      reason = "STATUS_INVALID_FILE_FOR_SECTION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ALREADY_COMMITTED:
+      reason = "STATUS_ALREADY_COMMITTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ACCESS_DENIED:
+      reason = "STATUS_ACCESS_DENIED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_BUFFER_TOO_SMALL:
+      reason = "STATUS_BUFFER_TOO_SMALL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_OBJECT_TYPE_MISMATCH:
+      reason = "STATUS_OBJECT_TYPE_MISMATCH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NONCONTINUABLE_EXCEPTION:
+      reason = "STATUS_NONCONTINUABLE_EXCEPTION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_DISPOSITION:
+      reason = "STATUS_INVALID_DISPOSITION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_UNWIND:
+      reason = "STATUS_UNWIND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_BAD_STACK:
+      reason = "STATUS_BAD_STACK";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_UNWIND_TARGET:
+      reason = "STATUS_INVALID_UNWIND_TARGET";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NOT_LOCKED:
+      reason = "STATUS_NOT_LOCKED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PARITY_ERROR:
+      reason = "STATUS_PARITY_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_UNABLE_TO_DECOMMIT_VM:
+      reason = "STATUS_UNABLE_TO_DECOMMIT_VM";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NOT_COMMITTED:
+      reason = "STATUS_NOT_COMMITTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_PORT_ATTRIBUTES:
+      reason = "STATUS_INVALID_PORT_ATTRIBUTES";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PORT_MESSAGE_TOO_LONG:
+      reason = "STATUS_PORT_MESSAGE_TOO_LONG";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_PARAMETER_MIX:
+      reason = "STATUS_INVALID_PARAMETER_MIX";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_QUOTA_LOWER:
+      reason = "STATUS_INVALID_QUOTA_LOWER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DISK_CORRUPT_ERROR:
+      reason = "STATUS_DISK_CORRUPT_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_OBJECT_NAME_INVALID:
+      reason = "STATUS_OBJECT_NAME_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_OBJECT_NAME_NOT_FOUND:
+      reason = "STATUS_OBJECT_NAME_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_OBJECT_NAME_COLLISION:
+      reason = "STATUS_OBJECT_NAME_COLLISION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PORT_DISCONNECTED:
+      reason = "STATUS_PORT_DISCONNECTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DEVICE_ALREADY_ATTACHED:
+      reason = "STATUS_DEVICE_ALREADY_ATTACHED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_OBJECT_PATH_INVALID:
+      reason = "STATUS_OBJECT_PATH_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_OBJECT_PATH_NOT_FOUND:
+      reason = "STATUS_OBJECT_PATH_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_OBJECT_PATH_SYNTAX_BAD:
+      reason = "STATUS_OBJECT_PATH_SYNTAX_BAD";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DATA_OVERRUN:
+      reason = "STATUS_DATA_OVERRUN";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DATA_LATE_ERROR:
+      reason = "STATUS_DATA_LATE_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DATA_ERROR:
+      reason = "STATUS_DATA_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CRC_ERROR:
+      reason = "STATUS_CRC_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SECTION_TOO_BIG:
+      reason = "STATUS_SECTION_TOO_BIG";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PORT_CONNECTION_REFUSED:
+      reason = "STATUS_PORT_CONNECTION_REFUSED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_PORT_HANDLE:
+      reason = "STATUS_INVALID_PORT_HANDLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SHARING_VIOLATION:
+      reason = "STATUS_SHARING_VIOLATION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_QUOTA_EXCEEDED:
+      reason = "STATUS_QUOTA_EXCEEDED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_PAGE_PROTECTION:
+      reason = "STATUS_INVALID_PAGE_PROTECTION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_MUTANT_NOT_OWNED:
+      reason = "STATUS_MUTANT_NOT_OWNED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SEMAPHORE_LIMIT_EXCEEDED:
+      reason = "STATUS_SEMAPHORE_LIMIT_EXCEEDED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PORT_ALREADY_SET:
+      reason = "STATUS_PORT_ALREADY_SET";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SECTION_NOT_IMAGE:
+      reason = "STATUS_SECTION_NOT_IMAGE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SUSPEND_COUNT_EXCEEDED:
+      reason = "STATUS_SUSPEND_COUNT_EXCEEDED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_THREAD_IS_TERMINATING:
+      reason = "STATUS_THREAD_IS_TERMINATING";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_BAD_WORKING_SET_LIMIT:
+      reason = "STATUS_BAD_WORKING_SET_LIMIT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INCOMPATIBLE_FILE_MAP:
+      reason = "STATUS_INCOMPATIBLE_FILE_MAP";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SECTION_PROTECTION:
+      reason = "STATUS_SECTION_PROTECTION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_EAS_NOT_SUPPORTED:
+      reason = "STATUS_EAS_NOT_SUPPORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_EA_TOO_LARGE:
+      reason = "STATUS_EA_TOO_LARGE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NONEXISTENT_EA_ENTRY:
+      reason = "STATUS_NONEXISTENT_EA_ENTRY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NO_EAS_ON_FILE:
+      reason = "STATUS_NO_EAS_ON_FILE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_EA_CORRUPT_ERROR:
+      reason = "STATUS_EA_CORRUPT_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FILE_LOCK_CONFLICT:
+      reason = "STATUS_FILE_LOCK_CONFLICT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOCK_NOT_GRANTED:
+      reason = "STATUS_LOCK_NOT_GRANTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DELETE_PENDING:
+      reason = "STATUS_DELETE_PENDING";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CTL_FILE_NOT_SUPPORTED:
+      reason = "STATUS_CTL_FILE_NOT_SUPPORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_UNKNOWN_REVISION:
+      reason = "STATUS_UNKNOWN_REVISION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_REVISION_MISMATCH:
+      reason = "STATUS_REVISION_MISMATCH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_OWNER:
+      reason = "STATUS_INVALID_OWNER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_PRIMARY_GROUP:
+      reason = "STATUS_INVALID_PRIMARY_GROUP";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NO_IMPERSONATION_TOKEN:
+      reason = "STATUS_NO_IMPERSONATION_TOKEN";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CANT_DISABLE_MANDATORY:
+      reason = "STATUS_CANT_DISABLE_MANDATORY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NO_LOGON_SERVERS:
+      reason = "STATUS_NO_LOGON_SERVERS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NO_SUCH_LOGON_SESSION:
+      reason = "STATUS_NO_SUCH_LOGON_SESSION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NO_SUCH_PRIVILEGE:
+      reason = "STATUS_NO_SUCH_PRIVILEGE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PRIVILEGE_NOT_HELD:
+      reason = "STATUS_PRIVILEGE_NOT_HELD";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_ACCOUNT_NAME:
+      reason = "STATUS_INVALID_ACCOUNT_NAME";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_USER_EXISTS:
+      reason = "STATUS_USER_EXISTS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NO_SUCH_USER:
+      reason = "STATUS_NO_SUCH_USER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GROUP_EXISTS:
+      reason = "STATUS_GROUP_EXISTS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NO_SUCH_GROUP:
+      reason = "STATUS_NO_SUCH_GROUP";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_MEMBER_IN_GROUP:
+      reason = "STATUS_MEMBER_IN_GROUP";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_MEMBER_NOT_IN_GROUP:
+      reason = "STATUS_MEMBER_NOT_IN_GROUP";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LAST_ADMIN:
+      reason = "STATUS_LAST_ADMIN";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_WRONG_PASSWORD:
+      reason = "STATUS_WRONG_PASSWORD";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ILL_FORMED_PASSWORD:
+      reason = "STATUS_ILL_FORMED_PASSWORD";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PASSWORD_RESTRICTION:
+      reason = "STATUS_PASSWORD_RESTRICTION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOGON_FAILURE:
+      reason = "STATUS_LOGON_FAILURE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ACCOUNT_RESTRICTION:
+      reason = "STATUS_ACCOUNT_RESTRICTION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_LOGON_HOURS:
+      reason = "STATUS_INVALID_LOGON_HOURS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_WORKSTATION:
+      reason = "STATUS_INVALID_WORKSTATION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PASSWORD_EXPIRED:
+      reason = "STATUS_PASSWORD_EXPIRED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ACCOUNT_DISABLED:
+      reason = "STATUS_ACCOUNT_DISABLED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NONE_MAPPED:
+      reason = "STATUS_NONE_MAPPED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TOO_MANY_LUIDS_REQUESTED:
+      reason = "STATUS_TOO_MANY_LUIDS_REQUESTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LUIDS_EXHAUSTED:
+      reason = "STATUS_LUIDS_EXHAUSTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_SUB_AUTHORITY:
+      reason = "STATUS_INVALID_SUB_AUTHORITY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_ACL:
+      reason = "STATUS_INVALID_ACL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_SID:
+      reason = "STATUS_INVALID_SID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_SECURITY_DESCR:
+      reason = "STATUS_INVALID_SECURITY_DESCR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PROCEDURE_NOT_FOUND:
+      reason = "STATUS_PROCEDURE_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_IMAGE_FORMAT:
+      reason = "STATUS_INVALID_IMAGE_FORMAT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NO_TOKEN:
+      reason = "STATUS_NO_TOKEN";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_BAD_INHERITANCE_ACL:
+      reason = "STATUS_BAD_INHERITANCE_ACL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_RANGE_NOT_LOCKED:
+      reason = "STATUS_RANGE_NOT_LOCKED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DISK_FULL:
+      reason = "STATUS_DISK_FULL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SERVER_DISABLED:
+      reason = "STATUS_SERVER_DISABLED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SERVER_NOT_DISABLED:
+      reason = "STATUS_SERVER_NOT_DISABLED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TOO_MANY_GUIDS_REQUESTED:
+      reason = "STATUS_TOO_MANY_GUIDS_REQUESTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GUIDS_EXHAUSTED:
+      reason = "STATUS_GUIDS_EXHAUSTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_ID_AUTHORITY:
+      reason = "STATUS_INVALID_ID_AUTHORITY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_AGENTS_EXHAUSTED:
+      reason = "STATUS_AGENTS_EXHAUSTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_VOLUME_LABEL:
+      reason = "STATUS_INVALID_VOLUME_LABEL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SECTION_NOT_EXTENDED:
+      reason = "STATUS_SECTION_NOT_EXTENDED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NOT_MAPPED_DATA:
+      reason = "STATUS_NOT_MAPPED_DATA";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_RESOURCE_DATA_NOT_FOUND:
+      reason = "STATUS_RESOURCE_DATA_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_RESOURCE_TYPE_NOT_FOUND:
+      reason = "STATUS_RESOURCE_TYPE_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_RESOURCE_NAME_NOT_FOUND:
+      reason = "STATUS_RESOURCE_NAME_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ARRAY_BOUNDS_EXCEEDED:
+      reason = "STATUS_ARRAY_BOUNDS_EXCEEDED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FLOAT_DENORMAL_OPERAND:
+      reason = "STATUS_FLOAT_DENORMAL_OPERAND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FLOAT_DIVIDE_BY_ZERO:
+      reason = "STATUS_FLOAT_DIVIDE_BY_ZERO";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FLOAT_INEXACT_RESULT:
+      reason = "STATUS_FLOAT_INEXACT_RESULT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FLOAT_INVALID_OPERATION:
+      reason = "STATUS_FLOAT_INVALID_OPERATION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FLOAT_OVERFLOW:
+      reason = "STATUS_FLOAT_OVERFLOW";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FLOAT_STACK_CHECK:
+      reason = "STATUS_FLOAT_STACK_CHECK";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FLOAT_UNDERFLOW:
+      reason = "STATUS_FLOAT_UNDERFLOW";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INTEGER_DIVIDE_BY_ZERO:
+      reason = "STATUS_INTEGER_DIVIDE_BY_ZERO";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INTEGER_OVERFLOW:
+      reason = "STATUS_INTEGER_OVERFLOW";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PRIVILEGED_INSTRUCTION:
+      reason = "STATUS_PRIVILEGED_INSTRUCTION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TOO_MANY_PAGING_FILES:
+      reason = "STATUS_TOO_MANY_PAGING_FILES";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FILE_INVALID:
+      reason = "STATUS_FILE_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ALLOTTED_SPACE_EXCEEDED:
+      reason = "STATUS_ALLOTTED_SPACE_EXCEEDED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INSUFFICIENT_RESOURCES:
+      reason = "STATUS_INSUFFICIENT_RESOURCES";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DFS_EXIT_PATH_FOUND:
+      reason = "STATUS_DFS_EXIT_PATH_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DEVICE_DATA_ERROR:
+      reason = "STATUS_DEVICE_DATA_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DEVICE_NOT_CONNECTED:
+      reason = "STATUS_DEVICE_NOT_CONNECTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DEVICE_POWER_FAILURE:
+      reason = "STATUS_DEVICE_POWER_FAILURE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FREE_VM_NOT_AT_BASE:
+      reason = "STATUS_FREE_VM_NOT_AT_BASE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_MEMORY_NOT_ALLOCATED:
+      reason = "STATUS_MEMORY_NOT_ALLOCATED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_WORKING_SET_QUOTA:
+      reason = "STATUS_WORKING_SET_QUOTA";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_MEDIA_WRITE_PROTECTED:
+      reason = "STATUS_MEDIA_WRITE_PROTECTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DEVICE_NOT_READY:
+      reason = "STATUS_DEVICE_NOT_READY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_GROUP_ATTRIBUTES:
+      reason = "STATUS_INVALID_GROUP_ATTRIBUTES";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_BAD_IMPERSONATION_LEVEL:
+      reason = "STATUS_BAD_IMPERSONATION_LEVEL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CANT_OPEN_ANONYMOUS:
+      reason = "STATUS_CANT_OPEN_ANONYMOUS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_BAD_VALIDATION_CLASS:
+      reason = "STATUS_BAD_VALIDATION_CLASS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_BAD_TOKEN_TYPE:
+      reason = "STATUS_BAD_TOKEN_TYPE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_BAD_MASTER_BOOT_RECORD:
+      reason = "STATUS_BAD_MASTER_BOOT_RECORD";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INSTRUCTION_MISALIGNMENT:
+      reason = "STATUS_INSTRUCTION_MISALIGNMENT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INSTANCE_NOT_AVAILABLE:
+      reason = "STATUS_INSTANCE_NOT_AVAILABLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PIPE_NOT_AVAILABLE:
+      reason = "STATUS_PIPE_NOT_AVAILABLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_PIPE_STATE:
+      reason = "STATUS_INVALID_PIPE_STATE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PIPE_BUSY:
+      reason = "STATUS_PIPE_BUSY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ILLEGAL_FUNCTION:
+      reason = "STATUS_ILLEGAL_FUNCTION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PIPE_DISCONNECTED:
+      reason = "STATUS_PIPE_DISCONNECTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PIPE_CLOSING:
+      reason = "STATUS_PIPE_CLOSING";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PIPE_CONNECTED:
+      reason = "STATUS_PIPE_CONNECTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PIPE_LISTENING:
+      reason = "STATUS_PIPE_LISTENING";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_READ_MODE:
+      reason = "STATUS_INVALID_READ_MODE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_IO_TIMEOUT:
+      reason = "STATUS_IO_TIMEOUT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FILE_FORCED_CLOSED:
+      reason = "STATUS_FILE_FORCED_CLOSED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PROFILING_NOT_STARTED:
+      reason = "STATUS_PROFILING_NOT_STARTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PROFILING_NOT_STOPPED:
+      reason = "STATUS_PROFILING_NOT_STOPPED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_COULD_NOT_INTERPRET:
+      reason = "STATUS_COULD_NOT_INTERPRET";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FILE_IS_A_DIRECTORY:
+      reason = "STATUS_FILE_IS_A_DIRECTORY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NOT_SUPPORTED:
+      reason = "STATUS_NOT_SUPPORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_REMOTE_NOT_LISTENING:
+      reason = "STATUS_REMOTE_NOT_LISTENING";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DUPLICATE_NAME:
+      reason = "STATUS_DUPLICATE_NAME";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_BAD_NETWORK_PATH:
+      reason = "STATUS_BAD_NETWORK_PATH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NETWORK_BUSY:
+      reason = "STATUS_NETWORK_BUSY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DEVICE_DOES_NOT_EXIST:
+      reason = "STATUS_DEVICE_DOES_NOT_EXIST";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TOO_MANY_COMMANDS:
+      reason = "STATUS_TOO_MANY_COMMANDS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ADAPTER_HARDWARE_ERROR:
+      reason = "STATUS_ADAPTER_HARDWARE_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_NETWORK_RESPONSE:
+      reason = "STATUS_INVALID_NETWORK_RESPONSE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_UNEXPECTED_NETWORK_ERROR:
+      reason = "STATUS_UNEXPECTED_NETWORK_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_BAD_REMOTE_ADAPTER:
+      reason = "STATUS_BAD_REMOTE_ADAPTER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PRINT_QUEUE_FULL:
+      reason = "STATUS_PRINT_QUEUE_FULL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NO_SPOOL_SPACE:
+      reason = "STATUS_NO_SPOOL_SPACE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PRINT_CANCELLED:
+      reason = "STATUS_PRINT_CANCELLED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NETWORK_NAME_DELETED:
+      reason = "STATUS_NETWORK_NAME_DELETED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NETWORK_ACCESS_DENIED:
+      reason = "STATUS_NETWORK_ACCESS_DENIED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_BAD_DEVICE_TYPE:
+      reason = "STATUS_BAD_DEVICE_TYPE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_BAD_NETWORK_NAME:
+      reason = "STATUS_BAD_NETWORK_NAME";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TOO_MANY_NAMES:
+      reason = "STATUS_TOO_MANY_NAMES";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TOO_MANY_SESSIONS:
+      reason = "STATUS_TOO_MANY_SESSIONS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SHARING_PAUSED:
+      reason = "STATUS_SHARING_PAUSED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_REQUEST_NOT_ACCEPTED:
+      reason = "STATUS_REQUEST_NOT_ACCEPTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_REDIRECTOR_PAUSED:
+      reason = "STATUS_REDIRECTOR_PAUSED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NET_WRITE_FAULT:
+      reason = "STATUS_NET_WRITE_FAULT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PROFILING_AT_LIMIT:
+      reason = "STATUS_PROFILING_AT_LIMIT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NOT_SAME_DEVICE:
+      reason = "STATUS_NOT_SAME_DEVICE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FILE_RENAMED:
+      reason = "STATUS_FILE_RENAMED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VIRTUAL_CIRCUIT_CLOSED:
+      reason = "STATUS_VIRTUAL_CIRCUIT_CLOSED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NO_SECURITY_ON_OBJECT:
+      reason = "STATUS_NO_SECURITY_ON_OBJECT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CANT_WAIT:
+      reason = "STATUS_CANT_WAIT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PIPE_EMPTY:
+      reason = "STATUS_PIPE_EMPTY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CANT_ACCESS_DOMAIN_INFO:
+      reason = "STATUS_CANT_ACCESS_DOMAIN_INFO";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CANT_TERMINATE_SELF:
+      reason = "STATUS_CANT_TERMINATE_SELF";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_SERVER_STATE:
+      reason = "STATUS_INVALID_SERVER_STATE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_DOMAIN_STATE:
+      reason = "STATUS_INVALID_DOMAIN_STATE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_DOMAIN_ROLE:
+      reason = "STATUS_INVALID_DOMAIN_ROLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NO_SUCH_DOMAIN:
+      reason = "STATUS_NO_SUCH_DOMAIN";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DOMAIN_EXISTS:
+      reason = "STATUS_DOMAIN_EXISTS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DOMAIN_LIMIT_EXCEEDED:
+      reason = "STATUS_DOMAIN_LIMIT_EXCEEDED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_OPLOCK_NOT_GRANTED:
+      reason = "STATUS_OPLOCK_NOT_GRANTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_OPLOCK_PROTOCOL:
+      reason = "STATUS_INVALID_OPLOCK_PROTOCOL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INTERNAL_DB_CORRUPTION:
+      reason = "STATUS_INTERNAL_DB_CORRUPTION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INTERNAL_ERROR:
+      reason = "STATUS_INTERNAL_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GENERIC_NOT_MAPPED:
+      reason = "STATUS_GENERIC_NOT_MAPPED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_BAD_DESCRIPTOR_FORMAT:
+      reason = "STATUS_BAD_DESCRIPTOR_FORMAT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_USER_BUFFER:
+      reason = "STATUS_INVALID_USER_BUFFER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_UNEXPECTED_IO_ERROR:
+      reason = "STATUS_UNEXPECTED_IO_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_UNEXPECTED_MM_CREATE_ERR:
+      reason = "STATUS_UNEXPECTED_MM_CREATE_ERR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_UNEXPECTED_MM_MAP_ERROR:
+      reason = "STATUS_UNEXPECTED_MM_MAP_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_UNEXPECTED_MM_EXTEND_ERR:
+      reason = "STATUS_UNEXPECTED_MM_EXTEND_ERR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NOT_LOGON_PROCESS:
+      reason = "STATUS_NOT_LOGON_PROCESS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOGON_SESSION_EXISTS:
+      reason = "STATUS_LOGON_SESSION_EXISTS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_PARAMETER_1:
+      reason = "STATUS_INVALID_PARAMETER_1";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_PARAMETER_2:
+      reason = "STATUS_INVALID_PARAMETER_2";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_PARAMETER_3:
+      reason = "STATUS_INVALID_PARAMETER_3";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_PARAMETER_4:
+      reason = "STATUS_INVALID_PARAMETER_4";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_PARAMETER_5:
+      reason = "STATUS_INVALID_PARAMETER_5";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_PARAMETER_6:
+      reason = "STATUS_INVALID_PARAMETER_6";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_PARAMETER_7:
+      reason = "STATUS_INVALID_PARAMETER_7";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_PARAMETER_8:
+      reason = "STATUS_INVALID_PARAMETER_8";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_PARAMETER_9:
+      reason = "STATUS_INVALID_PARAMETER_9";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_PARAMETER_10:
+      reason = "STATUS_INVALID_PARAMETER_10";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_PARAMETER_11:
+      reason = "STATUS_INVALID_PARAMETER_11";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_PARAMETER_12:
+      reason = "STATUS_INVALID_PARAMETER_12";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_REDIRECTOR_NOT_STARTED:
+      reason = "STATUS_REDIRECTOR_NOT_STARTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_REDIRECTOR_STARTED:
+      reason = "STATUS_REDIRECTOR_STARTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_STACK_OVERFLOW:
+      reason = "STATUS_STACK_OVERFLOW";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NO_SUCH_PACKAGE:
+      reason = "STATUS_NO_SUCH_PACKAGE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_BAD_FUNCTION_TABLE:
+      reason = "STATUS_BAD_FUNCTION_TABLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VARIABLE_NOT_FOUND:
+      reason = "STATUS_VARIABLE_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DIRECTORY_NOT_EMPTY:
+      reason = "STATUS_DIRECTORY_NOT_EMPTY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FILE_CORRUPT_ERROR:
+      reason = "STATUS_FILE_CORRUPT_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NOT_A_DIRECTORY:
+      reason = "STATUS_NOT_A_DIRECTORY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_BAD_LOGON_SESSION_STATE:
+      reason = "STATUS_BAD_LOGON_SESSION_STATE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOGON_SESSION_COLLISION:
+      reason = "STATUS_LOGON_SESSION_COLLISION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NAME_TOO_LONG:
+      reason = "STATUS_NAME_TOO_LONG";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FILES_OPEN:
+      reason = "STATUS_FILES_OPEN";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CONNECTION_IN_USE:
+      reason = "STATUS_CONNECTION_IN_USE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_MESSAGE_NOT_FOUND:
+      reason = "STATUS_MESSAGE_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PROCESS_IS_TERMINATING:
+      reason = "STATUS_PROCESS_IS_TERMINATING";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_LOGON_TYPE:
+      reason = "STATUS_INVALID_LOGON_TYPE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NO_GUID_TRANSLATION:
+      reason = "STATUS_NO_GUID_TRANSLATION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CANNOT_IMPERSONATE:
+      reason = "STATUS_CANNOT_IMPERSONATE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_IMAGE_ALREADY_LOADED:
+      reason = "STATUS_IMAGE_ALREADY_LOADED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ABIOS_NOT_PRESENT:
+      reason = "STATUS_ABIOS_NOT_PRESENT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ABIOS_LID_NOT_EXIST:
+      reason = "STATUS_ABIOS_LID_NOT_EXIST";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ABIOS_LID_ALREADY_OWNED:
+      reason = "STATUS_ABIOS_LID_ALREADY_OWNED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ABIOS_NOT_LID_OWNER:
+      reason = "STATUS_ABIOS_NOT_LID_OWNER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ABIOS_INVALID_COMMAND:
+      reason = "STATUS_ABIOS_INVALID_COMMAND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ABIOS_INVALID_LID:
+      reason = "STATUS_ABIOS_INVALID_LID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ABIOS_SELECTOR_NOT_AVAILABLE:
+      reason = "STATUS_ABIOS_SELECTOR_NOT_AVAILABLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ABIOS_INVALID_SELECTOR:
+      reason = "STATUS_ABIOS_INVALID_SELECTOR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NO_LDT:
+      reason = "STATUS_NO_LDT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_LDT_SIZE:
+      reason = "STATUS_INVALID_LDT_SIZE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_LDT_OFFSET:
+      reason = "STATUS_INVALID_LDT_OFFSET";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_LDT_DESCRIPTOR:
+      reason = "STATUS_INVALID_LDT_DESCRIPTOR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_IMAGE_NE_FORMAT:
+      reason = "STATUS_INVALID_IMAGE_NE_FORMAT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_RXACT_INVALID_STATE:
+      reason = "STATUS_RXACT_INVALID_STATE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_RXACT_COMMIT_FAILURE:
+      reason = "STATUS_RXACT_COMMIT_FAILURE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_MAPPED_FILE_SIZE_ZERO:
+      reason = "STATUS_MAPPED_FILE_SIZE_ZERO";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TOO_MANY_OPENED_FILES:
+      reason = "STATUS_TOO_MANY_OPENED_FILES";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CANCELLED:
+      reason = "STATUS_CANCELLED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CANNOT_DELETE:
+      reason = "STATUS_CANNOT_DELETE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_COMPUTER_NAME:
+      reason = "STATUS_INVALID_COMPUTER_NAME";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FILE_DELETED:
+      reason = "STATUS_FILE_DELETED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SPECIAL_ACCOUNT:
+      reason = "STATUS_SPECIAL_ACCOUNT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SPECIAL_GROUP:
+      reason = "STATUS_SPECIAL_GROUP";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SPECIAL_USER:
+      reason = "STATUS_SPECIAL_USER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_MEMBERS_PRIMARY_GROUP:
+      reason = "STATUS_MEMBERS_PRIMARY_GROUP";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FILE_CLOSED:
+      reason = "STATUS_FILE_CLOSED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TOO_MANY_THREADS:
+      reason = "STATUS_TOO_MANY_THREADS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_THREAD_NOT_IN_PROCESS:
+      reason = "STATUS_THREAD_NOT_IN_PROCESS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TOKEN_ALREADY_IN_USE:
+      reason = "STATUS_TOKEN_ALREADY_IN_USE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PAGEFILE_QUOTA_EXCEEDED:
+      reason = "STATUS_PAGEFILE_QUOTA_EXCEEDED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_COMMITMENT_LIMIT:
+      reason = "STATUS_COMMITMENT_LIMIT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_IMAGE_LE_FORMAT:
+      reason = "STATUS_INVALID_IMAGE_LE_FORMAT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_IMAGE_NOT_MZ:
+      reason = "STATUS_INVALID_IMAGE_NOT_MZ";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_IMAGE_PROTECT:
+      reason = "STATUS_INVALID_IMAGE_PROTECT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_IMAGE_WIN_16:
+      reason = "STATUS_INVALID_IMAGE_WIN_16";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOGON_SERVER_CONFLICT:
+      reason = "STATUS_LOGON_SERVER_CONFLICT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TIME_DIFFERENCE_AT_DC:
+      reason = "STATUS_TIME_DIFFERENCE_AT_DC";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SYNCHRONIZATION_REQUIRED:
+      reason = "STATUS_SYNCHRONIZATION_REQUIRED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DLL_NOT_FOUND:
+      reason = "STATUS_DLL_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_OPEN_FAILED:
+      reason = "STATUS_OPEN_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_IO_PRIVILEGE_FAILED:
+      reason = "STATUS_IO_PRIVILEGE_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ORDINAL_NOT_FOUND:
+      reason = "STATUS_ORDINAL_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ENTRYPOINT_NOT_FOUND:
+      reason = "STATUS_ENTRYPOINT_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CONTROL_C_EXIT:
+      reason = "STATUS_CONTROL_C_EXIT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOCAL_DISCONNECT:
+      reason = "STATUS_LOCAL_DISCONNECT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_REMOTE_DISCONNECT:
+      reason = "STATUS_REMOTE_DISCONNECT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_REMOTE_RESOURCES:
+      reason = "STATUS_REMOTE_RESOURCES";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LINK_FAILED:
+      reason = "STATUS_LINK_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LINK_TIMEOUT:
+      reason = "STATUS_LINK_TIMEOUT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_CONNECTION:
+      reason = "STATUS_INVALID_CONNECTION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_ADDRESS:
+      reason = "STATUS_INVALID_ADDRESS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DLL_INIT_FAILED:
+      reason = "STATUS_DLL_INIT_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_MISSING_SYSTEMFILE:
+      reason = "STATUS_MISSING_SYSTEMFILE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_UNHANDLED_EXCEPTION:
+      reason = "STATUS_UNHANDLED_EXCEPTION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_APP_INIT_FAILURE:
+      reason = "STATUS_APP_INIT_FAILURE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PAGEFILE_CREATE_FAILED:
+      reason = "STATUS_PAGEFILE_CREATE_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NO_PAGEFILE:
+      reason = "STATUS_NO_PAGEFILE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_LEVEL:
+      reason = "STATUS_INVALID_LEVEL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_WRONG_PASSWORD_CORE:
+      reason = "STATUS_WRONG_PASSWORD_CORE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ILLEGAL_FLOAT_CONTEXT:
+      reason = "STATUS_ILLEGAL_FLOAT_CONTEXT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PIPE_BROKEN:
+      reason = "STATUS_PIPE_BROKEN";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_REGISTRY_CORRUPT:
+      reason = "STATUS_REGISTRY_CORRUPT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_REGISTRY_IO_FAILED:
+      reason = "STATUS_REGISTRY_IO_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NO_EVENT_PAIR:
+      reason = "STATUS_NO_EVENT_PAIR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_UNRECOGNIZED_VOLUME:
+      reason = "STATUS_UNRECOGNIZED_VOLUME";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SERIAL_NO_DEVICE_INITED:
+      reason = "STATUS_SERIAL_NO_DEVICE_INITED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NO_SUCH_ALIAS:
+      reason = "STATUS_NO_SUCH_ALIAS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_MEMBER_NOT_IN_ALIAS:
+      reason = "STATUS_MEMBER_NOT_IN_ALIAS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_MEMBER_IN_ALIAS:
+      reason = "STATUS_MEMBER_IN_ALIAS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ALIAS_EXISTS:
+      reason = "STATUS_ALIAS_EXISTS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOGON_NOT_GRANTED:
+      reason = "STATUS_LOGON_NOT_GRANTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TOO_MANY_SECRETS:
+      reason = "STATUS_TOO_MANY_SECRETS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SECRET_TOO_LONG:
+      reason = "STATUS_SECRET_TOO_LONG";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INTERNAL_DB_ERROR:
+      reason = "STATUS_INTERNAL_DB_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FULLSCREEN_MODE:
+      reason = "STATUS_FULLSCREEN_MODE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TOO_MANY_CONTEXT_IDS:
+      reason = "STATUS_TOO_MANY_CONTEXT_IDS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOGON_TYPE_NOT_GRANTED:
+      reason = "STATUS_LOGON_TYPE_NOT_GRANTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NOT_REGISTRY_FILE:
+      reason = "STATUS_NOT_REGISTRY_FILE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NT_CROSS_ENCRYPTION_REQUIRED:
+      reason = "STATUS_NT_CROSS_ENCRYPTION_REQUIRED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DOMAIN_CTRLR_CONFIG_ERROR:
+      reason = "STATUS_DOMAIN_CTRLR_CONFIG_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FT_MISSING_MEMBER:
+      reason = "STATUS_FT_MISSING_MEMBER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ILL_FORMED_SERVICE_ENTRY:
+      reason = "STATUS_ILL_FORMED_SERVICE_ENTRY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ILLEGAL_CHARACTER:
+      reason = "STATUS_ILLEGAL_CHARACTER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_UNMAPPABLE_CHARACTER:
+      reason = "STATUS_UNMAPPABLE_CHARACTER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_UNDEFINED_CHARACTER:
+      reason = "STATUS_UNDEFINED_CHARACTER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FLOPPY_VOLUME:
+      reason = "STATUS_FLOPPY_VOLUME";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FLOPPY_ID_MARK_NOT_FOUND:
+      reason = "STATUS_FLOPPY_ID_MARK_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FLOPPY_WRONG_CYLINDER:
+      reason = "STATUS_FLOPPY_WRONG_CYLINDER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FLOPPY_UNKNOWN_ERROR:
+      reason = "STATUS_FLOPPY_UNKNOWN_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FLOPPY_BAD_REGISTERS:
+      reason = "STATUS_FLOPPY_BAD_REGISTERS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DISK_RECALIBRATE_FAILED:
+      reason = "STATUS_DISK_RECALIBRATE_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DISK_OPERATION_FAILED:
+      reason = "STATUS_DISK_OPERATION_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DISK_RESET_FAILED:
+      reason = "STATUS_DISK_RESET_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SHARED_IRQ_BUSY:
+      reason = "STATUS_SHARED_IRQ_BUSY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FT_ORPHANING:
+      reason = "STATUS_FT_ORPHANING";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT:
+      reason = "STATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PARTITION_FAILURE:
+      reason = "STATUS_PARTITION_FAILURE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_BLOCK_LENGTH:
+      reason = "STATUS_INVALID_BLOCK_LENGTH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DEVICE_NOT_PARTITIONED:
+      reason = "STATUS_DEVICE_NOT_PARTITIONED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_UNABLE_TO_LOCK_MEDIA:
+      reason = "STATUS_UNABLE_TO_LOCK_MEDIA";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_UNABLE_TO_UNLOAD_MEDIA:
+      reason = "STATUS_UNABLE_TO_UNLOAD_MEDIA";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_EOM_OVERFLOW:
+      reason = "STATUS_EOM_OVERFLOW";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NO_MEDIA:
+      reason = "STATUS_NO_MEDIA";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NO_SUCH_MEMBER:
+      reason = "STATUS_NO_SUCH_MEMBER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_MEMBER:
+      reason = "STATUS_INVALID_MEMBER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_KEY_DELETED:
+      reason = "STATUS_KEY_DELETED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NO_LOG_SPACE:
+      reason = "STATUS_NO_LOG_SPACE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TOO_MANY_SIDS:
+      reason = "STATUS_TOO_MANY_SIDS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LM_CROSS_ENCRYPTION_REQUIRED:
+      reason = "STATUS_LM_CROSS_ENCRYPTION_REQUIRED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_KEY_HAS_CHILDREN:
+      reason = "STATUS_KEY_HAS_CHILDREN";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CHILD_MUST_BE_VOLATILE:
+      reason = "STATUS_CHILD_MUST_BE_VOLATILE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DEVICE_CONFIGURATION_ERROR:
+      reason = "STATUS_DEVICE_CONFIGURATION_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DRIVER_INTERNAL_ERROR:
+      reason = "STATUS_DRIVER_INTERNAL_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_DEVICE_STATE:
+      reason = "STATUS_INVALID_DEVICE_STATE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_IO_DEVICE_ERROR:
+      reason = "STATUS_IO_DEVICE_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DEVICE_PROTOCOL_ERROR:
+      reason = "STATUS_DEVICE_PROTOCOL_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_BACKUP_CONTROLLER:
+      reason = "STATUS_BACKUP_CONTROLLER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOG_FILE_FULL:
+      reason = "STATUS_LOG_FILE_FULL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TOO_LATE:
+      reason = "STATUS_TOO_LATE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NO_TRUST_LSA_SECRET:
+      reason = "STATUS_NO_TRUST_LSA_SECRET";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NO_TRUST_SAM_ACCOUNT:
+      reason = "STATUS_NO_TRUST_SAM_ACCOUNT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TRUSTED_DOMAIN_FAILURE:
+      reason = "STATUS_TRUSTED_DOMAIN_FAILURE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TRUSTED_RELATIONSHIP_FAILURE:
+      reason = "STATUS_TRUSTED_RELATIONSHIP_FAILURE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_EVENTLOG_FILE_CORRUPT:
+      reason = "STATUS_EVENTLOG_FILE_CORRUPT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_EVENTLOG_CANT_START:
+      reason = "STATUS_EVENTLOG_CANT_START";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TRUST_FAILURE:
+      reason = "STATUS_TRUST_FAILURE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_MUTANT_LIMIT_EXCEEDED:
+      reason = "STATUS_MUTANT_LIMIT_EXCEEDED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NETLOGON_NOT_STARTED:
+      reason = "STATUS_NETLOGON_NOT_STARTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ACCOUNT_EXPIRED:
+      reason = "STATUS_ACCOUNT_EXPIRED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_POSSIBLE_DEADLOCK:
+      reason = "STATUS_POSSIBLE_DEADLOCK";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NETWORK_CREDENTIAL_CONFLICT:
+      reason = "STATUS_NETWORK_CREDENTIAL_CONFLICT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_REMOTE_SESSION_LIMIT:
+      reason = "STATUS_REMOTE_SESSION_LIMIT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_EVENTLOG_FILE_CHANGED:
+      reason = "STATUS_EVENTLOG_FILE_CHANGED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT:
+      reason = "STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT:
+      reason = "STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NOLOGON_SERVER_TRUST_ACCOUNT:
+      reason = "STATUS_NOLOGON_SERVER_TRUST_ACCOUNT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DOMAIN_TRUST_INCONSISTENT:
+      reason = "STATUS_DOMAIN_TRUST_INCONSISTENT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FS_DRIVER_REQUIRED:
+      reason = "STATUS_FS_DRIVER_REQUIRED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_IMAGE_ALREADY_LOADED_AS_DLL:
+      reason = "STATUS_IMAGE_ALREADY_LOADED_AS_DLL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INCOMPATIBLE_WITH_GLOBAL_SHORT_NAME_REGISTRY_SETTING:
+      reason = "STATUS_INCOMPATIBLE_WITH_GLOBAL_SHORT_NAME_REGISTRY_SETTING";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SHORT_NAMES_NOT_ENABLED_ON_VOLUME:
+      reason = "STATUS_SHORT_NAMES_NOT_ENABLED_ON_VOLUME";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SECURITY_STREAM_IS_INCONSISTENT:
+      reason = "STATUS_SECURITY_STREAM_IS_INCONSISTENT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_LOCK_RANGE:
+      reason = "STATUS_INVALID_LOCK_RANGE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_ACE_CONDITION:
+      reason = "STATUS_INVALID_ACE_CONDITION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_IMAGE_SUBSYSTEM_NOT_PRESENT:
+      reason = "STATUS_IMAGE_SUBSYSTEM_NOT_PRESENT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NOTIFICATION_GUID_ALREADY_DEFINED:
+      reason = "STATUS_NOTIFICATION_GUID_ALREADY_DEFINED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_EXCEPTION_HANDLER:
+      reason = "STATUS_INVALID_EXCEPTION_HANDLER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DUPLICATE_PRIVILEGES:
+      reason = "STATUS_DUPLICATE_PRIVILEGES";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NOT_ALLOWED_ON_SYSTEM_FILE:
+      reason = "STATUS_NOT_ALLOWED_ON_SYSTEM_FILE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_REPAIR_NEEDED:
+      reason = "STATUS_REPAIR_NEEDED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_QUOTA_NOT_ENABLED:
+      reason = "STATUS_QUOTA_NOT_ENABLED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NO_APPLICATION_PACKAGE:
+      reason = "STATUS_NO_APPLICATION_PACKAGE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NETWORK_OPEN_RESTRICTION:
+      reason = "STATUS_NETWORK_OPEN_RESTRICTION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NO_USER_SESSION_KEY:
+      reason = "STATUS_NO_USER_SESSION_KEY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_USER_SESSION_DELETED:
+      reason = "STATUS_USER_SESSION_DELETED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_RESOURCE_LANG_NOT_FOUND:
+      reason = "STATUS_RESOURCE_LANG_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INSUFF_SERVER_RESOURCES:
+      reason = "STATUS_INSUFF_SERVER_RESOURCES";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_BUFFER_SIZE:
+      reason = "STATUS_INVALID_BUFFER_SIZE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_ADDRESS_COMPONENT:
+      reason = "STATUS_INVALID_ADDRESS_COMPONENT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_ADDRESS_WILDCARD:
+      reason = "STATUS_INVALID_ADDRESS_WILDCARD";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TOO_MANY_ADDRESSES:
+      reason = "STATUS_TOO_MANY_ADDRESSES";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ADDRESS_ALREADY_EXISTS:
+      reason = "STATUS_ADDRESS_ALREADY_EXISTS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ADDRESS_CLOSED:
+      reason = "STATUS_ADDRESS_CLOSED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CONNECTION_DISCONNECTED:
+      reason = "STATUS_CONNECTION_DISCONNECTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CONNECTION_RESET:
+      reason = "STATUS_CONNECTION_RESET";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TOO_MANY_NODES:
+      reason = "STATUS_TOO_MANY_NODES";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TRANSACTION_ABORTED:
+      reason = "STATUS_TRANSACTION_ABORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TRANSACTION_TIMED_OUT:
+      reason = "STATUS_TRANSACTION_TIMED_OUT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TRANSACTION_NO_RELEASE:
+      reason = "STATUS_TRANSACTION_NO_RELEASE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TRANSACTION_NO_MATCH:
+      reason = "STATUS_TRANSACTION_NO_MATCH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TRANSACTION_RESPONDED:
+      reason = "STATUS_TRANSACTION_RESPONDED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TRANSACTION_INVALID_ID:
+      reason = "STATUS_TRANSACTION_INVALID_ID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TRANSACTION_INVALID_TYPE:
+      reason = "STATUS_TRANSACTION_INVALID_TYPE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NOT_SERVER_SESSION:
+      reason = "STATUS_NOT_SERVER_SESSION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NOT_CLIENT_SESSION:
+      reason = "STATUS_NOT_CLIENT_SESSION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CANNOT_LOAD_REGISTRY_FILE:
+      reason = "STATUS_CANNOT_LOAD_REGISTRY_FILE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DEBUG_ATTACH_FAILED:
+      reason = "STATUS_DEBUG_ATTACH_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SYSTEM_PROCESS_TERMINATED:
+      reason = "STATUS_SYSTEM_PROCESS_TERMINATED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DATA_NOT_ACCEPTED:
+      reason = "STATUS_DATA_NOT_ACCEPTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NO_BROWSER_SERVERS_FOUND:
+      reason = "STATUS_NO_BROWSER_SERVERS_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VDM_HARD_ERROR:
+      reason = "STATUS_VDM_HARD_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DRIVER_CANCEL_TIMEOUT:
+      reason = "STATUS_DRIVER_CANCEL_TIMEOUT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_REPLY_MESSAGE_MISMATCH:
+      reason = "STATUS_REPLY_MESSAGE_MISMATCH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_MAPPED_ALIGNMENT:
+      reason = "STATUS_MAPPED_ALIGNMENT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_IMAGE_CHECKSUM_MISMATCH:
+      reason = "STATUS_IMAGE_CHECKSUM_MISMATCH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOST_WRITEBEHIND_DATA:
+      reason = "STATUS_LOST_WRITEBEHIND_DATA";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CLIENT_SERVER_PARAMETERS_INVALID:
+      reason = "STATUS_CLIENT_SERVER_PARAMETERS_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PASSWORD_MUST_CHANGE:
+      reason = "STATUS_PASSWORD_MUST_CHANGE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NOT_FOUND:
+      reason = "STATUS_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NOT_TINY_STREAM:
+      reason = "STATUS_NOT_TINY_STREAM";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_RECOVERY_FAILURE:
+      reason = "STATUS_RECOVERY_FAILURE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_STACK_OVERFLOW_READ:
+      reason = "STATUS_STACK_OVERFLOW_READ";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FAIL_CHECK:
+      reason = "STATUS_FAIL_CHECK";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DUPLICATE_OBJECTID:
+      reason = "STATUS_DUPLICATE_OBJECTID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_OBJECTID_EXISTS:
+      reason = "STATUS_OBJECTID_EXISTS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CONVERT_TO_LARGE:
+      reason = "STATUS_CONVERT_TO_LARGE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_RETRY:
+      reason = "STATUS_RETRY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FOUND_OUT_OF_SCOPE:
+      reason = "STATUS_FOUND_OUT_OF_SCOPE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ALLOCATE_BUCKET:
+      reason = "STATUS_ALLOCATE_BUCKET";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PROPSET_NOT_FOUND:
+      reason = "STATUS_PROPSET_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_MARSHALL_OVERFLOW:
+      reason = "STATUS_MARSHALL_OVERFLOW";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_VARIANT:
+      reason = "STATUS_INVALID_VARIANT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DOMAIN_CONTROLLER_NOT_FOUND:
+      reason = "STATUS_DOMAIN_CONTROLLER_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ACCOUNT_LOCKED_OUT:
+      reason = "STATUS_ACCOUNT_LOCKED_OUT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_HANDLE_NOT_CLOSABLE:
+      reason = "STATUS_HANDLE_NOT_CLOSABLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CONNECTION_REFUSED:
+      reason = "STATUS_CONNECTION_REFUSED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRACEFUL_DISCONNECT:
+      reason = "STATUS_GRACEFUL_DISCONNECT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ADDRESS_ALREADY_ASSOCIATED:
+      reason = "STATUS_ADDRESS_ALREADY_ASSOCIATED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ADDRESS_NOT_ASSOCIATED:
+      reason = "STATUS_ADDRESS_NOT_ASSOCIATED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CONNECTION_INVALID:
+      reason = "STATUS_CONNECTION_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CONNECTION_ACTIVE:
+      reason = "STATUS_CONNECTION_ACTIVE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NETWORK_UNREACHABLE:
+      reason = "STATUS_NETWORK_UNREACHABLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_HOST_UNREACHABLE:
+      reason = "STATUS_HOST_UNREACHABLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PROTOCOL_UNREACHABLE:
+      reason = "STATUS_PROTOCOL_UNREACHABLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PORT_UNREACHABLE:
+      reason = "STATUS_PORT_UNREACHABLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_REQUEST_ABORTED:
+      reason = "STATUS_REQUEST_ABORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CONNECTION_ABORTED:
+      reason = "STATUS_CONNECTION_ABORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_BAD_COMPRESSION_BUFFER:
+      reason = "STATUS_BAD_COMPRESSION_BUFFER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_USER_MAPPED_FILE:
+      reason = "STATUS_USER_MAPPED_FILE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_AUDIT_FAILED:
+      reason = "STATUS_AUDIT_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TIMER_RESOLUTION_NOT_SET:
+      reason = "STATUS_TIMER_RESOLUTION_NOT_SET";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CONNECTION_COUNT_LIMIT:
+      reason = "STATUS_CONNECTION_COUNT_LIMIT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOGIN_TIME_RESTRICTION:
+      reason = "STATUS_LOGIN_TIME_RESTRICTION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOGIN_WKSTA_RESTRICTION:
+      reason = "STATUS_LOGIN_WKSTA_RESTRICTION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_IMAGE_MP_UP_MISMATCH:
+      reason = "STATUS_IMAGE_MP_UP_MISMATCH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INSUFFICIENT_LOGON_INFO:
+      reason = "STATUS_INSUFFICIENT_LOGON_INFO";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_BAD_DLL_ENTRYPOINT:
+      reason = "STATUS_BAD_DLL_ENTRYPOINT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_BAD_SERVICE_ENTRYPOINT:
+      reason = "STATUS_BAD_SERVICE_ENTRYPOINT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LPC_REPLY_LOST:
+      reason = "STATUS_LPC_REPLY_LOST";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_IP_ADDRESS_CONFLICT1:
+      reason = "STATUS_IP_ADDRESS_CONFLICT1";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_IP_ADDRESS_CONFLICT2:
+      reason = "STATUS_IP_ADDRESS_CONFLICT2";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_REGISTRY_QUOTA_LIMIT:
+      reason = "STATUS_REGISTRY_QUOTA_LIMIT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PATH_NOT_COVERED:
+      reason = "STATUS_PATH_NOT_COVERED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NO_CALLBACK_ACTIVE:
+      reason = "STATUS_NO_CALLBACK_ACTIVE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LICENSE_QUOTA_EXCEEDED:
+      reason = "STATUS_LICENSE_QUOTA_EXCEEDED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PWD_TOO_SHORT:
+      reason = "STATUS_PWD_TOO_SHORT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PWD_TOO_RECENT:
+      reason = "STATUS_PWD_TOO_RECENT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PWD_HISTORY_CONFLICT:
+      reason = "STATUS_PWD_HISTORY_CONFLICT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PLUGPLAY_NO_DEVICE:
+      reason = "STATUS_PLUGPLAY_NO_DEVICE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_UNSUPPORTED_COMPRESSION:
+      reason = "STATUS_UNSUPPORTED_COMPRESSION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_HW_PROFILE:
+      reason = "STATUS_INVALID_HW_PROFILE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_PLUGPLAY_DEVICE_PATH:
+      reason = "STATUS_INVALID_PLUGPLAY_DEVICE_PATH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DRIVER_ORDINAL_NOT_FOUND:
+      reason = "STATUS_DRIVER_ORDINAL_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DRIVER_ENTRYPOINT_NOT_FOUND:
+      reason = "STATUS_DRIVER_ENTRYPOINT_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_RESOURCE_NOT_OWNED:
+      reason = "STATUS_RESOURCE_NOT_OWNED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TOO_MANY_LINKS:
+      reason = "STATUS_TOO_MANY_LINKS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_QUOTA_LIST_INCONSISTENT:
+      reason = "STATUS_QUOTA_LIST_INCONSISTENT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FILE_IS_OFFLINE:
+      reason = "STATUS_FILE_IS_OFFLINE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_EVALUATION_EXPIRATION:
+      reason = "STATUS_EVALUATION_EXPIRATION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ILLEGAL_DLL_RELOCATION:
+      reason = "STATUS_ILLEGAL_DLL_RELOCATION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LICENSE_VIOLATION:
+      reason = "STATUS_LICENSE_VIOLATION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DLL_INIT_FAILED_LOGOFF:
+      reason = "STATUS_DLL_INIT_FAILED_LOGOFF";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DRIVER_UNABLE_TO_LOAD:
+      reason = "STATUS_DRIVER_UNABLE_TO_LOAD";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DFS_UNAVAILABLE:
+      reason = "STATUS_DFS_UNAVAILABLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLUME_DISMOUNTED:
+      reason = "STATUS_VOLUME_DISMOUNTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_WX86_INTERNAL_ERROR:
+      reason = "STATUS_WX86_INTERNAL_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_WX86_FLOAT_STACK_CHECK:
+      reason = "STATUS_WX86_FLOAT_STACK_CHECK";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VALIDATE_CONTINUE:
+      reason = "STATUS_VALIDATE_CONTINUE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NO_MATCH:
+      reason = "STATUS_NO_MATCH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NO_MORE_MATCHES:
+      reason = "STATUS_NO_MORE_MATCHES";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NOT_A_REPARSE_POINT:
+      reason = "STATUS_NOT_A_REPARSE_POINT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_IO_REPARSE_TAG_INVALID:
+      reason = "STATUS_IO_REPARSE_TAG_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_IO_REPARSE_TAG_MISMATCH:
+      reason = "STATUS_IO_REPARSE_TAG_MISMATCH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_IO_REPARSE_DATA_INVALID:
+      reason = "STATUS_IO_REPARSE_DATA_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_IO_REPARSE_TAG_NOT_HANDLED:
+      reason = "STATUS_IO_REPARSE_TAG_NOT_HANDLED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PWD_TOO_LONG:
+      reason = "STATUS_PWD_TOO_LONG";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_STOWED_EXCEPTION:
+      reason = "STATUS_STOWED_EXCEPTION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_REPARSE_POINT_NOT_RESOLVED:
+      reason = "STATUS_REPARSE_POINT_NOT_RESOLVED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DIRECTORY_IS_A_REPARSE_POINT:
+      reason = "STATUS_DIRECTORY_IS_A_REPARSE_POINT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_RANGE_LIST_CONFLICT:
+      reason = "STATUS_RANGE_LIST_CONFLICT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SOURCE_ELEMENT_EMPTY:
+      reason = "STATUS_SOURCE_ELEMENT_EMPTY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DESTINATION_ELEMENT_FULL:
+      reason = "STATUS_DESTINATION_ELEMENT_FULL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ILLEGAL_ELEMENT_ADDRESS:
+      reason = "STATUS_ILLEGAL_ELEMENT_ADDRESS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_MAGAZINE_NOT_PRESENT:
+      reason = "STATUS_MAGAZINE_NOT_PRESENT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_REINITIALIZATION_NEEDED:
+      reason = "STATUS_REINITIALIZATION_NEEDED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ENCRYPTION_FAILED:
+      reason = "STATUS_ENCRYPTION_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DECRYPTION_FAILED:
+      reason = "STATUS_DECRYPTION_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_RANGE_NOT_FOUND:
+      reason = "STATUS_RANGE_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NO_RECOVERY_POLICY:
+      reason = "STATUS_NO_RECOVERY_POLICY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NO_EFS:
+      reason = "STATUS_NO_EFS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_WRONG_EFS:
+      reason = "STATUS_WRONG_EFS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NO_USER_KEYS:
+      reason = "STATUS_NO_USER_KEYS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FILE_NOT_ENCRYPTED:
+      reason = "STATUS_FILE_NOT_ENCRYPTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NOT_EXPORT_FORMAT:
+      reason = "STATUS_NOT_EXPORT_FORMAT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FILE_ENCRYPTED:
+      reason = "STATUS_FILE_ENCRYPTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_WMI_GUID_NOT_FOUND:
+      reason = "STATUS_WMI_GUID_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_WMI_INSTANCE_NOT_FOUND:
+      reason = "STATUS_WMI_INSTANCE_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_WMI_ITEMID_NOT_FOUND:
+      reason = "STATUS_WMI_ITEMID_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_WMI_TRY_AGAIN:
+      reason = "STATUS_WMI_TRY_AGAIN";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SHARED_POLICY:
+      reason = "STATUS_SHARED_POLICY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_POLICY_OBJECT_NOT_FOUND:
+      reason = "STATUS_POLICY_OBJECT_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_POLICY_ONLY_IN_DS:
+      reason = "STATUS_POLICY_ONLY_IN_DS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLUME_NOT_UPGRADED:
+      reason = "STATUS_VOLUME_NOT_UPGRADED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_REMOTE_STORAGE_NOT_ACTIVE:
+      reason = "STATUS_REMOTE_STORAGE_NOT_ACTIVE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_REMOTE_STORAGE_MEDIA_ERROR:
+      reason = "STATUS_REMOTE_STORAGE_MEDIA_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NO_TRACKING_SERVICE:
+      reason = "STATUS_NO_TRACKING_SERVICE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SERVER_SID_MISMATCH:
+      reason = "STATUS_SERVER_SID_MISMATCH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DS_NO_ATTRIBUTE_OR_VALUE:
+      reason = "STATUS_DS_NO_ATTRIBUTE_OR_VALUE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DS_INVALID_ATTRIBUTE_SYNTAX:
+      reason = "STATUS_DS_INVALID_ATTRIBUTE_SYNTAX";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DS_ATTRIBUTE_TYPE_UNDEFINED:
+      reason = "STATUS_DS_ATTRIBUTE_TYPE_UNDEFINED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DS_ATTRIBUTE_OR_VALUE_EXISTS:
+      reason = "STATUS_DS_ATTRIBUTE_OR_VALUE_EXISTS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DS_BUSY:
+      reason = "STATUS_DS_BUSY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DS_UNAVAILABLE:
+      reason = "STATUS_DS_UNAVAILABLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DS_NO_RIDS_ALLOCATED:
+      reason = "STATUS_DS_NO_RIDS_ALLOCATED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DS_NO_MORE_RIDS:
+      reason = "STATUS_DS_NO_MORE_RIDS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DS_INCORRECT_ROLE_OWNER:
+      reason = "STATUS_DS_INCORRECT_ROLE_OWNER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DS_RIDMGR_INIT_ERROR:
+      reason = "STATUS_DS_RIDMGR_INIT_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DS_OBJ_CLASS_VIOLATION:
+      reason = "STATUS_DS_OBJ_CLASS_VIOLATION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DS_CANT_ON_NON_LEAF:
+      reason = "STATUS_DS_CANT_ON_NON_LEAF";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DS_CANT_ON_RDN:
+      reason = "STATUS_DS_CANT_ON_RDN";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DS_CANT_MOD_OBJ_CLASS:
+      reason = "STATUS_DS_CANT_MOD_OBJ_CLASS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DS_CROSS_DOM_MOVE_FAILED:
+      reason = "STATUS_DS_CROSS_DOM_MOVE_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DS_GC_NOT_AVAILABLE:
+      reason = "STATUS_DS_GC_NOT_AVAILABLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DIRECTORY_SERVICE_REQUIRED:
+      reason = "STATUS_DIRECTORY_SERVICE_REQUIRED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_REPARSE_ATTRIBUTE_CONFLICT:
+      reason = "STATUS_REPARSE_ATTRIBUTE_CONFLICT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CANT_ENABLE_DENY_ONLY:
+      reason = "STATUS_CANT_ENABLE_DENY_ONLY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FLOAT_MULTIPLE_FAULTS:
+      reason = "STATUS_FLOAT_MULTIPLE_FAULTS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FLOAT_MULTIPLE_TRAPS:
+      reason = "STATUS_FLOAT_MULTIPLE_TRAPS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DEVICE_REMOVED:
+      reason = "STATUS_DEVICE_REMOVED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_JOURNAL_DELETE_IN_PROGRESS:
+      reason = "STATUS_JOURNAL_DELETE_IN_PROGRESS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_JOURNAL_NOT_ACTIVE:
+      reason = "STATUS_JOURNAL_NOT_ACTIVE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NOINTERFACE:
+      reason = "STATUS_NOINTERFACE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DS_RIDMGR_DISABLED:
+      reason = "STATUS_DS_RIDMGR_DISABLED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DS_ADMIN_LIMIT_EXCEEDED:
+      reason = "STATUS_DS_ADMIN_LIMIT_EXCEEDED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DRIVER_FAILED_SLEEP:
+      reason = "STATUS_DRIVER_FAILED_SLEEP";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_MUTUAL_AUTHENTICATION_FAILED:
+      reason = "STATUS_MUTUAL_AUTHENTICATION_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CORRUPT_SYSTEM_FILE:
+      reason = "STATUS_CORRUPT_SYSTEM_FILE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DATATYPE_MISALIGNMENT_ERROR:
+      reason = "STATUS_DATATYPE_MISALIGNMENT_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_WMI_READ_ONLY:
+      reason = "STATUS_WMI_READ_ONLY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_WMI_SET_FAILURE:
+      reason = "STATUS_WMI_SET_FAILURE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_COMMITMENT_MINIMUM:
+      reason = "STATUS_COMMITMENT_MINIMUM";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_REG_NAT_CONSUMPTION:
+      reason = "STATUS_REG_NAT_CONSUMPTION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TRANSPORT_FULL:
+      reason = "STATUS_TRANSPORT_FULL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DS_SAM_INIT_FAILURE:
+      reason = "STATUS_DS_SAM_INIT_FAILURE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ONLY_IF_CONNECTED:
+      reason = "STATUS_ONLY_IF_CONNECTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DS_SENSITIVE_GROUP_VIOLATION:
+      reason = "STATUS_DS_SENSITIVE_GROUP_VIOLATION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PNP_RESTART_ENUMERATION:
+      reason = "STATUS_PNP_RESTART_ENUMERATION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_JOURNAL_ENTRY_DELETED:
+      reason = "STATUS_JOURNAL_ENTRY_DELETED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DS_CANT_MOD_PRIMARYGROUPID:
+      reason = "STATUS_DS_CANT_MOD_PRIMARYGROUPID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SYSTEM_IMAGE_BAD_SIGNATURE:
+      reason = "STATUS_SYSTEM_IMAGE_BAD_SIGNATURE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PNP_REBOOT_REQUIRED:
+      reason = "STATUS_PNP_REBOOT_REQUIRED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_POWER_STATE_INVALID:
+      reason = "STATUS_POWER_STATE_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DS_INVALID_GROUP_TYPE:
+      reason = "STATUS_DS_INVALID_GROUP_TYPE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN:
+      reason = "STATUS_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN:
+      reason = "STATUS_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER:
+      reason = "STATUS_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER:
+      reason = "STATUS_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER:
+      reason = "STATUS_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER:
+      reason = "STATUS_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER:
+      reason = "STATUS_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DS_HAVE_PRIMARY_MEMBERS:
+      reason = "STATUS_DS_HAVE_PRIMARY_MEMBERS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_WMI_NOT_SUPPORTED:
+      reason = "STATUS_WMI_NOT_SUPPORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INSUFFICIENT_POWER:
+      reason = "STATUS_INSUFFICIENT_POWER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SAM_NEED_BOOTKEY_PASSWORD:
+      reason = "STATUS_SAM_NEED_BOOTKEY_PASSWORD";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SAM_NEED_BOOTKEY_FLOPPY:
+      reason = "STATUS_SAM_NEED_BOOTKEY_FLOPPY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DS_CANT_START:
+      reason = "STATUS_DS_CANT_START";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DS_INIT_FAILURE:
+      reason = "STATUS_DS_INIT_FAILURE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SAM_INIT_FAILURE:
+      reason = "STATUS_SAM_INIT_FAILURE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DS_GC_REQUIRED:
+      reason = "STATUS_DS_GC_REQUIRED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DS_LOCAL_MEMBER_OF_LOCAL_ONLY:
+      reason = "STATUS_DS_LOCAL_MEMBER_OF_LOCAL_ONLY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DS_NO_FPO_IN_UNIVERSAL_GROUPS:
+      reason = "STATUS_DS_NO_FPO_IN_UNIVERSAL_GROUPS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED:
+      reason = "STATUS_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_MULTIPLE_FAULT_VIOLATION:
+      reason = "STATUS_MULTIPLE_FAULT_VIOLATION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CURRENT_DOMAIN_NOT_ALLOWED:
+      reason = "STATUS_CURRENT_DOMAIN_NOT_ALLOWED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CANNOT_MAKE:
+      reason = "STATUS_CANNOT_MAKE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SYSTEM_SHUTDOWN:
+      reason = "STATUS_SYSTEM_SHUTDOWN";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DS_INIT_FAILURE_CONSOLE:
+      reason = "STATUS_DS_INIT_FAILURE_CONSOLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DS_SAM_INIT_FAILURE_CONSOLE:
+      reason = "STATUS_DS_SAM_INIT_FAILURE_CONSOLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_UNFINISHED_CONTEXT_DELETED:
+      reason = "STATUS_UNFINISHED_CONTEXT_DELETED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NO_TGT_REPLY:
+      reason = "STATUS_NO_TGT_REPLY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_OBJECTID_NOT_FOUND:
+      reason = "STATUS_OBJECTID_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NO_IP_ADDRESSES:
+      reason = "STATUS_NO_IP_ADDRESSES";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_WRONG_CREDENTIAL_HANDLE:
+      reason = "STATUS_WRONG_CREDENTIAL_HANDLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CRYPTO_SYSTEM_INVALID:
+      reason = "STATUS_CRYPTO_SYSTEM_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_MAX_REFERRALS_EXCEEDED:
+      reason = "STATUS_MAX_REFERRALS_EXCEEDED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_MUST_BE_KDC:
+      reason = "STATUS_MUST_BE_KDC";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_STRONG_CRYPTO_NOT_SUPPORTED:
+      reason = "STATUS_STRONG_CRYPTO_NOT_SUPPORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TOO_MANY_PRINCIPALS:
+      reason = "STATUS_TOO_MANY_PRINCIPALS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NO_PA_DATA:
+      reason = "STATUS_NO_PA_DATA";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PKINIT_NAME_MISMATCH:
+      reason = "STATUS_PKINIT_NAME_MISMATCH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SMARTCARD_LOGON_REQUIRED:
+      reason = "STATUS_SMARTCARD_LOGON_REQUIRED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_KDC_INVALID_REQUEST:
+      reason = "STATUS_KDC_INVALID_REQUEST";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_KDC_UNABLE_TO_REFER:
+      reason = "STATUS_KDC_UNABLE_TO_REFER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_KDC_UNKNOWN_ETYPE:
+      reason = "STATUS_KDC_UNKNOWN_ETYPE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SHUTDOWN_IN_PROGRESS:
+      reason = "STATUS_SHUTDOWN_IN_PROGRESS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SERVER_SHUTDOWN_IN_PROGRESS:
+      reason = "STATUS_SERVER_SHUTDOWN_IN_PROGRESS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NOT_SUPPORTED_ON_SBS:
+      reason = "STATUS_NOT_SUPPORTED_ON_SBS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_WMI_GUID_DISCONNECTED:
+      reason = "STATUS_WMI_GUID_DISCONNECTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_WMI_ALREADY_DISABLED:
+      reason = "STATUS_WMI_ALREADY_DISABLED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_WMI_ALREADY_ENABLED:
+      reason = "STATUS_WMI_ALREADY_ENABLED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_MFT_TOO_FRAGMENTED:
+      reason = "STATUS_MFT_TOO_FRAGMENTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_COPY_PROTECTION_FAILURE:
+      reason = "STATUS_COPY_PROTECTION_FAILURE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CSS_AUTHENTICATION_FAILURE:
+      reason = "STATUS_CSS_AUTHENTICATION_FAILURE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CSS_KEY_NOT_PRESENT:
+      reason = "STATUS_CSS_KEY_NOT_PRESENT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CSS_KEY_NOT_ESTABLISHED:
+      reason = "STATUS_CSS_KEY_NOT_ESTABLISHED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CSS_SCRAMBLED_SECTOR:
+      reason = "STATUS_CSS_SCRAMBLED_SECTOR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CSS_REGION_MISMATCH:
+      reason = "STATUS_CSS_REGION_MISMATCH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CSS_RESETS_EXHAUSTED:
+      reason = "STATUS_CSS_RESETS_EXHAUSTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PASSWORD_CHANGE_REQUIRED:
+      reason = "STATUS_PASSWORD_CHANGE_REQUIRED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PKINIT_FAILURE:
+      reason = "STATUS_PKINIT_FAILURE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SMARTCARD_SUBSYSTEM_FAILURE:
+      reason = "STATUS_SMARTCARD_SUBSYSTEM_FAILURE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NO_KERB_KEY:
+      reason = "STATUS_NO_KERB_KEY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_HOST_DOWN:
+      reason = "STATUS_HOST_DOWN";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_UNSUPPORTED_PREAUTH:
+      reason = "STATUS_UNSUPPORTED_PREAUTH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_EFS_ALG_BLOB_TOO_BIG:
+      reason = "STATUS_EFS_ALG_BLOB_TOO_BIG";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PORT_NOT_SET:
+      reason = "STATUS_PORT_NOT_SET";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DEBUGGER_INACTIVE:
+      reason = "STATUS_DEBUGGER_INACTIVE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DS_VERSION_CHECK_FAILURE:
+      reason = "STATUS_DS_VERSION_CHECK_FAILURE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_AUDITING_DISABLED:
+      reason = "STATUS_AUDITING_DISABLED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PRENT4_MACHINE_ACCOUNT:
+      reason = "STATUS_PRENT4_MACHINE_ACCOUNT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER:
+      reason = "STATUS_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_IMAGE_WIN_32:
+      reason = "STATUS_INVALID_IMAGE_WIN_32";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_IMAGE_WIN_64:
+      reason = "STATUS_INVALID_IMAGE_WIN_64";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_BAD_BINDINGS:
+      reason = "STATUS_BAD_BINDINGS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NETWORK_SESSION_EXPIRED:
+      reason = "STATUS_NETWORK_SESSION_EXPIRED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_APPHELP_BLOCK:
+      reason = "STATUS_APPHELP_BLOCK";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ALL_SIDS_FILTERED:
+      reason = "STATUS_ALL_SIDS_FILTERED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NOT_SAFE_MODE_DRIVER:
+      reason = "STATUS_NOT_SAFE_MODE_DRIVER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ACCESS_DISABLED_BY_POLICY_DEFAULT:
+      reason = "STATUS_ACCESS_DISABLED_BY_POLICY_DEFAULT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ACCESS_DISABLED_BY_POLICY_PATH:
+      reason = "STATUS_ACCESS_DISABLED_BY_POLICY_PATH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ACCESS_DISABLED_BY_POLICY_PUBLISHER:
+      reason = "STATUS_ACCESS_DISABLED_BY_POLICY_PUBLISHER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ACCESS_DISABLED_BY_POLICY_OTHER:
+      reason = "STATUS_ACCESS_DISABLED_BY_POLICY_OTHER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FAILED_DRIVER_ENTRY:
+      reason = "STATUS_FAILED_DRIVER_ENTRY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DEVICE_ENUMERATION_ERROR:
+      reason = "STATUS_DEVICE_ENUMERATION_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_MOUNT_POINT_NOT_RESOLVED:
+      reason = "STATUS_MOUNT_POINT_NOT_RESOLVED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_DEVICE_OBJECT_PARAMETER:
+      reason = "STATUS_INVALID_DEVICE_OBJECT_PARAMETER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_MCA_OCCURED:
+      reason = "STATUS_MCA_OCCURED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DRIVER_BLOCKED_CRITICAL:
+      reason = "STATUS_DRIVER_BLOCKED_CRITICAL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DRIVER_BLOCKED:
+      reason = "STATUS_DRIVER_BLOCKED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DRIVER_DATABASE_ERROR:
+      reason = "STATUS_DRIVER_DATABASE_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SYSTEM_HIVE_TOO_LARGE:
+      reason = "STATUS_SYSTEM_HIVE_TOO_LARGE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_IMPORT_OF_NON_DLL:
+      reason = "STATUS_INVALID_IMPORT_OF_NON_DLL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NO_SECRETS:
+      reason = "STATUS_NO_SECRETS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ACCESS_DISABLED_NO_SAFER_UI_BY_POLICY:
+      reason = "STATUS_ACCESS_DISABLED_NO_SAFER_UI_BY_POLICY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FAILED_STACK_SWITCH:
+      reason = "STATUS_FAILED_STACK_SWITCH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_HEAP_CORRUPTION:
+      reason = "STATUS_HEAP_CORRUPTION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SMARTCARD_WRONG_PIN:
+      reason = "STATUS_SMARTCARD_WRONG_PIN";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SMARTCARD_CARD_BLOCKED:
+      reason = "STATUS_SMARTCARD_CARD_BLOCKED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SMARTCARD_CARD_NOT_AUTHENTICATED:
+      reason = "STATUS_SMARTCARD_CARD_NOT_AUTHENTICATED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SMARTCARD_NO_CARD:
+      reason = "STATUS_SMARTCARD_NO_CARD";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SMARTCARD_NO_KEY_CONTAINER:
+      reason = "STATUS_SMARTCARD_NO_KEY_CONTAINER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SMARTCARD_NO_CERTIFICATE:
+      reason = "STATUS_SMARTCARD_NO_CERTIFICATE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SMARTCARD_NO_KEYSET:
+      reason = "STATUS_SMARTCARD_NO_KEYSET";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SMARTCARD_IO_ERROR:
+      reason = "STATUS_SMARTCARD_IO_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DOWNGRADE_DETECTED:
+      reason = "STATUS_DOWNGRADE_DETECTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SMARTCARD_CERT_REVOKED:
+      reason = "STATUS_SMARTCARD_CERT_REVOKED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ISSUING_CA_UNTRUSTED:
+      reason = "STATUS_ISSUING_CA_UNTRUSTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_REVOCATION_OFFLINE_C:
+      reason = "STATUS_REVOCATION_OFFLINE_C";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PKINIT_CLIENT_FAILURE:
+      reason = "STATUS_PKINIT_CLIENT_FAILURE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SMARTCARD_CERT_EXPIRED:
+      reason = "STATUS_SMARTCARD_CERT_EXPIRED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DRIVER_FAILED_PRIOR_UNLOAD:
+      reason = "STATUS_DRIVER_FAILED_PRIOR_UNLOAD";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SMARTCARD_SILENT_CONTEXT:
+      reason = "STATUS_SMARTCARD_SILENT_CONTEXT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PER_USER_TRUST_QUOTA_EXCEEDED:
+      reason = "STATUS_PER_USER_TRUST_QUOTA_EXCEEDED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ALL_USER_TRUST_QUOTA_EXCEEDED:
+      reason = "STATUS_ALL_USER_TRUST_QUOTA_EXCEEDED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_USER_DELETE_TRUST_QUOTA_EXCEEDED:
+      reason = "STATUS_USER_DELETE_TRUST_QUOTA_EXCEEDED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DS_NAME_NOT_UNIQUE:
+      reason = "STATUS_DS_NAME_NOT_UNIQUE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DS_DUPLICATE_ID_FOUND:
+      reason = "STATUS_DS_DUPLICATE_ID_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DS_GROUP_CONVERSION_ERROR:
+      reason = "STATUS_DS_GROUP_CONVERSION_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLSNAP_PREPARE_HIBERNATE:
+      reason = "STATUS_VOLSNAP_PREPARE_HIBERNATE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_USER2USER_REQUIRED:
+      reason = "STATUS_USER2USER_REQUIRED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_STACK_BUFFER_OVERRUN:
+      reason = "STATUS_STACK_BUFFER_OVERRUN";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NO_S4U_PROT_SUPPORT:
+      reason = "STATUS_NO_S4U_PROT_SUPPORT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CROSSREALM_DELEGATION_FAILURE:
+      reason = "STATUS_CROSSREALM_DELEGATION_FAILURE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_REVOCATION_OFFLINE_KDC:
+      reason = "STATUS_REVOCATION_OFFLINE_KDC";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ISSUING_CA_UNTRUSTED_KDC:
+      reason = "STATUS_ISSUING_CA_UNTRUSTED_KDC";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_KDC_CERT_EXPIRED:
+      reason = "STATUS_KDC_CERT_EXPIRED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_KDC_CERT_REVOKED:
+      reason = "STATUS_KDC_CERT_REVOKED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PARAMETER_QUOTA_EXCEEDED:
+      reason = "STATUS_PARAMETER_QUOTA_EXCEEDED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_HIBERNATION_FAILURE:
+      reason = "STATUS_HIBERNATION_FAILURE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DELAY_LOAD_FAILED:
+      reason = "STATUS_DELAY_LOAD_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_AUTHENTICATION_FIREWALL_FAILED:
+      reason = "STATUS_AUTHENTICATION_FIREWALL_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VDM_DISALLOWED:
+      reason = "STATUS_VDM_DISALLOWED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_HUNG_DISPLAY_DRIVER_THREAD:
+      reason = "STATUS_HUNG_DISPLAY_DRIVER_THREAD";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INSUFFICIENT_RESOURCE_FOR_SPECIFIED_SHARED_SECTION_SIZE:
+      reason = "STATUS_INSUFFICIENT_RESOURCE_FOR_SPECIFIED_SHARED_SECTION_SIZE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_CRUNTIME_PARAMETER:
+      reason = "STATUS_INVALID_CRUNTIME_PARAMETER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NTLM_BLOCKED:
+      reason = "STATUS_NTLM_BLOCKED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DS_SRC_SID_EXISTS_IN_FOREST:
+      reason = "STATUS_DS_SRC_SID_EXISTS_IN_FOREST";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DS_DOMAIN_NAME_EXISTS_IN_FOREST:
+      reason = "STATUS_DS_DOMAIN_NAME_EXISTS_IN_FOREST";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DS_FLAT_NAME_EXISTS_IN_FOREST:
+      reason = "STATUS_DS_FLAT_NAME_EXISTS_IN_FOREST";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_USER_PRINCIPAL_NAME:
+      reason = "STATUS_INVALID_USER_PRINCIPAL_NAME";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FATAL_USER_CALLBACK_EXCEPTION:
+      reason = "STATUS_FATAL_USER_CALLBACK_EXCEPTION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ASSERTION_FAILURE:
+      reason = "STATUS_ASSERTION_FAILURE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VERIFIER_STOP:
+      reason = "STATUS_VERIFIER_STOP";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CALLBACK_POP_STACK:
+      reason = "STATUS_CALLBACK_POP_STACK";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INCOMPATIBLE_DRIVER_BLOCKED:
+      reason = "STATUS_INCOMPATIBLE_DRIVER_BLOCKED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_HIVE_UNLOADED:
+      reason = "STATUS_HIVE_UNLOADED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_COMPRESSION_DISABLED:
+      reason = "STATUS_COMPRESSION_DISABLED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FILE_SYSTEM_LIMITATION:
+      reason = "STATUS_FILE_SYSTEM_LIMITATION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_IMAGE_HASH:
+      reason = "STATUS_INVALID_IMAGE_HASH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NOT_CAPABLE:
+      reason = "STATUS_NOT_CAPABLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_REQUEST_OUT_OF_SEQUENCE:
+      reason = "STATUS_REQUEST_OUT_OF_SEQUENCE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_IMPLEMENTATION_LIMIT:
+      reason = "STATUS_IMPLEMENTATION_LIMIT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ELEVATION_REQUIRED:
+      reason = "STATUS_ELEVATION_REQUIRED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NO_SECURITY_CONTEXT:
+      reason = "STATUS_NO_SECURITY_CONTEXT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PKU2U_CERT_FAILURE:
+      reason = "STATUS_PKU2U_CERT_FAILURE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_BEYOND_VDL:
+      reason = "STATUS_BEYOND_VDL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ENCOUNTERED_WRITE_IN_PROGRESS:
+      reason = "STATUS_ENCOUNTERED_WRITE_IN_PROGRESS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PTE_CHANGED:
+      reason = "STATUS_PTE_CHANGED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PURGE_FAILED:
+      reason = "STATUS_PURGE_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CRED_REQUIRES_CONFIRMATION:
+      reason = "STATUS_CRED_REQUIRES_CONFIRMATION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CS_ENCRYPTION_INVALID_SERVER_RESPONSE:
+      reason = "STATUS_CS_ENCRYPTION_INVALID_SERVER_RESPONSE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CS_ENCRYPTION_UNSUPPORTED_SERVER:
+      reason = "STATUS_CS_ENCRYPTION_UNSUPPORTED_SERVER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CS_ENCRYPTION_EXISTING_ENCRYPTED_FILE:
+      reason = "STATUS_CS_ENCRYPTION_EXISTING_ENCRYPTED_FILE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CS_ENCRYPTION_NEW_ENCRYPTED_FILE:
+      reason = "STATUS_CS_ENCRYPTION_NEW_ENCRYPTED_FILE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CS_ENCRYPTION_FILE_NOT_CSE:
+      reason = "STATUS_CS_ENCRYPTION_FILE_NOT_CSE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_LABEL:
+      reason = "STATUS_INVALID_LABEL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DRIVER_PROCESS_TERMINATED:
+      reason = "STATUS_DRIVER_PROCESS_TERMINATED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_AMBIGUOUS_SYSTEM_DEVICE:
+      reason = "STATUS_AMBIGUOUS_SYSTEM_DEVICE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SYSTEM_DEVICE_NOT_FOUND:
+      reason = "STATUS_SYSTEM_DEVICE_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_RESTART_BOOT_APPLICATION:
+      reason = "STATUS_RESTART_BOOT_APPLICATION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INSUFFICIENT_NVRAM_RESOURCES:
+      reason = "STATUS_INSUFFICIENT_NVRAM_RESOURCES";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_SESSION:
+      reason = "STATUS_INVALID_SESSION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_THREAD_ALREADY_IN_SESSION:
+      reason = "STATUS_THREAD_ALREADY_IN_SESSION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_THREAD_NOT_IN_SESSION:
+      reason = "STATUS_THREAD_NOT_IN_SESSION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_WEIGHT:
+      reason = "STATUS_INVALID_WEIGHT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_REQUEST_PAUSED:
+      reason = "STATUS_REQUEST_PAUSED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NO_RANGES_PROCESSED:
+      reason = "STATUS_NO_RANGES_PROCESSED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DISK_RESOURCES_EXHAUSTED:
+      reason = "STATUS_DISK_RESOURCES_EXHAUSTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NEEDS_REMEDIATION:
+      reason = "STATUS_NEEDS_REMEDIATION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DEVICE_FEATURE_NOT_SUPPORTED:
+      reason = "STATUS_DEVICE_FEATURE_NOT_SUPPORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DEVICE_UNREACHABLE:
+      reason = "STATUS_DEVICE_UNREACHABLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_TOKEN:
+      reason = "STATUS_INVALID_TOKEN";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SERVER_UNAVAILABLE:
+      reason = "STATUS_SERVER_UNAVAILABLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FILE_NOT_AVAILABLE:
+      reason = "STATUS_FILE_NOT_AVAILABLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DEVICE_INSUFFICIENT_RESOURCES:
+      reason = "STATUS_DEVICE_INSUFFICIENT_RESOURCES";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PACKAGE_UPDATING:
+      reason = "STATUS_PACKAGE_UPDATING";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NOT_READ_FROM_COPY:
+      reason = "STATUS_NOT_READ_FROM_COPY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FT_WRITE_FAILURE:
+      reason = "STATUS_FT_WRITE_FAILURE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FT_DI_SCAN_REQUIRED:
+      reason = "STATUS_FT_DI_SCAN_REQUIRED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_OBJECT_NOT_EXTERNALLY_BACKED:
+      reason = "STATUS_OBJECT_NOT_EXTERNALLY_BACKED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_EXTERNAL_BACKING_PROVIDER_UNKNOWN:
+      reason = "STATUS_EXTERNAL_BACKING_PROVIDER_UNKNOWN";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DATA_CHECKSUM_ERROR:
+      reason = "STATUS_DATA_CHECKSUM_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INTERMIXED_KERNEL_EA_OPERATION:
+      reason = "STATUS_INTERMIXED_KERNEL_EA_OPERATION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TRIM_READ_ZERO_NOT_SUPPORTED:
+      reason = "STATUS_TRIM_READ_ZERO_NOT_SUPPORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TOO_MANY_SEGMENT_DESCRIPTORS:
+      reason = "STATUS_TOO_MANY_SEGMENT_DESCRIPTORS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_OFFSET_ALIGNMENT:
+      reason = "STATUS_INVALID_OFFSET_ALIGNMENT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_FIELD_IN_PARAMETER_LIST:
+      reason = "STATUS_INVALID_FIELD_IN_PARAMETER_LIST";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_OPERATION_IN_PROGRESS:
+      reason = "STATUS_OPERATION_IN_PROGRESS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_INITIATOR_TARGET_PATH:
+      reason = "STATUS_INVALID_INITIATOR_TARGET_PATH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SCRUB_DATA_DISABLED:
+      reason = "STATUS_SCRUB_DATA_DISABLED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NOT_REDUNDANT_STORAGE:
+      reason = "STATUS_NOT_REDUNDANT_STORAGE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_RESIDENT_FILE_NOT_SUPPORTED:
+      reason = "STATUS_RESIDENT_FILE_NOT_SUPPORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_COMPRESSED_FILE_NOT_SUPPORTED:
+      reason = "STATUS_COMPRESSED_FILE_NOT_SUPPORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DIRECTORY_NOT_SUPPORTED:
+      reason = "STATUS_DIRECTORY_NOT_SUPPORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_IO_OPERATION_TIMEOUT:
+      reason = "STATUS_IO_OPERATION_TIMEOUT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SYSTEM_NEEDS_REMEDIATION:
+      reason = "STATUS_SYSTEM_NEEDS_REMEDIATION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_APPX_INTEGRITY_FAILURE_CLR_NGEN:
+      reason = "STATUS_APPX_INTEGRITY_FAILURE_CLR_NGEN";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SHARE_UNAVAILABLE:
+      reason = "STATUS_SHARE_UNAVAILABLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_APISET_NOT_HOSTED:
+      reason = "STATUS_APISET_NOT_HOSTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_APISET_NOT_PRESENT:
+      reason = "STATUS_APISET_NOT_PRESENT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DEVICE_HARDWARE_ERROR:
+      reason = "STATUS_DEVICE_HARDWARE_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_TASK_NAME:
+      reason = "STATUS_INVALID_TASK_NAME";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_TASK_INDEX:
+      reason = "STATUS_INVALID_TASK_INDEX";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_THREAD_ALREADY_IN_TASK:
+      reason = "STATUS_THREAD_ALREADY_IN_TASK";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CALLBACK_BYPASS:
+      reason = "STATUS_CALLBACK_BYPASS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_UNDEFINED_SCOPE:
+      reason = "STATUS_UNDEFINED_SCOPE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_CAP:
+      reason = "STATUS_INVALID_CAP";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NOT_GUI_PROCESS:
+      reason = "STATUS_NOT_GUI_PROCESS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FAIL_FAST_EXCEPTION:
+      reason = "STATUS_FAIL_FAST_EXCEPTION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_IMAGE_CERT_REVOKED:
+      reason = "STATUS_IMAGE_CERT_REVOKED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DYNAMIC_CODE_BLOCKED:
+      reason = "STATUS_DYNAMIC_CODE_BLOCKED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PORT_CLOSED:
+      reason = "STATUS_PORT_CLOSED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_MESSAGE_LOST:
+      reason = "STATUS_MESSAGE_LOST";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_MESSAGE:
+      reason = "STATUS_INVALID_MESSAGE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_REQUEST_CANCELED:
+      reason = "STATUS_REQUEST_CANCELED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_RECURSIVE_DISPATCH:
+      reason = "STATUS_RECURSIVE_DISPATCH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LPC_RECEIVE_BUFFER_EXPECTED:
+      reason = "STATUS_LPC_RECEIVE_BUFFER_EXPECTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LPC_INVALID_CONNECTION_USAGE:
+      reason = "STATUS_LPC_INVALID_CONNECTION_USAGE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LPC_REQUESTS_NOT_ALLOWED:
+      reason = "STATUS_LPC_REQUESTS_NOT_ALLOWED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_RESOURCE_IN_USE:
+      reason = "STATUS_RESOURCE_IN_USE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_HARDWARE_MEMORY_ERROR:
+      reason = "STATUS_HARDWARE_MEMORY_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_THREADPOOL_HANDLE_EXCEPTION:
+      reason = "STATUS_THREADPOOL_HANDLE_EXCEPTION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_THREADPOOL_SET_EVENT_ON_COMPLETION_FAILED:
+      reason = "STATUS_THREADPOOL_SET_EVENT_ON_COMPLETION_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_THREADPOOL_RELEASE_SEMAPHORE_ON_COMPLETION_FAILED:
+      reason = "STATUS_THREADPOOL_RELEASE_SEMAPHORE_ON_COMPLETION_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_THREADPOOL_RELEASE_MUTEX_ON_COMPLETION_FAILED:
+      reason = "STATUS_THREADPOOL_RELEASE_MUTEX_ON_COMPLETION_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_THREADPOOL_FREE_LIBRARY_ON_COMPLETION_FAILED:
+      reason = "STATUS_THREADPOOL_FREE_LIBRARY_ON_COMPLETION_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_THREADPOOL_RELEASED_DURING_OPERATION:
+      reason = "STATUS_THREADPOOL_RELEASED_DURING_OPERATION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CALLBACK_RETURNED_WHILE_IMPERSONATING:
+      reason = "STATUS_CALLBACK_RETURNED_WHILE_IMPERSONATING";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_APC_RETURNED_WHILE_IMPERSONATING:
+      reason = "STATUS_APC_RETURNED_WHILE_IMPERSONATING";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PROCESS_IS_PROTECTED:
+      reason = "STATUS_PROCESS_IS_PROTECTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_MCA_EXCEPTION:
+      reason = "STATUS_MCA_EXCEPTION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CERTIFICATE_MAPPING_NOT_UNIQUE:
+      reason = "STATUS_CERTIFICATE_MAPPING_NOT_UNIQUE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SYMLINK_CLASS_DISABLED:
+      reason = "STATUS_SYMLINK_CLASS_DISABLED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_IDN_NORMALIZATION:
+      reason = "STATUS_INVALID_IDN_NORMALIZATION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NO_UNICODE_TRANSLATION:
+      reason = "STATUS_NO_UNICODE_TRANSLATION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ALREADY_REGISTERED:
+      reason = "STATUS_ALREADY_REGISTERED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CONTEXT_MISMATCH:
+      reason = "STATUS_CONTEXT_MISMATCH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PORT_ALREADY_HAS_COMPLETION_LIST:
+      reason = "STATUS_PORT_ALREADY_HAS_COMPLETION_LIST";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CALLBACK_RETURNED_THREAD_PRIORITY:
+      reason = "STATUS_CALLBACK_RETURNED_THREAD_PRIORITY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_THREAD:
+      reason = "STATUS_INVALID_THREAD";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CALLBACK_RETURNED_TRANSACTION:
+      reason = "STATUS_CALLBACK_RETURNED_TRANSACTION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CALLBACK_RETURNED_LDR_LOCK:
+      reason = "STATUS_CALLBACK_RETURNED_LDR_LOCK";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CALLBACK_RETURNED_LANG:
+      reason = "STATUS_CALLBACK_RETURNED_LANG";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CALLBACK_RETURNED_PRI_BACK:
+      reason = "STATUS_CALLBACK_RETURNED_PRI_BACK";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CALLBACK_RETURNED_THREAD_AFFINITY:
+      reason = "STATUS_CALLBACK_RETURNED_THREAD_AFFINITY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DISK_REPAIR_DISABLED:
+      reason = "STATUS_DISK_REPAIR_DISABLED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DS_DOMAIN_RENAME_IN_PROGRESS:
+      reason = "STATUS_DS_DOMAIN_RENAME_IN_PROGRESS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DISK_QUOTA_EXCEEDED:
+      reason = "STATUS_DISK_QUOTA_EXCEEDED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CONTENT_BLOCKED:
+      reason = "STATUS_CONTENT_BLOCKED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_BAD_CLUSTERS:
+      reason = "STATUS_BAD_CLUSTERS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLUME_DIRTY:
+      reason = "STATUS_VOLUME_DIRTY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DISK_REPAIR_UNSUCCESSFUL:
+      reason = "STATUS_DISK_REPAIR_UNSUCCESSFUL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CORRUPT_LOG_OVERFULL:
+      reason = "STATUS_CORRUPT_LOG_OVERFULL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CORRUPT_LOG_CORRUPTED:
+      reason = "STATUS_CORRUPT_LOG_CORRUPTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CORRUPT_LOG_UNAVAILABLE:
+      reason = "STATUS_CORRUPT_LOG_UNAVAILABLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CORRUPT_LOG_DELETED_FULL:
+      reason = "STATUS_CORRUPT_LOG_DELETED_FULL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CORRUPT_LOG_CLEARED:
+      reason = "STATUS_CORRUPT_LOG_CLEARED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ORPHAN_NAME_EXHAUSTED:
+      reason = "STATUS_ORPHAN_NAME_EXHAUSTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PROACTIVE_SCAN_IN_PROGRESS:
+      reason = "STATUS_PROACTIVE_SCAN_IN_PROGRESS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ENCRYPTED_IO_NOT_POSSIBLE:
+      reason = "STATUS_ENCRYPTED_IO_NOT_POSSIBLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CORRUPT_LOG_UPLEVEL_RECORDS:
+      reason = "STATUS_CORRUPT_LOG_UPLEVEL_RECORDS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FILE_CHECKED_OUT:
+      reason = "STATUS_FILE_CHECKED_OUT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CHECKOUT_REQUIRED:
+      reason = "STATUS_CHECKOUT_REQUIRED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_BAD_FILE_TYPE:
+      reason = "STATUS_BAD_FILE_TYPE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FILE_TOO_LARGE:
+      reason = "STATUS_FILE_TOO_LARGE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FORMS_AUTH_REQUIRED:
+      reason = "STATUS_FORMS_AUTH_REQUIRED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VIRUS_INFECTED:
+      reason = "STATUS_VIRUS_INFECTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VIRUS_DELETED:
+      reason = "STATUS_VIRUS_DELETED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_BAD_MCFG_TABLE:
+      reason = "STATUS_BAD_MCFG_TABLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CANNOT_BREAK_OPLOCK:
+      reason = "STATUS_CANNOT_BREAK_OPLOCK";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_BAD_KEY:
+      reason = "STATUS_BAD_KEY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_BAD_DATA:
+      reason = "STATUS_BAD_DATA";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NO_KEY:
+      reason = "STATUS_NO_KEY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FILE_HANDLE_REVOKED:
+      reason = "STATUS_FILE_HANDLE_REVOKED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_WOW_ASSERTION:
+      reason = "STATUS_WOW_ASSERTION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_SIGNATURE:
+      reason = "STATUS_INVALID_SIGNATURE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_HMAC_NOT_SUPPORTED:
+      reason = "STATUS_HMAC_NOT_SUPPORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_AUTH_TAG_MISMATCH:
+      reason = "STATUS_AUTH_TAG_MISMATCH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_STATE_TRANSITION:
+      reason = "STATUS_INVALID_STATE_TRANSITION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_KERNEL_INFO_VERSION:
+      reason = "STATUS_INVALID_KERNEL_INFO_VERSION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_PEP_INFO_VERSION:
+      reason = "STATUS_INVALID_PEP_INFO_VERSION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_IPSEC_QUEUE_OVERFLOW:
+      reason = "STATUS_IPSEC_QUEUE_OVERFLOW";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ND_QUEUE_OVERFLOW:
+      reason = "STATUS_ND_QUEUE_OVERFLOW";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_HOPLIMIT_EXCEEDED:
+      reason = "STATUS_HOPLIMIT_EXCEEDED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PROTOCOL_NOT_SUPPORTED:
+      reason = "STATUS_PROTOCOL_NOT_SUPPORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FASTPATH_REJECTED:
+      reason = "STATUS_FASTPATH_REJECTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOST_WRITEBEHIND_DATA_NETWORK_DISCONNECTED:
+      reason = "STATUS_LOST_WRITEBEHIND_DATA_NETWORK_DISCONNECTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOST_WRITEBEHIND_DATA_NETWORK_SERVER_ERROR:
+      reason = "STATUS_LOST_WRITEBEHIND_DATA_NETWORK_SERVER_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOST_WRITEBEHIND_DATA_LOCAL_DISK_ERROR:
+      reason = "STATUS_LOST_WRITEBEHIND_DATA_LOCAL_DISK_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_XML_PARSE_ERROR:
+      reason = "STATUS_XML_PARSE_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_XMLDSIG_ERROR:
+      reason = "STATUS_XMLDSIG_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_WRONG_COMPARTMENT:
+      reason = "STATUS_WRONG_COMPARTMENT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_AUTHIP_FAILURE:
+      reason = "STATUS_AUTHIP_FAILURE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DS_OID_MAPPED_GROUP_CANT_HAVE_MEMBERS:
+      reason = "STATUS_DS_OID_MAPPED_GROUP_CANT_HAVE_MEMBERS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DS_OID_NOT_FOUND:
+      reason = "STATUS_DS_OID_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INCORRECT_ACCOUNT_TYPE:
+      reason = "STATUS_INCORRECT_ACCOUNT_TYPE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_HASH_NOT_SUPPORTED:
+      reason = "STATUS_HASH_NOT_SUPPORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_HASH_NOT_PRESENT:
+      reason = "STATUS_HASH_NOT_PRESENT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SECONDARY_IC_PROVIDER_NOT_REGISTERED:
+      reason = "STATUS_SECONDARY_IC_PROVIDER_NOT_REGISTERED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GPIO_CLIENT_INFORMATION_INVALID:
+      reason = "STATUS_GPIO_CLIENT_INFORMATION_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GPIO_VERSION_NOT_SUPPORTED:
+      reason = "STATUS_GPIO_VERSION_NOT_SUPPORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GPIO_INVALID_REGISTRATION_PACKET:
+      reason = "STATUS_GPIO_INVALID_REGISTRATION_PACKET";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GPIO_OPERATION_DENIED:
+      reason = "STATUS_GPIO_OPERATION_DENIED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GPIO_INCOMPATIBLE_CONNECT_MODE:
+      reason = "STATUS_GPIO_INCOMPATIBLE_CONNECT_MODE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CANNOT_SWITCH_RUNLEVEL:
+      reason = "STATUS_CANNOT_SWITCH_RUNLEVEL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_RUNLEVEL_SETTING:
+      reason = "STATUS_INVALID_RUNLEVEL_SETTING";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_RUNLEVEL_SWITCH_TIMEOUT:
+      reason = "STATUS_RUNLEVEL_SWITCH_TIMEOUT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_RUNLEVEL_SWITCH_AGENT_TIMEOUT:
+      reason = "STATUS_RUNLEVEL_SWITCH_AGENT_TIMEOUT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_RUNLEVEL_SWITCH_IN_PROGRESS:
+      reason = "STATUS_RUNLEVEL_SWITCH_IN_PROGRESS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NOT_APPCONTAINER:
+      reason = "STATUS_NOT_APPCONTAINER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NOT_SUPPORTED_IN_APPCONTAINER:
+      reason = "STATUS_NOT_SUPPORTED_IN_APPCONTAINER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_PACKAGE_SID_LENGTH:
+      reason = "STATUS_INVALID_PACKAGE_SID_LENGTH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_APP_DATA_NOT_FOUND:
+      reason = "STATUS_APP_DATA_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_APP_DATA_EXPIRED:
+      reason = "STATUS_APP_DATA_EXPIRED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_APP_DATA_CORRUPT:
+      reason = "STATUS_APP_DATA_CORRUPT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_APP_DATA_LIMIT_EXCEEDED:
+      reason = "STATUS_APP_DATA_LIMIT_EXCEEDED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_APP_DATA_REBOOT_REQUIRED:
+      reason = "STATUS_APP_DATA_REBOOT_REQUIRED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_OFFLOAD_READ_FLT_NOT_SUPPORTED:
+      reason = "STATUS_OFFLOAD_READ_FLT_NOT_SUPPORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_OFFLOAD_WRITE_FLT_NOT_SUPPORTED:
+      reason = "STATUS_OFFLOAD_WRITE_FLT_NOT_SUPPORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_OFFLOAD_READ_FILE_NOT_SUPPORTED:
+      reason = "STATUS_OFFLOAD_READ_FILE_NOT_SUPPORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_OFFLOAD_WRITE_FILE_NOT_SUPPORTED:
+      reason = "STATUS_OFFLOAD_WRITE_FILE_NOT_SUPPORTED";
+      break;
+    case MD_NTSTATUS_WIN_DBG_NO_STATE_CHANGE:
+      reason = "DBG_NO_STATE_CHANGE";
+      break;
+    case MD_NTSTATUS_WIN_DBG_APP_NOT_IDLE:
+      reason = "DBG_APP_NOT_IDLE";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_INVALID_STRING_BINDING:
+      reason = "RPC_NT_INVALID_STRING_BINDING";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_WRONG_KIND_OF_BINDING:
+      reason = "RPC_NT_WRONG_KIND_OF_BINDING";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_INVALID_BINDING:
+      reason = "RPC_NT_INVALID_BINDING";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_PROTSEQ_NOT_SUPPORTED:
+      reason = "RPC_NT_PROTSEQ_NOT_SUPPORTED";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_INVALID_RPC_PROTSEQ:
+      reason = "RPC_NT_INVALID_RPC_PROTSEQ";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_INVALID_STRING_UUID:
+      reason = "RPC_NT_INVALID_STRING_UUID";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_INVALID_ENDPOINT_FORMAT:
+      reason = "RPC_NT_INVALID_ENDPOINT_FORMAT";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_INVALID_NET_ADDR:
+      reason = "RPC_NT_INVALID_NET_ADDR";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_NO_ENDPOINT_FOUND:
+      reason = "RPC_NT_NO_ENDPOINT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_INVALID_TIMEOUT:
+      reason = "RPC_NT_INVALID_TIMEOUT";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_OBJECT_NOT_FOUND:
+      reason = "RPC_NT_OBJECT_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_ALREADY_REGISTERED:
+      reason = "RPC_NT_ALREADY_REGISTERED";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_TYPE_ALREADY_REGISTERED:
+      reason = "RPC_NT_TYPE_ALREADY_REGISTERED";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_ALREADY_LISTENING:
+      reason = "RPC_NT_ALREADY_LISTENING";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_NO_PROTSEQS_REGISTERED:
+      reason = "RPC_NT_NO_PROTSEQS_REGISTERED";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_NOT_LISTENING:
+      reason = "RPC_NT_NOT_LISTENING";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_UNKNOWN_MGR_TYPE:
+      reason = "RPC_NT_UNKNOWN_MGR_TYPE";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_UNKNOWN_IF:
+      reason = "RPC_NT_UNKNOWN_IF";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_NO_BINDINGS:
+      reason = "RPC_NT_NO_BINDINGS";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_NO_PROTSEQS:
+      reason = "RPC_NT_NO_PROTSEQS";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_CANT_CREATE_ENDPOINT:
+      reason = "RPC_NT_CANT_CREATE_ENDPOINT";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_OUT_OF_RESOURCES:
+      reason = "RPC_NT_OUT_OF_RESOURCES";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_SERVER_UNAVAILABLE:
+      reason = "RPC_NT_SERVER_UNAVAILABLE";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_SERVER_TOO_BUSY:
+      reason = "RPC_NT_SERVER_TOO_BUSY";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_INVALID_NETWORK_OPTIONS:
+      reason = "RPC_NT_INVALID_NETWORK_OPTIONS";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_NO_CALL_ACTIVE:
+      reason = "RPC_NT_NO_CALL_ACTIVE";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_CALL_FAILED:
+      reason = "RPC_NT_CALL_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_CALL_FAILED_DNE:
+      reason = "RPC_NT_CALL_FAILED_DNE";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_PROTOCOL_ERROR:
+      reason = "RPC_NT_PROTOCOL_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_UNSUPPORTED_TRANS_SYN:
+      reason = "RPC_NT_UNSUPPORTED_TRANS_SYN";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_UNSUPPORTED_TYPE:
+      reason = "RPC_NT_UNSUPPORTED_TYPE";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_INVALID_TAG:
+      reason = "RPC_NT_INVALID_TAG";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_INVALID_BOUND:
+      reason = "RPC_NT_INVALID_BOUND";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_NO_ENTRY_NAME:
+      reason = "RPC_NT_NO_ENTRY_NAME";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_INVALID_NAME_SYNTAX:
+      reason = "RPC_NT_INVALID_NAME_SYNTAX";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_UNSUPPORTED_NAME_SYNTAX:
+      reason = "RPC_NT_UNSUPPORTED_NAME_SYNTAX";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_UUID_NO_ADDRESS:
+      reason = "RPC_NT_UUID_NO_ADDRESS";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_DUPLICATE_ENDPOINT:
+      reason = "RPC_NT_DUPLICATE_ENDPOINT";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_UNKNOWN_AUTHN_TYPE:
+      reason = "RPC_NT_UNKNOWN_AUTHN_TYPE";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_MAX_CALLS_TOO_SMALL:
+      reason = "RPC_NT_MAX_CALLS_TOO_SMALL";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_STRING_TOO_LONG:
+      reason = "RPC_NT_STRING_TOO_LONG";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_PROTSEQ_NOT_FOUND:
+      reason = "RPC_NT_PROTSEQ_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_PROCNUM_OUT_OF_RANGE:
+      reason = "RPC_NT_PROCNUM_OUT_OF_RANGE";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_BINDING_HAS_NO_AUTH:
+      reason = "RPC_NT_BINDING_HAS_NO_AUTH";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_UNKNOWN_AUTHN_SERVICE:
+      reason = "RPC_NT_UNKNOWN_AUTHN_SERVICE";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_UNKNOWN_AUTHN_LEVEL:
+      reason = "RPC_NT_UNKNOWN_AUTHN_LEVEL";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_INVALID_AUTH_IDENTITY:
+      reason = "RPC_NT_INVALID_AUTH_IDENTITY";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_UNKNOWN_AUTHZ_SERVICE:
+      reason = "RPC_NT_UNKNOWN_AUTHZ_SERVICE";
+      break;
+    case MD_NTSTATUS_WIN_EPT_NT_INVALID_ENTRY:
+      reason = "EPT_NT_INVALID_ENTRY";
+      break;
+    case MD_NTSTATUS_WIN_EPT_NT_CANT_PERFORM_OP:
+      reason = "EPT_NT_CANT_PERFORM_OP";
+      break;
+    case MD_NTSTATUS_WIN_EPT_NT_NOT_REGISTERED:
+      reason = "EPT_NT_NOT_REGISTERED";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_NOTHING_TO_EXPORT:
+      reason = "RPC_NT_NOTHING_TO_EXPORT";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_INCOMPLETE_NAME:
+      reason = "RPC_NT_INCOMPLETE_NAME";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_INVALID_VERS_OPTION:
+      reason = "RPC_NT_INVALID_VERS_OPTION";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_NO_MORE_MEMBERS:
+      reason = "RPC_NT_NO_MORE_MEMBERS";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_NOT_ALL_OBJS_UNEXPORTED:
+      reason = "RPC_NT_NOT_ALL_OBJS_UNEXPORTED";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_INTERFACE_NOT_FOUND:
+      reason = "RPC_NT_INTERFACE_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_ENTRY_ALREADY_EXISTS:
+      reason = "RPC_NT_ENTRY_ALREADY_EXISTS";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_ENTRY_NOT_FOUND:
+      reason = "RPC_NT_ENTRY_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_NAME_SERVICE_UNAVAILABLE:
+      reason = "RPC_NT_NAME_SERVICE_UNAVAILABLE";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_INVALID_NAF_ID:
+      reason = "RPC_NT_INVALID_NAF_ID";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_CANNOT_SUPPORT:
+      reason = "RPC_NT_CANNOT_SUPPORT";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_NO_CONTEXT_AVAILABLE:
+      reason = "RPC_NT_NO_CONTEXT_AVAILABLE";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_INTERNAL_ERROR:
+      reason = "RPC_NT_INTERNAL_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_ZERO_DIVIDE:
+      reason = "RPC_NT_ZERO_DIVIDE";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_ADDRESS_ERROR:
+      reason = "RPC_NT_ADDRESS_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_FP_DIV_ZERO:
+      reason = "RPC_NT_FP_DIV_ZERO";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_FP_UNDERFLOW:
+      reason = "RPC_NT_FP_UNDERFLOW";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_FP_OVERFLOW:
+      reason = "RPC_NT_FP_OVERFLOW";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_CALL_IN_PROGRESS:
+      reason = "RPC_NT_CALL_IN_PROGRESS";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_NO_MORE_BINDINGS:
+      reason = "RPC_NT_NO_MORE_BINDINGS";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_GROUP_MEMBER_NOT_FOUND:
+      reason = "RPC_NT_GROUP_MEMBER_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_EPT_NT_CANT_CREATE:
+      reason = "EPT_NT_CANT_CREATE";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_INVALID_OBJECT:
+      reason = "RPC_NT_INVALID_OBJECT";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_NO_INTERFACES:
+      reason = "RPC_NT_NO_INTERFACES";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_CALL_CANCELLED:
+      reason = "RPC_NT_CALL_CANCELLED";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_BINDING_INCOMPLETE:
+      reason = "RPC_NT_BINDING_INCOMPLETE";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_COMM_FAILURE:
+      reason = "RPC_NT_COMM_FAILURE";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_UNSUPPORTED_AUTHN_LEVEL:
+      reason = "RPC_NT_UNSUPPORTED_AUTHN_LEVEL";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_NO_PRINC_NAME:
+      reason = "RPC_NT_NO_PRINC_NAME";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_NOT_RPC_ERROR:
+      reason = "RPC_NT_NOT_RPC_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_SEC_PKG_ERROR:
+      reason = "RPC_NT_SEC_PKG_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_NOT_CANCELLED:
+      reason = "RPC_NT_NOT_CANCELLED";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_INVALID_ASYNC_HANDLE:
+      reason = "RPC_NT_INVALID_ASYNC_HANDLE";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_INVALID_ASYNC_CALL:
+      reason = "RPC_NT_INVALID_ASYNC_CALL";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_PROXY_ACCESS_DENIED:
+      reason = "RPC_NT_PROXY_ACCESS_DENIED";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_COOKIE_AUTH_FAILED:
+      reason = "RPC_NT_COOKIE_AUTH_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_NO_MORE_ENTRIES:
+      reason = "RPC_NT_NO_MORE_ENTRIES";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_SS_CHAR_TRANS_OPEN_FAIL:
+      reason = "RPC_NT_SS_CHAR_TRANS_OPEN_FAIL";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_SS_CHAR_TRANS_SHORT_FILE:
+      reason = "RPC_NT_SS_CHAR_TRANS_SHORT_FILE";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_SS_IN_NULL_CONTEXT:
+      reason = "RPC_NT_SS_IN_NULL_CONTEXT";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_SS_CONTEXT_MISMATCH:
+      reason = "RPC_NT_SS_CONTEXT_MISMATCH";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_SS_CONTEXT_DAMAGED:
+      reason = "RPC_NT_SS_CONTEXT_DAMAGED";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_SS_HANDLES_MISMATCH:
+      reason = "RPC_NT_SS_HANDLES_MISMATCH";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_SS_CANNOT_GET_CALL_HANDLE:
+      reason = "RPC_NT_SS_CANNOT_GET_CALL_HANDLE";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_NULL_REF_POINTER:
+      reason = "RPC_NT_NULL_REF_POINTER";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_ENUM_VALUE_OUT_OF_RANGE:
+      reason = "RPC_NT_ENUM_VALUE_OUT_OF_RANGE";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_BYTE_COUNT_TOO_SMALL:
+      reason = "RPC_NT_BYTE_COUNT_TOO_SMALL";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_BAD_STUB_DATA:
+      reason = "RPC_NT_BAD_STUB_DATA";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_INVALID_ES_ACTION:
+      reason = "RPC_NT_INVALID_ES_ACTION";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_WRONG_ES_VERSION:
+      reason = "RPC_NT_WRONG_ES_VERSION";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_WRONG_STUB_VERSION:
+      reason = "RPC_NT_WRONG_STUB_VERSION";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_INVALID_PIPE_OBJECT:
+      reason = "RPC_NT_INVALID_PIPE_OBJECT";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_INVALID_PIPE_OPERATION:
+      reason = "RPC_NT_INVALID_PIPE_OPERATION";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_WRONG_PIPE_VERSION:
+      reason = "RPC_NT_WRONG_PIPE_VERSION";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_PIPE_CLOSED:
+      reason = "RPC_NT_PIPE_CLOSED";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_PIPE_DISCIPLINE_ERROR:
+      reason = "RPC_NT_PIPE_DISCIPLINE_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_RPC_NT_PIPE_EMPTY:
+      reason = "RPC_NT_PIPE_EMPTY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PNP_BAD_MPS_TABLE:
+      reason = "STATUS_PNP_BAD_MPS_TABLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PNP_TRANSLATION_FAILED:
+      reason = "STATUS_PNP_TRANSLATION_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PNP_IRQ_TRANSLATION_FAILED:
+      reason = "STATUS_PNP_IRQ_TRANSLATION_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PNP_INVALID_ID:
+      reason = "STATUS_PNP_INVALID_ID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_IO_REISSUE_AS_CACHED:
+      reason = "STATUS_IO_REISSUE_AS_CACHED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CTX_WINSTATION_NAME_INVALID:
+      reason = "STATUS_CTX_WINSTATION_NAME_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CTX_INVALID_PD:
+      reason = "STATUS_CTX_INVALID_PD";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CTX_PD_NOT_FOUND:
+      reason = "STATUS_CTX_PD_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CTX_CLOSE_PENDING:
+      reason = "STATUS_CTX_CLOSE_PENDING";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CTX_NO_OUTBUF:
+      reason = "STATUS_CTX_NO_OUTBUF";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CTX_MODEM_INF_NOT_FOUND:
+      reason = "STATUS_CTX_MODEM_INF_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CTX_INVALID_MODEMNAME:
+      reason = "STATUS_CTX_INVALID_MODEMNAME";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CTX_RESPONSE_ERROR:
+      reason = "STATUS_CTX_RESPONSE_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CTX_MODEM_RESPONSE_TIMEOUT:
+      reason = "STATUS_CTX_MODEM_RESPONSE_TIMEOUT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CTX_MODEM_RESPONSE_NO_CARRIER:
+      reason = "STATUS_CTX_MODEM_RESPONSE_NO_CARRIER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CTX_MODEM_RESPONSE_NO_DIALTONE:
+      reason = "STATUS_CTX_MODEM_RESPONSE_NO_DIALTONE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CTX_MODEM_RESPONSE_BUSY:
+      reason = "STATUS_CTX_MODEM_RESPONSE_BUSY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CTX_MODEM_RESPONSE_VOICE:
+      reason = "STATUS_CTX_MODEM_RESPONSE_VOICE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CTX_TD_ERROR:
+      reason = "STATUS_CTX_TD_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CTX_LICENSE_CLIENT_INVALID:
+      reason = "STATUS_CTX_LICENSE_CLIENT_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CTX_LICENSE_NOT_AVAILABLE:
+      reason = "STATUS_CTX_LICENSE_NOT_AVAILABLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CTX_LICENSE_EXPIRED:
+      reason = "STATUS_CTX_LICENSE_EXPIRED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CTX_WINSTATION_NOT_FOUND:
+      reason = "STATUS_CTX_WINSTATION_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CTX_WINSTATION_NAME_COLLISION:
+      reason = "STATUS_CTX_WINSTATION_NAME_COLLISION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CTX_WINSTATION_BUSY:
+      reason = "STATUS_CTX_WINSTATION_BUSY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CTX_BAD_VIDEO_MODE:
+      reason = "STATUS_CTX_BAD_VIDEO_MODE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CTX_GRAPHICS_INVALID:
+      reason = "STATUS_CTX_GRAPHICS_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CTX_NOT_CONSOLE:
+      reason = "STATUS_CTX_NOT_CONSOLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CTX_CLIENT_QUERY_TIMEOUT:
+      reason = "STATUS_CTX_CLIENT_QUERY_TIMEOUT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CTX_CONSOLE_DISCONNECT:
+      reason = "STATUS_CTX_CONSOLE_DISCONNECT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CTX_CONSOLE_CONNECT:
+      reason = "STATUS_CTX_CONSOLE_CONNECT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CTX_SHADOW_DENIED:
+      reason = "STATUS_CTX_SHADOW_DENIED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CTX_WINSTATION_ACCESS_DENIED:
+      reason = "STATUS_CTX_WINSTATION_ACCESS_DENIED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CTX_INVALID_WD:
+      reason = "STATUS_CTX_INVALID_WD";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CTX_WD_NOT_FOUND:
+      reason = "STATUS_CTX_WD_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CTX_SHADOW_INVALID:
+      reason = "STATUS_CTX_SHADOW_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CTX_SHADOW_DISABLED:
+      reason = "STATUS_CTX_SHADOW_DISABLED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_RDP_PROTOCOL_ERROR:
+      reason = "STATUS_RDP_PROTOCOL_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CTX_CLIENT_LICENSE_NOT_SET:
+      reason = "STATUS_CTX_CLIENT_LICENSE_NOT_SET";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CTX_CLIENT_LICENSE_IN_USE:
+      reason = "STATUS_CTX_CLIENT_LICENSE_IN_USE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CTX_SHADOW_ENDED_BY_MODE_CHANGE:
+      reason = "STATUS_CTX_SHADOW_ENDED_BY_MODE_CHANGE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CTX_SHADOW_NOT_RUNNING:
+      reason = "STATUS_CTX_SHADOW_NOT_RUNNING";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CTX_LOGON_DISABLED:
+      reason = "STATUS_CTX_LOGON_DISABLED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CTX_SECURITY_LAYER_ERROR:
+      reason = "STATUS_CTX_SECURITY_LAYER_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TS_INCOMPATIBLE_SESSIONS:
+      reason = "STATUS_TS_INCOMPATIBLE_SESSIONS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TS_VIDEO_SUBSYSTEM_ERROR:
+      reason = "STATUS_TS_VIDEO_SUBSYSTEM_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_MUI_FILE_NOT_FOUND:
+      reason = "STATUS_MUI_FILE_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_MUI_INVALID_FILE:
+      reason = "STATUS_MUI_INVALID_FILE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_MUI_INVALID_RC_CONFIG:
+      reason = "STATUS_MUI_INVALID_RC_CONFIG";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_MUI_INVALID_LOCALE_NAME:
+      reason = "STATUS_MUI_INVALID_LOCALE_NAME";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_MUI_INVALID_ULTIMATEFALLBACK_NAME:
+      reason = "STATUS_MUI_INVALID_ULTIMATEFALLBACK_NAME";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_MUI_FILE_NOT_LOADED:
+      reason = "STATUS_MUI_FILE_NOT_LOADED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_RESOURCE_ENUM_USER_STOP:
+      reason = "STATUS_RESOURCE_ENUM_USER_STOP";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CLUSTER_INVALID_NODE:
+      reason = "STATUS_CLUSTER_INVALID_NODE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CLUSTER_NODE_EXISTS:
+      reason = "STATUS_CLUSTER_NODE_EXISTS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CLUSTER_JOIN_IN_PROGRESS:
+      reason = "STATUS_CLUSTER_JOIN_IN_PROGRESS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CLUSTER_NODE_NOT_FOUND:
+      reason = "STATUS_CLUSTER_NODE_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CLUSTER_LOCAL_NODE_NOT_FOUND:
+      reason = "STATUS_CLUSTER_LOCAL_NODE_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CLUSTER_NETWORK_EXISTS:
+      reason = "STATUS_CLUSTER_NETWORK_EXISTS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CLUSTER_NETWORK_NOT_FOUND:
+      reason = "STATUS_CLUSTER_NETWORK_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CLUSTER_NETINTERFACE_EXISTS:
+      reason = "STATUS_CLUSTER_NETINTERFACE_EXISTS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CLUSTER_NETINTERFACE_NOT_FOUND:
+      reason = "STATUS_CLUSTER_NETINTERFACE_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CLUSTER_INVALID_REQUEST:
+      reason = "STATUS_CLUSTER_INVALID_REQUEST";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CLUSTER_INVALID_NETWORK_PROVIDER:
+      reason = "STATUS_CLUSTER_INVALID_NETWORK_PROVIDER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CLUSTER_NODE_DOWN:
+      reason = "STATUS_CLUSTER_NODE_DOWN";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CLUSTER_NODE_UNREACHABLE:
+      reason = "STATUS_CLUSTER_NODE_UNREACHABLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CLUSTER_NODE_NOT_MEMBER:
+      reason = "STATUS_CLUSTER_NODE_NOT_MEMBER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CLUSTER_JOIN_NOT_IN_PROGRESS:
+      reason = "STATUS_CLUSTER_JOIN_NOT_IN_PROGRESS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CLUSTER_INVALID_NETWORK:
+      reason = "STATUS_CLUSTER_INVALID_NETWORK";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CLUSTER_NO_NET_ADAPTERS:
+      reason = "STATUS_CLUSTER_NO_NET_ADAPTERS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CLUSTER_NODE_UP:
+      reason = "STATUS_CLUSTER_NODE_UP";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CLUSTER_NODE_PAUSED:
+      reason = "STATUS_CLUSTER_NODE_PAUSED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CLUSTER_NODE_NOT_PAUSED:
+      reason = "STATUS_CLUSTER_NODE_NOT_PAUSED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CLUSTER_NO_SECURITY_CONTEXT:
+      reason = "STATUS_CLUSTER_NO_SECURITY_CONTEXT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CLUSTER_NETWORK_NOT_INTERNAL:
+      reason = "STATUS_CLUSTER_NETWORK_NOT_INTERNAL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CLUSTER_POISONED:
+      reason = "STATUS_CLUSTER_POISONED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CLUSTER_NON_CSV_PATH:
+      reason = "STATUS_CLUSTER_NON_CSV_PATH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CLUSTER_CSV_VOLUME_NOT_LOCAL:
+      reason = "STATUS_CLUSTER_CSV_VOLUME_NOT_LOCAL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CLUSTER_CSV_READ_OPLOCK_BREAK_IN_PROGRESS:
+      reason = "STATUS_CLUSTER_CSV_READ_OPLOCK_BREAK_IN_PROGRESS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CLUSTER_CSV_AUTO_PAUSE_ERROR:
+      reason = "STATUS_CLUSTER_CSV_AUTO_PAUSE_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CLUSTER_CSV_REDIRECTED:
+      reason = "STATUS_CLUSTER_CSV_REDIRECTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CLUSTER_CSV_NOT_REDIRECTED:
+      reason = "STATUS_CLUSTER_CSV_NOT_REDIRECTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CLUSTER_CSV_VOLUME_DRAINING:
+      reason = "STATUS_CLUSTER_CSV_VOLUME_DRAINING";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CLUSTER_CSV_SNAPSHOT_CREATION_IN_PROGRESS:
+      reason = "STATUS_CLUSTER_CSV_SNAPSHOT_CREATION_IN_PROGRESS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CLUSTER_CSV_VOLUME_DRAINING_SUCCEEDED_DOWNLEVEL:
+      reason = "STATUS_CLUSTER_CSV_VOLUME_DRAINING_SUCCEEDED_DOWNLEVEL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ACPI_INVALID_OPCODE:
+      reason = "STATUS_ACPI_INVALID_OPCODE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ACPI_STACK_OVERFLOW:
+      reason = "STATUS_ACPI_STACK_OVERFLOW";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ACPI_ASSERT_FAILED:
+      reason = "STATUS_ACPI_ASSERT_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ACPI_INVALID_INDEX:
+      reason = "STATUS_ACPI_INVALID_INDEX";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ACPI_INVALID_ARGUMENT:
+      reason = "STATUS_ACPI_INVALID_ARGUMENT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ACPI_FATAL:
+      reason = "STATUS_ACPI_FATAL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ACPI_INVALID_SUPERNAME:
+      reason = "STATUS_ACPI_INVALID_SUPERNAME";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ACPI_INVALID_ARGTYPE:
+      reason = "STATUS_ACPI_INVALID_ARGTYPE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ACPI_INVALID_OBJTYPE:
+      reason = "STATUS_ACPI_INVALID_OBJTYPE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ACPI_INVALID_TARGETTYPE:
+      reason = "STATUS_ACPI_INVALID_TARGETTYPE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ACPI_INCORRECT_ARGUMENT_COUNT:
+      reason = "STATUS_ACPI_INCORRECT_ARGUMENT_COUNT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ACPI_ADDRESS_NOT_MAPPED:
+      reason = "STATUS_ACPI_ADDRESS_NOT_MAPPED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ACPI_INVALID_EVENTTYPE:
+      reason = "STATUS_ACPI_INVALID_EVENTTYPE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ACPI_HANDLER_COLLISION:
+      reason = "STATUS_ACPI_HANDLER_COLLISION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ACPI_INVALID_DATA:
+      reason = "STATUS_ACPI_INVALID_DATA";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ACPI_INVALID_REGION:
+      reason = "STATUS_ACPI_INVALID_REGION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ACPI_INVALID_ACCESS_SIZE:
+      reason = "STATUS_ACPI_INVALID_ACCESS_SIZE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ACPI_ACQUIRE_GLOBAL_LOCK:
+      reason = "STATUS_ACPI_ACQUIRE_GLOBAL_LOCK";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ACPI_ALREADY_INITIALIZED:
+      reason = "STATUS_ACPI_ALREADY_INITIALIZED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ACPI_NOT_INITIALIZED:
+      reason = "STATUS_ACPI_NOT_INITIALIZED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ACPI_INVALID_MUTEX_LEVEL:
+      reason = "STATUS_ACPI_INVALID_MUTEX_LEVEL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ACPI_MUTEX_NOT_OWNED:
+      reason = "STATUS_ACPI_MUTEX_NOT_OWNED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ACPI_MUTEX_NOT_OWNER:
+      reason = "STATUS_ACPI_MUTEX_NOT_OWNER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ACPI_RS_ACCESS:
+      reason = "STATUS_ACPI_RS_ACCESS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ACPI_INVALID_TABLE:
+      reason = "STATUS_ACPI_INVALID_TABLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ACPI_REG_HANDLER_FAILED:
+      reason = "STATUS_ACPI_REG_HANDLER_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ACPI_POWER_REQUEST_FAILED:
+      reason = "STATUS_ACPI_POWER_REQUEST_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SXS_SECTION_NOT_FOUND:
+      reason = "STATUS_SXS_SECTION_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SXS_CANT_GEN_ACTCTX:
+      reason = "STATUS_SXS_CANT_GEN_ACTCTX";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SXS_INVALID_ACTCTXDATA_FORMAT:
+      reason = "STATUS_SXS_INVALID_ACTCTXDATA_FORMAT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SXS_ASSEMBLY_NOT_FOUND:
+      reason = "STATUS_SXS_ASSEMBLY_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SXS_MANIFEST_FORMAT_ERROR:
+      reason = "STATUS_SXS_MANIFEST_FORMAT_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SXS_MANIFEST_PARSE_ERROR:
+      reason = "STATUS_SXS_MANIFEST_PARSE_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SXS_ACTIVATION_CONTEXT_DISABLED:
+      reason = "STATUS_SXS_ACTIVATION_CONTEXT_DISABLED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SXS_KEY_NOT_FOUND:
+      reason = "STATUS_SXS_KEY_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SXS_VERSION_CONFLICT:
+      reason = "STATUS_SXS_VERSION_CONFLICT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SXS_WRONG_SECTION_TYPE:
+      reason = "STATUS_SXS_WRONG_SECTION_TYPE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SXS_THREAD_QUERIES_DISABLED:
+      reason = "STATUS_SXS_THREAD_QUERIES_DISABLED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SXS_ASSEMBLY_MISSING:
+      reason = "STATUS_SXS_ASSEMBLY_MISSING";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SXS_PROCESS_DEFAULT_ALREADY_SET:
+      reason = "STATUS_SXS_PROCESS_DEFAULT_ALREADY_SET";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SXS_EARLY_DEACTIVATION:
+      reason = "STATUS_SXS_EARLY_DEACTIVATION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SXS_INVALID_DEACTIVATION:
+      reason = "STATUS_SXS_INVALID_DEACTIVATION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SXS_MULTIPLE_DEACTIVATION:
+      reason = "STATUS_SXS_MULTIPLE_DEACTIVATION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SXS_SYSTEM_DEFAULT_ACTIVATION_CONTEXT_EMPTY:
+      reason = "STATUS_SXS_SYSTEM_DEFAULT_ACTIVATION_CONTEXT_EMPTY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SXS_PROCESS_TERMINATION_REQUESTED:
+      reason = "STATUS_SXS_PROCESS_TERMINATION_REQUESTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SXS_CORRUPT_ACTIVATION_STACK:
+      reason = "STATUS_SXS_CORRUPT_ACTIVATION_STACK";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SXS_CORRUPTION:
+      reason = "STATUS_SXS_CORRUPTION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SXS_INVALID_IDENTITY_ATTRIBUTE_VALUE:
+      reason = "STATUS_SXS_INVALID_IDENTITY_ATTRIBUTE_VALUE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SXS_INVALID_IDENTITY_ATTRIBUTE_NAME:
+      reason = "STATUS_SXS_INVALID_IDENTITY_ATTRIBUTE_NAME";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SXS_IDENTITY_DUPLICATE_ATTRIBUTE:
+      reason = "STATUS_SXS_IDENTITY_DUPLICATE_ATTRIBUTE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SXS_IDENTITY_PARSE_ERROR:
+      reason = "STATUS_SXS_IDENTITY_PARSE_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SXS_COMPONENT_STORE_CORRUPT:
+      reason = "STATUS_SXS_COMPONENT_STORE_CORRUPT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SXS_FILE_HASH_MISMATCH:
+      reason = "STATUS_SXS_FILE_HASH_MISMATCH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SXS_MANIFEST_IDENTITY_SAME_BUT_CONTENTS_DIFFERENT:
+      reason = "STATUS_SXS_MANIFEST_IDENTITY_SAME_BUT_CONTENTS_DIFFERENT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SXS_IDENTITIES_DIFFERENT:
+      reason = "STATUS_SXS_IDENTITIES_DIFFERENT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SXS_ASSEMBLY_IS_NOT_A_DEPLOYMENT:
+      reason = "STATUS_SXS_ASSEMBLY_IS_NOT_A_DEPLOYMENT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SXS_FILE_NOT_PART_OF_ASSEMBLY:
+      reason = "STATUS_SXS_FILE_NOT_PART_OF_ASSEMBLY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ADVANCED_INSTALLER_FAILED:
+      reason = "STATUS_ADVANCED_INSTALLER_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_XML_ENCODING_MISMATCH:
+      reason = "STATUS_XML_ENCODING_MISMATCH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SXS_MANIFEST_TOO_BIG:
+      reason = "STATUS_SXS_MANIFEST_TOO_BIG";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SXS_SETTING_NOT_REGISTERED:
+      reason = "STATUS_SXS_SETTING_NOT_REGISTERED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SXS_TRANSACTION_CLOSURE_INCOMPLETE:
+      reason = "STATUS_SXS_TRANSACTION_CLOSURE_INCOMPLETE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SMI_PRIMITIVE_INSTALLER_FAILED:
+      reason = "STATUS_SMI_PRIMITIVE_INSTALLER_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GENERIC_COMMAND_FAILED:
+      reason = "STATUS_GENERIC_COMMAND_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SXS_FILE_HASH_MISSING:
+      reason = "STATUS_SXS_FILE_HASH_MISSING";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TRANSACTIONAL_CONFLICT:
+      reason = "STATUS_TRANSACTIONAL_CONFLICT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INVALID_TRANSACTION:
+      reason = "STATUS_INVALID_TRANSACTION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TRANSACTION_NOT_ACTIVE:
+      reason = "STATUS_TRANSACTION_NOT_ACTIVE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TM_INITIALIZATION_FAILED:
+      reason = "STATUS_TM_INITIALIZATION_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_RM_NOT_ACTIVE:
+      reason = "STATUS_RM_NOT_ACTIVE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_RM_METADATA_CORRUPT:
+      reason = "STATUS_RM_METADATA_CORRUPT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TRANSACTION_NOT_JOINED:
+      reason = "STATUS_TRANSACTION_NOT_JOINED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_DIRECTORY_NOT_RM:
+      reason = "STATUS_DIRECTORY_NOT_RM";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TRANSACTIONS_UNSUPPORTED_REMOTE:
+      reason = "STATUS_TRANSACTIONS_UNSUPPORTED_REMOTE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOG_RESIZE_INVALID_SIZE:
+      reason = "STATUS_LOG_RESIZE_INVALID_SIZE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_REMOTE_FILE_VERSION_MISMATCH:
+      reason = "STATUS_REMOTE_FILE_VERSION_MISMATCH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CRM_PROTOCOL_ALREADY_EXISTS:
+      reason = "STATUS_CRM_PROTOCOL_ALREADY_EXISTS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TRANSACTION_PROPAGATION_FAILED:
+      reason = "STATUS_TRANSACTION_PROPAGATION_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CRM_PROTOCOL_NOT_FOUND:
+      reason = "STATUS_CRM_PROTOCOL_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TRANSACTION_SUPERIOR_EXISTS:
+      reason = "STATUS_TRANSACTION_SUPERIOR_EXISTS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TRANSACTION_REQUEST_NOT_VALID:
+      reason = "STATUS_TRANSACTION_REQUEST_NOT_VALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TRANSACTION_NOT_REQUESTED:
+      reason = "STATUS_TRANSACTION_NOT_REQUESTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TRANSACTION_ALREADY_ABORTED:
+      reason = "STATUS_TRANSACTION_ALREADY_ABORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TRANSACTION_ALREADY_COMMITTED:
+      reason = "STATUS_TRANSACTION_ALREADY_COMMITTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TRANSACTION_INVALID_MARSHALL_BUFFER:
+      reason = "STATUS_TRANSACTION_INVALID_MARSHALL_BUFFER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CURRENT_TRANSACTION_NOT_VALID:
+      reason = "STATUS_CURRENT_TRANSACTION_NOT_VALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOG_GROWTH_FAILED:
+      reason = "STATUS_LOG_GROWTH_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_OBJECT_NO_LONGER_EXISTS:
+      reason = "STATUS_OBJECT_NO_LONGER_EXISTS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_STREAM_MINIVERSION_NOT_FOUND:
+      reason = "STATUS_STREAM_MINIVERSION_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_STREAM_MINIVERSION_NOT_VALID:
+      reason = "STATUS_STREAM_MINIVERSION_NOT_VALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_MINIVERSION_INACCESSIBLE_FROM_SPECIFIED_TRANSACTION:
+      reason = "STATUS_MINIVERSION_INACCESSIBLE_FROM_SPECIFIED_TRANSACTION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CANT_OPEN_MINIVERSION_WITH_MODIFY_INTENT:
+      reason = "STATUS_CANT_OPEN_MINIVERSION_WITH_MODIFY_INTENT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CANT_CREATE_MORE_STREAM_MINIVERSIONS:
+      reason = "STATUS_CANT_CREATE_MORE_STREAM_MINIVERSIONS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_HANDLE_NO_LONGER_VALID:
+      reason = "STATUS_HANDLE_NO_LONGER_VALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOG_CORRUPTION_DETECTED:
+      reason = "STATUS_LOG_CORRUPTION_DETECTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_RM_DISCONNECTED:
+      reason = "STATUS_RM_DISCONNECTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ENLISTMENT_NOT_SUPERIOR:
+      reason = "STATUS_ENLISTMENT_NOT_SUPERIOR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FILE_IDENTITY_NOT_PERSISTENT:
+      reason = "STATUS_FILE_IDENTITY_NOT_PERSISTENT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CANT_BREAK_TRANSACTIONAL_DEPENDENCY:
+      reason = "STATUS_CANT_BREAK_TRANSACTIONAL_DEPENDENCY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CANT_CROSS_RM_BOUNDARY:
+      reason = "STATUS_CANT_CROSS_RM_BOUNDARY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TXF_DIR_NOT_EMPTY:
+      reason = "STATUS_TXF_DIR_NOT_EMPTY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_INDOUBT_TRANSACTIONS_EXIST:
+      reason = "STATUS_INDOUBT_TRANSACTIONS_EXIST";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TM_VOLATILE:
+      reason = "STATUS_TM_VOLATILE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ROLLBACK_TIMER_EXPIRED:
+      reason = "STATUS_ROLLBACK_TIMER_EXPIRED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TXF_ATTRIBUTE_CORRUPT:
+      reason = "STATUS_TXF_ATTRIBUTE_CORRUPT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_EFS_NOT_ALLOWED_IN_TRANSACTION:
+      reason = "STATUS_EFS_NOT_ALLOWED_IN_TRANSACTION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TRANSACTIONAL_OPEN_NOT_ALLOWED:
+      reason = "STATUS_TRANSACTIONAL_OPEN_NOT_ALLOWED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TRANSACTED_MAPPING_UNSUPPORTED_REMOTE:
+      reason = "STATUS_TRANSACTED_MAPPING_UNSUPPORTED_REMOTE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TRANSACTION_REQUIRED_PROMOTION:
+      reason = "STATUS_TRANSACTION_REQUIRED_PROMOTION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CANNOT_EXECUTE_FILE_IN_TRANSACTION:
+      reason = "STATUS_CANNOT_EXECUTE_FILE_IN_TRANSACTION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TRANSACTIONS_NOT_FROZEN:
+      reason = "STATUS_TRANSACTIONS_NOT_FROZEN";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TRANSACTION_FREEZE_IN_PROGRESS:
+      reason = "STATUS_TRANSACTION_FREEZE_IN_PROGRESS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NOT_SNAPSHOT_VOLUME:
+      reason = "STATUS_NOT_SNAPSHOT_VOLUME";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NO_SAVEPOINT_WITH_OPEN_FILES:
+      reason = "STATUS_NO_SAVEPOINT_WITH_OPEN_FILES";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SPARSE_NOT_ALLOWED_IN_TRANSACTION:
+      reason = "STATUS_SPARSE_NOT_ALLOWED_IN_TRANSACTION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TM_IDENTITY_MISMATCH:
+      reason = "STATUS_TM_IDENTITY_MISMATCH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FLOATED_SECTION:
+      reason = "STATUS_FLOATED_SECTION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CANNOT_ACCEPT_TRANSACTED_WORK:
+      reason = "STATUS_CANNOT_ACCEPT_TRANSACTED_WORK";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CANNOT_ABORT_TRANSACTIONS:
+      reason = "STATUS_CANNOT_ABORT_TRANSACTIONS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TRANSACTION_NOT_FOUND:
+      reason = "STATUS_TRANSACTION_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_RESOURCEMANAGER_NOT_FOUND:
+      reason = "STATUS_RESOURCEMANAGER_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_ENLISTMENT_NOT_FOUND:
+      reason = "STATUS_ENLISTMENT_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TRANSACTIONMANAGER_NOT_FOUND:
+      reason = "STATUS_TRANSACTIONMANAGER_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TRANSACTIONMANAGER_NOT_ONLINE:
+      reason = "STATUS_TRANSACTIONMANAGER_NOT_ONLINE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TRANSACTIONMANAGER_RECOVERY_NAME_COLLISION:
+      reason = "STATUS_TRANSACTIONMANAGER_RECOVERY_NAME_COLLISION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TRANSACTION_NOT_ROOT:
+      reason = "STATUS_TRANSACTION_NOT_ROOT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TRANSACTION_OBJECT_EXPIRED:
+      reason = "STATUS_TRANSACTION_OBJECT_EXPIRED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_COMPRESSION_NOT_ALLOWED_IN_TRANSACTION:
+      reason = "STATUS_COMPRESSION_NOT_ALLOWED_IN_TRANSACTION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TRANSACTION_RESPONSE_NOT_ENLISTED:
+      reason = "STATUS_TRANSACTION_RESPONSE_NOT_ENLISTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TRANSACTION_RECORD_TOO_LONG:
+      reason = "STATUS_TRANSACTION_RECORD_TOO_LONG";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NO_LINK_TRACKING_IN_TRANSACTION:
+      reason = "STATUS_NO_LINK_TRACKING_IN_TRANSACTION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_OPERATION_NOT_SUPPORTED_IN_TRANSACTION:
+      reason = "STATUS_OPERATION_NOT_SUPPORTED_IN_TRANSACTION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TRANSACTION_INTEGRITY_VIOLATED:
+      reason = "STATUS_TRANSACTION_INTEGRITY_VIOLATED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TRANSACTIONMANAGER_IDENTITY_MISMATCH:
+      reason = "STATUS_TRANSACTIONMANAGER_IDENTITY_MISMATCH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_RM_CANNOT_BE_FROZEN_FOR_SNAPSHOT:
+      reason = "STATUS_RM_CANNOT_BE_FROZEN_FOR_SNAPSHOT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TRANSACTION_MUST_WRITETHROUGH:
+      reason = "STATUS_TRANSACTION_MUST_WRITETHROUGH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TRANSACTION_NO_SUPERIOR:
+      reason = "STATUS_TRANSACTION_NO_SUPERIOR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_EXPIRED_HANDLE:
+      reason = "STATUS_EXPIRED_HANDLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TRANSACTION_NOT_ENLISTED:
+      reason = "STATUS_TRANSACTION_NOT_ENLISTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOG_SECTOR_INVALID:
+      reason = "STATUS_LOG_SECTOR_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOG_SECTOR_PARITY_INVALID:
+      reason = "STATUS_LOG_SECTOR_PARITY_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOG_SECTOR_REMAPPED:
+      reason = "STATUS_LOG_SECTOR_REMAPPED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOG_BLOCK_INCOMPLETE:
+      reason = "STATUS_LOG_BLOCK_INCOMPLETE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOG_INVALID_RANGE:
+      reason = "STATUS_LOG_INVALID_RANGE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOG_BLOCKS_EXHAUSTED:
+      reason = "STATUS_LOG_BLOCKS_EXHAUSTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOG_READ_CONTEXT_INVALID:
+      reason = "STATUS_LOG_READ_CONTEXT_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOG_RESTART_INVALID:
+      reason = "STATUS_LOG_RESTART_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOG_BLOCK_VERSION:
+      reason = "STATUS_LOG_BLOCK_VERSION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOG_BLOCK_INVALID:
+      reason = "STATUS_LOG_BLOCK_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOG_READ_MODE_INVALID:
+      reason = "STATUS_LOG_READ_MODE_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOG_METADATA_CORRUPT:
+      reason = "STATUS_LOG_METADATA_CORRUPT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOG_METADATA_INVALID:
+      reason = "STATUS_LOG_METADATA_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOG_METADATA_INCONSISTENT:
+      reason = "STATUS_LOG_METADATA_INCONSISTENT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOG_RESERVATION_INVALID:
+      reason = "STATUS_LOG_RESERVATION_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOG_CANT_DELETE:
+      reason = "STATUS_LOG_CANT_DELETE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOG_CONTAINER_LIMIT_EXCEEDED:
+      reason = "STATUS_LOG_CONTAINER_LIMIT_EXCEEDED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOG_START_OF_LOG:
+      reason = "STATUS_LOG_START_OF_LOG";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOG_POLICY_ALREADY_INSTALLED:
+      reason = "STATUS_LOG_POLICY_ALREADY_INSTALLED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOG_POLICY_NOT_INSTALLED:
+      reason = "STATUS_LOG_POLICY_NOT_INSTALLED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOG_POLICY_INVALID:
+      reason = "STATUS_LOG_POLICY_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOG_POLICY_CONFLICT:
+      reason = "STATUS_LOG_POLICY_CONFLICT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOG_PINNED_ARCHIVE_TAIL:
+      reason = "STATUS_LOG_PINNED_ARCHIVE_TAIL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOG_RECORD_NONEXISTENT:
+      reason = "STATUS_LOG_RECORD_NONEXISTENT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOG_RECORDS_RESERVED_INVALID:
+      reason = "STATUS_LOG_RECORDS_RESERVED_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOG_SPACE_RESERVED_INVALID:
+      reason = "STATUS_LOG_SPACE_RESERVED_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOG_TAIL_INVALID:
+      reason = "STATUS_LOG_TAIL_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOG_FULL:
+      reason = "STATUS_LOG_FULL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOG_MULTIPLEXED:
+      reason = "STATUS_LOG_MULTIPLEXED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOG_DEDICATED:
+      reason = "STATUS_LOG_DEDICATED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOG_ARCHIVE_NOT_IN_PROGRESS:
+      reason = "STATUS_LOG_ARCHIVE_NOT_IN_PROGRESS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOG_ARCHIVE_IN_PROGRESS:
+      reason = "STATUS_LOG_ARCHIVE_IN_PROGRESS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOG_EPHEMERAL:
+      reason = "STATUS_LOG_EPHEMERAL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOG_NOT_ENOUGH_CONTAINERS:
+      reason = "STATUS_LOG_NOT_ENOUGH_CONTAINERS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOG_CLIENT_ALREADY_REGISTERED:
+      reason = "STATUS_LOG_CLIENT_ALREADY_REGISTERED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOG_CLIENT_NOT_REGISTERED:
+      reason = "STATUS_LOG_CLIENT_NOT_REGISTERED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOG_FULL_HANDLER_IN_PROGRESS:
+      reason = "STATUS_LOG_FULL_HANDLER_IN_PROGRESS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOG_CONTAINER_READ_FAILED:
+      reason = "STATUS_LOG_CONTAINER_READ_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOG_CONTAINER_WRITE_FAILED:
+      reason = "STATUS_LOG_CONTAINER_WRITE_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOG_CONTAINER_OPEN_FAILED:
+      reason = "STATUS_LOG_CONTAINER_OPEN_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOG_CONTAINER_STATE_INVALID:
+      reason = "STATUS_LOG_CONTAINER_STATE_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOG_STATE_INVALID:
+      reason = "STATUS_LOG_STATE_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOG_PINNED:
+      reason = "STATUS_LOG_PINNED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOG_METADATA_FLUSH_FAILED:
+      reason = "STATUS_LOG_METADATA_FLUSH_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOG_INCONSISTENT_SECURITY:
+      reason = "STATUS_LOG_INCONSISTENT_SECURITY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOG_APPENDED_FLUSH_FAILED:
+      reason = "STATUS_LOG_APPENDED_FLUSH_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_LOG_PINNED_RESERVATION:
+      reason = "STATUS_LOG_PINNED_RESERVATION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VIDEO_HUNG_DISPLAY_DRIVER_THREAD:
+      reason = "STATUS_VIDEO_HUNG_DISPLAY_DRIVER_THREAD";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FLT_NO_HANDLER_DEFINED:
+      reason = "STATUS_FLT_NO_HANDLER_DEFINED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FLT_CONTEXT_ALREADY_DEFINED:
+      reason = "STATUS_FLT_CONTEXT_ALREADY_DEFINED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FLT_INVALID_ASYNCHRONOUS_REQUEST:
+      reason = "STATUS_FLT_INVALID_ASYNCHRONOUS_REQUEST";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FLT_DISALLOW_FAST_IO:
+      reason = "STATUS_FLT_DISALLOW_FAST_IO";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FLT_INVALID_NAME_REQUEST:
+      reason = "STATUS_FLT_INVALID_NAME_REQUEST";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FLT_NOT_SAFE_TO_POST_OPERATION:
+      reason = "STATUS_FLT_NOT_SAFE_TO_POST_OPERATION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FLT_NOT_INITIALIZED:
+      reason = "STATUS_FLT_NOT_INITIALIZED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FLT_FILTER_NOT_READY:
+      reason = "STATUS_FLT_FILTER_NOT_READY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FLT_POST_OPERATION_CLEANUP:
+      reason = "STATUS_FLT_POST_OPERATION_CLEANUP";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FLT_INTERNAL_ERROR:
+      reason = "STATUS_FLT_INTERNAL_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FLT_DELETING_OBJECT:
+      reason = "STATUS_FLT_DELETING_OBJECT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FLT_MUST_BE_NONPAGED_POOL:
+      reason = "STATUS_FLT_MUST_BE_NONPAGED_POOL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FLT_DUPLICATE_ENTRY:
+      reason = "STATUS_FLT_DUPLICATE_ENTRY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FLT_CBDQ_DISABLED:
+      reason = "STATUS_FLT_CBDQ_DISABLED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FLT_DO_NOT_ATTACH:
+      reason = "STATUS_FLT_DO_NOT_ATTACH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FLT_DO_NOT_DETACH:
+      reason = "STATUS_FLT_DO_NOT_DETACH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FLT_INSTANCE_ALTITUDE_COLLISION:
+      reason = "STATUS_FLT_INSTANCE_ALTITUDE_COLLISION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FLT_INSTANCE_NAME_COLLISION:
+      reason = "STATUS_FLT_INSTANCE_NAME_COLLISION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FLT_FILTER_NOT_FOUND:
+      reason = "STATUS_FLT_FILTER_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FLT_VOLUME_NOT_FOUND:
+      reason = "STATUS_FLT_VOLUME_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FLT_INSTANCE_NOT_FOUND:
+      reason = "STATUS_FLT_INSTANCE_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FLT_CONTEXT_ALLOCATION_NOT_FOUND:
+      reason = "STATUS_FLT_CONTEXT_ALLOCATION_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FLT_INVALID_CONTEXT_REGISTRATION:
+      reason = "STATUS_FLT_INVALID_CONTEXT_REGISTRATION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FLT_NAME_CACHE_MISS:
+      reason = "STATUS_FLT_NAME_CACHE_MISS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FLT_NO_DEVICE_OBJECT:
+      reason = "STATUS_FLT_NO_DEVICE_OBJECT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FLT_VOLUME_ALREADY_MOUNTED:
+      reason = "STATUS_FLT_VOLUME_ALREADY_MOUNTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FLT_ALREADY_ENLISTED:
+      reason = "STATUS_FLT_ALREADY_ENLISTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FLT_CONTEXT_ALREADY_LINKED:
+      reason = "STATUS_FLT_CONTEXT_ALREADY_LINKED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FLT_NO_WAITER_FOR_REPLY:
+      reason = "STATUS_FLT_NO_WAITER_FOR_REPLY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FLT_REGISTRATION_BUSY:
+      reason = "STATUS_FLT_REGISTRATION_BUSY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_MONITOR_NO_DESCRIPTOR:
+      reason = "STATUS_MONITOR_NO_DESCRIPTOR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_MONITOR_UNKNOWN_DESCRIPTOR_FORMAT:
+      reason = "STATUS_MONITOR_UNKNOWN_DESCRIPTOR_FORMAT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_MONITOR_INVALID_DESCRIPTOR_CHECKSUM:
+      reason = "STATUS_MONITOR_INVALID_DESCRIPTOR_CHECKSUM";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_MONITOR_INVALID_STANDARD_TIMING_BLOCK:
+      reason = "STATUS_MONITOR_INVALID_STANDARD_TIMING_BLOCK";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_MONITOR_WMI_DATABLOCK_REGISTRATION_FAILED:
+      reason = "STATUS_MONITOR_WMI_DATABLOCK_REGISTRATION_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_MONITOR_INVALID_SERIAL_NUMBER_MONDSC_BLOCK:
+      reason = "STATUS_MONITOR_INVALID_SERIAL_NUMBER_MONDSC_BLOCK";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_MONITOR_INVALID_USER_FRIENDLY_MONDSC_BLOCK:
+      reason = "STATUS_MONITOR_INVALID_USER_FRIENDLY_MONDSC_BLOCK";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_MONITOR_NO_MORE_DESCRIPTOR_DATA:
+      reason = "STATUS_MONITOR_NO_MORE_DESCRIPTOR_DATA";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_MONITOR_INVALID_DETAILED_TIMING_BLOCK:
+      reason = "STATUS_MONITOR_INVALID_DETAILED_TIMING_BLOCK";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_MONITOR_INVALID_MANUFACTURE_DATE:
+      reason = "STATUS_MONITOR_INVALID_MANUFACTURE_DATE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_NOT_EXCLUSIVE_MODE_OWNER:
+      reason = "STATUS_GRAPHICS_NOT_EXCLUSIVE_MODE_OWNER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER:
+      reason = "STATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_DISPLAY_ADAPTER:
+      reason = "STATUS_GRAPHICS_INVALID_DISPLAY_ADAPTER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_ADAPTER_WAS_RESET:
+      reason = "STATUS_GRAPHICS_ADAPTER_WAS_RESET";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_DRIVER_MODEL:
+      reason = "STATUS_GRAPHICS_INVALID_DRIVER_MODEL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_PRESENT_MODE_CHANGED:
+      reason = "STATUS_GRAPHICS_PRESENT_MODE_CHANGED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_PRESENT_OCCLUDED:
+      reason = "STATUS_GRAPHICS_PRESENT_OCCLUDED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_PRESENT_DENIED:
+      reason = "STATUS_GRAPHICS_PRESENT_DENIED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_CANNOTCOLORCONVERT:
+      reason = "STATUS_GRAPHICS_CANNOTCOLORCONVERT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_DRIVER_MISMATCH:
+      reason = "STATUS_GRAPHICS_DRIVER_MISMATCH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_PRESENT_REDIRECTION_DISABLED:
+      reason = "STATUS_GRAPHICS_PRESENT_REDIRECTION_DISABLED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_PRESENT_UNOCCLUDED:
+      reason = "STATUS_GRAPHICS_PRESENT_UNOCCLUDED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_WINDOWDC_NOT_AVAILABLE:
+      reason = "STATUS_GRAPHICS_WINDOWDC_NOT_AVAILABLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_WINDOWLESS_PRESENT_DISABLED:
+      reason = "STATUS_GRAPHICS_WINDOWLESS_PRESENT_DISABLED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_NO_VIDEO_MEMORY:
+      reason = "STATUS_GRAPHICS_NO_VIDEO_MEMORY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_CANT_LOCK_MEMORY:
+      reason = "STATUS_GRAPHICS_CANT_LOCK_MEMORY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_ALLOCATION_BUSY:
+      reason = "STATUS_GRAPHICS_ALLOCATION_BUSY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_TOO_MANY_REFERENCES:
+      reason = "STATUS_GRAPHICS_TOO_MANY_REFERENCES";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_TRY_AGAIN_LATER:
+      reason = "STATUS_GRAPHICS_TRY_AGAIN_LATER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_TRY_AGAIN_NOW:
+      reason = "STATUS_GRAPHICS_TRY_AGAIN_NOW";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_ALLOCATION_INVALID:
+      reason = "STATUS_GRAPHICS_ALLOCATION_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_UNSWIZZLING_APERTURE_UNAVAILABLE:
+      reason = "STATUS_GRAPHICS_UNSWIZZLING_APERTURE_UNAVAILABLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_UNSWIZZLING_APERTURE_UNSUPPORTED:
+      reason = "STATUS_GRAPHICS_UNSWIZZLING_APERTURE_UNSUPPORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_CANT_EVICT_PINNED_ALLOCATION:
+      reason = "STATUS_GRAPHICS_CANT_EVICT_PINNED_ALLOCATION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_ALLOCATION_USAGE:
+      reason = "STATUS_GRAPHICS_INVALID_ALLOCATION_USAGE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_CANT_RENDER_LOCKED_ALLOCATION:
+      reason = "STATUS_GRAPHICS_CANT_RENDER_LOCKED_ALLOCATION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_ALLOCATION_CLOSED:
+      reason = "STATUS_GRAPHICS_ALLOCATION_CLOSED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_ALLOCATION_INSTANCE:
+      reason = "STATUS_GRAPHICS_INVALID_ALLOCATION_INSTANCE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_ALLOCATION_HANDLE:
+      reason = "STATUS_GRAPHICS_INVALID_ALLOCATION_HANDLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_WRONG_ALLOCATION_DEVICE:
+      reason = "STATUS_GRAPHICS_WRONG_ALLOCATION_DEVICE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_ALLOCATION_CONTENT_LOST:
+      reason = "STATUS_GRAPHICS_ALLOCATION_CONTENT_LOST";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_GPU_EXCEPTION_ON_DEVICE:
+      reason = "STATUS_GRAPHICS_GPU_EXCEPTION_ON_DEVICE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_VIDPN_TOPOLOGY:
+      reason = "STATUS_GRAPHICS_INVALID_VIDPN_TOPOLOGY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_VIDPN_TOPOLOGY_NOT_SUPPORTED:
+      reason = "STATUS_GRAPHICS_VIDPN_TOPOLOGY_NOT_SUPPORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_VIDPN_TOPOLOGY_CURRENTLY_NOT_SUPPORTED:
+      reason = "STATUS_GRAPHICS_VIDPN_TOPOLOGY_CURRENTLY_NOT_SUPPORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_VIDPN:
+      reason = "STATUS_GRAPHICS_INVALID_VIDPN";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE:
+      reason = "STATUS_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET:
+      reason = "STATUS_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_VIDPN_MODALITY_NOT_SUPPORTED:
+      reason = "STATUS_GRAPHICS_VIDPN_MODALITY_NOT_SUPPORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_VIDPN_SOURCEMODESET:
+      reason = "STATUS_GRAPHICS_INVALID_VIDPN_SOURCEMODESET";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_VIDPN_TARGETMODESET:
+      reason = "STATUS_GRAPHICS_INVALID_VIDPN_TARGETMODESET";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_FREQUENCY:
+      reason = "STATUS_GRAPHICS_INVALID_FREQUENCY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_ACTIVE_REGION:
+      reason = "STATUS_GRAPHICS_INVALID_ACTIVE_REGION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_TOTAL_REGION:
+      reason = "STATUS_GRAPHICS_INVALID_TOTAL_REGION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE_MODE:
+      reason = "STATUS_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE_MODE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET_MODE:
+      reason = "STATUS_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET_MODE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_PINNED_MODE_MUST_REMAIN_IN_SET:
+      reason = "STATUS_GRAPHICS_PINNED_MODE_MUST_REMAIN_IN_SET";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_PATH_ALREADY_IN_TOPOLOGY:
+      reason = "STATUS_GRAPHICS_PATH_ALREADY_IN_TOPOLOGY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_MODE_ALREADY_IN_MODESET:
+      reason = "STATUS_GRAPHICS_MODE_ALREADY_IN_MODESET";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_VIDEOPRESENTSOURCESET:
+      reason = "STATUS_GRAPHICS_INVALID_VIDEOPRESENTSOURCESET";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_VIDEOPRESENTTARGETSET:
+      reason = "STATUS_GRAPHICS_INVALID_VIDEOPRESENTTARGETSET";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_SOURCE_ALREADY_IN_SET:
+      reason = "STATUS_GRAPHICS_SOURCE_ALREADY_IN_SET";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_TARGET_ALREADY_IN_SET:
+      reason = "STATUS_GRAPHICS_TARGET_ALREADY_IN_SET";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_VIDPN_PRESENT_PATH:
+      reason = "STATUS_GRAPHICS_INVALID_VIDPN_PRESENT_PATH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_NO_RECOMMENDED_VIDPN_TOPOLOGY:
+      reason = "STATUS_GRAPHICS_NO_RECOMMENDED_VIDPN_TOPOLOGY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGESET:
+      reason = "STATUS_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGESET";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE:
+      reason = "STATUS_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_FREQUENCYRANGE_NOT_IN_SET:
+      reason = "STATUS_GRAPHICS_FREQUENCYRANGE_NOT_IN_SET";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_FREQUENCYRANGE_ALREADY_IN_SET:
+      reason = "STATUS_GRAPHICS_FREQUENCYRANGE_ALREADY_IN_SET";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_STALE_MODESET:
+      reason = "STATUS_GRAPHICS_STALE_MODESET";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_MONITOR_SOURCEMODESET:
+      reason = "STATUS_GRAPHICS_INVALID_MONITOR_SOURCEMODESET";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_MONITOR_SOURCE_MODE:
+      reason = "STATUS_GRAPHICS_INVALID_MONITOR_SOURCE_MODE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_NO_RECOMMENDED_FUNCTIONAL_VIDPN:
+      reason = "STATUS_GRAPHICS_NO_RECOMMENDED_FUNCTIONAL_VIDPN";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_MODE_ID_MUST_BE_UNIQUE:
+      reason = "STATUS_GRAPHICS_MODE_ID_MUST_BE_UNIQUE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_EMPTY_ADAPTER_MONITOR_MODE_SUPPORT_INTERSECTION:
+      reason = "STATUS_GRAPHICS_EMPTY_ADAPTER_MONITOR_MODE_SUPPORT_INTERSECTION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_VIDEO_PRESENT_TARGETS_LESS_THAN_SOURCES:
+      reason = "STATUS_GRAPHICS_VIDEO_PRESENT_TARGETS_LESS_THAN_SOURCES";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_PATH_NOT_IN_TOPOLOGY:
+      reason = "STATUS_GRAPHICS_PATH_NOT_IN_TOPOLOGY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_SOURCE:
+      reason = "STATUS_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_SOURCE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_TARGET:
+      reason = "STATUS_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_TARGET";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_MONITORDESCRIPTORSET:
+      reason = "STATUS_GRAPHICS_INVALID_MONITORDESCRIPTORSET";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_MONITORDESCRIPTOR:
+      reason = "STATUS_GRAPHICS_INVALID_MONITORDESCRIPTOR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_MONITORDESCRIPTOR_NOT_IN_SET:
+      reason = "STATUS_GRAPHICS_MONITORDESCRIPTOR_NOT_IN_SET";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_MONITORDESCRIPTOR_ALREADY_IN_SET:
+      reason = "STATUS_GRAPHICS_MONITORDESCRIPTOR_ALREADY_IN_SET";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_MONITORDESCRIPTOR_ID_MUST_BE_UNIQUE:
+      reason = "STATUS_GRAPHICS_MONITORDESCRIPTOR_ID_MUST_BE_UNIQUE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_VIDPN_TARGET_SUBSET_TYPE:
+      reason = "STATUS_GRAPHICS_INVALID_VIDPN_TARGET_SUBSET_TYPE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_RESOURCES_NOT_RELATED:
+      reason = "STATUS_GRAPHICS_RESOURCES_NOT_RELATED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_SOURCE_ID_MUST_BE_UNIQUE:
+      reason = "STATUS_GRAPHICS_SOURCE_ID_MUST_BE_UNIQUE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_TARGET_ID_MUST_BE_UNIQUE:
+      reason = "STATUS_GRAPHICS_TARGET_ID_MUST_BE_UNIQUE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_NO_AVAILABLE_VIDPN_TARGET:
+      reason = "STATUS_GRAPHICS_NO_AVAILABLE_VIDPN_TARGET";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_MONITOR_COULD_NOT_BE_ASSOCIATED_WITH_ADAPTER:
+      reason = "STATUS_GRAPHICS_MONITOR_COULD_NOT_BE_ASSOCIATED_WITH_ADAPTER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_NO_VIDPNMGR:
+      reason = "STATUS_GRAPHICS_NO_VIDPNMGR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_NO_ACTIVE_VIDPN:
+      reason = "STATUS_GRAPHICS_NO_ACTIVE_VIDPN";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_STALE_VIDPN_TOPOLOGY:
+      reason = "STATUS_GRAPHICS_STALE_VIDPN_TOPOLOGY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_MONITOR_NOT_CONNECTED:
+      reason = "STATUS_GRAPHICS_MONITOR_NOT_CONNECTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_SOURCE_NOT_IN_TOPOLOGY:
+      reason = "STATUS_GRAPHICS_SOURCE_NOT_IN_TOPOLOGY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_PRIMARYSURFACE_SIZE:
+      reason = "STATUS_GRAPHICS_INVALID_PRIMARYSURFACE_SIZE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_VISIBLEREGION_SIZE:
+      reason = "STATUS_GRAPHICS_INVALID_VISIBLEREGION_SIZE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_STRIDE:
+      reason = "STATUS_GRAPHICS_INVALID_STRIDE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_PIXELFORMAT:
+      reason = "STATUS_GRAPHICS_INVALID_PIXELFORMAT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_COLORBASIS:
+      reason = "STATUS_GRAPHICS_INVALID_COLORBASIS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_PIXELVALUEACCESSMODE:
+      reason = "STATUS_GRAPHICS_INVALID_PIXELVALUEACCESSMODE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_TARGET_NOT_IN_TOPOLOGY:
+      reason = "STATUS_GRAPHICS_TARGET_NOT_IN_TOPOLOGY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_NO_DISPLAY_MODE_MANAGEMENT_SUPPORT:
+      reason = "STATUS_GRAPHICS_NO_DISPLAY_MODE_MANAGEMENT_SUPPORT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_VIDPN_SOURCE_IN_USE:
+      reason = "STATUS_GRAPHICS_VIDPN_SOURCE_IN_USE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_CANT_ACCESS_ACTIVE_VIDPN:
+      reason = "STATUS_GRAPHICS_CANT_ACCESS_ACTIVE_VIDPN";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_PATH_IMPORTANCE_ORDINAL:
+      reason = "STATUS_GRAPHICS_INVALID_PATH_IMPORTANCE_ORDINAL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_PATH_CONTENT_GEOMETRY_TRANSFORMATION:
+      reason = "STATUS_GRAPHICS_INVALID_PATH_CONTENT_GEOMETRY_TRANSFORMATION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_SUPPORTED:
+      reason = "STATUS_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_SUPPORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_GAMMA_RAMP:
+      reason = "STATUS_GRAPHICS_INVALID_GAMMA_RAMP";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_GAMMA_RAMP_NOT_SUPPORTED:
+      reason = "STATUS_GRAPHICS_GAMMA_RAMP_NOT_SUPPORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_MULTISAMPLING_NOT_SUPPORTED:
+      reason = "STATUS_GRAPHICS_MULTISAMPLING_NOT_SUPPORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_MODE_NOT_IN_MODESET:
+      reason = "STATUS_GRAPHICS_MODE_NOT_IN_MODESET";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_VIDPN_TOPOLOGY_RECOMMENDATION_REASON:
+      reason = "STATUS_GRAPHICS_INVALID_VIDPN_TOPOLOGY_RECOMMENDATION_REASON";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_PATH_CONTENT_TYPE:
+      reason = "STATUS_GRAPHICS_INVALID_PATH_CONTENT_TYPE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_COPYPROTECTION_TYPE:
+      reason = "STATUS_GRAPHICS_INVALID_COPYPROTECTION_TYPE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_UNASSIGNED_MODESET_ALREADY_EXISTS:
+      reason = "STATUS_GRAPHICS_UNASSIGNED_MODESET_ALREADY_EXISTS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_SCANLINE_ORDERING:
+      reason = "STATUS_GRAPHICS_INVALID_SCANLINE_ORDERING";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_TOPOLOGY_CHANGES_NOT_ALLOWED:
+      reason = "STATUS_GRAPHICS_TOPOLOGY_CHANGES_NOT_ALLOWED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_NO_AVAILABLE_IMPORTANCE_ORDINALS:
+      reason = "STATUS_GRAPHICS_NO_AVAILABLE_IMPORTANCE_ORDINALS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_INCOMPATIBLE_PRIVATE_FORMAT:
+      reason = "STATUS_GRAPHICS_INCOMPATIBLE_PRIVATE_FORMAT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_MODE_PRUNING_ALGORITHM:
+      reason = "STATUS_GRAPHICS_INVALID_MODE_PRUNING_ALGORITHM";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_MONITOR_CAPABILITY_ORIGIN:
+      reason = "STATUS_GRAPHICS_INVALID_MONITOR_CAPABILITY_ORIGIN";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE_CONSTRAINT:
+      reason = "STATUS_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE_CONSTRAINT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_MAX_NUM_PATHS_REACHED:
+      reason = "STATUS_GRAPHICS_MAX_NUM_PATHS_REACHED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_CANCEL_VIDPN_TOPOLOGY_AUGMENTATION:
+      reason = "STATUS_GRAPHICS_CANCEL_VIDPN_TOPOLOGY_AUGMENTATION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_CLIENT_TYPE:
+      reason = "STATUS_GRAPHICS_INVALID_CLIENT_TYPE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_CLIENTVIDPN_NOT_SET:
+      reason = "STATUS_GRAPHICS_CLIENTVIDPN_NOT_SET";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_SPECIFIED_CHILD_ALREADY_CONNECTED:
+      reason = "STATUS_GRAPHICS_SPECIFIED_CHILD_ALREADY_CONNECTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_CHILD_DESCRIPTOR_NOT_SUPPORTED:
+      reason = "STATUS_GRAPHICS_CHILD_DESCRIPTOR_NOT_SUPPORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_NOT_A_LINKED_ADAPTER:
+      reason = "STATUS_GRAPHICS_NOT_A_LINKED_ADAPTER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_LEADLINK_NOT_ENUMERATED:
+      reason = "STATUS_GRAPHICS_LEADLINK_NOT_ENUMERATED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_CHAINLINKS_NOT_ENUMERATED:
+      reason = "STATUS_GRAPHICS_CHAINLINKS_NOT_ENUMERATED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_ADAPTER_CHAIN_NOT_READY:
+      reason = "STATUS_GRAPHICS_ADAPTER_CHAIN_NOT_READY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_CHAINLINKS_NOT_STARTED:
+      reason = "STATUS_GRAPHICS_CHAINLINKS_NOT_STARTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_CHAINLINKS_NOT_POWERED_ON:
+      reason = "STATUS_GRAPHICS_CHAINLINKS_NOT_POWERED_ON";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_INCONSISTENT_DEVICE_LINK_STATE:
+      reason = "STATUS_GRAPHICS_INCONSISTENT_DEVICE_LINK_STATE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_NOT_POST_DEVICE_DRIVER:
+      reason = "STATUS_GRAPHICS_NOT_POST_DEVICE_DRIVER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_ADAPTER_ACCESS_NOT_EXCLUDED:
+      reason = "STATUS_GRAPHICS_ADAPTER_ACCESS_NOT_EXCLUDED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_OPM_NOT_SUPPORTED:
+      reason = "STATUS_GRAPHICS_OPM_NOT_SUPPORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_COPP_NOT_SUPPORTED:
+      reason = "STATUS_GRAPHICS_COPP_NOT_SUPPORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_UAB_NOT_SUPPORTED:
+      reason = "STATUS_GRAPHICS_UAB_NOT_SUPPORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_OPM_INVALID_ENCRYPTED_PARAMETERS:
+      reason = "STATUS_GRAPHICS_OPM_INVALID_ENCRYPTED_PARAMETERS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_OPM_NO_PROTECTED_OUTPUTS_EXIST:
+      reason = "STATUS_GRAPHICS_OPM_NO_PROTECTED_OUTPUTS_EXIST";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_OPM_INTERNAL_ERROR:
+      reason = "STATUS_GRAPHICS_OPM_INTERNAL_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_OPM_INVALID_HANDLE:
+      reason = "STATUS_GRAPHICS_OPM_INVALID_HANDLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_PVP_INVALID_CERTIFICATE_LENGTH:
+      reason = "STATUS_GRAPHICS_PVP_INVALID_CERTIFICATE_LENGTH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_OPM_SPANNING_MODE_ENABLED:
+      reason = "STATUS_GRAPHICS_OPM_SPANNING_MODE_ENABLED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_OPM_THEATER_MODE_ENABLED:
+      reason = "STATUS_GRAPHICS_OPM_THEATER_MODE_ENABLED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_PVP_HFS_FAILED:
+      reason = "STATUS_GRAPHICS_PVP_HFS_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_OPM_INVALID_SRM:
+      reason = "STATUS_GRAPHICS_OPM_INVALID_SRM";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_HDCP:
+      reason = "STATUS_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_HDCP";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_ACP:
+      reason = "STATUS_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_ACP";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_CGMSA:
+      reason = "STATUS_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_CGMSA";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_OPM_HDCP_SRM_NEVER_SET:
+      reason = "STATUS_GRAPHICS_OPM_HDCP_SRM_NEVER_SET";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_OPM_RESOLUTION_TOO_HIGH:
+      reason = "STATUS_GRAPHICS_OPM_RESOLUTION_TOO_HIGH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_OPM_ALL_HDCP_HARDWARE_ALREADY_IN_USE:
+      reason = "STATUS_GRAPHICS_OPM_ALL_HDCP_HARDWARE_ALREADY_IN_USE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_NO_LONGER_EXISTS:
+      reason = "STATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_NO_LONGER_EXISTS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_DOES_NOT_HAVE_COPP_SEMANTICS:
+      reason = "STATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_DOES_NOT_HAVE_COPP_SEMANTICS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_OPM_INVALID_INFORMATION_REQUEST:
+      reason = "STATUS_GRAPHICS_OPM_INVALID_INFORMATION_REQUEST";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_OPM_DRIVER_INTERNAL_ERROR:
+      reason = "STATUS_GRAPHICS_OPM_DRIVER_INTERNAL_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_DOES_NOT_HAVE_OPM_SEMANTICS:
+      reason = "STATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_DOES_NOT_HAVE_OPM_SEMANTICS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_OPM_SIGNALING_NOT_SUPPORTED:
+      reason = "STATUS_GRAPHICS_OPM_SIGNALING_NOT_SUPPORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_OPM_INVALID_CONFIGURATION_REQUEST:
+      reason = "STATUS_GRAPHICS_OPM_INVALID_CONFIGURATION_REQUEST";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_I2C_NOT_SUPPORTED:
+      reason = "STATUS_GRAPHICS_I2C_NOT_SUPPORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_I2C_DEVICE_DOES_NOT_EXIST:
+      reason = "STATUS_GRAPHICS_I2C_DEVICE_DOES_NOT_EXIST";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_I2C_ERROR_TRANSMITTING_DATA:
+      reason = "STATUS_GRAPHICS_I2C_ERROR_TRANSMITTING_DATA";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_I2C_ERROR_RECEIVING_DATA:
+      reason = "STATUS_GRAPHICS_I2C_ERROR_RECEIVING_DATA";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_DDCCI_VCP_NOT_SUPPORTED:
+      reason = "STATUS_GRAPHICS_DDCCI_VCP_NOT_SUPPORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_DDCCI_INVALID_DATA:
+      reason = "STATUS_GRAPHICS_DDCCI_INVALID_DATA";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_DDCCI_MONITOR_RETURNED_INVALID_TIMING_STATUS_BYTE:
+      reason = "STATUS_GRAPHICS_DDCCI_MONITOR_RETURNED_INVALID_TIMING_STATUS_BYTE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_DDCCI_INVALID_CAPABILITIES_STRING:
+      reason = "STATUS_GRAPHICS_DDCCI_INVALID_CAPABILITIES_STRING";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_MCA_INTERNAL_ERROR:
+      reason = "STATUS_GRAPHICS_MCA_INTERNAL_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_DDCCI_INVALID_MESSAGE_COMMAND:
+      reason = "STATUS_GRAPHICS_DDCCI_INVALID_MESSAGE_COMMAND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_DDCCI_INVALID_MESSAGE_LENGTH:
+      reason = "STATUS_GRAPHICS_DDCCI_INVALID_MESSAGE_LENGTH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_DDCCI_INVALID_MESSAGE_CHECKSUM:
+      reason = "STATUS_GRAPHICS_DDCCI_INVALID_MESSAGE_CHECKSUM";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_PHYSICAL_MONITOR_HANDLE:
+      reason = "STATUS_GRAPHICS_INVALID_PHYSICAL_MONITOR_HANDLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_MONITOR_NO_LONGER_EXISTS:
+      reason = "STATUS_GRAPHICS_MONITOR_NO_LONGER_EXISTS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_ONLY_CONSOLE_SESSION_SUPPORTED:
+      reason = "STATUS_GRAPHICS_ONLY_CONSOLE_SESSION_SUPPORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_NO_DISPLAY_DEVICE_CORRESPONDS_TO_NAME:
+      reason = "STATUS_GRAPHICS_NO_DISPLAY_DEVICE_CORRESPONDS_TO_NAME";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_DISPLAY_DEVICE_NOT_ATTACHED_TO_DESKTOP:
+      reason = "STATUS_GRAPHICS_DISPLAY_DEVICE_NOT_ATTACHED_TO_DESKTOP";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_MIRRORING_DEVICES_NOT_SUPPORTED:
+      reason = "STATUS_GRAPHICS_MIRRORING_DEVICES_NOT_SUPPORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_INVALID_POINTER:
+      reason = "STATUS_GRAPHICS_INVALID_POINTER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_NO_MONITORS_CORRESPOND_TO_DISPLAY_DEVICE:
+      reason = "STATUS_GRAPHICS_NO_MONITORS_CORRESPOND_TO_DISPLAY_DEVICE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_PARAMETER_ARRAY_TOO_SMALL:
+      reason = "STATUS_GRAPHICS_PARAMETER_ARRAY_TOO_SMALL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_INTERNAL_ERROR:
+      reason = "STATUS_GRAPHICS_INTERNAL_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_GRAPHICS_SESSION_TYPE_CHANGE_IN_PROGRESS:
+      reason = "STATUS_GRAPHICS_SESSION_TYPE_CHANGE_IN_PROGRESS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_LOCKED_VOLUME:
+      reason = "STATUS_FVE_LOCKED_VOLUME";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_NOT_ENCRYPTED:
+      reason = "STATUS_FVE_NOT_ENCRYPTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_BAD_INFORMATION:
+      reason = "STATUS_FVE_BAD_INFORMATION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_TOO_SMALL:
+      reason = "STATUS_FVE_TOO_SMALL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_FAILED_WRONG_FS:
+      reason = "STATUS_FVE_FAILED_WRONG_FS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_BAD_PARTITION_SIZE:
+      reason = "STATUS_FVE_BAD_PARTITION_SIZE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_FS_NOT_EXTENDED:
+      reason = "STATUS_FVE_FS_NOT_EXTENDED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_FS_MOUNTED:
+      reason = "STATUS_FVE_FS_MOUNTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_NO_LICENSE:
+      reason = "STATUS_FVE_NO_LICENSE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_ACTION_NOT_ALLOWED:
+      reason = "STATUS_FVE_ACTION_NOT_ALLOWED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_BAD_DATA:
+      reason = "STATUS_FVE_BAD_DATA";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_VOLUME_NOT_BOUND:
+      reason = "STATUS_FVE_VOLUME_NOT_BOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_NOT_DATA_VOLUME:
+      reason = "STATUS_FVE_NOT_DATA_VOLUME";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_CONV_READ_ERROR:
+      reason = "STATUS_FVE_CONV_READ_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_CONV_WRITE_ERROR:
+      reason = "STATUS_FVE_CONV_WRITE_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_OVERLAPPED_UPDATE:
+      reason = "STATUS_FVE_OVERLAPPED_UPDATE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_FAILED_SECTOR_SIZE:
+      reason = "STATUS_FVE_FAILED_SECTOR_SIZE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_FAILED_AUTHENTICATION:
+      reason = "STATUS_FVE_FAILED_AUTHENTICATION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_NOT_OS_VOLUME:
+      reason = "STATUS_FVE_NOT_OS_VOLUME";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_KEYFILE_NOT_FOUND:
+      reason = "STATUS_FVE_KEYFILE_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_KEYFILE_INVALID:
+      reason = "STATUS_FVE_KEYFILE_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_KEYFILE_NO_VMK:
+      reason = "STATUS_FVE_KEYFILE_NO_VMK";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_TPM_DISABLED:
+      reason = "STATUS_FVE_TPM_DISABLED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_TPM_SRK_AUTH_NOT_ZERO:
+      reason = "STATUS_FVE_TPM_SRK_AUTH_NOT_ZERO";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_TPM_INVALID_PCR:
+      reason = "STATUS_FVE_TPM_INVALID_PCR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_TPM_NO_VMK:
+      reason = "STATUS_FVE_TPM_NO_VMK";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_PIN_INVALID:
+      reason = "STATUS_FVE_PIN_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_AUTH_INVALID_APPLICATION:
+      reason = "STATUS_FVE_AUTH_INVALID_APPLICATION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_AUTH_INVALID_CONFIG:
+      reason = "STATUS_FVE_AUTH_INVALID_CONFIG";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_DEBUGGER_ENABLED:
+      reason = "STATUS_FVE_DEBUGGER_ENABLED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_DRY_RUN_FAILED:
+      reason = "STATUS_FVE_DRY_RUN_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_BAD_METADATA_POINTER:
+      reason = "STATUS_FVE_BAD_METADATA_POINTER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_OLD_METADATA_COPY:
+      reason = "STATUS_FVE_OLD_METADATA_COPY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_REBOOT_REQUIRED:
+      reason = "STATUS_FVE_REBOOT_REQUIRED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_RAW_ACCESS:
+      reason = "STATUS_FVE_RAW_ACCESS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_RAW_BLOCKED:
+      reason = "STATUS_FVE_RAW_BLOCKED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_NO_AUTOUNLOCK_MASTER_KEY:
+      reason = "STATUS_FVE_NO_AUTOUNLOCK_MASTER_KEY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_MOR_FAILED:
+      reason = "STATUS_FVE_MOR_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_NO_FEATURE_LICENSE:
+      reason = "STATUS_FVE_NO_FEATURE_LICENSE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_POLICY_USER_DISABLE_RDV_NOT_ALLOWED:
+      reason = "STATUS_FVE_POLICY_USER_DISABLE_RDV_NOT_ALLOWED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_CONV_RECOVERY_FAILED:
+      reason = "STATUS_FVE_CONV_RECOVERY_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_VIRTUALIZED_SPACE_TOO_BIG:
+      reason = "STATUS_FVE_VIRTUALIZED_SPACE_TOO_BIG";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_INVALID_DATUM_TYPE:
+      reason = "STATUS_FVE_INVALID_DATUM_TYPE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_VOLUME_TOO_SMALL:
+      reason = "STATUS_FVE_VOLUME_TOO_SMALL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_ENH_PIN_INVALID:
+      reason = "STATUS_FVE_ENH_PIN_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_FULL_ENCRYPTION_NOT_ALLOWED_ON_TP_STORAGE:
+      reason = "STATUS_FVE_FULL_ENCRYPTION_NOT_ALLOWED_ON_TP_STORAGE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_WIPE_NOT_ALLOWED_ON_TP_STORAGE:
+      reason = "STATUS_FVE_WIPE_NOT_ALLOWED_ON_TP_STORAGE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_NOT_ALLOWED_ON_CSV_STACK:
+      reason = "STATUS_FVE_NOT_ALLOWED_ON_CSV_STACK";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_NOT_ALLOWED_ON_CLUSTER:
+      reason = "STATUS_FVE_NOT_ALLOWED_ON_CLUSTER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_NOT_ALLOWED_TO_UPGRADE_WHILE_CONVERTING:
+      reason = "STATUS_FVE_NOT_ALLOWED_TO_UPGRADE_WHILE_CONVERTING";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_WIPE_CANCEL_NOT_APPLICABLE:
+      reason = "STATUS_FVE_WIPE_CANCEL_NOT_APPLICABLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_EDRIVE_DRY_RUN_FAILED:
+      reason = "STATUS_FVE_EDRIVE_DRY_RUN_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_SECUREBOOT_DISABLED:
+      reason = "STATUS_FVE_SECUREBOOT_DISABLED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_SECUREBOOT_CONFIG_CHANGE:
+      reason = "STATUS_FVE_SECUREBOOT_CONFIG_CHANGE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_DEVICE_LOCKEDOUT:
+      reason = "STATUS_FVE_DEVICE_LOCKEDOUT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_VOLUME_EXTEND_PREVENTS_EOW_DECRYPT:
+      reason = "STATUS_FVE_VOLUME_EXTEND_PREVENTS_EOW_DECRYPT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_NOT_DE_VOLUME:
+      reason = "STATUS_FVE_NOT_DE_VOLUME";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_PROTECTION_DISABLED:
+      reason = "STATUS_FVE_PROTECTION_DISABLED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FVE_PROTECTION_CANNOT_BE_DISABLED:
+      reason = "STATUS_FVE_PROTECTION_CANNOT_BE_DISABLED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_CALLOUT_NOT_FOUND:
+      reason = "STATUS_FWP_CALLOUT_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_CONDITION_NOT_FOUND:
+      reason = "STATUS_FWP_CONDITION_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_FILTER_NOT_FOUND:
+      reason = "STATUS_FWP_FILTER_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_LAYER_NOT_FOUND:
+      reason = "STATUS_FWP_LAYER_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_PROVIDER_NOT_FOUND:
+      reason = "STATUS_FWP_PROVIDER_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_PROVIDER_CONTEXT_NOT_FOUND:
+      reason = "STATUS_FWP_PROVIDER_CONTEXT_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_SUBLAYER_NOT_FOUND:
+      reason = "STATUS_FWP_SUBLAYER_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_NOT_FOUND:
+      reason = "STATUS_FWP_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_ALREADY_EXISTS:
+      reason = "STATUS_FWP_ALREADY_EXISTS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_IN_USE:
+      reason = "STATUS_FWP_IN_USE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_DYNAMIC_SESSION_IN_PROGRESS:
+      reason = "STATUS_FWP_DYNAMIC_SESSION_IN_PROGRESS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_WRONG_SESSION:
+      reason = "STATUS_FWP_WRONG_SESSION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_NO_TXN_IN_PROGRESS:
+      reason = "STATUS_FWP_NO_TXN_IN_PROGRESS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_TXN_IN_PROGRESS:
+      reason = "STATUS_FWP_TXN_IN_PROGRESS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_TXN_ABORTED:
+      reason = "STATUS_FWP_TXN_ABORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_SESSION_ABORTED:
+      reason = "STATUS_FWP_SESSION_ABORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_INCOMPATIBLE_TXN:
+      reason = "STATUS_FWP_INCOMPATIBLE_TXN";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_TIMEOUT:
+      reason = "STATUS_FWP_TIMEOUT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_NET_EVENTS_DISABLED:
+      reason = "STATUS_FWP_NET_EVENTS_DISABLED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_INCOMPATIBLE_LAYER:
+      reason = "STATUS_FWP_INCOMPATIBLE_LAYER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_KM_CLIENTS_ONLY:
+      reason = "STATUS_FWP_KM_CLIENTS_ONLY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_LIFETIME_MISMATCH:
+      reason = "STATUS_FWP_LIFETIME_MISMATCH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_BUILTIN_OBJECT:
+      reason = "STATUS_FWP_BUILTIN_OBJECT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_TOO_MANY_CALLOUTS:
+      reason = "STATUS_FWP_TOO_MANY_CALLOUTS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_NOTIFICATION_DROPPED:
+      reason = "STATUS_FWP_NOTIFICATION_DROPPED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_TRAFFIC_MISMATCH:
+      reason = "STATUS_FWP_TRAFFIC_MISMATCH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_INCOMPATIBLE_SA_STATE:
+      reason = "STATUS_FWP_INCOMPATIBLE_SA_STATE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_NULL_POINTER:
+      reason = "STATUS_FWP_NULL_POINTER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_INVALID_ENUMERATOR:
+      reason = "STATUS_FWP_INVALID_ENUMERATOR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_INVALID_FLAGS:
+      reason = "STATUS_FWP_INVALID_FLAGS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_INVALID_NET_MASK:
+      reason = "STATUS_FWP_INVALID_NET_MASK";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_INVALID_RANGE:
+      reason = "STATUS_FWP_INVALID_RANGE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_INVALID_INTERVAL:
+      reason = "STATUS_FWP_INVALID_INTERVAL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_ZERO_LENGTH_ARRAY:
+      reason = "STATUS_FWP_ZERO_LENGTH_ARRAY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_NULL_DISPLAY_NAME:
+      reason = "STATUS_FWP_NULL_DISPLAY_NAME";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_INVALID_ACTION_TYPE:
+      reason = "STATUS_FWP_INVALID_ACTION_TYPE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_INVALID_WEIGHT:
+      reason = "STATUS_FWP_INVALID_WEIGHT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_MATCH_TYPE_MISMATCH:
+      reason = "STATUS_FWP_MATCH_TYPE_MISMATCH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_TYPE_MISMATCH:
+      reason = "STATUS_FWP_TYPE_MISMATCH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_OUT_OF_BOUNDS:
+      reason = "STATUS_FWP_OUT_OF_BOUNDS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_RESERVED:
+      reason = "STATUS_FWP_RESERVED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_DUPLICATE_CONDITION:
+      reason = "STATUS_FWP_DUPLICATE_CONDITION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_DUPLICATE_KEYMOD:
+      reason = "STATUS_FWP_DUPLICATE_KEYMOD";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_ACTION_INCOMPATIBLE_WITH_LAYER:
+      reason = "STATUS_FWP_ACTION_INCOMPATIBLE_WITH_LAYER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_ACTION_INCOMPATIBLE_WITH_SUBLAYER:
+      reason = "STATUS_FWP_ACTION_INCOMPATIBLE_WITH_SUBLAYER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_CONTEXT_INCOMPATIBLE_WITH_LAYER:
+      reason = "STATUS_FWP_CONTEXT_INCOMPATIBLE_WITH_LAYER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_CONTEXT_INCOMPATIBLE_WITH_CALLOUT:
+      reason = "STATUS_FWP_CONTEXT_INCOMPATIBLE_WITH_CALLOUT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_INCOMPATIBLE_AUTH_METHOD:
+      reason = "STATUS_FWP_INCOMPATIBLE_AUTH_METHOD";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_INCOMPATIBLE_DH_GROUP:
+      reason = "STATUS_FWP_INCOMPATIBLE_DH_GROUP";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_EM_NOT_SUPPORTED:
+      reason = "STATUS_FWP_EM_NOT_SUPPORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_NEVER_MATCH:
+      reason = "STATUS_FWP_NEVER_MATCH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_PROVIDER_CONTEXT_MISMATCH:
+      reason = "STATUS_FWP_PROVIDER_CONTEXT_MISMATCH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_INVALID_PARAMETER:
+      reason = "STATUS_FWP_INVALID_PARAMETER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_TOO_MANY_SUBLAYERS:
+      reason = "STATUS_FWP_TOO_MANY_SUBLAYERS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_CALLOUT_NOTIFICATION_FAILED:
+      reason = "STATUS_FWP_CALLOUT_NOTIFICATION_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_INVALID_AUTH_TRANSFORM:
+      reason = "STATUS_FWP_INVALID_AUTH_TRANSFORM";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_INVALID_CIPHER_TRANSFORM:
+      reason = "STATUS_FWP_INVALID_CIPHER_TRANSFORM";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_INCOMPATIBLE_CIPHER_TRANSFORM:
+      reason = "STATUS_FWP_INCOMPATIBLE_CIPHER_TRANSFORM";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_INVALID_TRANSFORM_COMBINATION:
+      reason = "STATUS_FWP_INVALID_TRANSFORM_COMBINATION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_DUPLICATE_AUTH_METHOD:
+      reason = "STATUS_FWP_DUPLICATE_AUTH_METHOD";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_INVALID_TUNNEL_ENDPOINT:
+      reason = "STATUS_FWP_INVALID_TUNNEL_ENDPOINT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_L2_DRIVER_NOT_READY:
+      reason = "STATUS_FWP_L2_DRIVER_NOT_READY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_KEY_DICTATOR_ALREADY_REGISTERED:
+      reason = "STATUS_FWP_KEY_DICTATOR_ALREADY_REGISTERED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_KEY_DICTATION_INVALID_KEYING_MATERIAL:
+      reason = "STATUS_FWP_KEY_DICTATION_INVALID_KEYING_MATERIAL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_CONNECTIONS_DISABLED:
+      reason = "STATUS_FWP_CONNECTIONS_DISABLED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_INVALID_DNS_NAME:
+      reason = "STATUS_FWP_INVALID_DNS_NAME";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_STILL_ON:
+      reason = "STATUS_FWP_STILL_ON";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_IKEEXT_NOT_RUNNING:
+      reason = "STATUS_FWP_IKEEXT_NOT_RUNNING";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_TCPIP_NOT_READY:
+      reason = "STATUS_FWP_TCPIP_NOT_READY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_INJECT_HANDLE_CLOSING:
+      reason = "STATUS_FWP_INJECT_HANDLE_CLOSING";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_INJECT_HANDLE_STALE:
+      reason = "STATUS_FWP_INJECT_HANDLE_STALE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_CANNOT_PEND:
+      reason = "STATUS_FWP_CANNOT_PEND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_FWP_DROP_NOICMP:
+      reason = "STATUS_FWP_DROP_NOICMP";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NDIS_CLOSING:
+      reason = "STATUS_NDIS_CLOSING";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NDIS_BAD_VERSION:
+      reason = "STATUS_NDIS_BAD_VERSION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NDIS_BAD_CHARACTERISTICS:
+      reason = "STATUS_NDIS_BAD_CHARACTERISTICS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NDIS_ADAPTER_NOT_FOUND:
+      reason = "STATUS_NDIS_ADAPTER_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NDIS_OPEN_FAILED:
+      reason = "STATUS_NDIS_OPEN_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NDIS_DEVICE_FAILED:
+      reason = "STATUS_NDIS_DEVICE_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NDIS_MULTICAST_FULL:
+      reason = "STATUS_NDIS_MULTICAST_FULL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NDIS_MULTICAST_EXISTS:
+      reason = "STATUS_NDIS_MULTICAST_EXISTS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NDIS_MULTICAST_NOT_FOUND:
+      reason = "STATUS_NDIS_MULTICAST_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NDIS_REQUEST_ABORTED:
+      reason = "STATUS_NDIS_REQUEST_ABORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NDIS_RESET_IN_PROGRESS:
+      reason = "STATUS_NDIS_RESET_IN_PROGRESS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NDIS_INVALID_PACKET:
+      reason = "STATUS_NDIS_INVALID_PACKET";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NDIS_INVALID_DEVICE_REQUEST:
+      reason = "STATUS_NDIS_INVALID_DEVICE_REQUEST";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NDIS_ADAPTER_NOT_READY:
+      reason = "STATUS_NDIS_ADAPTER_NOT_READY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NDIS_INVALID_LENGTH:
+      reason = "STATUS_NDIS_INVALID_LENGTH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NDIS_INVALID_DATA:
+      reason = "STATUS_NDIS_INVALID_DATA";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NDIS_BUFFER_TOO_SHORT:
+      reason = "STATUS_NDIS_BUFFER_TOO_SHORT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NDIS_INVALID_OID:
+      reason = "STATUS_NDIS_INVALID_OID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NDIS_ADAPTER_REMOVED:
+      reason = "STATUS_NDIS_ADAPTER_REMOVED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NDIS_UNSUPPORTED_MEDIA:
+      reason = "STATUS_NDIS_UNSUPPORTED_MEDIA";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NDIS_GROUP_ADDRESS_IN_USE:
+      reason = "STATUS_NDIS_GROUP_ADDRESS_IN_USE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NDIS_FILE_NOT_FOUND:
+      reason = "STATUS_NDIS_FILE_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NDIS_ERROR_READING_FILE:
+      reason = "STATUS_NDIS_ERROR_READING_FILE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NDIS_ALREADY_MAPPED:
+      reason = "STATUS_NDIS_ALREADY_MAPPED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NDIS_RESOURCE_CONFLICT:
+      reason = "STATUS_NDIS_RESOURCE_CONFLICT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NDIS_MEDIA_DISCONNECTED:
+      reason = "STATUS_NDIS_MEDIA_DISCONNECTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NDIS_INVALID_ADDRESS:
+      reason = "STATUS_NDIS_INVALID_ADDRESS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NDIS_PAUSED:
+      reason = "STATUS_NDIS_PAUSED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NDIS_INTERFACE_NOT_FOUND:
+      reason = "STATUS_NDIS_INTERFACE_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NDIS_UNSUPPORTED_REVISION:
+      reason = "STATUS_NDIS_UNSUPPORTED_REVISION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NDIS_INVALID_PORT:
+      reason = "STATUS_NDIS_INVALID_PORT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NDIS_INVALID_PORT_STATE:
+      reason = "STATUS_NDIS_INVALID_PORT_STATE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NDIS_LOW_POWER_STATE:
+      reason = "STATUS_NDIS_LOW_POWER_STATE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NDIS_REINIT_REQUIRED:
+      reason = "STATUS_NDIS_REINIT_REQUIRED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NDIS_NOT_SUPPORTED:
+      reason = "STATUS_NDIS_NOT_SUPPORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NDIS_OFFLOAD_POLICY:
+      reason = "STATUS_NDIS_OFFLOAD_POLICY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NDIS_OFFLOAD_CONNECTION_REJECTED:
+      reason = "STATUS_NDIS_OFFLOAD_CONNECTION_REJECTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NDIS_OFFLOAD_PATH_REJECTED:
+      reason = "STATUS_NDIS_OFFLOAD_PATH_REJECTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NDIS_DOT11_AUTO_CONFIG_ENABLED:
+      reason = "STATUS_NDIS_DOT11_AUTO_CONFIG_ENABLED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NDIS_DOT11_MEDIA_IN_USE:
+      reason = "STATUS_NDIS_DOT11_MEDIA_IN_USE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NDIS_DOT11_POWER_STATE_INVALID:
+      reason = "STATUS_NDIS_DOT11_POWER_STATE_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NDIS_PM_WOL_PATTERN_LIST_FULL:
+      reason = "STATUS_NDIS_PM_WOL_PATTERN_LIST_FULL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_NDIS_PM_PROTOCOL_OFFLOAD_LIST_FULL:
+      reason = "STATUS_NDIS_PM_PROTOCOL_OFFLOAD_LIST_FULL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_ERROR_MASK:
+      reason = "STATUS_TPM_ERROR_MASK";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_AUTHFAIL:
+      reason = "STATUS_TPM_AUTHFAIL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_BADINDEX:
+      reason = "STATUS_TPM_BADINDEX";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_BAD_PARAMETER:
+      reason = "STATUS_TPM_BAD_PARAMETER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_AUDITFAILURE:
+      reason = "STATUS_TPM_AUDITFAILURE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_CLEAR_DISABLED:
+      reason = "STATUS_TPM_CLEAR_DISABLED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_DEACTIVATED:
+      reason = "STATUS_TPM_DEACTIVATED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_DISABLED:
+      reason = "STATUS_TPM_DISABLED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_DISABLED_CMD:
+      reason = "STATUS_TPM_DISABLED_CMD";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_FAIL:
+      reason = "STATUS_TPM_FAIL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_BAD_ORDINAL:
+      reason = "STATUS_TPM_BAD_ORDINAL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_INSTALL_DISABLED:
+      reason = "STATUS_TPM_INSTALL_DISABLED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_INVALID_KEYHANDLE:
+      reason = "STATUS_TPM_INVALID_KEYHANDLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_KEYNOTFOUND:
+      reason = "STATUS_TPM_KEYNOTFOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_INAPPROPRIATE_ENC:
+      reason = "STATUS_TPM_INAPPROPRIATE_ENC";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_MIGRATEFAIL:
+      reason = "STATUS_TPM_MIGRATEFAIL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_INVALID_PCR_INFO:
+      reason = "STATUS_TPM_INVALID_PCR_INFO";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_NOSPACE:
+      reason = "STATUS_TPM_NOSPACE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_NOSRK:
+      reason = "STATUS_TPM_NOSRK";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_NOTSEALED_BLOB:
+      reason = "STATUS_TPM_NOTSEALED_BLOB";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_OWNER_SET:
+      reason = "STATUS_TPM_OWNER_SET";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_RESOURCES:
+      reason = "STATUS_TPM_RESOURCES";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_SHORTRANDOM:
+      reason = "STATUS_TPM_SHORTRANDOM";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_SIZE:
+      reason = "STATUS_TPM_SIZE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_WRONGPCRVAL:
+      reason = "STATUS_TPM_WRONGPCRVAL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_BAD_PARAM_SIZE:
+      reason = "STATUS_TPM_BAD_PARAM_SIZE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_SHA_THREAD:
+      reason = "STATUS_TPM_SHA_THREAD";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_SHA_ERROR:
+      reason = "STATUS_TPM_SHA_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_FAILEDSELFTEST:
+      reason = "STATUS_TPM_FAILEDSELFTEST";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_AUTH2FAIL:
+      reason = "STATUS_TPM_AUTH2FAIL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_BADTAG:
+      reason = "STATUS_TPM_BADTAG";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_IOERROR:
+      reason = "STATUS_TPM_IOERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_ENCRYPT_ERROR:
+      reason = "STATUS_TPM_ENCRYPT_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_DECRYPT_ERROR:
+      reason = "STATUS_TPM_DECRYPT_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_INVALID_AUTHHANDLE:
+      reason = "STATUS_TPM_INVALID_AUTHHANDLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_NO_ENDORSEMENT:
+      reason = "STATUS_TPM_NO_ENDORSEMENT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_INVALID_KEYUSAGE:
+      reason = "STATUS_TPM_INVALID_KEYUSAGE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_WRONG_ENTITYTYPE:
+      reason = "STATUS_TPM_WRONG_ENTITYTYPE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_INVALID_POSTINIT:
+      reason = "STATUS_TPM_INVALID_POSTINIT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_INAPPROPRIATE_SIG:
+      reason = "STATUS_TPM_INAPPROPRIATE_SIG";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_BAD_KEY_PROPERTY:
+      reason = "STATUS_TPM_BAD_KEY_PROPERTY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_BAD_MIGRATION:
+      reason = "STATUS_TPM_BAD_MIGRATION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_BAD_SCHEME:
+      reason = "STATUS_TPM_BAD_SCHEME";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_BAD_DATASIZE:
+      reason = "STATUS_TPM_BAD_DATASIZE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_BAD_MODE:
+      reason = "STATUS_TPM_BAD_MODE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_BAD_PRESENCE:
+      reason = "STATUS_TPM_BAD_PRESENCE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_BAD_VERSION:
+      reason = "STATUS_TPM_BAD_VERSION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_NO_WRAP_TRANSPORT:
+      reason = "STATUS_TPM_NO_WRAP_TRANSPORT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_AUDITFAIL_UNSUCCESSFUL:
+      reason = "STATUS_TPM_AUDITFAIL_UNSUCCESSFUL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_AUDITFAIL_SUCCESSFUL:
+      reason = "STATUS_TPM_AUDITFAIL_SUCCESSFUL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_NOTRESETABLE:
+      reason = "STATUS_TPM_NOTRESETABLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_NOTLOCAL:
+      reason = "STATUS_TPM_NOTLOCAL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_BAD_TYPE:
+      reason = "STATUS_TPM_BAD_TYPE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_INVALID_RESOURCE:
+      reason = "STATUS_TPM_INVALID_RESOURCE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_NOTFIPS:
+      reason = "STATUS_TPM_NOTFIPS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_INVALID_FAMILY:
+      reason = "STATUS_TPM_INVALID_FAMILY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_NO_NV_PERMISSION:
+      reason = "STATUS_TPM_NO_NV_PERMISSION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_REQUIRES_SIGN:
+      reason = "STATUS_TPM_REQUIRES_SIGN";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_KEY_NOTSUPPORTED:
+      reason = "STATUS_TPM_KEY_NOTSUPPORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_AUTH_CONFLICT:
+      reason = "STATUS_TPM_AUTH_CONFLICT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_AREA_LOCKED:
+      reason = "STATUS_TPM_AREA_LOCKED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_BAD_LOCALITY:
+      reason = "STATUS_TPM_BAD_LOCALITY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_READ_ONLY:
+      reason = "STATUS_TPM_READ_ONLY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_PER_NOWRITE:
+      reason = "STATUS_TPM_PER_NOWRITE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_FAMILYCOUNT:
+      reason = "STATUS_TPM_FAMILYCOUNT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_WRITE_LOCKED:
+      reason = "STATUS_TPM_WRITE_LOCKED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_BAD_ATTRIBUTES:
+      reason = "STATUS_TPM_BAD_ATTRIBUTES";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_INVALID_STRUCTURE:
+      reason = "STATUS_TPM_INVALID_STRUCTURE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_KEY_OWNER_CONTROL:
+      reason = "STATUS_TPM_KEY_OWNER_CONTROL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_BAD_COUNTER:
+      reason = "STATUS_TPM_BAD_COUNTER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_NOT_FULLWRITE:
+      reason = "STATUS_TPM_NOT_FULLWRITE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_CONTEXT_GAP:
+      reason = "STATUS_TPM_CONTEXT_GAP";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_MAXNVWRITES:
+      reason = "STATUS_TPM_MAXNVWRITES";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_NOOPERATOR:
+      reason = "STATUS_TPM_NOOPERATOR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_RESOURCEMISSING:
+      reason = "STATUS_TPM_RESOURCEMISSING";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_DELEGATE_LOCK:
+      reason = "STATUS_TPM_DELEGATE_LOCK";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_DELEGATE_FAMILY:
+      reason = "STATUS_TPM_DELEGATE_FAMILY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_DELEGATE_ADMIN:
+      reason = "STATUS_TPM_DELEGATE_ADMIN";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_TRANSPORT_NOTEXCLUSIVE:
+      reason = "STATUS_TPM_TRANSPORT_NOTEXCLUSIVE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_OWNER_CONTROL:
+      reason = "STATUS_TPM_OWNER_CONTROL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_DAA_RESOURCES:
+      reason = "STATUS_TPM_DAA_RESOURCES";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_DAA_INPUT_DATA0:
+      reason = "STATUS_TPM_DAA_INPUT_DATA0";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_DAA_INPUT_DATA1:
+      reason = "STATUS_TPM_DAA_INPUT_DATA1";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_DAA_ISSUER_SETTINGS:
+      reason = "STATUS_TPM_DAA_ISSUER_SETTINGS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_DAA_TPM_SETTINGS:
+      reason = "STATUS_TPM_DAA_TPM_SETTINGS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_DAA_STAGE:
+      reason = "STATUS_TPM_DAA_STAGE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_DAA_ISSUER_VALIDITY:
+      reason = "STATUS_TPM_DAA_ISSUER_VALIDITY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_DAA_WRONG_W:
+      reason = "STATUS_TPM_DAA_WRONG_W";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_BAD_HANDLE:
+      reason = "STATUS_TPM_BAD_HANDLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_BAD_DELEGATE:
+      reason = "STATUS_TPM_BAD_DELEGATE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_BADCONTEXT:
+      reason = "STATUS_TPM_BADCONTEXT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_TOOMANYCONTEXTS:
+      reason = "STATUS_TPM_TOOMANYCONTEXTS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_MA_TICKET_SIGNATURE:
+      reason = "STATUS_TPM_MA_TICKET_SIGNATURE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_MA_DESTINATION:
+      reason = "STATUS_TPM_MA_DESTINATION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_MA_SOURCE:
+      reason = "STATUS_TPM_MA_SOURCE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_MA_AUTHORITY:
+      reason = "STATUS_TPM_MA_AUTHORITY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_PERMANENTEK:
+      reason = "STATUS_TPM_PERMANENTEK";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_BAD_SIGNATURE:
+      reason = "STATUS_TPM_BAD_SIGNATURE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_NOCONTEXTSPACE:
+      reason = "STATUS_TPM_NOCONTEXTSPACE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_COMMAND_BLOCKED:
+      reason = "STATUS_TPM_COMMAND_BLOCKED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_INVALID_HANDLE:
+      reason = "STATUS_TPM_INVALID_HANDLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_DUPLICATE_VHANDLE:
+      reason = "STATUS_TPM_DUPLICATE_VHANDLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_EMBEDDED_COMMAND_BLOCKED:
+      reason = "STATUS_TPM_EMBEDDED_COMMAND_BLOCKED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_EMBEDDED_COMMAND_UNSUPPORTED:
+      reason = "STATUS_TPM_EMBEDDED_COMMAND_UNSUPPORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_RETRY:
+      reason = "STATUS_TPM_RETRY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_NEEDS_SELFTEST:
+      reason = "STATUS_TPM_NEEDS_SELFTEST";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_DOING_SELFTEST:
+      reason = "STATUS_TPM_DOING_SELFTEST";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_DEFEND_LOCK_RUNNING:
+      reason = "STATUS_TPM_DEFEND_LOCK_RUNNING";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_COMMAND_CANCELED:
+      reason = "STATUS_TPM_COMMAND_CANCELED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_TOO_MANY_CONTEXTS:
+      reason = "STATUS_TPM_TOO_MANY_CONTEXTS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_NOT_FOUND:
+      reason = "STATUS_TPM_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_ACCESS_DENIED:
+      reason = "STATUS_TPM_ACCESS_DENIED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_INSUFFICIENT_BUFFER:
+      reason = "STATUS_TPM_INSUFFICIENT_BUFFER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_TPM_PPI_FUNCTION_UNSUPPORTED:
+      reason = "STATUS_TPM_PPI_FUNCTION_UNSUPPORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PCP_ERROR_MASK:
+      reason = "STATUS_PCP_ERROR_MASK";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PCP_DEVICE_NOT_READY:
+      reason = "STATUS_PCP_DEVICE_NOT_READY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PCP_INVALID_HANDLE:
+      reason = "STATUS_PCP_INVALID_HANDLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PCP_INVALID_PARAMETER:
+      reason = "STATUS_PCP_INVALID_PARAMETER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PCP_FLAG_NOT_SUPPORTED:
+      reason = "STATUS_PCP_FLAG_NOT_SUPPORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PCP_NOT_SUPPORTED:
+      reason = "STATUS_PCP_NOT_SUPPORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PCP_BUFFER_TOO_SMALL:
+      reason = "STATUS_PCP_BUFFER_TOO_SMALL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PCP_INTERNAL_ERROR:
+      reason = "STATUS_PCP_INTERNAL_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PCP_AUTHENTICATION_FAILED:
+      reason = "STATUS_PCP_AUTHENTICATION_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PCP_AUTHENTICATION_IGNORED:
+      reason = "STATUS_PCP_AUTHENTICATION_IGNORED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PCP_POLICY_NOT_FOUND:
+      reason = "STATUS_PCP_POLICY_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PCP_PROFILE_NOT_FOUND:
+      reason = "STATUS_PCP_PROFILE_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PCP_VALIDATION_FAILED:
+      reason = "STATUS_PCP_VALIDATION_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_PCP_DEVICE_NOT_FOUND:
+      reason = "STATUS_PCP_DEVICE_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_HV_INVALID_HYPERCALL_CODE:
+      reason = "STATUS_HV_INVALID_HYPERCALL_CODE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_HV_INVALID_HYPERCALL_INPUT:
+      reason = "STATUS_HV_INVALID_HYPERCALL_INPUT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_HV_INVALID_ALIGNMENT:
+      reason = "STATUS_HV_INVALID_ALIGNMENT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_HV_INVALID_PARAMETER:
+      reason = "STATUS_HV_INVALID_PARAMETER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_HV_ACCESS_DENIED:
+      reason = "STATUS_HV_ACCESS_DENIED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_HV_INVALID_PARTITION_STATE:
+      reason = "STATUS_HV_INVALID_PARTITION_STATE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_HV_OPERATION_DENIED:
+      reason = "STATUS_HV_OPERATION_DENIED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_HV_UNKNOWN_PROPERTY:
+      reason = "STATUS_HV_UNKNOWN_PROPERTY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_HV_PROPERTY_VALUE_OUT_OF_RANGE:
+      reason = "STATUS_HV_PROPERTY_VALUE_OUT_OF_RANGE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_HV_INSUFFICIENT_MEMORY:
+      reason = "STATUS_HV_INSUFFICIENT_MEMORY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_HV_PARTITION_TOO_DEEP:
+      reason = "STATUS_HV_PARTITION_TOO_DEEP";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_HV_INVALID_PARTITION_ID:
+      reason = "STATUS_HV_INVALID_PARTITION_ID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_HV_INVALID_VP_INDEX:
+      reason = "STATUS_HV_INVALID_VP_INDEX";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_HV_INVALID_PORT_ID:
+      reason = "STATUS_HV_INVALID_PORT_ID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_HV_INVALID_CONNECTION_ID:
+      reason = "STATUS_HV_INVALID_CONNECTION_ID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_HV_INSUFFICIENT_BUFFERS:
+      reason = "STATUS_HV_INSUFFICIENT_BUFFERS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_HV_NOT_ACKNOWLEDGED:
+      reason = "STATUS_HV_NOT_ACKNOWLEDGED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_HV_ACKNOWLEDGED:
+      reason = "STATUS_HV_ACKNOWLEDGED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_HV_INVALID_SAVE_RESTORE_STATE:
+      reason = "STATUS_HV_INVALID_SAVE_RESTORE_STATE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_HV_INVALID_SYNIC_STATE:
+      reason = "STATUS_HV_INVALID_SYNIC_STATE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_HV_OBJECT_IN_USE:
+      reason = "STATUS_HV_OBJECT_IN_USE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_HV_INVALID_PROXIMITY_DOMAIN_INFO:
+      reason = "STATUS_HV_INVALID_PROXIMITY_DOMAIN_INFO";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_HV_NO_DATA:
+      reason = "STATUS_HV_NO_DATA";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_HV_INACTIVE:
+      reason = "STATUS_HV_INACTIVE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_HV_NO_RESOURCES:
+      reason = "STATUS_HV_NO_RESOURCES";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_HV_FEATURE_UNAVAILABLE:
+      reason = "STATUS_HV_FEATURE_UNAVAILABLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_HV_INSUFFICIENT_BUFFER:
+      reason = "STATUS_HV_INSUFFICIENT_BUFFER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_HV_INSUFFICIENT_DEVICE_DOMAINS:
+      reason = "STATUS_HV_INSUFFICIENT_DEVICE_DOMAINS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_HV_INVALID_LP_INDEX:
+      reason = "STATUS_HV_INVALID_LP_INDEX";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_HV_NOT_PRESENT:
+      reason = "STATUS_HV_NOT_PRESENT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_IPSEC_BAD_SPI:
+      reason = "STATUS_IPSEC_BAD_SPI";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_IPSEC_SA_LIFETIME_EXPIRED:
+      reason = "STATUS_IPSEC_SA_LIFETIME_EXPIRED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_IPSEC_WRONG_SA:
+      reason = "STATUS_IPSEC_WRONG_SA";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_IPSEC_REPLAY_CHECK_FAILED:
+      reason = "STATUS_IPSEC_REPLAY_CHECK_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_IPSEC_INVALID_PACKET:
+      reason = "STATUS_IPSEC_INVALID_PACKET";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_IPSEC_INTEGRITY_CHECK_FAILED:
+      reason = "STATUS_IPSEC_INTEGRITY_CHECK_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_IPSEC_CLEAR_TEXT_DROP:
+      reason = "STATUS_IPSEC_CLEAR_TEXT_DROP";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_IPSEC_AUTH_FIREWALL_DROP:
+      reason = "STATUS_IPSEC_AUTH_FIREWALL_DROP";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_IPSEC_THROTTLE_DROP:
+      reason = "STATUS_IPSEC_THROTTLE_DROP";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_IPSEC_DOSP_BLOCK:
+      reason = "STATUS_IPSEC_DOSP_BLOCK";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_IPSEC_DOSP_RECEIVED_MULTICAST:
+      reason = "STATUS_IPSEC_DOSP_RECEIVED_MULTICAST";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_IPSEC_DOSP_INVALID_PACKET:
+      reason = "STATUS_IPSEC_DOSP_INVALID_PACKET";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_IPSEC_DOSP_STATE_LOOKUP_FAILED:
+      reason = "STATUS_IPSEC_DOSP_STATE_LOOKUP_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_IPSEC_DOSP_MAX_ENTRIES:
+      reason = "STATUS_IPSEC_DOSP_MAX_ENTRIES";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_IPSEC_DOSP_KEYMOD_NOT_ALLOWED:
+      reason = "STATUS_IPSEC_DOSP_KEYMOD_NOT_ALLOWED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_IPSEC_DOSP_MAX_PER_IP_RATELIMIT_QUEUES:
+      reason = "STATUS_IPSEC_DOSP_MAX_PER_IP_RATELIMIT_QUEUES";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VID_DUPLICATE_HANDLER:
+      reason = "STATUS_VID_DUPLICATE_HANDLER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VID_TOO_MANY_HANDLERS:
+      reason = "STATUS_VID_TOO_MANY_HANDLERS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VID_QUEUE_FULL:
+      reason = "STATUS_VID_QUEUE_FULL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VID_HANDLER_NOT_PRESENT:
+      reason = "STATUS_VID_HANDLER_NOT_PRESENT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VID_INVALID_OBJECT_NAME:
+      reason = "STATUS_VID_INVALID_OBJECT_NAME";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VID_PARTITION_NAME_TOO_LONG:
+      reason = "STATUS_VID_PARTITION_NAME_TOO_LONG";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VID_MESSAGE_QUEUE_NAME_TOO_LONG:
+      reason = "STATUS_VID_MESSAGE_QUEUE_NAME_TOO_LONG";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VID_PARTITION_ALREADY_EXISTS:
+      reason = "STATUS_VID_PARTITION_ALREADY_EXISTS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VID_PARTITION_DOES_NOT_EXIST:
+      reason = "STATUS_VID_PARTITION_DOES_NOT_EXIST";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VID_PARTITION_NAME_NOT_FOUND:
+      reason = "STATUS_VID_PARTITION_NAME_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VID_MESSAGE_QUEUE_ALREADY_EXISTS:
+      reason = "STATUS_VID_MESSAGE_QUEUE_ALREADY_EXISTS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VID_EXCEEDED_MBP_ENTRY_MAP_LIMIT:
+      reason = "STATUS_VID_EXCEEDED_MBP_ENTRY_MAP_LIMIT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VID_MB_STILL_REFERENCED:
+      reason = "STATUS_VID_MB_STILL_REFERENCED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VID_CHILD_GPA_PAGE_SET_CORRUPTED:
+      reason = "STATUS_VID_CHILD_GPA_PAGE_SET_CORRUPTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VID_INVALID_NUMA_SETTINGS:
+      reason = "STATUS_VID_INVALID_NUMA_SETTINGS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VID_INVALID_NUMA_NODE_INDEX:
+      reason = "STATUS_VID_INVALID_NUMA_NODE_INDEX";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VID_NOTIFICATION_QUEUE_ALREADY_ASSOCIATED:
+      reason = "STATUS_VID_NOTIFICATION_QUEUE_ALREADY_ASSOCIATED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VID_INVALID_MEMORY_BLOCK_HANDLE:
+      reason = "STATUS_VID_INVALID_MEMORY_BLOCK_HANDLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VID_PAGE_RANGE_OVERFLOW:
+      reason = "STATUS_VID_PAGE_RANGE_OVERFLOW";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VID_INVALID_MESSAGE_QUEUE_HANDLE:
+      reason = "STATUS_VID_INVALID_MESSAGE_QUEUE_HANDLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VID_INVALID_GPA_RANGE_HANDLE:
+      reason = "STATUS_VID_INVALID_GPA_RANGE_HANDLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VID_NO_MEMORY_BLOCK_NOTIFICATION_QUEUE:
+      reason = "STATUS_VID_NO_MEMORY_BLOCK_NOTIFICATION_QUEUE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VID_MEMORY_BLOCK_LOCK_COUNT_EXCEEDED:
+      reason = "STATUS_VID_MEMORY_BLOCK_LOCK_COUNT_EXCEEDED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VID_INVALID_PPM_HANDLE:
+      reason = "STATUS_VID_INVALID_PPM_HANDLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VID_MBPS_ARE_LOCKED:
+      reason = "STATUS_VID_MBPS_ARE_LOCKED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VID_MESSAGE_QUEUE_CLOSED:
+      reason = "STATUS_VID_MESSAGE_QUEUE_CLOSED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VID_VIRTUAL_PROCESSOR_LIMIT_EXCEEDED:
+      reason = "STATUS_VID_VIRTUAL_PROCESSOR_LIMIT_EXCEEDED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VID_STOP_PENDING:
+      reason = "STATUS_VID_STOP_PENDING";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VID_INVALID_PROCESSOR_STATE:
+      reason = "STATUS_VID_INVALID_PROCESSOR_STATE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VID_EXCEEDED_KM_CONTEXT_COUNT_LIMIT:
+      reason = "STATUS_VID_EXCEEDED_KM_CONTEXT_COUNT_LIMIT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VID_KM_INTERFACE_ALREADY_INITIALIZED:
+      reason = "STATUS_VID_KM_INTERFACE_ALREADY_INITIALIZED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VID_MB_PROPERTY_ALREADY_SET_RESET:
+      reason = "STATUS_VID_MB_PROPERTY_ALREADY_SET_RESET";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VID_MMIO_RANGE_DESTROYED:
+      reason = "STATUS_VID_MMIO_RANGE_DESTROYED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VID_INVALID_CHILD_GPA_PAGE_SET:
+      reason = "STATUS_VID_INVALID_CHILD_GPA_PAGE_SET";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VID_RESERVE_PAGE_SET_IS_BEING_USED:
+      reason = "STATUS_VID_RESERVE_PAGE_SET_IS_BEING_USED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VID_RESERVE_PAGE_SET_TOO_SMALL:
+      reason = "STATUS_VID_RESERVE_PAGE_SET_TOO_SMALL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VID_MBP_ALREADY_LOCKED_USING_RESERVED_PAGE:
+      reason = "STATUS_VID_MBP_ALREADY_LOCKED_USING_RESERVED_PAGE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VID_MBP_COUNT_EXCEEDED_LIMIT:
+      reason = "STATUS_VID_MBP_COUNT_EXCEEDED_LIMIT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VID_SAVED_STATE_CORRUPT:
+      reason = "STATUS_VID_SAVED_STATE_CORRUPT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VID_SAVED_STATE_UNRECOGNIZED_ITEM:
+      reason = "STATUS_VID_SAVED_STATE_UNRECOGNIZED_ITEM";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VID_SAVED_STATE_INCOMPATIBLE:
+      reason = "STATUS_VID_SAVED_STATE_INCOMPATIBLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_DATABASE_FULL:
+      reason = "STATUS_VOLMGR_DATABASE_FULL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_DISK_CONFIGURATION_CORRUPTED:
+      reason = "STATUS_VOLMGR_DISK_CONFIGURATION_CORRUPTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_DISK_CONFIGURATION_NOT_IN_SYNC:
+      reason = "STATUS_VOLMGR_DISK_CONFIGURATION_NOT_IN_SYNC";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_PACK_CONFIG_UPDATE_FAILED:
+      reason = "STATUS_VOLMGR_PACK_CONFIG_UPDATE_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_DISK_CONTAINS_NON_SIMPLE_VOLUME:
+      reason = "STATUS_VOLMGR_DISK_CONTAINS_NON_SIMPLE_VOLUME";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_DISK_DUPLICATE:
+      reason = "STATUS_VOLMGR_DISK_DUPLICATE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_DISK_DYNAMIC:
+      reason = "STATUS_VOLMGR_DISK_DYNAMIC";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_DISK_ID_INVALID:
+      reason = "STATUS_VOLMGR_DISK_ID_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_DISK_INVALID:
+      reason = "STATUS_VOLMGR_DISK_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_DISK_LAST_VOTER:
+      reason = "STATUS_VOLMGR_DISK_LAST_VOTER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_DISK_LAYOUT_INVALID:
+      reason = "STATUS_VOLMGR_DISK_LAYOUT_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_DISK_LAYOUT_NON_BASIC_BETWEEN_BASIC_PARTITIONS:
+      reason = "STATUS_VOLMGR_DISK_LAYOUT_NON_BASIC_BETWEEN_BASIC_PARTITIONS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_DISK_LAYOUT_NOT_CYLINDER_ALIGNED:
+      reason = "STATUS_VOLMGR_DISK_LAYOUT_NOT_CYLINDER_ALIGNED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_DISK_LAYOUT_PARTITIONS_TOO_SMALL:
+      reason = "STATUS_VOLMGR_DISK_LAYOUT_PARTITIONS_TOO_SMALL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_DISK_LAYOUT_PRIMARY_BETWEEN_LOGICAL_PARTITIONS:
+      reason = "STATUS_VOLMGR_DISK_LAYOUT_PRIMARY_BETWEEN_LOGICAL_PARTITIONS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_DISK_LAYOUT_TOO_MANY_PARTITIONS:
+      reason = "STATUS_VOLMGR_DISK_LAYOUT_TOO_MANY_PARTITIONS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_DISK_MISSING:
+      reason = "STATUS_VOLMGR_DISK_MISSING";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_DISK_NOT_EMPTY:
+      reason = "STATUS_VOLMGR_DISK_NOT_EMPTY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_DISK_NOT_ENOUGH_SPACE:
+      reason = "STATUS_VOLMGR_DISK_NOT_ENOUGH_SPACE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_DISK_REVECTORING_FAILED:
+      reason = "STATUS_VOLMGR_DISK_REVECTORING_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_DISK_SECTOR_SIZE_INVALID:
+      reason = "STATUS_VOLMGR_DISK_SECTOR_SIZE_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_DISK_SET_NOT_CONTAINED:
+      reason = "STATUS_VOLMGR_DISK_SET_NOT_CONTAINED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_DISK_USED_BY_MULTIPLE_MEMBERS:
+      reason = "STATUS_VOLMGR_DISK_USED_BY_MULTIPLE_MEMBERS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_DISK_USED_BY_MULTIPLE_PLEXES:
+      reason = "STATUS_VOLMGR_DISK_USED_BY_MULTIPLE_PLEXES";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_DYNAMIC_DISK_NOT_SUPPORTED:
+      reason = "STATUS_VOLMGR_DYNAMIC_DISK_NOT_SUPPORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_EXTENT_ALREADY_USED:
+      reason = "STATUS_VOLMGR_EXTENT_ALREADY_USED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_EXTENT_NOT_CONTIGUOUS:
+      reason = "STATUS_VOLMGR_EXTENT_NOT_CONTIGUOUS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_EXTENT_NOT_IN_PUBLIC_REGION:
+      reason = "STATUS_VOLMGR_EXTENT_NOT_IN_PUBLIC_REGION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_EXTENT_NOT_SECTOR_ALIGNED:
+      reason = "STATUS_VOLMGR_EXTENT_NOT_SECTOR_ALIGNED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_EXTENT_OVERLAPS_EBR_PARTITION:
+      reason = "STATUS_VOLMGR_EXTENT_OVERLAPS_EBR_PARTITION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_EXTENT_VOLUME_LENGTHS_DO_NOT_MATCH:
+      reason = "STATUS_VOLMGR_EXTENT_VOLUME_LENGTHS_DO_NOT_MATCH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_FAULT_TOLERANT_NOT_SUPPORTED:
+      reason = "STATUS_VOLMGR_FAULT_TOLERANT_NOT_SUPPORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_INTERLEAVE_LENGTH_INVALID:
+      reason = "STATUS_VOLMGR_INTERLEAVE_LENGTH_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_MAXIMUM_REGISTERED_USERS:
+      reason = "STATUS_VOLMGR_MAXIMUM_REGISTERED_USERS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_MEMBER_IN_SYNC:
+      reason = "STATUS_VOLMGR_MEMBER_IN_SYNC";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_MEMBER_INDEX_DUPLICATE:
+      reason = "STATUS_VOLMGR_MEMBER_INDEX_DUPLICATE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_MEMBER_INDEX_INVALID:
+      reason = "STATUS_VOLMGR_MEMBER_INDEX_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_MEMBER_MISSING:
+      reason = "STATUS_VOLMGR_MEMBER_MISSING";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_MEMBER_NOT_DETACHED:
+      reason = "STATUS_VOLMGR_MEMBER_NOT_DETACHED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_MEMBER_REGENERATING:
+      reason = "STATUS_VOLMGR_MEMBER_REGENERATING";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_ALL_DISKS_FAILED:
+      reason = "STATUS_VOLMGR_ALL_DISKS_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_NO_REGISTERED_USERS:
+      reason = "STATUS_VOLMGR_NO_REGISTERED_USERS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_NO_SUCH_USER:
+      reason = "STATUS_VOLMGR_NO_SUCH_USER";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_NOTIFICATION_RESET:
+      reason = "STATUS_VOLMGR_NOTIFICATION_RESET";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_NUMBER_OF_MEMBERS_INVALID:
+      reason = "STATUS_VOLMGR_NUMBER_OF_MEMBERS_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_NUMBER_OF_PLEXES_INVALID:
+      reason = "STATUS_VOLMGR_NUMBER_OF_PLEXES_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_PACK_DUPLICATE:
+      reason = "STATUS_VOLMGR_PACK_DUPLICATE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_PACK_ID_INVALID:
+      reason = "STATUS_VOLMGR_PACK_ID_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_PACK_INVALID:
+      reason = "STATUS_VOLMGR_PACK_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_PACK_NAME_INVALID:
+      reason = "STATUS_VOLMGR_PACK_NAME_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_PACK_OFFLINE:
+      reason = "STATUS_VOLMGR_PACK_OFFLINE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_PACK_HAS_QUORUM:
+      reason = "STATUS_VOLMGR_PACK_HAS_QUORUM";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_PACK_WITHOUT_QUORUM:
+      reason = "STATUS_VOLMGR_PACK_WITHOUT_QUORUM";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_PARTITION_STYLE_INVALID:
+      reason = "STATUS_VOLMGR_PARTITION_STYLE_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_PARTITION_UPDATE_FAILED:
+      reason = "STATUS_VOLMGR_PARTITION_UPDATE_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_PLEX_IN_SYNC:
+      reason = "STATUS_VOLMGR_PLEX_IN_SYNC";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_PLEX_INDEX_DUPLICATE:
+      reason = "STATUS_VOLMGR_PLEX_INDEX_DUPLICATE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_PLEX_INDEX_INVALID:
+      reason = "STATUS_VOLMGR_PLEX_INDEX_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_PLEX_LAST_ACTIVE:
+      reason = "STATUS_VOLMGR_PLEX_LAST_ACTIVE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_PLEX_MISSING:
+      reason = "STATUS_VOLMGR_PLEX_MISSING";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_PLEX_REGENERATING:
+      reason = "STATUS_VOLMGR_PLEX_REGENERATING";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_PLEX_TYPE_INVALID:
+      reason = "STATUS_VOLMGR_PLEX_TYPE_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_PLEX_NOT_RAID5:
+      reason = "STATUS_VOLMGR_PLEX_NOT_RAID5";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_PLEX_NOT_SIMPLE:
+      reason = "STATUS_VOLMGR_PLEX_NOT_SIMPLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_STRUCTURE_SIZE_INVALID:
+      reason = "STATUS_VOLMGR_STRUCTURE_SIZE_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_TOO_MANY_NOTIFICATION_REQUESTS:
+      reason = "STATUS_VOLMGR_TOO_MANY_NOTIFICATION_REQUESTS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_TRANSACTION_IN_PROGRESS:
+      reason = "STATUS_VOLMGR_TRANSACTION_IN_PROGRESS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_UNEXPECTED_DISK_LAYOUT_CHANGE:
+      reason = "STATUS_VOLMGR_UNEXPECTED_DISK_LAYOUT_CHANGE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_VOLUME_CONTAINS_MISSING_DISK:
+      reason = "STATUS_VOLMGR_VOLUME_CONTAINS_MISSING_DISK";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_VOLUME_ID_INVALID:
+      reason = "STATUS_VOLMGR_VOLUME_ID_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_VOLUME_LENGTH_INVALID:
+      reason = "STATUS_VOLMGR_VOLUME_LENGTH_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_VOLUME_LENGTH_NOT_SECTOR_SIZE_MULTIPLE:
+      reason = "STATUS_VOLMGR_VOLUME_LENGTH_NOT_SECTOR_SIZE_MULTIPLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_VOLUME_NOT_MIRRORED:
+      reason = "STATUS_VOLMGR_VOLUME_NOT_MIRRORED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_VOLUME_NOT_RETAINED:
+      reason = "STATUS_VOLMGR_VOLUME_NOT_RETAINED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_VOLUME_OFFLINE:
+      reason = "STATUS_VOLMGR_VOLUME_OFFLINE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_VOLUME_RETAINED:
+      reason = "STATUS_VOLMGR_VOLUME_RETAINED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_NUMBER_OF_EXTENTS_INVALID:
+      reason = "STATUS_VOLMGR_NUMBER_OF_EXTENTS_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_DIFFERENT_SECTOR_SIZE:
+      reason = "STATUS_VOLMGR_DIFFERENT_SECTOR_SIZE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_BAD_BOOT_DISK:
+      reason = "STATUS_VOLMGR_BAD_BOOT_DISK";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_PACK_CONFIG_OFFLINE:
+      reason = "STATUS_VOLMGR_PACK_CONFIG_OFFLINE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_PACK_CONFIG_ONLINE:
+      reason = "STATUS_VOLMGR_PACK_CONFIG_ONLINE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_NOT_PRIMARY_PACK:
+      reason = "STATUS_VOLMGR_NOT_PRIMARY_PACK";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_PACK_LOG_UPDATE_FAILED:
+      reason = "STATUS_VOLMGR_PACK_LOG_UPDATE_FAILED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_NUMBER_OF_DISKS_IN_PLEX_INVALID:
+      reason = "STATUS_VOLMGR_NUMBER_OF_DISKS_IN_PLEX_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_NUMBER_OF_DISKS_IN_MEMBER_INVALID:
+      reason = "STATUS_VOLMGR_NUMBER_OF_DISKS_IN_MEMBER_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_VOLUME_MIRRORED:
+      reason = "STATUS_VOLMGR_VOLUME_MIRRORED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_PLEX_NOT_SIMPLE_SPANNED:
+      reason = "STATUS_VOLMGR_PLEX_NOT_SIMPLE_SPANNED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_NO_VALID_LOG_COPIES:
+      reason = "STATUS_VOLMGR_NO_VALID_LOG_COPIES";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_PRIMARY_PACK_PRESENT:
+      reason = "STATUS_VOLMGR_PRIMARY_PACK_PRESENT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_NUMBER_OF_DISKS_INVALID:
+      reason = "STATUS_VOLMGR_NUMBER_OF_DISKS_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_MIRROR_NOT_SUPPORTED:
+      reason = "STATUS_VOLMGR_MIRROR_NOT_SUPPORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLMGR_RAID5_NOT_SUPPORTED:
+      reason = "STATUS_VOLMGR_RAID5_NOT_SUPPORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_BCD_TOO_MANY_ELEMENTS:
+      reason = "STATUS_BCD_TOO_MANY_ELEMENTS";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VHD_DRIVE_FOOTER_MISSING:
+      reason = "STATUS_VHD_DRIVE_FOOTER_MISSING";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VHD_DRIVE_FOOTER_CHECKSUM_MISMATCH:
+      reason = "STATUS_VHD_DRIVE_FOOTER_CHECKSUM_MISMATCH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VHD_DRIVE_FOOTER_CORRUPT:
+      reason = "STATUS_VHD_DRIVE_FOOTER_CORRUPT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VHD_FORMAT_UNKNOWN:
+      reason = "STATUS_VHD_FORMAT_UNKNOWN";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VHD_FORMAT_UNSUPPORTED_VERSION:
+      reason = "STATUS_VHD_FORMAT_UNSUPPORTED_VERSION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VHD_SPARSE_HEADER_CHECKSUM_MISMATCH:
+      reason = "STATUS_VHD_SPARSE_HEADER_CHECKSUM_MISMATCH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VHD_SPARSE_HEADER_UNSUPPORTED_VERSION:
+      reason = "STATUS_VHD_SPARSE_HEADER_UNSUPPORTED_VERSION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VHD_SPARSE_HEADER_CORRUPT:
+      reason = "STATUS_VHD_SPARSE_HEADER_CORRUPT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VHD_BLOCK_ALLOCATION_FAILURE:
+      reason = "STATUS_VHD_BLOCK_ALLOCATION_FAILURE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VHD_BLOCK_ALLOCATION_TABLE_CORRUPT:
+      reason = "STATUS_VHD_BLOCK_ALLOCATION_TABLE_CORRUPT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VHD_INVALID_BLOCK_SIZE:
+      reason = "STATUS_VHD_INVALID_BLOCK_SIZE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VHD_BITMAP_MISMATCH:
+      reason = "STATUS_VHD_BITMAP_MISMATCH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VHD_PARENT_VHD_NOT_FOUND:
+      reason = "STATUS_VHD_PARENT_VHD_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VHD_CHILD_PARENT_ID_MISMATCH:
+      reason = "STATUS_VHD_CHILD_PARENT_ID_MISMATCH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VHD_CHILD_PARENT_TIMESTAMP_MISMATCH:
+      reason = "STATUS_VHD_CHILD_PARENT_TIMESTAMP_MISMATCH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VHD_METADATA_READ_FAILURE:
+      reason = "STATUS_VHD_METADATA_READ_FAILURE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VHD_METADATA_WRITE_FAILURE:
+      reason = "STATUS_VHD_METADATA_WRITE_FAILURE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VHD_INVALID_SIZE:
+      reason = "STATUS_VHD_INVALID_SIZE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VHD_INVALID_FILE_SIZE:
+      reason = "STATUS_VHD_INVALID_FILE_SIZE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VIRTDISK_PROVIDER_NOT_FOUND:
+      reason = "STATUS_VIRTDISK_PROVIDER_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VIRTDISK_NOT_VIRTUAL_DISK:
+      reason = "STATUS_VIRTDISK_NOT_VIRTUAL_DISK";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VHD_PARENT_VHD_ACCESS_DENIED:
+      reason = "STATUS_VHD_PARENT_VHD_ACCESS_DENIED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VHD_CHILD_PARENT_SIZE_MISMATCH:
+      reason = "STATUS_VHD_CHILD_PARENT_SIZE_MISMATCH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VHD_DIFFERENCING_CHAIN_CYCLE_DETECTED:
+      reason = "STATUS_VHD_DIFFERENCING_CHAIN_CYCLE_DETECTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VHD_DIFFERENCING_CHAIN_ERROR_IN_PARENT:
+      reason = "STATUS_VHD_DIFFERENCING_CHAIN_ERROR_IN_PARENT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VIRTUAL_DISK_LIMITATION:
+      reason = "STATUS_VIRTUAL_DISK_LIMITATION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VHD_INVALID_TYPE:
+      reason = "STATUS_VHD_INVALID_TYPE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VHD_INVALID_STATE:
+      reason = "STATUS_VHD_INVALID_STATE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VIRTDISK_UNSUPPORTED_DISK_SECTOR_SIZE:
+      reason = "STATUS_VIRTDISK_UNSUPPORTED_DISK_SECTOR_SIZE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VIRTDISK_DISK_ALREADY_OWNED:
+      reason = "STATUS_VIRTDISK_DISK_ALREADY_OWNED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VIRTDISK_DISK_ONLINE_AND_WRITABLE:
+      reason = "STATUS_VIRTDISK_DISK_ONLINE_AND_WRITABLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CTLOG_TRACKING_NOT_INITIALIZED:
+      reason = "STATUS_CTLOG_TRACKING_NOT_INITIALIZED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CTLOG_LOGFILE_SIZE_EXCEEDED_MAXSIZE:
+      reason = "STATUS_CTLOG_LOGFILE_SIZE_EXCEEDED_MAXSIZE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CTLOG_VHD_CHANGED_OFFLINE:
+      reason = "STATUS_CTLOG_VHD_CHANGED_OFFLINE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CTLOG_INVALID_TRACKING_STATE:
+      reason = "STATUS_CTLOG_INVALID_TRACKING_STATE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_CTLOG_INCONSISTENT_TRACKING_FILE:
+      reason = "STATUS_CTLOG_INCONSISTENT_TRACKING_FILE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VHD_METADATA_FULL:
+      reason = "STATUS_VHD_METADATA_FULL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_RKF_KEY_NOT_FOUND:
+      reason = "STATUS_RKF_KEY_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_RKF_DUPLICATE_KEY:
+      reason = "STATUS_RKF_DUPLICATE_KEY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_RKF_BLOB_FULL:
+      reason = "STATUS_RKF_BLOB_FULL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_RKF_STORE_FULL:
+      reason = "STATUS_RKF_STORE_FULL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_RKF_FILE_BLOCKED:
+      reason = "STATUS_RKF_FILE_BLOCKED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_RKF_ACTIVE_KEY:
+      reason = "STATUS_RKF_ACTIVE_KEY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_RDBSS_RESTART_OPERATION:
+      reason = "STATUS_RDBSS_RESTART_OPERATION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_RDBSS_CONTINUE_OPERATION:
+      reason = "STATUS_RDBSS_CONTINUE_OPERATION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_RDBSS_POST_OPERATION:
+      reason = "STATUS_RDBSS_POST_OPERATION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_BTH_ATT_INVALID_HANDLE:
+      reason = "STATUS_BTH_ATT_INVALID_HANDLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_BTH_ATT_READ_NOT_PERMITTED:
+      reason = "STATUS_BTH_ATT_READ_NOT_PERMITTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_BTH_ATT_WRITE_NOT_PERMITTED:
+      reason = "STATUS_BTH_ATT_WRITE_NOT_PERMITTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_BTH_ATT_INVALID_PDU:
+      reason = "STATUS_BTH_ATT_INVALID_PDU";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_BTH_ATT_INSUFFICIENT_AUTHENTICATION:
+      reason = "STATUS_BTH_ATT_INSUFFICIENT_AUTHENTICATION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_BTH_ATT_REQUEST_NOT_SUPPORTED:
+      reason = "STATUS_BTH_ATT_REQUEST_NOT_SUPPORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_BTH_ATT_INVALID_OFFSET:
+      reason = "STATUS_BTH_ATT_INVALID_OFFSET";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_BTH_ATT_INSUFFICIENT_AUTHORIZATION:
+      reason = "STATUS_BTH_ATT_INSUFFICIENT_AUTHORIZATION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_BTH_ATT_PREPARE_QUEUE_FULL:
+      reason = "STATUS_BTH_ATT_PREPARE_QUEUE_FULL";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_BTH_ATT_ATTRIBUTE_NOT_FOUND:
+      reason = "STATUS_BTH_ATT_ATTRIBUTE_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_BTH_ATT_ATTRIBUTE_NOT_LONG:
+      reason = "STATUS_BTH_ATT_ATTRIBUTE_NOT_LONG";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_BTH_ATT_INSUFFICIENT_ENCRYPTION_KEY_SIZE:
+      reason = "STATUS_BTH_ATT_INSUFFICIENT_ENCRYPTION_KEY_SIZE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_BTH_ATT_INVALID_ATTRIBUTE_VALUE_LENGTH:
+      reason = "STATUS_BTH_ATT_INVALID_ATTRIBUTE_VALUE_LENGTH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_BTH_ATT_UNLIKELY:
+      reason = "STATUS_BTH_ATT_UNLIKELY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_BTH_ATT_INSUFFICIENT_ENCRYPTION:
+      reason = "STATUS_BTH_ATT_INSUFFICIENT_ENCRYPTION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_BTH_ATT_UNSUPPORTED_GROUP_TYPE:
+      reason = "STATUS_BTH_ATT_UNSUPPORTED_GROUP_TYPE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_BTH_ATT_INSUFFICIENT_RESOURCES:
+      reason = "STATUS_BTH_ATT_INSUFFICIENT_RESOURCES";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_BTH_ATT_UNKNOWN_ERROR:
+      reason = "STATUS_BTH_ATT_UNKNOWN_ERROR";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SECUREBOOT_ROLLBACK_DETECTED:
+      reason = "STATUS_SECUREBOOT_ROLLBACK_DETECTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SECUREBOOT_POLICY_VIOLATION:
+      reason = "STATUS_SECUREBOOT_POLICY_VIOLATION";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SECUREBOOT_INVALID_POLICY:
+      reason = "STATUS_SECUREBOOT_INVALID_POLICY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SECUREBOOT_POLICY_PUBLISHER_NOT_FOUND:
+      reason = "STATUS_SECUREBOOT_POLICY_PUBLISHER_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SECUREBOOT_POLICY_NOT_SIGNED:
+      reason = "STATUS_SECUREBOOT_POLICY_NOT_SIGNED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SECUREBOOT_FILE_REPLACED:
+      reason = "STATUS_SECUREBOOT_FILE_REPLACED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_AUDIO_ENGINE_NODE_NOT_FOUND:
+      reason = "STATUS_AUDIO_ENGINE_NODE_NOT_FOUND";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_HDAUDIO_EMPTY_CONNECTION_LIST:
+      reason = "STATUS_HDAUDIO_EMPTY_CONNECTION_LIST";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_HDAUDIO_CONNECTION_LIST_NOT_SUPPORTED:
+      reason = "STATUS_HDAUDIO_CONNECTION_LIST_NOT_SUPPORTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_HDAUDIO_NO_LOGICAL_DEVICES_CREATED:
+      reason = "STATUS_HDAUDIO_NO_LOGICAL_DEVICES_CREATED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_HDAUDIO_NULL_LINKED_LIST_ENTRY:
+      reason = "STATUS_HDAUDIO_NULL_LINKED_LIST_ENTRY";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VOLSNAP_BOOTFILE_NOT_VALID:
+      reason = "STATUS_VOLSNAP_BOOTFILE_NOT_VALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_IO_PREEMPTED:
+      reason = "STATUS_IO_PREEMPTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SVHDX_ERROR_STORED:
+      reason = "STATUS_SVHDX_ERROR_STORED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SVHDX_ERROR_NOT_AVAILABLE:
+      reason = "STATUS_SVHDX_ERROR_NOT_AVAILABLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SVHDX_UNIT_ATTENTION_AVAILABLE:
+      reason = "STATUS_SVHDX_UNIT_ATTENTION_AVAILABLE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SVHDX_UNIT_ATTENTION_CAPACITY_DATA_CHANGED:
+      reason = "STATUS_SVHDX_UNIT_ATTENTION_CAPACITY_DATA_CHANGED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SVHDX_UNIT_ATTENTION_RESERVATIONS_PREEMPTED:
+      reason = "STATUS_SVHDX_UNIT_ATTENTION_RESERVATIONS_PREEMPTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SVHDX_UNIT_ATTENTION_RESERVATIONS_RELEASED:
+      reason = "STATUS_SVHDX_UNIT_ATTENTION_RESERVATIONS_RELEASED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SVHDX_UNIT_ATTENTION_REGISTRATIONS_PREEMPTED:
+      reason = "STATUS_SVHDX_UNIT_ATTENTION_REGISTRATIONS_PREEMPTED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SVHDX_UNIT_ATTENTION_OPERATING_DEFINITION_CHANGED:
+      reason = "STATUS_SVHDX_UNIT_ATTENTION_OPERATING_DEFINITION_CHANGED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SVHDX_RESERVATION_CONFLICT:
+      reason = "STATUS_SVHDX_RESERVATION_CONFLICT";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SVHDX_WRONG_FILE_TYPE:
+      reason = "STATUS_SVHDX_WRONG_FILE_TYPE";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SVHDX_VERSION_MISMATCH:
+      reason = "STATUS_SVHDX_VERSION_MISMATCH";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_VHD_SHARED:
+      reason = "STATUS_VHD_SHARED";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SPACES_RESILIENCY_TYPE_INVALID:
+      reason = "STATUS_SPACES_RESILIENCY_TYPE_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SPACES_DRIVE_SECTOR_SIZE_INVALID:
+      reason = "STATUS_SPACES_DRIVE_SECTOR_SIZE_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SPACES_INTERLEAVE_LENGTH_INVALID:
+      reason = "STATUS_SPACES_INTERLEAVE_LENGTH_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SPACES_NUMBER_OF_COLUMNS_INVALID:
+      reason = "STATUS_SPACES_NUMBER_OF_COLUMNS_INVALID";
+      break;
+    case MD_NTSTATUS_WIN_STATUS_SPACES_NOT_ENOUGH_DRIVES:
+      reason = "STATUS_SPACES_NOT_ENOUGH_DRIVES";
+      break;
+    default: {
+      char reason_string[11];
+      std::snprintf(reason_string, sizeof(reason_string), "0x%08x", ntstatus);
+      reason = reason_string;
+      break;
+    }
+  }
+  return reason;
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/processor/symbolic_constants_win.h b/google-breakpad/src/processor/symbolic_constants_win.h
new file mode 100644
index 0000000..c05c916
--- /dev/null
+++ b/google-breakpad/src/processor/symbolic_constants_win.h
@@ -0,0 +1,50 @@
+// Copyright (c) 2015 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// ntstatus_reason_win.h: Windows NTSTATUS code to string.
+//
+// Provides a means to convert NTSTATUS codes to strings.
+//
+// Author: Ben Wagner
+
+#ifndef GOOGLE_BREAKPAD_PROCESSOR_SYMBOLIC_CONSTANTS_WIN_H_
+#define GOOGLE_BREAKPAD_PROCESSOR_SYMBOLIC_CONSTANTS_WIN_H_
+
+#include <string>
+
+#include "google_breakpad/common/breakpad_types.h"
+
+namespace google_breakpad {
+
+/* Converts a NTSTATUS code to a reason string. */
+std::string NTStatusToString(uint32_t ntstatus);
+
+}  // namespace google_breakpad
+
+#endif  // GOOGLE_BREAKPAD_PROCESSOR_SYMBOLIC_CONSTANTS_WIN_H_
diff --git a/google-breakpad/src/processor/synth_minidump.cc b/google-breakpad/src/processor/synth_minidump.cc
new file mode 100644
index 0000000..2cfbb08
--- /dev/null
+++ b/google-breakpad/src/processor/synth_minidump.cc
@@ -0,0 +1,391 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// synth_minidump.cc: Implementation of SynthMinidump.  See synth_minidump.h
+
+#include "processor/synth_minidump.h"
+
+namespace google_breakpad {
+
+namespace SynthMinidump {
+
+Section::Section(const Dump &dump)
+  : test_assembler::Section(dump.endianness()) { }
+
+void Section::CiteLocationIn(test_assembler::Section *section) const {
+  if (this)
+    (*section).D32(size_).D32(file_offset_);
+  else
+    (*section).D32(0).D32(0);
+}
+
+void Stream::CiteStreamIn(test_assembler::Section *section) const {
+  section->D32(type_);
+  CiteLocationIn(section);
+}
+
+SystemInfo::SystemInfo(const Dump &dump,
+                       const MDRawSystemInfo &system_info,
+                       const String &csd_version)
+    : Stream(dump, MD_SYSTEM_INFO_STREAM) {
+  D16(system_info.processor_architecture);
+  D16(system_info.processor_level);
+  D16(system_info.processor_revision);
+  D8(system_info.number_of_processors);
+  D8(system_info.product_type);
+  D32(system_info.major_version);
+  D32(system_info.minor_version);
+  D32(system_info.build_number);
+  D32(system_info.platform_id);
+  csd_version.CiteStringIn(this);
+  D16(system_info.suite_mask);
+  D16(system_info.reserved2);           // Well, why not?
+
+  // MDCPUInformation cpu;
+  if (system_info.processor_architecture == MD_CPU_ARCHITECTURE_X86) {
+    D32(system_info.cpu.x86_cpu_info.vendor_id[0]);
+    D32(system_info.cpu.x86_cpu_info.vendor_id[1]);
+    D32(system_info.cpu.x86_cpu_info.vendor_id[2]);
+    D32(system_info.cpu.x86_cpu_info.version_information);
+    D32(system_info.cpu.x86_cpu_info.feature_information);
+    D32(system_info.cpu.x86_cpu_info.amd_extended_cpu_features);
+  } else if (system_info.processor_architecture == MD_CPU_ARCHITECTURE_ARM) {
+    D32(system_info.cpu.arm_cpu_info.cpuid);
+    D32(system_info.cpu.arm_cpu_info.elf_hwcaps);
+  } else {
+    D64(system_info.cpu.other_cpu_info.processor_features[0]);
+    D64(system_info.cpu.other_cpu_info.processor_features[1]);
+  }
+}
+
+const MDRawSystemInfo SystemInfo::windows_x86 = {
+  MD_CPU_ARCHITECTURE_X86,              // processor_architecture
+  6,                                    // processor_level
+  0xd08,                                // processor_revision
+  1,                                    // number_of_processors
+  1,                                    // product_type
+  5,                                    // major_version
+  1,                                    // minor_version
+  2600,                                 // build_number
+  2,                                    // platform_id
+  0xdeadbeef,                           // csd_version_rva
+  0x100,                                // suite_mask
+  0,                                    // reserved2
+  {                                     // cpu
+    { // x86_cpu_info
+      { 0x756e6547, 0x49656e69, 0x6c65746e }, // vendor_id
+      0x6d8,                                  // version_information
+      0xafe9fbff,                             // feature_information
+      0xffffffff                              // amd_extended_cpu_features
+    }
+  }
+};
+
+const string SystemInfo::windows_x86_csd_version = "Service Pack 2";
+
+String::String(const Dump &dump, const string &contents) : Section(dump) {
+  D32(contents.size() * 2);
+  for (string::const_iterator i = contents.begin(); i != contents.end(); i++)
+    D16(*i);
+}
+
+void String::CiteStringIn(test_assembler::Section *section) const {
+  section->D32(file_offset_);
+}
+
+void Memory::CiteMemoryIn(test_assembler::Section *section) const {
+  section->D64(address_);
+  CiteLocationIn(section);
+}
+
+Context::Context(const Dump &dump, const MDRawContextX86 &context)
+  : Section(dump) {
+  // The caller should have properly set the CPU type flag.
+  // The high 24 bits identify the CPU.  Note that context records with no CPU
+  // type information can be valid (e.g. produced by ::RtlCaptureContext).
+  assert(((context.context_flags & MD_CONTEXT_CPU_MASK) == 0) ||
+         (context.context_flags & MD_CONTEXT_X86));
+  // It doesn't make sense to store x86 registers in big-endian form.
+  assert(dump.endianness() == kLittleEndian);
+  D32(context.context_flags);
+  D32(context.dr0);
+  D32(context.dr1);
+  D32(context.dr2);
+  D32(context.dr3);
+  D32(context.dr6);
+  D32(context.dr7);
+  D32(context.float_save.control_word);
+  D32(context.float_save.status_word);
+  D32(context.float_save.tag_word);
+  D32(context.float_save.error_offset);
+  D32(context.float_save.error_selector);
+  D32(context.float_save.data_offset);
+  D32(context.float_save.data_selector);
+  // context.float_save.register_area[] contains 8-bit quantities and
+  // does not need to be swapped.
+  Append(context.float_save.register_area,
+         sizeof(context.float_save.register_area));
+  D32(context.float_save.cr0_npx_state);
+  D32(context.gs);
+  D32(context.fs);
+  D32(context.es);
+  D32(context.ds);
+  D32(context.edi);
+  D32(context.esi);
+  D32(context.ebx);
+  D32(context.edx);
+  D32(context.ecx);
+  D32(context.eax);
+  D32(context.ebp);
+  D32(context.eip);
+  D32(context.cs);
+  D32(context.eflags);
+  D32(context.esp);
+  D32(context.ss);
+  // context.extended_registers[] contains 8-bit quantities and does
+  // not need to be swapped.
+  Append(context.extended_registers, sizeof(context.extended_registers));
+  assert(Size() == sizeof(MDRawContextX86));
+}
+
+Context::Context(const Dump &dump, const MDRawContextARM &context)
+  : Section(dump) {
+  // The caller should have properly set the CPU type flag.
+  assert((context.context_flags & MD_CONTEXT_ARM) ||
+         (context.context_flags & MD_CONTEXT_ARM_OLD));
+  // It doesn't make sense to store ARM registers in big-endian form.
+  assert(dump.endianness() == kLittleEndian);
+  D32(context.context_flags);
+  for (int i = 0; i < MD_CONTEXT_ARM_GPR_COUNT; ++i)
+    D32(context.iregs[i]);
+  D32(context.cpsr);
+  D64(context.float_save.fpscr);
+  for (int i = 0; i < MD_FLOATINGSAVEAREA_ARM_FPR_COUNT; ++i)
+    D64(context.float_save.regs[i]);
+  for (int i = 0; i < MD_FLOATINGSAVEAREA_ARM_FPEXTRA_COUNT; ++i)
+    D32(context.float_save.extra[i]);
+  assert(Size() == sizeof(MDRawContextARM));
+}
+
+Context::Context(const Dump &dump, const MDRawContextMIPS &context)
+    : Section(dump) {
+  // The caller should have properly set the CPU type flag.
+  assert(context.context_flags & MD_CONTEXT_MIPS);
+  D32(context.context_flags);
+  D32(context._pad0);
+
+  for (int i = 0; i < MD_CONTEXT_MIPS_GPR_COUNT; ++i)
+    D64(context.iregs[i]);
+
+  D64(context.mdhi);
+  D64(context.mdlo);
+
+  for (int i = 0; i < MD_CONTEXT_MIPS_DSP_COUNT; ++i)
+    D32(context.hi[i]);
+
+  for (int i = 0; i < MD_CONTEXT_MIPS_DSP_COUNT; ++i)
+    D32(context.lo[i]);
+
+  D32(context.dsp_control);
+  D32(context._pad1);
+
+  D64(context.epc);
+  D64(context.badvaddr);
+  D32(context.status);
+  D32(context.cause);
+
+  for (int i = 0; i < MD_FLOATINGSAVEAREA_MIPS_FPR_COUNT; ++i)
+    D64(context.float_save.regs[i]);
+
+  D32(context.float_save.fpcsr);
+  D32(context.float_save.fir);
+
+  assert(Size() == sizeof(MDRawContextMIPS));
+}
+
+Thread::Thread(const Dump &dump,
+               uint32_t thread_id, const Memory &stack, const Context &context,
+               uint32_t suspend_count, uint32_t priority_class,
+               uint32_t priority, uint64_t teb) : Section(dump) {
+  D32(thread_id);
+  D32(suspend_count);
+  D32(priority_class);
+  D32(priority);
+  D64(teb);
+  stack.CiteMemoryIn(this);
+  context.CiteLocationIn(this);
+  assert(Size() == sizeof(MDRawThread));
+}
+
+Module::Module(const Dump &dump,
+               uint64_t base_of_image,
+               uint32_t size_of_image,
+               const String &name,
+               uint32_t time_date_stamp,
+               uint32_t checksum,
+               const MDVSFixedFileInfo &version_info,
+               const Section *cv_record,
+               const Section *misc_record) : Section(dump) {
+  D64(base_of_image);
+  D32(size_of_image);
+  D32(checksum);
+  D32(time_date_stamp);
+  name.CiteStringIn(this);
+  D32(version_info.signature);
+  D32(version_info.struct_version);
+  D32(version_info.file_version_hi);
+  D32(version_info.file_version_lo);
+  D32(version_info.product_version_hi);
+  D32(version_info.product_version_lo);
+  D32(version_info.file_flags_mask);
+  D32(version_info.file_flags);
+  D32(version_info.file_os);
+  D32(version_info.file_type);
+  D32(version_info.file_subtype);
+  D32(version_info.file_date_hi);
+  D32(version_info.file_date_lo);
+  cv_record->CiteLocationIn(this);
+  misc_record->CiteLocationIn(this);
+  D64(0).D64(0);
+}
+
+const MDVSFixedFileInfo Module::stock_version_info = {
+  MD_VSFIXEDFILEINFO_SIGNATURE,         // signature
+  MD_VSFIXEDFILEINFO_VERSION,           // struct_version
+  0x11111111,                           // file_version_hi
+  0x22222222,                           // file_version_lo
+  0x33333333,                           // product_version_hi
+  0x44444444,                           // product_version_lo
+  MD_VSFIXEDFILEINFO_FILE_FLAGS_DEBUG,  // file_flags_mask
+  MD_VSFIXEDFILEINFO_FILE_FLAGS_DEBUG,  // file_flags
+  MD_VSFIXEDFILEINFO_FILE_OS_NT | MD_VSFIXEDFILEINFO_FILE_OS__WINDOWS32,
+                                        // file_os
+  MD_VSFIXEDFILEINFO_FILE_TYPE_APP,     // file_type
+  MD_VSFIXEDFILEINFO_FILE_SUBTYPE_UNKNOWN, // file_subtype
+  0,                                    // file_date_hi
+  0                                     // file_date_lo
+};
+
+Exception::Exception(const Dump &dump,
+                     const Context &context,
+                     uint32_t thread_id,
+                     uint32_t exception_code,
+                     uint32_t exception_flags,
+                     uint64_t exception_address)
+  : Stream(dump, MD_EXCEPTION_STREAM) {
+  D32(thread_id);
+  D32(0);  // __align
+  D32(exception_code);
+  D32(exception_flags);
+  D64(0);  // exception_record
+  D64(exception_address);
+  D32(0);  // number_parameters
+  D32(0);  // __align
+  for (int i = 0; i < MD_EXCEPTION_MAXIMUM_PARAMETERS; ++i)
+    D64(0);  // exception_information
+  context.CiteLocationIn(this);
+  assert(Size() == sizeof(MDRawExceptionStream));
+}
+
+Dump::Dump(uint64_t flags,
+           Endianness endianness,
+           uint32_t version,
+           uint32_t date_time_stamp)
+    : test_assembler::Section(endianness),
+      file_start_(0),
+      stream_directory_(*this),
+      stream_count_(0),
+      thread_list_(*this, MD_THREAD_LIST_STREAM),
+      module_list_(*this, MD_MODULE_LIST_STREAM),
+      memory_list_(*this, MD_MEMORY_LIST_STREAM)
+ {
+  D32(MD_HEADER_SIGNATURE);
+  D32(version);
+  D32(stream_count_label_);
+  D32(stream_directory_rva_);
+  D32(0);
+  D32(date_time_stamp);
+  D64(flags);
+  assert(Size() == sizeof(MDRawHeader));
+}
+
+Dump &Dump::Add(SynthMinidump::Section *section) {
+  section->Finish(file_start_ + Size());
+  Append(*section);
+  return *this;
+}
+
+Dump &Dump::Add(Stream *stream) {
+  Add(static_cast<SynthMinidump::Section *>(stream));
+  stream->CiteStreamIn(&stream_directory_);
+  stream_count_++;
+  return *this;
+}
+
+Dump &Dump::Add(Memory *memory) {
+  // Add the memory contents themselves to the file.
+  Add(static_cast<SynthMinidump::Section *>(memory));
+
+  // The memory list is a list of MDMemoryDescriptors, not of actual
+  // memory elements. Produce a descriptor, and add that to the list.
+  SynthMinidump::Section descriptor(*this);
+  memory->CiteMemoryIn(&descriptor);
+  memory_list_.Add(&descriptor);
+  return *this;
+}
+
+Dump &Dump::Add(Thread *thread) {
+  thread_list_.Add(thread);
+  return *this;
+}
+
+Dump &Dump::Add(Module *module) {
+  module_list_.Add(module);
+  return *this;
+}
+
+void Dump::Finish() {
+  if (!thread_list_.Empty()) Add(&thread_list_);
+  if (!module_list_.Empty()) Add(&module_list_);
+  if (!memory_list_.Empty()) Add(&memory_list_);
+
+  // Create the stream directory. We don't use
+  // stream_directory_.Finish here, because the stream directory isn't
+  // cited using a location descriptor; rather, the Minidump header
+  // has the stream count and MDRVA.
+  stream_count_label_ = stream_count_;
+  stream_directory_rva_ = file_start_ + Size();
+  Append(static_cast<test_assembler::Section &>(stream_directory_));
+}
+
+} // namespace SynthMinidump
+          
+} // namespace google_breakpad
diff --git a/google-breakpad/src/processor/synth_minidump.h b/google-breakpad/src/processor/synth_minidump.h
new file mode 100644
index 0000000..8dac878
--- /dev/null
+++ b/google-breakpad/src/processor/synth_minidump.h
@@ -0,0 +1,372 @@
+// -*- mode: C++ -*-
+
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// synth_minidump.h: Interface to SynthMinidump: fake minidump generator.
+//
+// We treat a minidump file as the concatenation of a bunch of
+// test_assembler::Sections. The file header, stream directory,
+// streams, memory regions, strings, and so on --- each is a Section
+// that eventually gets appended to the minidump. Dump, Memory,
+// Context, Thread, and so on all inherit from test_assembler::Section.
+// For example:
+//
+//    using google_breakpad::test_assembler::kLittleEndian;
+//    using google_breakpad::SynthMinidump::Context;
+//    using google_breakpad::SynthMinidump::Dump;
+//    using google_breakpad::SynthMinidump::Memory;
+//    using google_breakpad::SynthMinidump::Thread;
+//    
+//    Dump minidump(MD_NORMAL, kLittleEndian);
+//    
+//    Memory stack1(minidump, 0x569eb0a9);
+//    ... build contents of stack1 with test_assembler::Section functions ...
+//    
+//    MDRawContextX86 x86_context1;
+//    x86_context1.context_flags = MD_CONTEXT_X86;
+//    x86_context1.eip = 0x7c90eb94;
+//    x86_context1.esp = 0x569eb0a9;
+//    x86_context1.ebp = x86_context1.esp + something appropriate;
+//    Context context1(minidump, x86_context1);
+//    
+//    Thread thread1(minidump, 0xe4a4821d, stack1, context1);
+//    
+//    minidump.Add(&stack1);
+//    minidump.Add(&context1);
+//    minidump.Add(&thread1);
+//    minidump.Finish();
+//    
+//    string contents;
+//    EXPECT_TRUE(minidump.GetContents(&contents));
+//    // contents now holds the bytes of a minidump file
+//
+// Because the test_assembler classes let us write Label references to
+// sections before the Labels' values are known, this gives us
+// flexibility in how we put the dump together: minidump pieces can
+// hold the file offsets of other minidump pieces before the
+// referents' positions have been decided. As long as everything has
+// been placed by the time we call dump.GetContents to obtain the
+// bytes, all the Labels' values will be known, and everything will
+// get patched up appropriately.
+//   
+// The dump.Add(thing) functions append THINGS's contents to the
+// minidump, but they also do two other things:
+//
+// - dump.Add(thing) invokes thing->Finish, which tells *thing the
+//   offset within the file at which it was placed, and allows *thing
+//   to do any final content generation.
+//
+// - If THING is something which should receive an entry in some sort
+//   of list or directory, then dump.Add(THING) automatically creates
+//   the appropriate directory or list entry. Streams must appear in
+//   the stream directory; memory ranges should be listed in the
+//   memory list; threads should be placed in the thread list; and so
+//   on.
+//
+// By convention, Section subclass constructors that take references
+// to other Sections do not take care of 'Add'ing their arguments to
+// the dump. For example, although the Thread constructor takes
+// references to a Memory and a Context, it does not add them to the
+// dump on the caller's behalf. Rather, the caller is responsible for
+// 'Add'ing every section they create. This allows Sections to be
+// cited from more than one place; for example, Memory ranges are
+// cited both from Thread objects (as their stack contents) and by the
+// memory list stream.
+//
+// If you forget to Add some Section, the Dump::GetContents call will
+// fail, as the test_assembler::Labels used to cite the Section's
+// contents from elsewhere will still be undefined.
+#ifndef PROCESSOR_SYNTH_MINIDUMP_H_
+#define PROCESSOR_SYNTH_MINIDUMP_H_
+
+#include <assert.h>
+
+#include <iostream>
+#include <string>
+
+#include "common/test_assembler.h"
+#include "common/using_std_string.h"
+#include "google_breakpad/common/breakpad_types.h"
+#include "google_breakpad/common/minidump_format.h"
+
+namespace google_breakpad {
+
+namespace SynthMinidump {
+
+using test_assembler::Endianness;
+using test_assembler::kBigEndian;
+using test_assembler::kLittleEndian;
+using test_assembler::kUnsetEndian;
+using test_assembler::Label;
+
+class Dump;
+class Memory;
+class String;
+
+// A test_assembler::Section which will be appended to a minidump.
+class Section: public test_assembler::Section {
+ public:
+  explicit Section(const Dump &dump);
+
+  // Append an MDLocationDescriptor referring to this section to SECTION.
+  // If 'this' is NULL, append a descriptor with a zero length and MDRVA.
+  //
+  // (I couldn't find the language in the C++ standard that says that
+  // invoking member functions of a NULL pointer to a class type is
+  // bad, if such language exists. Having this function handle NULL
+  // 'this' is convenient, but if it causes trouble, it's not hard to
+  // do differently.)
+  void CiteLocationIn(test_assembler::Section *section) const;
+
+  // Note that this section's contents are complete, and that it has
+  // been placed in the minidump file at OFFSET. The 'Add' member
+  // functions call the Finish member function of the object being
+  // added for you; if you are 'Add'ing this section, you needn't Finish it.
+  virtual void Finish(const Label &offset) { 
+    file_offset_ = offset; size_ = Size();
+  }
+
+ protected:
+  // This section's size and offset within the minidump file.
+  Label file_offset_, size_;
+};
+
+// A stream within a minidump file. 'Add'ing a stream to a minidump
+// creates an entry for it in the minidump's stream directory.
+class Stream: public Section {
+ public:
+  // Create a stream of type TYPE.  You can append whatever contents
+  // you like to this stream using the test_assembler::Section methods.
+  Stream(const Dump &dump, uint32_t type) : Section(dump), type_(type) { }
+
+  // Append an MDRawDirectory referring to this stream to SECTION.
+  void CiteStreamIn(test_assembler::Section *section) const;
+
+ private:
+  // The type of this stream.
+  uint32_t type_;
+};
+
+class SystemInfo: public Stream {
+ public:
+  // Create an MD_SYSTEM_INFO_STREAM stream belonging to DUMP holding
+  // an MDRawSystem info structure initialized with the values from
+  // SYSTEM_INFO, except that the csd_version field is replaced with
+  // the file offset of the string CSD_VERSION, which can be 'Add'ed
+  // to the dump at the desired location.
+  // 
+  // Remember that you are still responsible for 'Add'ing CSD_VERSION
+  // to the dump yourself.
+  SystemInfo(const Dump &dump,
+             const MDRawSystemInfo &system_info,
+             const String &csd_version);
+
+  // Stock MDRawSystemInfo information and associated strings, for
+  // writing tests.
+  static const MDRawSystemInfo windows_x86;
+  static const string windows_x86_csd_version;
+};
+
+// An MDString: a string preceded by a 32-bit length.
+class String: public Section {
+ public:
+  String(const Dump &dump, const string &value);
+
+  // Append an MDRVA referring to this string to SECTION.
+  void CiteStringIn(test_assembler::Section *section) const;
+};
+
+// A range of memory contents. 'Add'ing a memory range to a minidump
+// creates n entry for it in the minidump's memory list. By
+// convention, the 'start', 'Here', and 'Mark' member functions refer
+// to memory addresses.
+class Memory: public Section {
+ public:
+  Memory(const Dump &dump, uint64_t address)
+      : Section(dump), address_(address) { start() = address; }
+
+  // Append an MDMemoryDescriptor referring to this memory range to SECTION.
+  void CiteMemoryIn(test_assembler::Section *section) const;
+
+ private:
+  // The process address from which these memory contents were taken.
+  // Shouldn't this be a Label?
+  uint64_t address_;
+};
+
+class Context: public Section {
+ public:
+  // Create a context belonging to DUMP whose contents are a copy of CONTEXT.
+  Context(const Dump &dump, const MDRawContextX86 &context);
+  Context(const Dump &dump, const MDRawContextARM &context);
+  Context(const Dump &dump, const MDRawContextMIPS &context);
+  // Add an empty context to the dump.
+  Context(const Dump &dump) : Section(dump) {}
+  // Add constructors for other architectures here. Remember to byteswap.
+};
+
+class Thread: public Section {
+ public:
+  // Create a thread belonging to DUMP with the given values, citing
+  // STACK and CONTEXT (which you must Add to the dump separately).
+  Thread(const Dump &dump,
+         uint32_t thread_id,
+         const Memory &stack,
+         const Context &context,
+         uint32_t suspend_count = 0,
+         uint32_t priority_class = 0,
+         uint32_t priority = 0,
+         uint64_t teb = 0);
+};
+
+class Module: public Section {
+ public:
+  // Create a module with the given values. Note that CV_RECORD and
+  // MISC_RECORD can be NULL, in which case the corresponding location
+  // descriptior in the minidump will have a length of zero.
+  Module(const Dump &dump,
+         uint64_t base_of_image,
+         uint32_t size_of_image,
+         const String &name,
+         uint32_t time_date_stamp = 1262805309,
+         uint32_t checksum = 0,
+         const MDVSFixedFileInfo &version_info = Module::stock_version_info,
+         const Section *cv_record = NULL,
+         const Section *misc_record = NULL);
+
+ private:
+  // A standard MDVSFixedFileInfo structure to use as a default for
+  // minidumps.  There's no reason to make users write out all this crap
+  // over and over.
+  static const MDVSFixedFileInfo stock_version_info;
+};
+
+class Exception : public Stream {
+public:
+  Exception(const Dump &dump,
+            const Context &context,
+            uint32_t thread_id = 0,
+            uint32_t exception_code = 0,
+            uint32_t exception_flags = 0,
+            uint64_t exception_address = 0);
+};
+
+// A list of entries starting with a 32-bit count, like a memory list
+// or a thread list.
+template<typename Element>
+class List: public Stream {
+ public:
+  List(const Dump &dump, uint32_t type) : Stream(dump, type), count_(0) {
+    D32(count_label_);
+  }
+
+  // Add ELEMENT to this list.
+  void Add(Element *element) {
+    element->Finish(file_offset_ + Size());
+    Append(*element);
+    count_++;
+  }
+
+  // Return true if this List is empty, false otherwise.
+  bool Empty() { return count_ == 0; }
+
+  // Finish up the contents of this section, mark it as having been
+  // placed at OFFSET.
+  virtual void Finish(const Label &offset) {
+    Stream::Finish(offset);
+    count_label_ = count_;
+  }
+
+ private:
+  size_t count_;
+  Label count_label_;
+};
+
+class Dump: public test_assembler::Section {
+ public:
+
+  // Create a test_assembler::Section containing a minidump file whose
+  // header uses the given values. ENDIANNESS determines the
+  // endianness of the signature; we set this section's default
+  // endianness by this.
+  Dump(uint64_t flags,
+       Endianness endianness = kLittleEndian,
+       uint32_t version = MD_HEADER_VERSION,
+       uint32_t date_time_stamp = 1262805309);
+
+  // The following functions call OBJECT->Finish(), and append the
+  // contents of OBJECT to this minidump. They also record OBJECT in
+  // whatever directory or list is appropriate for its type. The
+  // stream directory, memory list, thread list, and module list are
+  // accumulated this way.
+  Dump &Add(SynthMinidump::Section *object); // simply append data
+  Dump &Add(Stream *object); // append, record in stream directory
+  Dump &Add(Memory *object); // append, record in memory list
+  Dump &Add(Thread *object); // append, record in thread list
+  Dump &Add(Module *object); // append, record in module list
+
+  // Complete the construction of the minidump, given the Add calls
+  // we've seen up to this point. After this call, this Dump's
+  // contents are complete, all labels should be defined if everything
+  // Cited has been Added, and you may call GetContents on it.
+  void Finish();
+
+ private:
+  // A label representing the start of the minidump file.
+  Label file_start_;
+
+  // The stream directory.  We construct this incrementally from
+  // Add(Stream *) calls.
+  SynthMinidump::Section stream_directory_; // The directory's contents.
+  size_t stream_count_;                 // The number of streams so far.
+  Label stream_count_label_;            // Cited in file header.
+  Label stream_directory_rva_;          // The directory's file offset.
+
+  // This minidump's thread list. We construct this incrementally from
+  // Add(Thread *) calls.
+  List<Thread> thread_list_;
+
+  // This minidump's module list. We construct this incrementally from
+  // Add(Module *) calls.
+  List<Module> module_list_;
+
+  // This minidump's memory list. We construct this incrementally from
+  // Add(Memory *) calls. This is actually a list of MDMemoryDescriptors,
+  // not memory ranges --- thus the odd type.
+  List<SynthMinidump::Section> memory_list_;
+};
+
+} // namespace SynthMinidump
+
+} // namespace google_breakpad
+
+#endif  // PROCESSOR_SYNTH_MINIDUMP_H_
diff --git a/google-breakpad/src/processor/synth_minidump_unittest.cc b/google-breakpad/src/processor/synth_minidump_unittest.cc
new file mode 100644
index 0000000..8835b44
--- /dev/null
+++ b/google-breakpad/src/processor/synth_minidump_unittest.cc
@@ -0,0 +1,336 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// synth_minidump_unittest.cc: Unit tests for google_breakpad::SynthMinidump
+// classes.
+
+#include <sstream>
+#include <string>
+
+#include "breakpad_googletest_includes.h"
+#include "common/using_std_string.h"
+#include "google_breakpad/common/minidump_format.h"
+#include "processor/synth_minidump.h"
+#include "processor/synth_minidump_unittest_data.h"
+
+using google_breakpad::SynthMinidump::Context;
+using google_breakpad::SynthMinidump::Dump;
+using google_breakpad::SynthMinidump::Exception;
+using google_breakpad::SynthMinidump::List;
+using google_breakpad::SynthMinidump::Memory;
+using google_breakpad::SynthMinidump::Module;
+using google_breakpad::SynthMinidump::Section;
+using google_breakpad::SynthMinidump::Stream;
+using google_breakpad::SynthMinidump::String;
+using google_breakpad::SynthMinidump::SystemInfo;
+using google_breakpad::test_assembler::kBigEndian;
+using google_breakpad::test_assembler::kLittleEndian;
+using google_breakpad::test_assembler::Label;
+
+TEST(Section, Simple) {
+  Dump dump(0);
+  Section section(dump);
+  section.L32(0x12345678);
+  section.Finish(0);
+  string contents;
+  ASSERT_TRUE(section.GetContents(&contents));
+  EXPECT_EQ(string("\x78\x56\x34\x12", 4), contents);
+}
+
+TEST(Section, CiteLocationIn) {
+  Dump dump(0, kBigEndian);
+  Section section1(dump), section2(dump);
+  section1.Append("order");
+  section2.Append("mayhem");
+  section2.Finish(0x32287ec2);
+  section2.CiteLocationIn(&section1);
+  string contents;
+  ASSERT_TRUE(section1.GetContents(&contents));
+  string expected("order\0\0\0\x06\x32\x28\x7e\xc2", 13);
+  EXPECT_EQ(expected, contents);
+}
+
+TEST(Stream, CiteStreamIn) {
+  Dump dump(0, kLittleEndian);
+  Stream stream(dump, 0x40cae2b3);
+  Section section(dump);
+  stream.Append("stream contents");
+  section.Append("section contents");
+  stream.Finish(0x41424344);
+  stream.CiteStreamIn(&section);
+  string contents;
+  ASSERT_TRUE(section.GetContents(&contents));
+  string expected("section contents"
+                  "\xb3\xe2\xca\x40"
+                  "\x0f\0\0\0"
+                  "\x44\x43\x42\x41",
+                  16 + 4 + 4 + 4);
+  EXPECT_EQ(expected, contents);
+}
+
+TEST(Memory, CiteMemoryIn) {
+  Dump dump(0, kBigEndian);
+  Memory memory(dump, 0x76d010874ab019f9ULL);
+  Section section(dump);
+  memory.Append("memory contents");
+  section.Append("section contents");
+  memory.Finish(0x51525354);
+  memory.CiteMemoryIn(&section);
+  string contents;
+  ASSERT_TRUE(section.GetContents(&contents));
+  string expected("section contents"
+                  "\x76\xd0\x10\x87\x4a\xb0\x19\xf9"
+                  "\0\0\0\x0f"
+                  "\x51\x52\x53\x54",
+                  16 + 8 + 4 + 4);
+  EXPECT_EQ(contents, expected);
+}
+
+TEST(Memory, Here) {
+  Dump dump(0, kBigEndian);
+  Memory memory(dump, 0x89979731eb060ed4ULL);
+  memory.Append(1729, 42);
+  Label l = memory.Here();
+  ASSERT_EQ(0x89979731eb060ed4ULL + 1729, l.Value());
+}
+
+TEST(Context, X86) {
+  Dump dump(0, kLittleEndian);
+  assert(x86_raw_context.context_flags & MD_CONTEXT_X86);
+  Context context(dump, x86_raw_context);
+  string contents;
+  ASSERT_TRUE(context.GetContents(&contents));
+  EXPECT_EQ(sizeof(x86_expected_contents), contents.size());
+  EXPECT_TRUE(memcmp(contents.data(), x86_expected_contents, contents.size())
+              == 0);
+}
+
+TEST(Context, ARM) {
+  Dump dump(0, kLittleEndian);
+  assert(arm_raw_context.context_flags & MD_CONTEXT_ARM);
+  Context context(dump, arm_raw_context);
+  string contents;
+  ASSERT_TRUE(context.GetContents(&contents));
+  EXPECT_EQ(sizeof(arm_expected_contents), contents.size());
+  EXPECT_TRUE(memcmp(contents.data(), arm_expected_contents, contents.size())
+              == 0);
+}
+
+TEST(ContextDeathTest, X86BadFlags) {
+  Dump dump(0, kLittleEndian);
+  MDRawContextX86 raw;
+  raw.context_flags = MD_CONTEXT_AMD64;
+  ASSERT_DEATH(Context context(dump, raw);,
+               "context\\.context_flags & (0x[0-9a-f]+|MD_CONTEXT_X86)");
+}
+
+TEST(ContextDeathTest, X86BadEndianness) {
+  Dump dump(0, kBigEndian);
+  MDRawContextX86 raw;
+  raw.context_flags = MD_CONTEXT_X86;
+  ASSERT_DEATH(Context context(dump, raw);,
+               "dump\\.endianness\\(\\) == kLittleEndian");
+}
+
+TEST(Thread, Simple) {
+  Dump dump(0, kLittleEndian);
+  Context context(dump, x86_raw_context);
+  context.Finish(0x8665da0c);
+  Memory stack(dump, 0xaad55a93cc3c0efcULL);
+  stack.Append("stack contents");
+  stack.Finish(0xe08cdbd1);
+  google_breakpad::SynthMinidump::Thread thread(
+      dump, 0x3d7ec360, stack, context,
+      0x3593f44d, // suspend count
+      0xab352b82, // priority class
+      0x2753d838, // priority
+      0xeb2de4be3f29e3e9ULL); // thread environment block
+  string contents;
+  ASSERT_TRUE(thread.GetContents(&contents));
+  static const uint8_t expected_bytes[] = {
+    0x60, 0xc3, 0x7e, 0x3d, // thread id
+    0x4d, 0xf4, 0x93, 0x35, // suspend count
+    0x82, 0x2b, 0x35, 0xab, // priority class
+    0x38, 0xd8, 0x53, 0x27, // priority
+    0xe9, 0xe3, 0x29, 0x3f, 0xbe, 0xe4, 0x2d, 0xeb, // thread environment block
+    0xfc, 0x0e, 0x3c, 0xcc, 0x93, 0x5a, 0xd5, 0xaa, // stack address
+    0x0e, 0x00, 0x00, 0x00, // stack size
+    0xd1, 0xdb, 0x8c, 0xe0, // stack MDRVA
+    0xcc, 0x02, 0x00, 0x00, // context size
+    0x0c, 0xda, 0x65, 0x86  // context MDRVA
+  };
+  EXPECT_EQ(sizeof(expected_bytes), contents.size());
+  EXPECT_TRUE(memcmp(contents.data(), expected_bytes, contents.size()) == 0);
+}
+
+TEST(Exception, Simple) {
+  Dump dump(0, kLittleEndian);
+  Context context(dump, x86_raw_context);
+  context.Finish(0x8665da0c);
+  
+  Exception exception(dump, context,
+                      0x1234abcd, // thread id
+                      0xdcba4321, // exception code
+                      0xf0e0d0c0, // exception flags
+                      0x0919a9b9c9d9e9f9ULL); // exception address
+  string contents;
+  ASSERT_TRUE(exception.GetContents(&contents));
+  static const uint8_t expected_bytes[] = {
+    0xcd, 0xab, 0x34, 0x12, // thread id
+    0x00, 0x00, 0x00, 0x00, // __align
+    0x21, 0x43, 0xba, 0xdc, // exception code
+    0xc0, 0xd0, 0xe0, 0xf0, // exception flags
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // exception record
+    0xf9, 0xe9, 0xd9, 0xc9, 0xb9, 0xa9, 0x19, 0x09, // exception address
+    0x00, 0x00, 0x00, 0x00, // number parameters
+    0x00, 0x00, 0x00, 0x00, // __align
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // exception_information
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // exception_information
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // exception_information
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // exception_information
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // exception_information
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // exception_information
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // exception_information
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // exception_information
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // exception_information
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // exception_information
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // exception_information
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // exception_information
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // exception_information
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // exception_information
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // exception_information
+    0xcc, 0x02, 0x00, 0x00, // context size
+    0x0c, 0xda, 0x65, 0x86  // context MDRVA
+  };
+  EXPECT_EQ(sizeof(expected_bytes), contents.size());
+  EXPECT_TRUE(memcmp(contents.data(), expected_bytes, contents.size()) == 0);
+}
+
+TEST(String, Simple) {
+  Dump dump(0, kBigEndian);
+  String s(dump, "All mimsy were the borogoves");
+  string contents;
+  ASSERT_TRUE(s.GetContents(&contents));
+  static const char expected[] = 
+    "\x00\x00\x00\x38\0A\0l\0l\0 \0m\0i\0m\0s\0y\0 \0w\0e\0r\0e"
+    "\0 \0t\0h\0e\0 \0b\0o\0r\0o\0g\0o\0v\0e\0s";
+  string expected_string(expected, sizeof(expected) - 1);
+  EXPECT_EQ(expected_string, contents);
+}
+
+TEST(String, CiteStringIn) {
+  Dump dump(0, kLittleEndian);
+  String s(dump, "and the mome wraths outgrabe");
+  Section section(dump);
+  section.Append("initial");
+  s.CiteStringIn(&section);
+  s.Finish(0xdc2bb469);
+  string contents;
+  ASSERT_TRUE(section.GetContents(&contents));
+  EXPECT_EQ(string("initial\x69\xb4\x2b\xdc", 7 + 4), contents);
+}
+
+TEST(List, Empty) {
+  Dump dump(0, kBigEndian);
+  List<Section> list(dump, 0x2442779c);
+  EXPECT_TRUE(list.Empty());
+  list.Finish(0x84e09808);
+  string contents;
+  ASSERT_TRUE(list.GetContents(&contents));
+  EXPECT_EQ(string("\0\0\0\0", 4), contents);
+}
+
+TEST(List, Two) {
+  Dump dump(0, kBigEndian);
+  List<Section> list(dump, 0x26c9f498);
+  Section section1(dump);
+  section1.Append("section one contents");
+  EXPECT_TRUE(list.Empty());
+  list.Add(&section1);
+  EXPECT_FALSE(list.Empty());
+  Section section2(dump);
+  section2.Append("section two contents");
+  list.Add(&section2);
+  list.Finish(0x1e5bb60e);
+  string contents;
+  ASSERT_TRUE(list.GetContents(&contents));
+  EXPECT_EQ(string("\0\0\0\x02section one contentssection two contents", 44),
+            contents);
+}
+
+TEST(Dump, Header) {
+  Dump dump(0x9f738b33685cc84cULL, kLittleEndian, 0xb3817faf, 0x2c741c0a);
+  dump.Finish();
+  string contents;
+  ASSERT_TRUE(dump.GetContents(&contents));
+  ASSERT_EQ(string("\x4d\x44\x4d\x50"   // signature
+                   "\xaf\x7f\x81\xb3"   // version
+                   "\0\0\0\0"           // stream count
+                   "\x20\0\0\0"         // directory RVA (could be anything)
+                   "\0\0\0\0"           // checksum
+                   "\x0a\x1c\x74\x2c"   // time_date_stamp
+                   "\x4c\xc8\x5c\x68\x33\x8b\x73\x9f", // flags
+                   32),
+            contents);
+}
+
+TEST(Dump, HeaderBigEndian) {
+  Dump dump(0x206ce3cc6fb8e0f0ULL, kBigEndian, 0x161693e2, 0x35667744);
+  dump.Finish();
+  string contents;
+  ASSERT_TRUE(dump.GetContents(&contents));
+  ASSERT_EQ(string("\x50\x4d\x44\x4d"   // signature
+                   "\x16\x16\x93\xe2"   // version
+                   "\0\0\0\0"           // stream count
+                   "\0\0\0\x20"         // directory RVA (could be anything)
+                   "\0\0\0\0"           // checksum
+                   "\x35\x66\x77\x44"   // time_date_stamp
+                   "\x20\x6c\xe3\xcc\x6f\xb8\xe0\xf0", // flags
+                   32),
+            contents);
+}
+
+TEST(Dump, OneSection) {
+  Dump dump(0, kLittleEndian);
+  Section section(dump);
+  section.Append("section contents");
+  dump.Add(&section);
+  dump.Finish();
+  string dump_contents;
+  // Just check for undefined labels; don't worry about the contents.
+  ASSERT_TRUE(dump.GetContents(&dump_contents));
+
+  Section referencing_section(dump);
+  section.CiteLocationIn(&referencing_section);
+  string contents;
+  ASSERT_TRUE(referencing_section.GetContents(&contents));
+  ASSERT_EQ(string("\x10\0\0\0\x20\0\0\0", 8), contents);
+}
diff --git a/google-breakpad/src/processor/synth_minidump_unittest_data.h b/google-breakpad/src/processor/synth_minidump_unittest_data.h
new file mode 100644
index 0000000..3403372
--- /dev/null
+++ b/google-breakpad/src/processor/synth_minidump_unittest_data.h
@@ -0,0 +1,418 @@
+// -*- mode: C++ -*-
+
+// Not copyrightable: random test data.
+// synth_minidump_unittest_data.h: verbose test data for SynthMinidump tests.
+
+#ifndef PROCESSOR_SYNTH_MINIDUMP_UNITTEST_DATA_H_
+#define PROCESSOR_SYNTH_MINIDUMP_UNITTEST_DATA_H_
+
+#include "google_breakpad/common/minidump_format.h"
+
+static const MDRawContextX86 x86_raw_context = {
+  0xded5d71b,                           // context_flags
+  0x9fdb432e,                           // dr0
+  0x26b7a81a,                           // dr1
+  0xcac7e348,                           // dr2
+  0xcf99ec09,                           // dr3
+  0x7dc8c2cd,                           // dr6
+  0x21deb880,                           // dr7
+
+  // float_save
+  {
+    0x8a5d2bb0,                         // control_word
+    0x0286c4c9,                         // status_word
+    0xf1feea21,                         // tag_word
+    0xb2d40576,                         // error_offset
+    0x48146cde,                         // error_selector
+    0x983f9b21,                         // data_offset
+    0x475be12c,                         // data_selector
+
+    // register_area
+    {
+      0xd9, 0x04, 0x20, 0x6b, 0x88, 0x3a, 0x3f, 0xd5,
+      0x59, 0x7a, 0xa9, 0xeb, 0xd0, 0x5c, 0xdf, 0xfe,
+      0xad, 0xdd, 0x4a, 0x8b, 0x10, 0xcc, 0x9a, 0x33,
+      0xcb, 0xb6, 0xf7, 0x86, 0xcd, 0x69, 0x25, 0xae,
+      0x25, 0xe5, 0x7a, 0xa1, 0x8f, 0xb2, 0x84, 0xd9,
+      0xf7, 0x2d, 0x8a, 0xa1, 0x80, 0x81, 0x7f, 0x67,
+      0x07, 0xa8, 0x23, 0xf1, 0x8c, 0xdc, 0xd8, 0x04,
+      0x8b, 0x9d, 0xb1, 0xcd, 0x61, 0x0c, 0x9c, 0x69,
+      0xc7, 0x8d, 0x17, 0xb6, 0xe5, 0x0b, 0x94, 0xf7,
+      0x78, 0x9b, 0x63, 0x49, 0xba, 0xfc, 0x08, 0x4d
+    },
+
+    0x84c53a90,                         // cr0_npx_state
+  },
+
+  0x79f71e76,                           // gs
+  0x8107bd25,                           // fs
+  0x452d2921,                           // es
+  0x87ec2875,                           // ds
+  0xf8bb73f5,                           // edi
+  0xa63ebb88,                           // esi
+  0x95d35ebe,                           // ebx
+  0x17aa2456,                           // edx
+  0x135fa208,                           // ecx
+  0x500615e6,                           // eax
+  0x66d14205,                           // ebp
+  0x000719a5,                           // eip
+  0x477b481b,                           // cs
+  0x8684dfba,                           // eflags
+  0xe33ccddf,                           // esp
+  0xc0e65d33,                           // ss
+
+  // extended_registers
+  {
+    0x68, 0x63, 0xdf, 0x50, 0xf7, 0x3b, 0xe8, 0xe5,
+    0xcb, 0xd6, 0x66, 0x60, 0xe5, 0xa3, 0x58, 0xb3,
+    0x6f, 0x34, 0xca, 0x02, 0x9b, 0x5f, 0xd0, 0x41,
+    0xbd, 0xc5, 0x2d, 0xf8, 0xff, 0x15, 0xa2, 0xd0,
+    0xe3, 0x2b, 0x3b, 0x8a, 0x9f, 0xc3, 0x9e, 0x28,
+    0x0a, 0xc2, 0xac, 0x3b, 0x67, 0x37, 0x01, 0xfd,
+    0xc3, 0xaf, 0x60, 0xf6, 0x2c, 0x4f, 0xa9, 0x52,
+    0x92, 0xe5, 0x28, 0xde, 0x34, 0xb6, 0x2e, 0x44,
+    0x15, 0xa4, 0xb6, 0xe4, 0xc9, 0x1a, 0x14, 0xb9,
+    0x51, 0x33, 0x3c, 0xe0, 0xc7, 0x94, 0xf0, 0xf7,
+    0x78, 0xdd, 0xe5, 0xca, 0xb7, 0xa6, 0xe0, 0x14,
+    0xa6, 0x03, 0xab, 0x77, 0xad, 0xbd, 0xd2, 0x53,
+    0x3d, 0x07, 0xe7, 0xaf, 0x90, 0x44, 0x71, 0xbe,
+    0x0c, 0xdf, 0x2b, 0x97, 0x40, 0x48, 0xd5, 0xf9,
+    0x62, 0x03, 0x91, 0x84, 0xd6, 0xdd, 0x29, 0x97,
+    0x35, 0x02, 0xfb, 0x59, 0x97, 0xb0, 0xec, 0xa9,
+    0x39, 0x6f, 0x81, 0x71, 0x2a, 0xf0, 0xe7, 0x2c,
+    0x4e, 0x93, 0x90, 0xcb, 0x67, 0x69, 0xde, 0xd7,
+    0x68, 0x3b, 0x0f, 0x69, 0xa8, 0xf4, 0xa8, 0x83,
+    0x42, 0x80, 0x47, 0x65, 0x7a, 0xc9, 0x19, 0x5d,
+    0xcb, 0x43, 0xa5, 0xff, 0xf8, 0x9e, 0x62, 0xf4,
+    0xe2, 0x6c, 0xcc, 0x17, 0x55, 0x7c, 0x0d, 0x5c,
+    0x8d, 0x16, 0x01, 0xd7, 0x3a, 0x0c, 0xf4, 0x7f,
+    0x71, 0xdc, 0x48, 0xe9, 0x4b, 0xfe, 0x1a, 0xd0,
+    0x04, 0x15, 0x33, 0xec, 0x78, 0xc6, 0x7e, 0xde,
+    0x7c, 0x23, 0x18, 0x8d, 0x8f, 0xc2, 0x74, 0xc1,
+    0x48, 0xcd, 0x5d, 0xee, 0xee, 0x81, 0x9e, 0x49,
+    0x47, 0x8a, 0xf8, 0x61, 0xa3, 0x9c, 0x81, 0x96,
+    0xbe, 0x2b, 0x5e, 0xbc, 0xcd, 0x34, 0x0a, 0x2a,
+    0x3b, 0x8b, 0x7d, 0xa1, 0xf2, 0x8d, 0xb4, 0x51,
+    0x9e, 0x14, 0x78, 0xa3, 0x58, 0x65, 0x2d, 0xd6,
+    0x50, 0x40, 0x36, 0x32, 0x31, 0xd4, 0x3e, 0xc2,
+    0xe0, 0x87, 0x1c, 0x05, 0x95, 0x80, 0x84, 0x24,
+    0x08, 0x6f, 0x5b, 0xc7, 0xe1, 0x1d, 0xd5, 0xa3,
+    0x94, 0x44, 0xa1, 0x7c, 0xd8, 0x4b, 0x86, 0xd2,
+    0xc6, 0xa9, 0xf3, 0xe2, 0x4d, 0x6e, 0x1f, 0x0e,
+    0xf2, 0xf5, 0x71, 0xf9, 0x71, 0x05, 0x24, 0xc9,
+    0xc1, 0xe8, 0x91, 0x42, 0x61, 0x86, 0x57, 0x68,
+    0xd9, 0xc9, 0x1d, 0xd5, 0x5a, 0xe9, 0xba, 0xe6,
+    0x15, 0x8f, 0x87, 0xbd, 0x62, 0x56, 0xed, 0xda,
+    0xc2, 0xa5, 0xd5, 0x39, 0xac, 0x05, 0x10, 0x14,
+    0x4a, 0xe7, 0xe7, 0x3c, 0x3f, 0xb7, 0xbb, 0xed,
+    0x01, 0x6e, 0xcd, 0xee, 0x81, 0xb4, 0x62, 0xf4,
+    0x62, 0x16, 0xff, 0x20, 0xb4, 0xf0, 0xbc, 0xff,
+    0x7d, 0xd9, 0xcf, 0x95, 0x30, 0x27, 0xe0, 0x2f,
+    0x98, 0x53, 0x80, 0x15, 0x13, 0xef, 0x44, 0x58,
+    0x12, 0x16, 0xdb, 0x11, 0xef, 0x73, 0x51, 0xcd,
+    0x42, 0x3f, 0x98, 0x6c, 0xc9, 0x68, 0xc3, 0xf4,
+    0x5b, 0x0f, 0x5d, 0x77, 0xed, 0xdf, 0x0f, 0xff,
+    0xb8, 0x69, 0x98, 0x50, 0x77, 0x7a, 0xe8, 0x90,
+    0x27, 0x46, 0x10, 0xd2, 0xb5, 0x00, 0x3b, 0x36,
+    0x43, 0x6d, 0x67, 0x41, 0x20, 0x3a, 0x32, 0xe0,
+    0x2e, 0x5a, 0xfb, 0x4e, 0x4f, 0xa4, 0xf7, 0xc2,
+    0xe6, 0x81, 0x1a, 0x51, 0xa8, 0x7c, 0xd4, 0x60,
+    0x7c, 0x45, 0xe2, 0xba, 0x5b, 0x42, 0xf3, 0xbf,
+    0x28, 0xaa, 0xf2, 0x90, 0xe4, 0x94, 0xdd, 0xaa,
+    0x22, 0xd3, 0x71, 0x33, 0xa1, 0x01, 0x43, 0x0e,
+    0xfa, 0x46, 0xd2, 0x6e, 0x55, 0x5e, 0x49, 0xeb,
+    0x94, 0xf0, 0xb0, 0xb1, 0x2e, 0xf2, 0x3d, 0x6c,
+    0x00, 0x5e, 0x01, 0x56, 0x3b, 0xfd, 0x5b, 0xa1,
+    0x2f, 0x63, 0x1d, 0xbf, 0xf9, 0xd8, 0x13, 0xf7,
+    0x4d, 0xb7, 0x1e, 0x3d, 0x98, 0xd2, 0xee, 0xb8,
+    0x48, 0xc8, 0x5b, 0x91, 0x0f, 0x54, 0x9e, 0x26,
+    0xb2, 0xc7, 0x3a, 0x6c, 0x8a, 0x35, 0xe1, 0xba
+  }
+};
+
+static const uint8_t x86_expected_contents[] = {
+  0x1b, 0xd7, 0xd5, 0xde,
+  0x2e, 0x43, 0xdb, 0x9f,
+  0x1a, 0xa8, 0xb7, 0x26,
+  0x48, 0xe3, 0xc7, 0xca,
+  0x09, 0xec, 0x99, 0xcf,
+  0xcd, 0xc2, 0xc8, 0x7d,
+  0x80, 0xb8, 0xde, 0x21,
+  0xb0, 0x2b, 0x5d, 0x8a,
+  0xc9, 0xc4, 0x86, 0x02,
+  0x21, 0xea, 0xfe, 0xf1,
+  0x76, 0x05, 0xd4, 0xb2,
+  0xde, 0x6c, 0x14, 0x48,
+  0x21, 0x9b, 0x3f, 0x98,
+  0x2c, 0xe1, 0x5b, 0x47,
+
+  // float_save.register_area --- unswapped
+  0xd9, 0x04, 0x20, 0x6b, 0x88, 0x3a, 0x3f, 0xd5,
+  0x59, 0x7a, 0xa9, 0xeb, 0xd0, 0x5c, 0xdf, 0xfe,
+  0xad, 0xdd, 0x4a, 0x8b, 0x10, 0xcc, 0x9a, 0x33,
+  0xcb, 0xb6, 0xf7, 0x86, 0xcd, 0x69, 0x25, 0xae,
+  0x25, 0xe5, 0x7a, 0xa1, 0x8f, 0xb2, 0x84, 0xd9,
+  0xf7, 0x2d, 0x8a, 0xa1, 0x80, 0x81, 0x7f, 0x67,
+  0x07, 0xa8, 0x23, 0xf1, 0x8c, 0xdc, 0xd8, 0x04,
+  0x8b, 0x9d, 0xb1, 0xcd, 0x61, 0x0c, 0x9c, 0x69,
+  0xc7, 0x8d, 0x17, 0xb6, 0xe5, 0x0b, 0x94, 0xf7,
+  0x78, 0x9b, 0x63, 0x49, 0xba, 0xfc, 0x08, 0x4d,
+
+  0x90, 0x3a, 0xc5, 0x84,
+  0x76, 0x1e, 0xf7, 0x79,
+  0x25, 0xbd, 0x07, 0x81,
+  0x21, 0x29, 0x2d, 0x45,
+  0x75, 0x28, 0xec, 0x87,
+  0xf5, 0x73, 0xbb, 0xf8,
+  0x88, 0xbb, 0x3e, 0xa6,
+  0xbe, 0x5e, 0xd3, 0x95,
+  0x56, 0x24, 0xaa, 0x17,
+  0x08, 0xa2, 0x5f, 0x13,
+  0xe6, 0x15, 0x06, 0x50,
+  0x05, 0x42, 0xd1, 0x66,
+  0xa5, 0x19, 0x07, 0x00,
+  0x1b, 0x48, 0x7b, 0x47,
+  0xba, 0xdf, 0x84, 0x86,
+  0xdf, 0xcd, 0x3c, 0xe3,
+  0x33, 0x5d, 0xe6, 0xc0,
+
+  // extended_registers --- unswapped
+  0x68, 0x63, 0xdf, 0x50, 0xf7, 0x3b, 0xe8, 0xe5,
+  0xcb, 0xd6, 0x66, 0x60, 0xe5, 0xa3, 0x58, 0xb3,
+  0x6f, 0x34, 0xca, 0x02, 0x9b, 0x5f, 0xd0, 0x41,
+  0xbd, 0xc5, 0x2d, 0xf8, 0xff, 0x15, 0xa2, 0xd0,
+  0xe3, 0x2b, 0x3b, 0x8a, 0x9f, 0xc3, 0x9e, 0x28,
+  0x0a, 0xc2, 0xac, 0x3b, 0x67, 0x37, 0x01, 0xfd,
+  0xc3, 0xaf, 0x60, 0xf6, 0x2c, 0x4f, 0xa9, 0x52,
+  0x92, 0xe5, 0x28, 0xde, 0x34, 0xb6, 0x2e, 0x44,
+  0x15, 0xa4, 0xb6, 0xe4, 0xc9, 0x1a, 0x14, 0xb9,
+  0x51, 0x33, 0x3c, 0xe0, 0xc7, 0x94, 0xf0, 0xf7,
+  0x78, 0xdd, 0xe5, 0xca, 0xb7, 0xa6, 0xe0, 0x14,
+  0xa6, 0x03, 0xab, 0x77, 0xad, 0xbd, 0xd2, 0x53,
+  0x3d, 0x07, 0xe7, 0xaf, 0x90, 0x44, 0x71, 0xbe,
+  0x0c, 0xdf, 0x2b, 0x97, 0x40, 0x48, 0xd5, 0xf9,
+  0x62, 0x03, 0x91, 0x84, 0xd6, 0xdd, 0x29, 0x97,
+  0x35, 0x02, 0xfb, 0x59, 0x97, 0xb0, 0xec, 0xa9,
+  0x39, 0x6f, 0x81, 0x71, 0x2a, 0xf0, 0xe7, 0x2c,
+  0x4e, 0x93, 0x90, 0xcb, 0x67, 0x69, 0xde, 0xd7,
+  0x68, 0x3b, 0x0f, 0x69, 0xa8, 0xf4, 0xa8, 0x83,
+  0x42, 0x80, 0x47, 0x65, 0x7a, 0xc9, 0x19, 0x5d,
+  0xcb, 0x43, 0xa5, 0xff, 0xf8, 0x9e, 0x62, 0xf4,
+  0xe2, 0x6c, 0xcc, 0x17, 0x55, 0x7c, 0x0d, 0x5c,
+  0x8d, 0x16, 0x01, 0xd7, 0x3a, 0x0c, 0xf4, 0x7f,
+  0x71, 0xdc, 0x48, 0xe9, 0x4b, 0xfe, 0x1a, 0xd0,
+  0x04, 0x15, 0x33, 0xec, 0x78, 0xc6, 0x7e, 0xde,
+  0x7c, 0x23, 0x18, 0x8d, 0x8f, 0xc2, 0x74, 0xc1,
+  0x48, 0xcd, 0x5d, 0xee, 0xee, 0x81, 0x9e, 0x49,
+  0x47, 0x8a, 0xf8, 0x61, 0xa3, 0x9c, 0x81, 0x96,
+  0xbe, 0x2b, 0x5e, 0xbc, 0xcd, 0x34, 0x0a, 0x2a,
+  0x3b, 0x8b, 0x7d, 0xa1, 0xf2, 0x8d, 0xb4, 0x51,
+  0x9e, 0x14, 0x78, 0xa3, 0x58, 0x65, 0x2d, 0xd6,
+  0x50, 0x40, 0x36, 0x32, 0x31, 0xd4, 0x3e, 0xc2,
+  0xe0, 0x87, 0x1c, 0x05, 0x95, 0x80, 0x84, 0x24,
+  0x08, 0x6f, 0x5b, 0xc7, 0xe1, 0x1d, 0xd5, 0xa3,
+  0x94, 0x44, 0xa1, 0x7c, 0xd8, 0x4b, 0x86, 0xd2,
+  0xc6, 0xa9, 0xf3, 0xe2, 0x4d, 0x6e, 0x1f, 0x0e,
+  0xf2, 0xf5, 0x71, 0xf9, 0x71, 0x05, 0x24, 0xc9,
+  0xc1, 0xe8, 0x91, 0x42, 0x61, 0x86, 0x57, 0x68,
+  0xd9, 0xc9, 0x1d, 0xd5, 0x5a, 0xe9, 0xba, 0xe6,
+  0x15, 0x8f, 0x87, 0xbd, 0x62, 0x56, 0xed, 0xda,
+  0xc2, 0xa5, 0xd5, 0x39, 0xac, 0x05, 0x10, 0x14,
+  0x4a, 0xe7, 0xe7, 0x3c, 0x3f, 0xb7, 0xbb, 0xed,
+  0x01, 0x6e, 0xcd, 0xee, 0x81, 0xb4, 0x62, 0xf4,
+  0x62, 0x16, 0xff, 0x20, 0xb4, 0xf0, 0xbc, 0xff,
+  0x7d, 0xd9, 0xcf, 0x95, 0x30, 0x27, 0xe0, 0x2f,
+  0x98, 0x53, 0x80, 0x15, 0x13, 0xef, 0x44, 0x58,
+  0x12, 0x16, 0xdb, 0x11, 0xef, 0x73, 0x51, 0xcd,
+  0x42, 0x3f, 0x98, 0x6c, 0xc9, 0x68, 0xc3, 0xf4,
+  0x5b, 0x0f, 0x5d, 0x77, 0xed, 0xdf, 0x0f, 0xff,
+  0xb8, 0x69, 0x98, 0x50, 0x77, 0x7a, 0xe8, 0x90,
+  0x27, 0x46, 0x10, 0xd2, 0xb5, 0x00, 0x3b, 0x36,
+  0x43, 0x6d, 0x67, 0x41, 0x20, 0x3a, 0x32, 0xe0,
+  0x2e, 0x5a, 0xfb, 0x4e, 0x4f, 0xa4, 0xf7, 0xc2,
+  0xe6, 0x81, 0x1a, 0x51, 0xa8, 0x7c, 0xd4, 0x60,
+  0x7c, 0x45, 0xe2, 0xba, 0x5b, 0x42, 0xf3, 0xbf,
+  0x28, 0xaa, 0xf2, 0x90, 0xe4, 0x94, 0xdd, 0xaa,
+  0x22, 0xd3, 0x71, 0x33, 0xa1, 0x01, 0x43, 0x0e,
+  0xfa, 0x46, 0xd2, 0x6e, 0x55, 0x5e, 0x49, 0xeb,
+  0x94, 0xf0, 0xb0, 0xb1, 0x2e, 0xf2, 0x3d, 0x6c,
+  0x00, 0x5e, 0x01, 0x56, 0x3b, 0xfd, 0x5b, 0xa1,
+  0x2f, 0x63, 0x1d, 0xbf, 0xf9, 0xd8, 0x13, 0xf7,
+  0x4d, 0xb7, 0x1e, 0x3d, 0x98, 0xd2, 0xee, 0xb8,
+  0x48, 0xc8, 0x5b, 0x91, 0x0f, 0x54, 0x9e, 0x26,
+  0xb2, 0xc7, 0x3a, 0x6c, 0x8a, 0x35, 0xe1, 0xba
+};
+
+static const MDRawContextARM arm_raw_context = {
+  // context_flags
+  0x591b9e6a,
+  // iregs
+  {
+    0xa21594de,
+    0x820d8a25,
+    0xc4e133b2,
+    0x173a1c02,
+    0x105fb175,
+    0xe871793f,
+    0x5def70b3,
+    0xcee3a623,
+    0x7b3aa9b8,
+    0x52518537,
+    0x627012c5,
+    0x22723dcc,
+    0x16fcc971,
+    0x20988bcb,
+    0xf1ab806b,
+    0x99d5fc03,
+  },
+  // cpsr
+  0xb70df511,
+  // float_save
+  {
+    // fpscr
+    0xa1e1f7ce1077e6b5ULL,
+    // regs
+    {
+      0xbcb8d002eed7fbdeULL,
+      0x4dd26a43b96ae97fULL,
+      0x8eec22db8b31741cULL,
+      0xfd634bd7c5ad66a0ULL,
+      0x1681da0daeb3debeULL,
+      0x474a32bdf72d0b71ULL,
+      0xcaf464f8b1044834ULL,
+      0xcaa6592ae5c7582aULL,
+      0x4ee46889d877c3dbULL,
+      0xf8930cf301645cf5ULL,
+      0x4da7e9ebba27f7c7ULL,
+      0x69a7b02761944da3ULL,
+      0x2cda2b2e78195c06ULL,
+      0x66b227ab9b460a42ULL,
+      0x7e77e49e52ee0849ULL,
+      0xd62cd9663e76f255ULL,
+      0xe9370f082451514bULL,
+      0x50a1c674dd1b6029ULL,
+      0x405db4575829eac4ULL,
+      0x67b948764649eee7ULL,
+      0x93731885419229d4ULL,
+      0xdb0338bad72a4ce7ULL,
+      0xa0a451f996fca4c8ULL,
+      0xb4508ea668400a45ULL,
+      0xbff28c5c7a142423ULL,
+      0x4f31b42b96f3a431ULL,
+      0x2ce6789d4ea1ff37ULL,
+      0xfa150b52e4f82a3cULL,
+      0xe9ec40449e6ed4f3ULL,
+      0x5ceca87836fe2251ULL,
+      0x66f50de463ee238cULL,
+      0x42823efcd59ab511ULL,
+    },
+    // extra
+    {
+      0xe9e14cd2,
+      0x865bb640,
+      0x9f3f0b3e,
+      0x94a71c52,
+      0x3c012f19,
+      0x6436637c,
+      0x46ccedcb,
+      0x7b341be7,
+    }
+  }
+};
+
+static const uint8_t arm_expected_contents[] = {
+  0x6a, 0x9e, 0x1b, 0x59,
+  0xde, 0x94, 0x15, 0xa2,
+  0x25, 0x8a, 0x0d, 0x82,
+  0xb2, 0x33, 0xe1, 0xc4,
+  0x02, 0x1c, 0x3a, 0x17,
+  0x75, 0xb1, 0x5f, 0x10,
+  0x3f, 0x79, 0x71, 0xe8,
+  0xb3, 0x70, 0xef, 0x5d,
+  0x23, 0xa6, 0xe3, 0xce,
+  0xb8, 0xa9, 0x3a, 0x7b,
+  0x37, 0x85, 0x51, 0x52,
+  0xc5, 0x12, 0x70, 0x62,
+  0xcc, 0x3d, 0x72, 0x22,
+  0x71, 0xc9, 0xfc, 0x16,
+  0xcb, 0x8b, 0x98, 0x20,
+  0x6b, 0x80, 0xab, 0xf1,
+  0x03, 0xfc, 0xd5, 0x99,
+  0x11, 0xf5, 0x0d, 0xb7,
+  0xb5, 0xe6, 0x77, 0x10,
+  0xce, 0xf7, 0xe1, 0xa1,
+  0xde, 0xfb, 0xd7, 0xee,
+  0x02, 0xd0, 0xb8, 0xbc,
+  0x7f, 0xe9, 0x6a, 0xb9,
+  0x43, 0x6a, 0xd2, 0x4d,
+  0x1c, 0x74, 0x31, 0x8b,
+  0xdb, 0x22, 0xec, 0x8e,
+  0xa0, 0x66, 0xad, 0xc5,
+  0xd7, 0x4b, 0x63, 0xfd,
+  0xbe, 0xde, 0xb3, 0xae,
+  0x0d, 0xda, 0x81, 0x16,
+  0x71, 0x0b, 0x2d, 0xf7,
+  0xbd, 0x32, 0x4a, 0x47,
+  0x34, 0x48, 0x04, 0xb1,
+  0xf8, 0x64, 0xf4, 0xca,
+  0x2a, 0x58, 0xc7, 0xe5,
+  0x2a, 0x59, 0xa6, 0xca,
+  0xdb, 0xc3, 0x77, 0xd8,
+  0x89, 0x68, 0xe4, 0x4e,
+  0xf5, 0x5c, 0x64, 0x01,
+  0xf3, 0x0c, 0x93, 0xf8,
+  0xc7, 0xf7, 0x27, 0xba,
+  0xeb, 0xe9, 0xa7, 0x4d,
+  0xa3, 0x4d, 0x94, 0x61,
+  0x27, 0xb0, 0xa7, 0x69,
+  0x06, 0x5c, 0x19, 0x78,
+  0x2e, 0x2b, 0xda, 0x2c,
+  0x42, 0x0a, 0x46, 0x9b,
+  0xab, 0x27, 0xb2, 0x66,
+  0x49, 0x08, 0xee, 0x52,
+  0x9e, 0xe4, 0x77, 0x7e,
+  0x55, 0xf2, 0x76, 0x3e,
+  0x66, 0xd9, 0x2c, 0xd6,
+  0x4b, 0x51, 0x51, 0x24,
+  0x08, 0x0f, 0x37, 0xe9,
+  0x29, 0x60, 0x1b, 0xdd,
+  0x74, 0xc6, 0xa1, 0x50,
+  0xc4, 0xea, 0x29, 0x58,
+  0x57, 0xb4, 0x5d, 0x40,
+  0xe7, 0xee, 0x49, 0x46,
+  0x76, 0x48, 0xb9, 0x67,
+  0xd4, 0x29, 0x92, 0x41,
+  0x85, 0x18, 0x73, 0x93,
+  0xe7, 0x4c, 0x2a, 0xd7,
+  0xba, 0x38, 0x03, 0xdb,
+  0xc8, 0xa4, 0xfc, 0x96,
+  0xf9, 0x51, 0xa4, 0xa0,
+  0x45, 0x0a, 0x40, 0x68,
+  0xa6, 0x8e, 0x50, 0xb4,
+  0x23, 0x24, 0x14, 0x7a,
+  0x5c, 0x8c, 0xf2, 0xbf,
+  0x31, 0xa4, 0xf3, 0x96,
+  0x2b, 0xb4, 0x31, 0x4f,
+  0x37, 0xff, 0xa1, 0x4e,
+  0x9d, 0x78, 0xe6, 0x2c,
+  0x3c, 0x2a, 0xf8, 0xe4,
+  0x52, 0x0b, 0x15, 0xfa,
+  0xf3, 0xd4, 0x6e, 0x9e,
+  0x44, 0x40, 0xec, 0xe9,
+  0x51, 0x22, 0xfe, 0x36,
+  0x78, 0xa8, 0xec, 0x5c,
+  0x8c, 0x23, 0xee, 0x63,
+  0xe4, 0x0d, 0xf5, 0x66,
+  0x11, 0xb5, 0x9a, 0xd5,
+  0xfc, 0x3e, 0x82, 0x42,
+  0xd2, 0x4c, 0xe1, 0xe9,
+  0x40, 0xb6, 0x5b, 0x86,
+  0x3e, 0x0b, 0x3f, 0x9f,
+  0x52, 0x1c, 0xa7, 0x94,
+  0x19, 0x2f, 0x01, 0x3c,
+  0x7c, 0x63, 0x36, 0x64,
+  0xcb, 0xed, 0xcc, 0x46,
+  0xe7, 0x1b, 0x34, 0x7b
+};
+
+#endif // PROCESSOR_SYNTH_MINIDUMP_UNITTEST_DATA_H_
diff --git a/google-breakpad/src/processor/testdata/ascii_read_av.dmp b/google-breakpad/src/processor/testdata/ascii_read_av.dmp
new file mode 100755
index 0000000..3d2429a
--- /dev/null
+++ b/google-breakpad/src/processor/testdata/ascii_read_av.dmp
Binary files differ
diff --git a/google-breakpad/src/processor/testdata/ascii_read_av_block_write.dmp b/google-breakpad/src/processor/testdata/ascii_read_av_block_write.dmp
new file mode 100755
index 0000000..265e2b7
--- /dev/null
+++ b/google-breakpad/src/processor/testdata/ascii_read_av_block_write.dmp
Binary files differ
diff --git a/google-breakpad/src/processor/testdata/ascii_read_av_clobber_write.dmp b/google-breakpad/src/processor/testdata/ascii_read_av_clobber_write.dmp
new file mode 100755
index 0000000..f536c72
--- /dev/null
+++ b/google-breakpad/src/processor/testdata/ascii_read_av_clobber_write.dmp
Binary files differ
diff --git a/google-breakpad/src/processor/testdata/ascii_read_av_conditional.dmp b/google-breakpad/src/processor/testdata/ascii_read_av_conditional.dmp
new file mode 100755
index 0000000..eba8f9e
--- /dev/null
+++ b/google-breakpad/src/processor/testdata/ascii_read_av_conditional.dmp
Binary files differ
diff --git a/google-breakpad/src/processor/testdata/ascii_read_av_then_jmp.dmp b/google-breakpad/src/processor/testdata/ascii_read_av_then_jmp.dmp
new file mode 100755
index 0000000..1124f40
--- /dev/null
+++ b/google-breakpad/src/processor/testdata/ascii_read_av_then_jmp.dmp
Binary files differ
diff --git a/google-breakpad/src/processor/testdata/ascii_read_av_xchg_write.dmp b/google-breakpad/src/processor/testdata/ascii_read_av_xchg_write.dmp
new file mode 100755
index 0000000..066ebf1
--- /dev/null
+++ b/google-breakpad/src/processor/testdata/ascii_read_av_xchg_write.dmp
Binary files differ
diff --git a/google-breakpad/src/processor/testdata/ascii_write_av.dmp b/google-breakpad/src/processor/testdata/ascii_write_av.dmp
new file mode 100755
index 0000000..6f3e3bc
--- /dev/null
+++ b/google-breakpad/src/processor/testdata/ascii_write_av.dmp
Binary files differ
diff --git a/google-breakpad/src/processor/testdata/ascii_write_av_arg_to_call.dmp b/google-breakpad/src/processor/testdata/ascii_write_av_arg_to_call.dmp
new file mode 100755
index 0000000..9c0a21c
--- /dev/null
+++ b/google-breakpad/src/processor/testdata/ascii_write_av_arg_to_call.dmp
Binary files differ
diff --git a/google-breakpad/src/processor/testdata/exec_av_on_stack.dmp b/google-breakpad/src/processor/testdata/exec_av_on_stack.dmp
new file mode 100755
index 0000000..b783c43
--- /dev/null
+++ b/google-breakpad/src/processor/testdata/exec_av_on_stack.dmp
Binary files differ
diff --git a/google-breakpad/src/processor/testdata/linux_null_read_av.dmp b/google-breakpad/src/processor/testdata/linux_null_read_av.dmp
new file mode 100644
index 0000000..3bcb735
--- /dev/null
+++ b/google-breakpad/src/processor/testdata/linux_null_read_av.dmp
Binary files differ
diff --git a/google-breakpad/src/processor/testdata/linux_overflow.dmp b/google-breakpad/src/processor/testdata/linux_overflow.dmp
new file mode 100755
index 0000000..c604f8f
--- /dev/null
+++ b/google-breakpad/src/processor/testdata/linux_overflow.dmp
Binary files differ
diff --git a/google-breakpad/src/processor/testdata/linux_stacksmash.dmp b/google-breakpad/src/processor/testdata/linux_stacksmash.dmp
new file mode 100755
index 0000000..b19a28d
--- /dev/null
+++ b/google-breakpad/src/processor/testdata/linux_stacksmash.dmp
Binary files differ
diff --git a/google-breakpad/src/processor/testdata/linux_test_app.cc b/google-breakpad/src/processor/testdata/linux_test_app.cc
new file mode 100644
index 0000000..18f0f62
--- /dev/null
+++ b/google-breakpad/src/processor/testdata/linux_test_app.cc
@@ -0,0 +1,82 @@
+// Copyright (c) 2009, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Breakpad test application for Linux. When run, it generates one on-demand
+// minidump and then crashes, which should generate an on-crash minidump.
+// dump_syms can be used to extract symbol information for use in processing.
+
+// To build:
+// g++ -g -o linux_test_app -I ../../ -L../../client/linux linux_test_app.cc \
+//   -lbreakpad
+// Add -m32 to build a 32-bit executable, or -m64 for a 64-bit one
+// (assuming your environment supports it). Replace -g with -gstabs+ to
+// generate an executable with STABS symbols (needs -m32), or -gdwarf-2 for one
+// with DWARF symbols (32- or 64-bit)
+
+#include <stdio.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+#include <string>
+
+#include "client/linux/handler/exception_handler.h"
+#include "third_party/lss/linux_syscall_support.h"
+
+namespace {
+
+// google_breakpad::MinidumpCallback to invoke after minidump generation.
+static bool callback(const char *dump_path, const char *id,
+                     void *context,
+                     bool succeeded) {
+  if (succeeded) {
+    printf("dump guid is %s\n", id);
+  } else {
+    printf("dump failed\n");
+  }
+  fflush(stdout);
+
+  return succeeded;
+}
+
+static void CrashFunction() {
+  int *i = reinterpret_cast<int*>(0x45);
+  *i = 5;  // crash!
+}
+
+}  // namespace
+
+int main(int argc, char **argv) {
+  google_breakpad::ExceptionHandler eh(".", NULL, callback, NULL, true);
+  if (!eh.WriteMinidump()) {
+    printf("Failed to generate on-demand minidump\n");
+  }
+  CrashFunction();
+  printf("did not crash?\n");
+  return 0;
+}
diff --git a/google-breakpad/src/processor/testdata/microdump-arm.dmp b/google-breakpad/src/processor/testdata/microdump-arm.dmp
new file mode 100644
index 0000000..5f52e41
--- /dev/null
+++ b/google-breakpad/src/processor/testdata/microdump-arm.dmp
@@ -0,0 +1,33 @@
+W/google-breakpad( 3745): -----BEGIN BREAKPAD MICRODUMP-----
+W/google-breakpad( 3745): O A arm 02 armv7l OS VERSION INFO
+W/google-breakpad( 3745): S 0 FFEA68C0 FFEA6000 00002000
+W/google-breakpad( 3745): S FFEA6000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080020000A000002CA705F728000000000000000A000000000000000000000028000000
+W/google-breakpad( 3745): S FFEA6180 2168EAFFC59104F77C67EAFF7C62EAFF4062EAFF1E71B3AA040000001E71B3AA4062EAFF020000007C62EAFFD062EAFFE867EAFFFAFFFFFF8263EAFFC9A404F700000000000000000000000000000000000000008363EAFF000000005462EAFFFFFFFFFF7C67EAFF1E71B3AA00000000000000003B62EAFF800000000600000000000000000000003C62EAFF06000000000000001B71B3AA000000005C62EAFF0000000000000000000000004462EAFF80000000D4ED06F7000000000000000000000000000000000000000000000000000000000000000000000000E467EAFF00000000000000000000000000000000000000000000000000000000C862EAFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008263EAFF06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+W/google-breakpad( 3745): S FFEA6300 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003430313631380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+W/google-breakpad( 3745): S FFEA6480 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+W/google-breakpad( 3745): S FFEA6600 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BAE0417D0000000000000000060000002168EAFFD4ED06F71869EAFFF867EAFF070000001B71B3AAA76805F70000000000000000E467EAFF000000000000000000000000000000000000000000000000FFFFFFFF004000002768EAFF
+W/google-breakpad( 3745): S FFEA6780 0000000000000000285F20ABB467EAFF030000002768EAFF200000007702B3AA1869EAFF1F0000000868EAFF6347AEAA1869EAFF200000001869EAFF1F0000002768EAFF0868EAFF1869EAFF4548AEAA00000000800000000868EAFF2168EAFFD4ED06F7B549AEAA00000000000000000000000000000000010000000000000058585858585800002F646174612F6C6F63616C2F746D702F627265616B7061642E3430313631380000FD0000000000000000000031000000F941000002000000D0070000D0070000000000000000000000000000000000000010000000000000001000000000000080B220AB9468EAFFA0B220ABD53AAEAA3069EAFF914BAEAA3069EAFF4882B3AA083020ABF068EAFFA20E0000FFFFFFFF083020ABE99902F7C8DE08F7FF8102F700000000D0DE08F70069EAFFF068EAFFF868EAFFB3B2AEAAD068EAFF0000000000000000D4ED06F70500000000000000000000000000000003000000040000000000000000000000FFFFFFFF00000000FFFFFFFF00000000
+W/google-breakpad( 3745): S FFEA6900 010000000000000000000000000000000000000000000000485F20AB000000000000000000000000475F20AB285F20ABB0B220AB05000000D1D320AB379304F7AAB220AB80B220ABF869EAFF3BBAB3AA040000003BBAB3AAF869EAFF03000000346AEAFF906AEAFF346FEAFFFBFFFFFF605420ABC9A404F74C6AEAFFA86AEAFF4C6FEAFFEDFFFFFF303D20AB046AEAFF6FCAB3AA0C6AEAFFFFFFFFFFF4D306F73BBAB3AA0000000000000000F369EAFF0000000019000000EC69EAFF00000000F469EAFF050000000000000036BAB3AA00000000146AEAFF0C6AEAFFF469EAFF00000000FC69EAFF00000000D4ED06F70000000000000000000000000000000000000000000000000000000000000000000000002C6FEAFF0000000000000000DC3CB4AA000000005C6AEAFF786AEAFF00000000806AEAFF0000000000000000DC3CB4AA906AEAFF00000000986AEAFF0000000000000000000000000000000000000000000000005D6BEAFF30A820ABA06BEAFF0000000028BAB3AA0D000000
+W/google-breakpad( 3745): S FFEA6A80 38BAB3AA01000000605420AB05000000FAB9B3AA0D00000083C9B3AA06000000303D20AB13000000746FEAFF0B00000000A820ABF8A720AB904020AB78A820ABC52DAEAAC72DAEAA0A0000000A0000000000000046696C654944546573742F3100A820ABE06AEAFFFAB9B3AA0D0000004944546573742F3100000000F86AEAFFEC6AEAFF46696C6572000000874220ABCD6EEAFF6163B0AA6F000000864220ABCD6EEAFF6163B0AA65000000BDC620ABCD6EEAFF6163B0AA70000000BCC620ABCD6EEAFF6163B0AA79000000BBC620ABCD6EEAFF6163B0AA54000000BAC620ABCD6EEAFF6163B0AA65000000B9C620ABCD6EEAFF6163B0AA74000000B8C620ABCD6EEAFF6163B0AA61000000B7C620ABCD6EEAFF6163B0AA6C000000B6C620ABCD6EEAFF6163B0AA70000000B5C620ABCD6EEAFF6163B0AA6D000000B4C620ABCD6EEAFF6163B0AA65000000B3C620ABCD6EEAFF6163B0AA54000000B2C620ABCD6EEAFF6163B0AA68000000B1C620ABCD6EEAFF6163B0AA74000000B0C620AB
+W/google-breakpad( 3745): S FFEA6C00 CD6EEAFF6163B0AA67000000A7B220ABCD6EEAFF6163B0AA6E000000A6B220ABCD6EEAFF6163B0AA69000000A5B220ABCD6EEAFF6163B0AA72000000A4B220ABCD6EEAFF6163B0AA74000000A3B220ABCD6EEAFF6163B0AA53000000A2B220ABCD6EEAFF6163B0AA44000000A1B220ABCD6EEAFF6163B0AA4D000000A0B220ABCD6EEAFF6163B0AA690000009FB220ABCD6EEAFF6163B0AA690000009EB220ABCD6EEAFF6163B0AA630000009DB220ABCD6EEAFF6163B0AA730000009CB220ABCD6EEAFF6163B0AA74000000435F20ABCD6EEAFF6163B0AA65000000425F20AB00000000C4D720AB310000007762AEAAC4D720AB7E6EEAFFC06EEAFF693BB2AAC4D720AB01CAB3AAC4D720AB01CAB3AAC4D720AB00000000C06EEAFF20000000C06EEAFF08100000088120ABFBACB2AA088120ABC4D720AB01CAB3AAC4D720AB016FEAFF6163B0AA6D0000003B5F20ABCD6EEAFF6163B0AA670000003A5F20ABCD6EEAFF6163B0AA69000000395F20ABCD6EEAFF6163B0AAB8E8B4AACC6DEAFF
+W/google-breakpad( 3745): S FFEA6D80 15000000010000007D6EEAFF00D820ABC06EEAFF08100000088120AB01000000D83420ABC7AFB2AA01000000C4D720AB01CAB3AA0810000000000000200000002B0000002D000000B8E8B4AAB8E8B4AA00D820AB1C6EEAFF0000000000000000D06DEAFFD06DEAFF0A0000000A000000000000000000000000000000A35DB3AA01000000000000000A00000031000000000000007D6EEAFF7D6EEAFF005DB3AA286EEAFF5F24B2AAB8E8B4AA20D820AB12000000BCE8B4AAFC6EEAFFBB2CB2AAB8E8B4AA20D820ABB8D720AB02000000B0D720AB000000C0B8D720ABB8D720ABFC6EEAFF29F003F7B8D720ABC0D720ABB8D720ABA86EEAFFFC6EEAFF595D02F7B542AEAAC342AEAAA86EEAFF073BAEAAAC6EEAFFD19DAFAA00D820AB20000000576FEAFFD53AAEAA546FEAFF914BAEAA546FEAFF76C9B3AA546FEAFF146FEAFFBB00000048070000E0D720AB0300000018D820ABF4E3B4AA18D820AB0700000000000000485420ABD0D720AB8399B0AA23C8B3AAD0D720ABD0D720ABBAE0417D
+W/google-breakpad( 3745): S FFEA6F00 23C8B3AADC31B4AAD0D720AB783420AB49010000883520ABD0D720AB606FEAFFD83420AB41A7B0AA08000000010000001000000001000000783420AB8399B0AA485420AB783420ABDD1CD2F675A8B0AA08000000010000005AC8B3AAC85420AB08000000010000000800000001000000C85420AB00000000DD1CD2F649010000783420AB883520AB01000000FDA8B0AA715FB0AA0000000000000000C78404F7D160B0AA783420AB883520AB000000000100000000000000F04720ABFDAAB0AAF4E8B4AA01000000DD1CD2F64901000040E4B4AA40E4B4AA2EBCB3AAE7C8B3AA1EC9B3AA33C9B3AA02000000B0B220AB2C70EAFF00000000783420AB02000000192CAEAA0000000000000000000000006C70EAFF619AB0AA2C70EAFF7470EAFF020000003B2CAEAA02000000010000008070EAFF7470EAFF8070EAFF9F5E02F75870EAFF00000000000000000000000000000000842DAEAA00B9B4AA98B8B4AA90B8B4AAF8B8B4AA00000000FF2608F7020000007F7BEAFF0000000000000000
+W/google-breakpad( 3745): S FFEA7080 B97BEAFFDE7BEAFF0A7CEAFF1D7CEAFFD97DEAFF167EEAFF2F7EEAFF447EEAFF6E7EEAFF877EEAFF9E7EEAFFC87EEAFFE37EEAFFFD7EEAFF0A7FEAFF247FEAFF437FEAFFC27FEAFF0000000010000000D6B00700060000000010000011000000640000000300000034D0ACAA040000002000000005000000080000000700000000F007F7080000000000000009000000282DAEAA0B000000000000000C000000000000000D000000000000000E000000000000001700000000000000190000006C71EAFF1A0000001F0000001F000000D57FEAFF0F0000007C71EAFF00000000000000000000000000000000BAE0417DA395F6D9D5EFEE82959378DA76386C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+W/google-breakpad( 3745): S FFEA7200 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+W/google-breakpad( 3745): S FFEA7380 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+W/google-breakpad( 3745): S FFEA7500 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+W/google-breakpad( 3745): S FFEA7680 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+W/google-breakpad( 3745): S FFEA7800 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+W/google-breakpad( 3745): S FFEA7980 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+W/google-breakpad( 3745): S FFEA7B00 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002F646174612F6C6F63616C2F746D702F627265616B7061645F756E69747465737473002D2D67746573745F66696C7465723D2A4D6963726F2A005F3D2F646174612F6C6F63616C2F746D702F627265616B7061645F756E6974746573747300454D554C415445445F53544F524147455F534F555243453D2F6D6E742F7368656C6C2F656D756C6174656400414E44524F49445F444154413D2F6461746100424F4F54434C415353504154483D2F73797374656D2F6672616D65776F726B2F636F72652D6C69626172742E6A61723A2F73797374656D2F6672616D65776F726B2F636F6E7363727970742E6A61723A2F73797374656D2F6672616D65776F726B2F6F
+W/google-breakpad( 3745): S FFEA7C80 6B687474702E6A61723A2F73797374656D2F6672616D65776F726B2F636F72652D6A756E69742E6A61723A2F73797374656D2F6672616D65776F726B2F626F756E6379636173746C652E6A61723A2F73797374656D2F6672616D65776F726B2F6578742E6A61723A2F73797374656D2F6672616D65776F726B2F6672616D65776F726B2E6A61723A2F73797374656D2F6672616D65776F726B2F74656C6570686F6E792D636F6D6D6F6E2E6A61723A2F73797374656D2F6672616D65776F726B2F766F69702D636F6D6D6F6E2E6A61723A2F73797374656D2F6672616D65776F726B2F696D732D636F6D6D6F6E2E6A61723A2F73797374656D2F6672616D65776F726B2F6D6D732D636F6D6D6F6E2E6A61723A2F73797374656D2F6672616D65776F726B2F616E64726F69642E706F6C6963792E6A61723A2F73797374656D2F6672616D65776F726B2F6170616368652D786D6C2E6A617200504154483D2F7362696E3A2F76656E646F722F62696E3A2F73797374656D2F7362696E3A2F7379
+W/google-breakpad( 3745): S FFEA7E00 7374656D2F62696E3A2F73797374656D2F7862696E004C4F4F505F4D4F554E54504F494E543D2F6D6E742F6F626200414E44524F49445F524F4F543D2F73797374656D00454D554C415445445F53544F524147455F5441524745543D2F73746F726167652F656D756C6174656400414E44524F49445F53544F524147453D2F73746F7261676500414E44524F49445F534F434B45545F616462643D31310045585445524E414C5F53544F524147453D2F73746F726167652F656D756C617465642F6C656761637900414E44524F49445F4153534554533D2F73797374656D2F617070004C445F5052454C4F41443D6C6962736967636861696E2E736F0052414E444F4D3D313131373200415345435F4D4F554E54504F494E543D2F6D6E742F6173656300414E44524F49445F50524F50455254595F574F524B53504143453D392C300053595354454D534552564552434C415353504154483D2F73797374656D2F6672616D65776F726B2F73657276696365732E6A61723A2F73797374656D2F
+W/google-breakpad( 3745): S FFEA7F80 6672616D65776F726B2F65746865726E65742D736572766963652E6A61723A2F73797374656D2F6672616D65776F726B2F776966692D736572766963652E6A617200414E44524F49445F424F4F544C4F474F3D31002F646174612F6C6F63616C2F746D702F627265616B7061645F756E69747465737473000000000000000000
+W/google-breakpad( 3745): C 06000040000000000000000000000000000000000069EAFFF068EAFFF868EAFF0469EAFFE068EAFF0069EAFF3069EAFFA20E000000000000C068EAFF07B3AEAA07B3AEAA000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+W/google-breakpad( 3745): M AAACD000 00000000 0007C000 DA7778FB66018A4E9B4110ED06E730D00 breakpad_unittests
+W/google-breakpad( 3745): M F6FCA000 00000000 00004000 56B149396A4DAF176E26B4A85DA87BF30 libnetd_client.so
+W/google-breakpad( 3745): M F6FEE000 00000000 00004000 DFCD7772F3A5BD1E84A50C4DBFDE6F570 libstdc++.so
+W/google-breakpad( 3745): M F6FF2000 00000000 00019000 AE3467401278371A956801500FC8187D0 libm.so
+W/google-breakpad( 3745): M F700C000 00000000 00007000 0A492DEF82842051996A468D87F23F010 liblog.so
+W/google-breakpad( 3745): M F7014000 00000000 0005A000 167F187B09A27F7444EF989603AAFD3D0 libc.so
+W/google-breakpad( 3745): -----END BREAKPAD MICRODUMP-----
diff --git a/google-breakpad/src/processor/testdata/microdump-arm64.dmp b/google-breakpad/src/processor/testdata/microdump-arm64.dmp
new file mode 100644
index 0000000..f5cc4a4
--- /dev/null
+++ b/google-breakpad/src/processor/testdata/microdump-arm64.dmp
@@ -0,0 +1,45 @@
+W/google-breakpad( 3728): -----BEGIN BREAKPAD MICRODUMP-----
+W/google-breakpad( 3728): O A arm64 02 aarch64 OS 64 VERSION INFO
+W/google-breakpad( 3728): S 0 0000007FE2BA6120 0000007FE2BA6000 0000000000003000
+W/google-breakpad( 3728): S 0000007FE2BA6000 0700000000000000A060BAE27F0000007060BAE27F000000E4006A5F550000007060BAE27F000000FC006A5F550000001000000000000000D0006E5F550000002061BAE27F0000004C6E635F550000002061BAE27F0000002061BAE27F000000F060BAE27F000000D0FFFFFF80FFFFFFD060BAE27F00000020142B807F00000010E04E9555000000E065BAE27F000000A061BAE27F00000000406B5F55000000D060BAE27F00000058142B807F00000010E04E955500000000000000000000000104104001041040FFFFFFFFFFFFFFFFF060BAE27F00000048E62A807F000000E8C036807F00000040E62A807F0000002061BAE27F000000E86E635F55000000506ABAE27F000000E065BAE27F000000A061BAE27F000000FEFE2E7273636471507ABAE27F0000003C32665F55000000D02250955500000070E14E955500000070E14E955500000090E34E95550000004A62D1F64901000000F06D5F5500000001000000000000004962D1F6490100000100000000000000C9356B5F55000000
+W/google-breakpad( 3728): S 0000007FE2BA6180 00000000000000009863BAE27F0000000000000005000000000000000000000003000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002F646174612F6C6F63616C2F746D702F627265616B7061642E323839333833000F62BAE27F000000F061BAE27F000000D0F34E9555000000000000000000000000000000000000000000000000000000CAF34E9555000000A0F34E95550000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+W/google-breakpad( 3728): S 0000007FE2BA6300 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+W/google-breakpad( 3728): S 0000007FE2BA6480 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000
+W/google-breakpad( 3728): S 0000007FE2BA6600 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004067BAE27F000000A04E2D807F0000004067BAE27F000000104E2D807F000000186E33807F0000002000000000000000006033807F000000007033807F00000090E64E9555000000000000000000000000000000000000000000000000000000A067BAE27F00000010C22A807F000000020000000000000000F06D5F550000002079BAE27F00000058F66D5F55000000D067BAE27F000000986A2D807F000000
+W/google-breakpad( 3728): S 0000007FE2BA6780 80E64E9555000000006033807F00000090E64E955500000058F66D5F5500000020B5625F550000001CB5625F550000000068BAE27F000000C8C12A807F0000004868BAE27F0000008068BAE27F0000002079BAE27F00000058F66D5F5500000020B5625F550000008068BAE27F0000002079BAE27F00000058F66D5F550000001068BAE27F000000D0B9665F550000008078BAE27F000000987C665F550000002079BAE27F00000070E14E955500000060E04E9555000000000000000000000000000000000000002F000000000000000000000000000000000000000000000000000000000000004968BAE27F0000004868BAE27F0000002F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+W/google-breakpad( 3728): S 0000007FE2BA6900 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+W/google-breakpad( 3728): S 0000007FE2BA6A80 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+W/google-breakpad( 3728): S 0000007FE2BA6C00 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+W/google-breakpad( 3728): S 0000007FE2BA6D80 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+W/google-breakpad( 3728): S 0000007FE2BA6F00 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008070BAE27F000000DC4C2E807F0000002300000000000000000C509555000000702333807F0000000000000000000000
+W/google-breakpad( 3728): S 0000007FE2BA7080 B070BAE27F000000B8672E807F000000C070BAE27F000000DC4C2E807F0000002E00000000000000000C5095550000001071BAE27F000000A4882E807F0000000073BAE27F000000B073BAE27F0000000D000000000000000D00000000000000DB336B5F55000000702333807F0000005071BAE27F000000A4882E807F0000004073BAE27F000000F073BAE27F0000007071BAE27F0000001C8A2E807F000000F472BAE27F000000F073BAE27F0000000073BAE27F000000E1336B5F55000000E1336B5F55000000702333807F0000000000000000000000050000000000000005000000000000004073BAE27F000000F078BAE27F000000F0BB2E807F000000702333807F00000090E34E955500000090384F955500000090E34E95550000004A62D1F64901000000F06D5F5500000001000000000000004962D1F6490100000100000000000000C9356B5F55000000000000000000000050E24E9555000000D3416B5F550000000A426B5F5500000000000000000000000000000000000000
+W/google-breakpad( 3728): S 0000007FE2BA7200 00000000000000000000000000000000000000000000000000000000000000002F73BAE27F0000005073BAE27F0000003F73BAE280FFFFFF2873BAE27F0000000000000000000000107ABAE27F0000000000000000000000207ABAE27F0000000000000000000000A772BAE27F0000007F73BAE280FFFFFFCDCCCCCCCCCCCCCC0000000000000000507ABAE27F000000E46E30807F000000607ABAE27F000000E872BAE27F000000E772BAE27F000000000000007F000000030000007F000000000000000000000003000000CCCCCCCC0000000000000000E07ABAE27F00000000000000000000006000655F550000008DEE4E95000000008100BAE27F000000000000000000000000000000000000000000000000000000507ABAE27F000000207ABAE27F000000D0FFFFFF80FFFFFF307ABAE27F000000D0FFFFFF80FFFFFFF073BAE27F0000000000000000000000507ABAE27F000000507ABAE27F000000107ABAE27F000000C8FFFFFF80FFFFFF207ABAE27F000000C8FFFFFF80FFFFFF
+W/google-breakpad( 3728): S 0000007FE2BA7380 A073BAE27F00000060DC655F550000004074BAE27F0000000000000000000000E07ABAE27F000000E07ABAE27F000000CE336B5F550000000D00000000000000A0336B5F550000000D00000000000000C6F34E95550000008179BAE27F0000000074BAE27F00000060DC655F55000000DE336B5F550000000100000000000000C0384F95550000000500000000000000A8394F955500000013000000000000004074BAE27F00000060DC655F55000000C3F34E95550000008179BAE27F000000A0336B5F550000000D00000000000000C2F34E95550000008179BAE27F0000008074BAE27F00000060DC655F55000000C1F34E95550000008179BAE27F000000A074BAE27F00000060DC655F55000000C0F34E95550000008179BAE27F000000C074BAE27F00000060DC655F55000000BFF34E95550000008179BAE27F000000E074BAE27F00000060DC655F55000000BEF34E95550000008179BAE27F0000000075BAE27F00000060DC655F55000000BDF34E95550000008179BAE27F000000
+W/google-breakpad( 3728): S 0000007FE2BA7500 2075BAE27F00000060DC655F55000000BCF34E95550000008179BAE27F0000004075BAE27F00000060DC655F550000006B79BAE27F0000008179BAE27F0000006075BAE27F00000060DC655F550000006A79BAE27F0000008179BAE27F0000008075BAE27F00000060DC655F550000006979BAE27F0000008179BAE27F000000A075BAE27F00000060DC655F550000006879BAE27F0000008179BAE27F000000C075BAE27F00000060DC655F550000006779BAE27F0000008179BAE27F000000E075BAE27F00000060DC655F550000006679BAE27F0000008179BAE27F0000000076BAE27F00000060DC655F550000006579BAE27F0000008179BAE27F0000002076BAE27F00000060DC655F550000006479BAE27F0000008179BAE27F0000004076BAE27F00000060DC655F550000006379BAE27F0000008179BAE27F0000006076BAE27F00000060DC655F550000006279BAE27F0000008179BAE27F0000008076BAE27F00000060DC655F550000006179BAE27F0000008179BAE27F000000
+W/google-breakpad( 3728): S 0000007FE2BA7680 A076BAE27F00000060DC655F550000006079BAE27F0000008179BAE27F000000C076BAE27F00000060DC655F550000005F79BAE27F0000008179BAE27F000000E076BAE27F00000060DC655F550000005E79BAE27F0000008179BAE27F0000000077BAE27F00000060DC655F550000005D79BAE27F0000008179BAE27F0000002077BAE27F00000060DC655F55000000E077BAE27F000000AC74685F55000000F077BAE27F000000AC74685F550000004023509555000000A078BAE27F00000010235095550000009878BAE27F0000002078BAE27F000000AC74685F550000008077BAE27F000000C006635F5500000098225095550000003100000000000000B077BAE27F00000088BB695F5500000098225095550000005979BAE27F0000005A79BAE27F0000004488685F550000001078BAE27F00000054BF695F55000000B078BAE27F000000010000000000000050834F95550000008078BAE27F0000005979BAE27F000000982250955500000098225095550000000100000000000000
+W/google-breakpad( 3728): S 0000007FE2BA7800 2D00000000000000C8FF6D5F55000000F078BAE27F00000068C4695F550000005A79BAE27F0000001023509555000000200000000000000098225095550000000100000000000000007ABAE27F000000B078BAE27F000000CCBB2E807F000000B078BAE27F000000FCBB2E807F000000702333807F0000000D00000000000000020000000000000090E34E9555000000F078BAE27F000000CCBB2E807F000000F078BAE27F000000FCBB2E807F000000702333807F000000190000000000000090384F955500000090E34E95550000004A62D1F649010000CE336B5F55000000507ABAE27F000000443272DD1F92C7154079BAE27F000000C0752E807F00000090384F955500000090E34E95550000005079BAE27F000000DC336B5F550000008079BAE27F000000A04E2D807F0000008079BAE27F000000104E2D807F000000186E33807F0000006001000000000000006033807F000000007033807F000000F022509555000000C8FFFFFF80FFFFFFC079BAE27F00000090DD625F55000000
+W/google-breakpad( 3728): S 0000007FE2BA7980 60235095550000000700000000000000D7F66D5F55000000D0F66D5F55000000C079BAE27F00000068DD625F5500000010245095550000000000000000000000F079BAE27F000000C4F2655F55000000007ABAE27F000000F031665F55000000D022509555000000D022509555000000107ABAE27F00000060FE655F55000000107ABAE27F0000001441665F55000000407ABAE27F000000F031665F55000000D02250955500000070E14E9555000000607ABAE27F000000F031665F55000000507ABAE27F0000001832665F55000000807ABAE27F0000008C44665F55000000D02250955500000070E14E955500000020000000000000000100000000000000A07ABAE27F000000B845665F5500000090384F9555000000D022509555000000E07ABAE27F0000007446665F55000000A0394F955500000070E14E955500000090E34E955500000001000000000000004A62D1F6490100005EC60A0000000000207BBAE27F0000004C49665F5500000070E14E95550000000000000000000000
+W/google-breakpad( 3728): S 0000007FE2BA7B00 90E34E955500000002000000000000000000000000000000D048665F55000000C07BBAE27F000000684B665F55000000000000000000000070E14E9555000000020000000000000060B3625F550000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C07BBAE27F000000E0054F9555000000C07BBAE27F000000604B665F55000000F07BBAE27F00000098B3625F550000001C7CBAE27F000000887CBAE27F0000000200000000000000A0F34E9555000000207CBAE27F0000008CC32A807F000000A07CBAE27F0000000000000000000000887CBAE27F0000000010000001000000507CBAE27F00000004B5625F550000000000000000000000000000000000000000000000000000000000000000000000000000000000000050B635807F0000000000000000000000D07D6D5F55000000E07D6D5F55000000A07E6D5F55000000
+W/google-breakpad( 3728): S 0000007FE2BA7C80 02000000000000007F8BBAE27F00000000000000000000000000000000000000B98BBAE27F000000DE8BBAE27F0000000A8CBAE27F0000001D8CBAE27F000000D98DBAE27F000000168EBAE27F0000002F8EBAE27F000000448EBAE27F0000006E8EBAE27F000000878EBAE27F0000009E8EBAE27F000000C88EBAE27F000000E38EBAE27F000000FD8EBAE27F0000000A8FBAE27F000000248FBAE27F000000438FBAE27F000000C28FBAE27F00000000000000000000002100000000000000008035807F0000001000000000000000FB00000000000000060000000000000000100000000000001100000000000000640000000000000003000000000000004080605F550000000400000000000000380000000000000005000000000000000800000000000000070000000000000000A035807F000000080000000000000000000000000000000900000000000000A4B4625F550000000B0000000000000000000000000000000C0000000000000000000000000000000D00000000000000
+W/google-breakpad( 3728): S 0000007FE2BA7E00 00000000000000000E000000000000000000000000000000170000000000000000000000000000001900000000000000687EBAE27F0000001F00000000000000D58FBAE27F0000000F00000000000000787EBAE27F00000000000000000000000000000000000000443272DD1F92C715BDF280FA6D8DE039616172636836340000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+W/google-breakpad( 3728): S 0000007FE2BA7F80 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+W/google-breakpad( 3728): S 0000007FE2BA8100 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+W/google-breakpad( 3728): S 0000007FE2BA8280 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+W/google-breakpad( 3728): S 0000007FE2BA8400 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+W/google-breakpad( 3728): S 0000007FE2BA8580 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+W/google-breakpad( 3728): S 0000007FE2BA8700 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+W/google-breakpad( 3728): S 0000007FE2BA8880 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+W/google-breakpad( 3728): S 0000007FE2BA8A00 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002F
+W/google-breakpad( 3728): S 0000007FE2BA8B80 646174612F6C6F63616C2F746D702F627265616B7061645F756E69747465737473002D2D67746573745F66696C7465723D2A4D6963726F2A005F3D2F646174612F6C6F63616C2F746D702F627265616B7061645F756E6974746573747300454D554C415445445F53544F524147455F534F555243453D2F6D6E742F7368656C6C2F656D756C6174656400414E44524F49445F444154413D2F6461746100424F4F54434C415353504154483D2F73797374656D2F6672616D65776F726B2F636F72652D6C69626172742E6A61723A2F73797374656D2F6672616D65776F726B2F636F6E7363727970742E6A61723A2F73797374656D2F6672616D65776F726B2F6F6B687474702E6A61723A2F73797374656D2F6672616D65776F726B2F636F72652D6A756E69742E6A61723A2F73797374656D2F6672616D65776F726B2F626F756E6379636173746C652E6A61723A2F73797374656D2F6672616D65776F726B2F6578742E6A61723A2F73797374656D2F6672616D65776F726B2F6672616D6577
+W/google-breakpad( 3728): S 0000007FE2BA8D00 6F726B2E6A61723A2F73797374656D2F6672616D65776F726B2F74656C6570686F6E792D636F6D6D6F6E2E6A61723A2F73797374656D2F6672616D65776F726B2F766F69702D636F6D6D6F6E2E6A61723A2F73797374656D2F6672616D65776F726B2F696D732D636F6D6D6F6E2E6A61723A2F73797374656D2F6672616D65776F726B2F6D6D732D636F6D6D6F6E2E6A61723A2F73797374656D2F6672616D65776F726B2F616E64726F69642E706F6C6963792E6A61723A2F73797374656D2F6672616D65776F726B2F6170616368652D786D6C2E6A617200504154483D2F7362696E3A2F76656E646F722F62696E3A2F73797374656D2F7362696E3A2F73797374656D2F62696E3A2F73797374656D2F7862696E004C4F4F505F4D4F554E54504F494E543D2F6D6E742F6F626200414E44524F49445F524F4F543D2F73797374656D00454D554C415445445F53544F524147455F5441524745543D2F73746F726167652F656D756C6174656400414E44524F49445F53544F524147453D2F73
+W/google-breakpad( 3728): S 0000007FE2BA8E80 746F7261676500414E44524F49445F534F434B45545F616462643D31310045585445524E414C5F53544F524147453D2F73746F726167652F656D756C617465642F6C656761637900414E44524F49445F4153534554533D2F73797374656D2F617070004C445F5052454C4F41443D6C6962736967636861696E2E736F0052414E444F4D3D313638323700415345435F4D4F554E54504F494E543D2F6D6E742F6173656300414E44524F49445F50524F50455254595F574F524B53504143453D392C300053595354454D534552564552434C415353504154483D2F73797374656D2F6672616D65776F726B2F73657276696365732E6A61723A2F73797374656D2F6672616D65776F726B2F65746865726E65742D736572766963652E6A61723A2F73797374656D2F6672616D65776F726B2F776966692D736572766963652E6A617200414E44524F49445F424F4F544C4F474F3D31002F646174612F6C6F63616C2F746D702F627265616B7061645F756E69747465737473000000000000000000
+W/google-breakpad( 3728): C 06000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000506ABAE27F000000E065BAE27F000000E061BAE27F00000000406B5F550000008062BAE27F0000005062BAE27F000000514C6B5F55000000910E0000000000002062BAE27F000000F061BAE27F0000002061BAE27F0000006C6F635F550000002061BAE27F0000006C6F635F550000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+W/google-breakpad( 3728): M 000000555F608000 0000000000000000 00000000000C0000 D6D1FEC9A15DE7F38A236898871A2E770 breakpad_unittests
+W/google-breakpad( 3728): M 0000007F801F6000 0000000000000000 0000000000013000 7735F44BA6D7C27FD5C3636A43369B7C0 libnetd_client.so
+W/google-breakpad( 3728): M 0000007F80229000 0000000000000000 0000000000014000 380C0B7CD8FA3F094BC3BA58A81CBAD00 libstdc++.so
+W/google-breakpad( 3728): M 0000007F8023D000 0000000000000000 000000000003D000 F832D47D1E237E46D835991594DA6E890 libm.so
+W/google-breakpad( 3728): M 0000007F8027B000 0000000000000000 0000000000019000 C407B93F87A835BE05451FC7B0B3E65E0 liblog.so
+W/google-breakpad( 3728): M 0000007F80295000 0000000000000000 000000000009E000 479D5438753E27F019F2C9980DDBF4F30 libc.so
+W/google-breakpad( 3728): M 0000007F80341000 0000000000000000 0000000000013000 9DA3FF8EF9CA0FDC481292EE530DF6EC0 libsigchain.so
+W/google-breakpad( 3728): M 0000007F80358000 0000000000000000 0000000000002000 672B2CD6CF8AF6C43BD70F2AB02B3D0C0 linux-gate.so
+W/google-breakpad( 3728): -----END BREAKPAD MICRODUMP-----
diff --git a/google-breakpad/src/processor/testdata/microdump.stackwalk-arm.out b/google-breakpad/src/processor/testdata/microdump.stackwalk-arm.out
new file mode 100644
index 0000000..4fbeb8f
--- /dev/null
+++ b/google-breakpad/src/processor/testdata/microdump.stackwalk-arm.out
@@ -0,0 +1,42 @@
+Operating system: Android
+                  OS VERSION INFO
+CPU: armv7l
+     2 CPUs
+
+Crash reason:  
+Crash address: 0x0
+Process uptime: not available
+
+Thread 0 (crashed)
+ 0  breakpad_unittests!MicrodumpWriterTest_Setup_Test::TestBody [gtest.h : 1481 + 0x1]
+ 
+    Found by: given as instruction pointer in context
+ 1  breakpad_unittests!testing::Test::Run [gtest.cc : 2435 + 0x17]
+ 
+    Found by: call frame info
+ 2  breakpad_unittests!testing::TestInfo::Run [gtest.cc : 2610 + 0x5]
+ 
+    Found by: call frame info
+ 3  breakpad_unittests!testing::TestCase::Run [gtest.cc : 2728 + 0x3]
+ 
+    Found by: call frame info
+ 4  breakpad_unittests!testing::internal::UnitTestImpl::RunAllTests [gtest.cc : 4591 + 0x3]
+ 
+    Found by: call frame info
+ 5  breakpad_unittests!testing::UnitTest::Run [gtest.cc : 2418 + 0x5]
+ 
+    Found by: call frame info
+ 6  breakpad_unittests!main [gtest.h : 2326 + 0x3]
+ 
+    Found by: call frame info
+ 7  libc.so + 0x11e9d
+ 
+    Found by: call frame info
+
+Loaded modules:
+0xaaacd000 - 0xaab48fff  breakpad_unittests  ???
+0xf6fca000 - 0xf6fcdfff  libnetd_client.so  ???
+0xf6fee000 - 0xf6ff1fff  libstdc++.so  ???
+0xf6ff2000 - 0xf700afff  libm.so  ???
+0xf700c000 - 0xf7012fff  liblog.so  ???
+0xf7014000 - 0xf706dfff  libc.so  ???  (WARNING: No symbols, libc.so, 167F187B09A27F7444EF989603AAFD3D0)
diff --git a/google-breakpad/src/processor/testdata/microdump.stackwalk-arm64.out b/google-breakpad/src/processor/testdata/microdump.stackwalk-arm64.out
new file mode 100644
index 0000000..4f6cd97
--- /dev/null
+++ b/google-breakpad/src/processor/testdata/microdump.stackwalk-arm64.out
@@ -0,0 +1,47 @@
+Operating system: Android
+                  OS 64 VERSION INFO
+CPU: aarch64
+     2 CPUs
+
+Crash reason:  
+Crash address: 0x0
+Process uptime: not available
+
+Thread 0 (crashed)
+ 0  breakpad_unittests!MicrodumpWriterTest_Setup_Test::TestBody [microdump_writer_unittest.cc : 77 + 0xc]
+ 
+    Found by: given as instruction pointer in context
+ 1  breakpad_unittests!testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void> [gtest.cc : 2418 + 0x4]
+ 
+    Found by: call frame info
+ 2  breakpad_unittests!testing::Test::Run [gtest.cc : 2435 + 0x14]
+ 
+    Found by: call frame info
+ 3  breakpad_unittests!testing::TestInfo::Run [gtest.cc : 2610 + 0x4]
+ 
+    Found by: call frame info
+ 4  breakpad_unittests!testing::TestCase::Run [gtest.cc : 2728 + 0x0]
+ 
+    Found by: call frame info
+ 5  breakpad_unittests!testing::internal::UnitTestImpl::RunAllTests [gtest.cc : 4591 + 0x0]
+ 
+    Found by: call frame info
+ 6  breakpad_unittests!testing::UnitTest::Run [gtest.cc : 2418 + 0x4]
+ 
+    Found by: call frame info
+ 7  breakpad_unittests!main [gtest.h : 2326 + 0x0]
+ 
+    Found by: call frame info
+ 8  libc.so + 0x17388
+ 
+    Found by: call frame info
+
+Loaded modules:
+0x555f608000 - 0x555f6c7fff  breakpad_unittests  ???
+0x7f801f6000 - 0x7f80208fff  libnetd_client.so  ???
+0x7f80229000 - 0x7f8023cfff  libstdc++.so  ???
+0x7f8023d000 - 0x7f80279fff  libm.so  ???
+0x7f8027b000 - 0x7f80293fff  liblog.so  ???
+0x7f80295000 - 0x7f80332fff  libc.so  ???  (WARNING: No symbols, libc.so, 479D5438753E27F019F2C9980DDBF4F30)
+0x7f80341000 - 0x7f80353fff  libsigchain.so  ???
+0x7f80358000 - 0x7f80359fff  linux-gate.so  ???
diff --git a/google-breakpad/src/processor/testdata/microdump.stackwalk.machine_readable-arm.out b/google-breakpad/src/processor/testdata/microdump.stackwalk.machine_readable-arm.out
new file mode 100644
index 0000000..55abe0d
--- /dev/null
+++ b/google-breakpad/src/processor/testdata/microdump.stackwalk.machine_readable-arm.out
@@ -0,0 +1,18 @@
+OS|Android|OS VERSION INFO
+CPU|armv7l||2
+Crash||0x0|0
+Module|breakpad_unittests||breakpad_unittests|DA7778FB66018A4E9B4110ED06E730D00|0xaaacd000|0xaab48fff|0
+Module|libnetd_client.so||libnetd_client.so|56B149396A4DAF176E26B4A85DA87BF30|0xf6fca000|0xf6fcdfff|0
+Module|libstdc++.so||libstdc++.so|DFCD7772F3A5BD1E84A50C4DBFDE6F570|0xf6fee000|0xf6ff1fff|0
+Module|libm.so||libm.so|AE3467401278371A956801500FC8187D0|0xf6ff2000|0xf700afff|0
+Module|liblog.so||liblog.so|0A492DEF82842051996A468D87F23F010|0xf700c000|0xf7012fff|0
+Module|libc.so||libc.so|167F187B09A27F7444EF989603AAFD3D0|0xf7014000|0xf706dfff|0
+
+0|0|breakpad_unittests|MicrodumpWriterTest_Setup_Test::TestBody|/s/clank/src/out_arm/Release/../../testing/gtest/include/gtest/gtest.h|1481|0x1
+0|1|breakpad_unittests|testing::Test::Run|/s/clank/src/out_arm/Release/../../testing/gtest/src/gtest.cc|2435|0x17
+0|2|breakpad_unittests|testing::TestInfo::Run|/s/clank/src/out_arm/Release/../../testing/gtest/src/gtest.cc|2610|0x5
+0|3|breakpad_unittests|testing::TestCase::Run|/s/clank/src/out_arm/Release/../../testing/gtest/src/gtest.cc|2728|0x3
+0|4|breakpad_unittests|testing::internal::UnitTestImpl::RunAllTests|/s/clank/src/out_arm/Release/../../testing/gtest/src/gtest.cc|4591|0x3
+0|5|breakpad_unittests|testing::UnitTest::Run|/s/clank/src/out_arm/Release/../../testing/gtest/src/gtest.cc|2418|0x5
+0|6|breakpad_unittests|main|/s/clank/src/out_arm/Release/../../testing/gtest/include/gtest/gtest.h|2326|0x3
+0|7|libc.so||||0x11e9d
diff --git a/google-breakpad/src/processor/testdata/microdump.stackwalk.machine_readable-arm64.out b/google-breakpad/src/processor/testdata/microdump.stackwalk.machine_readable-arm64.out
new file mode 100644
index 0000000..eb482ee
--- /dev/null
+++ b/google-breakpad/src/processor/testdata/microdump.stackwalk.machine_readable-arm64.out
@@ -0,0 +1,21 @@
+OS|Android|OS 64 VERSION INFO
+CPU|aarch64||2
+Crash||0x0|0
+Module|breakpad_unittests||breakpad_unittests|D6D1FEC9A15DE7F38A236898871A2E770|0x555f608000|0x555f6c7fff|0
+Module|libnetd_client.so||libnetd_client.so|7735F44BA6D7C27FD5C3636A43369B7C0|0x7f801f6000|0x7f80208fff|0
+Module|libstdc++.so||libstdc++.so|380C0B7CD8FA3F094BC3BA58A81CBAD00|0x7f80229000|0x7f8023cfff|0
+Module|libm.so||libm.so|F832D47D1E237E46D835991594DA6E890|0x7f8023d000|0x7f80279fff|0
+Module|liblog.so||liblog.so|C407B93F87A835BE05451FC7B0B3E65E0|0x7f8027b000|0x7f80293fff|0
+Module|libc.so||libc.so|479D5438753E27F019F2C9980DDBF4F30|0x7f80295000|0x7f80332fff|0
+Module|libsigchain.so||libsigchain.so|9DA3FF8EF9CA0FDC481292EE530DF6EC0|0x7f80341000|0x7f80353fff|0
+Module|linux-gate.so||linux-gate.so|672B2CD6CF8AF6C43BD70F2AB02B3D0C0|0x7f80358000|0x7f80359fff|0
+
+0|0|breakpad_unittests|MicrodumpWriterTest_Setup_Test::TestBody|/s/clank/src/out/Release/../../breakpad/src/client/linux/microdump_writer/microdump_writer_unittest.cc|77|0xc
+0|1|breakpad_unittests|testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>|/s/clank/src/out/Release/../../testing/gtest/src/gtest.cc|2418|0x4
+0|2|breakpad_unittests|testing::Test::Run|/s/clank/src/out/Release/../../testing/gtest/src/gtest.cc|2435|0x14
+0|3|breakpad_unittests|testing::TestInfo::Run|/s/clank/src/out/Release/../../testing/gtest/src/gtest.cc|2610|0x4
+0|4|breakpad_unittests|testing::TestCase::Run|/s/clank/src/out/Release/../../testing/gtest/src/gtest.cc|2728|0x0
+0|5|breakpad_unittests|testing::internal::UnitTestImpl::RunAllTests|/s/clank/src/out/Release/../../testing/gtest/src/gtest.cc|4591|0x0
+0|6|breakpad_unittests|testing::UnitTest::Run|/s/clank/src/out/Release/../../testing/gtest/src/gtest.cc|2418|0x4
+0|7|breakpad_unittests|main|/s/clank/src/out/Release/../../testing/gtest/include/gtest/gtest.h|2326|0x0
+0|8|libc.so||||0x17388
diff --git a/google-breakpad/src/processor/testdata/minidump2.dmp b/google-breakpad/src/processor/testdata/minidump2.dmp
new file mode 100644
index 0000000..1a6feee
--- /dev/null
+++ b/google-breakpad/src/processor/testdata/minidump2.dmp
Binary files differ
diff --git a/google-breakpad/src/processor/testdata/minidump2.dump.out b/google-breakpad/src/processor/testdata/minidump2.dump.out
new file mode 100644
index 0000000..8585c89
--- /dev/null
+++ b/google-breakpad/src/processor/testdata/minidump2.dump.out
@@ -0,0 +1,706 @@
+MDRawHeader
+  signature            = 0x504d444d
+  version              = 0x5128a793
+  stream_count         = 9
+  stream_directory_rva = 0x20
+  checksum             = 0x0
+  time_date_stamp      = 0x45d35f73 2007-02-14 19:13:55
+  flags                = 0x0
+
+mDirectory[0]
+MDRawDirectory
+  stream_type        = 0x3 (MD_THREAD_LIST_STREAM)
+  location.data_size = 100
+  location.rva       = 0x184
+
+mDirectory[1]
+MDRawDirectory
+  stream_type        = 0x4 (MD_MODULE_LIST_STREAM)
+  location.data_size = 1408
+  location.rva       = 0x1e8
+
+mDirectory[2]
+MDRawDirectory
+  stream_type        = 0x5 (MD_MEMORY_LIST_STREAM)
+  location.data_size = 52
+  location.rva       = 0x1505
+
+mDirectory[3]
+MDRawDirectory
+  stream_type        = 0x6 (MD_EXCEPTION_STREAM)
+  location.data_size = 168
+  location.rva       = 0xdc
+
+mDirectory[4]
+MDRawDirectory
+  stream_type        = 0x7 (MD_SYSTEM_INFO_STREAM)
+  location.data_size = 56
+  location.rva       = 0x8c
+
+mDirectory[5]
+MDRawDirectory
+  stream_type        = 0xf (MD_MISC_INFO_STREAM)
+  location.data_size = 24
+  location.rva       = 0xc4
+
+mDirectory[6]
+MDRawDirectory
+  stream_type        = 0x47670001 (MD_BREAKPAD_INFO_STREAM)
+  location.data_size = 12
+  location.rva       = 0x14f9
+
+mDirectory[7]
+MDRawDirectory
+  stream_type        = 0x0 (MD_UNUSED_STREAM)
+  location.data_size = 0
+  location.rva       = 0x0
+
+mDirectory[8]
+MDRawDirectory
+  stream_type        = 0x0 (MD_UNUSED_STREAM)
+  location.data_size = 0
+  location.rva       = 0x0
+
+Streams:
+  stream type 0x0 (MD_UNUSED_STREAM) at index 8
+  stream type 0x3 (MD_THREAD_LIST_STREAM) at index 0
+  stream type 0x4 (MD_MODULE_LIST_STREAM) at index 1
+  stream type 0x5 (MD_MEMORY_LIST_STREAM) at index 2
+  stream type 0x6 (MD_EXCEPTION_STREAM) at index 3
+  stream type 0x7 (MD_SYSTEM_INFO_STREAM) at index 4
+  stream type 0xf (MD_MISC_INFO_STREAM) at index 5
+  stream type 0x47670001 (MD_BREAKPAD_INFO_STREAM) at index 6
+
+MinidumpThreadList
+  thread_count = 2
+
+thread[0]
+MDRawThread
+  thread_id                   = 0xbf4
+  suspend_count               = 0
+  priority_class              = 0x0
+  priority                    = 0x0
+  teb                         = 0x7ffdf000
+  stack.start_of_memory_range = 0x12f31c
+  stack.memory.data_size      = 0xce4
+  stack.memory.rva            = 0x1639
+  thread_context.data_size    = 0x2cc
+  thread_context.rva          = 0xd94
+
+MDRawContextX86
+  context_flags                = 0x1003f
+  dr0                          = 0x0
+  dr1                          = 0x0
+  dr2                          = 0x0
+  dr3                          = 0x0
+  dr6                          = 0x0
+  dr7                          = 0x0
+  float_save.control_word      = 0xffff027f
+  float_save.status_word       = 0xffff0000
+  float_save.tag_word          = 0xffffffff
+  float_save.error_offset      = 0x0
+  float_save.error_selector    = 0x220000
+  float_save.data_offset       = 0x0
+  float_save.data_selector     = 0xffff0000
+  float_save.register_area[80] = 0x0000000018b72200000118b72200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+  float_save.cr0_npx_state     = 0x0
+  gs                           = 0x0
+  fs                           = 0x3b
+  es                           = 0x23
+  ds                           = 0x23
+  edi                          = 0x0
+  esi                          = 0x7b8
+  ebx                          = 0x7c883780
+  edx                          = 0x7c97c0d8
+  ecx                          = 0x7c80b46e
+  eax                          = 0x400000
+  ebp                          = 0x12f384
+  eip                          = 0x7c90eb94
+  cs                           = 0x1b
+  eflags                       = 0x246
+  esp                          = 0x12f320
+  ss                           = 0x23
+  extended_registers[512]      = 0x7f0200000000220000000000000000000000000000000000801f0000ffff00000000000018b72200000100000000000018b72200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004509917c4e09917c38b622002400020024b42200020000009041917c0070fd7f0510907cccb22200000000009cb3220018ee907c7009917cc0e4977c6f3e917c623e917c08020000dcb62200b4b622001e000000000000000000000000000000000000002eb42200000000000f000000020000001e00200000fcfd7f2f63796764726976652f632f444f43554d457e312f4d4d454e544f7e312f4c4f43414c537e312f54656d7000000000000000000130b422000000004300000000000000001efcfd7f4509917c4e09917c5ad9000008b32200b4b62200
+
+Stack
+0x00000000c0e9907ccb25807cb8070000000000000000000034ff1200b0fe12008037887c140000000100000000000000000000001000000027e0907c2e39917c0050fd7f00f0fd7f000000000400000034f312006947c788d4f31200a89a837cf825807c0000000098f312003225807cb8070000ffffffff00000000e4f31200ff1d4000b8070000ffffffffa8fa12008037887c0e1c4000a8fa120000000000ff792a0f64f91200b01b400000004000b0fe12000040020070fa1200084042000000000080fa120080fa12004e30867ca8fa12000000000000000000000000000018000002100000e3ef907c0000000079d900000000000048f41200000014003207917c0500000078071400000014000000000020f412003207917ca05f140018ee907cfa00000074f61200000000009615917ceb06917cf00298000100000000000000384f14009615917ceb06917c7801140008000000404f14000000a659985f1400080000000000000018ee907c90fea700400698003815917c184f1400eb06917c00000000800000000000a65988f69f0090f51200a569917cf8f41200d95c878880f5120043ef907c480485000500000090f5120088fea700a8212400000000000000000080f512002469917cf8fbfd7fa821240008000000f500000000000000384d850078019800a8fa120004000000a05f140096d4917c00000000b0d4917c0000000008069800184f140000000000104f140000000000184f140000004000000000010040020063003a005c0074006500730074005f006100700070002e006500780065000000000000002f00000028000000184f1400780185007801140028000000000000000000140084f3120010000000d8f5120018ee907cf006917cffffffffeb06917ce619917c88e6a7003003000001030000ff1b917c0000980080e6a70080069800400698000000980080e6a70000000000000000000000000080e6a7000818000088e6a700d759927c78019800081800000210000000009800f8f31200280a0000dcf6120018ee907cf006917cffffffffeb06917c0859927c00009800080000005859927c00000000000001000000a659000000005a6202000010000068fe030001000000dffe03000000010000000100fffffe7f0100000001c0c27700008500000000002dc0c27700000000684aaf590000a659241a917c80c0977c0000000000000000cd5c927c0050fd7f0000a65900000100080000004550fd7f0000000000000000000000000050fd7fcd5c927c05000000d4f61200f45c927c80e4977c05000000010000000050fd7f18f712007009917cc0e4977c172e817cff2d817c000000000000a6590000a6590210000000f0fd7f05000000e8f612000806980064f81200a89a837c002e817cffffffffff2d817cc8242400dd8ea75901000000000000004cf712003608a9590000a65901000000000000000100000060f71200e407a9596cf7120000004000000000010040020063003a005c0074006500730074005f006100700070002e0065007800650000006d05917c905f140000000000440d020000000000604f14000c0000007801140000000000a04e1400d84d8700400687004509917c0800000000000000000000004000000078011400a8038700404f14000510907c000000000000000078011400980387000800000008000000c0e4977cd04d8700f835887c7801140010000000a0e7ae591600000030fd1200d39b917c44000000620000000000a65950e9ae59d8eaae59a80387000100000014040000000000000100000002000000f800a659c003870001000000780114009508917c0000a659091b917c020000000900000040000000a2fd12009cfd1200404f1400a2fd1200d04d8700640187000000000000000000d04d870010000000d84d8700384f1400a803870010000000c00300000000870074fb1200404f14006cfe120018ee907cf006917cffffffffeb06917ca09d400000008700000000000400000000000000ffffff3fc04d8700ccfd12009c4d400004000000fa19917cb84d870064018700c04d8700063440000400000018000000c04d870079d90000c0038700fa31400000000000c04d8700c04d87000000000001000000b0fe120082294000c04d87000000000000000000c04d870048fe12008cfe120000000000e224400040fe12008cfe1200c04d8700d84d8700b0fe12008600817c54fa1200d8f9120000000000160018005479420079d90000000000000757917c00000200a4f91200a4f91200a4f91200020000000200000000000000c4f912000000000079d9000014fb12004cfa120014fb1200005a917c00fa1200a0fb120001000000655a917ca405817c74c1977ce705817c00000000f4fd120098fb120000000000a0fb12000000000090fb12000000800070fa120000000000000000000000000016001800547942000000000001000000000000000000000000000000000000003308917ca89a837c0000807c0000807ce800807c2cfa12001fe2907c11fa877cffffffffe06f817c000000006cfa12001c0000000f000000e06f817c8fc60000f0f312000060817cc8fa1200a89a837c7039867cfffffffff0ff1200da36847ca8fa1200099b837cb0fa120000000000b0fa12000000000000000000000000009cfb1200b8fb1200d4fa1200bf37907c9cfb1200e0ff1200b8fb120070fb1200b0ff1200d837907ce0ff120084fb12008b37907c9cfb1200e0ff1200b8fb120070fb1200a89a837c010000009cfb1200e0ff12006078937c9cfb1200e0ff1200b8fb120070fb1200a89a837c280a00009cfb12000200000018ee907c9032917cffffffff8832917c3364917c68fb1200000087003207917c02000000dc31917c1232917c8132917c8832917c1e000000c01e2400080200003807917c54fb12003207917cc4fb120018ee907c9032917c0000130000d01200beb4800088fe1200faea907c00000000b8fb12009cfb1200b8fb1200050000c000000000000000009e4240000200000001000000450000003f0001000000000000000000000000000000000000000000000000007f02ffff0000ffffffffffff0000000000002200000000000000ffff0000000018b72200000118b7220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003b0000002300000023000000280a000002000000c1ab807c58bc420094fe12004500000088fe12009e4240001b0000004602010084fe1200230000007f0200000000220000000000000000000000000000000000801f0000ffff00000000000018b72200000100000000000018b72200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004509917c4e09917c38b622002400020024b42200020000009041917c0070fd7f0510907cccb22200000000009cb3220018ee907c7009917cc0e4977c6f3e917c623e917c08020000dcb62200b4b622001e000000000000000000000000000000000000002eb42200000000000f000000020000001e00200000fcfd7f2f63796764726976652f632f444f43554d457e312f4d4d454e544f7e312f4c4f43414c537e312f54656d7000000000000000000130b422000000004300000000000000001efcfd7f4509917c4e09917c5ad9000008b32200b4b622004500000070ff120000424000b8278700dc31917c00000000004c870000000020040000000000000007000000000000004042400000000000000000002e000000000000000cff12007b434100010000000700000084434100004d87002e39917cffffffff24000000240000002700000000000000584d870004000000b1944000244c87002a0000002f000000c0fe1200004d8700584d87000000a659b0b9a859015d400015aa400000000000b4070000784e14000000000001000000f40b00000000000000000000bc070000b8070000f40b0000a8fa120000000000009c4000599c400094b240004f752a0fc0ff1200ec534000010000003039870050398700ff752a0f00002400a02024000050fd7f050000c00100000005000000000000000000240084ff1200acfa1200e0ff1200d06f4000a70b7a0f00000000f0ff1200d76f817c00002400a02024000050fd7f050000c0c8ff1200a8fa1200ffffffffa89a837ce06f817c0000000000000000000000004354400000000000
+
+thread[1]
+MDRawThread
+  thread_id                   = 0x11c0
+  suspend_count               = 0
+  priority_class              = 0x0
+  priority                    = 0x0
+  teb                         = 0x7ffde000
+  stack.start_of_memory_range = 0x97f6e8
+  stack.memory.data_size      = 0x918
+  stack.memory.rva            = 0x231d
+  thread_context.data_size    = 0x2cc
+  thread_context.rva          = 0x1060
+
+MDRawContextX86
+  context_flags                = 0x1003f
+  dr0                          = 0x0
+  dr1                          = 0x0
+  dr2                          = 0x0
+  dr3                          = 0x0
+  dr6                          = 0x0
+  dr7                          = 0x0
+  float_save.control_word      = 0xffff027f
+  float_save.status_word       = 0xffff0000
+  float_save.tag_word          = 0xffffffff
+  float_save.error_offset      = 0x0
+  float_save.error_selector    = 0x870000
+  float_save.data_offset       = 0x0
+  float_save.data_selector     = 0xffff0000
+  float_save.register_area[80] = 0x84fb120000001400320778071400000014000000f4fe1200a0fd120018eeb0fd12003815917c961534ff120034ff12000000e7712a0f2a0000005400ccfb120068514000584d540000002a000000f4fe
+  float_save.cr0_npx_state     = 0x0
+  gs                           = 0x0
+  fs                           = 0x3b
+  es                           = 0x23
+  ds                           = 0x23
+  edi                          = 0x145b00
+  esi                          = 0x145aa8
+  ebx                          = 0x145ad0
+  edx                          = 0x7c90eb94
+  ecx                          = 0x7
+  eax                          = 0xa80000
+  ebp                          = 0x97f6fc
+  eip                          = 0x7c90eb94
+  cs                           = 0x1b
+  eflags                       = 0x246
+  esp                          = 0x97f6ec
+  ss                           = 0x23
+  extended_registers[512]      = 0x7f0200000000870000000000000000000000000000000000801f0000ccfb120084fb1200000014003207917c050000007807140000001400000000005cfb1200f4fe1200a0fd120018ee907c2d020000b0fd12003815917c9615917ceb06917c34ff120034ff12000000000060000000e7712a0f2a0000005400000000000000ccfb120068514000584d870034fc1200540000002a000000f4fe1200f8fe12002c2f4000584d87005e00000034fc12005400000000000000b0fe1200f4fe1200c0fe12005f21400034fc12002a0000003b762a0f91214000303132330000870038393a3b3c3d3e3f4041424300000000070000003bd11e2340061400b858101e5e03e0652e005c00320033003100650064003100780114002d0066003300380034002d0000000000390034002d0062003800350038002d0031003000984e1400350065003000330065003000360035002e0064006d0070000000907c08000000ffffffff8832917cbeb4807c780114001d00f40b784e14000401000044fd120050fd1200c01e240078011400bdb9807ca04e14007c80c2770000000008fd120078011400ecfc1200f0fc1200e6b9807cffffffff7c80c27708fd12001c00000024fd1200e92a867c7c80c277b45a887c8037887c2d0200000080c2770000c17780000000005003000010000020000000780114005cff12001648847c091b917c
+
+Stack
+0x8000108020fa97009fd7907c0000000048f7970005000f0040061400000000004cf7970037b9807c00000000000000003103917c780114000000000061dc907cf1b8807c00000000ffffffff70f79700000000000000000054f797003082140001000000000000000200000000000000000000007cf7970020b9807c0e00000004000000006000000000a80078011400000000000882140092d5907c8b9b807c9c070000d0f89700780114009c07000038821400807f140020dea85910fa9700780114009807000088fb9700e07f14009c0700000000000078011400000000000882140000000000000000000000000078011400ba0300000000000000000000000000000000000000000000000000007801140000000000000000000000000000000000c0030000000000000000000000000000088214005c0057000600000078011400000000005c00730079007300740065006d0033000082140068011400000000000000000000821400d47f1400807f140070f8970061eea859e000a8000000a8001c4e000084f89700bdeea859e000a8000000a8001c4e0000a4f897005fefa8590000a8000000000006000000c4f89700e000a80060fe9700c8f897005abfa8590000a80000000000060000001c000000d47f1400807f1400380000006ce9907c88b9807cffffffff0000a80000000000807f140030fa97007fc3a859a0c4a859b0fb970060fe9700684f1400504500004c010400ca9610410000000000000000e0000e210b01070a00400000003a000000000000f1100000001000000000bf760000000000100000000200000500010005000100040000000000000000b00000000400009ba2000000001400285214000000000034fa97007801140034fa9700910e917c080614006d05917cc84d85005c4e8500684f140000000000b04800002852140078011400e00300003052140000000000000000000000000078011400c403000030821400380000000000000000000000000000000000000000000000000000003882140048050000780200003800000000100000ec000000b8470000400000000000000000000000000000000000140000000000807f140000000000000000000000000000000101a900000060fe9700dcff9700dcff97000050fd7f78fa970054fa9700ad9d917c8cfa9700c2066f7f0e000000000000001c01000078fa9700c84d850068fa970085ae807c78fc970024fc970083dba85978fc97008cfa9700800000008edba85914010000050000000100000096020000b8fc97003815917c9615917ceb06917c60fe970060fe9700c4fd9700d8fa9700000014003207917c21000000b80c14000000140030521400b0fa9700fffffffff4fc970018ee907c3807917cffffffff3207917cab06917ceb06917ccc4f140060fe9700684f1400e0004000e4fa9700a863917c74fb970018ee907c3808917cffffffff3308917c5b2c817c872c817c00000000f4fb9700000000000000000054fd970018ee907c4006140064fd97003815917c00e0fd7feb06917c684f140038821400780114000050fd7facfb970000000000000004000000000090fe97000000000018fb970050531400508b1400a89a837cffe9907cf60d817ca807000000000000ffe9907cf60d817c08000000000000000000000000000000585314003cfc97003882140000000000160e817cc4fd970060fe970058531400208f1400588b1400460f917c50531400208f1400780114003082140000000000b8fc970078011400b8fc9700910e917c080614006d05917c3882140060fe97000000000000000000960200003082140078011400ffe9907c38821400a807000000000000780114005853140058fc9700505314001000000000000000160e817c784e8500c4fd9700388214000000000024010000f00c00001000000044fc970000000000c7e2907ce721807cffffffffe8f69700388214001809000098fc9700acfc9700d2e2a859ffffffffe8f697003882140018090000c4fc97003882140060fe9700c4fd9700ccfc97004ee3a859ffffffffe8f69700000000003882140018090000e0fc9700f4fc970093b2a859ffffffffe8f69700000000003882140018090000c4fd970060fe9700a85a140078fd9700a5b3a85960fe9700c4fd9700684f1400e8f697000000000018090000000000000200000080fd9700c4fd970060fe970000000000f40b000000000000000000000000000000f0fd7f000000001cf3120000000000e40c000039160000cc020000940d00000000000000000000000000000000000002000000ac4f14006010000098fd97005eb7a8593916000000000000684f1400784e85000000000084ff9700d4fe97007bb9a85960fe9700c4fd9700684f14003849140084ff9700010000000000000008ff9700f40b0000090000000000000020000000200000006c0000008c000000380000001e000000c4000000dc000000a80000008401000064000000b801000030000000e801000080050000e8010000680700000000000068070000680700000000000005150000340000002915000039150000fc1600001d23000068070000600300008a070000c80a0000310a00002c130000f91400000c000000352c000000000000ffffffff5c0f0000c84d8500784e8500884e85000000000000000000000000004c010000fc39a6590000000002000000050000000100000000008500280a000001000001cc0200009c0000000b00000050000000040000000010000000000000000000000001000000000000000000000000000034ff970078baa859384914005c0f0000c84d850001000000884e8500684f140008ff970064ff970000000000a8070000b0fe1200f40b00009cfb120000000000b8fb12000000000000000000ae20140000000000884e8500784e8500c84d8500a8fa120011204000ffffffff5c0f0000a80700000000000078ff970064ff970000000000adbf807c2025807cecff97000100000084ff970003000000c0110000f40b0000f40b0000a8fa120000000000010067470c0000006cff9700bc070000ffffffff000000006c1a4000f40b000000fa12000000000000004000a09d4000b0fe120083b6807cb0fe120000004000a09d4000b0fe120000e0fd7f00069c86c0ff9700d8863f86ffffffffa89a837c90b6807c000000000000000000000000301a4000b0fe120000000000
+
+MinidumpModuleList
+  module_count = 13
+
+module[0]
+MDRawModule
+  base_of_image                   = 0x400000
+  size_of_image                   = 0x2d000
+  checksum                        = 0x0
+  time_date_stamp                 = 0x45d35f6c 2007-02-14 19:13:48
+  module_name_rva                 = 0x78a
+  version_info.signature          = 0x0
+  version_info.struct_version     = 0x0
+  version_info.file_version       = 0x0:0x0
+  version_info.product_version    = 0x0:0x0
+  version_info.file_flags_mask    = 0x0
+  version_info.file_flags         = 0x0
+  version_info.file_os            = 0x0
+  version_info.file_type          = 0x0
+  version_info.file_subtype       = 0x0
+  version_info.file_date          = 0x0:0x0
+  cv_record.data_size             = 40
+  cv_record.rva                   = 0x132c
+  misc_record.data_size           = 0
+  misc_record.rva                 = 0x0
+  (code_file)                     = "c:\test_app.exe"
+  (code_identifier)               = "45D35F6C2d000"
+  (cv_record).cv_signature        = 0x53445352
+  (cv_record).signature           = 5a9832e5-2872-41c1-838e-d98914e9b7ff
+  (cv_record).age                 = 1
+  (cv_record).pdb_file_name       = "c:\test_app.pdb"
+  (misc_record)                   = (null)
+  (debug_file)                    = "c:\test_app.pdb"
+  (debug_identifier)              = "5A9832E5287241C1838ED98914E9B7FF1"
+  (version)                       = ""
+
+module[1]
+MDRawModule
+  base_of_image                   = 0x7c900000
+  size_of_image                   = 0xb0000
+  checksum                        = 0xaf2f7
+  time_date_stamp                 = 0x411096b4 2004-08-04 07:56:36
+  module_name_rva                 = 0x7ae
+  version_info.signature          = 0xfeef04bd
+  version_info.struct_version     = 0x10000
+  version_info.file_version       = 0x50001:0xa280884
+  version_info.product_version    = 0x50001:0xa280884
+  version_info.file_flags_mask    = 0x3f
+  version_info.file_flags         = 0x0
+  version_info.file_os            = 0x40004
+  version_info.file_type          = 0x2
+  version_info.file_subtype       = 0x0
+  version_info.file_date          = 0x0:0x0
+  cv_record.data_size             = 34
+  cv_record.rva                   = 0x1354
+  misc_record.data_size           = 0
+  misc_record.rva                 = 0x0
+  (code_file)                     = "C:\WINDOWS\system32\ntdll.dll"
+  (code_identifier)               = "411096B4b0000"
+  (cv_record).cv_signature        = 0x53445352
+  (cv_record).signature           = 36515fb5-d043-45e4-91f6-72fa2e2878c0
+  (cv_record).age                 = 2
+  (cv_record).pdb_file_name       = "ntdll.pdb"
+  (misc_record)                   = (null)
+  (debug_file)                    = "ntdll.pdb"
+  (debug_identifier)              = "36515FB5D04345E491F672FA2E2878C02"
+  (version)                       = "5.1.2600.2180"
+
+module[2]
+MDRawModule
+  base_of_image                   = 0x7c800000
+  size_of_image                   = 0xf4000
+  checksum                        = 0xf724d
+  time_date_stamp                 = 0x44ab9a84 2006-07-05 10:55:00
+  module_name_rva                 = 0x7ee
+  version_info.signature          = 0xfeef04bd
+  version_info.struct_version     = 0x10000
+  version_info.file_version       = 0x50001:0xa280b81
+  version_info.product_version    = 0x50001:0xa280b81
+  version_info.file_flags_mask    = 0x3f
+  version_info.file_flags         = 0x0
+  version_info.file_os            = 0x40004
+  version_info.file_type          = 0x2
+  version_info.file_subtype       = 0x0
+  version_info.file_date          = 0x0:0x0
+  cv_record.data_size             = 37
+  cv_record.rva                   = 0x1376
+  misc_record.data_size           = 0
+  misc_record.rva                 = 0x0
+  (code_file)                     = "C:\WINDOWS\system32\kernel32.dll"
+  (code_identifier)               = "44AB9A84f4000"
+  (cv_record).cv_signature        = 0x53445352
+  (cv_record).signature           = bce8785c-57b4-4245-a669-896b6a19b954
+  (cv_record).age                 = 2
+  (cv_record).pdb_file_name       = "kernel32.pdb"
+  (misc_record)                   = (null)
+  (debug_file)                    = "kernel32.pdb"
+  (debug_identifier)              = "BCE8785C57B44245A669896B6A19B9542"
+  (version)                       = "5.1.2600.2945"
+
+module[3]
+MDRawModule
+  base_of_image                   = 0x774e0000
+  size_of_image                   = 0x13d000
+  checksum                        = 0x13dc6b
+  time_date_stamp                 = 0x42e5be93 2005-07-26 04:39:47
+  module_name_rva                 = 0x834
+  version_info.signature          = 0xfeef04bd
+  version_info.struct_version     = 0x10000
+  version_info.file_version       = 0x50001:0xa280aa6
+  version_info.product_version    = 0x50001:0xa280aa6
+  version_info.file_flags_mask    = 0x3f
+  version_info.file_flags         = 0x0
+  version_info.file_os            = 0x40004
+  version_info.file_type          = 0x2
+  version_info.file_subtype       = 0x0
+  version_info.file_date          = 0x0:0x0
+  cv_record.data_size             = 34
+  cv_record.rva                   = 0x139b
+  misc_record.data_size           = 0
+  misc_record.rva                 = 0x0
+  (code_file)                     = "C:\WINDOWS\system32\ole32.dll"
+  (code_identifier)               = "42E5BE9313d000"
+  (cv_record).cv_signature        = 0x53445352
+  (cv_record).signature           = 683b65b2-46f4-4187-96d2-ee6d4c55eb11
+  (cv_record).age                 = 2
+  (cv_record).pdb_file_name       = "ole32.pdb"
+  (misc_record)                   = (null)
+  (debug_file)                    = "ole32.pdb"
+  (debug_identifier)              = "683B65B246F4418796D2EE6D4C55EB112"
+  (version)                       = "5.1.2600.2726"
+
+module[4]
+MDRawModule
+  base_of_image                   = 0x77dd0000
+  size_of_image                   = 0x9b000
+  checksum                        = 0xa0de4
+  time_date_stamp                 = 0x411096a7 2004-08-04 07:56:23
+  module_name_rva                 = 0x874
+  version_info.signature          = 0xfeef04bd
+  version_info.struct_version     = 0x10000
+  version_info.file_version       = 0x50001:0xa280884
+  version_info.product_version    = 0x50001:0xa280884
+  version_info.file_flags_mask    = 0x3f
+  version_info.file_flags         = 0x0
+  version_info.file_os            = 0x40004
+  version_info.file_type          = 0x2
+  version_info.file_subtype       = 0x0
+  version_info.file_date          = 0x0:0x0
+  cv_record.data_size             = 37
+  cv_record.rva                   = 0x13bd
+  misc_record.data_size           = 0
+  misc_record.rva                 = 0x0
+  (code_file)                     = "C:\WINDOWS\system32\advapi32.dll"
+  (code_identifier)               = "411096A79b000"
+  (cv_record).cv_signature        = 0x53445352
+  (cv_record).signature           = 455d6c5f-184d-45bb-b5c5-f30f82975114
+  (cv_record).age                 = 2
+  (cv_record).pdb_file_name       = "advapi32.pdb"
+  (misc_record)                   = (null)
+  (debug_file)                    = "advapi32.pdb"
+  (debug_identifier)              = "455D6C5F184D45BBB5C5F30F829751142"
+  (version)                       = "5.1.2600.2180"
+
+module[5]
+MDRawModule
+  base_of_image                   = 0x77e70000
+  size_of_image                   = 0x91000
+  checksum                        = 0x9c482
+  time_date_stamp                 = 0x411096ae 2004-08-04 07:56:30
+  module_name_rva                 = 0x8ba
+  version_info.signature          = 0xfeef04bd
+  version_info.struct_version     = 0x10000
+  version_info.file_version       = 0x50001:0xa280884
+  version_info.product_version    = 0x50001:0xa280884
+  version_info.file_flags_mask    = 0x3f
+  version_info.file_flags         = 0x0
+  version_info.file_os            = 0x40004
+  version_info.file_type          = 0x2
+  version_info.file_subtype       = 0x0
+  version_info.file_date          = 0x0:0x0
+  cv_record.data_size             = 35
+  cv_record.rva                   = 0x13e2
+  misc_record.data_size           = 0
+  misc_record.rva                 = 0x0
+  (code_file)                     = "C:\WINDOWS\system32\rpcrt4.dll"
+  (code_identifier)               = "411096AE91000"
+  (cv_record).cv_signature        = 0x53445352
+  (cv_record).signature           = bea45a72-1da1-41da-a3ba-86b3a2031153
+  (cv_record).age                 = 2
+  (cv_record).pdb_file_name       = "rpcrt4.pdb"
+  (misc_record)                   = (null)
+  (debug_file)                    = "rpcrt4.pdb"
+  (debug_identifier)              = "BEA45A721DA141DAA3BA86B3A20311532"
+  (version)                       = "5.1.2600.2180"
+
+module[6]
+MDRawModule
+  base_of_image                   = 0x77f10000
+  size_of_image                   = 0x47000
+  checksum                        = 0x4d0d0
+  time_date_stamp                 = 0x43b34feb 2005-12-29 02:54:35
+  module_name_rva                 = 0x8fc
+  version_info.signature          = 0xfeef04bd
+  version_info.struct_version     = 0x10000
+  version_info.file_version       = 0x50001:0xa280b02
+  version_info.product_version    = 0x50001:0xa280b02
+  version_info.file_flags_mask    = 0x3f
+  version_info.file_flags         = 0x0
+  version_info.file_os            = 0x40004
+  version_info.file_type          = 0x2
+  version_info.file_subtype       = 0x0
+  version_info.file_date          = 0x0:0x0
+  cv_record.data_size             = 34
+  cv_record.rva                   = 0x1405
+  misc_record.data_size           = 0
+  misc_record.rva                 = 0x0
+  (code_file)                     = "C:\WINDOWS\system32\gdi32.dll"
+  (code_identifier)               = "43B34FEB47000"
+  (cv_record).cv_signature        = 0x53445352
+  (cv_record).signature           = c0ea66be-00a6-4bd7-aef7-9e443a91869c
+  (cv_record).age                 = 2
+  (cv_record).pdb_file_name       = "gdi32.pdb"
+  (misc_record)                   = (null)
+  (debug_file)                    = "gdi32.pdb"
+  (debug_identifier)              = "C0EA66BE00A64BD7AEF79E443A91869C2"
+  (version)                       = "5.1.2600.2818"
+
+module[7]
+MDRawModule
+  base_of_image                   = 0x77d40000
+  size_of_image                   = 0x90000
+  checksum                        = 0x9505c
+  time_date_stamp                 = 0x42260159 2005-03-02 18:09:29
+  module_name_rva                 = 0x93c
+  version_info.signature          = 0xfeef04bd
+  version_info.struct_version     = 0x10000
+  version_info.file_version       = 0x50001:0xa280a3e
+  version_info.product_version    = 0x50001:0xa280a3e
+  version_info.file_flags_mask    = 0x3f
+  version_info.file_flags         = 0x0
+  version_info.file_os            = 0x40004
+  version_info.file_type          = 0x2
+  version_info.file_subtype       = 0x0
+  version_info.file_date          = 0x0:0x0
+  cv_record.data_size             = 35
+  cv_record.rva                   = 0x1427
+  misc_record.data_size           = 0
+  misc_record.rva                 = 0x0
+  (code_file)                     = "C:\WINDOWS\system32\user32.dll"
+  (code_identifier)               = "4226015990000"
+  (cv_record).cv_signature        = 0x53445352
+  (cv_record).signature           = ee2b714d-83a3-4c9d-8802-7621272f8326
+  (cv_record).age                 = 2
+  (cv_record).pdb_file_name       = "user32.pdb"
+  (misc_record)                   = (null)
+  (debug_file)                    = "user32.pdb"
+  (debug_identifier)              = "EE2B714D83A34C9D88027621272F83262"
+  (version)                       = "5.1.2600.2622"
+
+module[8]
+MDRawModule
+  base_of_image                   = 0x77c10000
+  size_of_image                   = 0x58000
+  checksum                        = 0x57cd3
+  time_date_stamp                 = 0x41109752 2004-08-04 07:59:14
+  module_name_rva                 = 0x97e
+  version_info.signature          = 0xfeef04bd
+  version_info.struct_version     = 0x10000
+  version_info.file_version       = 0x70000:0xa280884
+  version_info.product_version    = 0x60001:0x21be0884
+  version_info.file_flags_mask    = 0x3f
+  version_info.file_flags         = 0x0
+  version_info.file_os            = 0x40004
+  version_info.file_type          = 0x1
+  version_info.file_subtype       = 0x0
+  version_info.file_date          = 0x0:0x0
+  cv_record.data_size             = 35
+  cv_record.rva                   = 0x144a
+  misc_record.data_size           = 0
+  misc_record.rva                 = 0x0
+  (code_file)                     = "C:\WINDOWS\system32\msvcrt.dll"
+  (code_identifier)               = "4110975258000"
+  (cv_record).cv_signature        = 0x53445352
+  (cv_record).signature           = a678f3c3-0ded-426b-8390-32b996987e38
+  (cv_record).age                 = 1
+  (cv_record).pdb_file_name       = "msvcrt.pdb"
+  (misc_record)                   = (null)
+  (debug_file)                    = "msvcrt.pdb"
+  (debug_identifier)              = "A678F3C30DED426B839032B996987E381"
+  (version)                       = "7.0.2600.2180"
+
+module[9]
+MDRawModule
+  base_of_image                   = 0x76390000
+  size_of_image                   = 0x1d000
+  checksum                        = 0x2a024
+  time_date_stamp                 = 0x411096ae 2004-08-04 07:56:30
+  module_name_rva                 = 0x9c0
+  version_info.signature          = 0xfeef04bd
+  version_info.struct_version     = 0x10000
+  version_info.file_version       = 0x50001:0xa280884
+  version_info.product_version    = 0x50001:0xa280884
+  version_info.file_flags_mask    = 0x3f
+  version_info.file_flags         = 0x0
+  version_info.file_os            = 0x40004
+  version_info.file_type          = 0x2
+  version_info.file_subtype       = 0x0
+  version_info.file_date          = 0x0:0x0
+  cv_record.data_size             = 34
+  cv_record.rva                   = 0x146d
+  misc_record.data_size           = 0
+  misc_record.rva                 = 0x0
+  (code_file)                     = "C:\WINDOWS\system32\imm32.dll"
+  (code_identifier)               = "411096AE1d000"
+  (cv_record).cv_signature        = 0x53445352
+  (cv_record).signature           = 2c17a49c-251b-4c8e-b9e2-ad13d7d9ea16
+  (cv_record).age                 = 2
+  (cv_record).pdb_file_name       = "imm32.pdb"
+  (misc_record)                   = (null)
+  (debug_file)                    = "imm32.pdb"
+  (debug_identifier)              = "2C17A49C251B4C8EB9E2AD13D7D9EA162"
+  (version)                       = "5.1.2600.2180"
+
+module[10]
+MDRawModule
+  base_of_image                   = 0x59a60000
+  size_of_image                   = 0xa1000
+  checksum                        = 0xa8824
+  time_date_stamp                 = 0x4110969a 2004-08-04 07:56:10
+  module_name_rva                 = 0xa00
+  version_info.signature          = 0xfeef04bd
+  version_info.struct_version     = 0x10000
+  version_info.file_version       = 0x50001:0xa280884
+  version_info.product_version    = 0x50001:0xa280884
+  version_info.file_flags_mask    = 0x3f
+  version_info.file_flags         = 0x0
+  version_info.file_os            = 0x40004
+  version_info.file_type          = 0x2
+  version_info.file_subtype       = 0x0
+  version_info.file_date          = 0x0:0x0
+  cv_record.data_size             = 36
+  cv_record.rva                   = 0x148f
+  misc_record.data_size           = 0
+  misc_record.rva                 = 0x0
+  (code_file)                     = "C:\WINDOWS\system32\dbghelp.dll"
+  (code_identifier)               = "4110969Aa1000"
+  (cv_record).cv_signature        = 0x53445352
+  (cv_record).signature           = 39559573-e21b-46f2-8e28-6923be9e6a76
+  (cv_record).age                 = 1
+  (cv_record).pdb_file_name       = "dbghelp.pdb"
+  (misc_record)                   = (null)
+  (debug_file)                    = "dbghelp.pdb"
+  (debug_identifier)              = "39559573E21B46F28E286923BE9E6A761"
+  (version)                       = "5.1.2600.2180"
+
+module[11]
+MDRawModule
+  base_of_image                   = 0x77c00000
+  size_of_image                   = 0x8000
+  checksum                        = 0x11d78
+  time_date_stamp                 = 0x411096b7 2004-08-04 07:56:39
+  module_name_rva                 = 0xa44
+  version_info.signature          = 0xfeef04bd
+  version_info.struct_version     = 0x10000
+  version_info.file_version       = 0x50001:0xa280884
+  version_info.product_version    = 0x50001:0xa280884
+  version_info.file_flags_mask    = 0x3f
+  version_info.file_flags         = 0x0
+  version_info.file_os            = 0x40004
+  version_info.file_type          = 0x2
+  version_info.file_subtype       = 0x0
+  version_info.file_date          = 0x0:0x0
+  cv_record.data_size             = 36
+  cv_record.rva                   = 0x14b3
+  misc_record.data_size           = 0
+  misc_record.rva                 = 0x0
+  (code_file)                     = "C:\WINDOWS\system32\version.dll"
+  (code_identifier)               = "411096B78000"
+  (cv_record).cv_signature        = 0x53445352
+  (cv_record).signature           = 180a90c4-0384-463e-82dd-c45b2c8ab76e
+  (cv_record).age                 = 2
+  (cv_record).pdb_file_name       = "version.pdb"
+  (misc_record)                   = (null)
+  (debug_file)                    = "version.pdb"
+  (debug_identifier)              = "180A90C40384463E82DDC45B2C8AB76E2"
+  (version)                       = "5.1.2600.2180"
+
+module[12]
+MDRawModule
+  base_of_image                   = 0x76bf0000
+  size_of_image                   = 0xb000
+  checksum                        = 0xa29b
+  time_date_stamp                 = 0x411096ca 2004-08-04 07:56:58
+  module_name_rva                 = 0xa88
+  version_info.signature          = 0xfeef04bd
+  version_info.struct_version     = 0x10000
+  version_info.file_version       = 0x50001:0xa280884
+  version_info.product_version    = 0x50001:0xa280884
+  version_info.file_flags_mask    = 0x3f
+  version_info.file_flags         = 0x0
+  version_info.file_os            = 0x40004
+  version_info.file_type          = 0x2
+  version_info.file_subtype       = 0x0
+  version_info.file_date          = 0x0:0x0
+  cv_record.data_size             = 34
+  cv_record.rva                   = 0x14d7
+  misc_record.data_size           = 0
+  misc_record.rva                 = 0x0
+  (code_file)                     = "C:\WINDOWS\system32\psapi.dll"
+  (code_identifier)               = "411096CAb000"
+  (cv_record).cv_signature        = 0x53445352
+  (cv_record).signature           = a5c3a1f9-689f-43d8-ad22-8a0929388970
+  (cv_record).age                 = 2
+  (cv_record).pdb_file_name       = "psapi.pdb"
+  (misc_record)                   = (null)
+  (debug_file)                    = "psapi.pdb"
+  (debug_identifier)              = "A5C3A1F9689F43D8AD228A09293889702"
+  (version)                       = "5.1.2600.2180"
+
+MinidumpMemoryList
+  region_count = 3
+
+region[0]
+MDMemoryDescriptor
+  start_of_memory_range = 0x7c90eb14
+  memory.data_size      = 0x100
+  memory.rva            = 0x1539
+Memory
+0xff83c4ec890424c744240401000000895c2408c74424100000000054e877000000c208009090909090558bec83ec508944240c64a1180000008b80a4010000890424c744240400000000c744240800000000c74424100000000054e8380000008b04248be55dc3908da424000000008d490090909090908bd40f349090909090c38da424000000008d64240090909090908d542408cd2ec3558bec9c81ecd00200008985dcfdffff898dd8fdffff8b45088b4d0489480c8d852cfdffff8988b80000008998a40000008990a800000089b0a000000089b89c0000008d4d0c8988c40000008b4d008988b40000008b4dfc8988c00000008c88bc0000008c989800
+
+region[1]
+MDMemoryDescriptor
+  start_of_memory_range = 0x12f31c
+  memory.data_size      = 0xce4
+  memory.rva            = 0x1639
+Memory
+0x00000000c0e9907ccb25807cb8070000000000000000000034ff1200b0fe12008037887c140000000100000000000000000000001000000027e0907c2e39917c0050fd7f00f0fd7f000000000400000034f312006947c788d4f31200a89a837cf825807c0000000098f312003225807cb8070000ffffffff00000000e4f31200ff1d4000b8070000ffffffffa8fa12008037887c0e1c4000a8fa120000000000ff792a0f64f91200b01b400000004000b0fe12000040020070fa1200084042000000000080fa120080fa12004e30867ca8fa12000000000000000000000000000018000002100000e3ef907c0000000079d900000000000048f41200000014003207917c0500000078071400000014000000000020f412003207917ca05f140018ee907cfa00000074f61200000000009615917ceb06917cf00298000100000000000000384f14009615917ceb06917c7801140008000000404f14000000a659985f1400080000000000000018ee907c90fea700400698003815917c184f1400eb06917c00000000800000000000a65988f69f0090f51200a569917cf8f41200d95c878880f5120043ef907c480485000500000090f5120088fea700a8212400000000000000000080f512002469917cf8fbfd7fa821240008000000f500000000000000384d850078019800a8fa120004000000a05f140096d4917c00000000b0d4917c0000000008069800184f140000000000104f140000000000184f140000004000000000010040020063003a005c0074006500730074005f006100700070002e006500780065000000000000002f00000028000000184f1400780185007801140028000000000000000000140084f3120010000000d8f5120018ee907cf006917cffffffffeb06917ce619917c88e6a7003003000001030000ff1b917c0000980080e6a70080069800400698000000980080e6a70000000000000000000000000080e6a7000818000088e6a700d759927c78019800081800000210000000009800f8f31200280a0000dcf6120018ee907cf006917cffffffffeb06917c0859927c00009800080000005859927c00000000000001000000a659000000005a6202000010000068fe030001000000dffe03000000010000000100fffffe7f0100000001c0c27700008500000000002dc0c27700000000684aaf590000a659241a917c80c0977c0000000000000000cd5c927c0050fd7f0000a65900000100080000004550fd7f0000000000000000000000000050fd7fcd5c927c05000000d4f61200f45c927c80e4977c05000000010000000050fd7f18f712007009917cc0e4977c172e817cff2d817c000000000000a6590000a6590210000000f0fd7f05000000e8f612000806980064f81200a89a837c002e817cffffffffff2d817cc8242400dd8ea75901000000000000004cf712003608a9590000a65901000000000000000100000060f71200e407a9596cf7120000004000000000010040020063003a005c0074006500730074005f006100700070002e0065007800650000006d05917c905f140000000000440d020000000000604f14000c0000007801140000000000a04e1400d84d8700400687004509917c0800000000000000000000004000000078011400a8038700404f14000510907c000000000000000078011400980387000800000008000000c0e4977cd04d8700f835887c7801140010000000a0e7ae591600000030fd1200d39b917c44000000620000000000a65950e9ae59d8eaae59a80387000100000014040000000000000100000002000000f800a659c003870001000000780114009508917c0000a659091b917c020000000900000040000000a2fd12009cfd1200404f1400a2fd1200d04d8700640187000000000000000000d04d870010000000d84d8700384f1400a803870010000000c00300000000870074fb1200404f14006cfe120018ee907cf006917cffffffffeb06917ca09d400000008700000000000400000000000000ffffff3fc04d8700ccfd12009c4d400004000000fa19917cb84d870064018700c04d8700063440000400000018000000c04d870079d90000c0038700fa31400000000000c04d8700c04d87000000000001000000b0fe120082294000c04d87000000000000000000c04d870048fe12008cfe120000000000e224400040fe12008cfe1200c04d8700d84d8700b0fe12008600817c54fa1200d8f9120000000000160018005479420079d90000000000000757917c00000200a4f91200a4f91200a4f91200020000000200000000000000c4f912000000000079d9000014fb12004cfa120014fb1200005a917c00fa1200a0fb120001000000655a917ca405817c74c1977ce705817c00000000f4fd120098fb120000000000a0fb12000000000090fb12000000800070fa120000000000000000000000000016001800547942000000000001000000000000000000000000000000000000003308917ca89a837c0000807c0000807ce800807c2cfa12001fe2907c11fa877cffffffffe06f817c000000006cfa12001c0000000f000000e06f817c8fc60000f0f312000060817cc8fa1200a89a837c7039867cfffffffff0ff1200da36847ca8fa1200099b837cb0fa120000000000b0fa12000000000000000000000000009cfb1200b8fb1200d4fa1200bf37907c9cfb1200e0ff1200b8fb120070fb1200b0ff1200d837907ce0ff120084fb12008b37907c9cfb1200e0ff1200b8fb120070fb1200a89a837c010000009cfb1200e0ff12006078937c9cfb1200e0ff1200b8fb120070fb1200a89a837c280a00009cfb12000200000018ee907c9032917cffffffff8832917c3364917c68fb1200000087003207917c02000000dc31917c1232917c8132917c8832917c1e000000c01e2400080200003807917c54fb12003207917cc4fb120018ee907c9032917c0000130000d01200beb4800088fe1200faea907c00000000b8fb12009cfb1200b8fb1200050000c000000000000000009e4240000200000001000000450000003f0001000000000000000000000000000000000000000000000000007f02ffff0000ffffffffffff0000000000002200000000000000ffff0000000018b72200000118b7220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003b0000002300000023000000280a000002000000c1ab807c58bc420094fe12004500000088fe12009e4240001b0000004602010084fe1200230000007f0200000000220000000000000000000000000000000000801f0000ffff00000000000018b72200000100000000000018b72200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004509917c4e09917c38b622002400020024b42200020000009041917c0070fd7f0510907cccb22200000000009cb3220018ee907c7009917cc0e4977c6f3e917c623e917c08020000dcb62200b4b622001e000000000000000000000000000000000000002eb42200000000000f000000020000001e00200000fcfd7f2f63796764726976652f632f444f43554d457e312f4d4d454e544f7e312f4c4f43414c537e312f54656d7000000000000000000130b422000000004300000000000000001efcfd7f4509917c4e09917c5ad9000008b32200b4b622004500000070ff120000424000b8278700dc31917c00000000004c870000000020040000000000000007000000000000004042400000000000000000002e000000000000000cff12007b434100010000000700000084434100004d87002e39917cffffffff24000000240000002700000000000000584d870004000000b1944000244c87002a0000002f000000c0fe1200004d8700584d87000000a659b0b9a859015d400015aa400000000000b4070000784e14000000000001000000f40b00000000000000000000bc070000b8070000f40b0000a8fa120000000000009c4000599c400094b240004f752a0fc0ff1200ec534000010000003039870050398700ff752a0f00002400a02024000050fd7f050000c00100000005000000000000000000240084ff1200acfa1200e0ff1200d06f4000a70b7a0f00000000f0ff1200d76f817c00002400a02024000050fd7f050000c0c8ff1200a8fa1200ffffffffa89a837ce06f817c0000000000000000000000004354400000000000
+
+region[2]
+MDMemoryDescriptor
+  start_of_memory_range = 0x97f6e8
+  memory.data_size      = 0x918
+  memory.rva            = 0x231d
+Memory
+0x8000108020fa97009fd7907c0000000048f7970005000f0040061400000000004cf7970037b9807c00000000000000003103917c780114000000000061dc907cf1b8807c00000000ffffffff70f79700000000000000000054f797003082140001000000000000000200000000000000000000007cf7970020b9807c0e00000004000000006000000000a80078011400000000000882140092d5907c8b9b807c9c070000d0f89700780114009c07000038821400807f140020dea85910fa9700780114009807000088fb9700e07f14009c0700000000000078011400000000000882140000000000000000000000000078011400ba0300000000000000000000000000000000000000000000000000007801140000000000000000000000000000000000c0030000000000000000000000000000088214005c0057000600000078011400000000005c00730079007300740065006d0033000082140068011400000000000000000000821400d47f1400807f140070f8970061eea859e000a8000000a8001c4e000084f89700bdeea859e000a8000000a8001c4e0000a4f897005fefa8590000a8000000000006000000c4f89700e000a80060fe9700c8f897005abfa8590000a80000000000060000001c000000d47f1400807f1400380000006ce9907c88b9807cffffffff0000a80000000000807f140030fa97007fc3a859a0c4a859b0fb970060fe9700684f1400504500004c010400ca9610410000000000000000e0000e210b01070a00400000003a000000000000f1100000001000000000bf760000000000100000000200000500010005000100040000000000000000b00000000400009ba2000000001400285214000000000034fa97007801140034fa9700910e917c080614006d05917cc84d85005c4e8500684f140000000000b04800002852140078011400e00300003052140000000000000000000000000078011400c403000030821400380000000000000000000000000000000000000000000000000000003882140048050000780200003800000000100000ec000000b8470000400000000000000000000000000000000000140000000000807f140000000000000000000000000000000101a900000060fe9700dcff9700dcff97000050fd7f78fa970054fa9700ad9d917c8cfa9700c2066f7f0e000000000000001c01000078fa9700c84d850068fa970085ae807c78fc970024fc970083dba85978fc97008cfa9700800000008edba85914010000050000000100000096020000b8fc97003815917c9615917ceb06917c60fe970060fe9700c4fd9700d8fa9700000014003207917c21000000b80c14000000140030521400b0fa9700fffffffff4fc970018ee907c3807917cffffffff3207917cab06917ceb06917ccc4f140060fe9700684f1400e0004000e4fa9700a863917c74fb970018ee907c3808917cffffffff3308917c5b2c817c872c817c00000000f4fb9700000000000000000054fd970018ee907c4006140064fd97003815917c00e0fd7feb06917c684f140038821400780114000050fd7facfb970000000000000004000000000090fe97000000000018fb970050531400508b1400a89a837cffe9907cf60d817ca807000000000000ffe9907cf60d817c08000000000000000000000000000000585314003cfc97003882140000000000160e817cc4fd970060fe970058531400208f1400588b1400460f917c50531400208f1400780114003082140000000000b8fc970078011400b8fc9700910e917c080614006d05917c3882140060fe97000000000000000000960200003082140078011400ffe9907c38821400a807000000000000780114005853140058fc9700505314001000000000000000160e817c784e8500c4fd9700388214000000000024010000f00c00001000000044fc970000000000c7e2907ce721807cffffffffe8f69700388214001809000098fc9700acfc9700d2e2a859ffffffffe8f697003882140018090000c4fc97003882140060fe9700c4fd9700ccfc97004ee3a859ffffffffe8f69700000000003882140018090000e0fc9700f4fc970093b2a859ffffffffe8f69700000000003882140018090000c4fd970060fe9700a85a140078fd9700a5b3a85960fe9700c4fd9700684f1400e8f697000000000018090000000000000200000080fd9700c4fd970060fe970000000000f40b000000000000000000000000000000f0fd7f000000001cf3120000000000e40c000039160000cc020000940d00000000000000000000000000000000000002000000ac4f14006010000098fd97005eb7a8593916000000000000684f1400784e85000000000084ff9700d4fe97007bb9a85960fe9700c4fd9700684f14003849140084ff9700010000000000000008ff9700f40b0000090000000000000020000000200000006c0000008c000000380000001e000000c4000000dc000000a80000008401000064000000b801000030000000e801000080050000e8010000680700000000000068070000680700000000000005150000340000002915000039150000fc1600001d23000068070000600300008a070000c80a0000310a00002c130000f91400000c000000352c000000000000ffffffff5c0f0000c84d8500784e8500884e85000000000000000000000000004c010000fc39a6590000000002000000050000000100000000008500280a000001000001cc0200009c0000000b00000050000000040000000010000000000000000000000001000000000000000000000000000034ff970078baa859384914005c0f0000c84d850001000000884e8500684f140008ff970064ff970000000000a8070000b0fe1200f40b00009cfb120000000000b8fb12000000000000000000ae20140000000000884e8500784e8500c84d8500a8fa120011204000ffffffff5c0f0000a80700000000000078ff970064ff970000000000adbf807c2025807cecff97000100000084ff970003000000c0110000f40b0000f40b0000a8fa120000000000010067470c0000006cff9700bc070000ffffffff000000006c1a4000f40b000000fa12000000000000004000a09d4000b0fe120083b6807cb0fe120000004000a09d4000b0fe120000e0fd7f00069c86c0ff9700d8863f86ffffffffa89a837c90b6807c000000000000000000000000301a4000b0fe120000000000
+
+MDException
+  thread_id                                  = 0xbf4
+  exception_record.exception_code            = 0xc0000005
+  exception_record.exception_flags           = 0x0
+  exception_record.exception_record          = 0x0
+  exception_record.exception_address         = 0x40429e
+  exception_record.number_parameters         = 2
+  exception_record.exception_information[ 0] = 0x1
+  exception_record.exception_information[ 1] = 0x45
+  thread_context.data_size                   = 716
+  thread_context.rva                         = 0xac8
+
+MDRawContextX86
+  context_flags                = 0x1003f
+  dr0                          = 0x0
+  dr1                          = 0x0
+  dr2                          = 0x0
+  dr3                          = 0x0
+  dr6                          = 0x0
+  dr7                          = 0x0
+  float_save.control_word      = 0xffff027f
+  float_save.status_word       = 0xffff0000
+  float_save.tag_word          = 0xffffffff
+  float_save.error_offset      = 0x0
+  float_save.error_selector    = 0x220000
+  float_save.data_offset       = 0x0
+  float_save.data_selector     = 0xffff0000
+  float_save.register_area[80] = 0x0000000018b72200000118b72200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+  float_save.cr0_npx_state     = 0x0
+  gs                           = 0x0
+  fs                           = 0x3b
+  es                           = 0x23
+  ds                           = 0x23
+  edi                          = 0xa28
+  esi                          = 0x2
+  ebx                          = 0x7c80abc1
+  edx                          = 0x42bc58
+  ecx                          = 0x12fe94
+  eax                          = 0x45
+  ebp                          = 0x12fe88
+  eip                          = 0x40429e
+  cs                           = 0x1b
+  eflags                       = 0x10246
+  esp                          = 0x12fe84
+  ss                           = 0x23
+  extended_registers[512]      = 0x7f0200000000220000000000000000000000000000000000801f0000ffff00000000000018b72200000100000000000018b72200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004509917c4e09917c38b622002400020024b42200020000009041917c0070fd7f0510907cccb22200000000009cb3220018ee907c7009917cc0e4977c6f3e917c623e917c08020000dcb62200b4b622001e000000000000000000000000000000000000002eb42200000000000f000000020000001e00200000fcfd7f2f63796764726976652f632f444f43554d457e312f4d4d454e544f7e312f4c4f43414c537e312f54656d7000000000000000000130b422000000004300000000000000001efcfd7f4509917c4e09917c5ad9000008b32200b4b62200
+
+MDRawSystemInfo
+  processor_architecture                     = 0x0
+  processor_level                            = 6
+  processor_revision                         = 0xd08
+  number_of_processors                       = 1
+  product_type                               = 1
+  major_version                              = 5
+  minor_version                              = 1
+  build_number                               = 2600
+  platform_id                                = 0x2
+  csd_version_rva                            = 0x768
+  suite_mask                                 = 0x100
+  cpu.x86_cpu_info (valid):
+  cpu.x86_cpu_info.vendor_id[0]              = 0x756e6547
+  cpu.x86_cpu_info.vendor_id[1]              = 0x49656e69
+  cpu.x86_cpu_info.vendor_id[2]              = 0x6c65746e
+  cpu.x86_cpu_info.version_information       = 0x6d8
+  cpu.x86_cpu_info.feature_information       = 0xafe9fbff
+  cpu.x86_cpu_info.amd_extended_cpu_features = 0xffffffff
+  (csd_version)                              = "Service Pack 2"
+  (cpu_vendor)                               = "GenuineIntel"
+
+MDRawMiscInfo
+  size_of_info                 = 24
+  flags1                       = 0x3
+  process_id                   = 3932
+  process_create_time          = 0x45d35f73 2007-02-14 19:13:55
+  process_user_time            = 0
+  process_kernel_time          = 0
+
+MDRawBreakpadInfo
+  validity             = 0x3
+  dump_thread_id       = 0x11c0
+  requesting_thread_id = 0xbf4
+
diff --git a/google-breakpad/src/processor/testdata/minidump2.stackwalk.machine_readable.out b/google-breakpad/src/processor/testdata/minidump2.stackwalk.machine_readable.out
new file mode 100644
index 0000000..60f8af4
--- /dev/null
+++ b/google-breakpad/src/processor/testdata/minidump2.stackwalk.machine_readable.out
@@ -0,0 +1,21 @@
+OS|Windows NT|5.1.2600 Service Pack 2
+CPU|x86|GenuineIntel family 6 model 13 stepping 8|1
+Crash|EXCEPTION_ACCESS_VIOLATION_WRITE|0x45|0
+Module|test_app.exe||test_app.pdb|5A9832E5287241C1838ED98914E9B7FF1|0x00400000|0x0042cfff|1
+Module|dbghelp.dll|5.1.2600.2180|dbghelp.pdb|39559573E21B46F28E286923BE9E6A761|0x59a60000|0x59b00fff|0
+Module|imm32.dll|5.1.2600.2180|imm32.pdb|2C17A49C251B4C8EB9E2AD13D7D9EA162|0x76390000|0x763acfff|0
+Module|psapi.dll|5.1.2600.2180|psapi.pdb|A5C3A1F9689F43D8AD228A09293889702|0x76bf0000|0x76bfafff|0
+Module|ole32.dll|5.1.2600.2726|ole32.pdb|683B65B246F4418796D2EE6D4C55EB112|0x774e0000|0x7761cfff|0
+Module|version.dll|5.1.2600.2180|version.pdb|180A90C40384463E82DDC45B2C8AB76E2|0x77c00000|0x77c07fff|0
+Module|msvcrt.dll|7.0.2600.2180|msvcrt.pdb|A678F3C30DED426B839032B996987E381|0x77c10000|0x77c67fff|0
+Module|user32.dll|5.1.2600.2622|user32.pdb|EE2B714D83A34C9D88027621272F83262|0x77d40000|0x77dcffff|0
+Module|advapi32.dll|5.1.2600.2180|advapi32.pdb|455D6C5F184D45BBB5C5F30F829751142|0x77dd0000|0x77e6afff|0
+Module|rpcrt4.dll|5.1.2600.2180|rpcrt4.pdb|BEA45A721DA141DAA3BA86B3A20311532|0x77e70000|0x77f00fff|0
+Module|gdi32.dll|5.1.2600.2818|gdi32.pdb|C0EA66BE00A64BD7AEF79E443A91869C2|0x77f10000|0x77f56fff|0
+Module|kernel32.dll|5.1.2600.2945|kernel32.pdb|BCE8785C57B44245A669896B6A19B9542|0x7c800000|0x7c8f3fff|0
+Module|ntdll.dll|5.1.2600.2180|ntdll.pdb|36515FB5D04345E491F672FA2E2878C02|0x7c900000|0x7c9affff|0
+
+0|0|test_app.exe|`anonymous namespace'::CrashFunction|c:\test_app.cc|58|0x3
+0|1|test_app.exe|main|c:\test_app.cc|65|0x5
+0|2|test_app.exe|__tmainCRTStartup|f:\sp\vctools\crt_bld\self_x86\crt\src\crt0.c|327|0x12
+0|3|kernel32.dll|BaseProcessStart|||0x23
diff --git a/google-breakpad/src/processor/testdata/minidump2.stackwalk.out b/google-breakpad/src/processor/testdata/minidump2.stackwalk.out
new file mode 100644
index 0000000..784c7e5
--- /dev/null
+++ b/google-breakpad/src/processor/testdata/minidump2.stackwalk.out
@@ -0,0 +1,40 @@
+Operating system: Windows NT
+                  5.1.2600 Service Pack 2
+CPU: x86
+     GenuineIntel family 6 model 13 stepping 8
+     1 CPU
+
+Crash reason:  EXCEPTION_ACCESS_VIOLATION_WRITE
+Crash address: 0x45
+Process uptime: 0 seconds
+
+Thread 0 (crashed)
+ 0  test_app.exe!`anonymous namespace'::CrashFunction [test_app.cc : 58 + 0x3]
+    eip = 0x0040429e   esp = 0x0012fe84   ebp = 0x0012fe88   ebx = 0x7c80abc1
+    esi = 0x00000002   edi = 0x00000a28   eax = 0x00000045   ecx = 0x0012fe94
+    edx = 0x0042bc58   efl = 0x00010246
+    Found by: given as instruction pointer in context
+ 1  test_app.exe!main [test_app.cc : 65 + 0x5]
+    eip = 0x00404200   esp = 0x0012fe90   ebp = 0x0012ff70
+    Found by: call frame info
+ 2  test_app.exe!__tmainCRTStartup [crt0.c : 327 + 0x12]
+    eip = 0x004053ec   esp = 0x0012ff78   ebp = 0x0012ffc0
+    Found by: call frame info
+ 3  kernel32.dll!BaseProcessStart + 0x23
+    eip = 0x7c816fd7   esp = 0x0012ffc8   ebp = 0x0012fff0
+    Found by: call frame info
+
+Loaded modules:
+0x00400000 - 0x0042cfff  test_app.exe  ???  (main)
+0x59a60000 - 0x59b00fff  dbghelp.dll  5.1.2600.2180
+0x76390000 - 0x763acfff  imm32.dll  5.1.2600.2180
+0x76bf0000 - 0x76bfafff  psapi.dll  5.1.2600.2180
+0x774e0000 - 0x7761cfff  ole32.dll  5.1.2600.2726
+0x77c00000 - 0x77c07fff  version.dll  5.1.2600.2180
+0x77c10000 - 0x77c67fff  msvcrt.dll  7.0.2600.2180
+0x77d40000 - 0x77dcffff  user32.dll  5.1.2600.2622
+0x77dd0000 - 0x77e6afff  advapi32.dll  5.1.2600.2180
+0x77e70000 - 0x77f00fff  rpcrt4.dll  5.1.2600.2180
+0x77f10000 - 0x77f56fff  gdi32.dll  5.1.2600.2818
+0x7c800000 - 0x7c8f3fff  kernel32.dll  5.1.2600.2945
+0x7c900000 - 0x7c9affff  ntdll.dll  5.1.2600.2180
diff --git a/google-breakpad/src/processor/testdata/module0.out b/google-breakpad/src/processor/testdata/module0.out
new file mode 100644
index 0000000..72fb4da
--- /dev/null
+++ b/google-breakpad/src/processor/testdata/module0.out
@@ -0,0 +1,22151 @@
+MODULE windows x86 5A9832E5287241C1838ED98914E9B7FF1 test_app.pdb
+FILE 1 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winbase.h
+FILE 2 c:\program files\microsoft visual studio 8\vc\include\typeinfo
+FILE 3 c:\breakpad\trunk\src\common\windows\guid_string.h
+FILE 4 c:\program files\microsoft visual studio 8\vc\platformsdk\include\rpcdce.h
+FILE 5 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winreg.h
+FILE 6 c:\program files\microsoft visual studio 8\vc\platformsdk\include\objidl.h
+FILE 7 c:\program files\microsoft visual studio 8\vc\platformsdk\include\wtypes.h
+FILE 8 c:\program files\microsoft visual studio 8\vc\platformsdk\include\tvout.h
+FILE 9 c:\program files\microsoft visual studio 8\vc\include\malloc.h
+FILE 10 c:\program files\microsoft visual studio 8\vc\platformsdk\include\pshpack2.h
+FILE 11 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winuser.h
+FILE 12 c:\breakpad\trunk\src\client\windows\handler\exception_handler.cc
+FILE 13 c:\program files\microsoft visual studio 8\vc\platformsdk\include\urlmon.h
+FILE 14 c:\program files\microsoft visual studio 8\vc\platformsdk\include\wincon.h
+FILE 15 c:\program files\microsoft visual studio 8\vc\platformsdk\include\imm.h
+FILE 16 c:\program files\microsoft visual studio 8\vc\platformsdk\include\rpcdcep.h
+FILE 17 c:\program files\microsoft visual studio 8\vc\include\xstring
+FILE 18 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winver.h
+FILE 19 c:\program files\microsoft visual studio 8\vc\include\xmemory
+FILE 20 c:\program files\microsoft visual studio 8\vc\include\new
+FILE 21 c:\program files\microsoft visual studio 8\vc\platformsdk\include\pshpack4.h
+FILE 22 c:\program files\microsoft visual studio 8\vc\platformsdk\include\reason.h
+FILE 23 c:\program files\microsoft visual studio 8\vc\include\vector
+FILE 24 c:\program files\microsoft visual studio 8\vc\include\memory
+FILE 25 c:\program files\microsoft visual studio 8\vc\include\wtime.inl
+FILE 26 c:\program files\microsoft visual studio 8\vc\include\iterator
+FILE 27 c:\program files\microsoft visual studio 8\vc\platformsdk\include\propidl.h
+FILE 28 c:\program files\microsoft visual studio 8\vc\platformsdk\include\pshpack1.h
+FILE 29 c:\program files\microsoft visual studio 8\vc\platformsdk\include\specstrings.h
+FILE 30 c:\program files\microsoft visual studio 8\vc\platformsdk\include\basetsd.h
+FILE 31 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winerror.h
+FILE 32 c:\program files\microsoft visual studio 8\vc\include\assert.h
+FILE 33 c:\program files\microsoft visual studio 8\vc\platformsdk\include\poppack.h
+FILE 34 c:\program files\microsoft visual studio 8\vc\include\cstdio
+FILE 35 c:\program files\microsoft visual studio 8\vc\include\stdio.h
+FILE 36 c:\program files\microsoft visual studio 8\vc\platformsdk\include\rpcnterr.h
+FILE 37 c:\program files\microsoft visual studio 8\vc\platformsdk\include\rpcasync.h
+FILE 38 c:\program files\microsoft visual studio 8\vc\platformsdk\include\rpcnsi.h
+FILE 39 c:\program files\microsoft visual studio 8\vc\include\stdlib.h
+FILE 40 c:\program files\microsoft visual studio 8\vc\platformsdk\include\servprov.h
+FILE 41 c:\program files\microsoft visual studio 8\vc\include\limits.h
+FILE 42 c:\program files\microsoft visual studio 8\vc\platformsdk\include\rpcndr.h
+FILE 43 c:\breakpad\trunk\src\client\windows\handler\exception_handler.h
+FILE 44 c:\program files\microsoft visual studio 8\vc\platformsdk\include\rpcnsip.h
+FILE 45 c:\program files\microsoft visual studio 8\vc\platformsdk\include\dbghelp.h
+FILE 46 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winnetwk.h
+FILE 47 c:\program files\microsoft visual studio 8\vc\include\share.h
+FILE 48 c:\program files\microsoft visual studio 8\vc\platformsdk\include\pshpack8.h
+FILE 49 c:\program files\microsoft visual studio 8\vc\platformsdk\include\stralign.h
+FILE 50 c:\breakpad\trunk\src\google_breakpad\common\minidump_format.h
+FILE 51 c:\breakpad\trunk\src\google_breakpad\common\breakpad_types.h
+FILE 52 c:\program files\microsoft visual studio 8\vc\include\xdebug
+FILE 53 c:\program files\microsoft visual studio 8\vc\include\stdarg.h
+FILE 54 c:\program files\microsoft visual studio 8\vc\platformsdk\include\windef.h
+FILE 55 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winsvc.h
+FILE 56 c:\program files\microsoft visual studio 8\vc\platformsdk\include\wingdi.h
+FILE 57 c:\program files\microsoft visual studio 8\vc\include\xlocinfo
+FILE 58 c:\program files\microsoft visual studio 8\vc\include\xlocinfo.h
+FILE 59 c:\program files\microsoft visual studio 8\vc\platformsdk\include\oleidl.h
+FILE 60 c:\program files\microsoft visual studio 8\vc\include\locale.h
+FILE 61 c:\program files\microsoft visual studio 8\vc\include\string
+FILE 62 c:\program files\microsoft visual studio 8\vc\include\istream
+FILE 63 c:\breakpad\trunk\src\common\windows\string_utils-inl.h
+FILE 64 c:\program files\microsoft visual studio 8\vc\include\ostream
+FILE 65 c:\program files\microsoft visual studio 8\vc\include\xutility
+FILE 66 c:\program files\microsoft visual studio 8\vc\include\wchar.h
+FILE 67 c:\program files\microsoft visual studio 8\vc\include\utility
+FILE 68 c:\program files\microsoft visual studio 8\vc\include\ios
+FILE 69 c:\program files\microsoft visual studio 8\vc\include\xlocnum
+FILE 70 c:\program files\microsoft visual studio 8\vc\include\iosfwd
+FILE 71 c:\program files\microsoft visual studio 8\vc\include\swprintf.inl
+FILE 72 c:\program files\microsoft visual studio 8\vc\platformsdk\include\guiddef.h
+FILE 73 c:\program files\microsoft visual studio 8\vc\include\cwchar
+FILE 74 c:\program files\microsoft visual studio 8\vc\include\climits
+FILE 75 c:\program files\microsoft visual studio 8\vc\include\crtdbg.h
+FILE 76 c:\program files\microsoft visual studio 8\vc\include\cstdlib
+FILE 77 c:\program files\microsoft visual studio 8\vc\include\streambuf
+FILE 78 c:\program files\microsoft visual studio 8\vc\include\xiosbase
+FILE 79 c:\program files\microsoft visual studio 8\vc\include\xlocale
+FILE 80 c:\program files\microsoft visual studio 8\vc\include\cstring
+FILE 81 c:\program files\microsoft visual studio 8\vc\platformsdk\include\mcx.h
+FILE 82 c:\program files\microsoft visual studio 8\vc\include\stdexcept
+FILE 83 c:\program files\microsoft visual studio 8\vc\include\exception
+FILE 84 c:\program files\microsoft visual studio 8\vc\include\xstddef
+FILE 85 c:\program files\microsoft visual studio 8\vc\platformsdk\include\objbase.h
+FILE 86 c:\program files\microsoft visual studio 8\vc\include\cstddef
+FILE 87 c:\program files\microsoft visual studio 8\vc\platformsdk\include\unknwn.h
+FILE 88 c:\program files\microsoft visual studio 8\vc\platformsdk\include\rpc.h
+FILE 89 c:\program files\microsoft visual studio 8\vc\include\stddef.h
+FILE 90 c:\program files\microsoft visual studio 8\vc\include\cassert
+FILE 91 c:\program files\microsoft visual studio 8\vc\platformsdk\include\ole2.h
+FILE 92 c:\program files\microsoft visual studio 8\vc\platformsdk\include\windows.h
+FILE 93 c:\program files\microsoft visual studio 8\vc\include\yvals.h
+FILE 94 c:\program files\microsoft visual studio 8\vc\platformsdk\include\oleauto.h
+FILE 95 c:\program files\microsoft visual studio 8\vc\include\excpt.h
+FILE 96 c:\program files\microsoft visual studio 8\vc\include\use_ansi.h
+FILE 97 c:\program files\microsoft visual studio 8\vc\platformsdk\include\cguid.h
+FILE 98 c:\program files\microsoft visual studio 8\vc\include\crtdefs.h
+FILE 99 c:\program files\microsoft visual studio 8\vc\platformsdk\include\msxml.h
+FILE 100 c:\program files\microsoft visual studio 8\vc\platformsdk\include\oaidl.h
+FILE 101 c:\program files\microsoft visual studio 8\vc\include\sal.h
+FILE 102 c:\program files\microsoft visual studio 8\vc\include\vadefs.h
+FILE 103 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winnt.h
+FILE 104 c:\program files\microsoft visual studio 8\vc\include\ctype.h
+FILE 105 c:\program files\microsoft visual studio 8\vc\include\eh.h
+FILE 106 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winnls.h
+FILE 107 c:\program files\microsoft visual studio 8\vc\include\string.h
+FILE 108 c:\program files\microsoft visual studio 8\vc\include\ctype.h
+FILE 109 c:\program files\microsoft visual studio 8\vc\include\xutility
+FILE 110 c:\program files\microsoft visual studio 8\vc\include\utility
+FILE 111 c:\program files\microsoft visual studio 8\vc\include\iosfwd
+FILE 112 c:\program files\microsoft visual studio 8\vc\include\cwchar
+FILE 113 c:\program files\microsoft visual studio 8\vc\include\crtdbg.h
+FILE 114 c:\program files\microsoft visual studio 8\vc\include\stdexcept
+FILE 115 c:\program files\microsoft visual studio 8\vc\include\exception
+FILE 116 c:\program files\microsoft visual studio 8\vc\include\xstddef
+FILE 117 c:\program files\microsoft visual studio 8\vc\include\cstddef
+FILE 118 c:\program files\microsoft visual studio 8\vc\include\stddef.h
+FILE 119 c:\program files\microsoft visual studio 8\vc\include\eh.h
+FILE 120 c:\program files\microsoft visual studio 8\vc\include\streambuf
+FILE 121 c:\program files\microsoft visual studio 8\vc\include\xiosbase
+FILE 122 c:\program files\microsoft visual studio 8\vc\include\xlocale
+FILE 123 c:\program files\microsoft visual studio 8\vc\include\cstring
+FILE 124 c:\program files\microsoft visual studio 8\vc\include\string.h
+FILE 125 c:\program files\microsoft visual studio 8\vc\include\typeinfo
+FILE 126 c:\breakpad\trunk\src\common\windows\guid_string.cc
+FILE 127 c:\breakpad\trunk\src\common\windows\string_utils-inl.h
+FILE 128 c:\program files\microsoft visual studio 8\vc\include\stdarg.h
+FILE 129 c:\program files\microsoft visual studio 8\vc\include\string
+FILE 130 c:\program files\microsoft visual studio 8\vc\include\istream
+FILE 131 c:\program files\microsoft visual studio 8\vc\include\ostream
+FILE 132 c:\program files\microsoft visual studio 8\vc\include\ios
+FILE 133 c:\program files\microsoft visual studio 8\vc\include\xlocnum
+FILE 134 c:\program files\microsoft visual studio 8\vc\include\climits
+FILE 135 c:\program files\microsoft visual studio 8\vc\include\yvals.h
+FILE 136 c:\program files\microsoft visual studio 8\vc\include\use_ansi.h
+FILE 137 c:\program files\microsoft visual studio 8\vc\include\cstdlib
+FILE 138 c:\program files\microsoft visual studio 8\vc\include\stdlib.h
+FILE 139 c:\program files\microsoft visual studio 8\vc\include\malloc.h
+FILE 140 c:\breakpad\trunk\src\common\windows\guid_string.h
+FILE 141 c:\program files\microsoft visual studio 8\vc\platformsdk\include\guiddef.h
+FILE 142 c:\program files\microsoft visual studio 8\vc\include\share.h
+FILE 143 c:\program files\microsoft visual studio 8\vc\include\xstring
+FILE 144 c:\program files\microsoft visual studio 8\vc\include\xmemory
+FILE 145 c:\program files\microsoft visual studio 8\vc\include\new
+FILE 146 c:\program files\microsoft visual studio 8\vc\include\locale.h
+FILE 147 c:\program files\microsoft visual studio 8\vc\include\swprintf.inl
+FILE 148 c:\program files\microsoft visual studio 8\vc\include\limits.h
+FILE 149 c:\program files\microsoft visual studio 8\vc\include\wchar.h
+FILE 150 c:\program files\microsoft visual studio 8\vc\include\cstdio
+FILE 151 c:\program files\microsoft visual studio 8\vc\include\crtdefs.h
+FILE 152 c:\program files\microsoft visual studio 8\vc\include\stdio.h
+FILE 153 c:\program files\microsoft visual studio 8\vc\include\wtime.inl
+FILE 154 c:\program files\microsoft visual studio 8\vc\include\sal.h
+FILE 155 c:\program files\microsoft visual studio 8\vc\include\xdebug
+FILE 156 c:\program files\microsoft visual studio 8\vc\include\vadefs.h
+FILE 157 c:\program files\microsoft visual studio 8\vc\include\xlocinfo
+FILE 158 c:\program files\microsoft visual studio 8\vc\include\xlocinfo.h
+FILE 159 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winnetwk.h
+FILE 160 c:\program files\microsoft visual studio 8\vc\platformsdk\include\urlmon.h
+FILE 161 c:\program files\microsoft visual studio 8\vc\platformsdk\include\pshpack8.h
+FILE 162 c:\program files\microsoft visual studio 8\vc\platformsdk\include\cderr.h
+FILE 163 c:\program files\microsoft visual studio 8\vc\platformsdk\include\shellapi.h
+FILE 164 c:\program files\microsoft visual studio 8\vc\platformsdk\include\dde.h
+FILE 165 c:\program files\microsoft visual studio 8\vc\include\vector
+FILE 166 c:\program files\microsoft visual studio 8\vc\include\stdio.h
+FILE 167 c:\program files\microsoft visual studio 8\vc\include\memory
+FILE 168 c:\program files\microsoft visual studio 8\vc\include\iterator
+FILE 169 c:\program files\microsoft visual studio 8\vc\include\malloc.h
+FILE 170 c:\program files\microsoft visual studio 8\vc\include\stdarg.h
+FILE 171 c:\program files\microsoft visual studio 8\vc\platformsdk\include\windef.h
+FILE 172 c:\program files\microsoft visual studio 8\vc\platformsdk\include\wingdi.h
+FILE 173 c:\program files\microsoft visual studio 8\vc\platformsdk\include\imm.h
+FILE 174 c:\program files\microsoft visual studio 8\vc\platformsdk\include\mmsystem.h
+FILE 175 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winioctl.h
+FILE 176 c:\program files\microsoft visual studio 8\vc\platformsdk\include\guiddef.h
+FILE 177 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winsmcrd.h
+FILE 178 c:\test_app.cc
+FILE 179 c:\program files\microsoft visual studio 8\vc\platformsdk\include\oaidl.h
+FILE 180 c:\program files\microsoft visual studio 8\vc\platformsdk\include\nb30.h
+FILE 181 c:\program files\microsoft visual studio 8\vc\include\xstring
+FILE 182 c:\program files\microsoft visual studio 8\vc\include\xmemory
+FILE 183 c:\program files\microsoft visual studio 8\vc\include\new
+FILE 184 c:\program files\microsoft visual studio 8\vc\platformsdk\include\oleidl.h
+FILE 185 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winnls.h
+FILE 186 c:\breakpad\trunk\src\google_breakpad\common\minidump_format.h
+FILE 187 c:\program files\microsoft visual studio 8\vc\include\string.h
+FILE 188 c:\breakpad\trunk\src\google_breakpad\common\breakpad_types.h
+FILE 189 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winnt.h
+FILE 190 c:\program files\microsoft visual studio 8\vc\include\ctype.h
+FILE 191 c:\program files\microsoft visual studio 8\vc\include\wtime.inl
+FILE 192 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winbase.h
+FILE 193 c:\program files\microsoft visual studio 8\vc\platformsdk\include\propidl.h
+FILE 194 c:\breakpad\trunk\src\client\windows\handler\exception_handler.h
+FILE 195 c:\program files\microsoft visual studio 8\vc\include\stdlib.h
+FILE 196 c:\program files\microsoft visual studio 8\vc\include\swprintf.inl
+FILE 197 c:\program files\microsoft visual studio 8\vc\include\limits.h
+FILE 198 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winreg.h
+FILE 199 c:\program files\microsoft visual studio 8\vc\platformsdk\include\rpc.h
+FILE 200 c:\program files\microsoft visual studio 8\vc\platformsdk\include\ole2.h
+FILE 201 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winscard.h
+FILE 202 c:\program files\microsoft visual studio 8\vc\platformsdk\include\objbase.h
+FILE 203 c:\program files\microsoft visual studio 8\vc\platformsdk\include\wtypes.h
+FILE 204 c:\program files\microsoft visual studio 8\vc\platformsdk\include\rpcndr.h
+FILE 205 c:\program files\microsoft visual studio 8\vc\platformsdk\include\rpcdce.h
+FILE 206 c:\program files\microsoft visual studio 8\vc\platformsdk\include\rpcnsip.h
+FILE 207 c:\program files\microsoft visual studio 8\vc\include\share.h
+FILE 208 c:\program files\microsoft visual studio 8\vc\platformsdk\include\tvout.h
+FILE 209 c:\program files\microsoft visual studio 8\vc\include\use_ansi.h
+FILE 210 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winefs.h
+FILE 211 c:\program files\microsoft visual studio 8\vc\platformsdk\include\pshpack2.h
+FILE 212 c:\program files\microsoft visual studio 8\vc\platformsdk\include\commdlg.h
+FILE 213 c:\program files\microsoft visual studio 8\vc\platformsdk\include\unknwn.h
+FILE 214 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winsock.h
+FILE 215 c:\program files\microsoft visual studio 8\vc\platformsdk\include\stralign.h
+FILE 216 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winuser.h
+FILE 217 c:\program files\microsoft visual studio 8\vc\platformsdk\include\servprov.h
+FILE 218 c:\program files\microsoft visual studio 8\vc\include\xdebug
+FILE 219 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winsvc.h
+FILE 220 c:\program files\microsoft visual studio 8\vc\platformsdk\include\wincon.h
+FILE 221 c:\program files\microsoft visual studio 8\vc\include\xlocinfo
+FILE 222 c:\program files\microsoft visual studio 8\vc\include\xlocinfo.h
+FILE 223 c:\program files\microsoft visual studio 8\vc\include\locale.h
+FILE 224 c:\program files\microsoft visual studio 8\vc\platformsdk\include\cguid.h
+FILE 225 c:\program files\microsoft visual studio 8\vc\include\string
+FILE 226 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winver.h
+FILE 227 c:\program files\microsoft visual studio 8\vc\include\istream
+FILE 228 c:\program files\microsoft visual studio 8\vc\include\ostream
+FILE 229 c:\program files\microsoft visual studio 8\vc\include\xutility
+FILE 230 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winperf.h
+FILE 231 c:\program files\microsoft visual studio 8\vc\platformsdk\include\pshpack4.h
+FILE 232 c:\program files\microsoft visual studio 8\vc\include\utility
+FILE 233 c:\program files\microsoft visual studio 8\vc\include\ios
+FILE 234 c:\program files\microsoft visual studio 8\vc\include\xlocnum
+FILE 235 c:\program files\microsoft visual studio 8\vc\include\crtdbg.h
+FILE 236 c:\program files\microsoft visual studio 8\vc\include\iosfwd
+FILE 237 c:\program files\microsoft visual studio 8\vc\platformsdk\include\rpcdcep.h
+FILE 238 c:\program files\microsoft visual studio 8\vc\include\cwchar
+FILE 239 c:\program files\microsoft visual studio 8\vc\include\climits
+FILE 240 c:\program files\microsoft visual studio 8\vc\include\wchar.h
+FILE 241 c:\program files\microsoft visual studio 8\vc\include\cstdlib
+FILE 242 c:\program files\microsoft visual studio 8\vc\platformsdk\include\mcx.h
+FILE 243 c:\program files\microsoft visual studio 8\vc\include\streambuf
+FILE 244 c:\program files\microsoft visual studio 8\vc\include\xiosbase
+FILE 245 c:\program files\microsoft visual studio 8\vc\platformsdk\include\reason.h
+FILE 246 c:\program files\microsoft visual studio 8\vc\include\xlocale
+FILE 247 c:\program files\microsoft visual studio 8\vc\platformsdk\include\dlgs.h
+FILE 248 c:\program files\microsoft visual studio 8\vc\include\cstring
+FILE 249 c:\program files\microsoft visual studio 8\vc\include\stdexcept
+FILE 250 c:\program files\microsoft visual studio 8\vc\platformsdk\include\pshpack1.h
+FILE 251 c:\program files\microsoft visual studio 8\vc\include\exception
+FILE 252 c:\program files\microsoft visual studio 8\vc\include\xstddef
+FILE 253 c:\program files\microsoft visual studio 8\vc\platformsdk\include\specstrings.h
+FILE 254 c:\program files\microsoft visual studio 8\vc\include\cstddef
+FILE 255 c:\program files\microsoft visual studio 8\vc\platformsdk\include\basetsd.h
+FILE 256 c:\program files\microsoft visual studio 8\vc\include\stddef.h
+FILE 257 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winerror.h
+FILE 258 c:\program files\microsoft visual studio 8\vc\platformsdk\include\wincrypt.h
+FILE 259 c:\program files\microsoft visual studio 8\vc\platformsdk\include\poppack.h
+FILE 260 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winspool.h
+FILE 261 c:\program files\microsoft visual studio 8\vc\platformsdk\include\oleauto.h
+FILE 262 c:\program files\microsoft visual studio 8\vc\platformsdk\include\prsht.h
+FILE 263 c:\program files\microsoft visual studio 8\vc\platformsdk\include\objidl.h
+FILE 264 c:\program files\microsoft visual studio 8\vc\include\cstdio
+FILE 265 c:\program files\microsoft visual studio 8\vc\include\yvals.h
+FILE 266 c:\program files\microsoft visual studio 8\vc\include\eh.h
+FILE 267 c:\program files\microsoft visual studio 8\vc\platformsdk\include\lzexpand.h
+FILE 268 c:\program files\microsoft visual studio 8\vc\platformsdk\include\ddeml.h
+FILE 269 c:\program files\microsoft visual studio 8\vc\include\crtdefs.h
+FILE 270 c:\program files\microsoft visual studio 8\vc\include\sal.h
+FILE 271 c:\program files\microsoft visual studio 8\vc\include\vadefs.h
+FILE 272 c:\program files\microsoft visual studio 8\vc\platformsdk\include\dbghelp.h
+FILE 273 c:\program files\microsoft visual studio 8\vc\platformsdk\include\rpcnterr.h
+FILE 274 c:\program files\microsoft visual studio 8\vc\platformsdk\include\rpcasync.h
+FILE 275 c:\program files\microsoft visual studio 8\vc\platformsdk\include\rpcnsi.h
+FILE 276 c:\program files\microsoft visual studio 8\vc\include\typeinfo
+FILE 277 c:\program files\microsoft visual studio 8\vc\platformsdk\include\windows.h
+FILE 278 c:\program files\microsoft visual studio 8\vc\include\excpt.h
+FILE 279 c:\program files\microsoft visual studio 8\vc\platformsdk\include\msxml.h
+FILE 280 f:\sp\vctools\crt_bld\self_x86\crt\src\xdebug
+FILE 281 f:\sp\vctools\crt_bld\self_x86\crt\src\streambuf
+FILE 282 f:\sp\vctools\crt_bld\self_x86\crt\src\xiosbase
+FILE 283 f:\sp\vctools\crt_bld\self_x86\crt\src\xlocale
+FILE 284 f:\sp\vctools\crt_bld\self_x86\crt\src\cstring
+FILE 285 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 286 f:\sp\vctools\crt_bld\self_x86\crt\src\xlocinfo
+FILE 287 f:\sp\vctools\crt_bld\self_x86\crt\src\xlocinfo.h
+FILE 288 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 289 f:\sp\vctools\crt_bld\self_x86\crt\src\share.h
+FILE 290 f:\sp\vctools\crt_bld\self_x86\crt\src\use_ansi.h
+FILE 291 f:\sp\vctools\crt_bld\self_x86\crt\src\string.cpp
+FILE 292 f:\sp\vctools\crt_bld\self_x86\crt\src\typeinfo
+FILE 293 f:\sp\vctools\crt_bld\self_x86\crt\src\xutility
+FILE 294 f:\sp\vctools\crt_bld\self_x86\crt\src\utility
+FILE 295 f:\sp\vctools\crt_bld\self_x86\crt\src\iosfwd
+FILE 296 f:\sp\vctools\crt_bld\self_x86\crt\src\cwchar
+FILE 297 f:\sp\vctools\crt_bld\self_x86\crt\src\wchar.h
+FILE 298 f:\sp\vctools\crt_bld\self_x86\crt\src\stdexcept
+FILE 299 f:\sp\vctools\crt_bld\self_x86\crt\src\exception
+FILE 300 f:\sp\vctools\crt_bld\self_x86\crt\src\xstddef
+FILE 301 f:\sp\vctools\crt_bld\self_x86\crt\src\cstddef
+FILE 302 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 303 f:\sp\vctools\crt_bld\self_x86\crt\src\istream
+FILE 304 f:\sp\vctools\crt_bld\self_x86\crt\src\ostream
+FILE 305 f:\sp\vctools\crt_bld\self_x86\crt\src\ios
+FILE 306 f:\sp\vctools\crt_bld\self_x86\crt\src\xlocnum
+FILE 307 f:\sp\vctools\crt_bld\self_x86\crt\src\eh.h
+FILE 308 f:\sp\vctools\crt_bld\self_x86\crt\src\cstdlib
+FILE 309 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 310 f:\sp\vctools\crt_bld\self_x86\crt\src\climits
+FILE 311 f:\sp\vctools\crt_bld\self_x86\crt\src\yvals.h
+FILE 312 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 313 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 314 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl
+FILE 315 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 316 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 317 f:\sp\vctools\crt_bld\self_x86\crt\src\cstdio
+FILE 318 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 319 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 320 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 321 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 322 f:\sp\public\sdk\inc\ddbanned.h
+FILE 323 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 324 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 325 f:\sp\vctools\crt_bld\self_x86\crt\src\xstring
+FILE 326 f:\sp\vctools\crt_bld\self_x86\crt\src\xmemory
+FILE 327 f:\sp\vctools\crt_bld\self_x86\crt\src\new
+FILE 328 f:\sp\public\sdk\inc\reason.h
+FILE 329 f:\sp\public\sdk\inc\wincon.h
+FILE 330 f:\sp\public\sdk\inc\pshpack2.h
+FILE 331 f:\sp\public\sdk\inc\mcx.h
+FILE 332 f:\sp\public\sdk\inc\winuser.h
+FILE 333 f:\sp\public\sdk\inc\winnls.h
+FILE 334 f:\sp\public\sdk\inc\guiddef.h
+FILE 335 f:\sp\public\sdk\inc\specstrings.h
+FILE 336 f:\sp\public\sdk\inc\basetsd.h
+FILE 337 f:\sp\public\sdk\inc\stralign.h
+FILE 338 f:\sp\public\sdk\inc\tvout.h
+FILE 339 f:\sp\public\sdk\inc\winsvc.h
+FILE 340 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\string.h
+FILE 341 f:\sp\public\sdk\inc\wingdi.h
+FILE 342 f:\sp\public\sdk\inc\pshpack4.h
+FILE 343 f:\sp\public\sdk\inc\poppack.h
+FILE 344 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sect_attribs.h
+FILE 345 f:\sp\public\sdk\inc\winnetwk.h
+FILE 346 f:\sp\public\sdk\inc\imm.h
+FILE 347 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h
+FILE 348 f:\sp\public\sdk\inc\windef.h
+FILE 349 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdbg.h
+FILE 350 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\tran\i386\cpu_disp.c
+FILE 351 f:\sp\public\sdk\inc\pshpack1.h
+FILE 352 f:\sp\public\sdk\inc\winver.h
+FILE 353 f:\sp\public\sdk\inc\windows.h
+FILE 354 f:\sp\public\sdk\inc\winnt.h
+FILE 355 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h
+FILE 356 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h
+FILE 357 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h
+FILE 358 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h
+FILE 359 f:\sp\public\sdk\inc\ddbanned.h
+FILE 360 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h
+FILE 361 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h
+FILE 362 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\errno.h
+FILE 363 f:\sp\public\sdk\inc\winreg.h
+FILE 364 f:\sp\public\sdk\inc\winbase.h
+FILE 365 f:\sp\public\sdk\inc\winerror.h
+FILE 366 f:\sp\public\sdk\inc\pshpack8.h
+FILE 367 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\internal.h
+FILE 368 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\limits.h
+FILE 369 f:\sp\public\sdk\inc\reason.h
+FILE 370 f:\sp\public\sdk\inc\wincon.h
+FILE 371 f:\sp\public\sdk\inc\pshpack2.h
+FILE 372 f:\sp\public\sdk\inc\mcx.h
+FILE 373 f:\sp\public\sdk\inc\winuser.h
+FILE 374 f:\sp\public\sdk\inc\winnls.h
+FILE 375 f:\sp\public\sdk\inc\guiddef.h
+FILE 376 f:\sp\public\sdk\inc\specstrings.h
+FILE 377 f:\sp\public\sdk\inc\basetsd.h
+FILE 378 f:\sp\public\sdk\inc\stralign.h
+FILE 379 f:\sp\public\sdk\inc\tvout.h
+FILE 380 f:\sp\public\sdk\inc\winsvc.h
+FILE 381 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\string.h
+FILE 382 f:\sp\public\sdk\inc\wingdi.h
+FILE 383 f:\sp\public\sdk\inc\pshpack4.h
+FILE 384 f:\sp\public\sdk\inc\poppack.h
+FILE 385 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sect_attribs.h
+FILE 386 f:\sp\public\sdk\inc\winnetwk.h
+FILE 387 f:\sp\public\sdk\inc\imm.h
+FILE 388 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h
+FILE 389 f:\sp\public\sdk\inc\windef.h
+FILE 390 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdbg.h
+FILE 391 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\tran\i386\mathfcns.c
+FILE 392 f:\sp\public\sdk\inc\pshpack1.h
+FILE 393 f:\sp\public\sdk\inc\winver.h
+FILE 394 f:\sp\public\sdk\inc\windows.h
+FILE 395 f:\sp\public\sdk\inc\winnt.h
+FILE 396 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h
+FILE 397 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h
+FILE 398 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h
+FILE 399 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h
+FILE 400 f:\sp\public\sdk\inc\ddbanned.h
+FILE 401 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h
+FILE 402 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h
+FILE 403 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\errno.h
+FILE 404 f:\sp\public\sdk\inc\winreg.h
+FILE 405 f:\sp\public\sdk\inc\winbase.h
+FILE 406 f:\sp\public\sdk\inc\winerror.h
+FILE 407 f:\sp\public\sdk\inc\pshpack8.h
+FILE 408 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\internal.h
+FILE 409 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\limits.h
+FILE 410 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 411 f:\sp\public\sdk\inc\winreg.h
+FILE 412 f:\sp\public\sdk\inc\winbase.h
+FILE 413 f:\sp\public\sdk\inc\winerror.h
+FILE 414 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 415 f:\sp\public\sdk\inc\windef.h
+FILE 416 f:\sp\vctools\crt_bld\self_x86\crt\src\ctime.h
+FILE 417 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl
+FILE 418 f:\sp\vctools\crt_bld\self_x86\crt\src\time.h
+FILE 419 f:\sp\public\sdk\inc\pshpack8.h
+FILE 420 f:\sp\public\sdk\inc\reason.h
+FILE 421 f:\sp\public\sdk\inc\wincon.h
+FILE 422 f:\sp\vctools\crt_bld\self_x86\crt\src\time.inl
+FILE 423 f:\sp\public\sdk\inc\pshpack2.h
+FILE 424 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 425 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 426 f:\sp\public\sdk\inc\mcx.h
+FILE 427 f:\sp\public\sdk\inc\winuser.h
+FILE 428 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 429 f:\sp\public\sdk\inc\winnls.h
+FILE 430 f:\sp\public\sdk\inc\guiddef.h
+FILE 431 f:\sp\public\sdk\inc\stralign.h
+FILE 432 f:\sp\public\sdk\inc\winnt.h
+FILE 433 f:\sp\public\sdk\inc\specstrings.h
+FILE 434 f:\sp\public\sdk\inc\basetsd.h
+FILE 435 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 436 f:\sp\public\sdk\inc\tvout.h
+FILE 437 f:\sp\public\sdk\inc\winsvc.h
+FILE 438 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 439 f:\sp\public\sdk\inc\wingdi.h
+FILE 440 f:\sp\vctools\crt_bld\self_x86\crt\src\tzset.c
+FILE 441 f:\sp\public\sdk\inc\pshpack4.h
+FILE 442 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 443 f:\sp\public\sdk\inc\poppack.h
+FILE 444 f:\sp\public\sdk\inc\winnetwk.h
+FILE 445 f:\sp\public\sdk\inc\imm.h
+FILE 446 f:\sp\public\sdk\inc\ddbanned.h
+FILE 447 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 448 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 449 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 450 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 451 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 452 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 453 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 454 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 455 f:\sp\public\sdk\inc\windows.h
+FILE 456 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 457 f:\sp\public\sdk\inc\pshpack1.h
+FILE 458 f:\sp\public\sdk\inc\winver.h
+FILE 459 f:\sp\vctools\crt_bld\self_x86\crt\src\time.inl
+FILE 460 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 461 f:\sp\public\sdk\inc\winnt.h
+FILE 462 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 463 f:\sp\public\sdk\inc\winreg.h
+FILE 464 f:\sp\public\sdk\inc\winbase.h
+FILE 465 f:\sp\public\sdk\inc\winerror.h
+FILE 466 f:\sp\public\sdk\inc\pshpack8.h
+FILE 467 f:\sp\public\sdk\inc\reason.h
+FILE 468 f:\sp\public\sdk\inc\wincon.h
+FILE 469 f:\sp\public\sdk\inc\pshpack2.h
+FILE 470 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 471 f:\sp\public\sdk\inc\mcx.h
+FILE 472 f:\sp\public\sdk\inc\winuser.h
+FILE 473 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 474 f:\sp\public\sdk\inc\winnls.h
+FILE 475 f:\sp\public\sdk\inc\guiddef.h
+FILE 476 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 477 f:\sp\public\sdk\inc\stralign.h
+FILE 478 f:\sp\public\sdk\inc\specstrings.h
+FILE 479 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 480 f:\sp\public\sdk\inc\basetsd.h
+FILE 481 f:\sp\public\sdk\inc\windows.h
+FILE 482 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 483 f:\sp\public\sdk\inc\tvout.h
+FILE 484 f:\sp\public\sdk\inc\winsvc.h
+FILE 485 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 486 f:\sp\public\sdk\inc\wingdi.h
+FILE 487 f:\sp\vctools\crt_bld\self_x86\crt\src\timeset.c
+FILE 488 f:\sp\public\sdk\inc\pshpack4.h
+FILE 489 f:\sp\public\sdk\inc\poppack.h
+FILE 490 f:\sp\public\sdk\inc\winnetwk.h
+FILE 491 f:\sp\public\sdk\inc\imm.h
+FILE 492 f:\sp\public\sdk\inc\ddbanned.h
+FILE 493 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 494 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 495 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 496 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 497 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 498 f:\sp\public\sdk\inc\windef.h
+FILE 499 f:\sp\public\sdk\inc\pshpack1.h
+FILE 500 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl
+FILE 501 f:\sp\vctools\crt_bld\self_x86\crt\src\time.h
+FILE 502 f:\sp\public\sdk\inc\winver.h
+FILE 503 f:\sp\public\sdk\inc\wincon.h
+FILE 504 f:\sp\vctools\crt_bld\self_x86\crt\src\time.h
+FILE 505 f:\sp\public\sdk\inc\imm.h
+FILE 506 f:\sp\public\sdk\inc\winbase.h
+FILE 507 f:\sp\public\sdk\inc\wingdi.h
+FILE 508 f:\sp\public\sdk\inc\winver.h
+FILE 509 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 510 f:\sp\public\sdk\inc\windows.h
+FILE 511 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 512 f:\sp\public\sdk\inc\pshpack2.h
+FILE 513 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 514 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 515 f:\sp\public\sdk\inc\reason.h
+FILE 516 f:\sp\vctools\crt_bld\self_x86\crt\src\strftime.c
+FILE 517 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 518 f:\sp\public\sdk\inc\specstrings.h
+FILE 519 f:\sp\public\sdk\inc\basetsd.h
+FILE 520 f:\sp\public\sdk\inc\pshpack4.h
+FILE 521 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl
+FILE 522 f:\sp\public\sdk\inc\winnetwk.h
+FILE 523 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 524 f:\sp\public\sdk\inc\stralign.h
+FILE 525 f:\sp\vctools\crt_bld\self_x86\crt\src\time.inl
+FILE 526 f:\sp\public\sdk\inc\poppack.h
+FILE 527 f:\sp\public\sdk\inc\winsvc.h
+FILE 528 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 529 f:\sp\public\sdk\inc\windef.h
+FILE 530 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 531 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 532 f:\sp\public\sdk\inc\winuser.h
+FILE 533 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 534 f:\sp\public\sdk\inc\mcx.h
+FILE 535 f:\sp\public\sdk\inc\pshpack8.h
+FILE 536 f:\sp\public\sdk\inc\guiddef.h
+FILE 537 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 538 f:\sp\public\sdk\inc\winnt.h
+FILE 539 f:\sp\public\sdk\inc\winnls.h
+FILE 540 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 541 f:\sp\public\sdk\inc\pshpack1.h
+FILE 542 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 543 f:\sp\public\sdk\inc\winerror.h
+FILE 544 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 545 f:\sp\public\sdk\inc\winreg.h
+FILE 546 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 547 f:\sp\public\sdk\inc\ddbanned.h
+FILE 548 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 549 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 550 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 551 f:\sp\public\sdk\inc\tvout.h
+FILE 552 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 553 f:\sp\public\sdk\inc\poppack.h
+FILE 554 f:\sp\public\sdk\inc\winnetwk.h
+FILE 555 f:\sp\public\sdk\inc\imm.h
+FILE 556 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 557 f:\sp\public\sdk\inc\windef.h
+FILE 558 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 559 f:\sp\public\sdk\inc\pshpack1.h
+FILE 560 f:\sp\public\sdk\inc\winver.h
+FILE 561 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 562 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 563 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 564 f:\sp\public\sdk\inc\winnt.h
+FILE 565 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 566 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 567 f:\sp\public\sdk\inc\winreg.h
+FILE 568 f:\sp\vctools\crt_bld\self_x86\crt\src\days.c
+FILE 569 f:\sp\public\sdk\inc\winbase.h
+FILE 570 f:\sp\public\sdk\inc\winerror.h
+FILE 571 f:\sp\public\sdk\inc\pshpack8.h
+FILE 572 f:\sp\public\sdk\inc\reason.h
+FILE 573 f:\sp\public\sdk\inc\wincon.h
+FILE 574 f:\sp\public\sdk\inc\ddbanned.h
+FILE 575 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 576 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 577 f:\sp\public\sdk\inc\pshpack2.h
+FILE 578 f:\sp\public\sdk\inc\mcx.h
+FILE 579 f:\sp\public\sdk\inc\winuser.h
+FILE 580 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 581 f:\sp\public\sdk\inc\winnls.h
+FILE 582 f:\sp\public\sdk\inc\guiddef.h
+FILE 583 f:\sp\public\sdk\inc\windows.h
+FILE 584 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 585 f:\sp\public\sdk\inc\specstrings.h
+FILE 586 f:\sp\public\sdk\inc\basetsd.h
+FILE 587 f:\sp\public\sdk\inc\stralign.h
+FILE 588 f:\sp\public\sdk\inc\tvout.h
+FILE 589 f:\sp\public\sdk\inc\winsvc.h
+FILE 590 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 591 f:\sp\public\sdk\inc\wingdi.h
+FILE 592 f:\sp\public\sdk\inc\pshpack4.h
+FILE 593 f:\sp\public\sdk\inc\wincon.h
+FILE 594 f:\sp\public\sdk\inc\imm.h
+FILE 595 f:\sp\public\sdk\inc\winbase.h
+FILE 596 f:\sp\public\sdk\inc\wingdi.h
+FILE 597 f:\sp\public\sdk\inc\winver.h
+FILE 598 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 599 f:\sp\public\sdk\inc\windows.h
+FILE 600 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 601 f:\sp\public\sdk\inc\pshpack2.h
+FILE 602 f:\sp\public\sdk\inc\reason.h
+FILE 603 f:\sp\vctools\crt_bld\self_x86\crt\src\strnicol.c
+FILE 604 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h
+FILE 605 f:\sp\public\sdk\inc\specstrings.h
+FILE 606 f:\sp\public\sdk\inc\basetsd.h
+FILE 607 f:\sp\public\sdk\inc\pshpack4.h
+FILE 608 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 609 f:\sp\public\sdk\inc\winnetwk.h
+FILE 610 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 611 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 612 f:\sp\public\sdk\inc\stralign.h
+FILE 613 f:\sp\public\sdk\inc\poppack.h
+FILE 614 f:\sp\public\sdk\inc\winsvc.h
+FILE 615 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 616 f:\sp\public\sdk\inc\windef.h
+FILE 617 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 618 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 619 f:\sp\public\sdk\inc\winuser.h
+FILE 620 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 621 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 622 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 623 f:\sp\public\sdk\inc\mcx.h
+FILE 624 f:\sp\public\sdk\inc\pshpack8.h
+FILE 625 f:\sp\public\sdk\inc\guiddef.h
+FILE 626 f:\sp\public\sdk\inc\winnt.h
+FILE 627 f:\sp\public\sdk\inc\winnls.h
+FILE 628 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 629 f:\sp\public\sdk\inc\pshpack1.h
+FILE 630 f:\sp\public\sdk\inc\winerror.h
+FILE 631 f:\sp\public\sdk\inc\winreg.h
+FILE 632 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 633 f:\sp\public\sdk\inc\ddbanned.h
+FILE 634 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 635 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 636 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 637 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 638 f:\sp\public\sdk\inc\tvout.h
+FILE 639 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 640 f:\sp\public\sdk\inc\mcx.h
+FILE 641 f:\sp\public\sdk\inc\pshpack8.h
+FILE 642 f:\sp\public\sdk\inc\winnt.h
+FILE 643 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 644 f:\sp\public\sdk\inc\specstrings.h
+FILE 645 f:\sp\public\sdk\inc\basetsd.h
+FILE 646 f:\sp\public\sdk\inc\winnls.h
+FILE 647 f:\sp\public\sdk\inc\pshpack1.h
+FILE 648 f:\sp\public\sdk\inc\winerror.h
+FILE 649 f:\sp\public\sdk\inc\winreg.h
+FILE 650 f:\sp\vctools\crt_bld\self_x86\crt\src\strnicmp.c
+FILE 651 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 652 f:\sp\public\sdk\inc\tvout.h
+FILE 653 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 654 f:\sp\public\sdk\inc\wincon.h
+FILE 655 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 656 f:\sp\public\sdk\inc\imm.h
+FILE 657 f:\sp\public\sdk\inc\guiddef.h
+FILE 658 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 659 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 660 f:\sp\public\sdk\inc\winbase.h
+FILE 661 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 662 f:\sp\public\sdk\inc\wingdi.h
+FILE 663 f:\sp\public\sdk\inc\windows.h
+FILE 664 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 665 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 666 f:\sp\public\sdk\inc\winver.h
+FILE 667 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 668 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 669 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 670 f:\sp\public\sdk\inc\pshpack2.h
+FILE 671 f:\sp\public\sdk\inc\reason.h
+FILE 672 f:\sp\public\sdk\inc\pshpack4.h
+FILE 673 f:\sp\public\sdk\inc\winnetwk.h
+FILE 674 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 675 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 676 f:\sp\public\sdk\inc\stralign.h
+FILE 677 f:\sp\public\sdk\inc\windef.h
+FILE 678 f:\sp\public\sdk\inc\poppack.h
+FILE 679 f:\sp\public\sdk\inc\winsvc.h
+FILE 680 f:\sp\public\sdk\inc\ddbanned.h
+FILE 681 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 682 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 683 f:\sp\public\sdk\inc\winuser.h
+FILE 684 f:\sp\public\sdk\inc\mcx.h
+FILE 685 f:\sp\public\sdk\inc\pshpack8.h
+FILE 686 f:\sp\public\sdk\inc\winnt.h
+FILE 687 f:\sp\public\sdk\inc\specstrings.h
+FILE 688 f:\sp\public\sdk\inc\basetsd.h
+FILE 689 f:\sp\public\sdk\inc\winnls.h
+FILE 690 f:\sp\public\sdk\inc\pshpack1.h
+FILE 691 f:\sp\public\sdk\inc\winerror.h
+FILE 692 f:\sp\public\sdk\inc\winreg.h
+FILE 693 f:\sp\vctools\crt_bld\self_x86\crt\src\stricmp.c
+FILE 694 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 695 f:\sp\public\sdk\inc\tvout.h
+FILE 696 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 697 f:\sp\public\sdk\inc\wincon.h
+FILE 698 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 699 f:\sp\public\sdk\inc\imm.h
+FILE 700 f:\sp\public\sdk\inc\guiddef.h
+FILE 701 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 702 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 703 f:\sp\public\sdk\inc\winbase.h
+FILE 704 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 705 f:\sp\public\sdk\inc\wingdi.h
+FILE 706 f:\sp\public\sdk\inc\windows.h
+FILE 707 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 708 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 709 f:\sp\public\sdk\inc\winver.h
+FILE 710 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 711 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 712 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 713 f:\sp\public\sdk\inc\pshpack2.h
+FILE 714 f:\sp\public\sdk\inc\reason.h
+FILE 715 f:\sp\public\sdk\inc\pshpack4.h
+FILE 716 f:\sp\public\sdk\inc\winnetwk.h
+FILE 717 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 718 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 719 f:\sp\public\sdk\inc\stralign.h
+FILE 720 f:\sp\public\sdk\inc\windef.h
+FILE 721 f:\sp\public\sdk\inc\poppack.h
+FILE 722 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 723 f:\sp\public\sdk\inc\winsvc.h
+FILE 724 f:\sp\public\sdk\inc\ddbanned.h
+FILE 725 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 726 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 727 f:\sp\public\sdk\inc\winuser.h
+FILE 728 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 729 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 730 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 731 f:\sp\vctools\crt_bld\self_x86\crt\src\wcslen.c
+FILE 732 f:\sp\public\sdk\inc\ddbanned.h
+FILE 733 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 734 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 735 f:\sp\public\sdk\inc\winnt.h
+FILE 736 f:\sp\public\sdk\inc\pshpack4.h
+FILE 737 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 738 f:\sp\public\sdk\inc\poppack.h
+FILE 739 f:\sp\vctools\crt_bld\self_x86\crt\src\tcsncpy_s.inl
+FILE 740 f:\sp\public\sdk\inc\winnetwk.h
+FILE 741 f:\sp\public\sdk\inc\imm.h
+FILE 742 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 743 f:\sp\public\sdk\inc\pshpack1.h
+FILE 744 f:\sp\public\sdk\inc\winver.h
+FILE 745 f:\sp\vctools\crt_bld\self_x86\crt\src\internal_securecrt.h
+FILE 746 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 747 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 748 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 749 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 750 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 751 f:\sp\public\sdk\inc\guiddef.h
+FILE 752 f:\sp\public\sdk\inc\windows.h
+FILE 753 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 754 f:\sp\public\sdk\inc\specstrings.h
+FILE 755 f:\sp\public\sdk\inc\basetsd.h
+FILE 756 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 757 f:\sp\public\sdk\inc\winreg.h
+FILE 758 f:\sp\vctools\crt_bld\self_x86\crt\src\strncpy_s.c
+FILE 759 f:\sp\public\sdk\inc\winbase.h
+FILE 760 f:\sp\public\sdk\inc\winerror.h
+FILE 761 f:\sp\public\sdk\inc\pshpack8.h
+FILE 762 f:\sp\public\sdk\inc\reason.h
+FILE 763 f:\sp\public\sdk\inc\wincon.h
+FILE 764 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 765 f:\sp\public\sdk\inc\ddbanned.h
+FILE 766 f:\sp\public\sdk\inc\windef.h
+FILE 767 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 768 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 769 f:\sp\public\sdk\inc\pshpack2.h
+FILE 770 f:\sp\public\sdk\inc\mcx.h
+FILE 771 f:\sp\public\sdk\inc\winuser.h
+FILE 772 f:\sp\public\sdk\inc\winnls.h
+FILE 773 f:\sp\public\sdk\inc\stralign.h
+FILE 774 f:\sp\public\sdk\inc\tvout.h
+FILE 775 f:\sp\public\sdk\inc\winsvc.h
+FILE 776 f:\sp\public\sdk\inc\wingdi.h
+FILE 777 f:\sp\public\sdk\inc\winnt.h
+FILE 778 f:\sp\public\sdk\inc\pshpack4.h
+FILE 779 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 780 f:\sp\public\sdk\inc\poppack.h
+FILE 781 f:\sp\vctools\crt_bld\self_x86\crt\src\tcscpy_s.inl
+FILE 782 f:\sp\public\sdk\inc\winnetwk.h
+FILE 783 f:\sp\public\sdk\inc\imm.h
+FILE 784 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 785 f:\sp\public\sdk\inc\pshpack1.h
+FILE 786 f:\sp\public\sdk\inc\winver.h
+FILE 787 f:\sp\vctools\crt_bld\self_x86\crt\src\internal_securecrt.h
+FILE 788 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 789 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 790 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 791 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 792 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 793 f:\sp\public\sdk\inc\guiddef.h
+FILE 794 f:\sp\public\sdk\inc\windows.h
+FILE 795 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 796 f:\sp\public\sdk\inc\specstrings.h
+FILE 797 f:\sp\public\sdk\inc\basetsd.h
+FILE 798 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 799 f:\sp\public\sdk\inc\winreg.h
+FILE 800 f:\sp\vctools\crt_bld\self_x86\crt\src\strcpy_s.c
+FILE 801 f:\sp\public\sdk\inc\winbase.h
+FILE 802 f:\sp\public\sdk\inc\winerror.h
+FILE 803 f:\sp\public\sdk\inc\pshpack8.h
+FILE 804 f:\sp\public\sdk\inc\reason.h
+FILE 805 f:\sp\public\sdk\inc\wincon.h
+FILE 806 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 807 f:\sp\public\sdk\inc\ddbanned.h
+FILE 808 f:\sp\public\sdk\inc\windef.h
+FILE 809 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 810 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 811 f:\sp\public\sdk\inc\pshpack2.h
+FILE 812 f:\sp\public\sdk\inc\mcx.h
+FILE 813 f:\sp\public\sdk\inc\winuser.h
+FILE 814 f:\sp\public\sdk\inc\winnls.h
+FILE 815 f:\sp\public\sdk\inc\stralign.h
+FILE 816 f:\sp\public\sdk\inc\tvout.h
+FILE 817 f:\sp\public\sdk\inc\winsvc.h
+FILE 818 f:\sp\public\sdk\inc\wingdi.h
+FILE 819 f:\sp\public\sdk\inc\winnt.h
+FILE 820 f:\sp\public\sdk\inc\pshpack4.h
+FILE 821 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 822 f:\sp\public\sdk\inc\poppack.h
+FILE 823 f:\sp\vctools\crt_bld\self_x86\crt\src\tcscat_s.inl
+FILE 824 f:\sp\public\sdk\inc\winnetwk.h
+FILE 825 f:\sp\public\sdk\inc\imm.h
+FILE 826 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 827 f:\sp\public\sdk\inc\pshpack1.h
+FILE 828 f:\sp\public\sdk\inc\winver.h
+FILE 829 f:\sp\vctools\crt_bld\self_x86\crt\src\internal_securecrt.h
+FILE 830 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 831 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 832 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 833 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 834 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 835 f:\sp\public\sdk\inc\guiddef.h
+FILE 836 f:\sp\public\sdk\inc\windows.h
+FILE 837 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 838 f:\sp\public\sdk\inc\specstrings.h
+FILE 839 f:\sp\public\sdk\inc\basetsd.h
+FILE 840 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 841 f:\sp\public\sdk\inc\winreg.h
+FILE 842 f:\sp\vctools\crt_bld\self_x86\crt\src\strcat_s.c
+FILE 843 f:\sp\public\sdk\inc\winbase.h
+FILE 844 f:\sp\public\sdk\inc\winerror.h
+FILE 845 f:\sp\public\sdk\inc\pshpack8.h
+FILE 846 f:\sp\public\sdk\inc\reason.h
+FILE 847 f:\sp\public\sdk\inc\wincon.h
+FILE 848 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 849 f:\sp\public\sdk\inc\ddbanned.h
+FILE 850 f:\sp\public\sdk\inc\windef.h
+FILE 851 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 852 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 853 f:\sp\public\sdk\inc\pshpack2.h
+FILE 854 f:\sp\public\sdk\inc\mcx.h
+FILE 855 f:\sp\public\sdk\inc\winuser.h
+FILE 856 f:\sp\public\sdk\inc\winnls.h
+FILE 857 f:\sp\public\sdk\inc\stralign.h
+FILE 858 f:\sp\public\sdk\inc\tvout.h
+FILE 859 f:\sp\public\sdk\inc\winsvc.h
+FILE 860 f:\sp\public\sdk\inc\wingdi.h
+FILE 861 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 862 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 863 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 864 f:\sp\vctools\crt_bld\self_x86\crt\src\strlen_s.c
+FILE 865 f:\sp\public\sdk\inc\ddbanned.h
+FILE 866 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 867 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 868 F:\SP\vctools\crt_bld\SELF_X86\crt\src\intel\strpbrk.asm
+FILE 869 F:\SP\vctools\crt_bld\SELF_X86\crt\src\Intel\STRSPN.ASM
+FILE 870 F:\SP\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc
+FILE 871 F:\SP\vctools\crt_bld\SELF_X86\crt\src\intel\_strnicm.asm
+FILE 872 F:\SP\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc
+FILE 873 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 874 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 875 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 876 f:\sp\vctools\crt_bld\self_x86\crt\src\intel\strncmp.c
+FILE 877 f:\sp\public\sdk\inc\ddbanned.h
+FILE 878 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 879 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 880 F:\SP\vctools\crt_bld\SELF_X86\crt\src\intel\strlen.asm
+FILE 881 F:\SP\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc
+FILE 882 f:\sp\public\sdk\inc\pshpack2.h
+FILE 883 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 884 f:\sp\public\sdk\inc\mcx.h
+FILE 885 f:\sp\public\sdk\inc\winuser.h
+FILE 886 f:\sp\public\sdk\inc\winnls.h
+FILE 887 f:\sp\public\sdk\inc\stralign.h
+FILE 888 f:\sp\public\sdk\inc\tvout.h
+FILE 889 f:\sp\public\sdk\inc\winsvc.h
+FILE 890 f:\sp\public\sdk\inc\wingdi.h
+FILE 891 f:\sp\public\sdk\inc\winnt.h
+FILE 892 f:\sp\public\sdk\inc\pshpack4.h
+FILE 893 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 894 f:\sp\public\sdk\inc\poppack.h
+FILE 895 f:\sp\public\sdk\inc\winnetwk.h
+FILE 896 f:\sp\public\sdk\inc\imm.h
+FILE 897 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 898 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 899 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 900 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 901 f:\sp\vctools\crt_bld\self_x86\crt\src\strdup.c
+FILE 902 f:\sp\public\sdk\inc\pshpack1.h
+FILE 903 f:\sp\public\sdk\inc\winver.h
+FILE 904 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 905 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 906 f:\sp\public\sdk\inc\guiddef.h
+FILE 907 f:\sp\public\sdk\inc\windows.h
+FILE 908 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 909 f:\sp\public\sdk\inc\specstrings.h
+FILE 910 f:\sp\public\sdk\inc\basetsd.h
+FILE 911 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 912 f:\sp\public\sdk\inc\winreg.h
+FILE 913 f:\sp\public\sdk\inc\ddbanned.h
+FILE 914 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 915 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 916 f:\sp\public\sdk\inc\winbase.h
+FILE 917 f:\sp\public\sdk\inc\winerror.h
+FILE 918 f:\sp\public\sdk\inc\pshpack8.h
+FILE 919 f:\sp\public\sdk\inc\reason.h
+FILE 920 f:\sp\public\sdk\inc\wincon.h
+FILE 921 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 922 f:\sp\public\sdk\inc\windef.h
+FILE 923 F:\SP\vctools\crt_bld\SELF_X86\crt\src\intel\strcspn.asm
+FILE 924 F:\SP\vctools\crt_bld\SELF_X86\crt\src\Intel\STRSPN.ASM
+FILE 925 F:\SP\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc
+FILE 926 F:\SP\vctools\crt_bld\SELF_X86\crt\src\intel\strcmp.asm
+FILE 927 F:\SP\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc
+FILE 928 F:\SP\vctools\crt_bld\SELF_X86\crt\src\intel\strchr.asm
+FILE 929 F:\SP\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc
+FILE 930 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\string\i386\p4_memset.c
+FILE 931 f:\sp\public\sdk\inc\ddbanned.h
+FILE 932 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h
+FILE 933 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h
+FILE 934 F:\SP\vctools\crt_bld\SELF_X86\crt\src\intel\memset.asm
+FILE 935 F:\SP\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc
+FILE 936 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 937 f:\sp\public\sdk\inc\poppack.h
+FILE 938 f:\sp\public\sdk\inc\winnetwk.h
+FILE 939 f:\sp\public\sdk\inc\imm.h
+FILE 940 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 941 f:\sp\public\sdk\inc\pshpack1.h
+FILE 942 f:\sp\public\sdk\inc\winver.h
+FILE 943 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 944 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 945 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 946 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 947 f:\sp\public\sdk\inc\guiddef.h
+FILE 948 f:\sp\public\sdk\inc\windows.h
+FILE 949 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 950 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 951 f:\sp\public\sdk\inc\specstrings.h
+FILE 952 f:\sp\public\sdk\inc\basetsd.h
+FILE 953 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 954 f:\sp\public\sdk\inc\winreg.h
+FILE 955 f:\sp\vctools\crt_bld\self_x86\crt\src\memmove_s.c
+FILE 956 f:\sp\public\sdk\inc\winbase.h
+FILE 957 f:\sp\public\sdk\inc\winerror.h
+FILE 958 f:\sp\public\sdk\inc\pshpack8.h
+FILE 959 f:\sp\public\sdk\inc\reason.h
+FILE 960 f:\sp\public\sdk\inc\wincon.h
+FILE 961 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 962 f:\sp\public\sdk\inc\windef.h
+FILE 963 f:\sp\public\sdk\inc\ddbanned.h
+FILE 964 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 965 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 966 f:\sp\public\sdk\inc\pshpack2.h
+FILE 967 f:\sp\public\sdk\inc\mcx.h
+FILE 968 f:\sp\public\sdk\inc\winuser.h
+FILE 969 f:\sp\public\sdk\inc\winnls.h
+FILE 970 f:\sp\public\sdk\inc\stralign.h
+FILE 971 f:\sp\public\sdk\inc\tvout.h
+FILE 972 f:\sp\public\sdk\inc\winsvc.h
+FILE 973 f:\sp\public\sdk\inc\wingdi.h
+FILE 974 f:\sp\public\sdk\inc\winnt.h
+FILE 975 f:\sp\public\sdk\inc\pshpack4.h
+FILE 976 F:\SP\vctools\crt_bld\SELF_X86\crt\src\intel\memmove.asm
+FILE 977 F:\SP\vctools\crt_bld\SELF_X86\crt\src\Intel\MEMCPY.ASM
+FILE 978 F:\SP\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc
+FILE 979 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\string\i386\memcmp.c
+FILE 980 f:\sp\public\sdk\inc\ddbanned.h
+FILE 981 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h
+FILE 982 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h
+FILE 983 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 984 f:\sp\public\sdk\inc\poppack.h
+FILE 985 f:\sp\public\sdk\inc\winnetwk.h
+FILE 986 f:\sp\public\sdk\inc\imm.h
+FILE 987 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 988 f:\sp\public\sdk\inc\pshpack1.h
+FILE 989 f:\sp\public\sdk\inc\winver.h
+FILE 990 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 991 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 992 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 993 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 994 f:\sp\public\sdk\inc\guiddef.h
+FILE 995 f:\sp\public\sdk\inc\windows.h
+FILE 996 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 997 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 998 f:\sp\public\sdk\inc\specstrings.h
+FILE 999 f:\sp\public\sdk\inc\basetsd.h
+FILE 1000 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 1001 f:\sp\public\sdk\inc\winreg.h
+FILE 1002 f:\sp\vctools\crt_bld\self_x86\crt\src\memcpy_s.c
+FILE 1003 f:\sp\public\sdk\inc\winbase.h
+FILE 1004 f:\sp\public\sdk\inc\winerror.h
+FILE 1005 f:\sp\public\sdk\inc\pshpack8.h
+FILE 1006 f:\sp\public\sdk\inc\reason.h
+FILE 1007 f:\sp\public\sdk\inc\wincon.h
+FILE 1008 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 1009 f:\sp\public\sdk\inc\windef.h
+FILE 1010 f:\sp\public\sdk\inc\ddbanned.h
+FILE 1011 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 1012 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 1013 f:\sp\public\sdk\inc\pshpack2.h
+FILE 1014 f:\sp\public\sdk\inc\mcx.h
+FILE 1015 f:\sp\public\sdk\inc\winuser.h
+FILE 1016 f:\sp\public\sdk\inc\winnls.h
+FILE 1017 f:\sp\public\sdk\inc\stralign.h
+FILE 1018 f:\sp\public\sdk\inc\tvout.h
+FILE 1019 f:\sp\public\sdk\inc\winsvc.h
+FILE 1020 f:\sp\public\sdk\inc\wingdi.h
+FILE 1021 f:\sp\public\sdk\inc\winnt.h
+FILE 1022 f:\sp\public\sdk\inc\pshpack4.h
+FILE 1023 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\string\i386\p4_memcpy.c
+FILE 1024 f:\sp\public\sdk\inc\ddbanned.h
+FILE 1025 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h
+FILE 1026 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h
+FILE 1027 F:\SP\vctools\crt_bld\SELF_X86\crt\src\intel\memcpy.asm
+FILE 1028 F:\SP\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc
+FILE 1029 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 1030 f:\sp\public\sdk\inc\wincon.h
+FILE 1031 f:\sp\public\sdk\inc\imm.h
+FILE 1032 f:\sp\public\sdk\inc\winbase.h
+FILE 1033 f:\sp\public\sdk\inc\wingdi.h
+FILE 1034 f:\sp\public\sdk\inc\winver.h
+FILE 1035 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 1036 f:\sp\public\sdk\inc\windows.h
+FILE 1037 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 1038 f:\sp\public\sdk\inc\pshpack2.h
+FILE 1039 f:\sp\public\sdk\inc\reason.h
+FILE 1040 f:\sp\vctools\crt_bld\self_x86\crt\src\woutputs.c
+FILE 1041 f:\sp\vctools\crt_bld\self_x86\crt\src\fltintrn.h
+FILE 1042 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 1043 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 1044 f:\sp\public\sdk\inc\specstrings.h
+FILE 1045 f:\sp\public\sdk\inc\basetsd.h
+FILE 1046 f:\sp\public\sdk\inc\pshpack4.h
+FILE 1047 f:\sp\public\sdk\inc\winnetwk.h
+FILE 1048 f:\sp\public\sdk\inc\stralign.h
+FILE 1049 f:\sp\public\sdk\inc\poppack.h
+FILE 1050 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 1051 f:\sp\public\sdk\inc\winsvc.h
+FILE 1052 f:\sp\public\sdk\inc\windef.h
+FILE 1053 f:\sp\vctools\crt_bld\self_x86\crt\src\output.c
+FILE 1054 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 1055 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 1056 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 1057 f:\sp\public\sdk\inc\winuser.h
+FILE 1058 f:\sp\public\sdk\inc\mcx.h
+FILE 1059 f:\sp\public\sdk\inc\pshpack8.h
+FILE 1060 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 1061 f:\sp\public\sdk\inc\guiddef.h
+FILE 1062 f:\sp\public\sdk\inc\winnt.h
+FILE 1063 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 1064 f:\sp\public\sdk\inc\winnls.h
+FILE 1065 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 1066 f:\sp\public\sdk\inc\pshpack1.h
+FILE 1067 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl
+FILE 1068 f:\sp\public\sdk\inc\winerror.h
+FILE 1069 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 1070 f:\sp\vctools\crt_bld\self_x86\crt\src\cvt.h
+FILE 1071 f:\sp\vctools\crt_bld\self_x86\crt\src\conio.h
+FILE 1072 f:\sp\public\sdk\inc\winreg.h
+FILE 1073 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 1074 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 1075 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 1076 f:\sp\public\sdk\inc\ddbanned.h
+FILE 1077 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 1078 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 1079 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 1080 f:\sp\public\sdk\inc\tvout.h
+FILE 1081 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 1082 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h
+FILE 1083 f:\sp\vctools\crt_bld\self_x86\crt\src\wchar.h
+FILE 1084 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 1085 f:\sp\public\sdk\inc\wincon.h
+FILE 1086 f:\sp\public\sdk\inc\imm.h
+FILE 1087 f:\sp\public\sdk\inc\winbase.h
+FILE 1088 f:\sp\public\sdk\inc\wingdi.h
+FILE 1089 f:\sp\public\sdk\inc\winver.h
+FILE 1090 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 1091 f:\sp\public\sdk\inc\windows.h
+FILE 1092 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 1093 f:\sp\public\sdk\inc\pshpack2.h
+FILE 1094 f:\sp\public\sdk\inc\reason.h
+FILE 1095 f:\sp\vctools\crt_bld\self_x86\crt\src\woutputp.c
+FILE 1096 f:\sp\vctools\crt_bld\self_x86\crt\src\fltintrn.h
+FILE 1097 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 1098 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 1099 f:\sp\public\sdk\inc\specstrings.h
+FILE 1100 f:\sp\public\sdk\inc\basetsd.h
+FILE 1101 f:\sp\public\sdk\inc\pshpack4.h
+FILE 1102 f:\sp\public\sdk\inc\winnetwk.h
+FILE 1103 f:\sp\public\sdk\inc\stralign.h
+FILE 1104 f:\sp\public\sdk\inc\poppack.h
+FILE 1105 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 1106 f:\sp\public\sdk\inc\winsvc.h
+FILE 1107 f:\sp\public\sdk\inc\windef.h
+FILE 1108 f:\sp\vctools\crt_bld\self_x86\crt\src\output.c
+FILE 1109 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 1110 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 1111 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 1112 f:\sp\public\sdk\inc\winuser.h
+FILE 1113 f:\sp\public\sdk\inc\mcx.h
+FILE 1114 f:\sp\public\sdk\inc\pshpack8.h
+FILE 1115 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 1116 f:\sp\public\sdk\inc\guiddef.h
+FILE 1117 f:\sp\public\sdk\inc\winnt.h
+FILE 1118 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 1119 f:\sp\public\sdk\inc\winnls.h
+FILE 1120 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 1121 f:\sp\public\sdk\inc\pshpack1.h
+FILE 1122 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl
+FILE 1123 f:\sp\public\sdk\inc\winerror.h
+FILE 1124 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 1125 f:\sp\vctools\crt_bld\self_x86\crt\src\cvt.h
+FILE 1126 f:\sp\vctools\crt_bld\self_x86\crt\src\conio.h
+FILE 1127 f:\sp\public\sdk\inc\winreg.h
+FILE 1128 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 1129 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 1130 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 1131 f:\sp\public\sdk\inc\ddbanned.h
+FILE 1132 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 1133 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 1134 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 1135 f:\sp\public\sdk\inc\tvout.h
+FILE 1136 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 1137 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h
+FILE 1138 f:\sp\vctools\crt_bld\self_x86\crt\src\wchar.h
+FILE 1139 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 1140 f:\sp\public\sdk\inc\wincon.h
+FILE 1141 f:\sp\public\sdk\inc\imm.h
+FILE 1142 f:\sp\public\sdk\inc\winbase.h
+FILE 1143 f:\sp\public\sdk\inc\wingdi.h
+FILE 1144 f:\sp\public\sdk\inc\winver.h
+FILE 1145 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 1146 f:\sp\public\sdk\inc\windows.h
+FILE 1147 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 1148 f:\sp\public\sdk\inc\pshpack2.h
+FILE 1149 f:\sp\public\sdk\inc\reason.h
+FILE 1150 f:\sp\vctools\crt_bld\self_x86\crt\src\woutput.c
+FILE 1151 f:\sp\vctools\crt_bld\self_x86\crt\src\fltintrn.h
+FILE 1152 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 1153 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 1154 f:\sp\public\sdk\inc\specstrings.h
+FILE 1155 f:\sp\public\sdk\inc\basetsd.h
+FILE 1156 f:\sp\public\sdk\inc\pshpack4.h
+FILE 1157 f:\sp\public\sdk\inc\winnetwk.h
+FILE 1158 f:\sp\public\sdk\inc\stralign.h
+FILE 1159 f:\sp\public\sdk\inc\poppack.h
+FILE 1160 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 1161 f:\sp\public\sdk\inc\winsvc.h
+FILE 1162 f:\sp\public\sdk\inc\windef.h
+FILE 1163 f:\sp\vctools\crt_bld\self_x86\crt\src\output.c
+FILE 1164 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 1165 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 1166 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 1167 f:\sp\public\sdk\inc\winuser.h
+FILE 1168 f:\sp\public\sdk\inc\mcx.h
+FILE 1169 f:\sp\public\sdk\inc\pshpack8.h
+FILE 1170 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 1171 f:\sp\public\sdk\inc\guiddef.h
+FILE 1172 f:\sp\public\sdk\inc\winnt.h
+FILE 1173 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 1174 f:\sp\public\sdk\inc\winnls.h
+FILE 1175 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 1176 f:\sp\public\sdk\inc\pshpack1.h
+FILE 1177 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl
+FILE 1178 f:\sp\public\sdk\inc\winerror.h
+FILE 1179 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 1180 f:\sp\vctools\crt_bld\self_x86\crt\src\cvt.h
+FILE 1181 f:\sp\vctools\crt_bld\self_x86\crt\src\conio.h
+FILE 1182 f:\sp\public\sdk\inc\winreg.h
+FILE 1183 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 1184 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 1185 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 1186 f:\sp\public\sdk\inc\ddbanned.h
+FILE 1187 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 1188 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 1189 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 1190 f:\sp\public\sdk\inc\tvout.h
+FILE 1191 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 1192 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h
+FILE 1193 f:\sp\vctools\crt_bld\self_x86\crt\src\wchar.h
+FILE 1194 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 1195 f:\sp\public\sdk\inc\wincon.h
+FILE 1196 f:\sp\public\sdk\inc\imm.h
+FILE 1197 f:\sp\public\sdk\inc\winbase.h
+FILE 1198 f:\sp\public\sdk\inc\wingdi.h
+FILE 1199 f:\sp\public\sdk\inc\winver.h
+FILE 1200 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 1201 f:\sp\public\sdk\inc\windows.h
+FILE 1202 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 1203 f:\sp\public\sdk\inc\pshpack2.h
+FILE 1204 f:\sp\public\sdk\inc\reason.h
+FILE 1205 f:\sp\vctools\crt_bld\self_x86\crt\src\fltintrn.h
+FILE 1206 f:\sp\vctools\crt_bld\self_x86\crt\src\outputs.c
+FILE 1207 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 1208 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 1209 f:\sp\public\sdk\inc\specstrings.h
+FILE 1210 f:\sp\public\sdk\inc\basetsd.h
+FILE 1211 f:\sp\public\sdk\inc\pshpack4.h
+FILE 1212 f:\sp\public\sdk\inc\winnetwk.h
+FILE 1213 f:\sp\public\sdk\inc\stralign.h
+FILE 1214 f:\sp\public\sdk\inc\poppack.h
+FILE 1215 f:\sp\public\sdk\inc\winsvc.h
+FILE 1216 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 1217 f:\sp\public\sdk\inc\windef.h
+FILE 1218 f:\sp\vctools\crt_bld\self_x86\crt\src\output.c
+FILE 1219 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 1220 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 1221 f:\sp\public\sdk\inc\winuser.h
+FILE 1222 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 1223 f:\sp\public\sdk\inc\mcx.h
+FILE 1224 f:\sp\public\sdk\inc\pshpack8.h
+FILE 1225 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 1226 f:\sp\public\sdk\inc\guiddef.h
+FILE 1227 f:\sp\public\sdk\inc\winnt.h
+FILE 1228 f:\sp\public\sdk\inc\winnls.h
+FILE 1229 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 1230 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 1231 f:\sp\public\sdk\inc\pshpack1.h
+FILE 1232 f:\sp\public\sdk\inc\winerror.h
+FILE 1233 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 1234 f:\sp\vctools\crt_bld\self_x86\crt\src\cvt.h
+FILE 1235 f:\sp\vctools\crt_bld\self_x86\crt\src\conio.h
+FILE 1236 f:\sp\public\sdk\inc\winreg.h
+FILE 1237 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 1238 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 1239 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 1240 f:\sp\public\sdk\inc\ddbanned.h
+FILE 1241 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 1242 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 1243 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 1244 f:\sp\public\sdk\inc\tvout.h
+FILE 1245 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 1246 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h
+FILE 1247 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 1248 f:\sp\public\sdk\inc\wincon.h
+FILE 1249 f:\sp\public\sdk\inc\imm.h
+FILE 1250 f:\sp\public\sdk\inc\winbase.h
+FILE 1251 f:\sp\public\sdk\inc\wingdi.h
+FILE 1252 f:\sp\public\sdk\inc\winver.h
+FILE 1253 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 1254 f:\sp\public\sdk\inc\windows.h
+FILE 1255 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 1256 f:\sp\public\sdk\inc\pshpack2.h
+FILE 1257 f:\sp\public\sdk\inc\reason.h
+FILE 1258 f:\sp\vctools\crt_bld\self_x86\crt\src\fltintrn.h
+FILE 1259 f:\sp\vctools\crt_bld\self_x86\crt\src\outputp.c
+FILE 1260 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 1261 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 1262 f:\sp\public\sdk\inc\specstrings.h
+FILE 1263 f:\sp\public\sdk\inc\basetsd.h
+FILE 1264 f:\sp\public\sdk\inc\pshpack4.h
+FILE 1265 f:\sp\public\sdk\inc\winnetwk.h
+FILE 1266 f:\sp\public\sdk\inc\stralign.h
+FILE 1267 f:\sp\public\sdk\inc\poppack.h
+FILE 1268 f:\sp\public\sdk\inc\winsvc.h
+FILE 1269 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 1270 f:\sp\public\sdk\inc\windef.h
+FILE 1271 f:\sp\vctools\crt_bld\self_x86\crt\src\output.c
+FILE 1272 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 1273 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 1274 f:\sp\public\sdk\inc\winuser.h
+FILE 1275 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 1276 f:\sp\public\sdk\inc\mcx.h
+FILE 1277 f:\sp\public\sdk\inc\pshpack8.h
+FILE 1278 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 1279 f:\sp\public\sdk\inc\guiddef.h
+FILE 1280 f:\sp\public\sdk\inc\winnt.h
+FILE 1281 f:\sp\public\sdk\inc\winnls.h
+FILE 1282 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 1283 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 1284 f:\sp\public\sdk\inc\pshpack1.h
+FILE 1285 f:\sp\public\sdk\inc\winerror.h
+FILE 1286 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 1287 f:\sp\vctools\crt_bld\self_x86\crt\src\cvt.h
+FILE 1288 f:\sp\vctools\crt_bld\self_x86\crt\src\conio.h
+FILE 1289 f:\sp\public\sdk\inc\winreg.h
+FILE 1290 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 1291 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 1292 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 1293 f:\sp\public\sdk\inc\ddbanned.h
+FILE 1294 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 1295 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 1296 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 1297 f:\sp\public\sdk\inc\tvout.h
+FILE 1298 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 1299 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h
+FILE 1300 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 1301 f:\sp\public\sdk\inc\wincon.h
+FILE 1302 f:\sp\public\sdk\inc\imm.h
+FILE 1303 f:\sp\public\sdk\inc\winbase.h
+FILE 1304 f:\sp\public\sdk\inc\wingdi.h
+FILE 1305 f:\sp\public\sdk\inc\winver.h
+FILE 1306 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 1307 f:\sp\public\sdk\inc\windows.h
+FILE 1308 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 1309 f:\sp\public\sdk\inc\pshpack2.h
+FILE 1310 f:\sp\public\sdk\inc\reason.h
+FILE 1311 f:\sp\vctools\crt_bld\self_x86\crt\src\fltintrn.h
+FILE 1312 f:\sp\vctools\crt_bld\self_x86\crt\src\output.c
+FILE 1313 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 1314 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 1315 f:\sp\public\sdk\inc\specstrings.h
+FILE 1316 f:\sp\public\sdk\inc\basetsd.h
+FILE 1317 f:\sp\public\sdk\inc\pshpack4.h
+FILE 1318 f:\sp\public\sdk\inc\winnetwk.h
+FILE 1319 f:\sp\public\sdk\inc\stralign.h
+FILE 1320 f:\sp\public\sdk\inc\poppack.h
+FILE 1321 f:\sp\public\sdk\inc\winsvc.h
+FILE 1322 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 1323 f:\sp\public\sdk\inc\windef.h
+FILE 1324 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 1325 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 1326 f:\sp\public\sdk\inc\winuser.h
+FILE 1327 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 1328 f:\sp\public\sdk\inc\mcx.h
+FILE 1329 f:\sp\public\sdk\inc\pshpack8.h
+FILE 1330 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 1331 f:\sp\public\sdk\inc\guiddef.h
+FILE 1332 f:\sp\public\sdk\inc\winnt.h
+FILE 1333 f:\sp\public\sdk\inc\winnls.h
+FILE 1334 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 1335 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 1336 f:\sp\public\sdk\inc\pshpack1.h
+FILE 1337 f:\sp\public\sdk\inc\winerror.h
+FILE 1338 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 1339 f:\sp\vctools\crt_bld\self_x86\crt\src\cvt.h
+FILE 1340 f:\sp\vctools\crt_bld\self_x86\crt\src\conio.h
+FILE 1341 f:\sp\public\sdk\inc\winreg.h
+FILE 1342 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 1343 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 1344 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 1345 f:\sp\public\sdk\inc\ddbanned.h
+FILE 1346 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 1347 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 1348 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 1349 f:\sp\public\sdk\inc\tvout.h
+FILE 1350 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 1351 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h
+FILE 1352 f:\sp\public\sdk\inc\stralign.h
+FILE 1353 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 1354 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 1355 f:\sp\public\sdk\inc\tvout.h
+FILE 1356 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 1357 f:\sp\public\sdk\inc\windows.h
+FILE 1358 f:\sp\public\sdk\inc\winsvc.h
+FILE 1359 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 1360 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 1361 f:\sp\public\sdk\inc\wingdi.h
+FILE 1362 f:\sp\public\sdk\inc\pshpack4.h
+FILE 1363 f:\sp\public\sdk\inc\poppack.h
+FILE 1364 f:\sp\public\sdk\inc\winnetwk.h
+FILE 1365 f:\sp\public\sdk\inc\imm.h
+FILE 1366 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 1367 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 1368 f:\sp\vctools\crt_bld\self_x86\crt\src\wchar.h
+FILE 1369 f:\sp\public\sdk\inc\windef.h
+FILE 1370 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 1371 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 1372 f:\sp\public\sdk\inc\pshpack1.h
+FILE 1373 f:\sp\public\sdk\inc\winver.h
+FILE 1374 f:\sp\vctools\crt_bld\self_x86\crt\src\vswprnc.c
+FILE 1375 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 1376 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 1377 f:\sp\public\sdk\inc\winnt.h
+FILE 1378 f:\sp\public\sdk\inc\winreg.h
+FILE 1379 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 1380 f:\sp\vctools\crt_bld\self_x86\crt\src\vswprint.c
+FILE 1381 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 1382 f:\sp\public\sdk\inc\winbase.h
+FILE 1383 f:\sp\public\sdk\inc\winerror.h
+FILE 1384 f:\sp\public\sdk\inc\ddbanned.h
+FILE 1385 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 1386 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 1387 f:\sp\public\sdk\inc\pshpack8.h
+FILE 1388 f:\sp\public\sdk\inc\guiddef.h
+FILE 1389 f:\sp\public\sdk\inc\specstrings.h
+FILE 1390 f:\sp\public\sdk\inc\basetsd.h
+FILE 1391 f:\sp\public\sdk\inc\reason.h
+FILE 1392 f:\sp\public\sdk\inc\wincon.h
+FILE 1393 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl
+FILE 1394 f:\sp\public\sdk\inc\pshpack2.h
+FILE 1395 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 1396 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 1397 f:\sp\public\sdk\inc\mcx.h
+FILE 1398 f:\sp\public\sdk\inc\winuser.h
+FILE 1399 f:\sp\public\sdk\inc\winnls.h
+FILE 1400 f:\sp\public\sdk\inc\pshpack1.h
+FILE 1401 f:\sp\public\sdk\inc\winver.h
+FILE 1402 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 1403 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 1404 f:\sp\public\sdk\inc\winnt.h
+FILE 1405 f:\sp\public\sdk\inc\winreg.h
+FILE 1406 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 1407 f:\sp\public\sdk\inc\winbase.h
+FILE 1408 f:\sp\public\sdk\inc\winerror.h
+FILE 1409 f:\sp\public\sdk\inc\pshpack8.h
+FILE 1410 f:\sp\public\sdk\inc\guiddef.h
+FILE 1411 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 1412 f:\sp\public\sdk\inc\specstrings.h
+FILE 1413 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 1414 f:\sp\public\sdk\inc\basetsd.h
+FILE 1415 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 1416 f:\sp\public\sdk\inc\reason.h
+FILE 1417 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl
+FILE 1418 f:\sp\public\sdk\inc\wincon.h
+FILE 1419 f:\sp\public\sdk\inc\pshpack2.h
+FILE 1420 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 1421 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 1422 f:\sp\public\sdk\inc\mcx.h
+FILE 1423 f:\sp\public\sdk\inc\winuser.h
+FILE 1424 f:\sp\public\sdk\inc\winnls.h
+FILE 1425 f:\sp\vctools\crt_bld\self_x86\crt\src\vswprint.c
+FILE 1426 f:\sp\public\sdk\inc\stralign.h
+FILE 1427 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 1428 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 1429 f:\sp\public\sdk\inc\tvout.h
+FILE 1430 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 1431 f:\sp\public\sdk\inc\windows.h
+FILE 1432 f:\sp\public\sdk\inc\winsvc.h
+FILE 1433 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 1434 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 1435 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 1436 f:\sp\public\sdk\inc\wingdi.h
+FILE 1437 f:\sp\public\sdk\inc\pshpack4.h
+FILE 1438 f:\sp\public\sdk\inc\poppack.h
+FILE 1439 f:\sp\public\sdk\inc\ddbanned.h
+FILE 1440 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 1441 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 1442 f:\sp\vctools\crt_bld\self_x86\crt\src\wchar.h
+FILE 1443 f:\sp\public\sdk\inc\winnetwk.h
+FILE 1444 f:\sp\public\sdk\inc\imm.h
+FILE 1445 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 1446 f:\sp\public\sdk\inc\windef.h
+FILE 1447 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 1448 f:\sp\public\sdk\inc\windef.h
+FILE 1449 f:\sp\public\sdk\inc\pshpack1.h
+FILE 1450 f:\sp\public\sdk\inc\winver.h
+FILE 1451 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 1452 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 1453 f:\sp\public\sdk\inc\winnt.h
+FILE 1454 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 1455 f:\sp\public\sdk\inc\winreg.h
+FILE 1456 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 1457 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 1458 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 1459 f:\sp\public\sdk\inc\winbase.h
+FILE 1460 f:\sp\public\sdk\inc\winerror.h
+FILE 1461 f:\sp\public\sdk\inc\pshpack8.h
+FILE 1462 f:\sp\vctools\crt_bld\self_x86\crt\src\vfprintf.c
+FILE 1463 f:\sp\public\sdk\inc\reason.h
+FILE 1464 f:\sp\public\sdk\inc\wincon.h
+FILE 1465 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 1466 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 1467 f:\sp\public\sdk\inc\pshpack2.h
+FILE 1468 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 1469 f:\sp\vctools\crt_bld\self_x86\crt\src\file2.h
+FILE 1470 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 1471 f:\sp\public\sdk\inc\mcx.h
+FILE 1472 f:\sp\public\sdk\inc\winuser.h
+FILE 1473 f:\sp\public\sdk\inc\winnls.h
+FILE 1474 f:\sp\public\sdk\inc\guiddef.h
+FILE 1475 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 1476 f:\sp\public\sdk\inc\windows.h
+FILE 1477 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 1478 f:\sp\public\sdk\inc\specstrings.h
+FILE 1479 f:\sp\public\sdk\inc\basetsd.h
+FILE 1480 f:\sp\public\sdk\inc\stralign.h
+FILE 1481 f:\sp\public\sdk\inc\tvout.h
+FILE 1482 f:\sp\public\sdk\inc\ddbanned.h
+FILE 1483 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 1484 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 1485 f:\sp\public\sdk\inc\winsvc.h
+FILE 1486 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 1487 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 1488 f:\sp\public\sdk\inc\wingdi.h
+FILE 1489 f:\sp\public\sdk\inc\pshpack4.h
+FILE 1490 f:\sp\public\sdk\inc\poppack.h
+FILE 1491 f:\sp\public\sdk\inc\winnetwk.h
+FILE 1492 f:\sp\public\sdk\inc\imm.h
+FILE 1493 f:\sp\public\sdk\inc\windef.h
+FILE 1494 f:\sp\public\sdk\inc\pshpack1.h
+FILE 1495 f:\sp\public\sdk\inc\winver.h
+FILE 1496 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 1497 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 1498 f:\sp\public\sdk\inc\winnt.h
+FILE 1499 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 1500 f:\sp\public\sdk\inc\winreg.h
+FILE 1501 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 1502 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 1503 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 1504 f:\sp\public\sdk\inc\winbase.h
+FILE 1505 f:\sp\public\sdk\inc\winerror.h
+FILE 1506 f:\sp\public\sdk\inc\pshpack8.h
+FILE 1507 f:\sp\vctools\crt_bld\self_x86\crt\src\vprintf.c
+FILE 1508 f:\sp\public\sdk\inc\reason.h
+FILE 1509 f:\sp\public\sdk\inc\wincon.h
+FILE 1510 f:\sp\vctools\crt_bld\self_x86\crt\src\file2.h
+FILE 1511 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 1512 f:\sp\public\sdk\inc\pshpack2.h
+FILE 1513 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 1514 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 1515 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 1516 f:\sp\public\sdk\inc\mcx.h
+FILE 1517 f:\sp\public\sdk\inc\winuser.h
+FILE 1518 f:\sp\public\sdk\inc\winnls.h
+FILE 1519 f:\sp\public\sdk\inc\guiddef.h
+FILE 1520 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 1521 f:\sp\public\sdk\inc\windows.h
+FILE 1522 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 1523 f:\sp\public\sdk\inc\specstrings.h
+FILE 1524 f:\sp\public\sdk\inc\basetsd.h
+FILE 1525 f:\sp\public\sdk\inc\stralign.h
+FILE 1526 f:\sp\public\sdk\inc\tvout.h
+FILE 1527 f:\sp\public\sdk\inc\ddbanned.h
+FILE 1528 f:\sp\public\sdk\inc\winsvc.h
+FILE 1529 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 1530 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 1531 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 1532 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 1533 f:\sp\public\sdk\inc\wingdi.h
+FILE 1534 f:\sp\public\sdk\inc\pshpack4.h
+FILE 1535 f:\sp\public\sdk\inc\poppack.h
+FILE 1536 f:\sp\public\sdk\inc\winnetwk.h
+FILE 1537 f:\sp\public\sdk\inc\imm.h
+FILE 1538 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 1539 f:\sp\public\sdk\inc\pshpack1.h
+FILE 1540 f:\sp\public\sdk\inc\winver.h
+FILE 1541 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 1542 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 1543 f:\sp\public\sdk\inc\winnt.h
+FILE 1544 f:\sp\public\sdk\inc\winreg.h
+FILE 1545 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 1546 f:\sp\public\sdk\inc\winbase.h
+FILE 1547 f:\sp\public\sdk\inc\winerror.h
+FILE 1548 f:\sp\public\sdk\inc\pshpack8.h
+FILE 1549 f:\sp\public\sdk\inc\guiddef.h
+FILE 1550 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 1551 f:\sp\public\sdk\inc\specstrings.h
+FILE 1552 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 1553 f:\sp\public\sdk\inc\basetsd.h
+FILE 1554 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 1555 f:\sp\public\sdk\inc\reason.h
+FILE 1556 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl
+FILE 1557 f:\sp\public\sdk\inc\wincon.h
+FILE 1558 f:\sp\public\sdk\inc\pshpack2.h
+FILE 1559 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 1560 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 1561 f:\sp\public\sdk\inc\mcx.h
+FILE 1562 f:\sp\public\sdk\inc\winuser.h
+FILE 1563 f:\sp\public\sdk\inc\winnls.h
+FILE 1564 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.c
+FILE 1565 f:\sp\public\sdk\inc\stralign.h
+FILE 1566 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 1567 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 1568 f:\sp\public\sdk\inc\tvout.h
+FILE 1569 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 1570 f:\sp\public\sdk\inc\windows.h
+FILE 1571 f:\sp\public\sdk\inc\winsvc.h
+FILE 1572 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 1573 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 1574 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 1575 f:\sp\public\sdk\inc\wingdi.h
+FILE 1576 f:\sp\public\sdk\inc\pshpack4.h
+FILE 1577 f:\sp\public\sdk\inc\poppack.h
+FILE 1578 f:\sp\public\sdk\inc\ddbanned.h
+FILE 1579 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 1580 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 1581 f:\sp\vctools\crt_bld\self_x86\crt\src\wchar.h
+FILE 1582 f:\sp\public\sdk\inc\winnetwk.h
+FILE 1583 f:\sp\public\sdk\inc\imm.h
+FILE 1584 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 1585 f:\sp\public\sdk\inc\windef.h
+FILE 1586 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 1587 f:\sp\public\sdk\inc\windef.h
+FILE 1588 f:\sp\public\sdk\inc\pshpack1.h
+FILE 1589 f:\sp\public\sdk\inc\winver.h
+FILE 1590 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 1591 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 1592 f:\sp\public\sdk\inc\winnt.h
+FILE 1593 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 1594 f:\sp\public\sdk\inc\winreg.h
+FILE 1595 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 1596 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 1597 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 1598 f:\sp\public\sdk\inc\winbase.h
+FILE 1599 f:\sp\public\sdk\inc\winerror.h
+FILE 1600 f:\sp\public\sdk\inc\pshpack8.h
+FILE 1601 f:\sp\vctools\crt_bld\self_x86\crt\src\printf.c
+FILE 1602 f:\sp\public\sdk\inc\reason.h
+FILE 1603 f:\sp\public\sdk\inc\wincon.h
+FILE 1604 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 1605 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 1606 f:\sp\public\sdk\inc\pshpack2.h
+FILE 1607 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 1608 f:\sp\vctools\crt_bld\self_x86\crt\src\file2.h
+FILE 1609 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 1610 f:\sp\public\sdk\inc\mcx.h
+FILE 1611 f:\sp\public\sdk\inc\winuser.h
+FILE 1612 f:\sp\public\sdk\inc\winnls.h
+FILE 1613 f:\sp\public\sdk\inc\guiddef.h
+FILE 1614 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 1615 f:\sp\public\sdk\inc\windows.h
+FILE 1616 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 1617 f:\sp\public\sdk\inc\specstrings.h
+FILE 1618 f:\sp\public\sdk\inc\basetsd.h
+FILE 1619 f:\sp\public\sdk\inc\stralign.h
+FILE 1620 f:\sp\public\sdk\inc\tvout.h
+FILE 1621 f:\sp\public\sdk\inc\ddbanned.h
+FILE 1622 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 1623 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 1624 f:\sp\public\sdk\inc\winsvc.h
+FILE 1625 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 1626 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 1627 f:\sp\vctools\crt_bld\self_x86\crt\src\process.h
+FILE 1628 f:\sp\public\sdk\inc\wingdi.h
+FILE 1629 f:\sp\public\sdk\inc\pshpack4.h
+FILE 1630 f:\sp\public\sdk\inc\poppack.h
+FILE 1631 f:\sp\public\sdk\inc\winnetwk.h
+FILE 1632 f:\sp\public\sdk\inc\imm.h
+FILE 1633 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 1634 f:\sp\public\sdk\inc\windef.h
+FILE 1635 f:\sp\public\sdk\inc\pshpack1.h
+FILE 1636 f:\sp\public\sdk\inc\winver.h
+FILE 1637 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 1638 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 1639 f:\sp\public\sdk\inc\winnt.h
+FILE 1640 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 1641 f:\sp\public\sdk\inc\winreg.h
+FILE 1642 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 1643 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 1644 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 1645 f:\sp\public\sdk\inc\winbase.h
+FILE 1646 f:\sp\public\sdk\inc\winerror.h
+FILE 1647 f:\sp\public\sdk\inc\pshpack8.h
+FILE 1648 f:\sp\vctools\crt_bld\self_x86\crt\src\fprintf.c
+FILE 1649 f:\sp\public\sdk\inc\reason.h
+FILE 1650 f:\sp\public\sdk\inc\wincon.h
+FILE 1651 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 1652 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 1653 f:\sp\public\sdk\inc\pshpack2.h
+FILE 1654 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 1655 f:\sp\vctools\crt_bld\self_x86\crt\src\file2.h
+FILE 1656 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 1657 f:\sp\public\sdk\inc\mcx.h
+FILE 1658 f:\sp\public\sdk\inc\winuser.h
+FILE 1659 f:\sp\public\sdk\inc\winnls.h
+FILE 1660 f:\sp\public\sdk\inc\guiddef.h
+FILE 1661 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 1662 f:\sp\public\sdk\inc\windows.h
+FILE 1663 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 1664 f:\sp\public\sdk\inc\specstrings.h
+FILE 1665 f:\sp\public\sdk\inc\basetsd.h
+FILE 1666 f:\sp\public\sdk\inc\stralign.h
+FILE 1667 f:\sp\public\sdk\inc\tvout.h
+FILE 1668 f:\sp\public\sdk\inc\ddbanned.h
+FILE 1669 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 1670 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 1671 f:\sp\public\sdk\inc\winsvc.h
+FILE 1672 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 1673 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 1674 f:\sp\public\sdk\inc\wingdi.h
+FILE 1675 f:\sp\public\sdk\inc\pshpack4.h
+FILE 1676 f:\sp\public\sdk\inc\poppack.h
+FILE 1677 f:\sp\public\sdk\inc\winnetwk.h
+FILE 1678 f:\sp\public\sdk\inc\imm.h
+FILE 1679 f:\sp\public\sdk\inc\pshpack1.h
+FILE 1680 f:\sp\public\sdk\inc\winver.h
+FILE 1681 f:\sp\public\sdk\inc\winnt.h
+FILE 1682 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 1683 f:\sp\public\sdk\inc\winreg.h
+FILE 1684 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 1685 f:\sp\public\sdk\inc\winbase.h
+FILE 1686 f:\sp\public\sdk\inc\winerror.h
+FILE 1687 f:\sp\public\sdk\inc\pshpack8.h
+FILE 1688 f:\sp\vctools\crt_bld\self_x86\crt\src\sect_attribs.h
+FILE 1689 f:\sp\public\sdk\inc\reason.h
+FILE 1690 f:\sp\public\sdk\inc\wincon.h
+FILE 1691 f:\sp\public\sdk\inc\pshpack2.h
+FILE 1692 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 1693 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 1694 f:\sp\public\sdk\inc\mcx.h
+FILE 1695 f:\sp\public\sdk\inc\winuser.h
+FILE 1696 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 1697 f:\sp\public\sdk\inc\winnls.h
+FILE 1698 f:\sp\public\sdk\inc\guiddef.h
+FILE 1699 f:\sp\public\sdk\inc\windows.h
+FILE 1700 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 1701 f:\sp\public\sdk\inc\specstrings.h
+FILE 1702 f:\sp\public\sdk\inc\basetsd.h
+FILE 1703 f:\sp\public\sdk\inc\stralign.h
+FILE 1704 f:\sp\vctools\crt_bld\self_x86\crt\src\fflush.c
+FILE 1705 f:\sp\vctools\crt_bld\self_x86\crt\src\file2.h
+FILE 1706 f:\sp\vctools\crt_bld\self_x86\crt\src\io.h
+FILE 1707 f:\sp\public\sdk\inc\tvout.h
+FILE 1708 f:\sp\public\sdk\inc\winsvc.h
+FILE 1709 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 1710 f:\sp\public\sdk\inc\wingdi.h
+FILE 1711 f:\sp\public\sdk\inc\pshpack4.h
+FILE 1712 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 1713 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 1714 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 1715 f:\sp\public\sdk\inc\poppack.h
+FILE 1716 f:\sp\public\sdk\inc\ddbanned.h
+FILE 1717 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 1718 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 1719 f:\sp\public\sdk\inc\winnetwk.h
+FILE 1720 f:\sp\public\sdk\inc\imm.h
+FILE 1721 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 1722 f:\sp\public\sdk\inc\windef.h
+FILE 1723 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 1724 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 1725 f:\sp\public\sdk\inc\pshpack8.h
+FILE 1726 f:\sp\public\sdk\inc\reason.h
+FILE 1727 f:\sp\public\sdk\inc\wincon.h
+FILE 1728 f:\sp\public\sdk\inc\pshpack2.h
+FILE 1729 f:\sp\public\sdk\inc\mcx.h
+FILE 1730 f:\sp\public\sdk\inc\winuser.h
+FILE 1731 f:\sp\public\sdk\inc\winnls.h
+FILE 1732 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 1733 f:\sp\public\sdk\inc\windef.h
+FILE 1734 f:\sp\public\sdk\inc\stralign.h
+FILE 1735 f:\sp\vctools\crt_bld\self_x86\crt\src\file2.h
+FILE 1736 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 1737 f:\sp\public\sdk\inc\tvout.h
+FILE 1738 f:\sp\public\sdk\inc\winsvc.h
+FILE 1739 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 1740 f:\sp\public\sdk\inc\wingdi.h
+FILE 1741 f:\sp\public\sdk\inc\pshpack4.h
+FILE 1742 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 1743 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 1744 f:\sp\public\sdk\inc\poppack.h
+FILE 1745 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 1746 f:\sp\public\sdk\inc\winnt.h
+FILE 1747 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 1748 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 1749 f:\sp\public\sdk\inc\winnetwk.h
+FILE 1750 f:\sp\public\sdk\inc\imm.h
+FILE 1751 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 1752 f:\sp\vctools\crt_bld\self_x86\crt\src\fclose.c
+FILE 1753 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 1754 f:\sp\public\sdk\inc\pshpack1.h
+FILE 1755 f:\sp\public\sdk\inc\winver.h
+FILE 1756 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 1757 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 1758 f:\sp\public\sdk\inc\guiddef.h
+FILE 1759 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 1760 f:\sp\public\sdk\inc\ddbanned.h
+FILE 1761 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 1762 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 1763 f:\sp\public\sdk\inc\specstrings.h
+FILE 1764 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 1765 f:\sp\public\sdk\inc\basetsd.h
+FILE 1766 f:\sp\public\sdk\inc\windows.h
+FILE 1767 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 1768 f:\sp\vctools\crt_bld\self_x86\crt\src\io.h
+FILE 1769 f:\sp\public\sdk\inc\winreg.h
+FILE 1770 f:\sp\public\sdk\inc\winbase.h
+FILE 1771 f:\sp\public\sdk\inc\winerror.h
+FILE 1772 f:\sp\public\sdk\inc\poppack.h
+FILE 1773 f:\sp\vctools\crt_bld\self_x86\crt\src\file2.h
+FILE 1774 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 1775 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 1776 f:\sp\public\sdk\inc\winnetwk.h
+FILE 1777 f:\sp\public\sdk\inc\imm.h
+FILE 1778 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 1779 f:\sp\public\sdk\inc\windef.h
+FILE 1780 f:\sp\public\sdk\inc\pshpack1.h
+FILE 1781 f:\sp\public\sdk\inc\winver.h
+FILE 1782 f:\sp\public\sdk\inc\windows.h
+FILE 1783 f:\sp\public\sdk\inc\winnt.h
+FILE 1784 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 1785 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 1786 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 1787 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 1788 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 1789 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 1790 f:\sp\public\sdk\inc\winreg.h
+FILE 1791 f:\sp\public\sdk\inc\winbase.h
+FILE 1792 f:\sp\vctools\crt_bld\self_x86\crt\src\closeall.c
+FILE 1793 f:\sp\public\sdk\inc\winerror.h
+FILE 1794 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 1795 f:\sp\public\sdk\inc\pshpack8.h
+FILE 1796 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 1797 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 1798 f:\sp\public\sdk\inc\reason.h
+FILE 1799 f:\sp\public\sdk\inc\wincon.h
+FILE 1800 f:\sp\public\sdk\inc\ddbanned.h
+FILE 1801 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 1802 f:\sp\public\sdk\inc\pshpack2.h
+FILE 1803 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 1804 f:\sp\public\sdk\inc\mcx.h
+FILE 1805 f:\sp\public\sdk\inc\winuser.h
+FILE 1806 f:\sp\public\sdk\inc\winnls.h
+FILE 1807 f:\sp\public\sdk\inc\guiddef.h
+FILE 1808 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 1809 f:\sp\public\sdk\inc\specstrings.h
+FILE 1810 f:\sp\public\sdk\inc\basetsd.h
+FILE 1811 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 1812 f:\sp\public\sdk\inc\stralign.h
+FILE 1813 f:\sp\public\sdk\inc\tvout.h
+FILE 1814 f:\sp\public\sdk\inc\winsvc.h
+FILE 1815 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 1816 f:\sp\public\sdk\inc\wingdi.h
+FILE 1817 f:\sp\public\sdk\inc\pshpack4.h
+FILE 1818 f:\sp\public\sdk\inc\pshpack8.h
+FILE 1819 f:\sp\public\sdk\inc\reason.h
+FILE 1820 f:\sp\public\sdk\inc\wincon.h
+FILE 1821 f:\sp\public\sdk\inc\pshpack2.h
+FILE 1822 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 1823 f:\sp\public\sdk\inc\mcx.h
+FILE 1824 f:\sp\public\sdk\inc\winuser.h
+FILE 1825 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 1826 f:\sp\public\sdk\inc\winnls.h
+FILE 1827 f:\sp\public\sdk\inc\guiddef.h
+FILE 1828 f:\sp\public\sdk\inc\windows.h
+FILE 1829 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 1830 f:\sp\public\sdk\inc\specstrings.h
+FILE 1831 f:\sp\public\sdk\inc\basetsd.h
+FILE 1832 f:\sp\public\sdk\inc\stralign.h
+FILE 1833 f:\sp\vctools\crt_bld\self_x86\crt\src\file2.h
+FILE 1834 f:\sp\vctools\crt_bld\self_x86\crt\src\io.h
+FILE 1835 f:\sp\public\sdk\inc\tvout.h
+FILE 1836 f:\sp\public\sdk\inc\winsvc.h
+FILE 1837 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 1838 f:\sp\public\sdk\inc\wingdi.h
+FILE 1839 f:\sp\public\sdk\inc\pshpack4.h
+FILE 1840 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 1841 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 1842 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 1843 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 1844 f:\sp\public\sdk\inc\poppack.h
+FILE 1845 f:\sp\public\sdk\inc\winnetwk.h
+FILE 1846 f:\sp\public\sdk\inc\imm.h
+FILE 1847 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 1848 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 1849 f:\sp\public\sdk\inc\windef.h
+FILE 1850 f:\sp\vctools\crt_bld\self_x86\crt\src\_sftbuf.c
+FILE 1851 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 1852 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 1853 f:\sp\public\sdk\inc\pshpack1.h
+FILE 1854 f:\sp\public\sdk\inc\winver.h
+FILE 1855 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 1856 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 1857 f:\sp\public\sdk\inc\ddbanned.h
+FILE 1858 f:\sp\public\sdk\inc\winnt.h
+FILE 1859 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 1860 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 1861 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 1862 f:\sp\public\sdk\inc\winreg.h
+FILE 1863 f:\sp\public\sdk\inc\winbase.h
+FILE 1864 f:\sp\public\sdk\inc\winerror.h
+FILE 1865 f:\sp\public\sdk\inc\pshpack1.h
+FILE 1866 f:\sp\public\sdk\inc\winver.h
+FILE 1867 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 1868 f:\sp\public\sdk\inc\winnt.h
+FILE 1869 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 1870 f:\sp\public\sdk\inc\winreg.h
+FILE 1871 f:\sp\public\sdk\inc\winbase.h
+FILE 1872 f:\sp\vctools\crt_bld\self_x86\crt\src\file2.h
+FILE 1873 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 1874 f:\sp\public\sdk\inc\winerror.h
+FILE 1875 f:\sp\public\sdk\inc\pshpack8.h
+FILE 1876 f:\sp\public\sdk\inc\reason.h
+FILE 1877 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 1878 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 1879 f:\sp\public\sdk\inc\wincon.h
+FILE 1880 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 1881 f:\sp\public\sdk\inc\pshpack2.h
+FILE 1882 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 1883 f:\sp\public\sdk\inc\mcx.h
+FILE 1884 f:\sp\public\sdk\inc\winuser.h
+FILE 1885 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 1886 f:\sp\public\sdk\inc\winnls.h
+FILE 1887 f:\sp\public\sdk\inc\guiddef.h
+FILE 1888 f:\sp\public\sdk\inc\windows.h
+FILE 1889 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 1890 f:\sp\public\sdk\inc\specstrings.h
+FILE 1891 f:\sp\public\sdk\inc\basetsd.h
+FILE 1892 f:\sp\public\sdk\inc\stralign.h
+FILE 1893 f:\sp\vctools\crt_bld\self_x86\crt\src\_getbuf.c
+FILE 1894 f:\sp\public\sdk\inc\tvout.h
+FILE 1895 f:\sp\public\sdk\inc\winsvc.h
+FILE 1896 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 1897 f:\sp\public\sdk\inc\wingdi.h
+FILE 1898 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 1899 f:\sp\public\sdk\inc\pshpack4.h
+FILE 1900 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 1901 f:\sp\public\sdk\inc\poppack.h
+FILE 1902 f:\sp\public\sdk\inc\ddbanned.h
+FILE 1903 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 1904 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 1905 f:\sp\public\sdk\inc\winnetwk.h
+FILE 1906 f:\sp\public\sdk\inc\imm.h
+FILE 1907 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 1908 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 1909 f:\sp\public\sdk\inc\windef.h
+FILE 1910 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 1911 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 1912 f:\sp\public\sdk\inc\windef.h
+FILE 1913 f:\sp\public\sdk\inc\pshpack1.h
+FILE 1914 f:\sp\public\sdk\inc\winver.h
+FILE 1915 f:\sp\vctools\crt_bld\self_x86\crt\src\file2.h
+FILE 1916 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 1917 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 1918 f:\sp\public\sdk\inc\winnt.h
+FILE 1919 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 1920 f:\sp\public\sdk\inc\winreg.h
+FILE 1921 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 1922 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 1923 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 1924 f:\sp\public\sdk\inc\winbase.h
+FILE 1925 f:\sp\public\sdk\inc\winerror.h
+FILE 1926 f:\sp\public\sdk\inc\pshpack8.h
+FILE 1927 f:\sp\vctools\crt_bld\self_x86\crt\src\_freebuf.c
+FILE 1928 f:\sp\public\sdk\inc\reason.h
+FILE 1929 f:\sp\public\sdk\inc\wincon.h
+FILE 1930 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 1931 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 1932 f:\sp\public\sdk\inc\pshpack2.h
+FILE 1933 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 1934 f:\sp\public\sdk\inc\mcx.h
+FILE 1935 f:\sp\public\sdk\inc\winuser.h
+FILE 1936 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 1937 f:\sp\public\sdk\inc\winnls.h
+FILE 1938 f:\sp\public\sdk\inc\guiddef.h
+FILE 1939 f:\sp\public\sdk\inc\windows.h
+FILE 1940 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 1941 f:\sp\public\sdk\inc\specstrings.h
+FILE 1942 f:\sp\public\sdk\inc\basetsd.h
+FILE 1943 f:\sp\public\sdk\inc\stralign.h
+FILE 1944 f:\sp\public\sdk\inc\tvout.h
+FILE 1945 f:\sp\public\sdk\inc\ddbanned.h
+FILE 1946 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 1947 f:\sp\public\sdk\inc\winsvc.h
+FILE 1948 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 1949 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 1950 f:\sp\public\sdk\inc\wingdi.h
+FILE 1951 f:\sp\public\sdk\inc\pshpack4.h
+FILE 1952 f:\sp\public\sdk\inc\poppack.h
+FILE 1953 f:\sp\public\sdk\inc\winnetwk.h
+FILE 1954 f:\sp\public\sdk\inc\imm.h
+FILE 1955 f:\sp\public\sdk\inc\specstrings.h
+FILE 1956 f:\sp\public\sdk\inc\basetsd.h
+FILE 1957 f:\sp\public\sdk\inc\reason.h
+FILE 1958 f:\sp\public\sdk\inc\wincon.h
+FILE 1959 f:\sp\public\sdk\inc\pshpack2.h
+FILE 1960 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 1961 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 1962 f:\sp\public\sdk\inc\mcx.h
+FILE 1963 f:\sp\public\sdk\inc\winuser.h
+FILE 1964 f:\sp\public\sdk\inc\winnls.h
+FILE 1965 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 1966 f:\sp\public\sdk\inc\stralign.h
+FILE 1967 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 1968 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 1969 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 1970 f:\sp\public\sdk\inc\windows.h
+FILE 1971 f:\sp\public\sdk\inc\tvout.h
+FILE 1972 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 1973 f:\sp\public\sdk\inc\winsvc.h
+FILE 1974 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h
+FILE 1975 f:\sp\vctools\crt_bld\self_x86\crt\src\file2.h
+FILE 1976 f:\sp\public\sdk\inc\wingdi.h
+FILE 1977 f:\sp\vctools\crt_bld\self_x86\crt\src\io.h
+FILE 1978 f:\sp\public\sdk\inc\pshpack4.h
+FILE 1979 f:\sp\public\sdk\inc\poppack.h
+FILE 1980 f:\sp\vctools\crt_bld\self_x86\crt\src\_flsbuf.c
+FILE 1981 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 1982 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 1983 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 1984 f:\sp\public\sdk\inc\winnetwk.h
+FILE 1985 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl
+FILE 1986 f:\sp\public\sdk\inc\imm.h
+FILE 1987 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 1988 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 1989 f:\sp\vctools\crt_bld\self_x86\crt\src\_flswbuf.c
+FILE 1990 f:\sp\public\sdk\inc\windef.h
+FILE 1991 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 1992 f:\sp\public\sdk\inc\pshpack1.h
+FILE 1993 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 1994 f:\sp\public\sdk\inc\winver.h
+FILE 1995 f:\sp\public\sdk\inc\ddbanned.h
+FILE 1996 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 1997 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 1998 f:\sp\public\sdk\inc\winnt.h
+FILE 1999 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 2000 f:\sp\public\sdk\inc\winreg.h
+FILE 2001 f:\sp\vctools\crt_bld\self_x86\crt\src\msdos.h
+FILE 2002 f:\sp\vctools\crt_bld\self_x86\crt\src\wchar.h
+FILE 2003 f:\sp\public\sdk\inc\winbase.h
+FILE 2004 f:\sp\public\sdk\inc\winerror.h
+FILE 2005 f:\sp\public\sdk\inc\pshpack8.h
+FILE 2006 f:\sp\public\sdk\inc\guiddef.h
+FILE 2007 f:\sp\public\sdk\inc\basetsd.h
+FILE 2008 f:\sp\public\sdk\inc\reason.h
+FILE 2009 f:\sp\public\sdk\inc\wincon.h
+FILE 2010 f:\sp\public\sdk\inc\pshpack2.h
+FILE 2011 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 2012 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 2013 f:\sp\public\sdk\inc\mcx.h
+FILE 2014 f:\sp\public\sdk\inc\winuser.h
+FILE 2015 f:\sp\public\sdk\inc\winnls.h
+FILE 2016 f:\sp\public\sdk\inc\stralign.h
+FILE 2017 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 2018 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 2019 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 2020 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 2021 f:\sp\public\sdk\inc\tvout.h
+FILE 2022 f:\sp\public\sdk\inc\windows.h
+FILE 2023 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 2024 f:\sp\public\sdk\inc\winsvc.h
+FILE 2025 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h
+FILE 2026 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h
+FILE 2027 f:\sp\public\sdk\inc\wingdi.h
+FILE 2028 f:\sp\vctools\crt_bld\self_x86\crt\src\file2.h
+FILE 2029 f:\sp\vctools\crt_bld\self_x86\crt\src\io.h
+FILE 2030 f:\sp\public\sdk\inc\pshpack4.h
+FILE 2031 f:\sp\public\sdk\inc\poppack.h
+FILE 2032 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 2033 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 2034 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 2035 f:\sp\public\sdk\inc\winnetwk.h
+FILE 2036 f:\sp\public\sdk\inc\imm.h
+FILE 2037 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl
+FILE 2038 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 2039 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 2040 f:\sp\public\sdk\inc\windef.h
+FILE 2041 f:\sp\vctools\crt_bld\self_x86\crt\src\_flsbuf.c
+FILE 2042 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 2043 f:\sp\public\sdk\inc\pshpack1.h
+FILE 2044 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 2045 f:\sp\public\sdk\inc\winver.h
+FILE 2046 f:\sp\public\sdk\inc\ddbanned.h
+FILE 2047 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 2048 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 2049 f:\sp\public\sdk\inc\winnt.h
+FILE 2050 f:\sp\public\sdk\inc\winreg.h
+FILE 2051 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 2052 f:\sp\vctools\crt_bld\self_x86\crt\src\msdos.h
+FILE 2053 f:\sp\vctools\crt_bld\self_x86\crt\src\wchar.h
+FILE 2054 f:\sp\public\sdk\inc\winbase.h
+FILE 2055 f:\sp\public\sdk\inc\winerror.h
+FILE 2056 f:\sp\public\sdk\inc\pshpack8.h
+FILE 2057 f:\sp\public\sdk\inc\guiddef.h
+FILE 2058 f:\sp\public\sdk\inc\specstrings.h
+FILE 2059 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h
+FILE 2060 f:\sp\public\sdk\inc\reason.h
+FILE 2061 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 2062 f:\sp\public\sdk\inc\wincon.h
+FILE 2063 f:\sp\public\sdk\inc\pshpack2.h
+FILE 2064 f:\sp\public\sdk\inc\mcx.h
+FILE 2065 f:\sp\public\sdk\inc\winuser.h
+FILE 2066 f:\sp\public\sdk\inc\winnls.h
+FILE 2067 f:\sp\public\sdk\inc\guiddef.h
+FILE 2068 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 2069 f:\sp\public\sdk\inc\specstrings.h
+FILE 2070 f:\sp\public\sdk\inc\basetsd.h
+FILE 2071 f:\sp\public\sdk\inc\stralign.h
+FILE 2072 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 2073 f:\sp\public\sdk\inc\tvout.h
+FILE 2074 f:\sp\public\sdk\inc\winsvc.h
+FILE 2075 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 2076 f:\sp\public\sdk\inc\wingdi.h
+FILE 2077 f:\sp\public\sdk\inc\pshpack4.h
+FILE 2078 f:\sp\public\sdk\inc\poppack.h
+FILE 2079 f:\sp\vctools\crt_bld\self_x86\crt\src\sect_attribs.h
+FILE 2080 f:\sp\vctools\crt_bld\self_x86\crt\src\file2.h
+FILE 2081 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 2082 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 2083 f:\sp\public\sdk\inc\winnetwk.h
+FILE 2084 f:\sp\public\sdk\inc\imm.h
+FILE 2085 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 2086 f:\sp\public\sdk\inc\windef.h
+FILE 2087 f:\sp\vctools\crt_bld\self_x86\crt\src\_file.c
+FILE 2088 f:\sp\public\sdk\inc\pshpack1.h
+FILE 2089 f:\sp\public\sdk\inc\winver.h
+FILE 2090 f:\sp\public\sdk\inc\windows.h
+FILE 2091 f:\sp\public\sdk\inc\winnt.h
+FILE 2092 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 2093 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 2094 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 2095 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 2096 f:\sp\public\sdk\inc\ddbanned.h
+FILE 2097 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 2098 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 2099 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 2100 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 2101 f:\sp\public\sdk\inc\winreg.h
+FILE 2102 f:\sp\public\sdk\inc\winbase.h
+FILE 2103 f:\sp\public\sdk\inc\winerror.h
+FILE 2104 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 2105 f:\sp\public\sdk\inc\pshpack8.h
+FILE 2106 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 2107 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 2108 f:\sp\public\sdk\inc\windef.h
+FILE 2109 f:\sp\public\sdk\inc\pshpack1.h
+FILE 2110 f:\sp\public\sdk\inc\winver.h
+FILE 2111 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 2112 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 2113 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 2114 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 2115 f:\sp\public\sdk\inc\winnt.h
+FILE 2116 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 2117 f:\sp\public\sdk\inc\winreg.h
+FILE 2118 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 2119 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 2120 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 2121 f:\sp\public\sdk\inc\winbase.h
+FILE 2122 f:\sp\public\sdk\inc\winerror.h
+FILE 2123 f:\sp\public\sdk\inc\pshpack8.h
+FILE 2124 f:\sp\vctools\crt_bld\self_x86\crt\src\fputwc.c
+FILE 2125 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 2126 f:\sp\public\sdk\inc\reason.h
+FILE 2127 f:\sp\public\sdk\inc\wincon.h
+FILE 2128 f:\sp\public\sdk\inc\pshpack2.h
+FILE 2129 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 2130 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h
+FILE 2131 f:\sp\public\sdk\inc\mcx.h
+FILE 2132 f:\sp\public\sdk\inc\winuser.h
+FILE 2133 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h
+FILE 2134 f:\sp\public\sdk\inc\winnls.h
+FILE 2135 f:\sp\public\sdk\inc\guiddef.h
+FILE 2136 f:\sp\vctools\crt_bld\self_x86\crt\src\msdos.h
+FILE 2137 f:\sp\vctools\crt_bld\self_x86\crt\src\wchar.h
+FILE 2138 f:\sp\public\sdk\inc\stralign.h
+FILE 2139 f:\sp\public\sdk\inc\specstrings.h
+FILE 2140 f:\sp\vctools\crt_bld\self_x86\crt\src\file2.h
+FILE 2141 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 2142 f:\sp\public\sdk\inc\basetsd.h
+FILE 2143 f:\sp\public\sdk\inc\windows.h
+FILE 2144 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 2145 f:\sp\public\sdk\inc\tvout.h
+FILE 2146 f:\sp\public\sdk\inc\ddbanned.h
+FILE 2147 f:\sp\public\sdk\inc\winsvc.h
+FILE 2148 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 2149 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 2150 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 2151 f:\sp\public\sdk\inc\wingdi.h
+FILE 2152 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 2153 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 2154 f:\sp\public\sdk\inc\pshpack4.h
+FILE 2155 f:\sp\public\sdk\inc\poppack.h
+FILE 2156 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl
+FILE 2157 f:\sp\public\sdk\inc\winnetwk.h
+FILE 2158 f:\sp\public\sdk\inc\imm.h
+FILE 2159 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 2160 f:\sp\public\sdk\inc\poppack.h
+FILE 2161 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 2162 f:\sp\public\sdk\inc\winnetwk.h
+FILE 2163 f:\sp\public\sdk\inc\imm.h
+FILE 2164 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 2165 f:\sp\public\sdk\inc\windef.h
+FILE 2166 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 2167 f:\sp\public\sdk\inc\pshpack1.h
+FILE 2168 f:\sp\public\sdk\inc\winver.h
+FILE 2169 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 2170 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 2171 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 2172 f:\sp\public\sdk\inc\winnt.h
+FILE 2173 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 2174 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 2175 f:\sp\public\sdk\inc\winreg.h
+FILE 2176 f:\sp\vctools\crt_bld\self_x86\crt\src\fileno.c
+FILE 2177 f:\sp\public\sdk\inc\winbase.h
+FILE 2178 f:\sp\public\sdk\inc\winerror.h
+FILE 2179 f:\sp\public\sdk\inc\pshpack8.h
+FILE 2180 f:\sp\public\sdk\inc\reason.h
+FILE 2181 f:\sp\public\sdk\inc\wincon.h
+FILE 2182 f:\sp\public\sdk\inc\ddbanned.h
+FILE 2183 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 2184 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 2185 f:\sp\public\sdk\inc\pshpack2.h
+FILE 2186 f:\sp\public\sdk\inc\mcx.h
+FILE 2187 f:\sp\public\sdk\inc\winuser.h
+FILE 2188 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 2189 f:\sp\public\sdk\inc\winnls.h
+FILE 2190 f:\sp\public\sdk\inc\guiddef.h
+FILE 2191 f:\sp\public\sdk\inc\windows.h
+FILE 2192 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 2193 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 2194 f:\sp\public\sdk\inc\specstrings.h
+FILE 2195 f:\sp\public\sdk\inc\basetsd.h
+FILE 2196 f:\sp\public\sdk\inc\stralign.h
+FILE 2197 f:\sp\public\sdk\inc\tvout.h
+FILE 2198 f:\sp\public\sdk\inc\winsvc.h
+FILE 2199 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 2200 f:\sp\public\sdk\inc\wingdi.h
+FILE 2201 f:\sp\public\sdk\inc\pshpack4.h
+FILE 2202 f:\sp\public\sdk\inc\pshpack2.h
+FILE 2203 f:\sp\public\sdk\inc\winreg.h
+FILE 2204 f:\sp\public\sdk\inc\guiddef.h
+FILE 2205 f:\sp\public\sdk\inc\windows.h
+FILE 2206 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 2207 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 2208 f:\sp\public\sdk\inc\specstrings.h
+FILE 2209 f:\sp\public\sdk\inc\basetsd.h
+FILE 2210 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 2211 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 2212 f:\sp\public\sdk\inc\pshpack4.h
+FILE 2213 f:\sp\public\sdk\inc\reason.h
+FILE 2214 f:\sp\public\sdk\inc\wincon.h
+FILE 2215 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 2216 f:\sp\public\sdk\inc\poppack.h
+FILE 2217 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 2218 f:\sp\vctools\crt_bld\self_x86\crt\src\sect_attribs.h
+FILE 2219 f:\sp\public\sdk\inc\mcx.h
+FILE 2220 f:\sp\public\sdk\inc\winuser.h
+FILE 2221 f:\sp\public\sdk\inc\winnls.h
+FILE 2222 f:\sp\public\sdk\inc\stralign.h
+FILE 2223 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 2224 f:\sp\public\sdk\inc\windef.h
+FILE 2225 f:\sp\public\sdk\inc\tvout.h
+FILE 2226 f:\sp\public\sdk\inc\winsvc.h
+FILE 2227 f:\sp\vctools\crt_bld\self_x86\crt\src\tidtable.c
+FILE 2228 f:\sp\public\sdk\inc\wingdi.h
+FILE 2229 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 2230 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 2231 f:\sp\public\sdk\inc\winnt.h
+FILE 2232 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 2233 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 2234 f:\sp\public\sdk\inc\winnetwk.h
+FILE 2235 f:\sp\public\sdk\inc\imm.h
+FILE 2236 f:\sp\public\sdk\inc\ddbanned.h
+FILE 2237 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 2238 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 2239 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h
+FILE 2240 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 2241 f:\sp\public\sdk\inc\winbase.h
+FILE 2242 f:\sp\public\sdk\inc\winerror.h
+FILE 2243 f:\sp\public\sdk\inc\pshpack1.h
+FILE 2244 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 2245 f:\sp\vctools\crt_bld\self_x86\crt\src\memory.h
+FILE 2246 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 2247 f:\sp\vctools\crt_bld\self_x86\crt\src\msdos.h
+FILE 2248 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h
+FILE 2249 f:\sp\public\sdk\inc\pshpack8.h
+FILE 2250 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 2251 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 2252 f:\sp\public\sdk\inc\winver.h
+FILE 2253 f:\sp\public\sdk\inc\pshpack4.h
+FILE 2254 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h
+FILE 2255 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 2256 f:\sp\public\sdk\inc\poppack.h
+FILE 2257 f:\sp\public\sdk\inc\winnt.h
+FILE 2258 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 2259 f:\sp\public\sdk\inc\winnetwk.h
+FILE 2260 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h
+FILE 2261 f:\sp\public\sdk\inc\imm.h
+FILE 2262 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h
+FILE 2263 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 2264 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 2265 f:\sp\public\sdk\inc\pshpack1.h
+FILE 2266 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 2267 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 2268 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 2269 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 2270 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 2271 f:\sp\public\sdk\inc\winver.h
+FILE 2272 f:\sp\public\sdk\inc\guiddef.h
+FILE 2273 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 2274 f:\sp\public\sdk\inc\specstrings.h
+FILE 2275 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 2276 f:\sp\public\sdk\inc\basetsd.h
+FILE 2277 f:\sp\public\sdk\inc\windows.h
+FILE 2278 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 2279 f:\sp\public\sdk\inc\winreg.h
+FILE 2280 f:\sp\vctools\crt_bld\self_x86\crt\src\stdenvp.c
+FILE 2281 f:\sp\public\sdk\inc\winbase.h
+FILE 2282 f:\sp\public\sdk\inc\winerror.h
+FILE 2283 f:\sp\public\sdk\inc\pshpack8.h
+FILE 2284 f:\sp\public\sdk\inc\reason.h
+FILE 2285 f:\sp\public\sdk\inc\ddbanned.h
+FILE 2286 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 2287 f:\sp\public\sdk\inc\wincon.h
+FILE 2288 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 2289 f:\sp\public\sdk\inc\pshpack2.h
+FILE 2290 f:\sp\public\sdk\inc\mcx.h
+FILE 2291 f:\sp\public\sdk\inc\winuser.h
+FILE 2292 f:\sp\public\sdk\inc\winnls.h
+FILE 2293 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 2294 f:\sp\public\sdk\inc\windef.h
+FILE 2295 f:\sp\public\sdk\inc\stralign.h
+FILE 2296 f:\sp\public\sdk\inc\tvout.h
+FILE 2297 f:\sp\public\sdk\inc\winsvc.h
+FILE 2298 f:\sp\public\sdk\inc\wingdi.h
+FILE 2299 f:\sp\public\sdk\inc\poppack.h
+FILE 2300 f:\sp\vctools\crt_bld\self_x86\crt\src\dos.h
+FILE 2301 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 2302 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h
+FILE 2303 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 2304 f:\sp\public\sdk\inc\winnetwk.h
+FILE 2305 f:\sp\public\sdk\inc\imm.h
+FILE 2306 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 2307 f:\sp\public\sdk\inc\windef.h
+FILE 2308 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 2309 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 2310 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h
+FILE 2311 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h
+FILE 2312 f:\sp\vctools\crt_bld\self_x86\crt\src\mbctype.h
+FILE 2313 f:\sp\public\sdk\inc\pshpack1.h
+FILE 2314 f:\sp\public\sdk\inc\winver.h
+FILE 2315 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 2316 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 2317 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 2318 f:\sp\public\sdk\inc\winnt.h
+FILE 2319 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 2320 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 2321 f:\sp\public\sdk\inc\winreg.h
+FILE 2322 f:\sp\vctools\crt_bld\self_x86\crt\src\stdargv.c
+FILE 2323 f:\sp\public\sdk\inc\winbase.h
+FILE 2324 f:\sp\public\sdk\inc\winerror.h
+FILE 2325 f:\sp\public\sdk\inc\pshpack8.h
+FILE 2326 f:\sp\public\sdk\inc\reason.h
+FILE 2327 f:\sp\public\sdk\inc\wincon.h
+FILE 2328 f:\sp\public\sdk\inc\ddbanned.h
+FILE 2329 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 2330 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 2331 f:\sp\public\sdk\inc\pshpack2.h
+FILE 2332 f:\sp\public\sdk\inc\mcx.h
+FILE 2333 f:\sp\public\sdk\inc\winuser.h
+FILE 2334 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 2335 f:\sp\public\sdk\inc\winnls.h
+FILE 2336 f:\sp\public\sdk\inc\guiddef.h
+FILE 2337 f:\sp\public\sdk\inc\windows.h
+FILE 2338 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 2339 f:\sp\public\sdk\inc\specstrings.h
+FILE 2340 f:\sp\public\sdk\inc\basetsd.h
+FILE 2341 f:\sp\public\sdk\inc\stralign.h
+FILE 2342 f:\sp\public\sdk\inc\tvout.h
+FILE 2343 f:\sp\public\sdk\inc\winsvc.h
+FILE 2344 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 2345 f:\sp\public\sdk\inc\wingdi.h
+FILE 2346 f:\sp\public\sdk\inc\pshpack4.h
+FILE 2347 f:\sp\public\sdk\inc\reason.h
+FILE 2348 f:\sp\public\sdk\inc\wincon.h
+FILE 2349 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 2350 f:\sp\public\sdk\inc\poppack.h
+FILE 2351 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 2352 f:\sp\public\sdk\inc\mcx.h
+FILE 2353 f:\sp\public\sdk\inc\winuser.h
+FILE 2354 f:\sp\public\sdk\inc\winnls.h
+FILE 2355 f:\sp\public\sdk\inc\stralign.h
+FILE 2356 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 2357 f:\sp\public\sdk\inc\windef.h
+FILE 2358 f:\sp\public\sdk\inc\tvout.h
+FILE 2359 f:\sp\public\sdk\inc\winsvc.h
+FILE 2360 f:\sp\public\sdk\inc\wingdi.h
+FILE 2361 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 2362 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 2363 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 2364 f:\sp\public\sdk\inc\winnt.h
+FILE 2365 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 2366 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 2367 f:\sp\public\sdk\inc\winnetwk.h
+FILE 2368 f:\sp\public\sdk\inc\imm.h
+FILE 2369 f:\sp\vctools\crt_bld\self_x86\crt\src\winheap.h
+FILE 2370 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 2371 f:\sp\vctools\crt_bld\self_x86\crt\src\mlock.c
+FILE 2372 f:\sp\public\sdk\inc\winbase.h
+FILE 2373 f:\sp\public\sdk\inc\winerror.h
+FILE 2374 f:\sp\public\sdk\inc\pshpack1.h
+FILE 2375 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h
+FILE 2376 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 2377 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 2378 f:\sp\public\sdk\inc\pshpack8.h
+FILE 2379 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 2380 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 2381 f:\sp\public\sdk\inc\winver.h
+FILE 2382 f:\sp\public\sdk\inc\ddbanned.h
+FILE 2383 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 2384 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 2385 f:\sp\public\sdk\inc\pshpack2.h
+FILE 2386 f:\sp\public\sdk\inc\winreg.h
+FILE 2387 f:\sp\public\sdk\inc\guiddef.h
+FILE 2388 f:\sp\public\sdk\inc\windows.h
+FILE 2389 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 2390 f:\sp\public\sdk\inc\specstrings.h
+FILE 2391 f:\sp\public\sdk\inc\basetsd.h
+FILE 2392 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 2393 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 2394 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 2395 f:\sp\public\sdk\inc\pshpack4.h
+FILE 2396 f:\sp\public\sdk\inc\poppack.h
+FILE 2397 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 2398 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 2399 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 2400 f:\sp\public\sdk\inc\winnetwk.h
+FILE 2401 f:\sp\public\sdk\inc\imm.h
+FILE 2402 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 2403 f:\sp\public\sdk\inc\windef.h
+FILE 2404 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 2405 f:\sp\public\sdk\inc\pshpack1.h
+FILE 2406 f:\sp\public\sdk\inc\winver.h
+FILE 2407 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 2408 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 2409 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 2410 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h
+FILE 2411 f:\sp\public\sdk\inc\winnt.h
+FILE 2412 f:\sp\vctools\crt_bld\self_x86\crt\src\cmsgs.h
+FILE 2413 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 2414 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h
+FILE 2415 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 2416 f:\sp\public\sdk\inc\winreg.h
+FILE 2417 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 2418 f:\sp\vctools\crt_bld\self_x86\crt\src\crt0msg.c
+FILE 2419 f:\sp\public\sdk\inc\winbase.h
+FILE 2420 f:\sp\public\sdk\inc\winerror.h
+FILE 2421 f:\sp\public\sdk\inc\pshpack8.h
+FILE 2422 f:\sp\public\sdk\inc\reason.h
+FILE 2423 f:\sp\public\sdk\inc\wincon.h
+FILE 2424 f:\sp\public\sdk\inc\ddbanned.h
+FILE 2425 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 2426 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 2427 f:\sp\public\sdk\inc\pshpack2.h
+FILE 2428 f:\sp\public\sdk\inc\mcx.h
+FILE 2429 f:\sp\public\sdk\inc\winuser.h
+FILE 2430 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 2431 f:\sp\public\sdk\inc\winnls.h
+FILE 2432 f:\sp\public\sdk\inc\guiddef.h
+FILE 2433 f:\sp\public\sdk\inc\windows.h
+FILE 2434 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 2435 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 2436 f:\sp\public\sdk\inc\specstrings.h
+FILE 2437 f:\sp\public\sdk\inc\basetsd.h
+FILE 2438 f:\sp\public\sdk\inc\stralign.h
+FILE 2439 f:\sp\public\sdk\inc\tvout.h
+FILE 2440 f:\sp\public\sdk\inc\winsvc.h
+FILE 2441 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 2442 f:\sp\public\sdk\inc\wingdi.h
+FILE 2443 f:\sp\public\sdk\inc\pshpack4.h
+FILE 2444 f:\sp\public\sdk\inc\pshpack1.h
+FILE 2445 f:\sp\public\sdk\inc\winver.h
+FILE 2446 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 2447 f:\sp\public\sdk\inc\winnt.h
+FILE 2448 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 2449 f:\sp\public\sdk\inc\winreg.h
+FILE 2450 f:\sp\public\sdk\inc\winbase.h
+FILE 2451 f:\sp\public\sdk\inc\winerror.h
+FILE 2452 f:\sp\vctools\crt_bld\self_x86\crt\src\sect_attribs.h
+FILE 2453 f:\sp\public\sdk\inc\pshpack8.h
+FILE 2454 f:\sp\public\sdk\inc\reason.h
+FILE 2455 f:\sp\public\sdk\inc\wincon.h
+FILE 2456 f:\sp\public\sdk\inc\pshpack2.h
+FILE 2457 f:\sp\vctools\crt_bld\self_x86\crt\src\crt0init.c
+FILE 2458 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 2459 f:\sp\public\sdk\inc\mcx.h
+FILE 2460 f:\sp\public\sdk\inc\winuser.h
+FILE 2461 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 2462 f:\sp\public\sdk\inc\winnls.h
+FILE 2463 f:\sp\public\sdk\inc\guiddef.h
+FILE 2464 f:\sp\public\sdk\inc\windows.h
+FILE 2465 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 2466 f:\sp\public\sdk\inc\specstrings.h
+FILE 2467 f:\sp\public\sdk\inc\basetsd.h
+FILE 2468 f:\sp\public\sdk\inc\stralign.h
+FILE 2469 f:\sp\public\sdk\inc\tvout.h
+FILE 2470 f:\sp\public\sdk\inc\winsvc.h
+FILE 2471 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 2472 f:\sp\public\sdk\inc\wingdi.h
+FILE 2473 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 2474 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 2475 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 2476 f:\sp\public\sdk\inc\pshpack4.h
+FILE 2477 f:\sp\public\sdk\inc\ddbanned.h
+FILE 2478 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 2479 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 2480 f:\sp\public\sdk\inc\poppack.h
+FILE 2481 f:\sp\public\sdk\inc\winnetwk.h
+FILE 2482 f:\sp\public\sdk\inc\imm.h
+FILE 2483 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 2484 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 2485 f:\sp\public\sdk\inc\windef.h
+FILE 2486 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 2487 f:\sp\public\sdk\inc\poppack.h
+FILE 2488 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h
+FILE 2489 f:\sp\public\sdk\inc\winnetwk.h
+FILE 2490 f:\sp\public\sdk\inc\imm.h
+FILE 2491 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 2492 f:\sp\public\sdk\inc\windef.h
+FILE 2493 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 2494 f:\sp\public\sdk\inc\pshpack1.h
+FILE 2495 f:\sp\public\sdk\inc\winver.h
+FILE 2496 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 2497 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 2498 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 2499 f:\sp\public\sdk\inc\winnt.h
+FILE 2500 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 2501 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 2502 f:\sp\public\sdk\inc\winreg.h
+FILE 2503 f:\sp\vctools\crt_bld\self_x86\crt\src\crt0fp.c
+FILE 2504 f:\sp\public\sdk\inc\winbase.h
+FILE 2505 f:\sp\public\sdk\inc\winerror.h
+FILE 2506 f:\sp\public\sdk\inc\pshpack8.h
+FILE 2507 f:\sp\public\sdk\inc\reason.h
+FILE 2508 f:\sp\public\sdk\inc\wincon.h
+FILE 2509 f:\sp\public\sdk\inc\ddbanned.h
+FILE 2510 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 2511 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 2512 f:\sp\public\sdk\inc\pshpack2.h
+FILE 2513 f:\sp\public\sdk\inc\mcx.h
+FILE 2514 f:\sp\public\sdk\inc\winuser.h
+FILE 2515 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 2516 f:\sp\public\sdk\inc\winnls.h
+FILE 2517 f:\sp\public\sdk\inc\guiddef.h
+FILE 2518 f:\sp\public\sdk\inc\windows.h
+FILE 2519 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 2520 f:\sp\public\sdk\inc\specstrings.h
+FILE 2521 f:\sp\public\sdk\inc\basetsd.h
+FILE 2522 f:\sp\public\sdk\inc\stralign.h
+FILE 2523 f:\sp\public\sdk\inc\tvout.h
+FILE 2524 f:\sp\public\sdk\inc\winsvc.h
+FILE 2525 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 2526 f:\sp\public\sdk\inc\wingdi.h
+FILE 2527 f:\sp\public\sdk\inc\pshpack4.h
+FILE 2528 f:\sp\vctools\crt_bld\self_x86\crt\src\process.h
+FILE 2529 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 2530 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 2531 f:\sp\public\sdk\inc\pshpack4.h
+FILE 2532 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 2533 f:\sp\public\sdk\inc\reason.h
+FILE 2534 f:\sp\public\sdk\inc\wincon.h
+FILE 2535 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 2536 f:\sp\public\sdk\inc\poppack.h
+FILE 2537 f:\sp\vctools\crt_bld\self_x86\crt\src\sect_attribs.h
+FILE 2538 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 2539 f:\sp\public\sdk\inc\mcx.h
+FILE 2540 f:\sp\public\sdk\inc\winuser.h
+FILE 2541 f:\sp\public\sdk\inc\winnls.h
+FILE 2542 f:\sp\public\sdk\inc\stralign.h
+FILE 2543 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 2544 f:\sp\public\sdk\inc\windef.h
+FILE 2545 f:\sp\public\sdk\inc\tvout.h
+FILE 2546 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 2547 f:\sp\public\sdk\inc\winsvc.h
+FILE 2548 f:\sp\public\sdk\inc\wingdi.h
+FILE 2549 f:\sp\vctools\crt_bld\self_x86\crt\src\msdos.h
+FILE 2550 f:\sp\vctools\crt_bld\self_x86\crt\src\rtcapi.h
+FILE 2551 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 2552 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 2553 f:\sp\vctools\crt_bld\self_x86\crt\src\mbdata.h
+FILE 2554 f:\sp\vctools\crt_bld\self_x86\crt\src\mbctype.h
+FILE 2555 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 2556 f:\sp\public\sdk\inc\winnt.h
+FILE 2557 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 2558 f:\sp\public\sdk\inc\winnetwk.h
+FILE 2559 f:\sp\public\sdk\inc\imm.h
+FILE 2560 f:\sp\vctools\crt_bld\self_x86\crt\src\crt0dat.c
+FILE 2561 f:\sp\public\sdk\inc\winbase.h
+FILE 2562 f:\sp\public\sdk\inc\winerror.h
+FILE 2563 f:\sp\public\sdk\inc\pshpack1.h
+FILE 2564 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 2565 f:\sp\public\sdk\inc\pshpack8.h
+FILE 2566 f:\sp\public\sdk\inc\winver.h
+FILE 2567 f:\sp\public\sdk\inc\ddbanned.h
+FILE 2568 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 2569 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 2570 f:\sp\vctools\crt_bld\self_x86\crt\src\dos.h
+FILE 2571 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 2572 f:\sp\public\sdk\inc\pshpack2.h
+FILE 2573 f:\sp\public\sdk\inc\winreg.h
+FILE 2574 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 2575 f:\sp\public\sdk\inc\guiddef.h
+FILE 2576 f:\sp\public\sdk\inc\windows.h
+FILE 2577 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 2578 f:\sp\public\sdk\inc\specstrings.h
+FILE 2579 f:\sp\public\sdk\inc\basetsd.h
+FILE 2580 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 2581 f:\sp\public\sdk\inc\tvout.h
+FILE 2582 f:\sp\public\sdk\inc\winsvc.h
+FILE 2583 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 2584 f:\sp\public\sdk\inc\wingdi.h
+FILE 2585 f:\sp\public\sdk\inc\pshpack4.h
+FILE 2586 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h
+FILE 2587 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h
+FILE 2588 f:\sp\vctools\crt_bld\self_x86\crt\src\rtcapi.h
+FILE 2589 f:\sp\public\sdk\inc\poppack.h
+FILE 2590 f:\sp\vctools\crt_bld\self_x86\crt\src\process.h
+FILE 2591 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h
+FILE 2592 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h
+FILE 2593 f:\sp\public\sdk\inc\winnetwk.h
+FILE 2594 f:\sp\public\sdk\inc\imm.h
+FILE 2595 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 2596 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 2597 f:\sp\public\sdk\inc\windef.h
+FILE 2598 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 2599 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 2600 f:\sp\vctools\crt_bld\self_x86\crt\src\dos.h
+FILE 2601 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 2602 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 2603 f:\sp\public\sdk\inc\pshpack1.h
+FILE 2604 f:\sp\public\sdk\inc\winver.h
+FILE 2605 f:\sp\public\sdk\inc\winnt.h
+FILE 2606 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 2607 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 2608 f:\sp\vctools\crt_bld\self_x86\crt\src\crt0.c
+FILE 2609 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 2610 f:\sp\public\sdk\inc\winreg.h
+FILE 2611 f:\sp\public\sdk\inc\winbase.h
+FILE 2612 f:\sp\public\sdk\inc\winerror.h
+FILE 2613 f:\sp\public\sdk\inc\ddbanned.h
+FILE 2614 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 2615 f:\sp\public\sdk\inc\pshpack8.h
+FILE 2616 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 2617 f:\sp\public\sdk\inc\reason.h
+FILE 2618 f:\sp\public\sdk\inc\wincon.h
+FILE 2619 f:\sp\public\sdk\inc\pshpack2.h
+FILE 2620 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 2621 f:\sp\public\sdk\inc\mcx.h
+FILE 2622 f:\sp\public\sdk\inc\winuser.h
+FILE 2623 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 2624 f:\sp\public\sdk\inc\winnls.h
+FILE 2625 f:\sp\public\sdk\inc\guiddef.h
+FILE 2626 f:\sp\public\sdk\inc\windows.h
+FILE 2627 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 2628 f:\sp\public\sdk\inc\specstrings.h
+FILE 2629 f:\sp\public\sdk\inc\basetsd.h
+FILE 2630 f:\sp\vctools\crt_bld\self_x86\crt\src\sect_attribs.h
+FILE 2631 f:\sp\public\sdk\inc\stralign.h
+FILE 2632 F:\SP\vctools\crt_bld\SELF_X86\crt\src\intel\alloca16.asm
+FILE 2633 F:\SP\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc
+FILE 2634 F:\SP\vctools\crt_bld\SELF_X86\crt\src\intel\chkstk.asm
+FILE 2635 F:\SP\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc
+FILE 2636 f:\sp\public\sdk\inc\wincon.h
+FILE 2637 f:\sp\public\sdk\inc\imm.h
+FILE 2638 f:\sp\public\sdk\inc\winbase.h
+FILE 2639 f:\sp\public\sdk\inc\wingdi.h
+FILE 2640 f:\sp\public\sdk\inc\winver.h
+FILE 2641 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\limits.h
+FILE 2642 f:\sp\public\sdk\inc\windows.h
+FILE 2643 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h
+FILE 2644 f:\sp\public\sdk\inc\pshpack2.h
+FILE 2645 f:\sp\public\sdk\inc\reason.h
+FILE 2646 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\rtc\initsect.cpp
+FILE 2647 f:\sp\public\sdk\inc\specstrings.h
+FILE 2648 f:\sp\public\sdk\inc\basetsd.h
+FILE 2649 f:\sp\public\sdk\inc\pshpack4.h
+FILE 2650 f:\sp\public\sdk\inc\winnetwk.h
+FILE 2651 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\errno.h
+FILE 2652 f:\sp\public\sdk\inc\stralign.h
+FILE 2653 f:\sp\public\sdk\inc\poppack.h
+FILE 2654 f:\sp\public\sdk\inc\winsvc.h
+FILE 2655 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h
+FILE 2656 f:\sp\public\sdk\inc\windef.h
+FILE 2657 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\internal.h
+FILE 2658 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h
+FILE 2659 f:\sp\public\sdk\inc\winuser.h
+FILE 2660 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h
+FILE 2661 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sect_attribs.h
+FILE 2662 f:\sp\public\sdk\inc\mcx.h
+FILE 2663 f:\sp\public\sdk\inc\pshpack8.h
+FILE 2664 f:\sp\public\sdk\inc\guiddef.h
+FILE 2665 f:\sp\public\sdk\inc\winnt.h
+FILE 2666 f:\sp\public\sdk\inc\winnls.h
+FILE 2667 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h
+FILE 2668 f:\sp\public\sdk\inc\pshpack1.h
+FILE 2669 f:\sp\public\sdk\inc\winerror.h
+FILE 2670 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\rtcapi.h
+FILE 2671 f:\sp\public\sdk\inc\winreg.h
+FILE 2672 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\string.h
+FILE 2673 f:\sp\public\sdk\inc\ddbanned.h
+FILE 2674 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h
+FILE 2675 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h
+FILE 2676 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\rtcpriv.h
+FILE 2677 f:\sp\public\sdk\inc\tvout.h
+FILE 2678 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\malloc.h
+FILE 2679 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdbg.h
+FILE 2680 f:\sp\public\sdk\inc\poppack.h
+FILE 2681 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 2682 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 2683 f:\sp\public\sdk\inc\winnetwk.h
+FILE 2684 f:\sp\public\sdk\inc\imm.h
+FILE 2685 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 2686 f:\sp\public\sdk\inc\windef.h
+FILE 2687 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 2688 f:\sp\public\sdk\inc\pshpack1.h
+FILE 2689 f:\sp\public\sdk\inc\winver.h
+FILE 2690 f:\sp\public\sdk\inc\windows.h
+FILE 2691 f:\sp\public\sdk\inc\winnt.h
+FILE 2692 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 2693 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 2694 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 2695 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 2696 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 2697 f:\sp\public\sdk\inc\winreg.h
+FILE 2698 f:\sp\public\sdk\inc\winbase.h
+FILE 2699 f:\sp\vctools\crt_bld\self_x86\crt\src\wtombenv.c
+FILE 2700 f:\sp\public\sdk\inc\winerror.h
+FILE 2701 f:\sp\public\sdk\inc\pshpack8.h
+FILE 2702 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 2703 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 2704 f:\sp\public\sdk\inc\reason.h
+FILE 2705 f:\sp\public\sdk\inc\wincon.h
+FILE 2706 f:\sp\public\sdk\inc\ddbanned.h
+FILE 2707 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 2708 f:\sp\public\sdk\inc\pshpack2.h
+FILE 2709 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 2710 f:\sp\public\sdk\inc\mcx.h
+FILE 2711 f:\sp\public\sdk\inc\winuser.h
+FILE 2712 f:\sp\public\sdk\inc\winnls.h
+FILE 2713 f:\sp\public\sdk\inc\guiddef.h
+FILE 2714 f:\sp\public\sdk\inc\specstrings.h
+FILE 2715 f:\sp\public\sdk\inc\basetsd.h
+FILE 2716 f:\sp\public\sdk\inc\stralign.h
+FILE 2717 f:\sp\public\sdk\inc\tvout.h
+FILE 2718 f:\sp\public\sdk\inc\winsvc.h
+FILE 2719 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 2720 f:\sp\public\sdk\inc\wingdi.h
+FILE 2721 f:\sp\public\sdk\inc\pshpack4.h
+FILE 2722 f:\sp\public\sdk\inc\winnt.h
+FILE 2723 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 2724 f:\sp\public\sdk\inc\winreg.h
+FILE 2725 f:\sp\public\sdk\inc\winbase.h
+FILE 2726 f:\sp\public\sdk\inc\winerror.h
+FILE 2727 f:\sp\public\sdk\inc\pshpack8.h
+FILE 2728 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 2729 f:\sp\public\sdk\inc\reason.h
+FILE 2730 f:\sp\public\sdk\inc\wincon.h
+FILE 2731 f:\sp\vctools\crt_bld\self_x86\crt\src\float.h
+FILE 2732 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 2733 f:\sp\public\sdk\inc\pshpack2.h
+FILE 2734 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 2735 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 2736 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 2737 f:\sp\public\sdk\inc\mcx.h
+FILE 2738 f:\sp\public\sdk\inc\winuser.h
+FILE 2739 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 2740 f:\sp\public\sdk\inc\winnls.h
+FILE 2741 f:\sp\public\sdk\inc\guiddef.h
+FILE 2742 f:\sp\public\sdk\inc\windows.h
+FILE 2743 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 2744 f:\sp\public\sdk\inc\specstrings.h
+FILE 2745 f:\sp\public\sdk\inc\basetsd.h
+FILE 2746 f:\sp\public\sdk\inc\stralign.h
+FILE 2747 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 2748 f:\sp\vctools\crt_bld\self_x86\crt\src\signal.h
+FILE 2749 f:\sp\public\sdk\inc\tvout.h
+FILE 2750 f:\sp\public\sdk\inc\winsvc.h
+FILE 2751 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 2752 f:\sp\vctools\crt_bld\self_x86\crt\src\winxfltr.c
+FILE 2753 f:\sp\public\sdk\inc\wingdi.h
+FILE 2754 f:\sp\public\sdk\inc\pshpack4.h
+FILE 2755 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 2756 f:\sp\public\sdk\inc\poppack.h
+FILE 2757 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 2758 f:\sp\public\sdk\inc\winnetwk.h
+FILE 2759 f:\sp\public\sdk\inc\imm.h
+FILE 2760 f:\sp\public\sdk\inc\ddbanned.h
+FILE 2761 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 2762 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 2763 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 2764 f:\sp\public\sdk\inc\windef.h
+FILE 2765 f:\sp\vctools\crt_bld\self_x86\crt\src\crtwrn.h
+FILE 2766 f:\sp\public\sdk\inc\pshpack1.h
+FILE 2767 f:\sp\public\sdk\inc\winver.h
+FILE 2768 f:\sp\public\sdk\inc\winnetwk.h
+FILE 2769 f:\sp\public\sdk\inc\imm.h
+FILE 2770 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 2771 f:\sp\public\sdk\inc\windef.h
+FILE 2772 f:\sp\public\sdk\inc\pshpack1.h
+FILE 2773 f:\sp\public\sdk\inc\winver.h
+FILE 2774 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 2775 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 2776 f:\sp\public\sdk\inc\winnt.h
+FILE 2777 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 2778 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 2779 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 2780 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 2781 f:\sp\public\sdk\inc\winreg.h
+FILE 2782 f:\sp\public\sdk\inc\winbase.h
+FILE 2783 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 2784 f:\sp\public\sdk\inc\winerror.h
+FILE 2785 f:\sp\vctools\crt_bld\self_x86\crt\src\winsig.c
+FILE 2786 f:\sp\public\sdk\inc\pshpack8.h
+FILE 2787 f:\sp\public\sdk\inc\reason.h
+FILE 2788 f:\sp\public\sdk\inc\wincon.h
+FILE 2789 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 2790 f:\sp\public\sdk\inc\pshpack2.h
+FILE 2791 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 2792 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 2793 f:\sp\public\sdk\inc\mcx.h
+FILE 2794 f:\sp\public\sdk\inc\winuser.h
+FILE 2795 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 2796 f:\sp\public\sdk\inc\winnls.h
+FILE 2797 f:\sp\public\sdk\inc\guiddef.h
+FILE 2798 f:\sp\public\sdk\inc\windows.h
+FILE 2799 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 2800 f:\sp\public\sdk\inc\specstrings.h
+FILE 2801 f:\sp\public\sdk\inc\ddbanned.h
+FILE 2802 f:\sp\public\sdk\inc\basetsd.h
+FILE 2803 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 2804 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 2805 f:\sp\public\sdk\inc\stralign.h
+FILE 2806 f:\sp\vctools\crt_bld\self_x86\crt\src\signal.h
+FILE 2807 f:\sp\public\sdk\inc\tvout.h
+FILE 2808 f:\sp\public\sdk\inc\winsvc.h
+FILE 2809 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 2810 f:\sp\public\sdk\inc\wingdi.h
+FILE 2811 f:\sp\vctools\crt_bld\self_x86\crt\src\float.h
+FILE 2812 f:\sp\vctools\crt_bld\self_x86\crt\src\crtwrn.h
+FILE 2813 f:\sp\public\sdk\inc\pshpack4.h
+FILE 2814 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 2815 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 2816 f:\sp\public\sdk\inc\poppack.h
+FILE 2817 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 2818 f:\sp\public\sdk\inc\wincon.h
+FILE 2819 f:\sp\public\sdk\inc\imm.h
+FILE 2820 f:\sp\public\sdk\inc\winbase.h
+FILE 2821 f:\sp\public\sdk\inc\wingdi.h
+FILE 2822 f:\sp\public\sdk\inc\winver.h
+FILE 2823 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 2824 f:\sp\public\sdk\inc\windows.h
+FILE 2825 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 2826 f:\sp\public\sdk\inc\pshpack2.h
+FILE 2827 f:\sp\public\sdk\inc\reason.h
+FILE 2828 f:\sp\vctools\crt_bld\self_x86\crt\src\w_str.c
+FILE 2829 f:\sp\public\sdk\inc\specstrings.h
+FILE 2830 f:\sp\public\sdk\inc\basetsd.h
+FILE 2831 f:\sp\public\sdk\inc\pshpack4.h
+FILE 2832 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 2833 f:\sp\public\sdk\inc\winnetwk.h
+FILE 2834 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 2835 f:\sp\public\sdk\inc\stralign.h
+FILE 2836 f:\sp\public\sdk\inc\poppack.h
+FILE 2837 f:\sp\public\sdk\inc\winsvc.h
+FILE 2838 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 2839 f:\sp\public\sdk\inc\windef.h
+FILE 2840 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 2841 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 2842 f:\sp\public\sdk\inc\winuser.h
+FILE 2843 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 2844 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 2845 f:\sp\public\sdk\inc\mcx.h
+FILE 2846 f:\sp\public\sdk\inc\pshpack8.h
+FILE 2847 f:\sp\public\sdk\inc\guiddef.h
+FILE 2848 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 2849 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 2850 f:\sp\public\sdk\inc\winnt.h
+FILE 2851 f:\sp\public\sdk\inc\winnls.h
+FILE 2852 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 2853 f:\sp\public\sdk\inc\pshpack1.h
+FILE 2854 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h
+FILE 2855 f:\sp\public\sdk\inc\winerror.h
+FILE 2856 f:\sp\public\sdk\inc\winreg.h
+FILE 2857 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 2858 f:\sp\public\sdk\inc\ddbanned.h
+FILE 2859 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 2860 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 2861 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 2862 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 2863 f:\sp\public\sdk\inc\tvout.h
+FILE 2864 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 2865 f:\sp\public\sdk\inc\wincon.h
+FILE 2866 f:\sp\public\sdk\inc\imm.h
+FILE 2867 f:\sp\public\sdk\inc\winbase.h
+FILE 2868 f:\sp\public\sdk\inc\wingdi.h
+FILE 2869 f:\sp\public\sdk\inc\winver.h
+FILE 2870 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 2871 f:\sp\public\sdk\inc\windows.h
+FILE 2872 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 2873 f:\sp\public\sdk\inc\pshpack2.h
+FILE 2874 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 2875 f:\sp\public\sdk\inc\reason.h
+FILE 2876 f:\sp\vctools\crt_bld\self_x86\crt\src\w_loc.c
+FILE 2877 f:\sp\public\sdk\inc\specstrings.h
+FILE 2878 f:\sp\public\sdk\inc\basetsd.h
+FILE 2879 f:\sp\public\sdk\inc\pshpack4.h
+FILE 2880 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h
+FILE 2881 f:\sp\public\sdk\inc\winnetwk.h
+FILE 2882 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 2883 f:\sp\public\sdk\inc\stralign.h
+FILE 2884 f:\sp\public\sdk\inc\poppack.h
+FILE 2885 f:\sp\public\sdk\inc\winsvc.h
+FILE 2886 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 2887 f:\sp\public\sdk\inc\windef.h
+FILE 2888 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 2889 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 2890 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 2891 f:\sp\public\sdk\inc\winuser.h
+FILE 2892 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 2893 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 2894 f:\sp\public\sdk\inc\mcx.h
+FILE 2895 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 2896 f:\sp\public\sdk\inc\pshpack8.h
+FILE 2897 f:\sp\public\sdk\inc\guiddef.h
+FILE 2898 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 2899 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 2900 f:\sp\public\sdk\inc\winnt.h
+FILE 2901 f:\sp\public\sdk\inc\winnls.h
+FILE 2902 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 2903 f:\sp\public\sdk\inc\pshpack1.h
+FILE 2904 f:\sp\public\sdk\inc\winerror.h
+FILE 2905 f:\sp\public\sdk\inc\winreg.h
+FILE 2906 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 2907 f:\sp\public\sdk\inc\ddbanned.h
+FILE 2908 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 2909 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 2910 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 2911 f:\sp\public\sdk\inc\tvout.h
+FILE 2912 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 2913 f:\sp\public\sdk\inc\poppack.h
+FILE 2914 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 2915 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 2916 f:\sp\public\sdk\inc\winnetwk.h
+FILE 2917 f:\sp\public\sdk\inc\imm.h
+FILE 2918 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 2919 f:\sp\public\sdk\inc\windef.h
+FILE 2920 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 2921 f:\sp\vctools\crt_bld\self_x86\crt\src\wchar.h
+FILE 2922 f:\sp\public\sdk\inc\pshpack1.h
+FILE 2923 f:\sp\public\sdk\inc\winver.h
+FILE 2924 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 2925 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h
+FILE 2926 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 2927 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 2928 f:\sp\public\sdk\inc\winnt.h
+FILE 2929 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 2930 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 2931 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 2932 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 2933 f:\sp\public\sdk\inc\winreg.h
+FILE 2934 f:\sp\vctools\crt_bld\self_x86\crt\src\convrtcp.c
+FILE 2935 f:\sp\public\sdk\inc\winbase.h
+FILE 2936 f:\sp\public\sdk\inc\winerror.h
+FILE 2937 f:\sp\public\sdk\inc\pshpack8.h
+FILE 2938 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 2939 f:\sp\public\sdk\inc\reason.h
+FILE 2940 f:\sp\public\sdk\inc\wincon.h
+FILE 2941 f:\sp\public\sdk\inc\ddbanned.h
+FILE 2942 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 2943 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 2944 f:\sp\public\sdk\inc\pshpack2.h
+FILE 2945 f:\sp\public\sdk\inc\mcx.h
+FILE 2946 f:\sp\public\sdk\inc\winuser.h
+FILE 2947 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 2948 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl
+FILE 2949 f:\sp\public\sdk\inc\winnls.h
+FILE 2950 f:\sp\public\sdk\inc\guiddef.h
+FILE 2951 f:\sp\public\sdk\inc\windows.h
+FILE 2952 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 2953 f:\sp\public\sdk\inc\specstrings.h
+FILE 2954 f:\sp\public\sdk\inc\basetsd.h
+FILE 2955 f:\sp\public\sdk\inc\stralign.h
+FILE 2956 f:\sp\public\sdk\inc\tvout.h
+FILE 2957 f:\sp\public\sdk\inc\winsvc.h
+FILE 2958 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 2959 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 2960 f:\sp\public\sdk\inc\wingdi.h
+FILE 2961 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 2962 f:\sp\public\sdk\inc\pshpack4.h
+FILE 2963 f:\sp\public\sdk\inc\winerror.h
+FILE 2964 f:\sp\public\sdk\inc\pshpack8.h
+FILE 2965 f:\sp\public\sdk\inc\reason.h
+FILE 2966 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h
+FILE 2967 f:\sp\public\sdk\inc\wincon.h
+FILE 2968 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h
+FILE 2969 f:\sp\public\sdk\inc\pshpack2.h
+FILE 2970 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 2971 f:\sp\public\sdk\inc\mcx.h
+FILE 2972 f:\sp\public\sdk\inc\winuser.h
+FILE 2973 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 2974 f:\sp\public\sdk\inc\winnls.h
+FILE 2975 f:\sp\public\sdk\inc\guiddef.h
+FILE 2976 f:\sp\public\sdk\inc\windows.h
+FILE 2977 f:\sp\vctools\crt_bld\self_x86\crt\src\mbctype.h
+FILE 2978 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 2979 f:\sp\public\sdk\inc\specstrings.h
+FILE 2980 f:\sp\public\sdk\inc\basetsd.h
+FILE 2981 f:\sp\public\sdk\inc\stralign.h
+FILE 2982 f:\sp\public\sdk\inc\tvout.h
+FILE 2983 f:\sp\public\sdk\inc\winsvc.h
+FILE 2984 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 2985 f:\sp\public\sdk\inc\wingdi.h
+FILE 2986 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 2987 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 2988 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 2989 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 2990 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 2991 f:\sp\public\sdk\inc\pshpack4.h
+FILE 2992 f:\sp\public\sdk\inc\poppack.h
+FILE 2993 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 2994 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 2995 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.c
+FILE 2996 f:\sp\public\sdk\inc\winnetwk.h
+FILE 2997 f:\sp\public\sdk\inc\imm.h
+FILE 2998 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 2999 f:\sp\public\sdk\inc\windef.h
+FILE 3000 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 3001 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 3002 f:\sp\public\sdk\inc\pshpack1.h
+FILE 3003 f:\sp\public\sdk\inc\ddbanned.h
+FILE 3004 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 3005 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 3006 f:\sp\public\sdk\inc\winver.h
+FILE 3007 f:\sp\public\sdk\inc\winnt.h
+FILE 3008 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 3009 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 3010 f:\sp\public\sdk\inc\winreg.h
+FILE 3011 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 3012 f:\sp\public\sdk\inc\winbase.h
+FILE 3013 f:\sp\public\sdk\inc\poppack.h
+FILE 3014 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h
+FILE 3015 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h
+FILE 3016 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 3017 f:\sp\public\sdk\inc\winnetwk.h
+FILE 3018 f:\sp\public\sdk\inc\imm.h
+FILE 3019 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 3020 f:\sp\public\sdk\inc\windef.h
+FILE 3021 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h
+FILE 3022 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 3023 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 3024 f:\sp\public\sdk\inc\pshpack1.h
+FILE 3025 f:\sp\public\sdk\inc\winver.h
+FILE 3026 f:\sp\public\sdk\inc\windows.h
+FILE 3027 f:\sp\public\sdk\inc\winnt.h
+FILE 3028 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 3029 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h
+FILE 3030 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 3031 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 3032 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 3033 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 3034 f:\sp\public\sdk\inc\winreg.h
+FILE 3035 f:\sp\public\sdk\inc\winbase.h
+FILE 3036 f:\sp\vctools\crt_bld\self_x86\crt\src\setenv.c
+FILE 3037 f:\sp\public\sdk\inc\winerror.h
+FILE 3038 f:\sp\public\sdk\inc\pshpack8.h
+FILE 3039 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 3040 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 3041 f:\sp\public\sdk\inc\reason.h
+FILE 3042 f:\sp\public\sdk\inc\wincon.h
+FILE 3043 f:\sp\public\sdk\inc\ddbanned.h
+FILE 3044 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 3045 f:\sp\public\sdk\inc\pshpack2.h
+FILE 3046 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 3047 f:\sp\public\sdk\inc\mcx.h
+FILE 3048 f:\sp\public\sdk\inc\winuser.h
+FILE 3049 f:\sp\public\sdk\inc\winnls.h
+FILE 3050 f:\sp\public\sdk\inc\guiddef.h
+FILE 3051 f:\sp\public\sdk\inc\specstrings.h
+FILE 3052 f:\sp\public\sdk\inc\basetsd.h
+FILE 3053 f:\sp\public\sdk\inc\stralign.h
+FILE 3054 f:\sp\public\sdk\inc\tvout.h
+FILE 3055 f:\sp\public\sdk\inc\winsvc.h
+FILE 3056 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 3057 f:\sp\public\sdk\inc\wingdi.h
+FILE 3058 f:\sp\public\sdk\inc\pshpack4.h
+FILE 3059 f:\sp\public\sdk\inc\poppack.h
+FILE 3060 f:\sp\public\sdk\inc\winnetwk.h
+FILE 3061 f:\sp\public\sdk\inc\imm.h
+FILE 3062 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 3063 f:\sp\public\sdk\inc\windef.h
+FILE 3064 f:\sp\public\sdk\inc\pshpack1.h
+FILE 3065 f:\sp\public\sdk\inc\winver.h
+FILE 3066 f:\sp\public\sdk\inc\windows.h
+FILE 3067 f:\sp\public\sdk\inc\winnt.h
+FILE 3068 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 3069 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 3070 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 3071 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 3072 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 3073 f:\sp\public\sdk\inc\winreg.h
+FILE 3074 f:\sp\public\sdk\inc\winbase.h
+FILE 3075 f:\sp\vctools\crt_bld\self_x86\crt\src\rand_s.c
+FILE 3076 f:\sp\public\sdk\inc\winerror.h
+FILE 3077 f:\sp\public\sdk\inc\pshpack8.h
+FILE 3078 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 3079 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 3080 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 3081 f:\sp\public\sdk\inc\reason.h
+FILE 3082 f:\sp\public\sdk\inc\wincon.h
+FILE 3083 f:\sp\public\sdk\inc\ddbanned.h
+FILE 3084 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 3085 f:\sp\public\sdk\inc\pshpack2.h
+FILE 3086 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 3087 f:\sp\public\sdk\inc\mcx.h
+FILE 3088 f:\sp\public\sdk\inc\winuser.h
+FILE 3089 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 3090 f:\sp\public\sdk\inc\winnls.h
+FILE 3091 f:\sp\public\sdk\inc\guiddef.h
+FILE 3092 f:\sp\public\sdk\inc\specstrings.h
+FILE 3093 f:\sp\public\sdk\inc\basetsd.h
+FILE 3094 f:\sp\public\sdk\inc\stralign.h
+FILE 3095 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 3096 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 3097 f:\sp\public\sdk\inc\tvout.h
+FILE 3098 f:\sp\public\sdk\inc\winsvc.h
+FILE 3099 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 3100 f:\sp\public\sdk\inc\wingdi.h
+FILE 3101 f:\sp\public\sdk\inc\pshpack4.h
+FILE 3102 f:\sp\public\sdk\inc\poppack.h
+FILE 3103 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h
+FILE 3104 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 3105 f:\sp\public\sdk\inc\winnetwk.h
+FILE 3106 f:\sp\public\sdk\inc\imm.h
+FILE 3107 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 3108 f:\sp\public\sdk\inc\windef.h
+FILE 3109 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 3110 f:\sp\public\sdk\inc\pshpack1.h
+FILE 3111 f:\sp\public\sdk\inc\winver.h
+FILE 3112 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 3113 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 3114 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 3115 f:\sp\public\sdk\inc\winnt.h
+FILE 3116 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 3117 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 3118 f:\sp\public\sdk\inc\winreg.h
+FILE 3119 f:\sp\vctools\crt_bld\self_x86\crt\src\purevirt.c
+FILE 3120 f:\sp\public\sdk\inc\winbase.h
+FILE 3121 f:\sp\public\sdk\inc\winerror.h
+FILE 3122 f:\sp\public\sdk\inc\pshpack8.h
+FILE 3123 f:\sp\public\sdk\inc\reason.h
+FILE 3124 f:\sp\public\sdk\inc\wincon.h
+FILE 3125 f:\sp\public\sdk\inc\ddbanned.h
+FILE 3126 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 3127 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 3128 f:\sp\public\sdk\inc\pshpack2.h
+FILE 3129 f:\sp\public\sdk\inc\mcx.h
+FILE 3130 f:\sp\public\sdk\inc\winuser.h
+FILE 3131 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 3132 f:\sp\public\sdk\inc\winnls.h
+FILE 3133 f:\sp\public\sdk\inc\guiddef.h
+FILE 3134 f:\sp\public\sdk\inc\windows.h
+FILE 3135 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 3136 f:\sp\public\sdk\inc\specstrings.h
+FILE 3137 f:\sp\public\sdk\inc\basetsd.h
+FILE 3138 f:\sp\public\sdk\inc\stralign.h
+FILE 3139 f:\sp\public\sdk\inc\tvout.h
+FILE 3140 f:\sp\public\sdk\inc\winsvc.h
+FILE 3141 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 3142 f:\sp\public\sdk\inc\wingdi.h
+FILE 3143 f:\sp\public\sdk\inc\pshpack4.h
+FILE 3144 f:\sp\public\sdk\inc\poppack.h
+FILE 3145 f:\sp\public\sdk\inc\winnetwk.h
+FILE 3146 f:\sp\public\sdk\inc\imm.h
+FILE 3147 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 3148 f:\sp\public\sdk\inc\windef.h
+FILE 3149 f:\sp\public\sdk\inc\pshpack1.h
+FILE 3150 f:\sp\public\sdk\inc\winver.h
+FILE 3151 f:\sp\public\sdk\inc\windows.h
+FILE 3152 f:\sp\public\sdk\inc\winnt.h
+FILE 3153 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 3154 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 3155 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 3156 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 3157 f:\sp\public\sdk\inc\winreg.h
+FILE 3158 f:\sp\public\sdk\inc\winbase.h
+FILE 3159 f:\sp\vctools\crt_bld\self_x86\crt\src\pesect.c
+FILE 3160 f:\sp\public\sdk\inc\winerror.h
+FILE 3161 f:\sp\public\sdk\inc\pshpack8.h
+FILE 3162 f:\sp\public\sdk\inc\reason.h
+FILE 3163 f:\sp\public\sdk\inc\wincon.h
+FILE 3164 f:\sp\public\sdk\inc\ddbanned.h
+FILE 3165 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 3166 f:\sp\public\sdk\inc\pshpack2.h
+FILE 3167 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 3168 f:\sp\public\sdk\inc\mcx.h
+FILE 3169 f:\sp\public\sdk\inc\winuser.h
+FILE 3170 f:\sp\public\sdk\inc\winnls.h
+FILE 3171 f:\sp\public\sdk\inc\guiddef.h
+FILE 3172 f:\sp\public\sdk\inc\specstrings.h
+FILE 3173 f:\sp\public\sdk\inc\basetsd.h
+FILE 3174 f:\sp\public\sdk\inc\stralign.h
+FILE 3175 f:\sp\public\sdk\inc\tvout.h
+FILE 3176 f:\sp\public\sdk\inc\winsvc.h
+FILE 3177 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 3178 f:\sp\public\sdk\inc\wingdi.h
+FILE 3179 f:\sp\public\sdk\inc\pshpack4.h
+FILE 3180 f:\sp\public\sdk\inc\winerror.h
+FILE 3181 f:\sp\public\sdk\inc\pshpack1.h
+FILE 3182 f:\sp\public\sdk\inc\pshpack8.h
+FILE 3183 f:\sp\public\sdk\inc\winver.h
+FILE 3184 f:\sp\public\sdk\inc\pshpack2.h
+FILE 3185 f:\sp\public\sdk\inc\winreg.h
+FILE 3186 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 3187 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 3188 f:\sp\public\sdk\inc\guiddef.h
+FILE 3189 f:\sp\public\sdk\inc\windows.h
+FILE 3190 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 3191 f:\sp\vctools\crt_bld\self_x86\crt\src\mbctype.h
+FILE 3192 f:\sp\public\sdk\inc\specstrings.h
+FILE 3193 f:\sp\public\sdk\inc\basetsd.h
+FILE 3194 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 3195 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 3196 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 3197 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 3198 f:\sp\public\sdk\inc\pshpack4.h
+FILE 3199 f:\sp\public\sdk\inc\reason.h
+FILE 3200 f:\sp\public\sdk\inc\wincon.h
+FILE 3201 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 3202 f:\sp\public\sdk\inc\poppack.h
+FILE 3203 f:\sp\public\sdk\inc\mcx.h
+FILE 3204 f:\sp\public\sdk\inc\winuser.h
+FILE 3205 f:\sp\public\sdk\inc\winnls.h
+FILE 3206 f:\sp\vctools\crt_bld\self_x86\crt\src\nlsdata2.c
+FILE 3207 f:\sp\public\sdk\inc\stralign.h
+FILE 3208 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 3209 f:\sp\public\sdk\inc\windef.h
+FILE 3210 f:\sp\public\sdk\inc\tvout.h
+FILE 3211 f:\sp\public\sdk\inc\winsvc.h
+FILE 3212 f:\sp\public\sdk\inc\wingdi.h
+FILE 3213 f:\sp\public\sdk\inc\ddbanned.h
+FILE 3214 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 3215 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 3216 f:\sp\public\sdk\inc\winnt.h
+FILE 3217 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 3218 f:\sp\public\sdk\inc\winnetwk.h
+FILE 3219 f:\sp\public\sdk\inc\imm.h
+FILE 3220 f:\sp\public\sdk\inc\winbase.h
+FILE 3221 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 3222 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 3223 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 3224 f:\sp\vctools\crt_bld\self_x86\crt\src\nlsdata1.c
+FILE 3225 f:\sp\public\sdk\inc\ddbanned.h
+FILE 3226 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 3227 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 3228 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 3229 f:\sp\vctools\crt_bld\self_x86\crt\src\nlsint.h
+FILE 3230 f:\sp\public\sdk\inc\reason.h
+FILE 3231 f:\sp\public\sdk\inc\wincon.h
+FILE 3232 f:\sp\public\sdk\inc\pshpack2.h
+FILE 3233 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 3234 f:\sp\public\sdk\inc\mcx.h
+FILE 3235 f:\sp\public\sdk\inc\winuser.h
+FILE 3236 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 3237 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h
+FILE 3238 f:\sp\public\sdk\inc\winnls.h
+FILE 3239 f:\sp\public\sdk\inc\guiddef.h
+FILE 3240 f:\sp\public\sdk\inc\windows.h
+FILE 3241 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 3242 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 3243 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 3244 f:\sp\public\sdk\inc\specstrings.h
+FILE 3245 f:\sp\public\sdk\inc\basetsd.h
+FILE 3246 f:\sp\public\sdk\inc\stralign.h
+FILE 3247 f:\sp\public\sdk\inc\tvout.h
+FILE 3248 f:\sp\public\sdk\inc\winsvc.h
+FILE 3249 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 3250 f:\sp\public\sdk\inc\wingdi.h
+FILE 3251 f:\sp\public\sdk\inc\pshpack4.h
+FILE 3252 f:\sp\public\sdk\inc\poppack.h
+FILE 3253 f:\sp\vctools\crt_bld\self_x86\crt\src\sect_attribs.h
+FILE 3254 f:\sp\public\sdk\inc\winnetwk.h
+FILE 3255 f:\sp\public\sdk\inc\imm.h
+FILE 3256 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 3257 f:\sp\public\sdk\inc\windef.h
+FILE 3258 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 3259 f:\sp\vctools\crt_bld\self_x86\crt\src\onexit.c
+FILE 3260 f:\sp\public\sdk\inc\pshpack1.h
+FILE 3261 f:\sp\public\sdk\inc\winver.h
+FILE 3262 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 3263 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 3264 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 3265 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 3266 f:\sp\public\sdk\inc\winnt.h
+FILE 3267 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 3268 f:\sp\public\sdk\inc\ddbanned.h
+FILE 3269 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 3270 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 3271 f:\sp\public\sdk\inc\winreg.h
+FILE 3272 f:\sp\public\sdk\inc\winbase.h
+FILE 3273 f:\sp\public\sdk\inc\winerror.h
+FILE 3274 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 3275 f:\sp\public\sdk\inc\pshpack8.h
+FILE 3276 f:\sp\public\sdk\inc\winbase.h
+FILE 3277 f:\sp\public\sdk\inc\winerror.h
+FILE 3278 f:\sp\public\sdk\inc\pshpack1.h
+FILE 3279 f:\sp\public\sdk\inc\pshpack8.h
+FILE 3280 f:\sp\public\sdk\inc\winver.h
+FILE 3281 f:\sp\public\sdk\inc\pshpack2.h
+FILE 3282 f:\sp\public\sdk\inc\winreg.h
+FILE 3283 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 3284 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 3285 f:\sp\public\sdk\inc\guiddef.h
+FILE 3286 f:\sp\public\sdk\inc\windows.h
+FILE 3287 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 3288 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 3289 f:\sp\public\sdk\inc\specstrings.h
+FILE 3290 f:\sp\public\sdk\inc\basetsd.h
+FILE 3291 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 3292 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 3293 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 3294 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 3295 f:\sp\public\sdk\inc\pshpack4.h
+FILE 3296 f:\sp\public\sdk\inc\reason.h
+FILE 3297 f:\sp\public\sdk\inc\wincon.h
+FILE 3298 f:\sp\public\sdk\inc\poppack.h
+FILE 3299 f:\sp\public\sdk\inc\mcx.h
+FILE 3300 f:\sp\public\sdk\inc\winuser.h
+FILE 3301 f:\sp\public\sdk\inc\winnls.h
+FILE 3302 f:\sp\vctools\crt_bld\self_x86\crt\src\lconv.c
+FILE 3303 f:\sp\public\sdk\inc\stralign.h
+FILE 3304 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 3305 f:\sp\public\sdk\inc\windef.h
+FILE 3306 f:\sp\public\sdk\inc\tvout.h
+FILE 3307 f:\sp\public\sdk\inc\winsvc.h
+FILE 3308 f:\sp\public\sdk\inc\wingdi.h
+FILE 3309 f:\sp\public\sdk\inc\ddbanned.h
+FILE 3310 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 3311 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 3312 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 3313 f:\sp\public\sdk\inc\winnt.h
+FILE 3314 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 3315 f:\sp\public\sdk\inc\winnetwk.h
+FILE 3316 f:\sp\public\sdk\inc\imm.h
+FILE 3317 f:\sp\public\sdk\inc\guiddef.h
+FILE 3318 f:\sp\public\sdk\inc\winnt.h
+FILE 3319 f:\sp\public\sdk\inc\winnls.h
+FILE 3320 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 3321 f:\sp\public\sdk\inc\pshpack1.h
+FILE 3322 f:\sp\public\sdk\inc\winerror.h
+FILE 3323 f:\sp\public\sdk\inc\winreg.h
+FILE 3324 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 3325 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h
+FILE 3326 f:\sp\public\sdk\inc\tvout.h
+FILE 3327 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 3328 f:\sp\vctools\crt_bld\self_x86\crt\src\invarg.c
+FILE 3329 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 3330 f:\sp\public\sdk\inc\wincon.h
+FILE 3331 f:\sp\public\sdk\inc\imm.h
+FILE 3332 f:\sp\public\sdk\inc\winbase.h
+FILE 3333 f:\sp\public\sdk\inc\wingdi.h
+FILE 3334 f:\sp\public\sdk\inc\winver.h
+FILE 3335 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 3336 f:\sp\public\sdk\inc\windows.h
+FILE 3337 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 3338 f:\sp\public\sdk\inc\pshpack2.h
+FILE 3339 f:\sp\public\sdk\inc\reason.h
+FILE 3340 f:\sp\vctools\crt_bld\self_x86\crt\src\sect_attribs.h
+FILE 3341 f:\sp\public\sdk\inc\specstrings.h
+FILE 3342 f:\sp\public\sdk\inc\basetsd.h
+FILE 3343 f:\sp\public\sdk\inc\pshpack4.h
+FILE 3344 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 3345 f:\sp\public\sdk\inc\winnetwk.h
+FILE 3346 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 3347 f:\sp\public\sdk\inc\stralign.h
+FILE 3348 f:\sp\public\sdk\inc\poppack.h
+FILE 3349 f:\sp\public\sdk\inc\winsvc.h
+FILE 3350 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 3351 f:\sp\public\sdk\inc\windef.h
+FILE 3352 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 3353 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 3354 f:\sp\public\sdk\inc\winuser.h
+FILE 3355 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 3356 f:\sp\public\sdk\inc\ddbanned.h
+FILE 3357 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 3358 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 3359 f:\sp\public\sdk\inc\mcx.h
+FILE 3360 f:\sp\public\sdk\inc\pshpack8.h
+FILE 3361 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 3362 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 3363 f:\sp\public\sdk\inc\pshpack4.h
+FILE 3364 f:\sp\public\sdk\inc\poppack.h
+FILE 3365 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 3366 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 3367 f:\sp\public\sdk\inc\winnetwk.h
+FILE 3368 f:\sp\public\sdk\inc\imm.h
+FILE 3369 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 3370 f:\sp\public\sdk\inc\windef.h
+FILE 3371 f:\sp\public\sdk\inc\pshpack1.h
+FILE 3372 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 3373 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 3374 f:\sp\public\sdk\inc\winver.h
+FILE 3375 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 3376 f:\sp\public\sdk\inc\winnt.h
+FILE 3377 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 3378 f:\sp\public\sdk\inc\winreg.h
+FILE 3379 f:\sp\vctools\crt_bld\self_x86\crt\src\inittime.c
+FILE 3380 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 3381 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 3382 f:\sp\public\sdk\inc\winbase.h
+FILE 3383 f:\sp\public\sdk\inc\winerror.h
+FILE 3384 f:\sp\public\sdk\inc\pshpack8.h
+FILE 3385 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 3386 f:\sp\public\sdk\inc\reason.h
+FILE 3387 f:\sp\public\sdk\inc\ddbanned.h
+FILE 3388 f:\sp\public\sdk\inc\wincon.h
+FILE 3389 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 3390 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 3391 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 3392 f:\sp\public\sdk\inc\pshpack2.h
+FILE 3393 f:\sp\public\sdk\inc\mcx.h
+FILE 3394 f:\sp\public\sdk\inc\winuser.h
+FILE 3395 f:\sp\public\sdk\inc\winnls.h
+FILE 3396 f:\sp\public\sdk\inc\guiddef.h
+FILE 3397 f:\sp\public\sdk\inc\stralign.h
+FILE 3398 f:\sp\public\sdk\inc\specstrings.h
+FILE 3399 f:\sp\public\sdk\inc\basetsd.h
+FILE 3400 f:\sp\public\sdk\inc\windows.h
+FILE 3401 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 3402 f:\sp\public\sdk\inc\tvout.h
+FILE 3403 f:\sp\public\sdk\inc\winsvc.h
+FILE 3404 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 3405 f:\sp\public\sdk\inc\wingdi.h
+FILE 3406 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 3407 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 3408 f:\sp\public\sdk\inc\pshpack4.h
+FILE 3409 f:\sp\public\sdk\inc\poppack.h
+FILE 3410 f:\sp\public\sdk\inc\winnt.h
+FILE 3411 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 3412 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 3413 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 3414 f:\sp\public\sdk\inc\winnetwk.h
+FILE 3415 f:\sp\public\sdk\inc\imm.h
+FILE 3416 f:\sp\public\sdk\inc\pshpack1.h
+FILE 3417 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 3418 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 3419 f:\sp\public\sdk\inc\winver.h
+FILE 3420 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 3421 f:\sp\public\sdk\inc\guiddef.h
+FILE 3422 f:\sp\public\sdk\inc\specstrings.h
+FILE 3423 f:\sp\public\sdk\inc\basetsd.h
+FILE 3424 f:\sp\public\sdk\inc\windows.h
+FILE 3425 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 3426 f:\sp\public\sdk\inc\winreg.h
+FILE 3427 f:\sp\vctools\crt_bld\self_x86\crt\src\initnum.c
+FILE 3428 f:\sp\vctools\crt_bld\self_x86\crt\src\nlsint.h
+FILE 3429 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 3430 f:\sp\public\sdk\inc\winbase.h
+FILE 3431 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 3432 f:\sp\public\sdk\inc\winerror.h
+FILE 3433 f:\sp\public\sdk\inc\pshpack8.h
+FILE 3434 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 3435 f:\sp\public\sdk\inc\reason.h
+FILE 3436 f:\sp\public\sdk\inc\ddbanned.h
+FILE 3437 f:\sp\public\sdk\inc\wincon.h
+FILE 3438 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 3439 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 3440 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 3441 f:\sp\public\sdk\inc\pshpack2.h
+FILE 3442 f:\sp\public\sdk\inc\mcx.h
+FILE 3443 f:\sp\public\sdk\inc\winuser.h
+FILE 3444 f:\sp\public\sdk\inc\winnls.h
+FILE 3445 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 3446 f:\sp\public\sdk\inc\windef.h
+FILE 3447 f:\sp\public\sdk\inc\stralign.h
+FILE 3448 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 3449 f:\sp\public\sdk\inc\tvout.h
+FILE 3450 f:\sp\public\sdk\inc\winsvc.h
+FILE 3451 f:\sp\public\sdk\inc\wingdi.h
+FILE 3452 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 3453 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 3454 f:\sp\public\sdk\inc\pshpack4.h
+FILE 3455 f:\sp\public\sdk\inc\poppack.h
+FILE 3456 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 3457 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 3458 f:\sp\public\sdk\inc\winnetwk.h
+FILE 3459 f:\sp\public\sdk\inc\imm.h
+FILE 3460 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 3461 f:\sp\public\sdk\inc\windef.h
+FILE 3462 f:\sp\public\sdk\inc\pshpack1.h
+FILE 3463 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 3464 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 3465 f:\sp\public\sdk\inc\winver.h
+FILE 3466 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 3467 f:\sp\public\sdk\inc\winnt.h
+FILE 3468 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 3469 f:\sp\public\sdk\inc\winreg.h
+FILE 3470 f:\sp\vctools\crt_bld\self_x86\crt\src\initmon.c
+FILE 3471 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 3472 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 3473 f:\sp\public\sdk\inc\winbase.h
+FILE 3474 f:\sp\public\sdk\inc\winerror.h
+FILE 3475 f:\sp\public\sdk\inc\pshpack8.h
+FILE 3476 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 3477 f:\sp\public\sdk\inc\reason.h
+FILE 3478 f:\sp\public\sdk\inc\ddbanned.h
+FILE 3479 f:\sp\public\sdk\inc\wincon.h
+FILE 3480 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 3481 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 3482 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 3483 f:\sp\public\sdk\inc\pshpack2.h
+FILE 3484 f:\sp\public\sdk\inc\mcx.h
+FILE 3485 f:\sp\public\sdk\inc\winuser.h
+FILE 3486 f:\sp\public\sdk\inc\winnls.h
+FILE 3487 f:\sp\public\sdk\inc\guiddef.h
+FILE 3488 f:\sp\public\sdk\inc\stralign.h
+FILE 3489 f:\sp\public\sdk\inc\specstrings.h
+FILE 3490 f:\sp\public\sdk\inc\basetsd.h
+FILE 3491 f:\sp\public\sdk\inc\windows.h
+FILE 3492 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 3493 f:\sp\public\sdk\inc\tvout.h
+FILE 3494 f:\sp\public\sdk\inc\winsvc.h
+FILE 3495 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 3496 f:\sp\public\sdk\inc\wingdi.h
+FILE 3497 f:\sp\public\sdk\inc\winbase.h
+FILE 3498 f:\sp\public\sdk\inc\winerror.h
+FILE 3499 f:\sp\public\sdk\inc\pshpack1.h
+FILE 3500 f:\sp\public\sdk\inc\pshpack8.h
+FILE 3501 f:\sp\public\sdk\inc\winver.h
+FILE 3502 f:\sp\public\sdk\inc\pshpack2.h
+FILE 3503 f:\sp\public\sdk\inc\winreg.h
+FILE 3504 f:\sp\public\sdk\inc\guiddef.h
+FILE 3505 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h
+FILE 3506 f:\sp\public\sdk\inc\specstrings.h
+FILE 3507 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 3508 f:\sp\public\sdk\inc\basetsd.h
+FILE 3509 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 3510 f:\sp\public\sdk\inc\windows.h
+FILE 3511 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 3512 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 3513 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 3514 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 3515 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 3516 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 3517 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 3518 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 3519 f:\sp\public\sdk\inc\pshpack4.h
+FILE 3520 f:\sp\public\sdk\inc\reason.h
+FILE 3521 f:\sp\public\sdk\inc\wincon.h
+FILE 3522 f:\sp\public\sdk\inc\poppack.h
+FILE 3523 f:\sp\vctools\crt_bld\self_x86\crt\src\inithelp.c
+FILE 3524 f:\sp\public\sdk\inc\mcx.h
+FILE 3525 f:\sp\public\sdk\inc\winuser.h
+FILE 3526 f:\sp\public\sdk\inc\winnls.h
+FILE 3527 f:\sp\public\sdk\inc\stralign.h
+FILE 3528 f:\sp\public\sdk\inc\tvout.h
+FILE 3529 f:\sp\public\sdk\inc\winsvc.h
+FILE 3530 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 3531 f:\sp\public\sdk\inc\wingdi.h
+FILE 3532 f:\sp\public\sdk\inc\windef.h
+FILE 3533 f:\sp\public\sdk\inc\ddbanned.h
+FILE 3534 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 3535 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 3536 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 3537 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 3538 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 3539 f:\sp\public\sdk\inc\winnetwk.h
+FILE 3540 f:\sp\public\sdk\inc\imm.h
+FILE 3541 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 3542 f:\sp\public\sdk\inc\winnt.h
+FILE 3543 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 3544 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 3545 f:\sp\public\sdk\inc\pshpack4.h
+FILE 3546 f:\sp\public\sdk\inc\poppack.h
+FILE 3547 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 3548 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 3549 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 3550 f:\sp\public\sdk\inc\winnetwk.h
+FILE 3551 f:\sp\public\sdk\inc\imm.h
+FILE 3552 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 3553 f:\sp\public\sdk\inc\windef.h
+FILE 3554 f:\sp\public\sdk\inc\pshpack1.h
+FILE 3555 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 3556 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 3557 f:\sp\public\sdk\inc\winver.h
+FILE 3558 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 3559 f:\sp\public\sdk\inc\winnt.h
+FILE 3560 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 3561 f:\sp\public\sdk\inc\winreg.h
+FILE 3562 f:\sp\vctools\crt_bld\self_x86\crt\src\initctyp.c
+FILE 3563 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h
+FILE 3564 f:\sp\public\sdk\inc\winbase.h
+FILE 3565 f:\sp\public\sdk\inc\winerror.h
+FILE 3566 f:\sp\public\sdk\inc\pshpack8.h
+FILE 3567 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 3568 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 3569 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 3570 f:\sp\public\sdk\inc\reason.h
+FILE 3571 f:\sp\public\sdk\inc\ddbanned.h
+FILE 3572 f:\sp\public\sdk\inc\wincon.h
+FILE 3573 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 3574 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 3575 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 3576 f:\sp\public\sdk\inc\pshpack2.h
+FILE 3577 f:\sp\public\sdk\inc\mcx.h
+FILE 3578 f:\sp\public\sdk\inc\winuser.h
+FILE 3579 f:\sp\public\sdk\inc\winnls.h
+FILE 3580 f:\sp\public\sdk\inc\guiddef.h
+FILE 3581 f:\sp\public\sdk\inc\stralign.h
+FILE 3582 f:\sp\public\sdk\inc\specstrings.h
+FILE 3583 f:\sp\public\sdk\inc\basetsd.h
+FILE 3584 f:\sp\public\sdk\inc\windows.h
+FILE 3585 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 3586 f:\sp\public\sdk\inc\tvout.h
+FILE 3587 f:\sp\public\sdk\inc\winsvc.h
+FILE 3588 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 3589 f:\sp\public\sdk\inc\wingdi.h
+FILE 3590 f:\sp\public\sdk\inc\poppack.h
+FILE 3591 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h
+FILE 3592 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 3593 f:\sp\public\sdk\inc\winnetwk.h
+FILE 3594 f:\sp\public\sdk\inc\imm.h
+FILE 3595 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 3596 f:\sp\public\sdk\inc\windef.h
+FILE 3597 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 3598 f:\sp\public\sdk\inc\pshpack1.h
+FILE 3599 f:\sp\public\sdk\inc\winver.h
+FILE 3600 f:\sp\public\sdk\inc\windows.h
+FILE 3601 f:\sp\public\sdk\inc\winnt.h
+FILE 3602 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 3603 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 3604 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 3605 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 3606 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 3607 f:\sp\public\sdk\inc\winreg.h
+FILE 3608 f:\sp\public\sdk\inc\winbase.h
+FILE 3609 f:\sp\vctools\crt_bld\self_x86\crt\src\initcrit.c
+FILE 3610 f:\sp\public\sdk\inc\winerror.h
+FILE 3611 f:\sp\public\sdk\inc\pshpack8.h
+FILE 3612 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 3613 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 3614 f:\sp\public\sdk\inc\reason.h
+FILE 3615 f:\sp\public\sdk\inc\wincon.h
+FILE 3616 f:\sp\public\sdk\inc\ddbanned.h
+FILE 3617 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 3618 f:\sp\public\sdk\inc\pshpack2.h
+FILE 3619 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 3620 f:\sp\public\sdk\inc\mcx.h
+FILE 3621 f:\sp\public\sdk\inc\winuser.h
+FILE 3622 f:\sp\public\sdk\inc\winnls.h
+FILE 3623 f:\sp\public\sdk\inc\guiddef.h
+FILE 3624 f:\sp\public\sdk\inc\specstrings.h
+FILE 3625 f:\sp\public\sdk\inc\basetsd.h
+FILE 3626 f:\sp\public\sdk\inc\stralign.h
+FILE 3627 f:\sp\public\sdk\inc\tvout.h
+FILE 3628 f:\sp\public\sdk\inc\winsvc.h
+FILE 3629 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 3630 f:\sp\public\sdk\inc\wingdi.h
+FILE 3631 f:\sp\public\sdk\inc\pshpack4.h
+FILE 3632 f:\sp\public\sdk\inc\poppack.h
+FILE 3633 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 3634 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 3635 f:\sp\public\sdk\inc\winnetwk.h
+FILE 3636 f:\sp\public\sdk\inc\imm.h
+FILE 3637 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 3638 f:\sp\public\sdk\inc\windef.h
+FILE 3639 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 3640 f:\sp\public\sdk\inc\pshpack1.h
+FILE 3641 f:\sp\public\sdk\inc\winver.h
+FILE 3642 f:\sp\public\sdk\inc\windows.h
+FILE 3643 f:\sp\public\sdk\inc\winnt.h
+FILE 3644 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 3645 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 3646 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 3647 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 3648 f:\sp\public\sdk\inc\winreg.h
+FILE 3649 f:\sp\public\sdk\inc\winbase.h
+FILE 3650 f:\sp\vctools\crt_bld\self_x86\crt\src\initcoll.c
+FILE 3651 f:\sp\public\sdk\inc\winerror.h
+FILE 3652 f:\sp\public\sdk\inc\pshpack8.h
+FILE 3653 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 3654 f:\sp\public\sdk\inc\reason.h
+FILE 3655 f:\sp\public\sdk\inc\wincon.h
+FILE 3656 f:\sp\public\sdk\inc\ddbanned.h
+FILE 3657 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 3658 f:\sp\public\sdk\inc\pshpack2.h
+FILE 3659 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 3660 f:\sp\public\sdk\inc\mcx.h
+FILE 3661 f:\sp\public\sdk\inc\winuser.h
+FILE 3662 f:\sp\public\sdk\inc\winnls.h
+FILE 3663 f:\sp\public\sdk\inc\guiddef.h
+FILE 3664 f:\sp\public\sdk\inc\specstrings.h
+FILE 3665 f:\sp\public\sdk\inc\basetsd.h
+FILE 3666 f:\sp\public\sdk\inc\stralign.h
+FILE 3667 f:\sp\public\sdk\inc\tvout.h
+FILE 3668 f:\sp\public\sdk\inc\winsvc.h
+FILE 3669 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 3670 f:\sp\public\sdk\inc\wingdi.h
+FILE 3671 f:\sp\public\sdk\inc\pshpack4.h
+FILE 3672 f:\sp\public\sdk\inc\poppack.h
+FILE 3673 f:\sp\public\sdk\inc\winnetwk.h
+FILE 3674 f:\sp\public\sdk\inc\imm.h
+FILE 3675 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 3676 f:\sp\public\sdk\inc\windef.h
+FILE 3677 f:\binaries.x86ret\vcboot\inc\mm3dnow.h
+FILE 3678 f:\sp\public\sdk\inc\pshpack1.h
+FILE 3679 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 3680 f:\sp\public\sdk\inc\winver.h
+FILE 3681 f:\sp\public\sdk\inc\windows.h
+FILE 3682 f:\sp\public\sdk\inc\winnt.h
+FILE 3683 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 3684 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 3685 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 3686 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 3687 f:\sp\public\sdk\inc\winreg.h
+FILE 3688 f:\sp\public\sdk\inc\winbase.h
+FILE 3689 f:\sp\vctools\crt_bld\self_x86\crt\src\gs_support.c
+FILE 3690 f:\sp\public\sdk\inc\winerror.h
+FILE 3691 f:\sp\public\sdk\inc\pshpack8.h
+FILE 3692 f:\sp\vctools\crt_bld\self_x86\crt\src\intrin.h
+FILE 3693 f:\sp\vctools\crt_bld\self_x86\crt\src\setjmp.h
+FILE 3694 f:\sp\public\sdk\inc\reason.h
+FILE 3695 f:\sp\public\sdk\inc\wincon.h
+FILE 3696 f:\sp\public\sdk\inc\ddbanned.h
+FILE 3697 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 3698 f:\sp\public\sdk\inc\pshpack2.h
+FILE 3699 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 3700 f:\sp\public\sdk\inc\mcx.h
+FILE 3701 f:\sp\public\sdk\inc\winuser.h
+FILE 3702 f:\sp\public\sdk\inc\winnls.h
+FILE 3703 f:\sp\public\sdk\inc\guiddef.h
+FILE 3704 f:\sp\public\sdk\inc\specstrings.h
+FILE 3705 f:\sp\public\sdk\inc\basetsd.h
+FILE 3706 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 3707 f:\sp\public\sdk\inc\stralign.h
+FILE 3708 f:\sp\public\sdk\inc\tvout.h
+FILE 3709 f:\sp\public\sdk\inc\winsvc.h
+FILE 3710 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 3711 f:\sp\public\sdk\inc\wingdi.h
+FILE 3712 f:\binaries.x86ret\vcboot\inc\emmintrin.h
+FILE 3713 f:\binaries.x86ret\vcboot\inc\xmmintrin.h
+FILE 3714 f:\binaries.x86ret\vcboot\inc\mmintrin.h
+FILE 3715 f:\sp\public\sdk\inc\pshpack4.h
+FILE 3716 f:\sp\public\sdk\inc\poppack.h
+FILE 3717 f:\sp\public\sdk\inc\winnetwk.h
+FILE 3718 f:\sp\public\sdk\inc\imm.h
+FILE 3719 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 3720 f:\sp\public\sdk\inc\windef.h
+FILE 3721 f:\sp\public\sdk\inc\pshpack1.h
+FILE 3722 f:\sp\public\sdk\inc\winver.h
+FILE 3723 f:\sp\public\sdk\inc\windows.h
+FILE 3724 f:\sp\public\sdk\inc\winnt.h
+FILE 3725 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 3726 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 3727 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 3728 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 3729 f:\sp\public\sdk\inc\winreg.h
+FILE 3730 f:\sp\public\sdk\inc\winbase.h
+FILE 3731 f:\sp\vctools\crt_bld\self_x86\crt\src\gs_report.c
+FILE 3732 f:\sp\public\sdk\inc\winerror.h
+FILE 3733 f:\sp\public\sdk\inc\pshpack8.h
+FILE 3734 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 3735 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 3736 f:\sp\public\sdk\inc\reason.h
+FILE 3737 f:\sp\public\sdk\inc\wincon.h
+FILE 3738 f:\sp\public\sdk\inc\ddbanned.h
+FILE 3739 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 3740 f:\sp\public\sdk\inc\pshpack2.h
+FILE 3741 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 3742 f:\sp\public\sdk\inc\mcx.h
+FILE 3743 f:\sp\public\sdk\inc\winuser.h
+FILE 3744 f:\sp\public\sdk\inc\winnls.h
+FILE 3745 f:\sp\public\sdk\inc\guiddef.h
+FILE 3746 f:\sp\public\sdk\inc\specstrings.h
+FILE 3747 f:\sp\public\sdk\inc\basetsd.h
+FILE 3748 f:\sp\public\sdk\inc\stralign.h
+FILE 3749 f:\sp\public\sdk\inc\tvout.h
+FILE 3750 f:\sp\public\sdk\inc\winsvc.h
+FILE 3751 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 3752 f:\sp\public\sdk\inc\wingdi.h
+FILE 3753 f:\sp\public\sdk\inc\pshpack4.h
+FILE 3754 f:\sp\public\sdk\inc\poppack.h
+FILE 3755 f:\sp\public\sdk\inc\winnetwk.h
+FILE 3756 f:\sp\public\sdk\inc\imm.h
+FILE 3757 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 3758 f:\sp\public\sdk\inc\windef.h
+FILE 3759 f:\sp\public\sdk\inc\pshpack1.h
+FILE 3760 f:\sp\public\sdk\inc\winver.h
+FILE 3761 f:\sp\public\sdk\inc\windows.h
+FILE 3762 f:\sp\public\sdk\inc\winnt.h
+FILE 3763 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 3764 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 3765 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 3766 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 3767 f:\sp\public\sdk\inc\winreg.h
+FILE 3768 f:\sp\public\sdk\inc\winbase.h
+FILE 3769 f:\sp\vctools\crt_bld\self_x86\crt\src\gs_cookie.c
+FILE 3770 f:\sp\public\sdk\inc\winerror.h
+FILE 3771 f:\sp\public\sdk\inc\pshpack8.h
+FILE 3772 f:\sp\public\sdk\inc\reason.h
+FILE 3773 f:\sp\public\sdk\inc\wincon.h
+FILE 3774 f:\sp\public\sdk\inc\ddbanned.h
+FILE 3775 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 3776 f:\sp\public\sdk\inc\pshpack2.h
+FILE 3777 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 3778 f:\sp\public\sdk\inc\mcx.h
+FILE 3779 f:\sp\public\sdk\inc\winuser.h
+FILE 3780 f:\sp\public\sdk\inc\winnls.h
+FILE 3781 f:\sp\public\sdk\inc\guiddef.h
+FILE 3782 f:\sp\public\sdk\inc\specstrings.h
+FILE 3783 f:\sp\public\sdk\inc\basetsd.h
+FILE 3784 f:\sp\public\sdk\inc\stralign.h
+FILE 3785 f:\sp\public\sdk\inc\tvout.h
+FILE 3786 f:\sp\public\sdk\inc\winsvc.h
+FILE 3787 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 3788 f:\sp\public\sdk\inc\wingdi.h
+FILE 3789 f:\sp\public\sdk\inc\pshpack4.h
+FILE 3790 f:\sp\public\sdk\inc\winerror.h
+FILE 3791 f:\sp\public\sdk\inc\pshpack1.h
+FILE 3792 f:\sp\public\sdk\inc\pshpack8.h
+FILE 3793 f:\sp\public\sdk\inc\winver.h
+FILE 3794 f:\sp\public\sdk\inc\pshpack2.h
+FILE 3795 f:\sp\public\sdk\inc\winreg.h
+FILE 3796 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 3797 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 3798 f:\sp\public\sdk\inc\guiddef.h
+FILE 3799 f:\sp\public\sdk\inc\windows.h
+FILE 3800 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 3801 f:\sp\public\sdk\inc\specstrings.h
+FILE 3802 f:\sp\public\sdk\inc\basetsd.h
+FILE 3803 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 3804 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 3805 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 3806 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 3807 f:\sp\public\sdk\inc\pshpack4.h
+FILE 3808 f:\sp\public\sdk\inc\reason.h
+FILE 3809 f:\sp\public\sdk\inc\wincon.h
+FILE 3810 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 3811 f:\sp\public\sdk\inc\poppack.h
+FILE 3812 f:\sp\public\sdk\inc\mcx.h
+FILE 3813 f:\sp\public\sdk\inc\winuser.h
+FILE 3814 f:\sp\public\sdk\inc\winnls.h
+FILE 3815 f:\sp\vctools\crt_bld\self_x86\crt\src\glstatus.c
+FILE 3816 f:\sp\public\sdk\inc\stralign.h
+FILE 3817 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 3818 f:\sp\public\sdk\inc\windef.h
+FILE 3819 f:\sp\public\sdk\inc\tvout.h
+FILE 3820 f:\sp\public\sdk\inc\winsvc.h
+FILE 3821 f:\sp\public\sdk\inc\wingdi.h
+FILE 3822 f:\sp\public\sdk\inc\ddbanned.h
+FILE 3823 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 3824 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 3825 f:\sp\public\sdk\inc\winnt.h
+FILE 3826 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 3827 f:\sp\public\sdk\inc\winnetwk.h
+FILE 3828 f:\sp\public\sdk\inc\imm.h
+FILE 3829 f:\sp\public\sdk\inc\winbase.h
+FILE 3830 f:\sp\public\sdk\inc\pshpack4.h
+FILE 3831 f:\sp\public\sdk\inc\poppack.h
+FILE 3832 f:\sp\public\sdk\inc\winnt.h
+FILE 3833 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 3834 f:\sp\public\sdk\inc\winnetwk.h
+FILE 3835 f:\sp\public\sdk\inc\imm.h
+FILE 3836 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 3837 f:\sp\public\sdk\inc\pshpack1.h
+FILE 3838 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 3839 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 3840 f:\sp\public\sdk\inc\winver.h
+FILE 3841 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 3842 f:\sp\public\sdk\inc\guiddef.h
+FILE 3843 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 3844 f:\sp\public\sdk\inc\specstrings.h
+FILE 3845 f:\sp\public\sdk\inc\basetsd.h
+FILE 3846 f:\sp\public\sdk\inc\windows.h
+FILE 3847 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 3848 f:\sp\public\sdk\inc\winreg.h
+FILE 3849 f:\sp\vctools\crt_bld\self_x86\crt\src\getqloc.c
+FILE 3850 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h
+FILE 3851 f:\sp\public\sdk\inc\winbase.h
+FILE 3852 f:\sp\public\sdk\inc\winerror.h
+FILE 3853 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 3854 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 3855 f:\sp\public\sdk\inc\pshpack8.h
+FILE 3856 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 3857 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 3858 f:\sp\public\sdk\inc\reason.h
+FILE 3859 f:\sp\public\sdk\inc\ddbanned.h
+FILE 3860 f:\sp\public\sdk\inc\wincon.h
+FILE 3861 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 3862 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 3863 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 3864 f:\sp\public\sdk\inc\pshpack2.h
+FILE 3865 f:\sp\public\sdk\inc\mcx.h
+FILE 3866 f:\sp\public\sdk\inc\winuser.h
+FILE 3867 f:\sp\public\sdk\inc\winnls.h
+FILE 3868 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 3869 f:\sp\public\sdk\inc\windef.h
+FILE 3870 f:\sp\public\sdk\inc\stralign.h
+FILE 3871 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 3872 f:\sp\public\sdk\inc\tvout.h
+FILE 3873 f:\sp\public\sdk\inc\winsvc.h
+FILE 3874 f:\sp\public\sdk\inc\wingdi.h
+FILE 3875 f:\sp\public\sdk\inc\reason.h
+FILE 3876 f:\sp\public\sdk\inc\wincon.h
+FILE 3877 f:\sp\public\sdk\inc\pshpack2.h
+FILE 3878 f:\sp\public\sdk\inc\mcx.h
+FILE 3879 f:\sp\public\sdk\inc\winuser.h
+FILE 3880 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 3881 f:\sp\public\sdk\inc\winnls.h
+FILE 3882 f:\sp\public\sdk\inc\guiddef.h
+FILE 3883 f:\sp\public\sdk\inc\windows.h
+FILE 3884 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 3885 f:\sp\public\sdk\inc\specstrings.h
+FILE 3886 f:\sp\public\sdk\inc\basetsd.h
+FILE 3887 f:\sp\public\sdk\inc\stralign.h
+FILE 3888 f:\sp\public\sdk\inc\tvout.h
+FILE 3889 f:\sp\public\sdk\inc\winsvc.h
+FILE 3890 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 3891 f:\sp\public\sdk\inc\wingdi.h
+FILE 3892 f:\sp\public\sdk\inc\pshpack4.h
+FILE 3893 f:\sp\public\sdk\inc\poppack.h
+FILE 3894 f:\sp\vctools\crt_bld\self_x86\crt\src\sect_attribs.h
+FILE 3895 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 3896 f:\sp\public\sdk\inc\winnetwk.h
+FILE 3897 f:\sp\public\sdk\inc\imm.h
+FILE 3898 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 3899 f:\sp\public\sdk\inc\windef.h
+FILE 3900 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h
+FILE 3901 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h
+FILE 3902 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 3903 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 3904 f:\sp\vctools\crt_bld\self_x86\crt\src\getenv.c
+FILE 3905 f:\sp\public\sdk\inc\pshpack1.h
+FILE 3906 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h
+FILE 3907 f:\sp\public\sdk\inc\winver.h
+FILE 3908 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 3909 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 3910 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 3911 f:\sp\public\sdk\inc\winnt.h
+FILE 3912 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 3913 f:\sp\public\sdk\inc\ddbanned.h
+FILE 3914 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 3915 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 3916 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 3917 f:\sp\public\sdk\inc\winreg.h
+FILE 3918 f:\sp\public\sdk\inc\winbase.h
+FILE 3919 f:\sp\public\sdk\inc\winerror.h
+FILE 3920 f:\sp\public\sdk\inc\pshpack8.h
+FILE 3921 f:\sp\public\sdk\inc\poppack.h
+FILE 3922 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 3923 f:\sp\public\sdk\inc\winnetwk.h
+FILE 3924 f:\sp\public\sdk\inc\imm.h
+FILE 3925 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 3926 f:\sp\public\sdk\inc\windef.h
+FILE 3927 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 3928 f:\sp\public\sdk\inc\pshpack1.h
+FILE 3929 f:\sp\public\sdk\inc\winver.h
+FILE 3930 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 3931 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 3932 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 3933 f:\sp\public\sdk\inc\winnt.h
+FILE 3934 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 3935 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 3936 f:\sp\public\sdk\inc\winreg.h
+FILE 3937 f:\sp\vctools\crt_bld\self_x86\crt\src\errmode.c
+FILE 3938 f:\sp\public\sdk\inc\winbase.h
+FILE 3939 f:\sp\public\sdk\inc\winerror.h
+FILE 3940 f:\sp\public\sdk\inc\pshpack8.h
+FILE 3941 f:\sp\public\sdk\inc\reason.h
+FILE 3942 f:\sp\public\sdk\inc\wincon.h
+FILE 3943 f:\sp\public\sdk\inc\ddbanned.h
+FILE 3944 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 3945 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 3946 f:\sp\public\sdk\inc\pshpack2.h
+FILE 3947 f:\sp\public\sdk\inc\mcx.h
+FILE 3948 f:\sp\public\sdk\inc\winuser.h
+FILE 3949 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 3950 f:\sp\public\sdk\inc\winnls.h
+FILE 3951 f:\sp\public\sdk\inc\guiddef.h
+FILE 3952 f:\sp\public\sdk\inc\windows.h
+FILE 3953 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 3954 f:\sp\public\sdk\inc\specstrings.h
+FILE 3955 f:\sp\public\sdk\inc\basetsd.h
+FILE 3956 f:\sp\public\sdk\inc\stralign.h
+FILE 3957 f:\sp\public\sdk\inc\tvout.h
+FILE 3958 f:\sp\public\sdk\inc\winsvc.h
+FILE 3959 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 3960 f:\sp\public\sdk\inc\wingdi.h
+FILE 3961 f:\sp\public\sdk\inc\pshpack4.h
+FILE 3962 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 3963 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 3964 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 3965 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 3966 f:\sp\vctools\crt_bld\self_x86\crt\src\dbghook.c
+FILE 3967 f:\sp\public\sdk\inc\ddbanned.h
+FILE 3968 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 3969 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 3970 f:\sp\public\sdk\inc\poppack.h
+FILE 3971 f:\sp\public\sdk\inc\winnetwk.h
+FILE 3972 f:\sp\public\sdk\inc\imm.h
+FILE 3973 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 3974 f:\sp\public\sdk\inc\windef.h
+FILE 3975 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 3976 f:\sp\public\sdk\inc\pshpack1.h
+FILE 3977 f:\sp\public\sdk\inc\winver.h
+FILE 3978 f:\sp\public\sdk\inc\windows.h
+FILE 3979 f:\sp\public\sdk\inc\winnt.h
+FILE 3980 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 3981 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 3982 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 3983 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 3984 f:\sp\public\sdk\inc\winreg.h
+FILE 3985 f:\sp\vctools\crt_bld\self_x86\crt\src\wchar.h
+FILE 3986 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.c
+FILE 3987 f:\sp\public\sdk\inc\winbase.h
+FILE 3988 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl
+FILE 3989 f:\sp\public\sdk\inc\winerror.h
+FILE 3990 f:\sp\public\sdk\inc\pshpack8.h
+FILE 3991 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 3992 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 3993 f:\sp\public\sdk\inc\reason.h
+FILE 3994 f:\sp\public\sdk\inc\wincon.h
+FILE 3995 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 3996 f:\sp\public\sdk\inc\ddbanned.h
+FILE 3997 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 3998 f:\sp\public\sdk\inc\pshpack2.h
+FILE 3999 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 4000 f:\sp\public\sdk\inc\mcx.h
+FILE 4001 f:\sp\public\sdk\inc\winuser.h
+FILE 4002 f:\sp\public\sdk\inc\winnls.h
+FILE 4003 f:\sp\public\sdk\inc\guiddef.h
+FILE 4004 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 4005 f:\sp\public\sdk\inc\specstrings.h
+FILE 4006 f:\sp\public\sdk\inc\basetsd.h
+FILE 4007 f:\sp\public\sdk\inc\stralign.h
+FILE 4008 f:\sp\public\sdk\inc\tvout.h
+FILE 4009 f:\sp\public\sdk\inc\winsvc.h
+FILE 4010 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 4011 f:\sp\public\sdk\inc\wingdi.h
+FILE 4012 f:\sp\public\sdk\inc\pshpack4.h
+FILE 4013 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 4014 f:\sp\public\sdk\inc\mcx.h
+FILE 4015 f:\sp\public\sdk\inc\winuser.h
+FILE 4016 f:\sp\public\sdk\inc\winnls.h
+FILE 4017 f:\sp\public\sdk\inc\stralign.h
+FILE 4018 f:\sp\public\sdk\inc\tvout.h
+FILE 4019 f:\sp\public\sdk\inc\winsvc.h
+FILE 4020 f:\sp\public\sdk\inc\wingdi.h
+FILE 4021 f:\sp\public\sdk\inc\pshpack4.h
+FILE 4022 f:\sp\public\sdk\inc\winnt.h
+FILE 4023 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 4024 f:\sp\public\sdk\inc\poppack.h
+FILE 4025 f:\sp\public\sdk\inc\winnetwk.h
+FILE 4026 f:\sp\public\sdk\inc\imm.h
+FILE 4027 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h
+FILE 4028 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h
+FILE 4029 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 4030 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 4031 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 4032 f:\sp\public\sdk\inc\pshpack1.h
+FILE 4033 f:\sp\vctools\crt_bld\self_x86\crt\src\crtmbox.c
+FILE 4034 f:\sp\public\sdk\inc\winver.h
+FILE 4035 f:\sp\public\sdk\inc\guiddef.h
+FILE 4036 f:\sp\public\sdk\inc\windows.h
+FILE 4037 f:\sp\public\sdk\inc\specstrings.h
+FILE 4038 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 4039 f:\sp\public\sdk\inc\basetsd.h
+FILE 4040 f:\sp\public\sdk\inc\winreg.h
+FILE 4041 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 4042 f:\sp\public\sdk\inc\winbase.h
+FILE 4043 f:\sp\public\sdk\inc\ddbanned.h
+FILE 4044 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 4045 f:\sp\public\sdk\inc\winerror.h
+FILE 4046 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 4047 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 4048 f:\sp\public\sdk\inc\pshpack8.h
+FILE 4049 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 4050 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 4051 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h
+FILE 4052 f:\sp\public\sdk\inc\reason.h
+FILE 4053 f:\sp\public\sdk\inc\wincon.h
+FILE 4054 f:\sp\public\sdk\inc\pshpack2.h
+FILE 4055 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 4056 f:\sp\public\sdk\inc\windef.h
+FILE 4057 f:\sp\public\sdk\inc\poppack.h
+FILE 4058 f:\sp\vctools\crt_bld\self_x86\crt\src\fltintrn.h
+FILE 4059 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 4060 f:\sp\public\sdk\inc\winnetwk.h
+FILE 4061 f:\sp\public\sdk\inc\imm.h
+FILE 4062 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 4063 f:\sp\public\sdk\inc\windef.h
+FILE 4064 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 4065 f:\sp\public\sdk\inc\pshpack1.h
+FILE 4066 f:\sp\public\sdk\inc\winver.h
+FILE 4067 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 4068 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 4069 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 4070 f:\sp\public\sdk\inc\winnt.h
+FILE 4071 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 4072 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 4073 f:\sp\public\sdk\inc\winreg.h
+FILE 4074 f:\sp\vctools\crt_bld\self_x86\crt\src\cmiscdat.c
+FILE 4075 f:\sp\public\sdk\inc\winbase.h
+FILE 4076 f:\sp\public\sdk\inc\winerror.h
+FILE 4077 f:\sp\public\sdk\inc\pshpack8.h
+FILE 4078 f:\sp\public\sdk\inc\reason.h
+FILE 4079 f:\sp\public\sdk\inc\wincon.h
+FILE 4080 f:\sp\public\sdk\inc\ddbanned.h
+FILE 4081 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 4082 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 4083 f:\sp\public\sdk\inc\pshpack2.h
+FILE 4084 f:\sp\public\sdk\inc\mcx.h
+FILE 4085 f:\sp\public\sdk\inc\winuser.h
+FILE 4086 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 4087 f:\sp\public\sdk\inc\winnls.h
+FILE 4088 f:\sp\public\sdk\inc\guiddef.h
+FILE 4089 f:\sp\public\sdk\inc\windows.h
+FILE 4090 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 4091 f:\sp\public\sdk\inc\specstrings.h
+FILE 4092 f:\sp\public\sdk\inc\basetsd.h
+FILE 4093 f:\sp\public\sdk\inc\stralign.h
+FILE 4094 f:\sp\public\sdk\inc\tvout.h
+FILE 4095 f:\sp\public\sdk\inc\winsvc.h
+FILE 4096 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 4097 f:\sp\public\sdk\inc\wingdi.h
+FILE 4098 f:\sp\public\sdk\inc\pshpack4.h
+FILE 4099 f:\sp\public\sdk\inc\pshpack4.h
+FILE 4100 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h
+FILE 4101 f:\sp\vctools\crt_bld\self_x86\crt\src\signal.h
+FILE 4102 f:\sp\public\sdk\inc\poppack.h
+FILE 4103 f:\sp\public\sdk\inc\winnetwk.h
+FILE 4104 f:\sp\public\sdk\inc\imm.h
+FILE 4105 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 4106 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 4107 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 4108 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 4109 f:\sp\public\sdk\inc\windef.h
+FILE 4110 f:\sp\public\sdk\inc\pshpack1.h
+FILE 4111 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 4112 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 4113 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 4114 f:\sp\public\sdk\inc\winver.h
+FILE 4115 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 4116 f:\sp\public\sdk\inc\winnt.h
+FILE 4117 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 4118 f:\sp\public\sdk\inc\winreg.h
+FILE 4119 f:\sp\vctools\crt_bld\self_x86\crt\src\abort.c
+FILE 4120 f:\sp\public\sdk\inc\winbase.h
+FILE 4121 f:\sp\public\sdk\inc\winerror.h
+FILE 4122 f:\sp\public\sdk\inc\pshpack8.h
+FILE 4123 f:\sp\public\sdk\inc\reason.h
+FILE 4124 f:\sp\public\sdk\inc\ddbanned.h
+FILE 4125 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 4126 f:\sp\public\sdk\inc\wincon.h
+FILE 4127 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 4128 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 4129 f:\sp\public\sdk\inc\pshpack2.h
+FILE 4130 f:\sp\public\sdk\inc\mcx.h
+FILE 4131 f:\sp\public\sdk\inc\winuser.h
+FILE 4132 f:\sp\public\sdk\inc\winnls.h
+FILE 4133 f:\sp\public\sdk\inc\guiddef.h
+FILE 4134 f:\sp\public\sdk\inc\stralign.h
+FILE 4135 f:\sp\public\sdk\inc\specstrings.h
+FILE 4136 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 4137 f:\sp\public\sdk\inc\basetsd.h
+FILE 4138 f:\sp\public\sdk\inc\windows.h
+FILE 4139 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 4140 f:\sp\public\sdk\inc\tvout.h
+FILE 4141 f:\sp\public\sdk\inc\winsvc.h
+FILE 4142 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 4143 f:\sp\public\sdk\inc\wingdi.h
+FILE 4144 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 4145 f:\sp\public\sdk\inc\wincon.h
+FILE 4146 f:\sp\public\sdk\inc\imm.h
+FILE 4147 f:\sp\public\sdk\inc\winbase.h
+FILE 4148 f:\sp\public\sdk\inc\wingdi.h
+FILE 4149 f:\sp\public\sdk\inc\winver.h
+FILE 4150 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 4151 f:\sp\public\sdk\inc\windows.h
+FILE 4152 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 4153 f:\sp\public\sdk\inc\pshpack2.h
+FILE 4154 f:\sp\public\sdk\inc\reason.h
+FILE 4155 f:\sp\vctools\crt_bld\self_x86\crt\src\a_str.c
+FILE 4156 f:\sp\public\sdk\inc\specstrings.h
+FILE 4157 f:\sp\public\sdk\inc\basetsd.h
+FILE 4158 f:\sp\public\sdk\inc\pshpack4.h
+FILE 4159 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 4160 f:\sp\public\sdk\inc\winnetwk.h
+FILE 4161 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 4162 f:\sp\public\sdk\inc\stralign.h
+FILE 4163 f:\sp\public\sdk\inc\poppack.h
+FILE 4164 f:\sp\public\sdk\inc\winsvc.h
+FILE 4165 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 4166 f:\sp\public\sdk\inc\windef.h
+FILE 4167 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 4168 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 4169 f:\sp\public\sdk\inc\winuser.h
+FILE 4170 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 4171 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 4172 f:\sp\public\sdk\inc\mcx.h
+FILE 4173 f:\sp\public\sdk\inc\pshpack8.h
+FILE 4174 f:\sp\public\sdk\inc\guiddef.h
+FILE 4175 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 4176 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 4177 f:\sp\public\sdk\inc\winnt.h
+FILE 4178 f:\sp\public\sdk\inc\winnls.h
+FILE 4179 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 4180 f:\sp\public\sdk\inc\pshpack1.h
+FILE 4181 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h
+FILE 4182 f:\sp\public\sdk\inc\winerror.h
+FILE 4183 f:\sp\public\sdk\inc\winreg.h
+FILE 4184 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 4185 f:\sp\public\sdk\inc\ddbanned.h
+FILE 4186 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 4187 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 4188 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 4189 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 4190 f:\sp\public\sdk\inc\tvout.h
+FILE 4191 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 4192 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 4193 f:\sp\public\sdk\inc\wincon.h
+FILE 4194 f:\sp\public\sdk\inc\imm.h
+FILE 4195 f:\sp\public\sdk\inc\winbase.h
+FILE 4196 f:\sp\public\sdk\inc\wingdi.h
+FILE 4197 f:\sp\public\sdk\inc\winver.h
+FILE 4198 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 4199 f:\sp\public\sdk\inc\windows.h
+FILE 4200 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 4201 f:\sp\public\sdk\inc\pshpack2.h
+FILE 4202 f:\sp\public\sdk\inc\reason.h
+FILE 4203 f:\sp\vctools\crt_bld\self_x86\crt\src\a_map.c
+FILE 4204 f:\sp\public\sdk\inc\specstrings.h
+FILE 4205 f:\sp\public\sdk\inc\basetsd.h
+FILE 4206 f:\sp\public\sdk\inc\pshpack4.h
+FILE 4207 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 4208 f:\sp\public\sdk\inc\winnetwk.h
+FILE 4209 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 4210 f:\sp\public\sdk\inc\stralign.h
+FILE 4211 f:\sp\public\sdk\inc\poppack.h
+FILE 4212 f:\sp\public\sdk\inc\winsvc.h
+FILE 4213 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 4214 f:\sp\public\sdk\inc\windef.h
+FILE 4215 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 4216 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 4217 f:\sp\public\sdk\inc\winuser.h
+FILE 4218 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 4219 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 4220 f:\sp\public\sdk\inc\mcx.h
+FILE 4221 f:\sp\public\sdk\inc\pshpack8.h
+FILE 4222 f:\sp\public\sdk\inc\guiddef.h
+FILE 4223 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 4224 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 4225 f:\sp\public\sdk\inc\winnt.h
+FILE 4226 f:\sp\public\sdk\inc\winnls.h
+FILE 4227 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 4228 f:\sp\public\sdk\inc\pshpack1.h
+FILE 4229 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h
+FILE 4230 f:\sp\public\sdk\inc\winerror.h
+FILE 4231 f:\sp\public\sdk\inc\winreg.h
+FILE 4232 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 4233 f:\sp\public\sdk\inc\ddbanned.h
+FILE 4234 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 4235 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 4236 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 4237 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 4238 f:\sp\public\sdk\inc\tvout.h
+FILE 4239 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 4240 f:\sp\public\sdk\inc\wincon.h
+FILE 4241 f:\sp\public\sdk\inc\imm.h
+FILE 4242 f:\sp\public\sdk\inc\winbase.h
+FILE 4243 f:\sp\public\sdk\inc\wingdi.h
+FILE 4244 f:\sp\public\sdk\inc\winver.h
+FILE 4245 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 4246 f:\sp\public\sdk\inc\windows.h
+FILE 4247 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 4248 f:\sp\public\sdk\inc\pshpack2.h
+FILE 4249 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 4250 f:\sp\public\sdk\inc\reason.h
+FILE 4251 f:\sp\vctools\crt_bld\self_x86\crt\src\a_loc.c
+FILE 4252 f:\sp\public\sdk\inc\specstrings.h
+FILE 4253 f:\sp\public\sdk\inc\basetsd.h
+FILE 4254 f:\sp\public\sdk\inc\pshpack4.h
+FILE 4255 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h
+FILE 4256 f:\sp\public\sdk\inc\winnetwk.h
+FILE 4257 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 4258 f:\sp\public\sdk\inc\stralign.h
+FILE 4259 f:\sp\public\sdk\inc\poppack.h
+FILE 4260 f:\sp\public\sdk\inc\winsvc.h
+FILE 4261 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 4262 f:\sp\public\sdk\inc\windef.h
+FILE 4263 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 4264 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 4265 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 4266 f:\sp\public\sdk\inc\winuser.h
+FILE 4267 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 4268 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 4269 f:\sp\public\sdk\inc\mcx.h
+FILE 4270 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 4271 f:\sp\public\sdk\inc\pshpack8.h
+FILE 4272 f:\sp\public\sdk\inc\guiddef.h
+FILE 4273 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 4274 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 4275 f:\sp\public\sdk\inc\winnt.h
+FILE 4276 f:\sp\public\sdk\inc\winnls.h
+FILE 4277 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 4278 f:\sp\public\sdk\inc\pshpack1.h
+FILE 4279 f:\sp\public\sdk\inc\winerror.h
+FILE 4280 f:\sp\public\sdk\inc\winreg.h
+FILE 4281 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 4282 f:\sp\public\sdk\inc\ddbanned.h
+FILE 4283 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 4284 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 4285 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 4286 f:\sp\public\sdk\inc\tvout.h
+FILE 4287 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 4288 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 4289 f:\sp\public\sdk\inc\poppack.h
+FILE 4290 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 4291 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 4292 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 4293 f:\sp\public\sdk\inc\winnetwk.h
+FILE 4294 f:\sp\public\sdk\inc\imm.h
+FILE 4295 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 4296 f:\sp\public\sdk\inc\windef.h
+FILE 4297 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 4298 f:\sp\public\sdk\inc\pshpack1.h
+FILE 4299 f:\sp\public\sdk\inc\winver.h
+FILE 4300 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 4301 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 4302 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 4303 f:\sp\public\sdk\inc\winnt.h
+FILE 4304 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 4305 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 4306 f:\sp\public\sdk\inc\winreg.h
+FILE 4307 f:\sp\vctools\crt_bld\self_x86\crt\src\a_env.c
+FILE 4308 f:\sp\public\sdk\inc\winbase.h
+FILE 4309 f:\sp\public\sdk\inc\winerror.h
+FILE 4310 f:\sp\public\sdk\inc\pshpack8.h
+FILE 4311 f:\sp\public\sdk\inc\reason.h
+FILE 4312 f:\sp\public\sdk\inc\wincon.h
+FILE 4313 f:\sp\public\sdk\inc\ddbanned.h
+FILE 4314 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 4315 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 4316 f:\sp\public\sdk\inc\pshpack2.h
+FILE 4317 f:\sp\public\sdk\inc\mcx.h
+FILE 4318 f:\sp\public\sdk\inc\winuser.h
+FILE 4319 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 4320 f:\sp\public\sdk\inc\winnls.h
+FILE 4321 f:\sp\public\sdk\inc\guiddef.h
+FILE 4322 f:\sp\public\sdk\inc\windows.h
+FILE 4323 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 4324 f:\sp\public\sdk\inc\specstrings.h
+FILE 4325 f:\sp\public\sdk\inc\basetsd.h
+FILE 4326 f:\sp\public\sdk\inc\stralign.h
+FILE 4327 f:\sp\public\sdk\inc\tvout.h
+FILE 4328 f:\sp\public\sdk\inc\winsvc.h
+FILE 4329 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 4330 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h
+FILE 4331 f:\sp\public\sdk\inc\wingdi.h
+FILE 4332 f:\sp\public\sdk\inc\pshpack4.h
+FILE 4333 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 4334 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 4335 f:\sp\public\sdk\inc\wincon.h
+FILE 4336 f:\sp\public\sdk\inc\imm.h
+FILE 4337 f:\sp\public\sdk\inc\winbase.h
+FILE 4338 f:\sp\public\sdk\inc\wingdi.h
+FILE 4339 f:\sp\public\sdk\inc\winver.h
+FILE 4340 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 4341 f:\sp\public\sdk\inc\windows.h
+FILE 4342 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 4343 f:\sp\public\sdk\inc\pshpack2.h
+FILE 4344 f:\sp\public\sdk\inc\reason.h
+FILE 4345 f:\sp\vctools\crt_bld\self_x86\crt\src\a_cmp.c
+FILE 4346 f:\sp\public\sdk\inc\specstrings.h
+FILE 4347 f:\sp\public\sdk\inc\basetsd.h
+FILE 4348 f:\sp\public\sdk\inc\pshpack4.h
+FILE 4349 f:\sp\public\sdk\inc\winnetwk.h
+FILE 4350 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 4351 f:\sp\public\sdk\inc\stralign.h
+FILE 4352 f:\sp\public\sdk\inc\poppack.h
+FILE 4353 f:\sp\public\sdk\inc\winsvc.h
+FILE 4354 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 4355 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 4356 f:\sp\public\sdk\inc\windef.h
+FILE 4357 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 4358 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 4359 f:\sp\public\sdk\inc\winuser.h
+FILE 4360 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 4361 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 4362 f:\sp\public\sdk\inc\mcx.h
+FILE 4363 f:\sp\public\sdk\inc\pshpack8.h
+FILE 4364 f:\sp\public\sdk\inc\guiddef.h
+FILE 4365 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 4366 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 4367 f:\sp\public\sdk\inc\winnt.h
+FILE 4368 f:\sp\public\sdk\inc\winnls.h
+FILE 4369 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 4370 f:\sp\public\sdk\inc\pshpack1.h
+FILE 4371 f:\sp\public\sdk\inc\winerror.h
+FILE 4372 f:\sp\public\sdk\inc\winreg.h
+FILE 4373 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 4374 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h
+FILE 4375 f:\sp\public\sdk\inc\ddbanned.h
+FILE 4376 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 4377 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 4378 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 4379 f:\sp\public\sdk\inc\tvout.h
+FILE 4380 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 4381 F:\SP\vctools\crt_bld\SELF_X86\crt\prebuild\misc\i386\sehprolg4.asm
+FILE 4382 f:\sp\public\sdk\inc\poppack.h
+FILE 4383 f:\sp\public\sdk\inc\winnetwk.h
+FILE 4384 f:\sp\public\sdk\inc\imm.h
+FILE 4385 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 4386 f:\sp\public\sdk\inc\windef.h
+FILE 4387 f:\sp\public\sdk\inc\pshpack1.h
+FILE 4388 f:\sp\public\sdk\inc\winver.h
+FILE 4389 f:\sp\public\sdk\inc\windows.h
+FILE 4390 f:\sp\public\sdk\inc\winnt.h
+FILE 4391 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 4392 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 4393 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 4394 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 4395 f:\sp\public\sdk\inc\winreg.h
+FILE 4396 f:\sp\public\sdk\inc\winbase.h
+FILE 4397 f:\sp\vctools\crt_bld\self_x86\crt\src\intel\secchk.c
+FILE 4398 f:\sp\public\sdk\inc\winerror.h
+FILE 4399 f:\sp\public\sdk\inc\pshpack8.h
+FILE 4400 f:\sp\vctools\crt_bld\self_x86\crt\src\process.h
+FILE 4401 f:\sp\public\sdk\inc\reason.h
+FILE 4402 f:\sp\public\sdk\inc\wincon.h
+FILE 4403 f:\sp\public\sdk\inc\ddbanned.h
+FILE 4404 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 4405 f:\sp\public\sdk\inc\pshpack2.h
+FILE 4406 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 4407 f:\sp\public\sdk\inc\mcx.h
+FILE 4408 f:\sp\public\sdk\inc\winuser.h
+FILE 4409 f:\sp\public\sdk\inc\winnls.h
+FILE 4410 f:\sp\public\sdk\inc\guiddef.h
+FILE 4411 f:\sp\public\sdk\inc\specstrings.h
+FILE 4412 f:\sp\public\sdk\inc\basetsd.h
+FILE 4413 f:\sp\public\sdk\inc\stralign.h
+FILE 4414 f:\sp\public\sdk\inc\tvout.h
+FILE 4415 f:\sp\public\sdk\inc\winsvc.h
+FILE 4416 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 4417 f:\sp\public\sdk\inc\wingdi.h
+FILE 4418 f:\sp\public\sdk\inc\pshpack4.h
+FILE 4419 f:\sp\public\sdk\inc\poppack.h
+FILE 4420 f:\sp\public\sdk\inc\winnetwk.h
+FILE 4421 f:\sp\public\sdk\inc\imm.h
+FILE 4422 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 4423 f:\sp\public\sdk\inc\windef.h
+FILE 4424 f:\sp\public\sdk\inc\pshpack1.h
+FILE 4425 f:\sp\public\sdk\inc\winver.h
+FILE 4426 f:\sp\public\sdk\inc\windows.h
+FILE 4427 f:\sp\public\sdk\inc\winnt.h
+FILE 4428 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 4429 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 4430 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 4431 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 4432 f:\sp\public\sdk\inc\winreg.h
+FILE 4433 f:\sp\public\sdk\inc\winbase.h
+FILE 4434 f:\sp\vctools\crt_bld\self_x86\crt\src\intel\loadcfg.c
+FILE 4435 f:\sp\public\sdk\inc\winerror.h
+FILE 4436 f:\sp\public\sdk\inc\pshpack8.h
+FILE 4437 f:\sp\public\sdk\inc\reason.h
+FILE 4438 f:\sp\public\sdk\inc\wincon.h
+FILE 4439 f:\sp\public\sdk\inc\ddbanned.h
+FILE 4440 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 4441 f:\sp\public\sdk\inc\pshpack2.h
+FILE 4442 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 4443 f:\sp\public\sdk\inc\mcx.h
+FILE 4444 f:\sp\public\sdk\inc\winuser.h
+FILE 4445 f:\sp\public\sdk\inc\winnls.h
+FILE 4446 f:\sp\public\sdk\inc\guiddef.h
+FILE 4447 f:\sp\public\sdk\inc\specstrings.h
+FILE 4448 f:\sp\public\sdk\inc\basetsd.h
+FILE 4449 f:\sp\public\sdk\inc\stralign.h
+FILE 4450 f:\sp\public\sdk\inc\tvout.h
+FILE 4451 f:\sp\public\sdk\inc\winsvc.h
+FILE 4452 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 4453 f:\sp\public\sdk\inc\wingdi.h
+FILE 4454 f:\sp\public\sdk\inc\pshpack4.h
+FILE 4455 F:\SP\vctools\crt_bld\SELF_X86\crt\prebuild\misc\i386\exsup4.asm
+FILE 4456 F:\SP\vctools\crt_bld\SELF_X86\crt\prebuild\h\exsup.inc
+FILE 4457 F:\SP\vctools\crt_bld\SELF_X86\crt\prebuild\misc\i386\exsup.asm
+FILE 4458 F:\SP\vctools\crt_bld\SELF_X86\crt\prebuild\h\pversion.inc
+FILE 4459 F:\SP\vctools\crt_bld\SELF_X86\crt\prebuild\h\cmacros.inc
+FILE 4460 F:\SP\vctools\crt_bld\SELF_X86\crt\prebuild\h\exsup.inc
+FILE 4461 F:\SP\vctools\crt_bld\SELF_X86\crt\prebuild\misc\i386\nlgsupp.asm
+FILE 4462 f:\sp\public\sdk\inc\ntldr.h
+FILE 4463 f:\sp\public\sdk\inc\ntpoapi.h
+FILE 4464 f:\sp\public\sdk\inc\ntexapi.h
+FILE 4465 f:\sp\public\sdk\inc\pshpack1.h
+FILE 4466 f:\sp\public\sdk\inc\pshpack8.h
+FILE 4467 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h
+FILE 4468 f:\sp\public\sdk\inc\ntdef.h
+FILE 4469 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h
+FILE 4470 f:\sp\public\sdk\inc\mce.h
+FILE 4471 f:\sp\public\sdk\inc\poppack.h
+FILE 4472 f:\sp\public\sdk\inc\ntimage.h
+FILE 4473 f:\sp\public\sdk\inc\pshpack2.h
+FILE 4474 f:\sp\public\sdk\inc\ntpsapi.h
+FILE 4475 f:\sp\public\sdk\inc\nti386.h
+FILE 4476 f:\sp\public\sdk\inc\nt.h
+FILE 4477 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h
+FILE 4478 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h
+FILE 4479 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h
+FILE 4480 f:\sp\public\sdk\inc\specstrings.h
+FILE 4481 f:\sp\public\sdk\inc\basetsd.h
+FILE 4482 f:\sp\public\sdk\inc\ntxcapi.h
+FILE 4483 f:\sp\public\sdk\inc\guiddef.h
+FILE 4484 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\misc\i386\chandler4.c
+FILE 4485 f:\sp\public\sdk\inc\ntstatus.h
+FILE 4486 f:\sp\public\sdk\inc\ntkeapi.h
+FILE 4487 f:\sp\public\sdk\inc\ntconfig.h
+FILE 4488 f:\sp\public\sdk\inc\ntregapi.h
+FILE 4489 f:\sp\public\sdk\inc\ntmmapi.h
+FILE 4490 f:\sp\public\sdk\inc\ntobapi.h
+FILE 4491 f:\sp\public\sdk\inc\nxi386.h
+FILE 4492 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\process.h
+FILE 4493 f:\sp\public\sdk\inc\ntioapi.h
+FILE 4494 f:\sp\public\sdk\inc\devioctl.h
+FILE 4495 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\string.h
+FILE 4496 f:\sp\public\sdk\inc\ntseapi.h
+FILE 4497 f:\sp\public\sdk\inc\ddbanned.h
+FILE 4498 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h
+FILE 4499 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h
+FILE 4500 f:\sp\public\sdk\inc\ntnls.h
+FILE 4501 f:\sp\public\sdk\inc\ntelfapi.h
+FILE 4502 f:\sp\public\sdk\inc\pshpack4.h
+FILE 4503 f:\sp\public\sdk\inc\ntiolog.h
+FILE 4504 f:\sp\public\sdk\inc\ntlpcapi.h
+FILE 4505 f:\sp\public\sdk\inc\ntpnpapi.h
+FILE 4506 f:\sp\public\sdk\inc\cfg.h
+FILE 4507 f:\sp\public\sdk\inc\pebteb.h
+FILE 4508 f:\sp\public\sdk\inc\wincon.h
+FILE 4509 f:\sp\public\sdk\inc\imm.h
+FILE 4510 f:\sp\public\sdk\inc\winbase.h
+FILE 4511 f:\sp\public\sdk\inc\wingdi.h
+FILE 4512 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 4513 f:\sp\public\sdk\inc\winver.h
+FILE 4514 f:\sp\public\sdk\inc\pshpack2.h
+FILE 4515 f:\sp\public\sdk\inc\reason.h
+FILE 4516 f:\sp\vctools\crt_bld\self_x86\crt\src\mbdata.h
+FILE 4517 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 4518 f:\sp\vctools\crt_bld\self_x86\crt\src\mbsnbico.c
+FILE 4519 f:\sp\public\sdk\inc\specstrings.h
+FILE 4520 f:\sp\public\sdk\inc\basetsd.h
+FILE 4521 f:\sp\public\sdk\inc\pshpack4.h
+FILE 4522 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 4523 f:\sp\vctools\crt_bld\self_x86\crt\src\mbctype.h
+FILE 4524 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 4525 f:\sp\public\sdk\inc\winnetwk.h
+FILE 4526 f:\sp\public\sdk\inc\stralign.h
+FILE 4527 f:\sp\public\sdk\inc\poppack.h
+FILE 4528 f:\sp\public\sdk\inc\winsvc.h
+FILE 4529 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 4530 f:\sp\public\sdk\inc\windef.h
+FILE 4531 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h
+FILE 4532 f:\sp\public\sdk\inc\winuser.h
+FILE 4533 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 4534 f:\sp\public\sdk\inc\windows.h
+FILE 4535 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 4536 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 4537 f:\sp\public\sdk\inc\mcx.h
+FILE 4538 f:\sp\public\sdk\inc\pshpack8.h
+FILE 4539 f:\sp\public\sdk\inc\guiddef.h
+FILE 4540 f:\sp\public\sdk\inc\winnt.h
+FILE 4541 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 4542 f:\sp\public\sdk\inc\winnls.h
+FILE 4543 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 4544 f:\sp\public\sdk\inc\pshpack1.h
+FILE 4545 f:\sp\public\sdk\inc\winerror.h
+FILE 4546 f:\sp\public\sdk\inc\winreg.h
+FILE 4547 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 4548 f:\sp\public\sdk\inc\ddbanned.h
+FILE 4549 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 4550 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 4551 f:\sp\public\sdk\inc\tvout.h
+FILE 4552 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 4553 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 4554 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 4555 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h
+FILE 4556 f:\sp\public\sdk\inc\wincon.h
+FILE 4557 f:\sp\public\sdk\inc\imm.h
+FILE 4558 f:\sp\public\sdk\inc\winbase.h
+FILE 4559 f:\sp\public\sdk\inc\wingdi.h
+FILE 4560 f:\sp\vctools\crt_bld\self_x86\crt\src\mbctype.h
+FILE 4561 f:\sp\public\sdk\inc\winver.h
+FILE 4562 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 4563 f:\sp\public\sdk\inc\windows.h
+FILE 4564 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 4565 f:\sp\public\sdk\inc\pshpack2.h
+FILE 4566 f:\sp\public\sdk\inc\reason.h
+FILE 4567 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 4568 f:\sp\vctools\crt_bld\self_x86\crt\src\mbschr.c
+FILE 4569 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 4570 f:\sp\public\sdk\inc\specstrings.h
+FILE 4571 f:\sp\public\sdk\inc\basetsd.h
+FILE 4572 f:\sp\public\sdk\inc\pshpack4.h
+FILE 4573 f:\sp\public\sdk\inc\winnetwk.h
+FILE 4574 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 4575 f:\sp\public\sdk\inc\stralign.h
+FILE 4576 f:\sp\public\sdk\inc\poppack.h
+FILE 4577 f:\sp\public\sdk\inc\winsvc.h
+FILE 4578 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 4579 f:\sp\public\sdk\inc\windef.h
+FILE 4580 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 4581 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 4582 f:\sp\public\sdk\inc\winuser.h
+FILE 4583 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 4584 f:\sp\public\sdk\inc\mcx.h
+FILE 4585 f:\sp\public\sdk\inc\pshpack8.h
+FILE 4586 f:\sp\public\sdk\inc\guiddef.h
+FILE 4587 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h
+FILE 4588 f:\sp\public\sdk\inc\winnt.h
+FILE 4589 f:\sp\public\sdk\inc\winnls.h
+FILE 4590 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 4591 f:\sp\public\sdk\inc\pshpack1.h
+FILE 4592 f:\sp\public\sdk\inc\winerror.h
+FILE 4593 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 4594 f:\sp\public\sdk\inc\winreg.h
+FILE 4595 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 4596 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 4597 f:\sp\public\sdk\inc\ddbanned.h
+FILE 4598 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 4599 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 4600 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 4601 f:\sp\public\sdk\inc\tvout.h
+FILE 4602 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 4603 f:\sp\vctools\crt_bld\self_x86\crt\src\mbdata.h
+FILE 4604 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 4605 f:\sp\public\sdk\inc\wincon.h
+FILE 4606 f:\sp\public\sdk\inc\imm.h
+FILE 4607 f:\sp\public\sdk\inc\winbase.h
+FILE 4608 f:\sp\public\sdk\inc\wingdi.h
+FILE 4609 f:\sp\public\sdk\inc\winver.h
+FILE 4610 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 4611 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 4612 f:\sp\public\sdk\inc\pshpack2.h
+FILE 4613 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 4614 f:\sp\public\sdk\inc\reason.h
+FILE 4615 f:\sp\vctools\crt_bld\self_x86\crt\src\mbctype.c
+FILE 4616 f:\sp\public\sdk\inc\specstrings.h
+FILE 4617 f:\sp\public\sdk\inc\basetsd.h
+FILE 4618 f:\sp\public\sdk\inc\pshpack4.h
+FILE 4619 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 4620 f:\sp\public\sdk\inc\winnetwk.h
+FILE 4621 f:\sp\public\sdk\inc\stralign.h
+FILE 4622 f:\sp\public\sdk\inc\poppack.h
+FILE 4623 f:\sp\public\sdk\inc\winsvc.h
+FILE 4624 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 4625 f:\sp\public\sdk\inc\windef.h
+FILE 4626 f:\sp\public\sdk\inc\winuser.h
+FILE 4627 f:\sp\public\sdk\inc\windows.h
+FILE 4628 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 4629 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 4630 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 4631 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 4632 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 4633 f:\sp\public\sdk\inc\mcx.h
+FILE 4634 f:\sp\public\sdk\inc\pshpack8.h
+FILE 4635 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 4636 f:\sp\public\sdk\inc\guiddef.h
+FILE 4637 f:\sp\public\sdk\inc\winnt.h
+FILE 4638 f:\sp\public\sdk\inc\winnls.h
+FILE 4639 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 4640 f:\sp\vctools\crt_bld\self_x86\crt\src\mbdata.h
+FILE 4641 f:\sp\public\sdk\inc\pshpack1.h
+FILE 4642 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h
+FILE 4643 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 4644 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 4645 f:\sp\public\sdk\inc\winerror.h
+FILE 4646 f:\sp\vctools\crt_bld\self_x86\crt\src\sect_attribs.h
+FILE 4647 f:\sp\public\sdk\inc\winreg.h
+FILE 4648 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 4649 f:\sp\public\sdk\inc\ddbanned.h
+FILE 4650 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h
+FILE 4651 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 4652 f:\sp\vctools\crt_bld\self_x86\crt\src\mbctype.h
+FILE 4653 f:\sp\public\sdk\inc\tvout.h
+FILE 4654 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 4655 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 4656 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 4657 f:\sp\public\sdk\inc\wincon.h
+FILE 4658 f:\sp\public\sdk\inc\imm.h
+FILE 4659 f:\sp\public\sdk\inc\winbase.h
+FILE 4660 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 4661 f:\sp\public\sdk\inc\wingdi.h
+FILE 4662 f:\sp\public\sdk\inc\windef.h
+FILE 4663 f:\sp\vctools\crt_bld\self_x86\crt\src\mbctype.h
+FILE 4664 f:\sp\public\sdk\inc\winver.h
+FILE 4665 f:\sp\public\sdk\inc\pshpack2.h
+FILE 4666 f:\sp\public\sdk\inc\reason.h
+FILE 4667 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 4668 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 4669 f:\sp\vctools\crt_bld\self_x86\crt\src\ismbbyte.c
+FILE 4670 f:\sp\public\sdk\inc\winnt.h
+FILE 4671 f:\sp\public\sdk\inc\specstrings.h
+FILE 4672 f:\sp\public\sdk\inc\basetsd.h
+FILE 4673 f:\sp\public\sdk\inc\pshpack4.h
+FILE 4674 f:\sp\public\sdk\inc\winnetwk.h
+FILE 4675 f:\sp\public\sdk\inc\stralign.h
+FILE 4676 f:\sp\public\sdk\inc\poppack.h
+FILE 4677 f:\sp\public\sdk\inc\winsvc.h
+FILE 4678 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 4679 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 4680 f:\sp\public\sdk\inc\winuser.h
+FILE 4681 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 4682 f:\sp\public\sdk\inc\mcx.h
+FILE 4683 f:\sp\public\sdk\inc\pshpack8.h
+FILE 4684 f:\sp\public\sdk\inc\guiddef.h
+FILE 4685 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 4686 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h
+FILE 4687 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 4688 f:\sp\public\sdk\inc\windows.h
+FILE 4689 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 4690 f:\sp\public\sdk\inc\winnls.h
+FILE 4691 f:\sp\public\sdk\inc\pshpack1.h
+FILE 4692 f:\sp\public\sdk\inc\winerror.h
+FILE 4693 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 4694 f:\sp\public\sdk\inc\winreg.h
+FILE 4695 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 4696 f:\sp\public\sdk\inc\ddbanned.h
+FILE 4697 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 4698 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 4699 f:\sp\public\sdk\inc\tvout.h
+FILE 4700 f:\sp\vctools\crt_bld\self_x86\crt\src\mbdata.h
+FILE 4701 f:\sp\public\sdk\inc\winnetwk.h
+FILE 4702 f:\sp\public\sdk\inc\imm.h
+FILE 4703 f:\sp\vctools\crt_bld\self_x86\crt\src\io.h
+FILE 4704 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 4705 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 4706 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 4707 f:\sp\public\sdk\inc\windef.h
+FILE 4708 f:\sp\public\sdk\inc\pshpack1.h
+FILE 4709 f:\sp\public\sdk\inc\winver.h
+FILE 4710 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 4711 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 4712 f:\sp\public\sdk\inc\winnt.h
+FILE 4713 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 4714 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 4715 f:\sp\public\sdk\inc\winreg.h
+FILE 4716 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 4717 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 4718 f:\sp\public\sdk\inc\winbase.h
+FILE 4719 f:\sp\public\sdk\inc\winerror.h
+FILE 4720 f:\sp\public\sdk\inc\pshpack8.h
+FILE 4721 f:\sp\vctools\crt_bld\self_x86\crt\src\putwch.c
+FILE 4722 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 4723 f:\sp\public\sdk\inc\reason.h
+FILE 4724 f:\sp\public\sdk\inc\wincon.h
+FILE 4725 f:\sp\public\sdk\inc\pshpack2.h
+FILE 4726 f:\sp\public\sdk\inc\mcx.h
+FILE 4727 f:\sp\public\sdk\inc\winuser.h
+FILE 4728 f:\sp\public\sdk\inc\winnls.h
+FILE 4729 f:\sp\public\sdk\inc\guiddef.h
+FILE 4730 f:\sp\public\sdk\inc\stralign.h
+FILE 4731 f:\sp\public\sdk\inc\ddbanned.h
+FILE 4732 f:\sp\public\sdk\inc\specstrings.h
+FILE 4733 f:\sp\vctools\crt_bld\self_x86\crt\src\file2.h
+FILE 4734 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 4735 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 4736 f:\sp\public\sdk\inc\basetsd.h
+FILE 4737 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 4738 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 4739 f:\sp\public\sdk\inc\windows.h
+FILE 4740 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 4741 f:\sp\public\sdk\inc\tvout.h
+FILE 4742 f:\sp\public\sdk\inc\winsvc.h
+FILE 4743 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 4744 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 4745 f:\sp\public\sdk\inc\wingdi.h
+FILE 4746 f:\sp\public\sdk\inc\pshpack4.h
+FILE 4747 f:\sp\vctools\crt_bld\self_x86\crt\src\conio.h
+FILE 4748 f:\sp\public\sdk\inc\poppack.h
+FILE 4749 f:\sp\public\sdk\inc\reason.h
+FILE 4750 f:\sp\public\sdk\inc\wincon.h
+FILE 4751 f:\sp\vctools\crt_bld\self_x86\crt\src\io.h
+FILE 4752 f:\sp\public\sdk\inc\poppack.h
+FILE 4753 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 4754 f:\sp\public\sdk\inc\mcx.h
+FILE 4755 f:\sp\public\sdk\inc\winuser.h
+FILE 4756 f:\sp\public\sdk\inc\winnls.h
+FILE 4757 f:\sp\vctools\crt_bld\self_x86\crt\src\msdos.h
+FILE 4758 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 4759 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 4760 f:\sp\public\sdk\inc\stralign.h
+FILE 4761 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 4762 f:\sp\public\sdk\inc\windef.h
+FILE 4763 f:\sp\public\sdk\inc\tvout.h
+FILE 4764 f:\sp\public\sdk\inc\winsvc.h
+FILE 4765 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl
+FILE 4766 f:\sp\public\sdk\inc\wingdi.h
+FILE 4767 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 4768 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 4769 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 4770 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 4771 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 4772 f:\sp\public\sdk\inc\winnt.h
+FILE 4773 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 4774 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 4775 f:\sp\public\sdk\inc\winnetwk.h
+FILE 4776 f:\sp\public\sdk\inc\imm.h
+FILE 4777 f:\sp\vctools\crt_bld\self_x86\crt\src\write.c
+FILE 4778 f:\sp\public\sdk\inc\winbase.h
+FILE 4779 f:\sp\public\sdk\inc\winerror.h
+FILE 4780 f:\sp\public\sdk\inc\pshpack1.h
+FILE 4781 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 4782 f:\sp\public\sdk\inc\pshpack8.h
+FILE 4783 f:\sp\public\sdk\inc\winver.h
+FILE 4784 f:\sp\vctools\crt_bld\self_x86\crt\src\wchar.h
+FILE 4785 f:\sp\public\sdk\inc\ddbanned.h
+FILE 4786 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 4787 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 4788 f:\sp\public\sdk\inc\pshpack2.h
+FILE 4789 f:\sp\public\sdk\inc\winreg.h
+FILE 4790 f:\sp\public\sdk\inc\guiddef.h
+FILE 4791 f:\sp\public\sdk\inc\windows.h
+FILE 4792 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 4793 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 4794 f:\sp\public\sdk\inc\specstrings.h
+FILE 4795 f:\sp\public\sdk\inc\basetsd.h
+FILE 4796 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 4797 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 4798 f:\sp\public\sdk\inc\pshpack4.h
+FILE 4799 f:\sp\public\sdk\inc\reason.h
+FILE 4800 f:\sp\public\sdk\inc\wincon.h
+FILE 4801 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 4802 f:\sp\public\sdk\inc\poppack.h
+FILE 4803 f:\sp\public\sdk\inc\mcx.h
+FILE 4804 f:\sp\public\sdk\inc\winuser.h
+FILE 4805 f:\sp\public\sdk\inc\winnls.h
+FILE 4806 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 4807 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 4808 f:\sp\public\sdk\inc\stralign.h
+FILE 4809 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 4810 f:\sp\public\sdk\inc\windef.h
+FILE 4811 f:\sp\public\sdk\inc\tvout.h
+FILE 4812 f:\sp\public\sdk\inc\winsvc.h
+FILE 4813 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 4814 f:\sp\public\sdk\inc\wingdi.h
+FILE 4815 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 4816 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 4817 f:\sp\public\sdk\inc\winnt.h
+FILE 4818 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 4819 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 4820 f:\sp\vctools\crt_bld\self_x86\crt\src\io.h
+FILE 4821 f:\sp\public\sdk\inc\winnetwk.h
+FILE 4822 f:\sp\public\sdk\inc\imm.h
+FILE 4823 f:\sp\vctools\crt_bld\self_x86\crt\src\fcntl.h
+FILE 4824 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 4825 f:\sp\vctools\crt_bld\self_x86\crt\src\osfinfo.c
+FILE 4826 f:\sp\public\sdk\inc\winbase.h
+FILE 4827 f:\sp\public\sdk\inc\winerror.h
+FILE 4828 f:\sp\public\sdk\inc\pshpack1.h
+FILE 4829 f:\sp\public\sdk\inc\pshpack8.h
+FILE 4830 f:\sp\public\sdk\inc\winver.h
+FILE 4831 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 4832 f:\sp\vctools\crt_bld\self_x86\crt\src\msdos.h
+FILE 4833 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 4834 f:\sp\public\sdk\inc\ddbanned.h
+FILE 4835 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 4836 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 4837 f:\sp\public\sdk\inc\pshpack2.h
+FILE 4838 f:\sp\public\sdk\inc\winreg.h
+FILE 4839 f:\sp\public\sdk\inc\guiddef.h
+FILE 4840 f:\sp\public\sdk\inc\windows.h
+FILE 4841 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 4842 f:\sp\public\sdk\inc\specstrings.h
+FILE 4843 f:\sp\public\sdk\inc\basetsd.h
+FILE 4844 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 4845 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 4846 f:\sp\public\sdk\inc\pshpack4.h
+FILE 4847 f:\sp\public\sdk\inc\reason.h
+FILE 4848 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 4849 f:\sp\public\sdk\inc\wincon.h
+FILE 4850 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 4851 f:\sp\public\sdk\inc\poppack.h
+FILE 4852 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 4853 f:\sp\public\sdk\inc\mcx.h
+FILE 4854 f:\sp\public\sdk\inc\winuser.h
+FILE 4855 f:\sp\public\sdk\inc\winnls.h
+FILE 4856 f:\sp\public\sdk\inc\stralign.h
+FILE 4857 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 4858 f:\sp\public\sdk\inc\windef.h
+FILE 4859 f:\sp\public\sdk\inc\tvout.h
+FILE 4860 f:\sp\vctools\crt_bld\self_x86\crt\src\io.h
+FILE 4861 f:\sp\public\sdk\inc\winsvc.h
+FILE 4862 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 4863 f:\sp\public\sdk\inc\wingdi.h
+FILE 4864 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 4865 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 4866 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 4867 f:\sp\public\sdk\inc\winnt.h
+FILE 4868 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 4869 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 4870 f:\sp\public\sdk\inc\winnetwk.h
+FILE 4871 f:\sp\public\sdk\inc\imm.h
+FILE 4872 f:\sp\vctools\crt_bld\self_x86\crt\src\lseeki64.c
+FILE 4873 f:\sp\public\sdk\inc\winbase.h
+FILE 4874 f:\sp\public\sdk\inc\winerror.h
+FILE 4875 f:\sp\public\sdk\inc\pshpack1.h
+FILE 4876 f:\sp\vctools\crt_bld\self_x86\crt\src\msdos.h
+FILE 4877 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 4878 f:\sp\public\sdk\inc\pshpack8.h
+FILE 4879 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 4880 f:\sp\public\sdk\inc\winver.h
+FILE 4881 f:\sp\public\sdk\inc\ddbanned.h
+FILE 4882 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 4883 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 4884 f:\sp\public\sdk\inc\pshpack2.h
+FILE 4885 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 4886 f:\sp\public\sdk\inc\winreg.h
+FILE 4887 f:\sp\public\sdk\inc\guiddef.h
+FILE 4888 f:\sp\public\sdk\inc\windows.h
+FILE 4889 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 4890 f:\sp\public\sdk\inc\specstrings.h
+FILE 4891 f:\sp\public\sdk\inc\basetsd.h
+FILE 4892 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 4893 f:\sp\public\sdk\inc\pshpack4.h
+FILE 4894 f:\sp\public\sdk\inc\pshpack4.h
+FILE 4895 f:\sp\public\sdk\inc\poppack.h
+FILE 4896 f:\sp\vctools\crt_bld\self_x86\crt\src\io.h
+FILE 4897 f:\sp\public\sdk\inc\winnetwk.h
+FILE 4898 f:\sp\public\sdk\inc\imm.h
+FILE 4899 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 4900 f:\sp\public\sdk\inc\windef.h
+FILE 4901 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 4902 f:\sp\public\sdk\inc\pshpack1.h
+FILE 4903 f:\sp\public\sdk\inc\winver.h
+FILE 4904 f:\sp\vctools\crt_bld\self_x86\crt\src\msdos.h
+FILE 4905 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 4906 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 4907 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 4908 f:\sp\public\sdk\inc\winnt.h
+FILE 4909 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 4910 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 4911 f:\sp\public\sdk\inc\winreg.h
+FILE 4912 f:\sp\vctools\crt_bld\self_x86\crt\src\isatty.c
+FILE 4913 f:\sp\public\sdk\inc\winbase.h
+FILE 4914 f:\sp\public\sdk\inc\winerror.h
+FILE 4915 f:\sp\public\sdk\inc\pshpack8.h
+FILE 4916 f:\sp\public\sdk\inc\reason.h
+FILE 4917 f:\sp\public\sdk\inc\wincon.h
+FILE 4918 f:\sp\public\sdk\inc\ddbanned.h
+FILE 4919 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 4920 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 4921 f:\sp\public\sdk\inc\pshpack2.h
+FILE 4922 f:\sp\public\sdk\inc\mcx.h
+FILE 4923 f:\sp\public\sdk\inc\winuser.h
+FILE 4924 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 4925 f:\sp\public\sdk\inc\winnls.h
+FILE 4926 f:\sp\public\sdk\inc\guiddef.h
+FILE 4927 f:\sp\public\sdk\inc\windows.h
+FILE 4928 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 4929 f:\sp\public\sdk\inc\specstrings.h
+FILE 4930 f:\sp\public\sdk\inc\basetsd.h
+FILE 4931 f:\sp\public\sdk\inc\stralign.h
+FILE 4932 f:\sp\public\sdk\inc\tvout.h
+FILE 4933 f:\sp\public\sdk\inc\winsvc.h
+FILE 4934 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 4935 f:\sp\public\sdk\inc\wingdi.h
+FILE 4936 f:\sp\public\sdk\inc\poppack.h
+FILE 4937 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 4938 f:\sp\public\sdk\inc\winnetwk.h
+FILE 4939 f:\sp\public\sdk\inc\imm.h
+FILE 4940 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 4941 f:\sp\public\sdk\inc\windef.h
+FILE 4942 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 4943 f:\sp\public\sdk\inc\pshpack1.h
+FILE 4944 f:\sp\vctools\crt_bld\self_x86\crt\src\msdos.h
+FILE 4945 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h
+FILE 4946 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 4947 f:\sp\public\sdk\inc\winver.h
+FILE 4948 f:\sp\public\sdk\inc\windows.h
+FILE 4949 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 4950 f:\sp\public\sdk\inc\winnt.h
+FILE 4951 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 4952 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 4953 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 4954 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 4955 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 4956 f:\sp\public\sdk\inc\winreg.h
+FILE 4957 f:\sp\public\sdk\inc\winbase.h
+FILE 4958 f:\sp\vctools\crt_bld\self_x86\crt\src\ioinit.c
+FILE 4959 f:\sp\public\sdk\inc\winerror.h
+FILE 4960 f:\sp\public\sdk\inc\pshpack8.h
+FILE 4961 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 4962 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 4963 f:\sp\public\sdk\inc\reason.h
+FILE 4964 f:\sp\public\sdk\inc\wincon.h
+FILE 4965 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 4966 f:\sp\public\sdk\inc\ddbanned.h
+FILE 4967 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 4968 f:\sp\public\sdk\inc\pshpack2.h
+FILE 4969 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 4970 f:\sp\public\sdk\inc\mcx.h
+FILE 4971 f:\sp\public\sdk\inc\winuser.h
+FILE 4972 f:\sp\public\sdk\inc\winnls.h
+FILE 4973 f:\sp\public\sdk\inc\guiddef.h
+FILE 4974 f:\sp\public\sdk\inc\specstrings.h
+FILE 4975 f:\sp\public\sdk\inc\basetsd.h
+FILE 4976 f:\sp\public\sdk\inc\stralign.h
+FILE 4977 f:\sp\public\sdk\inc\tvout.h
+FILE 4978 f:\sp\public\sdk\inc\winsvc.h
+FILE 4979 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 4980 f:\sp\public\sdk\inc\wingdi.h
+FILE 4981 f:\sp\public\sdk\inc\pshpack4.h
+FILE 4982 f:\sp\public\sdk\inc\reason.h
+FILE 4983 f:\sp\public\sdk\inc\wincon.h
+FILE 4984 f:\sp\public\sdk\inc\pshpack2.h
+FILE 4985 f:\sp\public\sdk\inc\mcx.h
+FILE 4986 f:\sp\public\sdk\inc\winuser.h
+FILE 4987 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 4988 f:\sp\public\sdk\inc\winnls.h
+FILE 4989 f:\sp\public\sdk\inc\guiddef.h
+FILE 4990 f:\sp\public\sdk\inc\windows.h
+FILE 4991 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 4992 f:\sp\public\sdk\inc\specstrings.h
+FILE 4993 f:\sp\public\sdk\inc\basetsd.h
+FILE 4994 f:\sp\public\sdk\inc\stralign.h
+FILE 4995 f:\sp\public\sdk\inc\tvout.h
+FILE 4996 f:\sp\public\sdk\inc\winsvc.h
+FILE 4997 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 4998 f:\sp\public\sdk\inc\wingdi.h
+FILE 4999 f:\sp\public\sdk\inc\pshpack4.h
+FILE 5000 f:\sp\public\sdk\inc\poppack.h
+FILE 5001 f:\sp\vctools\crt_bld\self_x86\crt\src\sect_attribs.h
+FILE 5002 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 5003 f:\sp\public\sdk\inc\winnetwk.h
+FILE 5004 f:\sp\public\sdk\inc\imm.h
+FILE 5005 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 5006 f:\sp\public\sdk\inc\windef.h
+FILE 5007 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 5008 f:\sp\vctools\crt_bld\self_x86\crt\src\initcon.c
+FILE 5009 f:\sp\public\sdk\inc\pshpack1.h
+FILE 5010 f:\sp\public\sdk\inc\winver.h
+FILE 5011 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 5012 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 5013 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 5014 f:\sp\public\sdk\inc\winnt.h
+FILE 5015 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 5016 f:\sp\public\sdk\inc\ddbanned.h
+FILE 5017 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 5018 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 5019 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 5020 f:\sp\public\sdk\inc\winreg.h
+FILE 5021 f:\sp\public\sdk\inc\winbase.h
+FILE 5022 f:\sp\public\sdk\inc\winerror.h
+FILE 5023 f:\sp\public\sdk\inc\pshpack8.h
+FILE 5024 f:\sp\public\sdk\inc\poppack.h
+FILE 5025 f:\sp\vctools\crt_bld\self_x86\crt\src\msdos.h
+FILE 5026 f:\sp\public\sdk\inc\winnetwk.h
+FILE 5027 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 5028 f:\sp\public\sdk\inc\imm.h
+FILE 5029 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 5030 f:\sp\public\sdk\inc\windef.h
+FILE 5031 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 5032 f:\sp\public\sdk\inc\pshpack1.h
+FILE 5033 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 5034 f:\sp\public\sdk\inc\winver.h
+FILE 5035 f:\sp\public\sdk\inc\windows.h
+FILE 5036 f:\sp\public\sdk\inc\winnt.h
+FILE 5037 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 5038 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 5039 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 5040 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 5041 f:\sp\public\sdk\inc\winreg.h
+FILE 5042 f:\sp\public\sdk\inc\winbase.h
+FILE 5043 f:\sp\vctools\crt_bld\self_x86\crt\src\commit.c
+FILE 5044 f:\sp\public\sdk\inc\winerror.h
+FILE 5045 f:\sp\public\sdk\inc\pshpack8.h
+FILE 5046 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 5047 f:\sp\public\sdk\inc\reason.h
+FILE 5048 f:\sp\vctools\crt_bld\self_x86\crt\src\io.h
+FILE 5049 f:\sp\public\sdk\inc\wincon.h
+FILE 5050 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 5051 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 5052 f:\sp\public\sdk\inc\ddbanned.h
+FILE 5053 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 5054 f:\sp\public\sdk\inc\pshpack2.h
+FILE 5055 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 5056 f:\sp\public\sdk\inc\mcx.h
+FILE 5057 f:\sp\public\sdk\inc\winuser.h
+FILE 5058 f:\sp\public\sdk\inc\winnls.h
+FILE 5059 f:\sp\public\sdk\inc\guiddef.h
+FILE 5060 f:\sp\public\sdk\inc\specstrings.h
+FILE 5061 f:\sp\public\sdk\inc\basetsd.h
+FILE 5062 f:\sp\public\sdk\inc\stralign.h
+FILE 5063 f:\sp\public\sdk\inc\tvout.h
+FILE 5064 f:\sp\public\sdk\inc\winsvc.h
+FILE 5065 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 5066 f:\sp\public\sdk\inc\wingdi.h
+FILE 5067 f:\sp\public\sdk\inc\pshpack4.h
+FILE 5068 f:\sp\public\sdk\inc\reason.h
+FILE 5069 f:\sp\public\sdk\inc\wincon.h
+FILE 5070 f:\sp\vctools\crt_bld\self_x86\crt\src\io.h
+FILE 5071 f:\sp\public\sdk\inc\poppack.h
+FILE 5072 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 5073 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 5074 f:\sp\public\sdk\inc\mcx.h
+FILE 5075 f:\sp\public\sdk\inc\winuser.h
+FILE 5076 f:\sp\public\sdk\inc\winnls.h
+FILE 5077 f:\sp\public\sdk\inc\stralign.h
+FILE 5078 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 5079 f:\sp\public\sdk\inc\windef.h
+FILE 5080 f:\sp\public\sdk\inc\tvout.h
+FILE 5081 f:\sp\public\sdk\inc\winsvc.h
+FILE 5082 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 5083 f:\sp\public\sdk\inc\wingdi.h
+FILE 5084 f:\sp\vctools\crt_bld\self_x86\crt\src\msdos.h
+FILE 5085 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 5086 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 5087 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 5088 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 5089 f:\sp\public\sdk\inc\winnt.h
+FILE 5090 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 5091 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 5092 f:\sp\public\sdk\inc\winnetwk.h
+FILE 5093 f:\sp\public\sdk\inc\imm.h
+FILE 5094 f:\sp\vctools\crt_bld\self_x86\crt\src\close.c
+FILE 5095 f:\sp\public\sdk\inc\winbase.h
+FILE 5096 f:\sp\public\sdk\inc\winerror.h
+FILE 5097 f:\sp\public\sdk\inc\pshpack1.h
+FILE 5098 f:\sp\public\sdk\inc\pshpack8.h
+FILE 5099 f:\sp\public\sdk\inc\winver.h
+FILE 5100 f:\sp\public\sdk\inc\ddbanned.h
+FILE 5101 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 5102 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 5103 f:\sp\public\sdk\inc\pshpack2.h
+FILE 5104 f:\sp\public\sdk\inc\winreg.h
+FILE 5105 f:\sp\public\sdk\inc\guiddef.h
+FILE 5106 f:\sp\public\sdk\inc\windows.h
+FILE 5107 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 5108 f:\sp\public\sdk\inc\specstrings.h
+FILE 5109 f:\sp\public\sdk\inc\basetsd.h
+FILE 5110 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 5111 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 5112 f:\sp\public\sdk\inc\pshpack4.h
+FILE 5113 F:\SP\vctools\crt_bld\SELF_X86\crt\src\intel\ulldvrm.asm
+FILE 5114 F:\SP\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc
+FILE 5115 F:\SP\vctools\crt_bld\SELF_X86\crt\src\mm.inc
+FILE 5116 F:\SP\vctools\crt_bld\SELF_X86\crt\src\intel\llmul.asm
+FILE 5117 F:\SP\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc
+FILE 5118 F:\SP\vctools\crt_bld\SELF_X86\crt\src\mm.inc
+FILE 5119 f:\sp\vctools\crt_bld\self_x86\crt\src\use_ansi.h
+FILE 5120 f:\sp\vctools\crt_bld\self_x86\crt\src\new
+FILE 5121 f:\sp\vctools\crt_bld\self_x86\crt\src\exception
+FILE 5122 f:\sp\vctools\crt_bld\self_x86\crt\src\xstddef
+FILE 5123 f:\sp\vctools\crt_bld\self_x86\crt\src\new.cpp
+FILE 5124 f:\sp\vctools\crt_bld\self_x86\crt\src\cstddef
+FILE 5125 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 5126 f:\sp\vctools\crt_bld\self_x86\crt\src\eh.h
+FILE 5127 f:\sp\vctools\crt_bld\self_x86\crt\src\cstdlib
+FILE 5128 f:\sp\vctools\crt_bld\self_x86\crt\src\yvals.h
+FILE 5129 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 5130 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 5131 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 5132 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 5133 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 5134 f:\sp\public\sdk\inc\ddbanned.h
+FILE 5135 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 5136 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 5137 f:\sp\public\sdk\inc\poppack.h
+FILE 5138 f:\sp\public\sdk\inc\winnetwk.h
+FILE 5139 f:\sp\public\sdk\inc\imm.h
+FILE 5140 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 5141 f:\sp\public\sdk\inc\windef.h
+FILE 5142 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 5143 f:\sp\public\sdk\inc\pshpack1.h
+FILE 5144 f:\sp\public\sdk\inc\winver.h
+FILE 5145 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 5146 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 5147 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 5148 f:\sp\public\sdk\inc\winnt.h
+FILE 5149 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 5150 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 5151 f:\sp\public\sdk\inc\winreg.h
+FILE 5152 f:\sp\vctools\crt_bld\self_x86\crt\src\_newmode.c
+FILE 5153 f:\sp\public\sdk\inc\winbase.h
+FILE 5154 f:\sp\public\sdk\inc\winerror.h
+FILE 5155 f:\sp\public\sdk\inc\pshpack8.h
+FILE 5156 f:\sp\public\sdk\inc\reason.h
+FILE 5157 f:\sp\public\sdk\inc\wincon.h
+FILE 5158 f:\sp\public\sdk\inc\ddbanned.h
+FILE 5159 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 5160 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 5161 f:\sp\public\sdk\inc\pshpack2.h
+FILE 5162 f:\sp\public\sdk\inc\mcx.h
+FILE 5163 f:\sp\public\sdk\inc\winuser.h
+FILE 5164 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 5165 f:\sp\public\sdk\inc\winnls.h
+FILE 5166 f:\sp\public\sdk\inc\guiddef.h
+FILE 5167 f:\sp\public\sdk\inc\windows.h
+FILE 5168 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 5169 f:\sp\public\sdk\inc\specstrings.h
+FILE 5170 f:\sp\public\sdk\inc\basetsd.h
+FILE 5171 f:\sp\public\sdk\inc\stralign.h
+FILE 5172 f:\sp\public\sdk\inc\tvout.h
+FILE 5173 f:\sp\public\sdk\inc\winsvc.h
+FILE 5174 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 5175 f:\sp\public\sdk\inc\wingdi.h
+FILE 5176 f:\sp\public\sdk\inc\pshpack4.h
+FILE 5177 f:\sp\vctools\crt_bld\self_x86\crt\src\new.h
+FILE 5178 f:\sp\public\sdk\inc\winerror.h
+FILE 5179 f:\sp\vctools\crt_bld\self_x86\crt\src\rtcsup.h
+FILE 5180 f:\sp\vctools\crt_bld\self_x86\crt\src\rtcapi.h
+FILE 5181 f:\sp\public\sdk\inc\winreg.h
+FILE 5182 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 5183 f:\sp\public\sdk\inc\tvout.h
+FILE 5184 f:\sp\vctools\crt_bld\self_x86\crt\src\delete.cpp
+FILE 5185 f:\sp\public\sdk\inc\wincon.h
+FILE 5186 f:\sp\public\sdk\inc\imm.h
+FILE 5187 f:\sp\public\sdk\inc\winbase.h
+FILE 5188 f:\sp\public\sdk\inc\wingdi.h
+FILE 5189 f:\sp\public\sdk\inc\winver.h
+FILE 5190 f:\sp\public\sdk\inc\windows.h
+FILE 5191 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 5192 f:\sp\public\sdk\inc\pshpack2.h
+FILE 5193 f:\sp\public\sdk\inc\reason.h
+FILE 5194 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 5195 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 5196 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 5197 f:\sp\public\sdk\inc\specstrings.h
+FILE 5198 f:\sp\public\sdk\inc\basetsd.h
+FILE 5199 f:\sp\public\sdk\inc\pshpack4.h
+FILE 5200 f:\sp\public\sdk\inc\winnetwk.h
+FILE 5201 f:\sp\public\sdk\inc\stralign.h
+FILE 5202 f:\sp\public\sdk\inc\poppack.h
+FILE 5203 f:\sp\public\sdk\inc\winsvc.h
+FILE 5204 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 5205 f:\sp\public\sdk\inc\windef.h
+FILE 5206 f:\sp\public\sdk\inc\winuser.h
+FILE 5207 f:\sp\public\sdk\inc\mcx.h
+FILE 5208 f:\sp\public\sdk\inc\pshpack8.h
+FILE 5209 f:\sp\public\sdk\inc\ddbanned.h
+FILE 5210 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 5211 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 5212 f:\sp\public\sdk\inc\guiddef.h
+FILE 5213 f:\sp\public\sdk\inc\winnt.h
+FILE 5214 f:\sp\public\sdk\inc\winnls.h
+FILE 5215 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 5216 f:\sp\public\sdk\inc\pshpack1.h
+FILE 5217 f:\sp\public\sdk\inc\tvout.h
+FILE 5218 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 5219 f:\sp\vctools\crt_bld\self_x86\crt\src\process.h
+FILE 5220 f:\sp\public\sdk\inc\wincon.h
+FILE 5221 f:\sp\public\sdk\inc\imm.h
+FILE 5222 f:\sp\public\sdk\inc\winbase.h
+FILE 5223 f:\sp\public\sdk\inc\wingdi.h
+FILE 5224 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 5225 f:\sp\public\sdk\inc\winver.h
+FILE 5226 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 5227 f:\sp\public\sdk\inc\windows.h
+FILE 5228 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 5229 f:\sp\public\sdk\inc\pshpack2.h
+FILE 5230 f:\sp\vctools\crt_bld\self_x86\crt\src\handler.cpp
+FILE 5231 f:\sp\public\sdk\inc\reason.h
+FILE 5232 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 5233 f:\sp\public\sdk\inc\specstrings.h
+FILE 5234 f:\sp\public\sdk\inc\basetsd.h
+FILE 5235 f:\sp\public\sdk\inc\pshpack4.h
+FILE 5236 f:\sp\public\sdk\inc\winnetwk.h
+FILE 5237 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 5238 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 5239 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 5240 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 5241 f:\sp\public\sdk\inc\stralign.h
+FILE 5242 f:\sp\public\sdk\inc\poppack.h
+FILE 5243 f:\sp\public\sdk\inc\winsvc.h
+FILE 5244 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 5245 f:\sp\public\sdk\inc\windef.h
+FILE 5246 f:\sp\public\sdk\inc\winuser.h
+FILE 5247 f:\sp\public\sdk\inc\mcx.h
+FILE 5248 f:\sp\public\sdk\inc\pshpack8.h
+FILE 5249 f:\sp\public\sdk\inc\guiddef.h
+FILE 5250 f:\sp\public\sdk\inc\winnt.h
+FILE 5251 f:\sp\public\sdk\inc\winnls.h
+FILE 5252 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 5253 f:\sp\public\sdk\inc\pshpack1.h
+FILE 5254 f:\sp\public\sdk\inc\winerror.h
+FILE 5255 f:\sp\public\sdk\inc\ddbanned.h
+FILE 5256 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 5257 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 5258 f:\sp\public\sdk\inc\winreg.h
+FILE 5259 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 5260 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 5261 f:\sp\vctools\crt_bld\self_x86\crt\src\new.h
+FILE 5262 f:\sp\public\sdk\inc\winsvc.h
+FILE 5263 f:\sp\public\sdk\inc\wingdi.h
+FILE 5264 f:\sp\public\sdk\inc\pshpack4.h
+FILE 5265 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 5266 f:\sp\public\sdk\inc\poppack.h
+FILE 5267 f:\sp\public\sdk\inc\winnt.h
+FILE 5268 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 5269 f:\sp\public\sdk\inc\winnetwk.h
+FILE 5270 f:\sp\public\sdk\inc\imm.h
+FILE 5271 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 5272 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 5273 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 5274 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 5275 f:\sp\public\sdk\inc\pshpack1.h
+FILE 5276 f:\sp\public\sdk\inc\winver.h
+FILE 5277 f:\sp\public\sdk\inc\guiddef.h
+FILE 5278 f:\sp\public\sdk\inc\specstrings.h
+FILE 5279 f:\sp\public\sdk\inc\basetsd.h
+FILE 5280 f:\sp\vctools\crt_bld\self_x86\crt\src\winheap.h
+FILE 5281 f:\sp\vctools\crt_bld\self_x86\crt\src\sbheap.c
+FILE 5282 f:\sp\public\sdk\inc\windows.h
+FILE 5283 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 5284 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 5285 f:\sp\public\sdk\inc\winreg.h
+FILE 5286 f:\sp\public\sdk\inc\winbase.h
+FILE 5287 f:\sp\public\sdk\inc\winerror.h
+FILE 5288 f:\sp\public\sdk\inc\pshpack8.h
+FILE 5289 f:\sp\public\sdk\inc\ddbanned.h
+FILE 5290 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 5291 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 5292 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 5293 f:\sp\public\sdk\inc\reason.h
+FILE 5294 f:\sp\public\sdk\inc\wincon.h
+FILE 5295 f:\sp\public\sdk\inc\pshpack2.h
+FILE 5296 f:\sp\public\sdk\inc\mcx.h
+FILE 5297 f:\sp\public\sdk\inc\winuser.h
+FILE 5298 f:\sp\public\sdk\inc\winnls.h
+FILE 5299 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 5300 f:\sp\public\sdk\inc\windef.h
+FILE 5301 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 5302 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 5303 f:\sp\public\sdk\inc\stralign.h
+FILE 5304 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 5305 f:\sp\public\sdk\inc\tvout.h
+FILE 5306 f:\sp\public\sdk\inc\winver.h
+FILE 5307 f:\sp\vctools\crt_bld\self_x86\crt\src\rtcsup.h
+FILE 5308 f:\sp\vctools\crt_bld\self_x86\crt\src\rtcapi.h
+FILE 5309 f:\sp\public\sdk\inc\guiddef.h
+FILE 5310 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 5311 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 5312 f:\sp\public\sdk\inc\specstrings.h
+FILE 5313 f:\sp\public\sdk\inc\basetsd.h
+FILE 5314 f:\sp\vctools\crt_bld\self_x86\crt\src\winheap.h
+FILE 5315 f:\sp\public\sdk\inc\windows.h
+FILE 5316 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 5317 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 5318 f:\sp\public\sdk\inc\winreg.h
+FILE 5319 f:\sp\public\sdk\inc\winbase.h
+FILE 5320 f:\sp\public\sdk\inc\winerror.h
+FILE 5321 f:\sp\public\sdk\inc\pshpack8.h
+FILE 5322 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 5323 f:\sp\public\sdk\inc\reason.h
+FILE 5324 f:\sp\public\sdk\inc\wincon.h
+FILE 5325 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 5326 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 5327 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 5328 f:\sp\public\sdk\inc\pshpack2.h
+FILE 5329 f:\sp\public\sdk\inc\mcx.h
+FILE 5330 f:\sp\public\sdk\inc\winuser.h
+FILE 5331 f:\sp\public\sdk\inc\winnls.h
+FILE 5332 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 5333 f:\sp\public\sdk\inc\windef.h
+FILE 5334 f:\sp\public\sdk\inc\stralign.h
+FILE 5335 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 5336 f:\sp\public\sdk\inc\tvout.h
+FILE 5337 f:\sp\public\sdk\inc\winsvc.h
+FILE 5338 f:\sp\vctools\crt_bld\self_x86\crt\src\realloc.c
+FILE 5339 f:\sp\public\sdk\inc\wingdi.h
+FILE 5340 f:\sp\public\sdk\inc\pshpack4.h
+FILE 5341 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 5342 f:\sp\public\sdk\inc\poppack.h
+FILE 5343 f:\sp\public\sdk\inc\winnt.h
+FILE 5344 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 5345 f:\sp\public\sdk\inc\winnetwk.h
+FILE 5346 f:\sp\public\sdk\inc\ddbanned.h
+FILE 5347 f:\sp\public\sdk\inc\imm.h
+FILE 5348 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 5349 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 5350 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 5351 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 5352 f:\sp\public\sdk\inc\pshpack1.h
+FILE 5353 f:\sp\public\sdk\inc\pshpack2.h
+FILE 5354 f:\sp\vctools\crt_bld\self_x86\crt\src\winheap.h
+FILE 5355 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 5356 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 5357 f:\sp\public\sdk\inc\mcx.h
+FILE 5358 f:\sp\public\sdk\inc\winuser.h
+FILE 5359 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 5360 f:\sp\public\sdk\inc\winnls.h
+FILE 5361 f:\sp\public\sdk\inc\guiddef.h
+FILE 5362 f:\sp\public\sdk\inc\windows.h
+FILE 5363 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 5364 f:\sp\public\sdk\inc\specstrings.h
+FILE 5365 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 5366 f:\sp\public\sdk\inc\basetsd.h
+FILE 5367 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 5368 f:\sp\public\sdk\inc\stralign.h
+FILE 5369 f:\sp\public\sdk\inc\tvout.h
+FILE 5370 f:\sp\public\sdk\inc\winsvc.h
+FILE 5371 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 5372 f:\sp\public\sdk\inc\wingdi.h
+FILE 5373 f:\sp\public\sdk\inc\pshpack4.h
+FILE 5374 f:\sp\public\sdk\inc\poppack.h
+FILE 5375 f:\sp\public\sdk\inc\winnetwk.h
+FILE 5376 f:\sp\public\sdk\inc\imm.h
+FILE 5377 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 5378 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 5379 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 5380 f:\sp\public\sdk\inc\windef.h
+FILE 5381 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 5382 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 5383 f:\sp\vctools\crt_bld\self_x86\crt\src\msize.c
+FILE 5384 f:\sp\public\sdk\inc\pshpack1.h
+FILE 5385 f:\sp\public\sdk\inc\winver.h
+FILE 5386 f:\sp\public\sdk\inc\winnt.h
+FILE 5387 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 5388 f:\sp\public\sdk\inc\winreg.h
+FILE 5389 f:\sp\public\sdk\inc\ddbanned.h
+FILE 5390 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 5391 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 5392 f:\sp\public\sdk\inc\winbase.h
+FILE 5393 f:\sp\public\sdk\inc\winerror.h
+FILE 5394 f:\sp\public\sdk\inc\pshpack8.h
+FILE 5395 f:\sp\public\sdk\inc\reason.h
+FILE 5396 f:\sp\public\sdk\inc\wincon.h
+FILE 5397 f:\sp\public\sdk\inc\pshpack2.h
+FILE 5398 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 5399 f:\sp\public\sdk\inc\mcx.h
+FILE 5400 f:\sp\public\sdk\inc\winuser.h
+FILE 5401 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 5402 f:\sp\public\sdk\inc\winnls.h
+FILE 5403 f:\sp\public\sdk\inc\guiddef.h
+FILE 5404 f:\sp\public\sdk\inc\windows.h
+FILE 5405 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 5406 f:\sp\public\sdk\inc\specstrings.h
+FILE 5407 f:\sp\public\sdk\inc\basetsd.h
+FILE 5408 f:\sp\public\sdk\inc\stralign.h
+FILE 5409 f:\sp\public\sdk\inc\tvout.h
+FILE 5410 f:\sp\public\sdk\inc\winsvc.h
+FILE 5411 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 5412 f:\sp\public\sdk\inc\wingdi.h
+FILE 5413 f:\sp\public\sdk\inc\pshpack4.h
+FILE 5414 f:\sp\public\sdk\inc\poppack.h
+FILE 5415 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 5416 f:\sp\public\sdk\inc\winnetwk.h
+FILE 5417 f:\sp\public\sdk\inc\imm.h
+FILE 5418 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 5419 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 5420 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 5421 f:\sp\public\sdk\inc\windef.h
+FILE 5422 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 5423 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 5424 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 5425 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.c
+FILE 5426 f:\sp\public\sdk\inc\pshpack1.h
+FILE 5427 f:\sp\public\sdk\inc\winver.h
+FILE 5428 f:\sp\vctools\crt_bld\self_x86\crt\src\rtcsup.h
+FILE 5429 f:\sp\vctools\crt_bld\self_x86\crt\src\rtcapi.h
+FILE 5430 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h
+FILE 5431 f:\sp\public\sdk\inc\winnt.h
+FILE 5432 f:\sp\vctools\crt_bld\self_x86\crt\src\winheap.h
+FILE 5433 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 5434 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 5435 f:\sp\public\sdk\inc\winreg.h
+FILE 5436 f:\sp\public\sdk\inc\ddbanned.h
+FILE 5437 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 5438 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 5439 f:\sp\public\sdk\inc\winbase.h
+FILE 5440 f:\sp\public\sdk\inc\winerror.h
+FILE 5441 f:\sp\public\sdk\inc\pshpack8.h
+FILE 5442 f:\sp\public\sdk\inc\reason.h
+FILE 5443 f:\sp\public\sdk\inc\wincon.h
+FILE 5444 f:\sp\public\sdk\inc\winver.h
+FILE 5445 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 5446 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 5447 f:\sp\public\sdk\inc\winnt.h
+FILE 5448 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 5449 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 5450 f:\sp\public\sdk\inc\winreg.h
+FILE 5451 f:\sp\public\sdk\inc\winbase.h
+FILE 5452 f:\sp\public\sdk\inc\winerror.h
+FILE 5453 f:\sp\public\sdk\inc\pshpack8.h
+FILE 5454 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 5455 f:\sp\public\sdk\inc\reason.h
+FILE 5456 f:\sp\public\sdk\inc\wincon.h
+FILE 5457 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 5458 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 5459 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 5460 f:\sp\public\sdk\inc\pshpack2.h
+FILE 5461 f:\sp\public\sdk\inc\mcx.h
+FILE 5462 f:\sp\public\sdk\inc\winuser.h
+FILE 5463 f:\sp\public\sdk\inc\winnls.h
+FILE 5464 f:\sp\public\sdk\inc\guiddef.h
+FILE 5465 f:\sp\public\sdk\inc\stralign.h
+FILE 5466 f:\sp\public\sdk\inc\specstrings.h
+FILE 5467 f:\sp\public\sdk\inc\basetsd.h
+FILE 5468 f:\sp\vctools\crt_bld\self_x86\crt\src\winheap.h
+FILE 5469 f:\sp\public\sdk\inc\windows.h
+FILE 5470 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 5471 f:\sp\public\sdk\inc\tvout.h
+FILE 5472 f:\sp\public\sdk\inc\winsvc.h
+FILE 5473 f:\sp\vctools\crt_bld\self_x86\crt\src\heapinit.c
+FILE 5474 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 5475 f:\sp\public\sdk\inc\wingdi.h
+FILE 5476 f:\sp\public\sdk\inc\pshpack4.h
+FILE 5477 f:\sp\public\sdk\inc\poppack.h
+FILE 5478 f:\sp\public\sdk\inc\winnetwk.h
+FILE 5479 f:\sp\public\sdk\inc\ddbanned.h
+FILE 5480 f:\sp\public\sdk\inc\imm.h
+FILE 5481 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 5482 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 5483 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 5484 f:\sp\public\sdk\inc\windef.h
+FILE 5485 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 5486 f:\sp\public\sdk\inc\pshpack1.h
+FILE 5487 f:\sp\public\sdk\inc\pshpack2.h
+FILE 5488 f:\sp\public\sdk\inc\mcx.h
+FILE 5489 f:\sp\public\sdk\inc\winuser.h
+FILE 5490 f:\sp\vctools\crt_bld\self_x86\crt\src\winheap.h
+FILE 5491 f:\sp\public\sdk\inc\winnls.h
+FILE 5492 f:\sp\public\sdk\inc\guiddef.h
+FILE 5493 f:\sp\public\sdk\inc\windows.h
+FILE 5494 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 5495 f:\sp\public\sdk\inc\specstrings.h
+FILE 5496 f:\sp\public\sdk\inc\basetsd.h
+FILE 5497 f:\sp\public\sdk\inc\stralign.h
+FILE 5498 f:\sp\public\sdk\inc\tvout.h
+FILE 5499 f:\sp\public\sdk\inc\winsvc.h
+FILE 5500 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 5501 f:\sp\public\sdk\inc\wingdi.h
+FILE 5502 f:\sp\public\sdk\inc\pshpack4.h
+FILE 5503 f:\sp\public\sdk\inc\poppack.h
+FILE 5504 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 5505 f:\sp\public\sdk\inc\winnetwk.h
+FILE 5506 f:\sp\public\sdk\inc\imm.h
+FILE 5507 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 5508 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 5509 f:\sp\public\sdk\inc\windef.h
+FILE 5510 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 5511 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 5512 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 5513 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 5514 f:\sp\public\sdk\inc\pshpack1.h
+FILE 5515 f:\sp\vctools\crt_bld\self_x86\crt\src\free.c
+FILE 5516 f:\sp\public\sdk\inc\winver.h
+FILE 5517 f:\sp\public\sdk\inc\winnt.h
+FILE 5518 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 5519 f:\sp\vctools\crt_bld\self_x86\crt\src\rtcsup.h
+FILE 5520 f:\sp\vctools\crt_bld\self_x86\crt\src\rtcapi.h
+FILE 5521 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 5522 f:\sp\public\sdk\inc\winreg.h
+FILE 5523 f:\sp\public\sdk\inc\ddbanned.h
+FILE 5524 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 5525 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 5526 f:\sp\public\sdk\inc\winbase.h
+FILE 5527 f:\sp\public\sdk\inc\winerror.h
+FILE 5528 f:\sp\public\sdk\inc\pshpack8.h
+FILE 5529 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 5530 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 5531 f:\sp\public\sdk\inc\reason.h
+FILE 5532 f:\sp\public\sdk\inc\wincon.h
+FILE 5533 f:\sp\public\sdk\inc\pshpack2.h
+FILE 5534 f:\sp\public\sdk\inc\mcx.h
+FILE 5535 f:\sp\public\sdk\inc\winuser.h
+FILE 5536 f:\sp\public\sdk\inc\winnls.h
+FILE 5537 f:\sp\public\sdk\inc\guiddef.h
+FILE 5538 f:\sp\public\sdk\inc\windows.h
+FILE 5539 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 5540 f:\sp\public\sdk\inc\specstrings.h
+FILE 5541 f:\sp\public\sdk\inc\basetsd.h
+FILE 5542 f:\sp\public\sdk\inc\stralign.h
+FILE 5543 f:\sp\public\sdk\inc\tvout.h
+FILE 5544 f:\sp\public\sdk\inc\winsvc.h
+FILE 5545 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 5546 f:\sp\public\sdk\inc\wingdi.h
+FILE 5547 f:\sp\public\sdk\inc\pshpack4.h
+FILE 5548 f:\sp\public\sdk\inc\poppack.h
+FILE 5549 f:\sp\public\sdk\inc\winnetwk.h
+FILE 5550 f:\sp\public\sdk\inc\imm.h
+FILE 5551 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 5552 f:\sp\public\sdk\inc\windef.h
+FILE 5553 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 5554 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 5555 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 5556 f:\sp\public\sdk\inc\pshpack1.h
+FILE 5557 f:\sp\vctools\crt_bld\self_x86\crt\src\crtheap.c
+FILE 5558 f:\sp\public\sdk\inc\winver.h
+FILE 5559 f:\sp\public\sdk\inc\winnt.h
+FILE 5560 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 5561 f:\sp\public\sdk\inc\winreg.h
+FILE 5562 f:\sp\public\sdk\inc\ddbanned.h
+FILE 5563 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 5564 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 5565 f:\sp\public\sdk\inc\winbase.h
+FILE 5566 f:\sp\public\sdk\inc\winerror.h
+FILE 5567 f:\sp\public\sdk\inc\pshpack8.h
+FILE 5568 f:\sp\public\sdk\inc\reason.h
+FILE 5569 f:\sp\public\sdk\inc\wincon.h
+FILE 5570 f:\sp\public\sdk\inc\pshpack2.h
+FILE 5571 f:\sp\public\sdk\inc\mcx.h
+FILE 5572 f:\sp\public\sdk\inc\winuser.h
+FILE 5573 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 5574 f:\sp\public\sdk\inc\winnls.h
+FILE 5575 f:\sp\public\sdk\inc\stralign.h
+FILE 5576 f:\sp\public\sdk\inc\tvout.h
+FILE 5577 f:\sp\public\sdk\inc\winsvc.h
+FILE 5578 f:\sp\public\sdk\inc\wingdi.h
+FILE 5579 f:\sp\public\sdk\inc\winnt.h
+FILE 5580 f:\sp\public\sdk\inc\pshpack4.h
+FILE 5581 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 5582 f:\sp\public\sdk\inc\poppack.h
+FILE 5583 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 5584 f:\sp\public\sdk\inc\winnetwk.h
+FILE 5585 f:\sp\public\sdk\inc\imm.h
+FILE 5586 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 5587 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 5588 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 5589 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 5590 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 5591 f:\sp\public\sdk\inc\pshpack1.h
+FILE 5592 f:\sp\vctools\crt_bld\self_x86\crt\src\calloc.c
+FILE 5593 f:\sp\public\sdk\inc\winver.h
+FILE 5594 f:\sp\vctools\crt_bld\self_x86\crt\src\winheap.h
+FILE 5595 f:\sp\public\sdk\inc\guiddef.h
+FILE 5596 f:\sp\public\sdk\inc\windows.h
+FILE 5597 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 5598 f:\sp\public\sdk\inc\specstrings.h
+FILE 5599 f:\sp\public\sdk\inc\basetsd.h
+FILE 5600 f:\sp\vctools\crt_bld\self_x86\crt\src\rtcsup.h
+FILE 5601 f:\sp\vctools\crt_bld\self_x86\crt\src\rtcapi.h
+FILE 5602 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 5603 f:\sp\public\sdk\inc\winreg.h
+FILE 5604 f:\sp\public\sdk\inc\ddbanned.h
+FILE 5605 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 5606 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 5607 f:\sp\public\sdk\inc\winbase.h
+FILE 5608 f:\sp\public\sdk\inc\winerror.h
+FILE 5609 f:\sp\public\sdk\inc\pshpack8.h
+FILE 5610 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 5611 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 5612 f:\sp\public\sdk\inc\reason.h
+FILE 5613 f:\sp\public\sdk\inc\wincon.h
+FILE 5614 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 5615 f:\sp\public\sdk\inc\windef.h
+FILE 5616 f:\sp\public\sdk\inc\wincon.h
+FILE 5617 f:\sp\public\sdk\inc\imm.h
+FILE 5618 f:\sp\public\sdk\inc\winbase.h
+FILE 5619 f:\sp\public\sdk\inc\wingdi.h
+FILE 5620 f:\sp\public\sdk\inc\winver.h
+FILE 5621 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ehhooks.h
+FILE 5622 f:\sp\public\sdk\inc\pshpack2.h
+FILE 5623 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\internal.h
+FILE 5624 f:\sp\public\sdk\inc\reason.h
+FILE 5625 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ehassert.h
+FILE 5626 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\setjmp.h
+FILE 5627 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\eh\i386\trnsctrl.cpp
+FILE 5628 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\process.h
+FILE 5629 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdbg.h
+FILE 5630 f:\sp\public\sdk\inc\specstrings.h
+FILE 5631 f:\sp\public\sdk\inc\basetsd.h
+FILE 5632 f:\sp\public\sdk\inc\pshpack4.h
+FILE 5633 f:\sp\public\sdk\inc\winnetwk.h
+FILE 5634 f:\sp\public\sdk\inc\stralign.h
+FILE 5635 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\trnsctrl.h
+FILE 5636 f:\sp\public\sdk\inc\poppack.h
+FILE 5637 f:\sp\public\sdk\inc\winsvc.h
+FILE 5638 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h
+FILE 5639 f:\sp\public\sdk\inc\windef.h
+FILE 5640 f:\sp\public\sdk\inc\winuser.h
+FILE 5641 f:\sp\public\sdk\inc\windows.h
+FILE 5642 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h
+FILE 5643 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h
+FILE 5644 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h
+FILE 5645 f:\sp\public\sdk\inc\mcx.h
+FILE 5646 f:\sp\public\sdk\inc\pshpack8.h
+FILE 5647 f:\sp\public\sdk\inc\guiddef.h
+FILE 5648 f:\sp\public\sdk\inc\winnt.h
+FILE 5649 f:\sp\public\sdk\inc\winnls.h
+FILE 5650 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h
+FILE 5651 f:\sp\public\sdk\inc\pshpack1.h
+FILE 5652 f:\sp\public\sdk\inc\winerror.h
+FILE 5653 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\mtdll.h
+FILE 5654 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\limits.h
+FILE 5655 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\errno.h
+FILE 5656 f:\sp\public\sdk\inc\winreg.h
+FILE 5657 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\string.h
+FILE 5658 f:\sp\public\sdk\inc\ddbanned.h
+FILE 5659 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h
+FILE 5660 f:\sp\public\sdk\inc\tvout.h
+FILE 5661 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h
+FILE 5662 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\eh.h
+FILE 5663 f:\sp\vctools\langapi\include\ehdata.h
+FILE 5664 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stddef.h
+FILE 5665 F:\SP\vctools\crt_bld\SELF_X86\crt\prebuild\eh\i386\lowhelpr.asm
+FILE 5666 F:\SP\vctools\crt_bld\SELF_X86\crt\prebuild\h\cruntime.inc
+FILE 5667 F:\SP\vctools\crt_bld\SELF_X86\crt\prebuild\h\exsup.inc
+FILE 5668 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\process.h
+FILE 5669 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h
+FILE 5670 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h
+FILE 5671 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\eh\i386\ehprolg3.c
+FILE 5672 f:\sp\public\sdk\inc\ddbanned.h
+FILE 5673 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h
+FILE 5674 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h
+FILE 5675 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ehassert.h
+FILE 5676 f:\sp\public\sdk\inc\wincon.h
+FILE 5677 f:\sp\public\sdk\inc\imm.h
+FILE 5678 f:\sp\public\sdk\inc\winbase.h
+FILE 5679 f:\sp\public\sdk\inc\wingdi.h
+FILE 5680 f:\sp\public\sdk\inc\winver.h
+FILE 5681 f:\sp\public\sdk\inc\pshpack2.h
+FILE 5682 f:\sp\public\sdk\inc\reason.h
+FILE 5683 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\eh\validate.cpp
+FILE 5684 f:\sp\public\sdk\inc\specstrings.h
+FILE 5685 f:\sp\public\sdk\inc\basetsd.h
+FILE 5686 f:\sp\public\sdk\inc\pshpack4.h
+FILE 5687 f:\sp\public\sdk\inc\winnetwk.h
+FILE 5688 f:\sp\public\sdk\inc\stralign.h
+FILE 5689 f:\sp\public\sdk\inc\poppack.h
+FILE 5690 f:\sp\public\sdk\inc\winsvc.h
+FILE 5691 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h
+FILE 5692 f:\sp\public\sdk\inc\windef.h
+FILE 5693 f:\sp\public\sdk\inc\winuser.h
+FILE 5694 f:\sp\public\sdk\inc\windows.h
+FILE 5695 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h
+FILE 5696 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h
+FILE 5697 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h
+FILE 5698 f:\sp\public\sdk\inc\mcx.h
+FILE 5699 f:\sp\public\sdk\inc\pshpack8.h
+FILE 5700 f:\sp\public\sdk\inc\guiddef.h
+FILE 5701 f:\sp\public\sdk\inc\winnt.h
+FILE 5702 f:\sp\public\sdk\inc\winnls.h
+FILE 5703 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h
+FILE 5704 f:\sp\public\sdk\inc\pshpack1.h
+FILE 5705 f:\sp\public\sdk\inc\winerror.h
+FILE 5706 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\eh.h
+FILE 5707 f:\sp\public\sdk\inc\winreg.h
+FILE 5708 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\string.h
+FILE 5709 f:\sp\public\sdk\inc\ddbanned.h
+FILE 5710 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h
+FILE 5711 f:\sp\public\sdk\inc\tvout.h
+FILE 5712 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h
+FILE 5713 f:\sp\public\sdk\inc\wincon.h
+FILE 5714 f:\sp\public\sdk\inc\imm.h
+FILE 5715 f:\sp\public\sdk\inc\winbase.h
+FILE 5716 f:\sp\public\sdk\inc\wingdi.h
+FILE 5717 f:\sp\public\sdk\inc\winver.h
+FILE 5718 f:\sp\public\sdk\inc\pshpack2.h
+FILE 5719 f:\sp\public\sdk\inc\reason.h
+FILE 5720 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sect_attribs.h
+FILE 5721 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\eh\unhandld.cpp
+FILE 5722 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\eh.h
+FILE 5723 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\errno.h
+FILE 5724 f:\sp\public\sdk\inc\specstrings.h
+FILE 5725 f:\sp\public\sdk\inc\basetsd.h
+FILE 5726 f:\sp\public\sdk\inc\pshpack4.h
+FILE 5727 f:\sp\public\sdk\inc\winnetwk.h
+FILE 5728 f:\sp\public\sdk\inc\stralign.h
+FILE 5729 f:\sp\public\sdk\inc\poppack.h
+FILE 5730 f:\sp\public\sdk\inc\winsvc.h
+FILE 5731 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h
+FILE 5732 f:\sp\public\sdk\inc\windef.h
+FILE 5733 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ehhooks.h
+FILE 5734 f:\sp\public\sdk\inc\winuser.h
+FILE 5735 f:\sp\public\sdk\inc\windows.h
+FILE 5736 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h
+FILE 5737 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h
+FILE 5738 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h
+FILE 5739 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ehassert.h
+FILE 5740 f:\sp\public\sdk\inc\mcx.h
+FILE 5741 f:\sp\public\sdk\inc\pshpack8.h
+FILE 5742 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\internal.h
+FILE 5743 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\limits.h
+FILE 5744 f:\sp\public\sdk\inc\guiddef.h
+FILE 5745 f:\sp\public\sdk\inc\winnt.h
+FILE 5746 f:\sp\public\sdk\inc\winnls.h
+FILE 5747 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h
+FILE 5748 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdlib.h
+FILE 5749 f:\sp\public\sdk\inc\pshpack1.h
+FILE 5750 f:\sp\public\sdk\inc\winerror.h
+FILE 5751 f:\sp\vctools\langapi\include\ehdata.h
+FILE 5752 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stddef.h
+FILE 5753 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdbg.h
+FILE 5754 f:\sp\public\sdk\inc\winreg.h
+FILE 5755 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\string.h
+FILE 5756 f:\sp\public\sdk\inc\ddbanned.h
+FILE 5757 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h
+FILE 5758 f:\sp\public\sdk\inc\tvout.h
+FILE 5759 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h
+FILE 5760 f:\sp\public\sdk\inc\specstrings.h
+FILE 5761 f:\sp\public\sdk\inc\basetsd.h
+FILE 5762 f:\sp\public\sdk\inc\pshpack4.h
+FILE 5763 f:\sp\public\sdk\inc\winnetwk.h
+FILE 5764 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\limits.h
+FILE 5765 f:\sp\public\sdk\inc\stralign.h
+FILE 5766 f:\sp\public\sdk\inc\poppack.h
+FILE 5767 f:\sp\public\sdk\inc\winsvc.h
+FILE 5768 f:\sp\public\sdk\inc\winuser.h
+FILE 5769 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h
+FILE 5770 f:\sp\public\sdk\inc\windef.h
+FILE 5771 f:\sp\vctools\langapi\undname\undname.cxx
+FILE 5772 f:\sp\public\sdk\inc\mcx.h
+FILE 5773 f:\sp\public\sdk\inc\pshpack8.h
+FILE 5774 f:\sp\public\sdk\inc\guiddef.h
+FILE 5775 f:\sp\vctools\langapi\undname\utf8.h
+FILE 5776 f:\sp\public\sdk\inc\winnls.h
+FILE 5777 f:\sp\public\sdk\inc\pshpack1.h
+FILE 5778 f:\sp\public\sdk\inc\winnt.h
+FILE 5779 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h
+FILE 5780 f:\sp\public\sdk\inc\winerror.h
+FILE 5781 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\swprintf.inl
+FILE 5782 f:\sp\vctools\langapi\undname\undname.hxx
+FILE 5783 f:\sp\vctools\langapi\undname\undname.h
+FILE 5784 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdlib.h
+FILE 5785 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h
+FILE 5786 f:\sp\public\sdk\inc\winreg.h
+FILE 5787 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h
+FILE 5788 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\string.h
+FILE 5789 f:\sp\public\sdk\inc\tvout.h
+FILE 5790 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdio.h
+FILE 5791 f:\sp\public\sdk\inc\wincon.h
+FILE 5792 f:\sp\public\sdk\inc\imm.h
+FILE 5793 f:\sp\public\sdk\inc\winbase.h
+FILE 5794 f:\sp\public\sdk\inc\wingdi.h
+FILE 5795 f:\sp\public\sdk\inc\winver.h
+FILE 5796 f:\sp\public\sdk\inc\pshpack2.h
+FILE 5797 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\mtdll.h
+FILE 5798 f:\sp\public\sdk\inc\windows.h
+FILE 5799 f:\sp\public\sdk\inc\reason.h
+FILE 5800 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h
+FILE 5801 f:\sp\public\sdk\inc\ddbanned.h
+FILE 5802 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h
+FILE 5803 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h
+FILE 5804 f:\sp\vctools\langapi\undname\undname.inl
+FILE 5805 f:\sp\public\sdk\inc\guiddef.h
+FILE 5806 f:\sp\public\sdk\inc\winnt.h
+FILE 5807 f:\sp\public\sdk\inc\winnls.h
+FILE 5808 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h
+FILE 5809 f:\sp\public\sdk\inc\pshpack1.h
+FILE 5810 f:\sp\public\sdk\inc\winerror.h
+FILE 5811 f:\sp\public\sdk\inc\winreg.h
+FILE 5812 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\string.h
+FILE 5813 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdlib.h
+FILE 5814 f:\sp\public\sdk\inc\tvout.h
+FILE 5815 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\eh\typname.cpp
+FILE 5816 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdbg.h
+FILE 5817 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\cstddef
+FILE 5818 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stddef.h
+FILE 5819 f:\sp\public\sdk\inc\wincon.h
+FILE 5820 f:\sp\public\sdk\inc\imm.h
+FILE 5821 f:\sp\public\sdk\inc\winbase.h
+FILE 5822 f:\sp\public\sdk\inc\wingdi.h
+FILE 5823 f:\sp\public\sdk\inc\winver.h
+FILE 5824 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\limits.h
+FILE 5825 f:\sp\public\sdk\inc\windows.h
+FILE 5826 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h
+FILE 5827 f:\sp\public\sdk\inc\pshpack2.h
+FILE 5828 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\mtdll.h
+FILE 5829 f:\sp\public\sdk\inc\reason.h
+FILE 5830 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sect_attribs.h
+FILE 5831 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\dbgint.h
+FILE 5832 f:\sp\public\sdk\inc\specstrings.h
+FILE 5833 f:\sp\public\sdk\inc\basetsd.h
+FILE 5834 f:\sp\public\sdk\inc\pshpack4.h
+FILE 5835 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\typeinfo.h
+FILE 5836 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\typeinfo
+FILE 5837 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\exception
+FILE 5838 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\xstddef
+FILE 5839 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\eh.h
+FILE 5840 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\yvals.h
+FILE 5841 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\use_ansi.h
+FILE 5842 f:\sp\public\sdk\inc\winnetwk.h
+FILE 5843 f:\sp\vctools\langapi\undname\undname.h
+FILE 5844 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\errno.h
+FILE 5845 f:\sp\public\sdk\inc\stralign.h
+FILE 5846 f:\sp\public\sdk\inc\poppack.h
+FILE 5847 f:\sp\public\sdk\inc\winsvc.h
+FILE 5848 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h
+FILE 5849 f:\sp\public\sdk\inc\windef.h
+FILE 5850 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\internal.h
+FILE 5851 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h
+FILE 5852 f:\sp\public\sdk\inc\winuser.h
+FILE 5853 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h
+FILE 5854 f:\sp\public\sdk\inc\ddbanned.h
+FILE 5855 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h
+FILE 5856 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h
+FILE 5857 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\malloc.h
+FILE 5858 f:\sp\public\sdk\inc\mcx.h
+FILE 5859 f:\sp\public\sdk\inc\pshpack8.h
+FILE 5860 f:\sp\public\sdk\inc\winnls.h
+FILE 5861 f:\sp\public\sdk\inc\pshpack1.h
+FILE 5862 f:\sp\public\sdk\inc\winnt.h
+FILE 5863 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h
+FILE 5864 f:\sp\public\sdk\inc\winerror.h
+FILE 5865 f:\sp\public\sdk\inc\winreg.h
+FILE 5866 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\string.h
+FILE 5867 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\limits.h
+FILE 5868 f:\sp\public\sdk\inc\tvout.h
+FILE 5869 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\dbgint.h
+FILE 5870 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdbg.h
+FILE 5871 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\cstddef
+FILE 5872 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stddef.h
+FILE 5873 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\eh\typinfo.cpp
+FILE 5874 f:\sp\public\sdk\inc\wincon.h
+FILE 5875 f:\sp\public\sdk\inc\imm.h
+FILE 5876 f:\sp\public\sdk\inc\winbase.h
+FILE 5877 f:\sp\public\sdk\inc\wingdi.h
+FILE 5878 f:\sp\public\sdk\inc\winver.h
+FILE 5879 f:\sp\public\sdk\inc\pshpack2.h
+FILE 5880 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\mtdll.h
+FILE 5881 f:\sp\public\sdk\inc\reason.h
+FILE 5882 f:\sp\public\sdk\inc\windows.h
+FILE 5883 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h
+FILE 5884 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdlib.h
+FILE 5885 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h
+FILE 5886 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h
+FILE 5887 f:\sp\public\sdk\inc\specstrings.h
+FILE 5888 f:\sp\public\sdk\inc\basetsd.h
+FILE 5889 f:\sp\public\sdk\inc\pshpack4.h
+FILE 5890 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\typeinfo
+FILE 5891 f:\sp\public\sdk\inc\winnetwk.h
+FILE 5892 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\exception
+FILE 5893 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\xstddef
+FILE 5894 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\eh.h
+FILE 5895 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\yvals.h
+FILE 5896 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\use_ansi.h
+FILE 5897 f:\sp\public\sdk\inc\stralign.h
+FILE 5898 f:\sp\public\sdk\inc\poppack.h
+FILE 5899 f:\sp\public\sdk\inc\winsvc.h
+FILE 5900 f:\sp\public\sdk\inc\winuser.h
+FILE 5901 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h
+FILE 5902 f:\sp\public\sdk\inc\windef.h
+FILE 5903 f:\sp\vctools\langapi\undname\undname.h
+FILE 5904 f:\sp\public\sdk\inc\ddbanned.h
+FILE 5905 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\malloc.h
+FILE 5906 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h
+FILE 5907 f:\sp\public\sdk\inc\mcx.h
+FILE 5908 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h
+FILE 5909 f:\sp\public\sdk\inc\pshpack8.h
+FILE 5910 f:\sp\public\sdk\inc\guiddef.h
+FILE 5911 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\eh.h
+FILE 5912 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\typeinfo
+FILE 5913 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\limits.h
+FILE 5914 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\exception
+FILE 5915 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\xstddef
+FILE 5916 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\eh\stdexcpt.cpp
+FILE 5917 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\yvals.h
+FILE 5918 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\use_ansi.h
+FILE 5919 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdlib.h
+FILE 5920 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h
+FILE 5921 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h
+FILE 5922 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\string.h
+FILE 5923 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\cstddef
+FILE 5924 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stddef.h
+FILE 5925 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\malloc.h
+FILE 5926 f:\sp\public\sdk\inc\ddbanned.h
+FILE 5927 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h
+FILE 5928 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h
+FILE 5929 f:\sp\vctools\langapi\include\ehdata.h
+FILE 5930 f:\sp\public\sdk\inc\wincon.h
+FILE 5931 f:\sp\public\sdk\inc\imm.h
+FILE 5932 f:\sp\public\sdk\inc\winbase.h
+FILE 5933 f:\sp\public\sdk\inc\wingdi.h
+FILE 5934 f:\sp\public\sdk\inc\winver.h
+FILE 5935 f:\sp\public\sdk\inc\windows.h
+FILE 5936 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h
+FILE 5937 f:\sp\public\sdk\inc\pshpack2.h
+FILE 5938 f:\sp\public\sdk\inc\reason.h
+FILE 5939 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\eh\throw.cpp
+FILE 5940 f:\sp\public\sdk\inc\specstrings.h
+FILE 5941 f:\sp\public\sdk\inc\basetsd.h
+FILE 5942 f:\sp\public\sdk\inc\pshpack4.h
+FILE 5943 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\eh.h
+FILE 5944 f:\sp\public\sdk\inc\winnetwk.h
+FILE 5945 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stddef.h
+FILE 5946 f:\sp\public\sdk\inc\stralign.h
+FILE 5947 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h
+FILE 5948 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h
+FILE 5949 f:\sp\public\sdk\inc\poppack.h
+FILE 5950 f:\sp\public\sdk\inc\winsvc.h
+FILE 5951 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h
+FILE 5952 f:\sp\public\sdk\inc\windef.h
+FILE 5953 f:\sp\public\sdk\inc\winuser.h
+FILE 5954 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ehhooks.h
+FILE 5955 f:\sp\public\sdk\inc\mcx.h
+FILE 5956 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ehassert.h
+FILE 5957 f:\sp\public\sdk\inc\pshpack8.h
+FILE 5958 f:\sp\public\sdk\inc\guiddef.h
+FILE 5959 f:\sp\public\sdk\inc\winnt.h
+FILE 5960 f:\sp\public\sdk\inc\winnls.h
+FILE 5961 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h
+FILE 5962 f:\sp\public\sdk\inc\pshpack1.h
+FILE 5963 f:\sp\public\sdk\inc\winerror.h
+FILE 5964 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\mtdll.h
+FILE 5965 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\limits.h
+FILE 5966 f:\sp\public\sdk\inc\ddbanned.h
+FILE 5967 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h
+FILE 5968 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h
+FILE 5969 f:\sp\public\sdk\inc\winreg.h
+FILE 5970 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\string.h
+FILE 5971 f:\sp\public\sdk\inc\tvout.h
+FILE 5972 f:\sp\public\sdk\inc\poppack.h
+FILE 5973 f:\sp\public\sdk\inc\winsvc.h
+FILE 5974 f:\sp\public\sdk\inc\windows.h
+FILE 5975 f:\sp\public\sdk\inc\winuser.h
+FILE 5976 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h
+FILE 5977 f:\sp\public\sdk\inc\windef.h
+FILE 5978 f:\sp\public\sdk\inc\mcx.h
+FILE 5979 f:\sp\public\sdk\inc\pshpack8.h
+FILE 5980 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdlib.h
+FILE 5981 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\limits.h
+FILE 5982 f:\sp\public\sdk\inc\guiddef.h
+FILE 5983 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\eh\hooks.cpp
+FILE 5984 f:\sp\public\sdk\inc\winnls.h
+FILE 5985 f:\sp\public\sdk\inc\pshpack1.h
+FILE 5986 f:\sp\public\sdk\inc\winnt.h
+FILE 5987 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h
+FILE 5988 f:\sp\public\sdk\inc\winerror.h
+FILE 5989 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\mtdll.h
+FILE 5990 f:\sp\public\sdk\inc\winreg.h
+FILE 5991 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\string.h
+FILE 5992 f:\sp\public\sdk\inc\tvout.h
+FILE 5993 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\eh.h
+FILE 5994 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\errno.h
+FILE 5995 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stddef.h
+FILE 5996 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h
+FILE 5997 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h
+FILE 5998 f:\sp\public\sdk\inc\wincon.h
+FILE 5999 f:\sp\public\sdk\inc\imm.h
+FILE 6000 f:\sp\public\sdk\inc\winbase.h
+FILE 6001 f:\sp\public\sdk\inc\wingdi.h
+FILE 6002 f:\sp\public\sdk\inc\winver.h
+FILE 6003 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ehhooks.h
+FILE 6004 f:\sp\public\sdk\inc\pshpack2.h
+FILE 6005 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h
+FILE 6006 f:\sp\public\sdk\inc\reason.h
+FILE 6007 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ehassert.h
+FILE 6008 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\internal.h
+FILE 6009 f:\sp\public\sdk\inc\specstrings.h
+FILE 6010 f:\sp\public\sdk\inc\basetsd.h
+FILE 6011 f:\sp\public\sdk\inc\pshpack4.h
+FILE 6012 f:\sp\public\sdk\inc\ddbanned.h
+FILE 6013 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h
+FILE 6014 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h
+FILE 6015 f:\sp\public\sdk\inc\winnetwk.h
+FILE 6016 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdbg.h
+FILE 6017 f:\sp\public\sdk\inc\stralign.h
+FILE 6018 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdbg.h
+FILE 6019 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ehassert.h
+FILE 6020 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\malloc.h
+FILE 6021 f:\sp\public\sdk\inc\wincon.h
+FILE 6022 f:\sp\public\sdk\inc\imm.h
+FILE 6023 f:\sp\public\sdk\inc\guiddef.h
+FILE 6024 f:\sp\public\sdk\inc\winbase.h
+FILE 6025 f:\sp\public\sdk\inc\wingdi.h
+FILE 6026 f:\sp\vctools\langapi\include\ehdata.h
+FILE 6027 f:\sp\public\sdk\inc\winver.h
+FILE 6028 f:\sp\public\sdk\inc\winnt.h
+FILE 6029 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h
+FILE 6030 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdlib.h
+FILE 6031 f:\sp\public\sdk\inc\pshpack2.h
+FILE 6032 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\limits.h
+FILE 6033 f:\sp\public\sdk\inc\reason.h
+FILE 6034 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\eh\frame.cpp
+FILE 6035 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\exception
+FILE 6036 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\typeinfo.h
+FILE 6037 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\typeinfo
+FILE 6038 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\xstddef
+FILE 6039 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\yvals.h
+FILE 6040 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\use_ansi.h
+FILE 6041 f:\sp\public\sdk\inc\pshpack4.h
+FILE 6042 f:\sp\public\sdk\inc\winnetwk.h
+FILE 6043 f:\sp\public\sdk\inc\stralign.h
+FILE 6044 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\errno.h
+FILE 6045 f:\sp\public\sdk\inc\poppack.h
+FILE 6046 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stddef.h
+FILE 6047 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h
+FILE 6048 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h
+FILE 6049 f:\sp\public\sdk\inc\winsvc.h
+FILE 6050 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ehstate.h
+FILE 6051 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\eh.h
+FILE 6052 f:\sp\public\sdk\inc\winuser.h
+FILE 6053 f:\sp\public\sdk\inc\windows.h
+FILE 6054 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h
+FILE 6055 f:\sp\public\sdk\inc\mcx.h
+FILE 6056 f:\sp\public\sdk\inc\pshpack8.h
+FILE 6057 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\string.h
+FILE 6058 f:\sp\public\sdk\inc\specstrings.h
+FILE 6059 f:\sp\public\sdk\inc\basetsd.h
+FILE 6060 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ehhooks.h
+FILE 6061 f:\sp\public\sdk\inc\winnls.h
+FILE 6062 f:\sp\public\sdk\inc\pshpack1.h
+FILE 6063 f:\sp\public\sdk\inc\winerror.h
+FILE 6064 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\trnsctrl.h
+FILE 6065 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\internal.h
+FILE 6066 f:\sp\public\sdk\inc\winreg.h
+FILE 6067 f:\sp\public\sdk\inc\ddbanned.h
+FILE 6068 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h
+FILE 6069 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\cstddef
+FILE 6070 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h
+FILE 6071 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\mtdll.h
+FILE 6072 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h
+FILE 6073 f:\sp\public\sdk\inc\windef.h
+FILE 6074 f:\sp\public\sdk\inc\tvout.h
+FILE 6075 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 6076 f:\sp\public\sdk\inc\pshpack4.h
+FILE 6077 f:\sp\public\sdk\inc\reason.h
+FILE 6078 f:\sp\public\sdk\inc\wincon.h
+FILE 6079 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 6080 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 6081 f:\sp\public\sdk\inc\poppack.h
+FILE 6082 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 6083 f:\sp\public\sdk\inc\mcx.h
+FILE 6084 f:\sp\public\sdk\inc\winuser.h
+FILE 6085 f:\sp\public\sdk\inc\winnls.h
+FILE 6086 f:\sp\public\sdk\inc\stralign.h
+FILE 6087 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 6088 f:\sp\public\sdk\inc\windef.h
+FILE 6089 f:\sp\public\sdk\inc\tvout.h
+FILE 6090 f:\sp\public\sdk\inc\winsvc.h
+FILE 6091 f:\sp\public\sdk\inc\wingdi.h
+FILE 6092 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 6093 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 6094 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 6095 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 6096 f:\sp\public\sdk\inc\winnt.h
+FILE 6097 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 6098 f:\sp\public\sdk\inc\winnetwk.h
+FILE 6099 f:\sp\public\sdk\inc\imm.h
+FILE 6100 f:\sp\vctools\crt_bld\self_x86\crt\src\dosmap.c
+FILE 6101 f:\sp\public\sdk\inc\winbase.h
+FILE 6102 f:\sp\public\sdk\inc\winerror.h
+FILE 6103 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 6104 f:\sp\public\sdk\inc\pshpack1.h
+FILE 6105 f:\sp\public\sdk\inc\pshpack8.h
+FILE 6106 f:\sp\public\sdk\inc\winver.h
+FILE 6107 f:\sp\public\sdk\inc\ddbanned.h
+FILE 6108 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 6109 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 6110 f:\sp\public\sdk\inc\pshpack2.h
+FILE 6111 f:\sp\public\sdk\inc\winreg.h
+FILE 6112 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 6113 f:\sp\public\sdk\inc\guiddef.h
+FILE 6114 f:\sp\public\sdk\inc\windows.h
+FILE 6115 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 6116 f:\sp\public\sdk\inc\specstrings.h
+FILE 6117 f:\sp\public\sdk\inc\basetsd.h
+FILE 6118 f:\sp\public\sdk\inc\winver.h
+FILE 6119 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 6120 f:\sp\public\sdk\inc\pshpack2.h
+FILE 6121 f:\sp\public\sdk\inc\windows.h
+FILE 6122 f:\sp\public\sdk\inc\reason.h
+FILE 6123 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 6124 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 6125 f:\sp\public\sdk\inc\specstrings.h
+FILE 6126 f:\sp\public\sdk\inc\basetsd.h
+FILE 6127 f:\sp\public\sdk\inc\pshpack4.h
+FILE 6128 f:\sp\vctools\crt_bld\self_x86\crt\src\wctomb.c
+FILE 6129 f:\sp\public\sdk\inc\winnetwk.h
+FILE 6130 f:\sp\public\sdk\inc\stralign.h
+FILE 6131 f:\sp\public\sdk\inc\poppack.h
+FILE 6132 f:\sp\public\sdk\inc\winsvc.h
+FILE 6133 f:\sp\public\sdk\inc\winuser.h
+FILE 6134 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 6135 f:\sp\public\sdk\inc\windef.h
+FILE 6136 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 6137 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 6138 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 6139 f:\sp\public\sdk\inc\mcx.h
+FILE 6140 f:\sp\public\sdk\inc\pshpack8.h
+FILE 6141 f:\sp\public\sdk\inc\guiddef.h
+FILE 6142 f:\sp\public\sdk\inc\winnls.h
+FILE 6143 f:\sp\public\sdk\inc\pshpack1.h
+FILE 6144 f:\sp\public\sdk\inc\winnt.h
+FILE 6145 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 6146 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 6147 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 6148 f:\sp\public\sdk\inc\winerror.h
+FILE 6149 f:\sp\public\sdk\inc\winreg.h
+FILE 6150 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 6151 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 6152 f:\sp\public\sdk\inc\tvout.h
+FILE 6153 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 6154 f:\sp\public\sdk\inc\ddbanned.h
+FILE 6155 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 6156 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 6157 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 6158 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 6159 f:\sp\public\sdk\inc\wincon.h
+FILE 6160 f:\sp\public\sdk\inc\imm.h
+FILE 6161 f:\sp\public\sdk\inc\winbase.h
+FILE 6162 f:\sp\public\sdk\inc\wingdi.h
+FILE 6163 f:\sp\public\sdk\inc\winsvc.h
+FILE 6164 f:\sp\public\sdk\inc\winuser.h
+FILE 6165 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 6166 f:\sp\public\sdk\inc\mcx.h
+FILE 6167 f:\sp\public\sdk\inc\pshpack8.h
+FILE 6168 f:\sp\public\sdk\inc\guiddef.h
+FILE 6169 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 6170 f:\sp\public\sdk\inc\windows.h
+FILE 6171 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 6172 f:\sp\public\sdk\inc\winnls.h
+FILE 6173 f:\sp\vctools\crt_bld\self_x86\crt\src\wcstol.c
+FILE 6174 f:\sp\public\sdk\inc\pshpack1.h
+FILE 6175 f:\sp\public\sdk\inc\winerror.h
+FILE 6176 f:\sp\public\sdk\inc\winreg.h
+FILE 6177 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 6178 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 6179 f:\sp\public\sdk\inc\tvout.h
+FILE 6180 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 6181 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 6182 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 6183 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 6184 f:\sp\public\sdk\inc\wincon.h
+FILE 6185 f:\sp\public\sdk\inc\imm.h
+FILE 6186 f:\sp\public\sdk\inc\winbase.h
+FILE 6187 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 6188 f:\sp\public\sdk\inc\wingdi.h
+FILE 6189 f:\sp\public\sdk\inc\windef.h
+FILE 6190 f:\sp\public\sdk\inc\winver.h
+FILE 6191 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 6192 f:\sp\public\sdk\inc\pshpack2.h
+FILE 6193 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 6194 f:\sp\public\sdk\inc\reason.h
+FILE 6195 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 6196 f:\sp\public\sdk\inc\winnt.h
+FILE 6197 f:\sp\public\sdk\inc\specstrings.h
+FILE 6198 f:\sp\public\sdk\inc\basetsd.h
+FILE 6199 f:\sp\public\sdk\inc\pshpack4.h
+FILE 6200 f:\sp\public\sdk\inc\ddbanned.h
+FILE 6201 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 6202 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 6203 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 6204 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 6205 f:\sp\public\sdk\inc\winnetwk.h
+FILE 6206 f:\sp\public\sdk\inc\stralign.h
+FILE 6207 f:\sp\public\sdk\inc\poppack.h
+FILE 6208 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 6209 f:\sp\public\sdk\inc\mcx.h
+FILE 6210 f:\sp\public\sdk\inc\pshpack8.h
+FILE 6211 f:\sp\public\sdk\inc\guiddef.h
+FILE 6212 f:\sp\public\sdk\inc\winnt.h
+FILE 6213 f:\sp\public\sdk\inc\winnls.h
+FILE 6214 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 6215 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 6216 f:\sp\public\sdk\inc\pshpack1.h
+FILE 6217 f:\sp\public\sdk\inc\winerror.h
+FILE 6218 f:\sp\vctools\crt_bld\self_x86\crt\src\tolower.c
+FILE 6219 f:\sp\public\sdk\inc\winreg.h
+FILE 6220 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 6221 f:\sp\public\sdk\inc\tvout.h
+FILE 6222 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 6223 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 6224 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 6225 f:\sp\public\sdk\inc\wincon.h
+FILE 6226 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 6227 f:\sp\public\sdk\inc\imm.h
+FILE 6228 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 6229 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 6230 f:\sp\public\sdk\inc\winbase.h
+FILE 6231 f:\sp\public\sdk\inc\wingdi.h
+FILE 6232 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 6233 f:\sp\public\sdk\inc\winver.h
+FILE 6234 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h
+FILE 6235 f:\sp\public\sdk\inc\windows.h
+FILE 6236 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 6237 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 6238 f:\sp\public\sdk\inc\pshpack2.h
+FILE 6239 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 6240 f:\sp\public\sdk\inc\reason.h
+FILE 6241 f:\sp\public\sdk\inc\specstrings.h
+FILE 6242 f:\sp\public\sdk\inc\basetsd.h
+FILE 6243 f:\sp\public\sdk\inc\pshpack4.h
+FILE 6244 f:\sp\public\sdk\inc\winnetwk.h
+FILE 6245 f:\sp\public\sdk\inc\ddbanned.h
+FILE 6246 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 6247 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 6248 f:\sp\public\sdk\inc\stralign.h
+FILE 6249 f:\sp\public\sdk\inc\poppack.h
+FILE 6250 f:\sp\public\sdk\inc\winsvc.h
+FILE 6251 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 6252 f:\sp\public\sdk\inc\windef.h
+FILE 6253 f:\sp\public\sdk\inc\winuser.h
+FILE 6254 f:\sp\public\sdk\inc\winsvc.h
+FILE 6255 f:\sp\public\sdk\inc\winuser.h
+FILE 6256 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 6257 f:\sp\public\sdk\inc\mcx.h
+FILE 6258 f:\sp\public\sdk\inc\pshpack8.h
+FILE 6259 f:\sp\public\sdk\inc\guiddef.h
+FILE 6260 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 6261 f:\sp\public\sdk\inc\windows.h
+FILE 6262 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 6263 f:\sp\public\sdk\inc\winnls.h
+FILE 6264 f:\sp\vctools\crt_bld\self_x86\crt\src\strtoq.c
+FILE 6265 f:\sp\public\sdk\inc\pshpack1.h
+FILE 6266 f:\sp\public\sdk\inc\winerror.h
+FILE 6267 f:\sp\public\sdk\inc\winreg.h
+FILE 6268 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 6269 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 6270 f:\sp\public\sdk\inc\tvout.h
+FILE 6271 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 6272 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 6273 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 6274 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 6275 f:\sp\public\sdk\inc\wincon.h
+FILE 6276 f:\sp\public\sdk\inc\imm.h
+FILE 6277 f:\sp\public\sdk\inc\winbase.h
+FILE 6278 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 6279 f:\sp\public\sdk\inc\wingdi.h
+FILE 6280 f:\sp\public\sdk\inc\windef.h
+FILE 6281 f:\sp\public\sdk\inc\winver.h
+FILE 6282 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 6283 f:\sp\public\sdk\inc\pshpack2.h
+FILE 6284 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 6285 f:\sp\public\sdk\inc\reason.h
+FILE 6286 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 6287 f:\sp\public\sdk\inc\winnt.h
+FILE 6288 f:\sp\public\sdk\inc\specstrings.h
+FILE 6289 f:\sp\public\sdk\inc\basetsd.h
+FILE 6290 f:\sp\public\sdk\inc\pshpack4.h
+FILE 6291 f:\sp\public\sdk\inc\ddbanned.h
+FILE 6292 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 6293 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 6294 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 6295 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 6296 f:\sp\public\sdk\inc\winnetwk.h
+FILE 6297 f:\sp\public\sdk\inc\stralign.h
+FILE 6298 f:\sp\public\sdk\inc\poppack.h
+FILE 6299 f:\sp\public\sdk\inc\winsvc.h
+FILE 6300 f:\sp\public\sdk\inc\winuser.h
+FILE 6301 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 6302 f:\sp\public\sdk\inc\mcx.h
+FILE 6303 f:\sp\public\sdk\inc\pshpack8.h
+FILE 6304 f:\sp\public\sdk\inc\guiddef.h
+FILE 6305 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 6306 f:\sp\public\sdk\inc\windows.h
+FILE 6307 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 6308 f:\sp\public\sdk\inc\winnls.h
+FILE 6309 f:\sp\vctools\crt_bld\self_x86\crt\src\strtol.c
+FILE 6310 f:\sp\public\sdk\inc\pshpack1.h
+FILE 6311 f:\sp\public\sdk\inc\winerror.h
+FILE 6312 f:\sp\public\sdk\inc\winreg.h
+FILE 6313 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 6314 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 6315 f:\sp\public\sdk\inc\tvout.h
+FILE 6316 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 6317 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 6318 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 6319 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 6320 f:\sp\public\sdk\inc\wincon.h
+FILE 6321 f:\sp\public\sdk\inc\imm.h
+FILE 6322 f:\sp\public\sdk\inc\winbase.h
+FILE 6323 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 6324 f:\sp\public\sdk\inc\wingdi.h
+FILE 6325 f:\sp\public\sdk\inc\windef.h
+FILE 6326 f:\sp\public\sdk\inc\winver.h
+FILE 6327 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 6328 f:\sp\public\sdk\inc\pshpack2.h
+FILE 6329 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 6330 f:\sp\public\sdk\inc\reason.h
+FILE 6331 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 6332 f:\sp\public\sdk\inc\winnt.h
+FILE 6333 f:\sp\public\sdk\inc\specstrings.h
+FILE 6334 f:\sp\public\sdk\inc\basetsd.h
+FILE 6335 f:\sp\public\sdk\inc\pshpack4.h
+FILE 6336 f:\sp\public\sdk\inc\ddbanned.h
+FILE 6337 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 6338 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 6339 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 6340 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 6341 f:\sp\public\sdk\inc\winnetwk.h
+FILE 6342 f:\sp\public\sdk\inc\stralign.h
+FILE 6343 f:\sp\public\sdk\inc\poppack.h
+FILE 6344 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 6345 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 6346 f:\sp\public\sdk\inc\tvout.h
+FILE 6347 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 6348 f:\sp\public\sdk\inc\wincon.h
+FILE 6349 f:\sp\public\sdk\inc\imm.h
+FILE 6350 f:\sp\public\sdk\inc\winbase.h
+FILE 6351 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 6352 f:\sp\public\sdk\inc\wingdi.h
+FILE 6353 f:\sp\public\sdk\inc\windef.h
+FILE 6354 f:\sp\public\sdk\inc\winver.h
+FILE 6355 f:\sp\vctools\crt_bld\self_x86\crt\src\mbtowc.c
+FILE 6356 f:\sp\public\sdk\inc\pshpack2.h
+FILE 6357 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 6358 f:\sp\public\sdk\inc\reason.h
+FILE 6359 f:\sp\public\sdk\inc\winnt.h
+FILE 6360 f:\sp\public\sdk\inc\specstrings.h
+FILE 6361 f:\sp\public\sdk\inc\basetsd.h
+FILE 6362 f:\sp\public\sdk\inc\pshpack4.h
+FILE 6363 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 6364 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 6365 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 6366 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 6367 f:\sp\public\sdk\inc\winnetwk.h
+FILE 6368 f:\sp\public\sdk\inc\stralign.h
+FILE 6369 f:\sp\public\sdk\inc\poppack.h
+FILE 6370 f:\sp\public\sdk\inc\winsvc.h
+FILE 6371 f:\sp\public\sdk\inc\winuser.h
+FILE 6372 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 6373 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 6374 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 6375 f:\sp\public\sdk\inc\mcx.h
+FILE 6376 f:\sp\public\sdk\inc\pshpack8.h
+FILE 6377 f:\sp\public\sdk\inc\guiddef.h
+FILE 6378 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 6379 f:\sp\public\sdk\inc\windows.h
+FILE 6380 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 6381 f:\sp\public\sdk\inc\winnls.h
+FILE 6382 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 6383 f:\sp\public\sdk\inc\pshpack1.h
+FILE 6384 f:\sp\public\sdk\inc\ddbanned.h
+FILE 6385 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 6386 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 6387 f:\sp\public\sdk\inc\winerror.h
+FILE 6388 f:\sp\public\sdk\inc\winreg.h
+FILE 6389 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 6390 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 6391 f:\sp\public\sdk\inc\winreg.h
+FILE 6392 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 6393 f:\sp\public\sdk\inc\tvout.h
+FILE 6394 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 6395 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 6396 f:\sp\public\sdk\inc\wincon.h
+FILE 6397 f:\sp\public\sdk\inc\imm.h
+FILE 6398 f:\sp\public\sdk\inc\winbase.h
+FILE 6399 f:\sp\vctools\crt_bld\self_x86\crt\src\isctype.c
+FILE 6400 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 6401 f:\sp\public\sdk\inc\wingdi.h
+FILE 6402 f:\sp\public\sdk\inc\windef.h
+FILE 6403 f:\sp\public\sdk\inc\winver.h
+FILE 6404 f:\sp\public\sdk\inc\pshpack2.h
+FILE 6405 f:\sp\public\sdk\inc\reason.h
+FILE 6406 f:\sp\public\sdk\inc\winnt.h
+FILE 6407 f:\sp\public\sdk\inc\specstrings.h
+FILE 6408 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 6409 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 6410 f:\sp\public\sdk\inc\basetsd.h
+FILE 6411 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 6412 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 6413 f:\sp\public\sdk\inc\pshpack4.h
+FILE 6414 f:\sp\public\sdk\inc\winnetwk.h
+FILE 6415 f:\sp\public\sdk\inc\stralign.h
+FILE 6416 f:\sp\public\sdk\inc\poppack.h
+FILE 6417 f:\sp\public\sdk\inc\winsvc.h
+FILE 6418 f:\sp\public\sdk\inc\winuser.h
+FILE 6419 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 6420 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 6421 f:\sp\public\sdk\inc\mcx.h
+FILE 6422 f:\sp\public\sdk\inc\pshpack8.h
+FILE 6423 f:\sp\public\sdk\inc\guiddef.h
+FILE 6424 f:\sp\public\sdk\inc\ddbanned.h
+FILE 6425 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 6426 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h
+FILE 6427 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 6428 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 6429 f:\sp\public\sdk\inc\windows.h
+FILE 6430 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 6431 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 6432 f:\sp\public\sdk\inc\winnls.h
+FILE 6433 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 6434 f:\sp\public\sdk\inc\pshpack1.h
+FILE 6435 f:\sp\public\sdk\inc\winerror.h
+FILE 6436 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 6437 f:\sp\public\sdk\inc\winreg.h
+FILE 6438 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 6439 f:\sp\public\sdk\inc\tvout.h
+FILE 6440 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 6441 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 6442 f:\sp\public\sdk\inc\wincon.h
+FILE 6443 f:\sp\public\sdk\inc\imm.h
+FILE 6444 f:\sp\public\sdk\inc\winbase.h
+FILE 6445 f:\sp\vctools\crt_bld\self_x86\crt\src\iswctype.c
+FILE 6446 f:\sp\public\sdk\inc\wingdi.h
+FILE 6447 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 6448 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 6449 f:\sp\public\sdk\inc\winver.h
+FILE 6450 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h
+FILE 6451 f:\sp\public\sdk\inc\windows.h
+FILE 6452 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 6453 f:\sp\public\sdk\inc\pshpack2.h
+FILE 6454 f:\sp\public\sdk\inc\reason.h
+FILE 6455 f:\sp\public\sdk\inc\specstrings.h
+FILE 6456 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 6457 f:\sp\public\sdk\inc\basetsd.h
+FILE 6458 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 6459 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 6460 f:\sp\public\sdk\inc\pshpack4.h
+FILE 6461 f:\sp\public\sdk\inc\winnetwk.h
+FILE 6462 f:\sp\public\sdk\inc\stralign.h
+FILE 6463 f:\sp\public\sdk\inc\poppack.h
+FILE 6464 f:\sp\public\sdk\inc\winsvc.h
+FILE 6465 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 6466 f:\sp\public\sdk\inc\windef.h
+FILE 6467 f:\sp\public\sdk\inc\winuser.h
+FILE 6468 f:\sp\public\sdk\inc\mcx.h
+FILE 6469 f:\sp\public\sdk\inc\pshpack8.h
+FILE 6470 f:\sp\public\sdk\inc\guiddef.h
+FILE 6471 f:\sp\public\sdk\inc\ddbanned.h
+FILE 6472 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 6473 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 6474 f:\sp\public\sdk\inc\winnt.h
+FILE 6475 f:\sp\public\sdk\inc\winnls.h
+FILE 6476 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 6477 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 6478 f:\sp\public\sdk\inc\pshpack1.h
+FILE 6479 f:\sp\public\sdk\inc\winerror.h
+FILE 6480 f:\sp\public\sdk\inc\winsvc.h
+FILE 6481 f:\sp\public\sdk\inc\winuser.h
+FILE 6482 f:\sp\public\sdk\inc\mcx.h
+FILE 6483 f:\sp\public\sdk\inc\pshpack8.h
+FILE 6484 f:\sp\public\sdk\inc\guiddef.h
+FILE 6485 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 6486 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 6487 f:\sp\public\sdk\inc\windows.h
+FILE 6488 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 6489 f:\sp\public\sdk\inc\winnls.h
+FILE 6490 f:\sp\vctools\crt_bld\self_x86\crt\src\_wctype.c
+FILE 6491 f:\sp\public\sdk\inc\pshpack1.h
+FILE 6492 f:\sp\public\sdk\inc\winerror.h
+FILE 6493 f:\sp\public\sdk\inc\winreg.h
+FILE 6494 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 6495 f:\sp\public\sdk\inc\tvout.h
+FILE 6496 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 6497 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 6498 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 6499 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 6500 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 6501 f:\sp\public\sdk\inc\wincon.h
+FILE 6502 f:\sp\public\sdk\inc\imm.h
+FILE 6503 f:\sp\public\sdk\inc\winbase.h
+FILE 6504 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 6505 f:\sp\public\sdk\inc\wingdi.h
+FILE 6506 f:\sp\public\sdk\inc\windef.h
+FILE 6507 f:\sp\vctools\crt_bld\self_x86\crt\src\mbctype.h
+FILE 6508 f:\sp\public\sdk\inc\winver.h
+FILE 6509 f:\sp\public\sdk\inc\pshpack2.h
+FILE 6510 f:\sp\public\sdk\inc\reason.h
+FILE 6511 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 6512 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 6513 f:\sp\public\sdk\inc\winnt.h
+FILE 6514 f:\sp\public\sdk\inc\specstrings.h
+FILE 6515 f:\sp\public\sdk\inc\basetsd.h
+FILE 6516 f:\sp\public\sdk\inc\pshpack4.h
+FILE 6517 f:\sp\public\sdk\inc\ddbanned.h
+FILE 6518 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 6519 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 6520 f:\sp\public\sdk\inc\winnetwk.h
+FILE 6521 f:\sp\public\sdk\inc\stralign.h
+FILE 6522 f:\sp\public\sdk\inc\poppack.h
+FILE 6523 f:\sp\public\sdk\inc\mcx.h
+FILE 6524 f:\sp\public\sdk\inc\pshpack8.h
+FILE 6525 f:\sp\public\sdk\inc\guiddef.h
+FILE 6526 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 6527 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 6528 f:\sp\public\sdk\inc\windows.h
+FILE 6529 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 6530 f:\sp\public\sdk\inc\winnls.h
+FILE 6531 f:\sp\public\sdk\inc\pshpack1.h
+FILE 6532 f:\sp\public\sdk\inc\winerror.h
+FILE 6533 f:\sp\public\sdk\inc\winreg.h
+FILE 6534 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 6535 f:\sp\vctools\crt_bld\self_x86\crt\src\_ctype.c
+FILE 6536 f:\sp\public\sdk\inc\tvout.h
+FILE 6537 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 6538 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 6539 f:\sp\public\sdk\inc\wincon.h
+FILE 6540 f:\sp\public\sdk\inc\imm.h
+FILE 6541 f:\sp\public\sdk\inc\winbase.h
+FILE 6542 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 6543 f:\sp\public\sdk\inc\wingdi.h
+FILE 6544 f:\sp\public\sdk\inc\windef.h
+FILE 6545 f:\sp\public\sdk\inc\winver.h
+FILE 6546 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 6547 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 6548 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 6549 f:\sp\public\sdk\inc\pshpack2.h
+FILE 6550 f:\sp\public\sdk\inc\reason.h
+FILE 6551 f:\sp\public\sdk\inc\winnt.h
+FILE 6552 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 6553 f:\sp\public\sdk\inc\specstrings.h
+FILE 6554 f:\sp\public\sdk\inc\basetsd.h
+FILE 6555 f:\sp\public\sdk\inc\pshpack4.h
+FILE 6556 f:\sp\public\sdk\inc\winnetwk.h
+FILE 6557 f:\sp\public\sdk\inc\stralign.h
+FILE 6558 f:\sp\public\sdk\inc\poppack.h
+FILE 6559 f:\sp\public\sdk\inc\winsvc.h
+FILE 6560 f:\sp\public\sdk\inc\ddbanned.h
+FILE 6561 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 6562 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 6563 f:\sp\public\sdk\inc\winuser.h
+FILE 6564 f:\sp\public\sdk\inc\pshpack2.h
+FILE 6565 f:\sp\public\sdk\inc\mcx.h
+FILE 6566 f:\sp\public\sdk\inc\winuser.h
+FILE 6567 f:\sp\public\sdk\inc\winnls.h
+FILE 6568 f:\sp\public\sdk\inc\stralign.h
+FILE 6569 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 6570 f:\sp\public\sdk\inc\windef.h
+FILE 6571 f:\sp\public\sdk\inc\tvout.h
+FILE 6572 f:\sp\public\sdk\inc\winsvc.h
+FILE 6573 f:\sp\vctools\crt_bld\self_x86\crt\src\internal_securecrt.h
+FILE 6574 f:\sp\public\sdk\inc\wingdi.h
+FILE 6575 f:\sp\public\sdk\inc\pshpack4.h
+FILE 6576 f:\sp\public\sdk\inc\poppack.h
+FILE 6577 f:\sp\public\sdk\inc\winnt.h
+FILE 6578 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 6579 f:\sp\public\sdk\inc\winnetwk.h
+FILE 6580 f:\sp\public\sdk\inc\imm.h
+FILE 6581 f:\sp\vctools\crt_bld\self_x86\crt\src\xtoa.c
+FILE 6582 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 6583 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 6584 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 6585 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 6586 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h
+FILE 6587 f:\sp\vctools\crt_bld\self_x86\crt\src\xtoas.c
+FILE 6588 f:\sp\public\sdk\inc\pshpack1.h
+FILE 6589 f:\sp\public\sdk\inc\winver.h
+FILE 6590 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 6591 f:\sp\public\sdk\inc\guiddef.h
+FILE 6592 f:\sp\public\sdk\inc\specstrings.h
+FILE 6593 f:\sp\public\sdk\inc\basetsd.h
+FILE 6594 f:\sp\public\sdk\inc\winreg.h
+FILE 6595 f:\sp\public\sdk\inc\ddbanned.h
+FILE 6596 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 6597 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 6598 f:\sp\public\sdk\inc\windows.h
+FILE 6599 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 6600 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 6601 f:\sp\public\sdk\inc\winbase.h
+FILE 6602 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 6603 f:\sp\public\sdk\inc\winerror.h
+FILE 6604 f:\sp\public\sdk\inc\pshpack8.h
+FILE 6605 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h
+FILE 6606 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 6607 f:\sp\public\sdk\inc\reason.h
+FILE 6608 f:\sp\public\sdk\inc\wincon.h
+FILE 6609 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 6610 f:\sp\vctools\crt_bld\self_x86\crt\src\wchar.h
+FILE 6611 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 6612 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 6613 f:\sp\vctools\crt_bld\self_x86\crt\src\wchtodig.c
+FILE 6614 f:\sp\public\sdk\inc\ddbanned.h
+FILE 6615 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 6616 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 6617 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl
+FILE 6618 f:\sp\public\sdk\inc\poppack.h
+FILE 6619 f:\sp\public\sdk\inc\winnetwk.h
+FILE 6620 f:\sp\public\sdk\inc\imm.h
+FILE 6621 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 6622 f:\sp\public\sdk\inc\windef.h
+FILE 6623 f:\sp\public\sdk\inc\pshpack1.h
+FILE 6624 f:\sp\public\sdk\inc\winver.h
+FILE 6625 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 6626 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 6627 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 6628 f:\sp\public\sdk\inc\winnt.h
+FILE 6629 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 6630 f:\sp\public\sdk\inc\winreg.h
+FILE 6631 f:\sp\vctools\crt_bld\self_x86\crt\src\atox.c
+FILE 6632 f:\sp\public\sdk\inc\winbase.h
+FILE 6633 f:\sp\public\sdk\inc\winerror.h
+FILE 6634 f:\sp\public\sdk\inc\pshpack8.h
+FILE 6635 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 6636 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 6637 f:\sp\public\sdk\inc\reason.h
+FILE 6638 f:\sp\public\sdk\inc\wincon.h
+FILE 6639 f:\sp\public\sdk\inc\ddbanned.h
+FILE 6640 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 6641 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 6642 f:\sp\public\sdk\inc\pshpack2.h
+FILE 6643 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h
+FILE 6644 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 6645 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h
+FILE 6646 f:\sp\public\sdk\inc\mcx.h
+FILE 6647 f:\sp\public\sdk\inc\winuser.h
+FILE 6648 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 6649 f:\sp\public\sdk\inc\winnls.h
+FILE 6650 f:\sp\public\sdk\inc\guiddef.h
+FILE 6651 f:\sp\public\sdk\inc\windows.h
+FILE 6652 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 6653 f:\sp\vctools\crt_bld\self_x86\crt\src\mbctype.h
+FILE 6654 f:\sp\public\sdk\inc\specstrings.h
+FILE 6655 f:\sp\public\sdk\inc\basetsd.h
+FILE 6656 f:\sp\public\sdk\inc\stralign.h
+FILE 6657 f:\sp\public\sdk\inc\tvout.h
+FILE 6658 f:\sp\public\sdk\inc\winsvc.h
+FILE 6659 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 6660 f:\sp\public\sdk\inc\wingdi.h
+FILE 6661 f:\sp\public\sdk\inc\pshpack4.h
+FUNC 1000 13 4 vswprintf
+1000 0 50 71
+1000 12 51 71
+1012 1 52 71
+FUNC 1020 1b 10 wmemcpy_s
+1020 0 1230 66
+1020 1b 1233 66
+FUNC 1040 1b 10 wmemmove_s
+1040 0 1250 66
+1040 1b 1253 66
+FUNC 1060 19 4 std::bad_alloc::bad_alloc(char const *)
+1060 13 371 83
+1073 6 372 83
+FUNC 1080 b 0 std::bad_alloc::~bad_alloc()
+1080 6 380 83
+1086 5 381 83
+FUNC 1090 24 0 std::bad_alloc::`vector deleting destructor'(unsigned int)
+FUNC 10c0 f 8 std::char_traits<wchar_t>::assign(wchar_t &,wchar_t const &)
+10c0 0 302 70
+10c0 e 303 70
+10ce 1 304 70
+FUNC 10d0 17 4 std::char_traits<wchar_t>::length(wchar_t const *)
+10d0 0 325 70
+10d0 16 327 70
+10e6 1 328 70
+FUNC 10f0 27 10 std::char_traits<wchar_t>::_Copy_s(wchar_t *,unsigned int,wchar_t const *,unsigned int)
+10f0 0 340 70
+10f0 23 343 70
+1113 3 344 70
+1116 1 345 70
+FUNC 1120 27 10 std::char_traits<wchar_t>::_Move_s(wchar_t *,unsigned int,wchar_t const *,unsigned int)
+1120 0 364 70
+1120 23 367 70
+1143 3 368 70
+1146 1 369 70
+FUNC 1150 d 8 std::char_traits<char>::assign(char &,char const &)
+1150 0 417 70
+1150 c 418 70
+115c 1 419 70
+FUNC 1160 13 4 std::char_traits<char>::length(char const *)
+1160 0 440 70
+1160 12 442 70
+1172 1 443 70
+FUNC 1180 21 10 std::char_traits<char>::_Copy_s(char *,unsigned int,char const *,unsigned int)
+1180 0 455 70
+1180 1d 458 70
+119d 3 459 70
+11a0 1 460 70
+FUNC 11b0 21 10 std::char_traits<char>::_Move_s(char *,unsigned int,char const *,unsigned int)
+11b0 0 479 70
+11b0 1d 482 70
+11cd 3 483 70
+11d0 1 484 70
+FUNC 11e0 7 0 std::_Iterator_base::_Iterator_base()
+11e0 6 441 65
+11e6 1 442 65
+FUNC 11f0 6b 4 std::logic_error::logic_error(std::basic_string<char,std::char_traits<char>,std::allocator<char> > const &)
+11f0 56 27 82
+1246 15 28 82
+FUNC 1260 32 0 std::logic_error::~logic_error()
+1260 9 31 82
+1269 29 32 82
+FUNC 12a0 e 0 std::logic_error::what()
+12a0 0 35 82
+12a0 9 36 82
+12a9 1 37 82
+12aa 3 36 82
+12ad 1 37 82
+FUNC 12b0 47 0 std::logic_error::`scalar deleting destructor'(unsigned int)
+FUNC 1300 19 4 std::length_error::length_error(std::basic_string<char,std::char_traits<char>,std::allocator<char> > const &)
+1300 13 106 82
+1313 6 107 82
+FUNC 1320 32 0 std::length_error::~length_error()
+1320 3 110 82
+1323 2f 111 82
+FUNC 1360 47 0 std::length_error::`vector deleting destructor'(unsigned int)
+FUNC 13b0 19 4 std::out_of_range::out_of_range(std::basic_string<char,std::char_traits<char>,std::allocator<char> > const &)
+13b0 13 130 82
+13c3 6 131 82
+FUNC 13d0 32 0 std::out_of_range::~out_of_range()
+13d0 3 134 82
+13d3 2f 135 82
+FUNC 1410 47 0 std::out_of_range::`vector deleting destructor'(unsigned int)
+FUNC 1460 19 4 std::out_of_range::out_of_range(std::out_of_range const &)
+FUNC 1480 71 4 std::logic_error::logic_error(std::logic_error const &)
+FUNC 1500 1b 8 google_breakpad::WindowsStringUtils::safe_swprintf(wchar_t *,unsigned int,wchar_t const *,...)
+1500 0 94 63
+1500 1a 97 63
+151a 1 105 63
+FUNC 1520 35 0 google_breakpad::ExceptionHandler::set_dump_path(std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > const &)
+1520 4 137 43
+1524 f 138 43
+1533 c 139 43
+153f 7 140 43
+1546 1 141 43
+1547 6 139 43
+154d 7 140 43
+1554 1 141 43
+FUNC 1560 20b 14 google_breakpad::ExceptionHandler::ExceptionHandler(std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > const &,bool (*)(void *,_EXCEPTION_POINTERS *,MDRawAssertionInfo *),bool (*)(wchar_t const *,wchar_t const *,void *,_EXCEPTION_POINTERS *,MDRawAssertionInfo *,bool),void *,bool)
+1560 6d 75 12
+15cd 90 78 12
+165d 9 86 12
+1666 d 87 12
+1673 d 88 12
+1680 1e 96 12
+169e 11 98 12
+16af 7 99 12
+16b6 f 101 12
+16c5 a 104 12
+16cf 8 105 12
+16d7 7 106 12
+16de 7 107 12
+16e5 b 110 12
+16f0 8 114 12
+16f8 25 115 12
+171d d 117 12
+172a b 118 12
+1735 10 121 12
+1745 e 124 12
+1753 18 126 12
+FUNC 1770 274 0 google_breakpad::ExceptionHandler::~ExceptionHandler()
+1770 e 128 12
+177e a 129 12
+1788 7 130 12
+178f a 133 12
+1799 b 134 12
+17a4 a 136 12
+17ae 9 139 12
+17b7 63 142 12
+181a 23 143 12
+183d 5 144 12
+1842 13 147 12
+1855 2b 149 12
+1880 2a 151 12
+18aa 17 152 12
+18c1 2c 153 12
+18ed 19 151 12
+1906 11 158 12
+1917 23 161 12
+193a 6 162 12
+1940 d 165 12
+194d f 169 12
+195c d 170 12
+1969 f 171 12
+1978 9 172 12
+1981 63 173 12
+FUNC 19f0 31 0 std::vector<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::`scalar deleting destructor'(unsigned int)
+FUNC 1a30 51 4 google_breakpad::ExceptionHandler::ExceptionHandlerThreadMain(void *)
+1a30 13 176 12
+1a43 f 182 12
+1a52 1a 185 12
+1a6c 13 188 12
+1a7f 2 190 12
+FUNC 1a90 c7 4 google_breakpad::AutoExceptionHandler::AutoExceptionHandler()
+1a90 7 204 12
+1a97 b 221 12
+1aa2 82 224 12
+1b24 d 225 12
+1b31 c 229 12
+1b3d e 231 12
+1b4b c 233 12
+FUNC 1b60 36 0 google_breakpad::AutoExceptionHandler::~AutoExceptionHandler()
+1b60 0 235 12
+1b60 b 237 12
+1b6b d 239 12
+1b78 b 242 12
+1b83 7 243 12
+1b8a b 244 12
+1b95 1 245 12
+FUNC 1ba0 3 0 google_breakpad::AutoExceptionHandler::get_handler()
+1ba0 3 247 12
+FUNC 1bb0 c4 4 google_breakpad::ExceptionHandler::HandleException(_EXCEPTION_POINTERS *)
+1bb0 2b 254 12
+1bdb a 255 12
+1be5 f 262 12
+1bf4 1e 265 12
+1c12 5 273 12
+1c17 2 274 12
+1c19 7 283 12
+1c20 5 284 12
+1c25 2 285 12
+1c27 2 286 12
+1c29 37 290 12
+1c60 14 291 12
+FUNC 1c80 121 14 google_breakpad::ExceptionHandler::HandleInvalidParameter(wchar_t const *,wchar_t const *,wchar_t const *,unsigned int,unsigned int)
+1c80 40 299 12
+1cc0 b7 319 12
+1d77 7 320 12
+1d7e 14 323 12
+1d92 2 324 12
+1d94 5 337 12
+1d99 8 345 12
+FUNC 1db0 81 8 google_breakpad::ExceptionHandler::WriteMinidumpOnHandlerThread(_EXCEPTION_POINTERS *,MDRawAssertionInfo *)
+1db0 2 350 12
+1db2 d 351 12
+1dbf 6 354 12
+1dc5 2b 359 12
+1df0 f 362 12
+1dff 6 363 12
+1e05 26 370 12
+1e2b 3 372 12
+1e2e 3 373 12
+FUNC 1e40 1d 0 google_breakpad::ExceptionHandler::WriteMinidump()
+1e40 3 375 12
+1e43 b 376 12
+1e4e b 377 12
+1e59 3 378 12
+1e5c 1 379 12
+FUNC 1e60 a2 4 google_breakpad::ExceptionHandler::WriteMinidump(std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > const &,bool (*)(wchar_t const *,wchar_t const *,void *,_EXCEPTION_POINTERS *,MDRawAssertionInfo *,bool),void *)
+1e60 41 384 12
+1ea1 10 385 12
+1eb1 2a 386 12
+1edb 27 387 12
+FUNC 1f10 142 c google_breakpad::ExceptionHandler::WriteMinidumpWithException(unsigned long,_EXCEPTION_POINTERS *,MDRawAssertionInfo *)
+1f10 0 392 12
+1f10 22 399 12
+1f32 7 466 12
+1f39 2 403 12
+1f3b e 404 12
+1f49 1f 411 12
+1f68 9 412 12
+1f71 8 414 12
+1f79 4 415 12
+1f7d 8 416 12
+1f85 8 426 12
+1f8d a 427 12
+1f97 34 440 12
+1fcb 8 441 12
+1fd3 8 442 12
+1fdb 4 443 12
+1fdf 8 444 12
+1fe7 30 454 12
+2017 c 456 12
+2023 7 460 12
+202a 1e 462 12
+2048 4 465 12
+204c 6 466 12
+FUNC 2060 138 0 google_breakpad::ExceptionHandler::UpdateNextID()
+2060 38 468 12
+2098 b 470 12
+20a3 4a 471 12
+20ed 25 472 12
+2112 1c 477 12
+212e 31 478 12
+215f 14 479 12
+2173 25 480 12
+FUNC 21a0 3b 4 std::basic_string<char,std::char_traits<char>,std::allocator<char> >::basic_string<char,std::char_traits<char>,std::allocator<char> >(char const *)
+21a0 0 650 17
+21a0 35 652 17
+21d5 6 653 17
+FUNC 21e0 25 4 std::basic_string<char,std::char_traits<char>,std::allocator<char> >::basic_string<char,std::char_traits<char>,std::allocator<char> >(std::basic_string<char,std::char_traits<char>,std::allocator<char> > const &)
+21e0 1 720 17
+21e1 4 721 17
+21e5 1a 722 17
+21ff 6 723 17
+FUNC 2210 26 0 std::basic_string<char,std::char_traits<char>,std::allocator<char> >::~basic_string<char,std::char_traits<char>,std::allocator<char> >()
+2210 3 904 17
+2213 22 905 17
+2235 1 906 17
+FUNC 2240 e 0 std::basic_string<char,std::char_traits<char>,std::allocator<char> >::c_str()
+2240 0 1621 17
+2240 9 1622 17
+2249 1 1623 17
+224a 3 1622 17
+224d 1 1623 17
+FUNC 2250 4 0 std::basic_string<char,std::char_traits<char>,std::allocator<char> >::size()
+2250 0 1636 17
+2250 3 1637 17
+2253 1 1638 17
+FUNC 2260 11 0 std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >()
+2260 0 564 17
+2260 10 565 17
+2270 1 566 17
+FUNC 2280 27 0 std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::~basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >()
+2280 3 904 17
+2283 23 905 17
+22a6 1 906 17
+FUNC 22b0 b 0 std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::operator=(std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > const &)
+22b0 0 914 17
+22b0 a 915 17
+22ba 1 916 17
+FUNC 22c0 24 4 std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::operator=(wchar_t const *)
+22c0 0 919 17
+22c0 21 920 17
+22e1 3 921 17
+FUNC 22f0 e 0 std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::c_str()
+22f0 0 1621 17
+22f0 9 1622 17
+22f9 1 1623 17
+22fa 3 1622 17
+22fd 1 1623 17
+FUNC 2300 c 0 std::vector<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::vector<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >()
+2300 0 457 23
+2300 b 458 23
+230b 1 459 23
+FUNC 2310 26 0 std::vector<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::~vector<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >()
+2310 0 545 23
+2310 25 546 23
+2335 1 547 23
+FUNC 2340 1d 0 std::vector<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::begin()
+2340 1 627 23
+2341 1b 628 23
+235c 1 629 23
+FUNC 2360 1d 0 std::vector<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::end()
+2360 1 637 23
+2361 1b 638 23
+237c 1 639 23
+FUNC 2380 13 0 std::vector<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::size()
+2380 0 702 23
+2380 9 703 23
+2389 1 704 23
+238a 8 703 23
+2392 1 704 23
+FUNC 23a0 23 0 std::vector<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::empty()
+23a0 0 712 23
+23a0 10 713 23
+23b0 1 714 23
+23b1 11 713 23
+23c2 1 714 23
+FUNC 23d0 56 0 std::vector<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::at(unsigned int)
+23d0 b 729 23
+23db 15 730 23
+23f0 5 731 23
+23f5 29 732 23
+241e 8 733 23
+FUNC 2430 47 0 std::vector<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::back()
+2430 c 776 23
+243c 32 777 23
+246e 9 778 23
+FUNC 2480 68 0 std::vector<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::push_back(google_breakpad::ExceptionHandler * const &)
+2480 10 786 23
+2490 24 787 23
+24b4 d 796 23
+24c1 6 801 23
+24c7 1b 800 23
+24e2 6 801 23
+FUNC 24f0 23 0 std::vector<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::pop_back()
+24f0 6 818 23
+24f6 15 819 23
+250b 6 822 23
+2511 2 824 23
+FUNC 2520 3f 8 std::vector<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::erase(std::_Vector_iterator<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >)
+2520 7 996 23
+2527 24 998 23
+254b 11 1001 23
+255c 3 1002 23
+FUNC 2560 20 0 std::_Vector_iterator<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::operator*()
+2560 0 325 23
+2560 1c 326 23
+257c 1 327 23
+257d 2 326 23
+257f 1 327 23
+FUNC 2580 20 0 std::_Vector_iterator<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::operator++()
+2580 0 335 23
+2580 1d 336 23
+259d 2 337 23
+259f 1 338 23
+FUNC 25a0 1d 0 std::_Vector_const_iterator<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::operator!=(std::_Vector_const_iterator<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> > const &)
+25a0 0 202 23
+25a0 1c 203 23
+25bc 1 204 23
+FUNC 25c0 da c std::basic_string<char,std::char_traits<char>,std::allocator<char> >::assign(std::basic_string<char,std::char_traits<char>,std::allocator<char> > const &,unsigned int,unsigned int)
+25c0 1 1038 17
+25c1 12 1039 17
+25d3 5 1040 17
+25d8 3 1041 17
+25db a 1042 17
+25e5 2 1043 17
+25e7 4 1045 17
+25eb 17 1046 17
+2602 5 1052 17
+2607 3 1053 17
+260a 21 1047 17
+262b b 1049 17
+2636 13 1047 17
+2649 5 1052 17
+264e 3 1053 17
+2651 7 1047 17
+2658 5 1052 17
+265d 3 1053 17
+2660 22 1049 17
+2682 10 1050 17
+2692 5 1052 17
+2697 3 1053 17
+FUNC 26a0 27 4 std::basic_string<char,std::char_traits<char>,std::allocator<char> >::assign(char const *)
+26a0 1 1069 17
+26a1 23 1070 17
+26c4 3 1071 17
+FUNC 26d0 4a 8 std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Tidy(bool,unsigned int)
+26d0 0 2066 17
+26d0 f 2067 17
+26df 6 2069 17
+26e5 a 2072 17
+26ef d 2073 17
+26fc a 2074 17
+2706 11 2077 17
+2717 3 2078 17
+FUNC 2720 e 0 std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Myptr()
+2720 0 2092 17
+2720 9 2093 17
+2729 1 2094 17
+272a 3 2093 17
+272d 1 2094 17
+FUNC 2730 5 4 std::_String_val<char,std::allocator<char> >::_String_val<char,std::allocator<char> >(std::allocator<char>)
+2730 2 471 17
+2732 3 472 17
+FUNC 2740 5 4 std::_String_val<char,std::allocator<char> >::_String_val<char,std::allocator<char> >(std::_String_val<char,std::allocator<char> > const &)
+2740 2 477 17
+2742 3 484 17
+FUNC 2750 3 0 std::allocator<char>::allocator<char>()
+2750 2 120 19
+2752 1 122 19
+FUNC 2760 b 0 std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::assign(std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > const &)
+2760 0 1032 17
+2760 a 1033 17
+276a 1 1034 17
+FUNC 2770 ef c std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::assign(std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > const &,unsigned int,unsigned int)
+2770 1 1038 17
+2771 12 1039 17
+2783 5 1040 17
+2788 3 1041 17
+278b a 1042 17
+2795 2 1043 17
+2797 4 1045 17
+279b 17 1046 17
+27b2 5 1052 17
+27b7 3 1053 17
+27ba 24 1047 17
+27de b 1049 17
+27e9 13 1047 17
+27fc 5 1052 17
+2801 3 1053 17
+2804 9 1047 17
+280d 5 1052 17
+2812 3 1053 17
+2815 2f 1049 17
+2844 13 1050 17
+2857 5 1052 17
+285c 3 1053 17
+FUNC 2860 2b 4 std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::assign(wchar_t const *)
+2860 1 1069 17
+2861 27 1070 17
+2888 3 1071 17
+FUNC 2890 4f 8 std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Tidy(bool,unsigned int)
+2890 0 2066 17
+2890 f 2067 17
+289f 6 2069 17
+28a5 a 2072 17
+28af 10 2073 17
+28bf a 2074 17
+28c9 13 2077 17
+28dc 3 2078 17
+FUNC 28e0 e 0 std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Myptr()
+28e0 0 2092 17
+28e0 9 2093 17
+28e9 1 2094 17
+28ea 3 2093 17
+28ed 1 2094 17
+FUNC 28f0 5 4 std::_String_val<wchar_t,std::allocator<wchar_t> >::_String_val<wchar_t,std::allocator<wchar_t> >(std::allocator<wchar_t>)
+28f0 2 471 17
+28f2 3 472 17
+FUNC 2900 3 0 std::allocator<wchar_t>::allocator<wchar_t>()
+2900 2 120 19
+2902 1 122 19
+FUNC 2910 13 0 std::vector<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::capacity()
+2910 0 621 23
+2910 9 622 23
+2919 1 623 23
+291a 8 622 23
+2922 1 623 23
+FUNC 2930 86 c std::vector<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::insert(std::_Vector_iterator<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >,google_breakpad::ExceptionHandler * const &)
+2930 3 852 23
+2933 3e 853 23
+2971 11 854 23
+2982 2a 855 23
+29ac a 856 23
+FUNC 29c0 23 0 std::vector<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::_Buy(unsigned int)
+29c0 0 1066 23
+29c0 8 1070 23
+29c8 5 1071 23
+29cd a 1074 23
+29d7 3 1075 23
+29da 6 1076 23
+29e0 2 1078 23
+29e2 1 1079 23
+FUNC 29f0 1 0 std::vector<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::_Destroy(google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *)
+29f0 0 1082 23
+29f0 1 1084 23
+FUNC 2a00 26 0 std::vector<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::_Tidy()
+2a00 0 1087 23
+2a00 7 1088 23
+2a07 9 1096 23
+2a10 15 1098 23
+2a25 1 1099 23
+FUNC 2a30 23 0 std::vector<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::_Ufill(google_breakpad::ExceptionHandler * *,unsigned int,google_breakpad::ExceptionHandler * const &)
+2a30 0 1207 23
+2a30 1f 1208 23
+2a4f 3 1209 23
+2a52 1 1210 23
+FUNC 2a60 76 0 std::vector<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::_Xran()
+2a60 23 1218 23
+2a83 53 1219 23
+FUNC 2ae0 3 4 std::_Vector_val<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::_Vector_val<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >(std::allocator<google_breakpad::ExceptionHandler *>)
+2ae0 0 412 23
+2ae0 3 413 23
+FUNC 2af0 1 0 std::allocator<google_breakpad::ExceptionHandler *>::allocator<google_breakpad::ExceptionHandler *>()
+2af0 0 120 19
+2af0 1 122 19
+FUNC 2b00 21 0 std::_Vector_iterator<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::_Vector_iterator<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >(google_breakpad::ExceptionHandler * *,std::_Container_base const *)
+2b00 1e 314 23
+2b1e 3 315 23
+FUNC 2b30 32 4 std::_Vector_iterator<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::operator+(int)
+2b30 1 367 23
+2b31 2 368 23
+2b33 26 369 23
+2b59 9 370 23
+FUNC 2b70 2f 0 std::_Vector_iterator<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::operator-(int)
+2b70 1 378 23
+2b71 2 379 23
+2b73 25 380 23
+2b98 7 381 23
+FUNC 2ba0 20 0 std::_Vector_const_iterator<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::operator*()
+2ba0 0 92 23
+2ba0 a 103 23
+2baa f 104 23
+2bb9 3 107 23
+2bbc 1 108 23
+2bbd 2 107 23
+2bbf 1 108 23
+FUNC 2bc0 20 0 std::_Vector_const_iterator<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::operator++()
+2bc0 0 116 23
+2bc0 a 117 23
+2bca f 118 23
+2bd9 4 119 23
+2bdd 2 120 23
+2bdf 1 121 23
+FUNC 2be0 1d 0 std::_Vector_const_iterator<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::operator==(std::_Vector_const_iterator<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> > const &)
+2be0 0 190 23
+2be0 f 195 23
+2bef d 198 23
+2bfc 1 199 23
+FUNC 2c00 c1 8 std::basic_string<char,std::char_traits<char>,std::allocator<char> >::assign(char const *,unsigned int)
+2c00 5 1056 17
+2c05 2d 1057 17
+2c32 1a 1058 17
+2c4c 4 1066 17
+2c50 25 1060 17
+2c75 c 1062 17
+2c81 f 1060 17
+2c90 8 1065 17
+2c98 3 1066 17
+2c9b e 1062 17
+2ca9 10 1063 17
+2cb9 5 1065 17
+2cbe 3 1066 17
+FUNC 2cd0 83 8 std::basic_string<char,std::char_traits<char>,std::allocator<char> >::erase(unsigned int,unsigned int)
+2cd0 1 1240 17
+2cd1 d 1241 17
+2cde 5 1242 17
+2ce3 d 1243 17
+2cf0 2 1244 17
+2cf2 4 1245 17
+2cf6 3c 1248 17
+2d32 8 1249 17
+2d3a 12 1250 17
+2d4c 4 1252 17
+2d50 3 1253 17
+FUNC 2d60 1f 4 std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Eos(unsigned int)
+2d60 0 2030 17
+2d60 14 2031 17
+2d74 3 2032 17
+2d77 5 2031 17
+2d7c 3 2032 17
+FUNC 2d80 bc 8 std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Grow(unsigned int,bool)
+2d80 1 2036 17
+2d81 c 2037 17
+2d8d 5 2038 17
+2d92 7 2039 17
+2d99 c 2040 17
+2da5 a 2046 17
+2daf 3 2047 17
+2db2 d 2041 17
+2dbf 39 2043 17
+2df8 10 2046 17
+2e08 3 2047 17
+2e0b 4 2044 17
+2e0f b 2045 17
+2e1a c 2046 17
+2e26 3 2047 17
+2e29 6 2045 17
+2e2f a 2046 17
+2e39 3 2047 17
+FUNC 2e40 e 0 std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Myptr()
+2e40 0 2087 17
+2e40 9 2088 17
+2e49 1 2089 17
+2e4a 3 2088 17
+2e4d 1 2089 17
+FUNC 2e50 5 4 std::allocator<char>::allocator<char>(std::allocator<char> const &)
+2e50 2 124 19
+2e52 3 126 19
+FUNC 2e60 e 8 std::allocator<char>::deallocate(char *,unsigned int)
+2e60 0 140 19
+2e60 b 141 19
+2e6b 3 142 19
+FUNC 2e70 da 8 std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::assign(wchar_t const *,unsigned int)
+2e70 4 1056 17
+2e74 31 1057 17
+2ea5 1d 1058 17
+2ec2 3 1066 17
+2ec5 28 1060 17
+2eed d 1062 17
+2efa 10 1060 17
+2f0a a 1065 17
+2f14 3 1066 17
+2f17 18 1062 17
+2f2f 14 1063 17
+2f43 4 1065 17
+2f47 3 1066 17
+FUNC 2f50 97 8 std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::erase(unsigned int,unsigned int)
+2f50 1 1240 17
+2f51 d 1241 17
+2f5e 5 1242 17
+2f63 d 1243 17
+2f70 2 1244 17
+2f72 4 1245 17
+2f76 4d 1248 17
+2fc3 8 1249 17
+2fcb 15 1250 17
+2fe0 4 1252 17
+2fe4 3 1253 17
+FUNC 2ff0 4 0 std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::size()
+2ff0 0 1636 17
+2ff0 3 1637 17
+2ff3 1 1638 17
+FUNC 3000 23 4 std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Eos(unsigned int)
+3000 0 2030 17
+3000 16 2031 17
+3016 3 2032 17
+3019 7 2031 17
+3020 3 2032 17
+FUNC 3030 c7 8 std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Grow(unsigned int,bool)
+3030 1 2036 17
+3031 f 2037 17
+3040 5 2038 17
+3045 7 2039 17
+304c c 2040 17
+3058 a 2046 17
+3062 3 2047 17
+3065 d 2041 17
+3072 3c 2043 17
+30ae 12 2046 17
+30c0 3 2047 17
+30c3 4 2044 17
+30c7 b 2045 17
+30d2 d 2046 17
+30df 3 2047 17
+30e2 8 2045 17
+30ea a 2046 17
+30f4 3 2047 17
+FUNC 3100 e 0 std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Myptr()
+3100 0 2087 17
+3100 9 2088 17
+3109 1 2089 17
+310a 3 2088 17
+310d 1 2089 17
+FUNC 3110 5 4 std::allocator<wchar_t>::allocator<wchar_t>(std::allocator<wchar_t> const &)
+3110 2 124 19
+3112 3 126 19
+FUNC 3120 e 8 std::allocator<wchar_t>::deallocate(wchar_t *,unsigned int)
+3120 0 140 19
+3120 b 141 19
+312b 3 142 19
+FUNC 3130 6 0 std::vector<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::max_size()
+3130 0 707 23
+3130 5 708 23
+3135 1 709 23
+FUNC 3140 208 8 std::vector<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::_Insert_n(std::_Vector_iterator<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >,unsigned int,google_breakpad::ExceptionHandler * const &)
+3140 6 1117 23
+3146 2 1125 23
+3148 1c 1126 23
+3164 1c 1130 23
+3180 5 1131 23
+3185 1b 1132 23
+31a0 23 1135 23
+31c3 17 1136 23
+31da 19 1137 23
+31f3 7 1138 23
+31fa 25 1143 23
+321f 7 1144 23
+3226 1e 1145 23
+3244 13 1152 23
+3257 4 1153 23
+325b 9 1156 23
+3264 7 1163 23
+326b a 1164 23
+3275 3 1165 23
+3278 a 1204 23
+3282 13 1167 23
+3295 17 1170 23
+32ac 1a 1174 23
+32c6 7 1180 23
+32cd 16 1187 23
+32e3 a 1204 23
+32ed 2a 1193 23
+3317 e 1200 23
+3325 19 1202 23
+333e a 1204 23
+FUNC 3350 7c 0 std::vector<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::_Xlen()
+3350 29 1213 23
+3379 53 1214 23
+FUNC 33d0 1 0 std::allocator<google_breakpad::ExceptionHandler *>::allocator<google_breakpad::ExceptionHandler *>(std::allocator<google_breakpad::ExceptionHandler *> const &)
+33d0 0 124 19
+33d0 1 126 19
+FUNC 33e0 8 0 std::allocator<google_breakpad::ExceptionHandler *>::deallocate(google_breakpad::ExceptionHandler * *,unsigned int)
+33e0 0 140 19
+33e0 7 141 19
+33e7 1 142 19
+FUNC 33f0 56 0 std::allocator<google_breakpad::ExceptionHandler *>::allocate(unsigned int)
+33f0 3 145 19
+33f3 16 146 19
+3409 4 147 19
+340d 39 146 19
+FUNC 3450 32 4 std::_Vector_iterator<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::operator+=(int)
+3450 0 361 23
+3450 2c 362 23
+347c 3 363 23
+347f 3 364 23
+FUNC 3490 28 0 std::_Vector_iterator<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::operator-=(int)
+3490 0 373 23
+3490 27 374 23
+34b7 1 375 23
+FUNC 34c0 19 0 std::_Vector_iterator<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::operator-(std::_Vector_const_iterator<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> > const &)
+34c0 0 384 23
+34c0 18 385 23
+34d8 1 386 23
+FUNC 34e0 21 0 std::_Vector_const_iterator<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::_Vector_const_iterator<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >(google_breakpad::ExceptionHandler * *,std::_Container_base const *)
+34e0 0 77 23
+34e0 19 79 23
+34f9 2 80 23
+34fb 3 81 23
+34fe 3 82 23
+FUNC 3510 19 4 std::length_error::length_error(std::length_error const &)
+FUNC 3530 7 0 std::_Ranit<google_breakpad::ExceptionHandler *,int,google_breakpad::ExceptionHandler * const *,google_breakpad::ExceptionHandler * const &>::_Ranit<google_breakpad::ExceptionHandler *,int,google_breakpad::ExceptionHandler * const *,google_breakpad::ExceptionHandler * const &>()
+FUNC 3540 6 0 std::basic_string<char,std::char_traits<char>,std::allocator<char> >::max_size()
+3540 0 1641 17
+3540 5 1643 17
+3545 1 1644 17
+FUNC 3550 171 8 std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Copy(unsigned int,unsigned int)
+3550 30 2000 17
+3580 8 2001 17
+3588 5 2002 17
+358d 2 2003 17
+358f 2 2004 17
+3591 1f 2005 17
+35b0 3 2006 17
+35b3 2 2009 17
+35b5 18 2010 17
+35cd 2 2019 17
+35cf 30 2010 17
+35ff 3 2012 17
+3602 19 2014 17
+361b c 2019 17
+3627 7 2021 17
+362e 20 2022 17
+364e 12 2023 17
+3660 1c 2026 17
+367c 14 2027 17
+3690 15 2016 17
+36a5 1c 2017 17
+FUNC 36d0 39 4 std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Inside(char const *)
+36d0 1 2050 17
+36d1 2b 2052 17
+36fc 3 2055 17
+36ff 4 2056 17
+3703 3 2053 17
+3706 3 2056 17
+FUNC 3710 6 0 std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::max_size()
+3710 0 1641 17
+3710 5 1643 17
+3715 1 1644 17
+FUNC 3720 17b 8 std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Copy(unsigned int,unsigned int)
+3720 30 2000 17
+3750 8 2001 17
+3758 8 2002 17
+3760 2 2003 17
+3762 2 2004 17
+3764 1f 2005 17
+3783 3 2006 17
+3786 2 2009 17
+3788 1b 2010 17
+37a3 2 2019 17
+37a5 30 2010 17
+37d5 3 2012 17
+37d8 19 2014 17
+37f1 c 2019 17
+37fd 7 2021 17
+3804 24 2022 17
+3828 12 2023 17
+383a 20 2026 17
+385a 14 2027 17
+386e 17 2016 17
+3885 16 2017 17
+FUNC 38a0 3a 4 std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Inside(wchar_t const *)
+38a0 1 2050 17
+38a1 2c 2052 17
+38cd 3 2055 17
+38d0 4 2056 17
+38d4 3 2053 17
+38d7 3 2056 17
+FUNC 38e0 6 0 std::allocator<google_breakpad::ExceptionHandler *>::max_size()
+38e0 0 165 19
+38e0 5 167 19
+38e5 1 168 19
+FUNC 38f0 32 4 std::_Vector_const_iterator<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::operator+=(int)
+38f0 0 146 23
+38f0 a 147 23
+38fa 1a 148 23
+3914 5 150 23
+3919 3 151 23
+391c 3 152 23
+391f 3 153 23
+FUNC 3930 19 0 std::_Vector_const_iterator<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::operator-(std::_Vector_const_iterator<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> > const &)
+3930 0 173 23
+3930 f 178 23
+393f 9 181 23
+3948 1 182 23
+FUNC 3950 56 4 std::allocator<char>::allocate(unsigned int)
+3950 0 145 19
+3950 16 146 19
+3966 6 147 19
+396c 3a 146 19
+FUNC 39b0 4 0 std::allocator<char>::max_size()
+39b0 0 165 19
+39b0 3 167 19
+39b3 1 168 19
+FUNC 39c0 59 4 std::allocator<wchar_t>::allocate(unsigned int)
+39c0 0 145 19
+39c0 19 146 19
+39d9 6 147 19
+39df 3a 146 19
+FUNC 3a20 6 0 std::allocator<wchar_t>::max_size()
+3a20 0 165 19
+3a20 5 167 19
+3a25 1 168 19
+FUNC 3a30 21 10 std::_Traits_helper::copy_s<std::char_traits<char> >(char *,unsigned int,char const *,unsigned int)
+3a30 0 581 70
+3a30 20 582 70
+3a50 1 583 70
+FUNC 3a60 27 10 std::_Traits_helper::copy_s<std::char_traits<wchar_t> >(wchar_t *,unsigned int,wchar_t const *,unsigned int)
+3a60 0 581 70
+3a60 26 582 70
+3a86 1 583 70
+FUNC 3a90 24 0 stdext::unchecked_copy<google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *>(google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *)
+3a90 0 3407 65
+3a90 23 3409 65
+3ab3 1 3410 65
+FUNC 3ac0 1 0 std::_Destroy_range<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >(google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,std::allocator<google_breakpad::ExceptionHandler *> &)
+3ac0 0 225 19
+3ac0 1 227 19
+FUNC 3ad0 15 0 stdext::unchecked_uninitialized_fill_n<google_breakpad::ExceptionHandler * *,unsigned int,google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >(google_breakpad::ExceptionHandler * *,unsigned int,google_breakpad::ExceptionHandler * const &,std::allocator<google_breakpad::ExceptionHandler *> &)
+3ad0 0 914 24
+3ad0 14 916 24
+3ae4 1 917 24
+FUNC 3af0 21 10 std::_Traits_helper::move_s<std::char_traits<char> >(char *,unsigned int,char const *,unsigned int)
+3af0 0 608 70
+3af0 20 609 70
+3b10 1 610 70
+FUNC 3b20 27 10 std::_Traits_helper::move_s<std::char_traits<wchar_t> >(wchar_t *,unsigned int,wchar_t const *,unsigned int)
+3b20 0 608 70
+3b20 26 609 70
+3b46 1 610 70
+FUNC 3b50 22 0 std::vector<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::_Umove<google_breakpad::ExceptionHandler * *>(google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *)
+3b50 0 1109 23
+3b50 21 1112 23
+3b71 1 1113 23
+FUNC 3b80 10 0 std::fill<google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler *>(google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * const &)
+3b80 0 2976 65
+3b80 f 2977 65
+3b8f 1 2978 65
+FUNC 3b90 25 0 stdext::_Unchecked_move_backward<google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *>(google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *)
+3b90 0 3497 65
+3b90 24 3499 65
+3bb4 1 3500 65
+FUNC 3bc0 4f 0 std::_Allocate<google_breakpad::ExceptionHandler *>(unsigned int,google_breakpad::ExceptionHandler * *)
+3bc0 0 37 19
+3bc0 f 40 19
+3bcf 2c 41 19
+3bfb 10 44 19
+3c0b 4 45 19
+FUNC 3c10 54 8 std::_Allocate<char>(unsigned int,char *)
+3c10 0 37 19
+3c10 b 38 19
+3c1b 2 39 19
+3c1d 9 44 19
+3c26 4 45 19
+3c2a c 40 19
+3c36 2e 41 19
+FUNC 3c70 57 8 std::_Allocate<wchar_t>(unsigned int,wchar_t *)
+3c70 0 37 19
+3c70 b 38 19
+3c7b 2 39 19
+3c7d c 44 19
+3c89 4 45 19
+3c8d c 40 19
+3c99 2e 41 19
+FUNC 3cd0 19 4 std::bad_alloc::bad_alloc(std::bad_alloc const &)
+FUNC 3cf0 7 0 std::_Char_traits_cat<std::char_traits<char> >()
+3cf0 1 568 70
+3cf1 4 570 70
+3cf5 2 571 70
+FUNC 3d00 21 14 std::_Traits_helper::copy_s<std::char_traits<char> >(char *,unsigned int,char const *,unsigned int,std::_Secure_char_traits_tag)
+3d00 0 589 70
+3d00 20 590 70
+3d20 1 591 70
+FUNC 3d30 7 0 std::_Char_traits_cat<std::char_traits<wchar_t> >()
+3d30 1 568 70
+3d31 4 570 70
+3d35 2 571 70
+FUNC 3d40 27 14 std::_Traits_helper::copy_s<std::char_traits<wchar_t> >(wchar_t *,unsigned int,wchar_t const *,unsigned int,std::_Secure_char_traits_tag)
+3d40 0 589 70
+3d40 26 590 70
+3d66 1 591 70
+FUNC 3d70 3 0 std::_Checked_base<google_breakpad::ExceptionHandler * *>(google_breakpad::ExceptionHandler * * &)
+3d70 0 1009 65
+3d70 2 1011 65
+3d72 1 1012 65
+FUNC 3d80 1 0 std::_Iter_random<google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *>(google_breakpad::ExceptionHandler * * const &,google_breakpad::ExceptionHandler * * const &)
+3d80 0 839 65
+3d80 1 844 65
+FUNC 3d90 7 0 std::_Ptr_cat<google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *>(google_breakpad::ExceptionHandler * * &,google_breakpad::ExceptionHandler * * &)
+3d90 1 1329 65
+3d91 4 1331 65
+3d95 2 1332 65
+FUNC 3da0 15 4 std::_Copy_opt<google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,std::random_access_iterator_tag>(google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,std::random_access_iterator_tag,std::_Scalar_ptr_iterator_tag,std::_Range_checked_iterator_tag)
+3da0 0 2288 65
+3da0 d 2300 65
+3dad 7 2301 65
+3db4 1 2302 65
+FUNC 3dc0 1 4 std::_Destroy_range<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >(google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,std::allocator<google_breakpad::ExceptionHandler *> &,std::_Scalar_ptr_iterator_tag)
+3dc0 0 242 19
+3dc0 1 243 19
+FUNC 3dd0 15 8 std::_Uninit_fill_n<google_breakpad::ExceptionHandler * *,unsigned int,google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >(google_breakpad::ExceptionHandler * *,unsigned int,google_breakpad::ExceptionHandler * const &,std::allocator<google_breakpad::ExceptionHandler *> &,std::_Scalar_ptr_iterator_tag,std::_Range_checked_iterator_tag)
+3dd0 0 415 24
+3dd0 14 416 24
+3de4 1 417 24
+FUNC 3df0 21 14 std::_Traits_helper::move_s<std::char_traits<char> >(char *,unsigned int,char const *,unsigned int,std::_Secure_char_traits_tag)
+3df0 0 616 70
+3df0 20 617 70
+3e10 1 618 70
+FUNC 3e20 27 14 std::_Traits_helper::move_s<std::char_traits<wchar_t> >(wchar_t *,unsigned int,wchar_t const *,unsigned int,std::_Secure_char_traits_tag)
+3e20 0 616 70
+3e20 26 617 70
+3e46 1 618 70
+FUNC 3e50 22 0 stdext::_Unchecked_uninitialized_move<google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,std::allocator<google_breakpad::ExceptionHandler *> >(google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,std::allocator<google_breakpad::ExceptionHandler *> &)
+3e50 0 843 24
+3e50 21 845 24
+3e71 1 846 24
+FUNC 3e80 10 0 std::_Fill<google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler *>(google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * const &)
+3e80 0 2946 65
+3e80 6 2948 65
+3e86 9 2949 65
+3e8f 1 2950 65
+FUNC 3e90 7 0 std::_Move_cat<google_breakpad::ExceptionHandler * *>(google_breakpad::ExceptionHandler * * const &)
+3e90 1 1046 65
+3e91 4 1048 65
+3e95 2 1049 65
+FUNC 3ea0 25 c std::_Move_backward_opt<google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,std::random_access_iterator_tag,std::_Undefined_move_tag>(google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,std::random_access_iterator_tag,std::_Undefined_move_tag,std::_Range_checked_iterator_tag)
+3ea0 0 2546 65
+3ea0 24 2548 65
+3ec4 1 2549 65
+FUNC 3ed0 3 4 std::_Checked_base<google_breakpad::ExceptionHandler * *>(google_breakpad::ExceptionHandler * * &,std::_Unchanged_checked_iterator_base_type_tag)
+3ed0 0 992 65
+3ed0 2 993 65
+3ed2 1 994 65
+FUNC 3ee0 15 0 stdext::unchecked_fill_n<google_breakpad::ExceptionHandler * *,unsigned int,google_breakpad::ExceptionHandler *>(google_breakpad::ExceptionHandler * *,unsigned int,google_breakpad::ExceptionHandler * const &)
+3ee0 0 3523 65
+3ee0 14 3524 65
+3ef4 1 3525 65
+FUNC 3f00 22 8 std::_Uninit_move<google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,std::allocator<google_breakpad::ExceptionHandler *>,std::_Undefined_move_tag>(google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,std::allocator<google_breakpad::ExceptionHandler *> &,std::_Undefined_move_tag,std::_Range_checked_iterator_tag)
+3f00 0 205 24
+3f00 21 206 24
+3f21 1 207 24
+FUNC 3f30 13 0 std::_Copy_backward_opt<google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,std::random_access_iterator_tag>(google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,std::random_access_iterator_tag,std::_Scalar_ptr_iterator_tag,std::_Range_checked_iterator_tag)
+3f30 0 2492 65
+3f30 10 2506 65
+3f40 2 2507 65
+3f42 1 2508 65
+FUNC 3f50 1 0 std::_Iter_cat<google_breakpad::ExceptionHandler * *>(google_breakpad::ExceptionHandler * * const &)
+3f50 0 798 65
+3f50 1 801 65
+FUNC 3f60 15 8 std::_Fill_n<google_breakpad::ExceptionHandler * *,unsigned int,google_breakpad::ExceptionHandler *>(google_breakpad::ExceptionHandler * *,unsigned int,google_breakpad::ExceptionHandler * const &,std::random_access_iterator_tag,std::_Range_checked_iterator_tag)
+3f60 0 3040 65
+3f60 14 3044 65
+3f74 1 3045 65
+FUNC 3f80 22 0 stdext::unchecked_uninitialized_copy<google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,std::allocator<google_breakpad::ExceptionHandler *> >(google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,std::allocator<google_breakpad::ExceptionHandler *> &)
+3f80 0 803 24
+3f80 21 805 24
+3fa1 1 806 24
+FUNC 3fb0 15 4 std::_Fill_n<google_breakpad::ExceptionHandler * *,unsigned int,google_breakpad::ExceptionHandler *>(google_breakpad::ExceptionHandler * *,unsigned int,google_breakpad::ExceptionHandler * const &,std::_Range_checked_iterator_tag)
+3fb0 0 2986 65
+3fb0 5 2987 65
+3fb5 f 2988 65
+3fc4 1 2989 65
+FUNC 3fd0 15 4 std::_Uninit_copy<google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,std::allocator<google_breakpad::ExceptionHandler *> >(google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,std::allocator<google_breakpad::ExceptionHandler *> &,std::_Scalar_ptr_iterator_tag,std::_Range_checked_iterator_tag)
+3fd0 0 144 24
+3fd0 d 150 24
+3fdd 7 151 24
+3fe4 1 152 24
+FUNC 3ff0 13 4 vswprintf
+3ff0 0 50 147
+3ff0 12 51 147
+4002 1 52 147
+FUNC 4010 ae 4 google_breakpad::GUIDString::GUIDToWString(_GUID *)
+4010 12 43 126
+4022 51 51 126
+4073 3a 52 126
+40ad 11 53 126
+FUNC 40c0 ae 4 google_breakpad::GUIDString::GUIDToSymbolServerWString(_GUID *)
+40c0 12 56 126
+40d2 51 64 126
+4123 3a 65 126
+415d 11 66 126
+FUNC 4170 40 4 std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >(wchar_t const *)
+4170 0 650 143
+4170 3a 652 143
+41aa 6 653 143
+FUNC 41b0 86 8 main
+41b0 13 63 178
+41c3 38 64 178
+41fb 5 65 178
+4200 d 66 178
+420d 1b 67 178
+4228 e 68 178
+FUNC 4240 41 18 `anonymous namespace'::callback
+4240 3 45 178
+4243 8 46 178
+424b 11 47 178
+425c 2 48 178
+425e d 49 178
+426b 11 51 178
+427c 3 53 178
+427f 2 54 178
+FUNC 4290 18 0 `anonymous namespace'::CrashFunction
+4290 4 56 178
+4294 7 57 178
+429b 9 58 178
+42a4 4 59 178
+FUNC 42ae 18 4 std::invalid_argument::invalid_argument(std::basic_string<char,std::char_traits<char>,std::allocator<char> > const &)
+42ae 12 82 298
+42c0 6 83 298
+FUNC 42c6 b 0 std::invalid_argument::~invalid_argument()
+42c6 6 86 298
+42cc 5 87 298
+FUNC 42d1 22 0 std::invalid_argument::`vector deleting destructor'(unsigned int)
+FUNC 42f3 3f 0 std::_String_base::_Xlen()
+42f3 c 12 291
+42ff 33 13 291
+FUNC 4332 3f 0 std::_String_base::_Xran()
+4332 c 17 291
+433e 33 18 291
+FUNC 4371 3f 0 std::_String_base::_Xinvarg()
+4371 c 22 291
+437d 33 23 291
+FUNC 43b0 18 4 std::invalid_argument::invalid_argument(std::invalid_argument const &)
+FUNC 43c8 af 4 printf
+43c8 c 49 1601
+43d4 2b 54 1601
+43ff 14 58 1601
+4413 3 59 1601
+4416 10 61 1601
+4426 18 63 1601
+443e 11 65 1601
+444f c 68 1601
+445b 3 72 1601
+445e 6 73 1601
+4464 13 69 1601
+FUNC 4477 16 8 _printf_l
+4477 0 80 1601
+4477 15 85 1601
+448c 1 86 1601
+FUNC 448d 16 8 _printf_s_l
+448d 0 94 1601
+448d 15 99 1601
+44a2 1 100 1601
+FUNC 44a3 14 4 printf_s
+44a3 0 106 1601
+44a3 13 111 1601
+44b6 1 112 1601
+FUNC 44b7 16 8 _printf_p_l
+44b7 0 119 1601
+44b7 15 124 1601
+44cc 1 125 1601
+FUNC 44cd 14 4 _printf_p
+44cd 0 131 1601
+44cd 13 136 1601
+44e0 1 137 1601
+FUNC 44e1 25 4 _set_printf_count_output
+44e1 0 154 1601
+44e1 6 155 1601
+44e7 1e 156 1601
+4505 1 158 1601
+FUNC 4506 16 0 _get_printf_count_output
+4506 0 167 1601
+4506 15 168 1601
+451b 1 169 1601
+FUNC 451c f 0 __security_check_cookie
+451c 0 52 4397
+451c 6 55 4397
+4522 2 56 4397
+4524 2 57 4397
+4526 5 59 4397
+FUNC 452b 62 4 _flush
+452b 2 142 1704
+452d 25 152 1704
+4552 16 154 1704
+4568 7 158 1704
+456f 6 159 1704
+4575 2 161 1704
+4577 4 162 1704
+457b 4 163 1704
+457f 3 167 1704
+4582 7 168 1704
+4589 3 170 1704
+458c 1 171 1704
+FUNC 458d 42 4 _fflush_nolock
+458d 1 98 1704
+458e 8 102 1704
+4596 8 103 1704
+459e 1 116 1704
+459f b 106 1704
+45aa 4 108 1704
+45ae 1 116 1704
+45af 8 112 1704
+45b7 13 113 1704
+45ca 1 116 1704
+45cb 3 115 1704
+45ce 1 116 1704
+FUNC 45cf da 4 flsall
+45cf c 228 1704
+45db 5 230 1704
+45e0 3 231 1704
+45e3 8 233 1704
+45eb 3 234 1704
+45ee 11 236 1704
+45ff 14 238 1704
+4613 9 246 1704
+461c 6 248 1704
+4622 10 254 1704
+4632 5 256 1704
+4637 c 262 1704
+4643 3 266 1704
+4646 2 268 1704
+4648 a 269 1704
+4652 c 275 1704
+465e 3 276 1704
+4661 8 281 1704
+4669 3 236 1704
+466c 5 281 1704
+4671 11 282 1704
+4682 c 288 1704
+468e 4 292 1704
+4692 3 293 1704
+4695 2 292 1704
+4697 3 295 1704
+469a 6 296 1704
+46a0 9 289 1704
+FUNC 46a9 53 4 fflush
+46a9 c 57 1704
+46b5 7 62 1704
+46bc 9 63 1704
+46c5 9 65 1704
+46ce 3 67 1704
+46d1 c 68 1704
+46dd c 70 1704
+46e9 3 74 1704
+46ec 6 75 1704
+46f2 a 71 1704
+FUNC 46fc 9 0 _flushall
+46fc 0 193 1704
+46fc 8 194 1704
+4704 1 195 1704
+FUNC 4705 6 0 __iob_func
+4705 0 53 2087
+4705 5 54 2087
+470a 1 55 2087
+FUNC 470b b1 0 __initstdio
+470b 0 113 2087
+470b d 122 2087
+4718 7 123 2087
+471f 4 124 2087
+4723 7 125 2087
+472a 13 134 2087
+473d 19 137 2087
+4756 4 138 2087
+475a 1 163 2087
+475b e 145 2087
+4769 11 146 2087
+477a b 148 2087
+4785 24 151 2087
+47a9 2 158 2087
+47ab d 148 2087
+47b8 3 162 2087
+47bb 1 163 2087
+FUNC 47bc 20 0 __endstdio
+47bc 0 191 2087
+47bc 5 193 2087
+47c1 9 196 2087
+47ca 5 197 2087
+47cf c 198 2087
+47db 1 199 2087
+FUNC 47dc 3c 4 _lock_file
+47dc 1 221 2087
+47dd 15 226 2087
+47f2 10 231 2087
+4802 9 233 2087
+480b 1 242 2087
+480c b 241 2087
+4817 1 242 2087
+FUNC 4818 2e 8 _lock_file2
+4818 0 264 2087
+4818 9 269 2087
+4821 9 274 2087
+482a c 276 2087
+4836 1 285 2087
+4837 e 284 2087
+4845 1 285 2087
+FUNC 4846 36 4 _unlock_file
+4846 0 306 2087
+4846 14 311 2087
+485a 7 317 2087
+4861 f 318 2087
+4870 1 327 2087
+4871 a 326 2087
+487b 1 327 2087
+FUNC 487c 2a 8 _unlock_file2
+487c 0 349 2087
+487c 7 354 2087
+4883 d 360 2087
+4890 a 361 2087
+489a 1 370 2087
+489b a 369 2087
+48a5 1 370 2087
+FUNC 48a6 16 4 wcslen
+48a6 0 41 731
+48a6 4 42 731
+48aa a 44 731
+48b4 7 46 731
+48bb 1 47 731
+FUNC 48bc 5 4 operator delete(void *)
+48bc 0 20 5184
+48bc 5 23 5184
+FUNC 48c1 30 8 _JumpToContinuation(void *,EHRegistrationNode *)
+48c1 5 77 5627
+48c6 9 84 5627
+48cf 7 93 5627
+48d6 2 94 5627
+48d8 6 95 5627
+48de 3 100 5627
+48e1 3 101 5627
+48e4 3 102 5627
+48e7 3 103 5627
+48ea 2 104 5627
+48ec 5 106 5627
+FUNC 48f1 7 8 _CallMemberFunction0(void *,void *)
+48f1 0 118 5627
+48f1 1 120 5627
+48f2 1 121 5627
+48f3 3 122 5627
+48f6 2 123 5627
+FUNC 48f8 7 c _CallMemberFunction1(void *,void *,void *)
+48f8 0 139 5627
+48f8 1 141 5627
+48f9 1 142 5627
+48fa 3 143 5627
+48fd 2 144 5627
+FUNC 48ff 7 10 _CallMemberFunction2(void *,void *,void *,int)
+48ff 0 161 5627
+48ff 1 163 5627
+4900 1 164 5627
+4901 3 165 5627
+4904 2 166 5627
+FUNC 4906 52 8 _UnwindNestedFrames(EHRegistrationNode *,EHExceptionRecord *)
+4906 8 218 5627
+490e 7 232 5627
+4915 3 233 5627
+4918 7 236 5627
+491f 10 237 5627
+492f f 241 5627
+493e 7 247 5627
+4945 3 248 5627
+4948 2 249 5627
+494a 7 250 5627
+4951 7 256 5627
+FUNC 4958 36 10 __CxxFrameHandler
+4958 0 287 5627
+4958 1 295 5627
+4959 2 296 5627
+495b 3 297 5627
+495e 1 298 5627
+495f 1 299 5627
+4960 1 300 5627
+4961 1 301 5627
+4962 3 306 5627
+4965 1f 311 5627
+4984 1 316 5627
+4985 1 317 5627
+4986 1 318 5627
+4987 3 319 5627
+498a 2 320 5627
+498c 1 321 5627
+498d 1 322 5627
+FUNC 498e 36 10 __CxxFrameHandler3
+498e 0 341 5627
+498e 1 349 5627
+498f 2 350 5627
+4991 3 351 5627
+4994 1 352 5627
+4995 1 353 5627
+4996 1 354 5627
+4997 1 355 5627
+4998 3 360 5627
+499b 1f 365 5627
+49ba 1 370 5627
+49bb 1 371 5627
+49bc 1 372 5627
+49bd 3 373 5627
+49c0 2 374 5627
+49c2 1 375 5627
+49c3 1 376 5627
+FUNC 49c4 36 10 __CxxFrameHandler2
+49c4 0 391 5627
+49c4 1 399 5627
+49c5 2 400 5627
+49c7 3 401 5627
+49ca 1 402 5627
+49cb 1 403 5627
+49cc 1 404 5627
+49cd 1 405 5627
+49ce 3 410 5627
+49d1 1f 415 5627
+49f0 1 420 5627
+49f1 1 421 5627
+49f2 1 422 5627
+49f3 3 423 5627
+49f6 2 424 5627
+49f8 1 425 5627
+49f9 1 426 5627
+FUNC 49fa 1a 4 __CxxLongjmpUnwind
+49fa 0 443 5627
+49fa 17 449 5627
+4a11 3 452 5627
+FUNC 4a14 30 10 CatchGuardHandler
+4a14 1 545 5627
+4a15 1 551 5627
+4a16 e 557 5627
+4a24 1f 567 5627
+4a43 1 572 5627
+FUNC 4a44 d5 1c _CallSETranslator(EHExceptionRecord *,EHRegistrationNode *,void *,void *,_s_FuncInfo const *,int,EHRegistrationNode *)
+4a44 7 637 5627
+4a4b 9 642 5627
+4a54 5 644 5627
+4a59 3 645 5627
+4a5c 2 646 5627
+4a5e 8 648 5627
+4a66 4 656 5627
+4a6a 7 657 5627
+4a71 d 658 5627
+4a7e 6 659 5627
+4a84 6 660 5627
+4a8a 6 661 5627
+4a90 6 662 5627
+4a96 4 663 5627
+4a9a 4 664 5627
+4a9e 4 669 5627
+4aa2 3 675 5627
+4aa5 3 676 5627
+4aa8 6 681 5627
+4aae 3 682 5627
+4ab1 3 683 5627
+4ab4 6 684 5627
+4aba 7 690 5627
+4ac1 6 692 5627
+4ac7 6 693 5627
+4acd e 697 5627
+4adb e 701 5627
+4ae9 4 707 5627
+4aed 6 715 5627
+4af3 7 724 5627
+4afa 2 725 5627
+4afc 3 726 5627
+4aff 2 727 5627
+4b01 7 728 5627
+4b08 2 731 5627
+4b0a 3 737 5627
+4b0d 6 738 5627
+4b13 3 744 5627
+4b16 3 745 5627
+FUNC 4b19 9d 10 TranslatorGuardHandler
+4b19 5 770 5627
+4b1e 1 776 5627
+4b1f e 782 5627
+4b2d b 784 5627
+4b38 a 786 5627
+4b42 5 790 5627
+4b47 2 792 5627
+4b49 2a 796 5627
+4b73 9 798 5627
+4b7c b 802 5627
+4b87 1b 811 5627
+4ba2 3 818 5627
+4ba5 3 819 5627
+4ba8 3 820 5627
+4bab 3 821 5627
+4bae 2 822 5627
+4bb0 3 826 5627
+4bb3 3 828 5627
+FUNC 4bb6 73 14 _GetRangeOfTrysToCheck(_s_FuncInfo const *,int,int,unsigned int *,unsigned int *)
+4bb6 7 848 5627
+4bbd 6 849 5627
+4bc3 6 850 5627
+4bc9 2 851 5627
+4bcb 2 852 5627
+4bcd a 855 5627
+4bd7 1d 859 5627
+4bf4 3 860 5627
+4bf7 3 861 5627
+4bfa 3 862 5627
+4bfd 6 854 5627
+4c03 6 866 5627
+4c09 5 867 5627
+4c0e e 869 5627
+4c1c b 871 5627
+4c27 2 872 5627
+FUNC 4c29 28 8 _CreateFrameInfo
+4c29 0 889 5627
+4c29 b 890 5627
+4c34 e 891 5627
+4c42 b 892 5627
+4c4d 3 893 5627
+4c50 1 894 5627
+FUNC 4c51 21 4 _IsExceptionObjectToBeDestroyed
+4c51 0 907 5627
+4c51 d 910 5627
+4c5e 8 911 5627
+4c66 7 910 5627
+4c6d 1 915 5627
+4c6e 1 916 5627
+4c6f 2 912 5627
+4c71 1 916 5627
+FUNC 4c72 4c 4 _FindAndUnlinkFrame
+4c72 1 926 5627
+4c73 11 927 5627
+4c84 f 928 5627
+4c93 1 944 5627
+4c94 d 931 5627
+4ca1 7 935 5627
+4ca8 9 933 5627
+4cb1 5 943 5627
+4cb6 7 936 5627
+4cbd 1 944 5627
+FUNC 4cbe 5e 14 _CallCatchBlock2(EHRegistrationNode *,_s_FuncInfo const *,void *,int,unsigned long)
+4cbe 6 485 5627
+4cc4 e 493 5627
+4cd2 c 495 5627
+4cde 11 500 5627
+4cef 6 503 5627
+4cf5 3 504 5627
+4cf8 3 505 5627
+4cfb 6 506 5627
+4d01 e 512 5627
+4d0f 3 518 5627
+4d12 6 519 5627
+4d18 2 524 5627
+4d1a 2 525 5627
+FUNC 4d1c 4a 8 _CxxThrowException
+4d1c 6 95 5939
+4d22 15 117 5939
+4d37 3 118 5939
+4d3a 9 134 5939
+4d43 5 136 5939
+4d48 7 138 5939
+4d4f 13 159 5939
+4d62 4 161 5939
+FUNC 4d66 19 0 std::bad_alloc::bad_alloc()
+4d66 15 382 5121
+4d7b 4 383 5121
+FUNC 4d7f 6a 4 operator new(unsigned int)
+4d7f 6 57 5123
+4d85 2 59 5123
+4d87 d 60 5123
+4d94 d 59 5123
+4da1 2 67 5123
+4da3 27 62 5123
+4dca 1f 63 5123
+FUNC 4de9 f 4 type_info::name(__type_info_node *)
+4de9 0 44 5873
+4de9 c 45 5873
+4df5 3 46 5873
+FUNC 4df8 e 0 type_info::~type_info()
+4df8 0 49 5873
+4df8 d 50 5873
+4e05 1 51 5873
+FUNC 4e06 1c 0 type_info::`scalar deleting destructor'(unsigned int)
+FUNC 4e22 f 4 type_info::_name_internal_method(__type_info_node *)
+4e22 0 54 5873
+4e22 c 55 5873
+4e2e 3 56 5873
+FUNC 4e31 8 0 type_info::_type_info_dtor_internal_method()
+4e31 0 59 5873
+4e31 7 60 5873
+4e38 1 61 5873
+FUNC 4e39 1b 4 type_info::operator==(type_info const &)
+4e39 0 89 5873
+4e39 18 90 5873
+4e51 3 91 5873
+FUNC 4e54 1c 4 type_info::operator!=(type_info const &)
+4e54 0 98 5873
+4e54 19 99 5873
+4e6d 3 100 5873
+FUNC 4e70 1f 4 type_info::before(type_info const &)
+4e70 0 103 5873
+4e70 1c 104 5873
+4e8c 3 105 5873
+FUNC 4e8f 4 0 type_info::raw_name()
+4e8f 0 108 5873
+4e8f 3 109 5873
+4e92 1 110 5873
+FUNC 4e93 b 4 type_info::type_info(type_info const &)
+4e93 8 113 5873
+4e9b 3 123 5873
+FUNC 4e9e 5 4 type_info::operator=(type_info const &)
+4e9e 2 127 5873
+4ea0 3 135 5873
+FUNC 4ea3 11 0 std::exception::exception()
+4ea3 2 68 5916
+4ea5 4 69 5916
+4ea9 a 70 5916
+4eb3 1 71 5916
+FUNC 4eb4 4e 4 std::exception::exception(char const * const &)
+4eb4 1 77 5916
+4eb5 14 78 5916
+4ec9 9 80 5916
+4ed2 6 81 5916
+4ed8 9 82 5916
+4ee1 c 84 5916
+4eed 2 87 5916
+4eef 4 89 5916
+4ef3 7 91 5916
+4efa 8 92 5916
+FUNC 4f02 18 8 std::exception::exception(char const * const &,int)
+4f02 2 98 5916
+4f04 c 99 5916
+4f10 7 100 5916
+4f17 3 101 5916
+FUNC 4f1a 58 4 std::exception::exception(std::exception const &)
+4f1a 1 107 5916
+4f1b 13 108 5916
+4f2e 2 109 5916
+4f30 a 111 5916
+4f3a 9 113 5916
+4f43 6 114 5916
+4f49 9 115 5916
+4f52 d 117 5916
+4f5f 2 120 5916
+4f61 4 122 5916
+4f65 2 125 5916
+4f67 4 126 5916
+4f6b 7 127 5916
+FUNC 4f72 56 4 std::exception::operator=(std::exception const &)
+4f72 1 133 5916
+4f73 c 134 5916
+4f7f 6 136 5916
+4f85 2 137 5916
+4f87 9 139 5916
+4f90 9 141 5916
+4f99 6 144 5916
+4f9f 9 146 5916
+4fa8 d 148 5916
+4fb5 2 151 5916
+4fb7 4 153 5916
+4fbb 2 156 5916
+4fbd 3 157 5916
+4fc0 5 159 5916
+4fc5 3 160 5916
+FUNC 4fc8 16 0 std::exception::~exception()
+4fc8 0 167 5916
+4fc8 c 168 5916
+4fd4 9 169 5916
+4fdd 1 170 5916
+FUNC 4fde d 0 std::exception::what()
+4fde 0 180 5916
+4fde 5 181 5916
+4fe3 2 182 5916
+4fe5 5 184 5916
+4fea 1 185 5916
+FUNC 4feb 19 4 std::bad_cast::bad_cast(char const *)
+4feb 13 194 5916
+4ffe 6 195 5916
+FUNC 5004 18 4 std::bad_cast::bad_cast(std::bad_cast const &)
+5004 12 199 5916
+5016 6 200 5916
+FUNC 501c b 0 std::bad_cast::~bad_cast()
+501c 6 203 5916
+5022 5 204 5916
+FUNC 5027 19 4 std::bad_typeid::bad_typeid(char const *)
+5027 13 229 5916
+503a 6 230 5916
+FUNC 5040 18 4 std::bad_typeid::bad_typeid(std::bad_typeid const &)
+5040 12 234 5916
+5052 6 235 5916
+FUNC 5058 b 0 std::bad_typeid::~bad_typeid()
+5058 6 238 5916
+505e 5 239 5916
+FUNC 5063 18 4 std::__non_rtti_object::__non_rtti_object(char const *)
+5063 12 248 5916
+5075 6 249 5916
+FUNC 507b 18 4 std::__non_rtti_object::__non_rtti_object(std::__non_rtti_object const &)
+507b 12 253 5916
+508d 6 254 5916
+FUNC 5093 b 0 std::__non_rtti_object::~__non_rtti_object()
+5093 0 257 5916
+5093 b 258 5916
+FUNC 509e 1c 0 std::exception::`vector deleting destructor'(unsigned int)
+FUNC 50ba 22 0 std::bad_cast::`vector deleting destructor'(unsigned int)
+FUNC 50dc 22 0 std::bad_typeid::`scalar deleting destructor'(unsigned int)
+FUNC 50fe 22 0 std::__non_rtti_object::`scalar deleting destructor'(unsigned int)
+FUNC 5120 7b 10 memcpy_s
+5120 4 47 1002
+5124 a 48 1002
+512e 4 51 1002
+5132 20 55 1002
+5152 a 56 1002
+515c f 67 1002
+516b 2 68 1002
+516d f 59 1002
+517c 5 61 1002
+5181 13 62 1002
+5194 5 64 1002
+5199 2 69 1002
+FUNC 519b 5b 10 memmove_s
+519b 3 46 955
+519e 9 47 955
+51a7 2 50 955
+51a9 20 54 955
+51c9 5 55 955
+51ce 13 56 955
+51e1 f 58 955
+51f0 4 59 955
+51f4 2 60 955
+FUNC 51f6 a 4 _set_osplatform
+51f6 a 385 2595
+FUNC 5200 a 4 _set_osver
+5200 a 386 2595
+FUNC 520a a 4 _set_winver
+520a a 387 2595
+FUNC 5214 a 4 _set_winmajor
+5214 a 388 2595
+FUNC 521e a 4 _set_winminor
+521e a 389 2595
+FUNC 5228 24 4 fast_error_exit
+5228 0 375 2608
+5228 9 384 2608
+5231 5 386 2608
+5236 9 388 2608
+523f c 389 2608
+524b 1 390 2608
+FUNC 524c 41 0 check_managed_app
+524c 0 413 2608
+524c b 418 2608
+5257 5 422 2608
+525c a 424 2608
+5266 2 425 2608
+5268 9 427 2608
+5271 2 428 2608
+5273 7 433 2608
+527a 2 434 2608
+527c d 437 2608
+5289 1 438 2608
+528a 2 419 2608
+528c 1 438 2608
+FUNC 528d 1b6 0 __tmainCRTStartup
+528d c 203 2608
+5299 19 233 2608
+52b2 4 234 2608
+52b6 8 235 2608
+52be a 236 2608
+52c8 2 242 2608
+52ca 7 243 2608
+52d1 3 244 2608
+52d4 4 243 2608
+52d8 9 244 2608
+52e1 2 245 2608
+52e3 6 248 2608
+52e9 6 249 2608
+52ef 6 250 2608
+52f5 9 256 2608
+52fe 9 257 2608
+5307 8 258 2608
+530f 6 259 2608
+5315 d 260 2608
+5322 6 262 2608
+5328 5 263 2608
+532d 6 264 2608
+5333 6 265 2608
+5339 6 266 2608
+533f 8 271 2608
+5347 c 273 2608
+5353 8 274 2608
+535b 9 276 2608
+5364 8 277 2608
+536c 5 286 2608
+5371 4 294 2608
+5375 9 296 2608
+537e 8 297 2608
+5386 b 300 2608
+5391 a 303 2608
+539b 9 305 2608
+53a4 8 306 2608
+53ac 9 307 2608
+53b5 8 308 2608
+53bd 8 310 2608
+53c5 4 311 2608
+53c9 7 312 2608
+53d0 a 326 2608
+53da 18 327 2608
+53f2 6 330 2608
+53f8 6 331 2608
+53fe 5 333 2608
+5403 2 335 2608
+5405 17 336 2608
+541c 6 342 2608
+5422 6 344 2608
+5428 6 345 2608
+542e 5 347 2608
+5433 7 349 2608
+543a 3 351 2608
+543d 6 352 2608
+FUNC 5443 a 0 mainCRTStartup
+5443 0 186 2608
+5443 5 193 2608
+5448 5 195 2608
+FUNC 544d a 4 _initp_misc_invarg
+544d 0 38 3328
+544d 9 39 3328
+5456 1 40 3328
+FUNC 5457 fc 14 _invoke_watson
+5457 1c 111 3328
+5473 6 128 3328
+5479 6 129 3328
+547f 6 130 3328
+5485 3 131 3328
+5488 3 132 3328
+548b 3 133 3328
+548e 7 134 3328
+5495 7 135 3328
+549c 4 136 3328
+54a0 4 137 3328
+54a4 4 138 3328
+54a8 4 139 3328
+54ac 1 140 3328
+54ad 6 141 3328
+54b3 6 147 3328
+54b9 19 148 3328
+54d2 3 150 3328
+54d5 13 163 3328
+54e8 6 168 3328
+54ee 13 169 3328
+5501 6 171 3328
+5507 a 174 3328
+5511 a 176 3328
+551b 8 180 3328
+5523 8 181 3328
+552b 12 184 3328
+553d 16 185 3328
+FUNC 5553 22 4 _set_invalid_parameter_handler
+5553 1 207 3328
+5554 b 211 3328
+555f d 212 3328
+556c 5 214 3328
+5571 3 216 3328
+5574 1 217 3328
+FUNC 5575 d 0 _get_invalid_parameter_handler
+5575 0 221 3328
+5575 c 225 3328
+5581 1 228 3328
+FUNC 5582 9 14 _invoke_watson(unsigned short const *,unsigned short const *,unsigned short const *,unsigned int,unsigned int)
+5582 3 266 3328
+5585 1 274 3328
+5586 5 273 3328
+FUNC 558b 24 14 _invalid_parameter
+558b 3 70 3328
+558e b 77 3328
+5599 5 78 3328
+559e 1 89 3328
+559f 2 80 3328
+55a1 8 86 3328
+55a9 1 89 3328
+55aa 5 88 3328
+FUNC 55af 10 0 _invalid_parameter_noinfo
+55af 0 98 3328
+55af f 99 3328
+55be 1 100 3328
+FUNC 55bf 9 14 _invalid_parameter(unsigned short const *,unsigned short const *,unsigned short const *,unsigned int,unsigned int)
+55bf 3 249 3328
+55c2 1 257 3328
+55c3 5 256 3328
+FUNC 55c8 96 8 _swprintf
+55c8 7 122 1564
+55cf 24 128 1564
+55f3 8 133 1564
+55fb 6 138 1564
+5601 22 153 1564
+5623 1d 160 1564
+5640 18 161 1564
+5658 4 163 1564
+565c 2 171 1564
+FUNC 565e 1a c __swprintf_l
+565e 0 181 1564
+565e 19 186 1564
+5677 1 188 1564
+FUNC 5678 1c c swprintf_s
+5678 0 238 1564
+5678 1b 243 1564
+5693 1 244 1564
+FUNC 5694 1f 10 _snwprintf_s
+5694 3 253 1564
+5697 1a 258 1564
+56b1 2 259 1564
+FUNC 56b3 1c c _swprintf_p
+56b3 0 267 1564
+56b3 1b 272 1564
+56ce 1 273 1564
+FUNC 56cf 1d 10 _swprintf_s_l
+56cf 3 282 1564
+56d2 18 287 1564
+56ea 2 288 1564
+FUNC 56ec 20 14 _snwprintf_s_l
+56ec 3 298 1564
+56ef 1b 303 1564
+570a 2 304 1564
+FUNC 570c 1d 10 _swprintf_p_l
+570c 3 313 1564
+570f 18 318 1564
+5727 2 319 1564
+FUNC 5729 11 4 _scwprintf
+5729 0 347 1564
+5729 10 352 1564
+5739 1 353 1564
+FUNC 573a 11 4 _scwprintf_p
+573a 0 359 1564
+573a 10 364 1564
+574a 1 365 1564
+FUNC 574b 16 8 _scwprintf_l
+574b 0 372 1564
+574b 15 376 1564
+5760 1 377 1564
+FUNC 5761 16 8 _scwprintf_p_l
+5761 0 384 1564
+5761 15 389 1564
+5776 1 390 1564
+FUNC 5777 14f 8 fprintf
+5777 c 49 1648
+5783 5 53 1648
+5788 2e 55 1648
+57b6 c 56 1648
+57c2 3 61 1648
+57c5 7 63 1648
+57cc 3 64 1648
+57cf b0 66 1648
+587f 5 67 1648
+5884 8 69 1648
+588c 11 70 1648
+589d a 71 1648
+58a7 c 75 1648
+58b3 3 79 1648
+58b6 6 80 1648
+58bc a 76 1648
+FUNC 58c6 1a c _fprintf_l
+58c6 0 88 1648
+58c6 19 93 1648
+58df 1 94 1648
+FUNC 58e0 1a c _fprintf_s_l
+58e0 0 102 1648
+58e0 19 107 1648
+58f9 1 108 1648
+FUNC 58fa 18 8 fprintf_s
+58fa 0 115 1648
+58fa 17 120 1648
+5911 1 121 1648
+FUNC 5912 1a c _fprintf_p_l
+5912 0 129 1648
+5912 19 134 1648
+592b 1 135 1648
+FUNC 592c 18 8 _fprintf_p
+592c 0 142 1648
+592c 17 147 1648
+5943 1 148 1648
+FUNC 5944 f6 18 _vswprintf_helper
+5944 7 125 1380
+594b 28 130 1380
+5973 2f 133 1380
+59a2 15 143 1380
+59b7 7 146 1380
+59be 2 148 1380
+59c0 6 150 1380
+59c6 13 157 1380
+59d9 5 160 1380
+59de 2 162 1380
+59e0 41 171 1380
+5a21 5 172 1380
+5a26 12 175 1380
+5a38 2 183 1380
+FUNC 5a3a 27 10 _vswprintf_c
+5a3a 0 241 1380
+5a3a 1f 242 1380
+5a59 7 243 1380
+5a60 1 244 1380
+FUNC 5a61 28 14 _vswprintf_c_l
+5a61 3 253 1380
+5a64 1c 254 1380
+5a80 7 255 1380
+5a87 2 256 1380
+FUNC 5a89 87 14 _vswprintf_s_l
+5a89 4 265 1380
+5a8d 25 269 1380
+5ab2 19 270 1380
+5acb 1a 272 1380
+5ae5 4 273 1380
+5ae9 3 275 1380
+5aec 5 278 1380
+5af1 1d 280 1380
+5b0e 2 288 1380
+FUNC 5b10 1b 10 vswprintf_s
+5b10 0 296 1380
+5b10 1a 297 1380
+5b2a 1 298 1380
+FUNC 5b2b 107 18 _vsnwprintf_s_l
+5b2b 5 308 1380
+5b30 27 313 1380
+5b57 13 314 1380
+5b6a 7 317 1380
+5b71 1b 319 1380
+5b8c 8 323 1380
+5b94 20 324 1380
+5bb4 5 325 1380
+5bb9 a 329 1380
+5bc3 7 331 1380
+5bca 2 333 1380
+5bcc 2 338 1380
+5bce 12 339 1380
+5be0 10 342 1380
+5bf0 a 344 1380
+5bfa a 346 1380
+5c04 2 348 1380
+5c06 4 352 1380
+5c0a 8 356 1380
+5c12 18 358 1380
+5c2a 6 360 1380
+5c30 2 366 1380
+FUNC 5c32 1e 14 _vsnwprintf_s
+5c32 3 375 1380
+5c35 19 376 1380
+5c4e 2 377 1380
+FUNC 5c50 27 10 _vswprintf_p
+5c50 0 385 1380
+5c50 1f 386 1380
+5c6f 7 387 1380
+5c76 1 388 1380
+FUNC 5c77 28 14 _vswprintf_p_l
+5c77 3 397 1380
+5c7a 1c 398 1380
+5c96 7 399 1380
+5c9d 2 400 1380
+FUNC 5c9f 24 4 _amsg_exit
+5c9f 0 446 2560
+5c9f 5 449 2560
+5ca4 9 450 2560
+5cad b 451 2560
+5cb8 a 452 2560
+5cc2 1 453 2560
+FUNC 5cc3 26 4 __crtCorExitProcess
+5cc3 0 650 2560
+5cc3 b 654 2560
+5cce 4 655 2560
+5cd2 c 656 2560
+5cde 4 657 2560
+5ce2 6 658 2560
+5ce8 1 668 2560
+FUNC 5ce9 15 4 __crtExitProcess
+5ce9 0 673 2560
+5ce9 a 674 2560
+5cf3 b 683 2560
+FUNC 5cfe 9 0 _lockexit
+5cfe 0 733 2560
+5cfe 8 734 2560
+5d06 1 735 2560
+FUNC 5d07 9 0 _unlockexit
+5d07 0 759 2560
+5d07 8 760 2560
+5d0f 1 761 2560
+FUNC 5d10 18 4 _initterm
+5d10 3 841 2560
+5d13 2 855 2560
+5d15 6 853 2560
+5d1b 2 854 2560
+5d1d 3 855 2560
+5d20 7 848 2560
+5d27 1 857 2560
+FUNC 5d28 20 8 _initterm_e
+5d28 1 890 2560
+5d29 c 899 2560
+5d35 6 904 2560
+5d3b 2 905 2560
+5d3d 3 906 2560
+5d40 7 899 2560
+5d47 1 910 2560
+FUNC 5d48 37 4 _get_osplatform
+5d48 0 929 2560
+5d48 27 931 2560
+5d6f 1 939 2560
+5d70 9 934 2560
+5d79 2 936 2560
+5d7b 3 938 2560
+5d7e 1 939 2560
+FUNC 5d7f 3c 4 _get_osver
+5d7f 0 958 2560
+5d7f 27 960 2560
+5da6 1 968 2560
+5da7 8 963 2560
+5daf 8 965 2560
+5db7 3 967 2560
+5dba 1 968 2560
+FUNC 5dbb 3c 4 _get_winver
+5dbb 0 987 2560
+5dbb 27 989 2560
+5de2 1 997 2560
+5de3 8 992 2560
+5deb 8 994 2560
+5df3 3 996 2560
+5df6 1 997 2560
+FUNC 5df7 3c 4 _get_winmajor
+5df7 0 1016 2560
+5df7 27 1018 2560
+5e1e 1 1026 2560
+5e1f 8 1021 2560
+5e27 8 1023 2560
+5e2f 3 1025 2560
+5e32 1 1026 2560
+FUNC 5e33 3c 4 _get_winminor
+5e33 0 1045 2560
+5e33 27 1047 2560
+5e5a 1 1055 2560
+5e5b 8 1050 2560
+5e63 8 1052 2560
+5e6b 3 1054 2560
+5e6e 1 1055 2560
+FUNC 5e6f 37 4 _get_wpgmptr
+5e6f 0 1074 2560
+5e6f 27 1076 2560
+5e96 1 1085 2560
+5e97 9 1080 2560
+5ea0 2 1082 2560
+5ea2 3 1084 2560
+5ea5 1 1085 2560
+FUNC 5ea6 37 4 _get_pgmptr
+5ea6 0 1104 2560
+5ea6 27 1106 2560
+5ecd 1 1115 2560
+5ece 9 1110 2560
+5ed7 2 1112 2560
+5ed9 3 1114 2560
+5edc 1 1115 2560
+FUNC 5edd 92 4 _cinit
+5edd 0 263 2560
+5edd 18 273 2560
+5ef5 b 275 2560
+5f00 5 277 2560
+5f05 f 283 2560
+5f14 4 284 2560
+5f18 4 285 2560
+5f1c a 288 2560
+5f26 20 293 2560
+5f46 1a 306 2560
+5f60 c 308 2560
+5f6c 2 312 2560
+5f6e 1 313 2560
+FUNC 5f6f e2 c doexit
+5f6f c 499 2560
+5f7b 8 517 2560
+5f83 5 518 2560
+5f88 b 520 2560
+5f93 6 521 2560
+5f99 8 524 2560
+5fa1 5 526 2560
+5fa6 e 542 2560
+5fb4 12 543 2560
+5fc6 5 545 2560
+5fcb b 546 2560
+5fd6 10 551 2560
+5fe6 9 552 2560
+5fef 2 553 2560
+5ff1 10 558 2560
+6001 10 566 2560
+6011 c 584 2560
+601d 6 588 2560
+6023 6 592 2560
+6029 8 594 2560
+6031 8 596 2560
+6039 3 584 2560
+603c 6 585 2560
+6042 9 586 2560
+604b 6 597 2560
+FUNC 6051 11 4 exit
+6051 0 397 2560
+6051 10 398 2560
+6061 1 399 2560
+FUNC 6062 11 4 _exit
+6062 0 405 2560
+6062 10 406 2560
+6072 1 407 2560
+FUNC 6073 f 0 _cexit
+6073 0 412 2560
+6073 e 413 2560
+6081 1 414 2560
+FUNC 6082 f 0 _c_exit
+6082 0 419 2560
+6082 e 420 2560
+6090 1 421 2560
+FUNC 6091 4c 0 _init_pointers
+6091 1 786 2560
+6092 7 787 2560
+6099 6 789 2560
+609f 6 790 2560
+60a5 6 791 2560
+60ab 6 792 2560
+60b1 6 793 2560
+60b7 6 794 2560
+60bd 6 795 2560
+60c3 6 796 2560
+60c9 13 799 2560
+60dc 1 800 2560
+FUNC 60e0 8b 4 strlen
+60e0 0 54 880
+60e0 4 63 880
+60e4 6 64 880
+60ea 2 65 880
+60ec 2 69 880
+60ee 3 70 880
+60f1 2 71 880
+60f3 2 72 880
+60f5 6 73 880
+60fb 2 74 880
+60fd 13 76 880
+6110 2 81 880
+6112 5 82 880
+6117 2 83 880
+6119 3 84 880
+611c 2 85 880
+611e 3 86 880
+6121 5 87 880
+6126 2 88 880
+6128 3 90 880
+612b 2 91 880
+612d 2 92 880
+612f 2 93 880
+6131 2 94 880
+6133 5 95 880
+6138 2 96 880
+613a 5 97 880
+613f 2 98 880
+6141 2 99 880
+6143 3 103 880
+6146 4 104 880
+614a 2 105 880
+614c 1 106 880
+614d 3 108 880
+6150 4 109 880
+6154 2 110 880
+6156 1 111 880
+6157 3 113 880
+615a 4 114 880
+615e 2 115 880
+6160 1 116 880
+6161 3 118 880
+6164 4 119 880
+6168 2 120 880
+616a 1 121 880
+FUNC 616b 33 4 _EH_prolog3
+616b 0 93 5671
+616b 1 101 5671
+616c 7 103 5671
+6173 4 112 5671
+6177 4 113 5671
+617b 1 114 5671
+617c 1 115 5671
+617d 1 116 5671
+617e 2 117 5671
+6180 2 118 5671
+6182 5 131 5671
+6187 2 132 5671
+6189 1 133 5671
+618a 3 134 5671
+618d 7 135 5671
+6194 3 150 5671
+6197 6 151 5671
+619d 1 153 5671
+FUNC 619e 36 4 _EH_prolog3_catch
+619e 0 206 5671
+619e 1 214 5671
+619f 7 216 5671
+61a6 4 225 5671
+61aa 4 226 5671
+61ae 1 228 5671
+61af 1 229 5671
+61b0 1 230 5671
+61b1 2 231 5671
+61b3 2 232 5671
+61b5 5 246 5671
+61ba 2 247 5671
+61bc 1 248 5671
+61bd 3 249 5671
+61c0 3 250 5671
+61c3 7 251 5671
+61ca 3 267 5671
+61cd 6 268 5671
+61d3 1 270 5671
+FUNC 61d4 36 4 _EH_prolog3_GS
+61d4 0 322 5671
+61d4 1 330 5671
+61d5 7 332 5671
+61dc 4 341 5671
+61e0 4 342 5671
+61e4 1 344 5671
+61e5 1 345 5671
+61e6 1 346 5671
+61e7 2 347 5671
+61e9 2 348 5671
+61eb 5 362 5671
+61f0 2 363 5671
+61f2 1 364 5671
+61f3 3 365 5671
+61f6 3 366 5671
+61f9 7 367 5671
+6200 3 384 5671
+6203 6 385 5671
+6209 1 387 5671
+FUNC 620a 39 4 _EH_prolog3_catch_GS
+620a 0 441 5671
+620a 1 449 5671
+620b 7 451 5671
+6212 4 460 5671
+6216 4 461 5671
+621a 1 463 5671
+621b 1 464 5671
+621c 1 465 5671
+621d 2 466 5671
+621f 2 467 5671
+6221 5 482 5671
+6226 2 483 5671
+6228 1 484 5671
+6229 3 485 5671
+622c 3 486 5671
+622f 3 487 5671
+6232 7 488 5671
+6239 3 505 5671
+623c 6 506 5671
+6242 1 508 5671
+FUNC 6243 14 0 _EH_epilog3
+6243 0 534 5671
+6243 3 537 5671
+6246 7 538 5671
+624d 1 539 5671
+624e 1 540 5671
+624f 1 541 5671
+6250 1 542 5671
+6251 1 543 5671
+6252 2 544 5671
+6254 1 545 5671
+6255 1 546 5671
+6256 1 547 5671
+FUNC 6257 f 0 _EH_epilog3_GS
+6257 0 575 5671
+6257 3 578 5671
+625a 2 579 5671
+625c 5 580 5671
+6261 5 581 5671
+FUNC 6266 f 0 _EH_epilog3_catch_GS
+6266 0 609 5671
+6266 3 612 5671
+6269 2 613 5671
+626b 5 614 5671
+6270 5 615 5671
+FUNC 6275 96 4 _stbuf
+6275 1 59 1850
+6276 14 69 1850
+628a 2 70 1850
+628c c 73 1850
+6298 4 74 1850
+629c c 75 1850
+62a8 3 76 1850
+62ab 6 82 1850
+62b1 6 86 1850
+62b7 4 87 1850
+62bb 1e 91 1850
+62d9 3 93 1850
+62dc e 94 1850
+62ea 2 96 1850
+62ec 7 98 1850
+62f3 6 99 1850
+62f9 8 102 1850
+6301 5 104 1850
+6306 1 105 1850
+6307 3 78 1850
+630a 1 105 1850
+FUNC 630b 2f 8 _ftbuf
+630b 0 138 1850
+630b 8 146 1850
+6313 c 148 1850
+631f 6 151 1850
+6325 7 152 1850
+632c 4 153 1850
+6330 9 154 1850
+6339 1 166 1850
+FUNC 633a 82 4 _LocaleUpdate::_LocaleUpdate(localeinfo_struct *)
+633a 0 261 1343
+633a f 262 1343
+6349 8 264 1343
+6351 5 265 1343
+6356 6 266 1343
+635c 1c 268 1343
+6378 21 269 1343
+6399 9 270 1343
+63a2 4 272 1343
+63a6 4 273 1343
+63aa 2 276 1343
+63ac a 278 1343
+63b6 6 280 1343
+FUNC 63bc e 0 _LocaleUpdate::~_LocaleUpdate()
+63bc 0 282 1343
+63bc 6 283 1343
+63c2 7 284 1343
+63c9 1 285 1343
+FUNC 63ca 3 0 _LocaleUpdate::GetLocaleT()
+63ca 2 287 1343
+63cc 1 289 1343
+FUNC 63cd 33 0 write_char
+63cd 0 2433 1312
+63cd a 2434 1312
+63d7 2 2437 1312
+63d9 21 2442 1312
+63fa 2 2444 1312
+63fc 1 2447 1312
+63fd 2 2446 1312
+63ff 1 2447 1312
+FUNC 6400 24 c write_multi_char
+6400 6 2498 1312
+6406 2 2501 1312
+6408 e 2500 1312
+6416 5 2501 1312
+641b 7 2499 1312
+6422 2 2504 1312
+FUNC 6424 4a 4 write_string
+6424 0 2563 1312
+6424 12 2564 1312
+6436 6 2566 1312
+643c 2 2567 1312
+643e e 2570 1312
+644c 5 2571 1312
+6451 a 2573 1312
+645b 9 2574 1312
+6464 9 2569 1312
+646d 1 2579 1312
+FUNC 646e d 4 get_int_arg
+646e 0 2602 1312
+646e c 2603 1312
+647a 1 2604 1312
+FUNC 647b 10 4 get_int64_arg
+647b 0 2644 1312
+647b f 2645 1312
+648a 1 2646 1312
+FUNC 648b e 4 get_short_arg
+648b 0 2671 1312
+648b d 2672 1312
+6498 1 2673 1312
+FUNC 6499 994 10 _output_l
+6499 1b 975 1312
+64b4 45 1036 1312
+64f9 2d 1031 1312
+6526 b1 1033 1312
+65d7 8 1036 1312
+65df 26 1073 1312
+6605 1d 1075 1312
+6622 8 1076 1312
+662a 18 1131 1312
+6642 13 1173 1312
+6655 3 1174 1312
+6658 5 1175 1312
+665d 1f 1179 1312
+667c 4 1193 1312
+6680 5 1194 1312
+6685 4 1181 1312
+6689 5 1182 1312
+668e 4 1184 1312
+6692 5 1185 1312
+6697 7 1190 1312
+669e 5 1191 1312
+66a3 4 1187 1312
+66a7 5 1196 1312
+66ac 5 1200 1312
+66b1 9 1206 1312
+66ba b 1233 1312
+66c5 4 1235 1312
+66c9 3 1236 1312
+66cc 5 1239 1312
+66d1 10 1241 1312
+66e1 5 1243 1312
+66e6 3 1248 1312
+66e9 5 1249 1312
+66ee 5 1253 1312
+66f3 9 1259 1312
+66fc b 1284 1312
+6707 4 1285 1312
+670b 5 1287 1312
+6710 10 1289 1312
+6720 5 1291 1312
+6725 18 1295 1312
+673d 7 1362 1312
+6744 5 1363 1312
+6749 5 1301 1312
+674e 1 1303 1312
+674f a 1304 1312
+6759 5 1306 1312
+675e 4 1308 1312
+6762 5 1310 1312
+6767 4 1358 1312
+676b 5 1359 1312
+6770 c 1322 1312
+677c 2 1324 1312
+677e f 1325 1312
+678d a 1327 1312
+6797 2 1329 1312
+6799 a 1330 1312
+67a3 5 1332 1312
+67a8 30 1337 1312
+67d8 3 1352 1312
+67db 13 1158 1312
+67ee 11 1160 1312
+67ff 3 1161 1312
+6802 b 1163 1312
+680d b 1166 1312
+6818 5 1167 1312
+681d 32 1378 1312
+684f d 1716 1312
+685c 4 1724 1312
+6860 17 1749 1312
+6877 c 1750 1312
+6883 8 1381 1312
+688b 9 1385 1312
+6894 8 1561 1312
+689c 7 1562 1312
+68a3 d 1584 1312
+68b0 3 1589 1312
+68b3 15 1635 1312
+68c8 4 1636 1312
+68cc 8 1637 1312
+68d4 f 1639 1312
+68e3 1d 1378 1312
+6900 12 1448 1312
+6912 16 1467 1312
+6928 4 1470 1312
+692c 7 1471 1312
+6933 2 1472 1312
+6935 6 1499 1312
+693b 7 1500 1312
+6942 6 1503 1312
+6948 5 1506 1312
+694d 5 1523 1312
+6952 e 1541 1312
+6960 6 1546 1312
+6966 d 1548 1312
+6973 7 1549 1312
+697a 5 1550 1312
+697f 3 1551 1312
+6982 5 1553 1312
+6987 8 1543 1312
+698f 7 1544 1312
+6996 5 1557 1312
+699b 34 1378 1312
+69cf d 1908 1312
+69dc 9 1910 1312
+69e5 8 1668 1312
+69ed d 1688 1312
+69fa 6 1702 1312
+6a00 7 1703 1312
+6a07 2 1704 1312
+6a09 5 1706 1312
+6a0e 7 1708 1312
+6a15 5 1710 1312
+6a1a 4 1864 1312
+6a1e 7 1869 1312
+6a25 c 1933 1312
+6a31 8 1939 1312
+6a39 5 1958 1312
+6a3e 7 1751 1312
+6a45 9 1752 1312
+6a4e 5 1753 1312
+6a53 3 1754 1312
+6a56 9 1756 1312
+6a5f f 1759 1312
+6a6e 2 1760 1312
+6a70 13 1765 1312
+6a83 9 1767 1312
+6a8c e 1809 1312
+6a9a 27 1828 1312
+6ac1 13 1838 1312
+6ad4 15 1840 1312
+6ae9 a 1844 1312
+6af3 15 1846 1312
+6b08 5 1852 1312
+6b0d 7 1853 1312
+6b14 4 1854 1312
+6b18 1 1857 1312
+6b19 5 1859 1312
+6b1e 7 1877 1312
+6b25 3 1887 1312
+6b28 2 1888 1312
+6b2a 1a 1378 1312
+6b44 7 1892 1312
+6b4b 11 1897 1312
+6b5c c 1900 1312
+6b68 7 1901 1312
+6b6f 5 1903 1312
+6b74 5 1961 1312
+6b79 6 1987 1312
+6b7f 14 2026 1312
+6b93 2 2045 1312
+6b95 5 2051 1312
+6b9a 2 2071 1312
+6b9c 3 2074 1312
+6b9f 6 2080 1312
+6ba5 2 2099 1312
+6ba7 5 2105 1312
+6bac f 2128 1312
+6bbb 7 2129 1312
+6bc2 7 2130 1312
+6bc9 c 2136 1312
+6bd5 2 2142 1312
+6bd7 6 2148 1312
+6bdd 7 2149 1312
+6be4 2 2150 1312
+6be6 4 2151 1312
+6bea a 2152 1312
+6bf4 3 2153 1312
+6bf7 6 2157 1312
+6bfd 3 2158 1312
+6c00 6 2163 1312
+6c06 10 2165 1312
+6c16 10 2166 1312
+6c26 c 2168 1312
+6c32 3 2170 1312
+6c35 3 2172 1312
+6c38 2 2173 1312
+6c3a 8 2175 1312
+6c42 1 2176 1312
+6c43 19 2180 1312
+6c5c 9 2181 1312
+6c65 1 2182 1312
+6c66 2 2185 1312
+6c68 6 1640 1312
+6c6e 2 1641 1312
+6c70 4 1640 1312
+6c74 5 1642 1312
+6c79 2 1644 1312
+6c7b 4 1645 1312
+6c7f 8 1646 1312
+6c87 5 1647 1312
+6c8c 6 1648 1312
+6c92 1 1649 1312
+6c93 4 1648 1312
+6c97 6 1650 1312
+6c9d a 2201 1312
+6ca7 7 2204 1312
+6cae 6 2205 1312
+6cb4 4 2207 1312
+6cb8 2 2208 1312
+6cba 4 2210 1312
+6cbe 4 2212 1312
+6cc2 2 2213 1312
+6cc4 4 2215 1312
+6cc8 4 2217 1312
+6ccc 7 2218 1312
+6cd3 9 2224 1312
+6cdc 6 2228 1312
+6ce2 11 2230 1312
+6cf3 11 2234 1312
+6d04 d 2236 1312
+6d11 f 2238 1312
+6d20 d 2243 1312
+6d2d 3 2249 1312
+6d30 3 2250 1312
+6d33 1e 2252 1312
+6d51 9 2253 1312
+6d5a 18 2257 1312
+6d72 2 1690 1312
+6d74 4 2254 1312
+6d78 2 2259 1312
+6d7a d 2260 1312
+6d87 c 2290 1312
+6d93 f 2292 1312
+6da2 6 2297 1312
+6da8 8 2298 1312
+6db0 1e 2299 1312
+6dce 17 1163 1312
+6de5 10 2376 1312
+6df5 38 2377 1312
+FUNC 6e2d 3b 4 _get_errno_from_oserr
+6e2d 0 119 6100
+6e2d 6 123 6100
+6e33 f 124 6100
+6e42 8 133 6100
+6e4a 3 134 6100
+6e4d 1 139 6100
+6e4e 7 125 6100
+6e55 1 139 6100
+6e56 11 135 6100
+6e67 1 139 6100
+FUNC 6e68 13 0 _errno
+6e68 0 280 6100
+6e68 5 281 6100
+6e6d 4 282 6100
+6e71 5 283 6100
+6e76 1 288 6100
+6e77 3 285 6100
+6e7a 1 288 6100
+FUNC 6e7b 13 0 __doserrno
+6e7b 0 293 6100
+6e7b 5 294 6100
+6e80 4 295 6100
+6e84 5 296 6100
+6e89 1 300 6100
+6e8a 3 298 6100
+6e8d 1 300 6100
+FUNC 6e8e 1e 4 _dosmaperr
+6e8e 1 110 6100
+6e8f 9 111 6100
+6e98 13 113 6100
+6eab 1 114 6100
+FUNC 6eac 1b 4 _set_errno
+6eac 0 157 6100
+6eac 5 158 6100
+6eb1 4 159 6100
+6eb5 3 161 6100
+6eb8 1 168 6100
+6eb9 b 165 6100
+6ec4 2 166 6100
+6ec6 1 168 6100
+FUNC 6ec7 2a 4 _get_errno
+6ec7 1 187 6100
+6ec8 1b 189 6100
+6ee3 1 195 6100
+6ee4 9 193 6100
+6eed 3 194 6100
+6ef0 1 195 6100
+FUNC 6ef1 1b 4 _set_doserrno
+6ef1 0 213 6100
+6ef1 5 214 6100
+6ef6 4 215 6100
+6efa 3 217 6100
+6efd 1 224 6100
+6efe b 221 6100
+6f09 2 222 6100
+6f0b 1 224 6100
+FUNC 6f0c 2a 4 _get_doserrno
+6f0c 1 243 6100
+6f0d 1b 245 6100
+6f28 1 251 6100
+6f29 9 249 6100
+6f32 3 250 6100
+6f35 1 251 6100
+FUNC 6f38 45 0 _SEH_prolog4
+FUNC 6f7d 14 0 _SEH_epilog4
+FUNC 6fa0 24 0 ValidateLocalCookies
+FUNC 6fd0 196 10 _except_handler4
+FUNC 7166 90 10 vprintf_helper
+7166 c 47 1507
+7172 d 48 1507
+717f 2b 52 1507
+71aa 7 55 1507
+71b1 3 56 1507
+71b4 8 58 1507
+71bc 10 59 1507
+71cc a 60 1507
+71d6 c 63 1507
+71e2 3 67 1507
+71e5 6 68 1507
+71eb 3 63 1507
+71ee 8 64 1507
+FUNC 71f6 1a c _vprintf_l
+71f6 0 75 1507
+71f6 19 76 1507
+720f 1 77 1507
+FUNC 7210 1a c _vprintf_s_l
+7210 0 84 1507
+7210 19 85 1507
+7229 1 86 1507
+FUNC 722a 1a c _vprintf_p_l
+722a 0 93 1507
+722a 19 94 1507
+7243 1 95 1507
+FUNC 7244 18 8 vprintf
+7244 0 101 1507
+7244 17 102 1507
+725b 1 103 1507
+FUNC 725c 18 8 vprintf_s
+725c 0 109 1507
+725c 17 110 1507
+7273 1 111 1507
+FUNC 7274 18 8 _vprintf_p
+7274 0 117 1507
+7274 17 118 1507
+728b 1 119 1507
+FUNC 728c 104 0 __report_gsfailure
+728c 9 140 3731
+7295 5 170 3731
+729a 6 171 3731
+72a0 6 172 3731
+72a6 6 173 3731
+72ac 6 174 3731
+72b2 6 175 3731
+72b8 7 176 3731
+72bf 7 177 3731
+72c6 7 178 3731
+72cd 7 179 3731
+72d4 7 180 3731
+72db 7 181 3731
+72e2 1 182 3731
+72e3 6 183 3731
+72e9 3 190 3731
+72ec 5 191 3731
+72f1 3 192 3731
+72f4 5 193 3731
+72f9 3 194 3731
+72fc 5 195 3731
+7301 6 201 3731
+7307 a 204 3731
+7311 a 206 3731
+731b a 285 3731
+7325 a 286 3731
+732f b 293 3731
+733a b 294 3731
+7345 b 297 3731
+7350 8 298 3731
+7358 8 302 3731
+7360 b 304 3731
+736b 9 313 3731
+7374 8 315 3731
+737c 12 319 3731
+738e 2 320 3731
+FUNC 7390 5c6 c _write_nolock
+7390 22 95 4777
+73b2 2 106 4777
+73b4 11 108 4777
+73c5 7 109 4777
+73cc 2b 111 4777
+73f7 27 113 4777
+741e 10 116 4777
+742e 33 119 4777
+7461 6 122 4777
+7467 f 126 4777
+7476 1c 143 4777
+7492 5 146 4777
+7497 8 147 4777
+749f 14 148 4777
+74b3 16 152 4777
+74c9 6 153 4777
+74cf 4 157 4777
+74d3 16 160 4777
+74e9 9 153 4777
+74f2 b 163 4777
+74fd 9 164 4777
+7506 11 170 4777
+7517 18 171 4777
+752f 2 173 4777
+7531 14 174 4777
+7545 18 175 4777
+755d 4 181 4777
+7561 2e 205 4777
+758f 21 212 4777
+75b0 6 213 4777
+75b6 8 214 4777
+75be a 222 4777
+75c8 29 229 4777
+75f1 a 230 4777
+75fb 3 232 4777
+75fe 3 233 4777
+7601 2 238 4777
+7603 8 186 4777
+760b 3 191 4777
+760e 9 192 4777
+7617 f 193 4777
+7626 8 240 4777
+762e 13 242 4777
+7641 3 244 4777
+7644 6 251 4777
+764a 3 254 4777
+764d 14 255 4777
+7661 3 257 4777
+7664 12 258 4777
+7676 5 236 4777
+767b e 268 4777
+7689 12 277 4777
+769b f 278 4777
+76aa d 279 4777
+76b7 8 283 4777
+76bf 9 284 4777
+76c8 5 285 4777
+76cd 3 286 4777
+76d0 7 287 4777
+76d7 f 289 4777
+76e6 25 297 4777
+770b 6 299 4777
+7711 16 300 4777
+7727 f 308 4777
+7736 f 314 4777
+7745 b 315 4777
+7750 8 319 4777
+7758 c 320 4777
+7764 6 321 4777
+776a 4 322 4777
+776e c 323 4777
+777a f 325 4777
+7789 25 333 4777
+77ae 6 335 4777
+77b4 1a 336 4777
+77ce 5 344 4777
+77d3 f 359 4777
+77e2 13 361 4777
+77f5 8 365 4777
+77fd b 366 4777
+7808 6 367 4777
+780e a 369 4777
+7818 11 371 4777
+7829 2f 382 4777
+7858 4 384 4777
+785c 25 406 4777
+7881 3 407 4777
+7884 6 412 4777
+788a 9 409 4777
+7893 4 419 4777
+7897 15 423 4777
+78ac 2 428 4777
+78ae 1b 434 4777
+78c9 a 437 4777
+78d3 2 439 4777
+78d5 9 440 4777
+78de a 443 4777
+78e8 7 447 4777
+78ef 8 449 4777
+78f7 b 452 4777
+7902 2 455 4777
+7904 9 456 4777
+790d 2 457 4777
+790f 11 459 4777
+7920 4 460 4777
+7924 b 462 4777
+792f 7 463 4777
+7936 5 464 4777
+793b 5 469 4777
+7940 16 470 4777
+FUNC 7956 dc c _write
+7956 c 61 4777
+7962 23 66 4777
+7985 2f 67 4777
+79b4 20 68 4777
+79d4 7 70 4777
+79db 3 72 4777
+79de 9 73 4777
+79e7 14 74 4777
+79fb 2 75 4777
+79fd b 76 4777
+7a08 7 77 4777
+7a0f 4 78 4777
+7a13 c 82 4777
+7a1f 3 86 4777
+7a22 6 87 4777
+7a28 a 83 4777
+FUNC 7a32 2d 4 _fileno
+7a32 0 40 2176
+7a32 27 41 2176
+7a59 1 43 2176
+7a5a 4 42 2176
+7a5e 1 43 2176
+FUNC 7a5f e1 4 _commit
+7a5f c 39 5043
+7a6b 1b 43 5043
+7a86 28 44 5043
+7aae 20 45 5043
+7ace 7 47 5043
+7ad5 3 48 5043
+7ad8 9 49 5043
+7ae1 14 51 5043
+7af5 9 52 5043
+7afe 2 54 5043
+7b00 3 55 5043
+7b03 5 59 5043
+7b08 a 62 5043
+7b12 b 66 5043
+7b1d 4 67 5043
+7b21 c 72 5043
+7b2d 3 75 5043
+7b30 6 76 5043
+7b36 a 73 5043
+FUNC 7b40 49 0 _mtinitlocks
+7b40 2 137 2371
+7b42 7 144 2371
+7b49 11 145 2371
+7b5a 2 146 2371
+7b5c 15 148 2371
+7b71 6 144 2371
+7b77 5 157 2371
+7b7c d 158 2371
+FUNC 7b89 55 0 _mtdeletelocks
+7b89 1 188 2371
+7b8a d 194 2371
+7b97 c 196 2371
+7ba3 3 200 2371
+7ba6 6 206 2371
+7bac f 207 2371
+7bbb 6 215 2371
+7bc1 c 217 2371
+7bcd 10 221 2371
+7bdd 1 224 2371
+FUNC 7bde 15 4 _unlock
+7bde 3 371 2371
+7be1 10 375 2371
+7bf1 2 376 2371
+FUNC 7bf3 18 4 _lockerr_exit
+7bf3 0 403 2371
+7bf3 c 404 2371
+7bff b 405 2371
+7c0a 1 406 2371
+FUNC 7c0b c3 4 _mtinitlocknum
+7c0b c 259 2371
+7c17 6 261 2371
+7c1d a 269 2371
+7c27 5 270 2371
+7c2c 7 271 2371
+7c33 c 272 2371
+7c3f e 276 2371
+7c4d 4 277 2371
+7c51 e 279 2371
+7c5f b 280 2371
+7c6a 4 281 2371
+7c6e 8 284 2371
+7c76 3 285 2371
+7c79 4 287 2371
+7c7d 11 288 2371
+7c8e 7 289 2371
+7c95 b 290 2371
+7ca0 3 291 2371
+7ca3 2 292 2371
+7ca5 2 293 2371
+7ca7 2 296 2371
+7ca9 7 297 2371
+7cb0 c 300 2371
+7cbc 3 304 2371
+7cbf 6 305 2371
+7cc5 9 301 2371
+FUNC 7cce 31 4 _lock
+7cce 3 333 2371
+7cd1 10 338 2371
+7ce1 b 340 2371
+7cec 8 341 2371
+7cf4 9 348 2371
+7cfd 2 349 2371
+FUNC 7cff 240 0 _ioinit
+7cff c 111 4958
+7d0b 5 122 4958
+7d10 a 127 4958
+7d1a 7 128 4958
+7d21 f 137 4958
+7d30 6 139 4958
+7d36 5 142 4958
+7d3b 6 143 4958
+7d41 8 145 4958
+7d49 4 146 4958
+7d4d 3 147 4958
+7d50 4 148 4958
+7d54 3 149 4958
+7d57 4 151 4958
+7d5b 4 152 4958
+7d5f 4 153 4958
+7d63 13 145 4958
+7d76 15 161 4958
+7d8b 2 166 4958
+7d8d 3 172 4958
+7d90 6 173 4958
+7d96 b 179 4958
+7da1 5 185 4958
+7da6 f 191 4958
+7db5 9 204 4958
+7dbe 7 205 4958
+7dc5 8 207 4958
+7dcd 4 208 4958
+7dd1 3 209 4958
+7dd4 4 210 4958
+7dd8 4 211 4958
+7ddc 4 212 4958
+7de0 4 213 4958
+7de4 4 214 4958
+7de8 f 207 4958
+7df7 9 185 4958
+7e00 2 284 4958
+7e02 6 197 4958
+7e08 8 221 4958
+7e10 24 234 4958
+7e34 15 236 4958
+7e49 7 237 4958
+7e50 5 238 4958
+7e55 18 241 4958
+7e6d 3 243 4958
+7e70 d 221 4958
+7e7d 2 253 4958
+7e7f b 255 4958
+7e8a c 258 4958
+7e96 6 306 4958
+7e9c 4 262 4958
+7ea0 30 266 4958
+7ed0 2 271 4958
+7ed2 a 277 4958
+7edc 6 278 4958
+7ee2 5 279 4958
+7ee7 4 280 4958
+7eeb 14 284 4958
+7eff 3 286 4958
+7f02 2 288 4958
+7f04 4 297 4958
+7f08 6 298 4958
+7f0e a 253 4958
+7f18 c 313 4958
+7f24 4 315 4958
+7f28 7 128 4958
+7f2f a 129 4958
+7f39 6 316 4958
+FUNC 7f3f 4c 0 _ioterm
+7f3f 2 341 4958
+7f41 5 345 4958
+7f46 6 347 4958
+7f4c 8 353 4958
+7f54 9 355 4958
+7f5d 11 356 4958
+7f6e 4 353 4958
+7f72 7 361 4958
+7f79 11 362 4958
+7f8a 1 365 4958
+FUNC 7f8b 21 4 wait_a_bit
+7f8b 1 18 5557
+7f8c b 19 5557
+7f97 6 20 5557
+7f9d 8 21 5557
+7fa5 3 22 5557
+7fa8 3 23 5557
+7fab 1 24 5557
+FUNC 7fac 10 4 _set_malloc_crt_max_wait
+7fac 0 32 5557
+7fac f 34 5557
+7fbb 1 36 5557
+FUNC 7fbc 40 4 _malloc_crt
+7fbc 2 39 5557
+7fbe 2 40 5557
+7fc0 b 44 5557
+7fcb d 45 5557
+7fd8 18 46 5557
+7ff0 7 47 5557
+7ff7 4 50 5557
+7ffb 1 51 5557
+FUNC 7ffc 48 8 _calloc_crt
+7ffc 2 54 5557
+7ffe 2 55 5557
+8000 14 61 5557
+8014 c 62 5557
+8020 18 63 5557
+8038 7 64 5557
+803f 4 67 5557
+8043 1 68 5557
+FUNC 8044 4b 8 _realloc_crt
+8044 2 71 5557
+8046 2 72 5557
+8048 f 76 5557
+8057 14 77 5557
+806b 18 78 5557
+8083 7 79 5557
+808a 4 82 5557
+808e 1 83 5557
+FUNC 808f 50 c _recalloc_crt
+808f 2 86 5557
+8091 2 87 5557
+8093 16 91 5557
+80a9 12 92 5557
+80bb 18 94 5557
+80d3 7 95 5557
+80da 4 100 5557
+80de 1 101 5557
+FUNC 80df 8 0 _malloc_crt_fastcall
+80df 0 105 5557
+80df 7 106 5557
+80e6 1 107 5557
+FUNC 80e7 a 0 _calloc_crt_fastcall
+80e7 0 110 5557
+80e7 9 111 5557
+80f0 1 112 5557
+FUNC 80f1 a 0 _realloc_crt_fastcall
+80f1 0 115 5557
+80f1 9 116 5557
+80fa 1 117 5557
+FUNC 80fb 8e 4 free
+80fb c 42 5515
+8107 7 47 5515
+810e 9 53 5515
+8117 8 57 5515
+811f 4 58 5515
+8123 e 60 5515
+8131 9 61 5515
+813a c 64 5515
+8146 6 68 5515
+814c 3 70 5515
+814f 2 106 5515
+8151 9 65 5515
+815a f 109 5515
+8169 4 110 5515
+816d 16 112 5515
+8183 6 115 5515
+FUNC 8189 9f 0 _fcloseall
+8189 c 43 1792
+8195 5 44 1792
+819a 8 47 1792
+81a2 3 48 1792
+81a5 e 50 1792
+81b3 10 52 1792
+81c3 14 57 1792
+81d7 3 58 1792
+81da 5 63 1792
+81df 12 65 1792
+81f1 e 66 1792
+81ff 8 67 1792
+8207 3 50 1792
+820a c 73 1792
+8216 3 77 1792
+8219 6 78 1792
+821f 9 74 1792
+FUNC 8228 19 4 std::bad_exception::bad_exception(char const *)
+8228 13 351 6035
+823b 6 352 6035
+FUNC 8241 b 0 std::bad_exception::~bad_exception()
+8241 6 355 6035
+8247 5 356 6035
+FUNC 824c 22 0 std::bad_exception::`vector deleting destructor'(unsigned int)
+FUNC 826e 5c c __TypeMatch
+826e 2 999 6034
+8270 13 1001 6034
+8283 1b 1008 6034
+829e 4 1009 6034
+82a2 22 1023 6034
+82c4 5 1002 6034
+82c9 1 1024 6034
+FUNC 82ca 44 4 __FrameUnwindFilter
+82ca 0 1035 6034
+82ca 6 1038 6034
+82d0 e 1040 6034
+82de 13 1076 6034
+82f1 e 1068 6034
+82ff c 1070 6034
+830b 2 1072 6034
+830d 1 1078 6034
+FUNC 830e e1 10 __FrameUnwindToState
+830e c 1105 6034
+831a 1b 1112 6034
+8335 c 1114 6034
+8341 4 1115 6034
+8345 5 1119 6034
+834a f 1123 6034
+8359 f 1126 6034
+8368 7 1128 6034
+836f 6 1131 6034
+8375 3 1138 6034
+8378 12 1145 6034
+838a 6 1149 6034
+8390 d 1151 6034
+839d d 1153 6034
+83aa 3 1155 6034
+83ad 2 1156 6034
+83af c 1157 6034
+83bb a 1169 6034
+83c5 3 1176 6034
+83c8 6 1180 6034
+83ce 6 1157 6034
+83d4 e 1158 6034
+83e2 d 1159 6034
+FUNC 83ef 45 0 ExFilterRethrow
+83ef 0 1533 6034
+83ef 2 1535 6034
+83f1 2f 1538 6034
+8420 e 1542 6034
+842e 2 1543 6034
+8430 1 1547 6034
+8431 2 1545 6034
+8433 1 1547 6034
+FUNC 8434 54 8 __DestructExceptionObject
+8434 c 1791 6034
+8440 f 1794 6034
+844f e 1801 6034
+845d 4 1803 6034
+8461 9 1810 6034
+846a 7 1814 6034
+8471 6 1824 6034
+8477 c 1815 6034
+8483 5 1819 6034
+FUNC 8488 25 8 __AdjustPointer
+8488 0 1842 6034
+8488 d 1843 6034
+8495 6 1845 6034
+849b 3 1850 6034
+849e e 1852 6034
+84ac 1 1856 6034
+FUNC 84ad 13 0 __uncaught_exception()
+84ad 0 1867 6034
+84ad 12 1868 6034
+84bf 1 1869 6034
+FUNC 84c0 b3 8 __CxxRegisterExceptionObject
+84c0 0 2077 6034
+84c0 14 2085 6034
+84d4 26 2087 6034
+84fa 6 2088 6034
+8500 b 2090 6034
+850b b 2093 6034
+8516 e 2094 6034
+8524 e 2095 6034
+8532 b 2096 6034
+853d 2 2097 6034
+853f 4 2098 6034
+8543 4 2099 6034
+8547 c 2101 6034
+8553 10 2102 6034
+8563 c 2103 6034
+856f 3 2104 6034
+8572 1 2105 6034
+FUNC 8573 4c 4 __CxxDetectRethrow
+8573 0 2117 6034
+8573 6 2119 6034
+8579 2 2120 6034
+857b 2 2121 6034
+857d 2f 2122 6034
+85ac c 2123 6034
+85b8 3 2124 6034
+85bb 1 2127 6034
+85bc 2 2126 6034
+85be 1 2127 6034
+FUNC 85bf 139 8 __CxxUnregisterExceptionObject
+85bf 1 2139 6034
+85c0 4 2143 6034
+85c4 d 2145 6034
+85d1 6 2146 6034
+85d7 85 2149 6034
+865c 14 2150 6034
+8670 5b 2152 6034
+86cb c 2153 6034
+86d7 e 2154 6034
+86e5 12 2155 6034
+86f7 1 2157 6034
+FUNC 86f8 4 0 __CxxQueryExceptionSize
+86f8 0 2167 6034
+86f8 3 2168 6034
+86fb 1 2169 6034
+FUNC 86fc 32 8 __CxxCallUnwindDtor
+86fc c 2189 6034
+8708 4 2190 6034
+870c 6 2192 6034
+8712 2 2193 6034
+8714 d 2194 6034
+8721 7 2197 6034
+8728 6 2198 6034
+FUNC 872e 33 8 __CxxCallUnwindDelDtor
+872e c 2218 6034
+873a 4 2219 6034
+873e 7 2221 6034
+8745 2 2222 6034
+8747 d 2223 6034
+8754 7 2226 6034
+875b 6 2227 6034
+FUNC 8761 32 8 __CxxCallUnwindStdDelDtor
+8761 c 2247 6034
+876d 4 2248 6034
+8771 6 2250 6034
+8777 2 2251 6034
+8779 d 2252 6034
+8786 7 2255 6034
+878d 6 2256 6034
+FUNC 8793 3b 14 __CxxCallUnwindVecDtor
+8793 c 2282 6034
+879f 4 2283 6034
+87a3 f 2285 6034
+87b2 2 2286 6034
+87b4 d 2287 6034
+87c1 7 2290 6034
+87c8 6 2291 6034
+FUNC 87ce 79 4 IsInExceptionSpec
+87ce 6 2302 6034
+87d4 9 2303 6034
+87dd 5 2307 6034
+87e2 f 2323 6034
+87f1 9 2326 6034
+87fa 2 2327 6034
+87fc 10 2328 6034
+880c 26 2335 6034
+8832 4 2337 6034
+8836 c 2323 6034
+8842 3 2343 6034
+8845 2 2344 6034
+FUNC 8847 49 4 CallUnexpected
+8847 c 2379 6034
+8853 13 2380 6034
+8866 4 2383 6034
+886a 5 2384 6034
+886f 4 2391 6034
+8873 5 2392 6034
+8878 8 2388 6034
+8880 10 2390 6034
+FUNC 8890 30 0 Is_bad_exception_allowed
+8890 2 2399 6034
+8892 8 2400 6034
+889a 1d 2402 6034
+88b7 4 2408 6034
+88bb 1 2409 6034
+88bc 4 2404 6034
+FUNC 88c0 82 8 _is_exception_typeof(type_info const &,_EXCEPTION_POINTERS *)
+88c0 1 2416 6034
+88c1 e 2417 6034
+88cf 2 2419 6034
+88d1 9 2422 6034
+88da 2b 2423 6034
+8905 6 2432 6034
+890b 7 2433 6034
+8912 2 2445 6034
+8914 20 2446 6034
+8934 4 2439 6034
+8938 4 2454 6034
+893c 6 2455 6034
+FUNC 8942 19c 18 CallCatchBlock
+8942 14 1431 6034
+8956 3 1437 6034
+8959 4 1439 6034
+895d 6 1443 6034
+8963 11 1447 6034
+8974 e 1451 6034
+8982 e 1452 6034
+8990 b 1454 6034
+899b e 1455 6034
+89a9 a 1457 6034
+89b3 3 1458 6034
+89b6 16 1463 6034
+89cc 12 1464 6034
+89de c 1465 6034
+89ea 3 1470 6034
+89ed 15 1471 6034
+8a02 3 1472 6034
+8a05 c 1474 6034
+8a11 11 1476 6034
+8a22 7 1478 6034
+8a29 d 1482 6034
+8a36 b 1486 6034
+8a41 13 1488 6034
+8a54 3 1517 6034
+8a57 6 1518 6034
+8a5d 5 1474 6034
+8a62 6 1488 6034
+8a68 6 1494 6034
+8a6e 9 1497 6034
+8a77 e 1500 6034
+8a85 e 1501 6034
+8a93 3f 1510 6034
+8ad2 c 1511 6034
+FUNC 8ade 17f 10 __BuildCatchObjectHelper
+8ade c 1575 6034
+8aea 5 1576 6034
+8aef 2a 1582 6034
+8b19 2 1588 6034
+8b1b 3 1590 6034
+8b1e 2 1588 6034
+8b20 2 1592 6034
+8b22 4 1611 6034
+8b26 3 1614 6034
+8b29 4 1622 6034
+8b2d 4 1615 6034
+8b31 26 1622 6034
+8b57 5 1623 6034
+8b5c 11 1625 6034
+8b6d 5 1628 6034
+8b72 3 1629 6034
+8b75 6 1636 6034
+8b7b 4 1629 6034
+8b7f 20 1636 6034
+8b9f 12 1637 6034
+8bb1 10 1639 6034
+8bc1 4 1641 6034
+8bc5 2 1646 6034
+8bc7 5 1649 6034
+8bcc 18 1654 6034
+8be4 1e 1656 6034
+8c02 2 1660 6034
+8c04 25 1668 6034
+8c29 d 1672 6034
+8c36 2 1677 6034
+8c38 5 1678 6034
+8c3d 7 1681 6034
+8c44 5 1688 6034
+8c49 7 1682 6034
+8c50 5 1684 6034
+8c55 2 1584 6034
+8c57 6 1689 6034
+FUNC 8c5d 91 10 __BuildCatchObject
+8c5d c 1712 6034
+8c69 b 1716 6034
+8c74 3 1718 6034
+8c77 2 1720 6034
+8c79 a 1739 6034
+8c83 4 1743 6034
+8c87 1a 1744 6034
+8ca1 1a 1756 6034
+8cbb 2 1757 6034
+8cbd 18 1750 6034
+8cd5 7 1762 6034
+8cdc 6 1769 6034
+8ce2 7 1763 6034
+8ce9 5 1765 6034
+FUNC 8cee 143 10 __CxxExceptionFilter
+8cee 3 1973 6034
+8cf1 a 1985 6034
+8cfb 3 2065 6034
+8cfe 2a 1993 6034
+8d28 32 2008 6034
+8d5a 6 2010 6034
+8d60 c 2011 6034
+8d6c 6 2012 6034
+8d72 b 2013 6034
+8d7d f 2040 6034
+8d8c a 2041 6034
+8d96 2 2047 6034
+8d98 1b 2050 6034
+8db3 4 2042 6034
+8db7 2 2050 6034
+8db9 c 2052 6034
+8dc5 6 2053 6034
+8dcb 13 2054 6034
+8dde 2 2055 6034
+8de0 25 1995 6034
+8e05 6 1997 6034
+8e0b e 1999 6034
+8e19 4 2000 6034
+8e1d c 2004 6034
+8e29 6 2005 6034
+8e2f 2 2065 6034
+FUNC 8e31 6c 20 CatchIt
+8e31 3 1217 6034
+8e34 6 1233 6034
+8e3a 10 1234 6034
+8e4a 4 1253 6034
+8e4e 6 1254 6034
+8e54 2 1255 6034
+8e56 8 1256 6034
+8e5e e 1259 6034
+8e6c 3 1265 6034
+8e6f 21 1273 6034
+8e90 4 1278 6034
+8e94 7 1280 6034
+8e9b 2 1286 6034
+FUNC 8e9d f2 20 FindHandlerForForeignException
+8e9d 6 913 6034
+8ea3 10 920 6034
+8eb3 2a 926 6034
+8edd 23 934 6034
+8f00 e 940 6034
+8f0e 17 945 6034
+8f25 c 948 6034
+8f31 29 954 6034
+8f5a 33 974 6034
+8f8d 2 984 6034
+FUNC 8f8f 356 20 FindHandler
+8f8f 6 569 6034
+8f95 20 632 6034
+8fb5 11 634 6034
+8fc6 42 637 6034
+9008 12 639 6034
+901a e 645 6034
+9028 b 646 6034
+9033 16 652 6034
+9049 2a 653 6034
+9073 12 659 6034
+9085 b 661 6034
+9090 5 662 6034
+9095 15 666 6034
+90aa 23 676 6034
+90cd 5 692 6034
+90d2 c 686 6034
+90de 30 688 6034
+910e 2b 698 6034
+9139 d 707 6034
+9146 19 715 6034
+915f c 718 6034
+916b 10 729 6034
+917b 6 735 6034
+9181 3 736 6034
+9184 7 737 6034
+918b 9 740 6034
+9194 2 741 6034
+9196 7 742 6034
+919d 23 750 6034
+91c0 d 737 6034
+91cd 2 676 6034
+91cf 33 774 6034
+9202 3 718 6034
+9205 6 795 6034
+920b a 804 6034
+9215 27 812 6034
+923c f 814 6034
+924b 5 840 6034
+9250 5 841 6034
+9255 b 843 6034
+9260 5 844 6034
+9265 d 846 6034
+9272 6 847 6034
+9278 2 848 6034
+927a 8 849 6034
+9282 14 851 6034
+9296 b 853 6034
+92a1 6 863 6034
+92a7 a 864 6034
+92b1 1c 866 6034
+92cd 16 877 6034
+92e3 2 880 6034
+FUNC 92e5 18 4 std::bad_exception::bad_exception(std::bad_exception const &)
+FUNC 92fd e4 20 __InternalCxxFrameHandler
+92fd 6 412 6034
+9303 3d 426 6034
+9340 6 432 6034
+9346 6 435 6034
+934c 10 440 6034
+935c 11 479 6034
+936d 2 482 6034
+936f 18 489 6034
+9387 19 499 6034
+93a0 1d 513 6034
+93bd 1c 524 6034
+93d9 6 533 6034
+93df 2 535 6034
+FUNC 93e1 6c 0 _use_encode_pointer
+93e1 7 66 2227
+93e8 2 72 2227
+93ea 12 75 2227
+93fc 7 76 2227
+9403 5 78 2227
+9408 7 82 2227
+940f 5 85 2227
+9414 e 91 2227
+9422 1f 93 2227
+9441 4 95 2227
+9445 6 100 2227
+944b 2 101 2227
+FUNC 944d 6e 4 _encode_pointer
+944d 1 120 2227
+944e 2b 129 2227
+9479 8 145 2227
+9481 d 133 2227
+948e d 135 2227
+949b c 138 2227
+94a7 4 148 2227
+94ab a 150 2227
+94b5 5 153 2227
+94ba 1 154 2227
+FUNC 94bb 9 0 _encoded_null
+94bb 0 173 2227
+94bb 8 174 2227
+94c3 1 175 2227
+FUNC 94c4 6e 4 _decode_pointer
+94c4 1 194 2227
+94c5 2b 203 2227
+94f0 8 219 2227
+94f8 d 207 2227
+9505 d 209 2227
+9512 c 212 2227
+951e 4 222 2227
+9522 a 224 2227
+952c 5 227 2227
+9531 1 228 2227
+FUNC 9532 9 4 __crtTlsAlloc
+9532 0 240 2227
+9532 6 241 2227
+9538 3 242 2227
+FUNC 953b 15 4 __fls_getvalue
+953b 0 258 2227
+953b 12 259 2227
+954d 3 260 2227
+FUNC 9550 6 0 __get_flsindex
+9550 0 272 2227
+9550 5 273 2227
+9555 1 274 2227
+FUNC 9556 32 0 __set_flsgetvalue
+9556 1 286 2227
+9557 e 288 2227
+9565 4 289 2227
+9569 e 291 2227
+9577 d 292 2227
+9584 3 294 2227
+9587 1 298 2227
+FUNC 9588 19 8 __fls_setvalue
+9588 0 315 2227
+9588 16 316 2227
+959e 3 317 2227
+FUNC 95a1 3d 0 _mtterm
+95a1 0 473 2227
+95a1 a 480 2227
+95ab f 481 2227
+95ba 7 482 2227
+95c1 a 485 2227
+95cb 7 486 2227
+95d2 7 487 2227
+95d9 5 494 2227
+FUNC 95de bf 8 _initptd
+95de c 521 2227
+95ea e 522 2227
+95f8 a 524 2227
+9602 6 525 2227
+9608 4 527 2227
+960c 9 529 2227
+9615 16 532 2227
+962b 10 533 2227
+963b 3 540 2227
+963e 7 544 2227
+9645 7 545 2227
+964c 8 546 2227
+9654 7 547 2227
+965b 8 551 2227
+9663 4 552 2227
+9667 6 553 2227
+966d 4 561 2227
+9671 8 562 2227
+9679 9 563 2227
+9682 c 565 2227
+968e 6 568 2227
+9694 9 566 2227
+FUNC 969d 77 0 _getptd_noexit
+969d 2 588 2227
+969f 6 592 2227
+96a5 15 600 2227
+96ba 14 608 2227
+96ce 19 610 2227
+96e7 a 616 2227
+96f1 6 618 2227
+96f7 6 619 2227
+96fd 2 621 2227
+96ff 7 627 2227
+9706 2 628 2227
+9708 8 633 2227
+9710 3 635 2227
+9713 1 636 2227
+FUNC 9714 18 0 _getptd
+9714 1 657 2227
+9715 7 658 2227
+971c 4 659 2227
+9720 8 660 2227
+9728 3 662 2227
+972b 1 663 2227
+FUNC 972c 121 4 _freefls
+972c c 691 2227
+9738 b 702 2227
+9743 7 703 2227
+974a 7 704 2227
+9751 7 706 2227
+9758 7 707 2227
+975f 7 709 2227
+9766 7 710 2227
+976d 7 712 2227
+9774 7 713 2227
+977b 7 715 2227
+9782 7 716 2227
+9789 7 718 2227
+9790 7 719 2227
+9797 a 721 2227
+97a1 7 722 2227
+97a8 8 724 2227
+97b0 4 725 2227
+97b4 1a 728 2227
+97ce 7 729 2227
+97d5 c 731 2227
+97e1 8 735 2227
+97e9 7 737 2227
+97f0 7 738 2227
+97f7 7 740 2227
+97fe 15 743 2227
+9813 7 744 2227
+981a c 747 2227
+9826 7 751 2227
+982d 8 754 2227
+9835 3 731 2227
+9838 9 732 2227
+9841 3 747 2227
+9844 9 748 2227
+FUNC 984d 69 4 _freeptd
+984d 0 778 2227
+984d a 783 2227
+9857 1b 795 2227
+9872 13 796 2227
+9885 16 802 2227
+989b 7 804 2227
+98a2 a 807 2227
+98ac 9 811 2227
+98b5 1 813 2227
+FUNC 98b6 6 0 __threadid
+98b6 0 837 2227
+98b6 6 838 2227
+FUNC 98bc 6 0 __threadhandle
+98bc 0 844 2227
+98bc 6 845 2227
+FUNC 98c2 184 0 _mtinit
+98c2 1 346 2227
+98c3 d 355 2227
+98d0 4 356 2227
+98d4 5 357 2227
+98d9 3 358 2227
+98dc 2 444 2227
+98de e 362 2227
+98ec d 365 2227
+98f9 d 368 2227
+9906 d 371 2227
+9913 2a 372 2227
+993d a 375 2227
+9947 1a 379 2227
+9961 25 388 2227
+9986 5 393 2227
+998b b 400 2227
+9996 10 401 2227
+99a6 10 402 2227
+99b6 18 403 2227
+99ce 7 410 2227
+99d5 2 412 2227
+99d7 1b 418 2227
+99f2 2 420 2227
+99f4 2d 428 2227
+9a21 a 438 2227
+9a2b 6 440 2227
+9a31 6 441 2227
+9a37 5 443 2227
+9a3c 5 430 2227
+9a41 4 389 2227
+9a45 1 444 2227
+FUNC 9a46 39 0 terminate()
+9a46 c 94 5983
+9a52 8 107 5983
+9a5a 4 111 5983
+9a5e 4 116 5983
+9a62 2 120 5983
+9a64 2 121 5983
+9a66 7 122 5983
+9a6d 7 127 5983
+9a74 5 135 5983
+9a79 6 136 5983
+FUNC 9a7f 13 0 unexpected()
+9a7f 0 149 5983
+9a7f 8 159 5983
+9a87 4 163 5983
+9a8b 2 167 5983
+9a8d 5 173 5983
+FUNC 9a92 37 0 _inconsistency()
+9a92 c 187 5983
+9a9e c 196 5983
+9aaa 4 197 5983
+9aae 4 202 5983
+9ab2 2 203 5983
+9ab4 2 204 5983
+9ab6 7 205 5983
+9abd 7 211 5983
+9ac4 5 217 5983
+FUNC 9ac9 11 4 _initp_eh_hooks
+9ac9 0 74 5983
+9ac9 10 80 5983
+9ad9 1 81 5983
+FUNC 9ae0 4c c _CallSettingFrame
+9ae0 3 48 5665
+9ae3 3 57 5665
+9ae6 1 58 5665
+9ae7 1 59 5665
+9ae8 3 60 5665
+9aeb 3 61 5665
+9aee 3 62 5665
+9af1 3 63 5665
+9af4 1 64 5665
+9af5 3 65 5665
+9af8 3 66 5665
+9afb 3 67 5665
+9afe 5 68 5665
+9b03 1 69 5665
+9b04 1 70 5665
+9b05 2 71 5665
+9b07 1 73 5665
+9b08 1 74 5665
+9b09 2 75 5665
+9b0b 1 76 5665
+9b0c 3 77 5665
+9b0f 1 78 5665
+9b10 2 79 5665
+9b12 6 80 5665
+9b18 2 81 5665
+9b1a 5 82 5665
+9b1f 1 84 5665
+9b20 5 85 5665
+9b25 1 86 5665
+9b26 1 87 5665
+9b27 1 88 5665
+9b28 4 89 5665
+PUBLIC 9b07 0 _NLG_Return
+FUNC 9b2c b9 4 _onexit_nolock
+9b2c 5 104 3259
+9b31 b 107 3259
+9b3c 13 108 3259
+9b4f 16 112 3259
+9b65 d 122 3259
+9b72 d 127 3259
+9b7f 14 129 3259
+9b93 3 134 3259
+9b96 14 136 3259
+9baa 3 147 3259
+9bad f 149 3259
+9bbc e 156 3259
+9bca c 157 3259
+9bd6 7 159 3259
+9bdd 6 114 3259
+9be3 2 160 3259
+FUNC 9be5 2f 0 __onexitinit
+9be5 1 205 3259
+9be6 b 208 3259
+9bf1 9 209 3259
+9bfa e 211 3259
+9c08 4 216 3259
+9c0c 1 221 3259
+9c0d 3 218 3259
+9c10 3 220 3259
+9c13 1 221 3259
+FUNC 9c14 3c 4 _onexit
+9c14 c 85 3259
+9c20 5 88 3259
+9c25 4 90 3259
+9c29 c 91 3259
+9c35 c 93 3259
+9c41 3 97 3259
+9c44 6 98 3259
+9c4a 6 94 3259
+FUNC 9c50 12 4 atexit
+9c50 0 165 3259
+9c50 11 166 3259
+9c61 1 167 3259
+FUNC 9c62 4f 4 V6_HeapAlloc
+9c62 c 27 5425
+9c6e 4 28 5425
+9c72 b 29 5425
+9c7d 8 31 5425
+9c85 4 32 5425
+9c89 a 33 5425
+9c93 c 35 5425
+9c9f 3 39 5425
+9ca2 6 40 5425
+9ca8 9 36 5425
+FUNC 9cb1 75 4 _heap_alloc
+9cb1 0 90 5425
+9cb1 9 95 5425
+9cba 5 96 5425
+9cbf 7 97 5425
+9cc6 c 98 5425
+9cd2 a 104 5425
+9cdc 18 105 5425
+9cf4 1 129 5425
+9cf5 a 107 5425
+9cff 9 108 5425
+9d08 2 109 5425
+9d0a 4 121 5425
+9d0e 1 122 5425
+9d0f 6 124 5425
+9d15 10 126 5425
+9d25 1 129 5425
+FUNC 9d26 c3 4 malloc
+9d26 1 155 5425
+9d27 16 159 5425
+9d3d 65 163 5425
+9da2 4 168 5425
+9da6 b 172 5425
+9db1 b 179 5425
+9dbc 2 183 5425
+9dbe 7 174 5425
+9dc5 8 193 5425
+9dcd 5 195 5425
+9dd2 1 196 5425
+9dd3 7 185 5425
+9dda b 186 5425
+9de5 3 187 5425
+9de8 1 196 5425
+FUNC 9de9 a 4 _initp_heap_handler
+9de9 0 31 5230
+9de9 9 32 5230
+9df2 1 33 5230
+FUNC 9df3 31 4 _set_new_handler(int (*)(unsigned int))
+9df3 1 53 5230
+9df4 7 57 5230
+9dfb b 59 5230
+9e06 b 60 5230
+9e11 f 63 5230
+9e20 3 65 5230
+9e23 1 66 5230
+FUNC 9e24 9 4 _set_new_handler(int)
+9e24 0 86 5230
+9e24 8 89 5230
+9e2c 1 90 5230
+FUNC 9e2d d 0 _query_new_handler()
+9e2d 0 110 5230
+9e2d c 111 5230
+9e39 1 112 5230
+FUNC 9e3a 22 4 _callnewh
+9e3a 0 131 5230
+9e3a b 133 5230
+9e45 10 135 5230
+9e55 3 138 5230
+9e58 1 139 5230
+9e59 2 136 5230
+9e5b 1 139 5230
+FUNC 9e5c 22 18 _invoke_watson_if_error
+9e5c 3 754 5850
+9e5f 6 755 5850
+9e65 17 759 5850
+9e7c 2 760 5850
+FUNC 9e7e 70 4 type_info::_Type_info_dtor(type_info *)
+9e7e c 62 5815
+9e8a 8 63 5815
+9e92 4 64 5815
+9e96 a 65 5815
+9ea0 d 70 5815
+9ead 4 72 5815
+9eb1 4 74 5815
+9eb5 6 79 5815
+9ebb 7 80 5815
+9ec2 9 94 5815
+9ecb 4 101 5815
+9ecf c 103 5815
+9edb 6 107 5815
+9ee1 2 83 5815
+9ee3 2 72 5815
+9ee5 9 104 5815
+FUNC 9eee f5 8 type_info::_Name_base(type_info const *,__type_info_node *)
+9eee c 109 5815
+9efa e 113 5815
+9f08 24 124 5815
+9f2c 7 125 5815
+9f33 16 132 5815
+9f49 2 133 5815
+9f4b 5 132 5815
+9f50 b 136 5815
+9f5b 5 142 5815
+9f60 a 149 5815
+9f6a 4 150 5815
+9f6e 11 157 5815
+9f7f 20 158 5815
+9f9f 5 159 5815
+9fa4 9 165 5815
+9fad 3 166 5815
+9fb0 2 167 5815
+9fb2 7 173 5815
+9fb9 9 180 5815
+9fc2 c 181 5815
+9fce 3 188 5815
+9fd1 6 189 5815
+9fd7 3 181 5815
+9fda 9 182 5815
+FUNC 9fe3 70 4 type_info::_Type_info_dtor_internal(type_info *)
+9fe3 c 197 5815
+9fef 8 198 5815
+9ff7 4 199 5815
+9ffb a 200 5815
+a005 d 205 5815
+a012 4 207 5815
+a016 4 209 5815
+a01a 6 214 5815
+a020 7 215 5815
+a027 9 229 5815
+a030 4 236 5815
+a034 c 238 5815
+a040 6 242 5815
+a046 2 218 5815
+a048 2 207 5815
+a04a 9 239 5815
+FUNC a053 31 10 __unDNameHelper
+a053 3 249 5815
+a056 7 250 5815
+a05d 7 252 5815
+a064 1e 260 5815
+a082 2 261 5815
+FUNC a084 eb 8 type_info::_Name_base_internal(type_info const *,__type_info_node *)
+a084 c 265 5815
+a090 e 269 5815
+a09e 1a 273 5815
+a0b8 7 274 5815
+a0bf 16 281 5815
+a0d5 2 282 5815
+a0d7 5 281 5815
+a0dc b 285 5815
+a0e7 5 291 5815
+a0ec a 298 5815
+a0f6 4 299 5815
+a0fa 11 306 5815
+a10b 20 307 5815
+a12b 5 308 5815
+a130 9 314 5815
+a139 3 315 5815
+a13c 2 316 5815
+a13e 7 322 5815
+a145 9 329 5815
+a14e c 330 5815
+a15a 3 337 5815
+a15d 6 338 5815
+a163 3 330 5815
+a166 9 331 5815
+FUNC a16f 53 4 __clean_type_info_names_internal
+a16f c 346 5815
+a17b 8 347 5815
+a183 4 348 5815
+a187 6 352 5815
+a18d 4 354 5815
+a191 3 356 5815
+a194 7 357 5815
+a19b 8 358 5815
+a1a3 4 354 5815
+a1a7 c 359 5815
+a1b3 6 363 5815
+a1b9 9 361 5815
+FUNC a1d0 88 8 strcmp
+a1d0 0 65 926
+a1d0 4 73 926
+a1d4 4 74 926
+a1d8 6 76 926
+a1de 2 77 926
+a1e0 2 81 926
+a1e2 2 83 926
+a1e4 2 84 926
+a1e6 2 85 926
+a1e8 2 86 926
+a1ea 3 87 926
+a1ed 2 88 926
+a1ef 2 89 926
+a1f1 2 90 926
+a1f3 3 92 926
+a1f6 3 94 926
+a1f9 2 95 926
+a1fb 2 96 926
+a1fd 2 97 926
+a1ff 3 98 926
+a202 2 99 926
+a204 3 100 926
+a207 3 101 926
+a20a 2 102 926
+a20c 4 103 926
+a210 2 107 926
+a212 2 108 926
+a214 2 115 926
+a216 2 116 926
+a218 3 117 926
+a21b 1 118 926
+a21c 6 122 926
+a222 2 123 926
+a224 2 125 926
+a226 3 126 926
+a229 2 127 926
+a22b 2 128 926
+a22d 3 129 926
+a230 2 130 926
+a232 2 131 926
+a234 6 133 926
+a23a 2 134 926
+a23c 3 139 926
+a23f 3 140 926
+a242 2 141 926
+a244 2 142 926
+a246 2 143 926
+a248 2 144 926
+a24a 3 145 926
+a24d 2 146 926
+a24f 2 147 926
+a251 2 148 926
+a253 3 149 926
+a256 2 150 926
+FUNC a258 65 c strcpy_s
+a258 0 13 781
+a258 30 18 781
+a288 c 19 781
+a294 2 21 781
+a296 d 23 781
+a2a3 4 27 781
+a2a7 2 29 781
+a2a9 e 30 781
+a2b7 5 33 781
+a2bc 1 34 781
+FUNC a2c0 7a c memset
+a2c0 0 59 934
+a2c0 4 68 934
+a2c4 4 69 934
+a2c8 2 71 934
+a2ca 2 72 934
+a2cc 2 74 934
+a2ce 4 75 934
+a2d2 2 78 934
+a2d4 2 79 934
+a2d6 6 80 934
+a2dc 2 81 934
+a2de 7 82 934
+a2e5 2 83 934
+a2e7 5 85 934
+a2ec 1 91 934
+a2ed 2 92 934
+a2ef 3 94 934
+a2f2 2 95 934
+a2f4 2 97 934
+a2f6 3 98 934
+a2f9 2 99 934
+a2fb 2 101 934
+a2fd 2 103 934
+a2ff 3 104 934
+a302 3 105 934
+a305 2 106 934
+a307 2 110 934
+a309 3 111 934
+a30c 2 113 934
+a30e 2 115 934
+a310 3 117 934
+a313 2 119 934
+a315 2 122 934
+a317 3 123 934
+a31a 3 124 934
+a31d 2 125 934
+a31f 2 127 934
+a321 2 129 934
+a323 2 130 934
+a325 2 134 934
+a327 3 135 934
+a32a 3 137 934
+a32d 2 138 934
+a32f 4 142 934
+a333 1 143 934
+a334 1 145 934
+a335 4 148 934
+a339 1 150 934
+FUNC a340 365 c memcpy
+a340 3 101 1027
+a343 1 113 1027
+a344 1 114 1027
+a345 3 116 1027
+a348 3 117 1027
+a34b 3 119 1027
+a34e 2 129 1027
+a350 2 131 1027
+a352 2 132 1027
+a354 2 134 1027
+a356 2 135 1027
+a358 2 137 1027
+a35a 6 138 1027
+a360 6 147 1027
+a366 2 148 1027
+a368 7 150 1027
+a36f 2 151 1027
+a371 1 153 1027
+a372 1 154 1027
+a373 3 155 1027
+a376 3 156 1027
+a379 2 157 1027
+a37b 1 158 1027
+a37c 1 159 1027
+a37d 2 160 1027
+a37f 1 163 1027
+a380 1 164 1027
+a381 1 165 1027
+a382 5 166 1027
+a387 6 179 1027
+a38d 2 180 1027
+a38f 3 182 1027
+a392 3 183 1027
+a395 3 185 1027
+a398 2 186 1027
+a39a 2 188 1027
+a39c 8 190 1027
+a3a4 2 208 1027
+a3a6 5 209 1027
+a3ab 3 211 1027
+a3ae 2 212 1027
+a3b0 3 214 1027
+a3b3 2 215 1027
+a3b5 7 217 1027
+a3bc 8 221 1027
+a3c4 14 225 1027
+a3d8 2 232 1027
+a3da 2 233 1027
+a3dc 2 235 1027
+a3de 3 236 1027
+a3e1 3 238 1027
+a3e4 3 239 1027
+a3e7 3 241 1027
+a3ea 3 242 1027
+a3ed 3 244 1027
+a3f0 3 245 1027
+a3f3 3 247 1027
+a3f6 2 248 1027
+a3f8 2 250 1027
+a3fa a 252 1027
+a404 2 256 1027
+a406 2 257 1027
+a408 2 259 1027
+a40a 3 260 1027
+a40d 3 262 1027
+a410 3 263 1027
+a413 3 265 1027
+a416 3 266 1027
+a419 3 268 1027
+a41c 2 269 1027
+a41e 2 271 1027
+a420 8 273 1027
+a428 2 277 1027
+a42a 2 278 1027
+a42c 2 280 1027
+a42e 3 281 1027
+a431 3 283 1027
+a434 3 284 1027
+a437 3 286 1027
+a43a 2 287 1027
+a43c 2 289 1027
+a43e 2a 291 1027
+a468 4 298 1027
+a46c 4 300 1027
+a470 4 302 1027
+a474 4 304 1027
+a478 4 306 1027
+a47c 4 308 1027
+a480 4 310 1027
+a484 4 312 1027
+a488 4 314 1027
+a48c 4 316 1027
+a490 4 318 1027
+a494 4 320 1027
+a498 4 322 1027
+a49c 4 324 1027
+a4a0 7 326 1027
+a4a7 2 328 1027
+a4a9 2 329 1027
+a4ab 19 331 1027
+a4c4 3 340 1027
+a4c7 1 341 1027
+a4c8 1 342 1027
+a4c9 3 344 1027
+a4cc 2 348 1027
+a4ce 2 350 1027
+a4d0 3 351 1027
+a4d3 1 352 1027
+a4d4 1 353 1027
+a4d5 3 354 1027
+a4d8 2 358 1027
+a4da 2 360 1027
+a4dc 3 361 1027
+a4df 3 362 1027
+a4e2 3 363 1027
+a4e5 1 364 1027
+a4e6 1 365 1027
+a4e7 5 366 1027
+a4ec 2 370 1027
+a4ee 2 372 1027
+a4f0 3 373 1027
+a4f3 3 374 1027
+a4f6 3 375 1027
+a4f9 3 376 1027
+a4fc 3 377 1027
+a4ff 1 378 1027
+a500 1 379 1027
+a501 3 380 1027
+a504 4 391 1027
+a508 4 392 1027
+a50c 6 397 1027
+a512 2 398 1027
+a514 3 400 1027
+a517 3 401 1027
+a51a 3 403 1027
+a51d 2 404 1027
+a51f 1 406 1027
+a520 2 407 1027
+a522 1 408 1027
+a523 9 410 1027
+a52c 2 414 1027
+a52e a 417 1027
+a538 2 422 1027
+a53a 5 423 1027
+a53f 3 425 1027
+a542 2 426 1027
+a544 3 428 1027
+a547 2 429 1027
+a549 7 431 1027
+a550 14 435 1027
+a564 3 442 1027
+a567 2 443 1027
+a569 3 445 1027
+a56c 3 446 1027
+a56f 3 448 1027
+a572 3 449 1027
+a575 3 451 1027
+a578 2 452 1027
+a57a 1 454 1027
+a57b 2 455 1027
+a57d 1 456 1027
+a57e a 458 1027
+a588 3 462 1027
+a58b 2 463 1027
+a58d 3 465 1027
+a590 3 466 1027
+a593 3 468 1027
+a596 3 469 1027
+a599 3 471 1027
+a59c 3 472 1027
+a59f 3 474 1027
+a5a2 2 475 1027
+a5a4 1 477 1027
+a5a5 2 478 1027
+a5a7 1 479 1027
+a5a8 8 481 1027
+a5b0 3 485 1027
+a5b3 2 486 1027
+a5b5 3 488 1027
+a5b8 3 489 1027
+a5bb 3 491 1027
+a5be 3 492 1027
+a5c1 3 494 1027
+a5c4 3 495 1027
+a5c7 3 497 1027
+a5ca 3 498 1027
+a5cd 3 500 1027
+a5d0 6 501 1027
+a5d6 1 503 1027
+a5d7 2 504 1027
+a5d9 1 505 1027
+a5da 2a 507 1027
+a604 4 516 1027
+a608 4 518 1027
+a60c 4 520 1027
+a610 4 522 1027
+a614 4 524 1027
+a618 4 526 1027
+a61c 4 528 1027
+a620 4 530 1027
+a624 4 532 1027
+a628 4 534 1027
+a62c 4 536 1027
+a630 4 538 1027
+a634 4 540 1027
+a638 4 542 1027
+a63c 7 544 1027
+a643 2 546 1027
+a645 2 547 1027
+a647 19 549 1027
+a660 3 558 1027
+a663 1 560 1027
+a664 1 561 1027
+a665 3 562 1027
+a668 3 566 1027
+a66b 3 568 1027
+a66e 3 569 1027
+a671 1 570 1027
+a672 1 571 1027
+a673 5 572 1027
+a678 3 576 1027
+a67b 3 578 1027
+a67e 3 579 1027
+a681 3 580 1027
+a684 3 581 1027
+a687 1 582 1027
+a688 1 583 1027
+a689 3 584 1027
+a68c 3 588 1027
+a68f 3 590 1027
+a692 3 591 1027
+a695 3 592 1027
+a698 3 593 1027
+a69b 3 594 1027
+a69e 3 595 1027
+a6a1 1 596 1027
+a6a2 1 597 1027
+a6a3 2 598 1027
+FUNC a6b0 365 c memmove
+a6b0 3 101 977
+a6b3 1 113 977
+a6b4 1 114 977
+a6b5 3 116 977
+a6b8 3 117 977
+a6bb 3 119 977
+a6be 2 129 977
+a6c0 2 131 977
+a6c2 2 132 977
+a6c4 2 134 977
+a6c6 2 135 977
+a6c8 2 137 977
+a6ca 6 138 977
+a6d0 6 147 977
+a6d6 2 148 977
+a6d8 7 150 977
+a6df 2 151 977
+a6e1 1 153 977
+a6e2 1 154 977
+a6e3 3 155 977
+a6e6 3 156 977
+a6e9 2 157 977
+a6eb 1 158 977
+a6ec 1 159 977
+a6ed 2 160 977
+a6ef 1 163 977
+a6f0 1 164 977
+a6f1 1 165 977
+a6f2 5 166 977
+a6f7 6 179 977
+a6fd 2 180 977
+a6ff 3 182 977
+a702 3 183 977
+a705 3 185 977
+a708 2 186 977
+a70a 2 188 977
+a70c 8 190 977
+a714 2 208 977
+a716 5 209 977
+a71b 3 211 977
+a71e 2 212 977
+a720 3 214 977
+a723 2 215 977
+a725 7 217 977
+a72c 8 221 977
+a734 14 225 977
+a748 2 232 977
+a74a 2 233 977
+a74c 2 235 977
+a74e 3 236 977
+a751 3 238 977
+a754 3 239 977
+a757 3 241 977
+a75a 3 242 977
+a75d 3 244 977
+a760 3 245 977
+a763 3 247 977
+a766 2 248 977
+a768 2 250 977
+a76a a 252 977
+a774 2 256 977
+a776 2 257 977
+a778 2 259 977
+a77a 3 260 977
+a77d 3 262 977
+a780 3 263 977
+a783 3 265 977
+a786 3 266 977
+a789 3 268 977
+a78c 2 269 977
+a78e 2 271 977
+a790 8 273 977
+a798 2 277 977
+a79a 2 278 977
+a79c 2 280 977
+a79e 3 281 977
+a7a1 3 283 977
+a7a4 3 284 977
+a7a7 3 286 977
+a7aa 2 287 977
+a7ac 2 289 977
+a7ae 2a 291 977
+a7d8 4 298 977
+a7dc 4 300 977
+a7e0 4 302 977
+a7e4 4 304 977
+a7e8 4 306 977
+a7ec 4 308 977
+a7f0 4 310 977
+a7f4 4 312 977
+a7f8 4 314 977
+a7fc 4 316 977
+a800 4 318 977
+a804 4 320 977
+a808 4 322 977
+a80c 4 324 977
+a810 7 326 977
+a817 2 328 977
+a819 2 329 977
+a81b 19 331 977
+a834 3 340 977
+a837 1 341 977
+a838 1 342 977
+a839 3 344 977
+a83c 2 348 977
+a83e 2 350 977
+a840 3 351 977
+a843 1 352 977
+a844 1 353 977
+a845 3 354 977
+a848 2 358 977
+a84a 2 360 977
+a84c 3 361 977
+a84f 3 362 977
+a852 3 363 977
+a855 1 364 977
+a856 1 365 977
+a857 5 366 977
+a85c 2 370 977
+a85e 2 372 977
+a860 3 373 977
+a863 3 374 977
+a866 3 375 977
+a869 3 376 977
+a86c 3 377 977
+a86f 1 378 977
+a870 1 379 977
+a871 3 380 977
+a874 4 391 977
+a878 4 392 977
+a87c 6 397 977
+a882 2 398 977
+a884 3 400 977
+a887 3 401 977
+a88a 3 403 977
+a88d 2 404 977
+a88f 1 406 977
+a890 2 407 977
+a892 1 408 977
+a893 9 410 977
+a89c 2 414 977
+a89e a 417 977
+a8a8 2 422 977
+a8aa 5 423 977
+a8af 3 425 977
+a8b2 2 426 977
+a8b4 3 428 977
+a8b7 2 429 977
+a8b9 7 431 977
+a8c0 14 435 977
+a8d4 3 442 977
+a8d7 2 443 977
+a8d9 3 445 977
+a8dc 3 446 977
+a8df 3 448 977
+a8e2 3 449 977
+a8e5 3 451 977
+a8e8 2 452 977
+a8ea 1 454 977
+a8eb 2 455 977
+a8ed 1 456 977
+a8ee a 458 977
+a8f8 3 462 977
+a8fb 2 463 977
+a8fd 3 465 977
+a900 3 466 977
+a903 3 468 977
+a906 3 469 977
+a909 3 471 977
+a90c 3 472 977
+a90f 3 474 977
+a912 2 475 977
+a914 1 477 977
+a915 2 478 977
+a917 1 479 977
+a918 8 481 977
+a920 3 485 977
+a923 2 486 977
+a925 3 488 977
+a928 3 489 977
+a92b 3 491 977
+a92e 3 492 977
+a931 3 494 977
+a934 3 495 977
+a937 3 497 977
+a93a 3 498 977
+a93d 3 500 977
+a940 6 501 977
+a946 1 503 977
+a947 2 504 977
+a949 1 505 977
+a94a 2a 507 977
+a974 4 516 977
+a978 4 518 977
+a97c 4 520 977
+a980 4 522 977
+a984 4 524 977
+a988 4 526 977
+a98c 4 528 977
+a990 4 530 977
+a994 4 532 977
+a998 4 534 977
+a99c 4 536 977
+a9a0 4 538 977
+a9a4 4 540 977
+a9a8 4 542 977
+a9ac 7 544 977
+a9b3 2 546 977
+a9b5 2 547 977
+a9b7 19 549 977
+a9d0 3 558 977
+a9d3 1 560 977
+a9d4 1 561 977
+a9d5 3 562 977
+a9d8 3 566 977
+a9db 3 568 977
+a9de 3 569 977
+a9e1 1 570 977
+a9e2 1 571 977
+a9e3 5 572 977
+a9e8 3 576 977
+a9eb 3 578 977
+a9ee 3 579 977
+a9f1 3 580 977
+a9f4 3 581 977
+a9f7 1 582 977
+a9f8 1 583 977
+a9f9 3 584 977
+a9fc 3 588 977
+a9ff 3 590 977
+aa02 3 591 977
+aa05 3 592 977
+aa08 3 593 977
+aa0b 3 594 977
+aa0e 3 595 977
+aa11 1 596 977
+aa12 1 597 977
+aa13 2 598 977
+FUNC aa15 3d 4 __CxxUnhandledExceptionFilter(_EXCEPTION_POINTERS *)
+aa15 0 67 5721
+aa15 33 68 5721
+aa48 5 69 5721
+aa4d 2 72 5721
+aa4f 3 73 5721
+FUNC aa52 e 0 __CxxSetUnhandledExceptionFilter
+aa52 0 86 5721
+aa52 b 89 5721
+aa5d 2 90 5721
+aa5f 1 91 5721
+FUNC aa60 1a0 4 _NMSG_WRITE
+aa60 2 174 2418
+aa62 a 178 2418
+aa6c f 179 2418
+aa7b a 182 2418
+aa85 2a 203 2418
+aaaf c 215 2418
+aabb 2a 224 2418
+aae5 1e 227 2418
+ab03 26 228 2418
+ab29 d 231 2418
+ab36 b 233 2418
+ab41 2f 234 2418
+ab70 20 237 2418
+ab90 22 238 2418
+abb2 15 242 2418
+abc7 a 205 2418
+abd1 9 206 2418
+abda 24 212 2418
+abfe 2 245 2418
+FUNC ac00 20 4 _GET_RTERRMSG
+ac00 0 268 2418
+ac00 2 271 2418
+ac02 13 272 2418
+ac15 2 275 2418
+ac17 1 276 2418
+ac18 7 273 2418
+ac1f 1 276 2418
+FUNC ac20 39 0 _FF_MSGBANNER
+ac20 0 141 2418
+ac20 22 145 2418
+ac42 a 147 2418
+ac4c c 148 2418
+ac58 1 150 2418
+FUNC ac59 1 4 _initp_misc_winxfltr
+ac59 0 105 2752
+ac59 1 106 2752
+FUNC ac5a 32 4 xcptlookup
+ac5a 0 410 2752
+ac5a b 411 2752
+ac65 14 418 2752
+ac79 e 425 2752
+ac87 2 428 2752
+ac89 2 426 2752
+ac8b 1 429 2752
+FUNC ac8c 15e 8 _XcptFilter
+ac8c 6 206 2752
+ac92 7 213 2752
+ac99 8 214 2752
+aca1 34 219 2752
+acd5 2 221 2752
+acd7 2 225 2752
+acd9 3 227 2752
+acdc 7 234 2752
+ace3 7 235 2752
+acea 5 243 2752
+acef 4 248 2752
+acf3 8 249 2752
+acfb 3 255 2752
+acfe 6 259 2752
+ad04 6 273 2752
+ad0a 6 274 2752
+ad10 c 283 2752
+ad1c 17 291 2752
+ad33 1e 294 2752
+ad51 3 291 2752
+ad54 c 321 2752
+ad60 9 323 2752
+ad69 7 325 2752
+ad70 9 327 2752
+ad79 7 329 2752
+ad80 9 331 2752
+ad89 7 333 2752
+ad90 9 335 2752
+ad99 7 337 2752
+ada0 9 339 2752
+ada9 7 341 2752
+adb0 9 343 2752
+adb9 7 345 2752
+adc0 7 347 2752
+adc7 8 356 2752
+adcf 3 361 2752
+add2 2 363 2752
+add4 4 368 2752
+add8 3 369 2752
+addb 7 375 2752
+ade2 6 377 2752
+ade8 2 379 2752
+FUNC adea 1b 8 __CppXcptFilter
+adea 0 145 2752
+adea b 146 2752
+adf5 c 147 2752
+ae01 1 151 2752
+ae02 2 149 2752
+ae04 1 151 2752
+FUNC ae05 db 0 _setenvp
+ae05 1 77 2280
+ae06 c 85 2280
+ae12 5 86 2280
+ae17 8 91 2280
+ae1f 4 98 2280
+ae23 8 99 2280
+ae2b 4 110 2280
+ae2f 1 111 2280
+ae30 11 112 2280
+ae41 15 117 2280
+ae56 2 118 2280
+ae58 9 121 2280
+ae61 9 123 2280
+ae6a 6 125 2280
+ae70 10 127 2280
+ae80 1c 133 2280
+ae9c 3 134 2280
+ae9f 6 121 2280
+aea5 b 138 2280
+aeb0 6 139 2280
+aeb6 2 142 2280
+aeb8 a 149 2280
+aec2 7 152 2280
+aec9 17 153 2280
+FUNC aee0 a 4 _set_pgmptr
+aee0 a 334 2303
+FUNC aeea 198 c parse_cmdline
+aeea 4 218 2322
+aeee 6 226 2322
+aef4 8 230 2322
+aefc 14 231 2322
+af10 3 250 2322
+af13 5 252 2322
+af18 5 254 2322
+af1d 9 255 2322
+af26 2 256 2322
+af28 2 258 2322
+af2a 4 259 2322
+af2e 8 260 2322
+af36 2 262 2322
+af38 f 264 2322
+af47 2 265 2322
+af49 6 266 2322
+af4f a 267 2322
+af59 1 268 2322
+af5a 1a 272 2322
+af74 4 277 2322
+af78 4 278 2322
+af7c 4 281 2322
+af80 9 286 2322
+af89 a 287 2322
+af93 3 288 2322
+af96 1 275 2322
+af97 2 276 2322
+af99 9 291 2322
+afa2 6 295 2322
+afa8 9 296 2322
+afb1 2 297 2322
+afb3 3 311 2322
+afb6 4 315 2322
+afba 1 318 2322
+afbb 1 319 2322
+afbc 5 316 2322
+afc1 5 321 2322
+afc6 5 324 2322
+afcb e 325 2322
+afd9 2 326 2322
+afdb 2 327 2322
+afdd d 329 2322
+afea 2 332 2322
+afec 5 336 2322
+aff1 4 337 2322
+aff5 4 338 2322
+aff9 6 339 2322
+afff 3 338 2322
+b002 14 343 2322
+b016 4 348 2322
+b01a 2 349 2322
+b01c 10 350 2322
+b02c b 351 2322
+b037 2 352 2322
+b039 a 354 2322
+b043 2 355 2322
+b045 a 356 2322
+b04f 1 357 2322
+b050 2 358 2322
+b052 5 361 2322
+b057 1 363 2322
+b058 5 372 2322
+b05d 4 376 2322
+b061 7 377 2322
+b068 2 378 2322
+b06a 8 379 2322
+b072 9 382 2322
+b07b 3 383 2322
+b07e 2 384 2322
+b080 2 385 2322
+FUNC b082 b9 0 _setargv
+b082 7 88 2322
+b089 c 97 2322
+b095 5 98 2322
+b09a 18 104 2322
+b0b2 19 120 2322
+b0cb 11 127 2322
+b0dc 15 132 2322
+b0f1 a 136 2322
+b0fb 2 138 2322
+b0fd 8 140 2322
+b105 3 141 2322
+b108 2 142 2322
+b10a 13 149 2322
+b11d c 153 2322
+b129 6 157 2322
+b12f 4 172 2322
+b133 6 134 2322
+b139 2 173 2322
+FUNC b13b 135 0 __crtGetEnvironmentStringsA
+b13b 2 43 4307
+b13d 1a 57 4307
+b157 8 59 4307
+b15f c 60 4307
+b16b b 62 4307
+b176 e 63 4307
+b184 9 68 4307
+b18d 4 71 4307
+b191 8 72 4307
+b199 7 73 4307
+b1a0 7 77 4307
+b1a7 7 78 4307
+b1ae 7 79 4307
+b1b5 1b 93 4307
+b1d0 13 97 4307
+b1e3 11 111 4307
+b1f4 a 113 4307
+b1fe 8 114 4307
+b206 7 99 4307
+b20d 4 100 4307
+b211 6 123 4307
+b217 2 152 4307
+b219 a 126 4307
+b223 6 127 4307
+b229 4 133 4307
+b22d 5 134 4307
+b232 5 135 4307
+b237 5 138 4307
+b23c d 140 4307
+b249 7 141 4307
+b250 5 142 4307
+b255 b 145 4307
+b260 7 147 4307
+b267 6 149 4307
+b26d 3 153 4307
+FUNC b270 24 0 _RTC_Initialize
+FUNC b294 24 0 _RTC_Terminate
+FUNC b2b8 5b 0 __heap_select
+b2b8 6 70 5473
+b2be 23 143 5473
+b2e1 1b 144 5473
+b2fc d 145 5473
+b309 3 146 5473
+b30c 2 164 5473
+b30e 3 161 5473
+b311 2 164 5473
+FUNC b313 5a 4 _heap_init
+b313 0 192 5473
+b313 20 199 5473
+b333 2 200 5473
+b335 1 240 5473
+b336 5 204 5473
+b33b a 206 5473
+b345 f 209 5473
+b354 c 211 5473
+b360 7 212 5473
+b367 2 213 5473
+b369 3 239 5473
+b36c 1 240 5473
+FUNC b36d 74 0 _heap_term
+b36d 1 261 5473
+b36e c 264 5473
+b37a 1b 270 5473
+b395 f 273 5473
+b3a4 b 276 5473
+b3af d 278 5473
+b3bc 11 281 5473
+b3cd c 300 5473
+b3d9 7 301 5473
+b3e0 1 302 5473
+FUNC b3e1 6 0 _get_heap_handle
+b3e1 0 320 5473
+b3e1 5 322 5473
+b3e6 1 323 5473
+FUNC b3e7 94 0 __security_init_cookie
+b3e7 6 97 3689
+b3ed 21 114 3689
+b40e 7 116 3689
+b415 3 117 3689
+b418 a 127 3689
+b422 6 132 3689
+b428 8 135 3689
+b430 8 136 3689
+b438 8 137 3689
+b440 10 139 3689
+b450 2 144 3689
+b452 4 161 3689
+b456 7 163 3689
+b45d 4 166 3689
+b461 7 168 3689
+b468 6 172 3689
+b46e b 173 3689
+b479 2 175 3689
+FUNC b47b 8 4 _crt_debugger_hook
+b47b 0 62 3966
+b47b 7 65 3966
+b482 1 66 3966
+FUNC b483 160 8 _flsbuf
+b483 5 93 2041
+b488 c 104 2041
+b494 8 106 2041
+b49c b 107 2041
+b4a7 4 108 2041
+b4ab 8 109 2041
+b4b3 4 110 2041
+b4b7 b 111 2041
+b4c2 3 113 2041
+b4c5 6 124 2041
+b4cb b 126 2041
+b4d6 3 127 2041
+b4d9 8 128 2041
+b4e1 9 137 2041
+b4ea f 141 2041
+b4f9 25 151 2041
+b51e 7 153 2041
+b525 d 158 2041
+b532 5 162 2041
+b537 5 163 2041
+b53c 6 164 2041
+b542 7 166 2041
+b549 10 167 2041
+b559 2 168 2041
+b55b 6 131 2041
+b561 5 132 2041
+b566 2e 169 2041
+b594 12 171 2041
+b5a6 2 174 2041
+b5a8 8 179 2041
+b5b0 2 186 2041
+b5b2 3 187 2041
+b5b5 13 189 2041
+b5c8 5 201 2041
+b5cd 4 202 2041
+b5d1 5 203 2041
+b5d6 b 207 2041
+b5e1 2 212 2041
+FUNC b5e3 25 4 write_char
+b5e3 0 2433 1163
+b5e3 a 2434 1163
+b5ed 2 2437 1163
+b5ef 12 2440 1163
+b601 3 2444 1163
+b604 1 2447 1163
+b605 2 2446 1163
+b607 1 2447 1163
+FUNC b608 25 c write_multi_char
+b608 6 2498 1163
+b60e 2 2501 1163
+b610 e 2500 1163
+b61e 6 2501 1163
+b624 7 2499 1163
+b62b 2 2504 1163
+FUNC b62d 4f 4 write_string
+b62d 0 2563 1163
+b62d 12 2564 1163
+b63f 6 2566 1163
+b645 2 2567 1163
+b647 11 2570 1163
+b658 6 2571 1163
+b65e a 2573 1163
+b668 a 2574 1163
+b672 9 2569 1163
+b67b 1 2579 1163
+FUNC b67c 910 10 _woutput_l
+b67c 1b 975 1163
+b697 72 1031 1163
+b709 4 1036 1163
+b70d 2c 1073 1163
+b739 1a 1075 1163
+b753 8 1076 1163
+b75b 18 1131 1163
+b773 2 1171 1163
+b775 13 1173 1163
+b788 3 1174 1163
+b78b 5 1175 1163
+b790 1f 1179 1163
+b7af 4 1193 1163
+b7b3 5 1194 1163
+b7b8 4 1181 1163
+b7bc 5 1182 1163
+b7c1 4 1184 1163
+b7c5 5 1185 1163
+b7ca 7 1190 1163
+b7d1 5 1191 1163
+b7d6 3 1187 1163
+b7d9 5 1196 1163
+b7de 6 1200 1163
+b7e4 9 1206 1163
+b7ed b 1233 1163
+b7f8 4 1235 1163
+b7fc 3 1236 1163
+b7ff 5 1239 1163
+b804 10 1241 1163
+b814 5 1243 1163
+b819 4 1248 1163
+b81d 5 1249 1163
+b822 6 1253 1163
+b828 9 1259 1163
+b831 b 1284 1163
+b83c 4 1285 1163
+b840 5 1287 1163
+b845 10 1289 1163
+b855 5 1291 1163
+b85a 1b 1295 1163
+b875 7 1362 1163
+b87c 5 1363 1163
+b881 6 1301 1163
+b887 2 1303 1163
+b889 a 1304 1163
+b893 5 1306 1163
+b898 4 1308 1163
+b89c 5 1310 1163
+b8a1 4 1358 1163
+b8a5 5 1359 1163
+b8aa 10 1322 1163
+b8ba 3 1324 1163
+b8bd f 1325 1163
+b8cc d 1327 1163
+b8d9 3 1329 1163
+b8dc a 1330 1163
+b8e6 5 1332 1163
+b8eb 3c 1337 1163
+b927 4 1352 1163
+b92b 13 1166 1163
+b93e 5 1167 1163
+b943 32 1378 1163
+b975 d 1716 1163
+b982 4 1724 1163
+b986 18 1749 1163
+b99e c 1750 1163
+b9aa c 1381 1163
+b9b6 9 1383 1163
+b9bf 8 1564 1163
+b9c7 4 1565 1163
+b9cb d 1584 1163
+b9d8 3 1589 1163
+b9db 13 1610 1163
+b9ee 4 1611 1163
+b9f2 8 1612 1163
+b9fa 19 1614 1163
+ba13 13 1618 1163
+ba26 1 1620 1163
+ba27 9 1621 1163
+ba30 5 1622 1163
+ba35 1d 1378 1163
+ba52 9 1397 1163
+ba5b f 1415 1163
+ba6a 3 1420 1163
+ba6d 25 1430 1163
+ba92 3 1434 1163
+ba95 2 1436 1163
+ba97 4 1437 1163
+ba9b 6 1439 1163
+baa1 3 1440 1163
+baa4 5 1506 1163
+baa9 5 1523 1163
+baae e 1541 1163
+babc 6 1546 1163
+bac2 b 1548 1163
+bacd 7 1549 1163
+bad4 5 1550 1163
+bad9 4 1551 1163
+badd 5 1553 1163
+bae2 8 1543 1163
+baea 7 1544 1163
+baf1 5 1557 1163
+baf6 34 1378 1163
+bb2a d 1908 1163
+bb37 9 1910 1163
+bb40 8 1668 1163
+bb48 d 1688 1163
+bb55 6 1702 1163
+bb5b 7 1703 1163
+bb62 2 1704 1163
+bb64 5 1706 1163
+bb69 7 1708 1163
+bb70 5 1710 1163
+bb75 4 1864 1163
+bb79 7 1869 1163
+bb80 c 1933 1163
+bb8c 8 1939 1163
+bb94 5 1958 1163
+bb99 8 1751 1163
+bba1 9 1752 1163
+bbaa 5 1753 1163
+bbaf 3 1754 1163
+bbb2 9 1756 1163
+bbbb f 1759 1163
+bbca 2 1760 1163
+bbcc 13 1765 1163
+bbdf 7 1767 1163
+bbe6 e 1809 1163
+bbf4 27 1828 1163
+bc1b 14 1838 1163
+bc2f 15 1840 1163
+bc44 b 1844 1163
+bc4f 15 1846 1163
+bc64 5 1852 1163
+bc69 7 1853 1163
+bc70 4 1854 1163
+bc74 1 1857 1163
+bc75 5 1859 1163
+bc7a 7 1877 1163
+bc81 3 1887 1163
+bc84 2 1888 1163
+bc86 1a 1378 1163
+bca0 7 1892 1163
+bca7 11 1897 1163
+bcb8 10 1900 1163
+bcc8 3 1901 1163
+bccb 5 1903 1163
+bcd0 6 1961 1163
+bcd6 6 1987 1163
+bcdc 16 2026 1163
+bcf2 2 2045 1163
+bcf4 5 2051 1163
+bcf9 2 2071 1163
+bcfb 4 2074 1163
+bcff 6 2080 1163
+bd05 2 2099 1163
+bd07 5 2105 1163
+bd0c 10 2128 1163
+bd1c 7 2129 1163
+bd23 7 2130 1163
+bd2a c 2136 1163
+bd36 2 2142 1163
+bd38 6 2148 1163
+bd3e 7 2149 1163
+bd45 2 2150 1163
+bd47 4 2151 1163
+bd4b a 2152 1163
+bd55 3 2153 1163
+bd58 6 2157 1163
+bd5e 3 2158 1163
+bd61 6 2163 1163
+bd67 10 2165 1163
+bd77 10 2166 1163
+bd87 c 2168 1163
+bd93 3 2170 1163
+bd96 3 2172 1163
+bd99 2 2173 1163
+bd9b 8 2175 1163
+bda3 1 2176 1163
+bda4 19 2180 1163
+bdbd 9 2181 1163
+bdc6 1 2182 1163
+bdc7 2 2185 1163
+bdc9 4 1625 1163
+bdcd 8 1626 1163
+bdd5 c 1628 1163
+bde1 7 1629 1163
+bde8 2 1630 1163
+bdea 4 1629 1163
+bdee 8 1631 1163
+bdf6 a 2201 1163
+be00 7 2204 1163
+be07 6 2205 1163
+be0d 6 2207 1163
+be13 2 2208 1163
+be15 4 2210 1163
+be19 6 2212 1163
+be1f 2 2213 1163
+be21 4 2215 1163
+be25 6 2217 1163
+be2b 7 2218 1163
+be32 b 2224 1163
+be3d 6 2228 1163
+be43 11 2230 1163
+be54 11 2234 1163
+be65 d 2236 1163
+be72 f 2238 1163
+be81 a 2263 1163
+be8b 3 2267 1163
+be8e 3 2268 1163
+be91 3 2269 1163
+be94 1a 2276 1163
+beae 7 2278 1163
+beb5 e 2282 1163
+bec3 a 2283 1163
+becd 2 1690 1163
+becf 4 2279 1163
+bed3 2 2285 1163
+bed5 d 2286 1163
+bee2 c 2290 1163
+beee 11 2292 1163
+beff 6 2297 1163
+bf05 8 2298 1163
+bf0d 4 2299 1163
+bf11 1 2298 1163
+bf12 1b 1073 1163
+bf2d 17 1690 1163
+bf44 10 2376 1163
+bf54 38 2377 1163
+FUNC bf8c 97 10 _vswprintf_l
+bf8c 7 125 1425
+bf93 24 130 1425
+bfb7 8 135 1425
+bfbf 29 155 1425
+bfe8 1d 166 1425
+c005 18 167 1425
+c01d 4 169 1425
+c021 2 183 1425
+FUNC c023 17 c _vswprintf
+c023 0 192 1425
+c023 16 195 1425
+c039 1 197 1425
+FUNC c03a 5 10 __vswprintf_l
+c03a 0 205 1425
+c03a 5 208 1425
+FUNC c03f 55 10 _vscwprintf_helper
+c03f 7 430 1425
+c046 24 435 1425
+c06a 28 441 1425
+c092 2 443 1425
+FUNC c094 18 8 _vscwprintf
+c094 0 449 1425
+c094 17 450 1425
+c0ab 1 451 1425
+FUNC c0ac 1a c _vscwprintf_l
+c0ac 0 458 1425
+c0ac 19 459 1425
+c0c5 1 460 1425
+FUNC c0c6 18 8 _vscwprintf_p
+c0c6 0 466 1425
+c0c6 17 467 1425
+c0dd 1 468 1425
+FUNC c0de 1a c _vscwprintf_p_l
+c0de 0 475 1425
+c0de 19 476 1425
+c0f7 1 477 1425
+FUNC c0f8 14e 14 vfprintf_helper
+c0f8 c 51 1462
+c104 5 54 1462
+c109 2e 56 1462
+c137 c 57 1462
+c143 3 60 1462
+c146 7 62 1462
+c14d 3 63 1462
+c150 b0 65 1462
+c200 5 66 1462
+c205 8 68 1462
+c20d 10 69 1462
+c21d a 70 1462
+c227 c 74 1462
+c233 3 78 1462
+c236 6 79 1462
+c23c a 75 1462
+FUNC c246 1e 10 _vfprintf_l
+c246 0 87 1462
+c246 1d 88 1462
+c263 1 89 1462
+FUNC c264 1e 10 _vfprintf_s_l
+c264 0 97 1462
+c264 1d 98 1462
+c281 1 99 1462
+FUNC c282 1e 10 _vfprintf_p_l
+c282 0 107 1462
+c282 1d 108 1462
+c29f 1 109 1462
+FUNC c2a0 1c c vfprintf
+c2a0 0 116 1462
+c2a0 1b 117 1462
+c2bb 1 118 1462
+FUNC c2bc 1c c vfprintf_s
+c2bc 0 125 1462
+c2bc 1b 126 1462
+c2d7 1 127 1462
+FUNC c2d8 1c c _vfprintf_p
+c2d8 0 134 1462
+c2d8 1b 135 1462
+c2f3 1 136 1462
+FUNC c2f4 25 4 write_char
+c2f4 0 2433 1053
+c2f4 a 2434 1053
+c2fe 2 2437 1053
+c300 12 2440 1053
+c312 3 2444 1053
+c315 1 2447 1053
+c316 2 2446 1053
+c318 1 2447 1053
+FUNC c319 25 c write_multi_char
+c319 6 2498 1053
+c31f 2 2501 1053
+c321 e 2500 1053
+c32f 6 2501 1053
+c335 7 2499 1053
+c33c 2 2504 1053
+FUNC c33e 4f 4 write_string
+c33e 0 2563 1053
+c33e 12 2564 1053
+c350 6 2566 1053
+c356 2 2567 1053
+c358 11 2570 1053
+c369 6 2571 1053
+c36f a 2573 1053
+c379 a 2574 1053
+c383 9 2569 1053
+c38c 1 2579 1053
+FUNC c38d 91c 10 _woutput_s_l
+c38d 29 975 1053
+c3b6 3 976 1053
+c3b9 f 1007 1053
+c3c8 24 2172 1053
+c3ec 2f 1031 1053
+c41b 18 1036 1053
+c433 2e 1073 1053
+c461 16 1078 1053
+c477 e 1079 1053
+c485 11 1124 1053
+c496 10 1131 1053
+c4a6 2 1171 1053
+c4a8 13 1173 1053
+c4bb 3 1174 1053
+c4be 5 1175 1053
+c4c3 1e 1179 1053
+c4e1 3 1193 1053
+c4e4 5 1194 1053
+c4e9 4 1181 1053
+c4ed 5 1182 1053
+c4f2 4 1184 1053
+c4f6 5 1185 1053
+c4fb 7 1190 1053
+c502 5 1191 1053
+c507 3 1187 1053
+c50a 5 1196 1053
+c50f 6 1200 1053
+c515 5 1206 1053
+c51a e 1233 1053
+c528 4 1235 1053
+c52c 3 1236 1053
+c52f 5 1239 1053
+c534 10 1241 1053
+c544 5 1243 1053
+c549 4 1248 1053
+c54d 5 1249 1053
+c552 6 1253 1053
+c558 5 1259 1053
+c55d e 1284 1053
+c56b 4 1285 1053
+c56f 5 1287 1053
+c574 10 1289 1053
+c584 5 1291 1053
+c589 1b 1295 1053
+c5a4 7 1362 1053
+c5ab 5 1363 1053
+c5b0 6 1301 1053
+c5b6 2 1303 1053
+c5b8 7 1304 1053
+c5bf 5 1306 1053
+c5c4 4 1308 1053
+c5c8 5 1310 1053
+c5cd 4 1358 1053
+c5d1 5 1359 1053
+c5d6 10 1322 1053
+c5e6 3 1324 1053
+c5e9 c 1325 1053
+c5f5 d 1327 1053
+c602 3 1329 1053
+c605 7 1330 1053
+c60c 5 1332 1053
+c611 3c 1337 1053
+c64d 4 1352 1053
+c651 14 1166 1053
+c665 5 1167 1053
+c66a 32 1378 1053
+c69c d 1716 1053
+c6a9 4 1724 1053
+c6ad 18 1749 1053
+c6c5 c 1750 1053
+c6d1 c 1381 1053
+c6dd 9 1383 1053
+c6e6 8 1564 1053
+c6ee 4 1565 1053
+c6f2 d 1584 1053
+c6ff 3 1589 1053
+c702 13 1610 1053
+c715 4 1611 1053
+c719 8 1612 1053
+c721 19 1614 1053
+c73a 13 1618 1053
+c74d 1 1620 1053
+c74e 9 1621 1053
+c757 5 1622 1053
+c75c 1e 1378 1053
+c77a 9 1397 1053
+c783 f 1415 1053
+c792 3 1420 1053
+c795 25 1430 1053
+c7ba 3 1434 1053
+c7bd 2 1436 1053
+c7bf 4 1437 1053
+c7c3 6 1439 1053
+c7c9 3 1440 1053
+c7cc 5 1506 1053
+c7d1 5 1523 1053
+c7d6 e 1541 1053
+c7e4 6 1546 1053
+c7ea b 1548 1053
+c7f5 7 1549 1053
+c7fc 5 1550 1053
+c801 4 1551 1053
+c805 5 1553 1053
+c80a 8 1543 1053
+c812 7 1544 1053
+c819 5 1557 1053
+c81e 34 1378 1053
+c852 9 1908 1053
+c85b 9 1910 1053
+c864 8 1668 1053
+c86c d 1688 1053
+c879 6 1702 1053
+c87f 7 1703 1053
+c886 2 1704 1053
+c888 5 1706 1053
+c88d 7 1708 1053
+c894 5 1710 1053
+c899 4 1864 1053
+c89d 7 1869 1053
+c8a4 c 1933 1053
+c8b0 8 1939 1053
+c8b8 5 1958 1053
+c8bd 8 1751 1053
+c8c5 9 1752 1053
+c8ce 5 1753 1053
+c8d3 3 1754 1053
+c8d6 9 1756 1053
+c8df f 1759 1053
+c8ee 3 1760 1053
+c8f1 15 1765 1053
+c906 7 1767 1053
+c90d e 1809 1053
+c91b 27 1828 1053
+c942 14 1838 1053
+c956 15 1840 1053
+c96b b 1844 1053
+c976 15 1846 1053
+c98b 5 1852 1053
+c990 7 1853 1053
+c997 4 1854 1053
+c99b 1 1857 1053
+c99c 5 1859 1053
+c9a1 3 1877 1053
+c9a4 7 1887 1053
+c9ab 2 1888 1053
+c9ad 1a 1378 1053
+c9c7 7 1892 1053
+c9ce 11 1897 1053
+c9df 10 1900 1053
+c9ef 3 1901 1053
+c9f2 5 1903 1053
+c9f7 6 1961 1053
+c9fd 6 1987 1053
+ca03 16 2026 1053
+ca19 2 2045 1053
+ca1b 5 2051 1053
+ca20 2 2071 1053
+ca22 4 2074 1053
+ca26 6 2080 1053
+ca2c 2 2099 1053
+ca2e 5 2105 1053
+ca33 10 2128 1053
+ca43 7 2129 1053
+ca4a 7 2130 1053
+ca51 c 2136 1053
+ca5d 2 2142 1053
+ca5f 6 2148 1053
+ca65 7 2149 1053
+ca6c 2 2150 1053
+ca6e 4 2151 1053
+ca72 a 2152 1053
+ca7c 3 2153 1053
+ca7f 6 2157 1053
+ca85 3 2158 1053
+ca88 6 2163 1053
+ca8e 10 2165 1053
+ca9e 10 2166 1053
+caae c 2168 1053
+caba 3 2170 1053
+cabd 3 2172 1053
+cac0 2 2173 1053
+cac2 8 2175 1053
+caca 1 2176 1053
+cacb 19 2180 1053
+cae4 9 2181 1053
+caed 1 2182 1053
+caee 2 2185 1053
+caf0 4 1625 1053
+caf4 8 1626 1053
+cafc c 1628 1053
+cb08 7 1629 1053
+cb0f 2 1630 1053
+cb11 4 1629 1053
+cb15 8 1631 1053
+cb1d a 2201 1053
+cb27 7 2204 1053
+cb2e 6 2205 1053
+cb34 6 2207 1053
+cb3a 2 2208 1053
+cb3c 4 2210 1053
+cb40 6 2212 1053
+cb46 2 2213 1053
+cb48 4 2215 1053
+cb4c 6 2217 1053
+cb52 7 2218 1053
+cb59 b 2224 1053
+cb64 6 2228 1053
+cb6a 11 2230 1053
+cb7b 11 2234 1053
+cb8c d 2236 1053
+cb99 f 2238 1053
+cba8 a 2263 1053
+cbb2 3 2267 1053
+cbb5 3 2268 1053
+cbb8 3 2269 1053
+cbbb 1a 2276 1053
+cbd5 7 2278 1053
+cbdc e 2282 1053
+cbea a 2283 1053
+cbf4 2 1690 1053
+cbf6 4 2279 1053
+cbfa 2 2285 1053
+cbfc d 2286 1053
+cc09 c 2290 1053
+cc15 11 2292 1053
+cc26 6 2297 1053
+cc2c 8 2298 1053
+cc34 16 2299 1053
+cc4a 7 1073 1053
+cc51 10 2310 1053
+cc61 10 2376 1053
+cc71 38 2377 1053
+FUNC cca9 154 10 _validate_param_reuseW
+cca9 3 606 1108
+ccac 21 610 1108
+cccd 13 617 1108
+cce0 13 618 1108
+ccf3 10 620 1108
+cd03 4a 629 1108
+cd4d 54 632 1108
+cda1 2 633 1108
+cda3 1a 639 1108
+cdbd f 645 1108
+cdcc 23 626 1108
+cdef c 614 1108
+cdfb 2 646 1108
+FUNC cdfd 25 4 write_char
+cdfd 0 2433 1108
+cdfd a 2434 1108
+ce07 2 2437 1108
+ce09 12 2440 1108
+ce1b 3 2444 1108
+ce1e 1 2447 1108
+ce1f 2 2446 1108
+ce21 1 2447 1108
+FUNC ce22 25 c write_multi_char
+ce22 6 2498 1108
+ce28 2 2501 1108
+ce2a e 2500 1108
+ce38 6 2501 1108
+ce3e 7 2499 1108
+ce45 2 2504 1108
+FUNC ce47 4f 4 write_string
+ce47 0 2563 1108
+ce47 12 2564 1108
+ce59 6 2566 1108
+ce5f 2 2567 1108
+ce61 11 2570 1108
+ce72 6 2571 1108
+ce78 a 2573 1108
+ce82 a 2574 1108
+ce8c 9 2569 1108
+ce95 1 2579 1108
+FUNC ce96 f60 10 _woutput_p_l
+ce96 1b 975 1108
+ceb1 20 1013 1108
+ced1 28 2172 1108
+cef9 2c 1031 1108
+cf25 4 1036 1108
+cf29 3 1038 1108
+cf2c 3 1041 1108
+cf2f 3 1043 1108
+cf32 f 1046 1108
+cf41 44 1073 1108
+cf85 1a 1078 1108
+cf9f 11 1079 1108
+cfb0 16 1082 1108
+cfc6 6 1084 1108
+cfcc 1c 1087 1108
+cfe8 6 1089 1108
+cfee 16 1091 1108
+d004 7 1093 1108
+d00b 2 1095 1108
+d00d 7 1097 1108
+d014 6 1101 1108
+d01a c 1103 1108
+d026 7 1104 1108
+d02d f 1106 1108
+d03c 1d 1109 1108
+d059 8 1112 1108
+d061 5 1131 1108
+d066 3 1117 1108
+d069 7 1131 1108
+d070 9 1120 1108
+d079 b 1131 1108
+d084 24 1137 1108
+d0a8 5 1145 1108
+d0ad 2 1171 1108
+d0af 16 1173 1108
+d0c5 3 1174 1108
+d0c8 5 1175 1108
+d0cd 1f 1179 1108
+d0ec 7 1193 1108
+d0f3 5 1194 1108
+d0f8 7 1181 1108
+d0ff 5 1182 1108
+d104 7 1184 1108
+d10b 5 1185 1108
+d110 a 1190 1108
+d11a 5 1191 1108
+d11f 6 1187 1108
+d125 5 1196 1108
+d12a a 1200 1108
+d134 6 1203 1108
+d13a a 1206 1108
+d144 2 1209 1108
+d146 c 1211 1108
+d152 6 1212 1108
+d158 e 1214 1108
+d166 1c 1216 1108
+d182 8 1219 1108
+d18a 12 1221 1108
+d19c a 1274 1108
+d1a6 5 1275 1108
+d1ab c 1228 1108
+d1b7 b 1233 1108
+d1c2 7 1235 1108
+d1c9 3 1236 1108
+d1cc 5 1239 1108
+d1d1 10 1241 1108
+d1e1 5 1243 1108
+d1e6 4 1248 1108
+d1ea 5 1249 1108
+d1ef 6 1253 1108
+d1f5 6 1256 1108
+d1fb a 1259 1108
+d205 2 1262 1108
+d207 c 1264 1108
+d213 6 1265 1108
+d219 12 1267 1108
+d22b c 1280 1108
+d237 b 1284 1108
+d242 4 1285 1108
+d246 5 1287 1108
+d24b 22 1274 1108
+d26d 10 1289 1108
+d27d 5 1291 1108
+d282 1b 1295 1108
+d29d a 1362 1108
+d2a7 5 1363 1108
+d2ac 6 1301 1108
+d2b2 2 1303 1108
+d2b4 d 1304 1108
+d2c1 5 1306 1108
+d2c6 7 1308 1108
+d2cd 5 1310 1108
+d2d2 7 1358 1108
+d2d9 5 1359 1108
+d2de 10 1322 1108
+d2ee 3 1324 1108
+d2f1 12 1325 1108
+d303 d 1327 1108
+d310 3 1329 1108
+d313 d 1330 1108
+d320 5 1332 1108
+d325 24 1337 1108
+d349 4 1352 1108
+d34d 13 1166 1108
+d360 5 1167 1108
+d365 a 1342 1108
+d36f 5 1366 1108
+d374 36 1378 1108
+d3aa d 1716 1108
+d3b7 7 1724 1108
+d3be 14 1726 1108
+d3d2 9 1728 1108
+d3db 2a 1739 1108
+d405 b 1381 1108
+d410 9 1383 1108
+d419 b 1564 1108
+d424 7 1565 1108
+d42b d 1584 1108
+d438 b 1586 1108
+d443 a 1589 1108
+d44d 5 1592 1108
+d452 22 1378 1108
+d474 d 1394 1108
+d481 b 1397 1108
+d48c 2 1400 1108
+d48e 9 1402 1108
+d497 6 1404 1108
+d49d 24 1406 1108
+d4c1 5 1407 1108
+d4c6 d 1411 1108
+d4d3 c 1415 1108
+d4df 3 1420 1108
+d4e2 28 1430 1108
+d50a 7 1434 1108
+d511 2 1436 1108
+d513 7 1437 1108
+d51a 9 1439 1108
+d523 7 1440 1108
+d52a 5 1506 1108
+d52f 6 1520 1108
+d535 a 1523 1108
+d53f 2 1526 1108
+d541 9 1528 1108
+d54a 4 1530 1108
+d54e 6 1533 1108
+d554 c 1537 1108
+d560 b 1541 1108
+d56b 9 1546 1108
+d574 b 1548 1108
+d57f 7 1549 1108
+d586 5 1550 1108
+d58b 4 1551 1108
+d58f 5 1553 1108
+d594 8 1543 1108
+d59c 7 1544 1108
+d5a3 5 1557 1108
+d5a8 38 1378 1108
+d5e0 15 1908 1108
+d5f5 11 1910 1108
+d606 6 1665 1108
+d60c a 1668 1108
+d616 2 1671 1108
+d618 9 1673 1108
+d621 6 1675 1108
+d627 1f 1677 1108
+d646 5 1678 1108
+d64b c 1682 1108
+d657 d 1688 1108
+d664 9 1702 1108
+d66d 7 1703 1108
+d674 2 1704 1108
+d676 5 1706 1108
+d67b 7 1708 1108
+d682 5 1710 1108
+d687 7 1864 1108
+d68e 7 1869 1108
+d695 6 1910 1108
+d69b 9 1933 1108
+d6a4 a 1936 1108
+d6ae f 1939 1108
+d6bd 5 1942 1108
+d6c2 1a 1739 1108
+d6dc 21 1109 1108
+d6fd 17 1749 1108
+d714 9 1750 1108
+d71d 8 1751 1108
+d725 9 1752 1108
+d72e 5 1753 1108
+d733 3 1754 1108
+d736 a 1756 1108
+d740 f 1759 1108
+d74f 2 1760 1108
+d751 13 1765 1108
+d764 3 1767 1108
+d767 7 1806 1108
+d76e 9 1809 1108
+d777 2 1812 1108
+d779 a 1818 1108
+d783 6 1821 1108
+d789 16 1822 1108
+d79f 24 1828 1108
+d7c3 16 1838 1108
+d7d9 15 1840 1108
+d7ee b 1844 1108
+d7f9 15 1846 1108
+d80e 5 1852 1108
+d813 a 1853 1108
+d81d 4 1854 1108
+d821 1 1857 1108
+d822 5 1859 1108
+d827 7 1877 1108
+d82e 7 1887 1108
+d835 2 1888 1108
+d837 1a 1378 1108
+d851 7 1892 1108
+d858 14 1897 1108
+d86c 10 1900 1108
+d87c 3 1901 1108
+d87f 5 1903 1108
+d884 9 1944 1108
+d88d 28 1948 1108
+d8b5 5 1949 1108
+d8ba 7 1961 1108
+d8c1 4 1964 1108
+d8c5 6 1970 1108
+d8cb 9 1972 1108
+d8d4 28 1976 1108
+d8fc 5 1977 1108
+d901 c 1981 1108
+d90d 5 1987 1108
+d912 5 2019 1108
+d917 5 2020 1108
+d91c 6 2023 1108
+d922 b 2026 1108
+d92d 5 2029 1108
+d932 9 2031 1108
+d93b 4 2033 1108
+d93f 2 2036 1108
+d941 d 2040 1108
+d94e 5 2045 1108
+d953 6 2048 1108
+d959 b 2051 1108
+d964 5 2054 1108
+d969 9 2056 1108
+d972 4 2058 1108
+d976 2 2061 1108
+d978 d 2065 1108
+d985 2 2071 1108
+d987 5 2074 1108
+d98c 6 2077 1108
+d992 a 2080 1108
+d99c 2 2083 1108
+d99e 9 2085 1108
+d9a7 6 2087 1108
+d9ad 17 2089 1108
+d9c4 15 2114 1108
+d9d9 5 2115 1108
+d9de d 2094 1108
+d9eb 2 2099 1108
+d9ed 6 2102 1108
+d9f3 a 2105 1108
+d9fd 2 2108 1108
+d9ff 9 2110 1108
+da08 6 2112 1108
+da0e e 2119 1108
+da1c f 2128 1108
+da2b 7 2129 1108
+da32 c 2130 1108
+da3e c 2136 1108
+da4a 4 2142 1108
+da4e 6 2148 1108
+da54 7 2149 1108
+da5b 2 2150 1108
+da5d 1a 2114 1108
+da77 3 2151 1108
+da7a 10 2152 1108
+da8a 3 2153 1108
+da8d 7 2157 1108
+da94 3 2158 1108
+da97 6 2163 1108
+da9d 11 2165 1108
+daae 12 2166 1108
+dac0 d 2168 1108
+dacd 3 2170 1108
+dad0 b 2173 1108
+dadb 8 2175 1108
+dae3 1 2176 1108
+dae4 20 2180 1108
+db04 9 2181 1108
+db0d 1 2182 1108
+db0e 5 2185 1108
+db13 9 1594 1108
+db1c 9 1596 1108
+db25 c 1603 1108
+db31 c 1610 1108
+db3d 4 1611 1108
+db41 8 1612 1108
+db49 11 1614 1108
+db5a 13 1618 1108
+db6d 1 1620 1108
+db6e 9 1621 1108
+db77 2 1622 1108
+db79 19 1598 1108
+db92 5 1625 1108
+db97 8 1626 1108
+db9f c 1628 1108
+dbab 6 1629 1108
+dbb1 2 1630 1108
+dbb3 4 1629 1108
+dbb7 8 1631 1108
+dbbf 10 2189 1108
+dbcf a 2201 1108
+dbd9 a 2204 1108
+dbe3 6 2205 1108
+dbe9 6 2207 1108
+dbef 2 2208 1108
+dbf1 4 2210 1108
+dbf5 6 2212 1108
+dbfb 2 2213 1108
+dbfd 4 2215 1108
+dc01 6 2217 1108
+dc07 7 2218 1108
+dc0e b 2224 1108
+dc19 9 2228 1108
+dc22 11 2230 1108
+dc33 11 2234 1108
+dc44 13 2236 1108
+dc57 f 2238 1108
+dc66 a 2263 1108
+dc70 3 2267 1108
+dc73 3 2268 1108
+dc76 3 2269 1108
+dc79 1a 2276 1108
+dc93 7 2278 1108
+dc9a e 2282 1108
+dca8 a 2283 1108
+dcb2 2 2310 1108
+dcb4 4 2279 1108
+dcb8 2 2285 1108
+dcba d 2286 1108
+dcc7 f 2290 1108
+dcd6 11 2292 1108
+dce7 6 2297 1108
+dced 8 2298 1108
+dcf5 4 2299 1108
+dcf9 1 2298 1108
+dcfa 12 1073 1108
+dd0c c 2310 1108
+dd18 c 2314 1108
+dd24 10 2319 1108
+dd34 16 2321 1108
+dd4a 2 2360 1108
+dd4c 9 2361 1108
+dd55 6 2362 1108
+dd5b 2 2344 1108
+dd5d 3 2345 1108
+dd60 2 2346 1108
+dd62 2 2324 1108
+dd64 6 2325 1108
+dd6a 9 2319 1108
+dd73 13 1043 1108
+dd86 17 1121 1108
+dd9d f 1818 1108
+ddac 10 2376 1108
+ddbc 3a 2377 1108
+FUNC ddf6 1f 0 _initp_misc_cfltcvt_tab
+ddf6 2 54 4074
+ddf8 8 56 4074
+de00 14 58 4074
+de14 1 60 4074
+FUNC de20 29 4 _ValidateImageBase
+de20 0 44 3159
+de20 b 50 3159
+de2b 2 52 3159
+de2d 1 68 3159
+de2e 5 55 3159
+de33 6 56 3159
+de39 2 58 3159
+de3b d 62 3159
+de48 1 68 3159
+FUNC de50 42 8 _FindPESection
+de50 0 92 3159
+de50 9 99 3159
+de59 19 108 3159
+de72 10 111 3159
+de82 a 108 3159
+de8c 5 123 3159
+de91 1 124 3159
+FUNC dea0 bb 4 _IsNonwritableInCurrentImage
+dea0 33 149 3159
+ded3 7 156 3159
+deda f 164 3159
+dee9 2 166 3159
+deeb 8 174 3159
+def3 e 175 3159
+df01 2 176 3159
+df03 2 178 3159
+df05 12 185 3159
+df17 12 195 3159
+df29 17 187 3159
+df40 9 193 3159
+df49 12 195 3159
+FUNC df5b 19 4 _initp_misc_winsig
+df5b 0 57 2785
+df5b 9 58 2785
+df64 5 59 2785
+df69 5 60 2785
+df6e 5 61 2785
+df73 1 62 2785
+FUNC df74 9b 4 ctrlevent_capture
+df74 c 89 2785
+df80 9 94 2785
+df89 3 95 2785
+df8c 5 102 2785
+df91 5 103 2785
+df96 e 104 2785
+dfa4 7 105 2785
+dfab 2 107 2785
+dfad 5 108 2785
+dfb2 e 109 2785
+dfc0 7 110 2785
+dfc7 1 109 2785
+dfc8 9 113 2785
+dfd1 7 117 2785
+dfd8 c 120 2785
+dfe4 5 124 2785
+dfe9 4 128 2785
+dfed 2 120 2785
+dfef 8 121 2785
+dff7 6 130 2785
+dffd 7 131 2785
+e004 3 138 2785
+e007 8 139 2785
+FUNC e00f 34 4 siglookup
+e00f 0 634 2785
+e00f b 635 2785
+e01a 15 645 2785
+e02f f 649 2785
+e03e 2 653 2785
+e040 2 658 2785
+e042 1 659 2785
+FUNC e043 d 0 __get_sigabrt
+e043 0 676 2785
+e043 c 677 2785
+e04f 1 678 2785
+FUNC e050 9 0 __fpecode
+e050 0 699 2785
+e050 8 700 2785
+e058 1 701 2785
+FUNC e059 9 0 __pxcptinfoptrs
+e059 0 721 2785
+e059 8 722 2785
+e061 1 723 2785
+FUNC e062 23d 8 signal
+e062 c 219 2785
+e06e 4 224 2785
+e072 3 230 2785
+e075 3 244 2785
+e078 12 230 2785
+e08a 2f 244 2785
+e0b9 13 327 2785
+e0cc 7 334 2785
+e0d3 8 335 2785
+e0db a 342 2785
+e0e5 17 346 2785
+e0fc 10 352 2785
+e10c 13 367 2785
+e11f 3 380 2785
+e122 e 382 2785
+e130 3 395 2785
+e133 17 401 2785
+e14a 5 390 2785
+e14f 5 401 2785
+e154 8 246 2785
+e15c 4 247 2785
+e160 12 254 2785
+e172 14 257 2785
+e186 6 259 2785
+e18c 2 261 2785
+e18e f 263 2785
+e19d a 264 2785
+e1a7 18 268 2785
+e1bf f 288 2785
+e1ce 4 289 2785
+e1d2 b 291 2785
+e1dd 2 293 2785
+e1df f 279 2785
+e1ee 4 280 2785
+e1f2 b 282 2785
+e1fd 2 284 2785
+e1ff f 296 2785
+e20e 4 297 2785
+e212 b 299 2785
+e21d 2 301 2785
+e21f f 271 2785
+e22e 4 272 2785
+e232 c 274 2785
+e23e c 305 2785
+e24a 9 309 2785
+e253 4 407 2785
+e257 3 305 2785
+e25a 9 306 2785
+e263 19 410 2785
+e27c 1a 419 2785
+e296 3 417 2785
+e299 6 423 2785
+FUNC e29f 1b0 4 raise
+e29f c 452 2785
+e2ab 5 459 2785
+e2b0 3 460 2785
+e2b3 1f 462 2785
+e2d2 a 488 2785
+e2dc 4 489 2785
+e2e0 8 490 2785
+e2e8 a 465 2785
+e2f2 2 467 2785
+e2f4 11 492 2785
+e305 2 493 2785
+e307 f 462 2785
+e316 1c 500 2785
+e332 a 476 2785
+e33c 2 478 2785
+e33e a 470 2785
+e348 2 472 2785
+e34a a 481 2785
+e354 7 482 2785
+e35b a 502 2785
+e365 2 510 2785
+e367 4 509 2785
+e36b 6 510 2785
+e371 5 515 2785
+e376 7 520 2785
+e37d 5 527 2785
+e382 7 528 2785
+e389 5 530 2785
+e38e f 543 2785
+e39d 6 544 2785
+e3a3 3 545 2785
+e3a6 5 551 2785
+e3ab 6 552 2785
+e3b1 7 553 2785
+e3b8 5 561 2785
+e3bd 1c 568 2785
+e3d9 d 571 2785
+e3e6 5 568 2785
+e3eb 7 574 2785
+e3f2 c 577 2785
+e3fe 5 582 2785
+e403 8 588 2785
+e40b 2 589 2785
+e40d 6 577 2785
+e413 6 578 2785
+e419 9 579 2785
+e422 5 590 2785
+e427 f 597 2785
+e436 6 598 2785
+e43c 5 603 2785
+e441 6 604 2785
+e447 2 607 2785
+e449 6 608 2785
+FUNC e44f a 4 _initp_misc_rand_s
+e44f 0 58 3075
+e44f 9 59 3075
+e458 1 60 3075
+FUNC e459 104 4 rand_s
+e459 3 66 3075
+e45c b 67 3075
+e467 2b 68 3075
+e492 c 71 3075
+e49e d 77 3075
+e4ab 4 78 3075
+e4af 1e 80 3075
+e4cd e 83 3075
+e4db 4 84 3075
+e4df 2f 86 3075
+e50e 9 88 3075
+e517 5 89 3075
+e51c 16 94 3075
+e532 7 103 3075
+e539 9 107 3075
+e542 b 109 3075
+e54d 9 110 3075
+e556 6 112 3075
+e55c 1 113 3075
+FUNC e55d 15a 14 __getlocaleinfo
+e55d 1d 70 3523
+e57a 7 76 3523
+e581 87 109 3523
+e608 13 103 3523
+e61b 5 114 3523
+e620 7 115 3523
+e627 3 141 3523
+e62a 12 142 3523
+e63c 20 106 3523
+e65c 5 108 3523
+e661 7 109 3523
+e668 4 111 3523
+e66c 5 118 3523
+e671 1a 126 3523
+e68b 2 127 3523
+e68d 2 129 3523
+e68f 10 134 3523
+e69f 16 135 3523
+e6b5 2 139 3523
+FUNC e6b7 a 4 _initp_misc_purevirt
+e6b7 0 166 3523
+e6b7 9 167 3523
+e6c0 1 168 3523
+FUNC e6c1 a 4 _initp_misc_initcrit
+e6c1 0 47 3609
+e6c1 9 48 3609
+e6ca 1 49 3609
+FUNC e6cb 10 8 __crtInitCritSecNoSpinCount
+e6cb 0 76 3609
+e6cb a 77 3609
+e6d5 3 78 3609
+e6d8 3 79 3609
+FUNC e6db c5 8 __crtInitCritSecAndSpinCount
+e6db c 109 3609
+e6e7 5 111 3609
+e6ec e 112 3609
+e6fa 4 114 3609
+e6fe 1b 120 3609
+e719 4 121 3609
+e71d 2 129 3609
+e71f b 130 3609
+e72a 4 131 3609
+e72e e 134 3609
+e73c 4 136 3609
+e740 5 149 3609
+e745 c 152 3609
+e751 3 155 3609
+e754 b 161 3609
+e75f 2 162 3609
+e761 1a 163 3609
+e77b 9 170 3609
+e784 8 171 3609
+e78c 4 173 3609
+e790 7 174 3609
+e797 3 176 3609
+e79a 6 177 3609
+FUNC e7a0 5e 4 _isatty
+e7a0 0 37 4912
+e7a0 16 44 4912
+e7b6 2 59 4912
+e7b8 29 45 4912
+e7e1 1 59 4912
+e7e2 1b 58 4912
+e7fd 1 59 4912
+FUNC e7fe 2f 0 CPtoLCID
+e7fe 0 329 4615
+e7fe 14 330 4615
+e812 2 345 4615
+e814 1 346 4615
+e815 5 342 4615
+e81a 1 346 4615
+e81b 5 339 4615
+e820 1 346 4615
+e821 5 336 4615
+e826 1 346 4615
+e827 5 333 4615
+e82c 1 346 4615
+FUNC e82d 55 0 setSBCS
+e82d 4 363 4615
+e831 14 368 4615
+e845 3 371 4615
+e848 3 374 4615
+e84b 3 376 4615
+e84e 8 379 4615
+e856 a 381 4615
+e860 9 382 4615
+e869 b 384 4615
+e874 d 385 4615
+e881 1 386 4615
+FUNC e882 18a 0 setSBUpLow
+e882 1d 402 4615
+e89f f 412 4615
+e8ae d 415 4615
+e8bb c 416 4615
+e8c7 e 420 4615
+e8d5 3 419 4615
+e8d8 28 421 4615
+e900 1d 427 4615
+e91d 23 432 4615
+e940 25 437 4615
+e965 2 442 4615
+e967 a 443 4615
+e971 5 445 4615
+e976 9 446 4615
+e97f 5 448 4615
+e984 5 450 4615
+e989 e 451 4615
+e997 2 453 4615
+e999 8 454 4615
+e9a1 5 442 4615
+e9a6 8 456 4615
+e9ae 2c 472 4615
+e9da 5 466 4615
+e9df 5 468 4615
+e9e4 7 469 4615
+e9eb 2 471 4615
+e9ed 3 472 4615
+e9f0 5 460 4615
+e9f5 17 474 4615
+FUNC ea0c a4 0 __updatetmbcinfo
+ea0c c 496 4615
+ea18 7 499 4615
+ea1f 10 500 4615
+ea2f 3 533 4615
+ea32 4 536 4615
+ea36 8 538 4615
+ea3e 2 541 4615
+ea40 6 542 4615
+ea46 8 501 4615
+ea4e 4 503 4615
+ea52 e 506 4615
+ea60 17 512 4615
+ea77 7 517 4615
+ea7e 11 524 4615
+ea8f 7 525 4615
+ea96 11 528 4615
+eaa7 9 530 4615
+FUNC eab0 7a 0 getSystemCP
+eab0 7 282 4615
+eab7 b 284 4615
+eac2 b 289 4615
+eacd a 291 4615
+ead7 14 292 4615
+eaeb 5 295 4615
+eaf0 a 297 4615
+eafa 8 298 4615
+eb02 5 302 4615
+eb07 12 305 4615
+eb19 f 308 4615
+eb28 2 309 4615
+FUNC eb2a 1d9 8 _setmbcp_nolock
+eb2a 15 686 4615
+eb3f b 693 4615
+eb4a 9 696 4615
+eb53 7 698 4615
+eb5a 7 699 4615
+eb61 3 703 4615
+eb64 2 705 4615
+eb66 19 708 4615
+eb7f 2a 743 4615
+eba9 13 751 4615
+ebbc f 756 4615
+ebcb 15 761 4615
+ebe0 17 764 4615
+ebf7 c 766 4615
+ec03 f 712 4615
+ec12 15 715 4615
+ec27 9 720 4615
+ec30 8 723 4615
+ec38 12 724 4615
+ec4a 9 723 4615
+ec53 5 720 4615
+ec58 12 715 4615
+ec6a 20 731 4615
+ec8a d 733 4615
+ec97 7 736 4615
+ec9e 5 737 4615
+eca3 6 767 4615
+eca9 10 766 4615
+ecb9 8 771 4615
+ecc1 7 772 4615
+ecc8 b 775 4615
+ecd3 3 778 4615
+ecd6 2 780 4615
+ecd8 3 782 4615
+ecdb 8 785 4615
+ece3 2 789 4615
+ece5 6 794 4615
+eceb 6 797 4615
+ecf1 3 746 4615
+ecf4 f 802 4615
+FUNC ed03 3c 0 _getmbcp
+ed03 6 819 4615
+ed09 a 821 4615
+ed13 9 822 4615
+ed1c 10 823 4615
+ed2c 2 826 4615
+ed2e f 825 4615
+ed3d 2 826 4615
+FUNC ed3f 19a 4 _setmbcp
+ed3f c 574 4615
+ed4b 4 575 4615
+ed4f a 579 4615
+ed59 5 581 4615
+ed5e 3 582 4615
+ed61 b 585 4615
+ed6c 9 587 4615
+ed75 d 593 4615
+ed82 8 595 4615
+ed8a c 597 4615
+ed96 3 607 4615
+ed99 16 612 4615
+edaf 1a 614 4615
+edc9 7 615 4615
+edd0 3 619 4615
+edd3 9 620 4615
+eddc 17 622 4615
+edf3 8 624 4615
+edfb 4 625 4615
+edff 8 630 4615
+ee07 8 631 4615
+ee0f 8 632 4615
+ee17 a 633 4615
+ee21 d 634 4615
+ee2e 3 633 4615
+ee31 c 635 4615
+ee3d a 636 4615
+ee47 3 635 4615
+ee4a c 637 4615
+ee56 d 638 4615
+ee63 3 637 4615
+ee66 1c 640 4615
+ee82 7 641 4615
+ee89 6 645 4615
+ee8f 3 646 4615
+ee92 e 648 4615
+eea0 9 650 4615
+eea9 2 653 4615
+eeab 5 654 4615
+eeb0 8 660 4615
+eeb8 7 661 4615
+eebf b 662 4615
+eeca 2 668 4615
+eecc 4 673 4615
+eed0 3 682 4615
+eed3 6 683 4615
+FUNC eed9 1e 0 __initmbctable
+eed9 0 843 4615
+eed9 9 853 4615
+eee2 8 854 4615
+eeea a 855 4615
+eef4 2 860 4615
+eef6 1 861 4615
+FUNC eef7 6 0 ___setlc_active_func
+eef7 0 90 2995
+eef7 5 91 2995
+eefc 1 92 2995
+FUNC eefd 6 0 ___unguarded_readlc_active_add_func
+eefd 0 104 2995
+eefd 5 105 2995
+ef02 1 106 2995
+FUNC ef03 140 4 __freetlocinfo
+ef03 3 144 2995
+ef06 26 152 2995
+ef2c e 155 2995
+ef3a 6 157 2995
+ef40 d 158 2995
+ef4d e 162 2995
+ef5b 6 164 2995
+ef61 d 165 2995
+ef6e b 168 2995
+ef79 d 169 2995
+ef86 e 176 2995
+ef94 11 178 2995
+efa5 13 179 2995
+efb8 e 180 2995
+efc6 e 181 2995
+efd4 17 188 2995
+efeb 6 190 2995
+eff1 9 191 2995
+effa 6 194 2995
+f000 13 197 2995
+f013 7 199 2995
+f01a 10 205 2995
+f02a d 207 2995
+f037 b 214 2995
+f042 1 215 2995
+FUNC f043 86 4 __addlocaleref
+f043 3 225 2995
+f046 e 227 2995
+f054 a 228 2995
+f05e 3 229 2995
+f061 a 231 2995
+f06b 3 232 2995
+f06e a 234 2995
+f078 3 235 2995
+f07b a 237 2995
+f085 3 238 2995
+f088 6 240 2995
+f08e f 242 2995
+f09d 3 243 2995
+f0a0 d 245 2995
+f0ad 9 246 2995
+f0b6 12 248 2995
+f0c8 1 249 2995
+FUNC f0c9 8c 4 __removelocaleref
+f0c9 1 259 2995
+f0ca b 261 2995
+f0d5 9 263 2995
+f0de a 265 2995
+f0e8 3 266 2995
+f0eb a 268 2995
+f0f5 3 269 2995
+f0f8 a 271 2995
+f102 3 272 2995
+f105 a 274 2995
+f10f 3 275 2995
+f112 6 277 2995
+f118 f 279 2995
+f127 3 280 2995
+f12a d 282 2995
+f137 9 283 2995
+f140 11 285 2995
+f151 3 287 2995
+f154 1 288 2995
+FUNC f155 24 0 _copytlocinfo_nolock
+f155 3 302 2995
+f158 d 303 2995
+f165 7 304 2995
+f16c 3 305 2995
+f16f 9 306 2995
+f178 1 308 2995
+FUNC f179 3e 0 _updatetlocinfoEx_nolock
+f179 0 321 2995
+f179 9 324 2995
+f182 2 326 2995
+f184 4 327 2995
+f188 8 334 2995
+f190 5 339 2995
+f195 6 341 2995
+f19b e 350 2995
+f1a9 7 351 2995
+f1b0 3 355 2995
+f1b3 1 356 2995
+f1b4 2 325 2995
+f1b6 1 356 2995
+FUNC f1b7 76 0 __updatetlocinfo
+f1b7 c 382 2995
+f1c3 7 384 2995
+f1ca 10 386 2995
+f1da 8 397 2995
+f1e2 4 399 2995
+f1e6 8 401 2995
+f1ee 2 404 2995
+f1f0 6 405 2995
+f1f6 8 387 2995
+f1fe 4 388 2995
+f202 11 390 2995
+f213 e 392 2995
+f221 8 394 2995
+f229 4 395 2995
+FUNC f22d 66 4 _configthreadlocale
+f22d 2 420 2995
+f22f 5 434 2995
+f234 10 435 2995
+f244 19 437 2995
+f25d 1d 456 2995
+f27a 3 444 2995
+f27d 2 445 2995
+f27f 6 440 2995
+f285 2 441 2995
+f287 7 452 2995
+f28e 4 460 2995
+f292 1 462 2995
+FUNC f293 53 0 sync_legacy_variables_lk
+f293 0 489 2995
+f293 e 490 2995
+f2a1 9 491 2995
+f2aa c 492 2995
+f2b6 c 493 2995
+f2c2 c 494 2995
+f2ce c 495 2995
+f2da b 496 2995
+f2e5 1 497 2995
+FUNC f2e6 96 4 _free_locale
+f2e6 c 517 2995
+f2f2 9 518 2995
+f2fb 1c 522 2995
+f317 7 524 2995
+f31e 4 526 2995
+f322 8 534 2995
+f32a 3 535 2995
+f32d 8 537 2995
+f335 11 540 2995
+f346 7 541 2995
+f34d c 543 2995
+f359 7 552 2995
+f360 3 553 2995
+f363 7 554 2995
+f36a 6 556 2995
+f370 3 543 2995
+f373 9 545 2995
+FUNC f37c 5 4 __free_locale
+f37c 0 562 2995
+f37c 5 563 2995
+FUNC f381 88 0 _get_current_locale
+f381 c 687 2995
+f38d 7 689 2995
+f394 14 691 2995
+f3a8 b 693 2995
+f3b3 4 694 2995
+f3b7 5 697 2995
+f3bc 5 698 2995
+f3c1 5 706 2995
+f3c6 6 707 2995
+f3cc 8 708 2995
+f3d4 4 709 2995
+f3d8 8 710 2995
+f3e0 c 712 2995
+f3ec 9 715 2995
+f3f5 2 717 2995
+f3f7 6 718 2995
+f3fd 3 712 2995
+f400 9 713 2995
+FUNC f409 5 0 __get_current_locale
+f409 0 722 2995
+f409 5 723 2995
+FUNC f40e 3 4 __init_dummy
+f40e 0 1283 2995
+f40e 2 1284 2995
+f410 1 1285 2995
+FUNC f411 3e c _strcats
+f411 2 1288 2995
+f413 f 1294 2995
+f422 26 1296 2995
+f448 6 1294 2995
+f44e 1 1299 2995
+FUNC f44f 129 8 __lc_strtolc
+f44f 6 1302 2995
+f455 11 1307 2995
+f466 c 1309 2995
+f472 7 1310 2995
+f479 b 1313 2995
+f484 25 1315 2995
+f4a9 6 1317 2995
+f4af 2 1318 2995
+f4b1 15 1323 2995
+f4c6 1d 1328 2995
+f4e3 9 1329 2995
+f4ec 10 1331 2995
+f4fc c 1332 2995
+f508 14 1334 2995
+f51c 28 1335 2995
+f544 9 1340 2995
+f54d b 1348 2995
+f558 18 1350 2995
+f570 6 1338 2995
+f576 2 1353 2995
+FUNC f578 6b c __lc_lctostr
+f578 5 1356 2995
+f57d 25 1357 2995
+f5a2 7 1358 2995
+f5a9 16 1359 2995
+f5bf c 1360 2995
+f5cb 16 1361 2995
+f5e1 2 1362 2995
+FUNC f5e3 171 0 _setlocale_get_all
+f5e3 4 1124 2995
+f5e7 3 1126 2995
+f5ea 1d 1134 2995
+f607 3 1137 2995
+f60a 3 1139 2995
+f60d 2 1140 2995
+f60f 2f 1143 2995
+f63e 26 1146 2995
+f664 10 1147 2995
+f674 5 1148 2995
+f679 4 1141 2995
+f67d 2f 1143 2995
+f6ac a 1144 2995
+f6b6 8 1152 2995
+f6be 14 1154 2995
+f6d2 9 1156 2995
+f6db e 1159 2995
+f6e9 9 1161 2995
+f6f2 7 1165 2995
+f6f9 7 1166 2995
+f700 9 1168 2995
+f709 15 1170 2995
+f71e 9 1172 2995
+f727 e 1175 2995
+f735 9 1177 2995
+f73e 12 1183 2995
+f750 4 1187 2995
+FUNC f754 1d4 18 _expandlocale
+f754 15 1198 2995
+f769 41 1230 2995
+f7aa 14 1211 2995
+f7be b 1216 2995
+f7c9 26 1219 2995
+f7ef 4 1220 2995
+f7f3 3 1222 2995
+f7f6 4 1223 2995
+f7fa 4 1224 2995
+f7fe 7 1226 2995
+f805 2 1228 2995
+f807 8 1230 2995
+f80f 6 1234 2995
+f815 2f 1236 2995
+f844 4 1241 2995
+f848 e 1243 2995
+f856 6 1244 2995
+f85c 10 1246 2995
+f86c 6 1247 2995
+f872 9 1251 2995
+f87b 10 1253 2995
+f88b a 1255 2995
+f895 2 1260 2995
+f897 8 1263 2995
+f89f 26 1267 2995
+f8c5 5 1271 2995
+f8ca e 1272 2995
+f8d8 5 1273 2995
+f8dd 10 1274 2995
+f8ed 22 1276 2995
+f90f 5 1277 2995
+f914 2 1212 2995
+f916 12 1278 2995
+FUNC f928 2f6 4 _setlocale_set_cat
+f928 19 980 2995
+f941 5 993 2995
+f946 2f 998 2995
+f975 7 1000 2995
+f97c 19 1002 2995
+f995 6 1004 2995
+f99b c 1007 2995
+f9a7 16 1008 2995
+f9bd 2 1010 2995
+f9bf 3 1013 2995
+f9c2 d 1014 2995
+f9cf 2c 1015 2995
+f9fb 3 1016 2995
+f9fe 39 1019 2995
+fa37 6 1020 2995
+fa3d 15 1021 2995
+fa52 17 1022 2995
+fa69 a 1029 2995
+fa73 6 1031 2995
+fa79 18 1037 2995
+fa91 7 1039 2995
+fa98 8 1053 2995
+faa0 14 1054 2995
+fab4 18 1055 2995
+facc 2 1039 2995
+face a 1044 2995
+fad8 d 1046 2995
+fae5 b 1047 2995
+faf0 9 1058 2995
+faf9 26 1066 2995
+fb1f 2 1069 2995
+fb21 10 1071 2995
+fb31 22 1072 2995
+fb53 2 1081 2995
+fb55 4 1082 2995
+fb59 5 1083 2995
+fb5e 9 1085 2995
+fb67 6 1088 2995
+fb6d 9 1089 2995
+fb76 12 1091 2995
+fb88 6 1094 2995
+fb8e e 1095 2995
+fb9c f 1096 2995
+fbab 9 1097 2995
+fbb4 5 1099 2995
+fbb9 24 1106 2995
+fbdd 7 1109 2995
+fbe4 8 1110 2995
+fbec 6 1111 2995
+fbf2 18 1116 2995
+fc0a 3 1118 2995
+fc0d 11 1119 2995
+FUNC fc1e 1ce 4 _setlocale_nolock
+fc1e 1a 873 2995
+fc38 7 877 2995
+fc3f 5 904 2995
+fc44 17 880 2995
+fc5b 5 882 2995
+fc60 12 888 2995
+fc72 1d 890 2995
+fc8f 2 894 2995
+fc91 d 898 2995
+fc9e 1e 900 2995
+fcbc 11 904 2995
+fccd 1d 907 2995
+fcea e 904 2995
+fcf8 1b 913 2995
+fd13 6 916 2995
+fd19 24 918 2995
+fd3d 18 922 2995
+fd55 3 923 2995
+fd58 7 925 2995
+fd5f 1 926 2995
+fd60 9 928 2995
+fd69 c 930 2995
+fd75 4 901 2995
+fd79 19 935 2995
+fd92 3 937 2995
+fd95 4 939 2995
+fd99 11 941 2995
+fdaa c 943 2995
+fdb6 2 947 2995
+fdb8 3 949 2995
+fdbb 2 952 2995
+fdbd 3 953 2995
+fdc0 9 937 2995
+fdc9 5 956 2995
+fdce 2 961 2995
+fdd0 3 962 2995
+fdd3 2 965 2995
+fdd5 5 966 2995
+fdda 12 972 2995
+FUNC fdec f3 8 _create_locale
+fdec 0 605 2995
+fdec 10 609 2995
+fdfc 13 612 2995
+fe0f b 614 2995
+fe1a 4 610 2995
+fe1e c 658 2995
+fe2a 8 617 2995
+fe32 7 619 2995
+fe39 2 621 2995
+fe3b 14 623 2995
+fe4f 7 625 2995
+fe56 7 626 2995
+fe5d 2 628 2995
+fe5f c 630 2995
+fe6b 14 632 2995
+fe7f 7 634 2995
+fe86 7 635 2995
+fe8d 9 637 2995
+fe96 2 640 2995
+fe98 13 642 2995
+feab 8 644 2995
+feb3 7 645 2995
+feba 7 646 2995
+fec1 9 647 2995
+feca 2 648 2995
+fecc 2 650 2995
+fece 5 652 2995
+fed3 5 653 2995
+fed8 7 657 2995
+FUNC fedf 5 8 __create_locale
+fedf 0 665 2995
+fedf 5 666 2995
+FUNC fee4 170 8 setlocale
+fee4 c 791 2995
+fef0 5 792 2995
+fef5 25 797 2995
+ff1a a 799 2995
+ff24 5 801 2995
+ff29 4 806 2995
+ff2d 3 807 2995
+ff30 1b 808 2995
+ff4b 8 818 2995
+ff53 7 819 2995
+ff5a a 820 2995
+ff64 8 822 2995
+ff6c 19 826 2995
+ff85 18 834 2995
+ff9d a 836 2995
+ffa7 8 839 2995
+ffaf 7 840 2995
+ffb6 a 841 2995
+ffc0 7 842 2995
+ffc7 f 846 2995
+ffd6 c 847 2995
+ffe2 18 849 2995
+fffa 5 850 2995
+ffff b 852 2995
+1000a 8 822 2995
+10012 9 823 2995
+1001b 3 852 2995
+1001e 9 853 2995
+10027 2 855 2995
+10029 6 856 2995
+1002f 8 857 2995
+10037 c 860 2995
+10043 3 865 2995
+10046 6 866 2995
+1004c 3 860 2995
+1004f 5 862 2995
+FUNC 10054 15f 14 _wctomb_s_l
+10054 8 56 6128
+1005c 11 57 6128
+1006d 7 60 6128
+10074 2 62 6128
+10076 4 64 6128
+1007a 7 67 6128
+10081 3 69 6128
+10084 23 74 6128
+100a7 b 77 6128
+100b2 c 79 6128
+100be a 81 6128
+100c8 8 83 6128
+100d0 b 85 6128
+100db b 125 6128
+100e6 13 126 6128
+100f9 5 136 6128
+100fe 4 91 6128
+10102 2c 93 6128
+1012e 2 94 6128
+10130 7 96 6128
+10137 6 98 6128
+1013d 15 100 6128
+10152 27 115 6128
+10179 7 129 6128
+10180 2 131 6128
+10182 2 133 6128
+10184 f 117 6128
+10193 10 119 6128
+101a3 b 121 6128
+101ae 5 123 6128
+FUNC 101b3 1b 10 wctomb_s
+101b3 0 144 6128
+101b3 1a 145 6128
+101cd 1 146 6128
+FUNC 101ce 4f c _wctomb_l
+101ce 6 178 6128
+101d4 f 181 6128
+101e3 1f 183 6128
+10202 19 184 6128
+1021b 2 185 6128
+FUNC 1021d 30 8 wctomb
+1021d 4 191 6128
+10221 4 192 6128
+10225 1a 195 6128
+1023f 7 196 6128
+10246 2 197 6128
+10248 3 196 6128
+1024b 2 197 6128
+FUNC 1024d 36 8 _isleadbyte_l
+1024d 6 55 6490
+10253 b 56 6490
+1025e 23 57 6490
+10281 2 58 6490
+FUNC 10283 e 4 isleadbyte
+10283 0 63 6490
+10283 d 64 6490
+10290 1 65 6490
+FUNC 10291 16 8 _iswalpha_l
+10291 0 71 6490
+10291 15 72 6490
+102a6 1 73 6490
+FUNC 102a7 11 4 iswalpha
+102a7 0 78 6490
+102a7 10 79 6490
+102b7 1 80 6490
+FUNC 102b8 13 8 _iswupper_l
+102b8 0 86 6490
+102b8 12 87 6490
+102ca 1 88 6490
+FUNC 102cb e 4 iswupper
+102cb 0 93 6490
+102cb d 94 6490
+102d8 1 95 6490
+FUNC 102d9 13 8 _iswlower_l
+102d9 0 101 6490
+102d9 12 102 6490
+102eb 1 103 6490
+FUNC 102ec e 4 iswlower
+102ec 0 108 6490
+102ec d 109 6490
+102f9 1 110 6490
+FUNC 102fa 13 8 _iswdigit_l
+102fa 0 116 6490
+102fa 12 117 6490
+1030c 1 118 6490
+FUNC 1030d e 4 iswdigit
+1030d 0 123 6490
+1030d d 124 6490
+1031a 1 125 6490
+FUNC 1031b 16 8 _iswxdigit_l
+1031b 0 131 6490
+1031b 15 132 6490
+10330 1 133 6490
+FUNC 10331 11 4 iswxdigit
+10331 0 138 6490
+10331 10 139 6490
+10341 1 140 6490
+FUNC 10342 13 8 _iswspace_l
+10342 0 146 6490
+10342 12 147 6490
+10354 1 148 6490
+FUNC 10355 e 4 iswspace
+10355 0 153 6490
+10355 d 154 6490
+10362 1 155 6490
+FUNC 10363 13 8 _iswpunct_l
+10363 0 161 6490
+10363 12 162 6490
+10375 1 163 6490
+FUNC 10376 e 4 iswpunct
+10376 0 168 6490
+10376 d 169 6490
+10383 1 170 6490
+FUNC 10384 16 8 _iswalnum_l
+10384 0 176 6490
+10384 15 177 6490
+10399 1 178 6490
+FUNC 1039a 11 4 iswalnum
+1039a 0 183 6490
+1039a 10 184 6490
+103aa 1 185 6490
+FUNC 103ab 16 8 _iswprint_l
+103ab 0 191 6490
+103ab 15 192 6490
+103c0 1 193 6490
+FUNC 103c1 11 4 iswprint
+103c1 0 198 6490
+103c1 10 199 6490
+103d1 1 200 6490
+FUNC 103d2 16 8 _iswgraph_l
+103d2 0 206 6490
+103d2 15 207 6490
+103e7 1 208 6490
+FUNC 103e8 11 4 iswgraph
+103e8 0 213 6490
+103e8 10 214 6490
+103f8 1 215 6490
+FUNC 103f9 13 8 _iswcntrl_l
+103f9 0 221 6490
+103f9 12 222 6490
+1040b 1 223 6490
+FUNC 1040c e 4 iswcntrl
+1040c 0 228 6490
+1040c d 229 6490
+10419 1 230 6490
+FUNC 1041a c 4 iswascii
+1041a 0 235 6490
+1041a b 236 6490
+10425 1 237 6490
+FUNC 10426 26 8 _iswcsym_l
+10426 0 243 6490
+10426 21 244 6490
+10447 1 245 6490
+10448 3 244 6490
+1044b 1 245 6490
+FUNC 1044c 21 4 __iswcsym
+1044c 0 250 6490
+1044c 1c 251 6490
+10468 1 252 6490
+10469 3 251 6490
+1046c 1 252 6490
+FUNC 1046d 26 8 _iswcsymf_l
+1046d 0 258 6490
+1046d 21 259 6490
+1048e 1 260 6490
+1048f 3 259 6490
+10492 1 260 6490
+FUNC 10493 21 4 __iswcsymf
+10493 0 265 6490
+10493 1c 266 6490
+104af 1 267 6490
+104b0 3 266 6490
+104b3 1 267 6490
+FUNC 104c0 95 0 _aulldvrm
+104c0 0 45 5113
+104c0 1 47 5113
+104c1 4 79 5113
+104c5 2 80 5113
+104c7 2 81 5113
+104c9 4 82 5113
+104cd 4 83 5113
+104d1 2 84 5113
+104d3 2 85 5113
+104d5 2 86 5113
+104d7 4 87 5113
+104db 2 88 5113
+104dd 2 89 5113
+104df 2 94 5113
+104e1 4 95 5113
+104e5 2 96 5113
+104e7 2 97 5113
+104e9 4 98 5113
+104ed 2 99 5113
+104ef 2 100 5113
+104f1 2 107 5113
+104f3 4 108 5113
+104f7 4 109 5113
+104fb 4 110 5113
+104ff 2 112 5113
+10501 2 113 5113
+10503 2 114 5113
+10505 2 115 5113
+10507 2 116 5113
+10509 2 117 5113
+1050b 2 118 5113
+1050d 2 119 5113
+1050f 4 128 5113
+10513 2 129 5113
+10515 4 130 5113
+10519 2 131 5113
+1051b 2 132 5113
+1051d 2 133 5113
+1051f 4 141 5113
+10523 2 142 5113
+10525 2 143 5113
+10527 4 144 5113
+1052b 2 145 5113
+1052d 1 147 5113
+1052e 4 148 5113
+10532 4 149 5113
+10536 2 151 5113
+10538 4 160 5113
+1053c 4 161 5113
+10540 2 162 5113
+10542 2 163 5113
+10544 3 164 5113
+10547 2 169 5113
+10549 2 170 5113
+1054b 2 171 5113
+1054d 2 172 5113
+1054f 2 173 5113
+10551 1 179 5113
+10552 3 181 5113
+FUNC 10558 90 0 _local_unwind4
+FUNC 105e8 46 0 _unwind_handler4
+FUNC 1062e 1c 4 _seh_longjmp_unwind4
+FUNC 1064a 17 0 _EH4_CallFilterFunc
+FUNC 10661 19 0 _EH4_TransferToHandler
+FUNC 1067a 1a 0 _EH4_GlobalUnwind
+FUNC 10694 17 8 _EH4_LocalUnwind
+FUNC 106ab 33 0 write_char
+106ab 0 2433 1218
+106ab a 2434 1218
+106b5 2 2437 1218
+106b7 21 2442 1218
+106d8 2 2444 1218
+106da 1 2447 1218
+106db 2 2446 1218
+106dd 1 2447 1218
+FUNC 106de 24 c write_multi_char
+106de 6 2498 1218
+106e4 2 2501 1218
+106e6 e 2500 1218
+106f4 5 2501 1218
+106f9 7 2499 1218
+10700 2 2504 1218
+FUNC 10702 4a 4 write_string
+10702 0 2563 1218
+10702 12 2564 1218
+10714 6 2566 1218
+1071a 2 2567 1218
+1071c e 2570 1218
+1072a 5 2571 1218
+1072f a 2573 1218
+10739 9 2574 1218
+10742 9 2569 1218
+1074b 1 2579 1218
+FUNC 1074c 9b0 10 _output_s_l
+1074c 1b 975 1218
+10767 45 1036 1218
+107ac 2d 1031 1218
+107d9 b1 1033 1218
+1088a 8 1036 1218
+10892 28 1073 1218
+108ba 17 1078 1218
+108d1 e 1079 1218
+108df 11 1124 1218
+108f0 12 1131 1218
+10902 2 1171 1218
+10904 13 1173 1218
+10917 3 1174 1218
+1091a 5 1175 1218
+1091f 1e 1179 1218
+1093d 3 1193 1218
+10940 5 1194 1218
+10945 4 1181 1218
+10949 5 1182 1218
+1094e 4 1184 1218
+10952 5 1185 1218
+10957 7 1190 1218
+1095e 5 1191 1218
+10963 4 1187 1218
+10967 5 1196 1218
+1096c 5 1200 1218
+10971 9 1206 1218
+1097a b 1233 1218
+10985 4 1235 1218
+10989 3 1236 1218
+1098c 5 1239 1218
+10991 10 1241 1218
+109a1 5 1243 1218
+109a6 4 1248 1218
+109aa 5 1249 1218
+109af 5 1253 1218
+109b4 9 1259 1218
+109bd b 1284 1218
+109c8 4 1285 1218
+109cc 5 1287 1218
+109d1 10 1289 1218
+109e1 5 1291 1218
+109e6 18 1295 1218
+109fe 7 1362 1218
+10a05 5 1363 1218
+10a0a 5 1301 1218
+10a0f 1 1303 1218
+10a10 a 1304 1218
+10a1a 5 1306 1218
+10a1f 4 1308 1218
+10a23 5 1310 1218
+10a28 4 1358 1218
+10a2c 5 1359 1218
+10a31 c 1322 1218
+10a3d 2 1324 1218
+10a3f f 1325 1218
+10a4e a 1327 1218
+10a58 2 1329 1218
+10a5a a 1330 1218
+10a64 5 1332 1218
+10a69 30 1337 1218
+10a99 4 1352 1218
+10a9d 4 1154 1218
+10aa1 10 1158 1218
+10ab1 11 1160 1218
+10ac2 3 1161 1218
+10ac5 b 1163 1218
+10ad0 b 1166 1218
+10adb 5 1167 1218
+10ae0 32 1378 1218
+10b12 d 1716 1218
+10b1f 4 1724 1218
+10b23 18 1749 1218
+10b3b c 1750 1218
+10b47 8 1381 1218
+10b4f 9 1385 1218
+10b58 8 1561 1218
+10b60 7 1562 1218
+10b67 d 1584 1218
+10b74 3 1589 1218
+10b77 15 1635 1218
+10b8c 4 1636 1218
+10b90 8 1637 1218
+10b98 f 1639 1218
+10ba7 1d 1378 1218
+10bc4 12 1448 1218
+10bd6 16 1467 1218
+10bec 4 1470 1218
+10bf0 7 1471 1218
+10bf7 2 1472 1218
+10bf9 6 1499 1218
+10bff 7 1500 1218
+10c06 6 1503 1218
+10c0c 5 1506 1218
+10c11 5 1523 1218
+10c16 e 1541 1218
+10c24 6 1546 1218
+10c2a d 1548 1218
+10c37 7 1549 1218
+10c3e 5 1550 1218
+10c43 4 1551 1218
+10c47 5 1553 1218
+10c4c 8 1543 1218
+10c54 7 1544 1218
+10c5b 5 1557 1218
+10c60 34 1378 1218
+10c94 9 1908 1218
+10c9d 9 1910 1218
+10ca6 8 1668 1218
+10cae d 1688 1218
+10cbb 6 1702 1218
+10cc1 7 1703 1218
+10cc8 2 1704 1218
+10cca 5 1706 1218
+10ccf 7 1708 1218
+10cd6 5 1710 1218
+10cdb 4 1864 1218
+10cdf 7 1869 1218
+10ce6 c 1933 1218
+10cf2 8 1939 1218
+10cfa 5 1958 1218
+10cff 7 1751 1218
+10d06 9 1752 1218
+10d0f 5 1753 1218
+10d14 3 1754 1218
+10d17 9 1756 1218
+10d20 f 1759 1218
+10d2f 2 1760 1218
+10d31 15 1765 1218
+10d46 8 1767 1218
+10d4e e 1809 1218
+10d5c 27 1828 1218
+10d83 14 1838 1218
+10d97 15 1840 1218
+10dac a 1844 1218
+10db6 15 1846 1218
+10dcb 5 1852 1218
+10dd0 7 1853 1218
+10dd7 4 1854 1218
+10ddb 1 1857 1218
+10ddc 5 1859 1218
+10de1 3 1877 1218
+10de4 3 1887 1218
+10de7 2 1888 1218
+10de9 1a 1378 1218
+10e03 7 1892 1218
+10e0a 11 1897 1218
+10e1b c 1900 1218
+10e27 7 1901 1218
+10e2e 5 1903 1218
+10e33 5 1961 1218
+10e38 6 1987 1218
+10e3e 14 2026 1218
+10e52 2 2045 1218
+10e54 5 2051 1218
+10e59 2 2071 1218
+10e5b 3 2074 1218
+10e5e 6 2080 1218
+10e64 2 2099 1218
+10e66 5 2105 1218
+10e6b f 2128 1218
+10e7a 7 2129 1218
+10e81 7 2130 1218
+10e88 c 2136 1218
+10e94 2 2142 1218
+10e96 6 2148 1218
+10e9c 7 2149 1218
+10ea3 2 2150 1218
+10ea5 4 2151 1218
+10ea9 a 2152 1218
+10eb3 3 2153 1218
+10eb6 6 2157 1218
+10ebc 3 2158 1218
+10ebf 6 2163 1218
+10ec5 10 2165 1218
+10ed5 10 2166 1218
+10ee5 c 2168 1218
+10ef1 3 2170 1218
+10ef4 3 2172 1218
+10ef7 2 2173 1218
+10ef9 8 2175 1218
+10f01 1 2176 1218
+10f02 19 2180 1218
+10f1b 9 2181 1218
+10f24 1 2182 1218
+10f25 2 2185 1218
+10f27 7 1640 1218
+10f2e 2 1641 1218
+10f30 4 1640 1218
+10f34 5 1642 1218
+10f39 2 1644 1218
+10f3b 4 1645 1218
+10f3f 8 1646 1218
+10f47 5 1647 1218
+10f4c 6 1648 1218
+10f52 1 1649 1218
+10f53 4 1648 1218
+10f57 6 1650 1218
+10f5d a 2201 1218
+10f67 7 2204 1218
+10f6e 6 2205 1218
+10f74 4 2207 1218
+10f78 2 2208 1218
+10f7a 4 2210 1218
+10f7e 4 2212 1218
+10f82 2 2213 1218
+10f84 4 2215 1218
+10f88 4 2217 1218
+10f8c 7 2218 1218
+10f93 9 2224 1218
+10f9c 6 2228 1218
+10fa2 11 2230 1218
+10fb3 11 2234 1218
+10fc4 d 2236 1218
+10fd1 f 2238 1218
+10fe0 d 2243 1218
+10fed 3 2249 1218
+10ff0 3 2250 1218
+10ff3 1e 2252 1218
+11011 9 2253 1218
+1101a 18 2257 1218
+11032 2 1690 1218
+11034 4 2254 1218
+11038 2 2259 1218
+1103a d 2260 1218
+11047 c 2290 1218
+11053 f 2292 1218
+11062 6 2297 1218
+11068 8 2298 1218
+11070 1b 2299 1218
+1108b 17 1125 1218
+110a2 2 1690 1218
+110a4 f 2310 1218
+110b3 10 2376 1218
+110c3 39 2377 1218
+FUNC 110fc 129 10 _validate_param_reuseA
+110fc 3 606 1271
+110ff 1c 610 1271
+1111b f 617 1271
+1112a 11 618 1271
+1113b 10 620 1271
+1114b 36 629 1271
+11181 46 632 1271
+111c7 2 633 1271
+111c9 17 639 1271
+111e0 c 645 1271
+111ec 2c 626 1271
+11218 b 614 1271
+11223 2 646 1271
+FUNC 11225 33 0 write_char
+11225 0 2433 1271
+11225 a 2434 1271
+1122f 2 2437 1271
+11231 21 2442 1271
+11252 2 2444 1271
+11254 1 2447 1271
+11255 2 2446 1271
+11257 1 2447 1271
+FUNC 11258 24 c write_multi_char
+11258 6 2498 1271
+1125e 2 2501 1271
+11260 e 2500 1271
+1126e 5 2501 1271
+11273 7 2499 1271
+1127a 2 2504 1271
+FUNC 1127c 4a 4 write_string
+1127c 0 2563 1271
+1127c 12 2564 1271
+1128e 6 2566 1271
+11294 2 2567 1271
+11296 e 2570 1271
+112a4 5 2571 1271
+112a9 a 2573 1271
+112b3 9 2574 1271
+112bc 9 2569 1271
+112c5 1 2579 1271
+FUNC 112c6 10 4 get_crtdouble_arg
+112c6 0 2684 1271
+112c6 f 2685 1271
+112d5 1 2686 1271
+FUNC 112d6 f88 10 _output_p_l
+112d6 1b 975 1271
+112f1 15 986 1271
+11306 b 1007 1271
+11311 2b 2172 1271
+1133c 2c 1031 1271
+11368 9b 1033 1271
+11403 8 1036 1271
+1140b 3 1038 1271
+1140e 3 1041 1271
+11411 3 1043 1271
+11414 11 1046 1271
+11425 7 1061 1271
+1142c 4 1062 1271
+11430 7 1069 1271
+11437 32 1073 1271
+11469 19 1078 1271
+11482 e 1079 1271
+11490 1a 1082 1271
+114aa 6 1084 1271
+114b0 1b 1087 1271
+114cb 5 1089 1271
+114d0 15 1091 1271
+114e5 3 1093 1271
+114e8 2 1095 1271
+114ea 6 1097 1271
+114f0 5 1101 1271
+114f5 c 1103 1271
+11501 7 1104 1271
+11508 e 1106 1271
+11516 1a 1109 1271
+11530 8 1112 1271
+11538 f 1131 1271
+11547 9 1120 1271
+11550 b 1131 1271
+1155b 21 1137 1271
+1157c 5 1145 1271
+11581 16 1173 1271
+11597 3 1174 1271
+1159a 5 1175 1271
+1159f 1f 1179 1271
+115be 7 1193 1271
+115c5 5 1194 1271
+115ca 7 1181 1271
+115d1 5 1182 1271
+115d6 6 1184 1271
+115dc 5 1185 1271
+115e1 a 1190 1271
+115eb 5 1191 1271
+115f0 7 1187 1271
+115f7 5 1196 1271
+115fc 9 1200 1271
+11605 5 1203 1271
+1160a a 1206 1271
+11614 2 1209 1271
+11616 c 1211 1271
+11622 7 1212 1271
+11629 b 1214 1271
+11634 1b 1216 1271
+1164f 8 1219 1271
+11657 12 1221 1271
+11669 9 1274 1271
+11672 5 1275 1271
+11677 c 1228 1271
+11683 b 1233 1271
+1168e 7 1235 1271
+11695 3 1236 1271
+11698 5 1239 1271
+1169d 10 1241 1271
+116ad 5 1243 1271
+116b2 3 1248 1271
+116b5 5 1249 1271
+116ba 5 1253 1271
+116bf 5 1256 1271
+116c4 a 1259 1271
+116ce 2 1262 1271
+116d0 c 1264 1271
+116dc 7 1265 1271
+116e3 f 1267 1271
+116f2 c 1280 1271
+116fe b 1284 1271
+11709 4 1285 1271
+1170d 5 1287 1271
+11712 1c 1274 1271
+1172e 10 1289 1271
+1173e 5 1291 1271
+11743 18 1295 1271
+1175b a 1362 1271
+11765 5 1363 1271
+1176a 5 1301 1271
+1176f 1 1303 1271
+11770 d 1304 1271
+1177d 5 1306 1271
+11782 7 1308 1271
+11789 5 1310 1271
+1178e 7 1358 1271
+11795 5 1359 1271
+1179a c 1322 1271
+117a6 2 1324 1271
+117a8 12 1325 1271
+117ba a 1327 1271
+117c4 2 1329 1271
+117c6 d 1330 1271
+117d3 5 1332 1271
+117d8 18 1337 1271
+117f0 3 1352 1271
+117f3 13 1158 1271
+11806 11 1160 1271
+11817 8 1161 1271
+1181f 8 1163 1271
+11827 b 1166 1271
+11832 5 1167 1271
+11837 a 1342 1271
+11841 5 1366 1271
+11846 39 1378 1271
+1187f 9 1716 1271
+11888 7 1724 1271
+1188f 12 1726 1271
+118a1 a 1728 1271
+118ab 27 1739 1271
+118d2 b 1381 1271
+118dd c 1385 1271
+118e9 b 1561 1271
+118f4 a 1562 1271
+118fe d 1584 1271
+1190b 9 1586 1271
+11914 a 1589 1271
+1191e 5 1592 1271
+11923 25 1378 1271
+11948 b 1442 1271
+11953 5 1445 1271
+11958 b 1448 1271
+11963 2 1451 1271
+11965 a 1453 1271
+1196f 27 1457 1271
+11996 5 1458 1271
+1199b a 1462 1271
+119a5 19 1467 1271
+119be 4 1470 1271
+119c2 3 1471 1271
+119c5 2 1472 1271
+119c7 5 1477 1271
+119cc b 1480 1271
+119d7 2 1483 1271
+119d9 a 1485 1271
+119e3 f 1489 1271
+119f2 a 1494 1271
+119fc 6 1499 1271
+11a02 3 1500 1271
+11a05 9 1503 1271
+11a0e 5 1506 1271
+11a13 5 1520 1271
+11a18 a 1523 1271
+11a22 2 1526 1271
+11a24 a 1528 1271
+11a2e 9 1532 1271
+11a37 6 1533 1271
+11a3d 9 1537 1271
+11a46 b 1541 1271
+11a51 9 1546 1271
+11a5a d 1548 1271
+11a67 3 1549 1271
+11a6a 5 1550 1271
+11a6f 3 1551 1271
+11a72 5 1553 1271
+11a77 8 1543 1271
+11a7f 7 1544 1271
+11a86 5 1557 1271
+11a8b 38 1378 1271
+11ac3 14 1908 1271
+11ad7 f 1910 1271
+11ae6 5 1665 1271
+11aeb a 1668 1271
+11af5 2 1671 1271
+11af7 a 1673 1271
+11b01 25 1677 1271
+11b26 5 1678 1271
+11b2b 9 1682 1271
+11b34 9 1688 1271
+11b3d 9 1702 1271
+11b46 7 1703 1271
+11b4d 2 1704 1271
+11b4f 5 1706 1271
+11b54 3 1708 1271
+11b57 5 1710 1271
+11b5c 7 1864 1271
+11b63 7 1869 1271
+11b6a f 1933 1271
+11b79 9 1936 1271
+11b82 e 1939 1271
+11b90 5 1942 1271
+11b95 1c 1739 1271
+11bb1 21 1109 1271
+11bd2 16 1749 1271
+11be8 9 1750 1271
+11bf1 7 1751 1271
+11bf8 3 1767 1271
+11bfb 5 1806 1271
+11c00 9 1809 1271
+11c09 2 1812 1271
+11c0b 5 1753 1271
+11c10 3 1754 1271
+11c13 a 1756 1271
+11c1d f 1759 1271
+11c2c 2 1760 1271
+11c2e 11 1765 1271
+11c3f a 1818 1271
+11c49 6 1821 1271
+11c4f 16 1822 1271
+11c65 26 1828 1271
+11c8b 16 1838 1271
+11ca1 17 1840 1271
+11cb8 a 1844 1271
+11cc2 17 1846 1271
+11cd9 8 1852 1271
+11ce1 a 1853 1271
+11ceb 3 1854 1271
+11cee 3 1857 1271
+11cf1 5 1859 1271
+11cf6 7 1877 1271
+11cfd 7 1887 1271
+11d04 2 1888 1271
+11d06 1a 1378 1271
+11d20 7 1892 1271
+11d27 14 1897 1271
+11d3b c 1900 1271
+11d47 7 1901 1271
+11d4e 5 1903 1271
+11d53 a 1944 1271
+11d5d 2c 1948 1271
+11d89 5 1949 1271
+11d8e 6 1961 1271
+11d94 3 1964 1271
+11d97 6 1970 1271
+11d9d a 1972 1271
+11da7 2c 1976 1271
+11dd3 5 1977 1271
+11dd8 c 1981 1271
+11de4 5 1987 1271
+11de9 4 2019 1271
+11ded 4 2020 1271
+11df1 5 2023 1271
+11df6 b 2026 1271
+11e01 5 2029 1271
+11e06 a 2031 1271
+11e10 f 2035 1271
+11e1f a 2040 1271
+11e29 2 2045 1271
+11e2b 5 2048 1271
+11e30 b 2051 1271
+11e3b 2 2054 1271
+11e3d a 2056 1271
+11e47 b 2060 1271
+11e52 a 2065 1271
+11e5c 2 2071 1271
+11e5e 4 2074 1271
+11e62 5 2077 1271
+11e67 a 2080 1271
+11e71 2 2083 1271
+11e73 a 2085 1271
+11e7d b 2089 1271
+11e88 a 2094 1271
+11e92 2 2099 1271
+11e94 5 2102 1271
+11e99 a 2105 1271
+11ea3 2 2108 1271
+11ea5 a 2110 1271
+11eaf 38 2114 1271
+11ee7 5 2115 1271
+11eec b 2119 1271
+11ef7 13 2128 1271
+11f0a 7 2129 1271
+11f11 a 2130 1271
+11f1b f 2136 1271
+11f2a 2 2142 1271
+11f2c 6 2148 1271
+11f32 7 2149 1271
+11f39 2 2150 1271
+11f3b 7 2151 1271
+11f42 a 2152 1271
+11f4c 3 2153 1271
+11f4f 6 2157 1271
+11f55 3 2158 1271
+11f58 6 2163 1271
+11f5e 10 2165 1271
+11f6e 10 2166 1271
+11f7e c 2168 1271
+11f8a 3 2170 1271
+11f8d 3 2172 1271
+11f90 2 2173 1271
+11f92 8 2175 1271
+11f9a 1 2176 1271
+11f9b 24 2180 1271
+11fbf 9 2181 1271
+11fc8 1 2182 1271
+11fc9 5 2185 1271
+11fce c 1594 1271
+11fda c 1598 1271
+11fe6 9 1603 1271
+11fef e 1635 1271
+11ffd 4 1636 1271
+12001 8 1637 1271
+12009 8 1639 1271
+12011 1c 1598 1271
+1202d 6 1640 1271
+12033 2 1641 1271
+12035 4 1640 1271
+12039 5 1642 1271
+1203e 2 1644 1271
+12040 5 1645 1271
+12045 8 1646 1271
+1204d 5 1647 1271
+12052 6 1648 1271
+12058 1 1649 1271
+12059 4 1648 1271
+1205d 6 1650 1271
+12063 10 2189 1271
+12073 a 2201 1271
+1207d a 2204 1271
+12087 6 2205 1271
+1208d 4 2207 1271
+12091 2 2208 1271
+12093 4 2210 1271
+12097 4 2212 1271
+1209b 2 2213 1271
+1209d 4 2215 1271
+120a1 4 2217 1271
+120a5 7 2218 1271
+120ac 9 2224 1271
+120b5 4 2228 1271
+120b9 11 2230 1271
+120ca 11 2234 1271
+120db 13 2236 1271
+120ee f 2238 1271
+120fd d 2243 1271
+1210a 3 2249 1271
+1210d 3 2250 1271
+12110 1e 2252 1271
+1212e 9 2253 1271
+12137 18 2257 1271
+1214f 2 2310 1271
+12151 4 2254 1271
+12155 2 2259 1271
+12157 d 2260 1271
+12164 f 2290 1271
+12173 f 2292 1271
+12182 6 2297 1271
+12188 8 2298 1271
+12190 15 2299 1271
+121a5 2 1073 1271
+121a7 f 2310 1271
+121b6 b 2314 1271
+121c1 10 2319 1271
+121d1 1d 2321 1271
+121ee 2 2360 1271
+121f0 3 2361 1271
+121f3 2 2362 1271
+121f5 2 2324 1271
+121f7 f 2325 1271
+12206 10 1043 1271
+12216 10 2376 1271
+12226 38 2377 1271
+FUNC 1225e c2 4 _putwch_nolock
+1225e 11 84 4721
+1226f a 89 4721
+12279 9 91 4721
+12282 5 92 4721
+12287 a 96 4721
+12291 6 97 4721
+12297 16 103 4721
+122ad 14 105 4721
+122c1 6 106 4721
+122c7 1c 123 4721
+122e3 1e 129 4721
+12301 2 131 4721
+12303 4 133 4721
+12307 d 134 4721
+12314 a 110 4721
+1231e 2 113 4721
+FUNC 12320 9b 4 _cputws
+12320 c 151 4721
+1232c 5 153 4721
+12331 30 155 4721
+12361 b 157 4721
+1236c 9 158 4721
+12375 3 159 4721
+12378 a 160 4721
+12382 17 162 4721
+12399 4 164 4721
+1239d c 169 4721
+123a9 3 172 4721
+123ac 6 173 4721
+123b2 9 170 4721
+FUNC 123bb 46 4 _putwch
+123bb c 49 4721
+123c7 8 52 4721
+123cf 4 53 4721
+123d3 f 55 4721
+123e2 c 58 4721
+123ee 4 62 4721
+123f2 6 63 4721
+123f8 9 59 4721
+FUNC 12401 113 10 _mbtowc_l
+12401 8 55 6355
+12409 e 56 6355
+12417 4 61 6355
+1241b 7 64 6355
+12422 3 65 6355
+12425 4 59 6355
+12429 2 116 6355
+1242b b 70 6355
+12436 8 73 6355
+1243e 7 75 6355
+12445 7 76 6355
+1244c 11 77 6355
+1245d 13 80 6355
+12470 33 90 6355
+124a3 10 93 6355
+124b3 1b 99 6355
+124ce b 95 6355
+124d9 14 96 6355
+124ed 25 108 6355
+12512 2 111 6355
+FUNC 12514 17 c mbtowc
+12514 0 123 6355
+12514 16 124 6355
+1252a 1 125 6355
+FUNC 1252b 83 10 _lseeki64_nolock
+1252b 5 120 4872
+12530 4 126 4872
+12534 1b 134 4872
+1254f b 136 4872
+1255a 6 138 4872
+12560 22 146 4872
+12582 7 148 4872
+12589 2 149 4872
+1258b 19 152 4872
+125a4 8 153 4872
+125ac 2 154 4872
+FUNC 125ae 119 10 _lseeki64
+125ae c 73 4872
+125ba 9 74 4872
+125c3 24 77 4872
+125e7 2f 78 4872
+12616 46 79 4872
+1265c 7 81 4872
+12663 3 82 4872
+12666 9 84 4872
+1266f 1a 85 4872
+12689 2 86 4872
+1268b b 87 4872
+12696 7 88 4872
+1269d 8 89 4872
+126a5 c 93 4872
+126b1 6 97 4872
+126b7 6 98 4872
+126bd a 94 4872
+FUNC 126c7 7d 8 _set_osfhnd
+126c7 0 213 4825
+126c7 2e 216 4825
+126f5 e 217 4825
+12703 b 218 4825
+1270e 3 226 4825
+12711 2 227 4825
+12713 3 223 4825
+12716 2 224 4825
+12718 9 220 4825
+12721 5 231 4825
+12726 5 232 4825
+1272b b 234 4825
+12736 8 235 4825
+1273e 5 236 4825
+12743 1 238 4825
+FUNC 12744 81 4 _free_osfhnd
+12744 0 263 4825
+12744 38 266 4825
+1277c 9 268 4825
+12785 a 269 4825
+1278f 3 277 4825
+12792 2 278 4825
+12794 3 274 4825
+12797 2 275 4825
+12799 9 271 4825
+127a2 6 282 4825
+127a8 4 283 4825
+127ac b 285 4825
+127b7 7 286 4825
+127be 6 287 4825
+127c4 1 289 4825
+FUNC 127c5 71 4 _get_osfhandle
+127c5 0 312 4825
+127c5 1f 313 4825
+127e4 2 318 4825
+127e6 e 314 4825
+127f4 3d 315 4825
+12831 1 318 4825
+12832 3 317 4825
+12835 1 318 4825
+FUNC 12836 a0 4 __lock_fhandle
+12836 c 437 4825
+12842 17 438 4825
+12859 7 439 4825
+12860 7 444 4825
+12867 8 446 4825
+1286f 3 447 4825
+12872 5 448 4825
+12877 14 449 4825
+1288b 3 453 4825
+1288e 3 455 4825
+12891 c 457 4825
+1289d 5 462 4825
+128a2 1d 464 4825
+128bf 3 467 4825
+128c2 6 468 4825
+128c8 5 457 4825
+128cd 9 458 4825
+FUNC 128d6 22 4 _unlock_fhandle
+128d6 0 489 4825
+128d6 21 490 4825
+128f7 1 491 4825
+FUNC 128f8 19f 0 _alloc_osfhnd
+128f8 c 52 4825
+12904 4 53 4825
+12908 5 56 4825
+1290d c 58 4825
+12919 8 59 4825
+12921 8 61 4825
+12929 3 62 4825
+1292c c 71 4825
+12938 f 77 4825
+12947 17 83 4825
+1295e 6 85 4825
+12964 6 89 4825
+1296a 8 90 4825
+12972 6 91 4825
+12978 6 92 4825
+1297e 14 93 4825
+12992 3 99 4825
+12995 2 101 4825
+12997 3 103 4825
+1299a 9 106 4825
+129a3 6 111 4825
+129a9 a 113 4825
+129b3 6 119 4825
+129b9 7 120 4825
+129c0 5 83 4825
+129c5 6 106 4825
+129cb 9 107 4825
+129d4 6 124 4825
+129da 4 126 4825
+129de 3 127 4825
+129e1 19 128 4825
+129fa 6 137 4825
+12a00 6 71 4825
+12a06 12 145 4825
+12a18 9 151 4825
+12a21 7 152 4825
+12a28 c 154 4825
+12a34 4 155 4825
+12a38 3 156 4825
+12a3b 4 157 4825
+12a3f 4 158 4825
+12a43 8 154 4825
+12a4b 6 165 4825
+12a51 19 166 4825
+12a6a b 167 4825
+12a75 4 171 4825
+12a79 c 178 4825
+12a85 3 186 4825
+12a88 6 187 4825
+12a8e 9 179 4825
+FUNC 12a97 115 8 _open_osfhandle
+12a97 c 343 4825
+12aa3 5 347 4825
+12aa8 2 351 4825
+12aaa 6 353 4825
+12ab0 3 354 4825
+12ab3 8 356 4825
+12abb 3 357 4825
+12abe 6 359 4825
+12ac4 3 360 4825
+12ac7 9 364 4825
+12ad0 4 365 4825
+12ad4 d 367 4825
+12ae1 3 409 4825
+12ae4 6 410 4825
+12aea 5 372 4825
+12aef 5 373 4825
+12af4 5 374 4825
+12af9 3 375 4825
+12afc f 380 4825
+12b0b b 381 4825
+12b16 7 382 4825
+12b1d 2 383 4825
+12b1f 3 385 4825
+12b22 b 391 4825
+12b2d 3 393 4825
+12b30 1a 395 4825
+12b4a 9 396 4825
+12b53 9 397 4825
+12b5c 7 399 4825
+12b63 c 401 4825
+12b6f 10 409 4825
+12b7f 5 401 4825
+12b84 5 402 4825
+12b89 1b 404 4825
+12ba4 8 406 4825
+FUNC 12bac 11e c _calloc_impl
+12bac c 23 5592
+12bb8 9 28 5592
+12bc1 2e 30 5592
+12bef 9 32 5592
+12bf8 4 36 5592
+12bfc 3 37 5592
+12bff 5 41 5592
+12c04 5 43 5592
+12c09 9 46 5592
+12c12 9 50 5592
+12c1b b 52 5592
+12c26 8 56 5592
+12c2e 3 57 5592
+12c31 c 58 5592
+12c3d c 60 5592
+12c49 7 64 5592
+12c50 d 65 5592
+12c5d 4 93 5592
+12c61 11 94 5592
+12c72 c 97 5592
+12c7e f 109 5592
+12c8d b 111 5592
+12c98 6 112 5592
+12c9e 5 113 5592
+12ca3 5 60 5592
+12ca8 9 61 5592
+12cb1 4 100 5592
+12cb5 7 102 5592
+12cbc 6 103 5592
+12cc2 2 105 5592
+12cc4 6 119 5592
+FUNC 12cca 3f 8 calloc
+12cca 4 145 5592
+12cce 5 146 5592
+12cd3 14 147 5592
+12ce7 15 149 5592
+12cfc 8 151 5592
+12d04 3 153 5592
+12d07 2 154 5592
+FUNC 12d09 21b 8 realloc
+12d09 c 64 5338
+12d15 7 69 5338
+12d1c e 70 5338
+12d2a 7 73 5338
+12d31 7 75 5338
+12d38 5 76 5338
+12d3d d 81 5338
+12d4a 5 88 5338
+12d4f 9 89 5338
+12d58 8 91 5338
+12d60 3 92 5338
+12d63 12 96 5338
+12d75 8 100 5338
+12d7d f 102 5338
+12d8c 5 103 5338
+12d91 e 104 5338
+12d9f 4 107 5338
+12da3 10 108 5338
+12db3 9 110 5338
+12dbc a 111 5338
+12dc6 5 118 5338
+12dcb 4 120 5338
+12dcf 6 121 5338
+12dd5 9 123 5338
+12dde 15 124 5338
+12df3 4 127 5338
+12df7 10 128 5338
+12e07 c 129 5338
+12e13 c 135 5338
+12e1f 6 142 5338
+12e25 4 144 5338
+12e29 1 145 5338
+12e2a 9 147 5338
+12e33 14 148 5338
+12e47 6 135 5338
+12e4d 9 137 5338
+12e56 3 148 5338
+12e59 10 158 5338
+12e69 f 181 5338
+12e78 5 186 5338
+12e7d 5 183 5338
+12e82 11 186 5338
+12e93 2 188 5338
+12e95 8 160 5338
+12e9d 5 170 5338
+12ea2 3 167 5338
+12ea5 2 172 5338
+12ea7 6 174 5338
+12ead 2 155 5338
+12eaf 4 321 5338
+12eb3 1 322 5338
+12eb4 12 323 5338
+12ec6 c 332 5338
+12ed2 b 347 5338
+12edd 5 319 5338
+12ee2 7 327 5338
+12ee9 b 328 5338
+12ef4 2 329 5338
+12ef6 6 356 5338
+12efc 5 349 5338
+12f01 5 350 5338
+12f06 4 334 5338
+12f0a 16 341 5338
+12f20 4 343 5338
+FUNC 12f24 79 c _recalloc
+12f24 3 744 5338
+12f27 a 749 5338
+12f31 28 751 5338
+12f59 4 753 5338
+12f5d 9 754 5338
+12f66 b 755 5338
+12f71 b 756 5338
+12f7c a 757 5338
+12f86 10 759 5338
+12f96 5 761 5338
+12f9b 2 762 5338
+FUNC 12f9d 21 0 _get_sbh_threshold
+12f9d 0 61 5281
+12f9d 9 64 5281
+12fa6 2 66 5281
+12fa8 1 81 5281
+12fa9 14 69 5281
+12fbd 1 81 5281
+FUNC 12fbe 46 4 _set_amblksiz
+12fbe 0 214 5281
+12fbe 2b 216 5281
+12fe9 1 224 5281
+12fea 11 217 5281
+12ffb 5 220 5281
+13000 3 223 5281
+13003 1 224 5281
+FUNC 13004 3c 4 _get_amblksiz
+13004 0 243 5281
+13004 27 245 5281
+1302b 1 253 5281
+1302c 8 246 5281
+13034 8 249 5281
+1303c 3 252 5281
+1303f 1 253 5281
+FUNC 13040 48 4 __sbh_heap_init
+13040 0 274 5281
+13040 1c 275 5281
+1305c 1 285 5281
+1305d 4 278 5281
+13061 7 280 5281
+13068 c 281 5281
+13074 13 284 5281
+13087 1 285 5281
+FUNC 13088 2b 4 __sbh_find_block
+13088 0 306 5281
+13088 12 307 5281
+1309a 7 316 5281
+130a1 8 317 5281
+130a9 3 319 5281
+130ac 4 314 5281
+130b0 2 321 5281
+130b2 1 322 5281
+FUNC 130b3 314 8 __sbh_free_block
+130b3 6 381 5281
+130b9 7 399 5281
+130c0 9 402 5281
+130c9 18 407 5281
+130e1 3 408 5281
+130e4 d 412 5281
+130f1 3 416 5281
+130f4 5 417 5281
+130f9 6 420 5281
+130ff b 424 5281
+1310a 4 429 5281
+1310e 5 430 5281
+13113 3 431 5281
+13116 8 434 5281
+1311e 3 439 5281
+13121 b 441 5281
+1312c e 442 5281
+1313a 5 443 5281
+1313f 2 445 5281
+13141 5 448 5281
+13146 11 449 5281
+13157 9 450 5281
+13160 9 455 5281
+13169 15 459 5281
+1317e 6 463 5281
+13184 5 464 5281
+13189 3 465 5281
+1318c f 468 5281
+1319b 3 474 5281
+1319e 6 477 5281
+131a4 b 478 5281
+131af 2 479 5281
+131b1 3 483 5281
+131b4 6 484 5281
+131ba 7 485 5281
+131c1 2 486 5281
+131c3 4 489 5281
+131c7 b 493 5281
+131d2 3 498 5281
+131d5 11 501 5281
+131e6 6 502 5281
+131ec 5 503 5281
+131f1 2 505 5281
+131f3 e 508 5281
+13201 6 509 5281
+13207 6 511 5281
+1320d c 516 5281
+13219 c 517 5281
+13225 8 520 5281
+1322d e 524 5281
+1323b 6 528 5281
+13241 3 529 5281
+13244 6 530 5281
+1324a 3 531 5281
+1324d 6 532 5281
+13253 8 535 5281
+1325b 18 541 5281
+13273 e 542 5281
+13281 f 543 5281
+13290 2 545 5281
+13292 6 547 5281
+13298 10 548 5281
+132a8 13 550 5281
+132bb 5 556 5281
+132c0 4 558 5281
+132c4 b 561 5281
+132cf d 564 5281
+132dc 6 568 5281
+132e2 1a 569 5281
+132fc 15 573 5281
+13311 16 577 5281
+13327 19 578 5281
+13340 9 579 5281
+13349 6 583 5281
+1334f 8 586 5281
+13357 16 589 5281
+1336d 25 595 5281
+13392 14 599 5281
+133a6 4 600 5281
+133aa a 603 5281
+133b4 8 608 5281
+133bc 9 609 5281
+133c5 2 611 5281
+FUNC 133c7 b0 0 __sbh_alloc_new_region
+133c7 0 891 5281
+133c7 13 897 5281
+133da 1e 900 5281
+133f8 4 901 5281
+133fc 12 905 5281
+1340e 9 909 5281
+13417 18 913 5281
+1342f 2 914 5281
+13431 1a 918 5281
+1344b 10 920 5281
+1345b 2 921 5281
+1345d 9 927 5281
+13466 6 930 5281
+1346c 6 933 5281
+13472 4 935 5281
+13476 1 936 5281
+FUNC 13477 106 4 __sbh_alloc_new_group
+13477 5 958 5281
+1347c 3 959 5281
+1347f 9 972 5281
+13488 4 973 5281
+1348c 2 976 5281
+1348e 1 977 5281
+1348f 4 974 5281
+13493 15 981 5281
+134a8 c 986 5281
+134b4 1f 993 5281
+134d3 8 994 5281
+134db 6 998 5281
+134e1 12 1001 5281
+134f3 4 1004 5281
+134f7 7 1005 5281
+134fe 8 1011 5281
+13506 10 1013 5281
+13516 12 1016 5281
+13528 3 1001 5281
+1352b 8 1021 5281
+13533 6 1023 5281
+13539 3 1024 5281
+1353c 6 1027 5281
+13542 3 1028 5281
+13545 5 1030 5281
+1354a a 1031 5281
+13554 9 1032 5281
+1355d b 1033 5281
+13568 e 1036 5281
+13576 5 1038 5281
+1357b 2 1039 5281
+FUNC 1357d 2df c __sbh_resize_block
+1357d 6 1061 5281
+13583 c 1080 5281
+1358f b 1083 5281
+1359a 3 1084 5281
+1359d 12 1085 5281
+135af 7 1089 5281
+135b6 14 1096 5281
+135ca 13 1099 5281
+135dd 7 1105 5281
+135e4 8 1106 5281
+135ec 6 1107 5281
+135f2 8 1110 5281
+135fa 3 1115 5281
+135fd 9 1117 5281
+13606 11 1118 5281
+13617 5 1119 5281
+1361c 2 1121 5281
+1361e 5 1124 5281
+13623 14 1125 5281
+13637 6 1126 5281
+1363d 9 1131 5281
+13646 9 1132 5281
+1364f 12 1135 5281
+13661 a 1141 5281
+1366b 9 1142 5281
+13674 3 1143 5281
+13677 9 1147 5281
+13680 6 1148 5281
+13686 6 1149 5281
+1368c 3 1150 5281
+1368f 6 1151 5281
+13695 8 1154 5281
+1369d 18 1160 5281
+136b5 e 1161 5281
+136c3 6 1162 5281
+136c9 2 1164 5281
+136cb 6 1166 5281
+136d1 10 1167 5281
+136e1 13 1169 5281
+136f4 c 1174 5281
+13700 9 1176 5281
+13709 6 1180 5281
+1370f 9 1182 5281
+13718 7 1100 5281
+1371f 6 1186 5281
+13725 3 1189 5281
+13728 d 1195 5281
+13735 7 1198 5281
+1373c b 1199 5281
+13747 3 1200 5281
+1374a a 1203 5281
+13754 7 1208 5281
+1375b 5 1209 5281
+13760 3 1210 5281
+13763 8 1213 5281
+1376b 3 1218 5281
+1376e b 1221 5281
+13779 e 1222 5281
+13787 5 1223 5281
+1378c 2 1225 5281
+1378e 5 1228 5281
+13793 11 1229 5281
+137a4 9 1231 5281
+137ad 9 1236 5281
+137b6 9 1237 5281
+137bf 9 1240 5281
+137c8 4 1241 5281
+137cc 5 1242 5281
+137d1 3 1243 5281
+137d4 6 1249 5281
+137da 3 1250 5281
+137dd 6 1251 5281
+137e3 3 1252 5281
+137e6 6 1253 5281
+137ec 8 1256 5281
+137f4 18 1262 5281
+1380c e 1263 5281
+1381a 6 1264 5281
+13820 2 1266 5281
+13822 6 1268 5281
+13828 10 1269 5281
+13838 13 1271 5281
+1384b 5 1276 5281
+13850 4 1278 5281
+13854 6 1281 5281
+1385a 2 1282 5281
+FUNC 1385c cd 0 __sbh_heapmin
+1385c 0 1302 5281
+1385c d 1306 5281
+13869 6 1310 5281
+1386f 17 1311 5281
+13886 15 1314 5281
+1389b 16 1318 5281
+138b1 19 1319 5281
+138ca 9 1320 5281
+138d3 f 1325 5281
+138e2 11 1328 5281
+138f3 28 1333 5281
+1391b 6 1334 5281
+13921 7 1338 5281
+13928 1 1340 5281
+FUNC 13929 2e2 0 __sbh_heap_check
+13929 3 1361 5281
+1392c 12 1391 5281
+1393e 8 1393 5281
+13946 16 1398 5281
+1395c 3 1401 5281
+1395f 8 1402 5281
+13967 6 1406 5281
+1396d 9 1407 5281
+13976 c 1408 5281
+13982 3 1409 5281
+13985 3 1410 5281
+13988 6 1411 5281
+1398e 4 1418 5281
+13992 1b 1421 5281
+139ad 9 1424 5281
+139b6 9 1428 5281
+139bf 1c 1438 5281
+139db 2 1445 5281
+139dd 7 1446 5281
+139e4 1 1449 5281
+139e5 c 1452 5281
+139f1 3 1456 5281
+139f4 2 1458 5281
+139f6 6 1462 5281
+139fc 5 1463 5281
+13a01 3 1464 5281
+13a04 9 1465 5281
+13a0d 1e 1470 5281
+13a2b c 1475 5281
+13a37 2 1479 5281
+13a39 4 1481 5281
+13a3d 6 1484 5281
+13a43 10 1488 5281
+13a53 e 1492 5281
+13a61 2 1498 5281
+13a63 4 1502 5281
+13a67 20 1505 5281
+13a87 19 1509 5281
+13aa0 8 1514 5281
+13aa8 3 1518 5281
+13aab 6 1520 5281
+13ab1 8 1524 5281
+13ab9 4 1527 5281
+13abd e 1532 5281
+13acb 8 1536 5281
+13ad3 6 1541 5281
+13ad9 5 1542 5281
+13ade 3 1543 5281
+13ae1 8 1544 5281
+13ae9 c 1549 5281
+13af5 11 1554 5281
+13b06 6 1559 5281
+13b0c 3 1561 5281
+13b0f e 1563 5281
+13b1d 3 1564 5281
+13b20 2 1566 5281
+13b22 8 1568 5281
+13b2a 3 1569 5281
+13b2d 1c 1575 5281
+13b49 c 1580 5281
+13b55 10 1585 5281
+13b65 17 1591 5281
+13b7c 7 1595 5281
+13b83 7 1596 5281
+13b8a 16 1597 5281
+13ba0 f 1602 5281
+13baf 18 1606 5281
+13bc7 5 1608 5281
+13bcc 2 1609 5281
+13bce 4 1403 5281
+13bd2 4 1425 5281
+13bd6 4 1453 5281
+13bda 4 1485 5281
+13bde 4 1471 5281
+13be2 4 1439 5281
+13be6 4 1493 5281
+13bea 4 1537 5281
+13bee 4 1545 5281
+13bf2 4 1550 5281
+13bf6 4 1510 5281
+13bfa 4 1581 5281
+13bfe 4 1576 5281
+13c02 4 1592 5281
+13c06 5 1603 5281
+FUNC 13c0b a8 4 _set_sbh_threshold
+13c0b 1 102 5281
+13c0c a 104 5281
+13c16 3 106 5281
+13c19 1 195 5281
+13c1a a 109 5281
+13c24 25 112 5281
+13c49 5 113 5281
+13c4e 4 114 5281
+13c52 2 195 5281
+13c54 6 173 5281
+13c5a 2 175 5281
+13c5c 5 179 5281
+13c61 2d 185 5281
+13c8e 6 186 5281
+13c94 a 187 5281
+13c9e 5 188 5281
+13ca3 b 193 5281
+13cae 4 194 5281
+13cb2 1 195 5281
+FUNC 13cb3 2e3 4 __sbh_alloc_block
+13cb3 6 632 5281
+13cb9 5 633 5281
+13cbe 15 650 5281
+13cd3 5 668 5281
+13cd8 7 669 5281
+13cdf 5 671 5281
+13ce4 4 672 5281
+13ce8 2 674 5281
+13cea d 677 5281
+13cf7 a 682 5281
+13d01 e 686 5281
+13d0f 3 688 5281
+13d12 2 683 5281
+13d14 5 688 5281
+13d19 4 692 5281
+13d1d 8 694 5281
+13d25 e 698 5281
+13d33 3 700 5281
+13d36 2 695 5281
+13d38 5 700 5281
+13d3d 6 705 5281
+13d43 6 709 5281
+13d49 6 711 5281
+13d4f 4 707 5281
+13d53 4 715 5281
+13d57 8 717 5281
+13d5f 6 720 5281
+13d65 3 722 5281
+13d68 2 718 5281
+13d6a 5 722 5281
+13d6f 4 726 5281
+13d73 e 727 5281
+13d81 7 728 5281
+13d88 12 733 5281
+13d9a 2 734 5281
+13d9c 6 737 5281
+13da2 3 739 5281
+13da5 2 740 5281
+13da7 1c 745 5281
+13dc3 4 749 5281
+13dc7 14 751 5281
+13ddb e 752 5281
+13de9 3 751 5281
+13dec 12 754 5281
+13dfe a 760 5281
+13e08 d 763 5281
+13e15 2 768 5281
+13e17 2 767 5281
+13e19 1 768 5281
+13e1a 4 765 5281
+13e1e 7 770 5281
+13e25 5 775 5281
+13e2a 6 776 5281
+13e30 8 777 5281
+13e38 3 778 5281
+13e3b 8 781 5281
+13e43 8 784 5281
+13e4b 3 788 5281
+13e4e e 791 5281
+13e5c 15 792 5281
+13e71 8 793 5281
+13e79 2 795 5281
+13e7b f 798 5281
+13e8a f 799 5281
+13e99 e 800 5281
+13ea7 1c 809 5281
+13ec3 6 813 5281
+13ec9 3 814 5281
+13ecc 6 815 5281
+13ed2 3 816 5281
+13ed5 6 817 5281
+13edb 8 820 5281
+13ee3 18 826 5281
+13efb b 827 5281
+13f06 10 829 5281
+13f16 2 831 5281
+13f18 6 833 5281
+13f1e d 835 5281
+13f2b 16 837 5281
+13f41 3 831 5281
+13f44 4 844 5281
+13f48 2 846 5281
+13f4a 9 848 5281
+13f53 a 853 5281
+13f5d 4 855 5281
+13f61 e 858 5281
+13f6f 13 862 5281
+13f82 7 863 5281
+13f89 5 866 5281
+13f8e 6 868 5281
+13f94 2 869 5281
+FUNC 13f96 72 4 _fclose_nolock
+13f96 2 86 1752
+13f98 2a 90 1752
+13fc2 6 96 1752
+13fc8 6 105 1752
+13fce 8 106 1752
+13fd6 13 108 1752
+13fe9 5 109 1752
+13fee 7 111 1752
+13ff5 7 120 1752
+13ffc 3 121 1752
+13fff 3 126 1752
+14002 5 127 1752
+14007 1 128 1752
+FUNC 14008 7c 4 fclose
+14008 c 44 1752
+14014 4 45 1752
+14018 2d 47 1752
+14045 6 50 1752
+1404b 3 51 1752
+1404e 3 64 1752
+14051 6 65 1752
+14057 7 55 1752
+1405e 3 56 1752
+14061 a 57 1752
+1406b 11 59 1752
+1407c 8 60 1752
+FUNC 14084 d 8 _ValidateRead(void const *,unsigned int)
+14084 0 63 5683
+14084 3 64 5683
+14087 7 65 5683
+1408e 2 68 5683
+14090 1 71 5683
+FUNC 14091 d 8 _ValidateWrite(void *,unsigned int)
+14091 0 74 5683
+14091 3 75 5683
+14094 7 76 5683
+1409b 2 79 5683
+1409d 1 82 5683
+FUNC 1409e d 4 _ValidateExecute(int (*)(void))
+1409e 0 85 5683
+1409e 3 86 5683
+140a1 7 87 5683
+140a8 2 90 5683
+140aa 1 93 5683
+FUNC 140ab f3 0 abort
+140ab 1b 53 4119
+140c6 a 56 4119
+140d0 8 59 4119
+140d8 5 68 4119
+140dd 4 69 4119
+140e1 8 71 4119
+140e9 d 78 4119
+140f6 6 87 4119
+140fc 6 88 4119
+14102 6 89 4119
+14108 3 90 4119
+1410b 3 91 4119
+1410e 3 92 4119
+14111 7 93 4119
+14118 7 94 4119
+1411f 4 95 4119
+14123 4 96 4119
+14127 4 97 4119
+1412b 4 98 4119
+1412f 1 99 4119
+14130 6 100 4119
+14136 6 106 4119
+1413c 19 107 4119
+14155 3 109 4119
+14158 13 117 4119
+1416b 9 122 4119
+14174 3 123 4119
+14177 15 126 4119
+1418c a 128 4119
+14196 8 137 4119
+FUNC 1419e 1e 8 _set_abort_behavior
+1419e 0 158 4119
+1419e 1d 160 4119
+141bb 1 162 4119
+FUNC 141bc 20 0 _global_unwind2
+FUNC 141dc 45 0 __unwind_handler
+FUNC 14221 84 0 _local_unwind2
+FUNC 142a5 23 0 _abnormal_termination
+FUNC 142c8 9 0 _NLG_Notify1
+FUNC 142d1 1f 0 _NLG_Notify
+PUBLIC 142e8 0 _NLG_Dispatch2
+FUNC 142f0 3 0 _NLG_Call
+PUBLIC 142f2 0 _NLG_Return2
+FUNC 142f3 a3 4 _msize
+142f3 c 43 5383
+142ff 2d 47 5383
+1432c 9 51 5383
+14335 8 55 5383
+1433d 3 56 5383
+14340 e 57 5383
+1434e e 59 5383
+1435c c 61 5383
+14368 5 64 5383
+1436d 10 88 5383
+1437d 2 91 5383
+1437f 6 93 5383
+14385 8 61 5383
+1438d 9 62 5383
+FUNC 14396 6 0 HeapManager::Block::Block()
+14396 6 90 5771
+FUNC 1439c 1b 8 HeapManager::Constructor(void * (*)(unsigned int),void (*)(void *))
+1439c 6 100 5771
+143a2 7 101 5771
+143a9 5 102 5771
+143ae 3 103 5771
+143b1 3 104 5771
+143b4 3 105 5771
+FUNC 143b7 26 0 HeapManager::Destructor()
+143b7 9 110 5771
+143c0 2 111 5771
+143c2 5 113 5771
+143c7 15 115 5771
+143dc 1 118 5771
+FUNC 143dd 63 0 UnDecorator::getNumberOfDimensions()
+143dd 0 1663 5771
+143dd c 1664 5771
+143e9 2 1665 5771
+143eb 1 1696 5771
+143ec a 1666 5771
+143f6 d 1667 5771
+14403 1 1696 5771
+14404 4 1670 5771
+14408 4 1677 5771
+1440c a 1679 5771
+14416 6 1680 5771
+1441c d 1684 5771
+14429 5 1675 5771
+1442e e 1690 5771
+1443c 3 1691 5771
+1443f 1 1696 5771
+FUNC 14440 474 0 UnDecorator::getTypeEncoding()
+14440 f 2335 5771
+1444f 2 2336 5771
+14451 5 2341 5771
+14456 9 2345 5771
+1445f c 2351 5771
+1446b 9 2423 5771
+14474 2 2426 5771
+14476 2a 2427 5771
+144a0 8 2450 5771
+144a8 2 2451 5771
+144aa 24 2454 5771
+144ce 7 2462 5771
+144d5 5 2463 5771
+144da 6 2353 5771
+144e0 8 2358 5771
+144e8 b 2362 5771
+144f3 5 2363 5771
+144f8 2 2364 5771
+144fa 5 2365 5771
+144ff 9 2369 5771
+14508 1b 2373 5771
+14523 11 2377 5771
+14534 a 2393 5771
+1453e 10 2388 5771
+1454e 2 2389 5771
+14550 18 2384 5771
+14568 2 2385 5771
+1456a 12 2380 5771
+1457c 16 2399 5771
+14592 11 2418 5771
+145a3 a 2406 5771
+145ad 5 2407 5771
+145b2 15 2410 5771
+145c7 5 2422 5771
+145cc 1b 2427 5771
+145e7 a 2430 5771
+145f1 5 2431 5771
+145f6 7 2472 5771
+145fd a 2478 5771
+14607 c 2483 5771
+14613 5 2485 5771
+14618 5 2486 5771
+1461d 5 2487 5771
+14622 5 2490 5771
+14627 5 2505 5771
+1462c 5 2508 5771
+14631 5 2509 5771
+14636 5 2434 5771
+1463b 5 2435 5771
+14640 1a 2427 5771
+1465a 30 2568 5771
+1468a 5 2529 5771
+1468f 4 2530 5771
+14693 a 2531 5771
+1469d 2 2532 5771
+1469f a 2533 5771
+146a9 5 2537 5771
+146ae 5 2538 5771
+146b3 2 2539 5771
+146b5 5 2540 5771
+146ba e 2544 5771
+146c8 6 2560 5771
+146ce 10 2555 5771
+146de 2 2556 5771
+146e0 18 2551 5771
+146f8 2 2552 5771
+146fa 12 2547 5771
+1470c 2 2564 5771
+1470e a 2442 5771
+14718 2 2443 5771
+1471a a 2438 5771
+14724 2 2439 5771
+14726 5 2445 5771
+1472b c 2574 5771
+14737 14 2577 5771
+1474b a 2579 5771
+14755 18 2586 5771
+1476d 1a 2589 5771
+14787 1b 2590 5771
+147a2 5 2591 5771
+147a7 1a 2594 5771
+147c1 1b 2595 5771
+147dc 5 2596 5771
+147e1 1a 2599 5771
+147fb 10 2600 5771
+1480b 2 2601 5771
+1480d 7 2604 5771
+14814 2 2605 5771
+14816 a 2608 5771
+14820 2 2609 5771
+14822 a 2612 5771
+1482c 2 2613 5771
+1482e a 2616 5771
+14838 2 2617 5771
+1483a a 2620 5771
+14844 2 2621 5771
+14846 a 2624 5771
+14850 7 2634 5771
+14857 7 2635 5771
+1485e 7 2637 5771
+14865 10 2639 5771
+14875 3f 2648 5771
+FUNC 148b4 b 0 UnDecorator::doUnderScore()
+148b4 b 4259 5771
+FUNC 148bf d 0 UnDecorator::doMSKeywords()
+148bf d 4260 5771
+FUNC 148cc e 0 UnDecorator::doPtr64()
+148cc e 4261 5771
+FUNC 148da e 0 UnDecorator::doFunctionReturns()
+148da e 4262 5771
+FUNC 148e8 e 0 UnDecorator::doAllocationModel()
+148e8 e 4263 5771
+FUNC 148f6 e 0 UnDecorator::doAllocationLanguage()
+148f6 e 4264 5771
+FUNC 14904 12 0 UnDecorator::doThisTypes()
+14904 12 4271 5771
+FUNC 14916 e 0 UnDecorator::doAccessSpecifiers()
+14916 e 4272 5771
+FUNC 14924 e 0 UnDecorator::doThrowTypes()
+14924 e 4273 5771
+FUNC 14932 e 0 UnDecorator::doMemberTypes()
+14932 e 4274 5771
+FUNC 14940 b 0 UnDecorator::doNameOnly()
+14940 b 4279 5771
+FUNC 1494b b 0 UnDecorator::doTypeOnly()
+1494b b 4280 5771
+FUNC 14956 b 0 UnDecorator::haveTemplateParameters()
+14956 b 4281 5771
+FUNC 14961 e 0 UnDecorator::doEcsu()
+14961 e 4282 5771
+FUNC 1496f b 0 UnDecorator::doNoIdentCharCheck()
+1496f b 4283 5771
+FUNC 1497a e 0 UnDecorator::doEllipsis()
+1497a e 4284 5771
+FUNC 14988 19 4 UnDecorator::UScore(Tokens)
+14988 0 4288 5771
+14988 9 4293 5771
+14991 d 4294 5771
+1499e 2 4296 5771
+149a0 1 4298 5771
+FUNC 149a1 84 8 HeapManager::getMemory(unsigned int,int)
+149a1 2 134 5804
+149a3 a 137 5804
+149ad 9 139 5804
+149b6 6 140 5804
+149bc 4 146 5804
+149c0 3 147 5804
+149c3 8 149 5804
+149cb 7 153 5804
+149d2 2 154 5804
+149d4 1c 159 5804
+149f0 4 164 5804
+149f4 7 168 5804
+149fb 2 169 5804
+149fd 2 170 5804
+149ff 3 171 5804
+14a02 8 175 5804
+14a0a 2 182 5804
+14a0c 4 179 5804
+14a10 5 183 5804
+14a15 d 187 5804
+14a22 3 190 5804
+FUNC 14a25 d 0 DName::DName()
+14a25 2 210 5804
+14a27 3 211 5804
+14a2a 7 220 5804
+14a31 1 221 5804
+FUNC 14a32 12 4 DName::DName(DNameNode *)
+14a32 2 224 5804
+14a34 4 225 5804
+14a38 9 234 5804
+14a41 3 235 5804
+FUNC 14a44 9c 4 DName::DName(DName const &)
+14a44 2 259 5804
+14a46 17 260 5804
+14a5d 10 261 5804
+14a6d d 262 5804
+14a7a d 263 5804
+14a87 10 264 5804
+14a97 4 265 5804
+14a9b e 266 5804
+14aa9 13 267 5804
+14abc 10 268 5804
+14acc 11 269 5804
+14add 3 270 5804
+FUNC 14ae0 a 0 DName::status()
+14ae0 a 481 5804
+FUNC 14aea 5 0 DName::clearStatus()
+14aea 5 482 5804
+FUNC 14aef 7 0 DName::setPtrRef()
+14aef 7 484 5804
+FUNC 14af6 a 0 DName::isPtrRef()
+14af6 a 485 5804
+FUNC 14b00 8 0 DName::setIsArray()
+14b00 8 490 5804
+FUNC 14b08 a 0 DName::isArray()
+14b08 a 491 5804
+FUNC 14b12 a 0 DName::isNoTE()
+14b12 a 492 5804
+FUNC 14b1c 8 0 DName::setIsNoTE()
+14b1c 8 493 5804
+FUNC 14b24 a 0 DName::isPinPtr()
+14b24 a 494 5804
+FUNC 14b2e 8 0 DName::setIsPinPtr()
+14b2e 8 495 5804
+FUNC 14b36 a 0 DName::isComArray()
+14b36 a 496 5804
+FUNC 14b40 8 0 DName::setIsComArray()
+14b40 8 497 5804
+FUNC 14b48 a 0 DName::isVCallThunk()
+14b48 a 498 5804
+FUNC 14b52 8 0 DName::setIsVCallThunk()
+14b52 8 499 5804
+FUNC 14b5a 7b 4 DName::operator=(DName const &)
+14b5a 3 879 5804
+14b5d 12 880 5804
+14b6f 17 882 5804
+14b86 d 883 5804
+14b93 d 884 5804
+14ba0 d 885 5804
+14bad 10 886 5804
+14bbd 10 887 5804
+14bcd 5 889 5804
+14bd2 3 897 5804
+FUNC 14bd5 9 0 Replicator::isFull()
+14bd5 9 1001 5804
+FUNC 14bde 25 4 Replicator::operator[](int)
+14bde 0 1028 5804
+14bde 9 1029 5804
+14be7 b 1031 5804
+14bf2 6 1034 5804
+14bf8 5 1032 5804
+14bfd 3 1030 5804
+14c00 3 1036 5804
+FUNC 14c03 d 0 DNameNode::DNameNode()
+14c03 d 1048 5804
+FUNC 14c10 4 0 DNameNode::nextNode()
+14c10 4 1052 5804
+FUNC 14c14 29 4 DNameNode::operator+=(DNameNode *)
+14c14 2 1131 5804
+14c16 8 1132 5804
+14c1e 8 1134 5804
+14c26 b 1139 5804
+14c31 4 1144 5804
+14c35 2 1147 5804
+14c37 3 1148 5804
+14c3a 3 1156 5804
+FUNC 14c3d 16 4 charNode::charNode(char)
+14c3d 16 1166 5804
+FUNC 14c53 4 0 charNode::length()
+14c53 4 1168 5804
+FUNC 14c57 4 0 charNode::getLastChar()
+14c57 4 1170 5804
+FUNC 14c5b 1b 8 charNode::getString(char *,int)
+14c5b 0 1173 5804
+14c5b f 1174 5804
+14c6a 5 1175 5804
+14c6f 2 1176 5804
+14c71 2 1177 5804
+14c73 3 1183 5804
+FUNC 14c76 4 0 pcharNode::length()
+14c76 4 1189 5804
+FUNC 14c7a 2f 4 pDNameNode::pDNameNode(DName *)
+14c7a 2f 1244 5804
+FUNC 14ca9 25 4 DNameStatusNode::DNameStatusNode(DNameStatus)
+14ca9 25 1261 5804
+FUNC 14cce 4 0 DNameStatusNode::length()
+14cce 4 1263 5804
+FUNC 14cd2 d 0 DNameStatusNode::getLastChar()
+14cd2 d 1266 5804
+FUNC 14cdf e 0 und_strlen
+14cdf 0 1283 5804
+14cdf 6 1286 5804
+14ce5 7 1287 5804
+14cec 1 1291 5804
+FUNC 14ced 20 8 und_strncpy
+14ced 0 1295 5804
+14ced 1b 1296 5804
+14d08 4 1299 5804
+14d0c 1 1301 5804
+FUNC 14d0d 25 4 und_strncmp
+14d0d 0 1304 5804
+14d0d 7 1305 5804
+14d14 2 1306 5804
+14d16 1 1315 5804
+14d17 a 1308 5804
+14d21 1 1310 5804
+14d22 1 1311 5804
+14d23 6 1308 5804
+14d29 8 1314 5804
+14d31 1 1315 5804
+FUNC 14d32 33 0 UnDecorator::getDataIndirectType()
+14d32 33 4033 5771
+FUNC 14d65 34 0 UnDecorator::getThisType()
+14d65 34 4034 5771
+FUNC 14d99 13 c operator new(unsigned int,HeapManager &,int)
+14d99 13 131 5804
+FUNC 14dac 56 4 DName::DName(DName *)
+14dac 0 274 5804
+14dac a 275 5804
+14db6 23 277 5804
+14dd9 13 278 5804
+14dec 2 281 5804
+14dee 4 283 5804
+14df2 3 284 5804
+14df5 7 295 5804
+14dfc 6 296 5804
+FUNC 14e02 61 4 DName::DName(DNameStatus)
+14e02 2 457 5804
+14e04 21 458 5804
+14e25 1e 459 5804
+14e43 7 467 5804
+14e4a 9 469 5804
+14e53 a 470 5804
+14e5d 6 472 5804
+FUNC 14e63 17 0 DName::isValid()
+14e63 17 478 5804
+FUNC 14e7a 15 0 DName::isEmpty()
+14e7a 15 479 5804
+FUNC 14e8f 14 0 DName::isUDC()
+14e8f 14 486 5804
+FUNC 14ea3 e 0 DName::setIsUDC()
+14ea3 e 487 5804
+FUNC 14eb1 14 0 DName::isUDTThunk()
+14eb1 14 488 5804
+FUNC 14ec5 25 0 DName::length()
+14ec5 1 502 5804
+14ec6 2 503 5804
+14ec8 a 506 5804
+14ed2 4 507 5804
+14ed6 b 508 5804
+14ee1 5 507 5804
+14ee6 3 510 5804
+14ee9 1 512 5804
+FUNC 14eea 38 0 DName::getLastChar()
+14eea 2 516 5804
+14eec 2 517 5804
+14eee 9 519 5804
+14ef7 6 520 5804
+14efd a 521 5804
+14f07 2 522 5804
+14f09 7 520 5804
+14f10 11 524 5804
+14f21 1 526 5804
+FUNC 14f22 91 8 DName::getString(char *,int)
+14f22 7 530 5804
+14f29 9 531 5804
+14f32 5 535 5804
+14f37 7 537 5804
+14f3e e 538 5804
+14f4c c 544 5804
+14f58 d 550 5804
+14f65 4 553 5804
+14f69 8 555 5804
+14f71 4 561 5804
+14f75 6 565 5804
+14f7b 2 566 5804
+14f7d b 570 5804
+14f88 4 574 5804
+14f8c 2 578 5804
+14f8e 3 579 5804
+14f91 3 586 5804
+14f94 4 553 5804
+14f98 4 590 5804
+14f9c 2 593 5804
+14f9e 6 594 5804
+14fa4 6 595 5804
+14faa 5 599 5804
+14faf 4 601 5804
+FUNC 14fb3 35 4 DName::operator|=(DName const &)
+14fb3 3 832 5804
+14fb6 19 835 5804
+14fcf 13 836 5804
+14fe2 3 840 5804
+14fe5 3 842 5804
+FUNC 14fe8 81 4 DName::operator=(DNameStatus)
+14fe8 2 928 5804
+14fea 10 929 5804
+14ffa 12 937 5804
+1500c 26 945 5804
+15032 6 947 5804
+15038 e 948 5804
+15046 10 933 5804
+15056 d 934 5804
+15063 3 954 5804
+15066 3 956 5804
+FUNC 15069 1e 0 Replicator::Replicator()
+15069 1e 1004 5804
+FUNC 15087 47 4 Replicator::operator+=(DName const &)
+15087 3 1009 5804
+1508a 12 1010 5804
+1509c 20 1012 5804
+150bc 4 1017 5804
+150c0 8 1018 5804
+150c8 3 1022 5804
+150cb 3 1024 5804
+FUNC 150ce 47 0 DNameNode::clone()
+150ce 3 1055 5804
+150d1 43 1056 5804
+15114 1 1057 5804
+FUNC 15115 65 8 pcharNode::pcharNode(char const *,int)
+15115 1 1197 5804
+15116 1f 1200 5804
+15135 c 1201 5804
+15141 8 1205 5804
+15149 c 1207 5804
+15155 a 1210 5804
+1515f b 1211 5804
+1516a 2 1214 5804
+1516c 3 1216 5804
+1516f 4 1217 5804
+15173 7 1220 5804
+FUNC 1517a 12 0 pcharNode::getLastChar()
+1517a 12 1191 5804
+FUNC 1518c 31 8 pcharNode::getString(char *,int)
+1518c 0 1224 5804
+1518c b 1227 5804
+15197 2 1228 5804
+15199 21 1232 5804
+151ba 3 1234 5804
+FUNC 151bd f 0 pDNameNode::length()
+151bd f 1246 5804
+FUNC 151cc f 0 pDNameNode::getLastChar()
+151cc f 1248 5804
+FUNC 151db 1d 8 pDNameNode::getString(char *,int)
+151db 1d 1251 5804
+FUNC 151f8 33 8 DNameStatusNode::getString(char *,int)
+151f8 0 1269 5804
+151f8 b 1272 5804
+15203 2 1273 5804
+15205 23 1277 5804
+15228 3 1279 5804
+FUNC 1522b 73 14 UnDecorator::UnDecorator(char *,char const *,int,char * (*)(long),unsigned long)
+1522b 16 736 5771
+15241 8 737 5771
+15249 5 738 5771
+1524e 9 740 5771
+15257 a 741 5771
+15261 5 745 5771
+15266 2 747 5771
+15268 6 748 5771
+1526e 6 749 5771
+15274 8 754 5771
+1527c 15 755 5771
+15291 d 758 5771
+FUNC 1529e 2f 4 UnDecorator::getReturnType(DName *)
+1529e 3 2906 5771
+152a1 8 2907 5771
+152a9 15 2911 5771
+152be d 2915 5771
+152cb 2 2917 5771
+FUNC 152cd f 0 UnDecorator::getStorageConvention()
+152cd f 4032 5771
+FUNC 152dc 79 4 DName::operator+=(DNameStatus)
+152dc 4 799 5804
+152e0 17 800 5804
+152f7 20 804 5804
+15317 4 807 5804
+1531b 7 809 5804
+15322 6 811 5804
+15328 8 812 5804
+15330 2 815 5804
+15332 3 816 5804
+15335 5 818 5804
+1533a e 819 5804
+15348 7 801 5804
+1534f 3 825 5804
+15352 3 827 5804
+FUNC 15355 68 4 DName::operator=(DName *)
+15355 3 901 5804
+15358 12 902 5804
+1536a 7 903 5804
+15371 29 911 5804
+1539a 6 913 5804
+153a0 c 914 5804
+153ac 2 917 5804
+153ae 9 918 5804
+153b7 3 922 5804
+153ba 3 924 5804
+FUNC 153bd a6 8 DName::doPchar(char const *,int)
+153bd 3 962 5804
+153c0 1e 963 5804
+153de 6 964 5804
+153e4 c 965 5804
+153f0 10 966 5804
+15400 5 970 5804
+15405 23 984 5804
+15428 6 986 5804
+1542e 9 987 5804
+15437 2 988 5804
+15439 1b 977 5804
+15454 c 993 5804
+15460 3 995 5804
+FUNC 15463 26 4 DName::DName(char)
+15463 3 238 5804
+15466 3 244 5804
+15469 7 248 5804
+15470 7 252 5804
+15477 c 253 5804
+15483 6 255 5804
+FUNC 15489 31 4 DName::DName(char const *)
+15489 0 300 5804
+15489 16 312 5804
+1549f 15 313 5804
+154b4 6 315 5804
+FUNC 154ba d0 8 DName::DName(char const * &,char)
+154ba 7 319 5804
+154c1 d 329 5804
+154ce f 333 5804
+154dd 8 334 5804
+154e5 9 342 5804
+154ee 40 343 5804
+1552e b 344 5804
+15539 9 355 5804
+15542 8 359 5804
+1554a 8 361 5804
+15552 9 363 5804
+1555b 3 364 5804
+1555e 2 367 5804
+15560 3 347 5804
+15563 a 378 5804
+1556d 8 380 5804
+15575 6 368 5804
+1557b 7 371 5804
+15582 6 372 5804
+15588 2 375 5804
+FUNC 1558a 69 8 DName::DName(unsigned __int64)
+1558a 15 384 5804
+1559f 3 390 5804
+155a2 a 398 5804
+155ac 4 402 5804
+155b0 13 406 5804
+155c3 3 407 5804
+155c6 c 409 5804
+155d2 e 411 5804
+155e0 13 413 5804
+FUNC 155f3 96 8 DName::DName(__int64)
+155f3 10 416 5804
+15603 26 436 5804
+15629 15 438 5804
+1563e 10 443 5804
+1564e 5 444 5804
+15653 c 446 5804
+1565f 6 448 5804
+15665 4 449 5804
+15669 e 452 5804
+15677 12 453 5804
+FUNC 15689 2e 4 DName::operator+(DNameStatus)
+15689 1 675 5804
+1568a c 676 5804
+15696 9 679 5804
+1569f b 680 5804
+156aa 2 681 5804
+156ac 5 682 5804
+156b1 3 686 5804
+156b4 3 688 5804
+FUNC 156b7 62 4 DName::operator+=(DName const &)
+156b7 2 739 5804
+156b9 f 740 5804
+156c8 13 741 5804
+156db 2 742 5804
+156dd 9 743 5804
+156e6 6 744 5804
+156ec 2 745 5804
+156ee 7 747 5804
+156f5 6 749 5804
+156fb 9 750 5804
+15704 2 751 5804
+15706 d 752 5804
+15713 3 758 5804
+15716 3 760 5804
+FUNC 15719 8b 4 DName::operator+=(DName *)
+15719 2 764 5804
+1571b a 765 5804
+15725 9 766 5804
+1572e 8 767 5804
+15736 10 768 5804
+15746 8 789 5804
+1574e 20 770 5804
+1576e 4 773 5804
+15772 7 775 5804
+15779 6 777 5804
+1577f 8 778 5804
+15787 2 781 5804
+15789 3 782 5804
+1578c 5 784 5804
+15791 d 785 5804
+1579e 3 793 5804
+157a1 3 795 5804
+FUNC 157a4 1c 4 DName::operator=(char)
+157a4 1 847 5804
+157a5 15 854 5804
+157ba 3 856 5804
+157bd 3 858 5804
+FUNC 157c0 2a 4 DName::operator=(char const *)
+157c0 0 862 5804
+157c0 24 869 5804
+157e4 3 873 5804
+157e7 3 875 5804
+FUNC 157ea a6 0 UnDecorator::getCallingConvention()
+157ea 5 2825 5771
+157ef f 2826 5771
+157fe c 2828 5771
+1580a 5 2835 5771
+1580f 1a 2845 5771
+15829 20 2852 5771
+15849 2 2875 5771
+1584b 2 2876 5771
+1584d 2 2871 5771
+1584f 2 2872 5771
+15851 2 2867 5771
+15853 2 2868 5771
+15855 2 2863 5771
+15857 2 2864 5771
+15859 1 2859 5771
+1585a 2 2860 5771
+1585c 13 2855 5771
+1586f e 2891 5771
+1587d 4 2895 5771
+15881 d 2899 5771
+1588e 2 2901 5771
+FUNC 15890 37 0 UnDecorator::getVCallThunkType()
+15890 3 4057 5771
+15893 9 4059 5771
+1589c 5 4066 5771
+158a1 4 4059 5771
+158a5 4 4066 5771
+158a9 6 4061 5771
+158af c 4062 5771
+158bb a 4064 5771
+158c5 2 4170 5771
+FUNC 158c7 51 4 DName::operator+(DName const &)
+158c7 1 639 5804
+158c8 c 640 5804
+158d4 b 643 5804
+158df b 644 5804
+158ea d 645 5804
+158f7 11 646 5804
+15908 2 647 5804
+1590a 8 648 5804
+15912 3 652 5804
+15915 3 654 5804
+FUNC 15918 2e 4 DName::operator+(DName *)
+15918 1 658 5804
+15919 c 659 5804
+15925 9 662 5804
+1592e b 663 5804
+15939 2 664 5804
+1593b 5 665 5804
+15940 3 669 5804
+15943 3 671 5804
+FUNC 15946 6a 4 DName::operator+=(char)
+15946 1 693 5804
+15947 b 694 5804
+15952 9 695 5804
+1595b 6 696 5804
+15961 2 697 5804
+15963 7 699 5804
+1596a 6 701 5804
+15970 2b 702 5804
+1599b 2 703 5804
+1599d c 704 5804
+159a9 4 710 5804
+159ad 3 712 5804
+FUNC 159b0 6c 4 DName::operator+=(char const *)
+159b0 2 716 5804
+159b2 f 717 5804
+159c1 9 718 5804
+159ca 6 719 5804
+159d0 2 720 5804
+159d2 7 722 5804
+159d9 6 724 5804
+159df 28 725 5804
+15a07 2 726 5804
+15a09 d 727 5804
+15a16 3 733 5804
+15a19 3 735 5804
+FUNC 15a1c e0 0 UnDecorator::getArgumentList()
+15a1c 7 3076 5771
+15a23 12 3078 5771
+15a35 29 3081 5771
+15a5e 6 3085 5771
+15a64 4 3086 5771
+15a68 2 3087 5771
+15a6a e 3088 5771
+15a78 6 3093 5771
+15a7e 6 3095 5771
+15a84 5 3100 5771
+15a89 1 3102 5771
+15a8a 11 3106 5771
+15a9b 2 3109 5771
+15a9d 16 3116 5771
+15ab3 19 3121 5771
+15acc 9 3122 5771
+15ad5 17 3126 5771
+15aec b 3132 5771
+15af7 3 3141 5771
+15afa 2 3143 5771
+FUNC 15afc 4f 4 UnDecorator::getVdispMapType(DName const &)
+15afc 6 4230 5771
+15b02 d 4231 5771
+15b0f c 4232 5771
+15b1b 12 4233 5771
+15b2d 9 4234 5771
+15b36 a 4236 5771
+15b40 6 4237 5771
+15b46 3 4238 5771
+15b49 2 4239 5771
+FUNC 15b4b 22 8 operator+(char,DName const &)
+15b4b 22 198 5804
+FUNC 15b6d 22 8 operator+(DNameStatus,DName const &)
+15b6d 22 201 5804
+FUNC 15b8f 22 8 operator+(char const *,DName const &)
+15b8f 22 204 5804
+FUNC 15bb1 2e 4 DName::operator+(char)
+15bb1 1 605 5804
+15bb2 c 606 5804
+15bbe 9 609 5804
+15bc7 b 610 5804
+15bd2 2 611 5804
+15bd4 5 612 5804
+15bd9 3 616 5804
+15bdc 3 618 5804
+FUNC 15bdf 2e 4 DName::operator+(char const *)
+15bdf 1 622 5804
+15be0 c 623 5804
+15bec 9 626 5804
+15bf5 b 627 5804
+15c00 2 628 5804
+15c02 5 629 5804
+15c07 3 633 5804
+15c0a 3 635 5804
+FUNC 15c0d 141 4 UnDecorator::getDimension(bool)
+15c0d 7 1616 5771
+15c14 10 1618 5771
+15c24 e 1620 5771
+15c32 6 1623 5771
+15c38 f 1624 5771
+15c47 8 1625 5771
+15c4f 47 1626 5771
+15c96 4 1629 5771
+15c9a 4 1636 5771
+15c9e 8 1638 5771
+15ca6 20 1639 5771
+15cc6 d 1643 5771
+15cd3 4 1634 5771
+15cd7 b 1649 5771
+15ce2 2 1650 5771
+15ce4 5 1652 5771
+15ce9 13 1653 5771
+15cfc c 1637 5771
+15d08 4 1641 5771
+15d0c a 1653 5771
+15d16 36 1655 5771
+15d4c 2 1659 5771
+FUNC 15d4e d4 0 UnDecorator::getEnumType()
+15d4e 6 2762 5771
+15d54 1a 2766 5771
+15d6e 12 2770 5771
+15d80 5 2774 5771
+15d85 2 2775 5771
+15d87 5 2779 5771
+15d8c 2 2780 5771
+15d8e 5 2786 5771
+15d93 2 2787 5771
+15d95 d 2791 5771
+15da2 1f 2801 5771
+15dc1 1e 2807 5771
+15ddf e 2814 5771
+15ded 4 2795 5771
+15df1 d 2818 5771
+15dfe 24 2820 5771
+FUNC 15e22 c4 0 UnDecorator::getArgumentTypes()
+15e22 3 3035 5771
+15e25 18 3036 5771
+15e3d 9 3046 5771
+15e46 7 3051 5771
+15e4d 13 3052 5771
+15e60 c 3064 5771
+15e6c 36 3058 5771
+15ea2 b 3061 5771
+15ead 21 3039 5771
+15ece 16 3042 5771
+15ee4 2 3072 5771
+FUNC 15ee6 7e 0 UnDecorator::getThrowTypes()
+15ee6 3 3148 5771
+15ee9 e 3149 5771
+15ef7 2 3150 5771
+15ef9 21 3151 5771
+15f1a 1f 3153 5771
+15f39 29 3155 5771
+15f62 2 3157 5771
+FUNC 15f64 125 c UnDecorator::getExtendedDataIndirectType(char &,bool &,int)
+15f64 6 3636 5771
+15f6a 1a 3641 5771
+15f84 1c 3643 5771
+15fa0 a 3669 5771
+15faa 6 3670 5771
+15fb0 b 3672 5771
+15fbb a 3674 5771
+15fc5 21 3675 5771
+15fe6 17 3678 5771
+15ffd a 3680 5771
+16007 6 3689 5771
+1600d 2 3691 5771
+1600f 17 3693 5771
+16026 1e 3700 5771
+16044 6 3663 5771
+1604a 2 3665 5771
+1604c 3 3656 5771
+1604f d 3657 5771
+1605c 2 3659 5771
+1605e 6 3647 5771
+16064 13 3649 5771
+16077 10 3703 5771
+16087 2 3704 5771
+FUNC 16089 15f 4 UnDecorator::getArrayType(DName const &)
+16089 3 3986 5771
+1608c 12 3987 5771
+1609e 7 3989 5771
+160a5 4 3991 5771
+160a9 2 3992 5771
+160ab 4 3994 5771
+160af 9 3995 5771
+160b8 2a 4026 5771
+160e2 2 4028 5771
+160e4 c 3998 5771
+160f0 9 4000 5771
+160f9 d 4001 5771
+16106 35 4005 5771
+1613b b 4009 5771
+16146 4 4010 5771
+1614a 8 4011 5771
+16152 2 4012 5771
+16154 2c 4013 5771
+16180 d 4017 5771
+1618d 9 4018 5771
+16196 12 4019 5771
+161a8 a 4023 5771
+161b2 36 4024 5771
+FUNC 161e8 31 0 UnDecorator::getLexicalFrame()
+161e8 31 4031 5771
+FUNC 16219 12 0 UnDecorator::getDisplacement()
+16219 12 4048 5771
+FUNC 1622b 12 0 UnDecorator::getCallIndex()
+1622b 12 4049 5771
+FUNC 1623d 12 0 UnDecorator::getGuardNumber()
+1623d 12 4050 5771
+FUNC 1624f 150 4 UnDecorator::getVfTableType(DName const &)
+1624f 7 4174 5771
+16256 d 4175 5771
+16263 1d 4178 5771
+16280 2c 4180 5771
+162ac f 4182 5771
+162bb e 4184 5771
+162c9 5 4186 5771
+162ce 11 4188 5771
+162df 2d 4190 5771
+1630c b 4194 5771
+16317 7 4195 5771
+1631e 10 4199 5771
+1632e a 4200 5771
+16338 b 4188 5771
+16343 b 4204 5771
+1634e a 4206 5771
+16358 7 4207 5771
+1635f 9 4209 5771
+16368 a 4216 5771
+16372 6 4217 5771
+16378 2 4220 5771
+1637a 9 4221 5771
+16383 17 4222 5771
+1639a 3 4224 5771
+1639d 2 4226 5771
+FUNC 1639f a0 8 UnDecorator::getStringEncoding(char *,int)
+1639f 6 1447 5771
+163a5 b 1448 5771
+163b0 22 1451 5771
+163d2 6 1456 5771
+163d8 b 1459 5771
+163e3 b 1462 5771
+163ee 13 1464 5771
+16401 c 1466 5771
+1640d 5 1469 5771
+16412 6 1470 5771
+16418 4 1471 5771
+1641c 14 1477 5771
+16430 d 1452 5771
+1643d 2 1478 5771
+FUNC 1643f 50 0 UnDecorator::getSignedDimension()
+1643f 5 1603 5771
+16444 b 1604 5771
+1644f c 1605 5771
+1645b 2 1606 5771
+1645d 23 1608 5771
+16480 d 1611 5771
+1648d 2 1612 5771
+FUNC 1648f 2bb 0 UnDecorator::getTemplateConstant()
+1648f 15 1877 5771
+164a4 f 1884 5771
+164b3 32 1885 5771
+164e5 9 1921 5771
+164ee b 1922 5771
+164f9 20 1924 5771
+16519 12 1931 5771
+1652b e 1932 5771
+16539 3 1937 5771
+1653c 7 1939 5771
+16543 6 1941 5771
+16549 4 1942 5771
+1654d 2 1944 5771
+1654f 4 1945 5771
+16553 2a 1950 5771
+1657d a 1900 5771
+16587 6 1902 5771
+1658d 11 1903 5771
+1659e 1b 1906 5771
+165b9 b 1892 5771
+165c4 6 2034 5771
+165ca 7 1954 5771
+165d1 26 1885 5771
+165f7 b 1990 5771
+16602 c 1991 5771
+1660e 10 1992 5771
+1661e 9 1966 5771
+16627 c 1968 5771
+16633 e 1971 5771
+16641 10 1973 5771
+16651 6 1975 5771
+16657 6 1976 5771
+1665d 3 1980 5771
+16660 29 1981 5771
+16689 a 1983 5771
+16693 a 2001 5771
+1669d a 2003 5771
+166a7 13 2007 5771
+166ba a 2008 5771
+166c4 11 2012 5771
+166d5 13 2015 5771
+166e8 a 2016 5771
+166f2 13 2021 5771
+16705 a 2022 5771
+1670f 13 2026 5771
+16722 d 2029 5771
+1672f 7 1913 5771
+16736 14 2041 5771
+FUNC 1674a d9 8 UnDecorator::getPtrRefDataType(DName const &,int)
+1674a 3 3937 5771
+1674d 11 3940 5771
+1675e b 3944 5771
+16769 12 3948 5771
+1677b 12 3949 5771
+1678d 10 3951 5771
+1679d 5 3957 5771
+167a2 16 3961 5771
+167b8 d 3967 5771
+167c5 c 3968 5771
+167d1 b 3970 5771
+167dc 6 3972 5771
+167e2 1e 3974 5771
+16800 e 3976 5771
+1680e 13 3980 5771
+16821 2 3982 5771
+FUNC 16823 14 4 UnDecorator::getVbTableType(DName const &)
+16823 14 4053 5771
+FUNC 16837 1b8 0 UnDecorator::getTemplateArgumentList()
+16837 14 1775 5771
+1684b c 1777 5771
+16857 7 1778 5771
+1685e 2a 1781 5771
+16888 6 1785 5771
+1688e 4 1786 5771
+16892 2 1787 5771
+16894 e 1788 5771
+168a2 8 1793 5771
+168aa 5 1798 5771
+168af 1 1800 5771
+168b0 11 1804 5771
+168c1 5 1807 5771
+168c6 7 1810 5771
+168cd 7 1816 5771
+168d4 6 1817 5771
+168da 12 1818 5771
+168ec a 1820 5771
+168f6 5 1821 5771
+168fb e 1822 5771
+16909 5 1824 5771
+1690e 9 1830 5771
+16917 c 1832 5771
+16923 e 1835 5771
+16931 10 1837 5771
+16941 6 1839 5771
+16947 1 1840 5771
+16948 2 1842 5771
+1694a 25 1843 5771
+1696f 2 1846 5771
+16971 10 1847 5771
+16981 2 1850 5771
+16983 1f 1851 5771
+169a2 17 1857 5771
+169b9 9 1858 5771
+169c2 16 1862 5771
+169d8 17 1873 5771
+FUNC 169ef 56f 8 UnDecorator::getOperatorName(bool,bool *)
+169ef b 1095 5771
+169fa 53 1103 5771
+16a4d 13 1183 5771
+16a60 c 1439 5771
+16a6c 1d 1440 5771
+16a89 11 1442 5771
+16a9a 5 1444 5771
+16a9f 3 1124 5771
+16aa2 8 1126 5771
+16aaa 21 1127 5771
+16acb c 1129 5771
+16ad7 a 1130 5771
+16ae1 a 1133 5771
+16aeb 7 1135 5771
+16af2 3 1136 5771
+16af5 9 1144 5771
+16afe 5 1145 5771
+16b03 6 1148 5771
+16b09 2 1154 5771
+16b0b 15 1156 5771
+16b20 18 1160 5771
+16b38 1a 1161 5771
+16b52 10 1166 5771
+16b62 b 1167 5771
+16b6d 5 1170 5771
+16b72 6 1106 5771
+16b78 f 1108 5771
+16b87 21 1103 5771
+16ba8 3d 1220 5771
+16be5 18 1240 5771
+16bfd b 1234 5771
+16c08 5 1235 5771
+16c0d 13 1245 5771
+16c20 7 1247 5771
+16c27 8 1249 5771
+16c2f 18 1220 5771
+16c47 13 1255 5771
+16c5a 7 1256 5771
+16c61 2 1257 5771
+16c63 16 1335 5771
+16c79 7 1356 5771
+16c80 6 1350 5771
+16c86 2 1352 5771
+16c88 25 1220 5771
+16cad 13 1290 5771
+16cc0 17 1291 5771
+16cd7 24 1292 5771
+16cfb 14 1313 5771
+16d0f 6 1316 5771
+16d15 5 1317 5771
+16d1a 10 1302 5771
+16d2a 20 1303 5771
+16d4a 20 1304 5771
+16d6a 20 1305 5771
+16d8a 22 1306 5771
+16dac 12 1307 5771
+16dbe c 1296 5771
+16dca 2b 1297 5771
+16df5 13 1281 5771
+16e08 17 1282 5771
+16e1f 1a 1283 5771
+16e39 5 1284 5771
+16e3e 2d 1220 5771
+16e6b 25 1364 5771
+16e90 10 1373 5771
+16ea0 13 1378 5771
+16eb3 a 1397 5771
+16ebd 13 1399 5771
+16ed0 a 1403 5771
+16eda 6 1405 5771
+16ee0 2 1408 5771
+16ee2 13 1410 5771
+16ef5 d 1413 5771
+16f02 5 1415 5771
+16f07 10 1278 5771
+16f17 b 1330 5771
+16f22 5 1428 5771
+16f27 3 1187 5771
+16f2a 13 1216 5771
+16f3d 8 1437 5771
+16f45 19 1438 5771
+FUNC 16f5e 153 4 UnDecorator::getTemplateName(bool)
+16f5e 5 1700 5771
+16f63 1f 1704 5771
+16f82 16 1714 5771
+16f98 1d 1716 5771
+16fb5 23 1725 5771
+16fd8 e 1729 5771
+16fe6 6 1730 5771
+16fec 12 1732 5771
+16ffe 2 1734 5771
+17000 16 1735 5771
+17016 c 1738 5771
+17022 7 1739 5771
+17029 6 1746 5771
+1702f 21 1747 5771
+17050 c 1749 5771
+1705c a 1750 5771
+17066 a 1753 5771
+17070 6 1755 5771
+17076 6 1756 5771
+1707c 23 1769 5771
+1709f d 1705 5771
+170ac 5 1771 5771
+FUNC 170b1 1ea 4 UnDecorator::getZName(bool)
+170b1 10 1007 5771
+170c1 11 1008 5771
+170d2 3 1013 5771
+170d5 26 1043 5771
+170fb b 1024 5771
+17106 5 1026 5771
+1710b 16 1028 5771
+17121 16 1030 5771
+17137 17 1031 5771
+1714e 7 1033 5771
+17155 25 1040 5771
+1717a 5 1042 5771
+1717f 29 1043 5771
+171a8 8 1045 5771
+171b0 b 1051 5771
+171bb c 1053 5771
+171c7 e 1056 5771
+171d5 10 1058 5771
+171e5 4 1060 5771
+171e9 b 1061 5771
+171f4 2 1063 5771
+171f6 a 1064 5771
+17200 10 1065 5771
+17210 2 1068 5771
+17212 d 1069 5771
+1721f 2a 1070 5771
+17249 2 1073 5771
+1724b 1a 1076 5771
+17265 11 1083 5771
+17276 9 1084 5771
+1727f f 1087 5771
+1728e d 1090 5771
+FUNC 1729b e4 0 UnDecorator::getScopedName()
+1729b 7 2727 5771
+172a2 e 2728 5771
+172b0 15 2733 5771
+172c5 1a 2737 5771
+172df 2a 2738 5771
+17309 b 2742 5771
+17314 8 2743 5771
+1731c 4 2744 5771
+17320 1b 2745 5771
+1733b b 2746 5771
+17346 7 2747 5771
+1734d 2 2748 5771
+1734f 2b 2749 5771
+1737a 3 2753 5771
+1737d 2 2755 5771
+FUNC 1737f f 0 UnDecorator::getECSUName()
+1737f f 2758 5771
+FUNC 1738e 100 0 UnDecorator::getECSUDataType()
+1738e 3 3392 5771
+17391 20 3395 5771
+173b1 37 3399 5771
+173e8 5 3424 5771
+173ed 2 3425 5771
+173ef 5 3420 5771
+173f4 2 3421 5771
+173f6 26 3431 5771
+1741c 2 3432 5771
+1741e 5 3415 5771
+17423 2 3416 5771
+17425 5 3411 5771
+1742a 2 3412 5771
+1742c d 3407 5771
+17439 7 3439 5771
+17440 4 3441 5771
+17444 c 3442 5771
+17450 16 3446 5771
+17466 e 3450 5771
+17474 18 3404 5771
+1748c 2 3452 5771
+FUNC 1748e 46 0 UnDecorator::getSymbolName()
+1748e 3 989 5771
+17491 a 990 5771
+1749b 6 991 5771
+174a1 c 992 5771
+174ad 16 997 5771
+174c3 f 1001 5771
+174d2 2 1003 5771
+FUNC 174d4 92 0 UnDecorator::getBasedType()
+174d4 6 2653 5771
+174da 13 2654 5771
+174ed a 2659 5771
+174f7 17 2661 5771
+1750e c 2707 5771
+1751a 13 2699 5771
+1752d 2 2700 5771
+1752f d 2674 5771
+1753c 2 2711 5771
+1753e a 2712 5771
+17548 d 2716 5771
+17555 f 2720 5771
+17564 2 2722 5771
+FUNC 17566 b42 4 UnDecorator::composeDeclaration(DName const &)
+17566 6 2045 5771
+1756c e 2046 5771
+1757a 5 2047 5771
+1757f a 2048 5771
+17589 b 2053 5771
+17594 f 2054 5771
+175a3 8 2055 5771
+175ab 15 2056 5771
+175c0 8 2057 5771
+175c8 10 2058 5771
+175d8 83 2075 5771
+1765b 7 2081 5771
+17662 19 2082 5771
+1767b 21 2083 5771
+1769c 2 2084 5771
+1769e 15 2085 5771
+176b3 27 2090 5771
+176da 33 2092 5771
+1770d 9 2094 5771
+17716 9 2096 5771
+1771f 2b 2098 5771
+1774a d 2101 5771
+17757 9 2103 5771
+17760 2d 2105 5771
+1778d 2e 2107 5771
+177bb 5 2111 5771
+177c0 3 2114 5771
+177c3 3 2115 5771
+177c6 3 2116 5771
+177c9 3 2117 5771
+177cc 3 2118 5771
+177cf 26 2121 5771
+177f5 12 2123 5771
+17807 19 2125 5771
+17820 19 2126 5771
+17839 2 2127 5771
+1783b 12 2129 5771
+1784d 19 2131 5771
+17866 1b 2134 5771
+17881 13 2141 5771
+17894 a 2142 5771
+1789e 15 2143 5771
+178b3 2 2144 5771
+178b5 f 2145 5771
+178c4 10 2147 5771
+178d4 9 2151 5771
+178dd 22 2152 5771
+178ff 2 2153 5771
+17901 13 2168 5771
+17914 c 2172 5771
+17920 14 2173 5771
+17934 1a 2174 5771
+1794e 2 2175 5771
+17950 b 2176 5771
+1795b 5 2182 5771
+17960 6 2185 5771
+17966 27 2187 5771
+1798d b 2189 5771
+17998 5 2190 5771
+1799d 1b 2194 5771
+179b8 15 2195 5771
+179cd 1d 2202 5771
+179ea 16 2204 5771
+17a00 55 2205 5771
+17a55 12 2206 5771
+17a67 2b 2207 5771
+17a92 2 2208 5771
+17a94 d 2209 5771
+17aa1 1a 2211 5771
+17abb 2e 2218 5771
+17ae9 12 2222 5771
+17afb c 2223 5771
+17b07 c 2227 5771
+17b13 15 2228 5771
+17b28 2 2229 5771
+17b2a f 2230 5771
+17b39 1a 2235 5771
+17b53 b 2237 5771
+17b5e 3 2238 5771
+17b61 5 2243 5771
+17b66 b 2245 5771
+17b71 1c 2250 5771
+17b8d 13 2251 5771
+17ba0 e 2252 5771
+17bae 2 2253 5771
+17bb0 10 2254 5771
+17bc0 3d 2255 5771
+17bfd c 2256 5771
+17c09 e 2257 5771
+17c17 4c 2258 5771
+17c63 a 2259 5771
+17c6d 4b 2260 5771
+17cb8 7 2261 5771
+17cbf 4b 2262 5771
+17d0a f 2263 5771
+17d19 f 2264 5771
+17d28 6 2268 5771
+17d2e 61 2277 5771
+17d8f 15 2281 5771
+17da4 2 2283 5771
+17da6 18 2285 5771
+17dbe 2d 2292 5771
+17deb 12 2294 5771
+17dfd 37 2296 5771
+17e34 23 2297 5771
+17e57 b7 2299 5771
+17f0e 23 2300 5771
+17f31 12 2306 5771
+17f43 37 2307 5771
+17f7a b 2308 5771
+17f85 37 2309 5771
+17fbc b 2310 5771
+17fc7 30 2311 5771
+17ff7 23 2312 5771
+1801a 36 2319 5771
+18050 1e 2320 5771
+1806e 8 2325 5771
+18076 1e 2326 5771
+18094 12 2329 5771
+180a6 2 2331 5771
+FUNC 180a8 211 0 UnDecorator::getDecoratedName()
+180a8 7 861 5771
+180af e 864 5771
+180bd a 868 5771
+180c7 b 873 5771
+180d2 8 874 5771
+180da 11 876 5771
+180eb 10 878 5771
+180fb 6 882 5771
+18101 9 903 5771
+1810a 9 906 5771
+18113 8 910 5771
+1811b 6 912 5771
+18121 5 910 5771
+18126 2 915 5771
+18128 a 918 5771
+18132 19 919 5771
+1814b 6 920 5771
+18151 f 924 5771
+18160 8 925 5771
+18168 17 929 5771
+1817f a 930 5771
+18189 c 932 5771
+18195 8 933 5771
+1819d 5 934 5771
+181a2 18 935 5771
+181ba a 936 5771
+181c4 13 937 5771
+181d7 b 938 5771
+181e2 2 940 5771
+181e4 29 941 5771
+1820d 4 945 5771
+18211 10 946 5771
+18221 9 948 5771
+1822a 3 950 5771
+1822d 1c 955 5771
+18249 f 959 5771
+18258 4 976 5771
+1825c 6 962 5771
+18262 14 964 5771
+18276 19 967 5771
+1828f 5 968 5771
+18294 10 971 5771
+182a4 2 979 5771
+182a6 2 980 5771
+182a8 f 982 5771
+182b7 2 984 5771
+FUNC 182b9 28b 0 UnDecorator::getScope()
+182b9 d 1482 5771
+182c6 f 1483 5771
+182d5 2a 1489 5771
+182ff 14 1492 5771
+18313 b 1495 5771
+1831e 16 1496 5771
+18334 5 1498 5771
+18339 17 1499 5771
+18350 3 1500 5771
+18353 f 1506 5771
+18362 2a 1507 5771
+1838c 10 1566 5771
+1839c 5 1567 5771
+183a1 34 1561 5771
+183d5 4 1562 5771
+183d9 5 1563 5771
+183de e 1510 5771
+183ec 5 1514 5771
+183f1 22 1515 5771
+18413 e 1518 5771
+18421 6 1519 5771
+18427 5 1522 5771
+1842c 2a 1523 5771
+18456 2 1524 5771
+18458 f 1546 5771
+18467 1a 1548 5771
+18481 b 1550 5771
+1848c 9 1551 5771
+18495 2 1554 5771
+18497 f 1530 5771
+184a6 2 1570 5771
+184a8 21 1571 5771
+184c9 a 1489 5771
+184d3 f 1577 5771
+184e2 18 1590 5771
+184fa 2 1591 5771
+184fc b 1580 5771
+18507 7 1581 5771
+1850e 2 1582 5771
+18510 2b 1583 5771
+1853b 4 1597 5771
+1853f 5 1599 5771
+FUNC 18544 341 4 UnDecorator::getFunctionIndirectType(DName const &)
+18544 3 3461 5771
+18547 e 3462 5771
+18555 15 3463 5771
+1856a f 3465 5771
+18579 10 3466 5771
+18589 7 3469 5771
+18590 a 3471 5771
+1859a 6 3473 5771
+185a0 7 3475 5771
+185a7 d 3477 5771
+185b4 17 3482 5771
+185cb 9 3485 5771
+185d4 3 3486 5771
+185d7 5 3490 5771
+185dc f 3491 5771
+185eb 6 3496 5771
+185f1 13 3497 5771
+18604 b 3501 5771
+1860f 1e 3503 5771
+1862d 8 3505 5771
+18635 29 3506 5771
+1865e 2 3507 5771
+18660 17 3508 5771
+18677 f 3510 5771
+18686 4 3511 5771
+1868a 10 3518 5771
+1869a 15 3519 5771
+186af 9 3527 5771
+186b8 d 3528 5771
+186c5 30 3529 5771
+186f5 2 3530 5771
+186f7 11 3521 5771
+18708 7 3514 5771
+1870f 16 3516 5771
+18725 13 3531 5771
+18738 d 3535 5771
+18745 22 3537 5771
+18767 2 3546 5771
+18769 13 3547 5771
+1877c c 3551 5771
+18788 28 3552 5771
+187b0 1e 3557 5771
+187ce c 3558 5771
+187da 2e 3561 5771
+18808 10 3563 5771
+18818 c 3564 5771
+18824 c 3566 5771
+18830 15 3567 5771
+18845 2 3568 5771
+18847 f 3569 5771
+18856 4 3573 5771
+1885a b 3574 5771
+18865 e 3580 5771
+18873 10 3576 5771
+18883 2 3581 5771
+FUNC 18885 4e4 10 UnDecorator::getDataIndirectType(DName const &,char,DName const &,int)
+18885 6 3707 5771
+1888b 23 3711 5771
+188ae 4 3713 5771
+188b2 17 3715 5771
+188c9 c 3717 5771
+188d5 10 3719 5771
+188e5 e 3723 5771
+188f3 6 3725 5771
+188f9 15 3726 5771
+1890e 17 3732 5771
+18925 11 3751 5771
+18936 a 3752 5771
+18940 32 3753 5771
+18972 5 3754 5771
+18977 11 3743 5771
+18988 a 3744 5771
+18992 25 3745 5771
+189b7 2 3746 5771
+189b9 8 3747 5771
+189c1 2 3749 5771
+189c3 19 3735 5771
+189dc a 3736 5771
+189e6 14 3737 5771
+189fa 5 3738 5771
+189ff 11 3739 5771
+18a10 6 3766 5771
+18a16 a 3768 5771
+18a20 17 3770 5771
+18a37 10 3772 5771
+18a47 1a 3778 5771
+18a61 5 3780 5771
+18a66 6 3782 5771
+18a6c 9 3787 5771
+18a75 b 3789 5771
+18a80 19 3791 5771
+18a99 c 3793 5771
+18aa5 24 3794 5771
+18ac9 c 3796 5771
+18ad5 22 3797 5771
+18af7 9 3801 5771
+18b00 5 3805 5771
+18b05 7 3806 5771
+18b0c 6 3810 5771
+18b12 1e 3812 5771
+18b30 8 3814 5771
+18b38 1b 3815 5771
+18b53 2 3816 5771
+18b55 16 3817 5771
+18b6b a 3819 5771
+18b75 13 3828 5771
+18b88 b 3833 5771
+18b93 c 3834 5771
+18b9f 8 3835 5771
+18ba7 6 3836 5771
+18bad b 3842 5771
+18bb8 b 3843 5771
+18bc3 3 3863 5771
+18bc6 6 3864 5771
+18bcc 22 3866 5771
+18bee 9 3871 5771
+18bf7 13 3872 5771
+18c0a 5 3876 5771
+18c0f 1e 3877 5771
+18c2d 5 3879 5771
+18c32 1e 3880 5771
+18c50 5 3884 5771
+18c55 e 3885 5771
+18c63 14 3889 5771
+18c77 28 3895 5771
+18c9f 2 3890 5771
+18ca1 b 3891 5771
+18cac 2 3892 5771
+18cae c 3898 5771
+18cba 17 3899 5771
+18cd1 4 3902 5771
+18cd5 6 3904 5771
+18cdb 7 3906 5771
+18ce2 8 3774 5771
+18cea 13 3918 5771
+18cfd 12 3922 5771
+18d0f 29 3925 5771
+18d38 10 3923 5771
+18d48 c 3928 5771
+18d54 3 3929 5771
+18d57 10 3931 5771
+18d67 2 3933 5771
+FUNC 18d69 14c 0 UnDecorator::operator char *()
+18d69 6 762 5771
+18d6f 4 763 5771
+18d73 f 764 5771
+18d82 9 770 5771
+18d8b c 772 5771
+18d97 7 775 5771
+18d9e 1d 776 5771
+18dbb 4 782 5771
+18dbf 16 783 5771
+18dd5 9 785 5771
+18dde 5 794 5771
+18de3 9 795 5771
+18dec 13 799 5771
+18dff e 808 5771
+18e0d 2 809 5771
+18e0f 2 848 5771
+18e11 1a 810 5771
+18e2b e 813 5771
+18e39 e 811 5771
+18e47 9 817 5771
+18e50 e 819 5771
+18e5e d 820 5771
+18e6b a 824 5771
+18e75 f 825 5771
+18e84 5 828 5771
+18e89 2 829 5771
+18e8b 2 830 5771
+18e8d 5 831 5771
+18e92 1 832 5771
+18e93 5 833 5771
+18e98 1 835 5771
+18e99 5 834 5771
+18e9e 2 838 5771
+18ea0 a 839 5771
+18eaa 9 841 5771
+18eb3 2 848 5771
+FUNC 18eb5 116 c UnDecorator::getPtrRefType(DName const &,DName const &,char)
+18eb5 5 3585 5771
+18eba f 3588 5771
+18ec9 d 3589 5771
+18ed6 b 3591 5771
+18ee1 20 3594 5771
+18f01 b 3595 5771
+18f0c b 3597 5771
+18f17 9 3598 5771
+18f20 14 3600 5771
+18f34 14 3606 5771
+18f48 1b 3608 5771
+18f63 a 3612 5771
+18f6d b 3615 5771
+18f78 c 3617 5771
+18f84 9 3618 5771
+18f8d c 3620 5771
+18f99 c 3622 5771
+18fa5 a 3623 5771
+18faf b 3625 5771
+18fba f 3629 5771
+18fc9 2 3632 5771
+FUNC 18fcb 1b 8 UnDecorator::getPointerType(DName const &,DName const &)
+18fcb 1b 4037 5771
+FUNC 18fe6 1b 8 UnDecorator::getPointerTypeArray(DName const &,DName const &)
+18fe6 1b 4040 5771
+FUNC 19001 1b 8 UnDecorator::getReferenceType(DName const &,DName const &)
+19001 1b 4043 5771
+FUNC 1901c a3 18 __unDName
+1901c f 604 5771
+1902b 9 606 5771
+19034 4 607 5771
+19038 a 612 5771
+19042 2 613 5771
+19044 8 614 5771
+1904c 3 615 5771
+1904f 20 618 5771
+1906f 1a 627 5771
+19089 e 628 5771
+19097 a 633 5771
+190a1 c 636 5771
+190ad 3 643 5771
+190b0 6 645 5771
+190b6 9 637 5771
+FUNC 190bf a3 1c __unDNameEx
+190bf f 684 5771
+190ce 9 687 5771
+190d7 4 688 5771
+190db a 693 5771
+190e5 2 694 5771
+190e7 8 695 5771
+190ef 3 696 5771
+190f2 20 699 5771
+19112 1a 708 5771
+1912c e 709 5771
+1913a a 714 5771
+19144 c 717 5771
+19150 3 724 5771
+19153 6 726 5771
+19159 9 718 5771
+FUNC 19162 387 4 UnDecorator::getBasicDataType(DName const &)
+19162 3 3162 5771
+19165 15 3163 5771
+1917a 6 3165 5771
+19180 4 3168 5771
+19184 35 3173 5771
+191b9 5 3178 5771
+191be 5 3179 5771
+191c3 5 3183 5771
+191c8 5 3184 5771
+191cd 5 3188 5771
+191d2 5 3189 5771
+191d7 5 3193 5771
+191dc 5 3194 5771
+191e1 5 3203 5771
+191e6 5 3204 5771
+191eb 2a 3173 5771
+19215 3c 3222 5771
+19251 5 3231 5771
+19256 5 3232 5771
+1925b 22 3273 5771
+1927d 5 3235 5771
+19282 5 3236 5771
+19287 f 3222 5771
+19296 5 3243 5771
+1929b 5 3244 5771
+192a0 5 3239 5771
+192a5 5 3240 5771
+192aa 5 3247 5771
+192af 5 3248 5771
+192b4 1b 3222 5771
+192cf 3 3264 5771
+192d2 6 3262 5771
+192d8 10 3264 5771
+192e8 10 3266 5771
+192f8 11 3267 5771
+19309 5 3275 5771
+1930e 2 3276 5771
+19310 5 3255 5771
+19315 2 3257 5771
+19317 3 3224 5771
+1931a 12 3343 5771
+1932c 9 3345 5771
+19335 7 3347 5771
+1933c 16 3348 5771
+19352 6 3352 5771
+19358 d 3353 5771
+19365 5 3355 5771
+1936a 5 3227 5771
+1936f 2 3278 5771
+19371 d 3281 5771
+1937e 2 3282 5771
+19380 5 3219 5771
+19385 2 3220 5771
+19387 3 3287 5771
+1938a 5 3290 5771
+1938f d 3207 5771
+1939c d 3212 5771
+193a9 9 3297 5771
+193b2 1f 3301 5771
+193d1 19 3314 5771
+193ea c 3322 5771
+193f6 2 3326 5771
+193f8 c 3307 5771
+19404 2 3308 5771
+19406 1e 3311 5771
+19424 10 3332 5771
+19434 18 3333 5771
+1944c 5 3337 5771
+19451 c 3360 5771
+1945d 5 3367 5771
+19462 d 3369 5771
+1946f 5 3371 5771
+19474 d 3372 5771
+19481 2 3373 5771
+19483 5 3374 5771
+19488 d 3375 5771
+19495 17 3380 5771
+194ac 16 3385 5771
+194c2 27 3387 5771
+FUNC 194e9 13e 4 UnDecorator::getPrimaryDataType(DName const &)
+194e9 7 2962 5771
+194f0 2b 2966 5771
+1951b 12 3027 5771
+1952d d 2972 5771
+1953a c 2974 5771
+19546 a 2975 5771
+19550 b 2981 5771
+1955b 6 2984 5771
+19561 1e 2986 5771
+1957f 7 2996 5771
+19586 2 2997 5771
+19588 6 2998 5771
+1958e f 3000 5771
+1959d 8 3002 5771
+195a5 10 3004 5771
+195b5 2f 3022 5771
+195e4 16 3012 5771
+195fa 17 3008 5771
+19611 14 2969 5771
+19625 2 3030 5771
+FUNC 19627 b1 4 UnDecorator::getDataType(DName *)
+19627 6 2922 5771
+1962d b 2923 5771
+19638 15 2928 5771
+1964d 10 2954 5771
+1965d 6 2934 5771
+19663 c 2936 5771
+1966f f 2937 5771
+1967e 13 2939 5771
+19691 6 2944 5771
+19697 29 2946 5771
+196c0 2 2947 5771
+196c2 14 2931 5771
+196d6 2 2957 5771
+FUNC 196d8 64 4 UnDecorator::getExternalDataType(DName const &)
+196d8 7 4244 5771
+196df 1e 4247 5771
+196fd 9 4248 5771
+19706 30 4253 5771
+19736 4 4255 5771
+1973a 2 4257 5771
+FUNC 1973c 57 8 fastzero_I
+FUNC 19793 8f c _VEC_memzero
+FUNC 19822 14 0 _sse2_mathfcns_init
+FUNC 19836 14 4 _set_SSE2_enable
+FUNC 1984a 87 c fastcopy_I
+FUNC 198d1 e3 c _VEC_memcpy
+FUNC 199b4 1bd c __crtMessageBoxA
+199b4 9 41 4033
+199bd 5 49 4033
+199c2 2 56 4033
+199c4 18 64 4033
+199dc d 66 4033
+199e9 2 67 4033
+199eb 6 69 4033
+199f1 10 76 4033
+19a01 6 78 4033
+19a07 6 80 4033
+19a0d 15 83 4033
+19a22 1a 86 4033
+19a3c 1c 88 4033
+19a58 6 89 4033
+19a5e 8 95 4033
+19a66 6 98 4033
+19a6c a 100 4033
+19a76 14 102 4033
+19a8a 14 116 4033
+19a9e 6 119 4033
+19aa4 d 120 4033
+19ab1 c 122 4033
+19abd 1f 127 4033
+19adc 1b 136 4033
+19af7 6 137 4033
+19afd 7 138 4033
+19b04 2 139 4033
+19b06 7 140 4033
+19b0d 2 142 4033
+19b0f a 144 4033
+19b19 6 146 4033
+19b1f 5 147 4033
+19b24 2 149 4033
+19b26 11 153 4033
+19b37 6 155 4033
+19b3d 5 156 4033
+19b42 8 158 4033
+19b4a b 165 4033
+19b55 5 166 4033
+19b5a 10 168 4033
+19b6a 5 173 4033
+19b6f 2 176 4033
+FUNC 19b71 71 c strcat_s
+19b71 0 13 823
+19b71 30 18 823
+19ba1 c 19 823
+19bad 2 21 823
+19baf 4 23 823
+19bb3 1 25 823
+19bb4 3 26 823
+19bb7 2 29 823
+19bb9 2 32 823
+19bbb d 35 823
+19bc8 4 39 823
+19bcc 2 41 823
+19bce e 42 823
+19bdc 5 45 823
+19be1 1 46 823
+FUNC 19be2 b3 10 strncpy_s
+19be2 5 13 739
+19be7 14 17 739
+19bfb 5 65 739
+19c00 2 66 739
+19c02 26 24 739
+19c28 5 25 739
+19c2d 2 28 739
+19c2f 2 29 739
+19c31 b 31 739
+19c3c 8 35 739
+19c44 d 37 739
+19c51 2 41 739
+19c53 12 45 739
+19c65 5 48 739
+19c6a 2 50 739
+19c6c 4 54 739
+19c70 6 56 739
+19c76 3 58 739
+19c79 c 59 739
+19c85 2 61 739
+19c87 e 62 739
+FUNC 19c95 46 4 _set_error_mode
+19c95 0 43 3937
+19c95 15 50 3937
+19caa 6 58 3937
+19cb0 1 65 3937
+19cb1 5 54 3937
+19cb6 7 55 3937
+19cbd 1 65 3937
+19cbe 1c 61 3937
+19cda 1 65 3937
+FUNC 19cdb a 4 __set_app_type
+19cdb 0 91 3937
+19cdb 9 96 3937
+19ce4 1 97 3937
+FUNC 19ce5 6 0 __get_app_type
+19ce5 0 120 3937
+19ce5 5 125 3937
+19cea 1 126 3937
+FUNC 19ceb 51 10 x_ismbbtype_l
+19ceb 6 213 4669
+19cf1 b 214 4669
+19cfc 4 219 4669
+19d00 3a 222 4669
+19d3a 2 223 4669
+FUNC 19d3c 15 8 _ismbbkalnum_l
+19d3c 0 80 4669
+19d3c 14 81 4669
+19d50 1 82 4669
+FUNC 19d51 13 4 _ismbbkalnum
+19d51 0 85 4669
+19d51 12 86 4669
+19d63 1 87 4669
+FUNC 19d64 15 8 _ismbbkprint_l
+19d64 0 90 4669
+19d64 14 91 4669
+19d78 1 92 4669
+FUNC 19d79 13 4 _ismbbkprint
+19d79 0 95 4669
+19d79 12 96 4669
+19d8b 1 97 4669
+FUNC 19d8c 15 8 _ismbbkpunct_l
+19d8c 0 100 4669
+19d8c 14 101 4669
+19da0 1 102 4669
+FUNC 19da1 13 4 _ismbbkpunct
+19da1 0 105 4669
+19da1 12 106 4669
+19db3 1 107 4669
+FUNC 19db4 18 8 _ismbbalnum_l
+19db4 0 113 4669
+19db4 17 114 4669
+19dcb 1 115 4669
+FUNC 19dcc 16 4 _ismbbalnum
+19dcc 0 118 4669
+19dcc 15 119 4669
+19de1 1 120 4669
+FUNC 19de2 18 8 _ismbbalpha_l
+19de2 0 123 4669
+19de2 17 124 4669
+19df9 1 125 4669
+FUNC 19dfa 16 4 _ismbbalpha
+19dfa 0 128 4669
+19dfa 15 129 4669
+19e0f 1 130 4669
+FUNC 19e10 18 8 _ismbbgraph_l
+19e10 0 133 4669
+19e10 17 134 4669
+19e27 1 135 4669
+FUNC 19e28 16 4 _ismbbgraph
+19e28 0 138 4669
+19e28 15 139 4669
+19e3d 1 140 4669
+FUNC 19e3e 18 8 _ismbbprint_l
+19e3e 0 143 4669
+19e3e 17 144 4669
+19e55 1 145 4669
+FUNC 19e56 16 4 _ismbbprint
+19e56 0 148 4669
+19e56 15 149 4669
+19e6b 1 150 4669
+FUNC 19e6c 15 8 _ismbbpunct_l
+19e6c 0 153 4669
+19e6c 14 154 4669
+19e80 1 155 4669
+FUNC 19e81 13 4 _ismbbpunct
+19e81 0 158 4669
+19e81 12 159 4669
+19e93 1 160 4669
+FUNC 19e94 15 8 _ismbblead_l
+19e94 0 166 4669
+19e94 14 167 4669
+19ea8 1 168 4669
+FUNC 19ea9 13 4 _ismbblead
+19ea9 0 171 4669
+19ea9 12 172 4669
+19ebb 1 173 4669
+FUNC 19ebc 15 8 _ismbbtrail_l
+19ebc 0 176 4669
+19ebc 14 177 4669
+19ed0 1 178 4669
+FUNC 19ed1 13 4 _ismbbtrail
+19ed1 0 181 4669
+19ed1 12 182 4669
+19ee3 1 183 4669
+FUNC 19ee4 53 8 _ismbbkana_l
+19ee4 6 189 4669
+19eea b 190 4669
+19ef5 10 192 4669
+19f05 1f 194 4669
+19f24 2 197 4669
+19f26 f 196 4669
+19f35 2 197 4669
+FUNC 19f37 e 4 _ismbbkana
+19f37 0 200 4669
+19f37 d 201 4669
+19f44 1 202 4669
+FUNC 19f45 44 4 _getbuf
+19f45 0 43 1893
+19f45 6 50 1893
+19f4b 16 58 1893
+19f61 4 61 1893
+19f65 7 62 1893
+19f6c 2 65 1893
+19f6e 4 69 1893
+19f72 6 70 1893
+19f78 7 71 1893
+19f7f 3 75 1893
+19f82 6 76 1893
+19f88 1 79 1893
+FUNC 19f89 1de 8 _fputwc_nolock
+19f89 15 90 2124
+19f9e b 93 2124
+19fa9 48 95 2124
+19ff1 6 101 2124
+19ff7 45 104 2124
+1a03c 27 115 2124
+1a063 9 116 2124
+1a06c 22 120 2124
+1a08e 2 121 2124
+1a090 8 124 2124
+1a098 42 127 2124
+1a0da 17 133 2124
+1a0f1 6 139 2124
+1a0f7 7 141 2124
+1a0fe 34 143 2124
+1a132 6 146 2124
+1a138 6 150 2124
+1a13e d 151 2124
+1a14b d 153 2124
+1a158 f 154 2124
+FUNC 1a167 78 8 fputwc
+1a167 c 48 2124
+1a173 2e 52 2124
+1a1a1 3 55 2124
+1a1a4 7 57 2124
+1a1ab 3 58 2124
+1a1ae 11 60 2124
+1a1bf c 63 2124
+1a1cb 4 67 2124
+1a1cf 6 68 2124
+1a1d5 a 64 2124
+FUNC 1a1df 5 8 putwc
+1a1df 0 162 2124
+1a1df 5 163 2124
+FUNC 1a1e4 1f7 14 wcstoxl
+1a1e4 8 82 6173
+1a1ec b 88 6173
+1a1f7 3 92 6173
+1a1fa b 95 6173
+1a205 2f 97 6173
+1a234 12 98 6173
+1a246 9 103 6173
+1a24f 2 105 6173
+1a251 18 106 6173
+1a269 6 108 6173
+1a26f 4 109 6173
+1a273 2 110 6173
+1a275 6 112 6173
+1a27b 5 113 6173
+1a280 5 115 6173
+1a285 b 118 6173
+1a290 9 119 6173
+1a299 f 120 6173
+1a2a8 9 123 6173
+1a2b1 7 121 6173
+1a2b8 6 126 6173
+1a2be 1a 128 6173
+1a2d8 2 129 6173
+1a2da 5 130 6173
+1a2df d 135 6173
+1a2ec c 141 6173
+1a2f8 15 143 6173
+1a30d 12 144 6173
+1a31f 5 148 6173
+1a324 4 152 6173
+1a328 c 159 6173
+1a334 4 165 6173
+1a338 6 166 6173
+1a33e 9 178 6173
+1a347 6 181 6173
+1a34d 3 183 6173
+1a350 4 184 6173
+1a354 2 186 6173
+1a356 c 161 6173
+1a362 5 173 6173
+1a367 2 174 6173
+1a369 24 189 6173
+1a38d 5 192 6173
+1a392 c 193 6173
+1a39e 6 194 6173
+1a3a4 10 195 6173
+1a3b4 8 201 6173
+1a3bc 2 203 6173
+1a3be 6 205 6173
+1a3c4 3 207 6173
+1a3c7 12 209 6173
+1a3d9 2 210 6173
+FUNC 1a3db 29 c wcstol
+1a3db 3 217 6173
+1a3de 8 218 6173
+1a3e6 13 220 6173
+1a3f9 9 224 6173
+1a402 2 226 6173
+FUNC 1a404 1b 10 _wcstol_l
+1a404 0 234 6173
+1a404 1a 235 6173
+1a41e 1 236 6173
+FUNC 1a41f 2a c wcstoul
+1a41f 3 243 6173
+1a422 7 244 6173
+1a429 14 246 6173
+1a43d a 250 6173
+1a447 2 252 6173
+FUNC 1a449 1b 10 _wcstoul_l
+1a449 0 260 6173
+1a449 1a 261 6173
+1a463 1 262 6173
+FUNC 1a464 9 0 _fptrap
+1a464 0 46 2503
+1a464 8 47 2503
+1a46c 1 48 2503
+FUNC 1a46d 54 8 _isalpha_l
+1a46d 6 57 6535
+1a473 b 58 6535
+1a47e 41 60 6535
+1a4bf 2 61 6535
+FUNC 1a4c1 2b 4 isalpha
+1a4c1 0 66 6535
+1a4c1 9 67 6535
+1a4ca 13 69 6535
+1a4dd 1 75 6535
+1a4de d 73 6535
+1a4eb 1 75 6535
+FUNC 1a4ec 4f 8 _isupper_l
+1a4ec 6 81 6535
+1a4f2 b 82 6535
+1a4fd 3c 84 6535
+1a539 2 85 6535
+FUNC 1a53b 29 4 isupper
+1a53b 0 90 6535
+1a53b 9 91 6535
+1a544 11 93 6535
+1a555 1 99 6535
+1a556 d 97 6535
+1a563 1 99 6535
+FUNC 1a564 4f 8 _islower_l
+1a564 6 105 6535
+1a56a b 106 6535
+1a575 3c 108 6535
+1a5b1 2 109 6535
+FUNC 1a5b3 29 4 islower
+1a5b3 0 114 6535
+1a5b3 9 115 6535
+1a5bc 11 117 6535
+1a5cd 1 123 6535
+1a5ce d 121 6535
+1a5db 1 123 6535
+FUNC 1a5dc 4f 8 _isdigit_l
+1a5dc 6 129 6535
+1a5e2 b 130 6535
+1a5ed 3c 132 6535
+1a629 2 133 6535
+FUNC 1a62b 29 4 isdigit
+1a62b 0 138 6535
+1a62b 9 139 6535
+1a634 11 141 6535
+1a645 1 147 6535
+1a646 d 145 6535
+1a653 1 147 6535
+FUNC 1a654 54 8 _isxdigit_l
+1a654 6 153 6535
+1a65a b 154 6535
+1a665 41 156 6535
+1a6a6 2 157 6535
+FUNC 1a6a8 2b 4 isxdigit
+1a6a8 0 162 6535
+1a6a8 9 163 6535
+1a6b1 13 165 6535
+1a6c4 1 171 6535
+1a6c5 d 169 6535
+1a6d2 1 171 6535
+FUNC 1a6d3 4f 8 _isspace_l
+1a6d3 6 177 6535
+1a6d9 b 178 6535
+1a6e4 3c 180 6535
+1a720 2 181 6535
+FUNC 1a722 29 4 isspace
+1a722 0 186 6535
+1a722 9 187 6535
+1a72b 11 189 6535
+1a73c 1 195 6535
+1a73d d 193 6535
+1a74a 1 195 6535
+FUNC 1a74b 4f 8 _ispunct_l
+1a74b 6 201 6535
+1a751 b 202 6535
+1a75c 3c 204 6535
+1a798 2 205 6535
+FUNC 1a79a 29 4 ispunct
+1a79a 0 210 6535
+1a79a 9 211 6535
+1a7a3 11 213 6535
+1a7b4 1 219 6535
+1a7b5 d 217 6535
+1a7c2 1 219 6535
+FUNC 1a7c3 54 8 _isalnum_l
+1a7c3 6 225 6535
+1a7c9 b 226 6535
+1a7d4 41 228 6535
+1a815 2 229 6535
+FUNC 1a817 2b 4 isalnum
+1a817 0 234 6535
+1a817 9 235 6535
+1a820 13 237 6535
+1a833 1 243 6535
+1a834 d 241 6535
+1a841 1 243 6535
+FUNC 1a842 54 8 _isprint_l
+1a842 6 249 6535
+1a848 b 250 6535
+1a853 41 252 6535
+1a894 2 253 6535
+FUNC 1a896 2b 4 isprint
+1a896 0 258 6535
+1a896 9 259 6535
+1a89f 13 261 6535
+1a8b2 1 267 6535
+1a8b3 d 265 6535
+1a8c0 1 267 6535
+FUNC 1a8c1 54 8 _isgraph_l
+1a8c1 6 273 6535
+1a8c7 b 274 6535
+1a8d2 41 276 6535
+1a913 2 277 6535
+FUNC 1a915 2b 4 isgraph
+1a915 0 282 6535
+1a915 9 283 6535
+1a91e 13 285 6535
+1a931 1 291 6535
+1a932 d 289 6535
+1a93f 1 291 6535
+FUNC 1a940 4f 8 _iscntrl_l
+1a940 6 297 6535
+1a946 b 298 6535
+1a951 3c 300 6535
+1a98d 2 301 6535
+FUNC 1a98f 29 4 iscntrl
+1a98f 0 306 6535
+1a98f 9 307 6535
+1a998 11 309 6535
+1a9a9 1 315 6535
+1a9aa d 313 6535
+1a9b7 1 315 6535
+FUNC 1a9b8 d 4 __isascii
+1a9b8 0 320 6535
+1a9b8 c 321 6535
+1a9c4 1 322 6535
+FUNC 1a9c5 8 4 __toascii
+1a9c5 0 327 6535
+1a9c5 7 328 6535
+1a9cc 1 329 6535
+FUNC 1a9cd 1f 8 _iscsymf_l
+1a9cd 0 335 6535
+1a9cd 1a 336 6535
+1a9e7 1 337 6535
+1a9e8 3 336 6535
+1a9eb 1 337 6535
+FUNC 1a9ec 1a 4 __iscsymf
+1a9ec 0 341 6535
+1a9ec 15 342 6535
+1aa01 1 343 6535
+1aa02 3 342 6535
+1aa05 1 343 6535
+FUNC 1aa06 1f 8 _iscsym_l
+1aa06 0 349 6535
+1aa06 1a 350 6535
+1aa20 1 351 6535
+1aa21 3 350 6535
+1aa24 1 351 6535
+FUNC 1aa25 1c 4 __iscsym
+1aa25 0 356 6535
+1aa25 17 357 6535
+1aa3c 1 358 6535
+1aa3d 3 357 6535
+1aa40 1 358 6535
+FUNC 1aa41 12 8 _MarkAllocaS
+1aa41 0 207 2895
+1aa41 8 208 2895
+1aa49 6 210 2895
+1aa4f 3 211 2895
+1aa52 1 214 2895
+FUNC 1aa53 1b 4 _freea
+1aa53 0 249 2895
+1aa53 8 251 2895
+1aa5b 3 253 2895
+1aa5e 8 255 2895
+1aa66 7 257 2895
+1aa6d 1 266 2895
+FUNC 1aa6e 13b 18 __crtGetLocaleInfoW_stat
+1aa6e f 60 2876
+1aa7d 14 68 2876
+1aa91 d 70 2876
+1aa9e 8 71 2876
+1aaa6 b 73 2876
+1aab1 f 74 2876
+1aac0 5 79 2876
+1aac5 13 81 2876
+1aad8 7 86 2876
+1aadf 2 140 2876
+1aae1 8 96 2876
+1aae9 b 97 2876
+1aaf4 16 100 2876
+1ab0a 7 101 2876
+1ab11 48 104 2876
+1ab59 2 105 2876
+1ab5b 2 106 2876
+1ab5d e 110 2876
+1ab6b 7 113 2876
+1ab72 2 121 2876
+1ab74 2 123 2876
+1ab76 17 130 2876
+1ab8d 6 134 2876
+1ab93 4 136 2876
+1ab97 12 141 2876
+FUNC 1aba9 3b 18 __crtGetLocaleInfoW
+1aba9 6 151 2876
+1abaf b 152 2876
+1abba 28 161 2876
+1abe2 2 162 2876
+FUNC 1abe4 13d 18 __crtGetLocaleInfoA_stat
+1abe4 f 60 4251
+1abf3 17 68 4251
+1ac0a a 70 4251
+1ac14 8 71 4251
+1ac1c b 73 4251
+1ac27 f 74 4251
+1ac36 11 79 4251
+1ac47 4 86 4251
+1ac4b 5 96 4251
+1ac50 b 97 4251
+1ac5b 13 100 4251
+1ac6e 7 101 4251
+1ac75 49 104 4251
+1acbe 2 105 4251
+1acc0 2 106 4251
+1acc2 10 110 4251
+1acd2 3 114 4251
+1acd5 6 124 4251
+1acdb 2 126 4251
+1acdd 15 135 4251
+1acf2 7 139 4251
+1acf9 4 141 4251
+1acfd 12 81 4251
+1ad0f 12 145 4251
+FUNC 1ad21 3b 18 __crtGetLocaleInfoA
+1ad21 6 155 4251
+1ad27 b 156 4251
+1ad32 28 165 4251
+1ad5a 2 166 4251
+FUNC 1ad5c 1a 4 strncnt
+1ad5c 0 48 4203
+1ad5c 6 49 4203
+1ad62 6 52 4203
+1ad68 1 53 4203
+1ad69 5 52 4203
+1ad6e 7 55 4203
+1ad75 1 56 4203
+FUNC 1ad76 3a2 20 __crtLCMapStringA_stat
+1ad76 12 99 4203
+1ad88 d 108 4203
+1ad95 1b 109 4203
+1adb0 8 110 4203
+1adb8 b 111 4203
+1adc3 a 112 4203
+1adcd 5 119 4203
+1add2 19 120 4203
+1adeb 5 124 4203
+1adf0 1 125 4203
+1adf1 3 127 4203
+1adf4 16 133 4203
+1ae0a 9 213 4203
+1ae13 8 235 4203
+1ae1b 8 236 4203
+1ae23 27 247 4203
+1ae4a 6 248 4203
+1ae50 48 251 4203
+1ae98 3 252 4203
+1ae9b 6 253 4203
+1aea1 19 262 4203
+1aeba 21 271 4203
+1aedb 8 274 4203
+1aee3 9 277 4203
+1aeec 9 279 4203
+1aef5 12 288 4203
+1af07 5 292 4203
+1af0c 4b 298 4203
+1af57 4 299 4203
+1af5b 18 309 4203
+1af73 3 312 4203
+1af76 6 322 4203
+1af7c 2 325 4203
+1af7e 17 335 4203
+1af95 7 342 4203
+1af9c 8 344 4203
+1afa4 9 346 4203
+1afad b 141 4203
+1afb8 8 142 4203
+1afc0 5 143 4203
+1afc5 8 144 4203
+1afcd 11 146 4203
+1afde 7 147 4203
+1afe5 9 153 4203
+1afee 15 155 4203
+1b003 5 156 4203
+1b008 2 157 4203
+1b00a 1b 164 4203
+1b025 7 166 4203
+1b02c 41 169 4203
+1b06d 2 170 4203
+1b06f 28 196 4203
+1b097 2 183 4203
+1b099 2 184 4203
+1b09b 25 190 4203
+1b0c0 7 198 4203
+1b0c7 2 199 4203
+1b0c9 1a 202 4203
+1b0e3 5 204 4203
+1b0e8 9 205 4203
+1b0f1 c 206 4203
+1b0fd 7 207 4203
+1b104 2 208 4203
+1b106 12 350 4203
+FUNC 1b118 43 24 __crtLCMapStringA
+1b118 6 363 4203
+1b11e b 364 4203
+1b129 30 376 4203
+1b159 2 377 4203
+FUNC 1b15b 1b8 1c __crtGetStringTypeA_stat
+1b15b f 66 4155
+1b16a 10 75 4155
+1b17a 18 79 4155
+1b192 8 80 4155
+1b19a b 82 4155
+1b1a5 f 83 4155
+1b1b4 11 88 4155
+1b1c5 9 120 4155
+1b1ce 8 141 4155
+1b1d6 8 142 4155
+1b1de 27 153 4155
+1b205 6 154 4155
+1b20b 3e 157 4155
+1b249 2 158 4155
+1b24b 2 159 4155
+1b24d f 161 4155
+1b25c 13 169 4155
+1b26f 11 174 4155
+1b280 6 176 4155
+1b286 6 178 4155
+1b28c 2 90 4155
+1b28e 5 94 4155
+1b293 8 95 4155
+1b29b 5 96 4155
+1b2a0 8 97 4155
+1b2a8 e 99 4155
+1b2b6 4 100 4155
+1b2ba 5 104 4155
+1b2bf 17 106 4155
+1b2d6 2 107 4155
+1b2d8 2 108 4155
+1b2da 3 109 4155
+1b2dd 15 112 4155
+1b2f2 6 113 4155
+1b2f8 7 114 4155
+1b2ff 2 115 4155
+1b301 12 182 4155
+FUNC 1b313 40 20 __crtGetStringTypeA
+1b313 6 194 4155
+1b319 b 195 4155
+1b324 2d 206 4155
+1b351 2 207 4155
+FUNC 1b353 6 0 __pwctype_func
+1b353 0 24 3986
+1b353 5 25 3986
+1b358 1 26 3986
+FUNC 1b359 29 0 __pctype_func
+1b359 0 29 3986
+1b359 7 35 3986
+1b360 3 36 3986
+1b363 18 38 3986
+1b37b 6 39 3986
+1b381 1 40 3986
+FUNC 1b382 419 0 _get_lc_time
+1b382 6 94 3379
+1b388 12 104 3379
+1b39a 3 105 3379
+1b39d 2 170 3379
+1b39f 9 108 3379
+1b3a8 16 112 3379
+1b3be 15 113 3379
+1b3d3 15 114 3379
+1b3e8 18 115 3379
+1b400 15 116 3379
+1b415 13 117 3379
+1b428 14 118 3379
+1b43c 18 120 3379
+1b454 15 121 3379
+1b469 15 122 3379
+1b47e 15 123 3379
+1b493 18 124 3379
+1b4ab 15 125 3379
+1b4c0 15 126 3379
+1b4d5 15 128 3379
+1b4ea 18 129 3379
+1b502 15 130 3379
+1b517 15 131 3379
+1b52c 15 132 3379
+1b541 18 133 3379
+1b559 15 134 3379
+1b56e 15 135 3379
+1b583 15 136 3379
+1b598 18 137 3379
+1b5b0 15 138 3379
+1b5c5 15 139 3379
+1b5da 15 141 3379
+1b5ef 18 142 3379
+1b607 15 143 3379
+1b61c 15 144 3379
+1b631 15 145 3379
+1b646 18 146 3379
+1b65e 18 147 3379
+1b676 18 148 3379
+1b68e 18 149 3379
+1b6a6 1b 150 3379
+1b6c1 18 151 3379
+1b6d9 18 152 3379
+1b6f1 18 154 3379
+1b709 1b 155 3379
+1b724 18 160 3379
+1b73c 18 161 3379
+1b754 1b 163 3379
+1b76f 20 165 3379
+1b78f a 169 3379
+1b799 2 170 3379
+FUNC 1b79b 190 4 __free_lc_time
+1b79b 1 179 3379
+1b79c c 180 3379
+1b7a8 8 183 3379
+1b7b0 8 184 3379
+1b7b8 8 185 3379
+1b7c0 8 186 3379
+1b7c8 8 187 3379
+1b7d0 8 188 3379
+1b7d8 7 189 3379
+1b7df 8 191 3379
+1b7e7 8 192 3379
+1b7ef 8 193 3379
+1b7f7 8 194 3379
+1b7ff 8 195 3379
+1b807 8 196 3379
+1b80f 8 197 3379
+1b817 8 199 3379
+1b81f b 200 3379
+1b82a 8 201 3379
+1b832 8 202 3379
+1b83a 8 203 3379
+1b842 8 204 3379
+1b84a 8 205 3379
+1b852 8 206 3379
+1b85a 8 207 3379
+1b862 8 208 3379
+1b86a 8 209 3379
+1b872 8 210 3379
+1b87a 8 212 3379
+1b882 8 213 3379
+1b88a 8 214 3379
+1b892 8 215 3379
+1b89a 8 216 3379
+1b8a2 b 217 3379
+1b8ad b 218 3379
+1b8b8 b 219 3379
+1b8c3 b 220 3379
+1b8ce b 221 3379
+1b8d9 b 222 3379
+1b8e4 b 223 3379
+1b8ef b 225 3379
+1b8fa b 226 3379
+1b905 b 228 3379
+1b910 b 229 3379
+1b91b f 230 3379
+1b92a 1 232 3379
+FUNC 1b92b 73 4 __init_time
+1b92b 4 56 3379
+1b92f f 60 3379
+1b93e 16 64 3379
+1b954 4 65 3379
+1b958 b 67 3379
+1b963 6 69 3379
+1b969 8 70 3379
+1b971 2 71 3379
+1b973 6 73 3379
+1b979 2 74 3379
+1b97b 2 75 3379
+1b97d 18 78 3379
+1b995 2 82 3379
+1b997 6 83 3379
+1b99d 1 84 3379
+FUNC 1b99e 33 0 fix_grouping
+1b99e 0 32 3427
+1b99e 8 40 3427
+1b9a6 a 43 3427
+1b9b0 4 45 3427
+1b9b4 1 61 3427
+1b9b5 6 40 3427
+1b9bb 1 63 3427
+1b9bc 4 50 3427
+1b9c0 2 52 3427
+1b9c2 7 55 3427
+1b9c9 6 56 3427
+1b9cf 2 60 3427
+FUNC 1b9d1 40 4 __free_lconv_num
+1b9d1 1 211 3427
+1b9d2 8 212 3427
+1b9da a 215 3427
+1b9e4 7 216 3427
+1b9eb b 218 3427
+1b9f6 7 219 3427
+1b9fd b 221 3427
+1ba08 8 222 3427
+1ba10 1 223 3427
+FUNC 1ba11 1c8 4 __init_numeric
+1ba11 7 84 3427
+1ba18 4 92 3427
+1ba1c 2 93 3427
+1ba1e 11 96 3427
+1ba2f 3 177 3427
+1ba32 3 178 3427
+1ba35 c 179 3427
+1ba41 14 102 3427
+1ba55 8 103 3427
+1ba5d 9 108 3427
+1ba66 13 113 3427
+1ba79 9 115 3427
+1ba82 2 116 3427
+1ba84 2 118 3427
+1ba86 9 120 3427
+1ba8f 12 125 3427
+1baa1 8 127 3427
+1baa9 a 128 3427
+1bab3 7 129 3427
+1baba 2 131 3427
+1babc 19 140 3427
+1bad5 15 142 3427
+1baea 1b 144 3427
+1bb05 2 146 3427
+1bb07 c 148 3427
+1bb13 1e 154 3427
+1bb31 2 156 3427
+1bb33 17 154 3427
+1bb4a b 164 3427
+1bb55 9 165 3427
+1bb5e c 166 3427
+1bb6a 8 168 3427
+1bb72 7 169 3427
+1bb79 2 170 3427
+1bb7b 13 186 3427
+1bb8e 11 191 3427
+1bb9f b 193 3427
+1bbaa d 194 3427
+1bbb7 9 197 3427
+1bbc0 9 198 3427
+1bbc9 9 200 3427
+1bbd2 5 201 3427
+1bbd7 2 202 3427
+FUNC 1bbd9 33 0 fix_grouping
+1bbd9 0 214 3470
+1bbd9 8 222 3470
+1bbe1 a 225 3470
+1bbeb 4 227 3470
+1bbef 1 243 3470
+1bbf0 6 222 3470
+1bbf6 1 245 3470
+1bbf7 4 232 3470
+1bbfb 2 234 3470
+1bbfd 7 237 3470
+1bc04 6 238 3470
+1bc0a 2 242 3470
+FUNC 1bc0c 89 4 __free_lconv_mon
+1bc0c 1 255 3470
+1bc0d 8 256 3470
+1bc15 b 259 3470
+1bc20 7 260 3470
+1bc27 b 262 3470
+1bc32 7 263 3470
+1bc39 b 265 3470
+1bc44 7 266 3470
+1bc4b b 268 3470
+1bc56 7 269 3470
+1bc5d b 271 3470
+1bc68 7 272 3470
+1bc6f b 274 3470
+1bc7a 7 275 3470
+1bc81 b 277 3470
+1bc8c 8 278 3470
+1bc94 1 279 3470
+FUNC 1bc95 2c4 4 __init_monetary
+1bc95 8 65 3470
+1bc9d 6 73 3470
+1bca3 13 77 3470
+1bcb6 3 187 3470
+1bcb9 3 188 3470
+1bcbc a 189 3470
+1bcc6 11 83 3470
+1bcd7 8 84 3470
+1bcdf f 89 3470
+1bcee 7 91 3470
+1bcf5 2 92 3470
+1bcf7 2 94 3470
+1bcf9 9 96 3470
+1bd02 f 101 3470
+1bd11 6 103 3470
+1bd17 9 104 3470
+1bd20 2 105 3470
+1bd22 2 107 3470
+1bd24 4 112 3470
+1bd28 14 117 3470
+1bd3c 14 119 3470
+1bd50 14 121 3470
+1bd64 17 123 3470
+1bd7b 14 125 3470
+1bd8f 14 128 3470
+1bda3 14 130 3470
+1bdb7 17 133 3470
+1bdce 14 135 3470
+1bde2 14 137 3470
+1bdf6 14 139 3470
+1be0a 17 141 3470
+1be21 14 143 3470
+1be35 14 145 3470
+1be49 17 147 3470
+1be60 2 149 3470
+1be62 6 150 3470
+1be68 6 151 3470
+1be6e 8 152 3470
+1be76 b 153 3470
+1be81 5 154 3470
+1be86 1c 157 3470
+1bea2 2 159 3470
+1bea4 17 157 3470
+1bebb c 169 3470
+1bec7 3 175 3470
+1beca 32 181 3470
+1befc 11 194 3470
+1bf0d 15 199 3470
+1bf22 b 201 3470
+1bf2d d 202 3470
+1bf3a 9 204 3470
+1bf43 9 205 3470
+1bf4c 6 206 3470
+1bf52 5 208 3470
+1bf57 2 209 3470
+FUNC 1bf59 395 4 __init_ctype
+1bf59 11 59 3562
+1bf6a 6 60 3562
+1bf70 1f 82 3562
+1bf8f 7 84 3562
+1bf96 20 89 3562
+1bfb6 7 94 3562
+1bfbd 10 98 3562
+1bfcd b 100 3562
+1bfd8 b 102 3562
+1bfe3 12 104 3562
+1bff5 2f 106 3562
+1c024 5 109 3562
+1c029 2 112 3562
+1c02b e 113 3562
+1c039 15 115 3562
+1c04e a 118 3562
+1c058 4 121 3562
+1c05c 8 124 3562
+1c064 e 126 3562
+1c072 9 128 3562
+1c07b b 129 3562
+1c086 b 128 3562
+1c091 2c 140 3562
+1c0bd 33 155 3562
+1c0f0 2d 166 3562
+1c11d 37 178 3562
+1c154 11 180 3562
+1c165 17 182 3562
+1c17c 15 183 3562
+1c191 d 180 3562
+1c19e 12 189 3562
+1c1b0 f 190 3562
+1c1bf 12 191 3562
+1c1d1 18 195 3562
+1c1e9 11 198 3562
+1c1fa 13 199 3562
+1c20d e 200 3562
+1c21b e 201 3562
+1c229 9 203 3562
+1c232 6 204 3562
+1c238 9 206 3562
+1c241 9 207 3562
+1c24a 9 208 3562
+1c253 9 209 3562
+1c25c 9 210 3562
+1c265 9 213 3562
+1c26e 4 214 3562
+1c272 8 217 3562
+1c27a 8 218 3562
+1c282 8 219 3562
+1c28a 10 220 3562
+1c29a 13 227 3562
+1c2ad 2 231 3562
+1c2af 6 232 3562
+1c2b5 a 233 3562
+1c2bf a 234 3562
+1c2c9 a 235 3562
+1c2d3 a 236 3562
+1c2dd 2 238 3562
+1c2df f 240 3562
+FUNC 1c2ee 29 0 ___mb_cur_max_func
+1c2ee 0 248 3562
+1c2ee 7 254 3562
+1c2f5 3 255 3562
+1c2f8 18 257 3562
+1c310 6 259 3562
+1c316 1 260 3562
+FUNC 1c317 16 4 ___mb_cur_max_l_func
+1c317 0 263 3562
+1c317 15 264 3562
+1c32c 1 265 3562
+FUNC 1c32d 26 0 ___lc_codepage_func
+1c32d 0 268 3562
+1c32d 7 274 3562
+1c334 3 275 3562
+1c337 18 277 3562
+1c34f 3 279 3562
+1c352 1 280 3562
+FUNC 1c353 26 0 ___lc_collate_cp_func
+1c353 0 284 3562
+1c353 7 290 3562
+1c35a 3 291 3562
+1c35d 18 293 3562
+1c375 3 295 3562
+1c378 1 296 3562
+FUNC 1c379 26 0 ___lc_handle_func
+1c379 0 300 3562
+1c379 7 306 3562
+1c380 3 307 3562
+1c383 18 309 3562
+1c39b 3 311 3562
+1c39e 1 312 3562
+FUNC 1c39f 3 4 __init_collate
+1c39f 0 41 3650
+1c39f 2 42 3650
+1c3a1 1 43 3650
+FUNC 1c3a2 fe 4 _Getdays_l
+1c3a2 9 111 516
+1c3ab d 115 516
+1c3b8 9 117 516
+1c3c1 9 119 516
+1c3ca 28 120 516
+1c3f2 b 121 516
+1c3fd c 123 516
+1c409 4 126 516
+1c40d 30 128 516
+1c43d 8 129 516
+1c445 31 131 516
+1c476 12 132 516
+1c488 3 134 516
+1c48b 13 137 516
+1c49e 2 138 516
+FUNC 1c4a0 9 0 _Getdays
+1c4a0 0 142 516
+1c4a0 8 143 516
+1c4a8 1 144 516
+FUNC 1c4a9 fe 4 _Getmonths_l
+1c4a9 9 150 516
+1c4b2 d 154 516
+1c4bf 16 156 516
+1c4d5 2b 159 516
+1c500 b 160 516
+1c50b 8 162 516
+1c513 a 163 516
+1c51d 2d 167 516
+1c54a 8 168 516
+1c552 2c 170 516
+1c57e 11 171 516
+1c58f 3 173 516
+1c592 13 176 516
+1c5a5 2 177 516
+FUNC 1c5a7 9 0 _Getmonths
+1c5a7 0 181 516
+1c5a7 8 182 516
+1c5af 1 183 516
+FUNC 1c5b0 355 4 _Gettnames_l
+1c5b0 9 189 516
+1c5b9 d 193 516
+1c5c6 9 195 516
+1c5cf 9 197 516
+1c5d8 28 198 516
+1c600 d 199 516
+1c60d 29 200 516
+1c636 18 201 516
+1c64e 11 202 516
+1c65f f 203 516
+1c66e f 204 516
+1c67d 7 205 516
+1c684 e 206 516
+1c692 8 208 516
+1c69a 12 212 516
+1c6ac 13 213 516
+1c6bf 6 214 516
+1c6c5 2a 215 516
+1c6ef 6 216 516
+1c6f5 d 217 516
+1c702 26 218 516
+1c728 1c 219 516
+1c744 18 221 516
+1c75c 6 222 516
+1c762 26 223 516
+1c788 a 224 516
+1c792 5 225 516
+1c797 2a 226 516
+1c7c1 18 227 516
+1c7d9 30 230 516
+1c809 a 231 516
+1c813 30 233 516
+1c843 a 234 516
+1c84d 30 236 516
+1c87d a 237 516
+1c887 30 239 516
+1c8b7 a 240 516
+1c8c1 30 242 516
+1c8f1 12 245 516
+1c903 2 246 516
+FUNC 1c905 9 0 _Gettnames
+1c905 0 250 516
+1c905 8 251 516
+1c90d 1 252 516
+FUNC 1c90e 20 0 _store_str
+1c90e 0 869 516
+1c90e f 871 516
+1c91d 7 872 516
+1c924 9 873 516
+1c92d 1 875 516
+FUNC 1c92e 36 0 _store_number
+1c92e 0 965 516
+1c92e 8 973 516
+1c936 c 976 516
+1c942 2 977 516
+1c944 b 978 516
+1c94f 2 981 516
+1c951 2 982 516
+1c953 1 983 516
+1c954 7 988 516
+1c95b 3 989 516
+1c95e 5 990 516
+1c963 1 991 516
+FUNC 1c964 79 4 _store_num
+1c964 8 909 516
+1c96c 2 910 516
+1c96e 8 912 516
+1c976 33 913 516
+1c9a9 2 914 516
+1c9ab 4 917 516
+1c9af 8 918 516
+1c9b7 b 919 516
+1c9c2 c 921 516
+1c9ce 5 923 516
+1c9d3 2 924 516
+1c9d5 2 926 516
+1c9d7 4 927 516
+1c9db 2 928 516
+FUNC 1c9dd 3e6 10 _expandtime
+1c9dd 5 548 516
+1c9e2 4f 558 516
+1ca31 16 659 516
+1ca47 5 662 516
+1ca4c 16 587 516
+1ca62 7 589 516
+1ca69 5 590 516
+1ca6e 16 571 516
+1ca84 7 573 516
+1ca8b 5 574 516
+1ca90 5 822 516
+1ca95 7 823 516
+1ca9c 5 824 516
+1caa1 16 667 516
+1cab7 10 668 516
+1cac7 2 669 516
+1cac9 5 672 516
+1cace 23 558 516
+1caf1 6 787 516
+1caf7 5 789 516
+1cafc 15 736 516
+1cb11 2 737 516
+1cb13 2 739 516
+1cb15 5 740 516
+1cb1a 15 722 516
+1cb2f 2 723 516
+1cb31 16 742 516
+1cb47 4 743 516
+1cb4b 2 744 516
+1cb4d 5 745 516
+1cb52 6 746 516
+1cb58 8 747 516
+1cb60 1 748 516
+1cb61 5 752 516
+1cb66 f 715 516
+1cb75 5 718 516
+1cb7a 3 696 516
+1cb7d 2 699 516
+1cb7f 1d 804 516
+1cb9c 6 806 516
+1cba2 d 808 516
+1cbaf 2 809 516
+1cbb1 37 558 516
+1cbe8 19 678 516
+1cc01 8 680 516
+1cc09 2 681 516
+1cc0b 15 650 516
+1cc20 13 652 516
+1cc33 5 653 516
+1cc38 1e 601 516
+1cc56 2 603 516
+1cc58 5 606 516
+1cc5d 2 607 516
+1cc5f 2 608 516
+1cc61 25 615 516
+1cc86 2 617 516
+1cc88 1 627 516
+1cc89 2 642 516
+1cc8b e 579 516
+1cc99 7 581 516
+1cca0 5 582 516
+1cca5 2d 562 516
+1ccd2 6 564 516
+1ccd8 5 565 516
+1ccdd e 687 516
+1cceb 3 689 516
+1ccee 5 690 516
+1ccf3 15 558 516
+1cd08 2 834 516
+1cd0a 5 814 516
+1cd0f 19 817 516
+1cd28 5 819 516
+1cd2d d 795 516
+1cd3a b 798 516
+1cd45 5 799 516
+1cd4a 11 762 516
+1cd5b 5 764 516
+1cd60 1 774 516
+1cd61 5 776 516
+1cd66 16 729 516
+1cd7c 6 731 516
+1cd82 5 732 516
+1cd87 16 704 516
+1cd9d 3 705 516
+1cda0 b 706 516
+1cdab 2 707 516
+1cdad e 708 516
+1cdbb 6 839 516
+1cdc1 2 840 516
+FUNC 1cdc3 45d 18 _store_winword
+1cdc3 10 1035 516
+1cdd3 5 1043 516
+1cdd8 a 1053 516
+1cde2 3 1043 516
+1cde5 6 1053 516
+1cdeb 2 1054 516
+1cded 6 1049 516
+1cdf3 2 1050 516
+1cdf5 6 1046 516
+1cdfb 10 1057 516
+1ce0b 4 1066 516
+1ce0f 8 1067 516
+1ce17 6 1069 516
+1ce1d d 1075 516
+1ce2a a 1076 516
+1ce34 8 1077 516
+1ce3c 4 1078 516
+1ce40 2a 1085 516
+1ce6a b 1087 516
+1ce75 31 1092 516
+1cea6 7 1093 516
+1cead 3 1097 516
+1ceb0 13 1100 516
+1cec3 10 1101 516
+1ced3 b 1102 516
+1cede b 1103 516
+1cee9 9 1106 516
+1cef2 3 1291 516
+1cef5 12 1292 516
+1cf07 11 1114 516
+1cf18 5 1117 516
+1cf1d b 1120 516
+1cf28 37 1125 516
+1cf5f 14 1274 516
+1cf73 c 1277 516
+1cf7f 8 1283 516
+1cf87 4 1284 516
+1cf8b 9 1286 516
+1cf94 c 1287 516
+1cfa0 5 1277 516
+1cfa5 e 1128 516
+1cfb3 7 1133 516
+1cfba 7 1132 516
+1cfc1 7 1130 516
+1cfc8 2 1131 516
+1cfca 5 1134 516
+1cfcf a 1156 516
+1cfd9 7 1158 516
+1cfe0 2 1159 516
+1cfe2 5 1160 516
+1cfe7 11 1175 516
+1cff8 5 1176 516
+1cffd 11 1177 516
+1d00e 6 1178 516
+1d014 2 1179 516
+1d016 5 1180 516
+1d01b b 1225 516
+1d026 13 1226 516
+1d039 4 1228 516
+1d03d 1a 1233 516
+1d057 9 1236 516
+1d060 8 1242 516
+1d068 4 1243 516
+1d06c 9 1246 516
+1d075 8 1247 516
+1d07d 5 1277 516
+1d082 1 1230 516
+1d083 5 1250 516
+1d088 12 1136 516
+1d09a 7 1141 516
+1d0a1 7 1140 516
+1d0a8 7 1138 516
+1d0af 2 1139 516
+1d0b1 5 1142 516
+1d0b6 29 1125 516
+1d0df e 1144 516
+1d0ed 7 1147 516
+1d0f4 2 1146 516
+1d0f6 5 1148 516
+1d0fb 7 1182 516
+1d102 b 1183 516
+1d10d 2 1184 516
+1d10f 6 1185 516
+1d115 12 1187 516
+1d127 17 1188 516
+1d13e c 1191 516
+1d14a 8 1197 516
+1d152 4 1198 516
+1d156 8 1201 516
+1d15e 2 1202 516
+1d160 5 1203 516
+1d165 9 1204 516
+1d16e 1a 1205 516
+1d188 9 1207 516
+1d191 8 1212 516
+1d199 4 1213 516
+1d19d 9 1215 516
+1d1a6 8 1216 516
+1d1ae 2 1220 516
+1d1b0 d 1168 516
+1d1bd 7 1170 516
+1d1c4 2 1171 516
+1d1c6 2 1172 516
+1d1c8 d 1162 516
+1d1d5 7 1164 516
+1d1dc 2 1165 516
+1d1de 2 1166 516
+1d1e0 d 1150 516
+1d1ed 7 1152 516
+1d1f4 2 1153 516
+1d1f6 1b 1268 516
+1d211 3 1272 516
+1d214 5 1273 516
+1d219 7 1194 516
+FUNC 1d220 1af 18 _Strftime_l
+1d220 6 356 516
+1d226 4 361 516
+1d22a 13 362 516
+1d23d 33 364 516
+1d270 33 365 516
+1d2a3 d 368 516
+1d2b0 10 375 516
+1d2c0 e 385 516
+1d2ce a 387 516
+1d2d8 1e 435 516
+1d2f6 4 438 516
+1d2fa a 446 516
+1d304 5 447 516
+1d309 b 452 516
+1d314 3 453 516
+1d317 2 454 516
+1d319 7 400 516
+1d320 1 405 516
+1d321 2 408 516
+1d323 5 409 516
+1d328 1 411 516
+1d329 1 412 516
+1d32a 1d 415 516
+1d347 1 428 516
+1d348 5 385 516
+1d34d 5 464 516
+1d352 5 469 516
+1d357 13 470 516
+1d36a 3 441 516
+1d36d f 478 516
+1d37c b 481 516
+1d387 2 483 516
+1d389 b 402 516
+1d394 2 403 516
+1d396 5 421 516
+1d39b 7 423 516
+1d3a2 2 464 516
+1d3a4 18 485 516
+1d3bc 11 488 516
+1d3cd 2 490 516
+FUNC 1d3cf 1e 14 _strftime_l
+1d3cf 3 291 516
+1d3d2 19 292 516
+1d3eb 2 293 516
+FUNC 1d3ed 1d 10 strftime
+1d3ed 0 300 516
+1d3ed 1c 301 516
+1d409 1 302 516
+FUNC 1d40a 1e 14 _Strftime
+1d40a 3 343 516
+1d40d 19 345 516
+1d426 2 346 516
+FUNC 1d428 26 0 localeconv
+1d428 0 69 3302
+1d428 5 75 3302
+1d42d 1b 78 3302
+1d448 5 79 3302
+1d44d 1 80 3302
+FUNC 1d450 46 8 strcspn
+1d450 4 191 924
+1d454 2 198 924
+1d456 1 199 924
+1d457 1 200 924
+1d458 1 201 924
+1d459 1 202 924
+1d45a 1 203 924
+1d45b 1 204 924
+1d45c 1 205 924
+1d45d 1 206 924
+1d45e 6 212 924
+1d464 2 216 924
+1d466 2 217 924
+1d468 2 218 924
+1d46a 3 219 924
+1d46d 4 220 924
+1d471 2 221 924
+1d473 3 227 924
+1d476 6 229 924
+1d47c 3 234 924
+1d47f 2 236 924
+1d481 2 237 924
+1d483 2 238 924
+1d485 3 239 924
+1d488 4 240 924
+1d48c 2 245 924
+1d48e 2 255 924
+1d490 3 257 924
+1d493 3 259 924
+FUNC 1d496 60 c TranslateName
+1d496 3 340 3849
+1d499 3 342 3849
+1d49c 3 343 3849
+1d49f b 346 3849
+1d4aa a 348 3849
+1d4b4 14 349 3849
+1d4c8 6 351 3849
+1d4ce a 352 3849
+1d4d8 2 353 3849
+1d4da 4 354 3849
+1d4de 2 355 3849
+1d4e0 3 356 3849
+1d4e3 7 346 3849
+1d4ea a 359 3849
+1d4f4 2 360 3849
+FUNC 1d4f6 14 0 GetLcidFromDefault
+1d4f6 0 761 3849
+1d4f6 7 762 3849
+1d4fd c 763 3849
+1d509 1 764 3849
+FUNC 1d50a 77 0 ProcessCodePage
+1d50a 13 784 3849
+1d51d 1a 787 3849
+1d537 11 795 3849
+1d548 8 799 3849
+1d550 2 801 3849
+1d552 18 791 3849
+1d56a 3 793 3849
+1d56d 7 805 3849
+1d574 d 806 3849
+FUNC 1d581 1e 4 TestDefaultCountry
+1d581 0 826 3849
+1d581 2 830 3849
+1d583 15 832 3849
+1d598 3 835 3849
+1d59b 1 836 3849
+1d59c 2 833 3849
+1d59e 1 836 3849
+FUNC 1d59f 32 0 LcidFromHexString
+1d59f 1 893 3849
+1d5a0 2 895 3849
+1d5a2 2 897 3849
+1d5a4 9 899 3849
+1d5ad 5 900 3849
+1d5b2 8 901 3849
+1d5ba 3 902 3849
+1d5bd 10 903 3849
+1d5cd 3 906 3849
+1d5d0 1 907 3849
+FUNC 1d5d1 1b 0 GetPrimaryLen
+1d5d1 0 926 3849
+1d5d1 2 927 3849
+1d5d3 3 930 3849
+1d5d6 12 931 3849
+1d5e8 1 933 3849
+1d5e9 2 935 3849
+1d5eb 1 938 3849
+FUNC 1d5ec 96 4 CountryEnumProc
+1d5ec 15 717 3849
+1d601 7 718 3849
+1d608 f 719 3849
+1d617 23 725 3849
+1d63a 3 728 3849
+1d63d 3 729 3849
+1d640 12 731 3849
+1d652 b 734 3849
+1d65d a 738 3849
+1d667 b 741 3849
+1d672 10 742 3849
+FUNC 1d682 72 8 TestDefaultLanguage
+1d682 11 858 3849
+1d693 22 864 3849
+1d6b5 4 865 3849
+1d6b9 d 867 3849
+1d6c6 1c 871 3849
+1d6e2 2 872 3849
+1d6e4 3 874 3849
+1d6e7 d 875 3849
+FUNC 1d6f4 1d0 4 LangCountryEnumProc
+1d6f4 16 435 3849
+1d70a 7 436 3849
+1d711 d 437 3849
+1d71e 27 444 3849
+1d745 4 447 3849
+1d749 8 448 3849
+1d751 16 450 3849
+1d767 1d 456 3849
+1d784 2 460 3849
+1d786 11 462 3849
+1d797 7 467 3849
+1d79e 5 468 3849
+1d7a3 6 472 3849
+1d7a9 1a 475 3849
+1d7c3 14 482 3849
+1d7d7 3 483 3849
+1d7da a 487 3849
+1d7e4 b 490 3849
+1d7ef 6 493 3849
+1d7f5 3 494 3849
+1d7f8 12 501 3849
+1d80a 1d 506 3849
+1d827 6 510 3849
+1d82d c 513 3849
+1d839 16 518 3849
+1d84f 8 522 3849
+1d857 14 528 3849
+1d86b 2 531 3849
+1d86d 2 540 3849
+1d86f 1b 550 3849
+1d88a f 553 3849
+1d899 7 557 3849
+1d8a0 5 558 3849
+1d8a5 3 559 3849
+1d8a8 b 566 3849
+1d8b3 11 567 3849
+FUNC 1d8c4 bf 4 LanguageEnumProc
+1d8c4 15 624 3849
+1d8d9 7 625 3849
+1d8e0 f 626 3849
+1d8ef 23 632 3849
+1d912 3 635 3849
+1d915 3 636 3849
+1d918 11 639 3849
+1d929 7 643 3849
+1d930 2 650 3849
+1d932 1d 651 3849
+1d94f f 654 3849
+1d95e a 658 3849
+1d968 b 662 3849
+1d973 10 663 3849
+FUNC 1d983 2c 0 GetLcidFromCountry
+1d983 0 686 3849
+1d983 10 687 3849
+1d993 11 689 3849
+1d9a4 6 693 3849
+1d9aa 4 694 3849
+1d9ae 1 695 3849
+FUNC 1d9af 65 0 GetLcidFromLangCountry
+1d9af 0 386 3849
+1d9af 7 388 3849
+1d9b6 1a 389 3849
+1d9d0 5 390 3849
+1d9d5 17 392 3849
+1d9ec 10 394 3849
+1d9fc 13 402 3849
+1da0f 4 403 3849
+1da13 1 404 3849
+FUNC 1da14 3c 0 GetLcidFromLanguage
+1da14 0 591 3849
+1da14 13 593 3849
+1da27 e 594 3849
+1da35 10 596 3849
+1da45 6 600 3849
+1da4b 4 601 3849
+1da4f 1 602 3849
+FUNC 1da50 1e3 c __get_qualified_locale
+1da50 4 205 3849
+1da54 5 208 3849
+1da59 12 212 3849
+1da6b 7 215 3849
+1da72 5 217 3849
+1da77 3 222 3849
+1da7a f 223 3849
+1da89 10 226 3849
+1da99 d 230 3849
+1daa6 a 232 3849
+1dab0 5 235 3849
+1dab5 2 237 3849
+1dab7 5 240 3849
+1dabc 5 243 3849
+1dac1 14 248 3849
+1dad5 a 250 3849
+1dadf 5 252 3849
+1dae4 2 254 3849
+1dae6 5 256 3849
+1daeb 2 261 3849
+1daed a 263 3849
+1daf7 28 266 3849
+1db1f 2 268 3849
+1db21 13 271 3849
+1db34 3 277 3849
+1db37 6 278 3849
+1db3d 17 281 3849
+1db54 32 285 3849
+1db86 d 289 3849
+1db93 6 290 3849
+1db99 8 293 3849
+1dba1 7 295 3849
+1dba8 8 296 3849
+1dbb0 4 297 3849
+1dbb4 8 301 3849
+1dbbc d 305 3849
+1dbc9 23 306 3849
+1dbec 2 307 3849
+1dbee f 308 3849
+1dbfd 2 309 3849
+1dbff 12 311 3849
+1dc11 2 312 3849
+1dc13 14 313 3849
+1dc27 5 315 3849
+1dc2c 6 286 3849
+1dc32 1 316 3849
+FUNC 1dc33 12 0 cmpResult
+FUNC 1dc45 18 0 cmpBYTE
+FUNC 1dc5d 40 0 cmpWORD
+FUNC 1dc9d 78 0 cmpDWORD
+FUNC 1dd15 1490 0 unaligned_memcmp
+FUNC 1f1a5 1680 c memcmp
+FUNC 20825 be c strncmp
+20825 4 42 876
+20829 5 43 876
+2082e 7 45 876
+20835 7 46 876
+2083c 6 48 876
+20842 d 51 876
+2084f 11 56 876
+20860 c 61 876
+2086c c 66 876
+20878 15 71 876
+2088d 2 81 876
+2088f a 73 876
+20899 a 68 876
+208a3 a 63 876
+208ad 10 58 876
+208bd 2 79 876
+208bf a 81 876
+208c9 1 85 876
+208ca 4 86 876
+208ce 5 79 876
+208d3 4 89 876
+208d7 2 90 876
+208d9 a 83 876
+FUNC 208f0 40 8 strpbrk
+208f0 4 191 869
+208f4 2 198 869
+208f6 1 199 869
+208f7 1 200 869
+208f8 1 201 869
+208f9 1 202 869
+208fa 1 203 869
+208fb 1 204 869
+208fc 1 205 869
+208fd 1 206 869
+208fe 6 212 869
+20904 2 216 869
+20906 2 217 869
+20908 2 218 869
+2090a 3 219 869
+2090d 4 220 869
+20911 2 221 869
+20913 5 227 869
+20918 2 236 869
+2091a 2 237 869
+2091c 2 238 869
+2091e 3 239 869
+20921 4 240 869
+20925 2 247 869
+20927 3 248 869
+2092a 3 257 869
+2092d 3 259 869
+FUNC 20930 82 c _iswctype_l
+20930 6 66 6445
+20936 8 69 6445
+2093e 6 70 6445
+20944 8 71 6445
+2094c 18 72 6445
+20964 2 73 6445
+20966 b 75 6445
+20971 25 85 6445
+20996 3 86 6445
+20999 d 87 6445
+209a6 a 89 6445
+209b0 2 90 6445
+FUNC 209b2 6e 8 iswctype
+209b2 4 96 6445
+209b6 8 97 6445
+209be 2 99 6445
+209c0 2 122 6445
+209c2 8 101 6445
+209ca 14 103 6445
+209de 2 122 6445
+209e0 9 106 6445
+209e9 25 117 6445
+20a0e 10 121 6445
+20a1e 2 122 6445
+FUNC 20a20 5 8 is_wctype
+20a20 0 148 6445
+20a20 5 149 6445
+FUNC 20a25 22b 14 strtoxl
+20a25 8 80 6309
+20a2d b 86 6309
+20a38 3 89 6309
+20a3b b 92 6309
+20a46 30 94 6309
+20a76 11 95 6309
+20a87 c 100 6309
+20a93 34 101 6309
+20ac7 5 102 6309
+20acc 5 104 6309
+20ad1 4 105 6309
+20ad5 2 106 6309
+20ad7 5 108 6309
+20adc 3 109 6309
+20adf 1d 111 6309
+20afc 4 118 6309
+20b00 5 121 6309
+20b05 9 122 6309
+20b0e a 123 6309
+20b18 9 126 6309
+20b21 7 124 6309
+20b28 2 129 6309
+20b2a 5 140 6309
+20b2f f 142 6309
+20b3e 1 143 6309
+20b3f 9 144 6309
+20b48 8 149 6309
+20b50 c 154 6309
+20b5c 8 155 6309
+20b64 7 156 6309
+20b6b 13 157 6309
+20b7e 5 160 6309
+20b83 4 164 6309
+20b87 b 171 6309
+20b92 4 177 6309
+20b96 6 178 6309
+20b9c 8 190 6309
+20ba4 6 193 6309
+20baa 3 195 6309
+20bad 4 196 6309
+20bb1 2 198 6309
+20bb3 c 173 6309
+20bbf 3 185 6309
+20bc2 2 186 6309
+20bc4 24 201 6309
+20be8 5 204 6309
+20bed c 205 6309
+20bf9 6 206 6309
+20bff 10 207 6309
+20c0f 7 213 6309
+20c16 2 215 6309
+20c18 6 217 6309
+20c1e 3 219 6309
+20c21 12 221 6309
+20c33 7 113 6309
+20c3a 2 115 6309
+20c3c 12 116 6309
+20c4e 2 222 6309
+FUNC 20c50 29 c strtol
+20c50 3 229 6309
+20c53 8 230 6309
+20c5b 13 232 6309
+20c6e 9 236 6309
+20c77 2 238 6309
+FUNC 20c79 1b 10 _strtol_l
+20c79 0 246 6309
+20c79 1a 247 6309
+20c93 1 248 6309
+FUNC 20c94 2a c strtoul
+20c94 3 255 6309
+20c97 7 256 6309
+20c9e 14 258 6309
+20cb2 a 262 6309
+20cbc 2 264 6309
+FUNC 20cbe 1b 10 _strtoul_l
+20cbe 0 272 6309
+20cbe 1a 273 6309
+20cd8 1 274 6309
+FUNC 20cd9 1f 0 __initconin
+20cd9 0 58 5008
+20cd9 1e 65 5008
+20cf7 1 67 5008
+FUNC 20cf8 1f 0 __initconout
+20cf8 0 90 5008
+20cf8 1e 97 5008
+20d16 1 98 5008
+FUNC 20d17 2d 0 __termcon
+20d17 0 120 5008
+20d17 16 121 5008
+20d2d 3 122 5008
+20d30 f 125 5008
+20d3f 4 126 5008
+20d43 1 128 5008
+FUNC 20d44 94 4 _close_nolock
+20d44 1 72 5094
+20d45 54 93 5094
+20d99 a 99 5094
+20da3 2 96 5094
+20da5 6 101 5094
+20dab b 103 5094
+20db6 11 105 5094
+20dc7 7 107 5094
+20dce 5 108 5094
+20dd3 4 111 5094
+20dd7 1 112 5094
+FUNC 20dd8 cd 4 _close
+20dd8 c 42 5094
+20de4 23 46 5094
+20e07 2f 47 5094
+20e36 20 48 5094
+20e56 7 50 5094
+20e5d 3 52 5094
+20e60 9 53 5094
+20e69 c 54 5094
+20e75 2 55 5094
+20e77 b 56 5094
+20e82 4 57 5094
+20e86 c 61 5094
+20e92 3 65 5094
+20e95 6 66 5094
+20e9b a 62 5094
+FUNC 20ea5 2c 4 _freebuf
+20ea5 1 47 1927
+20ea6 f 50 1927
+20eb5 8 52 1927
+20ebd 7 54 1927
+20ec4 8 55 1927
+20ecc 4 56 1927
+20ed0 1 58 1927
+FUNC 20ed1 2a 0 _purecall
+20ed1 0 43 3119
+20ed1 b 44 3119
+20edc 5 45 3119
+20ee1 2 47 3119
+20ee3 7 54 3119
+20eea c 56 3119
+20ef6 5 57 3119
+FUNC 20efb 22 4 _set_purecall_handler
+20efb 1 82 3119
+20efc b 85 3119
+20f07 12 86 3119
+20f19 3 88 3119
+20f1c 1 89 3119
+FUNC 20f1d d 0 _get_purecall_handler
+20f1d 0 92 3119
+20f1d c 93 3119
+20f29 1 94 3119
+FUNC 20f30 34 0 _allmul
+20f30 0 47 5116
+20f30 4 62 5116
+20f34 4 63 5116
+20f38 2 64 5116
+20f3a 4 65 5116
+20f3e 2 66 5116
+20f40 4 68 5116
+20f44 2 69 5116
+20f46 3 71 5116
+20f49 1 74 5116
+20f4a 2 81 5116
+20f4c 2 82 5116
+20f4e 4 84 5116
+20f52 4 85 5116
+20f56 2 86 5116
+20f58 4 88 5116
+20f5c 2 89 5116
+20f5e 2 90 5116
+20f60 1 92 5116
+20f61 3 94 5116
+FUNC 20f64 11 4 atol
+20f64 0 55 6631
+20f64 10 56 6631
+20f74 1 57 6631
+FUNC 20f75 15 8 _atol_l
+20f75 0 64 6631
+20f75 14 65 6631
+20f89 1 66 6631
+FUNC 20f8a 5 4 atoi
+20f8a 0 99 6631
+20f8a 5 100 6631
+FUNC 20f8f 5 8 _atoi_l
+20f8f 0 107 6631
+20f8f 5 108 6631
+FUNC 20f94 11 4 _atoi64
+20f94 0 143 6631
+20f94 10 144 6631
+20fa4 1 145 6631
+FUNC 20fa5 15 8 _atoi64_l
+20fa5 0 151 6631
+20fa5 14 152 6631
+20fb9 1 153 6631
+FUNC 20fba 50 0 has_osfxsr_set
+FUNC 2100a 60 0 _get_sse2_info
+FUNC 2106a d 0 __sse2_available_init
+FUNC 21077 170 8 _flswbuf
+21077 5 93 1980
+2107c c 104 1980
+21088 8 106 1980
+21090 b 107 1980
+2109b 4 108 1980
+2109f a 109 1980
+210a9 4 110 1980
+210ad b 111 1980
+210b8 2 113 1980
+210ba 4 124 1980
+210be 4 125 1980
+210c2 8 126 1980
+210ca 3 127 1980
+210cd 8 128 1980
+210d5 3 137 1980
+210d8 11 138 1980
+210e9 9 141 1980
+210f2 25 151 1980
+21117 7 153 1980
+2111e d 158 1980
+2112b 5 162 1980
+21130 5 163 1980
+21135 7 164 1980
+2113c 7 166 1980
+21143 10 167 1980
+21153 2 168 1980
+21155 6 131 1980
+2115b 5 132 1980
+21160 2e 169 1980
+2118e 13 171 1980
+211a1 2 174 1980
+211a3 9 181 1980
+211ac 2 186 1980
+211ae 1d 195 1980
+211cb 5 201 1980
+211d0 4 202 1980
+211d4 7 203 1980
+211db a 209 1980
+211e5 2 212 1980
+FUNC 211e7 182 4 _wchartodigit
+211e7 0 32 6613
+211e7 1b 41 6613
+21202 1 73 6613
+21203 e 42 6613
+21211 19 44 6613
+2122a 1 73 6613
+2122b 14 45 6613
+2123f 14 46 6613
+21253 14 47 6613
+21267 14 48 6613
+2127b 14 49 6613
+2128f 14 50 6613
+212a3 18 51 6613
+212bb 18 52 6613
+212d3 18 53 6613
+212eb 14 54 6613
+212ff 14 55 6613
+21313 12 56 6613
+21325 14 57 6613
+21339 14 58 6613
+2134d c 59 6613
+21359 2 62 6613
+2135b 4 67 6613
+2135f 6 69 6613
+21365 3 71 6613
+21368 1 73 6613
+FUNC 21369 b6 c _isctype_l
+21369 7 114 6399
+21370 b 118 6399
+2137b d 121 6399
+21388 f 122 6399
+21397 1f 124 6399
+213b6 3 126 6399
+213b9 d 129 6399
+213c6 2 130 6399
+213c8 a 133 6399
+213d2 26 144 6399
+213f8 10 146 6399
+21408 15 149 6399
+2141d 2 150 6399
+FUNC 2141f 2f 8 _isctype
+2141f 0 156 6399
+2141f 9 157 6399
+21428 12 159 6399
+2143a 1 165 6399
+2143b 12 163 6399
+2144d 1 165 6399
+FUNC 21450 2c 0 _alloca_probe_16
+21450 0 44 2632
+21450 1 46 2632
+21451 4 47 2632
+21455 2 48 2632
+21457 3 49 2632
+2145a 2 50 2632
+2145c 2 51 2632
+2145e 2 52 2632
+21460 1 53 2632
+21461 5 54 2632
+21466 1 59 2632
+21467 4 60 2632
+2146b 2 61 2632
+2146d 3 62 2632
+21470 2 63 2632
+21472 2 64 2632
+21474 2 65 2632
+21476 1 66 2632
+21477 5 67 2632
+PUBLIC 21466 0 _alloca_probe_8
+FUNC 2147c 47 4 __ansicp
+2147c 10 39 2934
+2148c 1c 44 2934
+214a8 3 45 2934
+214ab 2 46 2934
+214ad a 47 2934
+214b7 c 49 2934
+FUNC 214c3 1b2 18 __convertcp
+214c3 16 79 2934
+214d9 10 83 2934
+214e9 18 85 2934
+21501 17 90 2934
+21518 13 92 2934
+2152b 6 93 2934
+21531 d 99 2934
+2153e 2 101 2934
+21540 c 103 2934
+2154c 2a 115 2934
+21576 15 111 2934
+2158b 7 112 2934
+21592 1c 115 2934
+215ae 3 116 2934
+215b1 2 117 2934
+215b3 10 119 2934
+215c3 15 127 2934
+215d8 7 129 2934
+215df 18 138 2934
+215f7 3 139 2934
+215fa 2 140 2934
+215fc 1f 149 2934
+2161b 11 151 2934
+2162c 12 160 2934
+2163e 9 162 2934
+21647 3 163 2934
+2164a 2 164 2934
+2164c 6 165 2934
+21652 5 166 2934
+21657 9 174 2934
+21660 3 177 2934
+21663 12 178 2934
+FUNC 21675 34 4 _get_daylight
+21675 0 35 487
+21675 27 36 487
+2169c 1 41 487
+2169d 8 39 487
+216a5 3 40 487
+216a8 1 41 487
+FUNC 216a9 34 4 _get_dstbias
+216a9 0 44 487
+216a9 27 45 487
+216d0 1 50 487
+216d1 8 48 487
+216d9 3 49 487
+216dc 1 50 487
+FUNC 216dd 34 4 _get_timezone
+216dd 0 53 487
+216dd 27 54 487
+21704 1 59 487
+21705 8 57 487
+2170d 3 58 487
+21710 1 59 487
+FUNC 21711 a2 10 _get_tzname
+21711 3 62 487
+21714 10 63 487
+21724 4 64 487
+21728 3 66 487
+2172b 7 68 487
+21732 27 69 487
+21759 20 63 487
+21779 f 72 487
+21788 8 73 487
+21790 4 76 487
+21794 5 78 487
+21799 5 80 487
+2179e 13 82 487
+217b1 2 83 487
+FUNC 217b3 6 0 __daylight
+217b3 0 118 487
+217b3 5 119 487
+217b8 1 120 487
+FUNC 217b9 6 0 __dstbias
+217b9 0 123 487
+217b9 5 124 487
+217be 1 125 487
+FUNC 217bf 6 0 __timezone
+217bf 0 128 487
+217bf 5 129 487
+217c4 1 130 487
+FUNC 217c5 6 0 __tzname
+217c5 0 133 487
+217c5 5 134 487
+217ca 1 135 487
+FUNC 217cb c 4 _set_daylight
+217cb c 189 418
+FUNC 217d7 c 4 _set_dstbias
+217d7 c 190 418
+FUNC 217e3 c 4 _set_timezone
+217e3 c 191 418
+FUNC 217ef 349 0 _tzset_nolock
+217ef c 124 440
+217fb 5 127 440
+21800 3 129 440
+21803 3 130 440
+21806 3 131 440
+21809 3 132 440
+2180c 3 133 440
+2180f 8 135 440
+21817 3 136 440
+2181a 8 139 440
+21822 1b 142 440
+2183d 1b 143 440
+21858 1b 144 440
+21873 8 149 440
+2187b 6 154 440
+21881 f 160 440
+21890 18 165 440
+218a8 14 260 440
+218bc b 268 440
+218c7 4 274 440
+218cb 7 275 440
+218d2 16 277 440
+218e8 6 281 440
+218ee 32 283 440
+21920 9 174 440
+21929 7 175 440
+21930 6 176 440
+21936 13 179 440
+21949 9 183 440
+21952 b 188 440
+2195d 9 190 440
+21966 e 191 440
+21974 12 199 440
+21986 3 201 440
+21989 c 203 440
+21995 2 205 440
+21997 3 206 440
+2199a 3 214 440
+2199d 27 234 440
+219c4 8 235 440
+219cc 2 236 440
+219ce 7 237 440
+219d5 23 247 440
+219f8 9 248 440
+21a01 2 249 440
+21a03 8 250 440
+21a0b 7 256 440
+21a12 a 288 440
+21a1c a 289 440
+21a26 a 290 440
+21a30 c 292 440
+21a3c 9 296 440
+21a45 23 301 440
+21a68 8 310 440
+21a70 7 311 440
+21a77 1 312 440
+21a78 10 318 440
+21a88 11 320 440
+21a99 5 292 440
+21a9e 9 293 440
+21aa7 5 325 440
+21aac e 329 440
+21aba d 330 440
+21ac7 5 335 440
+21acc b 339 440
+21ad7 d 340 440
+21ae4 5 344 440
+21ae9 3 345 440
+21aec 6 350 440
+21af2 4 351 440
+21af6 21 352 440
+21b17 2 354 440
+21b19 5 355 440
+21b1e a 357 440
+21b28 a 358 440
+21b32 6 360 440
+FUNC 21b38 1f5 24 cvtdate
+21b38 6 409 440
+21b3e 4 412 440
+21b42 c 414 440
+21b4e 52 424 440
+21ba0 4c 430 440
+21bec 14 436 440
+21c00 2 437 440
+21c02 2 438 440
+21c04 46 447 440
+21c4a 3 449 440
+21c4d 2 452 440
+21c4f 3c 457 440
+21c8b 3 459 440
+21c8e 27 467 440
+21cb5 6 472 440
+21cbb 2 474 440
+21cbd 29 485 440
+21ce6 11 486 440
+21cf7 a 487 440
+21d01 8 488 440
+21d09 d 490 440
+21d16 6 491 440
+21d1c 6 492 440
+21d22 9 499 440
+21d2b 2 503 440
+FUNC 21d2d 1ae 0 _isindst_nolock
+21d2d 5 554 440
+21d32 20 558 440
+21d52 5 560 440
+21d57 7 561 440
+21d5e 1b 568 440
+21d79 c 569 440
+21d85 7 573 440
+21d8c 34 584 440
+21dc0 2 585 440
+21dc2 19 596 440
+21ddb 40 611 440
+21e1b 2 612 440
+21e1d 1e 623 440
+21e3b 2 626 440
+21e3d 14 641 440
+21e51 1a 653 440
+21e6b d 660 440
+21e78 d 664 440
+21e85 8 666 440
+21e8d 4 674 440
+21e91 2 697 440
+21e93 8 673 440
+21e9b 8 675 440
+21ea3 4 676 440
+21ea7 14 679 440
+21ebb 4 681 440
+21ebf b 682 440
+21eca 2 685 440
+21ecc d 691 440
+21ed9 2 694 440
+FUNC 21edb 4f 0 __tzset
+21edb c 85 440
+21ee7 a 88 440
+21ef1 8 90 440
+21ef9 3 91 440
+21efc 8 93 440
+21f04 5 94 440
+21f09 6 95 440
+21f0f c 98 440
+21f1b 6 103 440
+21f21 9 99 440
+FUNC 21f2a 38 0 _tzset
+21f2a c 109 440
+21f36 8 110 440
+21f3e 4 111 440
+21f42 5 113 440
+21f47 c 115 440
+21f53 6 118 440
+21f59 9 116 440
+FUNC 21f62 41 4 _isindst
+21f62 c 538 440
+21f6e 8 541 440
+21f76 4 542 440
+21f7a b 543 440
+21f85 c 544 440
+21f91 3 548 440
+21f94 6 549 440
+21f9a 9 545 440
+FUNC 21fa3 35 8 __ascii_stricmp
+21fa3 a 75 693
+21fad c 80 693
+21fb9 3 81 693
+21fbc c 82 693
+21fc8 3 83 693
+21fcb 9 85 693
+21fd4 3 87 693
+21fd7 1 88 693
+FUNC 21fd8 d3 c _stricmp_l
+21fd8 7 47 693
+21fdf b 49 693
+21fea 36 52 693
+22020 32 53 693
+22052 8 55 693
+2205a e 57 693
+22068 15 63 693
+2207d 11 64 693
+2208e 8 65 693
+22096 13 68 693
+220a9 2 69 693
+FUNC 220ab 50 8 _stricmp
+220ab 4 94 693
+220af a 95 693
+220b9 24 98 693
+220dd 6 99 693
+220e3 1 107 693
+220e4 5 101 693
+220e9 10 105 693
+220f9 2 107 693
+FUNC 220fb f0 10 _strnicmp_l
+220fb 7 51 650
+22102 d 54 650
+2210f b 56 650
+2211a 33 59 650
+2214d 7 60 650
+22154 32 61 650
+22186 8 63 650
+2218e 1d 65 650
+221ab 15 71 650
+221c0 11 72 650
+221d1 d 74 650
+221de 6 76 650
+221e4 5 79 650
+221e9 2 80 650
+FUNC 221eb 5c c _strnicmp
+221eb 4 125 650
+221ef a 127 650
+221f9 24 130 650
+2221d 5 131 650
+22222 a 132 650
+2222c 1 141 650
+2222d 5 134 650
+22232 13 138 650
+22245 2 141 650
+FUNC 22247 db c xtoa_s
+22247 8 93 6581
+2224f 24 102 6581
+22273 24 103 6581
+22297 19 105 6581
+222b0 b 106 6581
+222bb a 112 6581
+222c5 6 114 6581
+222cb 7 116 6581
+222d2 2 118 6581
+222d4 2 121 6581
+222d6 5 124 6581
+222db 5 128 6581
+222e0 3 129 6581
+222e3 2 130 6581
+222e5 6 131 6581
+222eb 3 135 6581
+222ee e 136 6581
+222fc 8 139 6581
+22304 2 141 6581
+22306 2 142 6581
+22308 3 148 6581
+2230b 6 152 6581
+22311 3 154 6581
+22314 1 155 6581
+22315 4 156 6581
+22319 5 158 6581
+2231e 4 160 6581
+FUNC 22322 28 10 _itoa_s
+22322 3 172 6581
+22325 d 175 6581
+22332 4 176 6581
+22336 2 177 6581
+22338 10 178 6581
+22348 2 181 6581
+FUNC 2234a 25 10 _ltoa_s
+2234a 3 189 6581
+2234d 20 190 6581
+2236d 2 191 6581
+FUNC 2236f 18 10 _ultoa_s
+2236f 0 199 6581
+2236f 17 200 6581
+22386 1 201 6581
+FUNC 22387 f6 14 x64toa_s
+22387 7 309 6581
+2238e 25 318 6581
+223b3 5 319 6581
+223b8 19 321 6581
+223d1 b 322 6581
+223dc 3 327 6581
+223df 20 333 6581
+223ff 3 336 6581
+22402 1e 352 6581
+22420 3 344 6581
+22423 2 345 6581
+22425 5 346 6581
+2242a 5 351 6581
+2242f 13 352 6581
+22442 5 355 6581
+22447 3 357 6581
+2244a 13 358 6581
+2245d 4 364 6581
+22461 9 368 6581
+2246a 3 370 6581
+2246d 1 371 6581
+2246e 7 372 6581
+22475 4 375 6581
+22479 4 377 6581
+FUNC 2247d 33 14 _i64toa_s
+2247d 3 390 6581
+22480 2e 391 6581
+224ae 2 392 6581
+FUNC 224b0 1d 14 _ui64toa_s
+224b0 4 400 6581
+224b4 17 401 6581
+224cb 2 402 6581
+FUNC 224cd 224 1c __crtGetStringTypeW_stat
+224cd 10 64 2828
+224dd 9 72 2828
+224e6 7 73 2828
+224ed 14 75 2828
+22501 11 79 2828
+22512 8 80 2828
+2251a b 82 2828
+22525 f 83 2828
+22534 4 88 2828
+22538 13 90 2828
+2254b 7 95 2828
+22552 2 199 2828
+22554 8 119 2828
+2255c b 120 2828
+22567 5 121 2828
+2256c b 122 2828
+22577 e 128 2828
+22585 5 130 2828
+2258a 3 131 2828
+2258d 1d 142 2828
+225aa 6 143 2828
+225b0 40 146 2828
+225f0 3 147 2828
+225f3 6 148 2828
+225f9 d 150 2828
+22606 1a 160 2828
+22620 4d 164 2828
+2266d 4 165 2828
+22671 5 170 2828
+22676 b 171 2828
+22681 3 174 2828
+22684 23 178 2828
+226a7 12 186 2828
+226b9 f 189 2828
+226c8 4 187 2828
+226cc 7 191 2828
+226d3 8 194 2828
+226db 4 196 2828
+226df 12 200 2828
+FUNC 226f1 3e 1c __crtGetStringTypeW
+226f1 6 211 2828
+226f7 b 212 2828
+22702 2b 222 2828
+2272d 2 223 2828
+FUNC 2272f 294 14 strtoxq
+2272f 8 80 6264
+22737 b 86 6264
+22742 3 89 6264
+22745 b 92 6264
+22750 31 94 6264
+22781 12 95 6264
+22793 c 100 6264
+2279f 37 102 6264
+227d6 2 103 6264
+227d8 9 105 6264
+227e1 4 106 6264
+227e5 2 107 6264
+227e7 6 109 6264
+227ed 9 110 6264
+227f6 8 112 6264
+227fe 6 115 6264
+22804 9 116 6264
+2280d a 117 6264
+22817 9 120 6264
+22820 3 118 6264
+22823 5 123 6264
+22828 10 125 6264
+22838 1 126 6264
+22839 9 127 6264
+22842 26 132 6264
+22868 e 137 6264
+22876 8 138 6264
+2287e 6 139 6264
+22884 11 140 6264
+22895 5 143 6264
+2289a 31 154 6264
+228cb 4 160 6264
+228cf 6 161 6264
+228d5 a 173 6264
+228df 7 176 6264
+228e6 6 178 6264
+228ec 6 179 6264
+228f2 5 181 6264
+228f7 19 156 6264
+22910 b 168 6264
+2291b 5 169 6264
+22920 35 184 6264
+22955 5 187 6264
+2295a c 188 6264
+22966 a 189 6264
+22970 6 190 6264
+22976 7 191 6264
+2297d 2 192 6264
+2297f 7 193 6264
+22986 8 195 6264
+2298e 5 197 6264
+22993 6 199 6264
+22999 13 201 6264
+229ac 15 203 6264
+229c1 2 204 6264
+FUNC 229c3 29 c _strtoi64
+229c3 3 211 6264
+229c6 8 212 6264
+229ce 13 214 6264
+229e1 9 218 6264
+229ea 2 220 6264
+FUNC 229ec 1b 10 _strtoi64_l
+229ec 0 227 6264
+229ec 1a 228 6264
+22a06 1 229 6264
+FUNC 22a07 2a c _strtoui64
+22a07 3 236 6264
+22a0a 7 237 6264
+22a11 14 239 6264
+22a25 a 243 6264
+22a2f 2 245 6264
+FUNC 22a31 1b 10 _strtoui64_l
+22a31 0 253 6264
+22a31 1a 254 6264
+22a4b 1 255 6264
+FUNC 22a50 2b 0 _chkstk
+22a50 0 65 2634
+22a50 1 69 2634
+22a51 4 73 2634
+22a55 2 74 2634
+22a57 2 79 2634
+22a59 2 80 2634
+22a5b 2 81 2634
+22a5d 2 83 2634
+22a5f 5 84 2634
+22a64 2 87 2634
+22a66 2 88 2634
+22a68 2 89 2634
+22a6a 1 90 2634
+22a6b 1 91 2634
+22a6c 2 92 2634
+22a6e 3 93 2634
+22a71 1 94 2634
+22a72 5 98 2634
+22a77 2 99 2634
+22a79 2 100 2634
+FUNC 22a7b 81 4 _getenv_helper_nolock
+22a7b 0 95 3904
+22a7b 10 103 3904
+22a8b 3 104 3904
+22a8e 1 169 3904
+22a8f e 128 3904
+22a9d 7 131 3904
+22aa4 2 132 3904
+22aa6 6 135 3904
+22aac c 140 3904
+22ab8 9 142 3904
+22ac1 2 150 3904
+22ac3 22 154 3904
+22ae5 3 164 3904
+22ae8 6 150 3904
+22aee 5 168 3904
+22af3 9 169 3904
+FUNC 22afc 93 c _getenv_s_helper
+22afc 7 220 3904
+22b03 21 224 3904
+22b24 15 226 3904
+22b39 4 227 3904
+22b3d 3 229 3904
+22b40 a 233 3904
+22b4a 3 234 3904
+22b4d 2 236 3904
+22b4f 7 239 3904
+22b56 6 240 3904
+22b5c 2 243 3904
+22b5e 5 246 3904
+22b63 5 251 3904
+22b68 20 254 3904
+22b88 5 256 3904
+22b8d 2 257 3904
+FUNC 22b8f a2 8 _dupenv_s_helper
+22b8f 6 339 3904
+22b95 21 344 3904
+22bb6 9 346 3904
+22bbf 2 348 3904
+22bc1 5 350 3904
+22bc6 8 352 3904
+22bce 6 353 3904
+22bd4 2 355 3904
+22bd6 9 358 3904
+22bdf b 362 3904
+22bea 6 364 3904
+22bf0 b 366 3904
+22bfb 9 367 3904
+22c04 1e 370 3904
+22c22 7 371 3904
+22c29 2 373 3904
+22c2b 4 375 3904
+22c2f 2 376 3904
+FUNC 22c31 83 4 getenv
+22c31 c 75 3904
+22c3d 2a 78 3904
+22c67 18 79 3904
+22c7f 8 81 3904
+22c87 3 82 3904
+22c8a c 83 3904
+22c96 c 85 3904
+22ca2 3 89 3904
+22ca5 6 90 3904
+22cab 9 86 3904
+FUNC 22cb4 d8 10 getenv_s
+22cb4 c 198 3904
+22cc0 8 201 3904
+22cc8 5 202 3904
+22ccd a1 203 3904
+22d6e c 205 3904
+22d7a 3 209 3904
+22d7d 6 210 3904
+22d83 9 206 3904
+FUNC 22d8c e6 c _dupenv_s
+22d8c c 303 3904
+22d98 8 306 3904
+22da0 5 307 3904
+22da5 af 311 3904
+22e54 c 314 3904
+22e60 3 318 3904
+22e63 6 319 3904
+22e69 9 315 3904
+FUNC 22e72 8 4 _tolower
+22e72 0 48 6218
+22e72 7 49 6218
+22e79 1 50 6218
+FUNC 22e7a 117 8 _tolower_l
+22e7a 8 70 6218
+22e82 b 74 6218
+22e8d c 77 6218
+22e99 31 79 6218
+22eca f 80 6218
+22ed9 14 82 6218
+22eed 2b 86 6218
+22f18 3 88 6218
+22f1b d 91 6218
+22f28 2 92 6218
+22f2a b 94 6218
+22f35 a 97 6218
+22f3f 25 110 6218
+22f64 6 112 6218
+22f6a 5 116 6218
+22f6f 6 117 6218
+22f75 1a 119 6218
+22f8f 2 120 6218
+FUNC 22f91 27 4 tolower
+22f91 0 143 6218
+22f91 9 145 6218
+22f9a f 147 6218
+22fa9 1 153 6218
+22faa d 151 6218
+22fb7 1 153 6218
+FUNC 22fc0 61 c __ascii_strnicmp
+22fc0 6 69 871
+22fc6 3 75 871
+22fc9 2 76 871
+22fcb 2 77 871
+22fcd 3 79 871
+22fd0 3 80 871
+22fd3 2 82 871
+22fd5 2 83 871
+22fd7 5 84 871
+22fdc 2 89 871
+22fde 2 91 871
+22fe0 2 93 871
+22fe2 2 95 871
+22fe4 2 97 871
+22fe6 2 98 871
+22fe8 3 100 871
+22feb 3 101 871
+22fee 2 103 871
+22ff0 2 104 871
+22ff2 2 106 871
+22ff4 2 107 871
+22ff6 2 109 871
+22ff8 2 112 871
+22ffa 2 113 871
+22ffc 2 115 871
+22ffe 2 116 871
+23000 2 118 871
+23002 2 121 871
+23004 2 122 871
+23006 3 124 871
+23009 2 125 871
+2300b 2 128 871
+2300d 2 129 871
+2300f 2 130 871
+23011 5 133 871
+23016 2 134 871
+23018 2 135 871
+2301a 2 138 871
+2301c 5 140 871
+FUNC 23021 ec 10 _mbsnbicoll_l
+23021 7 53 4518
+23028 b 55 4518
+23033 9 57 4518
+2303c 13 58 4518
+2304f 33 61 4518
+23082 6 62 4518
+23088 23 63 4518
+230ab 8 65 4518
+230b3 14 66 4518
+230c7 23 74 4518
+230ea 10 75 4518
+230fa 11 77 4518
+2310b 2 79 4518
+FUNC 2310d 17 c _mbsnbicoll
+2310d 0 85 4518
+2310d 16 86 4518
+23123 1 87 4518
+FUNC 23124 95 0 __wtomb_environ
+23124 7 43 2699
+2312b 3 44 2699
+2312e 9 45 2699
+23137 c 52 2699
+23143 12 57 2699
+23155 11 61 2699
+23166 12 65 2699
+23178 10 72 2699
+23188 5 74 2699
+2318d 9 76 2699
+23196 3 77 2699
+23199 9 81 2699
+231a2 5 84 2699
+231a7 2 85 2699
+231a9 5 58 2699
+231ae 9 67 2699
+231b7 2 68 2699
+FUNC 231b9 1a 8 strnlen
+231b9 0 38 864
+231b9 19 45 864
+231d2 1 49 864
+FUNC 231d3 1a 4 strncnt
+231d3 0 50 4345
+231d3 6 51 4345
+231d9 6 54 4345
+231df 1 55 4345
+231e0 5 54 4345
+231e5 7 57 4345
+231ec 1 58 4345
+FUNC 231ed 389 18 __crtCompareStringA_stat
+231ed 10 96 4345
+231fd 31 280 4345
+2322e c 107 4345
+2323a b 109 4345
+23245 a 110 4345
+2324f 5 118 4345
+23254 1b 119 4345
+2326f 7 122 4345
+23276 1f 123 4345
+23295 6 120 4345
+2329b 7 121 4345
+232a2 3 124 4345
+232a5 2 125 4345
+232a7 17 130 4345
+232be 7 189 4345
+232c5 8 201 4345
+232cd 8 202 4345
+232d5 d 208 4345
+232e2 5 214 4345
+232e7 8 215 4345
+232ef 2 218 4345
+232f1 6 219 4345
+232f7 5 222 4345
+232fc 4 223 4345
+23300 f 231 4345
+2330f 2 232 4345
+23311 5 237 4345
+23316 4 239 4345
+2331a 2 240 4345
+2331c 10 244 4345
+2332c a 246 4345
+23336 7 244 4345
+2333d 2 262 4345
+2333f 5 253 4345
+23344 6 255 4345
+2334a 8 256 4345
+23352 10 260 4345
+23362 11 262 4345
+23373 7 260 4345
+2337a 2 262 4345
+2337c 1a 280 4345
+23396 6 281 4345
+2339c 4d 284 4345
+233e9 4 285 4345
+233ed 6 286 4345
+233f3 19 295 4345
+2340c 17 305 4345
+23423 46 309 4345
+23469 4 310 4345
+2346d 13 320 4345
+23480 17 326 4345
+23497 7 328 4345
+2349e 8 331 4345
+234a6 9 333 4345
+234af 4 132 4345
+234b3 5 137 4345
+234b8 8 138 4345
+234c0 5 139 4345
+234c5 8 140 4345
+234cd e 142 4345
+234db 6 143 4345
+234e1 5 148 4345
+234e6 19 155 4345
+234ff 2 156 4345
+23501 6 157 4345
+23507 19 163 4345
+23520 4 164 4345
+23524 7 166 4345
+2352b 5 167 4345
+23530 3 169 4345
+23533 3 170 4345
+23536 18 178 4345
+2354e 6 179 4345
+23554 6 181 4345
+2355a 8 182 4345
+23562 2 184 4345
+23564 12 337 4345
+FUNC 23576 40 20 __crtCompareStringA
+23576 6 349 4345
+2357c b 350 4345
+23587 2d 361 4345
+235b4 2 362 4345
+FUNC 235b6 f8 10 _strnicoll_l
+235b6 7 55 603
+235bd b 57 603
+235c8 9 59 603
+235d1 13 60 603
+235e4 33 63 603
+23617 6 64 603
+2361d 23 65 603
+23640 a 67 603
+2364a 15 68 603
+2365f 21 78 603
+23680 b 80 603
+2368b 10 81 603
+2369b 11 84 603
+236ac 2 85 603
+FUNC 236ae 27 c _strnicoll
+236ae 3 92 603
+236b1 9 93 603
+236ba 1 101 603
+236bb 5 95 603
+236c0 13 99 603
+236d3 2 101 603
+FUNC 236d5 4d 4 findenv
+236d5 1 387 3036
+236d6 8 390 3036
+236de 12 394 3036
+236f0 d 399 3036
+236fd 9 390 3036
+23706 e 407 3036
+23714 1 408 3036
+23715 c 400 3036
+23721 1 408 3036
+FUNC 23722 5d 0 copy_environ
+23722 4 428 3036
+23726 2 429 3036
+23728 6 434 3036
+2372e 2 464 3036
+23730 7 438 3036
+23737 8 439 3036
+2373f 14 443 3036
+23753 8 444 3036
+2375b 6 448 3036
+23761 11 458 3036
+23772 4 448 3036
+23776 2 461 3036
+23778 5 463 3036
+2377d 2 464 3036
+FUNC 2377f 24c 8 __crtsetenv
+2377f 6 76 3036
+23785 2c 89 3036
+237b1 2 91 3036
+237b3 1c 98 3036
+237cf 5 114 3036
+237d4 13 125 3036
+237e7 c 126 3036
+237f3 4 130 3036
+237f7 d 153 3036
+23804 9 155 3036
+2380d b 100 3036
+23818 6 101 3036
+2381e 2 356 3036
+23820 3 164 3036
+23823 6 165 3036
+23829 f 171 3036
+23838 2 172 3036
+2383a 2 173 3036
+2383c 8 176 3036
+23844 f 178 3036
+23853 2 179 3036
+23855 2 180 3036
+23857 6 196 3036
+2385d 5 197 3036
+23862 2 200 3036
+23864 10 207 3036
+23874 9 210 3036
+2387d a 216 3036
+23887 6 218 3036
+2388d 5 235 3036
+23892 5 238 3036
+23897 5 241 3036
+2389c c 222 3036
+238a8 4 221 3036
+238ac 1d 230 3036
+238c9 2 233 3036
+238cb 9 245 3036
+238d4 4 250 3036
+238d8 2 251 3036
+238da 2f 255 3036
+23909 8 258 3036
+23911 3 259 3036
+23914 5 262 3036
+23919 5 264 3036
+2391e 21 287 3036
+2393f 25 289 3036
+23964 21 338 3036
+23985 4 339 3036
+23989 b 343 3036
+23994 7 346 3036
+2399b 5 349 3036
+239a0 8 351 3036
+239a8 6 352 3036
+239ae 8 355 3036
+239b6 8 271 3036
+239be 6 274 3036
+239c4 7 276 3036
+FUNC 239cb 50 4 _strdup
+239cb 1 66 901
+239cc b 70 901
+239d7 6 71 901
+239dd 9 73 901
+239e6 e 77 901
+239f4 1c 80 901
+23a10 4 81 901
+23a14 6 84 901
+23a1a 1 85 901
+FUNC 23a1b ba c _mbschr_l
+23a1b 7 53 4568
+23a22 b 55 4568
+23a2d 32 58 4568
+23a5f 8 60 4568
+23a67 d 61 4568
+23a74 a 65 4568
+23a7e 7 67 4568
+23a85 10 69 4568
+23a95 3 70 4568
+23a98 8 72 4568
+23aa0 d 63 4568
+23aad 8 76 4568
+23ab5 e 77 4568
+23ac3 10 79 4568
+23ad3 2 80 4568
+FUNC 23ad5 13 8 _mbschr
+23ad5 0 86 4568
+23ad5 12 87 4568
+23ae7 1 88 4568
+FUNC 23b00 be 8 strchr
+23b00 0 60 928
+23b00 2 68 928
+23b02 4 69 928
+23b06 1 73 928
+23b07 2 74 928
+23b09 3 75 928
+23b0c 4 76 928
+23b10 6 77 928
+23b16 2 78 928
+23b18 2 81 928
+23b1a 3 82 928
+23b1d 2 83 928
+23b1f 2 84 928
+23b21 2 85 928
+23b23 2 86 928
+23b25 6 87 928
+23b2b 2 88 928
+23b2d 2 91 928
+23b2f 1 92 928
+23b30 2 93 928
+23b32 3 94 928
+23b35 1 95 928
+23b36 2 96 928
+23b38 2 101 928
+23b3a 5 102 928
+23b3f 2 104 928
+23b41 2 105 928
+23b43 2 107 928
+23b45 2 108 928
+23b47 2 110 928
+23b49 3 111 928
+23b4c 3 113 928
+23b4f 2 114 928
+23b51 2 116 928
+23b53 3 117 928
+23b56 6 119 928
+23b5c 2 120 928
+23b5e 5 124 928
+23b63 2 125 928
+23b65 5 127 928
+23b6a 2 128 928
+23b6c 6 130 928
+23b72 2 131 928
+23b74 1 134 928
+23b75 1 135 928
+23b76 1 137 928
+23b77 2 138 928
+23b79 1 139 928
+23b7a 3 142 928
+23b7d 2 143 928
+23b7f 2 144 928
+23b81 2 145 928
+23b83 2 146 928
+23b85 2 147 928
+23b87 2 148 928
+23b89 2 149 928
+23b8b 2 150 928
+23b8d 3 151 928
+23b90 2 152 928
+23b92 2 153 928
+23b94 2 154 928
+23b96 2 155 928
+23b98 2 156 928
+23b9a 2 157 928
+23b9c 2 158 928
+23b9e 2 159 928
+23ba0 2 160 928
+23ba2 1 163 928
+23ba3 1 164 928
+23ba4 3 165 928
+23ba7 1 166 928
+23ba8 1 167 928
+23ba9 3 170 928
+23bac 1 171 928
+23bad 1 172 928
+23bae 1 173 928
+23baf 1 174 928
+23bb0 3 177 928
+23bb3 1 178 928
+23bb4 1 179 928
+23bb5 1 180 928
+23bb6 1 181 928
+23bb7 3 184 928
+23bba 1 185 928
+23bbb 1 186 928
+23bbc 1 187 928
+23bbd 1 188 928
+PUBLIC 23b06 0 __from_strstr_to_strchr
+FUNC 240b9 14 0 `operator new'::`6'::`dynamic atexit destructor for 'nomem''
+STACK WIN 4 41b0 86 13 0 8 0 e0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 4240 41 3 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 4290 18 4 0 0 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 42ae 18 7 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 42af 14 6 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 42c6 b 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 42d1 22 3 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 42d2 1e 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 42f3 3f c 0 0 c 50 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 4332 3f c 0 0 c 50 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 4371 3f c 0 0 c 50 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 43b0 18 7 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 43b1 14 6 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 43c8 af c 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 4464 12 0 0 4 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 4477 16 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 448d 16 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 44a3 14 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 44b7 16 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 44cd 14 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 44e1 25 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4506 16 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 451c f 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 452b 62 2 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 452c 60 1 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 452d 5c 0 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 454a 35 0 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 458d 42 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 458e 40 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 45cf da c 0 4 c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 466c 15 0 0 4 c 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 46a0 8 0 0 4 c 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 46a9 53 c 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 46f2 9 0 0 4 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 46fc 9 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4705 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 470b b1 8 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4713 a8 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4785 33 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 47bc 20 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 47dc 3c 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 47dd 3a 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4818 2e 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4846 36 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 487c 2a 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 48a6 16 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 48bc 5 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 48c1 30 5 0 8 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 48c6 2b 0 0 8 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 48f1 7 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 48f8 7 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 48ff 7 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4906 52 8 0 8 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 490c 4c 2 0 8 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 4958 36 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 498e 36 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 49c4 36 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 49fa 1a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4a14 30 1 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4a15 2e 0 0 10 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4a44 d5 7 0 1c 0 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 4a4b ce 0 0 1c 4 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 60 - ^ =
+STACK WIN 4 4b19 9d 5 0 10 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 4b1e 98 0 0 10 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 4bb6 73 7 0 14 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 4bbb 6c 2 0 14 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 4bbc 6a 1 0 14 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 4bbd 68 0 0 14 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 4c29 28 5 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4c2e 22 0 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4c51 21 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4c72 4c 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4c73 4a 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4cbe 5e 6 0 14 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 4d1c 4a b 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 4d26 1b 1 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 4d27 16 0 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 4d66 19 a 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4d67 17 9 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4d7f 6a 6 0 4 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 4de9 f 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4df8 e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4e06 1c 3 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4e07 18 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4e22 f 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4e31 8 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4e39 1b 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4e54 1c 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4e70 1f 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4e8f 4 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4e93 b 2 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4e9e 5 2 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4ea3 11 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4eb4 4e 9 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4eb5 4a 8 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 4eba 44 3 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 4ebb 42 2 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 4f02 18 2 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4f1a 58 8 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4f1b 54 7 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 4f20 4e 2 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 4f34 37 0 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 4f72 56 9 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4f73 52 8 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 4f78 4c 3 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 4f79 4a 2 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 4fc8 16 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4fde d 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4feb 19 8 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4fec 15 7 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5004 18 7 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5005 14 6 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 501c b 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5027 19 8 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5028 15 7 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5040 18 7 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5041 14 6 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5058 b 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5063 18 7 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5064 14 6 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 507b 18 7 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 507c 14 6 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5093 b 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 509e 1c 3 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 509f 18 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 50ba 22 3 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 50bb 1e 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 50dc 22 3 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 50dd 1e 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 50fe 22 3 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 50ff 1e 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5120 7b 8 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 5124 75 4 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 5128 70 0 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 519b 5b 8 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 51a2 52 1 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 51a3 50 0 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 51f6 a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5200 a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 520a a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5214 a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 521e a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5228 24 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 524c 41 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 528d 1b6 c 0 0 c 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 5405 14 0 0 0 c 2c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 5443 a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 544d a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5457 fc 1c 0 14 4 328 0 1 $T0 $ebp 680 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 5553 22 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5554 20 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5575 d 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5582 9 3 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 558b 24 3 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 55af 10 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 55bf 9 3 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 55c8 96 7 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 55cf 8d 0 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 55fb 60 0 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 565e 1a 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5678 1c 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5694 1f 3 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 56b3 1c 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 56cf 1d 3 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 56ec 20 3 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 570c 1d 3 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 5729 11 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 573a 11 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 574b 16 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5761 16 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5777 14f c 0 8 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 58bc 9 0 0 8 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 58c6 1a 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 58e0 1a 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 58fa 18 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5912 1a 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 592c 18 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5944 f6 7 0 18 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 594b ed 0 0 18 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 5973 c4 0 0 18 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 5977 bf 0 0 18 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 5a3a 27 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5a61 28 3 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 5a89 87 4 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 5a8d 81 0 0 14 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 5ab2 5b 0 0 14 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 5b10 1b 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5b2b 107 5 0 18 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 5b30 100 0 0 18 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 5b5b d4 0 0 18 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 5b5f cf 0 0 18 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 5c32 1e 3 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 5c50 27 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5c77 28 3 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 5c9f 24 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5cc3 26 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5ce9 15 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5cfe 9 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5d07 9 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5d10 18 3 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5d11 16 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5d28 20 1 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5d29 1e 0 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5d48 37 5 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5d4d 31 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5d7f 3c 5 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5d84 36 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5dbb 3c 5 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5dc0 36 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5df7 3c 5 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5dfc 36 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5e33 3c 5 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5e38 36 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5e6f 37 5 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5e74 31 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5ea6 37 5 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5eab 31 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5edd 92 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5f1b 34 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5f1c 32 0 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5f6f e2 c 0 c c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 6039 11 0 0 c c 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 6051 11 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6062 11 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6073 f 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6082 f 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6091 4c 1 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6092 4a 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 616b 33 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 619e 36 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 61d4 36 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 620a 39 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6243 14 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6257 f 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6266 f 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6275 96 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6276 94 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 62ba 4a 0 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 8 - ^ =
+STACK WIN 4 62bb 46 0 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 8 - ^ =
+STACK WIN 4 630b 2f 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6313 26 0 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 633a 82 9 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6341 78 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 63bc e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 63ca 3 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 63cd 33 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6400 24 6 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 6404 1e 2 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 6424 4a a 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6429 44 5 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 642a 42 4 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 646e d 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 647b 10 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 648b e 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6499 994 2c 0 10 0 278 0 1 $T0 $ebp 504 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 64bb 945 a 0 10 4 278 0 1 $T0 $ebp 504 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 636 - ^ =
+STACK WIN 4 64c2 93b 3 0 10 8 278 0 1 $T0 $ebp 504 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 636 - ^ =
+STACK WIN 4 64c5 937 0 0 10 c 278 0 1 $T0 $ebp 504 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 636 - ^ =
+STACK WIN 4 6e2d 3b 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6e68 13 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6e7b 13 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6e8e 1e 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6e8f 1c 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6eac 1b 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6ec7 2a 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6ec8 28 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6ef1 1b 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6f0c 2a 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6f0d 28 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6fa0 24 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6fd0 196 14 0 10 0 14 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6fd4 d3 10 0 10 4 14 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 24 - ^ =
+STACK WIN 4 6fd9 cd b 0 10 8 14 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 28 - ^ = $ebx $T0 24 - ^ =
+STACK WIN 4 6fda cb a 0 10 c 14 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 28 - ^ = $ebx $T0 24 - ^ =
+STACK WIN 4 6fe4 c0 0 0 10 10 14 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 28 - ^ = $ebx $T0 24 - ^ =
+STACK WIN 4 7166 90 c 0 10 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 71eb a 0 0 10 c 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 71f6 1a 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7210 1a 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 722a 1a 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7244 18 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 725c 18 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7274 18 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 728c 104 9 0 0 0 328 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 7390 5c6 22 0 c 0 594 0 1 $T0 $ebp 1304 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 73b2 597 0 0 c 4 594 0 1 $T0 $ebp 1304 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 73fe 542 0 0 c 8 594 0 1 $T0 $ebp 1304 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 1436 - ^ =
+STACK WIN 4 740c 533 0 0 c c 594 0 1 $T0 $ebp 1304 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 1436 - ^ =
+STACK WIN 4 7956 dc c 0 c c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 7a28 9 0 0 c c 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 7a32 2d 5 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7a37 27 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7a5f e1 c 0 4 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 7b36 9 0 0 4 c 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 7b40 49 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7b41 3b 1 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7b42 39 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7b89 55 8 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7b8a 53 7 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 7b91 4b 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 7b97 2a 0 0 0 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 7bde 15 3 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 7bf3 18 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7c0b c3 c 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 7cc5 8 0 0 4 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 7cce 31 7 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 7cd5 28 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 7cff 240 c 0 0 c 64 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 7f28 4 0 0 0 c 64 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 7f3f 4c 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f40 4a 1 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f41 48 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f8b 21 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f8c 1f 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7fac 10 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7fbc 40 2 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7fbd 3e 1 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7fbe 3c 0 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7ffc 48 2 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7ffd 46 1 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7ffe 44 0 0 8 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 8044 4b 2 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 8045 49 1 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 8046 47 0 0 8 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 808f 50 2 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 8090 4e 1 0 c 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 8091 4c 0 0 c 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 80df 8 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 80e7 a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 80f1 a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 80fb 8e c 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 8151 8 0 0 4 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 8189 9f c 0 0 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 821f 8 0 0 0 c 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 8228 19 8 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 8229 15 7 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 8241 b 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 824c 22 3 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 824d 1e 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 826e 5c 2 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 826f 5a 1 0 c 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 8270 58 0 0 c 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 82ca 44 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 830e e1 c 0 10 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 8390 a 0 0 10 c 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 83ce 20 0 0 10 c 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 83ef 45 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 8434 54 c 0 8 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 8477 9 0 0 8 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 8488 25 7 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 848f 1d 0 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 84ad 13 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 84c0 b3 8 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 84c7 9a 1 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 84c8 98 0 0 8 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 8573 4c 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 85bf 139 1 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 85c0 137 0 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 85cf 127 0 0 8 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 8 - ^ =
+STACK WIN 4 85d0 11f 0 0 8 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 12 - ^ = $ebx $T0 8 - ^ =
+STACK WIN 4 85d1 11d 0 0 8 10 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 12 - ^ = $ebx $T0 8 - ^ =
+STACK WIN 4 86f8 4 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 86fc 32 c 0 8 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 8714 a 0 0 8 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 872e 33 c 0 8 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 8747 a 0 0 8 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 8761 32 c 0 8 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 8779 a 0 0 8 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 8793 3b c 0 14 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 87b4 a 0 0 14 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 87ce 79 6 0 4 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 87f0 52 0 0 4 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 87f1 50 0 0 4 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 8847 49 c 0 4 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 8890 30 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 8891 2a 1 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 8892 28 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 88c0 82 8 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 88c1 7b 7 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 88c8 73 0 0 8 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 8942 19c 14 0 18 c 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 89d2 9 0 0 18 c 3c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 8a62 7b 0 0 18 c 3c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 8ade 17f c 0 10 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 8c49 4 0 0 10 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 8c5d 91 c 0 10 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 8ce2 4 0 0 10 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 8cee 143 9 0 10 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 8cfe 131 0 0 10 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 8d02 12c 0 0 10 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 8d05 128 0 0 10 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 8e31 6c 3 0 1c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 8e9d f2 6 0 20 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 8ea3 ea 0 0 20 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 8eb3 d9 0 0 20 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 8f31 5a 0 0 20 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 40 - ^ =
+STACK WIN 4 8f8f 356 17 0 20 0 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 8f99 34a d 0 20 4 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 48 - ^ =
+STACK WIN 4 8fa5 33d 1 0 20 8 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 48 - ^ =
+STACK WIN 4 8fa6 33b 0 0 20 c 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 48 - ^ =
+STACK WIN 4 92e5 18 7 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 92e6 14 6 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 92fd e4 6 0 20 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 9301 de 2 0 20 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ =
+STACK WIN 4 9302 dc 1 0 20 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ =
+STACK WIN 4 9303 da 0 0 20 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ =
+STACK WIN 4 93e1 6c 7 0 0 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 93e7 64 1 0 0 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 93e8 62 0 0 0 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 9408 41 0 0 0 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 944d 6e 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 944e 6c 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 94bb 9 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 94c4 6e 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 94c5 6c 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 9532 9 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 953b 15 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 9550 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 9556 32 1 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 9557 30 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 9588 19 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 95a1 3d 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 95de bf c 0 8 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 9694 8 0 0 8 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 969d 77 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 969e 75 1 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 969f 71 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 9714 18 1 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 9715 16 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 972c 121 c 0 4 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 9835 b 0 0 4 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 9841 b 0 0 4 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 984d 69 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 9857 4b 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 9860 25 0 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 98b6 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 98bc 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 98c2 184 1 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 98c3 182 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 98de 166 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 9a46 39 c 0 0 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 9a66 4 0 0 0 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 9a7f 13 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 9a92 37 c 0 0 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 9ab6 4 0 0 0 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 9ac9 11 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 9b2c b9 5 0 4 0 4 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 9b2e b5 3 0 4 4 4 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 8 - ^ =
+STACK WIN 4 9b2f b3 2 0 4 8 4 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 12 - ^ = $ebx $T0 8 - ^ =
+STACK WIN 4 9b30 b1 1 0 4 c 4 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 12 - ^ = $ebx $T0 8 - ^ =
+STACK WIN 4 9b31 af 0 0 4 10 4 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 12 - ^ = $ebx $T0 8 - ^ =
+STACK WIN 4 9be5 2f 1 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 9be6 2d 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 9c14 3c c 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 9c4a 5 0 0 4 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 9c50 12 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 9c62 4f c 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 9ca8 8 0 0 4 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 9cb1 75 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 9cf9 2c 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 9d26 c3 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 9d27 c1 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ =
+STACK WIN 4 9d35 9c 0 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = $ebx $T0 8 - ^ =
+STACK WIN 4 9d3c 94 0 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = $ebx $T0 8 - ^ =
+STACK WIN 4 9d3d 90 0 0 4 10 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = $ebx $T0 8 - ^ =
+STACK WIN 4 9de9 a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 9df3 31 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 9df4 2f 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 9e24 9 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 9e2d d 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 9e3a 22 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 9e5c 22 3 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 9e7e 70 c 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 9ee5 8 0 0 4 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 9eee f5 c 0 8 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 9fd7 b 0 0 8 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 9fe3 70 c 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 a04a 8 0 0 4 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 a053 31 3 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 a084 eb c 0 8 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 a163 b 0 0 8 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 a16f 53 c 0 4 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 a1b9 8 0 0 4 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 a258 65 b 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 a25d 5f 6 0 c 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 a262 59 1 0 c 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 a263 57 0 0 c c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 aa15 3d 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 aa52 e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 aa60 1a0 8 0 4 0 4 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 aa62 19c 6 0 4 4 4 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 8 - ^ =
+STACK WIN 4 aa67 196 1 0 4 8 4 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 8 - ^ =
+STACK WIN 4 aa68 194 0 0 4 c 4 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 8 - ^ =
+STACK WIN 4 aa85 176 0 0 4 10 4 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 20 - ^ = $ebx $T0 8 - ^ =
+STACK WIN 4 ac00 20 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 ac20 39 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 ac59 1 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 ac5a 32 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 ac65 1c 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 ac8c 15e 6 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 ac92 156 0 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 acaa 13d 0 0 8 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 acb0 136 0 0 8 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 adea 1b 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 ae05 db b 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 ae06 c3 a 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 ae0f b9 1 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 ae10 b7 0 0 0 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 ae5f 67 0 0 0 10 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 16 - ^ = $ebx $T0 4 - ^ =
+STACK WIN 4 aee0 a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 aeea 198 e 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 aef2 187 6 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 aef8 180 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 b082 b9 11 0 0 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 b089 b0 a 0 0 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 b092 a6 1 0 0 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 b093 a4 0 0 0 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 b13b 135 b 0 0 0 8 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 b143 12a 3 0 0 4 8 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 12 - ^ =
+STACK WIN 4 b144 128 2 0 0 8 8 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 16 - ^ = $ebx $T0 12 - ^ =
+STACK WIN 4 b145 126 1 0 0 c 8 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 16 - ^ = $ebx $T0 12 - ^ =
+STACK WIN 4 b146 124 0 0 0 10 8 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 16 - ^ = $ebx $T0 12 - ^ =
+STACK WIN 4 b270 24 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 b271 22 1 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 b272 20 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 b294 24 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 b295 22 1 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 b296 20 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 b2b8 5b 6 0 0 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 b2be 43 0 0 0 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 b313 5a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 b36d 74 1 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 b36e 72 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ =
+STACK WIN 4 b37a 53 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = $ebx $T0 8 - ^ =
+STACK WIN 4 b381 4b 0 0 0 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = $ebx $T0 8 - ^ =
+STACK WIN 4 b38c 30 0 0 0 10 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = $ebx $T0 8 - ^ =
+STACK WIN 4 b3e1 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 b3e7 94 15 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 b3fb 7e 1 0 0 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 b3fc 7c 0 0 0 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 b418 5f 0 0 0 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 b47b 8 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 b483 160 5 0 8 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 b488 159 0 0 8 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 b4c5 11b 0 0 8 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 b52c b3 0 0 8 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 b5e3 25 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 b608 25 6 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 b60c 1f 2 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 b62d 4f a 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 b632 49 5 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 b633 47 4 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 b67c 910 30 0 10 0 474 0 1 $T0 $ebp 1012 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 b69e 8c1 e 0 10 4 474 0 1 $T0 $ebp 1012 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 1144 - ^ =
+STACK WIN 4 b6a5 8b7 7 0 10 8 474 0 1 $T0 $ebp 1012 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 1144 - ^ =
+STACK WIN 4 b6ac 8af 0 0 10 c 474 0 1 $T0 $ebp 1012 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 1144 - ^ =
+STACK WIN 4 bf8c 97 7 0 10 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 bf93 8e 0 0 10 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 bfbf 61 0 0 10 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 c023 17 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 c03a 5 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 c03f 55 7 0 10 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 c046 4c 0 0 10 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 c094 18 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 c0ac 1a 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 c0c6 18 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 c0de 1a 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 c0f8 14e c 0 14 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 c23c 9 0 0 14 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 c246 1e 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 c264 1e 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 c282 1e 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 c2a0 1c 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 c2bc 1c 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 c2d8 1c 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 c2f4 25 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 c319 25 6 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 c31d 1f 2 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 c33e 4f a 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 c343 49 5 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 c344 47 4 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 c38d 91c 2c 0 10 0 474 0 1 $T0 $ebp 1012 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 c3a9 8d3 10 0 10 4 474 0 1 $T0 $ebp 1012 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 1144 - ^ =
+STACK WIN 4 c3b0 8c9 9 0 10 8 474 0 1 $T0 $ebp 1012 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 1144 - ^ =
+STACK WIN 4 c3b9 8bf 0 0 10 c 474 0 1 $T0 $ebp 1012 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 1144 - ^ =
+STACK WIN 4 cca9 154 9 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 ccb1 14a 1 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 ccb2 148 0 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 cdfd 25 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 ce22 25 6 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 ce26 1f 2 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 ce47 4f a 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 ce4c 49 5 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 ce4d 47 4 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 ce96 f60 2a 0 10 0 ad4 0 1 $T0 $ebp 1160 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 ceb8 f0f 8 0 10 4 ad4 0 1 $T0 $ebp 1160 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 2776 - ^ =
+STACK WIN 4 ceb9 f0b 7 0 10 8 ad4 0 1 $T0 $ebp 1160 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 2776 - ^ =
+STACK WIN 4 cec0 f03 0 0 10 c ad4 0 1 $T0 $ebp 1160 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 2776 - ^ =
+STACK WIN 4 ddf6 1f 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 ddf7 1d 1 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 ddf8 1b 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 de20 29 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 de50 42 18 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 de5e 33 a 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 de5f 31 9 0 8 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 de68 27 0 0 8 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 dea0 bb 33 0 4 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 deba a1 19 0 4 10 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 df29 14 0 0 4 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 df5b 19 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 df74 9b c 0 4 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 dfed 9 0 0 4 c 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 e00f 34 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 e01a 1d 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 e043 d 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 e050 9 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 e059 9 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 e062 23d c 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 e257 b 0 0 8 c 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 e29f 1b0 c 0 4 c 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 e40d 14 0 0 4 c 30 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 e44f a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 e459 104 3 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 e45a 102 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ =
+STACK WIN 4 e45b 100 1 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ =
+STACK WIN 4 e45c fe 0 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ =
+STACK WIN 4 e495 c4 0 0 4 10 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = $ebx $T0 16 - ^ =
+STACK WIN 4 e55d 15a 24 0 14 0 94 0 1 $T0 $ebp 100 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 e576 bc b 0 14 4 94 0 1 $T0 $ebp 100 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 152 - ^ =
+STACK WIN 4 e577 b8 a 0 14 8 94 0 1 $T0 $ebp 100 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 152 - ^ =
+STACK WIN 4 e581 ad 0 0 14 c 94 0 1 $T0 $ebp 100 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 152 - ^ =
+STACK WIN 4 e6b7 a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 e6c1 a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 e6cb 10 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 e6db c5 c 0 8 c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 e761 17 0 0 8 c 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 e7a0 5e 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 e7b8 45 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 e7fe 2f 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 e82d 55 b 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 e82e 53 a 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 e82f 51 9 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ =
+STACK WIN 4 e830 4f 8 0 0 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ =
+STACK WIN 4 e831 4d 7 0 0 10 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ =
+STACK WIN 4 e882 18a 1d 0 0 0 51c 0 1 $T0 $ebp 1180 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 e89e 161 1 0 0 4 51c 0 1 $T0 $ebp 1180 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 1312 - ^ =
+STACK WIN 4 e89f 15d 0 0 0 8 51c 0 1 $T0 $ebp 1180 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 1312 - ^ =
+STACK WIN 4 ea0c a4 c 0 0 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 eaa4 b 0 0 0 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 eab0 7a 7 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 eab7 71 0 0 0 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 eb2a 1d9 19 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 eb3b 1c1 8 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 eb3f 1ba 4 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 eb43 1b5 0 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 ed03 3c 6 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 ed3f 19a c 0 4 c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 eea0 8 0 0 4 c 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 eed9 1e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 eef7 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 eefd 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 ef03 140 12 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 ef04 13e 11 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 ef05 13c 10 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ =
+STACK WIN 4 ef06 13a f 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ =
+STACK WIN 4 ef15 12a 0 0 4 10 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ =
+STACK WIN 4 f043 86 8 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 f044 84 7 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 f045 82 6 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ =
+STACK WIN 4 f046 80 5 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ =
+STACK WIN 4 f04b 7a 0 0 4 10 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ =
+STACK WIN 4 f0c9 8c 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 f0ca 8a 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 f0d3 7e 0 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 8 - ^ =
+STACK WIN 4 f0d4 7c 0 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 12 - ^ = $ebx $T0 8 - ^ =
+STACK WIN 4 f0d5 7a 0 0 4 10 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 12 - ^ = $ebx $T0 8 - ^ =
+STACK WIN 4 f155 24 3 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 f156 22 2 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 f165 12 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 f179 3e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 f182 31 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 f1b7 76 c 0 0 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 f221 8 0 0 0 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 f22d 66 2 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 f22e 64 1 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 f22f 62 0 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 f293 53 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 f2e6 96 c 0 4 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 f370 b 0 0 4 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 f37c 5 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 f381 88 c 0 0 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 f3fd b 0 0 0 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 f409 5 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 f40e 3 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 f411 3e 2 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 f412 3c 1 0 c 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 f413 3a 0 0 c 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 f41e 2e 0 0 c c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 f44f 129 6 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 f453 123 2 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ =
+STACK WIN 4 f454 121 1 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ =
+STACK WIN 4 f455 11f 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ =
+STACK WIN 4 f578 6b 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 f57c 4d 1 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ =
+STACK WIN 4 f57d 4b 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ =
+STACK WIN 4 f5e3 171 4 0 0 0 10 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 f5e7 169 0 0 0 4 10 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 20 - ^ =
+STACK WIN 4 f606 149 0 0 0 8 10 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 24 - ^ = $ebx $T0 20 - ^ =
+STACK WIN 4 f607 141 0 0 0 c 10 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 24 - ^ = $ebx $T0 20 - ^ =
+STACK WIN 4 f754 1d4 1e 0 18 0 b4 0 1 $T0 $ebp 96 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 f76d 1b1 5 0 18 4 b4 0 1 $T0 $ebp 96 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 184 - ^ =
+STACK WIN 4 f76e 1ad 4 0 18 8 b4 0 1 $T0 $ebp 96 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 184 - ^ =
+STACK WIN 4 f772 1a8 0 0 18 c b4 0 1 $T0 $ebp 96 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 184 - ^ =
+STACK WIN 4 f928 2f6 17 0 4 0 1c4 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 f93e 2d6 1 0 4 4 1c4 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 456 - ^ =
+STACK WIN 4 f93f 2d2 0 0 4 8 1c4 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 456 - ^ =
+STACK WIN 4 fc1e 1ce 18 0 4 0 98 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 fc37 1ab 0 0 4 4 98 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 156 - ^ =
+STACK WIN 4 fc38 1a7 0 0 4 8 98 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 156 - ^ =
+STACK WIN 4 fc3f 19f 0 0 4 c 98 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 156 - ^ =
+STACK WIN 4 fdec f3 7 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 fdf2 2c 1 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 fdf3 2a 0 0 8 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 fedf 5 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 fee4 170 c 0 8 c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1000a 10 0 0 8 c 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 1001b b 0 0 8 c 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 1004c 7 0 0 8 c 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 10054 15f 10 0 14 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1005b a1 9 0 14 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 1005c b2 8 0 14 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 10064 96 0 0 14 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 101b3 1b 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 101ce 4f 6 0 c 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1021d 30 4 0 8 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1024d 36 6 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 10283 e 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 10291 16 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 102a7 11 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 102b8 13 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 102cb e 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 102d9 13 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 102ec e 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 102fa 13 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1030d e 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1031b 16 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 10331 11 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 10342 13 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 10355 e 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 10363 13 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 10376 e 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 10384 16 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1039a 11 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 103ab 16 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 103c1 11 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 103d2 16 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 103e8 11 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 103f9 13 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1040c e 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1041a c 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 10426 26 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1044c 21 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1046d 26 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 10493 21 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 106ab 33 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 106de 24 6 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 106e2 1e 2 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 10702 4a a 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 10707 44 5 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 10708 42 4 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 1074c 9b0 2c 0 10 0 278 0 1 $T0 $ebp 504 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1076e 960 a 0 10 4 278 0 1 $T0 $ebp 504 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 636 - ^ =
+STACK WIN 4 10775 956 3 0 10 8 278 0 1 $T0 $ebp 504 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 636 - ^ =
+STACK WIN 4 10778 952 0 0 10 c 278 0 1 $T0 $ebp 504 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 636 - ^ =
+STACK WIN 4 110fc 129 8 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 11103 120 1 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 11104 11e 0 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 11225 33 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 11258 24 6 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1125c 1e 2 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1127c 4a a 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 11281 44 5 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 11282 42 4 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 112c6 10 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 112d6 f88 2a 0 10 0 8d0 0 1 $T0 $ebp 656 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 112f8 f39 8 0 10 4 8d0 0 1 $T0 $ebp 656 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 2260 - ^ =
+STACK WIN 4 112f9 f35 7 0 10 8 8d0 0 1 $T0 $ebp 656 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 2260 - ^ =
+STACK WIN 4 11300 f2d 0 0 10 c 8d0 0 1 $T0 $ebp 656 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 2260 - ^ =
+STACK WIN 4 1225e c2 11 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1226f 9e 0 0 4 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 12320 9b c 0 4 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 123b2 8 0 0 4 c 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 123bb 46 c 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 123f8 8 0 0 4 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 12401 113 8 0 10 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 12408 21 1 0 10 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 12409 1f 0 0 10 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 12514 17 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1252b 83 13 0 10 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 12534 78 a 0 10 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1253e 6d 0 0 10 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 125ae 119 c 0 10 c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 126bd 9 0 0 10 c 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 126c7 7d 8 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 126ce 75 1 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 126cf 73 0 0 8 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 126fd 2c 0 0 8 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 12 - ^ =
+STACK WIN 4 12744 81 b 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 12749 7b 6 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 1274e 75 1 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 1274f 73 0 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 127c5 71 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 127e6 4f 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 12836 a0 c 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 128c8 d 0 0 4 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 128d6 22 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 128f8 19f c 0 0 c 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 129c5 e 0 0 0 c 28 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 12a8e 8 0 0 0 c 28 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 12a97 115 c 0 8 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 12b7f 2c 0 0 8 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 12bac 11e c 0 c c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 12ca3 d 0 0 c c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 12cca 3f 9 0 8 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 12cd3 34 0 0 8 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 12cec 18 0 0 8 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 12d09 21b c 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 12e47 e 0 0 8 c 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 12f24 79 7 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 12f2b 70 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ =
+STACK WIN 4 12f61 39 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ =
+STACK WIN 4 12f62 37 0 0 c c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ =
+STACK WIN 4 12f9d 21 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 12fbe 46 b 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 12fc9 3a 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 13004 3c 5 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 13009 36 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 13040 48 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 13088 2b 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 130b3 314 11 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 130c0 305 4 0 8 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 130c4 300 0 0 8 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 130f1 2d2 0 0 8 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 133c7 b0 d 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 133cd a9 7 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 133d4 a1 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 13477 106 11 0 4 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 13483 f8 5 0 4 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 13484 f6 4 0 4 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 13488 f1 0 0 4 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 1357d 2df 12 0 c 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1358a 2d0 5 0 c 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 1358b 2ce 4 0 c 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 1358f 2c9 0 0 c c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 1385c cd 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 13929 2e2 f 0 0 0 138 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 13938 294 0 0 0 4 138 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 316 - ^ =
+STACK WIN 4 1394d 27e 0 0 0 8 138 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 316 - ^ =
+STACK WIN 4 13950 27a 0 0 0 c 138 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 316 - ^ =
+STACK WIN 4 13c0b a8 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 13c0c a6 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 13c54 5d 0 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 13cb3 2e3 2a 0 4 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 13cd7 2bd 6 0 4 4 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 13cdc 2b7 1 0 4 8 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 13cdd 2b5 0 0 4 c 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 13f96 72 7 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 13f97 70 6 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 13f98 6e 5 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 13f9d 68 0 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 14008 7c c 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 14079 a 0 0 4 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 14084 d 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14091 d 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1409e d 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 140ab f3 23 0 0 4 328 0 1 $T0 $ebp 680 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1419e 1e 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 142f3 a3 c 0 4 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 14385 10 0 0 4 c 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 14396 6 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1439c 1b 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 143b7 26 3 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 143b8 24 2 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 143dd 63 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14440 474 a 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14447 42e 3 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 14448 42c 2 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ =
+STACK WIN 4 14449 42a 1 0 0 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ =
+STACK WIN 4 1444a 428 0 0 0 10 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ =
+STACK WIN 4 148b4 b 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 148bf d 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 148cc e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 148da e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 148e8 e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 148f6 e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14904 12 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14916 e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14924 e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14932 e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14940 b 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1494b b 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14956 b 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14961 e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1496f b 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1497a e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14988 19 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 149a1 84 13 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 149a2 80 12 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 149a3 7e 11 0 8 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 149c9 57 0 0 8 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 12 - ^ =
+STACK WIN 4 14a25 d 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14a32 12 2 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14a44 9c 2 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14a57 86 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14ae0 a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14aea 5 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14aef 7 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14af6 a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14b00 8 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14b08 a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14b12 a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14b1c 8 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14b24 a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14b2e 8 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14b36 a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14b40 8 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14b48 a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14b52 8 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14b5a 7b 2 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14b5d 75 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14bd5 9 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14bde 25 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14c03 d 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14c10 4 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14c14 29 2 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14c26 f 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14c3d 16 2 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14c53 4 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14c57 4 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14c5b 1b 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14c76 4 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14c7a 2f 6 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14ca9 25 2 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14cce 4 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14cd2 d 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14cdf e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14ced 20 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14d0d 25 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14d32 33 6 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 14d65 34 6 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 14d99 13 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14dac 56 8 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14db2 4d 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14e02 61 b 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14e03 5d a 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14e04 59 9 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14e63 17 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14e7a 15 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14e8f 14 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14ea3 e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14eb1 14 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14ec5 25 1 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14ec6 23 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14ed2 14 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14eea 38 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14eeb 36 1 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14eec 32 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14f22 91 7 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 14f26 89 3 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 14f27 87 2 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 14f5c 40 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 14fb3 35 2 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14fb6 2f 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14fe8 81 b 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14fe9 7d a 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14fea 79 9 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 15069 1e 3 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1506a 1c 2 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 15087 47 3 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 15088 43 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 150ce 47 7 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 150cf 45 6 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 150d0 43 5 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 150d1 41 4 0 0 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 15115 65 11 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 15116 61 10 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 1511b 5b b 0 8 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 1511c 57 a 0 8 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 1517a 12 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1518c 31 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 151bd f 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 151cc f 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 151db 1d 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 151f8 33 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1522b 73 7 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1522f 6b 3 0 14 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 15230 5b 2 0 14 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1529e 2f 3 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 152cd f 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 152dc 79 4 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 152dd 75 3 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 152de 71 2 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 15355 68 3 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 15356 64 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 153bd a6 3 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 153be a2 2 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 153de 81 0 0 8 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 8 - ^ =
+STACK WIN 4 153f0 6e 0 0 8 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 8 - ^ =
+STACK WIN 4 15463 26 3 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 15464 22 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 15489 31 7 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1548e 29 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 154ba d0 7 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 154be b3 3 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ =
+STACK WIN 4 154bf b1 2 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ =
+STACK WIN 4 154ce 9f 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ =
+STACK WIN 4 1558a 69 13 0 8 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1559b 4f 2 0 8 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 40 - ^ =
+STACK WIN 4 1559c 4b 1 0 8 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 40 - ^ =
+STACK WIN 4 1559d 49 0 0 8 c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 40 - ^ =
+STACK WIN 4 155f3 96 22 0 8 0 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 15607 79 e 0 8 4 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 15615 66 0 0 8 8 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1563a 29 0 0 8 c 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 52 - ^ =
+STACK WIN 4 15689 2e 1 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1568a 2a 0 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 156b7 62 8 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 156b8 5e 7 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 156b9 5a 6 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 15719 8b a 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1571a 87 9 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1571b 83 8 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 157a4 1c 9 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 157a5 18 8 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 157c0 2a 7 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 157c5 22 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 157ea a6 5 0 4 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 15890 37 3 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 158c7 51 1 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 158c8 4d 0 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 15918 2e 1 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 15919 2a 0 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 15946 6a a 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 15947 66 9 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 1594e 5e 2 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 159b0 6c a 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 159b1 68 9 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 159b2 64 8 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 15a1c e0 e 0 4 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 15a23 d7 7 0 4 4 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 15a2a cd 0 0 4 8 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 15a45 b1 0 0 4 c 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 32 - ^ =
+STACK WIN 4 15afc 4f 6 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 15b02 47 0 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 15b4b 22 5 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 15b6d 22 5 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 15b8f 22 5 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 15bb1 2e 1 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 15bb2 2a 0 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 15bdf 2e 1 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 15be0 2a 0 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 15c0d 141 7 0 8 0 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 15c14 138 0 0 8 4 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 15c95 b3 0 0 8 8 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 15c96 b1 0 0 8 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 15d4e d4 6 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 15e22 c4 e 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 15ee6 7e d 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 15f64 125 11 0 10 0 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 15f75 112 0 0 10 4 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 16089 15f f 0 8 0 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 16098 4a 0 0 8 4 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 160f0 b3 0 0 8 8 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 161e8 31 6 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 16219 12 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1622b 12 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1623d 12 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1624f 150 7 0 8 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 16256 147 0 0 8 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1639f a0 6 0 c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1643f 50 5 0 4 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1648f 2bb 2b 0 4 0 d0 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 164aa 296 10 0 4 4 d0 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 212 - ^ =
+STACK WIN 4 164b3 28a 7 0 4 8 d0 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 212 - ^ =
+STACK WIN 4 164ba 282 0 0 4 c d0 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 212 - ^ =
+STACK WIN 4 1674a d9 b 0 c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 167b8 17 0 0 c 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 16823 14 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 16837 1b8 18 0 4 0 60 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 16848 1a0 7 0 4 4 60 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1684f 18d 0 0 4 8 60 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 16870 168 0 0 4 c 60 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 108 - ^ =
+STACK WIN 4 169ef 56f 22 0 c 0 a0 0 1 $T0 $ebp 108 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 16a03 97 e 0 c 4 a0 0 1 $T0 $ebp 108 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 164 - ^ =
+STACK WIN 4 16a11 88 0 0 c 8 a0 0 1 $T0 $ebp 108 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 164 - ^ =
+STACK WIN 4 16f5e 153 10 0 8 0 d0 0 1 $T0 $ebp 112 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 16f82 11b 0 0 8 4 d0 0 1 $T0 $ebp 112 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 212 - ^ =
+STACK WIN 4 16f89 113 0 0 8 8 d0 0 1 $T0 $ebp 112 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 212 - ^ =
+STACK WIN 4 16f92 109 0 0 8 c d0 0 1 $T0 $ebp 112 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 212 - ^ =
+STACK WIN 4 170b1 1ea 1b 0 8 0 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 170cc 1c8 0 0 8 4 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 17154 111 0 0 8 8 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 64 - ^ =
+STACK WIN 4 17155 10f 0 0 8 c 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 64 - ^ =
+STACK WIN 4 1729b e4 15 0 4 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 172a2 db e 0 4 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 172b0 ca 0 0 4 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1737f f 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1738e 100 19 0 4 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1739a f2 d 0 4 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 173a7 e4 0 0 4 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 1748e 46 3 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 174d4 92 6 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 17566 b42 14 0 8 0 6c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 17571 b35 9 0 8 4 6c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1757a b2b 0 0 8 8 6c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 175e3 abe 0 0 8 c 6c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 120 - ^ =
+STACK WIN 4 180a8 211 13 0 4 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 180af 208 c 0 4 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 180bb 1fb 0 0 4 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 182b9 28b 1f 0 4 0 98 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 182c5 27a 13 0 4 4 98 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 156 - ^ =
+STACK WIN 4 182c6 278 12 0 4 8 98 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 156 - ^ =
+STACK WIN 4 182d8 263 0 0 4 c 98 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 156 - ^ =
+STACK WIN 4 18544 341 d 0 8 0 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 18589 2f7 0 0 8 4 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 52 - ^ =
+STACK WIN 4 185f0 28f 0 0 8 8 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 52 - ^ =
+STACK WIN 4 185f1 28d 0 0 8 c 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 52 - ^ =
+STACK WIN 4 18885 4e4 18 0 14 0 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 18893 4d4 a 0 14 4 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 88 - ^ =
+STACK WIN 4 18894 4d2 9 0 14 8 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 88 - ^ =
+STACK WIN 4 1889d 4c8 0 0 14 c 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 88 - ^ =
+STACK WIN 4 18d69 14c 6 0 0 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 18eb5 116 5 0 10 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 18ed6 59 0 0 10 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 18fcb 1b 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 18fe6 1b 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19001 1b 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1901c a3 f 0 18 c 94 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 190b6 8 0 0 18 c 94 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 190bf a3 f 0 1c c 94 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 19159 8 0 0 1c c 94 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 19162 387 12 0 8 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 19172 350 2 0 8 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 40 - ^ =
+STACK WIN 4 19173 34e 1 0 8 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 40 - ^ =
+STACK WIN 4 19174 34c 0 0 8 c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 40 - ^ =
+STACK WIN 4 194e9 13e 7 0 8 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 194f0 135 0 0 8 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 19627 b1 6 0 8 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 196d8 64 7 0 8 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 196df 5b 0 0 8 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1973c 57 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19793 8f 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19822 14 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19836 14 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1984a 87 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 198d1 e3 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 199b4 1bd 9 0 c 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 199bb 1b4 2 0 c 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 199bc 1b2 1 0 c 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 199bd 1b0 0 0 c c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 19b71 71 b 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19b76 6b 6 0 c 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 19b7b 65 1 0 c 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 19b7c 63 0 0 c c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 19be2 b3 e 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 19be6 1a a 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ =
+STACK WIN 4 19be7 2e 9 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ =
+STACK WIN 4 19bf0 e 0 0 10 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ =
+STACK WIN 4 19c95 46 5 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19c9a 40 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19cdb a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19ce5 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19ceb 51 6 0 10 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 19d3c 15 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19d51 13 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19d64 15 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19d79 13 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19d8c 15 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19da1 13 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19db4 18 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19dcc 16 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19de2 18 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19dfa 16 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19e10 18 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19e28 16 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19e3e 18 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19e56 16 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19e6c 15 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19e81 13 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19e94 15 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19ea9 13 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19ebc 15 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19ed1 13 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19ee4 53 6 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 19f37 e 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19f45 44 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19f89 1de 1a 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 19f9a 1c6 9 0 8 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 19f9b 1c2 8 0 8 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 19fa3 1b9 0 0 8 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 1a167 78 c 0 8 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1a1d5 9 0 0 8 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 1a1df 5 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1a1e4 1f7 8 0 14 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1a1eb 1ee 1 0 14 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 1a1ec 1ec 0 0 14 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 1a246 174 0 0 14 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 1a3db 29 3 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1a404 1b 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1a41f 2a 3 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1a449 1b 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1a464 9 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1a46d 54 6 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1a4c1 2b 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1a4ec 4f 6 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1a53b 29 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1a564 4f 6 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1a5b3 29 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1a5dc 4f 6 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1a62b 29 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1a654 54 6 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1a6a8 2b 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1a6d3 4f 6 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1a722 29 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1a74b 4f 6 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1a79a 29 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1a7c3 54 6 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1a817 2b 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1a842 54 6 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1a896 2b 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1a8c1 54 6 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1a915 2b 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1a940 4f 6 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1a98f 29 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1a9b8 d 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1a9c5 8 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1a9cd 1f 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1a9ec 1a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1aa06 1f 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1aa25 1c 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1aa41 12 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1aa53 1b 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1aa6e 13b 1d 0 18 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1aa83 126 8 0 18 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 1aba9 3b 6 0 18 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1abe4 13d 1d 0 18 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1abf9 128 8 0 18 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 1ad21 3b 6 0 18 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1ad5c 1a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1ad76 3a2 1d 0 20 8 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1ad87 391 c 0 20 c 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 1b118 43 6 0 24 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1b15b 1b8 1d 0 1c 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1b170 1a3 8 0 1c c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 1b313 40 6 0 20 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1b353 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1b359 29 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1b382 419 6 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1b3a4 3f5 0 0 0 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 1b3a5 3ed 0 0 0 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 1b79b 190 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1b79c 18e 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1b92b 73 4 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1b92c 71 3 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 1b92d 6f 2 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ =
+STACK WIN 4 1b92e 6d 1 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ =
+STACK WIN 4 1b92f 6b 0 0 4 10 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ =
+STACK WIN 4 1b99e 33 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1b9a5 16 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 1b9a6 14 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 1b9d1 40 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1b9d2 3e 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1ba11 1c8 11 0 4 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1ba18 1bf a 0 4 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 1ba1c 1ba 6 0 4 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 1ba22 1b3 0 0 4 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 1bbd9 33 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1bbe0 16 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 1bbe1 14 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 1bc0c 89 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1bc0d 87 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1bc95 2c4 c 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1bc9c 2bb 5 0 4 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 1bc9d 2b9 4 0 4 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 1bca1 2b4 0 0 4 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 1bf59 395 1b 0 4 0 48 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1bf6a 37d a 0 4 4 48 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 76 - ^ =
+STACK WIN 4 1bf6d 377 7 0 4 8 48 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 76 - ^ =
+STACK WIN 4 1bf74 36f 0 0 4 c 48 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 76 - ^ =
+STACK WIN 4 1c2ee 29 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1c317 16 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1c32d 26 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1c353 26 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1c379 26 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1c39f 3 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1c3a2 fe 9 0 4 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1c3a9 e9 2 0 4 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 1c3aa e7 1 0 4 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 1c3ab e5 0 0 4 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 1c4a0 9 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1c4a9 fe 9 0 4 0 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1c4b0 e9 2 0 4 4 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 32 - ^ =
+STACK WIN 4 1c4b1 e7 1 0 4 8 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 32 - ^ =
+STACK WIN 4 1c4b2 e5 0 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 32 - ^ =
+STACK WIN 4 1c5a7 9 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1c5b0 355 9 0 4 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1c5b7 34c 2 0 4 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 40 - ^ =
+STACK WIN 4 1c5b8 348 1 0 4 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 40 - ^ =
+STACK WIN 4 1c5b9 346 0 0 4 c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 40 - ^ =
+STACK WIN 4 1c905 9 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1c90e 20 6 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1c912 1b 2 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1c917 15 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1c92e 36 6 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1c934 2f 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 1c964 79 8 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1c969 72 3 0 4 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 1c96a 70 2 0 4 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 1c9dd 3e6 11 0 10 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1c9e2 3df c 0 10 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 1c9e9 3d7 5 0 10 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 1c9ea 3d5 4 0 10 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 1cdc3 45d 1d 0 18 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1cdd7 449 9 0 18 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 1d220 1af a 0 18 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1d22a 1a3 0 0 18 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 1d270 15c 0 0 18 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 1d2a3 128 0 0 18 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 1d3cf 1e 3 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1d3ed 1d 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1d40a 1e 3 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1d428 26 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1d496 60 6 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1d49c 56 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ =
+STACK WIN 4 1d4a5 45 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ =
+STACK WIN 4 1d4a6 43 0 0 c c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ =
+STACK WIN 4 1d4f6 14 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1d50a 77 11 0 0 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1d51b 5f 0 0 0 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1d581 1e 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1d59f 32 1 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1d5a0 30 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1d5d1 1b 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1d5ec 96 12 0 4 0 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1d5fd 7c 1 0 4 4 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1d5fe 78 0 0 4 8 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1d682 72 11 0 8 0 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1d693 5a 0 0 8 4 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1d6cf 13 0 0 8 8 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1d6f4 1d0 13 0 4 0 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1d705 1b6 2 0 4 4 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 128 - ^ =
+STACK WIN 4 1d706 1b2 1 0 4 8 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 128 - ^ =
+STACK WIN 4 1d707 1b0 0 0 4 c 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 128 - ^ =
+STACK WIN 4 1d8c4 bf 12 0 4 0 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1d8d5 a5 1 0 4 4 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1d8d6 a1 0 0 4 8 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1d983 2c 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1d9af 65 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1da14 3c 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1da50 1e3 4 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1da51 1e1 3 0 c 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 1da52 1df 2 0 c 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ =
+STACK WIN 4 1da53 1dd 1 0 c c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ =
+STACK WIN 4 1da54 1db 0 0 c 10 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ =
+STACK WIN 4 1dc33 12 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1dc45 18 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1dc5d 40 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1dc9d 78 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1dd15 1490 4 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1dd16 83f 3 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1dd17 83d 2 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1f1a5 1680 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1f1a9 15f8 1 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1f1aa 15f6 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1f1db 86c 0 0 c c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 20825 be 9 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 2082e a9 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 20840 96 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 20930 82 6 0 c 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 209b2 6e 4 0 8 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 20a20 5 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 20a25 22b 8 0 14 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 20a2c 222 1 0 14 4 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 20a2d 220 0 0 14 8 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 20a8b 1c1 0 0 14 c 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 32 - ^ =
+STACK WIN 4 20c50 29 3 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 20c79 1b 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 20c94 2a 3 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 20cbe 1b 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 20cd9 1f 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 20cf8 1f 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 20d17 2d 9 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 20d20 23 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 20d44 94 6 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 20d45 92 5 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 20d4a 8c 0 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 20dd8 cd c 0 4 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 20e9b 9 0 0 4 c 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 20ea5 2c 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 20ea6 2a 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 20ed1 2a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 20efb 22 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 20efc 20 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 20f1d d 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 20f64 11 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 20f75 15 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 20f8a 5 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 20f8f 5 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 20f94 11 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 20fa5 15 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 20fba 50 c 0 0 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 20fd7 1c 0 0 0 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 2100a 60 9 0 0 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 21013 57 0 0 0 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 2106a d 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 21077 170 5 0 8 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 2107c 169 0 0 8 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 210e1 103 0 0 8 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 21125 be 0 0 8 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 211e7 182 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 21369 b6 7 0 c 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 21370 ad 0 0 c 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 2141f 2f 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 2147c 47 10 0 4 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 214c3 1b2 2a 0 18 8 34 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 214e0 195 d 0 18 c 34 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 56 - ^ =
+STACK WIN 4 21675 34 5 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 2167a 2e 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 216a9 34 5 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 216ae 2e 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 216dd 34 5 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 216e2 2e 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 21711 a2 c 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 21718 99 5 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ =
+STACK WIN 4 2171d 93 0 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ =
+STACK WIN 4 2172b 84 0 0 10 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ =
+STACK WIN 4 217b3 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 217b9 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 217bf 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 217c5 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 217cb c 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 217d7 c 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 217e3 c 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 217ef 349 c 0 0 c 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 21a99 d 0 0 0 c 3c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 21b38 1f5 14 0 24 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 21b47 1e4 5 0 24 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 21b48 1e2 4 0 24 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 21b49 1e0 3 0 24 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 21d2d 1ae 5 0 0 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 21d32 15f 0 0 0 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 21d62 12e 0 0 0 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 21edb 4f c 0 0 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 21f21 8 0 0 0 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 21f2a 38 c 0 0 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 21f59 8 0 0 0 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 21f62 41 c 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 21f9a 8 0 0 4 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 21fa3 35 a 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 21fa8 2f 5 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 21fad 27 0 0 8 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 21fd8 d3 7 0 c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 21fdf ca 0 0 c 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 22020 88 0 0 c 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 22068 33 0 0 c c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 220ab 50 4 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 220af 4a 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 220fb f0 e 0 10 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 22102 e7 7 0 10 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 22108 e0 1 0 10 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 22109 de 0 0 10 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 221eb 5c 4 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 221ef 56 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 22247 db 8 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 2224c d2 3 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 2224d d0 2 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 22277 a5 0 0 c c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 22322 28 3 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 2234a 25 3 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 2236f 18 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 22387 f6 c 0 14 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 2238e eb 5 0 14 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 22393 e5 0 0 14 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 2247d 33 3 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 22498 16 0 0 14 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 224b0 1d 4 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 224b4 17 0 0 14 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 224cd 224 17 0 1c 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 224e2 20f 2 0 1c c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 226f1 3e 6 0 1c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 2272f 294 8 0 14 0 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 22736 28b 1 0 14 4 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 60 - ^ =
+STACK WIN 4 22737 289 0 0 14 8 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 60 - ^ =
+STACK WIN 4 22793 1f9 0 0 14 c 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 60 - ^ =
+STACK WIN 4 229c3 29 3 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 229ec 1b 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 22a07 2a 3 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 22a31 1b 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 22a7b 81 8 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 22a83 70 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 22a92 60 0 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 8 - ^ =
+STACK WIN 4 22a93 5e 0 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 8 - ^ =
+STACK WIN 4 22afc 93 7 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 22b00 8d 3 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ =
+STACK WIN 4 22b01 8b 2 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ =
+STACK WIN 4 22b40 4b 0 0 c c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ =
+STACK WIN 4 22b8f a2 6 0 8 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 22b94 9b 1 0 8 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 22b95 99 0 0 8 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 22c31 83 c 0 4 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 22cab 8 0 0 4 c 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 22cb4 d8 c 0 10 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 22d83 8 0 0 10 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 22d8c e6 c 0 c c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 22e69 8 0 0 c c 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 22e72 8 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 22e7a 117 8 0 8 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 22e81 10e 1 0 8 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 22e82 10c 0 0 8 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 22f91 27 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 23021 ec 7 0 10 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 23028 e3 0 0 10 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 23088 82 0 0 10 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 2310d 17 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 23124 95 a 0 0 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 2312a 7d 4 0 0 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 2312b 7b 3 0 0 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 2312e 77 0 0 0 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 231b9 1a 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 231d3 1a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 231ed 389 16 0 18 8 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 23201 375 2 0 18 c 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 48 - ^ =
+STACK WIN 4 23576 40 6 0 20 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 235b6 f8 7 0 10 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 235bd ef 0 0 10 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 2361d 8e 0 0 10 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 236ae 27 3 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 236d5 4d 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 236d6 48 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 23722 5d 4 0 0 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 2373e 3f 0 0 0 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 2373f 3d 0 0 0 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 2377f 24c f 0 8 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 23789 95 5 0 8 4 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 2378e 8f 0 0 8 8 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 237b1 6b 0 0 8 c 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 239cb 50 6 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 239cc 4e 5 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 239d1 48 0 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ =
+STACK WIN 4 239dc 3c 0 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ =
+STACK WIN 4 239dd 3a 0 0 4 10 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ =
+STACK WIN 4 23a1b ba 7 0 c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 23a22 b1 0 0 c 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 23a5f 73 0 0 c 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 23ad5 13 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 240b9 14 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 0 1000 13 0 0 4 0 0 0 0 0
+STACK WIN 0 1020 1b 0 0 10 0 0 0 0 0
+STACK WIN 0 1040 1b 0 0 10 0 0 0 0 0
+STACK WIN 0 1060 19 8 0 4 0 0 0 0 0
+STACK WIN 0 1080 b 0 0 0 0 0 0 0 0
+STACK WIN 0 1090 24 3 0 4 0 0 0 0 0
+STACK WIN 0 10c0 f 0 0 8 0 0 0 0 0
+STACK WIN 0 10d0 17 0 0 4 0 0 0 0 0
+STACK WIN 0 10f0 27 9 0 10 0 0 0 0 0
+STACK WIN 0 1120 27 9 0 10 0 0 0 0 0
+STACK WIN 0 1150 d 0 0 8 0 0 0 0 0
+STACK WIN 0 1160 13 0 0 4 0 0 0 0 0
+STACK WIN 0 1180 21 d 0 10 0 0 0 0 0
+STACK WIN 0 11b0 21 d 0 10 0 0 0 0 0
+STACK WIN 0 11e0 7 0 0 0 0 0 0 0 0
+STACK WIN 0 11f0 6b 28 0 4 8 10 0 0 0
+STACK WIN 0 1260 32 3 0 0 0 0 0 0 0
+STACK WIN 0 12a0 e 0 0 0 0 0 0 0 0
+STACK WIN 0 12b0 47 3 0 4 0 0 0 0 0
+STACK WIN 0 1300 19 8 0 4 0 0 0 0 0
+STACK WIN 0 1320 32 3 0 0 0 0 0 0 0
+STACK WIN 0 1360 47 3 0 4 0 0 0 0 0
+STACK WIN 0 13b0 19 8 0 4 0 0 0 0 0
+STACK WIN 0 13d0 32 3 0 0 0 0 0 0 0
+STACK WIN 0 1410 47 3 0 4 0 0 0 0 0
+STACK WIN 0 1460 19 8 0 4 0 0 0 0 0
+STACK WIN 0 1480 71 29 0 4 c 10 0 0 0
+STACK WIN 0 1500 1b 0 0 8 0 0 0 0 0
+STACK WIN 0 1520 35 4 0 0 0 0 0 0 0
+STACK WIN 0 1560 20b 2d 0 14 14 14 0 0 1
+STACK WIN 0 19f0 31 0 0 0 0 0 0 0 0
+STACK WIN 0 1a30 51 d 0 4 c 0 0 0 0
+STACK WIN 0 1a90 c7 7 0 4 10 8 0 0 1
+STACK WIN 0 1b60 36 0 0 0 0 0 0 0 0
+STACK WIN 0 1ba0 3 0 0 0 0 0 0 0 0
+STACK WIN 0 1db0 81 2 0 8 0 0 0 0 0
+STACK WIN 0 1e40 1d 7 0 0 0 0 0 0 0
+STACK WIN 0 1e60 a2 3a 0 4 10 c4 0 0 0
+STACK WIN 0 1f10 142 c 0 c 0 38 0 0 1
+STACK WIN 0 2060 138 38 0 0 8 244 0 0 0
+STACK WIN 0 21a0 3b 7 0 4 0 0 0 0 0
+STACK WIN 0 21e0 25 5 0 4 0 0 0 0 0
+STACK WIN 0 2210 26 3 0 0 0 0 0 0 0
+STACK WIN 0 2240 e 0 0 0 0 0 0 0 0
+STACK WIN 0 2250 4 0 0 0 0 0 0 0 0
+STACK WIN 0 2260 11 0 0 0 0 0 0 0 0
+STACK WIN 0 2280 27 3 0 0 0 0 0 0 0
+STACK WIN 0 22b0 b 0 0 0 0 0 0 0 0
+STACK WIN 0 22c0 24 3 0 4 0 0 0 0 0
+STACK WIN 0 22f0 e 0 0 0 0 0 0 0 0
+STACK WIN 0 2300 c 0 0 0 0 0 0 0 0
+STACK WIN 0 2310 26 0 0 0 0 0 0 0 0
+STACK WIN 0 2340 1d 1 0 0 0 0 0 0 0
+STACK WIN 0 2360 1d 1 0 0 0 0 0 0 0
+STACK WIN 0 2380 13 0 0 0 0 0 0 0 0
+STACK WIN 0 23a0 23 0 0 0 0 0 0 0 0
+STACK WIN 0 23d0 56 5 0 0 8 c 0 0 0
+STACK WIN 0 2430 47 c 0 0 c 8 0 0 0
+STACK WIN 0 24f0 23 1 0 0 0 4 0 0 0
+STACK WIN 0 2520 3f b 0 8 0 0 0 0 0
+STACK WIN 0 2560 20 0 0 0 0 0 0 0 0
+STACK WIN 0 2580 20 0 0 0 0 0 0 0 0
+STACK WIN 0 25a0 1d 0 0 0 0 0 0 0 0
+STACK WIN 0 25c0 da 11 0 c 0 0 0 0 1
+STACK WIN 0 26a0 27 8 0 4 0 0 0 0 0
+STACK WIN 0 26d0 4a d 0 8 0 0 0 0 0
+STACK WIN 0 2720 e 0 0 0 0 0 0 0 0
+STACK WIN 0 2730 5 2 0 4 0 0 0 0 0
+STACK WIN 0 2740 5 2 0 4 0 0 0 0 0
+STACK WIN 0 2750 3 2 0 0 0 0 0 0 0
+STACK WIN 0 2760 b 0 0 0 0 0 0 0 0
+STACK WIN 0 2770 ef 11 0 c 0 0 0 0 1
+STACK WIN 0 2860 2b 8 0 4 0 0 0 0 0
+STACK WIN 0 2890 4f d 0 8 0 0 0 0 0
+STACK WIN 0 28e0 e 0 0 0 0 0 0 0 0
+STACK WIN 0 28f0 5 2 0 4 0 0 0 0 0
+STACK WIN 0 2900 3 2 0 0 0 0 0 0 0
+STACK WIN 0 2910 13 0 0 0 0 0 0 0 0
+STACK WIN 0 2930 86 a 0 10 10 4 0 0 1
+STACK WIN 0 29c0 23 0 0 0 0 0 0 0 0
+STACK WIN 0 29f0 1 0 0 0 0 0 0 0 0
+STACK WIN 0 2a00 26 0 0 0 0 0 0 0 0
+STACK WIN 0 2a30 23 0 0 0 0 0 0 0 0
+STACK WIN 0 2a60 76 23 0 0 4 50 0 0 0
+STACK WIN 0 2ae0 3 0 0 4 0 0 0 0 0
+STACK WIN 0 2af0 1 0 0 0 0 0 0 0 0
+STACK WIN 0 2b00 21 0 0 0 0 0 0 0 0
+STACK WIN 0 2b30 32 6 0 4 8 0 0 0 0
+STACK WIN 0 2b70 2f 6 0 0 8 0 0 0 0
+STACK WIN 0 2ba0 20 0 0 0 0 0 0 0 0
+STACK WIN 0 2bc0 20 0 0 0 0 0 0 0 0
+STACK WIN 0 2be0 1d 0 0 0 0 0 0 0 0
+STACK WIN 0 2c00 c1 5 0 8 0 0 0 0 1
+STACK WIN 0 2cd0 83 8 0 8 0 0 0 0 1
+STACK WIN 0 2d60 1f 0 0 4 0 0 0 0 0
+STACK WIN 0 2d80 bc b 0 8 0 0 0 0 1
+STACK WIN 0 2e40 e 0 0 0 0 0 0 0 0
+STACK WIN 0 2e50 5 2 0 4 0 0 0 0 0
+STACK WIN 0 2e60 e 0 0 8 0 0 0 0 0
+STACK WIN 0 2e70 da 4 0 8 0 0 0 0 1
+STACK WIN 0 2f50 97 8 0 8 0 0 0 0 1
+STACK WIN 0 2ff0 4 0 0 0 0 0 0 0 0
+STACK WIN 0 3000 23 0 0 4 0 0 0 0 0
+STACK WIN 0 3030 c7 e 0 8 0 0 0 0 1
+STACK WIN 0 3100 e 0 0 0 0 0 0 0 0
+STACK WIN 0 3110 5 2 0 4 0 0 0 0 0
+STACK WIN 0 3120 e 0 0 8 0 0 0 0 0
+STACK WIN 0 3130 6 0 0 0 0 0 0 0 0
+STACK WIN 0 3140 208 6 0 8 10 8 0 0 1
+STACK WIN 0 33d0 1 0 0 0 0 0 0 0 0
+STACK WIN 0 33e0 8 0 0 0 0 0 0 0 0
+STACK WIN 0 33f0 56 3 0 0 0 10 0 0 0
+STACK WIN 0 3450 32 0 0 4 0 0 0 0 0
+STACK WIN 0 3490 28 0 0 0 0 0 0 0 0
+STACK WIN 0 34c0 19 0 0 0 0 0 0 0 0
+STACK WIN 0 34e0 21 0 0 0 0 0 0 0 0
+STACK WIN 0 3510 19 8 0 4 0 0 0 0 0
+STACK WIN 0 3530 7 0 0 0 0 0 0 0 0
+STACK WIN 0 3540 6 0 0 0 0 0 0 0 0
+STACK WIN 0 36d0 39 8 0 4 0 0 0 0 0
+STACK WIN 0 3710 6 0 0 0 0 0 0 0 0
+STACK WIN 0 38a0 3a 8 0 4 0 0 0 0 0
+STACK WIN 0 38e0 6 0 0 0 0 0 0 0 0
+STACK WIN 0 38f0 32 0 0 4 0 0 0 0 0
+STACK WIN 0 3930 19 0 0 0 0 0 0 0 0
+STACK WIN 0 3950 56 7 0 4 0 c 0 0 0
+STACK WIN 0 39b0 4 0 0 0 0 0 0 0 0
+STACK WIN 0 39c0 59 7 0 4 0 c 0 0 0
+STACK WIN 0 3a20 6 0 0 0 0 0 0 0 0
+STACK WIN 0 3a30 21 d 0 10 0 0 0 0 0
+STACK WIN 0 3a60 27 9 0 10 0 0 0 0 0
+STACK WIN 0 3a90 24 f 0 0 0 0 0 0 0
+STACK WIN 0 3ac0 1 0 0 0 0 0 0 0 0
+STACK WIN 0 3ad0 15 0 0 0 0 0 0 0 0
+STACK WIN 0 3af0 21 d 0 10 0 0 0 0 0
+STACK WIN 0 3b20 27 9 0 10 0 0 0 0 0
+STACK WIN 0 3b50 22 d 0 0 0 0 0 0 0
+STACK WIN 0 3b80 10 0 0 0 0 0 0 0 0
+STACK WIN 0 3b90 25 11 0 0 0 0 0 0 0
+STACK WIN 0 3bc0 4f a 0 0 0 10 0 0 0
+STACK WIN 0 3c10 54 7 0 8 0 c 0 0 0
+STACK WIN 0 3c70 57 7 0 8 0 c 0 0 0
+STACK WIN 0 3cd0 19 8 0 4 0 0 0 0 0
+STACK WIN 0 3cf0 7 1 0 0 0 4 0 0 0
+STACK WIN 0 3d00 21 d 0 14 0 0 0 0 0
+STACK WIN 0 3d30 7 1 0 0 0 4 0 0 0
+STACK WIN 0 3d40 27 9 0 14 0 0 0 0 0
+STACK WIN 0 3d70 3 0 0 0 0 0 0 0 0
+STACK WIN 0 3d80 1 0 0 0 0 0 0 0 0
+STACK WIN 0 3d90 7 1 0 0 0 4 0 0 0
+STACK WIN 0 3da0 15 0 0 4 0 0 0 0 0
+STACK WIN 0 3dc0 1 0 0 4 0 0 0 0 0
+STACK WIN 0 3dd0 15 0 0 8 0 0 0 0 0
+STACK WIN 0 3df0 21 d 0 14 0 0 0 0 0
+STACK WIN 0 3e20 27 9 0 14 0 0 0 0 0
+STACK WIN 0 3e50 22 d 0 0 0 0 0 0 0
+STACK WIN 0 3e80 10 0 0 0 0 0 0 0 0
+STACK WIN 0 3e90 7 1 0 0 0 4 0 0 0
+STACK WIN 0 3ea0 25 11 0 c 0 0 0 0 0
+STACK WIN 0 3ed0 3 0 0 4 0 0 0 0 0
+STACK WIN 0 3ee0 15 0 0 0 0 0 0 0 0
+STACK WIN 0 3f00 22 d 0 8 0 0 0 0 0
+STACK WIN 0 3f30 13 0 0 0 0 0 0 0 0
+STACK WIN 0 3f50 1 0 0 0 0 0 0 0 0
+STACK WIN 0 3f60 15 0 0 8 0 0 0 0 0
+STACK WIN 0 3f80 22 d 0 0 0 0 0 0 0
+STACK WIN 0 3fb0 15 0 0 4 0 0 0 0 0
+STACK WIN 0 3fd0 15 0 0 4 0 0 0 0 0
+STACK WIN 0 3ff0 13 0 0 4 0 0 0 0 0
+STACK WIN 0 4010 ae e 0 4 0 54 0 0 0
+STACK WIN 0 40c0 ae e 0 4 0 4c 0 0 0
+STACK WIN 0 4170 40 7 0 4 0 0 0 0 0
+STACK WIN 0 4464 13 0 0 0 0 0 0 0 0
+STACK WIN 0 466c 16 0 0 0 0 0 0 0 0
+STACK WIN 0 46a0 9 0 0 0 0 0 0 0 0
+STACK WIN 0 46f2 a 0 0 0 0 0 0 0 0
+STACK WIN 0 5405 14 0 0 0 0 0 0 0 0
+STACK WIN 0 58bc a 0 0 0 0 0 0 0 0
+STACK WIN 0 6039 12 0 0 0 0 0 0 0 0
+STACK WIN 0 60e0 8b 0 0 4 0 0 0 0 0
+STACK WIN 0 71eb b 0 0 0 0 0 0 0 0
+STACK WIN 0 7a28 a 0 0 0 0 0 0 0 0
+STACK WIN 0 7b36 a 0 0 0 0 0 0 0 0
+STACK WIN 0 7cc5 9 0 0 0 0 0 0 0 0
+STACK WIN 0 7f28 4 0 0 0 0 0 0 0 0
+STACK WIN 0 8151 9 0 0 0 0 0 0 0 0
+STACK WIN 0 821f 9 0 0 0 0 0 0 0 0
+STACK WIN 0 8390 a 0 0 0 0 0 0 0 0
+STACK WIN 0 83ce 21 0 0 0 0 0 0 0 0
+STACK WIN 0 8477 9 0 0 0 0 0 0 0 0
+STACK WIN 0 8714 a 0 0 0 0 0 0 0 0
+STACK WIN 0 8747 a 0 0 0 0 0 0 0 0
+STACK WIN 0 8779 a 0 0 0 0 0 0 0 0
+STACK WIN 0 87b4 a 0 0 0 0 0 0 0 0
+STACK WIN 0 89d2 9 0 0 0 0 0 0 0 0
+STACK WIN 0 8a62 7c 0 0 0 0 0 0 0 0
+STACK WIN 0 8c49 4 0 0 0 0 0 0 0 0
+STACK WIN 0 8ce2 4 0 0 0 0 0 0 0 0
+STACK WIN 0 9694 9 0 0 0 0 0 0 0 0
+STACK WIN 0 9835 c 0 0 0 0 0 0 0 0
+STACK WIN 0 9841 c 0 0 0 0 0 0 0 0
+STACK WIN 0 9a66 4 0 0 0 0 0 0 0 0
+STACK WIN 0 9ab6 4 0 0 0 0 0 0 0 0
+STACK WIN 0 9ae0 4c 8 0 c 10 0 0 0 1
+STACK WIN 0 9c4a 6 0 0 0 0 0 0 0 0
+STACK WIN 0 9ca8 9 0 0 0 0 0 0 0 0
+STACK WIN 0 9ee5 9 0 0 0 0 0 0 0 0
+STACK WIN 0 9fd7 c 0 0 0 0 0 0 0 0
+STACK WIN 0 a04a 9 0 0 0 0 0 0 0 0
+STACK WIN 0 a163 c 0 0 0 0 0 0 0 0
+STACK WIN 0 a1b9 9 0 0 0 0 0 0 0 0
+STACK WIN 0 a1d0 88 0 0 8 0 0 0 0 0
+STACK WIN 0 a2c0 7a 0 0 c 0 0 0 0 0
+STACK WIN 0 c23c a 0 0 0 0 0 0 0 0
+STACK WIN 0 df29 14 0 0 0 0 0 0 0 0
+STACK WIN 0 dfed a 0 0 0 0 0 0 0 0
+STACK WIN 0 e257 c 0 0 0 0 0 0 0 0
+STACK WIN 0 e40d 15 0 0 0 0 0 0 0 0
+STACK WIN 0 e761 17 0 0 0 0 0 0 0 0
+STACK WIN 0 eaa4 c 0 0 0 0 0 0 0 0
+STACK WIN 0 eea0 9 0 0 0 0 0 0 0 0
+STACK WIN 0 f221 9 0 0 0 0 0 0 0 0
+STACK WIN 0 f370 c 0 0 0 0 0 0 0 0
+STACK WIN 0 f3fd c 0 0 0 0 0 0 0 0
+STACK WIN 0 1000a 11 0 0 0 0 0 0 0 0
+STACK WIN 0 1001b c 0 0 0 0 0 0 0 0
+STACK WIN 0 1004c 8 0 0 0 0 0 0 0 0
+STACK WIN 0 10558 90 3 0 c c 0 0 0 0
+STACK WIN 0 105e8 46 0 0 10 4 0 0 0 1
+STACK WIN 0 1064a 17 4 0 0 10 0 0 0 1
+STACK WIN 0 10661 19 0 0 0 0 0 0 0 0
+STACK WIN 0 10694 17 1 0 8 4 0 0 0 1
+STACK WIN 0 123b2 9 0 0 0 0 0 0 0 0
+STACK WIN 0 123f8 9 0 0 0 0 0 0 0 0
+STACK WIN 0 126bd a 0 0 0 0 0 0 0 0
+STACK WIN 0 128c8 e 0 0 0 0 0 0 0 0
+STACK WIN 0 129c5 f 0 0 0 0 0 0 0 0
+STACK WIN 0 12a8e 9 0 0 0 0 0 0 0 0
+STACK WIN 0 12b7f 2d 0 0 0 0 0 0 0 0
+STACK WIN 0 12ca3 e 0 0 0 0 0 0 0 0
+STACK WIN 0 12e47 f 0 0 0 0 0 0 0 0
+STACK WIN 0 14079 b 0 0 0 0 0 0 0 0
+STACK WIN 0 14221 84 3 0 8 c 0 0 0 0
+STACK WIN 0 142a5 23 0 0 0 0 0 0 0 0
+STACK WIN 0 142f0 3 0 0 0 0 0 0 0 0
+STACK WIN 0 14385 11 0 0 0 0 0 0 0 0
+STACK WIN 0 190b6 9 0 0 0 0 0 0 0 0
+STACK WIN 0 19159 9 0 0 0 0 0 0 0 0
+STACK WIN 0 1a1d5 a 0 0 0 0 0 0 0 0
+STACK WIN 0 20e9b a 0 0 0 0 0 0 0 0
+STACK WIN 0 20fd7 1c 0 0 0 0 0 0 0 0
+STACK WIN 0 21a99 e 0 0 0 0 0 0 0 0
+STACK WIN 0 21f21 9 0 0 0 0 0 0 0 0
+STACK WIN 0 21f59 9 0 0 0 0 0 0 0 0
+STACK WIN 0 21f9a 9 0 0 0 0 0 0 0 0
+STACK WIN 0 22cab 9 0 0 0 0 0 0 0 0
+STACK WIN 0 22d83 9 0 0 0 0 0 0 0 0
+STACK WIN 0 22e69 9 0 0 0 0 0 0 0 0
+STACK WIN 0 23b00 be 0 0 8 0 0 0 0 0
diff --git a/google-breakpad/src/processor/testdata/module1.out b/google-breakpad/src/processor/testdata/module1.out
new file mode 100644
index 0000000..cd6e18d
--- /dev/null
+++ b/google-breakpad/src/processor/testdata/module1.out
@@ -0,0 +1,29 @@
+MODULE windows x86 111111111111111111111111111111111 module1.pdb
+INFO CODE_ID FFFFFFFF module1.exe
+FILE 1 file1_1.cc
+FILE 2 file1_2.cc
+FILE 3 file1_3.cc
+FUNC 1000 c 0 Function1_1
+1000 4 44 1
+1004 4 45 1
+1008 4 46 1
+FUNC 1100 8 4 Function1_2
+1100 4 65 2
+1104 4 66 2
+FUNC 1200 100 8 Function1_3
+FUNC 1300 100 c Function1_4
+FUNC 2000 0 0 Test_Zero_Size_Function_Is_Ignored
+2000 4 88 2
+PUBLIC 2800 0 PublicSymbol
+FUNC 3000 7000 42 LargeFunction
+3000 7000 4098359 3
+STACK WIN 4 1000 c 1 0 0 0 0 0 1 $eip 4 + ^ = $esp $ebp 8 + = $ebp $ebp ^ =
+STACK WIN 4 1100 8 1 0 0 0 0 0 1 $eip 4 + ^ = $esp $ebp 8 + = $ebp $ebp ^ =
+STACK WIN 4 1100 100 1 0 0 0 0 0 1 $eip 4 + ^ = $esp $ebp 8 + = $ebp $ebp ^ =
+STACK WIN 4 1300 100 1 0 0 0 0 0 1 $eip 4 + ^ = $esp $ebp 8 + = $ebp $ebp ^ =
+STACK CFI INIT 3d40 af .cfa: $esp 4 + .ra: .cfa 4 - ^
+STACK CFI 3d41 .cfa: $esp 8 + 
+STACK CFI 3d43 .cfa: $ebp 8 + $ebp: .cfa 8 - ^
+STACK CFI 3d54 $ebx: .cfa 20 - ^
+STACK CFI 3d5a $esi: .cfa 16 - ^
+STACK CFI 3d84 $edi: .cfa 12 - ^
diff --git a/google-breakpad/src/processor/testdata/module2.out b/google-breakpad/src/processor/testdata/module2.out
new file mode 100644
index 0000000..845212c
--- /dev/null
+++ b/google-breakpad/src/processor/testdata/module2.out
@@ -0,0 +1,23 @@
+MODULE windows x86 222222222 module2.pdb
+FILE 1 file2_1.cc
+FILE 2 file2_2.cc
+FILE 3 file2_3.cc
+FUNC 2000 c 4 Function2_1
+1000 4 54 1
+1004 4 55 1
+1008 4 56 1
+PUBLIC 2160 0 Public2_1
+FUNC 2170 14 4 Function2_2
+2170 6 10 2
+2176 4 12 2
+217a 6 13 2
+2180 4 21 2
+PUBLIC 21a0 0 Public2_2
+STACK WIN 4 2000 c 1 0 0 0 0 0 1 $eip 4 + ^ = $esp $ebp 8 + = $ebp $ebp ^ =
+STACK WIN 4 2170 14 1 0 0 0 0 0 1 $eip 4 + ^ = $esp $ebp 8 + = $ebp $ebp ^ =
+STACK CFI INIT 3df0 af .cfa: $esp 4 + .ra: .cfa 4 - ^
+STACK CFI 3df1 .cfa: $esp 8 +
+STACK CFI 3df3 .cfa: $ebp 8 + $ebp: .cfa 8 - ^
+STACK CFI 3e04 $ebx: .cfa 20 - ^
+STACK CFI 3e0a $esi: .cfa 16 - ^
+STACK CFI 3e34 $edi: .cfa 12 - ^
diff --git a/google-breakpad/src/processor/testdata/module3_bad.out b/google-breakpad/src/processor/testdata/module3_bad.out
new file mode 100644
index 0000000..bb77248
--- /dev/null
+++ b/google-breakpad/src/processor/testdata/module3_bad.out
@@ -0,0 +1,3 @@
+MODULE windows x86 333333333333333333333333333333333 module3.pdb
+FILE 1 file1.cc
+FUNC 1000
diff --git a/google-breakpad/src/processor/testdata/module4_bad.out b/google-breakpad/src/processor/testdata/module4_bad.out
new file mode 100644
index 0000000..d01fb2c
--- /dev/null
+++ b/google-breakpad/src/processor/testdata/module4_bad.out
@@ -0,0 +1,5 @@
+MODULE windows x86 444444444444444444444444444444444 module4.pdb
+FILE 1 file4_1.cc
+FILE 2 file4_2.cc
+1000 4 44 1
+1004 4 45 1
diff --git a/google-breakpad/src/processor/testdata/null_read_av.dmp b/google-breakpad/src/processor/testdata/null_read_av.dmp
new file mode 100755
index 0000000..f146dc7
--- /dev/null
+++ b/google-breakpad/src/processor/testdata/null_read_av.dmp
Binary files differ
diff --git a/google-breakpad/src/processor/testdata/null_write_av.dmp b/google-breakpad/src/processor/testdata/null_write_av.dmp
new file mode 100755
index 0000000..35c5933
--- /dev/null
+++ b/google-breakpad/src/processor/testdata/null_write_av.dmp
Binary files differ
diff --git a/google-breakpad/src/processor/testdata/read_av_clobber_write.dmp b/google-breakpad/src/processor/testdata/read_av_clobber_write.dmp
new file mode 100755
index 0000000..5deea8d
--- /dev/null
+++ b/google-breakpad/src/processor/testdata/read_av_clobber_write.dmp
Binary files differ
diff --git a/google-breakpad/src/processor/testdata/read_av_conditional.dmp b/google-breakpad/src/processor/testdata/read_av_conditional.dmp
new file mode 100755
index 0000000..b360423
--- /dev/null
+++ b/google-breakpad/src/processor/testdata/read_av_conditional.dmp
Binary files differ
diff --git a/google-breakpad/src/processor/testdata/read_av_non_null.dmp b/google-breakpad/src/processor/testdata/read_av_non_null.dmp
new file mode 100755
index 0000000..2d972a4
--- /dev/null
+++ b/google-breakpad/src/processor/testdata/read_av_non_null.dmp
Binary files differ
diff --git a/google-breakpad/src/processor/testdata/stack_exhaustion.dmp b/google-breakpad/src/processor/testdata/stack_exhaustion.dmp
new file mode 100755
index 0000000..4eb378b
--- /dev/null
+++ b/google-breakpad/src/processor/testdata/stack_exhaustion.dmp
Binary files differ
diff --git a/google-breakpad/src/processor/testdata/symbols/kernel32.pdb/BCE8785C57B44245A669896B6A19B9542/kernel32.sym b/google-breakpad/src/processor/testdata/symbols/kernel32.pdb/BCE8785C57B44245A669896B6A19B9542/kernel32.sym
new file mode 100644
index 0000000..b813dbc
--- /dev/null
+++ b/google-breakpad/src/processor/testdata/symbols/kernel32.pdb/BCE8785C57B44245A669896B6A19B9542/kernel32.sym
@@ -0,0 +1,5787 @@
+MODULE windows x86 BCE8785C57B44245A669896B6A19B9542 kernel32.pdb
+PUBLIC b5ae c BaseDllInitialize
+PUBLIC 9b47 4 CloseHandle
+PUBLIC 17826 0 BaseDllInitializeMemoryManager
+PUBLIC 55709 10 EnumResourceNamesW
+PUBLIC be41 4 BaseDllMapResourceIdA
+PUBLIC 98f4 8 BasepMapModuleHandle
+PUBLIC 936b 4 BaseSetLastNTError
+PUBLIC 92b0 4 SetLastError
+PUBLIC 30769 0 GetLastError
+PUBLIC b722 0 ConsoleApp
+PUBLIC 29d7a 18 SetUpConsoleInfo
+PUBLIC 1b069 0 InitExeName
+PUBLIC 17860 0 InitializeCtrlHandling
+PUBLIC 29f30 4 SetUpHandles
+PUBLIC 1dc03 8 SetStdHandle
+PUBLIC 12f39 4 GetStdHandle
+PUBLIC 17889 4 BaseDllInitializeIniFileMappings
+PUBLIC 17923 0 NlsServerInitialize
+PUBLIC 180a6 0 NlsProcessInitialize
+PUBLIC 1795e 0 AllocTables
+PUBLIC 179ea 0 GetUnicodeFileInfo
+PUBLIC 16e70 c GetLocaleFileInfo
+PUBLIC 18a21 0 GetDefaultSortkeyFileInfo
+PUBLIC 17cb5 0 GetDefaultSortTablesFileInfo
+PUBLIC 1839b 8 GetSortTablesFileInfo
+PUBLIC 998d 8 LocalAlloc
+PUBLIC 992f 4 LocalFree
+PUBLIC 1625 20 DeviceIoControl
+PUBLIC 32eb1 4 LocalUnlock
+PUBLIC 32e1d 4 LocalLock
+PUBLIC a03b 4 ResetEvent
+PUBLIC a017 4 SetEvent
+PUBLIC 55921 4 SetLocalTime
+PUBLIC a35e 18 CompareStringW
+PUBLIC 55a0e 4 LocalFlags
+PUBLIC 55b09 4 LocalHandle
+PUBLIC 30927 c LocalReAlloc
+PUBLIC 30bd3 c InternalFindAtom
+PUBLIC 37923 0 wcscpy
+PUBLIC 33107 14 InternalGetAtomName
+PUBLIC ffb1 c InternalAddAtom
+PUBLIC 326c1 4 AddAtomW
+PUBLIC ab78 4 BaseDllMapResourceIdW
+PUBLIC 2d9b2 0 wcslen
+PUBLIC 330e7 c GetAtomNameW
+PUBLIC a9cc 8 lstrcmpW
+PUBLIC ba64 8 lstrcpyW
+PUBLIC bbce c FindResourceW
+PUBLIC e6dc 18 SearchPathW
+PUBLIC 1021c 10 BaseCreateStack
+PUBLIC 55bb1 0 wcscat
+PUBLIC 30b7d 8 InternalDeleteAtom
+PUBLIC 2c86d 0 CloseProfileUserMapping
+PUBLIC ddfe 1c DuplicateHandle
+PUBLIC a996 8 lstrcmpiW
+PUBLIC b64c 8 BaseThreadStart
+PUBLIC 2520 8 WaitForSingleObject
+PUBLIC 1042c 1c CreateRemoteThread
+PUBLIC 98eb 0 GetCurrentThread
+PUBLIC 9766 4 InterlockedIncrement
+PUBLIC 977a 4 InterlockedDecrement
+PUBLIC 978e 8 InterlockedExchange
+PUBLIC 97a2 c InterlockedCompareExchange
+PUBLIC 97b6 8 InterlockedExchangeAdd
+PUBLIC 97c6 c MulDiv
+PUBLIC 10659 8 BaseThreadStartThunk
+PUBLIC 10665 8 BaseProcessStartThunk
+PUBLIC 10672 4 SwitchToFiber
+PUBLIC 106fa 18 _ResourceCallEnumLangRoutine
+PUBLIC 1071e 14 _ResourceCallEnumNameRoutine
+PUBLIC 1073e 10 _ResourceCallEnumTypeRoutine
+PUBLIC 2ff92 0 BaseFiberStart
+PUBLIC 103a3 14 BaseInitializeContext
+PUBLIC 55bbc 4 ResetAccessDate
+PUBLIC 55bee 4 ComputeRemainingSize
+PUBLIC 55c24 8 ComputeRequestSize
+PUBLIC 55c57 c ReportTransfer
+PUBLIC 55c83 8 BackupReadBuffer
+PUBLIC 55cd4 c BackupReadStream
+PUBLIC 55df2 4 BackupTestRestartStream
+PUBLIC 55eb4 8 BasepIsDataAttribute
+PUBLIC 55eef 18 BackupSeek
+PUBLIC 5604f c BackupWriteHeader
+PUBLIC 560f8 c BackupWriteSparse
+PUBLIC 561d4 c BackupWriteStream
+PUBLIC 5627e c BackupWriteAlternateData
+PUBLIC 56381 4 BackupAlloc
+PUBLIC 563b1 4 BackupFree
+PUBLIC 563d6 8 GrowBuffer
+PUBLIC 5643b 4 FreeBuffer
+PUBLIC 5645f 4 FreeContext
+PUBLIC 564b8 4 AllocContext
+PUBLIC 56519 c BackupGetSparseMap
+PUBLIC 5669e c BackupReadData
+PUBLIC 5676b c BackupReadAlternateData
+PUBLIC 569ec c BackupReadEaData
+PUBLIC 56ada c BackupReadObjectId
+PUBLIC 56b94 c BackupReadReparseData
+PUBLIC 56cc7 c BackupReadSecurityData
+PUBLIC 56ddf 1c BackupRead
+PUBLIC 57012 8 BackupWriteBuffer
+PUBLIC 570a4 c BackupWriteEaData
+PUBLIC 570ef c BackupWriteReparseData
+PUBLIC 5714f c BackupWriteObjectId
+PUBLIC 571c9 c BackupWriteSecurityData
+PUBLIC 572ae c BackupWriteLinkData
+PUBLIC 573fe 1c BackupWrite
+PUBLIC 37bfc 0 NotifySoundSentry
+PUBLIC 37a77 8 Beep
+PUBLIC 575f7 4 BaseValidateNetbiosName
+PUBLIC 57665 4 BaseValidateDnsNames
+PUBLIC 576da 10 BasepGetMultiValueAddr
+PUBLIC 5773b c BaseGetMultiValueIndex
+PUBLIC 577c2 c BaseRemoveMultiValue
+PUBLIC 5786b c BaseAddMultiValue
+PUBLIC 202af 10 BasepGetNameFromReg
+PUBLIC 578bb c BaseSetNameInReg
+PUBLIC 5795d 10 BaseSetMultiNameInReg
+PUBLIC 579f7 c BaseCreateMultiValue
+PUBLIC 57aa8 c BaseAddMultiNameInReg
+PUBLIC 57bae c BaseRemoveMultiNameFromReg
+PUBLIC 57c97 4 BaseSetNetbiosName
+PUBLIC 57cd4 4 BaseSetDnsName
+PUBLIC 57da5 4 BaseSetDnsDomain
+PUBLIC 57e41 4 BaseSetAltNetBiosName
+PUBLIC 57e85 4 BaseSetAltDnsFQHostname
+PUBLIC 57eb6 4 BaseIsAltDnsFQHostname
+PUBLIC 57f59 4 BaseRemoveAltNetBiosName
+PUBLIC 57f8a 8 BaseEnumAltDnsFQHostnames
+PUBLIC 57fdd 8 BaseParseDnsName
+PUBLIC 31893 10 GetNameFromValue
+PUBLIC 316c7 8 GetComputerNameW
+PUBLIC 5808d 4 SetComputerNameW
+PUBLIC 201f1 c GetComputerNameExW
+PUBLIC 581b3 8 SetComputerNameExW
+PUBLIC 216a4 8 GetComputerNameA
+PUBLIC 58234 4 SetComputerNameA
+PUBLIC 582a7 c GetComputerNameExA
+PUBLIC 5834c 8 SetComputerNameExA
+PUBLIC 583a3 10 EnumerateLocalComputerNamesW
+PUBLIC 58523 10 EnumerateLocalComputerNamesA
+PUBLIC 2ceb2 c DnsHostnameToComputerNameW
+PUBLIC 585cf c DnsHostnameToComputerNameA
+PUBLIC 5866b 10 BasepGetComputerNameFromNtPath
+PUBLIC 58bc3 8 BaseMultiByteToWideCharWithAlloc
+PUBLIC 58c3e 4 BaseConvertCharFree
+PUBLIC 58c69 4 BaseIsNetBiosNameInUse
+PUBLIC 58e0a 8 AddLocalAlternateComputerNameW
+PUBLIC 58f26 8 AddLocalAlternateComputerNameA
+PUBLIC 58f6f 8 RemoveLocalAlternateComputerNameW
+PUBLIC 59050 8 RemoveLocalAlternateComputerNameA
+PUBLIC 59099 8 SetLocalPrimaryComputerNameW
+PUBLIC 592af 8 SetLocalPrimaryComputerNameA
+PUBLIC 592f8 8 LZCopy
+PUBLIC 593ae 8 CopyLZFile
+PUBLIC b852 10 GetFullPathNameW
+PUBLIC b877 8 GetCurrentDirectoryW
+PUBLIC 30b14 0 GetLogicalDrives
+PUBLIC f272 4 CheckForSameCurdir
+PUBLIC 138fc 10 GetFullPathNameA
+PUBLIC 34ffe 8 GetCurrentDirectoryA
+PUBLIC 360dd 4 SetCurrentDirectoryA
+PUBLIC f2ee 4 SetCurrentDirectoryW
+PUBLIC 176b 4 GetSystemTime
+PUBLIC 17e5 4 GetSystemTimeAsFileTime
+PUBLIC 593be 4 SetSystemTime
+PUBLIC 929c 0 GetTickCount
+PUBLIC e7ec 8 FileTimeToSystemTime
+PUBLIC 10b1c 8 SystemTimeToFileTime
+PUBLIC e866 8 FileTimeToLocalFileTime
+PUBLIC 35524 8 LocalFileTimeToFileTime
+PUBLIC 3065d c FileTimeToDosDateTime
+PUBLIC 3214e c DosDateTimeToFileTime
+PUBLIC 10ad9 8 CompareFileTime
+PUBLIC 350bf 4 GetTimeZoneInformation
+PUBLIC 5945e 4 SetTimeZoneInformation
+PUBLIC 2d36f c GetSystemTimeAdjustment
+PUBLIC 59584 8 SetSystemTimeAdjustment
+PUBLIC 2e9c1 c SystemTimeToTzSpecificLocalTime
+PUBLIC 595c1 c TzSpecificLocalTimeToSystemTime
+PUBLIC 5983e 8 CalcClientTimeZoneIdAndBias
+PUBLIC a7d4 4 GetLocalTime
+PUBLIC 59a31 4 SetClientTimeZoneInformation
+PUBLIC 13093 0 IsDebuggerPresent
+PUBLIC 59b1e 8 CheckRemoteDebuggerPresent
+PUBLIC 59b72 0 DebugBreak
+PUBLIC 59b7c 0 CreateDBWinMutex
+PUBLIC 59d78 4 OutputDebugStringA
+PUBLIC 5a0bd 4 ProcessIdToHandle
+PUBLIC 5a123 4 DebugActiveProcess
+PUBLIC 5a176 4 DebugBreakProcess
+PUBLIC 5a19d 4 DebugSetProcessKillOnExit
+PUBLIC 5a1e8 c GetThreadSelectorEntry
+PUBLIC 5a231 c SaveThreadHandle
+PUBLIC 5a28f 8 SaveProcessHandle
+PUBLIC 5a2eb 4 MarkThreadHandle
+PUBLIC 5a31b 4 MarkProcessHandle
+PUBLIC 5a351 8 RemoveHandles
+PUBLIC 5a3c6 4 CloseAllProcessHandles
+PUBLIC 5a42d 4 OutputDebugStringW
+PUBLIC 5a480 8 WaitForDebugEvent
+PUBLIC 5a565 c ContinueDebugEvent
+PUBLIC 5a5a9 4 DebugActiveProcessStop
+PUBLIC 36f5b 4 RemoveDirectoryW
+PUBLIC 323d2 8 CreateDirectoryW
+PUBLIC 5a5f2 c CreateDirectoryExW
+PUBLIC 5b219 4 RemoveDirectoryA
+PUBLIC 217ac 8 CreateDirectoryA
+PUBLIC 5b23b c CreateDirectoryExA
+PUBLIC 2af8f 4 InitAtomTable
+PUBLIC 30cce 0 InternalInitAtomTable
+PUBLIC 360a9 4 GlobalAddAtomA
+PUBLIC 360c3 4 GlobalFindAtomA
+PUBLIC 30bbb 4 GlobalDeleteAtom
+PUBLIC 5b28b c GlobalGetAtomNameA
+PUBLIC 1006c 4 GlobalAddAtomW
+PUBLIC 34e97 4 GlobalFindAtomW
+PUBLIC 2c3be c GlobalGetAtomNameW
+PUBLIC 354ed 4 AddAtomA
+PUBLIC 30cfe 4 FindAtomA
+PUBLIC 32695 4 DeleteAtom
+PUBLIC 5b2ab c GetAtomNameA
+PUBLIC 2f827 4 FindAtomW
+PUBLIC f726 c BaseDllGetApplicationName
+PUBLIC f763 c BaseDllGetVariableName
+PUBLIC 1ee95 10 BaseDllGetVariableValue
+PUBLIC f88c 14 BaseDllAppendBufferToResultBuffer
+PUBLIC f6da 8 BaseDllIniFileNameLength
+PUBLIC f7a0 c BaseDllFindIniFileNameMapping
+PUBLIC 1c858 0 BaseDllFlushRegistryCache
+PUBLIC 1c8a6 8 BaseDllFindVarNameMapping
+PUBLIC 5b2cb 8 BaseDllCheckKeyNotEmpty
+PUBLIC 1e361 4 BaseDllOpenIniFileOnDisk
+PUBLIC 1e6e1 4 BaseDllCloseIniFileOnDisk
+PUBLIC 35889 4 BaseDllCalculateDeleteLength
+PUBLIC 1e891 8 BaseDllAdvanceTextPointer
+PUBLIC 1f18a 14 BaseDllModifyMappedFile
+PUBLIC 5b355 1c BaseDllCheckInitFromIniFile
+PUBLIC 3331f 0 OpenProfileUserMapping
+PUBLIC f460 28 BaseDllCaptureIniFileParameters
+PUBLIC f928 4 BaseDllAppendNullToResultBuffer
+PUBLIC f851 10 BaseDllAppendStringToResultBuffer
+PUBLIC 1c8db 14 BaseDllOpenMappingTarget
+PUBLIC 5b435 4 BaseDllReadApplicationNames
+PUBLIC 1b42d 8 BaseDllReadVariableNames
+PUBLIC 1cac2 10 BaseDllReadVariableValue
+PUBLIC 5b592 8 BaseDllReadApplicationVariables
+PUBLIC 2bb93 10 BaseDllWriteVariableValue
+PUBLIC 32dd3 4 BaseDllReadSectionNames
+PUBLIC 1e793 4 BaseDllFindSection
+PUBLIC 1e9c5 4 BaseDllFindKeyword
+PUBLIC 5b71c 10 QueryWin31IniFilesMappedToRegistry
+PUBLIC 2dc81 8 BaseDllDeleteApplicationVariables
+PUBLIC 2dc43 8 BaseDllWriteApplicationVariables
+PUBLIC 358ed 4 BaseDllReadKeywordNames
+PUBLIC 1ea7d 4 BaseDllReadKeywordValue
+PUBLIC 1ecd2 4 BaseDllReadSection
+PUBLIC 5b828 4 BaseDllWriteSection
+PUBLIC 1f021 8 BaseDllWriteKeywordValue
+PUBLIC 1c7f4 4 BaseDllReadWriteIniFileViaMapping
+PUBLIC 1e291 4 BaseDllReadWriteIniFileOnDisk
+PUBLIC f331 20 BaseDllReadWriteIniFile
+PUBLIC 32b56 18 GetPrivateProfileStringA
+PUBLIC 35d54 10 WritePrivateProfileStringA
+PUBLIC 35f21 10 GetPrivateProfileSectionA
+PUBLIC 5ba7c c WritePrivateProfileSectionA
+PUBLIC f95d 18 GetPrivateProfileStringW
+PUBLIC 1ee4c 10 WritePrivateProfileStringW
+PUBLIC 1edbd 10 GetPrivateProfileSectionW
+PUBLIC 5bac3 c WritePrivateProfileSectionW
+PUBLIC 32da7 c GetPrivateProfileSectionNamesA
+PUBLIC 5bb0a c GetPrivateProfileSectionNamesW
+PUBLIC 5bb2b 14 GetPrivateProfileStructA
+PUBLIC 5bc95 14 GetPrivateProfileStructW
+PUBLIC 5be23 14 WritePrivateProfileStructA
+PUBLIC 5bf65 14 WritePrivateProfileStructW
+PUBLIC 21495 14 GetProfileStringA
+PUBLIC 5c0b9 c WriteProfileStringA
+PUBLIC 5c0d7 c GetProfileSectionA
+PUBLIC 5c0f5 8 WriteProfileSectionA
+PUBLIC 213f8 14 GetProfileStringW
+PUBLIC 332b1 c WriteProfileStringW
+PUBLIC 5c110 c GetProfileSectionW
+PUBLIC 5c12e 8 WriteProfileSectionW
+PUBLIC 36434 10 GetPrivateProfileIntA
+PUBLIC 32730 10 GetPrivateProfileIntW
+PUBLIC 364a9 c GetProfileIntA
+PUBLIC 2f89a c GetProfileIntW
+PUBLIC 21f1e c DefineDosDeviceW
+PUBLIC 5c149 8 IsGlobalDeviceMap
+PUBLIC 5c269 10 FindSymbolicLinkEntry
+PUBLIC 21d8d c QueryDosDeviceW
+PUBLIC 5c2c5 c DefineDosDeviceA
+PUBLIC 5c36c c QueryDosDeviceA
+PUBLIC 31385 10 CreateIoCompletionPort
+PUBLIC 126f2 10 PostQueuedCompletionStatus
+PUBLIC a71d 14 GetQueuedCompletionStatus
+PUBLIC 315c4 10 GetOverlappedResult
+PUBLIC ac4d 0 GetErrorMode
+PUBLIC ac0f 4 SetErrorMode
+PUBLIC ef3a 8 FindNextFileW
+PUBLIC edd7 4 FindClose
+PUBLIC 5c46c 8 BaseFindFirstDevice
+PUBLIC 34bef c FindFirstChangeNotificationW
+PUBLIC 32113 4 FindNextChangeNotification
+PUBLIC 3162f 20 ReadDirectoryChangesW
+PUBLIC ee81 4 BasepInitializeFindFileHandle
+PUBLIC 34eb1 8 FindNextFileA
+PUBLIC ea7d 18 FindFirstFileExW
+PUBLIC 5c4ab c FindFirstChangeNotificationA
+PUBLIC 137d9 8 FindFirstFileA
+PUBLIC eee1 8 FindFirstFileW
+PUBLIC 5c512 18 FindFirstFileExA
+PUBLIC 180e 14 ReadFile
+PUBLIC 10d87 14 WriteFile
+PUBLIC 32044 4 SetEndOfFile
+PUBLIC 10b8e 10 SetFilePointer
+PUBLIC 21057 14 SetFilePointerEx
+PUBLIC 10c6d 8 GetFileInformationByHandle
+PUBLIC 31c45 10 GetFileTime
+PUBLIC 31cb8 10 SetFileTime
+PUBLIC 12641 4 FlushFileBuffers
+PUBLIC 32361 14 LockFile
+PUBLIC 2f569 18 LockFileEx
+PUBLIC 322fb 14 UnlockFileEx
+PUBLIC 10a09 8 GetFileSizeEx
+PUBLIC 5c64e c BasepIoCompletion
+PUBLIC 2bd84 c BasepIoCompletionSimple
+PUBLIC 2bcfb 14 ReadFileEx
+PUBLIC 5c701 14 WriteFileEx
+PUBLIC 300da 4 CancelIo
+PUBLIC 2de51 14 ReadFileScatter
+PUBLIC 2dda5 14 WriteFileGather
+PUBLIC 5c7a1 c SetFileValidData
+PUBLIC 5c7f7 8 SetFileShortNameW
+PUBLIC 5c8c4 8 SetFileShortNameA
+PUBLIC 10e51 4 GetFileType
+PUBLIC 322bc 14 UnlockFile
+PUBLIC 10a77 8 GetFileSize
+PUBLIC bada c OpenFileMappingW
+PUBLIC b896 18 MapViewOfFileEx
+PUBLIC 35971 8 FlushViewOfFile
+PUBLIC b974 4 UnmapViewOfFile
+PUBLIC 938e 18 CreateFileMappingW
+PUBLIC bb76 c OpenFileMappingA
+PUBLIC b905 14 MapViewOfFile
+PUBLIC 945c 18 CreateFileMappingA
+PUBLIC 110f5 c GetFileAttributesExW
+PUBLIC 31f31 4 DeleteFileW
+PUBLIC 5c8e9 34 BasepMoveFileCopyProgress
+PUBLIC 5c94f 10 BasepNotifyTrackingService
+PUBLIC 5cbc1 10 BasepMoveFileDelayed
+PUBLIC 5cf6b 20 BasepOpenFileForMove
+PUBLIC 5d0e9 c PrivMoveFileIdentityW
+PUBLIC 5d371 8 GetCompressedFileSizeW
+PUBLIC 314d5 8 SetFileAttributesW
+PUBLIC b74c 4 GetFileAttributesW
+PUBLIC 137b1 c GetFileAttributesExA
+PUBLIC 31eab 4 DeleteFileA
+PUBLIC 1f72e 14 MoveFileWithProgressW
+PUBLIC 5d499 8 GetCompressedFileSizeA
+PUBLIC 12782 8 SetFileAttributesA
+PUBLIC 1153c 4 GetFileAttributesA
+PUBLIC 35eae 14 MoveFileWithProgressA
+PUBLIC 21261 8 MoveFileW
+PUBLIC 3565b c MoveFileExW
+PUBLIC 35e8f 8 MoveFileA
+PUBLIC 5d4c3 c MoveFileExA
+PUBLIC 21950 4 BasepOfShareToWin32Share
+PUBLIC 5d4e3 14 LoadDuplicateEncryptionInfoFile
+PUBLIC 10978 8 BaseIsThisAConsoleName
+PUBLIC 5d539 20 CopyNameGraftNow
+PUBLIC 284bd 14 BasepProcessNameGrafting
+PUBLIC 5d9a1 8 BasepChecksum
+PUBLIC 2879d 8 BasepRemoteFile
+PUBLIC 5d9e0 8 BasepCreateDispositionToWin32
+PUBLIC 5da30 0 CheckAllowDecryptedRemoteDestinationPolicy
+PUBLIC 10760 1c CreateFileW
+PUBLIC 3719a 20 BasepCopyFileCallback
+PUBLIC 5dadd 8 BaseMarkFileForDelete
+PUBLIC 5db55 8 CopyReparsePoint
+PUBLIC 5dc16 24 BasepOpenRestartableFile
+PUBLIC 5de71 1c BasepCopyCompression
+PUBLIC 285c6 38 BasepCopyEncryption
+PUBLIC 1a24 1c CreateFileA
+PUBLIC 21982 c OpenFile
+PUBLIC 5e021 28 BasepCopySecurityInformation
+PUBLIC 27bdb 38 BaseCopyStream
+PUBLIC 36c3c 18 ReplaceFileW
+PUBLIC 27613 24 BasepCopyFileExW
+PUBLIC 27b32 18 CopyFileExW
+PUBLIC 2005f 18 PrivCopyFileExW
+PUBLIC 5e307 18 ReplaceFileA
+PUBLIC 286ee c CopyFileA
+PUBLIC 2f873 c CopyFileW
+PUBLIC 5e3c4 18 CopyFileExA
+PUBLIC 5e41d 10 GetFirmwareEnvironmentVariableW
+PUBLIC 5e4ac 10 SetFirmwareEnvironmentVariableW
+PUBLIC 5e534 10 GetFirmwareEnvironmentVariableA
+PUBLIC 5e5c7 10 SetFirmwareEnvironmentVariableA
+PUBLIC 5e65a 4 RegisterWowBaseHandlers
+PUBLIC fd2d 8 GlobalAlloc
+PUBLIC 123b9 c GlobalReAlloc
+PUBLIC ff19 4 GlobalLock
+PUBLIC 34cb9 4 GlobalHandle
+PUBLIC fe82 4 GlobalUnlock
+PUBLIC 34da1 4 GlobalSize
+PUBLIC 36772 4 GlobalFlags
+PUBLIC fc2f 4 GlobalFree
+PUBLIC 5e670 4 LocalCompact
+PUBLIC 5e686 4 GlobalFix
+PUBLIC 5e6a0 4 GlobalUnfix
+PUBLIC 5e6ba 4 GlobalWire
+PUBLIC 5e6ca 4 GlobalUnWire
+PUBLIC 310f2 4 GlobalMemoryStatus
+PUBLIC 9a72 14 VirtualAllocEx
+PUBLIC 9b02 10 VirtualFreeEx
+PUBLIC 1a5d 14 VirtualProtectEx
+PUBLIC b9a0 10 VirtualQueryEx
+PUBLIC 2b13f 8 VirtualLock
+PUBLIC 5e6da 8 VirtualUnlock
+PUBLIC 355bc c FlushInstructionCache
+PUBLIC 5e712 c AllocateUserPhysicalPages
+PUBLIC 5e740 c FreeUserPhysicalPages
+PUBLIC 5e76e c MapUserPhysicalPages
+PUBLIC 5e79c c MapUserPhysicalPagesScatter
+PUBLIC 1f992 4 GlobalMemoryStatusEx
+PUBLIC 5e7ca 18 GetWriteWatch
+PUBLIC 5e803 8 ResetWriteWatch
+PUBLIC 9a51 10 VirtualAlloc
+PUBLIC 9ae4 c VirtualFree
+PUBLIC 1ad0 10 VirtualProtect
+PUBLIC b9d1 c VirtualQuery
+PUBLIC 2e18c c SetHandleInformation
+PUBLIC 2bdb5 8 GetHandleInformation
+PUBLIC 1d07e 0 SetFileApisToOEM
+PUBLIC 365f6 0 SetFileApisToANSI
+PUBLIC 3594f 0 AreFileApisANSI
+PUBLIC 17443 0 BaseProcessInitPostImport
+PUBLIC 934b 0 BaseGetNamedObjectDirectory
+PUBLIC b5c3 c _BaseDllInitialize
+PUBLIC 5e830 8 _lopen
+PUBLIC 365a5 8 _lcreat
+PUBLIC 353ce c _lread
+PUBLIC 38ae7 c _lwrite
+PUBLIC 34e64 4 _lclose
+PUBLIC 35406 c _llseek
+PUBLIC 30d74 8 lstrcmpA
+PUBLIC baa1 8 lstrcmpiA
+PUBLIC be01 8 lstrcpyA
+PUBLIC 10111 c lstrcpynA
+PUBLIC 34d41 8 lstrcatA
+PUBLIC bdb6 4 lstrlenA
+PUBLIC b9ef c lstrcpynW
+PUBLIC 10f32 8 lstrcatW
+PUBLIC 9a09 4 lstrlenW
+PUBLIC 325bc 4 LocalSize
+PUBLIC 5e882 8 LocalShrink
+PUBLIC 12bb6 c HeapCreate
+PUBLIC 10ef8 4 HeapDestroy
+PUBLIC 5e898 10 HeapExtend
+PUBLIC 5e8c9 10 HeapCreateTagsW
+PUBLIC 5e8da 14 HeapQueryTagW
+PUBLIC 5e8eb c HeapSummary
+PUBLIC 5e947 14 HeapUsage
+PUBLIC 5e9bb c HeapValidate
+PUBLIC abc1 0 GetProcessHeap
+PUBLIC 5e9db 8 GetProcessHeaps
+PUBLIC 3611e 8 HeapCompact
+PUBLIC 5e9ec 4 HeapLock
+PUBLIC 5ea06 4 HeapUnlock
+PUBLIC 5ea20 8 HeapWalk
+PUBLIC 39469 10 HeapSetInformation
+PUBLIC 5eb25 14 HeapQueryInformation
+PUBLIC 5eb58 14 GetMailslotInfo
+PUBLIC 2cdd8 8 SetMailslotInfo
+PUBLIC 2ccdc 10 CreateMailslotW
+PUBLIC 2cc8b 10 CreateMailslotA
+PUBLIC 34932 c CreateVirtualBuffer
+PUBLIC 5ebf4 8 ExtendVirtualBuffer
+PUBLIC 5ec4e 4 TrimVirtualBuffer
+PUBLIC 34b69 4 FreeVirtualBuffer
+PUBLIC 5ec71 c VirtualBufferExceptionHandler
+PUBLIC 349d8 20 BaseDllFormatMessage
+PUBLIC 2f7a0 1c FormatMessageA
+PUBLIC 34b8f 1c FormatMessageW
+PUBLIC abde 4 FreeLibrary
+PUBLIC c170 8 FreeLibraryAndExitThread
+PUBLIC 11296 4 DisableThreadLibraryCalls
+PUBLIC 5ecb0 4 SetDllDirectoryW
+PUBLIC 5ed46 4 SetDllDirectoryA
+PUBLIC 5edd7 8 GetDllDirectoryW
+PUBLIC e477 4 GetModuleHandleForUnicodeString
+PUBLIC 1fcff c BasepGetModuleHandleExParameterValidation
+PUBLIC e4b9 10 BasepGetModuleHandleExW
+PUBLIC 111da 0 GetVersion
+PUBLIC ae65 4 GetVersionExW
+PUBLIC 1fb26 10 VerifyVersionInfoW
+PUBLIC 5ee46 10 VerifyVersionInfoA
+PUBLIC 9f81 4 BaseDllFreeResourceId
+PUBLIC 5eee3 c ReturnMem16Data
+PUBLIC 5eef0 1c UTRegister
+PUBLIC 14c3c c BasepLoadLibraryAsDataFile
+PUBLIC 1af1 c LoadLibraryExW
+PUBLIC 5ef47 8 GetDllDirectoryA
+PUBLIC b3d5 c GetModuleFileNameW
+PUBLIC b4cf c GetModuleFileNameA
+PUBLIC e43d 4 GetModuleHandleW
+PUBLIC 5efe6 c GetModuleHandleExA
+PUBLIC 1fcc1 c GetModuleHandleExW
+PUBLIC ada0 8 GetProcAddress
+PUBLIC 12ade 4 GetVersionExA
+PUBLIC be89 c FindResourceA
+PUBLIC 35f78 10 FindResourceExA
+PUBLIC 9fb5 8 LoadResource
+PUBLIC bc69 8 SizeofResource
+PUBLIC 5f03c c EnumResourceTypesA
+PUBLIC 5f229 10 EnumResourceNamesA
+PUBLIC 2e000 14 EnumResourceLanguagesA
+PUBLIC ac88 10 FindResourceExW
+PUBLIC 5f449 c EnumResourceTypesW
+PUBLIC 5f631 14 EnumResourceLanguagesW
+PUBLIC ae4b 4 LoadLibraryW
+PUBLIC 1d4f c LoadLibraryExA
+PUBLIC b6a1 4 GetModuleHandleA
+PUBLIC 1d77 4 LoadLibraryA
+PUBLIC 3145b 8 ConnectNamedPipe
+PUBLIC 1269f 4 DisconnectNamedPipe
+PUBLIC 5f781 c NpGetUserNamep
+PUBLIC 313ec 10 SetNamedPipeHandleState
+PUBLIC 5f88a 14 GetNamedPipeInfo
+PUBLIC 5f90f 18 PeekNamedPipe
+PUBLIC 312e5 1c TransactNamedPipe
+PUBLIC 2c664 8 WaitNamedPipeW
+PUBLIC 2f0d4 20 CreateNamedPipeW
+PUBLIC 5fa85 1c GetNamedPipeHandleStateW
+PUBLIC 5fb7f 1c CallNamedPipeW
+PUBLIC 5fc39 8 WaitNamedPipeA
+PUBLIC 5fc74 20 CreateNamedPipeA
+PUBLIC 5fceb 1c GetNamedPipeHandleStateA
+PUBLIC 5fdce 1c CallNamedPipeA
+PUBLIC 5fe41 4 GetNumaHighestNodeNumber
+PUBLIC 5fe8c 8 GetNumaProcessorNode
+PUBLIC 5ff19 8 GetNumaNodeProcessorMask
+PUBLIC 5ff7e c GetNumaProcessorMap
+PUBLIC 5ffc4 c GetNumaAvailableMemory
+PUBLIC 6000a 8 GetNumaAvailableMemoryNode
+PUBLIC 600d2 10 NumaVirtualQueryNode
+PUBLIC f182 8 IsThisARootDirectory
+PUBLIC 31db9 8 GetSystemDirectoryW
+PUBLIC ad29 8 GetSystemWindowsDirectoryW
+PUBLIC ad7b 8 GetWindowsDirectoryW
+PUBLIC b2d0 4 GetDriveTypeW
+PUBLIC 112d5 c BasepGetTempPathW
+PUBLIC 359b7 10 GetTempFileNameW
+PUBLIC 301af 14 GetDiskFreeSpaceW
+PUBLIC 12803 10 GetDiskFreeSpaceExW
+PUBLIC f9e5 20 GetVolumeInformationW
+PUBLIC 2c2d3 8 GetLogicalDriveStringsA
+PUBLIC 603cf 8 GetLogicalDriveStringsW
+PUBLIC 60499 8 SetVolumeLabelW
+PUBLIC 60811 14 CheckNameLegalDOS8Dot3W
+PUBLIC 14eea 8 GetSystemDirectoryA
+PUBLIC 212f1 8 GetSystemWindowsDirectoryA
+PUBLIC 21363 8 GetWindowsDirectoryA
+PUBLIC 214e3 4 GetDriveTypeA
+PUBLIC 217ea 18 SearchPathA
+PUBLIC 30789 8 GetTempPathW
+PUBLIC 608ff 10 GetTempFileNameA
+PUBLIC 302ed 14 GetDiskFreeSpaceA
+PUBLIC 3039b 10 GetDiskFreeSpaceExA
+PUBLIC 21ba5 20 GetVolumeInformationA
+PUBLIC 609ed 8 SetVolumeLabelA
+PUBLIC 60a51 14 CheckNameLegalDOS8Dot3A
+PUBLIC 35dca 8 GetTempPathA
+PUBLIC a427 4 QueryPerformanceCounter
+PUBLIC 2fa46 4 QueryPerformanceFrequency
+PUBLIC 1e0c7 10 CreatePipe
+PUBLIC 35340 4 GetSystemPowerStatus
+PUBLIC 60aab 8 SetSystemPowerState
+PUBLIC 392b5 4 SetThreadExecutionState
+PUBLIC 60af4 4 RequestWakeupLatency
+PUBLIC 60b1c 8 GetDevicePowerState
+PUBLIC 60b60 0 IsSystemResumeAutomatic
+PUBLIC 60b6f 4 RequestDeviceWakeup
+PUBLIC 60b97 4 CancelDeviceWakeupRequest
+PUBLIC 60bbf 8 SetMessageWaitingIndicator
+PUBLIC 2f3a4 4 BasepIsSetupInvokedByWinLogon
+PUBLIC 1a1cf 8 BasepIsImageVersionOk
+PUBLIC 1500c 0 IsShimInfrastructureDisabled
+PUBLIC 1930f 1c BasepCheckBadapp
+PUBLIC 16f8e 4 RegisterWaitForInputIdle
+PUBLIC 2dfa0 c StuffStdHandle
+PUBLIC 60bd3 c BasepReplaceProcessThreadTokens
+PUBLIC 309e1 c OpenProcess
+PUBLIC 1cd34 4 _ExitProcess
+PUBLIC 1cdda 4 ExitProcess
+PUBLIC 1e16 8 TerminateProcess
+PUBLIC 1ae17 8 GetExitCodeProcess
+PUBLIC 1e50 4 GetStartupInfoW
+PUBLIC 1eee 4 GetStartupInfoA
+PUBLIC 12f1d 0 GetCommandLineA
+PUBLIC 16f83 0 GetCommandLineW
+PUBLIC 1df77 4 FreeEnvironmentStringsA
+PUBLIC 12f08 0 GetEnvironmentStringsW
+PUBLIC 1cf5b 0 GetEnvironmentStrings
+PUBLIC 14af2 c GetEnvironmentVariableA
+PUBLIC 33478 8 SetEnvironmentVariableA
+PUBLIC f0f4 c GetEnvironmentVariableW
+PUBLIC 101be 8 SetEnvironmentVariableW
+PUBLIC 329d9 c ExpandEnvironmentStringsA
+PUBLIC 305f6 c ExpandEnvironmentStringsW
+PUBLIC 9920 0 GetCurrentProcessId
+PUBLIC 60c75 4 GetProcessId
+PUBLIC 21cc 14 ReadProcessMemory
+PUBLIC 220f 14 WriteProcessMemory
+PUBLIC 60caa 8 FatalAppExitW
+PUBLIC 60cf8 8 FatalAppExitA
+PUBLIC 60d46 4 FatalExit
+PUBLIC ae2a 4 IsProcessorFeaturePresent
+PUBLIC 60d58 10 BuildSubSysCommandLine
+PUBLIC 60e13 4 GetPriorityClass
+PUBLIC 9e01 8 IsBadReadPtr
+PUBLIC 3593f 8 IsBadHugeReadPtr
+PUBLIC 9e79 8 IsBadWritePtr
+PUBLIC bf9d 8 IsBadHugeWritePtr
+PUBLIC bccf 4 IsBadCodePtr
+PUBLIC 32259 8 IsBadStringPtrA
+PUBLIC a5dc 8 IsBadStringPtrW
+PUBLIC 2c8ed 8 SetProcessShutdownParameters
+PUBLIC 60e79 8 GetProcessShutdownParameters
+PUBLIC 60ee8 4 BasepIsRealtimeAllowed
+PUBLIC 60f22 c GetSystemTimes
+PUBLIC 352d9 14 GetProcessTimes
+PUBLIC 21765 c GetProcessAffinityMask
+PUBLIC 61068 c GetProcessWorkingSetSize
+PUBLIC 303d0 c SetProcessWorkingSetSize
+PUBLIC 12c23 4 GetProcessVersion
+PUBLIC 610b0 8 SetProcessAffinityMask
+PUBLIC 610e0 8 SetProcessPriorityBoost
+PUBLIC 6111b 8 GetProcessPriorityBoost
+PUBLIC 61155 8 GetProcessIoCounters
+PUBLIC 61186 8 GetProcessHandleCount
+PUBLIC 611c0 8 GetSystemRegistryQuota
+PUBLIC 6120a c BasepSaveAppCertRegistryValue
+PUBLIC 15199 8 IsWow64Process
+PUBLIC 194dd 4 BasepIsProcessAllowed
+PUBLIC 19805 18 BasepCheckWinSaferRestrictions
+PUBLIC 19513 30 CreateProcessInternalW
+PUBLIC 2332 28 CreateProcessW
+PUBLIC 12cb0 c GetSystemInfoInternal
+PUBLIC 12d56 4 GetSystemInfo
+PUBLIC 37945 4 GetNativeSystemInfo
+PUBLIC 2c338 8 SetPriorityClass
+PUBLIC 61351 18 BasepConfigureAppCertDlls
+PUBLIC 1ddd6 30 CreateProcessInternalA
+PUBLIC 2367 28 CreateProcessA
+PUBLIC 6136d 8 WinExec
+PUBLIC 6147e 8 LoadModule
+PUBLIC 3965a 4 CreateMemoryResourceNotification
+PUBLIC 395d8 8 QueryMemoryResourceNotification
+PUBLIC 2c1e7 c DosPathToSessionPathW
+PUBLIC 12f89 8 ProcessIdToSessionId
+PUBLIC 132ee 0 WTSGetActiveConsoleSessionId
+PUBLIC 61799 c DosPathToSessionPathA
+PUBLIC 92ea c BaseFormatObjectAttributes
+PUBLIC 2470 8 BaseFormatTimeOut
+PUBLIC 16fb4 4 BaseProcessStart
+PUBLIC 61901 c BaseFreeThreadStack
+PUBLIC e0df 4 BasepEndOfDirName
+PUBLIC 176db c BasepLocateExeLdrEntry
+PUBLIC 61933 4 BasepUnicodeStringToOemSize
+PUBLIC 6195c 4 BasepUnicodeStringToAnsiSize
+PUBLIC 30445 8 BasepAcquirePrivilegeEx
+PUBLIC 3053e 4 BasepReleasePrivilege
+PUBLIC e275 c BasepComputeProcessPath
+PUBLIC df9e 8 BaseComputeProcessDllPath
+PUBLIC 31d8e 0 BaseComputeProcessSearchPath
+PUBLIC e074 4 Basep8BitStringToStaticUnicodeString
+PUBLIC 114f8 8 Basep8BitStringToDynamicUnicodeString
+PUBLIC 1a2ce 34 BasePushProcessParameters
+PUBLIC 9ef1 4 InitializeCriticalSection
+PUBLIC b829 8 InitializeCriticalSectionAndSpinCount
+PUBLIC 13140 c OpenEventW
+PUBLIC 2c05e 4 PulseEvent
+PUBLIC 10086 10 CreateSemaphoreW
+PUBLIC 2e30f c OpenSemaphoreW
+PUBLIC bfad c ReleaseSemaphore
+PUBLIC e8b7 c CreateMutexW
+PUBLIC e995 c OpenMutexW
+PUBLIC 24a7 4 ReleaseMutex
+PUBLIC 2540 c WaitForSingleObjectEx
+PUBLIC 36696 10 SignalObjectAndWait
+PUBLIC 952a 14 WaitForMultipleObjectsEx
+PUBLIC 239c 8 SleepEx
+PUBLIC 2fb52 c CreateWaitableTimerW
+PUBLIC 61985 c OpenWaitableTimerW
+PUBLIC 95f9 18 SetWaitableTimer
+PUBLIC 2cc09 4 CancelWaitableTimer
+PUBLIC a6a9 10 CreateEventW
+PUBLIC 1320c c OpenEventA
+PUBLIC 12e1d 10 CreateSemaphoreA
+PUBLIC 2ca47 c OpenSemaphoreA
+PUBLIC e93f c CreateMutexA
+PUBLIC ea1b c OpenMutexA
+PUBLIC a05d 10 WaitForMultipleObjects
+PUBLIC 2442 4 Sleep
+PUBLIC 61a81 c CreateWaitableTimerA
+PUBLIC 61af0 c OpenWaitableTimerA
+PUBLIC 308ad 10 CreateEventA
+PUBLIC 33609 0 StringCopyExWorkerW(unsigned short *,unsigned int,unsigned int,unsigned short const *,unsigned short * *,unsigned int *,unsigned long)
+PUBLIC 61b64 0 StringLengthWorkerW(unsigned short const *,unsigned int,unsigned int *)
+PUBLIC 1746c 0 IsTerminalServerCompatible
+PUBLIC 17499 0 IsTSAppCompatEnabled
+PUBLIC f1fa 0 IsSystemLUID
+PUBLIC 17459 0 InitializeTermsrvFpns
+PUBLIC 1efce 0 TermsrvAppInstallMode
+PUBLIC 61ba2 4 SetTermsrvAppInstallMode
+PUBLIC 61d3f c TermsrvGetSyncTime
+PUBLIC 61ffd c TermsrvPutSyncTime
+PUBLIC 6240a 8 TermsrvCheckIniSync
+PUBLIC 62473 4 TermsrvDoesFileExist
+PUBLIC 624ba c TermsrvIniSyncLoop
+PUBLIC 17f41 8 GetPerUserWindowsDirectory
+PUBLIC 6277d 18 StringCbCopyExW
+PUBLIC 627db 1c StringCatExWorkerW
+PUBLIC 6297f 18 StringCbCatExW
+PUBLIC 1ebb1 4 TermsrvSyncUserIniFile
+PUBLIC 629dd 10 StringVPrintfWorkerW
+PUBLIC 12980 c BaseCreateThreadPoolThread
+PUBLIC 2fc00 c OpenThread
+PUBLIC c108 8 SetThreadPriority
+PUBLIC a793 4 GetThreadPriority
+PUBLIC 62a30 8 SetThreadPriorityBoost
+PUBLIC 62a6b 8 GetThreadPriorityBoost
+PUBLIC c058 4 ExitThread
+PUBLIC 1ce03 8 TerminateThread
+PUBLIC 21435 8 GetExitCodeThread
+PUBLIC 9728 0 GetCurrentThreadId
+PUBLIC 3970d 8 GetThreadContext
+PUBLIC 62aa5 8 SetThreadContext
+PUBLIC 39732 4 SuspendThread
+PUBLIC 328f7 4 ResumeThread
+PUBLIC 12a09 10 RaiseException
+PUBLIC 62ad0 8 FillUEFInfo
+PUBLIC 4479d 4 SetUnhandledExceptionFilter
+PUBLIC 62b4f 4 BasepCheckForReadOnlyResource
+PUBLIC 12d9f 0 TlsAlloc
+PUBLIC 9740 4 TlsGetValue
+PUBLIC 9bc5 8 TlsSetValue
+PUBLIC 136d7 4 TlsFree
+PUBLIC 62c9c 14 GetThreadTimes
+PUBLIC 62d09 8 GetThreadIOPendingFlag
+PUBLIC 2fa7a 8 SetThreadAffinityMask
+PUBLIC 2c0e6 c BaseDispatchAPC
+PUBLIC 2c082 c QueueUserAPC
+PUBLIC 62d48 8 SetThreadIdealProcessor
+PUBLIC 2ffcf 14 CreateFiberEx
+PUBLIC 2fe84 4 DeleteFiber
+PUBLIC 2ff16 4 ConvertThreadToFiber
+PUBLIC 2fed7 0 ConvertFiberToThread
+PUBLIC 32992 0 SwitchToThread
+PUBLIC 211cd 18 RegisterWaitForSingleObject
+PUBLIC 2b086 14 RegisterWaitForSingleObjectEx
+PUBLIC 2bff8 4 UnregisterWait
+PUBLIC 30062 8 UnregisterWaitEx
+PUBLIC 30a62 c QueueUserWorkItem
+PUBLIC 2c02c c BindIoCompletionCallback
+PUBLIC 2cba2 0 BasepCreateDefaultTimerQueue
+PUBLIC 2bfd6 0 CreateTimerQueue
+PUBLIC 2117d 1c CreateTimerQueueTimer
+PUBLIC 12723 10 ChangeTimerQueueTimer
+PUBLIC 21130 c DeleteTimerQueueTimer
+PUBLIC 62d7c 8 DeleteTimerQueueEx
+PUBLIC 2b26e 18 SetTimerQueueTimer
+PUBLIC 62dc3 4 DeleteTimerQueue
+PUBLIC 62df0 8 CancelTimerQueueTimer
+PUBLIC 62e34 0 StringCchPrintfW
+PUBLIC 10637 18 CreateThread
+PUBLIC c1e0 4 BaseExitThreadPoolThread
+PUBLIC 62e62 4 UnhandledExceptionFilter
+PUBLIC 2ffaf c CreateFiber
+PUBLIC 63999 8 Heap32ListFirst
+PUBLIC 63a47 8 Heap32ListNext
+PUBLIC 63ade c Heap32First
+PUBLIC 63bf8 4 Heap32Next
+PUBLIC 63d24 14 Toolhelp32ReadProcessMemory
+PUBLIC 63d64 8 Process32FirstW
+PUBLIC 63e1d 8 Process32First
+PUBLIC 63eef 8 Process32NextW
+PUBLIC 63f90 8 Process32Next
+PUBLIC 64062 8 Thread32First
+PUBLIC 64116 8 Thread32Next
+PUBLIC 641af 8 Module32FirstW
+PUBLIC 64268 8 Module32First
+PUBLIC 6434c 8 Module32NextW
+PUBLIC 643ed 8 Module32Next
+PUBLIC 644c8 14 ThpCreateRawSnap
+PUBLIC 64679 18 ThpAllocateSnapshotSection
+PUBLIC 6481c c ThpCopyAnsiToUnicode
+PUBLIC 64858 18 ThpProcessToSnap
+PUBLIC 64b47 8 CreateToolhelp32Snapshot
+PUBLIC 64bcf 8 GetExpandedNameA
+PUBLIC 64c7c 8 GetExpandedNameW
+PUBLIC 64d93 4 ConvertWin32FHToDos
+PUBLIC 64e03 4 ConvertDosFHToWin32
+PUBLIC 64e2a 4 LZInit
+PUBLIC 64f85 14 LZCreateFileW
+PUBLIC 65053 c LZOpenFileA
+PUBLIC 65114 c LZOpenFileW
+PUBLIC 651ab c LZSeek
+PUBLIC 65236 c LZRead
+PUBLIC 65444 4 LZCloseFile
+PUBLIC 654bb 4 LZClose
+PUBLIC 6557c c ClearCommError
+PUBLIC 656c7 c SetupComm
+PUBLIC 6578e 8 EscapeCommFunction
+PUBLIC 6588a 8 GetCommMask
+PUBLIC 65913 8 GetCommModemStatus
+PUBLIC 6599c 8 GetCommProperties
+PUBLIC 65a54 8 GetCommState
+PUBLIC 22128 8 GetCommTimeouts
+PUBLIC 65d02 8 PurgeComm
+PUBLIC 65d8c 4 SetCommBreak
+PUBLIC 65da4 8 SetCommMask
+PUBLIC 65e43 8 SetCommState
+PUBLIC 6614b 8 SetCommTimeouts
+PUBLIC 661f6 8 TransmitCommChar
+PUBLIC 66280 c WaitCommEvent
+PUBLIC 663c8 8 GetFriendlyUi
+PUBLIC 6677d c CommConfigDialogW
+PUBLIC 66871 c CommConfigDialogA
+PUBLIC 66949 c GetDefaultCommConfigW
+PUBLIC 66a41 c GetDefaultCommConfigA
+PUBLIC 66b19 c SetDefaultCommConfigW
+PUBLIC 66c11 c SetDefaultCommConfigA
+PUBLIC 66cf1 4 ClearCommBreak
+PUBLIC 66d09 c GetCommConfig
+PUBLIC 66eab c SetCommConfig
+PUBLIC 66f43 4 GetNextVDMCommand
+PUBLIC 67695 8 ExitVDM
+PUBLIC 67714 8 SetVDMCurrentDirectories
+PUBLIC 67849 8 GetVDMCurrentDirectories
+PUBLIC 2f609 4 CmdBatNotification
+PUBLIC 679a9 4 RegisterWowExec
+PUBLIC 67a01 c GetVDMConfigValue
+PUBLIC 67a4a 10 BaseUpdateVDMEntry
+PUBLIC 28b87 8 BaseIsDosApplication
+PUBLIC 1ae5e 8 BaseCheckForVDM
+PUBLIC 67b2e 8 BaseDestroyVDMEnvironment
+PUBLIC 67b70 8 BaseGetEnvNameType_U
+PUBLIC 1143f 4 SkipPathTypeIndicator_U
+PUBLIC 1f5a6 8 IsShortName_U
+PUBLIC 132f9 8 IsLongName_U
+PUBLIC 67bcc 8 GetBinaryTypeW
+PUBLIC 67e19 4 VDMOperationStarted
+PUBLIC 67e35 14 BaseGetVDMKeyword
+PUBLIC 1146a 10 FindLFNorSFN_U
+PUBLIC 6802b 8 GetBinaryTypeA
+PUBLIC 1f26e c GetShortPathNameW
+PUBLIC 680be c BaseCreateVDMEnvironment
+PUBLIC 13353 c GetLongPathNameW
+PUBLIC 28c38 24 BaseCheckVDMp
+PUBLIC 68509 24 BaseCheckVDM
+PUBLIC 35bb0 c GetShortPathNameA
+PUBLIC 68586 c GetLongPathNameA
+PUBLIC 687a1 14 BaseGetVdmConfigInfo
+PUBLIC 2cf9b c FindNextVolumeW
+PUBLIC 2cf60 4 FindVolumeClose
+PUBLIC 68abf 10 FindNextVolumeMountPointHelper
+PUBLIC 68db1 c FindFirstVolumeMountPointW
+PUBLIC 68f11 8 IsThisAVolumeName
+PUBLIC 6905d c FindNextVolumeMountPointW
+PUBLIC 357d5 4 FindCloseChangeNotification
+PUBLIC 2080d c GetVolumeNameForRoot
+PUBLIC 31b99 10 BasepGetVolumeNameFromReparsePoint
+PUBLIC 20799 10 BasepGetVolumeNameForVolumeMountPoint
+PUBLIC 1fb88 c GetVolumeNameForVolumeMountPointW
+PUBLIC 6907b 8 SetVolumeNameForRoot
+PUBLIC 69218 c NotifyMountMgr
+PUBLIC 69395 8 SetVolumeMountPointW
+PUBLIC 69778 4 DeleteVolumeNameForRoot
+PUBLIC 69930 4 DeleteVolumeMountPointW
+PUBLIC 2e61c c GetVolumePathNameW
+PUBLIC 20d14 10 GetVolumePathNamesForVolumeNameW
+PUBLIC 2d2af 8 FindFirstVolumeW
+PUBLIC 69bff c FindNextVolumeA
+PUBLIC 69d19 c FindFirstVolumeMountPointA
+PUBLIC 69e49 c FindNextVolumeMountPointA
+PUBLIC 69f61 c GetVolumeNameForVolumeMountPointA
+PUBLIC 6a091 8 SetVolumeMountPointA
+PUBLIC 6a0de 4 DeleteVolumeMountPointA
+PUBLIC 2e8b2 c GetVolumePathNameA
+PUBLIC 6a100 10 GetVolumePathNamesForVolumeNameA
+PUBLIC 6a259 8 FindFirstVolumeA
+PUBLIC 6aebf c BuildCommDCBAndTimeoutsA
+PUBLIC 6aeed 8 BuildCommDCBA
+PUBLIC 6af1f c BuildCommDCBAndTimeoutsW
+PUBLIC 6af79 8 BuildCommDCBW
+PUBLIC 6afd0 18 BasepDoTapeOperation
+PUBLIC 6b046 18 SetTapePosition
+PUBLIC 6b08c 14 GetTapePosition
+PUBLIC 6b0e8 c PrepareTape
+PUBLIC 6b11b c EraseTape
+PUBLIC 6b14e 10 CreateTapePartition
+PUBLIC 6b188 10 WriteTapemark
+PUBLIC 6b1c2 10 GetTapeParameters
+PUBLIC 6b21e c SetTapeParameters
+PUBLIC 6b25f 4 GetTapeStatus
+PUBLIC 2cb03 8 CreateJobObjectW
+PUBLIC 6b280 c OpenJobObjectW
+PUBLIC 2e44a 8 AssignProcessToJobObject
+PUBLIC 6b2f7 8 TerminateJobObject
+PUBLIC 2afc9 14 QueryInformationJobObject
+PUBLIC 2ca9f 10 SetInformationJobObject
+PUBLIC 6b324 c IsProcessInJob
+PUBLIC 6b35e c CreateJobSet
+PUBLIC 6b38c 8 CreateJobObjectA
+PUBLIC 6b3f8 c OpenJobObjectA
+PUBLIC 6b46c c CreateHardLinkW
+PUBLIC 6b629 c CreateHardLinkA
+PUBLIC 6b683 4 GetHandleContext
+PUBLIC 2146c 8 GetSystemWow64DirectoryW
+PUBLIC 6b694 0 CreateSocketHandle
+PUBLIC 1301e 18 BasepSxsActivationContextNotification
+PUBLIC 6b6a3 10 BasepSxsSuitableManifestCallback
+PUBLIC 17190 c BasepSxsFindSuitableManifestResourceFor
+PUBLIC 2bf01 4 AddRefActCtx
+PUBLIC 1305f 4 ReleaseActCtx
+PUBLIC 6b6fb 4 ZombifyActCtx
+PUBLIC a644 8 ActivateActCtx
+PUBLIC a675 8 DeactivateActCtx
+PUBLIC 300a9 4 GetCurrentActCtx
+PUBLIC 967c 10 BasepAllocateActivationContextActivationBlock
+PUBLIC 6b723 4 BasepFreeActivationContextActivationBlock
+PUBLIC 130a6 4 BasepSxsCloseHandles
+PUBLIC 15350 14 BasepSxsCreateResourceStream
+PUBLIC 6b761 8 BasepSxsOverrideStreamToMessageStream
+PUBLIC 1530d 4 BasepSxsIsStatusFileNotFoundEtc
+PUBLIC 19aaa 4 BasepSxsIsStatusResourceNotFound
+PUBLIC 1a9d9 8 BasepSxsGetProcessImageBaseAddress
+PUBLIC 15229 10 BasepSxsCreateFileStream
+PUBLIC 162db 1c QueryActCtxW
+PUBLIC 1529b 3c BasepSxsCreateStreams
+PUBLIC 1a86f 28 BasepSxsCreateProcessCsrMessage
+PUBLIC 15921 c BasepCreateActCtx
+PUBLIC 1545c 4 CreateActCtxW
+PUBLIC 11210 c BasepProbeForDllManifest
+PUBLIC 6b7a5 4 CreateActCtxA
+PUBLIC 2fe16 c BasepFindActCtxSection_FillOutReturnData
+PUBLIC 30e9a c BasepFindActCtxSection_CheckAndConvertParameters
+PUBLIC 2fd92 14 BasepFindActCtxSectionString
+PUBLIC 6bb0f 14 FindActCtxSectionStringA
+PUBLIC 2fd4c 14 FindActCtxSectionStringW
+PUBLIC 30f21 14 FindActCtxSectionGuid
+PUBLIC 38653 14 BasepQueryModuleData
+PUBLIC 3835a 14 BaseQueryModuleData
+PUBLIC 1612f 4 CsrBasepCreateActCtx
+PUBLIC 6bb65 4 SetComPlusPackageInstallStatus
+PUBLIC 6bba2 0 GetComPlusPackageInstallStatus
+PUBLIC 6bbcf 4 BasepShimCacheWrite
+PUBLIC 16763 c BasepCheckStringPrefixUnicode
+PUBLIC 16602 4 BasepInitUserTempPath
+PUBLIC 1aa2c 0 BasepShimCacheInitTempDirs
+PUBLIC 169ea c BasepShimCacheQueryFileInformation
+PUBLIC 1691d 8 BasepIsRemovableMedia
+PUBLIC 2b335 c BasepShimCacheInit
+PUBLIC 16473 10 BasepShimCacheSearch
+PUBLIC 1697f c BasepShimCacheUpdateLRUIndex
+PUBLIC 2c59b c BasepShimCacheRemoveEntry
+PUBLIC 2f70b 1c BasepShimCacheAllocateEntry
+PUBLIC 2f695 10 BasepShimCacheUpdate
+PUBLIC 1642c 8 BasepBitMapCountBits
+PUBLIC 168bb c BasepBitMapSetBit
+PUBLIC 16396 4 BasepShimCacheCheckIntegrity
+PUBLIC 165e9 0 BasepShimCacheUnlock
+PUBLIC 16b75 4 BasepCheckCacheExcludeList
+PUBLIC 164cd 0 BaseInitAppcompatCache
+PUBLIC 2b553 8 BasepShimCacheRead
+PUBLIC 16662 14 BasepShimCacheCheckBypass
+PUBLIC 16879 10 BasepShimCacheLookup
+PUBLIC 16562 8 BasepShimCacheLock
+PUBLIC 167d7 10 BaseCheckAppcompatCache
+PUBLIC 15120 c BaseUpdateAppcompatCache
+PUBLIC 6bc3f 0 BaseFlushAppcompatCache
+PUBLIC 6bcc1 0 BaseDumpAppcompatCache
+PUBLIC 2b38d 0 BaseInitAppcompatCacheSupport
+PUBLIC 6be06 0 BaseCleanupAppcompatCache
+PUBLIC 6be8a 4 BaseCleanupAppcompatCacheSupport
+PUBLIC 1204d c StringCopyWorkerW
+PUBLIC 6bec2 0 FreeOne(_RESNAME *)
+PUBLIC 6bf37 0 FreeData(_UPDATEDATA *)
+PUBLIC 6c041 0 AddStringOrID(unsigned short const *,_UPDATEDATA *)
+PUBLIC 6c1ad 0 DeleteResourceFromList(_UPDATEDATA *,_RESTYPE *,_RESNAME *,int,int,int)
+PUBLIC 6c317 0 InsertResourceIntoLangList(_UPDATEDATA *,MY_STRING *,MY_STRING *,_RESTYPE *,_RESNAME *,int,int,int,void *)
+PUBLIC 6c414 0 FilePos(int)
+PUBLIC 6c42e 0 MuMoveFilePos(int,unsigned long)
+PUBLIC 6c449 0 MuWrite(int,void *,unsigned long)
+PUBLIC 6c470 0 MuRead(int,unsigned char *,unsigned long)
+PUBLIC 6c497 0 MuCopy(int,int,unsigned long)
+PUBLIC 6c536 0 SetResdata(_IMAGE_RESOURCE_DATA_ENTRY *,unsigned long,unsigned long)
+PUBLIC 6c55d 0 SetRestab(_IMAGE_RESOURCE_DIRECTORY *,long,unsigned short,unsigned short)
+PUBLIC 6c592 0 FindSection(_IMAGE_SECTION_HEADER *,_IMAGE_SECTION_HEADER *,char *)
+PUBLIC 6c5e7 0 AssignResourceToSection(_RESNAME * *,unsigned long,unsigned long,long,long *)
+PUBLIC 6c62a 0 WriteResSection(_UPDATEDATA *,int,unsigned long,unsigned long,_RESNAME *)
+PUBLIC 6c7a6 0 PatchDebug<_IMAGE_NT_HEADERS>(int,int,_IMAGE_SECTION_HEADER *,_IMAGE_SECTION_HEADER *,_IMAGE_SECTION_HEADER *,_IMAGE_SECTION_HEADER *,_IMAGE_NT_HEADERS *,_IMAGE_NT_HEADERS *,unsigned long,unsigned long *)
+PUBLIC 6c922 0 PatchDebug<_IMAGE_NT_HEADERS64>(int,int,_IMAGE_SECTION_HEADER *,_IMAGE_SECTION_HEADER *,_IMAGE_SECTION_HEADER *,_IMAGE_SECTION_HEADER *,_IMAGE_NT_HEADERS64 *,_IMAGE_NT_HEADERS64 *,unsigned long,unsigned long *)
+PUBLIC 6ca9e 0 PatchRVAs<_IMAGE_NT_HEADERS>(int,int,_IMAGE_SECTION_HEADER *,unsigned long,_IMAGE_NT_HEADERS *,unsigned long)
+PUBLIC 6cc38 0 PatchRVAs<_IMAGE_NT_HEADERS64>(int,int,_IMAGE_SECTION_HEADER *,unsigned long,_IMAGE_NT_HEADERS64 *,unsigned long)
+PUBLIC 6cdd5 0 PEWriteResource<_IMAGE_NT_HEADERS>(int,int,unsigned long,_UPDATEDATA *,_IMAGE_NT_HEADERS *)
+PUBLIC 6df34 0 PEWriteResource<_IMAGE_NT_HEADERS64>(int,int,unsigned long,_UPDATEDATA *,_IMAGE_NT_HEADERS64 *)
+PUBLIC 335b7 0 StringCchCopyW(unsigned short *,unsigned int,unsigned short const *)
+PUBLIC 6f093 0 AddResource(MY_STRING *,MY_STRING *,unsigned short,_UPDATEDATA *,void *,unsigned long)
+PUBLIC 6f3ef 0 PEWriteResFile(int,int,unsigned long,_UPDATEDATA *)
+PUBLIC 6f49a 0 WriteResFile(void *,unsigned short *)
+PUBLIC 6f5a3 18 UpdateResourceW
+PUBLIC 6f6aa 18 UpdateResourceA
+PUBLIC 6f774 8 EndUpdateResourceW
+PUBLIC 6f949 8 EndUpdateResourceA
+PUBLIC 6f959 0 EnumLangsFunc(void *,unsigned short *,unsigned short *,unsigned short,long)
+PUBLIC 6fa8d 0 EnumNamesFunc(void *,unsigned short *,unsigned short *,long)
+PUBLIC 6fab4 0 EnumTypesFunc(void *,unsigned short *,long)
+PUBLIC 6fad8 8 BeginUpdateResourceW
+PUBLIC 6fc7b 8 BeginUpdateResourceA
+PUBLIC 6fcdc 0 __report_gsfailure
+PUBLIC 6fdca 0 __security_init_cookie_ex
+PUBLIC 189fc 0 __security_init_cookie
+PUBLIC 9702 0 __security_check_cookie
+PUBLIC 6fe51 8 GetCurrentExeName
+PUBLIC 6febb c GetExeName
+PUBLIC 6ff39 18 GetConsoleAliasInternal
+PUBLIC 70086 10 GetConsoleAliasW
+PUBLIC 700b2 10 GetConsoleAliasA
+PUBLIC 700dc 8 GetConsoleAliasesLengthInternal
+PUBLIC 701a1 4 GetConsoleAliasesLengthW
+PUBLIC 701b9 4 GetConsoleAliasesLengthA
+PUBLIC 701d1 4 GetConsoleAliasExesLengthInternal
+PUBLIC 70245 0 GetConsoleAliasExesLengthW
+PUBLIC 70252 0 GetConsoleAliasExesLengthA
+PUBLIC 7025f 10 GetConsoleAliasesInternal
+PUBLIC 703c9 c GetConsoleAliasesW
+PUBLIC 703e7 c GetConsoleAliasesA
+PUBLIC 70405 c GetConsoleAliasExesInternal
+PUBLIC 70531 8 GetConsoleAliasExesW
+PUBLIC 7054c 8 GetConsoleAliasExesA
+PUBLIC 70567 8 ExpungeConsoleCommandHistoryInternal
+PUBLIC 7060f 4 ExpungeConsoleCommandHistoryW
+PUBLIC 70627 4 ExpungeConsoleCommandHistoryA
+PUBLIC 7063f c SetConsoleNumberOfCommandsInternal
+PUBLIC 7070a 8 SetConsoleNumberOfCommandsW
+PUBLIC 70725 8 SetConsoleNumberOfCommandsA
+PUBLIC 70740 8 GetConsoleCommandHistoryLengthInternal
+PUBLIC 707ed 4 GetConsoleCommandHistoryLengthW
+PUBLIC 70805 4 GetConsoleCommandHistoryLengthA
+PUBLIC 7081d 10 GetConsoleCommandHistoryInternal
+PUBLIC 70989 c GetConsoleCommandHistoryW
+PUBLIC 709a7 c GetConsoleCommandHistoryA
+PUBLIC 709c5 4 SetConsoleCommandHistoryMode
+PUBLIC 1ba6a c GetConsoleTitleInternal
+PUBLIC 70a39 8 GetConsoleTitleA
+PUBLIC 1ba3c 8 GetConsoleTitleW
+PUBLIC 2da09 c SetConsoleTitleInternal
+PUBLIC 70a61 4 SetConsoleTitleA
+PUBLIC 2d9bd 4 SetConsoleTitleW
+PUBLIC 70ad1 8 GetConsoleInputExeNameW
+PUBLIC 1b355 4 SetConsoleInputExeNameW
+PUBLIC 70b61 18 AddConsoleAliasInternal
+PUBLIC 70c81 c AddConsoleAliasW
+PUBLIC 70cbf c AddConsoleAliasA
+PUBLIC 70cfc 8 GetConsoleInputExeNameA
+PUBLIC 70da8 4 SetConsoleInputExeNameA
+PUBLIC 1b10f 10 SetUpAppName
+PUBLIC 29ee3 8 ParseReserved
+PUBLIC 1aff3 4 GetConsoleLangId
+PUBLIC 1afd5 0 SetTEBLangID
+PUBLIC 18c64 c ConnectConsoleInternal
+PUBLIC 70e05 2c AllocConsoleInternal
+PUBLIC 71011 0 FreeConsoleInternal
+PUBLIC 7108d 0 FreeConsole
+PUBLIC 710e1 4 PropRoutine
+PUBLIC 71191 10 AttachConsoleInternal
+PUBLIC b6d7 8 ConDllInitialize
+PUBLIC 71311 0 AllocConsole
+PUBLIC 714f9 4 AttachConsole
+PUBLIC 715f9 0 GetConsoleInputWaitHandle
+PUBLIC 1ce32 14 WriteConsoleInternal
+PUBLIC 1cf25 14 WriteConsoleA
+PUBLIC 35484 14 WriteConsoleW
+PUBLIC 1dc7e 4 CloseConsoleHandle
+PUBLIC 1dd4d 10 DuplicateConsoleHandle
+PUBLIC 71604 8 GetConsoleHandleInformation
+PUBLIC 716c9 c SetConsoleHandleInformation
+PUBLIC 1aeaa 4 VerifyConsoleIoHandle
+PUBLIC 1ff5b 10 OpenConsoleWInternal
+PUBLIC 10fe1 10 OpenConsoleW
+PUBLIC 71749 20 ReadConsoleInternal
+PUBLIC 71a1d 14 ReadConsoleA
+PUBLIC 71a6c 14 ReadConsoleW
+PUBLIC 71ac2 2c RegisterConsoleVDM
+PUBLIC 71c19 c GetConsoleHardwareState
+PUBLIC 71ce9 c SetConsoleHardwareState
+PUBLIC 37c53 4 GetConsoleDisplayMode
+PUBLIC 71d69 10 SetConsoleKeyShortcuts
+PUBLIC 71e30 4 SetConsoleMenuClose
+PUBLIC 71ea4 10 WriteConsoleInputVDMA
+PUBLIC 71ec7 10 WriteConsoleInputVDMW
+PUBLIC 71eea 8 SetConsoleCursor
+PUBLIC 71f64 8 ShowConsoleCursor
+PUBLIC 71fbf c ConsoleMenuControl
+PUBLIC 72020 c SetConsolePaletteInternal
+PUBLIC 720a0 c SetConsoleDisplayMode
+PUBLIC 721c9 c SetConsolePalette
+PUBLIC 72269 18 WriteConsoleInputInternal
+PUBLIC 723c5 10 WriteConsoleInputA
+PUBLIC 723e8 10 WriteConsoleInputW
+PUBLIC 7240b 18 CopyRectangle
+PUBLIC 7254f 18 ReadConsoleOutputInternal
+PUBLIC 727e1 14 ReadConsoleOutputW
+PUBLIC 72805 14 ReadConsoleOutputA
+PUBLIC 72829 18 WriteConsoleOutputInternal
+PUBLIC 72b21 14 WriteConsoleOutputW
+PUBLIC 72b45 14 WriteConsoleOutputA
+PUBLIC 72b69 1c ReadConsoleOutputString
+PUBLIC 72cd9 14 ReadConsoleOutputCharacterA
+PUBLIC 72cff 14 ReadConsoleOutputCharacterW
+PUBLIC 72d25 14 ReadConsoleOutputAttribute
+PUBLIC 72d4b 1c WriteConsoleOutputString
+PUBLIC 72ea5 14 WriteConsoleOutputCharacterA
+PUBLIC 72ecb 14 WriteConsoleOutputCharacterW
+PUBLIC 72ef1 14 WriteConsoleOutputAttribute
+PUBLIC 72f17 18 FillConsoleOutput
+PUBLIC 72ff9 14 FillConsoleOutputCharacterA
+PUBLIC 73020 14 FillConsoleOutputCharacterW
+PUBLIC 73044 14 FillConsoleOutputAttribute
+PUBLIC 73068 14 CreateConsoleScreenBuffer
+PUBLIC 73215 8 InvalidateConsoleDIBits
+PUBLIC 732e1 18 GetConsoleInput
+PUBLIC 7348d 10 PeekConsoleInputA
+PUBLIC 734b0 10 PeekConsoleInputW
+PUBLIC 734d3 10 ReadConsoleInputA
+PUBLIC 734f6 10 ReadConsoleInputW
+PUBLIC 73519 14 ReadConsoleInputExA
+PUBLIC 7353d 14 ReadConsoleInputExW
+PUBLIC 73561 8 GetConsoleCursorInfo
+PUBLIC 73629 4 GetConsoleSelectionInfo
+PUBLIC 736e1 4 GetNumberOfConsoleMouseButtons
+PUBLIC 73799 10 GetConsoleFontInfo
+PUBLIC 738c1 8 GetConsoleFontSize
+PUBLIC 7394f c GetCurrentConsoleFont
+PUBLIC 1b1f0 8 SetConsoleMode
+PUBLIC 73a21 8 GenerateConsoleCtrlEvent
+PUBLIC 73aa8 4 SetConsoleActiveScreenBuffer
+PUBLIC 73b1c 4 FlushConsoleInputBuffer
+PUBLIC 73b90 8 SetConsoleScreenBufferSize
+PUBLIC 73c0a 8 SetConsoleCursorPosition
+PUBLIC 73c84 8 SetConsoleCursorInfo
+PUBLIC 73d51 c SetConsoleWindowInfo
+PUBLIC 73e21 18 ScrollConsoleScreenBufferInternal
+PUBLIC 73f21 14 ScrollConsoleScreenBufferA
+PUBLIC 73f45 14 ScrollConsoleScreenBufferW
+PUBLIC 73f69 8 SetConsoleTextAttribute
+PUBLIC 73fe5 8 SetConsoleFont
+PUBLIC 7405f 4 SetConsoleIcon
+PUBLIC 740d3 0 GetConsoleCP
+PUBLIC 74143 4 SetConsoleCP
+PUBLIC 1b18f 0 GetConsoleOutputCP
+PUBLIC 741fe 4 SetConsoleOutputCPInternal
+PUBLIC 74261 4 SetConsoleOutputCP
+PUBLIC 74294 8 GetConsoleKeyboardLayoutNameWorker
+PUBLIC 74329 4 GetConsoleKeyboardLayoutNameA
+PUBLIC 74341 4 GetConsoleKeyboardLayoutNameW
+PUBLIC 74359 0 GetConsoleWindow
+PUBLIC 743c5 8 GetConsoleProcessList
+PUBLIC 1af14 8 GetConsoleMode
+PUBLIC 74501 0 GetNumberOfConsoleFonts
+PUBLIC 7456d 8 GetNumberOfConsoleInputEvents
+PUBLIC 74631 4 GetLargestConsoleWindowSize
+PUBLIC 1bc2b 8 GetConsoleScreenBufferInfo
+PUBLIC 746b9 10 SetConsoleLocalEUDC
+PUBLIC 7477f c SetConsoleCursorMode
+PUBLIC 747ff c GetConsoleCursorMode
+PUBLIC 748c9 4 RegisterConsoleOS2
+PUBLIC 7493d 4 SetConsoleOS2OemFormat
+PUBLIC 749b1 14 RegisterConsoleIMEInternal
+PUBLIC 74ab9 8 RegisterConsoleIME
+PUBLIC 74b12 4 UnregisterConsoleIMEInternal
+PUBLIC 74b86 0 UnregisterConsoleIME
+PUBLIC 74b97 c MyRegOpenKey
+PUBLIC 74be9 10 MyRegQueryValue
+PUBLIC 74c8e 8 GetCommandLineString
+PUBLIC 74e13 4 ConsoleIMERoutine
+PUBLIC 74f87 8 GetConsoleNlsMode
+PUBLIC 750d9 8 SetConsoleNlsMode
+PUBLIC 751a3 c GetConsoleCharType
+PUBLIC 75271 4 DefaultHandler
+PUBLIC 1b5c6 4 SetCtrlHandler
+PUBLIC 2000c 4 RemoveCtrlHandler
+PUBLIC 1b58b 8 SetConsoleCtrlHandler
+PUBLIC 75280 4 CtrlRoutine
+PUBLIC 75489 0 SetLastConsoleEventActiveInternal
+PUBLIC 754d3 0 SetLastConsoleEventActive
+PUBLIC 754e4 8 VDMConsoleOperation
+PUBLIC 38211 10 EnumCalendarInfoA
+PUBLIC 75749 10 EnumCalendarInfoExA
+PUBLIC 7576c c EnumTimeFormatsA
+PUBLIC 7578a c EnumDateFormatsA
+PUBLIC 757aa c EnumDateFormatsExA
+PUBLIC 757ca c EnumSystemLanguageGroupsA
+PUBLIC 757e8 10 EnumLanguageGroupLocalesA
+PUBLIC 75809 c EnumUILanguagesA
+PUBLIC 37ce1 8 EnumSystemLocalesA
+PUBLIC 75827 8 EnumSystemCodePagesA
+PUBLIC 75842 14 GetGeoInfoA
+PUBLIC a459 8 NlsGetACPFromLocale
+PUBLIC cf52 18 NlsAnsiToUnicode
+PUBLIC d239 14 NlsUnicodeToAnsi
+PUBLIC 380ef c NlsEnumUnicodeToAnsi
+PUBLIC 38063 24 NlsDispatchAnsiEnumProc
+PUBLIC d077 18 CompareStringA
+PUBLIC 38de8 18 LCMapStringA
+PUBLIC d262 10 GetLocaleInfoA
+PUBLIC 758cb c SetLocaleInfoA
+PUBLIC 7596b 18 GetCalendarInfoA
+PUBLIC 75ad6 10 SetCalendarInfoA
+PUBLIC 3632d 18 GetTimeFormatA
+PUBLIC 361ee 18 GetDateFormatA
+PUBLIC 2ec56 18 GetNumberFormatA
+PUBLIC 75b79 18 GetCurrencyFormatA
+PUBLIC 38a0c 14 GetStringTypeA
+PUBLIC 75eb1 14 FoldStringA
+PUBLIC 76047 c GetCPInfoExA
+PUBLIC 760cf 14 GetStringTypeExA
+PUBLIC a490 10 GetStringTypeW
+PUBLIC 760df 3c FindJamoDifference
+PUBLIC bfef 14 GetStringTypeExW
+PUBLIC af4f 1c LongCompareStringW
+PUBLIC 763c9 0 NlsResetProcessLocale
+PUBLIC 763ef 8 IsValidLanguageGroup
+PUBLIC 1c48b 8 IsValidLocale
+PUBLIC 764fb 4 IsValidUILanguage
+PUBLIC a415 0 GetThreadLocale
+PUBLIC 13038 0 GetSystemDefaultUILanguage
+PUBLIC 13070 0 GetUserDefaultUILanguage
+PUBLIC 127b2 0 GetSystemDefaultLangID
+PUBLIC bf3d 0 GetSystemDefaultLCID
+PUBLIC 9f10 0 GetUserDefaultLCID
+PUBLIC 7668d c SetCurrentUserRegValue
+PUBLIC 76734 1c SetMultipleUserInfoInRegistry
+PUBLIC 769f2 1c SetMultipleUserInfo
+PUBLIC 39200 c GetTwoDigitYearInfo
+PUBLIC 76a53 c SetTwoDigitYearInfo
+PUBLIC 76c59 10 GetNativeLanguageName
+PUBLIC 383cf 4 ConvertDefaultLocale
+PUBLIC 1bbba 4 SetThreadLocale
+PUBLIC bf64 0 GetUserDefaultLangID
+PUBLIC 2f041 c VerLanguageNameW
+PUBLIC 2efb9 c VerLanguageNameA
+PUBLIC 11562 10 GetLocaleInfoW
+PUBLIC 39020 18 GetCalendarInfoW
+PUBLIC 76d1b 10 SetCalendarInfoW
+PUBLIC 76e34 c SetUserInfo
+PUBLIC 1b258 4 SetThreadUILanguage
+PUBLIC 76e73 c SetLocaleInfoW
+PUBLIC 77cf7 10 CreateRegKey
+PUBLIC 1bcfe 10 OpenRegKey
+PUBLIC 15047 14 QueryRegValue
+PUBLIC 77df0 10 SetRegValue
+PUBLIC 1734f 10 MapSection
+PUBLIC 77e24 4 UnMapSection
+PUBLIC 17f7d 18 GetNlsSectionName
+PUBLIC 77e43 c GetCodePageDLLPathName
+PUBLIC 2ae21 8 GetNTFileName
+PUBLIC 2ac6c c CreateNlsSecurityDescriptor
+PUBLIC 2b95b 8 AppendAccessAllowedACE
+PUBLIC 2b883 0 CreateNlsObjectDirectory
+PUBLIC 172de 14 OpenSection
+PUBLIC 2ad98 8 OpenDataFile
+PUBLIC 77f87 8 CreateSectionTemp
+PUBLIC 77fec 10 Internal_EnumSystemLanguageGroups
+PUBLIC 782c6 14 Internal_EnumLanguageGroupLocales
+PUBLIC 2a8fa 10 Internal_EnumUILanguages
+PUBLIC 37cfc c Internal_EnumSystemLocales
+PUBLIC 7849b c Internal_EnumSystemCodePages
+PUBLIC 38234 18 Internal_EnumCalendarInfo
+PUBLIC 38958 38 EnumDateTime
+PUBLIC 786e5 c EnumSystemLanguageGroupsW
+PUBLIC 78703 10 EnumLanguageGroupLocalesW
+PUBLIC 2a8dc c EnumUILanguagesW
+PUBLIC 78724 8 EnumSystemLocalesW
+PUBLIC 7873f 8 EnumSystemCodePagesW
+PUBLIC 7875a 10 EnumCalendarInfoW
+PUBLIC 7877d 10 EnumCalendarInfoExW
+PUBLIC 388dc 10 Internal_EnumTimeFormats
+PUBLIC 38801 14 Internal_EnumDateFormats
+PUBLIC 388be c EnumTimeFormatsW
+PUBLIC 387e1 c EnumDateFormatsW
+PUBLIC 787a0 c EnumDateFormatsExW
+PUBLIC 787c0 8 GetGeoLCID
+PUBLIC 78847 14 GetGeoInfoW
+PUBLIC 78bd9 c EnumSystemGeoID
+PUBLIC 3798e 4 GetUserGeoID
+PUBLIC 78c5c 4 SetUserGeoID
+PUBLIC 78db1 10 FoldCZone
+PUBLIC 78e32 10 FoldDigits
+PUBLIC 78eb3 10 FoldCZone_Digits
+PUBLIC 78f7b 10 FoldLigatures
+PUBLIC 790a7 10 FoldPreComposed
+PUBLIC 791d2 10 FoldComposite
+PUBLIC ce53 18 MapCase
+PUBLIC 2d4ad 1c MapSortKey
+PUBLIC 79269 18 MapNormalization
+PUBLIC 374eb 18 MapHalfKana
+PUBLIC 37787 18 MapFullKana
+PUBLIC 794fb 1c MapTraditionalSimplified
+PUBLIC 79636 14 FoldStringW
+PUBLIC 37693 18 MapKanaWidth
+PUBLIC cca8 18 LCMapStringW
+PUBLIC 110cb 4 IsValidCodePage
+PUBLIC 9915 0 GetACP
+PUBLIC 797c3 4 SetCPGlobal
+PUBLIC 127a7 0 GetOEMCP
+PUBLIC b7dc 4 IsDBCSLeadByte
+PUBLIC 2f540 10 GetWCCompSB
+PUBLIC 797df 1c GetWCCompMB
+PUBLIC 79866 14 GetWCCompSBErr
+PUBLIC 798c1 1c GetWCCompMBErr
+PUBLIC a1fb 18 GetMBNoDefault
+PUBLIC bd19 20 GetMBDefault
+PUBLIC 32cf3 1c GetMBCompSB
+PUBLIC 7998a 24 GetMBCompMB
+PUBLIC 7a064 0 GetMacCodePage
+PUBLIC cfd4 18 SpecialMBToWC
+PUBLIC 12e76 8 GetCPInfo
+PUBLIC 7a1cd c GetCPInfoExW
+PUBLIC 7a4ce 8 IsDBCSLeadByteEx
+PUBLIC 9bf8 18 MultiByteToWideChar
+PUBLIC 32c7b 20 GetMBDefaultComp
+PUBLIC a0d4 20 WideCharToMultiByte
+PUBLIC 7a6b5 0 GetXPSP2ResModuleHandle
+PUBLIC 7a6e2 0 GetXPSP3ResModuleHandle
+PUBLIC 35819 0 NlsGetCacheUpdateCount
+PUBLIC 34474 c IsValidSeparatorString
+PUBLIC 7a712 c IsValidGroupingString
+PUBLIC 336f6 8 IsValidCalendarType
+PUBLIC 33735 8 IsValidCalendarTypeStr
+PUBLIC 7a773 0 GetPreComposedChar
+PUBLIC 2f440 4 GetCompositeChars
+PUBLIC 7a7f3 4 InsertPreComposedForm
+PUBLIC 37834 8 InsertFullWidthPreComposedForm
+PUBLIC 2f40d 0 InsertCompositeForm
+PUBLIC 7a850 8 NlsConvertIntegerToHexStringW
+PUBLIC 124d1 8 NlsConvertStringToIntegerW
+PUBLIC 121de 0 NlsStrCpyW
+PUBLIC 1bdd2 0 NlsStrCatW
+PUBLIC a2d4 0 NlsStrLenW
+PUBLIC 7a8b2 0 NlsStrEqualW
+PUBLIC 7a962 4 NlsStrNEqualW
+PUBLIC 7aa41 4 GetDefaultSortkeySize
+PUBLIC 7aa6b 4 GetLinguistLangSize
+PUBLIC 7aa95 10 ValidateLCType
+PUBLIC 2ee51 14 GetStringTableEntry
+PUBLIC 7ad9c 0 NlsIsDll
+PUBLIC 2c16a 0 UpdateUserInfoCache
+PUBLIC 12544 c NlsStringIsInRange
+PUBLIC 2a5c3 10 GetUserInfoFromRegistry
+PUBLIC 12090 1c GetUserInfo
+PUBLIC 14f5c 14 NlsConvertIntegerToString
+PUBLIC 397f8 4 ValidateLocale
+PUBLIC 384db c GetCPFileNameFromRegistry
+PUBLIC 3440e 4 IsValidNumberFormat
+PUBLIC 7adfe 4 IsValidCurrencyFormat
+PUBLIC 7ae7f 20 GetRegIntValue
+PUBLIC 7af62 8 ConvertGroupingStringToInt
+PUBLIC 7afd9 1c GetGroupingValue
+PUBLIC 3472b 20 GetNumberString
+PUBLIC 3465d 20 ParseNumber
+PUBLIC 7b04e 20 ParseCurrency
+PUBLIC 344bc 18 GetNumberFormatW
+PUBLIC 7b6ca 18 GetCurrencyFormatW
+PUBLIC 3414d 4 IsValidTime
+PUBLIC 339dc 4 IsValidDate
+PUBLIC 7bad3 18 GetCalendarYear
+PUBLIC 7bb6e c GetAbsoluteDate
+PUBLIC 7bc59 4 GetAdvanceHijriDate
+PUBLIC 7be1b 4 DaysUpToHijriYear
+PUBLIC 7be83 c IsValidDateForHebrew
+PUBLIC 335d4 18 StringCchCopyExW
+PUBLIC 33ec8 14 ParseTime
+PUBLIC 7bf4d 8 GetHijriDate
+PUBLIC 7c04f 8 GetHebrewDate
+PUBLIC 7c86f c NumberToHebrewLetter
+PUBLIC 33fd3 18 GetTimeFormatW
+PUBLIC 33a4a 20 ParseDate
+PUBLIC 33775 18 GetDateFormatW
+PUBLIC c0ed 0 NlsThreadCleanup
+PUBLIC 17fc1 0 InitKoreanWeights
+PUBLIC 1805b c NlsDllInitialize
+PUBLIC 38617 4 IsCPHashNodeLoaded
+PUBLIC 7caa9 0 GetGeoFileInfo
+PUBLIC a557 0 GetCTypeFileInfo
+PUBLIC 7cb54 8 LoadCodePageAsDLL
+PUBLIC 188fc 14 MakeCPHashNode
+PUBLIC 16ea9 10 MakeLocHashNode
+PUBLIC 336b6 8 GetCalendar
+PUBLIC 7cc2b 4 IsValidSortId
+PUBLIC 7cd42 0 GetLanguageExceptionInfo
+PUBLIC 7cdc6 4 FindLanguageExceptionPointers
+PUBLIC 7ce1e 4 CopyLanguageExceptionInfo
+PUBLIC 184dc c FindExceptionPointers
+PUBLIC 7ceb0 8 CopyExceptionInfo
+PUBLIC 7cf53 4 WaitOnEvent
+PUBLIC 183fe 8 GetSortkeyFileInfo
+PUBLIC 3996f 8 GetCodePageFileInfo
+PUBLIC 1831e 10 MakeLangHashNode
+PUBLIC d1ae 0 GetCPHashNode
+PUBLIC 150c2 0 GetLocHashNode
+PUBLIC 7cf85 8 CreateAndCopyLanguageExceptions
+PUBLIC 7d1b9 4 GetLinguisticLanguageInfo
+PUBLIC 18297 10 GetLanguageFileInfo
+PUBLIC 7d246 0 GetLangHashNode
+PUBLIC 7d340 c UpdateJamoState
+PUBLIC 7d3aa 14 GetJamoComposition
+PUBLIC 7d4ae 18 MapOldHangulSortKey
+PUBLIC 17210 0 NlsIsInteractiveUserProcess
+PUBLIC 7d5b4 0 NlsCheckForInteractiveUser
+PUBLIC 2a25d 4 NlsGetCacheBuffer
+PUBLIC 2a41a 0 NlsInvalidateCache
+PUBLIC 7d659 4 NlsFlushProcessCache
+PUBLIC 2a855 10 NlsQueryCurrentUserInfo
+PUBLIC 11fff 18 NlsGetCurrentUserNlsInfo
+PUBLIC 2a532 4 NlsGetUserLocale
+PUBLIC 7d6b7 c CsrBasepNlsSetUserInfo
+PUBLIC 16ff1 8 CsrBasepNlsGetUserInfo
+PUBLIC 7d765 1c CsrBasepNlsSetMultipleUserInfo
+PUBLIC 7d9c9 0 CsrBasepNlsUpdateCacheCount
+PUBLIC 7da0e c UTFCPInfo
+PUBLIC 7da7f 10 UTF7ToUnicode
+PUBLIC 31054 14 UTF8ToUnicode
+PUBLIC 7dc45 10 UnicodeToUTF7
+PUBLIC 21523 10 UnicodeToUTF8
+PUBLIC 30f99 18 UTFToUnicode
+PUBLIC 215f5 20 UnicodeToUTF
+PUBLIC 2ad39 c CsrBasepNlsCreateSection
+PUBLIC 7dead 8 DelayLoadFailureHook
+PUBLIC 7debd 4 FindDll
+PUBLIC 7dfad 8 LookupHandlerByName
+PUBLIC 7e036 8 LookupHandlerByOrdinal
+PUBLIC 7e07f 8 LookupHandler
+PUBLIC 7e0cb 14 GetSSIDForAdapter
+PUBLIC 7e0ef 18 GetSignalStrengthForAdapter
+PUBLIC ddf5 0 GetCurrentProcess
+PUBLIC 7e27b 4 ntohs
+PUBLIC 7e299 c WSAEnumProtocolsW
+PUBLIC 7e2bd 24 WSAIoctl
+PUBLIC 7e313 4 GetActivePwrScheme
+PUBLIC 7e34b 28 WinStationSendMessageW
+PUBLIC 7e362 8 ReadPwrScheme
+PUBLIC 7e39e 18 SdbQueryData
+PUBLIC 14ae7 4 FreeEnvironmentStringsW
+PUBLIC 7e3a9 c mixerGetID
+PUBLIC 7e536 18 SetupDiGetDeviceInterfaceDetailA
+PUBLIC cc97 4 LockResource
+PUBLIC 7e848 8 DnsRecordCompare
+PUBLIC 7e878 10 DnsRecordSetCompare
+PUBLIC 260c2 4 DnsApiAlloc
+PUBLIC 7e8b2 c DnsRecordSetCopyEx
+PUBLIC 7e98d 4 DnsApiFree
+PUBLIC 7e9e7 0 LZStart
+PUBLIC 7ea57 c SfpInstallCatalog
+PUBLIC 7ea62 8 SfpDeleteCatalog
+PUBLIC 7eb14 10 pSetupConcatenatePaths
+PUBLIC 7eb60 c SetActivePwrScheme
+PUBLIC 7ec59 0 IsPwrShutdownAllowed
+PUBLIC 7ece6 10 UrlMkSetSessionOption
+PUBLIC 7f052 0 ldap_search_init_pageW
+PUBLIC 7f078 8 DnsFreeConfigStructure
+PUBLIC 7f0c5 c DnsSetConfigDword
+PUBLIC 7f1f1 10 WZCProviderDeleteWirelessProfile
+PUBLIC 7f1fe 0 LZDone
+PUBLIC 7f215 8 SetConsoleMaximumWindowSize
+PUBLIC 7f23b 1c MprAdminConnectionEnum
+PUBLIC 7f251 8 NPCancelConnectionForCSCAgent
+PUBLIC 7f6a5 5c LocalEnrollNoDS
+PUBLIC 328ec 0 memmove
+PUBLIC 2cf55 c RtlDnsHostNameToComputerName
+PUBLIC 11fc7 0 wcsncpy
+PUBLIC 7f853 0 wcschr
+PUBLIC 29f14 0 wcsstr
+PUBLIC a0c9 0 _allmul
+PUBLIC 7f85e 0 DbgBreakPoint
+PUBLIC 7f869 0 DbgPrint
+PUBLIC 24c6 0 _SEH_prolog
+PUBLIC 2501 0 _SEH_epilog
+PUBLIC 39aa8 0 _except_handler3
+PUBLIC 39b8e 4 _seh_longjmp_unwind
+PUBLIC 7f874 4 DbgUiDebugActiveProcess
+PUBLIC 7f87f 0 DbgUiConnectToDbg
+PUBLIC 7f88a 4 DbgUiIssueRemoteBreakin
+PUBLIC 7f895 14 NtSetInformationDebugObject
+PUBLIC 7f8a0 0 DbgUiGetThreadDebugObject
+PUBLIC 7f8ab 8 DbgUiConvertStateChangeStructure
+PUBLIC 7f8b6 8 DbgUiWaitStateChange
+PUBLIC 7f8c1 8 DbgUiContinue
+PUBLIC 7f8cc 4 DbgUiStopDebugging
+PUBLIC 7f8d7 0 strncpy
+PUBLIC 7f8e2 8 RtlFlushSecureMemoryCache
+PUBLIC de84 0 _global_unwind2
+PUBLIC dedf 0 _local_unwind2
+PUBLIC df3f 0 _NLG_Return2
+PUBLIC df4f 0 _abnormal_termination
+PUBLIC df72 0 _NLG_Notify1
+PUBLIC df7b 0 _NLG_Notify
+PUBLIC df91 0 _NLG_Dispatch2
+PUBLIC 7f8ed 18 NtQueryVirtualMemory
+PUBLIC 18045 4 LdrSetDllManifestProber
+PUBLIC 18050 8 RtlSetThreadPoolStartFunc
+PUBLIC 1017b 4 RtlEncodePointer
+PUBLIC 39493 10 RtlSetHeapInformation
+PUBLIC 7f8f8 14 RtlQueryHeapInformation
+PUBLIC abd3 4 LdrUnloadDll
+PUBLIC 14e44 4 LdrUnloadAlternateResourceModule
+PUBLIC 112bb 4 LdrDisableThreadCalloutsForDll
+PUBLIC e46c 10 LdrGetDllHandle
+PUBLIC b4c4 8 LdrUnlockLoaderLock
+PUBLIC 2129a 8 LdrAddRefDll
+PUBLIC b3ca c LdrLockLoaderLock
+PUBLIC 17779 c LdrEnumerateLoadedModules
+PUBLIC 14e0f 8 LdrLoadAlternateResourceModule
+PUBLIC e069 10 LdrLoadDll
+PUBLIC ad95 10 LdrGetProcedureAddress
+PUBLIC 9f9f 10 LdrFindResource_U
+PUBLIC 9faa 10 LdrAccessResource
+PUBLIC 1126d 10 LdrFindResourceDirectory_U
+PUBLIC 1cdf8 0 LdrShutdownProcess
+PUBLIC 7f903 8 NtTerminateProcess
+PUBLIC 1a204 18 LdrQueryImageFileExecutionOptions
+PUBLIC 7f90e 0 wcsncmp
+PUBLIC c0d1 0 LdrShutdownThread
+PUBLIC 10186 4 RtlDecodePointer
+PUBLIC 2c053 c RtlSetIoCompletionCallback
+PUBLIC 7f919 28 RtlApplicationVerifierStop
+PUBLIC 7f924 0 _alloca_probe
+PUBLIC 19a62 0 DbgPrintEx
+PUBLIC 15451 4 LdrDestroyOutOfProcessImage
+PUBLIC 162a8 14 LdrAccessOutOfProcessResource
+PUBLIC 15446 14 LdrFindCreateProcessManifest
+PUBLIC 15345 10 LdrCreateOutOfProcessImage
+PUBLIC 16912 0 _allshl
+PUBLIC 7f92f 4 RtlUnhandledExceptionFilter
+PUBLIC 7f93a 0 wcspbrk
+PUBLIC 7f945 0 _wcslwr
+PUBLIC 37a6c 0 _wtol
+PUBLIC 7f950 0 _strlwr
+PUBLIC 7f95b 0 _ValidateEH3RN
+PUBLIC 7fb82 10 RtlUnwind
+PUBLIC 7fb8d c InitGlobalBuffers
+PUBLIC 7fc40 0 InitGlobalBuffersEx
+PUBLIC 7fc57 4 FreeGlobalBuffers
+PUBLIC 7fca5 c lz_CopyFile
+PUBLIC 7fd63 c ExpandOrCopyFile
+PUBLIC 7fe21 4 ExtractFileNameW
+PUBLIC 7fe56 4 ExtractFileName
+PUBLIC 7fea2 4 ExtractExtensionW
+PUBLIC 7fed7 4 ExtractExtension
+PUBLIC 7ff1d 4 MakeCompressedNameW
+PUBLIC 7ff89 4 MakeCompressedName
+PUBLIC 7fff3 8 MakeExpandedName
+PUBLIC 800fc 8 CopyDateTimeStamp
+PUBLIC 80146 c GetHdr
+PUBLIC 801f9 4 IsCompressed
+PUBLIC 80246 18 LZDecode
+PUBLIC 804ad c ReadInBuf
+PUBLIC 80527 c WriteOutBuf
+PUBLIC 80579 4 LZIsCharLowerA
+PUBLIC 805dc 4 LZIsCharUpperA
+PUBLIC 8063f 4 LZCharNextA
+STACK WIN 4 b5ae 16 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 9b47 66 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 17826 35 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 55709 1f7 c 0 10 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 558b4 e 0 0 10 8 4c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 be41 c7 c 0 4 8 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 39bc8 e 0 0 4 8 3c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 98f4 2b 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 936b 1e 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 9371 14 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 92b0 32 7 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 92b6 28 1 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 92b7 26 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 30769 a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 b722 20 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 29d7a 164 a 0 18 0 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 29d83 157 1 0 18 4 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 76 - ^ =
+STACK WIN 4 29d84 155 0 0 18 8 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 76 - ^ =
+STACK WIN 4 29dc5 8e 0 0 18 c 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 76 - ^ =
+STACK WIN 4 1b069 a1 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1b078 90 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1b079 82 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 17860 24 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 29f30 6f 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 29f36 65 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1dc03 54 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 12f39 52 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 12f3f 48 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 17889 5c 1d 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1789f 42 7 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 178a6 38 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 17923 98 7 0 0 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1792a 8f 0 0 0 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 180a6 23c 9 0 0 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 180af 231 0 0 0 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 180c5 21a 0 0 0 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1795e 89 3 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 17961 85 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1798a 5a 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 179ea 212 8 0 0 0 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 17a3c 1bd 0 0 0 4 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 17a49 1af 0 0 0 8 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 16e70 85 8 0 c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 18a21 a1 e 0 0 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 18a2f 91 0 0 0 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 18a68 57 0 0 0 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 17cb5 257 8 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 17e09 89 0 0 0 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1839b d3 1b 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 183b2 b8 4 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 183b6 b3 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 998d 16b c 0 8 8 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 39e42 e 0 0 8 8 2c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 992f 10b c 0 4 8 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 39ea2 e 0 0 4 8 28 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 39eca e 0 0 4 8 28 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1625 129 c 0 20 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1717 4 0 0 20 8 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 32eb1 ba c 0 4 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 39f0b e 0 0 4 8 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 32e1d bb c 0 4 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 39f69 e 0 0 4 8 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 a03b 23 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 a017 25 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 55921 e8 8 0 4 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5595c a5 0 0 4 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5595d a3 0 0 4 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 a35e b91 19 0 18 0 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 a36a b81 d 0 18 4 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 132 - ^ =
+STACK WIN 4 a36b b7f c 0 18 8 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 132 - ^ =
+STACK WIN 4 a377 b72 0 0 18 c 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 132 - ^ =
+STACK WIN 4 55a0e e0 c 0 4 8 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 55abf e 0 0 4 8 2c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 55b09 8b c 0 4 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 55b65 e 0 0 4 8 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 30927 209 c 0 c 8 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3a7c5 e 0 0 c 8 30 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 30bd3 142 c 0 c 8 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3a824 e 0 0 c 8 3c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3a86a 19 0 0 c 8 3c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 33107 18f f 0 14 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 33110 182 6 0 14 4 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 33116 17b 0 0 14 8 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 3312f 14d 0 0 14 c 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 ffb1 12d c 0 c 8 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3a94d e 0 0 c 8 3c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3a995 19 0 0 c 8 3c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 326c1 15 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 ab78 ff c 0 4 8 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3a9c6 e 0 0 4 8 38 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 330e7 1b 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 a9cc 64 a 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 a9d2 5a 4 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 a9d6 55 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 ba64 39 c 0 8 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3aa01 4 0 0 8 8 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 bbce b2 c 0 c 8 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3aa1d e 0 0 c 8 30 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 e6dc 185 c 0 18 0 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 e6e8 175 0 0 18 4 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 56 - ^ =
+STACK WIN 4 e701 13c 0 0 18 8 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 56 - ^ =
+STACK WIN 4 e73a ed 0 0 18 c 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 56 - ^ =
+STACK WIN 4 1021c 1ba 9 0 10 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 10225 1ad 0 0 10 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1026f 15c 0 0 10 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 30b7d 3b 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2c86d 29 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 2c87c 16 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 ddfe d3 c 0 1c 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3aad0 4 0 0 1c 8 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 a996 65 a 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 a99c 5b 4 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 a9a0 56 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 b64c 63 c 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3ab10 11 0 0 8 8 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2520 16 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1042c 301 17 0 1c 8 420 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3abe7 7a 0 0 1c 8 420 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 98eb 4 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 2ff92 18 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 103a3 9e 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 55bbc 2d 7 0 4 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 55bee 31 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 55c24 2e 8 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 55c2c 22 0 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 55c57 27 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 55c83 4c b 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 55c89 42 5 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 55c8d 3d 1 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 55c8e 3b 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 55cd4 119 15 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 55cdc 10d d 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 55cdd 10b c 0 c 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 55ce9 fe 0 0 c c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 55df2 bd 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 55df8 b3 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 55e53 15 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 55eb4 36 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 55eef 15b 12 0 18 0 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 55efb 14b 6 0 18 4 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 55f01 144 0 0 18 8 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5604f a4 18 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5605a 95 d 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 5605e 90 9 0 c 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 56067 86 0 0 c c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 560f8 d7 9 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 56100 cb 1 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 56101 c9 0 0 c 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 5618d 3c 0 0 c c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 561d4 a5 16 0 c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 561dd 98 d 0 c 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 561de 94 c 0 c 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 561ea 87 0 0 c c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 5627e fe 16 0 c 0 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 56287 f1 d 0 c 4 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 48 - ^ =
+STACK WIN 4 56288 ef c 0 c 8 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 48 - ^ =
+STACK WIN 4 56294 e2 0 0 c c 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 48 - ^ =
+STACK WIN 4 56381 2b 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 563b1 20 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 563d6 60 10 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 563df 53 7 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 563e6 4b 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 56407 24 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 5643b 1f 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 56441 15 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5645f 54 a 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 56465 4a 4 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 56469 45 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 56471 3c 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 564b8 5c 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 564be 52 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 564cf 16 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 56519 180 e 0 c 0 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 56522 173 5 0 c 4 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 48 - ^ =
+STACK WIN 4 56523 171 4 0 c 8 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 48 - ^ =
+STACK WIN 4 56527 16c 0 0 c c 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 48 - ^ =
+STACK WIN 4 5669e c8 9 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 566a6 bc 1 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 566a7 ba 0 0 c 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 5676b 27b 15 0 c 0 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 56774 26e c 0 c 4 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 48 - ^ =
+STACK WIN 4 5677f 262 1 0 c 8 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 48 - ^ =
+STACK WIN 4 56780 260 0 0 c c 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 48 - ^ =
+STACK WIN 4 569ec e9 15 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 569f4 dd d 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 569f5 db c 0 c 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 56a01 ce 0 0 c c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 56ada b5 15 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 56ae2 a9 d 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 56ae3 a7 c 0 c 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 56aef 9a 0 0 c c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 56b94 12e 8 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 56b9c 122 0 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 56bba 102 0 0 c 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 56cc7 113 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 56cdf f6 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 56cea ea 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 56ddf 22e 19 0 1c 0 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 56df1 2a 7 0 1c 4 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 76 - ^ =
+STACK WIN 4 56df2 28 6 0 1c 8 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 76 - ^ =
+STACK WIN 4 56df8 21 0 0 1c c 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 76 - ^ =
+STACK WIN 4 57012 8d 6 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 57018 83 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 5704b 45 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 5704f 40 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 570a4 46 8 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 570ac 16 0 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 570ef 5b 8 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 570f7 16 0 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 57112 2c 0 0 c 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5714f 75 e 0 c 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5715d 5e 0 0 c 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 57177 35 0 0 c 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 571c9 e0 a 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 571cf d6 4 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 571d3 d1 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 572ae 14b 9 0 c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 572b7 13e 0 0 c 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 572df 115 0 0 c 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 573fe 1f4 1c 0 1c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5740d 1b2 d 0 1c 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 57411 1ad 9 0 1c 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 5741a 1a3 0 0 1c c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 37bfc 52 13 0 0 0 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 37a77 1c7 13 0 8 0 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 37a80 1ba a 0 8 4 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 37a8a 1af 0 0 8 8 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 575f7 69 b 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 575fd 5f 5 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 575fe 5d 4 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 57602 58 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 57665 70 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5766b 66 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 576a6 2a 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 576da 5c c 0 10 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 576e1 51 5 0 10 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 576e2 4f 4 0 10 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 576e6 4a 0 0 10 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 5773b 82 15 0 c 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 57748 71 8 0 c 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 57749 6f 7 0 c 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 57750 67 0 0 c c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 577c2 a4 e 0 c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 577cb 97 5 0 c 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 577cc 95 4 0 c 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 577d0 90 0 0 c c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 5786b 4b 11 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 57871 41 b 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 57878 37 4 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 5787c 32 0 0 c c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 202af 1e8 22 0 10 0 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 202c3 1cb e 0 10 4 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 204 - ^ =
+STACK WIN 4 202c4 1c9 d 0 10 8 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 204 - ^ =
+STACK WIN 4 202d1 1bb 0 0 10 c c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 204 - ^ =
+STACK WIN 4 578bb 9d 10 0 c 0 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 578c4 90 7 0 c 4 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 578cb 88 0 0 c 8 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5795d 95 a 0 10 0 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 57966 88 1 0 10 4 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 57967 86 0 0 10 8 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 579f7 ac 9 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 579fe a1 2 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 579ff 9d 1 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 57a00 9b 0 0 c c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 57aa8 101 9 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 57ab0 f5 1 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 57ab1 f3 0 0 c 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 57ae7 93 0 0 c c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 57bae e4 a 0 c 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 57bb7 d7 1 0 c 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 57bb8 d5 0 0 c 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 57be2 a8 0 0 c c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 57c97 38 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 57cd4 b4 9 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 57cdd 54 0 0 4 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 57d07 29 0 0 4 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 57da5 80 b 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 57dab 76 5 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 57daf 71 1 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 57db0 6f 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 57e41 3f 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 57e85 2c 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 57eb6 9e a 0 4 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 57ebe 92 2 0 4 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 57ebf 8e 1 0 4 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 57ec0 8c 0 0 4 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 57f59 2c 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 57f8a 4e a 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 57f90 44 4 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 57f94 3f 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 57fdd a7 7 0 8 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 57fe4 9c 0 0 8 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 57ff3 8c 0 0 8 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 57ff4 8a 0 0 8 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 31893 136 22 0 10 0 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 318a7 119 e 0 10 4 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 176 - ^ =
+STACK WIN 4 318ab 114 a 0 10 8 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 176 - ^ =
+STACK WIN 4 318b5 109 0 0 10 c a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 176 - ^ =
+STACK WIN 4 316c7 20b 13 0 8 0 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 316d8 139 2 0 8 4 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 68 - ^ =
+STACK WIN 4 316d9 137 1 0 8 8 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 68 - ^ =
+STACK WIN 4 316da 135 0 0 8 c 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 68 - ^ =
+STACK WIN 4 5808d 121 15 0 4 0 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5809a 110 8 0 4 4 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 56 - ^ =
+STACK WIN 4 580a1 108 1 0 4 8 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 56 - ^ =
+STACK WIN 4 580a2 106 0 0 4 c 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 56 - ^ =
+STACK WIN 4 201f1 25b a 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 201fb 22d 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 2020a 210 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 20210 209 0 0 c c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 581b3 7c 6 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 581b9 72 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 581cc 5e 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 216a4 105 a 0 8 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 216ad f8 1 0 8 4 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 216ae f6 0 0 8 8 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 21702 84 0 0 8 c 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 58234 6e 8 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5827c 17 0 0 4 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 582a7 a0 b 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 582ad 96 5 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 582ae 94 4 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 582b2 8f 0 0 c c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 5834c 52 8 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 58380 1a 0 0 8 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 583a3 17b 7 0 10 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 583aa 170 0 0 10 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 583d0 143 0 0 10 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 58523 a7 b 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 58529 9d 5 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 5852a 9b 4 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 5852e 96 0 0 10 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 2ceb2 ae 1c 0 c 0 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2cec0 97 e 0 c 4 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 64 - ^ =
+STACK WIN 4 2cec4 92 a 0 c 8 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 64 - ^ =
+STACK WIN 4 2cece 87 0 0 c c 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 64 - ^ =
+STACK WIN 4 585cf 97 18 0 c 0 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 585dd 76 a 0 c 4 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 585e7 6b 0 0 c 8 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5866b 476 1c 0 10 0 68c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5867c 2f7 b 0 10 4 68c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1684 - ^ =
+STACK WIN 4 58680 2f2 7 0 10 8 68c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1684 - ^ =
+STACK WIN 4 58687 2ea 0 0 10 c 68c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1684 - ^ =
+STACK WIN 4 58bc3 76 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 58be8 4d 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 58c3e 26 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 58c69 19c b 0 4 0 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 58c72 18f 2 0 4 4 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 58c73 18d 1 0 4 8 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 58c74 18b 0 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 58e0a 117 a 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 58e12 10b 2 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 58e13 109 1 0 8 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 58e14 107 0 0 8 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 58f26 44 6 0 8 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 58f3c 2a 0 0 8 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 58f6f dc 8 0 8 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 58f76 d1 1 0 8 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 58f77 cf 0 0 8 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 58f91 af 0 0 8 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 59050 44 6 0 8 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 59066 2a 0 0 8 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 59099 211 d 0 8 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 590a2 6d 4 0 8 4 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 590a6 68 0 0 8 8 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 592af 44 6 0 8 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 592c5 2a 0 0 8 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 592f8 b1 11 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 592fe a7 b 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 592ff a5 a 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 59309 9a 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 593ae b 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 b852 20 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 b877 1a 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 30b14 3a 8 0 0 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 f272 79 9 0 4 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 f27a 6d 1 0 4 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 f27b 6b 0 0 4 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 138fc 172 d 0 10 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 13905 165 4 0 10 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 13909 160 0 0 10 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 34ffe 96 12 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 35006 8a a 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 35010 7f 0 0 8 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 360dd 63 a 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 360e3 59 4 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 360e7 54 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 360f4 46 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 f2ee 40 7 0 4 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 176b 75 8 0 4 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 17e5 24 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 593be 9b 40 0 4 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 593ed 68 11 0 4 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 32 - ^ =
+STACK WIN 4 593fe 53 0 0 4 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 32 - ^ =
+STACK WIN 4 929c f 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 e7ec 82 8 0 8 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 10b1c 77 8 0 8 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 e866 5d 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 e88c 22 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 35524 5d 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3554a 22 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3065d 96 8 0 c 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3214e 8e 8 0 c 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 10ad9 3b 11 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 10aea 26 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 350bf 166 15 0 4 0 b0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 350d0 14c 4 0 4 4 b0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 350d4 147 0 0 4 8 b0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5945e 121 2c 0 4 0 b0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5946f eb 1b 0 4 4 b0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5948a cf 0 0 4 8 b0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2d36f 46 8 0 c 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 59584 38 b 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5958f 29 0 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2e9c1 2e7 1d 0 c 0 188 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2e9d2 29a c 0 c 4 188 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2e9de 28d 0 0 c 8 188 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 595c1 278 15 0 c 0 180 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 595d2 25e 4 0 c 4 180 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 392 - ^ =
+STACK WIN 4 595d6 259 0 0 c 8 180 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 392 - ^ =
+STACK WIN 4 5961c 20f 0 0 c c 180 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 392 - ^ =
+STACK WIN 4 5983e 1ee 13 0 8 0 50 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 59847 1d2 a 0 8 4 50 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 88 - ^ =
+STACK WIN 4 59848 1d0 9 0 8 8 50 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 88 - ^ =
+STACK WIN 4 59851 1c6 0 0 8 c 50 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 88 - ^ =
+STACK WIN 4 a7d4 b7 8 0 4 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 a810 67 0 0 4 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 a811 61 0 0 4 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 59a31 e8 1b 0 4 0 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 59a42 ce a 0 4 4 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 204 - ^ =
+STACK WIN 4 59a4b c4 1 0 4 8 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 204 - ^ =
+STACK WIN 4 59a4c c2 0 0 4 c c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 204 - ^ =
+STACK WIN 4 13093 e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 59b1e 4f a 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 59b28 41 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 59b72 5 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 59b7c 1ea 11 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 59b8a 1c5 3 0 0 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 84 - ^ =
+STACK WIN 4 59b8d 1c1 0 0 0 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 84 - ^ =
+STACK WIN 4 59c2c fa 0 0 0 c 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 84 - ^ =
+STACK WIN 4 59d78 2ab 17 0 4 8 244 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 59dd6 4 0 0 4 8 244 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 59f9f 14 0 0 4 8 244 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5a0bd 61 8 0 4 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5a0d4 46 0 0 4 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5a123 4e 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5a13c 31 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5a14b 21 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5a176 22 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5a19d 46 6 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5a1e8 44 8 0 c 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5a231 59 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5a28f 57 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5a2eb 2b 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5a31b 31 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5a351 70 7 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5a357 66 1 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5a358 64 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5a3c6 62 7 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5a3cc 58 1 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5a3cd 56 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5a42d 4e 9 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5a436 35 0 0 4 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5a480 e0 9 0 8 0 68 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5a489 42 0 0 8 4 68 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5a565 3f c 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5a56d 33 4 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5a571 2e 0 0 c 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5a5a9 44 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5a5af 3a 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5a5be 1a 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 36f5b 460 9 0 4 0 58 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 36f64 e3 0 0 4 4 58 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 96 - ^ =
+STACK WIN 4 36f9d 98 0 0 4 8 58 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 96 - ^ =
+STACK WIN 4 36f9e 96 0 0 4 c 58 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 96 - ^ =
+STACK WIN 4 323d2 146 a 0 8 0 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 323db 139 1 0 8 4 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 323dc 137 0 0 8 8 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5a5f2 c22 1d 0 c 0 2c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5a60f bfc 0 0 c 4 2c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 716 - ^ =
+STACK WIN 4 5a689 b7e 0 0 c 8 2c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 716 - ^ =
+STACK WIN 4 5a690 b76 0 0 c c 2c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 716 - ^ =
+STACK WIN 4 5b219 1d 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 217ac 20 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5b23b 4b 8 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5b243 3f 0 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2af8f 2c 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 30cce 1c 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 360a9 15 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 360c3 15 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 30bbb 13 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5b28b 1b 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1006c 15 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 34e97 15 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2c3be 1b 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 354ed 15 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 30cfe 15 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 32695 13 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5b2ab 1b 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2f827 15 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 f726 59 7 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 f72c 4f 1 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 f72d 4d 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 f763 59 7 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 f769 4f 1 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 f76a 4d 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1ee95 e2 7 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1ee9b d8 1 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1ee9c d6 0 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 f88c 181 13 0 14 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 f893 176 c 0 14 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 f897 171 8 0 14 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 f89f 168 0 0 14 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 f6da 63 b 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 f6e5 54 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 f7a0 124 22 0 c 0 228 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 f7b1 10a 11 0 c 4 228 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 560 - ^ =
+STACK WIN 4 f7b5 105 d 0 c 8 228 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 560 - ^ =
+STACK WIN 4 f7c2 f7 0 0 c c 228 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 560 - ^ =
+STACK WIN 4 1c858 6a 3 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1c85b 66 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 331f9 23 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1c8a6 35 7 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1c8ac 27 1 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1c8ad 25 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5b2cb 85 1b 0 8 0 34 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5b315 2f 0 0 8 4 34 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1e361 460 b 0 4 0 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1e36a 453 2 0 4 4 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 76 - ^ =
+STACK WIN 4 1e36b 451 1 0 4 8 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 76 - ^ =
+STACK WIN 4 1e36c 44f 0 0 4 c 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 76 - ^ =
+STACK WIN 4 1e6e1 119 d 0 4 0 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1e6ed 109 1 0 4 4 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 1e6ee 107 0 0 4 8 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 1e708 8c 0 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 35889 29 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1e891 362 7 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1e8a8 100 0 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1e8b6 f1 0 0 8 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1f18a 112 10 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1f193 105 7 0 14 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1f19a fd 0 0 14 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5b355 db 5 0 1c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5b36b c1 0 0 1c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5b36c bf 0 0 1c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3331f 98 a 0 0 0 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 33328 8d 1 0 0 4 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 33329 8b 0 0 0 8 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 f460 3a2 12 0 28 0 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 f46c 392 6 0 28 4 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 f46d 390 5 0 28 8 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 f472 38a 0 0 28 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 f928 18 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 f851 47 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1c8db 3b1 28 0 14 0 84 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1c8fb 388 8 0 14 4 84 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 140 - ^ =
+STACK WIN 4 1c8fc 386 7 0 14 8 84 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 140 - ^ =
+STACK WIN 4 1c903 37e 0 0 14 c 84 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 140 - ^ =
+STACK WIN 4 5b435 158 1f 0 4 0 21c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5b446 44 e 0 4 4 21c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 548 - ^ =
+STACK WIN 4 5b44a 3f a 0 4 8 21c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 548 - ^ =
+STACK WIN 4 5b454 34 0 0 4 c 21c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 548 - ^ =
+STACK WIN 4 1b42d 157 1f 0 8 0 21c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1b43e 46 e 0 8 4 21c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 548 - ^ =
+STACK WIN 4 1b442 41 a 0 8 8 21c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 548 - ^ =
+STACK WIN 4 1b44c 36 0 0 8 c 21c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 548 - ^ =
+STACK WIN 4 1cac2 217 1e 0 10 0 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1cad0 200 10 0 10 4 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 64 - ^ =
+STACK WIN 4 1cad4 1fb c 0 10 8 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 64 - ^ =
+STACK WIN 4 1cae0 1ee 0 0 10 c 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 64 - ^ =
+STACK WIN 4 5b592 185 1f 0 8 0 220 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5b5a3 5e e 0 8 4 220 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 552 - ^ =
+STACK WIN 4 5b5a7 59 a 0 8 8 220 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 552 - ^ =
+STACK WIN 4 5b5b1 4e 0 0 8 c 220 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 552 - ^ =
+STACK WIN 4 2bb93 14d 1e 0 10 0 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2bba1 136 10 0 10 4 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 48 - ^ =
+STACK WIN 4 2bba5 131 c 0 10 8 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 48 - ^ =
+STACK WIN 4 2bbb1 124 0 0 10 c 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 48 - ^ =
+STACK WIN 4 32dd3 40 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 32dd9 36 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1e793 fa e 0 4 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1e79c ed 5 0 4 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 1e79d eb 4 0 4 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 1e7a1 e6 0 0 4 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 1e9c5 fa e 0 4 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1e9ce ed 5 0 4 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 1e9cf eb 4 0 4 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 1e9d3 e6 0 0 4 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 5b71c 107 10 0 10 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5b72b f4 1 0 10 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5b72c f1 0 0 10 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2dc81 13a 16 0 8 0 218 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2dc92 120 5 0 8 4 218 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 544 - ^ =
+STACK WIN 4 2dc96 11b 1 0 8 8 218 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 544 - ^ =
+STACK WIN 4 2dc97 119 0 0 8 c 218 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 544 - ^ =
+STACK WIN 4 2dc43 3de c 0 8 8 5c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3bde2 e 0 0 8 8 5c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 358ed 48 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 358f3 3e 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1ea7d 155 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1ea83 14b 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1ecd2 12f 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1ecd8 125 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1ecea 112 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5b828 24f b 0 4 0 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5b831 242 2 0 4 4 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 5b832 240 1 0 4 8 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 5b833 23e 0 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 1f021 325 e 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1f02a 318 5 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ =
+STACK WIN 4 1f02b 316 4 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ =
+STACK WIN 4 1f02f 311 0 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ =
+STACK WIN 4 1c7f4 af c 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1c7fa a5 6 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1c800 9e 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1e291 166 c 0 4 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3c06f 15 0 0 4 8 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 f331 225 26 0 20 0 cc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 f34c 201 b 0 20 4 cc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 212 - ^ =
+STACK WIN 4 f34d 1ff a 0 20 8 cc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 212 - ^ =
+STACK WIN 4 f357 1f4 0 0 20 c cc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 212 - ^ =
+STACK WIN 4 32b56 f5 f 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 32b5c eb 9 0 18 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 32b60 e6 5 0 18 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 32b65 e0 0 0 18 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 35d54 4b 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 35f21 7d b 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 35f27 73 5 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 35f28 71 4 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 35f2c 6c 0 0 10 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 5ba7c 42 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 f95d d2 d 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 f963 c8 7 0 18 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 f969 c1 1 0 18 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 f96a bd 0 0 18 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 1ee4c 4b 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1edbd 81 b 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1edc3 77 5 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 1edc4 75 4 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 1edc8 70 0 0 10 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 5bac3 42 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 32da7 1c 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5bb0a 1c 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5bb2b 164 37 0 14 0 11c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5bb62 124 0 0 14 4 11c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 292 - ^ =
+STACK WIN 4 5bb76 10c 0 0 14 8 11c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 292 - ^ =
+STACK WIN 4 5bb77 10a 0 0 14 c 11c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 292 - ^ =
+STACK WIN 4 5bc95 185 2d 0 14 0 220 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5bcb5 15c d 0 14 4 220 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 552 - ^ =
+STACK WIN 4 5bcc2 14e 0 0 14 8 220 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 552 - ^ =
+STACK WIN 4 5bcef 11d 0 0 14 c 220 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 552 - ^ =
+STACK WIN 4 5be23 13d 18 0 14 0 118 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5be3a 11d 1 0 14 4 118 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5be3b 11b 0 0 14 8 118 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5bf65 14f 18 0 14 0 218 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5bf7c 12f 1 0 14 4 218 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5bf7d 12d 0 0 14 8 218 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 21495 1f 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5c0b9 19 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5c0d7 19 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5c0f5 16 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 213f8 1f 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 332b1 19 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5c110 19 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5c12e 16 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 36434 83 2f 0 10 0 108 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 32730 ce 2f 0 10 0 218 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3277e 67 0 0 10 4 218 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 364a9 19 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2f89a 19 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 21f1e 2b9 39 0 c 0 f4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 21f3c 292 1b 0 c 4 f4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 252 - ^ =
+STACK WIN 4 21f50 27d 7 0 c 8 f4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 252 - ^ =
+STACK WIN 4 21f57 275 0 0 c c f4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 252 - ^ =
+STACK WIN 4 5c149 100 c 0 8 8 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5c223 1e 0 0 8 8 38 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5c269 57 d 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5c26f 4d 7 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 5c275 46 1 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 5c276 44 0 0 10 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 21d8d 5b9 f 0 c 8 98 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3c77a 2c 0 0 c 8 98 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5c2c5 a2 11 0 c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5c2ce 95 8 0 c 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 5c2cf 93 7 0 c 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 5c2d6 8b 0 0 c c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 5c36c fb d 0 c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5c379 ea 0 0 c 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5c3ce 93 0 0 c 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 31385 8e 9 0 10 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3138e 81 0 0 10 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 126f2 30 6 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 126f8 26 0 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 a71d 74 8 0 14 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 315c4 67 6 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 315ca 5d 0 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 ac4d 37 6 0 0 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 ac0f 3e 7 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 ac16 33 0 0 4 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 ef3a 1bb c 0 8 8 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 f049 e 0 0 8 8 3c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 edd7 db c 0 4 8 34 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3c85e e 0 0 4 8 34 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5c46c 3a 9 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5c475 2d 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 34bef ec 9 0 c 0 34 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 34bf8 df 0 0 c 4 34 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 34c1f ac 0 0 c 8 34 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 32113 3a 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 32119 30 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3162f 107 15 0 20 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 31638 fa c 0 20 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 31639 f8 b 0 20 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 31644 ec 0 0 20 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 ee81 6d 7 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 ee87 63 1 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 ee88 5f 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 34eb1 10a 12 0 8 0 268 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 34ec2 f0 1 0 8 4 268 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 624 - ^ =
+STACK WIN 4 34ec3 ee 0 0 8 8 268 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 624 - ^ =
+STACK WIN 4 34eea c0 0 0 8 c 268 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 624 - ^ =
+STACK WIN 4 ea7d 4d7 1d 0 18 0 2cc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 ea92 4b9 8 0 18 4 2cc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 724 - ^ =
+STACK WIN 4 ea99 4b1 1 0 18 8 2cc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 724 - ^ =
+STACK WIN 4 ea9a 4af 0 0 18 c 2cc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 724 - ^ =
+STACK WIN 4 5c4ab 62 8 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5c4b3 56 0 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 137d9 139 18 0 8 0 26c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 137ea 11f 7 0 8 4 26c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 137f1 117 0 0 8 8 26c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 eee1 1a 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5c512 137 1c 0 18 0 268 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5c523 11d b 0 18 4 268 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 624 - ^ =
+STACK WIN 4 5c524 11b a 0 18 8 268 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 624 - ^ =
+STACK WIN 4 5c52e 110 0 0 18 c 268 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 624 - ^ =
+STACK WIN 4 180e 1cd c 0 14 8 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 18ef e 0 0 14 8 30 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1921 4 0 0 14 8 30 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 10d87 140 c 0 14 8 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3cac5 4 0 0 14 8 28 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 32044 98 9 0 4 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3204d 8b 0 0 4 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3207f 4f 0 0 4 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 10b8e 122 8 0 10 0 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 10bae ef 0 0 10 4 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 10baf ed 0 0 10 8 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 21057 e3 9 0 14 0 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 21060 d6 0 0 14 4 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 10c6d 11d 22 0 8 0 c0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 10c7e 103 11 0 8 4 c0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 200 - ^ =
+STACK WIN 4 10c8f f1 0 0 8 8 c0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 200 - ^ =
+STACK WIN 4 10c99 d6 0 0 8 c c0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 200 - ^ =
+STACK WIN 4 31c45 7c 8 0 10 0 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 31cb8 88 8 0 10 0 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 31cd2 10 0 0 10 4 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 12641 6d 7 0 4 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 32361 8a 8 0 14 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3237e 5f 0 0 14 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2f569 aa 8 0 18 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2f5ad 41 0 0 18 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 322fb 6f 8 0 14 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 10a09 40 8 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5c64e 96 c 0 c 8 34 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5c6de b 0 0 c 8 34 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2bd84 33 6 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2bd8a 29 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2bcfb 9b 13 0 14 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2bd0d 85 1 0 14 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 2bd0e 83 0 0 14 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 5c701 9b 13 0 14 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5c713 85 1 0 14 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 5c714 83 0 0 14 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 300da 29 7 0 4 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2de51 9c c 0 14 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2dda5 99 c 0 14 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5c7a1 51 7 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5c7f7 c8 7 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5c82d 8d 0 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5c82e 8b 0 0 8 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5c8c4 20 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 10e51 de 9 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 10e5a d1 0 0 4 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 322bc 67 12 0 14 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 322ce 51 0 0 14 4 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 10a77 3d 7 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 bada c8 9 0 c 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 bae3 bb 0 0 c 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 bb47 3c 0 0 c 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 b896 86 7 0 18 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 35971 44 8 0 8 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 b974 50 d 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 b97a 46 7 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 b981 3e 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 938e 153 d 0 18 0 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 939a 143 1 0 18 4 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 56 - ^ =
+STACK WIN 4 939b 141 0 0 18 8 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 56 - ^ =
+STACK WIN 4 9402 1d 0 0 18 c 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 56 - ^ =
+STACK WIN 4 bb76 6f c 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 bb82 5f 0 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 b905 1f 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 945c 73 8 0 18 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 9464 67 0 0 18 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 110f5 f3 e 0 c 0 64 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 11102 e2 1 0 c 4 64 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 11103 e0 0 0 c 8 64 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 31f31 25a 9 0 4 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 31f3a 11e 0 0 4 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 84 - ^ =
+STACK WIN 4 31f73 d3 0 0 4 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 84 - ^ =
+STACK WIN 4 31f7a cb 0 0 4 c 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 84 - ^ =
+STACK WIN 4 5c8e9 61 11 0 34 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5c8ef 57 b 0 34 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 5c8f3 52 7 0 34 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 5c8fa 4a 0 0 34 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 5c94f 258 17 0 10 8 1b8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5cbad 1 0 0 10 8 1b8 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5cbc1 2a4 22 0 10 0 c0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5cbd2 28a 11 0 10 4 c0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 200 - ^ =
+STACK WIN 4 5cbd6 285 d 0 10 8 c0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 200 - ^ =
+STACK WIN 4 5cbe3 277 0 0 10 c c0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 200 - ^ =
+STACK WIN 4 5cf6b 163 c 0 20 8 40 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5d0d4 1 0 0 20 8 40 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5d0e9 267 f 0 c 8 d8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5d2ff 39 0 0 c 8 d8 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5d371 123 11 0 8 0 50 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5d382 109 0 0 8 4 50 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5d3bb cb 0 0 8 8 50 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 314d5 151 9 0 8 0 64 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 314de d0 0 0 8 4 64 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 108 - ^ =
+STACK WIN 4 31513 89 0 0 8 8 64 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 108 - ^ =
+STACK WIN 4 3151a 81 0 0 8 c 64 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 108 - ^ =
+STACK WIN 4 b74c ba 9 0 4 0 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 b755 ad 0 0 4 4 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 b77c 79 0 0 4 8 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 137b1 23 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 31eab 1d 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1f72e 537 f 0 14 8 ac 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1f951 3c 0 0 14 8 ac 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5d499 25 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 12782 20 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1153c 22 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 35eae 72 8 0 14 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 35ee1 2d 0 0 14 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 35ee2 2b 0 0 14 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 21261 1a 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3565b 1b 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 35e8f 1a 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5d4c3 1b 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 21950 36 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5d4e3 33 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 10978 109 c 0 8 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3d377 4 0 0 8 8 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5d539 44d f 0 20 8 b0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5d93e 4d 0 0 20 8 b0 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 284bd 53 8 0 14 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 284c5 33 0 0 14 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5d9a1 3a 6 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5d9a7 30 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5d9b9 14 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2879d 55 d 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 287aa 44 0 0 8 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5d9e0 4b 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5da30 85 17 0 0 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5da4a 5c 0 0 0 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 10760 424 8 0 1c 0 58 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 10788 3c2 0 0 1c 4 58 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1078c 3bd 0 0 1c 8 58 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3719a 9f 10 0 20 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 371a5 7a 5 0 20 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 371a6 78 4 0 20 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 371aa 73 0 0 20 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 5dadd 73 8 0 8 0 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5db0a 42 0 0 8 4 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5db13 23 0 0 8 8 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5db55 bc a 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5db5d b0 2 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 5db5e ae 1 0 8 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 5db5f ac 0 0 8 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 5dc16 23e c 0 24 8 60 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5de3f 1a 0 0 24 8 60 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5de71 198 c 0 1c 8 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5e00f 1 0 0 1c 8 3c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 285c6 2c4 c 0 38 8 8c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3d7a4 10 0 0 38 8 8c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1a24 34 5 0 1c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 21982 446 17 0 c 8 114 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3d9cf 10 0 0 c 8 114 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5e021 292 9 0 28 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5e02a 266 0 0 28 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5e089 1f5 0 0 28 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 27bdb 1c8d 17 0 38 8 6bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3e895 11 0 0 38 8 6bc 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3eadf ab 0 0 38 8 6bc 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 36c3c f7e 17 0 18 8 3fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3f743 134 0 0 18 8 3fc 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 27613 d49 17 0 24 8 3c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3ffbd 3e 0 0 24 8 3c4 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 27b32 6d c 0 18 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 27b99 1d 0 0 18 8 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2005f 89 c 0 18 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 200d1 1d 0 0 18 8 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5e307 b8 a 0 18 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5e310 ab 1 0 18 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 32 - ^ =
+STACK WIN 4 5e311 a9 0 0 18 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 32 - ^ =
+STACK WIN 4 5e34f 5f 0 0 18 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 32 - ^ =
+STACK WIN 4 286ee 57 8 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 286f6 4b 0 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2f873 22 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5e3c4 54 8 0 18 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5e3cc 48 0 0 18 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5e41d 8a 1a 0 10 0 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5e433 6b 4 0 10 4 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 48 - ^ =
+STACK WIN 4 5e437 66 0 0 10 8 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 48 - ^ =
+STACK WIN 4 5e446 25 0 0 10 c 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 48 - ^ =
+STACK WIN 4 5e4ac 83 1a 0 10 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5e4c2 64 4 0 10 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ =
+STACK WIN 4 5e4c6 5f 0 0 10 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ =
+STACK WIN 4 5e4d5 25 0 0 10 c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ =
+STACK WIN 4 5e534 8e 10 0 10 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5e53d 81 7 0 10 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5e544 79 0 0 10 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5e5c7 8e 10 0 10 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5e5d0 81 7 0 10 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5e5d7 79 0 0 10 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5e65a 11 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 fd2d 17d c 0 8 8 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 40019 e 0 0 8 8 2c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 123b9 319 c 0 c 8 34 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 401f7 e 0 0 c 8 34 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 ff19 d2 c 0 4 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 40258 e 0 0 4 8 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 34cb9 8b c 0 4 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 4029c e 0 0 4 8 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 fe82 b1 c 0 4 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 402de e 0 0 4 8 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 34da1 f6 c 0 4 8 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 40327 e 0 0 4 8 2c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 36772 e9 c 0 4 8 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 403bd e 0 0 4 8 2c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 fc2f 11b c 0 4 8 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 40414 e 0 0 4 8 28 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 4043c e 0 0 4 8 28 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5e670 11 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5e686 15 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5e6a0 15 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5e6ba b 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5e6ca b 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 310f2 1c6 e 0 4 0 18c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 310fe 1b6 2 0 4 4 18c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 404 - ^ =
+STACK WIN 4 310ff 1b4 1 0 4 8 18c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 404 - ^ =
+STACK WIN 4 31100 1b2 0 0 4 c 18c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 404 - ^ =
+STACK WIN 4 9a72 7d c 0 14 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 404b7 e 0 0 14 8 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 9b02 82 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 9b18 5e 0 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 9b1f 56 0 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1a5d 6e d 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1a63 64 7 0 14 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1a6a 5c 0 0 14 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 b9a0 32 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2b13f 33 9 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2b148 26 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5e6da 33 9 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5e6e3 26 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 355bc 2b 6 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 355c2 21 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5e712 29 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5e740 29 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5e76e 29 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5e79c 29 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1f992 16f c 0 4 0 184 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1f99e 15f 0 0 4 4 184 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1f9ac 141 0 0 4 8 184 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5e7ca 34 5 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5e803 28 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 9a51 1c 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 9ae4 19 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1ad0 1c 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 b9d1 19 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2e18c aa 7 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2e193 9f 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2bdb5 8b 6 0 8 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1d07e 8 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 365f6 b 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 3594f 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 17443 11 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 934b d6 e 0 0 0 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 9359 c6 0 0 0 4 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 177c7 96 0 0 0 8 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 b5c3 409 19 0 c 0 420 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 b5d7 3ec 5 0 c 4 420 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1064 - ^ =
+STACK WIN 4 b5d8 3ea 4 0 c 8 420 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1064 - ^ =
+STACK WIN 4 b5dc 3e5 0 0 c c 420 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1064 - ^ =
+STACK WIN 4 5e830 4d 6 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5e836 43 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 365a5 2e 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 353ce 29 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 38ae7 3d 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 34e64 18 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 35406 36 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 30d74 8b b 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 30d7a 81 5 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 30d7e 7c 1 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 30d7f 7a 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 baa1 6c a 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 baa7 62 4 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 baab 5d 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 be01 3e c 0 8 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 407a9 4 0 0 8 8 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 10111 65 c 0 c 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 407c5 4 0 0 c 8 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 34d41 5a c 0 8 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 407e1 4 0 0 8 8 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 bdb6 3e c 0 4 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 407fd 4 0 0 4 8 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 b9ef 6c c 0 c 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 40817 4 0 0 c 8 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 10f32 39 c 0 8 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 40833 4 0 0 8 8 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 9a09 3b c 0 4 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 4084f 4 0 0 4 8 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 325bc f6 c 0 4 8 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 40892 e 0 0 4 8 2c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5e882 11 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 12bb6 69 1d 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 12bd3 48 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 10ef8 22 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5e898 2c 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5e8c9 c 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5e8da c 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5e8eb 57 9 0 c 0 40 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5e8f4 4a 0 0 c 4 40 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5e947 6f 6 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5e94d 65 0 0 14 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5e976 b 0 0 14 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5e9bb 1b 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 abc1 d 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5e9db c 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3611e c 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5e9ec 15 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5ea06 15 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5ea20 100 9 0 8 0 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5ea29 f3 0 0 8 4 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5ea9d 74 0 0 8 8 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 39469 2b 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5eb25 2e 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5eb58 97 8 0 14 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5eba8 43 0 0 14 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2cdd8 5b 8 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2ccdc 122 8 0 10 0 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2cd12 dd 0 0 10 4 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2cd13 db 0 0 10 8 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2cc8b 66 8 0 10 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2cc93 5a 0 0 10 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 34932 a4 f 0 c 0 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3493b 97 6 0 c 4 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 34941 90 0 0 c 8 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 34976 5d 0 0 c c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 5ebf4 55 a 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5ebfd 48 1 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5ebfe 46 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5ec4e 1e 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 34b69 1a 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5ec71 3a 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 349d8 29d c 0 20 8 64 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 40a26 16 0 0 20 8 64 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2f7a0 191 c 0 1c 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2f7ac 181 0 0 1c 4 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 2f7b9 12c 0 0 1c 8 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 2f7ca 118 0 0 1c c 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 34b8f 25 5 0 1c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 abde 58 d 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 abe4 4e 7 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 abeb 46 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 c170 29 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 11296 24 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1129c 1a 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5ecb0 91 8 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5ecfc 41 0 0 4 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5ed46 8c 8 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5ed8d 41 0 0 4 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5edd7 6a 7 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5eddd 60 1 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 5edde 5e 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 5ee15 1d 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 e477 a3 c 0 4 8 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 40b63 e 0 0 4 8 2c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1fcff 64 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 e4b9 26a 17 0 10 8 46c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 40c62 17 0 0 10 8 46c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 111da 31 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 ae65 4a c 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 ae6b 21 6 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 ae71 1a 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1fb26 52 14 0 10 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5ee46 98 16 0 10 0 120 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 9f81 31 7 0 4 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5eee3 8 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5eef0 3b 5 0 1c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 14c3c 1d2 1f 0 c 0 238 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 14c50 1b5 b 0 c 4 238 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 576 - ^ =
+STACK WIN 4 14c5a 1aa 1 0 c 8 238 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 576 - ^ =
+STACK WIN 4 14c5b 1a8 0 0 c c 238 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 576 - ^ =
+STACK WIN 4 1af1 1fe c 0 c 8 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1c8c e 0 0 c 8 44 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5ef47 9a e 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5ef53 8a 2 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 5ef54 88 1 0 8 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 5ef55 86 0 0 8 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 b3d5 146 c 0 c 8 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 40cf3 e 0 0 c 8 38 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 40d2a e 0 0 c 8 38 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 b4cf cc 9 0 c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 b4d8 bf 0 0 c 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 b503 86 0 0 c 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 e43d 34 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5efe6 51 6 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5efec 47 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1fcc1 39 6 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1fcc7 2f 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 ada0 76 9 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 ada8 6a 1 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 ada9 68 0 0 8 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 12ade 106 1a 0 4 0 130 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 12aef 27 9 0 4 4 130 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 12af8 1d 0 0 4 8 130 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 be89 b2 c 0 c 8 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 40d78 e 0 0 c 8 30 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 35f78 b6 c 0 10 8 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 40da4 e 0 0 10 8 30 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 9fb5 5f c 0 8 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 40dd0 e 0 0 8 8 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 bc69 5f c 0 8 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 40e00 e 0 0 8 8 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5f03c 1ce c 0 c 8 50 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5f1bf e 0 0 c 8 50 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5f229 203 c 0 10 8 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5f3e0 e 0 0 10 8 54 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2e000 136 c 0 14 8 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 40e66 e 0 0 14 8 38 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 ac88 b6 c 0 10 8 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 40e92 e 0 0 10 8 30 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5f449 1cb c 0 c 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5f5c9 e 0 0 c 8 4c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5f631 130 c 0 14 8 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5f72a e 0 0 14 8 38 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 ae4b 15 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1d4f 23 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 b6a1 31 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1d77 9a b 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1d81 8c 1 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 1d82 8a 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 1dcf 3c 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 3145b 88 d 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 31463 7c 5 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 31464 7a 4 0 8 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 31468 75 0 0 8 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 1269f 52 8 0 4 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 126a7 46 0 0 4 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5f781 db c 0 c 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5f78d cb 0 0 c 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5f7e8 64 0 0 c 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 313ec d5 e 0 10 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 313fa c3 0 0 10 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 31439 78 0 0 10 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5f88a 80 8 0 14 0 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5f90f 13f c 0 18 8 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5f9fa 4 0 0 18 8 28 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5fa2d 1e 0 0 18 8 28 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 312e5 119 c 0 1c 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 40faa 4 0 0 1c 8 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 40fe6 4 0 0 1c 8 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2c664 30b 8 0 8 0 50 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2c686 2db 0 0 8 4 50 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2c6b1 2ad 0 0 8 8 50 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2f0d4 295 12 0 20 0 5c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2f0e0 285 6 0 20 4 5c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 100 - ^ =
+STACK WIN 4 2f0e5 27f 1 0 20 8 5c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 100 - ^ =
+STACK WIN 4 2f0e6 27d 0 0 20 c 5c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 100 - ^ =
+STACK WIN 4 5fa85 f5 11 0 1c 0 40 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5fa8e e8 8 0 1c 4 40 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 72 - ^ =
+STACK WIN 4 5fa8f e6 7 0 1c 8 40 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 72 - ^ =
+STACK WIN 4 5fa96 de 0 0 1c c 40 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 72 - ^ =
+STACK WIN 4 5fb7f a1 c 0 1c 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5fc02 9 0 0 1c 8 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5fc39 36 7 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5fc51 1a 0 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5fc74 72 8 0 20 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5fc7c 66 0 0 20 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5fceb de b 0 1c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5fcf4 d1 2 0 1c 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 5fcf5 cf 1 0 1c 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 5fcf6 cd 0 0 1c c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 5fdce 6e 8 0 1c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5fdd6 62 0 0 1c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5fe41 46 8 0 4 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5fe8c 88 b 0 8 0 8c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5fed6 2f 0 0 8 4 8c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5ff19 60 b 0 8 0 8c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5ff7e 41 9 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5ff87 25 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5ffc4 41 9 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 5ffcd 25 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6000a 60 b 0 8 0 8c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6006f 5e 9 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6007b 4e 0 0 4 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6008a 3d 0 0 4 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 600d2 2f8 c 0 10 0 34 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 600db 2eb 3 0 10 4 34 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 60 - ^ =
+STACK WIN 4 600de 2e7 0 0 10 8 34 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 60 - ^ =
+STACK WIN 4 6013a 28a 0 0 10 c 34 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 60 - ^ =
+STACK WIN 4 f182 110 1b 0 8 0 654 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 f193 f6 a 0 8 4 654 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 f19d eb 0 0 8 8 654 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 31db9 55 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 31ddd 2a 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 ad29 4d 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 ad46 2a 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 ad7b 24 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 b2d0 3aa 18 0 4 0 480 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 b2e1 37f 7 0 4 4 480 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1160 - ^ =
+STACK WIN 4 b2e7 378 1 0 4 8 480 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1160 - ^ =
+STACK WIN 4 b2e8 376 0 0 4 c 480 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1160 - ^ =
+STACK WIN 4 112d5 1d5 c 0 c 8 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 11419 21 0 0 c 8 38 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 359b7 29d 26 0 10 0 ec 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 359cf 27c e 0 10 4 ec 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 244 - ^ =
+STACK WIN 4 359dc 26e 1 0 10 8 ec 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 244 - ^ =
+STACK WIN 4 359dd 26c 0 0 10 c ec 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 244 - ^ =
+STACK WIN 4 301af 196 c 0 14 0 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 301bb 186 0 0 14 4 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 76 - ^ =
+STACK WIN 4 301e5 152 0 0 14 8 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 76 - ^ =
+STACK WIN 4 12803 1c9 c 0 10 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1280f 1b9 0 0 10 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 84 - ^ =
+STACK WIN 4 12839 185 0 0 10 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 84 - ^ =
+STACK WIN 4 1283d 180 0 0 10 c 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 84 - ^ =
+STACK WIN 4 f9e5 37d c 0 20 8 6c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 4171b 4 0 0 20 8 6c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 41748 48 0 0 20 8 6c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2c2d3 8f e 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2c2dc 7a 5 0 8 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 2c2dd 78 4 0 8 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 2c2e1 73 0 0 8 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 603cf bc 1c 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 603e3 91 8 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ =
+STACK WIN 4 603ea 89 1 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ =
+STACK WIN 4 603eb 87 0 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ =
+STACK WIN 4 60499 35e 17 0 8 8 274 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 607cb 30 0 0 8 8 274 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 60811 e9 1c 0 14 0 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 60822 cf b 0 14 4 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 52 - ^ =
+STACK WIN 4 60826 ca 7 0 14 8 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 52 - ^ =
+STACK WIN 4 6082d c2 0 0 14 c 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 52 - ^ =
+STACK WIN 4 14eea 6e 8 0 8 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 212f1 6e 8 0 8 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 21363 24 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 214e3 2b 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 217ea 213 a 0 18 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 217f3 206 1 0 18 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 217f4 204 0 0 18 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 30789 16 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 608ff e9 9 0 10 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 60908 dc 0 0 10 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 302ed 36 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3039b 33 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 21ba5 1d5 c 0 20 8 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 418d1 3f 0 0 20 8 54 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 609ed 5f 7 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 60a02 46 0 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 60a51 55 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 35dca 172 11 0 8 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 35dd6 162 5 0 8 4 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 35ddb 15c 0 0 8 8 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 35e0c 11d 0 0 8 c 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 a427 40 7 0 4 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2fa46 42 8 0 4 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2fa4e 36 0 0 4 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1e0c7 19e 31 0 10 0 148 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1e0df 17d 19 0 10 4 148 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 336 - ^ =
+STACK WIN 4 1e0e9 172 f 0 10 8 148 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 336 - ^ =
+STACK WIN 4 1e0f8 162 0 0 10 c 148 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 336 - ^ =
+STACK WIN 4 35340 bd f 0 4 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3534e a6 1 0 4 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ =
+STACK WIN 4 3534f a4 0 0 4 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ =
+STACK WIN 4 35370 e 0 0 4 c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ =
+STACK WIN 4 60aab 44 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 392b5 27 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 60af4 23 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 60b1c 3f 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 60b60 a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 60b6f 23 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 60b97 23 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 60bbf f 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 2f3a4 86 8 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2f3aa 7c 2 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 2f3ab 7a 1 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 2f3ac 78 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 1a1cf 35 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1500c 90 e 0 0 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1501a 7b 0 0 0 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1ac85 28 0 0 0 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1930f 29e 1a 0 1c 0 248 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 19376 228 0 0 1c 4 248 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 19377 226 0 0 1c 8 248 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 16f8e 11 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2dfa0 41 6 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 60bd3 95 7 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 60bd9 8b 1 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 60bda 87 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 309e1 5f 12 0 c 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 309f3 3a 0 0 c 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1cd34 82 17 0 4 8 e0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 41b32 7 0 0 4 8 e0 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1e16 35 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1ae17 4a 9 0 8 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1ae20 3d 0 0 8 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1e50 97 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1eee 2bc c 0 4 8 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 21af 7 0 0 4 8 28 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 12f1d 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 16f83 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1df77 23 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 12f08 10 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1cf5b b6 9 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1cf64 ab 0 0 0 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 14af2 1d1 9 0 c 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 14afb 1c4 0 0 c 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ =
+STACK WIN 4 14b23 192 0 0 c 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ =
+STACK WIN 4 14b42 177 0 0 c c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ =
+STACK WIN 4 33478 b4 10 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 33481 a7 7 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 33488 9f 0 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 f0f4 a5 11 0 c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 f105 90 0 0 c 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 f132 59 0 0 c 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 101be 59 9 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 101c7 4c 0 0 8 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 329d9 159 15 0 c 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 329e2 14c c 0 c 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ =
+STACK WIN 4 329e3 14a b 0 c 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ =
+STACK WIN 4 329ee 13e 0 0 c c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ =
+STACK WIN 4 305f6 6d 9 0 c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 305ff 48 0 0 c 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 9920 a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 60c75 30 8 0 4 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 21cc 3c 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 220f 10c 16 0 14 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 221a fd b 0 14 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 221e f8 7 0 14 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 2225 f0 0 0 14 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 60caa 49 8 0 8 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 60cf8 49 8 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 60d00 3d 0 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 60d46 e 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 ae2a 1c 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 60d58 aa 9 0 10 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 60d61 9d 0 0 10 4 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 60dbf 29 0 0 10 8 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 60e13 61 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 9e01 6f c 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 41c56 4 0 0 8 8 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3593f b 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 9e79 73 c 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 41c70 4 0 0 8 8 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 bf9d b 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 bccf 13 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 32259 57 c 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 41c8a 4 0 0 8 8 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 a5dc 5d c 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 41ca4 4 0 0 8 8 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2c8ed 62 13 0 8 0 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 60e79 6a 15 0 8 0 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 60e8a 50 4 0 8 4 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 60e8e 4b 0 0 8 8 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 60ee8 35 6 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 60f22 141 19 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 60f36 129 5 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 60f37 127 4 0 c 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 60f3b 122 0 0 c c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 352d9 68 8 0 14 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 21765 48 8 0 c 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 61068 43 9 0 c 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 61071 36 0 0 c 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 303d0 72 f 0 c 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 303de 60 1 0 c 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ =
+STACK WIN 4 303df 5c 0 0 c 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ =
+STACK WIN 4 303e9 30 0 0 c c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ =
+STACK WIN 4 12c23 13f c 0 4 8 60 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 41dcc 10 0 0 4 8 60 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 610b0 2b 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 610e0 36 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6111b 35 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 61155 2c 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 61186 35 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 611c0 45 8 0 8 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6120a 12b 9 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 61212 11f 1 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 61213 11d 0 0 c 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 15199 40 6 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1519f 36 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 194dd 314 b 0 4 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 194e6 307 2 0 4 4 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 194e7 305 1 0 4 8 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 194e8 303 0 0 4 c 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 19805 8b9 26 0 18 0 1d8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1981c 899 f 0 18 4 1d8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 480 - ^ =
+STACK WIN 4 1981d 897 e 0 18 8 1d8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 480 - ^ =
+STACK WIN 4 1982b 888 0 0 18 c 1d8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 480 - ^ =
+STACK WIN 4 19513 218e 17 0 30 8 a18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 43025 4 0 0 30 8 a18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1e017 2eb 0 0 30 8 a18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2332 30 5 0 28 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 12cb0 e7 a 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 12cb6 dd 4 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 12cba d8 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 12d56 44 9 0 4 0 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 12d5f 37 0 0 4 4 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 37945 44 9 0 4 0 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3794e 37 0 0 4 4 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2c338 91 c 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2c341 84 3 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 2c344 80 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 2c373 33 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 61351 17 5 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1ddd6 33f f 0 30 8 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 43374 14 0 0 30 8 a8 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 434b2 17 0 0 30 8 a8 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 434e5 60 0 0 30 8 a8 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2367 30 5 0 28 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6136d ec b 0 8 0 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 61376 df 2 0 8 4 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 92 - ^ =
+STACK WIN 4 61377 dd 1 0 8 8 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 92 - ^ =
+STACK WIN 4 61378 db 0 0 8 c 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 92 - ^ =
+STACK WIN 4 6147e 2fa f 0 8 8 b4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 61723 e 0 0 8 8 b4 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3965a 77 c 0 4 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 39666 67 0 0 4 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 395d8 57 c 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 395e4 47 0 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2c1e7 127 c 0 c 8 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 435d2 e 0 0 c 8 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 12f89 ac 9 0 8 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 12f92 9f 0 0 8 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ =
+STACK WIN 4 12fa9 7d 0 0 8 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ =
+STACK WIN 4 12faa 7b 0 0 8 c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ =
+STACK WIN 4 132ee 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 61799 148 c 0 c 8 34 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 617fd e 0 0 c 8 34 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 92ea 6d c 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 92f0 63 6 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 92f6 5c 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2470 32 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 16fb4 4f c 0 4 8 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 436ca 11 0 0 4 8 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 61901 2d 6 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 e0df 33 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 e0e5 29 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 176db 28 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 61933 24 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6195c 24 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 30445 1c1 e 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 30450 1b2 3 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 30453 1ae 0 0 8 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 3047d 17d 0 0 8 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 3053e 73 10 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 30544 69 a 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 30545 67 9 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 3054e 5d 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 e275 3c7 c 0 c 8 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 437f5 10 0 0 c 8 54 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 438be 4a 0 0 c 8 54 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 df9e f2 13 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 dfac db 5 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ =
+STACK WIN 4 dfb0 d6 1 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ =
+STACK WIN 4 dfb1 d4 0 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ =
+STACK WIN 4 31d8e f 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 e074 67 8 0 4 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 e07c 5b 0 0 4 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 114f8 5c 7 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1a2ce 6aa 17 0 34 8 2d0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1a834 36 0 0 34 8 2d0 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 9ef1 1d 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 b829 28 6 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 b82f 1e 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 13140 b3 9 0 c 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 13149 a6 0 0 c 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2c05e 25 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 10086 a7 f 0 10 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1008f 9a 6 0 10 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 10095 93 0 0 10 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2e30f b3 9 0 c 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2e318 a6 0 0 c 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 bfad 29 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 e8b7 a4 f 0 c 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 e8c0 97 6 0 c 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 e8c6 90 0 0 c 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 e995 b3 9 0 c 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 e99e a6 0 0 c 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 24a7 25 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2540 e6 c 0 c 8 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2610 b 0 0 c 8 44 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 36696 e9 c 0 10 8 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 36759 b 0 0 10 8 44 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 952a 188 c 0 14 8 74 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 951a b 0 0 14 8 74 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 239c 98 c 0 8 8 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2432 b 0 0 8 8 3c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2fb52 72 8 0 c 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 61985 72 8 0 c 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 619fc 6b c 0 c 8 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 61a61 b 0 0 c 8 2c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 95f9 93 f 0 18 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 9600 88 8 0 18 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 9604 83 4 0 18 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 9608 7e 0 0 18 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 2cc09 25 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 a6a9 ae b 0 10 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 a6b2 a1 2 0 10 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ =
+STACK WIN 4 a6b3 9f 1 0 10 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ =
+STACK WIN 4 a6b4 9d 0 0 10 c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ =
+STACK WIN 4 1320c 6f c 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 13218 5f 0 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 12e1d 6d 8 0 10 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 12e25 61 0 0 10 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2ca47 6f c 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2ca53 5f 0 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 e93f 6a 8 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 e947 5e 0 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 ea1b 6f c 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 ea27 5f 0 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 a05d 1c 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2442 13 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 61a81 6a 8 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 61a89 5e 0 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 61af0 6f c 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 61afc 5f 0 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 308ad 6d 8 0 10 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 308b5 61 0 0 10 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 33609 19f 16 0 1c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 33614 190 b 0 1c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 33615 18e a 0 1c 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 3361f 183 0 0 1c c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 61b64 39 6 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 61b6a 2f 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1746c 23 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 17499 ef 15 0 0 0 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 174a6 e0 8 0 0 4 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 52 - ^ =
+STACK WIN 4 174a7 de 7 0 0 8 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 52 - ^ =
+STACK WIN 4 174ae d6 0 0 0 c 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 52 - ^ =
+STACK WIN 4 f1fa 76 18 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 17459 10e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 43ee5 e5 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1efce 12 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 61ba2 162 11 0 4 0 d4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 61bb3 148 0 0 4 4 d4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 220 - ^ =
+STACK WIN 4 61bec 107 0 0 4 8 d4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 220 - ^ =
+STACK WIN 4 61bed 103 0 0 4 c d4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 220 - ^ =
+STACK WIN 4 61d3f 2b9 1f 0 c 0 26c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 61d53 29c b 0 c 4 26c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 628 - ^ =
+STACK WIN 4 61d5e 290 0 0 c 8 26c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 628 - ^ =
+STACK WIN 4 61dee 1c7 0 0 c c 26c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 628 - ^ =
+STACK WIN 4 61ffd 408 1a 0 c 0 280 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 62017 3e5 0 0 c 4 280 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 620a4 353 0 0 c 8 280 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6240a 64 9 0 8 0 58 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 62413 3d 0 0 8 4 58 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 62473 42 8 0 4 0 40 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 624ba 2be 27 0 c 0 22c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 624d1 29e 10 0 c 4 22c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 564 - ^ =
+STACK WIN 4 624d4 29a d 0 c 8 22c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 564 - ^ =
+STACK WIN 4 624e1 28c 0 0 c c 22c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 564 - ^ =
+STACK WIN 4 17f41 141 13 0 8 0 228 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 17f52 127 2 0 8 4 228 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 560 - ^ =
+STACK WIN 4 17f53 125 1 0 8 8 228 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 560 - ^ =
+STACK WIN 4 17f54 123 0 0 8 c 228 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 560 - ^ =
+STACK WIN 4 6277d 59 b 0 18 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 62788 4a 0 0 18 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 627db 19f b 0 1c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 627e4 192 2 0 1c 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 627e5 190 1 0 1c 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 627e6 18e 0 0 1c c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 6297f 59 b 0 18 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6298a 4a 0 0 18 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1ebb1 4ac 21 0 4 0 2c8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1ebc2 492 10 0 4 4 2c8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 720 - ^ =
+STACK WIN 4 1ebc3 490 f 0 4 8 2c8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 720 - ^ =
+STACK WIN 4 1ebd2 480 0 0 4 c 2c8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 720 - ^ =
+STACK WIN 4 629dd 4e 9 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 629e6 41 0 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 629f4 30 0 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 629f5 2e 0 0 10 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 12980 8e c 0 c 8 34 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 129f9 b 0 0 c 8 34 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2fc00 5f 12 0 c 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2fc12 3a 0 0 c 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 c108 4b 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 a793 44 8 0 4 0 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 62a30 36 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 62a6b 35 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 c058 9f c 0 4 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 44733 c 0 0 4 8 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1ce03 35 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 21435 38 8 0 8 0 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 9728 a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 3970d 26 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 62aa5 26 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 39732 28 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 328f7 28 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 12a09 58 16 0 10 0 50 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 12a1f 3e 0 0 10 4 50 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 12a4b 6 0 0 10 8 50 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 62ad0 7a 9 0 8 0 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 62ad9 6d 0 0 8 4 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 62af6 4b 0 0 8 8 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 4479d a2 15 0 4 0 21c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 447ae 88 4 0 4 4 21c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 447b2 81 0 0 4 8 21c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 62b4f a8 c 0 4 8 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 62be6 4 0 0 4 8 54 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 62c19 7e e 0 4 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 62c25 69 2 0 4 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 62c26 67 1 0 4 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 62c27 65 0 0 4 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 12d9f 10b c 0 0 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 448d9 a 0 0 0 8 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 9740 4f 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 9bc5 a7 7 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 9bcb 9d 1 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 9bcc 9b 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 136d7 cc c 0 4 8 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 13771 7 0 0 4 8 28 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 62c9c 68 8 0 14 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 62d09 3a 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2fa7a 53 9 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2fa83 46 0 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2c0e6 6f c 0 c 8 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2c151 14 0 0 c 8 30 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2c082 71 c 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2c08e 1e 0 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 62d48 2f 6 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 62d4e 25 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2ffcf b8 8 0 14 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2ffe2 97 0 0 14 4 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2fe84 73 7 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2fe8b 68 0 0 4 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2ff16 6f 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2fed7 40 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 32992 13 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 211cd 86 7 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 211d3 6d 1 0 18 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 211d4 6b 0 0 18 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2b086 82 7 0 14 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2b08d 68 0 0 14 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2bff8 39 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 30062 42 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 30a62 29 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2c02c 28 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2cba2 8e a 0 0 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2cbaa 6e 2 0 0 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 2cbab 6c 1 0 0 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 2cbac 6a 0 0 0 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 2bfd6 23 6 0 0 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2117d 56 9 0 1c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 21186 49 0 0 1c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 12723 43 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 21130 4d 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 62d7c 42 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2b26e 57 5 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 62dc3 28 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 62df0 3f 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 62e34 29 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 10637 22 5 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 c1e0 e 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 62e62 97d 17 0 4 8 684 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 63421 4 0 0 4 8 684 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6362b 4 0 0 4 8 684 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 636d3 4 0 0 4 8 684 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2ffaf 1b 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 63999 a9 b 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 639a2 9c 2 0 8 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 639a3 9a 1 0 8 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 639a4 98 0 0 8 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 63a47 92 a 0 8 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 63a50 85 1 0 8 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 63a51 83 0 0 8 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 63ade 115 c 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 63ae5 10a 5 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 63ae6 108 4 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 63aea 103 0 0 c c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 63bf8 127 d 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 63bfe 11d 7 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 63bff 11b 6 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 63c05 114 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 63d24 3b 6 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 63d2a 31 0 0 14 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 63d3d 1d 0 0 14 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 63d64 b4 b 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 63d6d a7 2 0 8 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 63d6e a5 1 0 8 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 63d6f a3 0 0 8 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 63e1d cd 11 0 8 0 230 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 63e2e b3 0 0 8 4 230 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 63eef 9c a 0 8 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 63ef8 8f 1 0 8 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 63ef9 8d 0 0 8 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 63f90 cd 11 0 8 0 230 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 63fa1 b3 0 0 8 4 230 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 64062 af b 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6406b a2 2 0 8 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 6406c a0 1 0 8 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 6406d 9e 0 0 8 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 64116 94 a 0 8 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6411f 87 1 0 8 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 64120 85 0 0 8 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 641af b4 b 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 641b8 a7 2 0 8 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 641b9 a5 1 0 8 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 641ba a3 0 0 8 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 64268 df 15 0 8 0 42c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 64279 c5 4 0 8 4 42c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6427d c0 0 0 8 8 42c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6434c 9c a 0 8 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 64355 8f 1 0 8 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 64356 8d 0 0 8 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 643ed d6 15 0 8 0 42c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 643fe bc 4 0 8 4 42c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 64402 b7 0 0 8 8 42c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 644c8 195 c 0 14 8 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6452a e 0 0 14 8 2c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 64679 19e e 0 18 0 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 64685 18e 2 0 18 4 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 92 - ^ =
+STACK WIN 4 64686 18c 1 0 18 8 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 92 - ^ =
+STACK WIN 4 64687 18a 0 0 18 c 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 92 - ^ =
+STACK WIN 4 6481c 37 8 0 c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 64858 2c5 9 0 18 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 64861 2b8 0 0 18 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6489e 24c 0 0 18 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 64b47 83 9 0 8 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 64b50 76 0 0 8 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 64bcf a8 20 0 8 0 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 64be7 87 8 0 8 4 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 176 - ^ =
+STACK WIN 4 64beb 82 4 0 8 8 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 176 - ^ =
+STACK WIN 4 64bef 7d 0 0 8 c a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 176 - ^ =
+STACK WIN 4 64c7c 112 17 0 8 0 11c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 64c93 f2 0 0 8 4 11c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 64cf5 8c 0 0 8 8 11c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 64d93 6b d 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 64da0 5a 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 64dc2 37 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 64e03 22 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 64e2a 156 11 0 4 0 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 64e38 13f 3 0 4 4 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 64e3b 13b 0 0 4 8 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 64f85 c9 7 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 64f8b bf 1 0 14 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 64f8c bd 0 0 14 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 64fba 8e 0 0 14 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 65053 bc 11 0 c 0 10c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 65064 a2 0 0 c 4 10c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 276 - ^ =
+STACK WIN 4 6508f 73 0 0 c 8 10c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 276 - ^ =
+STACK WIN 4 65090 71 0 0 c c 10c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 276 - ^ =
+STACK WIN 4 65114 92 17 0 c 0 118 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6512b 72 0 0 c 4 118 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 651ab 86 b 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 651b6 77 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 651f5 32 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 65236 209 13 0 c 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 65248 1f3 1 0 c 4 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 65249 1f1 0 0 c 8 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 652a3 9b 0 0 c c 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 65444 72 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6544a 68 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6547f 32 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 654bb 72 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 654c1 68 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 654f6 32 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 65532 45 10 0 18 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6553b 38 7 0 18 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 65542 2e 0 0 18 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6557c 146 a 0 c 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 65585 139 1 0 c 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ =
+STACK WIN 4 65586 137 0 0 c 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ =
+STACK WIN 4 655ad 10f 0 0 c c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ =
+STACK WIN 4 656c7 c2 d 0 c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 656d3 b2 1 0 c 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 656d4 b0 0 0 c 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6578e f7 11 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 65799 c4 6 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 6579e be 1 0 8 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 6579f bc 0 0 8 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 6588a 84 9 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 65892 78 1 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 65893 76 0 0 8 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 658aa 5e 0 0 8 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 65913 84 9 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6591b 78 1 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 6591c 76 0 0 8 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 65933 5e 0 0 8 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 6599c b3 15 0 8 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 659a5 a6 c 0 8 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 659b0 9a 1 0 8 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 659b1 98 0 0 8 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 65a54 2a9 d 0 8 0 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 65a5d 29c 4 0 8 4 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 65a61 297 0 0 8 8 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 22128 9e a 0 8 0 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 22131 91 1 0 8 4 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 22132 8f 0 0 8 8 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 65d02 85 9 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 65d0a 79 1 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 65d0b 77 0 0 8 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 65d22 5f 0 0 8 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 65d8c 13 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 65da4 9a 8 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 65dac 8e 0 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 65dc4 74 0 0 8 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 65e43 303 b 0 8 0 48 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 65e4c 2ec 2 0 8 4 48 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 80 - ^ =
+STACK WIN 4 65e4d 2ea 1 0 8 8 48 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 80 - ^ =
+STACK WIN 4 65e4e 2e8 0 0 8 c 48 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 80 - ^ =
+STACK WIN 4 6614b a6 f 0 8 0 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 66159 94 1 0 8 4 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 6615a 92 0 0 8 8 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 6618c 5f 0 0 8 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 661f6 85 9 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 661fe 79 1 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 661ff 77 0 0 8 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 66216 5f 0 0 8 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 66280 d4 10 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6628b c5 5 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 66290 bf 0 0 c 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 66359 6a 5 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6636c 53 0 0 18 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 66370 4e 0 0 18 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 663c8 2ec f 0 8 8 94 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6665c 1c 0 0 8 8 94 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 66682 b 0 0 8 8 94 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6677d ba c 0 c 8 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 66801 3b 0 0 c 8 30 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 66871 bc c 0 c 8 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 66918 1a 0 0 c 8 30 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 66949 ba c 0 c 8 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 669cd 3b 0 0 c 8 30 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 66a41 bc c 0 c 8 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 66ae8 1a 0 0 c 8 30 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 66b19 ba c 0 c 8 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 66b9d 3b 0 0 c 8 30 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 66c11 c3 c 0 c 8 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 66cbf 1a 0 0 c 8 30 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 66cf1 13 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 66d09 19d b 0 c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 66d12 190 2 0 c 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 66d13 18e 1 0 c 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 66d14 18c 0 0 c c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 66eab 93 a 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 66eb3 87 2 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 66eb4 85 1 0 c 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 66eb5 83 0 0 c c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 66f43 71c 17 0 4 8 ec 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 67093 11 0 0 4 8 ec 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 675f4 11 0 0 4 8 ec 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 67695 7a 13 0 8 0 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 67714 114 17 0 8 8 e4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 677e9 11 0 0 8 8 e4 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 67849 145 17 0 8 8 e4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 67941 11 0 0 8 8 e4 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2f609 58 13 0 4 0 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 679a9 53 13 0 4 0 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 67a01 44 7 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 67a4a df 16 0 10 0 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 67a5b c5 5 0 10 4 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 204 - ^ =
+STACK WIN 4 67a5c c3 4 0 10 8 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 204 - ^ =
+STACK WIN 4 67a60 be 0 0 10 c c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 204 - ^ =
+STACK WIN 4 28b87 ad 21 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 28b95 9b 13 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 28ba8 87 0 0 8 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1ae5e 85 15 0 8 0 cc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1ae6f 6b 4 0 8 4 cc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1ae73 66 0 0 8 8 cc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 67b2e 3d 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 67b70 57 c 0 8 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 67b77 4c 5 0 8 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 67b7b 47 1 0 8 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 67b7c 45 0 0 8 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 1143f 60 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 11445 56 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1f5a6 197 11 0 8 0 128 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1f5b7 179 0 0 8 4 128 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1f5ca 15f 0 0 8 8 128 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 132f9 54 c 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 13304 45 1 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 13305 43 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 67bcc 231 f 0 8 8 9c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 67dd6 2c 0 0 8 8 9c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 67e19 17 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 67e35 17e c 0 14 0 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 67e3e 171 3 0 14 4 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 67e41 16d 0 0 14 8 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1146a 90 a 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 11470 86 4 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 11474 81 0 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6802b 8e 9 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 68034 81 0 0 8 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1f26e 432 17 0 c 8 2b4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1f571 50 0 0 c 8 2b4 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 680be 42e c 0 c 8 50 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 68496 4a 0 0 c 8 50 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 13353 406 17 0 c 8 2ac 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1366c 45 0 0 c 8 2ac 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 28c38 1099 17 0 24 8 2e4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 29b93 127 0 0 24 8 2e4 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 68509 78 6 0 24 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6850f 6c 0 0 24 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 68538 3b 0 0 24 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 35bb0 1fe 17 0 c 8 254 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 44db3 55 0 0 c 8 254 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 68586 1fe 17 0 c 8 254 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 68734 55 0 0 c 8 254 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 687a1 2ab 1c 0 14 0 118 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 687bd 286 0 0 14 4 118 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 288 - ^ =
+STACK WIN 4 68828 217 0 0 14 8 118 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 288 - ^ =
+STACK WIN 4 68867 1d7 0 0 14 c 118 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 288 - ^ =
+STACK WIN 4 2cf9b 28d f 0 c 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2cfa8 27c 2 0 c 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 32 - ^ =
+STACK WIN 4 2cfa9 27a 1 0 c 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 32 - ^ =
+STACK WIN 4 2cfaa 278 0 0 c c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 32 - ^ =
+STACK WIN 4 2cf60 23 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 68abf 2ed 11 0 10 0 58 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 68ac8 2e0 8 0 10 4 58 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 96 - ^ =
+STACK WIN 4 68acf 2d8 1 0 10 8 58 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 96 - ^ =
+STACK WIN 4 68ad0 2d6 0 0 10 c 58 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 96 - ^ =
+STACK WIN 4 68db1 10d 9 0 c 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 68dba 100 0 0 c 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 68e39 80 0 0 c 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 68f11 148 8 0 8 0 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 68f3e 115 0 0 8 4 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 68f75 dd 0 0 8 8 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6905d 19 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 357d5 b 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2080d 5f7 11 0 c 0 24c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2081e 5dd 0 0 c 4 24c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2083d 5b0 0 0 c 8 24c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 31b99 1f2 7 0 10 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 31ba0 1e7 0 0 10 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 31bcf 1ac 0 0 10 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 31bd0 1aa 0 0 10 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 20799 e2 e 0 10 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 207a1 d6 6 0 10 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 207a7 cf 0 0 10 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 207d8 7d 0 0 10 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 1fb88 19 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6907b 199 9 0 8 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 69084 18c 0 0 8 4 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 690b9 156 0 0 8 8 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 690ba 154 0 0 8 c 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 69218 17a 9 0 c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 69221 16d 0 0 c 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 692b0 da 0 0 c 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 69395 3de 16 0 8 0 230 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 693a6 3c4 5 0 8 4 230 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 568 - ^ =
+STACK WIN 4 693aa 3bf 1 0 8 8 230 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 568 - ^ =
+STACK WIN 4 693ab 3bd 0 0 8 c 230 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 568 - ^ =
+STACK WIN 4 69778 1b3 9 0 4 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 69781 1a6 0 0 4 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 697b6 170 0 0 4 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 697b7 16e 0 0 4 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 69930 2ca 9 0 4 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 69939 2bd 0 0 4 4 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 69983 271 0 0 4 8 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2e61c 39d a 0 c 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2e625 390 1 0 c 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ =
+STACK WIN 4 2e626 38e 0 0 c 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ =
+STACK WIN 4 2e63e 372 0 0 c c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ =
+STACK WIN 4 20d14 3ab b 0 10 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 20d1d 39e 2 0 10 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 20d1e 39c 1 0 10 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 20d1f 39a 0 0 10 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 2d2af 13d 9 0 8 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2d2b8 130 0 0 8 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ =
+STACK WIN 4 2d2de 106 0 0 8 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ =
+STACK WIN 4 2d2df 104 0 0 8 c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ =
+STACK WIN 4 69bff fd c 0 c 8 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 69ce0 21 0 0 c 8 38 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 69d19 111 c 0 c 8 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 69e0e 21 0 0 c 8 38 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 69e49 fd c 0 c 8 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 69f2a 21 0 0 c 8 38 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 69f61 10f c 0 c 8 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6a054 21 0 0 c 8 38 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6a091 48 8 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6a099 3c 0 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6a0de 1d 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2e8b2 10f c 0 c 8 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 453fe 21 0 0 c 8 38 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6a100 13c c 0 10 8 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6a220 21 0 0 10 8 3c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6a259 fc c 0 8 8 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6a339 21 0 0 8 8 38 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6a371 172 a 0 0 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6a37a 167 1 0 0 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 6a37b 165 0 0 0 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 6a4e8 11 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6a4fe c7 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6a5ca 3e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6a60d a4 10 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6a613 9a a 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 6a614 98 9 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 6a61b 90 2 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 6a6b6 d0 10 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6a6bc c6 a 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 6a6bd c4 9 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 6a6c4 bc 2 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 6a78b 66 8 0 18 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6a7b8 33 0 0 18 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6a7fb 60c e 0 8 0 94 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6a807 5fc 2 0 8 4 94 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 156 - ^ =
+STACK WIN 4 6a808 5fa 1 0 8 8 94 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 156 - ^ =
+STACK WIN 4 6a809 5f8 0 0 8 c 94 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 156 - ^ =
+STACK WIN 4 6aebf 29 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6aeed 2d 8 0 8 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6af1f 55 8 0 c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6af53 1d 0 0 c 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6af79 52 8 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6afad 1a 0 0 8 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6afd0 71 9 0 18 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6afd8 65 1 0 18 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 6afd9 63 0 0 18 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 6aff2 49 0 0 18 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 6b046 41 8 0 18 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6b08c 57 8 0 14 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6b0e8 2e 7 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6b11b 2e 7 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6b14e 35 8 0 10 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6b188 35 8 0 10 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6b1c2 57 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6b21e 3c 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6b25f 1c 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2cb03 69 8 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6b280 72 8 0 c 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2e44a 28 6 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2e450 1e 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6b2f7 28 6 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6b2fd 1e 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2afc9 cc e 0 14 0 70 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2afd6 bb 1 0 14 4 70 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2afd7 b9 0 0 14 8 70 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2ca9f 111 f 0 10 0 78 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2caac 100 2 0 10 4 78 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 128 - ^ =
+STACK WIN 4 2caad fe 1 0 10 8 78 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 128 - ^ =
+STACK WIN 4 2caae fc 0 0 10 c 78 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 128 - ^ =
+STACK WIN 4 6b324 35 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6b35e 29 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6b38c 67 8 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6b394 5b 0 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6b3f8 6f c 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6b404 5f 0 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6b46c 19d c 0 c 8 5c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6b5b5 48 0 0 c 8 5c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6b629 55 8 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6b631 49 0 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6b683 c 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 2146c c 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6b694 a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1301e 22 5 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6b6a3 53 6 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6b6a9 49 0 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 17190 c4 13 0 c 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1719f b1 4 0 c 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 171a2 ad 1 0 c 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 171a3 a9 0 0 c c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 2bf01 c 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1305f c 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6b6fb 23 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 a644 35 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 a675 38 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 300a9 33 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 300af 29 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 967c 12f c 0 10 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 9684 123 4 0 10 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 9688 11e 0 0 10 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6b723 39 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6b729 2f 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 130a6 42 e 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 130ac 38 8 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 130b4 2f 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 15350 124 16 0 14 0 50 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1535e 10d 8 0 14 4 50 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 88 - ^ =
+STACK WIN 4 15362 108 4 0 14 8 50 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 88 - ^ =
+STACK WIN 4 15366 103 0 0 14 c 50 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 88 - ^ =
+STACK WIN 4 6b761 3f 9 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6b76a 32 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1530d 47 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 19aaa 33 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1a9d9 3a 8 0 8 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 15229 170 e 0 10 0 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 15232 163 5 0 10 4 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 64 - ^ =
+STACK WIN 4 15233 15f 4 0 10 8 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 64 - ^ =
+STACK WIN 4 15237 15a 0 0 10 c 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 64 - ^ =
+STACK WIN 4 162db ef b 0 1c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 162e2 e4 4 0 1c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 162e6 df 0 0 1c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 1529b af 8 0 3c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 152a1 a5 2 0 3c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 152a2 a3 1 0 3c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 152a3 a1 0 0 3c c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 1a86f 227 21 0 28 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1a878 21a 18 0 28 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ =
+STACK WIN 4 1a879 216 17 0 28 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ =
+STACK WIN 4 1a890 1fe 0 0 28 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ =
+STACK WIN 4 15921 ab5 45 0 c 0 3dc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 15958 a75 e 0 c 4 3dc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 996 - ^ =
+STACK WIN 4 15965 a67 1 0 c 8 3dc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 996 - ^ =
+STACK WIN 4 15966 a65 0 0 c c 3dc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 996 - ^ =
+STACK WIN 4 1545c 910 17 0 4 8 2e0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 45f23 e 0 0 4 8 2e0 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 11210 83 9 0 c 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 11219 76 0 0 c 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1123b 57 0 0 c 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6b7a5 32f 1d 0 4 0 254 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6b7bd 2c9 5 0 4 4 254 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 604 - ^ =
+STACK WIN 4 6b7be 2c7 4 0 4 8 254 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 604 - ^ =
+STACK WIN 4 6b7c2 2c2 0 0 4 c 254 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 604 - ^ =
+STACK WIN 4 2fe16 84 3e 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2fe54 1f 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 30e9a a7 9 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 30ea1 9c 2 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 30ea2 9a 1 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 30ea3 98 0 0 c c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 2fd92 73 9 0 14 0 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2fd9b 66 0 0 14 4 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2fdb4 2a 0 0 14 8 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6bb0f 51 9 0 14 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6bb17 45 1 0 14 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6bb18 43 0 0 14 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2fd4c 41 8 0 14 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2fd54 35 0 0 14 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 30f21 73 9 0 14 0 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 30f2a 66 0 0 14 4 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 30f43 2a 0 0 14 8 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 38653 18e 2e 0 14 0 e4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 38667 171 1a 0 14 4 e4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 236 - ^ =
+STACK WIN 4 3866b 16c 16 0 14 8 e4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 236 - ^ =
+STACK WIN 4 38681 155 0 0 14 c e4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 236 - ^ =
+STACK WIN 4 3835a 3f 6 0 14 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1612f 113 1f 0 4 0 d8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 16147 f2 7 0 4 4 d8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1614e e8 0 0 4 8 d8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6bb65 38 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6bba2 28 6 0 0 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6bbcf 6b 8 0 4 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6bbd7 5f 0 0 4 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6bc0c 29 0 0 4 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 16763 87 16 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 16772 74 7 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 16778 6d 1 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 16779 6b 0 0 c c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 16602 5b 13 0 4 0 20c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 16613 41 2 0 4 4 20c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 532 - ^ =
+STACK WIN 4 16614 3d 1 0 4 8 20c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 532 - ^ =
+STACK WIN 4 16615 3b 0 0 4 c 20c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 532 - ^ =
+STACK WIN 4 1aa2c ff 13 0 0 0 228 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1aa3d e7 2 0 0 4 228 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 560 - ^ =
+STACK WIN 4 1aa3e e4 1 0 0 8 228 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 560 - ^ =
+STACK WIN 4 1aa3f e0 0 0 0 c 228 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 560 - ^ =
+STACK WIN 4 169ea 5c 9 0 c 0 48 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 169f3 4f 0 0 c 4 48 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1691d 5c 8 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2b335 67 e 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2b33e 5a 5 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 2b33f 57 4 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 2b343 50 0 0 c c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 16473 5f 10 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 16479 47 a 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 1647a 45 9 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 16483 3b 0 0 10 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 1697f 66 7 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 16996 47 0 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1699b 39 0 0 c 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2c59b 87 c 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2c5a6 78 1 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 2c5a7 76 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 2c5be 5a 0 0 c c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 2f70b 90 6 0 1c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2f711 86 0 0 1c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2f737 5f 0 0 1c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2f695 bd 8 0 10 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2f6ca 81 0 0 10 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2f6ce 7b 0 0 10 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1642c 42 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1643c 2d 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 16440 28 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 168bb 52 11 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 168c3 46 9 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 168c4 44 8 0 c 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 168cc 3b 0 0 c c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 16396 91 a 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1639f 5c 1 0 4 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 163a0 5a 0 0 4 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 163bf 3a 0 0 4 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 165e9 13 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 16b75 415 21 0 4 0 4a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 16b8c 3f5 a 0 4 4 4a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1200 - ^ =
+STACK WIN 4 16b95 3eb 1 0 4 8 4a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1200 - ^ =
+STACK WIN 4 16b96 3e9 0 0 4 c 4a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1200 - ^ =
+STACK WIN 4 164cd c4 c 0 0 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 46631 e 0 0 0 8 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2b553 b8 8 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2b55b ac 0 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 2b57d 86 0 0 8 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 2b57e 82 0 0 8 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 16662 f2 b 0 14 0 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1666b e5 2 0 14 4 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 56 - ^ =
+STACK WIN 4 1666c e3 1 0 14 8 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 56 - ^ =
+STACK WIN 4 1666d e1 0 0 14 c 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 56 - ^ =
+STACK WIN 4 16879 b7 f 0 10 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 16884 a8 4 0 10 4 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 16888 a3 0 0 10 8 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 16a5c 79 0 0 10 c 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 16562 8d c 0 8 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 46678 4 0 0 8 8 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 167d7 9a c 0 10 8 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 466a9 4 0 0 10 8 28 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 15120 a1 c 0 c 8 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 466d4 4 0 0 c 8 28 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6bc3f 63 c 0 0 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6bc8a 4 0 0 0 8 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6bcc1 a9 8 0 0 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6bcc9 9f 0 0 0 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6bcf0 77 0 0 0 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2b38d 214 e 0 0 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2b39b 1ff 0 0 0 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ =
+STACK WIN 4 2b3dd 1b6 0 0 0 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ =
+STACK WIN 4 2b3de 1b4 0 0 0 c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ =
+STACK WIN 4 6be06 7f 3 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6be09 7b 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6be41 42 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6be8a 33 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1204d 44 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 12061 1c 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6bec2 70 7 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6bec8 66 1 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6bec9 64 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6bf37 105 b 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6bf3d fb 5 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 6bf3e f9 4 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 6bf42 f4 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 6c041 167 10 0 8 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6c04f 155 2 0 8 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 6c050 153 1 0 8 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 6c051 151 0 0 8 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 6c1ad 165 5 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6c1c9 df 0 0 18 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6c1cd da 0 0 18 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6c317 f8 6 0 24 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6c31d ee 0 0 24 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 6c34d bd 0 0 24 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 6c351 b6 0 0 24 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 6c414 15 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6c42e 16 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6c449 22 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6c470 22 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6c497 9a c 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6c4a2 83 1 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 6c4a3 81 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 6c4d1 52 0 0 c c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 6c536 22 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6c55d 30 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6c592 50 7 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6c598 42 1 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6c599 40 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6c5e7 3e 1a 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6c601 20 0 0 14 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6c62a 17b 15 0 14 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6c639 168 6 0 14 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 6c63e 162 1 0 14 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 6c63f 15e 0 0 14 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 6c7a6 177 d 0 28 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6c7ad 16c 6 0 28 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6c7b3 165 0 0 28 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6c922 177 d 0 28 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6c929 16c 6 0 28 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6c92f 165 0 0 28 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6ca9e 195 10 0 18 0 48 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6caa7 188 7 0 18 4 48 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 80 - ^ =
+STACK WIN 4 6caae 180 0 0 18 8 48 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 80 - ^ =
+STACK WIN 4 6cabd 170 0 0 18 c 48 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 80 - ^ =
+STACK WIN 4 6cc38 198 10 0 18 0 48 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6cc41 18b 7 0 18 4 48 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 80 - ^ =
+STACK WIN 4 6cc48 183 0 0 18 8 48 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 80 - ^ =
+STACK WIN 4 6cc57 173 0 0 18 c 48 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 80 - ^ =
+STACK WIN 4 6cdd5 115c 1b 0 14 0 254 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6cde9 1144 7 0 14 4 254 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 604 - ^ =
+STACK WIN 4 6cded 113f 3 0 14 8 254 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 604 - ^ =
+STACK WIN 4 6cdf0 113b 0 0 14 c 254 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 604 - ^ =
+STACK WIN 4 6df34 115c 1b 0 14 0 274 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6df48 1144 7 0 14 4 274 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 636 - ^ =
+STACK WIN 4 6df4c 113f 3 0 14 8 274 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 636 - ^ =
+STACK WIN 4 6df4f 113b 0 0 14 c 274 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 636 - ^ =
+STACK WIN 4 335b7 1d 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6f093 357 13 0 18 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6f09f 347 7 0 18 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 6f0a2 343 4 0 18 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 6f0a6 33e 0 0 18 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 6f3ef a6 c 0 10 0 f8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6f3fb 96 0 0 10 4 f8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6f49a 104 19 0 8 0 58 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6f4a8 ed b 0 8 4 58 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 96 - ^ =
+STACK WIN 4 6f4a9 eb a 0 8 8 58 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 96 - ^ =
+STACK WIN 4 6f4b3 e0 0 0 8 c 58 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 96 - ^ =
+STACK WIN 4 6f5a3 102 8 0 18 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6f5aa f7 1 0 18 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 6f5ab f5 0 0 18 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 6f602 9d 0 0 18 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 6f6aa c5 1a 0 18 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6f6bc af 8 0 18 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 32 - ^ =
+STACK WIN 4 6f6bd ad 7 0 18 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 32 - ^ =
+STACK WIN 4 6f6c4 a5 0 0 18 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 32 - ^ =
+STACK WIN 4 6f774 1c7 16 0 8 0 220 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6f785 1ad 5 0 8 4 220 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 552 - ^ =
+STACK WIN 4 6f786 1ab 4 0 8 8 220 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 552 - ^ =
+STACK WIN 4 6f78a 1a6 0 0 8 c 220 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 552 - ^ =
+STACK WIN 4 6f949 b 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6f959 12f 7 0 14 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6f97d 107 0 0 14 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6f9f0 92 0 0 14 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6fa8d 22 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6fab4 1f 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6fad8 19e 8 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6fae0 192 0 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6fb1d 153 0 0 8 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6fc7b 61 8 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6fc83 55 0 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6fcdc e9 c 0 0 4 330 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6fdca 66 c 0 4 8 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6fe04 4 0 0 4 8 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 189fc 28 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6fe51 65 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6fe6d 44 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6fe6e 42 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6febb 5f c 0 c 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6ff09 4 0 0 c 8 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6ff39 148 15 0 18 0 ac 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6ff4a 12e 4 0 18 4 ac 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 6ff4e 129 0 0 18 8 ac 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 70086 27 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 700b2 25 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 700dc c0 13 0 8 0 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 700ed a6 2 0 8 4 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 176 - ^ =
+STACK WIN 4 700ee a4 1 0 8 8 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 176 - ^ =
+STACK WIN 4 700ef a2 0 0 8 c a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 176 - ^ =
+STACK WIN 4 701a1 13 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 701b9 13 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 701d1 6f 13 0 4 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 70245 8 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 70252 8 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7025f 149 17 0 10 8 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 70362 4 0 0 10 8 c4 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 703c9 19 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 703e7 19 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 70405 10c 17 0 c 8 c0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 704cb 4 0 0 c 8 c0 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 70531 16 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7054c 16 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 70567 a3 19 0 8 0 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 70578 89 8 0 8 4 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 176 - ^ =
+STACK WIN 4 70579 87 7 0 8 8 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 176 - ^ =
+STACK WIN 4 70580 7f 0 0 8 c a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 176 - ^ =
+STACK WIN 4 7060f 13 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 70627 13 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7063f c6 13 0 c 0 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 70650 ac 2 0 c 4 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 176 - ^ =
+STACK WIN 4 70651 aa 1 0 c 8 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 176 - ^ =
+STACK WIN 4 70652 a8 0 0 c c a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 176 - ^ =
+STACK WIN 4 7070a 16 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 70725 16 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 70740 a8 19 0 8 0 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 70751 8e 8 0 8 4 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 176 - ^ =
+STACK WIN 4 70752 8c 7 0 8 8 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 176 - ^ =
+STACK WIN 4 70759 84 0 0 8 c a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 176 - ^ =
+STACK WIN 4 707ed 13 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 70805 13 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7081d 150 17 0 10 8 c8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 70927 4 0 0 10 8 c8 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 70989 19 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 709a7 19 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 709c5 6f 13 0 4 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1ba6a 111 17 0 c 8 c0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 4677c 4 0 0 c 8 c0 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 70a39 23 9 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 70a42 16 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1ba3c 29 9 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1ba45 1c 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2da09 a0 12 0 c 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2da1a 86 1 0 c 4 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2da1b 84 0 0 c 8 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 70a61 4f c 0 4 8 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 70a99 4 0 0 4 8 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2d9bd 4b c 0 4 8 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 467de 4 0 0 4 8 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 70ad1 75 c 0 8 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 70b3f c 0 0 8 8 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1b355 6e c 0 4 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1b3c1 c 0 0 4 8 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 70b61 11b 1c 0 18 0 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 70b72 101 b 0 18 4 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 176 - ^ =
+STACK WIN 4 70b73 ff a 0 18 8 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 176 - ^ =
+STACK WIN 4 70b7d f4 0 0 18 c a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 176 - ^ =
+STACK WIN 4 70c81 39 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 70cbf 38 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 70cfc a7 13 0 8 0 214 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 70d0d 8d 2 0 8 4 214 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 540 - ^ =
+STACK WIN 4 70d0e 8b 1 0 8 8 214 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 540 - ^ =
+STACK WIN 4 70d0f 89 0 0 8 c 214 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 540 - ^ =
+STACK WIN 4 70da8 58 8 0 4 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 70db0 4c 0 0 4 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1b10f 77 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1b132 4f 0 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1b13a 46 0 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 29ee3 70 d 0 8 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 29ef0 5f 0 0 8 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 46833 26 0 0 8 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1aff3 81 17 0 4 8 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 4687c 4 0 0 4 8 bc 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1afd5 1f 6 0 0 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 18c64 9a b 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 18c6b 8f 4 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 18c6f 8a 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 70e05 1ef 17 0 2c 8 e0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 70fe7 12 0 0 2c 8 e0 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 71011 77 13 0 0 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7108d 4f 4 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 71090 4b 1 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 71091 49 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 710e1 93 7 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 710e8 88 0 0 4 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 71107 68 0 0 4 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 71191 164 17 0 10 8 d0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 712e3 17 0 0 10 8 d0 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 b6d7 228 16 0 8 0 640 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 b6ec 20a 1 0 8 4 640 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1608 - ^ =
+STACK WIN 4 b6ed 208 0 0 8 8 640 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1608 - ^ =
+STACK WIN 4 71311 1cd 17 0 0 8 480 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 714d7 c 0 0 0 8 480 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 714f9 e9 17 0 4 8 128 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 715db c 0 0 4 8 128 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 715f9 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1ce32 125 17 0 14 8 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 468d9 4 0 0 14 8 bc 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 468e9 4 0 0 14 8 bc 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1cf25 1c 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 35484 1c 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1dc7e 6f 13 0 4 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1dd4d 9b 1c 0 10 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 71604 a3 17 0 8 8 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 71674 4 0 0 8 8 bc 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 716c9 7b 13 0 c 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1aeaa 73 13 0 4 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1ff5b 82 13 0 10 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 10fe1 95 c 0 10 8 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 46968 4 0 0 10 8 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 71749 29c 17 0 20 8 d8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7189d 11 0 0 20 8 d8 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7199c 4 0 0 20 8 d8 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 71a1d 4a 16 0 14 0 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 71a2b 33 8 0 14 4 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 92 - ^ =
+STACK WIN 4 71a2f 2e 4 0 14 8 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 92 - ^ =
+STACK WIN 4 71a33 29 0 0 14 c 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 92 - ^ =
+STACK WIN 4 71a6c 51 1c 0 14 0 58 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 71a7a 3a e 0 14 4 58 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 96 - ^ =
+STACK WIN 4 71a7e 35 a 0 14 8 58 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 96 - ^ =
+STACK WIN 4 71a88 2a 0 0 14 c 58 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 96 - ^ =
+STACK WIN 4 71ac2 139 17 0 2c 8 c8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 71be9 4 0 0 2c 8 c8 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 71c19 ae 17 0 c 8 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 71ca8 4 0 0 c 8 bc 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 71ce9 7b 13 0 c 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 37c53 9a 17 0 4 8 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 469a3 4 0 0 4 8 bc 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 71d69 c2 19 0 10 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 71d7a a8 8 0 10 4 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 172 - ^ =
+STACK WIN 4 71d7e a3 4 0 10 8 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 172 - ^ =
+STACK WIN 4 71d82 9e 0 0 10 c a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 172 - ^ =
+STACK WIN 4 71e30 6f 13 0 4 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 71ea4 1e 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 71ec7 1e 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 71eea 75 13 0 8 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 71f64 56 13 0 8 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 71fbf 5c 13 0 c 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 72020 7b 13 0 c 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 720a0 107 17 0 c 8 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 72188 4 0 0 c 8 bc 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 721c9 78 8 0 c 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 72269 12b 17 0 18 8 c0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7236f 4 0 0 18 8 c0 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7237f 4 0 0 18 8 c0 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 723c5 1e 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 723e8 1e 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7240b 13f 26 0 18 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 72420 126 11 0 18 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 72421 124 10 0 18 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 72431 113 0 0 18 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 7254f 272 17 0 18 8 d4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 72787 4 0 0 18 8 d4 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 727e1 1f 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 72805 1f 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 72829 2d8 17 0 18 8 e8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 72aa3 4 0 0 18 8 e8 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 72b21 1f 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 72b45 1f 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 72b69 151 17 0 1c 8 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 72c86 4 0 0 1c 8 c4 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 72cd9 21 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 72cff 21 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 72d25 21 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 72d4b 126 17 0 1c 8 c0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 72e4c 4 0 0 1c 8 c0 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 72e5c 4 0 0 1c 8 c0 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 72ea5 21 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 72ecb 21 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 72ef1 21 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 72f17 c3 17 0 18 8 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 72fbb 4 0 0 18 8 bc 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 72ff9 22 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 73020 1f 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 73044 1f 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 73068 172 17 0 14 8 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7314a 4 0 0 14 8 c4 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 731c9 4 0 0 14 8 c4 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 73215 af 17 0 8 8 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 732a4 4 0 0 8 8 bc 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 732e1 17b 17 0 18 8 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 73326 4 0 0 18 8 c4 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 73432 4 0 0 18 8 c4 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7348d 1e 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 734b0 1e 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 734d3 1e 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 734f6 1e 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 73519 1f 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7353d 1f 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 73561 ad 17 0 8 8 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 735db 4 0 0 8 8 bc 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 73629 9c 17 0 4 8 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 73692 4 0 0 4 8 bc 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 736e1 9a 17 0 4 8 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 73748 4 0 0 4 8 bc 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 73799 107 17 0 10 8 c0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 73854 4 0 0 10 8 c0 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 738c1 89 13 0 8 0 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7394f b5 17 0 c 8 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 739d1 4 0 0 c 8 bc 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1b1f0 75 13 0 8 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 73a21 82 18 0 8 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 73aa8 6f 13 0 4 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 73b1c 6f 13 0 4 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 73b90 75 13 0 8 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 73c0a 75 13 0 8 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 73c84 ac 17 0 8 8 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 73d11 4 0 0 8 8 bc 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 73d51 b5 17 0 c 8 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 73de7 4 0 0 c 8 bc 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 73e21 e1 17 0 18 8 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 73ee3 4 0 0 18 8 bc 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 73f21 1f 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 73f45 1f 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 73f69 77 13 0 8 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 73fe5 75 13 0 8 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7405f 6f 13 0 4 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 740d3 6b 13 0 0 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 74143 b6 15 0 4 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 74154 9c 4 0 4 4 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 74158 97 0 0 4 8 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1b18f 6e 13 0 0 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 741fe 5e 13 0 4 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 74261 2e 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 74294 90 12 0 8 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 742a5 76 1 0 8 4 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 742a6 74 0 0 8 8 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 74329 13 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 74341 13 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 74359 67 13 0 0 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 743c5 11c 17 0 8 8 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 74497 4 0 0 8 8 c4 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1af14 a3 17 0 8 8 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 469dd 4 0 0 8 8 bc 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 74501 67 13 0 0 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7456d a3 17 0 8 8 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 745dd 4 0 0 8 8 bc 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 74631 83 13 0 4 0 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1bc2b e4 17 0 8 8 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 469fe 4 0 0 8 8 bc 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 746b9 c1 19 0 10 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 746ca a7 8 0 10 4 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 172 - ^ =
+STACK WIN 4 746ce a2 4 0 10 8 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 172 - ^ =
+STACK WIN 4 746d2 9d 0 0 10 c a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 172 - ^ =
+STACK WIN 4 7477f 7b 13 0 c 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 747ff ae 17 0 c 8 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7487a 4 0 0 c 8 bc 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 748c9 6f 13 0 4 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7493d 6f 13 0 4 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 749b1 e8 17 0 14 8 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 74a7a 4 0 0 14 8 bc 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 74ab9 54 8 0 8 0 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 74b12 6f 13 0 4 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 74b86 c 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 74b97 4d 8 0 c 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 74be9 a0 b 0 10 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 74bf2 93 2 0 10 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 74bf3 91 1 0 10 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 74bf4 8f 0 0 10 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 74c8e bd 11 0 8 0 408 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 74c9f a3 0 0 8 4 408 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 74e13 13d 11 0 4 0 4b0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 74e24 123 0 0 4 4 4b0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 74e74 79 0 0 4 8 4b0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 74f87 135 17 0 8 8 c0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7507d 4 0 0 8 8 c0 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 750d9 c5 15 0 8 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 750ea ab 4 0 8 4 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 750ee a6 0 0 8 8 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 751a3 ac 17 0 c 8 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7521c 4 0 0 c 8 bc 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 75271 b 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1b5c6 ca 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1b616 17 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1b61d f 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2000c 78 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 20012 3d 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1b58b 39 7 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1b591 2f 1 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1b592 2d 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 75280 1cc c 0 4 8 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 75348 4 0 0 4 8 7c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 753b9 c 0 0 4 8 7c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 75454 c 0 0 4 8 7c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 75489 45 13 0 0 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 754d3 f 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 754e4 242 17 0 8 8 c8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 756a5 4 0 0 8 8 c8 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 38211 1e 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 75749 1e 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7576c 19 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7578a 1b 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 757aa 1b 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 757ca 19 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 757e8 1c 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 75809 19 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 37ce1 16 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 75827 16 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 75842 84 16 0 14 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 75853 6a 5 0 14 4 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 172 - ^ =
+STACK WIN 4 75857 65 1 0 14 8 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 172 - ^ =
+STACK WIN 4 75858 63 0 0 14 c a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 172 - ^ =
+STACK WIN 4 a459 b3 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 d21d 15 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 cf52 136 5 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 cf63 111 0 0 18 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 cf7e f4 0 0 18 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 d239 24 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 380ef d7 c 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 380f9 c9 2 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 380fa c7 1 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 380fb c5 0 0 c c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 38063 f7 a 0 24 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3806c ea 1 0 24 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 3806d e8 0 0 24 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 380a9 65 0 0 24 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 d077 1a3 1e 0 18 0 218 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 d088 189 d 0 18 4 218 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 544 - ^ =
+STACK WIN 4 d08f 181 6 0 18 8 218 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 544 - ^ =
+STACK WIN 4 d095 17a 0 0 18 c 218 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 544 - ^ =
+STACK WIN 4 38de8 204 19 0 18 0 214 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 38df9 1ea 8 0 18 4 214 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 540 - ^ =
+STACK WIN 4 38dfd 1e5 4 0 18 8 214 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 540 - ^ =
+STACK WIN 4 38e01 1e0 0 0 18 c 214 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 540 - ^ =
+STACK WIN 4 d262 16c 1d 0 10 0 108 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 d277 14e 8 0 10 4 108 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 272 - ^ =
+STACK WIN 4 d27e 146 1 0 10 8 108 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 272 - ^ =
+STACK WIN 4 d27f 144 0 0 10 c 108 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 272 - ^ =
+STACK WIN 4 758cb 9b 11 0 c 0 10c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 758dc 81 0 0 c 4 10c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 75925 34 0 0 c 8 10c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7596b 166 21 0 18 0 10c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 75981 47 b 0 18 4 10c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 276 - ^ =
+STACK WIN 4 7598b 3c 1 0 18 8 10c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 276 - ^ =
+STACK WIN 4 7598c 3a 0 0 18 c 10c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 276 - ^ =
+STACK WIN 4 75ad6 9e 11 0 10 0 10c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 75ae7 84 0 0 10 4 10c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 75b30 37 0 0 10 8 10c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3632d 1a7 19 0 18 0 218 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3633e 18d 8 0 18 4 218 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 544 - ^ =
+STACK WIN 4 36342 188 4 0 18 8 218 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 544 - ^ =
+STACK WIN 4 36346 183 0 0 18 c 218 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 544 - ^ =
+STACK WIN 4 361ee 1ea 19 0 18 0 218 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 361ff 1d0 8 0 18 4 218 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 544 - ^ =
+STACK WIN 4 36203 1cb 4 0 18 8 218 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 544 - ^ =
+STACK WIN 4 36207 1c6 0 0 18 c 218 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 544 - ^ =
+STACK WIN 4 2ec56 2cc 16 0 18 0 234 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2ec67 2b2 5 0 18 4 234 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 572 - ^ =
+STACK WIN 4 2ec68 2b0 4 0 18 8 234 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 572 - ^ =
+STACK WIN 4 2ec6c 2ab 0 0 18 c 234 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 572 - ^ =
+STACK WIN 4 75b79 333 16 0 18 0 23c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 75b8a 319 5 0 18 4 23c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 580 - ^ =
+STACK WIN 4 75b8b 317 4 0 18 8 23c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 580 - ^ =
+STACK WIN 4 75b8f 312 0 0 18 c 23c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 580 - ^ =
+STACK WIN 4 38a0c ad 15 0 14 0 10c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 38a1d 93 4 0 14 4 10c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 38a21 8e 0 0 14 8 10c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 75eb1 191 21 0 14 0 210 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 75ec5 174 d 0 14 4 210 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 536 - ^ =
+STACK WIN 4 75ec6 172 c 0 14 8 210 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 536 - ^ =
+STACK WIN 4 75ed2 165 0 0 14 c 210 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 536 - ^ =
+STACK WIN 4 76047 83 11 0 c 0 224 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 76058 69 0 0 c 4 224 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7606e 4f 0 0 c 8 224 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 760cf b 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 a490 196 8 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 a496 18c 2 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 a497 18a 1 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 a498 188 0 0 10 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 760df 2e5 11 0 3c 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 760eb 2d5 5 0 3c 4 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 760ef 2cb 1 0 3c 8 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 760f0 2c9 0 0 3c c 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 bfef 93 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 af4f 12e7 1d 0 1c 0 98 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 af64 12ce 8 0 1c 4 98 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 160 - ^ =
+STACK WIN 4 af68 12c9 4 0 1c 8 98 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 160 - ^ =
+STACK WIN 4 af6c 12c4 0 0 1c c 98 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 160 - ^ =
+STACK WIN 4 763c9 21 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 763ef 107 1e 0 8 0 424 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 76400 6b d 0 8 4 424 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1068 - ^ =
+STACK WIN 4 7640d 5d 0 0 8 8 424 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1068 - ^ =
+STACK WIN 4 1c48b 263 26 0 8 0 648 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1c4a3 ad e 0 8 4 648 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1616 - ^ =
+STACK WIN 4 1c4ad a2 4 0 8 8 648 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1616 - ^ =
+STACK WIN 4 1c4b1 9d 0 0 8 c 648 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1616 - ^ =
+STACK WIN 4 764fb fe 18 0 4 0 140 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7650c e4 7 0 4 4 140 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 76513 dc 0 0 4 8 140 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 a415 d 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 13038 2d 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 13070 2a 6 0 0 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 127b2 7 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 bf3d 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 9f10 e2 6 0 0 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7668d a2 9 0 c 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 76696 95 0 0 c 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 76734 2b9 6 0 1c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7676f 27a 0 0 1c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 769f2 5c 5 0 1c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 39200 157 15 0 c 0 43c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 39211 13d 4 0 c 4 43c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 39215 138 0 0 c 8 43c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 76a53 195 1d 0 c 0 210 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 76a6b 174 5 0 c 4 210 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 536 - ^ =
+STACK WIN 4 76a6f 16f 1 0 c 8 210 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 536 - ^ =
+STACK WIN 4 76a70 16d 0 0 c c 210 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 536 - ^ =
+STACK WIN 4 76c59 b2 8 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 76c5f a8 2 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 76c60 a6 1 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 76c61 a4 0 0 10 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 383cf 49 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1bbba ac b 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1bbc5 9d 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 bf64 5 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 2f041 131 11 0 c 0 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2f052 117 0 0 c 4 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 176 - ^ =
+STACK WIN 4 2f06a ef 0 0 c 8 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 176 - ^ =
+STACK WIN 4 2f06b eb 0 0 c c a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 176 - ^ =
+STACK WIN 4 2efb9 83 f 0 c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2efc2 76 6 0 c 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2efc8 6f 0 0 c 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 11562 17bb 2f 0 10 0 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1157f ee5 12 0 10 4 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 196 - ^ =
+STACK WIN 4 11582 19a f 0 10 8 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 196 - ^ =
+STACK WIN 4 11591 18a 0 0 10 c bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 196 - ^ =
+STACK WIN 4 39020 385 39 0 18 0 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 39045 c8 14 0 18 4 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 204 - ^ =
+STACK WIN 4 39046 c6 13 0 18 8 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 204 - ^ =
+STACK WIN 4 39059 b2 0 0 18 c c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 204 - ^ =
+STACK WIN 4 76d1b 114 13 0 10 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 76d2d fe 1 0 10 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 76d2e fc 0 0 10 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 76e34 3a 6 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 76e3a 30 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1b258 159 f 0 4 0 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1b266 142 1 0 4 4 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1b267 140 0 0 4 8 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 76e73 e22 23 0 c 0 570 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 76e84 d6c 12 0 c 4 570 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1400 - ^ =
+STACK WIN 4 76e92 9ea 4 0 c 8 570 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1400 - ^ =
+STACK WIN 4 76e96 9e5 0 0 c c 570 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1400 - ^ =
+STACK WIN 4 77cf7 f4 1d 0 10 0 428 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 77d0b d7 9 0 10 4 428 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1072 - ^ =
+STACK WIN 4 77d0f d2 5 0 10 8 428 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1072 - ^ =
+STACK WIN 4 77d14 cc 0 0 10 c 428 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1072 - ^ =
+STACK WIN 4 1bcfe f4 1c 0 10 0 428 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1bd12 d7 8 0 10 4 428 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1072 - ^ =
+STACK WIN 4 1bd16 d2 4 0 10 8 428 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1072 - ^ =
+STACK WIN 4 1bd1a cd 0 0 10 c 428 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1072 - ^ =
+STACK WIN 4 15047 f9 7 0 14 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1505b e1 0 0 14 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1505c df 0 0 14 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 77df0 2f 7 0 10 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1734f 4a a 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 17358 3d 1 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 17359 3b 0 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 77e24 1a 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 17f7d 3f 9 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 17f86 32 0 0 18 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 77e43 13f 16 0 c 0 2a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 77e54 125 5 0 c 4 2a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 684 - ^ =
+STACK WIN 4 77e58 120 1 0 c 8 2a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 684 - ^ =
+STACK WIN 4 77e59 11e 0 0 c c 2a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 684 - ^ =
+STACK WIN 4 2ae21 8d 1d 0 8 0 40c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2ae3a 64 4 0 8 4 40c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2ae3e 5f 0 0 8 8 40c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2ac6c c8 10 0 c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2ac7a b1 2 0 c 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 2ac7b af 1 0 c 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 2ac7c ab 0 0 c c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 2b95b af 10 0 8 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2b969 98 2 0 8 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 32 - ^ =
+STACK WIN 4 2b96a 96 1 0 8 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 32 - ^ =
+STACK WIN 4 2b96b 94 0 0 8 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 32 - ^ =
+STACK WIN 4 2b883 c6 15 0 0 0 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2b8c4 7b 0 0 0 4 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 172de 74 10 0 14 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 172ea 64 4 0 14 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 172ee 5f 0 0 14 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2ad98 b5 9 0 8 0 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2ada1 a8 0 0 8 4 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2adb4 90 0 0 8 8 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 77f87 60 9 0 8 0 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 77f90 53 0 0 8 4 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 77fec 2d5 1d 0 10 0 440 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 77ffd 2bb c 0 10 4 440 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1096 - ^ =
+STACK WIN 4 78008 2af 1 0 10 8 440 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1096 - ^ =
+STACK WIN 4 78009 2ad 0 0 10 c 440 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1096 - ^ =
+STACK WIN 4 782c6 19a 15 0 14 0 e3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 782d7 15b 4 0 14 4 e3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 3652 - ^ =
+STACK WIN 4 782db 156 0 0 14 8 e3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 3652 - ^ =
+STACK WIN 4 7838b a2 0 0 14 c e3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 3652 - ^ =
+STACK WIN 4 2a8fa 221 12 0 10 0 430 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2a90b 1f9 1 0 10 4 430 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2a90c 1f7 0 0 10 8 430 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 37cfc 3ad 22 0 c 0 468 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 37d14 38c a 0 c 4 468 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1136 - ^ =
+STACK WIN 4 37d1d 382 1 0 c 8 468 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1136 - ^ =
+STACK WIN 4 37d1e 380 0 0 c c 468 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1136 - ^ =
+STACK WIN 4 7849b 22b 1d 0 c 0 228 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 784ac 211 c 0 c 4 228 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 560 - ^ =
+STACK WIN 4 784ad 20f b 0 c 8 228 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 560 - ^ =
+STACK WIN 4 784b8 203 0 0 c c 228 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 560 - ^ =
+STACK WIN 4 38234 726 22 0 18 0 dc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 38248 709 e 0 18 4 dc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 228 - ^ =
+STACK WIN 4 38249 707 d 0 18 8 dc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 228 - ^ =
+STACK WIN 4 38256 6f9 0 0 18 c dc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 228 - ^ =
+STACK WIN 4 38958 2ac 33 0 38 0 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 38970 28b 1b 0 38 4 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 204 - ^ =
+STACK WIN 4 3897a 280 11 0 38 8 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 204 - ^ =
+STACK WIN 4 3898b 26c 0 0 38 c c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 204 - ^ =
+STACK WIN 4 786e5 19 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 78703 1c 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2a8dc 19 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 78724 16 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7873f 16 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7875a 1e 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7877d 1e 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 388dc df f 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 388e7 d0 4 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 388eb cb 0 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 38801 15f c 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3880c 150 1 0 14 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 3880d 14e 0 0 14 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 388be 19 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 387e1 1b 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 787a0 1b 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 787c0 82 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 787e7 29 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 787f2 1d 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 78847 389 16 0 14 0 ac 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 78858 343 5 0 14 4 ac 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 180 - ^ =
+STACK WIN 4 78859 341 4 0 14 8 ac 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 180 - ^ =
+STACK WIN 4 7885d 33c 0 0 14 c ac 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 180 - ^ =
+STACK WIN 4 78bd9 7e 6 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 78bdf 74 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 78c22 30 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3798e da 18 0 4 0 280 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3799f c0 7 0 4 4 280 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 379a6 b8 0 0 4 8 280 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 78c5c 150 12 0 4 0 148 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 78c6d 136 1 0 4 4 148 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 336 - ^ =
+STACK WIN 4 78c6e 134 0 0 4 8 148 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 336 - ^ =
+STACK WIN 4 78cb4 ea 0 0 4 c 148 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 336 - ^ =
+STACK WIN 4 78db1 7c 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 78dd9 4c 0 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 78ddd 47 0 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 78e32 7c 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 78e5a 4c 0 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 78e5e 47 0 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 78eb3 c3 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 78ef0 7e 0 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 78ef3 7a 0 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 78f7b 127 e 0 10 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 78f88 116 1 0 10 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 78f89 114 0 0 10 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 78fac f0 0 0 10 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 790a7 126 11 0 10 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 790b5 114 3 0 10 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 790b8 110 0 0 10 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 791d2 92 18 0 10 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 791e0 7b a 0 10 4 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 791e4 76 6 0 10 8 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 791ea 6f 0 0 10 c 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 ce53 73 5 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 ce77 40 0 0 18 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 ce7b 3b 0 0 18 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2d4ad 1ced 29 0 1c 0 de4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2d4c1 1cd0 15 0 1c 4 de4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 3564 - ^ =
+STACK WIN 4 2d4d5 1cbb 1 0 1c 8 de4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 3564 - ^ =
+STACK WIN 4 2d4d6 1cb9 0 0 1c c de4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 3564 - ^ =
+STACK WIN 4 79269 289 7 0 18 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 79270 27e 0 0 18 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7928e 25e 0 0 18 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 374eb 220 1f 0 18 0 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 374fc 206 e 0 18 4 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3750a 1f7 0 0 18 8 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 37787 e9 23 0 18 0 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3779d ca d 0 18 4 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 48 - ^ =
+STACK WIN 4 377aa bc 0 0 18 8 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 48 - ^ =
+STACK WIN 4 377d2 55 0 0 18 c 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 48 - ^ =
+STACK WIN 4 794fb 136 5 0 1c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7952d ff 0 0 1c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7952e fd 0 0 1c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 79636 188 d 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 79641 179 2 0 14 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 79642 177 1 0 14 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 79643 175 0 0 14 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 37693 2ef a 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3769c 2e2 1 0 18 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 3769d 2e0 0 0 18 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 4acfb 1c3 0 0 18 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 cca8 3d3 13 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 ccb4 3c3 7 0 18 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 ccba 3bc 1 0 18 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 ccbb 3ba 0 0 18 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 110cb 48 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 110d1 3e 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 9915 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 797c3 17 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 127a7 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 b7dc 39 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2f540 24 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 797df 82 5 0 1c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 79866 56 c 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 79872 46 0 0 14 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 798c1 c4 13 0 1c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 798cf 67 5 0 1c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 798d0 65 4 0 1c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 798d4 60 0 0 1c c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 a1fb 2a0 13 0 18 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 a20c 2c 2 0 18 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 a20d 2a 1 0 18 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 a20e 28 0 0 18 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 bd19 4ee 19 0 20 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 bd30 70 2 0 20 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 bd31 6e 1 0 20 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 bd32 48d 0 0 20 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 32cf3 1c3 1b 0 1c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 32d04 1ae a 0 1c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 32d07 1aa 7 0 1c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 32d0e 1a2 0 0 1c c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 7998a 6d1 c 0 24 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 79991 6c6 5 0 24 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 79992 6c4 4 0 24 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 79996 6bf 0 0 24 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 7a064 158 19 0 0 0 228 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7a07d 138 0 0 0 4 228 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7a095 11b 0 0 0 8 228 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 cfd4 281 1c 0 18 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 cfe8 264 8 0 18 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 32 - ^ =
+STACK WIN 4 cfec 25f 4 0 18 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 32 - ^ =
+STACK WIN 4 cff0 25a 0 0 18 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 32 - ^ =
+STACK WIN 4 12e76 244 6 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 12e7c 23a 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 12e96 212 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7a1cd 2fc 10 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7a1d3 2f2 a 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 7a1dd 2e7 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 7a21d 2a6 0 0 c c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 7a4ce 1e2 6 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7a4d4 1d8 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7a58b 81 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 9bf8 87b 15 0 18 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 9c0c 85e 1 0 18 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ =
+STACK WIN 4 9c0d 85c 0 0 18 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ =
+STACK WIN 4 9c38 81d 0 0 18 c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ =
+STACK WIN 4 32c7b 10b f 0 20 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 32c84 41 6 0 20 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 32c85 3f 5 0 20 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 32c8a 39 0 0 20 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 a0d4 3c5 6 0 20 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 a0da 3bb 0 0 20 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 a0f1 387 0 0 20 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7a6b5 1b 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7a6e2 1b 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 35819 c 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 34474 45 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7a712 5c 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 336f6 3a 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 33735 3b 7 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7a773 7b e 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7a779 74 8 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 7a77a 72 7 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 7a781 6a 0 0 0 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 2f440 58 1c 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2f44b 3b 11 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2f45c 29 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7a7f3 58 9 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7a7fa 4d 2 0 4 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7a81b 23 0 0 4 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 37834 11f 15 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3783c 113 d 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 3783d 111 c 0 8 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 3783e 10f b 0 8 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 2f40d 7a d 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2f416 6f 4 0 0 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 2f417 6d 3 0 0 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 2f418 6b 2 0 0 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 7a850 5d 6 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7a856 53 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7a874 2c 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 124d1 109 c 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 124d7 ff 6 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 124dc f9 1 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 124dd f7 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 121de fc 3 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 121e1 f8 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1bdd2 1bc 9 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1bdd5 1b8 6 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1bddb 1b1 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 a2d4 85 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 a2dc 7c 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7a8b2 ab 3 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7a8b5 a7 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7a962 da 7 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7a968 cc 1 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7a969 ca 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7aa41 25 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7aa6b 25 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7aa95 302 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2ee51 3c6 d 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2ee57 3bc 7 0 14 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 2ee5d 3b5 1 0 14 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 2ee5e 3b3 0 0 14 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 7ad9c 5d 6 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7ad9f 59 3 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7ada0 57 2 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 2c16a 58 4 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 2c16d 54 1 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 2c16e 52 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 12544 32 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2a5c3 13c 15 0 10 0 228 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2a5d4 bf 4 0 10 4 228 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 560 - ^ =
+STACK WIN 4 2a5d8 ba 0 0 10 8 228 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 560 - ^ =
+STACK WIN 4 2a615 6f 0 0 10 c 228 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 560 - ^ =
+STACK WIN 4 12090 cb b 0 1c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 12096 c1 5 0 1c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 1209a bc 1 0 1c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 1209b ba 0 0 1c c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 14f5c 92 27 0 14 0 40c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 14f83 62 0 0 14 4 40c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 14fbe 16 0 0 14 8 40c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 397f8 1e2 19 0 4 0 644 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 39826 1a4 0 0 4 4 644 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 39827 1a2 0 0 4 8 644 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 384db f1 15 0 c 0 29c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 384ec d7 4 0 c 4 29c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 676 - ^ =
+STACK WIN 4 384f0 d2 0 0 c 8 29c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 676 - ^ =
+STACK WIN 4 38518 a3 0 0 c c 29c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 676 - ^ =
+STACK WIN 4 3440e 61 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 34414 57 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7adfe 7c 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7ae04 72 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7ae7f de 2d 0 20 0 b0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7ae9b b9 11 0 20 4 b0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 184 - ^ =
+STACK WIN 4 7ae9f b4 d 0 20 8 b0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 184 - ^ =
+STACK WIN 4 7aeac a6 0 0 20 c b0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 184 - ^ =
+STACK WIN 4 7af62 72 7 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7afd9 70 1b 0 1c 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7aff4 4c 0 0 1c 4 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3472b 390 15 0 20 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 34740 377 0 0 20 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 34777 347 0 0 20 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3465d 1d3 43 0 20 0 b8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 34695 182 b 0 20 4 b8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 192 - ^ =
+STACK WIN 4 3469c 17a 4 0 20 8 b8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 192 - ^ =
+STACK WIN 4 346a0 175 0 0 20 c b8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 192 - ^ =
+STACK WIN 4 7b04e 66c 43 0 20 0 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7b086 1c3 b 0 20 4 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 196 - ^ =
+STACK WIN 4 7b08d 3aa 4 0 20 8 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 196 - ^ =
+STACK WIN 4 7b091 1b6 0 0 20 c bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 196 - ^ =
+STACK WIN 4 344bc 388 3c 0 18 0 378 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 344ea fe e 0 18 4 378 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 896 - ^ =
+STACK WIN 4 344f7 f0 1 0 18 8 378 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 896 - ^ =
+STACK WIN 4 344f8 ee 0 0 18 c 378 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 896 - ^ =
+STACK WIN 4 7b6ca 404 3c 0 18 0 420 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7b6f8 fe e 0 18 4 420 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1064 - ^ =
+STACK WIN 4 7b705 f0 1 0 18 8 420 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1064 - ^ =
+STACK WIN 4 7b706 ee 0 0 18 c 420 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1064 - ^ =
+STACK WIN 4 3414d 30 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 339dc 69 9 0 4 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 339e5 5c 0 0 4 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7bad3 96 5 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7bb13 4e 0 0 18 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7bb6e e6 f 0 c 0 34 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7bb7b d5 2 0 c 4 34 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 60 - ^ =
+STACK WIN 4 7bb7c d3 1 0 c 8 34 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 60 - ^ =
+STACK WIN 4 7bb7d cf 0 0 c c 34 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 60 - ^ =
+STACK WIN 4 7bc59 17d e 0 4 0 274 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7bc65 168 2 0 4 4 274 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 636 - ^ =
+STACK WIN 4 7bc66 166 1 0 4 8 274 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 636 - ^ =
+STACK WIN 4 7bc67 164 0 0 4 c 274 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 636 - ^ =
+STACK WIN 4 7be1b 63 a 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7be24 56 1 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7be25 52 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7be83 c5 1d 0 c 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7bef3 35 0 0 c 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 335d4 33 5 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 33ec8 a54 4c 0 14 0 508 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 33eef a20 25 0 14 4 508 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1296 - ^ =
+STACK WIN 4 33efe a10 16 0 14 8 508 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1296 - ^ =
+STACK WIN 4 33f14 9f9 0 0 14 c 508 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1296 - ^ =
+STACK WIN 4 7bf4d fd 18 0 8 0 34 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7bf56 f0 f 0 8 4 34 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 60 - ^ =
+STACK WIN 4 7bf64 dd 1 0 8 8 34 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 60 - ^ =
+STACK WIN 4 7bf65 d7 0 0 8 c 34 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 60 - ^ =
+STACK WIN 4 7c04f 1d2 11 0 8 0 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7c058 1c5 8 0 8 4 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 7c059 1c3 7 0 8 8 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 7c060 1bb 0 0 8 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 7c86f 235 18 0 c 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7c887 1f0 0 0 c 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ =
+STACK WIN 4 7c8a5 1ce 0 0 c 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ =
+STACK WIN 4 7c8a6 1cc 0 0 c c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ =
+STACK WIN 4 33fd3 1f2 25 0 18 0 2bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 33fea 17a e 0 18 4 2bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 708 - ^ =
+STACK WIN 4 33ff4 16f 4 0 18 8 2bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 708 - ^ =
+STACK WIN 4 33ff8 16a 0 0 18 c 2bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 708 - ^ =
+STACK WIN 4 33a4a 8c9 30 0 20 0 258 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 33a6c 50 e 0 20 4 258 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 608 - ^ =
+STACK WIN 4 33a70 4b a 0 20 8 258 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 608 - ^ =
+STACK WIN 4 33a7a 578 0 0 20 c 258 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 608 - ^ =
+STACK WIN 4 33775 3fb 38 0 18 0 2d8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 3379f 308 e 0 18 4 2d8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 736 - ^ =
+STACK WIN 4 337a3 303 a 0 18 8 2d8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 736 - ^ =
+STACK WIN 4 337ad 2f8 0 0 18 c 2d8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 736 - ^ =
+STACK WIN 4 c0ed 74 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 17fc1 82 9 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 17fc8 7a 2 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 17fc9 78 1 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 17fca 76 0 0 0 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 1805b 46 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 38617 37 9 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 38620 13 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7caa9 a6 9 0 0 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7cab1 9c 1 0 0 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7cab2 98 0 0 0 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 a557 9b e 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 a565 8b 0 0 0 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 17395 78 0 0 0 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7cb54 b5 1a 0 8 0 404 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7cb6d 93 1 0 8 4 404 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1036 - ^ =
+STACK WIN 4 7cb6e 8f 0 0 8 8 404 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1036 - ^ =
+STACK WIN 4 7cba2 57 0 0 8 c 404 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1036 - ^ =
+STACK WIN 4 188fc 146 7 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 18902 13c 1 0 14 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 18903 13a 0 0 14 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 1892c 10c 0 0 14 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 16ea9 130 f 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 16eb6 11f 2 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 16eb7 11d 1 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 16eb8 11b 0 0 10 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 336b6 9d e 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 336c4 8b 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 336d0 7d 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 336dd 6f 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 7cc2b 112 17 0 4 0 428 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7cc42 f2 0 0 4 4 428 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7cc60 d0 0 0 4 8 428 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7cd42 7f 7 0 0 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7cdc6 53 17 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7cdcc 49 11 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 7cdd4 40 9 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 7cddd 36 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 7ce1e 8d e 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7ce30 76 0 0 4 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7ce35 70 0 0 4 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 184dc db 12 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 184e6 cd 8 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 184e9 c9 5 0 c 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 18504 ad 0 0 c c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 7ceb0 9e d 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7cebb 8f 2 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 7cebc 8d 1 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 7cebd 8b 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 7cf53 2d 7 0 4 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 183fe 1fb 15 0 8 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1840f 1e1 4 0 8 4 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 172 - ^ =
+STACK WIN 4 18413 1dc 0 0 8 8 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 172 - ^ =
+STACK WIN 4 1844e 196 0 0 8 c a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 172 - ^ =
+STACK WIN 4 3996f 176 1c 0 8 0 a0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 39980 15c b 0 8 4 a0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 168 - ^ =
+STACK WIN 4 39984 157 7 0 8 8 a0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 168 - ^ =
+STACK WIN 4 3998b 14f 0 0 8 c a0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 168 - ^ =
+STACK WIN 4 1831e 16a b 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 18328 15c 1 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 18329 15a 0 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 d1ae 89 1e 0 0 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 d1b6 7f 16 0 0 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 d1c9 69 3 0 0 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 150c2 d6 20 0 0 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 150ca 9c 18 0 0 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 150cb 9a 17 0 0 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 150df 85 3 0 0 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 7cf85 204 16 0 8 0 a0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7cf96 1ea 5 0 8 4 a0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 168 - ^ =
+STACK WIN 4 7cf9a 1e5 1 0 8 8 a0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 168 - ^ =
+STACK WIN 4 7cf9b 1e3 0 0 8 c a0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 168 - ^ =
+STACK WIN 4 7d1b9 88 8 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 18297 9a e 0 10 0 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 182a5 88 0 0 10 4 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7d246 f5 24 0 0 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7d24f a2 1b 0 0 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 7d250 a0 1a 0 0 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 7d267 88 3 0 0 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 7d340 65 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7d3aa ff 1d 0 14 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7d3bd e8 a 0 14 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 7d3be e6 9 0 14 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 7d3c7 dc 0 0 14 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 7d4ae 101 e 0 18 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7d4b7 f4 5 0 18 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 7d4b8 f2 4 0 18 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 7d4bc ed 0 0 18 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 17210 6e a 0 0 0 40 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 17219 63 1 0 0 4 40 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 1721a 5f 0 0 0 8 40 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7d5b4 a0 a 0 0 0 40 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7d5bd 95 1 0 0 4 40 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 72 - ^ =
+STACK WIN 4 7d5be 93 0 0 0 8 40 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 72 - ^ =
+STACK WIN 4 7d615 23 0 0 0 c 40 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 72 - ^ =
+STACK WIN 4 2a25d 2a9 b 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2a268 26e 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2a41a 113 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7d659 5a 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7d65f 50 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7d690 1c 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2a855 82 14 0 10 0 21c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2a869 65 0 0 10 4 21c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 11fff 23f 9 0 18 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 12006 234 2 0 18 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 12007 232 1 0 18 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 12008 230 0 0 18 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 2a532 8e 13 0 4 0 ac 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2a543 74 2 0 4 4 ac 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 180 - ^ =
+STACK WIN 4 2a544 70 1 0 4 8 ac 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 180 - ^ =
+STACK WIN 4 2a545 6e 0 0 4 c ac 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 180 - ^ =
+STACK WIN 4 7d6b7 a9 15 0 c 0 c8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7d6c8 8f 4 0 c 4 c8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 208 - ^ =
+STACK WIN 4 7d6cc 8a 0 0 c 8 c8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 208 - ^ =
+STACK WIN 4 7d700 40 0 0 c c c8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 208 - ^ =
+STACK WIN 4 16ff1 9a 16 0 8 0 c8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 17002 80 5 0 8 4 c8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 208 - ^ =
+STACK WIN 4 17003 7e 4 0 8 8 c8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 208 - ^ =
+STACK WIN 4 17007 79 0 0 8 c c8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 208 - ^ =
+STACK WIN 4 7d765 25f 2b 0 1c 0 dc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7d77f 12f 11 0 1c 4 dc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 228 - ^ =
+STACK WIN 4 7d78c 121 4 0 1c 8 dc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 228 - ^ =
+STACK WIN 4 7d790 11c 0 0 1c c dc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 228 - ^ =
+STACK WIN 4 7d9c9 40 21 0 0 0 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7da0e 6c 6 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7da14 62 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7da47 15 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7da7f 13e b 0 10 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7da86 12e 4 0 10 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 7da89 12a 1 0 10 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 7da8a 128 0 0 10 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 31054 21d 13 0 14 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 31060 20d 7 0 14 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 31064 208 3 0 14 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 31067 204 0 0 14 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 7dc45 196 16 0 10 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7dc4c 17a f 0 10 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 7dc52 173 9 0 10 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 7dc5b 169 0 0 10 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 21523 2c6 d 0 10 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2152e 2b7 2 0 10 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 2152f 2b5 1 0 10 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 21530 2b3 0 0 10 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 30f99 bb 9 0 18 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 30fa0 b0 2 0 18 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 30fa1 ae 1 0 18 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 30fa2 ac 0 0 18 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 215f5 a1 13 0 20 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 215fc 96 c 0 20 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 215fd 94 b 0 20 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 21608 88 0 0 20 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 2ad39 5a 17 0 c 0 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 2ad50 3a 0 0 c 4 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7dead b 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7debd e1 1a 0 4 0 118 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7df16 75 0 0 4 4 118 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7df17 73 0 0 4 8 118 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7dfad 84 13 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7dfc0 6d 0 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7dfcd 5b 0 0 8 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e036 44 c 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e041 35 1 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 7e042 31 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 7e04a 28 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 7e07f 47 6 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e085 3d 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e0cb 1f e 0 14 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e0ef 1f e 0 18 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e113 1f e 0 18 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e137 1f e 0 14 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e15b b 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e16b f 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e17f f 0 0 14 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e193 f 0 0 28 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e1a7 f 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e1bb f 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e1cf f 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 ddf5 4 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e1e3 4 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e1ec 8 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e1f9 15 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e213 15 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e22d 15 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e247 2f 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e27b 19 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e299 d 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e2ab d 0 0 18 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e2bd d 0 0 24 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e2cf 14 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e2e8 4 0 0 2c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e2f1 10 5 0 1c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e306 8 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e313 5 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e31d 18 5 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e33a c 0 0 18 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e34b 5 0 0 28 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e355 8 0 0 28 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e362 5 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e36c c 0 0 14 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e37d 6 0 0 18 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e388 6 0 0 14 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e393 6 0 0 20 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e39e 6 0 0 18 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14ae7 6 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e3a9 6 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e3b4 6 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e3bf 6 0 0 14 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e3ca 19 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e3e8 8 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e3f5 21 5 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e41b 1b 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e43b 6 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e446 11 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e45c 8 0 0 14 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e469 c 0 0 1c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e47a a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e489 8 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e496 5 0 0 20 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e4a0 c 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e4b1 8 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e4be c 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e4cf c 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e4e0 c 0 0 14 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e4f1 1d 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e513 1e 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e536 c 0 0 18 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e547 e 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e55a c 0 0 28 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e56b 8 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e593 8 0 0 28 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e5a0 17 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e5bc 8 0 0 34 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e5c9 5 0 0 28 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e5d3 5 0 0 24 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e5dd 13 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e5f5 a 0 0 14 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e604 c 0 0 30 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e615 d 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e627 14 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e640 14 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e659 8 0 0 14 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e666 14 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e67f 18 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e69c 8 0 0 1c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e6a9 8 0 0 14 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e6b6 8 0 0 1c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e6c3 6 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e6ed 18 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e728 8 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 cc97 c 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e735 8 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e742 c 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e753 f 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e767 10 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e77c 12 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e793 14 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e7ac c 5 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e7bd 1b 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e7dd 10 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e7f2 6 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e7fd 6 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e808 14 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e821 15 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e83b 8 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e848 5 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e878 5 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e88d 5 0 0 18 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 260c2 5 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e897 c 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e8a8 5 0 0 14 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e8b2 5 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e8bc 14 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e8d5 14 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e8ee 14 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e907 15 6 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e90d b 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e921 1f 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e945 c 5 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e956 14 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e96f 19 6 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e975 f 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e98d 3 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e995 14 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e9ae 8 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e9bb 1a 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7e9da 8 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e9e7 4 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7e9f0 14 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7ea09 14 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7ea22 19 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7ea40 8 0 0 1c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7ea4d 5 0 0 1c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7ea57 6 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7ea62 6 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7ea6d 6 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7ea78 6 0 0 18 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7ea83 6 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7ea8e 6 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7ea99 6 0 0 1c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7eaa4 6 0 0 14 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7eaaf 12 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7eac6 4 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7eacf c 0 0 20 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7eae0 d 0 0 1c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7eaf2 d 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7eb04 b 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7eb14 23 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7eb3c d 0 0 14 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7eb4e d 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7eb60 5 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7eb6a 8 0 0 38 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7eb77 5 0 0 14 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7eb81 6 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7eb8c 8 0 0 1c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7ebbe 8 0 0 18 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7ebcb 8 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7ebd8 8 0 0 14 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7ebe5 8 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7ebf2 8 0 0 24 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7ebff 8 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7ec0c 8 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7ec19 3 0 0 18 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7ec21 8 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7ec2e 19 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7ec34 f 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7ec4c 8 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7ec59 3 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7ec61 15 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7ec7b 18 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7ec98 4 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7eca1 19 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7ecbf 8 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7eccc 8 0 0 18 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7ecd9 8 0 0 24 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7ece6 8 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7ed3f 3 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7ed47 8 0 0 1c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7ed54 5 0 0 38 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7ed69 10 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7ed7e 15 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7ed98 8 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7eda5 8 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7edb2 8 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7edbf 8 0 0 2c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7edcc 8 0 0 14 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7edd9 8 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7ede6 8 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7edf3 14 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7ee0c 14 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7ee25 19 6 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7ee2b f 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7ee43 19 6 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7ee49 f 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7ee61 6 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7ee6c 8 0 0 20 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7ee79 8 0 0 20 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7ee86 8 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7ee93 8 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7eea0 8 0 0 1c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7eead 6 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7eeb8 8 0 0 24 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7eec5 8 0 0 18 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7eed2 8 0 0 14 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7eedf 8 0 0 20 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7eeec 14 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7ef05 14 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7ef1e 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7ef29 14 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7ef42 14 5 0 1c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7ef5b 1b 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7ef61 11 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7ef7b 14 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7ef94 7 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7efa0 7 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7efac 7 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7efb8 7 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7efc4 7 0 0 28 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7efd0 7 0 0 20 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7efdc 6 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7efe7 6 0 0 18 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7eff2 12 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7f009 12 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7f020 19 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7f03e f 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7f052 3 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f05a 3 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f062 6 0 0 2c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f06d 6 0 0 30 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f078 3 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f093 18 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7f0b0 6 0 0 20 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f0bb 5 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f0c5 6 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f0f5 3 0 0 14 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f0fd 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f108 18 5 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7f125 8 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f132 5 0 0 2c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f13c 6 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f147 6 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f152 6 0 0 14 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f17e 18 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7f19b c 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f1ac 6 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f1d0 6 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f1db 6 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f1e6 6 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f1f1 6 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f1fe 1 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f204 c 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f215 6 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f220 16 5 0 20 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7f23b 6 0 0 1c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f246 6 0 0 24 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f251 6 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f25c 18 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7f279 18 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7f296 27 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7f2c2 6 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f2cd 8 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f2da 6 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f2e5 8 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f309 30 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7f317 1b 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7f31a 15 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7f33e 3a 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7f356 1b 0 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7f359 15 0 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7f37d 3e 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7f399 1b 0 0 14 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7f39c 15 0 0 14 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7f3c0 7 0 0 1c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f3cc 7 0 0 24 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f3d8 1b 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7f3f8 1b 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7f418 16 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7f433 16 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7f44e 16 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7f469 16 5 0 1c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7f484 16 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7f49f 6 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f4aa 6 0 0 18 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f4b5 6 0 0 1c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f4c0 6 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f4cb 16 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7f4e6 17 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7f502 6 0 0 24 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f50d 6 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f518 19 6 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7f51e f 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7f536 6 0 0 14 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f541 16 5 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7f55c 6 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f567 16 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7f582 16 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7f59d c 0 0 24 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f5ae 6 0 0 1c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f5b9 6 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f5c4 6 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f5cf 6 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f5da 6 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f5e5 6 0 0 14 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f5f0 6 0 0 18 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f5fb 6 0 0 20 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f606 f 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f61a f 0 0 14 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f62e d 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f640 10 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f655 f 0 0 18 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f669 f 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f67d f 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f691 f 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f6a5 8 0 0 5c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f6b2 c 0 0 2c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f6c3 6 0 0 28 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f6ce 6 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f6d9 5 0 0 30 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f6e3 13 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7f6fb 12 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7f712 1a 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7f731 8 0 0 20 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f73e 22 5 0 30 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7f765 18 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7f782 8 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f78f 20 5 0 24 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7f7b4 16 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7f7cf 20 5 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7f7f4 16 5 0 20 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7f80f 15 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7f829 18 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7f846 8 0 0 14 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f95b 222 a 0 4 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7f964 217 1 0 4 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ =
+STACK WIN 4 7f965 215 0 0 4 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ =
+STACK WIN 4 7f994 1e5 0 0 4 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ =
+STACK WIN 4 7fb8d ae 6 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7fb93 a0 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7fbdd 55 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7fc40 12 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7fc57 49 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7fc5d 3f 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7fca5 b9 6 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7fcab af 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 7fcdd 7c 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 7fceb 6d 0 0 c c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 7fd63 b9 13 0 c 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7fd71 a2 5 0 c 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 32 - ^ =
+STACK WIN 4 7fd72 a0 4 0 c 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 32 - ^ =
+STACK WIN 4 7fd76 9b 0 0 c c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 32 - ^ =
+STACK WIN 4 7fe21 30 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7fe56 47 a 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7fe5c 3d 4 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7fe60 38 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7fea2 30 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7fed7 41 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7fedd 37 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7ff1d 5a 7 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7ff23 50 1 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7ff24 4e 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7ff89 65 7 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7ff8f 5b 1 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 7ff90 57 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 7fff3 104 a 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7fff9 fa 4 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 7fffd f5 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 800fc 45 8 0 8 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 80146 ae 16 0 c 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 80154 97 8 0 c 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 32 - ^ =
+STACK WIN 4 80158 92 4 0 c 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 32 - ^ =
+STACK WIN 4 8015c 8d 0 0 c c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 32 - ^ =
+STACK WIN 4 801f9 3f 12 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 80207 28 4 0 4 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 8020b 22 0 0 4 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 80246 262 c 0 18 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 8024d 257 5 0 18 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 8024e 255 4 0 18 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 80252 250 0 0 18 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 804ad 75 6 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 804b3 6b 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 80527 4d 7 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 8052d 43 1 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 8052e 41 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 80579 5e 7 0 4 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 805dc 5e 7 0 4 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 8063f 2f e 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 4 8064d 1d 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + =
+STACK WIN 0 17826 35 0 0 0 0 0 0 0 0
+STACK WIN 0 558b4 e 0 0 0 0 0 0 0 0
+STACK WIN 0 39bc8 e 0 0 0 0 0 0 0 0
+STACK WIN 0 30769 a 0 0 0 0 0 0 0 0
+STACK WIN 0 b722 20 0 0 0 0 0 0 0 0
+STACK WIN 0 1b069 a1 0 0 0 0 0 0 0 0
+STACK WIN 0 17860 24 0 0 0 0 0 0 0 0
+STACK WIN 0 1795e 89 3 0 0 0 0 0 0 0
+STACK WIN 0 39e42 e 0 0 0 0 0 0 0 0
+STACK WIN 0 39ea2 e 0 0 0 0 0 0 0 0
+STACK WIN 0 39eca e 0 0 0 0 0 0 0 0
+STACK WIN 0 1717 4 0 0 0 0 0 0 0 0
+STACK WIN 0 39f0b e 0 0 0 0 0 0 0 0
+STACK WIN 0 39f69 e 0 0 0 0 0 0 0 0
+STACK WIN 0 55abf e 0 0 0 0 0 0 0 0
+STACK WIN 0 55b65 e 0 0 0 0 0 0 0 0
+STACK WIN 0 3a7c5 e 0 0 0 0 0 0 0 0
+STACK WIN 0 3a824 e 0 0 0 0 0 0 0 0
+STACK WIN 0 3a86a 19 0 0 0 0 0 0 0 0
+STACK WIN 0 3a94d e 0 0 0 0 0 0 0 0
+STACK WIN 0 3a995 19 0 0 0 0 0 0 0 0
+STACK WIN 0 3a9c6 e 0 0 0 0 0 0 0 0
+STACK WIN 0 3aa01 4 0 0 0 0 0 0 0 0
+STACK WIN 0 3aa1d e 0 0 0 0 0 0 0 0
+STACK WIN 0 2c86d 29 0 0 0 0 0 0 0 0
+STACK WIN 0 3aad0 4 0 0 0 0 0 0 0 0
+STACK WIN 0 3ab10 11 0 0 0 0 0 0 0 0
+STACK WIN 0 3abe7 7a 0 0 0 0 0 0 0 0
+STACK WIN 0 98eb 4 0 0 0 0 0 0 0 0
+STACK WIN 0 9766 11 0 0 4 0 0 0 0 0
+STACK WIN 0 977a 11 0 0 4 0 0 0 0 0
+STACK WIN 0 978e 13 0 0 8 0 0 0 0 0
+STACK WIN 0 97a2 13 0 0 c 0 0 0 0 0
+STACK WIN 0 97b6 f 0 0 8 0 0 0 0 0
+STACK WIN 0 97c6 120 0 0 c 0 0 0 0 0
+STACK WIN 0 2ff92 18 0 0 0 0 0 0 0 0
+STACK WIN 0 929c f 0 0 0 0 0 0 0 0
+STACK WIN 0 13093 e 0 0 0 0 0 0 0 0
+STACK WIN 0 59b72 5 0 0 0 0 0 0 0 0
+STACK WIN 0 59dd6 4 0 0 0 0 0 0 0 0
+STACK WIN 0 59f9f 14 0 0 0 0 0 0 0 0
+STACK WIN 0 30cce 1c 0 0 0 0 0 0 0 0
+STACK WIN 0 1c858 6a 3 0 0 0 0 0 0 0
+STACK WIN 0 3bde2 e 0 0 0 0 0 0 0 0
+STACK WIN 0 3c06f 15 0 0 0 0 0 0 0 0
+STACK WIN 0 5c223 1e 0 0 0 0 0 0 0 0
+STACK WIN 0 3c77a 2c 0 0 0 0 0 0 0 0
+STACK WIN 0 f049 e 0 0 0 0 0 0 0 0
+STACK WIN 0 3c85e e 0 0 0 0 0 0 0 0
+STACK WIN 0 18ef e 0 0 0 0 0 0 0 0
+STACK WIN 0 1921 4 0 0 0 0 0 0 0 0
+STACK WIN 0 3cac5 4 0 0 0 0 0 0 0 0
+STACK WIN 0 5c6de b 0 0 0 0 0 0 0 0
+STACK WIN 0 5cbad 1 0 0 0 0 0 0 0 0
+STACK WIN 0 5d0d4 1 0 0 0 0 0 0 0 0
+STACK WIN 0 5d2ff 39 0 0 0 0 0 0 0 0
+STACK WIN 0 1f951 3c 0 0 0 0 0 0 0 0
+STACK WIN 0 3d377 4 0 0 0 0 0 0 0 0
+STACK WIN 0 5d93e 4d 0 0 0 0 0 0 0 0
+STACK WIN 0 5de3f 1a 0 0 0 0 0 0 0 0
+STACK WIN 0 5e00f 1 0 0 0 0 0 0 0 0
+STACK WIN 0 3d7a4 10 0 0 0 0 0 0 0 0
+STACK WIN 0 3d9cf 10 0 0 0 0 0 0 0 0
+STACK WIN 0 3e895 11 0 0 0 0 0 0 0 0
+STACK WIN 0 3eadf ab 0 0 0 0 0 0 0 0
+STACK WIN 0 3f743 134 0 0 0 0 0 0 0 0
+STACK WIN 0 3ffbd 3e 0 0 0 0 0 0 0 0
+STACK WIN 0 27b99 1d 0 0 0 0 0 0 0 0
+STACK WIN 0 200d1 1d 0 0 0 0 0 0 0 0
+STACK WIN 0 40019 e 0 0 0 0 0 0 0 0
+STACK WIN 0 401f7 e 0 0 0 0 0 0 0 0
+STACK WIN 0 40258 e 0 0 0 0 0 0 0 0
+STACK WIN 0 4029c e 0 0 0 0 0 0 0 0
+STACK WIN 0 402de e 0 0 0 0 0 0 0 0
+STACK WIN 0 40327 e 0 0 0 0 0 0 0 0
+STACK WIN 0 403bd e 0 0 0 0 0 0 0 0
+STACK WIN 0 40414 e 0 0 0 0 0 0 0 0
+STACK WIN 0 4043c e 0 0 0 0 0 0 0 0
+STACK WIN 0 5e670 11 0 0 4 0 0 0 0 0
+STACK WIN 0 404b7 e 0 0 0 0 0 0 0 0
+STACK WIN 0 1d07e 8 0 0 0 0 0 0 0 0
+STACK WIN 0 365f6 b 0 0 0 0 0 0 0 0
+STACK WIN 0 3594f 6 0 0 0 0 0 0 0 0
+STACK WIN 0 17443 11 0 0 0 0 0 0 0 0
+STACK WIN 0 407a9 4 0 0 0 0 0 0 0 0
+STACK WIN 0 407c5 4 0 0 0 0 0 0 0 0
+STACK WIN 0 407e1 4 0 0 0 0 0 0 0 0
+STACK WIN 0 407fd 4 0 0 0 0 0 0 0 0
+STACK WIN 0 40817 4 0 0 0 0 0 0 0 0
+STACK WIN 0 40833 4 0 0 0 0 0 0 0 0
+STACK WIN 0 4084f 4 0 0 0 0 0 0 0 0
+STACK WIN 0 40892 e 0 0 0 0 0 0 0 0
+STACK WIN 0 5e882 11 0 0 8 0 0 0 0 0
+STACK WIN 0 abc1 d 0 0 0 0 0 0 0 0
+STACK WIN 0 40a26 16 0 0 0 0 0 0 0 0
+STACK WIN 0 40b63 e 0 0 0 0 0 0 0 0
+STACK WIN 0 40c62 17 0 0 0 0 0 0 0 0
+STACK WIN 0 111da 31 0 0 0 0 0 0 0 0
+STACK WIN 0 5eee3 8 0 0 c 0 0 0 0 0
+STACK WIN 0 1c8c e 0 0 0 0 0 0 0 0
+STACK WIN 0 40cf3 e 0 0 0 0 0 0 0 0
+STACK WIN 0 40d2a e 0 0 0 0 0 0 0 0
+STACK WIN 0 40d78 e 0 0 0 0 0 0 0 0
+STACK WIN 0 40da4 e 0 0 0 0 0 0 0 0
+STACK WIN 0 40dd0 e 0 0 0 0 0 0 0 0
+STACK WIN 0 40e00 e 0 0 0 0 0 0 0 0
+STACK WIN 0 5f1bf e 0 0 0 0 0 0 0 0
+STACK WIN 0 5f3e0 e 0 0 0 0 0 0 0 0
+STACK WIN 0 40e66 e 0 0 0 0 0 0 0 0
+STACK WIN 0 40e92 e 0 0 0 0 0 0 0 0
+STACK WIN 0 5f5c9 e 0 0 0 0 0 0 0 0
+STACK WIN 0 5f72a e 0 0 0 0 0 0 0 0
+STACK WIN 0 5f9fa 4 0 0 0 0 0 0 0 0
+STACK WIN 0 5fa2d 1e 0 0 0 0 0 0 0 0
+STACK WIN 0 40faa 4 0 0 0 0 0 0 0 0
+STACK WIN 0 40fe6 4 0 0 0 0 0 0 0 0
+STACK WIN 0 5fc02 9 0 0 0 0 0 0 0 0
+STACK WIN 0 11419 21 0 0 0 0 0 0 0 0
+STACK WIN 0 4171b 4 0 0 0 0 0 0 0 0
+STACK WIN 0 41748 48 0 0 0 0 0 0 0 0
+STACK WIN 0 607cb 30 0 0 0 0 0 0 0 0
+STACK WIN 0 418d1 3f 0 0 0 0 0 0 0 0
+STACK WIN 0 60b60 a 0 0 0 0 0 0 0 0
+STACK WIN 0 60bbf f 0 0 8 0 0 0 0 0
+STACK WIN 0 41b32 7 0 0 0 0 0 0 0 0
+STACK WIN 0 21af 7 0 0 0 0 0 0 0 0
+STACK WIN 0 12f1d 6 0 0 0 0 0 0 0 0
+STACK WIN 0 16f83 6 0 0 0 0 0 0 0 0
+STACK WIN 0 12f08 10 0 0 0 0 0 0 0 0
+STACK WIN 0 9920 a 0 0 0 0 0 0 0 0
+STACK WIN 0 41c56 4 0 0 0 0 0 0 0 0
+STACK WIN 0 41c70 4 0 0 0 0 0 0 0 0
+STACK WIN 0 41c8a 4 0 0 0 0 0 0 0 0
+STACK WIN 0 41ca4 4 0 0 0 0 0 0 0 0
+STACK WIN 0 41dcc 10 0 0 0 0 0 0 0 0
+STACK WIN 0 43025 4 0 0 0 0 0 0 0 0
+STACK WIN 0 1e017 2eb 0 0 0 0 0 0 0 0
+STACK WIN 0 43374 14 0 0 0 0 0 0 0 0
+STACK WIN 0 434b2 17 0 0 0 0 0 0 0 0
+STACK WIN 0 434e5 60 0 0 0 0 0 0 0 0
+STACK WIN 0 61723 e 0 0 0 0 0 0 0 0
+STACK WIN 0 435d2 e 0 0 0 0 0 0 0 0
+STACK WIN 0 132ee 6 0 0 0 0 0 0 0 0
+STACK WIN 0 617fd e 0 0 0 0 0 0 0 0
+STACK WIN 0 436ca 11 0 0 0 0 0 0 0 0
+STACK WIN 0 437f5 10 0 0 0 0 0 0 0 0
+STACK WIN 0 438be 4a 0 0 0 0 0 0 0 0
+STACK WIN 0 31d8e f 0 0 0 0 0 0 0 0
+STACK WIN 0 1a834 36 0 0 0 0 0 0 0 0
+STACK WIN 0 2610 b 0 0 0 0 0 0 0 0
+STACK WIN 0 36759 b 0 0 0 0 0 0 0 0
+STACK WIN 0 951a b 0 0 0 0 0 0 0 0
+STACK WIN 0 2432 b 0 0 0 0 0 0 0 0
+STACK WIN 0 61a61 b 0 0 0 0 0 0 0 0
+STACK WIN 0 1746c 23 0 0 0 0 0 0 0 0
+STACK WIN 0 17459 10e 0 0 0 0 0 0 0 0
+STACK WIN 0 1efce 12 0 0 0 0 0 0 0 0
+STACK WIN 0 129f9 b 0 0 0 0 0 0 0 0
+STACK WIN 0 44733 c 0 0 0 0 0 0 0 0
+STACK WIN 0 9728 a 0 0 0 0 0 0 0 0
+STACK WIN 0 62be6 4 0 0 0 0 0 0 0 0
+STACK WIN 0 448d9 a 0 0 0 0 0 0 0 0
+STACK WIN 0 13771 7 0 0 0 0 0 0 0 0
+STACK WIN 0 2c151 14 0 0 0 0 0 0 0 0
+STACK WIN 0 2fed7 40 0 0 0 0 0 0 0 0
+STACK WIN 0 32992 13 0 0 0 0 0 0 0 0
+STACK WIN 0 63421 4 0 0 0 0 0 0 0 0
+STACK WIN 0 6362b 4 0 0 0 0 0 0 0 0
+STACK WIN 0 636d3 4 0 0 0 0 0 0 0 0
+STACK WIN 0 6452a e 0 0 0 0 0 0 0 0
+STACK WIN 0 6665c 1c 0 0 0 0 0 0 0 0
+STACK WIN 0 66682 b 0 0 0 0 0 0 0 0
+STACK WIN 0 66801 3b 0 0 0 0 0 0 0 0
+STACK WIN 0 66918 1a 0 0 0 0 0 0 0 0
+STACK WIN 0 669cd 3b 0 0 0 0 0 0 0 0
+STACK WIN 0 66ae8 1a 0 0 0 0 0 0 0 0
+STACK WIN 0 66b9d 3b 0 0 0 0 0 0 0 0
+STACK WIN 0 66cbf 1a 0 0 0 0 0 0 0 0
+STACK WIN 0 67093 11 0 0 0 0 0 0 0 0
+STACK WIN 0 675f4 11 0 0 0 0 0 0 0 0
+STACK WIN 0 677e9 11 0 0 0 0 0 0 0 0
+STACK WIN 0 67941 11 0 0 0 0 0 0 0 0
+STACK WIN 0 67dd6 2c 0 0 0 0 0 0 0 0
+STACK WIN 0 1f571 50 0 0 0 0 0 0 0 0
+STACK WIN 0 68496 4a 0 0 0 0 0 0 0 0
+STACK WIN 0 1366c 45 0 0 0 0 0 0 0 0
+STACK WIN 0 29b93 127 0 0 0 0 0 0 0 0
+STACK WIN 0 44db3 55 0 0 0 0 0 0 0 0
+STACK WIN 0 68734 55 0 0 0 0 0 0 0 0
+STACK WIN 0 69ce0 21 0 0 0 0 0 0 0 0
+STACK WIN 0 69e0e 21 0 0 0 0 0 0 0 0
+STACK WIN 0 69f2a 21 0 0 0 0 0 0 0 0
+STACK WIN 0 6a054 21 0 0 0 0 0 0 0 0
+STACK WIN 0 453fe 21 0 0 0 0 0 0 0 0
+STACK WIN 0 6a220 21 0 0 0 0 0 0 0 0
+STACK WIN 0 6a339 21 0 0 0 0 0 0 0 0
+STACK WIN 0 6a4e8 11 0 0 0 0 0 0 0 0
+STACK WIN 0 6a4fe c7 0 0 0 0 0 0 0 0
+STACK WIN 0 6a5ca 3e 0 0 0 0 0 0 0 0
+STACK WIN 0 6b5b5 48 0 0 0 0 0 0 0 0
+STACK WIN 0 6b683 c 0 0 4 0 0 0 0 0
+STACK WIN 0 2146c c 0 0 8 0 0 0 0 0
+STACK WIN 0 6b694 a 0 0 0 0 0 0 0 0
+STACK WIN 0 45f23 e 0 0 0 0 0 0 0 0
+STACK WIN 0 165e9 13 0 0 0 0 0 0 0 0
+STACK WIN 0 46631 e 0 0 0 0 0 0 0 0
+STACK WIN 0 46678 4 0 0 0 0 0 0 0 0
+STACK WIN 0 466a9 4 0 0 0 0 0 0 0 0
+STACK WIN 0 466d4 4 0 0 0 0 0 0 0 0
+STACK WIN 0 6bc8a 4 0 0 0 0 0 0 0 0
+STACK WIN 0 6be06 7f 3 0 0 0 0 0 0 0
+STACK WIN 0 6fe04 4 0 0 0 0 0 0 0 0
+STACK WIN 0 189fc 28 0 0 0 0 0 0 0 0
+STACK WIN 0 6ff09 4 0 0 0 0 0 0 0 0
+STACK WIN 0 70245 8 0 0 0 0 0 0 0 0
+STACK WIN 0 70252 8 0 0 0 0 0 0 0 0
+STACK WIN 0 70362 4 0 0 0 0 0 0 0 0
+STACK WIN 0 704cb 4 0 0 0 0 0 0 0 0
+STACK WIN 0 70927 4 0 0 0 0 0 0 0 0
+STACK WIN 0 4677c 4 0 0 0 0 0 0 0 0
+STACK WIN 0 70a99 4 0 0 0 0 0 0 0 0
+STACK WIN 0 467de 4 0 0 0 0 0 0 0 0
+STACK WIN 0 70b3f c 0 0 0 0 0 0 0 0
+STACK WIN 0 1b3c1 c 0 0 0 0 0 0 0 0
+STACK WIN 0 4687c 4 0 0 0 0 0 0 0 0
+STACK WIN 0 70fe7 12 0 0 0 0 0 0 0 0
+STACK WIN 0 7108d 4f 4 0 0 0 0 0 0 0
+STACK WIN 0 712e3 17 0 0 0 0 0 0 0 0
+STACK WIN 0 714d7 c 0 0 0 0 0 0 0 0
+STACK WIN 0 715db c 0 0 0 0 0 0 0 0
+STACK WIN 0 715f9 6 0 0 0 0 0 0 0 0
+STACK WIN 0 468d9 4 0 0 0 0 0 0 0 0
+STACK WIN 0 468e9 4 0 0 0 0 0 0 0 0
+STACK WIN 0 71674 4 0 0 0 0 0 0 0 0
+STACK WIN 0 46968 4 0 0 0 0 0 0 0 0
+STACK WIN 0 7189d 11 0 0 0 0 0 0 0 0
+STACK WIN 0 7199c 4 0 0 0 0 0 0 0 0
+STACK WIN 0 71be9 4 0 0 0 0 0 0 0 0
+STACK WIN 0 71ca8 4 0 0 0 0 0 0 0 0
+STACK WIN 0 469a3 4 0 0 0 0 0 0 0 0
+STACK WIN 0 72188 4 0 0 0 0 0 0 0 0
+STACK WIN 0 7236f 4 0 0 0 0 0 0 0 0
+STACK WIN 0 7237f 4 0 0 0 0 0 0 0 0
+STACK WIN 0 72787 4 0 0 0 0 0 0 0 0
+STACK WIN 0 72aa3 4 0 0 0 0 0 0 0 0
+STACK WIN 0 72c86 4 0 0 0 0 0 0 0 0
+STACK WIN 0 72e4c 4 0 0 0 0 0 0 0 0
+STACK WIN 0 72e5c 4 0 0 0 0 0 0 0 0
+STACK WIN 0 72fbb 4 0 0 0 0 0 0 0 0
+STACK WIN 0 7314a 4 0 0 0 0 0 0 0 0
+STACK WIN 0 731c9 4 0 0 0 0 0 0 0 0
+STACK WIN 0 732a4 4 0 0 0 0 0 0 0 0
+STACK WIN 0 73326 4 0 0 0 0 0 0 0 0
+STACK WIN 0 73432 4 0 0 0 0 0 0 0 0
+STACK WIN 0 735db 4 0 0 0 0 0 0 0 0
+STACK WIN 0 73692 4 0 0 0 0 0 0 0 0
+STACK WIN 0 73748 4 0 0 0 0 0 0 0 0
+STACK WIN 0 73854 4 0 0 0 0 0 0 0 0
+STACK WIN 0 739d1 4 0 0 0 0 0 0 0 0
+STACK WIN 0 73d11 4 0 0 0 0 0 0 0 0
+STACK WIN 0 73de7 4 0 0 0 0 0 0 0 0
+STACK WIN 0 73ee3 4 0 0 0 0 0 0 0 0
+STACK WIN 0 74497 4 0 0 0 0 0 0 0 0
+STACK WIN 0 469dd 4 0 0 0 0 0 0 0 0
+STACK WIN 0 745dd 4 0 0 0 0 0 0 0 0
+STACK WIN 0 469fe 4 0 0 0 0 0 0 0 0
+STACK WIN 0 7487a 4 0 0 0 0 0 0 0 0
+STACK WIN 0 74a7a 4 0 0 0 0 0 0 0 0
+STACK WIN 0 74b86 c 0 0 0 0 0 0 0 0
+STACK WIN 0 7507d 4 0 0 0 0 0 0 0 0
+STACK WIN 0 7521c 4 0 0 0 0 0 0 0 0
+STACK WIN 0 75271 b 0 0 4 0 0 0 0 0
+STACK WIN 0 75348 4 0 0 0 0 0 0 0 0
+STACK WIN 0 753b9 c 0 0 0 0 0 0 0 0
+STACK WIN 0 75454 c 0 0 0 0 0 0 0 0
+STACK WIN 0 754d3 f 0 0 0 0 0 0 0 0
+STACK WIN 0 756a5 4 0 0 0 0 0 0 0 0
+STACK WIN 0 763c9 21 0 0 0 0 0 0 0 0
+STACK WIN 0 a415 d 0 0 0 0 0 0 0 0
+STACK WIN 0 13038 2d 0 0 0 0 0 0 0 0
+STACK WIN 0 127b2 7 0 0 0 0 0 0 0 0
+STACK WIN 0 bf3d 6 0 0 0 0 0 0 0 0
+STACK WIN 0 bf64 5 0 0 0 0 0 0 0 0
+STACK WIN 0 9915 6 0 0 0 0 0 0 0 0
+STACK WIN 0 127a7 6 0 0 0 0 0 0 0 0
+STACK WIN 0 7a6b5 1b 0 0 0 0 0 0 0 0
+STACK WIN 0 7a6e2 1b 0 0 0 0 0 0 0 0
+STACK WIN 0 35819 c 0 0 0 0 0 0 0 0
+STACK WIN 0 7a773 7b e 0 0 0 0 0 0 0
+STACK WIN 0 121de fc 3 0 0 0 0 0 0 0
+STACK WIN 0 1bdd2 1bc 9 0 0 0 0 0 0 0
+STACK WIN 0 a2d4 85 2 0 0 0 0 0 0 0
+STACK WIN 0 7a8b2 ab 3 0 0 0 0 0 0 0
+STACK WIN 0 7ad9c 5d 6 0 0 0 0 0 0 0
+STACK WIN 0 2c16a 58 4 0 0 0 0 0 0 0
+STACK WIN 0 c0ed 74 0 0 0 0 0 0 0 0
+STACK WIN 0 17fc1 82 9 0 0 0 0 0 0 0
+STACK WIN 0 2a41a 113 0 0 0 0 0 0 0 0
+STACK WIN 0 7e16b f 0 0 c 0 0 0 0 0
+STACK WIN 0 7e17f f 0 0 14 0 0 0 0 0
+STACK WIN 0 7e193 f 0 0 28 0 0 0 0 0
+STACK WIN 0 7e1a7 f 0 0 4 0 0 0 0 0
+STACK WIN 0 7e1bb f 0 0 8 0 0 0 0 0
+STACK WIN 0 7e1cf f 0 0 10 0 0 0 0 0
+STACK WIN 0 ddf5 4 0 0 0 0 0 0 0 0
+STACK WIN 0 7e1e3 4 0 0 0 0 0 0 0 0
+STACK WIN 0 7e1ec 8 0 0 8 0 0 0 0 0
+STACK WIN 0 7e299 d 0 0 c 0 0 0 0 0
+STACK WIN 0 7e2ab d 0 0 18 0 0 0 0 0
+STACK WIN 0 7e2bd d 0 0 24 0 0 0 0 0
+STACK WIN 0 7e2e8 4 0 0 10 0 0 0 0 0
+STACK WIN 0 7e306 8 0 0 c 0 0 0 0 0
+STACK WIN 0 7e313 5 0 0 4 0 0 0 0 0
+STACK WIN 0 7e33a c 0 0 18 0 0 0 0 0
+STACK WIN 0 7e34b 5 0 0 28 0 0 0 0 0
+STACK WIN 0 7e355 8 0 0 28 0 0 0 0 0
+STACK WIN 0 7e362 5 0 0 8 0 0 0 0 0
+STACK WIN 0 7e36c c 0 0 14 0 0 0 0 0
+STACK WIN 0 7e37d 6 0 0 18 0 0 0 0 0
+STACK WIN 0 7e388 6 0 0 14 0 0 0 0 0
+STACK WIN 0 7e393 6 0 0 20 0 0 0 0 0
+STACK WIN 0 7e39e 6 0 0 18 0 0 0 0 0
+STACK WIN 0 14ae7 6 0 0 4 0 0 0 0 0
+STACK WIN 0 7e3a9 6 0 0 c 0 0 0 0 0
+STACK WIN 0 7e3b4 6 0 0 10 0 0 0 0 0
+STACK WIN 0 7e3bf 6 0 0 14 0 0 0 0 0
+STACK WIN 0 7e3e8 8 0 0 10 0 0 0 0 0
+STACK WIN 0 7e43b 6 0 0 4 0 0 0 0 0
+STACK WIN 0 7e45c 8 0 0 14 0 0 0 0 0
+STACK WIN 0 7e469 c 0 0 1c 0 0 0 0 0
+STACK WIN 0 7e47a a 0 0 0 0 0 0 0 0
+STACK WIN 0 7e489 8 0 0 10 0 0 0 0 0
+STACK WIN 0 7e496 5 0 0 20 0 0 0 0 0
+STACK WIN 0 7e4a0 c 0 0 4 0 0 0 0 0
+STACK WIN 0 7e4b1 8 0 0 4 0 0 0 0 0
+STACK WIN 0 7e4be c 0 0 8 0 0 0 0 0
+STACK WIN 0 7e4cf c 0 0 c 0 0 0 0 0
+STACK WIN 0 7e4e0 c 0 0 14 0 0 0 0 0
+STACK WIN 0 7e536 c 0 0 18 0 0 0 0 0
+STACK WIN 0 7e547 e 0 0 8 0 0 0 0 0
+STACK WIN 0 7e55a c 0 0 28 0 0 0 0 0
+STACK WIN 0 7e56b 8 0 0 4 0 0 0 0 0
+STACK WIN 0 7e593 8 0 0 28 0 0 0 0 0
+STACK WIN 0 7e5bc 8 0 0 34 0 0 0 0 0
+STACK WIN 0 7e5c9 5 0 0 28 0 0 0 0 0
+STACK WIN 0 7e5d3 5 0 0 24 0 0 0 0 0
+STACK WIN 0 7e5f5 a 0 0 14 0 0 0 0 0
+STACK WIN 0 7e604 c 0 0 30 0 0 0 0 0
+STACK WIN 0 7e615 d 0 0 4 0 0 0 0 0
+STACK WIN 0 7e659 8 0 0 14 0 0 0 0 0
+STACK WIN 0 7e69c 8 0 0 1c 0 0 0 0 0
+STACK WIN 0 7e6a9 8 0 0 14 0 0 0 0 0
+STACK WIN 0 7e6b6 8 0 0 1c 0 0 0 0 0
+STACK WIN 0 7e6c3 6 0 0 8 0 0 0 0 0
+STACK WIN 0 7e728 8 0 0 4 0 0 0 0 0
+STACK WIN 0 7e735 8 0 0 8 0 0 0 0 0
+STACK WIN 0 7e7f2 6 0 0 c 0 0 0 0 0
+STACK WIN 0 7e7fd 6 0 0 10 0 0 0 0 0
+STACK WIN 0 7e83b 8 0 0 4 0 0 0 0 0
+STACK WIN 0 7e848 5 0 0 8 0 0 0 0 0
+STACK WIN 0 7e878 5 0 0 10 0 0 0 0 0
+STACK WIN 0 7e88d 5 0 0 18 0 0 0 0 0
+STACK WIN 0 260c2 5 0 0 4 0 0 0 0 0
+STACK WIN 0 7e8a8 5 0 0 14 0 0 0 0 0
+STACK WIN 0 7e8b2 5 0 0 c 0 0 0 0 0
+STACK WIN 0 7e98d 3 0 0 4 0 0 0 0 0
+STACK WIN 0 7e9ae 8 0 0 8 0 0 0 0 0
+STACK WIN 0 7e9da 8 0 0 10 0 0 0 0 0
+STACK WIN 0 7e9e7 4 0 0 0 0 0 0 0 0
+STACK WIN 0 7ea40 8 0 0 1c 0 0 0 0 0
+STACK WIN 0 7ea4d 5 0 0 1c 0 0 0 0 0
+STACK WIN 0 7ea57 6 0 0 c 0 0 0 0 0
+STACK WIN 0 7ea62 6 0 0 8 0 0 0 0 0
+STACK WIN 0 7ea6d 6 0 0 10 0 0 0 0 0
+STACK WIN 0 7ea78 6 0 0 18 0 0 0 0 0
+STACK WIN 0 7ea83 6 0 0 4 0 0 0 0 0
+STACK WIN 0 7ea8e 6 0 0 c 0 0 0 0 0
+STACK WIN 0 7ea99 6 0 0 1c 0 0 0 0 0
+STACK WIN 0 7eaa4 6 0 0 14 0 0 0 0 0
+STACK WIN 0 7eac6 4 0 0 0 0 0 0 0 0
+STACK WIN 0 7eacf c 0 0 20 0 0 0 0 0
+STACK WIN 0 7eae0 d 0 0 1c 0 0 0 0 0
+STACK WIN 0 7eaf2 d 0 0 10 0 0 0 0 0
+STACK WIN 0 7eb04 b 0 0 0 0 0 0 0 0
+STACK WIN 0 7eb3c d 0 0 14 0 0 0 0 0
+STACK WIN 0 7eb4e d 0 0 c 0 0 0 0 0
+STACK WIN 0 7eb60 5 0 0 c 0 0 0 0 0
+STACK WIN 0 7eb6a 8 0 0 38 0 0 0 0 0
+STACK WIN 0 7eb77 5 0 0 14 0 0 0 0 0
+STACK WIN 0 7eb81 6 0 0 10 0 0 0 0 0
+STACK WIN 0 7eb8c 8 0 0 1c 0 0 0 0 0
+STACK WIN 0 7ebbe 8 0 0 18 0 0 0 0 0
+STACK WIN 0 7ebcb 8 0 0 4 0 0 0 0 0
+STACK WIN 0 7ebd8 8 0 0 14 0 0 0 0 0
+STACK WIN 0 7ebe5 8 0 0 10 0 0 0 0 0
+STACK WIN 0 7ebf2 8 0 0 24 0 0 0 0 0
+STACK WIN 0 7ebff 8 0 0 8 0 0 0 0 0
+STACK WIN 0 7ec0c 8 0 0 c 0 0 0 0 0
+STACK WIN 0 7ec19 3 0 0 18 0 0 0 0 0
+STACK WIN 0 7ec21 8 0 0 4 0 0 0 0 0
+STACK WIN 0 7ec4c 8 0 0 8 0 0 0 0 0
+STACK WIN 0 7ec59 3 0 0 0 0 0 0 0 0
+STACK WIN 0 7ec98 4 0 0 0 0 0 0 0 0
+STACK WIN 0 7ecbf 8 0 0 c 0 0 0 0 0
+STACK WIN 0 7eccc 8 0 0 18 0 0 0 0 0
+STACK WIN 0 7ecd9 8 0 0 24 0 0 0 0 0
+STACK WIN 0 7ece6 8 0 0 10 0 0 0 0 0
+STACK WIN 0 7ed3f 3 0 0 10 0 0 0 0 0
+STACK WIN 0 7ed47 8 0 0 1c 0 0 0 0 0
+STACK WIN 0 7ed54 5 0 0 38 0 0 0 0 0
+STACK WIN 0 7ed98 8 0 0 8 0 0 0 0 0
+STACK WIN 0 7eda5 8 0 0 c 0 0 0 0 0
+STACK WIN 0 7edb2 8 0 0 4 0 0 0 0 0
+STACK WIN 0 7edbf 8 0 0 2c 0 0 0 0 0
+STACK WIN 0 7edcc 8 0 0 14 0 0 0 0 0
+STACK WIN 0 7edd9 8 0 0 8 0 0 0 0 0
+STACK WIN 0 7ede6 8 0 0 10 0 0 0 0 0
+STACK WIN 0 7ee61 6 0 0 10 0 0 0 0 0
+STACK WIN 0 7ee6c 8 0 0 20 0 0 0 0 0
+STACK WIN 0 7ee79 8 0 0 20 0 0 0 0 0
+STACK WIN 0 7ee86 8 0 0 10 0 0 0 0 0
+STACK WIN 0 7ee93 8 0 0 c 0 0 0 0 0
+STACK WIN 0 7eea0 8 0 0 1c 0 0 0 0 0
+STACK WIN 0 7eead 6 0 0 4 0 0 0 0 0
+STACK WIN 0 7eeb8 8 0 0 24 0 0 0 0 0
+STACK WIN 0 7eec5 8 0 0 18 0 0 0 0 0
+STACK WIN 0 7eed2 8 0 0 14 0 0 0 0 0
+STACK WIN 0 7eedf 8 0 0 20 0 0 0 0 0
+STACK WIN 0 7ef1e 6 0 0 0 0 0 0 0 0
+STACK WIN 0 7ef94 7 0 0 4 0 0 0 0 0
+STACK WIN 0 7efa0 7 0 0 c 0 0 0 0 0
+STACK WIN 0 7efac 7 0 0 8 0 0 0 0 0
+STACK WIN 0 7efb8 7 0 0 10 0 0 0 0 0
+STACK WIN 0 7efc4 7 0 0 28 0 0 0 0 0
+STACK WIN 0 7efd0 7 0 0 20 0 0 0 0 0
+STACK WIN 0 7efdc 6 0 0 4 0 0 0 0 0
+STACK WIN 0 7efe7 6 0 0 18 0 0 0 0 0
+STACK WIN 0 7f052 3 0 0 0 0 0 0 0 0
+STACK WIN 0 7f05a 3 0 0 c 0 0 0 0 0
+STACK WIN 0 7f062 6 0 0 2c 0 0 0 0 0
+STACK WIN 0 7f06d 6 0 0 30 0 0 0 0 0
+STACK WIN 0 7f078 3 0 0 8 0 0 0 0 0
+STACK WIN 0 7f0b0 6 0 0 20 0 0 0 0 0
+STACK WIN 0 7f0bb 5 0 0 4 0 0 0 0 0
+STACK WIN 0 7f0c5 6 0 0 c 0 0 0 0 0
+STACK WIN 0 7f0f5 3 0 0 14 0 0 0 0 0
+STACK WIN 0 7f0fd 6 0 0 0 0 0 0 0 0
+STACK WIN 0 7f125 8 0 0 4 0 0 0 0 0
+STACK WIN 0 7f132 5 0 0 2c 0 0 0 0 0
+STACK WIN 0 7f13c 6 0 0 10 0 0 0 0 0
+STACK WIN 0 7f147 6 0 0 8 0 0 0 0 0
+STACK WIN 0 7f152 6 0 0 14 0 0 0 0 0
+STACK WIN 0 7f19b c 0 0 4 0 0 0 0 0
+STACK WIN 0 7f1ac 6 0 0 c 0 0 0 0 0
+STACK WIN 0 7f1d0 6 0 0 4 0 0 0 0 0
+STACK WIN 0 7f1db 6 0 0 4 0 0 0 0 0
+STACK WIN 0 7f1e6 6 0 0 4 0 0 0 0 0
+STACK WIN 0 7f1f1 6 0 0 10 0 0 0 0 0
+STACK WIN 0 7f1fe 1 0 0 0 0 0 0 0 0
+STACK WIN 0 7f204 c 0 0 10 0 0 0 0 0
+STACK WIN 0 7f215 6 0 0 8 0 0 0 0 0
+STACK WIN 0 7f23b 6 0 0 1c 0 0 0 0 0
+STACK WIN 0 7f246 6 0 0 24 0 0 0 0 0
+STACK WIN 0 7f251 6 0 0 8 0 0 0 0 0
+STACK WIN 0 7f2c2 6 0 0 10 0 0 0 0 0
+STACK WIN 0 7f2cd 8 0 0 4 0 0 0 0 0
+STACK WIN 0 7f2da 6 0 0 10 0 0 0 0 0
+STACK WIN 0 7f2e5 8 0 0 c 0 0 0 0 0
+STACK WIN 0 7f3c0 7 0 0 1c 0 0 0 0 0
+STACK WIN 0 7f3cc 7 0 0 24 0 0 0 0 0
+STACK WIN 0 7f49f 6 0 0 4 0 0 0 0 0
+STACK WIN 0 7f4aa 6 0 0 18 0 0 0 0 0
+STACK WIN 0 7f4b5 6 0 0 1c 0 0 0 0 0
+STACK WIN 0 7f4c0 6 0 0 8 0 0 0 0 0
+STACK WIN 0 7f502 6 0 0 24 0 0 0 0 0
+STACK WIN 0 7f50d 6 0 0 c 0 0 0 0 0
+STACK WIN 0 7f536 6 0 0 14 0 0 0 0 0
+STACK WIN 0 7f55c 6 0 0 10 0 0 0 0 0
+STACK WIN 0 7f59d c 0 0 24 0 0 0 0 0
+STACK WIN 0 7f5ae 6 0 0 1c 0 0 0 0 0
+STACK WIN 0 7f5b9 6 0 0 c 0 0 0 0 0
+STACK WIN 0 7f5c4 6 0 0 10 0 0 0 0 0
+STACK WIN 0 7f5cf 6 0 0 4 0 0 0 0 0
+STACK WIN 0 7f5da 6 0 0 8 0 0 0 0 0
+STACK WIN 0 7f5e5 6 0 0 14 0 0 0 0 0
+STACK WIN 0 7f5f0 6 0 0 18 0 0 0 0 0
+STACK WIN 0 7f5fb 6 0 0 20 0 0 0 0 0
+STACK WIN 0 7f606 f 0 0 10 0 0 0 0 0
+STACK WIN 0 7f61a f 0 0 14 0 0 0 0 0
+STACK WIN 0 7f62e d 0 0 0 0 0 0 0 0
+STACK WIN 0 7f640 10 0 0 4 0 0 0 0 0
+STACK WIN 0 7f655 f 0 0 18 0 0 0 0 0
+STACK WIN 0 7f669 f 0 0 c 0 0 0 0 0
+STACK WIN 0 7f67d f 0 0 4 0 0 0 0 0
+STACK WIN 0 7f691 f 0 0 8 0 0 0 0 0
+STACK WIN 0 7f6a5 8 0 0 5c 0 0 0 0 0
+STACK WIN 0 7f6b2 c 0 0 2c 0 0 0 0 0
+STACK WIN 0 7f6c3 6 0 0 28 0 0 0 0 0
+STACK WIN 0 7f6ce 6 0 0 c 0 0 0 0 0
+STACK WIN 0 7f6d9 5 0 0 30 0 0 0 0 0
+STACK WIN 0 7f731 8 0 0 20 0 0 0 0 0
+STACK WIN 0 7f782 8 0 0 4 0 0 0 0 0
+STACK WIN 0 7f846 8 0 0 14 0 0 0 0 0
+STACK WIN 0 39aa8 e6 a 0 c 1c 0 0 0 1
+STACK WIN 0 dedf 70 3 0 8 c 0 0 0 0
+STACK WIN 0 df4f 23 0 0 0 0 0 0 0 0
+STACK WIN 0 7fc40 12 0 0 0 0 0 0 0 0
diff --git a/google-breakpad/src/processor/testdata/symbols/ld-2.13.so/C32AD7E235EA6112E02A5B9D6219C4850/ld-2.13.so.sym b/google-breakpad/src/processor/testdata/symbols/ld-2.13.so/C32AD7E235EA6112E02A5B9D6219C4850/ld-2.13.so.sym
new file mode 100644
index 0000000..b15688e
--- /dev/null
+++ b/google-breakpad/src/processor/testdata/symbols/ld-2.13.so/C32AD7E235EA6112E02A5B9D6219C4850/ld-2.13.so.sym
@@ -0,0 +1,782 @@
+MODULE Linux x86_64 C32AD7E235EA6112E02A5B9D6219C4850 ld-2.13.so
+PUBLIC 8600 0 _dl_rtld_di_serinfo
+PUBLIC e780 0 _dl_debug_state
+PUBLIC fa80 0 _dl_mcount
+PUBLIC 106e0 0 _dl_get_tls_static_info
+PUBLIC 10930 0 _dl_allocate_tls_init
+PUBLIC 10cf0 0 _dl_deallocate_tls
+PUBLIC 110c0 0 __tls_get_addr
+PUBLIC 11260 0 _dl_allocate_tls
+PUBLIC 114a0 0 _dl_tls_setup
+PUBLIC 117a0 0 _dl_make_stack_executable
+PUBLIC 15480 0 free
+PUBLIC 154c0 0 __libc_memalign
+PUBLIC 155c0 0 malloc
+PUBLIC 155d0 0 realloc
+PUBLIC 15680 0 calloc
+STACK CFI INIT b40 8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT b50 5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT b60 5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT b70 69 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI b71 .cfa: $rsp 16 +
+STACK CFI b74 $rbx: .cfa -16 + ^
+STACK CFI b7e .cfa: $rsp 48 +
+STACK CFI INIT be0 49 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI be1 .cfa: $rsp 16 +
+STACK CFI be4 $rbx: .cfa -16 + ^
+STACK CFI bfb .cfa: $rsp 32 +
+STACK CFI INIT c30 4ed .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c32 .cfa: $rsp 16 +
+STACK CFI c3e .cfa: $rsp 24 +
+STACK CFI c41 $r13: .cfa -24 + ^ $r14: .cfa -16 + ^
+STACK CFI c43 .cfa: $rsp 32 +
+STACK CFI c44 .cfa: $rsp 40 +
+STACK CFI c45 .cfa: $rsp 48 +
+STACK CFI c4c $r12: .cfa -32 + ^ $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI c53 .cfa: $rsp 320 +
+STACK CFI INIT 1120 600 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1121 .cfa: $rsp 16 +
+STACK CFI 1124 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 1130 $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 1720 9b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 172d $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 1736 .cfa: $rsp 96 +
+STACK CFI 1739 $r12: .cfa -16 + ^
+STACK CFI INIT 17c0 33 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 1800 31 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 1840 24 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1841 .cfa: $rsp 16 +
+STACK CFI 1844 $rbx: .cfa -16 + ^
+STACK CFI INIT 1870 92 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1871 .cfa: $rsp 16 +
+STACK CFI 1872 .cfa: $rsp 24 +
+STACK CFI 1876 .cfa: $rsp 48 +
+STACK CFI 187b $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 1910 17 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 1930 217 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1931 .cfa: $rsp 16 +
+STACK CFI 1934 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 193d $r14: .cfa -24 + ^
+STACK CFI 1946 $r13: .cfa -32 + ^
+STACK CFI 194c $r12: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI INIT 1b50 6cb .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1b51 .cfa: $rsp 16 +
+STACK CFI 1b62 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 1b6f $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI 1b75 $r12: .cfa -48 + ^
+STACK CFI 1bb3 $rbx: .cfa -56 + ^
+STACK CFI INIT 2220 1d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 2227 .cfa: $rsp 16 +
+STACK CFI INIT 2240 163 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 2252 .cfa: $rsp 16 +
+STACK CFI 225b $rbx: .cfa -16 + ^
+STACK CFI INIT 23b0 128 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 23c3 .cfa: $rsp 48 +
+STACK CFI 23d8 $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI INIT 24e0 272f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 24e1 .cfa: $rsp 16 +
+STACK CFI 24eb $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 24f2 $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI 2500 $r12: .cfa -48 + ^ $r13: .cfa -40 + ^
+STACK CFI 2551 $rbx: .cfa -56 + ^
+STACK CFI INIT 4c10 33 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 4c11 .cfa: $rsp 16 +
+STACK CFI 4c14 $rbx: .cfa -16 + ^
+STACK CFI INIT 4c50 f7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 4d50 ae .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 4d52 .cfa: $rsp 16 +
+STACK CFI 4d58 $r13: .cfa -16 + ^
+STACK CFI 4d5a .cfa: $rsp 24 +
+STACK CFI 4d5d $r12: .cfa -24 + ^
+STACK CFI 4d5e .cfa: $rsp 32 +
+STACK CFI 4d60 $rbp: .cfa -32 + ^
+STACK CFI 4d61 .cfa: $rsp 40 +
+STACK CFI 4d65 .cfa: $rsp 48 +
+STACK CFI 4d67 $rbx: .cfa -40 + ^
+STACK CFI INIT 4e00 57 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 4e0e .cfa: $rsp 32 +
+STACK CFI 4e11 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 4e60 32a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 4e62 .cfa: $rsp 16 +
+STACK CFI 4e64 .cfa: $rsp 24 +
+STACK CFI 4e66 .cfa: $rsp 32 +
+STACK CFI 4e69 $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI 4e6b .cfa: $rsp 40 +
+STACK CFI 4e6c .cfa: $rsp 48 +
+STACK CFI 4e6e $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^
+STACK CFI 4e6f .cfa: $rsp 56 +
+STACK CFI 4e72 $rbx: .cfa -56 + ^
+STACK CFI 4e76 .cfa: $rsp 128 +
+STACK CFI INIT 5190 dc .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 5192 .cfa: $rsp 16 +
+STACK CFI 5194 .cfa: $rsp 24 +
+STACK CFI 5197 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI 5198 .cfa: $rsp 32 +
+STACK CFI 5199 .cfa: $rsp 40 +
+STACK CFI 519c $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI 51a0 .cfa: $rsp 48 +
+STACK CFI INIT 5270 176 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 5271 .cfa: $rsp 16 +
+STACK CFI 5277 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI INIT 53f0 19c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 53f1 .cfa: $rsp 16 +
+STACK CFI 53f4 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 53ff $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI 542e $rbx: .cfa -56 + ^
+STACK CFI INIT 5590 72 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 559c $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 55b7 .cfa: $rsp 64 +
+STACK CFI 55bd $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT 5610 58c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 5611 .cfa: $rsp 16 +
+STACK CFI 5617 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 561c $r15: .cfa -24 + ^
+STACK CFI 5625 $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^
+STACK CFI 5629 $rbx: .cfa -56 + ^
+STACK CFI INIT 5ba0 438 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 5ba1 .cfa: $rsp 16 +
+STACK CFI 5ba4 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 5bf0 $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 5fe0 119d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 5fe1 .cfa: $rsp 16 +
+STACK CFI 5fe4 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 5feb $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI 5ff0 $r13: .cfa -40 + ^
+STACK CFI 5ff5 $r12: .cfa -48 + ^
+STACK CFI 6017 $rbx: .cfa -56 + ^
+STACK CFI INIT 7180 2c7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7182 .cfa: $rsp 16 +
+STACK CFI 718b $r15: .cfa -16 + ^
+STACK CFI 718d .cfa: $rsp 24 +
+STACK CFI 7190 $r14: .cfa -24 + ^
+STACK CFI 7192 .cfa: $rsp 32 +
+STACK CFI 7195 $r13: .cfa -32 + ^
+STACK CFI 7197 .cfa: $rsp 40 +
+STACK CFI 719a $r12: .cfa -40 + ^
+STACK CFI 719b .cfa: $rsp 48 +
+STACK CFI 719c .cfa: $rsp 56 +
+STACK CFI 719f $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 71a6 .cfa: $rsp 96 +
+STACK CFI INIT 7450 18f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7458 $rbx: .cfa -48 + ^
+STACK CFI 746a $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $rbp: .cfa -40 + ^
+STACK CFI 7478 .cfa: $rsp 48 +
+STACK CFI 747e $r14: .cfa -16 + ^
+STACK CFI INIT 75e0 171 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 75e2 .cfa: $rsp 16 +
+STACK CFI 75eb .cfa: $rsp 24 +
+STACK CFI 75ee $r13: .cfa -24 + ^ $r14: .cfa -16 + ^
+STACK CFI 75f3 .cfa: $rsp 32 +
+STACK CFI 75f6 $r12: .cfa -32 + ^
+STACK CFI 75fa .cfa: $rsp 40 +
+STACK CFI 75fb .cfa: $rsp 48 +
+STACK CFI 7605 $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI INIT 7760 50 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 77b0 8e1 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 77b2 .cfa: $rsp 16 +
+STACK CFI 77b4 .cfa: $rsp 24 +
+STACK CFI 77b7 $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI 77b9 .cfa: $rsp 32 +
+STACK CFI 77bb .cfa: $rsp 40 +
+STACK CFI 77be $r12: .cfa -40 + ^ $r13: .cfa -32 + ^
+STACK CFI 77bf .cfa: $rsp 48 +
+STACK CFI 77c2 $rbp: .cfa -48 + ^
+STACK CFI 77c3 .cfa: $rsp 56 +
+STACK CFI 77c6 $rbx: .cfa -56 + ^
+STACK CFI 77cd .cfa: $rsp 1072 +
+STACK CFI INIT 80a0 48a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 80a1 .cfa: $rsp 16 +
+STACK CFI 80b2 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 80bb $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^
+STACK CFI 80ca $rbx: .cfa -48 + ^
+STACK CFI INIT 8530 cb .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8532 .cfa: $rsp 16 +
+STACK CFI 8534 .cfa: $rsp 24 +
+STACK CFI 8536 .cfa: $rsp 32 +
+STACK CFI 8537 .cfa: $rsp 40 +
+STACK CFI 8538 .cfa: $rsp 48 +
+STACK CFI 853b $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^ $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI INIT 8600 1b6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 860d $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI 861b .cfa: $rsp 80 +
+STACK CFI 8623 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT 87c0 e1 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 88b0 31 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 88b4 .cfa: $rsp 16 +
+STACK CFI INIT 88f0 629 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 88f2 .cfa: $rsp 16 +
+STACK CFI 88f4 .cfa: $rsp 24 +
+STACK CFI 88f6 .cfa: $rsp 32 +
+STACK CFI 88f8 .cfa: $rsp 40 +
+STACK CFI 88f9 .cfa: $rsp 48 +
+STACK CFI 88fa .cfa: $rsp 56 +
+STACK CFI 88fd $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 8901 .cfa: $rsp 96 +
+STACK CFI INIT 8f20 72 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8f21 .cfa: $rsp 16 +
+STACK CFI 8f28 $rbp: .cfa -16 + ^
+STACK CFI 8f29 .cfa: $rsp 24 +
+STACK CFI 8f2b $rbx: .cfa -24 + ^
+STACK CFI INIT 8fa0 bb .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8fa4 .cfa: $rsp 16 +
+STACK CFI INIT 9060 1b5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 906d $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI 907b .cfa: $rsp 64 +
+STACK CFI 908b $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT 9220 873 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9222 .cfa: $rsp 16 +
+STACK CFI 9225 $r15: .cfa -16 + ^
+STACK CFI 9227 .cfa: $rsp 24 +
+STACK CFI 9229 .cfa: $rsp 32 +
+STACK CFI 922c $r13: .cfa -32 + ^ $r14: .cfa -24 + ^
+STACK CFI 922e .cfa: $rsp 40 +
+STACK CFI 922f .cfa: $rsp 48 +
+STACK CFI 9230 .cfa: $rsp 56 +
+STACK CFI 9237 .cfa: $rsp 208 +
+STACK CFI 923b $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 9aa0 f15 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9aa1 .cfa: $rsp 16 +
+STACK CFI 9aa4 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 9aac $r15: .cfa -24 + ^
+STACK CFI 9ab1 $r14: .cfa -32 + ^
+STACK CFI 9ab6 $r13: .cfa -40 + ^
+STACK CFI 9ac0 $r12: .cfa -48 + ^
+STACK CFI 9ae7 $rbx: .cfa -56 + ^
+STACK CFI INIT a9c0 96 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a9c1 .cfa: $rsp 16 +
+STACK CFI a9c4 $rbp: .cfa -16 + ^
+STACK CFI a9c5 .cfa: $rsp 24 +
+STACK CFI a9c8 $rbx: .cfa -24 + ^
+STACK CFI a9d3 .cfa: $rsp 32 +
+STACK CFI INIT aa60 348 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI aa62 .cfa: $rsp 16 +
+STACK CFI aa65 $r15: .cfa -16 + ^
+STACK CFI aa67 .cfa: $rsp 24 +
+STACK CFI aa69 .cfa: $rsp 32 +
+STACK CFI aa6b .cfa: $rsp 40 +
+STACK CFI aa6c .cfa: $rsp 48 +
+STACK CFI aa6f $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $rbp: .cfa -48 + ^
+STACK CFI aa70 .cfa: $rsp 56 +
+STACK CFI aa73 $rbx: .cfa -56 + ^
+STACK CFI aa7a .cfa: $rsp 96 +
+STACK CFI INIT adb0 d9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI adc8 $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI adcc .cfa: $rsp 80 +
+STACK CFI INIT ae90 59 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ae98 .cfa: $rsp 16 +
+STACK CFI ae9b $rbx: .cfa -16 + ^
+STACK CFI INIT aef0 8f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI aef4 .cfa: $rsp 16 +
+STACK CFI af04 $rbx: .cfa -16 + ^
+STACK CFI INIT af80 c9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI af81 .cfa: $rsp 16 +
+STACK CFI af8c $rbx: .cfa -16 + ^
+STACK CFI INIT b050 2d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI b051 .cfa: $rsp 16 +
+STACK CFI b05c $rbx: .cfa -16 + ^
+STACK CFI INIT b080 f97 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI b081 .cfa: $rsp 16 +
+STACK CFI b084 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI b08f $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI b097 $rbx: .cfa -56 + ^
+STACK CFI INIT c020 7d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c022 .cfa: $rsp 16 +
+STACK CFI c025 $r12: .cfa -16 + ^
+STACK CFI c026 .cfa: $rsp 24 +
+STACK CFI c02a $rbp: .cfa -24 + ^
+STACK CFI c02b .cfa: $rsp 32 +
+STACK CFI c04d $rbx: .cfa -32 + ^
+STACK CFI INIT c0a0 1134 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c0a1 .cfa: $rsp 16 +
+STACK CFI c0a7 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI c11b $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT d1e0 38 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d1e1 .cfa: $rsp 16 +
+STACK CFI d1e4 $rbx: .cfa -16 + ^
+STACK CFI INIT d220 10f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d222 .cfa: $rsp 16 +
+STACK CFI d225 $r15: .cfa -16 + ^
+STACK CFI d227 .cfa: $rsp 24 +
+STACK CFI d229 .cfa: $rsp 32 +
+STACK CFI d22b .cfa: $rsp 40 +
+STACK CFI d22e $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^
+STACK CFI d233 .cfa: $rsp 48 +
+STACK CFI d234 .cfa: $rsp 56 +
+STACK CFI d238 .cfa: $rsp 144 +
+STACK CFI d246 $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT d330 5c2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d332 .cfa: $rsp 16 +
+STACK CFI d336 .cfa: $rsp 24 +
+STACK CFI d338 .cfa: $rsp 32 +
+STACK CFI d33a .cfa: $rsp 40 +
+STACK CFI d33d $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI d33e .cfa: $rsp 48 +
+STACK CFI d341 $rbp: .cfa -48 + ^
+STACK CFI d346 .cfa: $rsp 56 +
+STACK CFI d34d .cfa: $rsp 208 +
+STACK CFI d367 $rbx: .cfa -56 + ^
+STACK CFI INIT d900 1ee .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d902 .cfa: $rsp 16 +
+STACK CFI d90a .cfa: $rsp 24 +
+STACK CFI d90f .cfa: $rsp 32 +
+STACK CFI d910 .cfa: $rsp 40 +
+STACK CFI d914 .cfa: $rsp 80 +
+STACK CFI d91f $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI INIT daf0 7f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI dafd $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI db18 .cfa: $rsp 64 +
+STACK CFI db1b $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT db70 e2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI db71 .cfa: $rsp 16 +
+STACK CFI db78 .cfa: $rsp 304 +
+STACK CFI db9a $rbx: .cfa -16 + ^
+STACK CFI INIT dc60 1a1 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI dc7e $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI dc8f .cfa: $rsp 1136 +
+STACK CFI dca6 $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT de10 9a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI de1d $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI de2b .cfa: $rsp 48 +
+STACK CFI de38 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT deb0 14f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI debc $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI dec9 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^
+STACK CFI ded7 .cfa: $rsp 64 +
+STACK CFI deec $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT e000 10e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e002 .cfa: $rsp 16 +
+STACK CFI e004 .cfa: $rsp 24 +
+STACK CFI e006 .cfa: $rsp 32 +
+STACK CFI e009 $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI e00b .cfa: $rsp 40 +
+STACK CFI e00e $r12: .cfa -40 + ^
+STACK CFI e00f .cfa: $rsp 48 +
+STACK CFI e011 $rbp: .cfa -48 + ^
+STACK CFI e012 .cfa: $rsp 56 +
+STACK CFI e015 $rbx: .cfa -56 + ^
+STACK CFI e019 .cfa: $rsp 80 +
+STACK CFI INIT e110 1f8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e111 .cfa: $rsp 16 +
+STACK CFI e114 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI e120 $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT e310 3d9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e311 .cfa: $rsp 16 +
+STACK CFI e314 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI e31f $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI e322 $rbx: .cfa -56 + ^
+STACK CFI INIT e6f0 8a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT e780 2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT e790 7b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT e810 59 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e811 .cfa: $rsp 16 +
+STACK CFI e814 $rbp: .cfa -16 + ^
+STACK CFI e815 .cfa: $rsp 24 +
+STACK CFI e818 $rbx: .cfa -24 + ^
+STACK CFI e81c .cfa: $rsp 32 +
+STACK CFI INIT e870 5f8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e871 .cfa: $rsp 16 +
+STACK CFI e884 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI e88d $r15: .cfa -24 + ^
+STACK CFI e893 $r14: .cfa -32 + ^
+STACK CFI e898 $r13: .cfa -40 + ^
+STACK CFI e89d $r12: .cfa -48 + ^
+STACK CFI e8a0 $rbx: .cfa -56 + ^
+STACK CFI INIT ee70 95 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ee77 .cfa: $rsp 224 +
+STACK CFI INIT ef10 a3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ef17 .cfa: $rsp 224 +
+STACK CFI INIT efc0 a3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI efc7 .cfa: $rsp 224 +
+STACK CFI INIT f070 ac .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f089 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI f090 .cfa: $rsp 192 +
+STACK CFI INIT f120 3f1 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f121 .cfa: $rsp 16 +
+STACK CFI f124 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI f12f $r12: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI f15a $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI INIT f520 4e5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f521 .cfa: $rsp 16 +
+STACK CFI f524 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI f52d $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI f54d $r12: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT fa10 61 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fa12 .cfa: $rsp 16 +
+STACK CFI fa15 $r13: .cfa -16 + ^
+STACK CFI fa17 .cfa: $rsp 24 +
+STACK CFI fa1a $r12: .cfa -24 + ^
+STACK CFI fa1b .cfa: $rsp 32 +
+STACK CFI fa1d $rbp: .cfa -32 + ^
+STACK CFI fa1e .cfa: $rsp 40 +
+STACK CFI fa21 $rbx: .cfa -40 + ^
+STACK CFI fa25 .cfa: $rsp 48 +
+STACK CFI INIT fa80 299 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI faa7 $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^ $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI INIT fd20 7eb .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fd21 .cfa: $rsp 16 +
+STACK CFI fd24 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI fd66 $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 10510 1c6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1051d $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 1052a $r12: .cfa -40 + ^ $r13: .cfa -32 + ^
+STACK CFI 10538 .cfa: $rsp 80 +
+STACK CFI 10548 $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT 106e0 15 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 10700 d7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10702 .cfa: $rsp 16 +
+STACK CFI 1070a .cfa: $rsp 24 +
+STACK CFI 1070d $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^
+STACK CFI 1070e .cfa: $rsp 32 +
+STACK CFI 10715 $rbx: .cfa -32 + ^
+STACK CFI INIT 107e0 63 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 10850 de .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10854 .cfa: $rsp 16 +
+STACK CFI INIT 10930 23c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10932 .cfa: $rsp 16 +
+STACK CFI 10934 .cfa: $rsp 24 +
+STACK CFI 10936 .cfa: $rsp 32 +
+STACK CFI 10938 .cfa: $rsp 40 +
+STACK CFI 10939 .cfa: $rsp 48 +
+STACK CFI 1093a .cfa: $rsp 56 +
+STACK CFI 1093e .cfa: $rsp 96 +
+STACK CFI 1094c $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 10b70 21 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10b80 .cfa: $rsp 16 +
+STACK CFI INIT 10ba0 143 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10bad $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI 10bbb .cfa: $rsp 48 +
+STACK CFI 10bc4 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT 10cf0 a1 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10cf2 .cfa: $rsp 16 +
+STACK CFI 10cf5 $r15: .cfa -16 + ^
+STACK CFI 10cf7 .cfa: $rsp 24 +
+STACK CFI 10cf9 .cfa: $rsp 32 +
+STACK CFI 10cfb .cfa: $rsp 40 +
+STACK CFI 10cfe $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^
+STACK CFI 10cff .cfa: $rsp 48 +
+STACK CFI 10d00 .cfa: $rsp 56 +
+STACK CFI 10d03 $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 10d07 .cfa: $rsp 64 +
+STACK CFI INIT 10da0 31b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10da2 .cfa: $rsp 16 +
+STACK CFI 10da4 .cfa: $rsp 24 +
+STACK CFI 10da6 .cfa: $rsp 32 +
+STACK CFI 10da8 .cfa: $rsp 40 +
+STACK CFI 10da9 .cfa: $rsp 48 +
+STACK CFI 10daa .cfa: $rsp 56 +
+STACK CFI 10dae .cfa: $rsp 128 +
+STACK CFI 10dd3 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 110c0 52 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 110c1 .cfa: $rsp 16 +
+STACK CFI 110c4 $rbx: .cfa -16 + ^
+STACK CFI INIT 11120 131 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 11122 .cfa: $rsp 16 +
+STACK CFI 1112a .cfa: $rsp 24 +
+STACK CFI 1112b .cfa: $rsp 32 +
+STACK CFI 11132 $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI INIT 11260 6a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1126e .cfa: $rsp 32 +
+STACK CFI 11274 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 112d0 1c9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 112d2 .cfa: $rsp 16 +
+STACK CFI 112d4 .cfa: $rsp 24 +
+STACK CFI 112d6 .cfa: $rsp 32 +
+STACK CFI 112d8 .cfa: $rsp 40 +
+STACK CFI 112d9 .cfa: $rsp 48 +
+STACK CFI 112da .cfa: $rsp 56 +
+STACK CFI 112de .cfa: $rsp 64 +
+STACK CFI 112e5 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 114a0 a1 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 114a4 .cfa: $rsp 16 +
+STACK CFI INIT 11550 179 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 11551 .cfa: $rsp 16 +
+STACK CFI 11563 .cfa: $rsp 24 +
+STACK CFI 1156a .cfa: $rsp 4128 +
+STACK CFI 11576 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 116d0 cb .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 116dd $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI 116e1 .cfa: $rsp 32 +
+STACK CFI INIT 117a0 91 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 117ad $r12: .cfa -16 + ^ $rbx: .cfa -32 + ^
+STACK CFI 117b6 .cfa: $rsp 32 +
+STACK CFI 117be $rbp: .cfa -24 + ^
+STACK CFI INIT 11840 1d4 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 11842 .cfa: $rsp 16 +
+STACK CFI 1184e .cfa: $rsp 24 +
+STACK CFI 11853 .cfa: $rsp 32 +
+STACK CFI 11855 .cfa: $rsp 40 +
+STACK CFI 11856 .cfa: $rsp 48 +
+STACK CFI 11857 .cfa: $rsp 56 +
+STACK CFI 11862 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 11a20 63 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 11a90 364 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 11a91 .cfa: $rsp 16 +
+STACK CFI 11a94 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 11a9e $r12: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 11aa9 $r13: .cfa -40 + ^ $r14: .cfa -32 + ^
+STACK CFI 11abb $r15: .cfa -24 + ^
+STACK CFI INIT 11e00 1d4 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 11e02 .cfa: $rsp 16 +
+STACK CFI 11e06 .cfa: $rsp 24 +
+STACK CFI 11e08 .cfa: $rsp 32 +
+STACK CFI 11e09 .cfa: $rsp 40 +
+STACK CFI 11e0c $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^ $rbp: .cfa -40 + ^
+STACK CFI 11e0d .cfa: $rsp 48 +
+STACK CFI 11e19 $rbx: .cfa -48 + ^
+STACK CFI INIT 11fe0 9a8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 11fe1 .cfa: $rsp 16 +
+STACK CFI 11fe9 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 11ff5 $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 12990 158 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 12991 .cfa: $rsp 16 +
+STACK CFI 12997 $rbp: .cfa -16 + ^
+STACK CFI 1299b .cfa: $rsp 24 +
+STACK CFI 1299e $rbx: .cfa -24 + ^
+STACK CFI 129a2 .cfa: $rsp 32 +
+STACK CFI INIT 12af0 eaa .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 12af1 .cfa: $rsp 16 +
+STACK CFI 12b0b $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 12b2e $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 139a0 80 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 139a1 .cfa: $rsp 16 +
+STACK CFI 139ab $rbx: .cfa -16 + ^
+STACK CFI INIT 13a20 61 .cfa: $rsp 24 + .ra: .cfa -8 + ^
+STACK CFI 13a24 .cfa: $rsp 80 +
+STACK CFI 13a7e .cfa: $rsp 8 +
+STACK CFI INIT 13a90 55d .cfa: $rsp 24 + .ra: .cfa -8 + ^
+STACK CFI 13a94 .cfa: $rsp 56 +
+STACK CFI 13a98 $rbx: .cfa -56 + ^
+STACK CFI 13aa0 .cfa: $rbx 56 +
+STACK CFI 13dfa $rbx: $rbx .cfa: $rsp 56 +
+STACK CFI 13dfe .cfa: $rsp 8 +
+STACK CFI 13e01 $rbx: .cfa -56 + ^ .cfa: $rbx 56 +
+STACK CFI 13eda $rbx: $rbx .cfa: $rsp 56 +
+STACK CFI 13ede .cfa: $rsp 8 +
+STACK CFI 13edf $rbx: .cfa -56 + ^ .cfa: $rbx 56 +
+STACK CFI 13f60 $rbx: $rbx .cfa: $rsp 56 +
+STACK CFI 13f64 .cfa: $rsp 8 +
+STACK CFI 13f67 $rbx: .cfa -56 + ^ .cfa: $rbx 56 +
+STACK CFI 13fe8 $rbx: $rbx .cfa: $rsp 56 +
+STACK CFI 13fec .cfa: $rsp 8 +
+STACK CFI INIT 13ff0 e6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 140e0 ab .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 14190 2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 141a0 1c1 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 141a2 .cfa: $rsp 16 +
+STACK CFI 141a3 .cfa: $rsp 24 +
+STACK CFI 141a4 .cfa: $rsp 32 +
+STACK CFI 141ab .cfa: $rsp 496 +
+STACK CFI 141b2 $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI INIT 14370 741 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 14371 .cfa: $rsp 16 +
+STACK CFI 14374 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 1437f $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI 1438e $rbx: .cfa -56 + ^
+STACK CFI INIT 14ac0 18a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 14ac2 .cfa: $rsp 16 +
+STACK CFI 14ac4 .cfa: $rsp 24 +
+STACK CFI 14ac6 .cfa: $rsp 32 +
+STACK CFI 14ac8 .cfa: $rsp 40 +
+STACK CFI 14ac9 .cfa: $rsp 48 +
+STACK CFI 14aca .cfa: $rsp 56 +
+STACK CFI 14ace .cfa: $rsp 160 +
+STACK CFI 14ad5 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 14c50 325 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 14c52 .cfa: $rsp 16 +
+STACK CFI 14c54 .cfa: $rsp 24 +
+STACK CFI 14c56 .cfa: $rsp 32 +
+STACK CFI 14c58 .cfa: $rsp 40 +
+STACK CFI 14c59 .cfa: $rsp 48 +
+STACK CFI 14c5c $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^
+STACK CFI 14c5d .cfa: $rsp 56 +
+STACK CFI 14c61 .cfa: $rsp 80 +
+STACK CFI 14c90 $rbx: .cfa -56 + ^
+STACK CFI INIT 14f80 6a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 14ff0 3e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 15030 a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 15040 e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 15044 .cfa: $rsp 16 +
+STACK CFI INIT 15050 4c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 15054 .cfa: $rsp 32 +
+STACK CFI INIT 150a0 93 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 150a4 .cfa: $rsp 16 +
+STACK CFI INIT 15140 53 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 15144 .cfa: $rsp 16 +
+STACK CFI INIT 151a0 173 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 151a4 .cfa: $rsp 16 +
+STACK CFI INIT 15320 d8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 15400 74 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1540d $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 15419 .cfa: $rsp 448 +
+STACK CFI 1541c $r12: .cfa -16 + ^
+STACK CFI INIT 15480 3c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 15484 .cfa: $rsp 16 +
+STACK CFI INIT 154c0 f4 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 154c1 .cfa: $rsp 16 +
+STACK CFI 154c4 $rbp: .cfa -16 + ^
+STACK CFI 154c5 .cfa: $rsp 24 +
+STACK CFI 154c9 .cfa: $rsp 32 +
+STACK CFI 154d9 $rbx: .cfa -24 + ^
+STACK CFI INIT 155c0 d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 155d0 ad .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 155de .cfa: $rsp 32 +
+STACK CFI 155e4 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 15680 35 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 156c0 50 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 15710 91 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1571e .cfa: $rsp 32 +
+STACK CFI 15725 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 157b0 5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 157c0 f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 157d0 39 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 157d4 .cfa: $rsp 16 +
+STACK CFI INIT 15810 93 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 15812 .cfa: $rsp 16 +
+STACK CFI 15814 .cfa: $rsp 24 +
+STACK CFI 15815 .cfa: $rsp 32 +
+STACK CFI 15816 .cfa: $rsp 40 +
+STACK CFI 15819 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI 1581d .cfa: $rsp 48 +
+STACK CFI INIT 158b0 2b9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 158b2 .cfa: $rsp 16 +
+STACK CFI 158b4 .cfa: $rsp 24 +
+STACK CFI 158b6 .cfa: $rsp 32 +
+STACK CFI 158b9 $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI 158c2 .cfa: $rsp 40 +
+STACK CFI 158c5 $r12: .cfa -40 + ^
+STACK CFI 158c6 .cfa: $rsp 48 +
+STACK CFI 158c7 .cfa: $rsp 56 +
+STACK CFI 158cb $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^ .cfa: $rsp 80 +
+STACK CFI INIT 15b70 1cd .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 15b7d $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 15b86 .cfa: $rsp 80 +
+STACK CFI 15b97 $r12: .cfa -16 + ^
+STACK CFI INIT 15d40 5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 15d45 19 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 15d5e 96 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 15dad .cfa: $rsp 80 +
+STACK CFI 15df2 .cfa: $rsp 8 +
+STACK CFI INIT 15df4 7b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 15e00 .cfa: $rsp 16 +
+STACK CFI 15e04 .cfa: $rsp 88 +
+STACK CFI 15e6d .cfa: $rsp 8 +
+STACK CFI INIT 15e6f 73 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 15e74 .cfa: $rsp 80 +
+STACK CFI 15edf .cfa: $rsp 8 +
+STACK CFI INIT 15ef0 c3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 15f03 $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 15f0a .cfa: $rsp 176 +
+STACK CFI INIT 15fc0 32 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 15fc4 .cfa: $rsp 16 +
+STACK CFI INIT 16000 55 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 16060 d7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 16067 .cfa: $rsp 208 +
+STACK CFI INIT 16140 7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 16150 3c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 16190 3c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 161d0 24 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 16200 24 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 16230 24 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 16260 24 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 16290 24 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 162c0 da .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 163a0 68 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 163a4 .cfa: $rsp 16 +
+STACK CFI INIT 16410 27 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 16440 24 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 16470 24 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 164a0 24 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 164d0 24 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 16500 44 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 16550 8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 16560 4f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 165b0 4a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 165dd $r12: .cfa 16 + ^ $r13: .cfa 24 + ^ $r14: .cfa 32 + ^ $r15: .cfa 40 + ^ $rbp: $r9 $rbx: .cfa 0 + ^ $rsp: $r8 .cfa: $rdi 0 + .ra: $rdx
+STACK CFI INIT 1660f a .ra: $rip
+STACK CFI INIT 16620 1f2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 16627 .cfa: $rsp 216 +
+STACK CFI INIT 16820 1b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 16840 7c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 168c0 21 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 168f0 dc .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 169d0 e9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 16ac0 6d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 16b30 75 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 16bb0 4d5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 16bb2 .cfa: $rsp 16 +
+STACK CFI 16bb8 .cfa: $rsp 24 +
+STACK CFI 16bba .cfa: $rsp 32 +
+STACK CFI 16bbc .cfa: $rsp 40 +
+STACK CFI 16bbd .cfa: $rsp 48 +
+STACK CFI 16bbe .cfa: $rsp 56 +
+STACK CFI 16bc4 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 17090 197 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 17092 .cfa: $rsp 16 +
+STACK CFI 1709a .cfa: $rsp 24 +
+STACK CFI 170a0 $r13: .cfa -24 + ^ $r14: .cfa -16 + ^
+STACK CFI 170a2 .cfa: $rsp 32 +
+STACK CFI 170a5 $r12: .cfa -32 + ^
+STACK CFI 170a6 .cfa: $rsp 40 +
+STACK CFI 170a7 .cfa: $rsp 48 +
+STACK CFI 170aa $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI INIT 17230 550 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 17780 14d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 178d0 dc .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 179b0 160 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 17b10 135 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 17c50 126 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 17c57 .cfa: $rsp 16 +
+STACK CFI 17c6c .cfa: $rsp 24 +
+STACK CFI 17c79 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 17d80 18b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 17f10 17b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 17f4b $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI INIT 18090 4c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 180e0 10 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 180f0 1b2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 180f1 .cfa: $rsp 16 +
+STACK CFI 180f6 $rbx: .cfa -16 + ^
+STACK CFI INIT 182b0 292 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 182b2 .cfa: $rsp 16 +
+STACK CFI 182b5 $r15: .cfa -16 + ^
+STACK CFI 182b7 .cfa: $rsp 24 +
+STACK CFI 182ba $r14: .cfa -24 + ^
+STACK CFI 182bc .cfa: $rsp 32 +
+STACK CFI 182bf $r13: .cfa -32 + ^
+STACK CFI 182c1 .cfa: $rsp 40 +
+STACK CFI 182c2 .cfa: $rsp 48 +
+STACK CFI 182c3 .cfa: $rsp 56 +
+STACK CFI 182c5 $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 182c9 .cfa: $rsp 80 +
+STACK CFI INIT 18550 f7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 18552 .cfa: $rsp 16 +
+STACK CFI 18556 .cfa: $rsp 24 +
+STACK CFI 18558 .cfa: $rsp 32 +
+STACK CFI 1855a .cfa: $rsp 40 +
+STACK CFI 1855b .cfa: $rsp 48 +
+STACK CFI 1855d $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^
+STACK CFI 1855e .cfa: $rsp 56 +
+STACK CFI 18562 .cfa: $rsp 96 +
+STACK CFI 1856b $rbx: .cfa -56 + ^
+STACK CFI INIT 18650 2f6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 18663 .cfa: $rsp 32 +
+STACK CFI 1866d $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI INIT 18950 5f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 18954 .cfa: $rsp 32 +
+STACK CFI INIT 189b0 24 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 189e0 1f2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 189e3 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI INIT 18be0 17 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 18c00 83 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 18c02 .cfa: $rsp 16 +
+STACK CFI 18c05 $r15: .cfa -16 + ^
+STACK CFI 18c07 .cfa: $rsp 24 +
+STACK CFI 18c0a $r14: .cfa -24 + ^
+STACK CFI 18c0c .cfa: $rsp 32 +
+STACK CFI 18c0e .cfa: $rsp 40 +
+STACK CFI 18c11 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^
+STACK CFI 18c12 .cfa: $rsp 48 +
+STACK CFI 18c15 $rbp: .cfa -48 + ^
+STACK CFI 18c16 .cfa: $rsp 56 +
+STACK CFI 18c19 $rbx: .cfa -56 + ^
+STACK CFI 18c1d .cfa: $rsp 80 +
diff --git a/google-breakpad/src/processor/testdata/symbols/libc-2.13.so/F4F8DFCD5A5FB5A7CE64717E9E6AE3890/libc-2.13.so.sym b/google-breakpad/src/processor/testdata/symbols/libc-2.13.so/F4F8DFCD5A5FB5A7CE64717E9E6AE3890/libc-2.13.so.sym
new file mode 100644
index 0000000..e15670d
--- /dev/null
+++ b/google-breakpad/src/processor/testdata/symbols/libc-2.13.so/F4F8DFCD5A5FB5A7CE64717E9E6AE3890/libc-2.13.so.sym
@@ -0,0 +1,13458 @@
+MODULE Linux x86_64 F4F8DFCD5A5FB5A7CE64717E9E6AE3890 libc-2.13.so
+PUBLIC 1eb80 0 __libc_init_first
+PUBLIC 1edb0 0 __libc_start_main
+PUBLIC 1ef80 0 gnu_get_libc_release
+PUBLIC 1ef90 0 gnu_get_libc_version
+PUBLIC 1f3f0 0 __get_cpu_features
+PUBLIC 1f410 0 __errno_location
+PUBLIC 1f4e0 0 iconv_open
+PUBLIC 1f700 0 iconv
+PUBLIC 1f8b0 0 iconv_close
+PUBLIC 203d0 0 __gconv_get_modules_db
+PUBLIC 203e0 0 __gconv_get_alias_db
+PUBLIC 28090 0 __gconv_get_cache
+PUBLIC 28c60 0 __ctype_get_mb_cur_max
+PUBLIC 28f20 0 setlocale
+PUBLIC 2a7d0 0 localeconv
+PUBLIC 2a990 0 nl_langinfo
+PUBLIC 2a9a0 0 __nl_langinfo_l
+PUBLIC 2aa00 0 __newlocale
+PUBLIC 2b0b0 0 duplocale
+PUBLIC 2b250 0 __freelocale
+PUBLIC 2b310 0 uselocale
+PUBLIC 2b530 0 __assert_fail
+PUBLIC 2b680 0 __assert_perror_fail
+PUBLIC 2b7e0 0 __assert
+PUBLIC 2b7f0 0 tolower
+PUBLIC 2b820 0 toupper
+PUBLIC 2b850 0 isxdigit
+PUBLIC 2b890 0 isupper
+PUBLIC 2b8d0 0 isspace
+PUBLIC 2b910 0 ispunct
+PUBLIC 2b950 0 isprint
+PUBLIC 2b990 0 isgraph
+PUBLIC 2b9d0 0 islower
+PUBLIC 2ba10 0 isdigit
+PUBLIC 2ba50 0 iscntrl
+PUBLIC 2ba90 0 isalpha
+PUBLIC 2bad0 0 isalnum
+PUBLIC 2bb10 0 _tolower
+PUBLIC 2bb30 0 _toupper
+PUBLIC 2bb50 0 __toascii_l
+PUBLIC 2bb60 0 __isascii_l
+PUBLIC 2bb70 0 isblank_l
+PUBLIC 2bb80 0 isblank
+PUBLIC 2bbc0 0 isalnum_l
+PUBLIC 2bbd0 0 isalpha_l
+PUBLIC 2bbf0 0 iscntrl_l
+PUBLIC 2bc00 0 isdigit_l
+PUBLIC 2bc20 0 __islower_l
+PUBLIC 2bc40 0 __isgraph_l
+PUBLIC 2bc60 0 isprint_l
+PUBLIC 2bc80 0 ispunct_l
+PUBLIC 2bc90 0 isspace_l
+PUBLIC 2bcb0 0 isupper_l
+PUBLIC 2bcd0 0 __isxdigit_l
+PUBLIC 2bcf0 0 __tolower_l
+PUBLIC 2bd00 0 toupper_l
+PUBLIC 2bd10 0 isctype
+PUBLIC 2bd30 0 __ctype_tolower_loc
+PUBLIC 2bd70 0 __ctype_toupper_loc
+PUBLIC 2bdb0 0 __ctype_b_loc
+PUBLIC 2c1f0 0 bind_textdomain_codeset
+PUBLIC 2c210 0 bindtextdomain
+PUBLIC 2c230 0 dcgettext
+PUBLIC 2c240 0 dgettext
+PUBLIC 2c250 0 gettext
+PUBLIC 2db60 0 dcngettext
+PUBLIC 2db70 0 dngettext
+PUBLIC 2db80 0 ngettext
+PUBLIC 2f5e0 0 textdomain
+PUBLIC 30b00 0 catgets
+PUBLIC 30ba0 0 catclose
+PUBLIC 30c10 0 catopen
+PUBLIC 30e50 0 __open_catalog
+PUBLIC 31710 0 isinf
+PUBLIC 31750 0 isnan
+PUBLIC 31780 0 finite
+PUBLIC 317a0 0 copysign
+PUBLIC 317c0 0 modf
+PUBLIC 318b0 0 scalbln
+PUBLIC 319c0 0 frexp
+PUBLIC 31a70 0 ldexp
+PUBLIC 31b00 0 __signbit
+PUBLIC 31b10 0 __isinff
+PUBLIC 31b40 0 __isnanf
+PUBLIC 31b60 0 finitef
+PUBLIC 31b80 0 copysignf
+PUBLIC 31ba0 0 modff
+PUBLIC 31c30 0 scalbnf
+PUBLIC 31d10 0 frexpf
+PUBLIC 31d80 0 ldexpf
+PUBLIC 31e10 0 __signbitf
+PUBLIC 31e20 0 __isinfl
+PUBLIC 31e70 0 __isnanl
+PUBLIC 31eb0 0 finitel
+PUBLIC 31ec0 0 copysignl
+PUBLIC 31ee0 0 modfl
+PUBLIC 32060 0 scalbnl
+PUBLIC 32080 0 frexpl
+PUBLIC 32120 0 ldexpl
+PUBLIC 321b0 0 __signbitl
+PUBLIC 321f0 0 __sigsetjmp
+PUBLIC 32290 0 setjmp
+PUBLIC 322a0 0 _setjmp
+PUBLIC 322b0 0 _longjmp
+PUBLIC 32380 0 signal
+PUBLIC 32440 0 gsignal
+PUBLIC 324b0 0 killpg
+PUBLIC 32700 0 sigaction
+PUBLIC 32720 0 sigprocmask
+PUBLIC 32750 0 kill
+PUBLIC 32780 0 sigpending
+PUBLIC 327e0 0 sigsuspend
+PUBLIC 328f0 0 sigwait
+PUBLIC 32940 0 sigblock
+PUBLIC 329a0 0 sigsetmask
+PUBLIC 32a80 0 __sigpause
+PUBLIC 32ad0 0 __xpg_sigpause
+PUBLIC 32ae0 0 sigpause
+PUBLIC 32af0 0 sigvec
+PUBLIC 32be0 0 sigstack
+PUBLIC 32c40 0 sigaltstack
+PUBLIC 32c70 0 siginterrupt
+PUBLIC 32d40 0 __sigismember
+PUBLIC 32d60 0 __sigaddset
+PUBLIC 32d80 0 __sigdelset
+PUBLIC 32da0 0 sigemptyset
+PUBLIC 32dd0 0 sigfillset
+PUBLIC 32e80 0 sigaddset
+PUBLIC 32ec0 0 sigdelset
+PUBLIC 32f00 0 sigismember
+PUBLIC 32f50 0 sigreturn
+PUBLIC 32f70 0 siggetmask
+PUBLIC 32f80 0 sysv_signal
+PUBLIC 33010 0 sigisemptyset
+PUBLIC 33060 0 sigandset
+PUBLIC 330b0 0 sigorset
+PUBLIC 33100 0 __libc_current_sigrtmin_private
+PUBLIC 33110 0 __libc_current_sigrtmax
+PUBLIC 33120 0 __libc_allocate_rtsig_private
+PUBLIC 33200 0 sigtimedwait
+PUBLIC 332f0 0 sigwaitinfo
+PUBLIC 33340 0 sigqueue
+PUBLIC 333f0 0 sighold
+PUBLIC 33460 0 sigrelse
+PUBLIC 334d0 0 sigignore
+PUBLIC 33520 0 sigset
+PUBLIC 35520 0 atof
+PUBLIC 35530 0 atoi
+PUBLIC 35550 0 atol
+PUBLIC 35560 0 atoll
+PUBLIC 35570 0 abort
+PUBLIC 35810 0 bsearch
+PUBLIC 36070 0 qsort_r
+PUBLIC 363a0 0 qsort
+PUBLIC 363b0 0 getenv
+PUBLIC 364d0 0 putenv
+PUBLIC 36550 0 clearenv
+PUBLIC 365e0 0 unsetenv
+PUBLIC 36b60 0 setenv
+PUBLIC 36ce0 0 __secure_getenv
+PUBLIC 36e30 0 exit
+PUBLIC 36e50 0 on_exit
+PUBLIC 37080 0 __cxa_atexit
+PUBLIC 370d0 0 __cxa_finalize
+PUBLIC 37230 0 quick_exit
+PUBLIC 37250 0 __cxa_at_quick_exit
+PUBLIC 37270 0 abs
+PUBLIC 37280 0 imaxabs
+PUBLIC 372a0 0 llabs
+PUBLIC 372c0 0 div
+PUBLIC 372f0 0 imaxdiv
+PUBLIC 37320 0 lldiv
+PUBLIC 37350 0 random
+PUBLIC 373c0 0 setstate
+PUBLIC 37440 0 initstate
+PUBLIC 374c0 0 srand
+PUBLIC 37630 0 setstate_r
+PUBLIC 37720 0 random_r
+PUBLIC 377c0 0 srandom_r
+PUBLIC 378c0 0 initstate_r
+PUBLIC 37a00 0 rand
+PUBLIC 37a10 0 rand_r
+PUBLIC 37a60 0 drand48
+PUBLIC 37a90 0 erand48
+PUBLIC 37ab0 0 lrand48
+PUBLIC 37ae0 0 nrand48
+PUBLIC 37b00 0 mrand48
+PUBLIC 37b30 0 jrand48
+PUBLIC 37b50 0 srand48
+PUBLIC 37b60 0 seed48
+PUBLIC 37b80 0 lcong48
+PUBLIC 37b90 0 drand48_r
+PUBLIC 37ba0 0 erand48_r
+PUBLIC 37c20 0 lrand48_r
+PUBLIC 37c40 0 nrand48_r
+PUBLIC 37c90 0 mrand48_r
+PUBLIC 37cb0 0 jrand48_r
+PUBLIC 37d00 0 srand48_r
+PUBLIC 37d40 0 seed48_r
+PUBLIC 37d80 0 lcong48_r
+PUBLIC 37e40 0 strtoll
+PUBLIC 37e60 0 __strtoll_internal
+PUBLIC 37e70 0 strtoul
+PUBLIC 37e90 0 __strtoull_internal
+PUBLIC 38300 0 strtoll_l
+PUBLIC 38740 0 strtoull_l
+PUBLIC 38750 0 strtof
+PUBLIC 38770 0 __strtof_internal
+PUBLIC 38780 0 strtod
+PUBLIC 387a0 0 __strtod_internal
+PUBLIC 387b0 0 strtold
+PUBLIC 387d0 0 __strtold_internal
+PUBLIC 3ae10 0 strtof_l
+PUBLIC 3d4f0 0 __strtod_l
+PUBLIC 3fb10 0 strtold_l
+PUBLIC 3ff80 0 __libc_system
+PUBLIC 401b0 0 realpath
+PUBLIC 40670 0 canonicalize_file_name
+PUBLIC 40680 0 a64l
+PUBLIC 406d0 0 l64a
+PUBLIC 40720 0 getsubopt
+PUBLIC 40830 0 __xpg_basename
+PUBLIC 408e0 0 strtoimax
+PUBLIC 408f0 0 strtoumax
+PUBLIC 40900 0 getcontext
+PUBLIC 409b0 0 setcontext
+PUBLIC 40a50 0 makecontext
+PUBLIC 40c50 0 swapcontext
+PUBLIC 40d60 0 strfmon
+PUBLIC 41fa0 0 strfmon_l
+PUBLIC 42030 0 mblen
+PUBLIC 420c0 0 mbstowcs
+PUBLIC 420f0 0 mbtowc
+PUBLIC 42180 0 wcstombs
+PUBLIC 421b0 0 wctomb
+PUBLIC 42220 0 wcstoimax
+PUBLIC 42230 0 wcstoumax
+PUBLIC 42300 0 rpmatch
+PUBLIC 42410 0 addseverity
+PUBLIC 426a0 0 fmtmsg
+PUBLIC 43040 0 ctermid
+PUBLIC 43070 0 cuserid
+PUBLIC 43680 0 _IO_vfprintf
+PUBLIC 48e40 0 vprintf
+PUBLIC 49250 0 __printf_fp
+PUBLIC 4b9c0 0 register_printf_specifier
+PUBLIC 4bab0 0 register_printf_function
+PUBLIC 4bb00 0 parse_printf_format
+PUBLIC 4d800 0 register_printf_modifier
+PUBLIC 4d9b0 0 register_printf_type
+PUBLIC 4dac0 0 printf_size_info
+PUBLIC 4dae0 0 printf_size
+PUBLIC 4e350 0 _IO_fprintf
+PUBLIC 4e3e0 0 _IO_printf
+PUBLIC 4e490 0 snprintf
+PUBLIC 4e520 0 sprintf
+PUBLIC 4e5b0 0 asprintf
+PUBLIC 4e640 0 dprintf
+PUBLIC 4e6d0 0 _IO_vfscanf
+PUBLIC 56b90 0 vfscanf
+PUBLIC 56bd0 0 fscanf
+PUBLIC 56c60 0 scanf
+PUBLIC 56d10 0 _IO_sscanf
+PUBLIC 56e30 0 perror
+PUBLIC 56f20 0 psignal
+PUBLIC 57030 0 tmpfile
+PUBLIC 570c0 0 tmpnam
+PUBLIC 57150 0 tmpnam_r
+PUBLIC 571a0 0 tempnam
+PUBLIC 57740 0 getline
+PUBLIC 57750 0 getw
+PUBLIC 57790 0 putw
+PUBLIC 577c0 0 remove
+PUBLIC 57800 0 rename
+PUBLIC 57830 0 renameat
+PUBLIC 57860 0 flockfile
+PUBLIC 578c0 0 ftrylockfile
+PUBLIC 57930 0 _IO_funlockfile
+PUBLIC 57980 0 __isoc99_scanf
+PUBLIC 57b60 0 __isoc99_vscanf
+PUBLIC 57cc0 0 __isoc99_fscanf
+PUBLIC 57e90 0 __isoc99_vfscanf
+PUBLIC 57fd0 0 __isoc99_sscanf
+PUBLIC 58060 0 __isoc99_vsscanf
+PUBLIC 58110 0 psiginfo
+PUBLIC 58a00 0 vfwprintf
+PUBLIC 66ab0 0 vfwscanf
+PUBLIC 67a70 0 _IO_file_doallocate
+PUBLIC 67b80 0 fclose
+PUBLIC 67e20 0 fdopen
+PUBLIC 68070 0 fflush
+PUBLIC 681c0 0 fgetpos
+PUBLIC 683c0 0 fgets
+PUBLIC 686c0 0 fopen
+PUBLIC 68860 0 fopencookie
+PUBLIC 68970 0 fputs
+PUBLIC 68b20 0 fread
+PUBLIC 68cc0 0 fsetpos64
+PUBLIC 68e70 0 ftell
+PUBLIC 69000 0 fwrite
+PUBLIC 691e0 0 getdelim
+PUBLIC 694d0 0 _IO_getline
+PUBLIC 694e0 0 _IO_getline_info
+PUBLIC 69670 0 gets
+PUBLIC 69860 0 _IO_padn
+PUBLIC 69970 0 _IO_proc_close
+PUBLIC 69b50 0 _IO_proc_open
+PUBLIC 69f20 0 popen
+PUBLIC 6a060 0 _IO_puts
+PUBLIC 6a340 0 _IO_seekoff
+PUBLIC 6a500 0 _IO_seekpos
+PUBLIC 6a630 0 setbuffer
+PUBLIC 6a7d0 0 _IO_setvbuf
+PUBLIC 6a9d0 0 _IO_ungetc
+PUBLIC 6aab0 0 vsprintf
+PUBLIC 6ab70 0 vsscanf
+PUBLIC 6ac10 0 putchar
+PUBLIC 6ad70 0 putchar_unlocked
+PUBLIC 6b3b0 0 clearerr
+PUBLIC 6b470 0 _IO_feof
+PUBLIC 6b540 0 _IO_ferror
+PUBLIC 6b610 0 fileno_unlocked
+PUBLIC 6b640 0 fputc
+PUBLIC 6b790 0 freopen
+PUBLIC 6ba40 0 fseek
+PUBLIC 6bb80 0 getc
+PUBLIC 6bcc0 0 getchar
+PUBLIC 6be10 0 open_memstream
+PUBLIC 6bfc0 0 pclose
+PUBLIC 6bfd0 0 _IO_putc
+PUBLIC 6c120 0 rewind
+PUBLIC 6c250 0 setbuf
+PUBLIC 6c260 0 setlinebuf
+PUBLIC 6c270 0 vasprintf
+PUBLIC 6c400 0 vdprintf
+PUBLIC 6c560 0 vscanf
+PUBLIC 6c600 0 vsnprintf
+PUBLIC 6c880 0 obstack_vprintf
+PUBLIC 6ca40 0 obstack_printf
+PUBLIC 6cad0 0 fcloseall
+PUBLIC 6cae0 0 fseeko64
+PUBLIC 6cc20 0 ftello64
+PUBLIC 6cdb0 0 freopen64
+PUBLIC 6d060 0 __fbufsize
+PUBLIC 6d090 0 __freading
+PUBLIC 6d0c0 0 __fwriting
+PUBLIC 6d0d0 0 __freadable
+PUBLIC 6d0e0 0 __fwritable
+PUBLIC 6d0f0 0 __flbf
+PUBLIC 6d100 0 __fpurge
+PUBLIC 6d170 0 __fpending
+PUBLIC 6d1a0 0 __fsetlocking
+PUBLIC 6d5f0 0 __libc_fatal
+PUBLIC 6d6a0 0 fmemopen
+PUBLIC 6d970 0 clearerr_unlocked
+PUBLIC 6d980 0 feof_unlocked
+PUBLIC 6d990 0 ferror_unlocked
+PUBLIC 6d9a0 0 fputc_unlocked
+PUBLIC 6d9d0 0 getc_unlocked
+PUBLIC 6d9f0 0 getchar_unlocked
+PUBLIC 6da20 0 fflush_unlocked
+PUBLIC 6da50 0 putc_unlocked
+PUBLIC 6da80 0 _IO_peekc_locked
+PUBLIC 6dbc0 0 fread_unlocked
+PUBLIC 6dc20 0 fwrite_unlocked
+PUBLIC 6dcc0 0 fgets_unlocked
+PUBLIC 6dd80 0 fputs_unlocked
+PUBLIC 6df50 0 swprintf
+PUBLIC 6e060 0 vswprintf
+PUBLIC 6e160 0 vswscanf
+PUBLIC 6e210 0 swscanf
+PUBLIC 6e2a0 0 _IO_least_wmarker
+PUBLIC 6e2e0 0 _IO_switch_to_main_wget_area
+PUBLIC 6e320 0 _IO_switch_to_wbackup_area
+PUBLIC 6e360 0 _IO_wdefault_uflow
+PUBLIC 6e390 0 _IO_wdoallocbuf
+PUBLIC 6e3e0 0 _IO_switch_to_wget_mode
+PUBLIC 6e460 0 _IO_sputbackwc
+PUBLIC 6e4b0 0 _IO_sungetwc
+PUBLIC 6e500 0 _IO_adjust_wcolumn
+PUBLIC 6e550 0 _IO_init_wmarker
+PUBLIC 6e5d0 0 _IO_wmarker_delta
+PUBLIC 6e620 0 _IO_seekwmark
+PUBLIC 6e6c0 0 _IO_unsave_wmarkers
+PUBLIC 6e6f0 0 _IO_free_wbackup_area
+PUBLIC 6e740 0 _IO_wdefault_doallocate
+PUBLIC 6e790 0 __woverflow
+PUBLIC 6e7e0 0 _IO_wdefault_xsputn
+PUBLIC 6eae0 0 __wunderflow
+PUBLIC 6ebf0 0 _IO_wdefault_xsgetn
+PUBLIC 6ecc0 0 __wuflow
+PUBLIC 6ede0 0 _IO_wdefault_pbackfail
+PUBLIC 6ef80 0 _IO_wsetb
+PUBLIC 6f030 0 _IO_wdefault_finish
+PUBLIC 6fa10 0 _IO_wfile_xsputn
+PUBLIC 6fbb0 0 _IO_wfile_seekoff
+PUBLIC 700a0 0 _IO_wfile_sync
+PUBLIC 70200 0 _IO_wfile_overflow
+PUBLIC 70480 0 _IO_wfile_underflow
+PUBLIC 70a60 0 _IO_wdo_write
+PUBLIC 70c10 0 open_wmemstream
+PUBLIC 70df0 0 fputwc
+PUBLIC 70f70 0 fputwc_unlocked
+PUBLIC 70ff0 0 fgetwc
+PUBLIC 71140 0 getwc_unlocked
+PUBLIC 71170 0 getwchar
+PUBLIC 712d0 0 getwchar_unlocked
+PUBLIC 71300 0 fgetws
+PUBLIC 714e0 0 fgetws_unlocked
+PUBLIC 715a0 0 fputws
+PUBLIC 71730 0 fputws_unlocked
+PUBLIC 71980 0 ungetwc
+PUBLIC 71a70 0 putwc
+PUBLIC 71bd0 0 putwc_unlocked
+PUBLIC 71c00 0 putwchar
+PUBLIC 71d70 0 putwchar_unlocked
+PUBLIC 71db0 0 fwprintf
+PUBLIC 71e40 0 vwprintf
+PUBLIC 71e60 0 wprintf
+PUBLIC 71f10 0 wscanf
+PUBLIC 71fc0 0 fwscanf
+PUBLIC 72050 0 vwscanf
+PUBLIC 72070 0 fwide
+PUBLIC 721a0 0 _IO_file_attach
+PUBLIC 723c0 0 _IO_file_seek
+PUBLIC 72bc0 0 _IO_file_xsputn
+PUBLIC 72de0 0 _IO_do_write
+PUBLIC 72e10 0 _IO_file_write
+PUBLIC 72eb0 0 _IO_file_close
+PUBLIC 72ef0 0 _IO_file_stat
+PUBLIC 72f00 0 _IO_file_read
+PUBLIC 72f30 0 _IO_file_underflow
+PUBLIC 73160 0 _IO_file_seekoff
+PUBLIC 73550 0 _IO_file_sync
+PUBLIC 73610 0 _IO_file_overflow
+PUBLIC 73850 0 _IO_file_setbuf
+PUBLIC 738f0 0 _IO_file_open
+PUBLIC 739c0 0 _IO_file_fopen
+PUBLIC 73e50 0 _IO_file_init
+PUBLIC 73e90 0 _IO_file_finish
+PUBLIC 73f10 0 _IO_file_close_it
+PUBLIC 74160 0 _IO_un_link
+PUBLIC 743b0 0 _IO_link_in
+PUBLIC 74630 0 _IO_switch_to_get_mode
+PUBLIC 746b0 0 __overflow
+PUBLIC 746e0 0 _IO_doallocbuf
+PUBLIC 74740 0 _IO_default_uflow
+PUBLIC 74770 0 _IO_sgetn
+PUBLIC 749f0 0 _IO_init
+PUBLIC 74a20 0 _IO_sputbackc
+PUBLIC 74a70 0 _IO_sungetc
+PUBLIC 74ab0 0 _IO_adjust_column
+PUBLIC 74d80 0 _IO_flush_all
+PUBLIC 74d90 0 _IO_flush_all_linebuffered
+PUBLIC 74fe0 0 _IO_init_marker
+PUBLIC 75040 0 _IO_remove_marker
+PUBLIC 75080 0 _IO_marker_difference
+PUBLIC 75090 0 _IO_marker_delta
+PUBLIC 750d0 0 _IO_seekmark
+PUBLIC 75160 0 _IO_unsave_markers
+PUBLIC 751f0 0 _IO_iter_begin
+PUBLIC 75200 0 _IO_iter_end
+PUBLIC 75210 0 _IO_iter_next
+PUBLIC 75220 0 _IO_iter_file
+PUBLIC 75230 0 _IO_list_lock
+PUBLIC 75280 0 _IO_list_unlock
+PUBLIC 752d0 0 _IO_list_resetlock
+PUBLIC 752f0 0 _IO_setb
+PUBLIC 75370 0 _IO_default_finish
+PUBLIC 753f0 0 _IO_free_backup_area
+PUBLIC 75430 0 _IO_default_xsputn
+PUBLIC 75690 0 _IO_default_pbackfail
+PUBLIC 757f0 0 __uflow
+PUBLIC 758c0 0 __underflow
+PUBLIC 75980 0 _IO_default_xsgetn
+PUBLIC 75c00 0 _IO_default_doallocate
+PUBLIC 75eb0 0 _IO_str_underflow
+PUBLIC 75f50 0 _IO_str_pbackfail
+PUBLIC 76130 0 _IO_str_seekoff
+PUBLIC 762d0 0 _IO_str_overflow
+PUBLIC 76530 0 _IO_str_init_readonly
+PUBLIC 76550 0 _IO_str_init_static
+PUBLIC 768f0 0 malloc_usable_size
+PUBLIC 77990 0 __libc_mallopt
+PUBLIC 77ab0 0 __libc_mallinfo
+PUBLIC 77b40 0 malloc_set_state
+PUBLIC 78c00 0 malloc_trim
+PUBLIC 7af90 0 malloc_info
+PUBLIC 7b0b0 0 __libc_calloc
+PUBLIC 7b510 0 pvalloc
+PUBLIC 7b7c0 0 __libc_valloc
+PUBLIC 7ba40 0 cfree
+PUBLIC 7bb20 0 __libc_malloc
+PUBLIC 7be60 0 malloc_get_state
+PUBLIC 7c030 0 __libc_memalign
+PUBLIC 7c310 0 posix_memalign
+PUBLIC 7c380 0 malloc_stats
+PUBLIC 7cb70 0 realloc
+PUBLIC 7d9e0 0 __default_morecore
+PUBLIC 7da90 0 mcheck_check_all
+PUBLIC 7dad0 0 mprobe
+PUBLIC 7daf0 0 mcheck
+PUBLIC 7dbd0 0 mcheck_pedantic
+PUBLIC 7e2f0 0 tr_break
+PUBLIC 7e300 0 muntrace
+PUBLIC 7e390 0 mtrace
+PUBLIC 7ecf0 0 _obstack_begin
+PUBLIC 7edb0 0 _obstack_begin_1
+PUBLIC 7ee70 0 _obstack_newchunk
+PUBLIC 7f000 0 _obstack_allocated_p
+PUBLIC 7f040 0 _obstack_memory_used
+PUBLIC 7f0a0 0 obstack_free
+PUBLIC 7f120 0 strcat
+PUBLIC 80810 0 strcoll
+PUBLIC 80a00 0 __strverscmp
+PUBLIC 80b20 0 __strdup
+PUBLIC 80b80 0 strndup
+PUBLIC 80bf0 0 strerror
+PUBLIC 80cb0 0 __strerror_r
+PUBLIC 80ef0 0 strnlen
+PUBLIC 80f60 0 strncat
+PUBLIC 82ac0 0 strsignal
+PUBLIC 82df0 0 strtok
+PUBLIC 82ef0 0 strtok_r
+PUBLIC 82fe0 0 strxfrm
+PUBLIC 82ff0 0 memchr
+PUBLIC 84690 0 bcopy
+PUBLIC 846e0 0 ffs
+PUBLIC 846f0 0 ffsl
+PUBLIC 891e0 0 memccpy
+PUBLIC 89c60 0 __strsep_g
+PUBLIC 89cf0 0 swab
+PUBLIC 89d30 0 strfry
+PUBLIC 89e10 0 memfrob
+PUBLIC 8a280 0 memmem
+PUBLIC 8a640 0 strchrnul
+PUBLIC 8a6b0 0 argz_append
+PUBLIC 8a740 0 argz_add
+PUBLIC 8a790 0 argz_count
+PUBLIC 8a7d0 0 argz_create
+PUBLIC 8a860 0 argz_create_sep
+PUBLIC 8a970 0 argz_next
+PUBLIC 8a9c0 0 argz_delete
+PUBLIC 8aa50 0 argz_extract
+PUBLIC 8aaa0 0 argz_insert
+PUBLIC 8ac10 0 argz_stringify
+PUBLIC 8ac60 0 argz_add_sep
+PUBLIC 8adf0 0 argz_replace
+PUBLIC 8b120 0 basename
+PUBLIC 8b140 0 strcoll_l
+PUBLIC 8c050 0 strxfrm_l
+PUBLIC 8cb30 0 __mempcpy_small
+PUBLIC 8cc00 0 __strcpy_small
+PUBLIC 8cca0 0 __stpcpy_small
+PUBLIC 8cd40 0 __strcspn_c1
+PUBLIC 8cd80 0 __strcspn_c2
+PUBLIC 8cdd0 0 __strcspn_c3
+PUBLIC 8ce20 0 __strspn_c1
+PUBLIC 8ce40 0 __strspn_c2
+PUBLIC 8ce60 0 __strspn_c3
+PUBLIC 8ce90 0 __strpbrk_c2
+PUBLIC 8cee0 0 __strpbrk_c3
+PUBLIC 8cf40 0 __strtok_r_1c
+PUBLIC 8cfb0 0 __strsep_2c
+PUBLIC 8d020 0 __strsep_3c
+PUBLIC 8d090 0 __strsep_1c
+PUBLIC 8d0e0 0 memrchr
+PUBLIC 8d200 0 __xpg_strerror_r
+PUBLIC 8d2e0 0 strerror_l
+PUBLIC 8d3b0 0 envz_entry
+PUBLIC 8d450 0 envz_get
+PUBLIC 8d490 0 envz_strip
+PUBLIC 8d510 0 envz_merge
+PUBLIC 8d5c0 0 envz_remove
+PUBLIC 8d610 0 envz_add
+PUBLIC 904d0 0 wmemcpy
+PUBLIC 904e0 0 wmemset
+PUBLIC 90550 0 wcscat
+PUBLIC 90590 0 wcschr
+PUBLIC 905b0 0 wcscmp
+PUBLIC 905e0 0 wcscpy
+PUBLIC 90610 0 wcscspn
+PUBLIC 90650 0 wcsdup
+PUBLIC 906b0 0 wcslen
+PUBLIC 90720 0 wcsncat
+PUBLIC 907b0 0 wcsncmp
+PUBLIC 90870 0 wcsncpy
+PUBLIC 90950 0 wcspbrk
+PUBLIC 909a0 0 wcsrchr
+PUBLIC 909c0 0 wcsspn
+PUBLIC 90a20 0 wcstok
+PUBLIC 90ad0 0 wcswcs
+PUBLIC 90be0 0 wmemchr
+PUBLIC 90c60 0 wmemcmp
+PUBLIC 90d40 0 wmemmove
+PUBLIC 90d50 0 wcpcpy
+PUBLIC 90d80 0 wcpncpy
+PUBLIC 90e60 0 wmempcpy
+PUBLIC 90e70 0 btowc
+PUBLIC 91030 0 wctob
+PUBLIC 911c0 0 mbsinit
+PUBLIC 911e0 0 __mbrlen
+PUBLIC 91200 0 mbrtowc
+PUBLIC 91470 0 wcrtomb
+PUBLIC 91690 0 mbsrtowcs
+PUBLIC 916b0 0 wcsrtombs
+PUBLIC 91a00 0 mbsnrtowcs
+PUBLIC 91d80 0 wcsnrtombs
+PUBLIC 920f0 0 wcsnlen
+PUBLIC 92190 0 wcschrnul
+PUBLIC 921c0 0 wcstoll
+PUBLIC 921e0 0 __wcstol_internal
+PUBLIC 921f0 0 wcstoul
+PUBLIC 92210 0 __wcstoull_internal
+PUBLIC 92220 0 wcstod
+PUBLIC 92240 0 __wcstod_internal
+PUBLIC 92250 0 wcstold
+PUBLIC 92270 0 __wcstold_internal
+PUBLIC 92280 0 wcstof
+PUBLIC 922a0 0 __wcstof_internal
+PUBLIC 92710 0 wcstoll_l
+PUBLIC 92b40 0 wcstoul_l
+PUBLIC 94fa0 0 __wcstod_l
+PUBLIC 97350 0 wcstold_l
+PUBLIC 99700 0 __wcstof_l
+PUBLIC 99710 0 wcscoll
+PUBLIC 99720 0 wcsxfrm
+PUBLIC 99730 0 wcwidth
+PUBLIC 997a0 0 wcswidth
+PUBLIC 99880 0 __wcscoll_l
+PUBLIC 9a510 0 wcsxfrm_l
+PUBLIC 9ade0 0 wcscasecmp
+PUBLIC 9ae40 0 wcsncasecmp
+PUBLIC 9aed0 0 __wcscasecmp_l
+PUBLIC 9af30 0 wcsncasecmp_l
+PUBLIC 9b7c0 0 __isoc99_swscanf
+PUBLIC 9b850 0 __isoc99_vswscanf
+PUBLIC 9b900 0 __isoc99_wscanf
+PUBLIC 9bae0 0 __isoc99_vwscanf
+PUBLIC 9bc40 0 __isoc99_fwscanf
+PUBLIC 9be10 0 __isoc99_vfwscanf
+PUBLIC 9c470 0 asctime
+PUBLIC 9c490 0 asctime_r
+PUBLIC 9c4a0 0 clock
+PUBLIC 9c530 0 ctime
+PUBLIC 9c550 0 ctime_r
+PUBLIC 9c580 0 difftime
+PUBLIC 9c5a0 0 gmtime
+PUBLIC 9c5b0 0 __gmtime_r
+PUBLIC 9c5c0 0 localtime
+PUBLIC 9c5e0 0 localtime_r
+PUBLIC 9cf30 0 timelocal
+PUBLIC 9cf50 0 time
+PUBLIC 9cf70 0 __gettimeofday
+PUBLIC 9cfb0 0 settimeofday
+PUBLIC 9cfe0 0 adjtime
+PUBLIC 9e0b0 0 tzset
+PUBLIC 9f930 0 getitimer
+PUBLIC 9f960 0 setitimer
+PUBLIC 9f990 0 stime
+PUBLIC 9f9e0 0 dysize
+PUBLIC 9fa30 0 timegm
+PUBLIC 9fa50 0 ftime
+PUBLIC 9fae0 0 getdate_r
+PUBLIC a0030 0 getdate
+PUBLIC a0070 0 strptime
+PUBLIC a2e50 0 strptime_l
+PUBLIC a2e60 0 strftime
+PUBLIC a4f30 0 strftime_l
+PUBLIC a4f50 0 wcsftime
+PUBLIC a70c0 0 wcsftime_l
+PUBLIC a7a10 0 ntp_gettime
+PUBLIC a7a60 0 ntp_gettimex
+PUBLIC a7be0 0 opendir
+PUBLIC a7c20 0 closedir
+PUBLIC a7c50 0 readdir
+PUBLIC a7d70 0 readdir_r
+PUBLIC a7f10 0 rewinddir
+PUBLIC a7fa0 0 seekdir
+PUBLIC a8050 0 telldir
+PUBLIC a8060 0 scandir
+PUBLIC a82a0 0 alphasort64
+PUBLIC a82c0 0 versionsort
+PUBLIC a8370 0 dirfd
+PUBLIC a8380 0 fdopendir
+PUBLIC a8410 0 getdirentries
+PUBLIC a8480 0 fgetgrent
+PUBLIC a8c60 0 initgroups
+PUBLIC a8d30 0 getgrouplist
+PUBLIC a8df0 0 setgroups
+PUBLIC a8e50 0 getgrent
+PUBLIC a8f10 0 getgrgid
+PUBLIC a9070 0 getgrnam
+PUBLIC a91d0 0 putgrent
+PUBLIC a9470 0 getgrent_r
+PUBLIC a9550 0 endgrent
+PUBLIC a95f0 0 setgrent
+PUBLIC a9750 0 getgrgid_r
+PUBLIC a99b0 0 getgrnam_r
+PUBLIC a9c10 0 _nss_files_parse_grent
+PUBLIC a9f00 0 fgetgrent_r
+PUBLIC aa200 0 fgetpwent
+PUBLIC aa3e0 0 getpw
+PUBLIC aa4b0 0 putpwent
+PUBLIC aa5b0 0 getpwent
+PUBLIC aa670 0 getpwnam
+PUBLIC aa7d0 0 getpwuid
+PUBLIC aa930 0 getpwent_r
+PUBLIC aaa10 0 endpwent
+PUBLIC aaab0 0 setpwent
+PUBLIC aac10 0 getpwnam_r
+PUBLIC aae70 0 getpwuid_r
+PUBLIC ab0d0 0 _nss_files_parse_pwent
+PUBLIC ab3b0 0 fgetpwent_r
+PUBLIC ab680 0 uname
+PUBLIC ab6b0 0 times
+PUBLIC ab700 0 wait
+PUBLIC ab7a0 0 waitpid
+PUBLIC ab840 0 wait3
+PUBLIC ab860 0 wait4
+PUBLIC ab890 0 waitid
+PUBLIC ab940 0 alarm
+PUBLIC ab970 0 sleep
+PUBLIC abb50 0 pause
+PUBLIC abbb0 0 nanosleep
+PUBLIC abc10 0 __libc_fork
+PUBLIC abee0 0 vfork
+PUBLIC abf30 0 _exit
+PUBLIC abf80 0 execve
+PUBLIC abfb0 0 fexecve
+PUBLIC ac080 0 execv
+PUBLIC ac090 0 execle
+PUBLIC ac270 0 execl
+PUBLIC ac430 0 execvp
+PUBLIC ac440 0 execlp
+PUBLIC ac5e0 0 execvpe
+PUBLIC aca70 0 getpid
+PUBLIC acab0 0 getppid
+PUBLIC acac0 0 getuid
+PUBLIC acad0 0 geteuid
+PUBLIC acae0 0 getgid
+PUBLIC acaf0 0 getegid
+PUBLIC acb00 0 getgroups
+PUBLIC acb30 0 setuid
+PUBLIC acb90 0 setgid
+PUBLIC acbf0 0 group_member
+PUBLIC acc90 0 getpgid
+PUBLIC accc0 0 setpgid
+PUBLIC accf0 0 getpgrp
+PUBLIC acd00 0 __bsd_getpgrp
+PUBLIC acd10 0 setpgrp
+PUBLIC acd20 0 getsid
+PUBLIC acd50 0 setsid
+PUBLIC acd80 0 getresuid
+PUBLIC acdb0 0 getresgid
+PUBLIC acde0 0 setresuid
+PUBLIC ace50 0 setresgid
+PUBLIC ad260 0 pathconf
+PUBLIC ad590 0 __sysconf
+PUBLIC ad9a0 0 fpathconf
+PUBLIC add00 0 glob_pattern_p
+PUBLIC add10 0 globfree64
+PUBLIC ae6c0 0 glob64
+PUBLIC b3aa0 0 fnmatch
+PUBLIC b3e10 0 confstr
+PUBLIC b56d0 0 __posix_getopt
+PUBLIC b56f0 0 getopt
+PUBLIC b5750 0 getopt_long_only
+PUBLIC b5770 0 getopt_long
+PUBLIC b5790 0 sched_setparam
+PUBLIC b57c0 0 __sched_getparam
+PUBLIC b57f0 0 sched_setscheduler
+PUBLIC b5820 0 __sched_getscheduler
+PUBLIC b5850 0 __sched_yield
+PUBLIC b5880 0 __sched_get_priority_max
+PUBLIC b58b0 0 sched_get_priority_min
+PUBLIC b58e0 0 sched_rr_get_interval
+PUBLIC b5910 0 sched_getaffinity
+PUBLIC b5970 0 sched_setaffinity
+PUBLIC b5ad0 0 pread64
+PUBLIC b5b40 0 __pwrite64
+PUBLIC b5bb0 0 posix_madvise
+PUBLIC b5d40 0 __sched_cpualloc
+PUBLIC b5d60 0 __sched_cpufree
+PUBLIC b5e80 0 freeaddrinfo
+PUBLIC b8fd0 0 getaddrinfo
+PUBLIC b9940 0 gai_strerror
+PUBLIC b9a00 0 re_set_syntax
+PUBLIC b9c90 0 re_set_registers
+PUBLIC bade0 0 regfree
+PUBLIC c4490 0 regexec
+PUBLIC c45d0 0 re_exec
+PUBLIC c5460 0 regerror
+PUBLIC c5be0 0 re_compile_fastmap
+PUBLIC c62d0 0 re_search_2
+PUBLIC c6300 0 re_match_2
+PUBLIC c6330 0 re_search
+PUBLIC c6350 0 re_match
+PUBLIC c8f20 0 re_comp
+PUBLIC c9060 0 re_compile_pattern
+PUBLIC c90e0 0 regcomp
+PUBLIC c92a0 0 posix_spawn_file_actions_init
+PUBLIC c9300 0 posix_spawn_file_actions_destroy
+PUBLIC c9320 0 posix_spawn_file_actions_addclose
+PUBLIC c93b0 0 posix_spawn_file_actions_addopen
+PUBLIC c9470 0 posix_spawn_file_actions_adddup2
+PUBLIC c9510 0 posix_spawnattr_init
+PUBLIC c9520 0 posix_spawnattr_destroy
+PUBLIC c9530 0 posix_spawnattr_getsigdefault
+PUBLIC c95c0 0 posix_spawnattr_setsigdefault
+PUBLIC c9650 0 posix_spawnattr_getflags
+PUBLIC c9660 0 posix_spawnattr_setflags
+PUBLIC c9680 0 posix_spawnattr_getpgroup
+PUBLIC c9690 0 posix_spawnattr_setpgroup
+PUBLIC c96a0 0 posix_spawn
+PUBLIC c96c0 0 posix_spawnp
+PUBLIC c9d10 0 posix_spawnattr_getsigmask
+PUBLIC c9da0 0 posix_spawnattr_getschedpolicy
+PUBLIC c9db0 0 posix_spawnattr_getschedparam
+PUBLIC c9dc0 0 posix_spawnattr_setsigmask
+PUBLIC c9e50 0 posix_spawnattr_setschedpolicy
+PUBLIC c9e70 0 posix_spawnattr_setschedparam
+PUBLIC c9f60 0 getlogin
+PUBLIC ca3c0 0 getlogin_r
+PUBLIC ca450 0 wordfree
+PUBLIC cd5c0 0 wordexp
+PUBLIC ce2a0 0 setlogin
+PUBLIC ce2f0 0 sched_getcpu
+PUBLIC ce340 0 utime
+PUBLIC ce370 0 mkfifo
+PUBLIC ce3a0 0 mkfifoat
+PUBLIC ce3d0 0 __xstat64
+PUBLIC ce420 0 __fxstat64
+PUBLIC ce470 0 __lxstat
+PUBLIC ce4c0 0 __xmknod
+PUBLIC ce520 0 __xmknodat
+PUBLIC ce580 0 __fxstatat64
+PUBLIC ce5d0 0 __statfs
+PUBLIC ce600 0 fstatfs
+PUBLIC ce630 0 statvfs64
+PUBLIC ce6c0 0 fstatvfs
+PUBLIC ce750 0 umask
+PUBLIC ce760 0 chmod
+PUBLIC ce790 0 fchmod
+PUBLIC ce7c0 0 fchmodat
+PUBLIC ce830 0 mkdir
+PUBLIC ce860 0 mkdirat
+PUBLIC ce890 0 __open64
+PUBLIC ce920 0 openat
+PUBLIC cea00 0 __openat64_2
+PUBLIC cea20 0 close
+PUBLIC cea80 0 __read
+PUBLIC ceae0 0 __write
+PUBLIC ceb40 0 access
+PUBLIC ceb70 0 eaccess
+PUBLIC cecb0 0 faccessat
+PUBLIC cef40 0 fcntl
+PUBLIC cefc0 0 flock
+PUBLIC ceff0 0 lockf64
+PUBLIC cf100 0 dup
+PUBLIC cf130 0 __dup2
+PUBLIC cf160 0 dup3
+PUBLIC cf190 0 pipe
+PUBLIC cf1c0 0 pipe2
+PUBLIC cf1f0 0 creat64
+PUBLIC cf250 0 chdir
+PUBLIC cf280 0 fchdir
+PUBLIC cf2b0 0 getcwd
+PUBLIC cf400 0 getwd
+PUBLIC cf490 0 get_current_dir_name
+PUBLIC cf520 0 chown
+PUBLIC cf550 0 fchown
+PUBLIC cf580 0 lchown
+PUBLIC cf5b0 0 fchownat
+PUBLIC cf5e0 0 ttyname
+PUBLIC cf8f0 0 ttyname_r
+PUBLIC cfc10 0 isatty
+PUBLIC cfc30 0 link
+PUBLIC cfc60 0 linkat
+PUBLIC cfc90 0 symlink
+PUBLIC cfcc0 0 symlinkat
+PUBLIC cfcf0 0 readlink
+PUBLIC cfd20 0 readlinkat
+PUBLIC cfd50 0 unlink
+PUBLIC cfd80 0 unlinkat
+PUBLIC cfdb0 0 rmdir
+PUBLIC cfde0 0 __poll
+PUBLIC cfe80 0 ppoll
+PUBLIC cff50 0 posix_fadvise
+PUBLIC d0120 0 posix_fallocate64
+PUBLIC d0170 0 sendfile
+PUBLIC d01a0 0 utimensat
+PUBLIC d01f0 0 futimens
+PUBLIC d0240 0 lchmod
+PUBLIC d11b0 0 nftw64
+PUBLIC d11f0 0 ftw64
+PUBLIC d1200 0 fts_set
+PUBLIC d1260 0 fts_close
+PUBLIC d1f00 0 fts_children
+PUBLIC d2040 0 fts_open
+PUBLIC d2310 0 fts_read
+PUBLIC d2e10 0 sync_file_range
+PUBLIC d2e40 0 __open_2
+PUBLIC d2e70 0 __open64_2
+PUBLIC d2ea0 0 fallocate
+PUBLIC d2ed0 0 cfgetospeed
+PUBLIC d2ee0 0 cfgetispeed
+PUBLIC d2f00 0 cfsetospeed
+PUBLIC d2f50 0 cfsetispeed
+PUBLIC d2fb0 0 cfsetspeed
+PUBLIC d3040 0 tcsetattr
+PUBLIC d3230 0 tcgetattr
+PUBLIC d32e0 0 tcgetpgrp
+PUBLIC d3310 0 tcsetpgrp
+PUBLIC d3330 0 tcdrain
+PUBLIC d33d0 0 tcflow
+PUBLIC d33e0 0 tcflush
+PUBLIC d33f0 0 tcsendbreak
+PUBLIC d3430 0 cfmakeraw
+PUBLIC d3460 0 tcgetsid
+PUBLIC d3520 0 getrlimit64
+PUBLIC d3550 0 setrlimit64
+PUBLIC d3580 0 getrusage
+PUBLIC d35b0 0 ulimit
+PUBLIC d36d0 0 vlimit
+PUBLIC d3830 0 vtimes
+PUBLIC d3870 0 getpriority
+PUBLIC d38b0 0 setpriority
+PUBLIC d38e0 0 nice
+PUBLIC d3980 0 brk
+PUBLIC d39f0 0 __sbrk
+PUBLIC d3aa0 0 sstk
+PUBLIC d3ac0 0 ioctl
+PUBLIC d3af0 0 readv
+PUBLIC d3b90 0 writev
+PUBLIC d3db0 0 preadv64
+PUBLIC d4030 0 pwritev
+PUBLIC d4140 0 setreuid
+PUBLIC d41b0 0 setregid
+PUBLIC d4220 0 seteuid
+PUBLIC d42c0 0 setegid
+PUBLIC d4360 0 getpagesize
+PUBLIC d4380 0 getdtablesize
+PUBLIC d43b0 0 gethostname
+PUBLIC d4460 0 sethostname
+PUBLIC d4490 0 getdomainname
+PUBLIC d4510 0 setdomainname
+PUBLIC d4540 0 __select
+PUBLIC d45b0 0 pselect
+PUBLIC d4690 0 acct
+PUBLIC d46c0 0 chroot
+PUBLIC d46f0 0 fsync
+PUBLIC d4750 0 sync
+PUBLIC d4780 0 fdatasync
+PUBLIC d47e0 0 reboot
+PUBLIC d4810 0 gethostid
+PUBLIC d4990 0 sethostid
+PUBLIC d4a40 0 vhangup
+PUBLIC d4a70 0 swapon
+PUBLIC d4aa0 0 swapoff
+PUBLIC d4ad0 0 mktemp
+PUBLIC d4af0 0 mkstemp
+PUBLIC d4b00 0 mkdtemp
+PUBLIC d4b30 0 mkostemp64
+PUBLIC d4b40 0 mkstemps
+PUBLIC d4b70 0 mkstemps64
+PUBLIC d4ba0 0 mkostemps
+PUBLIC d4bd0 0 mkostemps64
+PUBLIC d4c00 0 ualarm
+PUBLIC d4c60 0 usleep
+PUBLIC d4ca0 0 gtty
+PUBLIC d4ce0 0 stty
+PUBLIC d4d20 0 ptrace
+PUBLIC d4df0 0 getmntent
+PUBLIC d4f70 0 hasmntopt
+PUBLIC d4ff0 0 addmntent
+PUBLIC d5520 0 __getmntent_r
+PUBLIC d58c0 0 endmntent
+PUBLIC d58e0 0 setmntent
+PUBLIC d59a0 0 utimes
+PUBLIC d59d0 0 lutimes
+PUBLIC d5a70 0 futimes
+PUBLIC d5b10 0 futimesat
+PUBLIC d5b50 0 truncate
+PUBLIC d5b80 0 ftruncate
+PUBLIC d5bb0 0 insque
+PUBLIC d5be0 0 remque
+PUBLIC d5ce0 0 endttyent
+PUBLIC d5d20 0 setttyent
+PUBLIC d5d80 0 getttyent
+PUBLIC d6110 0 getttynam
+PUBLIC d6150 0 endusershell
+PUBLIC d63c0 0 setusershell
+PUBLIC d63e0 0 getusershell
+PUBLIC d6430 0 getpass
+PUBLIC d6680 0 ttyslot
+PUBLIC d6780 0 setlogmask
+PUBLIC d67a0 0 closelog
+PUBLIC d6ab0 0 openlog
+PUBLIC d6b20 0 __vsyslog_chk
+PUBLIC d7100 0 vsyslog
+PUBLIC d7110 0 __syslog_chk
+PUBLIC d71a0 0 syslog
+PUBLIC d72e0 0 syscall
+PUBLIC d7320 0 daemon
+PUBLIC d7480 0 mmap64
+PUBLIC d74b0 0 munmap
+PUBLIC d74e0 0 mprotect
+PUBLIC d7510 0 msync
+PUBLIC d7570 0 madvise
+PUBLIC d75a0 0 mincore
+PUBLIC d75d0 0 remap_file_pages
+PUBLIC d7600 0 mlock
+PUBLIC d7630 0 munlock
+PUBLIC d7660 0 mlockall
+PUBLIC d7690 0 munlockall
+PUBLIC d76c0 0 hdestroy
+PUBLIC d76d0 0 hcreate
+PUBLIC d76e0 0 hsearch
+PUBLIC d7710 0 hsearch_r
+PUBLIC d7930 0 hdestroy_r
+PUBLIC d7960 0 hcreate_r
+PUBLIC d7b40 0 tfind
+PUBLIC d7c40 0 twalk
+PUBLIC d7cb0 0 tdestroy
+PUBLIC d7cd0 0 tdelete
+PUBLIC d8110 0 tsearch
+PUBLIC d8230 0 lfind
+PUBLIC d82a0 0 lsearch
+PUBLIC d8430 0 vwarn
+PUBLIC d8560 0 verr
+PUBLIC d8580 0 err
+PUBLIC d8610 0 warn
+PUBLIC d86b0 0 vwarnx
+PUBLIC d87a0 0 verrx
+PUBLIC d87c0 0 errx
+PUBLIC d8850 0 warnx
+PUBLIC d8b10 0 error_at_line
+PUBLIC d8d10 0 error
+PUBLIC d8e60 0 ustat
+PUBLIC d8fa0 0 get_avphys_pages
+PUBLIC d8fb0 0 get_phys_pages
+PUBLIC d91b0 0 get_nprocs
+PUBLIC d92f0 0 get_nprocs_conf
+PUBLIC d93c0 0 dirname
+PUBLIC d94b0 0 getloadavg
+PUBLIC d95b0 0 fgetxattr
+PUBLIC d95e0 0 flistxattr
+PUBLIC d9610 0 fremovexattr
+PUBLIC d9640 0 fsetxattr
+PUBLIC d9670 0 getxattr
+PUBLIC d96a0 0 listxattr
+PUBLIC d96d0 0 lgetxattr
+PUBLIC d9700 0 llistxattr
+PUBLIC d9730 0 lremovexattr
+PUBLIC d9760 0 lsetxattr
+PUBLIC d9790 0 removexattr
+PUBLIC d97c0 0 setxattr
+PUBLIC d97f0 0 advance
+PUBLIC d9850 0 step
+PUBLIC d98b0 0 endfsent
+PUBLIC d9970 0 setfsent
+PUBLIC d9a80 0 getfsfile
+PUBLIC d9ae0 0 getfsspec
+PUBLIC d9b40 0 getfsent
+PUBLIC d9b80 0 chflags
+PUBLIC d9bc0 0 fchflags
+PUBLIC d9c00 0 revoke
+PUBLIC d9c20 0 gcvt
+PUBLIC d9c50 0 ecvt
+PUBLIC d9c80 0 fcvt
+PUBLIC d9d30 0 fcvt_r
+PUBLIC da040 0 ecvt_r
+PUBLIC da240 0 qgcvt
+PUBLIC da280 0 qecvt
+PUBLIC da2c0 0 qfcvt
+PUBLIC da390 0 qfcvt_r
+PUBLIC da6c0 0 qecvt_r
+PUBLIC da950 0 ioperm
+PUBLIC da980 0 iopl
+PUBLIC da9b0 0 __sysctl
+PUBLIC daa10 0 clone
+PUBLIC daaa0 0 llseek
+PUBLIC dab00 0 umount
+PUBLIC dab10 0 umount2
+PUBLIC dab40 0 readahead
+PUBLIC dab70 0 setfsuid
+PUBLIC daba0 0 setfsgid
+PUBLIC dabd0 0 gnu_dev_major
+PUBLIC dabf0 0 gnu_dev_minor
+PUBLIC dac10 0 gnu_dev_makedev
+PUBLIC dac40 0 epoll_pwait
+PUBLIC dad00 0 signalfd
+PUBLIC dad90 0 eventfd
+PUBLIC dae10 0 eventfd_read
+PUBLIC dae30 0 eventfd_write
+PUBLIC dae60 0 prlimit
+PUBLIC dae90 0 __arch_prctl
+PUBLIC daec0 0 modify_ldt
+PUBLIC daef0 0 fanotify_mark
+PUBLIC daf20 0 ntp_adjtime
+PUBLIC daf50 0 capget
+PUBLIC daf80 0 capset
+PUBLIC dafb0 0 create_module
+PUBLIC dafe0 0 delete_module
+PUBLIC db010 0 epoll_create
+PUBLIC db040 0 epoll_create1
+PUBLIC db070 0 epoll_ctl
+PUBLIC db0a0 0 epoll_wait
+PUBLIC db110 0 get_kernel_syms
+PUBLIC db140 0 init_module
+PUBLIC db170 0 inotify_add_watch
+PUBLIC db1a0 0 inotify_init
+PUBLIC db1d0 0 inotify_init1
+PUBLIC db200 0 inotify_rm_watch
+PUBLIC db230 0 klogctl
+PUBLIC db260 0 mount
+PUBLIC db290 0 mremap
+PUBLIC db2c0 0 nfsservctl
+PUBLIC db2f0 0 personality
+PUBLIC db320 0 pivot_root
+PUBLIC db350 0 prctl
+PUBLIC db380 0 query_module
+PUBLIC db3b0 0 quotactl
+PUBLIC db3e0 0 splice
+PUBLIC db450 0 sysinfo
+PUBLIC db480 0 tee
+PUBLIC db4f0 0 unshare
+PUBLIC db520 0 uselib
+PUBLIC db550 0 vmsplice
+PUBLIC db5c0 0 timerfd_create
+PUBLIC db5f0 0 timerfd_settime
+PUBLIC db620 0 timerfd_gettime
+PUBLIC db650 0 fanotify_init
+PUBLIC db680 0 bdflush
+PUBLIC db6a0 0 accept
+PUBLIC db700 0 bind
+PUBLIC db730 0 connect
+PUBLIC db790 0 getpeername
+PUBLIC db7c0 0 getsockname
+PUBLIC db7f0 0 getsockopt
+PUBLIC db820 0 listen
+PUBLIC db850 0 recv
+PUBLIC db900 0 recvfrom
+PUBLIC db970 0 recvmsg
+PUBLIC db9d0 0 __send
+PUBLIC dba80 0 sendmsg
+PUBLIC dbae0 0 sendto
+PUBLIC dbb50 0 setsockopt
+PUBLIC dbb80 0 shutdown
+PUBLIC dbbb0 0 socket
+PUBLIC dbbe0 0 socketpair
+PUBLIC dbc10 0 isfdtype
+PUBLIC dbf20 0 sockatmark
+PUBLIC dbf50 0 accept4
+PUBLIC dbff0 0 recvmmsg
+PUBLIC dc0a0 0 __cmsg_nxthdr
+PUBLIC dc0f0 0 __libc_sa_len
+PUBLIC dc110 0 ftok
+PUBLIC dc160 0 msgsnd
+PUBLIC dc1d0 0 msgrcv
+PUBLIC dc240 0 msgget
+PUBLIC dc270 0 msgctl
+PUBLIC dc2a0 0 semop
+PUBLIC dc2d0 0 semget
+PUBLIC dc300 0 semctl
+PUBLIC dc330 0 semtimedop
+PUBLIC dc360 0 shmat
+PUBLIC dc390 0 shmdt
+PUBLIC dc3c0 0 shmget
+PUBLIC dc3f0 0 shmctl
+PUBLIC dc910 0 moncontrol
+PUBLIC dc970 0 _mcleanup
+PUBLIC dc9a0 0 __monstartup
+PUBLIC dcd40 0 profil
+PUBLIC dd250 0 sprofil
+PUBLIC dd670 0 __profile_frequency
+PUBLIC dd680 0 _mcount
+PUBLIC dd6e0 0 __fentry__
+PUBLIC dd740 0 wctrans
+PUBLIC dd7d0 0 towctrans
+PUBLIC dd830 0 __towctrans_l
+PUBLIC dd890 0 iswdigit
+PUBLIC dd930 0 towlower
+PUBLIC dd9a0 0 towupper
+PUBLIC dda00 0 iswxdigit
+PUBLIC ddad0 0 iswupper
+PUBLIC ddba0 0 iswspace
+PUBLIC ddc70 0 iswpunct
+PUBLIC ddd40 0 iswprint
+PUBLIC dde10 0 iswgraph
+PUBLIC ddee0 0 iswlower
+PUBLIC ddfb0 0 iswcntrl
+PUBLIC de080 0 iswblank
+PUBLIC de150 0 iswalpha
+PUBLIC de220 0 iswalnum
+PUBLIC de2f0 0 wctype
+PUBLIC de370 0 __iswctype
+PUBLIC de3d0 0 __iswalnum_l
+PUBLIC de460 0 __iswalpha_l
+PUBLIC de4f0 0 __iswblank_l
+PUBLIC de580 0 iswcntrl_l
+PUBLIC de610 0 iswdigit_l
+PUBLIC de6a0 0 __iswlower_l
+PUBLIC de730 0 __iswgraph_l
+PUBLIC de7c0 0 __iswprint_l
+PUBLIC de850 0 __iswpunct_l
+PUBLIC de8e0 0 __iswspace_l
+PUBLIC de970 0 __iswupper_l
+PUBLIC dea00 0 iswxdigit_l
+PUBLIC dea90 0 __towlower_l
+PUBLIC deaf0 0 __towupper_l
+PUBLIC deb50 0 __wctype_l
+PUBLIC debd0 0 iswctype_l
+PUBLIC dec30 0 wctrans_l
+PUBLIC decb0 0 getspent
+PUBLIC ded70 0 getspnam
+PUBLIC deed0 0 sgetspent
+PUBLIC df060 0 fgetspent
+PUBLIC df240 0 putspent
+PUBLIC df680 0 getspent_r
+PUBLIC df760 0 endspent
+PUBLIC df800 0 setspent
+PUBLIC df960 0 getspnam_r
+PUBLIC dfb50 0 _nss_files_parse_spent
+PUBLIC dff10 0 sgetspent_r
+PUBLIC dffc0 0 fgetspent_r
+PUBLIC e0290 0 ulckpwdf
+PUBLIC e0310 0 lckpwdf
+PUBLIC e0620 0 getsgent
+PUBLIC e06e0 0 getsgnam
+PUBLIC e0840 0 sgetsgent
+PUBLIC e09f0 0 fgetsgent
+PUBLIC e0bd0 0 putsgent
+PUBLIC e0df0 0 getsgent_r
+PUBLIC e0ed0 0 endsgent
+PUBLIC e0f70 0 setsgent
+PUBLIC e10d0 0 getsgnam_r
+PUBLIC e12c0 0 _nss_files_parse_sgent
+PUBLIC e1650 0 sgetsgent_r
+PUBLIC e1710 0 fgetsgent_r
+PUBLIC e26f0 0 argp_failure
+PUBLIC e5940 0 argp_state_help
+PUBLIC e59f0 0 argp_error
+PUBLIC e5b40 0 argp_help
+PUBLIC e6150 0 argp_parse
+PUBLIC e6e60 0 argp_usage
+PUBLIC e6e80 0 __libc_alloca_cutoff
+PUBLIC e6ed0 0 pthread_equal
+PUBLIC e6f00 0 pthread_attr_destroy
+PUBLIC e6f30 0 pthread_attr_init
+PUBLIC e6f60 0 pthread_attr_getdetachstate
+PUBLIC e6f90 0 pthread_attr_setdetachstate
+PUBLIC e6fc0 0 pthread_attr_getinheritsched
+PUBLIC e6ff0 0 pthread_attr_setinheritsched
+PUBLIC e7020 0 pthread_attr_getschedparam
+PUBLIC e7050 0 pthread_attr_setschedparam
+PUBLIC e7080 0 pthread_attr_getschedpolicy
+PUBLIC e70b0 0 pthread_attr_setschedpolicy
+PUBLIC e70e0 0 pthread_attr_getscope
+PUBLIC e7110 0 pthread_attr_setscope
+PUBLIC e7140 0 pthread_condattr_destroy
+PUBLIC e7170 0 pthread_condattr_init
+PUBLIC e71a0 0 pthread_cond_broadcast
+PUBLIC e71d0 0 pthread_cond_destroy
+PUBLIC e7200 0 pthread_cond_init
+PUBLIC e7230 0 pthread_cond_signal
+PUBLIC e7260 0 pthread_cond_wait
+PUBLIC e7290 0 pthread_cond_timedwait
+PUBLIC e72c0 0 pthread_getschedparam
+PUBLIC e72f0 0 pthread_setschedparam
+PUBLIC e7320 0 pthread_mutex_destroy
+PUBLIC e7350 0 pthread_mutex_init
+PUBLIC e7380 0 pthread_mutex_lock
+PUBLIC e73b0 0 pthread_mutex_unlock
+PUBLIC e73e0 0 pthread_self
+PUBLIC e7410 0 pthread_setcancelstate
+PUBLIC e7440 0 pthread_setcanceltype
+PUBLIC e7470 0 pthread_exit
+PUBLIC e7610 0 __register_atfork
+PUBLIC e7960 0 __libc_pthread_init
+PUBLIC e79c0 0 hstrerror
+PUBLIC e7a30 0 herror
+PUBLIC e7b00 0 inet_aton
+PUBLIC e7c50 0 inet_addr
+PUBLIC e7cf0 0 inet_ntop
+PUBLIC e80c0 0 inet_pton
+PUBLIC e83b0 0 inet_nsap_ntoa
+PUBLIC e8470 0 inet_nsap_addr
+PUBLIC e8600 0 __res_iclose
+PUBLIC e86d0 0 __res_nclose
+PUBLIC e86e0 0 __res_randomid
+PUBLIC e95a0 0 __res_ninit
+PUBLIC ea2f0 0 __res_init
+PUBLIC ea3b0 0 __res_maybe_init
+PUBLIC ea540 0 __res_state
+PUBLIC ea550 0 __gai_sigqueue
+PUBLIC ea5e0 0 __nss_disable_nscd
+PUBLIC ea680 0 __nss_lookup_function
+PUBLIC eaff0 0 __nss_configure_lookup
+PUBLIC eb100 0 __nss_next2
+PUBLIC eb210 0 __nss_database_lookup
+PUBLIC ebce0 0 __nss_group_lookup2
+PUBLIC ebd90 0 __nss_passwd_lookup2
+PUBLIC ec040 0 __nss_services_lookup2
+PUBLIC ec0e0 0 __nss_hosts_lookup2
+PUBLIC ec570 0 __nss_hostname_digits_dots
+PUBLIC ecc50 0 __cyg_profile_func_enter
+PUBLIC ecef0 0 __stpcpy_chk
+PUBLIC ed050 0 __strcat_chk
+PUBLIC ed0b0 0 __strcpy_chk
+PUBLIC ed210 0 __strncat_chk
+PUBLIC ed340 0 __strncpy_chk
+PUBLIC ed430 0 __stpncpy_chk
+PUBLIC ed520 0 __sprintf_chk
+PUBLIC ed5c0 0 __vsprintf_chk
+PUBLIC ed6b0 0 __snprintf_chk
+PUBLIC ed740 0 __vsnprintf_chk
+PUBLIC ed860 0 __printf_chk
+PUBLIC eda50 0 __fprintf_chk
+PUBLIC edc30 0 __vprintf_chk
+PUBLIC eddb0 0 __vfprintf_chk
+PUBLIC edf20 0 __gets_chk
+PUBLIC ee150 0 __chk_fail
+PUBLIC ee370 0 __fgets_chk
+PUBLIC ee560 0 __fgets_unlocked_chk
+PUBLIC ee620 0 __read_chk
+PUBLIC ee660 0 __pread_chk
+PUBLIC ee680 0 __pread64_chk
+PUBLIC ee6a0 0 __recv_chk
+PUBLIC ee6c0 0 __recvfrom_chk
+PUBLIC ee6f0 0 __readlink_chk
+PUBLIC ee730 0 __readlinkat_chk
+PUBLIC ee750 0 __getwd_chk
+PUBLIC ee780 0 __getcwd_chk
+PUBLIC ee7a0 0 __realpath_chk
+PUBLIC ee7c0 0 __ptsname_r_chk
+PUBLIC ee7e0 0 __fread_chk
+PUBLIC ee9e0 0 __fread_unlocked_chk
+PUBLIC eea70 0 __confstr_chk
+PUBLIC eea90 0 __getgroups_chk
+PUBLIC eead0 0 __ttyname_r_chk
+PUBLIC eeaf0 0 __gethostname_chk
+PUBLIC eeb10 0 __getdomainname_chk
+PUBLIC eeb30 0 __asprintf_chk
+PUBLIC eebc0 0 __vasprintf_chk
+PUBLIC eed60 0 __dprintf_chk
+PUBLIC eedf0 0 __vdprintf_chk
+PUBLIC eef00 0 __obstack_vprintf_chk
+PUBLIC ef0e0 0 __obstack_printf_chk
+PUBLIC ef170 0 __longjmp_chk
+PUBLIC ef260 0 __stack_chk_fail
+PUBLIC ef270 0 __fortify_fail
+PUBLIC ef2b0 0 __getlogin_r_chk
+PUBLIC ef3c0 0 backtrace
+PUBLIC ef490 0 __backtrace_symbols
+PUBLIC ef720 0 backtrace_symbols_fd
+PUBLIC ef9f0 0 __wprintf_chk
+PUBLIC efbe0 0 __fwprintf_chk
+PUBLIC efdc0 0 __vwprintf_chk
+PUBLIC eff40 0 __vfwprintf_chk
+PUBLIC f00b0 0 __fgetws_chk
+PUBLIC f02a0 0 __fgetws_unlocked_chk
+PUBLIC f0360 0 __wctomb_chk
+PUBLIC f03a0 0 __wcscpy_chk
+PUBLIC f03e0 0 __wmemcpy_chk
+PUBLIC f0400 0 __wmemmove_chk
+PUBLIC f0420 0 __wmempcpy_chk
+PUBLIC f0440 0 __wcpcpy_chk
+PUBLIC f0480 0 __wcsncpy_chk
+PUBLIC f04a0 0 __wcscat_chk
+PUBLIC f0500 0 __wcsncat_chk
+PUBLIC f0620 0 __wmemset_chk
+PUBLIC f0640 0 __wcpncpy_chk
+PUBLIC f0660 0 __swprintf_chk
+PUBLIC f06f0 0 __vswprintf_chk
+PUBLIC f0810 0 __wcrtomb_chk
+PUBLIC f0840 0 __mbsnrtowcs_chk
+PUBLIC f0860 0 __wcsnrtombs_chk
+PUBLIC f0880 0 __mbsrtowcs_chk
+PUBLIC f08a0 0 __wcsrtombs_chk
+PUBLIC f08c0 0 __mbstowcs_chk
+PUBLIC f08f0 0 __wcstombs_chk
+PUBLIC f0b80 0 htonl
+PUBLIC f0b90 0 htons
+PUBLIC f0ba0 0 inet_lnaof
+PUBLIC f0bd0 0 inet_makeaddr
+PUBLIC f0c20 0 inet_netof
+PUBLIC f0c50 0 inet_ntoa
+PUBLIC f0cf0 0 inet_network
+PUBLIC f0ee0 0 __h_errno_location
+PUBLIC f0f00 0 gethostbyaddr
+PUBLIC f10d0 0 gethostbyaddr_r
+PUBLIC f1470 0 gethostbyname
+PUBLIC f1670 0 gethostbyname2
+PUBLIC f1880 0 gethostbyname2_r
+PUBLIC f1bf0 0 gethostbyname_r
+PUBLIC f1f50 0 gethostent
+PUBLIC f2020 0 gethostent_r
+PUBLIC f2110 0 endhostent
+PUBLIC f21c0 0 sethostent
+PUBLIC f2320 0 getnetbyaddr
+PUBLIC f24f0 0 getnetbyaddr_r
+PUBLIC f2760 0 getnetbyname
+PUBLIC f2910 0 getnetent
+PUBLIC f29e0 0 getnetent_r
+PUBLIC f2ad0 0 endnetent
+PUBLIC f2b80 0 setnetent
+PUBLIC f2ce0 0 getnetbyname_r
+PUBLIC f2f40 0 getprotobynumber
+PUBLIC f30a0 0 getprotobynumber_r
+PUBLIC f3290 0 getprotoent
+PUBLIC f3350 0 getprotoent_r
+PUBLIC f3430 0 endprotoent
+PUBLIC f34d0 0 setprotoent
+PUBLIC f3630 0 getprotobyname
+PUBLIC f3790 0 getprotobyname_r
+PUBLIC f3980 0 getservbyname
+PUBLIC f3b00 0 getservbyname_r
+PUBLIC f3d70 0 getservbyport
+PUBLIC f3ef0 0 getservbyport_r
+PUBLIC f4160 0 getservent
+PUBLIC f4220 0 getservent_r
+PUBLIC f4300 0 endservent
+PUBLIC f43a0 0 setservent
+PUBLIC f4500 0 getrpcent
+PUBLIC f45c0 0 getrpcbyname
+PUBLIC f4720 0 getrpcbynumber
+PUBLIC f4880 0 getrpcent_r
+PUBLIC f4960 0 endrpcent
+PUBLIC f4a00 0 setrpcent
+PUBLIC f4b60 0 getrpcbyname_r
+PUBLIC f4d50 0 getrpcbynumber_r
+PUBLIC f4f40 0 ether_aton
+PUBLIC f4f50 0 ether_aton_r
+PUBLIC f50c0 0 ether_hostton
+PUBLIC f5240 0 ether_line
+PUBLIC f54b0 0 ether_ntoa
+PUBLIC f54c0 0 ether_ntoa_r
+PUBLIC f5510 0 ether_ntohost
+PUBLIC f58a0 0 __internal_getnetgrent_r
+PUBLIC f5a90 0 getnetgrent_r
+PUBLIC f5b80 0 innetgr
+PUBLIC f5f00 0 __internal_endnetgrent
+PUBLIC f5f20 0 endnetgrent
+PUBLIC f5f90 0 __internal_setnetgrent
+PUBLIC f5fe0 0 setnetgrent
+PUBLIC f6130 0 getnetgrent
+PUBLIC f6510 0 getnameinfo
+PUBLIC f6fb0 0 if_indextoname
+PUBLIC f7040 0 if_nametoindex
+PUBLIC f70e0 0 if_freenameindex
+PUBLIC f7120 0 if_nameindex
+PUBLIC f7440 0 freeifaddrs
+PUBLIC f86d0 0 getifaddrs
+PUBLIC f86f0 0 getipv4sourcefilter
+PUBLIC f8850 0 setipv4sourcefilter
+PUBLIC f8a30 0 getsourcefilter
+PUBLIC f8bc0 0 setsourcefilter
+PUBLIC f9260 0 __ivaliduser
+PUBLIC f9620 0 iruserok_af
+PUBLIC f96b0 0 iruserok
+PUBLIC f96d0 0 ruserok_af
+PUBLIC f9790 0 ruserok
+PUBLIC f97a0 0 rresvport_af
+PUBLIC f9960 0 rresvport
+PUBLIC f9970 0 rcmd_af
+PUBLIC fa3c0 0 rcmd
+PUBLIC fa3e0 0 rexec_af
+PUBLIC fa960 0 rexec
+PUBLIC faba0 0 ruserpass
+PUBLIC fb020 0 getaliasent_r
+PUBLIC fb100 0 endaliasent
+PUBLIC fb1a0 0 setaliasent
+PUBLIC fb300 0 getaliasent
+PUBLIC fb3c0 0 getaliasbyname
+PUBLIC fb520 0 getaliasbyname_r
+PUBLIC fb710 0 inet6_option_space
+PUBLIC fb720 0 inet6_option_init
+PUBLIC fb750 0 inet6_option_next
+PUBLIC fb800 0 inet6_option_find
+PUBLIC fba10 0 inet6_option_alloc
+PUBLIC fba20 0 inet6_option_append
+PUBLIC fba70 0 inet6_opt_init
+PUBLIC fbab0 0 inet6_opt_next
+PUBLIC fbb40 0 inet6_opt_find
+PUBLIC fbbd0 0 inet6_opt_get_val
+PUBLIC fbc10 0 inet6_opt_set_val
+PUBLIC fbc50 0 inet6_opt_finish
+PUBLIC fbcd0 0 inet6_opt_append
+PUBLIC fbde0 0 inet6_rth_space
+PUBLIC fbe00 0 inet6_rth_segments
+PUBLIC fbe20 0 inet6_rth_getaddr
+PUBLIC fbe50 0 inet6_rth_reverse
+PUBLIC fbf30 0 inet6_rth_add
+PUBLIC fbf80 0 inet6_rth_init
+PUBLIC fcc50 0 authnone_create
+PUBLIC fccf0 0 authunix_create_default
+PUBLIC fcf50 0 authunix_create
+PUBLIC fd3a0 0 xdr_authunix_parms
+PUBLIC fd440 0 bindresvport
+PUBLIC fd840 0 clnt_create
+PUBLIC fdaf0 0 clnt_sperrno
+PUBLIC fdb60 0 clnt_spcreateerror
+PUBLIC fdc60 0 clnt_pcreateerror
+PUBLIC fdc80 0 clnt_perrno
+PUBLIC fdca0 0 clnt_sperror
+PUBLIC fdf40 0 clnt_perror
+PUBLIC fe010 0 clntraw_create
+PUBLIC fe3d0 0 callrpc
+PUBLIC fe8e0 0 clnttcp_create
+PUBLIC ff050 0 clntudp_bufcreate
+PUBLIC ff080 0 clntudp_create
+PUBLIC ff280 0 __libc_clntudp_bufcreate
+PUBLIC ffde0 0 _rpc_dtablesize
+PUBLIC ffe00 0 get_myaddress
+PUBLIC ffea0 0 getrpcport
+PUBLIC 100050 0 pmap_unset
+PUBLIC 100150 0 pmap_set
+PUBLIC 1002a0 0 pmap_getmaps
+PUBLIC 100430 0 __libc_rpc_getport
+PUBLIC 100620 0 pmap_getport
+PUBLIC 100640 0 xdr_pmap
+PUBLIC 1006b0 0 xdr_pmaplist
+PUBLIC 100780 0 clnt_broadcast
+PUBLIC 100de0 0 xdr_rmtcall_args
+PUBLIC 100ef0 0 xdr_rmtcallres
+PUBLIC 100f70 0 pmap_rmtcall
+PUBLIC 1010c0 0 _seterr_reply
+PUBLIC 1011e0 0 xdr_callhdr
+PUBLIC 101280 0 xdr_rejected_reply
+PUBLIC 101310 0 xdr_accepted_reply
+PUBLIC 1013b0 0 xdr_replymsg
+PUBLIC 101420 0 xdr_des_block
+PUBLIC 101430 0 xdr_opaque_auth
+PUBLIC 101490 0 xdr_callmsg
+PUBLIC 1018e0 0 __rpc_thread_svc_max_pollfd
+PUBLIC 101910 0 __rpc_thread_svc_pollfd
+PUBLIC 101940 0 __rpc_thread_createerr
+PUBLIC 101970 0 __rpc_thread_svc_fdset
+PUBLIC 101990 0 svc_sendreply
+PUBLIC 1019e0 0 svcerr_noproc
+PUBLIC 101a30 0 svcerr_decode
+PUBLIC 101a80 0 svcerr_systemerr
+PUBLIC 101ad0 0 svcerr_auth
+PUBLIC 101b00 0 svcerr_weakauth
+PUBLIC 101b10 0 svcerr_noprog
+PUBLIC 101b60 0 svcerr_progvers
+PUBLIC 101bb0 0 svc_getreq
+PUBLIC 101be0 0 svc_getreq_common
+PUBLIC 101e00 0 svc_getreqset
+PUBLIC 101ea0 0 svc_unregister
+PUBLIC 101f90 0 svc_register
+PUBLIC 102080 0 xprt_unregister
+PUBLIC 102170 0 svc_getreq_poll
+PUBLIC 102210 0 xprt_register
+PUBLIC 102360 0 _authenticate
+PUBLIC 1026b0 0 svcraw_create
+PUBLIC 102840 0 svc_run
+PUBLIC 102980 0 svc_exit
+PUBLIC 1029b0 0 registerrpc
+PUBLIC 102ef0 0 svcfd_create
+PUBLIC 103180 0 svctcp_create
+PUBLIC 103490 0 svcudp_create
+PUBLIC 1034f0 0 svcudp_enablecache
+PUBLIC 103620 0 svcudp_bufcreate
+PUBLIC 103f20 0 xdr_free
+PUBLIC 103f40 0 xdr_void
+PUBLIC 103f50 0 xdr_int
+PUBLIC 103fc0 0 xdr_u_int
+PUBLIC 104030 0 xdr_long
+PUBLIC 104070 0 xdr_u_long
+PUBLIC 1040f0 0 xdr_hyper
+PUBLIC 1041c0 0 xdr_u_hyper
+PUBLIC 104290 0 xdr_longlong_t
+PUBLIC 1042a0 0 xdr_u_longlong_t
+PUBLIC 1042b0 0 xdr_short
+PUBLIC 104320 0 xdr_u_short
+PUBLIC 104390 0 xdr_char
+PUBLIC 1043d0 0 xdr_u_char
+PUBLIC 104410 0 xdr_bool
+PUBLIC 104480 0 xdr_enum
+PUBLIC 1044f0 0 xdr_opaque
+PUBLIC 1045b0 0 xdr_netobj
+PUBLIC 1045d0 0 xdr_union
+PUBLIC 1046a0 0 xdr_wrapstring
+PUBLIC 1046c0 0 xdr_string
+PUBLIC 104800 0 xdr_bytes
+PUBLIC 104950 0 xdr_vector
+PUBLIC 1049d0 0 xdr_array
+PUBLIC 104b50 0 xdr_float
+PUBLIC 104bc0 0 xdr_double
+PUBLIC 104c80 0 xdrmem_create
+PUBLIC 104fd0 0 xdrrec_endofrecord
+PUBLIC 105220 0 xdrrec_eof
+PUBLIC 105280 0 xdrrec_skiprecord
+PUBLIC 105510 0 xdrrec_create
+PUBLIC 105810 0 xdr_pointer
+PUBLIC 1058a0 0 xdr_reference
+PUBLIC 105990 0 xdrstdio_create
+PUBLIC 105bb0 0 getsecretkey
+PUBLIC 105cc0 0 getpublickey
+PUBLIC 105e20 0 xdr_sizeof
+PUBLIC 1063b0 0 authdes_pk_create
+PUBLIC 106610 0 authdes_create
+PUBLIC 1066f0 0 xdr_authdes_verf
+PUBLIC 106740 0 xdr_authdes_cred
+PUBLIC 106c70 0 key_get_conv
+PUBLIC 106cc0 0 key_setnet
+PUBLIC 106d10 0 key_decryptsession_pk
+PUBLIC 106d80 0 key_encryptsession_pk
+PUBLIC 106df0 0 key_decryptsession
+PUBLIC 106e50 0 key_encryptsession
+PUBLIC 106eb0 0 key_setsecret
+PUBLIC 106f00 0 key_gendes
+PUBLIC 106fe0 0 key_secretkey_is_set
+PUBLIC 107070 0 xdr_getcredres
+PUBLIC 1070d0 0 xdr_key_netstarg
+PUBLIC 107130 0 xdr_key_netstres
+PUBLIC 107190 0 xdr_unixcred
+PUBLIC 107200 0 xdr_cryptkeyres
+PUBLIC 107260 0 xdr_cryptkeyarg
+PUBLIC 1072b0 0 xdr_cryptkeyarg2
+PUBLIC 107310 0 xdr_netnamestr
+PUBLIC 107330 0 xdr_keybuf
+PUBLIC 107350 0 xdr_keystatus
+PUBLIC 107370 0 netname2host
+PUBLIC 107410 0 netname2user
+PUBLIC 107520 0 host2netname
+PUBLIC 107740 0 user2netname
+PUBLIC 107850 0 getnetname
+PUBLIC 1079f0 0 rtime
+PUBLIC 107c20 0 authdes_getucred
+PUBLIC 108640 0 clntunix_create
+PUBLIC 109370 0 svcunixfd_create
+PUBLIC 1097c0 0 svcunix_create
+PUBLIC 109c10 0 xdr_int64_t
+PUBLIC 109cd0 0 xdr_uint64_t
+PUBLIC 109d90 0 xdr_int32_t
+PUBLIC 109dd0 0 xdr_uint32_t
+PUBLIC 109e10 0 xdr_int16_t
+PUBLIC 109e80 0 xdr_uint16_t
+PUBLIC 109ef0 0 xdr_int8_t
+PUBLIC 109f60 0 xdr_uint8_t
+PUBLIC 10a0c0 0 passwd2des
+PUBLIC 10a110 0 xdecrypt
+PUBLIC 10a210 0 xencrypt
+PUBLIC 10a3a0 0 ecb_crypt
+PUBLIC 10a3c0 0 cbc_crypt
+PUBLIC 10afb0 0 des_setparity
+PUBLIC 10e3f0 0 isastream
+PUBLIC 10e410 0 getmsg
+PUBLIC 10e430 0 getpmsg
+PUBLIC 10e460 0 putmsg
+PUBLIC 10e480 0 putpmsg
+PUBLIC 10e4b0 0 fattach
+PUBLIC 10e4d0 0 fdetach
+PUBLIC 10e5a0 0 posix_openpt
+PUBLIC 10e6b0 0 getpt
+PUBLIC 10e6e0 0 grantpt
+PUBLIC 10ebb0 0 unlockpt
+PUBLIC 10ef10 0 ptsname_r
+PUBLIC 10ef30 0 ptsname
+PUBLIC 10ef60 0 getutent
+PUBLIC 10f160 0 setutent
+PUBLIC 10f1d0 0 getutent_r
+PUBLIC 10f250 0 pututline
+PUBLIC 10f2c0 0 endutent
+PUBLIC 10f430 0 getutid
+PUBLIC 10f490 0 getutline
+PUBLIC 10f4f0 0 getutid_r
+PUBLIC 10f5f0 0 getutline_r
+PUBLIC 110740 0 utmpname
+PUBLIC 110880 0 updwtmp
+PUBLIC 110980 0 setutxent
+PUBLIC 110990 0 getutxent
+PUBLIC 1109a0 0 endutxent
+PUBLIC 1109b0 0 getutxid
+PUBLIC 1109c0 0 getutxline
+PUBLIC 1109d0 0 pututxline
+PUBLIC 1109e0 0 utmpxname
+PUBLIC 1109f0 0 updwtmpx
+PUBLIC 110a00 0 getutmp
+PUBLIC 110a70 0 dl_iterate_phdr
+PUBLIC 110cc0 0 _dl_addr
+PUBLIC 111000 0 _dl_mcount_wrapper_check
+PUBLIC 111040 0 _dl_mcount_wrapper
+PUBLIC 111180 0 __libc_dlclose
+PUBLIC 1111b0 0 __libc_dlsym
+PUBLIC 111210 0 __libc_dlopen_mode
+PUBLIC 1117a0 0 _dl_sym
+PUBLIC 1117b0 0 _dl_vsym
+PUBLIC 1118a0 0 __libc_dl_error_tsd
+PUBLIC 111990 0 realpath
+PUBLIC 1119c0 0 sched_getaffinity
+PUBLIC 1119d0 0 sched_setaffinity
+PUBLIC 1119e0 0 regexec
+PUBLIC 111dd0 0 nftw64
+PUBLIC 111df0 0 pthread_cond_broadcast
+PUBLIC 111e20 0 pthread_cond_destroy
+PUBLIC 111e50 0 pthread_cond_init
+PUBLIC 111e80 0 pthread_cond_signal
+PUBLIC 111eb0 0 pthread_cond_wait
+PUBLIC 111ee0 0 pthread_cond_timedwait
+PUBLIC 111f50 0 __nss_next
+PUBLIC 111f60 0 __nss_group_lookup
+PUBLIC 111f70 0 __nss_passwd_lookup
+PUBLIC 111fb0 0 __nss_hosts_lookup
+PUBLIC 136380 0 __libc_freeres
+PUBLIC 136990 0 __libc_thread_freeres
+STACK CFI INIT 1eaf0 90 .cfa: $rsp 16 + .ra: .cfa -8 + ^
+STACK CFI 1eaf6 .cfa: $rsp 24 +
+STACK CFI INIT 1eb80 2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 1eb90 9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1eb94 .cfa: $rsp 16 +
+STACK CFI INIT 1eba0 210 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1ebac $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI 1ebba .cfa: $rsp 80 +
+STACK CFI 1ebc7 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT 1edb0 1c7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1edbd $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI 1edd3 .cfa: $rsp 192 +
+STACK CFI 1edf1 $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^
+STACK CFI INIT 1ef80 8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 1ef90 8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 1efa0 16 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 1efc0 10 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1efc4 .cfa: $rsp 16 +
+STACK CFI INIT 1efd0 c3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1efe3 $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 1efea .cfa: $rsp 176 +
+STACK CFI INIT 1f0a0 32 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1f0a4 .cfa: $rsp 16 +
+STACK CFI INIT 1f0e0 7b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1f0fa $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^ .cfa: $rsp 32 +
+STACK CFI INIT 1f160 52 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1f164 .cfa: $rsp 64 +
+STACK CFI INIT 1f1c0 2e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1f1c4 .cfa: $rsp 32 +
+STACK CFI INIT 1f1f0 1f2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1f1f3 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI INIT 1f3f0 17 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 1f410 11 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 1f430 aa .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 1f4e0 218 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1f4e1 .cfa: $rsp 16 +
+STACK CFI 1f4e4 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 1f4e9 $r15: .cfa -24 + ^
+STACK CFI 1f4f2 $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^
+STACK CFI 1f4f7 $rbx: .cfa -56 + ^
+STACK CFI INIT 1f700 1a9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1f70d $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 1f71a $r12: .cfa -40 + ^ $r14: .cfa -24 + ^
+STACK CFI 1f728 .cfa: $rsp 80 +
+STACK CFI 1f734 $r13: .cfa -32 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT 1f8b0 2d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1f8b4 .cfa: $rsp 16 +
+STACK CFI INIT 1f8e0 812 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1f8e1 .cfa: $rsp 16 +
+STACK CFI 1f8e4 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 1f908 $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 20100 212 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 20102 .cfa: $rsp 16 +
+STACK CFI 2010a $r15: .cfa -16 + ^
+STACK CFI 2010c .cfa: $rsp 24 +
+STACK CFI 2010f $r14: .cfa -24 + ^
+STACK CFI 20111 .cfa: $rsp 32 +
+STACK CFI 20113 .cfa: $rsp 40 +
+STACK CFI 20114 .cfa: $rsp 48 +
+STACK CFI 20117 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $rbp: .cfa -48 + ^
+STACK CFI 20118 .cfa: $rsp 56 +
+STACK CFI 2011b $rbx: .cfa -56 + ^
+STACK CFI 2011f .cfa: $rsp 112 +
+STACK CFI INIT 20320 a2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 20322 .cfa: $rsp 16 +
+STACK CFI 20324 .cfa: $rsp 24 +
+STACK CFI 20327 $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI 20329 .cfa: $rsp 32 +
+STACK CFI 2032d $r13: .cfa -32 + ^
+STACK CFI 2032f .cfa: $rsp 40 +
+STACK CFI 20330 .cfa: $rsp 48 +
+STACK CFI 20331 .cfa: $rsp 56 +
+STACK CFI 20335 .cfa: $rsp 64 +
+STACK CFI 20339 $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 213c2 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 213d0 .cfa: $rsp 0 +
+STACK CFI 213d4 .cfa: $rsp 128 +
+STACK CFI 213dc .cfa: $rsp -128 +
+STACK CFI INIT 213e1 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 213ef .cfa: $rsp 0 +
+STACK CFI 213f3 .cfa: $rsp 128 +
+STACK CFI 213fb .cfa: $rsp -128 +
+STACK CFI INIT 21400 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 2140e .cfa: $rsp 0 +
+STACK CFI 21412 .cfa: $rsp 128 +
+STACK CFI 2141a .cfa: $rsp -128 +
+STACK CFI INIT 2141f 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 2142d .cfa: $rsp 0 +
+STACK CFI 21431 .cfa: $rsp 128 +
+STACK CFI 21439 .cfa: $rsp -128 +
+STACK CFI INIT 2143e 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 2144c .cfa: $rsp 0 +
+STACK CFI 21450 .cfa: $rsp 128 +
+STACK CFI 21458 .cfa: $rsp -128 +
+STACK CFI INIT 2145d 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 2146b .cfa: $rsp 0 +
+STACK CFI 2146f .cfa: $rsp 128 +
+STACK CFI 21477 .cfa: $rsp -128 +
+STACK CFI INIT 2147c 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 2148a .cfa: $rsp 0 +
+STACK CFI 2148e .cfa: $rsp 128 +
+STACK CFI 21496 .cfa: $rsp -128 +
+STACK CFI INIT 203d0 8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 203e0 8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 135bd0 5a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 135bd1 .cfa: $rsp 16 +
+STACK CFI 135bd2 .cfa: $rsp 24 +
+STACK CFI 135bd5 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI 135bd9 .cfa: $rsp 32 +
+STACK CFI INIT 135c30 5d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 135c34 .cfa: $rsp 16 +
+STACK CFI INIT 135c90 d9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 135c92 .cfa: $rsp 16 +
+STACK CFI 135c95 $r13: .cfa -16 + ^
+STACK CFI 135c97 .cfa: $rsp 24 +
+STACK CFI 135c98 .cfa: $rsp 32 +
+STACK CFI 135c99 .cfa: $rsp 40 +
+STACK CFI 135c9d .cfa: $rsp 48 +
+STACK CFI 135ca8 $r12: .cfa -24 + ^ $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI INIT 203f0 4f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 203fd $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI 20401 .cfa: $rsp 32 +
+STACK CFI INIT 20440 b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 20450 34 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 20454 .cfa: $rsp 32 +
+STACK CFI INIT 20490 c1 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 20491 .cfa: $rsp 16 +
+STACK CFI 20494 $rbp: .cfa -16 + ^
+STACK CFI 20495 .cfa: $rsp 24 +
+STACK CFI 20498 $rbx: .cfa -24 + ^
+STACK CFI 2049c .cfa: $rsp 48 +
+STACK CFI INIT 20560 bd .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 2056e .cfa: $rsp 32 +
+STACK CFI 20575 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 20620 a6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 20622 .cfa: $rsp 16 +
+STACK CFI 20626 .cfa: $rsp 24 +
+STACK CFI 20627 .cfa: $rsp 32 +
+STACK CFI 2062a $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^
+STACK CFI 2062b .cfa: $rsp 40 +
+STACK CFI 2062e $rbx: .cfa -40 + ^
+STACK CFI 20637 .cfa: $rsp 48 +
+STACK CFI INIT 206d0 a70 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 206d1 .cfa: $rsp 16 +
+STACK CFI 206d7 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 20743 $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 21140 282 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 2114d $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 21168 .cfa: $rsp 80 +
+STACK CFI 21172 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT 2220d 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 2221b .cfa: $rsp 0 +
+STACK CFI 2221f .cfa: $rsp 128 +
+STACK CFI 22227 .cfa: $rsp -128 +
+STACK CFI INIT 2222c 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 2223a .cfa: $rsp 0 +
+STACK CFI 2223e .cfa: $rsp 128 +
+STACK CFI 22246 .cfa: $rsp -128 +
+STACK CFI INIT 135d70 22 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 214a0 ec .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 214a2 .cfa: $rsp 16 +
+STACK CFI 214a5 $r14: .cfa -16 + ^
+STACK CFI 214a7 .cfa: $rsp 24 +
+STACK CFI 214aa $r13: .cfa -24 + ^
+STACK CFI 214ac .cfa: $rsp 32 +
+STACK CFI 214ad .cfa: $rsp 40 +
+STACK CFI 214b4 $r12: .cfa -32 + ^ $rbp: .cfa -40 + ^
+STACK CFI 214b5 .cfa: $rsp 48 +
+STACK CFI 214b7 $rbx: .cfa -48 + ^
+STACK CFI INIT 21590 359 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 21591 .cfa: $rsp 16 +
+STACK CFI 21597 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 215a3 $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 218f0 b9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 218f2 .cfa: $rsp 16 +
+STACK CFI 218f5 $r13: .cfa -16 + ^
+STACK CFI 218f7 .cfa: $rsp 24 +
+STACK CFI 218fa $r12: .cfa -24 + ^
+STACK CFI 218fb .cfa: $rsp 32 +
+STACK CFI 218fc .cfa: $rsp 40 +
+STACK CFI 218ff $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI 21903 .cfa: $rsp 48 +
+STACK CFI INIT 219b0 3c5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 219b1 .cfa: $rsp 16 +
+STACK CFI 219bb $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 219f8 $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 21d80 48d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 21d81 .cfa: $rsp 16 +
+STACK CFI 21d84 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 21db4 $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 22250 da .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 22252 .cfa: $rsp 16 +
+STACK CFI 22259 $r14: .cfa -16 + ^
+STACK CFI 2225b .cfa: $rsp 24 +
+STACK CFI 2225e $r13: .cfa -24 + ^
+STACK CFI 22260 .cfa: $rsp 32 +
+STACK CFI 22263 $r12: .cfa -32 + ^
+STACK CFI 22264 .cfa: $rsp 40 +
+STACK CFI 22267 $rbp: .cfa -40 + ^
+STACK CFI 22268 .cfa: $rsp 48 +
+STACK CFI 2226a $rbx: .cfa -48 + ^
+STACK CFI INIT 22330 10 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 22340 8f2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 22342 .cfa: $rsp 16 +
+STACK CFI 22348 $r15: .cfa -16 + ^
+STACK CFI 22351 .cfa: $rsp 24 +
+STACK CFI 22357 .cfa: $rsp 32 +
+STACK CFI 22359 .cfa: $rsp 40 +
+STACK CFI 2235c $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^
+STACK CFI 2235d .cfa: $rsp 48 +
+STACK CFI 2235e .cfa: $rsp 56 +
+STACK CFI 22365 .cfa: $rsp 240 +
+STACK CFI 22388 $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 22c40 5ca .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 22c42 .cfa: $rsp 16 +
+STACK CFI 22c49 $r15: .cfa -16 + ^
+STACK CFI 22c4e .cfa: $rsp 24 +
+STACK CFI 22c54 .cfa: $rsp 32 +
+STACK CFI 22c56 .cfa: $rsp 40 +
+STACK CFI 22c57 .cfa: $rsp 48 +
+STACK CFI 22c5a $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $rbp: .cfa -48 + ^
+STACK CFI 22c5b .cfa: $rsp 56 +
+STACK CFI 22c62 .cfa: $rsp 192 +
+STACK CFI 22c7c $rbx: .cfa -56 + ^
+STACK CFI INIT 23210 dfa .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 23212 .cfa: $rsp 16 +
+STACK CFI 23218 .cfa: $rsp 24 +
+STACK CFI 2321b $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI 23224 .cfa: $rsp 32 +
+STACK CFI 23226 .cfa: $rsp 40 +
+STACK CFI 23227 .cfa: $rsp 48 +
+STACK CFI 2322a $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $rbp: .cfa -48 + ^
+STACK CFI 2322b .cfa: $rsp 56 +
+STACK CFI 23232 .cfa: $rsp 208 +
+STACK CFI 23250 $rbx: .cfa -56 + ^
+STACK CFI INIT 24010 be8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 24012 .cfa: $rsp 16 +
+STACK CFI 24018 $r15: .cfa -16 + ^
+STACK CFI 24021 .cfa: $rsp 24 +
+STACK CFI 24027 .cfa: $rsp 32 +
+STACK CFI 24029 .cfa: $rsp 40 +
+STACK CFI 2402c $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^
+STACK CFI 2402d .cfa: $rsp 48 +
+STACK CFI 2402e .cfa: $rsp 56 +
+STACK CFI 24035 .cfa: $rsp 240 +
+STACK CFI 24038 $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 24c00 89e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 24c02 .cfa: $rsp 16 +
+STACK CFI 24c08 $r15: .cfa -16 + ^
+STACK CFI 24c11 .cfa: $rsp 24 +
+STACK CFI 24c17 .cfa: $rsp 32 +
+STACK CFI 24c19 .cfa: $rsp 40 +
+STACK CFI 24c1c $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^
+STACK CFI 24c1d .cfa: $rsp 48 +
+STACK CFI 24c1e .cfa: $rsp 56 +
+STACK CFI 24c25 .cfa: $rsp 240 +
+STACK CFI 24c48 $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 254a0 388 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 254a2 .cfa: $rsp 16 +
+STACK CFI 254a8 $r15: .cfa -16 + ^
+STACK CFI 254ae .cfa: $rsp 24 +
+STACK CFI 254b0 .cfa: $rsp 32 +
+STACK CFI 254b2 .cfa: $rsp 40 +
+STACK CFI 254b3 .cfa: $rsp 48 +
+STACK CFI 254b6 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $rbp: .cfa -48 + ^
+STACK CFI 254b7 .cfa: $rsp 56 +
+STACK CFI 254bb .cfa: $rsp 176 +
+STACK CFI 254e4 $rbx: .cfa -56 + ^
+STACK CFI INIT 25830 4aa .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 25832 .cfa: $rsp 16 +
+STACK CFI 25839 $r15: .cfa -16 + ^
+STACK CFI 2583b .cfa: $rsp 24 +
+STACK CFI 2583e $r14: .cfa -24 + ^
+STACK CFI 25844 .cfa: $rsp 32 +
+STACK CFI 25846 .cfa: $rsp 40 +
+STACK CFI 25847 .cfa: $rsp 48 +
+STACK CFI 25848 .cfa: $rsp 56 +
+STACK CFI 2584c .cfa: $rsp 176 +
+STACK CFI 25865 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 25ce0 900 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 25ce2 .cfa: $rsp 16 +
+STACK CFI 25ce8 $r15: .cfa -16 + ^
+STACK CFI 25cf1 .cfa: $rsp 24 +
+STACK CFI 25cf7 .cfa: $rsp 32 +
+STACK CFI 25cf9 .cfa: $rsp 40 +
+STACK CFI 25cfc $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^
+STACK CFI 25cfd .cfa: $rsp 48 +
+STACK CFI 25cfe .cfa: $rsp 56 +
+STACK CFI 25d05 .cfa: $rsp 240 +
+STACK CFI 25d28 $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 265e0 5c9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 265e2 .cfa: $rsp 16 +
+STACK CFI 265e9 $r15: .cfa -16 + ^
+STACK CFI 265ee .cfa: $rsp 24 +
+STACK CFI 265f4 .cfa: $rsp 32 +
+STACK CFI 265f6 .cfa: $rsp 40 +
+STACK CFI 265f7 .cfa: $rsp 48 +
+STACK CFI 265fa $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $rbp: .cfa -48 + ^
+STACK CFI 265fb .cfa: $rsp 56 +
+STACK CFI 26602 .cfa: $rsp 192 +
+STACK CFI 2661c $rbx: .cfa -56 + ^
+STACK CFI INIT 26bb0 4bb .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 26bb2 .cfa: $rsp 16 +
+STACK CFI 26bb8 $r15: .cfa -16 + ^
+STACK CFI 26bba .cfa: $rsp 24 +
+STACK CFI 26bbd $r14: .cfa -24 + ^
+STACK CFI 26bc3 .cfa: $rsp 32 +
+STACK CFI 26bc5 .cfa: $rsp 40 +
+STACK CFI 26bc6 .cfa: $rsp 48 +
+STACK CFI 26bc7 .cfa: $rsp 56 +
+STACK CFI 26bcb .cfa: $rsp 176 +
+STACK CFI 26bf1 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 27070 40f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 27072 .cfa: $rsp 16 +
+STACK CFI 27079 $r15: .cfa -16 + ^
+STACK CFI 2707b .cfa: $rsp 24 +
+STACK CFI 2707e $r14: .cfa -24 + ^
+STACK CFI 27080 .cfa: $rsp 32 +
+STACK CFI 27082 .cfa: $rsp 40 +
+STACK CFI 27083 .cfa: $rsp 48 +
+STACK CFI 27084 .cfa: $rsp 56 +
+STACK CFI 27088 .cfa: $rsp 176 +
+STACK CFI 270ab $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 27480 3f4 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 27482 .cfa: $rsp 16 +
+STACK CFI 27489 $r15: .cfa -16 + ^
+STACK CFI 2748b .cfa: $rsp 24 +
+STACK CFI 2748d .cfa: $rsp 32 +
+STACK CFI 2748f .cfa: $rsp 40 +
+STACK CFI 27490 .cfa: $rsp 48 +
+STACK CFI 27491 .cfa: $rsp 56 +
+STACK CFI 27494 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 27498 .cfa: $rsp 176 +
+STACK CFI INIT 28046 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 28054 .cfa: $rsp 0 +
+STACK CFI 28058 .cfa: $rsp 128 +
+STACK CFI 28060 .cfa: $rsp -128 +
+STACK CFI INIT 28065 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 28073 .cfa: $rsp 0 +
+STACK CFI 28077 .cfa: $rsp 128 +
+STACK CFI 2807f .cfa: $rsp -128 +
+STACK CFI INIT 27880 c0 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 27881 .cfa: $rsp 16 +
+STACK CFI 27884 $rbx: .cfa -16 + ^
+STACK CFI INIT 27940 29c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 2794d $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 27965 .cfa: $rsp 64 +
+STACK CFI 2796f $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT 27be0 b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 27bf0 456 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 27bf2 .cfa: $rsp 16 +
+STACK CFI 27bf4 .cfa: $rsp 24 +
+STACK CFI 27bf7 $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI 27bf9 .cfa: $rsp 32 +
+STACK CFI 27bfb .cfa: $rsp 40 +
+STACK CFI 27bfc .cfa: $rsp 48 +
+STACK CFI 27bfd .cfa: $rsp 56 +
+STACK CFI 27c04 .cfa: $rsp 240 +
+STACK CFI 27c2a $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 28090 8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 280a0 12 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 135da0 3a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 280c0 f5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 280c2 .cfa: $rsp 16 +
+STACK CFI 280c4 .cfa: $rsp 24 +
+STACK CFI 280c6 .cfa: $rsp 32 +
+STACK CFI 280c9 $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI 280cb .cfa: $rsp 40 +
+STACK CFI 280cc .cfa: $rsp 48 +
+STACK CFI 280cd .cfa: $rsp 56 +
+STACK CFI 280d1 .cfa: $rsp 96 +
+STACK CFI 280e7 $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 281c0 7f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 281cd $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 281d6 .cfa: $rsp 48 +
+STACK CFI 281e4 $r12: .cfa -16 + ^
+STACK CFI INIT 28240 106 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 28241 .cfa: $rsp 16 +
+STACK CFI 28244 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 2824f $r12: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 2825a $r13: .cfa -40 + ^ $r14: .cfa -32 + ^
+STACK CFI 28265 $r15: .cfa -24 + ^
+STACK CFI INIT 28350 484 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 2835d $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 28378 .cfa: $rsp 128 +
+STACK CFI 2837f $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT 287e0 1d4 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 287f8 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^ .cfa: $rsp 176 +
+STACK CFI INIT 135de0 27 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 135de4 .cfa: $rsp 16 +
+STACK CFI INIT 135e10 1b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 135e11 .cfa: $rsp 16 +
+STACK CFI 135e14 $rbx: .cfa -16 + ^
+STACK CFI INIT 289c0 1a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 289e0 89 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 289e4 .cfa: $rsp 16 +
+STACK CFI 289e7 $rbx: .cfa -16 + ^
+STACK CFI INIT 28a70 1df .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 28a71 .cfa: $rsp 16 +
+STACK CFI 28a80 .cfa: $rsp 24 +
+STACK CFI 28a84 .cfa: $rsp 48 +
+STACK CFI 28a8e $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 28c50 b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 28c60 15 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 28c80 59 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 28c8c $rbx: .cfa -32 + ^
+STACK CFI 28c94 $rbp: .cfa -24 + ^
+STACK CFI 28c9d .cfa: $rsp 32 +
+STACK CFI 28ca8 $r12: .cfa -16 + ^
+STACK CFI INIT 135e30 104 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 135e32 .cfa: $rsp 16 +
+STACK CFI 135e39 $r15: .cfa -16 + ^
+STACK CFI 135e3b .cfa: $rsp 24 +
+STACK CFI 135e3d .cfa: $rsp 32 +
+STACK CFI 135e43 $r13: .cfa -32 + ^ $r14: .cfa -24 + ^
+STACK CFI 135e45 .cfa: $rsp 40 +
+STACK CFI 135e48 $r12: .cfa -40 + ^
+STACK CFI 135e49 .cfa: $rsp 48 +
+STACK CFI 135e4a .cfa: $rsp 56 +
+STACK CFI 135e4e .cfa: $rsp 80 +
+STACK CFI 135e62 $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 28ce0 232 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 28ce2 .cfa: $rsp 16 +
+STACK CFI 28ceb $r15: .cfa -16 + ^
+STACK CFI 28ced .cfa: $rsp 24 +
+STACK CFI 28cf0 $r14: .cfa -24 + ^
+STACK CFI 28cf2 .cfa: $rsp 32 +
+STACK CFI 28cf4 .cfa: $rsp 40 +
+STACK CFI 28cf7 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^
+STACK CFI 28cf8 .cfa: $rsp 48 +
+STACK CFI 28cfd $rbp: .cfa -48 + ^
+STACK CFI 28cfe .cfa: $rsp 56 +
+STACK CFI 28d00 $rbx: .cfa -56 + ^
+STACK CFI 28d04 .cfa: $rsp 96 +
+STACK CFI INIT 28f20 6c1 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 28f21 .cfa: $rsp 16 +
+STACK CFI 28f24 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 28f2b $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI 28f32 $r12: .cfa -48 + ^ $r13: .cfa -40 + ^
+STACK CFI 28f36 $rbx: .cfa -56 + ^
+STACK CFI INIT 295f0 aa .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 296a0 5a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 29700 4de .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 29701 .cfa: $rsp 16 +
+STACK CFI 29704 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 2970f $r12: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 2971a $r13: .cfa -40 + ^ $r14: .cfa -32 + ^
+STACK CFI 29737 $r15: .cfa -24 + ^
+STACK CFI INIT 29be0 57 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 29be1 .cfa: $rsp 16 +
+STACK CFI 29be8 $rbx: .cfa -16 + ^
+STACK CFI INIT 29c40 38c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 29c42 .cfa: $rsp 16 +
+STACK CFI 29c45 $r13: .cfa -16 + ^
+STACK CFI 29c47 .cfa: $rsp 24 +
+STACK CFI 29c48 .cfa: $rsp 32 +
+STACK CFI 29c4b $r12: .cfa -24 + ^ $rbp: .cfa -32 + ^
+STACK CFI 29c4c .cfa: $rsp 40 +
+STACK CFI 29c4e $rbx: .cfa -40 + ^
+STACK CFI 29c52 .cfa: $rsp 48 +
+STACK CFI INIT 29fd0 2ac .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 29fd1 .cfa: $rsp 16 +
+STACK CFI 29fd6 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 29fe1 $r12: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 29fec $r13: .cfa -40 + ^ $r15: .cfa -24 + ^
+STACK CFI 2a00b $r14: .cfa -32 + ^
+STACK CFI INIT 135f40 107 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 135f42 .cfa: $rsp 16 +
+STACK CFI 135f44 .cfa: $rsp 24 +
+STACK CFI 135f4b $r13: .cfa -24 + ^ $r14: .cfa -16 + ^
+STACK CFI 135f4d .cfa: $rsp 32 +
+STACK CFI 135f51 .cfa: $rsp 40 +
+STACK CFI 135f52 .cfa: $rsp 48 +
+STACK CFI 135f54 $r12: .cfa -32 + ^ $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI INIT 2a280 548 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 2a281 .cfa: $rsp 16 +
+STACK CFI 2a284 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 2a2a9 $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 2a7d0 1be .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2a990 10 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2a9a0 5b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2aa00 6ad .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 2aa01 .cfa: $rsp 16 +
+STACK CFI 2aa04 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 2aa10 $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 2b0b0 192 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 2b0b2 .cfa: $rsp 16 +
+STACK CFI 2b0bb .cfa: $rsp 24 +
+STACK CFI 2b0c0 .cfa: $rsp 32 +
+STACK CFI 2b0c1 .cfa: $rsp 40 +
+STACK CFI 2b0c4 $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^ $rbp: .cfa -40 + ^
+STACK CFI 2b0c5 .cfa: $rsp 48 +
+STACK CFI 2b0cb $rbx: .cfa -48 + ^
+STACK CFI INIT 2b250 be .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 2b252 .cfa: $rsp 16 +
+STACK CFI 2b25a .cfa: $rsp 24 +
+STACK CFI 2b25e .cfa: $rsp 32 +
+STACK CFI 2b261 $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI INIT 2b310 5f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2b370 43 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2b3c0 46 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2b410 f6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2b510 17 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2b530 14f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 2b53d $r12: .cfa -40 + ^ $r13: .cfa -32 + ^
+STACK CFI 2b558 .cfa: $rsp 128 +
+STACK CFI 2b561 $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 2b680 15f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 2b68c $r12: .cfa -40 + ^ $rbx: .cfa -56 + ^
+STACK CFI 2b699 $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^
+STACK CFI 2b6aa .cfa: $rsp 1152 +
+STACK CFI 2b6c0 $r13: .cfa -32 + ^ $r14: .cfa -24 + ^
+STACK CFI INIT 2b7e0 b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 2b7e4 .cfa: $rsp 16 +
+STACK CFI INIT 2b7f0 30 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2b820 30 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2b850 3b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2b890 3b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2b8d0 3b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2b910 39 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2b950 3b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2b990 3b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2b9d0 3b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2ba10 3b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2ba50 39 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2ba90 3b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2bad0 39 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2bb10 1d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2bb30 1d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2bb50 6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2bb60 c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2bb70 f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2bb80 39 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2bbc0 f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2bbd0 11 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2bbf0 f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2bc00 11 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2bc20 11 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2bc40 11 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2bc60 11 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2bc80 f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2bc90 11 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2bcb0 11 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2bcd0 11 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2bcf0 b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2bd00 b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2bd10 20 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2bd30 37 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2bd70 37 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2bdb0 37 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2bdf0 3f6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 2bdfd $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 2be18 .cfa: $rsp 80 +
+STACK CFI 2be1e $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT 2c1f0 1f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 2c1f4 .cfa: $rsp 32 +
+STACK CFI INIT 2c210 1f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 2c214 .cfa: $rsp 32 +
+STACK CFI INIT 2c230 f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2c240 a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2c250 f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2da9e 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 2daac .cfa: $rsp 0 +
+STACK CFI 2dab0 .cfa: $rsp 128 +
+STACK CFI 2dab8 .cfa: $rsp -128 +
+STACK CFI INIT 2dabd 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 2dacb .cfa: $rsp 0 +
+STACK CFI 2dacf .cfa: $rsp 128 +
+STACK CFI 2dad7 .cfa: $rsp -128 +
+STACK CFI INIT 2dadc 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 2daea .cfa: $rsp 0 +
+STACK CFI 2daee .cfa: $rsp 128 +
+STACK CFI 2daf6 .cfa: $rsp -128 +
+STACK CFI INIT 2dafb 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 2db09 .cfa: $rsp 0 +
+STACK CFI 2db0d .cfa: $rsp 128 +
+STACK CFI 2db15 .cfa: $rsp -128 +
+STACK CFI INIT 2db1a 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 2db28 .cfa: $rsp 0 +
+STACK CFI 2db2c .cfa: $rsp 128 +
+STACK CFI 2db34 .cfa: $rsp -128 +
+STACK CFI INIT 2db39 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 2db47 .cfa: $rsp 0 +
+STACK CFI 2db4b .cfa: $rsp 128 +
+STACK CFI 2db53 .cfa: $rsp -128 +
+STACK CFI INIT 2c260 1df .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 2c268 $rbp: .cfa -24 + ^
+STACK CFI 2c276 .cfa: $rsp 32 +
+STACK CFI 2c27c $r12: .cfa -16 + ^ $rbx: .cfa -32 + ^
+STACK CFI INIT 136050 b8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 136052 .cfa: $rsp 16 +
+STACK CFI 136053 .cfa: $rsp 24 +
+STACK CFI 13605a $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^
+STACK CFI 13605b .cfa: $rsp 32 +
+STACK CFI 13605f $rbx: .cfa -32 + ^
+STACK CFI INIT 2c440 76 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 2c441 .cfa: $rsp 16 +
+STACK CFI 2c444 $rbp: .cfa -16 + ^
+STACK CFI 2c445 .cfa: $rsp 24 +
+STACK CFI 2c448 $rbx: .cfa -24 + ^
+STACK CFI 2c450 .cfa: $rsp 32 +
+STACK CFI INIT 2c4c0 c39 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 2c4c1 .cfa: $rsp 16 +
+STACK CFI 2c4c4 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 2c4fd $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 2d100 75 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 2d102 .cfa: $rsp 16 +
+STACK CFI 2d104 .cfa: $rsp 24 +
+STACK CFI 2d107 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI 2d108 .cfa: $rsp 32 +
+STACK CFI 2d109 .cfa: $rsp 40 +
+STACK CFI 2d10c $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI 2d114 .cfa: $rsp 48 +
+STACK CFI INIT 2d180 91e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 2d181 .cfa: $rsp 16 +
+STACK CFI 2d184 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 2d1c6 $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 2db60 10 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2db70 b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2db80 16 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 136110 49 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 136111 .cfa: $rsp 16 +
+STACK CFI 136112 .cfa: $rsp 24 +
+STACK CFI 136116 .cfa: $rsp 32 +
+STACK CFI 13611d $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 2dba0 315 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 2dba1 .cfa: $rsp 16 +
+STACK CFI 2dba4 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 2dbaf $r12: .cfa -48 + ^ $r13: .cfa -40 + ^
+STACK CFI 2dbba $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI 2dbdb $rbx: .cfa -56 + ^
+STACK CFI INIT 2ef65 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 2ef73 .cfa: $rsp 0 +
+STACK CFI 2ef77 .cfa: $rsp 128 +
+STACK CFI 2ef7f .cfa: $rsp -128 +
+STACK CFI INIT 2ef84 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 2ef92 .cfa: $rsp 0 +
+STACK CFI 2ef96 .cfa: $rsp 128 +
+STACK CFI 2ef9e .cfa: $rsp -128 +
+STACK CFI INIT 136160 c6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 136162 .cfa: $rsp 16 +
+STACK CFI 13616b .cfa: $rsp 24 +
+STACK CFI 13616c .cfa: $rsp 32 +
+STACK CFI 13616d .cfa: $rsp 40 +
+STACK CFI 136170 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI 136174 .cfa: $rsp 48 +
+STACK CFI INIT 2dec0 10a5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 2dec1 .cfa: $rsp 16 +
+STACK CFI 2decd $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 2ded8 $r14: .cfa -32 + ^ $rbx: .cfa -56 + ^
+STACK CFI 2def7 $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r15: .cfa -24 + ^
+STACK CFI INIT 2f59b 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 2f5a9 .cfa: $rsp 0 +
+STACK CFI 2f5ad .cfa: $rsp 128 +
+STACK CFI 2f5b5 .cfa: $rsp -128 +
+STACK CFI INIT 2f5ba 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 2f5c8 .cfa: $rsp 0 +
+STACK CFI 2f5cc .cfa: $rsp 128 +
+STACK CFI 2f5d4 .cfa: $rsp -128 +
+STACK CFI INIT 2efb0 49a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 2efb1 .cfa: $rsp 16 +
+STACK CFI 2efbe $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 2efda $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 2f450 136 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 2f451 .cfa: $rsp 16 +
+STACK CFI 2f459 .cfa: $rsp 24 +
+STACK CFI 2f45c $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI 2f460 .cfa: $rsp 48 +
+STACK CFI INIT 2f590 b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2f5e0 131 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 2f5e1 .cfa: $rsp 16 +
+STACK CFI 2f5e2 .cfa: $rsp 24 +
+STACK CFI 2f5e5 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI 2f5e9 .cfa: $rsp 32 +
+STACK CFI INIT 2f720 1b5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 2f722 .cfa: $rsp 16 +
+STACK CFI 2f72b $r12: .cfa -16 + ^
+STACK CFI 2f72c .cfa: $rsp 24 +
+STACK CFI 2f72f $rbp: .cfa -24 + ^
+STACK CFI 2f730 .cfa: $rsp 32 +
+STACK CFI 2f733 $rbx: .cfa -32 + ^
+STACK CFI INIT 2f8e0 4bd .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 2f8e2 .cfa: $rsp 16 +
+STACK CFI 2f8e4 .cfa: $rsp 24 +
+STACK CFI 2f8e6 .cfa: $rsp 32 +
+STACK CFI 2f8e9 $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI 2f8eb .cfa: $rsp 40 +
+STACK CFI 2f8ec .cfa: $rsp 48 +
+STACK CFI 2f8ed .cfa: $rsp 56 +
+STACK CFI 2f8f4 .cfa: $rsp 192 +
+STACK CFI 2f910 $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 2fda0 265 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 2fda2 .cfa: $rsp 16 +
+STACK CFI 2fda3 .cfa: $rsp 24 +
+STACK CFI 2fda4 .cfa: $rsp 32 +
+STACK CFI 2fda8 .cfa: $rsp 64 +
+STACK CFI 2fdd2 $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI INIT 30010 52 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 30014 .cfa: $rsp 16 +
+STACK CFI 30017 $rbx: .cfa -16 + ^
+STACK CFI INIT 30070 c7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 30072 .cfa: $rsp 16 +
+STACK CFI 30075 $r13: .cfa -16 + ^
+STACK CFI 30077 .cfa: $rsp 24 +
+STACK CFI 3007a $r12: .cfa -24 + ^
+STACK CFI 3007b .cfa: $rsp 32 +
+STACK CFI 3007d $rbp: .cfa -32 + ^
+STACK CFI 3007e .cfa: $rsp 40 +
+STACK CFI 30080 $rbx: .cfa -40 + ^
+STACK CFI 30084 .cfa: $rsp 48 +
+STACK CFI INIT 30140 86f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 30142 .cfa: $rsp 16 +
+STACK CFI 30151 .cfa: $rsp 24 +
+STACK CFI 30157 $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI 30159 .cfa: $rsp 32 +
+STACK CFI 30160 $r13: .cfa -32 + ^
+STACK CFI 30162 .cfa: $rsp 40 +
+STACK CFI 30163 .cfa: $rsp 48 +
+STACK CFI 30164 .cfa: $rsp 56 +
+STACK CFI 3016b .cfa: $rsp 2192 +
+STACK CFI 30178 $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 309b0 107 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 309b2 .cfa: $rsp 16 +
+STACK CFI 309b4 .cfa: $rsp 24 +
+STACK CFI 309b7 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI 309b8 .cfa: $rsp 32 +
+STACK CFI 309bb $rbp: .cfa -32 + ^
+STACK CFI 309bc .cfa: $rsp 40 +
+STACK CFI 309bf $rbx: .cfa -40 + ^
+STACK CFI 309c3 .cfa: $rsp 80 +
+STACK CFI INIT 30ac0 34 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 30b00 94 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 30b01 .cfa: $rsp 16 +
+STACK CFI 30b09 .cfa: $rsp 24 +
+STACK CFI 30b0b $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 30ba0 67 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 30ba5 .cfa: $rsp 16 +
+STACK CFI 30ba8 $rbx: .cfa -16 + ^
+STACK CFI INIT 30c10 235 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 30c11 .cfa: $rsp 16 +
+STACK CFI 30c14 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 30c1e $r12: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI 30c35 $r13: .cfa -32 + ^ $r14: .cfa -24 + ^
+STACK CFI INIT 30e50 8b9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 30e51 .cfa: $rsp 16 +
+STACK CFI 30e54 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 30e60 $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 31710 35 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 31750 24 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 31780 1d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 317a0 15 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 317c0 ea .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 318b0 10a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 319c0 a2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 31a70 86 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 31a71 .cfa: $rsp 16 +
+STACK CFI 31a77 $rbx: .cfa -16 + ^
+STACK CFI 31a7b .cfa: $rsp 48 +
+STACK CFI INIT 31b00 a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 31b10 23 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 31b40 15 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 31b60 12 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 31b80 12 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 31ba0 86 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 31c30 d7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 31d10 66 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 31d80 82 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 31d81 .cfa: $rsp 16 +
+STACK CFI 31d86 $rbx: .cfa -16 + ^
+STACK CFI 31d8a .cfa: $rsp 48 +
+STACK CFI INIT 31e10 8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 31e20 4e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 31e70 3f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 31eb0 f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 31ec0 1e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 31ee0 173 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 32060 11 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 32080 92 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 32120 86 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 32121 .cfa: $rsp 16 +
+STACK CFI 32123 $rbx: .cfa -16 + ^
+STACK CFI 32127 .cfa: $rsp 64 +
+STACK CFI INIT 321b0 1d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 321d0 1e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 321f0 57 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 32250 35 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 32253 .cfa: $rsp 16 +
+STACK CFI 32256 $rbx: .cfa -16 + ^
+STACK CFI INIT 32290 a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 322a0 7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 322b0 4a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 322be .cfa: $rsp 32 +
+STACK CFI 322c1 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 32300 50 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 32333 $r12: .cfa 16 + ^ $r13: .cfa 24 + ^ $r14: .cfa 32 + ^ $r15: .cfa 40 + ^ $rbp: $r9 $rbx: .cfa 0 + ^ $rsp: $r8 .cfa: $rdi 0 + .ra: $rdx
+STACK CFI INIT 32350 29 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 32380 b5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 32387 .cfa: $rsp 336 +
+STACK CFI INIT 32440 66 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 324b0 24 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 324ef a .ra: $rip
+STACK CFI INIT 32500 1f6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 32507 .cfa: $rsp 216 +
+STACK CFI INIT 32700 1f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 32720 2a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 32750 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 32780 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 327b0 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 327e0 83 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 327e4 .cfa: $rsp 32 +
+STACK CFI INIT 32870 80 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 32871 .cfa: $rsp 16 +
+STACK CFI 32877 $rbx: .cfa -16 + ^
+STACK CFI 3287b .cfa: $rsp 24 +
+STACK CFI INIT 328f0 4a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 328f1 .cfa: $rsp 16 +
+STACK CFI 328f5 .cfa: $rsp 32 +
+STACK CFI 328fb $rbx: .cfa -16 + ^
+STACK CFI INIT 32940 57 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 32947 .cfa: $rsp 272 +
+STACK CFI INIT 329a0 5a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 329a7 .cfa: $rsp 272 +
+STACK CFI INIT 32a00 72 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 32a01 .cfa: $rsp 16 +
+STACK CFI 32a03 $rbp: .cfa -16 + ^
+STACK CFI 32a04 .cfa: $rsp 24 +
+STACK CFI 32a0b .cfa: $rsp 160 +
+STACK CFI 32a0f $rbx: .cfa -24 + ^
+STACK CFI INIT 32a80 46 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 32a81 .cfa: $rsp 16 +
+STACK CFI 32a85 .cfa: $rsp 32 +
+STACK CFI 32a8b $rbx: .cfa -16 + ^
+STACK CFI INIT 32ad0 a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 32ae0 7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 32af0 eb .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 32af1 .cfa: $rsp 16 +
+STACK CFI 32af6 $rbx: .cfa -16 + ^
+STACK CFI 32afd .cfa: $rsp 336 +
+STACK CFI INIT 32be0 5f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 32be1 .cfa: $rsp 16 +
+STACK CFI 32be4 $rbx: .cfa -16 + ^
+STACK CFI 32bea .cfa: $rsp 80 +
+STACK CFI INIT 32c40 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 32c70 cf .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 32c7d $r12: .cfa -16 + ^ $rbx: .cfa -32 + ^
+STACK CFI 32c89 .cfa: $rsp 192 +
+STACK CFI 32c90 $rbp: .cfa -24 + ^
+STACK CFI INIT 32d40 20 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 32d60 1c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 32d80 1e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 32da0 24 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 32dd0 ac .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 32e80 3c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 32ec0 3c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 32f00 44 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 32f50 14 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 32f70 7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 32f80 8f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 32f87 .cfa: $rsp 336 +
+STACK CFI INIT 33010 45 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 33060 48 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 330b0 48 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 33100 7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 33110 7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 33120 46 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 33170 90 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 33174 .cfa: $rsp 24 +
+STACK CFI INIT 33200 58 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 33201 .cfa: $rsp 16 +
+STACK CFI 33205 .cfa: $rsp 48 +
+STACK CFI 3320f $rbx: .cfa -16 + ^
+STACK CFI INIT 33260 90 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 33264 .cfa: $rsp 24 +
+STACK CFI INIT 332f0 4a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 332f1 .cfa: $rsp 16 +
+STACK CFI 332f5 .cfa: $rsp 32 +
+STACK CFI 332fb $rbx: .cfa -16 + ^
+STACK CFI INIT 33340 a2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 3334c $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI 3335d .cfa: $rsp 176 +
+STACK CFI 3336d $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT 333f0 67 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 33401 .cfa: $rsp 160 +
+STACK CFI 33405 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 33460 67 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 33471 .cfa: $rsp 160 +
+STACK CFI 33475 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 334d0 44 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 334d7 .cfa: $rsp 176 +
+STACK CFI INIT 33520 195 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 3352c $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 33538 .cfa: $rsp 608 +
+STACK CFI 33542 $r12: .cfa -16 + ^
+STACK CFI INIT 336c0 6b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 33730 6c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 33731 .cfa: $rsp 16 +
+STACK CFI 3373b $rbx: .cfa -16 + ^
+STACK CFI INIT 337a0 8c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 337b5 .cfa: $rsp 48 +
+STACK CFI 337bb $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI INIT 33830 8c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 33845 .cfa: $rsp 48 +
+STACK CFI 3384b $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI INIT 338c0 ad .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 33970 eb .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 33a60 5c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 33ac0 64 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 33b30 4b0 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 33b32 .cfa: $rsp 16 +
+STACK CFI 33b37 .cfa: $rsp 24 +
+STACK CFI 33b39 .cfa: $rsp 32 +
+STACK CFI 33b3b .cfa: $rsp 40 +
+STACK CFI 33b3c .cfa: $rsp 48 +
+STACK CFI 33b3f $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^
+STACK CFI 33b40 .cfa: $rsp 56 +
+STACK CFI 33b43 $rbx: .cfa -56 + ^
+STACK CFI 33b47 .cfa: $rsp 176 +
+STACK CFI INIT 33fe0 103 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 340f0 103 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 34200 44 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 34250 397 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 34251 .cfa: $rsp 16 +
+STACK CFI 34254 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 34259 $r15: .cfa -24 + ^
+STACK CFI 3425e $r14: .cfa -32 + ^
+STACK CFI 34265 $r12: .cfa -48 + ^ $r13: .cfa -40 + ^
+STACK CFI 34269 $rbx: .cfa -56 + ^
+STACK CFI INIT 345f0 119 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 345f1 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 34708 $rbx: $rbx .cfa: $rsp 8 +
+STACK CFI INIT 34710 108 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 34712 .cfa: $rsp 16 +
+STACK CFI 34714 .cfa: $rsp 24 +
+STACK CFI 34717 $r13: .cfa -24 + ^ $r14: .cfa -16 + ^
+STACK CFI 34719 .cfa: $rsp 32 +
+STACK CFI 3471c $r12: .cfa -32 + ^
+STACK CFI 3471d .cfa: $rsp 40 +
+STACK CFI 34720 $rbp: .cfa -40 + ^
+STACK CFI 34721 .cfa: $rsp 48 +
+STACK CFI 3472e $rbx: .cfa -48 + ^
+STACK CFI INIT 34820 376 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 34822 .cfa: $rsp 16 +
+STACK CFI 34824 .cfa: $rsp 24 +
+STACK CFI 34827 $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI 34829 .cfa: $rsp 32 +
+STACK CFI 3482c $r13: .cfa -32 + ^
+STACK CFI 3482e .cfa: $rsp 40 +
+STACK CFI 34831 $r12: .cfa -40 + ^
+STACK CFI 34832 .cfa: $rsp 48 +
+STACK CFI 34835 $rbp: .cfa -48 + ^
+STACK CFI 34836 .cfa: $rsp 56 +
+STACK CFI 3483a .cfa: $rsp 112 +
+STACK CFI 3483f $rbx: .cfa -56 + ^
+STACK CFI INIT 34ba0 117 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 34ba2 .cfa: $rsp 16 +
+STACK CFI 34ba5 $r15: .cfa -16 + ^
+STACK CFI 34ba7 .cfa: $rsp 24 +
+STACK CFI 34ba9 .cfa: $rsp 32 +
+STACK CFI 34bac $r13: .cfa -32 + ^ $r14: .cfa -24 + ^
+STACK CFI 34bae .cfa: $rsp 40 +
+STACK CFI 34bb1 $r12: .cfa -40 + ^
+STACK CFI 34bb2 .cfa: $rsp 48 +
+STACK CFI 34bb5 $rbp: .cfa -48 + ^
+STACK CFI 34bb6 .cfa: $rsp 56 +
+STACK CFI 34bba .cfa: $rsp 64 +
+STACK CFI 34bc7 $rbx: .cfa -56 + ^
+STACK CFI INIT 34cc0 410 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 34cc2 .cfa: $rsp 16 +
+STACK CFI 34cc5 $r15: .cfa -16 + ^
+STACK CFI 34cc7 .cfa: $rsp 24 +
+STACK CFI 34cca $r14: .cfa -24 + ^
+STACK CFI 34ccc .cfa: $rsp 32 +
+STACK CFI 34ccf $r13: .cfa -32 + ^
+STACK CFI 34cd1 .cfa: $rsp 40 +
+STACK CFI 34cd4 $r12: .cfa -40 + ^
+STACK CFI 34cd5 .cfa: $rsp 48 +
+STACK CFI 34cd8 $rbp: .cfa -48 + ^
+STACK CFI 34cd9 .cfa: $rsp 56 +
+STACK CFI 34cdd .cfa: $rsp 128 +
+STACK CFI 34ce2 $rbx: .cfa -56 + ^
+STACK CFI INIT 350d0 81 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 350d1 .cfa: $rsp 16 +
+STACK CFI 350da $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI INIT 35160 ad .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 35210 eb .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 35300 9c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 353a0 c5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 353a1 .cfa: $rsp 16 +
+STACK CFI 353aa $rbx: .cfa -16 + ^
+STACK CFI INIT 35470 24 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 354a0 3a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 354e0 3f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 35520 7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 35530 15 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 35534 .cfa: $rsp 16 +
+STACK CFI INIT 35550 c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 35560 c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 357af 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 357bd .cfa: $rsp 0 +
+STACK CFI 357c1 .cfa: $rsp 128 +
+STACK CFI 357c9 .cfa: $rsp -128 +
+STACK CFI INIT 357ce 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 357dc .cfa: $rsp 0 +
+STACK CFI 357e0 .cfa: $rsp 128 +
+STACK CFI 357e8 .cfa: $rsp -128 +
+STACK CFI INIT 357ed 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 357fb .cfa: $rsp 0 +
+STACK CFI 357ff .cfa: $rsp 128 +
+STACK CFI 35807 .cfa: $rsp -128 +
+STACK CFI INIT 35570 23f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 35577 .cfa: $rsp 304 +
+STACK CFI INIT 35810 83 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 35812 .cfa: $rsp 16 +
+STACK CFI 35815 $r15: .cfa -16 + ^
+STACK CFI 35817 .cfa: $rsp 24 +
+STACK CFI 3581a $r14: .cfa -24 + ^
+STACK CFI 3581c .cfa: $rsp 32 +
+STACK CFI 3581e .cfa: $rsp 40 +
+STACK CFI 35821 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^
+STACK CFI 35822 .cfa: $rsp 48 +
+STACK CFI 35825 $rbp: .cfa -48 + ^
+STACK CFI 35826 .cfa: $rsp 56 +
+STACK CFI 35829 $rbx: .cfa -56 + ^
+STACK CFI 3582d .cfa: $rsp 80 +
+STACK CFI INIT 358a0 498 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 358a2 .cfa: $rsp 16 +
+STACK CFI 358a4 .cfa: $rsp 24 +
+STACK CFI 358a6 .cfa: $rsp 32 +
+STACK CFI 358a9 $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI 358ab .cfa: $rsp 40 +
+STACK CFI 358ac .cfa: $rsp 48 +
+STACK CFI 358af $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^
+STACK CFI 358b0 .cfa: $rsp 56 +
+STACK CFI 358b3 $rbx: .cfa -56 + ^
+STACK CFI 358ba .cfa: $rsp 1152 +
+STACK CFI INIT 35d40 32f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 35d42 .cfa: $rsp 16 +
+STACK CFI 35d44 .cfa: $rsp 24 +
+STACK CFI 35d46 .cfa: $rsp 32 +
+STACK CFI 35d48 .cfa: $rsp 40 +
+STACK CFI 35d49 .cfa: $rsp 48 +
+STACK CFI 35d4a .cfa: $rsp 56 +
+STACK CFI 35d4e .cfa: $rsp 128 +
+STACK CFI 35d67 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 36070 32b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 36071 .cfa: $rsp 16 +
+STACK CFI 36074 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 3607b $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI 36082 $r12: .cfa -48 + ^ $r13: .cfa -40 + ^
+STACK CFI 36086 $rbx: .cfa -56 + ^
+STACK CFI INIT 363a0 8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 363b0 11a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 363c7 $r12: .cfa -40 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 363d5 $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ .cfa: $rsp 64 +
+STACK CFI INIT 364d0 78 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 364d1 .cfa: $rsp 16 +
+STACK CFI 364d9 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 364dd $rbx: .cfa -24 + ^
+STACK CFI INIT 36be6 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 36bf4 .cfa: $rsp 0 +
+STACK CFI 36bf8 .cfa: $rsp 128 +
+STACK CFI 36c00 .cfa: $rsp -128 +
+STACK CFI INIT 36c05 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 36c13 .cfa: $rsp 0 +
+STACK CFI 36c17 .cfa: $rsp 128 +
+STACK CFI 36c1f .cfa: $rsp -128 +
+STACK CFI INIT 36c24 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 36c32 .cfa: $rsp 0 +
+STACK CFI 36c36 .cfa: $rsp 128 +
+STACK CFI 36c3e .cfa: $rsp -128 +
+STACK CFI INIT 36c43 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 36c51 .cfa: $rsp 0 +
+STACK CFI 36c55 .cfa: $rsp 128 +
+STACK CFI 36c5d .cfa: $rsp -128 +
+STACK CFI INIT 36c62 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 36c70 .cfa: $rsp 0 +
+STACK CFI 36c74 .cfa: $rsp 128 +
+STACK CFI 36c7c .cfa: $rsp -128 +
+STACK CFI INIT 36c81 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 36c8f .cfa: $rsp 0 +
+STACK CFI 36c93 .cfa: $rsp 128 +
+STACK CFI 36c9b .cfa: $rsp -128 +
+STACK CFI INIT 36ca0 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 36cae .cfa: $rsp 0 +
+STACK CFI 36cb2 .cfa: $rsp 128 +
+STACK CFI 36cba .cfa: $rsp -128 +
+STACK CFI INIT 36cbf 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 36ccd .cfa: $rsp 0 +
+STACK CFI 36cd1 .cfa: $rsp 128 +
+STACK CFI 36cd9 .cfa: $rsp -128 +
+STACK CFI INIT 36550 87 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 36551 .cfa: $rsp 16 +
+STACK CFI 36585 $rbx: .cfa -16 + ^
+STACK CFI INIT 136230 2c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 136234 .cfa: $rsp 16 +
+STACK CFI INIT 365e0 11e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 365e2 .cfa: $rsp 16 +
+STACK CFI 365e4 .cfa: $rsp 24 +
+STACK CFI 365e5 .cfa: $rsp 32 +
+STACK CFI 365e6 .cfa: $rsp 40 +
+STACK CFI 365e9 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI 365ed .cfa: $rsp 48 +
+STACK CFI INIT 36700 453 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 36701 .cfa: $rsp 16 +
+STACK CFI 36704 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 3670f $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI 3671f $rbx: .cfa -56 + ^
+STACK CFI INIT 36b60 86 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 36b6d $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 36b76 .cfa: $rsp 32 +
+STACK CFI 36b7f $r12: .cfa -16 + ^
+STACK CFI INIT 36ce0 15 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 36d00 12e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 36d02 .cfa: $rsp 16 +
+STACK CFI 36d05 $r13: .cfa -16 + ^
+STACK CFI 36d07 .cfa: $rsp 24 +
+STACK CFI 36d08 .cfa: $rsp 32 +
+STACK CFI 36d0b $r12: .cfa -24 + ^ $rbp: .cfa -32 + ^
+STACK CFI 36d0c .cfa: $rsp 40 +
+STACK CFI 36d0e $rbx: .cfa -40 + ^
+STACK CFI 36d12 .cfa: $rsp 48 +
+STACK CFI INIT 36e30 15 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 36e3b .cfa: $rsp 16 +
+STACK CFI INIT 36e50 59 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 36e58 $rbx: .cfa -24 + ^
+STACK CFI 36e68 .cfa: $rsp 32 +
+STACK CFI 36e6b $rbp: .cfa -16 + ^
+STACK CFI INIT 3708c 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 3709a .cfa: $rsp 0 +
+STACK CFI 3709e .cfa: $rsp 128 +
+STACK CFI 370a6 .cfa: $rsp -128 +
+STACK CFI INIT 370ab 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 370b9 .cfa: $rsp 0 +
+STACK CFI 370bd .cfa: $rsp 128 +
+STACK CFI 370c5 .cfa: $rsp -128 +
+STACK CFI INIT 36eb0 160 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 36eb1 .cfa: $rsp 16 +
+STACK CFI 36eb9 $rbx: .cfa -16 + ^
+STACK CFI INIT 37010 65 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 3701d $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 37029 .cfa: $rsp 32 +
+STACK CFI 3702c $r12: .cfa -16 + ^
+STACK CFI INIT 37080 c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 370d0 159 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 370d2 .cfa: $rsp 16 +
+STACK CFI 370d8 $r15: .cfa -16 + ^
+STACK CFI 370da .cfa: $rsp 24 +
+STACK CFI 370dc .cfa: $rsp 32 +
+STACK CFI 370df $r13: .cfa -32 + ^ $r14: .cfa -24 + ^
+STACK CFI 370e1 .cfa: $rsp 40 +
+STACK CFI 370e2 .cfa: $rsp 48 +
+STACK CFI 370e5 $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^
+STACK CFI 370e6 .cfa: $rsp 56 +
+STACK CFI 370ea .cfa: $rsp 80 +
+STACK CFI 370fa $rbx: .cfa -56 + ^
+STACK CFI INIT 37230 12 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 3723b .cfa: $rsp 16 +
+STACK CFI INIT 37250 11 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 37270 c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 37280 11 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 372a0 11 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 372c0 23 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 372f0 28 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 37320 28 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 3752a 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 37538 .cfa: $rsp 0 +
+STACK CFI 3753c .cfa: $rsp 128 +
+STACK CFI 37544 .cfa: $rsp -128 +
+STACK CFI INIT 37549 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 37557 .cfa: $rsp 0 +
+STACK CFI 3755b .cfa: $rsp 128 +
+STACK CFI 37563 .cfa: $rsp -128 +
+STACK CFI INIT 37568 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 37576 .cfa: $rsp 0 +
+STACK CFI 3757a .cfa: $rsp 128 +
+STACK CFI 37582 .cfa: $rsp -128 +
+STACK CFI INIT 37587 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 37595 .cfa: $rsp 0 +
+STACK CFI 37599 .cfa: $rsp 128 +
+STACK CFI 375a1 .cfa: $rsp -128 +
+STACK CFI INIT 375a6 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 375b4 .cfa: $rsp 0 +
+STACK CFI 375b8 .cfa: $rsp 128 +
+STACK CFI 375c0 .cfa: $rsp -128 +
+STACK CFI INIT 375c5 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 375d3 .cfa: $rsp 0 +
+STACK CFI 375d7 .cfa: $rsp 128 +
+STACK CFI 375df .cfa: $rsp -128 +
+STACK CFI INIT 375e4 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 375f2 .cfa: $rsp 0 +
+STACK CFI 375f6 .cfa: $rsp 128 +
+STACK CFI 375fe .cfa: $rsp -128 +
+STACK CFI INIT 37603 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 37611 .cfa: $rsp 0 +
+STACK CFI 37615 .cfa: $rsp 128 +
+STACK CFI 3761d .cfa: $rsp -128 +
+STACK CFI INIT 37350 70 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 37354 .cfa: $rsp 32 +
+STACK CFI INIT 373c0 7c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 373c1 .cfa: $rsp 16 +
+STACK CFI 373f8 $rbx: .cfa -16 + ^
+STACK CFI INIT 37440 7a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 37441 .cfa: $rsp 16 +
+STACK CFI 3747b $rbx: .cfa -16 + ^
+STACK CFI INIT 374c0 6a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 374c4 .cfa: $rsp 16 +
+STACK CFI INIT 37630 e4 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 37720 9c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 377c0 f7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 377cd $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 377d6 .cfa: $rsp 48 +
+STACK CFI 377db $r12: .cfa -16 + ^
+STACK CFI INIT 378c0 135 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 378cd $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI 378db .cfa: $rsp 48 +
+STACK CFI 378e7 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT 37a00 e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 37a04 .cfa: $rsp 16 +
+STACK CFI INIT 37a10 50 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 37a60 23 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 37a64 .cfa: $rsp 32 +
+STACK CFI INIT 37a90 20 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 37a94 .cfa: $rsp 32 +
+STACK CFI INIT 37ab0 22 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 37ab4 .cfa: $rsp 32 +
+STACK CFI INIT 37ae0 1f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 37ae4 .cfa: $rsp 32 +
+STACK CFI INIT 37b00 22 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 37b04 .cfa: $rsp 32 +
+STACK CFI INIT 37b30 1f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 37b34 .cfa: $rsp 32 +
+STACK CFI INIT 37b50 c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 37b60 1c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 37b6b .cfa: $rsp 16 +
+STACK CFI INIT 37b80 c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 37b90 b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 37ba0 77 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 37ba1 .cfa: $rsp 16 +
+STACK CFI 37ba4 $rbp: .cfa -16 + ^
+STACK CFI 37ba5 .cfa: $rsp 24 +
+STACK CFI 37ba8 $rbx: .cfa -24 + ^
+STACK CFI 37bac .cfa: $rsp 48 +
+STACK CFI INIT 37c20 16 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 37c40 4e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 37c4e .cfa: $rsp 32 +
+STACK CFI 37c51 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 37c90 16 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 37cb0 48 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 37cbe .cfa: $rsp 32 +
+STACK CFI 37cc1 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 37d00 34 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 37d40 40 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 37d80 3c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 37dc0 74 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 37e40 12 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 37e60 10 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 37e70 12 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 37e90 10 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 37ea0 455 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 37ea2 .cfa: $rsp 16 +
+STACK CFI 37ea4 .cfa: $rsp 24 +
+STACK CFI 37ea6 .cfa: $rsp 32 +
+STACK CFI 37ea8 .cfa: $rsp 40 +
+STACK CFI 37ea9 .cfa: $rsp 48 +
+STACK CFI 37eaa .cfa: $rsp 56 +
+STACK CFI 37ead $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 37eb1 .cfa: $rsp 96 +
+STACK CFI INIT 38300 a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 38310 425 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 38312 .cfa: $rsp 16 +
+STACK CFI 38314 .cfa: $rsp 24 +
+STACK CFI 38316 .cfa: $rsp 32 +
+STACK CFI 38318 .cfa: $rsp 40 +
+STACK CFI 38319 .cfa: $rsp 48 +
+STACK CFI 3831a .cfa: $rsp 56 +
+STACK CFI 3831d $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 38321 .cfa: $rsp 96 +
+STACK CFI INIT 38740 a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 38750 12 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 38770 10 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 38780 12 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 387a0 10 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 387b0 12 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 387d0 10 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 387e0 309 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 387e2 .cfa: $rsp 16 +
+STACK CFI 387e8 $r15: .cfa -16 + ^
+STACK CFI 387ea .cfa: $rsp 24 +
+STACK CFI 387ec .cfa: $rsp 32 +
+STACK CFI 387ee .cfa: $rsp 40 +
+STACK CFI 387f1 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^
+STACK CFI 387f2 .cfa: $rsp 48 +
+STACK CFI 387f4 $rbp: .cfa -48 + ^
+STACK CFI 387f5 .cfa: $rsp 56 +
+STACK CFI 387f8 $rbx: .cfa -56 + ^
+STACK CFI 387fc .cfa: $rsp 96 +
+STACK CFI INIT 38af0 1dc .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 38afc $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI 38b0a .cfa: $rsp 64 +
+STACK CFI 38b14 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT 38cd0 213c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 38cd2 .cfa: $rsp 16 +
+STACK CFI 38cd5 $r15: .cfa -16 + ^
+STACK CFI 38cd7 .cfa: $rsp 24 +
+STACK CFI 38cd9 .cfa: $rsp 32 +
+STACK CFI 38cdb .cfa: $rsp 40 +
+STACK CFI 38cdc .cfa: $rsp 48 +
+STACK CFI 38cdd .cfa: $rsp 56 +
+STACK CFI 38ce4 .cfa: $rsp 336 +
+STACK CFI 38cfa $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 3ae10 a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 3ae20 309 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 3ae22 .cfa: $rsp 16 +
+STACK CFI 3ae28 $r15: .cfa -16 + ^
+STACK CFI 3ae2a .cfa: $rsp 24 +
+STACK CFI 3ae2c .cfa: $rsp 32 +
+STACK CFI 3ae2e .cfa: $rsp 40 +
+STACK CFI 3ae31 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^
+STACK CFI 3ae32 .cfa: $rsp 48 +
+STACK CFI 3ae34 $rbp: .cfa -48 + ^
+STACK CFI 3ae35 .cfa: $rsp 56 +
+STACK CFI 3ae38 $rbx: .cfa -56 + ^
+STACK CFI 3ae3c .cfa: $rsp 96 +
+STACK CFI INIT 3b130 1fd .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 3b13c $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI 3b14a .cfa: $rsp 64 +
+STACK CFI 3b157 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT 3b330 21b1 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 3b332 .cfa: $rsp 16 +
+STACK CFI 3b335 $r15: .cfa -16 + ^
+STACK CFI 3b337 .cfa: $rsp 24 +
+STACK CFI 3b339 .cfa: $rsp 32 +
+STACK CFI 3b33b .cfa: $rsp 40 +
+STACK CFI 3b33c .cfa: $rsp 48 +
+STACK CFI 3b33d .cfa: $rsp 56 +
+STACK CFI 3b344 .cfa: $rsp 576 +
+STACK CFI 3b35a $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 3d4f0 a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 3d500 312 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 3d502 .cfa: $rsp 16 +
+STACK CFI 3d508 $r15: .cfa -16 + ^
+STACK CFI 3d50a .cfa: $rsp 24 +
+STACK CFI 3d50c .cfa: $rsp 32 +
+STACK CFI 3d50e .cfa: $rsp 40 +
+STACK CFI 3d511 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^
+STACK CFI 3d512 .cfa: $rsp 48 +
+STACK CFI 3d514 $rbp: .cfa -48 + ^
+STACK CFI 3d515 .cfa: $rsp 56 +
+STACK CFI 3d518 $rbx: .cfa -56 + ^
+STACK CFI 3d51c .cfa: $rsp 96 +
+STACK CFI INIT 3d820 1ef .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 3d82d $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI 3d83b .cfa: $rsp 64 +
+STACK CFI 3d847 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT 3da10 20f2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 3da12 .cfa: $rsp 16 +
+STACK CFI 3da18 $r15: .cfa -16 + ^
+STACK CFI 3da1a .cfa: $rsp 24 +
+STACK CFI 3da1c .cfa: $rsp 32 +
+STACK CFI 3da1e .cfa: $rsp 40 +
+STACK CFI 3da1f .cfa: $rsp 48 +
+STACK CFI 3da20 .cfa: $rsp 56 +
+STACK CFI 3da27 .cfa: $rsp 4416 +
+STACK CFI 3da38 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 3fb10 a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 400b1 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 400bf .cfa: $rsp 0 +
+STACK CFI 400c3 .cfa: $rsp 128 +
+STACK CFI 400cb .cfa: $rsp -128 +
+STACK CFI INIT 400d0 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 400de .cfa: $rsp 0 +
+STACK CFI 400e2 .cfa: $rsp 128 +
+STACK CFI 400ea .cfa: $rsp -128 +
+STACK CFI INIT 400ef 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 400fd .cfa: $rsp 0 +
+STACK CFI 40101 .cfa: $rsp 128 +
+STACK CFI 40109 .cfa: $rsp -128 +
+STACK CFI INIT 4010e 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 4011c .cfa: $rsp 0 +
+STACK CFI 40120 .cfa: $rsp 128 +
+STACK CFI 40128 .cfa: $rsp -128 +
+STACK CFI INIT 4012d 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 4013b .cfa: $rsp 0 +
+STACK CFI 4013f .cfa: $rsp 128 +
+STACK CFI 40147 .cfa: $rsp -128 +
+STACK CFI INIT 4014c 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 4015a .cfa: $rsp 0 +
+STACK CFI 4015e .cfa: $rsp 128 +
+STACK CFI 40166 .cfa: $rsp -128 +
+STACK CFI INIT 4016b 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 40179 .cfa: $rsp 0 +
+STACK CFI 4017d .cfa: $rsp 128 +
+STACK CFI 40185 .cfa: $rsp -128 +
+STACK CFI INIT 4018a 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 40198 .cfa: $rsp 0 +
+STACK CFI 4019c .cfa: $rsp 128 +
+STACK CFI 401a4 .cfa: $rsp -128 +
+STACK CFI INIT 3fb20 458 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 3fb22 .cfa: $rsp 16 +
+STACK CFI 3fb27 $r12: .cfa -16 + ^
+STACK CFI 3fb32 .cfa: $rsp 24 +
+STACK CFI 3fb33 .cfa: $rsp 32 +
+STACK CFI 3fb3a .cfa: $rsp 400 +
+STACK CFI 3fb55 $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI INIT 3ff80 61 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 3ff81 .cfa: $rsp 16 +
+STACK CFI 3ff85 .cfa: $rsp 32 +
+STACK CFI 3ff8a $rbx: .cfa -16 + ^
+STACK CFI INIT 3fff0 c1 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 3fff1 .cfa: $rsp 16 +
+STACK CFI 3fff3 $rbx: .cfa -16 + ^
+STACK CFI INIT 401b0 4bf .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 401b1 .cfa: $rsp 16 +
+STACK CFI 401b4 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 401c0 $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 40670 7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 111990 21 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 40680 42 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 406d0 4d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 40720 104 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 40722 .cfa: $rsp 16 +
+STACK CFI 40724 .cfa: $rsp 24 +
+STACK CFI 40726 .cfa: $rsp 32 +
+STACK CFI 40728 .cfa: $rsp 40 +
+STACK CFI 4072e $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI 4072f .cfa: $rsp 48 +
+STACK CFI 40732 $rbp: .cfa -48 + ^
+STACK CFI 40733 .cfa: $rsp 56 +
+STACK CFI 40737 .cfa: $rsp 96 +
+STACK CFI 4074e $rbx: .cfa -56 + ^
+STACK CFI INIT 40830 ae .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 40834 .cfa: $rsp 16 +
+STACK CFI 40837 $rbx: .cfa -16 + ^
+STACK CFI INIT 408e0 7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 408f0 7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 40900 a1 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 409b0 7d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 409b1 .cfa: $rsp 16 +
+STACK CFI 409cd .cfa: $rsp 8 +
+STACK CFI 409e5 $r12: .cfa 72 + ^ $r13: .cfa 80 + ^ $r14: .cfa 88 + ^ $r15: .cfa 96 + ^ $rbp: .cfa 120 + ^ $rbx: .cfa 128 + ^ $rsp: .cfa 160 + ^ .cfa: $rdi 0 + .ra: .cfa 168 + ^
+STACK CFI INIT 40a2d 18 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 40a50 1f6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 40a51 .cfa: $rsp 16 +
+STACK CFI 40a71 $rbx: .cfa -16 + ^
+STACK CFI INIT 40c50 105 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 40d60 99 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 40d67 .cfa: $rsp 224 +
+STACK CFI INIT 40e00 1196 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 40e02 .cfa: $rsp 16 +
+STACK CFI 40e15 .cfa: $rsp 24 +
+STACK CFI 40e1a $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI 40e1c .cfa: $rsp 32 +
+STACK CFI 40e1f $r13: .cfa -32 + ^
+STACK CFI 40e21 .cfa: $rsp 40 +
+STACK CFI 40e22 .cfa: $rsp 48 +
+STACK CFI 40e23 .cfa: $rsp 56 +
+STACK CFI 40e26 $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 40e2d .cfa: $rsp 576 +
+STACK CFI INIT 41fa0 88 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 41fa1 .cfa: $rsp 16 +
+STACK CFI 41fac $rbx: .cfa -16 + ^
+STACK CFI 41fba .cfa: $rsp 224 +
+STACK CFI INIT 42030 8b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 42034 .cfa: $rsp 16 +
+STACK CFI 42036 $rbx: .cfa -16 + ^
+STACK CFI INIT 420c0 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 420c4 .cfa: $rsp 48 +
+STACK CFI INIT 420f0 8b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 420f4 .cfa: $rsp 16 +
+STACK CFI 420f6 $rbx: .cfa -16 + ^
+STACK CFI INIT 42180 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 42184 .cfa: $rsp 48 +
+STACK CFI INIT 421b0 64 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 421b4 .cfa: $rsp 16 +
+STACK CFI 421b6 $rbx: .cfa -16 + ^
+STACK CFI INIT 42220 7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 42230 7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 42240 b7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 4224c $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 42259 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^
+STACK CFI 42267 .cfa: $rsp 64 +
+STACK CFI 4226a $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT 42300 57 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 42301 .cfa: $rsp 16 +
+STACK CFI 4231a .cfa: $rsp 32 +
+STACK CFI 42326 $rbx: .cfa -16 + ^
+STACK CFI INIT 42bb8 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 42bc6 .cfa: $rsp 0 +
+STACK CFI 42bca .cfa: $rsp 128 +
+STACK CFI 42bd2 .cfa: $rsp -128 +
+STACK CFI INIT 42bd7 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 42be5 .cfa: $rsp 0 +
+STACK CFI 42be9 .cfa: $rsp 128 +
+STACK CFI 42bf1 .cfa: $rsp -128 +
+STACK CFI INIT 42bf6 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 42c04 .cfa: $rsp 0 +
+STACK CFI 42c08 .cfa: $rsp 128 +
+STACK CFI 42c10 .cfa: $rsp -128 +
+STACK CFI INIT 42c15 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 42c23 .cfa: $rsp 0 +
+STACK CFI 42c27 .cfa: $rsp 128 +
+STACK CFI 42c2f .cfa: $rsp -128 +
+STACK CFI INIT 136260 32 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 136268 .cfa: $rsp 16 +
+STACK CFI 13626d $rbx: .cfa -16 + ^
+STACK CFI INIT 42360 ad .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 42361 .cfa: $rsp 16 +
+STACK CFI 42363 $rbx: .cfa -16 + ^
+STACK CFI 42367 .cfa: $rsp 32 +
+STACK CFI INIT 42410 77 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 42414 .cfa: $rsp 16 +
+STACK CFI INIT 42490 20a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 42492 .cfa: $rsp 16 +
+STACK CFI 4249b .cfa: $rsp 24 +
+STACK CFI 4249c .cfa: $rsp 32 +
+STACK CFI 4249d .cfa: $rsp 40 +
+STACK CFI 424a1 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^ .cfa: $rsp 64 +
+STACK CFI INIT 426a0 518 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 426ad $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^
+STACK CFI 426cb .cfa: $rsp 192 +
+STACK CFI 426d2 $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 42c40 261 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 42c42 .cfa: $rsp 16 +
+STACK CFI 42c4a .cfa: $rsp 24 +
+STACK CFI 42c4c .cfa: $rsp 32 +
+STACK CFI 42c4e .cfa: $rsp 40 +
+STACK CFI 42c4f .cfa: $rsp 48 +
+STACK CFI 42c50 .cfa: $rsp 56 +
+STACK CFI 42c5b $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 42eb0 164 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 42eb4 .cfa: $rsp 16 +
+STACK CFI 42eb9 $rbx: .cfa -16 + ^
+STACK CFI INIT 43020 17 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 43024 .cfa: $rsp 0 +
+STACK CFI INIT 43040 23 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 43070 94 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 43071 .cfa: $rsp 16 +
+STACK CFI 43074 $rbx: .cfa -16 + ^
+STACK CFI 4307b .cfa: $rsp 1104 +
+STACK CFI INIT 43110 cb .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 431e0 58 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 431e1 .cfa: $rsp 16 +
+STACK CFI 431e4 $rbp: .cfa -16 + ^
+STACK CFI 431e5 .cfa: $rsp 24 +
+STACK CFI 431e9 .cfa: $rsp 64 +
+STACK CFI 431ee $rbx: .cfa -24 + ^
+STACK CFI INIT 48dd1 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 48ddb .cfa: $rsp 0 +
+STACK CFI 48ddf .cfa: $rsp 128 +
+STACK CFI 48de7 .cfa: $rsp -128 +
+STACK CFI INIT 48dec 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 48df6 .cfa: $rsp 0 +
+STACK CFI 48dfa .cfa: $rsp 128 +
+STACK CFI 48e02 .cfa: $rsp -128 +
+STACK CFI INIT 48e07 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 48e11 .cfa: $rsp 0 +
+STACK CFI 48e15 .cfa: $rsp 128 +
+STACK CFI 48e1d .cfa: $rsp -128 +
+STACK CFI INIT 48e22 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 48e2c .cfa: $rsp 0 +
+STACK CFI 48e30 .cfa: $rsp 128 +
+STACK CFI 48e38 .cfa: $rsp -128 +
+STACK CFI INIT 43240 ce .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 43248 $rbx: .cfa -40 + ^
+STACK CFI 4325b .cfa: $rsp 48 +
+STACK CFI 4325f $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^
+STACK CFI INIT 43310 12d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 43311 .cfa: $rsp 16 +
+STACK CFI 43314 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 43319 $r15: .cfa -24 + ^
+STACK CFI 43322 $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^
+STACK CFI 43326 $rbx: .cfa -56 + ^
+STACK CFI INIT 43440 231 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 43441 .cfa: $rsp 16 +
+STACK CFI 43444 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 4344f $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI 43453 $rbx: .cfa -56 + ^
+STACK CFI INIT 43680 5525 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 43681 .cfa: $rsp 16 +
+STACK CFI 43684 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 4368f $r13: .cfa -40 + ^ $rbx: .cfa -56 + ^
+STACK CFI 4369a $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI 436c7 $r12: .cfa -48 + ^
+STACK CFI INIT 48bb0 221 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 48bbd $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI 48bce .cfa: $rsp 8528 +
+STACK CFI 48bdc $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT 48e40 15 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 48e60 3f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 48ea0 169 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 48ea1 .cfa: $rsp 16 +
+STACK CFI 48ea2 .cfa: $rsp 24 +
+STACK CFI 48ea5 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI 48ea9 .cfa: $rsp 32 +
+STACK CFI INIT 49010 231 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 49011 .cfa: $rsp 16 +
+STACK CFI 49014 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 4901f $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI 49023 $rbx: .cfa -56 + ^
+STACK CFI INIT 49250 2764 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 49251 .cfa: $rsp 16 +
+STACK CFI 49254 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 4925f $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI 49263 $rbx: .cfa -56 + ^
+STACK CFI INIT 4bab5 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 4bac3 .cfa: $rsp 0 +
+STACK CFI 4bac7 .cfa: $rsp 128 +
+STACK CFI 4bacf .cfa: $rsp -128 +
+STACK CFI INIT 4bad4 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 4bae2 .cfa: $rsp 0 +
+STACK CFI 4bae6 .cfa: $rsp 128 +
+STACK CFI 4baee .cfa: $rsp -128 +
+STACK CFI INIT 4b9c0 ed .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 4b9c1 .cfa: $rsp 16 +
+STACK CFI 4b9c4 $rbp: .cfa -16 + ^
+STACK CFI 4b9c5 .cfa: $rsp 24 +
+STACK CFI 4b9c7 $rbx: .cfa -24 + ^
+STACK CFI 4b9cb .cfa: $rsp 48 +
+STACK CFI INIT 4bab0 5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 4bb00 10b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 4bb02 .cfa: $rsp 16 +
+STACK CFI 4bb04 .cfa: $rsp 24 +
+STACK CFI 4bb06 .cfa: $rsp 32 +
+STACK CFI 4bb09 $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI 4bb0b .cfa: $rsp 40 +
+STACK CFI 4bb0c .cfa: $rsp 48 +
+STACK CFI 4bb0f $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^
+STACK CFI 4bb15 .cfa: $rsp 56 +
+STACK CFI 4bb19 .cfa: $rsp 144 +
+STACK CFI 4bb22 $rbx: .cfa -56 + ^
+STACK CFI INIT 4bc10 1a25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 4bc12 .cfa: $rsp 16 +
+STACK CFI 4bc14 .cfa: $rsp 24 +
+STACK CFI 4bc16 .cfa: $rsp 32 +
+STACK CFI 4bc19 $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI 4bc1b .cfa: $rsp 40 +
+STACK CFI 4bc1c .cfa: $rsp 48 +
+STACK CFI 4bc1f $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^
+STACK CFI 4bc20 .cfa: $rsp 56 +
+STACK CFI 4bc27 .cfa: $rsp 480 +
+STACK CFI 4bc2c $rbx: .cfa -56 + ^
+STACK CFI INIT 4d96f 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 4d97d .cfa: $rsp 0 +
+STACK CFI 4d981 .cfa: $rsp 128 +
+STACK CFI 4d989 .cfa: $rsp -128 +
+STACK CFI INIT 4d98e 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 4d99c .cfa: $rsp 0 +
+STACK CFI 4d9a0 .cfa: $rsp 128 +
+STACK CFI 4d9a8 .cfa: $rsp -128 +
+STACK CFI INIT 4d640 e2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 4d642 .cfa: $rsp 16 +
+STACK CFI 4d64e .cfa: $rsp 24 +
+STACK CFI 4d650 .cfa: $rsp 32 +
+STACK CFI 4d651 .cfa: $rsp 40 +
+STACK CFI 4d652 .cfa: $rsp 48 +
+STACK CFI 4d663 $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^ $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI INIT 4d730 ca .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 4d732 .cfa: $rsp 16 +
+STACK CFI 4d73b .cfa: $rsp 24 +
+STACK CFI 4d73c .cfa: $rsp 32 +
+STACK CFI 4d73d .cfa: $rsp 40 +
+STACK CFI 4d740 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI INIT 1362a0 5b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1362a1 .cfa: $rsp 16 +
+STACK CFI 1362a2 .cfa: $rsp 24 +
+STACK CFI 1362a6 .cfa: $rsp 32 +
+STACK CFI 1362b2 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 4d800 16f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 4d802 .cfa: $rsp 16 +
+STACK CFI 4d803 .cfa: $rsp 24 +
+STACK CFI 4d804 .cfa: $rsp 32 +
+STACK CFI 4d809 $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI INIT 4da73 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 4da81 .cfa: $rsp 0 +
+STACK CFI 4da85 .cfa: $rsp 128 +
+STACK CFI 4da8d .cfa: $rsp -128 +
+STACK CFI INIT 4da92 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 4daa0 .cfa: $rsp 0 +
+STACK CFI 4daa4 .cfa: $rsp 128 +
+STACK CFI 4daac .cfa: $rsp -128 +
+STACK CFI INIT 4d9b0 c3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 4d9b1 .cfa: $rsp 16 +
+STACK CFI 4d9b9 $rbx: .cfa -16 + ^
+STACK CFI INIT 4dac0 1f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 4dae0 86d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 4dae2 .cfa: $rsp 16 +
+STACK CFI 4dae4 .cfa: $rsp 24 +
+STACK CFI 4dae6 .cfa: $rsp 32 +
+STACK CFI 4dae8 .cfa: $rsp 40 +
+STACK CFI 4daeb $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI 4daec .cfa: $rsp 48 +
+STACK CFI 4daed .cfa: $rsp 56 +
+STACK CFI 4daf0 $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 4daf7 .cfa: $rsp 192 +
+STACK CFI INIT 4e350 90 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 4e357 .cfa: $rsp 224 +
+STACK CFI INIT 4e3e0 a2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 4e3e7 .cfa: $rsp 224 +
+STACK CFI INIT 4e490 8b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 4e497 .cfa: $rsp 224 +
+STACK CFI INIT 4e520 90 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 4e527 .cfa: $rsp 224 +
+STACK CFI INIT 4e5b0 90 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 4e5b7 .cfa: $rsp 224 +
+STACK CFI INIT 4e640 90 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 4e647 .cfa: $rsp 224 +
+STACK CFI INIT 56b97 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 56ba1 .cfa: $rsp 0 +
+STACK CFI 56ba5 .cfa: $rsp 128 +
+STACK CFI 56bad .cfa: $rsp -128 +
+STACK CFI INIT 56bb2 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 56bbc .cfa: $rsp 0 +
+STACK CFI 56bc0 .cfa: $rsp 128 +
+STACK CFI 56bc8 .cfa: $rsp -128 +
+STACK CFI INIT 4e6d0 84b7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 4e6d1 .cfa: $rsp 16 +
+STACK CFI 4e6d4 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 4e6df $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI 4e6e3 $rbx: .cfa -56 + ^
+STACK CFI INIT 56b90 7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 56bd0 90 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 56bd7 .cfa: $rsp 224 +
+STACK CFI INIT 56c60 a4 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 56c67 .cfa: $rsp 224 +
+STACK CFI INIT 56d10 90 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 56d17 .cfa: $rsp 224 +
+STACK CFI INIT 56da0 8c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 56dad $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 56db9 .cfa: $rsp 1056 +
+STACK CFI 56dc3 $r12: .cfa -16 + ^
+STACK CFI INIT 56e30 e6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 56e3d $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 56e46 .cfa: $rsp 48 +
+STACK CFI 56e65 $r12: .cfa -16 + ^
+STACK CFI INIT 56f20 101 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 56f2d $r12: .cfa -16 + ^ $rbx: .cfa -32 + ^
+STACK CFI 56f36 .cfa: $rsp 48 +
+STACK CFI 56f3e $rbp: .cfa -24 + ^
+STACK CFI INIT 57030 8b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 57048 .cfa: $rsp 4128 +
+STACK CFI 57055 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 570c0 83 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 570c1 .cfa: $rsp 16 +
+STACK CFI 570c9 $rbp: .cfa -16 + ^
+STACK CFI 570ca .cfa: $rsp 24 +
+STACK CFI 570ce .cfa: $rsp 64 +
+STACK CFI 570d4 $rbx: .cfa -24 + ^
+STACK CFI INIT 57150 43 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 57154 .cfa: $rsp 16 +
+STACK CFI 57157 $rbx: .cfa -16 + ^
+STACK CFI INIT 571a0 52 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 571a1 .cfa: $rsp 16 +
+STACK CFI 571b9 .cfa: $rsp 4112 +
+STACK CFI 571bc $rbx: .cfa -16 + ^
+STACK CFI INIT 57200 36f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 57202 .cfa: $rsp 16 +
+STACK CFI 57204 .cfa: $rsp 24 +
+STACK CFI 57206 .cfa: $rsp 32 +
+STACK CFI 57208 .cfa: $rsp 40 +
+STACK CFI 5720b $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI 5720c .cfa: $rsp 48 +
+STACK CFI 5720e $rbp: .cfa -48 + ^
+STACK CFI 5720f .cfa: $rsp 56 +
+STACK CFI 57216 .cfa: $rsp 288 +
+STACK CFI 5722c $rbx: .cfa -56 + ^
+STACK CFI INIT 57570 3b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 57577 .cfa: $rsp 160 +
+STACK CFI INIT 575b0 190 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 575b2 .cfa: $rsp 16 +
+STACK CFI 575b4 .cfa: $rsp 24 +
+STACK CFI 575b6 .cfa: $rsp 32 +
+STACK CFI 575b9 $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI 575bb .cfa: $rsp 40 +
+STACK CFI 575be $r12: .cfa -40 + ^
+STACK CFI 575bf .cfa: $rsp 48 +
+STACK CFI 575c2 $rbp: .cfa -48 + ^
+STACK CFI 575c3 .cfa: $rsp 56 +
+STACK CFI 575c6 $rbx: .cfa -56 + ^
+STACK CFI 575ca .cfa: $rsp 80 +
+STACK CFI INIT 57740 d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 57750 31 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 57754 .cfa: $rsp 32 +
+STACK CFI INIT 57790 2a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 57794 .cfa: $rsp 32 +
+STACK CFI INIT 577c0 3c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 577c1 .cfa: $rsp 16 +
+STACK CFI 577c4 $rbx: .cfa -16 + ^
+STACK CFI INIT 57800 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 57830 2a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 578a6 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 578b0 .cfa: $rsp 0 +
+STACK CFI 578b4 .cfa: $rsp 128 +
+STACK CFI 578bc .cfa: $rsp -128 +
+STACK CFI INIT 57860 46 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 578c0 68 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 57962 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 5796c .cfa: $rsp 0 +
+STACK CFI 57970 .cfa: $rsp 128 +
+STACK CFI 57978 .cfa: $rsp -128 +
+STACK CFI INIT 57930 32 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 57b09 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 57b13 .cfa: $rsp 0 +
+STACK CFI 57b17 .cfa: $rsp 128 +
+STACK CFI 57b1f .cfa: $rsp -128 +
+STACK CFI INIT 57b24 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 57b2e .cfa: $rsp 0 +
+STACK CFI 57b32 .cfa: $rsp 128 +
+STACK CFI 57b3a .cfa: $rsp -128 +
+STACK CFI INIT 57b3f 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 57b49 .cfa: $rsp 0 +
+STACK CFI 57b4d .cfa: $rsp 128 +
+STACK CFI 57b55 .cfa: $rsp -128 +
+STACK CFI INIT 57980 189 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 57981 .cfa: $rsp 16 +
+STACK CFI 5798b .cfa: $rsp 224 +
+STACK CFI 579ed $rbx: .cfa -16 + ^
+STACK CFI INIT 57c67 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 57c71 .cfa: $rsp 0 +
+STACK CFI 57c75 .cfa: $rsp 128 +
+STACK CFI 57c7d .cfa: $rsp -128 +
+STACK CFI INIT 57c82 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 57c8c .cfa: $rsp 0 +
+STACK CFI 57c90 .cfa: $rsp 128 +
+STACK CFI 57c98 .cfa: $rsp -128 +
+STACK CFI INIT 57c9d 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 57ca7 .cfa: $rsp 0 +
+STACK CFI 57cab .cfa: $rsp 128 +
+STACK CFI 57cb3 .cfa: $rsp -128 +
+STACK CFI INIT 57b60 107 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 57b61 .cfa: $rsp 16 +
+STACK CFI 57b68 .cfa: $rsp 24 +
+STACK CFI 57b6c .cfa: $rsp 32 +
+STACK CFI 57b76 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 57e37 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 57e41 .cfa: $rsp 0 +
+STACK CFI 57e45 .cfa: $rsp 128 +
+STACK CFI 57e4d .cfa: $rsp -128 +
+STACK CFI INIT 57e52 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 57e5c .cfa: $rsp 0 +
+STACK CFI 57e60 .cfa: $rsp 128 +
+STACK CFI 57e68 .cfa: $rsp -128 +
+STACK CFI INIT 57e6d 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 57e77 .cfa: $rsp 0 +
+STACK CFI 57e7b .cfa: $rsp 128 +
+STACK CFI 57e83 .cfa: $rsp -128 +
+STACK CFI INIT 57cc0 177 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 57cc1 .cfa: $rsp 16 +
+STACK CFI 57cc7 $rbx: .cfa -16 + ^
+STACK CFI 57cce .cfa: $rsp 224 +
+STACK CFI INIT 57f80 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 57f8a .cfa: $rsp 0 +
+STACK CFI 57f8e .cfa: $rsp 128 +
+STACK CFI 57f96 .cfa: $rsp -128 +
+STACK CFI INIT 57f9b 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 57fa5 .cfa: $rsp 0 +
+STACK CFI 57fa9 .cfa: $rsp 128 +
+STACK CFI 57fb1 .cfa: $rsp -128 +
+STACK CFI INIT 57fb3 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 57fbd .cfa: $rsp 0 +
+STACK CFI 57fc1 .cfa: $rsp 128 +
+STACK CFI 57fc9 .cfa: $rsp -128 +
+STACK CFI INIT 57e90 f0 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 57e91 .cfa: $rsp 16 +
+STACK CFI 57e98 $rbx: .cfa -16 + ^
+STACK CFI INIT 57fd0 90 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 57fd7 .cfa: $rsp 224 +
+STACK CFI INIT 58060 a2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 5807e .cfa: $rsp 288 +
+STACK CFI 58081 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI INIT 58110 5cf .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 5812e $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 5813f .cfa: $rsp 576 +
+STACK CFI 5814a $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT 5dede 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 5dee8 .cfa: $rsp 0 +
+STACK CFI 5deec .cfa: $rsp 128 +
+STACK CFI 5def4 .cfa: $rsp -128 +
+STACK CFI INIT 5def9 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 5df03 .cfa: $rsp 0 +
+STACK CFI 5df07 .cfa: $rsp 128 +
+STACK CFI 5df0f .cfa: $rsp -128 +
+STACK CFI INIT 5df14 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 5df1e .cfa: $rsp 0 +
+STACK CFI 5df22 .cfa: $rsp 128 +
+STACK CFI 5df2a .cfa: $rsp -128 +
+STACK CFI INIT 5df2f 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 5df39 .cfa: $rsp 0 +
+STACK CFI 5df3d .cfa: $rsp 128 +
+STACK CFI 5df45 .cfa: $rsp -128 +
+STACK CFI INIT 586e0 fa .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 586e8 $rbx: .cfa -40 + ^
+STACK CFI 586fb .cfa: $rsp 48 +
+STACK CFI 58704 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^
+STACK CFI INIT 587e0 dd .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 587e1 .cfa: $rsp 16 +
+STACK CFI 587e4 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 587eb $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI 587f2 $r12: .cfa -48 + ^ $r13: .cfa -40 + ^
+STACK CFI 587f6 $rbx: .cfa -56 + ^
+STACK CFI INIT 588c0 139 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 588c1 .cfa: $rsp 16 +
+STACK CFI 588c4 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 588cb $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI 588d2 $r12: .cfa -48 + ^ $r13: .cfa -40 + ^
+STACK CFI 588e9 $rbx: .cfa -56 + ^
+STACK CFI INIT 58a00 52ac .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 58a01 .cfa: $rsp 16 +
+STACK CFI 58a04 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 58a0f $r12: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 58a1a $r13: .cfa -40 + ^ $r14: .cfa -32 + ^
+STACK CFI 58a2c $r15: .cfa -24 + ^
+STACK CFI INIT 5dcb0 22e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 5dcbd $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI 5dcca $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI 5dcd1 .cfa: $rsp 33424 +
+STACK CFI INIT 66ab7 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 66ac1 .cfa: $rsp 0 +
+STACK CFI 66ac5 .cfa: $rsp 128 +
+STACK CFI 66acd .cfa: $rsp -128 +
+STACK CFI INIT 66ad2 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 66adc .cfa: $rsp 0 +
+STACK CFI 66ae0 .cfa: $rsp 128 +
+STACK CFI 66ae8 .cfa: $rsp -128 +
+STACK CFI INIT 5df50 8b5c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 5df51 .cfa: $rsp 16 +
+STACK CFI 5df54 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 5df59 $r15: .cfa -24 + ^
+STACK CFI 5df65 $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^
+STACK CFI 5df69 $rbx: .cfa -56 + ^
+STACK CFI INIT 66ab0 7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 66af0 71d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 66af2 .cfa: $rsp 16 +
+STACK CFI 66af5 $r12: .cfa -16 + ^
+STACK CFI 66af6 .cfa: $rsp 24 +
+STACK CFI 66af7 .cfa: $rsp 32 +
+STACK CFI 66afa $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 66b02 .cfa: $rsp 48 +
+STACK CFI INIT 67210 171 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 67211 .cfa: $rsp 16 +
+STACK CFI 67217 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 6721e $r13: .cfa -32 + ^ $r14: .cfa -24 + ^
+STACK CFI 67224 $r12: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI INIT 67390 6d7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 67392 .cfa: $rsp 16 +
+STACK CFI 67399 $r12: .cfa -16 + ^
+STACK CFI 6739a .cfa: $rsp 24 +
+STACK CFI 6739b .cfa: $rsp 32 +
+STACK CFI 6739e $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 673a2 .cfa: $rsp 48 +
+STACK CFI INIT 67a70 102 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 67a71 .cfa: $rsp 16 +
+STACK CFI 67a72 .cfa: $rsp 24 +
+STACK CFI 67a75 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI 67a7c .cfa: $rsp 176 +
+STACK CFI INIT 67d86 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 67d90 .cfa: $rsp 0 +
+STACK CFI 67d94 .cfa: $rsp 128 +
+STACK CFI 67d9c .cfa: $rsp -128 +
+STACK CFI INIT 67da1 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 67daf .cfa: $rsp 0 +
+STACK CFI 67db3 .cfa: $rsp 128 +
+STACK CFI 67dbb .cfa: $rsp -128 +
+STACK CFI INIT 67dc0 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 67dce .cfa: $rsp 0 +
+STACK CFI 67dd2 .cfa: $rsp 128 +
+STACK CFI 67dda .cfa: $rsp -128 +
+STACK CFI INIT 67ddf 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 67de9 .cfa: $rsp 0 +
+STACK CFI 67ded .cfa: $rsp 128 +
+STACK CFI 67df5 .cfa: $rsp -128 +
+STACK CFI INIT 67dfa 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 67e04 .cfa: $rsp 0 +
+STACK CFI 67e08 .cfa: $rsp 128 +
+STACK CFI 67e10 .cfa: $rsp -128 +
+STACK CFI INIT 67b80 206 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 67b82 .cfa: $rsp 16 +
+STACK CFI 67b83 .cfa: $rsp 24 +
+STACK CFI 67b84 .cfa: $rsp 32 +
+STACK CFI 67b89 $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI INIT 67e20 242 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 67e2c $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI 67e3a .cfa: $rsp 48 +
+STACK CFI 67e45 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT 68167 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 68171 .cfa: $rsp 0 +
+STACK CFI 68175 .cfa: $rsp 128 +
+STACK CFI 6817d .cfa: $rsp -128 +
+STACK CFI INIT 68182 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6818c .cfa: $rsp 0 +
+STACK CFI 68190 .cfa: $rsp 128 +
+STACK CFI 68198 .cfa: $rsp -128 +
+STACK CFI INIT 6819d 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 681a7 .cfa: $rsp 0 +
+STACK CFI 681ab .cfa: $rsp 128 +
+STACK CFI 681b3 .cfa: $rsp -128 +
+STACK CFI INIT 68070 f7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 68074 .cfa: $rsp 16 +
+STACK CFI 68077 $rbx: .cfa -16 + ^
+STACK CFI INIT 68365 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6836f .cfa: $rsp 0 +
+STACK CFI 68373 .cfa: $rsp 128 +
+STACK CFI 6837b .cfa: $rsp -128 +
+STACK CFI INIT 68380 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6838a .cfa: $rsp 0 +
+STACK CFI 6838e .cfa: $rsp 128 +
+STACK CFI 68396 .cfa: $rsp -128 +
+STACK CFI INIT 6839b 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 683a5 .cfa: $rsp 0 +
+STACK CFI 683a9 .cfa: $rsp 128 +
+STACK CFI 683b1 .cfa: $rsp -128 +
+STACK CFI INIT 681c0 1a5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 681c1 .cfa: $rsp 16 +
+STACK CFI 681c4 $rbp: .cfa -16 + ^
+STACK CFI 681c5 .cfa: $rsp 24 +
+STACK CFI 681c8 $rbx: .cfa -24 + ^
+STACK CFI 681cc .cfa: $rsp 32 +
+STACK CFI INIT 6854a 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 68554 .cfa: $rsp 0 +
+STACK CFI 68558 .cfa: $rsp 128 +
+STACK CFI 68560 .cfa: $rsp -128 +
+STACK CFI INIT 68565 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6856f .cfa: $rsp 0 +
+STACK CFI 68573 .cfa: $rsp 128 +
+STACK CFI 6857b .cfa: $rsp -128 +
+STACK CFI INIT 68580 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6858a .cfa: $rsp 0 +
+STACK CFI 6858e .cfa: $rsp 128 +
+STACK CFI 68596 .cfa: $rsp -128 +
+STACK CFI INIT 683c0 18a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 683d6 .cfa: $rsp 32 +
+STACK CFI 683db $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI INIT 685a0 3f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 685e0 db .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 685ed $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI 685fb .cfa: $rsp 48 +
+STACK CFI 685fe $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT 686c0 a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 686d0 20 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 686f0 40 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 686fe .cfa: $rsp 32 +
+STACK CFI 68708 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 68730 42 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 68734 .cfa: $rsp 32 +
+STACK CFI INIT 68780 1a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 687a0 c0 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 687ac $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 687c6 .cfa: $rsp 80 +
+STACK CFI 687ce $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT 68860 fa .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6886d $r12: .cfa -16 + ^ $rbx: .cfa -32 + ^
+STACK CFI 68876 .cfa: $rsp 64 +
+STACK CFI 68881 $rbp: .cfa -24 + ^
+STACK CFI INIT 68960 10 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 68ac3 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 68acd .cfa: $rsp 0 +
+STACK CFI 68ad1 .cfa: $rsp 128 +
+STACK CFI 68ad9 .cfa: $rsp -128 +
+STACK CFI INIT 68ade 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 68ae8 .cfa: $rsp 0 +
+STACK CFI 68aec .cfa: $rsp 128 +
+STACK CFI 68af4 .cfa: $rsp -128 +
+STACK CFI INIT 68af9 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 68b03 .cfa: $rsp 0 +
+STACK CFI 68b07 .cfa: $rsp 128 +
+STACK CFI 68b0f .cfa: $rsp -128 +
+STACK CFI INIT 68970 153 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6897d $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 68986 .cfa: $rsp 32 +
+STACK CFI 68989 $r12: .cfa -16 + ^
+STACK CFI INIT 68c6d 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 68c77 .cfa: $rsp 0 +
+STACK CFI 68c7b .cfa: $rsp 128 +
+STACK CFI 68c83 .cfa: $rsp -128 +
+STACK CFI INIT 68c88 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 68c92 .cfa: $rsp 0 +
+STACK CFI 68c96 .cfa: $rsp 128 +
+STACK CFI 68c9e .cfa: $rsp -128 +
+STACK CFI INIT 68ca3 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 68cad .cfa: $rsp 0 +
+STACK CFI 68cb1 .cfa: $rsp 128 +
+STACK CFI 68cb9 .cfa: $rsp -128 +
+STACK CFI INIT 68b20 14d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 68b28 $r12: .cfa -24 + ^
+STACK CFI 68b3f .cfa: $rsp 48 +
+STACK CFI 68b45 $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI INIT 68e15 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 68e1f .cfa: $rsp 0 +
+STACK CFI 68e23 .cfa: $rsp 128 +
+STACK CFI 68e2b .cfa: $rsp -128 +
+STACK CFI INIT 68e30 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 68e3a .cfa: $rsp 0 +
+STACK CFI 68e3e .cfa: $rsp 128 +
+STACK CFI 68e46 .cfa: $rsp -128 +
+STACK CFI INIT 68e4b 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 68e55 .cfa: $rsp 0 +
+STACK CFI 68e59 .cfa: $rsp 128 +
+STACK CFI 68e61 .cfa: $rsp -128 +
+STACK CFI INIT 68cc0 155 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 68cc1 .cfa: $rsp 16 +
+STACK CFI 68cc4 $rbp: .cfa -16 + ^
+STACK CFI 68cc5 .cfa: $rsp 24 +
+STACK CFI 68cc8 $rbx: .cfa -24 + ^
+STACK CFI 68ccc .cfa: $rsp 32 +
+STACK CFI INIT 68fa8 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 68fb2 .cfa: $rsp 0 +
+STACK CFI 68fb6 .cfa: $rsp 128 +
+STACK CFI 68fbe .cfa: $rsp -128 +
+STACK CFI INIT 68fc3 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 68fcd .cfa: $rsp 0 +
+STACK CFI 68fd1 .cfa: $rsp 128 +
+STACK CFI 68fd9 .cfa: $rsp -128 +
+STACK CFI INIT 68fde 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 68fe8 .cfa: $rsp 0 +
+STACK CFI 68fec .cfa: $rsp 128 +
+STACK CFI 68ff4 .cfa: $rsp -128 +
+STACK CFI INIT 68e70 138 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 68e71 .cfa: $rsp 16 +
+STACK CFI 68e78 $rbx: .cfa -16 + ^
+STACK CFI INIT 6918a 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 69194 .cfa: $rsp 0 +
+STACK CFI 69198 .cfa: $rsp 128 +
+STACK CFI 691a0 .cfa: $rsp -128 +
+STACK CFI INIT 691a5 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 691af .cfa: $rsp 0 +
+STACK CFI 691b3 .cfa: $rsp 128 +
+STACK CFI 691bb .cfa: $rsp -128 +
+STACK CFI INIT 691bd 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 691c7 .cfa: $rsp 0 +
+STACK CFI 691cb .cfa: $rsp 128 +
+STACK CFI 691d3 .cfa: $rsp -128 +
+STACK CFI INIT 69000 18a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 69008 $r13: .cfa -16 + ^
+STACK CFI 6901f .cfa: $rsp 48 +
+STACK CFI 69025 $r12: .cfa -24 + ^ $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI INIT 6947c 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 69486 .cfa: $rsp 0 +
+STACK CFI 6948a .cfa: $rsp 128 +
+STACK CFI 69492 .cfa: $rsp -128 +
+STACK CFI INIT 69497 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 694a1 .cfa: $rsp 0 +
+STACK CFI 694a5 .cfa: $rsp 128 +
+STACK CFI 694ad .cfa: $rsp -128 +
+STACK CFI INIT 694b2 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 694bc .cfa: $rsp 0 +
+STACK CFI 694c0 .cfa: $rsp 128 +
+STACK CFI 694c8 .cfa: $rsp -128 +
+STACK CFI INIT 691e0 29c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 691e2 .cfa: $rsp 16 +
+STACK CFI 691e4 .cfa: $rsp 24 +
+STACK CFI 691e6 .cfa: $rsp 32 +
+STACK CFI 691e8 .cfa: $rsp 40 +
+STACK CFI 691eb $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI 691ec .cfa: $rsp 48 +
+STACK CFI 691ed .cfa: $rsp 56 +
+STACK CFI 691f0 $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 691f4 .cfa: $rsp 96 +
+STACK CFI INIT 694d0 8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 694e0 18f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 694e2 .cfa: $rsp 16 +
+STACK CFI 694e4 .cfa: $rsp 24 +
+STACK CFI 694e6 .cfa: $rsp 32 +
+STACK CFI 694e8 .cfa: $rsp 40 +
+STACK CFI 694eb $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI 694ec .cfa: $rsp 48 +
+STACK CFI 694ef $rbp: .cfa -48 + ^
+STACK CFI 694f0 .cfa: $rsp 56 +
+STACK CFI 694f3 $rbx: .cfa -56 + ^
+STACK CFI 694f7 .cfa: $rsp 96 +
+STACK CFI INIT 69810 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6981a .cfa: $rsp 0 +
+STACK CFI 6981e .cfa: $rsp 128 +
+STACK CFI 69826 .cfa: $rsp -128 +
+STACK CFI INIT 6982b 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 69835 .cfa: $rsp 0 +
+STACK CFI 69839 .cfa: $rsp 128 +
+STACK CFI 69841 .cfa: $rsp -128 +
+STACK CFI INIT 69846 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 69850 .cfa: $rsp 0 +
+STACK CFI 69854 .cfa: $rsp 128 +
+STACK CFI 6985c .cfa: $rsp -128 +
+STACK CFI INIT 69670 1a0 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6967d $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 69686 .cfa: $rsp 32 +
+STACK CFI 69696 $r12: .cfa -16 + ^
+STACK CFI INIT 69860 bd .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 69862 .cfa: $rsp 16 +
+STACK CFI 69865 $r15: .cfa -16 + ^
+STACK CFI 69867 .cfa: $rsp 24 +
+STACK CFI 6986e $r14: .cfa -24 + ^
+STACK CFI 69870 .cfa: $rsp 32 +
+STACK CFI 69873 $r13: .cfa -32 + ^
+STACK CFI 69875 .cfa: $rsp 40 +
+STACK CFI 69876 .cfa: $rsp 48 +
+STACK CFI 69877 .cfa: $rsp 56 +
+STACK CFI 6987b .cfa: $rsp 80 +
+STACK CFI 69880 $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 69fb8 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 69fc6 .cfa: $rsp 0 +
+STACK CFI 69fca .cfa: $rsp 128 +
+STACK CFI 69fd2 .cfa: $rsp -128 +
+STACK CFI INIT 69fd7 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 69fe5 .cfa: $rsp 0 +
+STACK CFI 69fe9 .cfa: $rsp 128 +
+STACK CFI 69ff1 .cfa: $rsp -128 +
+STACK CFI INIT 69ff6 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6a004 .cfa: $rsp 0 +
+STACK CFI 6a008 .cfa: $rsp 128 +
+STACK CFI 6a010 .cfa: $rsp -128 +
+STACK CFI INIT 6a015 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6a023 .cfa: $rsp 0 +
+STACK CFI 6a027 .cfa: $rsp 128 +
+STACK CFI 6a02f .cfa: $rsp -128 +
+STACK CFI INIT 6a034 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6a042 .cfa: $rsp 0 +
+STACK CFI 6a046 .cfa: $rsp 128 +
+STACK CFI 6a04e .cfa: $rsp -128 +
+STACK CFI INIT 69920 44 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 69970 1d1 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 69972 .cfa: $rsp 16 +
+STACK CFI 69973 .cfa: $rsp 24 +
+STACK CFI 69974 .cfa: $rsp 32 +
+STACK CFI 69977 $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 6997b .cfa: $rsp 80 +
+STACK CFI INIT 69b50 3c3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 69b69 $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 69b77 .cfa: $rsp 128 +
+STACK CFI 69b87 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^
+STACK CFI INIT 69f20 98 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 69f2d $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 69f3b .cfa: $rsp 32 +
+STACK CFI 69f3e $r12: .cfa -16 + ^
+STACK CFI INIT 6a212 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6a21c .cfa: $rsp 0 +
+STACK CFI 6a220 .cfa: $rsp 128 +
+STACK CFI 6a228 .cfa: $rsp -128 +
+STACK CFI INIT 6a22d 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6a237 .cfa: $rsp 0 +
+STACK CFI 6a23b .cfa: $rsp 128 +
+STACK CFI 6a243 .cfa: $rsp -128 +
+STACK CFI INIT 6a248 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6a252 .cfa: $rsp 0 +
+STACK CFI 6a256 .cfa: $rsp 128 +
+STACK CFI 6a25e .cfa: $rsp -128 +
+STACK CFI INIT 6a060 1b2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6a06d $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 6a076 $r12: .cfa -16 + ^ .cfa: $rsp 32 +
+STACK CFI INIT 6a434 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6a43e .cfa: $rsp 0 +
+STACK CFI 6a442 .cfa: $rsp 128 +
+STACK CFI 6a44a .cfa: $rsp -128 +
+STACK CFI INIT 6a44f 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6a459 .cfa: $rsp 0 +
+STACK CFI 6a45d .cfa: $rsp 128 +
+STACK CFI 6a465 .cfa: $rsp -128 +
+STACK CFI INIT 6a467 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6a471 .cfa: $rsp 0 +
+STACK CFI 6a475 .cfa: $rsp 128 +
+STACK CFI 6a47d .cfa: $rsp -128 +
+STACK CFI INIT 6a260 e0 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6a261 .cfa: $rsp 16 +
+STACK CFI 6a264 $rbx: .cfa -16 + ^
+STACK CFI 6a268 .cfa: $rsp 48 +
+STACK CFI INIT 6a340 f4 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6a341 .cfa: $rsp 16 +
+STACK CFI 6a348 .cfa: $rsp 24 +
+STACK CFI 6a34b $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI 6a34f .cfa: $rsp 32 +
+STACK CFI INIT 6a5e4 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6a5ee .cfa: $rsp 0 +
+STACK CFI 6a5f2 .cfa: $rsp 128 +
+STACK CFI 6a5fa .cfa: $rsp -128 +
+STACK CFI INIT 6a5ff 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6a609 .cfa: $rsp 0 +
+STACK CFI 6a60d .cfa: $rsp 128 +
+STACK CFI 6a615 .cfa: $rsp -128 +
+STACK CFI INIT 6a617 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6a621 .cfa: $rsp 0 +
+STACK CFI 6a625 .cfa: $rsp 128 +
+STACK CFI 6a62d .cfa: $rsp -128 +
+STACK CFI INIT 6a480 76 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6a48d $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 6a496 .cfa: $rsp 32 +
+STACK CFI 6a4a2 $r12: .cfa -16 + ^
+STACK CFI INIT 6a500 e4 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6a501 .cfa: $rsp 16 +
+STACK CFI 6a508 $rbx: .cfa -16 + ^
+STACK CFI INIT 6a772 1c .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6a77d .cfa: $rsp 0 +
+STACK CFI 6a781 .cfa: $rsp 128 +
+STACK CFI 6a789 .cfa: $rsp -128 +
+STACK CFI INIT 6a78e 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6a798 .cfa: $rsp 0 +
+STACK CFI 6a79c .cfa: $rsp 128 +
+STACK CFI 6a7a4 .cfa: $rsp -128 +
+STACK CFI INIT 6a7a9 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6a7b3 .cfa: $rsp 0 +
+STACK CFI 6a7b7 .cfa: $rsp 128 +
+STACK CFI 6a7bf .cfa: $rsp -128 +
+STACK CFI INIT 6a630 142 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6a63d $r12: .cfa -16 + ^ $rbx: .cfa -32 + ^
+STACK CFI 6a646 .cfa: $rsp 32 +
+STACK CFI 6a650 $rbp: .cfa -24 + ^
+STACK CFI INIT 6a977 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6a981 .cfa: $rsp 0 +
+STACK CFI 6a985 .cfa: $rsp 128 +
+STACK CFI 6a98d .cfa: $rsp -128 +
+STACK CFI INIT 6a992 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6a99c .cfa: $rsp 0 +
+STACK CFI 6a9a0 .cfa: $rsp 128 +
+STACK CFI 6a9a8 .cfa: $rsp -128 +
+STACK CFI INIT 6a9ad 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6a9b7 .cfa: $rsp 0 +
+STACK CFI 6a9bb .cfa: $rsp 128 +
+STACK CFI 6a9c3 .cfa: $rsp -128 +
+STACK CFI INIT 6a7d0 1a7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6a7d1 .cfa: $rsp 16 +
+STACK CFI 6a7d8 .cfa: $rsp 24 +
+STACK CFI 6a7db $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI 6a7df .cfa: $rsp 32 +
+STACK CFI INIT 6aa73 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6aa7d .cfa: $rsp 0 +
+STACK CFI 6aa81 .cfa: $rsp 128 +
+STACK CFI 6aa89 .cfa: $rsp -128 +
+STACK CFI INIT 6aa8b 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6aa95 .cfa: $rsp 0 +
+STACK CFI 6aa99 .cfa: $rsp 128 +
+STACK CFI 6aaa1 .cfa: $rsp -128 +
+STACK CFI INIT 6a9d0 a3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6a9d4 .cfa: $rsp 16 +
+STACK CFI 6a9d9 $rbx: .cfa -16 + ^
+STACK CFI INIT 6aab0 c0 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6aabd $r12: .cfa -24 + ^ $rbp: .cfa -32 + ^
+STACK CFI 6aace .cfa: $rsp 288 +
+STACK CFI 6aad9 $r13: .cfa -16 + ^ $rbx: .cfa -40 + ^
+STACK CFI INIT 6ab70 9d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6ab8e .cfa: $rsp 288 +
+STACK CFI 6ab91 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI INIT 6ad1e 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6ad28 .cfa: $rsp 0 +
+STACK CFI 6ad2c .cfa: $rsp 128 +
+STACK CFI 6ad34 .cfa: $rsp -128 +
+STACK CFI INIT 6ad39 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6ad43 .cfa: $rsp 0 +
+STACK CFI 6ad47 .cfa: $rsp 128 +
+STACK CFI 6ad4f .cfa: $rsp -128 +
+STACK CFI INIT 6ad54 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6ad5e .cfa: $rsp 0 +
+STACK CFI 6ad62 .cfa: $rsp 128 +
+STACK CFI 6ad6a .cfa: $rsp -128 +
+STACK CFI INIT 6ac10 10e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6ac18 .cfa: $rsp 16 +
+STACK CFI 6ac22 $rbx: .cfa -16 + ^
+STACK CFI INIT 6ad70 2d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 6ada0 20 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 6adc0 3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 6add0 8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 6ade0 d4 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6aded $r13: .cfa -24 + ^ $rbx: .cfa -48 + ^
+STACK CFI 6adfa $r14: .cfa -16 + ^ $rbp: .cfa -40 + ^
+STACK CFI 6ae03 .cfa: $rsp 80 +
+STACK CFI 6ae0b $r12: .cfa -32 + ^
+STACK CFI INIT 6aec0 be .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6aecd $r13: .cfa -16 + ^ $rbx: .cfa -40 + ^
+STACK CFI 6aedb .cfa: $rsp 80 +
+STACK CFI 6aee2 $r12: .cfa -24 + ^ $rbp: .cfa -32 + ^
+STACK CFI INIT 6af80 e6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6af8d $r13: .cfa -24 + ^ $rbx: .cfa -48 + ^
+STACK CFI 6af9a $r14: .cfa -16 + ^ $rbp: .cfa -40 + ^
+STACK CFI 6afa3 .cfa: $rsp 80 +
+STACK CFI 6afb1 $r12: .cfa -32 + ^
+STACK CFI INIT 6b070 b8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6b071 .cfa: $rsp 16 +
+STACK CFI 6b078 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 6b083 $r13: .cfa -40 + ^ $r14: .cfa -32 + ^
+STACK CFI 6b0a2 $r12: .cfa -48 + ^ $r15: .cfa -24 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 6b130 272 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6b14a .cfa: $rsp 80 +
+STACK CFI 6b150 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI INIT 6b43d 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6b447 .cfa: $rsp 0 +
+STACK CFI 6b44b .cfa: $rsp 128 +
+STACK CFI 6b453 .cfa: $rsp -128 +
+STACK CFI INIT 6b455 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6b45f .cfa: $rsp 0 +
+STACK CFI 6b463 .cfa: $rsp 128 +
+STACK CFI 6b46b .cfa: $rsp -128 +
+STACK CFI INIT 6b3b0 8d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 6b509 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6b513 .cfa: $rsp 0 +
+STACK CFI 6b517 .cfa: $rsp 128 +
+STACK CFI 6b51f .cfa: $rsp -128 +
+STACK CFI INIT 6b521 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6b52b .cfa: $rsp 0 +
+STACK CFI 6b52f .cfa: $rsp 128 +
+STACK CFI 6b537 .cfa: $rsp -128 +
+STACK CFI INIT 6b470 99 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 6b5d9 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6b5e3 .cfa: $rsp 0 +
+STACK CFI 6b5e7 .cfa: $rsp 128 +
+STACK CFI 6b5ef .cfa: $rsp -128 +
+STACK CFI INIT 6b5f1 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6b5fb .cfa: $rsp 0 +
+STACK CFI 6b5ff .cfa: $rsp 128 +
+STACK CFI 6b607 .cfa: $rsp -128 +
+STACK CFI INIT 6b540 99 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 6b610 24 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 6b73d 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6b747 .cfa: $rsp 0 +
+STACK CFI 6b74b .cfa: $rsp 128 +
+STACK CFI 6b753 .cfa: $rsp -128 +
+STACK CFI INIT 6b758 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6b762 .cfa: $rsp 0 +
+STACK CFI 6b766 .cfa: $rsp 128 +
+STACK CFI 6b76e .cfa: $rsp -128 +
+STACK CFI INIT 6b773 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6b77d .cfa: $rsp 0 +
+STACK CFI 6b781 .cfa: $rsp 128 +
+STACK CFI 6b789 .cfa: $rsp -128 +
+STACK CFI INIT 6b640 fd .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6b641 .cfa: $rsp 16 +
+STACK CFI 6b64b $rbx: .cfa -16 + ^
+STACK CFI INIT 6b9ee 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6b9f8 .cfa: $rsp 0 +
+STACK CFI 6b9fc .cfa: $rsp 128 +
+STACK CFI 6ba04 .cfa: $rsp -128 +
+STACK CFI INIT 6ba09 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6ba13 .cfa: $rsp 0 +
+STACK CFI 6ba17 .cfa: $rsp 128 +
+STACK CFI 6ba1f .cfa: $rsp -128 +
+STACK CFI INIT 6ba24 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6ba2e .cfa: $rsp 0 +
+STACK CFI 6ba32 .cfa: $rsp 128 +
+STACK CFI 6ba3a .cfa: $rsp -128 +
+STACK CFI INIT 6b790 25e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6b79c $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI 6b7b5 .cfa: $rsp 192 +
+STACK CFI 6b7ba $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^
+STACK CFI INIT 6bb2e 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6bb38 .cfa: $rsp 0 +
+STACK CFI 6bb3c .cfa: $rsp 128 +
+STACK CFI 6bb44 .cfa: $rsp -128 +
+STACK CFI INIT 6bb49 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6bb53 .cfa: $rsp 0 +
+STACK CFI 6bb57 .cfa: $rsp 128 +
+STACK CFI 6bb5f .cfa: $rsp -128 +
+STACK CFI INIT 6bb61 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6bb6b .cfa: $rsp 0 +
+STACK CFI 6bb6f .cfa: $rsp 128 +
+STACK CFI 6bb77 .cfa: $rsp -128 +
+STACK CFI INIT 6ba40 ee .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6ba41 .cfa: $rsp 16 +
+STACK CFI 6ba48 $rbx: .cfa -16 + ^
+STACK CFI INIT 6bc70 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6bc7a .cfa: $rsp 0 +
+STACK CFI 6bc7e .cfa: $rsp 128 +
+STACK CFI 6bc86 .cfa: $rsp -128 +
+STACK CFI INIT 6bc8b 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6bc95 .cfa: $rsp 0 +
+STACK CFI 6bc99 .cfa: $rsp 128 +
+STACK CFI 6bca1 .cfa: $rsp -128 +
+STACK CFI INIT 6bca6 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6bcb0 .cfa: $rsp 0 +
+STACK CFI 6bcb4 .cfa: $rsp 128 +
+STACK CFI 6bcbc .cfa: $rsp -128 +
+STACK CFI INIT 6bb80 f0 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6bb81 .cfa: $rsp 16 +
+STACK CFI 6bb88 $rbx: .cfa -16 + ^
+STACK CFI INIT 6bdc1 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6bdcb .cfa: $rsp 0 +
+STACK CFI 6bdcf .cfa: $rsp 128 +
+STACK CFI 6bdd7 .cfa: $rsp -128 +
+STACK CFI INIT 6bddc 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6bde6 .cfa: $rsp 0 +
+STACK CFI 6bdea .cfa: $rsp 128 +
+STACK CFI 6bdf2 .cfa: $rsp -128 +
+STACK CFI INIT 6bdf7 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6be01 .cfa: $rsp 0 +
+STACK CFI 6be05 .cfa: $rsp 128 +
+STACK CFI 6be0d .cfa: $rsp -128 +
+STACK CFI INIT 6bcc0 101 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6bcc8 .cfa: $rsp 16 +
+STACK CFI 6bccf $rbx: .cfa -16 + ^
+STACK CFI INIT 6be10 e1 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6be1d $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI 6be30 .cfa: $rsp 64 +
+STACK CFI 6be33 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT 6bf00 46 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6bf09 .cfa: $rsp 16 +
+STACK CFI 6bf0c $rbx: .cfa -16 + ^
+STACK CFI INIT 6bf50 6d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6bf51 .cfa: $rsp 16 +
+STACK CFI 6bf52 .cfa: $rsp 24 +
+STACK CFI 6bf55 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI 6bf59 .cfa: $rsp 32 +
+STACK CFI INIT 6bfc0 5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 6c0cd 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6c0d7 .cfa: $rsp 0 +
+STACK CFI 6c0db .cfa: $rsp 128 +
+STACK CFI 6c0e3 .cfa: $rsp -128 +
+STACK CFI INIT 6c0e8 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6c0f2 .cfa: $rsp 0 +
+STACK CFI 6c0f6 .cfa: $rsp 128 +
+STACK CFI 6c0fe .cfa: $rsp -128 +
+STACK CFI INIT 6c103 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6c10d .cfa: $rsp 0 +
+STACK CFI 6c111 .cfa: $rsp 128 +
+STACK CFI 6c119 .cfa: $rsp -128 +
+STACK CFI INIT 6bfd0 fd .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6bfd1 .cfa: $rsp 16 +
+STACK CFI 6bfdb $rbx: .cfa -16 + ^
+STACK CFI INIT 6c204 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6c20e .cfa: $rsp 0 +
+STACK CFI 6c212 .cfa: $rsp 128 +
+STACK CFI 6c21a .cfa: $rsp -128 +
+STACK CFI INIT 6c21f 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6c229 .cfa: $rsp 0 +
+STACK CFI 6c22d .cfa: $rsp 128 +
+STACK CFI 6c235 .cfa: $rsp -128 +
+STACK CFI INIT 6c237 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6c241 .cfa: $rsp 0 +
+STACK CFI 6c245 .cfa: $rsp 128 +
+STACK CFI 6c24d .cfa: $rsp -128 +
+STACK CFI INIT 6c120 e4 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6c121 .cfa: $rsp 16 +
+STACK CFI 6c128 $rbx: .cfa -16 + ^
+STACK CFI INIT 6c250 a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 6c260 e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 6c270 187 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6c27d $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI 6c298 .cfa: $rsp 288 +
+STACK CFI 6c29e $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^
+STACK CFI INIT 6c400 152 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6c422 .cfa: $rsp 608 +
+STACK CFI 6c42a $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI INIT 6c560 14 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 6c580 7a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6c591 $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI 6c59f .cfa: $rsp 48 +
+STACK CFI 6c5a9 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT 6c600 e1 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6c60d $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI 6c61a $r12: .cfa -32 + ^ $r13: .cfa -24 + ^
+STACK CFI 6c626 .cfa: $rsp 352 +
+STACK CFI 6c630 $r14: .cfa -16 + ^
+STACK CFI INIT 6c6f0 d6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6c6fd $r12: .cfa -32 + ^ $rbp: .cfa -40 + ^
+STACK CFI 6c713 .cfa: $rsp 48 +
+STACK CFI 6c71a $r13: .cfa -24 + ^ $r14: .cfa -16 + ^ $rbx: .cfa -48 + ^
+STACK CFI INIT 6c7d0 a8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6c7dd $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^
+STACK CFI 6c7e6 .cfa: $rsp 32 +
+STACK CFI 6c7f3 $rbx: .cfa -32 + ^
+STACK CFI INIT 6c880 1ba .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6c88d $r12: .cfa -40 + ^ $rbx: .cfa -56 + ^
+STACK CFI 6c8aa .cfa: $rsp 304 +
+STACK CFI 6c8b3 $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^
+STACK CFI INIT 6ca40 90 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6ca47 .cfa: $rsp 224 +
+STACK CFI INIT 6cad0 5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 6cbce 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6cbd8 .cfa: $rsp 0 +
+STACK CFI 6cbdc .cfa: $rsp 128 +
+STACK CFI 6cbe4 .cfa: $rsp -128 +
+STACK CFI INIT 6cbe9 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6cbf3 .cfa: $rsp 0 +
+STACK CFI 6cbf7 .cfa: $rsp 128 +
+STACK CFI 6cbff .cfa: $rsp -128 +
+STACK CFI INIT 6cc01 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6cc0b .cfa: $rsp 0 +
+STACK CFI 6cc0f .cfa: $rsp 128 +
+STACK CFI 6cc17 .cfa: $rsp -128 +
+STACK CFI INIT 6cae0 ee .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6cae1 .cfa: $rsp 16 +
+STACK CFI 6cae8 $rbx: .cfa -16 + ^
+STACK CFI INIT 6cd58 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6cd62 .cfa: $rsp 0 +
+STACK CFI 6cd66 .cfa: $rsp 128 +
+STACK CFI 6cd6e .cfa: $rsp -128 +
+STACK CFI INIT 6cd73 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6cd7d .cfa: $rsp 0 +
+STACK CFI 6cd81 .cfa: $rsp 128 +
+STACK CFI 6cd89 .cfa: $rsp -128 +
+STACK CFI INIT 6cd8e 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6cd98 .cfa: $rsp 0 +
+STACK CFI 6cd9c .cfa: $rsp 128 +
+STACK CFI 6cda4 .cfa: $rsp -128 +
+STACK CFI INIT 6cc20 138 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6cc21 .cfa: $rsp 16 +
+STACK CFI 6cc28 $rbx: .cfa -16 + ^
+STACK CFI INIT 6d00e 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6d018 .cfa: $rsp 0 +
+STACK CFI 6d01c .cfa: $rsp 128 +
+STACK CFI 6d024 .cfa: $rsp -128 +
+STACK CFI INIT 6d029 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6d033 .cfa: $rsp 0 +
+STACK CFI 6d037 .cfa: $rsp 128 +
+STACK CFI 6d03f .cfa: $rsp -128 +
+STACK CFI INIT 6d044 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6d04e .cfa: $rsp 0 +
+STACK CFI 6d052 .cfa: $rsp 128 +
+STACK CFI 6d05a .cfa: $rsp -128 +
+STACK CFI INIT 6cdb0 25e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6cdbc $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI 6cdd5 .cfa: $rsp 192 +
+STACK CFI 6cdda $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^
+STACK CFI INIT 6d060 29 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 6d090 2b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 6d0c0 8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 6d0d0 c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 6d0e0 c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 6d0f0 8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 6d100 67 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6d107 .cfa: $rsp 16 +
+STACK CFI 6d10a $rbx: .cfa -16 + ^
+STACK CFI INIT 6d170 29 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 6d1a0 2e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 6d1d0 412 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6d1d1 .cfa: $rsp 16 +
+STACK CFI 6d1d7 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 6d2a3 $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 6d5f0 20 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6d5f1 .cfa: $rsp 16 +
+STACK CFI 6d5f4 $rbx: .cfa -16 + ^
+STACK CFI INIT 6d610 61 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 6d680 1f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6d681 .cfa: $rsp 16 +
+STACK CFI 6d687 $rbx: .cfa -16 + ^
+STACK CFI INIT 6d6a0 198 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6d6ad $r12: .cfa -24 + ^ $rbx: .cfa -40 + ^
+STACK CFI 6d6bb .cfa: $rsp 112 +
+STACK CFI 6d6c4 $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^
+STACK CFI INIT 6d840 c2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6d84d $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 6d856 .cfa: $rsp 32 +
+STACK CFI 6d860 $r12: .cfa -16 + ^
+STACK CFI INIT 6d910 5e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6d911 .cfa: $rsp 16 +
+STACK CFI 6d914 $rbp: .cfa -16 + ^
+STACK CFI 6d915 .cfa: $rsp 24 +
+STACK CFI 6d918 $rbx: .cfa -24 + ^
+STACK CFI 6d91f .cfa: $rsp 32 +
+STACK CFI INIT 6d970 4 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 6d980 9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 6d990 9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 6d9a0 29 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 6d9d0 1b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 6d9f0 22 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 6da20 29 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6da24 .cfa: $rsp 16 +
+STACK CFI INIT 6da50 29 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 6db71 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6db7b .cfa: $rsp 0 +
+STACK CFI 6db7f .cfa: $rsp 128 +
+STACK CFI 6db87 .cfa: $rsp -128 +
+STACK CFI INIT 6db8c 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6db96 .cfa: $rsp 0 +
+STACK CFI 6db9a .cfa: $rsp 128 +
+STACK CFI 6dba2 .cfa: $rsp -128 +
+STACK CFI INIT 6dba7 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 6dbb1 .cfa: $rsp 0 +
+STACK CFI 6dbb5 .cfa: $rsp 128 +
+STACK CFI 6dbbd .cfa: $rsp -128 +
+STACK CFI INIT 6da80 f1 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6da81 .cfa: $rsp 16 +
+STACK CFI 6da88 $rbx: .cfa -16 + ^
+STACK CFI INIT 6dbc0 5d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6dbc8 $r12: .cfa -16 + ^
+STACK CFI 6dbda .cfa: $rsp 32 +
+STACK CFI 6dbdd $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI INIT 6dc20 92 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6dc28 $r12: .cfa -16 + ^
+STACK CFI 6dc3a .cfa: $rsp 32 +
+STACK CFI 6dc3d $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI INIT 6dcc0 b1 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6dccd $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 6dcd6 .cfa: $rsp 32 +
+STACK CFI 6dce1 $r12: .cfa -16 + ^
+STACK CFI INIT 6dd80 77 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6dd8d $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 6dd96 .cfa: $rsp 32 +
+STACK CFI 6dd99 $r12: .cfa -16 + ^
+STACK CFI INIT 6de00 8b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6de01 .cfa: $rsp 16 +
+STACK CFI 6de04 $rbp: .cfa -16 + ^
+STACK CFI 6de05 .cfa: $rsp 24 +
+STACK CFI 6de09 .cfa: $rsp 32 +
+STACK CFI 6de12 $rbx: .cfa -24 + ^
+STACK CFI INIT 6de90 bd .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6de92 .cfa: $rsp 16 +
+STACK CFI 6de95 $r15: .cfa -16 + ^
+STACK CFI 6de97 .cfa: $rsp 24 +
+STACK CFI 6de9e $r14: .cfa -24 + ^
+STACK CFI 6dea0 .cfa: $rsp 32 +
+STACK CFI 6dea3 $r13: .cfa -32 + ^
+STACK CFI 6dea5 .cfa: $rsp 40 +
+STACK CFI 6dea6 .cfa: $rsp 48 +
+STACK CFI 6dea7 .cfa: $rsp 56 +
+STACK CFI 6deab .cfa: $rsp 128 +
+STACK CFI 6deb0 $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 6df50 8b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6df57 .cfa: $rsp 224 +
+STACK CFI INIT 6dfe0 80 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6dff1 $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI 6dfff .cfa: $rsp 48 +
+STACK CFI 6e00c $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT 6e060 f9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6e06d $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI 6e086 .cfa: $rsp 880 +
+STACK CFI 6e08c $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^
+STACK CFI INIT 6e160 a5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6e182 .cfa: $rsp 624 +
+STACK CFI 6e18a $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI INIT 6e210 90 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6e217 .cfa: $rsp 224 +
+STACK CFI INIT 6e2a0 35 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 6e2e0 31 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 6e320 31 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 6e360 28 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6e368 .cfa: $rsp 16 +
+STACK CFI 6e36b $rbx: .cfa -16 + ^
+STACK CFI INIT 6e390 4c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6e391 .cfa: $rsp 16 +
+STACK CFI 6e39b $rbx: .cfa -16 + ^
+STACK CFI INIT 6e3e0 7d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6e3e8 .cfa: $rsp 16 +
+STACK CFI 6e3eb $rbx: .cfa -16 + ^
+STACK CFI INIT 6e460 42 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6e461 .cfa: $rsp 16 +
+STACK CFI 6e46b $rbx: .cfa -16 + ^
+STACK CFI INIT 6e4b0 42 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6e4b8 .cfa: $rsp 16 +
+STACK CFI 6e4bb $rbx: .cfa -16 + ^
+STACK CFI INIT 6e500 44 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 6e550 76 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6e551 .cfa: $rsp 16 +
+STACK CFI 6e554 $rbx: .cfa -16 + ^
+STACK CFI 6e558 .cfa: $rsp 32 +
+STACK CFI INIT 6e5d0 44 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 6e620 97 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6e621 .cfa: $rsp 16 +
+STACK CFI 6e62a .cfa: $rsp 32 +
+STACK CFI 6e62e $rbx: .cfa -16 + ^
+STACK CFI INIT 6e6c0 22 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 6e6f0 41 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6e6f1 .cfa: $rsp 16 +
+STACK CFI 6e6f6 $rbx: .cfa -16 + ^
+STACK CFI INIT 6e740 47 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6e741 .cfa: $rsp 16 +
+STACK CFI 6e74c $rbx: .cfa -16 + ^
+STACK CFI INIT 6e790 47 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6e79e .cfa: $rsp 32 +
+STACK CFI 6e7a7 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 6e7e0 e5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6e7e2 .cfa: $rsp 16 +
+STACK CFI 6e7e7 $r15: .cfa -16 + ^
+STACK CFI 6e7e9 .cfa: $rsp 24 +
+STACK CFI 6e7ec $r14: .cfa -24 + ^
+STACK CFI 6e7ee .cfa: $rsp 32 +
+STACK CFI 6e7f0 .cfa: $rsp 40 +
+STACK CFI 6e7f1 .cfa: $rsp 48 +
+STACK CFI 6e7f4 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $rbp: .cfa -48 + ^
+STACK CFI 6e7f5 .cfa: $rsp 56 +
+STACK CFI 6e7f8 $rbx: .cfa -56 + ^
+STACK CFI 6e7fc .cfa: $rsp 64 +
+STACK CFI INIT 6e8d0 20d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6e8dd $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 6e8f8 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ .cfa: $rsp 80 +
+STACK CFI INIT 6eae0 10a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6eae1 .cfa: $rsp 16 +
+STACK CFI 6eaeb $rbx: .cfa -16 + ^
+STACK CFI INIT 6ebf0 c6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6ebf2 .cfa: $rsp 16 +
+STACK CFI 6ebf5 $r14: .cfa -16 + ^
+STACK CFI 6ebf7 .cfa: $rsp 24 +
+STACK CFI 6ebf9 .cfa: $rsp 32 +
+STACK CFI 6ebfc $r12: .cfa -32 + ^ $r13: .cfa -24 + ^
+STACK CFI 6ebfd .cfa: $rsp 40 +
+STACK CFI 6ec00 $rbp: .cfa -40 + ^
+STACK CFI 6ec01 .cfa: $rsp 48 +
+STACK CFI 6ec04 $rbx: .cfa -48 + ^
+STACK CFI INIT 6ecc0 11a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6ecc1 .cfa: $rsp 16 +
+STACK CFI 6eccb $rbx: .cfa -16 + ^
+STACK CFI INIT 6ede0 199 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6edec $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 6ee07 .cfa: $rsp 64 +
+STACK CFI 6ee1a $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT 6ef80 a5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6ef8e .cfa: $rsp 48 +
+STACK CFI 6ef98 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 6f030 98 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6f031 .cfa: $rsp 16 +
+STACK CFI 6f03b $rbx: .cfa -16 + ^
+STACK CFI INIT 6f0d0 4f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 6f120 1d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 6f140 3a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6f141 .cfa: $rsp 16 +
+STACK CFI 6f14b $rbx: .cfa -16 + ^
+STACK CFI INIT 6f180 15 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 6f1a0 243 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6f1b9 $r12: .cfa -40 + ^ $r14: .cfa -24 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 6f1c7 .cfa: $rsp 96 +
+STACK CFI 6f1da $r13: .cfa -32 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT 6f3f0 1e0 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6f3fd $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI 6f40b .cfa: $rsp 64 +
+STACK CFI 6f413 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT 6f5d0 1ef .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6f5dc $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 6f5e9 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^
+STACK CFI 6f5f7 .cfa: $rsp 80 +
+STACK CFI 6f607 $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT 6f7c0 be .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6f7cd $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI 6f7db .cfa: $rsp 48 +
+STACK CFI 6f7e4 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT 70bbe 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 70bc8 .cfa: $rsp 0 +
+STACK CFI 70bcc .cfa: $rsp 128 +
+STACK CFI 70bd4 .cfa: $rsp -128 +
+STACK CFI INIT 70bd9 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 70be3 .cfa: $rsp 0 +
+STACK CFI 70be7 .cfa: $rsp 128 +
+STACK CFI 70bef .cfa: $rsp -128 +
+STACK CFI INIT 70bf4 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 70bfe .cfa: $rsp 0 +
+STACK CFI 70c02 .cfa: $rsp 128 +
+STACK CFI 70c0a .cfa: $rsp -128 +
+STACK CFI INIT 6f880 32 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6f881 .cfa: $rsp 16 +
+STACK CFI 6f884 $rbx: .cfa -16 + ^
+STACK CFI INIT 6f8c0 145 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6f8c1 .cfa: $rsp 16 +
+STACK CFI 6f8c2 .cfa: $rsp 24 +
+STACK CFI 6f8c5 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI 6f8c9 .cfa: $rsp 64 +
+STACK CFI INIT 6fa10 198 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6fa29 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 6fa37 .cfa: $rsp 64 +
+STACK CFI 6fa42 $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT 6fbb0 4ec .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 6fbbd $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 6fbca $r12: .cfa -40 + ^ $r13: .cfa -32 + ^
+STACK CFI 6fbdb .cfa: $rsp 208 +
+STACK CFI 6fbe5 $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT 700a0 15a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 700ad $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 700b6 .cfa: $rsp 32 +
+STACK CFI 700ca $r12: .cfa -16 + ^
+STACK CFI INIT 70200 272 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 70201 .cfa: $rsp 16 +
+STACK CFI 70203 $rbp: .cfa -16 + ^
+STACK CFI 70204 .cfa: $rsp 24 +
+STACK CFI 70207 $rbx: .cfa -24 + ^
+STACK CFI 7020b .cfa: $rsp 32 +
+STACK CFI INIT 70480 5d2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 70482 .cfa: $rsp 16 +
+STACK CFI 70484 .cfa: $rsp 24 +
+STACK CFI 70486 .cfa: $rsp 32 +
+STACK CFI 70488 .cfa: $rsp 40 +
+STACK CFI 70489 .cfa: $rsp 48 +
+STACK CFI 7048a .cfa: $rsp 56 +
+STACK CFI 7048d $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 70491 .cfa: $rsp 128 +
+STACK CFI INIT 70a60 15e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 70a6d $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 70a7a $r12: .cfa -40 + ^ $r13: .cfa -32 + ^
+STACK CFI 70a88 .cfa: $rsp 112 +
+STACK CFI 70a9b $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT 70c10 e2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 70c1d $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI 70c2a $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI 70c2e .cfa: $rsp 48 +
+STACK CFI INIT 70d00 5d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 70d08 .cfa: $rsp 16 +
+STACK CFI 70d0b $rbx: .cfa -16 + ^
+STACK CFI INIT 70d60 82 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 70d61 .cfa: $rsp 16 +
+STACK CFI 70d62 .cfa: $rsp 24 +
+STACK CFI 70d65 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI 70d69 .cfa: $rsp 32 +
+STACK CFI INIT 70f16 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 70f20 .cfa: $rsp 0 +
+STACK CFI 70f24 .cfa: $rsp 128 +
+STACK CFI 70f2c .cfa: $rsp -128 +
+STACK CFI INIT 70f31 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 70f3b .cfa: $rsp 0 +
+STACK CFI 70f3f .cfa: $rsp 128 +
+STACK CFI 70f47 .cfa: $rsp -128 +
+STACK CFI INIT 70f4c 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 70f56 .cfa: $rsp 0 +
+STACK CFI 70f5a .cfa: $rsp 128 +
+STACK CFI 70f62 .cfa: $rsp -128 +
+STACK CFI INIT 70df0 126 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 70df1 .cfa: $rsp 16 +
+STACK CFI 70df3 $rbp: .cfa -16 + ^
+STACK CFI 70df4 .cfa: $rsp 24 +
+STACK CFI 70df7 $rbx: .cfa -24 + ^
+STACK CFI 70dfb .cfa: $rsp 32 +
+STACK CFI INIT 70f70 74 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 70f78 $rbx: .cfa -24 + ^
+STACK CFI 70f86 .cfa: $rsp 32 +
+STACK CFI 70f88 $rbp: .cfa -16 + ^
+STACK CFI INIT 710e9 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 710f3 .cfa: $rsp 0 +
+STACK CFI 710f7 .cfa: $rsp 128 +
+STACK CFI 710ff .cfa: $rsp -128 +
+STACK CFI INIT 71104 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7110e .cfa: $rsp 0 +
+STACK CFI 71112 .cfa: $rsp 128 +
+STACK CFI 7111a .cfa: $rsp -128 +
+STACK CFI INIT 7111f 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 71129 .cfa: $rsp 0 +
+STACK CFI 7112d .cfa: $rsp 128 +
+STACK CFI 71135 .cfa: $rsp -128 +
+STACK CFI INIT 70ff0 f9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 70ff1 .cfa: $rsp 16 +
+STACK CFI 70ff8 $rbx: .cfa -16 + ^
+STACK CFI INIT 71140 24 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 7127a 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 71284 .cfa: $rsp 0 +
+STACK CFI 71288 .cfa: $rsp 128 +
+STACK CFI 71290 .cfa: $rsp -128 +
+STACK CFI INIT 71295 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7129f .cfa: $rsp 0 +
+STACK CFI 712a3 .cfa: $rsp 128 +
+STACK CFI 712ab .cfa: $rsp -128 +
+STACK CFI INIT 712b0 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 712ba .cfa: $rsp 0 +
+STACK CFI 712be .cfa: $rsp 128 +
+STACK CFI 712c6 .cfa: $rsp -128 +
+STACK CFI INIT 71170 10a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 71178 .cfa: $rsp 16 +
+STACK CFI 7117f $rbx: .cfa -16 + ^
+STACK CFI INIT 712d0 2b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 7148d 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 71497 .cfa: $rsp 0 +
+STACK CFI 7149b .cfa: $rsp 128 +
+STACK CFI 714a3 .cfa: $rsp -128 +
+STACK CFI INIT 714a8 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 714b2 .cfa: $rsp 0 +
+STACK CFI 714b6 .cfa: $rsp 128 +
+STACK CFI 714be .cfa: $rsp -128 +
+STACK CFI INIT 714c3 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 714cd .cfa: $rsp 0 +
+STACK CFI 714d1 .cfa: $rsp 128 +
+STACK CFI 714d9 .cfa: $rsp -128 +
+STACK CFI INIT 71300 18d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 71316 .cfa: $rsp 32 +
+STACK CFI 7131b $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI INIT 714e0 b4 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 714ed $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 714f6 .cfa: $rsp 32 +
+STACK CFI 71501 $r12: .cfa -16 + ^
+STACK CFI INIT 716e0 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 716ea .cfa: $rsp 0 +
+STACK CFI 716ee .cfa: $rsp 128 +
+STACK CFI 716f6 .cfa: $rsp -128 +
+STACK CFI INIT 716fb 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 71705 .cfa: $rsp 0 +
+STACK CFI 71709 .cfa: $rsp 128 +
+STACK CFI 71711 .cfa: $rsp -128 +
+STACK CFI INIT 71716 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 71720 .cfa: $rsp 0 +
+STACK CFI 71724 .cfa: $rsp 128 +
+STACK CFI 7172c .cfa: $rsp -128 +
+STACK CFI INIT 715a0 140 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 715ad $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 715b6 .cfa: $rsp 32 +
+STACK CFI 715b9 $r12: .cfa -16 + ^
+STACK CFI INIT 71730 6d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7173d $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 71746 .cfa: $rsp 32 +
+STACK CFI 71749 $r12: .cfa -16 + ^
+STACK CFI INIT 717a0 1d0 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 717a2 .cfa: $rsp 16 +
+STACK CFI 717a4 .cfa: $rsp 24 +
+STACK CFI 717a6 .cfa: $rsp 32 +
+STACK CFI 717a8 .cfa: $rsp 40 +
+STACK CFI 717ab $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI 717ac .cfa: $rsp 48 +
+STACK CFI 717af $rbp: .cfa -48 + ^
+STACK CFI 717b0 .cfa: $rsp 56 +
+STACK CFI 717b3 $rbx: .cfa -56 + ^
+STACK CFI 717b7 .cfa: $rsp 96 +
+STACK CFI INIT 71970 8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 71a32 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 71a3c .cfa: $rsp 0 +
+STACK CFI 71a40 .cfa: $rsp 128 +
+STACK CFI 71a48 .cfa: $rsp -128 +
+STACK CFI INIT 71a4d 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 71a57 .cfa: $rsp 0 +
+STACK CFI 71a5b .cfa: $rsp 128 +
+STACK CFI 71a63 .cfa: $rsp -128 +
+STACK CFI INIT 71980 b2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 71981 .cfa: $rsp 16 +
+STACK CFI 71983 $rbp: .cfa -16 + ^
+STACK CFI 71984 .cfa: $rsp 24 +
+STACK CFI 71987 $rbx: .cfa -24 + ^
+STACK CFI 7198b .cfa: $rsp 32 +
+STACK CFI INIT 71b74 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 71b7e .cfa: $rsp 0 +
+STACK CFI 71b82 .cfa: $rsp 128 +
+STACK CFI 71b8a .cfa: $rsp -128 +
+STACK CFI INIT 71b8f 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 71b99 .cfa: $rsp 0 +
+STACK CFI 71b9d .cfa: $rsp 128 +
+STACK CFI 71ba5 .cfa: $rsp -128 +
+STACK CFI INIT 71baa 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 71bb4 .cfa: $rsp 0 +
+STACK CFI 71bb8 .cfa: $rsp 128 +
+STACK CFI 71bc0 .cfa: $rsp -128 +
+STACK CFI INIT 71a70 104 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 71a71 .cfa: $rsp 16 +
+STACK CFI 71a7b $rbx: .cfa -16 + ^
+STACK CFI INIT 71bd0 30 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 71d15 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 71d1f .cfa: $rsp 0 +
+STACK CFI 71d23 .cfa: $rsp 128 +
+STACK CFI 71d2b .cfa: $rsp -128 +
+STACK CFI INIT 71d30 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 71d3a .cfa: $rsp 0 +
+STACK CFI 71d3e .cfa: $rsp 128 +
+STACK CFI 71d46 .cfa: $rsp -128 +
+STACK CFI INIT 71d4b 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 71d55 .cfa: $rsp 0 +
+STACK CFI 71d59 .cfa: $rsp 128 +
+STACK CFI 71d61 .cfa: $rsp -128 +
+STACK CFI INIT 71c00 115 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 71c08 .cfa: $rsp 16 +
+STACK CFI 71c12 $rbx: .cfa -16 + ^
+STACK CFI INIT 71d70 35 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 71db0 90 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 71db7 .cfa: $rsp 224 +
+STACK CFI INIT 71e40 15 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 71e60 a2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 71e67 .cfa: $rsp 224 +
+STACK CFI INIT 71f10 a4 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 71f17 .cfa: $rsp 224 +
+STACK CFI INIT 71fc0 90 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 71fc7 .cfa: $rsp 224 +
+STACK CFI INIT 72050 14 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 72167 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 72171 .cfa: $rsp 0 +
+STACK CFI 72175 .cfa: $rsp 128 +
+STACK CFI 7217d .cfa: $rsp -128 +
+STACK CFI INIT 72182 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7218c .cfa: $rsp 0 +
+STACK CFI 72190 .cfa: $rsp 128 +
+STACK CFI 72198 .cfa: $rsp -128 +
+STACK CFI INIT 72070 f7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 72074 .cfa: $rsp 16 +
+STACK CFI 7207c $rbx: .cfa -16 + ^
+STACK CFI INIT 74077 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 74081 .cfa: $rsp 0 +
+STACK CFI 74085 .cfa: $rsp 128 +
+STACK CFI 7408d .cfa: $rsp -128 +
+STACK CFI INIT 74092 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7409c .cfa: $rsp 0 +
+STACK CFI 740a0 .cfa: $rsp 128 +
+STACK CFI 740a8 .cfa: $rsp -128 +
+STACK CFI INIT 740ad 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 740b7 .cfa: $rsp 0 +
+STACK CFI 740bb .cfa: $rsp 128 +
+STACK CFI 740c3 .cfa: $rsp -128 +
+STACK CFI INIT 721a0 8a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 721ad $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 721b6 .cfa: $rsp 32 +
+STACK CFI 721bc $r12: .cfa -16 + ^
+STACK CFI INIT 72230 f9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 72231 .cfa: $rsp 16 +
+STACK CFI 72234 $rbp: .cfa -16 + ^
+STACK CFI 72235 .cfa: $rsp 24 +
+STACK CFI 72238 $rbx: .cfa -24 + ^
+STACK CFI 7223c .cfa: $rsp 32 +
+STACK CFI INIT 72330 29 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 72338 .cfa: $rsp 16 +
+STACK CFI 7233b $rbx: .cfa -16 + ^
+STACK CFI INIT 72360 5a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 72361 .cfa: $rsp 16 +
+STACK CFI 72368 $rbx: .cfa -16 + ^
+STACK CFI INIT 723c0 8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 723d0 153 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 723e1 .cfa: $rsp 176 +
+STACK CFI 723eb $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 72530 49 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7253d $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 72546 .cfa: $rsp 32 +
+STACK CFI 7254c $r12: .cfa -16 + ^
+STACK CFI INIT 72580 1a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 72581 .cfa: $rsp 16 +
+STACK CFI 72584 $rbx: .cfa -16 + ^
+STACK CFI INIT 725a0 1be .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 725a1 .cfa: $rsp 16 +
+STACK CFI 725a2 .cfa: $rsp 24 +
+STACK CFI 725a5 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI 725ac .cfa: $rsp 176 +
+STACK CFI INIT 72760 116 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7276d $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^
+STACK CFI 72788 .cfa: $rsp 64 +
+STACK CFI 7278c $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 72880 47 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 72881 .cfa: $rsp 16 +
+STACK CFI 72888 $rbx: .cfa -16 + ^
+STACK CFI INIT 728d0 1a9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 728d2 .cfa: $rsp 16 +
+STACK CFI 728d5 $r14: .cfa -16 + ^
+STACK CFI 728d7 .cfa: $rsp 24 +
+STACK CFI 728da $r13: .cfa -24 + ^
+STACK CFI 728dc .cfa: $rsp 32 +
+STACK CFI 728dd .cfa: $rsp 40 +
+STACK CFI 728de .cfa: $rsp 48 +
+STACK CFI 728e6 $r12: .cfa -32 + ^ $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI INIT 72a80 131 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 72a8d $r12: .cfa -24 + ^ $rbx: .cfa -40 + ^
+STACK CFI 72a9b .cfa: $rsp 48 +
+STACK CFI 72aa3 $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^
+STACK CFI INIT 72bc0 217 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 72bd9 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 72be7 .cfa: $rsp 64 +
+STACK CFI 72bf6 $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT 72de0 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 72de4 .cfa: $rsp 16 +
+STACK CFI 72de7 $rbx: .cfa -16 + ^
+STACK CFI INIT 72e10 9c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 72e12 .cfa: $rsp 16 +
+STACK CFI 72e17 $r13: .cfa -16 + ^
+STACK CFI 72e19 .cfa: $rsp 24 +
+STACK CFI 72e1c $r12: .cfa -24 + ^
+STACK CFI 72e1d .cfa: $rsp 32 +
+STACK CFI 72e20 $rbp: .cfa -32 + ^
+STACK CFI 72e21 .cfa: $rsp 40 +
+STACK CFI 72e24 $rbx: .cfa -40 + ^
+STACK CFI 72e28 .cfa: $rsp 48 +
+STACK CFI INIT 72eb0 8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 72ec0 2d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 72ec1 .cfa: $rsp 16 +
+STACK CFI 72ec4 $rbx: .cfa -16 + ^
+STACK CFI INIT 72ef0 10 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 72f00 23 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 72f04 .cfa: $rsp 16 +
+STACK CFI INIT 72f30 22f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 72f31 .cfa: $rsp 16 +
+STACK CFI 72f32 .cfa: $rsp 24 +
+STACK CFI 72f35 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI 72f39 .cfa: $rsp 32 +
+STACK CFI INIT 73160 3e1 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7316d $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI 73186 .cfa: $rsp 192 +
+STACK CFI 73191 $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^
+STACK CFI INIT 73550 bf .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 73551 .cfa: $rsp 16 +
+STACK CFI 73558 $rbx: .cfa -16 + ^
+STACK CFI INIT 73610 235 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7361d $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 73626 .cfa: $rsp 32 +
+STACK CFI 73632 $r12: .cfa -16 + ^
+STACK CFI INIT 73850 37 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 73851 .cfa: $rsp 16 +
+STACK CFI 73854 $rbx: .cfa -16 + ^
+STACK CFI INIT 73890 5d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7389f .cfa: $rsp 16 +
+STACK CFI 738a2 $rbx: .cfa -16 + ^
+STACK CFI INIT 738f0 ca .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 738f8 $rbx: .cfa -32 + ^
+STACK CFI 73906 .cfa: $rsp 32 +
+STACK CFI 73910 $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^
+STACK CFI INIT 739c0 487 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 739c1 .cfa: $rsp 16 +
+STACK CFI 739c4 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 739cf $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI 739d3 $rbx: .cfa -56 + ^
+STACK CFI INIT 73e50 3c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 73e5e .cfa: $rsp 32 +
+STACK CFI 73e6b $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 73e90 72 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 73e91 .cfa: $rsp 16 +
+STACK CFI 73e98 $rbx: .cfa -16 + ^
+STACK CFI INIT 73f10 167 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 73f12 .cfa: $rsp 16 +
+STACK CFI 73f18 $r12: .cfa -16 + ^
+STACK CFI 73f19 .cfa: $rsp 24 +
+STACK CFI 73f1a .cfa: $rsp 32 +
+STACK CFI 73f21 $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI INIT 75c47 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 75c51 .cfa: $rsp 0 +
+STACK CFI 75c55 .cfa: $rsp 128 +
+STACK CFI 75c5d .cfa: $rsp -128 +
+STACK CFI INIT 75c62 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 75c70 .cfa: $rsp 0 +
+STACK CFI 75c74 .cfa: $rsp 128 +
+STACK CFI 75c7c .cfa: $rsp -128 +
+STACK CFI INIT 75c81 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 75c8f .cfa: $rsp 0 +
+STACK CFI 75c93 .cfa: $rsp 128 +
+STACK CFI 75c9b .cfa: $rsp -128 +
+STACK CFI INIT 75ca0 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 75caa .cfa: $rsp 0 +
+STACK CFI 75cae .cfa: $rsp 128 +
+STACK CFI 75cb6 .cfa: $rsp -128 +
+STACK CFI INIT 75cbb 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 75cc9 .cfa: $rsp 0 +
+STACK CFI 75ccd .cfa: $rsp 128 +
+STACK CFI 75cd5 .cfa: $rsp -128 +
+STACK CFI INIT 75cda 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 75ce4 .cfa: $rsp 0 +
+STACK CFI 75ce8 .cfa: $rsp 128 +
+STACK CFI 75cf0 .cfa: $rsp -128 +
+STACK CFI INIT 75cf5 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 75d03 .cfa: $rsp 0 +
+STACK CFI 75d07 .cfa: $rsp 128 +
+STACK CFI 75d0f .cfa: $rsp -128 +
+STACK CFI INIT 75d14 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 75d1e .cfa: $rsp 0 +
+STACK CFI 75d22 .cfa: $rsp 128 +
+STACK CFI 75d2a .cfa: $rsp -128 +
+STACK CFI INIT 75d2f 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 75d3d .cfa: $rsp 0 +
+STACK CFI 75d41 .cfa: $rsp 128 +
+STACK CFI 75d49 .cfa: $rsp -128 +
+STACK CFI INIT 75d4e 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 75d58 .cfa: $rsp 0 +
+STACK CFI 75d5c .cfa: $rsp 128 +
+STACK CFI 75d64 .cfa: $rsp -128 +
+STACK CFI INIT 75d69 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 75d77 .cfa: $rsp 0 +
+STACK CFI 75d7b .cfa: $rsp 128 +
+STACK CFI 75d83 .cfa: $rsp -128 +
+STACK CFI INIT 75d88 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 75d92 .cfa: $rsp 0 +
+STACK CFI 75d96 .cfa: $rsp 128 +
+STACK CFI 75d9e .cfa: $rsp -128 +
+STACK CFI INIT 75da3 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 75dad .cfa: $rsp 0 +
+STACK CFI 75db1 .cfa: $rsp 128 +
+STACK CFI 75db9 .cfa: $rsp -128 +
+STACK CFI INIT 75dbe 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 75dcc .cfa: $rsp 0 +
+STACK CFI 75dd0 .cfa: $rsp 128 +
+STACK CFI 75dd8 .cfa: $rsp -128 +
+STACK CFI INIT 75ddd 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 75deb .cfa: $rsp 0 +
+STACK CFI 75def .cfa: $rsp 128 +
+STACK CFI 75df7 .cfa: $rsp -128 +
+STACK CFI INIT 75dfc 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 75e06 .cfa: $rsp 0 +
+STACK CFI 75e0a .cfa: $rsp 128 +
+STACK CFI 75e12 .cfa: $rsp -128 +
+STACK CFI INIT 75e17 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 75e21 .cfa: $rsp 0 +
+STACK CFI 75e25 .cfa: $rsp 128 +
+STACK CFI 75e2d .cfa: $rsp -128 +
+STACK CFI INIT 75e32 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 75e40 .cfa: $rsp 0 +
+STACK CFI 75e44 .cfa: $rsp 128 +
+STACK CFI 75e4c .cfa: $rsp -128 +
+STACK CFI INIT 75e51 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 75e5f .cfa: $rsp 0 +
+STACK CFI 75e63 .cfa: $rsp 128 +
+STACK CFI 75e6b .cfa: $rsp -128 +
+STACK CFI INIT 75e70 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 75e7e .cfa: $rsp 0 +
+STACK CFI 75e82 .cfa: $rsp 128 +
+STACK CFI 75e8a .cfa: $rsp -128 +
+STACK CFI INIT 75e8f 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 75e99 .cfa: $rsp 0 +
+STACK CFI 75e9d .cfa: $rsp 128 +
+STACK CFI 75ea5 .cfa: $rsp -128 +
+STACK CFI INIT 740d0 8e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 74160 247 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 74161 .cfa: $rsp 16 +
+STACK CFI 74162 .cfa: $rsp 24 +
+STACK CFI 74165 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI 74169 .cfa: $rsp 64 +
+STACK CFI INIT 743b0 1e9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 743b1 .cfa: $rsp 16 +
+STACK CFI 743b2 .cfa: $rsp 24 +
+STACK CFI 743b5 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI 743b9 .cfa: $rsp 64 +
+STACK CFI INIT 745a0 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 745d0 2b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 74600 2b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 74630 72 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 74639 .cfa: $rsp 16 +
+STACK CFI 7463c $rbx: .cfa -16 + ^
+STACK CFI INIT 746b0 21 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 746e0 4a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 746e1 .cfa: $rsp 16 +
+STACK CFI 746e9 $rbx: .cfa -16 + ^
+STACK CFI INIT 74730 6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 74740 24 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 74748 .cfa: $rsp 16 +
+STACK CFI 7474b $rbx: .cfa -16 + ^
+STACK CFI INIT 74770 d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 74780 c4 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7478d $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 74796 .cfa: $rsp 32 +
+STACK CFI 747a3 $r12: .cfa -16 + ^
+STACK CFI INIT 74850 11 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 74870 a3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 74920 c7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7492c $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI 7493a .cfa: $rsp 48 +
+STACK CFI 74940 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT 749f0 f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 74a00 3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 74a10 8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 74a20 42 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 74a21 .cfa: $rsp 16 +
+STACK CFI 74a28 $rbx: .cfa -16 + ^
+STACK CFI INIT 74a70 36 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 74a79 .cfa: $rsp 16 +
+STACK CFI 74a7c $rbx: .cfa -16 + ^
+STACK CFI INIT 74ab0 3c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 74af0 287 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 74af2 .cfa: $rsp 16 +
+STACK CFI 74af4 .cfa: $rsp 24 +
+STACK CFI 74af6 .cfa: $rsp 32 +
+STACK CFI 74af8 .cfa: $rsp 40 +
+STACK CFI 74af9 .cfa: $rsp 48 +
+STACK CFI 74afa .cfa: $rsp 56 +
+STACK CFI 74afc $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 74b00 .cfa: $rsp 96 +
+STACK CFI INIT 74d80 a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 74d90 247 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 74d92 .cfa: $rsp 16 +
+STACK CFI 74d94 .cfa: $rsp 24 +
+STACK CFI 74d96 .cfa: $rsp 32 +
+STACK CFI 74d98 .cfa: $rsp 40 +
+STACK CFI 74d99 .cfa: $rsp 48 +
+STACK CFI 74d9a .cfa: $rsp 56 +
+STACK CFI 74d9e .cfa: $rsp 96 +
+STACK CFI 74da5 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 74fe0 5e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 74fe1 .cfa: $rsp 16 +
+STACK CFI 74fe4 $rbx: .cfa -16 + ^
+STACK CFI 74fe8 .cfa: $rsp 32 +
+STACK CFI INIT 75040 3f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 75080 7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 75090 33 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 750d0 87 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 750d1 .cfa: $rsp 16 +
+STACK CFI 750da .cfa: $rsp 32 +
+STACK CFI 750de $rbx: .cfa -16 + ^
+STACK CFI INIT 75160 22 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 75190 8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 751a0 6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 751b0 8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 751c0 3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 751d0 6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 751e0 2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 751f0 8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 75200 3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 75210 5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 75220 4 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 75230 4e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 75280 44 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 752d0 20 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 136300 60 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 136304 .cfa: $rsp 16 +
+STACK CFI INIT 752f0 74 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 752fd $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI 75301 .cfa: $rsp 48 +
+STACK CFI INIT 75370 7c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 75371 .cfa: $rsp 16 +
+STACK CFI 75374 $rbx: .cfa -16 + ^
+STACK CFI INIT 753f0 33 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 753f1 .cfa: $rsp 16 +
+STACK CFI 753f6 $rbx: .cfa -16 + ^
+STACK CFI INIT 75430 bf .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 75432 .cfa: $rsp 16 +
+STACK CFI 7543a $r14: .cfa -16 + ^
+STACK CFI 7543c .cfa: $rsp 24 +
+STACK CFI 7543e .cfa: $rsp 32 +
+STACK CFI 75441 $r12: .cfa -32 + ^ $r13: .cfa -24 + ^
+STACK CFI 75442 .cfa: $rsp 40 +
+STACK CFI 75445 $rbp: .cfa -40 + ^
+STACK CFI 75446 .cfa: $rsp 48 +
+STACK CFI 75449 $rbx: .cfa -48 + ^
+STACK CFI INIT 754f0 196 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 754fd $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 75518 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ .cfa: $rsp 80 +
+STACK CFI INIT 75690 15f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7569c $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 756b7 .cfa: $rsp 64 +
+STACK CFI 756c4 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT 757f0 c2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 757f1 .cfa: $rsp 16 +
+STACK CFI 757fa $rbx: .cfa -16 + ^
+STACK CFI INIT 758c0 b8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 758c1 .cfa: $rsp 16 +
+STACK CFI 758ca $rbx: .cfa -16 + ^
+STACK CFI INIT 75980 ac .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 75982 .cfa: $rsp 16 +
+STACK CFI 75985 $r14: .cfa -16 + ^
+STACK CFI 75987 .cfa: $rsp 24 +
+STACK CFI 7598a $r13: .cfa -24 + ^
+STACK CFI 7598c .cfa: $rsp 32 +
+STACK CFI 7598d .cfa: $rsp 40 +
+STACK CFI 75990 $r12: .cfa -32 + ^ $rbp: .cfa -40 + ^
+STACK CFI 75991 .cfa: $rsp 48 +
+STACK CFI 75994 $rbx: .cfa -48 + ^
+STACK CFI INIT 75a30 1d0 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 75a32 .cfa: $rsp 16 +
+STACK CFI 75a36 .cfa: $rsp 24 +
+STACK CFI 75a38 .cfa: $rsp 32 +
+STACK CFI 75a3a .cfa: $rsp 40 +
+STACK CFI 75a3b .cfa: $rsp 48 +
+STACK CFI 75a3c .cfa: $rsp 56 +
+STACK CFI 75a40 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^ .cfa: $rsp 64 +
+STACK CFI INIT 75c00 47 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 75c01 .cfa: $rsp 16 +
+STACK CFI 75c0c $rbx: .cfa -16 + ^
+STACK CFI INIT 75eb0 44 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 75f00 12 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 75f20 2b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 75f21 .cfa: $rsp 16 +
+STACK CFI 75f24 $rbx: .cfa -16 + ^
+STACK CFI INIT 75f50 15 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 75f70 1ba .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 75f89 $r12: .cfa -40 + ^ $r14: .cfa -24 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 75f97 .cfa: $rsp 80 +
+STACK CFI 75fad $r13: .cfa -32 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT 76130 197 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7613d $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI 7614b .cfa: $rsp 64 +
+STACK CFI 76153 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT 762d0 1ae .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 762dd $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 762ea $r12: .cfa -40 + ^ $r13: .cfa -32 + ^
+STACK CFI 762f8 .cfa: $rsp 80 +
+STACK CFI 76307 $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT 76480 ae .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7648d $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI 7649b .cfa: $rsp 48 +
+STACK CFI 764a4 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT 76530 1d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 76538 .cfa: $rsp 16 +
+STACK CFI 7653e $rbx: .cfa -16 + ^
+STACK CFI INIT 76550 12 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 7d1b4 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d1be .cfa: $rsp 0 +
+STACK CFI 7d1c2 .cfa: $rsp 128 +
+STACK CFI 7d1ca .cfa: $rsp -128 +
+STACK CFI INIT 7d1cf 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d1dd .cfa: $rsp 0 +
+STACK CFI 7d1e1 .cfa: $rsp 128 +
+STACK CFI 7d1e9 .cfa: $rsp -128 +
+STACK CFI INIT 7d1ee 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d1f8 .cfa: $rsp 0 +
+STACK CFI 7d1fc .cfa: $rsp 128 +
+STACK CFI 7d204 .cfa: $rsp -128 +
+STACK CFI INIT 7d209 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d217 .cfa: $rsp 0 +
+STACK CFI 7d21b .cfa: $rsp 128 +
+STACK CFI 7d223 .cfa: $rsp -128 +
+STACK CFI INIT 7d228 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d236 .cfa: $rsp 0 +
+STACK CFI 7d23a .cfa: $rsp 128 +
+STACK CFI 7d242 .cfa: $rsp -128 +
+STACK CFI INIT 7d247 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d255 .cfa: $rsp 0 +
+STACK CFI 7d259 .cfa: $rsp 128 +
+STACK CFI 7d261 .cfa: $rsp -128 +
+STACK CFI INIT 7d266 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d274 .cfa: $rsp 0 +
+STACK CFI 7d278 .cfa: $rsp 128 +
+STACK CFI 7d280 .cfa: $rsp -128 +
+STACK CFI INIT 7d285 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d293 .cfa: $rsp 0 +
+STACK CFI 7d297 .cfa: $rsp 128 +
+STACK CFI 7d29f .cfa: $rsp -128 +
+STACK CFI INIT 7d2a4 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d2b2 .cfa: $rsp 0 +
+STACK CFI 7d2b6 .cfa: $rsp 128 +
+STACK CFI 7d2be .cfa: $rsp -128 +
+STACK CFI INIT 7d2c3 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d2d1 .cfa: $rsp 0 +
+STACK CFI 7d2d5 .cfa: $rsp 128 +
+STACK CFI 7d2dd .cfa: $rsp -128 +
+STACK CFI INIT 7d2e2 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d2ec .cfa: $rsp 0 +
+STACK CFI 7d2f0 .cfa: $rsp 128 +
+STACK CFI 7d2f8 .cfa: $rsp -128 +
+STACK CFI INIT 7d2fd 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d307 .cfa: $rsp 0 +
+STACK CFI 7d30b .cfa: $rsp 128 +
+STACK CFI 7d313 .cfa: $rsp -128 +
+STACK CFI INIT 7d318 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d326 .cfa: $rsp 0 +
+STACK CFI 7d32a .cfa: $rsp 128 +
+STACK CFI 7d332 .cfa: $rsp -128 +
+STACK CFI INIT 7d337 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d345 .cfa: $rsp 0 +
+STACK CFI 7d349 .cfa: $rsp 128 +
+STACK CFI 7d351 .cfa: $rsp -128 +
+STACK CFI INIT 7d356 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d364 .cfa: $rsp 0 +
+STACK CFI 7d368 .cfa: $rsp 128 +
+STACK CFI 7d370 .cfa: $rsp -128 +
+STACK CFI INIT 7d375 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d383 .cfa: $rsp 0 +
+STACK CFI 7d387 .cfa: $rsp 128 +
+STACK CFI 7d38f .cfa: $rsp -128 +
+STACK CFI INIT 7d394 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d39e .cfa: $rsp 0 +
+STACK CFI 7d3a2 .cfa: $rsp 128 +
+STACK CFI 7d3aa .cfa: $rsp -128 +
+STACK CFI INIT 7d3af 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d3b9 .cfa: $rsp 0 +
+STACK CFI 7d3bd .cfa: $rsp 128 +
+STACK CFI 7d3c5 .cfa: $rsp -128 +
+STACK CFI INIT 7d3ca 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d3d8 .cfa: $rsp 0 +
+STACK CFI 7d3dc .cfa: $rsp 128 +
+STACK CFI 7d3e4 .cfa: $rsp -128 +
+STACK CFI INIT 7d3e9 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d3f7 .cfa: $rsp 0 +
+STACK CFI 7d3fb .cfa: $rsp 128 +
+STACK CFI 7d403 .cfa: $rsp -128 +
+STACK CFI INIT 7d408 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d412 .cfa: $rsp 0 +
+STACK CFI 7d416 .cfa: $rsp 128 +
+STACK CFI 7d41e .cfa: $rsp -128 +
+STACK CFI INIT 7d423 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d431 .cfa: $rsp 0 +
+STACK CFI 7d435 .cfa: $rsp 128 +
+STACK CFI 7d43d .cfa: $rsp -128 +
+STACK CFI INIT 7d442 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d450 .cfa: $rsp 0 +
+STACK CFI 7d454 .cfa: $rsp 128 +
+STACK CFI 7d45c .cfa: $rsp -128 +
+STACK CFI INIT 7d461 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d46f .cfa: $rsp 0 +
+STACK CFI 7d473 .cfa: $rsp 128 +
+STACK CFI 7d47b .cfa: $rsp -128 +
+STACK CFI INIT 7d480 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d48e .cfa: $rsp 0 +
+STACK CFI 7d492 .cfa: $rsp 128 +
+STACK CFI 7d49a .cfa: $rsp -128 +
+STACK CFI INIT 7d49f 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d4ad .cfa: $rsp 0 +
+STACK CFI 7d4b1 .cfa: $rsp 128 +
+STACK CFI 7d4b9 .cfa: $rsp -128 +
+STACK CFI INIT 7d4be 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d4cc .cfa: $rsp 0 +
+STACK CFI 7d4d0 .cfa: $rsp 128 +
+STACK CFI 7d4d8 .cfa: $rsp -128 +
+STACK CFI INIT 7d4dd 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d4e7 .cfa: $rsp 0 +
+STACK CFI 7d4eb .cfa: $rsp 128 +
+STACK CFI 7d4f3 .cfa: $rsp -128 +
+STACK CFI INIT 7d4f8 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d502 .cfa: $rsp 0 +
+STACK CFI 7d506 .cfa: $rsp 128 +
+STACK CFI 7d50e .cfa: $rsp -128 +
+STACK CFI INIT 7d513 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d51d .cfa: $rsp 0 +
+STACK CFI 7d521 .cfa: $rsp 128 +
+STACK CFI 7d529 .cfa: $rsp -128 +
+STACK CFI INIT 7d52e 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d53c .cfa: $rsp 0 +
+STACK CFI 7d540 .cfa: $rsp 128 +
+STACK CFI 7d548 .cfa: $rsp -128 +
+STACK CFI INIT 7d54d 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d55b .cfa: $rsp 0 +
+STACK CFI 7d55f .cfa: $rsp 128 +
+STACK CFI 7d567 .cfa: $rsp -128 +
+STACK CFI INIT 7d56c 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d576 .cfa: $rsp 0 +
+STACK CFI 7d57a .cfa: $rsp 128 +
+STACK CFI 7d582 .cfa: $rsp -128 +
+STACK CFI INIT 7d587 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d595 .cfa: $rsp 0 +
+STACK CFI 7d599 .cfa: $rsp 128 +
+STACK CFI 7d5a1 .cfa: $rsp -128 +
+STACK CFI INIT 7d5a6 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d5b0 .cfa: $rsp 0 +
+STACK CFI 7d5b4 .cfa: $rsp 128 +
+STACK CFI 7d5bc .cfa: $rsp -128 +
+STACK CFI INIT 7d5c1 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d5cb .cfa: $rsp 0 +
+STACK CFI 7d5cf .cfa: $rsp 128 +
+STACK CFI 7d5d7 .cfa: $rsp -128 +
+STACK CFI INIT 7d5dc 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d5ea .cfa: $rsp 0 +
+STACK CFI 7d5ee .cfa: $rsp 128 +
+STACK CFI 7d5f6 .cfa: $rsp -128 +
+STACK CFI INIT 7d5fb 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d609 .cfa: $rsp 0 +
+STACK CFI 7d60d .cfa: $rsp 128 +
+STACK CFI 7d615 .cfa: $rsp -128 +
+STACK CFI INIT 7d61a 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d624 .cfa: $rsp 0 +
+STACK CFI 7d628 .cfa: $rsp 128 +
+STACK CFI 7d630 .cfa: $rsp -128 +
+STACK CFI INIT 7d635 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d63f .cfa: $rsp 0 +
+STACK CFI 7d643 .cfa: $rsp 128 +
+STACK CFI 7d64b .cfa: $rsp -128 +
+STACK CFI INIT 7d650 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d65e .cfa: $rsp 0 +
+STACK CFI 7d662 .cfa: $rsp 128 +
+STACK CFI 7d66a .cfa: $rsp -128 +
+STACK CFI INIT 7d66f 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d67d .cfa: $rsp 0 +
+STACK CFI 7d681 .cfa: $rsp 128 +
+STACK CFI 7d689 .cfa: $rsp -128 +
+STACK CFI INIT 7d68e 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d698 .cfa: $rsp 0 +
+STACK CFI 7d69c .cfa: $rsp 128 +
+STACK CFI 7d6a4 .cfa: $rsp -128 +
+STACK CFI INIT 7d6a9 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d6b3 .cfa: $rsp 0 +
+STACK CFI 7d6b7 .cfa: $rsp 128 +
+STACK CFI 7d6bf .cfa: $rsp -128 +
+STACK CFI INIT 7d6c4 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d6ce .cfa: $rsp 0 +
+STACK CFI 7d6d2 .cfa: $rsp 128 +
+STACK CFI 7d6da .cfa: $rsp -128 +
+STACK CFI INIT 7d6df 1c .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d6ea .cfa: $rsp 0 +
+STACK CFI 7d6ee .cfa: $rsp 128 +
+STACK CFI 7d6f6 .cfa: $rsp -128 +
+STACK CFI INIT 7d6fb 1c .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d706 .cfa: $rsp 0 +
+STACK CFI 7d70a .cfa: $rsp 128 +
+STACK CFI 7d712 .cfa: $rsp -128 +
+STACK CFI INIT 7d717 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d725 .cfa: $rsp 0 +
+STACK CFI 7d729 .cfa: $rsp 128 +
+STACK CFI 7d731 .cfa: $rsp -128 +
+STACK CFI INIT 7d736 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d744 .cfa: $rsp 0 +
+STACK CFI 7d748 .cfa: $rsp 128 +
+STACK CFI 7d750 .cfa: $rsp -128 +
+STACK CFI INIT 7d755 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d763 .cfa: $rsp 0 +
+STACK CFI 7d767 .cfa: $rsp 128 +
+STACK CFI 7d76f .cfa: $rsp -128 +
+STACK CFI INIT 7d774 1c .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d77f .cfa: $rsp 0 +
+STACK CFI 7d783 .cfa: $rsp 128 +
+STACK CFI 7d78b .cfa: $rsp -128 +
+STACK CFI INIT 7d790 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d79e .cfa: $rsp 0 +
+STACK CFI 7d7a2 .cfa: $rsp 128 +
+STACK CFI 7d7aa .cfa: $rsp -128 +
+STACK CFI INIT 7d7af 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d7bd .cfa: $rsp 0 +
+STACK CFI 7d7c1 .cfa: $rsp 128 +
+STACK CFI 7d7c9 .cfa: $rsp -128 +
+STACK CFI INIT 7d7ce 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d7dc .cfa: $rsp 0 +
+STACK CFI 7d7e0 .cfa: $rsp 128 +
+STACK CFI 7d7e8 .cfa: $rsp -128 +
+STACK CFI INIT 7d7ed 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d7fb .cfa: $rsp 0 +
+STACK CFI 7d7ff .cfa: $rsp 128 +
+STACK CFI 7d807 .cfa: $rsp -128 +
+STACK CFI INIT 7d80c 1c .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d817 .cfa: $rsp 0 +
+STACK CFI 7d81b .cfa: $rsp 128 +
+STACK CFI 7d823 .cfa: $rsp -128 +
+STACK CFI INIT 7d828 1c .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d833 .cfa: $rsp 0 +
+STACK CFI 7d837 .cfa: $rsp 128 +
+STACK CFI 7d83f .cfa: $rsp -128 +
+STACK CFI INIT 7d844 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d852 .cfa: $rsp 0 +
+STACK CFI 7d856 .cfa: $rsp 128 +
+STACK CFI 7d85e .cfa: $rsp -128 +
+STACK CFI INIT 7d863 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d871 .cfa: $rsp 0 +
+STACK CFI 7d875 .cfa: $rsp 128 +
+STACK CFI 7d87d .cfa: $rsp -128 +
+STACK CFI INIT 7d882 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d890 .cfa: $rsp 0 +
+STACK CFI 7d894 .cfa: $rsp 128 +
+STACK CFI 7d89c .cfa: $rsp -128 +
+STACK CFI INIT 7d8a1 1c .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d8ac .cfa: $rsp 0 +
+STACK CFI 7d8b0 .cfa: $rsp 128 +
+STACK CFI 7d8b8 .cfa: $rsp -128 +
+STACK CFI INIT 7d8bd 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d8c7 .cfa: $rsp 0 +
+STACK CFI 7d8cb .cfa: $rsp 128 +
+STACK CFI 7d8d3 .cfa: $rsp -128 +
+STACK CFI INIT 7d8d8 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d8e2 .cfa: $rsp 0 +
+STACK CFI 7d8e6 .cfa: $rsp 128 +
+STACK CFI 7d8ee .cfa: $rsp -128 +
+STACK CFI INIT 7d8f3 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d8fd .cfa: $rsp 0 +
+STACK CFI 7d901 .cfa: $rsp 128 +
+STACK CFI 7d909 .cfa: $rsp -128 +
+STACK CFI INIT 7d90e 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d918 .cfa: $rsp 0 +
+STACK CFI 7d91c .cfa: $rsp 128 +
+STACK CFI 7d924 .cfa: $rsp -128 +
+STACK CFI INIT 7d929 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d933 .cfa: $rsp 0 +
+STACK CFI 7d937 .cfa: $rsp 128 +
+STACK CFI 7d93f .cfa: $rsp -128 +
+STACK CFI INIT 7d944 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d94e .cfa: $rsp 0 +
+STACK CFI 7d952 .cfa: $rsp 128 +
+STACK CFI 7d95a .cfa: $rsp -128 +
+STACK CFI INIT 7d95f 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d96d .cfa: $rsp 0 +
+STACK CFI 7d971 .cfa: $rsp 128 +
+STACK CFI 7d979 .cfa: $rsp -128 +
+STACK CFI INIT 7d97e 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d98c .cfa: $rsp 0 +
+STACK CFI 7d990 .cfa: $rsp 128 +
+STACK CFI 7d998 .cfa: $rsp -128 +
+STACK CFI INIT 7d99d 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d9ab .cfa: $rsp 0 +
+STACK CFI 7d9af .cfa: $rsp 128 +
+STACK CFI 7d9b7 .cfa: $rsp -128 +
+STACK CFI INIT 7d9bc 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7d9ca .cfa: $rsp 0 +
+STACK CFI 7d9ce .cfa: $rsp 128 +
+STACK CFI 7d9d6 .cfa: $rsp -128 +
+STACK CFI INIT 76570 11b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 76577 .cfa: $rsp 16 +
+STACK CFI 7657f $rbx: .cfa -16 + ^
+STACK CFI INIT 76690 b6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 76750 78 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 767d0 3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 767e0 6b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 76850 9a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 768f0 31 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 76930 ca .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7693d $r14: .cfa -16 + ^ $rbp: .cfa -40 + ^
+STACK CFI 76950 .cfa: $rsp 48 +
+STACK CFI 76958 $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $rbx: .cfa -48 + ^
+STACK CFI INIT 76a00 2b8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 76a0e .cfa: $rsp 48 +
+STACK CFI 76a18 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 76cc0 e0 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 76cc7 $rbp: .cfa -24 + ^
+STACK CFI 76cd7 .cfa: $rsp 64 +
+STACK CFI 76cdd $r12: .cfa -16 + ^ $rbx: .cfa -32 + ^
+STACK CFI INIT 76da0 169 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 76db8 .cfa: $rsp 48 +
+STACK CFI 76dbf $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI INIT 76f10 7c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 76f14 .cfa: $rsp 48 +
+STACK CFI INIT 76f90 463 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 76f92 .cfa: $rsp 16 +
+STACK CFI 76f97 .cfa: $rsp 24 +
+STACK CFI 76f99 .cfa: $rsp 32 +
+STACK CFI 76f9b .cfa: $rsp 40 +
+STACK CFI 76f9c .cfa: $rsp 48 +
+STACK CFI 76f9d .cfa: $rsp 56 +
+STACK CFI 76fa1 .cfa: $rsp 96 +
+STACK CFI 76faf $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 77400 19a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 77401 .cfa: $rsp 16 +
+STACK CFI 77403 $rbp: .cfa -16 + ^
+STACK CFI 77404 .cfa: $rsp 24 +
+STACK CFI 77406 $rbx: .cfa -24 + ^
+STACK CFI 7740a .cfa: $rsp 32 +
+STACK CFI INIT 775a0 3e3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 775a2 .cfa: $rsp 16 +
+STACK CFI 775a4 .cfa: $rsp 24 +
+STACK CFI 775a5 .cfa: $rsp 32 +
+STACK CFI 775a6 .cfa: $rsp 40 +
+STACK CFI 775aa .cfa: $rsp 96 +
+STACK CFI 775b6 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI INIT 77990 5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 779a0 10b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 779a1 .cfa: $rsp 16 +
+STACK CFI 779a5 .cfa: $rsp 24 +
+STACK CFI 779a9 .cfa: $rsp 48 +
+STACK CFI 779b6 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 77ab0 87 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 77ab1 .cfa: $rsp 16 +
+STACK CFI 77ab4 $rbx: .cfa -16 + ^
+STACK CFI 77ab8 .cfa: $rsp 64 +
+STACK CFI INIT 77b40 513 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 77b4d $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 77b65 .cfa: $rsp 64 +
+STACK CFI 77b6f $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT 78060 c5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 78061 .cfa: $rsp 16 +
+STACK CFI 78062 .cfa: $rsp 24 +
+STACK CFI 78065 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI 78069 .cfa: $rsp 32 +
+STACK CFI INIT 78130 913 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 78132 .cfa: $rsp 16 +
+STACK CFI 78134 .cfa: $rsp 24 +
+STACK CFI 78136 .cfa: $rsp 32 +
+STACK CFI 78138 .cfa: $rsp 40 +
+STACK CFI 7813b $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI 7813c .cfa: $rsp 48 +
+STACK CFI 7813d .cfa: $rsp 56 +
+STACK CFI 78140 $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 78144 .cfa: $rsp 112 +
+STACK CFI INIT 78a50 b9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 78a54 .cfa: $rsp 16 +
+STACK CFI 78a56 $rbx: .cfa -16 + ^
+STACK CFI INIT 78b10 ea .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 78b14 .cfa: $rsp 16 +
+STACK CFI 78b17 $rbx: .cfa -16 + ^
+STACK CFI INIT 78c00 2be .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 78c02 .cfa: $rsp 16 +
+STACK CFI 78c04 .cfa: $rsp 24 +
+STACK CFI 78c06 .cfa: $rsp 32 +
+STACK CFI 78c08 .cfa: $rsp 40 +
+STACK CFI 78c09 .cfa: $rsp 48 +
+STACK CFI 78c0a .cfa: $rsp 56 +
+STACK CFI 78c0e .cfa: $rsp 112 +
+STACK CFI 78c20 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 78ec0 1d5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 78ecd $r12: .cfa -24 + ^ $rbx: .cfa -40 + ^
+STACK CFI 78ee1 $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^ .cfa: $rsp 48 +
+STACK CFI INIT 790a0 299 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 790a4 .cfa: $rsp 16 +
+STACK CFI 790aa $rbx: .cfa -16 + ^
+STACK CFI INIT 79340 13ef .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 79342 .cfa: $rsp 16 +
+STACK CFI 79344 .cfa: $rsp 24 +
+STACK CFI 79346 .cfa: $rsp 32 +
+STACK CFI 79348 .cfa: $rsp 40 +
+STACK CFI 79349 .cfa: $rsp 48 +
+STACK CFI 7934c $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^
+STACK CFI 7934d .cfa: $rsp 56 +
+STACK CFI 79351 .cfa: $rsp 144 +
+STACK CFI 79360 $rbx: .cfa -56 + ^
+STACK CFI INIT 7a730 9a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7a735 .cfa: $rsp 16 +
+STACK CFI 7a738 $rbx: .cfa -16 + ^
+STACK CFI INIT 7a7d0 29b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7a7dd $r14: .cfa -24 + ^ $rbp: .cfa -48 + ^
+STACK CFI 7a7f8 .cfa: $rsp 64 +
+STACK CFI 7a802 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r15: .cfa -16 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 7aa70 123 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7aa7d $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 7aa86 .cfa: $rsp 32 +
+STACK CFI 7aa93 $r12: .cfa -16 + ^
+STACK CFI INIT 7aba0 3e7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7aba2 .cfa: $rsp 16 +
+STACK CFI 7aba5 $r15: .cfa -16 + ^
+STACK CFI 7abae .cfa: $rsp 24 +
+STACK CFI 7abb1 $r14: .cfa -24 + ^
+STACK CFI 7abb3 .cfa: $rsp 32 +
+STACK CFI 7abb5 .cfa: $rsp 40 +
+STACK CFI 7abb6 .cfa: $rsp 48 +
+STACK CFI 7abb7 .cfa: $rsp 56 +
+STACK CFI 7abbe .cfa: $rsp 4480 +
+STACK CFI 7abcf $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 7af90 11f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7af92 .cfa: $rsp 16 +
+STACK CFI 7af98 .cfa: $rsp 24 +
+STACK CFI 7af99 .cfa: $rsp 32 +
+STACK CFI 7af9d .cfa: $rsp 144 +
+STACK CFI 7afa5 $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI INIT 7b0b0 453 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7b0c0 $r13: .cfa -32 + ^
+STACK CFI 7b0e0 .cfa: $rsp 64 +
+STACK CFI 7b0ed $r12: .cfa -40 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 7b510 2a3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7b51d $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^
+STACK CFI 7b535 .cfa: $rsp 64 +
+STACK CFI 7b543 $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 7b7c0 273 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7b7cd $r12: .cfa -32 + ^ $rbx: .cfa -48 + ^
+STACK CFI 7b7e0 .cfa: $rsp 48 +
+STACK CFI 7b7f0 $r13: .cfa -24 + ^ $r14: .cfa -16 + ^ $rbp: .cfa -40 + ^
+STACK CFI INIT 7ba40 d3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7ba48 .cfa: $rsp 16 +
+STACK CFI 7ba54 $rbx: .cfa -16 + ^
+STACK CFI INIT 7bb20 257 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7bb2d $r12: .cfa -24 + ^ $rbx: .cfa -40 + ^
+STACK CFI 7bb3b .cfa: $rsp 48 +
+STACK CFI 7bb4e $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^
+STACK CFI INIT 7bd80 b9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7bd88 .cfa: $rsp 16 +
+STACK CFI 7bd8b $rbx: .cfa -16 + ^
+STACK CFI INIT 7be40 20 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7be48 .cfa: $rsp 16 +
+STACK CFI 7be4b $rbx: .cfa -16 + ^
+STACK CFI INIT 7be60 1c5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7be61 .cfa: $rsp 16 +
+STACK CFI 7be66 $rbx: .cfa -16 + ^
+STACK CFI INIT 7c030 29f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7c03d $r12: .cfa -32 + ^ $rbx: .cfa -48 + ^
+STACK CFI 7c053 .cfa: $rsp 48 +
+STACK CFI 7c066 $r13: .cfa -24 + ^ $r14: .cfa -16 + ^ $rbp: .cfa -40 + ^
+STACK CFI INIT 7c2d0 40 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7c2de .cfa: $rsp 32 +
+STACK CFI 7c2e8 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 7c310 63 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7c311 .cfa: $rsp 16 +
+STACK CFI 7c314 $rbx: .cfa -16 + ^
+STACK CFI INIT 7c380 1ba .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7c382 .cfa: $rsp 16 +
+STACK CFI 7c384 .cfa: $rsp 24 +
+STACK CFI 7c386 .cfa: $rsp 32 +
+STACK CFI 7c388 .cfa: $rsp 40 +
+STACK CFI 7c389 .cfa: $rsp 48 +
+STACK CFI 7c38a .cfa: $rsp 56 +
+STACK CFI 7c38e .cfa: $rsp 144 +
+STACK CFI 7c39c $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 7c540 471 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7c54d $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 7c55a $r13: .cfa -32 + ^ $r14: .cfa -24 + ^
+STACK CFI 7c568 .cfa: $rsp 64 +
+STACK CFI 7c57c $r12: .cfa -40 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT 7c9c0 1a4 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7c9cd $r13: .cfa -32 + ^ $r14: .cfa -24 + ^
+STACK CFI 7c9da $r15: .cfa -16 + ^ $rbx: .cfa -56 + ^
+STACK CFI 7c9e8 .cfa: $rsp 64 +
+STACK CFI 7c9f3 $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^
+STACK CFI INIT 7cb70 340 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7cb7d $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^
+STACK CFI 7cb98 .cfa: $rsp 64 +
+STACK CFI 7cbab $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 7ceb0 4e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7cebe .cfa: $rsp 32 +
+STACK CFI 7cec8 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 7cf00 2b4 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7cf0d $r12: .cfa -40 + ^ $rbx: .cfa -56 + ^
+STACK CFI 7cf28 .cfa: $rsp 112 +
+STACK CFI 7cf32 $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^
+STACK CFI INIT 7d9e0 1b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7d9e4 .cfa: $rsp 16 +
+STACK CFI INIT 7da00 90 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7da04 .cfa: $rsp 32 +
+STACK CFI INIT 7da90 3d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7da91 .cfa: $rsp 16 +
+STACK CFI 7da98 $rbx: .cfa -16 + ^
+STACK CFI INIT 7dad0 19 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 7daf0 d6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7daf4 .cfa: $rsp 16 +
+STACK CFI INIT 7dbd0 1c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7dbd4 .cfa: $rsp 16 +
+STACK CFI INIT 7dbf0 116 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7dbf1 .cfa: $rsp 16 +
+STACK CFI 7dbf4 $rbp: .cfa -16 + ^
+STACK CFI 7dbf5 .cfa: $rsp 24 +
+STACK CFI 7dbf9 .cfa: $rsp 48 +
+STACK CFI 7dc09 $rbx: .cfa -24 + ^
+STACK CFI INIT 7dd10 12c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7dd1d $r12: .cfa -16 + ^ $rbx: .cfa -32 + ^
+STACK CFI 7dd26 .cfa: $rsp 32 +
+STACK CFI 7dd37 $rbp: .cfa -24 + ^
+STACK CFI INIT 7de40 28f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7de4d $r13: .cfa -32 + ^ $rbx: .cfa -56 + ^
+STACK CFI 7de5a $r14: .cfa -24 + ^ $rbp: .cfa -48 + ^
+STACK CFI 7de68 .cfa: $rsp 80 +
+STACK CFI 7de74 $r12: .cfa -40 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT 7e0d0 14f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7e0dd $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 7e0e6 .cfa: $rsp 48 +
+STACK CFI 7e0f4 $r12: .cfa -16 + ^
+STACK CFI INIT 7e220 c5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7e224 .cfa: $rsp 16 +
+STACK CFI INIT 7ebb0 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7ebbe .cfa: $rsp 0 +
+STACK CFI 7ebc2 .cfa: $rsp 128 +
+STACK CFI 7ebca .cfa: $rsp -128 +
+STACK CFI INIT 7ebcf 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7ebdd .cfa: $rsp 0 +
+STACK CFI 7ebe1 .cfa: $rsp 128 +
+STACK CFI 7ebe9 .cfa: $rsp -128 +
+STACK CFI INIT 7ebee 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7ebfc .cfa: $rsp 0 +
+STACK CFI 7ec00 .cfa: $rsp 128 +
+STACK CFI 7ec08 .cfa: $rsp -128 +
+STACK CFI INIT 7ec0d 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7ec1b .cfa: $rsp 0 +
+STACK CFI 7ec1f .cfa: $rsp 128 +
+STACK CFI 7ec27 .cfa: $rsp -128 +
+STACK CFI INIT 7ec2c 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7ec3a .cfa: $rsp 0 +
+STACK CFI 7ec3e .cfa: $rsp 128 +
+STACK CFI 7ec46 .cfa: $rsp -128 +
+STACK CFI INIT 7ec4b 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7ec59 .cfa: $rsp 0 +
+STACK CFI 7ec5d .cfa: $rsp 128 +
+STACK CFI 7ec65 .cfa: $rsp -128 +
+STACK CFI INIT 7ec6a 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7ec78 .cfa: $rsp 0 +
+STACK CFI 7ec7c .cfa: $rsp 128 +
+STACK CFI 7ec84 .cfa: $rsp -128 +
+STACK CFI INIT 7ec89 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7ec97 .cfa: $rsp 0 +
+STACK CFI 7ec9b .cfa: $rsp 128 +
+STACK CFI 7eca3 .cfa: $rsp -128 +
+STACK CFI INIT 7eca8 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7ecb6 .cfa: $rsp 0 +
+STACK CFI 7ecba .cfa: $rsp 128 +
+STACK CFI 7ecc2 .cfa: $rsp -128 +
+STACK CFI INIT 7ecc7 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 7ecd5 .cfa: $rsp 0 +
+STACK CFI 7ecd9 .cfa: $rsp 128 +
+STACK CFI 7ece1 .cfa: $rsp -128 +
+STACK CFI INIT 7e2f0 2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 7e300 86 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7e304 .cfa: $rsp 16 +
+STACK CFI INIT 7e390 1aa .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7e39e .cfa: $rsp 32 +
+STACK CFI 7e3a8 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 136360 12 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 7e540 12c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7e541 .cfa: $rsp 16 +
+STACK CFI 7e544 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 7e54f $r12: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI 7e560 $r13: .cfa -24 + ^
+STACK CFI INIT 7e670 123 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7e67d $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI 7e692 $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^
+STACK CFI 7e696 .cfa: $rsp 48 +
+STACK CFI INIT 7e7a0 ed .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7e7ad $r12: .cfa -24 + ^ $rbp: .cfa -32 + ^
+STACK CFI 7e7be .cfa: $rsp 48 +
+STACK CFI 7e7f9 $r13: .cfa -16 + ^ $rbx: .cfa -40 + ^
+STACK CFI INIT 7e890 142 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7e89d $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI 7e8ab .cfa: $rsp 48 +
+STACK CFI 7e8b7 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT 7e9e0 1d0 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7e9ed $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^
+STACK CFI 7e9fa $r13: .cfa -32 + ^ $rbx: .cfa -56 + ^
+STACK CFI 7ea0b .cfa: $rsp 80 +
+STACK CFI 7ea4d $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT 7ecf0 bd .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7ecfd $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 7ed06 .cfa: $rsp 48 +
+STACK CFI 7ed15 $r12: .cfa -16 + ^
+STACK CFI INIT 7edb0 b5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7edb2 .cfa: $rsp 16 +
+STACK CFI 7edb8 $r12: .cfa -16 + ^
+STACK CFI 7edb9 .cfa: $rsp 24 +
+STACK CFI 7edc0 $rbp: .cfa -24 + ^
+STACK CFI 7edc1 .cfa: $rsp 32 +
+STACK CFI 7edc4 $rbx: .cfa -32 + ^
+STACK CFI 7edcd .cfa: $rsp 48 +
+STACK CFI INIT 7ee70 182 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7ee72 .cfa: $rsp 16 +
+STACK CFI 7ee77 .cfa: $rsp 24 +
+STACK CFI 7ee78 .cfa: $rsp 32 +
+STACK CFI 7ee79 .cfa: $rsp 40 +
+STACK CFI 7ee7c $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI 7ee80 .cfa: $rsp 64 +
+STACK CFI INIT 7f000 36 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 7f040 1f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 7f060 3d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7f072 .cfa: $rsp 16 +
+STACK CFI INIT 7f0a0 7d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7f0a2 .cfa: $rsp 16 +
+STACK CFI 7f0a5 $r12: .cfa -16 + ^
+STACK CFI 7f0a6 .cfa: $rsp 24 +
+STACK CFI 7f0a7 .cfa: $rsp 32 +
+STACK CFI 7f0ae $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI INIT 136380 78 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 136381 .cfa: $rsp 16 +
+STACK CFI 136389 .cfa: $rsp 24 +
+STACK CFI 13638d .cfa: $rsp 32 +
+STACK CFI 136398 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 136990 32 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 136991 .cfa: $rsp 16 +
+STACK CFI 136998 $rbp: .cfa -16 + ^
+STACK CFI 136999 .cfa: $rsp 24 +
+STACK CFI 1369a0 $rbx: .cfa -24 + ^
+STACK CFI 1369a4 .cfa: $rsp 32 +
+STACK CFI INIT 7f120 1bc .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 7f2e0 29 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 112020 a5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 7f310 7c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 7f390 3c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 1120d0 e99 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 7f3d0 1439 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 80810 10 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 80820 29 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 119ca0 a0f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 80850 dc .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 80930 29 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 80960 97 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8096d .cfa: $rsp 264 +
+STACK CFI 809f3 .cfa: $rsp 8 +
+STACK CFI INIT 80a00 118 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 80b20 57 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 80b2e .cfa: $rsp 32 +
+STACK CFI 80b31 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 80b80 61 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 80b8e .cfa: $rsp 32 +
+STACK CFI 80b91 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 80bf0 b9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 80c07 .cfa: $rsp 32 +
+STACK CFI 80c09 $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI INIT 80cb0 11a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 80cbd $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 80cd8 .cfa: $rsp 96 +
+STACK CFI 80cdc $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT 80dd0 3d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 80e10 dd .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 80ef0 6d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 80f60 99 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 81000 3c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 112f70 11b9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 81040 1849 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 82890 29 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 11a6c0 f6b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 828c0 29 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 114130 19a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 828f0 9f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 82990 29 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 829c0 9c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 829cd .cfa: $rsp 264 +
+STACK CFI 82a53 .cfa: $rsp 8 +
+STACK CFI INIT 82a60 55 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 82a64 .cfa: $rsp 16 +
+STACK CFI INIT 82ac0 20a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 82acc $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 82ad5 .cfa: $rsp 32 +
+STACK CFI 82ae3 $r12: .cfa -16 + ^
+STACK CFI INIT 82cd0 42 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 82cd4 .cfa: $rsp 16 +
+STACK CFI INIT 82d20 29 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 82d50 97 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 82d5d .cfa: $rsp 264 +
+STACK CFI 82de3 .cfa: $rsp 8 +
+STACK CFI INIT 1142d0 675 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1142d2 .cfa: $rsp 16 +
+STACK CFI 1142da .cfa: $rsp 24 +
+STACK CFI 1142dc .cfa: $rsp 32 +
+STACK CFI 1142e0 .cfa: $rsp 40 +
+STACK CFI 1142e1 .cfa: $rsp 48 +
+STACK CFI 1142e2 .cfa: $rsp 56 +
+STACK CFI 1142e8 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 82df0 f1 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 82dfa .cfa: $rsp 264 +
+STACK CFI 82ed5 .cfa: $rsp 8 +
+STACK CFI INIT 82ef0 eb .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 82efa .cfa: $rsp 264 +
+STACK CFI 82fd3 .cfa: $rsp 8 +
+STACK CFI INIT 82fe0 10 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 82ff0 75 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 83070 29 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 830a0 400 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 834a0 47 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 834a4 .cfa: $rsp 16 +
+STACK CFI INIT 834f0 197 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 834f2 .cfa: $rsp 16 +
+STACK CFI 834fa .cfa: $rsp 24 +
+STACK CFI 83500 $r13: .cfa -24 + ^ $r14: .cfa -16 + ^
+STACK CFI 83502 .cfa: $rsp 32 +
+STACK CFI 83505 $r12: .cfa -32 + ^
+STACK CFI 83506 .cfa: $rsp 40 +
+STACK CFI 83507 .cfa: $rsp 48 +
+STACK CFI 8350a $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI INIT 83690 29 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 836c0 9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 836d0 b10 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 841e0 3c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 84220 9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 84230 452 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 843c4 $r14: .cfa -16 + ^
+STACK CFI 843c9 $r13: .cfa -24 + ^
+STACK CFI 843ce $r12: .cfa -32 + ^
+STACK CFI 843d3 $rbx: .cfa -40 + ^
+STACK CFI 8455b $rbx: $rbx
+STACK CFI 84560 $r12: $r12
+STACK CFI 84565 $r13: $r13
+STACK CFI 8456a $r14: $r14
+STACK CFI 845a2 $r14: .cfa -16 + ^
+STACK CFI 845a7 $r13: .cfa -24 + ^
+STACK CFI 845ac $r12: .cfa -32 + ^
+STACK CFI 8466b $r12: $r12
+STACK CFI 84670 $r13: $r13
+STACK CFI 84675 $r14: $r14
+STACK CFI INIT 84690 8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 846a0 29 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 846c9 a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 846d3 a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 846e0 f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 846f0 11 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 84710 29 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 11b640 b03 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 84740 dc .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 84820 29 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 11c160 10d6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 84850 3c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 84890 3c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 114950 10 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 114960 1c86 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 848d0 10 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 848e0 2226 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 86b10 3c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 86b50 3c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 1165f0 10 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 116600 2096 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 86b90 10 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 86ba0 2636 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 891e0 33 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 89220 3c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 89260 9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 89270 465 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 89414 $r14: .cfa -24 + ^
+STACK CFI 89419 $r13: .cfa -32 + ^
+STACK CFI 8941e $r12: .cfa -40 + ^
+STACK CFI 89423 $rbx: .cfa -48 + ^
+STACK CFI 895ab $rbx: $rbx
+STACK CFI 895b0 $r12: $r12
+STACK CFI 895b5 $r13: $r13
+STACK CFI 895ba $r14: $r14
+STACK CFI 895f2 $r14: .cfa -24 + ^
+STACK CFI 895f7 $r13: .cfa -32 + ^
+STACK CFI 895fc $r12: .cfa -40 + ^
+STACK CFI 896bb $r12: $r12
+STACK CFI 896c0 $r13: $r13
+STACK CFI 896c5 $r14: $r14
+STACK CFI INIT 896e0 135 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 89820 126 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 89827 .cfa: $rsp 16 +
+STACK CFI 8983c .cfa: $rsp 24 +
+STACK CFI 89849 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 89950 18b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 89ae0 17b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 89b1b $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI INIT 89c60 86 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 89c6e .cfa: $rsp 32 +
+STACK CFI 89c71 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 1186a0 89b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1186a2 .cfa: $rsp 16 +
+STACK CFI 1186aa .cfa: $rsp 24 +
+STACK CFI 1186ac .cfa: $rsp 32 +
+STACK CFI 1186b0 .cfa: $rsp 40 +
+STACK CFI 1186b1 .cfa: $rsp 48 +
+STACK CFI 1186b2 .cfa: $rsp 56 +
+STACK CFI 1186b8 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 89cf0 35 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 89d30 dd .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 89d32 .cfa: $rsp 16 +
+STACK CFI 89d34 .cfa: $rsp 24 +
+STACK CFI 89d36 .cfa: $rsp 32 +
+STACK CFI 89d37 .cfa: $rsp 40 +
+STACK CFI 89d38 .cfa: $rsp 48 +
+STACK CFI 89d3b $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^ $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI 89d3f .cfa: $rsp 64 +
+STACK CFI INIT 89e10 1f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 89e30 f9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 89e31 .cfa: $rsp 16 +
+STACK CFI 89e42 .cfa: $rsp 24 +
+STACK CFI 89e47 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 89f30 341 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 89f32 .cfa: $rsp 16 +
+STACK CFI 89f35 $r15: .cfa -16 + ^
+STACK CFI 89f3a .cfa: $rsp 24 +
+STACK CFI 89f3c .cfa: $rsp 32 +
+STACK CFI 89f3e .cfa: $rsp 40 +
+STACK CFI 89f41 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^
+STACK CFI 89f42 .cfa: $rsp 48 +
+STACK CFI 89f45 $rbp: .cfa -48 + ^
+STACK CFI 89f49 .cfa: $rsp 56 +
+STACK CFI 89f4c $rbx: .cfa -56 + ^
+STACK CFI 89f53 .cfa: $rsp 2176 +
+STACK CFI INIT 8a280 335 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8a28d $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 8a29a $r13: .cfa -32 + ^ $r14: .cfa -24 + ^
+STACK CFI 8a2a8 .cfa: $rsp 128 +
+STACK CFI 8a2b6 $r12: .cfa -40 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT 8a5c0 29 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 118f40 53 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 8a5f0 4c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 8a640 6f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 8a6b0 89 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8a6bd $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 8a6d7 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI 8a6db .cfa: $rsp 64 +
+STACK CFI INIT 8a740 48 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8a74d $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 8a759 .cfa: $rsp 32 +
+STACK CFI 8a75f $r12: .cfa -16 + ^
+STACK CFI INIT 8a790 39 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8a792 .cfa: $rsp 16 +
+STACK CFI 8a795 $r12: .cfa -16 + ^
+STACK CFI 8a799 .cfa: $rsp 24 +
+STACK CFI 8a79c $rbp: .cfa -24 + ^
+STACK CFI 8a79d .cfa: $rsp 32 +
+STACK CFI 8a7a0 $rbx: .cfa -32 + ^
+STACK CFI INIT 8a7d0 8f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8a7d2 .cfa: $rsp 16 +
+STACK CFI 8a7d4 .cfa: $rsp 24 +
+STACK CFI 8a7d7 $r13: .cfa -24 + ^ $r14: .cfa -16 + ^
+STACK CFI 8a7d9 .cfa: $rsp 32 +
+STACK CFI 8a7dc $r12: .cfa -32 + ^
+STACK CFI 8a7dd .cfa: $rsp 40 +
+STACK CFI 8a7de .cfa: $rsp 48 +
+STACK CFI 8a7e1 $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI INIT 8a860 103 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8a86d $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI 8a882 .cfa: $rsp 48 +
+STACK CFI 8a885 $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^
+STACK CFI INIT 8a970 41 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8a974 .cfa: $rsp 16 +
+STACK CFI 8a979 $rbx: .cfa -16 + ^
+STACK CFI INIT 8a9c0 83 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8a9cd $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 8a9d6 .cfa: $rsp 32 +
+STACK CFI 8a9dc $r12: .cfa -16 + ^
+STACK CFI INIT 8aa50 42 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8aa52 .cfa: $rsp 16 +
+STACK CFI 8aa58 $r12: .cfa -16 + ^
+STACK CFI 8aa59 .cfa: $rsp 24 +
+STACK CFI 8aa5c $rbp: .cfa -24 + ^
+STACK CFI 8aa5d .cfa: $rsp 32 +
+STACK CFI 8aa60 $rbx: .cfa -32 + ^
+STACK CFI INIT 8aaa0 162 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8aaad $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 8aac8 .cfa: $rsp 96 +
+STACK CFI 8aace $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT 8ac10 43 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8ac12 .cfa: $rsp 16 +
+STACK CFI 8ac18 $r12: .cfa -16 + ^
+STACK CFI 8ac19 .cfa: $rsp 24 +
+STACK CFI 8ac1c $rbp: .cfa -24 + ^
+STACK CFI 8ac1d .cfa: $rsp 32 +
+STACK CFI 8ac20 $rbx: .cfa -32 + ^
+STACK CFI INIT 8ac60 d6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8ac6d $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI 8ac83 .cfa: $rsp 48 +
+STACK CFI 8ac89 $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^
+STACK CFI INIT 8ad40 a3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8ad4d $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 8ad67 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI 8ad6b .cfa: $rsp 64 +
+STACK CFI INIT 8adf0 322 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8adf2 .cfa: $rsp 16 +
+STACK CFI 8adf4 .cfa: $rsp 24 +
+STACK CFI 8adf6 .cfa: $rsp 32 +
+STACK CFI 8adf8 .cfa: $rsp 40 +
+STACK CFI 8adf9 .cfa: $rsp 48 +
+STACK CFI 8adfa .cfa: $rsp 56 +
+STACK CFI 8adfd $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 8ae04 .cfa: $rsp 192 +
+STACK CFI INIT 8b120 1e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8b121 .cfa: $rsp 16 +
+STACK CFI 8b129 $rbx: .cfa -16 + ^
+STACK CFI INIT 8b140 e91 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8b141 .cfa: $rsp 16 +
+STACK CFI 8b144 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 8b149 $r15: .cfa -24 + ^
+STACK CFI 8b153 $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 8bfe0 66 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 8c050 ad3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8c051 .cfa: $rsp 16 +
+STACK CFI 8c054 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 8c05f $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI 8c063 $rbx: .cfa -56 + ^
+STACK CFI INIT 8cb30 c2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8cb31 .cfa: $rsp 16 +
+STACK CFI 8cb35 .cfa: $rsp 24 +
+STACK CFI 8cb44 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 8cc00 9e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 8cca0 9f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 8cd40 35 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 8cd80 45 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 8cdd0 4d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 8ce20 1e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 8ce40 1a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 8ce60 22 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 8ce90 42 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 8cee0 52 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 8cf40 65 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 8cfb0 64 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 8d020 6c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 8d090 4b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8d09e .cfa: $rsp 32 +
+STACK CFI 8d0a1 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 8d0e0 111 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 8d200 90 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8d20d $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 8d216 .cfa: $rsp 32 +
+STACK CFI 8d21d $r12: .cfa -16 + ^
+STACK CFI INIT 1369d0 20 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1369d4 .cfa: $rsp 16 +
+STACK CFI INIT 8d290 4d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8d29e .cfa: $rsp 32 +
+STACK CFI 8d2a1 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 8d2e0 cf .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8d2ed $r12: .cfa -16 + ^ $rbx: .cfa -32 + ^
+STACK CFI 8d2f6 .cfa: $rsp 48 +
+STACK CFI 8d2fa $rbp: .cfa -24 + ^
+STACK CFI INIT 8d3b0 91 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 8d450 33 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 8d490 71 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8d492 .cfa: $rsp 16 +
+STACK CFI 8d496 .cfa: $rsp 24 +
+STACK CFI 8d499 $r13: .cfa -24 + ^ $r14: .cfa -16 + ^
+STACK CFI 8d49b .cfa: $rsp 32 +
+STACK CFI 8d49e $r12: .cfa -32 + ^
+STACK CFI 8d49f .cfa: $rsp 40 +
+STACK CFI 8d4a0 .cfa: $rsp 48 +
+STACK CFI 8d4a3 $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI INIT 8d510 af .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8d512 .cfa: $rsp 16 +
+STACK CFI 8d517 $r15: .cfa -16 + ^
+STACK CFI 8d519 .cfa: $rsp 24 +
+STACK CFI 8d51b .cfa: $rsp 32 +
+STACK CFI 8d51e $r13: .cfa -32 + ^ $r14: .cfa -24 + ^
+STACK CFI 8d520 .cfa: $rsp 40 +
+STACK CFI 8d523 $r12: .cfa -40 + ^
+STACK CFI 8d524 .cfa: $rsp 48 +
+STACK CFI 8d527 $rbp: .cfa -48 + ^
+STACK CFI 8d528 .cfa: $rsp 56 +
+STACK CFI 8d52b $rbx: .cfa -56 + ^
+STACK CFI 8d52f .cfa: $rsp 80 +
+STACK CFI INIT 8d5c0 4f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8d5cd $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI 8d5d1 .cfa: $rsp 32 +
+STACK CFI INIT 8d610 120 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8d61d $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 8d62a $r12: .cfa -40 + ^ $r14: .cfa -24 + ^
+STACK CFI 8d638 .cfa: $rsp 96 +
+STACK CFI 8d63e $r13: .cfa -32 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT 8d730 d4 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 8d810 c2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 11d240 1259 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 11e4a0 1759 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 118fa0 3c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 134290 163e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 11fc00 9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 11fc10 29b6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 1225d0 9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 1225e0 29b6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 124fa0 9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 124fb0 2b67 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 127b20 9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 127b30 2ab6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 12a5f0 9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 12a600 2ab6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 12d0c0 9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 12d0d0 2b06 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 118fe0 87c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 118fe2 .cfa: $rsp 16 +
+STACK CFI 118fe6 .cfa: $rsp 24 +
+STACK CFI 118fe8 .cfa: $rsp 32 +
+STACK CFI 118fea .cfa: $rsp 40 +
+STACK CFI 118feb .cfa: $rsp 48 +
+STACK CFI 118fec .cfa: $rsp 56 +
+STACK CFI 118ff0 .cfa: $rsp 152 +
+STACK CFI 119000 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 12fbe0 10 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 12fbf0 2136 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 131d30 10 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 131d40 2546 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 119860 9a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 1358d0 2fc .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 8d8e0 9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 8d8f0 550 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 119900 14c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 119a50 117 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 119b70 115 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 8de40 f9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8de41 .cfa: $rsp 16 +
+STACK CFI 8de52 .cfa: $rsp 24 +
+STACK CFI 8de57 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 8df40 37 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8df44 .cfa: $rsp 16 +
+STACK CFI INIT 8df80 3f2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8df82 .cfa: $rsp 16 +
+STACK CFI 8df84 .cfa: $rsp 24 +
+STACK CFI 8df86 .cfa: $rsp 32 +
+STACK CFI 8df89 $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI 8df8b .cfa: $rsp 40 +
+STACK CFI 8df8e $r12: .cfa -40 + ^
+STACK CFI 8df92 .cfa: $rsp 48 +
+STACK CFI 8df95 $rbp: .cfa -48 + ^
+STACK CFI 8df99 .cfa: $rsp 56 +
+STACK CFI 8df9c $rbx: .cfa -56 + ^
+STACK CFI 8dfa3 .cfa: $rsp 2208 +
+STACK CFI INIT 8e380 3fe .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8e382 .cfa: $rsp 16 +
+STACK CFI 8e384 .cfa: $rsp 24 +
+STACK CFI 8e386 .cfa: $rsp 32 +
+STACK CFI 8e388 .cfa: $rsp 40 +
+STACK CFI 8e38b $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI 8e38c .cfa: $rsp 48 +
+STACK CFI 8e38d .cfa: $rsp 56 +
+STACK CFI 8e390 $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 8e394 .cfa: $rsp 144 +
+STACK CFI INIT 8e780 37 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8e784 .cfa: $rsp 16 +
+STACK CFI INIT 8e7c0 335 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8e7c2 .cfa: $rsp 16 +
+STACK CFI 8e7d4 .cfa: $rsp 24 +
+STACK CFI 8e7d6 .cfa: $rsp 32 +
+STACK CFI 8e7dc $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI 8e7de .cfa: $rsp 40 +
+STACK CFI 8e7df .cfa: $rsp 48 +
+STACK CFI 8e7e0 .cfa: $rsp 56 +
+STACK CFI 8e7f7 $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 8eb00 88f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8eb02 .cfa: $rsp 16 +
+STACK CFI 8eb04 .cfa: $rsp 24 +
+STACK CFI 8eb06 .cfa: $rsp 32 +
+STACK CFI 8eb08 .cfa: $rsp 40 +
+STACK CFI 8eb0b $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI 8eb0c .cfa: $rsp 48 +
+STACK CFI 8eb0f $rbp: .cfa -48 + ^
+STACK CFI 8eb13 .cfa: $rsp 56 +
+STACK CFI 8eb16 $rbx: .cfa -56 + ^
+STACK CFI 8eb1d .cfa: $rsp 2208 +
+STACK CFI INIT 8f390 7d2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8f392 .cfa: $rsp 16 +
+STACK CFI 8f394 .cfa: $rsp 24 +
+STACK CFI 8f397 $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI 8f399 .cfa: $rsp 32 +
+STACK CFI 8f39b .cfa: $rsp 40 +
+STACK CFI 8f39c .cfa: $rsp 48 +
+STACK CFI 8f39f $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $rbp: .cfa -48 + ^
+STACK CFI 8f3a0 .cfa: $rsp 56 +
+STACK CFI 8f3a4 .cfa: $rsp 160 +
+STACK CFI 8f3ad $rbx: .cfa -56 + ^
+STACK CFI INIT 8fb70 10 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 8fb80 1b2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8fb81 .cfa: $rsp 16 +
+STACK CFI 8fb86 $rbx: .cfa -16 + ^
+STACK CFI INIT 8fd40 292 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8fd42 .cfa: $rsp 16 +
+STACK CFI 8fd45 $r15: .cfa -16 + ^
+STACK CFI 8fd47 .cfa: $rsp 24 +
+STACK CFI 8fd4a $r14: .cfa -24 + ^
+STACK CFI 8fd4c .cfa: $rsp 32 +
+STACK CFI 8fd4f $r13: .cfa -32 + ^
+STACK CFI 8fd51 .cfa: $rsp 40 +
+STACK CFI 8fd52 .cfa: $rsp 48 +
+STACK CFI 8fd53 .cfa: $rsp 56 +
+STACK CFI 8fd55 $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 8fd59 .cfa: $rsp 80 +
+STACK CFI INIT 8ffe0 f7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8ffe2 .cfa: $rsp 16 +
+STACK CFI 8ffe6 .cfa: $rsp 24 +
+STACK CFI 8ffe8 .cfa: $rsp 32 +
+STACK CFI 8ffea .cfa: $rsp 40 +
+STACK CFI 8ffeb .cfa: $rsp 48 +
+STACK CFI 8ffed $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^
+STACK CFI 8ffee .cfa: $rsp 56 +
+STACK CFI 8fff2 .cfa: $rsp 96 +
+STACK CFI 8fffb $rbx: .cfa -56 + ^
+STACK CFI INIT 900e0 2f6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 900f3 .cfa: $rsp 32 +
+STACK CFI 900fd $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI INIT 903e0 5f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 903e4 .cfa: $rsp 32 +
+STACK CFI INIT 90440 32 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 90480 43 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 904d0 9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 904e0 66 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 90550 31 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 90590 1a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 905b0 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 905e0 29 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 90610 39 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 90612 .cfa: $rsp 16 +
+STACK CFI 90615 $r12: .cfa -16 + ^
+STACK CFI 90616 .cfa: $rsp 24 +
+STACK CFI 90619 $rbp: .cfa -24 + ^
+STACK CFI 9061a .cfa: $rsp 32 +
+STACK CFI 9061e $rbx: .cfa -32 + ^
+STACK CFI INIT 90650 5f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9065e .cfa: $rsp 32 +
+STACK CFI 90661 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 906b0 68 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 90720 8c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 907b0 b1 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 90870 d2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 90950 4c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 90951 .cfa: $rsp 16 +
+STACK CFI 90954 $rbp: .cfa -16 + ^
+STACK CFI 90955 .cfa: $rsp 24 +
+STACK CFI 90958 $rbx: .cfa -24 + ^
+STACK CFI 9095c .cfa: $rsp 32 +
+STACK CFI INIT 909a0 1a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 909c0 52 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 90a20 ad .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 90a2d $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 90a36 .cfa: $rsp 32 +
+STACK CFI 90a3f $r12: .cfa -16 + ^
+STACK CFI INIT 90ad0 10b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 90ae0 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 90be0 7b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 90c60 d5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 90d40 9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 90d50 23 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 90d80 d3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 90e60 9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 90e70 1b1 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 90e78 $r13: .cfa -16 + ^
+STACK CFI 90e95 .cfa: $rsp 144 +
+STACK CFI 90ea3 $r12: .cfa -24 + ^ $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI INIT 91030 18d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9103d $r13: .cfa -24 + ^ $rbx: .cfa -48 + ^
+STACK CFI 91053 .cfa: $rsp 176 +
+STACK CFI 9105c $r12: .cfa -32 + ^ $r14: .cfa -16 + ^ $rbp: .cfa -40 + ^
+STACK CFI INIT 911c0 14 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 911e0 1e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 91200 265 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 91211 $r13: .cfa -24 + ^ $rbx: .cfa -48 + ^
+STACK CFI 9122a .cfa: $rsp 176 +
+STACK CFI 91249 $r12: .cfa -32 + ^ $r14: .cfa -16 + ^ $rbp: .cfa -40 + ^
+STACK CFI INIT 91470 220 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 91471 .cfa: $rsp 16 +
+STACK CFI 91474 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 9147c $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $rbx: .cfa -40 + ^
+STACK CFI INIT 91690 1e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 916b0 34b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 916b2 .cfa: $rsp 16 +
+STACK CFI 916bb .cfa: $rsp 24 +
+STACK CFI 916be $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI 916c0 .cfa: $rsp 32 +
+STACK CFI 916c3 $r13: .cfa -32 + ^
+STACK CFI 916c5 .cfa: $rsp 40 +
+STACK CFI 916c6 .cfa: $rsp 48 +
+STACK CFI 916c9 $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^
+STACK CFI 916ca .cfa: $rsp 56 +
+STACK CFI 916d1 .cfa: $rsp 464 +
+STACK CFI 9171b $rbx: .cfa -56 + ^
+STACK CFI INIT 91a00 373 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 91a1e $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 91a2f .cfa: $rsp 448 +
+STACK CFI 91a44 $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT 91d80 362 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 91d9e $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 91daf .cfa: $rsp 464 +
+STACK CFI 91dc4 $r12: .cfa -40 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT 920f0 99 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 92190 28 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 921c0 12 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 921e0 10 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 921f0 12 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 92210 10 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 92220 12 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 92240 10 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 92250 12 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 92270 10 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 92280 12 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 922a0 10 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 922b0 458 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 922b2 .cfa: $rsp 16 +
+STACK CFI 922b4 .cfa: $rsp 24 +
+STACK CFI 922b6 .cfa: $rsp 32 +
+STACK CFI 922b8 .cfa: $rsp 40 +
+STACK CFI 922bb $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI 922bc .cfa: $rsp 48 +
+STACK CFI 922be $rbp: .cfa -48 + ^
+STACK CFI 922bf .cfa: $rsp 56 +
+STACK CFI 922c3 .cfa: $rsp 144 +
+STACK CFI 922d9 $rbx: .cfa -56 + ^
+STACK CFI INIT 92710 a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 92720 417 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 92722 .cfa: $rsp 16 +
+STACK CFI 92724 .cfa: $rsp 24 +
+STACK CFI 92726 .cfa: $rsp 32 +
+STACK CFI 92728 .cfa: $rsp 40 +
+STACK CFI 9272b $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI 9272c .cfa: $rsp 48 +
+STACK CFI 9272e $rbp: .cfa -48 + ^
+STACK CFI 9272f .cfa: $rsp 56 +
+STACK CFI 92733 .cfa: $rsp 144 +
+STACK CFI 92749 $rbx: .cfa -56 + ^
+STACK CFI INIT 92b40 a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 92b50 27f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 92b52 .cfa: $rsp 16 +
+STACK CFI 92b55 $r15: .cfa -16 + ^
+STACK CFI 92b57 .cfa: $rsp 24 +
+STACK CFI 92b59 .cfa: $rsp 32 +
+STACK CFI 92b5c $r13: .cfa -32 + ^ $r14: .cfa -24 + ^
+STACK CFI 92b5e .cfa: $rsp 40 +
+STACK CFI 92b61 $r12: .cfa -40 + ^
+STACK CFI 92b62 .cfa: $rsp 48 +
+STACK CFI 92b64 $rbp: .cfa -48 + ^
+STACK CFI 92b65 .cfa: $rsp 56 +
+STACK CFI 92b68 $rbx: .cfa -56 + ^
+STACK CFI 92b6c .cfa: $rsp 80 +
+STACK CFI INIT 92dd0 1fd .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 92ddc $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI 92dea .cfa: $rsp 64 +
+STACK CFI 92df7 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT 92fd0 1fc4 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 92fd2 .cfa: $rsp 16 +
+STACK CFI 92fd5 $r15: .cfa -16 + ^
+STACK CFI 92fd7 .cfa: $rsp 24 +
+STACK CFI 92fd9 .cfa: $rsp 32 +
+STACK CFI 92fdb .cfa: $rsp 40 +
+STACK CFI 92fdc .cfa: $rsp 48 +
+STACK CFI 92fdd .cfa: $rsp 56 +
+STACK CFI 92fe4 .cfa: $rsp 544 +
+STACK CFI 92ffa $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 94fa0 a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 94fb0 27f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 94fb2 .cfa: $rsp 16 +
+STACK CFI 94fb5 $r15: .cfa -16 + ^
+STACK CFI 94fb7 .cfa: $rsp 24 +
+STACK CFI 94fb9 .cfa: $rsp 32 +
+STACK CFI 94fbc $r13: .cfa -32 + ^ $r14: .cfa -24 + ^
+STACK CFI 94fbe .cfa: $rsp 40 +
+STACK CFI 94fc1 $r12: .cfa -40 + ^
+STACK CFI 94fc2 .cfa: $rsp 48 +
+STACK CFI 94fc4 $rbp: .cfa -48 + ^
+STACK CFI 94fc5 .cfa: $rsp 56 +
+STACK CFI 94fc8 $rbx: .cfa -56 + ^
+STACK CFI 94fcc .cfa: $rsp 80 +
+STACK CFI INIT 95230 1ef .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9523d $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI 9524b .cfa: $rsp 64 +
+STACK CFI 95257 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT 95420 1f22 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 95422 .cfa: $rsp 16 +
+STACK CFI 95425 $r15: .cfa -16 + ^
+STACK CFI 95427 .cfa: $rsp 24 +
+STACK CFI 95429 .cfa: $rsp 32 +
+STACK CFI 9542b .cfa: $rsp 40 +
+STACK CFI 9542c .cfa: $rsp 48 +
+STACK CFI 9542d .cfa: $rsp 56 +
+STACK CFI 95434 .cfa: $rsp 4384 +
+STACK CFI 9544a $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 97350 a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 97360 27f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 97362 .cfa: $rsp 16 +
+STACK CFI 97365 $r15: .cfa -16 + ^
+STACK CFI 97367 .cfa: $rsp 24 +
+STACK CFI 97369 .cfa: $rsp 32 +
+STACK CFI 9736c $r13: .cfa -32 + ^ $r14: .cfa -24 + ^
+STACK CFI 9736e .cfa: $rsp 40 +
+STACK CFI 97371 $r12: .cfa -40 + ^
+STACK CFI 97372 .cfa: $rsp 48 +
+STACK CFI 97374 $rbp: .cfa -48 + ^
+STACK CFI 97375 .cfa: $rsp 56 +
+STACK CFI 97378 $rbx: .cfa -56 + ^
+STACK CFI 9737c .cfa: $rsp 80 +
+STACK CFI INIT 975e0 1dc .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 975ec $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI 975fa .cfa: $rsp 64 +
+STACK CFI 97604 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT 977c0 1f32 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 977c2 .cfa: $rsp 16 +
+STACK CFI 977c5 $r15: .cfa -16 + ^
+STACK CFI 977c7 .cfa: $rsp 24 +
+STACK CFI 977c9 .cfa: $rsp 32 +
+STACK CFI 977cb .cfa: $rsp 40 +
+STACK CFI 977cc .cfa: $rsp 48 +
+STACK CFI 977cd .cfa: $rsp 56 +
+STACK CFI 977d4 .cfa: $rsp 304 +
+STACK CFI 977ea $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 99700 a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 99710 10 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 99720 10 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 99730 68 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 99738 .cfa: $rsp 16 +
+STACK CFI 99753 $rbx: .cfa -16 + ^
+STACK CFI INIT 997a0 dc .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 997a2 .cfa: $rsp 16 +
+STACK CFI 997a6 .cfa: $rsp 24 +
+STACK CFI 997a7 .cfa: $rsp 32 +
+STACK CFI 997ad $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI INIT 99880 c8c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 99881 .cfa: $rsp 16 +
+STACK CFI 99884 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 99889 $r15: .cfa -24 + ^
+STACK CFI 99890 $r13: .cfa -40 + ^ $r14: .cfa -32 + ^
+STACK CFI 998ae $r12: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 9a510 8c6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9a511 .cfa: $rsp 16 +
+STACK CFI 9a514 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 9a51f $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI 9a523 $rbx: .cfa -56 + ^
+STACK CFI INIT 9ade0 54 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9ade2 .cfa: $rsp 16 +
+STACK CFI 9ade7 $r13: .cfa -16 + ^
+STACK CFI 9ade9 .cfa: $rsp 24 +
+STACK CFI 9adea .cfa: $rsp 32 +
+STACK CFI 9adec $r12: .cfa -24 + ^ $rbp: .cfa -32 + ^
+STACK CFI 9aded .cfa: $rsp 40 +
+STACK CFI 9adf0 $rbx: .cfa -40 + ^
+STACK CFI 9adf4 .cfa: $rsp 48 +
+STACK CFI INIT 9ae40 90 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9ae4d $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI 9ae63 .cfa: $rsp 48 +
+STACK CFI 9ae69 $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^
+STACK CFI INIT 9aed0 59 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9aed2 .cfa: $rsp 16 +
+STACK CFI 9aed7 $r14: .cfa -16 + ^
+STACK CFI 9aed9 .cfa: $rsp 24 +
+STACK CFI 9aedb .cfa: $rsp 32 +
+STACK CFI 9aede $r12: .cfa -32 + ^ $r13: .cfa -24 + ^
+STACK CFI 9aee2 .cfa: $rsp 40 +
+STACK CFI 9aee5 $rbp: .cfa -40 + ^
+STACK CFI 9aee6 .cfa: $rsp 48 +
+STACK CFI 9aee9 $rbx: .cfa -48 + ^
+STACK CFI INIT 9af30 a8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9af3d $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 9af58 .cfa: $rsp 64 +
+STACK CFI 9af5e $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT 9afe0 42 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9afe1 .cfa: $rsp 16 +
+STACK CFI 9afe5 $rbx: .cfa -16 + ^
+STACK CFI INIT 9b030 4d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9b031 .cfa: $rsp 16 +
+STACK CFI 9b037 $rbx: .cfa -16 + ^
+STACK CFI 9b03b .cfa: $rsp 32 +
+STACK CFI INIT 9b080 7e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9b081 .cfa: $rsp 16 +
+STACK CFI 9b088 $rbp: .cfa -16 + ^
+STACK CFI 9b089 .cfa: $rsp 24 +
+STACK CFI 9b08c $rbx: .cfa -24 + ^
+STACK CFI 9b097 .cfa: $rsp 32 +
+STACK CFI INIT 9b100 207 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9b101 .cfa: $rsp 16 +
+STACK CFI 9b104 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 9b109 $r13: .cfa -24 + ^
+STACK CFI 9b11e $r12: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI INIT 9b310 7e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9b311 .cfa: $rsp 16 +
+STACK CFI 9b312 .cfa: $rsp 24 +
+STACK CFI 9b315 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI 9b319 .cfa: $rsp 32 +
+STACK CFI INIT 9b390 42c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9b392 .cfa: $rsp 16 +
+STACK CFI 9b394 .cfa: $rsp 24 +
+STACK CFI 9b396 .cfa: $rsp 32 +
+STACK CFI 9b398 .cfa: $rsp 40 +
+STACK CFI 9b399 .cfa: $rsp 48 +
+STACK CFI 9b39a .cfa: $rsp 56 +
+STACK CFI 9b3a1 .cfa: $rsp 448 +
+STACK CFI 9b3a4 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 9b7c0 90 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9b7c7 .cfa: $rsp 224 +
+STACK CFI INIT 9b850 ad .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9b872 .cfa: $rsp 624 +
+STACK CFI 9b87a $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI INIT 9ba89 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 9ba93 .cfa: $rsp 0 +
+STACK CFI 9ba97 .cfa: $rsp 128 +
+STACK CFI 9ba9f .cfa: $rsp -128 +
+STACK CFI INIT 9baa4 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 9baae .cfa: $rsp 0 +
+STACK CFI 9bab2 .cfa: $rsp 128 +
+STACK CFI 9baba .cfa: $rsp -128 +
+STACK CFI INIT 9babf 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 9bac9 .cfa: $rsp 0 +
+STACK CFI 9bacd .cfa: $rsp 128 +
+STACK CFI 9bad5 .cfa: $rsp -128 +
+STACK CFI INIT 9b900 189 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9b901 .cfa: $rsp 16 +
+STACK CFI 9b90b .cfa: $rsp 224 +
+STACK CFI 9b96d $rbx: .cfa -16 + ^
+STACK CFI INIT 9bbe7 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 9bbf1 .cfa: $rsp 0 +
+STACK CFI 9bbf5 .cfa: $rsp 128 +
+STACK CFI 9bbfd .cfa: $rsp -128 +
+STACK CFI INIT 9bc02 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 9bc0c .cfa: $rsp 0 +
+STACK CFI 9bc10 .cfa: $rsp 128 +
+STACK CFI 9bc18 .cfa: $rsp -128 +
+STACK CFI INIT 9bc1d 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 9bc27 .cfa: $rsp 0 +
+STACK CFI 9bc2b .cfa: $rsp 128 +
+STACK CFI 9bc33 .cfa: $rsp -128 +
+STACK CFI INIT 9bae0 107 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9bae1 .cfa: $rsp 16 +
+STACK CFI 9bae8 .cfa: $rsp 24 +
+STACK CFI 9baec .cfa: $rsp 32 +
+STACK CFI 9baf6 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 9bdb7 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 9bdc1 .cfa: $rsp 0 +
+STACK CFI 9bdc5 .cfa: $rsp 128 +
+STACK CFI 9bdcd .cfa: $rsp -128 +
+STACK CFI INIT 9bdd2 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 9bddc .cfa: $rsp 0 +
+STACK CFI 9bde0 .cfa: $rsp 128 +
+STACK CFI 9bde8 .cfa: $rsp -128 +
+STACK CFI INIT 9bded 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 9bdf7 .cfa: $rsp 0 +
+STACK CFI 9bdfb .cfa: $rsp 128 +
+STACK CFI 9be03 .cfa: $rsp -128 +
+STACK CFI INIT 9bc40 177 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9bc41 .cfa: $rsp 16 +
+STACK CFI 9bc47 $rbx: .cfa -16 + ^
+STACK CFI 9bc4e .cfa: $rsp 224 +
+STACK CFI INIT 9bf00 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI 9bf0a .cfa: $rsp 0 +
+STACK CFI 9bf0e .cfa: $rsp 128 +
+STACK CFI 9bf16 .cfa: $rsp -128 +
+STACK CFI INIT 9bf1b 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 9bf25 .cfa: $rsp 0 +
+STACK CFI 9bf29 .cfa: $rsp 128 +
+STACK CFI 9bf31 .cfa: $rsp -128 +
+STACK CFI INIT 9bf33 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI 9bf3d .cfa: $rsp 0 +
+STACK CFI 9bf41 .cfa: $rsp 128 +
+STACK CFI 9bf49 .cfa: $rsp -128 +
+STACK CFI INIT 9be10 f0 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9be11 .cfa: $rsp 16 +
+STACK CFI 9be18 $rbx: .cfa -16 + ^
+STACK CFI INIT 9bf50 41a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9bf52 .cfa: $rsp 16 +
+STACK CFI 9bf5e .cfa: $rsp 24 +
+STACK CFI 9bf5f .cfa: $rsp 32 +
+STACK CFI 9bf62 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^
+STACK CFI 9bf63 .cfa: $rsp 40 +
+STACK CFI 9bf66 $rbx: .cfa -40 + ^
+STACK CFI INIT 9c370 fa .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9c371 .cfa: $rsp 16 +
+STACK CFI 9c374 $rbp: .cfa -16 + ^
+STACK CFI 9c375 .cfa: $rsp 24 +
+STACK CFI 9c378 $rbx: .cfa -24 + ^
+STACK CFI 9c37c .cfa: $rsp 64 +
+STACK CFI INIT 9c470 11 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 9c490 a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 9c4a0 82 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9c4a1 .cfa: $rsp 16 +
+STACK CFI 9c4aa $rbx: .cfa -16 + ^ .cfa: $rsp 48 +
+STACK CFI INIT 9c530 15 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9c534 .cfa: $rsp 16 +
+STACK CFI INIT 9c550 21 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9c551 .cfa: $rsp 16 +
+STACK CFI 9c554 $rbx: .cfa -16 + ^
+STACK CFI 9c558 .cfa: $rsp 80 +
+STACK CFI INIT 9c580 1f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 9c5a0 e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 9c5b0 a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 9c5c0 11 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 9c5e0 d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 9c5f0 102 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9c5f8 $rbx: .cfa -56 + ^
+STACK CFI 9c60a $r12: .cfa -40 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^
+STACK CFI 9c61b .cfa: $rsp 64 +
+STACK CFI 9c621 $r13: .cfa -32 + ^ $r14: .cfa -24 + ^
+STACK CFI INIT 9c700 827 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9c702 .cfa: $rsp 16 +
+STACK CFI 9c705 $r15: .cfa -16 + ^
+STACK CFI 9c707 .cfa: $rsp 24 +
+STACK CFI 9c70a $r14: .cfa -24 + ^
+STACK CFI 9c70c .cfa: $rsp 32 +
+STACK CFI 9c70e .cfa: $rsp 40 +
+STACK CFI 9c70f .cfa: $rsp 48 +
+STACK CFI 9c710 .cfa: $rsp 56 +
+STACK CFI 9c717 .cfa: $rsp 352 +
+STACK CFI 9c727 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 9cf30 20 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9cf31 .cfa: $rsp 16 +
+STACK CFI 9cf34 $rbx: .cfa -16 + ^
+STACK CFI INIT 9cf50 12 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9cf54 .cfa: $rsp 16 +
+STACK CFI 9cf61 .cfa: $rsp 8 +
+STACK CFI INIT 9cf70 3b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9cf74 .cfa: $rsp 16 +
+STACK CFI 9cf95 .cfa: $rsp 8 +
+STACK CFI INIT 9cfb0 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 9cfe0 14e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9cfe1 .cfa: $rsp 16 +
+STACK CFI 9cfe4 $rbx: .cfa -16 + ^
+STACK CFI 9cfeb .cfa: $rsp 224 +
+STACK CFI INIT 9e1ba 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 9e1c8 .cfa: $rsp 0 +
+STACK CFI 9e1cc .cfa: $rsp 128 +
+STACK CFI 9e1d4 .cfa: $rsp -128 +
+STACK CFI INIT 9e1d9 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 9e1e7 .cfa: $rsp 0 +
+STACK CFI 9e1eb .cfa: $rsp 128 +
+STACK CFI 9e1f3 .cfa: $rsp -128 +
+STACK CFI INIT 9e1f8 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 9e206 .cfa: $rsp 0 +
+STACK CFI 9e20a .cfa: $rsp 128 +
+STACK CFI 9e212 .cfa: $rsp -128 +
+STACK CFI INIT 9e217 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 9e225 .cfa: $rsp 0 +
+STACK CFI 9e229 .cfa: $rsp 128 +
+STACK CFI 9e231 .cfa: $rsp -128 +
+STACK CFI INIT 9e236 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 9e244 .cfa: $rsp 0 +
+STACK CFI 9e248 .cfa: $rsp 128 +
+STACK CFI 9e250 .cfa: $rsp -128 +
+STACK CFI INIT 9e255 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 9e263 .cfa: $rsp 0 +
+STACK CFI 9e267 .cfa: $rsp 128 +
+STACK CFI 9e26f .cfa: $rsp -128 +
+STACK CFI INIT 9d130 34 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 9d170 2e8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9d171 .cfa: $rsp 16 +
+STACK CFI 9d175 .cfa: $rsp 24 +
+STACK CFI 9d17b $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 136400 47 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 136404 .cfa: $rsp 16 +
+STACK CFI INIT 9d460 84 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9d461 .cfa: $rsp 16 +
+STACK CFI 9d464 .cfa: $rsp 24 +
+STACK CFI 9d468 .cfa: $rsp 32 +
+STACK CFI 9d4a7 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 9d4f0 ce .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9d4fd $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 9d506 .cfa: $rsp 32 +
+STACK CFI 9d516 $r12: .cfa -16 + ^
+STACK CFI INIT 9d5c0 a1 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9d5c2 .cfa: $rsp 16 +
+STACK CFI 9d5c5 $r14: .cfa -16 + ^
+STACK CFI 9d5c7 .cfa: $rsp 24 +
+STACK CFI 9d5ca $r13: .cfa -24 + ^
+STACK CFI 9d5cc .cfa: $rsp 32 +
+STACK CFI 9d5cd .cfa: $rsp 40 +
+STACK CFI 9d5ce $r12: .cfa -32 + ^ $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI INIT 9d670 715 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9d671 .cfa: $rsp 16 +
+STACK CFI 9d67b $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 9d686 $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI 9d68c $r13: .cfa -40 + ^
+STACK CFI 9d692 $r12: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 9dd90 19e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9dd9e .cfa: $rsp 32 +
+STACK CFI 9dda2 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 9df30 175 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9df32 .cfa: $rsp 16 +
+STACK CFI 9df35 $r12: .cfa -16 + ^
+STACK CFI 9df36 .cfa: $rsp 24 +
+STACK CFI 9df39 $rbp: .cfa -24 + ^
+STACK CFI 9df3a .cfa: $rsp 32 +
+STACK CFI 9df3d $rbx: .cfa -32 + ^
+STACK CFI 9df41 .cfa: $rsp 48 +
+STACK CFI INIT 9e0b0 91 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9e0b4 .cfa: $rsp 16 +
+STACK CFI INIT 9e150 6a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9e154 .cfa: $rsp 16 +
+STACK CFI INIT 9e280 69c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9e282 .cfa: $rsp 16 +
+STACK CFI 9e284 .cfa: $rsp 24 +
+STACK CFI 9e286 .cfa: $rsp 32 +
+STACK CFI 9e289 $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI 9e28b .cfa: $rsp 40 +
+STACK CFI 9e28c .cfa: $rsp 48 +
+STACK CFI 9e28f $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^
+STACK CFI 9e290 .cfa: $rsp 56 +
+STACK CFI 9e293 $rbx: .cfa -56 + ^
+STACK CFI 9e297 .cfa: $rsp 96 +
+STACK CFI INIT 9e920 e0e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9e921 .cfa: $rsp 16 +
+STACK CFI 9e924 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 9e92f $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI 9e933 $rbx: .cfa -56 + ^
+STACK CFI INIT 9f730 1fa .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9f732 .cfa: $rsp 16 +
+STACK CFI 9f734 .cfa: $rsp 24 +
+STACK CFI 9f736 .cfa: $rsp 32 +
+STACK CFI 9f738 .cfa: $rsp 40 +
+STACK CFI 9f73b $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI 9f73c .cfa: $rsp 48 +
+STACK CFI 9f73f $rbp: .cfa -48 + ^
+STACK CFI 9f740 .cfa: $rsp 56 +
+STACK CFI 9f743 $rbx: .cfa -56 + ^
+STACK CFI 9f747 .cfa: $rsp 96 +
+STACK CFI INIT 9f930 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 9f960 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 9f990 45 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9f994 .cfa: $rsp 32 +
+STACK CFI INIT 9f9e0 46 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 9fa30 1a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 9fa50 87 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9fa51 .cfa: $rsp 16 +
+STACK CFI 9fa54 $rbx: .cfa -16 + ^
+STACK CFI 9fa58 .cfa: $rsp 48 +
+STACK CFI INIT 9fae0 54a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9fae8 $r12: .cfa -40 + ^
+STACK CFI 9fafc $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 9fb12 $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ .cfa: $rsp 352 +
+STACK CFI INIT a0030 38 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a003b .cfa: $rsp 16 +
+STACK CFI INIT a0070 12 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT a0090 d4 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT a0170 2cd9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a0172 .cfa: $rsp 16 +
+STACK CFI a0174 .cfa: $rsp 24 +
+STACK CFI a0176 .cfa: $rsp 32 +
+STACK CFI a0179 $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI a017b .cfa: $rsp 40 +
+STACK CFI a017e $r12: .cfa -40 + ^
+STACK CFI a017f .cfa: $rsp 48 +
+STACK CFI a0182 $rbp: .cfa -48 + ^
+STACK CFI a0183 .cfa: $rsp 56 +
+STACK CFI a0186 $rbx: .cfa -56 + ^
+STACK CFI a018d .cfa: $rsp 272 +
+STACK CFI INIT a2e50 a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT a2e60 10 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT a2e70 20b5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a2e72 .cfa: $rsp 16 +
+STACK CFI a2e75 $r15: .cfa -16 + ^
+STACK CFI a2e77 .cfa: $rsp 24 +
+STACK CFI a2e79 .cfa: $rsp 32 +
+STACK CFI a2e7b .cfa: $rsp 40 +
+STACK CFI a2e7e $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^
+STACK CFI a2e7f .cfa: $rsp 48 +
+STACK CFI a2e80 .cfa: $rsp 56 +
+STACK CFI a2e87 .cfa: $rsp 304 +
+STACK CFI a2eb8 $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT a4f30 1b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a4f34 .cfa: $rsp 32 +
+STACK CFI INIT a4f50 10 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT a4f60 5a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a4f62 .cfa: $rsp 16 +
+STACK CFI a4f68 $r14: .cfa -16 + ^
+STACK CFI a4f6a .cfa: $rsp 24 +
+STACK CFI a4f6c .cfa: $rsp 32 +
+STACK CFI a4f6d .cfa: $rsp 40 +
+STACK CFI a4f70 $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $rbp: .cfa -40 + ^
+STACK CFI a4f71 .cfa: $rsp 48 +
+STACK CFI a4f74 $rbx: .cfa -48 + ^
+STACK CFI INIT a4fc0 20fa .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a4fc1 .cfa: $rsp 16 +
+STACK CFI a4fc4 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI a5018 $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT a70c0 1b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a70c4 .cfa: $rsp 32 +
+STACK CFI INIT a70e0 a7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a70e2 .cfa: $rsp 16 +
+STACK CFI a70e3 .cfa: $rsp 24 +
+STACK CFI a70e6 $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^
+STACK CFI a70e7 .cfa: $rsp 32 +
+STACK CFI a70eb $rbx: .cfa -32 + ^
+STACK CFI INIT a7190 135 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a7192 .cfa: $rsp 16 +
+STACK CFI a7194 .cfa: $rsp 24 +
+STACK CFI a719a $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI a719c .cfa: $rsp 32 +
+STACK CFI a719e .cfa: $rsp 40 +
+STACK CFI a719f .cfa: $rsp 48 +
+STACK CFI a71a0 .cfa: $rsp 56 +
+STACK CFI a71a3 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI a71a7 .cfa: $rsp 80 +
+STACK CFI INIT a72d0 dc .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a72d1 .cfa: $rsp 16 +
+STACK CFI a72d3 $rbx: .cfa -16 + ^
+STACK CFI a72d7 .cfa: $rsp 32 +
+STACK CFI INIT a73b0 189 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a73bc $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI a73ca .cfa: $rsp 64 +
+STACK CFI a73cf $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT a7540 2b4 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a754d $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI a7565 .cfa: $rsp 64 +
+STACK CFI a7573 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT a7800 55 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a780e .cfa: $rsp 32 +
+STACK CFI a7814 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT a7860 152 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a7861 .cfa: $rsp 16 +
+STACK CFI a7864 $rbp: .cfa -16 + ^
+STACK CFI a7865 .cfa: $rsp 24 +
+STACK CFI a7868 $rbx: .cfa -24 + ^
+STACK CFI a786c .cfa: $rsp 32 +
+STACK CFI INIT a79c0 42 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a79c1 .cfa: $rsp 16 +
+STACK CFI a79c5 $rbx: .cfa -16 + ^
+STACK CFI INIT a7a10 46 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a7a11 .cfa: $rsp 16 +
+STACK CFI a7a14 $rbx: .cfa -16 + ^
+STACK CFI a7a1b .cfa: $rsp 224 +
+STACK CFI INIT a7a60 72 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a7a61 .cfa: $rsp 16 +
+STACK CFI a7a64 $rbx: .cfa -16 + ^
+STACK CFI a7a6b .cfa: $rsp 224 +
+STACK CFI INIT a7ae0 f6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a7aed $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI a7afb .cfa: $rsp 48 +
+STACK CFI a7b03 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT a7be0 3d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a7be4 .cfa: $rsp 16 +
+STACK CFI INIT a7c20 2d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a7c24 .cfa: $rsp 16 +
+STACK CFI a7c26 $rbx: .cfa -16 + ^
+STACK CFI INIT a7d2f 1c .cfa: $rsp -128 + .ra: $rip
+STACK CFI a7d3a .cfa: $rsp 0 +
+STACK CFI a7d3e .cfa: $rsp 128 +
+STACK CFI a7d46 .cfa: $rsp -128 +
+STACK CFI INIT a7d4b 19 .cfa: $rsp -128 + .ra: $rip
+STACK CFI a7d56 .cfa: $rsp 0 +
+STACK CFI a7d5a .cfa: $rsp 128 +
+STACK CFI a7d62 .cfa: $rsp -128 +
+STACK CFI INIT a7c50 df .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a7c52 .cfa: $rsp 16 +
+STACK CFI a7c5b .cfa: $rsp 24 +
+STACK CFI a7c5c .cfa: $rsp 32 +
+STACK CFI a7c5d .cfa: $rsp 40 +
+STACK CFI a7c60 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI a7c64 .cfa: $rsp 48 +
+STACK CFI INIT a7eca 1c .cfa: $rsp -128 + .ra: $rip
+STACK CFI a7ed5 .cfa: $rsp 0 +
+STACK CFI a7ed9 .cfa: $rsp 128 +
+STACK CFI a7ee1 .cfa: $rsp -128 +
+STACK CFI INIT a7ee6 1c .cfa: $rsp -128 + .ra: $rip
+STACK CFI a7ef1 .cfa: $rsp 0 +
+STACK CFI a7ef5 .cfa: $rsp 128 +
+STACK CFI a7efd .cfa: $rsp -128 +
+STACK CFI INIT a7d70 15a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a7d72 .cfa: $rsp 16 +
+STACK CFI a7d74 .cfa: $rsp 24 +
+STACK CFI a7d77 $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI a7d79 .cfa: $rsp 32 +
+STACK CFI a7d7c $r13: .cfa -32 + ^
+STACK CFI a7d83 .cfa: $rsp 40 +
+STACK CFI a7d84 .cfa: $rsp 48 +
+STACK CFI a7d85 .cfa: $rsp 56 +
+STACK CFI a7d88 $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI a7d8c .cfa: $rsp 80 +
+STACK CFI INIT a7f6e 19 .cfa: $rsp -128 + .ra: $rip
+STACK CFI a7f79 .cfa: $rsp 0 +
+STACK CFI a7f7d .cfa: $rsp 128 +
+STACK CFI a7f85 .cfa: $rsp -128 +
+STACK CFI INIT a7f87 19 .cfa: $rsp -128 + .ra: $rip
+STACK CFI a7f92 .cfa: $rsp 0 +
+STACK CFI a7f96 .cfa: $rsp 128 +
+STACK CFI a7f9e .cfa: $rsp -128 +
+STACK CFI INIT a7f10 5e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a7f11 .cfa: $rsp 16 +
+STACK CFI a7f19 $rbx: .cfa -16 + ^
+STACK CFI INIT a8018 19 .cfa: $rsp -128 + .ra: $rip
+STACK CFI a8023 .cfa: $rsp 0 +
+STACK CFI a8027 .cfa: $rsp 128 +
+STACK CFI a802f .cfa: $rsp -128 +
+STACK CFI INIT a8031 19 .cfa: $rsp -128 + .ra: $rip
+STACK CFI a803c .cfa: $rsp 0 +
+STACK CFI a8040 .cfa: $rsp 128 +
+STACK CFI a8048 .cfa: $rsp -128 +
+STACK CFI INIT a7fa0 78 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a7fad $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI a7fb1 .cfa: $rsp 32 +
+STACK CFI INIT a8050 5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT a8060 1f3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a8062 .cfa: $rsp 16 +
+STACK CFI a8064 .cfa: $rsp 24 +
+STACK CFI a8066 .cfa: $rsp 32 +
+STACK CFI a8068 .cfa: $rsp 40 +
+STACK CFI a8069 .cfa: $rsp 48 +
+STACK CFI a806c $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^
+STACK CFI a806d .cfa: $rsp 56 +
+STACK CFI a8071 .cfa: $rsp 128 +
+STACK CFI a807b $rbx: .cfa -56 + ^
+STACK CFI INIT a8260 40 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a8262 .cfa: $rsp 16 +
+STACK CFI a8263 .cfa: $rsp 24 +
+STACK CFI a8266 $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^
+STACK CFI a8267 .cfa: $rsp 32 +
+STACK CFI a8272 $rbx: .cfa -32 + ^
+STACK CFI INIT a82a0 13 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT a82c0 13 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT a82e0 87 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a82e2 .cfa: $rsp 16 +
+STACK CFI a82ef .cfa: $rsp 24 +
+STACK CFI a82f1 .cfa: $rsp 32 +
+STACK CFI a82f2 .cfa: $rsp 40 +
+STACK CFI a82f3 .cfa: $rsp 48 +
+STACK CFI a82fd $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^ $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI INIT a8370 3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT a8380 87 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a8381 .cfa: $rsp 16 +
+STACK CFI a8384 .cfa: $rsp 24 +
+STACK CFI a8386 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI a8392 .cfa: $rsp 176 +
+STACK CFI INIT a8410 6b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a841c $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI a8434 .cfa: $rsp 48 +
+STACK CFI a8437 $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^
+STACK CFI INIT a861f 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI a862d .cfa: $rsp 0 +
+STACK CFI a8631 .cfa: $rsp 128 +
+STACK CFI a8639 .cfa: $rsp -128 +
+STACK CFI INIT a863e 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI a864c .cfa: $rsp 0 +
+STACK CFI a8650 .cfa: $rsp 128 +
+STACK CFI a8658 .cfa: $rsp -128 +
+STACK CFI INIT a8480 19f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a8482 .cfa: $rsp 16 +
+STACK CFI a8484 .cfa: $rsp 24 +
+STACK CFI a8485 .cfa: $rsp 32 +
+STACK CFI a8486 .cfa: $rsp 40 +
+STACK CFI a8489 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI a848d .cfa: $rsp 96 +
+STACK CFI INIT a8660 354 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a8661 .cfa: $rsp 16 +
+STACK CFI a8664 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI a8669 $r15: .cfa -24 + ^
+STACK CFI a8678 $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT a89c0 297 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a89c2 .cfa: $rsp 16 +
+STACK CFI a89c5 $r15: .cfa -16 + ^
+STACK CFI a89c7 .cfa: $rsp 24 +
+STACK CFI a89ca $r14: .cfa -24 + ^
+STACK CFI a89cc .cfa: $rsp 32 +
+STACK CFI a89ce .cfa: $rsp 40 +
+STACK CFI a89cf .cfa: $rsp 48 +
+STACK CFI a89d2 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $rbp: .cfa -48 + ^
+STACK CFI a89d3 .cfa: $rsp 56 +
+STACK CFI a89d7 .cfa: $rsp 128 +
+STACK CFI a89f0 $rbx: .cfa -56 + ^
+STACK CFI INIT a8c60 d0 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a8c62 .cfa: $rsp 16 +
+STACK CFI a8c63 .cfa: $rsp 24 +
+STACK CFI a8c65 $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^
+STACK CFI a8c66 .cfa: $rsp 32 +
+STACK CFI a8c69 $rbx: .cfa -32 + ^
+STACK CFI a8c72 .cfa: $rsp 64 +
+STACK CFI INIT a8d30 b7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a8d3d $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI a8d4b .cfa: $rsp 64 +
+STACK CFI a8d50 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT a8df0 5f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a8df4 .cfa: $rsp 64 +
+STACK CFI INIT a8ed8 1c .cfa: $rsp -128 + .ra: $rip
+STACK CFI a8ee6 .cfa: $rsp 0 +
+STACK CFI a8eea .cfa: $rsp 128 +
+STACK CFI a8ef2 .cfa: $rsp -128 +
+STACK CFI INIT a8ef4 1c .cfa: $rsp -128 + .ra: $rip
+STACK CFI a8f02 .cfa: $rsp 0 +
+STACK CFI a8f06 .cfa: $rsp 128 +
+STACK CFI a8f0e .cfa: $rsp -128 +
+STACK CFI INIT a8e50 88 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a8e54 .cfa: $rsp 16 +
+STACK CFI INIT a9035 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI a9043 .cfa: $rsp 0 +
+STACK CFI a9047 .cfa: $rsp 128 +
+STACK CFI a904f .cfa: $rsp -128 +
+STACK CFI INIT a9054 1c .cfa: $rsp -128 + .ra: $rip
+STACK CFI a9062 .cfa: $rsp 0 +
+STACK CFI a9066 .cfa: $rsp 128 +
+STACK CFI a906e .cfa: $rsp -128 +
+STACK CFI INIT a8f10 125 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a8f11 .cfa: $rsp 16 +
+STACK CFI a8f19 .cfa: $rsp 24 +
+STACK CFI a8f1b $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI a8f1f .cfa: $rsp 48 +
+STACK CFI INIT a9195 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI a91a3 .cfa: $rsp 0 +
+STACK CFI a91a7 .cfa: $rsp 128 +
+STACK CFI a91af .cfa: $rsp -128 +
+STACK CFI INIT a91b4 1c .cfa: $rsp -128 + .ra: $rip
+STACK CFI a91c2 .cfa: $rsp 0 +
+STACK CFI a91c6 .cfa: $rsp 128 +
+STACK CFI a91ce .cfa: $rsp -128 +
+STACK CFI INIT a9070 125 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a9071 .cfa: $rsp 16 +
+STACK CFI a9079 .cfa: $rsp 24 +
+STACK CFI a907c $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI a9080 .cfa: $rsp 48 +
+STACK CFI INIT a9414 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI a941e .cfa: $rsp 0 +
+STACK CFI a9422 .cfa: $rsp 128 +
+STACK CFI a942a .cfa: $rsp -128 +
+STACK CFI INIT a942f 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI a9439 .cfa: $rsp 0 +
+STACK CFI a943d .cfa: $rsp 128 +
+STACK CFI a9445 .cfa: $rsp -128 +
+STACK CFI INIT a944a 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI a9454 .cfa: $rsp 0 +
+STACK CFI a9458 .cfa: $rsp 128 +
+STACK CFI a9460 .cfa: $rsp -128 +
+STACK CFI INIT a91d0 244 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a91d2 .cfa: $rsp 16 +
+STACK CFI a91d4 .cfa: $rsp 24 +
+STACK CFI a91d6 .cfa: $rsp 32 +
+STACK CFI a91d8 .cfa: $rsp 40 +
+STACK CFI a91d9 .cfa: $rsp 48 +
+STACK CFI a91dc $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^
+STACK CFI a91dd .cfa: $rsp 56 +
+STACK CFI a91e0 $rbx: .cfa -56 + ^
+STACK CFI a91e4 .cfa: $rsp 64 +
+STACK CFI INIT a9692 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI a96a0 .cfa: $rsp 0 +
+STACK CFI a96a4 .cfa: $rsp 128 +
+STACK CFI a96ac .cfa: $rsp -128 +
+STACK CFI INIT a96b1 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI a96bf .cfa: $rsp 0 +
+STACK CFI a96c3 .cfa: $rsp 128 +
+STACK CFI a96cb .cfa: $rsp -128 +
+STACK CFI INIT a96d0 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI a96de .cfa: $rsp 0 +
+STACK CFI a96e2 .cfa: $rsp 128 +
+STACK CFI a96ea .cfa: $rsp -128 +
+STACK CFI INIT a96ef 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI a96fd .cfa: $rsp 0 +
+STACK CFI a9701 .cfa: $rsp 128 +
+STACK CFI a9709 .cfa: $rsp -128 +
+STACK CFI INIT a970e 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI a971c .cfa: $rsp 0 +
+STACK CFI a9720 .cfa: $rsp 128 +
+STACK CFI a9728 .cfa: $rsp -128 +
+STACK CFI INIT a972d 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI a973b .cfa: $rsp 0 +
+STACK CFI a973f .cfa: $rsp 128 +
+STACK CFI a9747 .cfa: $rsp -128 +
+STACK CFI INIT a9470 d2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a9474 .cfa: $rsp 80 +
+STACK CFI INIT a9550 a0 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a9554 .cfa: $rsp 16 +
+STACK CFI INIT a95f0 a2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a95f4 .cfa: $rsp 32 +
+STACK CFI INIT a9750 25d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a9752 .cfa: $rsp 16 +
+STACK CFI a9755 $r15: .cfa -16 + ^
+STACK CFI a9757 .cfa: $rsp 24 +
+STACK CFI a975a $r14: .cfa -24 + ^
+STACK CFI a975c .cfa: $rsp 32 +
+STACK CFI a975f $r13: .cfa -32 + ^
+STACK CFI a9761 .cfa: $rsp 40 +
+STACK CFI a9762 .cfa: $rsp 48 +
+STACK CFI a9765 $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^
+STACK CFI a9766 .cfa: $rsp 56 +
+STACK CFI a976a .cfa: $rsp 112 +
+STACK CFI a977e $rbx: .cfa -56 + ^
+STACK CFI INIT a99b0 25d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a99b2 .cfa: $rsp 16 +
+STACK CFI a99b5 $r15: .cfa -16 + ^
+STACK CFI a99b7 .cfa: $rsp 24 +
+STACK CFI a99ba $r14: .cfa -24 + ^
+STACK CFI a99bc .cfa: $rsp 32 +
+STACK CFI a99bf $r13: .cfa -32 + ^
+STACK CFI a99c1 .cfa: $rsp 40 +
+STACK CFI a99c2 .cfa: $rsp 48 +
+STACK CFI a99c5 $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^
+STACK CFI a99c6 .cfa: $rsp 56 +
+STACK CFI a99ca .cfa: $rsp 112 +
+STACK CFI a99de $rbx: .cfa -56 + ^
+STACK CFI INIT aa186 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI aa190 .cfa: $rsp 0 +
+STACK CFI aa194 .cfa: $rsp 128 +
+STACK CFI aa19c .cfa: $rsp -128 +
+STACK CFI INIT aa1a1 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI aa1ab .cfa: $rsp 0 +
+STACK CFI aa1af .cfa: $rsp 128 +
+STACK CFI aa1b7 .cfa: $rsp -128 +
+STACK CFI INIT aa1bc 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI aa1c6 .cfa: $rsp 0 +
+STACK CFI aa1ca .cfa: $rsp 128 +
+STACK CFI aa1d2 .cfa: $rsp -128 +
+STACK CFI INIT aa1d7 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI aa1e1 .cfa: $rsp 0 +
+STACK CFI aa1e5 .cfa: $rsp 128 +
+STACK CFI aa1ed .cfa: $rsp -128 +
+STACK CFI INIT a9c10 2e9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a9c12 .cfa: $rsp 16 +
+STACK CFI a9c15 $r15: .cfa -16 + ^
+STACK CFI a9c17 .cfa: $rsp 24 +
+STACK CFI a9c1a $r14: .cfa -24 + ^
+STACK CFI a9c1c .cfa: $rsp 32 +
+STACK CFI a9c20 $r13: .cfa -32 + ^
+STACK CFI a9c22 .cfa: $rsp 40 +
+STACK CFI a9c25 $r12: .cfa -40 + ^
+STACK CFI a9c26 .cfa: $rsp 48 +
+STACK CFI a9c29 $rbp: .cfa -48 + ^
+STACK CFI a9c2a .cfa: $rsp 56 +
+STACK CFI a9c2d $rbx: .cfa -56 + ^
+STACK CFI a9c31 .cfa: $rsp 96 +
+STACK CFI INIT a9f00 286 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a9f02 .cfa: $rsp 16 +
+STACK CFI a9f04 .cfa: $rsp 24 +
+STACK CFI a9f07 $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI a9f09 .cfa: $rsp 32 +
+STACK CFI a9f0b .cfa: $rsp 40 +
+STACK CFI a9f0c .cfa: $rsp 48 +
+STACK CFI a9f0f $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $rbp: .cfa -48 + ^
+STACK CFI a9f10 .cfa: $rsp 56 +
+STACK CFI a9f13 $rbx: .cfa -56 + ^
+STACK CFI a9f17 .cfa: $rsp 80 +
+STACK CFI INIT aa39e 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI aa3ac .cfa: $rsp 0 +
+STACK CFI aa3b0 .cfa: $rsp 128 +
+STACK CFI aa3b8 .cfa: $rsp -128 +
+STACK CFI INIT aa3bd 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI aa3cb .cfa: $rsp 0 +
+STACK CFI aa3cf .cfa: $rsp 128 +
+STACK CFI aa3d7 .cfa: $rsp -128 +
+STACK CFI INIT aa200 19e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI aa202 .cfa: $rsp 16 +
+STACK CFI aa204 .cfa: $rsp 24 +
+STACK CFI aa205 .cfa: $rsp 32 +
+STACK CFI aa206 .cfa: $rsp 40 +
+STACK CFI aa209 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI aa20d .cfa: $rsp 96 +
+STACK CFI INIT aa3e0 d0 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI aa3e1 .cfa: $rsp 16 +
+STACK CFI aa3e4 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI aa3e9 $r12: .cfa -24 + ^
+STACK CFI aa3ed $rbx: .cfa -32 + ^
+STACK CFI INIT aa4b0 100 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI aa4b4 .cfa: $rsp 48 +
+STACK CFI INIT aa638 1c .cfa: $rsp -128 + .ra: $rip
+STACK CFI aa646 .cfa: $rsp 0 +
+STACK CFI aa64a .cfa: $rsp 128 +
+STACK CFI aa652 .cfa: $rsp -128 +
+STACK CFI INIT aa654 1c .cfa: $rsp -128 + .ra: $rip
+STACK CFI aa662 .cfa: $rsp 0 +
+STACK CFI aa666 .cfa: $rsp 128 +
+STACK CFI aa66e .cfa: $rsp -128 +
+STACK CFI INIT aa5b0 88 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI aa5b4 .cfa: $rsp 16 +
+STACK CFI INIT aa795 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI aa7a3 .cfa: $rsp 0 +
+STACK CFI aa7a7 .cfa: $rsp 128 +
+STACK CFI aa7af .cfa: $rsp -128 +
+STACK CFI INIT aa7b4 1c .cfa: $rsp -128 + .ra: $rip
+STACK CFI aa7c2 .cfa: $rsp 0 +
+STACK CFI aa7c6 .cfa: $rsp 128 +
+STACK CFI aa7ce .cfa: $rsp -128 +
+STACK CFI INIT aa670 125 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI aa671 .cfa: $rsp 16 +
+STACK CFI aa679 .cfa: $rsp 24 +
+STACK CFI aa67c $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI aa680 .cfa: $rsp 48 +
+STACK CFI INIT aa8f5 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI aa903 .cfa: $rsp 0 +
+STACK CFI aa907 .cfa: $rsp 128 +
+STACK CFI aa90f .cfa: $rsp -128 +
+STACK CFI INIT aa914 1c .cfa: $rsp -128 + .ra: $rip
+STACK CFI aa922 .cfa: $rsp 0 +
+STACK CFI aa926 .cfa: $rsp 128 +
+STACK CFI aa92e .cfa: $rsp -128 +
+STACK CFI INIT aa7d0 125 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI aa7d1 .cfa: $rsp 16 +
+STACK CFI aa7d9 .cfa: $rsp 24 +
+STACK CFI aa7db $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI aa7df .cfa: $rsp 48 +
+STACK CFI INIT aab52 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI aab60 .cfa: $rsp 0 +
+STACK CFI aab64 .cfa: $rsp 128 +
+STACK CFI aab6c .cfa: $rsp -128 +
+STACK CFI INIT aab71 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI aab7f .cfa: $rsp 0 +
+STACK CFI aab83 .cfa: $rsp 128 +
+STACK CFI aab8b .cfa: $rsp -128 +
+STACK CFI INIT aab90 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI aab9e .cfa: $rsp 0 +
+STACK CFI aaba2 .cfa: $rsp 128 +
+STACK CFI aabaa .cfa: $rsp -128 +
+STACK CFI INIT aabaf 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI aabbd .cfa: $rsp 0 +
+STACK CFI aabc1 .cfa: $rsp 128 +
+STACK CFI aabc9 .cfa: $rsp -128 +
+STACK CFI INIT aabce 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI aabdc .cfa: $rsp 0 +
+STACK CFI aabe0 .cfa: $rsp 128 +
+STACK CFI aabe8 .cfa: $rsp -128 +
+STACK CFI INIT aabed 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI aabfb .cfa: $rsp 0 +
+STACK CFI aabff .cfa: $rsp 128 +
+STACK CFI aac07 .cfa: $rsp -128 +
+STACK CFI INIT aa930 d2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI aa934 .cfa: $rsp 80 +
+STACK CFI INIT aaa10 a0 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI aaa14 .cfa: $rsp 16 +
+STACK CFI INIT aaab0 a2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI aaab4 .cfa: $rsp 32 +
+STACK CFI INIT aac10 25d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI aac12 .cfa: $rsp 16 +
+STACK CFI aac15 $r15: .cfa -16 + ^
+STACK CFI aac17 .cfa: $rsp 24 +
+STACK CFI aac1a $r14: .cfa -24 + ^
+STACK CFI aac1c .cfa: $rsp 32 +
+STACK CFI aac1f $r13: .cfa -32 + ^
+STACK CFI aac21 .cfa: $rsp 40 +
+STACK CFI aac22 .cfa: $rsp 48 +
+STACK CFI aac25 $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^
+STACK CFI aac26 .cfa: $rsp 56 +
+STACK CFI aac2a .cfa: $rsp 112 +
+STACK CFI aac3e $rbx: .cfa -56 + ^
+STACK CFI INIT aae70 25d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI aae72 .cfa: $rsp 16 +
+STACK CFI aae75 $r15: .cfa -16 + ^
+STACK CFI aae77 .cfa: $rsp 24 +
+STACK CFI aae7a $r14: .cfa -24 + ^
+STACK CFI aae7c .cfa: $rsp 32 +
+STACK CFI aae7f $r13: .cfa -32 + ^
+STACK CFI aae81 .cfa: $rsp 40 +
+STACK CFI aae82 .cfa: $rsp 48 +
+STACK CFI aae85 $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^
+STACK CFI aae86 .cfa: $rsp 56 +
+STACK CFI aae8a .cfa: $rsp 112 +
+STACK CFI aae9e $rbx: .cfa -56 + ^
+STACK CFI INIT ab606 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI ab610 .cfa: $rsp 0 +
+STACK CFI ab614 .cfa: $rsp 128 +
+STACK CFI ab61c .cfa: $rsp -128 +
+STACK CFI INIT ab621 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI ab62b .cfa: $rsp 0 +
+STACK CFI ab62f .cfa: $rsp 128 +
+STACK CFI ab637 .cfa: $rsp -128 +
+STACK CFI INIT ab63c 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI ab646 .cfa: $rsp 0 +
+STACK CFI ab64a .cfa: $rsp 128 +
+STACK CFI ab652 .cfa: $rsp -128 +
+STACK CFI INIT ab657 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI ab661 .cfa: $rsp 0 +
+STACK CFI ab665 .cfa: $rsp 128 +
+STACK CFI ab66d .cfa: $rsp -128 +
+STACK CFI INIT ab0d0 2d6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ab0d2 .cfa: $rsp 16 +
+STACK CFI ab0d4 .cfa: $rsp 24 +
+STACK CFI ab0d5 .cfa: $rsp 32 +
+STACK CFI ab0d8 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^
+STACK CFI ab0de .cfa: $rsp 40 +
+STACK CFI ab0e1 $rbx: .cfa -40 + ^
+STACK CFI ab0e5 .cfa: $rsp 64 +
+STACK CFI INIT ab3b0 256 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ab3b2 .cfa: $rsp 16 +
+STACK CFI ab3b4 .cfa: $rsp 24 +
+STACK CFI ab3b7 $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI ab3b9 .cfa: $rsp 32 +
+STACK CFI ab3bb .cfa: $rsp 40 +
+STACK CFI ab3bc .cfa: $rsp 48 +
+STACK CFI ab3bf $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $rbp: .cfa -48 + ^
+STACK CFI ab3c0 .cfa: $rsp 56 +
+STACK CFI ab3c3 $rbx: .cfa -56 + ^
+STACK CFI ab3c7 .cfa: $rsp 80 +
+STACK CFI INIT ab680 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ab6b0 49 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ab700 93 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ab704 .cfa: $rsp 32 +
+STACK CFI INIT ab7a0 9d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ab7a4 .cfa: $rsp 48 +
+STACK CFI INIT ab840 12 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ab860 28 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ab890 a5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ab894 .cfa: $rsp 48 +
+STACK CFI INIT ab940 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ab970 1d2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ab98b .cfa: $rsp 480 +
+STACK CFI ab993 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI INIT abb50 5e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI abb6d .cfa: $rsp 16 +
+STACK CFI abb90 .cfa: $rsp 8 +
+STACK CFI INIT abbb0 5e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI abbcd .cfa: $rsp 16 +
+STACK CFI abbf0 .cfa: $rsp 8 +
+STACK CFI INIT abc10 2cd .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI abc11 .cfa: $rsp 16 +
+STACK CFI abc14 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI abc27 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $rbx: .cfa -48 + ^
+STACK CFI INIT abee0 4f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI abee1 .cfa: $rsp 0 + .ra: $rdi
+STACK CFI abf05 .cfa: $rsp 8 +
+STACK CFI INIT abf30 50 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT abf80 21 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT abfb0 c3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI abfbd $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI abfc9 .cfa: $rsp 208 +
+STACK CFI abfd1 $r12: .cfa -16 + ^
+STACK CFI INIT ac080 f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ac090 1dc .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ac092 .cfa: $rsp 16 +
+STACK CFI ac094 .cfa: $rsp 24 +
+STACK CFI ac096 .cfa: $rsp 32 +
+STACK CFI ac098 .cfa: $rsp 40 +
+STACK CFI ac099 .cfa: $rsp 48 +
+STACK CFI ac09a .cfa: $rsp 56 +
+STACK CFI ac0a1 .cfa: $rsp 8352 +
+STACK CFI ac0b1 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT ac270 1b7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ac272 .cfa: $rsp 16 +
+STACK CFI ac274 .cfa: $rsp 24 +
+STACK CFI ac276 .cfa: $rsp 32 +
+STACK CFI ac278 .cfa: $rsp 40 +
+STACK CFI ac279 .cfa: $rsp 48 +
+STACK CFI ac27a .cfa: $rsp 56 +
+STACK CFI ac281 .cfa: $rsp 8352 +
+STACK CFI ac2df $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT ac430 f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ac440 192 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ac442 .cfa: $rsp 16 +
+STACK CFI ac444 .cfa: $rsp 24 +
+STACK CFI ac446 .cfa: $rsp 32 +
+STACK CFI ac448 .cfa: $rsp 40 +
+STACK CFI ac449 .cfa: $rsp 48 +
+STACK CFI ac44a .cfa: $rsp 56 +
+STACK CFI ac451 .cfa: $rsp 8352 +
+STACK CFI ac4af $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT ac5e0 485 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ac5e1 .cfa: $rsp 16 +
+STACK CFI ac5e4 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI ac5ef $r12: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI ac5fa $r13: .cfa -40 + ^ $r14: .cfa -32 + ^
+STACK CFI ac60a $r15: .cfa -24 + ^
+STACK CFI INIT aca70 38 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT acab0 8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT acac0 8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT acad0 8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT acae0 8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT acaf0 8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT acb00 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT acb30 5e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI acb34 .cfa: $rsp 64 +
+STACK CFI INIT acb90 5e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI acb94 .cfa: $rsp 64 +
+STACK CFI INIT acbf0 95 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI acbf1 .cfa: $rsp 16 +
+STACK CFI acbf4 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI acbf9 $r13: .cfa -24 + ^
+STACK CFI acc01 $r12: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI INIT acc90 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT accc0 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT accf0 8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT acd00 5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT acd10 9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT acd20 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT acd50 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT acd80 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT acdb0 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT acde0 70 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI acde4 .cfa: $rsp 64 +
+STACK CFI INIT ace50 70 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ace54 .cfa: $rsp 64 +
+STACK CFI INIT acec0 f6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT acfc0 115 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ad0e0 bd .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ad1a0 bd .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ad1a1 .cfa: $rsp 16 +
+STACK CFI ad1a2 .cfa: $rsp 24 +
+STACK CFI ad1a6 .cfa: $rsp 48 +
+STACK CFI ad1aa $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT ad260 20b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ad271 .cfa: $rsp 544 +
+STACK CFI ad27a $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT ad470 111 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ad471 .cfa: $rsp 16 +
+STACK CFI ad474 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI ad47f $r12: .cfa -48 + ^ $r13: .cfa -40 + ^
+STACK CFI ad4a5 $r14: .cfa -32 + ^ $r15: .cfa -24 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT ad590 405 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ad597 $rbx: .cfa -32 + ^
+STACK CFI ad5ab .cfa: $rsp 96 +
+STACK CFI ad5b0 $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^
+STACK CFI INIT ad9a0 26f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ad9ac $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI ad9b8 .cfa: $rsp 544 +
+STACK CFI ad9bf $r12: .cfa -16 + ^
+STACK CFI INIT adc10 6e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT adc80 7c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT add00 f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT add10 56 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI add11 .cfa: $rsp 16 +
+STACK CFI add14 $rbp: .cfa -16 + ^
+STACK CFI add15 .cfa: $rsp 24 +
+STACK CFI add19 .cfa: $rsp 32 +
+STACK CFI add22 $rbx: .cfa -24 + ^
+STACK CFI INIT add70 a2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI add71 .cfa: $rsp 16 +
+STACK CFI add74 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI add7f $r12: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI add91 $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI INIT ade20 110 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ade22 .cfa: $rsp 16 +
+STACK CFI ade25 $r15: .cfa -16 + ^
+STACK CFI ade27 .cfa: $rsp 24 +
+STACK CFI ade29 .cfa: $rsp 32 +
+STACK CFI ade2b .cfa: $rsp 40 +
+STACK CFI ade2c .cfa: $rsp 48 +
+STACK CFI ade2f $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $rbp: .cfa -48 + ^
+STACK CFI ade30 .cfa: $rsp 56 +
+STACK CFI ade34 .cfa: $rsp 80 +
+STACK CFI ade38 $rbx: .cfa -56 + ^
+STACK CFI INIT adf30 78e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI adf31 .cfa: $rsp 16 +
+STACK CFI adf34 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI adf39 $r15: .cfa -24 + ^
+STACK CFI adf43 $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT ae6c0 144d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ae6c1 .cfa: $rsp 16 +
+STACK CFI ae6c4 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI ae6cd $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI ae6d2 $r12: .cfa -48 + ^
+STACK CFI ae6d6 $rbx: .cfa -56 + ^
+STACK CFI INIT afb10 2f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT afb40 105 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI afb41 .cfa: $rsp 16 +
+STACK CFI afb44 $rbp: .cfa -16 + ^
+STACK CFI afb45 .cfa: $rsp 24 +
+STACK CFI afb49 $rbx: .cfa -24 + ^
+STACK CFI afb4d .cfa: $rsp 32 +
+STACK CFI INIT afc50 105 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI afc51 .cfa: $rsp 16 +
+STACK CFI afc54 $rbp: .cfa -16 + ^
+STACK CFI afc55 .cfa: $rsp 24 +
+STACK CFI afc59 $rbx: .cfa -24 + ^
+STACK CFI afc5d .cfa: $rsp 32 +
+STACK CFI INIT afd60 79f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI afd61 .cfa: $rsp 16 +
+STACK CFI afd64 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI afd6d $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI afd99 $r12: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT b0500 1640 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI b0501 .cfa: $rsp 16 +
+STACK CFI b0504 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI b0509 $r15: .cfa -24 + ^
+STACK CFI b0515 $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^
+STACK CFI b05a0 $rbx: .cfa -56 + ^
+STACK CFI INIT b1b40 76f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI b1b41 .cfa: $rsp 16 +
+STACK CFI b1b44 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI b1b4d $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI b1b79 $r12: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT b22b0 17e4 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI b22b2 .cfa: $rsp 16 +
+STACK CFI b22b5 $r15: .cfa -16 + ^
+STACK CFI b22b7 .cfa: $rsp 24 +
+STACK CFI b22b9 .cfa: $rsp 32 +
+STACK CFI b22bc $r13: .cfa -32 + ^ $r14: .cfa -24 + ^
+STACK CFI b22c1 .cfa: $rsp 40 +
+STACK CFI b22c2 .cfa: $rsp 48 +
+STACK CFI b22c5 $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^
+STACK CFI b22cc .cfa: $rsp 56 +
+STACK CFI b22d3 .cfa: $rsp 2368 +
+STACK CFI b22ef $rbx: .cfa -56 + ^
+STACK CFI INIT b3aa0 369 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI b3aa1 .cfa: $rsp 16 +
+STACK CFI b3aa4 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI b3aaf $r12: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI b3ae1 $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI INIT b3e10 6e1 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI b3e1d $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^
+STACK CFI b3e26 .cfa: $rsp 128 +
+STACK CFI b3e35 $rbx: .cfa -32 + ^
+STACK CFI INIT b4500 e4 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI b4502 .cfa: $rsp 16 +
+STACK CFI b4508 .cfa: $rsp 24 +
+STACK CFI b450d .cfa: $rsp 32 +
+STACK CFI b450f .cfa: $rsp 40 +
+STACK CFI b4513 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI b4514 .cfa: $rsp 48 +
+STACK CFI b4516 $rbp: .cfa -48 + ^
+STACK CFI b451a .cfa: $rsp 56 +
+STACK CFI b451e $rbx: .cfa -56 + ^
+STACK CFI INIT b45f0 106d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI b45f2 .cfa: $rsp 16 +
+STACK CFI b45f4 .cfa: $rsp 24 +
+STACK CFI b45f6 .cfa: $rsp 32 +
+STACK CFI b45f8 .cfa: $rsp 40 +
+STACK CFI b45f9 .cfa: $rsp 48 +
+STACK CFI b45fa .cfa: $rsp 56 +
+STACK CFI b4601 .cfa: $rsp 192 +
+STACK CFI b460b $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT b5660 69 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI b5661 .cfa: $rsp 16 +
+STACK CFI b5665 .cfa: $rsp 32 +
+STACK CFI b566c $rbx: .cfa -16 + ^
+STACK CFI INIT b56d0 1d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI b56d4 .cfa: $rsp 32 +
+STACK CFI INIT b56f0 1d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI b56f4 .cfa: $rsp 32 +
+STACK CFI INIT b5710 20 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI b5714 .cfa: $rsp 32 +
+STACK CFI INIT b5730 1d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI b5734 .cfa: $rsp 32 +
+STACK CFI INIT b5750 1b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI b5754 .cfa: $rsp 32 +
+STACK CFI INIT b5770 18 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI b5774 .cfa: $rsp 32 +
+STACK CFI INIT b5790 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT b57c0 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT b57f0 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT b5820 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT b5850 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT b5880 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT b58b0 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT b58e0 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT b5910 5c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI b5917 .cfa: $rsp 16 +
+STACK CFI INIT 1119c0 d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT b5970 15e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI b5971 .cfa: $rsp 16 +
+STACK CFI b5974 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI b597d $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI b5982 $r12: .cfa -48 + ^
+STACK CFI b5986 $rbx: .cfa -56 + ^
+STACK CFI INIT 1119d0 d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT b5ad0 64 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI b5af0 .cfa: $rsp 16 +
+STACK CFI b5b16 .cfa: $rsp 8 +
+STACK CFI INIT b5b40 64 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI b5b60 .cfa: $rsp 16 +
+STACK CFI b5b86 .cfa: $rsp 8 +
+STACK CFI INIT b5bb0 12 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT b5bd0 34 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI b5bd4 .cfa: $rsp 32 +
+STACK CFI INIT b5c10 bd .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI b5c17 .cfa: $rsp 16 +
+STACK CFI b5c24 $rbx: .cfa -16 + ^
+STACK CFI INIT b5cd0 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT b5d00 37 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI b5d04 .cfa: $rsp 16 +
+STACK CFI INIT b5d40 11 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT b5d60 5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT b98f5 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI b9903 .cfa: $rsp 0 +
+STACK CFI b9907 .cfa: $rsp 128 +
+STACK CFI b990f .cfa: $rsp -128 +
+STACK CFI INIT b9914 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI b9922 .cfa: $rsp 0 +
+STACK CFI b9926 .cfa: $rsp 128 +
+STACK CFI b992e .cfa: $rsp -128 +
+STACK CFI INIT b5d70 c8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT b5e40 18 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT b5e60 15 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 136450 6d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 136454 .cfa: $rsp 16 +
+STACK CFI INIT b5e80 34 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI b5e81 .cfa: $rsp 16 +
+STACK CFI b5e82 .cfa: $rsp 24 +
+STACK CFI b5e85 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI b5e89 .cfa: $rsp 32 +
+STACK CFI INIT b5ec0 1e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT b5ee0 c0 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI b5ee1 .cfa: $rsp 16 +
+STACK CFI b5eec $rbx: .cfa -16 + ^
+STACK CFI INIT b5fa0 e4 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI b5fa1 .cfa: $rsp 16 +
+STACK CFI b5fa4 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI b5faa $r15: .cfa -24 + ^
+STACK CFI b5fb3 $r14: .cfa -32 + ^
+STACK CFI b5fb8 $r13: .cfa -40 + ^
+STACK CFI b5fc1 $r12: .cfa -48 + ^
+STACK CFI b5fc7 $rbx: .cfa -56 + ^
+STACK CFI INIT b6090 1bfc .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI b6091 .cfa: $rsp 16 +
+STACK CFI b6094 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI b609d $r15: .cfa -24 + ^
+STACK CFI b60a4 $r13: .cfa -40 + ^ $r14: .cfa -32 + ^
+STACK CFI b60a9 $r12: .cfa -48 + ^
+STACK CFI b60b4 $rbx: .cfa -56 + ^
+STACK CFI INIT b7c90 615 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI b7c9d $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI b7cb5 .cfa: $rsp 112 +
+STACK CFI b7cb8 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT b82b0 d1b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI b82b2 .cfa: $rsp 16 +
+STACK CFI b82c2 .cfa: $rsp 24 +
+STACK CFI b82c4 .cfa: $rsp 32 +
+STACK CFI b82c6 .cfa: $rsp 40 +
+STACK CFI b82c7 .cfa: $rsp 48 +
+STACK CFI b82c8 .cfa: $rsp 56 +
+STACK CFI b82cf .cfa: $rsp 416 +
+STACK CFI b830f $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT b8fd0 925 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI b8fd1 .cfa: $rsp 16 +
+STACK CFI b8fd9 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI b8fe4 $r12: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI b9000 $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI INIT b9940 58 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT c921f 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI c922d .cfa: $rsp 0 +
+STACK CFI c9231 .cfa: $rsp 128 +
+STACK CFI c9239 .cfa: $rsp -128 +
+STACK CFI INIT c923e 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI c924c .cfa: $rsp 0 +
+STACK CFI c9250 .cfa: $rsp 128 +
+STACK CFI c9258 .cfa: $rsp -128 +
+STACK CFI INIT c925d 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI c926b .cfa: $rsp 0 +
+STACK CFI c926f .cfa: $rsp 128 +
+STACK CFI c9277 .cfa: $rsp -128 +
+STACK CFI INIT c927c 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI c928a .cfa: $rsp 0 +
+STACK CFI c928e .cfa: $rsp 128 +
+STACK CFI c9296 .cfa: $rsp -128 +
+STACK CFI INIT b99a0 5c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT b9a00 e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT b9a10 91 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT b9ab0 63 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT b9b20 141 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT b9c70 1c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT b9c90 38 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT b9cd0 213 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI b9cd2 .cfa: $rsp 16 +
+STACK CFI b9cd7 .cfa: $rsp 24 +
+STACK CFI b9cd9 .cfa: $rsp 32 +
+STACK CFI b9cdb .cfa: $rsp 40 +
+STACK CFI b9cde $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI b9ce3 .cfa: $rsp 48 +
+STACK CFI b9ce4 .cfa: $rsp 56 +
+STACK CFI b9ce8 .cfa: $rsp 144 +
+STACK CFI b9d0f $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT b9ef0 78 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT b9f70 1c7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI b9f7d $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI b9f8a $r13: .cfa -32 + ^ $r15: .cfa -16 + ^
+STACK CFI b9f9a .cfa: $rsp 112 +
+STACK CFI b9fad $r12: .cfa -40 + ^ $r14: .cfa -24 + ^
+STACK CFI INIT ba140 2ad .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ba142 .cfa: $rsp 16 +
+STACK CFI ba143 .cfa: $rsp 24 +
+STACK CFI ba146 $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^
+STACK CFI ba147 .cfa: $rsp 32 +
+STACK CFI ba14a $rbx: .cfa -32 + ^
+STACK CFI ba14e .cfa: $rsp 48 +
+STACK CFI INIT ba3f0 5f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ba3f2 .cfa: $rsp 16 +
+STACK CFI ba3f5 $r12: .cfa -16 + ^
+STACK CFI ba3f6 .cfa: $rsp 24 +
+STACK CFI ba3f9 $rbp: .cfa -24 + ^
+STACK CFI ba3fa .cfa: $rsp 32 +
+STACK CFI ba3fd $rbx: .cfa -32 + ^
+STACK CFI INIT ba450 53 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ba452 .cfa: $rsp 16 +
+STACK CFI ba455 $r12: .cfa -16 + ^
+STACK CFI ba456 .cfa: $rsp 24 +
+STACK CFI ba459 $rbp: .cfa -24 + ^
+STACK CFI ba45a .cfa: $rsp 32 +
+STACK CFI ba45d $rbx: .cfa -32 + ^
+STACK CFI INIT ba4b0 2c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ba4b1 .cfa: $rsp 16 +
+STACK CFI ba4b9 $rbx: .cfa -16 + ^
+STACK CFI INIT ba4e0 57 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ba4ed $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI ba4f1 .cfa: $rsp 32 +
+STACK CFI INIT ba540 fc .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ba541 .cfa: $rsp 16 +
+STACK CFI ba544 $rbx: .cfa -16 + ^
+STACK CFI ba548 .cfa: $rsp 48 +
+STACK CFI INIT ba640 a4 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ba642 .cfa: $rsp 16 +
+STACK CFI ba645 $r13: .cfa -16 + ^
+STACK CFI ba647 .cfa: $rsp 24 +
+STACK CFI ba648 .cfa: $rsp 32 +
+STACK CFI ba649 .cfa: $rsp 40 +
+STACK CFI ba64c $r12: .cfa -24 + ^ $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI ba650 .cfa: $rsp 64 +
+STACK CFI INIT ba6f0 15 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ba6f4 .cfa: $rsp 32 +
+STACK CFI INIT ba710 1ba .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ba71d $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI ba735 .cfa: $rsp 80 +
+STACK CFI ba741 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT ba8d0 8b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ba8de .cfa: $rsp 48 +
+STACK CFI ba8e5 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT ba960 59 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ba961 .cfa: $rsp 16 +
+STACK CFI ba964 $rbx: .cfa -16 + ^
+STACK CFI INIT ba9c0 e5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ba9c2 .cfa: $rsp 16 +
+STACK CFI ba9c4 .cfa: $rsp 24 +
+STACK CFI ba9c6 .cfa: $rsp 32 +
+STACK CFI ba9c8 .cfa: $rsp 40 +
+STACK CFI ba9c9 .cfa: $rsp 48 +
+STACK CFI ba9ca .cfa: $rsp 56 +
+STACK CFI ba9ce .cfa: $rsp 80 +
+STACK CFI ba9d5 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT baab0 5a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI baab2 .cfa: $rsp 16 +
+STACK CFI baab6 .cfa: $rsp 24 +
+STACK CFI baab9 $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^
+STACK CFI baaba .cfa: $rsp 32 +
+STACK CFI baabc $rbx: .cfa -32 + ^
+STACK CFI INIT bab10 35 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI bab11 .cfa: $rsp 16 +
+STACK CFI bab14 $rbx: .cfa -16 + ^
+STACK CFI INIT bab50 42 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI bab51 .cfa: $rsp 16 +
+STACK CFI bab54 $rbx: .cfa -16 + ^
+STACK CFI INIT baba0 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT babd0 14 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI babd8 .cfa: $rsp 16 +
+STACK CFI INIT babf0 5a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI babf1 .cfa: $rsp 16 +
+STACK CFI babf2 .cfa: $rsp 24 +
+STACK CFI babf6 .cfa: $rsp 32 +
+STACK CFI babf9 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT bac50 18c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI bac52 .cfa: $rsp 16 +
+STACK CFI bac54 .cfa: $rsp 24 +
+STACK CFI bac56 .cfa: $rsp 32 +
+STACK CFI bac59 $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI bac5b .cfa: $rsp 40 +
+STACK CFI bac5c .cfa: $rsp 48 +
+STACK CFI bac5d .cfa: $rsp 56 +
+STACK CFI bac61 .cfa: $rsp 64 +
+STACK CFI bac69 $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT bade0 44 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI bade1 .cfa: $rsp 16 +
+STACK CFI bade4 $rbx: .cfa -16 + ^
+STACK CFI INIT 1364c0 c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT bae30 ad .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI bae3d $r12: .cfa -16 + ^ $rbx: .cfa -32 + ^
+STACK CFI bae46 .cfa: $rsp 32 +
+STACK CFI bae48 $rbp: .cfa -24 + ^
+STACK CFI INIT baee0 231 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI baef3 .cfa: $rsp 32 +
+STACK CFI baefa $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI INIT bb120 a2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI bb12d $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI bb136 .cfa: $rsp 32 +
+STACK CFI bb13e $r12: .cfa -16 + ^
+STACK CFI INIT bb1d0 6c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI bb1de .cfa: $rsp 32 +
+STACK CFI bb1e6 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT bb240 f7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI bb242 .cfa: $rsp 16 +
+STACK CFI bb245 $r15: .cfa -16 + ^
+STACK CFI bb247 .cfa: $rsp 24 +
+STACK CFI bb24b $r14: .cfa -24 + ^
+STACK CFI bb24d .cfa: $rsp 32 +
+STACK CFI bb24f .cfa: $rsp 40 +
+STACK CFI bb250 .cfa: $rsp 48 +
+STACK CFI bb253 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $rbp: .cfa -48 + ^
+STACK CFI bb257 .cfa: $rsp 56 +
+STACK CFI bb25a $rbx: .cfa -56 + ^
+STACK CFI bb25e .cfa: $rsp 80 +
+STACK CFI INIT bb340 1c0 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI bb342 .cfa: $rsp 16 +
+STACK CFI bb346 .cfa: $rsp 24 +
+STACK CFI bb349 $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^
+STACK CFI bb34a .cfa: $rsp 32 +
+STACK CFI bb34d $rbx: .cfa -32 + ^
+STACK CFI INIT bb500 14b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI bb50e .cfa: $rsp 32 +
+STACK CFI bb513 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT bb650 d4 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI bb652 .cfa: $rsp 16 +
+STACK CFI bb655 $r15: .cfa -16 + ^
+STACK CFI bb657 .cfa: $rsp 24 +
+STACK CFI bb65a $r14: .cfa -24 + ^
+STACK CFI bb65c .cfa: $rsp 32 +
+STACK CFI bb65f $r13: .cfa -32 + ^
+STACK CFI bb661 .cfa: $rsp 40 +
+STACK CFI bb664 $r12: .cfa -40 + ^
+STACK CFI bb665 .cfa: $rsp 48 +
+STACK CFI bb668 $rbp: .cfa -48 + ^
+STACK CFI bb669 .cfa: $rsp 56 +
+STACK CFI bb66d .cfa: $rsp 64 +
+STACK CFI bb66f $rbx: .cfa -56 + ^
+STACK CFI INIT bb730 128 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI bb732 .cfa: $rsp 16 +
+STACK CFI bb735 $r15: .cfa -16 + ^
+STACK CFI bb737 .cfa: $rsp 24 +
+STACK CFI bb739 .cfa: $rsp 32 +
+STACK CFI bb73b .cfa: $rsp 40 +
+STACK CFI bb73e $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^
+STACK CFI bb73f .cfa: $rsp 48 +
+STACK CFI bb741 $rbp: .cfa -48 + ^
+STACK CFI bb742 .cfa: $rsp 56 +
+STACK CFI bb744 $rbx: .cfa -56 + ^
+STACK CFI bb748 .cfa: $rsp 96 +
+STACK CFI INIT bb860 223 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI bb862 .cfa: $rsp 16 +
+STACK CFI bb864 .cfa: $rsp 24 +
+STACK CFI bb866 .cfa: $rsp 32 +
+STACK CFI bb868 .cfa: $rsp 40 +
+STACK CFI bb869 .cfa: $rsp 48 +
+STACK CFI bb86c $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^
+STACK CFI bb86d .cfa: $rsp 56 +
+STACK CFI bb870 $rbx: .cfa -56 + ^
+STACK CFI bb874 .cfa: $rsp 80 +
+STACK CFI INIT bba90 79 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI bba91 .cfa: $rsp 16 +
+STACK CFI bba94 $rbp: .cfa -16 + ^
+STACK CFI bba95 .cfa: $rsp 24 +
+STACK CFI bba98 $rbx: .cfa -24 + ^
+STACK CFI bba9c .cfa: $rsp 32 +
+STACK CFI INIT bbb10 1f4 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI bbb1d $r12: .cfa -40 + ^ $r13: .cfa -32 + ^
+STACK CFI bbb2a $r14: .cfa -24 + ^ $rbx: .cfa -56 + ^
+STACK CFI bbb38 .cfa: $rsp 64 +
+STACK CFI bbb44 $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^
+STACK CFI INIT bbd10 230 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI bbd12 .cfa: $rsp 16 +
+STACK CFI bbd14 .cfa: $rsp 24 +
+STACK CFI bbd16 .cfa: $rsp 32 +
+STACK CFI bbd19 $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI bbd1f .cfa: $rsp 40 +
+STACK CFI bbd22 $r12: .cfa -40 + ^
+STACK CFI bbd23 .cfa: $rsp 48 +
+STACK CFI bbd26 $rbp: .cfa -48 + ^
+STACK CFI bbd27 .cfa: $rsp 56 +
+STACK CFI bbd2a $rbx: .cfa -56 + ^
+STACK CFI bbd2e .cfa: $rsp 128 +
+STACK CFI INIT bbf40 1d1 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI bbf4d $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI bbf65 .cfa: $rsp 96 +
+STACK CFI bbf80 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT bc120 b9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI bc12d $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI bc13b .cfa: $rsp 48 +
+STACK CFI bc145 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT bc1e0 2d1 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI bc1e2 .cfa: $rsp 16 +
+STACK CFI bc1e4 .cfa: $rsp 24 +
+STACK CFI bc1e7 $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI bc1e9 .cfa: $rsp 32 +
+STACK CFI bc1eb .cfa: $rsp 40 +
+STACK CFI bc1ee $r12: .cfa -40 + ^ $r13: .cfa -32 + ^
+STACK CFI bc1ef .cfa: $rsp 48 +
+STACK CFI bc1f2 $rbp: .cfa -48 + ^
+STACK CFI bc1f3 .cfa: $rsp 56 +
+STACK CFI bc1f7 .cfa: $rsp 96 +
+STACK CFI bc207 $rbx: .cfa -56 + ^
+STACK CFI INIT bc4c0 230 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI bc4c2 .cfa: $rsp 16 +
+STACK CFI bc4c4 .cfa: $rsp 24 +
+STACK CFI bc4c6 .cfa: $rsp 32 +
+STACK CFI bc4c8 .cfa: $rsp 40 +
+STACK CFI bc4c9 .cfa: $rsp 48 +
+STACK CFI bc4cc $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^
+STACK CFI bc4d1 .cfa: $rsp 56 +
+STACK CFI bc4d4 $rbx: .cfa -56 + ^
+STACK CFI bc4d8 .cfa: $rsp 128 +
+STACK CFI INIT bc6f0 9c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI bc6f1 .cfa: $rsp 16 +
+STACK CFI bc6f4 $rbp: .cfa -16 + ^
+STACK CFI bc6f5 .cfa: $rsp 24 +
+STACK CFI bc6f8 $rbx: .cfa -24 + ^
+STACK CFI bc6fc .cfa: $rsp 32 +
+STACK CFI INIT bc790 1db .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI bc792 .cfa: $rsp 16 +
+STACK CFI bc794 .cfa: $rsp 24 +
+STACK CFI bc796 .cfa: $rsp 32 +
+STACK CFI bc798 .cfa: $rsp 40 +
+STACK CFI bc799 .cfa: $rsp 48 +
+STACK CFI bc79c $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^
+STACK CFI bc79d .cfa: $rsp 56 +
+STACK CFI bc7a1 .cfa: $rsp 112 +
+STACK CFI bc7ab $rbx: .cfa -56 + ^
+STACK CFI INIT bc970 cd .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI bc971 .cfa: $rsp 16 +
+STACK CFI bc972 .cfa: $rsp 24 +
+STACK CFI bc975 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI bc979 .cfa: $rsp 32 +
+STACK CFI INIT bca40 118 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI bca4a .cfa: $rsp 16 +
+STACK CFI bca5b $rbx: .cfa -16 + ^
+STACK CFI INIT bcb60 b2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI bcb61 .cfa: $rsp 16 +
+STACK CFI bcb64 $rbp: .cfa -16 + ^
+STACK CFI bcb67 .cfa: $rsp 24 +
+STACK CFI bcb6a $rbx: .cfa -24 + ^
+STACK CFI bcb6e .cfa: $rsp 32 +
+STACK CFI INIT bcc20 70f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI bcc2d $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI bcc43 .cfa: $rsp 80 +
+STACK CFI bcc4f $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^
+STACK CFI INIT bd330 2e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI bd33e .cfa: $rsp 32 +
+STACK CFI bd341 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT bd360 9b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI bd362 .cfa: $rsp 16 +
+STACK CFI bd368 $r14: .cfa -16 + ^
+STACK CFI bd36a .cfa: $rsp 24 +
+STACK CFI bd36d $r13: .cfa -24 + ^
+STACK CFI bd36f .cfa: $rsp 32 +
+STACK CFI bd372 $r12: .cfa -32 + ^
+STACK CFI bd373 .cfa: $rsp 40 +
+STACK CFI bd378 $rbp: .cfa -40 + ^
+STACK CFI bd379 .cfa: $rsp 48 +
+STACK CFI bd37c $rbx: .cfa -48 + ^
+STACK CFI INIT bd400 66c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI bd402 .cfa: $rsp 16 +
+STACK CFI bd404 .cfa: $rsp 24 +
+STACK CFI bd406 .cfa: $rsp 32 +
+STACK CFI bd408 .cfa: $rsp 40 +
+STACK CFI bd409 .cfa: $rsp 48 +
+STACK CFI bd40a .cfa: $rsp 56 +
+STACK CFI bd40d $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI bd411 .cfa: $rsp 176 +
+STACK CFI INIT bda70 ec .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT bdb60 700 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI bdb6c $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI bdb87 .cfa: $rsp 128 +
+STACK CFI bdb8d $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT be260 112 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI be261 .cfa: $rsp 16 +
+STACK CFI be262 .cfa: $rsp 24 +
+STACK CFI be265 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI be269 .cfa: $rsp 32 +
+STACK CFI INIT be380 9a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI be38d $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI be396 .cfa: $rsp 32 +
+STACK CFI be3a2 $r12: .cfa -16 + ^
+STACK CFI INIT be420 38d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI be422 .cfa: $rsp 16 +
+STACK CFI be425 $r15: .cfa -16 + ^
+STACK CFI be427 .cfa: $rsp 24 +
+STACK CFI be429 .cfa: $rsp 32 +
+STACK CFI be42b .cfa: $rsp 40 +
+STACK CFI be42e $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^
+STACK CFI be42f .cfa: $rsp 48 +
+STACK CFI be430 .cfa: $rsp 56 +
+STACK CFI be433 $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI be437 .cfa: $rsp 112 +
+STACK CFI INIT be7b0 15d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI be7b2 .cfa: $rsp 16 +
+STACK CFI be7b4 .cfa: $rsp 24 +
+STACK CFI be7b6 .cfa: $rsp 32 +
+STACK CFI be7b8 .cfa: $rsp 40 +
+STACK CFI be7b9 .cfa: $rsp 48 +
+STACK CFI be7bc $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^
+STACK CFI be7bd .cfa: $rsp 56 +
+STACK CFI be7c0 $rbx: .cfa -56 + ^
+STACK CFI be7c4 .cfa: $rsp 96 +
+STACK CFI INIT be910 253 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI be912 .cfa: $rsp 16 +
+STACK CFI be914 .cfa: $rsp 24 +
+STACK CFI be917 $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI be919 .cfa: $rsp 32 +
+STACK CFI be91b .cfa: $rsp 40 +
+STACK CFI be91e $r12: .cfa -40 + ^ $r13: .cfa -32 + ^
+STACK CFI be91f .cfa: $rsp 48 +
+STACK CFI be922 $rbp: .cfa -48 + ^
+STACK CFI be923 .cfa: $rsp 56 +
+STACK CFI be927 .cfa: $rsp 64 +
+STACK CFI be935 $rbx: .cfa -56 + ^
+STACK CFI INIT beb70 259 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI beb72 .cfa: $rsp 16 +
+STACK CFI beb74 .cfa: $rsp 24 +
+STACK CFI beb76 .cfa: $rsp 32 +
+STACK CFI beb78 .cfa: $rsp 40 +
+STACK CFI beb7b $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI beb7c .cfa: $rsp 48 +
+STACK CFI beb7e $rbp: .cfa -48 + ^
+STACK CFI beb7f .cfa: $rsp 56 +
+STACK CFI beb82 $rbx: .cfa -56 + ^
+STACK CFI beb88 .cfa: $rsp 160 +
+STACK CFI INIT bedd0 d1 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI bedd2 .cfa: $rsp 16 +
+STACK CFI bedd5 $r15: .cfa -16 + ^
+STACK CFI bedd7 .cfa: $rsp 24 +
+STACK CFI bedd9 .cfa: $rsp 32 +
+STACK CFI beddb .cfa: $rsp 40 +
+STACK CFI beddc .cfa: $rsp 48 +
+STACK CFI beddf $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $rbp: .cfa -48 + ^
+STACK CFI bede0 .cfa: $rsp 56 +
+STACK CFI bede3 $rbx: .cfa -56 + ^
+STACK CFI bede7 .cfa: $rsp 112 +
+STACK CFI INIT beeb0 b3d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI beeb2 .cfa: $rsp 16 +
+STACK CFI beebb .cfa: $rsp 24 +
+STACK CFI beebd .cfa: $rsp 32 +
+STACK CFI beebf .cfa: $rsp 40 +
+STACK CFI beec2 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI beec3 .cfa: $rsp 48 +
+STACK CFI beec4 .cfa: $rsp 56 +
+STACK CFI beec7 $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI beecb .cfa: $rsp 160 +
+STACK CFI INIT bf9f0 775 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI bf9f2 .cfa: $rsp 16 +
+STACK CFI bf9f4 .cfa: $rsp 24 +
+STACK CFI bf9f6 .cfa: $rsp 32 +
+STACK CFI bf9f8 .cfa: $rsp 40 +
+STACK CFI bf9f9 .cfa: $rsp 48 +
+STACK CFI bf9fb $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^
+STACK CFI bf9fc .cfa: $rsp 56 +
+STACK CFI bf9fe $rbx: .cfa -56 + ^
+STACK CFI bfa05 .cfa: $rsp 240 +
+STACK CFI INIT c0170 215 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c017d $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI c018a $r12: .cfa -40 + ^ $r13: .cfa -32 + ^
+STACK CFI c0198 .cfa: $rsp 96 +
+STACK CFI c019b $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT c0390 7ec .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c0392 .cfa: $rsp 16 +
+STACK CFI c0394 .cfa: $rsp 24 +
+STACK CFI c0396 .cfa: $rsp 32 +
+STACK CFI c0398 .cfa: $rsp 40 +
+STACK CFI c039b $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI c039c .cfa: $rsp 48 +
+STACK CFI c039d .cfa: $rsp 56 +
+STACK CFI c03a4 .cfa: $rsp 288 +
+STACK CFI c03c9 $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT c0b80 1dd .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c0b8d $r13: .cfa -32 + ^ $rbx: .cfa -56 + ^
+STACK CFI c0ba8 .cfa: $rsp 96 +
+STACK CFI c0bab $r12: .cfa -40 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^
+STACK CFI INIT c0d60 35d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c0d62 .cfa: $rsp 16 +
+STACK CFI c0d64 .cfa: $rsp 24 +
+STACK CFI c0d66 .cfa: $rsp 32 +
+STACK CFI c0d68 .cfa: $rsp 40 +
+STACK CFI c0d69 .cfa: $rsp 48 +
+STACK CFI c0d6a .cfa: $rsp 56 +
+STACK CFI c0d71 .cfa: $rsp 192 +
+STACK CFI c0d92 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT c10c0 835 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c10c2 .cfa: $rsp 16 +
+STACK CFI c10c7 .cfa: $rsp 24 +
+STACK CFI c10c9 .cfa: $rsp 32 +
+STACK CFI c10cb .cfa: $rsp 40 +
+STACK CFI c10ce $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI c10cf .cfa: $rsp 48 +
+STACK CFI c10d0 .cfa: $rsp 56 +
+STACK CFI c10d3 $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI c10da .cfa: $rsp 240 +
+STACK CFI INIT c1900 da8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c1901 .cfa: $rsp 16 +
+STACK CFI c1904 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI c190d $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI c1923 $r12: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT c26b0 834 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c26b1 .cfa: $rsp 16 +
+STACK CFI c26b7 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI c26c3 $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT c2ef0 1592 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c2ef2 .cfa: $rsp 16 +
+STACK CFI c2ef4 .cfa: $rsp 24 +
+STACK CFI c2ef6 .cfa: $rsp 32 +
+STACK CFI c2ef8 .cfa: $rsp 40 +
+STACK CFI c2efb $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI c2efc .cfa: $rsp 48 +
+STACK CFI c2efd .cfa: $rsp 56 +
+STACK CFI c2eff $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI c2f0b .cfa: $rsp 528 +
+STACK CFI INIT c4490 133 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c449d $r12: .cfa -32 + ^ $rbx: .cfa -48 + ^
+STACK CFI c44aa $r13: .cfa -24 + ^ $r14: .cfa -16 + ^
+STACK CFI c44b3 .cfa: $rsp 96 +
+STACK CFI c44c3 $rbp: .cfa -40 + ^
+STACK CFI INIT c45d0 27 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c45de .cfa: $rsp 16 +
+STACK CFI INIT 1119e0 9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT c4600 c8e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c4602 .cfa: $rsp 16 +
+STACK CFI c4604 .cfa: $rsp 24 +
+STACK CFI c4607 $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI c4609 .cfa: $rsp 32 +
+STACK CFI c460c $r13: .cfa -32 + ^
+STACK CFI c460e .cfa: $rsp 40 +
+STACK CFI c4611 $r12: .cfa -40 + ^
+STACK CFI c4612 .cfa: $rsp 48 +
+STACK CFI c4615 $rbp: .cfa -48 + ^
+STACK CFI c4616 .cfa: $rsp 56 +
+STACK CFI c4619 $rbx: .cfa -56 + ^
+STACK CFI c461d .cfa: $rsp 64 +
+STACK CFI INIT c5290 1cc .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c5292 .cfa: $rsp 16 +
+STACK CFI c5295 $r15: .cfa -16 + ^
+STACK CFI c5297 .cfa: $rsp 24 +
+STACK CFI c529a $r14: .cfa -24 + ^
+STACK CFI c529c .cfa: $rsp 32 +
+STACK CFI c529e .cfa: $rsp 40 +
+STACK CFI c52a1 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^
+STACK CFI c52a7 .cfa: $rsp 48 +
+STACK CFI c52aa $rbp: .cfa -48 + ^
+STACK CFI c52ab .cfa: $rsp 56 +
+STACK CFI c52af .cfa: $rsp 128 +
+STACK CFI c52c6 $rbx: .cfa -56 + ^
+STACK CFI INIT c5460 a6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c546d $r12: .cfa -24 + ^ $rbx: .cfa -40 + ^
+STACK CFI c547b .cfa: $rsp 48 +
+STACK CFI c5483 $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^
+STACK CFI INIT c5510 6cd .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c5511 .cfa: $rsp 16 +
+STACK CFI c5514 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI c551b $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI c5522 $r12: .cfa -48 + ^ $r13: .cfa -40 + ^
+STACK CFI c5525 $rbx: .cfa -56 + ^
+STACK CFI INIT c5be0 122 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c5be2 .cfa: $rsp 16 +
+STACK CFI c5be8 .cfa: $rsp 24 +
+STACK CFI c5be9 .cfa: $rsp 32 +
+STACK CFI c5bed $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI INIT c5d10 495 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c5d12 .cfa: $rsp 16 +
+STACK CFI c5d14 .cfa: $rsp 24 +
+STACK CFI c5d17 $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI c5d19 .cfa: $rsp 32 +
+STACK CFI c5d1c $r13: .cfa -32 + ^
+STACK CFI c5d1e .cfa: $rsp 40 +
+STACK CFI c5d1f .cfa: $rsp 48 +
+STACK CFI c5d20 .cfa: $rsp 56 +
+STACK CFI c5d24 .cfa: $rsp 160 +
+STACK CFI c5d36 $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT c61b0 112 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c61bd $r13: .cfa -24 + ^ $rbp: .cfa -40 + ^
+STACK CFI c61ca $r14: .cfa -16 + ^ $rbx: .cfa -48 + ^
+STACK CFI c61d3 .cfa: $rsp 96 +
+STACK CFI c61e7 $r12: .cfa -32 + ^
+STACK CFI INIT c62d0 2f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c62d4 .cfa: $rsp 48 +
+STACK CFI INIT c6300 2f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c6304 .cfa: $rsp 48 +
+STACK CFI INIT c6330 1d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c6334 .cfa: $rsp 32 +
+STACK CFI INIT c6350 20 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c6354 .cfa: $rsp 32 +
+STACK CFI INIT c6370 1daf .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c6372 .cfa: $rsp 16 +
+STACK CFI c6378 $r15: .cfa -16 + ^
+STACK CFI c637d .cfa: $rsp 24 +
+STACK CFI c6380 $r14: .cfa -24 + ^
+STACK CFI c6389 .cfa: $rsp 32 +
+STACK CFI c6390 $r13: .cfa -32 + ^
+STACK CFI c6392 .cfa: $rsp 40 +
+STACK CFI c6395 $r12: .cfa -40 + ^
+STACK CFI c6396 .cfa: $rsp 48 +
+STACK CFI c6399 $rbp: .cfa -48 + ^
+STACK CFI c639a .cfa: $rsp 56 +
+STACK CFI c63a1 .cfa: $rsp 448 +
+STACK CFI c63bc $rbx: .cfa -56 + ^
+STACK CFI INIT c8120 145 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c8122 .cfa: $rsp 16 +
+STACK CFI c8125 $r15: .cfa -16 + ^
+STACK CFI c8127 .cfa: $rsp 24 +
+STACK CFI c8129 .cfa: $rsp 32 +
+STACK CFI c812c $r13: .cfa -32 + ^ $r14: .cfa -24 + ^
+STACK CFI c812e .cfa: $rsp 40 +
+STACK CFI c812f .cfa: $rsp 48 +
+STACK CFI c8132 $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^
+STACK CFI c8133 .cfa: $rsp 56 +
+STACK CFI c8136 $rbx: .cfa -56 + ^
+STACK CFI c813a .cfa: $rsp 96 +
+STACK CFI INIT c8270 fd .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c8272 .cfa: $rsp 16 +
+STACK CFI c8274 .cfa: $rsp 24 +
+STACK CFI c8276 .cfa: $rsp 32 +
+STACK CFI c8279 $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI c827b .cfa: $rsp 40 +
+STACK CFI c827e $r12: .cfa -40 + ^
+STACK CFI c827f .cfa: $rsp 48 +
+STACK CFI c8280 .cfa: $rsp 56 +
+STACK CFI c8283 $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI c8287 .cfa: $rsp 96 +
+STACK CFI INIT c8370 bad .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c8372 .cfa: $rsp 16 +
+STACK CFI c8375 $r15: .cfa -16 + ^
+STACK CFI c8377 .cfa: $rsp 24 +
+STACK CFI c8379 .cfa: $rsp 32 +
+STACK CFI c837b .cfa: $rsp 40 +
+STACK CFI c837e $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^
+STACK CFI c837f .cfa: $rsp 48 +
+STACK CFI c8382 $rbp: .cfa -48 + ^
+STACK CFI c8383 .cfa: $rsp 56 +
+STACK CFI c838a .cfa: $rsp 256 +
+STACK CFI c83b1 $rbx: .cfa -56 + ^
+STACK CFI INIT c8f20 138 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c8f2d $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI c8f36 .cfa: $rsp 32 +
+STACK CFI c8f3f $r12: .cfa -16 + ^
+STACK CFI INIT c9060 79 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c9064 .cfa: $rsp 16 +
+STACK CFI INIT c90e0 13f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c9102 .cfa: $rsp 48 +
+STACK CFI c9108 $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^ $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI INIT c92a0 b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT c92b0 4a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c92be .cfa: $rsp 32 +
+STACK CFI c92c0 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT c9300 14 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c9304 .cfa: $rsp 16 +
+STACK CFI INIT c9320 88 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c932d $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI c9331 .cfa: $rsp 32 +
+STACK CFI INIT c93b0 b8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c93bd $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI c93d7 .cfa: $rsp 48 +
+STACK CFI c93da $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^
+STACK CFI INIT c9470 98 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c947d $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI c948b .cfa: $rsp 32 +
+STACK CFI c948e $r12: .cfa -16 + ^
+STACK CFI INIT c9510 b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT c9520 3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT c9530 86 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT c95c0 86 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT c9650 9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT c9660 13 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT c9680 8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT c9690 6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT c96a0 15 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c96a4 .cfa: $rsp 32 +
+STACK CFI INIT c96c0 15 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c96c4 .cfa: $rsp 32 +
+STACK CFI INIT c96e0 84 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c96e1 .cfa: $rsp 16 +
+STACK CFI c96e9 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI c96ff $rbx: .cfa -24 + ^
+STACK CFI INIT c9770 59a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c9771 .cfa: $rsp 16 +
+STACK CFI c9779 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI c97c2 $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT c9d10 8c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT c9da0 b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT c9db0 b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT c9dc0 8c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT c9e50 14 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT c9e70 b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT c9e80 d9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c9e81 .cfa: $rsp 16 +
+STACK CFI c9e89 .cfa: $rsp 24 +
+STACK CFI c9e90 .cfa: $rsp 1328 +
+STACK CFI c9e93 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT c9f60 39 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c9f6b .cfa: $rsp 16 +
+STACK CFI INIT ca409 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI ca417 .cfa: $rsp 0 +
+STACK CFI ca41b .cfa: $rsp 128 +
+STACK CFI ca423 .cfa: $rsp -128 +
+STACK CFI INIT ca428 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI ca436 .cfa: $rsp 0 +
+STACK CFI ca43a .cfa: $rsp 128 +
+STACK CFI ca442 .cfa: $rsp -128 +
+STACK CFI INIT c9fa0 1b5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c9fc0 .cfa: $rsp 1344 +
+STACK CFI c9fc3 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI INIT ca160 255 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ca161 .cfa: $rsp 16 +
+STACK CFI ca166 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI ca16d $r12: .cfa -48 + ^
+STACK CFI ca17f $r14: .cfa -32 + ^ $rbx: .cfa -56 + ^
+STACK CFI ca190 $r13: .cfa -40 + ^ $r15: .cfa -24 + ^
+STACK CFI INIT ca3c0 49 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ca3ce .cfa: $rsp 32 +
+STACK CFI ca3d1 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT ca450 5c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ca451 .cfa: $rsp 16 +
+STACK CFI ca454 $rbp: .cfa -16 + ^
+STACK CFI ca455 .cfa: $rsp 24 +
+STACK CFI ca459 .cfa: $rsp 32 +
+STACK CFI ca45e $rbx: .cfa -24 + ^
+STACK CFI INIT ca4b0 b3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ca4bd $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI ca4c6 .cfa: $rsp 48 +
+STACK CFI ca4d2 $r12: .cfa -16 + ^
+STACK CFI INIT ca570 63 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ca571 .cfa: $rsp 16 +
+STACK CFI ca574 $rbx: .cfa -16 + ^
+STACK CFI ca578 .cfa: $rsp 32 +
+STACK CFI INIT ca5e0 ee .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ca5ed $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI ca5fa $r12: .cfa -32 + ^ $r13: .cfa -24 + ^
+STACK CFI ca603 .cfa: $rsp 48 +
+STACK CFI ca60f $r14: .cfa -16 + ^
+STACK CFI INIT ca6d0 c2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ca6dd $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI ca6e6 .cfa: $rsp 32 +
+STACK CFI ca6e9 $r12: .cfa -16 + ^
+STACK CFI INIT ca7a0 e9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ca7ad $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI ca7ba $r12: .cfa -32 + ^ $r13: .cfa -24 + ^
+STACK CFI ca7c3 .cfa: $rsp 48 +
+STACK CFI ca7d8 $r14: .cfa -16 + ^
+STACK CFI INIT ca890 7a2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ca892 .cfa: $rsp 16 +
+STACK CFI ca895 $r15: .cfa -16 + ^
+STACK CFI ca897 .cfa: $rsp 24 +
+STACK CFI ca899 .cfa: $rsp 32 +
+STACK CFI ca89b .cfa: $rsp 40 +
+STACK CFI ca89c .cfa: $rsp 48 +
+STACK CFI ca89d .cfa: $rsp 56 +
+STACK CFI ca8a0 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI ca8a7 .cfa: $rsp 448 +
+STACK CFI INIT cb040 1a7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI cb042 .cfa: $rsp 16 +
+STACK CFI cb044 .cfa: $rsp 24 +
+STACK CFI cb046 .cfa: $rsp 32 +
+STACK CFI cb048 .cfa: $rsp 40 +
+STACK CFI cb049 .cfa: $rsp 48 +
+STACK CFI cb04c $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^
+STACK CFI cb04d .cfa: $rsp 56 +
+STACK CFI cb050 $rbx: .cfa -56 + ^
+STACK CFI cb054 .cfa: $rsp 160 +
+STACK CFI INIT cb1f0 12e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI cb1f2 .cfa: $rsp 16 +
+STACK CFI cb1f5 $r12: .cfa -16 + ^
+STACK CFI cb1f6 .cfa: $rsp 24 +
+STACK CFI cb1f9 $rbp: .cfa -24 + ^
+STACK CFI cb1fa .cfa: $rsp 32 +
+STACK CFI cb1fd $rbx: .cfa -32 + ^
+STACK CFI INIT cb320 10f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI cb322 .cfa: $rsp 16 +
+STACK CFI cb323 .cfa: $rsp 24 +
+STACK CFI cb326 $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^
+STACK CFI cb327 .cfa: $rsp 32 +
+STACK CFI cb32a $rbx: .cfa -32 + ^
+STACK CFI cb32e .cfa: $rsp 48 +
+STACK CFI INIT cb430 10b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI cb432 .cfa: $rsp 16 +
+STACK CFI cb433 .cfa: $rsp 24 +
+STACK CFI cb434 .cfa: $rsp 32 +
+STACK CFI cb437 $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI cb43b .cfa: $rsp 64 +
+STACK CFI INIT cb540 7c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI cb54d $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI cb55b .cfa: $rsp 48 +
+STACK CFI cb564 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT cb5c0 3ea .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI cb5c1 .cfa: $rsp 16 +
+STACK CFI cb5c4 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI cb5f2 $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT cb9b0 17e6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI cb9b2 .cfa: $rsp 16 +
+STACK CFI cb9b4 .cfa: $rsp 24 +
+STACK CFI cb9b6 .cfa: $rsp 32 +
+STACK CFI cb9b8 .cfa: $rsp 40 +
+STACK CFI cb9bb $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI cb9bc .cfa: $rsp 48 +
+STACK CFI cb9bd .cfa: $rsp 56 +
+STACK CFI cb9c0 $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI cb9c7 .cfa: $rsp 320 +
+STACK CFI INIT cd1a0 414 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI cd1a2 .cfa: $rsp 16 +
+STACK CFI cd1a4 .cfa: $rsp 24 +
+STACK CFI cd1a6 .cfa: $rsp 32 +
+STACK CFI cd1a8 .cfa: $rsp 40 +
+STACK CFI cd1a9 .cfa: $rsp 48 +
+STACK CFI cd1ac $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^
+STACK CFI cd1ad .cfa: $rsp 56 +
+STACK CFI cd1b0 $rbx: .cfa -56 + ^
+STACK CFI cd1b7 .cfa: $rsp 208 +
+STACK CFI INIT cd5c0 cd7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI cd5c2 .cfa: $rsp 16 +
+STACK CFI cd5c5 $r15: .cfa -16 + ^
+STACK CFI cd5c7 .cfa: $rsp 24 +
+STACK CFI cd5c9 .cfa: $rsp 32 +
+STACK CFI cd5cb .cfa: $rsp 40 +
+STACK CFI cd5cc .cfa: $rsp 48 +
+STACK CFI cd5cd .cfa: $rsp 56 +
+STACK CFI cd5d0 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI cd5d7 .cfa: $rsp 400 +
+STACK CFI INIT ce2a0 14 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ce2c0 24 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ce2f0 45 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ce2f4 .cfa: $rsp 16 +
+STACK CFI ce31f .cfa: $rsp 8 +
+STACK CFI INIT ce340 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ce370 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ce374 .cfa: $rsp 32 +
+STACK CFI INIT ce3a0 28 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ce3a4 .cfa: $rsp 32 +
+STACK CFI INIT ce3d0 44 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ce420 44 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ce470 44 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ce4c0 54 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ce520 54 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ce580 4c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ce5d0 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ce600 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ce630 8d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ce63d $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI ce64e .cfa: $rsp 320 +
+STACK CFI ce659 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT ce6c0 8c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ce6cd $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI ce6de .cfa: $rsp 320 +
+STACK CFI ce6e9 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT ce750 8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ce760 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ce790 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ce7c0 64 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ce830 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ce860 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ce890 5e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ce8ad .cfa: $rsp 16 +
+STACK CFI ce8d0 .cfa: $rsp 8 +
+STACK CFI INIT ce8f0 2a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ce920 d8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ce924 .cfa: $rsp 128 +
+STACK CFI INIT cea00 20 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI cea04 .cfa: $rsp 16 +
+STACK CFI INIT cea20 5e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI cea3d .cfa: $rsp 16 +
+STACK CFI cea60 .cfa: $rsp 8 +
+STACK CFI INIT cea80 5e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI cea9d .cfa: $rsp 16 +
+STACK CFI ceac0 .cfa: $rsp 8 +
+STACK CFI INIT ceae0 5e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ceafd .cfa: $rsp 16 +
+STACK CFI ceb20 .cfa: $rsp 8 +
+STACK CFI INIT ceb40 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ceb70 13d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ceb7c $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI ceb8d .cfa: $rsp 192 +
+STACK CFI ceb9b $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT cecb0 183 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI cecbc $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI cecc8 .cfa: $rsp 176 +
+STACK CFI cecd6 $r12: .cfa -16 + ^
+STACK CFI INIT cee40 ca .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT cef10 2e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI cef14 .cfa: $rsp 96 +
+STACK CFI INIT cef40 7f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI cef41 .cfa: $rsp 16 +
+STACK CFI cef44 $rbp: .cfa -16 + ^
+STACK CFI cef45 .cfa: $rsp 24 +
+STACK CFI cef49 .cfa: $rsp 128 +
+STACK CFI cef72 $rbx: .cfa -24 + ^
+STACK CFI INIT cefc0 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ceff0 105 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ceff1 .cfa: $rsp 16 +
+STACK CFI ceff5 .cfa: $rsp 48 +
+STACK CFI cf024 $rbx: .cfa -16 + ^
+STACK CFI INIT cf100 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT cf130 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT cf160 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT cf190 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT cf1c0 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT cf1f0 5e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI cf20d .cfa: $rsp 16 +
+STACK CFI cf230 .cfa: $rsp 8 +
+STACK CFI INIT cf250 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT cf280 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT cf2b0 148 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI cf2bd $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI cf2c6 .cfa: $rsp 48 +
+STACK CFI cf2ce $r12: .cfa -16 + ^
+STACK CFI INIT cf400 83 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI cf411 .cfa: $rsp 4128 +
+STACK CFI cf417 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT cf490 8b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI cf491 .cfa: $rsp 16 +
+STACK CFI cf49f $rbx: .cfa -16 + ^ .cfa: $rsp 304 +
+STACK CFI INIT cf520 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT cf550 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT cf580 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT cf5b0 2c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 1119f0 230 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1119f2 .cfa: $rsp 16 +
+STACK CFI 1119f4 .cfa: $rsp 24 +
+STACK CFI 1119f6 .cfa: $rsp 32 +
+STACK CFI 1119f9 $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI 1119fb .cfa: $rsp 40 +
+STACK CFI 1119fc .cfa: $rsp 48 +
+STACK CFI 1119fd .cfa: $rsp 56 +
+STACK CFI 111a00 $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 111a07 .cfa: $rsp 272 +
+STACK CFI INIT cf5e0 307 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI cf5ed $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^
+STACK CFI cf5fe .cfa: $rsp 448 +
+STACK CFI cf61c $r12: .cfa -24 + ^ $rbx: .cfa -40 + ^
+STACK CFI INIT 111c20 1ae .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 111c22 .cfa: $rsp 16 +
+STACK CFI 111c24 .cfa: $rsp 24 +
+STACK CFI 111c26 .cfa: $rsp 32 +
+STACK CFI 111c29 $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI 111c2b .cfa: $rsp 40 +
+STACK CFI 111c2c .cfa: $rsp 48 +
+STACK CFI 111c2d .cfa: $rsp 56 +
+STACK CFI 111c30 $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 111c37 .cfa: $rsp 256 +
+STACK CFI INIT cf8f0 31a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI cf8fd $r12: .cfa -40 + ^ $rbx: .cfa -56 + ^
+STACK CFI cf91b .cfa: $rsp 464 +
+STACK CFI cf922 $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^
+STACK CFI INIT cfc10 19 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI cfc14 .cfa: $rsp 80 +
+STACK CFI INIT cfc30 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT cfc60 2d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT cfc90 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT cfcc0 24 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT cfcf0 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT cfd20 29 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT cfd50 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT cfd80 27 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT cfdb0 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT cfde0 93 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI cfde4 .cfa: $rsp 48 +
+STACK CFI INIT cfe80 c1 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI cfe84 .cfa: $rsp 64 +
+STACK CFI INIT cff50 1f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT cff70 1a2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI cff7d $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI cff95 .cfa: $rsp 320 +
+STACK CFI cff9b $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^
+STACK CFI INIT d0120 46 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d0121 .cfa: $rsp 16 +
+STACK CFI d0126 $rbx: .cfa -16 + ^
+STACK CFI INIT d0170 28 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d01a0 44 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d01f0 44 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d0240 14 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d0260 38 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d02a0 67 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d02ad $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI d02b1 .cfa: $rsp 32 +
+STACK CFI INIT d0310 335 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d031d $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI d032a $r12: .cfa -32 + ^ $r14: .cfa -16 + ^
+STACK CFI d0336 .cfa: $rsp 224 +
+STACK CFI d0345 $r13: .cfa -24 + ^
+STACK CFI INIT d0650 690 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d0652 .cfa: $rsp 16 +
+STACK CFI d0654 .cfa: $rsp 24 +
+STACK CFI d0656 .cfa: $rsp 32 +
+STACK CFI d0658 .cfa: $rsp 40 +
+STACK CFI d0659 .cfa: $rsp 48 +
+STACK CFI d065a .cfa: $rsp 56 +
+STACK CFI d065d $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI d0661 .cfa: $rsp 160 +
+STACK CFI INIT d0ce0 4cd .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d0ce1 .cfa: $rsp 16 +
+STACK CFI d0ce4 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI d0cef $r12: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI d0d0b $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI INIT 111dd0 16 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d11b0 34 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d11f0 f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d1200 24 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d1230 24 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d1234 .cfa: $rsp 16 +
+STACK CFI d1236 $rbx: .cfa -16 + ^
+STACK CFI INIT d1260 c4 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d1262 .cfa: $rsp 16 +
+STACK CFI d1263 .cfa: $rsp 24 +
+STACK CFI d1264 .cfa: $rsp 32 +
+STACK CFI d1267 $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI INIT d1330 c2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d1338 $r12: .cfa -24 + ^
+STACK CFI d134b .cfa: $rsp 48 +
+STACK CFI d135f $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI INIT d1400 78 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d1401 .cfa: $rsp 16 +
+STACK CFI d1407 $rbx: .cfa -16 + ^
+STACK CFI INIT d1480 1af .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d148d $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI d149e .cfa: $rsp 192 +
+STACK CFI d14a8 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT d1630 121 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d163c $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI d1649 $r12: .cfa -32 + ^ $r13: .cfa -24 + ^
+STACK CFI d1655 .cfa: $rsp 192 +
+STACK CFI d165e $r14: .cfa -16 + ^
+STACK CFI INIT d1760 dc .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d1762 .cfa: $rsp 16 +
+STACK CFI d1765 $r12: .cfa -16 + ^
+STACK CFI d1766 .cfa: $rsp 24 +
+STACK CFI d1768 $rbp: .cfa -24 + ^
+STACK CFI d1769 .cfa: $rsp 32 +
+STACK CFI d176f $rbx: .cfa -32 + ^
+STACK CFI INIT d1840 6b1 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d1842 .cfa: $rsp 16 +
+STACK CFI d1844 .cfa: $rsp 24 +
+STACK CFI d1846 .cfa: $rsp 32 +
+STACK CFI d1848 .cfa: $rsp 40 +
+STACK CFI d1849 .cfa: $rsp 48 +
+STACK CFI d184a .cfa: $rsp 56 +
+STACK CFI d184d $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI d1851 .cfa: $rsp 176 +
+STACK CFI INIT d1f00 13c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d1f0d $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI d1f16 .cfa: $rsp 48 +
+STACK CFI d1f1e $r12: .cfa -16 + ^
+STACK CFI INIT d2040 2cd .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d2042 .cfa: $rsp 16 +
+STACK CFI d2044 .cfa: $rsp 24 +
+STACK CFI d2046 .cfa: $rsp 32 +
+STACK CFI d2048 .cfa: $rsp 40 +
+STACK CFI d204b $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI d204c .cfa: $rsp 48 +
+STACK CFI d204f $rbp: .cfa -48 + ^
+STACK CFI d2050 .cfa: $rsp 56 +
+STACK CFI d2054 .cfa: $rsp 96 +
+STACK CFI d205c $rbx: .cfa -56 + ^
+STACK CFI INIT d2310 54b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d231d $r12: .cfa -32 + ^ $rbx: .cfa -48 + ^
+STACK CFI d2330 .cfa: $rsp 48 +
+STACK CFI d2333 $r13: .cfa -24 + ^ $r14: .cfa -16 + ^ $rbp: .cfa -40 + ^
+STACK CFI INIT d2860 4fe .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d2862 .cfa: $rsp 16 +
+STACK CFI d2864 .cfa: $rsp 24 +
+STACK CFI d2866 .cfa: $rsp 32 +
+STACK CFI d2868 .cfa: $rsp 40 +
+STACK CFI d2869 .cfa: $rsp 48 +
+STACK CFI d286a .cfa: $rsp 56 +
+STACK CFI d286d $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI d2874 .cfa: $rsp 1312 +
+STACK CFI INIT d2d60 ab .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d2d61 .cfa: $rsp 16 +
+STACK CFI d2d68 $rbx: .cfa -16 + ^
+STACK CFI INIT d2e10 28 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d2e40 21 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d2e44 .cfa: $rsp 16 +
+STACK CFI INIT d2e70 21 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d2e74 .cfa: $rsp 16 +
+STACK CFI INIT d2ea0 2a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d2ed0 9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d2ee0 12 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d2f00 44 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d2f50 54 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d2fb0 8b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d2fb2 .cfa: $rsp 16 +
+STACK CFI d2fc3 $r12: .cfa -16 + ^
+STACK CFI d2fc4 .cfa: $rsp 24 +
+STACK CFI d2fc5 .cfa: $rsp 32 +
+STACK CFI d2fc7 $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI INIT d3040 1e7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d3042 .cfa: $rsp 16 +
+STACK CFI d3051 .cfa: $rsp 24 +
+STACK CFI d3052 .cfa: $rsp 32 +
+STACK CFI d3054 $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI INIT d3230 a8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d32e0 28 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d32e4 .cfa: $rsp 32 +
+STACK CFI INIT d3310 1e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d3314 .cfa: $rsp 32 +
+STACK CFI INIT d3330 93 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d3334 .cfa: $rsp 32 +
+STACK CFI INIT d33d0 e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d33e0 e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d33f0 36 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d3430 28 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d3460 b7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d346c $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI d3475 .cfa: $rsp 48 +
+STACK CFI d347f $r12: .cfa -16 + ^
+STACK CFI INIT d3520 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d3550 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d3580 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d35b0 11e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d35b1 .cfa: $rsp 16 +
+STACK CFI d35b5 .cfa: $rsp 112 +
+STACK CFI d35da $rbx: .cfa -16 + ^
+STACK CFI INIT d36d0 70 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d36d8 $rbx: .cfa -32 + ^
+STACK CFI d36e6 .cfa: $rsp 48 +
+STACK CFI d36e8 $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^
+STACK CFI INIT d3740 e4 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d3741 .cfa: $rsp 16 +
+STACK CFI d3744 $rbx: .cfa -16 + ^
+STACK CFI d374f .cfa: $rsp 160 +
+STACK CFI INIT d3830 37 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d3831 .cfa: $rsp 16 +
+STACK CFI d3834 $rbx: .cfa -16 + ^
+STACK CFI INIT d3870 33 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d38b0 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d38e0 a0 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d38f5 .cfa: $rsp 32 +
+STACK CFI d38fc $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI INIT d3980 63 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d39f0 a9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d39fd $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^
+STACK CFI d3a06 .cfa: $rsp 32 +
+STACK CFI d3a11 $rbx: .cfa -32 + ^
+STACK CFI INIT d3aa0 16 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d3ac0 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d3af0 9b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d3af4 .cfa: $rsp 48 +
+STACK CFI INIT d3b90 9b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d3b94 .cfa: $rsp 48 +
+STACK CFI INIT d3c30 17f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d3c31 .cfa: $rsp 16 +
+STACK CFI d3c34 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI d3c3b $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI d3c40 $r13: .cfa -40 + ^
+STACK CFI d3c45 $r12: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT d3db0 109 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d3dbd $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI d3dcb .cfa: $rsp 64 +
+STACK CFI d3dd4 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT d3ec0 165 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d3ec1 .cfa: $rsp 16 +
+STACK CFI d3ec4 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI d3ecf $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI d3ed2 $rbx: .cfa -56 + ^
+STACK CFI INIT d4030 109 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d403d $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI d404b .cfa: $rsp 64 +
+STACK CFI d4054 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT d4140 67 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d4144 .cfa: $rsp 64 +
+STACK CFI INIT d41b0 67 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d41b4 .cfa: $rsp 64 +
+STACK CFI INIT d4220 96 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d4224 .cfa: $rsp 64 +
+STACK CFI INIT d42c0 96 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d42c4 .cfa: $rsp 64 +
+STACK CFI INIT d4360 17 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d4380 23 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d4384 .cfa: $rsp 32 +
+STACK CFI INIT d43b0 a1 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d43bd $r12: .cfa -24 + ^ $rbx: .cfa -40 + ^
+STACK CFI d43ce .cfa: $rsp 448 +
+STACK CFI d43d7 $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^
+STACK CFI INIT d4460 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d4490 79 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d449d $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI d44a9 .cfa: $rsp 432 +
+STACK CFI d44ac $r12: .cfa -16 + ^
+STACK CFI INIT d4510 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d4540 64 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d4560 .cfa: $rsp 16 +
+STACK CFI d4586 .cfa: $rsp 8 +
+STACK CFI INIT d45b0 dd .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d45b1 .cfa: $rsp 16 +
+STACK CFI d45b8 .cfa: $rsp 96 +
+STACK CFI d45bd $rbx: .cfa -16 + ^
+STACK CFI INIT d4690 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d46c0 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d46f0 5e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d470d .cfa: $rsp 16 +
+STACK CFI d4730 .cfa: $rsp 8 +
+STACK CFI INIT d4750 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d4780 5e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d479d .cfa: $rsp 16 +
+STACK CFI d47c0 .cfa: $rsp 8 +
+STACK CFI INIT d47e0 30 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d4810 174 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d4811 .cfa: $rsp 16 +
+STACK CFI d4821 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI d4831 $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT d4990 a5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d4991 .cfa: $rsp 16 +
+STACK CFI d4995 .cfa: $rsp 32 +
+STACK CFI d49a2 $rbx: .cfa -16 + ^
+STACK CFI INIT d4a40 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d4a70 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d4aa0 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d4ad0 1e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d4ad1 .cfa: $rsp 16 +
+STACK CFI d4add $rbx: .cfa -16 + ^
+STACK CFI INIT d4af0 b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d4b00 22 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d4b01 .cfa: $rsp 16 +
+STACK CFI d4b0d $rbx: .cfa -16 + ^
+STACK CFI INIT d4b30 b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d4b40 24 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d4b70 24 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d4ba0 24 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d4bd0 24 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d4c00 51 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d4c04 .cfa: $rsp 80 +
+STACK CFI INIT d4c60 39 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d4c6b .cfa: $rsp 32 +
+STACK CFI INIT d4ca0 34 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d4ce0 34 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d4d20 aa .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d4dd0 1a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d4dd4 .cfa: $rsp 16 +
+STACK CFI INIT d4df0 86 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d4df7 .cfa: $rsp 16 +
+STACK CFI d4dfa $rbx: .cfa -16 + ^
+STACK CFI INIT d594d 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI d5957 .cfa: $rsp 0 +
+STACK CFI d595b .cfa: $rsp 128 +
+STACK CFI d5963 .cfa: $rsp -128 +
+STACK CFI INIT d5968 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI d5972 .cfa: $rsp 0 +
+STACK CFI d5976 .cfa: $rsp 128 +
+STACK CFI d597e .cfa: $rsp -128 +
+STACK CFI INIT d5983 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI d598d .cfa: $rsp 0 +
+STACK CFI d5991 .cfa: $rsp 128 +
+STACK CFI d5999 .cfa: $rsp -128 +
+STACK CFI INIT d4e80 e8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d4f70 7a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d4f72 .cfa: $rsp 16 +
+STACK CFI d4f73 .cfa: $rsp 24 +
+STACK CFI d4f76 $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^
+STACK CFI d4f77 .cfa: $rsp 32 +
+STACK CFI d4f7a $rbx: .cfa -32 + ^
+STACK CFI INIT d4ff0 530 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d4ff1 .cfa: $rsp 16 +
+STACK CFI d4ff9 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI d5002 $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI d5018 $r12: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT d5520 399 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d5522 .cfa: $rsp 16 +
+STACK CFI d5524 .cfa: $rsp 24 +
+STACK CFI d5527 $r13: .cfa -24 + ^ $r14: .cfa -16 + ^
+STACK CFI d5529 .cfa: $rsp 32 +
+STACK CFI d552c $r12: .cfa -32 + ^
+STACK CFI d552d .cfa: $rsp 40 +
+STACK CFI d5530 $rbp: .cfa -40 + ^
+STACK CFI d5531 .cfa: $rsp 48 +
+STACK CFI d5534 $rbx: .cfa -48 + ^
+STACK CFI d553b .cfa: $rsp 1072 +
+STACK CFI INIT d58c0 18 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d58c4 .cfa: $rsp 16 +
+STACK CFI INIT d58e0 6d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d58e1 .cfa: $rsp 16 +
+STACK CFI d58e4 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI d58ef $r12: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI d58fd $r13: .cfa -24 + ^
+STACK CFI INIT d59a0 21 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d59d0 9c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d5a70 94 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d5b10 38 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d5b50 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d5b80 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d5bb0 30 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d5be0 1a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d5c00 de .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d5ce0 33 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d5ce4 .cfa: $rsp 16 +
+STACK CFI INIT d5d20 51 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d5d24 .cfa: $rsp 16 +
+STACK CFI INIT d5d80 385 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d5d82 .cfa: $rsp 16 +
+STACK CFI d5d84 .cfa: $rsp 24 +
+STACK CFI d5d86 .cfa: $rsp 32 +
+STACK CFI d5d88 .cfa: $rsp 40 +
+STACK CFI d5d89 .cfa: $rsp 48 +
+STACK CFI d5d8a .cfa: $rsp 56 +
+STACK CFI d5d8e .cfa: $rsp 64 +
+STACK CFI d5d9e $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT d6110 3b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d6111 .cfa: $rsp 16 +
+STACK CFI d6114 $rbp: .cfa -16 + ^
+STACK CFI d6115 .cfa: $rsp 24 +
+STACK CFI d6119 $rbx: .cfa -24 + ^ .cfa: $rsp 32 +
+STACK CFI INIT d6150 42 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d6154 .cfa: $rsp 16 +
+STACK CFI INIT d61a0 213 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d61a2 .cfa: $rsp 16 +
+STACK CFI d61a4 .cfa: $rsp 24 +
+STACK CFI d61a5 .cfa: $rsp 32 +
+STACK CFI d61a6 .cfa: $rsp 40 +
+STACK CFI d61ad .cfa: $rsp 192 +
+STACK CFI d61b4 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI INIT d63c0 15 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d63c4 .cfa: $rsp 16 +
+STACK CFI INIT d63e0 41 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d63e4 .cfa: $rsp 16 +
+STACK CFI INIT d6430 228 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d643f $r14: .cfa -24 + ^
+STACK CFI d6466 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^ .cfa: $rsp 192 +
+STACK CFI INIT d6660 12 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d6680 ca .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d6681 .cfa: $rsp 16 +
+STACK CFI d6689 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI d6692 $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $rbx: .cfa -40 + ^
+STACK CFI INIT d7238 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI d7246 .cfa: $rsp 0 +
+STACK CFI d724a .cfa: $rsp 128 +
+STACK CFI d7252 .cfa: $rsp -128 +
+STACK CFI INIT d7257 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI d7265 .cfa: $rsp 0 +
+STACK CFI d7269 .cfa: $rsp 128 +
+STACK CFI d7271 .cfa: $rsp -128 +
+STACK CFI INIT d7276 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI d7284 .cfa: $rsp 0 +
+STACK CFI d7288 .cfa: $rsp 128 +
+STACK CFI d7290 .cfa: $rsp -128 +
+STACK CFI INIT d7295 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI d72a3 .cfa: $rsp 0 +
+STACK CFI d72a7 .cfa: $rsp 128 +
+STACK CFI d72af .cfa: $rsp -128 +
+STACK CFI INIT d72b4 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI d72c2 .cfa: $rsp 0 +
+STACK CFI d72c6 .cfa: $rsp 128 +
+STACK CFI d72ce .cfa: $rsp -128 +
+STACK CFI INIT d6750 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d6780 12 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d67a0 9a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d67a4 .cfa: $rsp 32 +
+STACK CFI INIT d6840 265 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d685d .cfa: $rsp 48 +
+STACK CFI d6862 $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^ $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI INIT d6ab0 66 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d6ab7 .cfa: $rsp 32 +
+STACK CFI INIT d6b20 5d5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d6b2c $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^
+STACK CFI d6b4a .cfa: $rsp 256 +
+STACK CFI d6b51 $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT d7100 10 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d7110 8b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d7117 .cfa: $rsp 224 +
+STACK CFI INIT d71a0 98 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d71a7 .cfa: $rsp 224 +
+STACK CFI INIT d72e0 37 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d7320 15e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d7331 .cfa: $rsp 176 +
+STACK CFI d7333 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT d7480 28 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d74b0 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d74e0 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d7510 5e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d752d .cfa: $rsp 16 +
+STACK CFI d7550 .cfa: $rsp 8 +
+STACK CFI INIT d7570 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d75a0 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d75d0 28 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d7600 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d7630 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d7660 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d7690 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d76c0 c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d76d0 c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d76e0 28 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d76e4 .cfa: $rsp 48 +
+STACK CFI INIT d7710 21f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d7712 .cfa: $rsp 16 +
+STACK CFI d7714 .cfa: $rsp 24 +
+STACK CFI d7717 $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI d7719 .cfa: $rsp 32 +
+STACK CFI d771b .cfa: $rsp 40 +
+STACK CFI d771c .cfa: $rsp 48 +
+STACK CFI d771d .cfa: $rsp 56 +
+STACK CFI d7720 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI d7724 .cfa: $rsp 144 +
+STACK CFI INIT d7930 30 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d7934 .cfa: $rsp 16 +
+STACK CFI d7937 $rbx: .cfa -16 + ^
+STACK CFI INIT d7960 bd .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d7964 .cfa: $rsp 16 +
+STACK CFI d7967 $rbx: .cfa -16 + ^
+STACK CFI INIT d7a20 115 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d7b40 58 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d7b42 .cfa: $rsp 16 +
+STACK CFI d7b48 $r12: .cfa -16 + ^
+STACK CFI d7b49 .cfa: $rsp 24 +
+STACK CFI d7b4a .cfa: $rsp 32 +
+STACK CFI d7b4d $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI INIT d7ba0 9e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d7bad $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI d7bb6 .cfa: $rsp 32 +
+STACK CFI d7bc1 $r12: .cfa -16 + ^
+STACK CFI INIT d7c40 1c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d7c60 4e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d7c6d $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI d7c71 .cfa: $rsp 32 +
+STACK CFI INIT d7cb0 12 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d7cd0 433 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d7cd1 .cfa: $rsp 16 +
+STACK CFI d7cd4 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI d7ce0 $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT d8110 120 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d8112 .cfa: $rsp 16 +
+STACK CFI d8116 .cfa: $rsp 24 +
+STACK CFI d8118 .cfa: $rsp 32 +
+STACK CFI d811b $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI d811d .cfa: $rsp 40 +
+STACK CFI d811e .cfa: $rsp 48 +
+STACK CFI d811f .cfa: $rsp 56 +
+STACK CFI d8123 .cfa: $rsp 96 +
+STACK CFI d8136 $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT d8230 65 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d8232 .cfa: $rsp 16 +
+STACK CFI d8235 $r15: .cfa -16 + ^
+STACK CFI d8237 .cfa: $rsp 24 +
+STACK CFI d823a $r14: .cfa -24 + ^
+STACK CFI d823c .cfa: $rsp 32 +
+STACK CFI d823f $r13: .cfa -32 + ^
+STACK CFI d8241 .cfa: $rsp 40 +
+STACK CFI d8244 $r12: .cfa -40 + ^
+STACK CFI d8245 .cfa: $rsp 48 +
+STACK CFI d8248 $rbp: .cfa -48 + ^
+STACK CFI d8249 .cfa: $rsp 56 +
+STACK CFI d824c $rbx: .cfa -56 + ^
+STACK CFI d8250 .cfa: $rsp 64 +
+STACK CFI INIT d82a0 6c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d82ad $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI d82bb .cfa: $rsp 48 +
+STACK CFI d82be $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT d8310 115 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d8311 .cfa: $rsp 16 +
+STACK CFI d8314 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI d831b $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI d8331 $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT d8430 126 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d8447 $r13: .cfa -24 + ^ $r14: .cfa -16 + ^ $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI d8450 .cfa: $rsp 48 +
+STACK CFI d8469 $r12: .cfa -32 + ^
+STACK CFI INIT d8560 15 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d8561 .cfa: $rsp 16 +
+STACK CFI d8563 $rbx: .cfa -16 + ^
+STACK CFI INIT d8580 88 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d8587 .cfa: $rsp 224 +
+STACK CFI INIT d8610 95 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d8617 .cfa: $rsp 224 +
+STACK CFI INIT d86b0 e2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d86bd $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI d86c6 .cfa: $rsp 32 +
+STACK CFI d86d0 $r12: .cfa -16 + ^
+STACK CFI INIT d87a0 15 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d87a1 .cfa: $rsp 16 +
+STACK CFI d87a3 $rbx: .cfa -16 + ^
+STACK CFI INIT d87c0 88 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d87c7 .cfa: $rsp 224 +
+STACK CFI INIT d8850 95 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d8857 .cfa: $rsp 224 +
+STACK CFI INIT d88f0 2f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d88f7 .cfa: $rsp 1040 +
+STACK CFI INIT d8920 1e8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d8921 .cfa: $rsp 16 +
+STACK CFI d8924 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI d892b $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI d8956 $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT d8b10 1f7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d8b1b $rbx: .cfa -48 + ^
+STACK CFI d8b3c $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $rbp: .cfa -40 + ^
+STACK CFI d8b48 .cfa: $rsp 256 +
+STACK CFI d8b60 $r14: .cfa -16 + ^
+STACK CFI INIT d8d10 14f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d8d12 .cfa: $rsp 16 +
+STACK CFI d8d18 $r12: .cfa -16 + ^
+STACK CFI d8d19 .cfa: $rsp 24 +
+STACK CFI d8d1b $rbp: .cfa -24 + ^
+STACK CFI d8d1c .cfa: $rsp 32 +
+STACK CFI d8d1e $rbx: .cfa -32 + ^
+STACK CFI d8d25 .cfa: $rsp 240 +
+STACK CFI INIT d8e60 44 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d8eb0 e4 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d8eb2 .cfa: $rsp 16 +
+STACK CFI d8ebb .cfa: $rsp 24 +
+STACK CFI d8ebe $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI d8ec6 .cfa: $rsp 32 +
+STACK CFI d8ec7 .cfa: $rsp 40 +
+STACK CFI d8ece .cfa: $rsp 8256 +
+STACK CFI d8eda $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI INIT d8fa0 c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d8fb0 c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d8fc0 1eb .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d8fcd $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI d8fe8 .cfa: $rsp 96 +
+STACK CFI d8feb $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT d91b0 140 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d91b1 .cfa: $rsp 16 +
+STACK CFI d91b9 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI d91c6 $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT d92f0 c4 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d92f2 .cfa: $rsp 16 +
+STACK CFI d92fb .cfa: $rsp 24 +
+STACK CFI d92fd .cfa: $rsp 32 +
+STACK CFI d92ff .cfa: $rsp 40 +
+STACK CFI d9300 .cfa: $rsp 48 +
+STACK CFI d9301 .cfa: $rsp 56 +
+STACK CFI d9305 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^ .cfa: $rsp 80 +
+STACK CFI INIT d93c0 e1 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d93c4 .cfa: $rsp 16 +
+STACK CFI d93c7 $rbx: .cfa -16 + ^
+STACK CFI INIT d94b0 d6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d94b8 $rbp: .cfa -40 + ^
+STACK CFI d94d7 $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^ $rbx: .cfa -48 + ^
+STACK CFI d94db .cfa: $rsp 128 +
+STACK CFI INIT d9590 15 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d95b0 28 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d95e0 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d9610 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d9640 28 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d9670 28 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d96a0 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d96d0 28 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d9700 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d9730 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d9760 28 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d9790 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d97c0 28 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d97f0 58 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d97f1 .cfa: $rsp 16 +
+STACK CFI d97f4 $rbx: .cfa -16 + ^
+STACK CFI d980a .cfa: $rsp 32 +
+STACK CFI INIT d9850 5e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d9851 .cfa: $rsp 16 +
+STACK CFI d9854 $rbx: .cfa -16 + ^
+STACK CFI d986a .cfa: $rsp 32 +
+STACK CFI INIT 1364d0 c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d98b0 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d98b4 .cfa: $rsp 16 +
+STACK CFI INIT d98e0 82 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d98e9 .cfa: $rsp 16 +
+STACK CFI d98eb $rbx: .cfa -16 + ^
+STACK CFI INIT d9970 1c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d9974 .cfa: $rsp 16 +
+STACK CFI INIT d9990 e2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d9991 .cfa: $rsp 16 +
+STACK CFI d9995 $rbp: .cfa -16 + ^
+STACK CFI d999d .cfa: $rsp 24 +
+STACK CFI d99a0 $rbx: .cfa -24 + ^
+STACK CFI d99a4 .cfa: $rsp 32 +
+STACK CFI INIT d9a80 5d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d9a82 .cfa: $rsp 16 +
+STACK CFI d9a83 .cfa: $rsp 24 +
+STACK CFI d9a86 $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^
+STACK CFI d9a8c $rbx: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI INIT d9ae0 5c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d9ae2 .cfa: $rsp 16 +
+STACK CFI d9ae3 .cfa: $rsp 24 +
+STACK CFI d9ae6 $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^
+STACK CFI d9aec $rbx: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI INIT d9b40 3b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d9b41 .cfa: $rsp 16 +
+STACK CFI d9b43 $rbx: .cfa -16 + ^
+STACK CFI INIT d9b80 34 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d9bc0 34 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d9c00 14 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d9c20 28 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d9c21 .cfa: $rsp 16 +
+STACK CFI d9c27 $rbx: .cfa -16 + ^
+STACK CFI INIT d9c50 22 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d9c5b .cfa: $rsp 16 +
+STACK CFI INIT d9c80 ac .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d9c8c $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI d9c95 .cfa: $rsp 48 +
+STACK CFI d9ca6 $r12: .cfa -16 + ^
+STACK CFI INIT d9d30 301 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d9d32 .cfa: $rsp 16 +
+STACK CFI d9d38 .cfa: $rsp 24 +
+STACK CFI d9d3b $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI d9d3d .cfa: $rsp 32 +
+STACK CFI d9d40 $r13: .cfa -32 + ^
+STACK CFI d9d42 .cfa: $rsp 40 +
+STACK CFI d9d45 $r12: .cfa -40 + ^
+STACK CFI d9d46 .cfa: $rsp 48 +
+STACK CFI d9d49 $rbp: .cfa -48 + ^
+STACK CFI d9d4a .cfa: $rsp 56 +
+STACK CFI d9d4d $rbx: .cfa -56 + ^
+STACK CFI d9d51 .cfa: $rsp 96 +
+STACK CFI INIT da040 1f1 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI da056 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $rbp: .cfa -48 + ^
+STACK CFI da06c .cfa: $rsp 80 +
+STACK CFI da077 $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT da240 3e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI da241 .cfa: $rsp 16 +
+STACK CFI da249 $rbx: .cfa -16 + ^
+STACK CFI da24d .cfa: $rsp 32 +
+STACK CFI INIT da280 35 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI da281 .cfa: $rsp 16 +
+STACK CFI da28b .cfa: $rsp 32 +
+STACK CFI da294 $rbx: .cfa -16 + ^
+STACK CFI INIT da2c0 cf .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI da2cc $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI da2e2 .cfa: $rsp 64 +
+STACK CFI da2ee $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^
+STACK CFI INIT da390 329 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI da392 .cfa: $rsp 16 +
+STACK CFI da394 .cfa: $rsp 24 +
+STACK CFI da397 $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI da399 .cfa: $rsp 32 +
+STACK CFI da39c $r13: .cfa -32 + ^
+STACK CFI da39e .cfa: $rsp 40 +
+STACK CFI da3a1 $r12: .cfa -40 + ^
+STACK CFI da3a2 .cfa: $rsp 48 +
+STACK CFI da3a5 $rbp: .cfa -48 + ^
+STACK CFI da3a6 .cfa: $rsp 56 +
+STACK CFI da3a9 $rbx: .cfa -56 + ^
+STACK CFI da3ad .cfa: $rsp 128 +
+STACK CFI INIT da6c0 220 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI da6cd $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^
+STACK CFI da6e8 .cfa: $rsp 112 +
+STACK CFI da6ef $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT da8e0 6c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI da8ee .cfa: $rsp 32 +
+STACK CFI da8f4 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT da950 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT da980 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT da9b0 55 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT daa10 2f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT daa85 15 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT daaa0 5e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI daabd .cfa: $rsp 16 +
+STACK CFI daae0 .cfa: $rsp 8 +
+STACK CFI INIT dab00 7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT dab10 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT dab40 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT dab70 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT daba0 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT dabd0 19 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT dabf0 12 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT dac10 2d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT dac40 bb .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI dac41 .cfa: $rsp 16 +
+STACK CFI dac45 .cfa: $rsp 64 +
+STACK CFI dac4f $rbx: .cfa -16 + ^
+STACK CFI INIT dad00 8b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI dad01 .cfa: $rsp 16 +
+STACK CFI dad15 .cfa: $rsp 24 +
+STACK CFI dad18 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT dad90 7a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT dae10 20 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI dae14 .cfa: $rsp 16 +
+STACK CFI INIT dae30 2a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI dae34 .cfa: $rsp 32 +
+STACK CFI INIT dae60 28 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT dae90 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT daec0 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT daef0 28 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT daf20 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT daf50 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT daf80 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT dafb0 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT dafe0 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT db010 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT db040 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT db070 28 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT db0a0 64 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI db0c0 .cfa: $rsp 16 +
+STACK CFI db0e6 .cfa: $rsp 8 +
+STACK CFI INIT db110 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT db140 28 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT db170 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT db1a0 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT db1d0 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT db200 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT db230 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT db260 28 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT db290 28 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT db2c0 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT db2f0 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT db320 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT db350 28 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT db380 28 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT db3b0 28 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT db3e0 64 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI db400 .cfa: $rsp 16 +
+STACK CFI db426 .cfa: $rsp 8 +
+STACK CFI INIT db450 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT db480 64 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI db4a0 .cfa: $rsp 16 +
+STACK CFI db4c6 .cfa: $rsp 8 +
+STACK CFI INIT db4f0 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT db520 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT db550 64 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI db570 .cfa: $rsp 16 +
+STACK CFI db596 .cfa: $rsp 8 +
+STACK CFI INIT db5c0 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT db5f0 28 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT db620 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT db650 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT db680 16 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT db6a0 5e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI db6bd .cfa: $rsp 16 +
+STACK CFI db6e0 .cfa: $rsp 8 +
+STACK CFI INIT db700 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT db730 5e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI db74d .cfa: $rsp 16 +
+STACK CFI db770 .cfa: $rsp 8 +
+STACK CFI INIT db790 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT db7c0 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT db7f0 28 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT db820 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT db850 af .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI db851 .cfa: $rsp 16 +
+STACK CFI db855 .cfa: $rsp 48 +
+STACK CFI db85f $rbx: .cfa -16 + ^
+STACK CFI INIT db900 64 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI db920 .cfa: $rsp 16 +
+STACK CFI db946 .cfa: $rsp 8 +
+STACK CFI INIT db970 5e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI db98d .cfa: $rsp 16 +
+STACK CFI db9b0 .cfa: $rsp 8 +
+STACK CFI INIT db9d0 af .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI db9d1 .cfa: $rsp 16 +
+STACK CFI db9d5 .cfa: $rsp 48 +
+STACK CFI db9df $rbx: .cfa -16 + ^
+STACK CFI INIT dba80 5e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI dba9d .cfa: $rsp 16 +
+STACK CFI dbac0 .cfa: $rsp 8 +
+STACK CFI INIT dbae0 64 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI dbb00 .cfa: $rsp 16 +
+STACK CFI dbb26 .cfa: $rsp 8 +
+STACK CFI INIT dbb50 28 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT dbb80 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT dbbb0 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT dbbe0 28 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT dbc10 6b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI dbc1d $r12: .cfa -16 + ^ $rbx: .cfa -32 + ^
+STACK CFI dbc29 .cfa: $rsp 176 +
+STACK CFI dbc3d $rbp: .cfa -24 + ^
+STACK CFI INIT dbc80 29f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI dbc82 .cfa: $rsp 16 +
+STACK CFI dbc84 .cfa: $rsp 24 +
+STACK CFI dbc86 .cfa: $rsp 32 +
+STACK CFI dbc88 .cfa: $rsp 40 +
+STACK CFI dbc89 .cfa: $rsp 48 +
+STACK CFI dbc8a .cfa: $rsp 56 +
+STACK CFI dbc8e .cfa: $rsp 112 +
+STACK CFI dbc9c $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT dbf20 22 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI dbf24 .cfa: $rsp 32 +
+STACK CFI INIT dbf50 9f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI dbf54 .cfa: $rsp 48 +
+STACK CFI INIT dbff0 ad .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI dbff4 .cfa: $rsp 64 +
+STACK CFI INIT dc0a0 43 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT dc0f0 1a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT dc110 41 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI dc111 .cfa: $rsp 16 +
+STACK CFI dc113 $rbx: .cfa -16 + ^
+STACK CFI dc122 .cfa: $rsp 160 +
+STACK CFI INIT dc160 64 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI dc180 .cfa: $rsp 16 +
+STACK CFI dc1a6 .cfa: $rsp 8 +
+STACK CFI INIT dc1d0 64 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI dc1f0 .cfa: $rsp 16 +
+STACK CFI dc216 .cfa: $rsp 8 +
+STACK CFI INIT dc240 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT dc270 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT dc2a0 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT dc2d0 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT dc300 28 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT dc330 28 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT dc360 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT dc390 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT dc3c0 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT dc3f0 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT dc420 4be .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI dc421 .cfa: $rsp 16 +
+STACK CFI dc42b $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI dc43b $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT dc8e0 27 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI dc8e1 .cfa: $rsp 16 +
+STACK CFI dc8e7 $rbx: .cfa -16 + ^
+STACK CFI INIT dc910 60 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI dc914 .cfa: $rsp 16 +
+STACK CFI INIT dc970 2a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI dc974 .cfa: $rsp 16 +
+STACK CFI INIT dc9a0 1e1 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI dc9ac .cfa: $rsp 16 +
+STACK CFI INIT dcb90 14f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI dcb91 .cfa: $rsp 16 +
+STACK CFI dcb9b $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI INIT dcce0 55 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT dcd40 1be .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI dcd4d $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI dcd5e .cfa: $rsp 240 +
+STACK CFI dcd64 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT dcf00 3b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT dcf40 109 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI dcf41 .cfa: $rsp 16 +
+STACK CFI dcf43 $rbp: .cfa -16 + ^
+STACK CFI dcf44 .cfa: $rsp 24 +
+STACK CFI dcf4b $rbx: .cfa -24 + ^
+STACK CFI INIT dd050 f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT dd060 12 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT dd080 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT dd0b0 195 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI dd0bd $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI dd0cb .cfa: $rsp 64 +
+STACK CFI dd0d1 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT dd250 41b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI dd251 .cfa: $rsp 16 +
+STACK CFI dd254 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI dd25b $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI dd268 $r13: .cfa -40 + ^
+STACK CFI dd271 $r12: .cfa -48 + ^
+STACK CFI dd28d $rbx: .cfa -56 + ^
+STACK CFI INIT dd670 b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT dd740 85 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI dd742 .cfa: $rsp 16 +
+STACK CFI dd744 .cfa: $rsp 24 +
+STACK CFI dd747 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI dd748 .cfa: $rsp 32 +
+STACK CFI dd749 .cfa: $rsp 40 +
+STACK CFI dd74d .cfa: $rsp 48 +
+STACK CFI dd762 $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI INIT dd7d0 52 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI dd7d4 .cfa: $rsp 16 +
+STACK CFI dd7d8 $rbx: .cfa -16 + ^
+STACK CFI INIT dd830 52 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI dd834 .cfa: $rsp 16 +
+STACK CFI dd838 $rbx: .cfa -16 + ^
+STACK CFI INIT dd890 95 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI dd897 .cfa: $rsp 16 +
+STACK CFI dd899 $rbx: .cfa -16 + ^
+STACK CFI INIT dd930 62 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI dd938 .cfa: $rsp 16 +
+STACK CFI dd93a $rbx: .cfa -16 + ^
+STACK CFI INIT dd9a0 5d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI dd9a8 .cfa: $rsp 16 +
+STACK CFI dd9aa $rbx: .cfa -16 + ^
+STACK CFI INIT dda00 c5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI dda07 .cfa: $rsp 16 +
+STACK CFI dda09 $rbx: .cfa -16 + ^
+STACK CFI INIT ddad0 c5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ddad7 .cfa: $rsp 16 +
+STACK CFI ddad9 $rbx: .cfa -16 + ^
+STACK CFI INIT ddba0 c5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ddba7 .cfa: $rsp 16 +
+STACK CFI ddba9 $rbx: .cfa -16 + ^
+STACK CFI INIT ddc70 c5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ddc77 .cfa: $rsp 16 +
+STACK CFI ddc79 $rbx: .cfa -16 + ^
+STACK CFI INIT ddd40 c5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ddd47 .cfa: $rsp 16 +
+STACK CFI ddd49 $rbx: .cfa -16 + ^
+STACK CFI INIT dde10 c5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI dde17 .cfa: $rsp 16 +
+STACK CFI dde19 $rbx: .cfa -16 + ^
+STACK CFI INIT ddee0 c5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ddee7 .cfa: $rsp 16 +
+STACK CFI ddee9 $rbx: .cfa -16 + ^
+STACK CFI INIT ddfb0 c5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ddfb7 .cfa: $rsp 16 +
+STACK CFI ddfb9 $rbx: .cfa -16 + ^
+STACK CFI INIT de080 c5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI de087 .cfa: $rsp 16 +
+STACK CFI de089 $rbx: .cfa -16 + ^
+STACK CFI INIT de150 c5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI de157 .cfa: $rsp 16 +
+STACK CFI de159 $rbx: .cfa -16 + ^
+STACK CFI INIT de220 c5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI de227 .cfa: $rsp 16 +
+STACK CFI de229 $rbx: .cfa -16 + ^
+STACK CFI INIT de2f0 7b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI de2f2 .cfa: $rsp 16 +
+STACK CFI de2f4 .cfa: $rsp 24 +
+STACK CFI de2f7 $r13: .cfa -24 + ^ $r14: .cfa -16 + ^
+STACK CFI de2f9 .cfa: $rsp 32 +
+STACK CFI de2fa .cfa: $rsp 40 +
+STACK CFI de2fc $r12: .cfa -32 + ^ $rbp: .cfa -40 + ^
+STACK CFI de2fd $rbx: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI INIT de370 5b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT de3d0 88 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI de3d7 .cfa: $rsp 16 +
+STACK CFI de3d9 $rbx: .cfa -16 + ^
+STACK CFI INIT de460 8a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI de467 .cfa: $rsp 16 +
+STACK CFI de469 $rbx: .cfa -16 + ^
+STACK CFI INIT de4f0 88 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI de4f7 .cfa: $rsp 16 +
+STACK CFI de4f9 $rbx: .cfa -16 + ^
+STACK CFI INIT de580 88 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI de587 .cfa: $rsp 16 +
+STACK CFI de589 $rbx: .cfa -16 + ^
+STACK CFI INIT de610 85 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI de617 .cfa: $rsp 16 +
+STACK CFI de619 $rbx: .cfa -16 + ^
+STACK CFI INIT de6a0 8a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI de6a7 .cfa: $rsp 16 +
+STACK CFI de6a9 $rbx: .cfa -16 + ^
+STACK CFI INIT de730 8a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI de737 .cfa: $rsp 16 +
+STACK CFI de739 $rbx: .cfa -16 + ^
+STACK CFI INIT de7c0 8a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI de7c7 .cfa: $rsp 16 +
+STACK CFI de7c9 $rbx: .cfa -16 + ^
+STACK CFI INIT de850 88 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI de857 .cfa: $rsp 16 +
+STACK CFI de859 $rbx: .cfa -16 + ^
+STACK CFI INIT de8e0 8a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI de8e7 .cfa: $rsp 16 +
+STACK CFI de8e9 $rbx: .cfa -16 + ^
+STACK CFI INIT de970 8a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI de977 .cfa: $rsp 16 +
+STACK CFI de979 $rbx: .cfa -16 + ^
+STACK CFI INIT dea00 8a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI dea07 .cfa: $rsp 16 +
+STACK CFI dea09 $rbx: .cfa -16 + ^
+STACK CFI INIT dea90 54 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI dea91 .cfa: $rsp 16 +
+STACK CFI dea96 $rbx: .cfa -16 + ^
+STACK CFI INIT deaf0 51 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI deaf1 .cfa: $rsp 16 +
+STACK CFI deaf6 $rbx: .cfa -16 + ^
+STACK CFI INIT deb50 7b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI deb52 .cfa: $rsp 16 +
+STACK CFI deb54 .cfa: $rsp 24 +
+STACK CFI deb57 $r13: .cfa -24 + ^ $r14: .cfa -16 + ^
+STACK CFI deb59 .cfa: $rsp 32 +
+STACK CFI deb5a .cfa: $rsp 40 +
+STACK CFI deb5c $r12: .cfa -32 + ^ $rbp: .cfa -40 + ^
+STACK CFI deb5d .cfa: $rsp 48 +
+STACK CFI deb60 $rbx: .cfa -48 + ^
+STACK CFI INIT debd0 5b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT dec30 75 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI dec32 .cfa: $rsp 16 +
+STACK CFI dec34 .cfa: $rsp 24 +
+STACK CFI dec37 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI dec38 .cfa: $rsp 32 +
+STACK CFI dec39 .cfa: $rsp 40 +
+STACK CFI dec3d .cfa: $rsp 48 +
+STACK CFI dec47 $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI INIT ded38 1c .cfa: $rsp -128 + .ra: $rip
+STACK CFI ded46 .cfa: $rsp 0 +
+STACK CFI ded4a .cfa: $rsp 128 +
+STACK CFI ded52 .cfa: $rsp -128 +
+STACK CFI INIT ded54 1c .cfa: $rsp -128 + .ra: $rip
+STACK CFI ded62 .cfa: $rsp 0 +
+STACK CFI ded66 .cfa: $rsp 128 +
+STACK CFI ded6e .cfa: $rsp -128 +
+STACK CFI INIT decb0 88 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI decb4 .cfa: $rsp 16 +
+STACK CFI INIT dee95 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI deea3 .cfa: $rsp 0 +
+STACK CFI deea7 .cfa: $rsp 128 +
+STACK CFI deeaf .cfa: $rsp -128 +
+STACK CFI INIT deeb4 1c .cfa: $rsp -128 + .ra: $rip
+STACK CFI deec2 .cfa: $rsp 0 +
+STACK CFI deec6 .cfa: $rsp 128 +
+STACK CFI deece .cfa: $rsp -128 +
+STACK CFI INIT ded70 125 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ded71 .cfa: $rsp 16 +
+STACK CFI ded79 .cfa: $rsp 24 +
+STACK CFI ded7c $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI ded80 .cfa: $rsp 48 +
+STACK CFI INIT df01d 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI df02b .cfa: $rsp 0 +
+STACK CFI df02f .cfa: $rsp 128 +
+STACK CFI df037 .cfa: $rsp -128 +
+STACK CFI INIT df03c 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI df04a .cfa: $rsp 0 +
+STACK CFI df04e .cfa: $rsp 128 +
+STACK CFI df056 .cfa: $rsp -128 +
+STACK CFI INIT deed0 14d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI deed1 .cfa: $rsp 16 +
+STACK CFI deed9 .cfa: $rsp 24 +
+STACK CFI deedc $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI deee0 .cfa: $rsp 48 +
+STACK CFI INIT df1fe 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI df20c .cfa: $rsp 0 +
+STACK CFI df210 .cfa: $rsp 128 +
+STACK CFI df218 .cfa: $rsp -128 +
+STACK CFI INIT df21d 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI df22b .cfa: $rsp 0 +
+STACK CFI df22f .cfa: $rsp 128 +
+STACK CFI df237 .cfa: $rsp -128 +
+STACK CFI INIT df060 19e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI df062 .cfa: $rsp 16 +
+STACK CFI df064 .cfa: $rsp 24 +
+STACK CFI df065 .cfa: $rsp 32 +
+STACK CFI df066 .cfa: $rsp 40 +
+STACK CFI df069 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI df06d .cfa: $rsp 96 +
+STACK CFI INIT df647 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI df651 .cfa: $rsp 0 +
+STACK CFI df655 .cfa: $rsp 128 +
+STACK CFI df65d .cfa: $rsp -128 +
+STACK CFI INIT df662 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI df66c .cfa: $rsp 0 +
+STACK CFI df670 .cfa: $rsp 128 +
+STACK CFI df678 .cfa: $rsp -128 +
+STACK CFI INIT df240 407 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI df242 .cfa: $rsp 16 +
+STACK CFI df243 .cfa: $rsp 24 +
+STACK CFI df246 $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^
+STACK CFI df247 .cfa: $rsp 32 +
+STACK CFI df24e $rbx: .cfa -32 + ^
+STACK CFI INIT df8a2 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI df8b0 .cfa: $rsp 0 +
+STACK CFI df8b4 .cfa: $rsp 128 +
+STACK CFI df8bc .cfa: $rsp -128 +
+STACK CFI INIT df8c1 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI df8cf .cfa: $rsp 0 +
+STACK CFI df8d3 .cfa: $rsp 128 +
+STACK CFI df8db .cfa: $rsp -128 +
+STACK CFI INIT df8e0 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI df8ee .cfa: $rsp 0 +
+STACK CFI df8f2 .cfa: $rsp 128 +
+STACK CFI df8fa .cfa: $rsp -128 +
+STACK CFI INIT df8ff 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI df90d .cfa: $rsp 0 +
+STACK CFI df911 .cfa: $rsp 128 +
+STACK CFI df919 .cfa: $rsp -128 +
+STACK CFI INIT df91e 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI df92c .cfa: $rsp 0 +
+STACK CFI df930 .cfa: $rsp 128 +
+STACK CFI df938 .cfa: $rsp -128 +
+STACK CFI INIT df93d 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI df94b .cfa: $rsp 0 +
+STACK CFI df94f .cfa: $rsp 128 +
+STACK CFI df957 .cfa: $rsp -128 +
+STACK CFI INIT df680 d2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI df684 .cfa: $rsp 80 +
+STACK CFI INIT df760 a0 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI df764 .cfa: $rsp 16 +
+STACK CFI INIT df800 a2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI df804 .cfa: $rsp 32 +
+STACK CFI INIT df960 1ed .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI df962 .cfa: $rsp 16 +
+STACK CFI df965 $r15: .cfa -16 + ^
+STACK CFI df967 .cfa: $rsp 24 +
+STACK CFI df96a $r14: .cfa -24 + ^
+STACK CFI df96c .cfa: $rsp 32 +
+STACK CFI df96f $r13: .cfa -32 + ^
+STACK CFI df971 .cfa: $rsp 40 +
+STACK CFI df974 $r12: .cfa -40 + ^
+STACK CFI df975 .cfa: $rsp 48 +
+STACK CFI df976 .cfa: $rsp 56 +
+STACK CFI df97a .cfa: $rsp 112 +
+STACK CFI df98c $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT dfb50 3be .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI dfb52 .cfa: $rsp 16 +
+STACK CFI dfb54 .cfa: $rsp 24 +
+STACK CFI dfb55 .cfa: $rsp 32 +
+STACK CFI dfb58 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^
+STACK CFI dfb5e .cfa: $rsp 40 +
+STACK CFI dfb61 $rbx: .cfa -40 + ^
+STACK CFI dfb65 .cfa: $rsp 64 +
+STACK CFI INIT dff10 a7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI dff20 $r12: .cfa -16 + ^
+STACK CFI dff2d $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI dff31 .cfa: $rsp 32 +
+STACK CFI INIT e020e 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI e0218 .cfa: $rsp 0 +
+STACK CFI e021c .cfa: $rsp 128 +
+STACK CFI e0224 .cfa: $rsp -128 +
+STACK CFI INIT e0229 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI e0233 .cfa: $rsp 0 +
+STACK CFI e0237 .cfa: $rsp 128 +
+STACK CFI e023f .cfa: $rsp -128 +
+STACK CFI INIT e0244 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI e024e .cfa: $rsp 0 +
+STACK CFI e0252 .cfa: $rsp 128 +
+STACK CFI e025a .cfa: $rsp -128 +
+STACK CFI INIT e025f 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI e0269 .cfa: $rsp 0 +
+STACK CFI e026d .cfa: $rsp 128 +
+STACK CFI e0275 .cfa: $rsp -128 +
+STACK CFI INIT dffc0 24e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI dffc2 .cfa: $rsp 16 +
+STACK CFI dffc5 $r15: .cfa -16 + ^
+STACK CFI dffc7 .cfa: $rsp 24 +
+STACK CFI dffc9 .cfa: $rsp 32 +
+STACK CFI dffcc $r13: .cfa -32 + ^ $r14: .cfa -24 + ^
+STACK CFI dffce .cfa: $rsp 40 +
+STACK CFI dffcf .cfa: $rsp 48 +
+STACK CFI dffd2 $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^
+STACK CFI dffd3 .cfa: $rsp 56 +
+STACK CFI dffd6 $rbx: .cfa -56 + ^
+STACK CFI dffda .cfa: $rsp 80 +
+STACK CFI INIT e0579 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI e0587 .cfa: $rsp 0 +
+STACK CFI e058b .cfa: $rsp 128 +
+STACK CFI e0593 .cfa: $rsp -128 +
+STACK CFI INIT e0598 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI e05a6 .cfa: $rsp 0 +
+STACK CFI e05aa .cfa: $rsp 128 +
+STACK CFI e05b2 .cfa: $rsp -128 +
+STACK CFI INIT e05b7 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI e05c5 .cfa: $rsp 0 +
+STACK CFI e05c9 .cfa: $rsp 128 +
+STACK CFI e05d1 .cfa: $rsp -128 +
+STACK CFI INIT e05d6 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI e05e4 .cfa: $rsp 0 +
+STACK CFI e05e8 .cfa: $rsp 128 +
+STACK CFI e05f0 .cfa: $rsp -128 +
+STACK CFI INIT e05f5 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI e0603 .cfa: $rsp 0 +
+STACK CFI e0607 .cfa: $rsp 128 +
+STACK CFI e060f .cfa: $rsp -128 +
+STACK CFI INIT e0280 2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT e0290 80 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e0294 .cfa: $rsp 16 +
+STACK CFI INIT e0310 269 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e031f $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI e032b .cfa: $rsp 640 +
+STACK CFI e0333 $r12: .cfa -16 + ^
+STACK CFI INIT e06a8 1c .cfa: $rsp -128 + .ra: $rip
+STACK CFI e06b6 .cfa: $rsp 0 +
+STACK CFI e06ba .cfa: $rsp 128 +
+STACK CFI e06c2 .cfa: $rsp -128 +
+STACK CFI INIT e06c4 1c .cfa: $rsp -128 + .ra: $rip
+STACK CFI e06d2 .cfa: $rsp 0 +
+STACK CFI e06d6 .cfa: $rsp 128 +
+STACK CFI e06de .cfa: $rsp -128 +
+STACK CFI INIT e0620 88 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e0624 .cfa: $rsp 16 +
+STACK CFI INIT e0805 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI e0813 .cfa: $rsp 0 +
+STACK CFI e0817 .cfa: $rsp 128 +
+STACK CFI e081f .cfa: $rsp -128 +
+STACK CFI INIT e0824 1c .cfa: $rsp -128 + .ra: $rip
+STACK CFI e0832 .cfa: $rsp 0 +
+STACK CFI e0836 .cfa: $rsp 128 +
+STACK CFI e083e .cfa: $rsp -128 +
+STACK CFI INIT e06e0 125 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e06e1 .cfa: $rsp 16 +
+STACK CFI e06e9 .cfa: $rsp 24 +
+STACK CFI e06ec $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI e06f0 .cfa: $rsp 48 +
+STACK CFI INIT e09a4 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI e09b2 .cfa: $rsp 0 +
+STACK CFI e09b6 .cfa: $rsp 128 +
+STACK CFI e09be .cfa: $rsp -128 +
+STACK CFI INIT e09c3 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI e09d1 .cfa: $rsp 0 +
+STACK CFI e09d5 .cfa: $rsp 128 +
+STACK CFI e09dd .cfa: $rsp -128 +
+STACK CFI INIT e0840 164 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e0842 .cfa: $rsp 16 +
+STACK CFI e084a .cfa: $rsp 24 +
+STACK CFI e084d $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^
+STACK CFI e084e .cfa: $rsp 32 +
+STACK CFI e0852 .cfa: $rsp 48 +
+STACK CFI e0888 $rbx: .cfa -32 + ^
+STACK CFI INIT e0b8e 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI e0b9c .cfa: $rsp 0 +
+STACK CFI e0ba0 .cfa: $rsp 128 +
+STACK CFI e0ba8 .cfa: $rsp -128 +
+STACK CFI INIT e0bad 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI e0bbb .cfa: $rsp 0 +
+STACK CFI e0bbf .cfa: $rsp 128 +
+STACK CFI e0bc7 .cfa: $rsp -128 +
+STACK CFI INIT e09f0 19e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e09f2 .cfa: $rsp 16 +
+STACK CFI e09f4 .cfa: $rsp 24 +
+STACK CFI e09f5 .cfa: $rsp 32 +
+STACK CFI e09f6 .cfa: $rsp 40 +
+STACK CFI e09f9 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI e09fd .cfa: $rsp 96 +
+STACK CFI INIT e0db8 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI e0dc2 .cfa: $rsp 0 +
+STACK CFI e0dc6 .cfa: $rsp 128 +
+STACK CFI e0dce .cfa: $rsp -128 +
+STACK CFI INIT e0dd3 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI e0ddd .cfa: $rsp 0 +
+STACK CFI e0de1 .cfa: $rsp 128 +
+STACK CFI e0de9 .cfa: $rsp -128 +
+STACK CFI INIT e0bd0 1e8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e0bd2 .cfa: $rsp 16 +
+STACK CFI e0bd4 .cfa: $rsp 24 +
+STACK CFI e0bd6 .cfa: $rsp 32 +
+STACK CFI e0bd8 .cfa: $rsp 40 +
+STACK CFI e0bdb $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI e0bdc .cfa: $rsp 48 +
+STACK CFI e0bdd .cfa: $rsp 56 +
+STACK CFI e0be0 $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI e0be4 .cfa: $rsp 64 +
+STACK CFI INIT e1012 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI e1020 .cfa: $rsp 0 +
+STACK CFI e1024 .cfa: $rsp 128 +
+STACK CFI e102c .cfa: $rsp -128 +
+STACK CFI INIT e1031 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI e103f .cfa: $rsp 0 +
+STACK CFI e1043 .cfa: $rsp 128 +
+STACK CFI e104b .cfa: $rsp -128 +
+STACK CFI INIT e1050 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI e105e .cfa: $rsp 0 +
+STACK CFI e1062 .cfa: $rsp 128 +
+STACK CFI e106a .cfa: $rsp -128 +
+STACK CFI INIT e106f 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI e107d .cfa: $rsp 0 +
+STACK CFI e1081 .cfa: $rsp 128 +
+STACK CFI e1089 .cfa: $rsp -128 +
+STACK CFI INIT e108e 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI e109c .cfa: $rsp 0 +
+STACK CFI e10a0 .cfa: $rsp 128 +
+STACK CFI e10a8 .cfa: $rsp -128 +
+STACK CFI INIT e10ad 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI e10bb .cfa: $rsp 0 +
+STACK CFI e10bf .cfa: $rsp 128 +
+STACK CFI e10c7 .cfa: $rsp -128 +
+STACK CFI INIT e0df0 d2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e0df4 .cfa: $rsp 80 +
+STACK CFI INIT e0ed0 a0 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e0ed4 .cfa: $rsp 16 +
+STACK CFI INIT e0f70 a2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e0f74 .cfa: $rsp 32 +
+STACK CFI INIT e10d0 1ed .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e10d2 .cfa: $rsp 16 +
+STACK CFI e10d5 $r15: .cfa -16 + ^
+STACK CFI e10d7 .cfa: $rsp 24 +
+STACK CFI e10da $r14: .cfa -24 + ^
+STACK CFI e10dc .cfa: $rsp 32 +
+STACK CFI e10df $r13: .cfa -32 + ^
+STACK CFI e10e1 .cfa: $rsp 40 +
+STACK CFI e10e4 $r12: .cfa -40 + ^
+STACK CFI e10e5 .cfa: $rsp 48 +
+STACK CFI e10e6 .cfa: $rsp 56 +
+STACK CFI e10ea .cfa: $rsp 112 +
+STACK CFI e10fc $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT e12c0 387 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e12c2 .cfa: $rsp 16 +
+STACK CFI e12c5 $r15: .cfa -16 + ^
+STACK CFI e12c7 .cfa: $rsp 24 +
+STACK CFI e12c9 .cfa: $rsp 32 +
+STACK CFI e12cd $r13: .cfa -32 + ^ $r14: .cfa -24 + ^
+STACK CFI e12cf .cfa: $rsp 40 +
+STACK CFI e12d2 $r12: .cfa -40 + ^
+STACK CFI e12d3 .cfa: $rsp 48 +
+STACK CFI e12d6 $rbp: .cfa -48 + ^
+STACK CFI e12d7 .cfa: $rsp 56 +
+STACK CFI e12da $rbx: .cfa -56 + ^
+STACK CFI e12de .cfa: $rsp 80 +
+STACK CFI INIT e1650 bf .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e165d $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI e1673 .cfa: $rsp 48 +
+STACK CFI e1679 $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^
+STACK CFI INIT e1966 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI e1970 .cfa: $rsp 0 +
+STACK CFI e1974 .cfa: $rsp 128 +
+STACK CFI e197c .cfa: $rsp -128 +
+STACK CFI INIT e1981 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI e198b .cfa: $rsp 0 +
+STACK CFI e198f .cfa: $rsp 128 +
+STACK CFI e1997 .cfa: $rsp -128 +
+STACK CFI INIT e199c 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI e19a6 .cfa: $rsp 0 +
+STACK CFI e19aa .cfa: $rsp 128 +
+STACK CFI e19b2 .cfa: $rsp -128 +
+STACK CFI INIT e19b7 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI e19c1 .cfa: $rsp 0 +
+STACK CFI e19c5 .cfa: $rsp 128 +
+STACK CFI e19cd .cfa: $rsp -128 +
+STACK CFI INIT e1710 256 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e1712 .cfa: $rsp 16 +
+STACK CFI e1714 .cfa: $rsp 24 +
+STACK CFI e1717 $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI e1719 .cfa: $rsp 32 +
+STACK CFI e171b .cfa: $rsp 40 +
+STACK CFI e171c .cfa: $rsp 48 +
+STACK CFI e171f $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $rbp: .cfa -48 + ^
+STACK CFI e1720 .cfa: $rsp 56 +
+STACK CFI e1723 $rbx: .cfa -56 + ^
+STACK CFI e1727 .cfa: $rsp 80 +
+STACK CFI INIT e19e0 5a6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e19e2 .cfa: $rsp 16 +
+STACK CFI e19e4 .cfa: $rsp 24 +
+STACK CFI e19e6 .cfa: $rsp 32 +
+STACK CFI e19e8 .cfa: $rsp 40 +
+STACK CFI e19e9 .cfa: $rsp 48 +
+STACK CFI e19ea .cfa: $rsp 56 +
+STACK CFI e19ed $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI e19f1 .cfa: $rsp 80 +
+STACK CFI INIT e1f90 b7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e1f9e .cfa: $rsp 32 +
+STACK CFI e1fa9 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT e2050 ff .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e2052 .cfa: $rsp 16 +
+STACK CFI e2058 $r13: .cfa -16 + ^
+STACK CFI e205f .cfa: $rsp 24 +
+STACK CFI e2060 .cfa: $rsp 32 +
+STACK CFI e2061 .cfa: $rsp 40 +
+STACK CFI e2064 $r12: .cfa -24 + ^ $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI e206e .cfa: $rsp 256 +
+STACK CFI INIT e2150 3e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e2151 .cfa: $rsp 16 +
+STACK CFI e2154 $rbx: .cfa -16 + ^
+STACK CFI INIT e2190 a8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e219d $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI e21b5 .cfa: $rsp 48 +
+STACK CFI e21bb $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^
+STACK CFI INIT e2240 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e224d .cfa: $rsp 16 +
+STACK CFI e2250 $rbx: .cfa -16 + ^
+STACK CFI INIT e2270 3e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e227e .cfa: $rsp 32 +
+STACK CFI e2289 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT e22b0 3e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e22be .cfa: $rsp 32 +
+STACK CFI e22c9 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT e22f0 3e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e22fe .cfa: $rsp 32 +
+STACK CFI e2309 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT e2330 5b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e233e .cfa: $rsp 32 +
+STACK CFI e2349 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT e2390 6c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e239d $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI e23a6 .cfa: $rsp 32 +
+STACK CFI e23ad $r12: .cfa -16 + ^
+STACK CFI INIT e2400 5d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e240d $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI e2419 .cfa: $rsp 32 +
+STACK CFI e241c $r12: .cfa -16 + ^
+STACK CFI INIT e2460 33 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT e24a0 50 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e24a1 .cfa: $rsp 16 +
+STACK CFI e24a4 $rbp: .cfa -16 + ^
+STACK CFI e24a5 .cfa: $rsp 24 +
+STACK CFI e24a9 .cfa: $rsp 32 +
+STACK CFI e24b2 $rbx: .cfa -24 + ^
+STACK CFI INIT e24f0 f5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e24f2 .cfa: $rsp 16 +
+STACK CFI e24fa $r15: .cfa -16 + ^
+STACK CFI e24fc .cfa: $rsp 24 +
+STACK CFI e24ff $r14: .cfa -24 + ^
+STACK CFI e2501 .cfa: $rsp 32 +
+STACK CFI e2503 .cfa: $rsp 40 +
+STACK CFI e2504 .cfa: $rsp 48 +
+STACK CFI e2505 .cfa: $rsp 56 +
+STACK CFI e2509 .cfa: $rsp 80 +
+STACK CFI e250c $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT e25f0 52 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT e2650 95 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT e26f0 23d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e26fa $rbp: .cfa -40 + ^
+STACK CFI e271b $r12: .cfa -32 + ^ $r14: .cfa -16 + ^ $rbx: .cfa -48 + ^
+STACK CFI e2727 .cfa: $rsp 432 +
+STACK CFI e2773 $r13: .cfa -24 + ^
+STACK CFI INIT e2930 c6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e2938 $rbx: .cfa -32 + ^
+STACK CFI e2946 .cfa: $rsp 32 +
+STACK CFI e294e $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^
+STACK CFI INIT e2a00 8b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e2a0d $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI e2a16 .cfa: $rsp 32 +
+STACK CFI e2a20 $r12: .cfa -16 + ^
+STACK CFI INIT e2a90 195 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e2a91 .cfa: $rsp 16 +
+STACK CFI e2a94 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI e2a99 $r15: .cfa -24 + ^
+STACK CFI e2aa2 $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^
+STACK CFI e2aae $rbx: .cfa -56 + ^
+STACK CFI INIT e2c30 66f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e2c32 .cfa: $rsp 16 +
+STACK CFI e2c34 .cfa: $rsp 24 +
+STACK CFI e2c37 $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI e2c39 .cfa: $rsp 32 +
+STACK CFI e2c3b .cfa: $rsp 40 +
+STACK CFI e2c3c .cfa: $rsp 48 +
+STACK CFI e2c3d .cfa: $rsp 56 +
+STACK CFI e2c41 .cfa: $rsp 112 +
+STACK CFI e2c45 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT e32a0 340 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e32a2 .cfa: $rsp 16 +
+STACK CFI e32a4 .cfa: $rsp 24 +
+STACK CFI e32a6 .cfa: $rsp 32 +
+STACK CFI e32a7 .cfa: $rsp 40 +
+STACK CFI e32aa $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^ $rbp: .cfa -40 + ^
+STACK CFI e32ab .cfa: $rsp 48 +
+STACK CFI e32ae $rbx: .cfa -48 + ^
+STACK CFI e32b2 .cfa: $rsp 64 +
+STACK CFI INIT e35e0 4e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e35e1 .cfa: $rsp 16 +
+STACK CFI e35e3 $rbp: .cfa -16 + ^
+STACK CFI e35e4 .cfa: $rsp 24 +
+STACK CFI e35e8 .cfa: $rsp 32 +
+STACK CFI e35ec $rbx: .cfa -24 + ^
+STACK CFI INIT e3630 a7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e3631 .cfa: $rsp 16 +
+STACK CFI e3634 $rbx: .cfa -16 + ^
+STACK CFI e3638 .cfa: $rsp 32 +
+STACK CFI INIT e36e0 d4 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e36e8 $rbx: .cfa -40 + ^
+STACK CFI e36fb .cfa: $rsp 48 +
+STACK CFI e3705 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^
+STACK CFI INIT e37c0 82 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e37c1 .cfa: $rsp 16 +
+STACK CFI e37c3 $rbp: .cfa -16 + ^
+STACK CFI e37c4 .cfa: $rsp 24 +
+STACK CFI e37c7 $rbx: .cfa -24 + ^
+STACK CFI e37cb .cfa: $rsp 32 +
+STACK CFI INIT e3850 6e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e385d $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI e3866 .cfa: $rsp 32 +
+STACK CFI e386e $r12: .cfa -16 + ^
+STACK CFI INIT e38c0 21c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e38c2 .cfa: $rsp 16 +
+STACK CFI e38c5 $r15: .cfa -16 + ^
+STACK CFI e38c7 .cfa: $rsp 24 +
+STACK CFI e38ca $r14: .cfa -24 + ^
+STACK CFI e38cc .cfa: $rsp 32 +
+STACK CFI e38cf $r13: .cfa -32 + ^
+STACK CFI e38d1 .cfa: $rsp 40 +
+STACK CFI e38d4 $r12: .cfa -40 + ^
+STACK CFI e38d5 .cfa: $rsp 48 +
+STACK CFI e38d7 $rbp: .cfa -48 + ^
+STACK CFI e38d8 .cfa: $rsp 56 +
+STACK CFI e38dc .cfa: $rsp 112 +
+STACK CFI e38e7 $rbx: .cfa -56 + ^
+STACK CFI INIT e3ae0 27f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e3afa $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI e3b08 .cfa: $rsp 80 +
+STACK CFI e3b17 $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT e3d60 1cd .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e3d6d $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI e3d82 .cfa: $rsp 48 +
+STACK CFI e3d86 $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^
+STACK CFI INIT e3f30 564 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e3f32 .cfa: $rsp 16 +
+STACK CFI e3f35 $r15: .cfa -16 + ^
+STACK CFI e3f37 .cfa: $rsp 24 +
+STACK CFI e3f3a $r14: .cfa -24 + ^
+STACK CFI e3f3c .cfa: $rsp 32 +
+STACK CFI e3f3f $r13: .cfa -32 + ^
+STACK CFI e3f46 .cfa: $rsp 40 +
+STACK CFI e3f49 $r12: .cfa -40 + ^
+STACK CFI e3f4a .cfa: $rsp 48 +
+STACK CFI e3f4b .cfa: $rsp 56 +
+STACK CFI e3f4f .cfa: $rsp 128 +
+STACK CFI e3f61 $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT e44a0 7e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e44a2 .cfa: $rsp 16 +
+STACK CFI e44a4 .cfa: $rsp 24 +
+STACK CFI e44a6 .cfa: $rsp 32 +
+STACK CFI e44a9 $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^
+STACK CFI e44aa .cfa: $rsp 40 +
+STACK CFI e44ab .cfa: $rsp 48 +
+STACK CFI e44b7 $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI INIT e4520 1418 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e4521 .cfa: $rsp 16 +
+STACK CFI e4524 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI e4529 $r15: .cfa -24 + ^
+STACK CFI e455b $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT e5940 a7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e594e .cfa: $rsp 32 +
+STACK CFI e5954 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT e59f0 14c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e59f1 .cfa: $rsp 16 +
+STACK CFI e59f5 .cfa: $rsp 24 +
+STACK CFI e59f8 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI e59ff .cfa: $rsp 256 +
+STACK CFI INIT e5b40 f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT e5b50 4e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e5b51 .cfa: $rsp 16 +
+STACK CFI e5b59 $rbp: .cfa -16 + ^
+STACK CFI e5b5a .cfa: $rsp 24 +
+STACK CFI e5b5d $rbx: .cfa -24 + ^
+STACK CFI e5b63 .cfa: $rsp 32 +
+STACK CFI INIT e5ba0 96 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e5ba1 .cfa: $rsp 16 +
+STACK CFI e5ba2 .cfa: $rsp 24 +
+STACK CFI e5ba5 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI e5ba9 .cfa: $rsp 32 +
+STACK CFI INIT e5c40 3c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT e5c80 8e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e5c84 .cfa: $rsp 16 +
+STACK CFI e5c8c $rbx: .cfa -16 + ^
+STACK CFI INIT e5d10 12c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e5d11 .cfa: $rsp 16 +
+STACK CFI e5d14 $rbp: .cfa -16 + ^
+STACK CFI e5d15 .cfa: $rsp 24 +
+STACK CFI e5d18 $rbx: .cfa -24 + ^
+STACK CFI e5d1c .cfa: $rsp 32 +
+STACK CFI INIT e5e40 30f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e5e42 .cfa: $rsp 16 +
+STACK CFI e5e44 .cfa: $rsp 24 +
+STACK CFI e5e47 $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI e5e49 .cfa: $rsp 32 +
+STACK CFI e5e4b .cfa: $rsp 40 +
+STACK CFI e5e4c .cfa: $rsp 48 +
+STACK CFI e5e4f $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $rbp: .cfa -48 + ^
+STACK CFI e5e50 .cfa: $rsp 56 +
+STACK CFI e5e54 .cfa: $rsp 112 +
+STACK CFI e5e5b $rbx: .cfa -56 + ^
+STACK CFI INIT e6150 c76 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e6151 .cfa: $rsp 16 +
+STACK CFI e6154 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI e615d $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI e6163 $r12: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT e6dd0 21 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT e6e00 5a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT e6e60 14 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT e6e80 42 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT e6ed0 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT e6f00 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT e6f30 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT e6f60 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT e6f90 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT e6fc0 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT e6ff0 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT e7020 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT e7050 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT e7080 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT e70b0 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT e70e0 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT e7110 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT e7140 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT e7170 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 111df0 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT e71a0 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 111e20 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT e71d0 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 111e50 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT e7200 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 111e80 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT e7230 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 111eb0 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT e7260 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 111ee0 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT e7290 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT e72c0 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT e72f0 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT e7320 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT e7350 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT e7380 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT e73b0 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT e73e0 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT e7410 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT e7440 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 111f10 38 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 111f14 .cfa: $rsp 16 +
+STACK CFI INIT e7470 31 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e7474 .cfa: $rsp 16 +
+STACK CFI INIT e74b0 27 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e74b2 .cfa: $rsp 16 +
+STACK CFI e74b3 $r10: .cfa -16 + ^ $rdx: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI e74d4 $rdx: $rdx .cfa: $rsp 16 +
+STACK CFI e74d6 $r10: $r10 .cfa: $rsp 8 +
+STACK CFI INIT e74e0 1c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e74e1 .cfa: $rsp 16 +
+STACK CFI e74e2 $rdx: .cfa -24 + ^ $rsi: .cfa -16 + ^ .cfa: $rsp 24 +
+STACK CFI e74fa $rdx: $rdx .cfa: $rsp 16 +
+STACK CFI e74fb $rsi: $rsi .cfa: $rsp 8 +
+STACK CFI INIT e7500 56 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e7530 .cfa: $rsp 16 +
+STACK CFI INIT e7560 59 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT e75c0 1c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 136565 1c .cfa: $rsp -128 + .ra: $rip
+STACK CFI 136573 .cfa: $rsp 0 +
+STACK CFI 136577 .cfa: $rsp 128 +
+STACK CFI 13657f .cfa: $rsp -128 +
+STACK CFI INIT 136581 1c .cfa: $rsp -128 + .ra: $rip
+STACK CFI 13658f .cfa: $rsp 0 +
+STACK CFI 136593 .cfa: $rsp 128 +
+STACK CFI 13659b .cfa: $rsp -128 +
+STACK CFI INIT e777a 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI e7788 .cfa: $rsp 0 +
+STACK CFI e778c .cfa: $rsp 128 +
+STACK CFI e7794 .cfa: $rsp -128 +
+STACK CFI INIT e7799 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI e77a7 .cfa: $rsp 0 +
+STACK CFI e77ab .cfa: $rsp 128 +
+STACK CFI e77b3 .cfa: $rsp -128 +
+STACK CFI INIT e75e0 27 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 1364e0 85 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1364e1 .cfa: $rsp 16 +
+STACK CFI 13654d $rbx: .cfa -16 + ^
+STACK CFI INIT e7610 16a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e7612 .cfa: $rsp 16 +
+STACK CFI e7617 $r12: .cfa -16 + ^
+STACK CFI e7618 .cfa: $rsp 24 +
+STACK CFI e761b $rbp: .cfa -24 + ^
+STACK CFI e761c .cfa: $rsp 32 +
+STACK CFI e761f $rbx: .cfa -32 + ^
+STACK CFI e7628 .cfa: $rsp 48 +
+STACK CFI INIT e7920 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI e792e .cfa: $rsp 0 +
+STACK CFI e7932 .cfa: $rsp 128 +
+STACK CFI e793a .cfa: $rsp -128 +
+STACK CFI INIT e793f 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI e794d .cfa: $rsp 0 +
+STACK CFI e7951 .cfa: $rsp 128 +
+STACK CFI e7959 .cfa: $rsp -128 +
+STACK CFI INIT e77c0 160 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e77c1 .cfa: $rsp 16 +
+STACK CFI e77ce $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI INIT 1365a0 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT e7960 5a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e7961 .cfa: $rsp 16 +
+STACK CFI e796d $rbx: .cfa -16 + ^
+STACK CFI INIT e79c0 68 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT e7a30 cd .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e7a43 .cfa: $rsp 96 +
+STACK CFI e7a4c $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI INIT e7b00 14d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e7b02 .cfa: $rsp 16 +
+STACK CFI e7b04 .cfa: $rsp 24 +
+STACK CFI e7b06 .cfa: $rsp 32 +
+STACK CFI e7b08 .cfa: $rsp 40 +
+STACK CFI e7b09 .cfa: $rsp 48 +
+STACK CFI e7b0c $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^
+STACK CFI e7b0d .cfa: $rsp 56 +
+STACK CFI e7b11 .cfa: $rsp 128 +
+STACK CFI e7b40 $rbx: .cfa -56 + ^
+STACK CFI INIT e7c50 1e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e7c54 .cfa: $rsp 32 +
+STACK CFI INIT e7c70 7a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e7c7c $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^
+STACK CFI e7c85 .cfa: $rsp 48 +
+STACK CFI e7ca7 $rbx: .cfa -32 + ^
+STACK CFI INIT e7cf0 325 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e7cf2 .cfa: $rsp 16 +
+STACK CFI e7cf4 .cfa: $rsp 24 +
+STACK CFI e7cf6 .cfa: $rsp 32 +
+STACK CFI e7cf8 .cfa: $rsp 40 +
+STACK CFI e7cf9 .cfa: $rsp 48 +
+STACK CFI e7cfa .cfa: $rsp 56 +
+STACK CFI e7cfd $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI e7d01 .cfa: $rsp 176 +
+STACK CFI INIT e8020 99 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT e80c0 2e6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e80cd $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI e80e5 .cfa: $rsp 128 +
+STACK CFI e80ea $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT e83b0 bf .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e83b4 .cfa: $rsp 16 +
+STACK CFI e83bd $rbx: .cfa -16 + ^
+STACK CFI INIT e8470 18e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e8471 .cfa: $rsp 16 +
+STACK CFI e8474 .cfa: $rsp 24 +
+STACK CFI e8483 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT e8600 cb .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e860d $r12: .cfa -24 + ^ $rbx: .cfa -40 + ^
+STACK CFI e861b .cfa: $rsp 48 +
+STACK CFI e8628 $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^
+STACK CFI INIT 1369f0 31 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1369f1 .cfa: $rsp 16 +
+STACK CFI 1369f8 $rbx: .cfa -16 + ^
+STACK CFI INIT e86d0 a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT e86e0 13 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e86e4 .cfa: $rsp 16 +
+STACK CFI INIT e8700 303 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e8702 .cfa: $rsp 16 +
+STACK CFI e8709 $r15: .cfa -16 + ^
+STACK CFI e870b .cfa: $rsp 24 +
+STACK CFI e8712 $r14: .cfa -24 + ^
+STACK CFI e8714 .cfa: $rsp 32 +
+STACK CFI e871b $r13: .cfa -32 + ^
+STACK CFI e871d .cfa: $rsp 40 +
+STACK CFI e8723 $r12: .cfa -40 + ^
+STACK CFI e8724 .cfa: $rsp 48 +
+STACK CFI e8727 $rbp: .cfa -48 + ^
+STACK CFI e8728 .cfa: $rsp 56 +
+STACK CFI e872b $rbx: .cfa -56 + ^
+STACK CFI e872f .cfa: $rsp 64 +
+STACK CFI INIT e8a10 b84 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e8a12 .cfa: $rsp 16 +
+STACK CFI e8a14 .cfa: $rsp 24 +
+STACK CFI e8a16 .cfa: $rsp 32 +
+STACK CFI e8a18 .cfa: $rsp 40 +
+STACK CFI e8a19 .cfa: $rsp 48 +
+STACK CFI e8a1a .cfa: $rsp 56 +
+STACK CFI e8a1d $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI e8a24 .cfa: $rsp 8416 +
+STACK CFI INIT e95a0 7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ea2b0 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI ea2be .cfa: $rsp 0 +
+STACK CFI ea2c2 .cfa: $rsp 128 +
+STACK CFI ea2ca .cfa: $rsp -128 +
+STACK CFI INIT ea2cf 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI ea2dd .cfa: $rsp 0 +
+STACK CFI ea2e1 .cfa: $rsp 128 +
+STACK CFI ea2e9 .cfa: $rsp -128 +
+STACK CFI INIT e95b0 93 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e95b2 .cfa: $rsp 16 +
+STACK CFI e95b5 $r15: .cfa -16 + ^
+STACK CFI e95b7 .cfa: $rsp 24 +
+STACK CFI e95b9 .cfa: $rsp 32 +
+STACK CFI e95bb .cfa: $rsp 40 +
+STACK CFI e95bc .cfa: $rsp 48 +
+STACK CFI e95bd .cfa: $rsp 56 +
+STACK CFI e95c1 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^ .cfa: $rsp 80 +
+STACK CFI INIT e9650 5d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e9651 .cfa: $rsp 16 +
+STACK CFI e9654 $rbp: .cfa -16 + ^
+STACK CFI e9655 .cfa: $rsp 24 +
+STACK CFI e9659 .cfa: $rsp 32 +
+STACK CFI e9667 $rbx: .cfa -24 + ^
+STACK CFI INIT e96b0 2a1 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e96bd $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI e96d5 .cfa: $rsp 96 +
+STACK CFI e96e2 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT e9960 f7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e996c $r12: .cfa -24 + ^ $rbp: .cfa -32 + ^
+STACK CFI e9983 $r13: .cfa -16 + ^ $rbx: .cfa -40 + ^
+STACK CFI e9987 .cfa: $rsp 64 +
+STACK CFI INIT e9a60 11f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e9a62 .cfa: $rsp 16 +
+STACK CFI e9a66 .cfa: $rsp 24 +
+STACK CFI e9a67 .cfa: $rsp 32 +
+STACK CFI e9a70 $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI INIT e9b80 221 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e9b82 .cfa: $rsp 16 +
+STACK CFI e9b8c $r15: .cfa -16 + ^
+STACK CFI e9b8e .cfa: $rsp 24 +
+STACK CFI e9b90 .cfa: $rsp 32 +
+STACK CFI e9b92 .cfa: $rsp 40 +
+STACK CFI e9b93 .cfa: $rsp 48 +
+STACK CFI e9b95 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $rbp: .cfa -48 + ^
+STACK CFI e9b96 .cfa: $rsp 56 +
+STACK CFI e9b99 $rbx: .cfa -56 + ^
+STACK CFI e9ba0 .cfa: $rsp 80 +
+STACK CFI INIT e9db0 49a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e9db2 .cfa: $rsp 16 +
+STACK CFI e9dbb .cfa: $rsp 24 +
+STACK CFI e9dbd .cfa: $rsp 32 +
+STACK CFI e9dbf .cfa: $rsp 40 +
+STACK CFI e9dc0 .cfa: $rsp 48 +
+STACK CFI e9dc1 .cfa: $rsp 56 +
+STACK CFI e9dc8 .cfa: $rsp 400 +
+STACK CFI e9dd9 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT ea250 60 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ea254 .cfa: $rsp 16 +
+STACK CFI INIT ea4fe 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI ea50c .cfa: $rsp 0 +
+STACK CFI ea510 .cfa: $rsp 128 +
+STACK CFI ea518 .cfa: $rsp -128 +
+STACK CFI INIT ea51d 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI ea52b .cfa: $rsp 0 +
+STACK CFI ea52f .cfa: $rsp 128 +
+STACK CFI ea537 .cfa: $rsp -128 +
+STACK CFI INIT ea2f0 b6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ea2f4 .cfa: $rsp 32 +
+STACK CFI INIT ea3b0 14e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ea3b1 .cfa: $rsp 16 +
+STACK CFI ea3b4 $rbx: .cfa -16 + ^
+STACK CFI ea3bb .cfa: $rsp 160 +
+STACK CFI INIT ea540 c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ea550 90 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ea55c $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI ea568 .cfa: $rsp 160 +
+STACK CFI ea587 $r12: .cfa -16 + ^
+STACK CFI INIT eb61a 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI eb628 .cfa: $rsp 0 +
+STACK CFI eb62c .cfa: $rsp 128 +
+STACK CFI eb634 .cfa: $rsp -128 +
+STACK CFI INIT eb639 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI eb647 .cfa: $rsp 0 +
+STACK CFI eb64b .cfa: $rsp 128 +
+STACK CFI eb653 .cfa: $rsp -128 +
+STACK CFI INIT eb658 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI eb666 .cfa: $rsp 0 +
+STACK CFI eb66a .cfa: $rsp 128 +
+STACK CFI eb672 .cfa: $rsp -128 +
+STACK CFI INIT eb677 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI eb685 .cfa: $rsp 0 +
+STACK CFI eb689 .cfa: $rsp 128 +
+STACK CFI eb691 .cfa: $rsp -128 +
+STACK CFI INIT eb696 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI eb6a4 .cfa: $rsp 0 +
+STACK CFI eb6a8 .cfa: $rsp 128 +
+STACK CFI eb6b0 .cfa: $rsp -128 +
+STACK CFI INIT eb6b5 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI eb6c3 .cfa: $rsp 0 +
+STACK CFI eb6c7 .cfa: $rsp 128 +
+STACK CFI eb6cf .cfa: $rsp -128 +
+STACK CFI INIT ea5e0 29 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ea610 63 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ea612 .cfa: $rsp 16 +
+STACK CFI ea616 .cfa: $rsp 24 +
+STACK CFI ea619 $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^
+STACK CFI ea61a .cfa: $rsp 32 +
+STACK CFI ea61c $rbx: .cfa -32 + ^
+STACK CFI INIT 1365d0 22 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 136600 75 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 136602 .cfa: $rsp 16 +
+STACK CFI 136603 .cfa: $rsp 24 +
+STACK CFI 13660a $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^
+STACK CFI 13660b .cfa: $rsp 32 +
+STACK CFI 136610 $rbx: .cfa -32 + ^
+STACK CFI INIT ea680 373 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ea681 .cfa: $rsp 16 +
+STACK CFI ea686 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI ea691 $r12: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI ea6d4 $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI INIT eaa00 af .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI eaa02 .cfa: $rsp 16 +
+STACK CFI eaa04 .cfa: $rsp 24 +
+STACK CFI eaa07 $r13: .cfa -24 + ^ $r14: .cfa -16 + ^
+STACK CFI eaa09 .cfa: $rsp 32 +
+STACK CFI eaa0c $r12: .cfa -32 + ^
+STACK CFI eaa0d .cfa: $rsp 40 +
+STACK CFI eaa10 $rbp: .cfa -40 + ^
+STACK CFI eaa11 .cfa: $rsp 48 +
+STACK CFI eaa14 $rbx: .cfa -48 + ^
+STACK CFI INIT eaab0 13 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT eaad0 511 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI eaad2 .cfa: $rsp 16 +
+STACK CFI eaad4 .cfa: $rsp 24 +
+STACK CFI eaad7 $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI eaad9 .cfa: $rsp 32 +
+STACK CFI eaadb .cfa: $rsp 40 +
+STACK CFI eaadc .cfa: $rsp 48 +
+STACK CFI eaadd .cfa: $rsp 56 +
+STACK CFI eaae1 .cfa: $rsp 112 +
+STACK CFI eaae8 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT eaff0 107 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI eaff2 .cfa: $rsp 16 +
+STACK CFI eaff4 .cfa: $rsp 24 +
+STACK CFI eaff7 $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI eaff9 .cfa: $rsp 32 +
+STACK CFI eaffc $r13: .cfa -32 + ^
+STACK CFI eaffe .cfa: $rsp 40 +
+STACK CFI eb005 $r12: .cfa -40 + ^
+STACK CFI eb006 .cfa: $rsp 48 +
+STACK CFI eb007 .cfa: $rsp 56 +
+STACK CFI eb009 $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI eb00d .cfa: $rsp 64 +
+STACK CFI INIT eb100 104 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI eb10d $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI eb123 .cfa: $rsp 48 +
+STACK CFI eb129 $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^
+STACK CFI INIT 111f50 10 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT eb210 40a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI eb21d $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI eb22a $r12: .cfa -40 + ^ $r13: .cfa -32 + ^
+STACK CFI eb23e .cfa: $rsp 144 +
+STACK CFI eb274 $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT eb6e0 db .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI eb6e2 .cfa: $rsp 16 +
+STACK CFI eb6e5 $r15: .cfa -16 + ^
+STACK CFI eb6e7 .cfa: $rsp 24 +
+STACK CFI eb6ea $r14: .cfa -24 + ^
+STACK CFI eb6ec .cfa: $rsp 32 +
+STACK CFI eb6ee .cfa: $rsp 40 +
+STACK CFI eb6f1 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^
+STACK CFI eb6f2 .cfa: $rsp 48 +
+STACK CFI eb6f5 $rbp: .cfa -48 + ^
+STACK CFI eb6f6 .cfa: $rsp 56 +
+STACK CFI eb6f9 $rbx: .cfa -56 + ^
+STACK CFI eb6fd .cfa: $rsp 112 +
+STACK CFI INIT eb7c0 7e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI eb7c1 .cfa: $rsp 16 +
+STACK CFI eb7c4 $rbx: .cfa -16 + ^
+STACK CFI eb7cb .cfa: $rsp 32 +
+STACK CFI INIT eb840 c9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI eb842 .cfa: $rsp 16 +
+STACK CFI eb845 $r15: .cfa -16 + ^
+STACK CFI eb847 .cfa: $rsp 24 +
+STACK CFI eb84a $r14: .cfa -24 + ^
+STACK CFI eb84c .cfa: $rsp 32 +
+STACK CFI eb84e .cfa: $rsp 40 +
+STACK CFI eb851 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^
+STACK CFI eb852 .cfa: $rsp 48 +
+STACK CFI eb855 $rbp: .cfa -48 + ^
+STACK CFI eb856 .cfa: $rsp 56 +
+STACK CFI eb859 $rbx: .cfa -56 + ^
+STACK CFI eb85d .cfa: $rsp 80 +
+STACK CFI INIT eb910 111 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI eb912 .cfa: $rsp 16 +
+STACK CFI eb915 $r15: .cfa -16 + ^
+STACK CFI eb917 .cfa: $rsp 24 +
+STACK CFI eb91a $r14: .cfa -24 + ^
+STACK CFI eb91c .cfa: $rsp 32 +
+STACK CFI eb91f $r13: .cfa -32 + ^
+STACK CFI eb921 .cfa: $rsp 40 +
+STACK CFI eb924 $r12: .cfa -40 + ^
+STACK CFI eb925 .cfa: $rsp 48 +
+STACK CFI eb926 .cfa: $rsp 56 +
+STACK CFI eb929 $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI eb92d .cfa: $rsp 96 +
+STACK CFI INIT eba30 2af .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI eba32 .cfa: $rsp 16 +
+STACK CFI eba34 .cfa: $rsp 24 +
+STACK CFI eba37 $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI eba39 .cfa: $rsp 32 +
+STACK CFI eba3b .cfa: $rsp 40 +
+STACK CFI eba3c .cfa: $rsp 48 +
+STACK CFI eba3f $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $rbp: .cfa -48 + ^
+STACK CFI eba40 .cfa: $rsp 56 +
+STACK CFI eba43 $rbx: .cfa -56 + ^
+STACK CFI eba47 .cfa: $rsp 144 +
+STACK CFI INIT ebce0 a3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ebced $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI ebcfb .cfa: $rsp 48 +
+STACK CFI ebd08 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT 111f60 a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ebd90 a3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ebd9d $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI ebdab .cfa: $rsp 48 +
+STACK CFI ebdb8 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT 111f70 a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ebe40 a8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ebe4d $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI ebe5b .cfa: $rsp 48 +
+STACK CFI ebe68 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT 111f80 a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ebef0 a8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ebefd $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI ebf0b .cfa: $rsp 48 +
+STACK CFI ebf18 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT 111f90 a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ebfa0 9e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ebfad $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI ebfbb .cfa: $rsp 48 +
+STACK CFI ebfc8 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT 111fa0 a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ec040 9e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ec04d $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI ec05b .cfa: $rsp 48 +
+STACK CFI ec068 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT ec0e0 a3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ec0ed $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI ec0fb .cfa: $rsp 48 +
+STACK CFI ec108 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT 111fb0 a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ec190 a3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ec19d $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI ec1ab .cfa: $rsp 48 +
+STACK CFI ec1b8 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT 111fc0 a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ec240 9e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ec24d $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI ec25b .cfa: $rsp 48 +
+STACK CFI ec268 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT 111fd0 a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ec2e0 9e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ec2ed $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI ec2fb .cfa: $rsp 48 +
+STACK CFI ec308 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT 111fe0 a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ec380 9e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ec38d $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI ec39b .cfa: $rsp 48 +
+STACK CFI ec3a8 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT 111ff0 a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ec420 a3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ec42d $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI ec43b .cfa: $rsp 48 +
+STACK CFI ec448 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT 112000 a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ec4d0 9e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ec4dd $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI ec4eb .cfa: $rsp 48 +
+STACK CFI ec4f8 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT 112010 a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ec570 6d3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ec572 .cfa: $rsp 16 +
+STACK CFI ec574 .cfa: $rsp 24 +
+STACK CFI ec576 .cfa: $rsp 32 +
+STACK CFI ec578 .cfa: $rsp 40 +
+STACK CFI ec57b $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI ec57c .cfa: $rsp 48 +
+STACK CFI ec57f $rbp: .cfa -48 + ^
+STACK CFI ec580 .cfa: $rsp 56 +
+STACK CFI ec583 $rbx: .cfa -56 + ^
+STACK CFI ec587 .cfa: $rsp 128 +
+STACK CFI INIT ecc50 2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ecc60 3c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ecca0 47 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ecca4 .cfa: $rsp 16 +
+STACK CFI INIT eccf0 18c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI eccf2 .cfa: $rsp 16 +
+STACK CFI eccf4 .cfa: $rsp 24 +
+STACK CFI eccf5 .cfa: $rsp 32 +
+STACK CFI eccf6 .cfa: $rsp 40 +
+STACK CFI eccf9 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI eccfd .cfa: $rsp 48 +
+STACK CFI INIT ece80 3c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ecec0 29 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ecef0 15d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ed050 57 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ed054 .cfa: $rsp 16 +
+STACK CFI INIT ed0b0 15d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ed210 124 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ed214 .cfa: $rsp 16 +
+STACK CFI INIT ed340 e5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ed344 .cfa: $rsp 16 +
+STACK CFI INIT ed430 ed .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ed434 .cfa: $rsp 16 +
+STACK CFI INIT ed520 88 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ed521 .cfa: $rsp 16 +
+STACK CFI ed52c $rbx: .cfa -16 + ^
+STACK CFI ed53a .cfa: $rsp 224 +
+STACK CFI INIT ed5b0 9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ed5b4 .cfa: $rsp 16 +
+STACK CFI INIT ed5c0 e2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ed5cd $r12: .cfa -40 + ^ $rbx: .cfa -56 + ^
+STACK CFI ed5eb .cfa: $rsp 304 +
+STACK CFI ed5f1 $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^
+STACK CFI INIT ed6b0 83 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ed6b1 .cfa: $rsp 16 +
+STACK CFI ed6bc $rbx: .cfa -16 + ^
+STACK CFI ed6ca .cfa: $rsp 224 +
+STACK CFI INIT ed740 11b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ed74d $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^
+STACK CFI ed76b .cfa: $rsp 368 +
+STACK CFI ed771 $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT ed9fd 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI eda07 .cfa: $rsp 0 +
+STACK CFI eda0b .cfa: $rsp 128 +
+STACK CFI eda13 .cfa: $rsp -128 +
+STACK CFI INIT eda18 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI eda22 .cfa: $rsp 0 +
+STACK CFI eda26 .cfa: $rsp 128 +
+STACK CFI eda2e .cfa: $rsp -128 +
+STACK CFI INIT eda33 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI eda3d .cfa: $rsp 0 +
+STACK CFI eda41 .cfa: $rsp 128 +
+STACK CFI eda49 .cfa: $rsp -128 +
+STACK CFI INIT ed860 19d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ed862 .cfa: $rsp 16 +
+STACK CFI ed868 $r12: .cfa -16 + ^
+STACK CFI ed869 .cfa: $rsp 24 +
+STACK CFI ed86a .cfa: $rsp 32 +
+STACK CFI ed871 .cfa: $rsp 240 +
+STACK CFI ed878 $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI INIT edbe2 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI edbec .cfa: $rsp 0 +
+STACK CFI edbf0 .cfa: $rsp 128 +
+STACK CFI edbf8 .cfa: $rsp -128 +
+STACK CFI INIT edbfd 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI edc07 .cfa: $rsp 0 +
+STACK CFI edc0b .cfa: $rsp 128 +
+STACK CFI edc13 .cfa: $rsp -128 +
+STACK CFI INIT edc18 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI edc22 .cfa: $rsp 0 +
+STACK CFI edc26 .cfa: $rsp 128 +
+STACK CFI edc2e .cfa: $rsp -128 +
+STACK CFI INIT eda50 192 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI eda51 .cfa: $rsp 16 +
+STACK CFI eda56 $rbp: .cfa -16 + ^
+STACK CFI eda57 .cfa: $rsp 24 +
+STACK CFI eda5a $rbx: .cfa -24 + ^
+STACK CFI eda61 .cfa: $rsp 240 +
+STACK CFI INIT edd5f 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI edd69 .cfa: $rsp 0 +
+STACK CFI edd6d .cfa: $rsp 128 +
+STACK CFI edd75 .cfa: $rsp -128 +
+STACK CFI INIT edd7a 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI edd84 .cfa: $rsp 0 +
+STACK CFI edd88 .cfa: $rsp 128 +
+STACK CFI edd90 .cfa: $rsp -128 +
+STACK CFI INIT edd95 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI edd9f .cfa: $rsp 0 +
+STACK CFI edda3 .cfa: $rsp 128 +
+STACK CFI eddab .cfa: $rsp -128 +
+STACK CFI INIT edc30 12f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI edc3c $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^
+STACK CFI edc45 .cfa: $rsp 32 +
+STACK CFI edc53 $rbx: .cfa -32 + ^
+STACK CFI INIT edeca 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI eded4 .cfa: $rsp 0 +
+STACK CFI eded8 .cfa: $rsp 128 +
+STACK CFI edee0 .cfa: $rsp -128 +
+STACK CFI INIT edee5 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI edeef .cfa: $rsp 0 +
+STACK CFI edef3 .cfa: $rsp 128 +
+STACK CFI edefb .cfa: $rsp -128 +
+STACK CFI INIT edf00 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI edf0a .cfa: $rsp 0 +
+STACK CFI edf0e .cfa: $rsp 128 +
+STACK CFI edf16 .cfa: $rsp -128 +
+STACK CFI INIT eddb0 11a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI eddb1 .cfa: $rsp 16 +
+STACK CFI eddb6 $rbp: .cfa -16 + ^
+STACK CFI eddba .cfa: $rsp 24 +
+STACK CFI eddbd $rbx: .cfa -24 + ^
+STACK CFI eddc1 .cfa: $rsp 32 +
+STACK CFI INIT ee0f9 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI ee103 .cfa: $rsp 0 +
+STACK CFI ee107 .cfa: $rsp 128 +
+STACK CFI ee10f .cfa: $rsp -128 +
+STACK CFI INIT ee114 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI ee11e .cfa: $rsp 0 +
+STACK CFI ee122 .cfa: $rsp 128 +
+STACK CFI ee12a .cfa: $rsp -128 +
+STACK CFI INIT ee12f 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI ee139 .cfa: $rsp 0 +
+STACK CFI ee13d .cfa: $rsp 128 +
+STACK CFI ee145 .cfa: $rsp -128 +
+STACK CFI INIT edf20 1d9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI edf2d $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI edf3b .cfa: $rsp 48 +
+STACK CFI edf47 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT ee150 10 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ee15b .cfa: $rsp 16 +
+STACK CFI INIT ee160 206 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ee162 .cfa: $rsp 16 +
+STACK CFI ee168 .cfa: $rsp 24 +
+STACK CFI ee16a .cfa: $rsp 32 +
+STACK CFI ee16c .cfa: $rsp 40 +
+STACK CFI ee16f $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI ee177 .cfa: $rsp 48 +
+STACK CFI ee17a $rbp: .cfa -48 + ^
+STACK CFI ee182 .cfa: $rsp 56 +
+STACK CFI ee186 .cfa: $rsp 128 +
+STACK CFI ee18b $rbx: .cfa -56 + ^
+STACK CFI INIT ee50a 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI ee514 .cfa: $rsp 0 +
+STACK CFI ee518 .cfa: $rsp 128 +
+STACK CFI ee520 .cfa: $rsp -128 +
+STACK CFI INIT ee525 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI ee52f .cfa: $rsp 0 +
+STACK CFI ee533 .cfa: $rsp 128 +
+STACK CFI ee53b .cfa: $rsp -128 +
+STACK CFI INIT ee540 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI ee54a .cfa: $rsp 0 +
+STACK CFI ee54e .cfa: $rsp 128 +
+STACK CFI ee556 .cfa: $rsp -128 +
+STACK CFI INIT ee370 19a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ee37d $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI ee38b .cfa: $rsp 48 +
+STACK CFI ee390 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT ee560 b6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ee57a .cfa: $rsp 48 +
+STACK CFI ee57f $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI INIT ee620 34 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ee624 .cfa: $rsp 16 +
+STACK CFI INIT ee660 17 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ee664 .cfa: $rsp 16 +
+STACK CFI INIT ee680 17 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ee684 .cfa: $rsp 16 +
+STACK CFI INIT ee6a0 1a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ee6a4 .cfa: $rsp 16 +
+STACK CFI INIT ee6c0 24 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ee6c4 .cfa: $rsp 16 +
+STACK CFI INIT ee6f0 34 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ee6f4 .cfa: $rsp 16 +
+STACK CFI INIT ee730 17 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ee734 .cfa: $rsp 16 +
+STACK CFI INIT ee750 2a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ee754 .cfa: $rsp 16 +
+STACK CFI INIT ee780 17 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ee784 .cfa: $rsp 16 +
+STACK CFI INIT ee7a0 1b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ee7a4 .cfa: $rsp 16 +
+STACK CFI INIT ee7c0 17 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ee7c4 .cfa: $rsp 16 +
+STACK CFI INIT ee98a 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI ee994 .cfa: $rsp 0 +
+STACK CFI ee998 .cfa: $rsp 128 +
+STACK CFI ee9a0 .cfa: $rsp -128 +
+STACK CFI INIT ee9a5 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI ee9af .cfa: $rsp 0 +
+STACK CFI ee9b3 .cfa: $rsp 128 +
+STACK CFI ee9bb .cfa: $rsp -128 +
+STACK CFI INIT ee9c0 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI ee9ca .cfa: $rsp 0 +
+STACK CFI ee9ce .cfa: $rsp 128 +
+STACK CFI ee9d6 .cfa: $rsp -128 +
+STACK CFI INIT ee7e0 1aa .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ee7e8 $r12: .cfa -24 + ^
+STACK CFI ee7f4 $r13: .cfa -16 + ^
+STACK CFI ee80d .cfa: $rsp 48 +
+STACK CFI ee816 $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI INIT ee9e0 8c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ee9e8 $r12: .cfa -16 + ^
+STACK CFI ee9f4 $rbx: .cfa -32 + ^
+STACK CFI eea08 .cfa: $rsp 32 +
+STACK CFI eea0e $rbp: .cfa -24 + ^
+STACK CFI INIT eea70 17 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI eea74 .cfa: $rsp 16 +
+STACK CFI INIT eea90 35 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI eea94 .cfa: $rsp 16 +
+STACK CFI INIT eead0 17 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI eead4 .cfa: $rsp 16 +
+STACK CFI INIT eeaf0 17 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI eeaf4 .cfa: $rsp 16 +
+STACK CFI INIT eeb10 17 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI eeb14 .cfa: $rsp 16 +
+STACK CFI INIT eeb30 8b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI eeb37 .cfa: $rsp 224 +
+STACK CFI INIT eebc0 19f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI eebcd $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI eebed .cfa: $rsp 304 +
+STACK CFI eebf0 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT eed60 8b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI eed67 .cfa: $rsp 224 +
+STACK CFI INIT eedf0 104 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI eee0e $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI eee1a .cfa: $rsp 608 +
+STACK CFI eee2a $r14: .cfa -16 + ^
+STACK CFI INIT eef00 1d2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI eef0d $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI eef2b .cfa: $rsp 320 +
+STACK CFI eef33 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT ef0e0 8b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ef0e7 .cfa: $rsp 224 +
+STACK CFI INIT ef170 4a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ef17e .cfa: $rsp 32 +
+STACK CFI ef181 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT ef1c0 9b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ef1fb $rdi: $r10
+STACK CFI ef1fd $rsi: $rbx
+STACK CFI ef23c $rdi: $rdi
+STACK CFI ef23e $r12: .cfa 16 + ^ $r13: .cfa 24 + ^ $r14: .cfa 32 + ^ $r15: .cfa 40 + ^ $rbp: $r9 $rbx: .cfa 0 + ^ $rsi: $rsi $rsp: $r8 .cfa: $rdi 0 + .ra: $rdx
+STACK CFI INIT ef260 10 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ef26b .cfa: $rsp 16 +
+STACK CFI INIT ef270 39 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ef271 .cfa: $rsp 16 +
+STACK CFI ef274 $rbp: .cfa -16 + ^
+STACK CFI ef275 .cfa: $rsp 24 +
+STACK CFI ef27c $rbx: .cfa -24 + ^
+STACK CFI ef280 .cfa: $rsp 32 +
+STACK CFI INIT ef2b0 17 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ef2b4 .cfa: $rsp 16 +
+STACK CFI INIT ef2d0 74 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ef2d1 .cfa: $rsp 16 +
+STACK CFI ef2d4 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI ef2dc $rbx: .cfa -24 + ^
+STACK CFI INIT 136680 2d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 136688 .cfa: $rsp 16 +
+STACK CFI 136696 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI INIT ef350 6d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ef351 .cfa: $rsp 16 +
+STACK CFI ef360 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI INIT ef3c0 c1 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ef3c1 .cfa: $rsp 16 +
+STACK CFI ef3c4 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI ef3c7 $rbx: .cfa -24 + ^
+STACK CFI INIT ef490 289 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ef491 .cfa: $rsp 16 +
+STACK CFI ef497 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI ef49c $r15: .cfa -24 + ^
+STACK CFI ef4a3 $r13: .cfa -40 + ^ $r14: .cfa -32 + ^
+STACK CFI ef4f4 $r12: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT ef720 2cd .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ef722 .cfa: $rsp 16 +
+STACK CFI ef724 .cfa: $rsp 24 +
+STACK CFI ef726 .cfa: $rsp 32 +
+STACK CFI ef728 .cfa: $rsp 40 +
+STACK CFI ef729 .cfa: $rsp 48 +
+STACK CFI ef72a .cfa: $rsp 56 +
+STACK CFI ef731 .cfa: $rsp 336 +
+STACK CFI ef741 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT efb8d 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI efb97 .cfa: $rsp 0 +
+STACK CFI efb9b .cfa: $rsp 128 +
+STACK CFI efba3 .cfa: $rsp -128 +
+STACK CFI INIT efba8 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI efbb2 .cfa: $rsp 0 +
+STACK CFI efbb6 .cfa: $rsp 128 +
+STACK CFI efbbe .cfa: $rsp -128 +
+STACK CFI INIT efbc3 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI efbcd .cfa: $rsp 0 +
+STACK CFI efbd1 .cfa: $rsp 128 +
+STACK CFI efbd9 .cfa: $rsp -128 +
+STACK CFI INIT ef9f0 19d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ef9f2 .cfa: $rsp 16 +
+STACK CFI ef9f8 $r12: .cfa -16 + ^
+STACK CFI ef9f9 .cfa: $rsp 24 +
+STACK CFI ef9fa .cfa: $rsp 32 +
+STACK CFI efa01 .cfa: $rsp 240 +
+STACK CFI efa08 $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI INIT efd72 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI efd7c .cfa: $rsp 0 +
+STACK CFI efd80 .cfa: $rsp 128 +
+STACK CFI efd88 .cfa: $rsp -128 +
+STACK CFI INIT efd8d 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI efd97 .cfa: $rsp 0 +
+STACK CFI efd9b .cfa: $rsp 128 +
+STACK CFI efda3 .cfa: $rsp -128 +
+STACK CFI INIT efda8 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI efdb2 .cfa: $rsp 0 +
+STACK CFI efdb6 .cfa: $rsp 128 +
+STACK CFI efdbe .cfa: $rsp -128 +
+STACK CFI INIT efbe0 192 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI efbe1 .cfa: $rsp 16 +
+STACK CFI efbe6 $rbp: .cfa -16 + ^
+STACK CFI efbe7 .cfa: $rsp 24 +
+STACK CFI efbea $rbx: .cfa -24 + ^
+STACK CFI efbf1 .cfa: $rsp 240 +
+STACK CFI INIT efeef 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI efef9 .cfa: $rsp 0 +
+STACK CFI efefd .cfa: $rsp 128 +
+STACK CFI eff05 .cfa: $rsp -128 +
+STACK CFI INIT eff0a 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI eff14 .cfa: $rsp 0 +
+STACK CFI eff18 .cfa: $rsp 128 +
+STACK CFI eff20 .cfa: $rsp -128 +
+STACK CFI INIT eff25 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI eff2f .cfa: $rsp 0 +
+STACK CFI eff33 .cfa: $rsp 128 +
+STACK CFI eff3b .cfa: $rsp -128 +
+STACK CFI INIT efdc0 12f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI efdcc $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^
+STACK CFI efdd5 .cfa: $rsp 32 +
+STACK CFI efde3 $rbx: .cfa -32 + ^
+STACK CFI INIT f005a 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI f0064 .cfa: $rsp 0 +
+STACK CFI f0068 .cfa: $rsp 128 +
+STACK CFI f0070 .cfa: $rsp -128 +
+STACK CFI INIT f0075 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI f007f .cfa: $rsp 0 +
+STACK CFI f0083 .cfa: $rsp 128 +
+STACK CFI f008b .cfa: $rsp -128 +
+STACK CFI INIT f0090 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI f009a .cfa: $rsp 0 +
+STACK CFI f009e .cfa: $rsp 128 +
+STACK CFI f00a6 .cfa: $rsp -128 +
+STACK CFI INIT eff40 11a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI eff41 .cfa: $rsp 16 +
+STACK CFI eff46 $rbp: .cfa -16 + ^
+STACK CFI eff4a .cfa: $rsp 24 +
+STACK CFI eff4d $rbx: .cfa -24 + ^
+STACK CFI eff51 .cfa: $rsp 32 +
+STACK CFI INIT f024a 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI f0254 .cfa: $rsp 0 +
+STACK CFI f0258 .cfa: $rsp 128 +
+STACK CFI f0260 .cfa: $rsp -128 +
+STACK CFI INIT f0265 1b .cfa: $rsp -128 + .ra: $rip
+STACK CFI f026f .cfa: $rsp 0 +
+STACK CFI f0273 .cfa: $rsp 128 +
+STACK CFI f027b .cfa: $rsp -128 +
+STACK CFI INIT f0280 18 .cfa: $rsp -128 + .ra: $rip
+STACK CFI f028a .cfa: $rsp 0 +
+STACK CFI f028e .cfa: $rsp 128 +
+STACK CFI f0296 .cfa: $rsp -128 +
+STACK CFI INIT f00b0 19a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f00bd $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI f00cb .cfa: $rsp 48 +
+STACK CFI f00d0 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT f02a0 be .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f02ba .cfa: $rsp 48 +
+STACK CFI f02bf $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI INIT f0360 33 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f0364 .cfa: $rsp 16 +
+STACK CFI INIT f03a0 3e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f03a7 .cfa: $rsp 16 +
+STACK CFI INIT f03e0 1b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f03e4 .cfa: $rsp 16 +
+STACK CFI INIT f0400 1b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f0404 .cfa: $rsp 16 +
+STACK CFI INIT f0420 1b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f0424 .cfa: $rsp 16 +
+STACK CFI INIT f0440 3c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f044b .cfa: $rsp 16 +
+STACK CFI INIT f0480 17 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f0484 .cfa: $rsp 16 +
+STACK CFI INIT f04a0 58 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f04a4 .cfa: $rsp 16 +
+STACK CFI INIT f0500 117 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f0504 .cfa: $rsp 16 +
+STACK CFI INIT f0620 17 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f0624 .cfa: $rsp 16 +
+STACK CFI INIT f0640 17 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f0644 .cfa: $rsp 16 +
+STACK CFI INIT f0660 83 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f0661 .cfa: $rsp 16 +
+STACK CFI f066c $rbx: .cfa -16 + ^
+STACK CFI f067a .cfa: $rsp 224 +
+STACK CFI INIT f06f0 11c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f06fd $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI f071b .cfa: $rsp 896 +
+STACK CFI f0721 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT f0810 2b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f0814 .cfa: $rsp 16 +
+STACK CFI INIT f0840 17 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f0844 .cfa: $rsp 16 +
+STACK CFI INIT f0860 17 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f0864 .cfa: $rsp 16 +
+STACK CFI INIT f0880 17 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f0884 .cfa: $rsp 16 +
+STACK CFI INIT f08a0 17 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f08a4 .cfa: $rsp 16 +
+STACK CFI INIT f08c0 30 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f08c4 .cfa: $rsp 48 +
+STACK CFI INIT f08f0 30 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f08f4 .cfa: $rsp 48 +
+STACK CFI INIT f0b3f 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f0b4d .cfa: $rsp 0 +
+STACK CFI f0b51 .cfa: $rsp 128 +
+STACK CFI f0b59 .cfa: $rsp -128 +
+STACK CFI INIT f0b5e 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f0b6c .cfa: $rsp 0 +
+STACK CFI f0b70 .cfa: $rsp 128 +
+STACK CFI f0b78 .cfa: $rsp -128 +
+STACK CFI INIT 1366b0 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1366b4 .cfa: $rsp 16 +
+STACK CFI INIT f0920 e4 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f0924 .cfa: $rsp 16 +
+STACK CFI INIT f0a10 7c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f0a14 .cfa: $rsp 48 +
+STACK CFI INIT f0a90 af .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f0a92 .cfa: $rsp 16 +
+STACK CFI f0a98 $r14: .cfa -16 + ^
+STACK CFI f0a9a .cfa: $rsp 24 +
+STACK CFI f0aa1 $r13: .cfa -24 + ^
+STACK CFI f0aa3 .cfa: $rsp 32 +
+STACK CFI f0aa9 $r12: .cfa -32 + ^
+STACK CFI f0aaa .cfa: $rsp 40 +
+STACK CFI f0aad $rbp: .cfa -40 + ^
+STACK CFI f0aae .cfa: $rsp 48 +
+STACK CFI f0ab1 $rbx: .cfa -48 + ^
+STACK CFI INIT f0b80 5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT f0b90 7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT f0ba0 2b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT f0bd0 4e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT f0c20 2a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT f0c50 99 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f0c72 .cfa: $rsp 80 +
+STACK CFI f0c76 $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^ $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI INIT f0cf0 1e5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f0cf1 .cfa: $rsp 16 +
+STACK CFI f0cf9 .cfa: $rsp 24 +
+STACK CFI f0cfd $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT f0ee0 11 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT f108d 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f109b .cfa: $rsp 0 +
+STACK CFI f109f .cfa: $rsp 128 +
+STACK CFI f10a7 .cfa: $rsp -128 +
+STACK CFI INIT f10ac 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f10ba .cfa: $rsp 0 +
+STACK CFI f10be .cfa: $rsp 128 +
+STACK CFI f10c6 .cfa: $rsp -128 +
+STACK CFI INIT f0f00 18d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f0f02 .cfa: $rsp 16 +
+STACK CFI f0f07 $r14: .cfa -16 + ^
+STACK CFI f0f09 .cfa: $rsp 24 +
+STACK CFI f0f0c $r13: .cfa -24 + ^
+STACK CFI f0f13 .cfa: $rsp 32 +
+STACK CFI f0f16 $r12: .cfa -32 + ^
+STACK CFI f0f17 .cfa: $rsp 40 +
+STACK CFI f0f18 .cfa: $rsp 48 +
+STACK CFI f0f1c .cfa: $rsp 80 +
+STACK CFI f0f5a $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI INIT f10d0 398 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f10d2 .cfa: $rsp 16 +
+STACK CFI f10d5 $r15: .cfa -16 + ^
+STACK CFI f10d7 .cfa: $rsp 24 +
+STACK CFI f10da $r14: .cfa -24 + ^
+STACK CFI f10dc .cfa: $rsp 32 +
+STACK CFI f10df $r13: .cfa -32 + ^
+STACK CFI f10e1 .cfa: $rsp 40 +
+STACK CFI f10e2 .cfa: $rsp 48 +
+STACK CFI f10e3 .cfa: $rsp 56 +
+STACK CFI f10e7 .cfa: $rsp 144 +
+STACK CFI f1100 $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT f1626 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f1634 .cfa: $rsp 0 +
+STACK CFI f1638 .cfa: $rsp 128 +
+STACK CFI f1640 .cfa: $rsp -128 +
+STACK CFI INIT f1645 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f1653 .cfa: $rsp 0 +
+STACK CFI f1657 .cfa: $rsp 128 +
+STACK CFI f165f .cfa: $rsp -128 +
+STACK CFI INIT f1470 1b6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f1472 .cfa: $rsp 16 +
+STACK CFI f147a $r12: .cfa -16 + ^
+STACK CFI f147d .cfa: $rsp 24 +
+STACK CFI f147e .cfa: $rsp 32 +
+STACK CFI f1482 .cfa: $rsp 80 +
+STACK CFI f14be $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI INIT f183a 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f1848 .cfa: $rsp 0 +
+STACK CFI f184c .cfa: $rsp 128 +
+STACK CFI f1854 .cfa: $rsp -128 +
+STACK CFI INIT f1859 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f1867 .cfa: $rsp 0 +
+STACK CFI f186b .cfa: $rsp 128 +
+STACK CFI f1873 .cfa: $rsp -128 +
+STACK CFI INIT f1670 1ca .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f1672 .cfa: $rsp 16 +
+STACK CFI f1677 $r13: .cfa -16 + ^
+STACK CFI f1679 .cfa: $rsp 24 +
+STACK CFI f167c $r12: .cfa -24 + ^
+STACK CFI f1682 .cfa: $rsp 32 +
+STACK CFI f1683 .cfa: $rsp 40 +
+STACK CFI f1687 .cfa: $rsp 96 +
+STACK CFI f16c3 $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI INIT f1880 363 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f1882 .cfa: $rsp 16 +
+STACK CFI f1884 .cfa: $rsp 24 +
+STACK CFI f1887 $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI f1889 .cfa: $rsp 32 +
+STACK CFI f188c $r13: .cfa -32 + ^
+STACK CFI f188e .cfa: $rsp 40 +
+STACK CFI f1891 $r12: .cfa -40 + ^
+STACK CFI f1892 .cfa: $rsp 48 +
+STACK CFI f1895 $rbp: .cfa -48 + ^
+STACK CFI f1896 .cfa: $rsp 56 +
+STACK CFI f189a .cfa: $rsp 176 +
+STACK CFI f18a2 $rbx: .cfa -56 + ^
+STACK CFI INIT f1bf0 353 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f1bf2 .cfa: $rsp 16 +
+STACK CFI f1bf4 .cfa: $rsp 24 +
+STACK CFI f1bf6 .cfa: $rsp 32 +
+STACK CFI f1bf9 $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI f1bfb .cfa: $rsp 40 +
+STACK CFI f1bfe $r12: .cfa -40 + ^
+STACK CFI f1bff .cfa: $rsp 48 +
+STACK CFI f1c02 $rbp: .cfa -48 + ^
+STACK CFI f1c03 .cfa: $rsp 56 +
+STACK CFI f1c06 $rbx: .cfa -56 + ^
+STACK CFI f1c0a .cfa: $rsp 176 +
+STACK CFI INIT f1fe5 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f1ff3 .cfa: $rsp 0 +
+STACK CFI f1ff7 .cfa: $rsp 128 +
+STACK CFI f1fff .cfa: $rsp -128 +
+STACK CFI INIT f2004 1c .cfa: $rsp -128 + .ra: $rip
+STACK CFI f2012 .cfa: $rsp 0 +
+STACK CFI f2016 .cfa: $rsp 128 +
+STACK CFI f201e .cfa: $rsp -128 +
+STACK CFI INIT f1f50 95 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f1f54 .cfa: $rsp 16 +
+STACK CFI INIT f2265 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f2273 .cfa: $rsp 0 +
+STACK CFI f2277 .cfa: $rsp 128 +
+STACK CFI f227f .cfa: $rsp -128 +
+STACK CFI INIT f2284 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f2292 .cfa: $rsp 0 +
+STACK CFI f2296 .cfa: $rsp 128 +
+STACK CFI f229e .cfa: $rsp -128 +
+STACK CFI INIT f22a3 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f22b1 .cfa: $rsp 0 +
+STACK CFI f22b5 .cfa: $rsp 128 +
+STACK CFI f22bd .cfa: $rsp -128 +
+STACK CFI INIT f22c2 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f22d0 .cfa: $rsp 0 +
+STACK CFI f22d4 .cfa: $rsp 128 +
+STACK CFI f22dc .cfa: $rsp -128 +
+STACK CFI INIT f22e1 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f22ef .cfa: $rsp 0 +
+STACK CFI f22f3 .cfa: $rsp 128 +
+STACK CFI f22fb .cfa: $rsp -128 +
+STACK CFI INIT f2300 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f230e .cfa: $rsp 0 +
+STACK CFI f2312 .cfa: $rsp 128 +
+STACK CFI f231a .cfa: $rsp -128 +
+STACK CFI INIT f2020 e1 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f2024 .cfa: $rsp 80 +
+STACK CFI INIT f2110 a3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f2114 .cfa: $rsp 16 +
+STACK CFI INIT f21c0 a5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f21c4 .cfa: $rsp 32 +
+STACK CFI INIT f24ad 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f24bb .cfa: $rsp 0 +
+STACK CFI f24bf .cfa: $rsp 128 +
+STACK CFI f24c7 .cfa: $rsp -128 +
+STACK CFI INIT f24cc 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f24da .cfa: $rsp 0 +
+STACK CFI f24de .cfa: $rsp 128 +
+STACK CFI f24e6 .cfa: $rsp -128 +
+STACK CFI INIT f2320 18d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f2322 .cfa: $rsp 16 +
+STACK CFI f2327 $r13: .cfa -16 + ^
+STACK CFI f2329 .cfa: $rsp 24 +
+STACK CFI f232c $r12: .cfa -24 + ^
+STACK CFI f2332 .cfa: $rsp 32 +
+STACK CFI f2333 .cfa: $rsp 40 +
+STACK CFI f2337 .cfa: $rsp 80 +
+STACK CFI f2375 $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI INIT f24f0 266 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f24f2 .cfa: $rsp 16 +
+STACK CFI f24f5 $r15: .cfa -16 + ^
+STACK CFI f24f7 .cfa: $rsp 24 +
+STACK CFI f24fa $r14: .cfa -24 + ^
+STACK CFI f24fc .cfa: $rsp 32 +
+STACK CFI f24ff $r13: .cfa -32 + ^
+STACK CFI f2501 .cfa: $rsp 40 +
+STACK CFI f2502 .cfa: $rsp 48 +
+STACK CFI f2503 .cfa: $rsp 56 +
+STACK CFI f2507 .cfa: $rsp 144 +
+STACK CFI f2523 $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT f28cd 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f28db .cfa: $rsp 0 +
+STACK CFI f28df .cfa: $rsp 128 +
+STACK CFI f28e7 .cfa: $rsp -128 +
+STACK CFI INIT f28ec 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f28fa .cfa: $rsp 0 +
+STACK CFI f28fe .cfa: $rsp 128 +
+STACK CFI f2906 .cfa: $rsp -128 +
+STACK CFI INIT f2760 16d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f2762 .cfa: $rsp 16 +
+STACK CFI f276a $r12: .cfa -16 + ^
+STACK CFI f276d .cfa: $rsp 24 +
+STACK CFI f276e .cfa: $rsp 32 +
+STACK CFI f2772 .cfa: $rsp 48 +
+STACK CFI f27b0 $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI INIT f29a5 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f29b3 .cfa: $rsp 0 +
+STACK CFI f29b7 .cfa: $rsp 128 +
+STACK CFI f29bf .cfa: $rsp -128 +
+STACK CFI INIT f29c4 1c .cfa: $rsp -128 + .ra: $rip
+STACK CFI f29d2 .cfa: $rsp 0 +
+STACK CFI f29d6 .cfa: $rsp 128 +
+STACK CFI f29de .cfa: $rsp -128 +
+STACK CFI INIT f2910 95 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f2914 .cfa: $rsp 16 +
+STACK CFI INIT f2c25 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f2c33 .cfa: $rsp 0 +
+STACK CFI f2c37 .cfa: $rsp 128 +
+STACK CFI f2c3f .cfa: $rsp -128 +
+STACK CFI INIT f2c44 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f2c52 .cfa: $rsp 0 +
+STACK CFI f2c56 .cfa: $rsp 128 +
+STACK CFI f2c5e .cfa: $rsp -128 +
+STACK CFI INIT f2c63 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f2c71 .cfa: $rsp 0 +
+STACK CFI f2c75 .cfa: $rsp 128 +
+STACK CFI f2c7d .cfa: $rsp -128 +
+STACK CFI INIT f2c82 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f2c90 .cfa: $rsp 0 +
+STACK CFI f2c94 .cfa: $rsp 128 +
+STACK CFI f2c9c .cfa: $rsp -128 +
+STACK CFI INIT f2ca1 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f2caf .cfa: $rsp 0 +
+STACK CFI f2cb3 .cfa: $rsp 128 +
+STACK CFI f2cbb .cfa: $rsp -128 +
+STACK CFI INIT f2cc0 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f2cce .cfa: $rsp 0 +
+STACK CFI f2cd2 .cfa: $rsp 128 +
+STACK CFI f2cda .cfa: $rsp -128 +
+STACK CFI INIT f29e0 e1 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f29e4 .cfa: $rsp 80 +
+STACK CFI INIT f2ad0 a3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f2ad4 .cfa: $rsp 16 +
+STACK CFI INIT f2b80 a5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f2b84 .cfa: $rsp 32 +
+STACK CFI INIT f2ce0 256 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f2ce2 .cfa: $rsp 16 +
+STACK CFI f2ce5 $r15: .cfa -16 + ^
+STACK CFI f2ce7 .cfa: $rsp 24 +
+STACK CFI f2cea $r14: .cfa -24 + ^
+STACK CFI f2cec .cfa: $rsp 32 +
+STACK CFI f2cef $r13: .cfa -32 + ^
+STACK CFI f2cf1 .cfa: $rsp 40 +
+STACK CFI f2cf2 .cfa: $rsp 48 +
+STACK CFI f2cf5 $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^
+STACK CFI f2cf6 .cfa: $rsp 56 +
+STACK CFI f2cfa .cfa: $rsp 128 +
+STACK CFI f2d11 $rbx: .cfa -56 + ^
+STACK CFI INIT f3065 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f3073 .cfa: $rsp 0 +
+STACK CFI f3077 .cfa: $rsp 128 +
+STACK CFI f307f .cfa: $rsp -128 +
+STACK CFI INIT f3084 1c .cfa: $rsp -128 + .ra: $rip
+STACK CFI f3092 .cfa: $rsp 0 +
+STACK CFI f3096 .cfa: $rsp 128 +
+STACK CFI f309e .cfa: $rsp -128 +
+STACK CFI INIT f2f40 125 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f2f41 .cfa: $rsp 16 +
+STACK CFI f2f49 .cfa: $rsp 24 +
+STACK CFI f2f4b $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI f2f4f .cfa: $rsp 48 +
+STACK CFI INIT f30a0 1ed .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f30a2 .cfa: $rsp 16 +
+STACK CFI f30a5 $r15: .cfa -16 + ^
+STACK CFI f30a7 .cfa: $rsp 24 +
+STACK CFI f30aa $r14: .cfa -24 + ^
+STACK CFI f30ac .cfa: $rsp 32 +
+STACK CFI f30af $r13: .cfa -32 + ^
+STACK CFI f30b1 .cfa: $rsp 40 +
+STACK CFI f30b4 $r12: .cfa -40 + ^
+STACK CFI f30b5 .cfa: $rsp 48 +
+STACK CFI f30b6 .cfa: $rsp 56 +
+STACK CFI f30ba .cfa: $rsp 112 +
+STACK CFI f30cc $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT f3318 1c .cfa: $rsp -128 + .ra: $rip
+STACK CFI f3326 .cfa: $rsp 0 +
+STACK CFI f332a .cfa: $rsp 128 +
+STACK CFI f3332 .cfa: $rsp -128 +
+STACK CFI INIT f3334 1c .cfa: $rsp -128 + .ra: $rip
+STACK CFI f3342 .cfa: $rsp 0 +
+STACK CFI f3346 .cfa: $rsp 128 +
+STACK CFI f334e .cfa: $rsp -128 +
+STACK CFI INIT f3290 88 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f3294 .cfa: $rsp 16 +
+STACK CFI INIT f3575 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f3583 .cfa: $rsp 0 +
+STACK CFI f3587 .cfa: $rsp 128 +
+STACK CFI f358f .cfa: $rsp -128 +
+STACK CFI INIT f3594 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f35a2 .cfa: $rsp 0 +
+STACK CFI f35a6 .cfa: $rsp 128 +
+STACK CFI f35ae .cfa: $rsp -128 +
+STACK CFI INIT f35b3 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f35c1 .cfa: $rsp 0 +
+STACK CFI f35c5 .cfa: $rsp 128 +
+STACK CFI f35cd .cfa: $rsp -128 +
+STACK CFI INIT f35d2 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f35e0 .cfa: $rsp 0 +
+STACK CFI f35e4 .cfa: $rsp 128 +
+STACK CFI f35ec .cfa: $rsp -128 +
+STACK CFI INIT f35f1 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f35ff .cfa: $rsp 0 +
+STACK CFI f3603 .cfa: $rsp 128 +
+STACK CFI f360b .cfa: $rsp -128 +
+STACK CFI INIT f3610 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f361e .cfa: $rsp 0 +
+STACK CFI f3622 .cfa: $rsp 128 +
+STACK CFI f362a .cfa: $rsp -128 +
+STACK CFI INIT f3350 d5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f3354 .cfa: $rsp 80 +
+STACK CFI INIT f3430 a0 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f3434 .cfa: $rsp 16 +
+STACK CFI INIT f34d0 a5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f34d4 .cfa: $rsp 32 +
+STACK CFI INIT f3755 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f3763 .cfa: $rsp 0 +
+STACK CFI f3767 .cfa: $rsp 128 +
+STACK CFI f376f .cfa: $rsp -128 +
+STACK CFI INIT f3774 1c .cfa: $rsp -128 + .ra: $rip
+STACK CFI f3782 .cfa: $rsp 0 +
+STACK CFI f3786 .cfa: $rsp 128 +
+STACK CFI f378e .cfa: $rsp -128 +
+STACK CFI INIT f3630 125 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f3631 .cfa: $rsp 16 +
+STACK CFI f3639 .cfa: $rsp 24 +
+STACK CFI f363c $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI f3640 .cfa: $rsp 48 +
+STACK CFI INIT f3790 1ed .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f3792 .cfa: $rsp 16 +
+STACK CFI f3795 $r15: .cfa -16 + ^
+STACK CFI f3797 .cfa: $rsp 24 +
+STACK CFI f379a $r14: .cfa -24 + ^
+STACK CFI f379c .cfa: $rsp 32 +
+STACK CFI f379f $r13: .cfa -32 + ^
+STACK CFI f37a1 .cfa: $rsp 40 +
+STACK CFI f37a4 $r12: .cfa -40 + ^
+STACK CFI f37a5 .cfa: $rsp 48 +
+STACK CFI f37a6 .cfa: $rsp 56 +
+STACK CFI f37aa .cfa: $rsp 112 +
+STACK CFI f37bc $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT f3abd 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f3acb .cfa: $rsp 0 +
+STACK CFI f3acf .cfa: $rsp 128 +
+STACK CFI f3ad7 .cfa: $rsp -128 +
+STACK CFI INIT f3adc 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f3aea .cfa: $rsp 0 +
+STACK CFI f3aee .cfa: $rsp 128 +
+STACK CFI f3af6 .cfa: $rsp -128 +
+STACK CFI INIT f3980 13d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f3982 .cfa: $rsp 16 +
+STACK CFI f3987 $r12: .cfa -16 + ^
+STACK CFI f3988 .cfa: $rsp 24 +
+STACK CFI f398b $rbp: .cfa -24 + ^
+STACK CFI f3991 .cfa: $rsp 32 +
+STACK CFI f3995 .cfa: $rsp 48 +
+STACK CFI f39c7 $rbx: .cfa -32 + ^
+STACK CFI INIT f3b00 26d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f3b02 .cfa: $rsp 16 +
+STACK CFI f3b05 $r15: .cfa -16 + ^
+STACK CFI f3b07 .cfa: $rsp 24 +
+STACK CFI f3b0a $r14: .cfa -24 + ^
+STACK CFI f3b0c .cfa: $rsp 32 +
+STACK CFI f3b0f $r13: .cfa -32 + ^
+STACK CFI f3b11 .cfa: $rsp 40 +
+STACK CFI f3b12 .cfa: $rsp 48 +
+STACK CFI f3b15 $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^
+STACK CFI f3b16 .cfa: $rsp 56 +
+STACK CFI f3b1a .cfa: $rsp 128 +
+STACK CFI f3b33 $rbx: .cfa -56 + ^
+STACK CFI INIT f3ead 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f3ebb .cfa: $rsp 0 +
+STACK CFI f3ebf .cfa: $rsp 128 +
+STACK CFI f3ec7 .cfa: $rsp -128 +
+STACK CFI INIT f3ecc 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f3eda .cfa: $rsp 0 +
+STACK CFI f3ede .cfa: $rsp 128 +
+STACK CFI f3ee6 .cfa: $rsp -128 +
+STACK CFI INIT f3d70 13d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f3d72 .cfa: $rsp 16 +
+STACK CFI f3d77 $r12: .cfa -16 + ^
+STACK CFI f3d78 .cfa: $rsp 24 +
+STACK CFI f3d7b $rbp: .cfa -24 + ^
+STACK CFI f3d81 .cfa: $rsp 32 +
+STACK CFI f3d85 .cfa: $rsp 48 +
+STACK CFI f3db7 $rbx: .cfa -32 + ^
+STACK CFI INIT f3ef0 26d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f3ef2 .cfa: $rsp 16 +
+STACK CFI f3ef5 $r15: .cfa -16 + ^
+STACK CFI f3ef7 .cfa: $rsp 24 +
+STACK CFI f3efa $r14: .cfa -24 + ^
+STACK CFI f3efc .cfa: $rsp 32 +
+STACK CFI f3eff $r13: .cfa -32 + ^
+STACK CFI f3f01 .cfa: $rsp 40 +
+STACK CFI f3f02 .cfa: $rsp 48 +
+STACK CFI f3f05 $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^
+STACK CFI f3f06 .cfa: $rsp 56 +
+STACK CFI f3f0a .cfa: $rsp 128 +
+STACK CFI f3f22 $rbx: .cfa -56 + ^
+STACK CFI INIT f41e8 1c .cfa: $rsp -128 + .ra: $rip
+STACK CFI f41f6 .cfa: $rsp 0 +
+STACK CFI f41fa .cfa: $rsp 128 +
+STACK CFI f4202 .cfa: $rsp -128 +
+STACK CFI INIT f4204 1c .cfa: $rsp -128 + .ra: $rip
+STACK CFI f4212 .cfa: $rsp 0 +
+STACK CFI f4216 .cfa: $rsp 128 +
+STACK CFI f421e .cfa: $rsp -128 +
+STACK CFI INIT f4160 88 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f4164 .cfa: $rsp 16 +
+STACK CFI INIT f4445 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f4453 .cfa: $rsp 0 +
+STACK CFI f4457 .cfa: $rsp 128 +
+STACK CFI f445f .cfa: $rsp -128 +
+STACK CFI INIT f4464 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f4472 .cfa: $rsp 0 +
+STACK CFI f4476 .cfa: $rsp 128 +
+STACK CFI f447e .cfa: $rsp -128 +
+STACK CFI INIT f4483 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f4491 .cfa: $rsp 0 +
+STACK CFI f4495 .cfa: $rsp 128 +
+STACK CFI f449d .cfa: $rsp -128 +
+STACK CFI INIT f44a2 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f44b0 .cfa: $rsp 0 +
+STACK CFI f44b4 .cfa: $rsp 128 +
+STACK CFI f44bc .cfa: $rsp -128 +
+STACK CFI INIT f44c1 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f44cf .cfa: $rsp 0 +
+STACK CFI f44d3 .cfa: $rsp 128 +
+STACK CFI f44db .cfa: $rsp -128 +
+STACK CFI INIT f44e0 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f44ee .cfa: $rsp 0 +
+STACK CFI f44f2 .cfa: $rsp 128 +
+STACK CFI f44fa .cfa: $rsp -128 +
+STACK CFI INIT f4220 d5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f4224 .cfa: $rsp 80 +
+STACK CFI INIT f4300 a0 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f4304 .cfa: $rsp 16 +
+STACK CFI INIT f43a0 a5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f43a4 .cfa: $rsp 32 +
+STACK CFI INIT f4588 1c .cfa: $rsp -128 + .ra: $rip
+STACK CFI f4596 .cfa: $rsp 0 +
+STACK CFI f459a .cfa: $rsp 128 +
+STACK CFI f45a2 .cfa: $rsp -128 +
+STACK CFI INIT f45a4 1c .cfa: $rsp -128 + .ra: $rip
+STACK CFI f45b2 .cfa: $rsp 0 +
+STACK CFI f45b6 .cfa: $rsp 128 +
+STACK CFI f45be .cfa: $rsp -128 +
+STACK CFI INIT f4500 88 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f4504 .cfa: $rsp 16 +
+STACK CFI INIT f46e5 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f46f3 .cfa: $rsp 0 +
+STACK CFI f46f7 .cfa: $rsp 128 +
+STACK CFI f46ff .cfa: $rsp -128 +
+STACK CFI INIT f4704 1c .cfa: $rsp -128 + .ra: $rip
+STACK CFI f4712 .cfa: $rsp 0 +
+STACK CFI f4716 .cfa: $rsp 128 +
+STACK CFI f471e .cfa: $rsp -128 +
+STACK CFI INIT f45c0 125 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f45c1 .cfa: $rsp 16 +
+STACK CFI f45c9 .cfa: $rsp 24 +
+STACK CFI f45cc $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI f45d0 .cfa: $rsp 48 +
+STACK CFI INIT f4845 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f4853 .cfa: $rsp 0 +
+STACK CFI f4857 .cfa: $rsp 128 +
+STACK CFI f485f .cfa: $rsp -128 +
+STACK CFI INIT f4864 1c .cfa: $rsp -128 + .ra: $rip
+STACK CFI f4872 .cfa: $rsp 0 +
+STACK CFI f4876 .cfa: $rsp 128 +
+STACK CFI f487e .cfa: $rsp -128 +
+STACK CFI INIT f4720 125 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f4721 .cfa: $rsp 16 +
+STACK CFI f4729 .cfa: $rsp 24 +
+STACK CFI f472b $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI f472f .cfa: $rsp 48 +
+STACK CFI INIT f4aa5 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f4ab3 .cfa: $rsp 0 +
+STACK CFI f4ab7 .cfa: $rsp 128 +
+STACK CFI f4abf .cfa: $rsp -128 +
+STACK CFI INIT f4ac4 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f4ad2 .cfa: $rsp 0 +
+STACK CFI f4ad6 .cfa: $rsp 128 +
+STACK CFI f4ade .cfa: $rsp -128 +
+STACK CFI INIT f4ae3 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f4af1 .cfa: $rsp 0 +
+STACK CFI f4af5 .cfa: $rsp 128 +
+STACK CFI f4afd .cfa: $rsp -128 +
+STACK CFI INIT f4b02 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f4b10 .cfa: $rsp 0 +
+STACK CFI f4b14 .cfa: $rsp 128 +
+STACK CFI f4b1c .cfa: $rsp -128 +
+STACK CFI INIT f4b21 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f4b2f .cfa: $rsp 0 +
+STACK CFI f4b33 .cfa: $rsp 128 +
+STACK CFI f4b3b .cfa: $rsp -128 +
+STACK CFI INIT f4b40 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f4b4e .cfa: $rsp 0 +
+STACK CFI f4b52 .cfa: $rsp 128 +
+STACK CFI f4b5a .cfa: $rsp -128 +
+STACK CFI INIT f4880 d5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f4884 .cfa: $rsp 80 +
+STACK CFI INIT f4960 a0 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f4964 .cfa: $rsp 16 +
+STACK CFI INIT f4a00 a5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f4a04 .cfa: $rsp 32 +
+STACK CFI INIT f4b60 1ed .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f4b62 .cfa: $rsp 16 +
+STACK CFI f4b65 $r15: .cfa -16 + ^
+STACK CFI f4b67 .cfa: $rsp 24 +
+STACK CFI f4b6a $r14: .cfa -24 + ^
+STACK CFI f4b6c .cfa: $rsp 32 +
+STACK CFI f4b6f $r13: .cfa -32 + ^
+STACK CFI f4b71 .cfa: $rsp 40 +
+STACK CFI f4b74 $r12: .cfa -40 + ^
+STACK CFI f4b75 .cfa: $rsp 48 +
+STACK CFI f4b76 .cfa: $rsp 56 +
+STACK CFI f4b7a .cfa: $rsp 112 +
+STACK CFI f4b8c $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT f4d50 1ed .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f4d52 .cfa: $rsp 16 +
+STACK CFI f4d55 $r15: .cfa -16 + ^
+STACK CFI f4d57 .cfa: $rsp 24 +
+STACK CFI f4d5a $r14: .cfa -24 + ^
+STACK CFI f4d5c .cfa: $rsp 32 +
+STACK CFI f4d5f $r13: .cfa -32 + ^
+STACK CFI f4d61 .cfa: $rsp 40 +
+STACK CFI f4d64 $r12: .cfa -40 + ^
+STACK CFI f4d65 .cfa: $rsp 48 +
+STACK CFI f4d66 .cfa: $rsp 56 +
+STACK CFI f4d6a .cfa: $rsp 112 +
+STACK CFI f4d7c $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT f4f40 c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT f4f50 16e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f4f62 .cfa: $rsp 16 +
+STACK CFI f4f63 .cfa: $rsp 24 +
+STACK CFI f4f6f $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT f50c0 176 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f50c2 .cfa: $rsp 16 +
+STACK CFI f50c4 .cfa: $rsp 24 +
+STACK CFI f50c6 .cfa: $rsp 32 +
+STACK CFI f50c8 .cfa: $rsp 40 +
+STACK CFI f50c9 .cfa: $rsp 48 +
+STACK CFI f50cc $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^
+STACK CFI f50cd .cfa: $rsp 56 +
+STACK CFI f50d4 .cfa: $rsp 1136 +
+STACK CFI f50e9 $rbx: .cfa -56 + ^
+STACK CFI INIT f5240 270 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f5242 .cfa: $rsp 16 +
+STACK CFI f524d .cfa: $rsp 24 +
+STACK CFI f524e .cfa: $rsp 32 +
+STACK CFI f524f .cfa: $rsp 40 +
+STACK CFI f5256 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI INIT f54b0 c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT f54c0 42 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f54c1 .cfa: $rsp 16 +
+STACK CFI f54c4 $rbx: .cfa -16 + ^
+STACK CFI f54cf .cfa: $rsp 32 +
+STACK CFI INIT f5510 16e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f5512 .cfa: $rsp 16 +
+STACK CFI f5514 .cfa: $rsp 24 +
+STACK CFI f5516 .cfa: $rsp 32 +
+STACK CFI f5518 .cfa: $rsp 40 +
+STACK CFI f5519 .cfa: $rsp 48 +
+STACK CFI f551c $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^
+STACK CFI f551d .cfa: $rsp 56 +
+STACK CFI f5524 .cfa: $rsp 1136 +
+STACK CFI f5539 $rbx: .cfa -56 + ^
+STACK CFI INIT f6050 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f605e .cfa: $rsp 0 +
+STACK CFI f6062 .cfa: $rsp 128 +
+STACK CFI f606a .cfa: $rsp -128 +
+STACK CFI INIT f606f 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f607d .cfa: $rsp 0 +
+STACK CFI f6081 .cfa: $rsp 128 +
+STACK CFI f6089 .cfa: $rsp -128 +
+STACK CFI INIT f608e 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f609c .cfa: $rsp 0 +
+STACK CFI f60a0 .cfa: $rsp 128 +
+STACK CFI f60a8 .cfa: $rsp -128 +
+STACK CFI INIT f60ad 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f60bb .cfa: $rsp 0 +
+STACK CFI f60bf .cfa: $rsp 128 +
+STACK CFI f60c7 .cfa: $rsp -128 +
+STACK CFI INIT f60cc 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f60da .cfa: $rsp 0 +
+STACK CFI f60de .cfa: $rsp 128 +
+STACK CFI f60e6 .cfa: $rsp -128 +
+STACK CFI INIT f60eb 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f60f9 .cfa: $rsp 0 +
+STACK CFI f60fd .cfa: $rsp 128 +
+STACK CFI f6105 .cfa: $rsp -128 +
+STACK CFI INIT f5680 31 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f5681 .cfa: $rsp 16 +
+STACK CFI f5684 $rbx: .cfa -16 + ^
+STACK CFI INIT f56c0 85 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f56c8 .cfa: $rsp 16 +
+STACK CFI f56cb $rbx: .cfa -16 + ^
+STACK CFI INIT f5750 141 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f5752 .cfa: $rsp 16 +
+STACK CFI f5754 .cfa: $rsp 24 +
+STACK CFI f5756 .cfa: $rsp 32 +
+STACK CFI f5759 $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI f575e .cfa: $rsp 40 +
+STACK CFI f575f .cfa: $rsp 48 +
+STACK CFI f5764 $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^
+STACK CFI f5765 .cfa: $rsp 56 +
+STACK CFI f5768 $rbx: .cfa -56 + ^
+STACK CFI f5770 .cfa: $rsp 96 +
+STACK CFI INIT f58a0 1e9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f58a2 .cfa: $rsp 16 +
+STACK CFI f58a5 $r15: .cfa -16 + ^
+STACK CFI f58a7 .cfa: $rsp 24 +
+STACK CFI f58aa $r14: .cfa -24 + ^
+STACK CFI f58ac .cfa: $rsp 32 +
+STACK CFI f58ae .cfa: $rsp 40 +
+STACK CFI f58af .cfa: $rsp 48 +
+STACK CFI f58b0 .cfa: $rsp 56 +
+STACK CFI f58b3 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI f58b7 .cfa: $rsp 112 +
+STACK CFI INIT f5a90 97 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f5a91 .cfa: $rsp 16 +
+STACK CFI f5a97 $rbp: .cfa -16 + ^
+STACK CFI f5a9f .cfa: $rsp 24 +
+STACK CFI f5aa2 $rbx: .cfa -24 + ^
+STACK CFI f5aa6 .cfa: $rsp 48 +
+STACK CFI INIT f5b30 47 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f5b31 .cfa: $rsp 16 +
+STACK CFI f5b34 $rbx: .cfa -16 + ^
+STACK CFI INIT f5b80 374 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f5b82 .cfa: $rsp 16 +
+STACK CFI f5b87 $r15: .cfa -16 + ^
+STACK CFI f5b89 .cfa: $rsp 24 +
+STACK CFI f5b8b .cfa: $rsp 32 +
+STACK CFI f5b8d .cfa: $rsp 40 +
+STACK CFI f5b8e .cfa: $rsp 48 +
+STACK CFI f5b91 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $rbp: .cfa -48 + ^
+STACK CFI f5b92 .cfa: $rsp 56 +
+STACK CFI f5b99 .cfa: $rsp 1280 +
+STACK CFI f5ba1 $rbx: .cfa -56 + ^
+STACK CFI INIT f5f00 12 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f5f01 .cfa: $rsp 16 +
+STACK CFI f5f04 $rbx: .cfa -16 + ^
+STACK CFI INIT f5f20 66 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f5f24 .cfa: $rsp 16 +
+STACK CFI INIT f5f90 45 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f5f9d $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI f5fa1 .cfa: $rsp 32 +
+STACK CFI INIT f5fe0 70 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f5fe4 .cfa: $rsp 16 +
+STACK CFI INIT f6110 1a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f6114 .cfa: $rsp 16 +
+STACK CFI INIT f6130 d2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f613e .cfa: $rsp 48 +
+STACK CFI f6147 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT f6f63 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f6f71 .cfa: $rsp 0 +
+STACK CFI f6f75 .cfa: $rsp 128 +
+STACK CFI f6f7d .cfa: $rsp -128 +
+STACK CFI INIT f6f82 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI f6f90 .cfa: $rsp 0 +
+STACK CFI f6f94 .cfa: $rsp 128 +
+STACK CFI f6f9c .cfa: $rsp -128 +
+STACK CFI INIT f6210 2fd .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f6211 .cfa: $rsp 16 +
+STACK CFI f6214 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI f6239 $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT f6510 a53 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f6511 .cfa: $rsp 16 +
+STACK CFI f6519 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI f6524 $r12: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI f652f $r13: .cfa -40 + ^ $r14: .cfa -32 + ^
+STACK CFI f654c $r15: .cfa -24 + ^
+STACK CFI INIT f6fb0 8f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f6fbc $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI f6fc5 .cfa: $rsp 80 +
+STACK CFI f6fc8 $r12: .cfa -16 + ^
+STACK CFI INIT f7040 9b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f704d $r12: .cfa -16 + ^ $rbx: .cfa -32 + ^
+STACK CFI f7056 $rbp: .cfa -24 + ^ .cfa: $rsp 80 +
+STACK CFI INIT f70e0 36 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f70e1 .cfa: $rsp 16 +
+STACK CFI f70e4 $rbp: .cfa -16 + ^
+STACK CFI f70e5 .cfa: $rsp 24 +
+STACK CFI f70e8 $rbx: .cfa -24 + ^
+STACK CFI f70ec .cfa: $rsp 32 +
+STACK CFI INIT f7120 303 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f7122 .cfa: $rsp 16 +
+STACK CFI f7124 .cfa: $rsp 24 +
+STACK CFI f7126 .cfa: $rsp 32 +
+STACK CFI f7128 .cfa: $rsp 40 +
+STACK CFI f7129 .cfa: $rsp 48 +
+STACK CFI f712a .cfa: $rsp 56 +
+STACK CFI f712e .cfa: $rsp 112 +
+STACK CFI f7165 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT f7430 b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT f7440 5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT f7450 3a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f7452 .cfa: $rsp 16 +
+STACK CFI f7453 .cfa: $rsp 24 +
+STACK CFI f745a $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^
+STACK CFI f745b .cfa: $rsp 32 +
+STACK CFI f7469 $rbx: .cfa -32 + ^
+STACK CFI INIT f7490 8f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f7491 .cfa: $rsp 16 +
+STACK CFI f7499 .cfa: $rsp 24 +
+STACK CFI f749c $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI f74a5 .cfa: $rsp 48 +
+STACK CFI INIT f7520 377 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f7521 .cfa: $rsp 16 +
+STACK CFI f7524 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI f752d $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI f7533 $r12: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT f78a0 e23 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f78a1 .cfa: $rsp 16 +
+STACK CFI f78a4 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI f78b6 $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT f86d0 17 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f86d1 .cfa: $rsp 16 +
+STACK CFI f86d4 $rbx: .cfa -16 + ^
+STACK CFI INIT f86f0 15b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f86f1 .cfa: $rsp 16 +
+STACK CFI f86f4 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI f86ff $r13: .cfa -40 + ^ $rbx: .cfa -56 + ^
+STACK CFI f8715 $r12: .cfa -48 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI INIT f8850 159 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f8851 .cfa: $rsp 16 +
+STACK CFI f8854 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI f885b $r14: .cfa -24 + ^
+STACK CFI f8867 $r13: .cfa -32 + ^
+STACK CFI f8875 $r12: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI INIT f89b0 7c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f89c2 .cfa: $rsp 16 +
+STACK CFI INIT f8a30 188 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f8a31 .cfa: $rsp 16 +
+STACK CFI f8a34 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI f8a3f $r12: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI f8a4a $r13: .cfa -40 + ^ $r14: .cfa -32 + ^
+STACK CFI f8a7a $r15: .cfa -24 + ^
+STACK CFI INIT f8bc0 168 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f8bc1 .cfa: $rsp 16 +
+STACK CFI f8bc4 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI f8bcb $r13: .cfa -40 + ^
+STACK CFI f8be2 $r12: .cfa -48 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI f8c00 $rbx: .cfa -56 + ^
+STACK CFI INIT f8d30 523 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f8d32 .cfa: $rsp 16 +
+STACK CFI f8d34 .cfa: $rsp 24 +
+STACK CFI f8d37 $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI f8d39 .cfa: $rsp 32 +
+STACK CFI f8d3f $r13: .cfa -32 + ^
+STACK CFI f8d41 .cfa: $rsp 40 +
+STACK CFI f8d42 .cfa: $rsp 48 +
+STACK CFI f8d43 .cfa: $rsp 56 +
+STACK CFI f8d4a .cfa: $rsp 288 +
+STACK CFI f8dc3 $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT f9260 40 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f9264 .cfa: $rsp 32 +
+STACK CFI INIT f92a0 1cd .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f92ad $r12: .cfa -16 + ^ $rbx: .cfa -32 + ^
+STACK CFI f92b9 .cfa: $rsp 176 +
+STACK CFI f92c7 $rbp: .cfa -24 + ^
+STACK CFI INIT f9470 1a3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f9471 .cfa: $rsp 16 +
+STACK CFI f9474 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI f947f $r13: .cfa -40 + ^ $r14: .cfa -32 + ^
+STACK CFI f948a $r15: .cfa -24 + ^ $rbx: .cfa -56 + ^
+STACK CFI f94a4 $r12: .cfa -48 + ^
+STACK CFI INIT f9620 86 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f9627 .cfa: $rsp 144 +
+STACK CFI INIT f96b0 1d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f96b4 .cfa: $rsp 32 +
+STACK CFI INIT f96d0 ba .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f96d2 .cfa: $rsp 16 +
+STACK CFI f96de $r15: .cfa -16 + ^
+STACK CFI f96e0 .cfa: $rsp 24 +
+STACK CFI f96e3 $r14: .cfa -24 + ^
+STACK CFI f96e7 .cfa: $rsp 32 +
+STACK CFI f96ea $r13: .cfa -32 + ^
+STACK CFI f96ec .cfa: $rsp 40 +
+STACK CFI f96ef $r12: .cfa -40 + ^
+STACK CFI f96f5 .cfa: $rsp 48 +
+STACK CFI f96f8 $rbp: .cfa -48 + ^
+STACK CFI f96f9 .cfa: $rsp 56 +
+STACK CFI f96fd .cfa: $rsp 128 +
+STACK CFI f9713 $rbx: .cfa -56 + ^
+STACK CFI INIT f9790 b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT f97a0 1b9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f97ad $r13: .cfa -32 + ^ $rbx: .cfa -56 + ^
+STACK CFI f97cb .cfa: $rsp 208 +
+STACK CFI f97d1 $r12: .cfa -40 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^
+STACK CFI INIT f9960 a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT f9970 a47 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f9972 .cfa: $rsp 16 +
+STACK CFI f9974 .cfa: $rsp 24 +
+STACK CFI f9976 .cfa: $rsp 32 +
+STACK CFI f9978 .cfa: $rsp 40 +
+STACK CFI f997b $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI f997c .cfa: $rsp 48 +
+STACK CFI f997d .cfa: $rsp 56 +
+STACK CFI f9984 .cfa: $rsp 704 +
+STACK CFI f998c $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT fa3c0 18 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fa3c4 .cfa: $rsp 32 +
+STACK CFI INIT fa3e0 576 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fa3e2 .cfa: $rsp 16 +
+STACK CFI fa3e8 $r15: .cfa -16 + ^
+STACK CFI fa3ee .cfa: $rsp 24 +
+STACK CFI fa3f0 .cfa: $rsp 32 +
+STACK CFI fa3f3 $r13: .cfa -32 + ^ $r14: .cfa -24 + ^
+STACK CFI fa3f5 .cfa: $rsp 40 +
+STACK CFI fa3f8 $r12: .cfa -40 + ^
+STACK CFI fa3f9 .cfa: $rsp 48 +
+STACK CFI fa3fa .cfa: $rsp 56 +
+STACK CFI fa401 .cfa: $rsp 592 +
+STACK CFI fa409 $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT fa960 15 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fa964 .cfa: $rsp 32 +
+STACK CFI INIT fa980 215 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fa982 .cfa: $rsp 16 +
+STACK CFI fa984 .cfa: $rsp 24 +
+STACK CFI fa985 .cfa: $rsp 32 +
+STACK CFI fa986 .cfa: $rsp 40 +
+STACK CFI fa98a .cfa: $rsp 48 +
+STACK CFI fa999 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI INIT faba0 472 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI faba1 .cfa: $rsp 16 +
+STACK CFI faba4 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI fabab $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI fabb3 $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT fb242 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI fb250 .cfa: $rsp 0 +
+STACK CFI fb254 .cfa: $rsp 128 +
+STACK CFI fb25c .cfa: $rsp -128 +
+STACK CFI INIT fb261 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI fb26f .cfa: $rsp 0 +
+STACK CFI fb273 .cfa: $rsp 128 +
+STACK CFI fb27b .cfa: $rsp -128 +
+STACK CFI INIT fb280 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI fb28e .cfa: $rsp 0 +
+STACK CFI fb292 .cfa: $rsp 128 +
+STACK CFI fb29a .cfa: $rsp -128 +
+STACK CFI INIT fb29f 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI fb2ad .cfa: $rsp 0 +
+STACK CFI fb2b1 .cfa: $rsp 128 +
+STACK CFI fb2b9 .cfa: $rsp -128 +
+STACK CFI INIT fb2be 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI fb2cc .cfa: $rsp 0 +
+STACK CFI fb2d0 .cfa: $rsp 128 +
+STACK CFI fb2d8 .cfa: $rsp -128 +
+STACK CFI INIT fb2dd 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI fb2eb .cfa: $rsp 0 +
+STACK CFI fb2ef .cfa: $rsp 128 +
+STACK CFI fb2f7 .cfa: $rsp -128 +
+STACK CFI INIT fb020 d2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fb024 .cfa: $rsp 80 +
+STACK CFI INIT fb100 a0 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fb104 .cfa: $rsp 16 +
+STACK CFI INIT fb1a0 a2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fb1a4 .cfa: $rsp 32 +
+STACK CFI INIT fb388 1c .cfa: $rsp -128 + .ra: $rip
+STACK CFI fb396 .cfa: $rsp 0 +
+STACK CFI fb39a .cfa: $rsp 128 +
+STACK CFI fb3a2 .cfa: $rsp -128 +
+STACK CFI INIT fb3a4 1c .cfa: $rsp -128 + .ra: $rip
+STACK CFI fb3b2 .cfa: $rsp 0 +
+STACK CFI fb3b6 .cfa: $rsp 128 +
+STACK CFI fb3be .cfa: $rsp -128 +
+STACK CFI INIT fb300 88 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fb304 .cfa: $rsp 16 +
+STACK CFI INIT fb4e5 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI fb4f3 .cfa: $rsp 0 +
+STACK CFI fb4f7 .cfa: $rsp 128 +
+STACK CFI fb4ff .cfa: $rsp -128 +
+STACK CFI INIT fb504 1c .cfa: $rsp -128 + .ra: $rip
+STACK CFI fb512 .cfa: $rsp 0 +
+STACK CFI fb516 .cfa: $rsp 128 +
+STACK CFI fb51e .cfa: $rsp -128 +
+STACK CFI INIT fb3c0 125 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fb3c1 .cfa: $rsp 16 +
+STACK CFI fb3c9 .cfa: $rsp 24 +
+STACK CFI fb3cc $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI fb3d0 .cfa: $rsp 48 +
+STACK CFI INIT fb520 1ed .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fb522 .cfa: $rsp 16 +
+STACK CFI fb525 $r15: .cfa -16 + ^
+STACK CFI fb527 .cfa: $rsp 24 +
+STACK CFI fb52a $r14: .cfa -24 + ^
+STACK CFI fb52c .cfa: $rsp 32 +
+STACK CFI fb52f $r13: .cfa -32 + ^
+STACK CFI fb531 .cfa: $rsp 40 +
+STACK CFI fb534 $r12: .cfa -40 + ^
+STACK CFI fb535 .cfa: $rsp 48 +
+STACK CFI fb536 .cfa: $rsp 56 +
+STACK CFI fb53a .cfa: $rsp 112 +
+STACK CFI fb54c $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT fb710 a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT fb720 2c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT fb750 a6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT fb800 bc .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT fb8c0 77 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fb8ce .cfa: $rsp 32 +
+STACK CFI fb8d1 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT fb940 cb .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fb956 .cfa: $rsp 32 +
+STACK CFI fb959 $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI INIT fba10 5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT fba20 42 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fba21 .cfa: $rsp 16 +
+STACK CFI fba26 $rbp: .cfa -16 + ^
+STACK CFI fba27 .cfa: $rsp 24 +
+STACK CFI fba2a $rbx: .cfa -24 + ^
+STACK CFI fba2e .cfa: $rsp 32 +
+STACK CFI INIT fba70 39 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT fbab0 85 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT fbb40 8f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT fbbd0 39 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fbbda $rbx: .cfa -24 + ^
+STACK CFI fbbed .cfa: $rsp 32 +
+STACK CFI fbbef $rbp: .cfa -16 + ^
+STACK CFI INIT fbc10 35 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fbc17 $rbx: .cfa -24 + ^
+STACK CFI fbc23 .cfa: $rsp 32 +
+STACK CFI fbc25 $rbp: .cfa -16 + ^
+STACK CFI INIT fbc50 71 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fbc54 .cfa: $rsp 16 +
+STACK CFI fbc56 $rbx: .cfa -16 + ^
+STACK CFI INIT fbcd0 101 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fbcdc $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI fbce5 .cfa: $rsp 48 +
+STACK CFI fbced $r12: .cfa -16 + ^
+STACK CFI INIT fbde0 1b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT fbe00 1a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT fbe20 2b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT fbe50 d3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fbe51 .cfa: $rsp 16 +
+STACK CFI fbe59 $rbp: .cfa -16 + ^
+STACK CFI fbe5a .cfa: $rsp 24 +
+STACK CFI fbe5d $rbx: .cfa -24 + ^
+STACK CFI fbe61 .cfa: $rsp 48 +
+STACK CFI INIT fbf30 46 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT fbf80 5e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fbf8e .cfa: $rsp 32 +
+STACK CFI fbf93 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT fbfe0 546 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fbfe1 .cfa: $rsp 16 +
+STACK CFI fbfe4 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI fbfee $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI fbff3 $r12: .cfa -48 + ^
+STACK CFI fbff6 $rbx: .cfa -56 + ^
+STACK CFI INIT fc530 f0 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fc53d $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI fc54a $r12: .cfa -40 + ^ $r13: .cfa -32 + ^
+STACK CFI fc55b .cfa: $rsp 80 +
+STACK CFI fc578 $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT fc620 3d0 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fc621 .cfa: $rsp 16 +
+STACK CFI fc624 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI fc629 $r15: .cfa -24 + ^
+STACK CFI fc633 $r14: .cfa -32 + ^
+STACK CFI fc63d $r12: .cfa -48 + ^ $r13: .cfa -40 + ^
+STACK CFI fc658 $rbx: .cfa -56 + ^
+STACK CFI INIT fc9f0 138 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fc9f2 .cfa: $rsp 16 +
+STACK CFI fc9f5 $r14: .cfa -16 + ^
+STACK CFI fc9f7 .cfa: $rsp 24 +
+STACK CFI fc9fa $r13: .cfa -24 + ^
+STACK CFI fc9fc .cfa: $rsp 32 +
+STACK CFI fc9ff $r12: .cfa -32 + ^
+STACK CFI fca00 .cfa: $rsp 40 +
+STACK CFI fca01 .cfa: $rsp 48 +
+STACK CFI fca03 $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI fca07 .cfa: $rsp 64 +
+STACK CFI INIT fcb30 22 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT fcb60 2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT fcb70 6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT fcb80 3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT fcb90 2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT fcba0 b0 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fcba1 .cfa: $rsp 16 +
+STACK CFI fcbac .cfa: $rsp 64 +
+STACK CFI fcc03 $rbx: .cfa -16 + ^
+STACK CFI INIT fcc50 66 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fcc54 .cfa: $rsp 16 +
+STACK CFI INIT fccc0 2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT fccd0 1e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT fccf0 13e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fccf1 .cfa: $rsp 16 +
+STACK CFI fccf9 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI fcd04 $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI fcd13 $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT fce30 59 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fce3e .cfa: $rsp 32 +
+STACK CFI fce42 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT fce90 b5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fcea5 .cfa: $rsp 80 +
+STACK CFI fcea9 $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI INIT fcf50 225 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fcf5d $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI fcf7d .cfa: $rsp 592 +
+STACK CFI fcf82 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT fd180 136 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fd18d $r12: .cfa -32 + ^ $r13: .cfa -24 + ^
+STACK CFI fd1a6 .cfa: $rsp 160 +
+STACK CFI fd1aa $r14: .cfa -16 + ^ $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI INIT fd2c0 db .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fd2cd $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI fd2db .cfa: $rsp 96 +
+STACK CFI fd2e0 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT fd3a0 91 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fd3ae .cfa: $rsp 32 +
+STACK CFI fd3b1 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT fd440 400 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fd442 .cfa: $rsp 16 +
+STACK CFI fd444 .cfa: $rsp 24 +
+STACK CFI fd446 .cfa: $rsp 32 +
+STACK CFI fd448 .cfa: $rsp 40 +
+STACK CFI fd449 .cfa: $rsp 48 +
+STACK CFI fd44c $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^
+STACK CFI fd44d .cfa: $rsp 56 +
+STACK CFI fd44f $rbx: .cfa -56 + ^
+STACK CFI fd453 .cfa: $rsp 144 +
+STACK CFI INIT fd840 2b0 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fd841 .cfa: $rsp 16 +
+STACK CFI fd844 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI fd84f $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI fd887 $rbx: .cfa -56 + ^
+STACK CFI INIT 1366e0 19 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1366e4 .cfa: $rsp 16 +
+STACK CFI INIT fdaf0 66 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT fdb60 fa .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fdb6d $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI fdb7e $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ .cfa: $rsp 1088 +
+STACK CFI INIT fdc60 20 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fdc64 .cfa: $rsp 16 +
+STACK CFI INIT fdc80 20 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fdc84 .cfa: $rsp 16 +
+STACK CFI INIT fdca0 29d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fdcad $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI fdcbe .cfa: $rsp 1104 +
+STACK CFI fdcca $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT fdf40 20 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fdf44 .cfa: $rsp 16 +
+STACK CFI INIT fdf60 2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT fdf70 2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT fdf80 3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT fdf90 2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT fdfa0 64 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fdfae .cfa: $rsp 32 +
+STACK CFI fdfb1 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT fe010 14e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fe027 $r13: .cfa -24 + ^ $r14: .cfa -16 + ^ $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI fe033 .cfa: $rsp 144 +
+STACK CFI fe036 $r12: .cfa -32 + ^
+STACK CFI INIT fe160 22f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fe162 .cfa: $rsp 16 +
+STACK CFI fe164 .cfa: $rsp 24 +
+STACK CFI fe166 .cfa: $rsp 32 +
+STACK CFI fe168 .cfa: $rsp 40 +
+STACK CFI fe169 .cfa: $rsp 48 +
+STACK CFI fe16c $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^
+STACK CFI fe16d .cfa: $rsp 56 +
+STACK CFI fe170 $rbx: .cfa -56 + ^
+STACK CFI fe177 .cfa: $rsp 256 +
+STACK CFI INIT fe390 32 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fe391 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI INIT fe3d0 313 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fe3d1 .cfa: $rsp 16 +
+STACK CFI fe3d4 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI fe3df $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI fe40a $rbx: .cfa -56 + ^
+STACK CFI INIT fe6f0 1c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT fe710 19 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT fe730 2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT fe740 131 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT fe880 59 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fe88e .cfa: $rsp 32 +
+STACK CFI fe892 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT fe8e0 2e0 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fe8ed $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI fe90d .cfa: $rsp 176 +
+STACK CFI fe910 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT febc0 2f2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI febc2 .cfa: $rsp 16 +
+STACK CFI febc4 .cfa: $rsp 24 +
+STACK CFI febc6 .cfa: $rsp 32 +
+STACK CFI febc8 .cfa: $rsp 40 +
+STACK CFI febc9 .cfa: $rsp 48 +
+STACK CFI febca .cfa: $rsp 56 +
+STACK CFI febcd $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI febd4 .cfa: $rsp 240 +
+STACK CFI INIT feec0 69 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI feec2 .cfa: $rsp 16 +
+STACK CFI feec5 $r13: .cfa -16 + ^
+STACK CFI feec7 .cfa: $rsp 24 +
+STACK CFI feeca $r12: .cfa -24 + ^
+STACK CFI feecb .cfa: $rsp 32 +
+STACK CFI feece $rbp: .cfa -32 + ^
+STACK CFI feecf .cfa: $rsp 40 +
+STACK CFI feed3 .cfa: $rsp 48 +
+STACK CFI feed7 $rbx: .cfa -40 + ^
+STACK CFI INIT fef30 11e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fef3c $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI fef59 .cfa: $rsp 64 +
+STACK CFI fef67 $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^
+STACK CFI INIT ff050 2f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ff054 .cfa: $rsp 64 +
+STACK CFI INIT ff080 2f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ff084 .cfa: $rsp 64 +
+STACK CFI INIT ff0b0 1c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ff0d0 19 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ff0f0 2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ff100 178 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ff280 3e9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ff28d $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI ff2ad .cfa: $rsp 240 +
+STACK CFI ff2b9 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT ff670 59 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ff67e .cfa: $rsp 32 +
+STACK CFI ff682 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT ff6d0 702 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ff6d1 .cfa: $rsp 16 +
+STACK CFI ff6d4 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI ff6d9 $r15: .cfa -24 + ^
+STACK CFI ff6eb $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT ffde0 1e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ffde4 .cfa: $rsp 16 +
+STACK CFI INIT ffe00 9f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ffe01 .cfa: $rsp 16 +
+STACK CFI ffe04 $rbx: .cfa -16 + ^
+STACK CFI ffe08 .cfa: $rsp 32 +
+STACK CFI INIT ffea0 f4 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ffea1 .cfa: $rsp 16 +
+STACK CFI ffea4 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI ffeaa $r15: .cfa -24 + ^
+STACK CFI ffeb0 $r14: .cfa -32 + ^
+STACK CFI ffeb6 $r13: .cfa -40 + ^
+STACK CFI ffebb $r12: .cfa -48 + ^
+STACK CFI ffec1 $rbx: .cfa -56 + ^
+STACK CFI INIT fffa0 a7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fffa1 .cfa: $rsp 16 +
+STACK CFI fffa2 .cfa: $rsp 24 +
+STACK CFI fffa5 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI fffa9 .cfa: $rsp 48 +
+STACK CFI INIT 100050 f8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10005d $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 100066 .cfa: $rsp 112 +
+STACK CFI 100069 $r12: .cfa -16 + ^
+STACK CFI INIT 100150 145 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10015d $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI 10016a $r12: .cfa -32 + ^ $r13: .cfa -24 + ^
+STACK CFI 100173 .cfa: $rsp 128 +
+STACK CFI 10017e $r14: .cfa -16 + ^
+STACK CFI INIT 1002a0 10d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1002ad $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 1002b6 .cfa: $rsp 80 +
+STACK CFI 1002c5 $r12: .cfa -16 + ^
+STACK CFI INIT 1003b0 7e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1003b1 .cfa: $rsp 16 +
+STACK CFI 1003b9 $rbp: .cfa -16 + ^
+STACK CFI 1003c4 .cfa: $rsp 24 +
+STACK CFI 1003c8 $rbx: .cfa -24 + ^ .cfa: $rsp 48 +
+STACK CFI INIT 100430 1e3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10043d $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^
+STACK CFI 10044a $r13: .cfa -32 + ^ $r15: .cfa -16 + ^
+STACK CFI 10045b .cfa: $rsp 176 +
+STACK CFI 100484 $r14: .cfa -24 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 100620 11 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 100640 6a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10064e .cfa: $rsp 32 +
+STACK CFI 100651 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 1006b0 c2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1006b2 .cfa: $rsp 16 +
+STACK CFI 1006b4 .cfa: $rsp 24 +
+STACK CFI 1006b6 .cfa: $rsp 32 +
+STACK CFI 1006b9 $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^
+STACK CFI 1006ba .cfa: $rsp 40 +
+STACK CFI 1006bd $rbp: .cfa -40 + ^
+STACK CFI 1006be .cfa: $rsp 48 +
+STACK CFI 1006c1 $rbx: .cfa -48 + ^
+STACK CFI 1006c5 .cfa: $rsp 64 +
+STACK CFI INIT 100780 654 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 100782 .cfa: $rsp 16 +
+STACK CFI 100785 $r15: .cfa -16 + ^
+STACK CFI 100787 .cfa: $rsp 24 +
+STACK CFI 10078a $r14: .cfa -24 + ^
+STACK CFI 10078c .cfa: $rsp 32 +
+STACK CFI 10078f $r13: .cfa -32 + ^
+STACK CFI 100791 .cfa: $rsp 40 +
+STACK CFI 100792 .cfa: $rsp 48 +
+STACK CFI 100793 .cfa: $rsp 56 +
+STACK CFI 10079a .cfa: $rsp 10752 +
+STACK CFI 1007a9 $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 100de0 109 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 100ded $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI 100e03 $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^ .cfa: $rsp 64 +
+STACK CFI INIT 100ef0 76 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 100efe .cfa: $rsp 48 +
+STACK CFI 100f04 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 100f70 14e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 100f7d $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 100f8a $r12: .cfa -40 + ^ $r13: .cfa -32 + ^
+STACK CFI 100f9b .cfa: $rsp 192 +
+STACK CFI 100fa3 $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT 1010c0 117 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 1011e0 93 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1011ee .cfa: $rsp 32 +
+STACK CFI 1011fb $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 101280 8a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10128e .cfa: $rsp 32 +
+STACK CFI 101291 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 101310 9c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10131e .cfa: $rsp 32 +
+STACK CFI 101321 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 1013b0 6e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1013be .cfa: $rsp 32 +
+STACK CFI 1013c1 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 101420 a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 101430 53 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10143e .cfa: $rsp 32 +
+STACK CFI 101441 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 101490 38b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 101491 .cfa: $rsp 16 +
+STACK CFI 101494 $rbp: .cfa -16 + ^
+STACK CFI 101495 .cfa: $rsp 24 +
+STACK CFI 101498 $rbx: .cfa -24 + ^
+STACK CFI 10149c .cfa: $rsp 32 +
+STACK CFI INIT 101820 13 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 101840 9d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 101841 .cfa: $rsp 16 +
+STACK CFI 101848 $rbx: .cfa -16 + ^
+STACK CFI INIT 1018e0 2a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1018e4 .cfa: $rsp 16 +
+STACK CFI INIT 101910 2a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 101914 .cfa: $rsp 16 +
+STACK CFI INIT 101940 2a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 101944 .cfa: $rsp 16 +
+STACK CFI INIT 101970 20 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 101974 .cfa: $rsp 16 +
+STACK CFI INIT 136a30 a2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 136a31 .cfa: $rsp 16 +
+STACK CFI 136a32 .cfa: $rsp 24 +
+STACK CFI 136a36 .cfa: $rsp 32 +
+STACK CFI 136a3d $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 101990 50 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 101994 .cfa: $rsp 112 +
+STACK CFI INIT 1019e0 46 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1019e4 .cfa: $rsp 112 +
+STACK CFI INIT 101a30 46 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 101a34 .cfa: $rsp 112 +
+STACK CFI INIT 101a80 46 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 101a84 .cfa: $rsp 112 +
+STACK CFI INIT 101ad0 2f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 101ad4 .cfa: $rsp 112 +
+STACK CFI INIT 101b00 a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 101b10 46 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 101b14 .cfa: $rsp 112 +
+STACK CFI INIT 101b60 50 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 101b64 .cfa: $rsp 112 +
+STACK CFI INIT 101bb0 2e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 101bb7 .cfa: $rsp 144 +
+STACK CFI INIT 101be0 21c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 101be2 .cfa: $rsp 16 +
+STACK CFI 101be4 .cfa: $rsp 24 +
+STACK CFI 101be6 .cfa: $rsp 32 +
+STACK CFI 101be7 .cfa: $rsp 40 +
+STACK CFI 101be8 .cfa: $rsp 48 +
+STACK CFI 101bea $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^ $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI 101bf4 .cfa: $rsp 1408 +
+STACK CFI INIT 101e00 92 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 101e02 .cfa: $rsp 16 +
+STACK CFI 101e05 $r15: .cfa -16 + ^
+STACK CFI 101e07 .cfa: $rsp 24 +
+STACK CFI 101e09 .cfa: $rsp 32 +
+STACK CFI 101e0b .cfa: $rsp 40 +
+STACK CFI 101e0c .cfa: $rsp 48 +
+STACK CFI 101e0d .cfa: $rsp 56 +
+STACK CFI 101e11 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^ .cfa: $rsp 80 +
+STACK CFI INIT 101ea0 bc .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 101ea2 .cfa: $rsp 16 +
+STACK CFI 101ea3 .cfa: $rsp 24 +
+STACK CFI 101ea6 $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^
+STACK CFI 101ea7 .cfa: $rsp 32 +
+STACK CFI 101eaa $rbx: .cfa -32 + ^
+STACK CFI INIT 101f60 2b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 101f61 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI INIT 101f90 e6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 101f92 .cfa: $rsp 16 +
+STACK CFI 101f95 $r15: .cfa -16 + ^
+STACK CFI 101f97 .cfa: $rsp 24 +
+STACK CFI 101f9a $r14: .cfa -24 + ^
+STACK CFI 101f9c .cfa: $rsp 32 +
+STACK CFI 101f9f $r13: .cfa -32 + ^
+STACK CFI 101fa1 .cfa: $rsp 40 +
+STACK CFI 101fa2 .cfa: $rsp 48 +
+STACK CFI 101fa5 $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^
+STACK CFI 101fa6 .cfa: $rsp 56 +
+STACK CFI 101fa9 $rbx: .cfa -56 + ^
+STACK CFI 101fad .cfa: $rsp 80 +
+STACK CFI INIT 102080 e3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10208d $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI 1020a0 .cfa: $rsp 48 +
+STACK CFI 1020a2 $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^
+STACK CFI INIT 102170 9f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 102172 .cfa: $rsp 16 +
+STACK CFI 102174 .cfa: $rsp 24 +
+STACK CFI 102176 .cfa: $rsp 32 +
+STACK CFI 102179 $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI 10217b .cfa: $rsp 40 +
+STACK CFI 10217c .cfa: $rsp 48 +
+STACK CFI 10217d .cfa: $rsp 56 +
+STACK CFI 102180 $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 102184 .cfa: $rsp 64 +
+STACK CFI INIT 102210 146 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 102212 .cfa: $rsp 16 +
+STACK CFI 102214 .cfa: $rsp 24 +
+STACK CFI 102217 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI 102218 .cfa: $rsp 32 +
+STACK CFI 102219 .cfa: $rsp 40 +
+STACK CFI 10221d .cfa: $rsp 48 +
+STACK CFI 10221f $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI INIT 102360 4f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 1023b0 3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 1023c0 6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 1023d0 1e9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1023dd $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^
+STACK CFI 1023fa .cfa: $rsp 128 +
+STACK CFI 1023fe $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 1025c0 6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 1025d0 2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 1025e0 61 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1025ee .cfa: $rsp 32 +
+STACK CFI 1025f1 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 102650 59 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10265e .cfa: $rsp 32 +
+STACK CFI 102661 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 1026b0 83 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1026b1 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI INIT 102740 84 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10274d $r12: .cfa -16 + ^ $rbx: .cfa -32 + ^
+STACK CFI 102756 $rbp: .cfa -24 + ^ .cfa: $rsp 32 +
+STACK CFI INIT 1027d0 66 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1027de .cfa: $rsp 32 +
+STACK CFI 1027e1 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 102840 139 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 102842 .cfa: $rsp 16 +
+STACK CFI 102844 .cfa: $rsp 24 +
+STACK CFI 102847 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI 102848 .cfa: $rsp 32 +
+STACK CFI 102849 .cfa: $rsp 40 +
+STACK CFI 10284b $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI 10284f .cfa: $rsp 48 +
+STACK CFI INIT 102980 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 102981 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI INIT 1029b0 1e4 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1029bd $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 1029ca $r13: .cfa -32 + ^ $r14: .cfa -24 + ^
+STACK CFI 1029d8 .cfa: $rsp 96 +
+STACK CFI 1029e1 $r12: .cfa -40 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT 102ba0 1ce .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 102ba2 .cfa: $rsp 16 +
+STACK CFI 102ba4 .cfa: $rsp 24 +
+STACK CFI 102ba7 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI 102ba8 .cfa: $rsp 32 +
+STACK CFI 102ba9 .cfa: $rsp 40 +
+STACK CFI 102bb0 .cfa: $rsp 8864 +
+STACK CFI 102bc9 $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI INIT 102d70 6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 102d80 12 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 102da0 19 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 102dc0 126 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 102dd7 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 102dea .cfa: $rsp 64 +
+STACK CFI 102ded $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT 102ef0 5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 102f00 68 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 102f0d $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI 102f11 .cfa: $rsp 32 +
+STACK CFI INIT 102f70 4c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 102f7e .cfa: $rsp 32 +
+STACK CFI 102f86 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 102fc0 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 102fc4 .cfa: $rsp 16 +
+STACK CFI INIT 102ff0 6f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 102ffd $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^
+STACK CFI 103006 .cfa: $rsp 32 +
+STACK CFI 10300a $rbx: .cfa -32 + ^
+STACK CFI INIT 103060 5d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 103062 .cfa: $rsp 16 +
+STACK CFI 103065 $r13: .cfa -16 + ^
+STACK CFI 103067 .cfa: $rsp 24 +
+STACK CFI 10306a $r12: .cfa -24 + ^
+STACK CFI 10306b .cfa: $rsp 32 +
+STACK CFI 10306e $rbp: .cfa -32 + ^
+STACK CFI 10306f .cfa: $rsp 40 +
+STACK CFI 103073 .cfa: $rsp 48 +
+STACK CFI 103077 $rbx: .cfa -40 + ^
+STACK CFI INIT 1030c0 b4 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1030cd $r12: .cfa -32 + ^ $r13: .cfa -24 + ^
+STACK CFI 1030e3 .cfa: $rsp 64 +
+STACK CFI 1030e5 $r14: .cfa -16 + ^ $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI INIT 103180 23a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10318c $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^
+STACK CFI 1031a7 .cfa: $rsp 96 +
+STACK CFI 1031ad $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 1033c0 9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1033c4 .cfa: $rsp 16 +
+STACK CFI INIT 1033d0 c0 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1033d2 .cfa: $rsp 16 +
+STACK CFI 1033d4 .cfa: $rsp 24 +
+STACK CFI 1033d5 .cfa: $rsp 32 +
+STACK CFI 1033d6 .cfa: $rsp 40 +
+STACK CFI 1033d9 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI 1033dd .cfa: $rsp 96 +
+STACK CFI INIT 103490 f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 1034a0 6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 1034b0 12 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 1034d0 19 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 1034f0 124 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1034fd $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 103506 .cfa: $rsp 32 +
+STACK CFI 103520 $r12: .cfa -16 + ^
+STACK CFI INIT 103620 2ba .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10362d $r13: .cfa -32 + ^ $rbp: .cfa -48 + ^
+STACK CFI 103647 .cfa: $rsp 96 +
+STACK CFI 10364d $r12: .cfa -40 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 1038e0 5b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1038ed $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI 1038f1 .cfa: $rsp 32 +
+STACK CFI INIT 103940 28e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10394d $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^
+STACK CFI 10395a $r13: .cfa -32 + ^ $rbx: .cfa -56 + ^
+STACK CFI 103968 .cfa: $rsp 64 +
+STACK CFI 103980 $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT 103bd0 346 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 103bd2 .cfa: $rsp 16 +
+STACK CFI 103bd9 $r15: .cfa -16 + ^
+STACK CFI 103bdb .cfa: $rsp 24 +
+STACK CFI 103bdf $r14: .cfa -24 + ^
+STACK CFI 103be1 .cfa: $rsp 32 +
+STACK CFI 103be3 .cfa: $rsp 40 +
+STACK CFI 103be7 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^
+STACK CFI 103be8 .cfa: $rsp 48 +
+STACK CFI 103beb $rbp: .cfa -48 + ^
+STACK CFI 103bec .cfa: $rsp 56 +
+STACK CFI 103bf0 $rbx: .cfa -56 + ^
+STACK CFI 103bf4 .cfa: $rsp 112 +
+STACK CFI INIT 103f20 1a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 103f24 .cfa: $rsp 64 +
+STACK CFI INIT 103f40 6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 103f50 69 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 103f51 .cfa: $rsp 16 +
+STACK CFI 103f54 $rbx: .cfa -16 + ^
+STACK CFI 103f58 .cfa: $rsp 32 +
+STACK CFI INIT 103fc0 69 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 103fc1 .cfa: $rsp 16 +
+STACK CFI 103fc4 $rbx: .cfa -16 + ^
+STACK CFI 103fc8 .cfa: $rsp 32 +
+STACK CFI INIT 104030 3a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 104070 71 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 104071 .cfa: $rsp 16 +
+STACK CFI 104074 $rbx: .cfa -16 + ^
+STACK CFI 104078 .cfa: $rsp 32 +
+STACK CFI INIT 1040f0 c5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1040fe .cfa: $rsp 48 +
+STACK CFI 104103 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 1041c0 c5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1041ce .cfa: $rsp 48 +
+STACK CFI 1041d3 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 104290 5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 1042a0 5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 1042b0 6a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1042b1 .cfa: $rsp 16 +
+STACK CFI 1042b4 $rbx: .cfa -16 + ^
+STACK CFI 1042b8 .cfa: $rsp 32 +
+STACK CFI INIT 104320 6a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 104321 .cfa: $rsp 16 +
+STACK CFI 104324 $rbx: .cfa -16 + ^
+STACK CFI 104328 .cfa: $rsp 32 +
+STACK CFI INIT 104390 32 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 104391 .cfa: $rsp 16 +
+STACK CFI 104394 $rbx: .cfa -16 + ^
+STACK CFI 104398 .cfa: $rsp 32 +
+STACK CFI INIT 1043d0 32 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1043d1 .cfa: $rsp 16 +
+STACK CFI 1043d4 $rbx: .cfa -16 + ^
+STACK CFI 1043d8 .cfa: $rsp 32 +
+STACK CFI INIT 104410 6f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 104411 .cfa: $rsp 16 +
+STACK CFI 104414 $rbx: .cfa -16 + ^
+STACK CFI 104418 .cfa: $rsp 32 +
+STACK CFI INIT 104480 69 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 104481 .cfa: $rsp 16 +
+STACK CFI 104484 $rbx: .cfa -16 + ^
+STACK CFI 104488 .cfa: $rsp 32 +
+STACK CFI INIT 1044f0 bc .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1044fe .cfa: $rsp 32 +
+STACK CFI 104503 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 1045b0 11 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 1045d0 c7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1045dd $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI 1045f3 .cfa: $rsp 48 +
+STACK CFI 1045f6 $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^
+STACK CFI INIT 1046a0 1b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1046a4 .cfa: $rsp 16 +
+STACK CFI INIT 1046c0 13c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1046cd $r12: .cfa -24 + ^ $rbx: .cfa -40 + ^
+STACK CFI 1046db .cfa: $rsp 64 +
+STACK CFI 1046e3 $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^
+STACK CFI INIT 104800 14a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10480d $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI 104823 .cfa: $rsp 64 +
+STACK CFI 104826 $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^
+STACK CFI INIT 104950 74 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 104952 .cfa: $rsp 16 +
+STACK CFI 104954 .cfa: $rsp 24 +
+STACK CFI 104957 $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI 104959 .cfa: $rsp 32 +
+STACK CFI 10495b .cfa: $rsp 40 +
+STACK CFI 10495c .cfa: $rsp 48 +
+STACK CFI 10495f $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $rbp: .cfa -48 + ^
+STACK CFI 104960 .cfa: $rsp 56 +
+STACK CFI 104962 $rbx: .cfa -56 + ^
+STACK CFI 104966 .cfa: $rsp 64 +
+STACK CFI INIT 1049d0 172 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1049dd $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 1049f8 .cfa: $rsp 80 +
+STACK CFI 1049fb $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT 104b50 65 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 104b51 .cfa: $rsp 16 +
+STACK CFI 104b54 $rbx: .cfa -16 + ^
+STACK CFI 104b58 .cfa: $rsp 32 +
+STACK CFI INIT 104bc0 b5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 104bcd $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 104bd6 .cfa: $rsp 48 +
+STACK CFI 104be0 $r12: .cfa -16 + ^
+STACK CFI INIT 104c80 19 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 104ca0 2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 104cb0 8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 104cc0 3d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 104d00 1e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 104d20 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 104d50 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 104d80 27 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 104db0 29 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 104de0 45 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 104dee .cfa: $rsp 32 +
+STACK CFI 104df6 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 104e30 48 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 104e38 $rbx: .cfa -24 + ^
+STACK CFI 104e41 .cfa: $rsp 32 +
+STACK CFI 104e4d $rbp: .cfa -16 + ^
+STACK CFI INIT 104e80 52 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 104ee0 87 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 104ee2 .cfa: $rsp 16 +
+STACK CFI 104ee3 .cfa: $rsp 24 +
+STACK CFI 104ee6 $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^
+STACK CFI 104ee7 .cfa: $rsp 32 +
+STACK CFI 104eea $rbx: .cfa -32 + ^
+STACK CFI INIT 104f70 5e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 104f71 .cfa: $rsp 16 +
+STACK CFI 104f79 .cfa: $rsp 24 +
+STACK CFI 104f7c $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI 104f80 .cfa: $rsp 32 +
+STACK CFI INIT 104fd0 59 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 105030 73 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10503e .cfa: $rsp 32 +
+STACK CFI 105042 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 1050b0 73 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1050be .cfa: $rsp 32 +
+STACK CFI 1050c2 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 105130 9b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 105132 .cfa: $rsp 16 +
+STACK CFI 105134 .cfa: $rsp 24 +
+STACK CFI 105137 $r13: .cfa -24 + ^ $r14: .cfa -16 + ^
+STACK CFI 105139 .cfa: $rsp 32 +
+STACK CFI 10513a .cfa: $rsp 40 +
+STACK CFI 10513c $r12: .cfa -32 + ^ $rbp: .cfa -40 + ^
+STACK CFI 10513d .cfa: $rsp 48 +
+STACK CFI 105140 $rbx: .cfa -48 + ^
+STACK CFI INIT 1051d0 50 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1051d1 .cfa: $rsp 16 +
+STACK CFI 1051d9 $rbx: .cfa -16 + ^
+STACK CFI 1051dd .cfa: $rsp 32 +
+STACK CFI INIT 105220 60 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 105221 .cfa: $rsp 16 +
+STACK CFI 105225 $rbx: .cfa -16 + ^
+STACK CFI INIT 105280 5e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 105281 .cfa: $rsp 16 +
+STACK CFI 105285 $rbx: .cfa -16 + ^
+STACK CFI INIT 1052e0 97 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1052ec $r12: .cfa -24 + ^ $rbp: .cfa -32 + ^
+STACK CFI 1052fa .cfa: $rsp 48 +
+STACK CFI 1052fe $r13: .cfa -16 + ^ $rbx: .cfa -40 + ^
+STACK CFI INIT 105380 6a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 105381 .cfa: $rsp 16 +
+STACK CFI 105384 $rbx: .cfa -16 + ^
+STACK CFI 105388 .cfa: $rsp 32 +
+STACK CFI INIT 1053f0 75 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1053f1 .cfa: $rsp 16 +
+STACK CFI 1053f4 $rbx: .cfa -16 + ^
+STACK CFI 1053f8 .cfa: $rsp 32 +
+STACK CFI INIT 105470 9e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 105472 .cfa: $rsp 16 +
+STACK CFI 105477 $r14: .cfa -16 + ^
+STACK CFI 105479 .cfa: $rsp 24 +
+STACK CFI 10547b .cfa: $rsp 32 +
+STACK CFI 10547c .cfa: $rsp 40 +
+STACK CFI 10547e $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $rbp: .cfa -40 + ^
+STACK CFI 10547f .cfa: $rsp 48 +
+STACK CFI 105483 $rbx: .cfa -48 + ^
+STACK CFI INIT 105510 1c4 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10551d $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 10553c .cfa: $rsp 96 +
+STACK CFI 10553f $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT 1056e0 17 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1056e1 .cfa: $rsp 16 +
+STACK CFI 1056e5 $rbx: .cfa -16 + ^
+STACK CFI INIT 105700 6d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10570e .cfa: $rsp 32 +
+STACK CFI 105712 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 105770 99 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10577d $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 105786 .cfa: $rsp 32 +
+STACK CFI 105789 $r12: .cfa -16 + ^
+STACK CFI INIT 105810 83 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10582a .cfa: $rsp 64 +
+STACK CFI 105831 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI INIT 1058a0 e7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1058ad $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 1058b6 .cfa: $rsp 48 +
+STACK CFI 1058b9 $r12: .cfa -16 + ^
+STACK CFI INIT 105990 21 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 1059c0 3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 1059d0 33 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1059d4 .cfa: $rsp 32 +
+STACK CFI INIT 105a10 3b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 105a14 .cfa: $rsp 16 +
+STACK CFI INIT 105a50 34 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 105a54 .cfa: $rsp 32 +
+STACK CFI INIT 105a90 3e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 105a91 .cfa: $rsp 16 +
+STACK CFI 105a99 $rbx: .cfa -16 + ^
+STACK CFI 105aa2 .cfa: $rsp 32 +
+STACK CFI INIT 105ad0 3b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 105ad4 .cfa: $rsp 16 +
+STACK CFI INIT 105b10 41 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 105b11 .cfa: $rsp 16 +
+STACK CFI 105b19 $rbx: .cfa -16 + ^
+STACK CFI 105b22 .cfa: $rsp 32 +
+STACK CFI INIT 105b60 9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 105b70 1b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 105b74 .cfa: $rsp 16 +
+STACK CFI INIT 105b90 12 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 105b94 .cfa: $rsp 16 +
+STACK CFI INIT 105bb0 110 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 105bb2 .cfa: $rsp 16 +
+STACK CFI 105bb4 .cfa: $rsp 24 +
+STACK CFI 105bb6 .cfa: $rsp 32 +
+STACK CFI 105bb9 $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI 105bbb .cfa: $rsp 40 +
+STACK CFI 105bbe $r12: .cfa -40 + ^
+STACK CFI 105bbf .cfa: $rsp 48 +
+STACK CFI 105bc2 $rbp: .cfa -48 + ^
+STACK CFI 105bc3 .cfa: $rsp 56 +
+STACK CFI 105bc7 .cfa: $rsp 96 +
+STACK CFI 105bd7 $rbx: .cfa -56 + ^
+STACK CFI INIT 105cc0 f4 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 105cc2 .cfa: $rsp 16 +
+STACK CFI 105cc4 .cfa: $rsp 24 +
+STACK CFI 105cc6 .cfa: $rsp 32 +
+STACK CFI 105cc8 .cfa: $rsp 40 +
+STACK CFI 105ccb $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI 105ccc .cfa: $rsp 48 +
+STACK CFI 105ccf $rbp: .cfa -48 + ^
+STACK CFI 105cd0 .cfa: $rsp 56 +
+STACK CFI 105cd4 .cfa: $rsp 80 +
+STACK CFI 105ce0 $rbx: .cfa -56 + ^
+STACK CFI INIT 105dc0 a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 105dd0 9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 105de0 4 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 105df0 3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 105e00 3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 105e10 a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 105e20 c0 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 105e21 .cfa: $rsp 16 +
+STACK CFI 105e2f .cfa: $rsp 144 +
+STACK CFI 105ebf $rbx: .cfa -16 + ^
+STACK CFI INIT 105ee0 2b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 105ee1 .cfa: $rsp 16 +
+STACK CFI 105ee4 $rbx: .cfa -16 + ^
+STACK CFI INIT 105f10 83 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 105f1e .cfa: $rsp 48 +
+STACK CFI 105f23 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 105fa0 2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 105fb0 44 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 105fbe .cfa: $rsp 32 +
+STACK CFI 105fc2 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 106000 9f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10600e .cfa: $rsp 48 +
+STACK CFI 106016 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 1060a0 219 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1060a2 .cfa: $rsp 16 +
+STACK CFI 1060a5 $r12: .cfa -16 + ^
+STACK CFI 1060a8 .cfa: $rsp 24 +
+STACK CFI 1060ab $rbp: .cfa -24 + ^
+STACK CFI 1060ac .cfa: $rsp 32 +
+STACK CFI 1060b0 .cfa: $rsp 80 +
+STACK CFI 1060b4 $rbx: .cfa -32 + ^
+STACK CFI INIT 1062c0 e3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1062c1 .cfa: $rsp 16 +
+STACK CFI 1062c4 $rbp: .cfa -16 + ^
+STACK CFI 1062c5 .cfa: $rsp 24 +
+STACK CFI 1062c9 .cfa: $rsp 80 +
+STACK CFI 1062cd $rbx: .cfa -24 + ^
+STACK CFI INIT 1063b0 255 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1063bd $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 1063ca $r12: .cfa -40 + ^ $r13: .cfa -32 + ^
+STACK CFI 1063db .cfa: $rsp 336 +
+STACK CFI 1063eb $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT 106610 d7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10661c $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI 106629 $r12: .cfa -32 + ^ $r13: .cfa -24 + ^
+STACK CFI 106635 .cfa: $rsp 1088 +
+STACK CFI 10663e $r14: .cfa -16 + ^
+STACK CFI INIT 1066f0 4e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 106703 .cfa: $rsp 32 +
+STACK CFI 106706 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 106740 9b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10674e .cfa: $rsp 32 +
+STACK CFI 106751 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 10702e 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 10703c .cfa: $rsp 0 +
+STACK CFI 107040 .cfa: $rsp 128 +
+STACK CFI 107048 .cfa: $rsp -128 +
+STACK CFI INIT 10704d 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 10705b .cfa: $rsp 0 +
+STACK CFI 10705f .cfa: $rsp 128 +
+STACK CFI 107067 .cfa: $rsp -128 +
+STACK CFI INIT 1067e0 42 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1067e1 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI INIT 106830 23c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 106831 .cfa: $rsp 16 +
+STACK CFI 106832 .cfa: $rsp 24 +
+STACK CFI 106839 .cfa: $rsp 192 +
+STACK CFI 10683d $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 106a70 1f9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 106a7d $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 106a98 .cfa: $rsp 96 +
+STACK CFI 106a9f $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT 106c70 4b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 106c71 .cfa: $rsp 16 +
+STACK CFI 106c7b $rbx: .cfa -16 + ^
+STACK CFI 106c8e .cfa: $rsp 32 +
+STACK CFI INIT 106cc0 47 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 106cc4 .cfa: $rsp 32 +
+STACK CFI INIT 106d10 6c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 106d11 .cfa: $rsp 16 +
+STACK CFI 106d1b $rbx: .cfa -16 + ^
+STACK CFI 106d1f .cfa: $rsp 64 +
+STACK CFI INIT 106d80 6c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 106d81 .cfa: $rsp 16 +
+STACK CFI 106d8b $rbx: .cfa -16 + ^
+STACK CFI 106d8f .cfa: $rsp 64 +
+STACK CFI INIT 106df0 5c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 106df1 .cfa: $rsp 16 +
+STACK CFI 106dfb $rbx: .cfa -16 + ^
+STACK CFI 106dff .cfa: $rsp 48 +
+STACK CFI INIT 106e50 5e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 106e51 .cfa: $rsp 16 +
+STACK CFI 106e5b $rbx: .cfa -16 + ^
+STACK CFI 106e5f .cfa: $rsp 48 +
+STACK CFI INIT 106eb0 46 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 106eb4 .cfa: $rsp 32 +
+STACK CFI INIT 106f00 d5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 106f01 .cfa: $rsp 16 +
+STACK CFI 106f04 $rbp: .cfa -16 + ^
+STACK CFI 106f0f .cfa: $rsp 24 +
+STACK CFI 106f13 .cfa: $rsp 80 +
+STACK CFI 106f61 $rbx: .cfa -24 + ^
+STACK CFI INIT 106fe0 4e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 106fe4 .cfa: $rsp 128 +
+STACK CFI INIT 107070 56 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10707e .cfa: $rsp 32 +
+STACK CFI 107081 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 1070d0 56 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1070de .cfa: $rsp 32 +
+STACK CFI 1070e1 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 107130 56 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10713e .cfa: $rsp 32 +
+STACK CFI 107141 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 107190 6c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10719e .cfa: $rsp 32 +
+STACK CFI 1071a1 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 107200 56 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10720e .cfa: $rsp 32 +
+STACK CFI 107211 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 107260 44 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10726e .cfa: $rsp 32 +
+STACK CFI 107271 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 1072b0 56 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1072be .cfa: $rsp 32 +
+STACK CFI 1072c1 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 107310 1b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 107314 .cfa: $rsp 16 +
+STACK CFI INIT 107330 1b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 107334 .cfa: $rsp 16 +
+STACK CFI INIT 107350 16 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 107354 .cfa: $rsp 16 +
+STACK CFI INIT 107370 96 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10737d $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^
+STACK CFI 107389 .cfa: $rsp 288 +
+STACK CFI 107394 $rbx: .cfa -32 + ^
+STACK CFI INIT 107410 107 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 107412 .cfa: $rsp 16 +
+STACK CFI 107415 $r15: .cfa -16 + ^
+STACK CFI 107417 .cfa: $rsp 24 +
+STACK CFI 10741a $r14: .cfa -24 + ^
+STACK CFI 10741c .cfa: $rsp 32 +
+STACK CFI 10741f $r13: .cfa -32 + ^
+STACK CFI 107421 .cfa: $rsp 40 +
+STACK CFI 107424 $r12: .cfa -40 + ^
+STACK CFI 107425 .cfa: $rsp 48 +
+STACK CFI 107428 $rbp: .cfa -48 + ^
+STACK CFI 107429 .cfa: $rsp 56 +
+STACK CFI 10742d .cfa: $rsp 96 +
+STACK CFI 10743d $rbx: .cfa -56 + ^
+STACK CFI INIT 107520 219 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10752d $r13: .cfa -24 + ^ $rbx: .cfa -48 + ^
+STACK CFI 107546 .cfa: $rsp 208 +
+STACK CFI 107552 $r12: .cfa -32 + ^ $r14: .cfa -16 + ^ $rbp: .cfa -40 + ^
+STACK CFI INIT 107740 10c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10774d $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 107759 .cfa: $rsp 288 +
+STACK CFI 107767 $r12: .cfa -16 + ^
+STACK CFI INIT 107850 2d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 107851 .cfa: $rsp 16 +
+STACK CFI 107854 $rbx: .cfa -16 + ^
+STACK CFI INIT 107880 16b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10788d $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI 10789b .cfa: $rsp 80 +
+STACK CFI 1078a6 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI INIT 1079f0 224 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1079fd $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 107a0a $r12: .cfa -40 + ^ $r13: .cfa -32 + ^
+STACK CFI 107a18 .cfa: $rsp 96 +
+STACK CFI 107a1f $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT 107c20 227 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 107c2d $r13: .cfa -32 + ^ $rbp: .cfa -48 + ^
+STACK CFI 107c3a $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI 107c48 .cfa: $rsp 96 +
+STACK CFI 107c4b $r12: .cfa -40 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 107e50 78d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 107e5d $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 107e6a $r12: .cfa -40 + ^ $r13: .cfa -32 + ^
+STACK CFI 107e7b $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ .cfa: $rsp 1232 +
+STACK CFI INIT 1085e0 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 108610 1f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 108630 2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 108640 30a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10864d $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 10866d .cfa: $rsp 192 +
+STACK CFI 108670 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT 108950 61 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10895e .cfa: $rsp 32 +
+STACK CFI 108962 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 1089c0 1a4 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 108b70 333 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 108b72 .cfa: $rsp 16 +
+STACK CFI 108b74 .cfa: $rsp 24 +
+STACK CFI 108b76 .cfa: $rsp 32 +
+STACK CFI 108b78 .cfa: $rsp 40 +
+STACK CFI 108b79 .cfa: $rsp 48 +
+STACK CFI 108b7a .cfa: $rsp 56 +
+STACK CFI 108b7d $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 108b84 .cfa: $rsp 240 +
+STACK CFI INIT 108eb0 d8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 108eb1 .cfa: $rsp 16 +
+STACK CFI 108eb4 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 108eb9 $r14: .cfa -24 + ^
+STACK CFI 108ec0 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^
+STACK CFI 108ec4 $rbx: .cfa -48 + ^
+STACK CFI INIT 108f90 6e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 108f92 .cfa: $rsp 16 +
+STACK CFI 108f95 $r13: .cfa -16 + ^
+STACK CFI 108f97 .cfa: $rsp 24 +
+STACK CFI 108f9a $r12: .cfa -24 + ^
+STACK CFI 108f9b .cfa: $rsp 32 +
+STACK CFI 108f9e $rbp: .cfa -32 + ^
+STACK CFI 108f9f .cfa: $rsp 40 +
+STACK CFI 108fa3 .cfa: $rsp 48 +
+STACK CFI 108fa7 $rbx: .cfa -40 + ^
+STACK CFI INIT 109000 1ec .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10900d $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI 10901a $r12: .cfa -32 + ^ $r14: .cfa -16 + ^
+STACK CFI 109026 .cfa: $rsp 144 +
+STACK CFI 10905a $r13: .cfa -24 + ^
+STACK CFI INIT 1091f0 6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 109200 12 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 109220 19 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 109240 126 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 109257 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 10926a .cfa: $rsp 64 +
+STACK CFI 10926d $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT 109370 5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 109380 68 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10938d $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI 109391 .cfa: $rsp 32 +
+STACK CFI INIT 1093f0 4c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1093fe .cfa: $rsp 32 +
+STACK CFI 109406 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 109440 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 109444 .cfa: $rsp 16 +
+STACK CFI INIT 109470 88 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10947d $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^
+STACK CFI 109486 .cfa: $rsp 32 +
+STACK CFI 10948a $rbx: .cfa -32 + ^
+STACK CFI INIT 109500 132 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 109502 .cfa: $rsp 16 +
+STACK CFI 109504 .cfa: $rsp 24 +
+STACK CFI 109507 $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI 109509 .cfa: $rsp 32 +
+STACK CFI 10950c $r13: .cfa -32 + ^
+STACK CFI 10950e .cfa: $rsp 40 +
+STACK CFI 10950f .cfa: $rsp 48 +
+STACK CFI 109510 .cfa: $rsp 56 +
+STACK CFI 109514 .cfa: $rsp 176 +
+STACK CFI 109520 $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 109640 172 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10964d $r12: .cfa -32 + ^ $rbp: .cfa -40 + ^
+STACK CFI 10965a $r13: .cfa -24 + ^ $r14: .cfa -16 + ^
+STACK CFI 109666 .cfa: $rsp 144 +
+STACK CFI 109668 $rbx: .cfa -48 + ^
+STACK CFI INIT 1097c0 260 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1097cc $r12: .cfa -40 + ^ $rbx: .cfa -56 + ^
+STACK CFI 1097d9 $r13: .cfa -32 + ^ $r14: .cfa -24 + ^
+STACK CFI 1097e6 $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^
+STACK CFI 1097ed .cfa: $rsp 208 +
+STACK CFI INIT 109a20 9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 109a24 .cfa: $rsp 16 +
+STACK CFI INIT 109a30 f6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 109a32 .cfa: $rsp 16 +
+STACK CFI 109a34 .cfa: $rsp 24 +
+STACK CFI 109a35 .cfa: $rsp 32 +
+STACK CFI 109a36 .cfa: $rsp 40 +
+STACK CFI 109a39 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI 109a40 .cfa: $rsp 208 +
+STACK CFI INIT 109bcc 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 109bda .cfa: $rsp 0 +
+STACK CFI 109bde .cfa: $rsp 128 +
+STACK CFI 109be6 .cfa: $rsp -128 +
+STACK CFI INIT 109beb 1c .cfa: $rsp -128 + .ra: $rip
+STACK CFI 109bf9 .cfa: $rsp 0 +
+STACK CFI 109bfd .cfa: $rsp 128 +
+STACK CFI 109c05 .cfa: $rsp -128 +
+STACK CFI INIT 109b30 9c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 109b31 .cfa: $rsp 16 +
+STACK CFI 109b3c .cfa: $rsp 48 +
+STACK CFI 109b5a $rbx: .cfa -16 + ^
+STACK CFI INIT 109c10 be .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 109c1e .cfa: $rsp 48 +
+STACK CFI 109c23 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 109cd0 bd .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 109cde .cfa: $rsp 48 +
+STACK CFI 109ce3 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 109d90 32 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 109dd0 32 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 109e10 6a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 109e11 .cfa: $rsp 16 +
+STACK CFI 109e14 $rbx: .cfa -16 + ^
+STACK CFI 109e18 .cfa: $rsp 32 +
+STACK CFI INIT 109e80 6a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 109e81 .cfa: $rsp 16 +
+STACK CFI 109e84 $rbx: .cfa -16 + ^
+STACK CFI 109e88 .cfa: $rsp 32 +
+STACK CFI INIT 109ef0 69 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 109ef1 .cfa: $rsp 16 +
+STACK CFI 109ef4 $rbx: .cfa -16 + ^
+STACK CFI 109ef8 .cfa: $rsp 32 +
+STACK CFI INIT 109f60 69 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 109f61 .cfa: $rsp 16 +
+STACK CFI 109f64 $rbx: .cfa -16 + ^
+STACK CFI 109f68 .cfa: $rsp 32 +
+STACK CFI INIT 109fd0 e1 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 10a0c0 47 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 10a110 f9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10a112 .cfa: $rsp 16 +
+STACK CFI 10a115 $r15: .cfa -16 + ^
+STACK CFI 10a117 .cfa: $rsp 24 +
+STACK CFI 10a119 .cfa: $rsp 32 +
+STACK CFI 10a11b .cfa: $rsp 40 +
+STACK CFI 10a11e $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^
+STACK CFI 10a11f .cfa: $rsp 48 +
+STACK CFI 10a120 .cfa: $rsp 56 +
+STACK CFI 10a124 $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^ .cfa: $rsp 96 +
+STACK CFI INIT 10a210 f9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10a212 .cfa: $rsp 16 +
+STACK CFI 10a215 $r15: .cfa -16 + ^
+STACK CFI 10a217 .cfa: $rsp 24 +
+STACK CFI 10a219 .cfa: $rsp 32 +
+STACK CFI 10a21b .cfa: $rsp 40 +
+STACK CFI 10a21e $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^
+STACK CFI 10a21f .cfa: $rsp 48 +
+STACK CFI 10a220 .cfa: $rsp 56 +
+STACK CFI 10a224 $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^ .cfa: $rsp 96 +
+STACK CFI INIT 10a310 87 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10a314 .cfa: $rsp 16 +
+STACK CFI 10a319 $rbx: .cfa -16 + ^
+STACK CFI INIT 10a3a0 19 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10a3a4 .cfa: $rsp 64 +
+STACK CFI INIT 10a3c0 a4 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10a3c1 .cfa: $rsp 16 +
+STACK CFI 10a3c4 $rbx: .cfa -16 + ^
+STACK CFI 10a3c8 .cfa: $rsp 64 +
+STACK CFI INIT 10a470 43a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10a475 .cfa: $rsp 16 +
+STACK CFI 10a478 $rbx: .cfa -16 + ^
+STACK CFI INIT 10a8b0 6f7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10a8b2 .cfa: $rsp 16 +
+STACK CFI 10a8b7 $r15: .cfa -16 + ^
+STACK CFI 10a8c0 .cfa: $rsp 24 +
+STACK CFI 10a8c4 $r14: .cfa -24 + ^
+STACK CFI 10a8c6 .cfa: $rsp 32 +
+STACK CFI 10a8c9 $r13: .cfa -32 + ^
+STACK CFI 10a8cb .cfa: $rsp 40 +
+STACK CFI 10a8ce $r12: .cfa -40 + ^
+STACK CFI 10a8cf .cfa: $rsp 48 +
+STACK CFI 10a8d0 .cfa: $rsp 56 +
+STACK CFI 10a8d7 .cfa: $rsp 384 +
+STACK CFI 10a992 $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 10afb0 28 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 10afe0 117 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 136700 22 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 10b100 39c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10b102 .cfa: $rsp 16 +
+STACK CFI 10b104 .cfa: $rsp 24 +
+STACK CFI 10b106 .cfa: $rsp 32 +
+STACK CFI 10b108 .cfa: $rsp 40 +
+STACK CFI 10b10b $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI 10b10c .cfa: $rsp 48 +
+STACK CFI 10b10f $rbp: .cfa -48 + ^
+STACK CFI 10b110 .cfa: $rsp 56 +
+STACK CFI 10b114 .cfa: $rsp 176 +
+STACK CFI 10b14c $rbx: .cfa -56 + ^
+STACK CFI INIT 10b4a0 86 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10b4ad $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI 10b4c3 .cfa: $rsp 80 +
+STACK CFI 10b4c6 $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^
+STACK CFI INIT 10b530 74 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10b53d $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI 10b553 .cfa: $rsp 64 +
+STACK CFI 10b559 $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^
+STACK CFI INIT 136730 22 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 10b5b0 6ac .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10b5b1 .cfa: $rsp 16 +
+STACK CFI 10b5b4 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 10b5b9 $r15: .cfa -24 + ^
+STACK CFI 10b5be $r14: .cfa -32 + ^
+STACK CFI 10b5c3 $r13: .cfa -40 + ^
+STACK CFI 10b5cc $r12: .cfa -48 + ^
+STACK CFI 10b5fc $rbx: .cfa -56 + ^
+STACK CFI INIT 10bc60 86 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10bc6d $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI 10bc83 .cfa: $rsp 80 +
+STACK CFI 10bc86 $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^
+STACK CFI INIT 10bcf0 6d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10bcfd $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI 10bd13 .cfa: $rsp 64 +
+STACK CFI 10bd16 $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^
+STACK CFI INIT 136760 22 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 10bd60 8a7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10bd61 .cfa: $rsp 16 +
+STACK CFI 10bd64 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 10bdaa $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 10c610 46 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 10c660 8a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10c66c $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 10c679 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^
+STACK CFI 10c687 .cfa: $rsp 80 +
+STACK CFI 10c690 $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT 10c6f0 a3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10c6fd $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 10c718 .cfa: $rsp 96 +
+STACK CFI 10c722 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT 10c7a0 40b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10c7a2 .cfa: $rsp 16 +
+STACK CFI 10c7a4 .cfa: $rsp 24 +
+STACK CFI 10c7a6 .cfa: $rsp 32 +
+STACK CFI 10c7a9 $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI 10c7ab .cfa: $rsp 40 +
+STACK CFI 10c7ac .cfa: $rsp 48 +
+STACK CFI 10c7ad .cfa: $rsp 56 +
+STACK CFI 10c7b1 .cfa: $rsp 144 +
+STACK CFI 10c7c8 $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 10cbb0 369 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10cbb2 .cfa: $rsp 16 +
+STACK CFI 10cbb5 $r15: .cfa -16 + ^
+STACK CFI 10cbb7 .cfa: $rsp 24 +
+STACK CFI 10cbba $r14: .cfa -24 + ^
+STACK CFI 10cbbc .cfa: $rsp 32 +
+STACK CFI 10cbbf $r13: .cfa -32 + ^
+STACK CFI 10cbc1 .cfa: $rsp 40 +
+STACK CFI 10cbc2 .cfa: $rsp 48 +
+STACK CFI 10cbc3 .cfa: $rsp 56 +
+STACK CFI 10cbc5 $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 10cbc9 .cfa: $rsp 128 +
+STACK CFI INIT 136790 22 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 10cf20 675 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10cf21 .cfa: $rsp 16 +
+STACK CFI 10cf24 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 10cf29 $r15: .cfa -24 + ^
+STACK CFI 10cf35 $r13: .cfa -40 + ^ $r14: .cfa -32 + ^
+STACK CFI 10cf41 $r12: .cfa -48 + ^
+STACK CFI 10cf68 $rbx: .cfa -56 + ^
+STACK CFI INIT 10d5a0 99 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10d5ad $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 10d5c8 .cfa: $rsp 96 +
+STACK CFI 10d5cd $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT 10d640 7e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10d64d $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 10d65d $r12: .cfa -40 + ^ $r13: .cfa -32 + ^
+STACK CFI 10d66e .cfa: $rsp 80 +
+STACK CFI 10d671 $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT 10d6c0 11b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10d6da .cfa: $rsp 96 +
+STACK CFI 10d6df $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI INIT 10d7e0 c2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10d7ed $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI 10d7fa $r12: .cfa -32 + ^ $r13: .cfa -24 + ^
+STACK CFI 10d806 .cfa: $rsp 48 +
+STACK CFI 10d812 $r14: .cfa -16 + ^
+STACK CFI INIT 10d8b0 2a8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10d8b1 .cfa: $rsp 16 +
+STACK CFI 10d8b4 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 10d8bf $r13: .cfa -40 + ^ $r14: .cfa -32 + ^
+STACK CFI 10d8ca $r15: .cfa -24 + ^ $rbx: .cfa -56 + ^
+STACK CFI 10d8ee $r12: .cfa -48 + ^
+STACK CFI INIT 10db60 ca .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10db79 $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^ $rbx: .cfa -48 + ^
+STACK CFI 10db82 .cfa: $rsp 48 +
+STACK CFI 10db94 $rbp: .cfa -40 + ^
+STACK CFI INIT 10dc30 146 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10dc32 .cfa: $rsp 16 +
+STACK CFI 10dc35 $r15: .cfa -16 + ^
+STACK CFI 10dc37 .cfa: $rsp 24 +
+STACK CFI 10dc3a $r14: .cfa -24 + ^
+STACK CFI 10dc3f .cfa: $rsp 32 +
+STACK CFI 10dc42 $r13: .cfa -32 + ^
+STACK CFI 10dc47 .cfa: $rsp 40 +
+STACK CFI 10dc48 .cfa: $rsp 48 +
+STACK CFI 10dc4b $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^
+STACK CFI 10dc4c .cfa: $rsp 56 +
+STACK CFI 10dc4f $rbx: .cfa -56 + ^
+STACK CFI 10dc53 .cfa: $rsp 64 +
+STACK CFI INIT 10dd80 41 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10dd81 .cfa: $rsp 16 +
+STACK CFI 10dd88 $rbx: .cfa -16 + ^
+STACK CFI INIT 10ddd0 37c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10ddd1 .cfa: $rsp 16 +
+STACK CFI 10ddd4 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 10dddf $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 10e150 115 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10e15d $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI 10e172 .cfa: $rsp 64 +
+STACK CFI 10e176 $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^
+STACK CFI INIT 10e270 180 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10e271 .cfa: $rsp 16 +
+STACK CFI 10e274 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 10e27b $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI 10e280 $r13: .cfa -40 + ^
+STACK CFI 10e285 $r12: .cfa -48 + ^
+STACK CFI 10e299 $rbx: .cfa -56 + ^
+STACK CFI INIT 10e3f0 18 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10e3f4 .cfa: $rsp 16 +
+STACK CFI INIT 10e410 14 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 10e430 28 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 10e460 14 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 10e480 28 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 10e4b0 14 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 10e4d0 14 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 10e4f0 a5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10e4f2 .cfa: $rsp 16 +
+STACK CFI 10e503 $r14: .cfa -16 + ^
+STACK CFI 10e50a .cfa: $rsp 24 +
+STACK CFI 10e50c .cfa: $rsp 32 +
+STACK CFI 10e50d .cfa: $rsp 40 +
+STACK CFI 10e50e .cfa: $rsp 48 +
+STACK CFI 10e512 .cfa: $rsp 64 +
+STACK CFI 10e517 $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI INIT 10e5a0 107 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10e5a1 .cfa: $rsp 16 +
+STACK CFI 10e5a2 .cfa: $rsp 24 +
+STACK CFI 10e5a9 .cfa: $rsp 160 +
+STACK CFI 10e5b7 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 10e6b0 29 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10e6b4 .cfa: $rsp 16 +
+STACK CFI INIT 10e6e0 4c4 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10e6e1 .cfa: $rsp 16 +
+STACK CFI 10e6e4 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 10e6ed $r15: .cfa -24 + ^
+STACK CFI 10e6f5 $r14: .cfa -32 + ^
+STACK CFI 10e6fa $r13: .cfa -40 + ^
+STACK CFI 10e703 $r12: .cfa -48 + ^
+STACK CFI 10e707 $rbx: .cfa -56 + ^
+STACK CFI INIT 10ebb0 62 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10ebbe .cfa: $rsp 48 +
+STACK CFI 10ebc5 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 10ec20 2e8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10ec2d $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 10ec3a $r12: .cfa -40 + ^ $r13: .cfa -32 + ^
+STACK CFI 10ec48 .cfa: $rsp 96 +
+STACK CFI 10ec55 $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT 10ef10 17 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10ef17 .cfa: $rsp 160 +
+STACK CFI INIT 10ef30 2b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10ef3b .cfa: $rsp 16 +
+STACK CFI INIT 10ef60 4f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10ef64 .cfa: $rsp 32 +
+STACK CFI INIT 10f332 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 10f340 .cfa: $rsp 0 +
+STACK CFI 10f344 .cfa: $rsp 128 +
+STACK CFI 10f34c .cfa: $rsp -128 +
+STACK CFI INIT 10f351 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 10f35f .cfa: $rsp 0 +
+STACK CFI 10f363 .cfa: $rsp 128 +
+STACK CFI 10f36b .cfa: $rsp -128 +
+STACK CFI INIT 10f370 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 10f37e .cfa: $rsp 0 +
+STACK CFI 10f382 .cfa: $rsp 128 +
+STACK CFI 10f38a .cfa: $rsp -128 +
+STACK CFI INIT 10f38f 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 10f39d .cfa: $rsp 0 +
+STACK CFI 10f3a1 .cfa: $rsp 128 +
+STACK CFI 10f3a9 .cfa: $rsp -128 +
+STACK CFI INIT 10f3ae 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 10f3bc .cfa: $rsp 0 +
+STACK CFI 10f3c0 .cfa: $rsp 128 +
+STACK CFI 10f3c8 .cfa: $rsp -128 +
+STACK CFI INIT 10f3cd 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 10f3db .cfa: $rsp 0 +
+STACK CFI 10f3df .cfa: $rsp 128 +
+STACK CFI 10f3e7 .cfa: $rsp -128 +
+STACK CFI INIT 10f3ec 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 10f3fa .cfa: $rsp 0 +
+STACK CFI 10f3fe .cfa: $rsp 128 +
+STACK CFI 10f406 .cfa: $rsp -128 +
+STACK CFI INIT 10f40b 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 10f419 .cfa: $rsp 0 +
+STACK CFI 10f41d .cfa: $rsp 128 +
+STACK CFI 10f425 .cfa: $rsp -128 +
+STACK CFI INIT 10efb0 21 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10efb4 .cfa: $rsp 16 +
+STACK CFI INIT 10efe0 5c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10efee .cfa: $rsp 32 +
+STACK CFI 10eff1 $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI INIT 10f040 70 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10f04d $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 10f056 .cfa: $rsp 32 +
+STACK CFI 10f05c $r12: .cfa -16 + ^
+STACK CFI INIT 10f0b0 70 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10f0bd $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 10f0c6 .cfa: $rsp 32 +
+STACK CFI 10f0cc $r12: .cfa -16 + ^
+STACK CFI INIT 10f120 29 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10f121 .cfa: $rsp 16 +
+STACK CFI 10f124 $rbx: .cfa -16 + ^
+STACK CFI INIT 10f150 2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 10f160 63 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10f164 .cfa: $rsp 16 +
+STACK CFI INIT 10f1d0 74 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10f1d4 .cfa: $rsp 16 +
+STACK CFI INIT 10f250 70 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10f254 .cfa: $rsp 16 +
+STACK CFI INIT 10f2c0 72 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10f2c4 .cfa: $rsp 16 +
+STACK CFI INIT 10f430 51 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10f431 .cfa: $rsp 16 +
+STACK CFI 10f434 $rbx: .cfa -16 + ^
+STACK CFI 10f438 .cfa: $rsp 32 +
+STACK CFI INIT 10f490 51 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10f491 .cfa: $rsp 16 +
+STACK CFI 10f494 $rbx: .cfa -16 + ^
+STACK CFI 10f498 .cfa: $rsp 32 +
+STACK CFI INIT 10f5b4 1c .cfa: $rsp -128 + .ra: $rip
+STACK CFI 10f5c2 .cfa: $rsp 0 +
+STACK CFI 10f5c6 .cfa: $rsp 128 +
+STACK CFI 10f5ce .cfa: $rsp -128 +
+STACK CFI INIT 10f5d0 1c .cfa: $rsp -128 + .ra: $rip
+STACK CFI 10f5de .cfa: $rsp 0 +
+STACK CFI 10f5e2 .cfa: $rsp 128 +
+STACK CFI 10f5ea .cfa: $rsp -128 +
+STACK CFI INIT 10f4f0 c4 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10f4f4 .cfa: $rsp 16 +
+STACK CFI INIT 10f654 1c .cfa: $rsp -128 + .ra: $rip
+STACK CFI 10f662 .cfa: $rsp 0 +
+STACK CFI 10f666 .cfa: $rsp 128 +
+STACK CFI 10f66e .cfa: $rsp -128 +
+STACK CFI INIT 10f670 1c .cfa: $rsp -128 + .ra: $rip
+STACK CFI 10f67e .cfa: $rsp 0 +
+STACK CFI 10f682 .cfa: $rsp 128 +
+STACK CFI 10f68a .cfa: $rsp -128 +
+STACK CFI INIT 10f5f0 64 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10f5f4 .cfa: $rsp 16 +
+STACK CFI INIT 10f690 2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 10f6a0 202 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10f6b9 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 10f6cf .cfa: $rsp 432 +
+STACK CFI 10f6d4 $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT 10f8b0 46 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10f8b4 .cfa: $rsp 16 +
+STACK CFI INIT 10f900 168 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10f904 .cfa: $rsp 16 +
+STACK CFI INIT 10fa70 6f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10fa74 .cfa: $rsp 16 +
+STACK CFI INIT 10fae0 1ea .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10fae2 .cfa: $rsp 16 +
+STACK CFI 10fae4 .cfa: $rsp 24 +
+STACK CFI 10fae6 .cfa: $rsp 32 +
+STACK CFI 10fae9 $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI 10faeb .cfa: $rsp 40 +
+STACK CFI 10faec .cfa: $rsp 48 +
+STACK CFI 10faef $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^
+STACK CFI 10faf2 .cfa: $rsp 56 +
+STACK CFI 10faf5 $rbx: .cfa -56 + ^
+STACK CFI 10fafc .cfa: $rsp 416 +
+STACK CFI INIT 10fcd0 4f6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10fcdd $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 10fcf8 .cfa: $rsp 816 +
+STACK CFI 10fd06 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^
+STACK CFI INIT 1101d0 ce .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1101d1 .cfa: $rsp 16 +
+STACK CFI 1101d4 $rbp: .cfa -16 + ^
+STACK CFI 1101d5 .cfa: $rsp 24 +
+STACK CFI 1101d8 $rbx: .cfa -24 + ^
+STACK CFI 1101dc .cfa: $rsp 48 +
+STACK CFI INIT 1102a0 259 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1102a2 .cfa: $rsp 16 +
+STACK CFI 1102a5 $r15: .cfa -16 + ^
+STACK CFI 1102a7 .cfa: $rsp 24 +
+STACK CFI 1102aa $r14: .cfa -24 + ^
+STACK CFI 1102ac .cfa: $rsp 32 +
+STACK CFI 1102ae .cfa: $rsp 40 +
+STACK CFI 1102af .cfa: $rsp 48 +
+STACK CFI 1102b0 .cfa: $rsp 56 +
+STACK CFI 1102b3 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 1102ba .cfa: $rsp 416 +
+STACK CFI INIT 110500 23c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 11050d $r12: .cfa -40 + ^ $rbx: .cfa -56 + ^
+STACK CFI 11052b .cfa: $rsp 416 +
+STACK CFI 110539 $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^
+STACK CFI INIT 110841 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 11084f .cfa: $rsp 0 +
+STACK CFI 110853 .cfa: $rsp 128 +
+STACK CFI 11085b .cfa: $rsp -128 +
+STACK CFI INIT 110860 1f .cfa: $rsp -128 + .ra: $rip
+STACK CFI 11086e .cfa: $rsp 0 +
+STACK CFI 110872 .cfa: $rsp 128 +
+STACK CFI 11087a .cfa: $rsp -128 +
+STACK CFI INIT 110740 101 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 11074d $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 11075b .cfa: $rsp 32 +
+STACK CFI 11078a $r12: .cfa -16 + ^
+STACK CFI INIT 110880 fe .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 110881 .cfa: $rsp 16 +
+STACK CFI 110889 $rbp: .cfa -16 + ^
+STACK CFI 11088a .cfa: $rsp 24 +
+STACK CFI 11088d $rbx: .cfa -24 + ^
+STACK CFI 11089b .cfa: $rsp 32 +
+STACK CFI INIT 110980 5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 110990 5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 1109a0 5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 1109b0 5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 1109c0 5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 1109d0 5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 1109e0 5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 1109f0 5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 110a00 43 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 110a50 17 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 110a70 1d3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 110a72 .cfa: $rsp 16 +
+STACK CFI 110a75 $r15: .cfa -16 + ^
+STACK CFI 110a77 .cfa: $rsp 24 +
+STACK CFI 110a7a $r14: .cfa -24 + ^
+STACK CFI 110a7c .cfa: $rsp 32 +
+STACK CFI 110a7e .cfa: $rsp 40 +
+STACK CFI 110a7f .cfa: $rsp 48 +
+STACK CFI 110a80 .cfa: $rsp 56 +
+STACK CFI 110a84 .cfa: $rsp 160 +
+STACK CFI 110a8b $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 110c50 63 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 110cc0 339 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 110cc2 .cfa: $rsp 16 +
+STACK CFI 110cc4 .cfa: $rsp 24 +
+STACK CFI 110cc6 .cfa: $rsp 32 +
+STACK CFI 110cc8 .cfa: $rsp 40 +
+STACK CFI 110cc9 .cfa: $rsp 48 +
+STACK CFI 110cca .cfa: $rsp 56 +
+STACK CFI 110ccd $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 110cd1 .cfa: $rsp 96 +
+STACK CFI INIT 111000 32 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 111040 17 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 111060 4a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 111061 .cfa: $rsp 16 +
+STACK CFI 111064 $rbx: .cfa -16 + ^
+STACK CFI 111071 .cfa: $rsp 32 +
+STACK CFI INIT 1110b0 4f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1110b1 .cfa: $rsp 16 +
+STACK CFI 1110b4 $rbx: .cfa -16 + ^
+STACK CFI 1110c2 .cfa: $rsp 32 +
+STACK CFI INIT 111100 10 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 1367c0 74 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1367c1 .cfa: $rsp 16 +
+STACK CFI 1367c4 $rbx: .cfa -16 + ^
+STACK CFI INIT 111110 62 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 111114 .cfa: $rsp 64 +
+STACK CFI INIT 136840 148 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 136842 .cfa: $rsp 16 +
+STACK CFI 136844 .cfa: $rsp 24 +
+STACK CFI 136846 .cfa: $rsp 32 +
+STACK CFI 136848 .cfa: $rsp 40 +
+STACK CFI 136849 .cfa: $rsp 48 +
+STACK CFI 13684a .cfa: $rsp 56 +
+STACK CFI 13684e .cfa: $rsp 80 +
+STACK CFI 136855 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI INIT 111180 21 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 1111b0 52 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1111b4 .cfa: $rsp 48 +
+STACK CFI INIT 111210 3c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 111214 .cfa: $rsp 48 +
+STACK CFI INIT 111250 46 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 111251 .cfa: $rsp 16 +
+STACK CFI 111254 $rbx: .cfa -16 + ^
+STACK CFI 11125b .cfa: $rsp 32 +
+STACK CFI INIT 1112a0 4fe .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1112a1 .cfa: $rsp 16 +
+STACK CFI 1112a4 $rbp: .cfa -16 + ^ .cfa: $rbp 16 +
+STACK CFI 1112ab $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI 1112b0 $r13: .cfa -40 + ^
+STACK CFI 1112b5 $r12: .cfa -48 + ^
+STACK CFI 1112e5 $rbx: .cfa -56 + ^
+STACK CFI INIT 1117a0 d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 1117b0 ee .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1117b4 .cfa: $rsp 48 +
+STACK CFI INIT 1118a0 11 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 1118c0 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 1118f0 95 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1118f4 .cfa: $rsp 64 +
diff --git a/google-breakpad/src/processor/testdata/symbols/libgcc_s.so.1/18B180F90887D8F8B5C35D185444AF4C0/libgcc_s.so.1.sym b/google-breakpad/src/processor/testdata/symbols/libgcc_s.so.1/18B180F90887D8F8B5C35D185444AF4C0/libgcc_s.so.1.sym
new file mode 100644
index 0000000..c53f287
--- /dev/null
+++ b/google-breakpad/src/processor/testdata/symbols/libgcc_s.so.1/18B180F90887D8F8B5C35D185444AF4C0/libgcc_s.so.1.sym
@@ -0,0 +1,897 @@
+MODULE Linux x86_64 18B180F90887D8F8B5C35D185444AF4C0 libgcc_s.so.1
+PUBLIC 2fe0 0 __multi3
+PUBLIC 3030 0 __negti2
+PUBLIC 3060 0 __lshrti3
+PUBLIC 30d0 0 __ashlti3
+PUBLIC 3140 0 __ashrti3
+PUBLIC 31b0 0 __cmpti2
+PUBLIC 31f0 0 __ucmpti2
+PUBLIC 3230 0 __clear_cache
+PUBLIC 3240 0 __absvdi2
+PUBLIC 3260 0 __absvsi2
+PUBLIC 3280 0 __absvti2
+PUBLIC 32b0 0 __addvdi3
+PUBLIC 32e0 0 __addvsi3
+PUBLIC 3310 0 __addvti3
+PUBLIC 3360 0 __subvdi3
+PUBLIC 3390 0 __subvsi3
+PUBLIC 33c0 0 __subvti3
+PUBLIC 3420 0 __mulvdi3
+PUBLIC 3440 0 __mulvsi3
+PUBLIC 3470 0 __mulvti3
+PUBLIC 36e0 0 __negvdi2
+PUBLIC 3710 0 __negvsi2
+PUBLIC 3730 0 __negvti2
+PUBLIC 3780 0 __ffsdi2
+PUBLIC 3790 0 __ffsti2
+PUBLIC 37b0 0 __clzdi2
+PUBLIC 37c0 0 __clzti2
+PUBLIC 37e0 0 __ctzdi2
+PUBLIC 37f0 0 __ctzti2
+PUBLIC 3810 0 __popcountdi2
+PUBLIC 3840 0 __popcountti2
+PUBLIC 3890 0 __paritydi2
+PUBLIC 38d0 0 __parityti2
+PUBLIC 3910 0 __powisf2
+PUBLIC 3960 0 __powidf2
+PUBLIC 39c0 0 __powixf2
+PUBLIC 3a20 0 __mulsc3
+PUBLIC 3cd0 0 __muldc3
+PUBLIC 3fc0 0 __mulxc3
+PUBLIC 4420 0 __divsc3
+PUBLIC 46f0 0 __divdc3
+PUBLIC 4a00 0 __divxc3
+PUBLIC 4d00 0 __bswapsi2
+PUBLIC 4d10 0 __bswapdi2
+PUBLIC 4d20 0 __clrsbdi2
+PUBLIC 4d50 0 __clrsbti2
+PUBLIC 4da0 0 __fixunssfdi
+PUBLIC 4dd0 0 __fixunsdfdi
+PUBLIC 4e00 0 __fixunsxfdi
+PUBLIC 4e70 0 __fixsfti
+PUBLIC 4eb0 0 __fixdfti
+PUBLIC 4ef0 0 __fixxfti
+PUBLIC 4f30 0 __fixunssfti
+PUBLIC 4fd0 0 __fixunsdfti
+PUBLIC 5070 0 __fixunsxfti
+PUBLIC 5260 0 __floattisf
+PUBLIC 5330 0 __floattidf
+PUBLIC 5400 0 __floattixf
+PUBLIC 5430 0 __floatuntisf
+PUBLIC 5520 0 __floatuntidf
+PUBLIC 5610 0 __floatuntixf
+PUBLIC 5650 0 __divti3
+PUBLIC 57f0 0 __modti3
+PUBLIC 59e0 0 __udivti3
+PUBLIC 5b10 0 __umodti3
+PUBLIC 5cb0 0 __udivmodti4
+PUBLIC 5f00 0 __addtf3
+PUBLIC 73d0 0 __divtf3
+PUBLIC 7e50 0 __multf3
+PUBLIC 8820 0 __negtf2
+PUBLIC 8b70 0 __subtf3
+PUBLIC a0e0 0 __unordtf2
+PUBLIC a190 0 __fixtfsi
+PUBLIC a2a0 0 __fixunstfsi
+PUBLIC a380 0 __floatsitf
+PUBLIC a470 0 __floatunsitf
+PUBLIC a550 0 __fixtfdi
+PUBLIC a6d0 0 __fixunstfdi
+PUBLIC a800 0 __floatditf
+PUBLIC a8f0 0 __floatunditf
+PUBLIC a9d0 0 __fixtfti
+PUBLIC abb0 0 __fixunstfti
+PUBLIC ad40 0 __floattitf
+PUBLIC b0d0 0 __floatuntitf
+PUBLIC b430 0 __extendsftf2
+PUBLIC b5a0 0 __extenddftf2
+PUBLIC b730 0 __extendxftf2
+PUBLIC b880 0 __trunctfsf2
+PUBLIC bd70 0 __trunctfdf2
+PUBLIC c2a0 0 __trunctfxf2
+PUBLIC c7b0 0 __gttf2
+PUBLIC c9e0 0 __letf2
+PUBLIC cbe0 0 __eqtf2
+PUBLIC cd40 0 __divtc3
+PUBLIC d3c0 0 __multc3
+PUBLIC da30 0 __powitf2
+PUBLIC dad0 0 __enable_execute_stack
+PUBLIC de60 0 _Unwind_GetGR
+PUBLIC deb0 0 _Unwind_GetCFA
+PUBLIC dec0 0 _Unwind_SetGR
+PUBLIC df10 0 _Unwind_GetIP
+PUBLIC df20 0 _Unwind_GetIPInfo
+PUBLIC df40 0 _Unwind_SetIP
+PUBLIC df50 0 _Unwind_GetLanguageSpecificData
+PUBLIC df60 0 _Unwind_GetRegionStart
+PUBLIC df70 0 _Unwind_FindEnclosingFunction
+PUBLIC dfa0 0 _Unwind_GetDataRelBase
+PUBLIC dfb0 0 _Unwind_GetTextRelBase
+PUBLIC fef0 0 _Unwind_RaiseException
+PUBLIC 10060 0 _Unwind_ForcedUnwind
+PUBLIC 10150 0 _Unwind_Resume
+PUBLIC 10230 0 _Unwind_Resume_or_Rethrow
+PUBLIC 10330 0 _Unwind_DeleteException
+PUBLIC 10350 0 _Unwind_Backtrace
+PUBLIC 11ac0 0 __register_frame_info_bases
+PUBLIC 11b50 0 __register_frame_info
+PUBLIC 11b60 0 __register_frame
+PUBLIC 11b90 0 __register_frame_info_table_bases
+PUBLIC 11c10 0 __register_frame_info_table
+PUBLIC 11c20 0 __register_frame_table
+PUBLIC 11c40 0 __deregister_frame_info_bases
+PUBLIC 11d60 0 __deregister_frame_info
+PUBLIC 11d70 0 __deregister_frame
+PUBLIC 11da0 0 _Unwind_Find_FDE
+PUBLIC 12160 0 __gcc_personality_v0
+PUBLIC 12420 0 __emutls_get_address
+PUBLIC 125a0 0 __emutls_register_common
+STACK CFI INIT 2bb0 2c0 .cfa: $rsp 16 + .ra: .cfa -8 + ^
+STACK CFI 2bb6 .cfa: $rsp 24 +
+STACK CFI INIT 2fe0 4b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 3030 29 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 3060 67 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 30d0 67 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 3140 6a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 31b0 32 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 31f0 32 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 3230 2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 3240 1e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 3259 .cfa: $rsp 16 +
+STACK CFI INIT 3260 1c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 3277 .cfa: $rsp 16 +
+STACK CFI INIT 3280 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 32a0 .cfa: $rsp 16 +
+STACK CFI INIT 32b0 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 32d1 .cfa: $rsp 16 +
+STACK CFI INIT 32e0 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 3300 .cfa: $rsp 16 +
+STACK CFI INIT 3310 45 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 3317 .cfa: $rsp 16 +
+STACK CFI 3354 .cfa: $rsp 8 +
+STACK CFI INIT 3360 2e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 3389 .cfa: $rsp 16 +
+STACK CFI INIT 3390 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 33b0 .cfa: $rsp 16 +
+STACK CFI INIT 33c0 55 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 33ca .cfa: $rsp 16 +
+STACK CFI 3414 .cfa: $rsp 8 +
+STACK CFI INIT 3420 1a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 3435 .cfa: $rsp 16 +
+STACK CFI INIT 3440 22 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 345d .cfa: $rsp 16 +
+STACK CFI INIT 3470 26e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 3477 .cfa: $rsp 160 +
+STACK CFI 34de .cfa: $rsp 8 +
+STACK CFI 34df .cfa: $rsp 160 +
+STACK CFI INIT 36e0 24 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 36ff .cfa: $rsp 16 +
+STACK CFI INIT 3710 1e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 3729 .cfa: $rsp 16 +
+STACK CFI INIT 3730 47 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 3772 .cfa: $rsp 16 +
+STACK CFI INIT 3780 10 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 3790 1e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 37b0 9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 37c0 1e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 37e0 5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 37f0 1b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 3810 2c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 3840 46 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 3890 36 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 38d0 39 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 3910 50 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 3960 51 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 39c0 5f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 3a20 2a8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 3cd0 2ea .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 3fc0 456 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 4420 2cb .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 46f0 30a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 4a00 2fb .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 4d00 5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 4d10 7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 4d20 23 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 4d50 4d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 4da0 2b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 4dd0 2f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 4e00 6a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 4e70 33 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 4e84 .cfa: $rsp 16 +
+STACK CFI 4e9f .cfa: $rsp 8 +
+STACK CFI INIT 4eb0 34 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 4ec4 .cfa: $rsp 16 +
+STACK CFI 4ee0 .cfa: $rsp 8 +
+STACK CFI INIT 4ef0 39 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 4ef4 .cfa: $rsp 32 +
+STACK CFI 4f06 .cfa: $rsp 8 +
+STACK CFI 4f10 .cfa: $rsp 32 +
+STACK CFI 4f25 .cfa: $rsp 8 +
+STACK CFI INIT 4f30 9f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 4fd0 97 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 5070 1e1 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 5072 $r14: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 5074 $r13: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 5078 .cfa: $rsp 96 +
+STACK CFI 513a .cfa: $rsp 24 +
+STACK CFI 513c .cfa: $rsp 16 +
+STACK CFI 513e .cfa: $rsp 8 +
+STACK CFI 5140 .cfa: $rsp 96 +
+STACK CFI 51fe .cfa: $rsp 24 +
+STACK CFI 5200 .cfa: $rsp 16 +
+STACK CFI 5202 .cfa: $rsp 8 +
+STACK CFI 5208 .cfa: $rsp 96 +
+STACK CFI 5248 .cfa: $rsp 24 +
+STACK CFI 524e .cfa: $rsp 16 +
+STACK CFI 5250 .cfa: $rsp 8 +
+STACK CFI INIT 5260 ca .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 5330 ca .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 5400 2d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 5430 ee .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 5520 ee .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 5610 3d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 5650 19c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 5651 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 56ee .cfa: $rsp 8 +
+STACK CFI 56f0 .cfa: $rsp 16 +
+STACK CFI INIT 57f0 1eb .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 57f2 $r12: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 57fc $rbp: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 57fd $rbx: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 58a9 .cfa: $rsp 24 +
+STACK CFI 58aa .cfa: $rsp 16 +
+STACK CFI 58ac .cfa: $rsp 8 +
+STACK CFI 58b0 .cfa: $rsp 32 +
+STACK CFI INIT 59e0 12b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 5b10 189 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 5b11 $rbp: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 5b1b $rbx: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 5b4e .cfa: $rsp 16 +
+STACK CFI 5b4f .cfa: $rsp 8 +
+STACK CFI 5b50 .cfa: $rsp 24 +
+STACK CFI 5b8f .cfa: $rsp 16 +
+STACK CFI 5b90 .cfa: $rsp 8 +
+STACK CFI 5b98 .cfa: $rsp 24 +
+STACK CFI 5bd5 .cfa: $rsp 16 +
+STACK CFI 5bd6 .cfa: $rsp 8 +
+STACK CFI 5be0 .cfa: $rsp 24 +
+STACK CFI 5c69 .cfa: $rsp 16 +
+STACK CFI 5c6a .cfa: $rsp 8 +
+STACK CFI 5c70 .cfa: $rsp 24 +
+STACK CFI INIT 5ca0 3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 5cb0 247 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 5cd2 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI INIT 5f00 14c4 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 5f02 $r15: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 5f11 $r14: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 5f13 $r13: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 5f15 $r12: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI 5f16 $rbp: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI 5f17 $rbx: .cfa -56 + ^ .cfa: $rsp 56 +
+STACK CFI 5f1b .cfa: $rsp 72 +
+STACK CFI 6170 .cfa: $rsp 56 +
+STACK CFI 6171 .cfa: $rsp 48 +
+STACK CFI 6172 .cfa: $rsp 40 +
+STACK CFI 6174 .cfa: $rsp 32 +
+STACK CFI 6176 .cfa: $rsp 24 +
+STACK CFI 6178 .cfa: $rsp 16 +
+STACK CFI 617a .cfa: $rsp 8 +
+STACK CFI 6180 .cfa: $rsp 72 +
+STACK CFI INIT 73d0 a79 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 73d2 $r15: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 73d4 $r14: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 73d6 $r13: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 73d8 $r12: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI 73d9 $rbp: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI 73da $rbx: .cfa -56 + ^ .cfa: $rsp 56 +
+STACK CFI 73de .cfa: $rsp 88 +
+STACK CFI 7790 .cfa: $rsp 56 +
+STACK CFI 7791 .cfa: $rsp 48 +
+STACK CFI 7792 .cfa: $rsp 40 +
+STACK CFI 7794 .cfa: $rsp 32 +
+STACK CFI 7796 .cfa: $rsp 24 +
+STACK CFI 7798 .cfa: $rsp 16 +
+STACK CFI 779a .cfa: $rsp 8 +
+STACK CFI 77a0 .cfa: $rsp 88 +
+STACK CFI INIT 7e50 9c7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7e52 $r15: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 7e54 $r14: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 7e56 $r13: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 7e58 $r12: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI 7e59 $rbp: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI 7e5a $rbx: .cfa -56 + ^ .cfa: $rsp 56 +
+STACK CFI 7e5e .cfa: $rsp 72 +
+STACK CFI 833b .cfa: $rsp 56 +
+STACK CFI 833c .cfa: $rsp 48 +
+STACK CFI 833d .cfa: $rsp 40 +
+STACK CFI 833f .cfa: $rsp 32 +
+STACK CFI 8341 .cfa: $rsp 24 +
+STACK CFI 8343 .cfa: $rsp 16 +
+STACK CFI 8345 .cfa: $rsp 8 +
+STACK CFI 8350 .cfa: $rsp 72 +
+STACK CFI INIT 8820 346 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 8b70 1561 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8b72 $r15: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 8b81 $r14: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 8b83 $r13: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 8b85 $r12: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI 8b86 $rbp: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI 8b87 $rbx: .cfa -56 + ^ .cfa: $rsp 56 +
+STACK CFI 8b8b .cfa: $rsp 72 +
+STACK CFI 8f48 .cfa: $rsp 56 +
+STACK CFI 8f49 .cfa: $rsp 48 +
+STACK CFI 8f4a .cfa: $rsp 40 +
+STACK CFI 8f4c .cfa: $rsp 32 +
+STACK CFI 8f4e .cfa: $rsp 24 +
+STACK CFI 8f50 .cfa: $rsp 16 +
+STACK CFI 8f52 .cfa: $rsp 8 +
+STACK CFI 8f58 .cfa: $rsp 72 +
+STACK CFI INIT a0e0 ab .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT a190 108 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT a2a0 dc .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT a380 ed .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT a470 db .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT a550 171 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT a6d0 123 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT a800 ed .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT a8f0 db .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT a9d0 1dc .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a9d1 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI aa31 .cfa: $rsp 8 +
+STACK CFI aa38 .cfa: $rsp 16 +
+STACK CFI aa84 .cfa: $rsp 8 +
+STACK CFI aa88 .cfa: $rsp 16 +
+STACK CFI aa92 .cfa: $rsp 8 +
+STACK CFI aa98 .cfa: $rsp 16 +
+STACK CFI ab2b .cfa: $rsp 8 +
+STACK CFI ab30 .cfa: $rsp 16 +
+STACK CFI INIT abb0 18a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ad40 38b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT b0d0 35b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT b430 16a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT b5a0 18a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT b730 14b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT b880 4e9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT bd70 528 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT c2a0 510 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c2a1 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI c457 .cfa: $rsp 8 +
+STACK CFI c460 .cfa: $rsp 16 +
+STACK CFI INIT c7b0 225 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c7b1 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI c8aa .cfa: $rsp 8 +
+STACK CFI c8b0 .cfa: $rsp 16 +
+STACK CFI c8d6 .cfa: $rsp 8 +
+STACK CFI c8e0 .cfa: $rsp 16 +
+STACK CFI c91c .cfa: $rsp 8 +
+STACK CFI c921 .cfa: $rsp 16 +
+STACK CFI c937 .cfa: $rsp 8 +
+STACK CFI c940 .cfa: $rsp 16 +
+STACK CFI c956 .cfa: $rsp 8 +
+STACK CFI c960 .cfa: $rsp 16 +
+STACK CFI c9c5 .cfa: $rsp 8 +
+STACK CFI c9c6 .cfa: $rsp 16 +
+STACK CFI INIT c9e0 1f8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c9e1 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI cace .cfa: $rsp 8 +
+STACK CFI cad0 .cfa: $rsp 16 +
+STACK CFI cae4 .cfa: $rsp 8 +
+STACK CFI cae8 .cfa: $rsp 16 +
+STACK CFI cb13 .cfa: $rsp 8 +
+STACK CFI cb18 .cfa: $rsp 16 +
+STACK CFI cb4d .cfa: $rsp 8 +
+STACK CFI cb4e .cfa: $rsp 16 +
+STACK CFI cb64 .cfa: $rsp 8 +
+STACK CFI cb68 .cfa: $rsp 16 +
+STACK CFI cbc9 .cfa: $rsp 8 +
+STACK CFI cbca .cfa: $rsp 16 +
+STACK CFI INIT cbe0 152 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT cd40 679 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI cd42 $r12: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI cd43 $rbp: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI cd44 $rbx: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI cd4b .cfa: $rsp 160 +
+STACK CFI ce4e .cfa: $rsp 32 +
+STACK CFI ce4f .cfa: $rsp 24 +
+STACK CFI ce50 .cfa: $rsp 16 +
+STACK CFI ce52 .cfa: $rsp 8 +
+STACK CFI ce58 .cfa: $rsp 160 +
+STACK CFI INIT d3c0 66a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d3ca $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI d3de $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ .cfa: $rsp 240 +
+STACK CFI d4d4 .cfa: $rsp 8 +
+STACK CFI d4d5 .cfa: $rsp 240 +
+STACK CFI INIT da30 97 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI da31 $rbp: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI da3d $rbx: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI da45 .cfa: $rsp 64 +
+STACK CFI dac4 .cfa: $rsp 24 +
+STACK CFI dac5 .cfa: $rsp 16 +
+STACK CFI dac6 .cfa: $rsp 8 +
+STACK CFI INIT dad0 2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT dae0 46 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT db30 13c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI db3a $r12: .cfa -16 + ^ $rbx: .cfa -32 + ^
+STACK CFI db45 $rbp: .cfa -24 + ^ .cfa: $rsp 64 +
+STACK CFI dbbf .cfa: $rsp 8 +
+STACK CFI dbc0 .cfa: $rsp 64 +
+STACK CFI INIT dc70 78 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT dcf0 162 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI dcf2 $r12: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI dcf6 $rbp: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI dcfa $rbx: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI dcfe .cfa: $rsp 48 +
+STACK CFI ddd6 .cfa: $rsp 32 +
+STACK CFI ddd7 .cfa: $rsp 24 +
+STACK CFI ddd8 .cfa: $rsp 16 +
+STACK CFI ddda .cfa: $rsp 8 +
+STACK CFI dde0 .cfa: $rsp 48 +
+STACK CFI de07 .cfa: $rsp 32 +
+STACK CFI de08 .cfa: $rsp 24 +
+STACK CFI de09 .cfa: $rsp 16 +
+STACK CFI de0b .cfa: $rsp 8 +
+STACK CFI de0c .cfa: $rsp 48 +
+STACK CFI de4d .cfa: $rsp 32 +
+STACK CFI de4e .cfa: $rsp 24 +
+STACK CFI de4f .cfa: $rsp 16 +
+STACK CFI de51 .cfa: $rsp 8 +
+STACK CFI INIT de60 48 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI de64 .cfa: $rsp 16 +
+STACK CFI de9e .cfa: $rsp 8 +
+STACK CFI dea0 .cfa: $rsp 16 +
+STACK CFI dea7 .cfa: $rsp 8 +
+STACK CFI INIT deb0 8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT dec0 50 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI dec4 .cfa: $rsp 16 +
+STACK CFI df02 .cfa: $rsp 8 +
+STACK CFI df08 .cfa: $rsp 16 +
+STACK CFI df0f .cfa: $rsp 8 +
+STACK CFI INIT df10 8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT df20 15 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT df40 8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT df50 8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT df60 8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT df70 24 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI df74 .cfa: $rsp 48 +
+STACK CFI df8e .cfa: $rsp 8 +
+STACK CFI df90 .cfa: $rsp 48 +
+STACK CFI INIT dfa0 8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT dfb0 8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT dfc0 7c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI dfc4 .cfa: $rsp 16 +
+STACK CFI dffa .cfa: $rsp 8 +
+STACK CFI e000 .cfa: $rsp 16 +
+STACK CFI e017 .cfa: $rsp 8 +
+STACK CFI e020 .cfa: $rsp 16 +
+STACK CFI e027 .cfa: $rsp 8 +
+STACK CFI e030 .cfa: $rsp 16 +
+STACK CFI e037 .cfa: $rsp 8 +
+STACK CFI INIT e040 6c6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e042 $r15: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI e047 $r14: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI e049 $r13: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI e04b $r12: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI e04f $rbp: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI e050 $rbx: .cfa -56 + ^ .cfa: $rsp 56 +
+STACK CFI e057 .cfa: $rsp 608 +
+STACK CFI e0eb .cfa: $rsp 56 +
+STACK CFI e0ef .cfa: $rsp 48 +
+STACK CFI e0f0 .cfa: $rsp 40 +
+STACK CFI e0f2 .cfa: $rsp 32 +
+STACK CFI e0f4 .cfa: $rsp 24 +
+STACK CFI e0f6 .cfa: $rsp 16 +
+STACK CFI e0f8 .cfa: $rsp 8 +
+STACK CFI e100 .cfa: $rsp 608 +
+STACK CFI INIT e710 3a6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e712 $r15: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI e719 $r14: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI e71e $r13: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI e720 $r12: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI e721 $rbp: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI e722 $rbx: .cfa -56 + ^ .cfa: $rsp 56 +
+STACK CFI e729 .cfa: $rsp 368 +
+STACK CFI e8d0 .cfa: $rsp 56 +
+STACK CFI e8d1 .cfa: $rsp 48 +
+STACK CFI e8d2 .cfa: $rsp 40 +
+STACK CFI e8d4 .cfa: $rsp 32 +
+STACK CFI e8d6 .cfa: $rsp 24 +
+STACK CFI e8d8 .cfa: $rsp 16 +
+STACK CFI e8da .cfa: $rsp 8 +
+STACK CFI e8e0 .cfa: $rsp 368 +
+STACK CFI INIT eac0 a2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI eaca $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI ead1 .cfa: $rsp 32 +
+STACK CFI eb40 .cfa: $rsp 8 +
+STACK CFI eb48 .cfa: $rsp 32 +
+STACK CFI eb61 .cfa: $rsp 8 +
+STACK CFI INIT eb70 85e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI eb71 $rbp: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI eb77 .cfa: $rbp 16 +
+STACK CFI eb79 $r15: .cfa -24 + ^
+STACK CFI eb82 $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^
+STACK CFI eb8a $rbx: .cfa -56 + ^
+STACK CFI ec4c .cfa: $rsp 8 +
+STACK CFI ec50 .cfa: $rbp 16 +
+STACK CFI INIT f3d0 64f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f3d2 $r15: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI f3d9 $r14: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI f3db $r13: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI f3e3 $r12: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI f3e4 $rbp: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI f3e8 $rbx: .cfa -56 + ^ .cfa: $rsp 56 +
+STACK CFI f3ec .cfa: $rsp 96 +
+STACK CFI f619 .cfa: $rsp 56 +
+STACK CFI f61a .cfa: $rsp 48 +
+STACK CFI f61b .cfa: $rsp 40 +
+STACK CFI f61d .cfa: $rsp 32 +
+STACK CFI f61f .cfa: $rsp 24 +
+STACK CFI f621 .cfa: $rsp 16 +
+STACK CFI f623 .cfa: $rsp 8 +
+STACK CFI f628 .cfa: $rsp 96 +
+STACK CFI f710 .cfa: $rsp 56 +
+STACK CFI f713 .cfa: $rsp 48 +
+STACK CFI f714 .cfa: $rsp 40 +
+STACK CFI f716 .cfa: $rsp 32 +
+STACK CFI f718 .cfa: $rsp 24 +
+STACK CFI f71a .cfa: $rsp 16 +
+STACK CFI f71c .cfa: $rsp 8 +
+STACK CFI f71d .cfa: $rsp 96 +
+STACK CFI f91d .cfa: $rsp 56 +
+STACK CFI f923 .cfa: $rsp 48 +
+STACK CFI f924 .cfa: $rsp 40 +
+STACK CFI f926 .cfa: $rsp 32 +
+STACK CFI f928 .cfa: $rsp 24 +
+STACK CFI f92a .cfa: $rsp 16 +
+STACK CFI f92c .cfa: $rsp 8 +
+STACK CFI f92d .cfa: $rsp 96 +
+STACK CFI INIT fa20 20a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fa22 $r12: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI fa2c $rbp: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI fa30 $rbx: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI fa3a .cfa: $rsp 432 +
+STACK CFI fbde .cfa: $rsp 32 +
+STACK CFI fbdf .cfa: $rsp 24 +
+STACK CFI fbe0 .cfa: $rsp 16 +
+STACK CFI fbe2 .cfa: $rsp 8 +
+STACK CFI fbe8 .cfa: $rsp 432 +
+STACK CFI INIT fc30 ea .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fc32 $r14: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI fc34 $r13: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI fc36 $r12: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI fc3a $rbp: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI fc3e $rbx: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI fc45 .cfa: $rsp 432 +
+STACK CFI fcfc .cfa: $rsp 48 +
+STACK CFI fcff .cfa: $rsp 40 +
+STACK CFI fd00 .cfa: $rsp 32 +
+STACK CFI fd02 .cfa: $rsp 24 +
+STACK CFI fd04 .cfa: $rsp 16 +
+STACK CFI fd06 .cfa: $rsp 8 +
+STACK CFI fd10 .cfa: $rsp 432 +
+STACK CFI INIT fd20 a3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fd22 $r13: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI fd24 $r12: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI fd28 $rbp: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI fd29 $rbx: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI fd33 .cfa: $rsp 432 +
+STACK CFI fdb7 .cfa: $rsp 40 +
+STACK CFI fdb8 .cfa: $rsp 32 +
+STACK CFI fdb9 .cfa: $rsp 24 +
+STACK CFI fdbb .cfa: $rsp 16 +
+STACK CFI fdbd .cfa: $rsp 8 +
+STACK CFI fdbe .cfa: $rsp 432 +
+STACK CFI INIT fdd0 110 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fdd1 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI fde9 .cfa: $rsp 640 +
+STACK CFI fecd .cfa: $rsp 16 +
+STACK CFI fed1 .cfa: $rsp 8 +
+STACK CFI fed2 .cfa: $rsp 640 +
+STACK CFI fedb .cfa: $rsp 16 +
+STACK CFI fedf .cfa: $rsp 8 +
+STACK CFI INIT fee0 1 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT fef0 167 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fef1 $rbp: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI fef4 .cfa: $rbp 16 +
+STACK CFI fefe $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI ff07 $r12: .cfa -48 + ^
+STACK CFI ff0e $rbx: .cfa -56 + ^
+STACK CFI ff1e $rax: .cfa -72 + ^ $rdx: .cfa -64 + ^
+STACK CFI ffa5 .cfa: $rsp 8 +
+STACK CFI ffb0 .cfa: $rbp 16 +
+STACK CFI 10053 $rbp: $rbp .cfa: $rcx 8 +
+STACK CFI INIT 10060 e6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10061 $rbp: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 10064 .cfa: $rbp 16 +
+STACK CFI 10074 $r12: .cfa -48 + ^ $rax: .cfa -72 + ^ $rbx: .cfa -56 + ^ $rdx: .cfa -64 + ^
+STACK CFI 10083 $r13: .cfa -40 + ^ $r14: .cfa -32 + ^
+STACK CFI 10091 $r15: .cfa -24 + ^
+STACK CFI 100ec .cfa: $rsp 8 +
+STACK CFI 100ed .cfa: $rbp 16 +
+STACK CFI 10142 $rbp: $rbp .cfa: $rcx 8 +
+STACK CFI INIT 10150 d7 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10151 $rbp: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 10154 .cfa: $rbp 16 +
+STACK CFI 1015c $rbx: .cfa -56 + ^ $rdx: .cfa -64 + ^
+STACK CFI 10177 $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $rax: .cfa -72 + ^
+STACK CFI 10189 $r15: .cfa -24 + ^
+STACK CFI 10223 $rbp: $rbp .cfa: $rcx 8 +
+STACK CFI INIT 10230 f1 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10231 $rbp: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 10234 .cfa: $rbp 16 +
+STACK CFI 1023c $rax: .cfa -72 + ^ $rbx: .cfa -56 + ^
+STACK CFI 1025a $r12: .cfa -48 + ^ $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^ $rdx: .cfa -64 + ^
+STACK CFI 1027b .cfa: $rsp 8 +
+STACK CFI 10280 .cfa: $rbp 16 +
+STACK CFI 1031d $rbp: $rbp .cfa: $rcx 8 +
+STACK CFI INIT 10330 1a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 10350 99 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10351 $rbp: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 10354 .cfa: $rbp 16 +
+STACK CFI 1035a $r13: .cfa -40 + ^ $r14: .cfa -32 + ^ $r15: .cfa -24 + ^
+STACK CFI 10366 $r12: .cfa -48 + ^
+STACK CFI 10375 $rbx: .cfa -56 + ^
+STACK CFI 103e8 .cfa: $rsp 8 +
+STACK CFI INIT 103f0 46 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 10440 1b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 10460 a3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10462 $r15: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 10464 $r14: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 10469 $r13: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 1046e $r12: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI 10472 $rbp: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI 10473 $rbx: .cfa -56 + ^ .cfa: $rsp 56 +
+STACK CFI 1047b .cfa: $rsp 80 +
+STACK CFI 104cd .cfa: $rsp 56 +
+STACK CFI 104ce .cfa: $rsp 48 +
+STACK CFI 104cf .cfa: $rsp 40 +
+STACK CFI 104d1 .cfa: $rsp 32 +
+STACK CFI 104d3 .cfa: $rsp 24 +
+STACK CFI 104d5 .cfa: $rsp 16 +
+STACK CFI 104d7 .cfa: $rsp 8 +
+STACK CFI 104e0 .cfa: $rsp 80 +
+STACK CFI INIT 10510 c8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10512 $r15: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 10518 $r14: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 1051a $r13: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 1051f $r12: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI 10523 $rbp: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI 10524 $rbx: .cfa -56 + ^ .cfa: $rsp 56 +
+STACK CFI 1052b .cfa: $rsp 80 +
+STACK CFI 105cd .cfa: $rsp 56 +
+STACK CFI 105ce .cfa: $rsp 48 +
+STACK CFI 105cf .cfa: $rsp 40 +
+STACK CFI 105d1 .cfa: $rsp 32 +
+STACK CFI 105d3 .cfa: $rsp 24 +
+STACK CFI 105d5 .cfa: $rsp 16 +
+STACK CFI 105d7 .cfa: $rsp 8 +
+STACK CFI INIT 105e0 67 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 105e4 .cfa: $rsp 16 +
+STACK CFI 1061e .cfa: $rsp 8 +
+STACK CFI 10620 .cfa: $rsp 16 +
+STACK CFI 10629 .cfa: $rsp 8 +
+STACK CFI 10630 .cfa: $rsp 16 +
+STACK CFI 10639 .cfa: $rsp 8 +
+STACK CFI 10640 .cfa: $rsp 16 +
+STACK CFI 10646 .cfa: $rsp 8 +
+STACK CFI INIT 10650 13c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1065a $r12: .cfa -16 + ^ $rbx: .cfa -32 + ^
+STACK CFI 10665 $rbp: .cfa -24 + ^ .cfa: $rsp 64 +
+STACK CFI 106df .cfa: $rsp 8 +
+STACK CFI 106e0 .cfa: $rsp 64 +
+STACK CFI INIT 10790 109 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10791 $rbp: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 10799 $rbx: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 1079d .cfa: $rsp 48 +
+STACK CFI 107c5 .cfa: $rsp 24 +
+STACK CFI 107c6 .cfa: $rsp 16 +
+STACK CFI 107c7 .cfa: $rsp 8 +
+STACK CFI 107d0 .cfa: $rsp 48 +
+STACK CFI 10867 .cfa: $rsp 24 +
+STACK CFI 10868 .cfa: $rsp 16 +
+STACK CFI 10869 .cfa: $rsp 8 +
+STACK CFI 10870 .cfa: $rsp 48 +
+STACK CFI INIT 108a0 6b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 108a4 .cfa: $rsp 16 +
+STACK CFI 108db .cfa: $rsp 8 +
+STACK CFI 108e0 .cfa: $rsp 16 +
+STACK CFI 108e7 .cfa: $rsp 8 +
+STACK CFI 108f0 .cfa: $rsp 16 +
+STACK CFI 108f7 .cfa: $rsp 8 +
+STACK CFI 10900 .cfa: $rsp 16 +
+STACK CFI INIT 10910 178 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10912 $r15: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 10917 $r14: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 10919 $r13: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 1091b $r12: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI 1091c $rbp: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI 1091d $rbx: .cfa -56 + ^ .cfa: $rsp 56 +
+STACK CFI 10921 .cfa: $rsp 112 +
+STACK CFI 10a72 .cfa: $rsp 56 +
+STACK CFI 10a73 .cfa: $rsp 48 +
+STACK CFI 10a74 .cfa: $rsp 40 +
+STACK CFI 10a76 .cfa: $rsp 32 +
+STACK CFI 10a78 .cfa: $rsp 24 +
+STACK CFI 10a7a .cfa: $rsp 16 +
+STACK CFI 10a7c .cfa: $rsp 8 +
+STACK CFI 10a7d .cfa: $rsp 112 +
+STACK CFI INIT 10a90 157 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10a92 $r15: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 10a9b $r14: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 10a9d $r13: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 10aa5 $r12: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI 10aaa $rbp: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI 10aab $rbx: .cfa -56 + ^ .cfa: $rsp 56 +
+STACK CFI 10ab5 .cfa: $rsp 112 +
+STACK CFI 10bdc .cfa: $rsp 56 +
+STACK CFI 10bdd .cfa: $rsp 48 +
+STACK CFI 10bde .cfa: $rsp 40 +
+STACK CFI 10be0 .cfa: $rsp 32 +
+STACK CFI 10be2 .cfa: $rsp 24 +
+STACK CFI 10be4 .cfa: $rsp 16 +
+STACK CFI 10be6 .cfa: $rsp 8 +
+STACK CFI INIT 10bf0 b0 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10bfa $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI 10c07 $r13: .cfa -24 + ^ $r14: .cfa -16 + ^
+STACK CFI 10c13 $r12: .cfa -32 + ^ .cfa: $rsp 64 +
+STACK CFI 10c9f .cfa: $rsp 8 +
+STACK CFI INIT 10ca0 194 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10ca2 $r15: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 10cac $r14: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 10cb1 $r13: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 10cb6 $r12: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI 10cb7 $rbp: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI 10cbe $rbx: .cfa -56 + ^ .cfa: $rsp 56 +
+STACK CFI 10cc8 .cfa: $rsp 112 +
+STACK CFI 10e1c .cfa: $rsp 56 +
+STACK CFI 10e20 .cfa: $rsp 48 +
+STACK CFI 10e21 .cfa: $rsp 40 +
+STACK CFI 10e23 .cfa: $rsp 32 +
+STACK CFI 10e25 .cfa: $rsp 24 +
+STACK CFI 10e27 .cfa: $rsp 16 +
+STACK CFI 10e29 .cfa: $rsp 8 +
+STACK CFI 10e30 .cfa: $rsp 112 +
+STACK CFI INIT 10e40 6b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10e44 .cfa: $rsp 16 +
+STACK CFI 10e7b .cfa: $rsp 8 +
+STACK CFI 10e80 .cfa: $rsp 16 +
+STACK CFI 10e87 .cfa: $rsp 8 +
+STACK CFI 10e90 .cfa: $rsp 16 +
+STACK CFI 10e97 .cfa: $rsp 8 +
+STACK CFI 10ea0 .cfa: $rsp 16 +
+STACK CFI INIT 10eb0 673 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 10eb2 $r15: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 10eb4 $r14: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 10eb6 $r13: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 10eb8 $r12: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI 10eb9 $rbp: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI 10eba $rbx: .cfa -56 + ^ .cfa: $rsp 56 +
+STACK CFI 10ec1 .cfa: $rsp 144 +
+STACK CFI 10f3e .cfa: $rsp 56 +
+STACK CFI 10f42 .cfa: $rsp 48 +
+STACK CFI 10f43 .cfa: $rsp 40 +
+STACK CFI 10f45 .cfa: $rsp 32 +
+STACK CFI 10f47 .cfa: $rsp 24 +
+STACK CFI 10f49 .cfa: $rsp 16 +
+STACK CFI 10f4b .cfa: $rsp 8 +
+STACK CFI 10f50 .cfa: $rsp 144 +
+STACK CFI INIT 11530 cf .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1153a $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI 11547 $r12: .cfa -32 + ^ $r13: .cfa -24 + ^
+STACK CFI 11553 $r14: .cfa -16 + ^ .cfa: $rsp 64 +
+STACK CFI 115fe .cfa: $rsp 8 +
+STACK CFI INIT 11600 4b3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 11602 $r15: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 11604 $r14: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 11606 $r13: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 11608 $r12: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI 11609 $rbp: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI 1160a $rbx: .cfa -56 + ^ .cfa: $rsp 56 +
+STACK CFI 11611 .cfa: $rsp 160 +
+STACK CFI 11703 .cfa: $rsp 56 +
+STACK CFI 11706 .cfa: $rsp 48 +
+STACK CFI 11707 .cfa: $rsp 40 +
+STACK CFI 11709 .cfa: $rsp 32 +
+STACK CFI 1170b .cfa: $rsp 24 +
+STACK CFI 1170d .cfa: $rsp 16 +
+STACK CFI 1170f .cfa: $rsp 8 +
+STACK CFI 11710 .cfa: $rsp 160 +
+STACK CFI INIT 11ac0 8a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 11b06 .cfa: $rsp 32 +
+STACK CFI 11b32 .cfa: $rsp 8 +
+STACK CFI INIT 11b50 9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 11b60 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 11b61 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 11b6b .cfa: $rsp 8 +
+STACK CFI 11b70 .cfa: $rsp 16 +
+STACK CFI 11b81 .cfa: $rsp 8 +
+STACK CFI INIT 11b90 72 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 11bab $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 11be9 .cfa: $rsp 8 +
+STACK CFI 11bee .cfa: $rsp 16 +
+STACK CFI 11bfd .cfa: $rsp 8 +
+STACK CFI INIT 11c10 9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 11c20 1a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 11c21 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 11c35 .cfa: $rsp 8 +
+STACK CFI INIT 11c40 113 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 11c42 $r12: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 11c46 $rbp: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 11c4a $rbx: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 11d03 .cfa: $rsp 24 +
+STACK CFI 11d04 .cfa: $rsp 16 +
+STACK CFI 11d06 .cfa: $rsp 8 +
+STACK CFI 11d10 .cfa: $rsp 32 +
+STACK CFI 11d26 .cfa: $rsp 24 +
+STACK CFI 11d27 .cfa: $rsp 16 +
+STACK CFI 11d29 .cfa: $rsp 8 +
+STACK CFI 11d30 .cfa: $rsp 32 +
+STACK CFI INIT 11d60 5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 11d70 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 11d84 .cfa: $rsp 16 +
+STACK CFI 11d8d .cfa: $rsp 8 +
+STACK CFI INIT 11da0 1f8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 11da2 $r14: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 11da4 $r13: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 11da9 $r12: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 11daa $rbp: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI 11dae $rbx: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI 11db2 .cfa: $rsp 112 +
+STACK CFI 11e7d .cfa: $rsp 48 +
+STACK CFI 11e81 .cfa: $rsp 40 +
+STACK CFI 11e82 .cfa: $rsp 32 +
+STACK CFI 11e84 .cfa: $rsp 24 +
+STACK CFI 11e86 .cfa: $rsp 16 +
+STACK CFI 11e88 .cfa: $rsp 8 +
+STACK CFI 11e89 .cfa: $rsp 112 +
+STACK CFI INIT 11fa0 7c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 11fa4 .cfa: $rsp 16 +
+STACK CFI 11fda .cfa: $rsp 8 +
+STACK CFI 11fe0 .cfa: $rsp 16 +
+STACK CFI 11ff7 .cfa: $rsp 8 +
+STACK CFI 12000 .cfa: $rsp 16 +
+STACK CFI 12007 .cfa: $rsp 8 +
+STACK CFI 12010 .cfa: $rsp 16 +
+STACK CFI 12017 .cfa: $rsp 8 +
+STACK CFI INIT 12020 13c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 12025 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 1207f .cfa: $rsp 8 +
+STACK CFI 12080 .cfa: $rsp 16 +
+STACK CFI 1215b .cfa: $rsp 8 +
+STACK CFI INIT 12160 242 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 12182 $r14: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 12187 $r13: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 1218c $r12: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 12190 $rbp: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI 12191 $rbx: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI 12195 .cfa: $rsp 128 +
+STACK CFI 12313 .cfa: $rsp 48 +
+STACK CFI 12314 $rbx: $rbx .cfa: $rsp 40 +
+STACK CFI 12315 $rbp: $rbp .cfa: $rsp 32 +
+STACK CFI 12317 $r12: $r12 .cfa: $rsp 24 +
+STACK CFI 12319 $r13: $r13 .cfa: $rsp 16 +
+STACK CFI 1231b $r14: $r14 .cfa: $rsp 8 +
+STACK CFI 12320 $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^ $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^ .cfa: $rsp 128 +
+STACK CFI INIT 123b0 25 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 123c2 .cfa: $rsp 16 +
+STACK CFI 123cf .cfa: $rsp 8 +
+STACK CFI 123d0 .cfa: $rsp 16 +
+STACK CFI INIT 2e70 6e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 2e71 $rbp: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 2e72 $rbx: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 2e76 .cfa: $rsp 32 +
+STACK CFI 2edb .cfa: $rsp 24 +
+STACK CFI 2edc .cfa: $rsp 16 +
+STACK CFI 2edd .cfa: $rsp 8 +
+STACK CFI INIT 123e0 40 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 123e2 $r12: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 123e3 $rbp: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 123e7 $rbx: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 12415 .cfa: $rsp 24 +
+STACK CFI 12419 .cfa: $rsp 16 +
+STACK CFI 1241b .cfa: $rsp 8 +
+STACK CFI INIT 12420 17f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1242a $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI 12440 $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^ .cfa: $rsp 48 +
+STACK CFI 1246f .cfa: $rsp 8 +
+STACK CFI 12470 .cfa: $rsp 48 +
+STACK CFI INIT 125a0 35 .cfa: $rsp 8 + .ra: .cfa -8 + ^
diff --git a/google-breakpad/src/processor/testdata/symbols/microdump/breakpad_unittests/D6D1FEC9A15DE7F38A236898871A2E770/breakpad_unittests.sym b/google-breakpad/src/processor/testdata/symbols/microdump/breakpad_unittests/D6D1FEC9A15DE7F38A236898871A2E770/breakpad_unittests.sym
new file mode 100644
index 0000000..ad38c2e
--- /dev/null
+++ b/google-breakpad/src/processor/testdata/symbols/microdump/breakpad_unittests/D6D1FEC9A15DE7F38A236898871A2E770/breakpad_unittests.sym
@@ -0,0 +1,82243 @@
+MODULE Linux arm64 D6D1FEC9A15DE7F38A236898871A2E770 breakpad_unittests
+FILE 0 /s/clank/src/out/Release/../../breakpad/src/client/linux/crash_generation/crash_generation_client.cc
+FILE 1 /s/clank/src/out/Release/../../breakpad/src/client/linux/dump_writer_common/seccomp_unwinder.cc
+FILE 2 /s/clank/src/out/Release/../../breakpad/src/client/linux/dump_writer_common/thread_info.cc
+FILE 3 /s/clank/src/out/Release/../../breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc
+FILE 4 /s/clank/src/out/Release/../../breakpad/src/client/linux/handler/exception_handler.cc
+FILE 5 /s/clank/src/out/Release/../../breakpad/src/client/linux/handler/exception_handler.h
+FILE 6 /s/clank/src/out/Release/../../breakpad/src/client/linux/handler/exception_handler_unittest.cc
+FILE 7 /s/clank/src/out/Release/../../breakpad/src/client/linux/handler/minidump_descriptor.cc
+FILE 8 /s/clank/src/out/Release/../../breakpad/src/client/linux/handler/minidump_descriptor.h
+FILE 9 /s/clank/src/out/Release/../../breakpad/src/client/linux/log/log.cc
+FILE 10 /s/clank/src/out/Release/../../breakpad/src/client/linux/microdump_writer/microdump_writer.cc
+FILE 11 /s/clank/src/out/Release/../../breakpad/src/client/linux/microdump_writer/microdump_writer_unittest.cc
+FILE 12 /s/clank/src/out/Release/../../breakpad/src/client/linux/minidump_writer/cpu_set.h
+FILE 13 /s/clank/src/out/Release/../../breakpad/src/client/linux/minidump_writer/cpu_set_unittest.cc
+FILE 14 /s/clank/src/out/Release/../../breakpad/src/client/linux/minidump_writer/directory_reader.h
+FILE 15 /s/clank/src/out/Release/../../breakpad/src/client/linux/minidump_writer/directory_reader_unittest.cc
+FILE 16 /s/clank/src/out/Release/../../breakpad/src/client/linux/minidump_writer/line_reader.h
+FILE 17 /s/clank/src/out/Release/../../breakpad/src/client/linux/minidump_writer/line_reader_unittest.cc
+FILE 18 /s/clank/src/out/Release/../../breakpad/src/client/linux/minidump_writer/linux_core_dumper.cc
+FILE 19 /s/clank/src/out/Release/../../breakpad/src/client/linux/minidump_writer/linux_core_dumper.h
+FILE 20 /s/clank/src/out/Release/../../breakpad/src/client/linux/minidump_writer/linux_core_dumper_unittest.cc
+FILE 21 /s/clank/src/out/Release/../../breakpad/src/client/linux/minidump_writer/linux_dumper.cc
+FILE 22 /s/clank/src/out/Release/../../breakpad/src/client/linux/minidump_writer/linux_dumper.h
+FILE 23 /s/clank/src/out/Release/../../breakpad/src/client/linux/minidump_writer/linux_ptrace_dumper.cc
+FILE 24 /s/clank/src/out/Release/../../breakpad/src/client/linux/minidump_writer/linux_ptrace_dumper.h
+FILE 25 /s/clank/src/out/Release/../../breakpad/src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc
+FILE 26 /s/clank/src/out/Release/../../breakpad/src/client/linux/minidump_writer/minidump_writer.cc
+FILE 27 /s/clank/src/out/Release/../../breakpad/src/client/linux/minidump_writer/minidump_writer_unittest.cc
+FILE 28 /s/clank/src/out/Release/../../breakpad/src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc
+FILE 29 /s/clank/src/out/Release/../../breakpad/src/client/linux/minidump_writer/proc_cpuinfo_reader.h
+FILE 30 /s/clank/src/out/Release/../../breakpad/src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc
+FILE 31 /s/clank/src/out/Release/../../breakpad/src/client/minidump_file_writer-inl.h
+FILE 32 /s/clank/src/out/Release/../../breakpad/src/client/minidump_file_writer.cc
+FILE 33 /s/clank/src/out/Release/../../breakpad/src/client/minidump_file_writer.h
+FILE 34 /s/clank/src/out/Release/../../breakpad/src/common/android/breakpad_getcontext_unittest.cc
+FILE 35 /s/clank/src/out/Release/../../breakpad/src/common/android/testing/mkdtemp.h
+FILE 36 /s/clank/src/out/Release/../../breakpad/src/common/android/testing/pthread_fixes.h
+FILE 37 /s/clank/src/out/Release/../../breakpad/src/common/convert_UTF.c
+FILE 38 /s/clank/src/out/Release/../../breakpad/src/common/linux/elf_core_dump.cc
+FILE 39 /s/clank/src/out/Release/../../breakpad/src/common/linux/elf_core_dump_unittest.cc
+FILE 40 /s/clank/src/out/Release/../../breakpad/src/common/linux/elfutils-inl.h
+FILE 41 /s/clank/src/out/Release/../../breakpad/src/common/linux/elfutils.cc
+FILE 42 /s/clank/src/out/Release/../../breakpad/src/common/linux/file_id.cc
+FILE 43 /s/clank/src/out/Release/../../breakpad/src/common/linux/file_id_unittest.cc
+FILE 44 /s/clank/src/out/Release/../../breakpad/src/common/linux/guid_creator.cc
+FILE 45 /s/clank/src/out/Release/../../breakpad/src/common/linux/linux_libc_support.cc
+FILE 46 /s/clank/src/out/Release/../../breakpad/src/common/linux/linux_libc_support_unittest.cc
+FILE 47 /s/clank/src/out/Release/../../breakpad/src/common/linux/memory_mapped_file.cc
+FILE 48 /s/clank/src/out/Release/../../breakpad/src/common/linux/safe_readlink.cc
+FILE 49 /s/clank/src/out/Release/../../breakpad/src/common/linux/safe_readlink.h
+FILE 50 /s/clank/src/out/Release/../../breakpad/src/common/linux/synth_elf.cc
+FILE 51 /s/clank/src/out/Release/../../breakpad/src/common/linux/synth_elf.h
+FILE 52 /s/clank/src/out/Release/../../breakpad/src/common/linux/tests/auto_testfile.h
+FILE 53 /s/clank/src/out/Release/../../breakpad/src/common/linux/tests/crash_generator.cc
+FILE 54 /s/clank/src/out/Release/../../breakpad/src/common/memory.h
+FILE 55 /s/clank/src/out/Release/../../breakpad/src/common/memory_range.h
+FILE 56 /s/clank/src/out/Release/../../breakpad/src/common/memory_unittest.cc
+FILE 57 /s/clank/src/out/Release/../../breakpad/src/common/scoped_ptr.h
+FILE 58 /s/clank/src/out/Release/../../breakpad/src/common/simple_string_dictionary.h
+FILE 59 /s/clank/src/out/Release/../../breakpad/src/common/simple_string_dictionary_unittest.cc
+FILE 60 /s/clank/src/out/Release/../../breakpad/src/common/string_conversion.cc
+FILE 61 /s/clank/src/out/Release/../../breakpad/src/common/test_assembler.cc
+FILE 62 /s/clank/src/out/Release/../../breakpad/src/common/test_assembler.h
+FILE 63 /s/clank/src/out/Release/../../breakpad/src/common/tests/auto_tempdir.h
+FILE 64 /s/clank/src/out/Release/../../breakpad/src/common/tests/file_utils.cc
+FILE 65 /s/clank/src/out/Release/../../breakpad/src/google_breakpad/processor/minidump.h
+FILE 66 /s/clank/src/out/Release/../../breakpad/src/processor/basic_code_module.h
+FILE 67 /s/clank/src/out/Release/../../breakpad/src/processor/basic_code_modules.cc
+FILE 68 /s/clank/src/out/Release/../../breakpad/src/processor/dump_context.cc
+FILE 69 /s/clank/src/out/Release/../../breakpad/src/processor/dump_object.cc
+FILE 70 /s/clank/src/out/Release/../../breakpad/src/processor/linked_ptr.h
+FILE 71 /s/clank/src/out/Release/../../breakpad/src/processor/logging.cc
+FILE 72 /s/clank/src/out/Release/../../breakpad/src/processor/logging.h
+FILE 73 /s/clank/src/out/Release/../../breakpad/src/processor/minidump.cc
+FILE 74 /s/clank/src/out/Release/../../breakpad/src/processor/pathname_stripper.cc
+FILE 75 /s/clank/src/out/Release/../../breakpad/src/processor/range_map-inl.h
+FILE 76 /s/clank/src/out/Release/../../breakpad/src/processor/range_map.h
+FILE 77 /s/clank/src/out/Release/../../breakpad/src/tools/linux/md2core/minidump_memory_range.h
+FILE 78 /s/clank/src/out/Release/../../breakpad/src/tools/linux/md2core/minidump_memory_range_unittest.cc
+FILE 79 /s/clank/src/out/Release/../../testing/gtest/include/gtest/gtest-message.h
+FILE 80 /s/clank/src/out/Release/../../testing/gtest/include/gtest/gtest-printers.h
+FILE 81 /s/clank/src/out/Release/../../testing/gtest/include/gtest/gtest-test-part.h
+FILE 82 /s/clank/src/out/Release/../../testing/gtest/include/gtest/gtest.h
+FILE 83 /s/clank/src/out/Release/../../testing/gtest/include/gtest/internal/gtest-death-test-internal.h
+FILE 84 /s/clank/src/out/Release/../../testing/gtest/include/gtest/internal/gtest-filepath.h
+FILE 85 /s/clank/src/out/Release/../../testing/gtest/include/gtest/internal/gtest-internal.h
+FILE 86 /s/clank/src/out/Release/../../testing/gtest/include/gtest/internal/gtest-param-util.h
+FILE 87 /s/clank/src/out/Release/../../testing/gtest/include/gtest/internal/gtest-port.h
+FILE 88 /s/clank/src/out/Release/../../testing/gtest/include/gtest/internal/gtest-type-util.h
+FILE 89 /s/clank/src/out/Release/../../testing/gtest/src/gtest-death-test.cc
+FILE 90 /s/clank/src/out/Release/../../testing/gtest/src/gtest-filepath.cc
+FILE 91 /s/clank/src/out/Release/../../testing/gtest/src/gtest-internal-inl.h
+FILE 92 /s/clank/src/out/Release/../../testing/gtest/src/gtest-port.cc
+FILE 93 /s/clank/src/out/Release/../../testing/gtest/src/gtest-printers.cc
+FILE 94 /s/clank/src/out/Release/../../testing/gtest/src/gtest-test-part.cc
+FILE 95 /s/clank/src/out/Release/../../testing/gtest/src/gtest.cc
+FILE 96 /s/clank/src/out/Release/../../testing/gtest/src/gtest_main.cc
+FILE 97 /s/clank/src/out/Release/../../third_party/lss/linux_syscall_support.h
+FILE 98 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_algo.h
+FILE 99 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_algobase.c
+FILE 100 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_algobase.h
+FILE 101 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_alloc.h
+FILE 102 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_codecvt.h
+FILE 103 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_construct.h
+FILE 104 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_fstream.c
+FILE 105 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_fstream.h
+FILE 106 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_function_base.h
+FILE 107 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_iomanip.h
+FILE 108 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_ios.c
+FILE 109 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_ios.h
+FILE 110 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_ios_base.h
+FILE 111 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_istream.c
+FILE 112 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_istream.h
+FILE 113 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_iterator.h
+FILE 114 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_iterator_base.h
+FILE 115 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_list.c
+FILE 116 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_list.h
+FILE 117 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_locale.h
+FILE 118 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_map.h
+FILE 119 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_new.h
+FILE 120 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_num_put.h
+FILE 121 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_ostream.c
+FILE 122 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_ostream.h
+FILE 123 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_ostreambuf_iterator.h
+FILE 124 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_pair.h
+FILE 125 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_relops_cont.h
+FILE 126 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_sstream.c
+FILE 127 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_sstream.h
+FILE 128 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_streambuf.c
+FILE 129 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_streambuf.h
+FILE 130 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_string.c
+FILE 131 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_string.h
+FILE 132 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_string_base.h
+FILE 133 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_string_io.c
+FILE 134 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_string_operators.h
+FILE 135 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_tree.c
+FILE 136 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_tree.h
+FILE 137 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_uninitialized.h
+FILE 138 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_vector.c
+FILE 139 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_vector.h
+FILE 140 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/char_traits.h
+FILE 141 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/pointers/_list.h
+FILE 142 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/pointers/_set.h
+FILE 143 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/pointers/_vector.h
+FILE 144 /s/ndk-andrewhsieh/build/toolchain/gcc-4.9/aarch64-linux-android/libgcc/./gthr-default.h
+FILE 145 /s/ndk-andrewhsieh/build/toolchain/gcc-4.9/aarch64-linux-android/libgcc/./md-unwind-support.h
+FILE 146 /s/ndk-toolchain/src/build/../gcc/gcc-4.9/libgcc/config/aarch64/sfp-exceptions.c
+FILE 147 /s/ndk-toolchain/src/build/../gcc/gcc-4.9/libgcc/libgcc2.c
+FILE 148 /s/ndk-toolchain/src/build/../gcc/gcc-4.9/libgcc/soft-fp/addtf3.c
+FILE 149 /s/ndk-toolchain/src/build/../gcc/gcc-4.9/libgcc/soft-fp/eqtf2.c
+FILE 150 /s/ndk-toolchain/src/build/../gcc/gcc-4.9/libgcc/soft-fp/floatsitf.c
+FILE 151 /s/ndk-toolchain/src/build/../gcc/gcc-4.9/libgcc/soft-fp/getf2.c
+FILE 152 /s/ndk-toolchain/src/build/../gcc/gcc-4.9/libgcc/soft-fp/multf3.c
+FILE 153 /s/ndk-toolchain/src/build/../gcc/gcc-4.9/libgcc/unwind-dw2-fde-dip.c
+FILE 154 /s/ndk-toolchain/src/build/../gcc/gcc-4.9/libgcc/unwind-dw2-fde.c
+FILE 155 /s/ndk-toolchain/src/build/../gcc/gcc-4.9/libgcc/unwind-dw2-fde.h
+FILE 156 /s/ndk-toolchain/src/build/../gcc/gcc-4.9/libgcc/unwind-dw2.c
+FILE 157 /s/ndk-toolchain/src/build/../gcc/gcc-4.9/libgcc/unwind-pe.h
+FILE 158 /s/ndk-toolchain/src/build/../gcc/gcc-4.9/libgcc/unwind.inc
+FILE 159 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/gabi++/src/call_unexpected.cc
+FILE 160 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/gabi++/src/class_type_info.cc
+FILE 161 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/gabi++/src/cxxabi.cc
+FILE 162 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/gabi++/src/cxxabi_defines.h
+FILE 163 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/gabi++/src/delete.cc
+FILE 164 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/gabi++/src/dwarf_helper.cc
+FILE 165 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/gabi++/src/dynamic_cast.cc
+FILE 166 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/gabi++/src/exception.cc
+FILE 167 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/gabi++/src/fatal_error.cc
+FILE 168 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/gabi++/src/helper_func_internal.cc
+FILE 169 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/gabi++/src/new.cc
+FILE 170 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/gabi++/src/one_time_construction.cc
+FILE 171 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/gabi++/src/personality.cc
+FILE 172 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/gabi++/src/si_class_type_info.cc
+FILE 173 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/gabi++/src/terminate.cc
+FILE 174 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/gabi++/src/type_info.cc
+FILE 175 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/gabi++/src/vmi_class_type_info.cc
+FILE 176 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/src/allocators.cpp
+FILE 177 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/src/c_locale_dummy/c_locale_dummy.c
+FILE 178 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/src/codecvt.cpp
+FILE 179 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/src/collate.cpp
+FILE 180 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/src/ctype.cpp
+FILE 181 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/src/details/fstream_unistd.cpp
+FILE 182 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/src/dll_main.cpp
+FILE 183 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/src/fstream.cpp
+FILE 184 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/src/ios.cpp
+FILE 185 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/src/iostream.cpp
+FILE 186 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/src/locale.cpp
+FILE 187 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/src/locale_impl.cpp
+FILE 188 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/src/locale_impl.h
+FILE 189 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/src/messages.cpp
+FILE 190 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/src/monetary.cpp
+FILE 191 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/src/num_get.cpp
+FILE 192 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/src/num_get_float.cpp
+FILE 193 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/src/num_put.cpp
+FILE 194 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/src/num_put_float.cpp
+FILE 195 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/src/numpunct.cpp
+FILE 196 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/src/stdio_streambuf.cpp
+FILE 197 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/src/stdio_streambuf.h
+FILE 198 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/src/time_facets.cpp
+FILE 199 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_algo.h
+FILE 200 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_algobase.c
+FILE 201 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_algobase.h
+FILE 202 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_alloc.h
+FILE 203 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_auto_ptr.h
+FILE 204 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_codecvt.h
+FILE 205 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_collate.h
+FILE 206 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_construct.h
+FILE 207 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_ctype.h
+FILE 208 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_fstream.c
+FILE 209 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_fstream.h
+FILE 210 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_ios.c
+FILE 211 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_ios.h
+FILE 212 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_ios_base.h
+FILE 213 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_iostream_string.h
+FILE 214 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_istream.h
+FILE 215 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_istreambuf_iterator.h
+FILE 216 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_iterator.h
+FILE 217 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_iterator_base.h
+FILE 218 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_limits.c
+FILE 219 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_locale.h
+FILE 220 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_messages_facets.h
+FILE 221 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_monetary.c
+FILE 222 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_monetary.h
+FILE 223 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_new.h
+FILE 224 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_num_get.c
+FILE 225 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_num_get.h
+FILE 226 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_num_put.c
+FILE 227 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_num_put.h
+FILE 228 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_numpunct.h
+FILE 229 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_ostream.c
+FILE 230 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_ostreambuf_iterator.h
+FILE 231 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_pair.h
+FILE 232 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_range_errors.c
+FILE 233 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_stdexcept.h
+FILE 234 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_stdexcept_base.c
+FILE 235 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_streambuf.c
+FILE 236 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_streambuf.h
+FILE 237 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_string.c
+FILE 238 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_string.h
+FILE 239 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_string_base.h
+FILE 240 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_string_operators.h
+FILE 241 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_threads.h
+FILE 242 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_time_facets.c
+FILE 243 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_time_facets.h
+FILE 244 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_uninitialized.h
+FILE 245 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_vector.c
+FILE 246 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_vector.h
+FILE 247 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/char_traits.h
+FUNC 20570 d8 0 testing::internal::ForkingDeathTest::Wait
+20570 4 799 89
+20574 4 806 89
+20578 8 799 89
+20580 10 806 89
+20590 4 806 89
+20594 4 806 89
+20598 10 806 89
+205a8 4 806 89
+205ac 4 806 89
+205b0 10 806 89
+205c0 4 806 89
+205c4 4 806 89
+205c8 10 806 89
+205d8 10 806 89
+205e8 c 806 89
+205f4 4 806 89
+205f8 4 806 89
+205fc 10 806 89
+2060c 4 806 89
+20610 4 806 89
+20614 10 806 89
+20624 4 806 89
+20628 4 806 89
+2062c 14 806 89
+20640 8 806 89
+FUNC 20648 44 0 sys_close
+20648 10 2979 97
+20658 14 2979 97
+2066c 4 2979 97
+20670 4 2979 97
+20674 8 2979 97
+2067c 10 2979 97
+FUNC 2068c 16c 0 MinidumpWriter::WriteFile
+2068c 10 1101 26
+2069c 4 1102 26
+206a0 c 1101 26
+206ac 4 1101 26
+206b0 8 1102 26
+206b8 4 1103 26
+206bc 8 1104 26
+206c4 4 100 22
+206c8 4 772 26
+206cc 4 1118 26
+206d0 4 1122 26
+206d4 c 772 26
+206e0 4 1115 26
+206e4 8 1116 26
+206ec 18 1122 26
+20704 8 1123 26
+2070c 4 1123 26
+20710 10 1123 26
+20720 8 1125 26
+20728 8 1137 26
+20730 4 1139 26
+20734 4 1142 26
+20738 8 161 33
+20740 4 1143 26
+20744 8 161 33
+2074c 4 1143 26
+20750 4 161 33
+20754 10 1143 26
+20764 8 1150 26
+2076c 10 1155 26
+2077c 8 1156 26
+20784 4 1145 26
+20788 4 1145 26
+2078c 8 176 33
+20794 8 1158 26
+2079c 4 1159 26
+207a0 4 1129 26
+207a4 4 1128 26
+207a8 8 1129 26
+207b0 8 1130 26
+207b8 4 100 22
+207bc c 772 26
+207c8 4 1131 26
+207cc 8 1133 26
+207d4 8 1134 26
+207dc 1c 1160 26
+FUNC 207f8 5c 0 MinidumpWriter::WriteProcFile
+207f8 10 1212 26
+20808 8 1212 26
+20810 20 1215 26
+20830 14 1217 26
+20844 10 1218 26
+FUNC 20854 1c 0 std::allocator<std::locale::facet*>::deallocate
+20854 4 319 202
+20858 4 323 202
+2085c 8 161 202
+20864 4 135 223
+20868 4 161 202
+2086c 4 325 202
+FUNC 20870 14 0 std::priv::_String_base<char, std::allocator<char> >::_M_throw_length_error
+20870 4 599 237
+20874 4 600 237
+20878 4 599 237
+2087c 4 600 237
+20880 4 600 237
+FUNC 20884 14 0 std::priv::_String_base<char, std::priv::__iostring_allocator<char> >::_M_throw_length_error
+20884 4 599 237
+20888 4 600 237
+2088c 4 599 237
+20890 4 600 237
+20894 4 600 237
+FUNC 20898 1c 0 std::allocator<wchar_t>::deallocate
+20898 4 319 202
+2089c 4 323 202
+208a0 8 161 202
+208a8 4 135 223
+208ac 4 161 202
+208b0 4 325 202
+FUNC 208b4 28 0 __cxxabiv1::::terminate_helper
+208b4 8 116 159
+208bc 4 118 159
+208c0 4 119 159
+208c4 4 120 159
+208c8 8 121 159
+208d0 c 120 159
+FUNC 208dc 18 0 std::allocator<char>::deallocate
+208dc 4 319 202
+208e0 8 161 202
+208e8 4 135 223
+208ec 4 161 202
+208f0 4 325 202
+FUNC 208f4 858 0 _GLOBAL__sub_I__ZN40ExceptionHandlerTest_SimpleWithPath_Test10test_info_E
+208f4 10 1191 6
+20904 8 160 6
+2090c 4 160 6
+20910 8 160 6
+20918 4 160 6
+2091c 4 160 6
+20920 4 484 85
+20924 14 160 6
+20938 4 484 85
+2093c 4 160 6
+20940 8 160 6
+20948 8 484 85
+20950 14 160 6
+20964 8 160 6
+2096c 8 170 6
+20974 c 170 6
+20980 4 484 85
+20984 14 170 6
+20998 c 484 85
+209a4 10 170 6
+209b4 8 170 6
+209bc 8 253 6
+209c4 c 253 6
+209d0 4 484 85
+209d4 14 253 6
+209e8 c 484 85
+209f4 10 253 6
+20a04 8 253 6
+20a0c 8 257 6
+20a14 c 257 6
+20a20 4 484 85
+20a24 14 257 6
+20a38 c 484 85
+20a44 10 257 6
+20a54 8 257 6
+20a5c 8 315 6
+20a64 c 315 6
+20a70 4 484 85
+20a74 14 315 6
+20a88 c 484 85
+20a94 10 315 6
+20aa4 8 315 6
+20aac 8 327 6
+20ab4 c 327 6
+20ac0 4 484 85
+20ac4 14 327 6
+20ad8 c 484 85
+20ae4 10 327 6
+20af4 8 327 6
+20afc 8 339 6
+20b04 c 339 6
+20b10 4 484 85
+20b14 14 339 6
+20b28 c 484 85
+20b34 10 339 6
+20b44 8 339 6
+20b4c 8 351 6
+20b54 c 351 6
+20b60 4 484 85
+20b64 14 351 6
+20b78 c 484 85
+20b84 10 351 6
+20b94 8 351 6
+20b9c 8 363 6
+20ba4 c 363 6
+20bb0 4 484 85
+20bb4 14 363 6
+20bc8 c 484 85
+20bd4 10 363 6
+20be4 8 363 6
+20bec 8 380 6
+20bf4 c 380 6
+20c00 4 484 85
+20c04 14 380 6
+20c18 c 484 85
+20c24 10 380 6
+20c34 8 380 6
+20c3c 8 409 6
+20c44 c 409 6
+20c50 4 484 85
+20c54 14 409 6
+20c68 c 484 85
+20c74 10 409 6
+20c84 8 409 6
+20c8c 8 425 6
+20c94 c 425 6
+20ca0 4 484 85
+20ca4 14 425 6
+20cb8 c 484 85
+20cc4 10 425 6
+20cd4 8 425 6
+20cdc 8 441 6
+20ce4 c 441 6
+20cf0 4 484 85
+20cf4 14 441 6
+20d08 c 484 85
+20d14 10 441 6
+20d24 8 441 6
+20d2c 8 457 6
+20d34 c 457 6
+20d40 4 484 85
+20d44 14 457 6
+20d58 c 484 85
+20d64 10 457 6
+20d74 8 457 6
+20d7c 8 487 6
+20d84 c 487 6
+20d90 4 484 85
+20d94 14 487 6
+20da8 c 484 85
+20db4 10 487 6
+20dc4 8 487 6
+20dcc 8 579 6
+20dd4 c 579 6
+20de0 4 484 85
+20de4 14 579 6
+20df8 c 484 85
+20e04 10 579 6
+20e14 8 579 6
+20e1c 8 667 6
+20e24 c 667 6
+20e30 4 484 85
+20e34 14 667 6
+20e48 c 484 85
+20e54 10 667 6
+20e64 8 667 6
+20e6c 8 760 6
+20e74 c 760 6
+20e80 4 484 85
+20e84 14 760 6
+20e98 c 484 85
+20ea4 10 760 6
+20eb4 8 760 6
+20ebc 8 806 6
+20ec4 c 806 6
+20ed0 4 484 85
+20ed4 14 806 6
+20ee8 c 484 85
+20ef4 10 806 6
+20f04 8 806 6
+20f0c 8 926 6
+20f14 c 926 6
+20f20 4 484 85
+20f24 14 926 6
+20f38 c 484 85
+20f44 10 926 6
+20f54 8 926 6
+20f5c 8 1000 6
+20f64 c 1000 6
+20f70 4 484 85
+20f74 14 1000 6
+20f88 c 484 85
+20f94 10 1000 6
+20fa4 8 1000 6
+20fac 8 1019 6
+20fb4 c 1019 6
+20fc0 4 484 85
+20fc4 14 1019 6
+20fd8 c 484 85
+20fe4 10 1019 6
+20ff4 8 1019 6
+20ffc 8 1036 6
+21004 c 1036 6
+21010 4 484 85
+21014 14 1036 6
+21028 c 484 85
+21034 10 1036 6
+21044 8 1036 6
+2104c 8 1068 6
+21054 c 1068 6
+21060 4 484 85
+21064 14 1068 6
+21078 c 484 85
+21084 10 1068 6
+21094 8 1068 6
+2109c 8 1112 6
+210a4 c 1112 6
+210b0 4 484 85
+210b4 14 1112 6
+210c8 c 484 85
+210d4 10 1112 6
+210e4 8 1112 6
+210ec 8 1154 6
+210f4 c 1154 6
+21100 4 484 85
+21104 14 1154 6
+21118 c 484 85
+21124 10 1154 6
+21134 4 1191 6
+21138 4 1154 6
+2113c 8 1191 6
+21144 4 1154 6
+21148 4 1191 6
+FUNC 2114c 6c 0 _GLOBAL__sub_I_microdump_writer_unittest.cc
+2114c 8 132 11
+21154 8 56 11
+2115c c 56 11
+21168 4 484 85
+2116c 4 56 11
+21170 4 484 85
+21174 4 56 11
+21178 4 484 85
+2117c 4 56 11
+21180 4 484 85
+21184 24 56 11
+211a8 4 56 11
+211ac 4 132 11
+211b0 4 56 11
+211b4 4 132 11
+FUNC 211b8 358 0 _GLOBAL__sub_I__ZN26CpuSetTest_EmptyCount_Test10test_info_E
+211b8 10 163 13
+211c8 8 58 13
+211d0 4 58 13
+211d4 8 58 13
+211dc 4 58 13
+211e0 4 58 13
+211e4 4 484 85
+211e8 14 58 13
+211fc 4 484 85
+21200 4 58 13
+21204 8 58 13
+2120c 8 484 85
+21214 14 58 13
+21228 8 58 13
+21230 8 63 13
+21238 c 63 13
+21244 4 484 85
+21248 14 63 13
+2125c c 484 85
+21268 10 63 13
+21278 8 63 13
+21280 8 72 13
+21288 c 72 13
+21294 4 484 85
+21298 14 72 13
+212ac c 484 85
+212b8 10 72 13
+212c8 8 72 13
+212d0 8 81 13
+212d8 c 81 13
+212e4 4 484 85
+212e8 14 81 13
+212fc c 484 85
+21308 10 81 13
+21318 8 81 13
+21320 8 90 13
+21328 c 90 13
+21334 4 484 85
+21338 14 90 13
+2134c c 484 85
+21358 10 90 13
+21368 8 90 13
+21370 8 99 13
+21378 c 99 13
+21384 4 484 85
+21388 14 99 13
+2139c c 484 85
+213a8 10 99 13
+213b8 8 99 13
+213c0 8 108 13
+213c8 c 108 13
+213d4 4 484 85
+213d8 14 108 13
+213ec c 484 85
+213f8 10 108 13
+21408 8 108 13
+21410 8 117 13
+21418 c 117 13
+21424 4 484 85
+21428 14 117 13
+2143c c 484 85
+21448 10 117 13
+21458 8 117 13
+21460 8 135 13
+21468 c 135 13
+21474 4 484 85
+21478 14 135 13
+2148c c 484 85
+21498 10 135 13
+214a8 8 135 13
+214b0 8 146 13
+214b8 c 146 13
+214c4 4 484 85
+214c8 14 146 13
+214dc c 484 85
+214e8 10 146 13
+214f8 4 163 13
+214fc 4 146 13
+21500 8 163 13
+21508 4 146 13
+2150c 4 163 13
+FUNC 21510 6c 0 _GLOBAL__sub_I__ZN39DirectoryReaderTest_CompareResults_Test10test_info_E
+21510 8 78 15
+21518 8 47 15
+21520 c 47 15
+2152c 4 484 85
+21530 14 47 15
+21544 4 484 85
+21548 8 47 15
+21550 8 484 85
+21558 14 47 15
+2156c 4 47 15
+21570 4 78 15
+21574 4 47 15
+21578 4 78 15
+FUNC 2157c 268 0 _GLOBAL__sub_I__ZN29LineReaderTest_EmptyFile_Test10test_info_E
+2157c 10 169 17
+2158c 8 57 17
+21594 4 57 17
+21598 8 57 17
+215a0 4 57 17
+215a4 4 57 17
+215a8 4 484 85
+215ac 14 57 17
+215c0 4 484 85
+215c4 4 57 17
+215c8 8 57 17
+215d0 8 484 85
+215d8 14 57 17
+215ec 8 57 17
+215f4 8 67 17
+215fc c 67 17
+21608 4 484 85
+2160c 14 67 17
+21620 c 484 85
+2162c 10 67 17
+2163c 8 67 17
+21644 8 83 17
+2164c c 83 17
+21658 4 484 85
+2165c 14 83 17
+21670 c 484 85
+2167c 10 83 17
+2168c 8 83 17
+21694 8 99 17
+2169c c 99 17
+216a8 4 484 85
+216ac 14 99 17
+216c0 c 484 85
+216cc 10 99 17
+216dc 8 99 17
+216e4 8 121 17
+216ec c 121 17
+216f8 4 484 85
+216fc 14 121 17
+21710 c 484 85
+2171c 10 121 17
+2172c 8 121 17
+21734 8 143 17
+2173c c 143 17
+21748 4 484 85
+2174c 14 143 17
+21760 c 484 85
+2176c 10 143 17
+2177c 8 143 17
+21784 8 158 17
+2178c c 158 17
+21798 4 484 85
+2179c 14 158 17
+217b0 c 484 85
+217bc 10 158 17
+217cc 4 169 17
+217d0 4 158 17
+217d4 8 169 17
+217dc 4 158 17
+217e0 4 169 17
+FUNC 217e4 d8 0 _GLOBAL__sub_I__ZN38LinuxCoreDumperTest_BuildProcPath_Test10test_info_E
+217e4 10 118 20
+217f4 8 42 20
+217fc 4 42 20
+21800 8 42 20
+21808 4 42 20
+2180c 4 42 20
+21810 4 484 85
+21814 14 42 20
+21828 4 484 85
+2182c 4 42 20
+21830 8 42 20
+21838 8 484 85
+21840 14 42 20
+21854 8 42 20
+2185c 8 65 20
+21864 c 65 20
+21870 4 484 85
+21874 14 65 20
+21888 c 484 85
+21894 10 65 20
+218a4 4 118 20
+218a8 4 65 20
+218ac 8 118 20
+218b4 4 65 20
+218b8 4 118 20
+FUNC 218bc 2dc 0 _GLOBAL__sub_I__ZN37LinuxPtraceDumperChildTest_Setup_Test10test_info_E
+218bc 4 463 25
+218c0 4 121 25
+218c4 c 463 25
+218d0 4 121 25
+218d4 4 121 25
+218d8 4 484 85
+218dc 14 121 25
+218f0 4 484 85
+218f4 c 121 25
+21900 8 484 85
+21908 4 121 25
+2190c 4 121 25
+21910 1c 121 25
+2192c 8 121 25
+21934 c 125 25
+21940 4 484 85
+21944 14 125 25
+21958 c 484 85
+21964 10 125 25
+21974 8 125 25
+2197c c 134 25
+21988 4 484 85
+2198c 14 134 25
+219a0 c 484 85
+219ac 10 134 25
+219bc 8 134 25
+219c4 c 226 25
+219d0 4 484 85
+219d4 14 226 25
+219e8 c 484 85
+219f4 18 226 25
+21a0c 8 226 25
+21a14 c 246 25
+21a20 4 484 85
+21a24 14 246 25
+21a38 c 484 85
+21a44 10 246 25
+21a54 8 246 25
+21a5c c 271 25
+21a68 4 484 85
+21a6c 14 271 25
+21a80 c 484 85
+21a8c 10 271 25
+21a9c 8 271 25
+21aa4 c 295 25
+21ab0 4 484 85
+21ab4 14 295 25
+21ac8 c 484 85
+21ad4 10 295 25
+21ae4 8 295 25
+21aec c 325 25
+21af8 4 484 85
+21afc 14 325 25
+21b10 c 484 85
+21b1c 10 325 25
+21b2c 8 325 25
+21b34 8 364 25
+21b3c c 364 25
+21b48 4 484 85
+21b4c 14 364 25
+21b60 c 484 85
+21b6c 14 364 25
+21b80 4 364 25
+21b84 8 463 25
+21b8c 4 364 25
+21b90 8 463 25
+FUNC 21b98 2b8 0 _GLOBAL__sub_I_minidump_writer_unittest.cc
+21b98 10 756 27
+21ba8 8 67 27
+21bb0 4 67 27
+21bb4 8 67 27
+21bbc 4 67 27
+21bc0 4 67 27
+21bc4 4 484 85
+21bc8 4 67 27
+21bcc 4 484 85
+21bd0 4 67 27
+21bd4 4 484 85
+21bd8 c 67 27
+21be4 4 484 85
+21be8 4 67 27
+21bec 4 67 27
+21bf0 18 67 27
+21c08 8 67 27
+21c10 8 96 27
+21c18 c 96 27
+21c24 4 484 85
+21c28 4 96 27
+21c2c 4 484 85
+21c30 4 96 27
+21c34 8 484 85
+21c3c 1c 96 27
+21c58 8 96 27
+21c60 8 128 27
+21c68 c 128 27
+21c74 4 484 85
+21c78 4 128 27
+21c7c 4 484 85
+21c80 4 128 27
+21c84 8 484 85
+21c8c 1c 128 27
+21ca8 8 128 27
+21cb0 8 236 27
+21cb8 c 236 27
+21cc4 4 484 85
+21cc8 4 236 27
+21ccc 4 484 85
+21cd0 4 236 27
+21cd4 8 484 85
+21cdc 1c 236 27
+21cf8 8 236 27
+21d00 8 338 27
+21d08 c 338 27
+21d14 4 484 85
+21d18 4 338 27
+21d1c 4 484 85
+21d20 4 338 27
+21d24 8 484 85
+21d2c 1c 338 27
+21d48 8 338 27
+21d50 8 432 27
+21d58 c 432 27
+21d64 4 484 85
+21d68 4 432 27
+21d6c 4 484 85
+21d70 4 432 27
+21d74 8 484 85
+21d7c 1c 432 27
+21d98 8 432 27
+21da0 8 504 27
+21da8 c 504 27
+21db4 4 484 85
+21db8 4 504 27
+21dbc 4 484 85
+21dc0 4 504 27
+21dc4 8 484 85
+21dcc 1c 504 27
+21de8 8 504 27
+21df0 8 583 27
+21df8 c 583 27
+21e04 4 484 85
+21e08 4 583 27
+21e0c 4 484 85
+21e10 4 583 27
+21e14 8 484 85
+21e1c 1c 583 27
+21e38 4 756 27
+21e3c 4 583 27
+21e40 8 756 27
+21e48 4 583 27
+21e4c 4 756 27
+FUNC 21e50 358 0 _GLOBAL__sub_I__ZN36ProcCpuInfoReaderTest_EmptyFile_Test10test_info_E
+21e50 10 199 30
+21e60 8 63 30
+21e68 4 63 30
+21e6c 8 63 30
+21e74 4 63 30
+21e78 4 63 30
+21e7c 4 484 85
+21e80 14 63 30
+21e94 4 484 85
+21e98 4 63 30
+21e9c 8 63 30
+21ea4 8 484 85
+21eac 14 63 30
+21ec0 8 63 30
+21ec8 8 72 30
+21ed0 c 72 30
+21edc 4 484 85
+21ee0 14 72 30
+21ef4 c 484 85
+21f00 10 72 30
+21f10 8 72 30
+21f18 8 85 30
+21f20 c 85 30
+21f2c 4 484 85
+21f30 14 85 30
+21f44 c 484 85
+21f50 10 85 30
+21f60 8 85 30
+21f68 8 100 30
+21f70 c 100 30
+21f7c 4 484 85
+21f80 14 100 30
+21f94 c 484 85
+21fa0 10 100 30
+21fb0 8 100 30
+21fb8 8 117 30
+21fc0 c 117 30
+21fcc 4 484 85
+21fd0 14 117 30
+21fe4 c 484 85
+21ff0 10 117 30
+22000 8 117 30
+22008 8 130 30
+22010 c 130 30
+2201c 4 484 85
+22020 14 130 30
+22034 c 484 85
+22040 10 130 30
+22050 8 130 30
+22058 8 143 30
+22060 c 143 30
+2206c 4 484 85
+22070 14 143 30
+22084 c 484 85
+22090 10 143 30
+220a0 8 143 30
+220a8 8 156 30
+220b0 c 156 30
+220bc 4 484 85
+220c0 14 156 30
+220d4 c 484 85
+220e0 10 156 30
+220f0 8 156 30
+220f8 8 173 30
+22100 c 173 30
+2210c 4 484 85
+22110 14 173 30
+22124 c 484 85
+22130 10 173 30
+22140 8 173 30
+22148 8 186 30
+22150 c 186 30
+2215c 4 484 85
+22160 14 186 30
+22174 c 484 85
+22180 10 186 30
+22190 4 199 30
+22194 4 186 30
+22198 8 199 30
+221a0 4 186 30
+221a4 4 199 30
+FUNC 221a8 128 0 _GLOBAL__sub_I__ZN39ElfCoreDumpTest_DefaultConstructor_Test10test_info_E
+221a8 10 256 39
+221b8 8 52 39
+221c0 4 52 39
+221c4 8 52 39
+221cc 4 52 39
+221d0 4 52 39
+221d4 4 484 85
+221d8 14 52 39
+221ec 4 484 85
+221f0 4 52 39
+221f4 8 52 39
+221fc 8 484 85
+22204 14 52 39
+22218 8 52 39
+22220 8 62 39
+22228 c 62 39
+22234 4 484 85
+22238 14 62 39
+2224c c 484 85
+22258 10 62 39
+22268 8 62 39
+22270 8 130 39
+22278 c 130 39
+22284 4 484 85
+22288 14 130 39
+2229c c 484 85
+222a8 10 130 39
+222b8 4 256 39
+222bc 4 130 39
+222c0 8 256 39
+222c8 4 130 39
+222cc 4 256 39
+FUNC 222d0 a8 0 _GLOBAL__sub_I_gtest_FileIDTest_ElfClass_registered_
+222d0 4 263 43
+222d4 8 127 43
+222dc 8 263 43
+222e4 24 127 43
+22308 c 151 43
+22314 4 127 43
+22318 10 151 43
+22328 c 183 43
+22334 4 151 43
+22338 10 183 43
+22348 c 220 43
+22354 4 183 43
+22358 10 220 43
+22368 8 263 43
+22370 4 220 43
+22374 4 263 43
+FUNC 22378 358 0 _GLOBAL__sub_I__ZN32LinuxLibcSupportTest_strlen_Test10test_info_E
+22378 10 213 46
+22388 8 37 46
+22390 4 37 46
+22394 8 37 46
+2239c 4 37 46
+223a0 4 37 46
+223a4 4 484 85
+223a8 14 37 46
+223bc 4 484 85
+223c0 4 37 46
+223c4 8 37 46
+223cc 8 484 85
+223d4 14 37 46
+223e8 8 37 46
+223f0 8 46 46
+223f8 c 46 46
+22404 4 484 85
+22408 14 46 46
+2241c c 484 85
+22428 10 46 46
+22438 8 46 46
+22440 8 71 46
+22448 c 71 46
+22454 4 484 85
+22458 14 71 46
+2246c c 484 85
+22478 10 71 46
+22488 8 71 46
+22490 8 92 46
+22498 c 92 46
+224a4 4 484 85
+224a8 14 92 46
+224bc c 484 85
+224c8 10 92 46
+224d8 8 92 46
+224e0 8 106 46
+224e8 c 106 46
+224f4 4 484 85
+224f8 14 106 46
+2250c c 484 85
+22518 10 106 46
+22528 8 106 46
+22530 8 129 46
+22538 c 129 46
+22544 4 484 85
+22548 14 129 46
+2255c c 484 85
+22568 10 129 46
+22578 8 129 46
+22580 8 143 46
+22588 c 143 46
+22594 4 484 85
+22598 14 143 46
+225ac c 484 85
+225b8 10 143 46
+225c8 8 143 46
+225d0 8 157 46
+225d8 c 157 46
+225e4 4 484 85
+225e8 14 157 46
+225fc c 484 85
+22608 10 157 46
+22618 8 157 46
+22620 8 169 46
+22628 c 169 46
+22634 4 484 85
+22638 14 169 46
+2264c c 484 85
+22658 10 169 46
+22668 8 169 46
+22670 8 194 46
+22678 c 194 46
+22684 4 484 85
+22688 14 194 46
+2269c c 484 85
+226a8 10 194 46
+226b8 4 213 46
+226bc 4 194 46
+226c0 8 213 46
+226c8 4 194 46
+226cc 4 213 46
+FUNC 226d0 220 0 _GLOBAL__sub_I__ZN28PageAllocatorTest_Setup_Test10test_info_E
+226d0 10 97 56
+226e0 8 39 56
+226e8 4 39 56
+226ec c 39 56
+226f8 4 39 56
+226fc 4 39 56
+22700 4 484 85
+22704 14 39 56
+22718 4 484 85
+2271c 4 39 56
+22720 4 39 56
+22724 4 39 56
+22728 4 484 85
+2272c 8 39 56
+22734 4 484 85
+22738 c 39 56
+22744 8 39 56
+2274c 8 43 56
+22754 c 43 56
+22760 4 484 85
+22764 14 43 56
+22778 c 484 85
+22784 10 43 56
+22794 8 43 56
+2279c 8 53 56
+227a4 c 53 56
+227b0 4 484 85
+227b4 14 53 56
+227c8 c 484 85
+227d4 c 53 56
+227e0 8 69 56
+227e8 4 53 56
+227ec 8 53 56
+227f4 8 69 56
+227fc c 69 56
+22808 4 484 85
+2280c 10 69 56
+2281c c 484 85
+22828 10 69 56
+22838 8 69 56
+22840 8 76 56
+22848 c 76 56
+22854 4 484 85
+22858 14 76 56
+2286c c 484 85
+22878 10 76 56
+22888 8 76 56
+22890 8 91 56
+22898 c 91 56
+228a4 4 484 85
+228a8 14 91 56
+228bc c 484 85
+228c8 10 91 56
+228d8 4 91 56
+228dc 8 97 56
+228e4 4 91 56
+228e8 8 97 56
+FUNC 228f0 268 0 _GLOBAL__sub_I__ZN15google_breakpad31NonAllocatingMapTest_Entry_Test10test_info_E
+228f0 10 308 59
+22900 8 35 59
+22908 4 35 59
+2290c 8 35 59
+22914 4 35 59
+22918 4 35 59
+2291c 4 484 85
+22920 14 35 59
+22934 4 484 85
+22938 4 35 59
+2293c 8 35 59
+22944 8 484 85
+2294c 14 35 59
+22960 8 35 59
+22968 8 63 59
+22970 c 63 59
+2297c 4 484 85
+22980 14 63 59
+22994 c 484 85
+229a0 10 63 59
+229b0 8 63 59
+229b8 8 92 59
+229c0 c 92 59
+229cc 4 484 85
+229d0 14 92 59
+229e4 c 484 85
+229f0 10 92 59
+22a00 8 92 59
+22a08 8 127 59
+22a10 c 127 59
+22a1c 4 484 85
+22a20 14 127 59
+22a34 c 484 85
+22a40 10 127 59
+22a50 8 127 59
+22a58 8 228 59
+22a60 c 228 59
+22a6c 4 484 85
+22a70 14 228 59
+22a84 c 484 85
+22a90 10 228 59
+22aa0 8 228 59
+22aa8 8 253 59
+22ab0 c 253 59
+22abc 4 484 85
+22ac0 14 253 59
+22ad4 c 484 85
+22ae0 10 253 59
+22af0 8 253 59
+22af8 8 282 59
+22b00 c 282 59
+22b0c 4 484 85
+22b10 14 282 59
+22b24 c 484 85
+22b30 10 282 59
+22b40 4 308 59
+22b44 4 282 59
+22b48 8 308 59
+22b50 4 282 59
+22b54 4 308 59
+FUNC 22b58 3e8 0 _GLOBAL__sub_I__ZN47MinidumpMemoryRangeTest_DefaultConstructor_Test10test_info_E
+22b58 4 90 78
+22b5c 8 258 78
+22b64 c 90 78
+22b70 8 258 78
+22b78 4 78 78
+22b7c 4 80 78
+22b80 4 90 78
+22b84 4 95 78
+22b88 4 90 78
+22b8c 4 79 78
+22b90 4 90 78
+22b94 4 81 78
+22b98 4 90 78
+22b9c 4 82 78
+22ba0 4 90 78
+22ba4 4 95 78
+22ba8 4 90 78
+22bac 4 95 78
+22bb0 4 90 78
+22bb4 c 95 78
+22bc0 8 95 78
+22bc8 c 95 78
+22bd4 4 484 85
+22bd8 14 95 78
+22bec c 484 85
+22bf8 10 95 78
+22c08 8 95 78
+22c10 8 101 78
+22c18 c 101 78
+22c24 4 484 85
+22c28 14 101 78
+22c3c c 484 85
+22c48 10 101 78
+22c58 8 101 78
+22c60 8 107 78
+22c68 c 107 78
+22c74 4 484 85
+22c78 14 107 78
+22c8c c 484 85
+22c98 10 107 78
+22ca8 8 107 78
+22cb0 8 122 78
+22cb8 c 122 78
+22cc4 4 484 85
+22cc8 14 122 78
+22cdc c 484 85
+22ce8 10 122 78
+22cf8 8 122 78
+22d00 8 133 78
+22d08 c 133 78
+22d14 4 484 85
+22d18 14 133 78
+22d2c c 484 85
+22d38 10 133 78
+22d48 8 133 78
+22d50 8 140 78
+22d58 c 140 78
+22d64 4 484 85
+22d68 14 140 78
+22d7c c 484 85
+22d88 10 140 78
+22d98 8 140 78
+22da0 8 165 78
+22da8 c 165 78
+22db4 4 484 85
+22db8 14 165 78
+22dcc c 484 85
+22dd8 10 165 78
+22de8 8 165 78
+22df0 8 193 78
+22df8 c 193 78
+22e04 4 484 85
+22e08 14 193 78
+22e1c c 484 85
+22e28 10 193 78
+22e38 8 193 78
+22e40 8 201 78
+22e48 c 201 78
+22e54 4 484 85
+22e58 14 201 78
+22e6c c 484 85
+22e78 10 201 78
+22e88 8 201 78
+22e90 8 216 78
+22e98 c 216 78
+22ea4 4 484 85
+22ea8 14 216 78
+22ebc c 484 85
+22ec8 10 216 78
+22ed8 8 216 78
+22ee0 8 224 78
+22ee8 c 224 78
+22ef4 4 484 85
+22ef8 14 224 78
+22f0c c 484 85
+22f18 10 224 78
+22f28 4 258 78
+22f2c 4 224 78
+22f30 8 258 78
+22f38 4 224 78
+22f3c 4 258 78
+FUNC 22f40 d8 0 _GLOBAL__sub_I__ZN32AndroidUContext_GRegsOffset_Test10test_info_E
+22f40 10 186 34
+22f50 8 50 34
+22f58 4 50 34
+22f5c 8 50 34
+22f64 4 50 34
+22f68 4 50 34
+22f6c 4 484 85
+22f70 14 50 34
+22f84 4 484 85
+22f88 4 50 34
+22f8c 8 50 34
+22f94 8 484 85
+22f9c 14 50 34
+22fb0 8 50 34
+22fb8 8 183 34
+22fc0 c 183 34
+22fcc 4 484 85
+22fd0 14 183 34
+22fe4 c 484 85
+22ff0 10 183 34
+23000 4 186 34
+23004 4 183 34
+23008 8 186 34
+23010 4 183 34
+23014 4 186 34
+FUNC 23018 238 0 _GLOBAL__sub_I_gtest.cc
+23018 4 5291 95
+2301c 8 193 95
+23024 4 5291 95
+23028 4 193 95
+2302c c 5291 95
+23038 8 193 95
+23040 c 209 95
+2304c 8 209 95
+23054 4 193 95
+23058 c 198 95
+23064 8 209 95
+2306c 4 198 95
+23070 4 229 95
+23074 4 198 95
+23078 4 229 95
+2307c 4 198 95
+23080 18 203 95
+23098 18 209 95
+230b0 c 209 95
+230bc c 209 95
+230c8 8 217 95
+230d0 4 209 95
+230d4 18 217 95
+230ec c 217 95
+230f8 c 217 95
+23104 8 229 95
+2310c 4 217 95
+23110 14 229 95
+23124 c 229 95
+23130 10 229 95
+23140 18 241 95
+23158 18 247 95
+23170 18 253 95
+23188 18 264 95
+231a0 18 270 95
+231b8 c 276 95
+231c4 4 276 95
+231c8 4 276 95
+231cc 4 276 95
+231d0 4 276 95
+231d4 c 276 95
+231e0 c 276 95
+231ec 8 377 95
+231f4 4 276 95
+231f8 18 283 95
+23210 c 377 95
+2321c 10 377 95
+2322c 4 5291 95
+23230 c 608 95
+2323c 8 5291 95
+23244 4 608 95
+23248 8 5291 95
+FUNC 23250 e8 0 _GLOBAL__sub_I_gtest_death_test.cc
+23250 4 1346 89
+23254 8 85 89
+2325c 4 1346 89
+23260 4 85 89
+23264 4 85 89
+23268 4 1346 89
+2326c 4 85 89
+23270 4 85 89
+23274 4 1346 89
+23278 4 85 89
+2327c 4 85 89
+23280 4 85 89
+23284 4 85 89
+23288 8 85 89
+23290 8 85 89
+23298 4 85 89
+2329c 10 85 89
+232ac 8 107 89
+232b4 4 85 89
+232b8 14 94 89
+232cc 4 107 89
+232d0 4 94 89
+232d4 10 107 89
+232e4 4 107 89
+232e8 8 120 132
+232f0 c 107 89
+232fc 4 120 132
+23300 4 124 132
+23304 4 481 101
+23308 c 124 132
+23314 8 359 89
+2331c 4 101 103
+23320 8 359 89
+23328 10 1346 89
+FUNC 23338 28 0 _GLOBAL__sub_I_gtest_port.cc
+23338 4 67 139
+2333c 4 1057 92
+23340 4 67 139
+23344 4 1057 92
+23348 4 67 139
+2334c 4 1057 92
+23350 4 67 139
+23354 4 1057 92
+23358 4 481 101
+2335c 4 1057 92
+FUNC 23360 44 0 main
+23360 c 34 96
+2336c c 34 96
+23378 c 35 96
+23384 c 36 96
+23390 4 2326 82
+23394 4 2326 82
+23398 c 38 96
+FUNC 233a4 88 0 _GLOBAL__sub_I_cxxabi.cc
+233a4 4 463 161
+233a8 8 210 161
+233b0 4 463 161
+233b4 8 210 161
+233bc 4 463 161
+233c0 8 210 161
+233c8 c 104 161
+233d4 8 108 161
+233dc 4 104 161
+233e0 8 105 161
+233e8 8 106 161
+233f0 4 108 161
+233f4 4 109 161
+233f8 4 110 161
+233fc 4 260 161
+23400 4 463 161
+23404 c 260 161
+23410 4 463 161
+23414 c 260 161
+23420 c 211 161
+FUNC 2342c 38 0 _GLOBAL__sub_I_locale_impl.cpp
+2342c 4 764 187
+23430 4 621 187
+23434 4 764 187
+23438 8 621 187
+23440 8 621 187
+23448 c 621 187
+23454 4 764 187
+23458 c 621 187
+FUNC 23464 40 0 _GLOBAL__sub_I_allocators.cpp
+23464 4 1119 176
+23468 4 340 241
+2346c 8 1119 176
+23474 10 340 241
+23484 8 128 176
+2348c 4 1119 176
+23490 4 128 176
+23494 4 1119 176
+23498 c 128 176
+FUNC 2351c 4 0 testing::Test::SetUpTestCase
+2351c 4 389 82
+FUNC 23520 4 0 testing::Test::TearDownTestCase
+23520 4 397 82
+FUNC 23524 8 0 testing::Test::Setup
+23524 8 475 82
+FUNC 2352c 8 0 DoneCallbackReturnFalse
+2352c 8 267 6
+FUNC 23534 8 0 DoneCallbackReturnTrue
+23534 8 273 6
+FUNC 2353c 8 0 FilterCallbackReturnFalse
+2353c 8 284 6
+FUNC 23544 8 0 FilterCallbackReturnTrue
+23544 8 288 6
+FUNC 2354c 8 0 std::basic_streambuf<char, std::char_traits<char> >::overflow
+2354c 8 158 128
+FUNC 23554 4 0 std::basic_streambuf<char, std::char_traits<char> >::imbue
+23554 4 180 128
+FUNC 23558 8 0 std::basic_streambuf<char, std::char_traits<char> >::sync
+23558 8 184 128
+FUNC 23560 4 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_WriteMinidumpForChild_Test>::~TestFactoryImpl
+23560 4 484 85
+FUNC 23564 4 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_AdditionalMemoryRemove_Test>::~TestFactoryImpl
+23564 4 484 85
+FUNC 23568 4 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_AdditionalMemory_Test>::~TestFactoryImpl
+23568 4 484 85
+FUNC 2356c 4 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_GenerateMultipleDumpsWithPath_Test>::~TestFactoryImpl
+2356c 4 484 85
+FUNC 23570 4 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_GenerateMultipleDumpsWithFD_Test>::~TestFactoryImpl
+23570 4 484 85
+FUNC 23574 4 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_WriteMinidumpExceptionStream_Test>::~TestFactoryImpl
+23574 4 484 85
+FUNC 23578 4 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_ExternalDumper_Test>::~TestFactoryImpl
+23578 4 484 85
+FUNC 2357c 4 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_ModuleInfo_Test>::~TestFactoryImpl
+2357c 4 484 85
+FUNC 23580 4 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_InstructionPointerMemoryNullPointer_Test>::~TestFactoryImpl
+23580 4 484 85
+FUNC 23584 4 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_InstructionPointerMemoryMaxBound_Test>::~TestFactoryImpl
+23584 4 484 85
+FUNC 23588 4 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_InstructionPointerMemoryMinBound_Test>::~TestFactoryImpl
+23588 4 484 85
+FUNC 2358c 4 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_InstructionPointerMemory_Test>::~TestFactoryImpl
+2358c 4 484 85
+FUNC 23590 4 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_StackedHandlersUnhandledToBottom_Test>::~TestFactoryImpl
+23590 4 484 85
+FUNC 23594 4 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_StackedHandlersFilteredToBottom_Test>::~TestFactoryImpl
+23594 4 484 85
+FUNC 23598 4 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_StackedHandlersNotDeliveredToBottom_Test>::~TestFactoryImpl
+23598 4 484 85
+FUNC 2359c 4 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_StackedHandlersDeliveredToTop_Test>::~TestFactoryImpl
+2359c 4 484 85
+FUNC 235a0 4 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_RedeliveryOnBadSignalHandlerFlag_Test>::~TestFactoryImpl
+235a0 4 484 85
+FUNC 235a4 4 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_RedeliveryToDefaultHandler_Test>::~TestFactoryImpl
+235a4 4 484 85
+FUNC 235a8 4 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_NoRedeliveryOnFilterCallbackTrue_Test>::~TestFactoryImpl
+235a8 4 484 85
+FUNC 235ac 4 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_NoRedeliveryOnDoneCallbackTrue_Test>::~TestFactoryImpl
+235ac 4 484 85
+FUNC 235b0 4 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_RedeliveryOnDoneCallbackFalse_Test>::~TestFactoryImpl
+235b0 4 484 85
+FUNC 235b4 4 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_RedeliveryOnFilterCallbackFalse_Test>::~TestFactoryImpl
+235b4 4 484 85
+FUNC 235b8 4 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_ChildCrashWithFD_Test>::~TestFactoryImpl
+235b8 4 484 85
+FUNC 235bc 4 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_ChildCrashWithPath_Test>::~TestFactoryImpl
+235bc 4 484 85
+FUNC 235c0 4 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_SimpleWithFD_Test>::~TestFactoryImpl
+235c0 4 484 85
+FUNC 235c4 4 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_SimpleWithPath_Test>::~TestFactoryImpl
+235c4 4 484 85
+FUNC 235c8 8 0 std::basic_streambuf<char, std::char_traits<char> >::showmanyc
+235c8 8 176 128
+FUNC 235d0 1c 0 std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::underflow
+235d0 4 96 126
+235d4 4 99 126
+235d8 4 99 126
+235dc 8 99 126
+235e4 4 223 140
+235e8 4 100 126
+FUNC 235ec 24 0 std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::uflow
+235ec 4 105 126
+235f0 4 112 126
+235f4 c 106 126
+23600 4 223 140
+23604 4 91 129
+23608 8 113 126
+FUNC 23610 6c 0 std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::pbackfail
+23610 4 117 126
+23614 4 138 126
+23618 c 118 126
+23624 8 119 126
+2362c 4 120 126
+23630 4 220 140
+23634 8 120 126
+2363c c 91 129
+23648 4 124 126
+2364c 4 138 126
+23650 4 124 126
+23654 8 91 129
+2365c 4 126 126
+23660 8 127 126
+23668 4 91 129
+2366c 4 182 140
+23670 4 91 129
+23674 8 139 126
+FUNC 2367c 4 0 std::basic_streambuf<char, std::char_traits<char> >::setbuf
+2367c 4 200 128
+FUNC 23680 8 0 std::basic_streambuf<char, std::char_traits<char> >::underflow
+23680 8 171 128
+FUNC 23688 40 0 std::basic_streambuf<char, std::char_traits<char> >::uflow
+23688 c 162 128
+23694 4 162 128
+23698 c 163 128
+236a4 8 165 128
+236ac c 165 128
+236b8 4 223 140
+236bc c 166 128
+FUNC 236c8 8 0 std::basic_streambuf<char, std::char_traits<char> >::pbackfail
+236c8 8 152 128
+FUNC 236d0 4 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_SimpleWithPath_Test>::~TestFactoryImpl
+236d0 4 484 85
+FUNC 236d4 4 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_SimpleWithFD_Test>::~TestFactoryImpl
+236d4 4 484 85
+FUNC 236d8 4 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_ChildCrashWithPath_Test>::~TestFactoryImpl
+236d8 4 484 85
+FUNC 236dc 4 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_ChildCrashWithFD_Test>::~TestFactoryImpl
+236dc 4 484 85
+FUNC 236e0 4 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_RedeliveryOnFilterCallbackFalse_Test>::~TestFactoryImpl
+236e0 4 484 85
+FUNC 236e4 4 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_RedeliveryOnDoneCallbackFalse_Test>::~TestFactoryImpl
+236e4 4 484 85
+FUNC 236e8 4 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_NoRedeliveryOnDoneCallbackTrue_Test>::~TestFactoryImpl
+236e8 4 484 85
+FUNC 236ec 4 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_NoRedeliveryOnFilterCallbackTrue_Test>::~TestFactoryImpl
+236ec 4 484 85
+FUNC 236f0 4 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_RedeliveryToDefaultHandler_Test>::~TestFactoryImpl
+236f0 4 484 85
+FUNC 236f4 4 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_RedeliveryOnBadSignalHandlerFlag_Test>::~TestFactoryImpl
+236f4 4 484 85
+FUNC 236f8 4 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_StackedHandlersDeliveredToTop_Test>::~TestFactoryImpl
+236f8 4 484 85
+FUNC 236fc 4 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_StackedHandlersNotDeliveredToBottom_Test>::~TestFactoryImpl
+236fc 4 484 85
+FUNC 23700 4 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_StackedHandlersFilteredToBottom_Test>::~TestFactoryImpl
+23700 4 484 85
+FUNC 23704 4 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_StackedHandlersUnhandledToBottom_Test>::~TestFactoryImpl
+23704 4 484 85
+FUNC 23708 4 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_InstructionPointerMemory_Test>::~TestFactoryImpl
+23708 4 484 85
+FUNC 2370c 4 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_InstructionPointerMemoryMinBound_Test>::~TestFactoryImpl
+2370c 4 484 85
+FUNC 23710 4 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_InstructionPointerMemoryMaxBound_Test>::~TestFactoryImpl
+23710 4 484 85
+FUNC 23714 4 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_InstructionPointerMemoryNullPointer_Test>::~TestFactoryImpl
+23714 4 484 85
+FUNC 23718 4 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_ModuleInfo_Test>::~TestFactoryImpl
+23718 4 484 85
+FUNC 2371c 4 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_ExternalDumper_Test>::~TestFactoryImpl
+2371c 4 484 85
+FUNC 23720 4 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_WriteMinidumpExceptionStream_Test>::~TestFactoryImpl
+23720 4 484 85
+FUNC 23724 4 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_GenerateMultipleDumpsWithFD_Test>::~TestFactoryImpl
+23724 4 484 85
+FUNC 23728 4 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_GenerateMultipleDumpsWithPath_Test>::~TestFactoryImpl
+23728 4 484 85
+FUNC 2372c 4 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_AdditionalMemory_Test>::~TestFactoryImpl
+2372c 4 484 85
+FUNC 23730 4 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_AdditionalMemoryRemove_Test>::~TestFactoryImpl
+23730 4 484 85
+FUNC 23734 4 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_WriteMinidumpForChild_Test>::~TestFactoryImpl
+23734 4 484 85
+FUNC 23738 b4 0 std::basic_streambuf<char, std::char_traits<char> >::xsputn
+23738 14 84 128
+2374c c 84 128
+23758 4 86 128
+2375c 8 89 128
+23764 10 90 128
+23774 10 92 128
+23784 4 172 140
+23788 c 172 140
+23794 4 96 128
+23798 4 94 128
+2379c 4 95 128
+237a0 c 96 128
+237ac 4 100 128
+237b0 10 100 128
+237c0 8 99 128
+237c8 4 101 128
+237cc 8 102 128
+237d4 18 108 128
+FUNC 237ec a8 0 std::basic_streambuf<char, std::char_traits<char> >::_M_xsputnc
+237ec 14 112 128
+23800 c 112 128
+2380c 4 114 128
+23810 8 117 128
+23818 10 118 128
+23828 c 120 128
+23834 c 235 140
+23840 4 122 128
+23844 4 235 140
+23848 10 123 128
+23858 4 127 128
+2385c 10 127 128
+2386c 8 126 128
+23874 8 128 128
+2387c 18 133 128
+FUNC 23894 14 0 std::basic_streambuf<char, std::char_traits<char> >::~basic_streambuf
+23894 14 41 128
+FUNC 238a8 24 0 std::basic_streambuf<char, std::char_traits<char> >::~basic_streambuf
+238a8 c 40 128
+238b4 4 40 128
+238b8 4 41 128
+238bc 4 41 128
+238c0 8 41 128
+238c8 4 41 128
+FUNC 238cc 14 0 std::basic_ios<char, std::char_traits<char> >::~basic_ios
+238cc 14 59 109
+FUNC 238e0 24 0 std::basic_ios<char, std::char_traits<char> >::~basic_ios
+238e0 c 59 109
+238ec 8 59 109
+238f4 4 59 109
+238f8 8 59 109
+23900 4 59 109
+FUNC 23904 3c 0 InstallRaiseSIGKILL
+23904 4 297 6
+23908 4 300 6
+2390c 4 301 6
+23910 4 297 6
+23914 4 300 6
+23918 4 301 6
+2391c 4 299 6
+23920 4 300 6
+23924 4 301 6
+23928 4 299 6
+2392c 8 301 6
+23934 c 302 6
+FUNC 23940 8 0 RaiseSIGKILL
+23940 8 294 6
+FUNC 23948 1c 0 DoneCallbackRaiseSIGKILL
+23948 4 277 6
+2394c 4 278 6
+23950 4 277 6
+23954 4 278 6
+23958 c 280 6
+FUNC 23964 14 0 ExceptionHandlerTest_WriteMinidumpForChild_Test::~ExceptionHandlerTest_WriteMinidumpForChild_Test
+23964 14 1154 6
+FUNC 23978 24 0 ExceptionHandlerTest_WriteMinidumpForChild_Test::~ExceptionHandlerTest_WriteMinidumpForChild_Test
+23978 c 1154 6
+23984 8 1154 6
+2398c 4 1154 6
+23990 8 1154 6
+23998 4 1154 6
+FUNC 2399c 14 0 ExceptionHandlerTest_AdditionalMemoryRemove_Test::~ExceptionHandlerTest_AdditionalMemoryRemove_Test
+2399c 14 1112 6
+FUNC 239b0 24 0 ExceptionHandlerTest_AdditionalMemoryRemove_Test::~ExceptionHandlerTest_AdditionalMemoryRemove_Test
+239b0 c 1112 6
+239bc 8 1112 6
+239c4 4 1112 6
+239c8 8 1112 6
+239d0 4 1112 6
+FUNC 239d4 14 0 ExceptionHandlerTest_AdditionalMemory_Test::~ExceptionHandlerTest_AdditionalMemory_Test
+239d4 14 1068 6
+FUNC 239e8 24 0 ExceptionHandlerTest_AdditionalMemory_Test::~ExceptionHandlerTest_AdditionalMemory_Test
+239e8 c 1068 6
+239f4 8 1068 6
+239fc 4 1068 6
+23a00 8 1068 6
+23a08 4 1068 6
+FUNC 23a0c 14 0 ExceptionHandlerTest_GenerateMultipleDumpsWithPath_Test::~ExceptionHandlerTest_GenerateMultipleDumpsWithPath_Test
+23a0c 14 1036 6
+FUNC 23a20 24 0 ExceptionHandlerTest_GenerateMultipleDumpsWithPath_Test::~ExceptionHandlerTest_GenerateMultipleDumpsWithPath_Test
+23a20 c 1036 6
+23a2c 8 1036 6
+23a34 4 1036 6
+23a38 8 1036 6
+23a40 4 1036 6
+FUNC 23a44 14 0 ExceptionHandlerTest_GenerateMultipleDumpsWithFD_Test::~ExceptionHandlerTest_GenerateMultipleDumpsWithFD_Test
+23a44 14 1019 6
+FUNC 23a58 24 0 ExceptionHandlerTest_GenerateMultipleDumpsWithFD_Test::~ExceptionHandlerTest_GenerateMultipleDumpsWithFD_Test
+23a58 c 1019 6
+23a64 8 1019 6
+23a6c 4 1019 6
+23a70 8 1019 6
+23a78 4 1019 6
+FUNC 23a7c 14 0 ExceptionHandlerTest_WriteMinidumpExceptionStream_Test::~ExceptionHandlerTest_WriteMinidumpExceptionStream_Test
+23a7c 14 1000 6
+FUNC 23a90 24 0 ExceptionHandlerTest_WriteMinidumpExceptionStream_Test::~ExceptionHandlerTest_WriteMinidumpExceptionStream_Test
+23a90 c 1000 6
+23a9c 8 1000 6
+23aa4 4 1000 6
+23aa8 8 1000 6
+23ab0 4 1000 6
+FUNC 23ab4 14 0 ExceptionHandlerTest_ExternalDumper_Test::~ExceptionHandlerTest_ExternalDumper_Test
+23ab4 14 926 6
+FUNC 23ac8 24 0 ExceptionHandlerTest_ExternalDumper_Test::~ExceptionHandlerTest_ExternalDumper_Test
+23ac8 c 926 6
+23ad4 8 926 6
+23adc 4 926 6
+23ae0 8 926 6
+23ae8 4 926 6
+FUNC 23aec 14 0 ExceptionHandlerTest_ModuleInfo_Test::~ExceptionHandlerTest_ModuleInfo_Test
+23aec 14 806 6
+FUNC 23b00 24 0 ExceptionHandlerTest_ModuleInfo_Test::~ExceptionHandlerTest_ModuleInfo_Test
+23b00 c 806 6
+23b0c 8 806 6
+23b14 4 806 6
+23b18 8 806 6
+23b20 4 806 6
+FUNC 23b24 14 0 ExceptionHandlerTest_InstructionPointerMemoryNullPointer_Test::~ExceptionHandlerTest_InstructionPointerMemoryNullPointer_Test
+23b24 14 760 6
+FUNC 23b38 24 0 ExceptionHandlerTest_InstructionPointerMemoryNullPointer_Test::~ExceptionHandlerTest_InstructionPointerMemoryNullPointer_Test
+23b38 c 760 6
+23b44 8 760 6
+23b4c 4 760 6
+23b50 8 760 6
+23b58 4 760 6
+FUNC 23b5c 14 0 ExceptionHandlerTest_InstructionPointerMemoryMaxBound_Test::~ExceptionHandlerTest_InstructionPointerMemoryMaxBound_Test
+23b5c 14 667 6
+FUNC 23b70 24 0 ExceptionHandlerTest_InstructionPointerMemoryMaxBound_Test::~ExceptionHandlerTest_InstructionPointerMemoryMaxBound_Test
+23b70 c 667 6
+23b7c 8 667 6
+23b84 4 667 6
+23b88 8 667 6
+23b90 4 667 6
+FUNC 23b94 14 0 ExceptionHandlerTest_InstructionPointerMemoryMinBound_Test::~ExceptionHandlerTest_InstructionPointerMemoryMinBound_Test
+23b94 14 579 6
+FUNC 23ba8 24 0 ExceptionHandlerTest_InstructionPointerMemoryMinBound_Test::~ExceptionHandlerTest_InstructionPointerMemoryMinBound_Test
+23ba8 c 579 6
+23bb4 8 579 6
+23bbc 4 579 6
+23bc0 8 579 6
+23bc8 4 579 6
+FUNC 23bcc 14 0 ExceptionHandlerTest_InstructionPointerMemory_Test::~ExceptionHandlerTest_InstructionPointerMemory_Test
+23bcc 14 487 6
+FUNC 23be0 24 0 ExceptionHandlerTest_InstructionPointerMemory_Test::~ExceptionHandlerTest_InstructionPointerMemory_Test
+23be0 c 487 6
+23bec 8 487 6
+23bf4 4 487 6
+23bf8 8 487 6
+23c00 4 487 6
+FUNC 23c04 14 0 ExceptionHandlerTest_StackedHandlersUnhandledToBottom_Test::~ExceptionHandlerTest_StackedHandlersUnhandledToBottom_Test
+23c04 14 457 6
+FUNC 23c18 24 0 ExceptionHandlerTest_StackedHandlersUnhandledToBottom_Test::~ExceptionHandlerTest_StackedHandlersUnhandledToBottom_Test
+23c18 c 457 6
+23c24 8 457 6
+23c2c 4 457 6
+23c30 8 457 6
+23c38 4 457 6
+FUNC 23c3c 14 0 ExceptionHandlerTest_StackedHandlersFilteredToBottom_Test::~ExceptionHandlerTest_StackedHandlersFilteredToBottom_Test
+23c3c 14 441 6
+FUNC 23c50 24 0 ExceptionHandlerTest_StackedHandlersFilteredToBottom_Test::~ExceptionHandlerTest_StackedHandlersFilteredToBottom_Test
+23c50 c 441 6
+23c5c 8 441 6
+23c64 4 441 6
+23c68 8 441 6
+23c70 4 441 6
+FUNC 23c74 14 0 ExceptionHandlerTest_StackedHandlersNotDeliveredToBottom_Test::~ExceptionHandlerTest_StackedHandlersNotDeliveredToBottom_Test
+23c74 14 425 6
+FUNC 23c88 24 0 ExceptionHandlerTest_StackedHandlersNotDeliveredToBottom_Test::~ExceptionHandlerTest_StackedHandlersNotDeliveredToBottom_Test
+23c88 c 425 6
+23c94 8 425 6
+23c9c 4 425 6
+23ca0 8 425 6
+23ca8 4 425 6
+FUNC 23cac 14 0 ExceptionHandlerTest_StackedHandlersDeliveredToTop_Test::~ExceptionHandlerTest_StackedHandlersDeliveredToTop_Test
+23cac 14 409 6
+FUNC 23cc0 24 0 ExceptionHandlerTest_StackedHandlersDeliveredToTop_Test::~ExceptionHandlerTest_StackedHandlersDeliveredToTop_Test
+23cc0 c 409 6
+23ccc 8 409 6
+23cd4 4 409 6
+23cd8 8 409 6
+23ce0 4 409 6
+FUNC 23ce4 14 0 ExceptionHandlerTest_RedeliveryOnBadSignalHandlerFlag_Test::~ExceptionHandlerTest_RedeliveryOnBadSignalHandlerFlag_Test
+23ce4 14 380 6
+FUNC 23cf8 24 0 ExceptionHandlerTest_RedeliveryOnBadSignalHandlerFlag_Test::~ExceptionHandlerTest_RedeliveryOnBadSignalHandlerFlag_Test
+23cf8 c 380 6
+23d04 8 380 6
+23d0c 4 380 6
+23d10 8 380 6
+23d18 4 380 6
+FUNC 23d1c 14 0 ExceptionHandlerTest_RedeliveryToDefaultHandler_Test::~ExceptionHandlerTest_RedeliveryToDefaultHandler_Test
+23d1c 14 363 6
+FUNC 23d30 24 0 ExceptionHandlerTest_RedeliveryToDefaultHandler_Test::~ExceptionHandlerTest_RedeliveryToDefaultHandler_Test
+23d30 c 363 6
+23d3c 8 363 6
+23d44 4 363 6
+23d48 8 363 6
+23d50 4 363 6
+FUNC 23d54 14 0 ExceptionHandlerTest_NoRedeliveryOnFilterCallbackTrue_Test::~ExceptionHandlerTest_NoRedeliveryOnFilterCallbackTrue_Test
+23d54 14 351 6
+FUNC 23d68 24 0 ExceptionHandlerTest_NoRedeliveryOnFilterCallbackTrue_Test::~ExceptionHandlerTest_NoRedeliveryOnFilterCallbackTrue_Test
+23d68 c 351 6
+23d74 8 351 6
+23d7c 4 351 6
+23d80 8 351 6
+23d88 4 351 6
+FUNC 23d8c 14 0 ExceptionHandlerTest_NoRedeliveryOnDoneCallbackTrue_Test::~ExceptionHandlerTest_NoRedeliveryOnDoneCallbackTrue_Test
+23d8c 14 339 6
+FUNC 23da0 24 0 ExceptionHandlerTest_NoRedeliveryOnDoneCallbackTrue_Test::~ExceptionHandlerTest_NoRedeliveryOnDoneCallbackTrue_Test
+23da0 c 339 6
+23dac 8 339 6
+23db4 4 339 6
+23db8 8 339 6
+23dc0 4 339 6
+FUNC 23dc4 14 0 ExceptionHandlerTest_RedeliveryOnDoneCallbackFalse_Test::~ExceptionHandlerTest_RedeliveryOnDoneCallbackFalse_Test
+23dc4 14 327 6
+FUNC 23dd8 24 0 ExceptionHandlerTest_RedeliveryOnDoneCallbackFalse_Test::~ExceptionHandlerTest_RedeliveryOnDoneCallbackFalse_Test
+23dd8 c 327 6
+23de4 8 327 6
+23dec 4 327 6
+23df0 8 327 6
+23df8 4 327 6
+FUNC 23dfc 14 0 ExceptionHandlerTest_RedeliveryOnFilterCallbackFalse_Test::~ExceptionHandlerTest_RedeliveryOnFilterCallbackFalse_Test
+23dfc 14 315 6
+FUNC 23e10 24 0 ExceptionHandlerTest_RedeliveryOnFilterCallbackFalse_Test::~ExceptionHandlerTest_RedeliveryOnFilterCallbackFalse_Test
+23e10 c 315 6
+23e1c 8 315 6
+23e24 4 315 6
+23e28 8 315 6
+23e30 4 315 6
+FUNC 23e34 14 0 ExceptionHandlerTest_ChildCrashWithFD_Test::~ExceptionHandlerTest_ChildCrashWithFD_Test
+23e34 14 257 6
+FUNC 23e48 24 0 ExceptionHandlerTest_ChildCrashWithFD_Test::~ExceptionHandlerTest_ChildCrashWithFD_Test
+23e48 c 257 6
+23e54 8 257 6
+23e5c 4 257 6
+23e60 8 257 6
+23e68 4 257 6
+FUNC 23e6c 14 0 ExceptionHandlerTest_ChildCrashWithPath_Test::~ExceptionHandlerTest_ChildCrashWithPath_Test
+23e6c 14 253 6
+FUNC 23e80 24 0 ExceptionHandlerTest_ChildCrashWithPath_Test::~ExceptionHandlerTest_ChildCrashWithPath_Test
+23e80 c 253 6
+23e8c 8 253 6
+23e94 4 253 6
+23e98 8 253 6
+23ea0 4 253 6
+FUNC 23ea4 14 0 ExceptionHandlerTest_SimpleWithFD_Test::~ExceptionHandlerTest_SimpleWithFD_Test
+23ea4 14 170 6
+FUNC 23eb8 24 0 ExceptionHandlerTest_SimpleWithFD_Test::~ExceptionHandlerTest_SimpleWithFD_Test
+23eb8 c 170 6
+23ec4 8 170 6
+23ecc 4 170 6
+23ed0 8 170 6
+23ed8 4 170 6
+FUNC 23edc 14 0 ExceptionHandlerTest_SimpleWithPath_Test::~ExceptionHandlerTest_SimpleWithPath_Test
+23edc 14 160 6
+FUNC 23ef0 24 0 ExceptionHandlerTest_SimpleWithPath_Test::~ExceptionHandlerTest_SimpleWithPath_Test
+23ef0 c 160 6
+23efc 8 160 6
+23f04 4 160 6
+23f08 8 160 6
+23f10 4 160 6
+FUNC 23f14 194 0 CrashHandler
+23f14 10 877 6
+23f24 4 880 6
+23f28 4 877 6
+23f2c 4 877 6
+23f30 4 878 6
+23f34 10 880 6
+23f44 4 885 6
+23f48 4 886 6
+23f4c 4 891 6
+23f50 4 892 6
+23f54 4 895 6
+23f58 4 892 6
+23f5c 8 897 6
+23f64 4 902 6
+23f68 4 888 6
+23f6c 4 895 6
+23f70 4 902 6
+23f74 4 893 6
+23f78 4 903 6
+23f7c 4 895 6
+23f80 4 903 6
+23f84 4 904 6
+23f88 4 896 6
+23f8c 4 890 6
+23f90 4 893 6
+23f94 4 900 6
+23f98 4 901 6
+23f9c 8 888 6
+23fa4 4 895 6
+23fa8 8 904 6
+23fb0 4 905 6
+23fb4 4 907 6
+23fb8 8 906 6
+23fc0 8 907 6
+23fc8 8 909 6
+23fd0 8 910 6
+23fd8 8 911 6
+23fe0 24 3671 97
+24004 4 3671 97
+24008 8 3671 97
+24010 c 913 6
+2401c 4 3671 97
+24020 18 2979 97
+24038 4 2979 97
+2403c 8 2979 97
+24044 4 915 6
+24048 4 916 6
+2404c 4 915 6
+24050 24 3104 97
+24074 8 921 6
+2407c 4 3104 97
+24080 8 3104 97
+24088 10 919 6
+24098 10 922 6
+FUNC 240a8 d4 0 DoneCallback
+240a8 14 180 6
+240bc 4 180 6
+240c0 4 182 6
+240c4 4 181 6
+240c8 4 184 6
+240cc 4 191 6
+240d0 8 184 6
+240d8 4 187 6
+240dc 4 187 6
+240e0 4 185 6
+240e4 4 186 6
+240e8 4 187 6
+240ec 4 187 6
+240f0 20 3162 97
+24110 4 3162 97
+24114 8 3162 97
+2411c c 188 6
+24128 28 3162 97
+24150 4 3162 97
+24154 8 3162 97
+2415c 10 189 6
+2416c 10 192 6
+FUNC 2417c 3c 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_WriteMinidumpForChild_Test>::CreateTest
+2417c 10 486 85
+2418c 8 486 85
+24194 8 1154 6
+2419c 4 486 85
+241a0 c 1154 6
+241ac c 486 85
+FUNC 241b8 3c 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_AdditionalMemoryRemove_Test>::CreateTest
+241b8 10 486 85
+241c8 8 486 85
+241d0 8 1112 6
+241d8 4 486 85
+241dc c 1112 6
+241e8 c 486 85
+FUNC 241f4 3c 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_AdditionalMemory_Test>::CreateTest
+241f4 10 486 85
+24204 8 486 85
+2420c 8 1068 6
+24214 4 486 85
+24218 c 1068 6
+24224 c 486 85
+FUNC 24230 3c 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_NoRedeliveryOnDoneCallbackTrue_Test>::CreateTest
+24230 10 486 85
+24240 8 486 85
+24248 8 339 6
+24250 4 486 85
+24254 c 339 6
+24260 c 486 85
+FUNC 2426c 3c 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_RedeliveryOnDoneCallbackFalse_Test>::CreateTest
+2426c 10 486 85
+2427c 8 486 85
+24284 8 327 6
+2428c 4 486 85
+24290 c 327 6
+2429c c 486 85
+FUNC 242a8 3c 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_RedeliveryOnFilterCallbackFalse_Test>::CreateTest
+242a8 10 486 85
+242b8 8 486 85
+242c0 8 315 6
+242c8 4 486 85
+242cc c 315 6
+242d8 c 486 85
+FUNC 242e4 3c 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_ChildCrashWithFD_Test>::CreateTest
+242e4 10 486 85
+242f4 8 486 85
+242fc 8 257 6
+24304 4 486 85
+24308 c 257 6
+24314 c 486 85
+FUNC 24320 3c 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_ChildCrashWithPath_Test>::CreateTest
+24320 10 486 85
+24330 8 486 85
+24338 8 253 6
+24340 4 486 85
+24344 c 253 6
+24350 c 486 85
+FUNC 2435c 3c 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_SimpleWithFD_Test>::CreateTest
+2435c 10 486 85
+2436c 8 486 85
+24374 8 170 6
+2437c 4 486 85
+24380 c 170 6
+2438c c 486 85
+FUNC 24398 3c 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_SimpleWithPath_Test>::CreateTest
+24398 10 486 85
+243a8 8 486 85
+243b0 8 160 6
+243b8 4 486 85
+243bc c 160 6
+243c8 c 486 85
+FUNC 243d4 3c 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_GenerateMultipleDumpsWithPath_Test>::CreateTest
+243d4 10 486 85
+243e4 8 486 85
+243ec 8 1036 6
+243f4 4 486 85
+243f8 c 1036 6
+24404 c 486 85
+FUNC 24410 3c 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_GenerateMultipleDumpsWithFD_Test>::CreateTest
+24410 10 486 85
+24420 8 486 85
+24428 8 1019 6
+24430 4 486 85
+24434 c 1019 6
+24440 c 486 85
+FUNC 2444c 3c 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_WriteMinidumpExceptionStream_Test>::CreateTest
+2444c 10 486 85
+2445c 8 486 85
+24464 8 1000 6
+2446c 4 486 85
+24470 c 1000 6
+2447c c 486 85
+FUNC 24488 3c 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_ExternalDumper_Test>::CreateTest
+24488 10 486 85
+24498 8 486 85
+244a0 8 926 6
+244a8 4 486 85
+244ac c 926 6
+244b8 c 486 85
+FUNC 244c4 3c 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_ModuleInfo_Test>::CreateTest
+244c4 10 486 85
+244d4 8 486 85
+244dc 8 806 6
+244e4 4 486 85
+244e8 c 806 6
+244f4 c 486 85
+FUNC 24500 3c 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_InstructionPointerMemoryNullPointer_Test>::CreateTest
+24500 10 486 85
+24510 8 486 85
+24518 8 760 6
+24520 4 486 85
+24524 c 760 6
+24530 c 486 85
+FUNC 2453c 3c 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_InstructionPointerMemoryMaxBound_Test>::CreateTest
+2453c 10 486 85
+2454c 8 486 85
+24554 8 667 6
+2455c 4 486 85
+24560 c 667 6
+2456c c 486 85
+FUNC 24578 3c 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_InstructionPointerMemoryMinBound_Test>::CreateTest
+24578 10 486 85
+24588 8 486 85
+24590 8 579 6
+24598 4 486 85
+2459c c 579 6
+245a8 c 486 85
+FUNC 245b4 3c 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_InstructionPointerMemory_Test>::CreateTest
+245b4 10 486 85
+245c4 8 486 85
+245cc 8 487 6
+245d4 4 486 85
+245d8 c 487 6
+245e4 c 486 85
+FUNC 245f0 3c 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_StackedHandlersUnhandledToBottom_Test>::CreateTest
+245f0 10 486 85
+24600 8 486 85
+24608 8 457 6
+24610 4 486 85
+24614 c 457 6
+24620 c 486 85
+FUNC 2462c 3c 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_StackedHandlersFilteredToBottom_Test>::CreateTest
+2462c 10 486 85
+2463c 8 486 85
+24644 8 441 6
+2464c 4 486 85
+24650 c 441 6
+2465c c 486 85
+FUNC 24668 3c 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_StackedHandlersNotDeliveredToBottom_Test>::CreateTest
+24668 10 486 85
+24678 8 486 85
+24680 8 425 6
+24688 4 486 85
+2468c c 425 6
+24698 c 486 85
+FUNC 246a4 3c 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_StackedHandlersDeliveredToTop_Test>::CreateTest
+246a4 10 486 85
+246b4 8 486 85
+246bc 8 409 6
+246c4 4 486 85
+246c8 c 409 6
+246d4 c 486 85
+FUNC 246e0 3c 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_RedeliveryOnBadSignalHandlerFlag_Test>::CreateTest
+246e0 10 486 85
+246f0 8 486 85
+246f8 8 380 6
+24700 4 486 85
+24704 c 380 6
+24710 c 486 85
+FUNC 2471c 3c 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_RedeliveryToDefaultHandler_Test>::CreateTest
+2471c 10 486 85
+2472c 8 486 85
+24734 8 363 6
+2473c 4 486 85
+24740 c 363 6
+2474c c 486 85
+FUNC 24758 3c 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_NoRedeliveryOnFilterCallbackTrue_Test>::CreateTest
+24758 10 486 85
+24768 8 486 85
+24770 8 351 6
+24778 4 486 85
+2477c c 351 6
+24788 c 486 85
+FUNC 24794 b0 0 std::basic_streambuf<char, std::char_traits<char> >::xsgetn
+24794 14 54 128
+247a8 c 54 128
+247b4 4 55 128
+247b8 8 58 128
+247c0 10 59 128
+247d0 10 61 128
+247e0 4 172 140
+247e4 c 172 140
+247f0 4 65 128
+247f4 4 63 128
+247f8 4 64 128
+247fc c 65 128
+24808 4 228 129
+2480c c 229 129
+24818 8 69 128
+24820 4 220 140
+24824 8 71 128
+2482c 18 80 128
+FUNC 24844 40 0 std::priv::__ucopy_trivial
+24844 14 103 137
+24858 10 107 137
+24868 c 106 137
+24874 4 107 137
+24878 c 108 137
+FUNC 24884 1c 0 testing::AssertionResult::message
+24884 4 1144 87
+24888 c 298 82
+24894 8 298 82
+2489c 4 299 82
+FUNC 248a0 48 0 testing::internal::scoped_ptr<std::basic_stringstream<char, std::char_traits<char>, std::allocator<char> > >::~scoped_ptr
+248a0 c 1140 87
+248ac c 1153 87
+248b8 10 1154 87
+248c8 8 1155 87
+248d0 c 1155 87
+248dc c 1140 87
+FUNC 248e8 30 0 std::priv::_String_base<char, std::allocator<char> >::_M_deallocate_block
+248e8 4 94 132
+248ec 4 64 132
+248f0 c 96 132
+248fc 8 97 132
+24904 8 161 101
+2490c 4 135 119
+24910 4 161 101
+24914 4 102 132
+FUNC 24918 28 0 google_breakpad::MinidumpDescriptor::~MinidumpDescriptor
+24918 c 47 8
+24924 4 47 8
+24928 c 156 132
+24934 8 47 8
+2493c 4 156 132
+FUNC 24940 34 0 std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::~basic_stringbuf
+24940 4 59 126
+24944 8 58 126
+2494c 4 59 126
+24950 4 58 126
+24954 4 58 126
+24958 8 59 126
+24960 4 156 132
+24964 4 59 126
+24968 8 59 126
+24970 4 59 126
+FUNC 24974 24 0 std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::~basic_stringbuf
+24974 c 58 126
+24980 4 58 126
+24984 4 59 126
+24988 4 59 126
+2498c 8 59 126
+24994 4 59 126
+FUNC 24998 60 0 testing::internal::scoped_ptr<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >::reset
+24998 10 1152 87
+249a8 10 1153 87
+249b8 14 1154 87
+249cc 8 1155 87
+249d4 8 156 132
+249dc 8 1155 87
+249e4 4 1157 87
+249e8 10 1159 87
+FUNC 249f8 8 0 testing::internal::scoped_ptr<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >::~scoped_ptr
+249f8 8 1140 87
+FUNC 24a00 fc 0 std::basic_ios<char, std::char_traits<char> >::init
+24a00 4 97 108
+24a04 4 92 109
+24a08 10 97 108
+24a18 4 50 108
+24a1c 4 92 109
+24a20 4 192 110
+24a24 4 97 108
+24a28 4 188 110
+24a2c 8 192 110
+24a34 4 193 110
+24a38 4 100 108
+24a3c 4 70 108
+24a40 8 100 108
+24a48 10 70 108
+24a58 8 72 108
+24a60 8 46 128
+24a68 4 47 128
+24a6c 8 46 128
+24a74 4 47 128
+24a78 4 46 128
+24a7c c 47 128
+24a88 c 48 128
+24a94 8 73 108
+24a9c 10 351 117
+24aac 4 76 108
+24ab0 8 100 108
+24ab8 8 100 108
+24ac0 4 188 110
+24ac4 8 112 110
+24acc 4 132 110
+24ad0 4 68 109
+24ad4 4 132 110
+24ad8 4 84 109
+24adc 4 190 110
+24ae0 4 139 110
+24ae4 4 84 109
+24ae8 14 110 108
+FUNC 24afc b4 0 std::basic_iostream<char, std::char_traits<char> >::basic_iostream
+24afc c 1406 111
+24b08 4 92 108
+24b0c 4 1406 111
+24b10 4 92 108
+24b14 4 1406 111
+24b18 4 1406 111
+24b1c 8 92 108
+24b24 4 87 112
+24b28 4 88 112
+24b2c 8 87 112
+24b34 4 87 112
+24b38 4 92 108
+24b3c 4 87 112
+24b40 4 92 108
+24b44 4 87 112
+24b48 4 88 112
+24b4c 4 87 112
+24b50 4 88 112
+24b54 4 38 121
+24b58 4 39 121
+24b5c 8 38 121
+24b64 c 38 121
+24b70 8 39 121
+24b78 10 1410 111
+24b88 4 1410 111
+24b8c 4 1410 111
+24b90 4 1410 111
+24b94 4 1411 111
+24b98 4 1410 111
+24b9c 4 1411 111
+24ba0 c 1412 111
+24bac 4 1411 111
+FUNC 24bb0 b0 0 std::basic_iostream<char, std::char_traits<char> >::basic_iostream
+24bb0 10 1406 111
+24bc0 c 1406 111
+24bcc 4 87 112
+24bd0 4 87 112
+24bd4 4 87 112
+24bd8 4 87 112
+24bdc 4 87 112
+24be0 4 88 112
+24be4 4 87 112
+24be8 4 88 112
+24bec c 88 112
+24bf8 4 38 121
+24bfc 4 1410 111
+24c00 4 38 121
+24c04 4 38 121
+24c08 4 38 121
+24c0c 4 38 121
+24c10 4 39 121
+24c14 10 39 121
+24c24 4 1410 111
+24c28 4 1410 111
+24c2c 4 1410 111
+24c30 4 1410 111
+24c34 4 1410 111
+24c38 4 1411 111
+24c3c 4 1412 111
+24c40 4 1410 111
+24c44 4 1410 111
+24c48 4 1411 111
+24c4c 8 1411 111
+24c54 8 1412 111
+24c5c 4 1411 111
+FUNC 24c60 98 0 std::__stlp_string_fill<char, std::char_traits<char> >
+24c60 10 16 133
+24c70 4 16 133
+24c74 4 20 133
+24c78 10 19 133
+24c88 8 20 133
+24c90 10 200 129
+24ca0 14 199 129
+24cb4 14 200 129
+24cc8 c 21 133
+24cd4 8 20 133
+24cdc 8 24 133
+24ce4 4 22 133
+24ce8 10 25 133
+FUNC 24cf8 1c 0 std::basic_streambuf<char, std::char_traits<char> >::sputn
+24cf8 8 204 129
+24d00 14 205 129
+FUNC 24d14 3c 0 std::basic_ios<char, std::char_traits<char> >::setstate
+24d14 8 95 109
+24d1c 4 95 109
+24d20 4 92 109
+24d24 4 95 109
+24d28 c 92 109
+24d34 4 192 110
+24d38 4 188 110
+24d3c 8 192 110
+24d44 4 193 110
+24d48 8 95 109
+FUNC 24d50 60 0 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::erase
+24d50 4 802 131
+24d54 4 803 131
+24d58 c 802 131
+24d64 8 802 131
+24d6c 4 803 131
+24d70 8 805 131
+24d78 8 168 140
+24d80 10 168 140
+24d90 10 806 131
+24da0 10 809 131
+FUNC 24db0 68 0 std::priv::_String_base<char, std::allocator<char> >::_M_allocate_block
+24db0 c 607 130
+24dbc 4 607 130
+24dc0 4 608 130
+24dc4 c 600 130
+24dd0 8 610 130
+24dd8 4 347 101
+24ddc 8 158 101
+24de4 c 134 119
+24df0 8 158 101
+24df8 4 613 130
+24dfc 4 611 130
+24e00 4 612 130
+24e04 8 613 130
+24e0c c 623 130
+FUNC 24e18 34 0 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string
+24e18 4 158 131
+24e1c 4 124 132
+24e20 8 158 131
+24e28 4 158 131
+24e2c 4 120 132
+24e30 4 481 101
+24e34 8 124 132
+24e3c 4 101 103
+24e40 c 166 131
+FUNC 24e4c 50 0 google_breakpad::MinidumpDescriptor::MinidumpDescriptor
+24e4c c 65 8
+24e58 4 65 8
+24e5c 4 69 8
+24e60 8 69 8
+24e68 4 69 8
+24e6c 4 69 8
+24e70 8 69 8
+24e78 c 69 8
+24e84 c 69 8
+24e90 c 71 8
+FUNC 24e9c bc 0 std::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >::basic_stringstream
+24e9c 10 439 126
+24eac 8 439 126
+24eb4 8 441 126
+24ebc 4 439 126
+24ec0 4 441 126
+24ec4 4 441 126
+24ec8 4 441 126
+24ecc 4 441 126
+24ed0 4 441 126
+24ed4 4 441 126
+24ed8 4 441 126
+24edc 4 34 128
+24ee0 4 441 126
+24ee4 30 34 128
+24f14 4 46 126
+24f18 4 46 126
+24f1c 10 46 126
+24f2c 8 46 126
+24f34 4 442 126
+24f38 10 442 126
+24f48 10 443 126
+FUNC 24f58 e8 0 std::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >::basic_stringstream
+24f58 c 439 126
+24f64 4 92 108
+24f68 8 439 126
+24f70 4 439 126
+24f74 4 92 108
+24f78 4 34 128
+24f7c 8 92 108
+24f84 4 441 126
+24f88 18 92 108
+24fa0 14 441 126
+24fb4 10 441 126
+24fc4 8 441 126
+24fcc 4 34 128
+24fd0 8 441 126
+24fd8 2c 34 128
+25004 4 46 126
+25008 4 46 126
+2500c 10 46 126
+2501c 8 46 126
+25024 c 442 126
+25030 10 443 126
+FUNC 25040 64 0 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string
+25040 18 639 130
+25058 4 112 132
+2505c 4 481 101
+25060 c 229 140
+2506c 4 643 130
+25070 c 379 131
+2507c 10 148 137
+2508c 4 380 131
+25090 4 101 103
+25094 10 644 130
+FUNC 250a4 58 0 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string
+250a4 14 647 130
+250b8 4 112 132
+250bc c 481 101
+250c8 4 378 131
+250cc 8 379 131
+250d4 10 148 137
+250e4 4 380 131
+250e8 4 101 103
+250ec 10 649 130
+FUNC 250fc 4c 0 google_breakpad::MinidumpDescriptor::MinidumpDescriptor
+250fc c 56 8
+25108 4 56 8
+2510c 18 61 8
+25124 c 61 8
+25130 c 61 8
+2513c c 63 8
+FUNC 25148 7c 0 CrashWithCallbacks
+25148 c 308 6
+25154 4 310 6
+25158 4 308 6
+2515c 8 308 6
+25164 8 310 6
+2516c 4 310 6
+25170 4 310 6
+25174 20 310 6
+25194 8 310 6
+2519c 10 207 6
+251ac 8 312 6
+251b4 10 313 6
+FUNC 251c4 2c 0 std::use_facet<std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > > >
+251c4 c 292 117
+251d0 4 292 117
+251d4 c 351 117
+251e0 4 351 117
+251e4 8 297 117
+251ec 4 351 117
+FUNC 251f0 8c 0 std::basic_istream<char, std::char_traits<char> >::~basic_istream
+251f0 c 90 112
+251fc 8 90 112
+25204 8 90 112
+2520c c 90 112
+25218 4 90 112
+2521c 4 90 112
+25220 4 90 112
+25224 4 90 112
+25228 8 90 112
+25230 8 90 112
+25238 c 90 112
+25244 8 90 112
+2524c 10 90 112
+2525c 4 90 112
+25260 4 90 112
+25264 8 90 112
+2526c 4 90 112
+25270 c 90 112
+FUNC 2527c c 0 std::basic_istream<char, std::char_traits<char> >::~basic_istream
+2527c c 90 112
+FUNC 25298 24 0 std::basic_istream<char, std::char_traits<char> >::~basic_istream
+25298 c 90 112
+252a4 8 90 112
+252ac 4 90 112
+252b0 8 90 112
+252b8 4 90 112
+FUNC 252cc c 0 std::basic_istream<char, std::char_traits<char> >::~basic_istream
+252cc c 90 112
+FUNC 252d8 8c 0 std::basic_ostream<char, std::char_traits<char> >::~basic_ostream
+252d8 c 43 121
+252e4 4 43 121
+252e8 4 44 121
+252ec 8 44 121
+252f4 c 44 121
+25300 4 44 121
+25304 4 44 121
+25308 4 44 121
+2530c 4 44 121
+25310 8 44 121
+25318 8 44 121
+25320 c 44 121
+2532c 8 44 121
+25334 10 44 121
+25344 4 44 121
+25348 4 44 121
+2534c 8 44 121
+25354 4 44 121
+25358 c 44 121
+FUNC 25364 c 0 std::basic_ostream<char, std::char_traits<char> >::~basic_ostream
+25364 c 44 121
+FUNC 25380 24 0 std::basic_ostream<char, std::char_traits<char> >::~basic_ostream
+25380 c 43 121
+2538c 4 43 121
+25390 4 44 121
+25394 4 44 121
+25398 8 44 121
+253a0 4 44 121
+FUNC 253b4 c 0 std::basic_ostream<char, std::char_traits<char> >::~basic_ostream
+253b4 4 43 121
+253b8 8 44 121
+FUNC 253c0 e0 0 std::basic_iostream<char, std::char_traits<char> >::~basic_iostream
+253c0 c 1415 111
+253cc 8 1415 111
+253d4 4 1416 111
+253d8 8 1416 111
+253e0 c 1416 111
+253ec 4 1416 111
+253f0 4 1416 111
+253f4 4 1416 111
+253f8 4 1416 111
+253fc 8 1416 111
+25404 8 1416 111
+2540c c 1416 111
+25418 8 1416 111
+25420 8 1416 111
+25428 c 1416 111
+25434 8 1416 111
+2543c 4 1416 111
+25440 4 1416 111
+25444 10 1416 111
+25454 c 1416 111
+25460 8 1416 111
+25468 4 1416 111
+2546c 4 1416 111
+25470 4 1416 111
+25474 4 1416 111
+25478 8 1416 111
+25480 4 1416 111
+25484 4 1416 111
+25488 8 1416 111
+25490 4 1416 111
+25494 c 1416 111
+FUNC 254a0 c 0 std::basic_iostream<char, std::char_traits<char> >::~basic_iostream
+254a0 4 1415 111
+254a4 8 1416 111
+FUNC 254ac cc 0 std::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >::~basic_stringstream
+254ac c 453 126
+254b8 8 453 126
+254c0 4 454 126
+254c4 8 454 126
+254cc c 454 126
+254d8 4 454 126
+254dc 4 454 126
+254e0 4 454 126
+254e4 4 454 126
+254e8 8 454 126
+254f0 8 454 126
+254f8 c 454 126
+25504 8 454 126
+2550c 8 454 126
+25514 c 454 126
+25520 18 454 126
+25538 8 454 126
+25540 4 454 126
+25544 4 454 126
+25548 4 454 126
+2554c 4 454 126
+25550 8 454 126
+25558 4 454 126
+2555c 4 454 126
+25560 8 454 126
+25568 4 454 126
+2556c c 454 126
+FUNC 25578 c 0 std::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >::~basic_stringstream
+25578 4 453 126
+2557c 8 454 126
+FUNC 25584 c 0 std::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >::~basic_stringstream
+25584 c 454 126
+FUNC 255a8 24 0 std::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >::~basic_stringstream
+255a8 c 453 126
+255b4 4 453 126
+255b8 4 454 126
+255bc 4 454 126
+255c0 8 454 126
+255c8 4 454 126
+FUNC 255e4 c 0 std::basic_iostream<char, std::char_traits<char> >::~basic_iostream
+255e4 c 1416 111
+FUNC 25608 24 0 std::basic_iostream<char, std::char_traits<char> >::~basic_iostream
+25608 c 1415 111
+25614 4 1415 111
+25618 4 1416 111
+2561c 4 1416 111
+25620 8 1416 111
+25628 4 1416 111
+FUNC 25644 5c 0 std::basic_ostream<char, std::char_traits<char> >::flush
+25644 c 134 122
+25650 4 134 122
+25654 14 135 122
+25668 c 153 129
+25674 8 136 122
+2567c 14 137 122
+25690 10 139 122
+FUNC 256a0 78 0 std::priv::__init_bostr<char, std::char_traits<char> >
+256a0 4 218 122
+256a4 4 228 122
+256a8 8 218 122
+256b0 4 218 122
+256b4 14 219 122
+256c8 8 221 122
+256d0 8 222 122
+256d8 14 223 122
+256ec 4 224 122
+256f0 c 225 122
+256fc c 174 110
+25708 10 229 122
+FUNC 25718 50 0 std::basic_ostream<char, std::char_traits<char> >::sentry::~sentry
+25718 c 184 122
+25724 1c 185 122
+25740 c 187 122
+2574c 4 189 122
+25750 8 190 122
+25758 4 189 122
+2575c c 190 122
+FUNC 25768 13c 0 std::basic_ostream<char, std::char_traits<char> >::_M_put_nowiden
+25768 10 331 121
+25778 8 331 121
+25780 10 181 122
+25790 4 333 121
+25794 c 229 140
+257a0 18 336 121
+257b8 8 339 121
+257c0 8 340 121
+257c8 c 341 121
+257d4 4 342 121
+257d8 4 341 121
+257dc c 342 121
+257e8 8 343 121
+257f0 8 343 121
+257f8 10 344 121
+25808 14 209 129
+2581c 8 343 121
+25824 14 209 129
+25838 8 348 121
+25840 c 348 121
+2584c 10 348 121
+2585c 8 348 121
+25864 4 351 121
+25868 c 139 110
+25874 4 357 121
+25878 14 358 121
+2588c 8 359 121
+25894 10 360 121
+FUNC 258a4 c0 0 std::priv::__put_num<char, std::char_traits<char>, long int>
+258a4 10 194 121
+258b4 8 194 121
+258bc 10 181 122
+258cc 4 199 121
+258d0 18 211 121
+258e8 4 202 121
+258ec 4 145 110
+258f0 4 202 121
+258f4 4 145 110
+258f8 4 202 121
+258fc 8 145 110
+25904 8 202 121
+2590c 4 67 120
+25910 4 202 121
+25914 8 67 120
+2591c c 202 121
+25928 4 67 120
+2592c 4 57 123
+25930 c 67 120
+2593c 8 202 121
+25944 4 210 121
+25948 8 212 121
+25950 14 213 121
+FUNC 25964 104 0 std::operator<< <char, std::char_traits<char>, std::allocator<char> >
+25964 14 30 133
+25978 8 30 133
+25980 10 181 122
+25990 4 41 133
+25994 18 62 133
+259ac c 400 131
+259b8 c 44 133
+259c4 4 138 110
+259c8 4 139 110
+259cc 4 44 133
+259d0 4 50 133
+259d4 4 46 133
+259d8 8 50 133
+259e0 14 52 133
+259f4 10 55 133
+25a04 c 55 133
+25a10 14 53 133
+25a24 8 55 133
+25a2c 4 57 133
+25a30 14 58 133
+25a44 4 58 133
+25a48 8 64 133
+25a50 18 65 133
+FUNC 25a68 c0 0 std::priv::__put_num<char, std::char_traits<char>, void const*>
+25a68 10 194 121
+25a78 8 194 121
+25a80 10 181 122
+25a90 4 199 121
+25a94 18 211 121
+25aac 4 202 121
+25ab0 4 145 110
+25ab4 4 202 121
+25ab8 4 145 110
+25abc 4 202 121
+25ac0 8 145 110
+25ac8 8 202 121
+25ad0 4 101 120
+25ad4 4 202 121
+25ad8 8 101 120
+25ae0 c 202 121
+25aec 4 101 120
+25af0 4 57 123
+25af4 c 101 120
+25b00 8 202 121
+25b08 4 210 121
+25b0c 8 212 121
+25b14 14 213 121
+FUNC 25b28 2c 0 std::priv::_String_base<char, std::allocator<char> >::_M_rest
+25b28 4 64 132
+25b2c 8 74 132
+25b34 10 74 132
+25b44 c 74 132
+25b50 4 74 132
+FUNC 25b54 5c 0 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_compute_next_size
+25b54 8 302 131
+25b5c c 400 131
+25b68 10 304 131
+25b78 18 600 130
+25b90 4 306 131
+25b94 10 307 131
+25ba4 4 308 131
+25ba8 8 310 131
+FUNC 25bb0 164 0 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_append
+25bb0 4 196 130
+25bb4 4 197 130
+25bb8 10 196 130
+25bc8 c 196 130
+25bd4 4 197 130
+25bd8 4 198 130
+25bdc c 199 130
+25be8 10 200 130
+25bf8 4 356 101
+25bfc 4 346 101
+25c00 4 347 101
+25c04 8 158 101
+25c0c 8 134 119
+25c14 8 158 101
+25c1c 4 352 101
+25c20 8 158 101
+25c28 10 86 137
+25c38 c 86 137
+25c44 10 146 103
+25c54 1c 86 137
+25c70 10 146 103
+25c80 8 205 130
+25c88 8 206 130
+25c90 4 101 103
+25c94 4 205 130
+25c98 4 160 132
+25c9c 4 164 132
+25ca0 8 165 132
+25ca8 4 210 130
+25cac 4 211 130
+25cb0 c 86 137
+25cbc 18 86 137
+25cd4 8 146 103
+25cdc 10 101 103
+25cec 4 232 140
+25cf0 c 214 130
+25cfc 18 218 130
+FUNC 25d14 90 0 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_assign
+25d14 10 242 130
+25d24 4 243 130
+25d28 4 242 130
+25d2c c 242 130
+25d38 8 400 131
+25d40 8 244 130
+25d48 4 168 140
+25d4c 8 168 140
+25d54 4 246 130
+25d58 14 246 130
+25d6c 4 168 140
+25d70 4 168 140
+25d74 4 400 131
+25d78 4 250 130
+25d7c 8 400 131
+25d84 c 250 130
+25d90 14 253 130
+FUNC 25da4 234 0 google_breakpad::AutoTempDir::AutoTempDir
+25da4 c 54 63
+25db0 8 54 63
+25db8 c 54 63
+25dc4 4 63 35
+25dc8 4 54 63
+25dcc 4 54 63
+25dd0 14 55 63
+25de4 8 63 35
+25dec 8 55 63
+25df4 18 63 35
+25e0c c 64 35
+25e18 8 65 35
+25e20 c 67 35
+25e2c 18 68 35
+25e44 4 67 35
+25e48 c 69 35
+25e54 10 75 35
+25e64 4 76 35
+25e68 4 79 35
+25e6c c 80 35
+25e78 8 81 35
+25e80 4 82 35
+25e84 10 84 35
+25e94 10 85 35
+25ea4 4 96 35
+25ea8 4 54 63
+25eac 8 96 35
+25eb4 14 94 35
+25ec8 4 96 35
+25ecc 8 94 35
+25ed4 c 96 35
+25ee0 10 97 35
+25ef0 10 100 35
+25f00 c 93 35
+25f0c 8 98 35
+25f14 4 101 35
+25f18 4 56 63
+25f1c 4 1139 87
+25f20 4 56 63
+25f24 4 277 82
+25f28 4 56 63
+25f2c 20 56 63
+25f4c 4 56 63
+25f50 4 56 63
+25f54 4 56 63
+25f58 1c 56 63
+25f74 8 56 63
+25f7c c 56 63
+25f88 8 85 79
+25f90 8 56 63
+25f98 8 156 132
+25fa0 8 256 82
+25fa8 8 229 140
+25fb0 4 563 131
+25fb4 c 563 131
+25fc0 18 58 63
+FUNC 25fd8 34 0 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator=
+25fd8 c 353 131
+25fe4 4 353 131
+25fe8 c 229 140
+25ff4 8 355 131
+25ffc 4 355 131
+26000 8 356 131
+26008 4 355 131
+FUNC 2600c 24 0 SimpleCallback
+2600c 4 1148 6
+26010 4 1150 6
+26014 8 1148 6
+2601c 8 1150 6
+26024 c 1152 6
+FUNC 26030 98 0 testing::AssertionResult::AppendMessage
+26030 14 320 82
+26044 4 320 82
+26048 4 1144 87
+2604c 4 320 82
+26050 c 321 82
+2605c c 322 82
+26068 8 322 82
+26070 c 322 82
+2607c 8 323 82
+26084 4 1143 87
+26088 8 323 82
+26090 c 229 140
+2609c 8 530 131
+260a4 8 530 131
+260ac 8 156 132
+260b4 14 324 82
+FUNC 260c8 c0 0 std::priv::__put_num<char, std::char_traits<char>, long unsigned int>
+260c8 10 194 121
+260d8 8 194 121
+260e0 10 181 122
+260f0 4 199 121
+260f4 18 211 121
+2610c 4 202 121
+26110 4 145 110
+26114 4 202 121
+26118 4 145 110
+2611c 4 202 121
+26120 8 145 110
+26128 8 202 121
+26130 4 72 120
+26134 4 202 121
+26138 8 72 120
+26140 c 202 121
+2614c 4 72 120
+26150 4 57 123
+26154 c 72 120
+26160 8 202 121
+26168 4 210 121
+2616c 8 212 121
+26174 14 213 121
+FUNC 26188 54 0 testing::AssertionResult::operator<< <char [12]>
+26188 c 305 82
+26194 4 306 82
+26198 4 305 82
+2619c 4 306 82
+261a0 4 305 82
+261a4 4 306 82
+261a8 10 333 122
+261b8 c 306 82
+261c4 8 85 79
+261cc 10 308 82
+FUNC 261dc 64 0 testing::AssertionResult::operator<< <char const*>
+261dc c 305 82
+261e8 4 306 82
+261ec 4 305 82
+261f0 4 306 82
+261f4 4 305 82
+261f8 10 306 82
+26208 4 333 122
+2620c 4 150 79
+26210 c 333 122
+2621c c 306 82
+26228 8 85 79
+26230 10 308 82
+FUNC 26240 54 0 testing::AssertionResult::operator<< <char [3]>
+26240 c 305 82
+2624c 4 306 82
+26250 4 305 82
+26254 4 306 82
+26258 4 305 82
+2625c 4 306 82
+26260 10 333 122
+26270 c 306 82
+2627c 8 85 79
+26284 10 308 82
+FUNC 26294 54 0 testing::AssertionResult::operator<< <std::basic_string<char, std::char_traits<char>, std::allocator<char> > >
+26294 c 305 82
+262a0 4 306 82
+262a4 4 305 82
+262a8 4 306 82
+262ac 4 305 82
+262b0 4 306 82
+262b4 10 131 79
+262c4 c 306 82
+262d0 8 85 79
+262d8 10 308 82
+FUNC 262e8 54 0 testing::AssertionResult::operator<< <char [5]>
+262e8 c 305 82
+262f4 4 306 82
+262f8 4 305 82
+262fc 4 306 82
+26300 4 305 82
+26304 4 306 82
+26308 10 333 122
+26318 c 306 82
+26324 8 85 79
+2632c 10 308 82
+FUNC 2633c 104 0 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_appendT<char const*>
+2633c 4 468 131
+26340 4 470 131
+26344 14 468 131
+26358 8 468 131
+26360 4 470 131
+26364 4 355 114
+26368 c 472 131
+26374 10 473 131
+26384 4 356 101
+26388 4 346 101
+2638c 4 347 101
+26390 8 158 101
+26398 8 134 119
+263a0 8 158 101
+263a8 4 352 101
+263ac 4 353 101
+263b0 c 120 137
+263bc 4 479 131
+263c0 8 120 137
+263c8 10 148 137
+263d8 4 101 103
+263dc 8 478 131
+263e4 4 160 132
+263e8 4 164 132
+263ec c 165 132
+263f8 8 482 131
+26400 4 232 140
+26404 4 148 137
+26408 4 483 131
+2640c 8 148 137
+26414 8 101 103
+2641c c 485 131
+26428 18 489 131
+FUNC 26440 8c 0 std::operator+<char, std::char_traits<char>, std::allocator<char> >
+26440 10 80 134
+26450 4 229 140
+26454 8 80 134
+2645c 4 80 134
+26460 4 229 140
+26464 4 400 131
+26468 4 229 140
+2646c 4 400 131
+26470 4 124 132
+26474 4 120 132
+26478 4 400 131
+2647c 8 481 101
+26484 c 124 132
+26490 4 101 103
+26494 10 517 131
+264a4 14 497 131
+264b8 14 94 134
+FUNC 264cc 370 0 google_breakpad::AutoTempDir::DeleteRecursively
+264cc 1c 69 63
+264e8 8 69 63
+264f0 c 71 63
+264fc 4 72 63
+26500 4 77 63
+26504 4 277 82
+26508 4 77 63
+2650c 4 79 63
+26510 4 256 82
+26514 10 76 63
+26524 14 77 63
+26538 10 77 63
+26548 4 77 63
+2654c 10 79 63
+2655c 4 79 63
+26560 4 79 63
+26564 10 79 63
+26574 8 156 132
+2657c c 81 63
+26588 8 81 63
+26590 4 1139 87
+26594 4 277 82
+26598 4 81 63
+2659c 24 81 63
+265c0 4 81 63
+265c4 4 81 63
+265c8 4 81 63
+265cc 1c 81 63
+265e8 8 81 63
+265f0 c 81 63
+265fc 8 85 79
+26604 8 81 63
+2660c 8 156 132
+26614 8 256 82
+2661c 10 82 63
+2662c 10 83 63
+2663c 8 85 63
+26644 8 85 63
+2664c 4 1139 87
+26650 4 277 82
+26654 4 85 63
+26658 24 85 63
+2667c 4 85 63
+26680 4 85 63
+26684 4 85 63
+26688 1c 85 63
+266a4 8 85 63
+266ac c 85 63
+266b8 8 85 79
+266c0 8 85 63
+266c8 8 156 132
+266d0 8 256 82
+266d8 c 156 132
+266e4 4 87 63
+266e8 4 277 82
+266ec c 87 63
+266f8 4 1139 87
+266fc 4 277 82
+26700 4 87 63
+26704 24 87 63
+26728 4 87 63
+2672c 4 87 63
+26730 4 87 63
+26734 1c 87 63
+26750 8 87 63
+26758 c 87 63
+26764 8 85 79
+2676c 8 87 63
+26774 8 156 132
+2677c 8 256 82
+26784 8 88 63
+2678c 8 88 63
+26794 4 1139 87
+26798 4 277 82
+2679c 4 88 63
+267a0 24 88 63
+267c4 4 88 63
+267c8 4 88 63
+267cc 4 88 63
+267d0 1c 88 63
+267ec 8 88 63
+267f4 c 88 63
+26800 8 85 79
+26808 8 88 63
+26810 8 156 132
+26818 8 256 82
+26820 1c 89 63
+FUNC 2683c 28 0 google_breakpad::AutoTempDir::~AutoTempDir
+2683c 4 60 63
+26840 4 61 63
+26844 8 60 63
+2684c 4 60 63
+26850 4 61 63
+26854 4 156 132
+26858 8 62 63
+26860 4 156 132
+FUNC 26864 70 0 CreateTMPFile
+26864 10 99 6
+26874 4 100 6
+26878 4 99 6
+2687c 10 100 6
+2688c c 103 6
+26898 8 104 6
+268a0 4 105 6
+268a4 c 106 6
+268b0 8 107 6
+268b8 8 156 132
+268c0 14 109 6
+FUNC 268d4 b0 0 ExceptionHandlerTest_SimpleWithFD_Test::TestBody
+268d4 c 170 6
+268e0 4 171 6
+268e4 4 170 6
+268e8 4 171 6
+268ec 4 174 6
+268f0 4 170 6
+268f4 4 171 6
+268f8 14 172 6
+2690c 10 173 6
+2691c c 174 6
+26928 20 174 6
+26948 8 174 6
+26950 8 175 6
+26958 8 174 6
+26960 8 156 132
+26968 8 175 6
+26970 14 176 6
+FUNC 26984 124 0 std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::xsputn
+26984 4 170 126
+26988 4 174 126
+2698c 10 170 126
+2699c c 170 126
+269a8 4 174 126
+269ac 4 174 126
+269b0 c 174 126
+269bc 8 177 126
+269c4 c 177 126
+269d0 4 172 126
+269d4 14 193 126
+269e8 c 194 126
+269f4 10 497 131
+26a04 4 197 126
+26a08 4 93 129
+26a0c 4 94 129
+26a10 8 95 129
+26a18 10 497 131
+26a28 4 400 131
+26a2c 4 117 129
+26a30 4 400 131
+26a34 4 115 129
+26a38 4 119 129
+26a3c 4 115 129
+26a40 8 205 126
+26a48 c 172 126
+26a54 4 178 126
+26a58 8 179 126
+26a60 4 172 140
+26a64 4 172 140
+26a68 c 115 129
+26a74 8 182 126
+26a7c 4 172 140
+26a80 8 172 140
+26a88 4 186 126
+26a8c 8 187 126
+26a94 14 209 126
+FUNC 26aa8 88 0 testing::PrintToString<int>
+26aa8 4 883 80
+26aac 4 884 80
+26ab0 8 883 80
+26ab8 4 884 80
+26abc 4 883 80
+26ac0 4 883 80
+26ac4 4 884 80
+26ac8 4 883 80
+26acc 4 884 80
+26ad0 18 238 121
+26ae8 4 240 121
+26aec 4 239 121
+26af0 8 239 121
+26af8 4 239 121
+26afc 4 239 121
+26b00 8 240 121
+26b08 c 75 127
+26b14 8 886 80
+26b1c 14 887 80
+FUNC 26b30 114 0 testing::internal::CmpHelperOpFailure<int, int>
+26b30 c 1579 82
+26b3c 4 1583 82
+26b40 8 1579 82
+26b48 4 1579 82
+26b4c 4 1583 82
+26b50 4 1579 82
+26b54 4 1382 82
+26b58 10 1579 82
+26b68 4 1583 82
+26b6c 10 1583 82
+26b7c 8 1583 82
+26b84 c 1583 82
+26b90 8 1583 82
+26b98 c 1583 82
+26ba4 8 1583 82
+26bac 10 1584 82
+26bbc 10 1382 82
+26bcc 8 1584 82
+26bd4 4 1382 82
+26bd8 4 1584 82
+26bdc 10 1585 82
+26bec 10 1382 82
+26bfc 10 1585 82
+26c0c 8 1585 82
+26c14 10 156 132
+26c24 8 256 82
+26c2c 18 1586 82
+FUNC 26c44 44 0 testing::internal::CmpHelperNE<int, int>
+26c44 14 1615 82
+26c58 c 1615 82
+26c64 4 1615 82
+26c68 4 1615 82
+26c6c c 1615 82
+26c78 10 1615 82
+FUNC 26c88 9c 0 testing::internal::CmpHelperEQ<int, int>
+26c88 10 1476 82
+26c98 8 1476 82
+26ca0 10 1481 82
+26cb0 8 1482 82
+26cb8 2c 1382 82
+26ce4 1c 1471 82
+26d00 10 156 132
+26d10 14 1488 82
+FUNC 26d24 1f8 0 WaitForProcessToTerminate
+26d24 14 129 6
+26d38 8 129 6
+26d40 20 131 6
+26d60 4 131 6
+26d64 c 131 6
+26d70 c 131 6
+26d7c 30 131 6
+26dac 8 131 6
+26db4 c 302 82
+26dc0 18 131 6
+26dd8 c 256 82
+26de4 4 1139 87
+26de8 14 132 6
+26dfc 4 277 82
+26e00 4 132 6
+26e04 20 132 6
+26e24 4 132 6
+26e28 4 132 6
+26e2c 1c 132 6
+26e48 8 132 6
+26e50 c 132 6
+26e5c 8 85 79
+26e64 8 132 6
+26e6c 8 156 132
+26e74 10 256 82
+26e84 4 133 6
+26e88 c 1512 82
+26e94 8 133 6
+26e9c 14 1512 82
+26eb0 8 133 6
+26eb8 c 302 82
+26ec4 18 133 6
+26edc 8 133 6
+26ee4 c 133 6
+26ef0 8 85 79
+26ef8 8 133 6
+26f00 8 256 82
+26f08 14 134 6
+FUNC 26f1c 5c 0 testing::PrintToString<long int>
+26f1c 4 883 80
+26f20 4 884 80
+26f24 8 883 80
+26f2c 4 884 80
+26f30 4 883 80
+26f34 4 883 80
+26f38 4 884 80
+26f3c 4 883 80
+26f40 4 884 80
+26f44 c 259 121
+26f50 c 75 127
+26f5c 8 886 80
+26f64 14 887 80
+FUNC 26f78 9c 0 testing::internal::CmpHelperEQ<long int, long int>
+26f78 10 1476 82
+26f88 8 1476 82
+26f90 10 1481 82
+26fa0 8 1482 82
+26fa8 2c 1382 82
+26fd4 1c 1471 82
+26ff0 10 156 132
+27000 14 1488 82
+FUNC 27014 9c 0 testing::internal::CmpHelperEQ<int, long int>
+27014 10 1476 82
+27024 8 1476 82
+2702c 10 1481 82
+2703c 8 1482 82
+27044 2c 1382 82
+27070 1c 1471 82
+2708c 10 156 132
+2709c 14 1488 82
+FUNC 270b0 39c 0 ReadMinidumpPathFromPipe
+270b0 10 137 6
+270c0 4 139 6
+270c4 8 137 6
+270cc 4 140 6
+270d0 4 137 6
+270d4 4 141 6
+270d8 4 143 6
+270dc 4 137 6
+270e0 4 141 6
+270e4 1c 143 6
+27100 4 143 6
+27104 c 143 6
+27110 4 144 6
+27114 4 143 6
+27118 4 144 6
+2711c 30 1512 82
+2714c 8 144 6
+27154 c 302 82
+27160 18 144 6
+27178 10 256 82
+27188 4 1139 87
+2718c 8 145 6
+27194 4 277 82
+27198 4 145 6
+2719c 24 145 6
+271c0 1c 145 6
+271dc 8 145 6
+271e4 c 145 6
+271f0 8 85 79
+271f8 8 145 6
+27200 c 156 132
+2720c 8 256 82
+27214 18 148 6
+2722c 20 1512 82
+2724c 8 148 6
+27254 c 302 82
+27260 18 148 6
+27278 8 148 6
+27280 c 148 6
+2728c 8 85 79
+27294 8 148 6
+2729c 10 256 82
+272ac 8 149 6
+272b4 4 1619 82
+272b8 4 1619 82
+272bc 8 1619 82
+272c4 8 1619 82
+272cc 24 1619 82
+272f0 8 149 6
+272f8 c 302 82
+27304 18 149 6
+2731c 8 149 6
+27324 c 149 6
+27330 8 85 79
+27338 8 149 6
+27340 14 256 82
+27354 14 150 6
+27368 14 151 6
+2737c 20 1512 82
+2739c 8 151 6
+273a4 c 302 82
+273b0 18 151 6
+273c8 8 151 6
+273d0 c 151 6
+273dc 8 85 79
+273e4 8 151 6
+273ec 8 256 82
+273f4 18 156 6
+2740c 8 256 82
+27414 8 152 6
+2741c 8 153 6
+27424 c 154 6
+27430 4 155 6
+27434 14 156 6
+27448 4 155 6
+FUNC 2744c 134 0 testing::internal::CmpHelperGT<long int, int>
+2744c 14 1623 82
+27460 14 1623 82
+27474 4 1623 82
+27478 4 1623 82
+2747c 1c 1583 82
+27498 c 1382 82
+274a4 4 1583 82
+274a8 10 1583 82
+274b8 8 1583 82
+274c0 c 1583 82
+274cc 8 1583 82
+274d4 c 1583 82
+274e0 8 1583 82
+274e8 10 1584 82
+274f8 10 1382 82
+27508 8 1584 82
+27510 4 1382 82
+27514 4 1584 82
+27518 10 1585 82
+27528 10 1382 82
+27538 10 1585 82
+27548 8 1585 82
+27550 10 156 132
+27560 8 256 82
+27568 18 1623 82
+FUNC 27580 2d0 0 ExceptionHandlerTest_GenerateMultipleDumpsWithFD_Test::TestBody
+27580 10 1019 6
+27590 8 1020 6
+27598 c 1019 6
+275a4 8 1021 6
+275ac 4 1019 6
+275b0 4 1020 6
+275b4 4 1023 6
+275b8 8 1021 6
+275c0 4 277 82
+275c4 4 1021 6
+275c8 4 1139 87
+275cc 10 1022 6
+275dc c 1023 6
+275e8 20 1023 6
+27608 8 1023 6
+27610 8 1024 6
+27618 4 277 82
+2761c 4 1024 6
+27620 4 1139 87
+27624 4 1024 6
+27628 20 1024 6
+27648 4 1024 6
+2764c 4 1024 6
+27650 18 1024 6
+27668 4 256 82
+2766c 4 1027 6
+27670 8 1028 6
+27678 4 256 82
+2767c 4 1028 6
+27680 c 1027 6
+2768c 8 1028 6
+27694 8 1027 6
+2769c 24 1028 6
+276c0 4 302 82
+276c4 4 1028 6
+276c8 8 302 82
+276d0 18 1028 6
+276e8 8 256 82
+276f0 8 1031 6
+276f8 4 1139 87
+276fc 4 1031 6
+27700 4 277 82
+27704 4 1031 6
+27708 20 1031 6
+27728 4 1031 6
+2772c 4 1031 6
+27730 18 1031 6
+27748 4 1031 6
+2774c 4 1031 6
+27750 8 1031 6
+27758 c 1031 6
+27764 8 85 79
+2776c 8 1031 6
+27774 8 156 132
+2777c 10 256 82
+2778c 14 1032 6
+277a0 24 1033 6
+277c4 4 302 82
+277c8 4 1033 6
+277cc 8 302 82
+277d4 18 1033 6
+277ec 8 1033 6
+277f4 c 1033 6
+27800 8 85 79
+27808 8 1033 6
+27810 10 256 82
+27820 10 156 132
+27830 20 1034 6
+FUNC 27850 88 0 testing::PrintToString<void*>
+27850 4 883 80
+27854 4 884 80
+27858 8 883 80
+27860 4 884 80
+27864 4 883 80
+27868 4 884 80
+2786c 4 883 80
+27870 4 883 80
+27874 c 884 80
+27880 4 310 80
+27884 14 333 122
+27898 10 318 80
+278a8 8 291 121
+278b0 c 75 127
+278bc 8 886 80
+278c4 14 887 80
+FUNC 278d8 114 0 testing::internal::CmpHelperOpFailure<void*, void*>
+278d8 c 1579 82
+278e4 4 1583 82
+278e8 8 1579 82
+278f0 4 1579 82
+278f4 4 1583 82
+278f8 4 1579 82
+278fc 4 1382 82
+27900 10 1579 82
+27910 4 1583 82
+27914 10 1583 82
+27924 8 1583 82
+2792c c 1583 82
+27938 8 1583 82
+27940 c 1583 82
+2794c 8 1583 82
+27954 10 1584 82
+27964 10 1382 82
+27974 8 1584 82
+2797c 4 1382 82
+27980 4 1584 82
+27984 10 1585 82
+27994 10 1382 82
+279a4 10 1585 82
+279b4 8 1585 82
+279bc 10 156 132
+279cc 8 256 82
+279d4 18 1586 82
+FUNC 279ec 5c 0 testing::PrintToString<unsigned int>
+279ec 4 883 80
+279f0 4 884 80
+279f4 8 883 80
+279fc 4 884 80
+27a00 4 883 80
+27a04 4 883 80
+27a08 4 884 80
+27a0c 4 883 80
+27a10 4 884 80
+27a14 c 254 121
+27a20 c 75 127
+27a2c 8 886 80
+27a34 14 887 80
+FUNC 27a48 134 0 testing::internal::CmpHelperLT<unsigned int, unsigned int>
+27a48 14 1619 82
+27a5c 14 1619 82
+27a70 4 1619 82
+27a74 4 1619 82
+27a78 1c 1583 82
+27a94 c 1382 82
+27aa0 4 1583 82
+27aa4 10 1583 82
+27ab4 8 1583 82
+27abc c 1583 82
+27ac8 8 1583 82
+27ad0 c 1583 82
+27adc 8 1583 82
+27ae4 10 1584 82
+27af4 10 1382 82
+27b04 8 1584 82
+27b0c 4 1382 82
+27b10 4 1584 82
+27b14 10 1585 82
+27b24 10 1382 82
+27b34 10 1585 82
+27b44 8 1585 82
+27b4c 10 156 132
+27b5c 8 256 82
+27b64 18 1619 82
+FUNC 27b7c 9c 0 testing::internal::CmpHelperEQ<unsigned int, unsigned int>
+27b7c 10 1476 82
+27b8c 8 1476 82
+27b94 10 1481 82
+27ba4 8 1482 82
+27bac 2c 1382 82
+27bd8 1c 1471 82
+27bf4 10 156 132
+27c04 14 1488 82
+FUNC 27c18 158 0 testing::internal::CmpHelperEQFailure<MDExceptionCodeLinux, unsigned int>
+27c18 c 1464 82
+27c24 4 884 80
+27c28 14 1464 82
+27c3c 8 884 80
+27c44 4 1464 82
+27c48 c 1464 82
+27c54 8 884 80
+27c5c 20 181 122
+27c7c 4 199 121
+27c80 1c 211 121
+27c9c 4 202 121
+27ca0 4 145 110
+27ca4 4 202 121
+27ca8 4 145 110
+27cac 4 202 121
+27cb0 8 145 110
+27cb8 8 202 121
+27cc0 4 202 121
+27cc4 4 78 120
+27cc8 8 202 121
+27cd0 c 78 120
+27cdc 4 57 123
+27ce0 10 78 120
+27cf0 8 202 121
+27cf8 4 210 121
+27cfc 8 212 121
+27d04 c 75 127
+27d10 8 886 80
+27d18 c 1382 82
+27d24 1c 1471 82
+27d40 10 156 132
+27d50 20 1472 82
+FUNC 27d70 5c 0 testing::PrintToString<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >
+27d70 4 883 80
+27d74 4 884 80
+27d78 8 883 80
+27d80 4 884 80
+27d84 4 883 80
+27d88 4 883 80
+27d8c 4 884 80
+27d90 4 883 80
+27d94 4 884 80
+27d98 c 469 80
+27da4 c 75 127
+27db0 8 886 80
+27db8 14 887 80
+FUNC 27dcc c0 0 testing::internal::CmpHelperEQ<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >
+27dcc 14 1476 82
+27de0 18 1476 82
+27df8 4 400 131
+27dfc 4 1476 82
+27e00 c 400 131
+27e0c 8 289 134
+27e14 4 226 140
+27e18 4 289 134
+27e1c 20 1382 82
+27e3c 1c 1471 82
+27e58 14 156 132
+27e6c 8 1482 82
+27e74 18 1488 82
+FUNC 27e8c 1e8 0 ExceptionHandlerTest_SimpleWithPath_Test::TestBody
+27e8c 10 160 6
+27e9c 4 161 6
+27ea0 4 1512 82
+27ea4 4 161 6
+27ea8 8 160 6
+27eb0 4 163 6
+27eb4 4 161 6
+27eb8 8 163 6
+27ec0 4 163 6
+27ec4 4 1512 82
+27ec8 8 163 6
+27ed0 20 163 6
+27ef0 8 163 6
+27ef8 c 87 8
+27f04 20 1512 82
+27f24 8 156 132
+27f2c 8 164 6
+27f34 c 302 82
+27f40 18 164 6
+27f58 8 164 6
+27f60 c 164 6
+27f6c 8 85 79
+27f74 8 164 6
+27f7c 8 256 82
+27f84 14 165 6
+27f98 c 166 6
+27fa4 c 140 5
+27fb0 8 166 6
+27fb8 c 87 8
+27fc4 1c 1512 82
+27fe0 8 156 132
+27fe8 8 167 6
+27ff0 4 302 82
+27ff4 4 167 6
+27ff8 8 302 82
+28000 18 167 6
+28018 8 167 6
+28020 c 167 6
+2802c 8 85 79
+28034 8 167 6
+2803c 8 256 82
+28044 8 156 132
+2804c 8 163 6
+28054 8 167 6
+2805c 18 168 6
+FUNC 28074 5c 0 testing::PrintToString<long unsigned int>
+28074 4 883 80
+28078 4 884 80
+2807c 8 883 80
+28084 4 884 80
+28088 4 883 80
+2808c 4 883 80
+28090 4 884 80
+28094 4 883 80
+28098 4 884 80
+2809c c 263 121
+280a8 c 75 127
+280b4 8 886 80
+280bc 14 887 80
+FUNC 280d0 9c 0 testing::internal::CmpHelperEQ<long unsigned int, unsigned int>
+280d0 10 1476 82
+280e0 8 1476 82
+280e8 10 1481 82
+280f8 8 1482 82
+28100 2c 1382 82
+2812c 1c 1471 82
+28148 10 156 132
+28158 14 1488 82
+FUNC 2816c 9c 0 testing::internal::CmpHelperEQ<unsigned int, long unsigned int>
+2816c 10 1476 82
+2817c 8 1476 82
+28184 10 1481 82
+28194 8 1482 82
+2819c 2c 1382 82
+281c8 1c 1471 82
+281e4 10 156 132
+281f4 14 1488 82
+FUNC 28208 9c 0 testing::internal::CmpHelperEQ<long unsigned int, long unsigned int>
+28208 10 1476 82
+28218 8 1476 82
+28220 10 1481 82
+28230 8 1482 82
+28238 2c 1382 82
+28264 1c 1471 82
+28280 10 156 132
+28290 14 1488 82
+FUNC 282a4 28 0 std::fpos<mbstate_t>::fpos
+282a4 4 89 140
+282a8 10 89 140
+282b8 10 89 140
+282c8 4 89 140
+FUNC 282cc 20 0 std::basic_streambuf<char, std::char_traits<char> >::seekpos
+282cc 4 188 128
+282d0 4 189 128
+282d4 4 188 128
+282d8 14 189 128
+FUNC 282ec 20 0 std::basic_streambuf<char, std::char_traits<char> >::seekoff
+282ec 4 193 128
+282f0 4 195 128
+282f4 4 193 128
+282f8 14 195 128
+FUNC 2830c 110 0 std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::seekoff
+2830c 10 299 126
+2831c 8 303 126
+28324 4 305 126
+28328 4 306 126
+2832c 10 308 126
+2833c 4 311 126
+28340 8 311 126
+28348 4 311 126
+2834c 8 311 126
+28354 8 315 126
+2835c 4 323 126
+28360 c 323 126
+2836c 4 332 126
+28370 8 324 126
+28378 8 335 126
+28380 8 337 126
+28388 c 312 126
+28394 8 353 126
+2839c c 323 126
+283a8 4 332 126
+283ac 8 324 126
+283b4 4 337 126
+283b8 4 339 126
+283bc 4 94 129
+283c0 8 343 126
+283c8 8 344 126
+283d0 c 346 126
+283dc 8 115 129
+283e4 8 352 126
+283ec 8 315 126
+283f4 c 400 131
+28400 4 321 126
+28404 8 315 126
+2840c 4 317 126
+28410 4 332 126
+28414 8 334 126
+FUNC 2841c 124 0 std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::seekpos
+2841c 14 357 126
+28430 8 357 126
+28438 4 359 126
+2843c 8 357 126
+28444 4 359 126
+28448 4 362 126
+2844c 4 361 126
+28450 c 364 126
+2845c 4 367 126
+28460 c 367 126
+2846c 4 367 126
+28470 8 367 126
+28478 c 370 126
+28484 8 104 140
+2848c 4 372 126
+28490 8 373 126
+28498 14 373 126
+284ac 4 378 126
+284b0 c 379 126
+284bc 4 400 131
+284c0 c 379 126
+284cc 4 375 126
+284d0 4 94 129
+284d4 4 378 126
+284d8 c 386 126
+284e4 18 380 126
+284fc 4 115 129
+28500 4 117 129
+28504 4 119 129
+28508 8 115 129
+28510 4 367 126
+28514 c 370 126
+28520 c 104 140
+2852c 14 387 126
+FUNC 28540 b0 0 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_reserve
+28540 10 170 130
+28550 4 170 130
+28554 4 356 101
+28558 4 346 101
+2855c 4 347 101
+28560 8 158 101
+28568 c 134 119
+28574 8 158 101
+2857c 4 352 101
+28580 8 158 101
+28588 10 86 137
+28598 c 86 137
+285a4 10 146 103
+285b4 10 174 130
+285c4 4 101 103
+285c8 4 174 130
+285cc 4 164 132
+285d0 4 175 130
+285d4 4 165 132
+285d8 4 175 130
+285dc 4 176 130
+285e0 4 160 132
+285e4 c 176 130
+FUNC 285f0 60 0 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::push_back
+285f0 c 534 131
+285fc 8 534 131
+28604 10 535 131
+28614 c 536 131
+28620 c 536 131
+2862c 8 101 103
+28634 4 232 140
+28638 c 539 131
+28644 c 540 131
+FUNC 28650 c4 0 std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::overflow
+28650 4 142 126
+28654 4 144 126
+28658 c 142 126
+28664 8 142 126
+2866c 4 182 140
+28670 4 144 126
+28674 4 145 126
+28678 4 163 126
+2867c 4 145 126
+28680 14 146 126
+28694 8 147 126
+2869c c 115 129
+286a8 4 149 126
+286ac c 150 126
+286b8 10 151 126
+286c8 4 153 126
+286cc 4 93 129
+286d0 4 94 129
+286d4 8 95 129
+286dc 10 157 126
+286ec 4 117 129
+286f0 4 119 129
+286f4 4 400 131
+286f8 c 115 129
+28704 10 166 126
+FUNC 28714 b8 0 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::append
+28714 10 180 130
+28724 c 180 130
+28730 4 181 130
+28734 8 400 131
+2873c 10 182 130
+2874c c 600 130
+28758 c 184 130
+28764 10 185 130
+28774 8 185 130
+2877c c 186 130
+28788 8 249 137
+28790 4 146 103
+28794 8 249 137
+2879c c 101 103
+287a8 4 232 140
+287ac c 189 130
+287b8 14 192 130
+FUNC 287cc 10c 0 std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::_M_xsputnc
+287cc 4 213 126
+287d0 4 217 126
+287d4 14 213 126
+287e8 8 213 126
+287f0 4 217 126
+287f4 4 217 126
+287f8 4 217 126
+287fc 4 220 126
+28800 4 215 126
+28804 10 220 126
+28814 4 235 140
+28818 8 221 126
+28820 8 222 126
+28828 4 235 140
+2882c c 115 129
+28838 8 225 126
+28840 4 235 140
+28844 4 230 126
+28848 4 235 140
+2884c c 238 126
+28858 4 239 126
+2885c 4 240 126
+28860 4 239 126
+28864 4 240 126
+28868 4 239 126
+2886c c 240 126
+28878 4 242 126
+2887c 4 93 129
+28880 4 94 129
+28884 8 95 129
+2888c 14 244 126
+288a0 4 400 131
+288a4 4 117 129
+288a8 4 400 131
+288ac 4 115 129
+288b0 4 119 129
+288b4 4 115 129
+288b8 8 250 126
+288c0 4 215 126
+288c4 14 254 126
+FUNC 288d8 f0 0 std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::setbuf
+288d8 4 262 126
+288dc 4 263 126
+288e0 10 262 126
+288f0 4 262 126
+288f4 c 263 126
+28900 8 269 126
+28908 4 271 126
+2890c 4 270 126
+28910 8 271 126
+28918 4 267 126
+2891c 8 265 126
+28924 8 274 126
+2892c 4 276 126
+28930 4 275 126
+28934 8 276 126
+2893c 4 266 126
+28940 4 264 126
+28944 4 400 131
+28948 4 279 126
+2894c c 400 131
+28958 4 72 132
+2895c 4 162 130
+28960 4 72 132
+28964 4 72 132
+28968 8 72 132
+28970 8 163 130
+28978 8 166 130
+28980 8 284 126
+28988 4 285 126
+2898c 4 93 129
+28990 4 94 129
+28994 4 95 129
+28998 8 288 126
+289a0 4 115 129
+289a4 4 117 129
+289a8 4 119 129
+289ac 4 115 129
+289b0 18 295 126
+FUNC 289c8 3e4 0 ChildCrash
+289c8 c 210 6
+289d4 4 211 6
+289d8 c 210 6
+289e4 4 211 6
+289e8 8 210 6
+289f0 4 214 6
+289f4 4 211 6
+289f8 4 212 6
+289fc c 214 6
+28a08 8 212 6
+28a10 4 214 6
+28a14 4 215 6
+28a18 14 216 6
+28a2c 4 218 6
+28a30 4 218 6
+28a34 10 218 6
+28a44 1c 218 6
+28a60 4 218 6
+28a64 4 218 6
+28a68 8 218 6
+28a70 c 302 82
+28a7c 18 218 6
+28a94 8 218 6
+28a9c c 218 6
+28aa8 8 85 79
+28ab0 8 218 6
+28ab8 10 256 82
+28ac8 8 221 6
+28ad0 4 222 6
+28ad4 4 225 6
+28ad8 c 227 6
+28ae4 c 227 6
+28af0 14 227 6
+28b04 8 229 6
+28b0c 4 230 6
+28b10 8 233 6
+28b18 4 230 6
+28b1c 4 233 6
+28b20 c 233 6
+28b2c 20 233 6
+28b4c 8 233 6
+28b54 10 207 6
+28b64 8 98 57
+28b6c 8 98 57
+28b74 4 239 6
+28b78 8 240 6
+28b80 c 242 6
+28b8c 8 242 6
+28b94 8 242 6
+28b9c 4 242 6
+28ba0 c 242 6
+28bac 8 242 6
+28bb4 8 242 6
+28bbc 10 244 6
+28bcc 20 242 6
+28bec c 245 6
+28bf8 8 245 6
+28c00 8 245 6
+28c08 4 245 6
+28c0c c 245 6
+28c18 8 245 6
+28c20 14 245 6
+28c34 20 245 6
+28c54 8 245 6
+28c5c c 245 6
+28c68 8 85 79
+28c70 8 245 6
+28c78 4 245 6
+28c7c 8 248 6
+28c84 4 248 6
+28c88 c 1552 82
+28c94 4 248 6
+28c98 8 1552 82
+28ca0 4 248 6
+28ca4 1c 1552 82
+28cc0 8 248 6
+28cc8 c 302 82
+28cd4 18 248 6
+28cec 8 256 82
+28cf4 28 249 6
+28d1c c 302 82
+28d28 18 249 6
+28d40 8 249 6
+28d48 c 249 6
+28d54 8 85 79
+28d5c 8 249 6
+28d64 14 256 82
+28d78 8 250 6
+28d80 10 156 132
+28d90 1c 251 6
+FUNC 28dac a8 0 ExceptionHandlerTest_ChildCrashWithPath_Test::TestBody
+28dac c 253 6
+28db8 10 254 6
+28dc8 8 254 6
+28dd0 8 254 6
+28dd8 4 254 6
+28ddc 8 254 6
+28de4 8 254 6
+28dec 14 254 6
+28e00 24 254 6
+28e24 8 254 6
+28e2c c 254 6
+28e38 8 85 79
+28e40 8 254 6
+28e48 c 255 6
+FUNC 28e54 a8 0 ExceptionHandlerTest_ChildCrashWithFD_Test::TestBody
+28e54 c 257 6
+28e60 10 258 6
+28e70 8 258 6
+28e78 8 258 6
+28e80 4 258 6
+28e84 8 258 6
+28e8c 8 258 6
+28e94 14 258 6
+28ea8 24 258 6
+28ecc 8 258 6
+28ed4 c 258 6
+28ee0 8 85 79
+28ee8 8 258 6
+28ef0 c 259 6
+FUNC 28efc 1a4 0 ExceptionHandlerTest_RedeliveryOnFilterCallbackFalse_Test::TestBody
+28efc c 315 6
+28f08 4 316 6
+28f0c 4 315 6
+28f10 8 316 6
+28f18 4 315 6
+28f1c 4 316 6
+28f20 8 318 6
+28f28 4 319 6
+28f2c 4 320 6
+28f30 4 1139 87
+28f34 4 320 6
+28f38 c 277 82
+28f44 4 320 6
+28f48 1c 320 6
+28f64 4 320 6
+28f68 4 320 6
+28f6c 4 320 6
+28f70 1c 320 6
+28f8c 8 320 6
+28f94 c 320 6
+28fa0 8 85 79
+28fa8 8 320 6
+28fb0 8 156 132
+28fb8 14 256 82
+28fcc c 321 6
+28fd8 14 321 6
+28fec 8 156 132
+28ff4 c 324 6
+29000 8 324 6
+29008 8 324 6
+29010 4 324 6
+29014 c 324 6
+29020 8 324 6
+29028 14 324 6
+2903c 24 324 6
+29060 8 324 6
+29068 c 324 6
+29074 8 85 79
+2907c 10 324 6
+2908c 14 325 6
+FUNC 290a0 1a4 0 ExceptionHandlerTest_RedeliveryOnDoneCallbackFalse_Test::TestBody
+290a0 c 327 6
+290ac 4 328 6
+290b0 4 327 6
+290b4 8 328 6
+290bc 4 327 6
+290c0 4 328 6
+290c4 8 330 6
+290cc 4 331 6
+290d0 4 332 6
+290d4 4 1139 87
+290d8 4 332 6
+290dc c 277 82
+290e8 4 332 6
+290ec 1c 332 6
+29108 4 332 6
+2910c 4 332 6
+29110 4 332 6
+29114 1c 332 6
+29130 8 332 6
+29138 c 332 6
+29144 8 85 79
+2914c 8 332 6
+29154 8 156 132
+2915c 14 256 82
+29170 c 333 6
+2917c 14 333 6
+29190 8 156 132
+29198 c 336 6
+291a4 8 336 6
+291ac 8 336 6
+291b4 4 336 6
+291b8 c 336 6
+291c4 8 336 6
+291cc 14 336 6
+291e0 24 336 6
+29204 8 336 6
+2920c c 336 6
+29218 8 85 79
+29220 10 336 6
+29230 14 337 6
+FUNC 29244 1a4 0 ExceptionHandlerTest_NoRedeliveryOnDoneCallbackTrue_Test::TestBody
+29244 c 339 6
+29250 4 340 6
+29254 4 339 6
+29258 8 340 6
+29260 4 339 6
+29264 4 340 6
+29268 8 342 6
+29270 4 343 6
+29274 4 344 6
+29278 4 1139 87
+2927c 4 344 6
+29280 c 277 82
+2928c 4 344 6
+29290 1c 344 6
+292ac 4 344 6
+292b0 4 344 6
+292b4 4 344 6
+292b8 1c 344 6
+292d4 8 344 6
+292dc c 344 6
+292e8 8 85 79
+292f0 8 344 6
+292f8 8 156 132
+29300 14 256 82
+29314 c 345 6
+29320 14 345 6
+29334 8 156 132
+2933c c 348 6
+29348 8 348 6
+29350 8 348 6
+29358 4 348 6
+2935c c 348 6
+29368 8 348 6
+29370 14 348 6
+29384 24 348 6
+293a8 8 348 6
+293b0 c 348 6
+293bc 8 85 79
+293c4 10 348 6
+293d4 14 349 6
+FUNC 293e8 1a4 0 ExceptionHandlerTest_NoRedeliveryOnFilterCallbackTrue_Test::TestBody
+293e8 c 351 6
+293f4 4 352 6
+293f8 4 351 6
+293fc 8 352 6
+29404 4 351 6
+29408 4 352 6
+2940c 8 354 6
+29414 4 355 6
+29418 4 356 6
+2941c 4 1139 87
+29420 4 356 6
+29424 c 277 82
+29430 4 356 6
+29434 1c 356 6
+29450 4 356 6
+29454 4 356 6
+29458 4 356 6
+2945c 1c 356 6
+29478 8 356 6
+29480 c 356 6
+2948c 8 85 79
+29494 8 356 6
+2949c 8 156 132
+294a4 14 256 82
+294b8 c 357 6
+294c4 14 357 6
+294d8 8 156 132
+294e0 c 360 6
+294ec 8 360 6
+294f4 8 360 6
+294fc 4 360 6
+29500 c 360 6
+2950c 8 360 6
+29514 14 360 6
+29528 24 360 6
+2954c 8 360 6
+29554 c 360 6
+29560 8 85 79
+29568 10 360 6
+29578 14 361 6
+FUNC 2958c fc 0 ExceptionHandlerTest_RedeliveryToDefaultHandler_Test::TestBody
+2958c c 363 6
+29598 4 364 6
+2959c 4 363 6
+295a0 c 364 6
+295ac 8 366 6
+295b4 4 367 6
+295b8 c 368 6
+295c4 14 368 6
+295d8 8 156 132
+295e0 c 373 6
+295ec 8 373 6
+295f4 8 373 6
+295fc 4 373 6
+29600 c 373 6
+2960c 8 373 6
+29614 14 373 6
+29628 24 373 6
+2964c 8 373 6
+29654 c 373 6
+29660 8 85 79
+29668 8 373 6
+29670 8 373 6
+29678 10 374 6
+FUNC 29688 324 0 ExceptionHandlerTest_RedeliveryOnBadSignalHandlerFlag_Test::TestBody
+29688 c 380 6
+29694 8 381 6
+2969c c 380 6
+296a8 8 381 6
+296b0 8 382 6
+296b8 4 383 6
+296bc 4 277 82
+296c0 4 385 6
+296c4 4 1139 87
+296c8 c 385 6
+296d4 4 277 82
+296d8 4 1139 87
+296dc 4 385 6
+296e0 24 385 6
+29704 1c 385 6
+29720 8 385 6
+29728 c 385 6
+29734 8 85 79
+2973c 8 385 6
+29744 8 156 132
+2974c 14 256 82
+29760 c 391 6
+2976c 24 391 6
+29790 8 391 6
+29798 10 396 6
+297a8 8 397 6
+297b0 4 1615 82
+297b4 4 397 6
+297b8 4 1615 82
+297bc 4 1615 82
+297c0 8 1615 82
+297c8 24 1615 82
+297ec c 397 6
+297f8 c 302 82
+29804 18 397 6
+2981c 8 256 82
+29824 18 399 6
+2983c 4 1615 82
+29840 4 1615 82
+29844 4 1615 82
+29848 8 1615 82
+29850 24 1615 82
+29874 c 399 6
+29880 c 302 82
+2988c 18 399 6
+298a4 8 399 6
+298ac c 399 6
+298b8 8 85 79
+298c0 8 399 6
+298c8 1c 256 82
+298e4 10 207 6
+298f4 8 403 6
+298fc c 406 6
+29908 8 406 6
+29910 8 406 6
+29918 4 406 6
+2991c c 406 6
+29928 8 406 6
+29930 14 406 6
+29944 24 406 6
+29968 8 406 6
+29970 c 406 6
+2997c 8 85 79
+29984 10 406 6
+29994 18 407 6
+FUNC 299ac 13c 0 ExceptionHandlerTest_StackedHandlersDeliveredToTop_Test::TestBody
+299ac c 409 6
+299b8 8 410 6
+299c0 4 409 6
+299c4 8 410 6
+299cc 8 412 6
+299d4 4 413 6
+299d8 10 419 6
+299e8 20 419 6
+29a08 8 419 6
+29a10 c 420 6
+29a1c 14 420 6
+29a30 8 156 132
+29a38 8 420 6
+29a40 c 422 6
+29a4c 8 422 6
+29a54 8 422 6
+29a5c 4 422 6
+29a60 c 422 6
+29a6c 8 422 6
+29a74 14 422 6
+29a88 24 422 6
+29aac 8 422 6
+29ab4 c 422 6
+29ac0 8 85 79
+29ac8 8 422 6
+29ad0 8 422 6
+29ad8 10 423 6
+FUNC 29ae8 13c 0 ExceptionHandlerTest_StackedHandlersNotDeliveredToBottom_Test::TestBody
+29ae8 c 425 6
+29af4 8 426 6
+29afc 4 425 6
+29b00 8 426 6
+29b08 8 428 6
+29b10 4 429 6
+29b14 10 435 6
+29b24 24 435 6
+29b48 8 435 6
+29b50 c 436 6
+29b5c 10 436 6
+29b6c 8 156 132
+29b74 8 436 6
+29b7c c 438 6
+29b88 8 438 6
+29b90 8 438 6
+29b98 4 438 6
+29b9c c 438 6
+29ba8 8 438 6
+29bb0 14 438 6
+29bc4 24 438 6
+29be8 8 438 6
+29bf0 c 438 6
+29bfc 8 85 79
+29c04 8 438 6
+29c0c 8 438 6
+29c14 10 439 6
+FUNC 29c24 140 0 ExceptionHandlerTest_StackedHandlersFilteredToBottom_Test::TestBody
+29c24 c 441 6
+29c30 8 442 6
+29c38 4 441 6
+29c3c 8 442 6
+29c44 8 444 6
+29c4c 4 445 6
+29c50 10 451 6
+29c60 24 451 6
+29c84 8 451 6
+29c8c c 452 6
+29c98 14 452 6
+29cac 8 156 132
+29cb4 8 452 6
+29cbc c 454 6
+29cc8 8 454 6
+29cd0 8 454 6
+29cd8 4 454 6
+29cdc c 454 6
+29ce8 8 454 6
+29cf0 14 454 6
+29d04 24 454 6
+29d28 8 454 6
+29d30 c 454 6
+29d3c 8 85 79
+29d44 8 454 6
+29d4c 8 454 6
+29d54 10 455 6
+FUNC 29d64 140 0 ExceptionHandlerTest_StackedHandlersUnhandledToBottom_Test::TestBody
+29d64 c 457 6
+29d70 8 458 6
+29d78 4 457 6
+29d7c 8 458 6
+29d84 8 460 6
+29d8c 4 461 6
+29d90 10 467 6
+29da0 24 467 6
+29dc4 8 467 6
+29dcc c 468 6
+29dd8 14 468 6
+29dec 8 156 132
+29df4 8 468 6
+29dfc c 470 6
+29e08 8 470 6
+29e10 8 470 6
+29e18 4 470 6
+29e1c c 470 6
+29e28 8 470 6
+29e30 14 470 6
+29e44 24 470 6
+29e68 8 470 6
+29e70 c 470 6
+29e7c 8 85 79
+29e84 8 470 6
+29e8c 8 470 6
+29e94 10 471 6
+FUNC 29ea4 9c4 0 ExceptionHandlerTest_ExternalDumper_Test::TestBody
+29ea4 4 926 6
+29ea8 4 928 6
+29eac 4 926 6
+29eb0 8 928 6
+29eb8 c 926 6
+29ec4 4 928 6
+29ec8 4 926 6
+29ecc c 928 6
+29ed8 10 926 6
+29ee8 c 928 6
+29ef4 20 928 6
+29f14 c 928 6
+29f20 4 928 6
+29f24 8 928 6
+29f2c c 302 82
+29f38 18 928 6
+29f50 8 928 6
+29f58 c 928 6
+29f64 8 85 79
+29f6c 8 928 6
+29f74 c 256 82
+29f80 8 930 6
+29f88 4 256 82
+29f8c 18 930 6
+29fa4 18 931 6
+29fbc 8 933 6
+29fc4 4 934 6
+29fc8 8 935 6
+29fd0 14 937 6
+29fe4 c 937 6
+29ff0 28 937 6
+2a018 8 156 132
+2a020 4 144 5
+2a024 4 207 6
+2a028 8 144 5
+2a030 c 207 6
+2a03c 8 939 6
+2a044 4 941 6
+2a048 4 955 6
+2a04c 8 941 6
+2a054 4 942 6
+2a058 8 948 6
+2a060 4 955 6
+2a064 4 948 6
+2a068 4 949 6
+2a06c 4 950 6
+2a070 4 949 6
+2a074 8 951 6
+2a07c 4 952 6
+2a080 4 942 6
+2a084 4 952 6
+2a088 4 953 6
+2a08c 4 942 6
+2a090 4 953 6
+2a094 1c 955 6
+2a0b0 4 955 6
+2a0b4 c 955 6
+2a0c0 8 956 6
+2a0c8 4 955 6
+2a0cc c 1512 82
+2a0d8 4 956 6
+2a0dc 10 1512 82
+2a0ec 4 956 6
+2a0f0 8 955 6
+2a0f8 4 1512 82
+2a0fc 8 956 6
+2a104 c 302 82
+2a110 14 956 6
+2a124 4 959 6
+2a128 8 959 6
+2a130 c 959 6
+2a13c 8 85 79
+2a144 8 959 6
+2a14c 10 256 82
+2a15c 4 1512 82
+2a160 4 256 82
+2a164 24 1512 82
+2a188 8 957 6
+2a190 c 302 82
+2a19c 18 957 6
+2a1b4 8 256 82
+2a1bc 4 958 6
+2a1c0 20 1552 82
+2a1e0 8 958 6
+2a1e8 c 302 82
+2a1f4 18 958 6
+2a20c 4 256 82
+2a210 4 1552 82
+2a214 4 256 82
+2a218 14 959 6
+2a22c 1c 1552 82
+2a248 8 959 6
+2a250 c 302 82
+2a25c 18 959 6
+2a274 4 256 82
+2a278 4 963 6
+2a27c 4 256 82
+2a280 c 961 6
+2a28c 8 962 6
+2a294 c 963 6
+2a2a0 4 963 6
+2a2a4 18 1512 82
+2a2bc 4 963 6
+2a2c0 c 965 6
+2a2cc c 967 6
+2a2d8 8 969 6
+2a2e0 8 970 6
+2a2e8 4 969 6
+2a2ec 4 1512 82
+2a2f0 4 969 6
+2a2f4 4 1512 82
+2a2f8 4 970 6
+2a2fc c 1512 82
+2a308 8 970 6
+2a310 4 302 82
+2a314 4 970 6
+2a318 8 302 82
+2a320 18 970 6
+2a338 8 970 6
+2a340 c 970 6
+2a34c 8 85 79
+2a354 8 970 6
+2a35c 10 256 82
+2a36c 8 971 6
+2a374 8 972 6
+2a37c c 975 6
+2a388 14 963 6
+2a39c 48 979 6
+2a3e4 c 302 82
+2a3f0 18 979 6
+2a408 8 256 82
+2a410 2c 980 6
+2a43c c 302 82
+2a448 18 980 6
+2a460 8 980 6
+2a468 c 980 6
+2a474 8 85 79
+2a47c 8 980 6
+2a484 10 256 82
+2a494 8 982 6
+2a49c 14 983 6
+2a4b0 1c 984 6
+2a4cc 4 277 82
+2a4d0 4 1139 87
+2a4d4 4 277 82
+2a4d8 4 1139 87
+2a4dc 4 984 6
+2a4e0 1c 984 6
+2a4fc 4 984 6
+2a500 4 984 6
+2a504 1c 984 6
+2a520 8 984 6
+2a528 c 984 6
+2a534 8 85 79
+2a53c 8 984 6
+2a544 c 156 132
+2a550 8 256 82
+2a558 8 987 6
+2a560 24 987 6
+2a584 4 987 6
+2a588 c 987 6
+2a594 4 987 6
+2a598 14 1512 82
+2a5ac 4 987 6
+2a5b0 10 1512 82
+2a5c0 4 987 6
+2a5c4 4 1512 82
+2a5c8 8 987 6
+2a5d0 c 302 82
+2a5dc 18 987 6
+2a5f4 8 987 6
+2a5fc c 987 6
+2a608 8 85 79
+2a610 8 987 6
+2a618 10 256 82
+2a628 c 990 6
+2a634 8 990 6
+2a63c 8 990 6
+2a644 4 990 6
+2a648 14 990 6
+2a65c c 990 6
+2a668 4 990 6
+2a66c 4 993 6
+2a670 4 993 6
+2a674 4 993 6
+2a678 4 1552 82
+2a67c 4 993 6
+2a680 4 1552 82
+2a684 8 993 6
+2a68c 4 993 6
+2a690 4 993 6
+2a694 1c 1552 82
+2a6b0 8 993 6
+2a6b8 c 302 82
+2a6c4 14 993 6
+2a6d8 4 994 6
+2a6dc 8 994 6
+2a6e4 c 994 6
+2a6f0 8 85 79
+2a6f8 8 994 6
+2a700 10 256 82
+2a710 20 990 6
+2a730 4 990 6
+2a734 4 990 6
+2a738 8 990 6
+2a740 c 990 6
+2a74c 8 85 79
+2a754 8 990 6
+2a75c 14 156 132
+2a770 8 256 82
+2a778 14 988 6
+2a78c 1c 1552 82
+2a7a8 8 988 6
+2a7b0 c 302 82
+2a7bc 18 988 6
+2a7d4 8 256 82
+2a7dc 28 994 6
+2a804 c 302 82
+2a810 18 994 6
+2a828 8 256 82
+2a830 8 995 6
+2a838 8 156 132
+2a840 28 996 6
+FUNC 2a868 aa4 0 ExceptionHandlerTest_InstructionPointerMemory_Test::TestBody
+2a868 10 487 6
+2a878 8 488 6
+2a880 10 487 6
+2a890 4 490 6
+2a894 4 487 6
+2a898 4 488 6
+2a89c c 490 6
+2a8a8 4 490 6
+2a8ac c 490 6
+2a8b8 1c 490 6
+2a8d4 8 490 6
+2a8dc 4 490 6
+2a8e0 8 490 6
+2a8e8 c 302 82
+2a8f4 18 490 6
+2a90c 8 490 6
+2a914 c 490 6
+2a920 8 85 79
+2a928 8 490 6
+2a930 10 256 82
+2a940 4 494 6
+2a944 4 256 82
+2a948 8 494 6
+2a950 8 497 6
+2a958 4 498 6
+2a95c 8 499 6
+2a964 c 502 6
+2a970 24 502 6
+2a994 8 502 6
+2a99c 1c 510 6
+2a9b8 4 511 6
+2a9bc 4 512 6
+2a9c0 10 517 6
+2a9d0 4 524 6
+2a9d4 8 524 6
+2a9dc 8 526 6
+2a9e4 c 528 6
+2a9f0 8 528 6
+2a9f8 8 528 6
+2aa00 4 528 6
+2aa04 c 528 6
+2aa10 8 528 6
+2aa18 4 528 6
+2aa1c 4 530 6
+2aa20 4 528 6
+2aa24 c 530 6
+2aa30 18 531 6
+2aa48 20 528 6
+2aa68 8 528 6
+2aa70 c 528 6
+2aa7c 8 85 79
+2aa84 8 528 6
+2aa8c 4 528 6
+2aa90 8 531 6
+2aa98 8 531 6
+2aaa0 4 531 6
+2aaa4 c 531 6
+2aab0 c 531 6
+2aabc 4 531 6
+2aac0 4 534 6
+2aac4 8 534 6
+2aacc 4 534 6
+2aad0 c 1552 82
+2aadc 4 534 6
+2aae0 4 534 6
+2aae4 1c 1552 82
+2ab00 8 534 6
+2ab08 c 302 82
+2ab14 1c 534 6
+2ab30 20 531 6
+2ab50 8 531 6
+2ab58 c 531 6
+2ab64 8 85 79
+2ab6c 8 531 6
+2ab74 4 531 6
+2ab78 8 256 82
+2ab80 28 535 6
+2aba8 c 302 82
+2abb4 18 535 6
+2abcc 8 535 6
+2abd4 c 535 6
+2abe0 8 85 79
+2abe8 8 535 6
+2abf0 10 256 82
+2ac00 8 1139 87
+2ac08 4 256 82
+2ac0c c 541 6
+2ac18 8 542 6
+2ac20 4 277 82
+2ac24 4 542 6
+2ac28 4 1139 87
+2ac2c 4 542 6
+2ac30 20 542 6
+2ac50 4 542 6
+2ac54 4 542 6
+2ac58 18 542 6
+2ac70 8 256 82
+2ac78 c 544 6
+2ac84 c 545 6
+2ac90 4 277 82
+2ac94 4 1139 87
+2ac98 c 277 82
+2aca4 4 546 6
+2aca8 20 546 6
+2acc8 4 546 6
+2accc 4 546 6
+2acd0 1c 546 6
+2acec 8 546 6
+2acf4 c 546 6
+2ad00 8 85 79
+2ad08 8 546 6
+2ad10 8 256 82
+2ad18 4 1139 87
+2ad1c c 277 82
+2ad28 4 547 6
+2ad2c 20 547 6
+2ad4c 4 547 6
+2ad50 4 547 6
+2ad54 18 547 6
+2ad6c 8 256 82
+2ad74 4 548 6
+2ad78 8 545 65
+2ad80 4 545 65
+2ad84 1c 548 6
+2ada0 8 548 6
+2ada8 4 548 6
+2adac 8 548 6
+2adb4 c 302 82
+2adc0 18 548 6
+2add8 8 548 6
+2ade0 c 548 6
+2adec 8 85 79
+2adf4 8 548 6
+2adfc c 256 82
+2ae08 8 1139 87
+2ae10 4 256 82
+2ae14 8 550 6
+2ae1c 4 277 82
+2ae20 4 550 6
+2ae24 8 277 82
+2ae2c 4 1139 87
+2ae30 4 551 6
+2ae34 24 551 6
+2ae58 18 551 6
+2ae70 c 256 82
+2ae7c 18 554 6
+2ae94 4 1139 87
+2ae98 4 554 6
+2ae9c 4 277 82
+2aea0 4 554 6
+2aea4 24 554 6
+2aec8 18 554 6
+2aee0 8 256 82
+2aee8 18 557 6
+2af00 4 277 82
+2af04 4 557 6
+2af08 4 1139 87
+2af0c 8 277 82
+2af14 4 558 6
+2af18 24 558 6
+2af3c 1c 558 6
+2af58 8 558 6
+2af60 c 558 6
+2af6c 8 85 79
+2af74 8 558 6
+2af7c 8 156 132
+2af84 10 256 82
+2af94 14 560 6
+2afa8 20 1512 82
+2afc8 8 560 6
+2afd0 c 302 82
+2afdc 18 560 6
+2aff4 8 560 6
+2affc c 560 6
+2b008 8 85 79
+2b010 8 560 6
+2b018 8 256 82
+2b020 4 561 6
+2b024 4 1139 87
+2b028 4 561 6
+2b02c 4 277 82
+2b030 4 561 6
+2b034 8 277 82
+2b03c 4 1139 87
+2b040 4 562 6
+2b044 24 562 6
+2b068 1c 562 6
+2b084 8 562 6
+2b08c c 562 6
+2b098 8 85 79
+2b0a0 8 562 6
+2b0a8 8 156 132
+2b0b0 14 256 82
+2b0c4 10 566 6
+2b0d4 10 567 6
+2b0e4 18 568 6
+2b0fc 4 1139 87
+2b100 4 277 82
+2b104 4 568 6
+2b108 20 568 6
+2b128 4 568 6
+2b12c 4 568 6
+2b130 4 568 6
+2b134 1c 568 6
+2b150 8 568 6
+2b158 c 568 6
+2b164 8 85 79
+2b16c 8 568 6
+2b174 8 156 132
+2b17c 8 256 82
+2b184 1c 569 6
+2b1a0 4 1139 87
+2b1a4 4 277 82
+2b1a8 4 569 6
+2b1ac 20 569 6
+2b1cc 4 569 6
+2b1d0 4 569 6
+2b1d4 4 569 6
+2b1d8 1c 569 6
+2b1f4 8 569 6
+2b1fc c 570 6
+2b208 8 85 79
+2b210 8 569 6
+2b218 8 156 132
+2b220 8 256 82
+2b228 18 571 6
+2b240 4 1139 87
+2b244 4 277 82
+2b248 4 571 6
+2b24c 20 571 6
+2b26c 4 571 6
+2b270 4 571 6
+2b274 4 571 6
+2b278 1c 571 6
+2b294 8 571 6
+2b29c c 572 6
+2b2a8 8 85 79
+2b2b0 8 571 6
+2b2b8 8 156 132
+2b2c0 8 256 82
+2b2c8 10 574 6
+2b2d8 10 156 132
+2b2e8 24 575 6
+FUNC 2b30c 9b4 0 ExceptionHandlerTest_InstructionPointerMemoryMinBound_Test::TestBody
+2b30c 10 579 6
+2b31c 8 580 6
+2b324 10 579 6
+2b334 4 582 6
+2b338 4 580 6
+2b33c c 582 6
+2b348 4 582 6
+2b34c c 582 6
+2b358 1c 582 6
+2b374 8 582 6
+2b37c 4 582 6
+2b380 8 582 6
+2b388 c 302 82
+2b394 18 582 6
+2b3ac 8 582 6
+2b3b4 c 582 6
+2b3c0 8 85 79
+2b3c8 8 582 6
+2b3d0 14 256 82
+2b3e4 8 589 6
+2b3ec 4 590 6
+2b3f0 8 591 6
+2b3f8 c 594 6
+2b404 24 594 6
+2b428 8 594 6
+2b430 20 602 6
+2b450 4 603 6
+2b454 4 604 6
+2b458 c 609 6
+2b464 4 616 6
+2b468 8 616 6
+2b470 8 618 6
+2b478 c 620 6
+2b484 8 620 6
+2b48c 8 620 6
+2b494 4 620 6
+2b498 c 620 6
+2b4a4 8 620 6
+2b4ac 4 620 6
+2b4b0 4 622 6
+2b4b4 4 620 6
+2b4b8 c 622 6
+2b4c4 18 623 6
+2b4dc 20 620 6
+2b4fc 8 620 6
+2b504 c 620 6
+2b510 8 85 79
+2b518 8 620 6
+2b520 4 620 6
+2b524 8 623 6
+2b52c 8 623 6
+2b534 4 623 6
+2b538 c 623 6
+2b544 c 623 6
+2b550 4 623 6
+2b554 4 626 6
+2b558 8 626 6
+2b560 4 626 6
+2b564 8 1552 82
+2b56c 4 626 6
+2b570 4 626 6
+2b574 4 626 6
+2b578 1c 1552 82
+2b594 8 626 6
+2b59c c 302 82
+2b5a8 1c 626 6
+2b5c4 20 623 6
+2b5e4 8 623 6
+2b5ec c 623 6
+2b5f8 8 85 79
+2b600 8 623 6
+2b608 4 623 6
+2b60c 8 256 82
+2b614 28 627 6
+2b63c c 302 82
+2b648 18 627 6
+2b660 8 627 6
+2b668 c 627 6
+2b674 8 85 79
+2b67c 8 627 6
+2b684 10 256 82
+2b694 8 1139 87
+2b69c 4 256 82
+2b6a0 c 633 6
+2b6ac 8 634 6
+2b6b4 4 277 82
+2b6b8 4 634 6
+2b6bc 4 1139 87
+2b6c0 4 634 6
+2b6c4 20 634 6
+2b6e4 4 634 6
+2b6e8 4 634 6
+2b6ec 18 634 6
+2b704 8 256 82
+2b70c c 636 6
+2b718 8 637 6
+2b720 4 1139 87
+2b724 4 277 82
+2b728 4 637 6
+2b72c 8 277 82
+2b734 4 638 6
+2b738 20 638 6
+2b758 4 638 6
+2b75c 4 638 6
+2b760 18 638 6
+2b778 8 256 82
+2b780 4 1139 87
+2b784 c 277 82
+2b790 4 639 6
+2b794 20 639 6
+2b7b4 4 639 6
+2b7b8 4 639 6
+2b7bc 1c 639 6
+2b7d8 8 639 6
+2b7e0 c 639 6
+2b7ec 8 85 79
+2b7f4 8 639 6
+2b7fc 8 156 132
+2b804 10 256 82
+2b814 4 640 6
+2b818 8 545 65
+2b820 4 545 65
+2b824 8 640 6
+2b82c 4 640 6
+2b830 14 640 6
+2b844 4 640 6
+2b848 4 640 6
+2b84c 8 640 6
+2b854 c 302 82
+2b860 18 640 6
+2b878 8 640 6
+2b880 c 640 6
+2b88c 8 85 79
+2b894 c 640 6
+2b8a0 4 256 82
+2b8a4 4 1139 87
+2b8a8 4 256 82
+2b8ac 8 642 6
+2b8b4 4 277 82
+2b8b8 4 642 6
+2b8bc 8 277 82
+2b8c4 4 1139 87
+2b8c8 4 643 6
+2b8cc 20 643 6
+2b8ec 4 643 6
+2b8f0 4 643 6
+2b8f4 18 643 6
+2b90c 4 256 82
+2b910 4 646 6
+2b914 4 256 82
+2b918 c 646 6
+2b924 4 1139 87
+2b928 4 646 6
+2b92c 4 277 82
+2b930 4 646 6
+2b934 20 646 6
+2b954 4 646 6
+2b958 4 646 6
+2b95c 18 646 6
+2b974 8 256 82
+2b97c 14 649 6
+2b990 4 277 82
+2b994 4 649 6
+2b998 4 1139 87
+2b99c 8 277 82
+2b9a4 4 650 6
+2b9a8 20 650 6
+2b9c8 4 650 6
+2b9cc 4 650 6
+2b9d0 18 650 6
+2b9e8 8 256 82
+2b9f0 1c 652 6
+2ba0c 20 1512 82
+2ba2c 8 652 6
+2ba34 c 302 82
+2ba40 18 652 6
+2ba58 8 652 6
+2ba60 c 652 6
+2ba6c 8 85 79
+2ba74 8 652 6
+2ba7c 4 256 82
+2ba80 4 1139 87
+2ba84 4 256 82
+2ba88 8 653 6
+2ba90 4 277 82
+2ba94 4 653 6
+2ba98 8 277 82
+2baa0 4 1139 87
+2baa4 4 654 6
+2baa8 20 654 6
+2bac8 4 654 6
+2bacc 4 654 6
+2bad0 1c 654 6
+2baec 8 654 6
+2baf4 c 654 6
+2bb00 8 85 79
+2bb08 8 654 6
+2bb10 8 156 132
+2bb18 14 256 82
+2bb2c 10 657 6
+2bb3c 1c 658 6
+2bb58 4 1139 87
+2bb5c 4 277 82
+2bb60 4 658 6
+2bb64 20 658 6
+2bb84 4 658 6
+2bb88 4 658 6
+2bb8c 4 658 6
+2bb90 1c 658 6
+2bbac 8 658 6
+2bbb4 c 659 6
+2bbc0 8 85 79
+2bbc8 8 658 6
+2bbd0 8 156 132
+2bbd8 8 256 82
+2bbe0 18 660 6
+2bbf8 4 1139 87
+2bbfc 4 277 82
+2bc00 4 660 6
+2bc04 20 660 6
+2bc24 4 660 6
+2bc28 4 660 6
+2bc2c 4 660 6
+2bc30 1c 660 6
+2bc4c 8 660 6
+2bc54 c 661 6
+2bc60 8 85 79
+2bc68 8 660 6
+2bc70 8 156 132
+2bc78 8 256 82
+2bc80 10 662 6
+2bc90 10 156 132
+2bca0 20 663 6
+FUNC 2bcc0 9b8 0 ExceptionHandlerTest_InstructionPointerMemoryMaxBound_Test::TestBody
+2bcc0 10 667 6
+2bcd0 8 668 6
+2bcd8 10 667 6
+2bce8 4 670 6
+2bcec 4 668 6
+2bcf0 c 670 6
+2bcfc 4 670 6
+2bd00 c 670 6
+2bd0c 1c 670 6
+2bd28 8 670 6
+2bd30 4 670 6
+2bd34 8 670 6
+2bd3c c 302 82
+2bd48 18 670 6
+2bd60 8 670 6
+2bd68 c 670 6
+2bd74 8 85 79
+2bd7c 8 670 6
+2bd84 14 256 82
+2bd98 8 680 6
+2bda0 4 681 6
+2bda4 8 682 6
+2bdac c 685 6
+2bdb8 24 685 6
+2bddc 8 685 6
+2bde4 20 693 6
+2be04 4 694 6
+2be08 4 695 6
+2be0c 4 700 6
+2be10 4 706 6
+2be14 8 700 6
+2be1c 4 707 6
+2be20 8 707 6
+2be28 8 709 6
+2be30 c 711 6
+2be3c 8 711 6
+2be44 8 711 6
+2be4c 4 711 6
+2be50 c 711 6
+2be5c 8 711 6
+2be64 4 711 6
+2be68 4 713 6
+2be6c 4 711 6
+2be70 c 713 6
+2be7c 18 714 6
+2be94 20 711 6
+2beb4 8 711 6
+2bebc c 711 6
+2bec8 8 85 79
+2bed0 8 711 6
+2bed8 4 711 6
+2bedc 8 714 6
+2bee4 8 714 6
+2beec 4 714 6
+2bef0 c 714 6
+2befc c 714 6
+2bf08 4 714 6
+2bf0c 4 717 6
+2bf10 8 717 6
+2bf18 4 717 6
+2bf1c c 1552 82
+2bf28 4 717 6
+2bf2c 4 717 6
+2bf30 1c 1552 82
+2bf4c 8 717 6
+2bf54 c 302 82
+2bf60 1c 717 6
+2bf7c 20 714 6
+2bf9c 8 714 6
+2bfa4 c 714 6
+2bfb0 8 85 79
+2bfb8 8 714 6
+2bfc0 4 714 6
+2bfc4 8 256 82
+2bfcc 28 718 6
+2bff4 c 302 82
+2c000 18 718 6
+2c018 8 718 6
+2c020 c 718 6
+2c02c 8 85 79
+2c034 8 718 6
+2c03c 10 256 82
+2c04c 8 1139 87
+2c054 4 256 82
+2c058 c 723 6
+2c064 8 724 6
+2c06c 4 277 82
+2c070 4 724 6
+2c074 4 1139 87
+2c078 4 724 6
+2c07c 20 724 6
+2c09c 4 724 6
+2c0a0 4 724 6
+2c0a4 18 724 6
+2c0bc 8 256 82
+2c0c4 c 726 6
+2c0d0 8 727 6
+2c0d8 4 1139 87
+2c0dc 4 277 82
+2c0e0 4 727 6
+2c0e4 8 277 82
+2c0ec 4 728 6
+2c0f0 20 728 6
+2c110 4 728 6
+2c114 4 728 6
+2c118 18 728 6
+2c130 8 256 82
+2c138 4 1139 87
+2c13c c 277 82
+2c148 4 729 6
+2c14c 20 729 6
+2c16c 4 729 6
+2c170 4 729 6
+2c174 1c 729 6
+2c190 8 729 6
+2c198 c 729 6
+2c1a4 8 85 79
+2c1ac 8 729 6
+2c1b4 8 156 132
+2c1bc 10 256 82
+2c1cc 4 730 6
+2c1d0 8 545 65
+2c1d8 4 545 65
+2c1dc 1c 730 6
+2c1f8 8 730 6
+2c200 4 730 6
+2c204 8 730 6
+2c20c c 302 82
+2c218 18 730 6
+2c230 8 730 6
+2c238 c 730 6
+2c244 8 85 79
+2c24c c 730 6
+2c258 4 256 82
+2c25c 4 1139 87
+2c260 4 256 82
+2c264 8 732 6
+2c26c 4 277 82
+2c270 4 732 6
+2c274 8 277 82
+2c27c 4 1139 87
+2c280 4 733 6
+2c284 20 733 6
+2c2a4 4 733 6
+2c2a8 4 733 6
+2c2ac 18 733 6
+2c2c4 4 256 82
+2c2c8 4 736 6
+2c2cc 4 256 82
+2c2d0 c 736 6
+2c2dc 4 1139 87
+2c2e0 4 736 6
+2c2e4 4 277 82
+2c2e8 4 736 6
+2c2ec 20 736 6
+2c30c 4 736 6
+2c310 4 736 6
+2c314 18 736 6
+2c32c 8 256 82
+2c334 14 739 6
+2c348 4 277 82
+2c34c 4 739 6
+2c350 4 1139 87
+2c354 8 277 82
+2c35c 4 740 6
+2c360 20 740 6
+2c380 4 740 6
+2c384 4 740 6
+2c388 18 740 6
+2c3a0 8 256 82
+2c3a8 1c 743 6
+2c3c4 20 1512 82
+2c3e4 8 743 6
+2c3ec c 302 82
+2c3f8 18 743 6
+2c410 8 743 6
+2c418 c 743 6
+2c424 8 85 79
+2c42c 8 743 6
+2c434 4 256 82
+2c438 4 1139 87
+2c43c 4 256 82
+2c440 8 744 6
+2c448 4 277 82
+2c44c 4 744 6
+2c450 8 277 82
+2c458 4 1139 87
+2c45c 4 745 6
+2c460 20 745 6
+2c480 4 745 6
+2c484 4 745 6
+2c488 1c 745 6
+2c4a4 8 745 6
+2c4ac c 745 6
+2c4b8 8 85 79
+2c4c0 8 745 6
+2c4c8 8 156 132
+2c4d0 14 256 82
+2c4e4 10 748 6
+2c4f4 18 749 6
+2c50c 4 1139 87
+2c510 4 277 82
+2c514 4 749 6
+2c518 20 749 6
+2c538 4 749 6
+2c53c 4 749 6
+2c540 4 749 6
+2c544 1c 749 6
+2c560 8 749 6
+2c568 c 749 6
+2c574 8 85 79
+2c57c 8 749 6
+2c584 8 156 132
+2c58c 8 256 82
+2c594 1c 750 6
+2c5b0 4 1139 87
+2c5b4 4 277 82
+2c5b8 4 750 6
+2c5bc 20 750 6
+2c5dc 4 750 6
+2c5e0 4 750 6
+2c5e4 4 750 6
+2c5e8 1c 750 6
+2c604 8 750 6
+2c60c c 751 6
+2c618 8 85 79
+2c620 8 750 6
+2c628 8 156 132
+2c630 8 256 82
+2c638 10 753 6
+2c648 10 156 132
+2c658 20 754 6
+FUNC 2c678 5b4 0 ExceptionHandlerTest_InstructionPointerMemoryNullPointer_Test::TestBody
+2c678 10 760 6
+2c688 8 761 6
+2c690 10 760 6
+2c6a0 4 763 6
+2c6a4 4 761 6
+2c6a8 c 763 6
+2c6b4 4 763 6
+2c6b8 c 763 6
+2c6c4 1c 763 6
+2c6e0 8 763 6
+2c6e8 4 763 6
+2c6ec 8 763 6
+2c6f4 c 302 82
+2c700 18 763 6
+2c718 8 763 6
+2c720 c 763 6
+2c72c 8 85 79
+2c734 8 763 6
+2c73c 14 256 82
+2c750 8 765 6
+2c758 4 766 6
+2c75c 8 767 6
+2c764 c 770 6
+2c770 24 770 6
+2c794 8 770 6
+2c79c 8 774 6
+2c7a4 8 774 6
+2c7ac 8 776 6
+2c7b4 c 778 6
+2c7c0 8 778 6
+2c7c8 8 778 6
+2c7d0 4 778 6
+2c7d4 c 778 6
+2c7e0 8 778 6
+2c7e8 4 778 6
+2c7ec 4 780 6
+2c7f0 4 778 6
+2c7f4 c 780 6
+2c800 18 781 6
+2c818 20 778 6
+2c838 8 778 6
+2c840 c 778 6
+2c84c 8 85 79
+2c854 8 778 6
+2c85c 4 778 6
+2c860 8 781 6
+2c868 8 781 6
+2c870 4 781 6
+2c874 c 781 6
+2c880 c 781 6
+2c88c 4 781 6
+2c890 4 784 6
+2c894 8 784 6
+2c89c 4 784 6
+2c8a0 8 1552 82
+2c8a8 4 784 6
+2c8ac 4 784 6
+2c8b0 4 784 6
+2c8b4 1c 1552 82
+2c8d0 8 784 6
+2c8d8 c 302 82
+2c8e4 1c 784 6
+2c900 20 781 6
+2c920 8 781 6
+2c928 c 781 6
+2c934 8 85 79
+2c93c 8 781 6
+2c944 4 781 6
+2c948 8 256 82
+2c950 28 785 6
+2c978 c 302 82
+2c984 18 785 6
+2c99c 8 785 6
+2c9a4 c 785 6
+2c9b0 8 85 79
+2c9b8 8 785 6
+2c9c0 10 256 82
+2c9d0 8 1139 87
+2c9d8 4 256 82
+2c9dc c 791 6
+2c9e8 8 792 6
+2c9f0 4 277 82
+2c9f4 4 792 6
+2c9f8 4 1139 87
+2c9fc 4 792 6
+2ca00 20 792 6
+2ca20 4 792 6
+2ca24 4 792 6
+2ca28 18 792 6
+2ca40 8 256 82
+2ca48 c 794 6
+2ca54 8 795 6
+2ca5c 4 1139 87
+2ca60 4 277 82
+2ca64 4 795 6
+2ca68 8 277 82
+2ca70 4 796 6
+2ca74 20 796 6
+2ca94 4 796 6
+2ca98 4 796 6
+2ca9c 18 796 6
+2cab4 8 256 82
+2cabc 4 1139 87
+2cac0 c 277 82
+2cacc 4 797 6
+2cad0 20 797 6
+2caf0 4 797 6
+2caf4 4 797 6
+2caf8 1c 797 6
+2cb14 8 797 6
+2cb1c c 797 6
+2cb28 8 85 79
+2cb30 8 797 6
+2cb38 c 156 132
+2cb44 8 256 82
+2cb4c 8 798 6
+2cb54 8 545 65
+2cb5c 4 545 65
+2cb60 1c 1512 82
+2cb7c 8 798 6
+2cb84 4 1512 82
+2cb88 8 798 6
+2cb90 c 302 82
+2cb9c 18 798 6
+2cbb4 8 798 6
+2cbbc c 798 6
+2cbc8 8 85 79
+2cbd0 8 798 6
+2cbd8 14 256 82
+2cbec 10 800 6
+2cbfc 10 156 132
+2cc0c 20 801 6
+FUNC 2cc2c 8d8 0 ExceptionHandlerTest_ModuleInfo_Test::TestBody
+2cc2c 4 806 6
+2cc30 4 809 6
+2cc34 10 806 6
+2cc44 4 814 6
+2cc48 c 806 6
+2cc54 4 818 6
+2cc58 8 806 6
+2cc60 8 809 6
+2cc68 54 814 6
+2ccbc 4 809 6
+2ccc0 10 814 6
+2ccd0 4 809 6
+2ccd4 10 814 6
+2cce4 4 818 6
+2cce8 4 814 6
+2ccec 8 818 6
+2ccf4 4 814 6
+2ccf8 8 819 6
+2cd00 4 818 6
+2cd04 18 819 6
+2cd1c 8 440 130
+2cd24 c 162 99
+2cd30 8 164 99
+2cd38 c 165 99
+2cd44 c 168 99
+2cd50 8 166 99
+2cd58 c 171 99
+2cd64 8 169 99
+2cd6c c 174 99
+2cd78 c 172 99
+2cd84 8 164 99
+2cd8c 20 178 99
+2cdac 10 180 99
+2cdbc 4 181 99
+2cdc0 10 183 99
+2cdd0 4 184 99
+2cdd4 10 186 99
+2cde4 8 165 99
+2cdec 4 190 99
+2cdf0 8 447 130
+2cdf8 8 447 130
+2ce00 8 822 6
+2ce08 8 400 131
+2ce10 8 789 131
+2ce18 c 604 130
+2ce24 4 139 100
+2ce28 4 791 131
+2ce2c 4 791 131
+2ce30 10 791 131
+2ce40 14 530 131
+2ce54 4 277 82
+2ce58 8 1139 87
+2ce60 8 530 131
+2ce68 20 836 6
+2ce88 4 277 82
+2ce8c 4 837 6
+2ce90 8 277 82
+2ce98 4 837 6
+2ce9c 4 1139 87
+2cea0 4 837 6
+2cea4 4 838 6
+2cea8 24 838 6
+2cecc 1c 838 6
+2cee8 8 838 6
+2cef0 c 838 6
+2cefc 8 85 79
+2cf04 8 838 6
+2cf0c 8 156 132
+2cf14 10 256 82
+2cf24 4 849 6
+2cf28 4 1139 87
+2cf2c 4 256 82
+2cf30 c 840 6
+2cf3c c 842 6
+2cf48 20 842 6
+2cf68 8 842 6
+2cf70 10 849 6
+2cf80 28 849 6
+2cfa8 8 156 132
+2cfb0 8 850 6
+2cfb8 4 277 82
+2cfbc 4 850 6
+2cfc0 4 1139 87
+2cfc4 4 850 6
+2cfc8 24 850 6
+2cfec 1c 850 6
+2d008 8 850 6
+2d010 c 850 6
+2d01c 8 85 79
+2d024 8 850 6
+2d02c 8 156 132
+2d034 10 256 82
+2d044 8 1139 87
+2d04c 4 256 82
+2d050 10 855 6
+2d060 c 855 6
+2d06c 8 156 132
+2d074 8 856 6
+2d07c 4 277 82
+2d080 4 856 6
+2d084 4 1139 87
+2d088 4 856 6
+2d08c 24 856 6
+2d0b0 18 856 6
+2d0c8 8 256 82
+2d0d0 8 858 6
+2d0d8 4 277 82
+2d0dc 4 858 6
+2d0e0 4 1139 87
+2d0e4 8 277 82
+2d0ec 4 859 6
+2d0f0 24 859 6
+2d114 18 859 6
+2d12c 8 256 82
+2d134 18 861 6
+2d14c 4 277 82
+2d150 4 861 6
+2d154 4 1139 87
+2d158 8 277 82
+2d160 4 862 6
+2d164 24 862 6
+2d188 1c 862 6
+2d1a4 8 862 6
+2d1ac c 862 6
+2d1b8 8 85 79
+2d1c0 8 862 6
+2d1c8 8 156 132
+2d1d0 14 256 82
+2d1e4 14 864 6
+2d1f8 20 1512 82
+2d218 8 864 6
+2d220 c 302 82
+2d22c 18 864 6
+2d244 8 864 6
+2d24c c 864 6
+2d258 8 85 79
+2d260 8 864 6
+2d268 8 256 82
+2d270 14 865 6
+2d284 20 1512 82
+2d2a4 8 865 6
+2d2ac c 302 82
+2d2b8 18 865 6
+2d2d0 8 865 6
+2d2d8 c 865 6
+2d2e4 8 85 79
+2d2ec 8 865 6
+2d2f4 8 256 82
+2d2fc 18 866 6
+2d314 8 400 131
+2d31c 8 315 134
+2d324 8 226 140
+2d32c 4 315 134
+2d330 8 1482 82
+2d338 8 156 132
+2d340 8 866 6
+2d348 c 302 82
+2d354 18 866 6
+2d36c 8 866 6
+2d374 c 866 6
+2d380 8 85 79
+2d388 8 866 6
+2d390 8 256 82
+2d398 14 867 6
+2d3ac 20 1512 82
+2d3cc 8 156 132
+2d3d4 8 867 6
+2d3dc c 302 82
+2d3e8 18 867 6
+2d400 8 867 6
+2d408 c 867 6
+2d414 8 85 79
+2d41c 8 867 6
+2d424 8 256 82
+2d42c 20 869 6
+2d44c 8 156 132
+2d454 28 870 6
+2d47c c 884 80
+2d488 10 711 80
+2d498 c 469 80
+2d4a4 8 156 132
+2d4ac c 75 127
+2d4b8 8 886 80
+2d4c0 c 1382 82
+2d4cc 24 1471 82
+2d4f0 14 156 132
+FUNC 2d504 370 0 ExceptionHandlerTest_WriteMinidumpExceptionStream_Test::TestBody
+2d504 10 1000 6
+2d514 4 1001 6
+2d518 4 1003 6
+2d51c 4 1001 6
+2d520 c 1000 6
+2d52c 4 1003 6
+2d530 4 1001 6
+2d534 8 1003 6
+2d53c 8 277 82
+2d544 4 1003 6
+2d548 4 1139 87
+2d54c 24 1003 6
+2d570 8 1003 6
+2d578 8 1004 6
+2d580 4 277 82
+2d584 4 1004 6
+2d588 4 1139 87
+2d58c 4 1004 6
+2d590 24 1004 6
+2d5b4 1c 1004 6
+2d5d0 8 1004 6
+2d5d8 c 1004 6
+2d5e4 8 85 79
+2d5ec 8 1004 6
+2d5f4 8 156 132
+2d5fc 10 256 82
+2d60c 4 1139 87
+2d610 4 256 82
+2d614 10 1006 6
+2d624 c 1009 6
+2d630 8 1010 6
+2d638 4 277 82
+2d63c 4 1010 6
+2d640 4 1139 87
+2d644 4 1010 6
+2d648 20 1010 6
+2d668 4 1010 6
+2d66c 4 1010 6
+2d670 18 1010 6
+2d688 8 256 82
+2d690 8 1011 6
+2d698 4 277 82
+2d69c 4 1011 6
+2d6a0 4 1139 87
+2d6a4 8 277 82
+2d6ac 4 1012 6
+2d6b0 20 1012 6
+2d6d0 4 1012 6
+2d6d4 4 1012 6
+2d6d8 18 1012 6
+2d6f0 4 256 82
+2d6f4 4 600 65
+2d6f8 4 256 82
+2d6fc 4 600 65
+2d700 4 1139 87
+2d704 8 600 65
+2d70c c 277 82
+2d718 4 1014 6
+2d71c 20 1014 6
+2d73c 4 1014 6
+2d740 4 1014 6
+2d744 18 1014 6
+2d75c 4 1014 6
+2d760 4 1014 6
+2d764 8 1014 6
+2d76c c 1014 6
+2d778 8 85 79
+2d780 8 1014 6
+2d788 8 156 132
+2d790 10 256 82
+2d7a0 c 1015 6
+2d7ac 4 1482 82
+2d7b0 c 1481 82
+2d7bc 8 1482 82
+2d7c4 18 1487 82
+2d7dc 8 1015 6
+2d7e4 4 302 82
+2d7e8 4 1015 6
+2d7ec 8 302 82
+2d7f4 18 1015 6
+2d80c 8 1015 6
+2d814 c 1016 6
+2d820 8 85 79
+2d828 8 1015 6
+2d830 10 256 82
+2d840 18 156 132
+2d858 1c 1017 6
+FUNC 2d874 5b8 0 ExceptionHandlerTest_GenerateMultipleDumpsWithPath_Test::TestBody
+2d874 c 1036 6
+2d880 4 1037 6
+2d884 8 1036 6
+2d88c 4 1037 6
+2d890 14 1036 6
+2d8a4 4 1037 6
+2d8a8 c 1039 6
+2d8b4 4 1039 6
+2d8b8 4 277 82
+2d8bc c 1139 87
+2d8c8 4 1039 6
+2d8cc 20 1039 6
+2d8ec 8 1039 6
+2d8f4 8 1040 6
+2d8fc 4 277 82
+2d900 4 1040 6
+2d904 4 1139 87
+2d908 4 1040 6
+2d90c 24 1040 6
+2d930 1c 1040 6
+2d94c 8 1040 6
+2d954 c 1040 6
+2d960 8 85 79
+2d968 8 1040 6
+2d970 c 156 132
+2d97c 4 256 82
+2d980 8 1552 82
+2d988 4 256 82
+2d98c 4 1044 6
+2d990 c 1044 6
+2d99c 4 1044 6
+2d9a0 1c 1552 82
+2d9bc 8 1044 6
+2d9c4 c 302 82
+2d9d0 18 1044 6
+2d9e8 8 1044 6
+2d9f0 c 1044 6
+2d9fc 8 85 79
+2da04 8 1044 6
+2da0c 14 256 82
+2da20 38 1045 6
+2da58 c 302 82
+2da64 18 1045 6
+2da7c 4 256 82
+2da80 4 1046 6
+2da84 8 1139 87
+2da8c 4 256 82
+2da90 10 1046 6
+2daa0 c 1048 6
+2daac 8 1049 6
+2dab4 4 277 82
+2dab8 4 1049 6
+2dabc 4 1139 87
+2dac0 4 1049 6
+2dac4 20 1049 6
+2dae4 4 1049 6
+2dae8 4 1049 6
+2daec 18 1049 6
+2db04 8 256 82
+2db0c 8 1050 6
+2db14 8 1053 6
+2db1c 4 1139 87
+2db20 4 1053 6
+2db24 4 277 82
+2db28 4 1053 6
+2db2c 20 1053 6
+2db4c 4 1053 6
+2db50 4 1053 6
+2db54 1c 1053 6
+2db70 8 1053 6
+2db78 c 1053 6
+2db84 8 85 79
+2db8c 8 1053 6
+2db94 8 156 132
+2db9c 14 256 82
+2dbb0 4 1055 6
+2dbb4 c 1055 6
+2dbc0 4 1055 6
+2dbc4 1c 1552 82
+2dbe0 8 1055 6
+2dbe8 c 302 82
+2dbf4 18 1055 6
+2dc0c 8 256 82
+2dc14 24 1056 6
+2dc38 c 302 82
+2dc44 18 1056 6
+2dc5c 8 1056 6
+2dc64 c 1056 6
+2dc70 8 85 79
+2dc78 8 1056 6
+2dc80 c 256 82
+2dc8c 4 277 82
+2dc90 4 1139 87
+2dc94 4 256 82
+2dc98 10 1057 6
+2dca8 c 1059 6
+2dcb4 8 1060 6
+2dcbc 4 277 82
+2dcc0 4 1060 6
+2dcc4 4 1139 87
+2dcc8 4 1060 6
+2dccc 20 1060 6
+2dcec 4 1060 6
+2dcf0 4 1060 6
+2dcf4 4 1060 6
+2dcf8 1c 1060 6
+2dd14 8 1060 6
+2dd1c c 1060 6
+2dd28 8 85 79
+2dd30 8 1060 6
+2dd38 8 156 132
+2dd40 10 256 82
+2dd50 8 1061 6
+2dd58 20 1064 6
+2dd78 8 1064 6
+2dd80 4 302 82
+2dd84 4 1064 6
+2dd88 8 302 82
+2dd90 18 1064 6
+2dda8 8 1064 6
+2ddb0 c 1064 6
+2ddbc 8 85 79
+2ddc4 8 1064 6
+2ddcc 10 256 82
+2dddc 28 156 132
+2de04 28 1065 6
+FUNC 2de2c 488 0 ExceptionHandlerTest_AdditionalMemory_Test::TestBody
+2de2c 4 1068 6
+2de30 4 1069 6
+2de34 c 1068 6
+2de40 4 1069 6
+2de44 14 1068 6
+2de58 8 1069 6
+2de60 4 1072 6
+2de64 4 277 82
+2de68 8 1072 6
+2de70 8 1073 6
+2de78 4 1139 87
+2de7c 4 1073 6
+2de80 8 277 82
+2de88 8 256 82
+2de90 4 1077 6
+2de94 4 1078 6
+2de98 c 1077 6
+2dea4 c 1078 6
+2deb0 8 1077 6
+2deb8 4 1081 6
+2debc 4 1083 6
+2dec0 4 1081 6
+2dec4 c 1092 6
+2ded0 4 1081 6
+2ded4 4 1139 87
+2ded8 c 1083 6
+2dee4 20 1083 6
+2df04 8 1083 6
+2df0c 10 1086 6
+2df1c 8 1087 6
+2df24 10 1092 6
+2df34 c 1092 6
+2df40 8 156 132
+2df48 8 1093 6
+2df50 4 277 82
+2df54 4 1093 6
+2df58 4 1139 87
+2df5c 4 1093 6
+2df60 20 1093 6
+2df80 4 1093 6
+2df84 4 1093 6
+2df88 18 1093 6
+2dfa0 8 256 82
+2dfa8 8 1095 6
+2dfb0 4 277 82
+2dfb4 4 1095 6
+2dfb8 4 1139 87
+2dfbc 8 277 82
+2dfc4 4 1096 6
+2dfc8 20 1096 6
+2dfe8 4 1096 6
+2dfec 4 1096 6
+2dff0 18 1096 6
+2e008 8 256 82
+2e010 18 1098 6
+2e028 4 277 82
+2e02c 4 1098 6
+2e030 4 1139 87
+2e034 8 277 82
+2e03c 4 1099 6
+2e040 20 1099 6
+2e060 4 1099 6
+2e064 4 1099 6
+2e068 1c 1099 6
+2e084 8 1099 6
+2e08c c 1099 6
+2e098 8 85 79
+2e0a0 8 1099 6
+2e0a8 8 156 132
+2e0b0 14 256 82
+2e0c4 14 1101 6
+2e0d8 20 1512 82
+2e0f8 8 1101 6
+2e100 c 302 82
+2e10c 18 1101 6
+2e124 8 1101 6
+2e12c c 1101 6
+2e138 8 85 79
+2e140 8 1101 6
+2e148 8 256 82
+2e150 14 1102 6
+2e164 20 1512 82
+2e184 8 1102 6
+2e18c c 302 82
+2e198 18 1102 6
+2e1b0 8 1102 6
+2e1b8 c 1102 6
+2e1c4 8 85 79
+2e1cc 8 1102 6
+2e1d4 8 256 82
+2e1dc c 1105 6
+2e1e8 c 1105 6
+2e1f4 4 1105 6
+2e1f8 20 1552 82
+2e218 8 1105 6
+2e220 c 302 82
+2e22c 18 1105 6
+2e244 8 1105 6
+2e24c c 1105 6
+2e258 8 85 79
+2e260 8 1105 6
+2e268 8 256 82
+2e270 20 1107 6
+2e290 24 1108 6
+FUNC 2e2b4 2d0 0 ExceptionHandlerTest_AdditionalMemoryRemove_Test::TestBody
+2e2b4 4 1112 6
+2e2b8 4 1113 6
+2e2bc 18 1112 6
+2e2d4 4 1113 6
+2e2d8 8 1116 6
+2e2e0 4 277 82
+2e2e4 4 1120 6
+2e2e8 4 1122 6
+2e2ec 8 1116 6
+2e2f4 4 277 82
+2e2f8 4 256 82
+2e2fc 4 277 82
+2e300 4 1134 6
+2e304 4 277 82
+2e308 8 1139 87
+2e310 4 256 82
+2e314 8 1120 6
+2e31c c 1122 6
+2e328 20 1122 6
+2e348 8 1122 6
+2e350 c 1125 6
+2e35c 4 1134 6
+2e360 4 1125 6
+2e364 c 1128 6
+2e370 8 1129 6
+2e378 10 1134 6
+2e388 c 1134 6
+2e394 8 156 132
+2e39c 8 1135 6
+2e3a4 4 277 82
+2e3a8 4 1135 6
+2e3ac 4 1139 87
+2e3b0 4 1135 6
+2e3b4 20 1135 6
+2e3d4 4 1135 6
+2e3d8 4 1135 6
+2e3dc 18 1135 6
+2e3f4 8 256 82
+2e3fc 8 1137 6
+2e404 4 277 82
+2e408 4 1137 6
+2e40c 4 1139 87
+2e410 8 277 82
+2e418 4 1138 6
+2e41c 20 1138 6
+2e43c 4 1138 6
+2e440 4 1138 6
+2e444 18 1138 6
+2e45c 4 1138 6
+2e460 4 1138 6
+2e464 8 1138 6
+2e46c c 1138 6
+2e478 8 85 79
+2e480 8 1138 6
+2e488 8 156 132
+2e490 14 256 82
+2e4a4 14 1140 6
+2e4b8 8 1141 6
+2e4c0 4 1139 87
+2e4c4 4 277 82
+2e4c8 4 1141 6
+2e4cc 20 1141 6
+2e4ec 4 1141 6
+2e4f0 4 1141 6
+2e4f4 4 1141 6
+2e4f8 1c 1141 6
+2e514 8 1141 6
+2e51c c 1141 6
+2e528 8 85 79
+2e530 8 1141 6
+2e538 8 156 132
+2e540 8 256 82
+2e548 20 1143 6
+2e568 1c 1144 6
+FUNC 2e584 540 0 ExceptionHandlerTest_WriteMinidumpForChild_Test::TestBody
+2e584 4 1154 6
+2e588 4 1156 6
+2e58c 8 1154 6
+2e594 c 1156 6
+2e5a0 10 1154 6
+2e5b0 4 1156 6
+2e5b4 4 1156 6
+2e5b8 4 1156 6
+2e5bc 2c 1156 6
+2e5e8 8 1156 6
+2e5f0 c 302 82
+2e5fc 18 1156 6
+2e614 8 1156 6
+2e61c c 1156 6
+2e628 8 85 79
+2e630 8 1156 6
+2e638 10 256 82
+2e648 4 1158 6
+2e64c 4 256 82
+2e650 8 1158 6
+2e658 4 1159 6
+2e65c 8 1160 6
+2e664 18 1162 6
+2e67c 4 1162 6
+2e680 c 1162 6
+2e68c 8 1163 6
+2e694 8 1164 6
+2e69c 4 1166 6
+2e6a0 c 1168 6
+2e6ac 4 1166 6
+2e6b0 8 1168 6
+2e6b8 c 1169 6
+2e6c4 1c 1170 6
+2e6e0 4 1139 87
+2e6e4 4 1170 6
+2e6e8 4 277 82
+2e6ec 4 1170 6
+2e6f0 20 1170 6
+2e710 4 1170 6
+2e714 4 1170 6
+2e718 1c 1170 6
+2e734 8 1170 6
+2e73c c 1170 6
+2e748 8 85 79
+2e750 8 1170 6
+2e758 8 156 132
+2e760 10 256 82
+2e770 4 1139 87
+2e774 4 256 82
+2e778 c 1175 6
+2e784 8 1176 6
+2e78c 4 277 82
+2e790 4 1176 6
+2e794 4 1139 87
+2e798 4 1176 6
+2e79c 20 1176 6
+2e7bc 4 1176 6
+2e7c0 4 1176 6
+2e7c4 18 1176 6
+2e7dc 8 256 82
+2e7e4 8 1178 6
+2e7ec 4 277 82
+2e7f0 4 1178 6
+2e7f4 4 1139 87
+2e7f8 8 277 82
+2e800 4 1179 6
+2e804 20 1179 6
+2e824 4 1179 6
+2e828 4 1179 6
+2e82c 18 1179 6
+2e844 4 256 82
+2e848 4 1181 6
+2e84c 4 256 82
+2e850 c 1181 6
+2e85c 4 1139 87
+2e860 4 1181 6
+2e864 4 277 82
+2e868 4 1181 6
+2e86c 20 1181 6
+2e88c 4 1181 6
+2e890 4 1181 6
+2e894 18 1181 6
+2e8ac 8 256 82
+2e8b4 4 1182 6
+2e8b8 4 1512 82
+2e8bc 4 1182 6
+2e8c0 1c 1512 82
+2e8dc 8 1182 6
+2e8e4 4 302 82
+2e8e8 4 1182 6
+2e8ec 8 302 82
+2e8f4 18 1182 6
+2e90c 8 1182 6
+2e914 c 1182 6
+2e920 8 85 79
+2e928 8 1182 6
+2e930 4 256 82
+2e934 4 600 65
+2e938 4 1139 87
+2e93c 4 256 82
+2e940 4 600 65
+2e944 8 600 65
+2e94c c 277 82
+2e958 4 1139 87
+2e95c 4 1185 6
+2e960 20 1185 6
+2e980 4 1185 6
+2e984 4 1185 6
+2e988 18 1185 6
+2e9a0 4 1185 6
+2e9a4 4 1185 6
+2e9a8 8 1185 6
+2e9b0 c 1185 6
+2e9bc 8 85 79
+2e9c4 8 1185 6
+2e9cc 8 156 132
+2e9d4 14 256 82
+2e9e8 c 1186 6
+2e9f4 4 1482 82
+2e9f8 c 1481 82
+2ea04 8 1482 82
+2ea0c 18 1487 82
+2ea24 8 1186 6
+2ea2c 4 302 82
+2ea30 4 1186 6
+2ea34 8 302 82
+2ea3c 18 1186 6
+2ea54 8 1186 6
+2ea5c c 1187 6
+2ea68 8 85 79
+2ea70 8 1186 6
+2ea78 8 256 82
+2ea80 8 1189 6
+2ea88 10 1190 6
+2ea98 10 156 132
+2eaa8 1c 1191 6
+FUNC 2eac4 4 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MicrodumpWriterTest_Setup_Test>::~TestFactoryImpl
+2eac4 4 484 85
+FUNC 2eac8 3c 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MicrodumpWriterTest_Setup_Test>::CreateTest
+2eac8 10 486 85
+2ead8 8 486 85
+2eae0 8 56 11
+2eae8 4 486 85
+2eaec c 56 11
+2eaf8 c 486 85
+FUNC 2eb04 4 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MicrodumpWriterTest_Setup_Test>::~TestFactoryImpl
+2eb04 4 484 85
+FUNC 2eb08 14 0 MicrodumpWriterTest_Setup_Test::~MicrodumpWriterTest_Setup_Test
+2eb08 14 56 11
+FUNC 2eb1c 24 0 MicrodumpWriterTest_Setup_Test::~MicrodumpWriterTest_Setup_Test
+2eb1c c 56 11
+2eb28 8 56 11
+2eb30 4 56 11
+2eb34 8 56 11
+2eb3c 4 56 11
+FUNC 2eb40 18 0 std::__node_alloc::allocate
+2eb40 c 158 101
+2eb4c 8 134 119
+2eb54 4 158 101
+FUNC 2eb58 88 0 testing::PrintToString<void const*>
+2eb58 4 883 80
+2eb5c 4 884 80
+2eb60 8 883 80
+2eb68 4 884 80
+2eb6c 4 883 80
+2eb70 4 884 80
+2eb74 4 883 80
+2eb78 4 883 80
+2eb7c c 884 80
+2eb88 4 310 80
+2eb8c 14 333 122
+2eba0 10 318 80
+2ebb0 8 291 121
+2ebb8 c 75 127
+2ebc4 8 886 80
+2ebcc 14 887 80
+FUNC 2ebe0 148 0 testing::internal::CmpHelperNE<char*, char*>
+2ebe0 14 1615 82
+2ebf4 14 1615 82
+2ec08 4 1615 82
+2ec0c 4 1615 82
+2ec10 1c 1583 82
+2ec2c 10 1407 82
+2ec3c 4 1583 82
+2ec40 10 1583 82
+2ec50 8 1583 82
+2ec58 c 1583 82
+2ec64 8 1583 82
+2ec6c c 1583 82
+2ec78 8 1583 82
+2ec80 10 1584 82
+2ec90 18 1407 82
+2eca8 c 1584 82
+2ecb4 10 1585 82
+2ecc4 1c 1407 82
+2ece0 10 1585 82
+2ecf0 8 1585 82
+2ecf8 10 156 132
+2ed08 8 256 82
+2ed10 18 1615 82
+FUNC 2ed28 a7c 0 MicrodumpWriterTest_Setup_Test::TestBody
+2ed28 14 56 11
+2ed3c 4 58 11
+2ed40 4 56 11
+2ed44 10 58 11
+2ed54 c 56 11
+2ed60 8 58 11
+2ed68 4 58 11
+2ed6c 8 58 11
+2ed74 14 58 11
+2ed88 4 58 11
+2ed8c 10 58 11
+2ed9c 8 58 11
+2eda4 4 1144 87
+2eda8 c 298 82
+2edb4 8 298 82
+2edbc 18 58 11
+2edd4 4 58 11
+2edd8 4 58 11
+2eddc 8 58 11
+2ede4 c 58 11
+2edf0 8 85 79
+2edf8 8 58 11
+2ee00 10 256 82
+2ee10 4 60 11
+2ee14 4 256 82
+2ee18 4 61 11
+2ee1c 4 256 82
+2ee20 8 60 11
+2ee28 14 61 11
+2ee3c 10 62 11
+2ee4c 4 63 11
+2ee50 4 62 11
+2ee54 10 63 11
+2ee64 4 62 11
+2ee68 10 63 11
+2ee78 4 1144 87
+2ee7c c 298 82
+2ee88 8 298 82
+2ee90 18 63 11
+2eea8 4 63 11
+2eeac 4 63 11
+2eeb0 8 63 11
+2eeb8 c 63 11
+2eec4 8 85 79
+2eecc 8 63 11
+2eed4 10 256 82
+2eee4 8 65 11
+2eeec 4 66 11
+2eef0 8 67 11
+2eef8 18 69 11
+2ef10 4 69 11
+2ef14 c 69 11
+2ef20 c 70 11
+2ef2c 8 71 11
+2ef34 4 73 11
+2ef38 4 76 11
+2ef3c c 77 11
+2ef48 8 73 11
+2ef50 10 76 11
+2ef60 10 77 11
+2ef70 c 1481 82
+2ef7c c 1482 82
+2ef88 20 1382 82
+2efa8 24 1471 82
+2efcc 14 156 132
+2efe0 8 77 11
+2efe8 4 1144 87
+2efec c 298 82
+2eff8 8 298 82
+2f000 18 77 11
+2f018 4 77 11
+2f01c 4 77 11
+2f020 8 77 11
+2f028 c 77 11
+2f034 8 85 79
+2f03c 8 77 11
+2f044 10 256 82
+2f054 4 98 11
+2f058 4 256 82
+2f05c 8 80 11
+2f064 8 83 11
+2f06c 4 91 11
+2f070 4 94 11
+2f074 4 91 11
+2f078 4 92 11
+2f07c 4 93 11
+2f080 4 94 11
+2f084 4 93 11
+2f088 8 94 11
+2f090 4 211 116
+2f094 8 98 11
+2f09c 4 211 116
+2f0a0 4 212 116
+2f0a4 8 98 11
+2f0ac c 306 101
+2f0b8 c 307 101
+2f0c4 8 119 103
+2f0cc 88 119 103
+2f154 4 427 116
+2f158 4 103 11
+2f15c c 104 11
+2f168 4 427 116
+2f16c 4 429 116
+2f170 4 428 116
+2f174 4 430 116
+2f178 4 103 11
+2f17c 4 431 116
+2f180 4 104 11
+2f184 8 103 11
+2f18c 28 104 11
+2f1b4 4 1144 87
+2f1b8 c 298 82
+2f1c4 8 298 82
+2f1cc 1c 104 11
+2f1e8 4 105 11
+2f1ec c 256 82
+2f1f8 18 105 11
+2f210 1c 105 11
+2f22c 8 105 11
+2f234 4 1144 87
+2f238 c 298 82
+2f244 8 298 82
+2f24c 1c 105 11
+2f268 c 105 11
+2f274 c 105 11
+2f280 8 85 79
+2f288 8 105 11
+2f290 14 256 82
+2f2a4 10 107 11
+2f2b4 8 1139 87
+2f2bc 4 107 11
+2f2c0 4 277 82
+2f2c4 4 107 11
+2f2c8 4 1139 87
+2f2cc 4 107 11
+2f2d0 24 107 11
+2f2f4 1c 107 11
+2f310 8 107 11
+2f318 c 107 11
+2f324 8 85 79
+2f32c 8 107 11
+2f334 8 156 132
+2f33c c 256 82
+2f348 4 118 11
+2f34c 4 256 82
+2f350 c 110 11
+2f35c 8 111 11
+2f364 8 114 11
+2f36c 10 115 11
+2f37c c 117 11
+2f388 10 118 11
+2f398 4 118 11
+2f39c 8 1623 82
+2f3a4 20 1623 82
+2f3c4 28 1583 82
+2f3ec 10 1583 82
+2f3fc 8 1583 82
+2f404 c 1583 82
+2f410 8 1583 82
+2f418 c 1583 82
+2f424 8 1583 82
+2f42c 10 1584 82
+2f43c c 884 80
+2f448 10 259 121
+2f458 c 75 127
+2f464 8 886 80
+2f46c c 1584 82
+2f478 10 1585 82
+2f488 c 1382 82
+2f494 10 1585 82
+2f4a4 8 1585 82
+2f4ac 10 156 132
+2f4bc c 256 82
+2f4c8 8 118 11
+2f4d0 4 1144 87
+2f4d4 c 298 82
+2f4e0 8 298 82
+2f4e8 18 118 11
+2f500 4 118 11
+2f504 4 118 11
+2f508 8 118 11
+2f510 c 118 11
+2f51c 8 85 79
+2f524 8 118 11
+2f52c c 256 82
+2f538 8 120 11
+2f540 4 120 11
+2f544 4 256 82
+2f548 4 120 11
+2f54c c 120 11
+2f558 4 120 11
+2f55c 4 120 11
+2f560 4 120 11
+2f564 4 120 11
+2f568 1c 120 11
+2f584 8 120 11
+2f58c 4 1144 87
+2f590 c 298 82
+2f59c 8 298 82
+2f5a4 1c 120 11
+2f5c0 c 256 82
+2f5cc 4 122 11
+2f5d0 10 122 11
+2f5e0 4 122 11
+2f5e4 1c 122 11
+2f600 8 122 11
+2f608 4 1144 87
+2f60c c 298 82
+2f618 8 298 82
+2f620 1c 122 11
+2f63c 8 256 82
+2f644 4 124 11
+2f648 10 124 11
+2f658 4 124 11
+2f65c 1c 124 11
+2f678 8 124 11
+2f680 4 1144 87
+2f684 c 298 82
+2f690 8 298 82
+2f698 1c 124 11
+2f6b4 c 124 11
+2f6c0 c 124 11
+2f6cc 8 85 79
+2f6d4 8 124 11
+2f6dc 8 256 82
+2f6e4 c 203 57
+2f6f0 8 256 82
+2f6f8 c 128 11
+2f704 c 129 11
+2f710 8 203 57
+2f718 4 67 115
+2f71c 4 68 115
+2f720 4 67 115
+2f724 8 68 115
+2f72c 4 74 115
+2f730 c 135 119
+2f73c 4 67 115
+2f740 4 68 115
+2f744 4 67 115
+2f748 8 68 115
+2f750 4 74 115
+2f754 c 135 119
+2f760 4 156 132
+2f764 4 61 63
+2f768 4 156 132
+2f76c c 61 63
+2f778 8 156 132
+2f780 24 130 11
+FUNC 2f7a4 4 0 testing::internal::TestFactoryImpl<CpuSetTest_EmptyIntersection_Test>::~TestFactoryImpl
+2f7a4 4 484 85
+FUNC 2f7a8 4 0 testing::internal::TestFactoryImpl<CpuSetTest_SelfIntersection_Test>::~TestFactoryImpl
+2f7a8 4 484 85
+FUNC 2f7ac 4 0 testing::internal::TestFactoryImpl<CpuSetTest_IntersectWith_Test>::~TestFactoryImpl
+2f7ac 4 484 85
+FUNC 2f7b0 4 0 testing::internal::TestFactoryImpl<CpuSetTest_MultiItems_Test>::~TestFactoryImpl
+2f7b0 4 484 85
+FUNC 2f7b4 4 0 testing::internal::TestFactoryImpl<CpuSetTest_TenCpusWithRange_Test>::~TestFactoryImpl
+2f7b4 4 484 85
+FUNC 2f7b8 4 0 testing::internal::TestFactoryImpl<CpuSetTest_TwoCpusWithRange_Test>::~TestFactoryImpl
+2f7b8 4 484 85
+FUNC 2f7bc 4 0 testing::internal::TestFactoryImpl<CpuSetTest_TwoCpusWithComma_Test>::~TestFactoryImpl
+2f7bc 4 484 85
+FUNC 2f7c0 4 0 testing::internal::TestFactoryImpl<CpuSetTest_OneCpuTerminated_Test>::~TestFactoryImpl
+2f7c0 4 484 85
+FUNC 2f7c4 4 0 testing::internal::TestFactoryImpl<CpuSetTest_OneCpu_Test>::~TestFactoryImpl
+2f7c4 4 484 85
+FUNC 2f7c8 4 0 testing::internal::TestFactoryImpl<CpuSetTest_EmptyCount_Test>::~TestFactoryImpl
+2f7c8 4 484 85
+FUNC 2f7cc 4 0 testing::internal::TestFactoryImpl<CpuSetTest_EmptyCount_Test>::~TestFactoryImpl
+2f7cc 4 484 85
+FUNC 2f7d0 4 0 testing::internal::TestFactoryImpl<CpuSetTest_OneCpu_Test>::~TestFactoryImpl
+2f7d0 4 484 85
+FUNC 2f7d4 4 0 testing::internal::TestFactoryImpl<CpuSetTest_OneCpuTerminated_Test>::~TestFactoryImpl
+2f7d4 4 484 85
+FUNC 2f7d8 4 0 testing::internal::TestFactoryImpl<CpuSetTest_TwoCpusWithComma_Test>::~TestFactoryImpl
+2f7d8 4 484 85
+FUNC 2f7dc 4 0 testing::internal::TestFactoryImpl<CpuSetTest_TwoCpusWithRange_Test>::~TestFactoryImpl
+2f7dc 4 484 85
+FUNC 2f7e0 4 0 testing::internal::TestFactoryImpl<CpuSetTest_TenCpusWithRange_Test>::~TestFactoryImpl
+2f7e0 4 484 85
+FUNC 2f7e4 4 0 testing::internal::TestFactoryImpl<CpuSetTest_MultiItems_Test>::~TestFactoryImpl
+2f7e4 4 484 85
+FUNC 2f7e8 4 0 testing::internal::TestFactoryImpl<CpuSetTest_IntersectWith_Test>::~TestFactoryImpl
+2f7e8 4 484 85
+FUNC 2f7ec 4 0 testing::internal::TestFactoryImpl<CpuSetTest_SelfIntersection_Test>::~TestFactoryImpl
+2f7ec 4 484 85
+FUNC 2f7f0 4 0 testing::internal::TestFactoryImpl<CpuSetTest_EmptyIntersection_Test>::~TestFactoryImpl
+2f7f0 4 484 85
+FUNC 2f7f4 14 0 CpuSetTest_EmptyIntersection_Test::~CpuSetTest_EmptyIntersection_Test
+2f7f4 14 146 13
+FUNC 2f808 24 0 CpuSetTest_EmptyIntersection_Test::~CpuSetTest_EmptyIntersection_Test
+2f808 c 146 13
+2f814 8 146 13
+2f81c 4 146 13
+2f820 8 146 13
+2f828 4 146 13
+FUNC 2f82c 14 0 CpuSetTest_SelfIntersection_Test::~CpuSetTest_SelfIntersection_Test
+2f82c 14 135 13
+FUNC 2f840 24 0 CpuSetTest_SelfIntersection_Test::~CpuSetTest_SelfIntersection_Test
+2f840 c 135 13
+2f84c 8 135 13
+2f854 4 135 13
+2f858 8 135 13
+2f860 4 135 13
+FUNC 2f864 14 0 CpuSetTest_IntersectWith_Test::~CpuSetTest_IntersectWith_Test
+2f864 14 117 13
+FUNC 2f878 24 0 CpuSetTest_IntersectWith_Test::~CpuSetTest_IntersectWith_Test
+2f878 c 117 13
+2f884 8 117 13
+2f88c 4 117 13
+2f890 8 117 13
+2f898 4 117 13
+FUNC 2f89c 14 0 CpuSetTest_MultiItems_Test::~CpuSetTest_MultiItems_Test
+2f89c 14 108 13
+FUNC 2f8b0 24 0 CpuSetTest_MultiItems_Test::~CpuSetTest_MultiItems_Test
+2f8b0 c 108 13
+2f8bc 8 108 13
+2f8c4 4 108 13
+2f8c8 8 108 13
+2f8d0 4 108 13
+FUNC 2f8d4 14 0 CpuSetTest_TenCpusWithRange_Test::~CpuSetTest_TenCpusWithRange_Test
+2f8d4 14 99 13
+FUNC 2f8e8 24 0 CpuSetTest_TenCpusWithRange_Test::~CpuSetTest_TenCpusWithRange_Test
+2f8e8 c 99 13
+2f8f4 8 99 13
+2f8fc 4 99 13
+2f900 8 99 13
+2f908 4 99 13
+FUNC 2f90c 14 0 CpuSetTest_TwoCpusWithRange_Test::~CpuSetTest_TwoCpusWithRange_Test
+2f90c 14 90 13
+FUNC 2f920 24 0 CpuSetTest_TwoCpusWithRange_Test::~CpuSetTest_TwoCpusWithRange_Test
+2f920 c 90 13
+2f92c 8 90 13
+2f934 4 90 13
+2f938 8 90 13
+2f940 4 90 13
+FUNC 2f944 14 0 CpuSetTest_TwoCpusWithComma_Test::~CpuSetTest_TwoCpusWithComma_Test
+2f944 14 81 13
+FUNC 2f958 24 0 CpuSetTest_TwoCpusWithComma_Test::~CpuSetTest_TwoCpusWithComma_Test
+2f958 c 81 13
+2f964 8 81 13
+2f96c 4 81 13
+2f970 8 81 13
+2f978 4 81 13
+FUNC 2f97c 14 0 CpuSetTest_OneCpuTerminated_Test::~CpuSetTest_OneCpuTerminated_Test
+2f97c 14 72 13
+FUNC 2f990 24 0 CpuSetTest_OneCpuTerminated_Test::~CpuSetTest_OneCpuTerminated_Test
+2f990 c 72 13
+2f99c 8 72 13
+2f9a4 4 72 13
+2f9a8 8 72 13
+2f9b0 4 72 13
+FUNC 2f9b4 14 0 CpuSetTest_OneCpu_Test::~CpuSetTest_OneCpu_Test
+2f9b4 14 63 13
+FUNC 2f9c8 24 0 CpuSetTest_OneCpu_Test::~CpuSetTest_OneCpu_Test
+2f9c8 c 63 13
+2f9d4 8 63 13
+2f9dc 4 63 13
+2f9e0 8 63 13
+2f9e8 4 63 13
+FUNC 2f9ec 14 0 CpuSetTest_EmptyCount_Test::~CpuSetTest_EmptyCount_Test
+2f9ec 14 58 13
+FUNC 2fa00 24 0 CpuSetTest_EmptyCount_Test::~CpuSetTest_EmptyCount_Test
+2fa00 c 58 13
+2fa0c 8 58 13
+2fa14 4 58 13
+2fa18 8 58 13
+2fa20 4 58 13
+FUNC 2fa24 3c 0 testing::internal::TestFactoryImpl<CpuSetTest_EmptyIntersection_Test>::CreateTest
+2fa24 10 486 85
+2fa34 8 486 85
+2fa3c 8 146 13
+2fa44 4 486 85
+2fa48 c 146 13
+2fa54 c 486 85
+FUNC 2fa60 3c 0 testing::internal::TestFactoryImpl<CpuSetTest_SelfIntersection_Test>::CreateTest
+2fa60 10 486 85
+2fa70 8 486 85
+2fa78 8 135 13
+2fa80 4 486 85
+2fa84 c 135 13
+2fa90 c 486 85
+FUNC 2fa9c 3c 0 testing::internal::TestFactoryImpl<CpuSetTest_IntersectWith_Test>::CreateTest
+2fa9c 10 486 85
+2faac 8 486 85
+2fab4 8 117 13
+2fabc 4 486 85
+2fac0 c 117 13
+2facc c 486 85
+FUNC 2fad8 3c 0 testing::internal::TestFactoryImpl<CpuSetTest_MultiItems_Test>::CreateTest
+2fad8 10 486 85
+2fae8 8 486 85
+2faf0 8 108 13
+2faf8 4 486 85
+2fafc c 108 13
+2fb08 c 486 85
+FUNC 2fb14 3c 0 testing::internal::TestFactoryImpl<CpuSetTest_TenCpusWithRange_Test>::CreateTest
+2fb14 10 486 85
+2fb24 8 486 85
+2fb2c 8 99 13
+2fb34 4 486 85
+2fb38 c 99 13
+2fb44 c 486 85
+FUNC 2fb50 3c 0 testing::internal::TestFactoryImpl<CpuSetTest_TwoCpusWithRange_Test>::CreateTest
+2fb50 10 486 85
+2fb60 8 486 85
+2fb68 8 90 13
+2fb70 4 486 85
+2fb74 c 90 13
+2fb80 c 486 85
+FUNC 2fb8c 3c 0 testing::internal::TestFactoryImpl<CpuSetTest_TwoCpusWithComma_Test>::CreateTest
+2fb8c 10 486 85
+2fb9c 8 486 85
+2fba4 8 81 13
+2fbac 4 486 85
+2fbb0 c 81 13
+2fbbc c 486 85
+FUNC 2fbc8 3c 0 testing::internal::TestFactoryImpl<CpuSetTest_OneCpuTerminated_Test>::CreateTest
+2fbc8 10 486 85
+2fbd8 8 486 85
+2fbe0 8 72 13
+2fbe8 4 486 85
+2fbec c 72 13
+2fbf8 c 486 85
+FUNC 2fc04 3c 0 testing::internal::TestFactoryImpl<CpuSetTest_OneCpu_Test>::CreateTest
+2fc04 10 486 85
+2fc14 8 486 85
+2fc1c 8 63 13
+2fc24 4 486 85
+2fc28 c 63 13
+2fc34 c 486 85
+FUNC 2fc40 3c 0 testing::internal::TestFactoryImpl<CpuSetTest_EmptyCount_Test>::CreateTest
+2fc40 10 486 85
+2fc50 8 486 85
+2fc58 8 58 13
+2fc60 4 486 85
+2fc64 c 58 13
+2fc70 c 486 85
+FUNC 2fc7c c 0 google_breakpad::CpuSet::CpuSet
+2fc7c c 51 12
+FUNC 2fc88 184 0 google_breakpad::CpuSet::ParseSysFile
+2fc88 4 55 12
+2fc8c 4 3104 97
+2fc90 14 55 12
+2fca4 4 3104 97
+2fca8 8 55 12
+2fcb0 18 3104 97
+2fcc8 4 3104 97
+2fccc c 3104 97
+2fcd8 4 58 12
+2fcdc 4 61 12
+2fce0 4 71 12
+2fce4 4 100 12
+2fce8 4 102 12
+2fcec 4 131 12
+2fcf0 4 61 12
+2fcf4 4 72 12
+2fcf8 c 73 12
+2fd04 8 75 12
+2fd0c 4 75 12
+2fd10 4 76 12
+2fd14 c 75 12
+2fd20 8 109 12
+2fd28 8 59 12
+2fd30 14 82 12
+2fd44 4 84 12
+2fd48 4 83 12
+2fd4c 8 92 12
+2fd54 8 92 12
+2fd5c 4 92 12
+2fd60 14 93 12
+2fd74 8 96 12
+2fd7c 8 101 12
+2fd84 4 100 12
+2fd88 8 101 12
+2fd90 8 102 12
+2fd98 c 103 12
+2fda4 c 104 12
+2fdb0 10 106 12
+2fdc0 4 130 12
+2fdc4 4 107 12
+2fdc8 4 130 12
+2fdcc 1c 131 12
+2fde8 8 130 12
+2fdf0 1c 110 12
+FUNC 2fe0c 48 0 google_breakpad::CpuSet::GetCount
+2fe0c c 119 12
+2fe18 4 121 12
+2fe1c 4 119 12
+2fe20 4 120 12
+2fe24 4 119 12
+2fe28 4 122 12
+2fe2c 4 121 12
+2fe30 8 122 12
+2fe38 8 121 12
+2fe40 14 125 12
+FUNC 2fe54 10 0 google_breakpad::AutoTestFile::~AutoTestFile
+2fe54 8 73 52
+2fe5c 4 74 52
+2fe60 4 77 52
+FUNC 2fe64 68 0 google_breakpad::AutoTestFile::Init
+2fe64 4 92 52
+2fe68 4 97 52
+2fe6c 4 92 52
+2fe70 8 97 52
+2fe78 c 92 52
+2fe84 4 92 52
+2fe88 4 97 52
+2fe8c 8 93 52
+2fe94 8 97 52
+2fe9c 8 98 52
+2fea4 c 101 52
+2feb0 4 102 52
+2feb4 8 105 52
+2febc 10 106 52
+FUNC 2fecc ac 0 ScopedTestFile::ScopedTestFile
+2fecc 10 51 13
+2fedc 4 60 52
+2fee0 4 51 13
+2fee4 4 60 52
+2fee8 4 51 13
+2feec 4 60 52
+2fef0 8 61 52
+2fef8 c 62 52
+2ff04 1c 109 52
+2ff20 4 109 52
+2ff24 c 109 52
+2ff30 8 110 52
+2ff38 8 111 52
+2ff40 c 112 52
+2ff4c 8 116 52
+2ff54 c 53 13
+2ff60 8 116 52
+2ff68 10 53 13
+FUNC 2ff78 c4 0 CpuSetTest_EmptyCount_Test::TestBody
+2ff78 c 58 13
+2ff84 4 59 13
+2ff88 4 1552 82
+2ff8c 4 59 13
+2ff90 4 58 13
+2ff94 4 59 13
+2ff98 8 60 13
+2ffa0 c 1552 82
+2ffac 8 60 13
+2ffb4 20 1552 82
+2ffd4 8 60 13
+2ffdc c 302 82
+2ffe8 18 60 13
+30000 8 60 13
+30008 c 60 13
+30014 8 85 79
+3001c 8 60 13
+30024 8 256 82
+3002c 10 61 13
+FUNC 3003c 224 0 CpuSetTest_OneCpu_Test::TestBody
+3003c 4 63 13
+30040 4 64 13
+30044 8 63 13
+3004c c 64 13
+30058 c 63 13
+30064 4 64 13
+30068 4 1139 87
+3006c 4 82 52
+30070 c 277 82
+3007c c 82 52
+30088 8 277 82
+30090 4 65 13
+30094 24 65 13
+300b8 1c 65 13
+300d4 8 65 13
+300dc c 65 13
+300e8 8 85 79
+300f0 8 65 13
+300f8 c 156 132
+30104 c 256 82
+30110 8 67 13
+30118 c 68 13
+30124 4 1139 87
+30128 4 68 13
+3012c 4 277 82
+30130 4 68 13
+30134 20 68 13
+30154 4 68 13
+30158 4 68 13
+3015c 1c 68 13
+30178 8 68 13
+30180 c 68 13
+3018c 8 85 79
+30194 8 68 13
+3019c 8 156 132
+301a4 10 256 82
+301b4 14 69 13
+301c8 20 1512 82
+301e8 8 69 13
+301f0 c 302 82
+301fc 18 69 13
+30214 8 69 13
+3021c c 69 13
+30228 8 85 79
+30230 8 69 13
+30238 8 256 82
+30240 8 49 13
+30248 18 70 13
+FUNC 30260 224 0 CpuSetTest_OneCpuTerminated_Test::TestBody
+30260 4 72 13
+30264 4 73 13
+30268 8 72 13
+30270 c 73 13
+3027c c 72 13
+30288 4 73 13
+3028c 4 1139 87
+30290 4 82 52
+30294 c 277 82
+302a0 c 82 52
+302ac 8 277 82
+302b4 4 74 13
+302b8 24 74 13
+302dc 1c 74 13
+302f8 8 74 13
+30300 c 74 13
+3030c 8 85 79
+30314 8 74 13
+3031c c 156 132
+30328 c 256 82
+30334 8 76 13
+3033c c 77 13
+30348 4 1139 87
+3034c 4 77 13
+30350 4 277 82
+30354 4 77 13
+30358 20 77 13
+30378 4 77 13
+3037c 4 77 13
+30380 1c 77 13
+3039c 8 77 13
+303a4 c 77 13
+303b0 8 85 79
+303b8 8 77 13
+303c0 8 156 132
+303c8 10 256 82
+303d8 14 78 13
+303ec 20 1512 82
+3040c 8 78 13
+30414 c 302 82
+30420 18 78 13
+30438 8 78 13
+30440 c 78 13
+3044c 8 85 79
+30454 8 78 13
+3045c 8 256 82
+30464 8 49 13
+3046c 18 79 13
+FUNC 30484 224 0 CpuSetTest_TwoCpusWithComma_Test::TestBody
+30484 4 81 13
+30488 4 82 13
+3048c 8 81 13
+30494 c 82 13
+304a0 c 81 13
+304ac 4 82 13
+304b0 4 1139 87
+304b4 4 82 52
+304b8 c 277 82
+304c4 c 82 52
+304d0 8 277 82
+304d8 4 83 13
+304dc 24 83 13
+30500 1c 83 13
+3051c 8 83 13
+30524 c 83 13
+30530 8 85 79
+30538 8 83 13
+30540 c 156 132
+3054c c 256 82
+30558 8 85 13
+30560 c 86 13
+3056c 4 1139 87
+30570 4 86 13
+30574 4 277 82
+30578 4 86 13
+3057c 20 86 13
+3059c 4 86 13
+305a0 4 86 13
+305a4 1c 86 13
+305c0 8 86 13
+305c8 c 86 13
+305d4 8 85 79
+305dc 8 86 13
+305e4 8 156 132
+305ec c 256 82
+305f8 4 87 13
+305fc 4 256 82
+30600 10 87 13
+30610 20 1512 82
+30630 8 87 13
+30638 c 302 82
+30644 18 87 13
+3065c 8 87 13
+30664 c 87 13
+30670 8 85 79
+30678 8 87 13
+30680 8 256 82
+30688 8 49 13
+30690 18 88 13
+FUNC 306a8 224 0 CpuSetTest_TwoCpusWithRange_Test::TestBody
+306a8 4 90 13
+306ac 4 91 13
+306b0 8 90 13
+306b8 c 91 13
+306c4 c 90 13
+306d0 4 91 13
+306d4 4 1139 87
+306d8 4 82 52
+306dc c 277 82
+306e8 c 82 52
+306f4 8 277 82
+306fc 4 92 13
+30700 24 92 13
+30724 1c 92 13
+30740 8 92 13
+30748 c 92 13
+30754 8 85 79
+3075c 8 92 13
+30764 c 156 132
+30770 c 256 82
+3077c 8 94 13
+30784 c 95 13
+30790 4 1139 87
+30794 4 95 13
+30798 4 277 82
+3079c 4 95 13
+307a0 20 95 13
+307c0 4 95 13
+307c4 4 95 13
+307c8 1c 95 13
+307e4 8 95 13
+307ec c 95 13
+307f8 8 85 79
+30800 8 95 13
+30808 8 156 132
+30810 c 256 82
+3081c 4 96 13
+30820 4 256 82
+30824 10 96 13
+30834 20 1512 82
+30854 8 96 13
+3085c c 302 82
+30868 18 96 13
+30880 8 96 13
+30888 c 96 13
+30894 8 85 79
+3089c 8 96 13
+308a4 8 256 82
+308ac 8 49 13
+308b4 18 97 13
+FUNC 308cc 224 0 CpuSetTest_TenCpusWithRange_Test::TestBody
+308cc 4 99 13
+308d0 4 100 13
+308d4 8 99 13
+308dc c 100 13
+308e8 c 99 13
+308f4 4 100 13
+308f8 4 1139 87
+308fc 4 82 52
+30900 c 277 82
+3090c c 82 52
+30918 8 277 82
+30920 4 101 13
+30924 24 101 13
+30948 1c 101 13
+30964 8 101 13
+3096c c 101 13
+30978 8 85 79
+30980 8 101 13
+30988 c 156 132
+30994 c 256 82
+309a0 8 103 13
+309a8 c 104 13
+309b4 4 1139 87
+309b8 4 104 13
+309bc 4 277 82
+309c0 4 104 13
+309c4 20 104 13
+309e4 4 104 13
+309e8 4 104 13
+309ec 1c 104 13
+30a08 8 104 13
+30a10 c 104 13
+30a1c 8 85 79
+30a24 8 104 13
+30a2c 8 156 132
+30a34 10 256 82
+30a44 14 105 13
+30a58 20 1512 82
+30a78 8 105 13
+30a80 c 302 82
+30a8c 18 105 13
+30aa4 8 105 13
+30aac c 105 13
+30ab8 8 85 79
+30ac0 8 105 13
+30ac8 8 256 82
+30ad0 8 49 13
+30ad8 18 106 13
+FUNC 30af0 224 0 CpuSetTest_MultiItems_Test::TestBody
+30af0 4 108 13
+30af4 4 109 13
+30af8 8 108 13
+30b00 c 109 13
+30b0c c 108 13
+30b18 4 109 13
+30b1c 4 1139 87
+30b20 4 82 52
+30b24 c 277 82
+30b30 c 82 52
+30b3c 8 277 82
+30b44 4 110 13
+30b48 24 110 13
+30b6c 1c 110 13
+30b88 8 110 13
+30b90 c 110 13
+30b9c 8 85 79
+30ba4 8 110 13
+30bac c 156 132
+30bb8 c 256 82
+30bc4 8 112 13
+30bcc c 113 13
+30bd8 4 1139 87
+30bdc 4 113 13
+30be0 4 277 82
+30be4 4 113 13
+30be8 20 113 13
+30c08 4 113 13
+30c0c 4 113 13
+30c10 1c 113 13
+30c2c 8 113 13
+30c34 c 113 13
+30c40 8 85 79
+30c48 8 113 13
+30c50 8 156 132
+30c58 10 256 82
+30c68 14 114 13
+30c7c 20 1512 82
+30c9c 8 114 13
+30ca4 c 302 82
+30cb0 18 114 13
+30cc8 8 114 13
+30cd0 c 114 13
+30cdc 8 85 79
+30ce4 8 114 13
+30cec 8 256 82
+30cf4 8 49 13
+30cfc 18 115 13
+FUNC 30d14 54c 0 CpuSetTest_IntersectWith_Test::TestBody
+30d14 4 117 13
+30d18 4 118 13
+30d1c 8 117 13
+30d24 c 118 13
+30d30 14 117 13
+30d44 4 118 13
+30d48 4 82 52
+30d4c 4 277 82
+30d50 8 1139 87
+30d58 c 82 52
+30d64 c 277 82
+30d70 4 119 13
+30d74 24 119 13
+30d98 1c 119 13
+30db4 8 119 13
+30dbc c 119 13
+30dc8 8 85 79
+30dd0 8 119 13
+30dd8 c 156 132
+30de4 4 256 82
+30de8 4 1139 87
+30dec 4 256 82
+30df0 8 120 13
+30df8 c 121 13
+30e04 4 277 82
+30e08 4 121 13
+30e0c 4 1139 87
+30e10 4 121 13
+30e14 20 121 13
+30e34 4 121 13
+30e38 4 121 13
+30e3c 1c 121 13
+30e58 8 121 13
+30e60 c 121 13
+30e6c 8 85 79
+30e74 8 121 13
+30e7c 8 156 132
+30e84 10 256 82
+30e94 8 1512 82
+30e9c 4 256 82
+30ea0 14 122 13
+30eb4 1c 1512 82
+30ed0 8 122 13
+30ed8 c 302 82
+30ee4 18 122 13
+30efc 8 122 13
+30f04 c 122 13
+30f10 8 85 79
+30f18 8 122 13
+30f20 c 256 82
+30f2c 8 124 13
+30f34 4 256 82
+30f38 10 124 13
+30f48 4 1139 87
+30f4c c 82 52
+30f58 4 277 82
+30f5c 4 125 13
+30f60 24 125 13
+30f84 1c 125 13
+30fa0 8 125 13
+30fa8 c 125 13
+30fb4 8 85 79
+30fbc 8 125 13
+30fc4 c 156 132
+30fd0 4 256 82
+30fd4 4 1139 87
+30fd8 4 256 82
+30fdc 8 126 13
+30fe4 c 127 13
+30ff0 4 277 82
+30ff4 4 127 13
+30ff8 4 1139 87
+30ffc 4 127 13
+31000 20 127 13
+31020 4 127 13
+31024 4 127 13
+31028 1c 127 13
+31044 8 127 13
+3104c c 127 13
+31058 8 85 79
+31060 8 127 13
+31068 8 156 132
+31070 c 256 82
+3107c 4 1512 82
+31080 4 256 82
+31084 14 128 13
+31098 24 1512 82
+310bc c 128 13
+310c8 c 302 82
+310d4 18 128 13
+310ec 8 128 13
+310f4 c 128 13
+31100 8 85 79
+31108 8 128 13
+31110 10 256 82
+31120 4 114 12
+31124 10 115 12
+31134 4 114 12
+31138 8 114 12
+31140 18 131 13
+31158 1c 1512 82
+31174 8 131 13
+3117c c 302 82
+31188 18 131 13
+311a0 8 256 82
+311a8 14 132 13
+311bc 1c 1512 82
+311d8 8 132 13
+311e0 c 302 82
+311ec 18 132 13
+31204 8 132 13
+3120c c 132 13
+31218 8 85 79
+31220 8 132 13
+31228 8 256 82
+31230 10 49 13
+31240 20 133 13
+FUNC 31260 290 0 CpuSetTest_SelfIntersection_Test::TestBody
+31260 4 135 13
+31264 4 136 13
+31268 8 135 13
+31270 c 136 13
+3127c 10 135 13
+3128c 4 136 13
+31290 4 1139 87
+31294 4 82 52
+31298 c 277 82
+312a4 c 82 52
+312b0 8 277 82
+312b8 4 137 13
+312bc 24 137 13
+312e0 1c 137 13
+312fc 8 137 13
+31304 c 137 13
+31310 8 85 79
+31318 8 137 13
+31320 c 156 132
+3132c c 256 82
+31338 8 138 13
+31340 c 139 13
+3134c 4 1139 87
+31350 4 139 13
+31354 4 277 82
+31358 4 139 13
+3135c 20 139 13
+3137c 4 139 13
+31380 4 139 13
+31384 1c 139 13
+313a0 8 139 13
+313a8 c 139 13
+313b4 8 85 79
+313bc 8 139 13
+313c4 8 156 132
+313cc c 256 82
+313d8 8 1512 82
+313e0 4 140 13
+313e4 4 256 82
+313e8 4 1512 82
+313ec 8 140 13
+313f4 4 1512 82
+313f8 8 140 13
+31400 18 1512 82
+31418 8 140 13
+31420 c 302 82
+3142c 18 140 13
+31444 8 256 82
+3144c 10 143 13
+3145c 18 1512 82
+31474 8 143 13
+3147c c 302 82
+31488 18 143 13
+314a0 8 143 13
+314a8 c 143 13
+314b4 8 85 79
+314bc 8 143 13
+314c4 8 256 82
+314cc 8 49 13
+314d4 1c 144 13
+FUNC 314f0 540 0 CpuSetTest_EmptyIntersection_Test::TestBody
+314f0 4 146 13
+314f4 4 147 13
+314f8 c 146 13
+31504 c 147 13
+31510 10 146 13
+31520 4 147 13
+31524 4 1139 87
+31528 4 82 52
+3152c c 277 82
+31538 c 82 52
+31544 8 277 82
+3154c 4 148 13
+31550 24 148 13
+31574 1c 148 13
+31590 8 148 13
+31598 c 148 13
+315a4 8 85 79
+315ac 8 148 13
+315b4 c 156 132
+315c0 4 256 82
+315c4 4 1139 87
+315c8 4 256 82
+315cc 8 149 13
+315d4 c 150 13
+315e0 4 277 82
+315e4 4 150 13
+315e8 4 1139 87
+315ec 4 150 13
+315f0 20 150 13
+31610 4 150 13
+31614 4 150 13
+31618 1c 150 13
+31634 8 150 13
+3163c c 150 13
+31648 8 85 79
+31650 8 150 13
+31658 8 156 132
+31660 10 256 82
+31670 8 1512 82
+31678 4 256 82
+3167c 14 151 13
+31690 1c 1512 82
+316ac 10 151 13
+316bc c 302 82
+316c8 18 151 13
+316e0 8 151 13
+316e8 c 151 13
+316f4 8 85 79
+316fc 8 151 13
+31704 c 256 82
+31710 8 153 13
+31718 4 256 82
+3171c 10 153 13
+3172c 4 1139 87
+31730 c 82 52
+3173c 4 277 82
+31740 4 154 13
+31744 24 154 13
+31768 1c 154 13
+31784 8 154 13
+3178c c 154 13
+31798 8 85 79
+317a0 8 154 13
+317a8 c 156 132
+317b4 4 256 82
+317b8 4 1139 87
+317bc 4 256 82
+317c0 8 155 13
+317c8 c 156 13
+317d4 4 277 82
+317d8 4 156 13
+317dc 4 1139 87
+317e0 4 156 13
+317e4 20 156 13
+31804 4 156 13
+31808 4 156 13
+3180c 1c 156 13
+31828 8 156 13
+31830 c 156 13
+3183c 8 85 79
+31844 8 156 13
+3184c 8 156 132
+31854 c 256 82
+31860 4 1512 82
+31864 4 256 82
+31868 14 157 13
+3187c 18 1512 82
+31894 8 157 13
+3189c c 302 82
+318a8 18 157 13
+318c0 8 157 13
+318c8 c 157 13
+318d4 8 85 79
+318dc 8 157 13
+318e4 10 256 82
+318f4 4 114 12
+318f8 10 115 12
+31908 4 114 12
+3190c 8 114 12
+31914 14 160 13
+31928 20 1552 82
+31948 8 160 13
+31950 c 302 82
+3195c 18 160 13
+31974 8 256 82
+3197c 14 162 13
+31990 18 1512 82
+319a8 8 162 13
+319b0 c 302 82
+319bc 18 162 13
+319d4 8 162 13
+319dc c 162 13
+319e8 8 85 79
+319f0 8 162 13
+319f8 8 256 82
+31a00 10 49 13
+31a10 20 163 13
+FUNC 31a30 4 0 testing::internal::TestFactoryImpl<DirectoryReaderTest_CompareResults_Test>::~TestFactoryImpl
+31a30 4 484 85
+FUNC 31a34 4 0 testing::internal::TestFactoryImpl<DirectoryReaderTest_CompareResults_Test>::~TestFactoryImpl
+31a34 4 484 85
+FUNC 31a38 14 0 DirectoryReaderTest_CompareResults_Test::~DirectoryReaderTest_CompareResults_Test
+31a38 14 47 15
+FUNC 31a4c 24 0 DirectoryReaderTest_CompareResults_Test::~DirectoryReaderTest_CompareResults_Test
+31a4c c 47 15
+31a58 8 47 15
+31a60 4 47 15
+31a64 8 47 15
+31a6c 4 47 15
+FUNC 31a70 3c 0 testing::internal::TestFactoryImpl<DirectoryReaderTest_CompareResults_Test>::CreateTest
+31a70 10 486 85
+31a80 8 486 85
+31a88 8 47 15
+31a90 4 486 85
+31a94 c 47 15
+31aa0 c 486 85
+FUNC 31aac 4c 0 std::priv::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::priv::_Identity<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::priv::_SetTraitsT<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_M_create_node
+31aac 4 315 136
+31ab0 4 306 101
+31ab4 8 315 136
+31abc 4 315 136
+31ac0 8 306 101
+31ac8 8 307 101
+31ad0 8 119 103
+31ad8 8 119 103
+31ae0 4 321 136
+31ae4 4 324 136
+31ae8 4 322 136
+31aec c 324 136
+FUNC 31af8 58 0 std::priv::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::priv::_Identity<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::priv::_SetTraitsT<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_M_erase
+31af8 18 655 135
+31b10 4 657 135
+31b14 c 658 135
+31b20 4 659 135
+31b24 8 156 132
+31b2c 14 161 101
+31b40 10 664 135
+FUNC 31b50 60 0 std::operator< <char, std::char_traits<char>, std::allocator<char> >
+31b50 14 351 134
+31b64 4 1073 131
+31b68 c 1074 131
+31b74 4 1073 131
+31b78 8 1074 131
+31b80 8 226 140
+31b88 4 1076 131
+31b8c 4 1076 131
+31b90 4 1076 131
+31b94 c 1076 131
+31ba0 10 355 134
+FUNC 31bb0 5c 0 std::priv::_Rb_global<bool>::_Rotate_left
+31bb0 4 62 135
+31bb4 8 63 135
+31bbc 8 64 135
+31bc4 4 65 135
+31bc8 8 66 135
+31bd0 c 68 135
+31bdc 8 69 135
+31be4 10 70 135
+31bf4 8 71 135
+31bfc 4 73 135
+31c00 4 74 135
+31c04 4 75 135
+31c08 4 76 135
+FUNC 31c0c 5c 0 std::priv::_Rb_global<bool>::_Rotate_right
+31c0c 4 81 135
+31c10 8 82 135
+31c18 8 83 135
+31c20 4 84 135
+31c24 8 85 135
+31c2c c 87 135
+31c38 8 88 135
+31c40 10 89 135
+31c50 8 90 135
+31c58 4 92 135
+31c5c 4 93 135
+31c60 4 94 135
+31c64 4 95 135
+FUNC 31c68 124 0 std::priv::_Rb_global<bool>::_Rebalance
+31c68 10 98 135
+31c78 8 98 135
+31c80 4 100 135
+31c84 4 133 135
+31c88 c 101 135
+31c94 8 139 135
+31c9c 10 140 135
+31cac c 101 135
+31cb8 10 102 135
+31cc8 4 103 135
+31ccc 4 104 135
+31cd0 8 104 135
+31cd8 c 111 135
+31ce4 10 113 135
+31cf4 4 115 135
+31cf8 4 117 135
+31cfc 4 115 135
+31d00 c 116 135
+31d0c 10 117 135
+31d1c 4 122 135
+31d20 8 122 135
+31d28 4 123 135
+31d2c 4 124 135
+31d30 c 125 135
+31d3c c 126 135
+31d48 c 129 135
+31d54 10 131 135
+31d64 4 133 135
+31d68 4 135 135
+31d6c 4 133 135
+31d70 c 134 135
+31d7c 10 135 135
+FUNC 31d8c dc 0 std::priv::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::priv::_Identity<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::priv::_SetTraitsT<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_M_insert
+31d8c 4 350 135
+31d90 4 358 135
+31d94 c 350 135
+31da0 c 350 135
+31dac 4 358 135
+31db0 c 359 135
+31dbc 4 360 135
+31dc0 4 361 135
+31dc4 8 362 135
+31dcc 4 364 135
+31dd0 4 364 135
+31dd4 14 79 106
+31de8 8 364 135
+31df0 8 367 135
+31df8 4 368 135
+31dfc 4 367 135
+31e00 c 369 135
+31e0c 8 370 135
+31e14 8 373 135
+31e1c 4 374 135
+31e20 4 373 135
+31e24 c 375 135
+31e30 4 376 135
+31e34 8 379 135
+31e3c 4 378 135
+31e40 4 379 135
+31e44 4 380 135
+31e48 4 382 135
+31e4c 8 380 135
+31e54 4 142 136
+31e58 10 382 135
+FUNC 31e68 950 0 DirectoryReaderTest_CompareResults_Test::TestBody
+31e68 14 47 15
+31e7c 4 481 101
+31e80 8 50 15
+31e88 4 277 82
+31e8c 4 47 15
+31e90 4 1139 87
+31e94 4 481 101
+31e98 c 47 15
+31ea4 4 263 136
+31ea8 8 266 136
+31eb0 8 267 136
+31eb8 4 391 136
+31ebc 4 50 15
+31ec0 4 51 15
+31ec4 4 50 15
+31ec8 4 51 15
+31ecc 4 277 82
+31ed0 8 1139 87
+31ed8 4 51 15
+31edc 20 51 15
+31efc 4 51 15
+31f00 4 51 15
+31f04 1c 51 15
+31f20 8 51 15
+31f28 c 51 15
+31f34 8 85 79
+31f3c 8 51 15
+31f44 8 156 132
+31f4c 10 256 82
+31f5c 10 54 15
+31f6c c 55 15
+31f78 4 406 135
+31f7c 4 55 15
+31f80 4 407 135
+31f84 4 408 135
+31f88 4 409 135
+31f8c 14 79 106
+31fa0 8 412 135
+31fa8 8 412 135
+31fb0 4 412 135
+31fb4 c 47 15
+31fc0 4 409 135
+31fc4 4 415 135
+31fc8 c 416 135
+31fd4 18 417 135
+31fec 8 279 135
+31ff4 10 279 135
+32004 8 280 135
+3200c 8 281 135
+32014 10 99 136
+32024 4 285 135
+32028 c 286 135
+32034 c 288 135
+32040 4 187 136
+32044 10 79 106
+32054 4 421 135
+32058 1c 422 135
+32074 c 156 132
+32080 4 57 15
+32084 4 59 15
+32088 4 57 15
+3208c c 59 15
+32098 4 60 15
+3209c 4 59 15
+320a0 4 1621 82
+320a4 4 1621 82
+320a8 8 1621 82
+320b0 24 1621 82
+320d4 8 60 15
+320dc 4 1144 87
+320e0 c 298 82
+320ec 8 298 82
+320f4 18 60 15
+3210c 8 60 15
+32114 c 60 15
+32120 8 85 79
+32128 8 60 15
+32130 c 256 82
+3213c 4 63 15
+32140 8 3016 97
+32148 4 256 82
+3214c c 51 14
+32158 8 553 136
+32160 8 65 14
+32168 20 3016 97
+32188 4 3016 97
+3218c c 3016 97
+32198 8 68 14
+321a0 4 70 14
+321a4 c 71 14
+321b0 c 73 14
+321bc 8 77 14
+321c4 c 77 14
+321d0 10 553 136
+321e0 10 79 106
+321f0 4 156 132
+321f4 4 79 106
+321f8 4 156 132
+321fc 8 553 136
+32204 4 554 136
+32208 8 556 136
+32210 4 552 136
+32214 8 558 136
+3221c 10 559 136
+3222c 10 79 106
+3223c 8 156 132
+32244 8 560 136
+3224c 4 200 136
+32250 4 1139 87
+32254 4 200 136
+32258 4 277 82
+3225c 4 67 15
+32260 20 67 15
+32280 4 67 15
+32284 4 67 15
+32288 4 67 15
+3228c 1c 67 15
+322a8 8 67 15
+322b0 c 67 15
+322bc 8 85 79
+322c4 8 67 15
+322cc 8 156 132
+322d4 18 256 82
+322ec 8 1481 82
+322f4 8 1482 82
+322fc 8 76 15
+32304 8 256 82
+3230c 8 77 15
+32314 8 531 136
+3231c 10 532 136
+3232c 8 553 136
+32334 4 549 136
+32338 4 553 136
+3233c 4 552 136
+32340 10 553 136
+32350 10 79 106
+32360 8 156 132
+32368 4 553 136
+3236c 8 554 136
+32374 14 556 136
+32388 8 558 136
+32390 14 559 136
+323a4 10 79 106
+323b4 8 156 132
+323bc 8 560 136
+323c4 4 200 136
+323c8 4 1139 87
+323cc 4 200 136
+323d0 4 277 82
+323d4 4 1139 87
+323d8 4 72 15
+323dc 20 72 15
+323fc 4 72 15
+32400 4 72 15
+32404 18 72 15
+3241c 4 256 82
+32420 4 553 136
+32424 4 549 136
+32428 4 553 136
+3242c 8 256 82
+32434 4 552 136
+32438 10 553 136
+32448 10 79 106
+32458 8 156 132
+32460 4 553 136
+32464 8 554 136
+3246c 14 556 136
+32480 8 558 136
+32488 14 559 136
+3249c 10 79 106
+324ac 8 156 132
+324b4 8 560 136
+324bc 4 200 136
+324c0 4 1139 87
+324c4 4 200 136
+324c8 4 277 82
+324cc 4 1139 87
+324d0 4 73 15
+324d4 20 73 15
+324f4 4 73 15
+324f8 4 73 15
+324fc 18 73 15
+32514 4 256 82
+32518 4 553 136
+3251c 4 549 136
+32520 4 553 136
+32524 8 256 82
+3252c 4 552 136
+32530 10 553 136
+32540 10 79 106
+32550 8 156 132
+32558 4 553 136
+3255c 8 554 136
+32564 14 556 136
+32578 8 558 136
+32580 14 559 136
+32594 10 79 106
+325a4 8 156 132
+325ac 8 560 136
+325b4 4 200 136
+325b8 4 1139 87
+325bc 4 200 136
+325c0 4 277 82
+325c4 4 1139 87
+325c8 4 74 15
+325cc 20 74 15
+325ec 4 74 15
+325f0 4 74 15
+325f4 18 74 15
+3260c 4 74 15
+32610 4 74 15
+32614 8 74 15
+3261c c 74 15
+32628 8 85 79
+32630 8 74 15
+32638 8 156 132
+32640 8 256 82
+32648 8 884 80
+32650 4 263 121
+32654 4 884 80
+32658 8 263 121
+32660 4 75 127
+32664 4 263 121
+32668 c 75 127
+32674 8 886 80
+3267c c 884 80
+32688 8 254 121
+32690 4 75 127
+32694 4 254 121
+32698 c 75 127
+326a4 8 886 80
+326ac 24 1471 82
+326d0 14 156 132
+326e4 4 1144 87
+326e8 c 298 82
+326f4 8 298 82
+326fc 1c 76 15
+32718 8 76 15
+32720 c 76 15
+3272c 8 85 79
+32734 8 76 15
+3273c c 256 82
+32748 8 549 136
+32750 c 556 136
+3275c 4 256 82
+32760 4 68 15
+32764 4 256 82
+32768 8 87 14
+32770 4 93 14
+32774 c 94 14
+32780 8 93 14
+32788 c 94 14
+32794 24 78 15
+FUNC 327b8 4 0 testing::internal::TestFactoryImpl<LineReaderTest_TooLong_Test>::~TestFactoryImpl
+327b8 4 484 85
+FUNC 327bc 4 0 testing::internal::TestFactoryImpl<LineReaderTest_MaxLength_Test>::~TestFactoryImpl
+327bc 4 484 85
+FUNC 327c0 4 0 testing::internal::TestFactoryImpl<LineReaderTest_TwoLines_Test>::~TestFactoryImpl
+327c0 4 484 85
+FUNC 327c4 4 0 testing::internal::TestFactoryImpl<LineReaderTest_TwoLinesTerminated_Test>::~TestFactoryImpl
+327c4 4 484 85
+FUNC 327c8 4 0 testing::internal::TestFactoryImpl<LineReaderTest_OneLine_Test>::~TestFactoryImpl
+327c8 4 484 85
+FUNC 327cc 4 0 testing::internal::TestFactoryImpl<LineReaderTest_OneLineTerminated_Test>::~TestFactoryImpl
+327cc 4 484 85
+FUNC 327d0 4 0 testing::internal::TestFactoryImpl<LineReaderTest_EmptyFile_Test>::~TestFactoryImpl
+327d0 4 484 85
+FUNC 327d4 4 0 testing::internal::TestFactoryImpl<LineReaderTest_EmptyFile_Test>::~TestFactoryImpl
+327d4 4 484 85
+FUNC 327d8 4 0 testing::internal::TestFactoryImpl<LineReaderTest_OneLineTerminated_Test>::~TestFactoryImpl
+327d8 4 484 85
+FUNC 327dc 4 0 testing::internal::TestFactoryImpl<LineReaderTest_OneLine_Test>::~TestFactoryImpl
+327dc 4 484 85
+FUNC 327e0 4 0 testing::internal::TestFactoryImpl<LineReaderTest_TwoLinesTerminated_Test>::~TestFactoryImpl
+327e0 4 484 85
+FUNC 327e4 4 0 testing::internal::TestFactoryImpl<LineReaderTest_TwoLines_Test>::~TestFactoryImpl
+327e4 4 484 85
+FUNC 327e8 4 0 testing::internal::TestFactoryImpl<LineReaderTest_MaxLength_Test>::~TestFactoryImpl
+327e8 4 484 85
+FUNC 327ec 4 0 testing::internal::TestFactoryImpl<LineReaderTest_TooLong_Test>::~TestFactoryImpl
+327ec 4 484 85
+FUNC 327f0 14 0 LineReaderTest_TooLong_Test::~LineReaderTest_TooLong_Test
+327f0 14 158 17
+FUNC 32804 24 0 LineReaderTest_TooLong_Test::~LineReaderTest_TooLong_Test
+32804 c 158 17
+32810 8 158 17
+32818 4 158 17
+3281c 8 158 17
+32824 4 158 17
+FUNC 32828 14 0 LineReaderTest_MaxLength_Test::~LineReaderTest_MaxLength_Test
+32828 14 143 17
+FUNC 3283c 24 0 LineReaderTest_MaxLength_Test::~LineReaderTest_MaxLength_Test
+3283c c 143 17
+32848 8 143 17
+32850 4 143 17
+32854 8 143 17
+3285c 4 143 17
+FUNC 32860 14 0 LineReaderTest_TwoLines_Test::~LineReaderTest_TwoLines_Test
+32860 14 121 17
+FUNC 32874 24 0 LineReaderTest_TwoLines_Test::~LineReaderTest_TwoLines_Test
+32874 c 121 17
+32880 8 121 17
+32888 4 121 17
+3288c 8 121 17
+32894 4 121 17
+FUNC 32898 14 0 LineReaderTest_TwoLinesTerminated_Test::~LineReaderTest_TwoLinesTerminated_Test
+32898 14 99 17
+FUNC 328ac 24 0 LineReaderTest_TwoLinesTerminated_Test::~LineReaderTest_TwoLinesTerminated_Test
+328ac c 99 17
+328b8 8 99 17
+328c0 4 99 17
+328c4 8 99 17
+328cc 4 99 17
+FUNC 328d0 14 0 LineReaderTest_OneLine_Test::~LineReaderTest_OneLine_Test
+328d0 14 83 17
+FUNC 328e4 24 0 LineReaderTest_OneLine_Test::~LineReaderTest_OneLine_Test
+328e4 c 83 17
+328f0 8 83 17
+328f8 4 83 17
+328fc 8 83 17
+32904 4 83 17
+FUNC 32908 14 0 LineReaderTest_OneLineTerminated_Test::~LineReaderTest_OneLineTerminated_Test
+32908 14 67 17
+FUNC 3291c 24 0 LineReaderTest_OneLineTerminated_Test::~LineReaderTest_OneLineTerminated_Test
+3291c c 67 17
+32928 8 67 17
+32930 4 67 17
+32934 8 67 17
+3293c 4 67 17
+FUNC 32940 14 0 LineReaderTest_EmptyFile_Test::~LineReaderTest_EmptyFile_Test
+32940 14 57 17
+FUNC 32954 24 0 LineReaderTest_EmptyFile_Test::~LineReaderTest_EmptyFile_Test
+32954 c 57 17
+32960 8 57 17
+32968 4 57 17
+3296c 8 57 17
+32974 4 57 17
+FUNC 32978 3c 0 testing::internal::TestFactoryImpl<LineReaderTest_TooLong_Test>::CreateTest
+32978 10 486 85
+32988 8 486 85
+32990 8 158 17
+32998 4 486 85
+3299c c 158 17
+329a8 c 486 85
+FUNC 329b4 3c 0 testing::internal::TestFactoryImpl<LineReaderTest_OneLine_Test>::CreateTest
+329b4 10 486 85
+329c4 8 486 85
+329cc 8 83 17
+329d4 4 486 85
+329d8 c 83 17
+329e4 c 486 85
+FUNC 329f0 3c 0 testing::internal::TestFactoryImpl<LineReaderTest_OneLineTerminated_Test>::CreateTest
+329f0 10 486 85
+32a00 8 486 85
+32a08 8 67 17
+32a10 4 486 85
+32a14 c 67 17
+32a20 c 486 85
+FUNC 32a2c 3c 0 testing::internal::TestFactoryImpl<LineReaderTest_EmptyFile_Test>::CreateTest
+32a2c 10 486 85
+32a3c 8 486 85
+32a44 8 57 17
+32a4c 4 486 85
+32a50 c 57 17
+32a5c c 486 85
+FUNC 32a68 3c 0 testing::internal::TestFactoryImpl<LineReaderTest_TwoLines_Test>::CreateTest
+32a68 10 486 85
+32a78 8 486 85
+32a80 8 121 17
+32a88 4 486 85
+32a8c c 121 17
+32a98 c 486 85
+FUNC 32aa4 3c 0 testing::internal::TestFactoryImpl<LineReaderTest_TwoLinesTerminated_Test>::CreateTest
+32aa4 10 486 85
+32ab4 8 486 85
+32abc 8 99 17
+32ac4 4 486 85
+32ac8 c 99 17
+32ad4 c 486 85
+FUNC 32ae0 3c 0 testing::internal::TestFactoryImpl<LineReaderTest_MaxLength_Test>::CreateTest
+32ae0 10 486 85
+32af0 8 486 85
+32af8 8 143 17
+32b00 4 486 85
+32b04 c 143 17
+32b10 c 486 85
+FUNC 32b1c 118 0 google_breakpad::LineReader::GetNextLine
+32b1c 14 64 16
+32b30 4 64 16
+32b34 4 99 16
+32b38 4 103 16
+32b3c 8 66 16
+32b44 c 66 16
+32b50 14 69 16
+32b64 1c 70 16
+32b80 8 71 16
+32b88 8 72 16
+32b90 8 78 16
+32b98 c 86 16
+32ba4 8 90 16
+32bac 4 91 16
+32bb0 c 92 16
+32bbc 8 93 16
+32bc4 4 94 16
+32bc8 4 98 16
+32bcc 4 3104 97
+32bd0 4 98 16
+32bd4 4 99 16
+32bd8 14 3104 97
+32bec 4 3104 97
+32bf0 c 3104 97
+32bfc 8 100 16
+32c04 4 102 16
+32c08 8 103 16
+32c10 10 105 16
+32c20 4 67 16
+32c24 10 111 16
+FUNC 32c34 20 0 google_breakpad::LineReader::PopLine
+32c34 8 113 16
+32c3c 4 117 16
+32c40 4 118 16
+32c44 4 117 16
+32c48 c 118 16
+FUNC 32c54 8c 0 google_breakpad::AutoTestFile::WriteText
+32c54 1c 108 52
+32c70 1c 109 52
+32c8c 4 109 52
+32c90 c 109 52
+32c9c 8 110 52
+32ca4 8 111 52
+32cac 8 112 52
+32cb4 10 117 52
+32cc4 8 116 52
+32ccc c 117 52
+32cd8 8 116 52
+FUNC 32ce0 54 0 ScopedTestFile::ScopedTestFile
+32ce0 c 46 17
+32cec 4 46 17
+32cf0 4 60 52
+32cf4 4 46 17
+32cf8 8 60 52
+32d00 8 61 52
+32d08 c 62 52
+32d14 8 62 52
+32d1c 8 48 17
+32d24 4 62 52
+32d28 c 48 17
+FUNC 32d34 1a8 0 LineReaderTest_EmptyFile_Test::TestBody
+32d34 4 57 17
+32d38 8 58 17
+32d40 c 57 17
+32d4c 4 58 17
+32d50 4 57 17
+32d54 8 58 17
+32d5c 4 57 17
+32d60 4 58 17
+32d64 4 277 82
+32d68 4 82 52
+32d6c 8 1139 87
+32d74 8 82 52
+32d7c 4 277 82
+32d80 4 1139 87
+32d84 4 59 17
+32d88 20 59 17
+32da8 4 59 17
+32dac 4 59 17
+32db0 1c 59 17
+32dcc 8 59 17
+32dd4 c 59 17
+32de0 8 85 79
+32de8 8 59 17
+32df0 8 156 132
+32df8 10 256 82
+32e08 8 49 16
+32e10 4 64 17
+32e14 4 49 16
+32e18 8 64 17
+32e20 4 49 16
+32e24 4 1139 87
+32e28 c 64 17
+32e34 4 277 82
+32e38 4 1139 87
+32e3c 4 64 17
+32e40 20 64 17
+32e60 4 64 17
+32e64 4 64 17
+32e68 4 64 17
+32e6c 1c 64 17
+32e88 8 64 17
+32e90 c 64 17
+32e9c 8 85 79
+32ea4 8 64 17
+32eac 8 156 132
+32eb4 8 256 82
+32ebc 8 44 17
+32ec4 18 65 17
+FUNC 32edc 1d4 0 LineReaderTest_TooLong_Test::TestBody
+32edc 4 158 17
+32ee0 8 161 17
+32ee8 c 158 17
+32ef4 4 161 17
+32ef8 4 158 17
+32efc 4 161 17
+32f00 4 66 52
+32f04 4 158 17
+32f08 4 161 17
+32f0c 10 66 52
+32f1c 8 67 52
+32f24 10 68 52
+32f34 4 277 82
+32f38 4 82 52
+32f3c 8 1139 87
+32f44 c 82 52
+32f50 4 277 82
+32f54 4 1139 87
+32f58 4 163 17
+32f5c 20 163 17
+32f7c 4 163 17
+32f80 4 163 17
+32f84 1c 163 17
+32fa0 8 163 17
+32fa8 c 163 17
+32fb4 8 85 79
+32fbc 8 163 17
+32fc4 8 156 132
+32fcc 10 256 82
+32fdc 8 49 16
+32fe4 4 168 17
+32fe8 4 49 16
+32fec 8 168 17
+32ff4 4 49 16
+32ff8 4 1139 87
+32ffc c 168 17
+33008 4 277 82
+3300c 4 1139 87
+33010 4 168 17
+33014 20 168 17
+33034 4 168 17
+33038 4 168 17
+3303c 4 168 17
+33040 1c 168 17
+3305c 8 168 17
+33064 c 168 17
+33070 8 85 79
+33078 8 168 17
+33080 8 156 132
+33088 8 256 82
+33090 8 44 17
+33098 18 169 17
+FUNC 330b0 e8 0 testing::internal::CmpHelperEQFailure<char, char>
+330b0 c 1464 82
+330bc 4 884 80
+330c0 10 1464 82
+330d0 8 884 80
+330d8 4 1464 82
+330dc 4 75 127
+330e0 4 1464 82
+330e4 8 1464 82
+330ec 4 884 80
+330f0 c 394 80
+330fc 4 75 127
+33100 8 394 80
+33108 c 75 127
+33114 8 886 80
+3311c c 884 80
+33128 8 394 80
+33130 4 75 127
+33134 8 394 80
+3313c c 75 127
+33148 8 886 80
+33150 1c 1471 82
+3316c 10 156 132
+3317c 1c 1472 82
+FUNC 33198 3c 0 testing::internal::CmpHelperEQ<char, char>
+33198 8 1476 82
+331a0 8 1481 82
+331a8 4 1476 82
+331ac 4 1476 82
+331b0 8 1481 82
+331b8 8 1482 82
+331c0 4 1487 82
+331c4 10 1488 82
+FUNC 331d4 374 0 LineReaderTest_OneLineTerminated_Test::TestBody
+331d4 4 67 17
+331d8 8 68 17
+331e0 c 67 17
+331ec 8 68 17
+331f4 c 67 17
+33200 4 68 17
+33204 4 277 82
+33208 4 82 52
+3320c c 1139 87
+33218 8 82 52
+33220 4 277 82
+33224 4 1139 87
+33228 4 69 17
+3322c 20 69 17
+3324c 4 69 17
+33250 4 69 17
+33254 1c 69 17
+33270 8 69 17
+33278 c 69 17
+33284 8 85 79
+3328c 8 69 17
+33294 c 156 132
+332a0 4 256 82
+332a4 8 74 17
+332ac 4 1139 87
+332b0 4 256 82
+332b4 8 49 16
+332bc 4 74 17
+332c0 4 49 16
+332c4 8 74 17
+332cc 4 49 16
+332d0 4 74 17
+332d4 4 277 82
+332d8 4 74 17
+332dc 4 1139 87
+332e0 4 74 17
+332e4 20 74 17
+33304 4 74 17
+33308 4 74 17
+3330c 18 74 17
+33324 8 256 82
+3332c 4 75 17
+33330 4 1512 82
+33334 4 75 17
+33338 1c 1512 82
+33354 8 75 17
+3335c 4 302 82
+33360 4 75 17
+33364 8 302 82
+3336c 18 75 17
+33384 8 256 82
+3338c 4 76 17
+33390 4 1512 82
+33394 4 76 17
+33398 1c 1512 82
+333b4 8 76 17
+333bc 4 302 82
+333c0 4 76 17
+333c4 8 302 82
+333cc 18 76 17
+333e4 8 256 82
+333ec 8 77 17
+333f4 20 1552 82
+33414 8 77 17
+3341c 4 302 82
+33420 4 77 17
+33424 8 302 82
+3342c 18 77 17
+33444 8 77 17
+3344c c 77 17
+33458 8 85 79
+33460 8 77 17
+33468 10 256 82
+33478 c 78 17
+33484 18 80 17
+3349c 4 1139 87
+334a0 4 277 82
+334a4 4 80 17
+334a8 20 80 17
+334c8 4 80 17
+334cc 4 80 17
+334d0 18 80 17
+334e8 4 80 17
+334ec 4 80 17
+334f0 8 80 17
+334f8 c 80 17
+33504 8 85 79
+3350c 8 80 17
+33514 8 156 132
+3351c 8 256 82
+33524 8 44 17
+3352c 1c 81 17
+FUNC 33548 374 0 LineReaderTest_OneLine_Test::TestBody
+33548 4 83 17
+3354c 8 84 17
+33554 c 83 17
+33560 8 84 17
+33568 c 83 17
+33574 4 84 17
+33578 4 277 82
+3357c 4 82 52
+33580 c 1139 87
+3358c 8 82 52
+33594 4 277 82
+33598 4 1139 87
+3359c 4 85 17
+335a0 20 85 17
+335c0 4 85 17
+335c4 4 85 17
+335c8 1c 85 17
+335e4 8 85 17
+335ec c 85 17
+335f8 8 85 79
+33600 8 85 17
+33608 c 156 132
+33614 4 256 82
+33618 8 90 17
+33620 4 1139 87
+33624 4 256 82
+33628 8 49 16
+33630 4 90 17
+33634 4 49 16
+33638 8 90 17
+33640 4 49 16
+33644 4 90 17
+33648 4 277 82
+3364c 4 90 17
+33650 4 1139 87
+33654 4 90 17
+33658 20 90 17
+33678 4 90 17
+3367c 4 90 17
+33680 18 90 17
+33698 8 256 82
+336a0 4 91 17
+336a4 4 1512 82
+336a8 4 91 17
+336ac 1c 1512 82
+336c8 8 91 17
+336d0 4 302 82
+336d4 4 91 17
+336d8 8 302 82
+336e0 18 91 17
+336f8 8 256 82
+33700 4 92 17
+33704 4 1512 82
+33708 4 92 17
+3370c 1c 1512 82
+33728 8 92 17
+33730 4 302 82
+33734 4 92 17
+33738 8 302 82
+33740 18 92 17
+33758 8 256 82
+33760 8 93 17
+33768 20 1552 82
+33788 8 93 17
+33790 4 302 82
+33794 4 93 17
+33798 8 302 82
+337a0 18 93 17
+337b8 8 93 17
+337c0 c 93 17
+337cc 8 85 79
+337d4 8 93 17
+337dc 10 256 82
+337ec c 94 17
+337f8 18 96 17
+33810 4 1139 87
+33814 4 277 82
+33818 4 96 17
+3381c 20 96 17
+3383c 4 96 17
+33840 4 96 17
+33844 18 96 17
+3385c 4 96 17
+33860 4 96 17
+33864 8 96 17
+3386c c 96 17
+33878 8 85 79
+33880 8 96 17
+33888 8 156 132
+33890 8 256 82
+33898 8 44 17
+338a0 1c 97 17
+FUNC 338bc 568 0 LineReaderTest_TwoLinesTerminated_Test::TestBody
+338bc 4 99 17
+338c0 8 100 17
+338c8 10 99 17
+338d8 8 100 17
+338e0 14 99 17
+338f4 4 100 17
+338f8 4 277 82
+338fc 4 82 52
+33900 8 1139 87
+33908 c 82 52
+33914 4 277 82
+33918 4 1139 87
+3391c 4 101 17
+33920 20 101 17
+33940 4 101 17
+33944 4 101 17
+33948 1c 101 17
+33964 8 101 17
+3396c c 101 17
+33978 8 85 79
+33980 8 101 17
+33988 c 156 132
+33994 4 256 82
+33998 8 106 17
+339a0 4 1139 87
+339a4 4 256 82
+339a8 8 49 16
+339b0 4 106 17
+339b4 4 49 16
+339b8 8 106 17
+339c0 4 49 16
+339c4 4 106 17
+339c8 4 277 82
+339cc 4 106 17
+339d0 4 1139 87
+339d4 4 106 17
+339d8 20 106 17
+339f8 4 106 17
+339fc 4 106 17
+33a00 18 106 17
+33a18 8 256 82
+33a20 8 107 17
+33a28 30 1512 82
+33a58 8 107 17
+33a60 4 302 82
+33a64 4 107 17
+33a68 8 302 82
+33a70 18 107 17
+33a88 8 256 82
+33a90 8 108 17
+33a98 28 1512 82
+33ac0 8 108 17
+33ac8 4 302 82
+33acc 4 108 17
+33ad0 8 302 82
+33ad8 18 108 17
+33af0 4 256 82
+33af4 c 1552 82
+33b00 4 256 82
+33b04 4 1552 82
+33b08 4 109 17
+33b0c 14 1552 82
+33b20 4 109 17
+33b24 4 1552 82
+33b28 8 109 17
+33b30 4 302 82
+33b34 4 109 17
+33b38 8 302 82
+33b40 18 109 17
+33b58 8 256 82
+33b60 c 110 17
+33b6c 10 112 17
+33b7c 4 1139 87
+33b80 4 112 17
+33b84 4 277 82
+33b88 4 112 17
+33b8c 20 112 17
+33bac 4 112 17
+33bb0 4 112 17
+33bb4 18 112 17
+33bcc 4 112 17
+33bd0 4 112 17
+33bd4 8 112 17
+33bdc c 112 17
+33be8 8 85 79
+33bf0 8 112 17
+33bf8 8 156 132
+33c00 10 256 82
+33c10 8 113 17
+33c18 18 1512 82
+33c30 8 113 17
+33c38 4 302 82
+33c3c 4 113 17
+33c40 8 302 82
+33c48 18 113 17
+33c60 8 256 82
+33c68 4 114 17
+33c6c 8 1512 82
+33c74 4 114 17
+33c78 14 1512 82
+33c8c 8 114 17
+33c94 4 302 82
+33c98 4 114 17
+33c9c 8 302 82
+33ca4 18 114 17
+33cbc 8 256 82
+33cc4 8 115 17
+33ccc 18 1552 82
+33ce4 8 115 17
+33cec 4 302 82
+33cf0 4 115 17
+33cf4 8 302 82
+33cfc 18 115 17
+33d14 8 115 17
+33d1c c 115 17
+33d28 8 85 79
+33d30 8 115 17
+33d38 10 256 82
+33d48 c 116 17
+33d54 18 118 17
+33d6c 4 1139 87
+33d70 4 277 82
+33d74 4 118 17
+33d78 20 118 17
+33d98 4 118 17
+33d9c 4 118 17
+33da0 4 118 17
+33da4 1c 118 17
+33dc0 8 118 17
+33dc8 c 118 17
+33dd4 8 85 79
+33ddc 8 118 17
+33de4 8 156 132
+33dec 8 256 82
+33df4 8 44 17
+33dfc 28 119 17
+FUNC 33e24 568 0 LineReaderTest_TwoLines_Test::TestBody
+33e24 4 121 17
+33e28 8 122 17
+33e30 10 121 17
+33e40 8 122 17
+33e48 14 121 17
+33e5c 4 122 17
+33e60 4 277 82
+33e64 4 82 52
+33e68 8 1139 87
+33e70 c 82 52
+33e7c 4 277 82
+33e80 4 1139 87
+33e84 4 123 17
+33e88 20 123 17
+33ea8 4 123 17
+33eac 4 123 17
+33eb0 1c 123 17
+33ecc 8 123 17
+33ed4 c 123 17
+33ee0 8 85 79
+33ee8 8 123 17
+33ef0 c 156 132
+33efc 4 256 82
+33f00 8 128 17
+33f08 4 1139 87
+33f0c 4 256 82
+33f10 8 49 16
+33f18 4 128 17
+33f1c 4 49 16
+33f20 8 128 17
+33f28 4 49 16
+33f2c 4 128 17
+33f30 4 277 82
+33f34 4 128 17
+33f38 4 1139 87
+33f3c 4 128 17
+33f40 20 128 17
+33f60 4 128 17
+33f64 4 128 17
+33f68 18 128 17
+33f80 8 256 82
+33f88 8 129 17
+33f90 30 1512 82
+33fc0 8 129 17
+33fc8 4 302 82
+33fcc 4 129 17
+33fd0 8 302 82
+33fd8 18 129 17
+33ff0 8 256 82
+33ff8 8 130 17
+34000 28 1512 82
+34028 8 130 17
+34030 4 302 82
+34034 4 130 17
+34038 8 302 82
+34040 18 130 17
+34058 4 256 82
+3405c c 1552 82
+34068 4 256 82
+3406c 4 1552 82
+34070 4 131 17
+34074 14 1552 82
+34088 4 131 17
+3408c 4 1552 82
+34090 8 131 17
+34098 4 302 82
+3409c 4 131 17
+340a0 8 302 82
+340a8 18 131 17
+340c0 8 256 82
+340c8 c 132 17
+340d4 10 134 17
+340e4 4 1139 87
+340e8 4 134 17
+340ec 4 277 82
+340f0 4 134 17
+340f4 20 134 17
+34114 4 134 17
+34118 4 134 17
+3411c 18 134 17
+34134 4 134 17
+34138 4 134 17
+3413c 8 134 17
+34144 c 134 17
+34150 8 85 79
+34158 8 134 17
+34160 8 156 132
+34168 10 256 82
+34178 8 135 17
+34180 18 1512 82
+34198 8 135 17
+341a0 4 302 82
+341a4 4 135 17
+341a8 8 302 82
+341b0 18 135 17
+341c8 8 256 82
+341d0 4 136 17
+341d4 8 1512 82
+341dc 4 136 17
+341e0 14 1512 82
+341f4 8 136 17
+341fc 4 302 82
+34200 4 136 17
+34204 8 302 82
+3420c 18 136 17
+34224 8 256 82
+3422c 8 137 17
+34234 18 1552 82
+3424c 8 137 17
+34254 4 302 82
+34258 4 137 17
+3425c 8 302 82
+34264 18 137 17
+3427c 8 137 17
+34284 c 137 17
+34290 8 85 79
+34298 8 137 17
+342a0 10 256 82
+342b0 c 138 17
+342bc 18 140 17
+342d4 4 1139 87
+342d8 4 277 82
+342dc 4 140 17
+342e0 20 140 17
+34300 4 140 17
+34304 4 140 17
+34308 4 140 17
+3430c 1c 140 17
+34328 8 140 17
+34330 c 140 17
+3433c 8 85 79
+34344 8 140 17
+3434c 8 156 132
+34354 8 256 82
+3435c 8 44 17
+34364 28 141 17
+FUNC 3438c 3b8 0 LineReaderTest_MaxLength_Test::TestBody
+3438c 4 143 17
+34390 8 145 17
+34398 c 143 17
+343a4 8 145 17
+343ac c 143 17
+343b8 4 145 17
+343bc 14 66 52
+343d0 8 67 52
+343d8 10 68 52
+343e8 4 277 82
+343ec 4 82 52
+343f0 8 1139 87
+343f8 c 82 52
+34404 4 277 82
+34408 8 1139 87
+34410 4 147 17
+34414 24 147 17
+34438 1c 147 17
+34454 8 147 17
+3445c c 147 17
+34468 8 85 79
+34470 8 147 17
+34478 8 156 132
+34480 c 256 82
+3448c 8 152 17
+34494 4 256 82
+34498 8 49 16
+344a0 4 152 17
+344a4 4 49 16
+344a8 4 152 17
+344ac 4 49 16
+344b0 4 152 17
+344b4 4 1139 87
+344b8 4 152 17
+344bc 4 277 82
+344c0 4 152 17
+344c4 4 1139 87
+344c8 4 152 17
+344cc 20 152 17
+344ec 4 152 17
+344f0 4 152 17
+344f4 18 152 17
+3450c 8 256 82
+34514 c 1481 82
+34520 c 1482 82
+3452c c 884 80
+34538 c 263 121
+34544 c 75 127
+34550 8 886 80
+34558 c 1382 82
+34564 24 1471 82
+34588 10 156 132
+34598 c 153 17
+345a4 c 302 82
+345b0 18 153 17
+345c8 8 153 17
+345d0 c 153 17
+345dc 8 85 79
+345e4 8 153 17
+345ec 4 256 82
+345f0 4 1139 87
+345f4 4 256 82
+345f8 18 154 17
+34610 4 277 82
+34614 4 1139 87
+34618 4 154 17
+3461c 20 154 17
+3463c 4 154 17
+34640 4 154 17
+34644 1c 154 17
+34660 8 154 17
+34668 c 154 17
+34674 8 85 79
+3467c 8 154 17
+34684 c 156 132
+34690 4 256 82
+34694 4 155 17
+34698 4 256 82
+3469c 8 155 17
+346a4 4 1552 82
+346a8 4 155 17
+346ac 1c 1552 82
+346c8 8 155 17
+346d0 c 302 82
+346dc 18 155 17
+346f4 8 155 17
+346fc c 155 17
+34708 8 85 79
+34710 8 155 17
+34718 8 256 82
+34720 8 44 17
+34728 1c 156 17
+FUNC 34744 4 0 testing::internal::TestFactoryImpl<LinuxCoreDumperTest_VerifyDumpWithMultipleThreads_Test>::~TestFactoryImpl
+34744 4 484 85
+FUNC 34748 4 0 testing::internal::TestFactoryImpl<LinuxCoreDumperTest_BuildProcPath_Test>::~TestFactoryImpl
+34748 4 484 85
+FUNC 3474c 4 0 testing::internal::TestFactoryImpl<LinuxCoreDumperTest_BuildProcPath_Test>::~TestFactoryImpl
+3474c 4 484 85
+FUNC 34750 4 0 testing::internal::TestFactoryImpl<LinuxCoreDumperTest_VerifyDumpWithMultipleThreads_Test>::~TestFactoryImpl
+34750 4 484 85
+FUNC 34754 14 0 LinuxCoreDumperTest_VerifyDumpWithMultipleThreads_Test::~LinuxCoreDumperTest_VerifyDumpWithMultipleThreads_Test
+34754 14 65 20
+FUNC 34768 24 0 LinuxCoreDumperTest_VerifyDumpWithMultipleThreads_Test::~LinuxCoreDumperTest_VerifyDumpWithMultipleThreads_Test
+34768 c 65 20
+34774 8 65 20
+3477c 4 65 20
+34780 8 65 20
+34788 4 65 20
+FUNC 3478c 14 0 LinuxCoreDumperTest_BuildProcPath_Test::~LinuxCoreDumperTest_BuildProcPath_Test
+3478c 14 42 20
+FUNC 347a0 24 0 LinuxCoreDumperTest_BuildProcPath_Test::~LinuxCoreDumperTest_BuildProcPath_Test
+347a0 c 42 20
+347ac 8 42 20
+347b4 4 42 20
+347b8 8 42 20
+347c0 4 42 20
+FUNC 347c4 3c 0 testing::internal::TestFactoryImpl<LinuxCoreDumperTest_VerifyDumpWithMultipleThreads_Test>::CreateTest
+347c4 10 486 85
+347d4 8 486 85
+347dc 8 65 20
+347e4 4 486 85
+347e8 c 65 20
+347f4 c 486 85
+FUNC 34800 3c 0 testing::internal::TestFactoryImpl<LinuxCoreDumperTest_BuildProcPath_Test>::CreateTest
+34800 10 486 85
+34810 8 486 85
+34818 8 42 20
+34820 4 486 85
+34824 c 42 20
+34830 c 486 85
+FUNC 3483c e8 0 testing::internal::CmpHelperEQFailure<unsigned int, long unsigned int>
+3483c c 1464 82
+34848 4 884 80
+3484c 10 1464 82
+3485c 8 884 80
+34864 4 1464 82
+34868 4 75 127
+3486c 4 1464 82
+34870 8 1464 82
+34878 4 884 80
+3487c c 254 121
+34888 4 75 127
+3488c 8 254 121
+34894 c 75 127
+348a0 8 886 80
+348a8 c 884 80
+348b4 8 263 121
+348bc 4 75 127
+348c0 8 263 121
+348c8 c 75 127
+348d4 8 886 80
+348dc 1c 1471 82
+348f8 10 156 132
+34908 1c 1472 82
+FUNC 34924 34 0 google_breakpad::LinuxCoreDumper::~LinuxCoreDumper
+34924 14 43 19
+34938 c 43 19
+34944 4 43 19
+34948 4 43 19
+3494c 8 43 19
+34954 4 43 19
+FUNC 34958 4a8 0 LinuxCoreDumperTest_BuildProcPath_Test::TestBody
+34958 20 42 20
+34978 8 43 20
+34980 c 44 20
+3498c 4 45 20
+34990 4 47 20
+34994 4 50 20
+34998 4 51 20
+3499c 4 277 82
+349a0 20 44 20
+349c0 8 45 20
+349c8 14 45 20
+349dc 1c 47 20
+349f8 18 50 20
+34a10 18 51 20
+34a28 4 1139 87
+34a2c 4 51 20
+34a30 4 277 82
+34a34 4 51 20
+34a38 20 51 20
+34a58 4 51 20
+34a5c 4 51 20
+34a60 1c 51 20
+34a7c 8 51 20
+34a84 c 51 20
+34a90 8 85 79
+34a98 8 51 20
+34aa0 8 156 132
+34aa8 8 256 82
+34ab0 2c 52 20
+34adc 4 1144 87
+34ae0 4 298 82
+34ae4 8 298 82
+34aec 18 52 20
+34b04 8 52 20
+34b0c c 52 20
+34b18 8 85 79
+34b20 8 52 20
+34b28 8 256 82
+34b30 1c 54 20
+34b4c 4 1139 87
+34b50 4 277 82
+34b54 4 54 20
+34b58 20 54 20
+34b78 4 54 20
+34b7c 4 54 20
+34b80 1c 54 20
+34b9c 8 54 20
+34ba4 c 54 20
+34bb0 8 85 79
+34bb8 8 54 20
+34bc0 8 156 132
+34bc8 8 256 82
+34bd0 1c 55 20
+34bec 4 1139 87
+34bf0 4 277 82
+34bf4 4 55 20
+34bf8 20 55 20
+34c18 4 55 20
+34c1c 4 55 20
+34c20 1c 55 20
+34c3c 8 55 20
+34c44 c 55 20
+34c50 8 85 79
+34c58 8 55 20
+34c60 8 156 132
+34c68 8 256 82
+34c70 1c 56 20
+34c8c 4 1139 87
+34c90 4 277 82
+34c94 4 56 20
+34c98 20 56 20
+34cb8 4 56 20
+34cbc 4 56 20
+34cc0 1c 56 20
+34cdc 8 56 20
+34ce4 c 56 20
+34cf0 8 85 79
+34cf8 8 56 20
+34d00 8 156 132
+34d08 8 256 82
+34d10 10 59 20
+34d20 10 60 20
+34d30 4 61 20
+34d34 1c 62 20
+34d50 4 1139 87
+34d54 4 277 82
+34d58 4 62 20
+34d5c 20 62 20
+34d7c 4 62 20
+34d80 4 62 20
+34d84 4 62 20
+34d88 1c 62 20
+34da4 8 62 20
+34dac c 62 20
+34db8 8 85 79
+34dc0 8 62 20
+34dc8 8 156 132
+34dd0 8 256 82
+34dd8 8 62 20
+34de0 20 63 20
+FUNC 34e00 880 0 LinuxCoreDumperTest_VerifyDumpWithMultipleThreads_Test::TestBody
+34e00 14 65 20
+34e14 8 66 20
+34e1c 14 65 20
+34e30 4 66 20
+34e34 10 67 20
+34e44 18 69 20
+34e5c 4 70 20
+34e60 4 277 82
+34e64 4 73 20
+34e68 4 75 20
+34e6c 4 77 20
+34e70 4 73 20
+34e74 4 75 20
+34e78 c 77 20
+34e84 4 1139 87
+34e88 8 73 20
+34e90 4 75 20
+34e94 4 77 20
+34e98 4 277 82
+34e9c 4 77 20
+34ea0 4 1139 87
+34ea4 4 77 20
+34ea8 24 77 20
+34ecc 4 77 20
+34ed0 4 77 20
+34ed4 1c 77 20
+34ef0 8 77 20
+34ef8 c 77 20
+34f04 8 85 79
+34f0c 8 77 20
+34f14 8 156 132
+34f1c 10 256 82
+34f2c 4 80 20
+34f30 4 81 20
+34f34 4 256 82
+34f38 c 80 20
+34f44 c 81 20
+34f50 c 85 20
+34f5c 4 85 20
+34f60 1c 87 20
+34f7c c 92 20
+34f88 4 277 82
+34f8c 10 92 20
+34f9c 8 94 20
+34fa4 4 1139 87
+34fa8 4 94 20
+34fac 4 277 82
+34fb0 4 94 20
+34fb4 20 94 20
+34fd4 4 94 20
+34fd8 4 94 20
+34fdc 1c 94 20
+34ff8 8 94 20
+35000 c 94 20
+3500c 8 85 79
+35014 8 94 20
+3501c 8 156 132
+35024 8 256 82
+3502c 8 96 20
+35034 4 1139 87
+35038 4 96 20
+3503c 4 277 82
+35040 4 96 20
+35044 20 96 20
+35064 4 96 20
+35068 4 96 20
+3506c 1c 96 20
+35088 8 96 20
+35090 c 96 20
+3509c 8 85 79
+350a4 8 96 20
+350ac 8 156 132
+350b4 8 256 82
+350bc 8 99 20
+350c4 4 1139 87
+350c8 4 99 20
+350cc 4 277 82
+350d0 4 99 20
+350d4 20 99 20
+350f4 4 99 20
+350f8 4 99 20
+350fc 1c 99 20
+35118 8 99 20
+35120 c 99 20
+3512c 8 85 79
+35134 8 99 20
+3513c 8 156 132
+35144 8 256 82
+3514c 8 100 20
+35154 4 1139 87
+35158 4 100 20
+3515c 4 277 82
+35160 4 100 20
+35164 20 100 20
+35184 4 100 20
+35188 4 100 20
+3518c 1c 100 20
+351a8 8 100 20
+351b0 c 100 20
+351bc 8 85 79
+351c4 8 100 20
+351cc 8 156 132
+351d4 8 256 82
+351dc 8 104 20
+351e4 4 1482 82
+351e8 4 104 20
+351ec 4 1481 82
+351f0 8 1482 82
+351f8 1c 1487 82
+35214 8 104 20
+3521c 4 1144 87
+35220 c 298 82
+3522c 8 298 82
+35234 18 104 20
+3524c 8 104 20
+35254 c 104 20
+35260 8 85 79
+35268 8 104 20
+35270 8 256 82
+35278 4 105 20
+3527c 4 1512 82
+35280 4 105 20
+35284 1c 1512 82
+352a0 8 105 20
+352a8 4 1144 87
+352ac c 298 82
+352b8 8 298 82
+352c0 18 105 20
+352d8 8 105 20
+352e0 c 105 20
+352ec 8 85 79
+352f4 8 105 20
+352fc 8 256 82
+35304 14 106 20
+35318 4 1512 82
+3531c 4 106 20
+35320 1c 1512 82
+3533c 8 106 20
+35344 4 1144 87
+35348 c 298 82
+35354 8 298 82
+3535c 18 106 20
+35374 8 106 20
+3537c c 107 20
+35388 8 85 79
+35390 8 106 20
+35398 8 256 82
+353a0 4 192 139
+353a4 4 1482 82
+353a8 c 192 139
+353b4 4 1481 82
+353b8 4 109 20
+353bc 8 1481 82
+353c4 8 1482 82
+353cc 1c 1487 82
+353e8 8 109 20
+353f0 4 1144 87
+353f4 c 298 82
+35400 8 298 82
+35408 18 109 20
+35420 8 109 20
+35428 c 109 20
+35434 8 85 79
+3543c 8 109 20
+35444 4 256 82
+35448 c 112 20
+35454 4 256 82
+35458 1c 112 20
+35474 10 112 20
+35484 4 1139 87
+35488 4 112 20
+3548c 4 277 82
+35490 4 112 20
+35494 14 112 20
+354a8 4 112 20
+354ac 4 112 20
+354b0 4 112 20
+354b4 1c 112 20
+354d0 8 112 20
+354d8 c 112 20
+354e4 8 85 79
+354ec 8 112 20
+354f4 8 156 132
+354fc 8 256 82
+35504 14 115 20
+35518 4 1139 87
+3551c 4 115 20
+35520 4 277 82
+35524 4 115 20
+35528 18 115 20
+35540 4 115 20
+35544 4 115 20
+35548 4 115 20
+3554c 1c 115 20
+35568 8 115 20
+35570 c 115 20
+3557c 8 85 79
+35584 8 115 20
+3558c 8 156 132
+35594 8 256 82
+3559c 8 116 20
+355a4 20 1512 82
+355c4 8 116 20
+355cc 4 1144 87
+355d0 c 298 82
+355dc 8 298 82
+355e4 1c 116 20
+35600 8 116 20
+35608 c 116 20
+35614 8 85 79
+3561c 8 116 20
+35624 c 256 82
+35630 8 110 20
+35638 8 92 20
+35640 10 156 132
+35650 8 70 20
+35658 28 118 20
+FUNC 35680 24 0 google_breakpad::LinuxCoreDumper::~LinuxCoreDumper
+35680 c 43 19
+3568c 8 43 19
+35694 4 43 19
+35698 8 43 19
+356a0 4 43 19
+FUNC 356a4 4 0 testing::internal::TestFactoryImpl<LinuxPtraceDumperTest_VerifyStackReadWithMultipleThreads_Test>::~TestFactoryImpl
+356a4 4 484 85
+FUNC 356a8 4 0 testing::internal::TestFactoryImpl<LinuxPtraceDumperChildTest_FileIDsMatch_Test>::~TestFactoryImpl
+356a8 4 484 85
+FUNC 356ac 4 0 testing::internal::TestFactoryImpl<LinuxPtraceDumperChildTest_LinuxGateMappingID_Test>::~TestFactoryImpl
+356ac 4 484 85
+FUNC 356b0 4 0 testing::internal::TestFactoryImpl<LinuxPtraceDumperChildTest_MappingsIncludeLinuxGate_Test>::~TestFactoryImpl
+356b0 4 484 85
+FUNC 356b4 4 0 testing::internal::TestFactoryImpl<LinuxPtraceDumperChildTest_BuildProcPath_Test>::~TestFactoryImpl
+356b4 4 484 85
+FUNC 356b8 4 0 testing::internal::TestFactoryImpl<LinuxPtraceDumperMappingsTest_MergedMappings_Test>::~TestFactoryImpl
+356b8 4 484 85
+FUNC 356bc 4 0 testing::internal::TestFactoryImpl<LinuxPtraceDumperChildTest_ThreadList_Test>::~TestFactoryImpl
+356bc 4 484 85
+FUNC 356c0 4 0 testing::internal::TestFactoryImpl<LinuxPtraceDumperChildTest_FindMappings_Test>::~TestFactoryImpl
+356c0 4 484 85
+FUNC 356c4 4 0 testing::internal::TestFactoryImpl<LinuxPtraceDumperChildTest_Setup_Test>::~TestFactoryImpl
+356c4 4 484 85
+FUNC 356c8 4 0 testing::internal::TestFactoryImpl<LinuxPtraceDumperChildTest_Setup_Test>::~TestFactoryImpl
+356c8 4 484 85
+FUNC 356cc 4 0 testing::internal::TestFactoryImpl<LinuxPtraceDumperChildTest_FindMappings_Test>::~TestFactoryImpl
+356cc 4 484 85
+FUNC 356d0 4 0 testing::internal::TestFactoryImpl<LinuxPtraceDumperChildTest_ThreadList_Test>::~TestFactoryImpl
+356d0 4 484 85
+FUNC 356d4 4 0 testing::internal::TestFactoryImpl<LinuxPtraceDumperMappingsTest_MergedMappings_Test>::~TestFactoryImpl
+356d4 4 484 85
+FUNC 356d8 4 0 testing::internal::TestFactoryImpl<LinuxPtraceDumperChildTest_BuildProcPath_Test>::~TestFactoryImpl
+356d8 4 484 85
+FUNC 356dc 4 0 testing::internal::TestFactoryImpl<LinuxPtraceDumperChildTest_MappingsIncludeLinuxGate_Test>::~TestFactoryImpl
+356dc 4 484 85
+FUNC 356e0 4 0 testing::internal::TestFactoryImpl<LinuxPtraceDumperChildTest_LinuxGateMappingID_Test>::~TestFactoryImpl
+356e0 4 484 85
+FUNC 356e4 4 0 testing::internal::TestFactoryImpl<LinuxPtraceDumperChildTest_FileIDsMatch_Test>::~TestFactoryImpl
+356e4 4 484 85
+FUNC 356e8 4 0 testing::internal::TestFactoryImpl<LinuxPtraceDumperTest_VerifyStackReadWithMultipleThreads_Test>::~TestFactoryImpl
+356e8 4 484 85
+FUNC 356ec 24 0 LinuxPtraceDumperChildTest::SetUp
+356ec c 74 25
+356f8 4 74 25
+356fc 8 75 25
+35704 c 79 25
+FUNC 35710 14 0 LinuxPtraceDumperTest_VerifyStackReadWithMultipleThreads_Test::~LinuxPtraceDumperTest_VerifyStackReadWithMultipleThreads_Test
+35710 14 364 25
+FUNC 35724 24 0 LinuxPtraceDumperTest_VerifyStackReadWithMultipleThreads_Test::~LinuxPtraceDumperTest_VerifyStackReadWithMultipleThreads_Test
+35724 c 364 25
+35730 8 364 25
+35738 4 364 25
+3573c 8 364 25
+35744 4 364 25
+FUNC 35748 14 0 LinuxPtraceDumperChildTest_ThreadList_Test::~LinuxPtraceDumperChildTest_ThreadList_Test
+35748 14 72 25
+FUNC 3575c 24 0 LinuxPtraceDumperChildTest_ThreadList_Test::~LinuxPtraceDumperChildTest_ThreadList_Test
+3575c c 134 25
+35768 8 134 25
+35770 4 134 25
+35774 8 134 25
+3577c 4 134 25
+FUNC 35780 14 0 LinuxPtraceDumperChildTest_FileIDsMatch_Test::~LinuxPtraceDumperChildTest_FileIDsMatch_Test
+35780 14 72 25
+FUNC 35794 24 0 LinuxPtraceDumperChildTest_FileIDsMatch_Test::~LinuxPtraceDumperChildTest_FileIDsMatch_Test
+35794 c 325 25
+357a0 8 325 25
+357a8 4 325 25
+357ac 8 325 25
+357b4 4 325 25
+FUNC 357b8 14 0 LinuxPtraceDumperChildTest_LinuxGateMappingID_Test::~LinuxPtraceDumperChildTest_LinuxGateMappingID_Test
+357b8 14 72 25
+FUNC 357cc 24 0 LinuxPtraceDumperChildTest_LinuxGateMappingID_Test::~LinuxPtraceDumperChildTest_LinuxGateMappingID_Test
+357cc c 295 25
+357d8 8 295 25
+357e0 4 295 25
+357e4 8 295 25
+357ec 4 295 25
+FUNC 357f0 14 0 LinuxPtraceDumperChildTest_FindMappings_Test::~LinuxPtraceDumperChildTest_FindMappings_Test
+357f0 14 72 25
+FUNC 35804 24 0 LinuxPtraceDumperChildTest_FindMappings_Test::~LinuxPtraceDumperChildTest_FindMappings_Test
+35804 c 125 25
+35810 8 125 25
+35818 4 125 25
+3581c 8 125 25
+35824 4 125 25
+FUNC 35828 14 0 LinuxPtraceDumperChildTest_Setup_Test::~LinuxPtraceDumperChildTest_Setup_Test
+35828 14 72 25
+FUNC 3583c 24 0 LinuxPtraceDumperChildTest_Setup_Test::~LinuxPtraceDumperChildTest_Setup_Test
+3583c c 121 25
+35848 8 121 25
+35850 4 121 25
+35854 8 121 25
+3585c 4 121 25
+FUNC 35860 14 0 LinuxPtraceDumperChildTest_MappingsIncludeLinuxGate_Test::~LinuxPtraceDumperChildTest_MappingsIncludeLinuxGate_Test
+35860 14 72 25
+FUNC 35874 24 0 LinuxPtraceDumperChildTest_MappingsIncludeLinuxGate_Test::~LinuxPtraceDumperChildTest_MappingsIncludeLinuxGate_Test
+35874 c 271 25
+35880 8 271 25
+35888 4 271 25
+3588c 8 271 25
+35894 4 271 25
+FUNC 35898 14 0 LinuxPtraceDumperChildTest_BuildProcPath_Test::~LinuxPtraceDumperChildTest_BuildProcPath_Test
+35898 14 72 25
+FUNC 358ac 24 0 LinuxPtraceDumperChildTest_BuildProcPath_Test::~LinuxPtraceDumperChildTest_BuildProcPath_Test
+358ac c 246 25
+358b8 8 246 25
+358c0 4 246 25
+358c4 8 246 25
+358cc 4 246 25
+FUNC 358d0 3c 0 testing::internal::TestFactoryImpl<LinuxPtraceDumperChildTest_MappingsIncludeLinuxGate_Test>::CreateTest
+358d0 10 486 85
+358e0 8 486 85
+358e8 4 72 25
+358ec 4 271 25
+358f0 4 486 85
+358f4 c 271 25
+35900 c 486 85
+FUNC 3590c 3c 0 testing::internal::TestFactoryImpl<LinuxPtraceDumperChildTest_BuildProcPath_Test>::CreateTest
+3590c 10 486 85
+3591c 8 486 85
+35924 4 72 25
+35928 4 246 25
+3592c 4 486 85
+35930 c 246 25
+3593c c 486 85
+FUNC 35948 3c 0 testing::internal::TestFactoryImpl<LinuxPtraceDumperChildTest_FindMappings_Test>::CreateTest
+35948 10 486 85
+35958 8 486 85
+35960 4 72 25
+35964 4 125 25
+35968 4 486 85
+3596c c 125 25
+35978 c 486 85
+FUNC 35984 3c 0 testing::internal::TestFactoryImpl<LinuxPtraceDumperChildTest_ThreadList_Test>::CreateTest
+35984 10 486 85
+35994 8 486 85
+3599c 4 72 25
+359a0 4 134 25
+359a4 4 486 85
+359a8 c 134 25
+359b4 c 486 85
+FUNC 359c0 3c 0 testing::internal::TestFactoryImpl<LinuxPtraceDumperChildTest_FileIDsMatch_Test>::CreateTest
+359c0 10 486 85
+359d0 8 486 85
+359d8 4 72 25
+359dc 4 325 25
+359e0 4 486 85
+359e4 c 325 25
+359f0 c 486 85
+FUNC 359fc 3c 0 testing::internal::TestFactoryImpl<LinuxPtraceDumperChildTest_LinuxGateMappingID_Test>::CreateTest
+359fc 10 486 85
+35a0c 8 486 85
+35a14 4 72 25
+35a18 4 295 25
+35a1c 4 486 85
+35a20 c 295 25
+35a2c c 486 85
+FUNC 35a38 3c 0 testing::internal::TestFactoryImpl<LinuxPtraceDumperChildTest_Setup_Test>::CreateTest
+35a38 10 486 85
+35a48 8 486 85
+35a50 4 72 25
+35a54 4 121 25
+35a58 4 486 85
+35a5c c 121 25
+35a68 c 486 85
+FUNC 35a74 3c 0 testing::internal::TestFactoryImpl<LinuxPtraceDumperTest_VerifyStackReadWithMultipleThreads_Test>::CreateTest
+35a74 10 486 85
+35a84 8 486 85
+35a8c 8 364 25
+35a94 4 486 85
+35a98 c 364 25
+35aa4 c 486 85
+FUNC 35ab0 190 0 LinuxPtraceDumperChildTest::TestBody
+35ab0 10 85 25
+35ac0 4 85 25
+35ac4 c 86 25
+35ad0 c 88 25
+35adc 8 89 25
+35ae4 4 90 25
+35ae8 4 90 25
+35aec 8 90 25
+35af4 c 90 25
+35b00 8 90 25
+35b08 4 93 25
+35b0c 4 1139 87
+35b10 10 277 82
+35b20 4 93 25
+35b24 24 93 25
+35b48 4 93 25
+35b4c 4 93 25
+35b50 1c 93 25
+35b6c 8 93 25
+35b74 c 93 25
+35b80 8 85 79
+35b88 8 93 25
+35b90 8 156 132
+35b98 14 256 82
+35bac 10 95 25
+35bbc c 96 25
+35bc8 18 97 25
+35be0 8 98 25
+35be8 18 99 25
+35c00 4 99 25
+35c04 8 99 25
+35c0c 8 99 25
+35c14 c 99 25
+35c20 8 85 79
+35c28 8 99 25
+35c30 10 101 25
+FUNC 35c40 68 0 LinuxPtraceDumperMappingsTest_MergedMappings_Test::~LinuxPtraceDumperMappingsTest_MergedMappings_Test
+35c40 c 226 25
+35c4c 4 226 25
+35c50 14 176 25
+35c64 8 156 25
+35c6c 8 157 25
+35c74 8 158 25
+35c7c 4 159 25
+35c80 8 156 132
+35c88 14 72 25
+35c9c 8 226 25
+35ca4 4 72 25
+FUNC 35ca8 24 0 LinuxPtraceDumperMappingsTest_MergedMappings_Test::~LinuxPtraceDumperMappingsTest_MergedMappings_Test
+35ca8 c 226 25
+35cb4 8 226 25
+35cbc 4 226 25
+35cc0 8 226 25
+35cc8 4 226 25
+FUNC 35ccc 144 0 std::priv::_Impl_vector<void*, google_breakpad::PageStdAllocator<void*> >::_Impl_vector
+35ccc 10 246 139
+35cdc 8 246 139
+35ce4 8 192 139
+35cec 8 163 54
+35cf4 4 75 54
+35cf8 8 70 139
+35d00 4 481 101
+35d04 4 75 54
+35d08 8 76 54
+35d10 c 78 54
+35d1c 10 78 54
+35d2c 4 79 54
+35d30 4 80 54
+35d34 8 81 54
+35d3c 8 80 54
+35d44 4 82 54
+35d48 8 83 54
+35d50 c 90 54
+35d5c c 3940 97
+35d68 4 90 54
+35d6c 8 3940 97
+35d74 4 119 54
+35d78 14 3940 97
+35d8c 4 3940 97
+35d90 c 3940 97
+35d9c 8 124 54
+35da4 8 134 54
+35dac 4 135 54
+35db0 4 136 54
+35db4 14 96 54
+35dc8 4 97 54
+35dcc 4 98 54
+35dd0 8 98 54
+35dd8 4 98 54
+35ddc 4 100 54
+35de0 4 71 139
+35de4 4 73 139
+35de8 4 72 139
+35dec 4 73 139
+35df0 c 120 137
+35dfc 4 249 139
+35e00 10 250 139
+FUNC 35e10 78 0 testing::internal::TestFactoryImpl<LinuxPtraceDumperMappingsTest_MergedMappings_Test>::CreateTest
+35e10 10 486 85
+35e20 8 486 85
+35e28 4 72 25
+35e2c 14 176 25
+35e40 4 124 132
+35e44 4 120 132
+35e48 4 481 101
+35e4c 8 124 132
+35e54 4 154 25
+35e58 4 101 103
+35e5c 4 226 25
+35e60 c 154 25
+35e6c c 226 25
+35e78 10 486 85
+FUNC 35e88 50 0 testing::internal::DefaultPrintTo<void>
+35e88 14 307 80
+35e9c 4 310 80
+35ea0 4 334 80
+35ea4 4 333 122
+35ea8 4 334 80
+35eac 8 333 122
+35eb4 10 318 80
+35ec4 8 291 121
+35ecc 8 334 80
+35ed4 4 291 121
+FUNC 35ed8 3a8 0 LinuxPtraceDumperMappingsTest::SetUp
+35ed8 c 185 25
+35ee4 4 186 25
+35ee8 4 185 25
+35eec 4 186 25
+35ef0 8 185 25
+35ef8 8 186 25
+35f00 14 348 131
+35f14 4 400 131
+35f18 4 243 130
+35f1c 4 400 131
+35f20 8 244 130
+35f28 4 168 140
+35f2c c 168 140
+35f38 c 246 130
+35f44 8 803 131
+35f4c 4 168 140
+35f50 4 806 131
+35f54 4 168 140
+35f58 10 806 131
+35f68 4 168 140
+35f6c 8 168 140
+35f74 4 400 131
+35f78 4 250 130
+35f7c 8 400 131
+35f84 c 250 130
+35f90 c 156 132
+35f9c 10 187 25
+35fac 20 188 25
+35fcc 8 188 25
+35fd4 14 333 122
+35fe8 c 188 25
+35ff4 8 85 79
+35ffc 8 188 25
+36004 4 188 25
+36008 14 194 25
+3601c c 196 25
+36028 4 196 25
+3602c 30 197 25
+3605c 4 302 82
+36060 4 197 25
+36064 8 302 82
+3606c 18 197 25
+36084 8 197 25
+3608c 14 333 122
+360a0 10 131 79
+360b0 14 333 122
+360c4 4 198 25
+360c8 4 198 25
+360cc c 198 25
+360d8 4 333 122
+360dc 4 150 79
+360e0 c 333 122
+360ec c 198 25
+360f8 8 85 79
+36100 8 197 25
+36108 8 256 82
+36110 c 195 25
+3611c 8 256 82
+36124 1c 205 25
+36140 4 277 82
+36144 4 205 25
+36148 4 1139 87
+3614c 8 277 82
+36154 4 206 25
+36158 20 206 25
+36178 4 206 25
+3617c 4 206 25
+36180 18 206 25
+36198 8 256 82
+361a0 4 163 25
+361a4 8 220 25
+361ac 4 209 25
+361b0 4 220 25
+361b4 4 162 25
+361b8 4 220 25
+361bc 4 164 25
+361c0 8 220 25
+361c8 8 277 82
+361d0 4 1139 87
+361d4 4 277 82
+361d8 4 221 25
+361dc 20 221 25
+361fc 4 221 25
+36200 4 221 25
+36204 18 221 25
+3621c 4 221 25
+36220 4 221 25
+36224 8 221 25
+3622c c 221 25
+36238 8 85 79
+36240 8 221 25
+36248 8 156 132
+36250 14 256 82
+36264 8 223 25
+3626c 14 224 25
+FUNC 36280 14 0 google_breakpad::LinuxPtraceDumper::~LinuxPtraceDumper
+36280 14 42 24
+FUNC 36294 34 0 LinuxPtraceDumperChildTest_Setup_Test::RealTestBody
+36294 c 121 25
+362a0 4 122 25
+362a4 8 122 25
+362ac 8 122 25
+362b4 8 122 25
+362bc c 123 25
+FUNC 362c8 230 0 LinuxPtraceDumperChildTest_FindMappings_Test::RealTestBody
+362c8 14 125 25
+362dc 4 126 25
+362e0 8 126 25
+362e8 4 126 25
+362ec 8 277 82
+362f4 4 126 25
+362f8 8 127 25
+36300 4 1139 87
+36304 4 127 25
+36308 4 277 82
+3630c 4 127 25
+36310 24 127 25
+36334 4 127 25
+36338 4 127 25
+3633c 18 127 25
+36354 8 256 82
+3635c 10 129 25
+3636c 8 277 82
+36374 4 1139 87
+36378 4 277 82
+3637c 4 129 25
+36380 24 129 25
+363a4 4 129 25
+363a8 4 129 25
+363ac 18 129 25
+363c4 8 256 82
+363cc 10 130 25
+363dc 8 277 82
+363e4 4 1139 87
+363e8 4 277 82
+363ec 4 130 25
+363f0 24 130 25
+36414 4 130 25
+36418 4 130 25
+3641c 18 130 25
+36434 8 256 82
+3643c 14 131 25
+36450 4 1139 87
+36454 4 277 82
+36458 4 131 25
+3645c 24 131 25
+36480 4 131 25
+36484 4 131 25
+36488 18 131 25
+364a0 4 131 25
+364a4 4 131 25
+364a8 8 131 25
+364b0 c 131 25
+364bc 8 85 79
+364c4 8 131 25
+364cc 8 156 132
+364d4 10 256 82
+364e4 14 132 25
+FUNC 364f8 4fc 0 LinuxPtraceDumperChildTest_BuildProcPath_Test::RealTestBody
+364f8 20 246 25
+36518 4 248 25
+3651c 8 247 25
+36524 8 248 25
+3652c 4 250 25
+36530 4 253 25
+36534 4 248 25
+36538 4 277 82
+3653c c 250 25
+36548 c 254 25
+36554 10 250 25
+36564 18 253 25
+3657c 14 254 25
+36590 4 1139 87
+36594 4 254 25
+36598 4 277 82
+3659c 4 254 25
+365a0 20 254 25
+365c0 4 254 25
+365c4 4 254 25
+365c8 1c 254 25
+365e4 8 254 25
+365ec c 254 25
+365f8 8 85 79
+36600 8 254 25
+36608 8 156 132
+36610 8 256 82
+36618 28 255 25
+36640 c 302 82
+3664c 18 255 25
+36664 8 255 25
+3666c c 255 25
+36678 8 85 79
+36680 8 255 25
+36688 8 256 82
+36690 1c 257 25
+366ac 4 1139 87
+366b0 4 277 82
+366b4 4 257 25
+366b8 20 257 25
+366d8 4 257 25
+366dc 4 257 25
+366e0 1c 257 25
+366fc 8 257 25
+36704 c 257 25
+36710 8 85 79
+36718 8 257 25
+36720 8 156 132
+36728 8 256 82
+36730 1c 258 25
+3674c 4 1139 87
+36750 4 277 82
+36754 4 258 25
+36758 20 258 25
+36778 4 258 25
+3677c 4 258 25
+36780 1c 258 25
+3679c 8 258 25
+367a4 c 258 25
+367b0 8 85 79
+367b8 8 258 25
+367c0 8 156 132
+367c8 8 256 82
+367d0 20 259 25
+367f0 4 1139 87
+367f4 4 277 82
+367f8 4 259 25
+367fc 20 259 25
+3681c 4 259 25
+36820 4 259 25
+36824 1c 259 25
+36840 8 259 25
+36848 c 259 25
+36854 8 85 79
+3685c 8 259 25
+36864 8 156 132
+3686c 8 256 82
+36874 1c 260 25
+36890 4 1139 87
+36894 4 277 82
+36898 4 260 25
+3689c 20 260 25
+368bc 4 260 25
+368c0 4 260 25
+368c4 1c 260 25
+368e0 8 260 25
+368e8 c 260 25
+368f4 8 85 79
+368fc 8 260 25
+36904 8 156 132
+3690c 8 256 82
+36914 10 264 25
+36924 4 265 25
+36928 1c 266 25
+36944 4 1139 87
+36948 4 277 82
+3694c 4 266 25
+36950 20 266 25
+36970 4 266 25
+36974 4 266 25
+36978 4 266 25
+3697c 1c 266 25
+36998 8 266 25
+369a0 c 266 25
+369ac 8 85 79
+369b4 8 266 25
+369bc 8 156 132
+369c4 8 256 82
+369cc 8 266 25
+369d4 20 267 25
+FUNC 369f4 4b8 0 LinuxPtraceDumperChildTest_FileIDsMatch_Test::RealTestBody
+369f4 4 325 25
+369f8 4 60 49
+369fc 4 325 25
+36a00 8 60 49
+36a08 c 325 25
+36a14 8 60 49
+36a1c 8 325 25
+36a24 4 60 49
+36a28 4 1139 87
+36a2c 4 60 49
+36a30 14 277 82
+36a44 4 330 25
+36a48 20 330 25
+36a68 4 330 25
+36a6c 4 330 25
+36a70 1c 330 25
+36a8c 8 330 25
+36a94 c 330 25
+36aa0 8 85 79
+36aa8 8 330 25
+36ab0 8 156 132
+36ab8 10 256 82
+36ac8 8 277 82
+36ad0 4 256 82
+36ad4 8 332 25
+36adc 8 332 25
+36ae4 8 333 25
+36aec 4 277 82
+36af0 4 333 25
+36af4 4 1139 87
+36af8 4 333 25
+36afc 20 333 25
+36b1c 4 333 25
+36b20 4 333 25
+36b24 1c 333 25
+36b40 8 333 25
+36b48 c 333 25
+36b54 8 85 79
+36b5c 8 333 25
+36b64 8 156 132
+36b6c 10 256 82
+36b7c 8 124 143
+36b84 4 337 25
+36b88 4 124 143
+36b8c 10 192 139
+36b9c c 337 25
+36ba8 14 339 25
+36bbc 8 337 25
+36bc4 8 335 25
+36bcc 4 340 25
+36bd0 c 277 82
+36bdc 4 1139 87
+36be0 4 344 25
+36be4 24 344 25
+36c08 4 344 25
+36c0c 4 344 25
+36c10 4 344 25
+36c14 1c 344 25
+36c30 8 344 25
+36c38 c 344 25
+36c44 8 85 79
+36c4c 8 344 25
+36c54 8 156 132
+36c5c 18 256 82
+36c74 c 348 25
+36c80 4 348 25
+36c84 c 348 25
+36c90 4 277 82
+36c94 4 348 25
+36c98 4 1139 87
+36c9c 4 348 25
+36ca0 24 348 25
+36cc4 4 348 25
+36cc8 4 348 25
+36ccc 4 348 25
+36cd0 1c 348 25
+36cec 8 348 25
+36cf4 c 349 25
+36d00 8 85 79
+36d08 8 348 25
+36d10 8 156 132
+36d18 c 256 82
+36d24 c 350 25
+36d30 10 351 25
+36d40 8 277 82
+36d48 4 1139 87
+36d4c 4 351 25
+36d50 24 351 25
+36d74 4 351 25
+36d78 4 351 25
+36d7c 4 351 25
+36d80 1c 351 25
+36d9c 8 351 25
+36da4 c 351 25
+36db0 8 85 79
+36db8 8 351 25
+36dc0 8 156 132
+36dc8 4 256 82
+36dcc 4 358 25
+36dd0 8 256 82
+36dd8 10 355 25
+36de8 18 357 25
+36e00 28 358 25
+36e28 4 302 82
+36e2c 4 358 25
+36e30 4 358 25
+36e34 8 302 82
+36e3c 18 358 25
+36e54 8 358 25
+36e5c c 358 25
+36e68 8 85 79
+36e70 8 358 25
+36e78 8 256 82
+36e80 10 156 132
+36e90 1c 359 25
+FUNC 36eac 408 0 LinuxPtraceDumperChildTest_ThreadList_Test::RealTestBody
+36eac 14 134 25
+36ec0 4 135 25
+36ec4 8 134 25
+36ecc 8 135 25
+36ed4 4 135 25
+36ed8 c 277 82
+36ee4 4 135 25
+36ee8 8 136 25
+36ef0 4 277 82
+36ef4 4 136 25
+36ef8 4 1139 87
+36efc 4 136 25
+36f00 24 136 25
+36f24 4 136 25
+36f28 4 136 25
+36f2c 1c 136 25
+36f48 8 136 25
+36f50 c 136 25
+36f5c 8 85 79
+36f64 8 136 25
+36f6c c 156 132
+36f78 4 256 82
+36f7c 8 138 25
+36f84 4 256 82
+36f88 10 192 139
+36f98 c 138 25
+36fa4 4 1621 82
+36fa8 10 1621 82
+36fb8 38 1583 82
+36ff0 10 1583 82
+37000 8 1583 82
+37008 c 1583 82
+37014 8 1583 82
+3701c c 1583 82
+37028 4 1583 82
+3702c 4 1382 82
+37030 4 1583 82
+37034 10 1584 82
+37044 c 1382 82
+37050 10 1584 82
+37060 8 306 82
+37068 4 131 79
+3706c 10 333 122
+3707c c 306 82
+37088 8 85 79
+37090 c 1382 82
+3709c 10 1585 82
+370ac 8 1585 82
+370b4 10 156 132
+370c4 8 256 82
+370cc c 138 25
+370d8 4 302 82
+370dc 4 138 25
+370e0 8 302 82
+370e8 18 138 25
+37100 8 138 25
+37108 c 138 25
+37114 8 85 79
+3711c 8 138 25
+37124 c 256 82
+37130 4 140 25
+37134 8 139 25
+3713c 4 256 82
+37140 c 192 139
+3714c 8 140 25
+37154 4 141 25
+37158 4 141 25
+3715c 8 141 25
+37164 4 142 25
+37168 4 1139 87
+3716c 4 277 82
+37170 4 142 25
+37174 24 142 25
+37198 4 142 25
+3719c 4 142 25
+371a0 1c 142 25
+371bc 8 142 25
+371c4 c 142 25
+371d0 8 85 79
+371d8 8 142 25
+371e0 8 156 132
+371e8 c 256 82
+371f4 4 143 25
+371f8 4 256 82
+371fc 8 140 25
+37204 8 277 82
+3720c 4 1139 87
+37210 4 146 25
+37214 24 146 25
+37238 4 146 25
+3723c 4 146 25
+37240 1c 146 25
+3725c 8 146 25
+37264 c 146 25
+37270 8 85 79
+37278 8 146 25
+37280 8 156 132
+37288 10 256 82
+37298 1c 147 25
+FUNC 372b4 40c 0 LinuxPtraceDumperChildTest_LinuxGateMappingID_Test::RealTestBody
+372b4 18 295 25
+372cc 4 296 25
+372d0 8 296 25
+372d8 4 296 25
+372dc 8 277 82
+372e4 4 296 25
+372e8 8 297 25
+372f0 4 1139 87
+372f4 4 297 25
+372f8 4 277 82
+372fc 4 297 25
+37300 24 297 25
+37324 4 297 25
+37328 4 297 25
+3732c 4 297 25
+37330 1c 297 25
+3734c 8 297 25
+37354 c 297 25
+37360 8 85 79
+37368 8 297 25
+37370 8 156 132
+37378 c 256 82
+37384 4 302 25
+37388 4 256 82
+3738c 8 124 143
+37394 4 303 25
+37398 4 124 143
+3739c 8 192 139
+373a4 4 303 25
+373a8 8 192 139
+373b0 c 302 25
+373bc 10 303 25
+373cc 4 303 25
+373d0 8 302 25
+373d8 4 299 25
+373dc 8 301 25
+373e4 4 304 25
+373e8 18 277 82
+37400 4 1139 87
+37404 4 309 25
+37408 24 309 25
+3742c 18 309 25
+37444 8 256 82
+3744c 8 312 25
+37454 4 277 82
+37458 4 312 25
+3745c 4 1139 87
+37460 4 312 25
+37464 24 312 25
+37488 1c 312 25
+374a4 8 312 25
+374ac c 312 25
+374b8 8 85 79
+374c0 8 312 25
+374c8 8 156 132
+374d0 10 256 82
+374e0 20 314 25
+37500 4 1139 87
+37504 4 314 25
+37508 4 277 82
+3750c 4 314 25
+37510 24 314 25
+37534 1c 314 25
+37550 8 314 25
+37558 c 314 25
+37564 8 85 79
+3756c 8 314 25
+37574 8 256 82
+3757c c 320 25
+37588 4 319 25
+3758c c 320 25
+37598 20 320 25
+375b8 8 320 25
+375c0 c 302 82
+375cc 18 320 25
+375e4 8 320 25
+375ec c 320 25
+375f8 8 85 79
+37600 8 320 25
+37608 8 256 82
+37610 8 321 25
+37618 4 277 82
+3761c 4 321 25
+37620 4 1139 87
+37624 4 321 25
+37628 20 321 25
+37648 4 321 25
+3764c 4 321 25
+37650 1c 321 25
+3766c 8 321 25
+37674 c 321 25
+37680 8 85 79
+37688 8 321 25
+37690 8 156 132
+37698 10 256 82
+376a8 18 322 25
+FUNC 376c0 3e0 0 LinuxPtraceDumperChildTest_MappingsIncludeLinuxGate_Test::RealTestBody
+376c0 18 271 25
+376d8 4 272 25
+376dc 4 277 82
+376e0 4 271 25
+376e4 8 272 25
+376ec 4 272 25
+376f0 8 1139 87
+376f8 4 272 25
+376fc 8 273 25
+37704 4 277 82
+37708 4 273 25
+3770c 4 1139 87
+37710 4 273 25
+37714 28 273 25
+3773c 18 273 25
+37754 8 256 82
+3775c 8 276 25
+37764 4 1139 87
+37768 c 277 82
+37774 4 277 25
+37778 28 277 25
+377a0 18 277 25
+377b8 4 277 25
+377bc 4 277 25
+377c0 8 277 25
+377c8 c 277 25
+377d4 8 85 79
+377dc 8 277 25
+377e4 8 156 132
+377ec c 256 82
+377f8 8 284 25
+37800 4 256 82
+37804 c 124 143
+37810 8 192 139
+37818 4 282 25
+3781c 8 192 139
+37824 c 282 25
+37830 4 283 25
+37834 10 284 25
+37844 8 282 25
+3784c 8 278 25
+37854 4 285 25
+37858 8 277 82
+37860 8 1139 87
+37868 4 289 25
+3786c 20 289 25
+3788c 4 289 25
+37890 4 289 25
+37894 1c 289 25
+378b0 8 289 25
+378b8 c 289 25
+378c4 8 85 79
+378cc 8 289 25
+378d4 8 156 132
+378dc 8 256 82
+378e4 4 290 25
+378e8 8 1481 82
+378f0 c 1482 82
+378fc 8 884 80
+37904 4 380 80
+37908 4 75 127
+3790c 4 884 80
+37910 c 380 80
+3791c c 75 127
+37928 8 886 80
+37930 c 884 80
+3793c c 380 80
+37948 c 75 127
+37954 8 886 80
+3795c 24 1471 82
+37980 10 156 132
+37990 8 290 25
+37998 c 302 82
+379a4 18 290 25
+379bc 8 290 25
+379c4 c 290 25
+379d0 8 85 79
+379d8 8 290 25
+379e0 8 256 82
+379e8 1c 291 25
+37a04 20 1552 82
+37a24 8 291 25
+37a2c c 302 82
+37a38 18 291 25
+37a50 8 291 25
+37a58 c 291 25
+37a64 8 85 79
+37a6c 8 291 25
+37a74 10 256 82
+37a84 1c 292 25
+FUNC 37aa0 3d8 0 LinuxPtraceDumperMappingsTest_MergedMappings_Test::RealTestBody
+37aa0 14 226 25
+37ab4 4 277 82
+37ab8 c 226 25
+37ac4 4 228 25
+37ac8 8 226 25
+37ad0 8 228 25
+37ad8 4 228 25
+37adc 8 1139 87
+37ae4 4 228 25
+37ae8 8 229 25
+37af0 4 277 82
+37af4 4 229 25
+37af8 4 1139 87
+37afc 4 229 25
+37b00 24 229 25
+37b24 4 229 25
+37b28 4 229 25
+37b2c 1c 229 25
+37b48 8 229 25
+37b50 c 229 25
+37b5c 8 85 79
+37b64 8 229 25
+37b6c 8 156 132
+37b74 10 256 82
+37b84 4 1512 82
+37b88 4 231 25
+37b8c 4 256 82
+37b90 4 1512 82
+37b94 4 256 82
+37b98 4 230 25
+37b9c 8 256 82
+37ba4 4 192 139
+37ba8 4 231 25
+37bac 8 192 139
+37bb4 8 231 25
+37bbc 4 232 25
+37bc0 c 233 25
+37bcc 4 233 25
+37bd0 4 236 25
+37bd4 4 1512 82
+37bd8 4 236 25
+37bdc 18 1512 82
+37bf4 8 236 25
+37bfc c 302 82
+37c08 18 236 25
+37c20 8 236 25
+37c28 c 237 25
+37c34 8 85 79
+37c3c 8 236 25
+37c44 8 256 82
+37c4c 4 238 25
+37c50 4 1512 82
+37c54 4 238 25
+37c58 1c 1512 82
+37c74 8 238 25
+37c7c c 302 82
+37c88 18 238 25
+37ca0 8 238 25
+37ca8 c 238 25
+37cb4 8 85 79
+37cbc 8 238 25
+37cc4 8 256 82
+37ccc 4 1481 82
+37cd0 4 239 25
+37cd4 4 1481 82
+37cd8 c 1482 82
+37ce4 10 884 80
+37cf4 c 254 121
+37d00 c 75 127
+37d0c 8 886 80
+37d14 10 1382 82
+37d24 24 1471 82
+37d48 10 156 132
+37d58 8 239 25
+37d60 c 302 82
+37d6c 18 239 25
+37d84 8 239 25
+37d8c c 239 25
+37d98 8 85 79
+37da0 8 239 25
+37da8 8 256 82
+37db0 c 240 25
+37dbc 8 231 25
+37dc4 20 1512 82
+37de4 8 243 25
+37dec 4 1512 82
+37df0 8 243 25
+37df8 4 302 82
+37dfc 4 243 25
+37e00 8 302 82
+37e08 18 243 25
+37e20 8 243 25
+37e28 c 243 25
+37e34 8 85 79
+37e3c 8 243 25
+37e44 8 256 82
+37e4c 8 243 25
+37e54 24 244 25
+FUNC 37e78 b58 0 LinuxPtraceDumperTest_VerifyStackReadWithMultipleThreads_Test::TestBody
+37e78 4 364 25
+37e7c 4 367 25
+37e80 10 364 25
+37e90 4 367 25
+37e94 8 364 25
+37e9c 10 367 25
+37eac 4 364 25
+37eb0 8 370 25
+37eb8 8 364 25
+37ec0 4 367 25
+37ec4 10 370 25
+37ed4 8 370 25
+37edc c 370 25
+37ee8 1c 370 25
+37f04 c 370 25
+37f10 c 302 82
+37f1c 18 370 25
+37f34 8 370 25
+37f3c c 370 25
+37f48 8 85 79
+37f50 8 370 25
+37f58 10 256 82
+37f68 8 372 25
+37f70 4 373 25
+37f74 10 375 25
+37f84 8 377 25
+37f8c 10 378 25
+37f9c 18 379 25
+37fb4 8 379 25
+37fbc 4 131 79
+37fc0 10 333 122
+37fd0 14 385 25
+37fe4 1c 390 25
+38000 c 392 25
+3800c c 392 25
+38018 18 393 25
+38030 8 393 25
+38038 4 131 79
+3803c 10 333 122
+3804c 4 131 79
+38050 c 131 79
+3805c 4 131 79
+38060 10 333 122
+38070 4 393 25
+38074 c 393 25
+38080 4 333 122
+38084 4 150 79
+38088 c 333 122
+38094 c 393 25
+380a0 8 85 79
+380a8 8 393 25
+380b0 c 156 132
+380bc 8 396 25
+380c4 4 401 25
+380c8 4 396 25
+380cc 18 1512 82
+380e4 c 1471 82
+380f0 4 401 25
+380f4 8 402 25
+380fc 8 403 25
+38104 1c 405 25
+38120 4 405 25
+38124 c 405 25
+38130 4 405 25
+38134 4 406 25
+38138 4 1512 82
+3813c 4 406 25
+38140 4 1512 82
+38144 4 405 25
+38148 c 1512 82
+38154 4 406 25
+38158 4 1512 82
+3815c 8 406 25
+38164 c 302 82
+38170 18 406 25
+38188 8 406 25
+38190 c 406 25
+3819c 8 85 79
+381a4 8 406 25
+381ac 10 256 82
+381bc 8 1139 87
+381c4 4 256 82
+381c8 8 407 25
+381d0 4 277 82
+381d4 4 1139 87
+381d8 4 407 25
+381dc 24 407 25
+38200 1c 407 25
+3821c 8 407 25
+38224 c 407 25
+38230 8 85 79
+38238 8 407 25
+38240 c 156 132
+3824c 8 256 82
+38254 10 409 25
+38264 4 1481 82
+38268 4 409 25
+3826c 4 1481 82
+38270 c 1482 82
+3827c c 884 80
+38288 10 259 121
+38298 4 75 127
+3829c 4 259 121
+382a0 c 75 127
+382ac 8 886 80
+382b4 c 884 80
+382c0 10 259 121
+382d0 c 75 127
+382dc 8 886 80
+382e4 20 1471 82
+38304 10 156 132
+38314 c 409 25
+38320 c 302 82
+3832c 18 409 25
+38344 8 409 25
+3834c c 409 25
+38358 8 85 79
+38360 8 409 25
+38368 10 256 82
+38378 8 399 25
+38380 4 412 25
+38384 4 1139 87
+38388 4 412 25
+3838c c 417 25
+38398 c 420 25
+383a4 8 421 25
+383ac 4 277 82
+383b0 4 421 25
+383b4 4 1139 87
+383b8 4 421 25
+383bc 24 421 25
+383e0 1c 421 25
+383fc 8 421 25
+38404 c 421 25
+38410 8 85 79
+38418 8 421 25
+38420 8 156 132
+38428 8 256 82
+38430 4 422 25
+38434 4 192 139
+38438 4 422 25
+3843c 4 1512 82
+38440 4 192 139
+38444 8 1512 82
+3844c 8 192 139
+38454 4 1512 82
+38458 4 422 25
+3845c 10 1512 82
+3846c 8 422 25
+38474 c 302 82
+38480 18 422 25
+38498 8 422 25
+384a0 c 422 25
+384ac 8 85 79
+384b4 8 422 25
+384bc 8 256 82
+384c4 8 423 25
+384cc 4 1139 87
+384d0 4 423 25
+384d4 4 277 82
+384d8 4 423 25
+384dc 24 423 25
+38500 1c 423 25
+3851c 8 423 25
+38524 c 423 25
+38530 8 85 79
+38538 8 423 25
+38540 8 156 132
+38548 4 256 82
+3854c 4 426 25
+38550 4 256 82
+38554 20 427 25
+38574 10 192 139
+38584 4 426 25
+38588 4 427 25
+3858c 4 426 25
+38590 c 427 25
+3859c 4 1139 87
+385a0 4 427 25
+385a4 4 277 82
+385a8 4 427 25
+385ac 18 427 25
+385c4 1c 427 25
+385e0 8 427 25
+385e8 c 427 25
+385f4 8 85 79
+385fc 8 427 25
+38604 8 156 132
+3860c 8 256 82
+38614 14 430 25
+38628 4 1139 87
+3862c 4 430 25
+38630 4 277 82
+38634 4 430 25
+38638 1c 430 25
+38654 1c 430 25
+38670 8 430 25
+38678 c 431 25
+38684 8 85 79
+3868c 8 430 25
+38694 8 156 132
+3869c c 256 82
+386a8 1c 452 25
+386c4 4 203 139
+386c8 20 1512 82
+386e8 8 453 25
+386f0 c 302 82
+386fc 18 453 25
+38714 8 453 25
+3871c c 453 25
+38728 8 85 79
+38730 8 453 25
+38738 4 256 82
+3873c 4 426 25
+38740 8 256 82
+38748 4 455 25
+3874c 4 1139 87
+38750 4 455 25
+38754 4 277 82
+38758 4 455 25
+3875c 24 455 25
+38780 1c 455 25
+3879c 8 455 25
+387a4 c 455 25
+387b0 8 85 79
+387b8 8 455 25
+387c0 8 156 132
+387c8 8 256 82
+387d0 c 456 25
+387dc 8 460 25
+387e4 1c 460 25
+38800 4 460 25
+38804 10 460 25
+38814 4 256 82
+38818 4 1139 87
+3881c 4 256 82
+38820 14 461 25
+38834 4 277 82
+38838 4 1139 87
+3883c 4 461 25
+38840 24 461 25
+38864 1c 461 25
+38880 8 461 25
+38888 c 461 25
+38894 8 85 79
+3889c 8 461 25
+388a4 8 156 132
+388ac 8 256 82
+388b4 8 460 25
+388bc 4 460 25
+388c0 10 460 25
+388d0 4 460 25
+388d4 8 460 25
+388dc 8 460 25
+388e4 c 302 82
+388f0 14 460 25
+38904 4 462 25
+38908 8 462 25
+38910 c 462 25
+3891c 8 85 79
+38924 8 462 25
+3892c 1c 256 82
+38948 c 462 25
+38954 c 1512 82
+38960 8 462 25
+38968 14 1512 82
+3897c 8 462 25
+38984 c 302 82
+38990 18 462 25
+389a8 28 463 25
+FUNC 389d0 24 0 google_breakpad::LinuxPtraceDumper::~LinuxPtraceDumper
+389d0 c 42 24
+389dc 8 42 24
+389e4 4 42 24
+389e8 8 42 24
+389f0 4 42 24
+FUNC 389f4 4 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MinidumpWriterTest_MinidumpSizeLimit_Test>::~TestFactoryImpl
+389f4 4 484 85
+FUNC 389f8 4 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MinidumpWriterTest_InvalidStackPointer_Test>::~TestFactoryImpl
+389f8 4 484 85
+FUNC 389fc 4 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MinidumpWriterTest_AdditionalMemory_Test>::~TestFactoryImpl
+389fc 4 484 85
+FUNC 38a00 4 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MinidumpWriterTest_DeletedBinary_Test>::~TestFactoryImpl
+38a00 4 484 85
+FUNC 38a04 4 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MinidumpWriterTest_MappingInfoContained_Test>::~TestFactoryImpl
+38a04 4 484 85
+FUNC 38a08 4 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MinidumpWriterTest_MappingInfo_Test>::~TestFactoryImpl
+38a08 4 484 85
+FUNC 38a0c 4 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MinidumpWriterTest_SetupWithFD_Test>::~TestFactoryImpl
+38a0c 4 484 85
+FUNC 38a10 4 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MinidumpWriterTest_SetupWithPath_Test>::~TestFactoryImpl
+38a10 4 484 85
+FUNC 38a14 3c 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MinidumpWriterTest_SetupWithPath_Test>::CreateTest
+38a14 10 486 85
+38a24 8 486 85
+38a2c 8 67 27
+38a34 4 486 85
+38a38 c 67 27
+38a44 c 486 85
+FUNC 38a50 3c 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MinidumpWriterTest_SetupWithFD_Test>::CreateTest
+38a50 10 486 85
+38a60 8 486 85
+38a68 8 96 27
+38a70 4 486 85
+38a74 c 96 27
+38a80 c 486 85
+FUNC 38a8c 3c 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MinidumpWriterTest_MappingInfo_Test>::CreateTest
+38a8c 10 486 85
+38a9c 8 486 85
+38aa4 8 128 27
+38aac 4 486 85
+38ab0 c 128 27
+38abc c 486 85
+FUNC 38ac8 3c 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MinidumpWriterTest_MappingInfoContained_Test>::CreateTest
+38ac8 10 486 85
+38ad8 8 486 85
+38ae0 8 236 27
+38ae8 4 486 85
+38aec c 236 27
+38af8 c 486 85
+FUNC 38b04 3c 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MinidumpWriterTest_DeletedBinary_Test>::CreateTest
+38b04 10 486 85
+38b14 8 486 85
+38b1c 8 338 27
+38b24 4 486 85
+38b28 c 338 27
+38b34 c 486 85
+FUNC 38b40 3c 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MinidumpWriterTest_AdditionalMemory_Test>::CreateTest
+38b40 10 486 85
+38b50 8 486 85
+38b58 8 432 27
+38b60 4 486 85
+38b64 c 432 27
+38b70 c 486 85
+FUNC 38b7c 3c 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MinidumpWriterTest_InvalidStackPointer_Test>::CreateTest
+38b7c 10 486 85
+38b8c 8 486 85
+38b94 8 504 27
+38b9c 4 486 85
+38ba0 c 504 27
+38bac c 486 85
+FUNC 38bb8 3c 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MinidumpWriterTest_MinidumpSizeLimit_Test>::CreateTest
+38bb8 10 486 85
+38bc8 8 486 85
+38bd0 8 583 27
+38bd8 4 486 85
+38bdc c 583 27
+38be8 c 486 85
+FUNC 38bf4 4 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MinidumpWriterTest_SetupWithPath_Test>::~TestFactoryImpl
+38bf4 4 484 85
+FUNC 38bf8 4 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MinidumpWriterTest_SetupWithFD_Test>::~TestFactoryImpl
+38bf8 4 484 85
+FUNC 38bfc 4 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MinidumpWriterTest_MappingInfo_Test>::~TestFactoryImpl
+38bfc 4 484 85
+FUNC 38c00 4 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MinidumpWriterTest_MappingInfoContained_Test>::~TestFactoryImpl
+38c00 4 484 85
+FUNC 38c04 4 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MinidumpWriterTest_DeletedBinary_Test>::~TestFactoryImpl
+38c04 4 484 85
+FUNC 38c08 4 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MinidumpWriterTest_AdditionalMemory_Test>::~TestFactoryImpl
+38c08 4 484 85
+FUNC 38c0c 4 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MinidumpWriterTest_InvalidStackPointer_Test>::~TestFactoryImpl
+38c0c 4 484 85
+FUNC 38c10 4 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MinidumpWriterTest_MinidumpSizeLimit_Test>::~TestFactoryImpl
+38c10 4 484 85
+FUNC 38c14 14 0 MinidumpWriterTest_SetupWithPath_Test::~MinidumpWriterTest_SetupWithPath_Test
+38c14 14 67 27
+FUNC 38c28 24 0 MinidumpWriterTest_SetupWithPath_Test::~MinidumpWriterTest_SetupWithPath_Test
+38c28 c 67 27
+38c34 8 67 27
+38c3c 4 67 27
+38c40 8 67 27
+38c48 4 67 27
+FUNC 38c4c 14 0 MinidumpWriterTest_SetupWithFD_Test::~MinidumpWriterTest_SetupWithFD_Test
+38c4c 14 96 27
+FUNC 38c60 24 0 MinidumpWriterTest_SetupWithFD_Test::~MinidumpWriterTest_SetupWithFD_Test
+38c60 c 96 27
+38c6c 8 96 27
+38c74 4 96 27
+38c78 8 96 27
+38c80 4 96 27
+FUNC 38c84 14 0 MinidumpWriterTest_MappingInfo_Test::~MinidumpWriterTest_MappingInfo_Test
+38c84 14 128 27
+FUNC 38c98 24 0 MinidumpWriterTest_MappingInfo_Test::~MinidumpWriterTest_MappingInfo_Test
+38c98 c 128 27
+38ca4 8 128 27
+38cac 4 128 27
+38cb0 8 128 27
+38cb8 4 128 27
+FUNC 38cbc 14 0 MinidumpWriterTest_MappingInfoContained_Test::~MinidumpWriterTest_MappingInfoContained_Test
+38cbc 14 236 27
+FUNC 38cd0 24 0 MinidumpWriterTest_MappingInfoContained_Test::~MinidumpWriterTest_MappingInfoContained_Test
+38cd0 c 236 27
+38cdc 8 236 27
+38ce4 4 236 27
+38ce8 8 236 27
+38cf0 4 236 27
+FUNC 38cf4 14 0 MinidumpWriterTest_DeletedBinary_Test::~MinidumpWriterTest_DeletedBinary_Test
+38cf4 14 338 27
+FUNC 38d08 24 0 MinidumpWriterTest_DeletedBinary_Test::~MinidumpWriterTest_DeletedBinary_Test
+38d08 c 338 27
+38d14 8 338 27
+38d1c 4 338 27
+38d20 8 338 27
+38d28 4 338 27
+FUNC 38d2c 14 0 MinidumpWriterTest_AdditionalMemory_Test::~MinidumpWriterTest_AdditionalMemory_Test
+38d2c 14 432 27
+FUNC 38d40 24 0 MinidumpWriterTest_AdditionalMemory_Test::~MinidumpWriterTest_AdditionalMemory_Test
+38d40 c 432 27
+38d4c 8 432 27
+38d54 4 432 27
+38d58 8 432 27
+38d60 4 432 27
+FUNC 38d64 14 0 MinidumpWriterTest_InvalidStackPointer_Test::~MinidumpWriterTest_InvalidStackPointer_Test
+38d64 14 504 27
+FUNC 38d78 24 0 MinidumpWriterTest_InvalidStackPointer_Test::~MinidumpWriterTest_InvalidStackPointer_Test
+38d78 c 504 27
+38d84 8 504 27
+38d8c 4 504 27
+38d90 8 504 27
+38d98 4 504 27
+FUNC 38d9c 14 0 MinidumpWriterTest_MinidumpSizeLimit_Test::~MinidumpWriterTest_MinidumpSizeLimit_Test
+38d9c 14 583 27
+FUNC 38db0 24 0 MinidumpWriterTest_MinidumpSizeLimit_Test::~MinidumpWriterTest_MinidumpSizeLimit_Test
+38db0 c 583 27
+38dbc 8 583 27
+38dc4 4 583 27
+38dc8 8 583 27
+38dd0 4 583 27
+FUNC 38dd4 fc 0 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::find
+38dd4 4 438 130
+38dd8 8 438 130
+38de0 4 400 131
+38de4 8 440 130
+38dec 8 441 130
+38df4 4 446 130
+38df8 8 162 99
+38e00 8 164 99
+38e08 c 165 99
+38e14 c 168 99
+38e20 8 166 99
+38e28 c 171 99
+38e34 8 169 99
+38e3c c 174 99
+38e48 c 172 99
+38e54 8 164 99
+38e5c 20 178 99
+38e7c 10 180 99
+38e8c 4 181 99
+38e90 10 183 99
+38ea0 4 184 99
+38ea4 10 186 99
+38eb4 8 165 99
+38ebc 4 190 99
+38ec0 8 447 130
+38ec8 4 447 130
+38ecc 4 448 130
+FUNC 38ed0 5c 0 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::erase
+38ed0 c 788 131
+38edc 8 788 131
+38ee4 8 400 131
+38eec 8 789 131
+38ef4 c 604 130
+38f00 10 791 131
+38f10 c 791 131
+38f1c 10 793 131
+FUNC 38f2c 5c 0 std::priv::_Impl_list<google_breakpad::MappingEntry, std::allocator<google_breakpad::MappingEntry> >::push_back
+38f2c 4 509 116
+38f30 4 306 101
+38f34 8 509 116
+38f3c 4 509 116
+38f40 4 306 101
+38f44 4 509 116
+38f48 4 306 101
+38f4c 8 307 101
+38f54 8 119 103
+38f5c c 119 103
+38f68 4 427 116
+38f6c 4 429 116
+38f70 4 428 116
+38f74 4 430 116
+38f78 4 431 116
+38f7c c 509 116
+FUNC 38f88 34 0 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::append
+38f88 c 529 131
+38f94 4 529 131
+38f98 c 229 140
+38fa4 8 530 131
+38fac 4 530 131
+38fb0 8 530 131
+38fb8 4 530 131
+FUNC 38fbc 40 0 std::priv::_List_base<google_breakpad::MappingEntry, std::allocator<google_breakpad::MappingEntry> >::clear
+38fbc c 66 115
+38fc8 4 66 115
+38fcc 4 67 115
+38fd0 8 68 115
+38fd8 4 74 115
+38fdc c 135 119
+38fe8 4 78 115
+38fec 4 79 115
+38ff0 c 80 115
+FUNC 38ffc 44 0 std::priv::_List_base<google_breakpad::AppMemory, std::allocator<google_breakpad::AppMemory> >::clear
+38ffc c 66 115
+39008 4 66 115
+3900c 4 67 115
+39010 8 68 115
+39018 4 161 101
+3901c 4 74 115
+39020 c 161 101
+3902c 4 78 115
+39030 4 79 115
+39034 c 80 115
+FUNC 39040 354 0 MinidumpWriterTest_SetupWithPath_Test::TestBody
+39040 4 67 27
+39044 4 69 27
+39048 10 67 27
+39058 4 69 27
+3905c 4 67 27
+39060 8 69 27
+39068 c 67 27
+39074 c 69 27
+39080 4 69 27
+39084 c 69 27
+39090 20 69 27
+390b0 8 69 27
+390b8 c 302 82
+390c4 18 69 27
+390dc 8 69 27
+390e4 c 69 27
+390f0 8 85 79
+390f8 8 69 27
+39100 14 256 82
+39114 8 71 27
+3911c 4 72 27
+39120 8 73 27
+39128 18 75 27
+39140 4 75 27
+39144 c 75 27
+39150 c 76 27
+3915c 8 77 27
+39164 4 79 27
+39168 4 82 27
+3916c 4 84 27
+39170 c 85 27
+3917c 8 79 27
+39184 10 82 27
+39194 8 84 27
+3919c 14 85 27
+391b0 4 87 27
+391b4 8 88 27
+391bc 4 277 82
+391c0 8 88 27
+391c8 8 1139 87
+391d0 4 88 27
+391d4 4 277 82
+391d8 4 88 27
+391dc 4 1139 87
+391e0 4 88 27
+391e4 24 88 27
+39208 1c 88 27
+39224 8 88 27
+3922c c 88 27
+39238 8 85 79
+39240 8 88 27
+39248 c 156 132
+39254 4 256 82
+39258 8 1552 82
+39260 4 256 82
+39264 4 90 27
+39268 c 90 27
+39274 4 90 27
+39278 1c 1552 82
+39294 8 90 27
+3929c c 302 82
+392a8 18 90 27
+392c0 8 256 82
+392c8 28 91 27
+392f0 c 302 82
+392fc 18 91 27
+39314 8 91 27
+3931c c 91 27
+39328 8 85 79
+39330 8 91 27
+39338 8 256 82
+39340 10 156 132
+39350 8 256 82
+39358 8 93 27
+39360 8 156 132
+39368 8 93 27
+39370 24 94 27
+FUNC 39394 360 0 MinidumpWriterTest_SetupWithFD_Test::TestBody
+39394 4 96 27
+39398 4 98 27
+3939c 10 96 27
+393ac 4 98 27
+393b0 4 96 27
+393b4 8 98 27
+393bc c 96 27
+393c8 c 98 27
+393d4 4 98 27
+393d8 c 98 27
+393e4 20 98 27
+39404 8 98 27
+3940c c 302 82
+39418 18 98 27
+39430 8 98 27
+39438 c 98 27
+39444 8 85 79
+3944c 8 98 27
+39454 14 256 82
+39468 8 100 27
+39470 4 101 27
+39474 8 102 27
+3947c 18 104 27
+39494 4 104 27
+39498 c 104 27
+394a4 c 105 27
+394b0 8 106 27
+394b8 4 108 27
+394bc 4 111 27
+394c0 4 113 27
+394c4 c 114 27
+394d0 8 108 27
+394d8 10 111 27
+394e8 8 113 27
+394f0 14 114 27
+39504 10 115 27
+39514 4 117 27
+39518 4 118 27
+3951c 4 277 82
+39520 8 118 27
+39528 8 1139 87
+39530 4 118 27
+39534 4 277 82
+39538 4 118 27
+3953c 4 1139 87
+39540 4 118 27
+39544 24 118 27
+39568 1c 118 27
+39584 8 118 27
+3958c c 118 27
+39598 8 85 79
+395a0 8 118 27
+395a8 c 156 132
+395b4 4 256 82
+395b8 8 1552 82
+395c0 4 256 82
+395c4 4 120 27
+395c8 c 120 27
+395d4 4 120 27
+395d8 1c 1552 82
+395f4 8 120 27
+395fc c 302 82
+39608 18 120 27
+39620 8 256 82
+39628 28 121 27
+39650 c 302 82
+3965c 18 121 27
+39674 8 121 27
+3967c c 121 27
+39688 8 85 79
+39690 8 121 27
+39698 8 256 82
+396a0 10 156 132
+396b0 8 256 82
+396b8 8 123 27
+396c0 8 156 132
+396c8 8 123 27
+396d0 24 124 27
+FUNC 396f4 f0 0 testing::internal::CmpHelperEQ<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >
+396f4 18 1476 82
+3970c c 1476 82
+39718 8 400 131
+39720 8 315 134
+39728 8 226 140
+39730 4 315 134
+39734 c 884 80
+39740 4 711 80
+39744 4 884 80
+39748 10 711 80
+39758 c 469 80
+39764 8 156 132
+3976c c 75 127
+39778 8 886 80
+39780 c 1382 82
+3978c 24 1471 82
+397b0 14 156 132
+397c4 8 1482 82
+397cc 18 1488 82
+FUNC 397e4 10b4 0 MinidumpWriterTest_MappingInfo_Test::TestBody
+397e4 14 128 27
+397f8 4 130 27
+397fc 4 128 27
+39800 8 130 27
+39808 4 128 27
+3980c 4 130 27
+39810 4 130 27
+39814 8 128 27
+3981c 10 130 27
+3982c 1c 130 27
+39848 4 130 27
+3984c 4 130 27
+39850 8 130 27
+39858 c 302 82
+39864 18 130 27
+3987c 8 130 27
+39884 c 130 27
+39890 8 85 79
+39898 8 130 27
+398a0 10 256 82
+398b0 4 143 27
+398b4 4 144 27
+398b8 4 256 82
+398bc c 134 27
+398c8 4 143 27
+398cc 4 134 27
+398d0 74 139 27
+39944 4 143 27
+39948 8 139 27
+39950 4 143 27
+39954 10 144 27
+39964 10 962 131
+39974 4 147 27
+39978 4 962 131
+3997c 4 147 27
+39980 14 148 27
+39994 10 452 131
+399a4 20 161 27
+399c4 4 277 82
+399c8 8 162 27
+399d0 4 277 82
+399d4 4 1139 87
+399d8 8 277 82
+399e0 4 1139 87
+399e4 4 163 27
+399e8 20 163 27
+39a08 4 163 27
+39a0c 4 163 27
+39a10 4 163 27
+39a14 1c 163 27
+39a30 8 163 27
+39a38 c 163 27
+39a44 8 85 79
+39a4c 8 163 27
+39a54 8 156 132
+39a5c 10 256 82
+39a6c 8 165 27
+39a74 4 166 27
+39a78 4 167 27
+39a7c 4 169 27
+39a80 8 167 27
+39a88 18 169 27
+39aa0 4 169 27
+39aa4 c 169 27
+39ab0 c 170 27
+39abc 8 171 27
+39ac4 4 173 27
+39ac8 4 176 27
+39acc 8 177 27
+39ad4 4 1552 82
+39ad8 8 173 27
+39ae0 10 176 27
+39af0 10 177 27
+39b00 18 1552 82
+39b18 4 177 27
+39b1c 4 1552 82
+39b20 8 177 27
+39b28 c 302 82
+39b34 18 177 27
+39b4c 8 177 27
+39b54 c 177 27
+39b60 8 85 79
+39b68 8 177 27
+39b70 10 256 82
+39b80 4 180 27
+39b84 4 181 27
+39b88 4 185 27
+39b8c 4 256 82
+39b90 4 178 27
+39b94 8 180 27
+39b9c 10 181 27
+39bac 4 211 116
+39bb0 4 181 27
+39bb4 4 187 27
+39bb8 4 185 27
+39bbc 4 188 27
+39bc0 4 185 27
+39bc4 4 186 27
+39bc8 4 188 27
+39bcc 8 186 27
+39bd4 8 188 27
+39bdc 8 211 116
+39be4 4 193 27
+39be8 4 212 116
+39bec 8 193 27
+39bf4 4 212 116
+39bf8 8 211 116
+39c00 4 212 116
+39c04 4 193 27
+39c08 10 194 27
+39c18 c 229 141
+39c24 8 196 27
+39c2c 4 277 82
+39c30 10 196 27
+39c40 4 1139 87
+39c44 4 196 27
+39c48 4 277 82
+39c4c 4 196 27
+39c50 4 1139 87
+39c54 4 196 27
+39c58 20 196 27
+39c78 4 196 27
+39c7c 4 196 27
+39c80 1c 196 27
+39c9c 8 196 27
+39ca4 c 196 27
+39cb0 8 85 79
+39cb8 8 196 27
+39cc0 8 156 132
+39cc8 10 256 82
+39cd8 4 1139 87
+39cdc 4 256 82
+39ce0 c 202 27
+39cec 8 203 27
+39cf4 4 277 82
+39cf8 4 203 27
+39cfc 4 1139 87
+39d00 4 203 27
+39d04 20 203 27
+39d24 4 203 27
+39d28 4 203 27
+39d2c 18 203 27
+39d44 8 256 82
+39d4c 8 205 27
+39d54 4 277 82
+39d58 4 205 27
+39d5c 4 1139 87
+39d60 8 277 82
+39d68 4 206 27
+39d6c 20 206 27
+39d8c 4 206 27
+39d90 4 206 27
+39d94 18 206 27
+39dac 8 256 82
+39db4 14 208 27
+39dc8 4 277 82
+39dcc 4 208 27
+39dd0 4 1139 87
+39dd4 8 277 82
+39ddc 4 209 27
+39de0 20 209 27
+39e00 4 209 27
+39e04 4 209 27
+39e08 18 209 27
+39e20 4 209 27
+39e24 4 209 27
+39e28 8 209 27
+39e30 c 209 27
+39e3c 8 85 79
+39e44 8 209 27
+39e4c 8 156 132
+39e54 14 256 82
+39e68 14 211 27
+39e7c 20 1512 82
+39e9c 8 211 27
+39ea4 4 302 82
+39ea8 4 211 27
+39eac 8 302 82
+39eb4 18 211 27
+39ecc 8 211 27
+39ed4 c 211 27
+39ee0 8 85 79
+39ee8 8 211 27
+39ef0 4 256 82
+39ef4 4 212 27
+39ef8 c 256 82
+39f04 18 212 27
+39f1c 10 1481 82
+39f2c c 1482 82
+39f38 18 1382 82
+39f50 24 1471 82
+39f74 14 156 132
+39f88 8 212 27
+39f90 4 302 82
+39f94 8 212 27
+39f9c 4 302 82
+39fa0 10 212 27
+39fb0 4 212 27
+39fb4 4 212 27
+39fb8 8 212 27
+39fc0 c 212 27
+39fcc 8 85 79
+39fd4 8 212 27
+39fdc 4 256 82
+39fe0 4 213 27
+39fe4 4 256 82
+39fe8 4 1512 82
+39fec 4 256 82
+39ff0 14 213 27
+3a004 c 1512 82
+3a010 8 156 132
+3a018 8 213 27
+3a020 c 302 82
+3a02c 18 213 27
+3a044 8 213 27
+3a04c c 213 27
+3a058 8 85 79
+3a060 8 213 27
+3a068 4 256 82
+3a06c 4 214 27
+3a070 8 256 82
+3a078 14 214 27
+3a08c 20 1512 82
+3a0ac 8 156 132
+3a0b4 8 214 27
+3a0bc 4 302 82
+3a0c0 4 214 27
+3a0c4 8 302 82
+3a0cc 18 214 27
+3a0e4 8 214 27
+3a0ec c 214 27
+3a0f8 8 85 79
+3a100 8 214 27
+3a108 c 256 82
+3a114 10 218 27
+3a124 4 1139 87
+3a128 4 218 27
+3a12c 4 277 82
+3a130 4 218 27
+3a134 24 218 27
+3a158 4 218 27
+3a15c 4 218 27
+3a160 4 218 27
+3a164 1c 218 27
+3a180 8 218 27
+3a188 c 218 27
+3a194 8 85 79
+3a19c 8 218 27
+3a1a4 8 156 132
+3a1ac c 256 82
+3a1b8 10 219 27
+3a1c8 4 1139 87
+3a1cc 4 219 27
+3a1d0 4 277 82
+3a1d4 4 219 27
+3a1d8 24 219 27
+3a1fc 4 219 27
+3a200 4 219 27
+3a204 4 219 27
+3a208 1c 219 27
+3a224 8 219 27
+3a22c c 219 27
+3a238 8 85 79
+3a240 8 219 27
+3a248 8 156 132
+3a250 c 256 82
+3a25c 10 220 27
+3a26c 4 1139 87
+3a270 4 220 27
+3a274 4 277 82
+3a278 4 220 27
+3a27c 24 220 27
+3a2a0 4 220 27
+3a2a4 4 220 27
+3a2a8 4 220 27
+3a2ac 1c 220 27
+3a2c8 8 220 27
+3a2d0 c 220 27
+3a2dc 8 85 79
+3a2e4 8 220 27
+3a2ec 8 156 132
+3a2f4 c 256 82
+3a300 10 221 27
+3a310 4 1139 87
+3a314 4 221 27
+3a318 4 277 82
+3a31c 4 221 27
+3a320 24 221 27
+3a344 4 221 27
+3a348 4 221 27
+3a34c 4 221 27
+3a350 1c 221 27
+3a36c 8 221 27
+3a374 c 221 27
+3a380 8 85 79
+3a388 8 221 27
+3a390 8 156 132
+3a398 c 256 82
+3a3a4 14 222 27
+3a3b8 4 1139 87
+3a3bc 4 222 27
+3a3c0 4 277 82
+3a3c4 4 222 27
+3a3c8 24 222 27
+3a3ec 4 222 27
+3a3f0 4 222 27
+3a3f4 4 222 27
+3a3f8 1c 222 27
+3a414 8 222 27
+3a41c c 222 27
+3a428 8 85 79
+3a430 8 222 27
+3a438 8 156 132
+3a440 c 256 82
+3a44c 14 223 27
+3a460 4 1139 87
+3a464 4 223 27
+3a468 4 277 82
+3a46c 4 223 27
+3a470 24 223 27
+3a494 4 223 27
+3a498 4 223 27
+3a49c 4 223 27
+3a4a0 1c 223 27
+3a4bc 8 223 27
+3a4c4 c 223 27
+3a4d0 8 85 79
+3a4d8 8 223 27
+3a4e0 8 156 132
+3a4e8 c 256 82
+3a4f4 14 224 27
+3a508 4 1139 87
+3a50c 4 224 27
+3a510 4 277 82
+3a514 4 224 27
+3a518 24 224 27
+3a53c 4 224 27
+3a540 4 224 27
+3a544 4 224 27
+3a548 1c 224 27
+3a564 8 224 27
+3a56c c 224 27
+3a578 8 85 79
+3a580 8 224 27
+3a588 8 156 132
+3a590 c 256 82
+3a59c 14 225 27
+3a5b0 4 1139 87
+3a5b4 4 225 27
+3a5b8 4 277 82
+3a5bc 4 225 27
+3a5c0 24 225 27
+3a5e4 4 225 27
+3a5e8 4 225 27
+3a5ec 4 225 27
+3a5f0 1c 225 27
+3a60c 8 225 27
+3a614 c 225 27
+3a620 8 85 79
+3a628 8 225 27
+3a630 8 156 132
+3a638 c 256 82
+3a644 14 226 27
+3a658 4 1139 87
+3a65c 4 226 27
+3a660 4 277 82
+3a664 4 226 27
+3a668 24 226 27
+3a68c 4 226 27
+3a690 4 226 27
+3a694 4 226 27
+3a698 1c 226 27
+3a6b4 8 226 27
+3a6bc c 226 27
+3a6c8 8 85 79
+3a6d0 8 226 27
+3a6d8 8 156 132
+3a6e0 c 256 82
+3a6ec 14 227 27
+3a700 4 1139 87
+3a704 4 227 27
+3a708 4 277 82
+3a70c 4 227 27
+3a710 24 227 27
+3a734 4 227 27
+3a738 4 227 27
+3a73c 4 227 27
+3a740 1c 227 27
+3a75c 8 227 27
+3a764 c 227 27
+3a770 8 85 79
+3a778 8 227 27
+3a780 8 156 132
+3a788 c 256 82
+3a794 14 228 27
+3a7a8 4 1139 87
+3a7ac 4 228 27
+3a7b0 4 277 82
+3a7b4 4 228 27
+3a7b8 24 228 27
+3a7dc 4 228 27
+3a7e0 4 228 27
+3a7e4 4 228 27
+3a7e8 1c 228 27
+3a804 8 228 27
+3a80c c 228 27
+3a818 8 85 79
+3a820 8 228 27
+3a828 8 156 132
+3a830 8 256 82
+3a838 14 230 27
+3a84c 10 205 116
+3a85c 18 156 132
+3a874 24 231 27
+FUNC 3a898 aac 0 MinidumpWriterTest_MappingInfoContained_Test::TestBody
+3a898 14 236 27
+3a8ac c 238 27
+3a8b8 10 236 27
+3a8c8 10 238 27
+3a8d8 c 238 27
+3a8e4 4 238 27
+3a8e8 14 238 27
+3a8fc 8 238 27
+3a904 4 238 27
+3a908 8 238 27
+3a910 c 302 82
+3a91c 18 238 27
+3a934 8 238 27
+3a93c c 238 27
+3a948 8 85 79
+3a950 8 238 27
+3a958 10 256 82
+3a968 4 251 27
+3a96c 4 252 27
+3a970 4 256 82
+3a974 c 242 27
+3a980 4 247 27
+3a984 4 251 27
+3a988 4 242 27
+3a98c 6c 247 27
+3a9f8 4 251 27
+3a9fc 4 247 27
+3aa00 4 251 27
+3aa04 8 247 27
+3aa0c 4 251 27
+3aa10 10 252 27
+3aa20 14 962 131
+3aa34 4 255 27
+3aa38 4 256 27
+3aa3c 4 255 27
+3aa40 10 256 27
+3aa50 4 452 131
+3aa54 4 263 27
+3aa58 4 452 131
+3aa5c 4 264 27
+3aa60 8 265 27
+3aa68 4 452 131
+3aa6c 8 263 27
+3aa74 10 264 27
+3aa84 4 266 27
+3aa88 4 264 27
+3aa8c 10 265 27
+3aa9c c 266 27
+3aaa8 4 265 27
+3aaac 24 266 27
+3aad0 c 302 82
+3aadc 18 266 27
+3aaf4 8 266 27
+3aafc c 266 27
+3ab08 8 85 79
+3ab10 8 266 27
+3ab18 10 256 82
+3ab28 4 269 27
+3ab2c 4 256 82
+3ab30 8 267 27
+3ab38 c 269 27
+3ab44 c 270 27
+3ab50 c 271 27
+3ab5c 4 271 27
+3ab60 4 271 27
+3ab64 4 271 27
+3ab68 c 1481 82
+3ab74 c 1482 82
+3ab80 18 1382 82
+3ab98 24 1471 82
+3abbc 18 156 132
+3abd4 c 271 27
+3abe0 4 302 82
+3abe4 4 271 27
+3abe8 8 302 82
+3abf0 18 271 27
+3ac08 8 271 27
+3ac10 c 271 27
+3ac1c 8 85 79
+3ac24 c 271 27
+3ac30 4 256 82
+3ac34 4 272 27
+3ac38 4 1139 87
+3ac3c 4 256 82
+3ac40 10 272 27
+3ac50 20 280 27
+3ac70 4 277 82
+3ac74 4 280 27
+3ac78 8 277 82
+3ac80 4 1139 87
+3ac84 4 282 27
+3ac88 24 282 27
+3acac 4 282 27
+3acb0 4 282 27
+3acb4 1c 282 27
+3acd0 8 282 27
+3acd8 c 282 27
+3ace4 8 85 79
+3acec 8 282 27
+3acf4 8 156 132
+3acfc 14 256 82
+3ad10 8 283 27
+3ad18 8 285 27
+3ad20 4 286 27
+3ad24 4 287 27
+3ad28 4 289 27
+3ad2c 8 287 27
+3ad34 18 289 27
+3ad4c 4 289 27
+3ad50 c 289 27
+3ad5c c 290 27
+3ad68 8 291 27
+3ad70 4 293 27
+3ad74 4 296 27
+3ad78 4 299 27
+3ad7c 4 297 27
+3ad80 4 304 27
+3ad84 4 211 116
+3ad88 8 293 27
+3ad90 10 296 27
+3ada0 4 297 27
+3ada4 14 299 27
+3adb8 4 306 27
+3adbc 4 304 27
+3adc0 8 307 27
+3adc8 c 304 27
+3add4 4 307 27
+3add8 c 305 27
+3ade4 4 307 27
+3ade8 8 211 116
+3adf0 4 312 27
+3adf4 4 212 116
+3adf8 c 312 27
+3ae04 4 211 116
+3ae08 8 212 116
+3ae10 8 312 27
+3ae18 10 313 27
+3ae28 c 229 141
+3ae34 8 315 27
+3ae3c 4 277 82
+3ae40 10 315 27
+3ae50 c 1139 87
+3ae5c 4 315 27
+3ae60 4 277 82
+3ae64 4 315 27
+3ae68 4 1139 87
+3ae6c 4 315 27
+3ae70 20 315 27
+3ae90 4 315 27
+3ae94 4 315 27
+3ae98 1c 315 27
+3aeb4 8 315 27
+3aebc c 315 27
+3aec8 8 85 79
+3aed0 8 315 27
+3aed8 8 156 132
+3aee0 10 256 82
+3aef0 4 1139 87
+3aef4 4 256 82
+3aef8 c 321 27
+3af04 8 322 27
+3af0c 4 277 82
+3af10 4 322 27
+3af14 4 1139 87
+3af18 4 322 27
+3af1c 20 322 27
+3af3c 4 322 27
+3af40 4 322 27
+3af44 18 322 27
+3af5c 8 256 82
+3af64 8 324 27
+3af6c 4 277 82
+3af70 4 324 27
+3af74 4 1139 87
+3af78 8 277 82
+3af80 4 325 27
+3af84 20 325 27
+3afa4 4 325 27
+3afa8 4 325 27
+3afac 18 325 27
+3afc4 8 256 82
+3afcc 14 327 27
+3afe0 4 277 82
+3afe4 4 327 27
+3afe8 4 1139 87
+3afec 8 277 82
+3aff4 4 328 27
+3aff8 20 328 27
+3b018 4 328 27
+3b01c 4 328 27
+3b020 18 328 27
+3b038 4 328 27
+3b03c 4 328 27
+3b040 8 328 27
+3b048 c 328 27
+3b054 8 85 79
+3b05c 8 328 27
+3b064 8 156 132
+3b06c 14 256 82
+3b080 14 330 27
+3b094 20 1512 82
+3b0b4 8 330 27
+3b0bc 4 302 82
+3b0c0 4 330 27
+3b0c4 8 302 82
+3b0cc 18 330 27
+3b0e4 8 330 27
+3b0ec c 330 27
+3b0f8 8 85 79
+3b100 8 330 27
+3b108 4 256 82
+3b10c 4 331 27
+3b110 8 256 82
+3b118 14 331 27
+3b12c 20 1512 82
+3b14c 8 331 27
+3b154 4 302 82
+3b158 4 331 27
+3b15c 8 302 82
+3b164 18 331 27
+3b17c 8 331 27
+3b184 c 331 27
+3b190 8 85 79
+3b198 8 331 27
+3b1a0 4 256 82
+3b1a4 4 1512 82
+3b1a8 8 256 82
+3b1b0 14 332 27
+3b1c4 c 1512 82
+3b1d0 8 156 132
+3b1d8 8 332 27
+3b1e0 4 302 82
+3b1e4 4 332 27
+3b1e8 8 302 82
+3b1f0 18 332 27
+3b208 8 332 27
+3b210 c 332 27
+3b21c 8 85 79
+3b224 8 332 27
+3b22c 4 256 82
+3b230 4 333 27
+3b234 8 256 82
+3b23c 14 333 27
+3b250 20 1512 82
+3b270 8 156 132
+3b278 8 333 27
+3b280 4 302 82
+3b284 4 333 27
+3b288 8 302 82
+3b290 18 333 27
+3b2a8 8 333 27
+3b2b0 c 333 27
+3b2bc 8 85 79
+3b2c4 8 333 27
+3b2cc 8 256 82
+3b2d4 14 335 27
+3b2e8 10 205 116
+3b2f8 8 156 132
+3b300 8 203 57
+3b308 18 156 132
+3b320 24 336 27
+FUNC 3b344 b84 0 MinidumpWriterTest_DeletedBinary_Test::TestBody
+3b344 14 338 27
+3b358 8 339 27
+3b360 4 338 27
+3b364 4 339 27
+3b368 8 338 27
+3b370 10 339 27
+3b380 8 338 27
+3b388 4 340 27
+3b38c 4 339 27
+3b390 c 340 27
+3b39c 10 341 27
+3b3ac 20 342 27
+3b3cc 8 342 27
+3b3d4 4 131 79
+3b3d8 10 333 122
+3b3e8 c 342 27
+3b3f4 8 85 79
+3b3fc 8 342 27
+3b404 4 342 27
+3b408 4 347 27
+3b40c 4 348 27
+3b410 4 347 27
+3b414 4 1139 87
+3b418 4 347 27
+3b41c 18 348 27
+3b434 c 349 27
+3b440 4 277 82
+3b444 4 349 27
+3b448 4 1139 87
+3b44c 4 349 27
+3b450 20 349 27
+3b470 4 349 27
+3b474 4 349 27
+3b478 1c 349 27
+3b494 8 350 27
+3b49c 4 131 79
+3b4a0 10 333 122
+3b4b0 4 131 79
+3b4b4 c 131 79
+3b4c0 4 131 79
+3b4c4 10 333 122
+3b4d4 4 131 79
+3b4d8 c 131 79
+3b4e4 c 350 27
+3b4f0 8 85 79
+3b4f8 8 349 27
+3b500 8 156 132
+3b508 c 256 82
+3b514 4 1552 82
+3b518 4 351 27
+3b51c 4 256 82
+3b520 4 351 27
+3b524 c 351 27
+3b530 4 351 27
+3b534 1c 1552 82
+3b550 8 351 27
+3b558 c 302 82
+3b564 18 351 27
+3b57c 8 351 27
+3b584 c 351 27
+3b590 8 85 79
+3b598 8 351 27
+3b5a0 10 256 82
+3b5b0 4 354 27
+3b5b4 4 256 82
+3b5b8 14 354 27
+3b5cc 20 354 27
+3b5ec 8 354 27
+3b5f4 c 302 82
+3b600 18 354 27
+3b618 8 256 82
+3b620 8 356 27
+3b628 4 357 27
+3b62c 8 359 27
+3b634 14 363 27
+3b648 1c 368 27
+3b664 c 370 27
+3b670 4 373 27
+3b674 4 374 27
+3b678 4 377 27
+3b67c 4 373 27
+3b680 4 374 27
+3b684 8 375 27
+3b68c 1c 377 27
+3b6a8 4 377 27
+3b6ac 10 377 27
+3b6bc 8 256 82
+3b6c4 8 392 27
+3b6cc 4 256 82
+3b6d0 c 383 27
+3b6dc 8 387 27
+3b6e4 10 390 27
+3b6f4 14 392 27
+3b708 4 394 27
+3b70c 18 395 27
+3b724 4 1139 87
+3b728 4 395 27
+3b72c 4 277 82
+3b730 4 395 27
+3b734 24 395 27
+3b758 1c 395 27
+3b774 8 395 27
+3b77c c 395 27
+3b788 8 85 79
+3b790 8 395 27
+3b798 8 156 132
+3b7a0 8 256 82
+3b7a8 28 156 132
+3b7d0 28 429 27
+3b7f8 4 377 27
+3b7fc 8 378 27
+3b804 c 1512 82
+3b810 4 377 27
+3b814 4 1512 82
+3b818 4 378 27
+3b81c 8 1512 82
+3b824 4 378 27
+3b828 4 1512 82
+3b82c 8 378 27
+3b834 4 302 82
+3b838 4 378 27
+3b83c 8 302 82
+3b844 18 378 27
+3b85c 8 378 27
+3b864 c 378 27
+3b870 8 85 79
+3b878 c 378 27
+3b884 4 256 82
+3b888 4 1139 87
+3b88c 4 256 82
+3b890 c 379 27
+3b89c 4 277 82
+3b8a0 4 1139 87
+3b8a4 4 379 27
+3b8a8 20 379 27
+3b8c8 4 379 27
+3b8cc 4 379 27
+3b8d0 4 379 27
+3b8d4 1c 379 27
+3b8f0 8 379 27
+3b8f8 c 379 27
+3b904 8 85 79
+3b90c 8 379 27
+3b914 8 156 132
+3b91c c 256 82
+3b928 8 381 27
+3b930 4 256 82
+3b934 1c 381 27
+3b950 4 381 27
+3b954 c 381 27
+3b960 4 381 27
+3b964 8 382 27
+3b96c 8 1481 82
+3b974 4 381 27
+3b978 4 382 27
+3b97c 4 1481 82
+3b980 c 1482 82
+3b98c 1c 1382 82
+3b9a8 24 1471 82
+3b9cc 18 156 132
+3b9e4 10 382 27
+3b9f4 c 302 82
+3ba00 18 382 27
+3ba18 8 382 27
+3ba20 c 382 27
+3ba2c 8 85 79
+3ba34 8 382 27
+3ba3c 8 256 82
+3ba44 8 397 27
+3ba4c 4 1552 82
+3ba50 4 397 27
+3ba54 4 400 27
+3ba58 c 400 27
+3ba64 4 400 27
+3ba68 1c 1552 82
+3ba84 8 400 27
+3ba8c c 302 82
+3ba98 18 400 27
+3bab0 8 400 27
+3bab8 c 400 27
+3bac4 8 85 79
+3bacc c 400 27
+3bad8 8 256 82
+3bae0 28 401 27
+3bb08 c 302 82
+3bb14 18 401 27
+3bb2c 4 256 82
+3bb30 4 1139 87
+3bb34 4 256 82
+3bb38 c 403 27
+3bb44 8 404 27
+3bb4c 4 277 82
+3bb50 4 404 27
+3bb54 4 1139 87
+3bb58 4 404 27
+3bb5c 20 404 27
+3bb7c 4 404 27
+3bb80 4 404 27
+3bb84 18 404 27
+3bb9c 8 256 82
+3bba4 8 407 27
+3bbac 4 277 82
+3bbb0 4 407 27
+3bbb4 4 1139 87
+3bbb8 8 277 82
+3bbc0 4 408 27
+3bbc4 20 408 27
+3bbe4 4 408 27
+3bbe8 4 408 27
+3bbec 18 408 27
+3bc04 4 408 27
+3bc08 4 408 27
+3bc0c 8 408 27
+3bc14 c 408 27
+3bc20 8 85 79
+3bc28 8 408 27
+3bc30 8 156 132
+3bc38 14 256 82
+3bc4c 10 409 27
+3bc5c 8 410 27
+3bc64 8 410 27
+3bc6c 4 409 27
+3bc70 8 410 27
+3bc78 20 410 27
+3bc98 8 156 132
+3bca0 8 410 27
+3bca8 4 302 82
+3bcac 4 410 27
+3bcb0 8 302 82
+3bcb8 18 410 27
+3bcd0 8 410 27
+3bcd8 c 410 27
+3bce4 8 85 79
+3bcec 8 410 27
+3bcf4 4 256 82
+3bcf8 4 412 27
+3bcfc c 256 82
+3bd08 c 412 27
+3bd14 c 414 27
+3bd20 4 1139 87
+3bd24 4 414 27
+3bd28 4 277 82
+3bd2c 4 414 27
+3bd30 24 414 27
+3bd54 4 414 27
+3bd58 4 414 27
+3bd5c 4 414 27
+3bd60 1c 414 27
+3bd7c 8 414 27
+3bd84 c 414 27
+3bd90 8 85 79
+3bd98 8 414 27
+3bda0 8 156 132
+3bda8 4 256 82
+3bdac 4 418 27
+3bdb0 8 256 82
+3bdb8 10 418 27
+3bdc8 10 419 27
+3bdd8 14 962 131
+3bdec 4 422 27
+3bdf0 4 423 27
+3bdf4 4 422 27
+3bdf8 c 423 27
+3be04 4 452 131
+3be08 4 428 27
+3be0c 4 452 131
+3be10 10 428 27
+3be20 4 1512 82
+3be24 4 428 27
+3be28 20 1512 82
+3be48 8 156 132
+3be50 8 428 27
+3be58 4 302 82
+3be5c 4 428 27
+3be60 8 302 82
+3be68 18 428 27
+3be80 8 428 27
+3be88 c 428 27
+3be94 8 85 79
+3be9c 8 428 27
+3bea4 8 256 82
+3beac 1c 156 132
+FUNC 3bec8 3ac 0 MinidumpWriterTest_InvalidStackPointer_Test::TestBody
+3bec8 4 504 27
+3becc 4 506 27
+3bed0 10 504 27
+3bee0 4 506 27
+3bee4 8 504 27
+3beec 8 506 27
+3bef4 8 504 27
+3befc c 506 27
+3bf08 4 506 27
+3bf0c c 506 27
+3bf18 20 506 27
+3bf38 8 506 27
+3bf40 c 302 82
+3bf4c 18 506 27
+3bf64 8 506 27
+3bf6c c 506 27
+3bf78 8 85 79
+3bf80 8 256 82
+3bf88 8 508 27
+3bf90 4 509 27
+3bf94 8 510 27
+3bf9c 18 512 27
+3bfb4 4 512 27
+3bfb8 c 512 27
+3bfc4 c 513 27
+3bfd0 8 514 27
+3bfd8 4 516 27
+3bfdc c 523 27
+3bfe8 4 1552 82
+3bfec 4 516 27
+3bff0 4 523 27
+3bff4 4 516 27
+3bff8 10 523 27
+3c008 20 1552 82
+3c028 8 523 27
+3c030 c 302 82
+3c03c 18 523 27
+3c054 8 523 27
+3c05c c 523 27
+3c068 8 85 79
+3c070 8 523 27
+3c078 10 256 82
+3c088 4 546 27
+3c08c 4 1139 87
+3c090 4 256 82
+3c094 4 524 27
+3c098 4 530 27
+3c09c 4 538 27
+3c0a0 8 546 27
+3c0a8 14 547 27
+3c0bc 18 550 27
+3c0d4 4 277 82
+3c0d8 4 550 27
+3c0dc 4 1139 87
+3c0e0 4 550 27
+3c0e4 20 550 27
+3c104 4 550 27
+3c108 4 550 27
+3c10c 1c 550 27
+3c128 8 550 27
+3c130 c 550 27
+3c13c 8 85 79
+3c144 8 550 27
+3c14c 8 156 132
+3c154 10 256 82
+3c164 4 1139 87
+3c168 4 256 82
+3c16c c 553 27
+3c178 8 554 27
+3c180 4 277 82
+3c184 4 554 27
+3c188 4 1139 87
+3c18c 4 554 27
+3c190 20 554 27
+3c1b0 4 554 27
+3c1b4 4 554 27
+3c1b8 4 554 27
+3c1bc 1c 554 27
+3c1d8 8 554 27
+3c1e0 c 554 27
+3c1ec 8 85 79
+3c1f4 8 554 27
+3c1fc 8 156 132
+3c204 1c 256 82
+3c220 8 579 27
+3c228 8 579 27
+3c230 8 156 132
+3c238 8 579 27
+3c240 10 156 132
+3c250 24 580 27
+FUNC 3c274 790 0 MinidumpWriterTest_AdditionalMemory_Test::TestBody
+3c274 4 432 27
+3c278 4 434 27
+3c27c 10 432 27
+3c28c 4 434 27
+3c290 8 432 27
+3c298 4 434 27
+3c29c 4 434 27
+3c2a0 8 432 27
+3c2a8 18 434 27
+3c2c0 20 434 27
+3c2e0 8 434 27
+3c2e8 c 302 82
+3c2f4 18 434 27
+3c30c 8 434 27
+3c314 c 434 27
+3c320 8 85 79
+3c328 8 434 27
+3c330 c 256 82
+3c33c 4 438 27
+3c340 4 256 82
+3c344 c 438 27
+3c350 c 441 27
+3c35c 4 442 27
+3c360 4 1139 87
+3c364 4 442 27
+3c368 8 277 82
+3c370 8 256 82
+3c378 4 446 27
+3c37c 4 447 27
+3c380 c 446 27
+3c38c c 447 27
+3c398 8 446 27
+3c3a0 8 450 27
+3c3a8 4 451 27
+3c3ac 4 452 27
+3c3b0 4 454 27
+3c3b4 8 452 27
+3c3bc 18 454 27
+3c3d4 4 454 27
+3c3d8 c 454 27
+3c3e4 c 455 27
+3c3f0 8 456 27
+3c3f8 4 458 27
+3c3fc c 465 27
+3c408 8 1552 82
+3c410 4 458 27
+3c414 4 465 27
+3c418 4 458 27
+3c41c 10 465 27
+3c42c 1c 1552 82
+3c448 8 465 27
+3c450 c 302 82
+3c45c 18 465 27
+3c474 8 465 27
+3c47c c 465 27
+3c488 8 85 79
+3c490 8 465 27
+3c498 10 256 82
+3c4a8 4 468 27
+3c4ac 4 469 27
+3c4b0 4 256 82
+3c4b4 4 466 27
+3c4b8 8 468 27
+3c4c0 14 469 27
+3c4d4 8 470 27
+3c4dc 4 211 116
+3c4e0 4 478 27
+3c4e4 4 211 116
+3c4e8 4 212 116
+3c4ec 4 211 116
+3c4f0 4 478 27
+3c4f4 8 306 101
+3c4fc 4 307 101
+3c500 4 211 116
+3c504 4 212 116
+3c508 4 307 101
+3c50c 4 119 103
+3c510 4 307 101
+3c514 4 119 103
+3c518 8 119 103
+3c520 8 427 116
+3c528 4 277 82
+3c52c c 480 27
+3c538 4 427 116
+3c53c 4 1139 87
+3c540 8 428 116
+3c548 8 429 116
+3c550 4 430 116
+3c554 4 431 116
+3c558 c 480 27
+3c564 4 277 82
+3c568 4 480 27
+3c56c 4 1139 87
+3c570 4 480 27
+3c574 20 480 27
+3c594 4 480 27
+3c598 4 480 27
+3c59c 1c 480 27
+3c5b8 8 480 27
+3c5c0 c 480 27
+3c5cc 8 85 79
+3c5d4 8 480 27
+3c5dc 8 156 132
+3c5e4 10 256 82
+3c5f4 4 1139 87
+3c5f8 4 256 82
+3c5fc c 484 27
+3c608 8 485 27
+3c610 4 277 82
+3c614 4 485 27
+3c618 4 1139 87
+3c61c 4 485 27
+3c620 20 485 27
+3c640 4 485 27
+3c644 4 485 27
+3c648 18 485 27
+3c660 8 256 82
+3c668 8 487 27
+3c670 4 277 82
+3c674 4 487 27
+3c678 4 1139 87
+3c67c 8 277 82
+3c684 4 488 27
+3c688 20 488 27
+3c6a8 4 488 27
+3c6ac 4 488 27
+3c6b0 18 488 27
+3c6c8 4 256 82
+3c6cc 4 490 27
+3c6d0 4 256 82
+3c6d4 14 490 27
+3c6e8 4 277 82
+3c6ec 4 490 27
+3c6f0 4 1139 87
+3c6f4 8 277 82
+3c6fc 4 491 27
+3c700 20 491 27
+3c720 4 491 27
+3c724 4 491 27
+3c728 18 491 27
+3c740 4 491 27
+3c744 4 491 27
+3c748 8 491 27
+3c750 c 491 27
+3c75c 8 85 79
+3c764 8 491 27
+3c76c 8 156 132
+3c774 14 256 82
+3c788 14 493 27
+3c79c 20 1512 82
+3c7bc 8 493 27
+3c7c4 4 302 82
+3c7c8 4 493 27
+3c7cc 8 302 82
+3c7d4 18 493 27
+3c7ec 8 493 27
+3c7f4 c 493 27
+3c800 8 85 79
+3c808 8 493 27
+3c810 4 256 82
+3c814 4 494 27
+3c818 c 256 82
+3c824 18 494 27
+3c83c 10 1481 82
+3c84c c 1482 82
+3c858 18 1382 82
+3c870 24 1471 82
+3c894 14 156 132
+3c8a8 8 494 27
+3c8b0 4 302 82
+3c8b4 8 494 27
+3c8bc 4 302 82
+3c8c0 10 494 27
+3c8d0 4 494 27
+3c8d4 4 494 27
+3c8d8 8 494 27
+3c8e0 c 494 27
+3c8ec 8 85 79
+3c8f4 8 494 27
+3c8fc 4 256 82
+3c900 4 497 27
+3c904 4 256 82
+3c908 4 1552 82
+3c90c 4 256 82
+3c910 10 497 27
+3c920 c 497 27
+3c92c 4 497 27
+3c930 1c 1552 82
+3c94c 8 497 27
+3c954 c 302 82
+3c960 18 497 27
+3c978 8 497 27
+3c980 c 497 27
+3c98c 8 85 79
+3c994 8 497 27
+3c99c 8 256 82
+3c9a4 8 499 27
+3c9ac 14 500 27
+3c9c0 10 205 116
+3c9d0 10 156 132
+3c9e0 24 501 27
+FUNC 3ca04 113c 0 MinidumpWriterTest_MinidumpSizeLimit_Test::TestBody
+3ca04 4 583 27
+3ca08 4 587 27
+3ca0c 10 583 27
+3ca1c 4 587 27
+3ca20 c 583 27
+3ca2c 10 587 27
+3ca3c 8 583 27
+3ca44 8 589 27
+3ca4c 4 583 27
+3ca50 8 587 27
+3ca58 8 589 27
+3ca60 10 590 27
+3ca70 20 591 27
+3ca90 8 591 27
+3ca98 14 333 122
+3caac c 591 27
+3cab8 8 85 79
+3cac0 8 591 27
+3cac8 4 591 27
+3cacc 20 596 27
+3caec 20 596 27
+3cb0c 8 596 27
+3cb14 c 302 82
+3cb20 18 596 27
+3cb38 8 596 27
+3cb40 c 596 27
+3cb4c 8 85 79
+3cb54 8 596 27
+3cb5c 10 256 82
+3cb6c 8 598 27
+3cb74 4 599 27
+3cb78 8 601 27
+3cb80 10 605 27
+3cb90 18 610 27
+3cba8 8 612 27
+3cbb0 4 617 27
+3cbb4 4 612 27
+3cbb8 24 1512 82
+3cbdc 4 617 27
+3cbe0 8 618 27
+3cbe8 8 619 27
+3cbf0 1c 621 27
+3cc0c 4 621 27
+3cc10 10 621 27
+3cc20 4 256 82
+3cc24 8 1139 87
+3cc2c 4 256 82
+3cc30 8 623 27
+3cc38 4 277 82
+3cc3c 4 1139 87
+3cc40 4 623 27
+3cc44 24 623 27
+3cc68 1c 623 27
+3cc84 8 623 27
+3cc8c c 623 27
+3cc98 8 85 79
+3cca0 8 623 27
+3cca8 8 156 132
+3ccb0 14 256 82
+3ccc4 4 639 27
+3ccc8 8 658 27
+3ccd0 c 658 27
+3ccdc 8 658 27
+3cce4 8 665 27
+3ccec 8 156 132
+3ccf4 4 673 27
+3ccf8 8 676 27
+3cd00 4 673 27
+3cd04 c 676 27
+3cd10 4 211 116
+3cd14 1c 677 27
+3cd30 4 212 116
+3cd34 4 211 116
+3cd38 4 677 27
+3cd3c 4 212 116
+3cd40 4 677 27
+3cd44 4 1139 87
+3cd48 4 277 82
+3cd4c 10 205 116
+3cd5c 8 677 27
+3cd64 24 677 27
+3cd88 1c 677 27
+3cda4 8 677 27
+3cdac c 677 27
+3cdb8 8 85 79
+3cdc0 8 677 27
+3cdc8 8 156 132
+3cdd0 8 256 82
+3cdd8 18 156 132
+3cdf0 2c 754 27
+3ce1c 8 622 27
+3ce24 4 1512 82
+3ce28 4 621 27
+3ce2c 10 1512 82
+3ce3c 4 621 27
+3ce40 4 1512 82
+3ce44 10 622 27
+3ce54 c 302 82
+3ce60 18 622 27
+3ce78 8 256 82
+3ce80 1c 625 27
+3ce9c 1c 1512 82
+3ceb8 8 625 27
+3cec0 c 302 82
+3cecc 18 625 27
+3cee4 8 625 27
+3ceec c 625 27
+3cef8 8 85 79
+3cf00 8 625 27
+3cf08 10 256 82
+3cf18 8 615 27
+3cf20 4 628 27
+3cf24 4 646 27
+3cf28 4 628 27
+3cf2c 10 633 27
+3cf3c 8 640 27
+3cf44 14 645 27
+3cf58 4 211 116
+3cf5c 1c 646 27
+3cf78 4 212 116
+3cf7c 4 211 116
+3cf80 4 212 116
+3cf84 4 646 27
+3cf88 4 277 82
+3cf8c 4 205 116
+3cf90 4 1139 87
+3cf94 c 205 116
+3cfa0 8 646 27
+3cfa8 24 646 27
+3cfcc 1c 646 27
+3cfe8 8 646 27
+3cff0 c 646 27
+3cffc 8 85 79
+3d004 8 646 27
+3d00c 8 156 132
+3d014 c 256 82
+3d020 4 1552 82
+3d024 4 256 82
+3d028 4 650 27
+3d02c c 650 27
+3d038 4 650 27
+3d03c 20 1552 82
+3d05c c 650 27
+3d068 c 302 82
+3d074 18 650 27
+3d08c 8 650 27
+3d094 c 650 27
+3d0a0 8 85 79
+3d0a8 8 650 27
+3d0b0 c 256 82
+3d0bc 4 651 27
+3d0c0 4 256 82
+3d0c4 28 651 27
+3d0ec c 302 82
+3d0f8 18 651 27
+3d110 4 256 82
+3d114 4 652 27
+3d118 4 1139 87
+3d11c 4 256 82
+3d120 4 652 27
+3d124 4 654 27
+3d128 4 652 27
+3d12c 8 654 27
+3d134 8 655 27
+3d13c 4 277 82
+3d140 4 655 27
+3d144 4 1139 87
+3d148 4 655 27
+3d14c 20 655 27
+3d16c 4 655 27
+3d170 4 655 27
+3d174 18 655 27
+3d18c 8 256 82
+3d194 8 656 27
+3d19c 4 277 82
+3d1a0 4 656 27
+3d1a4 4 1139 87
+3d1a8 8 277 82
+3d1b0 4 657 27
+3d1b4 20 657 27
+3d1d4 4 657 27
+3d1d8 4 657 27
+3d1dc 1c 657 27
+3d1f8 18 659 27
+3d210 4 271 65
+3d214 4 659 27
+3d218 8 271 65
+3d220 4 1139 87
+3d224 4 271 65
+3d228 8 660 27
+3d230 4 277 82
+3d234 4 660 27
+3d238 20 660 27
+3d258 4 660 27
+3d25c 4 660 27
+3d260 14 660 27
+3d274 8 663 27
+3d27c c 663 27
+3d288 c 663 27
+3d294 8 85 79
+3d29c 8 663 27
+3d2a4 8 156 132
+3d2ac 14 256 82
+3d2c0 14 662 27
+3d2d4 4 663 27
+3d2d8 4 662 27
+3d2dc 4 1139 87
+3d2e0 4 663 27
+3d2e4 4 277 82
+3d2e8 4 663 27
+3d2ec 20 663 27
+3d30c 4 663 27
+3d310 4 663 27
+3d314 18 663 27
+3d32c 8 256 82
+3d334 4 658 27
+3d338 4 256 82
+3d33c 24 664 27
+3d360 4 256 82
+3d364 4 681 27
+3d368 4 256 82
+3d36c 4 681 27
+3d370 c 681 27
+3d37c 4 681 27
+3d380 24 1552 82
+3d3a4 8 681 27
+3d3ac c 302 82
+3d3b8 18 681 27
+3d3d0 4 256 82
+3d3d4 4 1512 82
+3d3d8 4 256 82
+3d3dc 30 1512 82
+3d40c 8 686 27
+3d414 c 302 82
+3d420 18 686 27
+3d438 8 686 27
+3d440 c 686 27
+3d44c 8 85 79
+3d454 c 686 27
+3d460 8 256 82
+3d468 8 156 132
+3d470 c 705 27
+3d47c 4 709 27
+3d480 c 699 27
+3d48c c 709 27
+3d498 8 699 27
+3d4a0 4 709 27
+3d4a4 20 710 27
+3d4c4 4 211 116
+3d4c8 4 212 116
+3d4cc 4 211 116
+3d4d0 4 212 116
+3d4d4 4 710 27
+3d4d8 4 277 82
+3d4dc 4 205 116
+3d4e0 4 1139 87
+3d4e4 c 205 116
+3d4f0 8 710 27
+3d4f8 24 710 27
+3d51c 1c 710 27
+3d538 8 710 27
+3d540 c 710 27
+3d54c 8 85 79
+3d554 8 710 27
+3d55c 8 156 132
+3d564 10 256 82
+3d574 4 714 27
+3d578 10 714 27
+3d588 4 714 27
+3d58c 1c 1552 82
+3d5a8 8 714 27
+3d5b0 c 302 82
+3d5bc 18 714 27
+3d5d4 8 714 27
+3d5dc c 714 27
+3d5e8 8 85 79
+3d5f0 8 714 27
+3d5f8 14 256 82
+3d60c 24 715 27
+3d630 c 302 82
+3d63c 18 715 27
+3d654 c 256 82
+3d660 10 1619 82
+3d670 10 1619 82
+3d680 2c 1583 82
+3d6ac 10 1583 82
+3d6bc c 1583 82
+3d6c8 c 1583 82
+3d6d4 8 1583 82
+3d6dc c 1583 82
+3d6e8 c 1583 82
+3d6f4 10 1584 82
+3d704 c 1382 82
+3d710 c 1584 82
+3d71c 10 1585 82
+3d72c c 1382 82
+3d738 10 1585 82
+3d748 8 1585 82
+3d750 10 156 132
+3d760 8 256 82
+3d768 8 719 27
+3d770 c 302 82
+3d77c 18 719 27
+3d794 8 719 27
+3d79c c 719 27
+3d7a8 8 85 79
+3d7b0 8 719 27
+3d7b8 4 256 82
+3d7bc 4 1139 87
+3d7c0 4 256 82
+3d7c4 c 721 27
+3d7d0 8 722 27
+3d7d8 4 277 82
+3d7dc 4 722 27
+3d7e0 4 1139 87
+3d7e4 4 722 27
+3d7e8 20 722 27
+3d808 4 722 27
+3d80c 4 722 27
+3d810 18 722 27
+3d828 8 256 82
+3d830 8 723 27
+3d838 4 277 82
+3d83c 4 723 27
+3d840 4 1139 87
+3d844 8 277 82
+3d84c 4 724 27
+3d850 20 724 27
+3d870 4 724 27
+3d874 4 724 27
+3d878 1c 724 27
+3d894 8 724 27
+3d89c c 724 27
+3d8a8 8 85 79
+3d8b0 8 724 27
+3d8b8 8 156 132
+3d8c0 4 256 82
+3d8c4 4 725 27
+3d8c8 4 256 82
+3d8cc 4 726 27
+3d8d0 4 725 27
+3d8d4 4 726 27
+3d8d8 c 256 82
+3d8e4 20 732 27
+3d904 c 726 27
+3d910 4 726 27
+3d914 c 726 27
+3d920 c 726 27
+3d92c 14 727 27
+3d940 4 271 65
+3d944 4 727 27
+3d948 8 271 65
+3d950 4 1139 87
+3d954 4 271 65
+3d958 8 728 27
+3d960 4 277 82
+3d964 4 728 27
+3d968 24 728 27
+3d98c 4 728 27
+3d990 4 728 27
+3d994 14 728 27
+3d9a8 8 731 27
+3d9b0 8 731 27
+3d9b8 c 731 27
+3d9c4 8 85 79
+3d9cc 8 731 27
+3d9d4 8 156 132
+3d9dc 20 256 82
+3d9fc 14 730 27
+3da10 4 731 27
+3da14 4 730 27
+3da18 4 1139 87
+3da1c 4 731 27
+3da20 4 277 82
+3da24 4 731 27
+3da28 24 731 27
+3da4c 4 731 27
+3da50 4 731 27
+3da54 18 731 27
+3da6c 4 748 27
+3da70 4 1619 82
+3da74 4 748 27
+3da78 4 1619 82
+3da7c 4 748 27
+3da80 8 1619 82
+3da88 8 1619 82
+3da90 24 1619 82
+3dab4 8 748 27
+3dabc c 302 82
+3dac8 18 748 27
+3dae0 8 748 27
+3dae8 c 749 27
+3daf4 8 85 79
+3dafc 8 748 27
+3db04 8 256 82
+3db0c 8 749 27
+3db14 8 156 132
+3db1c c 753 27
+3db28 8 753 27
+3db30 10 156 132
+FUNC 3db40 390 0 google_breakpad::GetHelperBinary
+3db40 4 42 28
+3db44 4 124 132
+3db48 10 42 28
+3db58 4 120 132
+3db5c 8 42 28
+3db64 4 120 132
+3db68 4 42 28
+3db6c 4 124 132
+3db70 4 120 132
+3db74 8 481 101
+3db7c 8 124 132
+3db84 4 101 103
+3db88 10 44 28
+3db98 4 45 28
+3db9c c 46 28
+3dba8 4 120 132
+3dbac 8 400 131
+3dbb4 4 481 101
+3dbb8 4 400 131
+3dbbc 10 124 132
+3dbcc 4 101 103
+3dbd0 10 517 131
+3dbe0 c 74 132
+3dbec 10 74 132
+3dbfc c 74 132
+3dc08 c 472 131
+3dc14 10 473 131
+3dc24 4 356 101
+3dc28 4 346 101
+3dc2c 4 347 101
+3dc30 8 348 101
+3dc38 4 352 101
+3dc3c 4 353 101
+3dc40 c 120 137
+3dc4c 4 479 131
+3dc50 8 120 137
+3dc58 14 148 137
+3dc6c 4 101 103
+3dc70 8 478 131
+3dc78 4 160 132
+3dc7c 4 164 132
+3dc80 8 165 132
+3dc88 4 482 131
+3dc8c 8 232 140
+3dc94 8 148 137
+3dc9c 4 483 131
+3dca0 c 148 137
+3dcac 4 101 103
+3dcb0 c 485 131
+3dcbc 10 349 131
+3dccc 14 156 132
+3dce0 18 60 49
+3dcf8 4 50 28
+3dcfc 14 51 28
+3dd10 10 53 28
+3dd20 10 349 131
+3dd30 10 156 132
+3dd40 8 471 130
+3dd48 8 162 99
+3dd50 c 164 99
+3dd5c c 165 99
+3dd68 c 168 99
+3dd74 8 81 113
+3dd7c c 171 99
+3dd88 8 81 113
+3dd90 c 174 99
+3dd9c 8 81 113
+3dda4 c 164 99
+3ddb0 4 152 113
+3ddb4 1c 178 99
+3ddd0 c 180 99
+3dddc 4 81 113
+3dde0 c 183 99
+3ddec 4 81 113
+3ddf0 10 186 99
+3de00 4 178 99
+3de04 8 478 130
+3de0c 8 478 130
+3de14 8 55 28
+3de1c 18 56 28
+3de34 4 58 28
+3de38 8 789 131
+3de40 c 604 130
+3de4c c 791 131
+3de58 20 530 131
+3de78 4 379 131
+3de7c 4 112 132
+3de80 4 378 131
+3de84 4 481 101
+3de88 8 379 131
+3de90 10 148 137
+3dea0 4 380 131
+3dea4 4 101 103
+3dea8 8 156 132
+3deb0 20 64 28
+FUNC 3ded0 4 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_EmptyValue_Test>::~TestFactoryImpl
+3ded0 4 484 85
+FUNC 3ded4 4 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_FieldWithSpaces_Test>::~TestFactoryImpl
+3ded4 4 484 85
+FUNC 3ded8 4 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_SkipTwoEmptyLines_Test>::~TestFactoryImpl
+3ded8 4 484 85
+FUNC 3dedc 4 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_SkipEmptyField_Test>::~TestFactoryImpl
+3dedc 4 484 85
+FUNC 3dee0 4 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_SkipOneEmptyLine_Test>::~TestFactoryImpl
+3dee0 4 484 85
+FUNC 3dee4 4 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_SkipMalformedLine_Test>::~TestFactoryImpl
+3dee4 4 484 85
+FUNC 3dee8 4 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_TwoLinesTerminated_Test>::~TestFactoryImpl
+3dee8 4 484 85
+FUNC 3deec 4 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_OneLine_Test>::~TestFactoryImpl
+3deec 4 484 85
+FUNC 3def0 4 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_OneLineTerminated_Test>::~TestFactoryImpl
+3def0 4 484 85
+FUNC 3def4 4 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_EmptyFile_Test>::~TestFactoryImpl
+3def4 4 484 85
+FUNC 3def8 4 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_EmptyFile_Test>::~TestFactoryImpl
+3def8 4 484 85
+FUNC 3defc 4 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_OneLineTerminated_Test>::~TestFactoryImpl
+3defc 4 484 85
+FUNC 3df00 4 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_OneLine_Test>::~TestFactoryImpl
+3df00 4 484 85
+FUNC 3df04 4 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_TwoLinesTerminated_Test>::~TestFactoryImpl
+3df04 4 484 85
+FUNC 3df08 4 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_SkipMalformedLine_Test>::~TestFactoryImpl
+3df08 4 484 85
+FUNC 3df0c 4 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_SkipOneEmptyLine_Test>::~TestFactoryImpl
+3df0c 4 484 85
+FUNC 3df10 4 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_SkipEmptyField_Test>::~TestFactoryImpl
+3df10 4 484 85
+FUNC 3df14 4 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_SkipTwoEmptyLines_Test>::~TestFactoryImpl
+3df14 4 484 85
+FUNC 3df18 4 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_FieldWithSpaces_Test>::~TestFactoryImpl
+3df18 4 484 85
+FUNC 3df1c 4 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_EmptyValue_Test>::~TestFactoryImpl
+3df1c 4 484 85
+FUNC 3df20 14 0 ProcCpuInfoReaderTest_EmptyValue_Test::~ProcCpuInfoReaderTest_EmptyValue_Test
+3df20 14 186 30
+FUNC 3df34 24 0 ProcCpuInfoReaderTest_EmptyValue_Test::~ProcCpuInfoReaderTest_EmptyValue_Test
+3df34 c 186 30
+3df40 8 186 30
+3df48 4 186 30
+3df4c 8 186 30
+3df54 4 186 30
+FUNC 3df58 14 0 ProcCpuInfoReaderTest_FieldWithSpaces_Test::~ProcCpuInfoReaderTest_FieldWithSpaces_Test
+3df58 14 173 30
+FUNC 3df6c 24 0 ProcCpuInfoReaderTest_FieldWithSpaces_Test::~ProcCpuInfoReaderTest_FieldWithSpaces_Test
+3df6c c 173 30
+3df78 8 173 30
+3df80 4 173 30
+3df84 8 173 30
+3df8c 4 173 30
+FUNC 3df90 14 0 ProcCpuInfoReaderTest_SkipTwoEmptyLines_Test::~ProcCpuInfoReaderTest_SkipTwoEmptyLines_Test
+3df90 14 156 30
+FUNC 3dfa4 24 0 ProcCpuInfoReaderTest_SkipTwoEmptyLines_Test::~ProcCpuInfoReaderTest_SkipTwoEmptyLines_Test
+3dfa4 c 156 30
+3dfb0 8 156 30
+3dfb8 4 156 30
+3dfbc 8 156 30
+3dfc4 4 156 30
+FUNC 3dfc8 14 0 ProcCpuInfoReaderTest_SkipEmptyField_Test::~ProcCpuInfoReaderTest_SkipEmptyField_Test
+3dfc8 14 143 30
+FUNC 3dfdc 24 0 ProcCpuInfoReaderTest_SkipEmptyField_Test::~ProcCpuInfoReaderTest_SkipEmptyField_Test
+3dfdc c 143 30
+3dfe8 8 143 30
+3dff0 4 143 30
+3dff4 8 143 30
+3dffc 4 143 30
+FUNC 3e000 14 0 ProcCpuInfoReaderTest_SkipOneEmptyLine_Test::~ProcCpuInfoReaderTest_SkipOneEmptyLine_Test
+3e000 14 130 30
+FUNC 3e014 24 0 ProcCpuInfoReaderTest_SkipOneEmptyLine_Test::~ProcCpuInfoReaderTest_SkipOneEmptyLine_Test
+3e014 c 130 30
+3e020 8 130 30
+3e028 4 130 30
+3e02c 8 130 30
+3e034 4 130 30
+FUNC 3e038 14 0 ProcCpuInfoReaderTest_SkipMalformedLine_Test::~ProcCpuInfoReaderTest_SkipMalformedLine_Test
+3e038 14 117 30
+FUNC 3e04c 24 0 ProcCpuInfoReaderTest_SkipMalformedLine_Test::~ProcCpuInfoReaderTest_SkipMalformedLine_Test
+3e04c c 117 30
+3e058 8 117 30
+3e060 4 117 30
+3e064 8 117 30
+3e06c 4 117 30
+FUNC 3e070 14 0 ProcCpuInfoReaderTest_TwoLinesTerminated_Test::~ProcCpuInfoReaderTest_TwoLinesTerminated_Test
+3e070 14 100 30
+FUNC 3e084 24 0 ProcCpuInfoReaderTest_TwoLinesTerminated_Test::~ProcCpuInfoReaderTest_TwoLinesTerminated_Test
+3e084 c 100 30
+3e090 8 100 30
+3e098 4 100 30
+3e09c 8 100 30
+3e0a4 4 100 30
+FUNC 3e0a8 14 0 ProcCpuInfoReaderTest_OneLine_Test::~ProcCpuInfoReaderTest_OneLine_Test
+3e0a8 14 85 30
+FUNC 3e0bc 24 0 ProcCpuInfoReaderTest_OneLine_Test::~ProcCpuInfoReaderTest_OneLine_Test
+3e0bc c 85 30
+3e0c8 8 85 30
+3e0d0 4 85 30
+3e0d4 8 85 30
+3e0dc 4 85 30
+FUNC 3e0e0 14 0 ProcCpuInfoReaderTest_OneLineTerminated_Test::~ProcCpuInfoReaderTest_OneLineTerminated_Test
+3e0e0 14 72 30
+FUNC 3e0f4 24 0 ProcCpuInfoReaderTest_OneLineTerminated_Test::~ProcCpuInfoReaderTest_OneLineTerminated_Test
+3e0f4 c 72 30
+3e100 8 72 30
+3e108 4 72 30
+3e10c 8 72 30
+3e114 4 72 30
+FUNC 3e118 14 0 ProcCpuInfoReaderTest_EmptyFile_Test::~ProcCpuInfoReaderTest_EmptyFile_Test
+3e118 14 63 30
+FUNC 3e12c 24 0 ProcCpuInfoReaderTest_EmptyFile_Test::~ProcCpuInfoReaderTest_EmptyFile_Test
+3e12c c 63 30
+3e138 8 63 30
+3e140 4 63 30
+3e144 8 63 30
+3e14c 4 63 30
+FUNC 3e150 3c 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_EmptyValue_Test>::CreateTest
+3e150 10 486 85
+3e160 8 486 85
+3e168 8 186 30
+3e170 4 486 85
+3e174 c 186 30
+3e180 c 486 85
+FUNC 3e18c 3c 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_FieldWithSpaces_Test>::CreateTest
+3e18c 10 486 85
+3e19c 8 486 85
+3e1a4 8 173 30
+3e1ac 4 486 85
+3e1b0 c 173 30
+3e1bc c 486 85
+FUNC 3e1c8 3c 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_SkipTwoEmptyLines_Test>::CreateTest
+3e1c8 10 486 85
+3e1d8 8 486 85
+3e1e0 8 156 30
+3e1e8 4 486 85
+3e1ec c 156 30
+3e1f8 c 486 85
+FUNC 3e204 3c 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_SkipEmptyField_Test>::CreateTest
+3e204 10 486 85
+3e214 8 486 85
+3e21c 8 143 30
+3e224 4 486 85
+3e228 c 143 30
+3e234 c 486 85
+FUNC 3e240 3c 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_SkipOneEmptyLine_Test>::CreateTest
+3e240 10 486 85
+3e250 8 486 85
+3e258 8 130 30
+3e260 4 486 85
+3e264 c 130 30
+3e270 c 486 85
+FUNC 3e27c 3c 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_SkipMalformedLine_Test>::CreateTest
+3e27c 10 486 85
+3e28c 8 486 85
+3e294 8 117 30
+3e29c 4 486 85
+3e2a0 c 117 30
+3e2ac c 486 85
+FUNC 3e2b8 3c 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_TwoLinesTerminated_Test>::CreateTest
+3e2b8 10 486 85
+3e2c8 8 486 85
+3e2d0 8 100 30
+3e2d8 4 486 85
+3e2dc c 100 30
+3e2e8 c 486 85
+FUNC 3e2f4 3c 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_OneLine_Test>::CreateTest
+3e2f4 10 486 85
+3e304 8 486 85
+3e30c 8 85 30
+3e314 4 486 85
+3e318 c 85 30
+3e324 c 486 85
+FUNC 3e330 3c 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_OneLineTerminated_Test>::CreateTest
+3e330 10 486 85
+3e340 8 486 85
+3e348 8 72 30
+3e350 4 486 85
+3e354 c 72 30
+3e360 c 486 85
+FUNC 3e36c 3c 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_EmptyFile_Test>::CreateTest
+3e36c 10 486 85
+3e37c 8 486 85
+3e384 8 63 30
+3e38c 4 486 85
+3e390 c 63 30
+3e39c c 486 85
+FUNC 3e3a8 1cc 0 google_breakpad::ProcCpuInfoReader::GetNextField
+3e3a8 1c 54 29
+3e3c4 8 54 29
+3e3cc 4 118 16
+3e3d0 4 62 29
+3e3d4 4 99 16
+3e3d8 4 103 16
+3e3dc c 60 29
+3e3e8 8 118 16
+3e3f0 4 117 16
+3e3f4 4 118 16
+3e3f8 4 117 16
+3e3fc 8 118 16
+3e404 4 62 29
+3e408 8 66 16
+3e410 8 66 16
+3e418 4 66 16
+3e41c 14 69 16
+3e430 10 70 16
+3e440 c 71 16
+3e44c 8 78 16
+3e454 c 86 16
+3e460 4 90 16
+3e464 4 92 16
+3e468 4 86 16
+3e46c 4 90 16
+3e470 8 92 16
+3e478 4 98 16
+3e47c 4 3104 97
+3e480 4 98 16
+3e484 4 99 16
+3e488 14 3104 97
+3e49c 4 3104 97
+3e4a0 c 3104 97
+3e4ac 8 100 16
+3e4b4 4 102 16
+3e4b8 8 103 16
+3e4c0 10 105 16
+3e4d0 4 70 29
+3e4d4 4 68 29
+3e4d8 8 77 29
+3e4e0 4 70 29
+3e4e4 8 77 29
+3e4ec 4 83 29
+3e4f0 4 78 29
+3e4f4 8 84 29
+3e4fc 8 84 29
+3e504 4 84 29
+3e508 8 85 29
+3e510 8 66 29
+3e518 4 87 29
+3e51c 8 88 29
+3e524 8 92 29
+3e52c 8 92 29
+3e534 4 92 29
+3e538 8 93 29
+3e540 8 95 29
+3e548 4 99 29
+3e54c 4 102 29
+3e550 4 101 29
+3e554 20 104 29
+FUNC 3e574 ac 0 ScopedTestFile::ScopedTestFile
+3e574 10 56 30
+3e584 4 60 52
+3e588 4 56 30
+3e58c 4 60 52
+3e590 4 56 30
+3e594 4 60 52
+3e598 8 61 52
+3e5a0 c 62 52
+3e5ac 1c 109 52
+3e5c8 4 109 52
+3e5cc c 109 52
+3e5d8 8 110 52
+3e5e0 8 111 52
+3e5e8 c 112 52
+3e5f4 8 116 52
+3e5fc c 58 30
+3e608 8 116 52
+3e610 10 58 30
+FUNC 3e620 1ac 0 ProcCpuInfoReaderTest_EmptyFile_Test::TestBody
+3e620 4 63 30
+3e624 8 64 30
+3e62c c 63 30
+3e638 4 64 30
+3e63c 4 63 30
+3e640 8 64 30
+3e648 4 63 30
+3e64c 4 64 30
+3e650 4 277 82
+3e654 4 82 52
+3e658 8 1139 87
+3e660 8 82 52
+3e668 4 277 82
+3e66c 4 1139 87
+3e670 4 65 30
+3e674 20 65 30
+3e694 4 65 30
+3e698 4 65 30
+3e69c 1c 65 30
+3e6b8 8 65 30
+3e6c0 c 65 30
+3e6cc 8 85 79
+3e6d4 8 65 30
+3e6dc 8 156 132
+3e6e4 10 256 82
+3e6f4 8 49 16
+3e6fc 4 69 30
+3e700 4 49 16
+3e704 4 48 29
+3e708 4 49 16
+3e70c 4 48 29
+3e710 4 69 30
+3e714 4 1139 87
+3e718 c 69 30
+3e724 4 277 82
+3e728 4 1139 87
+3e72c 4 69 30
+3e730 20 69 30
+3e750 4 69 30
+3e754 4 69 30
+3e758 4 69 30
+3e75c 1c 69 30
+3e778 8 69 30
+3e780 c 69 30
+3e78c 8 85 79
+3e794 8 69 30
+3e79c 8 156 132
+3e7a4 8 256 82
+3e7ac 8 54 30
+3e7b4 18 70 30
+FUNC 3e7cc 2fc 0 ProcCpuInfoReaderTest_OneLineTerminated_Test::TestBody
+3e7cc 4 72 30
+3e7d0 8 73 30
+3e7d8 c 72 30
+3e7e4 4 73 30
+3e7e8 4 72 30
+3e7ec 4 73 30
+3e7f0 8 72 30
+3e7f8 4 73 30
+3e7fc 4 277 82
+3e800 4 82 52
+3e804 c 1139 87
+3e810 8 82 52
+3e818 4 277 82
+3e81c 4 1139 87
+3e820 4 74 30
+3e824 20 74 30
+3e844 4 74 30
+3e848 4 74 30
+3e84c 1c 74 30
+3e868 8 74 30
+3e870 c 74 30
+3e87c 8 85 79
+3e884 8 74 30
+3e88c c 156 132
+3e898 4 256 82
+3e89c 4 78 30
+3e8a0 4 1139 87
+3e8a4 4 256 82
+3e8a8 8 49 16
+3e8b0 4 78 30
+3e8b4 4 49 16
+3e8b8 4 48 29
+3e8bc 4 49 16
+3e8c0 4 48 29
+3e8c4 8 78 30
+3e8cc 4 277 82
+3e8d0 4 78 30
+3e8d4 4 1139 87
+3e8d8 4 78 30
+3e8dc 20 78 30
+3e8fc 4 78 30
+3e900 4 78 30
+3e904 18 78 30
+3e91c 8 256 82
+3e924 2c 79 30
+3e950 4 302 82
+3e954 4 79 30
+3e958 8 302 82
+3e960 18 79 30
+3e978 8 256 82
+3e980 24 80 30
+3e9a4 8 80 30
+3e9ac 4 302 82
+3e9b0 4 80 30
+3e9b4 8 302 82
+3e9bc 18 80 30
+3e9d4 8 80 30
+3e9dc c 80 30
+3e9e8 8 85 79
+3e9f0 8 80 30
+3e9f8 10 256 82
+3ea08 14 82 30
+3ea1c 4 1139 87
+3ea20 4 277 82
+3ea24 4 82 30
+3ea28 20 82 30
+3ea48 4 82 30
+3ea4c 4 82 30
+3ea50 18 82 30
+3ea68 4 82 30
+3ea6c 4 82 30
+3ea70 8 82 30
+3ea78 c 82 30
+3ea84 8 85 79
+3ea8c 8 82 30
+3ea94 8 156 132
+3ea9c 8 256 82
+3eaa4 8 54 30
+3eaac 1c 83 30
+FUNC 3eac8 420 0 ProcCpuInfoReaderTest_TwoLinesTerminated_Test::TestBody
+3eac8 4 100 30
+3eacc 8 101 30
+3ead4 c 100 30
+3eae0 4 101 30
+3eae4 4 100 30
+3eae8 4 101 30
+3eaec c 100 30
+3eaf8 4 101 30
+3eafc 4 277 82
+3eb00 4 82 52
+3eb04 c 1139 87
+3eb10 8 82 52
+3eb18 4 277 82
+3eb1c 4 1139 87
+3eb20 4 102 30
+3eb24 20 102 30
+3eb44 4 102 30
+3eb48 4 102 30
+3eb4c 1c 102 30
+3eb68 8 102 30
+3eb70 c 102 30
+3eb7c 8 85 79
+3eb84 8 102 30
+3eb8c c 156 132
+3eb98 4 256 82
+3eb9c 4 106 30
+3eba0 4 1139 87
+3eba4 4 256 82
+3eba8 8 49 16
+3ebb0 4 106 30
+3ebb4 4 49 16
+3ebb8 4 48 29
+3ebbc 4 49 16
+3ebc0 4 48 29
+3ebc4 8 106 30
+3ebcc 4 277 82
+3ebd0 4 106 30
+3ebd4 4 1139 87
+3ebd8 4 106 30
+3ebdc 20 106 30
+3ebfc 4 106 30
+3ec00 4 106 30
+3ec04 18 106 30
+3ec1c 4 256 82
+3ec20 8 107 30
+3ec28 4 256 82
+3ec2c 28 107 30
+3ec54 4 302 82
+3ec58 4 107 30
+3ec5c 8 302 82
+3ec64 18 107 30
+3ec7c 4 256 82
+3ec80 8 108 30
+3ec88 4 256 82
+3ec8c 20 108 30
+3ecac 8 108 30
+3ecb4 4 302 82
+3ecb8 4 108 30
+3ecbc 8 302 82
+3ecc4 18 108 30
+3ecdc 8 256 82
+3ece4 c 110 30
+3ecf0 4 1139 87
+3ecf4 4 110 30
+3ecf8 4 277 82
+3ecfc 4 110 30
+3ed00 20 110 30
+3ed20 4 110 30
+3ed24 4 110 30
+3ed28 18 110 30
+3ed40 8 256 82
+3ed48 28 111 30
+3ed70 4 302 82
+3ed74 4 111 30
+3ed78 8 302 82
+3ed80 18 111 30
+3ed98 8 256 82
+3eda0 20 112 30
+3edc0 8 112 30
+3edc8 4 302 82
+3edcc 4 112 30
+3edd0 8 302 82
+3edd8 18 112 30
+3edf0 8 112 30
+3edf8 c 112 30
+3ee04 8 85 79
+3ee0c 8 112 30
+3ee14 10 256 82
+3ee24 14 114 30
+3ee38 4 1139 87
+3ee3c 4 277 82
+3ee40 4 114 30
+3ee44 20 114 30
+3ee64 4 114 30
+3ee68 4 114 30
+3ee6c 18 114 30
+3ee84 4 114 30
+3ee88 4 114 30
+3ee8c 8 114 30
+3ee94 c 114 30
+3eea0 8 85 79
+3eea8 8 114 30
+3eeb0 8 156 132
+3eeb8 8 256 82
+3eec0 8 54 30
+3eec8 20 115 30
+FUNC 3eee8 2fc 0 ProcCpuInfoReaderTest_SkipMalformedLine_Test::TestBody
+3eee8 4 117 30
+3eeec 8 118 30
+3eef4 c 117 30
+3ef00 4 118 30
+3ef04 4 117 30
+3ef08 4 118 30
+3ef0c 8 117 30
+3ef14 4 118 30
+3ef18 4 277 82
+3ef1c 4 82 52
+3ef20 c 1139 87
+3ef2c 8 82 52
+3ef34 4 277 82
+3ef38 4 1139 87
+3ef3c 4 119 30
+3ef40 20 119 30
+3ef60 4 119 30
+3ef64 4 119 30
+3ef68 1c 119 30
+3ef84 8 119 30
+3ef8c c 119 30
+3ef98 8 85 79
+3efa0 8 119 30
+3efa8 c 156 132
+3efb4 4 256 82
+3efb8 4 123 30
+3efbc 4 1139 87
+3efc0 4 256 82
+3efc4 8 49 16
+3efcc 4 123 30
+3efd0 4 49 16
+3efd4 4 48 29
+3efd8 4 49 16
+3efdc 4 48 29
+3efe0 8 123 30
+3efe8 4 277 82
+3efec 4 123 30
+3eff0 4 1139 87
+3eff4 4 123 30
+3eff8 20 123 30
+3f018 4 123 30
+3f01c 4 123 30
+3f020 18 123 30
+3f038 8 256 82
+3f040 2c 124 30
+3f06c 4 302 82
+3f070 4 124 30
+3f074 8 302 82
+3f07c 18 124 30
+3f094 8 256 82
+3f09c 24 125 30
+3f0c0 8 125 30
+3f0c8 4 302 82
+3f0cc 4 125 30
+3f0d0 8 302 82
+3f0d8 18 125 30
+3f0f0 8 125 30
+3f0f8 c 125 30
+3f104 8 85 79
+3f10c 8 125 30
+3f114 10 256 82
+3f124 14 127 30
+3f138 4 1139 87
+3f13c 4 277 82
+3f140 4 127 30
+3f144 20 127 30
+3f164 4 127 30
+3f168 4 127 30
+3f16c 18 127 30
+3f184 4 127 30
+3f188 4 127 30
+3f18c 8 127 30
+3f194 c 127 30
+3f1a0 8 85 79
+3f1a8 8 127 30
+3f1b0 8 156 132
+3f1b8 8 256 82
+3f1c0 8 54 30
+3f1c8 1c 128 30
+FUNC 3f1e4 2fc 0 ProcCpuInfoReaderTest_SkipOneEmptyLine_Test::TestBody
+3f1e4 4 130 30
+3f1e8 8 131 30
+3f1f0 c 130 30
+3f1fc 4 131 30
+3f200 4 130 30
+3f204 4 131 30
+3f208 8 130 30
+3f210 4 131 30
+3f214 4 277 82
+3f218 4 82 52
+3f21c c 1139 87
+3f228 8 82 52
+3f230 4 277 82
+3f234 4 1139 87
+3f238 4 132 30
+3f23c 20 132 30
+3f25c 4 132 30
+3f260 4 132 30
+3f264 1c 132 30
+3f280 8 132 30
+3f288 c 132 30
+3f294 8 85 79
+3f29c 8 132 30
+3f2a4 c 156 132
+3f2b0 4 256 82
+3f2b4 4 136 30
+3f2b8 4 1139 87
+3f2bc 4 256 82
+3f2c0 8 49 16
+3f2c8 4 136 30
+3f2cc 4 49 16
+3f2d0 4 48 29
+3f2d4 4 49 16
+3f2d8 4 48 29
+3f2dc 8 136 30
+3f2e4 4 277 82
+3f2e8 4 136 30
+3f2ec 4 1139 87
+3f2f0 4 136 30
+3f2f4 20 136 30
+3f314 4 136 30
+3f318 4 136 30
+3f31c 18 136 30
+3f334 8 256 82
+3f33c 2c 137 30
+3f368 4 302 82
+3f36c 4 137 30
+3f370 8 302 82
+3f378 18 137 30
+3f390 8 256 82
+3f398 24 138 30
+3f3bc 8 138 30
+3f3c4 4 302 82
+3f3c8 4 138 30
+3f3cc 8 302 82
+3f3d4 18 138 30
+3f3ec 8 138 30
+3f3f4 c 138 30
+3f400 8 85 79
+3f408 8 138 30
+3f410 10 256 82
+3f420 14 140 30
+3f434 4 1139 87
+3f438 4 277 82
+3f43c 4 140 30
+3f440 20 140 30
+3f460 4 140 30
+3f464 4 140 30
+3f468 18 140 30
+3f480 4 140 30
+3f484 4 140 30
+3f488 8 140 30
+3f490 c 140 30
+3f49c 8 85 79
+3f4a4 8 140 30
+3f4ac 8 156 132
+3f4b4 8 256 82
+3f4bc 8 54 30
+3f4c4 1c 141 30
+FUNC 3f4e0 2fc 0 ProcCpuInfoReaderTest_SkipEmptyField_Test::TestBody
+3f4e0 4 143 30
+3f4e4 8 144 30
+3f4ec c 143 30
+3f4f8 4 144 30
+3f4fc 4 143 30
+3f500 4 144 30
+3f504 8 143 30
+3f50c 4 144 30
+3f510 4 277 82
+3f514 4 82 52
+3f518 c 1139 87
+3f524 8 82 52
+3f52c 4 277 82
+3f530 4 1139 87
+3f534 4 145 30
+3f538 20 145 30
+3f558 4 145 30
+3f55c 4 145 30
+3f560 1c 145 30
+3f57c 8 145 30
+3f584 c 145 30
+3f590 8 85 79
+3f598 8 145 30
+3f5a0 c 156 132
+3f5ac 4 256 82
+3f5b0 4 149 30
+3f5b4 4 1139 87
+3f5b8 4 256 82
+3f5bc 8 49 16
+3f5c4 4 149 30
+3f5c8 4 49 16
+3f5cc 4 48 29
+3f5d0 4 49 16
+3f5d4 4 48 29
+3f5d8 8 149 30
+3f5e0 4 277 82
+3f5e4 4 149 30
+3f5e8 4 1139 87
+3f5ec 4 149 30
+3f5f0 20 149 30
+3f610 4 149 30
+3f614 4 149 30
+3f618 18 149 30
+3f630 8 256 82
+3f638 2c 150 30
+3f664 4 302 82
+3f668 4 150 30
+3f66c 8 302 82
+3f674 18 150 30
+3f68c 8 256 82
+3f694 24 151 30
+3f6b8 8 151 30
+3f6c0 4 302 82
+3f6c4 4 151 30
+3f6c8 8 302 82
+3f6d0 18 151 30
+3f6e8 8 151 30
+3f6f0 c 151 30
+3f6fc 8 85 79
+3f704 8 151 30
+3f70c 10 256 82
+3f71c 14 153 30
+3f730 4 1139 87
+3f734 4 277 82
+3f738 4 153 30
+3f73c 20 153 30
+3f75c 4 153 30
+3f760 4 153 30
+3f764 18 153 30
+3f77c 4 153 30
+3f780 4 153 30
+3f784 8 153 30
+3f78c c 153 30
+3f798 8 85 79
+3f7a0 8 153 30
+3f7a8 8 156 132
+3f7b0 8 256 82
+3f7b8 8 54 30
+3f7c0 1c 154 30
+FUNC 3f7dc 43c 0 ProcCpuInfoReaderTest_SkipTwoEmptyLines_Test::TestBody
+3f7dc 4 156 30
+3f7e0 8 157 30
+3f7e8 10 156 30
+3f7f8 8 157 30
+3f800 14 156 30
+3f814 4 157 30
+3f818 4 277 82
+3f81c 4 82 52
+3f820 8 1139 87
+3f828 c 82 52
+3f834 4 277 82
+3f838 4 1139 87
+3f83c 4 158 30
+3f840 20 158 30
+3f860 4 158 30
+3f864 4 158 30
+3f868 1c 158 30
+3f884 8 158 30
+3f88c c 158 30
+3f898 8 85 79
+3f8a0 8 158 30
+3f8a8 c 156 132
+3f8b4 4 256 82
+3f8b8 4 162 30
+3f8bc 4 1139 87
+3f8c0 4 256 82
+3f8c4 8 49 16
+3f8cc 4 162 30
+3f8d0 4 49 16
+3f8d4 4 48 29
+3f8d8 4 49 16
+3f8dc 4 48 29
+3f8e0 8 162 30
+3f8e8 4 277 82
+3f8ec 4 162 30
+3f8f0 4 1139 87
+3f8f4 4 162 30
+3f8f8 20 162 30
+3f918 4 162 30
+3f91c 4 162 30
+3f920 18 162 30
+3f938 8 256 82
+3f940 44 163 30
+3f984 4 302 82
+3f988 4 163 30
+3f98c 8 302 82
+3f994 18 163 30
+3f9ac 4 256 82
+3f9b0 c 164 30
+3f9bc 4 256 82
+3f9c0 24 164 30
+3f9e4 8 164 30
+3f9ec 4 302 82
+3f9f0 4 164 30
+3f9f4 8 302 82
+3f9fc 18 164 30
+3fa14 8 256 82
+3fa1c c 166 30
+3fa28 4 1139 87
+3fa2c 4 166 30
+3fa30 4 277 82
+3fa34 4 166 30
+3fa38 20 166 30
+3fa58 4 166 30
+3fa5c 4 166 30
+3fa60 18 166 30
+3fa78 8 256 82
+3fa80 20 167 30
+3faa0 4 302 82
+3faa4 4 167 30
+3faa8 8 302 82
+3fab0 18 167 30
+3fac8 8 256 82
+3fad0 18 168 30
+3fae8 8 168 30
+3faf0 4 302 82
+3faf4 4 168 30
+3faf8 8 302 82
+3fb00 18 168 30
+3fb18 8 168 30
+3fb20 c 168 30
+3fb2c 8 85 79
+3fb34 8 168 30
+3fb3c 10 256 82
+3fb4c 14 170 30
+3fb60 4 1139 87
+3fb64 4 277 82
+3fb68 4 170 30
+3fb6c 20 170 30
+3fb8c 4 170 30
+3fb90 4 170 30
+3fb94 18 170 30
+3fbac 4 170 30
+3fbb0 4 170 30
+3fbb4 8 170 30
+3fbbc c 170 30
+3fbc8 8 85 79
+3fbd0 8 170 30
+3fbd8 8 156 132
+3fbe0 8 256 82
+3fbe8 8 54 30
+3fbf0 28 171 30
+FUNC 3fc18 2fc 0 ProcCpuInfoReaderTest_FieldWithSpaces_Test::TestBody
+3fc18 4 173 30
+3fc1c 8 174 30
+3fc24 c 173 30
+3fc30 4 174 30
+3fc34 4 173 30
+3fc38 4 174 30
+3fc3c 8 173 30
+3fc44 4 174 30
+3fc48 4 277 82
+3fc4c 4 82 52
+3fc50 c 1139 87
+3fc5c 8 82 52
+3fc64 4 277 82
+3fc68 4 1139 87
+3fc6c 4 175 30
+3fc70 20 175 30
+3fc90 4 175 30
+3fc94 4 175 30
+3fc98 1c 175 30
+3fcb4 8 175 30
+3fcbc c 175 30
+3fcc8 8 85 79
+3fcd0 8 175 30
+3fcd8 c 156 132
+3fce4 4 256 82
+3fce8 4 179 30
+3fcec 4 1139 87
+3fcf0 4 256 82
+3fcf4 8 49 16
+3fcfc 4 179 30
+3fd00 4 49 16
+3fd04 4 48 29
+3fd08 4 49 16
+3fd0c 4 48 29
+3fd10 8 179 30
+3fd18 4 277 82
+3fd1c 4 179 30
+3fd20 4 1139 87
+3fd24 4 179 30
+3fd28 20 179 30
+3fd48 4 179 30
+3fd4c 4 179 30
+3fd50 18 179 30
+3fd68 8 256 82
+3fd70 2c 180 30
+3fd9c 4 302 82
+3fda0 4 180 30
+3fda4 8 302 82
+3fdac 18 180 30
+3fdc4 8 256 82
+3fdcc 24 181 30
+3fdf0 8 181 30
+3fdf8 4 302 82
+3fdfc 4 181 30
+3fe00 8 302 82
+3fe08 18 181 30
+3fe20 8 181 30
+3fe28 c 181 30
+3fe34 8 85 79
+3fe3c 8 181 30
+3fe44 10 256 82
+3fe54 14 183 30
+3fe68 4 1139 87
+3fe6c 4 277 82
+3fe70 4 183 30
+3fe74 20 183 30
+3fe94 4 183 30
+3fe98 4 183 30
+3fe9c 18 183 30
+3feb4 4 183 30
+3feb8 4 183 30
+3febc 8 183 30
+3fec4 c 183 30
+3fed0 8 85 79
+3fed8 8 183 30
+3fee0 8 156 132
+3fee8 8 256 82
+3fef0 8 54 30
+3fef8 1c 184 30
+FUNC 3ff14 3b8 0 ProcCpuInfoReaderTest_EmptyValue_Test::TestBody
+3ff14 4 186 30
+3ff18 8 187 30
+3ff20 c 186 30
+3ff2c 4 187 30
+3ff30 4 186 30
+3ff34 4 187 30
+3ff38 8 186 30
+3ff40 4 187 30
+3ff44 4 277 82
+3ff48 4 82 52
+3ff4c c 1139 87
+3ff58 8 82 52
+3ff60 4 277 82
+3ff64 4 1139 87
+3ff68 4 188 30
+3ff6c 20 188 30
+3ff8c 4 188 30
+3ff90 4 188 30
+3ff94 1c 188 30
+3ffb0 8 188 30
+3ffb8 c 188 30
+3ffc4 8 85 79
+3ffcc 8 188 30
+3ffd4 c 156 132
+3ffe0 4 256 82
+3ffe4 4 192 30
+3ffe8 4 1139 87
+3ffec 4 256 82
+3fff0 8 49 16
+3fff8 4 192 30
+3fffc 4 49 16
+40000 4 48 29
+40004 4 49 16
+40008 4 48 29
+4000c 8 192 30
+40014 4 277 82
+40018 4 192 30
+4001c 4 1139 87
+40020 4 192 30
+40024 20 192 30
+40044 4 192 30
+40048 4 192 30
+4004c 4 192 30
+40050 1c 192 30
+4006c 8 192 30
+40074 c 192 30
+40080 8 85 79
+40088 8 192 30
+40090 8 156 132
+40098 10 256 82
+400a8 2c 193 30
+400d4 4 302 82
+400d8 4 193 30
+400dc 8 302 82
+400e4 18 193 30
+400fc 4 256 82
+40100 4 117 29
+40104 4 256 82
+40108 4 117 29
+4010c 4 195 30
+40110 4 117 29
+40114 20 195 30
+40134 8 195 30
+4013c 4 302 82
+40140 4 195 30
+40144 8 302 82
+4014c 18 195 30
+40164 8 256 82
+4016c 4 196 30
+40170 4 1481 82
+40174 4 1482 82
+40178 4 1481 82
+4017c 8 1482 82
+40184 1c 1487 82
+401a0 c 196 30
+401ac 4 302 82
+401b0 4 196 30
+401b4 8 302 82
+401bc 18 196 30
+401d4 8 196 30
+401dc c 196 30
+401e8 8 85 79
+401f0 8 196 30
+401f8 10 256 82
+40208 8 198 30
+40210 4 1139 87
+40214 c 198 30
+40220 4 277 82
+40224 4 1139 87
+40228 4 198 30
+4022c 20 198 30
+4024c 4 198 30
+40250 4 198 30
+40254 4 198 30
+40258 1c 198 30
+40274 8 198 30
+4027c c 198 30
+40288 8 85 79
+40290 8 198 30
+40298 8 156 132
+402a0 8 256 82
+402a8 8 54 30
+402b0 1c 199 30
+FUNC 402cc 3c0 0 ProcCpuInfoReaderTest_OneLine_Test::TestBody
+402cc 4 85 30
+402d0 8 86 30
+402d8 c 85 30
+402e4 4 86 30
+402e8 4 85 30
+402ec 4 86 30
+402f0 8 85 30
+402f8 4 86 30
+402fc 4 277 82
+40300 4 82 52
+40304 c 1139 87
+40310 8 82 52
+40318 4 277 82
+4031c 4 1139 87
+40320 4 87 30
+40324 20 87 30
+40344 4 87 30
+40348 4 87 30
+4034c 1c 87 30
+40368 8 87 30
+40370 c 87 30
+4037c 8 85 79
+40384 8 87 30
+4038c c 156 132
+40398 4 256 82
+4039c 4 92 30
+403a0 4 1139 87
+403a4 4 256 82
+403a8 8 49 16
+403b0 4 92 30
+403b4 4 49 16
+403b8 4 48 29
+403bc 4 49 16
+403c0 4 48 29
+403c4 8 92 30
+403cc 4 277 82
+403d0 4 92 30
+403d4 4 1139 87
+403d8 4 92 30
+403dc 20 92 30
+403fc 4 92 30
+40400 4 92 30
+40404 4 92 30
+40408 1c 92 30
+40424 8 92 30
+4042c c 92 30
+40438 8 85 79
+40440 8 92 30
+40448 8 156 132
+40450 10 256 82
+40460 2c 93 30
+4048c 4 302 82
+40490 4 93 30
+40494 8 302 82
+4049c 18 93 30
+404b4 4 256 82
+404b8 4 117 29
+404bc 4 256 82
+404c0 4 117 29
+404c4 4 94 30
+404c8 4 117 29
+404cc 20 94 30
+404ec 8 94 30
+404f4 4 302 82
+404f8 4 94 30
+404fc 8 302 82
+40504 18 94 30
+4051c 8 256 82
+40524 8 95 30
+4052c 4 1481 82
+40530 4 1482 82
+40534 8 1481 82
+4053c 8 1482 82
+40544 1c 1487 82
+40560 c 95 30
+4056c 4 302 82
+40570 4 95 30
+40574 8 302 82
+4057c 18 95 30
+40594 8 95 30
+4059c c 95 30
+405a8 8 85 79
+405b0 8 95 30
+405b8 10 256 82
+405c8 8 97 30
+405d0 4 1139 87
+405d4 c 97 30
+405e0 4 277 82
+405e4 4 1139 87
+405e8 4 97 30
+405ec 20 97 30
+4060c 4 97 30
+40610 4 97 30
+40614 4 97 30
+40618 1c 97 30
+40634 8 97 30
+4063c c 97 30
+40648 8 85 79
+40650 8 97 30
+40658 8 156 132
+40660 8 256 82
+40668 8 54 30
+40670 1c 98 30
+FUNC 4068c 4 0 testing::internal::TestFactoryImpl<ElfCoreDumpTest_ValidCoreFile_Test>::~TestFactoryImpl
+4068c 4 484 85
+FUNC 40690 4 0 testing::internal::TestFactoryImpl<ElfCoreDumpTest_TestElfHeader_Test>::~TestFactoryImpl
+40690 4 484 85
+FUNC 40694 4 0 testing::internal::TestFactoryImpl<ElfCoreDumpTest_DefaultConstructor_Test>::~TestFactoryImpl
+40694 4 484 85
+FUNC 40698 4 0 testing::internal::TestFactoryImpl<ElfCoreDumpTest_DefaultConstructor_Test>::~TestFactoryImpl
+40698 4 484 85
+FUNC 4069c 4 0 testing::internal::TestFactoryImpl<ElfCoreDumpTest_TestElfHeader_Test>::~TestFactoryImpl
+4069c 4 484 85
+FUNC 406a0 4 0 testing::internal::TestFactoryImpl<ElfCoreDumpTest_ValidCoreFile_Test>::~TestFactoryImpl
+406a0 4 484 85
+FUNC 406a4 14 0 ElfCoreDumpTest_ValidCoreFile_Test::~ElfCoreDumpTest_ValidCoreFile_Test
+406a4 14 130 39
+FUNC 406b8 24 0 ElfCoreDumpTest_ValidCoreFile_Test::~ElfCoreDumpTest_ValidCoreFile_Test
+406b8 c 130 39
+406c4 8 130 39
+406cc 4 130 39
+406d0 8 130 39
+406d8 4 130 39
+FUNC 406dc 14 0 ElfCoreDumpTest_TestElfHeader_Test::~ElfCoreDumpTest_TestElfHeader_Test
+406dc 14 62 39
+FUNC 406f0 24 0 ElfCoreDumpTest_TestElfHeader_Test::~ElfCoreDumpTest_TestElfHeader_Test
+406f0 c 62 39
+406fc 8 62 39
+40704 4 62 39
+40708 8 62 39
+40710 4 62 39
+FUNC 40714 14 0 ElfCoreDumpTest_DefaultConstructor_Test::~ElfCoreDumpTest_DefaultConstructor_Test
+40714 14 52 39
+FUNC 40728 24 0 ElfCoreDumpTest_DefaultConstructor_Test::~ElfCoreDumpTest_DefaultConstructor_Test
+40728 c 52 39
+40734 8 52 39
+4073c 4 52 39
+40740 8 52 39
+40748 4 52 39
+FUNC 4074c 3c 0 testing::internal::TestFactoryImpl<ElfCoreDumpTest_TestElfHeader_Test>::CreateTest
+4074c 10 486 85
+4075c 8 486 85
+40764 8 62 39
+4076c 4 486 85
+40770 c 62 39
+4077c c 486 85
+FUNC 40788 3c 0 testing::internal::TestFactoryImpl<ElfCoreDumpTest_DefaultConstructor_Test>::CreateTest
+40788 10 486 85
+40798 8 486 85
+407a0 8 52 39
+407a8 4 486 85
+407ac c 52 39
+407b8 c 486 85
+FUNC 407c4 3c 0 testing::internal::TestFactoryImpl<ElfCoreDumpTest_ValidCoreFile_Test>::CreateTest
+407c4 10 486 85
+407d4 8 486 85
+407dc 8 130 39
+407e4 4 486 85
+407e8 c 130 39
+407f4 c 486 85
+FUNC 40800 50 0 testing::internal::DefaultPrintTo<const elf64_hdr>
+40800 14 307 80
+40814 4 310 80
+40818 4 334 80
+4081c 4 333 122
+40820 4 334 80
+40824 8 333 122
+4082c 10 318 80
+4083c 8 291 121
+40844 8 334 80
+4084c 4 291 121
+FUNC 40850 50 0 testing::internal::DefaultPrintTo<const elf64_phdr>
+40850 14 307 80
+40864 4 310 80
+40868 4 334 80
+4086c 4 333 122
+40870 4 334 80
+40874 8 333 122
+4087c 10 318 80
+4088c 8 291 121
+40894 8 334 80
+4089c 4 291 121
+FUNC 408a0 e8 0 testing::internal::CmpHelperEQFailure<const elf64_hdr*, const elf64_hdr*>
+408a0 c 1464 82
+408ac 4 884 80
+408b0 10 1464 82
+408c0 8 884 80
+408c8 4 1464 82
+408cc 4 75 127
+408d0 4 1464 82
+408d4 8 1464 82
+408dc 4 884 80
+408e0 c 380 80
+408ec 4 75 127
+408f0 8 380 80
+408f8 c 75 127
+40904 8 886 80
+4090c c 884 80
+40918 8 380 80
+40920 4 75 127
+40924 8 380 80
+4092c c 75 127
+40938 8 886 80
+40940 1c 1471 82
+4095c 10 156 132
+4096c 1c 1472 82
+FUNC 40988 e8 0 testing::internal::CmpHelperEQFailure<const elf64_phdr*, const elf64_phdr*>
+40988 c 1464 82
+40994 4 884 80
+40998 10 1464 82
+409a8 8 884 80
+409b0 4 1464 82
+409b4 4 75 127
+409b8 4 1464 82
+409bc 8 1464 82
+409c4 4 884 80
+409c8 c 380 80
+409d4 4 75 127
+409d8 8 380 80
+409e0 c 75 127
+409ec 8 886 80
+409f4 c 884 80
+40a00 8 380 80
+40a08 4 75 127
+40a0c 8 380 80
+40a14 c 75 127
+40a20 8 886 80
+40a28 1c 1471 82
+40a44 10 156 132
+40a54 1c 1472 82
+FUNC 40a70 50 0 std::priv::_Rb_tree<int, std::less<int>, int, std::priv::_Identity<int>, std::priv::_SetTraitsT<int>, std::allocator<int> >::_M_erase
+40a70 18 655 135
+40a88 4 657 135
+40a8c c 658 135
+40a98 4 659 135
+40a9c 14 161 101
+40ab0 10 664 135
+FUNC 40ac0 3c 0 std::priv::_Rb_tree<int, std::less<int>, int, std::priv::_Identity<int>, std::priv::_SetTraitsT<int>, std::allocator<int> >::clear
+40ac0 8 530 136
+40ac8 4 531 136
+40acc 4 530 136
+40ad0 4 530 136
+40ad4 4 531 136
+40ad8 8 532 136
+40ae0 4 533 136
+40ae4 4 534 136
+40ae8 4 535 136
+40aec 4 536 136
+40af0 c 538 136
+FUNC 40afc 11c 0 std::priv::_Rb_tree<int, std::less<int>, int, std::priv::_Identity<int>, std::priv::_SetTraitsT<int>, std::allocator<int> >::_M_insert
+40afc 4 350 135
+40b00 4 358 135
+40b04 10 350 135
+40b14 14 350 135
+40b28 4 358 135
+40b2c 8 306 101
+40b34 c 307 101
+40b40 4 126 103
+40b44 4 321 136
+40b48 4 322 136
+40b4c 4 360 135
+40b50 4 361 135
+40b54 8 362 135
+40b5c 4 364 135
+40b60 4 364 135
+40b64 10 364 135
+40b74 8 306 101
+40b7c c 307 101
+40b88 4 126 103
+40b8c 4 321 136
+40b90 4 322 136
+40b94 4 368 135
+40b98 c 369 135
+40ba4 8 370 135
+40bac 8 306 101
+40bb4 c 307 101
+40bc0 4 126 103
+40bc4 4 321 136
+40bc8 4 322 136
+40bcc 4 374 135
+40bd0 c 375 135
+40bdc 4 376 135
+40be0 8 379 135
+40be8 4 378 135
+40bec 4 379 135
+40bf0 4 380 135
+40bf4 4 382 135
+40bf8 8 380 135
+40c00 4 142 136
+40c04 14 382 135
+FUNC 40c18 118 0 std::priv::_Rb_tree<int, std::less<int>, int, std::priv::_Identity<int>, std::priv::_SetTraitsT<int>, std::allocator<int> >::insert_unique
+40c18 8 405 135
+40c20 4 408 135
+40c24 8 405 135
+40c2c 4 406 135
+40c30 4 405 135
+40c34 4 407 135
+40c38 4 409 135
+40c3c 10 412 135
+40c4c c 412 135
+40c58 18 412 135
+40c70 4 415 135
+40c74 c 416 135
+40c80 c 417 135
+40c8c 8 279 135
+40c94 10 279 135
+40ca4 8 280 135
+40cac 8 281 135
+40cb4 10 99 136
+40cc4 4 285 135
+40cc8 c 286 135
+40cd4 c 288 135
+40ce0 4 187 136
+40ce4 10 421 135
+40cf4 10 422 135
+40d04 8 142 136
+40d0c c 62 124
+40d18 4 142 136
+40d1c 4 62 124
+40d20 10 425 135
+FUNC 40d30 3c8 0 ElfCoreDumpTest_DefaultConstructor_Test::TestBody
+40d30 c 52 39
+40d3c 4 53 39
+40d40 4 52 39
+40d44 8 53 39
+40d4c 4 52 39
+40d50 4 53 39
+40d54 4 277 82
+40d58 14 54 39
+40d6c 4 1139 87
+40d70 4 277 82
+40d74 4 54 39
+40d78 20 54 39
+40d98 4 54 39
+40d9c 4 54 39
+40da0 1c 54 39
+40dbc 8 54 39
+40dc4 c 54 39
+40dd0 8 85 79
+40dd8 8 54 39
+40de0 8 156 132
+40de8 8 256 82
+40df0 8 55 39
+40df8 8 1571 82
+40e00 4 1482 82
+40e04 4 1481 82
+40e08 8 1482 82
+40e10 1c 1487 82
+40e2c 8 55 39
+40e34 c 302 82
+40e40 18 55 39
+40e58 8 55 39
+40e60 c 55 39
+40e6c 8 85 79
+40e74 8 55 39
+40e7c 8 256 82
+40e84 10 56 39
+40e94 20 1552 82
+40eb4 8 56 39
+40ebc c 302 82
+40ec8 18 56 39
+40ee0 8 56 39
+40ee8 c 56 39
+40ef4 8 85 79
+40efc 8 56 39
+40f04 8 256 82
+40f0c c 57 39
+40f18 8 1571 82
+40f20 4 1482 82
+40f24 4 1481 82
+40f28 8 1482 82
+40f30 1c 1487 82
+40f4c 8 57 39
+40f54 c 302 82
+40f60 18 57 39
+40f78 8 57 39
+40f80 c 57 39
+40f8c 8 85 79
+40f94 8 57 39
+40f9c 8 256 82
+40fa4 c 58 39
+40fb0 8 1571 82
+40fb8 4 1482 82
+40fbc 4 1481 82
+40fc0 8 1482 82
+40fc8 1c 1487 82
+40fe4 8 58 39
+40fec 4 302 82
+40ff0 4 58 39
+40ff4 8 302 82
+40ffc 18 58 39
+41014 8 58 39
+4101c c 58 39
+41028 8 85 79
+41030 8 58 39
+41038 8 256 82
+41040 c 59 39
+4104c c 59 39
+41058 4 59 39
+4105c 4 1139 87
+41060 4 277 82
+41064 4 59 39
+41068 20 59 39
+41088 4 59 39
+4108c 4 59 39
+41090 4 59 39
+41094 1c 59 39
+410b0 8 59 39
+410b8 c 59 39
+410c4 8 85 79
+410cc 8 59 39
+410d4 8 156 132
+410dc 8 256 82
+410e4 14 60 39
+FUNC 410f8 1258 0 ElfCoreDumpTest_TestElfHeader_Test::TestBody
+410f8 c 62 39
+41104 8 64 39
+4110c 14 62 39
+41120 4 66 39
+41124 c 64 39
+41130 4 69 39
+41134 4 70 39
+41138 c 277 82
+41144 14 64 39
+41158 8 66 39
+41160 20 67 39
+41180 8 69 39
+41188 8 70 39
+41190 10 72 39
+411a0 4 1139 87
+411a4 4 72 39
+411a8 4 277 82
+411ac 4 72 39
+411b0 24 72 39
+411d4 18 72 39
+411ec 8 256 82
+411f4 10 73 39
+41204 4 1139 87
+41208 4 73 39
+4120c 4 277 82
+41210 4 73 39
+41214 24 73 39
+41238 1c 73 39
+41254 8 73 39
+4125c c 73 39
+41268 8 85 79
+41270 8 73 39
+41278 8 156 132
+41280 10 256 82
+41290 c 74 39
+4129c 10 75 39
+412ac 4 1139 87
+412b0 4 277 82
+412b4 4 75 39
+412b8 24 75 39
+412dc 1c 75 39
+412f8 8 75 39
+41300 c 75 39
+4130c 8 85 79
+41314 8 75 39
+4131c 8 156 132
+41324 8 256 82
+4132c 8 76 39
+41334 c 1571 82
+41340 4 1482 82
+41344 4 1481 82
+41348 8 1482 82
+41350 18 1487 82
+41368 8 76 39
+41370 c 302 82
+4137c 18 76 39
+41394 8 76 39
+4139c c 76 39
+413a8 8 85 79
+413b0 8 76 39
+413b8 8 256 82
+413c0 10 77 39
+413d0 20 1552 82
+413f0 8 77 39
+413f8 c 302 82
+41404 18 77 39
+4141c 8 77 39
+41424 c 77 39
+41430 8 85 79
+41438 8 77 39
+41440 8 256 82
+41448 c 78 39
+41454 8 1571 82
+4145c 4 1482 82
+41460 4 1481 82
+41464 8 1482 82
+4146c 1c 1487 82
+41488 8 78 39
+41490 c 302 82
+4149c 18 78 39
+414b4 8 78 39
+414bc c 78 39
+414c8 8 85 79
+414d0 8 78 39
+414d8 8 256 82
+414e0 c 79 39
+414ec 8 1571 82
+414f4 4 1482 82
+414f8 4 1481 82
+414fc 8 1482 82
+41504 1c 1487 82
+41520 8 79 39
+41528 4 302 82
+4152c 4 79 39
+41530 8 302 82
+41538 18 79 39
+41550 8 79 39
+41558 c 79 39
+41564 8 85 79
+4156c 8 79 39
+41574 8 256 82
+4157c 10 80 39
+4158c c 80 39
+41598 4 80 39
+4159c 4 1139 87
+415a0 4 277 82
+415a4 4 80 39
+415a8 20 80 39
+415c8 4 80 39
+415cc 4 80 39
+415d0 4 80 39
+415d4 1c 80 39
+415f0 8 80 39
+415f8 c 80 39
+41604 8 85 79
+4160c 8 80 39
+41614 8 156 132
+4161c c 256 82
+41628 10 82 39
+41638 4 1139 87
+4163c 4 82 39
+41640 4 277 82
+41644 4 82 39
+41648 20 82 39
+41668 4 82 39
+4166c 4 82 39
+41670 18 82 39
+41688 8 256 82
+41690 10 83 39
+416a0 4 1139 87
+416a4 4 83 39
+416a8 4 277 82
+416ac 4 83 39
+416b0 20 83 39
+416d0 4 83 39
+416d4 4 83 39
+416d8 18 83 39
+416f0 8 256 82
+416f8 c 84 39
+41704 10 85 39
+41714 4 1139 87
+41718 4 277 82
+4171c 4 85 39
+41720 20 85 39
+41740 4 85 39
+41744 4 85 39
+41748 4 85 39
+4174c 1c 85 39
+41768 8 85 39
+41770 c 85 39
+4177c 8 85 79
+41784 8 85 39
+4178c 8 156 132
+41794 c 256 82
+417a0 4 87 39
+417a4 4 88 39
+417a8 4 87 39
+417ac c 88 39
+417b8 4 1139 87
+417bc 4 88 39
+417c0 4 277 82
+417c4 4 88 39
+417c8 20 88 39
+417e8 4 88 39
+417ec 4 88 39
+417f0 18 88 39
+41808 8 256 82
+41810 10 89 39
+41820 4 1139 87
+41824 4 89 39
+41828 4 277 82
+4182c 4 89 39
+41830 20 89 39
+41850 4 89 39
+41854 4 89 39
+41858 18 89 39
+41870 8 256 82
+41878 c 90 39
+41884 10 91 39
+41894 4 1139 87
+41898 4 277 82
+4189c 4 91 39
+418a0 20 91 39
+418c0 4 91 39
+418c4 4 91 39
+418c8 4 91 39
+418cc 1c 91 39
+418e8 8 91 39
+418f0 c 91 39
+418fc 8 85 79
+41904 8 91 39
+4190c 8 156 132
+41914 c 256 82
+41920 4 93 39
+41924 4 94 39
+41928 4 93 39
+4192c c 94 39
+41938 4 1139 87
+4193c 4 94 39
+41940 4 277 82
+41944 4 94 39
+41948 20 94 39
+41968 4 94 39
+4196c 4 94 39
+41970 18 94 39
+41988 8 256 82
+41990 10 95 39
+419a0 4 1139 87
+419a4 4 95 39
+419a8 4 277 82
+419ac 4 95 39
+419b0 20 95 39
+419d0 4 95 39
+419d4 4 95 39
+419d8 18 95 39
+419f0 8 256 82
+419f8 c 96 39
+41a04 10 97 39
+41a14 4 1139 87
+41a18 4 277 82
+41a1c 4 97 39
+41a20 20 97 39
+41a40 4 97 39
+41a44 4 97 39
+41a48 4 97 39
+41a4c 1c 97 39
+41a68 8 97 39
+41a70 c 97 39
+41a7c 8 85 79
+41a84 8 97 39
+41a8c 8 156 132
+41a94 c 256 82
+41aa0 4 99 39
+41aa4 4 100 39
+41aa8 4 99 39
+41aac c 100 39
+41ab8 4 1139 87
+41abc 4 100 39
+41ac0 4 277 82
+41ac4 4 100 39
+41ac8 20 100 39
+41ae8 4 100 39
+41aec 4 100 39
+41af0 18 100 39
+41b08 8 256 82
+41b10 10 101 39
+41b20 4 1139 87
+41b24 4 101 39
+41b28 4 277 82
+41b2c 4 101 39
+41b30 20 101 39
+41b50 4 101 39
+41b54 4 101 39
+41b58 18 101 39
+41b70 8 256 82
+41b78 c 102 39
+41b84 10 103 39
+41b94 4 1139 87
+41b98 4 277 82
+41b9c 4 103 39
+41ba0 20 103 39
+41bc0 4 103 39
+41bc4 4 103 39
+41bc8 4 103 39
+41bcc 1c 103 39
+41be8 8 103 39
+41bf0 c 103 39
+41bfc 8 85 79
+41c04 8 103 39
+41c0c 8 156 132
+41c14 c 256 82
+41c20 4 105 39
+41c24 4 106 39
+41c28 4 105 39
+41c2c c 106 39
+41c38 4 1139 87
+41c3c 4 106 39
+41c40 4 277 82
+41c44 4 106 39
+41c48 20 106 39
+41c68 4 106 39
+41c6c 4 106 39
+41c70 18 106 39
+41c88 8 256 82
+41c90 10 107 39
+41ca0 4 1139 87
+41ca4 4 107 39
+41ca8 4 277 82
+41cac 4 107 39
+41cb0 20 107 39
+41cd0 4 107 39
+41cd4 4 107 39
+41cd8 18 107 39
+41cf0 8 256 82
+41cf8 c 108 39
+41d04 10 109 39
+41d14 4 1139 87
+41d18 4 277 82
+41d1c 4 109 39
+41d20 20 109 39
+41d40 4 109 39
+41d44 4 109 39
+41d48 4 109 39
+41d4c 1c 109 39
+41d68 8 109 39
+41d70 c 109 39
+41d7c 8 85 79
+41d84 8 109 39
+41d8c 8 156 132
+41d94 c 256 82
+41da0 4 111 39
+41da4 4 112 39
+41da8 4 111 39
+41dac c 112 39
+41db8 4 1139 87
+41dbc 4 112 39
+41dc0 4 277 82
+41dc4 4 112 39
+41dc8 20 112 39
+41de8 4 112 39
+41dec 4 112 39
+41df0 18 112 39
+41e08 8 256 82
+41e10 10 113 39
+41e20 4 1139 87
+41e24 4 113 39
+41e28 4 277 82
+41e2c 4 113 39
+41e30 20 113 39
+41e50 4 113 39
+41e54 4 113 39
+41e58 18 113 39
+41e70 8 256 82
+41e78 c 114 39
+41e84 10 115 39
+41e94 4 1139 87
+41e98 4 277 82
+41e9c 4 115 39
+41ea0 20 115 39
+41ec0 4 115 39
+41ec4 4 115 39
+41ec8 4 115 39
+41ecc 1c 115 39
+41ee8 8 115 39
+41ef0 c 115 39
+41efc 8 85 79
+41f04 8 115 39
+41f0c 8 156 132
+41f14 4 256 82
+41f18 4 117 39
+41f1c 8 256 82
+41f24 4 117 39
+41f28 10 118 39
+41f38 4 1139 87
+41f3c 4 118 39
+41f40 4 277 82
+41f44 4 118 39
+41f48 20 118 39
+41f68 4 118 39
+41f6c 4 118 39
+41f70 18 118 39
+41f88 4 118 39
+41f8c 4 118 39
+41f90 8 118 39
+41f98 c 118 39
+41fa4 8 85 79
+41fac 8 118 39
+41fb4 8 156 132
+41fbc 8 256 82
+41fc4 10 119 39
+41fd4 4 1139 87
+41fd8 4 119 39
+41fdc 4 277 82
+41fe0 4 119 39
+41fe4 24 119 39
+42008 4 119 39
+4200c 4 119 39
+42010 4 119 39
+42014 1c 119 39
+42030 8 119 39
+42038 c 119 39
+42044 8 85 79
+4204c 8 119 39
+42054 8 156 132
+4205c c 256 82
+42068 4 120 39
+4206c 4 256 82
+42070 c 120 39
+4207c 10 121 39
+4208c 4 1139 87
+42090 4 277 82
+42094 4 121 39
+42098 24 121 39
+420bc 4 121 39
+420c0 4 121 39
+420c4 4 121 39
+420c8 1c 121 39
+420e4 8 121 39
+420ec c 121 39
+420f8 8 85 79
+42100 8 121 39
+42108 8 156 132
+42110 10 256 82
+42120 4 123 39
+42124 4 124 39
+42128 4 123 39
+4212c c 124 39
+42138 4 1139 87
+4213c 4 124 39
+42140 4 277 82
+42144 4 124 39
+42148 24 124 39
+4216c 4 124 39
+42170 4 124 39
+42174 18 124 39
+4218c 4 256 82
+42190 4 125 39
+42194 4 256 82
+42198 10 125 39
+421a8 4 1139 87
+421ac 4 125 39
+421b0 4 277 82
+421b4 4 125 39
+421b8 24 125 39
+421dc 4 125 39
+421e0 4 125 39
+421e4 18 125 39
+421fc 4 125 39
+42200 4 125 39
+42204 8 125 39
+4220c c 125 39
+42218 8 85 79
+42220 8 125 39
+42228 8 156 132
+42230 10 256 82
+42240 8 156 132
+42248 c 61 63
+42254 8 156 132
+4225c 8 256 82
+42264 c 126 39
+42270 8 127 39
+42278 4 1139 87
+4227c 4 127 39
+42280 4 277 82
+42284 4 127 39
+42288 24 127 39
+422ac 4 127 39
+422b0 4 127 39
+422b4 4 127 39
+422b8 1c 127 39
+422d4 8 127 39
+422dc c 127 39
+422e8 8 85 79
+422f0 8 127 39
+422f8 8 156 132
+42300 4 256 82
+42304 4 61 63
+42308 4 256 82
+4230c 8 69 39
+42314 8 156 132
+4231c c 61 63
+42328 8 156 132
+42330 20 128 39
+FUNC 42350 b1c 0 ElfCoreDumpTest_ValidCoreFile_Test::TestBody
+42350 14 130 39
+42364 4 131 39
+42368 4 130 39
+4236c 4 131 39
+42370 18 130 39
+42388 4 131 39
+4238c 10 132 39
+4239c 18 134 39
+423b4 4 135 39
+423b8 8 138 39
+423c0 4 140 39
+423c4 4 141 39
+423c8 4 138 39
+423cc 4 140 39
+423d0 4 141 39
+423d4 4 138 39
+423d8 4 140 39
+423dc 4 141 39
+423e0 4 140 39
+423e4 10 277 82
+423f4 4 141 39
+423f8 4 1139 87
+423fc 4 141 39
+42400 4 277 82
+42404 8 141 39
+4240c 20 141 39
+4242c 4 141 39
+42430 4 141 39
+42434 1c 141 39
+42450 8 141 39
+42458 c 141 39
+42464 8 85 79
+4246c 8 141 39
+42474 8 156 132
+4247c 10 256 82
+4248c 4 145 39
+42490 4 256 82
+42494 c 143 39
+424a0 4 481 101
+424a4 8 143 39
+424ac 4 263 136
+424b0 4 143 39
+424b4 4 266 136
+424b8 4 267 136
+424bc 4 391 136
+424c0 8 146 39
+424c8 4 145 39
+424cc 8 146 39
+424d4 10 229 142
+424e4 8 145 39
+424ec c 151 39
+424f8 10 151 39
+42508 8 156 132
+42510 4 151 39
+42514 18 153 39
+4252c 4 154 39
+42530 4 158 39
+42534 4 277 82
+42538 8 159 39
+42540 8 158 39
+42548 c 159 39
+42554 10 159 39
+42564 4 1139 87
+42568 4 277 82
+4256c 8 156 132
+42574 8 159 39
+4257c 20 159 39
+4259c 4 159 39
+425a0 4 159 39
+425a4 1c 159 39
+425c0 8 159 39
+425c8 c 159 39
+425d4 8 85 79
+425dc 8 159 39
+425e4 8 156 132
+425ec 10 256 82
+425fc 4 162 39
+42600 4 256 82
+42604 8 162 39
+4260c c 163 39
+42618 8 164 39
+42620 4 1139 87
+42624 4 164 39
+42628 4 277 82
+4262c 4 164 39
+42630 20 164 39
+42650 4 164 39
+42654 4 164 39
+42658 1c 164 39
+42674 8 164 39
+4267c c 164 39
+42688 8 85 79
+42690 8 164 39
+42698 8 156 132
+426a0 4 256 82
+426a4 4 188 39
+426a8 4 201 39
+426ac 4 256 82
+426b0 4 481 101
+426b4 4 187 39
+426b8 4 263 136
+426bc 4 266 136
+426c0 4 187 39
+426c4 4 267 136
+426c8 4 197 39
+426cc 4 187 39
+426d0 4 188 39
+426d4 4 277 82
+426d8 4 391 136
+426dc 8 197 39
+426e4 c 201 39
+426f0 8 256 82
+426f8 10 198 39
+42708 c 199 39
+42714 8 200 39
+4271c 4 1139 87
+42720 4 201 39
+42724 8 200 39
+4272c 4 201 39
+42730 4 277 82
+42734 4 201 39
+42738 1c 201 39
+42754 4 201 39
+42758 4 201 39
+4275c 1c 201 39
+42778 8 201 39
+42780 c 201 39
+4278c 8 85 79
+42794 8 201 39
+4279c 8 156 132
+427a4 8 256 82
+427ac 4 1139 87
+427b0 8 202 39
+427b8 4 277 82
+427bc 4 202 39
+427c0 20 202 39
+427e0 4 202 39
+427e4 4 202 39
+427e8 1c 202 39
+42804 8 202 39
+4280c c 202 39
+42818 8 85 79
+42820 8 202 39
+42828 8 156 132
+42830 8 256 82
+42838 1c 204 39
+42854 4 206 39
+42858 8 1139 87
+42860 8 206 39
+42868 4 277 82
+4286c 4 206 39
+42870 24 206 39
+42894 1c 206 39
+428b0 8 206 39
+428b8 c 206 39
+428c4 8 85 79
+428cc 8 206 39
+428d4 8 156 132
+428dc 8 256 82
+428e4 8 207 39
+428ec 4 1512 82
+428f0 4 207 39
+428f4 1c 1512 82
+42910 8 207 39
+42918 c 302 82
+42924 18 207 39
+4293c 8 207 39
+42944 c 207 39
+42950 8 85 79
+42958 8 207 39
+42960 8 256 82
+42968 14 208 39
+4297c 4 209 39
+42980 4 212 39
+42984 8 1139 87
+4298c 8 212 39
+42994 4 277 82
+42998 4 212 39
+4299c 28 212 39
+429c4 20 212 39
+429e4 8 212 39
+429ec c 212 39
+429f8 8 85 79
+42a00 8 212 39
+42a08 8 156 132
+42a10 8 256 82
+42a18 8 213 39
+42a20 4 1512 82
+42a24 4 213 39
+42a28 1c 1512 82
+42a44 8 213 39
+42a4c c 302 82
+42a58 18 213 39
+42a70 8 213 39
+42a78 c 213 39
+42a84 8 85 79
+42a8c 8 213 39
+42a94 8 256 82
+42a9c 8 91 55
+42aa4 4 229 142
+42aa8 4 91 55
+42aac 4 229 142
+42ab0 4 215 39
+42ab4 c 229 142
+42ac0 c 216 39
+42acc 1c 1512 82
+42ae8 8 217 39
+42af0 c 302 82
+42afc 18 217 39
+42b14 8 217 39
+42b1c c 217 39
+42b28 8 85 79
+42b30 8 217 39
+42b38 8 256 82
+42b40 20 1512 82
+42b60 8 218 39
+42b68 c 302 82
+42b74 18 218 39
+42b8c 8 218 39
+42b94 c 218 39
+42ba0 8 85 79
+42ba8 8 218 39
+42bb0 8 256 82
+42bb8 c 220 39
+42bc4 10 244 39
+42bd4 18 10 125
+42bec 8 555 100
+42bf4 10 556 100
+42c04 8 297 135
+42c0c 10 94 136
+42c1c 4 301 135
+42c20 c 302 135
+42c2c c 304 135
+42c38 c 309 135
+42c44 8 297 135
+42c4c 10 94 136
+42c5c 4 301 135
+42c60 c 302 135
+42c6c c 304 135
+42c78 c 309 135
+42c84 8 177 136
+42c8c 4 10 125
+42c90 8 277 82
+42c98 4 1139 87
+42c9c 4 247 39
+42ca0 20 247 39
+42cc0 4 247 39
+42cc4 4 247 39
+42cc8 4 247 39
+42ccc 1c 247 39
+42ce8 8 247 39
+42cf0 c 247 39
+42cfc 8 85 79
+42d04 8 247 39
+42d0c 8 156 132
+42d14 4 256 82
+42d18 4 248 39
+42d1c 4 256 82
+42d20 4 248 39
+42d24 20 1512 82
+42d44 8 248 39
+42d4c 4 302 82
+42d50 4 248 39
+42d54 8 302 82
+42d5c 18 248 39
+42d74 8 248 39
+42d7c c 248 39
+42d88 8 85 79
+42d90 8 248 39
+42d98 8 256 82
+42da0 20 1512 82
+42dc0 8 249 39
+42dc8 4 302 82
+42dcc 4 249 39
+42dd0 8 302 82
+42dd8 18 249 39
+42df0 8 249 39
+42df8 c 249 39
+42e04 8 85 79
+42e0c 8 249 39
+42e14 8 256 82
+42e1c 8 414 136
+42e24 8 158 39
+42e2c 8 414 136
+42e34 8 135 39
+42e3c 30 256 39
+FUNC 42e6c 4 0 testing::internal::TestFactoryImpl<FileIDTest_UniqueHashes_Test<google_breakpad::ElfClass64> >::~TestFactoryImpl
+42e6c 4 484 85
+FUNC 42e70 4 0 testing::internal::TestFactoryImpl<FileIDTest_BuildIDPH_Test<google_breakpad::ElfClass64> >::~TestFactoryImpl
+42e70 4 484 85
+FUNC 42e74 4 0 testing::internal::TestFactoryImpl<FileIDTest_BuildID_Test<google_breakpad::ElfClass64> >::~TestFactoryImpl
+42e74 4 484 85
+FUNC 42e78 4 0 testing::internal::TestFactoryImpl<FileIDTest_ElfClass_Test<google_breakpad::ElfClass64> >::~TestFactoryImpl
+42e78 4 484 85
+FUNC 42e7c 4 0 testing::internal::TestFactoryImpl<FileIDTest_UniqueHashes_Test<google_breakpad::ElfClass32> >::~TestFactoryImpl
+42e7c 4 484 85
+FUNC 42e80 4 0 testing::internal::TestFactoryImpl<FileIDTest_BuildIDPH_Test<google_breakpad::ElfClass32> >::~TestFactoryImpl
+42e80 4 484 85
+FUNC 42e84 4 0 testing::internal::TestFactoryImpl<FileIDTest_BuildID_Test<google_breakpad::ElfClass32> >::~TestFactoryImpl
+42e84 4 484 85
+FUNC 42e88 4 0 testing::internal::TestFactoryImpl<FileIDTest_ElfClass_Test<google_breakpad::ElfClass32> >::~TestFactoryImpl
+42e88 4 484 85
+FUNC 42e8c 4 0 testing::internal::TestFactoryImpl<FileIDTest_ElfClass_Test<google_breakpad::ElfClass32> >::~TestFactoryImpl
+42e8c 4 484 85
+FUNC 42e90 4 0 testing::internal::TestFactoryImpl<FileIDTest_ElfClass_Test<google_breakpad::ElfClass64> >::~TestFactoryImpl
+42e90 4 484 85
+FUNC 42e94 4 0 testing::internal::TestFactoryImpl<FileIDTest_BuildID_Test<google_breakpad::ElfClass32> >::~TestFactoryImpl
+42e94 4 484 85
+FUNC 42e98 4 0 testing::internal::TestFactoryImpl<FileIDTest_BuildID_Test<google_breakpad::ElfClass64> >::~TestFactoryImpl
+42e98 4 484 85
+FUNC 42e9c 4 0 testing::internal::TestFactoryImpl<FileIDTest_BuildIDPH_Test<google_breakpad::ElfClass32> >::~TestFactoryImpl
+42e9c 4 484 85
+FUNC 42ea0 4 0 testing::internal::TestFactoryImpl<FileIDTest_BuildIDPH_Test<google_breakpad::ElfClass64> >::~TestFactoryImpl
+42ea0 4 484 85
+FUNC 42ea4 4 0 testing::internal::TestFactoryImpl<FileIDTest_UniqueHashes_Test<google_breakpad::ElfClass32> >::~TestFactoryImpl
+42ea4 4 484 85
+FUNC 42ea8 4 0 testing::internal::TestFactoryImpl<FileIDTest_UniqueHashes_Test<google_breakpad::ElfClass64> >::~TestFactoryImpl
+42ea8 4 484 85
+FUNC 42eac 48 0 testing::internal::TestFactoryImpl<FileIDTest_ElfClass_Test<google_breakpad::ElfClass32> >::CreateTest
+42eac 10 486 85
+42ebc 8 486 85
+42ec4 4 107 43
+42ec8 4 127 43
+42ecc 8 67 139
+42ed4 4 481 101
+42ed8 c 127 43
+42ee4 10 486 85
+FUNC 42ef4 48 0 testing::internal::TestFactoryImpl<FileIDTest_BuildIDPH_Test<google_breakpad::ElfClass32> >::CreateTest
+42ef4 10 486 85
+42f04 8 486 85
+42f0c 4 107 43
+42f10 4 183 43
+42f14 8 67 139
+42f1c 4 481 101
+42f20 c 183 43
+42f2c 10 486 85
+FUNC 42f3c 48 0 testing::internal::TestFactoryImpl<FileIDTest_BuildID_Test<google_breakpad::ElfClass32> >::CreateTest
+42f3c 10 486 85
+42f4c 8 486 85
+42f54 4 107 43
+42f58 4 151 43
+42f5c 8 67 139
+42f64 4 481 101
+42f68 c 151 43
+42f74 10 486 85
+FUNC 42f84 48 0 testing::internal::TestFactoryImpl<FileIDTest_UniqueHashes_Test<google_breakpad::ElfClass32> >::CreateTest
+42f84 10 486 85
+42f94 8 486 85
+42f9c 4 107 43
+42fa0 4 220 43
+42fa4 8 67 139
+42fac 4 481 101
+42fb0 c 220 43
+42fbc 10 486 85
+FUNC 42fcc 48 0 testing::internal::TestFactoryImpl<FileIDTest_ElfClass_Test<google_breakpad::ElfClass64> >::CreateTest
+42fcc 10 486 85
+42fdc 8 486 85
+42fe4 4 107 43
+42fe8 4 127 43
+42fec 8 67 139
+42ff4 4 481 101
+42ff8 c 127 43
+43004 10 486 85
+FUNC 43014 48 0 testing::internal::TestFactoryImpl<FileIDTest_UniqueHashes_Test<google_breakpad::ElfClass64> >::CreateTest
+43014 10 486 85
+43024 8 486 85
+4302c 4 107 43
+43030 4 220 43
+43034 8 67 139
+4303c 4 481 101
+43040 c 220 43
+4304c 10 486 85
+FUNC 4305c 48 0 testing::internal::TestFactoryImpl<FileIDTest_BuildID_Test<google_breakpad::ElfClass64> >::CreateTest
+4305c 10 486 85
+4306c 8 486 85
+43074 4 107 43
+43078 4 151 43
+4307c 8 67 139
+43084 4 481 101
+43088 c 151 43
+43094 10 486 85
+FUNC 430a4 48 0 testing::internal::TestFactoryImpl<FileIDTest_BuildIDPH_Test<google_breakpad::ElfClass64> >::CreateTest
+430a4 10 486 85
+430b4 8 486 85
+430bc 4 107 43
+430c0 4 183 43
+430c4 8 67 139
+430cc 4 481 101
+430d0 c 183 43
+430dc 10 486 85
+FUNC 430ec 38 0 std::priv::__copy_trivial
+430ec 14 222 100
+43100 8 224 100
+43108 c 224 100
+43114 4 224 100
+43118 c 225 100
+FUNC 43124 10 0 std::__node_alloc::deallocate
+43124 8 161 101
+4312c 4 135 119
+43130 4 161 101
+FUNC 43134 1b0 0 std::priv::_Impl_vector<unsigned char, std::allocator<unsigned char> >::_M_range_insert<char*>
+43134 4 532 139
+43138 4 546 139
+4313c 14 532 139
+43150 4 546 139
+43154 c 549 139
+43160 c 355 114
+4316c 10 549 139
+4317c 4 476 139
+43180 8 478 139
+43188 4 479 139
+4318c 10 120 137
+4319c 8 480 139
+431a4 4 255 100
+431a8 4 480 139
+431ac 8 256 100
+431b4 c 256 100
+431c0 c 269 100
+431cc 4 510 114
+431d0 c 120 137
+431dc 4 492 139
+431e0 4 120 137
+431e4 4 492 139
+431e8 8 120 137
+431f0 8 492 139
+431f8 4 120 137
+431fc 4 494 139
+43200 4 269 100
+43204 4 494 139
+43208 4 269 100
+4320c 4 494 139
+43210 c 269 100
+4321c 8 192 139
+43224 c 173 139
+43230 14 41 138
+43244 4 175 139
+43248 8 176 139
+43250 4 356 101
+43254 8 346 101
+4325c 4 177 139
+43260 8 347 101
+43268 4 348 101
+4326c 4 352 101
+43270 4 353 101
+43274 38 120 137
+432ac 8 662 139
+432b4 4 319 101
+432b8 4 323 101
+432bc 4 443 139
+432c0 4 666 139
+432c4 4 667 139
+432c8 4 668 139
+432cc 18 556 139
+FUNC 432e4 70 0 google_breakpad::test_assembler::Section::~Section
+432e4 18 277 62
+432fc 18 277 62
+43314 8 191 103
+4331c 10 449 62
+4332c 8 87 139
+43334 4 88 139
+43338 8 323 101
+43340 4 156 132
+43344 c 277 62
+43350 4 156 132
+FUNC 43354 24 0 google_breakpad::test_assembler::Section::~Section
+43354 c 277 62
+43360 8 277 62
+43368 4 277 62
+4336c 8 277 62
+43374 4 277 62
+FUNC 43378 14 0 google_breakpad::synth_elf::Notes::~Notes
+43378 14 181 51
+FUNC 4338c 24 0 google_breakpad::synth_elf::Notes::~Notes
+4338c c 181 51
+43398 8 181 51
+433a0 4 181 51
+433a4 8 181 51
+433ac 4 181 51
+FUNC 433b0 68 0 PopulateSection
+433b0 10 62 43
+433c0 8 62 43
+433c8 4 63 43
+433cc 4 303 62
+433d0 8 63 43
+433d8 1c 64 43
+433f4 8 303 62
+433fc 4 63 43
+43400 8 303 62
+43408 10 65 43
+FUNC 43418 50 0 google_breakpad::test_assembler::Section::Section
+43418 c 272 62
+43424 4 272 62
+43428 c 273 62
+43434 4 273 62
+43438 8 273 62
+43440 8 273 62
+43448 4 67 139
+4344c 4 273 62
+43450 4 67 139
+43454 4 481 101
+43458 4 273 62
+4345c c 273 62
+FUNC 43468 80 0 testing::internal::GetPrefixUntilComma
+43468 4 585 85
+4346c 4 586 85
+43470 c 585 85
+4347c 8 585 85
+43484 8 586 85
+4348c 4 587 85
+43490 14 587 85
+434a4 4 355 114
+434a8 4 112 132
+434ac 8 324 131
+434b4 4 481 101
+434b8 4 324 131
+434bc 10 148 137
+434cc 4 325 131
+434d0 4 101 103
+434d4 14 588 85
+FUNC 434e8 88 0 testing::internal::StripTrailingSpaces
+434e8 10 2214 87
+434f8 c 2214 87
+43504 c 2216 87
+43510 4 2194 87
+43514 4 2216 87
+43518 8 2194 87
+43520 8 2216 87
+43528 4 797 131
+4352c 8 168 140
+43534 8 168 140
+4353c 14 798 131
+43550 c 2218 87
+4355c 14 2219 87
+FUNC 43570 88 0 std::operator+<char, std::char_traits<char>, std::allocator<char> >
+43570 10 29 134
+43580 c 29 134
+4358c 18 400 131
+435a4 4 120 132
+435a8 4 400 131
+435ac 4 481 101
+435b0 10 124 132
+435c0 4 101 103
+435c4 20 517 131
+435e4 14 42 134
+FUNC 435f8 64 0 std::priv::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, google_breakpad::test_assembler::Label>, std::priv::_Select1st<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, google_breakpad::test_assembler::Label> >, std::priv::_MapTraitsT<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, google_breakpad::test_assembler::Label> >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, google_breakpad::test_assembler::Label> > >::_M_erase
+435f8 18 655 135
+43610 4 657 135
+43614 8 658 135
+4361c 4 51 124
+43620 4 658 135
+43624 4 659 135
+43628 8 51 124
+43630 8 156 132
+43638 14 161 101
+4364c 10 664 135
+FUNC 4365c 48 0 google_breakpad::synth_elf::StringTable::~StringTable
+4365c 14 64 51
+43670 c 64 51
+4367c 8 531 136
+43684 8 532 136
+4368c 8 64 51
+43694 4 64 51
+43698 8 64 51
+436a0 4 64 51
+FUNC 436a4 24 0 google_breakpad::synth_elf::StringTable::~StringTable
+436a4 c 64 51
+436b0 8 64 51
+436b8 4 64 51
+436bc 8 64 51
+436c4 4 64 51
+FUNC 436c8 b8 0 google_breakpad::synth_elf::ELF::~ELF
+436c8 18 94 51
+436e0 14 94 51
+436f4 8 191 103
+436fc 4 57 103
+43700 4 77 113
+43704 14 57 103
+43718 8 87 139
+43720 4 88 139
+43724 8 323 101
+4372c 8 94 51
+43734 8 94 51
+4373c 8 94 51
+43744 8 94 51
+4374c 8 94 51
+43754 8 94 51
+4375c 8 94 51
+43764 8 94 51
+4376c 4 94 51
+43770 4 94 51
+43774 8 94 51
+4377c 4 94 51
+FUNC 43780 24 0 google_breakpad::synth_elf::ELF::~ELF
+43780 c 94 51
+4378c 8 94 51
+43794 4 94 51
+43798 8 94 51
+437a0 4 94 51
+FUNC 437a4 128 0 testing::internal::StreamableToString<int>
+437a4 c 243 79
+437b0 4 244 79
+437b4 c 243 79
+437c0 4 244 79
+437c4 4 243 79
+437c8 4 244 79
+437cc 8 1142 87
+437d4 4 131 79
+437d8 4 238 121
+437dc c 239 121
+437e8 c 181 122
+437f4 8 239 121
+437fc 8 239 121
+43804 c 181 122
+43810 4 199 121
+43814 18 211 121
+4382c 4 202 121
+43830 4 145 110
+43834 4 202 121
+43838 4 145 110
+4383c 4 202 121
+43840 8 145 110
+43848 c 351 117
+43854 8 351 117
+4385c 4 67 120
+43860 4 202 121
+43864 8 67 120
+4386c c 202 121
+43878 4 67 120
+4387c 4 57 123
+43880 c 67 120
+4388c 8 202 121
+43894 4 210 121
+43898 8 212 121
+438a0 c 244 79
+438ac 8 85 79
+438b4 18 245 79
+FUNC 438cc 1c0 0 testing::internal::TypeParameterizedTest<FileIDTest, testing::internal::TemplateSel<FileIDTest_ElfClass_Test>, testing::internal::Types1<google_breakpad::ElfClass64> >::Register
+438cc 1c 604 85
+438e8 4 621 85
+438ec c 604 85
+438f8 4 621 85
+438fc 8 604 85
+43904 c 621 85
+43910 4 604 85
+43914 4 621 85
+43918 4 621 85
+4391c 4 621 85
+43920 4 621 85
+43924 8 621 85
+4392c c 621 85
+43938 4 621 85
+4393c 4 621 85
+43940 4 85 88
+43944 4 621 85
+43948 c 621 85
+43954 4 621 85
+43958 4 621 85
+4395c c 621 85
+43968 4 621 85
+4396c 4 621 85
+43970 8 621 85
+43978 4 621 85
+4397c 4 621 85
+43980 14 621 85
+43994 c 621 85
+439a0 4 621 85
+439a4 4 621 85
+439a8 10 621 85
+439b8 18 85 88
+439d0 10 621 85
+439e0 4 484 85
+439e4 14 612 85
+439f8 4 484 85
+439fc 8 612 85
+43a04 8 484 85
+43a0c 14 612 85
+43a20 48 156 132
+43a68 24 626 85
+FUNC 43a8c 1f4 0 testing::internal::TypeParameterizedTest<FileIDTest, testing::internal::TemplateSel<FileIDTest_ElfClass_Test>, testing::internal::Types2<google_breakpad::ElfClass32, google_breakpad::ElfClass64> >::Register
+43a8c 1c 604 85
+43aa8 4 621 85
+43aac 8 604 85
+43ab4 4 621 85
+43ab8 8 604 85
+43ac0 8 621 85
+43ac8 8 604 85
+43ad0 8 621 85
+43ad8 4 621 85
+43adc 4 621 85
+43ae0 4 621 85
+43ae4 8 621 85
+43aec c 621 85
+43af8 4 621 85
+43afc 4 621 85
+43b00 4 621 85
+43b04 4 621 85
+43b08 10 621 85
+43b18 c 621 85
+43b24 4 621 85
+43b28 4 621 85
+43b2c c 621 85
+43b38 1c 621 85
+43b54 10 621 85
+43b64 14 621 85
+43b78 28 85 88
+43ba0 10 621 85
+43bb0 4 484 85
+43bb4 14 612 85
+43bc8 4 484 85
+43bcc 8 612 85
+43bd4 8 484 85
+43bdc 18 612 85
+43bf4 54 156 132
+43c48 18 625 85
+43c60 20 626 85
+FUNC 43c80 1c0 0 testing::internal::TypeParameterizedTest<FileIDTest, testing::internal::TemplateSel<FileIDTest_BuildID_Test>, testing::internal::Types1<google_breakpad::ElfClass64> >::Register
+43c80 1c 604 85
+43c9c 4 621 85
+43ca0 c 604 85
+43cac 4 621 85
+43cb0 8 604 85
+43cb8 c 621 85
+43cc4 4 604 85
+43cc8 4 621 85
+43ccc 4 621 85
+43cd0 4 621 85
+43cd4 4 621 85
+43cd8 8 621 85
+43ce0 c 621 85
+43cec 4 621 85
+43cf0 4 621 85
+43cf4 4 85 88
+43cf8 4 621 85
+43cfc c 621 85
+43d08 4 621 85
+43d0c 4 621 85
+43d10 c 621 85
+43d1c 4 621 85
+43d20 4 621 85
+43d24 8 621 85
+43d2c 4 621 85
+43d30 4 621 85
+43d34 14 621 85
+43d48 c 621 85
+43d54 4 621 85
+43d58 4 621 85
+43d5c 10 621 85
+43d6c 18 85 88
+43d84 10 621 85
+43d94 4 484 85
+43d98 14 612 85
+43dac 4 484 85
+43db0 8 612 85
+43db8 8 484 85
+43dc0 14 612 85
+43dd4 48 156 132
+43e1c 24 626 85
+FUNC 43e40 1f4 0 testing::internal::TypeParameterizedTest<FileIDTest, testing::internal::TemplateSel<FileIDTest_BuildID_Test>, testing::internal::Types2<google_breakpad::ElfClass32, google_breakpad::ElfClass64> >::Register
+43e40 1c 604 85
+43e5c 4 621 85
+43e60 8 604 85
+43e68 4 621 85
+43e6c 8 604 85
+43e74 8 621 85
+43e7c 8 604 85
+43e84 8 621 85
+43e8c 4 621 85
+43e90 4 621 85
+43e94 4 621 85
+43e98 8 621 85
+43ea0 c 621 85
+43eac 4 621 85
+43eb0 4 621 85
+43eb4 4 621 85
+43eb8 4 621 85
+43ebc 10 621 85
+43ecc c 621 85
+43ed8 4 621 85
+43edc 4 621 85
+43ee0 c 621 85
+43eec 1c 621 85
+43f08 10 621 85
+43f18 14 621 85
+43f2c 28 85 88
+43f54 10 621 85
+43f64 4 484 85
+43f68 14 612 85
+43f7c 4 484 85
+43f80 8 612 85
+43f88 8 484 85
+43f90 18 612 85
+43fa8 54 156 132
+43ffc 18 625 85
+44014 20 626 85
+FUNC 44034 1c0 0 testing::internal::TypeParameterizedTest<FileIDTest, testing::internal::TemplateSel<FileIDTest_BuildIDPH_Test>, testing::internal::Types1<google_breakpad::ElfClass64> >::Register
+44034 1c 604 85
+44050 4 621 85
+44054 c 604 85
+44060 4 621 85
+44064 8 604 85
+4406c c 621 85
+44078 4 604 85
+4407c 4 621 85
+44080 4 621 85
+44084 4 621 85
+44088 4 621 85
+4408c 8 621 85
+44094 c 621 85
+440a0 4 621 85
+440a4 4 621 85
+440a8 4 85 88
+440ac 4 621 85
+440b0 c 621 85
+440bc 4 621 85
+440c0 4 621 85
+440c4 c 621 85
+440d0 4 621 85
+440d4 4 621 85
+440d8 8 621 85
+440e0 4 621 85
+440e4 4 621 85
+440e8 14 621 85
+440fc c 621 85
+44108 4 621 85
+4410c 4 621 85
+44110 10 621 85
+44120 18 85 88
+44138 10 621 85
+44148 4 484 85
+4414c 14 612 85
+44160 4 484 85
+44164 8 612 85
+4416c 8 484 85
+44174 14 612 85
+44188 48 156 132
+441d0 24 626 85
+FUNC 441f4 1f4 0 testing::internal::TypeParameterizedTest<FileIDTest, testing::internal::TemplateSel<FileIDTest_BuildIDPH_Test>, testing::internal::Types2<google_breakpad::ElfClass32, google_breakpad::ElfClass64> >::Register
+441f4 1c 604 85
+44210 4 621 85
+44214 8 604 85
+4421c 4 621 85
+44220 8 604 85
+44228 8 621 85
+44230 8 604 85
+44238 8 621 85
+44240 4 621 85
+44244 4 621 85
+44248 4 621 85
+4424c 8 621 85
+44254 c 621 85
+44260 4 621 85
+44264 4 621 85
+44268 4 621 85
+4426c 4 621 85
+44270 10 621 85
+44280 c 621 85
+4428c 4 621 85
+44290 4 621 85
+44294 c 621 85
+442a0 1c 621 85
+442bc 10 621 85
+442cc 14 621 85
+442e0 28 85 88
+44308 10 621 85
+44318 4 484 85
+4431c 14 612 85
+44330 4 484 85
+44334 8 612 85
+4433c 8 484 85
+44344 18 612 85
+4435c 54 156 132
+443b0 18 625 85
+443c8 20 626 85
+FUNC 443e8 1c0 0 testing::internal::TypeParameterizedTest<FileIDTest, testing::internal::TemplateSel<FileIDTest_UniqueHashes_Test>, testing::internal::Types1<google_breakpad::ElfClass64> >::Register
+443e8 1c 604 85
+44404 4 621 85
+44408 c 604 85
+44414 4 621 85
+44418 8 604 85
+44420 c 621 85
+4442c 4 604 85
+44430 4 621 85
+44434 4 621 85
+44438 4 621 85
+4443c 4 621 85
+44440 8 621 85
+44448 c 621 85
+44454 4 621 85
+44458 4 621 85
+4445c 4 85 88
+44460 4 621 85
+44464 c 621 85
+44470 4 621 85
+44474 4 621 85
+44478 c 621 85
+44484 4 621 85
+44488 4 621 85
+4448c 8 621 85
+44494 4 621 85
+44498 4 621 85
+4449c 14 621 85
+444b0 c 621 85
+444bc 4 621 85
+444c0 4 621 85
+444c4 10 621 85
+444d4 18 85 88
+444ec 10 621 85
+444fc 4 484 85
+44500 14 612 85
+44514 4 484 85
+44518 8 612 85
+44520 8 484 85
+44528 14 612 85
+4453c 48 156 132
+44584 24 626 85
+FUNC 445a8 1f4 0 testing::internal::TypeParameterizedTest<FileIDTest, testing::internal::TemplateSel<FileIDTest_UniqueHashes_Test>, testing::internal::Types2<google_breakpad::ElfClass32, google_breakpad::ElfClass64> >::Register
+445a8 1c 604 85
+445c4 4 621 85
+445c8 8 604 85
+445d0 4 621 85
+445d4 8 604 85
+445dc 8 621 85
+445e4 8 604 85
+445ec 8 621 85
+445f4 4 621 85
+445f8 4 621 85
+445fc 4 621 85
+44600 8 621 85
+44608 c 621 85
+44614 4 621 85
+44618 4 621 85
+4461c 4 621 85
+44620 4 621 85
+44624 10 621 85
+44634 c 621 85
+44640 4 621 85
+44644 4 621 85
+44648 c 621 85
+44654 1c 621 85
+44670 10 621 85
+44680 14 621 85
+44694 28 85 88
+446bc 10 621 85
+446cc 4 484 85
+446d0 14 612 85
+446e4 4 484 85
+446e8 8 612 85
+446f0 8 484 85
+446f8 18 612 85
+44710 54 156 132
+44764 18 625 85
+4477c 20 626 85
+FUNC 4479c 48 0 FileIDTest<google_breakpad::ElfClass64>::~FileIDTest
+4479c 18 107 43
+447b4 c 107 43
+447c0 8 87 139
+447c8 4 88 139
+447cc 8 323 101
+447d4 4 107 43
+447d8 8 107 43
+447e0 4 107 43
+FUNC 447e4 14 0 FileIDTest_ElfClass_Test<google_breakpad::ElfClass64>::~FileIDTest_ElfClass_Test
+447e4 14 127 43
+FUNC 447f8 24 0 FileIDTest_ElfClass_Test<google_breakpad::ElfClass64>::~FileIDTest_ElfClass_Test
+447f8 c 127 43
+44804 8 127 43
+4480c 4 127 43
+44810 8 127 43
+44818 4 127 43
+FUNC 4481c 14 0 FileIDTest_BuildID_Test<google_breakpad::ElfClass64>::~FileIDTest_BuildID_Test
+4481c 14 151 43
+FUNC 44830 24 0 FileIDTest_BuildID_Test<google_breakpad::ElfClass64>::~FileIDTest_BuildID_Test
+44830 c 151 43
+4483c 8 151 43
+44844 4 151 43
+44848 8 151 43
+44850 4 151 43
+FUNC 44854 14 0 FileIDTest_BuildIDPH_Test<google_breakpad::ElfClass64>::~FileIDTest_BuildIDPH_Test
+44854 14 183 43
+FUNC 44868 24 0 FileIDTest_BuildIDPH_Test<google_breakpad::ElfClass64>::~FileIDTest_BuildIDPH_Test
+44868 c 183 43
+44874 8 183 43
+4487c 4 183 43
+44880 8 183 43
+44888 4 183 43
+FUNC 4488c 14 0 FileIDTest_UniqueHashes_Test<google_breakpad::ElfClass64>::~FileIDTest_UniqueHashes_Test
+4488c 14 220 43
+FUNC 448a0 24 0 FileIDTest_UniqueHashes_Test<google_breakpad::ElfClass64>::~FileIDTest_UniqueHashes_Test
+448a0 c 220 43
+448ac 8 220 43
+448b4 4 220 43
+448b8 8 220 43
+448c0 4 220 43
+FUNC 448c4 24 0 FileIDTest<google_breakpad::ElfClass64>::~FileIDTest
+448c4 c 107 43
+448d0 8 107 43
+448d8 4 107 43
+448dc 8 107 43
+448e4 4 107 43
+FUNC 448e8 48 0 FileIDTest<google_breakpad::ElfClass32>::~FileIDTest
+448e8 18 107 43
+44900 c 107 43
+4490c 8 87 139
+44914 4 88 139
+44918 8 323 101
+44920 4 107 43
+44924 8 107 43
+4492c 4 107 43
+FUNC 44930 14 0 FileIDTest_ElfClass_Test<google_breakpad::ElfClass32>::~FileIDTest_ElfClass_Test
+44930 14 127 43
+FUNC 44944 24 0 FileIDTest_ElfClass_Test<google_breakpad::ElfClass32>::~FileIDTest_ElfClass_Test
+44944 c 127 43
+44950 8 127 43
+44958 4 127 43
+4495c 8 127 43
+44964 4 127 43
+FUNC 44968 14 0 FileIDTest_BuildID_Test<google_breakpad::ElfClass32>::~FileIDTest_BuildID_Test
+44968 14 151 43
+FUNC 4497c 24 0 FileIDTest_BuildID_Test<google_breakpad::ElfClass32>::~FileIDTest_BuildID_Test
+4497c c 151 43
+44988 8 151 43
+44990 4 151 43
+44994 8 151 43
+4499c 4 151 43
+FUNC 449a0 14 0 FileIDTest_BuildIDPH_Test<google_breakpad::ElfClass32>::~FileIDTest_BuildIDPH_Test
+449a0 14 183 43
+FUNC 449b4 24 0 FileIDTest_BuildIDPH_Test<google_breakpad::ElfClass32>::~FileIDTest_BuildIDPH_Test
+449b4 c 183 43
+449c0 8 183 43
+449c8 4 183 43
+449cc 8 183 43
+449d4 4 183 43
+FUNC 449d8 14 0 FileIDTest_UniqueHashes_Test<google_breakpad::ElfClass32>::~FileIDTest_UniqueHashes_Test
+449d8 14 220 43
+FUNC 449ec 24 0 FileIDTest_UniqueHashes_Test<google_breakpad::ElfClass32>::~FileIDTest_UniqueHashes_Test
+449ec c 220 43
+449f8 8 220 43
+44a00 4 220 43
+44a04 8 220 43
+44a0c 4 220 43
+FUNC 44a10 24 0 FileIDTest<google_breakpad::ElfClass32>::~FileIDTest
+44a10 c 107 43
+44a1c 8 107 43
+44a24 4 107 43
+44a28 8 107 43
+44a30 4 107 43
+FUNC 44a34 27c 0 testing::internal::CmpHelperOpFailure<unsigned int, long unsigned int>
+44a34 10 1579 82
+44a44 4 1583 82
+44a48 c 1579 82
+44a54 4 1583 82
+44a58 18 1579 82
+44a70 4 1579 82
+44a74 4 306 82
+44a78 4 1579 82
+44a7c 4 1583 82
+44a80 4 306 82
+44a84 4 1579 82
+44a88 4 75 127
+44a8c 4 306 82
+44a90 4 131 79
+44a94 10 333 122
+44aa4 c 306 82
+44ab0 8 85 79
+44ab8 10 1583 82
+44ac8 8 306 82
+44ad0 4 131 79
+44ad4 10 333 122
+44ae4 c 306 82
+44af0 8 85 79
+44af8 8 1583 82
+44b00 4 254 121
+44b04 8 1583 82
+44b0c 8 306 82
+44b14 4 131 79
+44b18 10 333 122
+44b28 c 306 82
+44b34 8 85 79
+44b3c 8 1583 82
+44b44 4 75 127
+44b48 8 1583 82
+44b50 8 306 82
+44b58 4 131 79
+44b5c 10 333 122
+44b6c c 306 82
+44b78 8 85 79
+44b80 c 884 80
+44b8c 10 254 121
+44b9c c 75 127
+44ba8 8 886 80
+44bb0 8 306 82
+44bb8 4 131 79
+44bbc c 131 79
+44bc8 c 306 82
+44bd4 8 85 79
+44bdc 8 306 82
+44be4 4 131 79
+44be8 10 333 122
+44bf8 c 306 82
+44c04 8 85 79
+44c0c c 884 80
+44c18 8 263 121
+44c20 4 75 127
+44c24 8 263 121
+44c2c c 75 127
+44c38 8 886 80
+44c40 8 306 82
+44c48 4 131 79
+44c4c c 131 79
+44c58 c 306 82
+44c64 8 85 79
+44c6c c 1585 82
+44c78 10 156 132
+44c88 8 256 82
+44c90 20 1586 82
+FUNC 44cb0 1ec 0 FileIDTest<google_breakpad::ElfClass64>::GetElfContents
+44cb0 10 109 43
+44cc0 8 110 43
+44cc8 8 109 43
+44cd0 8 110 43
+44cd8 4 109 43
+44cdc 4 110 43
+44ce0 8 111 43
+44ce8 4 277 82
+44cec 4 111 43
+44cf0 4 1139 87
+44cf4 4 111 43
+44cf8 8 277 82
+44d00 4 111 43
+44d04 20 111 43
+44d24 4 111 43
+44d28 4 111 43
+44d2c 4 111 43
+44d30 1c 111 43
+44d4c 8 111 43
+44d54 c 111 43
+44d60 8 85 79
+44d68 8 111 43
+44d70 8 156 132
+44d78 10 256 82
+44d88 4 112 43
+44d8c 4 400 131
+44d90 4 1619 82
+44d94 8 400 131
+44d9c 4 112 43
+44da0 4 1619 82
+44da4 8 1619 82
+44dac 24 1619 82
+44dd0 8 112 43
+44dd8 4 1144 87
+44ddc c 298 82
+44de8 8 298 82
+44df0 14 112 43
+44e04 4 112 43
+44e08 4 112 43
+44e0c 8 112 43
+44e14 c 112 43
+44e20 8 85 79
+44e28 8 112 43
+44e30 10 256 82
+44e40 4 228 143
+44e44 c 256 82
+44e50 8 630 139
+44e58 8 269 100
+44e60 4 615 139
+44e64 14 510 139
+44e78 8 116 43
+44e80 8 156 132
+44e88 14 117 43
+FUNC 44e9c 250 0 FileIDTest_ElfClass_Test<google_breakpad::ElfClass64>::TestBody
+44e9c 4 127 43
+44ea0 c 130 43
+44eac c 127 43
+44eb8 4 130 43
+44ebc 10 127 43
+44ecc 4 127 43
+44ed0 4 130 43
+44ed4 4 134 43
+44ed8 8 135 43
+44ee0 4 130 43
+44ee4 4 453 131
+44ee8 14 134 43
+44efc c 135 43
+44f08 14 453 131
+44f1c 8 136 43
+44f24 18 139 43
+44f3c 4 143 43
+44f40 4 139 43
+44f44 28 139 43
+44f6c 8 156 132
+44f74 8 140 43
+44f7c c 141 43
+44f88 c 143 43
+44f94 4 1139 87
+44f98 4 143 43
+44f9c 4 277 82
+44fa0 4 143 43
+44fa4 20 143 43
+44fc4 4 143 43
+44fc8 4 143 43
+44fcc 4 143 43
+44fd0 1c 143 43
+44fec 8 143 43
+44ff4 c 143 43
+45000 8 85 79
+45008 8 143 43
+45010 8 156 132
+45018 8 256 82
+45020 10 146 43
+45030 28 148 43
+45058 4 1144 87
+4505c c 298 82
+45068 8 298 82
+45070 18 148 43
+45088 4 148 43
+4508c 4 148 43
+45090 8 148 43
+45098 c 148 43
+450a4 8 85 79
+450ac 8 148 43
+450b4 8 256 82
+450bc 8 135 43
+450c4 8 148 43
+450cc 20 149 43
+FUNC 450ec 374 0 FileIDTest_BuildID_Test<google_breakpad::ElfClass64>::TestBody
+450ec 4 151 43
+450f0 c 156 43
+450fc c 151 43
+45108 4 154 43
+4510c c 151 43
+45118 64 154 43
+4517c 4 156 43
+45180 c 154 43
+4518c 8 151 43
+45194 4 156 43
+45198 4 151 43
+4519c c 154 43
+451a8 4 156 43
+451ac c 157 43
+451b8 4 164 43
+451bc 4 165 43
+451c0 4 167 43
+451c4 4 157 43
+451c8 4 170 43
+451cc 10 164 43
+451dc 4 167 43
+451e0 4 175 43
+451e4 4 164 43
+451e8 c 165 43
+451f4 10 303 62
+45204 14 167 43
+45218 28 167 43
+45240 8 156 132
+45248 10 184 51
+45258 10 170 43
+45268 c 184 51
+45274 4 170 43
+45278 18 169 43
+45290 8 156 132
+45298 14 171 43
+452ac 28 171 43
+452d4 8 156 132
+452dc 8 172 43
+452e4 c 173 43
+452f0 c 175 43
+452fc 4 1139 87
+45300 4 175 43
+45304 4 277 82
+45308 4 175 43
+4530c 20 175 43
+4532c 4 175 43
+45330 4 175 43
+45334 4 175 43
+45338 1c 175 43
+45354 8 175 43
+4535c c 175 43
+45368 8 85 79
+45370 8 175 43
+45378 8 156 132
+45380 8 256 82
+45388 10 178 43
+45398 28 180 43
+453c0 4 1144 87
+453c4 c 298 82
+453d0 8 298 82
+453d8 18 180 43
+453f0 4 180 43
+453f4 4 180 43
+453f8 8 180 43
+45400 c 180 43
+4540c 8 85 79
+45414 8 180 43
+4541c 8 256 82
+45424 8 168 43
+4542c 8 165 43
+45434 8 180 43
+4543c 24 181 43
+FUNC 45460 3cc 0 FileIDTest_BuildIDPH_Test<google_breakpad::ElfClass64>::TestBody
+45460 4 183 43
+45464 c 188 43
+45470 c 183 43
+4547c 4 186 43
+45480 c 183 43
+4548c 64 186 43
+454f0 4 188 43
+454f4 c 186 43
+45500 8 183 43
+45508 4 188 43
+4550c 4 183 43
+45510 c 186 43
+4551c 4 188 43
+45520 c 189 43
+4552c 4 196 43
+45530 4 197 43
+45534 4 199 43
+45538 4 189 43
+4553c 4 202 43
+45540 10 196 43
+45550 4 199 43
+45554 4 210 43
+45558 4 196 43
+4555c c 197 43
+45568 10 303 62
+45578 14 199 43
+4558c 28 199 43
+455b4 8 156 132
+455bc 10 184 51
+455cc 10 202 43
+455dc c 184 51
+455e8 4 202 43
+455ec 1c 201 43
+45608 8 156 132
+45610 14 204 43
+45624 18 203 43
+4563c 8 156 132
+45644 14 205 43
+45658 2c 205 43
+45684 4 156 132
+45688 4 205 43
+4568c 4 156 132
+45690 18 206 43
+456a8 8 207 43
+456b0 c 208 43
+456bc c 210 43
+456c8 4 1139 87
+456cc 4 210 43
+456d0 4 277 82
+456d4 4 210 43
+456d8 20 210 43
+456f8 4 210 43
+456fc 4 210 43
+45700 4 210 43
+45704 1c 210 43
+45720 8 210 43
+45728 c 210 43
+45734 8 85 79
+4573c 8 210 43
+45744 8 156 132
+4574c 8 256 82
+45754 10 213 43
+45764 28 215 43
+4578c 4 1144 87
+45790 c 298 82
+4579c 8 298 82
+457a4 18 215 43
+457bc 4 215 43
+457c0 4 215 43
+457c4 8 215 43
+457cc c 215 43
+457d8 8 85 79
+457e0 8 215 43
+457e8 8 256 82
+457f0 8 200 43
+457f8 8 197 43
+45800 8 215 43
+45808 24 216 43
+FUNC 4582c 464 0 FileIDTest_UniqueHashes_Test<google_breakpad::ElfClass64>::TestBody
+4582c 4 220 43
+45830 4 222 43
+45834 c 220 43
+45840 4 222 43
+45844 4 232 43
+45848 4 220 43
+4584c 8 222 43
+45854 4 220 43
+45858 4 222 43
+4585c 14 220 43
+45870 4 222 43
+45874 4 224 43
+45878 4 230 43
+4587c 4 232 43
+45880 4 222 43
+45884 4 232 43
+45888 c 224 43
+45894 4 229 43
+45898 8 235 43
+458a0 4 224 43
+458a4 14 229 43
+458b8 c 230 43
+458c4 10 231 43
+458d4 10 232 43
+458e4 28 232 43
+4590c 8 156 132
+45914 c 233 43
+45920 10 234 43
+45930 10 235 43
+45940 28 235 43
+45968 8 156 132
+45970 8 236 43
+45978 c 237 43
+45984 8 233 43
+4598c 8 230 43
+45994 8 237 43
+4599c c 240 43
+459a8 4 1139 87
+459ac 4 240 43
+459b0 c 277 82
+459bc 4 240 43
+459c0 24 240 43
+459e4 1c 240 43
+45a00 8 240 43
+45a08 c 240 43
+45a14 8 85 79
+45a1c 8 240 43
+45a24 8 156 132
+45a2c 4 256 82
+45a30 4 250 43
+45a34 4 256 82
+45a38 10 242 43
+45a48 14 246 43
+45a5c c 247 43
+45a68 c 248 43
+45a74 10 249 43
+45a84 14 250 43
+45a98 28 250 43
+45ac0 8 156 132
+45ac8 10 251 43
+45ad8 10 252 43
+45ae8 28 252 43
+45b10 8 156 132
+45b18 8 253 43
+45b20 c 254 43
+45b2c 8 248 43
+45b34 8 247 43
+45b3c 8 254 43
+45b44 c 257 43
+45b50 4 1139 87
+45b54 4 257 43
+45b58 4 277 82
+45b5c 4 257 43
+45b60 24 257 43
+45b84 1c 257 43
+45ba0 8 257 43
+45ba8 c 257 43
+45bb4 8 85 79
+45bbc 8 257 43
+45bc4 8 156 132
+45bcc 8 256 82
+45bd4 10 259 43
+45be4 28 262 43
+45c0c 4 1144 87
+45c10 c 298 82
+45c1c 8 298 82
+45c24 18 262 43
+45c3c 8 262 43
+45c44 c 262 43
+45c50 8 85 79
+45c58 8 262 43
+45c60 8 256 82
+45c68 28 263 43
+FUNC 45c90 1ec 0 FileIDTest<google_breakpad::ElfClass32>::GetElfContents
+45c90 10 109 43
+45ca0 8 110 43
+45ca8 8 109 43
+45cb0 8 110 43
+45cb8 4 109 43
+45cbc 4 110 43
+45cc0 8 111 43
+45cc8 4 277 82
+45ccc 4 111 43
+45cd0 4 1139 87
+45cd4 4 111 43
+45cd8 8 277 82
+45ce0 4 111 43
+45ce4 20 111 43
+45d04 4 111 43
+45d08 4 111 43
+45d0c 4 111 43
+45d10 1c 111 43
+45d2c 8 111 43
+45d34 c 111 43
+45d40 8 85 79
+45d48 8 111 43
+45d50 8 156 132
+45d58 10 256 82
+45d68 4 112 43
+45d6c 4 400 131
+45d70 4 1619 82
+45d74 8 400 131
+45d7c 4 112 43
+45d80 4 1619 82
+45d84 8 1619 82
+45d8c 24 1619 82
+45db0 8 112 43
+45db8 4 1144 87
+45dbc c 298 82
+45dc8 8 298 82
+45dd0 14 112 43
+45de4 4 112 43
+45de8 4 112 43
+45dec 8 112 43
+45df4 c 112 43
+45e00 8 85 79
+45e08 8 112 43
+45e10 10 256 82
+45e20 4 228 143
+45e24 c 256 82
+45e30 8 630 139
+45e38 8 269 100
+45e40 4 615 139
+45e44 14 510 139
+45e58 8 116 43
+45e60 8 156 132
+45e68 14 117 43
+FUNC 45e7c 250 0 FileIDTest_ElfClass_Test<google_breakpad::ElfClass32>::TestBody
+45e7c 4 127 43
+45e80 c 130 43
+45e8c c 127 43
+45e98 4 130 43
+45e9c 10 127 43
+45eac 4 127 43
+45eb0 4 130 43
+45eb4 4 134 43
+45eb8 8 135 43
+45ec0 4 130 43
+45ec4 4 453 131
+45ec8 14 134 43
+45edc c 135 43
+45ee8 14 453 131
+45efc 8 136 43
+45f04 18 139 43
+45f1c 4 143 43
+45f20 4 139 43
+45f24 28 139 43
+45f4c 8 156 132
+45f54 8 140 43
+45f5c c 141 43
+45f68 c 143 43
+45f74 4 1139 87
+45f78 4 143 43
+45f7c 4 277 82
+45f80 4 143 43
+45f84 20 143 43
+45fa4 4 143 43
+45fa8 4 143 43
+45fac 4 143 43
+45fb0 1c 143 43
+45fcc 8 143 43
+45fd4 c 143 43
+45fe0 8 85 79
+45fe8 8 143 43
+45ff0 8 156 132
+45ff8 8 256 82
+46000 10 146 43
+46010 28 148 43
+46038 4 1144 87
+4603c c 298 82
+46048 8 298 82
+46050 18 148 43
+46068 4 148 43
+4606c 4 148 43
+46070 8 148 43
+46078 c 148 43
+46084 8 85 79
+4608c 8 148 43
+46094 8 256 82
+4609c 8 135 43
+460a4 8 148 43
+460ac 20 149 43
+FUNC 460cc 374 0 FileIDTest_BuildID_Test<google_breakpad::ElfClass32>::TestBody
+460cc 4 151 43
+460d0 c 156 43
+460dc c 151 43
+460e8 4 154 43
+460ec c 151 43
+460f8 64 154 43
+4615c 4 156 43
+46160 c 154 43
+4616c 8 151 43
+46174 4 156 43
+46178 4 151 43
+4617c c 154 43
+46188 4 156 43
+4618c c 157 43
+46198 4 164 43
+4619c 4 165 43
+461a0 4 167 43
+461a4 4 157 43
+461a8 4 170 43
+461ac 10 164 43
+461bc 4 167 43
+461c0 4 175 43
+461c4 4 164 43
+461c8 c 165 43
+461d4 10 303 62
+461e4 14 167 43
+461f8 28 167 43
+46220 8 156 132
+46228 10 184 51
+46238 10 170 43
+46248 c 184 51
+46254 4 170 43
+46258 18 169 43
+46270 8 156 132
+46278 14 171 43
+4628c 28 171 43
+462b4 8 156 132
+462bc 8 172 43
+462c4 c 173 43
+462d0 c 175 43
+462dc 4 1139 87
+462e0 4 175 43
+462e4 4 277 82
+462e8 4 175 43
+462ec 20 175 43
+4630c 4 175 43
+46310 4 175 43
+46314 4 175 43
+46318 1c 175 43
+46334 8 175 43
+4633c c 175 43
+46348 8 85 79
+46350 8 175 43
+46358 8 156 132
+46360 8 256 82
+46368 10 178 43
+46378 28 180 43
+463a0 4 1144 87
+463a4 c 298 82
+463b0 8 298 82
+463b8 18 180 43
+463d0 4 180 43
+463d4 4 180 43
+463d8 8 180 43
+463e0 c 180 43
+463ec 8 85 79
+463f4 8 180 43
+463fc 8 256 82
+46404 8 168 43
+4640c 8 165 43
+46414 8 180 43
+4641c 24 181 43
+FUNC 46440 3cc 0 FileIDTest_BuildIDPH_Test<google_breakpad::ElfClass32>::TestBody
+46440 4 183 43
+46444 c 188 43
+46450 c 183 43
+4645c 4 186 43
+46460 c 183 43
+4646c 64 186 43
+464d0 4 188 43
+464d4 c 186 43
+464e0 8 183 43
+464e8 4 188 43
+464ec 4 183 43
+464f0 c 186 43
+464fc 4 188 43
+46500 c 189 43
+4650c 4 196 43
+46510 4 197 43
+46514 4 199 43
+46518 4 189 43
+4651c 4 202 43
+46520 10 196 43
+46530 4 199 43
+46534 4 210 43
+46538 4 196 43
+4653c c 197 43
+46548 10 303 62
+46558 14 199 43
+4656c 28 199 43
+46594 8 156 132
+4659c 10 184 51
+465ac 10 202 43
+465bc c 184 51
+465c8 4 202 43
+465cc 1c 201 43
+465e8 8 156 132
+465f0 14 204 43
+46604 18 203 43
+4661c 8 156 132
+46624 14 205 43
+46638 2c 205 43
+46664 4 156 132
+46668 4 205 43
+4666c 4 156 132
+46670 18 206 43
+46688 8 207 43
+46690 c 208 43
+4669c c 210 43
+466a8 4 1139 87
+466ac 4 210 43
+466b0 4 277 82
+466b4 4 210 43
+466b8 20 210 43
+466d8 4 210 43
+466dc 4 210 43
+466e0 4 210 43
+466e4 1c 210 43
+46700 8 210 43
+46708 c 210 43
+46714 8 85 79
+4671c 8 210 43
+46724 8 156 132
+4672c 8 256 82
+46734 10 213 43
+46744 28 215 43
+4676c 4 1144 87
+46770 c 298 82
+4677c 8 298 82
+46784 18 215 43
+4679c 4 215 43
+467a0 4 215 43
+467a4 8 215 43
+467ac c 215 43
+467b8 8 85 79
+467c0 8 215 43
+467c8 8 256 82
+467d0 8 200 43
+467d8 8 197 43
+467e0 8 215 43
+467e8 24 216 43
+FUNC 4680c 464 0 FileIDTest_UniqueHashes_Test<google_breakpad::ElfClass32>::TestBody
+4680c 4 220 43
+46810 4 222 43
+46814 c 220 43
+46820 4 222 43
+46824 4 232 43
+46828 4 220 43
+4682c 8 222 43
+46834 4 220 43
+46838 4 222 43
+4683c 14 220 43
+46850 4 222 43
+46854 4 224 43
+46858 4 230 43
+4685c 4 232 43
+46860 4 222 43
+46864 4 232 43
+46868 c 224 43
+46874 4 229 43
+46878 8 235 43
+46880 4 224 43
+46884 14 229 43
+46898 c 230 43
+468a4 10 231 43
+468b4 10 232 43
+468c4 28 232 43
+468ec 8 156 132
+468f4 c 233 43
+46900 10 234 43
+46910 10 235 43
+46920 28 235 43
+46948 8 156 132
+46950 8 236 43
+46958 c 237 43
+46964 8 233 43
+4696c 8 230 43
+46974 8 237 43
+4697c c 240 43
+46988 4 1139 87
+4698c 4 240 43
+46990 c 277 82
+4699c 4 240 43
+469a0 24 240 43
+469c4 1c 240 43
+469e0 8 240 43
+469e8 c 240 43
+469f4 8 85 79
+469fc 8 240 43
+46a04 8 156 132
+46a0c 4 256 82
+46a10 4 250 43
+46a14 4 256 82
+46a18 10 242 43
+46a28 14 246 43
+46a3c c 247 43
+46a48 c 248 43
+46a54 10 249 43
+46a64 14 250 43
+46a78 28 250 43
+46aa0 8 156 132
+46aa8 10 251 43
+46ab8 10 252 43
+46ac8 28 252 43
+46af0 8 156 132
+46af8 8 253 43
+46b00 c 254 43
+46b0c 8 248 43
+46b14 8 247 43
+46b1c 8 254 43
+46b24 c 257 43
+46b30 4 1139 87
+46b34 4 257 43
+46b38 4 277 82
+46b3c 4 257 43
+46b40 24 257 43
+46b64 1c 257 43
+46b80 8 257 43
+46b88 c 257 43
+46b94 8 85 79
+46b9c 8 257 43
+46ba4 8 156 132
+46bac 8 256 82
+46bb4 10 259 43
+46bc4 28 262 43
+46bec 4 1144 87
+46bf0 c 298 82
+46bfc 8 298 82
+46c04 18 262 43
+46c1c 8 262 43
+46c24 c 262 43
+46c30 8 85 79
+46c38 8 262 43
+46c40 8 256 82
+46c48 28 263 43
+FUNC 46c70 4 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_read_decimal_ptr_Test>::~TestFactoryImpl
+46c70 4 484 85
+FUNC 46c74 4 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_read_hex_ptr_Test>::~TestFactoryImpl
+46c74 4 484 85
+FUNC 46c78 4 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_memchr_Test>::~TestFactoryImpl
+46c78 4 484 85
+FUNC 46c7c 4 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_strrchr_Test>::~TestFactoryImpl
+46c7c 4 484 85
+FUNC 46c80 4 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_strchr_Test>::~TestFactoryImpl
+46c80 4 484 85
+FUNC 46c84 4 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_uitos_Test>::~TestFactoryImpl
+46c84 4 484 85
+FUNC 46c88 4 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_uint_len_Test>::~TestFactoryImpl
+46c88 4 484 85
+FUNC 46c8c 4 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_strtoui_Test>::~TestFactoryImpl
+46c8c 4 484 85
+FUNC 46c90 4 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_strcmp_Test>::~TestFactoryImpl
+46c90 4 484 85
+FUNC 46c94 4 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_strlen_Test>::~TestFactoryImpl
+46c94 4 484 85
+FUNC 46c98 4 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_strlen_Test>::~TestFactoryImpl
+46c98 4 484 85
+FUNC 46c9c 4 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_strcmp_Test>::~TestFactoryImpl
+46c9c 4 484 85
+FUNC 46ca0 4 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_strtoui_Test>::~TestFactoryImpl
+46ca0 4 484 85
+FUNC 46ca4 4 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_uint_len_Test>::~TestFactoryImpl
+46ca4 4 484 85
+FUNC 46ca8 4 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_uitos_Test>::~TestFactoryImpl
+46ca8 4 484 85
+FUNC 46cac 4 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_strchr_Test>::~TestFactoryImpl
+46cac 4 484 85
+FUNC 46cb0 4 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_strrchr_Test>::~TestFactoryImpl
+46cb0 4 484 85
+FUNC 46cb4 4 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_memchr_Test>::~TestFactoryImpl
+46cb4 4 484 85
+FUNC 46cb8 4 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_read_hex_ptr_Test>::~TestFactoryImpl
+46cb8 4 484 85
+FUNC 46cbc 4 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_read_decimal_ptr_Test>::~TestFactoryImpl
+46cbc 4 484 85
+FUNC 46cc0 14 0 LinuxLibcSupportTest_read_decimal_ptr_Test::~LinuxLibcSupportTest_read_decimal_ptr_Test
+46cc0 14 194 46
+FUNC 46cd4 24 0 LinuxLibcSupportTest_read_decimal_ptr_Test::~LinuxLibcSupportTest_read_decimal_ptr_Test
+46cd4 c 194 46
+46ce0 8 194 46
+46ce8 4 194 46
+46cec 8 194 46
+46cf4 4 194 46
+FUNC 46cf8 14 0 LinuxLibcSupportTest_read_hex_ptr_Test::~LinuxLibcSupportTest_read_hex_ptr_Test
+46cf8 14 169 46
+FUNC 46d0c 24 0 LinuxLibcSupportTest_read_hex_ptr_Test::~LinuxLibcSupportTest_read_hex_ptr_Test
+46d0c c 169 46
+46d18 8 169 46
+46d20 4 169 46
+46d24 8 169 46
+46d2c 4 169 46
+FUNC 46d30 14 0 LinuxLibcSupportTest_memchr_Test::~LinuxLibcSupportTest_memchr_Test
+46d30 14 157 46
+FUNC 46d44 24 0 LinuxLibcSupportTest_memchr_Test::~LinuxLibcSupportTest_memchr_Test
+46d44 c 157 46
+46d50 8 157 46
+46d58 4 157 46
+46d5c 8 157 46
+46d64 4 157 46
+FUNC 46d68 14 0 LinuxLibcSupportTest_strrchr_Test::~LinuxLibcSupportTest_strrchr_Test
+46d68 14 143 46
+FUNC 46d7c 24 0 LinuxLibcSupportTest_strrchr_Test::~LinuxLibcSupportTest_strrchr_Test
+46d7c c 143 46
+46d88 8 143 46
+46d90 4 143 46
+46d94 8 143 46
+46d9c 4 143 46
+FUNC 46da0 14 0 LinuxLibcSupportTest_strchr_Test::~LinuxLibcSupportTest_strchr_Test
+46da0 14 129 46
+FUNC 46db4 24 0 LinuxLibcSupportTest_strchr_Test::~LinuxLibcSupportTest_strchr_Test
+46db4 c 129 46
+46dc0 8 129 46
+46dc8 4 129 46
+46dcc 8 129 46
+46dd4 4 129 46
+FUNC 46dd8 14 0 LinuxLibcSupportTest_uitos_Test::~LinuxLibcSupportTest_uitos_Test
+46dd8 14 106 46
+FUNC 46dec 24 0 LinuxLibcSupportTest_uitos_Test::~LinuxLibcSupportTest_uitos_Test
+46dec c 106 46
+46df8 8 106 46
+46e00 4 106 46
+46e04 8 106 46
+46e0c 4 106 46
+FUNC 46e10 14 0 LinuxLibcSupportTest_uint_len_Test::~LinuxLibcSupportTest_uint_len_Test
+46e10 14 92 46
+FUNC 46e24 24 0 LinuxLibcSupportTest_uint_len_Test::~LinuxLibcSupportTest_uint_len_Test
+46e24 c 92 46
+46e30 8 92 46
+46e38 4 92 46
+46e3c 8 92 46
+46e44 4 92 46
+FUNC 46e48 14 0 LinuxLibcSupportTest_strtoui_Test::~LinuxLibcSupportTest_strtoui_Test
+46e48 14 71 46
+FUNC 46e5c 24 0 LinuxLibcSupportTest_strtoui_Test::~LinuxLibcSupportTest_strtoui_Test
+46e5c c 71 46
+46e68 8 71 46
+46e70 4 71 46
+46e74 8 71 46
+46e7c 4 71 46
+FUNC 46e80 14 0 LinuxLibcSupportTest_strcmp_Test::~LinuxLibcSupportTest_strcmp_Test
+46e80 14 46 46
+FUNC 46e94 24 0 LinuxLibcSupportTest_strcmp_Test::~LinuxLibcSupportTest_strcmp_Test
+46e94 c 46 46
+46ea0 8 46 46
+46ea8 4 46 46
+46eac 8 46 46
+46eb4 4 46 46
+FUNC 46eb8 14 0 LinuxLibcSupportTest_strlen_Test::~LinuxLibcSupportTest_strlen_Test
+46eb8 14 37 46
+FUNC 46ecc 24 0 LinuxLibcSupportTest_strlen_Test::~LinuxLibcSupportTest_strlen_Test
+46ecc c 37 46
+46ed8 8 37 46
+46ee0 4 37 46
+46ee4 8 37 46
+46eec 4 37 46
+FUNC 46ef0 3c 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_read_decimal_ptr_Test>::CreateTest
+46ef0 10 486 85
+46f00 8 486 85
+46f08 8 194 46
+46f10 4 486 85
+46f14 c 194 46
+46f20 c 486 85
+FUNC 46f2c 3c 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_read_hex_ptr_Test>::CreateTest
+46f2c 10 486 85
+46f3c 8 486 85
+46f44 8 169 46
+46f4c 4 486 85
+46f50 c 169 46
+46f5c c 486 85
+FUNC 46f68 3c 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_memchr_Test>::CreateTest
+46f68 10 486 85
+46f78 8 486 85
+46f80 8 157 46
+46f88 4 486 85
+46f8c c 157 46
+46f98 c 486 85
+FUNC 46fa4 3c 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_strrchr_Test>::CreateTest
+46fa4 10 486 85
+46fb4 8 486 85
+46fbc 8 143 46
+46fc4 4 486 85
+46fc8 c 143 46
+46fd4 c 486 85
+FUNC 46fe0 3c 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_strchr_Test>::CreateTest
+46fe0 10 486 85
+46ff0 8 486 85
+46ff8 8 129 46
+47000 4 486 85
+47004 c 129 46
+47010 c 486 85
+FUNC 4701c 3c 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_uitos_Test>::CreateTest
+4701c 10 486 85
+4702c 8 486 85
+47034 8 106 46
+4703c 4 486 85
+47040 c 106 46
+4704c c 486 85
+FUNC 47058 3c 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_uint_len_Test>::CreateTest
+47058 10 486 85
+47068 8 486 85
+47070 8 92 46
+47078 4 486 85
+4707c c 92 46
+47088 c 486 85
+FUNC 47094 3c 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_strtoui_Test>::CreateTest
+47094 10 486 85
+470a4 8 486 85
+470ac 8 71 46
+470b4 4 486 85
+470b8 c 71 46
+470c4 c 486 85
+FUNC 470d0 3c 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_strcmp_Test>::CreateTest
+470d0 10 486 85
+470e0 8 486 85
+470e8 8 46 46
+470f0 4 486 85
+470f4 c 46 46
+47100 c 486 85
+FUNC 4710c 3c 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_strlen_Test>::CreateTest
+4710c 10 486 85
+4711c 8 486 85
+47124 8 37 46
+4712c 4 486 85
+47130 c 37 46
+4713c c 486 85
+FUNC 47148 148 0 LinuxLibcSupportTest_strlen_Test::TestBody
+47148 18 37 46
+47160 8 1471 82
+47168 c 37 46
+47174 8 1471 82
+4717c 4 256 82
+47180 8 40 46
+47188 c 42 46
+47194 8 42 46
+4719c 4 42 46
+471a0 c 1481 82
+471ac c 1482 82
+471b8 20 1382 82
+471d8 1c 1471 82
+471f4 10 156 132
+47204 8 42 46
+4720c 4 302 82
+47210 4 42 46
+47214 4 42 46
+47218 8 302 82
+47220 18 42 46
+47238 8 42 46
+47240 c 42 46
+4724c 8 85 79
+47254 8 42 46
+4725c 18 256 82
+47274 4 43 46
+47278 18 44 46
+FUNC 47290 124 0 LinuxLibcSupportTest_strcmp_Test::TestBody
+47290 14 46 46
+472a4 10 1512 82
+472b4 8 46 46
+472bc c 1512 82
+472c8 8 60 46
+472d0 10 62 46
+472e0 8 63 46
+472e8 8 64 46
+472f0 8 65 46
+472f8 8 66 46
+47300 14 67 46
+47314 18 1512 82
+4732c 8 67 46
+47334 4 302 82
+47338 4 67 46
+4733c 8 302 82
+47344 18 67 46
+4735c 8 67 46
+47364 c 67 46
+47370 8 85 79
+47378 8 67 46
+47380 18 256 82
+47398 4 68 46
+4739c 18 69 46
+FUNC 473b4 73c 0 LinuxLibcSupportTest_strtoui_Test::TestBody
+473b4 4 71 46
+473b8 4 74 46
+473bc 8 71 46
+473c4 c 74 46
+473d0 c 71 46
+473dc c 74 46
+473e8 4 1139 87
+473ec 10 277 82
+473fc 4 74 46
+47400 20 74 46
+47420 4 74 46
+47424 4 74 46
+47428 18 74 46
+47440 8 256 82
+47448 18 75 46
+47460 4 1139 87
+47464 4 277 82
+47468 4 75 46
+4746c 20 75 46
+4748c 4 75 46
+47490 4 75 46
+47494 18 75 46
+474ac 8 256 82
+474b4 18 76 46
+474cc 4 1139 87
+474d0 4 277 82
+474d4 4 76 46
+474d8 20 76 46
+474f8 4 76 46
+474fc 4 76 46
+47500 18 76 46
+47518 8 256 82
+47520 18 77 46
+47538 4 1139 87
+4753c 4 277 82
+47540 4 77 46
+47544 20 77 46
+47564 4 77 46
+47568 4 77 46
+4756c 18 77 46
+47584 8 256 82
+4758c 18 78 46
+475a4 4 1139 87
+475a8 4 277 82
+475ac 4 78 46
+475b0 20 78 46
+475d0 4 78 46
+475d4 4 78 46
+475d8 18 78 46
+475f0 4 256 82
+475f4 8 80 46
+475fc 4 256 82
+47600 c 80 46
+4760c 4 1139 87
+47610 4 80 46
+47614 4 277 82
+47618 4 80 46
+4761c 20 80 46
+4763c 4 80 46
+47640 4 80 46
+47644 18 80 46
+4765c 4 256 82
+47660 8 1512 82
+47668 4 256 82
+4766c 4 81 46
+47670 1c 1512 82
+4768c 8 81 46
+47694 4 302 82
+47698 4 81 46
+4769c 8 302 82
+476a4 18 81 46
+476bc 4 256 82
+476c0 8 82 46
+476c8 4 256 82
+476cc c 82 46
+476d8 4 1139 87
+476dc 4 82 46
+476e0 4 277 82
+476e4 4 82 46
+476e8 20 82 46
+47708 4 82 46
+4770c 4 82 46
+47710 18 82 46
+47728 4 82 46
+4772c 4 82 46
+47730 8 82 46
+47738 c 82 46
+47744 8 85 79
+4774c 8 82 46
+47754 8 156 132
+4775c 10 256 82
+4776c 4 83 46
+47770 4 1512 82
+47774 4 83 46
+47778 14 1512 82
+4778c 8 83 46
+47794 4 302 82
+47798 4 83 46
+4779c 8 302 82
+477a4 18 83 46
+477bc 8 83 46
+477c4 c 83 46
+477d0 8 85 79
+477d8 8 83 46
+477e0 c 256 82
+477ec 4 84 46
+477f0 4 256 82
+477f4 c 84 46
+47800 4 1139 87
+47804 4 84 46
+47808 4 277 82
+4780c 4 84 46
+47810 20 84 46
+47830 4 84 46
+47834 4 84 46
+47838 4 84 46
+4783c 1c 84 46
+47858 8 84 46
+47860 c 84 46
+4786c 8 85 79
+47874 8 84 46
+4787c 8 156 132
+47884 c 256 82
+47890 4 1512 82
+47894 c 256 82
+478a0 4 85 46
+478a4 4 1512 82
+478a8 4 85 46
+478ac 14 1512 82
+478c0 8 85 46
+478c8 4 302 82
+478cc 4 85 46
+478d0 8 302 82
+478d8 18 85 46
+478f0 4 256 82
+478f4 8 86 46
+478fc 4 256 82
+47900 c 86 46
+4790c 4 1139 87
+47910 4 86 46
+47914 4 277 82
+47918 4 86 46
+4791c 20 86 46
+4793c 4 86 46
+47940 4 86 46
+47944 18 86 46
+4795c 4 256 82
+47960 4 87 46
+47964 4 256 82
+47968 4 87 46
+4796c 18 1512 82
+47984 8 87 46
+4798c 4 302 82
+47990 4 87 46
+47994 8 302 82
+4799c 18 87 46
+479b4 8 256 82
+479bc 10 88 46
+479cc 4 1139 87
+479d0 4 88 46
+479d4 4 277 82
+479d8 4 88 46
+479dc 20 88 46
+479fc 4 88 46
+47a00 4 88 46
+47a04 18 88 46
+47a1c 4 88 46
+47a20 4 88 46
+47a24 8 88 46
+47a2c c 88 46
+47a38 8 85 79
+47a40 8 88 46
+47a48 8 156 132
+47a50 10 256 82
+47a60 4 89 46
+47a64 18 1512 82
+47a7c 8 89 46
+47a84 4 302 82
+47a88 4 89 46
+47a8c 8 302 82
+47a94 18 89 46
+47aac 8 89 46
+47ab4 c 89 46
+47ac0 8 85 79
+47ac8 8 89 46
+47ad0 8 256 82
+47ad8 18 90 46
+FUNC 47af0 338 0 LinuxLibcSupportTest_uitos_Test::TestBody
+47af0 4 106 46
+47af4 8 109 46
+47afc 8 106 46
+47b04 4 109 46
+47b08 4 1552 82
+47b0c 4 109 46
+47b10 4 1552 82
+47b14 8 106 46
+47b1c 4 109 46
+47b20 4 1552 82
+47b24 4 110 46
+47b28 c 1552 82
+47b34 4 110 46
+47b38 4 1552 82
+47b3c 4 110 46
+47b40 10 1552 82
+47b50 8 110 46
+47b58 4 1552 82
+47b5c 8 110 46
+47b64 c 302 82
+47b70 18 110 46
+47b88 8 256 82
+47b90 10 112 46
+47ba0 8 113 46
+47ba8 c 1552 82
+47bb4 4 113 46
+47bb8 4 1552 82
+47bbc 4 113 46
+47bc0 c 1552 82
+47bcc 8 113 46
+47bd4 c 302 82
+47be0 18 113 46
+47bf8 8 256 82
+47c00 10 115 46
+47c10 1c 116 46
+47c2c 1c 1552 82
+47c48 8 116 46
+47c50 c 302 82
+47c5c 18 116 46
+47c74 8 256 82
+47c7c 10 118 46
+47c8c 1c 119 46
+47ca8 1c 1552 82
+47cc4 8 119 46
+47ccc c 302 82
+47cd8 18 119 46
+47cf0 8 256 82
+47cf8 10 121 46
+47d08 1c 122 46
+47d24 1c 1552 82
+47d40 8 122 46
+47d48 c 302 82
+47d54 18 122 46
+47d6c 8 256 82
+47d74 10 125 46
+47d84 1c 126 46
+47da0 1c 1552 82
+47dbc 8 126 46
+47dc4 c 302 82
+47dd0 18 126 46
+47de8 8 126 46
+47df0 c 126 46
+47dfc 8 85 79
+47e04 8 126 46
+47e0c 8 256 82
+47e14 14 127 46
+FUNC 47e28 484 0 LinuxLibcSupportTest_uint_len_Test::TestBody
+47e28 4 92 46
+47e2c 4 93 46
+47e30 14 92 46
+47e44 4 1512 82
+47e48 4 93 46
+47e4c 4 1512 82
+47e50 4 93 46
+47e54 24 1512 82
+47e78 8 93 46
+47e80 8 1512 82
+47e88 8 93 46
+47e90 c 302 82
+47e9c 18 93 46
+47eb4 8 256 82
+47ebc c 94 46
+47ec8 18 1512 82
+47ee0 4 94 46
+47ee4 4 1512 82
+47ee8 8 94 46
+47ef0 c 302 82
+47efc 18 94 46
+47f14 8 256 82
+47f1c c 95 46
+47f28 18 1512 82
+47f40 4 95 46
+47f44 4 1512 82
+47f48 8 95 46
+47f50 c 302 82
+47f5c 18 95 46
+47f74 8 256 82
+47f7c c 96 46
+47f88 18 1512 82
+47fa0 4 96 46
+47fa4 4 1512 82
+47fa8 8 96 46
+47fb0 c 302 82
+47fbc 18 96 46
+47fd4 4 256 82
+47fd8 8 1512 82
+47fe0 4 97 46
+47fe4 4 256 82
+47fe8 c 97 46
+47ff4 18 1512 82
+4800c 4 97 46
+48010 4 1512 82
+48014 8 97 46
+4801c c 302 82
+48028 18 97 46
+48040 8 256 82
+48048 c 98 46
+48054 18 1512 82
+4806c 4 98 46
+48070 4 1512 82
+48074 8 98 46
+4807c c 302 82
+48088 18 98 46
+480a0 4 256 82
+480a4 8 1512 82
+480ac 4 99 46
+480b0 4 256 82
+480b4 c 99 46
+480c0 18 1512 82
+480d8 4 99 46
+480dc 4 1512 82
+480e0 8 99 46
+480e8 c 302 82
+480f4 18 99 46
+4810c 8 256 82
+48114 c 100 46
+48120 18 1512 82
+48138 4 100 46
+4813c 4 1512 82
+48140 8 100 46
+48148 c 302 82
+48154 18 100 46
+4816c 8 256 82
+48174 10 101 46
+48184 4 1512 82
+48188 4 101 46
+4818c 1c 1512 82
+481a8 8 101 46
+481b0 c 302 82
+481bc 18 101 46
+481d4 8 101 46
+481dc c 101 46
+481e8 8 85 79
+481f0 8 101 46
+481f8 10 256 82
+48208 10 103 46
+48218 4 1512 82
+4821c 4 103 46
+48220 1c 1512 82
+4823c 8 103 46
+48244 c 302 82
+48250 18 103 46
+48268 8 103 46
+48270 c 103 46
+4827c 8 85 79
+48284 8 103 46
+4828c 8 256 82
+48294 18 104 46
+FUNC 482ac a8 0 testing::internal::CmpHelperEQ<char const*, char const*>
+482ac 10 1476 82
+482bc 8 1476 82
+482c4 c 1481 82
+482d0 8 1482 82
+482d8 3c 1408 82
+48314 1c 1471 82
+48330 10 156 132
+48340 14 1488 82
+FUNC 48354 458 0 LinuxLibcSupportTest_strchr_Test::TestBody
+48354 4 129 46
+48358 4 130 46
+4835c 8 129 46
+48364 4 130 46
+48368 4 1571 82
+4836c 4 130 46
+48370 4 1571 82
+48374 4 130 46
+48378 8 129 46
+48380 4 130 46
+48384 30 1571 82
+483b4 8 130 46
+483bc c 302 82
+483c8 18 130 46
+483e0 8 256 82
+483e8 14 131 46
+483fc 1c 1571 82
+48418 8 131 46
+48420 c 302 82
+4842c 18 131 46
+48444 8 131 46
+4844c c 131 46
+48458 8 85 79
+48460 c 131 46
+4846c 8 256 82
+48474 14 132 46
+48488 1c 1571 82
+484a4 8 132 46
+484ac c 302 82
+484b8 18 132 46
+484d0 c 256 82
+484dc 10 134 46
+484ec 8 277 82
+484f4 4 1139 87
+484f8 4 277 82
+484fc 4 134 46
+48500 20 134 46
+48520 4 134 46
+48524 4 134 46
+48528 18 134 46
+48540 8 256 82
+48548 c 135 46
+48554 8 277 82
+4855c 4 1139 87
+48560 4 277 82
+48564 4 135 46
+48568 20 135 46
+48588 4 135 46
+4858c 4 135 46
+48590 18 135 46
+485a8 8 256 82
+485b0 10 136 46
+485c0 8 277 82
+485c8 4 1139 87
+485cc 4 277 82
+485d0 4 136 46
+485d4 20 136 46
+485f4 4 136 46
+485f8 4 136 46
+485fc 18 136 46
+48614 8 256 82
+4861c 10 137 46
+4862c 8 277 82
+48634 4 1139 87
+48638 4 277 82
+4863c 4 137 46
+48640 20 137 46
+48660 4 137 46
+48664 4 137 46
+48668 1c 137 46
+48684 8 137 46
+4868c c 137 46
+48698 8 85 79
+486a0 8 137 46
+486a8 8 156 132
+486b0 c 256 82
+486bc 8 140 46
+486c4 4 256 82
+486c8 c 140 46
+486d4 4 1481 82
+486d8 4 140 46
+486dc 4 1481 82
+486e0 c 1482 82
+486ec 20 1408 82
+4870c 24 1471 82
+48730 10 156 132
+48740 8 140 46
+48748 c 302 82
+48754 18 140 46
+4876c 8 140 46
+48774 c 140 46
+48780 8 85 79
+48788 8 140 46
+48790 8 256 82
+48798 14 141 46
+FUNC 487ac 418 0 LinuxLibcSupportTest_strrchr_Test::TestBody
+487ac 4 143 46
+487b0 4 144 46
+487b4 8 143 46
+487bc 4 144 46
+487c0 4 1571 82
+487c4 4 144 46
+487c8 4 1571 82
+487cc 4 144 46
+487d0 8 143 46
+487d8 4 144 46
+487dc 30 1571 82
+4880c 8 144 46
+48814 c 302 82
+48820 18 144 46
+48838 8 256 82
+48840 14 145 46
+48854 1c 1571 82
+48870 8 145 46
+48878 c 302 82
+48884 18 145 46
+4889c 8 145 46
+488a4 c 145 46
+488b0 8 85 79
+488b8 8 145 46
+488c0 8 256 82
+488c8 14 146 46
+488dc 1c 1571 82
+488f8 8 146 46
+48900 4 302 82
+48904 4 146 46
+48908 8 302 82
+48910 18 146 46
+48928 c 256 82
+48934 10 148 46
+48944 8 277 82
+4894c 4 1139 87
+48950 4 277 82
+48954 4 148 46
+48958 20 148 46
+48978 4 148 46
+4897c 4 148 46
+48980 18 148 46
+48998 8 256 82
+489a0 c 149 46
+489ac 8 277 82
+489b4 4 1139 87
+489b8 4 277 82
+489bc 4 149 46
+489c0 20 149 46
+489e0 4 149 46
+489e4 4 149 46
+489e8 18 149 46
+48a00 8 256 82
+48a08 10 150 46
+48a18 8 277 82
+48a20 4 1139 87
+48a24 4 277 82
+48a28 4 150 46
+48a2c 20 150 46
+48a4c 4 150 46
+48a50 4 150 46
+48a54 18 150 46
+48a6c 8 256 82
+48a74 10 151 46
+48a84 8 277 82
+48a8c 4 1139 87
+48a90 4 277 82
+48a94 4 151 46
+48a98 20 151 46
+48ab8 4 151 46
+48abc 4 151 46
+48ac0 18 151 46
+48ad8 4 151 46
+48adc 4 151 46
+48ae0 8 151 46
+48ae8 c 151 46
+48af4 8 85 79
+48afc 8 151 46
+48b04 8 156 132
+48b0c c 256 82
+48b18 8 154 46
+48b20 4 256 82
+48b24 10 154 46
+48b34 20 1512 82
+48b54 8 154 46
+48b5c 4 302 82
+48b60 4 154 46
+48b64 8 302 82
+48b6c 18 154 46
+48b84 8 154 46
+48b8c c 154 46
+48b98 8 85 79
+48ba0 8 154 46
+48ba8 8 256 82
+48bb0 14 155 46
+FUNC 48bc4 84 0 testing::internal::CmpHelperEQFailure<void*, void*>
+48bc4 c 1464 82
+48bd0 8 1382 82
+48bd8 4 1464 82
+48bdc 8 1464 82
+48be4 8 1382 82
+48bec 8 1464 82
+48bf4 14 1382 82
+48c08 1c 1471 82
+48c24 10 156 132
+48c34 14 1472 82
+FUNC 48c48 9c 0 testing::internal::CmpHelperEQ<char [10], void*>
+48c48 10 1476 82
+48c58 8 1476 82
+48c60 c 1481 82
+48c6c 8 1482 82
+48c74 20 1408 82
+48c94 10 1382 82
+48ca4 1c 1471 82
+48cc0 10 156 132
+48cd0 14 1488 82
+FUNC 48ce4 9c 0 testing::internal::CmpHelperEQ<char const*, void*>
+48ce4 10 1476 82
+48cf4 8 1476 82
+48cfc c 1481 82
+48d08 8 1482 82
+48d10 20 1408 82
+48d30 10 1382 82
+48d40 1c 1471 82
+48d5c 10 156 132
+48d6c 14 1488 82
+FUNC 48d80 3bc 0 LinuxLibcSupportTest_memchr_Test::TestBody
+48d80 4 157 46
+48d84 8 158 46
+48d8c 4 157 46
+48d90 8 158 46
+48d98 c 157 46
+48da4 4 158 46
+48da8 10 1571 82
+48db8 4 1482 82
+48dbc 4 1481 82
+48dc0 8 1482 82
+48dc8 1c 1487 82
+48de4 8 158 46
+48dec 4 302 82
+48df0 4 158 46
+48df4 8 302 82
+48dfc 18 158 46
+48e14 8 256 82
+48e1c 14 159 46
+48e30 8 1571 82
+48e38 4 1482 82
+48e3c 4 1481 82
+48e40 8 1482 82
+48e48 1c 1487 82
+48e64 8 159 46
+48e6c 4 302 82
+48e70 4 159 46
+48e74 8 302 82
+48e7c 18 159 46
+48e94 8 256 82
+48e9c 14 160 46
+48eb0 8 1571 82
+48eb8 4 1482 82
+48ebc 4 1481 82
+48ec0 8 1482 82
+48ec8 1c 1487 82
+48ee4 8 160 46
+48eec 4 302 82
+48ef0 4 160 46
+48ef4 8 302 82
+48efc 18 160 46
+48f14 8 160 46
+48f1c c 160 46
+48f28 8 85 79
+48f30 8 160 46
+48f38 c 256 82
+48f44 4 163 46
+48f48 4 256 82
+48f4c 4 163 46
+48f50 4 1512 82
+48f54 4 256 82
+48f58 4 1512 82
+48f5c 14 163 46
+48f70 1c 1512 82
+48f8c 8 163 46
+48f94 4 302 82
+48f98 4 163 46
+48f9c 8 302 82
+48fa4 18 163 46
+48fbc 8 256 82
+48fc4 14 164 46
+48fd8 1c 1512 82
+48ff4 8 164 46
+48ffc 4 302 82
+49000 4 164 46
+49004 8 302 82
+4900c 18 164 46
+49024 8 256 82
+4902c 14 165 46
+49040 20 1512 82
+49060 8 165 46
+49068 4 302 82
+4906c 4 165 46
+49070 8 302 82
+49078 18 165 46
+49090 8 256 82
+49098 14 166 46
+490ac 20 1512 82
+490cc 8 166 46
+490d4 4 302 82
+490d8 4 166 46
+490dc 8 302 82
+490e4 18 166 46
+490fc 8 166 46
+49104 c 166 46
+49110 8 85 79
+49118 8 166 46
+49120 8 256 82
+49128 14 167 46
+FUNC 4913c 5c 0 testing::PrintToString<char>
+4913c 4 883 80
+49140 4 884 80
+49144 8 883 80
+4914c 4 884 80
+49150 4 883 80
+49154 4 883 80
+49158 4 884 80
+4915c 4 883 80
+49160 4 884 80
+49164 c 394 80
+49170 c 75 127
+4917c 8 886 80
+49184 14 887 80
+FUNC 49198 9c 0 testing::internal::CmpHelperEQ<char, int>
+49198 10 1476 82
+491a8 8 1476 82
+491b0 10 1481 82
+491c0 8 1482 82
+491c8 2c 1382 82
+491f4 1c 1471 82
+49210 10 156 132
+49220 14 1488 82
+FUNC 49234 47c 0 LinuxLibcSupportTest_read_hex_ptr_Test::TestBody
+49234 4 169 46
+49238 4 173 46
+4923c 8 169 46
+49244 c 173 46
+49250 8 169 46
+49258 8 1512 82
+49260 8 169 46
+49268 4 1512 82
+4926c 4 173 46
+49270 c 1512 82
+4927c 4 173 46
+49280 14 1512 82
+49294 8 174 46
+4929c 4 1512 82
+492a0 8 174 46
+492a8 4 302 82
+492ac 4 174 46
+492b0 8 302 82
+492b8 18 174 46
+492d0 4 256 82
+492d4 c 1512 82
+492e0 4 256 82
+492e4 18 1512 82
+492fc 4 175 46
+49300 4 1512 82
+49304 8 175 46
+4930c 4 302 82
+49310 4 175 46
+49314 8 302 82
+4931c 18 175 46
+49334 8 256 82
+4933c 10 177 46
+4934c 14 1512 82
+49360 4 178 46
+49364 4 1512 82
+49368 8 178 46
+49370 4 302 82
+49374 4 178 46
+49378 8 302 82
+49380 18 178 46
+49398 8 256 82
+493a0 4 179 46
+493a4 18 1512 82
+493bc 8 179 46
+493c4 4 302 82
+493c8 4 179 46
+493cc 8 302 82
+493d4 18 179 46
+493ec 8 256 82
+493f4 14 181 46
+49408 4 1512 82
+4940c 4 182 46
+49410 4 1512 82
+49414 4 182 46
+49418 14 1512 82
+4942c 8 182 46
+49434 4 302 82
+49438 4 182 46
+4943c 8 302 82
+49444 18 182 46
+4945c 8 256 82
+49464 4 183 46
+49468 18 1512 82
+49480 8 183 46
+49488 4 302 82
+4948c 4 183 46
+49490 8 302 82
+49498 18 183 46
+494b0 4 256 82
+494b4 8 1512 82
+494bc 4 186 46
+494c0 4 256 82
+494c4 14 185 46
+494d8 14 1512 82
+494ec 4 186 46
+494f0 4 1512 82
+494f4 8 186 46
+494fc 4 302 82
+49500 4 186 46
+49504 8 302 82
+4950c 18 186 46
+49524 8 256 82
+4952c 4 187 46
+49530 18 1512 82
+49548 8 187 46
+49550 4 302 82
+49554 4 187 46
+49558 8 302 82
+49560 18 187 46
+49578 8 256 82
+49580 14 189 46
+49594 14 1512 82
+495a8 4 190 46
+495ac 4 1512 82
+495b0 8 190 46
+495b8 4 302 82
+495bc 4 190 46
+495c0 8 302 82
+495c8 18 190 46
+495e0 8 190 46
+495e8 c 190 46
+495f4 8 85 79
+495fc 8 190 46
+49604 10 256 82
+49614 4 191 46
+49618 4 1512 82
+4961c 4 191 46
+49620 18 1512 82
+49638 8 191 46
+49640 4 302 82
+49644 4 191 46
+49648 8 302 82
+49650 18 191 46
+49668 8 191 46
+49670 c 191 46
+4967c 8 85 79
+49684 8 191 46
+4968c 8 256 82
+49694 1c 192 46
+FUNC 496b0 390 0 LinuxLibcSupportTest_read_decimal_ptr_Test::TestBody
+496b0 c 194 46
+496bc 4 198 46
+496c0 4 194 46
+496c4 10 198 46
+496d4 c 194 46
+496e0 4 1512 82
+496e4 4 198 46
+496e8 10 1512 82
+496f8 4 198 46
+496fc 14 1512 82
+49710 8 199 46
+49718 4 1512 82
+4971c 8 199 46
+49724 4 302 82
+49728 4 199 46
+4972c 8 302 82
+49734 18 199 46
+4974c 4 256 82
+49750 8 1512 82
+49758 4 256 82
+4975c 4 200 46
+49760 18 1512 82
+49778 8 200 46
+49780 4 302 82
+49784 4 200 46
+49788 8 302 82
+49790 18 200 46
+497a8 8 256 82
+497b0 14 202 46
+497c4 4 1512 82
+497c8 4 203 46
+497cc 4 1512 82
+497d0 4 203 46
+497d4 14 1512 82
+497e8 8 203 46
+497f0 4 302 82
+497f4 4 203 46
+497f8 8 302 82
+49800 18 203 46
+49818 8 256 82
+49820 4 204 46
+49824 18 1512 82
+4983c 8 204 46
+49844 4 302 82
+49848 4 204 46
+4984c 8 302 82
+49854 18 204 46
+4986c 4 256 82
+49870 8 1512 82
+49878 4 207 46
+4987c 4 256 82
+49880 14 206 46
+49894 14 1512 82
+498a8 4 207 46
+498ac 4 1512 82
+498b0 8 207 46
+498b8 4 302 82
+498bc 4 207 46
+498c0 8 302 82
+498c8 18 207 46
+498e0 8 256 82
+498e8 4 208 46
+498ec 18 1512 82
+49904 8 208 46
+4990c 4 302 82
+49910 4 208 46
+49914 8 302 82
+4991c 18 208 46
+49934 8 256 82
+4993c 14 210 46
+49950 14 1512 82
+49964 4 211 46
+49968 4 1512 82
+4996c 8 211 46
+49974 4 302 82
+49978 4 211 46
+4997c 8 302 82
+49984 18 211 46
+4999c 8 256 82
+499a4 4 212 46
+499a8 4 1512 82
+499ac 4 212 46
+499b0 18 1512 82
+499c8 8 212 46
+499d0 4 302 82
+499d4 4 212 46
+499d8 8 302 82
+499e0 18 212 46
+499f8 8 212 46
+49a00 c 212 46
+49a0c 8 85 79
+49a14 8 212 46
+49a1c 8 256 82
+49a24 1c 213 46
+FUNC 49a40 5c 0 google_breakpad::test_assembler::Section::Mark
+49a40 10 439 62
+49a50 4 439 62
+49a54 4 436 62
+49a58 4 439 62
+49a5c 4 400 131
+49a60 4 436 62
+49a64 4 400 131
+49a68 c 436 62
+49a74 c 439 62
+49a80 8 439 62
+49a88 14 439 62
+FUNC 49a9c 74 0 google_breakpad::synth_elf::ELF::AppendSection
+49a9c 10 121 50
+49aac 4 121 50
+49ab0 8 124 50
+49ab8 c 125 50
+49ac4 8 126 50
+49acc 8 127 50
+49ad4 8 133 50
+49adc 8 127 50
+49ae4 8 129 50
+49aec c 130 50
+49af8 8 131 50
+49b00 8 133 50
+49b08 8 131 50
+FUNC 49b10 150 0 google_breakpad::synth_elf::ELF::AddSegment
+49b10 18 135 50
+49b28 8 135 50
+49b30 4 140 50
+49b34 8 143 50
+49b3c 4 135 50
+49b40 8 140 50
+49b48 4 143 50
+49b4c 4 135 50
+49b50 4 143 50
+49b54 c 145 50
+49b60 10 147 50
+49b70 4 151 50
+49b74 4 153 50
+49b78 4 150 50
+49b7c c 153 50
+49b88 4 202 139
+49b8c 4 155 50
+49b90 4 154 50
+49b94 8 155 50
+49b9c 8 158 50
+49ba4 4 159 50
+49ba8 4 163 50
+49bac c 153 50
+49bb8 4 202 139
+49bbc 14 168 50
+49bd0 4 170 50
+49bd4 4 170 50
+49bd8 4 170 50
+49bdc c 170 50
+49be8 4 172 50
+49bec 4 172 50
+49bf0 4 172 50
+49bf4 c 172 50
+49c00 10 174 50
+49c10 10 176 50
+49c20 c 178 50
+49c2c c 180 50
+49c38 10 184 50
+49c48 14 185 50
+49c5c 4 184 50
+FUNC 49c60 34 0 google_breakpad::synth_elf::ELF::ElfSection::~ElfSection
+49c60 14 141 51
+49c74 10 141 51
+49c84 4 141 51
+49c88 8 141 51
+49c90 4 141 51
+FUNC 49c94 24 0 google_breakpad::synth_elf::ELF::ElfSection::~ElfSection
+49c94 c 141 51
+49ca0 8 141 51
+49ca8 4 141 51
+49cac 8 141 51
+49cb4 4 141 51
+FUNC 49cb8 14 0 google_breakpad::synth_elf::SymbolTable::~SymbolTable
+49cb8 14 161 51
+FUNC 49ccc 24 0 google_breakpad::synth_elf::SymbolTable::~SymbolTable
+49ccc c 161 51
+49cd8 8 161 51
+49ce0 4 161 51
+49ce4 8 161 51
+49cec 4 161 51
+FUNC 49cf0 b4 0 google_breakpad::synth_elf::Notes::AddNote
+49cf0 10 244 50
+49d00 4 244 50
+49d04 4 292 62
+49d08 4 250 50
+49d0c 4 400 131
+49d10 4 528 131
+49d14 4 400 131
+49d18 4 244 50
+49d1c 4 528 131
+49d20 4 244 50
+49d24 4 400 131
+49d28 4 528 131
+49d2c 4 248 50
+49d30 4 249 50
+49d34 4 248 50
+49d38 4 249 50
+49d3c 4 528 131
+49d40 10 517 131
+49d50 c 453 131
+49d5c 10 255 50
+49d6c 18 528 131
+49d84 10 257 50
+49d94 10 258 50
+FUNC 49da4 108 0 std::priv::_Impl_vector<google_breakpad::test_assembler::Section::Reference, std::allocator<google_breakpad::test_assembler::Section::Reference> >::_Impl_vector
+49da4 14 246 139
+49db8 4 246 139
+49dbc 8 192 139
+49dc4 4 70 139
+49dc8 4 192 139
+49dcc 4 342 101
+49dd0 4 192 139
+49dd4 4 70 139
+49dd8 4 481 101
+49ddc 8 342 101
+49de4 c 343 101
+49df0 4 343 101
+49df4 4 356 101
+49df8 4 346 101
+49dfc c 347 101
+49e08 8 348 101
+49e10 c 352 101
+49e1c 4 71 139
+49e20 4 73 139
+49e24 4 72 139
+49e28 4 84 137
+49e2c 8 73 139
+49e34 14 86 137
+49e48 8 86 137
+49e50 4 139 103
+49e54 24 449 62
+49e78 4 89 137
+49e7c 18 86 137
+49e94 4 249 139
+49e98 14 250 139
+FUNC 49eac 58 0 std::priv::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, google_breakpad::test_assembler::Label>, std::priv::_Select1st<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, google_breakpad::test_assembler::Label> >, std::priv::_MapTraitsT<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, google_breakpad::test_assembler::Label> >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, google_breakpad::test_assembler::Label> > >::_M_create_node
+49eac 4 315 136
+49eb0 4 306 101
+49eb4 8 315 136
+49ebc 4 315 136
+49ec0 8 306 101
+49ec8 8 307 101
+49ed0 8 119 103
+49ed8 8 68 124
+49ee0 c 68 124
+49eec 4 321 136
+49ef0 4 324 136
+49ef4 4 322 136
+49ef8 c 324 136
+FUNC 49f04 48 0 google_breakpad::synth_elf::SymbolTable::SymbolTable
+49f04 c 213 50
+49f10 c 213 50
+49f1c 24 217 50
+49f40 c 219 50
+FUNC 49f4c 98 0 google_breakpad::synth_elf::ELF::ElfSection::ElfSection
+49f4c c 141 51
+49f58 4 141 51
+49f5c 4 270 62
+49f60 4 141 51
+49f64 20 270 62
+49f84 c 124 143
+49f90 c 270 62
+49f9c 4 141 51
+49fa0 4 141 51
+49fa4 24 141 51
+49fc8 8 141 51
+49fd0 14 141 51
+FUNC 49fe4 204 0 std::priv::_Impl_vector<google_breakpad::synth_elf::ELF::ElfSection, std::allocator<google_breakpad::synth_elf::ELF::ElfSection> >::_M_insert_overflow_aux
+49fe4 24 81 138
+4a008 8 192 139
+4a010 8 81 138
+4a018 4 192 139
+4a01c 4 81 138
+4a020 4 192 139
+4a024 8 173 139
+4a02c 8 81 138
+4a034 8 173 139
+4a03c 14 41 138
+4a050 4 175 139
+4a054 10 176 139
+4a064 4 356 101
+4a068 8 346 101
+4a070 4 177 139
+4a074 c 347 101
+4a080 4 348 101
+4a084 4 352 101
+4a088 4 348 101
+4a08c 4 352 101
+4a090 4 91 138
+4a094 4 84 137
+4a098 c 86 137
+4a0a4 8 86 137
+4a0ac 4 139 103
+4a0b0 c 139 103
+4a0bc 4 88 137
+4a0c0 4 89 137
+4a0c4 10 86 137
+4a0d4 c 93 138
+4a0e0 4 119 103
+4a0e4 c 119 103
+4a0f0 8 95 138
+4a0f8 8 314 137
+4a100 4 249 137
+4a104 8 249 137
+4a10c 4 139 103
+4a110 c 139 103
+4a11c c 249 137
+4a128 8 98 138
+4a130 4 86 137
+4a134 4 84 137
+4a138 c 86 137
+4a144 8 86 137
+4a14c 4 139 103
+4a150 c 139 103
+4a15c 4 88 137
+4a160 4 89 137
+4a164 1c 86 137
+4a180 8 191 103
+4a188 4 57 103
+4a18c 4 77 113
+4a190 14 57 103
+4a1a4 c 662 139
+4a1b0 4 319 101
+4a1b4 4 323 101
+4a1b8 4 104 138
+4a1bc 4 666 139
+4a1c0 4 667 139
+4a1c4 4 668 139
+4a1c8 20 105 138
+FUNC 4a1e8 5c 0 std::priv::_Rb_global<bool>::_M_decrement
+4a1e8 4 278 135
+4a1ec 8 279 135
+4a1f4 10 279 135
+4a204 8 280 135
+4a20c 8 281 135
+4a214 10 99 136
+4a224 4 285 135
+4a228 c 286 135
+4a234 c 288 135
+4a240 4 293 135
+FUNC 4a244 dc 0 std::priv::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, google_breakpad::test_assembler::Label>, std::priv::_Select1st<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, google_breakpad::test_assembler::Label> >, std::priv::_MapTraitsT<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, google_breakpad::test_assembler::Label> >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, google_breakpad::test_assembler::Label> > >::_M_insert
+4a244 4 350 135
+4a248 4 358 135
+4a24c c 350 135
+4a258 c 350 135
+4a264 4 358 135
+4a268 c 359 135
+4a274 4 360 135
+4a278 4 361 135
+4a27c 8 362 135
+4a284 4 364 135
+4a288 4 364 135
+4a28c 14 79 106
+4a2a0 8 364 135
+4a2a8 8 367 135
+4a2b0 4 368 135
+4a2b4 4 367 135
+4a2b8 c 369 135
+4a2c4 8 370 135
+4a2cc 8 373 135
+4a2d4 4 374 135
+4a2d8 4 373 135
+4a2dc c 375 135
+4a2e8 4 376 135
+4a2ec 8 379 135
+4a2f4 4 378 135
+4a2f8 4 379 135
+4a2fc 4 380 135
+4a300 4 382 135
+4a304 8 380 135
+4a30c 4 142 136
+4a310 10 382 135
+FUNC 4a320 fc 0 std::priv::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, google_breakpad::test_assembler::Label>, std::priv::_Select1st<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, google_breakpad::test_assembler::Label> >, std::priv::_MapTraitsT<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, google_breakpad::test_assembler::Label> >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, google_breakpad::test_assembler::Label> > >::insert_unique
+4a320 14 405 135
+4a334 4 405 135
+4a338 4 406 135
+4a33c 4 405 135
+4a340 4 407 135
+4a344 4 405 135
+4a348 4 408 135
+4a34c 4 409 135
+4a350 14 79 106
+4a364 8 412 135
+4a36c 8 412 135
+4a374 4 412 135
+4a378 10 405 135
+4a388 4 415 135
+4a38c c 416 135
+4a398 18 417 135
+4a3b0 c 187 136
+4a3bc 10 79 106
+4a3cc 4 421 135
+4a3d0 1c 422 135
+4a3ec 8 142 136
+4a3f4 8 62 124
+4a3fc 4 142 136
+4a400 4 62 124
+4a404 18 425 135
+FUNC 4a41c 2d4 0 std::priv::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, google_breakpad::test_assembler::Label>, std::priv::_Select1st<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, google_breakpad::test_assembler::Label> >, std::priv::_MapTraitsT<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, google_breakpad::test_assembler::Label> >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, google_breakpad::test_assembler::Label> > >::insert_unique
+4a41c 18 432 135
+4a434 8 432 135
+4a43c 10 434 135
+4a44c 4 437 135
+4a450 4 438 135
+4a454 4 437 135
+4a458 4 143 106
+4a45c 14 79 106
+4a470 8 440 135
+4a478 14 79 106
+4a48c 8 447 135
+4a494 c 297 135
+4a4a0 10 94 136
+4a4b0 8 301 135
+4a4b8 c 302 135
+4a4c4 c 304 135
+4a4d0 c 309 135
+4a4dc 8 458 135
+4a4e4 14 462 135
+4a4f8 18 79 106
+4a510 8 468 135
+4a518 4 469 135
+4a51c c 470 135
+4a528 8 469 135
+4a530 c 309 135
+4a53c 4 513 135
+4a540 10 475 135
+4a550 c 142 136
+4a55c 8 479 135
+4a564 4 480 135
+4a568 14 79 106
+4a57c 8 480 135
+4a584 18 483 135
+4a59c c 486 135
+4a5a8 8 187 136
+4a5b0 4 143 106
+4a5b4 8 187 136
+4a5bc 14 79 106
+4a5d0 8 494 135
+4a5d8 10 79 106
+4a5e8 c 494 135
+4a5f4 10 500 135
+4a604 8 497 135
+4a60c c 498 135
+4a618 8 522 135
+4a620 1c 524 135
+4a63c 14 79 106
+4a650 4 517 135
+4a654 8 142 136
+4a65c c 297 135
+4a668 10 94 136
+4a678 8 301 135
+4a680 c 302 135
+4a68c c 304 135
+4a698 c 517 135
+4a6a4 10 79 106
+4a6b4 8 517 135
+4a6bc 4 521 135
+4a6c0 14 522 135
+4a6d4 1c 534 135
+FUNC 4a6f0 ec 0 std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, google_breakpad::test_assembler::Label, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, google_breakpad::test_assembler::Label> > >::operator[]<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >
+4a6f0 14 175 118
+4a704 8 175 118
+4a70c 8 568 136
+4a714 4 571 136
+4a718 10 79 106
+4a728 4 572 136
+4a72c 8 573 136
+4a734 14 575 136
+4a748 8 178 118
+4a750 10 79 106
+4a760 4 178 118
+4a764 4 179 118
+4a768 4 62 124
+4a76c 8 179 118
+4a774 8 62 124
+4a77c 4 62 124
+4a780 4 62 124
+4a784 c 62 124
+4a790 4 142 136
+4a794 14 191 118
+4a7a8 4 179 118
+4a7ac 8 51 124
+4a7b4 8 156 132
+4a7bc 8 179 118
+4a7c4 4 180 118
+4a7c8 14 181 118
+FUNC 4a7dc 120 0 google_breakpad::synth_elf::StringTable::Add
+4a7dc 14 75 51
+4a7f0 4 549 136
+4a7f4 10 75 51
+4a804 4 549 136
+4a808 4 552 136
+4a80c 10 79 106
+4a81c 4 553 136
+4a820 8 554 136
+4a828 14 556 136
+4a83c 8 558 136
+4a844 10 79 106
+4a854 8 559 136
+4a85c 8 76 51
+4a864 10 77 51
+4a874 8 77 51
+4a87c 4 77 51
+4a880 4 400 131
+4a884 4 436 62
+4a888 4 400 131
+4a88c 8 436 62
+4a894 4 296 62
+4a898 8 436 62
+4a8a0 10 517 131
+4a8b0 c 453 131
+4a8bc c 81 51
+4a8c8 8 81 51
+4a8d0 c 82 51
+4a8dc 8 82 51
+4a8e4 18 83 51
+FUNC 4a8fc a4 0 google_breakpad::synth_elf::SymbolTable::AddSymbol
+4a8fc 10 222 50
+4a90c 4 222 50
+4a910 4 224 50
+4a914 4 222 50
+4a918 8 224 50
+4a920 c 222 50
+4a92c 4 224 50
+4a930 c 224 50
+4a93c 4 224 50
+4a940 4 357 62
+4a944 4 224 50
+4a948 10 225 50
+4a958 10 226 50
+4a968 1c 453 131
+4a984 c 229 50
+4a990 10 230 50
+FUNC 4a9a0 a4 0 google_breakpad::synth_elf::SymbolTable::AddSymbol
+4a9a0 10 233 50
+4a9b0 4 233 50
+4a9b4 4 235 50
+4a9b8 4 233 50
+4a9bc 8 235 50
+4a9c4 c 233 50
+4a9d0 4 235 50
+4a9d4 c 235 50
+4a9e0 4 235 50
+4a9e4 4 357 62
+4a9e8 4 235 50
+4a9ec 1c 453 131
+4aa08 c 238 50
+4aa14 10 239 50
+4aa24 10 240 50
+4aa34 10 241 50
+FUNC 4aa44 210 0 google_breakpad::synth_elf::ELF::AddSection
+4aa44 c 86 50
+4aa50 4 87 50
+4aa54 c 86 50
+4aa60 4 87 50
+4aa64 4 86 50
+4aa68 4 270 62
+4aa6c 14 86 50
+4aa80 c 86 50
+4aa8c 4 87 50
+4aa90 10 88 50
+4aaa0 4 117 50
+4aaa4 4 88 50
+4aaa8 4 91 50
+4aaac 4 400 131
+4aab0 4 96 50
+4aab4 8 400 131
+4aabc 8 92 50
+4aac4 8 96 50
+4aacc 8 98 50
+4aad4 14 100 50
+4aae8 10 102 50
+4aaf8 10 104 50
+4ab08 10 106 50
+4ab18 c 108 50
+4ab24 8 110 50
+4ab2c 10 112 50
+4ab3c 10 114 50
+4ab4c 4 380 139
+4ab50 4 114 50
+4ab54 c 117 50
+4ab60 24 270 62
+4ab84 c 124 143
+4ab90 c 270 62
+4ab9c 8 145 51
+4aba4 8 117 50
+4abac 8 145 51
+4abb4 4 117 50
+4abb8 c 145 51
+4abc4 4 145 51
+4abc8 4 117 50
+4abcc 10 380 139
+4abdc 4 119 103
+4abe0 c 119 103
+4abec 10 382 139
+4abfc 18 162 139
+4ac14 8 117 50
+4ac1c 8 117 50
+4ac24 8 88 50
+4ac2c 8 118 50
+4ac34 20 119 50
+FUNC 4ac54 100 0 google_breakpad::synth_elf::ELF::Finish
+4ac54 10 187 50
+4ac64 4 187 50
+4ac68 4 189 50
+4ac6c 4 191 50
+4ac70 8 189 50
+4ac78 14 191 50
+4ac8c 28 191 50
+4acb4 8 156 132
+4acbc c 194 50
+4acc8 8 195 50
+4acd0 10 196 50
+4ace0 10 198 50
+4acf0 c 201 50
+4acfc 8 203 50
+4ad04 4 201 50
+4ad08 8 203 50
+4ad10 c 205 50
+4ad1c c 206 50
+4ad28 c 209 50
+4ad34 c 210 50
+4ad40 14 211 50
+FUNC 4ad54 438 0 google_breakpad::synth_elf::ELF::ELF
+4ad54 28 14 50
+4ad7c 4 23 50
+4ad80 10 14 50
+4ad90 4 23 50
+4ad94 8 14 50
+4ad9c 4 23 50
+4ada0 4 23 50
+4ada4 4 23 50
+4ada8 4 23 50
+4adac 8 23 50
+4adb4 4 67 51
+4adb8 4 432 62
+4adbc 4 23 50
+4adc0 4 69 51
+4adc4 4 69 51
+4adc8 8 23 50
+4add0 10 23 50
+4ade0 c 23 50
+4adec 4 23 50
+4adf0 4 23 50
+4adf4 8 23 50
+4adfc c 23 50
+4ae08 8 23 50
+4ae10 4 23 50
+4ae14 8 23 50
+4ae1c c 23 50
+4ae28 8 23 50
+4ae30 4 23 50
+4ae34 14 67 51
+4ae48 4 67 51
+4ae4c c 67 51
+4ae58 4 67 51
+4ae5c 4 481 101
+4ae60 8 263 136
+4ae68 8 432 62
+4ae70 4 266 136
+4ae74 4 267 136
+4ae78 4 391 136
+4ae7c 4 432 62
+4ae80 c 68 51
+4ae8c 8 68 51
+4ae94 18 69 51
+4aeac 14 69 51
+4aec0 8 69 51
+4aec8 4 357 62
+4aecc 4 69 51
+4aed0 8 69 51
+4aed8 8 156 132
+4aee0 4 67 139
+4aee4 8 432 62
+4aeec 4 67 139
+4aef0 4 481 101
+4aef4 4 432 62
+4aef8 c 30 50
+4af04 8 30 50
+4af0c 40 453 131
+4af4c 4 41 50
+4af50 38 453 131
+4af88 8 400 131
+4af90 10 182 130
+4afa0 c 600 130
+4afac 8 74 132
+4afb4 c 74 132
+4afc0 8 74 132
+4afc8 8 184 130
+4afd0 10 185 130
+4afe0 8 185 130
+4afe8 8 186 130
+4aff0 c 314 137
+4affc 8 249 137
+4b004 8 146 103
+4b00c 4 187 130
+4b010 4 53 50
+4b014 8 101 103
+4b01c 4 232 140
+4b020 c 189 130
+4b02c 4 53 50
+4b030 4 67 50
+4b034 4 53 50
+4b038 c 55 50
+4b044 c 57 50
+4b050 14 59 50
+4b064 14 61 50
+4b078 14 63 50
+4b08c c 65 50
+4b098 4 67 50
+4b09c 4 67 50
+4b0a0 4 67 50
+4b0a4 c 67 50
+4b0b0 4 69 50
+4b0b4 8 69 50
+4b0bc 4 69 50
+4b0c0 c 69 50
+4b0cc c 71 50
+4b0d8 4 73 50
+4b0dc 4 73 50
+4b0e0 4 73 50
+4b0e4 c 73 50
+4b0f0 c 75 50
+4b0fc c 77 50
+4b108 c 80 50
+4b114 14 81 50
+4b128 28 81 50
+4b150 8 156 132
+4b158 8 81 50
+4b160 2c 82 50
+FUNC 4b18c 78 0 pthread_barrier_wait
+4b18c 14 62 36
+4b1a0 8 64 36
+4b1a8 10 67 36
+4b1b8 8 69 36
+4b1c0 8 70 36
+4b1c8 c 71 36
+4b1d4 c 76 36
+4b1e0 8 75 36
+4b1e8 8 79 36
+4b1f0 4 80 36
+4b1f4 10 81 36
+FUNC 4b204 60 0 thread_function
+4b204 c 81 53
+4b210 4 81 53
+4b214 8 70 53
+4b21c 4 83 53
+4b220 c 84 53
+4b22c 8 85 53
+4b234 14 86 53
+4b248 c 87 53
+4b254 8 88 53
+4b25c 8 93 36
+FUNC 4b264 6c 0 google_breakpad::CrashGenerator::HasDefaultCorePattern
+4b264 4 108 53
+4b268 4 110 53
+4b26c 8 108 53
+4b274 c 111 53
+4b280 4 110 53
+4b284 10 111 53
+4b294 4 112 53
+4b298 4 111 53
+4b29c 4 112 53
+4b2a0 8 111 53
+4b2a8 1c 112 53
+4b2c4 c 113 53
+FUNC 4b2d0 c 0 google_breakpad::CrashGenerator::GetThreadId
+4b2d0 4 124 53
+4b2d4 8 125 53
+FUNC 4b2dc c 0 google_breakpad::CrashGenerator::GetThreadIdPointer
+4b2dc 4 128 53
+4b2e0 8 129 53
+FUNC 4b2e8 58 0 google_breakpad::CrashGenerator::UnmapSharedMemory
+4b2e8 4 148 53
+4b2ec 4 150 53
+4b2f0 8 148 53
+4b2f8 4 148 53
+4b2fc 8 149 53
+4b304 c 152 53
+4b310 4 153 53
+4b314 4 155 53
+4b318 4 154 53
+4b31c 4 155 53
+4b320 c 158 53
+4b32c 4 159 53
+4b330 10 160 53
+FUNC 4b340 88 0 google_breakpad::CrashGenerator::MapSharedMemory
+4b340 10 131 53
+4b350 8 131 53
+4b358 c 132 53
+4b364 1c 136 53
+4b380 4 137 53
+4b384 4 136 53
+4b388 4 137 53
+4b38c 4 138 53
+4b390 4 139 53
+4b394 c 138 53
+4b3a0 c 142 53
+4b3ac 4 143 53
+4b3b0 4 144 53
+4b3b4 14 146 53
+FUNC 4b3c8 44 0 google_breakpad::CrashGenerator::SetCoreFileSizeLimit
+4b3c8 4 162 53
+4b3cc 4 164 53
+4b3d0 4 162 53
+4b3d4 8 163 53
+4b3dc c 164 53
+4b3e8 4 168 53
+4b3ec 4 164 53
+4b3f0 c 165 53
+4b3fc 4 166 53
+4b400 c 169 53
+FUNC 4b40c dc 0 google_breakpad::CrashGenerator::CopyProcFiles
+4b40c 4 256 53
+4b410 4 265 53
+4b414 10 256 53
+4b424 4 260 53
+4b428 4 265 53
+4b42c c 256 53
+4b438 8 256 53
+4b440 4 258 53
+4b444 c 260 53
+4b450 8 265 53
+4b458 20 260 53
+4b478 8 261 53
+4b480 8 262 53
+4b488 18 265 53
+4b4a0 8 266 53
+4b4a8 14 269 53
+4b4bc 4 258 53
+4b4c0 8 258 53
+4b4c8 20 273 53
+FUNC 4b4e8 188 0 google_breakpad::CrashGenerator::CreateThreadsInChildProcess
+4b4e8 20 275 53
+4b508 4 275 53
+4b50c 4 128 53
+4b510 4 276 53
+4b514 4 278 53
+4b518 4 276 53
+4b51c 4 278 53
+4b520 4 283 53
+4b524 4 288 53
+4b528 4 283 53
+4b52c 8 283 53
+4b534 c 288 53
+4b540 c 290 53
+4b54c 4 288 53
+4b550 10 291 53
+4b560 8 313 53
+4b568 8 314 53
+4b570 4 56 36
+4b574 8 57 36
+4b57c 4 56 36
+4b580 8 305 53
+4b588 4 57 36
+4b58c 10 58 36
+4b59c 4 305 53
+4b5a0 4 58 36
+4b5a4 4 302 53
+4b5a8 c 305 53
+4b5b4 8 128 53
+4b5bc 4 303 53
+4b5c0 8 305 53
+4b5c8 4 304 53
+4b5cc 20 306 53
+4b5ec 8 301 53
+4b5f4 c 301 53
+4b600 8 311 53
+4b608 14 312 53
+4b61c 14 313 53
+4b630 4 85 36
+4b634 4 84 36
+4b638 4 85 36
+4b63c 8 86 36
+4b644 8 318 53
+4b64c 8 319 53
+4b654 1c 320 53
+FUNC 4b670 54 0 testing::internal::scoped_ptr<std::basic_stringstream<char, std::char_traits<char>, std::allocator<char> > >::reset
+4b670 c 1152 87
+4b67c 10 1153 87
+4b68c 14 1154 87
+4b6a0 8 1155 87
+4b6a8 c 1155 87
+4b6b4 4 1157 87
+4b6b8 c 1159 87
+FUNC 4b6c4 28 0 google_breakpad::CrashGenerator::CrashGenerator
+4b6c4 c 99 53
+4b6d0 4 99 53
+4b6d4 c 101 53
+4b6e0 c 102 53
+FUNC 4b6ec 30 0 google_breakpad::CrashGenerator::~CrashGenerator
+4b6ec c 104 53
+4b6f8 4 104 53
+4b6fc 4 105 53
+4b700 c 61 63
+4b70c 4 156 132
+4b710 8 106 53
+4b718 4 156 132
+FUNC 4b71c 2c 0 google_breakpad::CrashGenerator::GetCoreFilePath
+4b71c 4 115 53
+4b720 4 116 53
+4b724 4 115 53
+4b728 4 116 53
+4b72c 4 115 53
+4b730 4 115 53
+4b734 4 116 53
+4b738 10 117 53
+FUNC 4b748 2c 0 google_breakpad::CrashGenerator::GetDirectoryOfProcFilesCopy
+4b748 4 119 53
+4b74c 4 120 53
+4b750 4 119 53
+4b754 4 120 53
+4b758 4 119 53
+4b75c 4 119 53
+4b760 4 120 53
+4b764 10 121 53
+FUNC 4b774 27c 0 google_breakpad::CrashGenerator::CreateChildCrash
+4b774 4 173 53
+4b778 4 174 53
+4b77c 8 173 53
+4b784 8 174 53
+4b78c 4 173 53
+4b790 4 174 53
+4b794 c 173 53
+4b7a0 4 174 53
+4b7a4 10 173 53
+4b7b4 4 174 53
+4b7b8 24 176 53
+4b7dc 10 180 53
+4b7ec c 181 53
+4b7f8 4 182 53
+4b7fc 8 185 53
+4b804 4 186 53
+4b808 8 187 53
+4b810 8 187 53
+4b818 c 188 53
+4b824 14 191 53
+4b838 8 192 53
+4b840 4 193 53
+4b844 4 192 53
+4b848 c 193 53
+4b854 c 194 53
+4b860 8 194 53
+4b868 c 195 53
+4b874 8 198 53
+4b87c 10 198 53
+4b88c 4 198 53
+4b890 1c 199 53
+4b8ac 4 215 53
+4b8b0 8 128 53
+4b8b8 4 215 53
+4b8bc 4 214 53
+4b8c0 10 75 53
+4b8d0 8 214 53
+4b8d8 c 215 53
+4b8e4 8 226 53
+4b8ec 8 213 53
+4b8f4 c 156 132
+4b900 c 230 53
+4b90c 8 232 53
+4b914 4 233 53
+4b918 4 239 53
+4b91c 4 233 53
+4b920 4 234 53
+4b924 4 235 53
+4b928 8 234 53
+4b930 4 235 53
+4b934 18 239 53
+4b94c 4 239 53
+4b950 c 239 53
+4b95c 10 240 53
+4b96c 18 243 53
+4b984 8 243 53
+4b98c c 247 53
+4b998 8 247 53
+4b9a0 24 247 53
+4b9c4 4 251 53
+4b9c8 8 252 53
+4b9d0 4 241 53
+4b9d4 1c 254 53
+FUNC 4b9f0 4 0 testing::internal::TestFactoryImpl<WastefulVectorTest_UsesPageAllocator_Test>::~TestFactoryImpl
+4b9f0 4 484 85
+FUNC 4b9f4 4 0 testing::internal::TestFactoryImpl<WastefulVectorTest_Simple_Test>::~TestFactoryImpl
+4b9f4 4 484 85
+FUNC 4b9f8 4 0 testing::internal::TestFactoryImpl<WastefulVectorTest_Setup_Test>::~TestFactoryImpl
+4b9f8 4 484 85
+FUNC 4b9fc 4 0 testing::internal::TestFactoryImpl<PageAllocatorTest_LargeObject_Test>::~TestFactoryImpl
+4b9fc 4 484 85
+FUNC 4ba00 4 0 testing::internal::TestFactoryImpl<PageAllocatorTest_SmallObjects_Test>::~TestFactoryImpl
+4ba00 4 484 85
+FUNC 4ba04 4 0 testing::internal::TestFactoryImpl<PageAllocatorTest_Setup_Test>::~TestFactoryImpl
+4ba04 4 484 85
+FUNC 4ba08 4 0 testing::internal::TestFactoryImpl<PageAllocatorTest_Setup_Test>::~TestFactoryImpl
+4ba08 4 484 85
+FUNC 4ba0c 4 0 testing::internal::TestFactoryImpl<PageAllocatorTest_SmallObjects_Test>::~TestFactoryImpl
+4ba0c 4 484 85
+FUNC 4ba10 4 0 testing::internal::TestFactoryImpl<PageAllocatorTest_LargeObject_Test>::~TestFactoryImpl
+4ba10 4 484 85
+FUNC 4ba14 4 0 testing::internal::TestFactoryImpl<WastefulVectorTest_Setup_Test>::~TestFactoryImpl
+4ba14 4 484 85
+FUNC 4ba18 4 0 testing::internal::TestFactoryImpl<WastefulVectorTest_Simple_Test>::~TestFactoryImpl
+4ba18 4 484 85
+FUNC 4ba1c 4 0 testing::internal::TestFactoryImpl<WastefulVectorTest_UsesPageAllocator_Test>::~TestFactoryImpl
+4ba1c 4 484 85
+FUNC 4ba20 14 0 WastefulVectorTest_UsesPageAllocator_Test::~WastefulVectorTest_UsesPageAllocator_Test
+4ba20 14 91 56
+FUNC 4ba34 24 0 WastefulVectorTest_UsesPageAllocator_Test::~WastefulVectorTest_UsesPageAllocator_Test
+4ba34 c 91 56
+4ba40 8 91 56
+4ba48 4 91 56
+4ba4c 8 91 56
+4ba54 4 91 56
+FUNC 4ba58 14 0 WastefulVectorTest_Simple_Test::~WastefulVectorTest_Simple_Test
+4ba58 14 76 56
+FUNC 4ba6c 24 0 WastefulVectorTest_Simple_Test::~WastefulVectorTest_Simple_Test
+4ba6c c 76 56
+4ba78 8 76 56
+4ba80 4 76 56
+4ba84 8 76 56
+4ba8c 4 76 56
+FUNC 4ba90 14 0 WastefulVectorTest_Setup_Test::~WastefulVectorTest_Setup_Test
+4ba90 14 69 56
+FUNC 4baa4 24 0 WastefulVectorTest_Setup_Test::~WastefulVectorTest_Setup_Test
+4baa4 c 69 56
+4bab0 8 69 56
+4bab8 4 69 56
+4babc 8 69 56
+4bac4 4 69 56
+FUNC 4bac8 14 0 PageAllocatorTest_LargeObject_Test::~PageAllocatorTest_LargeObject_Test
+4bac8 14 53 56
+FUNC 4badc 24 0 PageAllocatorTest_LargeObject_Test::~PageAllocatorTest_LargeObject_Test
+4badc c 53 56
+4bae8 8 53 56
+4baf0 4 53 56
+4baf4 8 53 56
+4bafc 4 53 56
+FUNC 4bb00 14 0 PageAllocatorTest_SmallObjects_Test::~PageAllocatorTest_SmallObjects_Test
+4bb00 14 43 56
+FUNC 4bb14 24 0 PageAllocatorTest_SmallObjects_Test::~PageAllocatorTest_SmallObjects_Test
+4bb14 c 43 56
+4bb20 8 43 56
+4bb28 4 43 56
+4bb2c 8 43 56
+4bb34 4 43 56
+FUNC 4bb38 14 0 PageAllocatorTest_Setup_Test::~PageAllocatorTest_Setup_Test
+4bb38 14 39 56
+FUNC 4bb4c 24 0 PageAllocatorTest_Setup_Test::~PageAllocatorTest_Setup_Test
+4bb4c c 39 56
+4bb58 8 39 56
+4bb60 4 39 56
+4bb64 8 39 56
+4bb6c 4 39 56
+FUNC 4bb70 3c 0 testing::internal::TestFactoryImpl<WastefulVectorTest_UsesPageAllocator_Test>::CreateTest
+4bb70 10 486 85
+4bb80 8 486 85
+4bb88 8 91 56
+4bb90 4 486 85
+4bb94 c 91 56
+4bba0 c 486 85
+FUNC 4bbac 3c 0 testing::internal::TestFactoryImpl<WastefulVectorTest_Simple_Test>::CreateTest
+4bbac 10 486 85
+4bbbc 8 486 85
+4bbc4 8 76 56
+4bbcc 4 486 85
+4bbd0 c 76 56
+4bbdc c 486 85
+FUNC 4bbe8 3c 0 testing::internal::TestFactoryImpl<WastefulVectorTest_Setup_Test>::CreateTest
+4bbe8 10 486 85
+4bbf8 8 486 85
+4bc00 8 69 56
+4bc08 4 486 85
+4bc0c c 69 56
+4bc18 c 486 85
+FUNC 4bc24 3c 0 testing::internal::TestFactoryImpl<PageAllocatorTest_LargeObject_Test>::CreateTest
+4bc24 10 486 85
+4bc34 8 486 85
+4bc3c 8 53 56
+4bc44 4 486 85
+4bc48 c 53 56
+4bc54 c 486 85
+FUNC 4bc60 3c 0 testing::internal::TestFactoryImpl<PageAllocatorTest_SmallObjects_Test>::CreateTest
+4bc60 10 486 85
+4bc70 8 486 85
+4bc78 8 43 56
+4bc80 4 486 85
+4bc84 c 43 56
+4bc90 c 486 85
+FUNC 4bc9c 3c 0 testing::internal::TestFactoryImpl<PageAllocatorTest_Setup_Test>::CreateTest
+4bc9c 10 486 85
+4bcac 8 486 85
+4bcb4 8 39 56
+4bcbc 4 486 85
+4bcc0 c 39 56
+4bccc c 486 85
+FUNC 4bcd8 34 0 google_breakpad::PageAllocator::PageAllocator
+4bcd8 c 63 54
+4bce4 4 63 54
+4bce8 4 64 54
+4bcec 14 67 54
+4bd00 c 68 54
+FUNC 4bd0c fc 0 google_breakpad::PageAllocator::Alloc
+4bd0c 10 74 54
+4bd1c 4 75 54
+4bd20 8 76 54
+4bd28 c 78 54
+4bd34 10 78 54
+4bd44 4 79 54
+4bd48 4 80 54
+4bd4c 8 81 54
+4bd54 8 80 54
+4bd5c 4 82 54
+4bd60 4 83 54
+4bd64 8 86 54
+4bd6c c 90 54
+4bd78 c 3940 97
+4bd84 4 90 54
+4bd88 4 3940 97
+4bd8c 4 119 54
+4bd90 18 3940 97
+4bda8 4 3940 97
+4bdac c 3940 97
+4bdb8 8 124 54
+4bdc0 8 134 54
+4bdc8 4 135 54
+4bdcc 4 136 54
+4bdd0 14 96 54
+4bde4 4 97 54
+4bde8 4 98 54
+4bdec 8 98 54
+4bdf4 4 98 54
+4bdf8 4 100 54
+4bdfc c 101 54
+FUNC 4be08 64 0 google_breakpad::PageAllocator::FreeAll
+4be08 10 141 54
+4be18 4 141 54
+4be1c 4 144 54
+4be20 4 144 54
+4be24 8 146 54
+4be2c 4 145 54
+4be30 18 3074 97
+4be48 4 3074 97
+4be4c 8 3074 97
+4be54 8 141 54
+4be5c 10 148 54
+FUNC 4be6c 2c 0 PageAllocatorTest_Setup_Test::TestBody
+4be6c c 39 56
+4be78 c 40 56
+4be84 8 71 54
+4be8c c 41 56
+FUNC 4be98 114 0 PageAllocatorTest_SmallObjects_Test::TestBody
+4be98 10 43 56
+4bea8 4 44 56
+4beac 4 277 82
+4beb0 4 43 56
+4beb4 10 44 56
+4bec4 c 47 56
+4bed0 4 48 56
+4bed4 4 47 56
+4bed8 4 1139 87
+4bedc 4 48 56
+4bee0 4 277 82
+4bee4 4 48 56
+4bee8 24 48 56
+4bf0c 4 48 56
+4bf10 4 48 56
+4bf14 4 48 56
+4bf18 1c 48 56
+4bf34 8 48 56
+4bf3c c 48 56
+4bf48 8 85 79
+4bf50 8 48 56
+4bf58 8 156 132
+4bf60 14 256 82
+4bf74 14 49 56
+4bf88 8 46 56
+4bf90 8 71 54
+4bf98 14 51 56
+FUNC 4bfac 180 0 PageAllocatorTest_LargeObject_Test::TestBody
+4bfac c 53 56
+4bfb8 4 54 56
+4bfbc 4 53 56
+4bfc0 4 54 56
+4bfc4 4 53 56
+4bfc8 4 54 56
+4bfcc 4 277 82
+4bfd0 10 56 56
+4bfe0 8 57 56
+4bfe8 4 1139 87
+4bfec 4 277 82
+4bff0 4 57 56
+4bff4 24 57 56
+4c018 4 57 56
+4c01c 4 57 56
+4c020 18 57 56
+4c038 c 256 82
+4c044 c 59 56
+4c050 4 60 56
+4c054 4 59 56
+4c058 4 1139 87
+4c05c 4 60 56
+4c060 4 277 82
+4c064 4 60 56
+4c068 24 60 56
+4c08c 4 60 56
+4c090 4 60 56
+4c094 18 60 56
+4c0ac 4 60 56
+4c0b0 4 60 56
+4c0b4 8 60 56
+4c0bc c 60 56
+4c0c8 8 85 79
+4c0d0 8 60 56
+4c0d8 8 156 132
+4c0e0 14 256 82
+4c0f4 14 61 56
+4c108 8 58 56
+4c110 8 71 54
+4c118 14 63 56
+FUNC 4c12c d4 0 std::priv::_Impl_vector<unsigned int, google_breakpad::PageStdAllocator<unsigned int> >::push_back
+4c12c 14 376 139
+4c140 14 380 139
+4c154 4 126 103
+4c158 10 382 139
+4c168 4 192 139
+4c16c 4 176 139
+4c170 10 192 139
+4c180 4 175 139
+4c184 10 176 139
+4c194 8 177 139
+4c19c 18 172 54
+4c1b4 4 112 138
+4c1b8 4 172 54
+4c1bc 8 224 100
+4c1c4 8 224 100
+4c1cc 4 224 100
+4c1d0 8 481 100
+4c1d8 4 118 138
+4c1dc 4 481 100
+4c1e0 4 666 139
+4c1e4 4 667 139
+4c1e8 4 668 139
+4c1ec 14 388 139
+FUNC 4c200 50 0 testing::internal::DefaultPrintTo<unsigned int>
+4c200 14 307 80
+4c214 4 310 80
+4c218 4 334 80
+4c21c 4 333 122
+4c220 4 334 80
+4c224 8 333 122
+4c22c 10 318 80
+4c23c 8 291 121
+4c244 8 334 80
+4c24c 4 291 121
+FUNC 4c250 a8 0 std::priv::_Impl_vector<unsigned int, google_breakpad::PageStdAllocator<unsigned int> >::reserve
+4c250 14 62 138
+4c264 4 62 138
+4c268 c 199 139
+4c274 8 63 138
+4c27c c 64 138
+4c288 c 41 138
+4c294 8 192 139
+4c29c 8 172 54
+4c2a4 4 192 139
+4c2a8 4 70 138
+4c2ac 8 172 54
+4c2b4 14 120 137
+4c2c8 8 172 54
+4c2d0 8 76 138
+4c2d8 4 666 139
+4c2dc 4 667 139
+4c2e0 4 668 139
+4c2e4 14 78 138
+FUNC 4c2f8 134 0 WastefulVectorTest_UsesPageAllocator_Test::TestBody
+4c2f8 c 91 56
+4c304 4 92 56
+4c308 4 91 56
+4c30c 4 92 56
+4c310 4 95 56
+4c314 4 91 56
+4c318 4 92 56
+4c31c 4 67 139
+4c320 8 153 143
+4c328 8 67 139
+4c330 4 163 54
+4c334 4 481 101
+4c338 4 153 143
+4c33c 8 95 56
+4c344 10 173 143
+4c354 4 106 54
+4c358 4 108 54
+4c35c 4 106 54
+4c360 8 108 54
+4c368 10 108 54
+4c378 8 106 54
+4c380 4 109 54
+4c384 8 277 82
+4c38c 8 1139 87
+4c394 4 96 56
+4c398 1c 96 56
+4c3b4 4 96 56
+4c3b8 4 96 56
+4c3bc 4 96 56
+4c3c0 1c 96 56
+4c3dc 8 96 56
+4c3e4 c 96 56
+4c3f0 8 85 79
+4c3f8 8 96 56
+4c400 8 156 132
+4c408 8 256 82
+4c410 8 71 54
+4c418 14 97 56
+FUNC 4c42c b4 0 testing::internal::CmpHelperEQFailure<long unsigned int, unsigned int>
+4c42c c 1464 82
+4c438 4 884 80
+4c43c 8 1464 82
+4c444 8 1464 82
+4c44c 8 884 80
+4c454 c 1464 82
+4c460 4 884 80
+4c464 8 263 121
+4c46c 4 75 127
+4c470 8 263 121
+4c478 c 75 127
+4c484 8 886 80
+4c48c 10 1382 82
+4c49c 1c 1471 82
+4c4b8 10 156 132
+4c4c8 18 1472 82
+FUNC 4c4e0 d8 0 WastefulVectorTest_Setup_Test::TestBody
+4c4e0 c 69 56
+4c4ec 4 70 56
+4c4f0 4 277 82
+4c4f4 4 70 56
+4c4f8 4 69 56
+4c4fc 4 70 56
+4c500 4 256 82
+4c504 c 172 54
+4c510 4 1139 87
+4c514 8 277 82
+4c51c 8 256 82
+4c524 8 1482 82
+4c52c 8 73 56
+4c534 4 1144 87
+4c538 c 298 82
+4c544 8 298 82
+4c54c 18 73 56
+4c564 4 73 56
+4c568 4 73 56
+4c56c 8 73 56
+4c574 c 73 56
+4c580 8 85 79
+4c588 8 73 56
+4c590 10 256 82
+4c5a0 8 71 54
+4c5a8 10 74 56
+FUNC 4c5b8 84 0 testing::internal::CmpHelperEQFailure<unsigned int, unsigned int>
+4c5b8 c 1464 82
+4c5c4 8 1382 82
+4c5cc 4 1464 82
+4c5d0 8 1464 82
+4c5d8 8 1382 82
+4c5e0 8 1464 82
+4c5e8 14 1382 82
+4c5fc 1c 1471 82
+4c618 10 156 132
+4c628 14 1472 82
+FUNC 4c63c 478 0 WastefulVectorTest_Simple_Test::TestBody
+4c63c 10 76 56
+4c64c 8 77 56
+4c654 8 76 56
+4c65c 4 67 139
+4c660 4 80 56
+4c664 8 76 56
+4c66c 4 1487 82
+4c670 4 76 56
+4c674 4 77 56
+4c678 4 67 139
+4c67c 8 153 143
+4c684 8 67 139
+4c68c 4 163 54
+4c690 4 1487 82
+4c694 4 481 101
+4c698 4 153 143
+4c69c 4 1487 82
+4c6a0 4 80 56
+4c6a4 4 1487 82
+4c6a8 4 256 82
+4c6ac 4 1487 82
+4c6b0 c 80 56
+4c6bc 10 173 143
+4c6cc 4 1482 82
+4c6d0 4 1481 82
+4c6d4 4 207 139
+4c6d8 c 1481 82
+4c6e4 8 1482 82
+4c6ec 10 1487 82
+4c6fc 8 82 56
+4c704 4 1144 87
+4c708 c 298 82
+4c714 8 298 82
+4c71c 1c 82 56
+4c738 8 256 82
+4c740 4 207 139
+4c744 8 202 139
+4c74c 4 207 139
+4c750 4 202 139
+4c754 8 1481 82
+4c75c c 1482 82
+4c768 8 884 80
+4c770 4 380 80
+4c774 4 75 127
+4c778 4 884 80
+4c77c 8 380 80
+4c784 4 75 127
+4c788 4 380 80
+4c78c c 75 127
+4c798 8 886 80
+4c7a0 c 884 80
+4c7ac 8 380 80
+4c7b4 4 75 127
+4c7b8 4 380 80
+4c7bc c 75 127
+4c7c8 8 886 80
+4c7d0 24 1471 82
+4c7f4 10 156 132
+4c804 8 83 56
+4c80c 4 1144 87
+4c810 c 298 82
+4c81c 8 298 82
+4c824 1c 83 56
+4c840 c 83 56
+4c84c c 83 56
+4c858 8 85 79
+4c860 8 83 56
+4c868 14 256 82
+4c87c 10 80 56
+4c88c 4 85 56
+4c890 4 277 82
+4c894 4 85 56
+4c898 8 1139 87
+4c8a0 8 85 56
+4c8a8 4 277 82
+4c8ac 4 1139 87
+4c8b0 4 85 56
+4c8b4 24 85 56
+4c8d8 1c 85 56
+4c8f4 8 85 56
+4c8fc c 85 56
+4c908 8 85 79
+4c910 8 85 56
+4c918 8 156 132
+4c920 10 256 82
+4c930 4 192 139
+4c934 4 1482 82
+4c938 c 192 139
+4c944 8 86 56
+4c94c 4 1481 82
+4c950 4 86 56
+4c954 4 1481 82
+4c958 8 1482 82
+4c960 1c 1487 82
+4c97c 8 86 56
+4c984 4 1144 87
+4c988 c 298 82
+4c994 8 298 82
+4c99c 18 86 56
+4c9b4 4 256 82
+4c9b8 4 1487 82
+4c9bc 4 256 82
+4c9c0 c 1487 82
+4c9cc 4 256 82
+4c9d0 8 87 56
+4c9d8 8 256 82
+4c9e0 c 87 56
+4c9ec c 87 56
+4c9f8 8 202 139
+4ca00 4 1482 82
+4ca04 4 202 139
+4ca08 c 1481 82
+4ca14 4 1482 82
+4ca18 8 88 56
+4ca20 4 1144 87
+4ca24 8 298 82
+4ca2c 18 88 56
+4ca44 8 88 56
+4ca4c c 88 56
+4ca58 8 85 79
+4ca60 8 88 56
+4ca68 14 1487 82
+4ca7c c 298 82
+4ca88 8 71 54
+4ca90 24 89 56
+FUNC 4cab4 4 0 testing::internal::TestFactoryImpl<google_breakpad::NonAllocatingMapTest_OutOfSpace_Test>::~TestFactoryImpl
+4cab4 4 484 85
+FUNC 4cab8 4 0 testing::internal::TestFactoryImpl<google_breakpad::NonAllocatingMapTest_Serialize_Test>::~TestFactoryImpl
+4cab8 4 484 85
+FUNC 4cabc 4 0 testing::internal::TestFactoryImpl<google_breakpad::NonAllocatingMapTest_AddRemove_Test>::~TestFactoryImpl
+4cabc 4 484 85
+FUNC 4cac0 4 0 testing::internal::TestFactoryImpl<google_breakpad::NonAllocatingMapTest_Iterator_Test>::~TestFactoryImpl
+4cac0 4 484 85
+FUNC 4cac4 4 0 testing::internal::TestFactoryImpl<google_breakpad::NonAllocatingMapTest_CopyAndAssign_Test>::~TestFactoryImpl
+4cac4 4 484 85
+FUNC 4cac8 4 0 testing::internal::TestFactoryImpl<google_breakpad::NonAllocatingMapTest_SimpleStringDictionary_Test>::~TestFactoryImpl
+4cac8 4 484 85
+FUNC 4cacc 4 0 testing::internal::TestFactoryImpl<google_breakpad::NonAllocatingMapTest_Entry_Test>::~TestFactoryImpl
+4cacc 4 484 85
+FUNC 4cad0 4 0 testing::internal::TestFactoryImpl<google_breakpad::NonAllocatingMapTest_Entry_Test>::~TestFactoryImpl
+4cad0 4 484 85
+FUNC 4cad4 4 0 testing::internal::TestFactoryImpl<google_breakpad::NonAllocatingMapTest_SimpleStringDictionary_Test>::~TestFactoryImpl
+4cad4 4 484 85
+FUNC 4cad8 4 0 testing::internal::TestFactoryImpl<google_breakpad::NonAllocatingMapTest_CopyAndAssign_Test>::~TestFactoryImpl
+4cad8 4 484 85
+FUNC 4cadc 4 0 testing::internal::TestFactoryImpl<google_breakpad::NonAllocatingMapTest_Iterator_Test>::~TestFactoryImpl
+4cadc 4 484 85
+FUNC 4cae0 4 0 testing::internal::TestFactoryImpl<google_breakpad::NonAllocatingMapTest_AddRemove_Test>::~TestFactoryImpl
+4cae0 4 484 85
+FUNC 4cae4 4 0 testing::internal::TestFactoryImpl<google_breakpad::NonAllocatingMapTest_Serialize_Test>::~TestFactoryImpl
+4cae4 4 484 85
+FUNC 4cae8 4 0 testing::internal::TestFactoryImpl<google_breakpad::NonAllocatingMapTest_OutOfSpace_Test>::~TestFactoryImpl
+4cae8 4 484 85
+FUNC 4caec 14 0 google_breakpad::NonAllocatingMapTest_OutOfSpace_Test::~NonAllocatingMapTest_OutOfSpace_Test
+4caec 14 282 59
+FUNC 4cb00 24 0 google_breakpad::NonAllocatingMapTest_OutOfSpace_Test::~NonAllocatingMapTest_OutOfSpace_Test
+4cb00 c 282 59
+4cb0c 8 282 59
+4cb14 4 282 59
+4cb18 8 282 59
+4cb20 4 282 59
+FUNC 4cb24 14 0 google_breakpad::NonAllocatingMapTest_Serialize_Test::~NonAllocatingMapTest_Serialize_Test
+4cb24 14 253 59
+FUNC 4cb38 24 0 google_breakpad::NonAllocatingMapTest_Serialize_Test::~NonAllocatingMapTest_Serialize_Test
+4cb38 c 253 59
+4cb44 8 253 59
+4cb4c 4 253 59
+4cb50 8 253 59
+4cb58 4 253 59
+FUNC 4cb5c 14 0 google_breakpad::NonAllocatingMapTest_AddRemove_Test::~NonAllocatingMapTest_AddRemove_Test
+4cb5c 14 228 59
+FUNC 4cb70 24 0 google_breakpad::NonAllocatingMapTest_AddRemove_Test::~NonAllocatingMapTest_AddRemove_Test
+4cb70 c 228 59
+4cb7c 8 228 59
+4cb84 4 228 59
+4cb88 8 228 59
+4cb90 4 228 59
+FUNC 4cb94 14 0 google_breakpad::NonAllocatingMapTest_Iterator_Test::~NonAllocatingMapTest_Iterator_Test
+4cb94 14 127 59
+FUNC 4cba8 24 0 google_breakpad::NonAllocatingMapTest_Iterator_Test::~NonAllocatingMapTest_Iterator_Test
+4cba8 c 127 59
+4cbb4 8 127 59
+4cbbc 4 127 59
+4cbc0 8 127 59
+4cbc8 4 127 59
+FUNC 4cbcc 14 0 google_breakpad::NonAllocatingMapTest_CopyAndAssign_Test::~NonAllocatingMapTest_CopyAndAssign_Test
+4cbcc 14 92 59
+FUNC 4cbe0 24 0 google_breakpad::NonAllocatingMapTest_CopyAndAssign_Test::~NonAllocatingMapTest_CopyAndAssign_Test
+4cbe0 c 92 59
+4cbec 8 92 59
+4cbf4 4 92 59
+4cbf8 8 92 59
+4cc00 4 92 59
+FUNC 4cc04 14 0 google_breakpad::NonAllocatingMapTest_SimpleStringDictionary_Test::~NonAllocatingMapTest_SimpleStringDictionary_Test
+4cc04 14 63 59
+FUNC 4cc18 24 0 google_breakpad::NonAllocatingMapTest_SimpleStringDictionary_Test::~NonAllocatingMapTest_SimpleStringDictionary_Test
+4cc18 c 63 59
+4cc24 8 63 59
+4cc2c 4 63 59
+4cc30 8 63 59
+4cc38 4 63 59
+FUNC 4cc3c 14 0 google_breakpad::NonAllocatingMapTest_Entry_Test::~NonAllocatingMapTest_Entry_Test
+4cc3c 14 35 59
+FUNC 4cc50 24 0 google_breakpad::NonAllocatingMapTest_Entry_Test::~NonAllocatingMapTest_Entry_Test
+4cc50 c 35 59
+4cc5c 8 35 59
+4cc64 4 35 59
+4cc68 8 35 59
+4cc70 4 35 59
+FUNC 4cc74 cc 0 google_breakpad::NonAllocatingMap<3ul, 2ul, 2ul>::SetKeyValue
+4cc74 18 161 58
+4cc8c 8 161 58
+4cc94 28 240 58
+4ccbc 4 239 58
+4ccc0 8 240 58
+4ccc8 4 239 58
+4cccc 4 241 58
+4ccd0 8 179 58
+4ccd8 14 181 58
+4ccec 8 180 58
+4ccf4 4 181 58
+4ccf8 14 184 58
+4cd0c 4 182 58
+4cd10 4 184 58
+4cd14 4 185 58
+4cd18 10 206 58
+4cd28 4 207 58
+4cd2c 14 208 58
+FUNC 4cd40 b8 0 google_breakpad::NonAllocatingMap<5ul, 9ul, 15ul>::SetKeyValue
+4cd40 14 161 58
+4cd54 14 161 58
+4cd68 18 240 58
+4cd80 10 239 58
+4cd90 c 181 58
+4cd9c 10 184 58
+4cdac 10 185 58
+4cdbc 8 180 58
+4cdc4 c 180 58
+4cdd0 10 206 58
+4cde0 4 207 58
+4cde4 14 208 58
+FUNC 4cdf8 3c 0 testing::internal::TestFactoryImpl<google_breakpad::NonAllocatingMapTest_OutOfSpace_Test>::CreateTest
+4cdf8 10 486 85
+4ce08 8 486 85
+4ce10 8 282 59
+4ce18 4 486 85
+4ce1c c 282 59
+4ce28 c 486 85
+FUNC 4ce34 3c 0 testing::internal::TestFactoryImpl<google_breakpad::NonAllocatingMapTest_SimpleStringDictionary_Test>::CreateTest
+4ce34 10 486 85
+4ce44 8 486 85
+4ce4c 8 63 59
+4ce54 4 486 85
+4ce58 c 63 59
+4ce64 c 486 85
+FUNC 4ce70 3c 0 testing::internal::TestFactoryImpl<google_breakpad::NonAllocatingMapTest_Entry_Test>::CreateTest
+4ce70 10 486 85
+4ce80 8 486 85
+4ce88 8 35 59
+4ce90 4 486 85
+4ce94 c 35 59
+4cea0 c 486 85
+FUNC 4ceac 3c 0 testing::internal::TestFactoryImpl<google_breakpad::NonAllocatingMapTest_Serialize_Test>::CreateTest
+4ceac 10 486 85
+4cebc 8 486 85
+4cec4 8 253 59
+4cecc 4 486 85
+4ced0 c 253 59
+4cedc c 486 85
+FUNC 4cee8 3c 0 testing::internal::TestFactoryImpl<google_breakpad::NonAllocatingMapTest_AddRemove_Test>::CreateTest
+4cee8 10 486 85
+4cef8 8 486 85
+4cf00 8 228 59
+4cf08 4 486 85
+4cf0c c 228 59
+4cf18 c 486 85
+FUNC 4cf24 3c 0 testing::internal::TestFactoryImpl<google_breakpad::NonAllocatingMapTest_Iterator_Test>::CreateTest
+4cf24 10 486 85
+4cf34 8 486 85
+4cf3c 8 127 59
+4cf44 4 486 85
+4cf48 c 127 59
+4cf54 c 486 85
+FUNC 4cf60 3c 0 testing::internal::TestFactoryImpl<google_breakpad::NonAllocatingMapTest_CopyAndAssign_Test>::CreateTest
+4cf60 10 486 85
+4cf70 8 486 85
+4cf78 8 92 59
+4cf80 4 486 85
+4cf84 c 92 59
+4cf90 c 486 85
+FUNC 4cf9c 28 0 google_breakpad::NonAllocatingMap<5ul, 7ul, 6ul>::GetCount
+4cf9c 8 133 58
+4cfa4 14 134 58
+4cfb8 8 135 58
+4cfc0 4 141 58
+FUNC 4cfc4 5c 0 google_breakpad::NonAllocatingMap<256ul, 256ul, 64ul>::GetConstEntryForKey
+4cfc4 10 238 58
+4cfd4 10 238 58
+4cfe4 18 240 58
+4cffc 8 239 58
+4d004 c 244 58
+4d010 10 245 58
+FUNC 4d020 24 0 google_breakpad::NonAllocatingMap<256ul, 256ul, 64ul>::RemoveKey
+4d020 8 212 58
+4d028 4 214 58
+4d02c 4 248 58
+4d030 4 218 58
+4d034 4 219 58
+4d038 4 220 58
+4d03c 8 226 58
+FUNC 4d044 c0 0 google_breakpad::NonAllocatingMap<256ul, 256ul, 64ul>::SetKeyValue
+4d044 14 161 58
+4d058 4 161 58
+4d05c 4 162 58
+4d060 10 208 58
+4d070 4 163 58
+4d074 4 168 58
+4d078 14 173 58
+4d08c 8 248 58
+4d094 c 179 58
+4d0a0 8 181 58
+4d0a8 4 185 58
+4d0ac 4 184 58
+4d0b0 4 181 58
+4d0b4 c 184 58
+4d0c0 8 185 58
+4d0c8 8 180 58
+4d0d0 c 180 58
+4d0dc 10 206 58
+4d0ec 4 207 58
+4d0f0 14 208 58
+FUNC 4d104 5c 0 google_breakpad::NonAllocatingMap<10ul, 10ul, 10ul>::GetConstEntryForKey
+4d104 10 238 58
+4d114 10 238 58
+4d124 18 240 58
+4d13c 8 239 58
+4d144 c 244 58
+4d150 10 245 58
+FUNC 4d160 24 0 google_breakpad::NonAllocatingMap<10ul, 10ul, 10ul>::RemoveKey
+4d160 8 212 58
+4d168 4 214 58
+4d16c 4 248 58
+4d170 4 218 58
+4d174 4 219 58
+4d178 4 220 58
+4d17c 8 226 58
+FUNC 4d184 c4 0 google_breakpad::NonAllocatingMap<10ul, 10ul, 10ul>::SetKeyValue
+4d184 14 161 58
+4d198 4 161 58
+4d19c 4 162 58
+4d1a0 10 208 58
+4d1b0 4 163 58
+4d1b4 4 168 58
+4d1b8 14 173 58
+4d1cc 8 248 58
+4d1d4 c 179 58
+4d1e0 8 181 58
+4d1e8 4 184 58
+4d1ec 4 181 58
+4d1f0 c 184 58
+4d1fc 10 185 58
+4d20c 8 180 58
+4d214 c 180 58
+4d220 10 206 58
+4d230 4 207 58
+4d234 14 208 58
+FUNC 4d248 2c 0 google_breakpad::NonAllocatingMap<10ul, 10ul, 10ul>::GetValueForKey
+4d248 4 145 58
+4d24c 4 148 58
+4d250 4 145 58
+4d254 4 147 58
+4d258 4 150 58
+4d25c c 154 58
+4d268 c 155 58
+FUNC 4d274 5c 0 google_breakpad::NonAllocatingMap<5ul, 7ul, 6ul>::GetConstEntryForKey
+4d274 10 238 58
+4d284 10 238 58
+4d294 18 240 58
+4d2ac 8 239 58
+4d2b4 c 244 58
+4d2c0 10 245 58
+FUNC 4d2d0 24 0 google_breakpad::NonAllocatingMap<5ul, 7ul, 6ul>::RemoveKey
+4d2d0 8 212 58
+4d2d8 4 214 58
+4d2dc 4 248 58
+4d2e0 4 218 58
+4d2e4 4 219 58
+4d2e8 4 220 58
+4d2ec 8 226 58
+FUNC 4d2f4 c4 0 google_breakpad::NonAllocatingMap<5ul, 7ul, 6ul>::SetKeyValue
+4d2f4 14 161 58
+4d308 4 161 58
+4d30c 4 162 58
+4d310 10 208 58
+4d320 4 163 58
+4d324 4 168 58
+4d328 14 173 58
+4d33c 8 248 58
+4d344 c 179 58
+4d350 8 181 58
+4d358 4 184 58
+4d35c 4 181 58
+4d360 c 184 58
+4d36c 10 185 58
+4d37c 8 180 58
+4d384 c 180 58
+4d390 10 206 58
+4d3a0 4 207 58
+4d3a4 14 208 58
+FUNC 4d3b8 5c 0 google_breakpad::NonAllocatingMap<4ul, 5ul, 7ul>::GetConstEntryForKey
+4d3b8 10 238 58
+4d3c8 10 238 58
+4d3d8 18 240 58
+4d3f0 8 239 58
+4d3f8 c 244 58
+4d404 10 245 58
+FUNC 4d414 9c 0 google_breakpad::NonAllocatingMap<4ul, 5ul, 7ul>::SetKeyValue
+4d414 14 161 58
+4d428 c 161 58
+4d434 8 248 58
+4d43c c 179 58
+4d448 8 181 58
+4d450 4 185 58
+4d454 4 184 58
+4d458 4 185 58
+4d45c 8 184 58
+4d464 4 181 58
+4d468 4 184 58
+4d46c 8 185 58
+4d474 8 180 58
+4d47c c 180 58
+4d488 10 206 58
+4d498 4 207 58
+4d49c 14 208 58
+FUNC 4d4b0 600 0 google_breakpad::NonAllocatingMapTest_Entry_Test::TestBody
+4d4b0 20 35 59
+4d4d0 10 104 58
+4d4e0 4 104 58
+4d4e4 8 104 58
+4d4ec 14 104 58
+4d500 8 90 58
+4d508 8 88 58
+4d510 8 94 58
+4d518 4 91 58
+4d51c 4 277 82
+4d520 8 40 59
+4d528 4 1139 87
+4d52c 4 277 82
+4d530 4 40 59
+4d534 24 40 59
+4d558 4 40 59
+4d55c 4 40 59
+4d560 4 40 59
+4d564 1c 40 59
+4d580 8 40 59
+4d588 c 40 59
+4d594 8 85 79
+4d59c 8 40 59
+4d5a4 8 156 132
+4d5ac 34 256 82
+4d5e0 8 90 58
+4d5e8 8 88 58
+4d5f0 4 94 58
+4d5f4 4 1139 87
+4d5f8 10 277 82
+4d608 4 1139 87
+4d60c 4 45 59
+4d610 20 45 59
+4d630 4 45 59
+4d634 4 45 59
+4d638 4 45 59
+4d63c 1c 45 59
+4d658 8 45 59
+4d660 c 45 59
+4d66c 8 85 79
+4d674 8 45 59
+4d67c 8 156 132
+4d684 c 256 82
+4d690 c 46 59
+4d69c 8 256 82
+4d6a4 20 46 59
+4d6c4 4 302 82
+4d6c8 4 46 59
+4d6cc 8 302 82
+4d6d4 18 46 59
+4d6ec 8 46 59
+4d6f4 c 46 59
+4d700 8 85 79
+4d708 8 46 59
+4d710 4 256 82
+4d714 8 47 59
+4d71c 4 256 82
+4d720 24 47 59
+4d744 4 302 82
+4d748 4 47 59
+4d74c 8 302 82
+4d754 18 47 59
+4d76c 8 47 59
+4d774 c 47 59
+4d780 8 85 79
+4d788 8 47 59
+4d790 24 256 82
+4d7b4 24 51 59
+4d7d8 4 302 82
+4d7dc 4 51 59
+4d7e0 8 302 82
+4d7e8 18 51 59
+4d800 8 51 59
+4d808 c 51 59
+4d814 8 85 79
+4d81c 8 51 59
+4d824 8 256 82
+4d82c 20 54 59
+4d84c 4 302 82
+4d850 4 54 59
+4d854 8 302 82
+4d85c 18 54 59
+4d874 8 54 59
+4d87c c 54 59
+4d888 8 85 79
+4d890 8 54 59
+4d898 8 256 82
+4d8a0 4 240 58
+4d8a4 8 256 82
+4d8ac 14 240 58
+4d8c0 4 219 58
+4d8c4 c 220 58
+4d8d0 8 239 58
+4d8d8 8 58 59
+4d8e0 4 1139 87
+4d8e4 8 58 59
+4d8ec 4 277 82
+4d8f0 4 58 59
+4d8f4 20 58 59
+4d914 4 58 59
+4d918 4 58 59
+4d91c 1c 58 59
+4d938 8 58 59
+4d940 c 58 59
+4d94c 8 85 79
+4d954 8 58 59
+4d95c 8 156 132
+4d964 8 256 82
+4d96c 10 59 59
+4d97c 4 1482 82
+4d980 4 1481 82
+4d984 8 1482 82
+4d98c 1c 1487 82
+4d9a8 8 59 59
+4d9b0 c 302 82
+4d9bc 18 59 59
+4d9d4 8 59 59
+4d9dc c 59 59
+4d9e8 8 85 79
+4d9f0 8 59 59
+4d9f8 8 256 82
+4da00 10 60 59
+4da10 4 1482 82
+4da14 4 1481 82
+4da18 8 1482 82
+4da20 1c 1487 82
+4da3c 8 60 59
+4da44 c 302 82
+4da50 18 60 59
+4da68 8 60 59
+4da70 c 60 59
+4da7c 8 85 79
+4da84 8 60 59
+4da8c 8 256 82
+4da94 1c 61 59
+FUNC 4dab0 990 0 google_breakpad::NonAllocatingMapTest_CopyAndAssign_Test::TestBody
+4dab0 30 92 59
+4dae0 4 104 58
+4dae4 4 92 59
+4dae8 8 104 58
+4daf0 4 104 58
+4daf4 8 104 58
+4dafc 4 104 58
+4db00 14 94 59
+4db14 8 95 59
+4db1c 4 96 59
+4db20 4 94 59
+4db24 4 96 59
+4db28 14 95 59
+4db3c 10 96 59
+4db4c 8 97 59
+4db54 4 98 59
+4db58 4 97 59
+4db5c 14 98 59
+4db70 14 134 58
+4db84 8 135 58
+4db8c 4 98 59
+4db90 4 1512 82
+4db94 4 98 59
+4db98 20 1512 82
+4dbb8 c 98 59
+4dbc4 c 302 82
+4dbd0 18 98 59
+4dbe8 8 98 59
+4dbf0 c 98 59
+4dbfc 8 85 79
+4dc04 8 98 59
+4dc0c 4 256 82
+4dc10 4 102 59
+4dc14 4 256 82
+4dc18 10 117 58
+4dc28 c 102 59
+4dc34 14 134 58
+4dc48 8 135 58
+4dc50 4 1512 82
+4dc54 4 102 59
+4dc58 1c 1512 82
+4dc74 8 102 59
+4dc7c c 302 82
+4dc88 18 102 59
+4dca0 8 102 59
+4dca8 c 102 59
+4dcb4 8 85 79
+4dcbc 8 102 59
+4dcc4 4 256 82
+4dcc8 8 103 59
+4dcd0 4 256 82
+4dcd4 10 103 59
+4dce4 14 103 59
+4dcf8 c 103 59
+4dd04 c 302 82
+4dd10 18 103 59
+4dd28 8 103 59
+4dd30 c 103 59
+4dd3c 8 85 79
+4dd44 8 103 59
+4dd4c 4 256 82
+4dd50 4 104 59
+4dd54 4 256 82
+4dd58 14 104 59
+4dd6c 1c 104 59
+4dd88 c 104 59
+4dd94 c 302 82
+4dda0 18 104 59
+4ddb8 8 104 59
+4ddc0 c 104 59
+4ddcc 8 85 79
+4ddd4 8 104 59
+4dddc 4 256 82
+4dde0 4 105 59
+4dde4 4 256 82
+4dde8 24 105 59
+4de0c 8 106 59
+4de14 4 106 59
+4de18 8 106 59
+4de20 20 106 59
+4de40 10 106 59
+4de50 c 302 82
+4de5c 18 106 59
+4de74 8 106 59
+4de7c c 106 59
+4de88 8 85 79
+4de90 8 106 59
+4de98 8 256 82
+4dea0 18 107 59
+4deb8 4 1139 87
+4debc 4 277 82
+4dec0 4 107 59
+4dec4 20 107 59
+4dee4 4 107 59
+4dee8 4 107 59
+4deec 1c 107 59
+4df08 8 107 59
+4df10 c 107 59
+4df1c 8 85 79
+4df24 8 107 59
+4df2c 8 156 132
+4df34 c 256 82
+4df40 8 104 58
+4df48 4 104 58
+4df4c 8 104 58
+4df54 4 104 58
+4df58 8 117 58
+4df60 4 112 59
+4df64 4 117 58
+4df68 c 112 59
+4df74 14 134 58
+4df88 8 135 58
+4df90 4 112 59
+4df94 20 1512 82
+4dfb4 8 112 59
+4dfbc c 302 82
+4dfc8 18 112 59
+4dfe0 8 112 59
+4dfe8 c 112 59
+4dff4 8 85 79
+4dffc 8 112 59
+4e004 8 256 82
+4e00c 10 113 59
+4e01c 20 113 59
+4e03c c 113 59
+4e048 c 302 82
+4e054 18 113 59
+4e06c 8 113 59
+4e074 c 113 59
+4e080 8 85 79
+4e088 8 113 59
+4e090 8 256 82
+4e098 14 114 59
+4e0ac 20 114 59
+4e0cc 8 114 59
+4e0d4 c 302 82
+4e0e0 18 114 59
+4e0f8 8 114 59
+4e100 c 114 59
+4e10c 8 85 79
+4e114 8 114 59
+4e11c 4 256 82
+4e120 4 115 59
+4e124 4 256 82
+4e128 1c 115 59
+4e144 14 116 59
+4e158 1c 116 59
+4e174 8 116 59
+4e17c c 302 82
+4e188 18 116 59
+4e1a0 8 116 59
+4e1a8 c 116 59
+4e1b4 8 85 79
+4e1bc 8 116 59
+4e1c4 8 256 82
+4e1cc 18 117 59
+4e1e4 4 1139 87
+4e1e8 4 277 82
+4e1ec 4 117 59
+4e1f0 20 117 59
+4e210 4 117 59
+4e214 4 117 59
+4e218 1c 117 59
+4e234 8 117 59
+4e23c c 117 59
+4e248 8 85 79
+4e250 8 117 59
+4e258 8 156 132
+4e260 4 256 82
+4e264 4 119 59
+4e268 4 256 82
+4e26c c 119 59
+4e278 14 120 59
+4e28c 4 1139 87
+4e290 4 277 82
+4e294 4 120 59
+4e298 20 120 59
+4e2b8 4 120 59
+4e2bc 4 120 59
+4e2c0 1c 120 59
+4e2dc 8 120 59
+4e2e4 c 120 59
+4e2f0 8 85 79
+4e2f8 8 120 59
+4e300 8 156 132
+4e308 8 256 82
+4e310 10 121 59
+4e320 18 121 59
+4e338 8 121 59
+4e340 c 302 82
+4e34c 18 121 59
+4e364 8 121 59
+4e36c c 121 59
+4e378 8 85 79
+4e380 8 121 59
+4e388 8 256 82
+4e390 10 122 59
+4e3a0 18 122 59
+4e3b8 8 122 59
+4e3c0 c 302 82
+4e3cc 18 122 59
+4e3e4 8 122 59
+4e3ec c 122 59
+4e3f8 8 85 79
+4e400 8 122 59
+4e408 8 256 82
+4e410 30 123 59
+FUNC 4e440 6a8 0 google_breakpad::NonAllocatingMapTest_AddRemove_Test::TestBody
+4e440 4 228 59
+4e444 4 230 59
+4e448 c 228 59
+4e454 c 104 58
+4e460 4 230 59
+4e464 4 228 59
+4e468 4 104 58
+4e46c 4 1512 82
+4e470 4 104 58
+4e474 4 1512 82
+4e478 4 104 58
+4e47c 4 1512 82
+4e480 c 104 58
+4e48c c 228 59
+4e498 4 104 58
+4e49c 4 230 59
+4e4a0 4 104 58
+4e4a4 c 230 59
+4e4b0 4 231 59
+4e4b4 8 104 58
+4e4bc 4 231 59
+4e4c0 4 104 58
+4e4c4 4 230 59
+4e4c8 c 231 59
+4e4d4 8 232 59
+4e4dc 4 1512 82
+4e4e0 4 231 59
+4e4e4 10 232 59
+4e4f4 14 234 59
+4e508 20 1512 82
+4e528 18 234 59
+4e540 c 302 82
+4e54c 18 234 59
+4e564 8 234 59
+4e56c c 234 59
+4e578 8 85 79
+4e580 8 234 59
+4e588 8 256 82
+4e590 10 150 58
+4e5a0 4 154 58
+4e5a4 4 235 59
+4e5a8 4 154 58
+4e5ac 20 235 59
+4e5cc 8 235 59
+4e5d4 c 302 82
+4e5e0 18 235 59
+4e5f8 8 235 59
+4e600 c 235 59
+4e60c 8 85 79
+4e614 8 235 59
+4e61c 4 256 82
+4e620 4 236 59
+4e624 4 256 82
+4e628 c 150 58
+4e634 8 154 58
+4e63c 20 236 59
+4e65c 8 236 59
+4e664 c 302 82
+4e670 18 236 59
+4e688 8 236 59
+4e690 c 236 59
+4e69c 8 85 79
+4e6a4 8 236 59
+4e6ac 4 256 82
+4e6b0 4 237 59
+4e6b4 4 256 82
+4e6b8 c 150 58
+4e6c4 8 154 58
+4e6cc 1c 237 59
+4e6e8 8 237 59
+4e6f0 c 302 82
+4e6fc 18 237 59
+4e714 8 237 59
+4e71c c 237 59
+4e728 8 85 79
+4e730 8 237 59
+4e738 4 256 82
+4e73c 4 1512 82
+4e740 4 256 82
+4e744 c 239 59
+4e750 14 241 59
+4e764 18 1512 82
+4e77c 8 241 59
+4e784 c 302 82
+4e790 18 241 59
+4e7a8 8 241 59
+4e7b0 c 241 59
+4e7bc 8 85 79
+4e7c4 8 241 59
+4e7cc 8 256 82
+4e7d4 c 150 58
+4e7e0 8 154 58
+4e7e8 4 1139 87
+4e7ec 4 154 58
+4e7f0 8 242 59
+4e7f8 4 277 82
+4e7fc 4 242 59
+4e800 1c 242 59
+4e81c 4 242 59
+4e820 4 242 59
+4e824 1c 242 59
+4e840 8 242 59
+4e848 c 242 59
+4e854 8 85 79
+4e85c 8 242 59
+4e864 8 156 132
+4e86c 4 256 82
+4e870 4 244 59
+4e874 4 256 82
+4e878 10 244 59
+4e888 14 245 59
+4e89c 18 1512 82
+4e8b4 8 245 59
+4e8bc c 302 82
+4e8c8 18 245 59
+4e8e0 8 245 59
+4e8e8 c 245 59
+4e8f4 8 85 79
+4e8fc 8 245 59
+4e904 8 256 82
+4e90c c 150 58
+4e918 8 154 58
+4e920 1c 246 59
+4e93c 8 246 59
+4e944 c 302 82
+4e950 18 246 59
+4e968 8 246 59
+4e970 c 246 59
+4e97c 8 85 79
+4e984 8 246 59
+4e98c 4 256 82
+4e990 4 249 59
+4e994 4 256 82
+4e998 c 248 59
+4e9a4 10 249 59
+4e9b4 1c 1512 82
+4e9d0 8 249 59
+4e9d8 c 302 82
+4e9e4 18 249 59
+4e9fc 8 249 59
+4ea04 c 249 59
+4ea10 8 85 79
+4ea18 8 249 59
+4ea20 8 256 82
+4ea28 c 150 58
+4ea34 8 154 58
+4ea3c 4 1139 87
+4ea40 4 154 58
+4ea44 8 250 59
+4ea4c 4 277 82
+4ea50 4 250 59
+4ea54 1c 250 59
+4ea70 4 250 59
+4ea74 4 250 59
+4ea78 1c 250 59
+4ea94 8 250 59
+4ea9c c 250 59
+4eaa8 8 85 79
+4eab0 8 250 59
+4eab8 8 156 132
+4eac0 8 256 82
+4eac8 20 251 59
+FUNC 4eae8 5a4 0 google_breakpad::NonAllocatingMapTest_Serialize_Test::TestBody
+4eae8 24 253 59
+4eb0c 4 104 58
+4eb10 4 253 59
+4eb14 c 104 58
+4eb20 4 104 58
+4eb24 4 104 58
+4eb28 54 104 58
+4eb7c c 150 58
+4eb88 10 154 58
+4eb98 24 260 59
+4ebbc 10 260 59
+4ebcc 4 302 82
+4ebd0 4 260 59
+4ebd4 8 302 82
+4ebdc 18 260 59
+4ebf4 8 260 59
+4ebfc c 260 59
+4ec08 8 85 79
+4ec10 8 260 59
+4ec18 4 256 82
+4ec1c 4 261 59
+4ec20 4 256 82
+4ec24 c 150 58
+4ec30 8 154 58
+4ec38 1c 261 59
+4ec54 8 261 59
+4ec5c 4 302 82
+4ec60 4 261 59
+4ec64 8 302 82
+4ec6c 18 261 59
+4ec84 8 261 59
+4ec8c c 261 59
+4ec98 8 85 79
+4eca0 8 261 59
+4eca8 4 256 82
+4ecac 4 262 59
+4ecb0 4 256 82
+4ecb4 c 150 58
+4ecc0 8 154 58
+4ecc8 1c 262 59
+4ece4 8 262 59
+4ecec 4 302 82
+4ecf0 4 262 59
+4ecf4 8 302 82
+4ecfc 18 262 59
+4ed14 8 262 59
+4ed1c c 262 59
+4ed28 8 85 79
+4ed30 8 262 59
+4ed38 8 256 82
+4ed40 8 268 59
+4ed48 4 277 82
+4ed4c 4 268 59
+4ed50 4 1139 87
+4ed54 c 277 82
+4ed60 4 269 59
+4ed64 24 269 59
+4ed88 4 269 59
+4ed8c 4 269 59
+4ed90 4 269 59
+4ed94 1c 269 59
+4edb0 8 269 59
+4edb8 c 269 59
+4edc4 8 85 79
+4edcc 8 269 59
+4edd4 8 156 132
+4eddc 14 256 82
+4edf0 10 270 59
+4ee00 10 127 58
+4ee10 8 273 59
+4ee18 c 275 59
+4ee24 14 134 58
+4ee38 8 135 58
+4ee40 4 275 59
+4ee44 28 1512 82
+4ee6c 8 275 59
+4ee74 c 302 82
+4ee80 18 275 59
+4ee98 8 275 59
+4eea0 c 275 59
+4eeac 8 85 79
+4eeb4 8 275 59
+4eebc 8 256 82
+4eec4 10 150 58
+4eed4 8 154 58
+4eedc 24 276 59
+4ef00 8 276 59
+4ef08 c 302 82
+4ef14 18 276 59
+4ef2c 8 276 59
+4ef34 c 276 59
+4ef40 8 85 79
+4ef48 8 276 59
+4ef50 8 256 82
+4ef58 c 150 58
+4ef64 8 154 58
+4ef6c 1c 277 59
+4ef88 8 277 59
+4ef90 c 302 82
+4ef9c 18 277 59
+4efb4 8 277 59
+4efbc c 277 59
+4efc8 8 85 79
+4efd0 8 277 59
+4efd8 8 256 82
+4efe0 c 150 58
+4efec 8 154 58
+4eff4 1c 278 59
+4f010 8 278 59
+4f018 c 302 82
+4f024 18 278 59
+4f03c 8 278 59
+4f044 c 278 59
+4f050 8 85 79
+4f058 8 278 59
+4f060 8 256 82
+4f068 24 279 59
+FUNC 4f08c 218 0 google_breakpad::NonAllocatingMapTest_OutOfSpace_Test::TestBody
+4f08c 14 282 59
+4f0a0 10 104 58
+4f0b0 c 282 59
+4f0bc 4 104 58
+4f0c0 4 1512 82
+4f0c4 4 104 58
+4f0c8 4 1512 82
+4f0cc 4 104 58
+4f0d0 4 1512 82
+4f0d4 8 104 58
+4f0dc c 104 58
+4f0e8 38 104 58
+4f120 8 287 59
+4f128 4 136 58
+4f12c 4 1512 82
+4f130 4 136 58
+4f134 4 1512 82
+4f138 4 136 58
+4f13c 4 1512 82
+4f140 4 136 58
+4f144 8 137 58
+4f14c 4 1512 82
+4f150 4 287 59
+4f154 10 1512 82
+4f164 8 287 59
+4f16c c 302 82
+4f178 18 287 59
+4f190 8 287 59
+4f198 c 287 59
+4f1a4 8 85 79
+4f1ac 8 287 59
+4f1b4 4 256 82
+4f1b8 4 240 58
+4f1bc 4 256 82
+4f1c0 24 240 58
+4f1e4 4 152 58
+4f1e8 4 240 58
+4f1ec 8 239 58
+4f1f4 4 239 58
+4f1f8 c 154 58
+4f204 4 288 59
+4f208 4 1139 87
+4f20c 4 288 59
+4f210 4 277 82
+4f214 4 288 59
+4f218 20 288 59
+4f238 4 288 59
+4f23c 4 288 59
+4f240 1c 288 59
+4f25c 8 288 59
+4f264 c 288 59
+4f270 8 85 79
+4f278 8 288 59
+4f280 8 156 132
+4f288 8 256 82
+4f290 14 289 59
+FUNC 4f2a4 144 0 testing::internal::CmpHelperOpFailure<char const*, char [7]>
+4f2a4 c 1579 82
+4f2b0 4 1583 82
+4f2b4 4 1579 82
+4f2b8 4 1583 82
+4f2bc 14 1579 82
+4f2d0 4 1408 82
+4f2d4 4 1579 82
+4f2d8 4 1408 82
+4f2dc 4 1579 82
+4f2e0 4 1583 82
+4f2e4 10 1583 82
+4f2f4 8 1583 82
+4f2fc c 1583 82
+4f308 8 1583 82
+4f310 c 1583 82
+4f31c 8 1583 82
+4f324 10 1584 82
+4f334 18 1408 82
+4f34c 10 1584 82
+4f35c 8 306 82
+4f364 14 333 122
+4f378 c 306 82
+4f384 8 85 79
+4f38c 14 1408 82
+4f3a0 10 1585 82
+4f3b0 8 1585 82
+4f3b8 10 156 132
+4f3c8 8 256 82
+4f3d0 18 1586 82
+FUNC 4f3e8 40 0 testing::internal::CmpHelperNE<char const*, char [7]>
+4f3e8 10 1615 82
+4f3f8 c 1615 82
+4f404 4 1615 82
+4f408 4 1615 82
+4f40c c 1615 82
+4f418 10 1615 82
+FUNC 4f428 57c 0 google_breakpad::NonAllocatingMapTest_SimpleStringDictionary_Test::TestBody
+4f428 20 63 59
+4f448 4 63 59
+4f44c 18 104 58
+4f464 8 104 58
+4f46c 20 68 59
+4f48c 8 69 59
+4f494 4 68 59
+4f498 4 70 59
+4f49c c 69 59
+4f4a8 4 70 59
+4f4ac 4 72 59
+4f4b0 4 69 59
+4f4b4 10 70 59
+4f4c4 8 150 58
+4f4cc 4 72 59
+4f4d0 4 150 58
+4f4d4 8 154 58
+4f4dc 4 72 59
+4f4e0 4 154 58
+4f4e4 4 72 59
+4f4e8 4 72 59
+4f4ec 18 72 59
+4f504 8 72 59
+4f50c 4 302 82
+4f510 4 72 59
+4f514 8 302 82
+4f51c 18 72 59
+4f534 8 72 59
+4f53c c 72 59
+4f548 8 85 79
+4f550 8 72 59
+4f558 4 256 82
+4f55c 4 73 59
+4f560 4 256 82
+4f564 4 73 59
+4f568 4 256 82
+4f56c c 150 58
+4f578 8 154 58
+4f580 4 73 59
+4f584 4 154 58
+4f588 4 73 59
+4f58c 4 73 59
+4f590 14 73 59
+4f5a4 8 73 59
+4f5ac 4 302 82
+4f5b0 4 73 59
+4f5b4 8 302 82
+4f5bc 18 73 59
+4f5d4 8 73 59
+4f5dc c 73 59
+4f5e8 8 85 79
+4f5f0 8 73 59
+4f5f8 4 256 82
+4f5fc 4 74 59
+4f600 4 256 82
+4f604 4 74 59
+4f608 4 256 82
+4f60c c 150 58
+4f618 8 154 58
+4f620 4 74 59
+4f624 4 154 58
+4f628 4 74 59
+4f62c 4 74 59
+4f630 14 74 59
+4f644 8 74 59
+4f64c 4 302 82
+4f650 4 74 59
+4f654 8 302 82
+4f65c 18 74 59
+4f674 8 74 59
+4f67c c 74 59
+4f688 8 85 79
+4f690 8 74 59
+4f698 c 256 82
+4f6a4 14 134 58
+4f6b8 8 135 58
+4f6c0 c 75 59
+4f6cc 4 1481 82
+4f6d0 c 75 59
+4f6dc 4 1481 82
+4f6e0 8 1482 82
+4f6e8 14 1487 82
+4f6fc c 75 59
+4f708 4 302 82
+4f70c 8 75 59
+4f714 4 302 82
+4f718 10 75 59
+4f728 4 75 59
+4f72c 4 75 59
+4f730 8 75 59
+4f738 c 75 59
+4f744 8 85 79
+4f74c 8 75 59
+4f754 c 256 82
+4f760 10 150 58
+4f770 8 154 58
+4f778 4 1139 87
+4f77c 4 154 58
+4f780 4 77 59
+4f784 4 277 82
+4f788 4 77 59
+4f78c 4 277 82
+4f790 4 77 59
+4f794 1c 77 59
+4f7b0 4 77 59
+4f7b4 4 77 59
+4f7b8 4 77 59
+4f7bc 1c 77 59
+4f7d8 8 77 59
+4f7e0 c 77 59
+4f7ec 8 85 79
+4f7f4 8 77 59
+4f7fc 8 156 132
+4f804 4 256 82
+4f808 4 80 59
+4f80c 8 256 82
+4f814 c 80 59
+4f820 c 150 58
+4f82c 8 154 58
+4f834 4 1139 87
+4f838 4 154 58
+4f83c 8 83 59
+4f844 4 277 82
+4f848 4 83 59
+4f84c 20 83 59
+4f86c 4 83 59
+4f870 4 83 59
+4f874 4 83 59
+4f878 1c 83 59
+4f894 8 83 59
+4f89c c 83 59
+4f8a8 8 85 79
+4f8b0 8 83 59
+4f8b8 8 156 132
+4f8c0 4 256 82
+4f8c4 4 163 58
+4f8c8 8 256 82
+4f8d0 c 163 58
+4f8dc c 150 58
+4f8e8 8 154 58
+4f8f0 4 1139 87
+4f8f4 4 154 58
+4f8f8 8 89 59
+4f900 4 277 82
+4f904 4 89 59
+4f908 20 89 59
+4f928 4 89 59
+4f92c 4 89 59
+4f930 4 89 59
+4f934 1c 89 59
+4f950 8 89 59
+4f958 c 89 59
+4f964 8 85 79
+4f96c 8 89 59
+4f974 8 156 132
+4f97c 8 256 82
+4f984 20 90 59
+FUNC 4f9a4 60c 0 google_breakpad::NonAllocatingMapTest_Iterator_Test::TestBody
+4f9a4 4 127 59
+4f9a8 4 128 59
+4f9ac 20 127 59
+4f9cc 10 128 59
+4f9dc 14 104 58
+4f9f0 8 104 58
+4f9f8 8 277 82
+4fa00 4 256 82
+4fa04 4 277 82
+4fa08 4 256 82
+4fa0c c 1139 87
+4fa18 4 256 82
+4fa1c 8 1621 82
+4fa24 8 138 59
+4fa2c c 302 82
+4fa38 18 138 59
+4fa50 8 138 59
+4fa58 c 138 59
+4fa64 8 85 79
+4fa6c 8 138 59
+4fa74 8 256 82
+4fa7c 4 142 59
+4fa80 4 256 82
+4fa84 4 146 59
+4fa88 4 147 59
+4fa8c 4 256 82
+4fa90 4 145 59
+4fa94 4 142 59
+4fa98 4 146 59
+4fa9c 4 147 59
+4faa0 10 146 59
+4fab0 c 147 59
+4fabc 4 145 59
+4fac0 4 147 59
+4fac4 10 148 59
+4fad4 8 145 59
+4fadc 14 153 59
+4faf0 4 150 59
+4faf4 4 153 59
+4faf8 18 154 59
+4fb10 18 155 59
+4fb28 10 158 59
+4fb38 10 159 59
+4fb48 10 160 59
+4fb58 10 161 59
+4fb68 c 162 59
+4fb74 10 166 59
+4fb84 c 167 59
+4fb90 4 165 59
+4fb94 4 167 59
+4fb98 10 168 59
+4fba8 8 165 59
+4fbb0 4 170 59
+4fbb4 8 181 59
+4fbbc 4 1512 82
+4fbc0 8 170 59
+4fbc8 8 181 59
+4fbd0 4 183 59
+4fbd4 4 82 58
+4fbd8 4 181 59
+4fbdc 4 191 59
+4fbe0 4 256 82
+4fbe4 4 183 59
+4fbe8 10 256 82
+4fbf8 8 88 58
+4fc00 10 89 58
+4fc10 8 90 58
+4fc18 4 187 59
+4fc1c c 191 59
+4fc28 8 187 59
+4fc30 4 191 59
+4fc34 4 195 59
+4fc38 8 191 59
+4fc40 18 195 59
+4fc58 20 1512 82
+4fc78 8 198 59
+4fc80 4 302 82
+4fc84 4 198 59
+4fc88 8 302 82
+4fc90 18 198 59
+4fca8 8 198 59
+4fcb0 c 198 59
+4fcbc 8 85 79
+4fcc4 8 198 59
+4fccc 8 256 82
+4fcd4 4 1139 87
+4fcd8 8 203 59
+4fce0 4 205 59
+4fce4 4 203 59
+4fce8 4 277 82
+4fcec 8 205 59
+4fcf4 4 206 59
+4fcf8 24 206 59
+4fd1c 24 206 59
+4fd40 10 206 59
+4fd50 14 206 59
+4fd64 c 85 79
+4fd70 c 206 59
+4fd7c 8 156 132
+4fd84 8 256 82
+4fd8c 4 277 82
+4fd90 4 1139 87
+4fd94 4 207 59
+4fd98 24 207 59
+4fdbc 24 207 59
+4fde0 10 207 59
+4fdf0 14 207 59
+4fe04 c 85 79
+4fe10 c 207 59
+4fe1c 8 156 132
+4fe24 8 256 82
+4fe2c 8 209 59
+4fe34 14 210 59
+4fe48 8 1512 82
+4fe50 4 88 58
+4fe54 4 219 59
+4fe58 4 1512 82
+4fe5c 4 256 82
+4fe60 14 218 59
+4fe74 8 218 59
+4fe7c 18 1512 82
+4fe94 8 219 59
+4fe9c 4 1512 82
+4fea0 8 219 59
+4fea8 4 302 82
+4feac 4 219 59
+4feb0 8 302 82
+4feb8 18 219 59
+4fed0 8 219 59
+4fed8 c 219 59
+4fee4 8 85 79
+4feec 8 219 59
+4fef4 8 256 82
+4fefc 4 216 59
+4ff00 8 216 59
+4ff08 24 1512 82
+4ff2c 8 224 59
+4ff34 4 302 82
+4ff38 4 224 59
+4ff3c 4 224 59
+4ff40 8 302 82
+4ff48 18 224 59
+4ff60 8 224 59
+4ff68 c 224 59
+4ff74 8 85 79
+4ff7c 8 224 59
+4ff84 8 256 82
+4ff8c 24 225 59
+FUNC 4ffb0 38 0 google_breakpad::test_assembler::Label::Label
+4ffb0 c 47 61
+4ffbc c 47 61
+4ffc8 10 127 61
+4ffd8 10 47 61
+FUNC 4ffe8 40 0 google_breakpad::test_assembler::Label::Label
+4ffe8 c 48 61
+4fff4 10 48 61
+50004 14 130 61
+50018 10 48 61
+FUNC 50028 18 0 google_breakpad::test_assembler::Label::Label
+50028 8 50 61
+50030 c 180 62
+5003c 4 52 61
+FUNC 50040 14 0 google_breakpad::test_assembler::Label::Binding::Binding
+50040 14 127 61
+FUNC 50054 14 0 google_breakpad::test_assembler::Label::Binding::Binding
+50054 14 130 61
+FUNC 50068 58 0 google_breakpad::test_assembler::Label::Binding::~Binding
+50068 c 132 61
+50074 4 134 61
+50078 c 134 61
+50084 c 182 62
+50090 4 134 61
+50094 8 135 61
+5009c 8 135 61
+500a4 4 135 61
+500a8 8 136 61
+500b0 4 135 61
+500b4 c 136 61
+FUNC 500c0 4c 0 google_breakpad::test_assembler::Label::~Label
+500c0 c 53 61
+500cc 4 54 61
+500d0 c 182 62
+500dc 4 54 61
+500e0 8 54 61
+500e8 8 54 61
+500f0 4 54 61
+500f4 8 55 61
+500fc 4 54 61
+50100 c 55 61
+FUNC 5010c b0 0 google_breakpad::test_assembler::Label::Binding::Get
+5010c 10 186 61
+5011c 8 186 61
+50124 4 187 61
+50128 4 186 61
+5012c c 187 61
+50138 c 194 61
+50144 8 195 61
+5014c c 180 62
+50158 4 196 61
+5015c c 182 62
+50168 4 196 61
+5016c 8 196 61
+50174 8 196 61
+5017c 8 196 61
+50184 4 197 61
+50188 4 198 61
+5018c 4 197 61
+50190 c 198 61
+5019c 8 200 61
+501a4 8 201 61
+501ac 10 202 61
+FUNC 501bc 4c 0 google_breakpad::test_assembler::Label::IsKnownConstant
+501bc c 104 61
+501c8 4 107 61
+501cc 4 104 61
+501d0 c 107 61
+501dc 4 108 61
+501e0 4 108 61
+501e4 4 108 61
+501e8 4 110 61
+501ec 4 109 61
+501f0 8 109 61
+501f8 4 110 61
+501fc c 111 61
+FUNC 50208 20 0 google_breakpad::test_assembler::Label::Value
+50208 8 98 61
+50210 8 99 61
+50218 4 100 61
+5021c c 102 61
+FUNC 50228 70 0 google_breakpad::test_assembler::Label::IsKnownOffsetFrom
+50228 c 114 61
+50234 8 114 61
+5023c 10 117 61
+5024c 10 118 61
+5025c 4 122 61
+50260 4 122 61
+50264 c 122 61
+50270 4 124 61
+50274 4 123 61
+50278 10 123 61
+50288 4 124 61
+5028c c 125 61
+FUNC 50298 1c 0 google_breakpad::test_assembler::Label::operator-
+50298 8 92 61
+502a0 8 94 61
+502a8 c 96 61
+FUNC 502b4 cc 0 google_breakpad::test_assembler::Label::Binding::Set
+502b4 10 138 61
+502c4 c 138 61
+502d0 4 139 61
+502d4 4 139 61
+502d8 4 139 61
+502dc 4 139 61
+502e0 14 145 61
+502f4 4 147 61
+502f8 c 154 61
+50304 8 155 61
+5030c c 163 61
+50318 10 169 61
+50328 4 171 61
+5032c c 182 62
+50338 4 171 61
+5033c 8 171 61
+50344 8 171 61
+5034c 8 171 61
+50354 8 180 61
+5035c c 180 62
+50368 4 181 61
+5036c 4 182 61
+50370 10 184 61
+FUNC 50380 30 0 google_breakpad::test_assembler::Label::operator=
+50380 8 57 61
+50388 4 58 61
+5038c 8 57 61
+50394 4 57 61
+50398 8 58 61
+503a0 10 60 61
+FUNC 503b0 30 0 google_breakpad::test_assembler::Label::operator=
+503b0 4 62 61
+503b4 4 63 61
+503b8 8 62 61
+503c0 4 62 61
+503c4 c 63 61
+503d0 10 65 61
+FUNC 503e0 40 0 google_breakpad::test_assembler::Label::operator+
+503e0 c 67 61
+503ec 8 67 61
+503f4 4 68 61
+503f8 4 67 61
+503fc 4 68 61
+50400 10 69 61
+50410 10 71 61
+FUNC 50420 48 0 google_breakpad::test_assembler::Label::operator-
+50420 10 73 61
+50430 8 73 61
+50438 4 74 61
+5043c 4 73 61
+50440 4 74 61
+50444 10 75 61
+50454 14 77 61
+FUNC 50468 48 0 google_breakpad::test_assembler::Section::Align
+50468 c 324 61
+50474 4 324 61
+50478 10 400 131
+50488 c 327 61
+50494 c 328 61
+504a0 10 331 61
+FUNC 504b0 58 0 google_breakpad::test_assembler::Section::LEB128
+504b0 10 303 61
+504c0 c 303 61
+504cc 8 304 61
+504d4 4 453 131
+504d8 4 304 61
+504dc 18 453 131
+504f4 14 313 61
+FUNC 50508 54 0 google_breakpad::test_assembler::Section::ULEB128
+50508 10 315 61
+50518 c 315 61
+50524 4 316 61
+50528 4 453 131
+5052c 4 316 61
+50530 4 453 131
+50534 4 318 61
+50538 10 453 131
+50548 14 322 61
+FUNC 5055c 7c 0 google_breakpad::test_assembler::InsertEndian<std::back_insert_iterator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >
+5055c 4 205 61
+50560 4 208 61
+50564 c 205 61
+50570 c 205 61
+5057c 8 208 61
+50584 8 209 61
+5058c 8 178 113
+50594 4 211 61
+50598 4 209 61
+5059c 8 178 113
+505a4 4 216 61
+505a8 c 216 61
+505b4 8 178 113
+505bc 4 216 61
+505c0 8 178 113
+505c8 10 219 61
+FUNC 505d8 34 0 google_breakpad::test_assembler::Section::Append
+505d8 c 221 61
+505e4 4 221 61
+505e8 14 223 61
+505fc 10 225 61
+FUNC 5060c 34 0 google_breakpad::test_assembler::Section::L16
+5060c 8 267 61
+50614 4 267 61
+50618 8 267 61
+50620 4 267 61
+50624 c 267 61
+50630 10 267 61
+FUNC 50640 34 0 google_breakpad::test_assembler::Section::L32
+50640 8 268 61
+50648 4 268 61
+5064c 8 268 61
+50654 4 268 61
+50658 c 268 61
+50664 10 268 61
+FUNC 50674 34 0 google_breakpad::test_assembler::Section::L64
+50674 8 269 61
+5067c 4 269 61
+50680 8 269 61
+50688 4 269 61
+5068c c 269 61
+50698 10 269 61
+FUNC 506a8 34 0 google_breakpad::test_assembler::Section::B16
+506a8 8 270 61
+506b0 4 270 61
+506b4 8 270 61
+506bc 4 270 61
+506c0 c 270 61
+506cc 10 270 61
+FUNC 506dc 34 0 google_breakpad::test_assembler::Section::B32
+506dc 8 271 61
+506e4 4 271 61
+506e8 8 271 61
+506f0 4 271 61
+506f4 c 271 61
+50700 10 271 61
+FUNC 50710 34 0 google_breakpad::test_assembler::Section::B64
+50710 8 272 61
+50718 4 272 61
+5071c 8 272 61
+50724 4 272 61
+50728 c 272 61
+50734 10 272 61
+FUNC 50744 34 0 google_breakpad::test_assembler::Section::D16
+50744 8 289 61
+5074c 4 289 61
+50750 8 289 61
+50758 4 289 61
+5075c c 289 61
+50768 10 289 61
+FUNC 50778 34 0 google_breakpad::test_assembler::Section::D32
+50778 8 290 61
+50780 4 290 61
+50784 8 290 61
+5078c 4 290 61
+50790 c 290 61
+5079c 10 290 61
+FUNC 507ac 34 0 google_breakpad::test_assembler::Section::D64
+507ac 8 291 61
+507b4 4 291 61
+507b8 8 291 61
+507c0 4 291 61
+507c4 c 291 61
+507d0 10 291 61
+FUNC 507e0 50 0 std::priv::_Impl_vector<google_breakpad::test_assembler::Section::Reference, std::allocator<google_breakpad::test_assembler::Section::Reference> >::clear
+507e0 18 650 139
+507f8 10 630 139
+50808 4 449 62
+5080c 4 191 103
+50810 4 449 62
+50814 8 191 103
+5081c 4 615 139
+50820 10 652 139
+FUNC 50830 24 0 google_breakpad::test_assembler::Section::Clear
+50830 4 333 61
+50834 c 422 131
+50840 4 232 140
+50844 8 424 131
+5084c 8 228 143
+FUNC 50854 108 0 std::priv::_String_base<char, std::allocator<char> >::_M_swap
+50854 4 168 132
+50858 4 64 132
+5085c 8 170 132
+50864 4 171 132
+50868 4 64 132
+5086c 14 171 132
+50880 4 92 100
+50884 4 91 100
+50888 4 92 100
+5088c 4 91 100
+50890 8 92 100
+50898 8 93 100
+508a0 8 91 100
+508a8 c 174 132
+508b4 4 173 132
+508b8 c 174 132
+508c4 c 175 132
+508d0 4 178 132
+508d4 8 179 132
+508dc 4 64 132
+508e0 8 185 132
+508e8 4 189 132
+508ec 4 188 132
+508f0 4 189 132
+508f4 4 187 132
+508f8 8 189 132
+50900 4 192 132
+50904 10 193 132
+50914 4 194 132
+50918 4 195 132
+5091c 8 196 132
+50924 4 92 100
+50928 4 91 100
+5092c 4 92 100
+50930 4 93 100
+50934 4 92 100
+50938 4 91 100
+5093c 4 92 100
+50940 4 93 100
+50944 4 92 100
+50948 4 91 100
+5094c 4 92 100
+50950 4 93 100
+50954 8 208 132
+FUNC 5095c 140 0 google_breakpad::test_assembler::Section::GetContents
+5095c 4 338 61
+50960 4 341 61
+50964 14 338 61
+50978 8 338 61
+50980 4 192 139
+50984 4 344 61
+50988 c 192 139
+50994 c 341 61
+509a0 4 344 61
+509a4 8 202 139
+509ac 14 344 61
+509c0 20 345 61
+509e0 4 208 61
+509e4 8 350 61
+509ec 4 208 61
+509f0 c 350 61
+509fc 8 208 61
+50a04 8 209 61
+50a0c 4 210 61
+50a10 4 211 61
+50a14 8 209 61
+50a1c 4 216 61
+50a20 14 216 61
+50a34 4 217 61
+50a38 4 216 61
+50a3c 8 217 61
+50a44 c 341 61
+50a50 c 422 131
+50a5c 4 232 140
+50a60 8 424 131
+50a68 8 942 131
+50a70 4 355 61
+50a74 4 942 131
+50a78 8 228 143
+50a80 1c 356 61
+FUNC 50a9c 274 0 std::priv::_Impl_vector<google_breakpad::test_assembler::Section::Reference, std::allocator<google_breakpad::test_assembler::Section::Reference> >::_M_insert_overflow_aux
+50a9c 20 81 138
+50abc 8 192 139
+50ac4 4 81 138
+50ac8 4 192 139
+50acc 4 81 138
+50ad0 4 192 139
+50ad4 8 173 139
+50adc c 81 138
+50ae8 4 173 139
+50aec 4 81 138
+50af0 4 173 139
+50af4 14 41 138
+50b08 4 175 139
+50b0c 10 176 139
+50b1c 4 356 101
+50b20 8 346 101
+50b28 4 177 139
+50b2c c 347 101
+50b38 4 348 101
+50b3c 4 352 101
+50b40 4 348 101
+50b44 4 352 101
+50b48 4 91 138
+50b4c 4 84 137
+50b50 10 86 137
+50b60 8 86 137
+50b68 4 139 103
+50b6c 24 449 62
+50b90 4 89 137
+50b94 14 86 137
+50ba8 c 93 138
+50bb4 4 119 103
+50bb8 24 449 62
+50bdc 8 95 138
+50be4 8 314 137
+50bec 4 249 137
+50bf0 4 449 62
+50bf4 8 249 137
+50bfc 4 139 103
+50c00 24 449 62
+50c24 c 249 137
+50c30 8 98 138
+50c38 c 86 137
+50c44 4 84 137
+50c48 8 86 137
+50c50 8 86 137
+50c58 4 139 103
+50c5c 24 449 62
+50c80 4 89 137
+50c84 20 86 137
+50ca4 8 191 103
+50cac 10 449 62
+50cbc c 662 139
+50cc8 4 319 101
+50ccc 8 161 101
+50cd4 8 135 119
+50cdc 4 161 101
+50ce0 4 104 138
+50ce4 4 666 139
+50ce8 4 667 139
+50cec 4 668 139
+50cf0 20 105 138
+FUNC 50d10 78 0 std::priv::_Impl_vector<google_breakpad::test_assembler::Section::Reference, std::allocator<google_breakpad::test_assembler::Section::Reference> >::push_back
+50d10 10 376 139
+50d20 4 376 139
+50d24 10 380 139
+50d34 4 119 103
+50d38 24 449 62
+50d5c 10 382 139
+50d6c 10 162 139
+50d7c c 388 139
+FUNC 50d88 c0 0 google_breakpad::test_assembler::Section::Append
+50d88 18 228 61
+50da0 8 232 61
+50da8 4 228 61
+50dac 4 232 61
+50db0 4 228 61
+50db4 14 232 61
+50dc8 14 223 61
+50ddc 4 233 61
+50de0 4 400 131
+50de4 4 453 62
+50de8 4 400 131
+50dec c 453 62
+50df8 4 400 131
+50dfc 10 453 62
+50e0c c 173 143
+50e18 8 449 62
+50e20 10 240 61
+50e30 18 242 61
+FUNC 50e48 10 0 google_breakpad::test_assembler::Section::L8
+50e48 10 265 61
+FUNC 50e58 10 0 google_breakpad::test_assembler::Section::B8
+50e58 10 266 61
+FUNC 50e68 10 0 google_breakpad::test_assembler::Section::L16
+50e68 10 267 61
+FUNC 50e78 10 0 google_breakpad::test_assembler::Section::L32
+50e78 10 268 61
+FUNC 50e88 10 0 google_breakpad::test_assembler::Section::L64
+50e88 10 269 61
+FUNC 50e98 10 0 google_breakpad::test_assembler::Section::B16
+50e98 10 270 61
+FUNC 50ea8 10 0 google_breakpad::test_assembler::Section::B32
+50ea8 10 271 61
+FUNC 50eb8 10 0 google_breakpad::test_assembler::Section::B64
+50eb8 10 272 61
+FUNC 50ec8 10 0 google_breakpad::test_assembler::Section::D8
+50ec8 10 288 61
+FUNC 50ed8 10 0 google_breakpad::test_assembler::Section::D16
+50ed8 10 289 61
+FUNC 50ee8 10 0 google_breakpad::test_assembler::Section::D32
+50ee8 10 290 61
+FUNC 50ef8 10 0 google_breakpad::test_assembler::Section::D64
+50ef8 10 291 61
+FUNC 50f08 1e4 0 google_breakpad::test_assembler::Section::Append
+50f08 20 293 61
+50f28 8 293 61
+50f30 8 295 61
+50f38 8 197 130
+50f40 4 400 131
+50f44 4 197 130
+50f48 4 74 132
+50f4c 4 198 130
+50f50 4 74 132
+50f54 c 74 132
+50f60 8 74 132
+50f68 8 199 130
+50f70 10 200 130
+50f80 4 356 101
+50f84 4 346 101
+50f88 8 347 101
+50f90 4 348 101
+50f94 4 352 101
+50f98 8 348 101
+50fa0 10 86 137
+50fb0 c 86 137
+50fbc 10 146 103
+50fcc 1c 86 137
+50fe8 10 146 103
+50ff8 8 205 130
+51000 8 206 130
+51008 4 101 103
+5100c 4 205 130
+51010 4 160 132
+51014 4 164 132
+51018 8 165 132
+51020 4 210 130
+51024 c 86 137
+51030 18 86 137
+51048 8 146 103
+51050 10 101 103
+51060 4 232 140
+51064 c 214 130
+51070 c 453 62
+5107c 4 173 143
+51080 c 296 61
+5108c c 299 61
+51098 4 296 61
+5109c 4 299 61
+510a0 8 453 62
+510a8 4 299 61
+510ac c 453 62
+510b8 c 173 143
+510c4 c 449 62
+510d0 1c 301 61
+FUNC 510ec 1e4 0 google_breakpad::CopyFile
+510ec 20 44 64
+5110c 18 45 64
+51124 4 45 64
+51128 c 45 64
+51134 c 47 64
+51140 4 57 64
+51144 4 54 64
+51148 c 55 64
+51154 8 57 64
+5115c 4 46 64
+51160 18 51 64
+51178 4 51 64
+5117c c 51 64
+51188 c 53 64
+51194 10 54 64
+511a4 4 54 64
+511a8 4 57 64
+511ac 8 54 64
+511b4 8 65 64
+511bc 8 70 64
+511c4 18 74 64
+511dc 4 78 64
+511e0 4 83 64
+511e4 8 73 64
+511ec 1c 64 64
+51208 4 64 64
+5120c c 64 64
+51218 8 66 64
+51220 8 79 64
+51228 10 87 64
+51238 10 91 64
+51248 4 91 64
+5124c 10 91 64
+5125c 4 64 64
+51260 8 52 64
+51268 4 87 64
+5126c 10 87 64
+5127c 4 74 64
+51280 c 74 64
+5128c 14 79 64
+512a0 4 88 64
+512a4 4 89 64
+512a8 c 88 64
+512b4 1c 97 64
+FUNC 512d0 104 0 google_breakpad::ReadFile
+512d0 1c 99 64
+512ec 18 100 64
+51304 4 100 64
+51308 c 100 64
+51314 c 102 64
+51320 4 107 64
+51324 8 106 64
+5132c 4 107 64
+51330 c 107 64
+5133c 4 108 64
+51340 1c 109 64
+5135c 4 109 64
+51360 8 110 64
+51368 4 111 64
+5136c 4 112 64
+51370 8 111 64
+51378 10 115 64
+51388 4 115 64
+5138c c 115 64
+51398 c 116 64
+513a4 4 109 64
+513a8 10 109 64
+513b8 4 103 64
+513bc 4 102 64
+513c0 14 120 64
+FUNC 513d4 104 0 google_breakpad::WriteFile
+513d4 20 122 64
+513f4 1c 123 64
+51410 4 123 64
+51414 c 123 64
+51420 10 125 64
+51430 4 130 64
+51434 8 129 64
+5143c 4 136 64
+51440 c 136 64
+5144c 18 136 64
+51464 4 138 64
+51468 4 143 64
+5146c 8 134 64
+51474 c 136 64
+51480 4 139 64
+51484 4 140 64
+51488 8 139 64
+51490 10 146 64
+514a0 4 146 64
+514a4 c 146 64
+514b0 8 147 64
+514b8 4 126 64
+514bc 4 125 64
+514c0 18 151 64
+FUNC 514d8 4 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_GetAsciiMDString_Test>::~TestFactoryImpl
+514d8 4 484 85
+FUNC 514dc 4 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_GetArrayElmentWithTemplateType_Test>::~TestFactoryImpl
+514dc 4 484 85
+FUNC 514e0 4 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_GetArrayElement_Test>::~TestFactoryImpl
+514e0 4 484 85
+FUNC 514e4 4 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_GetDataWithTemplateType_Test>::~TestFactoryImpl
+514e4 4 484 85
+FUNC 514e8 4 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_SubrangeWithMDLocationDescriptor_Test>::~TestFactoryImpl
+514e8 4 484 85
+FUNC 514ec 4 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_SubrangeAndGetData_Test>::~TestFactoryImpl
+514ec 4 484 85
+FUNC 514f0 4 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_SubrangeOfEmptyMemoryRange_Test>::~TestFactoryImpl
+514f0 4 484 85
+FUNC 514f4 4 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_Set_Test>::~TestFactoryImpl
+514f4 4 484 85
+FUNC 514f8 4 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_Reset_Test>::~TestFactoryImpl
+514f8 4 484 85
+FUNC 514fc 4 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_ConstructorWithDataAndLength_Test>::~TestFactoryImpl
+514fc 4 484 85
+FUNC 51500 4 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_DefaultConstructor_Test>::~TestFactoryImpl
+51500 4 484 85
+FUNC 51504 4 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_DefaultConstructor_Test>::~TestFactoryImpl
+51504 4 484 85
+FUNC 51508 4 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_ConstructorWithDataAndLength_Test>::~TestFactoryImpl
+51508 4 484 85
+FUNC 5150c 4 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_Reset_Test>::~TestFactoryImpl
+5150c 4 484 85
+FUNC 51510 4 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_Set_Test>::~TestFactoryImpl
+51510 4 484 85
+FUNC 51514 4 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_SubrangeOfEmptyMemoryRange_Test>::~TestFactoryImpl
+51514 4 484 85
+FUNC 51518 4 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_SubrangeAndGetData_Test>::~TestFactoryImpl
+51518 4 484 85
+FUNC 5151c 4 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_SubrangeWithMDLocationDescriptor_Test>::~TestFactoryImpl
+5151c 4 484 85
+FUNC 51520 4 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_GetDataWithTemplateType_Test>::~TestFactoryImpl
+51520 4 484 85
+FUNC 51524 4 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_GetArrayElement_Test>::~TestFactoryImpl
+51524 4 484 85
+FUNC 51528 4 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_GetArrayElmentWithTemplateType_Test>::~TestFactoryImpl
+51528 4 484 85
+FUNC 5152c 4 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_GetAsciiMDString_Test>::~TestFactoryImpl
+5152c 4 484 85
+FUNC 51530 14 0 MinidumpMemoryRangeTest_GetAsciiMDString_Test::~MinidumpMemoryRangeTest_GetAsciiMDString_Test
+51530 14 224 78
+FUNC 51544 24 0 MinidumpMemoryRangeTest_GetAsciiMDString_Test::~MinidumpMemoryRangeTest_GetAsciiMDString_Test
+51544 c 224 78
+51550 8 224 78
+51558 4 224 78
+5155c 8 224 78
+51564 4 224 78
+FUNC 51568 14 0 MinidumpMemoryRangeTest_GetArrayElmentWithTemplateType_Test::~MinidumpMemoryRangeTest_GetArrayElmentWithTemplateType_Test
+51568 14 216 78
+FUNC 5157c 24 0 MinidumpMemoryRangeTest_GetArrayElmentWithTemplateType_Test::~MinidumpMemoryRangeTest_GetArrayElmentWithTemplateType_Test
+5157c c 216 78
+51588 8 216 78
+51590 4 216 78
+51594 8 216 78
+5159c 4 216 78
+FUNC 515a0 14 0 MinidumpMemoryRangeTest_GetArrayElement_Test::~MinidumpMemoryRangeTest_GetArrayElement_Test
+515a0 14 201 78
+FUNC 515b4 24 0 MinidumpMemoryRangeTest_GetArrayElement_Test::~MinidumpMemoryRangeTest_GetArrayElement_Test
+515b4 c 201 78
+515c0 8 201 78
+515c8 4 201 78
+515cc 8 201 78
+515d4 4 201 78
+FUNC 515d8 14 0 MinidumpMemoryRangeTest_GetDataWithTemplateType_Test::~MinidumpMemoryRangeTest_GetDataWithTemplateType_Test
+515d8 14 193 78
+FUNC 515ec 24 0 MinidumpMemoryRangeTest_GetDataWithTemplateType_Test::~MinidumpMemoryRangeTest_GetDataWithTemplateType_Test
+515ec c 193 78
+515f8 8 193 78
+51600 4 193 78
+51604 8 193 78
+5160c 4 193 78
+FUNC 51610 14 0 MinidumpMemoryRangeTest_SubrangeWithMDLocationDescriptor_Test::~MinidumpMemoryRangeTest_SubrangeWithMDLocationDescriptor_Test
+51610 14 165 78
+FUNC 51624 24 0 MinidumpMemoryRangeTest_SubrangeWithMDLocationDescriptor_Test::~MinidumpMemoryRangeTest_SubrangeWithMDLocationDescriptor_Test
+51624 c 165 78
+51630 8 165 78
+51638 4 165 78
+5163c 8 165 78
+51644 4 165 78
+FUNC 51648 14 0 MinidumpMemoryRangeTest_SubrangeAndGetData_Test::~MinidumpMemoryRangeTest_SubrangeAndGetData_Test
+51648 14 140 78
+FUNC 5165c 24 0 MinidumpMemoryRangeTest_SubrangeAndGetData_Test::~MinidumpMemoryRangeTest_SubrangeAndGetData_Test
+5165c c 140 78
+51668 8 140 78
+51670 4 140 78
+51674 8 140 78
+5167c 4 140 78
+FUNC 51680 14 0 MinidumpMemoryRangeTest_SubrangeOfEmptyMemoryRange_Test::~MinidumpMemoryRangeTest_SubrangeOfEmptyMemoryRange_Test
+51680 14 133 78
+FUNC 51694 24 0 MinidumpMemoryRangeTest_SubrangeOfEmptyMemoryRange_Test::~MinidumpMemoryRangeTest_SubrangeOfEmptyMemoryRange_Test
+51694 c 133 78
+516a0 8 133 78
+516a8 4 133 78
+516ac 8 133 78
+516b4 4 133 78
+FUNC 516b8 14 0 MinidumpMemoryRangeTest_Set_Test::~MinidumpMemoryRangeTest_Set_Test
+516b8 14 122 78
+FUNC 516cc 24 0 MinidumpMemoryRangeTest_Set_Test::~MinidumpMemoryRangeTest_Set_Test
+516cc c 122 78
+516d8 8 122 78
+516e0 4 122 78
+516e4 8 122 78
+516ec 4 122 78
+FUNC 516f0 14 0 MinidumpMemoryRangeTest_Reset_Test::~MinidumpMemoryRangeTest_Reset_Test
+516f0 14 107 78
+FUNC 51704 24 0 MinidumpMemoryRangeTest_Reset_Test::~MinidumpMemoryRangeTest_Reset_Test
+51704 c 107 78
+51710 8 107 78
+51718 4 107 78
+5171c 8 107 78
+51724 4 107 78
+FUNC 51728 14 0 MinidumpMemoryRangeTest_ConstructorWithDataAndLength_Test::~MinidumpMemoryRangeTest_ConstructorWithDataAndLength_Test
+51728 14 101 78
+FUNC 5173c 24 0 MinidumpMemoryRangeTest_ConstructorWithDataAndLength_Test::~MinidumpMemoryRangeTest_ConstructorWithDataAndLength_Test
+5173c c 101 78
+51748 8 101 78
+51750 4 101 78
+51754 8 101 78
+5175c 4 101 78
+FUNC 51760 14 0 MinidumpMemoryRangeTest_DefaultConstructor_Test::~MinidumpMemoryRangeTest_DefaultConstructor_Test
+51760 14 95 78
+FUNC 51774 24 0 MinidumpMemoryRangeTest_DefaultConstructor_Test::~MinidumpMemoryRangeTest_DefaultConstructor_Test
+51774 c 95 78
+51780 8 95 78
+51788 4 95 78
+5178c 8 95 78
+51794 4 95 78
+FUNC 51798 3c 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_GetAsciiMDString_Test>::CreateTest
+51798 10 486 85
+517a8 8 486 85
+517b0 8 224 78
+517b8 4 486 85
+517bc c 224 78
+517c8 c 486 85
+FUNC 517d4 3c 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_GetArrayElmentWithTemplateType_Test>::CreateTest
+517d4 10 486 85
+517e4 8 486 85
+517ec 8 216 78
+517f4 4 486 85
+517f8 c 216 78
+51804 c 486 85
+FUNC 51810 3c 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_GetArrayElement_Test>::CreateTest
+51810 10 486 85
+51820 8 486 85
+51828 8 201 78
+51830 4 486 85
+51834 c 201 78
+51840 c 486 85
+FUNC 5184c 3c 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_GetDataWithTemplateType_Test>::CreateTest
+5184c 10 486 85
+5185c 8 486 85
+51864 8 193 78
+5186c 4 486 85
+51870 c 193 78
+5187c c 486 85
+FUNC 51888 3c 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_SubrangeWithMDLocationDescriptor_Test>::CreateTest
+51888 10 486 85
+51898 8 486 85
+518a0 8 165 78
+518a8 4 486 85
+518ac c 165 78
+518b8 c 486 85
+FUNC 518c4 3c 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_SubrangeAndGetData_Test>::CreateTest
+518c4 10 486 85
+518d4 8 486 85
+518dc 8 140 78
+518e4 4 486 85
+518e8 c 140 78
+518f4 c 486 85
+FUNC 51900 3c 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_SubrangeOfEmptyMemoryRange_Test>::CreateTest
+51900 10 486 85
+51910 8 486 85
+51918 8 133 78
+51920 4 486 85
+51924 c 133 78
+51930 c 486 85
+FUNC 5193c 3c 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_Set_Test>::CreateTest
+5193c 10 486 85
+5194c 8 486 85
+51954 8 122 78
+5195c 4 486 85
+51960 c 122 78
+5196c c 486 85
+FUNC 51978 3c 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_Reset_Test>::CreateTest
+51978 10 486 85
+51988 8 486 85
+51990 8 107 78
+51998 4 486 85
+5199c c 107 78
+519a8 c 486 85
+FUNC 519b4 3c 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_ConstructorWithDataAndLength_Test>::CreateTest
+519b4 10 486 85
+519c4 8 486 85
+519cc 8 101 78
+519d4 4 486 85
+519d8 c 101 78
+519e4 c 486 85
+FUNC 519f0 3c 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_DefaultConstructor_Test>::CreateTest
+519f0 10 486 85
+51a00 8 486 85
+51a08 8 95 78
+51a10 4 486 85
+51a14 c 95 78
+51a20 c 486 85
+FUNC 51a2c 3c 0 google_breakpad::MemoryRange::GetData
+51a2c 4 90 55
+51a30 4 90 55
+51a34 4 91 55
+51a38 8 83 55
+51a40 4 83 55
+51a44 10 83 55
+51a54 8 91 55
+51a5c 8 91 55
+51a64 4 92 55
+FUNC 51a68 3c 0 google_breakpad::MinidumpMemoryRange::Subrange
+51a68 4 59 77
+51a6c 8 83 55
+51a74 4 83 55
+51a78 10 83 55
+51a88 4 61 77
+51a8c c 72 55
+51a98 8 62 77
+51aa0 4 63 77
+FUNC 51aa4 90 0 google_breakpad::MinidumpMemoryRange::GetAsciiMDString
+51aa4 18 74 77
+51abc 4 124 132
+51ac0 4 74 77
+51ac4 4 120 132
+51ac8 4 124 132
+51acc 4 481 101
+51ad0 8 124 132
+51ad8 8 99 55
+51ae0 4 79 77
+51ae4 4 101 103
+51ae8 c 99 55
+51af4 4 78 77
+51af8 4 77 77
+51afc c 79 77
+51b08 8 79 77
+51b10 4 80 77
+51b14 4 79 77
+51b18 8 80 77
+51b20 14 84 77
+FUNC 51b34 cc 0 testing::PrintToString<char const*>
+51b34 4 883 80
+51b38 4 884 80
+51b3c c 883 80
+51b48 8 884 80
+51b50 8 883 80
+51b58 4 883 80
+51b5c 4 884 80
+51b60 8 885 80
+51b68 4 708 80
+51b6c 14 333 122
+51b80 4 112 132
+51b84 4 229 140
+51b88 4 112 132
+51b8c 4 481 101
+51b90 8 229 140
+51b98 4 643 130
+51b9c c 379 131
+51ba8 10 148 137
+51bb8 4 380 131
+51bbc 4 101 103
+51bc0 c 469 80
+51bcc 8 156 132
+51bd4 c 75 127
+51be0 8 886 80
+51be8 18 887 80
+FUNC 51c00 50 0 testing::internal::DefaultPrintTo<void const>
+51c00 14 307 80
+51c14 4 310 80
+51c18 4 334 80
+51c1c 4 333 122
+51c20 4 334 80
+51c24 8 333 122
+51c2c 10 318 80
+51c3c 8 291 121
+51c44 8 334 80
+51c4c 4 291 121
+FUNC 51c50 50 0 testing::internal::DefaultPrintTo<int const>
+51c50 14 307 80
+51c64 4 310 80
+51c68 4 334 80
+51c6c 4 333 122
+51c70 4 334 80
+51c74 8 333 122
+51c7c 10 318 80
+51c8c 8 291 121
+51c94 8 334 80
+51c9c 4 291 121
+FUNC 51ca0 11c 0 testing::operator<<
+51ca0 c 232 79
+51cac 4 233 79
+51cb0 4 232 79
+51cb4 4 233 79
+51cb8 4 232 79
+51cbc 4 233 79
+51cc0 4 232 79
+51cc4 4 233 79
+51cc8 14 181 122
+51cdc 4 41 133
+51ce0 18 62 133
+51cf8 4 44 133
+51cfc c 400 131
+51d08 8 44 133
+51d10 4 138 110
+51d14 4 139 110
+51d18 4 44 133
+51d1c 4 50 133
+51d20 4 46 133
+51d24 8 50 133
+51d2c 14 52 133
+51d40 10 55 133
+51d50 c 55 133
+51d5c 14 53 133
+51d70 8 55 133
+51d78 4 57 133
+51d7c 14 58 133
+51d90 4 58 133
+51d94 8 64 133
+51d9c 8 156 132
+51da4 18 234 79
+FUNC 51dbc e8 0 testing::internal::CmpHelperEQFailure<int const*, int const*>
+51dbc c 1464 82
+51dc8 4 884 80
+51dcc 10 1464 82
+51ddc 8 884 80
+51de4 4 1464 82
+51de8 4 75 127
+51dec 4 1464 82
+51df0 8 1464 82
+51df8 4 884 80
+51dfc c 380 80
+51e08 4 75 127
+51e0c 8 380 80
+51e14 c 75 127
+51e20 8 886 80
+51e28 c 884 80
+51e34 8 380 80
+51e3c 4 75 127
+51e40 8 380 80
+51e48 c 75 127
+51e54 8 886 80
+51e5c 1c 1471 82
+51e78 10 156 132
+51e88 1c 1472 82
+FUNC 51ea4 50 0 std::operator==<char, std::char_traits<char>, std::allocator<char> >
+51ea4 c 311 134
+51eb0 8 311 134
+51eb8 8 229 140
+51ec0 8 315 134
+51ec8 8 400 131
+51ed0 8 315 134
+51ed8 8 226 140
+51ee0 8 315 134
+51ee8 c 316 134
+FUNC 51ef4 5c 0 testing::PrintToString<unsigned char const*>
+51ef4 4 883 80
+51ef8 4 884 80
+51efc 8 883 80
+51f04 4 884 80
+51f08 4 883 80
+51f0c 4 883 80
+51f10 4 884 80
+51f14 4 883 80
+51f18 4 884 80
+51f1c c 380 80
+51f28 c 75 127
+51f34 8 886 80
+51f3c 14 887 80
+FUNC 51f50 9c 0 testing::internal::CmpHelperEQ<unsigned char const*, unsigned char const*>
+51f50 10 1476 82
+51f60 8 1476 82
+51f68 10 1481 82
+51f78 8 1482 82
+51f80 2c 1382 82
+51fac 1c 1471 82
+51fc8 10 156 132
+51fd8 14 1488 82
+FUNC 51fec 12c 0 MinidumpMemoryRangeTest_DefaultConstructor_Test::TestBody
+51fec 4 95 78
+51ff0 8 1571 82
+51ff8 c 95 78
+52004 2c 1571 82
+52030 8 97 78
+52038 c 302 82
+52044 18 97 78
+5205c 8 97 78
+52064 c 97 78
+52070 8 85 79
+52078 8 97 78
+52080 8 256 82
+52088 4 98 78
+5208c 1c 1552 82
+520a8 4 98 78
+520ac 4 1552 82
+520b0 8 98 78
+520b8 c 302 82
+520c4 18 98 78
+520dc 8 98 78
+520e4 c 98 78
+520f0 8 85 79
+520f8 8 98 78
+52100 8 256 82
+52108 10 99 78
+FUNC 52118 148 0 MinidumpMemoryRangeTest_SubrangeOfEmptyMemoryRange_Test::TestBody
+52118 4 133 78
+5211c 8 135 78
+52124 4 133 78
+52128 4 135 78
+5212c 8 133 78
+52134 4 50 55
+52138 4 1571 82
+5213c 4 50 55
+52140 4 135 78
+52144 8 1571 82
+5214c 4 135 78
+52150 28 1571 82
+52178 8 136 78
+52180 c 302 82
+5218c 18 136 78
+521a4 8 136 78
+521ac c 136 78
+521b8 8 85 79
+521c0 8 136 78
+521c8 8 256 82
+521d0 4 137 78
+521d4 1c 1552 82
+521f0 4 137 78
+521f4 4 1552 82
+521f8 8 137 78
+52200 c 302 82
+5220c 18 137 78
+52224 8 137 78
+5222c c 137 78
+52238 8 85 79
+52240 8 137 78
+52248 8 256 82
+52250 10 138 78
+FUNC 52260 13c 0 MinidumpMemoryRangeTest_ConstructorWithDataAndLength_Test::TestBody
+52260 4 101 78
+52264 4 103 78
+52268 4 1512 82
+5226c 4 101 78
+52270 4 103 78
+52274 4 1512 82
+52278 4 101 78
+5227c 4 103 78
+52280 20 1512 82
+522a0 4 101 78
+522a4 4 1512 82
+522a8 8 103 78
+522b0 4 302 82
+522b4 4 103 78
+522b8 8 302 82
+522c0 18 103 78
+522d8 8 103 78
+522e0 c 103 78
+522ec 8 85 79
+522f4 8 103 78
+522fc 8 256 82
+52304 4 104 78
+52308 4 1512 82
+5230c 4 104 78
+52310 20 1512 82
+52330 8 104 78
+52338 4 302 82
+5233c 4 104 78
+52340 8 302 82
+52348 18 104 78
+52360 8 104 78
+52368 c 104 78
+52374 8 85 79
+5237c 8 104 78
+52384 8 256 82
+5238c 10 105 78
+FUNC 5239c 338 0 MinidumpMemoryRangeTest_Reset_Test::TestBody
+5239c 14 107 78
+523b0 24 1571 82
+523d4 c 107 78
+523e0 8 1571 82
+523e8 c 110 78
+523f4 c 302 82
+52400 18 110 78
+52418 8 110 78
+52420 c 110 78
+5242c 8 85 79
+52434 8 110 78
+5243c 4 256 82
+52440 8 1552 82
+52448 4 256 82
+5244c 4 111 78
+52450 14 1552 82
+52464 4 111 78
+52468 4 1552 82
+5246c 8 111 78
+52474 c 302 82
+52480 18 111 78
+52498 8 111 78
+524a0 c 111 78
+524ac 8 85 79
+524b4 8 111 78
+524bc 8 256 82
+524c4 4 114 78
+524c8 4 1512 82
+524cc 4 114 78
+524d0 4 1512 82
+524d4 4 114 78
+524d8 18 1512 82
+524f0 8 114 78
+524f8 c 302 82
+52504 18 114 78
+5251c 8 114 78
+52524 c 114 78
+52530 8 85 79
+52538 8 114 78
+52540 8 256 82
+52548 4 115 78
+5254c 4 1512 82
+52550 4 115 78
+52554 1c 1512 82
+52570 8 115 78
+52578 c 302 82
+52584 18 115 78
+5259c 8 115 78
+525a4 c 115 78
+525b0 8 85 79
+525b8 8 115 78
+525c0 c 256 82
+525cc 20 1571 82
+525ec 8 118 78
+525f4 c 302 82
+52600 18 118 78
+52618 8 118 78
+52620 c 118 78
+5262c 8 85 79
+52634 8 118 78
+5263c 8 256 82
+52644 4 119 78
+52648 14 1552 82
+5265c 4 119 78
+52660 4 1552 82
+52664 8 119 78
+5266c c 302 82
+52678 18 119 78
+52690 8 119 78
+52698 c 119 78
+526a4 8 85 79
+526ac 8 119 78
+526b4 8 256 82
+526bc 18 120 78
+FUNC 526d4 240 0 MinidumpMemoryRangeTest_Set_Test::TestBody
+526d4 4 122 78
+526d8 4 125 78
+526dc 4 1512 82
+526e0 4 122 78
+526e4 4 125 78
+526e8 4 1512 82
+526ec 8 122 78
+526f4 4 125 78
+526f8 20 1512 82
+52718 c 122 78
+52724 4 1512 82
+52728 8 125 78
+52730 c 302 82
+5273c 18 125 78
+52754 8 125 78
+5275c c 125 78
+52768 8 85 79
+52770 8 125 78
+52778 4 256 82
+5277c 4 1512 82
+52780 4 256 82
+52784 4 126 78
+52788 4 1512 82
+5278c 4 126 78
+52790 1c 1512 82
+527ac 8 126 78
+527b4 c 302 82
+527c0 18 126 78
+527d8 8 126 78
+527e0 c 126 78
+527ec 8 85 79
+527f4 8 126 78
+527fc c 256 82
+52808 24 1571 82
+5282c 8 129 78
+52834 c 302 82
+52840 18 129 78
+52858 8 129 78
+52860 c 129 78
+5286c 8 85 79
+52874 8 129 78
+5287c 8 256 82
+52884 4 130 78
+52888 18 1552 82
+528a0 4 130 78
+528a4 4 1552 82
+528a8 8 130 78
+528b0 c 302 82
+528bc 18 130 78
+528d4 8 130 78
+528dc c 130 78
+528e8 8 85 79
+528f0 8 130 78
+528f8 8 256 82
+52900 14 131 78
+FUNC 52914 9c 0 testing::internal::CmpHelperEQ<unsigned char const*, void const*>
+52914 10 1476 82
+52924 8 1476 82
+5292c 10 1481 82
+5293c 8 1482 82
+52944 2c 1382 82
+52970 1c 1471 82
+5298c 10 156 132
+5299c 14 1488 82
+FUNC 529b0 84 0 testing::internal::CmpHelperEQFailure<void const*, void const*>
+529b0 c 1464 82
+529bc 8 1382 82
+529c4 4 1464 82
+529c8 8 1464 82
+529d0 8 1382 82
+529d8 8 1464 82
+529e0 14 1382 82
+529f4 1c 1471 82
+52a10 10 156 132
+52a20 14 1472 82
+FUNC 52a34 5ac 0 MinidumpMemoryRangeTest_SubrangeWithMDLocationDescriptor_Test::TestBody
+52a34 4 165 78
+52a38 4 70 55
+52a3c c 165 78
+52a48 10 70 55
+52a58 c 72 55
+52a64 8 165 78
+52a6c 8 171 78
+52a74 4 256 82
+52a78 4 165 78
+52a7c 4 256 82
+52a80 4 171 78
+52a84 8 165 78
+52a8c 4 256 82
+52a90 4 170 78
+52a94 4 171 78
+52a98 4 170 78
+52a9c 4 171 78
+52aa0 4 169 78
+52aa4 4 171 78
+52aa8 4 168 78
+52aac 4 171 78
+52ab0 4 171 78
+52ab4 8 68 77
+52abc 4 171 78
+52ac0 4 131 79
+52ac4 10 333 122
+52ad4 4 131 79
+52ad8 c 263 121
+52ae4 4 131 79
+52ae8 10 333 122
+52af8 4 131 79
+52afc c 263 121
+52b08 4 131 79
+52b0c c 131 79
+52b18 14 171 78
+52b2c 10 85 79
+52b3c 20 68 77
+52b5c 4 178 78
+52b60 4 83 55
+52b64 4 83 55
+52b68 4 83 55
+52b6c 4 83 55
+52b70 8 82 55
+52b78 c 83 55
+52b84 4 277 82
+52b88 4 1139 87
+52b8c 4 179 78
+52b90 20 179 78
+52bb0 4 179 78
+52bb4 4 179 78
+52bb8 18 179 78
+52bd0 8 179 78
+52bd8 c 179 78
+52be4 8 85 79
+52bec 8 179 78
+52bf4 8 156 132
+52bfc 4 256 82
+52c00 4 1512 82
+52c04 4 256 82
+52c08 28 180 78
+52c30 1c 1512 82
+52c4c 10 180 78
+52c5c c 302 82
+52c68 14 180 78
+52c7c 8 180 78
+52c84 c 181 78
+52c90 8 85 79
+52c98 8 180 78
+52ca0 8 256 82
+52ca8 8 182 78
+52cb0 c 1512 82
+52cbc 4 182 78
+52cc0 c 1512 82
+52ccc 4 182 78
+52cd0 4 1512 82
+52cd4 8 182 78
+52cdc c 302 82
+52ce8 14 182 78
+52cfc 8 182 78
+52d04 c 182 78
+52d10 8 85 79
+52d18 8 182 78
+52d20 8 256 82
+52d28 4 183 78
+52d2c 20 1512 82
+52d4c 8 183 78
+52d54 c 302 82
+52d60 14 183 78
+52d74 8 83 55
+52d7c 4 83 55
+52d80 8 82 55
+52d88 c 83 55
+52d94 4 185 78
+52d98 4 1139 87
+52d9c 4 277 82
+52da0 4 185 78
+52da4 20 185 78
+52dc4 4 185 78
+52dc8 4 185 78
+52dcc 18 185 78
+52de4 8 185 78
+52dec c 185 78
+52df8 8 85 79
+52e00 8 185 78
+52e08 8 156 132
+52e10 8 256 82
+52e18 14 186 78
+52e2c 8 1571 82
+52e34 4 1482 82
+52e38 4 1481 82
+52e3c 8 1482 82
+52e44 18 1487 82
+52e5c 8 186 78
+52e64 c 302 82
+52e70 14 186 78
+52e84 8 186 78
+52e8c c 186 78
+52e98 8 85 79
+52ea0 8 186 78
+52ea8 8 256 82
+52eb0 24 1571 82
+52ed4 8 187 78
+52edc c 302 82
+52ee8 14 187 78
+52efc 8 187 78
+52f04 c 187 78
+52f10 8 85 79
+52f18 8 187 78
+52f20 8 256 82
+52f28 4 188 78
+52f2c 1c 1552 82
+52f48 4 188 78
+52f4c 4 1552 82
+52f50 8 188 78
+52f58 c 302 82
+52f64 14 188 78
+52f78 8 188 78
+52f80 c 188 78
+52f8c 8 85 79
+52f94 8 188 78
+52f9c c 256 82
+52fa8 8 190 78
+52fb0 c 167 78
+52fbc 24 191 78
+FUNC 52fe0 204 0 MinidumpMemoryRangeTest_GetArrayElement_Test::TestBody
+52fe0 4 201 78
+52fe4 4 70 55
+52fe8 4 201 78
+52fec 4 70 55
+52ff0 8 201 78
+52ff8 4 70 55
+52ffc 4 208 78
+53000 8 72 55
+53008 4 211 78
+5300c 4 201 78
+53010 8 208 78
+53018 4 211 78
+5301c 4 256 82
+53020 4 201 78
+53024 8 256 82
+5302c 4 333 122
+53030 c 201 78
+5303c 4 333 122
+53040 4 207 78
+53044 4 208 78
+53048 4 207 78
+5304c 4 208 78
+53050 4 205 78
+53054 4 208 78
+53058 4 204 78
+5305c 4 206 78
+53060 4 208 78
+53064 4 208 78
+53068 4 254 121
+5306c 4 208 78
+53070 4 131 79
+53074 c 333 122
+53080 4 131 79
+53084 c 263 121
+53090 4 131 79
+53094 10 333 122
+530a4 4 131 79
+530a8 c 263 121
+530b4 4 131 79
+530b8 10 333 122
+530c8 4 131 79
+530cc c 254 121
+530d8 10 131 79
+530e8 14 208 78
+530fc 10 85 79
+5310c 14 109 55
+53120 4 211 78
+53124 4 1481 82
+53128 4 1482 82
+5312c 8 1481 82
+53134 8 1482 82
+5313c 1c 1487 82
+53158 8 211 78
+53160 4 302 82
+53164 4 211 78
+53168 8 302 82
+53170 14 211 78
+53184 8 211 78
+5318c c 212 78
+53198 8 85 79
+531a0 8 211 78
+531a8 c 256 82
+531b4 8 213 78
+531bc 8 203 78
+531c4 20 214 78
+FUNC 531e4 5ac 0 MinidumpMemoryRangeTest_SubrangeAndGetData_Test::TestBody
+531e4 4 140 78
+531e8 4 70 55
+531ec c 140 78
+531f8 10 70 55
+53208 c 72 55
+53214 8 140 78
+5321c 8 146 78
+53224 4 256 82
+53228 4 140 78
+5322c 4 256 82
+53230 4 146 78
+53234 8 140 78
+5323c 4 256 82
+53240 4 145 78
+53244 4 146 78
+53248 4 145 78
+5324c 4 146 78
+53250 4 144 78
+53254 4 146 78
+53258 4 143 78
+5325c 4 146 78
+53260 4 146 78
+53264 8 149 78
+5326c 4 146 78
+53270 4 131 79
+53274 10 333 122
+53284 4 131 79
+53288 c 263 121
+53294 4 131 79
+53298 10 333 122
+532a8 4 131 79
+532ac c 263 121
+532b8 4 131 79
+532bc c 131 79
+532c8 14 146 78
+532dc 10 85 79
+532ec 20 149 78
+5330c 4 150 78
+53310 4 83 55
+53314 4 83 55
+53318 4 83 55
+5331c 4 83 55
+53320 8 82 55
+53328 c 83 55
+53334 4 277 82
+53338 4 1139 87
+5333c 4 151 78
+53340 20 151 78
+53360 4 151 78
+53364 4 151 78
+53368 18 151 78
+53380 8 151 78
+53388 c 151 78
+53394 8 85 79
+5339c 8 151 78
+533a4 8 156 132
+533ac 4 256 82
+533b0 4 1512 82
+533b4 4 256 82
+533b8 28 152 78
+533e0 1c 1512 82
+533fc 10 152 78
+5340c c 302 82
+53418 14 152 78
+5342c 8 152 78
+53434 c 153 78
+53440 8 85 79
+53448 8 152 78
+53450 8 256 82
+53458 8 154 78
+53460 c 1512 82
+5346c 4 154 78
+53470 c 1512 82
+5347c 4 154 78
+53480 4 1512 82
+53484 8 154 78
+5348c c 302 82
+53498 14 154 78
+534ac 8 154 78
+534b4 c 154 78
+534c0 8 85 79
+534c8 8 154 78
+534d0 8 256 82
+534d8 4 155 78
+534dc 20 1512 82
+534fc 8 155 78
+53504 c 302 82
+53510 14 155 78
+53524 8 83 55
+5352c 4 83 55
+53530 8 82 55
+53538 c 83 55
+53544 4 157 78
+53548 4 1139 87
+5354c 4 277 82
+53550 4 157 78
+53554 20 157 78
+53574 4 157 78
+53578 4 157 78
+5357c 18 157 78
+53594 8 157 78
+5359c c 157 78
+535a8 8 85 79
+535b0 8 157 78
+535b8 8 156 132
+535c0 8 256 82
+535c8 14 158 78
+535dc 8 1571 82
+535e4 4 1482 82
+535e8 4 1481 82
+535ec 8 1482 82
+535f4 18 1487 82
+5360c 8 158 78
+53614 c 302 82
+53620 14 158 78
+53634 8 158 78
+5363c c 158 78
+53648 8 85 79
+53650 8 158 78
+53658 8 256 82
+53660 24 1571 82
+53684 8 159 78
+5368c c 302 82
+53698 14 159 78
+536ac 8 159 78
+536b4 c 159 78
+536c0 8 85 79
+536c8 8 159 78
+536d0 8 256 82
+536d8 4 160 78
+536dc 1c 1552 82
+536f8 4 160 78
+536fc 4 1552 82
+53700 8 160 78
+53708 c 302 82
+53714 14 160 78
+53728 8 160 78
+53730 c 160 78
+5373c 8 85 79
+53744 8 160 78
+5374c c 256 82
+53758 8 162 78
+53760 c 142 78
+5376c 24 163 78
+FUNC 53790 90 0 testing::internal::CmpHelperEQFailure<char const*, char const*>
+53790 c 1464 82
+5379c 8 1408 82
+537a4 4 1464 82
+537a8 4 1464 82
+537ac c 1408 82
+537b8 4 1464 82
+537bc 1c 1408 82
+537d8 24 1471 82
+537fc 10 156 132
+5380c 14 1472 82
+FUNC 53820 190 0 MinidumpMemoryRangeTest_GetDataWithTemplateType_Test::TestBody
+53820 4 193 78
+53824 4 70 55
+53828 4 99 55
+5382c 4 193 78
+53830 4 70 55
+53834 4 99 55
+53838 4 193 78
+5383c 4 99 55
+53840 4 70 55
+53844 8 72 55
+5384c 4 99 55
+53850 8 193 78
+53858 8 99 55
+53860 4 196 78
+53864 c 195 78
+53870 4 1482 82
+53874 4 196 78
+53878 8 1481 82
+53880 8 1482 82
+53888 8 1487 82
+53890 8 196 78
+53898 4 302 82
+5389c 4 196 78
+538a0 4 196 78
+538a4 8 302 82
+538ac 18 196 78
+538c4 8 196 78
+538cc c 196 78
+538d8 8 85 79
+538e0 8 196 78
+538e8 8 256 82
+538f0 10 99 55
+53900 4 197 78
+53904 4 198 78
+53908 4 1482 82
+5390c 4 198 78
+53910 8 1481 82
+53918 8 1482 82
+53920 1c 1487 82
+5393c 8 198 78
+53944 4 302 82
+53948 4 198 78
+5394c 4 198 78
+53950 8 302 82
+53958 18 198 78
+53970 8 198 78
+53978 c 198 78
+53984 8 85 79
+5398c 8 198 78
+53994 8 256 82
+5399c 14 199 78
+FUNC 539b0 190 0 MinidumpMemoryRangeTest_GetArrayElmentWithTemplateType_Test::TestBody
+539b0 4 216 78
+539b4 4 70 55
+539b8 4 109 55
+539bc 4 216 78
+539c0 4 70 55
+539c4 4 109 55
+539c8 4 216 78
+539cc 4 109 55
+539d0 4 70 55
+539d4 8 72 55
+539dc 4 109 55
+539e0 8 216 78
+539e8 8 109 55
+539f0 4 219 78
+539f4 c 218 78
+53a00 4 1482 82
+53a04 4 219 78
+53a08 8 1481 82
+53a10 8 1482 82
+53a18 8 1487 82
+53a20 8 219 78
+53a28 4 302 82
+53a2c 4 219 78
+53a30 4 219 78
+53a34 8 302 82
+53a3c 18 219 78
+53a54 8 219 78
+53a5c c 219 78
+53a68 8 85 79
+53a70 8 219 78
+53a78 8 256 82
+53a80 10 109 55
+53a90 4 220 78
+53a94 4 221 78
+53a98 4 1482 82
+53a9c 4 221 78
+53aa0 8 1481 82
+53aa8 8 1482 82
+53ab0 1c 1487 82
+53acc 8 221 78
+53ad4 4 302 82
+53ad8 4 221 78
+53adc 4 221 78
+53ae0 8 302 82
+53ae8 18 221 78
+53b00 8 221 78
+53b08 c 221 78
+53b14 8 85 79
+53b1c 8 221 78
+53b24 8 256 82
+53b2c 14 222 78
+FUNC 53b40 bc 0 testing::internal::CmpHelperEQ<char [1], std::basic_string<char, std::char_traits<char>, std::allocator<char> > >
+53b40 18 1476 82
+53b58 c 1481 82
+53b64 8 1476 82
+53b6c 8 1476 82
+53b74 10 1481 82
+53b84 c 1482 82
+53b90 10 1427 82
+53ba0 4 1382 82
+53ba4 4 1427 82
+53ba8 c 1382 82
+53bb4 1c 1471 82
+53bd0 10 156 132
+53be0 1c 1488 82
+FUNC 53bfc 3d0 0 MinidumpMemoryRangeTest_GetAsciiMDString_Test::TestBody
+53bfc 4 224 78
+53c00 4 228 78
+53c04 4 239 78
+53c08 4 224 78
+53c0c 4 225 78
+53c10 10 224 78
+53c20 4 225 78
+53c24 4 228 78
+53c28 8 229 78
+53c30 8 230 78
+53c38 4 231 78
+53c3c 4 225 78
+53c40 4 231 78
+53c44 8 232 78
+53c4c 4 239 78
+53c50 4 241 78
+53c54 8 242 78
+53c5c 8 243 78
+53c64 4 244 78
+53c68 4 225 78
+53c6c 4 244 78
+53c70 4 245 78
+53c74 4 70 55
+53c78 4 245 78
+53c7c 8 247 78
+53c84 4 248 78
+53c88 4 251 78
+53c8c 4 248 78
+53c90 4 72 55
+53c94 4 239 78
+53c98 4 251 78
+53c9c 4 240 78
+53ca0 4 70 55
+53ca4 c 225 78
+53cb0 4 72 55
+53cb4 8 251 78
+53cbc 4 1481 82
+53cc0 4 240 78
+53cc4 4 1481 82
+53cc8 4 225 78
+53ccc 4 251 78
+53cd0 20 1481 82
+53cf0 10 1482 82
+53d00 c 1427 82
+53d0c c 1382 82
+53d18 24 1471 82
+53d3c 18 156 132
+53d54 8 251 78
+53d5c c 302 82
+53d68 18 251 78
+53d80 8 251 78
+53d88 c 251 78
+53d94 8 85 79
+53d9c 8 251 78
+53da4 4 256 82
+53da8 8 1481 82
+53db0 4 256 82
+53db4 10 252 78
+53dc4 14 1481 82
+53dd8 10 1482 82
+53de8 c 1427 82
+53df4 c 1382 82
+53e00 24 1471 82
+53e24 18 156 132
+53e3c 8 252 78
+53e44 c 302 82
+53e50 18 252 78
+53e68 8 252 78
+53e70 c 252 78
+53e7c 8 85 79
+53e84 8 252 78
+53e8c 4 256 82
+53e90 8 1512 82
+53e98 4 256 82
+53e9c 10 255 78
+53eac 1c 1512 82
+53ec8 8 156 132
+53ed0 8 255 78
+53ed8 c 302 82
+53ee4 18 255 78
+53efc 8 255 78
+53f04 c 256 78
+53f10 8 85 79
+53f18 8 255 78
+53f20 8 256 82
+53f28 10 257 78
+53f38 1c 1512 82
+53f54 8 156 132
+53f5c 8 257 78
+53f64 c 302 82
+53f70 18 257 78
+53f88 8 257 78
+53f90 c 257 78
+53f9c 8 85 79
+53fa4 8 257 78
+53fac 8 256 82
+53fb4 18 258 78
+FUNC 53fcc 4 0 testing::internal::TestFactoryImpl<AndroidUContext_SigmakOffset_Test>::~TestFactoryImpl
+53fcc 4 484 85
+FUNC 53fd0 4 0 testing::internal::TestFactoryImpl<AndroidUContext_GRegsOffset_Test>::~TestFactoryImpl
+53fd0 4 484 85
+FUNC 53fd4 4 0 testing::internal::TestFactoryImpl<AndroidUContext_GRegsOffset_Test>::~TestFactoryImpl
+53fd4 4 484 85
+FUNC 53fd8 4 0 testing::internal::TestFactoryImpl<AndroidUContext_SigmakOffset_Test>::~TestFactoryImpl
+53fd8 4 484 85
+FUNC 53fdc 14 0 AndroidUContext_SigmakOffset_Test::~AndroidUContext_SigmakOffset_Test
+53fdc 14 183 34
+FUNC 53ff0 24 0 AndroidUContext_SigmakOffset_Test::~AndroidUContext_SigmakOffset_Test
+53ff0 c 183 34
+53ffc 8 183 34
+54004 4 183 34
+54008 8 183 34
+54010 4 183 34
+FUNC 54014 14 0 AndroidUContext_GRegsOffset_Test::~AndroidUContext_GRegsOffset_Test
+54014 14 50 34
+FUNC 54028 24 0 AndroidUContext_GRegsOffset_Test::~AndroidUContext_GRegsOffset_Test
+54028 c 50 34
+54034 8 50 34
+5403c 4 50 34
+54040 8 50 34
+54048 4 50 34
+FUNC 5404c 3c 0 testing::internal::TestFactoryImpl<AndroidUContext_SigmakOffset_Test>::CreateTest
+5404c 10 486 85
+5405c 8 486 85
+54064 8 183 34
+5406c 4 486 85
+54070 c 183 34
+5407c c 486 85
+FUNC 54088 3c 0 testing::internal::TestFactoryImpl<AndroidUContext_GRegsOffset_Test>::CreateTest
+54088 10 486 85
+54098 8 486 85
+540a0 8 50 34
+540a8 4 486 85
+540ac c 50 34
+540b8 c 486 85
+FUNC 540c4 13c 0 testing::internal::CmpHelperEQFailure<long unsigned int, long unsigned int>
+540c4 c 1464 82
+540d0 4 884 80
+540d4 10 1464 82
+540e4 8 884 80
+540ec c 1464 82
+540f8 4 1464 82
+540fc 4 884 80
+54100 c 263 121
+5410c 4 112 132
+54110 10 263 121
+54120 4 379 131
+54124 4 112 132
+54128 4 378 131
+5412c 4 481 101
+54130 8 379 131
+54138 10 148 137
+54148 4 380 131
+5414c 4 101 103
+54150 8 886 80
+54158 c 884 80
+54164 8 263 121
+5416c 4 112 132
+54170 10 263 121
+54180 4 379 131
+54184 4 112 132
+54188 4 378 131
+5418c 4 481 101
+54190 8 379 131
+54198 10 148 137
+541a8 4 380 131
+541ac 4 101 103
+541b0 8 886 80
+541b8 1c 1471 82
+541d4 10 156 132
+541e4 1c 1472 82
+FUNC 54200 9c 0 AndroidUContext_SigmakOffset_Test::TestBody
+54200 c 183 34
+5420c 4 1482 82
+54210 4 183 34
+54214 8 1482 82
+5421c 8 184 34
+54224 4 1144 87
+54228 c 298 82
+54234 8 298 82
+5423c 18 184 34
+54254 4 184 34
+54258 4 184 34
+5425c 8 184 34
+54264 c 184 34
+54270 c 1140 87
+5427c 8 184 34
+54284 8 256 82
+5428c 10 186 34
+FUNC 5429c 1d8 0 AndroidUContext_GRegsOffset_Test::TestBody
+5429c c 50 34
+542a8 4 1482 82
+542ac 4 50 34
+542b0 8 1482 82
+542b8 8 59 34
+542c0 4 1144 87
+542c4 c 298 82
+542d0 8 298 82
+542d8 1c 59 34
+542f4 c 256 82
+54300 8 1482 82
+54308 8 61 34
+54310 4 1144 87
+54314 c 298 82
+54320 8 298 82
+54328 1c 61 34
+54344 8 256 82
+5434c 8 1482 82
+54354 8 63 34
+5435c 4 1144 87
+54360 c 298 82
+5436c 8 298 82
+54374 1c 63 34
+54390 8 256 82
+54398 8 1482 82
+543a0 8 65 34
+543a8 4 1144 87
+543ac c 298 82
+543b8 8 298 82
+543c0 1c 65 34
+543dc 8 256 82
+543e4 8 1482 82
+543ec 8 67 34
+543f4 4 1144 87
+543f8 c 298 82
+54404 8 298 82
+5440c 1c 67 34
+54428 c 67 34
+54434 c 67 34
+54440 c 1140 87
+5444c 8 67 34
+54454 10 256 82
+54464 10 181 34
+FUNC 54474 1c 0 std::basic_streambuf<char, std::char_traits<char> >::_M_sputnc
+54474 8 208 129
+5447c 14 209 129
+FUNC 54490 ec 0 std::basic_ostream<char, std::char_traits<char> >::operator<<
+54490 10 236 121
+544a0 8 239 121
+544a8 4 236 121
+544ac 8 238 121
+544b4 8 181 122
+544bc 8 239 121
+544c4 8 239 121
+544cc c 181 122
+544d8 4 199 121
+544dc 18 211 121
+544f4 4 202 121
+544f8 4 145 110
+544fc 4 202 121
+54500 4 145 110
+54504 4 202 121
+54508 8 145 110
+54510 c 351 117
+5451c 8 351 117
+54524 4 67 120
+54528 4 202 121
+5452c 8 67 120
+54534 c 202 121
+54540 4 67 120
+54544 4 57 123
+54548 c 67 120
+54554 8 202 121
+5455c 4 210 121
+54560 8 212 121
+54568 14 241 121
+FUNC 5457c 48 0 std::basic_streambuf<char, std::char_traits<char> >::sputc
+5457c 10 198 129
+5458c 10 200 129
+5459c c 199 129
+545a8 8 223 140
+545b0 4 199 129
+545b4 8 200 129
+545bc 8 201 129
+FUNC 545c4 11c 0 std::basic_ostream<char, std::char_traits<char> >::_M_put_char
+545c4 10 300 121
+545d4 8 300 121
+545dc 10 181 122
+545ec 4 302 121
+545f0 18 305 121
+54608 8 307 121
+54610 8 308 121
+54618 c 309 121
+54624 4 310 121
+54628 4 309 121
+5462c 8 310 121
+54634 8 311 121
+5463c 8 311 121
+54644 4 312 121
+54648 4 312 121
+5464c 8 312 121
+54654 c 312 121
+54660 c 311 121
+5466c c 315 121
+54678 8 316 121
+54680 c 316 121
+5468c c 316 121
+54698 8 316 121
+546a0 4 319 121
+546a4 c 139 110
+546b0 4 325 121
+546b4 14 326 121
+546c8 8 327 121
+546d0 10 328 121
+FUNC 546e0 2dc 0 std::operator+<char, std::char_traits<char>, std::allocator<char> >
+546e0 24 46 134
+54704 8 229 140
+5470c 8 400 131
+54714 4 120 132
+54718 4 400 131
+5471c 8 481 101
+54724 8 608 130
+5472c c 600 130
+54738 8 610 130
+54740 8 347 101
+54748 4 348 101
+5474c 4 611 130
+54750 4 613 130
+54754 4 612 130
+54758 c 613 130
+54764 4 57 134
+54768 4 470 131
+5476c 4 101 103
+54770 4 470 131
+54774 4 64 132
+54778 c 74 132
+54784 c 74 132
+54790 8 74 132
+54798 8 472 131
+547a0 10 473 131
+547b0 4 356 101
+547b4 4 346 101
+547b8 8 347 101
+547c0 4 348 101
+547c4 4 352 101
+547c8 8 353 101
+547d0 10 107 137
+547e0 c 106 137
+547ec 4 107 137
+547f0 8 106 137
+547f8 4 479 131
+547fc 4 106 137
+54800 4 107 137
+54804 4 101 103
+54808 8 478 131
+54810 4 160 132
+54814 4 164 132
+54818 8 165 132
+54820 c 482 131
+5482c 4 107 137
+54830 4 232 140
+54834 8 483 131
+5483c 4 107 137
+54840 8 106 137
+54848 8 101 103
+54850 14 485 131
+54864 8 197 130
+5486c 4 64 132
+54870 4 198 130
+54874 c 74 132
+54880 c 74 132
+5488c 8 74 132
+54894 8 199 130
+5489c 10 200 130
+548ac 4 356 101
+548b0 4 346 101
+548b4 8 347 101
+548bc 4 348 101
+548c0 4 352 101
+548c4 8 348 101
+548cc 10 86 137
+548dc c 86 137
+548e8 10 146 103
+548f8 1c 86 137
+54914 10 146 103
+54924 8 205 130
+5492c 8 206 130
+54934 4 101 103
+54938 4 205 130
+5493c 4 160 132
+54940 4 164 132
+54944 8 165 132
+5494c 4 210 130
+54950 4 211 130
+54954 c 86 137
+54960 18 86 137
+54978 8 146 103
+54980 10 101 103
+54990 4 232 140
+54994 c 214 130
+549a0 1c 60 134
+FUNC 549bc 234 0 testing::internal::PrintCharAndCodeTo<unsigned char, unsigned char>
+549bc c 217 93
+549c8 4 333 122
+549cc 8 217 93
+549d4 8 217 93
+549dc 10 333 122
+549ec 1c 147 93
+54a08 10 333 122
+54a18 10 147 93
+54a28 10 333 122
+54a38 1c 147 93
+54a54 10 333 122
+54a64 10 147 93
+54a74 20 333 122
+54a94 8 187 93
+54a9c 50 333 122
+54aec 4 138 93
+54af0 8 179 93
+54af8 8 305 122
+54b00 4 181 93
+54b04 8 305 122
+54b0c c 183 93
+54b18 4 183 93
+54b1c 4 183 93
+54b20 14 183 93
+54b34 c 183 93
+54b40 c 156 132
+54b4c 4 184 93
+54b50 4 156 132
+54b54 c 333 122
+54b60 4 226 93
+54b64 10 333 122
+54b74 c 228 93
+54b80 8 233 93
+54b88 10 233 93
+54b98 c 333 122
+54ba4 4 236 93
+54ba8 4 333 122
+54bac c 236 93
+54bb8 c 236 93
+54bc4 8 156 132
+54bcc 10 333 122
+54bdc 14 239 93
+FUNC 54bf0 4 0 testing::internal::PrintTo
+54bf0 4 242 93
+FUNC 54bf4 190 0 testing::internal::PrintAsCharLiteralTo<wchar_t, wchar_t>
+54bf4 4 146 93
+54bf8 4 147 93
+54bfc 10 146 93
+54c0c 4 146 93
+54c10 18 147 93
+54c28 10 333 122
+54c38 10 147 93
+54c48 10 333 122
+54c58 1c 147 93
+54c74 10 333 122
+54c84 10 147 93
+54c94 70 333 122
+54d04 8 187 93
+54d0c 4 138 93
+54d10 8 179 93
+54d18 c 305 122
+54d24 8 181 93
+54d2c c 183 93
+54d38 4 183 93
+54d3c 4 183 93
+54d40 14 183 93
+54d54 c 183 93
+54d60 10 156 132
+54d70 4 184 93
+54d74 10 188 93
+FUNC 54d84 100 0 testing::internal::PrintCharsAsStringTo<char>
+54d84 c 262 93
+54d90 4 333 122
+54d94 10 262 93
+54da4 8 333 122
+54dac 4 262 93
+54db0 4 262 93
+54db4 14 333 122
+54dc8 4 266 93
+54dcc c 333 122
+54dd8 8 267 93
+54de0 4 268 93
+54de4 4 269 93
+54de8 8 2200 87
+54df0 4 269 93
+54df4 10 193 93
+54e04 c 333 122
+54e10 8 196 93
+54e18 c 333 122
+54e24 8 199 93
+54e2c c 201 93
+54e38 10 275 93
+54e48 8 333 122
+54e50 14 278 93
+54e64 20 333 122
+FUNC 54e84 18 0 testing::internal::PrintStringTo
+54e84 4 354 93
+54e88 4 354 93
+54e8c 4 400 131
+54e90 c 355 93
+FUNC 54e9c 34 0 testing::internal::HasNewFatalFailureHelper::ReportTestPartResult
+54e9c 8 102 94
+54ea4 c 103 94
+54eb0 8 104 94
+54eb8 10 105 94
+54ec8 8 106 94
+FUNC 54ed0 34 0 testing::internal::HasNewFatalFailureHelper::~HasNewFatalFailureHelper
+54ed0 10 96 94
+54ee0 c 96 94
+54eec 4 937 91
+54ef0 8 98 94
+54ef8 8 99 94
+54f00 4 98 94
+FUNC 54f04 24 0 testing::internal::HasNewFatalFailureHelper::~HasNewFatalFailureHelper
+54f04 c 96 94
+54f10 4 96 94
+54f14 4 99 94
+54f18 4 99 94
+54f1c 8 99 94
+54f24 4 99 94
+FUNC 54f28 48 0 testing::internal::HasNewFatalFailureHelper::HasNewFatalFailureHelper
+54f28 c 89 94
+54f34 4 89 94
+54f38 10 92 94
+54f48 4 937 91
+54f4c 8 92 94
+54f54 4 92 94
+54f58 4 937 91
+54f5c 8 93 94
+54f64 8 94 94
+54f6c 4 93 94
+FUNC 54f70 a8 0 testing::TestPartResult::ExtractSummary
+54f70 4 51 94
+54f74 4 52 94
+54f78 8 51 94
+54f80 4 52 94
+54f84 8 51 94
+54f8c 4 51 94
+54f90 4 52 94
+54f94 4 112 132
+54f98 4 481 101
+54f9c 4 52 94
+54fa0 4 54 94
+54fa4 c 229 140
+54fb0 10 379 131
+54fc0 c 107 137
+54fcc 4 355 114
+54fd0 10 324 131
+54fe0 c 107 137
+54fec c 106 137
+54ff8 4 107 137
+54ffc 4 325 131
+55000 4 55 94
+55004 4 101 103
+55008 10 55 94
+FUNC 55018 48 0 testing::TestPartResult::TestPartResult
+55018 c 47 81
+55024 18 47 81
+5503c 4 47 81
+55040 4 47 81
+55044 8 47 81
+5504c 8 47 81
+55054 8 47 81
+5505c 4 47 81
+FUNC 55060 268 0 std::priv::_Impl_vector<testing::TestPartResult, std::allocator<testing::TestPartResult> >::_M_insert_overflow_aux
+55060 24 81 138
+55084 4 81 138
+55088 8 192 139
+55090 8 81 138
+55098 10 192 139
+550a8 14 173 139
+550bc 10 41 138
+550cc c 176 139
+550d8 4 175 139
+550dc 10 176 139
+550ec 4 356 101
+550f0 8 346 101
+550f8 8 177 139
+55100 c 347 101
+5510c 8 158 101
+55114 8 134 119
+5511c 8 158 101
+55124 4 352 101
+55128 4 158 101
+5512c 8 352 101
+55134 4 91 138
+55138 4 84 137
+5513c 14 86 137
+55150 8 86 137
+55158 4 139 103
+5515c 14 139 103
+55170 4 88 137
+55174 4 89 137
+55178 14 86 137
+5518c c 93 138
+55198 4 119 103
+5519c c 119 103
+551a8 8 95 138
+551b0 4 314 137
+551b4 4 249 137
+551b8 4 314 137
+551bc 8 249 137
+551c4 8 249 137
+551cc 4 139 103
+551d0 c 139 103
+551dc c 249 137
+551e8 4 98 138
+551ec 4 86 137
+551f0 4 84 137
+551f4 14 86 137
+55208 8 86 137
+55210 4 139 103
+55214 c 139 103
+55220 4 88 137
+55224 4 89 137
+55228 20 86 137
+55248 8 191 103
+55250 20 156 132
+55270 c 662 139
+5527c 4 319 101
+55280 8 161 101
+55288 8 135 119
+55290 4 161 101
+55294 4 104 138
+55298 4 666 139
+5529c 4 667 139
+552a0 8 104 138
+552a8 4 668 139
+552ac 1c 105 138
+FUNC 552c8 10 0 std::ios_base::precision
+552c8 4 131 110
+552cc 4 132 110
+552d0 8 134 110
+FUNC 552d8 10 0 std::ios_base::width
+552d8 4 138 110
+552dc 4 139 110
+552e0 8 141 110
+FUNC 552e8 20 0 testing::internal::DeleteThreadLocalValue
+552e8 8 1988 87
+552f0 4 1989 87
+552f4 c 1989 87
+55300 8 1990 87
+FUNC 55308 20 0 testing::Test::DeleteSelf_
+55308 8 453 82
+55310 4 453 82
+55314 4 453 82
+55318 8 453 82
+55320 8 453 82
+FUNC 55328 18 0 testing::TestCase::RunSetUpTestCase
+55328 8 879 82
+55330 10 879 82
+FUNC 55340 18 0 testing::TestCase::RunTearDownTestCase
+55340 8 883 82
+55348 10 883 82
+FUNC 55358 14 0 testing::TestCase::TestReportableDisabled
+55358 4 696 82
+5535c 4 898 82
+55360 4 898 82
+55364 8 899 82
+FUNC 5536c 8 0 testing::TestCase::TestReportable
+5536c 8 909 82
+FUNC 55374 8 0 testing::TestCase::ShouldRunTest
+55374 8 914 82
+FUNC 5537c 4 0 testing::EmptyTestEventListener::OnTestProgramStart
+5537c 4 1038 82
+FUNC 55380 4 0 testing::EmptyTestEventListener::OnTestIterationStart
+55380 4 1040 82
+FUNC 55384 4 0 testing::EmptyTestEventListener::OnEnvironmentsSetUpStart
+55384 4 1041 82
+FUNC 55388 4 0 testing::EmptyTestEventListener::OnEnvironmentsSetUpEnd
+55388 4 1042 82
+FUNC 5538c 4 0 testing::EmptyTestEventListener::OnTestCaseStart
+5538c 4 1043 82
+FUNC 55390 4 0 testing::EmptyTestEventListener::OnTestStart
+55390 4 1044 82
+FUNC 55394 4 0 testing::EmptyTestEventListener::OnTestPartResult
+55394 4 1045 82
+FUNC 55398 4 0 testing::EmptyTestEventListener::OnTestEnd
+55398 4 1046 82
+FUNC 5539c 4 0 testing::EmptyTestEventListener::OnTestCaseEnd
+5539c 4 1047 82
+FUNC 553a0 4 0 testing::EmptyTestEventListener::OnEnvironmentsTearDownStart
+553a0 4 1048 82
+FUNC 553a4 4 0 testing::EmptyTestEventListener::OnEnvironmentsTearDownEnd
+553a4 4 1049 82
+FUNC 553a8 4 0 testing::EmptyTestEventListener::OnTestProgramEnd
+553a8 4 1052 82
+FUNC 553ac 8 0 testing::internal::ShouldRunTestCase
+553ac 8 348 95
+FUNC 553b4 4 0 testing::Test::SetUp
+553b4 4 2188 95
+FUNC 553b8 4 0 testing::Test::TearDown
+553b8 4 2194 95
+FUNC 553bc 4 0 testing::internal::PrettyUnitTestResultPrinter::OnTestProgramStart
+553bc 4 2987 95
+FUNC 553c0 4 0 testing::internal::PrettyUnitTestResultPrinter::OnEnvironmentsSetUpEnd
+553c0 4 2990 95
+FUNC 553c4 4 0 testing::internal::PrettyUnitTestResultPrinter::OnEnvironmentsTearDownEnd
+553c4 4 2997 95
+FUNC 553c8 4 0 testing::internal::PrettyUnitTestResultPrinter::OnTestProgramEnd
+553c8 4 2999 95
+FUNC 553cc 4 0 testing::internal::OsStackTraceGetter::UponLeavingGTest
+553cc 4 3803 95
+FUNC 553d0 1c 0 testing::internal::SetUpEnvironment
+553d0 8 4486 95
+553d8 14 4486 95
+FUNC 553ec 1c 0 testing::internal::TearDownEnvironment
+553ec 8 4487 95
+553f4 14 4487 95
+FUNC 55408 20 0 testing::internal::Delete<testing::TestEventListener>
+55408 8 339 91
+55410 4 340 91
+55414 c 340 91
+55420 8 341 91
+FUNC 55428 20 0 testing::internal::Delete<testing::TestCase>
+55428 8 339 91
+55430 4 340 91
+55434 c 340 91
+55440 8 341 91
+FUNC 55448 20 0 testing::internal::Delete<testing::Environment>
+55448 8 339 91
+55450 4 340 91
+55454 c 340 91
+55460 8 341 91
+FUNC 55468 4 0 testing::internal::ThreadLocal<testing::TestPartResultReporterInterface*>::ValueHolder::~ValueHolder
+55468 4 2017 87
+FUNC 5546c 4 0 testing::internal::PrettyUnitTestResultPrinter::~PrettyUnitTestResultPrinter
+5546c 4 2979 95
+FUNC 55470 4 0 testing::internal::DefaultPerThreadTestPartResultReporter::~DefaultPerThreadTestPartResultReporter
+55470 4 490 91
+FUNC 55474 4 0 testing::internal::DefaultGlobalTestPartResultReporter::~DefaultGlobalTestPartResultReporter
+55474 4 474 91
+FUNC 55478 4 0 testing::internal::ThreadLocal<testing::TestPartResultReporterInterface*>::ValueHolder::~ValueHolder
+55478 4 2017 87
+FUNC 5547c 4 0 testing::internal::DefaultPerThreadTestPartResultReporter::~DefaultPerThreadTestPartResultReporter
+5547c 4 490 91
+FUNC 55480 4 0 testing::internal::DefaultGlobalTestPartResultReporter::~DefaultGlobalTestPartResultReporter
+55480 4 474 91
+FUNC 55484 4 0 testing::internal::PrettyUnitTestResultPrinter::~PrettyUnitTestResultPrinter
+55484 4 2979 95
+FUNC 55488 64 0 testing::internal::TestEventRepeater::OnTestProgramStart
+55488 10 3263 95
+55498 14 3263 95
+554ac c 192 139
+554b8 8 3263 95
+554c0 1c 3263 95
+554dc 10 3263 95
+FUNC 554ec 64 0 testing::internal::TestEventRepeater::OnEnvironmentsSetUpStart
+554ec 10 3264 95
+554fc 14 3264 95
+55510 c 192 139
+5551c 8 3264 95
+55524 1c 3264 95
+55540 10 3264 95
+FUNC 55550 64 0 testing::internal::TestEventRepeater::OnTestCaseStart
+55550 10 3265 95
+55560 14 3265 95
+55574 c 192 139
+55580 8 3265 95
+55588 1c 3265 95
+555a4 10 3265 95
+FUNC 555b4 64 0 testing::internal::TestEventRepeater::OnTestStart
+555b4 10 3266 95
+555c4 14 3266 95
+555d8 c 192 139
+555e4 8 3266 95
+555ec 1c 3266 95
+55608 10 3266 95
+FUNC 55618 64 0 testing::internal::TestEventRepeater::OnTestPartResult
+55618 10 3267 95
+55628 14 3267 95
+5563c c 192 139
+55648 8 3267 95
+55650 1c 3267 95
+5566c 10 3267 95
+FUNC 5567c 64 0 testing::internal::TestEventRepeater::OnEnvironmentsTearDownStart
+5567c 10 3268 95
+5568c 14 3268 95
+556a0 c 192 139
+556ac 8 3268 95
+556b4 1c 3268 95
+556d0 10 3268 95
+FUNC 556e0 80 0 testing::internal::TestEventRepeater::OnEnvironmentsSetUpEnd
+556e0 14 3269 95
+556f4 10 3269 95
+55704 4 192 139
+55708 4 3269 95
+5570c c 192 139
+55718 8 3269 95
+55720 4 3269 95
+55724 8 202 139
+5572c 20 3269 95
+5574c 14 3269 95
+FUNC 55760 80 0 testing::internal::TestEventRepeater::OnEnvironmentsTearDownEnd
+55760 14 3270 95
+55774 10 3270 95
+55784 4 192 139
+55788 4 3270 95
+5578c c 192 139
+55798 8 3270 95
+557a0 4 3270 95
+557a4 8 202 139
+557ac 20 3270 95
+557cc 14 3270 95
+FUNC 557e0 80 0 testing::internal::TestEventRepeater::OnTestEnd
+557e0 14 3271 95
+557f4 10 3271 95
+55804 4 192 139
+55808 4 3271 95
+5580c c 192 139
+55818 8 3271 95
+55820 4 3271 95
+55824 8 202 139
+5582c 20 3271 95
+5584c 14 3271 95
+FUNC 55860 80 0 testing::internal::TestEventRepeater::OnTestCaseEnd
+55860 14 3272 95
+55874 10 3272 95
+55884 4 192 139
+55888 4 3272 95
+5588c c 192 139
+55898 8 3272 95
+558a0 4 3272 95
+558a4 8 202 139
+558ac 20 3272 95
+558cc 14 3272 95
+FUNC 558e0 80 0 testing::internal::TestEventRepeater::OnTestProgramEnd
+558e0 14 3273 95
+558f4 10 3273 95
+55904 4 192 139
+55908 4 3273 95
+5590c c 192 139
+55918 8 3273 95
+55920 4 3273 95
+55924 8 202 139
+5592c 20 3273 95
+5594c 14 3273 95
+FUNC 55960 6c 0 testing::internal::TestEventRepeater::OnTestIterationStart
+55960 10 3279 95
+55970 8 3279 95
+55978 4 3280 95
+5597c 8 3279 95
+55984 4 3280 95
+55988 c 192 139
+55994 8 3281 95
+5599c 4 3282 95
+559a0 4 3282 95
+559a4 4 3281 95
+559a8 4 3282 95
+559ac 10 3282 95
+559bc 10 3285 95
+FUNC 559cc 88 0 testing::internal::TestEventRepeater::OnTestIterationEnd
+559cc 14 3288 95
+559e0 10 3289 95
+559f0 8 192 139
+559f8 4 3290 95
+559fc c 192 139
+55a08 8 3290 95
+55a10 4 3290 95
+55a14 8 202 139
+55a1c 4 3291 95
+55a20 8 3290 95
+55a28 8 3291 95
+55a30 10 3291 95
+55a40 14 3294 95
+FUNC 55a54 84 0 testing::internal::PrintOnOneLine
+55a54 10 4788 95
+55a64 4 4788 95
+55a68 4 4789 95
+55a6c 4 4796 95
+55a70 4 4789 95
+55a74 4 4796 95
+55a78 8 4790 95
+55a80 8 4791 95
+55a88 8 4804 95
+55a90 4 4792 95
+55a94 4 4804 95
+55a98 8 4792 95
+55aa0 8 4795 95
+55aa8 4 4796 95
+55aac 4 4797 95
+55ab0 8 4796 95
+55ab8 4 4800 95
+55abc 4 4799 95
+55ac0 8 4790 95
+55ac8 10 4804 95
+FUNC 55ad8 60 0 testing::internal::SumOverTestCaseList
+55ad8 c 325 95
+55ae4 4 328 95
+55ae8 4 325 95
+55aec 4 327 95
+55af0 4 325 95
+55af4 c 192 139
+55b00 8 328 95
+55b08 4 329 95
+55b0c 4 328 95
+55b10 8 329 95
+55b18 4 329 95
+55b1c 8 328 95
+55b24 14 332 95
+FUNC 55b38 30 0 testing::internal::StreamingListener::~StreamingListener
+55b38 c 1044 91
+55b44 8 1044 91
+55b4c 8 1153 87
+55b54 c 1155 87
+55b60 8 1044 91
+FUNC 55b68 24 0 testing::internal::StreamingListener::~StreamingListener
+55b68 c 1044 91
+55b74 8 1044 91
+55b7c 4 1044 91
+55b80 8 1044 91
+55b88 4 1044 91
+FUNC 55b8c 5c 0 std::allocator<testing::internal::edit_distance::EditType>::_M_allocate
+55b8c 8 341 101
+55b94 8 342 101
+55b9c 4 341 101
+55ba0 4 342 101
+55ba4 c 343 101
+55bb0 8 343 101
+55bb8 4 356 101
+55bbc 4 346 101
+55bc0 c 347 101
+55bcc 4 348 101
+55bd0 10 352 101
+55be0 8 357 101
+FUNC 55be8 a8 0 testing::internal::UnitTestOptions::PatternMatchesString
+55be8 c 445 95
+55bf4 8 445 95
+55bfc 30 446 95
+55c2c 10 449 95
+55c3c c 451 95
+55c48 10 453 95
+55c58 c 453 95
+55c64 8 453 95
+55c6c c 456 95
+55c78 8 457 95
+55c80 4 451 95
+55c84 c 459 95
+FUNC 55c90 58 0 testing::internal::UnitTestOptions::MatchesFilter
+55c90 10 462 95
+55ca0 8 462 95
+55ca8 10 465 95
+55cb8 4 465 95
+55cbc c 470 95
+55cc8 4 473 95
+55ccc 4 478 95
+55cd0 4 479 95
+55cd4 14 480 95
+FUNC 55ce8 c 0 testing::internal::GetTestTypeId
+55ce8 c 604 95
+FUNC 55cf4 24 0 testing::internal::UnitTestImpl::successful_test_count
+55cf4 4 733 95
+55cf8 8 734 95
+55d00 4 733 95
+55d04 8 734 95
+55d0c 4 734 95
+55d10 8 735 95
+FUNC 55d18 24 0 testing::internal::UnitTestImpl::failed_test_count
+55d18 4 738 95
+55d1c 8 739 95
+55d24 4 738 95
+55d28 8 739 95
+55d30 4 739 95
+55d34 8 740 95
+FUNC 55d3c 24 0 testing::internal::UnitTestImpl::reportable_disabled_test_count
+55d3c 4 743 95
+55d40 8 745 95
+55d48 4 743 95
+55d4c 8 745 95
+55d54 4 745 95
+55d58 8 746 95
+FUNC 55d60 24 0 testing::internal::UnitTestImpl::reportable_test_count
+55d60 4 754 95
+55d64 8 755 95
+55d6c 4 754 95
+55d70 8 755 95
+55d78 4 755 95
+55d7c 8 756 95
+FUNC 55d84 24 0 testing::internal::UnitTestImpl::test_to_run_count
+55d84 4 764 95
+55d88 8 765 95
+55d90 4 764 95
+55d94 8 765 95
+55d9c 4 765 95
+55da0 8 766 95
+FUNC 55da8 30 0 testing::internal::GetTimeInMillis
+55da8 4 784 95
+55dac 4 820 95
+55db0 4 784 95
+55db4 8 820 95
+55dbc 8 821 95
+55dc4 8 825 95
+55dcc 4 821 95
+55dd0 8 825 95
+FUNC 55dd8 30 0 testing::internal::String::CStringEquals
+55dd8 4 872 95
+55ddc 4 873 95
+55de0 4 872 95
+55de4 4 873 95
+55de8 4 875 95
+55dec 4 875 95
+55df0 c 877 95
+55dfc c 878 95
+FUNC 55e08 14 0 testing::AssertionSuccess
+55e08 4 277 82
+55e0c 4 971 95
+55e10 4 277 82
+55e14 4 1139 87
+55e18 4 973 95
+FUNC 55e1c 10 0 testing::AssertionFailure
+55e1c 4 976 95
+55e20 4 277 82
+55e24 4 1139 87
+55e28 4 978 95
+FUNC 55e2c 30 0 testing::internal::String::CaseInsensitiveCStringEquals
+55e2c 4 1866 95
+55e30 4 1868 95
+55e34 4 1866 95
+55e38 4 1867 95
+55e3c 4 1870 95
+55e40 4 1869 95
+55e44 4 2274 87
+55e48 8 1871 95
+55e50 c 1872 95
+FUNC 55e5c 58 0 testing::TestResult::GetTestPartResult
+55e5c 8 1990 95
+55e64 4 1991 95
+55e68 18 192 139
+55e80 8 1991 95
+55e88 8 167 139
+55e90 c 45 138
+55e9c 4 2340 87
+55ea0 4 203 139
+55ea4 4 1994 95
+55ea8 8 203 139
+55eb0 4 1994 95
+FUNC 55eb4 58 0 testing::TestResult::GetTestProperty
+55eb4 8 1999 95
+55ebc 4 2000 95
+55ec0 18 192 139
+55ed8 8 2000 95
+55ee0 8 167 139
+55ee8 c 45 138
+55ef4 4 2340 87
+55ef8 4 203 139
+55efc 4 2003 95
+55f00 8 203 139
+55f08 4 2003 95
+FUNC 55f0c 70 0 testing::TestResult::Failed
+55f0c 14 2131 95
+55f20 4 2162 95
+55f24 4 2132 95
+55f28 10 192 139
+55f38 4 2162 95
+55f3c 8 2132 95
+55f44 14 2133 95
+55f58 8 2132 95
+55f60 8 2136 95
+55f68 4 2134 95
+55f6c 10 2137 95
+FUNC 55f7c 18 0 testing::TestCase::TestFailed
+55f7c 4 689 82
+55f80 4 892 82
+55f84 8 892 82
+55f8c 8 893 82
+FUNC 55f94 2c 0 testing::TestCase::TestPassed
+55f94 8 886 82
+55f9c 4 689 82
+55fa0 4 887 82
+55fa4 c 540 82
+55fb0 4 887 82
+55fb4 c 888 82
+FUNC 55fc0 30 0 testing::TestResult::HasFatalFailure
+55fc0 8 2145 95
+55fc8 4 285 91
+55fcc 8 286 91
+55fd4 4 287 91
+55fd8 c 288 91
+55fe4 4 2146 95
+55fe8 8 2147 95
+FUNC 55ff0 30 0 testing::TestResult::HasNonfatalFailure
+55ff0 8 2155 95
+55ff8 4 285 91
+55ffc 8 286 91
+56004 4 287 91
+56008 c 288 91
+56014 4 2156 95
+56018 8 2157 95
+FUNC 56020 50 0 testing::internal::UnitTestImpl::RegisterParameterizedTests
+56020 c 2571 95
+5602c 10 2573 95
+5603c c 600 86
+56048 14 602 86
+5605c 8 2575 95
+56064 c 2578 95
+FUNC 56070 28 0 testing::TestCase::UnshuffleTests
+56070 4 2753 95
+56074 c 192 139
+56080 8 2753 95
+56088 4 2754 95
+5608c 8 2753 95
+56094 4 2756 95
+FUNC 56098 44 0 testing::internal::GetAnsiColorCode
+56098 18 2859 95
+560b0 8 2863 95
+560b8 c 2861 95
+560c4 c 2862 95
+560d0 8 2860 95
+560d8 4 2865 95
+FUNC 560dc 154 0 testing::internal::ShouldUseColor
+560dc 4 2870 95
+560e0 4 2873 95
+560e4 8 2870 95
+560ec 8 2870 95
+560f4 18 2873 95
+5610c 10 2328 87
+5611c 10 2882 95
+5612c 4 2887 95
+56130 14 2883 95
+56144 4 2882 95
+56148 14 2884 95
+5615c 4 2883 95
+56160 14 2885 95
+56174 4 2884 95
+56178 14 2886 95
+5618c 4 2885 95
+56190 14 2887 95
+561a4 4 2886 95
+561a8 14 2888 95
+561bc 8 2889 95
+561c4 14 2893 95
+561d8 4 2895 95
+561dc 14 2894 95
+561f0 4 2893 95
+561f4 14 2895 95
+56208 4 2894 95
+5620c 8 2896 95
+56214 8 2900 95
+5621c 8 2896 95
+56224 c 2900 95
+FUNC 56230 134 0 testing::internal::ColoredPrintf
+56230 10 2906 95
+56240 4 2908 95
+56244 4 2906 95
+56248 4 2908 95
+5624c 4 2915 95
+56250 1c 2908 95
+5626c 4 2906 95
+56270 4 2915 95
+56274 38 2906 95
+562ac 4 2915 95
+562b0 10 2270 87
+562c0 4 2271 87
+562c4 4 2915 95
+562c8 8 2915 95
+562d0 14 2915 95
+562e4 4 2916 95
+562e8 4 2916 95
+562ec 8 2916 95
+562f4 20 2921 95
+56314 c 2947 95
+56320 c 2947 95
+5632c 1c 2948 95
+56348 c 2949 95
+56354 10 2952 95
+FUNC 56364 38 0 testing::internal::PrettyUnitTestResultPrinter::OnEnvironmentsSetUpStart
+56364 4 3042 95
+56368 8 3043 95
+56370 4 3042 95
+56374 4 3043 95
+56378 4 3043 95
+5637c c 3044 95
+56388 4 3045 95
+5638c 4 3046 95
+56390 c 3045 95
+FUNC 5639c 54 0 testing::internal::PrettyUnitTestResultPrinter::OnTestStart
+5639c 4 3061 95
+563a0 4 3062 95
+563a4 8 3061 95
+563ac 4 3061 95
+563b0 c 3062 95
+563bc 14 2983 95
+563d0 8 3064 95
+563d8 4 3066 95
+563dc 4 3065 95
+563e0 4 3066 95
+563e4 c 3065 95
+FUNC 563f0 38 0 testing::internal::PrettyUnitTestResultPrinter::OnEnvironmentsTearDownStart
+563f0 4 3112 95
+563f4 8 3113 95
+563fc 4 3112 95
+56400 4 3113 95
+56404 4 3113 95
+56408 c 3114 95
+56414 4 3115 95
+56418 4 3116 95
+5641c c 3115 95
+FUNC 56428 c0 0 testing::internal::PrintFullTestCommentIfPresent
+56428 10 2959 95
+56438 4 1144 87
+5643c 4 662 82
+56440 8 660 82
+56448 4 1144 87
+5644c 4 670 82
+56450 8 668 82
+56458 18 2963 95
+56470 10 2964 95
+56480 4 2965 95
+56484 18 2966 95
+5649c 4 2967 95
+564a0 10 2968 95
+564b0 4 2970 95
+564b4 4 2971 95
+564b8 8 2974 95
+564c0 8 2971 95
+564c8 4 2974 95
+564cc c 2971 95
+564d8 10 2974 95
+FUNC 564e8 7c 0 testing::internal::TestEventRepeater::Release
+564e8 10 3231 95
+564f8 14 192 139
+5650c 4 3232 95
+56510 8 3232 95
+56518 4 202 139
+5651c c 3233 95
+56528 c 580 139
+56534 4 269 100
+56538 10 584 139
+56548 8 3232 95
+56550 4 3239 95
+56554 10 3240 95
+FUNC 56564 50 0 testing::TestEventListeners::TestEventListeners
+56564 c 3842 95
+56570 4 3842 95
+56574 8 3845 95
+5657c 4 67 139
+56580 4 3188 95
+56584 4 67 139
+56588 4 3188 95
+5658c 4 481 101
+56590 c 3188 95
+5659c c 3845 95
+565a8 c 3846 95
+FUNC 565b4 24 0 testing::TestEventListeners::~TestEventListeners
+565b4 8 3848 95
+565bc 8 3848 95
+565c4 4 3848 95
+565c8 8 3848 95
+565d0 8 3848 95
+FUNC 565d8 2c 0 testing::TestEventListeners::Release
+565d8 c 3862 95
+565e4 8 3863 95
+565ec c 3864 95
+565f8 4 3865 95
+565fc 8 3866 95
+FUNC 56604 c 0 testing::TestEventListeners::SuppressEventForwarding
+56604 4 3912 95
+56608 4 3196 95
+5660c 4 3913 95
+FUNC 56610 18 0 testing::UnitTest::total_test_case_count
+56610 4 1280 82
+56614 c 192 139
+56620 8 3958 95
+FUNC 56628 8 0 testing::UnitTest::successful_test_count
+56628 8 3968 95
+FUNC 56630 8 0 testing::UnitTest::failed_test_count
+56630 8 3972 95
+FUNC 56638 8 0 testing::UnitTest::reportable_disabled_test_count
+56638 8 3976 95
+FUNC 56640 8 0 testing::UnitTest::reportable_test_count
+56640 8 3986 95
+FUNC 56648 8 0 testing::UnitTest::test_to_run_count
+56648 8 3993 95
+FUNC 56650 c 0 testing::UnitTest::original_working_dir
+56650 4 4217 95
+56654 8 4219 95
+FUNC 5665c 14 0 testing::internal::UnitTestImpl::SuppressTestEventsIfInSubprocess
+5665c 8 4345 95
+56664 4 3912 95
+56668 4 3196 95
+5666c 4 4347 95
+FUNC 56670 30 0 testing::internal::TestCaseNameIs::operator()
+56670 8 4429 95
+56678 4 4430 95
+5667c 4 4429 95
+56680 4 4430 95
+56684 c 4430 95
+56690 8 4430 95
+56698 8 4431 95
+FUNC 566a0 7c 0 testing::internal::WriteToShardStatusFileIfNeeded
+566a0 c 4635 95
+566ac 10 2328 87
+566bc 8 4637 95
+566c4 c 2298 87
+566d0 8 4639 95
+566d8 14 4643 95
+566ec 10 4644 95
+566fc 8 4645 95
+56704 8 4649 95
+5670c 4 4647 95
+56710 c 4649 95
+FUNC 5671c 144 0 testing::internal::UnitTestImpl::ListTestsMatchingFilter
+5671c 14 4807 95
+56730 4 4832 95
+56734 4 4830 95
+56738 4 4832 95
+5673c 8 4807 95
+56744 4 4811 95
+56748 4 4830 95
+5674c 8 4832 95
+56754 c 192 139
+56760 8 4811 95
+56768 4 4815 95
+5676c 4 4812 95
+56770 4 4813 95
+56774 c 192 139
+56780 8 4815 95
+56788 4 4817 95
+5678c 8 4818 95
+56794 4 4819 95
+56798 10 4821 95
+567a8 4 1144 87
+567ac 4 797 82
+567b0 8 4822 95
+567b8 10 4823 95
+567c8 4 1144 87
+567cc 4 799 82
+567d0 8 797 82
+567d8 4 4826 95
+567dc 8 4828 95
+567e4 c 4830 95
+567f0 4 1144 87
+567f4 4 668 82
+567f8 8 4831 95
+56800 c 4832 95
+5680c 4 1144 87
+56810 4 670 82
+56814 8 668 82
+5681c 4 4835 95
+56820 c 4837 95
+5682c 8 4815 95
+56834 8 4811 95
+5683c 4 4841 95
+56840 8 4842 95
+56848 4 4841 95
+5684c c 4842 95
+56858 8 4841 95
+FUNC 56860 4c 0 testing::internal::UnitTestImpl::UnshuffleTests
+56860 c 4892 95
+5686c 4 4892 95
+56870 4 4893 95
+56874 c 192 139
+56880 8 4893 95
+56888 8 4895 95
+56890 4 202 139
+56894 4 4897 95
+56898 8 4893 95
+568a0 c 4899 95
+FUNC 568ac 4 0 testing::internal::IsTrue
+568ac 4 4924 95
+FUNC 568b0 8 0 testing::internal::AlwaysTrue
+568b0 8 4934 95
+FUNC 568b8 5c 0 testing::internal::SkipPrefix
+568b8 14 4939 95
+568cc 4 4939 95
+568d0 4 4940 95
+568d4 4 4941 95
+568d8 4 4940 95
+568dc 10 4941 95
+568ec 4 4945 95
+568f0 4 4941 95
+568f4 4 4942 95
+568f8 4 4943 95
+568fc 4 4942 95
+56900 14 4946 95
+FUNC 56914 b8 0 testing::internal::HasGoogleTestFlagPrefix
+56914 c 5043 95
+56920 8 5043 95
+56928 14 5044 95
+5693c 4 5047 95
+56940 14 5047 95
+56954 8 5046 95
+5695c 14 5045 95
+56970 4 5044 95
+56974 14 5046 95
+56988 4 5045 95
+5698c 8 5047 95
+56994 14 5048 95
+569a8 4 5047 95
+569ac 14 5049 95
+569c0 c 5050 95
+FUNC 569cc 30 0 testing::internal::GetElementOr<int>
+569cc 4 302 91
+569d0 4 303 91
+569d4 4 303 91
+569d8 10 192 139
+569e8 4 303 91
+569ec 8 303 91
+569f4 4 303 91
+569f8 4 304 91
+FUNC 569fc 3c 0 testing::TestCase::GetTestInfo
+569fc 4 2693 95
+56a00 4 2694 95
+56a04 8 2693 95
+56a0c 4 2693 95
+56a10 8 2694 95
+56a18 4 2695 95
+56a1c 4 2695 95
+56a20 8 2695 95
+56a28 10 2696 95
+FUNC 56a38 3c 0 testing::TestCase::GetMutableTestInfo
+56a38 4 2700 95
+56a3c 4 2701 95
+56a40 8 2700 95
+56a48 4 2700 95
+56a4c 8 2701 95
+56a54 4 2702 95
+56a58 4 2702 95
+56a5c 8 2702 95
+56a64 10 2703 95
+FUNC 56a74 40 0 testing::UnitTest::GetTestCase
+56a74 4 4015 95
+56a78 4 587 91
+56a7c 8 4015 95
+56a84 4 4015 95
+56a88 4 1280 82
+56a8c 8 587 91
+56a94 4 588 91
+56a98 4 588 91
+56a9c 8 588 91
+56aa4 10 4017 95
+FUNC 56ab4 5c 0 testing::internal::CountIf<std::vector<testing::TestCase*>, bool (*)(const testing::TestCase*)>
+56ab4 10 282 91
+56ac4 4 285 91
+56ac8 8 282 91
+56ad0 c 286 91
+56adc 10 287 91
+56aec 10 288 91
+56afc 14 291 91
+FUNC 56b10 10 0 testing::internal::UnitTestImpl::failed_test_case_count
+56b10 10 718 95
+FUNC 56b20 3c 0 testing::internal::UnitTestImpl::Failed
+56b20 c 580 91
+56b2c 4 580 91
+56b30 c 581 91
+56b3c 4 581 91
+56b40 8 582 91
+56b48 4 581 91
+56b4c 10 582 91
+FUNC 56b5c 20 0 testing::UnitTest::Passed
+56b5c 8 4007 95
+56b64 c 576 91
+56b70 c 4007 95
+FUNC 56b7c 10 0 testing::internal::UnitTestImpl::test_case_to_run_count
+56b7c 10 729 95
+FUNC 56b8c 8 0 testing::UnitTest::test_case_to_run_count
+56b8c 8 3963 95
+FUNC 56b94 50 0 std::operator<< <char, std::char_traits<char>, long int>
+56b94 c 80 107
+56ba0 4 80 107
+56ba4 4 82 107
+56ba8 8 42 107
+56bb0 c 82 107
+56bbc 4 42 107
+56bc0 8 42 107
+56bc8 c 42 107
+56bd4 10 84 107
+FUNC 56be4 1c 0 std::priv::_Impl_vector<testing::internal::edit_distance::EditType, std::allocator<testing::internal::edit_distance::EditType> >::~_Impl_vector
+56be4 8 304 139
+56bec 4 87 139
+56bf0 4 88 139
+56bf4 8 323 101
+56bfc 4 304 139
+FUNC 56c00 58 0 std::operator==<char, std::char_traits<char>, std::allocator<char> >
+56c00 c 320 134
+56c0c 4 320 134
+56c10 10 229 140
+56c20 4 324 134
+56c24 4 400 131
+56c28 4 324 134
+56c2c 4 400 131
+56c30 8 324 134
+56c38 8 226 140
+56c40 8 324 134
+56c48 10 325 134
+FUNC 56c58 5c 0 testing::internal::CountIf<std::vector<testing::TestInfo*>, bool (*)(const testing::TestInfo*)>
+56c58 10 282 91
+56c68 4 285 91
+56c6c 8 282 91
+56c74 c 286 91
+56c80 10 287 91
+56c90 10 288 91
+56ca0 14 291 91
+FUNC 56cb4 10 0 testing::TestCase::successful_test_count
+56cb4 10 2632 95
+FUNC 56cc4 10 0 testing::TestCase::failed_test_count
+56cc4 10 2637 95
+FUNC 56cd4 28 0 testing::internal::TestCaseFailed
+56cd4 8 340 95
+56cdc 4 803 82
+56ce0 4 341 95
+56ce4 4 830 82
+56ce8 8 341 95
+56cf0 c 342 95
+FUNC 56cfc 104 0 testing::internal::PrettyUnitTestResultPrinter::PrintFailedTests
+56cfc 1c 3119 95
+56d18 4 3119 95
+56d1c 4 3120 95
+56d20 4 3121 95
+56d24 4 3135 95
+56d28 4 3136 95
+56d2c 4 3135 95
+56d30 4 3136 95
+56d34 8 3125 95
+56d3c 8 3125 95
+56d44 c 3126 95
+56d50 4 3127 95
+56d54 4 3126 95
+56d58 4 3127 95
+56d5c 4 3127 95
+56d60 8 3127 95
+56d68 10 192 139
+56d78 8 3130 95
+56d80 10 3131 95
+56d90 8 3132 95
+56d98 c 540 82
+56da4 4 3132 95
+56da8 8 3130 95
+56db0 8 3125 95
+56db8 c 3135 95
+56dc4 10 3136 95
+56dd4 8 3137 95
+56ddc c 3138 95
+56de8 18 3141 95
+FUNC 56e00 10 0 testing::TestCase::reportable_disabled_test_count
+56e00 10 2642 95
+FUNC 56e10 10 0 testing::TestCase::reportable_test_count
+56e10 10 2652 95
+FUNC 56e20 10 0 testing::TestCase::test_to_run_count
+56e20 10 2657 95
+FUNC 56e30 4 0 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string
+56e30 4 156 132
+FUNC 56e34 3c 0 testing::internal::AssertHelper::~AssertHelper
+56e34 c 358 95
+56e40 c 359 95
+56e4c 8 156 132
+56e54 4 359 95
+56e58 8 360 95
+56e60 4 359 95
+56e64 c 360 95
+FUNC 56e70 30 0 testing::TestPartResult::~TestPartResult
+56e70 c 47 81
+56e7c 4 47 81
+56e80 14 156 132
+56e94 8 47 81
+56e9c 4 156 132
+FUNC 56ea0 10 0 testing::internal::XmlUnitTestResultPrinter::~XmlUnitTestResultPrinter
+56ea0 c 3299 95
+56eac 4 156 132
+FUNC 56eb0 24 0 testing::internal::XmlUnitTestResultPrinter::~XmlUnitTestResultPrinter
+56eb0 c 3299 95
+56ebc 8 3299 95
+56ec4 4 3299 95
+56ec8 8 3299 95
+56ed0 4 3299 95
+FUNC 56ed4 68 0 std::priv::_Impl_vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::~_Impl_vector
+56ed4 10 304 139
+56ee4 c 304 139
+56ef0 c 191 103
+56efc 10 156 132
+56f0c 8 87 139
+56f14 4 88 139
+56f18 c 304 139
+56f24 8 323 101
+56f2c 10 304 139
+FUNC 56f3c 58 0 testing::internal::scoped_ptr<testing::internal::InternalRunDeathTestFlag>::reset
+56f3c 10 1152 87
+56f4c 14 1153 87
+56f60 4 1155 87
+56f64 8 244 83
+56f6c 4 2314 87
+56f70 8 156 132
+56f78 8 1155 87
+56f80 4 1157 87
+56f84 10 1159 87
+FUNC 56f94 1c 0 std::priv::_Vector_base<void*, std::allocator<void*> >::~_Vector_base
+56f94 4 86 139
+56f98 8 87 139
+56fa0 4 88 139
+56fa4 8 323 101
+56fac 4 89 139
+FUNC 56fb0 50 0 testing::internal::TestEventRepeater::~TestEventRepeater
+56fb0 14 3222 95
+56fc4 14 3222 95
+56fd8 8 60 98
+56fe0 c 61 98
+56fec 4 304 139
+56ff0 c 3224 95
+56ffc 4 304 139
+FUNC 57000 24 0 testing::internal::TestEventRepeater::~TestEventRepeater
+57000 c 3222 95
+5700c 4 3222 95
+57010 4 3224 95
+57014 4 3224 95
+57018 8 3224 95
+57020 4 3224 95
+FUNC 57024 1c 0 std::priv::_Vector_base<double, std::allocator<double> >::~_Vector_base
+57024 4 86 139
+57028 8 87 139
+57030 4 88 139
+57034 8 323 101
+5703c 4 89 139
+FUNC 57040 1c 0 std::priv::_Vector_base<long unsigned int, std::allocator<long unsigned int> >::~_Vector_base
+57040 4 86 139
+57044 8 87 139
+5704c 4 88 139
+57050 8 323 101
+57058 4 89 139
+FUNC 5705c f0 0 std::priv::_Impl_vector<long unsigned int, std::allocator<long unsigned int> >::push_back
+5705c 14 376 139
+57070 14 380 139
+57084 4 126 103
+57088 14 382 139
+5709c 10 192 139
+570ac c 176 139
+570b8 4 175 139
+570bc 10 176 139
+570cc 4 356 101
+570d0 8 346 101
+570d8 4 177 139
+570dc c 347 101
+570e8 4 348 101
+570ec 4 352 101
+570f0 4 353 101
+570f4 4 352 101
+570f8 10 112 138
+57108 10 481 100
+57118 8 657 139
+57120 4 319 101
+57124 4 323 101
+57128 4 118 138
+5712c 4 666 139
+57130 4 667 139
+57134 4 668 139
+57138 14 388 139
+FUNC 5714c 60 0 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::reserve
+5714c 4 158 130
+57150 4 159 130
+57154 4 158 130
+57158 4 159 130
+5715c 10 600 130
+5716c 10 400 131
+5717c 4 72 132
+57180 4 162 130
+57184 4 72 132
+57188 4 72 132
+5718c 8 72 132
+57194 8 163 130
+5719c 4 167 130
+571a0 4 166 130
+571a4 8 167 130
+FUNC 571ac f0 0 std::priv::_Impl_vector<int, std::allocator<int> >::push_back
+571ac 14 376 139
+571c0 14 380 139
+571d4 4 126 103
+571d8 14 382 139
+571ec 10 192 139
+571fc c 176 139
+57208 4 175 139
+5720c 10 176 139
+5721c 4 356 101
+57220 8 346 101
+57228 4 177 139
+5722c c 347 101
+57238 4 348 101
+5723c 4 352 101
+57240 4 353 101
+57244 4 352 101
+57248 10 112 138
+57258 10 481 100
+57268 8 657 139
+57270 4 319 101
+57274 4 323 101
+57278 4 118 138
+5727c 4 666 139
+57280 4 667 139
+57284 4 668 139
+57288 14 388 139
+FUNC 5729c 38 0 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator=
+5729c 4 347 131
+572a0 4 348 131
+572a4 c 347 131
+572b0 4 347 131
+572b4 4 348 131
+572b8 c 349 131
+572c4 10 351 131
+FUNC 572d4 50 0 std::priv::_Impl_vector<testing::TestPartResult, std::allocator<testing::TestPartResult> >::clear
+572d4 18 650 139
+572ec 10 630 139
+572fc 4 57 103
+57300 4 191 103
+57304 4 57 103
+57308 8 191 103
+57310 4 615 139
+57314 10 652 139
+FUNC 57324 68 0 testing::TestResult::Clear
+57324 10 2123 95
+57334 4 228 143
+57338 4 2123 95
+5733c c 228 143
+57348 c 630 139
+57354 c 156 132
+57360 4 191 103
+57364 4 156 132
+57368 8 191 103
+57370 4 615 139
+57374 4 2126 95
+57378 4 2127 95
+5737c 10 2128 95
+FUNC 5738c 44 0 testing::TestCase::ClearResult
+5738c c 2741 95
+57398 4 2741 95
+5739c 10 2742 95
+573ac 8 60 98
+573b4 10 740 82
+573c4 c 2744 95
+FUNC 573d0 194 0 testing::Test::~Test
+573d0 1c 2180 95
+573ec 8 2180 95
+573f4 c 2181 95
+57400 8 186 91
+57408 4 189 91
+5740c 4 190 91
+57410 4 192 91
+57414 4 186 91
+57418 8 187 91
+57420 4 193 91
+57424 4 195 91
+57428 4 201 91
+5742c 4 187 91
+57430 c 188 91
+5743c 10 189 91
+5744c 10 190 91
+5745c 8 191 91
+57464 4 192 91
+57468 8 191 91
+57470 c 192 91
+5747c 10 193 91
+5748c c 194 91
+57498 10 195 91
+574a8 c 196 91
+574b4 c 197 91
+574c0 c 198 91
+574cc c 199 91
+574d8 c 200 91
+574e4 10 201 91
+574f4 c 202 91
+57500 30 156 132
+57530 4 2181 95
+57534 14 2182 95
+57548 4 2181 95
+5754c 18 2182 95
+FUNC 57564 10 0 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::append
+57564 4 516 131
+57568 c 517 131
+FUNC 57574 12c 0 std::priv::__find_if<testing::TestCase**, testing::internal::TestCaseNameIs>
+57574 10 159 99
+57584 4 162 99
+57588 4 159 99
+5758c 4 162 99
+57590 8 159 99
+57598 8 164 99
+575a0 14 165 99
+575b4 14 168 99
+575c8 4 166 99
+575cc 4 168 99
+575d0 14 171 99
+575e4 4 169 99
+575e8 4 171 99
+575ec 14 174 99
+57600 4 172 99
+57604 8 174 99
+5760c 8 164 99
+57614 20 178 99
+57634 4 190 99
+57638 8 178 99
+57640 14 180 99
+57654 4 181 99
+57658 18 183 99
+57670 4 184 99
+57674 18 186 99
+5768c 14 192 99
+FUNC 576a0 4c 0 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_range_initialize
+576a0 c 376 131
+576ac 4 376 131
+576b0 4 378 131
+576b4 4 379 131
+576b8 4 376 131
+576bc 4 378 131
+576c0 4 379 131
+576c4 14 148 137
+576d8 4 380 131
+576dc 4 101 103
+576e0 c 382 131
+FUNC 576ec 68 0 testing::internal::AssertHelper::AssertHelper
+576ec c 351 95
+576f8 4 351 95
+576fc 4 355 95
+57700 10 351 95
+57710 4 355 95
+57714 4 1784 82
+57718 4 355 95
+5771c 4 1784 82
+57720 4 1784 82
+57724 c 1784 82
+57730 4 1784 82
+57734 4 1784 82
+57738 4 1784 82
+5773c 4 1784 82
+57740 4 1784 82
+57744 4 355 95
+57748 c 356 95
+FUNC 57754 30 0 testing::internal::UnitTestImpl::CurrentOsStackTraceExceptTop
+57754 4 778 95
+57758 8 780 95
+57760 4 778 95
+57764 8 780 95
+5776c 8 780 95
+57774 10 781 95
+FUNC 57784 70 0 testing::internal::XmlUnitTestResultPrinter::XmlUnitTestResultPrinter
+57784 4 3372 95
+57788 4 3373 95
+5778c 8 3372 95
+57794 4 3373 95
+57798 4 3372 95
+5779c 4 3373 95
+577a0 c 3373 95
+577ac 4 3374 95
+577b0 c 3374 95
+577bc 1c 3375 95
+577d8 8 3376 95
+577e0 8 3377 95
+577e8 c 3379 95
+FUNC 577f4 30 0 testing::internal::OsStackTraceGetter::CurrentStackTrace
+577f4 4 3797 95
+577f8 8 3798 95
+57800 4 3797 95
+57804 8 3798 95
+5780c 8 3798 95
+57814 10 3799 95
+FUNC 57824 e4 0 std::priv::_Impl_vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_M_range_initialize<char const* const*>
+57824 4 699 139
+57828 4 355 114
+5782c c 699 139
+57838 4 342 101
+5783c 4 699 139
+57840 4 342 101
+57844 4 355 114
+57848 8 699 139
+57850 4 342 101
+57854 4 699 139
+57858 4 342 101
+5785c c 343 101
+57868 4 343 101
+5786c 4 346 101
+57870 10 347 101
+57880 8 348 101
+57888 c 352 101
+57894 4 346 101
+57898 4 356 101
+5789c 4 703 139
+578a0 4 702 139
+578a4 4 84 137
+578a8 c 703 139
+578b4 4 139 103
+578b8 8 86 137
+578c0 4 139 103
+578c4 10 139 103
+578d4 10 89 137
+578e4 c 705 139
+578f0 4 704 139
+578f4 14 705 139
+FUNC 57908 24 0 testing::internal::FilePath::FilePath
+57908 c 64 84
+57914 8 64 84
+5791c 4 65 84
+57920 8 66 84
+57928 4 65 84
+FUNC 5792c 7c 0 testing::internal::GetCurrentExecutableName
+5792c 4 381 95
+57930 4 61 84
+57934 8 381 95
+5793c 14 61 84
+57950 4 381 95
+57954 4 381 95
+57958 4 61 84
+5795c 10 387 95
+5796c c 74 84
+57978 8 156 132
+57980 c 390 95
+5798c 8 156 132
+57994 14 391 95
+FUNC 579a8 4c 0 testing::AssertionResult::AssertionResult
+579a8 c 948 95
+579b4 4 948 95
+579b8 8 952 95
+579c0 4 1144 87
+579c4 4 952 95
+579c8 10 952 95
+579d8 8 951 95
+579e0 4 952 95
+579e4 4 1139 87
+579e8 c 953 95
+FUNC 579f4 60 0 std::priv::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int>, std::priv::_Select1st<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int> >, std::priv::_MapTraitsT<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int> >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int> > >::_M_create_node
+579f4 4 315 136
+579f8 4 306 101
+579fc c 315 136
+57a08 4 306 101
+57a0c 4 315 136
+57a10 4 306 101
+57a14 4 307 101
+57a18 4 119 103
+57a1c 4 307 101
+57a20 4 119 103
+57a24 14 68 124
+57a38 4 321 136
+57a3c 4 324 136
+57a40 4 322 136
+57a44 10 324 136
+FUNC 57a54 54 0 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string
+57a54 c 183 131
+57a60 4 112 132
+57a64 8 481 101
+57a6c 8 400 131
+57a74 8 205 131
+57a7c c 604 130
+57a88 4 209 131
+57a8c c 208 131
+57a98 4 209 131
+57a9c 4 210 131
+57aa0 8 208 131
+FUNC 57aa8 78 0 testing::internal::UnitTestOptions::GetOutputFormat
+57aa8 14 396 95
+57abc 4 396 95
+57ac0 4 398 95
+57ac4 10 398 95
+57ad4 10 400 95
+57ae4 4 403 95
+57ae8 14 403 95
+57afc 4 112 132
+57b00 4 225 131
+57b04 4 481 101
+57b08 8 225 131
+57b10 10 404 95
+FUNC 57b20 9c 0 testing::internal::XmlUnitTestResultPrinter::RemoveInvalidXmlCharacters
+57b20 c 3473 95
+57b2c 4 3474 95
+57b30 4 3473 95
+57b34 4 3474 95
+57b38 4 3473 95
+57b3c 4 3473 95
+57b40 4 3474 95
+57b44 4 400 131
+57b48 4 3475 95
+57b4c 4 400 131
+57b50 c 3475 95
+57b5c c 3476 95
+57b68 4 3477 95
+57b6c 8 3314 95
+57b74 8 3309 95
+57b7c 8 3314 95
+57b84 8 3309 95
+57b8c 8 3314 95
+57b94 8 3476 95
+57b9c c 3478 95
+57ba8 14 3481 95
+FUNC 57bbc ac 0 testing::internal::StringStreamToString
+57bbc 4 1943 95
+57bc0 4 75 127
+57bc4 8 1943 95
+57bcc 8 75 127
+57bd4 8 1943 95
+57bdc 4 1943 95
+57be0 4 75 127
+57be4 10 1948 95
+57bf4 4 530 131
+57bf8 4 1948 95
+57bfc 4 400 131
+57c00 4 1949 95
+57c04 4 530 131
+57c08 4 1949 95
+57c0c 8 530 131
+57c14 4 1949 95
+57c18 8 1950 95
+57c20 4 1951 95
+57c24 4 530 131
+57c28 4 1951 95
+57c2c 10 530 131
+57c3c 4 453 131
+57c40 8 1950 95
+57c48 8 156 132
+57c50 18 1959 95
+FUNC 57c68 28 0 testing::Message::GetString
+57c68 c 942 95
+57c74 4 942 95
+57c78 8 943 95
+57c80 10 944 95
+FUNC 57c90 58 0 testing::Message::Message
+57c90 c 907 95
+57c9c 10 907 95
+57cac 8 907 95
+57cb4 4 1139 87
+57cb8 14 39 107
+57ccc 8 910 95
+57cd4 4 39 107
+57cd8 4 910 95
+57cdc c 911 95
+FUNC 57ce8 1a4 0 testing::Test::Test
+57ce8 4 2175 95
+57cec 4 2176 95
+57cf0 18 2175 95
+57d08 4 2175 95
+57d0c c 2176 95
+57d18 4 164 91
+57d1c 4 2176 95
+57d20 4 164 91
+57d24 4 2176 95
+57d28 8 164 91
+57d30 c 164 91
+57d3c 4 164 91
+57d40 4 164 91
+57d44 8 164 91
+57d4c 4 164 91
+57d50 4 164 91
+57d54 c 164 91
+57d60 c 164 91
+57d6c c 164 91
+57d78 c 164 91
+57d84 4 165 91
+57d88 8 168 91
+57d90 8 165 91
+57d98 c 166 91
+57da4 c 167 91
+57db0 8 168 91
+57db8 10 169 91
+57dc8 c 170 91
+57dd4 4 171 91
+57dd8 4 170 91
+57ddc c 171 91
+57de8 10 172 91
+57df8 4 173 91
+57dfc 8 174 91
+57e04 8 173 91
+57e0c 8 174 91
+57e14 4 175 91
+57e18 8 180 91
+57e20 8 175 91
+57e28 c 176 91
+57e34 c 177 91
+57e40 c 178 91
+57e4c c 179 91
+57e58 8 180 91
+57e60 c 181 91
+57e6c 4 2176 95
+57e70 1c 2177 95
+FUNC 57e8c 120 0 testing::internal::PrintColorEncoded
+57e8c 10 5063 95
+57e9c 4 5064 95
+57ea0 4 5077 95
+57ea4 4 5082 95
+57ea8 4 5064 95
+57eac 4 5063 95
+57eb0 4 5064 95
+57eb4 4 112 132
+57eb8 4 5077 95
+57ebc 4 5082 95
+57ec0 10 5071 95
+57ed0 4 5072 95
+57ed4 14 5073 95
+57ee8 14 5095 95
+57efc 4 355 114
+57f00 8 324 131
+57f08 4 112 132
+57f0c 4 481 101
+57f10 4 324 131
+57f14 c 148 137
+57f20 4 5080 95
+57f24 4 148 137
+57f28 4 325 131
+57f2c 4 101 103
+57f30 10 5077 95
+57f40 8 156 132
+57f48 4 5079 95
+57f4c 8 5081 95
+57f54 10 5082 95
+57f64 8 5083 95
+57f6c 8 5084 95
+57f74 8 5085 95
+57f7c 8 5086 95
+57f84 8 5087 95
+57f8c 8 5088 95
+57f94 8 5089 95
+57f9c 8 5090 95
+57fa4 8 5092 95
+FUNC 57fac cc 0 testing::internal::String::FormatByte
+57fac 4 1934 95
+57fb0 4 1935 95
+57fb4 8 1934 95
+57fbc 4 1935 95
+57fc0 4 1934 95
+57fc4 4 1934 95
+57fc8 4 1935 95
+57fcc 4 1934 95
+57fd0 4 1935 95
+57fd4 4 147 107
+57fd8 4 39 107
+57fdc 4 147 107
+57fe0 8 84 109
+57fe8 4 39 107
+57fec c 84 109
+57ff8 10 39 107
+58008 4 1936 95
+5800c 4 39 107
+58010 4 1936 95
+58014 c 79 122
+58020 8 123 110
+58028 8 124 110
+58030 8 79 122
+58038 4 254 121
+5803c 4 79 122
+58040 c 118 110
+5804c 4 254 121
+58050 c 75 127
+5805c 8 1938 95
+58064 14 1939 95
+FUNC 58078 138 0 testing::internal::Random::Generate
+58078 10 295 95
+58088 8 295 95
+58090 20 297 95
+580b0 4 299 95
+580b4 8 299 95
+580bc 4 333 122
+580c0 14 299 95
+580d4 24 333 122
+580f8 c 301 95
+58104 8 301 95
+5810c 4 333 122
+58110 14 301 95
+58124 24 333 122
+58148 10 254 121
+58158 1c 333 122
+58174 c 254 121
+58180 c 333 122
+5818c 8 301 95
+58194 4 308 95
+58198 4 309 95
+5819c 4 308 95
+581a0 10 309 95
+FUNC 581b0 38 0 testing::Message::operator<< <char const>
+581b0 c 149 79
+581bc 8 149 79
+581c4 4 333 122
+581c8 4 150 79
+581cc c 333 122
+581d8 10 156 79
+FUNC 581e8 8c 0 testing::internal::StreamingListener::SocketWriter::CloseConnection
+581e8 10 1094 91
+581f8 4 1094 91
+581fc c 1095 91
+58208 8 1095 91
+58210 4 333 122
+58214 14 1095 91
+58228 24 333 122
+5824c 8 1095 91
+58254 8 1098 91
+5825c 4 1100 91
+58260 8 1099 91
+58268 c 1100 91
+FUNC 58274 44 0 testing::internal::StreamingListener::SocketWriter::~SocketWriter
+58274 10 1071 91
+58284 c 1071 91
+58290 c 1072 91
+5829c 4 1073 91
+582a0 c 156 132
+582ac 8 1074 91
+582b4 4 156 132
+FUNC 582b8 24 0 testing::internal::StreamingListener::SocketWriter::~SocketWriter
+582b8 c 1071 91
+582c4 4 1071 91
+582c8 4 1074 91
+582cc 4 1074 91
+582d0 8 1074 91
+582d8 4 1074 91
+FUNC 582dc 68 0 testing::internal::StreamableToString<char*>
+582dc c 243 79
+582e8 4 244 79
+582ec 4 243 79
+582f0 4 243 79
+582f4 4 244 79
+582f8 4 243 79
+582fc c 244 79
+58308 4 333 122
+5830c 4 150 79
+58310 c 333 122
+5831c c 244 79
+58328 8 85 79
+58330 14 245 79
+FUNC 58344 8c 0 testing::internal::Int32FromEnvOrDie
+58344 10 4702 95
+58354 8 4702 95
+5835c 8 2328 87
+58364 4 4704 95
+58368 c 4709 95
+58374 14 333 122
+58388 c 4709 95
+58394 10 4710 95
+583a4 8 85 79
+583ac 4 4713 95
+583b0 4 4709 95
+583b4 8 4711 95
+583bc 4 4705 95
+583c0 10 4714 95
+FUNC 583d0 54 0 testing::AssertionResult::operator<< <char [2]>
+583d0 c 305 82
+583dc 4 306 82
+583e0 4 305 82
+583e4 4 306 82
+583e8 4 305 82
+583ec 4 306 82
+583f0 10 333 122
+58400 c 306 82
+5840c 8 85 79
+58414 10 308 82
+FUNC 58424 54 0 testing::AssertionResult::operator<< <char [7]>
+58424 c 305 82
+58430 4 306 82
+58434 4 305 82
+58438 4 306 82
+5843c 4 305 82
+58440 4 306 82
+58444 10 333 122
+58454 c 306 82
+58460 8 85 79
+58468 10 308 82
+FUNC 58478 10c 0 testing::internal::CmpHelperSTRNE
+58478 10 1483 95
+58488 4 1483 95
+5848c 4 1484 95
+58490 4 1483 95
+58494 4 1484 95
+58498 c 1483 95
+584a4 c 1484 95
+584b0 4 277 82
+584b4 4 1139 87
+584b8 c 277 82
+584c4 c 1487 95
+584d0 4 277 82
+584d4 4 306 82
+584d8 4 1139 87
+584dc 4 1487 95
+584e0 8 1487 95
+584e8 c 1487 95
+584f4 c 1488 95
+58500 8 306 82
+58508 14 333 122
+5851c c 306 82
+58528 8 85 79
+58530 c 1489 95
+5853c c 1489 95
+58548 8 1489 95
+58550 10 1489 95
+58560 8 1489 95
+58568 8 256 82
+58570 14 1491 95
+FUNC 58584 118 0 testing::internal::GetBoolAssertionFailureMessage
+58584 18 1311 95
+5859c 8 1311 95
+585a4 4 1144 87
+585a8 c 298 82
+585b4 8 298 82
+585bc 10 1313 95
+585cc 14 333 122
+585e0 10 1314 95
+585f0 4 131 79
+585f4 10 333 122
+58604 10 1315 95
+58614 8 1316 95
+5861c 14 333 122
+58630 c 1317 95
+5863c 4 131 79
+58640 24 333 122
+58664 c 1318 95
+58670 c 1319 95
+5867c 8 85 79
+58684 18 1320 95
+FUNC 5869c 98 0 testing::internal::MutexBase::Lock
+5869c 10 1886 87
+586ac 4 1886 87
+586b0 c 1887 87
+586bc 8 1887 87
+586c4 4 333 122
+586c8 14 1887 87
+586dc 24 333 122
+58700 c 1887 87
+5870c 8 1887 87
+58714 8 1888 87
+5871c 4 1890 87
+58720 8 1889 87
+58728 c 1890 87
+FUNC 58734 8c 0 testing::internal::GTestMutexLock::~GTestMutexLock
+58734 10 1965 87
+58744 4 1965 87
+58748 4 1898 87
+5874c c 1899 87
+58758 8 1899 87
+58760 4 333 122
+58764 14 1899 87
+58778 24 333 122
+5879c c 1899 87
+587a8 8 1899 87
+587b0 10 1965 87
+FUNC 587c0 38 0 testing::internal::UnitTestImpl::GetGlobalTestPartResultReporter
+587c0 c 687 95
+587cc 4 687 95
+587d0 4 688 95
+587d4 8 1963 87
+587dc 4 689 95
+587e0 8 689 95
+587e8 10 690 95
+FUNC 587f8 2c 0 testing::internal::DefaultPerThreadTestPartResultReporter::ReportTestPartResult
+587f8 8 681 95
+58800 4 682 95
+58804 4 681 95
+58808 8 682 95
+58810 c 682 95
+5881c 8 683 95
+FUNC 58824 90 0 testing::internal::Mutex::Mutex
+58824 4 1943 87
+58828 4 1944 87
+5882c c 1943 87
+58838 4 1943 87
+5883c c 1944 87
+58848 8 1944 87
+58850 4 333 122
+58854 14 1944 87
+58868 24 333 122
+5888c c 1944 87
+58898 8 1944 87
+588a0 4 1945 87
+588a4 10 1946 87
+FUNC 588b4 40 0 testing::TestResult::TestResult
+588b4 c 1978 95
+588c0 4 1978 95
+588c4 4 1980 95
+588c8 8 67 139
+588d0 4 481 101
+588d4 8 67 139
+588dc 4 481 101
+588e0 8 1980 95
+588e8 c 1981 95
+FUNC 588f4 c0 0 testing::TestInfo::TestInfo
+588f4 1c 2461 95
+58910 10 2461 95
+58920 4 2476 95
+58924 10 2476 95
+58934 4 2476 95
+58938 4 2476 95
+5893c c 2476 95
+58948 c 2469 95
+58954 4 2476 95
+58958 4 1139 87
+5895c 4 2476 95
+58960 4 2476 95
+58964 c 2476 95
+58970 c 2470 95
+5897c 4 2476 95
+58980 4 1139 87
+58984 4 2476 95
+58988 14 2476 95
+5899c 4 2476 95
+589a0 14 2476 95
+FUNC 589b4 a8 0 testing::TestCase::TestCase
+589b4 10 2674 95
+589c4 4 2682 95
+589c8 8 2674 95
+589d0 4 2682 95
+589d4 4 2682 95
+589d8 4 2674 95
+589dc 4 2682 95
+589e0 4 2682 95
+589e4 8 2674 95
+589ec 4 2682 95
+589f0 4 2682 95
+589f4 4 2682 95
+589f8 c 2682 95
+58a04 c 2678 95
+58a10 4 2682 95
+58a14 4 1139 87
+58a18 4 2682 95
+58a1c 8 2682 95
+58a24 8 67 139
+58a2c 4 481 101
+58a30 8 67 139
+58a38 4 481 101
+58a3c 8 2682 95
+58a44 4 2682 95
+58a48 14 2683 95
+FUNC 58a5c 54 0 testing::internal::UnitTestImpl::os_stack_trace_getter
+58a5c 10 4860 95
+58a6c 4 4860 95
+58a70 8 4861 95
+58a78 c 4862 95
+58a84 c 442 91
+58a90 4 442 91
+58a94 4 442 91
+58a98 4 4862 95
+58a9c 14 4866 95
+FUNC 58ab0 84 0 testing::internal::Mutex::~Mutex
+58ab0 10 1947 87
+58ac0 c 1948 87
+58acc 8 1948 87
+58ad4 4 333 122
+58ad8 14 1948 87
+58aec 24 333 122
+58b10 c 1948 87
+58b1c 8 1948 87
+58b24 10 1949 87
+FUNC 58b34 40 0 testing::UnitTest::~UnitTest
+58b34 c 4256 95
+58b40 10 4256 95
+58b50 8 4257 95
+58b58 c 4257 95
+58b64 4 4256 95
+58b68 8 4258 95
+58b70 4 4256 95
+FUNC 58b74 24 0 testing::UnitTest::~UnitTest
+58b74 c 4256 95
+58b80 4 4256 95
+58b84 4 4258 95
+58b88 4 4258 95
+58b8c 8 4258 95
+58b94 4 4258 95
+FUNC 58b98 10 0 testing::internal::OsStackTraceGetter::~OsStackTraceGetter
+58b98 10 440 91
+FUNC 58ba8 24 0 testing::internal::OsStackTraceGetter::~OsStackTraceGetter
+58ba8 c 440 91
+58bb4 8 440 91
+58bbc 4 440 91
+58bc0 8 440 91
+58bc8 4 440 91
+FUNC 58bcc 9c 0 testing::TestResult::~TestResult
+58bcc 10 1984 95
+58bdc c 1984 95
+58be8 8 191 103
+58bf0 18 156 132
+58c08 8 87 139
+58c10 4 88 139
+58c14 10 323 101
+58c24 8 191 103
+58c2c 4 77 113
+58c30 8 57 103
+58c38 8 81 113
+58c40 8 87 139
+58c48 4 88 139
+58c4c 8 323 101
+58c54 4 1984 95
+58c58 c 1985 95
+58c64 4 1984 95
+FUNC 58c68 74 0 testing::TestInfo::~TestInfo
+58c68 c 2479 95
+58c74 c 2479 95
+58c80 4 2479 95
+58c84 8 2479 95
+58c8c 8 2479 95
+58c94 8 1153 87
+58c9c 8 156 132
+58ca4 8 1155 87
+58cac 8 1153 87
+58cb4 8 156 132
+58cbc 8 1155 87
+58cc4 c 156 132
+58cd0 8 2479 95
+58cd8 4 156 132
+FUNC 58cdc 34 0 testing::internal::Delete<testing::TestInfo>
+58cdc c 339 91
+58ce8 8 340 91
+58cf0 4 340 91
+58cf4 4 340 91
+58cf8 8 341 91
+58d00 4 340 91
+58d04 c 341 91
+FUNC 58d10 8c 0 testing::TestCase::~TestCase
+58d10 14 2686 95
+58d24 14 2686 95
+58d38 8 60 98
+58d40 c 61 98
+58d4c 8 2686 95
+58d54 8 87 139
+58d5c 4 88 139
+58d60 8 323 101
+58d68 8 304 139
+58d70 8 1153 87
+58d78 8 156 132
+58d80 8 1155 87
+58d88 4 156 132
+58d8c c 2689 95
+58d98 4 156 132
+FUNC 58d9c 24 0 testing::TestCase::~TestCase
+58d9c c 2686 95
+58da8 4 2686 95
+58dac 4 2689 95
+58db0 4 2689 95
+58db4 8 2689 95
+58dbc 4 2689 95
+FUNC 58dc0 1d0 0 testing::internal::ShuffleRange<int>
+58dc0 18 311 91
+58dd8 c 311 91
+58de4 4 192 139
+58de8 4 311 91
+58dec c 192 139
+58df8 c 314 91
+58e04 8 314 91
+58e0c 4 333 122
+58e10 14 314 91
+58e24 24 333 122
+58e48 10 315 91
+58e58 c 333 122
+58e64 c 316 91
+58e70 c 333 122
+58e7c 8 314 91
+58e84 10 317 91
+58e94 8 317 91
+58e9c 4 333 122
+58ea0 14 317 91
+58eb4 24 333 122
+58ed8 10 318 91
+58ee8 c 333 122
+58ef4 10 319 91
+58f04 c 333 122
+58f10 c 319 91
+58f1c c 333 122
+58f28 8 317 91
+58f30 c 323 91
+58f3c 8 323 91
+58f44 8 325 91
+58f4c 4 323 91
+58f50 c 325 91
+58f5c 4 202 139
+58f60 4 92 100
+58f64 4 91 100
+58f68 4 92 100
+58f6c c 93 100
+58f78 18 328 91
+FUNC 58f90 b0 0 testing::internal::UnitTestImpl::ShuffleTests
+58f90 4 4877 95
+58f94 4 4879 95
+58f98 c 4877 95
+58fa4 4 4877 95
+58fa8 8 4879 95
+58fb0 4 801 91
+58fb4 c 4879 95
+58fc0 4 192 139
+58fc4 4 4879 95
+58fc8 4 192 139
+58fcc 4 4883 95
+58fd0 4 192 139
+58fd4 4 4883 95
+58fd8 4 4886 95
+58fdc 4 192 139
+58fe0 10 4883 95
+58ff0 c 192 139
+58ffc 8 4886 95
+59004 4 4887 95
+59008 4 4886 95
+5900c 8 192 139
+59014 4 333 91
+59018 8 192 139
+59020 10 333 91
+59030 10 4889 95
+FUNC 59040 9c 0 testing::internal::String::FormatIntWidth2
+59040 4 1920 95
+59044 4 1921 95
+59048 8 1920 95
+59050 4 1921 95
+59054 4 1920 95
+59058 4 1920 95
+5905c 4 1921 95
+59060 4 1920 95
+59064 4 1921 95
+59068 4 147 107
+5906c 8 39 107
+59074 4 147 107
+59078 14 84 109
+5908c 14 39 107
+590a0 4 1922 95
+590a4 4 39 107
+590a8 4 1922 95
+590ac 8 1922 95
+590b4 c 75 127
+590c0 8 1923 95
+590c8 14 1924 95
+FUNC 590dc 90 0 testing::internal::String::FormatHexInt
+590dc 4 1927 95
+590e0 4 1928 95
+590e4 8 1927 95
+590ec 4 1928 95
+590f0 4 1927 95
+590f4 4 1927 95
+590f8 4 1928 95
+590fc 4 1927 95
+59100 4 1928 95
+59104 10 79 122
+59114 8 123 110
+5911c 8 124 110
+59124 8 79 122
+5912c 4 1929 95
+59130 4 79 122
+59134 c 118 110
+59140 4 1929 95
+59144 c 75 127
+59150 8 1930 95
+59158 14 1931 95
+FUNC 5916c 1a0 0 testing::internal::ThreadLocal<std::vector<testing::internal::TraceInfo, std::allocator<testing::internal::TraceInfo> > >::GetOrCreateValue
+5916c 18 2037 87
+59184 4 2037 87
+59188 c 2039 87
+59194 4 2021 87
+59198 4 2040 87
+5919c 8 2044 87
+591a4 4 2019 87
+591a8 4 2044 87
+591ac c 2019 87
+591b8 8 192 139
+591c0 4 70 139
+591c4 4 192 139
+591c8 4 70 139
+591cc 4 192 139
+591d0 4 342 101
+591d4 4 481 101
+591d8 8 342 101
+591e0 c 343 101
+591ec 4 343 101
+591f0 4 356 101
+591f4 4 346 101
+591f8 8 347 101
+59200 8 348 101
+59208 8 352 101
+59210 4 71 139
+59214 4 73 139
+59218 4 72 139
+5921c 4 84 137
+59220 8 73 139
+59228 14 86 137
+5923c 8 86 137
+59244 4 139 103
+59248 1c 466 91
+59264 4 89 137
+59268 10 86 137
+59278 c 2046 87
+59284 4 249 139
+59288 10 2046 87
+59298 8 2046 87
+592a0 4 333 122
+592a4 14 2046 87
+592b8 24 333 122
+592dc c 2046 87
+592e8 8 2046 87
+592f0 4 2021 87
+592f4 18 2048 87
+FUNC 5930c 50 0 testing::UnitTest::PopGTestTrace
+5930c c 4270 95
+59318 4 4270 95
+5931c 4 4271 95
+59320 8 1963 87
+59328 4 752 91
+5932c 8 2010 87
+59334 c 563 139
+59340 8 156 132
+59348 8 4272 95
+59350 c 4273 95
+FUNC 5935c c8 0 std::priv::__put_num<char, std::char_traits<char>, double>
+5935c 14 194 121
+59370 4 194 121
+59374 10 181 122
+59384 8 199 121
+5938c 18 211 121
+593a4 4 202 121
+593a8 8 145 110
+593b0 4 202 121
+593b4 4 145 110
+593b8 4 202 121
+593bc 8 145 110
+593c4 8 202 121
+593cc 4 89 120
+593d0 4 202 121
+593d4 8 89 120
+593dc c 202 121
+593e8 4 89 120
+593ec 4 57 123
+593f0 c 89 120
+593fc 8 202 121
+59404 4 210 121
+59408 8 212 121
+59410 14 213 121
+FUNC 59428 64 0 testing::internal::FormatTimeInMillisAsSeconds
+59428 4 3500 95
+5942c 4 3501 95
+59430 8 3500 95
+59438 4 3501 95
+5943c 4 3500 95
+59440 4 3501 95
+59444 4 3500 95
+59448 4 3500 95
+5944c 4 3501 95
+59450 4 3502 95
+59454 10 281 121
+59464 c 75 127
+59470 8 3503 95
+59478 14 3504 95
+FUNC 59498 f8 0 testing::internal::XmlUnitTestResultPrinter::OutputXmlCDataSection
+59498 18 3530 95
+594b0 4 3534 95
+594b4 c 333 122
+594c0 4 3534 95
+594c4 4 181 122
+594c8 4 333 122
+594cc 4 3530 95
+594d0 4 3530 95
+594d4 4 333 122
+594d8 10 3534 95
+594e8 4 3535 95
+594ec 14 181 122
+59500 4 434 121
+59504 18 444 121
+5951c 4 436 121
+59520 4 3537 95
+59524 18 436 121
+5953c 8 443 121
+59544 4 446 121
+59548 4 3539 95
+5954c 4 446 121
+59550 c 333 122
+5955c 4 3544 95
+59560 18 333 122
+59578 18 3546 95
+FUNC 59590 108 0 testing::internal::StreamingListener::SocketWriter::Send
+59590 10 1077 91
+595a0 8 1077 91
+595a8 c 1078 91
+595b4 8 1078 91
+595bc 4 333 122
+595c0 14 1078 91
+595d4 24 333 122
+595f8 c 1078 91
+59604 4 400 131
+59608 4 1082 91
+5960c 4 400 131
+59610 4 1082 91
+59614 8 1082 91
+5961c 8 1082 91
+59624 8 1083 91
+5962c 4 333 122
+59630 14 1083 91
+59644 14 333 122
+59658 10 1085 91
+59668 c 333 122
+59674 c 1085 91
+59680 8 1083 91
+59688 10 1087 91
+FUNC 59698 1d4 0 testing::internal::StreamingListener::SocketWriter::MakeConnection
+59698 10 3721 95
+596a8 8 3721 95
+596b0 c 3722 95
+596bc 4 3722 95
+596c0 4 333 122
+596c4 14 3722 95
+596d8 24 333 122
+596fc 8 3722 95
+59704 4 3729 95
+59708 c 3734 95
+59714 4 3726 95
+59718 4 3729 95
+5971c 4 3728 95
+59720 8 3726 95
+59728 4 3728 95
+5972c 8 3734 95
+59734 4 3735 95
+59738 c 3736 95
+59744 4 333 122
+59748 10 3736 95
+59758 14 333 122
+5976c c 3737 95
+59778 8 333 122
+59780 8 3736 95
+59788 4 3741 95
+5978c 4 3741 95
+59790 4 3741 95
+59794 8 3741 95
+5979c 14 3744 95
+597b0 8 3745 95
+597b8 18 3747 95
+597d0 8 3748 95
+597d8 4 3749 95
+597dc 8 3741 95
+597e4 8 3754 95
+597ec c 3756 95
+597f8 8 3757 95
+59800 4 333 122
+59804 14 3757 95
+59818 14 333 122
+5982c 10 3758 95
+5983c c 333 122
+59848 c 3758 95
+59854 8 3757 95
+5985c 10 3760 95
+FUNC 5986c 7c 0 testing::AssertionResult::operator<< <testing::Message>
+5986c c 305 82
+59878 4 306 82
+5987c 4 233 79
+59880 4 305 82
+59884 4 305 82
+59888 4 306 82
+5988c 4 305 82
+59890 4 306 82
+59894 8 233 79
+5989c 4 131 79
+598a0 4 233 79
+598a4 4 131 79
+598a8 4 233 79
+598ac c 233 79
+598b8 8 156 132
+598c0 c 306 82
+598cc 8 85 79
+598d4 14 308 82
+FUNC 598e8 104 0 testing::internal::PrettyUnitTestResultPrinter::OnTestPartResult
+598e8 10 3070 95
+598f8 8 3072 95
+59900 c 2808 95
+5990c 4 2808 95
+59910 8 2808 95
+59918 4 2808 95
+5991c 8 77 81
+59924 c 2808 95
+59930 10 131 79
+59940 14 333 122
+59954 10 2785 95
+59964 c 2794 95
+59970 c 2797 95
+5997c 8 2787 95
+59984 4 2809 95
+59988 4 2810 95
+5998c 4 2809 95
+59990 4 2810 95
+59994 4 2818 95
+59998 4 2810 95
+5999c 8 2810 95
+599a4 8 156 132
+599ac 8 85 79
+599b4 8 2817 95
+599bc 10 2818 95
+599cc 8 156 132
+599d4 8 3077 95
+599dc 10 3078 95
+FUNC 599ec 1c8 0 testing::internal::XmlUnitTestResultPrinter::EscapeXml
+599ec 14 3427 95
+59a00 4 3428 95
+59a04 c 333 122
+59a10 8 3427 95
+59a18 4 3430 95
+59a1c 4 3427 95
+59a20 4 333 122
+59a24 4 3428 95
+59a28 8 333 122
+59a30 8 3427 95
+59a38 8 3428 95
+59a40 8 400 131
+59a48 8 3430 95
+59a50 4 3431 95
+59a54 1c 3432 95
+59a70 4 131 79
+59a74 10 333 122
+59a84 10 3432 95
+59a94 4 131 79
+59a98 10 333 122
+59aa8 4 131 79
+59aac 10 333 122
+59abc 4 131 79
+59ac0 8 333 122
+59ac8 4 3443 95
+59acc 8 333 122
+59ad4 4 131 79
+59ad8 4 333 122
+59adc 4 3449 95
+59ae0 c 333 122
+59aec 1c 3309 95
+59b08 10 3314 95
+59b18 4 3456 95
+59b1c 4 131 79
+59b20 4 333 122
+59b24 4 3457 95
+59b28 8 333 122
+59b30 c 3457 95
+59b3c 4 131 79
+59b40 c 131 79
+59b4c 4 131 79
+59b50 c 333 122
+59b5c 8 156 132
+59b64 8 3430 95
+59b6c 4 131 79
+59b70 10 305 122
+59b80 c 3466 95
+59b8c 8 85 79
+59b94 20 3467 95
+FUNC 59bb4 154 0 testing::internal::XmlUnitTestResultPrinter::TestPropertiesAsXmlAttributes
+59bb4 14 3683 95
+59bc8 4 3684 95
+59bcc 4 192 139
+59bd0 8 333 122
+59bd8 8 3683 95
+59be0 4 3685 95
+59be4 4 3684 95
+59be8 4 192 139
+59bec 8 333 122
+59bf4 4 3688 95
+59bf8 8 3683 95
+59c00 4 3684 95
+59c04 14 192 139
+59c18 8 3685 95
+59c20 8 3686 95
+59c28 4 333 122
+59c2c 4 3685 95
+59c30 8 3686 95
+59c38 4 131 79
+59c3c 10 333 122
+59c4c 10 3687 95
+59c5c 4 131 79
+59c60 c 333 122
+59c6c 4 131 79
+59c70 c 333 122
+59c7c c 3688 95
+59c88 4 3328 95
+59c8c 4 3688 95
+59c90 10 3328 95
+59ca0 4 131 79
+59ca4 c 131 79
+59cb0 4 131 79
+59cb4 c 333 122
+59cc0 14 156 132
+59cd4 c 3690 95
+59ce0 8 85 79
+59ce8 20 3691 95
+FUNC 59d08 64 0 testing::Message::Message
+59d08 18 96 79
+59d20 c 96 79
+59d2c 8 96 79
+59d34 4 1139 87
+59d38 10 97 79
+59d48 c 97 79
+59d54 8 156 132
+59d5c 10 98 79
+FUNC 59d6c 380 0 testing::internal::ShouldShard
+59d6c 10 4657 95
+59d7c 4 4664 95
+59d80 8 4657 95
+59d88 4 4664 95
+59d8c 4 4665 95
+59d90 4 4664 95
+59d94 c 4665 95
+59da0 14 4667 95
+59db4 4 4668 95
+59db8 4 4667 95
+59dbc c 4669 95
+59dc8 c 4671 95
+59dd4 3c 333 122
+59e10 8 131 79
+59e18 4 4673 95
+59e1c 8 131 79
+59e24 3c 333 122
+59e60 c 4673 95
+59e6c 8 85 79
+59e74 c 4674 95
+59e80 c 4674 95
+59e8c 8 156 132
+59e94 c 4677 95
+59ea0 c 4679 95
+59eac 3c 333 122
+59ee8 8 131 79
+59ef0 4 4681 95
+59ef4 8 131 79
+59efc 3c 333 122
+59f38 c 4681 95
+59f44 8 85 79
+59f4c c 4682 95
+59f58 c 4682 95
+59f64 8 156 132
+59f6c 10 4683 95
+59f7c 8 4684 95
+59f84 c 4685 95
+59f90 4 4687 95
+59f94 4 333 122
+59f98 4 4687 95
+59f9c 8 333 122
+59fa4 4 4687 95
+59fa8 88 333 122
+5a030 10 131 79
+5a040 34 333 122
+5a074 8 131 79
+5a07c 4 4690 95
+5a080 8 131 79
+5a088 14 333 122
+5a09c c 4690 95
+5a0a8 8 85 79
+5a0b0 c 4691 95
+5a0bc c 4691 95
+5a0c8 8 156 132
+5a0d0 8 4696 95
+5a0d8 14 4697 95
+FUNC 5a0ec 14 0 testing::internal::ShouldShard
+5a0ec 4 4659 95
+5a0f0 8 4660 95
+5a0f8 8 4697 95
+FUNC 5a100 134 0 testing::GetReservedAttributesForElement
+5a100 4 2074 95
+5a104 4 2075 95
+5a108 4 2074 95
+5a10c 4 2075 95
+5a110 8 2074 95
+5a118 8 2074 95
+5a120 c 2075 95
+5a12c 4 272 139
+5a130 4 67 139
+5a134 4 272 139
+5a138 4 67 139
+5a13c 4 481 101
+5a140 c 272 139
+5a14c 18 2077 95
+5a164 4 272 139
+5a168 8 67 139
+5a170 4 272 139
+5a174 4 481 101
+5a178 8 272 139
+5a180 18 2079 95
+5a198 4 272 139
+5a19c 8 67 139
+5a1a4 4 272 139
+5a1a8 4 481 101
+5a1ac 10 272 139
+5a1bc 8 2082 95
+5a1c4 4 333 122
+5a1c8 14 2082 95
+5a1dc 24 333 122
+5a200 c 2082 95
+5a20c 8 2082 95
+5a214 8 67 139
+5a21c 4 481 101
+5a220 14 2086 95
+FUNC 5a234 c8 0 testing::internal::ThreadLocal<testing::TestPartResultReporterInterface*>::GetOrCreateValue
+5a234 10 2037 87
+5a244 4 2037 87
+5a248 8 2039 87
+5a250 4 2040 87
+5a254 4 2021 87
+5a258 4 2041 87
+5a25c c 2044 87
+5a268 4 2019 87
+5a26c 4 2046 87
+5a270 10 2019 87
+5a280 10 2046 87
+5a290 8 2046 87
+5a298 4 333 122
+5a29c 14 2046 87
+5a2b0 24 333 122
+5a2d4 c 2046 87
+5a2e0 8 2046 87
+5a2e8 4 2021 87
+5a2ec 10 2048 87
+FUNC 5a2fc 1c 0 testing::internal::UnitTestImpl::GetTestPartResultReporterForCurrentThread
+5a2fc 4 701 95
+5a300 4 2011 87
+5a304 4 701 95
+5a308 4 2011 87
+5a30c c 703 95
+FUNC 5a318 2a4 0 testing::UnitTest::AddTestPartResult
+5a318 14 4065 95
+5a32c 4 4066 95
+5a330 c 4065 95
+5a33c 4 4066 95
+5a340 14 4065 95
+5a354 4 4065 95
+5a358 4 4066 95
+5a35c 14 131 79
+5a370 4 4069 95
+5a374 8 1963 87
+5a37c 4 752 91
+5a380 8 2010 87
+5a388 10 192 139
+5a398 8 4070 95
+5a3a0 8 4081 95
+5a3a8 4c 333 122
+5a3f4 4 752 91
+5a3f8 8 2010 87
+5a400 8 192 139
+5a408 4 333 122
+5a40c c 192 139
+5a418 8 4073 95
+5a420 8 4073 95
+5a428 4 752 91
+5a42c 4 4075 95
+5a430 8 2010 87
+5a438 4 202 139
+5a43c 4 333 122
+5a440 4 131 79
+5a444 8 202 139
+5a44c 8 333 122
+5a454 18 4076 95
+5a46c 4 131 79
+5a470 c 131 79
+5a47c 4 131 79
+5a480 c 333 122
+5a48c 4 131 79
+5a490 c 131 79
+5a49c c 156 132
+5a4a8 c 4081 95
+5a4b4 10 4087 95
+5a4c4 10 68 81
+5a4d4 8 68 81
+5a4dc 10 68 81
+5a4ec 4 68 81
+5a4f0 c 68 81
+5a4fc 10 68 81
+5a50c 8 156 132
+5a514 8 4088 95
+5a51c 10 4089 95
+5a52c 4 4091 95
+5a530 c 4097 95
+5a53c c 4108 95
+5a548 c 4110 95
+5a554 8 4116 95
+5a55c 8 4087 95
+5a564 8 4069 95
+5a56c 8 85 79
+5a574 20 4120 95
+5a594 14 333 122
+5a5a8 14 131 79
+FUNC 5a5bc 24 0 testing::internal::UnitTestImpl::SetTestPartResultReporterForCurrentThread
+5a5bc 4 707 95
+5a5c0 4 2010 87
+5a5c4 4 707 95
+5a5c8 4 707 95
+5a5cc 4 2010 87
+5a5d0 8 2013 87
+5a5d8 8 709 95
+FUNC 5a5e0 8c 0 std::priv::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int>, std::priv::_Select1st<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int> >, std::priv::_MapTraitsT<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int> >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int> > >::_M_find<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >
+5a5e0 14 548 136
+5a5f4 8 548 136
+5a5fc c 549 136
+5a608 4 552 136
+5a60c 10 79 106
+5a61c 8 553 136
+5a624 8 554 136
+5a62c 8 556 136
+5a634 8 558 136
+5a63c 18 79 106
+5a654 18 564 136
+FUNC 5a66c 58 0 std::priv::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int>, std::priv::_Select1st<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int> >, std::priv::_MapTraitsT<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int> >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int> > >::_M_erase
+5a66c 18 655 135
+5a684 4 657 135
+5a688 c 658 135
+5a694 4 659 135
+5a698 8 156 132
+5a6a0 14 161 101
+5a6b4 10 664 135
+FUNC 5a6c4 44 0 std::priv::_List_base<std::pair<char, char const*>, std::allocator<std::pair<char, char const*> > >::clear
+5a6c4 c 66 115
+5a6d0 4 66 115
+5a6d4 4 67 115
+5a6d8 8 68 115
+5a6e0 4 161 101
+5a6e4 4 74 115
+5a6e8 c 161 101
+5a6f4 4 78 115
+5a6f8 4 79 115
+5a6fc c 80 115
+FUNC 5a708 3c 0 std::priv::_List_global<bool>::_Transfer
+5a708 8 50 115
+5a710 8 52 115
+5a718 8 53 115
+5a720 8 54 115
+5a728 4 58 115
+5a72c 4 57 115
+5a730 4 58 115
+5a734 8 59 115
+5a73c 4 60 115
+5a740 4 62 115
+FUNC 5a744 9c 0 testing::internal::edit_distance::::Hunk::PushLine
+5a744 14 1096 95
+5a758 4 1096 95
+5a75c 4 208 116
+5a760 4 1099 95
+5a764 4 370 116
+5a768 4 208 116
+5a76c 8 1099 95
+5a774 8 600 116
+5a77c 8 602 116
+5a784 8 208 116
+5a78c 8 600 116
+5a794 8 602 116
+5a79c c 306 101
+5a7a8 4 307 101
+5a7ac 8 119 103
+5a7b4 8 68 124
+5a7bc 4 427 116
+5a7c0 4 429 116
+5a7c4 4 428 116
+5a7c8 4 430 116
+5a7cc 4 431 116
+5a7d0 10 1112 95
+FUNC 5a7e0 4c 0 std::operator==<char, std::char_traits<char>, std::allocator<char> >
+5a7e0 c 287 134
+5a7ec 4 289 134
+5a7f0 8 287 134
+5a7f8 14 400 131
+5a80c 8 289 134
+5a814 4 226 140
+5a818 8 289 134
+5a820 c 290 134
+FUNC 5a82c 144 0 std::priv::__find<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >
+5a82c 10 112 99
+5a83c 4 115 99
+5a840 8 112 99
+5a848 8 115 99
+5a850 4 112 99
+5a854 4 112 99
+5a858 8 115 99
+5a860 8 117 99
+5a868 14 118 99
+5a87c 4 119 99
+5a880 18 121 99
+5a898 18 124 99
+5a8b0 18 127 99
+5a8c8 8 117 99
+5a8d0 24 131 99
+5a8f4 4 143 99
+5a8f8 8 131 99
+5a900 18 133 99
+5a918 4 134 99
+5a91c 8 136 99
+5a924 4 136 99
+5a928 c 136 99
+5a934 4 137 99
+5a938 10 139 99
+5a948 10 139 99
+5a958 18 145 99
+FUNC 5a970 154 0 testing::internal::XmlUnitTestResultPrinter::OutputXmlAttribute
+5a970 c 3552 95
+5a97c 4 3554 95
+5a980 8 3552 95
+5a988 4 3554 95
+5a98c 4 3552 95
+5a990 4 3554 95
+5a994 8 3552 95
+5a99c 8 3552 95
+5a9a4 8 3554 95
+5a9ac 18 223 99
+5a9c4 8 3556 95
+5a9cc 4 3556 95
+5a9d0 4 333 122
+5a9d4 14 3556 95
+5a9e8 24 333 122
+5aa0c 10 3558 95
+5aa1c c 333 122
+5aa28 c 3558 95
+5aa34 c 333 122
+5aa40 8 3556 95
+5aa48 10 333 122
+5aa58 10 3561 95
+5aa68 c 333 122
+5aa74 10 3328 95
+5aa84 c 3561 95
+5aa90 c 333 122
+5aa9c 8 156 132
+5aaa4 8 42 143
+5aaac 18 3562 95
+FUNC 5aac4 124 0 std::priv::_Impl_vector<void*, std::allocator<void*> >::_M_insert_overflow
+5aac4 18 108 138
+5aadc c 108 138
+5aae8 4 192 139
+5aaec 4 108 138
+5aaf0 4 192 139
+5aaf4 4 173 139
+5aaf8 4 108 138
+5aafc 8 192 139
+5ab04 c 173 139
+5ab10 14 41 138
+5ab24 4 175 139
+5ab28 10 176 139
+5ab38 4 356 101
+5ab3c 8 346 101
+5ab44 4 177 139
+5ab48 c 347 101
+5ab54 4 348 101
+5ab58 4 352 101
+5ab5c 4 353 101
+5ab60 4 352 101
+5ab64 14 112 138
+5ab78 8 480 100
+5ab80 14 481 100
+5ab94 4 115 138
+5ab98 18 116 138
+5abb0 8 657 139
+5abb8 4 319 101
+5abbc 4 323 101
+5abc0 4 118 138
+5abc4 4 666 139
+5abc8 4 667 139
+5abcc 4 668 139
+5abd0 18 119 138
+FUNC 5abe8 50 0 std::priv::_Impl_vector<void*, std::allocator<void*> >::push_back
+5abe8 10 376 139
+5abf8 14 380 139
+5ac0c 4 126 103
+5ac10 10 382 139
+5ac20 10 386 139
+5ac30 8 388 139
+FUNC 5ac38 28 0 testing::TestEventListeners::Append
+5ac38 c 3854 95
+5ac44 4 3855 95
+5ac48 10 173 143
+5ac58 8 3856 95
+FUNC 5ac60 5c 0 testing::TestEventListeners::SetDefaultResultPrinter
+5ac60 c 3878 95
+5ac6c 8 3878 95
+5ac74 c 3879 95
+5ac80 8 3882 95
+5ac88 4 3882 95
+5ac8c 8 3882 95
+5ac94 4 3883 95
+5ac98 4 3884 95
+5ac9c 8 3885 95
+5aca4 8 3887 95
+5acac 4 3885 95
+5acb0 c 3887 95
+FUNC 5acbc 244 0 testing::internal::UnitTestImpl::UnitTestImpl
+5acbc 10 4277 95
+5accc 4 4305 95
+5acd0 4 4277 95
+5acd4 4 4305 95
+5acd8 4 61 84
+5acdc 4 4305 95
+5ace0 8 61 84
+5ace8 4 4305 95
+5acec 8 61 84
+5acf4 8 4277 95
+5acfc 4 61 84
+5ad00 4 669 95
+5ad04 4 678 95
+5ad08 8 669 95
+5ad10 4 678 95
+5ad14 4 669 95
+5ad18 c 678 95
+5ad24 4 669 95
+5ad28 4 4305 95
+5ad2c 4 4305 95
+5ad30 4 2032 87
+5ad34 8 4305 95
+5ad3c 14 2032 87
+5ad50 8 2032 87
+5ad58 4 333 122
+5ad5c 14 2032 87
+5ad70 24 333 122
+5ad94 c 2032 87
+5ada0 8 2032 87
+5ada8 8 1999 87
+5adb0 4 4305 95
+5adb4 4 1999 87
+5adb8 8 4305 95
+5adc0 4 4305 95
+5adc4 8 67 139
+5adcc 4 481 101
+5add0 8 67 139
+5add8 4 481 101
+5addc 8 67 139
+5ade4 4 481 101
+5ade8 8 67 139
+5adf0 4 481 101
+5adf4 c 4305 95
+5ae00 4 4305 95
+5ae04 8 4305 95
+5ae0c 8 4305 95
+5ae14 4 4305 95
+5ae18 4 4305 95
+5ae1c 4 712 85
+5ae20 8 4305 95
+5ae28 4 1139 87
+5ae2c 4 4305 95
+5ae30 4 148 83
+5ae34 4 2032 87
+5ae38 c 148 83
+5ae44 4 1139 87
+5ae48 10 2032 87
+5ae58 8 2032 87
+5ae60 4 333 122
+5ae64 14 2032 87
+5ae78 24 333 122
+5ae9c c 2032 87
+5aea8 8 2032 87
+5aeb0 4 2034 87
+5aeb4 4 1997 87
+5aeb8 4 4306 95
+5aebc 8 67 139
+5aec4 4 481 101
+5aec8 4 4305 95
+5aecc 8 4306 95
+5aed4 c 2981 95
+5aee0 8 4306 95
+5aee8 18 4307 95
+FUNC 5af00 44 0 testing::UnitTest::UnitTest
+5af00 10 4251 95
+5af10 10 4251 95
+5af20 c 4252 95
+5af2c 8 4252 95
+5af34 4 4252 95
+5af38 c 4253 95
+FUNC 5af44 5c 0 testing::UnitTest::GetInstance
+5af44 c 3924 95
+5af50 10 3940 95
+5af60 14 3940 95
+5af74 4 3940 95
+5af78 4 3940 95
+5af7c 14 3940 95
+5af90 10 3943 95
+FUNC 5afa0 244 0 testing::internal::UnitTestOptions::GetAbsolutePathToOutputFile
+5afa0 20 408 95
+5afc0 8 408 95
+5afc8 4 410 95
+5afcc 18 411 95
+5afe4 10 413 95
+5aff4 4 414 95
+5aff8 8 418 95
+5b000 c 418 95
+5b00c 4 418 95
+5b010 4 418 95
+5b014 4 418 95
+5b018 4 418 95
+5b01c c 418 95
+5b028 14 418 95
+5b03c c 418 95
+5b048 10 418 95
+5b058 c 418 95
+5b064 28 156 132
+5b08c 4 420 95
+5b090 10 420 95
+5b0a0 c 420 95
+5b0ac 8 156 132
+5b0b4 10 421 95
+5b0c4 8 426 95
+5b0cc c 426 95
+5b0d8 4 426 95
+5b0dc 4 426 95
+5b0e0 4 426 95
+5b0e4 4 426 95
+5b0e8 c 426 95
+5b0f4 10 426 95
+5b104 c 426 95
+5b110 10 426 95
+5b120 c 74 84
+5b12c 28 156 132
+5b154 10 430 95
+5b164 c 431 95
+5b170 4 431 95
+5b174 4 435 95
+5b178 4 435 95
+5b17c 4 435 95
+5b180 8 435 95
+5b188 14 435 95
+5b19c 10 156 132
+5b1ac c 436 95
+5b1b8 10 156 132
+5b1c8 1c 437 95
+FUNC 5b1e4 18 0 testing::internal::GetUnitTestImpl
+5b1e4 8 936 91
+5b1ec 4 937 91
+5b1f0 c 938 91
+FUNC 5b1fc 4c 0 testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>
+5b1fc c 2370 95
+5b208 c 2370 95
+5b214 14 2395 95
+5b228 4 2418 95
+5b22c 8 2418 95
+5b234 8 2418 95
+5b23c c 2420 95
+FUNC 5b248 28 0 testing::Test::HasFatalFailure
+5b248 8 2447 95
+5b250 4 2448 95
+5b254 4 4872 95
+5b258 4 2449 95
+5b25c c 4872 95
+5b268 8 2448 95
+FUNC 5b270 28 0 testing::Test::HasNonfatalFailure
+5b270 8 2452 95
+5b278 4 2454 95
+5b27c 4 4872 95
+5b280 4 2455 95
+5b284 c 4872 95
+5b290 8 2454 95
+FUNC 5b298 14 0 testing::internal::ScopedTrace::~ScopedTrace
+5b298 8 3780 95
+5b2a0 4 3782 95
+5b2a4 4 3783 95
+5b2a8 4 3782 95
+FUNC 5b2ac 5c 0 testing::TestEventListeners::SetDefaultXmlGenerator
+5b2ac c 3894 95
+5b2b8 8 3894 95
+5b2c0 c 3895 95
+5b2cc 8 3898 95
+5b2d4 4 3898 95
+5b2d8 8 3898 95
+5b2e0 4 3899 95
+5b2e4 4 3900 95
+5b2e8 8 3901 95
+5b2f0 8 3903 95
+5b2f8 4 3901 95
+5b2fc c 3903 95
+FUNC 5b308 c8 0 testing::internal::UnitTestImpl::ConfigureXmlOutput
+5b308 c 4352 95
+5b314 8 4353 95
+5b31c 4 4352 95
+5b320 4 4352 95
+5b324 4 4353 95
+5b328 18 4354 95
+5b340 10 4356 95
+5b350 10 4356 95
+5b360 8 4356 95
+5b368 c 4356 95
+5b374 c 156 132
+5b380 14 476 134
+5b394 4 4357 95
+5b398 10 4359 95
+5b3a8 10 4360 95
+5b3b8 8 156 132
+5b3c0 10 4362 95
+FUNC 5b3d0 50 0 testing::TestCase::AddTestInfo
+5b3d0 10 2707 95
+5b3e0 4 2707 95
+5b3e4 4 173 143
+5b3e8 4 2707 95
+5b3ec 8 173 143
+5b3f4 14 192 139
+5b408 8 2709 95
+5b410 4 173 143
+5b414 c 2710 95
+FUNC 5b420 38 0 std::_Destroy_Range<std::reverse_iterator<testing::internal::TraceInfo*> >
+5b420 c 219 103
+5b42c 8 65 113
+5b434 8 191 103
+5b43c 10 156 132
+5b44c c 221 103
+FUNC 5b458 5c 0 testing::internal::ThreadLocal<std::vector<testing::internal::TraceInfo, std::allocator<testing::internal::TraceInfo> > >::ValueHolder::~ValueHolder
+5b458 c 2017 87
+5b464 8 2017 87
+5b46c 4 64 113
+5b470 4 2017 87
+5b474 4 304 139
+5b478 4 2017 87
+5b47c 10 64 113
+5b48c 8 304 139
+5b494 8 87 139
+5b49c 4 88 139
+5b4a0 8 323 101
+5b4a8 c 2017 87
+FUNC 5b4b4 24 0 testing::internal::ThreadLocal<std::vector<testing::internal::TraceInfo, std::allocator<testing::internal::TraceInfo> > >::ValueHolder::~ValueHolder
+5b4b4 c 2017 87
+5b4c0 8 2017 87
+5b4c8 4 2017 87
+5b4cc 8 2017 87
+5b4d4 4 2017 87
+FUNC 5b4d8 228 0 testing::internal::UnitTestImpl::~UnitTestImpl
+5b4d8 18 4309 95
+5b4f0 10 4309 95
+5b500 8 60 98
+5b508 14 61 98
+5b51c 8 60 98
+5b524 c 61 98
+5b530 8 4316 95
+5b538 c 4316 95
+5b544 c 2003 87
+5b550 4 2003 87
+5b554 10 2007 87
+5b564 4 2007 87
+5b568 4 333 122
+5b56c 14 2007 87
+5b580 24 333 122
+5b5a4 c 2007 87
+5b5b0 8 2007 87
+5b5b8 4 64 113
+5b5bc 4 304 139
+5b5c0 c 64 113
+5b5cc 8 304 139
+5b5d4 8 87 139
+5b5dc 4 88 139
+5b5e0 8 323 101
+5b5e8 8 1153 87
+5b5f0 c 1155 87
+5b5fc c 1140 87
+5b608 8 4309 95
+5b610 c 4309 95
+5b61c c 560 86
+5b628 8 562 86
+5b630 c 562 86
+5b63c 8 560 86
+5b644 8 304 139
+5b64c 8 87 139
+5b654 4 88 139
+5b658 8 323 101
+5b660 10 304 139
+5b670 8 2003 87
+5b678 4 2003 87
+5b67c 10 2007 87
+5b68c 4 2007 87
+5b690 4 333 122
+5b694 14 2007 87
+5b6a8 24 333 122
+5b6cc c 2007 87
+5b6d8 8 2007 87
+5b6e0 8 4309 95
+5b6e8 8 156 132
+5b6f0 10 4317 95
+FUNC 5b700 24 0 testing::internal::UnitTestImpl::~UnitTestImpl
+5b700 c 4309 95
+5b70c 4 4309 95
+5b710 4 4317 95
+5b714 4 4317 95
+5b718 8 4317 95
+5b720 4 4317 95
+FUNC 5b724 e4 0 testing::internal::StreamingListener::UrlEncode
+5b724 c 3702 95
+5b730 4 3703 95
+5b734 4 3711 95
+5b738 4 3702 95
+5b73c 4 3703 95
+5b740 4 3702 95
+5b744 4 3703 95
+5b748 8 3702 95
+5b750 4 3703 95
+5b754 4 3711 95
+5b758 8 3704 95
+5b760 4 3711 95
+5b764 8 3704 95
+5b76c 8 3704 95
+5b774 4 3705 95
+5b778 2c 3705 95
+5b7a4 c 3711 95
+5b7b0 10 3711 95
+5b7c0 c 3711 95
+5b7cc 10 156 132
+5b7dc 4 3712 95
+5b7e0 8 3714 95
+5b7e8 8 3705 95
+5b7f0 18 3719 95
+FUNC 5b808 18c 0 testing::internal::UnitTestOptions::FilterMatchesTest
+5b808 c 485 95
+5b814 4 486 95
+5b818 4 485 95
+5b81c c 486 95
+5b828 c 485 95
+5b834 4 486 95
+5b838 18 486 95
+5b850 4 492 95
+5b854 4 486 95
+5b858 4 493 95
+5b85c c 156 132
+5b868 10 491 95
+5b878 c 492 95
+5b884 c 493 95
+5b890 4 494 95
+5b894 c 495 95
+5b8a0 10 496 95
+5b8b0 4 355 114
+5b8b4 8 324 131
+5b8bc 4 112 132
+5b8c0 4 481 101
+5b8c4 4 324 131
+5b8c8 10 148 137
+5b8d8 4 325 131
+5b8dc 4 498 95
+5b8e0 4 101 103
+5b8e4 8 498 95
+5b8ec 8 156 132
+5b8f4 10 499 95
+5b904 c 499 95
+5b910 8 156 132
+5b918 10 500 95
+5b928 10 502 95
+5b938 10 508 95
+5b948 4 508 95
+5b94c 10 509 95
+5b95c 4 508 95
+5b960 18 156 132
+5b978 1c 510 95
+FUNC 5b994 1f8 0 testing::internal::UnitTestImpl::FilterTests
+5b994 28 4731 95
+5b9bc 8 4731 95
+5b9c4 4 4733 95
+5b9c8 14 4733 95
+5b9dc 18 4735 95
+5b9f4 4 4733 95
+5b9f8 4 4735 95
+5b9fc 4 4766 95
+5ba00 4 4743 95
+5ba04 4 4766 95
+5ba08 4 4755 95
+5ba0c 4 4742 95
+5ba10 4 4741 95
+5ba14 4 4766 95
+5ba18 8 4745 95
+5ba20 4 4755 95
+5ba24 10 192 139
+5ba34 8 4743 95
+5ba3c 4 4744 95
+5ba40 8 4745 95
+5ba48 4 4748 95
+5ba4c 8 4745 95
+5ba54 4 860 82
+5ba58 8 4750 95
+5ba60 c 192 139
+5ba6c 8 4748 95
+5ba74 4 4749 95
+5ba78 10 4750 95
+5ba88 14 4755 95
+5ba9c 10 4757 95
+5baac 4 4758 95
+5bab0 8 4762 95
+5bab8 4 4758 95
+5babc 8 4762 95
+5bac4 4 4763 95
+5bac8 14 4766 95
+5badc c 4766 95
+5bae8 8 4769 95
+5baf0 8 4769 95
+5baf8 4 4721 95
+5bafc 4 4766 95
+5bb00 4 4770 95
+5bb04 4 4769 95
+5bb08 4 4721 95
+5bb0c 8 4770 95
+5bb14 4 4775 95
+5bb18 4 4777 95
+5bb1c 4 4774 95
+5bb20 4 4748 95
+5bb24 10 4775 95
+5bb34 4 156 132
+5bb38 4 860 82
+5bb3c c 156 132
+5bb48 4 4743 95
+5bb4c 8 156 132
+5bb54 4 4766 95
+5bb58 8 4769 95
+5bb60 2c 4782 95
+FUNC 5bb8c 58 0 testing::internal::StreamingListener::SendLn
+5bb8c 10 1174 91
+5bb9c 8 1059 91
+5bba4 4 1143 87
+5bba8 18 1059 91
+5bbc0 c 1059 91
+5bbcc 8 156 132
+5bbd4 10 1174 91
+FUNC 5bbe4 48 0 testing::internal::StreamingListener::OnTestProgramStart
+5bbe4 4 1118 91
+5bbe8 4 1119 91
+5bbec 8 1118 91
+5bbf4 8 1119 91
+5bbfc 4 1118 91
+5bc00 c 1119 91
+5bc0c c 1119 91
+5bc18 8 156 132
+5bc20 c 1120 91
+FUNC 5bc2c 9c 0 testing::internal::StreamingListener::OnTestProgramEnd
+5bc2c 10 1122 91
+5bc3c 4 1125 91
+5bc40 4 1122 91
+5bc44 8 1125 91
+5bc4c 4 1180 91
+5bc50 c 1180 91
+5bc5c 8 1180 91
+5bc64 14 1180 91
+5bc78 14 1125 91
+5bc8c c 1125 91
+5bc98 10 156 132
+5bca8 4 1143 87
+5bcac 4 1128 91
+5bcb0 8 1128 91
+5bcb8 10 1129 91
+FUNC 5bcc8 6c 0 testing::internal::StreamingListener::OnTestIterationStart
+5bcc8 c 1131 91
+5bcd4 4 1132 91
+5bcd8 4 1131 91
+5bcdc 4 1132 91
+5bce0 4 1131 91
+5bce4 4 1132 91
+5bce8 4 1131 91
+5bcec 4 1132 91
+5bcf0 4 1132 91
+5bcf4 14 1132 91
+5bd08 c 1133 91
+5bd14 10 156 132
+5bd24 10 1134 91
+FUNC 5bd34 228 0 testing::internal::UnitTestImpl::ConfigureStreamingOutput
+5bd34 24 4367 95
+5bd58 8 4369 95
+5bd60 c 440 130
+5bd6c c 162 99
+5bd78 8 164 99
+5bd80 c 165 99
+5bd8c c 168 99
+5bd98 8 166 99
+5bda0 c 171 99
+5bdac 8 169 99
+5bdb4 c 174 99
+5bdc0 c 172 99
+5bdcc 8 164 99
+5bdd4 24 178 99
+5bdf8 10 180 99
+5be08 4 181 99
+5be0c 10 183 99
+5be1c 4 184 99
+5be20 10 186 99
+5be30 4 165 99
+5be34 8 447 130
+5be3c 4 447 130
+5be40 8 4371 95
+5be48 40 1023 131
+5be88 c 4373 95
+5be94 c 1113 91
+5bea0 c 1113 91
+5beac 4 1067 91
+5beb0 4 1067 91
+5beb4 10 1067 91
+5bec4 8 1067 91
+5becc c 1067 91
+5bed8 8 1068 91
+5bee0 4 1139 87
+5bee4 14 1178 91
+5bef8 c 1178 91
+5bf04 8 156 132
+5bf0c c 4373 95
+5bf18 14 156 132
+5bf2c c 4376 95
+5bf38 10 4377 95
+5bf48 14 4380 95
+FUNC 5bf5c 64 0 testing::internal::UnitTestImpl::PostFlagParsingInit
+5bf5c c 4388 95
+5bf68 c 4390 95
+5bf74 8 4391 95
+5bf7c 8 760 91
+5bf84 8 760 91
+5bf8c 8 4395 95
+5bf94 8 4401 95
+5bf9c 8 4405 95
+5bfa4 4 4409 95
+5bfa8 8 4412 95
+5bfb0 4 4409 95
+5bfb4 c 4412 95
+FUNC 5bfc0 94 0 testing::internal::AppendUserMessage
+5bfc0 c 1963 95
+5bfcc 4 1965 95
+5bfd0 8 1963 95
+5bfd8 4 1965 95
+5bfdc 4 1963 95
+5bfe0 8 1965 95
+5bfe8 10 1966 95
+5bff8 10 1967 95
+5c008 18 1970 95
+5c020 10 1970 95
+5c030 10 156 132
+5c040 14 1971 95
+FUNC 5c054 a0 0 testing::internal::AssertHelper::operator=
+5c054 10 363 95
+5c064 4 370 95
+5c068 4 363 95
+5c06c 4 363 95
+5c070 c 370 95
+5c07c 10 370 95
+5c08c 14 370 95
+5c0a0 4 370 95
+5c0a4 4 370 95
+5c0a8 10 370 95
+5c0b8 1c 370 95
+5c0d4 10 156 132
+5c0e4 10 371 95
+FUNC 5c0f4 314 0 testing::Test::HasSameFixtureClass
+5c0f4 1c 2229 95
+5c110 8 2230 95
+5c118 4 2287 95
+5c11c 4 743 91
+5c120 c 2234 95
+5c12c 8 2235 95
+5c134 4 2240 95
+5c138 8 2243 95
+5c140 1c 2245 95
+5c15c c 2247 95
+5c168 10 2249 95
+5c178 4 2257 95
+5c17c 4 2257 95
+5c180 4 2257 95
+5c184 4 2259 95
+5c188 14 2261 95
+5c19c 8 333 122
+5c1a4 4 2261 95
+5c1a8 8 2262 95
+5c1b0 38 333 122
+5c1e8 10 2264 95
+5c1f8 4 131 79
+5c1fc c 333 122
+5c208 4 131 79
+5c20c c 333 122
+5c218 10 2266 95
+5c228 4 131 79
+5c22c 10 333 122
+5c23c 4 131 79
+5c240 c 333 122
+5c24c 10 2267 95
+5c25c 4 131 79
+5c260 10 333 122
+5c270 4 131 79
+5c274 10 333 122
+5c284 4 131 79
+5c288 10 333 122
+5c298 8 2269 95
+5c2a0 4 2284 95
+5c2a4 4 2269 95
+5c2a8 8 85 79
+5c2b0 c 2261 95
+5c2bc 18 2273 95
+5c2d4 8 2274 95
+5c2dc 24 333 122
+5c300 10 2276 95
+5c310 4 131 79
+5c314 c 333 122
+5c320 4 131 79
+5c324 10 333 122
+5c334 10 2277 95
+5c344 4 131 79
+5c348 10 333 122
+5c358 10 2278 95
+5c368 4 131 79
+5c36c 10 333 122
+5c37c 4 131 79
+5c380 10 333 122
+5c390 4 131 79
+5c394 10 333 122
+5c3a4 4 131 79
+5c3a8 10 333 122
+5c3b8 4 131 79
+5c3bc 10 333 122
+5c3cc c 2282 95
+5c3d8 8 85 79
+5c3e0 8 2273 95
+5c3e8 20 2288 95
+FUNC 5c408 bc 0 testing::Test::Run
+5c408 c 2425 95
+5c414 4 2425 95
+5c418 c 2426 95
+5c424 8 2428 95
+5c42c 8 2429 95
+5c434 8 2429 95
+5c43c 18 2430 95
+5c454 c 2432 95
+5c460 c 2433 95
+5c46c 8 2433 95
+5c474 18 2435 95
+5c48c c 2441 95
+5c498 8 2441 95
+5c4a0 18 2443 95
+5c4b8 c 2444 95
+FUNC 5c4c4 10c 0 testing::TestInfo::Run
+5c4c4 14 2584 95
+5c4d8 c 2585 95
+5c4e4 4 2588 95
+5c4e8 4 693 91
+5c4ec 4 2588 95
+5c4f0 4 2591 95
+5c4f4 4 3871 95
+5c4f8 4 2594 95
+5c4fc 4 3871 95
+5c500 10 2594 95
+5c510 8 2596 95
+5c518 c 2598 95
+5c524 8 2598 95
+5c52c 4 2603 95
+5c530 8 2395 95
+5c538 10 2418 95
+5c548 4 2607 95
+5c54c 8 2607 95
+5c554 4 2607 95
+5c558 c 2614 95
+5c564 8 2614 95
+5c56c 1c 2616 95
+5c588 8 2618 95
+5c590 4 585 82
+5c594 14 2621 95
+5c5a8 8 693 91
+5c5b0 c 2610 95
+5c5bc 14 2626 95
+FUNC 5c5d0 100 0 testing::TestCase::Run
+5c5d0 14 2713 95
+5c5e4 c 2714 95
+5c5f0 4 2716 95
+5c5f4 4 686 91
+5c5f8 4 2716 95
+5c5fc 4 2727 95
+5c600 4 2719 95
+5c604 4 3871 95
+5c608 4 2721 95
+5c60c 4 3871 95
+5c610 10 2721 95
+5c620 c 2722 95
+5c62c 8 2722 95
+5c634 4 2395 95
+5c638 8 2362 95
+5c640 8 2726 95
+5c648 10 192 139
+5c658 8 2727 95
+5c660 8 2728 95
+5c668 4 2727 95
+5c66c 4 2728 95
+5c670 8 2728 95
+5c678 c 2730 95
+5c684 c 2732 95
+5c690 8 2732 95
+5c698 4 2395 95
+5c69c 8 2362 95
+5c6a4 14 2736 95
+5c6b8 4 686 91
+5c6bc 14 2738 95
+FUNC 5c6d0 3fc 0 testing::internal::UnitTestImpl::RunAllTests
+5c6d0 4 4498 95
+5c6d4 4 320 95
+5c6d8 10 4498 95
+5c6e8 4 4500 95
+5c6ec 10 4498 95
+5c6fc 4 4498 95
+5c700 4 4500 95
+5c704 c 4503 95
+5c710 4 4504 95
+5c714 c 4508 95
+5c720 4 4513 95
+5c724 4 4518 95
+5c728 4 4525 95
+5c72c 8 4529 95
+5c734 4 4525 95
+5c738 4 4529 95
+5c73c 4 4525 95
+5c740 10 4529 95
+5c750 10 4535 95
+5c760 4 4538 95
+5c764 4 4535 95
+5c768 8 4538 95
+5c770 c 4540 95
+5c77c c 4545 95
+5c788 8 4545 95
+5c790 4 138 91
+5c794 4 137 91
+5c798 1c 143 91
+5c7b4 4 144 91
+5c7b8 4 4545 95
+5c7bc 4 4557 95
+5c7c0 4 3871 95
+5c7c4 8 4552 95
+5c7cc 14 4553 95
+5c7e0 4 4557 95
+5c7e4 8 4557 95
+5c7ec 4 4559 95
+5c7f0 4 4560 95
+5c7f4 4 152 91
+5c7f8 4 4548 95
+5c7fc 4 4559 95
+5c800 8 333 122
+5c808 4 152 91
+5c80c 10 333 122
+5c81c 10 4560 95
+5c82c 8 60 98
+5c834 c 871 82
+5c840 8 4565 95
+5c848 4 4568 95
+5c84c 8 4568 95
+5c854 8 714 85
+5c85c 8 4573 95
+5c864 18 4577 95
+5c87c 4 4580 95
+5c880 1c 4582 95
+5c89c 8 60 98
+5c8a4 14 61 98
+5c8b8 14 4584 95
+5c8cc c 4588 95
+5c8d8 20 4596 95
+5c8f8 4 4588 95
+5c8fc 8 594 91
+5c904 10 192 139
+5c914 8 4589 95
+5c91c 14 594 91
+5c930 4 595 91
+5c934 4 595 91
+5c938 8 595 91
+5c940 4 4591 95
+5c944 4 4589 95
+5c948 8 4591 95
+5c950 8 60 98
+5c958 14 61 98
+5c96c 14 4599 95
+5c980 c 4602 95
+5c98c 18 4605 95
+5c9a4 c 576 91
+5c9b0 4 4609 95
+5c9b4 4 4618 95
+5c9b8 4 4609 95
+5c9bc 4 4618 95
+5c9c0 8 4620 95
+5c9c8 4 4622 95
+5c9cc 14 152 91
+5c9e0 4 152 91
+5c9e4 4 333 122
+5c9e8 18 152 91
+5ca00 1c 333 122
+5ca1c 10 153 91
+5ca2c c 333 122
+5ca38 10 154 91
+5ca48 c 333 122
+5ca54 c 152 91
+5ca60 4 156 91
+5ca64 4 155 91
+5ca68 c 156 91
+5ca74 4 4622 95
+5ca78 8 4560 95
+5ca80 8 4560 95
+5ca88 4 4626 95
+5ca8c 4 4628 95
+5ca90 4 4626 95
+5ca94 4 4628 95
+5ca98 c 4626 95
+5caa4 28 4629 95
+FUNC 5cacc cc 0 testing::UnitTest::Run
+5cacc 18 4137 95
+5cae4 4 4137 95
+5cae8 4 4164 95
+5caec 10 4164 95
+5cafc 10 2328 87
+5cb0c 4 3816 95
+5cb10 8 3816 95
+5cb18 10 2298 87
+5cb28 18 3821 95
+5cb40 8 3822 95
+5cb48 4 4168 95
+5cb4c 4 1279 82
+5cb50 8 819 91
+5cb58 4 1279 82
+5cb5c 4 2395 95
+5cb60 c 2418 95
+5cb6c 4 4212 95
+5cb70 4 3827 95
+5cb74 8 3827 95
+5cb7c 8 3828 95
+5cb84 14 4213 95
+FUNC 5cb98 70 0 testing::internal::StreamingListener::OnTestStart
+5cb98 10 1152 91
+5cba8 4 1153 91
+5cbac 4 1152 91
+5cbb0 8 1153 91
+5cbb8 4 1152 91
+5cbbc 8 1153 91
+5cbc4 4 1153 91
+5cbc8 4 1153 91
+5cbcc 10 1153 91
+5cbdc c 1153 91
+5cbe8 10 156 132
+5cbf8 10 1154 91
+FUNC 5cc08 70 0 testing::internal::StreamingListener::OnTestCaseStart
+5cc08 10 1142 91
+5cc18 4 1143 91
+5cc1c 4 1142 91
+5cc20 8 1143 91
+5cc28 4 1142 91
+5cc2c 8 1143 91
+5cc34 4 1143 91
+5cc38 4 1143 91
+5cc3c 10 1143 91
+5cc4c c 1143 91
+5cc58 10 156 132
+5cc68 10 1144 91
+FUNC 5cc78 88 0 testing::FormatCountableNoun
+5cc78 c 2765 95
+5cc84 4 2766 95
+5cc88 4 2766 95
+5cc8c 4 2765 95
+5cc90 8 2765 95
+5cc98 8 2766 95
+5cca0 8 2765 95
+5cca8 4 2766 95
+5ccac 14 2766 95
+5ccc0 4 2767 95
+5ccc4 8 2767 95
+5cccc 4 2767 95
+5ccd0 c 2767 95
+5ccdc 10 156 132
+5ccec 14 2768 95
+FUNC 5cd00 ac 0 testing::internal::PrettyUnitTestResultPrinter::OnTestCaseStart
+5cd00 4 3048 95
+5cd04 4 3050 95
+5cd08 8 3048 95
+5cd10 4 3048 95
+5cd14 4 3050 95
+5cd18 1c 3050 95
+5cd34 10 3051 95
+5cd44 14 3052 95
+5cd58 4 1144 87
+5cd5c 8 797 82
+5cd64 4 3053 95
+5cd68 c 3054 95
+5cd74 14 3056 95
+5cd88 10 3058 95
+5cd98 8 156 132
+5cda0 c 3059 95
+FUNC 5cdac 18c 0 testing::internal::PrettyUnitTestResultPrinter::OnTestIterationStart
+5cdac 4 3008 95
+5cdb0 8 3007 95
+5cdb8 4 3008 95
+5cdbc 8 3007 95
+5cdc4 4 3008 95
+5cdc8 4 3007 95
+5cdcc 4 3008 95
+5cdd0 14 3009 95
+5cde4 24 3015 95
+5ce08 38 3017 95
+5ce40 4 3020 95
+5ce44 10 3021 95
+5ce54 c 2328 87
+5ce60 14 3025 95
+5ce74 c 3028 95
+5ce80 4 798 91
+5ce84 14 3031 95
+5ce98 c 3034 95
+5cea4 4 2772 95
+5cea8 4 2777 95
+5ceac 4 3034 95
+5ceb0 8 3037 95
+5ceb8 1c 2772 95
+5ced4 8 3037 95
+5cedc 18 2777 95
+5cef4 14 3037 95
+5cf08 10 156 132
+5cf18 10 3038 95
+5cf28 10 3039 95
+FUNC 5cf38 2a0 0 testing::internal::FormatEpochTimeInMillisAsIso8601
+5cf38 4 3509 95
+5cf3c 4 3508 95
+5cf40 4 3509 95
+5cf44 8 3508 95
+5cf4c 4 3509 95
+5cf50 4 3515 95
+5cf54 4 3508 95
+5cf58 8 3509 95
+5cf60 4 3515 95
+5cf64 10 3508 95
+5cf74 4 3508 95
+5cf78 8 3515 95
+5cf80 18 3516 95
+5cf98 c 3520 95
+5cfa4 4 3520 95
+5cfa8 c 3520 95
+5cfb4 4 3520 95
+5cfb8 4 3520 95
+5cfbc 10 3520 95
+5cfcc 4 3520 95
+5cfd0 4 3520 95
+5cfd4 4 3521 95
+5cfd8 4 3520 95
+5cfdc 4 3521 95
+5cfe0 8 3520 95
+5cfe8 4 3523 95
+5cfec 8 3520 95
+5cff4 10 3520 95
+5d004 c 3521 95
+5d010 4 3523 95
+5d014 4 3521 95
+5d018 c 3521 95
+5d024 18 3521 95
+5d03c 24 3522 95
+5d060 14 3522 95
+5d074 28 3522 95
+5d09c 1c 3523 95
+5d0b8 4 3523 95
+5d0bc 4 3523 95
+5d0c0 c 3523 95
+5d0cc 18 3523 95
+5d0e4 20 3524 95
+5d104 c 3525 95
+5d110 14 3525 95
+5d124 90 156 132
+5d1b4 24 3526 95
+FUNC 5d1d8 e0 0 testing::internal::ParseFlagValue
+5d1d8 14 4955 95
+5d1ec 4 4955 95
+5d1f0 8 4957 95
+5d1f8 1c 4960 95
+5d214 4 4960 95
+5d218 4 4960 95
+5d21c 4 4960 95
+5d220 14 4960 95
+5d234 10 4960 95
+5d244 c 156 132
+5d250 4 4962 95
+5d254 4 156 132
+5d258 8 400 131
+5d260 4 4962 95
+5d264 4 400 131
+5d268 8 4962 95
+5d270 4 4962 95
+5d274 8 4965 95
+5d27c 8 4968 95
+5d284 4 4968 95
+5d288 8 4978 95
+5d290 c 156 132
+5d29c 4 4957 95
+5d2a0 18 4979 95
+FUNC 5d2b8 54 0 testing::internal::ParseBoolFlag
+5d2b8 c 4991 95
+5d2c4 4 4991 95
+5d2c8 8 4993 95
+5d2d0 4 4996 95
+5d2d4 4 4996 95
+5d2d8 4 4999 95
+5d2dc c 4999 95
+5d2e8 8 4999 95
+5d2f0 4 5000 95
+5d2f4 4 4999 95
+5d2f8 4 4999 95
+5d2fc 10 5001 95
+FUNC 5d30c 8c 0 testing::internal::ParseInt32Flag
+5d30c 10 5008 95
+5d31c 4 5010 95
+5d320 8 5008 95
+5d328 4 5008 95
+5d32c 8 5010 95
+5d334 4 5013 95
+5d338 4 5013 95
+5d33c c 5016 95
+5d348 14 333 122
+5d35c c 5016 95
+5d368 10 5017 95
+5d378 8 85 79
+5d380 18 5018 95
+FUNC 5d398 38 0 testing::internal::ParseStringFlag
+5d398 c 5025 95
+5d3a4 4 5025 95
+5d3a8 c 5027 95
+5d3b4 4 5030 95
+5d3b8 8 5033 95
+5d3c0 4 5034 95
+5d3c4 c 5035 95
+FUNC 5d3d0 374 0 testing::internal::ParseGoogleTestFlagsOnlyImpl<char>
+5d3d0 10 5165 95
+5d3e0 8 5176 95
+5d3e8 4 5178 95
+5d3ec c 5165 95
+5d3f8 8 5165 95
+5d400 4 5166 95
+5d404 8 5176 95
+5d40c 4 5178 95
+5d410 c 5166 95
+5d41c 18 5167 95
+5d434 14 5176 95
+5d448 4 5175 95
+5d44c 18 5178 95
+5d464 4 5175 95
+5d468 1c 5180 95
+5d484 4 5175 95
+5d488 1c 5181 95
+5d4a4 4 5175 95
+5d4a8 1c 5183 95
+5d4c4 4 5175 95
+5d4c8 1c 5185 95
+5d4e4 4 5175 95
+5d4e8 1c 5186 95
+5d504 4 5175 95
+5d508 1c 5188 95
+5d524 4 5175 95
+5d528 1c 5189 95
+5d544 4 5175 95
+5d548 1c 5190 95
+5d564 4 5175 95
+5d568 1c 5191 95
+5d584 4 5175 95
+5d588 1c 5192 95
+5d5a4 4 5175 95
+5d5a8 1c 5193 95
+5d5c4 4 5175 95
+5d5c8 1c 5194 95
+5d5e4 4 5175 95
+5d5e8 1c 5196 95
+5d604 4 5175 95
+5d608 1c 5198 95
+5d624 4 5175 95
+5d628 1c 5200 95
+5d644 8 5175 95
+5d64c c 5225 95
+5d658 c 5229 95
+5d664 4 5165 95
+5d668 10 5206 95
+5d678 4 5207 95
+5d67c 4 5206 95
+5d680 8 5207 95
+5d688 4 5211 95
+5d68c 4 5215 95
+5d690 8 5211 95
+5d698 18 5216 95
+5d6b0 14 5216 95
+5d6c4 4 5216 95
+5d6c8 c 5221 95
+5d6d4 4 156 132
+5d6d8 4 5166 95
+5d6dc 8 156 132
+5d6e4 14 5217 95
+5d6f8 4 5216 95
+5d6fc 14 5217 95
+5d710 4 5216 95
+5d714 c 5218 95
+5d720 8 5216 95
+5d728 1c 5231 95
+FUNC 5d744 150 0 testing::internal::StreamingListener::OnTestPartResult
+5d744 20 1163 91
+5d764 8 1163 91
+5d76c 4 77 81
+5d770 c 1165 91
+5d77c 8 1166 91
+5d784 4 1167 91
+5d788 4 1167 91
+5d78c 4 1167 91
+5d790 4 1167 91
+5d794 4 1168 91
+5d798 4 1168 91
+5d79c 4 1167 91
+5d7a0 4 1168 91
+5d7a4 10 1167 91
+5d7b4 4 1169 91
+5d7b8 4 1167 91
+5d7bc 14 1167 91
+5d7d0 c 1168 91
+5d7dc 4 1168 91
+5d7e0 4 1168 91
+5d7e4 4 1168 91
+5d7e8 10 1168 91
+5d7f8 14 1168 91
+5d80c 8 1169 91
+5d814 4 1169 91
+5d818 4 1169 91
+5d81c 10 1169 91
+5d82c c 1169 91
+5d838 40 156 132
+5d878 1c 1170 91
+FUNC 5d894 47c 0 testing::internal::XmlUnitTestResultPrinter::OutputXmlTestInfo
+5d894 14 3568 95
+5d8a8 4 700 82
+5d8ac 8 3568 95
+5d8b4 4 700 82
+5d8b8 4 3570 95
+5d8bc 8 3568 95
+5d8c4 4 3570 95
+5d8c8 4 3568 95
+5d8cc 4 3570 95
+5d8d0 4 3568 95
+5d8d4 c 3570 95
+5d8e0 4 3573 95
+5d8e4 4 3568 95
+5d8e8 4 3573 95
+5d8ec 4 3568 95
+5d8f0 4 3570 95
+5d8f4 4 3573 95
+5d8f8 10 333 122
+5d908 14 3573 95
+5d91c 10 3573 95
+5d92c 14 3573 95
+5d940 10 156 132
+5d950 4 1144 87
+5d954 4 668 82
+5d958 8 3575 95
+5d960 14 3577 95
+5d974 4 1144 87
+5d978 4 670 82
+5d97c 8 668 82
+5d984 c 3577 95
+5d990 14 3577 95
+5d9a4 10 156 132
+5d9b4 4 1144 87
+5d9b8 4 660 82
+5d9bc 8 3579 95
+5d9c4 14 3580 95
+5d9d8 4 1144 87
+5d9dc 4 662 82
+5d9e0 8 660 82
+5d9e8 c 3580 95
+5d9f4 14 3580 95
+5da08 10 156 132
+5da18 14 3584 95
+5da2c 8 3584 95
+5da34 c 3584 95
+5da40 8 3584 95
+5da48 8 3584 95
+5da50 4 3591 95
+5da54 4 3584 95
+5da58 4 3590 95
+5da5c 14 3584 95
+5da70 10 156 132
+5da80 14 3586 95
+5da94 10 3586 95
+5daa4 14 3586 95
+5dab8 10 156 132
+5dac8 14 3587 95
+5dadc 10 3587 95
+5daec 14 3587 95
+5db00 10 156 132
+5db10 c 3588 95
+5db1c c 3588 95
+5db28 8 156 132
+5db30 c 192 139
+5db3c c 3599 95
+5db48 c 333 122
+5db54 8 3601 95
+5db5c 18 192 139
+5db74 8 3591 95
+5db7c 10 3592 95
+5db8c 8 3593 95
+5db94 c 3594 95
+5dba0 14 333 122
+5dbb4 4 3598 95
+5dbb8 8 77 81
+5dbc0 c 3598 95
+5dbcc 10 3599 95
+5dbdc 10 3599 95
+5dbec 8 156 132
+5dbf4 c 333 122
+5dc00 10 3601 95
+5dc10 10 3328 95
+5dc20 c 3601 95
+5dc2c c 333 122
+5dc38 10 156 132
+5dc48 10 3603 95
+5dc58 10 3603 95
+5dc68 8 156 132
+5dc70 c 3604 95
+5dc7c c 3604 95
+5dc88 8 156 132
+5dc90 10 333 122
+5dca0 18 156 132
+5dcb8 8 3591 95
+5dcc0 4 333 122
+5dcc4 4 3609 95
+5dcc8 18 333 122
+5dce0 8 156 132
+5dce8 28 3613 95
+FUNC 5dd10 2e4 0 testing::internal::XmlUnitTestResultPrinter::PrintXmlTestCase
+5dd10 10 3617 95
+5dd20 8 3618 95
+5dd28 8 3617 95
+5dd30 4 3618 95
+5dd34 4 3617 95
+5dd38 c 3618 95
+5dd44 4 3617 95
+5dd48 4 3620 95
+5dd4c 4 3618 95
+5dd50 4 3620 95
+5dd54 c 333 122
+5dd60 4 3620 95
+5dd64 4 333 122
+5dd68 c 3619 95
+5dd74 14 3620 95
+5dd88 10 3620 95
+5dd98 14 3620 95
+5ddac 10 156 132
+5ddbc 14 3622 95
+5ddd0 8 3622 95
+5ddd8 4 3622 95
+5dddc c 3622 95
+5dde8 14 3622 95
+5ddfc 10 156 132
+5de0c 14 3624 95
+5de20 8 3624 95
+5de28 4 3624 95
+5de2c c 3624 95
+5de38 14 3624 95
+5de4c 10 156 132
+5de5c 14 3627 95
+5de70 8 3627 95
+5de78 4 3627 95
+5de7c c 3627 95
+5de88 14 3627 95
+5de9c 10 156 132
+5deac 14 3628 95
+5dec0 14 3628 95
+5ded4 14 3628 95
+5dee8 10 156 132
+5def8 14 3630 95
+5df0c c 3630 95
+5df18 14 3630 95
+5df2c 4 156 132
+5df30 4 333 122
+5df34 c 156 132
+5df40 c 3631 95
+5df4c c 3631 95
+5df58 8 333 122
+5df60 4 156 132
+5df64 4 3634 95
+5df68 4 156 132
+5df6c 10 192 139
+5df7c 8 3634 95
+5df84 18 3635 95
+5df9c c 3636 95
+5dfa8 8 3634 95
+5dfb0 10 333 122
+5dfc0 c 3638 95
+5dfcc 8 333 122
+5dfd4 8 156 132
+5dfdc 18 3639 95
+FUNC 5dff4 3ac 0 testing::internal::XmlUnitTestResultPrinter::PrintXmlUnitTest
+5dff4 10 3643 95
+5e004 8 3644 95
+5e00c 8 3643 95
+5e014 4 3644 95
+5e018 4 3643 95
+5e01c c 3644 95
+5e028 4 3643 95
+5e02c 4 3650 95
+5e030 4 3644 95
+5e034 4 3650 95
+5e038 c 333 122
+5e044 4 3650 95
+5e048 14 333 122
+5e05c c 3647 95
+5e068 14 3650 95
+5e07c 8 3650 95
+5e084 4 3650 95
+5e088 c 3650 95
+5e094 14 3650 95
+5e0a8 10 156 132
+5e0b8 14 3652 95
+5e0cc 8 3652 95
+5e0d4 4 3652 95
+5e0d8 c 3652 95
+5e0e4 14 3652 95
+5e0f8 10 156 132
+5e108 14 3655 95
+5e11c 8 3655 95
+5e124 4 3655 95
+5e128 c 3655 95
+5e134 14 3655 95
+5e148 10 156 132
+5e158 14 3656 95
+5e16c 14 3656 95
+5e180 14 3656 95
+5e194 10 156 132
+5e1a4 14 3659 95
+5e1b8 4 570 91
+5e1bc c 3659 95
+5e1c8 14 3659 95
+5e1dc 10 156 132
+5e1ec 14 3661 95
+5e200 4 573 91
+5e204 c 3661 95
+5e210 14 3661 95
+5e224 10 156 132
+5e234 c 3663 95
+5e240 14 3665 95
+5e254 4 798 91
+5e258 4 3665 95
+5e25c 8 3665 95
+5e264 8 3665 95
+5e26c 14 3665 95
+5e280 10 156 132
+5e290 4 606 91
+5e294 c 3668 95
+5e2a0 c 3668 95
+5e2ac 8 156 132
+5e2b4 14 3670 95
+5e2c8 14 3670 95
+5e2dc 14 3670 95
+5e2f0 4 156 132
+5e2f4 4 3673 95
+5e2f8 8 156 132
+5e300 4 333 122
+5e304 4 156 132
+5e308 c 333 122
+5e314 8 3673 95
+5e31c 8 3673 95
+5e324 c 3674 95
+5e330 4 3674 95
+5e334 8 3674 95
+5e33c 10 3675 95
+5e34c 8 3675 95
+5e354 8 3673 95
+5e35c 10 333 122
+5e36c c 3677 95
+5e378 8 333 122
+5e380 8 156 132
+5e388 18 3678 95
+FUNC 5e3a0 108 0 testing::internal::XmlUnitTestResultPrinter::OnTestIterationEnd
+5e3a0 14 3383 95
+5e3b4 8 3385 95
+5e3bc 4 3383 95
+5e3c0 4 3385 95
+5e3c4 4 3383 95
+5e3c8 4 3385 95
+5e3cc 10 3386 95
+5e3dc 10 3388 95
+5e3ec 20 3404 95
+5e40c 8 3405 95
+5e414 8 3406 95
+5e41c 14 2298 87
+5e430 4 3391 95
+5e434 c 3408 95
+5e440 4 3410 95
+5e444 4 3408 95
+5e448 c 3409 95
+5e454 c 3410 95
+5e460 c 3410 95
+5e46c 8 156 132
+5e474 8 3411 95
+5e47c 8 3408 95
+5e484 10 156 132
+5e494 14 3412 95
+FUNC 5e4a8 c0 0 std::priv::__put_num<char, std::char_traits<char>, long long int>
+5e4a8 10 194 121
+5e4b8 8 194 121
+5e4c0 10 181 122
+5e4d0 4 199 121
+5e4d4 18 211 121
+5e4ec 4 202 121
+5e4f0 4 145 110
+5e4f4 4 202 121
+5e4f8 4 145 110
+5e4fc 4 202 121
+5e500 8 145 110
+5e508 8 202 121
+5e510 4 78 120
+5e514 4 202 121
+5e518 8 78 120
+5e520 c 202 121
+5e52c 4 78 120
+5e530 4 57 123
+5e534 c 78 120
+5e540 8 202 121
+5e548 4 210 121
+5e54c 8 212 121
+5e554 14 213 121
+FUNC 5e568 5c 0 testing::internal::StreamableToString<long long int>
+5e568 c 243 79
+5e574 4 244 79
+5e578 4 243 79
+5e57c 4 243 79
+5e580 4 244 79
+5e584 4 243 79
+5e588 4 244 79
+5e58c 10 268 121
+5e59c c 244 79
+5e5a8 8 85 79
+5e5b0 14 245 79
+FUNC 5e5c4 d4 0 testing::internal::PrettyUnitTestResultPrinter::OnTestEnd
+5e5c4 c 3080 95
+5e5d0 4 700 82
+5e5d4 4 3080 95
+5e5d8 c 540 82
+5e5e4 4 3081 95
+5e5e8 10 3082 95
+5e5f8 10 3084 95
+5e608 14 2983 95
+5e61c c 3087 95
+5e628 4 3087 95
+5e62c 8 3088 95
+5e634 c 3090 95
+5e640 4 3092 95
+5e644 4 3092 95
+5e648 4 3092 95
+5e64c c 3092 95
+5e658 10 3092 95
+5e668 c 156 132
+5e674 8 3094 95
+5e67c 10 3096 95
+5e68c c 3097 95
+FUNC 5e698 23c 0 testing::internal::PrettyUnitTestResultPrinter::OnTestIterationEnd
+5e698 4 3144 95
+5e69c 4 3145 95
+5e6a0 c 3144 95
+5e6ac 8 3145 95
+5e6b4 4 2777 95
+5e6b8 8 3144 95
+5e6c0 4 3145 95
+5e6c4 4 2772 95
+5e6c8 4 3148 95
+5e6cc 8 2772 95
+5e6d4 4 3148 95
+5e6d8 14 2772 95
+5e6ec 8 3148 95
+5e6f4 18 2777 95
+5e70c 14 3148 95
+5e720 10 156 132
+5e730 c 3149 95
+5e73c 4 573 91
+5e740 4 3151 95
+5e744 8 3151 95
+5e74c 8 3151 95
+5e754 10 3151 95
+5e764 8 156 132
+5e76c 4 3153 95
+5e770 8 2772 95
+5e778 4 3153 95
+5e77c 10 3154 95
+5e78c 8 3155 95
+5e794 10 2772 95
+5e7a4 10 3155 95
+5e7b4 8 156 132
+5e7bc c 3157 95
+5e7c8 10 3158 95
+5e7d8 c 3159 95
+5e7e4 10 3160 95
+5e7f4 14 2772 95
+5e808 10 3161 95
+5e818 8 156 132
+5e820 8 3162 95
+5e828 8 3164 95
+5e830 c 3164 95
+5e83c 8 3164 95
+5e844 10 3164 95
+5e854 c 3167 95
+5e860 4 3168 95
+5e864 c 3168 95
+5e870 4 3169 95
+5e874 10 3170 95
+5e884 8 3175 95
+5e88c c 3175 95
+5e898 8 3175 95
+5e8a0 10 3175 95
+5e8b0 10 3178 95
+5e8c0 14 3179 95
+FUNC 5e8d4 bc 0 testing::internal::PrettyUnitTestResultPrinter::OnTestCaseEnd
+5e8d4 4 3100 95
+5e8d8 8 3099 95
+5e8e0 4 3100 95
+5e8e4 4 3099 95
+5e8e8 4 3100 95
+5e8ec 8 3103 95
+5e8f4 4 3103 95
+5e8f8 4 3103 95
+5e8fc 18 3103 95
+5e914 14 3104 95
+5e928 4 3107 95
+5e92c c 3107 95
+5e938 4 3107 95
+5e93c 10 3107 95
+5e94c 18 3107 95
+5e964 8 156 132
+5e96c 10 3108 95
+5e97c 8 156 132
+5e984 c 3109 95
+FUNC 5e990 11c 0 testing::internal::StreamingListener::OnTestEnd
+5e990 c 1156 91
+5e99c 4 700 82
+5e9a0 8 1156 91
+5e9a8 4 540 82
+5e9ac 8 1156 91
+5e9b4 8 540 82
+5e9bc 4 1180 91
+5e9c0 c 1180 91
+5e9cc 8 1180 91
+5e9d4 10 1180 91
+5e9e4 4 1157 91
+5e9e8 4 1158 91
+5e9ec 4 1180 91
+5e9f0 4 1159 91
+5e9f4 14 1157 91
+5ea08 14 1158 91
+5ea1c 18 1159 91
+5ea34 10 1159 91
+5ea44 14 1160 91
+5ea58 c 1160 91
+5ea64 30 156 132
+5ea94 18 1161 91
+FUNC 5eaac 11c 0 testing::internal::StreamingListener::OnTestCaseEnd
+5eaac 10 1146 91
+5eabc 4 830 82
+5eac0 c 1146 91
+5eacc 4 1146 91
+5ead0 4 830 82
+5ead4 8 1180 91
+5eadc c 1180 91
+5eae8 8 1180 91
+5eaf0 10 1180 91
+5eb00 4 1147 91
+5eb04 4 1148 91
+5eb08 4 1180 91
+5eb0c 4 1148 91
+5eb10 14 1147 91
+5eb24 1c 1148 91
+5eb40 8 1148 91
+5eb48 4 1148 91
+5eb4c 4 1148 91
+5eb50 10 1148 91
+5eb60 14 1149 91
+5eb74 c 1149 91
+5eb80 30 156 132
+5ebb0 18 1150 91
+FUNC 5ebc8 124 0 testing::internal::StreamingListener::OnTestIterationEnd
+5ebc8 10 1136 91
+5ebd8 4 1137 91
+5ebdc c 1136 91
+5ebe8 4 1136 91
+5ebec 8 1137 91
+5ebf4 4 1180 91
+5ebf8 c 1180 91
+5ec04 8 1180 91
+5ec0c 10 1180 91
+5ec1c 4 1137 91
+5ec20 4 1138 91
+5ec24 4 1180 91
+5ec28 4 1138 91
+5ec2c 14 1137 91
+5ec40 14 1138 91
+5ec54 4 573 91
+5ec58 4 1138 91
+5ec5c 8 1138 91
+5ec64 8 1138 91
+5ec6c 8 1138 91
+5ec74 10 1138 91
+5ec84 14 1139 91
+5ec98 c 1139 91
+5eca4 30 156 132
+5ecd4 18 1140 91
+FUNC 5ecec 1a0 0 std::priv::_Impl_vector<testing::internal::edit_distance::EditType, std::allocator<testing::internal::edit_distance::EditType> >::_M_insert_overflow_aux
+5ecec 18 81 138
+5ed04 8 81 138
+5ed0c c 192 139
+5ed18 4 173 139
+5ed1c 4 192 139
+5ed20 c 173 139
+5ed2c 14 41 138
+5ed40 4 175 139
+5ed44 10 176 139
+5ed54 4 177 139
+5ed58 10 87 138
+5ed68 8 551 101
+5ed70 8 91 138
+5ed78 14 86 137
+5ed8c 8 86 137
+5ed94 8 139 103
+5ed9c 8 139 103
+5eda4 14 86 137
+5edb8 10 93 138
+5edc8 4 119 103
+5edcc 8 119 103
+5edd4 8 95 138
+5eddc 8 314 137
+5ede4 4 249 137
+5ede8 8 249 137
+5edf0 4 139 103
+5edf4 8 139 103
+5edfc c 249 137
+5ee08 4 98 138
+5ee0c 14 86 137
+5ee20 8 86 137
+5ee28 8 139 103
+5ee30 8 139 103
+5ee38 1c 86 137
+5ee54 8 662 139
+5ee5c 4 319 101
+5ee60 4 323 101
+5ee64 4 104 138
+5ee68 4 666 139
+5ee6c 4 667 139
+5ee70 4 104 138
+5ee74 4 105 138
+5ee78 4 668 139
+5ee7c 10 105 138
+FUNC 5ee90 63c 0 testing::internal::edit_distance::CalculateOptimalEdits
+5ee90 28 990 95
+5eeb8 4 70 139
+5eebc 4 990 95
+5eec0 8 192 139
+5eec8 4 70 139
+5eecc 10 192 139
+5eedc 4 481 101
+5eee0 4 992 95
+5eee4 8 192 139
+5eeec 4 342 101
+5eef0 4 992 95
+5eef4 8 342 101
+5eefc c 343 101
+5ef08 8 343 101
+5ef10 4 356 101
+5ef14 4 346 101
+5ef18 8 347 101
+5ef20 4 348 101
+5ef24 8 352 101
+5ef2c 4 146 103
+5ef30 4 73 139
+5ef34 4 71 139
+5ef38 4 249 137
+5ef3c 4 73 139
+5ef40 4 249 137
+5ef44 8 314 137
+5ef4c 8 249 137
+5ef54 c 146 103
+5ef60 4 342 101
+5ef64 4 244 139
+5ef68 c 342 101
+5ef74 4 346 101
+5ef78 10 347 101
+5ef88 8 348 101
+5ef90 c 352 101
+5ef9c 4 346 101
+5efa0 4 356 101
+5efa4 4 73 139
+5efa8 4 342 101
+5efac 4 314 137
+5efb0 4 73 139
+5efb4 8 249 137
+5efbc 4 314 137
+5efc0 4 348 101
+5efc4 4 249 137
+5efc8 4 73 139
+5efcc 8 249 137
+5efd4 8 249 137
+5efdc 4 139 103
+5efe0 8 192 139
+5efe8 4 70 139
+5efec 4 192 139
+5eff0 4 70 139
+5eff4 4 192 139
+5eff8 4 481 101
+5effc 8 342 101
+5f004 4 356 101
+5f008 4 346 101
+5f00c 4 348 101
+5f010 4 347 101
+5f014 4 348 101
+5f018 4 353 101
+5f01c 8 352 101
+5f024 4 71 139
+5f028 4 73 139
+5f02c 4 72 139
+5f030 4 73 139
+5f034 c 120 137
+5f040 4 249 139
+5f044 c 249 137
+5f050 c 304 139
+5f05c 4 70 139
+5f060 8 192 139
+5f068 4 70 139
+5f06c 10 192 139
+5f07c 4 481 101
+5f080 4 994 95
+5f084 4 192 139
+5f088 4 551 101
+5f08c 4 192 139
+5f090 8 994 95
+5f098 4 551 101
+5f09c 4 314 137
+5f0a0 4 551 101
+5f0a4 4 71 139
+5f0a8 4 73 139
+5f0ac 4 314 137
+5f0b0 8 73 139
+5f0b8 4 249 137
+5f0bc 8 249 137
+5f0c4 4 139 103
+5f0c8 4 139 103
+5f0cc c 249 137
+5f0d8 4 342 101
+5f0dc 4 244 139
+5f0e0 c 342 101
+5f0ec 4 346 101
+5f0f0 c 347 101
+5f0fc c 348 101
+5f108 c 352 101
+5f114 4 346 101
+5f118 4 356 101
+5f11c 8 73 139
+5f124 4 314 137
+5f128 4 73 139
+5f12c 8 249 137
+5f134 4 314 137
+5f138 8 249 137
+5f140 8 249 137
+5f148 4 139 103
+5f14c 18 192 139
+5f164 4 70 139
+5f168 4 551 101
+5f16c 4 70 139
+5f170 4 481 101
+5f174 8 551 101
+5f17c 4 71 139
+5f180 8 72 139
+5f188 c 73 139
+5f194 18 86 137
+5f1ac 8 86 137
+5f1b4 8 139 103
+5f1bc 8 139 103
+5f1c4 18 86 137
+5f1dc 4 249 139
+5f1e0 c 249 137
+5f1ec c 42 143
+5f1f8 8 997 95
+5f200 4 999 95
+5f204 c 997 95
+5f210 4 998 95
+5f214 8 997 95
+5f21c 8 998 95
+5f224 c 999 95
+5f230 4 1004 95
+5f234 c 192 139
+5f240 8 1002 95
+5f248 8 1003 95
+5f250 4 202 139
+5f254 4 1004 95
+5f258 8 1002 95
+5f260 c 1028 95
+5f26c 4 1002 95
+5f270 4 1029 95
+5f274 4 1024 95
+5f278 4 1023 95
+5f27c 4 1021 95
+5f280 c 192 139
+5f28c 14 1007 95
+5f2a0 c 192 139
+5f2ac 8 1008 95
+5f2b4 1c 1009 95
+5f2d0 10 1011 95
+5f2e0 8 1012 95
+5f2e8 c 1013 95
+5f2f4 4 1017 95
+5f2f8 4 1016 95
+5f2fc 4 1018 95
+5f300 10 1019 95
+5f310 8 1020 95
+5f318 c 1021 95
+5f324 10 1022 95
+5f334 8 1023 95
+5f33c c 1024 95
+5f348 8 1028 95
+5f350 8 1029 95
+5f358 c 1008 95
+5f364 10 1007 95
+5f374 c 67 139
+5f380 4 162 139
+5f384 4 481 101
+5f388 20 192 139
+5f3a8 c 1036 95
+5f3b4 8 380 139
+5f3bc 4 1037 95
+5f3c0 4 380 139
+5f3c4 8 1037 95
+5f3cc 4 380 139
+5f3d0 4 119 103
+5f3d4 4 119 103
+5f3d8 10 382 139
+5f3e8 20 162 139
+5f408 c 1039 95
+5f414 8 1040 95
+5f41c 4 1039 95
+5f420 10 1040 95
+5f430 8 324 98
+5f438 4 92 100
+5f43c 4 91 100
+5f440 4 92 100
+5f444 c 93 100
+5f450 c 191 103
+5f45c 10 42 143
+5f46c 4 87 139
+5f470 10 323 101
+5f480 c 191 103
+5f48c 10 304 139
+5f49c c 323 101
+5f4a8 24 1044 95
+FUNC 5f4d8 60 0 std::priv::_Impl_vector<testing::TestPartResult, std::allocator<testing::TestPartResult> >::push_back
+5f4d8 10 376 139
+5f4e8 4 376 139
+5f4ec 10 380 139
+5f4fc 4 119 103
+5f500 8 119 103
+5f508 10 382 139
+5f518 14 162 139
+5f52c c 388 139
+FUNC 5f538 58 0 testing::internal::DefaultGlobalTestPartResultReporter::ReportTestPartResult
+5f538 c 672 95
+5f544 8 672 95
+5f54c 4 673 95
+5f550 4 4872 95
+5f554 4 4872 95
+5f558 c 4872 95
+5f564 8 173 143
+5f56c 8 3871 95
+5f574 4 674 95
+5f578 c 674 95
+5f584 c 675 95
+FUNC 5f590 244 0 std::priv::_Impl_vector<testing::internal::TraceInfo, std::allocator<testing::internal::TraceInfo> >::_M_insert_overflow_aux
+5f590 20 81 138
+5f5b0 8 192 139
+5f5b8 4 81 138
+5f5bc 4 192 139
+5f5c0 4 81 138
+5f5c4 4 192 139
+5f5c8 8 173 139
+5f5d0 c 81 138
+5f5dc 4 173 139
+5f5e0 4 81 138
+5f5e4 4 173 139
+5f5e8 14 41 138
+5f5fc 4 175 139
+5f600 10 176 139
+5f610 4 356 101
+5f614 8 346 101
+5f61c 4 177 139
+5f620 c 347 101
+5f62c 4 348 101
+5f630 4 352 101
+5f634 4 348 101
+5f638 4 352 101
+5f63c 4 91 138
+5f640 4 84 137
+5f644 10 86 137
+5f654 8 86 137
+5f65c 4 139 103
+5f660 1c 466 91
+5f67c 4 89 137
+5f680 14 86 137
+5f694 c 93 138
+5f6a0 4 119 103
+5f6a4 1c 466 91
+5f6c0 8 95 138
+5f6c8 8 314 137
+5f6d0 4 249 137
+5f6d4 4 466 91
+5f6d8 8 249 137
+5f6e0 4 139 103
+5f6e4 1c 466 91
+5f700 c 249 137
+5f70c 8 98 138
+5f714 c 86 137
+5f720 4 84 137
+5f724 8 86 137
+5f72c 8 86 137
+5f734 4 139 103
+5f738 1c 466 91
+5f754 4 89 137
+5f758 20 86 137
+5f778 8 191 103
+5f780 10 156 132
+5f790 c 662 139
+5f79c 4 319 101
+5f7a0 4 323 101
+5f7a4 4 104 138
+5f7a8 4 666 139
+5f7ac 4 667 139
+5f7b0 4 668 139
+5f7b4 20 105 138
+FUNC 5f7d4 98 0 testing::UnitTest::PushGTestTrace
+5f7d4 c 4263 95
+5f7e0 4 4263 95
+5f7e4 4 4264 95
+5f7e8 4 4263 95
+5f7ec 8 1963 87
+5f7f4 4 752 91
+5f7f8 8 2010 87
+5f800 8 380 139
+5f808 4 2010 87
+5f80c c 380 139
+5f818 4 119 103
+5f81c 1c 466 91
+5f838 10 382 139
+5f848 10 162 139
+5f858 8 4265 95
+5f860 c 4266 95
+FUNC 5f86c 88 0 testing::internal::ScopedTrace::ScopedTrace
+5f86c c 3769 95
+5f878 8 466 91
+5f880 4 3769 95
+5f884 4 466 91
+5f888 4 3769 95
+5f88c 4 466 91
+5f890 8 3769 95
+5f898 8 466 91
+5f8a0 4 3772 95
+5f8a4 8 3774 95
+5f8ac 4 3773 95
+5f8b0 4 3774 95
+5f8b4 4 3773 95
+5f8b8 4 3774 95
+5f8bc c 3774 95
+5f8c8 8 156 132
+5f8d0 4 3776 95
+5f8d4 8 3776 95
+5f8dc 8 156 132
+5f8e4 10 3777 95
+FUNC 5f8f4 148 0 std::priv::_Impl_vector<void*, std::allocator<void*> >::_M_fill_insert_aux
+5f8f4 18 140 138
+5f90c c 140 138
+5f918 4 416 139
+5f91c 8 140 138
+5f924 8 416 139
+5f92c 8 416 139
+5f934 8 150 138
+5f93c 8 152 138
+5f944 4 153 138
+5f948 4 120 137
+5f94c 4 153 138
+5f950 c 120 137
+5f95c 4 154 138
+5f960 4 255 100
+5f964 4 256 100
+5f968 8 154 138
+5f970 4 256 100
+5f974 c 256 100
+5f980 c 442 100
+5f98c 8 442 100
+5f994 10 443 100
+5f9a4 4 158 138
+5f9a8 4 249 137
+5f9ac 8 314 137
+5f9b4 8 249 137
+5f9bc c 249 137
+5f9c8 c 146 103
+5f9d4 4 158 138
+5f9d8 c 120 137
+5f9e4 14 160 138
+5f9f8 8 442 100
+5fa00 10 443 100
+5fa10 c 146 138
+5fa1c 8 147 138
+5fa24 18 163 138
+FUNC 5fa3c 1a4 0 testing::internal::UnitTestImpl::GetTestCase
+5fa3c 1c 4452 95
+5fa58 4 4456 95
+5fa5c c 4452 95
+5fa68 c 4456 95
+5fa74 8 4452 95
+5fa7c 4 4426 95
+5fa80 4 4452 95
+5fa84 4 4456 95
+5fa88 4 4422 95
+5fa8c c 4426 95
+5fa98 c 4422 95
+5faa4 18 217 99
+5fabc 18 156 132
+5fad4 10 4458 95
+5fae4 8 4459 95
+5faec 10 4463 95
+5fafc 14 4463 95
+5fb10 4 4463 95
+5fb14 10 4467 95
+5fb24 14 4466 95
+5fb38 c 156 132
+5fb44 4 4466 95
+5fb48 4 4472 95
+5fb4c 4 4474 95
+5fb50 8 4472 95
+5fb58 4 4474 95
+5fb5c 14 172 138
+5fb70 14 173 138
+5fb84 14 176 138
+5fb98 8 173 143
+5fba0 14 192 139
+5fbb4 4 173 143
+5fbb8 4 4480 95
+5fbbc 4 173 143
+5fbc0 4 4481 95
+5fbc4 1c 4482 95
+FUNC 5fbe0 16c 0 testing::internal::MakeAndRegisterTestInfo
+5fbe0 10 2508 95
+5fbf0 4 2511 95
+5fbf4 4 2511 95
+5fbf8 c 2508 95
+5fc04 8 2511 95
+5fc0c 4 2508 95
+5fc10 4 2511 95
+5fc14 10 2508 95
+5fc24 8 2508 95
+5fc2c 4 2511 95
+5fc30 10 2511 95
+5fc40 c 2511 95
+5fc4c 1c 2511 95
+5fc68 10 156 132
+5fc78 4 2512 95
+5fc7c 4 664 91
+5fc80 4 2512 95
+5fc84 c 664 91
+5fc90 8 665 91
+5fc98 c 74 84
+5fca4 8 156 132
+5fcac 10 666 91
+5fcbc 4 666 91
+5fcc0 4 333 122
+5fcc4 14 666 91
+5fcd8 24 333 122
+5fcfc 8 666 91
+5fd04 8 1144 87
+5fd0c 4 662 82
+5fd10 8 660 82
+5fd18 10 673 91
+5fd28 8 673 91
+5fd30 1c 2514 95
+FUNC 5fd4c dc 0 std::priv::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int>, std::priv::_Select1st<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int> >, std::priv::_MapTraitsT<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int> >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int> > >::_M_insert
+5fd4c 4 350 135
+5fd50 4 358 135
+5fd54 c 350 135
+5fd60 c 350 135
+5fd6c 4 358 135
+5fd70 c 359 135
+5fd7c 4 360 135
+5fd80 4 361 135
+5fd84 8 362 135
+5fd8c 4 364 135
+5fd90 4 364 135
+5fd94 14 79 106
+5fda8 8 364 135
+5fdb0 8 367 135
+5fdb8 4 368 135
+5fdbc 4 367 135
+5fdc0 c 369 135
+5fdcc 8 370 135
+5fdd4 8 373 135
+5fddc 4 374 135
+5fde0 4 373 135
+5fde4 c 375 135
+5fdf0 4 376 135
+5fdf4 8 379 135
+5fdfc 4 378 135
+5fe00 4 379 135
+5fe04 4 380 135
+5fe08 4 382 135
+5fe0c 8 380 135
+5fe14 4 142 136
+5fe18 10 382 135
+FUNC 5fe28 fc 0 std::priv::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int>, std::priv::_Select1st<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int> >, std::priv::_MapTraitsT<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int> >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int> > >::insert_unique
+5fe28 14 405 135
+5fe3c 4 405 135
+5fe40 4 406 135
+5fe44 4 405 135
+5fe48 4 407 135
+5fe4c 4 405 135
+5fe50 4 408 135
+5fe54 4 409 135
+5fe58 14 79 106
+5fe6c 8 412 135
+5fe74 8 412 135
+5fe7c 4 412 135
+5fe80 10 405 135
+5fe90 4 415 135
+5fe94 c 416 135
+5fea0 18 417 135
+5feb8 c 187 136
+5fec4 10 79 106
+5fed4 4 421 135
+5fed8 1c 422 135
+5fef4 8 142 136
+5fefc 8 62 124
+5ff04 4 142 136
+5ff08 4 62 124
+5ff0c 18 425 135
+FUNC 5ff24 2d4 0 std::priv::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int>, std::priv::_Select1st<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int> >, std::priv::_MapTraitsT<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int> >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int> > >::insert_unique
+5ff24 18 432 135
+5ff3c 8 432 135
+5ff44 10 434 135
+5ff54 4 437 135
+5ff58 4 438 135
+5ff5c 4 437 135
+5ff60 4 143 106
+5ff64 14 79 106
+5ff78 8 440 135
+5ff80 14 79 106
+5ff94 8 447 135
+5ff9c c 297 135
+5ffa8 10 94 136
+5ffb8 8 301 135
+5ffc0 c 302 135
+5ffcc c 304 135
+5ffd8 c 309 135
+5ffe4 8 458 135
+5ffec 14 462 135
+60000 18 79 106
+60018 8 468 135
+60020 4 469 135
+60024 c 470 135
+60030 8 469 135
+60038 c 309 135
+60044 4 513 135
+60048 10 475 135
+60058 c 142 136
+60064 8 479 135
+6006c 4 480 135
+60070 14 79 106
+60084 8 480 135
+6008c 18 483 135
+600a4 c 486 135
+600b0 8 187 136
+600b8 4 143 106
+600bc 8 187 136
+600c4 14 79 106
+600d8 8 494 135
+600e0 10 79 106
+600f0 c 494 135
+600fc 10 500 135
+6010c 8 497 135
+60114 c 498 135
+60120 8 522 135
+60128 1c 524 135
+60144 14 79 106
+60158 4 517 135
+6015c 8 142 136
+60164 c 297 135
+60170 10 94 136
+60180 8 301 135
+60188 c 302 135
+60194 c 304 135
+601a0 c 517 135
+601ac 10 79 106
+601bc 8 517 135
+601c4 4 521 135
+601c8 14 522 135
+601dc 1c 534 135
+FUNC 601f8 c8 0 std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long unsigned int> > >::operator[]<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >
+601f8 14 175 118
+6020c 8 175 118
+60214 8 568 136
+6021c 4 571 136
+60220 10 79 106
+60230 4 572 136
+60234 8 573 136
+6023c 14 575 136
+60250 4 178 118
+60254 4 571 136
+60258 4 178 118
+6025c 10 79 106
+6026c 4 178 118
+60270 14 62 124
+60284 10 191 118
+60294 4 142 136
+60298 4 191 118
+6029c 4 179 118
+602a0 8 156 132
+602a8 4 180 118
+602ac 14 181 118
+FUNC 602c0 1b4 0 testing::internal::edit_distance::CalculateOptimalEdits
+602c0 10 1067 95
+602d0 4 173 143
+602d4 4 1067 95
+602d8 4 192 139
+602dc 4 173 143
+602e0 4 67 139
+602e4 10 1067 95
+602f4 4 263 136
+602f8 8 1067 95
+60300 4 67 139
+60304 4 481 101
+60308 4 1071 95
+6030c 4 67 139
+60310 4 192 139
+60314 8 67 139
+6031c 4 481 101
+60320 4 173 143
+60324 4 481 101
+60328 4 263 136
+6032c 4 266 136
+60330 4 267 136
+60334 4 391 136
+60338 14 192 139
+6034c 8 1071 95
+60354 4 203 139
+60358 c 543 136
+60364 8 1053 95
+6036c 8 1053 95
+60374 10 1055 95
+60384 8 173 143
+6038c 4 1072 95
+60390 4 1071 95
+60394 8 173 143
+6039c 14 192 139
+603b0 4 173 143
+603b4 14 192 139
+603c8 8 1074 95
+603d0 4 203 139
+603d4 c 543 136
+603e0 8 1053 95
+603e8 8 1053 95
+603f0 10 1055 95
+60400 8 173 143
+60408 4 1075 95
+6040c 4 1074 95
+60410 8 173 143
+60418 8 531 136
+60420 c 532 136
+6042c 14 1078 95
+60440 10 304 139
+60450 24 1079 95
+FUNC 60474 554 0 testing::internal::edit_distance::CreateUnifiedDiff
+60474 30 1166 95
+604a4 8 1167 95
+604ac 10 1166 95
+604bc 4 1170 95
+604c0 4 1167 95
+604c4 8 1170 95
+604cc 4 1169 95
+604d0 4 1094 95
+604d4 4 1170 95
+604d8 4 1169 95
+604dc 4 333 122
+604e0 4 1169 95
+604e4 4 333 122
+604e8 4 306 101
+604ec 4 428 116
+604f0 4 333 122
+604f4 10 192 139
+60504 8 1171 95
+6050c 8 1173 95
+60514 4 1176 95
+60518 4 1174 95
+6051c 4 1173 95
+60520 4 1175 95
+60524 8 1173 95
+6052c 8 1094 95
+60534 4 212 116
+60538 14 1094 95
+6054c 4 1181 95
+60550 c 1094 95
+6055c 4 1181 95
+60560 4 1094 95
+60564 8 211 116
+6056c 4 212 116
+60570 8 211 116
+60578 4 212 116
+6057c 8 211 116
+60584 4 212 116
+60588 3c 1182 95
+605c4 8 428 116
+605cc 4 1182 95
+605d0 4 428 116
+605d4 c 192 139
+605e0 8 1189 95
+605e8 10 1190 95
+605f8 4 1192 95
+605fc 8 1193 95
+60604 c 1124 95
+60610 8 1193 95
+60618 8 1193 95
+60620 18 1194 95
+60638 4 1202 95
+6063c 4 1200 95
+60640 c 1202 95
+6064c c 1204 95
+60658 8 1204 95
+60660 20 1205 95
+60680 30 1097 95
+606b0 10 1104 95
+606c0 8 306 101
+606c8 c 307 101
+606d4 8 119 103
+606dc 10 68 124
+606ec 4 427 116
+606f0 4 429 116
+606f4 4 428 116
+606f8 4 430 116
+606fc 8 431 116
+60704 10 1108 95
+60714 8 306 101
+6071c c 307 101
+60728 8 119 103
+60730 10 68 124
+60740 4 427 116
+60744 4 429 116
+60748 4 428 116
+6074c 4 430 116
+60750 4 431 116
+60754 20 1207 95
+60774 10 1108 95
+60784 8 306 101
+6078c 8 307 101
+60794 8 119 103
+6079c 10 68 124
+607ac 4 427 116
+607b0 4 429 116
+607b4 4 428 116
+607b8 4 430 116
+607bc 4 431 116
+607c0 4 1212 95
+607c4 4 1189 95
+607c8 4 1212 95
+607cc 10 1213 95
+607dc 8 1124 95
+607e4 10 333 122
+607f4 8 1138 95
+607fc 10 333 122
+6080c 10 263 121
+6081c c 333 122
+60828 4 1139 95
+6082c 4 263 121
+60830 4 1139 95
+60834 8 263 121
+6083c 8 1141 95
+60844 8 1141 95
+6084c 10 333 122
+6085c 8 1144 95
+60864 14 333 122
+60878 10 263 121
+60888 c 333 122
+60894 4 1145 95
+60898 4 263 121
+6089c 4 1145 95
+608a0 8 263 121
+608a8 10 333 122
+608b8 8 208 116
+608c0 8 600 116
+608c8 8 602 116
+608d0 4 208 116
+608d4 8 600 116
+608dc c 602 116
+608e8 c 305 122
+608f4 10 333 122
+60904 8 1117 95
+6090c 8 305 122
+60914 8 1120 95
+6091c 4 305 122
+60920 1c 333 122
+6093c 8 91 116
+60944 34 205 116
+60978 c 75 127
+60984 8 1170 95
+6098c 8 42 143
+60994 34 1224 95
+FUNC 609c8 54 0 std::priv::_String_base<char, std::allocator<char> >::_M_move_src
+609c8 4 64 132
+609cc 8 129 132
+609d4 10 130 132
+609e4 8 131 132
+609ec 4 132 132
+609f0 10 131 132
+60a00 4 135 132
+60a04 8 136 132
+60a0c 8 137 132
+60a14 4 138 132
+60a18 4 140 132
+FUNC 60a1c d4 0 std::priv::_Impl_vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_M_erase
+60a1c 18 588 139
+60a34 10 588 139
+60a44 4 591 139
+60a48 4 589 139
+60a4c 10 591 139
+60a5c 8 156 132
+60a64 4 486 101
+60a68 4 147 132
+60a6c 4 486 101
+60a70 4 147 132
+60a74 8 591 139
+60a7c 8 147 132
+60a84 c 595 139
+60a90 4 156 132
+60a94 4 191 103
+60a98 4 156 132
+60a9c c 191 103
+60aa8 4 160 103
+60aac 4 486 101
+60ab0 4 147 132
+60ab4 4 486 101
+60ab8 8 147 132
+60ac0 8 602 139
+60ac8 8 602 139
+60ad0 4 608 139
+60ad4 1c 610 139
+FUNC 60af0 224 0 std::priv::_Impl_vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_M_insert_overflow_aux
+60af0 24 81 138
+60b14 4 81 138
+60b18 8 192 139
+60b20 8 81 138
+60b28 10 192 139
+60b38 14 173 139
+60b4c 10 41 138
+60b5c c 176 139
+60b68 4 175 139
+60b6c 10 176 139
+60b7c 4 356 101
+60b80 8 346 101
+60b88 8 177 139
+60b90 10 347 101
+60ba0 4 348 101
+60ba4 4 352 101
+60ba8 4 348 101
+60bac 4 352 101
+60bb0 4 91 138
+60bb4 18 428 137
+60bcc 8 428 137
+60bd4 4 160 103
+60bd8 4 486 101
+60bdc 4 147 132
+60be0 4 486 101
+60be4 10 147 132
+60bf4 8 430 137
+60bfc 14 428 137
+60c10 c 93 138
+60c1c 4 119 103
+60c20 c 119 103
+60c2c 8 95 138
+60c34 4 314 137
+60c38 4 249 137
+60c3c 4 314 137
+60c40 8 249 137
+60c48 8 249 137
+60c50 4 139 103
+60c54 c 139 103
+60c60 c 249 137
+60c6c 4 98 138
+60c70 1c 428 137
+60c8c 8 428 137
+60c94 4 160 103
+60c98 4 486 101
+60c9c 4 147 132
+60ca0 4 486 101
+60ca4 8 147 132
+60cac 8 430 137
+60cb4 1c 428 137
+60cd0 8 662 139
+60cd8 4 319 101
+60cdc 4 323 101
+60ce0 4 104 138
+60ce4 4 666 139
+60ce8 4 667 139
+60cec 8 104 138
+60cf4 4 668 139
+60cf8 1c 105 138
+FUNC 60d14 b4 0 std::priv::_Impl_vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::push_back
+60d14 14 376 139
+60d28 4 376 139
+60d2c 10 380 139
+60d3c 4 119 103
+60d40 8 119 103
+60d48 10 382 139
+60d58 8 416 139
+60d60 10 416 139
+60d70 8 150 139
+60d78 1c 151 139
+60d94 c 156 132
+60da0 18 154 139
+60db8 10 388 139
+FUNC 60dc8 128 0 testing::internal::::SplitEscapedString
+60dc8 4 1233 95
+60dcc 4 1235 95
+60dd0 14 1233 95
+60de4 4 1233 95
+60de8 4 67 139
+60dec 4 1233 95
+60df0 4 67 139
+60df4 8 481 101
+60dfc 8 400 131
+60e04 8 1236 95
+60e0c c 1236 95
+60e18 8 1236 95
+60e20 10 1238 95
+60e30 4 1241 95
+60e34 4 1240 95
+60e38 8 1023 131
+60e40 10 1241 95
+60e50 4 1244 95
+60e54 4 1242 95
+60e58 4 1244 95
+60e5c 4 1243 95
+60e60 8 1244 95
+60e68 14 1023 131
+60e7c c 173 143
+60e88 10 156 132
+60e98 8 1249 95
+60ea0 8 1243 95
+60ea8 18 1023 131
+60ec0 c 173 143
+60ecc 8 156 132
+60ed4 1c 1254 95
+FUNC 60ef0 22c 0 testing::internal::EqFailure
+60ef0 c 1277 95
+60efc 4 1278 95
+60f00 4 1277 95
+60f04 4 1278 95
+60f08 18 1277 95
+60f20 8 1277 95
+60f28 4 1278 95
+60f2c 14 333 122
+60f40 c 1279 95
+60f4c 10 476 134
+60f5c 4 1280 95
+60f60 14 333 122
+60f74 10 131 79
+60f84 14 333 122
+60f98 c 1284 95
+60fa4 4 1285 95
+60fa8 14 333 122
+60fbc 10 476 134
+60fcc 4 1288 95
+60fd0 14 333 122
+60fe4 10 131 79
+60ff4 14 1292 95
+61008 10 1292 95
+61018 c 1294 95
+61024 4 1296 95
+61028 4 1294 95
+6102c c 1296 95
+61038 1c 192 139
+61054 8 1297 95
+6105c 14 192 139
+61070 8 1297 95
+61078 14 42 143
+6108c 14 333 122
+610a0 14 1299 95
+610b4 10 131 79
+610c4 c 156 132
+610d0 8 1303 95
+610d8 4 277 82
+610dc 4 1139 87
+610e0 8 1303 95
+610e8 8 1303 95
+610f0 8 256 82
+610f8 8 85 79
+61100 1c 1304 95
+FUNC 6111c b0 0 testing::internal::CmpHelperSTREQ
+6111c 14 1451 95
+61130 8 1452 95
+61138 8 1451 95
+61140 c 1451 95
+6114c c 1452 95
+61158 4 277 82
+6115c 4 1139 87
+61160 8 277 82
+61168 c 1460 95
+61174 4 1460 95
+61178 4 1460 95
+6117c c 1460 95
+61188 1c 1460 95
+611a4 10 156 132
+611b4 18 1461 95
+FUNC 611cc f4 0 testing::InitGoogleTest
+611cc 4 5248 95
+611d0 8 5281 95
+611d8 4 5248 95
+611dc 4 5281 95
+611e0 8 5248 95
+611e8 8 5281 95
+611f0 8 5251 95
+611f8 c 5253 95
+61204 18 5255 95
+6121c 10 5255 95
+6122c 1c 156 132
+61248 8 630 139
+61250 c 632 139
+6125c 4 5281 95
+61260 c 5260 95
+6126c 8 5261 95
+61274 8 5260 95
+6127c 4 5261 95
+61280 c 173 143
+6128c c 156 132
+61298 c 5236 95
+612a4 4 5267 95
+612a8 4 5267 95
+612ac 14 5283 95
+FUNC 612c0 4 0 testing::internal::DefaultDeathTestFactory::~DefaultDeathTestFactory
+612c0 4 148 83
+FUNC 612c4 4 0 testing::internal::DefaultDeathTestFactory::~DefaultDeathTestFactory
+612c4 4 148 83
+FUNC 612c8 1c 0 testing::internal::AlwaysFalse
+612c8 8 692 85
+612d0 14 692 85
+FUNC 612e4 80 0 testing::internal::DeathTestAbort
+612e4 c 251 89
+612f0 4 251 89
+612f4 4 937 91
+612f8 8 1144 87
+61300 4 257 89
+61304 14 2304 87
+61318 c 259 89
+61324 c 260 89
+61330 8 261 89
+61338 8 262 89
+61340 18 264 89
+61358 8 265 89
+61360 4 2340 87
+FUNC 61364 50 0 testing::internal::GetLastErrnoDescription
+61364 c 304 89
+61370 4 304 89
+61374 c 305 89
+61380 4 305 89
+61384 c 2315 87
+61390 8 305 89
+61398 c 305 89
+613a4 10 306 89
+FUNC 613b4 54 0 testing::internal::DeathTest::DeathTest
+613b4 10 335 89
+613c4 8 335 89
+613cc 4 937 91
+613d0 4 743 91
+613d4 8 337 89
+613dc 18 339 89
+613f4 8 339 89
+613fc c 341 89
+FUNC 61408 60 0 testing::internal::ForkingDeathTest::ForkingDeathTest
+61408 c 792 89
+61414 c 792 89
+61420 10 371 89
+61430 4 794 89
+61434 4 371 89
+61438 4 794 89
+6143c 18 371 89
+61454 14 794 89
+FUNC 61468 e8 0 testing::internal::ParseNaturalNumber<int>
+61468 10 976 91
+61478 8 981 91
+61480 c 980 91
+6148c 8 2188 87
+61494 10 980 91
+614a4 c 983 91
+614b0 14 998 91
+614c4 c 1002 91
+614d0 c 1002 91
+614dc 10 1006 91
+614ec 1c 1006 91
+61508 14 333 122
+6151c 8 1006 91
+61524 4 1009 91
+61528 8 1009 91
+61530 8 1010 91
+61538 4 1013 91
+6153c 14 1014 91
+FUNC 61550 c8 0 testing::internal::DeathTest::set_last_death_test_message
+61550 c 355 89
+6155c 8 348 131
+61564 4 355 89
+61568 10 348 131
+61578 8 400 131
+61580 4 243 130
+61584 4 400 131
+61588 8 244 130
+61590 4 168 140
+61594 10 168 140
+615a4 c 246 130
+615b0 8 803 131
+615b8 4 168 140
+615bc 4 806 131
+615c0 4 168 140
+615c4 10 806 131
+615d4 4 168 140
+615d8 8 168 140
+615e0 4 250 130
+615e4 4 357 89
+615e8 c 400 131
+615f4 8 250 130
+615fc 8 357 89
+61604 4 250 130
+61608 10 357 89
+FUNC 61618 104 0 testing::internal::FormatDeathTestOutput
+61618 4 493 89
+6161c 4 124 132
+61620 18 493 89
+61638 4 493 89
+6163c 4 120 132
+61640 4 124 132
+61644 4 481 101
+61648 8 530 131
+61650 4 124 132
+61654 8 495 89
+6165c 10 530 131
+6166c 4 101 103
+61670 14 496 89
+61684 10 530 131
+61694 10 498 89
+616a4 14 1023 131
+616b8 4 503 89
+616bc 4 1023 131
+616c0 c 451 131
+616cc 8 156 132
+616d4 4 504 89
+616d8 14 1023 131
+616ec c 451 131
+616f8 8 156 132
+61700 1c 506 89
+FUNC 6171c 348 0 testing::internal::DeathTestImpl::Passed
+6171c c 530 89
+61728 4 534 89
+6172c 4 530 89
+61730 4 534 89
+61734 8 530 89
+6173c 8 530 89
+61744 4 537 89
+61748 4 534 89
+6174c 8 537 89
+61754 20 333 122
+61774 4 150 79
+61778 24 333 122
+6179c 28 540 89
+617c4 3c 333 122
+61800 c 547 89
+6180c 14 131 79
+61820 14 333 122
+61834 4 554 89
+61838 4 555 89
+6183c 4 557 89
+61840 c 555 89
+6184c 4 556 89
+61850 38 333 122
+61888 4 150 79
+6188c 3c 333 122
+618c8 4 183 89
+618cc 20 333 122
+618ec 8 183 89
+618f4 8 191 89
+618fc 14 333 122
+61910 10 131 79
+61920 10 193 89
+61930 4 131 79
+61934 10 333 122
+61944 4 131 79
+61948 c 131 79
+61954 4 197 89
+61958 14 333 122
+6196c c 203 89
+61978 8 85 79
+61980 10 131 79
+61990 24 333 122
+619b4 c 566 89
+619c0 10 131 79
+619d0 14 156 132
+619e4 18 571 89
+619fc 14 333 122
+61a10 8 571 89
+61a18 4 536 89
+61a1c c 575 89
+61a28 8 575 89
+61a30 8 156 132
+61a38 8 85 79
+61a40 8 156 132
+61a48 1c 577 89
+FUNC 61a64 18 0 testing::internal::DeathTestImpl::Passed
+61a64 4 531 89
+61a68 4 530 89
+61a6c 8 531 89
+61a74 8 577 89
+FUNC 61a7c 3c0 0 testing::internal::DeathTestImpl::ReadAndInterpretStatusByte
+61a7c 18 425 89
+61a94 4 425 89
+61a98 14 2309 87
+61aac 4 435 89
+61ab0 4 2309 87
+61ab4 4 435 89
+61ab8 4 435 89
+61abc 10 435 89
+61acc 8 439 89
+61ad4 8 459 89
+61adc 4 333 122
+61ae0 10 459 89
+61af0 4 460 89
+61af4 4 459 89
+61af8 14 333 122
+61b0c 8 460 89
+61b14 c 460 89
+61b20 8 156 132
+61b28 8 459 89
+61b30 8 2314 87
+61b38 8 462 89
+61b40 4 462 89
+61b44 c 462 89
+61b50 14 462 89
+61b64 4 462 89
+61b68 4 462 89
+61b6c 10 462 89
+61b7c 4 462 89
+61b80 4 462 89
+61b84 10 462 89
+61b94 4 462 89
+61b98 4 462 89
+61b9c 10 462 89
+61bac 10 462 89
+61bbc c 462 89
+61bc8 4 462 89
+61bcc 4 462 89
+61bd0 10 462 89
+61be0 4 462 89
+61be4 4 462 89
+61be8 10 462 89
+61bf8 4 462 89
+61bfc 4 462 89
+61c00 14 462 89
+61c14 8 462 89
+61c1c 8 462 89
+61c24 4 462 89
+61c28 8 388 89
+61c30 18 464 89
+61c48 4 437 89
+61c4c 8 386 89
+61c54 28 440 89
+61c7c 1c 386 89
+61c98 4 313 89
+61c9c 4 2309 87
+61ca0 c 313 89
+61cac 10 2309 87
+61cbc 8 318 89
+61cc4 4 319 89
+61cc8 4 333 122
+61ccc 4 131 79
+61cd0 c 333 122
+61cdc 8 322 89
+61ce4 4 322 89
+61ce8 c 322 89
+61cf4 4 327 89
+61cf8 8 328 89
+61d00 4 333 122
+61d04 8 328 89
+61d0c 4 327 89
+61d10 8 328 89
+61d18 4 329 89
+61d1c 4 328 89
+61d20 14 333 122
+61d34 8 329 89
+61d3c 10 329 89
+61d4c c 333 122
+61d58 c 329 89
+61d64 c 333 122
+61d70 8 156 132
+61d78 8 328 89
+61d80 c 85 79
+61d8c 8 454 89
+61d94 4 333 122
+61d98 14 454 89
+61dac 24 333 122
+61dd0 c 254 121
+61ddc 10 333 122
+61dec 4 324 89
+61df0 18 325 89
+61e08 4 325 89
+61e0c 4 325 89
+61e10 c 325 89
+61e1c 10 325 89
+61e2c 8 156 132
+61e34 8 325 89
+FUNC 61e3c 13c 0 testing::internal::DeathTestImpl::Abort
+61e3c 4 470 89
+61e40 4 476 89
+61e44 4 476 89
+61e48 8 470 89
+61e50 4 470 89
+61e54 4 476 89
+61e58 10 476 89
+61e68 8 476 89
+61e70 10 2312 87
+61e80 8 478 89
+61e88 4 478 89
+61e8c c 478 89
+61e98 14 478 89
+61eac 4 478 89
+61eb0 4 478 89
+61eb4 10 478 89
+61ec4 4 478 89
+61ec8 4 478 89
+61ecc 10 478 89
+61edc 4 478 89
+61ee0 4 478 89
+61ee4 10 478 89
+61ef4 10 478 89
+61f04 c 478 89
+61f10 4 478 89
+61f14 4 478 89
+61f18 10 478 89
+61f28 4 478 89
+61f2c 4 478 89
+61f30 10 478 89
+61f40 4 478 89
+61f44 4 478 89
+61f48 14 478 89
+61f5c 8 478 89
+61f64 8 478 89
+61f6c 4 478 89
+61f70 8 487 89
+FUNC 61f78 74 0 testing::internal::ForkingDeathTest::Wait
+61f78 4 799 89
+61f7c 4 801 89
+61f80 8 799 89
+61f88 4 799 89
+61f8c 8 800 89
+61f94 4 806 89
+61f98 4 803 89
+61f9c 18 806 89
+61fb4 4 806 89
+61fb8 10 806 89
+61fc8 8 806 89
+61fd0 4 806 89
+61fd4 4 807 89
+61fd8 4 384 89
+61fdc 10 809 89
+FUNC 61fec 51c 0 testing::internal::NoExecDeathTest::AssumeRole
+61fec 14 822 89
+62000 4 822 89
+62004 4 823 89
+62008 4 824 89
+6200c 4 823 89
+62010 4 824 89
+62014 18 825 89
+6202c 4 218 89
+62030 4 825 89
+62034 8 218 89
+6203c 58 333 122
+62094 4 221 89
+62098 18 333 122
+620b0 10 263 121
+620c0 14 333 122
+620d4 10 225 89
+620e4 8 85 79
+620ec 10 825 89
+620fc 8 156 132
+62104 8 825 89
+6210c 20 829 89
+6212c 14 829 89
+62140 4 829 89
+62144 4 829 89
+62148 10 829 89
+62158 4 829 89
+6215c 4 829 89
+62160 10 829 89
+62170 4 829 89
+62174 4 829 89
+62178 10 829 89
+62188 10 829 89
+62198 c 829 89
+621a4 4 829 89
+621a8 4 829 89
+621ac 10 829 89
+621bc 4 829 89
+621c0 4 829 89
+621c4 14 829 89
+621d8 8 829 89
+621e0 4 829 89
+621e4 1c 831 89
+62200 8 831 89
+62208 8 156 132
+62210 4 832 89
+62214 8 1294 87
+6221c 8 842 89
+62224 14 843 89
+62238 14 843 89
+6224c 4 843 89
+62250 4 843 89
+62254 10 843 89
+62264 4 843 89
+62268 4 843 89
+6226c 10 843 89
+6227c 4 843 89
+62280 4 843 89
+62284 10 843 89
+62294 10 843 89
+622a4 10 843 89
+622b4 14 843 89
+622c8 14 843 89
+622dc 8 843 89
+622e4 8 843 89
+622ec 4 843 89
+622f0 4 784 89
+622f4 4 845 89
+622f8 10 846 89
+62308 4 846 89
+6230c c 846 89
+62318 14 846 89
+6232c 4 846 89
+62330 4 846 89
+62334 10 846 89
+62344 4 846 89
+62348 4 846 89
+6234c 10 846 89
+6235c 4 846 89
+62360 4 846 89
+62364 10 846 89
+62374 10 846 89
+62384 c 846 89
+62390 4 846 89
+62394 4 846 89
+62398 14 846 89
+623ac 14 846 89
+623c0 8 846 89
+623c8 4 846 89
+623cc 8 390 89
+623d4 4 937 91
+623d8 4 599 91
+623dc 8 854 89
+623e4 c 855 89
+623f0 8 856 89
+623f8 10 858 89
+62408 4 858 89
+6240c c 858 89
+62418 14 858 89
+6242c 4 858 89
+62430 4 858 89
+62434 10 858 89
+62444 4 858 89
+62448 4 858 89
+6244c 10 858 89
+6245c 4 858 89
+62460 4 858 89
+62464 10 858 89
+62474 10 858 89
+62484 c 858 89
+62490 4 858 89
+62494 4 858 89
+62498 14 858 89
+624ac 14 858 89
+624c0 14 858 89
+624d4 8 858 89
+624dc 4 858 89
+624e0 8 388 89
+624e8 8 382 89
+624f0 4 861 89
+624f4 14 863 89
+FUNC 62508 c0 0 testing::internal::DeathTestImpl::~DeathTestImpl
+62508 4 374 89
+6250c 4 374 89
+62510 8 374 89
+62518 10 374 89
+62528 4 374 89
+6252c 4 374 89
+62530 10 374 89
+62540 4 374 89
+62544 4 374 89
+62548 10 374 89
+62558 4 374 89
+6255c 4 374 89
+62560 10 374 89
+62570 10 374 89
+62580 c 374 89
+6258c 4 374 89
+62590 4 374 89
+62594 10 374 89
+625a4 4 374 89
+625a8 4 374 89
+625ac 14 374 89
+625c0 8 374 89
+FUNC 625c8 50 0 testing::internal::DeathTestImpl::~DeathTestImpl
+625c8 10 374 89
+625d8 c 374 89
+625e4 1c 374 89
+62600 8 374 89
+62608 4 374 89
+6260c c 374 89
+FUNC 62618 24 0 testing::internal::DeathTestImpl::~DeathTestImpl
+62618 c 374 89
+62624 8 374 89
+6262c 4 374 89
+62630 8 374 89
+62638 4 374 89
+FUNC 6263c 10 0 testing::internal::ExecDeathTest::~ExecDeathTest
+6263c 10 776 89
+FUNC 6264c 24 0 testing::internal::ExecDeathTest::~ExecDeathTest
+6264c c 868 89
+62658 8 868 89
+62660 4 868 89
+62664 8 868 89
+6266c 4 868 89
+FUNC 62670 10 0 testing::internal::NoExecDeathTest::~NoExecDeathTest
+62670 10 776 89
+FUNC 62680 24 0 testing::internal::NoExecDeathTest::~NoExecDeathTest
+62680 c 813 89
+6268c 8 813 89
+62694 4 813 89
+62698 8 813 89
+626a0 4 813 89
+FUNC 626a4 24c 0 testing::internal::DefaultDeathTestFactory::Create
+626a4 18 1157 89
+626bc 14 1157 89
+626d0 4 937 91
+626d4 4 1279 82
+626d8 4 1144 87
+626dc 4 743 91
+626e0 c 609 82
+626ec 8 1162 89
+626f4 8 1164 89
+626fc 8 1165 89
+62704 4 1167 89
+62708 4 1167 89
+6270c 4 1167 89
+62710 4 1168 89
+62714 4 1169 89
+62718 4 1169 89
+6271c 4 1167 89
+62720 14 1167 89
+62734 14 1168 89
+62748 8 1169 89
+62750 4 1169 89
+62754 4 1169 89
+62758 8 1169 89
+62760 10 1169 89
+62770 14 1169 89
+62784 8 1169 89
+6278c 2c 156 132
+627b8 4 1170 89
+627bc 4 156 132
+627c0 4 1170 89
+627c4 10 1173 89
+627d4 4 1174 89
+627d8 4 1173 89
+627dc 10 1174 89
+627ec 20 1189 89
+6280c c 1190 89
+62818 24 872 89
+6283c 18 1191 89
+62854 c 1192 89
+62860 18 816 89
+62878 8 1192 89
+62880 14 1199 89
+62894 4 1200 89
+62898 4 1199 89
+6289c 14 1200 89
+628b0 8 1200 89
+628b8 10 156 132
+628c8 4 1201 89
+628cc 4 1175 89
+628d0 4 1176 89
+628d4 1c 1205 89
+FUNC 628f0 4c 0 std::priv::_Impl_vector<void*, std::allocator<void*> >::_M_fill_insert
+628f0 c 166 138
+628fc 4 171 138
+62900 18 172 138
+62918 c 173 138
+62924 10 176 138
+62934 8 179 138
+FUNC 6293c 44 0 testing::internal::Arguments::AddArgument
+6293c c 899 89
+62948 4 899 89
+6294c 4 900 89
+62950 4 2276 87
+62954 4 900 89
+62958 4 2276 87
+6295c 4 900 89
+62960 8 225 138
+62968 4 900 89
+6296c 8 225 138
+62974 c 901 89
+FUNC 62980 c0c 0 testing::internal::ExecDeathTest::AssumeRole
+62980 34 1102 89
+629b4 4 937 91
+629b8 4 1279 82
+629bc 4 1144 87
+629c0 8 744 91
+629c8 18 1107 89
+629e0 4 1109 89
+629e4 c 1115 89
+629f0 c 390 89
+629fc 8 1111 89
+62a04 8 1115 89
+62a0c 4 1115 89
+62a10 1c 1115 89
+62a2c 14 1115 89
+62a40 4 1115 89
+62a44 4 1115 89
+62a48 10 1115 89
+62a58 4 1115 89
+62a5c 4 1115 89
+62a60 10 1115 89
+62a70 4 1115 89
+62a74 4 1115 89
+62a78 10 1115 89
+62a88 10 1115 89
+62a98 c 1115 89
+62aa4 4 1115 89
+62aa8 4 1115 89
+62aac 10 1115 89
+62abc 4 1115 89
+62ac0 4 1115 89
+62ac4 14 1115 89
+62ad8 8 1118 89
+62ae0 4 1118 89
+62ae4 28 1118 89
+62b0c 14 1118 89
+62b20 4 1118 89
+62b24 4 1118 89
+62b28 10 1118 89
+62b38 4 1118 89
+62b3c 4 1118 89
+62b40 10 1118 89
+62b50 4 1118 89
+62b54 4 1118 89
+62b58 10 1118 89
+62b68 10 1118 89
+62b78 c 1118 89
+62b84 4 1118 89
+62b88 4 1118 89
+62b8c 10 1118 89
+62b9c 4 1118 89
+62ba0 4 1118 89
+62ba4 14 1118 89
+62bb8 8 1118 89
+62bc0 1c 1121 89
+62bdc c 1121 89
+62be8 4 1121 89
+62bec 4 1121 89
+62bf0 c 1121 89
+62bfc c 1121 89
+62c08 4 1121 89
+62c0c 4 1122 89
+62c10 10 1121 89
+62c20 4 1122 89
+62c24 4 1121 89
+62c28 10 1121 89
+62c38 14 1122 89
+62c4c 14 1122 89
+62c60 1c 1122 89
+62c7c 30 156 132
+62cac c 1124 89
+62cb8 4 1124 89
+62cbc 8 1124 89
+62cc4 c 1124 89
+62cd0 4 1124 89
+62cd4 4 1124 89
+62cd8 14 1124 89
+62cec c 1124 89
+62cf8 4 1125 89
+62cfc c 1124 89
+62d08 1c 1125 89
+62d24 1c 1125 89
+62d40 10 1125 89
+62d50 10 1125 89
+62d60 14 1125 89
+62d74 c 1126 89
+62d80 10 1126 89
+62d90 14 1126 89
+62da4 10 1127 89
+62db4 18 1127 89
+62dcc 68 156 132
+62e34 4 67 139
+62e38 18 386 139
+62e50 4 67 139
+62e54 4 481 101
+62e58 4 890 89
+62e5c 4 386 139
+62e60 8 877 89
+62e68 c 192 139
+62e74 4 70 139
+62e78 4 192 139
+62e7c 4 70 139
+62e80 4 192 139
+62e84 4 481 101
+62e88 8 192 139
+62e90 10 342 101
+62ea0 c 343 101
+62eac 4 343 101
+62eb0 4 356 101
+62eb4 4 346 101
+62eb8 4 347 101
+62ebc 10 348 101
+62ecc 10 352 101
+62edc 4 73 139
+62ee0 4 71 139
+62ee4 4 72 139
+62ee8 4 84 137
+62eec c 73 139
+62ef8 18 86 137
+62f10 8 86 137
+62f18 4 139 103
+62f1c 34 139 103
+62f50 4 88 137
+62f54 4 89 137
+62f58 1c 86 137
+62f74 4 249 139
+62f78 c 905 89
+62f84 4 908 89
+62f88 4 2276 87
+62f8c 4 908 89
+62f90 4 2276 87
+62f94 4 908 89
+62f98 4 2276 87
+62f9c 4 908 89
+62fa0 14 225 138
+62fb4 c 905 89
+62fc0 8 42 143
+62fc8 10 1130 89
+62fd8 10 1131 89
+62fe8 14 1133 89
+62ffc 8 1133 89
+63004 8 156 132
+6300c 4 1135 89
+63010 10 1294 87
+63020 c 1140 89
+6302c c 1045 89
+63038 4 1046 89
+6303c c 1047 89
+63048 18 1048 89
+63060 4 1048 89
+63064 c 1048 89
+63070 14 1048 89
+63084 14 1048 89
+63098 14 1048 89
+630ac 4 1048 89
+630b0 4 1048 89
+630b4 4 1048 89
+630b8 8 1048 89
+630c0 10 1048 89
+630d0 14 1048 89
+630e4 14 1048 89
+630f8 8 1048 89
+63100 4 1048 89
+63104 c 1084 89
+63110 10 946 89
+63120 4 946 89
+63124 c 946 89
+63130 14 946 89
+63144 14 946 89
+63158 14 946 89
+6316c 4 946 89
+63170 4 946 89
+63174 4 946 89
+63178 8 946 89
+63180 10 946 89
+63190 14 946 89
+631a4 14 946 89
+631b8 8 946 89
+631c0 4 946 89
+631c4 4 952 89
+631c8 8 952 89
+631d0 8 954 89
+631d8 14 955 89
+631ec 10 955 89
+631fc 14 955 89
+63210 8 955 89
+63218 10 955 89
+63228 4 937 89
+6322c 8 965 89
+63234 4 937 89
+63238 c 965 89
+63244 14 966 89
+63258 14 966 89
+6326c 14 966 89
+63280 10 966 89
+63290 14 967 89
+632a4 8 967 89
+632ac 14 967 89
+632c0 8 1090 89
+632c8 4 1090 89
+632cc 18 1090 89
+632e4 4 1090 89
+632e8 c 1090 89
+632f4 14 1090 89
+63308 14 1090 89
+6331c 14 1090 89
+63330 4 1090 89
+63334 4 1090 89
+63338 4 1090 89
+6333c 8 1090 89
+63344 10 1090 89
+63354 14 1090 89
+63368 14 1090 89
+6337c 8 1094 89
+63384 4 1094 89
+63388 18 1094 89
+633a0 14 1094 89
+633b4 14 1094 89
+633c8 14 1094 89
+633dc 4 1094 89
+633e0 4 1094 89
+633e4 4 1094 89
+633e8 8 1094 89
+633f0 10 1094 89
+63400 14 1094 89
+63414 14 1094 89
+63428 14 1141 89
+6343c 4 1141 89
+63440 c 1141 89
+6344c 14 1141 89
+63460 14 1141 89
+63474 14 1141 89
+63488 8 1141 89
+63490 4 1141 89
+63494 4 1141 89
+63498 8 1141 89
+634a0 10 1141 89
+634b0 14 1141 89
+634c4 14 1141 89
+634d8 14 1141 89
+634ec 8 1141 89
+634f4 4 1141 89
+634f8 8 784 89
+63500 4 388 89
+63504 4 784 89
+63508 c 388 89
+63514 8 382 89
+6351c c 894 89
+63528 c 896 89
+63534 8 87 139
+6353c 4 88 139
+63540 8 323 101
+63548 10 156 132
+63558 4 1145 89
+6355c 30 1146 89
+FUNC 6358c 234 0 testing::internal::ParseInternalRunDeathTestFlag
+6358c 4 1298 89
+63590 4 1299 89
+63594 8 1298 89
+6359c c 1299 89
+635a8 4 1298 89
+635ac 8 1299 89
+635b4 8 1298 89
+635bc c 1299 89
+635c8 4 1303 89
+635cc 8 1306 89
+635d4 4 1303 89
+635d8 4 1304 89
+635dc 8 1306 89
+635e4 8 67 139
+635ec 4 1213 89
+635f0 8 481 101
+635f8 8 1306 89
+63600 c 67 139
+6360c 4 481 101
+63610 c 1214 89
+6361c 14 1215 89
+63630 4 1216 89
+63634 c 1023 131
+63640 4 1216 89
+63644 c 1023 131
+63650 c 173 143
+6365c c 156 132
+63668 8 1023 131
+63670 4 1221 89
+63674 4 1023 131
+63678 c 173 143
+63684 c 156 132
+63690 4 91 100
+63694 8 92 100
+6369c 4 93 100
+636a0 4 92 100
+636a4 4 91 100
+636a8 4 93 100
+636ac 4 92 100
+636b0 4 91 100
+636b4 4 92 100
+636b8 4 93 100
+636bc 4 42 143
+636c0 4 92 100
+636c4 4 42 143
+636c8 8 156 132
+636d0 4 1307 89
+636d4 4 192 139
+636d8 4 1307 89
+636dc 14 192 139
+636f0 8 1332 89
+636f8 10 1330 89
+63708 4 1330 89
+6370c 14 1331 89
+63720 4 1331 89
+63724 1c 1332 89
+63740 8 1299 89
+63748 18 1334 89
+63760 c 1334 89
+6376c 10 1339 89
+6377c 4 241 83
+63780 c 1339 89
+6378c 4 241 83
+63790 4 42 143
+63794 c 241 83
+637a0 8 42 143
+637a8 18 1340 89
+FUNC 637c0 c 0 testing::internal::FilePath::FindLastPathSeparator
+637c0 c 137 90
+FUNC 637cc 24 0 testing::internal::FilePath::FileOrDirectoryExists
+637cc 8 209 90
+637d4 c 2272 87
+637e0 4 217 90
+637e4 c 219 90
+FUNC 637f0 38 0 testing::internal::FilePath::DirectoryExists
+637f0 8 223 90
+637f8 c 2272 87
+63804 4 244 90
+63808 4 244 90
+6380c 8 2278 87
+63814 8 244 90
+6381c c 249 90
+FUNC 63828 14 0 testing::internal::FilePath::IsAbsolutePath
+63828 4 274 90
+6382c 8 94 90
+63834 8 276 90
+FUNC 6383c 24 0 testing::internal::FilePath::IsDirectory
+6383c 8 300 90
+63844 4 301 90
+63848 8 301 90
+63850 c 301 90
+6385c 4 303 90
+FUNC 63860 44 0 testing::internal::FilePath::CreateFolder
+63860 4 325 90
+63864 4 334 90
+63868 8 325 90
+63870 4 325 90
+63874 8 334 90
+6387c 8 337 90
+63884 4 338 90
+63888 8 341 90
+63890 4 338 90
+63894 10 341 90
+FUNC 638a4 c0 0 testing::internal::FilePath::Normalize
+638a4 10 356 90
+638b4 8 356 90
+638bc 4 357 90
+638c0 8 384 90
+638c8 4 358 90
+638cc 4 384 90
+638d0 8 358 90
+638d8 8 400 131
+638e0 c 362 90
+638ec c 400 131
+638f8 c 364 90
+63904 8 366 90
+6390c 4 367 90
+63910 4 366 90
+63914 c 368 90
+63920 8 369 90
+63928 c 376 90
+63934 8 377 90
+6393c 8 379 90
+63944 c 382 90
+63950 4 383 90
+63954 c 384 90
+63960 4 383 90
+FUNC 63964 90 0 testing::internal::FilePath::GetCurrentDir
+63964 4 99 90
+63968 4 108 90
+6396c 4 99 90
+63970 4 108 90
+63974 c 99 90
+63980 4 108 90
+63984 4 99 90
+63988 4 108 90
+6398c 4 99 90
+63990 8 108 90
+63998 c 109 90
+639a4 4 116 90
+639a8 4 116 90
+639ac 8 116 90
+639b4 10 116 90
+639c4 c 116 90
+639d0 8 156 132
+639d8 1c 118 90
+FUNC 639f4 68 0 testing::internal::FilePath::RemoveDirectoryName
+639f4 c 155 90
+63a00 8 155 90
+63a08 4 156 90
+63a0c 4 157 90
+63a10 4 156 90
+63a14 4 157 90
+63a18 14 157 90
+63a2c c 157 90
+63a38 c 156 132
+63a44 8 62 84
+63a4c 10 158 90
+FUNC 63a5c 78 0 testing::internal::FilePath::RemoveTrailingPathSeparator
+63a5c c 346 90
+63a68 8 346 90
+63a70 8 347 90
+63a78 8 349 90
+63a80 4 400 131
+63a84 4 1023 131
+63a88 4 400 131
+63a8c 8 1023 131
+63a94 4 400 131
+63a98 c 1023 131
+63aa4 c 349 90
+63ab0 c 156 132
+63abc 8 62 84
+63ac4 10 350 90
+FUNC 63ad4 1ec 0 testing::internal::FilePath::ConcatPaths
+63ad4 18 200 90
+63aec 8 200 90
+63af4 10 201 90
+63b04 c 62 84
+63b10 4 203 90
+63b14 4 120 132
+63b18 8 203 90
+63b20 4 120 132
+63b24 8 400 131
+63b2c 4 481 101
+63b30 4 400 131
+63b34 10 124 132
+63b44 4 107 134
+63b48 4 101 103
+63b4c 8 107 134
+63b54 c 74 132
+63b60 10 74 132
+63b70 c 74 132
+63b7c 8 535 131
+63b84 c 536 131
+63b90 4 356 101
+63b94 4 346 101
+63b98 4 347 101
+63b9c 8 158 101
+63ba4 8 134 119
+63bac 8 158 101
+63bb4 4 352 101
+63bb8 8 158 101
+63bc0 10 86 137
+63bd0 c 86 137
+63bdc 10 146 103
+63bec 8 174 130
+63bf4 8 175 130
+63bfc 4 101 103
+63c00 4 174 130
+63c04 4 160 132
+63c08 4 164 132
+63c0c 8 165 132
+63c14 4 232 140
+63c18 4 120 132
+63c1c 4 101 103
+63c20 8 232 140
+63c28 4 120 132
+63c2c 4 539 131
+63c30 4 400 131
+63c34 4 539 131
+63c38 4 400 131
+63c3c 4 539 131
+63c40 c 400 131
+63c4c 4 481 101
+63c50 4 400 131
+63c54 10 124 132
+63c64 4 39 134
+63c68 4 101 103
+63c6c 8 39 134
+63c74 c 40 134
+63c80 c 204 90
+63c8c 18 156 132
+63ca4 1c 205 90
+FUNC 63cc0 b4 0 testing::internal::FilePath::RemoveFileName
+63cc0 10 166 90
+63cd0 4 120 132
+63cd4 8 166 90
+63cdc 4 167 90
+63ce0 4 124 132
+63ce4 4 167 90
+63ce8 4 124 132
+63cec 4 120 132
+63cf0 4 481 101
+63cf4 8 124 132
+63cfc 4 101 103
+63d00 8 169 90
+63d08 4 112 132
+63d0c 8 225 131
+63d14 4 112 132
+63d18 4 481 101
+63d1c 4 225 131
+63d20 10 349 131
+63d30 c 156 132
+63d3c 10 172 90
+63d4c c 174 90
+63d58 8 156 132
+63d60 14 175 90
+FUNC 63d74 a0 0 testing::internal::FilePath::CreateDirectoriesRecursively
+63d74 10 308 90
+63d84 4 308 90
+63d88 c 309 90
+63d94 10 313 90
+63da4 c 313 90
+63db0 4 313 90
+63db4 c 317 90
+63dc0 4 317 90
+63dc4 4 317 90
+63dc8 c 317 90
+63dd4 8 156 132
+63ddc 10 318 90
+63dec c 318 90
+63df8 8 156 132
+63e00 14 319 90
+FUNC 63e14 224 0 testing::internal::FilePath::MakeFileName
+63e14 c 186 90
+63e20 8 120 132
+63e28 10 186 90
+63e38 8 124 132
+63e40 8 186 90
+63e48 c 186 90
+63e54 4 120 132
+63e58 4 481 101
+63e5c 10 124 132
+63e6c 4 101 103
+63e70 4 188 90
+63e74 10 189 90
+63e84 10 189 90
+63e94 10 349 131
+63ea4 10 156 132
+63eb4 14 191 90
+63ec8 4 244 79
+63ecc 4 191 90
+63ed0 8 244 79
+63ed8 4 1142 87
+63edc 4 131 79
+63ee0 c 238 121
+63eec 4 239 121
+63ef0 8 239 121
+63ef8 4 239 121
+63efc 4 239 121
+63f00 8 240 121
+63f08 c 244 79
+63f14 8 1153 87
+63f1c 10 1154 87
+63f2c 8 1155 87
+63f34 c 1155 87
+63f40 4 400 131
+63f44 4 120 132
+63f48 4 400 131
+63f4c 4 124 132
+63f50 c 400 131
+63f5c 4 120 132
+63f60 4 400 131
+63f64 4 481 101
+63f68 4 35 134
+63f6c c 124 132
+63f78 4 39 134
+63f7c 4 101 103
+63f80 8 39 134
+63f88 c 40 134
+63f94 10 192 90
+63fa4 10 192 90
+63fb4 10 349 131
+63fc4 28 156 132
+63fec c 194 90
+63ff8 10 194 90
+64008 10 156 132
+64018 20 195 90
+FUNC 64038 a4 0 testing::internal::FilePath::GenerateUniqueFileName
+64038 10 288 90
+64048 4 61 84
+6404c 4 288 90
+64050 4 61 84
+64054 8 288 90
+6405c 4 61 84
+64060 4 288 90
+64064 8 61 84
+6406c 4 288 90
+64070 4 61 84
+64074 4 290 90
+64078 18 292 90
+64090 8 348 131
+64098 10 349 131
+640a8 8 156 132
+640b0 c 291 90
+640bc 4 292 90
+640c0 4 291 90
+640c4 18 295 90
+FUNC 640dc 8 0 testing::internal::GetThreadCount
+640dc 8 133 92
+FUNC 640e4 30 0 testing::internal::IsInSet
+640e4 8 587 92
+640ec 4 588 92
+640f0 4 587 92
+640f4 8 588 92
+640fc 8 588 92
+64104 8 588 92
+6410c 8 589 92
+FUNC 64114 c 0 testing::internal::IsAsciiPunct
+64114 c 596 92
+FUNC 64120 c 0 testing::internal::IsRepeat
+64120 c 598 92
+FUNC 6412c c 0 testing::internal::IsAsciiWhiteSpace
+6412c c 599 92
+FUNC 64138 3c 0 testing::internal::IsAsciiWordChar
+64138 4 600 92
+6413c 4 602 92
+64140 8 601 92
+64148 c 602 92
+64154 4 602 92
+64158 c 601 92
+64164 c 602 92
+64170 4 603 92
+FUNC 64174 158 0 testing::internal::AtomMatchesChar
+64174 10 612 92
+64184 8 612 92
+6418c 4 613 92
+64190 28 614 92
+641b8 c 621 92
+641c4 10 614 92
+641d4 8 617 92
+641dc 1c 614 92
+641f8 4 620 92
+641fc 8 631 92
+64204 4 620 92
+64208 10 614 92
+64218 4 624 92
+6421c 8 631 92
+64224 4 624 92
+64228 18 594 92
+64240 10 616 92
+64250 8 618 92
+64258 8 619 92
+64260 8 622 92
+64268 c 623 92
+64274 14 625 92
+64288 8 627 92
+64290 10 627 92
+642a0 10 630 92
+642b0 4 630 92
+642b4 4 630 92
+642b8 8 630 92
+642c0 c 631 92
+FUNC 642cc bc 0 testing::internal::MatchRegexAtHead
+642cc 18 731 92
+642e4 8 732 92
+642ec 8 737 92
+642f4 10 738 92
+64304 8 741 92
+6430c 8 743 92
+64314 14 744 92
+64328 14 749 92
+6433c c 757 92
+64348 4 749 92
+6434c 8 754 92
+64354 10 754 92
+64364 4 754 92
+64368 c 755 92
+64374 4 733 92
+64378 10 757 92
+FUNC 64388 c0 0 testing::internal::MatchRepetitionAndRegexAtHead
+64388 18 706 92
+643a0 4 707 92
+643a4 4 706 92
+643a8 10 706 92
+643b8 4 707 92
+643bc 14 707 92
+643d0 4 707 92
+643d4 4 709 92
+643d8 4 713 92
+643dc 8 715 92
+643e4 10 715 92
+643f4 4 715 92
+643f8 8 722 92
+64400 18 722 92
+64418 8 723 92
+64420 4 713 92
+64424 8 713 92
+6442c 4 723 92
+64430 18 726 92
+FUNC 64448 68 0 testing::internal::MatchRegexAnywhere
+64448 c 767 92
+64454 8 767 92
+6445c 8 768 92
+64464 c 771 92
+64470 4 772 92
+64474 8 780 92
+6447c 4 772 92
+64480 8 775 92
+64488 18 776 92
+644a0 4 769 92
+644a4 c 780 92
+FUNC 644b0 1c 0 testing::internal::RE::PartialMatch
+644b0 4 796 92
+644b4 8 797 92
+644bc c 797 92
+644c8 4 798 92
+FUNC 644cc 2c 0 testing::internal::CapturedStream::GetFileSize
+644cc 4 980 92
+644d0 8 981 92
+644d8 8 980 92
+644e0 4 980 92
+644e4 4 981 92
+644e8 4 982 92
+644ec 8 983 92
+644f4 4 982 92
+FUNC 644f8 18 0 testing::internal::GetInjectableArgvs
+644f8 c 1069 92
+64504 8 1072 92
+6450c 4 1073 92
+FUNC 64510 3c 0 std::_Destroy_Range<std::reverse_iterator<std::basic_string<char, std::char_traits<char>, std::allocator<char> >*> >
+64510 c 219 103
+6451c 8 65 113
+64524 c 191 103
+64530 10 156 132
+64540 c 221 103
+FUNC 6454c 5c 0 std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::~vector
+6454c c 42 143
+64558 4 42 143
+6455c 4 304 139
+64560 10 64 113
+64570 8 304 139
+64578 8 87 139
+64580 8 88 139
+64588 8 161 101
+64590 8 135 119
+64598 4 161 101
+6459c c 42 143
+FUNC 645a8 9c 0 testing::internal::CapturedStream::ReadEntireFile
+645a8 18 986 92
+645c0 4 986 92
+645c4 8 987 92
+645cc 4 988 92
+645d0 4 993 92
+645d4 4 988 92
+645d8 8 993 92
+645e0 4 991 92
+645e4 4 993 92
+645e8 14 998 92
+645fc 4 999 92
+64600 c 997 92
+6460c c 225 131
+64618 4 112 132
+6461c 4 481 101
+64620 4 225 131
+64624 8 1003 92
+6462c 18 1006 92
+FUNC 64644 a8 0 testing::internal::GetCapturedStream
+64644 10 1023 92
+64654 8 1023 92
+6465c 4 1024 92
+64660 c 950 92
+6466c 8 952 92
+64674 c 953 92
+64680 8 954 92
+64688 8 955 92
+64690 14 2298 87
+646a4 8 959 92
+646ac 8 2306 87
+646b4 8 1026 92
+646bc 8 946 92
+646c4 8 156 132
+646cc 8 1026 92
+646d4 4 1030 92
+646d8 4 1027 92
+646dc 10 1030 92
+FUNC 646ec 2c 0 testing::internal::GetCapturedStderr
+646ec 4 1048 92
+646f0 4 1049 92
+646f4 4 1048 92
+646f8 4 1049 92
+646fc 4 1048 92
+64700 4 1048 92
+64704 4 1049 92
+64708 10 1050 92
+FUNC 64718 38 0 testing::Message::operator<< <char const>
+64718 c 149 79
+64724 8 149 79
+6472c 4 333 122
+64730 4 150 79
+64734 c 333 122
+64740 10 156 79
+FUNC 64750 7c 0 std::endl<char, std::char_traits<char> >
+64750 c 357 122
+6475c 4 357 122
+64760 10 181 122
+64770 4 412 121
+64774 18 422 121
+6478c 4 414 121
+64790 14 414 121
+647a4 8 421 121
+647ac 8 424 121
+647b4 8 359 122
+647bc 10 361 122
+FUNC 647cc 48 0 testing::internal::GTestLog::~GTestLog
+647cc c 880 92
+647d8 4 880 92
+647dc c 78 122
+647e8 c 882 92
+647f4 10 883 92
+64804 4 2340 87
+64808 c 886 92
+FUNC 64814 1a8 0 testing::internal::ParseInt32
+64814 10 1103 92
+64824 4 1105 92
+64828 4 1103 92
+6482c 8 1103 92
+64834 4 1106 92
+64838 4 1105 92
+6483c 8 1106 92
+64844 c 1109 92
+64850 c 1111 92
+6485c 14 333 122
+64870 10 131 79
+64880 28 333 122
+648a8 c 1114 92
+648b4 4 131 79
+648b8 10 333 122
+648c8 10 1122 92
+648d8 4 1125 92
+648dc 8 1122 92
+648e4 c 1128 92
+648f0 14 333 122
+64904 10 131 79
+64914 28 333 122
+6493c c 1131 92
+64948 4 131 79
+6494c 10 333 122
+6495c 10 1132 92
+6496c 10 1132 92
+6497c 8 156 132
+64984 10 1133 92
+64994 8 85 79
+6499c 8 1134 92
+649a4 4 1137 92
+649a8 4 1138 92
+649ac 10 1139 92
+FUNC 649bc 150 0 testing::internal::FormatFileLocation
+649bc 14 840 92
+649d0 8 840 92
+649d8 8 841 92
+649e0 8 841 92
+649e8 4 229 140
+649ec 8 112 132
+649f4 4 481 101
+649f8 4 229 140
+649fc 4 643 130
+64a00 4 643 130
+64a04 c 643 130
+64a10 4 843 92
+64a14 14 844 92
+64a28 14 849 92
+64a3c 4 244 79
+64a40 4 849 92
+64a44 8 244 79
+64a4c 8 131 79
+64a54 4 244 79
+64a58 8 131 79
+64a60 c 244 79
+64a6c 8 85 79
+64a74 4 120 132
+64a78 14 400 131
+64a8c 4 481 101
+64a90 4 400 131
+64a94 4 35 134
+64a98 10 124 132
+64aa8 4 39 134
+64aac 4 101 103
+64ab0 8 39 134
+64ab8 c 40 134
+64ac4 10 849 92
+64ad4 20 156 132
+64af4 18 851 92
+FUNC 64b0c cc 0 testing::internal::GTestLog::GTestLog
+64b0c c 869 92
+64b18 4 870 92
+64b1c 4 874 92
+64b20 8 874 92
+64b28 8 874 92
+64b30 c 874 92
+64b3c c 874 92
+64b48 c 874 92
+64b54 8 874 92
+64b5c 18 78 122
+64b74 4 333 122
+64b78 4 876 92
+64b7c 14 333 122
+64b90 18 876 92
+64ba8 1c 333 122
+64bc4 8 156 132
+64bcc c 877 92
+FUNC 64bd8 1a4 0 testing::internal::CaptureStream
+64bd8 18 1014 92
+64bf0 c 1014 92
+64bfc c 1015 92
+64c08 4 1016 92
+64c0c 4 333 122
+64c10 14 1016 92
+64c24 30 333 122
+64c54 8 1016 92
+64c5c c 1019 92
+64c68 14 897 92
+64c7c 8 124 132
+64c84 4 120 132
+64c88 4 481 101
+64c8c 8 124 132
+64c94 c 933 92
+64ca0 4 101 103
+64ca4 8 933 92
+64cac c 937 92
+64cb8 8 229 140
+64cc0 4 355 131
+64cc4 4 400 131
+64cc8 8 243 130
+64cd0 4 400 131
+64cd4 8 244 130
+64cdc 4 168 140
+64ce0 c 168 140
+64cec c 246 130
+64cf8 8 803 131
+64d00 4 168 140
+64d04 4 806 131
+64d08 4 168 140
+64d0c 10 806 131
+64d1c 4 168 140
+64d20 8 168 140
+64d28 4 400 131
+64d2c 4 250 130
+64d30 8 400 131
+64d38 c 250 130
+64d44 8 940 92
+64d4c c 941 92
+64d58 8 942 92
+64d60 4 1019 92
+64d64 18 1020 92
+FUNC 64d7c 18 0 testing::internal::CaptureStderr
+64d7c 18 1039 92
+FUNC 64d94 13c 0 testing::internal::FormatCompilerIndependentFileLocation
+64d94 14 859 92
+64da8 8 859 92
+64db0 8 860 92
+64db8 8 860 92
+64dc0 4 229 140
+64dc4 8 112 132
+64dcc 4 481 101
+64dd0 4 229 140
+64dd4 4 643 130
+64dd8 4 643 130
+64ddc 8 643 130
+64de4 4 862 92
+64de8 c 649 130
+64df4 4 112 132
+64df8 4 481 101
+64dfc 8 649 130
+64e04 14 865 92
+64e18 4 244 79
+64e1c 4 865 92
+64e20 8 244 79
+64e28 8 131 79
+64e30 4 244 79
+64e34 8 131 79
+64e3c c 244 79
+64e48 8 85 79
+64e50 4 120 132
+64e54 14 400 131
+64e68 4 481 101
+64e6c 4 400 131
+64e70 4 35 134
+64e74 10 124 132
+64e84 4 39 134
+64e88 4 101 103
+64e8c 8 39 134
+64e94 c 40 134
+64ea0 18 156 132
+64eb8 18 866 92
+FUNC 64ed0 c8 0 testing::internal::FlagToEnvVar
+64ed0 c 1088 92
+64edc 4 1090 92
+64ee0 4 1088 92
+64ee4 4 1090 92
+64ee8 4 1088 92
+64eec 4 1088 92
+64ef0 4 1090 92
+64ef4 c 333 122
+64f00 4 1090 92
+64f04 8 333 122
+64f0c 8 1090 92
+64f14 4 1093 92
+64f18 4 1090 92
+64f1c 8 1090 92
+64f24 8 85 79
+64f2c c 1092 92
+64f38 8 400 131
+64f40 8 1093 92
+64f48 4 2211 87
+64f4c 4 1093 92
+64f50 8 2211 87
+64f58 4 131 79
+64f5c c 305 122
+64f68 c 1097 92
+64f74 8 85 79
+64f7c 8 156 132
+64f84 14 1098 92
+FUNC 64f98 54 0 testing::internal::BoolFromGTestEnv
+64f98 c 1145 92
+64fa4 4 1146 92
+64fa8 4 1145 92
+64fac 8 1146 92
+64fb4 8 2328 87
+64fbc 4 1149 92
+64fc0 c 1149 92
+64fcc 8 1149 92
+64fd4 8 156 132
+64fdc 10 1150 92
+FUNC 64fec 10c 0 testing::internal::Int32FromGTestEnv
+64fec c 1155 92
+64ff8 4 1156 92
+64ffc 4 1155 92
+65000 4 1156 92
+65004 4 1155 92
+65008 4 1155 92
+6500c 4 1156 92
+65010 4 2328 87
+65014 4 1160 92
+65018 8 2328 87
+65020 4 1158 92
+65024 4 1164 92
+65028 4 1163 92
+6502c 8 1164 92
+65034 14 333 122
+65048 10 131 79
+65058 14 1165 92
+6506c 8 85 79
+65074 4 1172 92
+65078 4 1164 92
+6507c c 1167 92
+65088 10 131 79
+65098 c 1167 92
+650a4 10 1167 92
+650b4 8 156 132
+650bc 4 85 79
+650c0 4 1169 92
+650c4 4 85 79
+650c8 10 1168 92
+650d8 8 156 132
+650e0 18 1173 92
+FUNC 650f8 48 0 testing::internal::StringFromGTestEnv
+650f8 c 1177 92
+65104 8 1178 92
+6510c 4 1177 92
+65110 4 1178 92
+65114 8 2328 87
+6511c c 1180 92
+65128 8 156 132
+65130 10 1181 92
+FUNC 65140 40 0 sys_sigaltstack
+65140 c 3142 97
+6514c 14 3142 97
+65160 4 3142 97
+65164 4 3142 97
+65168 8 3142 97
+65170 10 3142 97
+FUNC 65180 44 0 sys_close
+65180 10 2979 97
+65190 14 2979 97
+651a4 4 2979 97
+651a8 4 2979 97
+651ac 8 2979 97
+651b4 10 2979 97
+FUNC 651c4 50 0 sys_prctl
+651c4 14 3092 97
+651d8 1c 3092 97
+651f4 4 3092 97
+651f8 4 3092 97
+651fc 8 3092 97
+65204 10 3092 97
+FUNC 65214 fc 0 google_breakpad::ExceptionHandler::InstallHandlersLocked
+65214 4 247 4
+65218 8 246 4
+65220 4 247 4
+65224 14 246 4
+65238 4 247 4
+6523c c 248 4
+65248 2c 252 4
+65274 8 251 4
+6527c 4 257 4
+65280 c 258 4
+6528c 8 257 4
+65294 4 258 4
+65298 14 262 4
+652ac 8 261 4
+652b4 4 264 4
+652b8 4 265 4
+652bc 8 264 4
+652c4 c 265 4
+652d0 18 268 4
+652e8 8 267 4
+652f0 c 273 4
+652fc 14 275 4
+FUNC 65310 2b0 0 google_breakpad::ExceptionHandler::ExceptionHandler
+65310 18 200 4
+65328 4 210 4
+6532c 4 200 4
+65330 8 210 4
+65338 4 200 4
+6533c 4 210 4
+65340 4 92 57
+65344 4 210 4
+65348 4 200 4
+6534c 4 210 4
+65350 4 210 4
+65354 8 211 116
+6535c 4 211 4
+65360 4 212 116
+65364 8 211 116
+6536c 4 212 116
+65370 4 211 4
+65374 c 212 4
+65380 c 105 57
+6538c 4 107 57
+65390 c 107 57
+6539c 4 108 57
+653a0 8 214 4
+653a8 10 214 4
+653b8 4 218 4
+653bc 4 219 4
+653c0 8 218 4
+653c8 8 219 4
+653d0 8 220 4
+653d8 8 67 139
+653e0 4 481 101
+653e4 4 220 4
+653e8 4 221 4
+653ec 10 138 4
+653fc 4 141 4
+65400 4 142 4
+65404 10 141 4
+65414 c 142 4
+65420 c 147 4
+6542c 10 147 4
+6543c 18 151 4
+65454 c 151 4
+65460 4 152 4
+65464 c 151 4
+65470 18 153 4
+65488 8 156 4
+65490 4 154 4
+65494 c 156 4
+654a0 c 157 4
+654ac 4 223 4
+654b0 4 225 4
+654b4 10 380 139
+654c4 4 126 103
+654c8 10 382 139
+654d8 c 192 139
+654e4 c 176 139
+654f0 4 175 139
+654f4 10 176 139
+65504 4 356 101
+65508 8 346 101
+65510 4 177 139
+65514 c 347 101
+65520 4 348 101
+65524 4 352 101
+65528 4 353 101
+6552c 4 352 101
+65530 4 112 138
+65534 c 224 100
+65540 8 224 100
+65548 4 224 100
+6554c c 481 100
+65558 8 657 139
+65560 4 319 101
+65564 8 161 101
+6556c 8 135 119
+65574 4 161 101
+65578 4 118 138
+6557c 4 666 139
+65580 4 667 139
+65584 4 668 139
+65588 8 226 4
+65590 18 227 4
+655a8 c 216 4
+655b4 c 160 4
+FUNC 655c0 84 0 google_breakpad::ExceptionHandler::RestoreHandlersLocked
+655c0 4 281 4
+655c4 8 280 4
+655cc 4 281 4
+655d0 10 280 4
+655e0 c 281 4
+655ec 28 285 4
+65614 10 286 4
+65624 8 284 4
+6562c 4 289 4
+65630 14 290 4
+FUNC 65644 c4 0 google_breakpad::ExceptionHandler::SendContinueSignalToChild
+65644 c 521 4
+65650 4 3162 97
+65654 4 521 4
+65658 4 3162 97
+6565c 4 521 4
+65660 20 3162 97
+65680 4 3162 97
+65684 8 3162 97
+6568c c 524 4
+65698 10 528 4
+656a8 c 529 4
+656b4 8 529 4
+656bc 4 529 4
+656c0 4 529 4
+656c4 8 529 4
+656cc 8 529 4
+656d4 8 532 4
+656dc 8 530 4
+656e4 4 532 4
+656e8 8 530 4
+656f0 8 525 4
+656f8 10 532 4
+FUNC 65708 368 0 google_breakpad::ExceptionHandler::GenerateDump
+65708 18 449 4
+65720 8 449 4
+65728 4 122 57
+6572c 4 450 4
+65730 4 451 4
+65734 14 451 4
+65748 4 451 4
+6574c 4 64 54
+65750 4 67 54
+65754 4 90 54
+65758 4 3940 97
+6575c 4 90 54
+65760 c 3940 97
+6576c 4 90 54
+65770 4 3940 97
+65774 4 119 54
+65778 14 3940 97
+6578c 4 3940 97
+65790 4 3940 97
+65794 8 3940 97
+6579c 8 124 54
+657a4 4 135 54
+657a8 4 458 4
+657ac 4 134 54
+657b0 4 458 4
+657b4 4 461 4
+657b8 8 462 4
+657c0 4 461 4
+657c4 4 462 4
+657c8 4 466 4
+657cc 4 462 4
+657d0 4 465 4
+657d4 4 466 4
+657d8 8 467 4
+657e0 4 469 4
+657e4 4 468 4
+657e8 4 3944 97
+657ec 4 469 4
+657f0 4 475 4
+657f4 14 3944 97
+65808 4 3944 97
+6580c 4 3944 97
+65810 c 3944 97
+6581c 8 475 4
+65824 10 481 4
+65834 c 482 4
+65840 8 482 4
+65848 4 482 4
+6584c 4 482 4
+65850 8 482 4
+65858 8 482 4
+65860 10 483 4
+65870 8 486 4
+65878 4 2523 97
+6587c 4 2521 97
+65880 4 2560 97
+65884 4 2521 97
+65888 4 2522 97
+6588c 4 2524 97
+65890 4 2525 97
+65894 2c 2560 97
+658c0 8 2562 97
+658c8 4 2562 97
+658cc 4 2562 97
+658d0 8 2562 97
+658d8 4 492 4
+658dc 4 2562 97
+658e0 4 492 4
+658e4 4 493 4
+658e8 4 495 4
+658ec 4 493 4
+658f0 c 494 4
+658fc c 499 4
+65908 4 3272 97
+6590c 4 499 4
+65910 8 500 4
+65918 24 3272 97
+6593c 4 3272 97
+65940 4 3272 97
+65944 8 3272 97
+6594c 4 502 4
+65950 4 3272 97
+65954 4 502 4
+65958 4 502 4
+6595c 10 502 4
+6596c 4 67 54
+65970 8 459 4
+65978 c 514 4
+65984 c 514 4
+65990 4 515 4
+65994 4 514 4
+65998 4 515 4
+6599c 10 516 4
+659ac 4 144 54
+659b0 4 146 54
+659b4 4 3074 97
+659b8 4 145 54
+659bc 18 3074 97
+659d4 4 3074 97
+659d8 8 3074 97
+659e0 8 459 4
+659e8 8 504 4
+659f0 8 505 4
+659f8 8 507 4
+65a00 10 509 4
+65a10 c 510 4
+65a1c 8 510 4
+65a24 4 510 4
+65a28 4 510 4
+65a2c 8 510 4
+65a34 8 510 4
+65a3c 10 511 4
+65a4c 8 514 4
+65a54 1c 518 4
+FUNC 65a70 128 0 google_breakpad::ExceptionHandler::HandleSignal
+65a70 1c 392 4
+65a8c c 392 4
+65a98 4 397 4
+65a9c 8 400 4
+65aa4 c 400 4
+65ab0 4 400 4
+65ab4 4 400 4
+65ab8 8 400 4
+65ac0 18 405 4
+65ad8 10 406 4
+65ae8 10 407 4
+65af8 18 412 4
+65b10 10 413 4
+65b20 10 426 4
+65b30 8 427 4
+65b38 14 432 4
+65b4c 20 428 4
+65b6c 10 401 4
+65b7c 1c 433 4
+FUNC 65b98 5c 0 google_breakpad::ExceptionHandler::HandleSignal
+65b98 10 392 4
+65ba8 4 392 4
+65bac 8 393 4
+65bb4 14 393 4
+65bc8 10 393 4
+65bd8 1c 433 4
+FUNC 65bf4 190 0 google_breakpad::ExceptionHandler::SignalHandler
+65bf4 c 299 4
+65c00 4 301 4
+65c04 4 299 4
+65c08 4 301 4
+65c0c c 299 4
+65c18 8 299 4
+65c20 4 314 4
+65c24 4 301 4
+65c28 14 314 4
+65c3c 4 315 4
+65c40 4 314 4
+65c44 10 333 4
+65c54 10 192 139
+65c64 4 332 4
+65c68 c 333 4
+65c74 14 333 4
+65c88 c 334 4
+65c94 4 202 139
+65c98 14 334 4
+65cac 4 342 4
+65cb0 10 343 4
+65cc0 4 345 4
+65cc4 8 348 4
+65ccc 8 350 4
+65cd4 4 350 4
+65cd8 4 350 4
+65cdc 8 355 4
+65ce4 4 355 4
+65ce8 4 355 4
+65cec 8 355 4
+65cf4 10 110 4
+65d04 4 355 4
+65d08 8 359 4
+65d10 c 317 4
+65d1c c 318 4
+65d28 4 320 4
+65d2c 4 323 4
+65d30 8 320 4
+65d38 4 321 4
+65d3c 4 323 4
+65d40 8 321 4
+65d48 10 323 4
+65d58 c 326 4
+65d64 8 328 4
+65d6c 18 366 4
+FUNC 65d84 b8 0 google_breakpad::ExceptionHandler::WaitForContinueSignal
+65d84 10 536 4
+65d94 4 536 4
+65d98 24 3104 97
+65dbc 4 3104 97
+65dc0 8 3104 97
+65dc8 c 539 4
+65dd4 10 543 4
+65de4 c 544 4
+65df0 8 544 4
+65df8 4 544 4
+65dfc 4 544 4
+65e00 8 544 4
+65e08 8 544 4
+65e10 14 545 4
+65e24 8 540 4
+65e2c 10 547 4
+FUNC 65e3c 68 0 google_breakpad::ExceptionHandler::DoDump
+65e3c 10 552 4
+65e4c 4 553 4
+65e50 8 552 4
+65e58 4 553 4
+65e5c 14 557 4
+65e70 c 559 4
+65e7c 14 566 4
+65e90 14 574 4
+FUNC 65ea4 40 0 google_breakpad::ExceptionHandler::ThreadEntry
+65ea4 c 379 4
+65eb0 4 379 4
+65eb4 8 384 4
+65ebc 18 387 4
+65ed4 10 388 4
+FUNC 65ee4 130 0 google_breakpad::ExceptionHandler::WriteMinidump
+65ee4 18 593 4
+65efc 4 593 4
+65f00 c 594 4
+65f0c c 594 4
+65f18 8 600 4
+65f20 8 609 4
+65f28 4 612 4
+65f2c 4 609 4
+65f30 8 612 4
+65f38 4 614 4
+65f3c 4 613 4
+65f40 14 3039 97
+65f54 4 3039 97
+65f58 4 3039 97
+65f5c 8 3039 97
+65f64 4 3789 97
+65f68 4 3039 97
+65f6c 4 3789 97
+65f70 14 3026 97
+65f84 4 3026 97
+65f88 4 3026 97
+65f8c 8 3026 97
+65f94 4 643 4
+65f98 c 646 4
+65fa4 4 643 4
+65fa8 4 646 4
+65fac 8 647 4
+65fb4 4 659 4
+65fb8 4 667 4
+65fbc 4 659 4
+65fc0 10 667 4
+65fd0 8 601 4
+65fd8 10 604 4
+65fe8 10 605 4
+65ff8 1c 668 4
+FUNC 66014 b4 0 google_breakpad::ExceptionHandler::AddMappingInfo
+66014 14 674 4
+66028 8 674 4
+66030 c 679 4
+6603c 8 676 4
+66044 4 683 4
+66048 4 677 4
+6604c 4 370 116
+66050 4 678 4
+66054 4 679 4
+66058 c 683 4
+66064 4 680 4
+66068 4 683 4
+6606c 4 684 4
+66070 4 306 101
+66074 8 684 4
+6607c 8 306 101
+66084 8 307 101
+6608c 8 119 103
+66094 c 119 103
+660a0 4 427 116
+660a4 4 429 116
+660a8 4 428 116
+660ac 4 430 116
+660b0 4 431 116
+660b4 14 686 4
+FUNC 660c8 84 0 google_breakpad::ExceptionHandler::RegisterAppMemory
+660c8 10 688 4
+660d8 8 198 99
+660e0 c 198 99
+660ec 8 91 116
+660f4 8 691 4
+660fc 14 306 101
+66110 4 307 101
+66114 8 119 103
+6611c 10 119 103
+6612c 4 427 116
+66130 4 429 116
+66134 4 428 116
+66138 4 430 116
+6613c 4 431 116
+66140 c 700 4
+FUNC 6614c 48 0 google_breakpad::ExceptionHandler::UnregisterAppMemory
+6614c 8 702 4
+66154 8 198 99
+6615c c 198 99
+66168 8 91 116
+66170 8 705 4
+66178 4 520 116
+6617c 4 519 116
+66180 4 522 116
+66184 4 523 116
+66188 8 161 101
+66190 4 708 4
+FUNC 66194 258 0 google_breakpad::ExceptionHandler::~ExceptionHandler
+66194 c 230 4
+661a0 4 231 4
+661a4 4 230 4
+661a8 4 230 4
+661ac 8 231 4
+661b4 14 233 4
+661c8 8 115 99
+661d0 8 117 99
+661d8 c 118 99
+661e4 c 121 99
+661f0 8 119 99
+661f8 c 124 99
+66204 8 122 99
+6620c c 127 99
+66218 c 125 99
+66224 8 117 99
+6622c 24 131 99
+66250 10 133 99
+66260 4 134 99
+66264 10 136 99
+66274 4 137 99
+66278 10 139 99
+66288 8 118 99
+66290 4 143 99
+66294 c 580 139
+662a0 8 224 100
+662a8 4 224 100
+662ac 4 584 139
+662b0 4 200 139
+662b4 8 584 139
+662bc 8 235 4
+662c4 4 87 139
+662c8 8 88 139
+662d0 8 161 101
+662d8 8 135 119
+662e0 4 161 101
+662e4 8 236 4
+662ec 4 237 4
+662f0 10 166 4
+66300 14 170 4
+66314 18 175 4
+6632c 10 176 4
+6633c 8 177 4
+66344 8 181 4
+6634c 10 182 4
+6635c 8 187 4
+66364 4 188 4
+66368 4 239 4
+6636c 4 241 4
+66370 4 67 115
+66374 4 241 4
+66378 4 67 115
+6637c 8 68 115
+66384 4 161 101
+66388 4 74 115
+6638c c 161 101
+66398 8 67 115
+663a0 8 68 115
+663a8 4 74 115
+663ac c 135 119
+663b8 10 156 132
+663c8 8 98 57
+663d0 c 98 57
+663dc 10 242 4
+FUNC 663ec cc 0 google_breakpad::ExceptionHandler::WriteMinidumpForChild
+663ec 10 715 4
+663fc 4 61 8
+66400 4 715 4
+66404 4 61 8
+66408 4 715 4
+6640c c 61 8
+66418 8 715 4
+66420 c 61 8
+6642c 4 120 132
+66430 4 124 132
+66434 4 120 132
+66438 4 481 101
+6643c 8 124 132
+66444 4 101 103
+66448 8 61 8
+66450 4 718 4
+66454 4 61 8
+66458 4 718 4
+6645c 14 721 4
+66470 4 719 4
+66474 8 724 4
+6647c 18 724 4
+66494 10 156 132
+664a4 14 725 4
+FUNC 664b8 a4 0 google_breakpad::MinidumpDescriptor::MinidumpDescriptor
+664b8 18 41 7
+664d0 4 112 132
+664d4 4 41 7
+664d8 10 46 7
+664e8 4 379 131
+664ec 4 112 132
+664f0 c 481 101
+664fc 4 378 131
+66500 8 379 131
+66508 10 148 137
+66518 4 380 131
+6651c 4 101 103
+66520 4 165 131
+66524 4 124 132
+66528 4 120 132
+6652c 4 481 101
+66530 8 124 132
+66538 4 101 103
+6653c 4 46 7
+66540 4 51 7
+66544 8 46 7
+6654c 10 51 7
+FUNC 6655c f0 0 google_breakpad::MinidumpDescriptor::UpdatePath
+6655c c 70 7
+66568 4 75 7
+6656c 4 70 7
+66570 4 75 7
+66574 8 70 7
+6657c 10 75 7
+6658c 14 75 7
+665a0 4 79 7
+665a4 c 422 131
+665b0 4 232 140
+665b4 8 424 131
+665bc 14 80 7
+665d0 4 80 7
+665d4 4 80 7
+665d8 c 80 7
+665e4 4 80 7
+665e8 4 80 7
+665ec 14 80 7
+66600 8 348 131
+66608 10 349 131
+66618 18 156 132
+66630 4 82 7
+66634 8 81 7
+6663c 10 82 7
+FUNC 6664c 88 0 google_breakpad::MinidumpDescriptor::operator=
+6664c c 54 7
+66658 8 54 7
+66660 4 57 7
+66664 4 59 7
+66668 4 57 7
+6666c 8 58 7
+66674 4 59 7
+66678 8 348 131
+66680 10 349 131
+66690 c 422 131
+6669c 4 232 140
+666a0 8 424 131
+666a8 8 61 7
+666b0 4 63 7
+666b4 8 64 7
+666bc 8 66 7
+666c4 10 68 7
+FUNC 666d4 14 0 logger::write
+666d4 4 42 9
+666d8 4 40 9
+666dc c 42 9
+FUNC 666e8 c 0 MicrodumpWriter::LogAppend
+666e8 c 108 10
+FUNC 666f4 40 0 MicrodumpWriter::LogAppend<unsigned char>
+666f4 8 118 10
+666fc c 124 10
+66708 4 123 10
+6670c 4 118 10
+66710 c 124 10
+6671c 4 113 10
+66720 4 124 10
+66724 4 125 10
+66728 4 113 10
+6672c 8 127 10
+FUNC 66734 4c 0 MicrodumpWriter::LogAppend<long unsigned int>
+66734 10 118 10
+66744 8 124 10
+6674c 10 124 10
+6675c 4 123 10
+66760 4 123 10
+66764 8 124 10
+6676c 4 123 10
+66770 4 125 10
+66774 4 113 10
+66778 8 127 10
+FUNC 66780 44 0 MicrodumpWriter::LogCommitLine
+66780 c 137 10
+6678c 4 137 10
+66790 4 228 57
+66794 c 100 10
+667a0 8 100 10
+667a8 8 139 10
+667b0 8 140 10
+667b8 c 139 10
+FUNC 667c4 220 0 MicrodumpWriter::DumpModule
+667c4 1c 291 10
+667e0 c 291 10
+667ec 4 296 10
+667f0 c 298 10
+667fc c 304 10
+66808 18 310 10
+66820 4 314 10
+66824 4 310 10
+66828 4 314 10
+6682c 10 312 10
+6683c c 313 10
+66848 c 314 10
+66854 c 315 10
+66860 c 316 10
+6686c c 317 10
+66878 10 318 10
+66888 8 319 10
+66890 14 124 10
+668a4 4 123 10
+668a8 4 123 10
+668ac 8 124 10
+668b4 4 123 10
+668b8 8 113 10
+668c0 4 125 10
+668c4 4 113 10
+668c8 8 320 10
+668d0 14 124 10
+668e4 4 123 10
+668e8 4 123 10
+668ec c 124 10
+668f8 4 123 10
+668fc 8 113 10
+66904 4 125 10
+66908 4 113 10
+6690c 8 321 10
+66914 10 124 10
+66924 4 123 10
+66928 4 123 10
+6692c 8 124 10
+66934 4 123 10
+66938 8 113 10
+66940 4 125 10
+66944 4 113 10
+66948 c 322 10
+66954 c 323 10
+66960 c 324 10
+6696c c 325 10
+66978 c 326 10
+66984 c 327 10
+66990 c 328 10
+6699c c 329 10
+669a8 10 330 10
+669b8 c 113 10
+669c4 8 332 10
+669cc 18 333 10
+FUNC 669e4 678 0 google_breakpad::WriteMicrodump
+669e4 18 375 10
+669fc 4 376 10
+66a00 4 375 10
+66a04 4 376 10
+66a08 4 375 10
+66a0c 4 376 10
+66a10 14 375 10
+66a24 4 375 10
+66a28 4 376 10
+66a2c 8 378 10
+66a34 8 379 10
+66a3c 4 380 10
+66a40 8 379 10
+66a48 8 123 22
+66a50 8 127 22
+66a58 8 130 22
+66a60 8 72 10
+66a68 4 72 10
+66a6c 8 72 10
+66a74 4 72 10
+66a78 4 72 10
+66a7c 8 72 10
+66a84 14 72 10
+66a98 4 197 57
+66a9c 4 73 10
+66aa0 18 79 10
+66ab8 8 389 10
+66ac0 14 81 10
+66ad4 4 388 10
+66ad8 4 100 10
+66adc 4 144 10
+66ae0 10 100 10
+66af0 4 100 10
+66af4 4 88 10
+66af8 4 100 10
+66afc c 144 10
+66b08 4 146 10
+66b0c 4 149 10
+66b10 4 157 10
+66b14 4 172 10
+66b18 8 146 10
+66b20 4 149 10
+66b24 4 170 10
+66b28 4 149 10
+66b2c 4 170 10
+66b30 4 172 10
+66b34 4 267 10
+66b38 4 233 10
+66b3c 4 267 10
+66b40 4 149 10
+66b44 8 157 10
+66b4c 4 149 10
+66b50 10 157 10
+66b60 8 170 10
+66b68 c 171 10
+66b74 c 172 10
+66b80 c 173 10
+66b8c c 174 10
+66b98 c 175 10
+66ba4 c 176 10
+66bb0 c 113 10
+66bbc c 178 10
+66bc8 c 113 10
+66bd4 c 180 10
+66be0 c 113 10
+66bec 8 182 10
+66bf4 4 233 10
+66bf8 c 192 139
+66c04 8 233 10
+66c0c c 200 10
+66c18 c 221 10
+66c24 c 235 10
+66c30 10 237 10
+66c40 10 238 10
+66c50 c 241 10
+66c5c 4 248 10
+66c60 4 190 10
+66c64 8 248 10
+66c6c 4 249 10
+66c70 c 194 10
+66c7c 4 249 10
+66c80 10 194 10
+66c90 8 200 10
+66c98 4 202 10
+66c9c 4 200 10
+66ca0 c 201 10
+66cac c 202 10
+66cb8 c 203 10
+66cc4 c 204 10
+66cd0 c 205 10
+66cdc 8 206 10
+66ce4 8 358 10
+66cec 4 75 54
+66cf0 8 76 54
+66cf8 c 78 54
+66d04 14 78 54
+66d18 4 80 54
+66d1c 4 79 54
+66d20 8 81 54
+66d28 8 80 54
+66d30 4 82 54
+66d34 8 83 54
+66d3c 8 90 54
+66d44 10 3940 97
+66d54 4 90 54
+66d58 8 3940 97
+66d60 4 90 54
+66d64 4 119 54
+66d68 14 3940 97
+66d7c 4 3940 97
+66d80 c 3940 97
+66d8c 8 124 54
+66d94 8 134 54
+66d9c 4 135 54
+66da0 4 136 54
+66da4 14 96 54
+66db8 4 97 54
+66dbc 4 98 54
+66dc0 8 98 54
+66dc8 4 98 54
+66dcc 4 100 54
+66dd0 4 214 10
+66dd4 4 219 10
+66dd8 1c 214 10
+66df4 8 223 10
+66dfc c 219 10
+66e08 c 221 10
+66e14 10 222 10
+66e24 c 223 10
+66e30 4 225 10
+66e34 8 139 100
+66e3c 4 132 10
+66e40 4 225 10
+66e44 8 139 100
+66e4c 8 132 10
+66e54 18 133 10
+66e6c 14 132 10
+66e80 4 226 10
+66e84 4 219 10
+66e88 8 226 10
+66e90 10 253 10
+66ea0 10 255 10
+66eb0 4 259 10
+66eb4 10 260 10
+66ec4 10 267 10
+66ed4 10 133 10
+66ee4 8 132 10
+66eec 10 269 10
+66efc 4 235 10
+66f00 8 338 10
+66f08 c 192 139
+66f14 8 338 10
+66f1c 4 339 10
+66f20 8 342 10
+66f28 8 340 10
+66f30 4 342 10
+66f34 10 341 10
+66f44 8 275 10
+66f4c 10 280 10
+66f5c 4 282 10
+66f60 4 281 10
+66f64 4 282 10
+66f68 8 280 10
+66f70 8 91 116
+66f78 14 347 10
+66f8c 10 338 10
+66f9c c 350 10
+66fa8 18 353 10
+66fc0 8 91 116
+66fc8 4 91 10
+66fcc 14 100 10
+66fe0 4 100 10
+66fe4 4 390 10
+66fe8 4 100 10
+66fec 10 93 10
+66ffc 10 76 10
+6700c 8 203 57
+67014 4 203 57
+67018 18 42 24
+67030 2c 391 10
+FUNC 6705c 8 0 google_breakpad::LinuxCoreDumper::IsPostMortem
+6705c 8 116 18
+FUNC 67064 8 0 google_breakpad::LinuxCoreDumper::ThreadsSuspend
+67064 8 120 18
+FUNC 6706c 8 0 google_breakpad::LinuxCoreDumper::ThreadsResume
+6706c 8 124 18
+FUNC 67074 64 0 google_breakpad::LinuxCoreDumper::GetThreadInfoByIndex
+67074 8 90 18
+6707c 24 192 139
+670a0 4 92 18
+670a4 c 91 18
+670b0 14 94 18
+670c4 4 103 18
+670c8 4 110 18
+670cc 4 111 18
+670d0 8 112 18
+FUNC 670d8 54 0 google_breakpad::LinuxCoreDumper::CopyFromProcess
+670d8 4 78 18
+670dc 8 83 18
+670e4 4 78 18
+670e8 4 83 18
+670ec 4 78 18
+670f0 4 78 18
+670f4 14 83 18
+67108 4 86 18
+6710c 8 88 18
+67114 c 86 18
+67120 c 88 18
+FUNC 6712c b4 0 google_breakpad::LinuxCoreDumper::BuildProcPath
+6712c 18 57 18
+67144 10 58 18
+67154 c 59 18
+67160 14 61 18
+67174 4 62 18
+67178 c 65 18
+67184 4 66 18
+67188 4 67 18
+6718c 4 65 18
+67190 4 67 18
+67194 10 70 18
+671a4 8 71 18
+671ac 14 72 18
+671c0 4 73 18
+671c4 4 74 18
+671c8 18 75 18
+FUNC 671e0 90 0 std::priv::__ucopy<google_breakpad::ThreadInfo*, google_breakpad::ThreadInfo*, long int>
+671e0 4 82 137
+671e4 4 86 137
+671e8 8 82 137
+671f0 c 86 137
+671fc 4 82 137
+67200 4 86 137
+67204 4 82 137
+67208 8 86 137
+67210 4 82 137
+67214 4 86 137
+67218 4 82 137
+6721c 4 86 137
+67220 8 86 137
+67228 8 139 103
+67230 c 139 103
+6723c 10 86 137
+6724c 24 95 137
+FUNC 67270 84 0 google_breakpad::LinuxCoreDumper::LinuxCoreDumper
+67270 c 46 18
+6727c c 46 18
+67288 20 52 18
+672a8 8 52 18
+672b0 8 52 18
+672b8 4 67 139
+672bc 4 52 18
+672c0 4 67 139
+672c4 4 163 54
+672c8 4 172 54
+672cc 4 481 101
+672d0 4 172 54
+672d4 4 666 139
+672d8 4 667 139
+672dc 8 76 138
+672e4 4 668 139
+672e8 c 54 18
+FUNC 672f4 190 0 std::priv::_Impl_vector<google_breakpad::ThreadInfo, google_breakpad::PageStdAllocator<google_breakpad::ThreadInfo> >::_M_insert_overflow_aux
+672f4 20 81 138
+67314 8 81 138
+6731c 14 192 139
+67330 4 81 138
+67334 c 192 139
+67340 4 81 138
+67344 4 192 139
+67348 1c 173 139
+67364 c 41 138
+67370 14 176 139
+67384 4 175 139
+67388 4 176 139
+6738c 10 176 139
+6739c 10 177 139
+673ac 18 172 54
+673c4 14 113 137
+673d8 8 93 138
+673e0 4 119 103
+673e4 c 119 103
+673f0 8 95 138
+673f8 4 314 137
+673fc 4 249 137
+67400 4 314 137
+67404 14 249 137
+67418 8 249 137
+67420 4 139 103
+67424 10 139 103
+67434 c 249 137
+67440 4 98 138
+67444 14 113 137
+67458 4 104 138
+6745c 4 666 139
+67460 4 667 139
+67464 4 668 139
+67468 1c 105 138
+FUNC 67484 2b4 0 google_breakpad::LinuxCoreDumper::EnumerateThreads
+67484 14 126 18
+67498 4 132 18
+6749c 4 126 18
+674a0 8 132 18
+674a8 10 126 18
+674b8 4 132 18
+674bc 10 133 18
+674cc 14 134 18
+674e0 8 138 18
+674e8 4 139 18
+674ec 8 138 18
+674f4 10 139 18
+67504 1c 140 18
+67520 4 188 18
+67524 4 380 139
+67528 4 202 18
+6752c 4 380 139
+67530 4 162 139
+67534 4 202 18
+67538 c 146 18
+67544 4 147 18
+67548 4 146 18
+6754c 8 147 18
+67554 c 148 18
+67560 4 150 18
+67564 4 148 18
+67568 4 150 18
+6756c 4 150 18
+67570 4 150 18
+67574 8 150 18
+6757c 14 151 18
+67590 4 152 18
+67594 8 151 18
+6759c 8 177 18
+675a4 8 179 18
+675ac 14 180 18
+675c0 8 188 18
+675c8 4 186 18
+675cc 4 188 18
+675d0 4 189 18
+675d4 4 202 18
+675d8 4 189 18
+675dc 4 202 18
+675e0 8 190 18
+675e8 8 202 18
+675f0 4 204 18
+675f4 4 205 18
+675f8 8 206 18
+67600 10 380 139
+67610 4 126 103
+67614 10 382 139
+67624 c 192 139
+67630 c 176 139
+6763c 4 175 139
+67640 10 176 139
+67650 4 177 139
+67654 14 172 54
+67668 4 112 138
+6766c 4 172 54
+67670 8 224 100
+67678 c 224 100
+67684 8 224 100
+6768c 8 481 100
+67694 4 666 139
+67698 4 118 138
+6769c 4 667 139
+676a0 4 668 139
+676a4 10 380 139
+676b4 4 119 103
+676b8 10 119 103
+676c8 10 382 139
+676d8 18 162 139
+676f0 4 208 18
+676f4 c 244 18
+67700 10 145 18
+67710 28 248 18
+FUNC 67738 60 0 google_breakpad::LinuxCoreDumper::EnumerateThreads
+67738 4 126 18
+6773c 4 127 18
+67740 8 126 18
+67748 4 126 18
+6774c 18 127 18
+67764 c 248 18
+67770 18 128 18
+67788 10 248 18
+FUNC 67798 1ac 0 google_breakpad::::ElfFileSoName
+67798 10 193 21
+677a8 4 67 21
+677ac 4 193 21
+677b0 4 67 21
+677b4 c 193 21
+677c0 8 193 21
+677c8 10 67 21
+677d8 4 194 21
+677dc 8 196 21
+677e4 8 200 21
+677ec 4 201 21
+677f0 4 200 21
+677f4 4 201 21
+677f8 10 207 21
+67808 4 210 21
+6780c 8 207 21
+67814 8 210 21
+6781c 4 208 21
+67820 c 210 21
+6782c 4 213 21
+67830 4 211 21
+67834 4 211 21
+67838 4 213 21
+6783c 8 211 21
+67844 10 146 21
+67854 30 155 21
+67884 4 154 21
+67888 4 157 21
+6788c c 216 21
+67898 2c 163 21
+678c4 4 162 21
+678c8 4 169 21
+678cc 4 168 21
+678d0 10 170 21
+678e0 c 171 21
+678ec 8 173 21
+678f4 4 172 21
+678f8 8 173 21
+67900 4 178 21
+67904 18 179 21
+6791c 8 170 21
+67924 20 217 21
+FUNC 67944 120 0 google_breakpad::LinuxDumper::HandleDeletedFileInMapping
+67944 4 438 21
+67948 8 454 21
+67950 18 438 21
+67968 20 454 21
+67988 8 455 21
+67990 18 60 49
+679a8 4 456 21
+679ac 10 458 21
+679bc 24 3942 97
+679e0 4 466 21
+679e4 20 3942 97
+67a04 4 3942 97
+67a08 c 3942 97
+67a14 4 464 21
+67a18 10 465 21
+67a28 10 466 21
+67a38 10 471 21
+67a48 1c 473 21
+FUNC 67a64 70 0 google_breakpad::LinuxDumper::~LinuxDumper
+67a64 14 88 21
+67a78 c 88 21
+67a84 4 144 54
+67a88 4 144 54
+67a8c 8 146 54
+67a94 4 145 54
+67a98 18 3074 97
+67ab0 4 3074 97
+67ab4 8 3074 97
+67abc 8 88 21
+67ac4 10 89 21
+FUNC 67ad4 fc 0 google_breakpad::LinuxDumper::GetMappingEffectiveNameAndPath
+67ad4 14 227 21
+67ae8 8 228 21
+67af0 8 227 21
+67af8 c 227 21
+67b04 4 228 21
+67b08 8 235 21
+67b10 8 235 21
+67b18 14 236 21
+67b2c 4 238 21
+67b30 c 243 21
+67b3c 8 243 21
+67b44 10 243 21
+67b54 14 244 21
+67b68 4 255 21
+67b6c c 245 21
+67b78 c 255 21
+67b84 4 245 21
+67b88 c 251 21
+67b94 4 252 21
+67b98 4 251 21
+67b9c c 253 21
+67ba8 10 255 21
+67bb8 4 253 21
+67bbc 14 255 21
+FUNC 67bd0 11c 0 google_breakpad::LinuxDumper::ReadAuxv
+67bd0 4 257 21
+67bd4 4 259 21
+67bd8 c 257 21
+67be4 c 259 21
+67bf0 4 257 21
+67bf4 18 259 21
+67c0c 8 260 21
+67c14 24 3281 97
+67c38 4 3281 97
+67c3c 4 3281 97
+67c40 8 3281 97
+67c48 4 3281 97
+67c4c 8 264 21
+67c54 24 3104 97
+67c78 4 3104 97
+67c7c c 3104 97
+67c88 8 272 21
+67c90 4 273 21
+67c94 4 272 21
+67c98 8 274 21
+67ca0 4 275 21
+67ca4 4 276 21
+67ca8 c 275 21
+67cb4 18 2979 97
+67ccc 4 2979 97
+67cd0 8 2979 97
+67cd8 4 280 21
+67cdc 10 281 21
+FUNC 67cec 5c 0 google_breakpad::LinuxDumper::Init
+67cec c 91 21
+67cf8 4 91 21
+67cfc c 92 21
+67d08 8 92 21
+67d10 4 92 21
+67d14 10 92 21
+67d24 4 92 21
+67d28 4 92 21
+67d2c 10 92 21
+67d3c c 93 21
+FUNC 67d48 4c 0 google_breakpad::LinuxDumper::FindMapping
+67d48 4 192 139
+67d4c 4 429 21
+67d50 c 192 139
+67d5c 8 429 21
+67d64 8 430 21
+67d6c 8 431 21
+67d74 10 431 21
+67d84 8 429 21
+67d8c 4 435 21
+67d90 4 436 21
+FUNC 67d94 84 0 google_breakpad::LinuxDumper::GetStackInfo
+67d94 10 402 21
+67da4 10 402 21
+67db4 8 404 21
+67dbc 4 407 21
+67dc0 4 412 21
+67dc4 4 407 21
+67dc8 8 412 21
+67dd0 4 414 21
+67dd4 4 413 21
+67dd8 4 416 21
+67ddc 4 422 21
+67de0 4 418 21
+67de4 4 420 21
+67de8 4 416 21
+67dec 4 420 21
+67df0 4 418 21
+67df4 8 420 21
+67dfc 4 420 21
+67e00 4 421 21
+67e04 14 423 21
+FUNC 67e18 64 0 google_breakpad::LinuxDumper::HandleDeletedFileInMapping
+67e18 c 438 21
+67e24 4 438 21
+67e28 4 443 21
+67e2c 4 438 21
+67e30 4 443 21
+67e34 8 444 21
+67e3c 4 446 21
+67e40 14 447 21
+67e54 c 446 21
+67e60 1c 473 21
+FUNC 67e7c 1bc 0 google_breakpad::LinuxDumper::ElfFileIdentifierForMapping
+67e7c 1c 99 21
+67e98 8 101 21
+67ea0 4 99 21
+67ea4 4 101 21
+67ea8 8 99 21
+67eb0 8 99 21
+67eb8 4 101 21
+67ebc 18 67 21
+67ed4 4 102 21
+67ed8 8 103 21
+67ee0 14 106 21
+67ef4 4 108 21
+67ef8 14 3026 97
+67f0c 4 3026 97
+67f10 4 3026 97
+67f14 8 3026 97
+67f1c 8 108 21
+67f24 8 109 21
+67f2c 10 111 21
+67f3c 20 114 21
+67f5c 14 116 21
+67f70 8 120 21
+67f78 4 121 21
+67f7c 4 120 21
+67f80 4 121 21
+67f84 10 125 21
+67f94 4 129 21
+67f98 4 125 21
+67f9c 4 126 21
+67fa0 10 127 21
+67fb0 14 129 21
+67fc4 4 131 21
+67fc8 4 130 21
+67fcc 4 130 21
+67fd0 4 131 21
+67fd4 8 130 21
+67fdc c 134 21
+67fe8 8 135 21
+67ff0 4 135 21
+67ff4 10 137 21
+68004 c 140 21
+68010 8 134 21
+68018 20 141 21
+FUNC 68038 f4 0 std::priv::_Impl_vector<void*, google_breakpad::PageStdAllocator<void*> >::_M_insert_overflow
+68038 14 108 138
+6804c 8 108 138
+68054 4 192 139
+68058 4 108 138
+6805c 4 192 139
+68060 4 108 138
+68064 4 192 139
+68068 4 173 139
+6806c 4 192 139
+68070 c 173 139
+6807c 14 41 138
+68090 4 175 139
+68094 10 176 139
+680a4 4 177 139
+680a8 18 172 54
+680c0 18 112 138
+680d8 8 480 100
+680e0 14 481 100
+680f4 4 115 138
+680f8 10 116 138
+68108 4 118 138
+6810c 4 666 139
+68110 4 667 139
+68114 4 668 139
+68118 14 119 138
+FUNC 6812c 148 0 std::priv::_Impl_vector<long unsigned int, google_breakpad::PageStdAllocator<long unsigned int> >::_M_fill_insert_aux
+6812c 18 140 138
+68144 c 140 138
+68150 4 416 139
+68154 8 140 138
+6815c 8 416 139
+68164 8 416 139
+6816c 8 150 138
+68174 8 152 138
+6817c 4 153 138
+68180 4 120 137
+68184 4 153 138
+68188 c 120 137
+68194 4 154 138
+68198 4 255 100
+6819c 4 256 100
+681a0 8 154 138
+681a8 4 256 100
+681ac c 256 100
+681b8 c 442 100
+681c4 8 442 100
+681cc 10 443 100
+681dc 4 158 138
+681e0 4 249 137
+681e4 8 314 137
+681ec 8 249 137
+681f4 c 249 137
+68200 c 146 103
+6820c 4 158 138
+68210 c 120 137
+6821c 14 160 138
+68230 8 442 100
+68238 10 443 100
+68248 c 146 138
+68254 8 147 138
+6825c 18 163 138
+FUNC 68274 100 0 google_breakpad::LinuxDumper::LinuxDumper
+68274 10 75 21
+68284 c 82 21
+68290 4 75 21
+68294 4 67 139
+68298 14 82 21
+682ac 4 64 54
+682b0 8 67 54
+682b8 4 172 54
+682bc 4 67 54
+682c0 4 172 54
+682c4 8 67 54
+682cc 8 67 139
+682d4 4 163 54
+682d8 4 481 101
+682dc 4 172 54
+682e0 4 666 139
+682e4 4 667 139
+682e8 4 76 138
+682ec 4 67 139
+682f0 4 172 54
+682f4 4 668 139
+682f8 4 172 54
+682fc 4 67 139
+68300 4 163 54
+68304 4 481 101
+68308 4 172 54
+6830c 4 666 139
+68310 4 667 139
+68314 4 76 138
+68318 4 67 139
+6831c 4 172 54
+68320 4 668 139
+68324 4 172 54
+68328 4 67 139
+6832c 4 163 54
+68330 4 481 101
+68334 8 172 54
+6833c 4 85 21
+68340 4 76 138
+68344 4 666 139
+68348 4 173 138
+6834c 4 667 139
+68350 4 173 138
+68354 4 668 139
+68358 4 173 138
+6835c 4 85 21
+68360 4 173 138
+68364 10 86 21
+FUNC 68374 148 0 std::priv::_Impl_vector<void*, google_breakpad::PageStdAllocator<void*> >::_M_fill_insert_aux
+68374 18 140 138
+6838c c 140 138
+68398 4 416 139
+6839c 8 140 138
+683a4 8 416 139
+683ac 8 416 139
+683b4 8 150 138
+683bc 8 152 138
+683c4 4 153 138
+683c8 4 120 137
+683cc 4 153 138
+683d0 c 120 137
+683dc 4 154 138
+683e0 4 255 100
+683e4 4 256 100
+683e8 8 154 138
+683f0 4 256 100
+683f4 c 256 100
+68400 c 442 100
+6840c 8 442 100
+68414 10 443 100
+68424 4 158 138
+68428 4 249 137
+6842c 8 314 137
+68434 8 249 137
+6843c c 249 137
+68448 c 146 103
+68454 4 158 138
+68458 c 120 137
+68464 14 160 138
+68478 8 442 100
+68480 10 443 100
+68490 c 146 138
+6849c 8 147 138
+684a4 18 163 138
+FUNC 684bc 58c 0 google_breakpad::LinuxDumper::EnumerateMappings
+684bc 4 283 21
+684c0 4 285 21
+684c4 24 283 21
+684e8 c 285 21
+684f4 4 283 21
+684f8 18 285 21
+68510 c 286 21
+6851c 8 3281 97
+68524 4 296 21
+68528 4 300 21
+6852c 4 296 21
+68530 4 3281 97
+68534 4 300 21
+68538 18 3281 97
+68550 4 3281 97
+68554 4 3281 97
+68558 8 3281 97
+68560 4 3281 97
+68564 4 303 21
+68568 4 305 21
+6856c 4 208 54
+68570 4 312 21
+68574 4 314 21
+68578 4 305 21
+6857c 4 357 21
+68580 8 208 54
+68588 c 49 16
+68594 c 351 21
+685a0 4 99 16
+685a4 4 103 16
+685a8 8 66 16
+685b0 8 66 16
+685b8 4 66 16
+685bc 14 69 16
+685d0 10 70 16
+685e0 4 71 16
+685e4 4 73 16
+685e8 8 71 16
+685f0 8 78 16
+685f8 c 86 16
+68604 4 90 16
+68608 4 92 16
+6860c 4 93 16
+68610 4 66 16
+68614 4 90 16
+68618 8 92 16
+68620 4 98 16
+68624 4 3104 97
+68628 4 98 16
+6862c 4 99 16
+68630 14 3104 97
+68644 4 3104 97
+68648 c 3104 97
+68654 8 100 16
+6865c 4 102 16
+68660 8 103 16
+68668 10 105 16
+68678 1c 2979 97
+68694 4 2979 97
+68698 8 2979 97
+686a0 14 395 21
+686b4 10 312 21
+686c4 c 313 21
+686d0 10 314 21
+686e0 c 315 21
+686ec 4 316 21
+686f0 8 317 21
+686f8 4 316 21
+686fc 8 317 21
+68704 c 318 21
+68710 14 323 21
+68724 c 322 21
+68730 14 323 21
+68744 4 330 21
+68748 4 200 139
+6874c c 330 21
+68758 4 344 21
+6875c 4 200 139
+68760 10 344 21
+68770 4 331 21
+68774 c 332 21
+68780 c 333 21
+6878c c 333 21
+68798 4 333 21
+6879c c 333 21
+687a8 c 332 21
+687b4 c 208 54
+687c0 4 357 21
+687c4 c 358 21
+687d0 c 359 21
+687dc 14 360 21
+687f0 8 361 21
+687f8 10 316 21
+68808 4 363 21
+6880c 8 364 21
+68814 c 365 21
+68820 10 366 21
+68830 8 377 21
+68838 4 374 21
+6883c 4 373 21
+68840 4 374 21
+68844 8 373 21
+6884c 8 377 21
+68854 8 375 21
+6885c 8 200 139
+68864 c 377 21
+68870 8 383 21
+68878 10 390 21
+68888 4 325 21
+6888c 4 326 21
+68890 8 325 21
+68898 c 334 21
+688a4 c 334 21
+688b0 4 333 21
+688b4 14 335 21
+688c8 4 345 21
+688cc c 346 21
+688d8 c 349 21
+688e4 8 346 21
+688ec c 347 21
+688f8 8 348 21
+68900 14 351 21
+68914 8 349 21
+6891c 14 352 21
+68930 14 380 139
+68944 4 126 103
+68948 10 382 139
+68958 1c 386 139
+68974 4 192 139
+68978 4 380 21
+6897c 4 192 139
+68980 8 380 21
+68988 8 640 139
+68990 4 641 139
+68994 8 630 139
+6899c c 269 100
+689a8 8 615 139
+689b0 8 172 138
+689b8 4 173 138
+689bc 8 172 138
+689c4 4 173 138
+689c8 4 172 138
+689cc c 173 138
+689d8 10 176 138
+689e8 14 192 139
+689fc 8 381 21
+68a04 4 381 21
+68a08 4 202 139
+68a0c 14 382 21
+68a20 28 396 21
+FUNC 68a48 8 0 google_breakpad::LinuxPtraceDumper::IsPostMortem
+68a48 8 275 23
+FUNC 68a50 48 0 sys_ptrace
+68a50 14 3097 97
+68a64 14 3097 97
+68a78 4 3097 97
+68a7c 4 3097 97
+68a80 8 3097 97
+68a88 10 3097 97
+FUNC 68a98 a0 0 google_breakpad::LinuxPtraceDumper::CopyFromProcess
+68a98 4 134 23
+68a9c 4 135 23
+68aa0 8 134 23
+68aa8 4 135 23
+68aac 10 134 23
+68abc c 134 23
+68ac8 4 135 23
+68acc 4 136 23
+68ad0 4 142 23
+68ad4 8 141 23
+68adc 4 142 23
+68ae0 4 143 23
+68ae4 4 142 23
+68ae8 c 143 23
+68af4 4 142 23
+68af8 c 143 23
+68b04 4 144 23
+68b08 c 146 23
+68b14 4 147 23
+68b18 8 146 23
+68b20 18 149 23
+FUNC 68b38 e4 0 google_breakpad::LinuxPtraceDumper::BuildProcPath
+68b38 4 112 23
+68b3c 4 113 23
+68b40 c 112 23
+68b4c 4 113 23
+68b50 4 113 23
+68b54 4 112 23
+68b58 4 113 23
+68b5c 8 112 23
+68b64 8 113 23
+68b6c 4 113 23
+68b70 8 113 23
+68b78 8 114 23
+68b80 14 116 23
+68b94 4 117 23
+68b98 c 120 23
+68ba4 8 121 23
+68bac 8 122 23
+68bb4 4 125 23
+68bb8 4 126 23
+68bbc 10 125 23
+68bcc 4 126 23
+68bd0 4 125 23
+68bd4 8 126 23
+68bdc 8 127 23
+68be4 4 128 23
+68be8 4 127 23
+68bec 10 128 23
+68bfc 4 129 23
+68c00 4 130 23
+68c04 18 131 23
+FUNC 68c1c 78 0 google_breakpad::LinuxPtraceDumper::ThreadsResume
+68c1c 10 295 23
+68c2c 14 296 23
+68c40 c 192 139
+68c4c 8 299 23
+68c54 10 101 23
+68c64 4 299 23
+68c68 c 101 23
+68c74 8 300 23
+68c7c 4 301 23
+68c80 14 303 23
+FUNC 68c94 2dc 0 google_breakpad::LinuxPtraceDumper::GetThreadInfoByIndex
+68c94 1c 155 23
+68cb0 c 192 139
+68cbc 8 156 23
+68cc4 8 157 23
+68ccc 4 159 23
+68cd0 30 163 23
+68d00 24 3281 97
+68d24 4 3281 97
+68d28 4 3281 97
+68d2c 8 3281 97
+68d34 4 3281 97
+68d38 4 167 23
+68d3c 8 208 54
+68d44 4 177 23
+68d48 4 179 23
+68d4c 4 208 54
+68d50 8 49 16
+68d58 4 208 54
+68d5c 4 49 16
+68d60 4 99 16
+68d64 4 174 23
+68d68 4 177 23
+68d6c 4 174 23
+68d70 4 179 23
+68d74 4 174 23
+68d78 4 103 16
+68d7c 8 66 16
+68d84 8 66 16
+68d8c 4 66 16
+68d90 14 69 16
+68da4 10 70 16
+68db4 4 71 16
+68db8 4 73 16
+68dbc 8 71 16
+68dc4 8 78 16
+68dcc c 86 16
+68dd8 4 90 16
+68ddc 4 92 16
+68de0 4 93 16
+68de4 4 66 16
+68de8 4 90 16
+68dec 8 92 16
+68df4 4 98 16
+68df8 4 3104 97
+68dfc 4 98 16
+68e00 4 99 16
+68e04 14 3104 97
+68e18 4 3104 97
+68e1c c 3104 97
+68e28 8 100 16
+68e30 4 102 16
+68e34 8 103 16
+68e3c 10 105 16
+68e4c 18 2979 97
+68e64 4 2979 97
+68e68 8 2979 97
+68e70 c 187 23
+68e7c c 187 23
+68e88 c 192 23
+68e94 4 193 23
+68e98 4 194 23
+68e9c 4 193 23
+68ea0 18 194 23
+68eb8 8 198 23
+68ec0 4 199 23
+68ec4 4 200 23
+68ec8 4 199 23
+68ecc 18 200 23
+68ee4 4 261 23
+68ee8 4 268 23
+68eec 4 270 23
+68ef0 14 177 23
+68f04 8 178 23
+68f0c 14 179 23
+68f20 10 180 23
+68f30 10 118 16
+68f40 8 117 16
+68f48 8 118 16
+68f50 20 271 23
+FUNC 68f70 30 0 google_breakpad::LinuxPtraceDumper::LinuxPtraceDumper
+68f70 c 106 23
+68f7c 4 106 23
+68f80 14 108 23
+68f94 c 109 23
+FUNC 68fa0 110 0 std::priv::_Impl_vector<int, google_breakpad::PageStdAllocator<int> >::_M_insert_overflow
+68fa0 1c 108 138
+68fbc 4 108 138
+68fc0 8 192 139
+68fc8 c 108 138
+68fd4 8 192 139
+68fdc 10 173 139
+68fec 14 41 138
+69000 4 175 139
+69004 10 176 139
+69014 4 177 139
+69018 14 172 54
+6902c 4 112 138
+69030 4 172 54
+69034 8 224 100
+6903c 8 224 100
+69044 4 224 100
+69048 4 172 54
+6904c 8 480 100
+69054 14 481 100
+69068 4 115 138
+6906c 4 223 100
+69070 8 224 100
+69078 c 224 100
+69084 4 224 100
+69088 4 118 138
+6908c 4 666 139
+69090 4 667 139
+69094 4 668 139
+69098 18 119 138
+FUNC 690b0 240 0 google_breakpad::LinuxPtraceDumper::EnumerateThreads
+690b0 4 307 23
+690b4 4 309 23
+690b8 1c 307 23
+690d4 10 309 23
+690e4 4 307 23
+690e8 14 309 23
+690fc 8 310 23
+69104 24 3281 97
+69128 4 3281 97
+6912c 4 3281 97
+69130 8 3281 97
+69138 4 3281 97
+6913c 4 313 23
+69140 8 208 54
+69148 4 322 23
+6914c 4 323 23
+69150 4 208 54
+69154 4 319 23
+69158 4 208 54
+6915c 8 51 14
+69164 4 322 23
+69168 4 323 23
+6916c 4 324 23
+69170 4 386 139
+69174 4 65 14
+69178 4 63 14
+6917c 4 65 14
+69180 20 3016 97
+691a0 4 3016 97
+691a4 c 3016 97
+691b0 8 68 14
+691b8 4 70 14
+691bc c 71 14
+691c8 c 73 14
+691d4 8 77 14
+691dc 8 77 14
+691e4 4 82 14
+691e8 10 322 23
+691f8 c 323 23
+69204 4 322 23
+69208 8 325 23
+69210 8 324 23
+69218 c 325 23
+69224 4 326 23
+69228 c 325 23
+69234 8 87 14
+6923c 4 93 14
+69240 c 94 14
+6924c 8 93 14
+69254 c 94 14
+69260 14 380 139
+69274 4 126 103
+69278 10 382 139
+69288 1c 386 139
+692a4 1c 2979 97
+692c0 4 2979 97
+692c4 8 2979 97
+692cc 24 336 23
+FUNC 692f0 154 0 std::priv::_Impl_vector<int, google_breakpad::PageStdAllocator<int> >::_M_fill_insert_aux
+692f0 14 140 138
+69304 8 140 138
+6930c 4 416 139
+69310 c 140 138
+6931c 8 416 139
+69324 8 416 139
+6932c 8 150 138
+69334 8 152 138
+6933c 8 153 138
+69344 8 107 137
+6934c 14 106 137
+69360 4 154 138
+69364 4 255 100
+69368 4 256 100
+6936c 8 154 138
+69374 4 256 100
+69378 c 256 100
+69384 c 442 100
+69390 8 442 100
+69398 10 443 100
+693a8 4 158 138
+693ac 4 249 137
+693b0 8 314 137
+693b8 8 249 137
+693c0 c 249 137
+693cc c 146 103
+693d8 4 158 138
+693dc 8 107 137
+693e4 c 106 137
+693f0 14 160 138
+69404 8 442 100
+6940c 10 443 100
+6941c c 146 138
+69428 8 147 138
+69430 14 163 138
+FUNC 69444 1a4 0 google_breakpad::LinuxPtraceDumper::ThreadsSuspend
+69444 18 277 23
+6945c 10 278 23
+6946c 1c 192 139
+69488 8 280 23
+69490 4 202 139
+69494 4 281 23
+69498 4 65 23
+6949c 4 66 23
+694a0 8 65 23
+694a8 14 66 23
+694bc 4 67 23
+694c0 4 66 23
+694c4 24 3272 97
+694e8 8 3272 97
+694f0 c 71 23
+694fc 18 72 23
+69514 10 70 23
+69524 4 192 139
+69528 4 202 139
+6952c 4 286 23
+69530 4 192 139
+69534 4 286 23
+69538 4 286 23
+6953c 8 286 23
+69544 4 287 23
+69548 10 192 139
+69558 8 640 139
+69560 4 641 139
+69564 8 630 139
+6956c 8 615 139
+69574 c 172 138
+69580 4 173 138
+69584 8 172 138
+6958c 10 173 138
+6959c 14 176 138
+695b0 4 288 23
+695b4 8 280 23
+695bc 4 292 23
+695c0 4 291 23
+695c4 4 292 23
+695c8 4 291 23
+695cc 1c 293 23
+FUNC 695e8 44 0 sys_read
+695e8 10 3104 97
+695f8 14 3104 97
+6960c 4 3104 97
+69610 4 3104 97
+69614 8 3104 97
+6961c 10 3104 97
+FUNC 6962c 78 0 MinidumpWriter::Init
+6962c c 144 26
+69638 4 144 26
+6963c 18 145 26
+69654 8 146 26
+6965c 10 148 26
+6966c 8 149 26
+69674 10 150 26
+69684 14 153 26
+69698 c 154 26
+FUNC 696a4 50 0 sys_open
+696a4 4 3961 97
+696a8 4 3281 97
+696ac c 3961 97
+696b8 1c 3281 97
+696d4 4 3281 97
+696d8 4 3281 97
+696dc 8 3281 97
+696e4 10 3963 97
+FUNC 696f4 184 0 MinidumpWriter::FillRawModule
+696f4 20 534 26
+69714 4 539 26
+69718 4 534 26
+6971c 8 539 26
+69724 c 534 26
+69730 4 548 26
+69734 4 534 26
+69738 4 539 26
+6973c 4 541 26
+69740 4 548 26
+69744 4 541 26
+69748 4 552 26
+6974c 8 542 26
+69754 c 548 26
+69760 8 552 26
+69768 c 554 26
+69774 10 558 26
+69784 c 560 26
+69790 8 566 26
+69798 4 569 26
+6979c 4 560 26
+697a0 14 566 26
+697b4 4 161 33
+697b8 4 566 26
+697bc c 568 26
+697c8 4 161 33
+697cc 4 570 26
+697d0 4 161 33
+697d4 8 570 26
+697dc 8 161 33
+697e4 c 570 26
+697f0 8 571 26
+697f8 10 574 26
+69808 14 186 33
+6981c 8 176 33
+69824 4 580 26
+69828 4 176 33
+6982c 4 577 26
+69830 c 580 26
+6983c 14 580 26
+69850 4 580 26
+69854 8 582 26
+6985c 1c 584 26
+FUNC 69878 48 0 MinidumpWriter::~MinidumpWriter
+69878 c 156 26
+69884 4 159 26
+69888 4 156 26
+6988c c 159 26
+69898 8 160 26
+698a0 10 161 26
+698b0 4 156 26
+698b4 8 162 26
+698bc 4 156 26
+FUNC 698c0 ec 0 MinidumpWriter::WriteExceptionStream
+698c0 4 611 26
+698c4 4 212 33
+698c8 c 611 26
+698d4 4 161 33
+698d8 4 612 26
+698dc 4 611 26
+698e0 4 161 33
+698e4 4 212 33
+698e8 4 161 33
+698ec 4 611 26
+698f0 4 161 33
+698f4 4 611 26
+698f8 8 212 33
+69900 4 161 33
+69904 4 212 33
+69908 4 46 31
+6990c 4 47 31
+69910 4 46 31
+69914 10 47 31
+69924 4 613 26
+69928 10 615 26
+69938 8 617 26
+69940 8 176 33
+69948 c 618 26
+69954 8 620 26
+6995c c 621 26
+69968 4 622 26
+6996c 8 623 26
+69974 c 216 33
+69980 14 92 31
+69994 18 626 26
+FUNC 699ac 18 0 google_breakpad::TypedMDRVA<MDRawDirectory>::CopyIndex
+699ac 4 76 31
+699b0 14 76 31
+FUNC 699c4 28 0 google_breakpad::TypedMDRVA<MDRawContextARM64>::~TypedMDRVA
+699c4 4 214 33
+699c8 c 216 33
+699d4 14 92 31
+699e8 4 218 33
+FUNC 699ec 14 0 google_breakpad::TypedMDRVA<unsigned int>::CopyIndexAfterObject
+699ec 14 87 31
+FUNC 69a00 120 0 MinidumpWriter::WriteMemoryListStream
+69a00 10 586 26
+69a10 4 587 26
+69a14 4 586 26
+69a18 4 192 139
+69a1c 8 161 33
+69a24 4 586 26
+69a28 8 161 33
+69a30 8 192 139
+69a38 4 161 33
+69a3c 4 192 139
+69a40 4 212 33
+69a44 4 192 139
+69a48 4 588 26
+69a4c 4 67 31
+69a50 4 68 31
+69a54 4 67 31
+69a58 c 68 31
+69a64 4 589 26
+69a68 8 599 26
+69a70 8 176 33
+69a78 8 600 26
+69a80 4 192 139
+69a84 4 604 26
+69a88 c 192 139
+69a94 4 602 26
+69a98 4 604 26
+69a9c 8 591 26
+69aa4 4 46 31
+69aa8 4 47 31
+69aac 4 46 31
+69ab0 8 47 31
+69ab8 c 192 139
+69ac4 8 604 26
+69acc 10 606 26
+69adc 4 604 26
+69ae0 8 606 26
+69ae8 4 608 26
+69aec c 216 33
+69af8 14 92 31
+69b0c 14 609 26
+FUNC 69b20 2c8 0 MinidumpWriter::WriteMappings
+69b20 18 481 26
+69b38 8 481 26
+69b40 4 317 114
+69b44 4 482 26
+69b48 4 483 26
+69b4c 14 192 139
+69b60 4 318 114
+69b64 8 319 114
+69b6c 4 91 116
+69b70 8 320 114
+69b78 4 485 26
+69b7c c 485 26
+69b88 4 486 26
+69b8c 8 449 26
+69b94 8 449 26
+69b9c 8 452 26
+69ba4 4 453 26
+69ba8 c 452 26
+69bb4 8 463 26
+69bbc 10 468 26
+69bcc 4 470 26
+69bd0 4 469 26
+69bd4 4 470 26
+69bd8 8 468 26
+69be0 8 91 116
+69be8 4 488 26
+69bec 8 485 26
+69bf4 4 491 26
+69bf8 14 161 33
+69c0c 4 212 33
+69c10 4 492 26
+69c14 4 67 31
+69c18 4 68 31
+69c1c 4 67 31
+69c20 8 68 31
+69c28 c 68 31
+69c34 4 493 26
+69c38 8 502 26
+69c40 4 176 33
+69c44 4 508 26
+69c48 4 176 33
+69c4c 4 514 26
+69c50 8 503 26
+69c58 4 507 26
+69c5c 4 504 26
+69c60 4 508 26
+69c64 8 494 26
+69c6c 4 46 31
+69c70 4 47 31
+69c74 4 46 31
+69c78 c 47 31
+69c84 8 509 26
+69c8c c 449 26
+69c98 10 508 26
+69ca8 8 449 26
+69cb0 8 452 26
+69cb8 4 453 26
+69cbc 10 452 26
+69ccc 8 523 26
+69cd4 c 519 26
+69ce0 20 523 26
+69d00 4 523 26
+69d04 1c 525 26
+69d20 8 91 116
+69d28 4 528 26
+69d2c c 216 33
+69d38 20 92 31
+69d58 8 463 26
+69d60 10 468 26
+69d70 4 470 26
+69d74 4 469 26
+69d78 4 470 26
+69d7c 8 468 26
+69d84 8 91 116
+69d8c 20 514 26
+69dac 20 516 26
+69dcc 1c 529 26
+FUNC 69de8 28 0 google_breakpad::TypedMDRVA<MDRawLinkMap>::~TypedMDRVA
+69de8 4 214 33
+69dec c 216 33
+69df8 14 92 31
+69e0c 4 218 33
+FUNC 69e10 b8 0 std::priv::_Impl_vector<MDMemoryDescriptor, google_breakpad::PageStdAllocator<MDMemoryDescriptor> >::reserve
+69e10 14 62 138
+69e24 c 199 139
+69e30 c 63 138
+69e3c c 64 138
+69e48 c 41 138
+69e54 8 192 139
+69e5c 8 172 54
+69e64 8 192 139
+69e6c 4 70 138
+69e70 4 172 54
+69e74 4 84 137
+69e78 8 86 137
+69e80 4 139 103
+69e84 8 139 103
+69e8c 4 88 137
+69e90 4 89 137
+69e94 8 86 137
+69e9c 4 172 54
+69ea0 8 76 138
+69ea8 4 666 139
+69eac 4 667 139
+69eb0 4 668 139
+69eb4 14 78 138
+FUNC 69ec8 17c 0 std::priv::_Impl_vector<MDMemoryDescriptor, google_breakpad::PageStdAllocator<MDMemoryDescriptor> >::_M_insert_overflow_aux
+69ec8 14 81 138
+69edc 8 81 138
+69ee4 10 192 139
+69ef4 10 173 139
+69f04 14 41 138
+69f18 4 175 139
+69f1c 10 176 139
+69f2c 4 177 139
+69f30 18 172 54
+69f48 4 84 137
+69f4c 8 91 138
+69f54 10 86 137
+69f64 8 86 137
+69f6c 4 139 103
+69f70 8 139 103
+69f78 4 88 137
+69f7c 4 89 137
+69f80 10 86 137
+69f90 c 93 138
+69f9c 4 119 103
+69fa0 8 119 103
+69fa8 8 95 138
+69fb0 8 314 137
+69fb8 4 249 137
+69fbc 8 249 137
+69fc4 4 139 103
+69fc8 8 139 103
+69fd0 c 249 137
+69fdc 4 98 138
+69fe0 c 86 137
+69fec 4 84 137
+69ff0 4 86 137
+69ff4 8 86 137
+69ffc 4 139 103
+6a000 8 139 103
+6a008 4 88 137
+6a00c 4 89 137
+6a010 14 86 137
+6a024 4 104 138
+6a028 4 666 139
+6a02c 4 667 139
+6a030 4 668 139
+6a034 10 105 138
+FUNC 6a044 54 0 std::priv::_Impl_vector<MDMemoryDescriptor, google_breakpad::PageStdAllocator<MDMemoryDescriptor> >::push_back
+6a044 10 376 139
+6a054 10 380 139
+6a064 4 119 103
+6a068 8 119 103
+6a070 10 382 139
+6a080 10 162 139
+6a090 8 388 139
+FUNC 6a098 124 0 MinidumpWriter::FillThreadStack
+6a098 14 256 26
+6a0ac 4 256 26
+6a0b0 4 258 26
+6a0b4 c 256 26
+6a0c0 10 261 26
+6a0d0 4 256 26
+6a0d4 c 261 26
+6a0e0 4 262 26
+6a0e4 10 161 33
+6a0f4 4 263 26
+6a0f8 c 263 26
+6a104 4 265 26
+6a108 18 267 26
+6a120 4 100 22
+6a124 c 772 26
+6a130 4 269 26
+6a134 4 772 26
+6a138 1c 271 26
+6a154 14 186 33
+6a168 4 274 26
+6a16c 4 173 143
+6a170 4 274 26
+6a174 8 176 33
+6a17c 8 275 26
+6a184 c 173 143
+6a190 4 278 26
+6a194 4 282 26
+6a198 8 279 26
+6a1a0 4 280 26
+6a1a4 18 283 26
+FUNC 6a1bc 4c8 0 MinidumpWriter::WriteThreadListStream
+6a1bc 2c 286 26
+6a1e8 4 286 26
+6a1ec 4 287 26
+6a1f0 4 286 26
+6a1f4 4 161 33
+6a1f8 4 289 26
+6a1fc 4 161 33
+6a200 4 67 31
+6a204 8 192 139
+6a20c 4 161 33
+6a210 4 192 139
+6a214 4 68 31
+6a218 4 192 139
+6a21c 8 161 33
+6a224 4 290 26
+6a228 4 212 33
+6a22c 4 68 31
+6a230 4 68 31
+6a234 4 67 31
+6a238 c 68 31
+6a244 4 290 26
+6a248 c 176 33
+6a254 4 303 26
+6a258 4 293 26
+6a25c 4 294 26
+6a260 4 296 26
+6a264 4 304 26
+6a268 4 287 26
+6a26c 4 303 26
+6a270 8 304 26
+6a278 8 308 26
+6a280 10 310 26
+6a290 4 161 33
+6a294 4 313 26
+6a298 4 315 26
+6a29c 4 388 26
+6a2a0 4 396 26
+6a2a4 4 212 33
+6a2a8 10 313 26
+6a2b8 14 315 26
+6a2cc 14 316 26
+6a2e0 4 323 26
+6a2e4 4 316 26
+6a2e8 8 323 26
+6a2f0 8 322 26
+6a2f8 14 324 26
+6a30c 4 323 26
+6a310 20 388 26
+6a330 c 393 26
+6a33c 4 393 26
+6a340 4 394 26
+6a344 4 393 26
+6a348 18 396 26
+6a360 8 395 26
+6a368 c 216 33
+6a374 18 92 31
+6a38c 8 392 26
+6a394 4 161 33
+6a398 4 212 33
+6a39c 4 161 33
+6a3a0 4 212 33
+6a3a4 4 161 33
+6a3a8 4 212 33
+6a3ac 4 161 33
+6a3b0 4 212 33
+6a3b4 4 46 31
+6a3b8 4 47 31
+6a3bc 4 46 31
+6a3c0 c 47 31
+6a3cc 4 400 26
+6a3d0 c 401 26
+6a3dc 10 402 26
+6a3ec c 403 26
+6a3f8 8 404 26
+6a400 c 405 26
+6a40c 8 407 26
+6a414 8 176 33
+6a41c 4 407 26
+6a420 8 406 26
+6a428 10 407 26
+6a438 8 408 26
+6a440 14 409 26
+6a454 10 413 26
+6a464 8 123 22
+6a46c c 415 26
+6a478 18 418 26
+6a490 c 326 26
+6a49c 1c 327 26
+6a4b8 8 332 26
+6a4c0 4 338 26
+6a4c4 4 338 26
+6a4c8 10 192 139
+6a4d8 c 338 26
+6a4e4 4 339 26
+6a4e8 c 340 26
+6a4f4 8 341 26
+6a4fc 8 340 26
+6a504 4 347 26
+6a508 c 349 26
+6a514 4 347 26
+6a518 4 350 26
+6a51c 4 161 33
+6a520 4 350 26
+6a524 10 161 33
+6a534 4 352 26
+6a538 4 161 33
+6a53c 4 359 26
+6a540 4 352 26
+6a544 c 359 26
+6a550 4 100 22
+6a554 10 772 26
+6a564 24 367 26
+6a588 18 186 33
+6a5a0 c 176 33
+6a5ac 4 173 143
+6a5b0 4 369 26
+6a5b4 c 173 143
+6a5c0 8 338 26
+6a5c8 4 161 33
+6a5cc 4 212 33
+6a5d0 4 161 33
+6a5d4 4 212 33
+6a5d8 4 161 33
+6a5dc 4 212 33
+6a5e0 4 161 33
+6a5e4 4 212 33
+6a5e8 4 46 31
+6a5ec 4 47 31
+6a5f0 4 46 31
+6a5f4 c 47 31
+6a600 4 374 26
+6a604 10 376 26
+6a614 10 378 26
+6a624 8 382 26
+6a62c c 383 26
+6a638 8 176 33
+6a640 8 384 26
+6a648 c 385 26
+6a654 30 422 26
+FUNC 6a684 f4 0 MinidumpWriter::WriteAppMemory
+6a684 18 425 26
+6a69c 4 425 26
+6a6a0 4 161 33
+6a6a4 8 434 26
+6a6ac 4 440 26
+6a6b0 8 173 143
+6a6b8 c 426 26
+6a6c4 4 100 22
+6a6c8 10 430 26
+6a6d8 4 432 26
+6a6dc 8 432 26
+6a6e4 4 432 26
+6a6e8 10 432 26
+6a6f8 8 161 33
+6a700 4 435 26
+6a704 4 161 33
+6a708 4 435 26
+6a70c 4 161 33
+6a710 8 435 26
+6a718 4 435 26
+6a71c 14 186 33
+6a730 4 440 26
+6a734 4 176 33
+6a738 4 440 26
+6a73c 8 176 33
+6a744 4 173 143
+6a748 4 441 26
+6a74c 8 173 143
+6a754 8 91 116
+6a75c 4 445 26
+6a760 18 446 26
+FUNC 6a778 130 0 std::priv::_Impl_vector<char, google_breakpad::PageStdAllocator<char> >::_M_fill_insert_aux
+6a778 14 140 138
+6a78c c 140 138
+6a798 4 416 139
+6a79c 8 140 138
+6a7a4 8 416 139
+6a7ac 8 416 139
+6a7b4 4 150 138
+6a7b8 8 152 138
+6a7c0 4 153 138
+6a7c4 8 107 137
+6a7cc 14 106 137
+6a7e0 4 154 138
+6a7e4 4 255 100
+6a7e8 4 256 100
+6a7ec 8 154 138
+6a7f4 4 256 100
+6a7f8 c 256 100
+6a804 10 471 100
+6a814 4 158 138
+6a818 c 314 137
+6a824 c 249 137
+6a830 c 146 103
+6a83c 4 158 138
+6a840 8 107 137
+6a848 c 106 137
+6a854 4 160 138
+6a858 4 471 100
+6a85c 8 160 138
+6a864 8 471 100
+6a86c 10 163 138
+6a87c 4 471 100
+6a880 c 146 138
+6a88c 8 147 138
+6a894 14 163 138
+FUNC 6a8a8 130 0 std::priv::_Impl_vector<char, google_breakpad::PageStdAllocator<char> >::resize
+6a8a8 18 636 139
+6a8c0 8 636 139
+6a8c8 c 192 139
+6a8d4 8 640 139
+6a8dc 4 641 139
+6a8e0 8 630 139
+6a8e8 8 615 139
+6a8f0 8 171 138
+6a8f8 14 172 138
+6a90c 18 173 138
+6a924 c 173 139
+6a930 10 41 138
+6a940 8 172 54
+6a948 4 175 139
+6a94c 8 177 139
+6a954 c 172 54
+6a960 4 112 138
+6a964 4 172 54
+6a968 8 224 100
+6a970 8 224 100
+6a978 4 224 100
+6a97c c 471 100
+6a988 4 503 100
+6a98c 4 471 100
+6a990 4 223 100
+6a994 4 503 100
+6a998 8 224 100
+6a9a0 c 224 100
+6a9ac 4 224 100
+6a9b0 4 118 138
+6a9b4 4 666 139
+6a9b8 4 667 139
+6a9bc 4 668 139
+6a9c0 18 644 139
+FUNC 6a9d8 d08 0 MinidumpWriter::Dump
+6a9d8 4 164 26
+6a9dc 4 47 31
+6a9e0 14 164 26
+6a9f4 4 169 26
+6a9f8 8 164 26
+6aa00 8 161 33
+6aa08 4 169 26
+6aa0c 8 164 26
+6aa14 8 161 33
+6aa1c 4 164 26
+6aa20 4 161 33
+6aa24 4 46 31
+6aa28 4 161 33
+6aa2c 8 164 26
+6aa34 4 161 33
+6aa38 1c 212 33
+6aa54 4 161 33
+6aa58 4 47 31
+6aa5c 4 161 33
+6aa60 10 212 33
+6aa70 4 46 31
+6aa74 8 47 31
+6aa7c 4 171 26
+6aa80 8 172 26
+6aa88 8 60 31
+6aa90 8 59 31
+6aa98 8 60 31
+6aaa0 4 173 26
+6aaa4 c 175 26
+6aab0 4 186 26
+6aab4 4 175 26
+6aab8 c 177 26
+6aac4 8 178 26
+6aacc 8 179 26
+6aad4 4 179 26
+6aad8 8 180 26
+6aae0 4 181 26
+6aae4 4 186 26
+6aae8 4 181 26
+6aaec 10 186 26
+6aafc 10 188 26
+6ab0c 14 190 26
+6ab20 10 192 26
+6ab30 10 194 26
+6ab40 14 197 26
+6ab54 10 199 26
+6ab64 14 201 26
+6ab78 c 203 26
+6ab84 4 161 33
+6ab88 4 212 33
+6ab8c 4 203 26
+6ab90 4 161 33
+6ab94 4 47 31
+6ab98 4 161 33
+6ab9c 4 47 31
+6aba0 8 161 33
+6aba8 10 212 33
+6abb8 4 46 31
+6abbc c 47 31
+6abc8 4 630 26
+6abcc c 632 26
+6abd8 4 896 26
+6abdc 4 51 12
+6abe0 4 632 26
+6abe4 4 176 33
+6abe8 4 634 26
+6abec 4 176 33
+6abf0 4 896 26
+6abf4 4 634 26
+6abf8 4 896 26
+6abfc 4 176 33
+6ac00 4 896 26
+6ac04 4 635 26
+6ac08 8 896 26
+6ac10 4 946 26
+6ac14 8 933 26
+6ac1c 4 947 26
+6ac20 4 51 12
+6ac24 4 947 26
+6ac28 8 51 12
+6ac30 4 945 26
+6ac34 4 948 26
+6ac38 4 51 12
+6ac3c 4 949 26
+6ac40 14 51 12
+6ac54 10 959 26
+6ac64 4 960 26
+6ac68 c 961 26
+6ac74 8 962 26
+6ac7c 10 964 26
+6ac8c 4 965 26
+6ac90 c 966 26
+6ac9c 8 967 26
+6aca4 4 114 12
+6aca8 10 115 12
+6acb8 4 114 12
+6acbc 10 114 12
+6accc 4 122 12
+6acd0 4 121 12
+6acd4 8 122 12
+6acdc 14 121 12
+6acf0 4 973 26
+6acf4 10 983 26
+6ad04 4 984 26
+6ad08 4 64 54
+6ad0c 4 67 54
+6ad10 4 208 54
+6ad14 4 67 54
+6ad18 4 208 54
+6ad1c c 67 54
+6ad28 8 208 54
+6ad30 8 48 29
+6ad38 4 995 26
+6ad3c 4 49 16
+6ad40 8 995 26
+6ad48 8 49 16
+6ad50 8 1050 26
+6ad58 4 49 16
+6ad5c 4 1050 26
+6ad60 c 1061 26
+6ad6c 18 995 26
+6ad84 14 1000 26
+6ad98 8 1002 26
+6ada0 c 1005 26
+6adac c 1005 26
+6adb8 10 1006 26
+6adc8 4 1007 26
+6adcc 8 1008 26
+6add4 4 1007 26
+6add8 4 1008 26
+6addc 4 1007 26
+6ade0 8 1008 26
+6ade8 8 1010 26
+6adf0 8 1012 26
+6adf8 18 1015 26
+6ae10 8 1016 26
+6ae18 c 1018 26
+6ae24 10 996 26
+6ae34 14 1050 26
+6ae48 4 1051 26
+6ae4c 10 1054 26
+6ae5c 8 1055 26
+6ae64 8 1057 26
+6ae6c 14 1061 26
+6ae80 4 117 29
+6ae84 4 118 29
+6ae88 4 1066 26
+6ae8c 10 1069 26
+6ae9c 4 1070 26
+6aea0 c 1071 26
+6aeac 4 1072 26
+6aeb0 4 1073 26
+6aeb4 8 1072 26
+6aebc 8 1092 26
+6aec4 4 144 54
+6aec8 4 144 54
+6aecc 8 146 54
+6aed4 4 145 54
+6aed8 18 3074 97
+6aef0 4 3074 97
+6aef4 8 3074 97
+6aefc 8 1076 26
+6af04 8 1164 26
+6af0c 10 1170 26
+6af1c 8 1174 26
+6af24 4 1183 26
+6af28 4 1174 26
+6af2c 14 1182 26
+6af40 4 1195 26
+6af44 4 1182 26
+6af48 4 1195 26
+6af4c 8 1182 26
+6af54 4 1175 26
+6af58 4 1195 26
+6af5c 8 1184 26
+6af64 c 1187 26
+6af70 4 1188 26
+6af74 4 1191 26
+6af78 4 1191 26
+6af7c c 1191 26
+6af88 20 1205 26
+6afa8 c 1207 26
+6afb4 4 1194 26
+6afb8 10 1195 26
+6afc8 4 1196 26
+6afcc 4 1195 26
+6afd0 4 1196 26
+6afd4 10 1200 26
+6afe4 4 1199 26
+6afe8 4 1200 26
+6afec 8 1201 26
+6aff4 8 1184 26
+6affc c 216 33
+6b008 14 92 31
+6b01c 8 205 26
+6b024 10 207 26
+6b034 c 209 26
+6b040 8 210 26
+6b048 4 209 26
+6b04c 10 210 26
+6b05c 4 780 26
+6b060 4 781 26
+6b064 4 782 26
+6b068 14 212 26
+6b07c 8 214 26
+6b084 4 215 26
+6b088 4 214 26
+6b08c 8 215 26
+6b094 4 214 26
+6b098 c 215 26
+6b0a4 4 215 26
+6b0a8 4 780 26
+6b0ac 4 781 26
+6b0b0 4 782 26
+6b0b4 10 217 26
+6b0c4 c 219 26
+6b0d0 8 220 26
+6b0d8 4 219 26
+6b0dc 10 220 26
+6b0ec 4 780 26
+6b0f0 4 781 26
+6b0f4 4 782 26
+6b0f8 14 222 26
+6b10c 8 224 26
+6b114 4 225 26
+6b118 4 224 26
+6b11c 8 225 26
+6b124 4 224 26
+6b128 c 225 26
+6b134 4 225 26
+6b138 4 780 26
+6b13c 4 781 26
+6b140 4 782 26
+6b144 14 227 26
+6b158 8 229 26
+6b160 4 230 26
+6b164 4 229 26
+6b168 8 230 26
+6b170 4 229 26
+6b174 c 230 26
+6b180 4 230 26
+6b184 4 780 26
+6b188 4 781 26
+6b18c 4 782 26
+6b190 14 232 26
+6b1a4 8 234 26
+6b1ac 4 235 26
+6b1b0 4 234 26
+6b1b4 8 235 26
+6b1bc 4 234 26
+6b1c0 c 235 26
+6b1cc 4 235 26
+6b1d0 4 780 26
+6b1d4 4 781 26
+6b1d8 4 782 26
+6b1dc 14 237 26
+6b1f0 8 239 26
+6b1f8 4 240 26
+6b1fc 4 239 26
+6b200 8 240 26
+6b208 4 239 26
+6b20c c 240 26
+6b218 4 240 26
+6b21c 4 780 26
+6b220 4 781 26
+6b224 4 782 26
+6b228 10 242 26
+6b238 14 244 26
+6b24c 4 644 26
+6b250 4 646 26
+6b254 c 647 26
+6b260 4 646 26
+6b264 c 647 26
+6b270 4 651 26
+6b274 4 654 26
+6b278 4 657 26
+6b27c 4 655 26
+6b280 4 657 26
+6b284 8 657 26
+6b28c 4 657 26
+6b290 10 657 26
+6b2a0 c 660 26
+6b2ac 8 660 26
+6b2b4 c 661 26
+6b2c0 8 663 26
+6b2c8 4 664 26
+6b2cc c 655 26
+6b2d8 4 667 26
+6b2dc c 670 26
+6b2e8 4 675 26
+6b2ec 8 670 26
+6b2f4 18 682 26
+6b30c 8 682 26
+6b314 10 682 26
+6b324 10 683 26
+6b334 c 684 26
+6b340 4 686 26
+6b344 4 703 26
+6b348 c 703 26
+6b354 4 703 26
+6b358 10 703 26
+6b368 4 704 26
+6b36c 4 704 26
+6b370 4 706 26
+6b374 8 706 26
+6b37c 4 708 26
+6b380 4 706 26
+6b384 4 706 26
+6b388 4 706 26
+6b38c 8 706 26
+6b394 8 707 26
+6b39c 10 711 26
+6b3ac 4 712 26
+6b3b0 4 161 33
+6b3b4 4 60 31
+6b3b8 4 161 33
+6b3bc 4 60 31
+6b3c0 4 161 33
+6b3c4 4 59 31
+6b3c8 4 161 33
+6b3cc 4 59 31
+6b3d0 4 60 31
+6b3d4 4 161 33
+6b3d8 c 212 33
+6b3e4 8 60 31
+6b3ec 4 716 26
+6b3f0 4 176 33
+6b3f4 4 722 26
+6b3f8 4 735 26
+6b3fc 4 176 33
+6b400 8 722 26
+6b408 8 732 26
+6b410 8 722 26
+6b418 4 724 26
+6b41c 8 724 26
+6b424 4 724 26
+6b428 10 724 26
+6b438 4 725 26
+6b43c 8 726 26
+6b444 4 725 26
+6b448 8 726 26
+6b450 8 727 26
+6b458 4 729 26
+6b45c 4 729 26
+6b460 4 729 26
+6b464 10 729 26
+6b474 1c 732 26
+6b490 4 735 26
+6b494 4 76 31
+6b498 8 76 31
+6b4a0 8 735 26
+6b4a8 4 76 31
+6b4ac 4 736 26
+6b4b0 4 76 31
+6b4b4 4 736 26
+6b4b8 8 737 26
+6b4c0 18 76 31
+6b4d8 c 739 26
+6b4e4 c 717 26
+6b4f0 8 161 33
+6b4f8 4 744 26
+6b4fc 8 161 33
+6b504 8 212 33
+6b50c 4 744 26
+6b510 4 67 31
+6b514 4 68 31
+6b518 4 67 31
+6b51c 4 68 31
+6b520 10 212 33
+6b530 c 68 31
+6b53c 4 744 26
+6b540 c 746 26
+6b54c 4 67 139
+6b550 4 746 26
+6b554 4 752 26
+6b558 4 747 26
+6b55c 4 176 33
+6b560 8 747 26
+6b568 4 176 33
+6b56c 4 748 26
+6b570 8 750 26
+6b578 8 753 26
+6b580 4 754 26
+6b584 4 176 33
+6b588 4 754 26
+6b58c 4 63 138
+6b590 4 100 22
+6b594 4 751 26
+6b598 4 100 22
+6b59c 4 755 26
+6b5a0 8 67 139
+6b5a8 4 163 54
+6b5ac 4 481 101
+6b5b0 4 63 138
+6b5b4 8 172 54
+6b5bc 4 666 139
+6b5c0 4 667 139
+6b5c4 4 76 138
+6b5c8 4 668 139
+6b5cc c 222 143
+6b5d8 4 760 26
+6b5dc 4 222 143
+6b5e0 4 762 26
+6b5e4 8 762 26
+6b5ec 4 762 26
+6b5f0 10 762 26
+6b600 18 87 31
+6b618 c 216 33
+6b624 14 92 31
+6b638 8 245 26
+6b640 4 780 26
+6b644 4 781 26
+6b648 4 782 26
+6b64c 10 247 26
+6b65c 10 252 26
+6b66c c 216 33
+6b678 14 92 31
+6b68c c 216 33
+6b698 14 92 31
+6b6ac 34 254 26
+FUNC 6b6e0 148 0 WriteMinidumpImpl
+6b6e0 c 1250 26
+6b6ec 4 1251 26
+6b6f0 18 1250 26
+6b708 8 1251 26
+6b710 8 1250 26
+6b718 c 1250 26
+6b724 4 1251 26
+6b728 4 1253 26
+6b72c 8 1254 26
+6b734 4 1255 26
+6b738 8 1254 26
+6b740 8 123 22
+6b748 8 127 22
+6b750 8 130 22
+6b758 4 138 26
+6b75c 8 138 26
+6b764 4 138 26
+6b768 4 138 26
+6b76c 4 138 26
+6b770 4 138 26
+6b774 4 138 26
+6b778 4 138 26
+6b77c 8 138 26
+6b784 10 138 26
+6b794 4 67 139
+6b798 8 138 26
+6b7a0 4 100 22
+6b7a4 4 153 143
+6b7a8 4 67 139
+6b7ac 4 100 22
+6b7b0 4 163 54
+6b7b4 4 153 143
+6b7b8 4 481 101
+6b7bc 4 153 143
+6b7c0 4 138 26
+6b7c4 4 1266 26
+6b7c8 4 138 26
+6b7cc 4 768 26
+6b7d0 c 1266 26
+6b7dc c 1268 26
+6b7e8 8 1263 26
+6b7f0 18 42 24
+6b808 20 1269 26
+FUNC 6b828 74 0 google_breakpad::WriteMinidump
+6b828 14 1276 26
+6b83c 8 211 116
+6b844 4 1276 26
+6b848 14 1279 26
+6b85c 4 1276 26
+6b860 4 211 116
+6b864 4 212 116
+6b868 4 211 116
+6b86c 4 212 116
+6b870 8 1279 26
+6b878 10 205 116
+6b888 14 1280 26
+FUNC 6b89c 7c 0 google_breakpad::WriteMinidump
+6b89c 14 1283 26
+6b8b0 8 211 116
+6b8b8 8 1283 26
+6b8c0 18 1286 26
+6b8d8 4 1283 26
+6b8dc 4 211 116
+6b8e0 4 212 116
+6b8e4 4 211 116
+6b8e8 4 212 116
+6b8ec 8 1286 26
+6b8f4 10 205 116
+6b904 14 1287 26
+FUNC 6b918 2c 0 google_breakpad::WriteMinidump
+6b918 14 1305 26
+6b92c 18 1308 26
+FUNC 6b944 34 0 google_breakpad::WriteMinidump
+6b944 18 1324 26
+6b95c 1c 1327 26
+FUNC 6b978 3c 0 google_breakpad::WriteMinidump
+6b978 1c 1334 26
+6b994 20 1337 26
+FUNC 6b9b4 108 0 google_breakpad::WriteMinidump
+6b9b4 c 1290 26
+6b9c0 4 1291 26
+6b9c4 8 1290 26
+6b9cc 4 1291 26
+6b9d0 4 1290 26
+6b9d4 4 211 116
+6b9d8 4 1290 26
+6b9dc 4 1291 26
+6b9e0 4 138 26
+6b9e4 4 130 22
+6b9e8 4 211 116
+6b9ec 4 127 22
+6b9f0 4 211 116
+6b9f4 4 212 116
+6b9f8 4 138 26
+6b9fc 4 130 22
+6ba00 4 127 22
+6ba04 4 138 26
+6ba08 4 211 116
+6ba0c 4 212 116
+6ba10 4 138 26
+6ba14 4 138 26
+6ba18 14 138 26
+6ba2c 4 100 22
+6ba30 4 153 143
+6ba34 4 67 139
+6ba38 4 100 22
+6ba3c 4 163 54
+6ba40 4 153 143
+6ba44 4 67 139
+6ba48 4 481 101
+6ba4c 4 153 143
+6ba50 4 138 26
+6ba54 4 205 116
+6ba58 4 138 26
+6ba5c c 205 116
+6ba68 10 1297 26
+6ba78 c 1299 26
+6ba84 8 1296 26
+6ba8c 18 42 24
+6baa4 18 1300 26
+FUNC 6babc 1c 0 google_breakpad::MinidumpFileWriter::MinidumpFileWriter
+6babc 18 55 32
+6bad4 4 56 32
+FUNC 6bad8 58 0 google_breakpad::MinidumpFileWriter::Open
+6bad8 4 63 32
+6badc 8 3281 97
+6bae4 8 63 32
+6baec 4 63 32
+6baf0 18 3281 97
+6bb08 4 3281 97
+6bb0c 4 3281 97
+6bb10 8 3281 97
+6bb18 4 71 32
+6bb1c 4 66 32
+6bb20 10 72 32
+FUNC 6bb30 c 0 google_breakpad::MinidumpFileWriter::SetFile
+6bb30 4 76 32
+6bb34 4 77 32
+6bb38 4 78 32
+FUNC 6bb3c 7c 0 google_breakpad::MinidumpFileWriter::Close
+6bb3c 4 80 32
+6bb40 4 81 32
+6bb44 8 80 32
+6bb4c 4 80 32
+6bb50 c 83 32
+6bb5c c 84 32
+6bb68 4 85 32
+6bb6c 4 84 32
+6bb70 18 2979 97
+6bb88 4 2979 97
+6bb8c 4 2979 97
+6bb90 8 2979 97
+6bb98 4 88 32
+6bb9c 4 92 32
+6bba0 4 88 32
+6bba4 4 92 32
+6bba8 10 96 32
+FUNC 6bbb8 10 0 google_breakpad::MinidumpFileWriter::~MinidumpFileWriter
+6bbb8 8 59 32
+6bbc0 4 60 32
+6bbc4 4 61 32
+FUNC 6bbc8 80 0 google_breakpad::MinidumpFileWriter::Allocate
+6bbc8 4 220 32
+6bbcc 4 223 32
+6bbd0 c 220 32
+6bbdc 4 220 32
+6bbe0 4 223 32
+6bbe4 14 225 32
+6bbf8 8 227 32
+6bc00 10 233 32
+6bc10 c 234 32
+6bc1c 4 235 32
+6bc20 4 234 32
+6bc24 4 237 32
+6bc28 4 240 32
+6bc2c 8 241 32
+6bc34 14 244 32
+FUNC 6bc48 ac 0 google_breakpad::MinidumpFileWriter::Copy
+6bc48 4 246 32
+6bc4c 4 252 32
+6bc50 8 246 32
+6bc58 1c 252 32
+6bc74 20 3071 97
+6bc94 4 3071 97
+6bc98 8 3071 97
+6bca0 8 267 32
+6bca8 8 257 32
+6bcb0 20 3162 97
+6bcd0 4 3162 97
+6bcd4 4 3162 97
+6bcd8 8 3162 97
+6bce0 8 258 32
+6bce8 c 268 32
+FUNC 6bcf4 34 0 google_breakpad::UntypedMDRVA::Allocate
+6bcf4 c 270 32
+6bd00 4 270 32
+6bd04 4 272 32
+6bd08 8 273 32
+6bd10 4 274 32
+6bd14 4 273 32
+6bd18 10 275 32
+FUNC 6bd28 8 0 google_breakpad::UntypedMDRVA::Copy
+6bd28 8 281 32
+FUNC 6bd30 14 0 google_breakpad::TypedMDRVA<MDString>::CopyIndexAfterObject
+6bd30 14 87 31
+FUNC 6bd44 9c 0 google_breakpad::MinidumpFileWriter::CopyStringToMDString
+6bd44 4 133 32
+6bd48 4 134 32
+6bd4c 14 133 32
+6bd60 c 133 32
+6bd6c 4 136 32
+6bd70 4 140 32
+6bd74 4 149 32
+6bd78 8 139 32
+6bd80 10 140 32
+6bd90 4 141 32
+6bd94 4 145 32
+6bd98 4 146 32
+6bd9c 4 149 32
+6bda0 8 151 32
+6bda8 4 149 32
+6bdac 4 151 32
+6bdb0 4 149 32
+6bdb4 4 151 32
+6bdb8 4 152 32
+6bdbc c 151 32
+6bdc8 18 155 32
+FUNC 6bde0 12c 0 google_breakpad::MinidumpFileWriter::WriteString
+6bde0 4 199 32
+6bde4 8 167 32
+6bdec c 199 32
+6bdf8 4 167 32
+6bdfc c 199 32
+6be08 4 199 32
+6be0c 4 167 32
+6be10 c 168 32
+6be1c c 161 33
+6be28 4 67 31
+6be2c 4 173 32
+6be30 4 67 31
+6be34 4 68 31
+6be38 8 161 33
+6be40 4 68 31
+6be44 4 212 33
+6be48 4 68 31
+6be4c 4 212 33
+6be50 8 68 31
+6be58 10 173 32
+6be68 c 168 32
+6be74 4 177 32
+6be78 4 179 32
+6be7c 4 177 32
+6be80 14 179 32
+6be94 4 182 32
+6be98 8 174 32
+6bea0 4 183 32
+6bea4 c 184 32
+6beb0 4 183 32
+6beb4 8 184 32
+6bebc 4 186 32
+6bec0 c 176 33
+6becc 4 187 32
+6bed0 4 184 32
+6bed4 c 216 33
+6bee0 14 92 31
+6bef4 18 201 32
+FUNC 6bf0c 3c 0 google_breakpad::MemoryRange::Subrange
+6bf0c 4 124 55
+6bf10 8 83 55
+6bf18 4 83 55
+6bf1c 10 83 55
+6bf2c 4 126 55
+6bf30 c 72 55
+6bf3c 8 50 55
+6bf44 4 127 55
+FUNC 6bf48 c 0 google_breakpad::ElfCoreDump::Note::GetHeader
+6bf48 c 99 55
+FUNC 6bf54 1c 0 google_breakpad::ElfCoreDump::Note::IsValid
+6bf54 8 46 38
+6bf5c 8 47 38
+6bf64 c 48 38
+FUNC 6bf70 24 0 google_breakpad::ElfCoreDump::Note::GetType
+6bf70 8 54 38
+6bf78 4 55 38
+6bf7c 4 57 38
+6bf80 4 57 38
+6bf84 4 57 38
+6bf88 c 58 38
+FUNC 6bf94 40 0 google_breakpad::ElfCoreDump::Note::GetName
+6bf94 c 60 38
+6bfa0 4 60 38
+6bfa4 8 61 38
+6bfac 4 62 38
+6bfb0 14 63 38
+6bfc4 4 65 38
+6bfc8 c 66 38
+FUNC 6bfd4 48 0 google_breakpad::ElfCoreDump::Note::GetDescription
+6bfd4 c 68 38
+6bfe0 4 68 38
+6bfe4 8 69 38
+6bfec 4 70 38
+6bff0 4 72 38
+6bff4 8 72 38
+6bffc 4 92 38
+6c000 8 72 38
+6c008 4 72 38
+6c00c 4 74 38
+6c010 c 75 38
+FUNC 6c01c 58 0 google_breakpad::ElfCoreDump::Note::GetNextNote
+6c01c c 77 38
+6c028 4 77 38
+6c02c 4 79 38
+6c030 4 80 38
+6c034 4 81 38
+6c038 4 82 38
+6c03c 4 84 38
+6c040 10 92 38
+6c050 4 84 38
+6c054 4 92 38
+6c058 c 84 38
+6c064 4 50 55
+6c068 c 87 38
+FUNC 6c074 c 0 google_breakpad::ElfCoreDump::ElfCoreDump
+6c074 8 50 55
+6c07c 4 98 38
+FUNC 6c080 c 0 google_breakpad::ElfCoreDump::SetContent
+6c080 8 105 38
+6c088 4 106 38
+FUNC 6c08c c 0 google_breakpad::ElfCoreDump::GetHeader
+6c08c c 99 55
+FUNC 6c098 58 0 google_breakpad::ElfCoreDump::IsValid
+6c098 8 108 38
+6c0a0 4 109 38
+6c0a4 4 116 38
+6c0a8 4 116 38
+6c0ac 18 114 38
+6c0c4 4 116 38
+6c0c8 4 114 38
+6c0cc 18 116 38
+6c0e4 c 118 38
+FUNC 6c0f0 48 0 google_breakpad::ElfCoreDump::GetProgramHeader
+6c0f0 c 124 38
+6c0fc 8 124 38
+6c104 4 125 38
+6c108 4 126 38
+6c10c 4 128 38
+6c110 4 108 55
+6c114 4 109 55
+6c118 4 108 55
+6c11c 8 131 38
+6c124 8 109 55
+6c12c c 131 38
+FUNC 6c138 24 0 google_breakpad::ElfCoreDump::GetProgramHeaderCount
+6c138 8 144 38
+6c140 4 145 38
+6c144 4 146 38
+6c148 4 146 38
+6c14c 4 146 38
+6c150 c 147 38
+FUNC 6c15c 60 0 google_breakpad::ElfCoreDump::GetFirstProgramHeaderOfType
+6c15c 10 134 38
+6c16c 4 135 38
+6c170 8 134 38
+6c178 8 135 38
+6c180 8 135 38
+6c188 c 136 38
+6c194 c 137 38
+6c1a0 8 135 38
+6c1a8 4 141 38
+6c1ac 10 142 38
+FUNC 6c1bc c4 0 google_breakpad::ElfCoreDump::CopyData
+6c1bc 18 149 38
+6c1d4 10 149 38
+6c1e4 c 150 38
+6c1f0 8 150 38
+6c1f8 c 151 38
+6c204 c 152 38
+6c210 4 155 38
+6c214 8 156 38
+6c21c 4 156 38
+6c220 4 155 38
+6c224 8 156 38
+6c22c 18 159 38
+6c244 4 160 38
+6c248 c 161 38
+6c254 8 162 38
+6c25c 8 150 38
+6c264 4 166 38
+6c268 18 167 38
+FUNC 6c280 44 0 google_breakpad::ElfCoreDump::GetFirstNote
+6c280 4 169 38
+6c284 4 171 38
+6c288 8 169 38
+6c290 4 169 38
+6c294 8 171 38
+6c29c 4 172 38
+6c2a0 14 174 38
+6c2b4 4 50 55
+6c2b8 c 177 38
+FUNC 6c2c4 28 0 google_breakpad::IsValidElf
+6c2c4 4 109 41
+6c2c8 8 111 41
+6c2d0 4 109 41
+6c2d4 4 111 41
+6c2d8 8 111 41
+6c2e0 c 112 41
+FUNC 6c2ec 1e8 0 google_breakpad::FindElfSection
+6c2ec 8 126 41
+6c2f4 4 131 41
+6c2f8 4 132 41
+6c2fc 20 126 41
+6c31c 10 126 41
+6c32c 10 134 41
+6c33c 8 135 41
+6c344 4 118 41
+6c348 4 138 41
+6c34c 4 139 41
+6c350 8 145 41
+6c358 8 62 41
+6c360 4 42 40
+6c364 4 62 41
+6c368 4 42 40
+6c36c 4 70 41
+6c370 4 62 41
+6c374 4 70 41
+6c378 4 57 40
+6c37c 4 42 40
+6c380 4 65 41
+6c384 4 42 40
+6c388 4 65 41
+6c38c 4 57 40
+6c390 4 58 40
+6c394 4 63 40
+6c398 4 58 40
+6c39c 4 63 40
+6c3a0 c 61 40
+6c3ac 4 63 40
+6c3b0 4 62 40
+6c3b4 8 63 40
+6c3bc 4 62 40
+6c3c0 c 63 40
+6c3cc 8 65 40
+6c3d4 4 63 40
+6c3d8 c 61 40
+6c3e4 8 149 41
+6c3ec 4 42 40
+6c3f0 4 62 41
+6c3f4 4 42 40
+6c3f8 4 70 41
+6c3fc 4 62 41
+6c400 4 42 40
+6c404 4 65 41
+6c408 4 57 40
+6c40c 4 42 40
+6c410 4 57 40
+6c414 4 65 41
+6c418 4 57 40
+6c41c 8 58 40
+6c424 c 63 40
+6c430 8 61 40
+6c438 4 63 40
+6c43c 4 62 40
+6c440 8 63 40
+6c448 4 62 40
+6c44c c 63 40
+6c458 8 65 40
+6c460 c 63 40
+6c46c 8 72 41
+6c474 c 73 41
+6c480 8 74 41
+6c488 10 152 41
+6c498 8 72 41
+6c4a0 c 73 41
+6c4ac 8 74 41
+6c4b4 20 156 41
+FUNC 6c4d4 104 0 google_breakpad::FindElfSegment
+6c4d4 c 162 41
+6c4e0 4 162 41
+6c4e4 4 167 41
+6c4e8 4 168 41
+6c4ec 8 162 41
+6c4f4 4 167 41
+6c4f8 4 168 41
+6c4fc 1c 170 41
+6c518 8 171 41
+6c520 4 118 41
+6c524 4 174 41
+6c528 4 175 41
+6c52c 8 181 41
+6c534 8 42 40
+6c53c 4 98 41
+6c540 8 42 40
+6c548 8 98 41
+6c550 10 99 41
+6c560 c 100 41
+6c56c 8 101 41
+6c574 8 185 41
+6c57c 4 42 40
+6c580 4 98 41
+6c584 c 98 41
+6c590 4 98 41
+6c594 8 98 41
+6c59c 10 99 41
+6c5ac c 100 41
+6c5b8 8 101 41
+6c5c0 c 188 41
+6c5cc c 192 41
+FUNC 6c5d8 ac 0 google_breakpad::FileID::FileID
+6c5d8 14 51 42
+6c5ec 4 51 42
+6c5f0 4 112 132
+6c5f4 4 481 101
+6c5f8 c 229 140
+6c604 8 608 130
+6c60c c 600 130
+6c618 8 610 130
+6c620 4 347 101
+6c624 8 158 101
+6c62c 8 134 119
+6c634 8 158 101
+6c63c 4 613 130
+6c640 4 611 130
+6c644 4 613 130
+6c648 4 612 130
+6c64c 8 613 130
+6c654 8 107 137
+6c65c c 106 137
+6c668 4 107 137
+6c66c 4 380 131
+6c670 4 101 103
+6c674 10 51 42
+FUNC 6c684 220 0 google_breakpad::FileID::ElfFileIdentifierFromMappedFile
+6c684 8 142 42
+6c68c 4 98 42
+6c690 8 142 42
+6c698 c 98 42
+6c6a4 4 142 42
+6c6a8 10 98 42
+6c6b8 4 142 42
+6c6bc 4 142 42
+6c6c0 8 98 42
+6c6c8 8 99 42
+6c6d0 8 98 42
+6c6d8 20 101 42
+6c6f8 4 99 42
+6c6fc 2c 124 42
+6c728 c 101 42
+6c734 8 124 42
+6c73c 4 126 42
+6c740 8 148 42
+6c748 c 106 42
+6c754 4 108 42
+6c758 8 64 42
+6c760 8 66 42
+6c768 c 67 42
+6c774 c 70 42
+6c780 14 71 42
+6c794 8 69 42
+6c79c 8 109 42
+6c7a4 4 111 42
+6c7a8 8 64 42
+6c7b0 8 66 42
+6c7b8 c 67 42
+6c7c4 c 70 42
+6c7d0 14 71 42
+6c7e4 8 69 42
+6c7ec 18 129 42
+6c804 c 130 42
+6c810 4 131 42
+6c814 c 132 42
+6c820 14 134 42
+6c834 8 133 42
+6c83c 8 135 42
+6c844 8 74 42
+6c84c 4 80 42
+6c850 8 83 42
+6c858 8 80 42
+6c860 4 83 42
+6c864 4 80 42
+6c868 4 83 42
+6c86c 4 80 42
+6c870 4 85 42
+6c874 c 84 42
+6c880 4 139 100
+6c884 8 84 42
+6c88c 4 87 42
+6c890 14 149 42
+FUNC 6c8a4 60 0 google_breakpad::FileID::ElfFileIdentifier
+6c8a4 14 151 42
+6c8b8 4 152 42
+6c8bc 4 151 42
+6c8c0 14 152 42
+6c8d4 4 154 42
+6c8d8 4 153 42
+6c8dc c 156 42
+6c8e8 8 156 42
+6c8f0 14 157 42
+FUNC 6c904 d4 0 google_breakpad::FileID::ConvertIdentifierToString
+6c904 4 161 42
+6c908 10 165 42
+6c918 4 167 42
+6c91c 4 169 42
+6c920 4 167 42
+6c924 4 169 42
+6c928 4 169 42
+6c92c 4 171 42
+6c930 4 174 42
+6c934 4 171 42
+6c938 4 181 42
+6c93c 4 173 42
+6c940 14 174 42
+6c954 4 177 42
+6c958 c 180 42
+6c964 8 177 42
+6c96c 4 178 42
+6c970 4 180 42
+6c974 8 181 42
+6c97c 8 183 42
+6c984 c 183 42
+6c990 4 184 42
+6c994 4 183 42
+6c998 4 184 42
+6c99c 4 183 42
+6c9a0 8 184 42
+6c9a8 4 184 42
+6c9ac 8 184 42
+6c9b4 8 184 42
+6c9bc 8 188 42
+6c9c4 8 188 42
+6c9cc 4 189 42
+6c9d0 4 188 42
+6c9d4 4 189 42
+FUNC 6c9d8 18 0 GUIDGenerator::InitOnceImpl
+6c9d8 4 78 44
+6c9dc 4 79 44
+6c9e0 4 78 44
+6c9e4 4 79 44
+6c9e8 4 80 44
+6c9ec 4 79 44
+FUNC 6c9f0 8c 0 CreateGUID
+6c9f0 4 87 44
+6c9f4 4 75 44
+6c9f8 8 87 44
+6ca00 4 87 44
+6ca04 10 75 44
+6ca14 8 65 44
+6ca1c 8 66 44
+6ca24 8 67 44
+6ca2c 4 68 44
+6ca30 4 58 44
+6ca34 4 57 44
+6ca38 4 58 44
+6ca3c 4 59 44
+6ca40 4 60 44
+6ca44 4 59 44
+6ca48 4 60 44
+6ca4c 4 69 44
+6ca50 4 58 44
+6ca54 4 57 44
+6ca58 4 58 44
+6ca5c 4 59 44
+6ca60 4 60 44
+6ca64 4 59 44
+6ca68 4 60 44
+6ca6c 10 89 44
+FUNC 6ca7c 98 0 GUIDToString
+6ca7c 10 92 44
+6ca8c 4 92 44
+6ca90 4 51 44
+6ca94 c 52 44
+6caa0 8 53 44
+6caa8 4 51 44
+6caac 4 52 44
+6cab0 4 53 44
+6cab4 4 52 44
+6cab8 4 51 44
+6cabc c 98 44
+6cac8 4 51 44
+6cacc 8 98 44
+6cad4 4 52 44
+6cad8 18 98 44
+6caf0 4 99 44
+6caf4 4 100 44
+6caf8 4 99 44
+6cafc 4 102 44
+6cb00 4 103 44
+6cb04 10 104 44
+FUNC 6cb14 1c 0 my_strlen
+6cb14 4 40 45
+6cb18 4 41 45
+6cb1c 8 42 45
+6cb24 8 42 45
+6cb2c 4 44 45
+FUNC 6cb30 38 0 my_strcmp
+6cb30 4 46 45
+6cb34 10 48 45
+6cb44 8 50 45
+6cb4c 4 52 45
+6cb50 8 53 45
+6cb58 8 49 45
+6cb60 4 51 45
+6cb64 4 57 45
+FUNC 6cb68 4c 0 my_strncmp
+6cb68 4 60 45
+6cb6c 8 60 45
+6cb74 10 61 45
+6cb84 4 63 45
+6cb88 4 65 45
+6cb8c 8 60 45
+6cb94 8 66 45
+6cb9c 8 62 45
+6cba4 8 64 45
+6cbac 4 66 45
+6cbb0 4 72 45
+FUNC 6cbb4 5c 0 my_strtoui
+6cbb4 4 79 45
+6cbb8 4 80 45
+6cbbc 4 79 45
+6cbc0 4 86 45
+6cbc4 8 83 45
+6cbcc 4 87 45
+6cbd0 4 86 45
+6cbd4 c 87 45
+6cbe0 4 89 45
+6cbe4 8 90 45
+6cbec 4 82 45
+6cbf0 8 92 45
+6cbf8 4 94 45
+6cbfc 8 95 45
+6cc04 4 80 45
+6cc08 8 96 45
+FUNC 6cc10 24 0 my_uint_len
+6cc10 4 101 45
+6cc14 8 100 45
+6cc1c 8 106 45
+6cc24 4 105 45
+6cc28 4 104 45
+6cc2c 8 110 45
+FUNC 6cc34 28 0 my_uitos
+6cc34 4 120 45
+6cc38 4 119 45
+6cc3c 14 120 45
+6cc50 8 119 45
+6cc58 4 121 45
+FUNC 6cc5c 28 0 my_strchr
+6cc5c 4 123 45
+6cc60 8 124 45
+6cc68 8 124 45
+6cc70 8 125 45
+6cc78 8 126 45
+6cc80 4 129 45
+FUNC 6cc84 28 0 my_strrchr
+6cc84 4 131 45
+6cc88 4 132 45
+6cc8c 8 133 45
+6cc94 8 134 45
+6cc9c 8 136 45
+6cca4 8 139 45
+FUNC 6ccac 28 0 my_memchr
+6ccac 4 143 45
+6ccb0 8 144 45
+6ccb8 c 145 45
+6ccc4 8 144 45
+6cccc 4 148 45
+6ccd0 4 149 45
+FUNC 6ccd4 6c 0 my_read_hex_ptr
+6ccd4 4 156 45
+6ccd8 14 159 45
+6ccec c 161 45
+6ccf8 10 162 45
+6cd08 8 164 45
+6cd10 10 165 45
+6cd20 c 167 45
+6cd2c 4 158 45
+6cd30 4 174 45
+6cd34 4 173 45
+6cd38 8 175 45
+FUNC 6cd40 38 0 my_read_decimal_ptr
+6cd40 4 178 45
+6cd44 4 182 45
+6cd48 14 181 45
+6cd5c 4 183 45
+6cd60 4 180 45
+6cd64 4 183 45
+6cd68 4 189 45
+6cd6c 4 188 45
+6cd70 8 190 45
+FUNC 6cd78 20 0 my_memset
+6cd78 4 192 45
+6cd7c c 194 45
+6cd88 c 195 45
+6cd94 4 196 45
+FUNC 6cd98 3c 0 my_strlcpy
+6cd98 4 198 45
+6cd9c 4 200 45
+6cda0 4 199 45
+6cda4 8 202 45
+6cdac c 203 45
+6cdb8 8 204 45
+6cdc0 8 207 45
+6cdc8 4 209 45
+6cdcc 4 210 45
+6cdd0 4 213 45
+FUNC 6cdd4 4c 0 my_strlcat
+6cdd4 c 215 45
+6cde0 4 216 45
+6cde4 8 218 45
+6cdec 8 218 45
+6cdf4 10 219 45
+6ce04 10 224 45
+6ce14 c 225 45
+FUNC 6ce20 48 0 my_isspace
+6ce20 4 229 45
+6ce24 4 227 45
+6ce28 c 229 45
+6ce34 4 230 45
+6ce38 10 231 45
+6ce48 4 230 45
+6ce4c 8 230 45
+6ce54 8 234 45
+6ce5c 4 232 45
+6ce60 8 235 45
+FUNC 6ce68 44 0 sys_close
+6ce68 10 2979 97
+6ce78 14 2979 97
+6ce8c 4 2979 97
+6ce90 4 2979 97
+6ce94 8 2979 97
+6ce9c 10 2979 97
+FUNC 6ceac c 0 google_breakpad::MemoryMappedFile::MemoryMappedFile
+6ceac 8 50 55
+6ceb4 4 47 47
+FUNC 6ceb8 50 0 google_breakpad::MemoryMappedFile::Unmap
+6ceb8 c 106 47
+6cec4 8 106 47
+6cecc 4 107 47
+6ced0 18 3074 97
+6cee8 4 3074 97
+6ceec 8 3074 97
+6cef4 4 70 55
+6cef8 4 72 55
+6cefc c 111 47
+FUNC 6cf08 4 0 google_breakpad::MemoryMappedFile::~MemoryMappedFile
+6cf08 4 54 47
+FUNC 6cf0c 13c 0 google_breakpad::MemoryMappedFile::Map
+6cf0c 20 57 47
+6cf2c 4 58 47
+6cf30 24 3281 97
+6cf54 4 3281 97
+6cf58 4 3281 97
+6cf5c 8 3281 97
+6cf64 4 61 47
+6cf68 4 3281 97
+6cf6c 4 61 47
+6cf70 20 3000 97
+6cf90 4 3000 97
+6cf94 c 3000 97
+6cfa0 8 67 47
+6cfa8 8 67 47
+6cfb0 8 72 47
+6cfb8 8 73 47
+6cfc0 8 81 47
+6cfc8 c 82 47
+6cfd4 28 3940 97
+6cffc 4 3940 97
+6d000 4 3940 97
+6d004 8 3940 97
+6d00c 8 97 47
+6d014 8 98 47
+6d01c 4 102 47
+6d020 8 72 55
+6d028 4 70 55
+6d02c 4 72 55
+6d030 4 103 47
+6d034 14 104 47
+FUNC 6d048 c 0 google_breakpad::MemoryMappedFile::MemoryMappedFile
+6d048 8 50 55
+6d050 4 50 47
+FUNC 6d054 7c 0 google_breakpad::SafeReadLink
+6d054 8 39 48
+6d05c 4 3948 97
+6d060 c 39 48
+6d06c 8 39 48
+6d074 20 3948 97
+6d094 4 3948 97
+6d098 4 3948 97
+6d09c 8 3948 97
+6d0a4 18 46 48
+6d0bc 4 47 48
+6d0c0 10 51 48
+FUNC 6d0d0 8c 0 google_breakpad::UTF8ToUTF16Char
+6d0d0 10 58 60
+6d0e0 4 78 60
+6d0e4 4 58 60
+6d0e8 4 58 60
+6d0ec 4 59 60
+6d0f0 4 60 60
+6d0f4 4 61 60
+6d0f8 4 62 60
+6d0fc 8 63 60
+6d104 20 69 60
+6d124 4 71 60
+6d128 c 72 60
+6d134 4 76 60
+6d138 4 75 60
+6d13c 8 78 60
+6d144 4 82 60
+6d148 14 83 60
+FUNC 6d200 4 0 google_breakpad::::CrashGenerationClientImpl::~CrashGenerationClientImpl
+6d200 4 49 0
+FUNC 6d204 44 0 sys_close
+6d204 10 2979 97
+6d214 14 2979 97
+6d228 4 2979 97
+6d22c 4 2979 97
+6d230 8 2979 97
+6d238 10 2979 97
+FUNC 6d248 4 0 google_breakpad::::CrashGenerationClientImpl::~CrashGenerationClientImpl
+6d248 4 49 0
+FUNC 6d24c 158 0 google_breakpad::::CrashGenerationClientImpl::RequestDump
+6d24c 8 51 0
+6d254 4 3944 97
+6d258 10 51 0
+6d268 18 3944 97
+6d280 4 3944 97
+6d284 c 3944 97
+6d290 4 53 0
+6d294 4 64 0
+6d298 4 58 0
+6d29c 4 63 0
+6d2a0 4 62 0
+6d2a4 4 64 0
+6d2a8 4 59 0
+6d2ac 4 62 0
+6d2b0 4 61 0
+6d2b4 8 66 0
+6d2bc 4 71 0
+6d2c0 4 64 0
+6d2c4 4 71 0
+6d2c8 4 3671 97
+6d2cc 4 73 0
+6d2d0 8 61 0
+6d2d8 4 63 0
+6d2dc 8 64 0
+6d2e4 4 65 0
+6d2e8 4 69 0
+6d2ec 4 70 0
+6d2f0 4 73 0
+6d2f4 20 3671 97
+6d314 4 3671 97
+6d318 8 3671 97
+6d320 c 75 0
+6d32c 4 3671 97
+6d330 4 76 0
+6d334 4 3104 97
+6d338 4 76 0
+6d33c 4 77 0
+6d340 8 78 0
+6d348 8 54 0
+6d350 4 3104 97
+6d354 8 3104 97
+6d35c c 84 0
+6d368 20 3104 97
+6d388 8 85 0
+6d390 4 87 0
+6d394 10 88 0
+FUNC 6d3a4 44 0 google_breakpad::CrashGenerationClient::TryCreate
+6d3a4 8 99 0
+6d3ac 4 101 0
+6d3b0 8 99 0
+6d3b8 4 100 0
+6d3bc c 102 0
+6d3c8 14 48 0
+6d3dc c 103 0
+FUNC 6d3e8 4 0 google_breakpad::SeccompUnwinder::PopSeccompStackFrame
+6d3e8 4 152 1
+FUNC 6d3ec 8 0 google_breakpad::ThreadInfo::GetInstructionPointer
+6d3ec 8 217 2
+FUNC 6d3f4 68 0 google_breakpad::ThreadInfo::FillCPUContext
+6d3f4 4 219 2
+6d3f8 c 220 2
+6d404 10 222 2
+6d414 c 224 2
+6d420 4 223 2
+6d424 4 224 2
+6d428 4 223 2
+6d42c 8 225 2
+6d434 8 226 2
+6d43c 8 228 2
+6d444 8 229 2
+6d44c 10 231 2
+FUNC 6d45c 8 0 google_breakpad::UContextReader::GetStackPointer
+6d45c 8 189 3
+FUNC 6d464 8 0 google_breakpad::UContextReader::GetInstructionPointer
+6d464 8 193 3
+FUNC 6d46c 64 0 google_breakpad::UContextReader::FillCPUContext
+6d46c c 197 3
+6d478 10 199 3
+6d488 c 201 3
+6d494 4 200 3
+6d498 4 201 3
+6d49c 4 200 3
+6d4a0 4 202 3
+6d4a4 4 208 3
+6d4a8 4 202 3
+6d4ac 8 203 3
+6d4b4 8 205 3
+6d4bc 8 206 3
+6d4c4 c 208 3
+FUNC 6d4d0 fc 0 isLegalUTF8
+6d4d0 4 299 37
+6d4d4 8 300 37
+6d4dc 4 301 37
+6d4e0 1c 300 37
+6d4fc 4 303 37
+6d500 4 303 37
+6d504 4 303 37
+6d508 c 303 37
+6d514 4 303 37
+6d518 4 304 37
+6d51c 4 303 37
+6d520 4 304 37
+6d524 c 304 37
+6d530 4 304 37
+6d534 4 305 37
+6d538 4 303 37
+6d53c 8 305 37
+6d544 18 307 37
+6d55c 8 309 37
+6d564 10 307 37
+6d574 8 312 37
+6d57c 8 310 37
+6d584 c 311 37
+6d590 8 312 37
+6d598 4 303 37
+6d59c 4 313 37
+6d5a0 14 316 37
+6d5b4 c 318 37
+6d5c0 4 301 37
+6d5c4 8 320 37
+FUNC 6d5cc 220 0 ConvertUTF8toUTF16
+6d5cc 4 339 37
+6d5d0 4 371 37
+6d5d4 18 339 37
+6d5ec 4 357 37
+6d5f0 4 339 37
+6d5f4 4 341 37
+6d5f8 4 339 37
+6d5fc 4 342 37
+6d600 4 345 37
+6d604 4 357 37
+6d608 4 365 37
+6d60c 4 390 37
+6d610 8 343 37
+6d618 1c 345 37
+6d634 10 346 37
+6d644 1c 350 37
+6d660 4 357 37
+6d664 4 344 37
+6d668 24 357 37
+6d68c c 358 37
+6d698 4 344 37
+6d69c 14 359 37
+6d6b0 4 344 37
+6d6b4 14 360 37
+6d6c8 4 344 37
+6d6cc 14 361 37
+6d6e0 4 344 37
+6d6e4 14 362 37
+6d6f8 4 344 37
+6d6fc c 363 37
+6d708 4 365 37
+6d70c 4 367 37
+6d710 8 365 37
+6d718 4 367 37
+6d71c 8 371 37
+6d724 10 373 37
+6d734 8 382 37
+6d73c 10 384 37
+6d74c 4 385 37
+6d750 c 387 37
+6d75c c 390 37
+6d768 c 394 37
+6d774 4 395 37
+6d778 4 396 37
+6d77c 4 395 37
+6d780 4 396 37
+6d784 4 398 37
+6d788 8 399 37
+6d790 4 400 37
+6d794 4 399 37
+6d798 4 400 37
+6d79c 8 399 37
+6d7a4 10 400 37
+6d7b4 8 340 37
+6d7bc 8 347 37
+6d7c4 4 351 37
+6d7c8 4 403 37
+6d7cc 4 404 37
+6d7d0 1c 406 37
+FUNC 6d7ec 38 0 google_breakpad::DumpContext::DumpContext
+6d7ec c 53 68
+6d7f8 4 53 68
+6d7fc 28 54 68
+FUNC 6d824 1c 0 google_breakpad::DumpContext::GetContextCPU
+6d824 4 61 68
+6d828 4 60 68
+6d82c 4 64 68
+6d830 4 61 68
+6d834 8 67 68
+6d83c 4 68 68
+FUNC 6d840 8 0 google_breakpad::DumpContext::GetContextFlags
+6d840 8 72 68
+FUNC 6d848 8 0 google_breakpad::DumpContext::SetContextFlags
+6d848 4 190 68
+6d84c 4 191 68
+FUNC 6d850 8 0 google_breakpad::DumpContext::SetContextX86
+6d850 4 194 68
+6d854 4 195 68
+FUNC 6d858 8 0 google_breakpad::DumpContext::SetContextPPC
+6d858 4 198 68
+6d85c 4 199 68
+FUNC 6d860 8 0 google_breakpad::DumpContext::SetContextPPC64
+6d860 4 202 68
+6d864 4 203 68
+FUNC 6d868 8 0 google_breakpad::DumpContext::SetContextAMD64
+6d868 4 206 68
+6d86c 4 207 68
+FUNC 6d870 8 0 google_breakpad::DumpContext::SetContextSPARC
+6d870 4 210 68
+6d874 4 211 68
+FUNC 6d878 8 0 google_breakpad::DumpContext::SetContextARM
+6d878 4 214 68
+6d87c 4 215 68
+FUNC 6d880 8 0 google_breakpad::DumpContext::SetContextARM64
+6d880 4 218 68
+6d884 4 219 68
+FUNC 6d888 8 0 google_breakpad::DumpContext::SetContextMIPS
+6d888 4 222 68
+6d88c 4 223 68
+FUNC 6d890 88 0 google_breakpad::DumpContext::FreeContext
+6d890 c 225 68
+6d89c 4 225 68
+6d8a0 5c 226 68
+6d8fc 8 256 68
+6d904 4 266 68
+6d908 4 267 68
+6d90c c 268 68
+FUNC 6d918 10 0 google_breakpad::DumpContext::~DumpContext
+6d918 c 56 68
+6d924 4 57 68
+FUNC 6d928 24 0 google_breakpad::DumpContext::~DumpContext
+6d928 c 56 68
+6d934 4 56 68
+6d938 4 58 68
+6d93c 4 58 68
+6d940 8 58 68
+6d948 4 58 68
+FUNC 6d94c 70 0 google_breakpad::DumpContext::GetContextX86
+6d94c c 74 68
+6d958 4 74 68
+6d95c c 75 68
+6d968 24 76 68
+6d98c 10 333 122
+6d99c 8 76 68
+6d9a4 8 76 68
+6d9ac 4 80 68
+6d9b0 c 81 68
+FUNC 6d9bc 74 0 google_breakpad::DumpContext::GetContextPPC
+6d9bc c 83 68
+6d9c8 4 83 68
+6d9cc 10 84 68
+6d9dc 24 85 68
+6da00 10 333 122
+6da10 8 85 68
+6da18 8 85 68
+6da20 4 89 68
+6da24 c 90 68
+FUNC 6da30 74 0 google_breakpad::DumpContext::GetContextARM
+6da30 c 119 68
+6da3c 4 119 68
+6da40 10 120 68
+6da50 24 121 68
+6da74 10 333 122
+6da84 8 121 68
+6da8c 8 121 68
+6da94 4 125 68
+6da98 c 126 68
+FUNC 6daa4 74 0 google_breakpad::DumpContext::GetContextPPC64
+6daa4 c 92 68
+6dab0 4 92 68
+6dab4 10 93 68
+6dac4 24 94 68
+6dae8 10 333 122
+6daf8 8 94 68
+6db00 8 94 68
+6db08 4 98 68
+6db0c c 99 68
+FUNC 6db18 70 0 google_breakpad::DumpContext::GetContextAMD64
+6db18 c 101 68
+6db24 4 101 68
+6db28 c 102 68
+6db34 24 103 68
+6db58 10 333 122
+6db68 8 103 68
+6db70 8 103 68
+6db78 4 107 68
+6db7c c 108 68
+FUNC 6db88 74 0 google_breakpad::DumpContext::GetContextSPARC
+6db88 c 110 68
+6db94 4 110 68
+6db98 10 111 68
+6dba8 24 112 68
+6dbcc 10 333 122
+6dbdc 8 112 68
+6dbe4 8 112 68
+6dbec 4 116 68
+6dbf0 c 117 68
+FUNC 6dbfc 74 0 google_breakpad::DumpContext::GetContextARM64
+6dbfc c 128 68
+6dc08 4 128 68
+6dc0c 10 129 68
+6dc1c 24 130 68
+6dc40 10 333 122
+6dc50 8 130 68
+6dc58 8 130 68
+6dc60 4 134 68
+6dc64 c 135 68
+FUNC 6dc70 70 0 google_breakpad::DumpContext::GetContextMIPS
+6dc70 c 137 68
+6dc7c 4 137 68
+6dc80 c 138 68
+6dc8c 24 139 68
+6dcb0 10 333 122
+6dcc0 8 139 68
+6dcc8 8 139 68
+6dcd0 4 143 68
+6dcd4 c 144 68
+FUNC 6dce0 1e0 0 google_breakpad::DumpContext::GetInstructionPointer
+6dce0 10 146 68
+6dcf0 8 146 68
+6dcf8 4 147 68
+6dcfc 24 147 68
+6dd20 10 333 122
+6dd30 8 147 68
+6dd38 4 149 68
+6dd3c 8 151 68
+6dd44 24 152 68
+6dd68 10 333 122
+6dd78 8 152 68
+6dd80 4 153 68
+6dd84 30 156 68
+6ddb4 10 176 68
+6ddc4 1c 156 68
+6dde0 10 173 68
+6ddf0 18 156 68
+6de08 10 164 68
+6de18 10 158 68
+6de28 10 161 68
+6de38 10 167 68
+6de48 10 170 68
+6de58 c 179 68
+6de64 4 176 68
+6de68 4 177 68
+6de6c 20 183 68
+6de8c 4 184 68
+6de90 4 183 68
+6de94 10 333 122
+6dea4 8 183 68
+6deac 14 187 68
+FUNC 6dec0 8 0 google_breakpad::DumpObject::DumpObject
+6dec0 4 36 69
+6dec4 4 37 69
+FUNC 6dec8 4c 0 google_breakpad::HexString
+6dec8 4 86 71
+6decc 4 88 71
+6ded0 c 86 71
+6dedc 10 88 71
+6deec 4 86 71
+6def0 4 88 71
+6def4 10 89 71
+6df04 10 90 71
+FUNC 6df14 4c 0 google_breakpad::HexString
+6df14 4 92 71
+6df18 4 94 71
+6df1c c 92 71
+6df28 10 94 71
+6df38 4 92 71
+6df3c 4 94 71
+6df40 10 95 71
+6df50 10 96 71
+FUNC 6df60 4c 0 google_breakpad::HexString
+6df60 4 98 71
+6df64 4 100 71
+6df68 c 98 71
+6df74 10 100 71
+6df84 4 98 71
+6df88 4 100 71
+6df8c 10 101 71
+6df9c 10 102 71
+FUNC 6dfac 7c 0 google_breakpad::LogStream::~LogStream
+6dfac c 82 71
+6dfb8 4 83 71
+6dfbc 14 181 122
+6dfd0 4 412 121
+6dfd4 18 422 121
+6dfec 4 414 121
+6dff0 14 414 121
+6e004 8 421 121
+6e00c 8 424 121
+6e014 8 359 122
+6e01c c 84 71
+FUNC 6e028 20c 0 google_breakpad::LogStream::LogStream
+6e028 18 54 71
+6e040 4 58 71
+6e044 4 56 71
+6e048 4 54 71
+6e04c 4 58 71
+6e050 c 54 71
+6e05c 4 63 71
+6e060 4 58 71
+6e064 8 63 71
+6e06c 4 66 71
+6e070 4 63 71
+6e074 18 66 71
+6e08c c 69 71
+6e098 8 74 71
+6e0a0 4 75 71
+6e0a4 c 71 71
+6e0b0 8 68 71
+6e0b8 4 78 71
+6e0bc 8 333 122
+6e0c4 4 78 71
+6e0c8 18 333 122
+6e0e0 c 78 71
+6e0ec 4 78 71
+6e0f0 4 78 71
+6e0f4 c 78 71
+6e100 10 78 71
+6e110 c 333 122
+6e11c 4 238 121
+6e120 c 239 121
+6e12c 8 181 122
+6e134 8 239 121
+6e13c 4 239 121
+6e140 4 181 122
+6e144 4 239 121
+6e148 c 181 122
+6e154 4 199 121
+6e158 18 211 121
+6e170 4 202 121
+6e174 4 145 110
+6e178 4 202 121
+6e17c 4 145 110
+6e180 4 202 121
+6e184 8 145 110
+6e18c c 351 117
+6e198 8 351 117
+6e1a0 4 67 120
+6e1a4 4 202 121
+6e1a8 8 67 120
+6e1b0 c 202 121
+6e1bc 4 67 120
+6e1c0 4 57 123
+6e1c4 c 67 120
+6e1d0 8 202 121
+6e1d8 4 210 121
+6e1dc 4 212 121
+6e1e0 4 333 122
+6e1e4 4 212 121
+6e1e8 24 333 122
+6e20c 10 156 132
+6e21c 18 80 71
+FUNC 6e234 c0 0 google_breakpad::ErrnoString
+6e234 10 104 71
+6e244 4 104 71
+6e248 c 111 71
+6e254 8 111 71
+6e25c 8 229 140
+6e264 c 400 131
+6e270 8 244 130
+6e278 4 168 140
+6e27c c 168 140
+6e288 c 246 130
+6e294 8 803 131
+6e29c 4 168 140
+6e2a0 4 806 131
+6e2a4 4 168 140
+6e2a8 10 806 131
+6e2b8 4 168 140
+6e2bc 8 168 140
+6e2c4 4 400 131
+6e2c8 4 250 130
+6e2cc 8 400 131
+6e2d4 c 250 130
+6e2e0 4 112 71
+6e2e4 10 113 71
+FUNC 6e2f4 4 0 google_breakpad::MinidumpObject::~MinidumpObject
+6e2f4 4 114 65
+FUNC 6e2f8 18 0 google_breakpad::MinidumpThreadList::thread_count
+6e2f8 4 322 65
+6e2fc 4 321 65
+6e300 4 322 65
+6e304 4 322 65
+6e308 4 322 65
+6e30c 4 323 65
+FUNC 6e310 18 0 google_breakpad::MinidumpModule::base_address
+6e310 4 383 65
+6e314 4 382 65
+6e318 4 383 65
+6e31c 4 383 65
+6e320 4 383 65
+6e324 4 384 65
+FUNC 6e330 18 0 google_breakpad::MinidumpModule::size
+6e330 8 385 65
+6e338 4 385 65
+6e33c 4 385 65
+6e340 4 385 65
+6e344 4 385 65
+FUNC 6e350 18 0 google_breakpad::MinidumpModuleList::module_count
+6e350 4 491 65
+6e354 4 490 65
+6e358 4 491 65
+6e35c 4 491 65
+6e360 4 491 65
+6e364 4 492 65
+FUNC 6e370 14 0 google_breakpad::Minidump::header
+6e370 4 882 65
+6e374 8 882 65
+6e37c 8 882 65
+FUNC 6e384 8 0 google_breakpad::BasicCodeModule::base_address
+6e384 8 84 66
+FUNC 6e38c 8 0 google_breakpad::BasicCodeModule::size
+6e38c 8 85 66
+FUNC 6e394 18 0 google_breakpad::Swap
+6e394 10 125 73
+6e3a4 4 127 73
+6e3a8 4 128 73
+FUNC 6e3ac 10 0 google_breakpad::Swap
+6e3ac 8 131 73
+6e3b4 4 135 73
+6e3b8 4 136 73
+FUNC 6e3bc 38 0 google_breakpad::Swap
+6e3bc c 139 73
+6e3c8 4 139 73
+6e3cc 4 141 73
+6e3d0 8 142 73
+6e3d8 4 143 73
+6e3dc 8 144 73
+6e3e4 4 145 73
+6e3e8 c 146 73
+FUNC 6e3f4 24 0 google_breakpad::Swap
+6e3f4 c 182 73
+6e400 4 182 73
+6e404 4 183 73
+6e408 4 184 73
+6e40c 8 185 73
+6e414 4 184 73
+FUNC 6e418 50 0 google_breakpad::MinidumpThread::~MinidumpThread
+6e418 c 1380 73
+6e424 10 1380 73
+6e434 8 1381 73
+6e43c c 1381 73
+6e448 8 1382 73
+6e450 c 1382 73
+6e45c c 1383 73
+FUNC 6e468 30 0 google_breakpad::MinidumpException::~MinidumpException
+6e468 c 2883 73
+6e474 8 2883 73
+6e47c 8 2884 73
+6e484 c 2884 73
+6e490 8 2885 73
+FUNC 6e498 d4 0 std::basic_filebuf<char, std::char_traits<char> >::pbackfail
+6e498 4 161 104
+6e49c 4 157 104
+6e4a0 4 162 104
+6e4a4 c 161 104
+6e4b0 8 166 104
+6e4b8 8 166 104
+6e4c0 c 166 104
+6e4cc c 166 104
+6e4d8 8 175 104
+6e4e0 4 178 104
+6e4e4 4 177 104
+6e4e8 4 178 104
+6e4ec 4 180 104
+6e4f0 4 162 104
+6e4f4 8 180 104
+6e4fc 4 181 104
+6e500 4 95 129
+6e504 4 181 104
+6e508 4 93 129
+6e50c 8 94 129
+6e514 4 187 104
+6e518 8 188 104
+6e520 4 189 104
+6e524 4 186 104
+6e528 4 93 129
+6e52c 4 94 129
+6e530 4 190 104
+6e534 4 95 129
+6e538 8 190 104
+6e540 4 220 140
+6e544 8 162 104
+6e54c 4 91 129
+6e550 4 171 104
+6e554 8 91 129
+6e55c 4 171 104
+6e560 8 171 104
+6e568 4 199 104
+FUNC 6e56c 4 0 google_breakpad::MinidumpObject::~MinidumpObject
+6e56c 4 114 65
+FUNC 6e570 24 0 google_breakpad::MinidumpThread::~MinidumpThread
+6e570 c 1380 73
+6e57c 4 1380 73
+6e580 4 1383 73
+6e584 4 1383 73
+6e588 8 1383 73
+6e590 4 1383 73
+FUNC 6e594 24 0 google_breakpad::MinidumpException::~MinidumpException
+6e594 c 2883 73
+6e5a0 4 2883 73
+6e5a4 4 2885 73
+6e5a8 4 2885 73
+6e5ac 8 2885 73
+6e5b4 4 2885 73
+FUNC 6e5b8 10 0 google_breakpad::MinidumpContext::~MinidumpContext
+6e5b8 10 420 73
+FUNC 6e5c8 24 0 google_breakpad::MinidumpContext::~MinidumpContext
+6e5c8 c 420 73
+6e5d4 4 420 73
+6e5d8 4 421 73
+6e5dc 4 421 73
+6e5e0 8 421 73
+6e5e8 4 421 73
+FUNC 6e5ec 34 0 google_breakpad::MinidumpModuleList::Copy
+6e5ec c 2640 73
+6e5f8 4 2640 73
+6e5fc c 2641 73
+6e608 8 2641 73
+6e610 10 2642 73
+FUNC 6e628 4 0 std::basic_filebuf<char, std::char_traits<char> >::underflow
+6e628 4 76 104
+FUNC 6e62c 38 0 std::basic_filebuf<char, std::char_traits<char> >::sync
+6e62c 4 402 104
+6e630 4 406 104
+6e634 4 402 104
+6e638 8 403 104
+6e640 4 405 104
+6e644 c 405 104
+6e650 8 405 104
+6e658 c 407 104
+FUNC 6e664 88 0 std::basic_filebuf<char, std::char_traits<char> >::showmanyc
+6e664 10 132 104
+6e674 4 134 104
+6e678 4 135 104
+6e67c 4 134 104
+6e680 8 134 104
+6e688 8 136 104
+6e690 10 137 104
+6e6a0 8 138 104
+6e6a8 8 144 104
+6e6b0 18 139 104
+6e6c8 8 140 104
+6e6d0 8 141 104
+6e6d8 4 141 104
+6e6dc 4 141 104
+6e6e0 c 145 104
+FUNC 6e6ec b8 0 std::basic_filebuf<char, std::char_traits<char> >::_M_unshift
+6e6ec 14 593 104
+6e700 4 593 104
+6e704 4 598 104
+6e708 4 199 102
+6e70c 4 322 105
+6e710 4 597 104
+6e714 4 199 102
+6e718 4 598 104
+6e71c 4 597 104
+6e720 14 199 102
+6e734 4 600 104
+6e738 4 199 102
+6e73c 4 600 104
+6e740 4 600 104
+6e744 4 600 104
+6e748 4 600 104
+6e74c 4 600 104
+6e750 8 600 104
+6e758 8 600 104
+6e760 8 603 104
+6e768 10 322 105
+6e778 4 605 104
+6e77c c 596 104
+6e788 4 602 104
+6e78c 4 602 104
+6e790 14 611 104
+FUNC 6e7a4 80 0 std::basic_filebuf<char, std::char_traits<char> >::_M_setup_codecvt
+6e7a4 c 735 104
+6e7b0 4 735 104
+6e7b4 10 351 117
+6e7c4 4 737 104
+6e7c8 c 216 102
+6e7d4 4 141 100
+6e7d8 4 216 102
+6e7dc 4 141 100
+6e7e0 4 740 104
+6e7e4 4 741 104
+6e7e8 c 227 102
+6e7f4 4 741 104
+6e7f8 c 742 104
+6e804 4 743 104
+6e808 c 218 102
+6e814 4 743 104
+6e818 c 754 104
+FUNC 6e824 98 0 std::basic_filebuf<char, std::char_traits<char> >::imbue
+6e824 10 413 104
+6e834 4 413 104
+6e838 8 414 104
+6e840 8 414 104
+6e848 18 347 117
+6e860 c 736 104
+6e86c 10 417 104
+6e87c 4 746 104
+6e880 4 747 104
+6e884 4 748 104
+6e888 4 351 117
+6e88c 8 747 104
+6e894 4 351 117
+6e898 4 748 104
+6e89c c 417 104
+6e8a8 4 351 117
+6e8ac 10 417 104
+FUNC 6e8bc 54 0 std::priv::_Rb_tree<long unsigned int, std::less<long unsigned int>, std::pair<long unsigned int const, google_breakpad::RangeMap<long unsigned int, unsigned int>::Range>, std::priv::_Select1st<std::pair<long unsigned int const, google_breakpad::RangeMap<long unsigned int, unsigned int>::Range> >, std::priv::_MapTraitsT<std::pair<long unsigned int const, google_breakpad::RangeMap<long unsigned int, unsigned int>::Range> >, std::allocator<std::pair<long unsigned int const, google_breakpad::RangeMap<long unsigned int, unsigned int>::Range> > >::_M_create_node
+6e8bc 4 315 136
+6e8c0 4 306 101
+6e8c4 8 315 136
+6e8cc 4 315 136
+6e8d0 8 306 101
+6e8d8 4 307 101
+6e8dc 8 119 103
+6e8e4 18 68 124
+6e8fc 4 321 136
+6e900 4 322 136
+6e904 c 324 136
+FUNC 6e910 4c 0 std::priv::_Rb_tree<unsigned int, std::less<unsigned int>, std::pair<unsigned int const, google_breakpad::MinidumpThread*>, std::priv::_Select1st<std::pair<unsigned int const, google_breakpad::MinidumpThread*> >, std::priv::_MapTraitsT<std::pair<unsigned int const, google_breakpad::MinidumpThread*> >, std::allocator<std::pair<unsigned int const, google_breakpad::MinidumpThread*> > >::_M_create_node
+6e910 4 315 136
+6e914 4 306 101
+6e918 8 315 136
+6e920 4 315 136
+6e924 8 306 101
+6e92c 4 307 101
+6e930 8 119 103
+6e938 10 68 124
+6e948 4 321 136
+6e94c 4 322 136
+6e950 c 324 136
+FUNC 6e95c 54 0 std::priv::_Rb_tree<unsigned int, std::less<unsigned int>, std::pair<unsigned int const, google_breakpad::Minidump::MinidumpStreamInfo>, std::priv::_Select1st<std::pair<unsigned int const, google_breakpad::Minidump::MinidumpStreamInfo> >, std::priv::_MapTraitsT<std::pair<unsigned int const, google_breakpad::Minidump::MinidumpStreamInfo> >, std::allocator<std::pair<unsigned int const, google_breakpad::Minidump::MinidumpStreamInfo> > >::_M_create_node
+6e95c 4 315 136
+6e960 4 306 101
+6e964 8 315 136
+6e96c 4 315 136
+6e970 8 306 101
+6e978 4 307 101
+6e97c 8 119 103
+6e984 18 68 124
+6e99c 4 321 136
+6e9a0 4 322 136
+6e9a4 c 324 136
+FUNC 6e9b0 24 0 google_breakpad::Minidump::MinidumpStreamInfo::~MinidumpStreamInfo
+6e9b0 8 969 65
+6e9b8 8 969 65
+6e9c0 4 969 65
+6e9c4 8 969 65
+6e9cc 8 969 65
+FUNC 6e9d4 b8 0 google_breakpad::BasicCodeModule::BasicCodeModule
+6e9d4 c 57 66
+6e9e0 4 57 66
+6e9e4 8 64 66
+6e9ec 4 57 66
+6e9f0 4 64 66
+6e9f4 10 58 66
+6ea04 4 64 66
+6ea08 10 59 66
+6ea18 4 64 66
+6ea1c 4 64 66
+6ea20 4 60 66
+6ea24 c 64 66
+6ea30 4 61 66
+6ea34 10 64 66
+6ea44 4 62 66
+6ea48 10 64 66
+6ea58 4 63 66
+6ea5c 10 64 66
+6ea6c 4 64 66
+6ea70 10 64 66
+6ea80 c 64 66
+FUNC 6ea8c 34 0 google_breakpad::MinidumpModule::Copy
+6ea8c c 2071 73
+6ea98 4 2071 73
+6ea9c c 2072 73
+6eaa8 8 2072 73
+6eab0 10 2073 73
+FUNC 6eac8 34 0 google_breakpad::BasicCodeModule::Copy
+6eac8 c 91 66
+6ead4 10 91 66
+6eae4 8 91 66
+6eaec 10 91 66
+FUNC 6eafc 3c 0 google_breakpad::MinidumpStream::MinidumpStream
+6eafc c 405 73
+6eb08 4 405 73
+6eb0c 4 396 73
+6eb10 4 405 73
+6eb14 8 396 73
+6eb1c 4 406 73
+6eb20 4 396 73
+6eb24 8 406 73
+6eb2c c 407 73
+FUNC 6eb38 50 0 google_breakpad::MinidumpMemoryRegion::MinidumpMemoryRegion
+6eb38 c 1192 73
+6eb44 4 1192 73
+6eb48 4 396 73
+6eb4c 4 1192 73
+6eb50 4 396 73
+6eb54 8 1195 73
+6eb5c 4 396 73
+6eb60 c 1195 73
+6eb6c 4 396 73
+6eb70 c 1195 73
+6eb7c c 1196 73
+FUNC 6eb88 28 0 google_breakpad::MinidumpMemoryRegion::SetDescriptor
+6eb88 4 1205 73
+6eb8c 4 1206 73
+6eb90 4 1206 73
+6eb94 4 1207 73
+6eb98 8 1208 73
+6eba0 8 1206 73
+6eba8 4 1209 73
+6ebac 4 1210 73
+FUNC 6ebb0 54 0 google_breakpad::MinidumpThread::MinidumpThread
+6ebb0 c 1372 73
+6ebbc 4 1372 73
+6ebc0 4 396 73
+6ebc4 4 1372 73
+6ebc8 4 396 73
+6ebcc 4 1376 73
+6ebd0 8 396 73
+6ebd8 20 1376 73
+6ebf8 c 1377 73
+FUNC 6ec04 4c 0 google_breakpad::MinidumpThreadList::MinidumpThreadList
+6ec04 c 1540 73
+6ec10 4 1540 73
+6ec14 10 1544 73
+6ec24 4 263 136
+6ec28 4 481 101
+6ec2c 4 263 136
+6ec30 4 266 136
+6ec34 4 267 136
+6ec38 4 391 136
+6ec3c 8 1544 73
+6ec44 c 1545 73
+FUNC 6ec50 84 0 google_breakpad::MinidumpModule::MinidumpModule
+6ec50 c 1704 73
+6ec5c 4 1704 73
+6ec60 4 396 73
+6ec64 4 1704 73
+6ec68 4 396 73
+6ec6c 8 1712 73
+6ec74 4 396 73
+6ec78 c 1712 73
+6ec84 4 396 73
+6ec88 40 1712 73
+6ecc8 c 1713 73
+FUNC 6ecd4 60 0 google_breakpad::MinidumpModuleList::MinidumpModuleList
+6ecd4 c 2431 73
+6ece0 4 2431 73
+6ece4 1c 2435 73
+6ed00 8 2435 73
+6ed08 4 481 101
+6ed0c 4 263 136
+6ed10 4 266 136
+6ed14 4 267 136
+6ed18 4 391 136
+6ed1c c 2435 73
+6ed28 c 2436 73
+FUNC 6ed34 58 0 google_breakpad::MinidumpMemoryList::MinidumpMemoryList
+6ed34 c 2673 73
+6ed40 4 2673 73
+6ed44 10 2678 73
+6ed54 8 2678 73
+6ed5c 4 481 101
+6ed60 4 263 136
+6ed64 4 266 136
+6ed68 4 267 136
+6ed6c 4 391 136
+6ed70 10 2678 73
+6ed80 c 2679 73
+FUNC 6ed8c 40 0 google_breakpad::MinidumpException::MinidumpException
+6ed8c c 2876 73
+6ed98 4 2876 73
+6ed9c 24 2879 73
+6edc0 c 2880 73
+FUNC 6edcc 48 0 google_breakpad::MinidumpSystemInfo::MinidumpSystemInfo
+6edcc c 3092 73
+6edd8 4 3092 73
+6eddc 2c 3096 73
+6ee08 c 3097 73
+FUNC 6ee14 24 0 google_breakpad::scoped_ptr<google_breakpad::MinidumpContext>::~scoped_ptr
+6ee14 8 96 57
+6ee1c 8 98 57
+6ee24 c 98 57
+6ee30 8 99 57
+FUNC 6ee38 70 0 std::priv::_Impl_vector<google_breakpad::MinidumpThread, std::allocator<google_breakpad::MinidumpThread> >::~_Impl_vector
+6ee38 10 304 139
+6ee48 c 304 139
+6ee54 8 191 103
+6ee5c 4 57 103
+6ee60 4 77 113
+6ee64 14 57 103
+6ee78 8 87 139
+6ee80 4 88 139
+6ee84 c 304 139
+6ee90 8 323 101
+6ee98 10 304 139
+FUNC 6eea8 70 0 std::priv::_Impl_vector<google_breakpad::MinidumpModule, std::allocator<google_breakpad::MinidumpModule> >::~_Impl_vector
+6eea8 10 304 139
+6eeb8 c 304 139
+6eec4 8 191 103
+6eecc 4 57 103
+6eed0 4 77 113
+6eed4 14 57 103
+6eee8 8 87 139
+6eef0 4 88 139
+6eef4 c 304 139
+6ef00 8 323 101
+6ef08 10 304 139
+FUNC 6ef18 1c 0 std::priv::_Impl_vector<MDMemoryDescriptor, std::allocator<MDMemoryDescriptor> >::~_Impl_vector
+6ef18 8 304 139
+6ef20 4 87 139
+6ef24 4 88 139
+6ef28 8 323 101
+6ef30 4 304 139
+FUNC 6ef34 70 0 std::priv::_Impl_vector<google_breakpad::MinidumpMemoryRegion, std::allocator<google_breakpad::MinidumpMemoryRegion> >::~_Impl_vector
+6ef34 10 304 139
+6ef44 c 304 139
+6ef50 8 191 103
+6ef58 4 57 103
+6ef5c 4 77 113
+6ef60 14 57 103
+6ef74 8 87 139
+6ef7c 4 88 139
+6ef80 c 304 139
+6ef8c 8 323 101
+6ef94 10 304 139
+FUNC 6efa4 1c 0 std::priv::_Impl_vector<MDRawDirectory, std::allocator<MDRawDirectory> >::~_Impl_vector
+6efa4 8 304 139
+6efac 4 87 139
+6efb0 4 88 139
+6efb4 8 323 101
+6efbc 4 304 139
+FUNC 6efc0 38 0 google_breakpad::scoped_ptr<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >::~scoped_ptr
+6efc0 c 96 57
+6efcc 8 98 57
+6efd4 8 156 132
+6efdc 4 98 57
+6efe0 8 99 57
+6efe8 4 98 57
+6efec c 99 57
+FUNC 6eff8 48 0 google_breakpad::BasicCodeModule::~BasicCodeModule
+6eff8 10 80 66
+6f008 c 80 66
+6f014 20 156 132
+6f034 8 80 66
+6f03c 4 156 132
+FUNC 6f040 24 0 google_breakpad::BasicCodeModule::~BasicCodeModule
+6f040 c 80 66
+6f04c 8 80 66
+6f054 4 80 66
+6f058 8 80 66
+6f060 4 80 66
+FUNC 6f064 60 0 google_breakpad::MinidumpSystemInfo::~MinidumpSystemInfo
+6f064 c 3100 73
+6f070 c 3100 73
+6f07c 4 3101 73
+6f080 4 3100 73
+6f084 4 3101 73
+6f088 8 156 132
+6f090 8 3101 73
+6f098 8 3102 73
+6f0a0 8 156 132
+6f0a8 4 3102 73
+6f0ac 8 3103 73
+6f0b4 4 3102 73
+6f0b8 c 3103 73
+FUNC 6f0c4 24 0 google_breakpad::MinidumpSystemInfo::~MinidumpSystemInfo
+6f0c4 c 3100 73
+6f0d0 4 3100 73
+6f0d4 4 3103 73
+6f0d8 4 3103 73
+6f0dc 8 3103 73
+6f0e4 4 3103 73
+FUNC 6f0e8 a0 0 std::priv::_Impl_vector<short unsigned int, std::allocator<short unsigned int> >::_Impl_vector
+6f0e8 c 233 139
+6f0f4 4 70 139
+6f0f8 4 233 139
+6f0fc 4 70 139
+6f100 4 481 101
+6f104 4 342 101
+6f108 c 343 101
+6f114 8 343 101
+6f11c 4 356 101
+6f120 4 346 101
+6f124 c 347 101
+6f130 4 348 101
+6f134 c 352 101
+6f140 4 73 139
+6f144 4 71 139
+6f148 4 73 139
+6f14c 4 314 137
+6f150 4 72 139
+6f154 c 249 137
+6f160 c 249 137
+6f16c c 146 103
+6f178 10 244 139
+FUNC 6f188 1c 0 std::priv::_Vector_base<short unsigned int, std::allocator<short unsigned int> >::~_Vector_base
+6f188 4 86 139
+6f18c 8 87 139
+6f194 4 88 139
+6f198 8 323 101
+6f1a0 4 89 139
+FUNC 6f1a4 1c 0 std::priv::_Vector_base<unsigned char, std::allocator<unsigned char> >::~_Vector_base
+6f1a4 4 86 139
+6f1a8 8 87 139
+6f1b0 4 88 139
+6f1b4 8 323 101
+6f1bc 4 89 139
+FUNC 6f1c0 50 0 google_breakpad::MinidumpMemoryRegion::~MinidumpMemoryRegion
+6f1c0 10 1199 73
+6f1d0 c 1199 73
+6f1dc 4 1200 73
+6f1e0 8 1199 73
+6f1e8 4 1200 73
+6f1ec 8 304 139
+6f1f4 4 1200 73
+6f1f8 8 1201 73
+6f200 4 1200 73
+6f204 c 1201 73
+FUNC 6f218 24 0 google_breakpad::MinidumpMemoryRegion::~MinidumpMemoryRegion
+6f218 c 1199 73
+6f224 4 1199 73
+6f228 4 1201 73
+6f22c 4 1201 73
+6f230 8 1201 73
+6f238 4 1201 73
+FUNC 6f244 38 0 google_breakpad::scoped_ptr<std::vector<unsigned char, std::allocator<unsigned char> > >::~scoped_ptr
+6f244 c 96 57
+6f250 8 98 57
+6f258 8 304 139
+6f260 4 98 57
+6f264 8 99 57
+6f26c 4 98 57
+6f270 c 99 57
+FUNC 6f27c 84 0 google_breakpad::MinidumpModule::~MinidumpModule
+6f27c c 1716 73
+6f288 c 1716 73
+6f294 4 1717 73
+6f298 10 1716 73
+6f2a8 4 1717 73
+6f2ac 8 156 132
+6f2b4 8 1717 73
+6f2bc 8 1718 73
+6f2c4 8 304 139
+6f2cc 8 1718 73
+6f2d4 8 1719 73
+6f2dc 8 304 139
+6f2e4 4 1719 73
+6f2e8 8 1720 73
+6f2f0 4 1719 73
+6f2f4 c 1720 73
+FUNC 6f308 24 0 google_breakpad::MinidumpModule::~MinidumpModule
+6f308 c 1716 73
+6f314 4 1716 73
+6f318 4 1720 73
+6f31c 4 1720 73
+6f320 8 1720 73
+6f328 4 1720 73
+FUNC 6f334 90 0 std::priv::_Impl_vector<unsigned char, std::allocator<unsigned char> >::_Impl_vector
+6f334 c 233 139
+6f340 4 233 139
+6f344 8 70 139
+6f34c 4 481 101
+6f350 4 346 101
+6f354 10 347 101
+6f364 4 348 101
+6f368 10 352 101
+6f378 4 346 101
+6f37c 4 356 101
+6f380 4 73 139
+6f384 4 71 139
+6f388 4 73 139
+6f38c 4 314 137
+6f390 4 72 139
+6f394 8 314 137
+6f39c c 249 137
+6f3a8 c 146 103
+6f3b4 10 244 139
+FUNC 6f3c4 60 0 std::priv::_Rb_tree<unsigned int, std::less<unsigned int>, std::pair<unsigned int const, google_breakpad::Minidump::MinidumpStreamInfo>, std::priv::_Select1st<std::pair<unsigned int const, google_breakpad::Minidump::MinidumpStreamInfo> >, std::priv::_MapTraitsT<std::pair<unsigned int const, google_breakpad::Minidump::MinidumpStreamInfo> >, std::allocator<std::pair<unsigned int const, google_breakpad::Minidump::MinidumpStreamInfo> > >::find<unsigned int>
+6f3c4 4 543 136
+6f3c8 8 549 136
+6f3d0 4 552 136
+6f3d4 10 553 136
+6f3e4 8 554 136
+6f3ec 14 556 136
+6f400 8 558 136
+6f408 10 559 136
+6f418 4 142 136
+6f41c 8 543 136
+FUNC 6f424 44 0 std::priv::_Rb_global<bool>::_M_increment
+6f424 8 297 135
+6f42c 10 94 136
+6f43c 4 301 135
+6f440 c 302 135
+6f44c c 304 135
+6f458 c 309 135
+6f464 4 313 135
+FUNC 6f468 170 0 std::priv::__read_unbuffered<char, std::char_traits<char>, std::priv::_Constant_unary_fun<bool, int> >
+6f468 1c 579 111
+6f484 20 579 111
+6f4a4 4 603 111
+6f4a8 c 592 111
+6f4b4 8 593 111
+6f4bc 10 229 129
+6f4cc 8 228 129
+6f4d4 8 223 140
+6f4dc 8 228 129
+6f4e4 c 229 129
+6f4f0 4 599 111
+6f4f4 4 229 129
+6f4f8 8 599 111
+6f500 18 600 111
+6f518 c 603 111
+6f524 4 604 111
+6f528 8 605 111
+6f530 10 244 129
+6f540 c 244 129
+6f54c 4 243 129
+6f550 8 244 129
+6f558 4 243 129
+6f55c 10 244 129
+6f56c c 606 111
+6f578 4 612 111
+6f57c 4 591 111
+6f580 8 594 111
+6f588 4 601 111
+6f58c 4 622 111
+6f590 4 623 111
+6f594 4 624 111
+6f598 14 625 111
+6f5ac c 622 111
+6f5b8 20 627 111
+FUNC 6f5d8 28 0 google_breakpad::BasicCodeModule::code_file
+6f5d8 10 86 66
+6f5e8 18 86 66
+FUNC 6f600 28 0 google_breakpad::BasicCodeModule::code_identifier
+6f600 10 87 66
+6f610 18 87 66
+FUNC 6f628 28 0 google_breakpad::BasicCodeModule::debug_file
+6f628 10 88 66
+6f638 18 88 66
+FUNC 6f650 28 0 google_breakpad::BasicCodeModule::debug_identifier
+6f650 10 89 66
+6f660 18 89 66
+FUNC 6f678 28 0 google_breakpad::BasicCodeModule::version
+6f678 10 90 66
+6f688 18 90 66
+FUNC 6f6a0 28 0 google_breakpad::Minidump::path
+6f6a0 4 869 65
+6f6a4 8 870 65
+6f6ac 4 869 65
+6f6b0 8 870 65
+6f6b8 10 871 65
+FUNC 6f6c8 84 0 google_breakpad::Minidump::Minidump
+6f6c8 c 3972 73
+6f6d4 4 3972 73
+6f6d8 8 3979 73
+6f6e0 4 3972 73
+6f6e4 2c 3979 73
+6f710 4 481 101
+6f714 4 263 136
+6f718 4 266 136
+6f71c 4 267 136
+6f720 4 391 136
+6f724 4 3979 73
+6f728 4 3979 73
+6f72c 8 3979 73
+6f734 c 3979 73
+6f740 c 3980 73
+FUNC 6f74c 74 0 google_breakpad::MinidumpModuleList::GetMainModule
+6f74c c 2588 73
+6f758 8 2589 73
+6f760 24 2590 73
+6f784 10 333 122
+6f794 8 2590 73
+6f79c 8 2590 73
+6f7a4 10 2596 73
+6f7b4 c 2597 73
+FUNC 6f7e8 68 0 google_breakpad::MinidumpThread::GetMemory
+6f7e8 c 1438 73
+6f7f4 8 1439 73
+6f7fc 24 1440 73
+6f820 10 333 122
+6f830 8 1440 73
+6f838 8 1440 73
+6f840 4 1444 73
+6f844 c 1445 73
+FUNC 6f850 6c 0 google_breakpad::MinidumpMemoryRegion::GetBase
+6f850 c 1252 73
+6f85c 8 1253 73
+6f864 24 1254 73
+6f888 10 333 122
+6f898 8 1254 73
+6f8a0 8 1254 73
+6f8a8 8 1258 73
+6f8b0 c 1259 73
+FUNC 6f8c4 6c 0 google_breakpad::MinidumpMemoryRegion::GetSize
+6f8c4 c 1262 73
+6f8d0 8 1263 73
+6f8d8 24 1264 73
+6f8fc 10 333 122
+6f90c 8 1264 73
+6f914 8 1264 73
+6f91c 8 1268 73
+6f924 c 1269 73
+FUNC 6f938 68 0 google_breakpad::MinidumpThread::GetStartOfStackMemoryRange
+6f938 c 1429 73
+6f944 8 1430 73
+6f94c 24 1431 73
+6f970 10 333 122
+6f980 8 1431 73
+6f988 8 1431 73
+6f990 4 1435 73
+6f994 c 1436 73
+FUNC 6f9a0 c0 0 google_breakpad::MinidumpThread::GetThreadID
+6f9a0 10 1474 73
+6f9b0 8 1474 73
+6f9b8 4 1476 73
+6f9bc 24 1476 73
+6f9e0 10 333 122
+6f9f0 8 1476 73
+6f9f8 4 1478 73
+6f9fc 8 1480 73
+6fa04 24 1481 73
+6fa28 10 333 122
+6fa38 c 1481 73
+6fa44 8 1485 73
+6fa4c 14 1487 73
+FUNC 6fa60 c0 0 google_breakpad::MinidumpException::GetThreadID
+6fa60 10 2930 73
+6fa70 8 2930 73
+6fa78 4 2932 73
+6fa7c 24 2932 73
+6faa0 10 333 122
+6fab0 8 2932 73
+6fab8 4 2934 73
+6fabc 8 2936 73
+6fac4 24 2937 73
+6fae8 10 333 122
+6faf8 8 2937 73
+6fb00 4 2938 73
+6fb04 8 2941 73
+6fb0c 14 2943 73
+FUNC 6fb20 8c 0 google_breakpad::MinidumpModule::code_file
+6fb20 10 1817 73
+6fb30 4 1817 73
+6fb34 8 1818 73
+6fb3c 24 1819 73
+6fb60 10 333 122
+6fb70 8 1819 73
+6fb78 18 1820 73
+6fb90 c 1823 73
+6fb9c 10 1824 73
+FUNC 6fbb4 104 0 google_breakpad::RangeMap<long unsigned int, unsigned int>::RetrieveRange
+6fbb4 14 118 75
+6fbc8 14 118 75
+6fbdc 4 121 75
+6fbe0 24 121 75
+6fc04 10 333 122
+6fc14 c 121 75
+6fc20 4 568 136
+6fc24 4 571 136
+6fc28 10 572 136
+6fc38 8 573 136
+6fc40 14 575 136
+6fc54 4 125 75
+6fc58 4 126 75
+6fc5c 4 125 75
+6fc60 14 133 75
+6fc74 4 136 75
+6fc78 8 137 75
+6fc80 4 138 75
+6fc84 4 142 75
+6fc88 8 139 75
+6fc90 10 140 75
+6fca0 4 142 75
+6fca4 14 143 75
+FUNC 6fcb8 238 0 google_breakpad::MinidumpContext::CheckAgainstSystemInfo
+6fcb8 14 1106 73
+6fccc 4 1106 73
+6fcd0 14 1109 73
+6fce4 4 1110 73
+6fce8 1c 1112 73
+6fd04 4 1113 73
+6fd08 4 1112 73
+6fd0c 10 333 122
+6fd1c 8 1112 73
+6fd24 4 1113 73
+6fd28 8 675 65
+6fd30 4 1125 73
+6fd34 48 1130 73
+6fd7c 8 1155 73
+6fd84 18 1130 73
+6fd9c 8 1165 73
+6fda4 10 1133 73
+6fdb4 c 1132 73
+6fdc0 8 1133 73
+6fdc8 8 1140 73
+6fdd0 8 1145 73
+6fdd8 8 1150 73
+6fde0 8 1155 73
+6fde8 8 1160 73
+6fdf0 c 1170 73
+6fdfc 24 1120 73
+6fe20 10 333 122
+6fe30 8 1120 73
+6fe38 4 1121 73
+6fe3c 20 1175 73
+6fe5c 4 1176 73
+6fe60 4 1175 73
+6fe64 4 110 72
+6fe68 10 333 122
+6fe78 8 1176 73
+6fe80 4 1178 73
+6fe84 4 1176 73
+6fe88 10 1176 73
+6fe98 c 333 122
+6fea4 c 1178 73
+6feb0 c 1178 73
+6febc c 156 132
+6fec8 4 1175 73
+6fecc 4 156 132
+6fed0 8 1175 73
+6fed8 18 1181 73
+FUNC 6fef0 108 0 google_breakpad::MinidumpModuleList::GetModuleForAddress
+6fef0 10 2571 73
+6ff00 8 2571 73
+6ff08 8 2572 73
+6ff10 24 2573 73
+6ff34 10 333 122
+6ff44 8 2573 73
+6ff4c 20 2578 73
+6ff6c 1c 2579 73
+6ff88 4 2580 73
+6ff8c 4 2579 73
+6ff90 4 110 72
+6ff94 10 333 122
+6ffa4 c 2580 73
+6ffb0 c 2580 73
+6ffbc 8 156 132
+6ffc4 8 2579 73
+6ffcc 8 2581 73
+6ffd4 14 2584 73
+6ffe8 10 2585 73
+FUNC 70020 fc 0 google_breakpad::MinidumpThreadList::GetThreadAtIndex
+70020 10 1652 73
+70030 8 1652 73
+70038 8 1653 73
+70040 24 1654 73
+70064 10 333 122
+70074 8 1654 73
+7007c c 1658 73
+70088 24 1659 73
+700ac 4 110 72
+700b0 10 333 122
+700c0 10 254 121
+700d0 c 333 122
+700dc c 254 121
+700e8 8 1659 73
+700f0 c 1659 73
+700fc 10 202 139
+7010c 10 1665 73
+FUNC 7011c fc 0 google_breakpad::MinidumpModuleList::GetModuleAtIndex
+7011c 10 2624 73
+7012c 8 2624 73
+70134 8 2625 73
+7013c 24 2626 73
+70160 10 333 122
+70170 8 2626 73
+70178 c 2630 73
+70184 24 2631 73
+701a8 4 110 72
+701ac 10 333 122
+701bc 10 254 121
+701cc c 333 122
+701d8 c 254 121
+701e4 8 2631 73
+701ec c 2631 73
+701f8 10 202 139
+70208 10 2637 73
+FUNC 70240 fc 0 google_breakpad::MinidumpMemoryList::GetMemoryRegionAtIndex
+70240 10 2805 73
+70250 8 2805 73
+70258 8 2806 73
+70260 24 2807 73
+70284 10 333 122
+70294 8 2807 73
+7029c c 2811 73
+702a8 24 2812 73
+702cc 4 110 72
+702d0 10 333 122
+702e0 10 254 121
+702f0 c 333 122
+702fc c 254 121
+70308 8 2812 73
+70310 c 2812 73
+7031c 10 202 139
+7032c 10 2818 73
+FUNC 7033c 100 0 google_breakpad::MinidumpMemoryList::GetMemoryRegionForAddress
+7033c 10 2822 73
+7034c 8 2822 73
+70354 8 2823 73
+7035c 24 2824 73
+70380 10 333 122
+70390 8 2824 73
+70398 20 2829 73
+703b8 1c 2830 73
+703d4 4 2831 73
+703d8 4 2830 73
+703dc 4 110 72
+703e0 10 333 122
+703f0 c 2831 73
+703fc c 2831 73
+70408 8 156 132
+70410 8 2830 73
+70418 8 2832 73
+70420 c 2835 73
+7042c 10 2836 73
+FUNC 7043c 1e4 0 google_breakpad::MinidumpModuleList::GetModuleAtSequence
+7043c 14 2601 73
+70450 8 2601 73
+70458 8 2602 73
+70460 24 2603 73
+70484 14 333 122
+70498 c 2607 73
+704a4 24 2608 73
+704c8 4 110 72
+704cc 10 333 122
+704dc 10 254 121
+704ec c 333 122
+704f8 c 254 121
+70504 8 2608 73
+7050c 8 2610 73
+70514 4 2614 73
+70518 4 207 75
+7051c 8 184 75
+70524 28 185 75
+7054c 4 110 72
+70550 10 333 122
+70560 10 185 75
+70570 c 333 122
+7057c c 185 75
+70588 8 185 75
+70590 1c 2615 73
+705ac 4 110 72
+705b0 10 333 122
+705c0 c 254 121
+705cc c 2615 73
+705d8 4 192 75
+705dc 8 192 75
+705e4 4 177 136
+705e8 4 192 75
+705ec c 177 136
+705f8 14 2619 73
+7060c 14 2620 73
+FUNC 70648 378 0 google_breakpad::UTF16ToUTF8
+70648 10 234 73
+70658 4 235 73
+7065c c 234 73
+70668 4 235 73
+7066c 8 234 73
+70674 8 235 73
+7067c 8 235 73
+70684 4 92 57
+70688 10 192 139
+70698 8 159 130
+706a0 10 600 130
+706b0 4 72 132
+706b4 10 400 131
+706c4 4 72 132
+706c8 4 162 130
+706cc 4 72 132
+706d0 8 72 132
+706d8 8 163 130
+706e0 c 166 130
+706ec 4 248 73
+706f0 4 286 73
+706f4 10 242 73
+70704 8 246 73
+7070c 4 247 73
+70710 8 248 73
+70718 18 252 73
+70730 24 253 73
+70754 4 110 72
+70758 10 333 122
+70768 c 254 73
+70774 c 254 73
+70780 c 333 122
+7078c 10 256 73
+7079c 8 259 73
+707a4 4 258 73
+707a8 4 259 73
+707ac 8 258 73
+707b4 4 259 73
+707b8 24 260 73
+707dc 4 110 72
+707e0 10 333 122
+707f0 c 261 73
+707fc c 261 73
+70808 c 333 122
+70814 8 156 132
+7081c 8 260 73
+70824 8 265 73
+7082c 14 266 73
+70840 20 267 73
+70860 4 268 73
+70864 4 267 73
+70868 4 110 72
+7086c 10 333 122
+7087c c 268 73
+70888 10 268 73
+70898 c 333 122
+708a4 c 269 73
+708b0 c 269 73
+708bc 10 156 132
+708cc 8 267 73
+708d4 8 255 73
+708dc 10 272 73
+708ec 4 281 73
+708f0 4 276 73
+708f4 4 281 73
+708f8 c 453 131
+70904 8 283 73
+7090c 4 453 131
+70910 4 284 73
+70914 8 453 131
+7091c 4 285 73
+70920 c 453 131
+7092c 14 286 73
+70940 c 453 131
+7094c 4 291 73
+70950 c 453 131
+7095c 4 292 73
+70960 10 453 131
+70970 4 293 73
+70974 14 453 131
+70988 8 242 73
+70990 4 143 57
+70994 4 144 57
+70998 8 302 73
+709a0 20 303 73
+FUNC 709c0 214 0 google_breakpad::MinidumpModule::code_identifier
+709c0 14 1827 73
+709d4 8 1827 73
+709dc c 1828 73
+709e8 20 1829 73
+70a08 10 333 122
+70a18 8 1833 73
+70a20 14 1836 73
+70a34 4 1837 73
+70a38 20 1839 73
+70a58 10 333 122
+70a68 8 675 65
+70a70 c 1849 73
+70a7c 4 1851 73
+70a80 4 1849 73
+70a84 28 1851 73
+70aac 1c 1858 73
+70ac8 c 1859 73
+70ad4 10 1851 73
+70ae4 10 1873 73
+70af4 4 1874 73
+70af8 24 1881 73
+70b1c 4 110 72
+70b20 10 333 122
+70b30 c 1881 73
+70b3c c 1881 73
+70b48 8 156 132
+70b50 8 1881 73
+70b58 c 1886 73
+70b64 c 156 132
+70b70 20 1845 73
+70b90 10 333 122
+70ba0 8 1845 73
+70ba8 14 1846 73
+70bbc 18 1887 73
+FUNC 70bdc 1e4 0 google_breakpad::MinidumpModule::debug_identifier
+70bdc 18 1970 73
+70bf4 c 1970 73
+70c00 8 1971 73
+70c08 20 1972 73
+70c28 10 333 122
+70c38 c 1972 73
+70c44 8 1976 73
+70c4c 18 1977 73
+70c64 10 1979 73
+70c74 8 1982 73
+70c7c 18 1983 73
+70c94 64 2005 73
+70cf8 14 2007 73
+70d0c 1c 2017 73
+70d28 c 2018 73
+70d34 10 2033 73
+70d44 20 2033 73
+70d64 4 110 72
+70d68 10 333 122
+70d78 c 2033 73
+70d84 8 2033 73
+70d8c c 2035 73
+70d98 8 156 132
+70da0 20 2036 73
+FUNC 70dc8 168 0 google_breakpad::MinidumpModule::version
+70dc8 14 2039 73
+70ddc c 2039 73
+70de8 8 2040 73
+70df0 20 2041 73
+70e10 10 333 122
+70e20 8 2041 73
+70e28 18 2042 73
+70e40 10 2045 73
+70e50 24 2047 73
+70e74 2c 2054 73
+70ea0 c 2055 73
+70eac 10 2065 73
+70ebc 20 2065 73
+70edc 4 110 72
+70ee0 10 333 122
+70ef0 c 2065 73
+70efc 8 2065 73
+70f04 c 2067 73
+70f10 8 156 132
+70f18 18 2068 73
+FUNC 70f38 248 0 google_breakpad::MinidumpModule::debug_file
+70f38 18 1890 73
+70f50 8 1890 73
+70f58 c 1891 73
+70f64 20 1892 73
+70f84 10 333 122
+70f94 c 1892 73
+70fa0 8 1896 73
+70fa8 18 1897 73
+70fc0 10 1899 73
+70fd0 8 1901 73
+70fd8 14 1902 73
+70fec 10 1909 73
+70ffc 10 1910 73
+7100c 10 1917 73
+7101c 10 1924 73
+7102c c 1926 73
+71038 8 1929 73
+71040 4 1932 73
+71044 8 225 131
+7104c 4 112 132
+71050 4 225 131
+71054 4 481 101
+71058 4 225 131
+7105c 10 349 131
+7106c c 156 132
+71078 8 1943 73
+71080 8 1944 73
+71088 4 1949 73
+7108c 4 1945 73
+71090 8 116 143
+71098 4 1949 73
+7109c c 116 143
+710a8 4 1950 73
+710ac 10 1951 73
+710bc c 1955 73
+710c8 4 92 57
+710cc 4 348 131
+710d0 4 1955 73
+710d4 4 348 131
+710d8 10 349 131
+710e8 8 1955 73
+710f0 8 304 139
+710f8 10 1964 73
+71108 20 1964 73
+71128 4 110 72
+7112c 10 333 122
+7113c c 1964 73
+71148 8 1964 73
+71150 c 1966 73
+7115c 8 156 132
+71164 1c 1967 73
+FUNC 71188 50 0 std::priv::_Rb_tree<unsigned int, std::less<unsigned int>, std::pair<unsigned int const, google_breakpad::MinidumpThread*>, std::priv::_Select1st<std::pair<unsigned int const, google_breakpad::MinidumpThread*> >, std::priv::_MapTraitsT<std::pair<unsigned int const, google_breakpad::MinidumpThread*> >, std::allocator<std::pair<unsigned int const, google_breakpad::MinidumpThread*> > >::_M_erase
+71188 18 655 135
+711a0 4 657 135
+711a4 c 658 135
+711b0 4 659 135
+711b4 14 161 101
+711c8 10 664 135
+FUNC 711d8 5c 0 google_breakpad::MinidumpThreadList::~MinidumpThreadList
+711d8 c 1548 73
+711e4 c 1548 73
+711f0 4 1549 73
+711f4 4 1548 73
+711f8 4 1549 73
+711fc 8 42 143
+71204 8 1549 73
+7120c c 531 136
+71218 4 532 136
+7121c 8 1550 73
+71224 4 532 136
+71228 c 1550 73
+FUNC 71234 24 0 google_breakpad::MinidumpThreadList::~MinidumpThreadList
+71234 c 1548 73
+71240 4 1548 73
+71244 4 1550 73
+71248 4 1550 73
+7124c 8 1550 73
+71254 4 1550 73
+FUNC 71258 50 0 std::priv::_Rb_tree<long unsigned int, std::less<long unsigned int>, std::pair<long unsigned int const, google_breakpad::RangeMap<long unsigned int, unsigned int>::Range>, std::priv::_Select1st<std::pair<long unsigned int const, google_breakpad::RangeMap<long unsigned int, unsigned int>::Range> >, std::priv::_MapTraitsT<std::pair<long unsigned int const, google_breakpad::RangeMap<long unsigned int, unsigned int>::Range> >, std::allocator<std::pair<long unsigned int const, google_breakpad::RangeMap<long unsigned int, unsigned int>::Range> > >::_M_erase
+71258 18 655 135
+71270 4 657 135
+71274 c 658 135
+71280 4 659 135
+71284 14 161 101
+71298 10 664 135
+FUNC 712a8 3c 0 std::priv::_Rb_tree<long unsigned int, std::less<long unsigned int>, std::pair<long unsigned int const, google_breakpad::RangeMap<long unsigned int, unsigned int>::Range>, std::priv::_Select1st<std::pair<long unsigned int const, google_breakpad::RangeMap<long unsigned int, unsigned int>::Range> >, std::priv::_MapTraitsT<std::pair<long unsigned int const, google_breakpad::RangeMap<long unsigned int, unsigned int>::Range> >, std::allocator<std::pair<long unsigned int const, google_breakpad::RangeMap<long unsigned int, unsigned int>::Range> > >::clear
+712a8 8 530 136
+712b0 4 531 136
+712b4 4 530 136
+712b8 4 530 136
+712bc 4 531 136
+712c0 8 532 136
+712c8 4 533 136
+712cc 4 534 136
+712d0 4 535 136
+712d4 4 536 136
+712d8 c 538 136
+FUNC 712e4 6c 0 google_breakpad::MinidumpModuleList::~MinidumpModuleList
+712e4 c 2439 73
+712f0 c 2439 73
+712fc 4 2440 73
+71300 10 2439 73
+71310 4 2440 73
+71314 8 414 136
+7131c 8 2440 73
+71324 8 2441 73
+7132c 8 42 143
+71334 4 2441 73
+71338 8 2442 73
+71340 4 2441 73
+71344 c 2442 73
+FUNC 71358 24 0 google_breakpad::MinidumpModuleList::~MinidumpModuleList
+71358 c 2439 73
+71364 4 2439 73
+71368 4 2442 73
+7136c 4 2442 73
+71370 8 2442 73
+71378 4 2442 73
+FUNC 71384 78 0 google_breakpad::MinidumpMemoryList::~MinidumpMemoryList
+71384 c 2682 73
+71390 c 2682 73
+7139c 4 2683 73
+713a0 4 2682 73
+713a4 4 2683 73
+713a8 8 414 136
+713b0 8 2683 73
+713b8 8 2684 73
+713c0 8 42 143
+713c8 8 2684 73
+713d0 8 2685 73
+713d8 8 42 143
+713e0 4 2685 73
+713e4 8 2686 73
+713ec 4 2685 73
+713f0 c 2686 73
+FUNC 713fc 24 0 google_breakpad::MinidumpMemoryList::~MinidumpMemoryList
+713fc c 2682 73
+71408 4 2682 73
+7140c 4 2686 73
+71410 4 2686 73
+71414 8 2686 73
+7141c 4 2686 73
+FUNC 71420 58 0 std::priv::_Rb_tree<unsigned int, std::less<unsigned int>, std::pair<unsigned int const, google_breakpad::Minidump::MinidumpStreamInfo>, std::priv::_Select1st<std::pair<unsigned int const, google_breakpad::Minidump::MinidumpStreamInfo> >, std::priv::_MapTraitsT<std::pair<unsigned int const, google_breakpad::Minidump::MinidumpStreamInfo> >, std::allocator<std::pair<unsigned int const, google_breakpad::Minidump::MinidumpStreamInfo> > >::_M_erase
+71420 18 655 135
+71438 4 657 135
+7143c c 658 135
+71448 4 659 135
+7144c 8 51 124
+71454 14 161 101
+71468 10 664 135
+FUNC 71478 d4 0 google_breakpad::Minidump::~Minidump
+71478 c 3992 73
+71484 10 3992 73
+71494 8 3993 73
+7149c 24 3994 73
+714c0 10 333 122
+714d0 8 3994 73
+714d8 10 3996 73
+714e8 8 3997 73
+714f0 c 3997 73
+714fc 8 3999 73
+71504 8 42 143
+7150c 8 3999 73
+71514 8 4000 73
+7151c 8 531 136
+71524 c 532 136
+71530 8 4000 73
+71538 8 156 132
+71540 c 4001 73
+FUNC 7154c 24 0 google_breakpad::Minidump::~Minidump
+7154c c 3992 73
+71558 4 3992 73
+7155c 4 4001 73
+71560 4 4001 73
+71564 8 4001 73
+7156c 4 4001 73
+FUNC 71570 78 0 std::_M_init_noskip<char, std::char_traits<char> >
+71570 c 310 112
+7157c 4 310 112
+71580 18 311 112
+71598 4 312 112
+7159c 4 313 112
+715a0 14 315 112
+715b4 8 316 112
+715bc 8 319 112
+715c4 c 320 112
+715d0 4 174 110
+715d4 4 321 112
+715d8 4 174 110
+715dc c 321 112
+FUNC 715e8 134 0 google_breakpad::Minidump::SeekSet
+715e8 10 4445 73
+715f8 4 4448 73
+715fc 4 4449 73
+71600 8 4448 73
+71608 c 207 112
+71614 4 521 111
+71618 4 522 111
+7161c 8 521 111
+71624 8 176 110
+7162c 10 522 111
+7163c 4 4452 73
+71640 4 4458 73
+71644 14 4452 73
+71658 18 4453 73
+71670 c 4454 73
+7167c 20 4455 73
+7169c 4 110 72
+716a0 10 333 122
+716b0 10 4455 73
+716c0 c 333 122
+716cc c 4455 73
+716d8 8 4455 73
+716e0 10 156 132
+716f0 18 147 129
+71708 14 4459 73
+FUNC 7171c 270 0 google_breakpad::Minidump::SeekToStreamType
+7171c 14 4526 73
+71730 10 4526 73
+71740 4 4528 73
+71744 20 4528 73
+71764 10 333 122
+71774 8 4528 73
+7177c 4 4530 73
+71780 8 4532 73
+71788 20 4533 73
+717a8 10 333 122
+717b8 8 4533 73
+717c0 4 4534 73
+717c4 10 210 118
+717d4 4 168 136
+717d8 c 4538 73
+717e4 1c 4540 73
+71800 4 4541 73
+71804 4 4540 73
+71808 4 110 72
+7180c 10 333 122
+7181c c 254 121
+71828 c 333 122
+71834 8 4540 73
+7183c 4 4541 73
+71840 10 4544 73
+71850 4 4545 73
+71854 4 4544 73
+71858 8 4545 73
+71860 24 4546 73
+71884 4 110 72
+71888 10 333 122
+71898 10 254 121
+718a8 c 333 122
+718b4 10 254 121
+718c4 c 333 122
+718d0 8 254 121
+718d8 4 4549 73
+718dc 4 254 121
+718e0 8 4546 73
+718e8 8 4549 73
+718f0 10 202 139
+71900 14 4553 73
+71914 24 4554 73
+71938 4 110 72
+7193c 10 333 122
+7194c c 254 121
+71958 8 4554 73
+71960 4 4556 73
+71964 8 4559 73
+7196c 8 4561 73
+71974 18 4562 73
+FUNC 7198c 280 0 google_breakpad::Minidump::GetStream<google_breakpad::MinidumpException>
+7198c 18 4566 73
+719a4 8 4570 73
+719ac 4 4566 73
+719b0 4 4572 73
+719b4 24 4572 73
+719d8 4 110 72
+719dc 10 333 122
+719ec c 254 121
+719f8 c 333 122
+71a04 8 4572 73
+71a0c 4 4575 73
+71a10 8 4577 73
+71a18 24 4578 73
+71a3c 4 110 72
+71a40 10 333 122
+71a50 c 254 121
+71a5c 8 4578 73
+71a64 8 4579 73
+71a6c 10 210 118
+71a7c 4 197 136
+71a80 c 4583 73
+71a8c 24 4585 73
+71ab0 4 110 72
+71ab4 10 333 122
+71ac4 c 254 121
+71ad0 10 333 122
+71ae0 c 4592 73
+71aec 4 4595 73
+71af0 8 4596 73
+71af8 18 4600 73
+71b10 24 4601 73
+71b34 4 110 72
+71b38 10 333 122
+71b48 c 254 121
+71b54 8 4601 73
+71b5c c 4605 73
+71b68 8 4605 73
+71b70 4 4607 73
+71b74 14 4607 73
+71b88 4 4607 73
+71b8c 24 4608 73
+71bb0 4 110 72
+71bb4 10 333 122
+71bc4 c 254 121
+71bd0 8 4608 73
+71bd8 14 98 57
+71bec 4 4612 73
+71bf0 4 4613 73
+71bf4 4 4614 73
+71bf8 14 4615 73
+FUNC 71c0c 18 0 google_breakpad::Minidump::GetException
+71c0c 8 4249 73
+71c14 8 4251 73
+71c1c 8 4252 73
+FUNC 71c24 280 0 google_breakpad::Minidump::GetStream<google_breakpad::MinidumpSystemInfo>
+71c24 18 4566 73
+71c3c 8 4570 73
+71c44 4 4566 73
+71c48 4 4572 73
+71c4c 24 4572 73
+71c70 4 110 72
+71c74 10 333 122
+71c84 c 254 121
+71c90 c 333 122
+71c9c 8 4572 73
+71ca4 4 4575 73
+71ca8 8 4577 73
+71cb0 24 4578 73
+71cd4 4 110 72
+71cd8 10 333 122
+71ce8 c 254 121
+71cf4 8 4578 73
+71cfc 8 4579 73
+71d04 10 210 118
+71d14 4 197 136
+71d18 c 4583 73
+71d24 24 4585 73
+71d48 4 110 72
+71d4c 10 333 122
+71d5c c 254 121
+71d68 10 333 122
+71d78 c 4592 73
+71d84 4 4595 73
+71d88 8 4596 73
+71d90 18 4600 73
+71da8 24 4601 73
+71dcc 4 110 72
+71dd0 10 333 122
+71de0 c 254 121
+71dec 8 4601 73
+71df4 c 4605 73
+71e00 8 4605 73
+71e08 4 4607 73
+71e0c 14 4607 73
+71e20 4 4607 73
+71e24 24 4608 73
+71e48 4 110 72
+71e4c 10 333 122
+71e5c c 254 121
+71e68 8 4608 73
+71e70 14 98 57
+71e84 4 4612 73
+71e88 4 4613 73
+71e8c 4 4614 73
+71e90 14 4615 73
+FUNC 71ea4 18 0 google_breakpad::Minidump::GetSystemInfo
+71ea4 8 4260 73
+71eac 8 4262 73
+71eb4 8 4263 73
+FUNC 71ebc 280 0 google_breakpad::Minidump::GetStream<google_breakpad::MinidumpThreadList>
+71ebc 18 4566 73
+71ed4 8 4570 73
+71edc 4 4566 73
+71ee0 4 4572 73
+71ee4 24 4572 73
+71f08 4 110 72
+71f0c 10 333 122
+71f1c c 254 121
+71f28 c 333 122
+71f34 8 4572 73
+71f3c 4 4575 73
+71f40 8 4577 73
+71f48 24 4578 73
+71f6c 4 110 72
+71f70 10 333 122
+71f80 c 254 121
+71f8c 8 4578 73
+71f94 8 4579 73
+71f9c 10 210 118
+71fac 4 197 136
+71fb0 c 4583 73
+71fbc 24 4585 73
+71fe0 4 110 72
+71fe4 10 333 122
+71ff4 c 254 121
+72000 10 333 122
+72010 c 4592 73
+7201c 4 4595 73
+72020 8 4596 73
+72028 18 4600 73
+72040 24 4601 73
+72064 4 110 72
+72068 10 333 122
+72078 c 254 121
+72084 8 4601 73
+7208c c 4605 73
+72098 8 4605 73
+720a0 4 4607 73
+720a4 14 4607 73
+720b8 4 4607 73
+720bc 24 4608 73
+720e0 4 110 72
+720e4 10 333 122
+720f4 c 254 121
+72100 8 4608 73
+72108 14 98 57
+7211c 4 4612 73
+72120 4 4613 73
+72124 4 4614 73
+72128 14 4615 73
+FUNC 7213c 18 0 google_breakpad::Minidump::GetThreadList
+7213c 8 4231 73
+72144 8 4233 73
+7214c 8 4234 73
+FUNC 72154 280 0 google_breakpad::Minidump::GetStream<google_breakpad::MinidumpModuleList>
+72154 18 4566 73
+7216c 8 4570 73
+72174 4 4566 73
+72178 4 4572 73
+7217c 24 4572 73
+721a0 4 110 72
+721a4 10 333 122
+721b4 c 254 121
+721c0 c 333 122
+721cc 8 4572 73
+721d4 4 4575 73
+721d8 8 4577 73
+721e0 24 4578 73
+72204 4 110 72
+72208 10 333 122
+72218 c 254 121
+72224 8 4578 73
+7222c 8 4579 73
+72234 10 210 118
+72244 4 197 136
+72248 c 4583 73
+72254 24 4585 73
+72278 4 110 72
+7227c 10 333 122
+7228c c 254 121
+72298 10 333 122
+722a8 c 4592 73
+722b4 4 4595 73
+722b8 8 4596 73
+722c0 18 4600 73
+722d8 24 4601 73
+722fc 4 110 72
+72300 10 333 122
+72310 c 254 121
+7231c 8 4601 73
+72324 c 4605 73
+72330 8 4605 73
+72338 4 4607 73
+7233c 14 4607 73
+72350 4 4607 73
+72354 24 4608 73
+72378 4 110 72
+7237c 10 333 122
+7238c c 254 121
+72398 8 4608 73
+723a0 14 98 57
+723b4 4 4612 73
+723b8 4 4613 73
+723bc 4 4614 73
+723c0 14 4615 73
+FUNC 723d4 18 0 google_breakpad::Minidump::GetModuleList
+723d4 8 4237 73
+723dc 8 4239 73
+723e4 8 4240 73
+FUNC 723ec 280 0 google_breakpad::Minidump::GetStream<google_breakpad::MinidumpMemoryList>
+723ec 18 4566 73
+72404 8 4570 73
+7240c 4 4566 73
+72410 4 4572 73
+72414 24 4572 73
+72438 4 110 72
+7243c 10 333 122
+7244c c 254 121
+72458 c 333 122
+72464 8 4572 73
+7246c 4 4575 73
+72470 8 4577 73
+72478 24 4578 73
+7249c 4 110 72
+724a0 10 333 122
+724b0 c 254 121
+724bc 8 4578 73
+724c4 8 4579 73
+724cc 10 210 118
+724dc 4 197 136
+724e0 c 4583 73
+724ec 24 4585 73
+72510 4 110 72
+72514 10 333 122
+72524 c 254 121
+72530 10 333 122
+72540 c 4592 73
+7254c 4 4595 73
+72550 8 4596 73
+72558 18 4600 73
+72570 24 4601 73
+72594 4 110 72
+72598 10 333 122
+725a8 c 254 121
+725b4 8 4601 73
+725bc c 4605 73
+725c8 8 4605 73
+725d0 4 4607 73
+725d4 14 4607 73
+725e8 4 4607 73
+725ec 24 4608 73
+72610 4 110 72
+72614 10 333 122
+72624 c 254 121
+72630 8 4608 73
+72638 14 98 57
+7264c 4 4612 73
+72650 4 4613 73
+72654 4 4614 73
+72658 14 4615 73
+FUNC 7266c 18 0 google_breakpad::Minidump::GetMemoryList
+7266c 8 4243 73
+72674 8 4245 73
+7267c 8 4246 73
+FUNC 72684 370 0 google_breakpad::Minidump::Open
+72684 1c 4004 73
+726a0 8 4004 73
+726a8 10 4005 73
+726b8 1c 4006 73
+726d4 4 110 72
+726d8 10 333 122
+726e8 c 4006 73
+726f4 8 4006 73
+726fc 18 4010 73
+72714 8 4013 73
+7271c 4 92 108
+72720 4 4013 73
+72724 4 92 108
+72728 4 464 105
+7272c 4 61 104
+72730 8 92 108
+72738 4 87 112
+7273c 8 92 108
+72744 8 87 112
+7274c 8 87 112
+72754 4 88 112
+72758 4 87 112
+7275c 4 88 112
+72760 4 87 112
+72764 4 88 112
+72768 c 464 105
+72774 c 464 105
+72780 2c 34 128
+727ac c 61 104
+727b8 8 61 104
+727c0 8 61 104
+727c8 4 63 104
+727cc 2c 61 104
+727f8 10 61 104
+72808 10 61 104
+72818 10 61 104
+72828 10 61 104
+72838 24 61 104
+7285c 4 63 104
+72860 10 347 117
+72870 14 736 104
+72884 4 746 104
+72888 8 747 104
+72890 8 748 104
+72898 8 63 104
+728a0 c 465 105
+728ac 18 169 105
+728c4 4 4013 73
+728c8 14 4014 73
+728dc 10 4015 73
+728ec c 4016 73
+728f8 1c 4017 73
+72914 4 110 72
+72918 10 333 122
+72928 10 4017 73
+72938 c 333 122
+72944 10 4018 73
+72954 c 333 122
+72960 c 4018 73
+7296c 8 4017 73
+72974 8 156 132
+7297c 8 4019 73
+72984 10 467 105
+72994 18 4022 73
+729ac 4 110 72
+729b0 10 333 122
+729c0 c 4022 73
+729cc 8 4022 73
+729d4 4 4023 73
+729d8 1c 4024 73
+FUNC 729f4 8c 0 google_breakpad::Minidump::Tell
+729f4 10 4461 73
+72a04 4 4462 73
+72a08 4 4463 73
+72a0c 4 4462 73
+72a10 8 4462 73
+72a18 8 207 112
+72a20 10 497 111
+72a30 4 499 111
+72a34 4 176 110
+72a38 c 499 111
+72a44 18 147 129
+72a5c 8 499 111
+72a64 10 499 111
+72a74 c 4475 73
+FUNC 72a80 134 0 google_breakpad::Minidump::GetContextCPUFlagsFromSystemInfo
+72a80 10 4026 73
+72a90 4 4026 73
+72a94 4 4028 73
+72a98 4 4026 73
+72a9c 4 4031 73
+72aa0 4 4032 73
+72aa4 4 4031 73
+72aa8 4 4032 73
+72aac 14 4039 73
+72ac0 4 4039 73
+72ac4 c 4039 73
+72ad0 8 675 65
+72ad8 14 4042 73
+72aec 4 4053 73
+72af0 c 4042 73
+72afc 4 4047 73
+72b00 8 4042 73
+72b08 8 4044 73
+72b10 4 4042 73
+72b14 4 4062 73
+72b18 8 4042 73
+72b20 8 4059 73
+72b28 18 4042 73
+72b40 8 4077 73
+72b48 10 4042 73
+72b58 8 4056 73
+72b60 8 4050 73
+72b68 8 4065 73
+72b70 8 4068 73
+72b78 8 4083 73
+72b80 4 4084 73
+72b84 4 4089 73
+72b88 8 4095 73
+72b90 c 4096 73
+72b9c 4 4095 73
+72ba0 14 4096 73
+FUNC 72bb4 1b0 0 std::basic_istream<char, std::char_traits<char> >::read
+72bb4 24 783 111
+72bd8 4 207 112
+72bdc 4 785 111
+72be0 8 207 112
+72be8 4 787 111
+72bec 8 787 111
+72bf4 4 175 110
+72bf8 8 787 111
+72c00 10 802 111
+72c10 c 804 111
+72c1c 4 175 110
+72c20 4 804 111
+72c24 10 805 111
+72c34 10 789 111
+72c44 4 641 111
+72c48 4 640 111
+72c4c c 690 111
+72c58 c 645 111
+72c64 28 714 111
+72c8c 4 703 111
+72c90 14 704 111
+72ca4 8 640 111
+72cac 20 799 111
+72ccc 8 796 111
+72cd4 4 652 111
+72cd8 c 655 111
+72ce4 4 172 140
+72ce8 c 172 140
+72cf4 4 658 111
+72cf8 4 91 129
+72cfc 4 657 111
+72d00 4 671 111
+72d04 8 91 129
+72d0c 4 682 111
+72d10 4 671 111
+72d14 10 235 129
+72d24 4 234 129
+72d28 c 235 129
+72d34 14 690 111
+72d48 1c 808 111
+FUNC 72d64 158 0 google_breakpad::Minidump::ReadBytes
+72d64 10 4413 73
+72d74 4 4413 73
+72d78 4 4416 73
+72d7c 4 4417 73
+72d80 8 4416 73
+72d88 10 4419 73
+72d98 8 4421 73
+72da0 14 4422 73
+72db4 c 4423 73
+72dc0 20 4424 73
+72de0 4 110 72
+72de4 10 333 122
+72df4 10 4424 73
+72e04 c 333 122
+72e10 c 4424 73
+72e1c 8 4424 73
+72e24 c 156 132
+72e30 4 4436 73
+72e34 4 4441 73
+72e38 4 4436 73
+72e3c 24 4437 73
+72e60 4 110 72
+72e64 10 333 122
+72e74 10 263 121
+72e84 c 333 122
+72e90 c 263 121
+72e9c 8 4437 73
+72ea4 4 4438 73
+72ea8 14 4442 73
+FUNC 72ebc 14f4 0 google_breakpad::MinidumpContext::Read
+72ebc 14 423 73
+72ed0 4 424 73
+72ed4 8 423 73
+72edc 4 443 73
+72ee0 8 448 73
+72ee8 28 449 73
+72f10 10 333 122
+72f20 8 449 73
+72f28 18 451 73
+72f40 14 453 73
+72f54 4 452 73
+72f58 1c 454 73
+72f74 10 333 122
+72f84 14 458 73
+72f98 8 459 73
+72fa0 c 461 73
+72fac 4 462 73
+72fb0 14 463 73
+72fc4 14 464 73
+72fd8 1c 466 73
+72ff4 10 333 122
+73004 c 471 73
+73010 1c 474 73
+7302c 10 333 122
+7303c 10 480 73
+7304c 1c 481 73
+73068 10 333 122
+73078 10 481 73
+73088 4 480 73
+7308c 8 155 73
+73094 8 156 73
+7309c 4 157 73
+730a0 8 487 73
+730a8 14 492 73
+730bc 8 493 73
+730c4 8 494 73
+730cc 8 495 73
+730d4 8 496 73
+730dc 8 497 73
+730e4 8 498 73
+730ec 8 500 73
+730f4 8 501 73
+730fc 8 502 73
+73104 8 503 73
+7310c 8 504 73
+73114 8 505 73
+7311c 8 506 73
+73124 8 507 73
+7312c 8 508 73
+73134 8 509 73
+7313c 8 510 73
+73144 8 511 73
+7314c 8 512 73
+73154 8 513 73
+7315c 8 514 73
+73164 8 515 73
+7316c 8 516 73
+73174 8 517 73
+7317c 8 518 73
+73184 8 519 73
+7318c 8 520 73
+73194 8 521 73
+7319c 8 522 73
+731a4 8 523 73
+731ac 8 524 73
+731b4 8 525 73
+731bc 8 526 73
+731c4 8 527 73
+731cc 8 528 73
+731d4 8 529 73
+731dc 8 164 73
+731e4 c 165 73
+731f0 8 535 73
+731f8 8 539 73
+73200 8 540 73
+73208 8 541 73
+73210 8 542 73
+73218 8 543 73
+73220 8 544 73
+73228 c 547 73
+73234 10 549 73
+73244 8 550 73
+7324c 1c 554 73
+73268 24 555 73
+7328c 14 558 73
+732a0 8 559 73
+732a8 c 561 73
+732b4 18 562 73
+732cc 8 564 73
+732d4 14 565 73
+732e8 14 566 73
+732fc 24 568 73
+73320 10 333 122
+73330 10 573 73
+73340 24 576 73
+73364 10 333 122
+73374 8 583 73
+7337c 4 589 73
+73380 4 583 73
+73384 10 589 73
+73394 4 588 73
+73398 24 590 73
+733bc 10 333 122
+733cc 14 596 73
+733e0 24 597 73
+73404 10 333 122
+73414 14 600 73
+73428 10 602 73
+73438 8 603 73
+73440 c 607 73
+7344c 8 604 73
+73454 10 609 73
+73464 8 610 73
+7346c 8 611 73
+73474 8 612 73
+7347c 8 613 73
+73484 c 617 73
+73490 8 614 73
+73498 10 621 73
+734a8 8 164 73
+734b0 c 165 73
+734bc 8 622 73
+734c4 c 164 73
+734d0 8 165 73
+734d8 8 630 73
+734e0 c 633 73
+734ec 14 637 73
+73500 24 639 73
+73524 10 333 122
+73534 10 643 73
+73544 8 644 73
+7354c 24 649 73
+73570 4 651 73
+73574 4 649 73
+73578 10 333 122
+73588 8 649 73
+73590 18 651 73
+735a8 1c 652 73
+735c4 14 333 122
+735d8 14 655 73
+735ec 8 656 73
+735f4 18 658 73
+7360c c 660 73
+73618 4 661 73
+7361c 14 662 73
+73630 14 663 73
+73644 1c 665 73
+73660 10 333 122
+73670 10 670 73
+73680 1c 673 73
+7369c 10 333 122
+736ac 8 680 73
+736b4 4 686 73
+736b8 4 680 73
+736bc 10 686 73
+736cc 4 685 73
+736d0 1c 687 73
+736ec 10 333 122
+736fc 14 693 73
+73710 1c 694 73
+7372c 10 333 122
+7373c 18 698 73
+73754 c 718 73
+73760 14 722 73
+73774 1c 724 73
+73790 10 333 122
+737a0 c 703 73
+737ac 8 700 73
+737b4 10 705 73
+737c4 8 706 73
+737cc 8 707 73
+737d4 4 155 73
+737d8 8 156 73
+737e0 4 157 73
+737e4 8 164 73
+737ec c 165 73
+737f8 c 708 73
+73804 4 333 122
+73808 8 724 73
+73810 c 728 73
+7381c c 98 57
+73828 1c 731 73
+73844 24 732 73
+73868 10 333 122
+73878 14 735 73
+7388c 8 736 73
+73894 c 738 73
+738a0 4 739 73
+738a4 4 744 73
+738a8 c 746 73
+738b4 8 747 73
+738bc 8 751 73
+738c4 14 752 73
+738d8 14 753 73
+738ec 24 755 73
+73910 14 333 122
+73924 44 764 73
+73968 8 766 73
+73970 24 767 73
+73994 4 110 72
+73998 10 333 122
+739a8 10 254 121
+739b8 c 333 122
+739c4 c 263 121
+739d0 14 772 73
+739e4 4 777 73
+739e8 4 772 73
+739ec 4 777 73
+739f0 4 783 73
+739f4 4 777 73
+739f8 10 783 73
+73a08 4 782 73
+73a0c 24 784 73
+73a30 10 333 122
+73a40 14 790 73
+73a54 24 791 73
+73a78 10 333 122
+73a88 14 795 73
+73a9c 8 797 73
+73aa4 8 798 73
+73aac 8 799 73
+73ab4 8 800 73
+73abc 8 801 73
+73ac4 8 802 73
+73acc 8 803 73
+73ad4 8 804 73
+73adc 8 805 73
+73ae4 8 806 73
+73aec 8 807 73
+73af4 8 808 73
+73afc 8 809 73
+73b04 8 812 73
+73b0c 8 813 73
+73b14 8 814 73
+73b1c 8 815 73
+73b24 8 816 73
+73b2c 8 817 73
+73b34 8 818 73
+73b3c 8 819 73
+73b44 8 820 73
+73b4c 8 821 73
+73b54 8 822 73
+73b5c 8 823 73
+73b64 8 824 73
+73b6c 8 825 73
+73b74 8 826 73
+73b7c 8 827 73
+73b84 8 828 73
+73b8c 10 833 73
+73b9c 8 839 73
+73ba4 24 840 73
+73bc8 4 110 72
+73bcc 10 333 122
+73bdc 10 254 121
+73bec c 333 122
+73bf8 c 263 121
+73c04 14 845 73
+73c18 4 850 73
+73c1c 4 845 73
+73c20 4 850 73
+73c24 4 856 73
+73c28 4 850 73
+73c2c 10 856 73
+73c3c 4 855 73
+73c40 24 857 73
+73c64 10 333 122
+73c74 14 863 73
+73c88 24 864 73
+73cac 10 333 122
+73cbc 14 876 73
+73cd0 10 878 73
+73ce0 8 879 73
+73ce8 c 883 73
+73cf4 8 880 73
+73cfc 10 885 73
+73d0c 8 886 73
+73d14 8 887 73
+73d1c 8 888 73
+73d24 8 889 73
+73d2c 8 890 73
+73d34 c 894 73
+73d40 8 891 73
+73d48 10 898 73
+73d58 8 164 73
+73d60 c 165 73
+73d6c 8 899 73
+73d74 c 164 73
+73d80 8 165 73
+73d88 8 906 73
+73d90 10 909 73
+73da0 8 915 73
+73da8 24 916 73
+73dcc 4 110 72
+73dd0 10 333 122
+73de0 10 254 121
+73df0 c 333 122
+73dfc c 263 121
+73e08 18 921 73
+73e20 8 926 73
+73e28 4 932 73
+73e2c 4 926 73
+73e30 c 932 73
+73e3c 4 931 73
+73e40 24 933 73
+73e64 10 333 122
+73e74 14 939 73
+73e88 24 940 73
+73eac 10 333 122
+73ebc 1c 944 73
+73ed8 c 949 73
+73ee4 8 946 73
+73eec 10 951 73
+73efc 8 952 73
+73f04 8 953 73
+73f0c 8 954 73
+73f14 8 955 73
+73f1c 8 956 73
+73f24 c 960 73
+73f30 8 957 73
+73f38 8 962 73
+73f40 8 963 73
+73f48 10 965 73
+73f58 8 971 73
+73f60 24 972 73
+73f84 4 110 72
+73f88 10 333 122
+73f98 10 254 121
+73fa8 c 333 122
+73fb4 c 263 121
+73fc0 14 977 73
+73fd4 4 982 73
+73fd8 4 977 73
+73fdc 4 982 73
+73fe0 4 988 73
+73fe4 4 982 73
+73fe8 10 988 73
+73ff8 4 987 73
+73ffc 24 989 73
+74020 10 333 122
+74030 14 995 73
+74044 24 996 73
+74068 10 333 122
+74078 8 996 73
+74080 8 98 57
+74088 18 1000 73
+740a0 10 1020 73
+740b0 c 1005 73
+740bc 8 1002 73
+740c4 10 1007 73
+740d4 8 1008 73
+740dc c 1012 73
+740e8 c 1009 73
+740f4 c 1017 73
+74100 c 1014 73
+7410c 8 1026 73
+74114 24 1027 73
+74138 4 110 72
+7413c 10 333 122
+7414c 10 254 121
+7415c c 333 122
+74168 c 263 121
+74174 8 1027 73
+7417c 18 1034 73
+74194 8 1039 73
+7419c 4 1045 73
+741a0 4 1039 73
+741a4 c 1045 73
+741b0 4 1044 73
+741b4 24 1046 73
+741d8 10 333 122
+741e8 14 1052 73
+741fc 24 1053 73
+74220 10 333 122
+74230 8 1053 73
+74238 8 98 57
+74240 1c 1057 73
+7425c c 1062 73
+74268 8 1059 73
+74270 10 1064 73
+74280 8 1065 73
+74288 8 1069 73
+74290 c 1070 73
+7429c 8 1066 73
+742a4 10 1072 73
+742b4 8 1073 73
+742bc 8 1074 73
+742c4 8 1075 73
+742cc 8 1076 73
+742d4 c 1080 73
+742e0 8 1077 73
+742e8 8 1082 73
+742f0 8 1083 73
+742f8 c 1085 73
+74304 8 98 57
+7430c 10 1099 73
+7431c 8 98 57
+74324 20 1093 73
+74344 4 1094 73
+74348 4 1093 73
+7434c 4 110 72
+74350 10 333 122
+74360 c 1094 73
+7436c c 1094 73
+74378 8 156 132
+74380 8 1093 73
+74388 8 733 73
+74390 8 1102 73
+74398 4 1103 73
+7439c 14 1104 73
+FUNC 743b0 170 0 google_breakpad::MinidumpThread::GetContext
+743b0 10 1448 73
+743c0 4 1448 73
+743c4 8 1449 73
+743cc 20 1450 73
+743ec 4 1451 73
+743f0 4 1450 73
+743f4 10 333 122
+74404 8 1450 73
+7440c 4 1451 73
+74410 8 1454 73
+74418 14 1455 73
+7442c 24 1456 73
+74450 10 333 122
+74460 8 1456 73
+74468 4 1457 73
+7446c 10 1460 73
+7447c 14 417 73
+74490 4 1462 73
+74494 8 92 57
+7449c c 1462 73
+744a8 4 1462 73
+744ac 24 1463 73
+744d0 10 333 122
+744e0 8 1463 73
+744e8 c 1464 73
+744f4 4 143 57
+744f8 4 1467 73
+744fc 4 1467 73
+74500 4 144 57
+74504 4 1467 73
+74508 4 1470 73
+7450c 14 1471 73
+FUNC 74520 170 0 google_breakpad::MinidumpException::GetContext
+74520 10 2946 73
+74530 4 2946 73
+74534 8 2947 73
+7453c 20 2948 73
+7455c 4 2949 73
+74560 4 2948 73
+74564 10 333 122
+74574 8 2948 73
+7457c 4 2949 73
+74580 8 2952 73
+74588 14 2953 73
+7459c 24 2954 73
+745c0 10 333 122
+745d0 8 2954 73
+745d8 4 2955 73
+745dc 10 2958 73
+745ec 14 417 73
+74600 4 2962 73
+74604 8 92 57
+7460c c 2962 73
+74618 4 2962 73
+7461c 24 2963 73
+74640 10 333 122
+74650 8 2963 73
+74658 c 2964 73
+74664 4 143 57
+74668 4 2967 73
+7466c 4 2967 73
+74670 4 144 57
+74674 4 2967 73
+74678 4 2970 73
+7467c 14 2971 73
+FUNC 74690 240 0 google_breakpad::MinidumpThread::Read
+74690 18 1386 73
+746a8 4 1386 73
+746ac 8 1388 73
+746b4 c 1388 73
+746c0 4 1390 73
+746c4 4 1389 73
+746c8 4 1390 73
+746cc c 1390 73
+746d8 8 1395 73
+746e0 4 1391 73
+746e4 4 1395 73
+746e8 4 1393 73
+746ec 14 1395 73
+74700 24 1396 73
+74724 10 333 122
+74734 8 1396 73
+7473c 4 1397 73
+74740 14 1400 73
+74754 8 1401 73
+7475c 8 1402 73
+74764 8 1403 73
+7476c 8 1404 73
+74774 8 1405 73
+7477c 8 189 73
+74784 8 190 73
+7478c 8 1407 73
+74794 8 1412 73
+7479c 4 1412 73
+747a0 4 1411 73
+747a4 8 1413 73
+747ac 8 1412 73
+747b4 20 1416 73
+747d4 4 1417 73
+747d8 4 1416 73
+747dc 4 110 72
+747e0 10 333 122
+747f0 c 1417 73
+747fc 8 1417 73
+74804 4 1418 73
+74808 8 1417 73
+74810 c 333 122
+7481c c 1418 73
+74828 8 1418 73
+74830 4 1419 73
+74834 8 1418 73
+7483c c 333 122
+74848 c 1419 73
+74854 c 1419 73
+74860 18 156 132
+74878 8 1416 73
+74880 8 1425 73
+74888 4 1426 73
+7488c c 1421 73
+74898 8 1421 73
+748a0 4 1421 73
+748a4 10 1422 73
+748b4 1c 1427 73
+FUNC 748d0 268 0 google_breakpad::MinidumpModule::Read
+748d0 14 1723 73
+748e4 4 1723 73
+748e8 8 1725 73
+748f0 8 156 132
+748f8 8 1725 73
+74900 4 1727 73
+74904 4 1726 73
+74908 4 1727 73
+7490c 8 304 139
+74914 8 1727 73
+7491c 4 1730 73
+74920 4 1729 73
+74924 4 1728 73
+74928 4 1729 73
+7492c 4 1730 73
+74930 8 304 139
+74938 8 1730 73
+74940 8 1737 73
+74948 4 1731 73
+7494c 4 1737 73
+74950 4 1733 73
+74954 4 1737 73
+74958 4 1734 73
+7495c 4 1735 73
+74960 c 1737 73
+7496c 24 1738 73
+74990 10 333 122
+749a0 8 1738 73
+749a8 4 1739 73
+749ac 14 1742 73
+749c0 8 1743 73
+749c8 8 1744 73
+749d0 8 1745 73
+749d8 8 1746 73
+749e0 8 1747 73
+749e8 8 1748 73
+749f0 8 1749 73
+749f8 8 1750 73
+74a00 8 1751 73
+74a08 8 1752 73
+74a10 8 1753 73
+74a18 8 1754 73
+74a20 8 1755 73
+74a28 8 1756 73
+74a30 8 1757 73
+74a38 8 1758 73
+74a40 8 1759 73
+74a48 8 1760 73
+74a50 8 1761 73
+74a58 8 1762 73
+74a60 8 1768 73
+74a68 8 1770 73
+74a70 8 1768 73
+74a78 20 1771 73
+74a98 4 1772 73
+74a9c 4 1771 73
+74aa0 4 110 72
+74aa4 10 333 122
+74ab4 c 1772 73
+74ac0 8 1772 73
+74ac8 4 1773 73
+74acc 8 1772 73
+74ad4 c 333 122
+74ae0 c 1773 73
+74aec c 1773 73
+74af8 c 156 132
+74b04 4 1774 73
+74b08 4 156 132
+74b0c 8 1771 73
+74b14 4 1774 73
+74b18 8 1777 73
+74b20 18 1779 73
+FUNC 74b38 18c 0 google_breakpad::MinidumpException::Read
+74b38 10 2888 73
+74b48 8 2888 73
+74b50 8 2890 73
+74b58 c 2890 73
+74b64 4 2891 73
+74b68 4 2895 73
+74b6c 4 2893 73
+74b70 4 2895 73
+74b74 24 2896 73
+74b98 4 110 72
+74b9c 10 333 122
+74bac 8 254 121
+74bb4 4 2898 73
+74bb8 8 254 121
+74bc0 c 333 122
+74bcc c 263 121
+74bd8 8 2896 73
+74be0 4 2898 73
+74be4 1c 2901 73
+74c00 24 2902 73
+74c24 10 333 122
+74c34 8 2902 73
+74c3c 4 2903 73
+74c40 14 2906 73
+74c54 10 2907 73
+74c64 8 2910 73
+74c6c 8 2911 73
+74c74 8 2912 73
+74c7c 8 2913 73
+74c84 8 2914 73
+74c8c c 2920 73
+74c98 8 2917 73
+74ca0 8 2922 73
+74ca8 8 2925 73
+74cb0 14 2927 73
+FUNC 74cc4 1f4 0 google_breakpad::MinidumpSystemInfo::Read
+74cc4 10 3106 73
+74cd4 8 3106 73
+74cdc 8 3108 73
+74ce4 8 156 132
+74cec 8 3108 73
+74cf4 4 3110 73
+74cf8 4 3109 73
+74cfc 4 3110 73
+74d00 8 156 132
+74d08 8 3110 73
+74d10 4 3111 73
+74d14 4 3115 73
+74d18 4 3113 73
+74d1c 4 3115 73
+74d20 24 3116 73
+74d44 4 110 72
+74d48 10 333 122
+74d58 10 254 121
+74d68 c 333 122
+74d74 8 263 121
+74d7c 4 3118 73
+74d80 4 263 121
+74d84 8 3116 73
+74d8c 4 3118 73
+74d90 1c 3121 73
+74dac 24 3122 73
+74dd0 10 333 122
+74de0 8 3122 73
+74de8 4 3123 73
+74dec 14 3126 73
+74e00 c 3127 73
+74e0c 8 3128 73
+74e14 8 3129 73
+74e1c 8 3132 73
+74e24 8 3133 73
+74e2c 8 3134 73
+74e34 8 3135 73
+74e3c 8 3136 73
+74e44 8 3137 73
+74e4c 14 3140 73
+74e60 10 3149 73
+74e70 14 3143 73
+74e84 8 3144 73
+74e8c 8 3145 73
+74e94 8 3146 73
+74e9c 8 3153 73
+74ea4 14 3155 73
+FUNC 74eb8 2c8 0 google_breakpad::Minidump::ReadString
+74eb8 14 4478 73
+74ecc 8 4478 73
+74ed4 c 4479 73
+74ee0 20 4480 73
+74f00 14 333 122
+74f14 c 4483 73
+74f20 20 4484 73
+74f40 4 110 72
+74f44 10 333 122
+74f54 c 259 121
+74f60 4 4484 73
+74f64 4 4485 73
+74f68 4 4484 73
+74f6c 4 4485 73
+74f70 1c 4489 73
+74f8c 20 4490 73
+74fac 4 110 72
+74fb0 10 333 122
+74fc0 8 4494 73
+74fc8 8 4495 73
+74fd0 c 4497 73
+74fdc 20 4498 73
+74ffc 4 110 72
+75000 10 333 122
+75010 10 254 121
+75020 c 333 122
+7502c 4 4504 73
+75030 4 4502 73
+75034 c 4504 73
+75040 20 4505 73
+75060 4 110 72
+75064 10 333 122
+75074 10 254 121
+75084 c 333 122
+75090 10 254 121
+750a0 c 333 122
+750ac 4 4511 73
+750b0 8 116 143
+750b8 4 4511 73
+750bc c 116 143
+750c8 4 4513 73
+750cc 14 4514 73
+750e0 4 4514 73
+750e4 20 4515 73
+75104 4 110 72
+75108 10 333 122
+75118 10 254 121
+75128 c 333 122
+75134 8 259 121
+7513c 4 4517 73
+75140 4 259 121
+75144 8 4515 73
+7514c 4 4517 73
+75150 10 4521 73
+75160 8 304 139
+75168 18 4522 73
+FUNC 75180 238 0 google_breakpad::MinidumpMemoryRegion::GetMemory
+75180 14 1213 73
+75194 4 1213 73
+75198 8 1214 73
+751a0 24 1215 73
+751c4 10 333 122
+751d4 8 1215 73
+751dc 8 1219 73
+751e4 10 1220 73
+751f4 20 1221 73
+75214 10 333 122
+75224 14 1225 73
+75238 20 1226 73
+75258 14 333 122
+7526c 18 1230 73
+75284 20 1231 73
+752a4 4 110 72
+752a8 10 333 122
+752b8 4 1232 73
+752bc 10 254 121
+752cc c 333 122
+752d8 c 254 121
+752e4 8 1231 73
+752ec 4 1234 73
+752f0 4 1238 73
+752f4 4 1238 73
+752f8 4 92 57
+752fc 8 1238 73
+75304 4 1238 73
+75308 10 116 143
+75318 4 92 57
+7531c 4 1240 73
+75320 14 1240 73
+75334 4 1240 73
+75338 20 1241 73
+75358 10 333 122
+75368 8 1241 73
+75370 c 1242 73
+7537c 4 143 57
+75380 4 1245 73
+75384 4 1245 73
+75388 4 144 57
+7538c 8 1245 73
+75394 10 1222 73
+753a4 14 1249 73
+FUNC 753b8 21c 0 google_breakpad::MinidumpMemoryRegion::GetMemoryAtAddressInternal<unsigned char>
+753b8 14 1279 73
+753cc c 1279 73
+753d8 4 1281 73
+753dc 24 1281 73
+75400 10 333 122
+75410 8 1281 73
+75418 4 1284 73
+7541c 8 1286 73
+75424 24 1287 73
+75448 10 333 122
+75458 8 1287 73
+75460 4 1289 73
+75464 10 1293 73
+75474 10 1293 73
+75484 14 1293 73
+75498 8 1304 73
+754a0 4 1305 73
+754a4 18 1312 73
+754bc 8 1307 73
+754c4 20 1297 73
+754e4 4 1297 73
+754e8 4 1297 73
+754ec 4 110 72
+754f0 10 333 122
+75500 c 1297 73
+7550c 8 1297 73
+75514 4 333 122
+75518 4 1297 73
+7551c 8 333 122
+75524 4 1297 73
+75528 4 333 122
+7552c 8 263 121
+75534 4 1298 73
+75538 8 263 121
+75540 c 333 122
+7554c 4 1298 73
+75550 c 1298 73
+7555c 10 1298 73
+7556c 4 333 122
+75570 4 1301 73
+75574 4 333 122
+75578 4 1299 73
+7557c 14 1299 73
+75590 c 1299 73
+7559c 18 156 132
+755b4 8 1297 73
+755bc 18 1319 73
+FUNC 755d4 4 0 google_breakpad::MinidumpMemoryRegion::GetMemoryAtAddress
+755d4 4 1324 73
+FUNC 755e0 240 0 google_breakpad::MinidumpMemoryRegion::GetMemoryAtAddressInternal<short unsigned int>
+755e0 14 1279 73
+755f4 c 1279 73
+75600 4 1281 73
+75604 24 1281 73
+75628 10 333 122
+75638 8 1281 73
+75640 4 1284 73
+75644 8 1286 73
+7564c 24 1287 73
+75670 10 333 122
+75680 8 1287 73
+75688 4 1289 73
+7568c 10 1293 73
+7569c 10 1293 73
+756ac 14 1293 73
+756c0 8 1304 73
+756c8 4 1305 73
+756cc 14 1312 73
+756e0 18 1315 73
+756f8 4 1316 73
+756fc 4 1318 73
+75700 8 1316 73
+75708 8 1307 73
+75710 20 1297 73
+75730 4 1297 73
+75734 4 1297 73
+75738 4 110 72
+7573c 10 333 122
+7574c c 1297 73
+75758 8 1297 73
+75760 4 333 122
+75764 4 1297 73
+75768 8 333 122
+75770 4 1297 73
+75774 4 333 122
+75778 8 263 121
+75780 4 1298 73
+75784 8 263 121
+7578c c 333 122
+75798 4 1298 73
+7579c c 1298 73
+757a8 10 1298 73
+757b8 4 333 122
+757bc 4 1301 73
+757c0 4 333 122
+757c4 4 1299 73
+757c8 14 1299 73
+757dc c 1299 73
+757e8 18 156 132
+75800 8 1297 73
+75808 18 1319 73
+FUNC 75820 4 0 google_breakpad::MinidumpMemoryRegion::GetMemoryAtAddress
+75820 4 1330 73
+FUNC 7582c 240 0 google_breakpad::MinidumpMemoryRegion::GetMemoryAtAddressInternal<unsigned int>
+7582c 14 1279 73
+75840 c 1279 73
+7584c 4 1281 73
+75850 24 1281 73
+75874 10 333 122
+75884 8 1281 73
+7588c 4 1284 73
+75890 8 1286 73
+75898 24 1287 73
+758bc 10 333 122
+758cc 8 1287 73
+758d4 4 1289 73
+758d8 10 1293 73
+758e8 10 1293 73
+758f8 14 1293 73
+7590c 8 1304 73
+75914 4 1305 73
+75918 14 1312 73
+7592c 18 1315 73
+75944 4 1316 73
+75948 4 1318 73
+7594c 8 1316 73
+75954 8 1307 73
+7595c 20 1297 73
+7597c 4 1297 73
+75980 4 1297 73
+75984 4 110 72
+75988 10 333 122
+75998 c 1297 73
+759a4 8 1297 73
+759ac 4 333 122
+759b0 4 1297 73
+759b4 8 333 122
+759bc 4 1297 73
+759c0 4 333 122
+759c4 8 263 121
+759cc 4 1298 73
+759d0 8 263 121
+759d8 c 333 122
+759e4 4 1298 73
+759e8 c 1298 73
+759f4 10 1298 73
+75a04 4 333 122
+75a08 4 1301 73
+75a0c 4 333 122
+75a10 4 1299 73
+75a14 14 1299 73
+75a28 c 1299 73
+75a34 18 156 132
+75a4c 8 1297 73
+75a54 18 1319 73
+FUNC 75a6c 4 0 google_breakpad::MinidumpMemoryRegion::GetMemoryAtAddress
+75a6c 4 1336 73
+FUNC 75a78 240 0 google_breakpad::MinidumpMemoryRegion::GetMemoryAtAddressInternal<long unsigned int>
+75a78 14 1279 73
+75a8c c 1279 73
+75a98 4 1281 73
+75a9c 24 1281 73
+75ac0 10 333 122
+75ad0 8 1281 73
+75ad8 4 1284 73
+75adc 8 1286 73
+75ae4 24 1287 73
+75b08 10 333 122
+75b18 8 1287 73
+75b20 4 1289 73
+75b24 10 1293 73
+75b34 10 1293 73
+75b44 14 1293 73
+75b58 8 1304 73
+75b60 4 1305 73
+75b64 14 1312 73
+75b78 18 1315 73
+75b90 4 1316 73
+75b94 4 1318 73
+75b98 8 1316 73
+75ba0 8 1307 73
+75ba8 20 1297 73
+75bc8 4 1297 73
+75bcc 4 1297 73
+75bd0 4 110 72
+75bd4 10 333 122
+75be4 c 1297 73
+75bf0 8 1297 73
+75bf8 4 333 122
+75bfc 4 1297 73
+75c00 8 333 122
+75c08 4 1297 73
+75c0c 4 333 122
+75c10 8 263 121
+75c18 4 1298 73
+75c1c 8 263 121
+75c24 c 333 122
+75c30 4 1298 73
+75c34 c 1298 73
+75c40 10 1298 73
+75c50 4 333 122
+75c54 4 1301 73
+75c58 4 333 122
+75c5c 4 1299 73
+75c60 14 1299 73
+75c74 c 1299 73
+75c80 18 156 132
+75c98 8 1297 73
+75ca0 18 1319 73
+FUNC 75cb8 4 0 google_breakpad::MinidumpMemoryRegion::GetMemoryAtAddress
+75cb8 4 1342 73
+FUNC 75cc4 cc 0 google_breakpad::MinidumpMemoryRegion::Print
+75cc4 10 1346 73
+75cd4 4 1346 73
+75cd8 8 1347 73
+75ce0 24 1348 73
+75d04 10 333 122
+75d14 c 1348 73
+75d20 8 1352 73
+75d28 4 1353 73
+75d2c 4 1354 73
+75d30 4 1358 73
+75d34 4 1354 73
+75d38 4 1355 73
+75d3c 4 1358 73
+75d40 4 1354 73
+75d44 4 1356 73
+75d48 c 1355 73
+75d54 8 1358 73
+75d5c 4 1355 73
+75d60 8 1358 73
+75d68 c 1360 73
+75d74 c 1362 73
+75d80 10 1364 73
+FUNC 75d98 440 0 google_breakpad::MinidumpModule::GetCVRecord
+75d98 14 2076 73
+75dac 8 2076 73
+75db4 8 2077 73
+75dbc 24 2078 73
+75de0 10 333 122
+75df0 8 2078 73
+75df8 8 2082 73
+75e00 8 2085 73
+75e08 18 2089 73
+75e20 20 2090 73
+75e40 14 333 122
+75e54 14 2094 73
+75e68 20 2095 73
+75e88 4 110 72
+75e8c 10 333 122
+75e9c 10 254 121
+75eac c 333 122
+75eb8 c 254 121
+75ec4 8 2095 73
+75ecc 4 2098 73
+75ed0 4 2109 73
+75ed4 4 2109 73
+75ed8 4 116 143
+75edc 4 92 57
+75ee0 8 2109 73
+75ee8 10 116 143
+75ef8 4 92 57
+75efc 14 2111 73
+75f10 4 2111 73
+75f14 20 2112 73
+75f34 10 333 122
+75f44 8 2116 73
+75f4c 10 2117 73
+75f5c c 2120 73
+75f68 14 2121 73
+75f7c 8 2122 73
+75f84 14 2125 73
+75f98 c 2127 73
+75fa4 20 2128 73
+75fc4 4 110 72
+75fc8 10 333 122
+75fd8 c 263 121
+75fe4 1c 2134 73
+76000 4 2137 73
+76004 4 195 73
+76008 4 2137 73
+7600c 8 195 73
+76014 8 196 73
+7601c 8 197 73
+76024 8 2139 73
+7602c 18 2146 73
+76044 20 2148 73
+76064 10 333 122
+76074 10 2151 73
+76084 c 2153 73
+76090 20 2154 73
+760b0 4 110 72
+760b4 10 333 122
+760c4 10 263 121
+760d4 c 333 122
+760e0 10 254 121
+760f0 1c 2159 73
+7610c 8 2162 73
+76114 8 2163 73
+7611c 8 2164 73
+76124 8 2165 73
+7612c 18 2172 73
+76144 20 2174 73
+76164 10 333 122
+76174 8 2174 73
+7617c c 2113 73
+76188 4 143 57
+7618c 4 2187 73
+76190 c 2188 73
+7619c 4 144 57
+761a0 8 2188 73
+761a8 8 2086 73
+761b0 4 2191 73
+761b4 10 2192 73
+761c4 14 2195 73
+FUNC 761d8 334 0 google_breakpad::MinidumpModule::GetMiscRecord
+761d8 14 2198 73
+761ec 8 2198 73
+761f4 8 2199 73
+761fc 24 2200 73
+76220 10 333 122
+76230 8 2200 73
+76238 8 2204 73
+76240 8 2205 73
+76248 c 2209 73
+76254 20 2211 73
+76274 4 110 72
+76278 10 333 122
+76288 10 263 121
+76298 c 333 122
+762a4 c 254 121
+762b0 14 2216 73
+762c4 20 2218 73
+762e4 10 333 122
+762f4 8 2218 73
+762fc 4 2219 73
+76300 14 2222 73
+76314 20 2223 73
+76334 4 110 72
+76338 10 333 122
+76348 10 254 121
+76358 c 333 122
+76364 10 254 121
+76374 4 2236 73
+76378 4 2236 73
+7637c 8 2236 73
+76384 10 116 143
+76394 4 92 57
+76398 1c 2240 73
+763b4 20 2242 73
+763d4 14 333 122
+763e8 14 2246 73
+763fc 10 2262 73
+7640c 20 2264 73
+7642c 4 110 72
+76430 10 333 122
+76440 10 254 121
+76450 c 333 122
+7645c 10 254 121
+7646c 8 2247 73
+76474 8 2248 73
+7647c 8 2252 73
+76484 4 2257 73
+76488 4 2255 73
+7648c c 2258 73
+76498 8 214 73
+764a0 10 215 73
+764b0 8 2264 73
+764b8 c 2243 73
+764c4 4 143 57
+764c8 4 2271 73
+764cc 4 2271 73
+764d0 4 144 57
+764d4 8 2271 73
+764dc 8 2206 73
+764e4 4 2274 73
+764e8 10 2275 73
+764f8 14 2278 73
+FUNC 7650c 17c 0 google_breakpad::MinidumpModule::ReadAuxiliaryData
+7650c 10 1782 73
+7651c 4 1782 73
+76520 8 1783 73
+76528 24 1784 73
+7654c 10 333 122
+7655c 8 1784 73
+76564 4 1785 73
+76568 14 1789 73
+7657c 4 1790 73
+76580 24 1791 73
+765a4 10 333 122
+765b4 8 1796 73
+765bc 8 1800 73
+765c4 10 1800 73
+765d4 4 1800 73
+765d8 24 1802 73
+765fc 10 333 122
+7660c 8 1806 73
+76614 10 1806 73
+76624 4 1806 73
+76628 24 1808 73
+7664c 10 333 122
+7665c 4 1809 73
+76660 c 1808 73
+7666c 8 1812 73
+76674 14 1814 73
+FUNC 76688 c8 0 std::priv::_Rb_tree<unsigned int, std::less<unsigned int>, std::pair<unsigned int const, google_breakpad::MinidumpThread*>, std::priv::_Select1st<std::pair<unsigned int const, google_breakpad::MinidumpThread*> >, std::priv::_MapTraitsT<std::pair<unsigned int const, google_breakpad::MinidumpThread*> >, std::allocator<std::pair<unsigned int const, google_breakpad::MinidumpThread*> > >::_M_insert
+76688 18 350 135
+766a0 4 358 135
+766a4 8 350 135
+766ac 4 358 135
+766b0 8 359 135
+766b8 4 360 135
+766bc 4 361 135
+766c0 8 362 135
+766c8 4 364 135
+766cc 4 364 135
+766d0 10 364 135
+766e0 4 367 135
+766e4 4 368 135
+766e8 4 367 135
+766ec c 369 135
+766f8 8 370 135
+76700 4 373 135
+76704 4 374 135
+76708 4 373 135
+7670c c 375 135
+76718 4 376 135
+7671c 8 379 135
+76724 4 378 135
+76728 4 379 135
+7672c 4 380 135
+76730 4 382 135
+76734 8 380 135
+7673c 4 142 136
+76740 10 382 135
+FUNC 76750 e4 0 std::priv::_Rb_tree<unsigned int, std::less<unsigned int>, std::pair<unsigned int const, google_breakpad::MinidumpThread*>, std::priv::_Select1st<std::pair<unsigned int const, google_breakpad::MinidumpThread*> >, std::priv::_MapTraitsT<std::pair<unsigned int const, google_breakpad::MinidumpThread*> >, std::allocator<std::pair<unsigned int const, google_breakpad::MinidumpThread*> > >::insert_unique
+76750 8 405 135
+76758 4 408 135
+7675c 8 405 135
+76764 4 406 135
+76768 4 405 135
+7676c 4 407 135
+76770 4 405 135
+76774 4 409 135
+76778 10 412 135
+76788 c 412 135
+76794 18 412 135
+767ac 4 415 135
+767b0 c 416 135
+767bc 10 417 135
+767cc 18 187 136
+767e4 10 421 135
+767f4 14 422 135
+76808 8 142 136
+76810 c 62 124
+7681c 4 142 136
+76820 4 62 124
+76824 10 425 135
+FUNC 76834 1cc 0 std::priv::_Rb_tree<unsigned int, std::less<unsigned int>, std::pair<unsigned int const, google_breakpad::MinidumpThread*>, std::priv::_Select1st<std::pair<unsigned int const, google_breakpad::MinidumpThread*> >, std::priv::_MapTraitsT<std::pair<unsigned int const, google_breakpad::MinidumpThread*> >, std::allocator<std::pair<unsigned int const, google_breakpad::MinidumpThread*> > >::insert_unique
+76834 18 432 135
+7684c c 432 135
+76858 10 434 135
+76868 10 437 135
+76878 8 440 135
+76880 8 441 135
+76888 8 447 135
+76890 8 177 136
+76898 4 458 135
+7689c 4 177 136
+768a0 4 458 135
+768a4 14 462 135
+768b8 c 468 135
+768c4 4 469 135
+768c8 8 470 135
+768d0 8 469 135
+768d8 c 479 135
+768e4 10 187 136
+768f4 8 79 106
+768fc 4 494 135
+76900 c 177 136
+7690c 4 513 135
+76910 8 517 135
+76918 8 517 135
+76920 c 517 135
+7692c 10 475 135
+7693c c 142 136
+76948 10 480 135
+76958 c 483 135
+76964 8 486 135
+7696c 10 494 135
+7697c 8 521 135
+76984 18 522 135
+7699c c 500 135
+769a8 14 524 135
+769bc 8 142 136
+769c4 8 497 135
+769cc c 498 135
+769d8 c 524 135
+769e4 1c 534 135
+FUNC 76a00 84 0 std::map<unsigned int, google_breakpad::MinidumpThread*, std::less<unsigned int>, std::allocator<std::pair<unsigned int const, google_breakpad::MinidumpThread*> > >::operator[]<unsigned int>
+76a00 4 175 118
+76a04 4 568 136
+76a08 c 175 118
+76a14 4 571 136
+76a18 c 572 136
+76a24 8 573 136
+76a2c 14 575 136
+76a40 4 178 118
+76a44 4 571 136
+76a48 4 178 118
+76a4c c 178 118
+76a58 c 191 118
+76a64 8 62 124
+76a6c 4 142 136
+76a70 4 191 118
+76a74 4 179 118
+76a78 4 180 118
+76a7c 8 181 118
+FUNC 76a84 28 0 google_breakpad::MinidumpThreadList::GetThreadByID
+76a84 4 1668 73
+76a88 4 1671 73
+76a8c 4 1668 73
+76a90 8 1668 73
+76a98 8 1671 73
+76aa0 c 1672 73
+FUNC 76aac 624 0 google_breakpad::MinidumpThreadList::Read
+76aac c 1553 73
+76ab8 4 206 118
+76abc 10 1553 73
+76acc 8 1553 73
+76ad4 8 531 136
+76adc c 532 136
+76ae8 4 533 136
+76aec 4 534 136
+76af0 4 535 136
+76af4 4 536 136
+76af8 8 1556 73
+76b00 8 42 143
+76b08 8 1556 73
+76b10 4 1557 73
+76b14 4 1563 73
+76b18 4 1558 73
+76b1c 4 1560 73
+76b20 4 1563 73
+76b24 24 1564 73
+76b48 4 110 72
+76b4c 10 333 122
+76b5c 10 254 121
+76b6c c 333 122
+76b78 c 263 121
+76b84 1c 1568 73
+76ba0 24 1569 73
+76bc4 10 333 122
+76bd4 8 1569 73
+76bdc 4 1570 73
+76be0 14 1573 73
+76bf4 8 1574 73
+76bfc 14 1576 73
+76c10 24 1577 73
+76c34 4 110 72
+76c38 10 333 122
+76c48 c 254 121
+76c54 c 333 122
+76c60 8 1577 73
+76c68 8 1579 73
+76c70 8 1583 73
+76c78 c 1582 73
+76c84 c 1585 73
+76c90 18 1588 73
+76ca8 20 1590 73
+76cc8 4 1591 73
+76ccc 4 1590 73
+76cd0 10 333 122
+76ce0 c 1590 73
+76cec 24 1594 73
+76d10 4 110 72
+76d14 10 333 122
+76d24 10 254 121
+76d34 c 333 122
+76d40 8 1596 73
+76d48 4 263 121
+76d4c 8 1596 73
+76d54 14 1602 73
+76d68 24 1603 73
+76d8c 4 110 72
+76d90 10 333 122
+76da0 10 254 121
+76db0 c 333 122
+76dbc 10 254 121
+76dcc 4 1608 73
+76dd0 10 1610 73
+76de0 8 1610 73
+76de8 4 1610 73
+76dec 4 70 139
+76df0 4 1610 73
+76df4 4 70 139
+76df8 4 1610 73
+76dfc 4 481 101
+76e00 4 356 101
+76e04 4 346 101
+76e08 10 347 101
+76e18 8 348 101
+76e20 c 352 101
+76e2c 4 73 139
+76e30 4 267 65
+76e34 4 71 139
+76e38 4 267 65
+76e3c 4 314 137
+76e40 8 73 139
+76e48 4 314 137
+76e4c c 249 137
+76e58 4 72 139
+76e5c c 249 137
+76e68 8 112 65
+76e70 4 249 137
+76e74 4 139 103
+76e78 4 112 65
+76e7c 4 267 65
+76e80 10 112 65
+76e90 30 267 65
+76ec0 c 249 137
+76ecc 4 244 139
+76ed0 4 1610 73
+76ed4 4 1625 73
+76ed8 4 1610 73
+76edc c 1612 73
+76ee8 c 202 139
+76ef4 4 1615 73
+76ef8 8 202 139
+76f00 14 1618 73
+76f14 20 1619 73
+76f34 4 110 72
+76f38 10 333 122
+76f48 1c 1625 73
+76f64 20 1626 73
+76f84 4 110 72
+76f88 10 333 122
+76f98 10 254 121
+76fa8 c 333 122
+76fb4 c 254 121
+76fc0 8 1626 73
+76fc8 10 1631 73
+76fd8 24 1633 73
+76ffc 4 110 72
+77000 10 333 122
+77010 c 1634 73
+7701c 10 1634 73
+7702c c 333 122
+77038 10 254 121
+77048 c 333 122
+77054 c 254 121
+77060 8 156 132
+77068 8 1633 73
+77070 8 42 143
+77078 c 98 57
+77084 8 1638 73
+7708c 4 1612 73
+77090 c 1638 73
+7709c 4 1641 73
+770a0 8 1644 73
+770a8 8 1646 73
+770b0 20 1648 73
+FUNC 770d0 c8 0 std::priv::_Rb_tree<long unsigned int, std::less<long unsigned int>, std::pair<long unsigned int const, google_breakpad::RangeMap<long unsigned int, unsigned int>::Range>, std::priv::_Select1st<std::pair<long unsigned int const, google_breakpad::RangeMap<long unsigned int, unsigned int>::Range> >, std::priv::_MapTraitsT<std::pair<long unsigned int const, google_breakpad::RangeMap<long unsigned int, unsigned int>::Range> >, std::allocator<std::pair<long unsigned int const, google_breakpad::RangeMap<long unsigned int, unsigned int>::Range> > >::_M_insert
+770d0 18 350 135
+770e8 4 358 135
+770ec 8 350 135
+770f4 4 358 135
+770f8 8 359 135
+77100 4 360 135
+77104 4 361 135
+77108 8 362 135
+77110 4 364 135
+77114 4 364 135
+77118 10 364 135
+77128 4 367 135
+7712c 4 368 135
+77130 4 367 135
+77134 c 369 135
+77140 8 370 135
+77148 4 373 135
+7714c 4 374 135
+77150 4 373 135
+77154 c 375 135
+77160 4 376 135
+77164 8 379 135
+7716c 4 378 135
+77170 4 379 135
+77174 4 380 135
+77178 4 382 135
+7717c 8 380 135
+77184 4 142 136
+77188 10 382 135
+FUNC 77198 254 0 google_breakpad::RangeMap<long unsigned int, unsigned int>::StoreRange
+77198 14 50 75
+771ac 8 53 75
+771b4 c 56 75
+771c0 8 53 75
+771c8 c 56 75
+771d4 20 60 75
+771f4 4 60 75
+771f8 4 60 75
+771fc 4 110 72
+77200 10 333 122
+77210 8 60 75
+77218 4 61 75
+7721c 4 60 75
+77220 10 60 75
+77230 c 333 122
+7723c 8 61 75
+77244 4 61 75
+77248 4 61 75
+7724c 10 61 75
+7725c c 333 122
+77268 c 61 75
+77274 c 61 75
+77280 18 156 132
+77298 8 60 75
+772a0 c 63 75
+772ac 4 568 136
+772b0 4 569 136
+772b4 4 571 136
+772b8 c 572 136
+772c4 8 573 136
+772cc 14 575 136
+772e0 4 569 136
+772e4 4 568 136
+772e8 4 571 136
+772ec c 572 136
+772f8 8 573 136
+77300 14 575 136
+77314 8 71 75
+7731c 8 90 75
+77324 c 91 75
+77330 4 105 76
+77334 4 568 136
+77338 4 62 124
+7733c 4 408 135
+77340 8 62 124
+77348 4 409 135
+7734c c 412 135
+77358 c 412 135
+77364 14 412 135
+77378 4 409 135
+7737c 4 415 135
+77380 c 416 135
+7738c 14 417 135
+773a0 c 187 136
+773ac c 421 135
+773b8 1c 422 135
+773d4 4 113 75
+773d8 14 114 75
+FUNC 773ec 7c8 0 google_breakpad::MinidumpModuleList::Read
+773ec 1c 2445 73
+77408 8 2445 73
+77410 8 206 118
+77418 8 2448 73
+77420 8 42 143
+77428 8 2448 73
+77430 4 2449 73
+77434 4 2455 73
+77438 4 2450 73
+7743c 4 2452 73
+77440 4 2455 73
+77444 24 2456 73
+77468 4 110 72
+7746c 10 333 122
+7747c 10 254 121
+7748c c 333 122
+77498 c 263 121
+774a4 1c 2460 73
+774c0 24 2461 73
+774e4 10 333 122
+774f4 8 2461 73
+774fc 4 2462 73
+77500 14 2465 73
+77514 8 2466 73
+7751c 14 2468 73
+77530 24 2469 73
+77554 4 110 72
+77558 10 333 122
+77568 c 254 121
+77574 10 333 122
+77584 8 2475 73
+7758c c 2474 73
+77598 c 2477 73
+775a4 18 2480 73
+775bc 20 2482 73
+775dc 4 2483 73
+775e0 4 2482 73
+775e4 10 333 122
+775f4 c 2482 73
+77600 24 2486 73
+77624 4 110 72
+77628 10 333 122
+77638 10 254 121
+77648 c 333 122
+77654 4 2488 73
+77658 4 263 121
+7765c 4 2488 73
+77660 8 263 121
+77668 8 2486 73
+77670 14 2493 73
+77684 24 2494 73
+776a8 4 110 72
+776ac 10 333 122
+776bc 10 254 121
+776cc c 333 122
+776d8 c 254 121
+776e4 c 2494 73
+776f0 4 2499 73
+776f4 10 2501 73
+77704 8 2501 73
+7770c 4 2501 73
+77710 4 2501 73
+77714 4 2501 73
+77718 4 70 139
+7771c 4 356 101
+77720 4 70 139
+77724 4 481 101
+77728 4 346 101
+7772c 10 347 101
+7773c 8 348 101
+77744 c 352 101
+77750 4 73 139
+77754 4 112 65
+77758 8 364 65
+77760 4 314 137
+77764 4 73 139
+77768 4 314 137
+7776c 8 249 137
+77774 4 71 139
+77778 4 249 137
+7777c 4 72 139
+77780 4 249 137
+77784 4 73 139
+77788 4 249 137
+7778c 4 112 65
+77790 8 364 65
+77798 4 249 137
+7779c 4 249 137
+777a0 4 139 103
+777a4 4 112 65
+777a8 4 364 65
+777ac 4 112 65
+777b0 4 364 65
+777b4 10 112 65
+777c4 44 364 65
+77808 c 249 137
+77814 4 244 139
+77818 4 2501 73
+7781c 4 2503 73
+77820 4 202 139
+77824 4 2501 73
+77828 c 2503 73
+77834 4 202 139
+77838 4 2506 73
+7783c 4 202 139
+77840 10 2509 73
+77850 20 2510 73
+77870 4 110 72
+77874 10 333 122
+77884 c 254 121
+77890 8 2503 73
+77898 4 2521 73
+7789c 4 2541 73
+778a0 4 2521 73
+778a4 4 2542 73
+778a8 4 2522 73
+778ac c 2521 73
+778b8 14 202 139
+778cc 14 2531 73
+778e0 8 2531 73
+778e8 20 2533 73
+77908 4 110 72
+7790c 10 333 122
+7791c c 254 121
+77928 8 2560 73
+77930 18 2541 73
+77948 18 2542 73
+77960 c 2543 73
+7796c 24 2545 73
+77990 4 110 72
+77994 10 333 122
+779a4 10 254 121
+779b4 c 333 122
+779c0 10 254 121
+779d0 c 333 122
+779dc 4 2546 73
+779e0 10 2546 73
+779f0 c 2546 73
+779fc 8 156 132
+77a04 4 2545 73
+77a08 4 2551 73
+77a0c 8 42 143
+77a14 10 98 57
+77a24 8 2563 73
+77a2c 8 2565 73
+77a34 4 2566 73
+77a38 8 254 121
+77a40 c 333 122
+77a4c c 254 121
+77a58 8 2533 73
+77a60 1c 2550 73
+77a7c 24 2551 73
+77aa0 4 110 72
+77aa4 10 333 122
+77ab4 10 254 121
+77ac4 c 333 122
+77ad0 8 254 121
+77ad8 4 333 122
+77adc 4 2553 73
+77ae0 4 333 122
+77ae4 8 254 121
+77aec 8 333 122
+77af4 10 2553 73
+77b04 4 2554 73
+77b08 4 2553 73
+77b0c 10 2553 73
+77b1c 8 333 122
+77b24 c 2554 73
+77b30 10 2554 73
+77b40 c 333 122
+77b4c c 2555 73
+77b58 c 2555 73
+77b64 18 156 132
+77b7c 8 2551 73
+77b84 10 2521 73
+77b94 20 2567 73
+FUNC 77bb4 70c 0 google_breakpad::MinidumpMemoryList::Read
+77bb4 1c 2689 73
+77bd0 8 2689 73
+77bd8 8 2691 73
+77be0 8 42 143
+77be8 8 2691 73
+77bf0 4 2693 73
+77bf4 4 2692 73
+77bf8 4 2693 73
+77bfc 8 42 143
+77c04 8 2693 73
+77c0c 4 206 118
+77c10 4 2694 73
+77c14 4 206 118
+77c18 4 2696 73
+77c1c 4 2698 73
+77c20 8 2701 73
+77c28 24 2702 73
+77c4c 4 110 72
+77c50 10 333 122
+77c60 10 254 121
+77c70 c 333 122
+77c7c c 263 121
+77c88 1c 2706 73
+77ca4 24 2707 73
+77cc8 10 333 122
+77cd8 8 2707 73
+77ce0 4 2708 73
+77ce4 14 2711 73
+77cf8 8 2712 73
+77d00 10 2714 73
+77d10 24 2716 73
+77d34 4 110 72
+77d38 10 333 122
+77d48 c 254 121
+77d54 10 333 122
+77d64 4 2722 73
+77d68 c 2721 73
+77d74 c 2724 73
+77d80 18 2727 73
+77d98 20 2729 73
+77db8 4 2730 73
+77dbc 4 2729 73
+77dc0 10 333 122
+77dd0 c 2729 73
+77ddc 24 2733 73
+77e00 4 110 72
+77e04 10 333 122
+77e14 10 254 121
+77e24 c 333 122
+77e30 c 2735 73
+77e3c 8 263 121
+77e44 14 2740 73
+77e58 24 2741 73
+77e7c 4 110 72
+77e80 10 333 122
+77e90 10 254 121
+77ea0 c 333 122
+77eac c 254 121
+77eb8 c 2741 73
+77ec4 4 2746 73
+77ec8 8 2748 73
+77ed0 4 70 139
+77ed4 4 2748 73
+77ed8 4 2748 73
+77edc 4 70 139
+77ee0 8 481 101
+77ee8 4 356 101
+77eec 4 346 101
+77ef0 c 347 101
+77efc 4 348 101
+77f00 8 352 101
+77f08 4 73 139
+77f0c 4 71 139
+77f10 4 72 139
+77f14 4 314 137
+77f18 4 73 139
+77f1c 8 249 137
+77f24 4 139 103
+77f28 c 139 103
+77f34 8 249 137
+77f3c 8 244 139
+77f44 18 2753 73
+77f5c 4 2752 73
+77f60 20 2754 73
+77f80 10 333 122
+77f90 8 2754 73
+77f98 4 2755 73
+77f9c c 2759 73
+77fa8 8 2759 73
+77fb0 4 2759 73
+77fb4 4 2759 73
+77fb8 4 2759 73
+77fbc 4 70 139
+77fc0 4 356 101
+77fc4 4 70 139
+77fc8 4 481 101
+77fcc 4 346 101
+77fd0 10 347 101
+77fe0 8 348 101
+77fe8 c 352 101
+77ff4 4 73 139
+77ff8 4 201 65
+77ffc 4 71 139
+78000 4 201 65
+78004 8 73 139
+7800c 4 314 137
+78010 4 201 65
+78014 4 72 139
+78018 4 249 137
+7801c 4 314 137
+78020 4 249 137
+78024 4 201 65
+78028 4 249 137
+7802c 8 112 65
+78034 4 249 137
+78038 4 139 103
+7803c 14 112 65
+78050 18 201 65
+78068 c 249 137
+78074 4 244 139
+78078 4 2759 73
+7807c 8 2782 73
+78084 4 2759 73
+78088 4 202 139
+7808c 4 2761 73
+78090 4 2762 73
+78094 c 2761 73
+780a0 4 202 139
+780a4 4 2766 73
+780a8 4 202 139
+780ac 4 2766 73
+780b0 4 202 139
+780b4 c 2766 73
+780c0 c 189 73
+780cc c 190 73
+780d8 4 2769 73
+780dc 4 2770 73
+780e0 4 2769 73
+780e4 4 2773 73
+780e8 8 2774 73
+780f0 c 2773 73
+780fc 4 2793 73
+78100 8 2794 73
+78108 20 2782 73
+78128 24 2783 73
+7814c 4 110 72
+78150 10 333 122
+78160 10 254 121
+78170 c 333 122
+7817c 8 254 121
+78184 4 2777 73
+78188 8 254 121
+78190 c 333 122
+7819c c 2777 73
+781a8 10 2777 73
+781b8 c 333 122
+781c4 c 2778 73
+781d0 c 2778 73
+781dc 10 156 132
+781ec 8 2775 73
+781f4 8 42 143
+781fc 8 98 57
+78204 8 42 143
+7820c 10 98 57
+7821c 8 2797 73
+78224 8 2799 73
+7822c 4 2800 73
+78230 24 2775 73
+78254 4 110 72
+78258 20 333 122
+78278 4 2790 73
+7827c 8 202 139
+78284 c 2790 73
+78290 10 2761 73
+782a0 20 2801 73
+FUNC 782c0 c8 0 std::priv::_Rb_tree<unsigned int, std::less<unsigned int>, std::pair<unsigned int const, google_breakpad::Minidump::MinidumpStreamInfo>, std::priv::_Select1st<std::pair<unsigned int const, google_breakpad::Minidump::MinidumpStreamInfo> >, std::priv::_MapTraitsT<std::pair<unsigned int const, google_breakpad::Minidump::MinidumpStreamInfo> >, std::allocator<std::pair<unsigned int const, google_breakpad::Minidump::MinidumpStreamInfo> > >::_M_insert
+782c0 18 350 135
+782d8 4 358 135
+782dc 8 350 135
+782e4 4 358 135
+782e8 8 359 135
+782f0 4 360 135
+782f4 4 361 135
+782f8 8 362 135
+78300 4 364 135
+78304 4 364 135
+78308 10 364 135
+78318 4 367 135
+7831c 4 368 135
+78320 4 367 135
+78324 c 369 135
+78330 8 370 135
+78338 4 373 135
+7833c 4 374 135
+78340 4 373 135
+78344 c 375 135
+78350 4 376 135
+78354 8 379 135
+7835c 4 378 135
+78360 4 379 135
+78364 4 380 135
+78368 4 382 135
+7836c 8 380 135
+78374 4 142 136
+78378 10 382 135
+FUNC 78388 e4 0 std::priv::_Rb_tree<unsigned int, std::less<unsigned int>, std::pair<unsigned int const, google_breakpad::Minidump::MinidumpStreamInfo>, std::priv::_Select1st<std::pair<unsigned int const, google_breakpad::Minidump::MinidumpStreamInfo> >, std::priv::_MapTraitsT<std::pair<unsigned int const, google_breakpad::Minidump::MinidumpStreamInfo> >, std::allocator<std::pair<unsigned int const, google_breakpad::Minidump::MinidumpStreamInfo> > >::insert_unique
+78388 8 405 135
+78390 4 408 135
+78394 8 405 135
+7839c 4 406 135
+783a0 4 405 135
+783a4 4 407 135
+783a8 4 405 135
+783ac 4 409 135
+783b0 10 412 135
+783c0 c 412 135
+783cc 18 412 135
+783e4 4 415 135
+783e8 c 416 135
+783f4 10 417 135
+78404 18 187 136
+7841c 10 421 135
+7842c 14 422 135
+78440 8 142 136
+78448 c 62 124
+78454 4 142 136
+78458 4 62 124
+7845c 10 425 135
+FUNC 7846c 1cc 0 std::priv::_Rb_tree<unsigned int, std::less<unsigned int>, std::pair<unsigned int const, google_breakpad::Minidump::MinidumpStreamInfo>, std::priv::_Select1st<std::pair<unsigned int const, google_breakpad::Minidump::MinidumpStreamInfo> >, std::priv::_MapTraitsT<std::pair<unsigned int const, google_breakpad::Minidump::MinidumpStreamInfo> >, std::allocator<std::pair<unsigned int const, google_breakpad::Minidump::MinidumpStreamInfo> > >::insert_unique
+7846c 18 432 135
+78484 c 432 135
+78490 10 434 135
+784a0 10 437 135
+784b0 8 440 135
+784b8 8 441 135
+784c0 8 447 135
+784c8 8 177 136
+784d0 4 458 135
+784d4 4 177 136
+784d8 4 458 135
+784dc 14 462 135
+784f0 c 468 135
+784fc 4 469 135
+78500 8 470 135
+78508 8 469 135
+78510 c 479 135
+7851c 10 187 136
+7852c 8 79 106
+78534 4 494 135
+78538 c 177 136
+78544 4 513 135
+78548 8 517 135
+78550 8 517 135
+78558 c 517 135
+78564 10 475 135
+78574 c 142 136
+78580 10 480 135
+78590 c 483 135
+7859c 8 486 135
+785a4 10 494 135
+785b4 8 521 135
+785bc 18 522 135
+785d4 c 500 135
+785e0 14 524 135
+785f4 8 142 136
+785fc 8 497 135
+78604 c 498 135
+78610 c 524 135
+7861c 1c 534 135
+FUNC 78638 6e4 0 google_breakpad::Minidump::Read
+78638 24 4099 73
+7865c 4 4099 73
+78660 8 4101 73
+78668 8 42 143
+78670 8 4101 73
+78678 4 4103 73
+7867c 4 4102 73
+78680 8 531 136
+78688 c 532 136
+78694 4 533 136
+78698 4 534 136
+7869c 4 535 136
+786a0 4 536 136
+786a4 4 4105 73
+786a8 18 4107 73
+786c0 1c 4108 73
+786dc 10 333 122
+786ec 1c 4112 73
+78708 1c 4113 73
+78724 10 333 122
+78734 8 4113 73
+7873c 4 4114 73
+78740 14 4117 73
+78754 8 4122 73
+7875c 4 4123 73
+78760 14 4124 73
+78774 1c 4126 73
+78790 4 4127 73
+78794 4 4126 73
+78798 4 110 72
+7879c 10 333 122
+787ac 8 4127 73
+787b4 4 4128 73
+787b8 4 4127 73
+787bc 10 4127 73
+787cc c 333 122
+787d8 c 4128 73
+787e4 10 4128 73
+787f4 c 333 122
+78800 10 4129 73
+78810 c 4129 73
+7881c 10 156 132
+7882c c 4132 73
+78838 4 4136 73
+7883c 1c 4139 73
+78858 4 110 72
+7885c 10 333 122
+7886c 8 4139 73
+78874 c 4139 73
+78880 8 4139 73
+78888 18 333 122
+788a0 8 4139 73
+788a8 8 4142 73
+788b0 8 4143 73
+788b8 8 4144 73
+788c0 8 4145 73
+788c8 8 4146 73
+788d0 8 4147 73
+788d8 8 4148 73
+788e0 8 4149 73
+788e8 10 4154 73
+788f8 1c 4155 73
+78914 4 4156 73
+78918 4 4155 73
+7891c 4 110 72
+78920 10 333 122
+78930 c 4156 73
+7893c 10 4156 73
+7894c c 333 122
+78958 c 4157 73
+78964 c 4157 73
+78970 10 156 132
+78980 8 4155 73
+78988 14 4161 73
+7899c 1c 4162 73
+789b8 10 333 122
+789c8 14 4166 73
+789dc 1c 4167 73
+789f8 4 110 72
+789fc 10 333 122
+78a0c 10 254 121
+78a1c c 333 122
+78a28 c 254 121
+78a34 c 4167 73
+78a40 4 4172 73
+78a44 8 4174 73
+78a4c 4 4174 73
+78a50 4 70 139
+78a54 4 4174 73
+78a58 4 70 139
+78a5c 4 4174 73
+78a60 4 481 101
+78a64 4 356 101
+78a68 4 346 101
+78a6c c 347 101
+78a78 8 348 101
+78a80 c 352 101
+78a8c 4 73 139
+78a90 4 71 139
+78a94 4 72 139
+78a98 c 73 139
+78aa4 4 314 137
+78aa8 4 249 137
+78aac 4 314 137
+78ab0 8 249 137
+78ab8 4 249 137
+78abc 4 139 103
+78ac0 c 139 103
+78acc c 249 137
+78ad8 4 244 139
+78adc 1c 4179 73
+78af8 4 4178 73
+78afc 1c 4180 73
+78b18 10 333 122
+78b28 10 4197 73
+78b38 8 4218 73
+78b40 8 568 136
+78b48 4 571 136
+78b4c 8 178 118
+78b54 c 178 118
+78b60 4 4218 73
+78b64 4 4184 73
+78b68 c 4184 73
+78b74 c 202 139
+78b80 4 4189 73
+78b84 4 202 139
+78b88 4 4189 73
+78b8c c 4190 73
+78b98 c 4191 73
+78ba4 8 4196 73
+78bac 8 4197 73
+78bb4 10 210 118
+78bc4 4 423 136
+78bc8 4 200 136
+78bcc 8 4205 73
+78bd4 1c 4208 73
+78bf0 4 110 72
+78bf4 10 333 122
+78c04 c 254 121
+78c10 c 333 122
+78c1c 8 4208 73
+78c24 8 42 143
+78c2c c 98 57
+78c38 4 210 118
+78c3c 4 968 65
+78c40 4 202 139
+78c44 4 142 136
+78c48 4 210 118
+78c4c c 191 118
+78c58 14 4197 73
+78c6c c 572 136
+78c78 8 573 136
+78c80 14 575 136
+78c94 8 4223 73
+78c9c 8 98 57
+78ca4 8 4226 73
+78cac 4 4227 73
+78cb0 4 62 124
+78cb4 8 968 65
+78cbc 8 191 118
+78cc4 4 142 136
+78cc8 c 62 124
+78cd4 8 191 118
+78cdc 4 179 118
+78ce0 8 51 124
+78ce8 c 179 118
+78cf4 28 4228 73
+FUNC 78d1c d4 0 std::basic_filebuf<char, std::char_traits<char> >::_M_allocate_buffers
+78d1c 10 630 104
+78d2c 8 630 104
+78d34 4 637 104
+78d38 c 644 104
+78d44 4 646 104
+78d48 4 645 104
+78d4c c 647 104
+78d58 4 650 104
+78d5c 4 651 104
+78d60 8 655 104
+78d68 4 227 102
+78d6c 4 655 104
+78d70 8 227 102
+78d78 c 655 104
+78d84 c 661 104
+78d90 4 664 104
+78d94 8 686 104
+78d9c 8 687 104
+78da4 8 688 104
+78dac 4 689 104
+78db0 4 690 104
+78db4 4 666 104
+78db8 4 691 104
+78dbc 8 692 104
+78dc4 4 669 104
+78dc8 4 670 104
+78dcc 4 671 104
+78dd0 4 670 104
+78dd4 8 669 104
+78ddc 14 672 104
+FUNC 78df0 60 0 std::basic_filebuf<char, std::char_traits<char> >::setbuf
+78df0 c 268 104
+78dfc 4 268 104
+78e00 8 269 104
+78e08 8 269 104
+78e10 8 269 104
+78e18 8 271 104
+78e20 c 272 104
+78e2c c 273 104
+78e38 8 274 104
+78e40 10 277 104
+FUNC 78e50 1f8 0 std::basic_filebuf<char, std::char_traits<char> >::overflow
+78e50 18 208 104
+78e68 8 208 104
+78e70 8 210 104
+78e78 8 453 104
+78e80 8 453 104
+78e88 8 453 104
+78e90 8 453 104
+78e98 8 456 104
+78ea0 c 128 105
+78eac 8 680 104
+78eb4 c 681 104
+78ec0 4 456 104
+78ec4 8 462 104
+78ecc 10 463 104
+78edc 10 463 104
+78eec 8 118 129
+78ef4 8 466 104
+78efc 4 216 104
+78f00 4 219 104
+78f04 8 214 104
+78f0c 4 216 104
+78f10 4 117 129
+78f14 4 118 129
+78f18 4 119 129
+78f1c 4 219 104
+78f20 4 220 140
+78f24 4 220 104
+78f28 4 228 104
+78f2c 8 193 102
+78f34 4 322 105
+78f38 8 223 104
+78f40 4 225 104
+78f44 4 193 102
+78f48 4 228 104
+78f4c 4 193 102
+78f50 4 224 104
+78f54 4 193 102
+78f58 4 225 104
+78f5c 18 193 102
+78f74 8 229 104
+78f7c 14 322 105
+78f90 8 232 104
+78f98 8 240 104
+78fa0 4 582 104
+78fa4 4 580 104
+78fa8 4 581 104
+78fac 4 582 104
+78fb0 4 117 129
+78fb4 4 118 129
+78fb8 8 119 129
+78fc0 c 240 104
+78fcc 20 240 104
+78fec 8 240 104
+78ff4 4 240 104
+78ff8 4 240 104
+78ffc 18 322 105
+79014 4 246 104
+79018 8 247 104
+79020 c 182 140
+7902c 4 212 104
+79030 18 256 104
+FUNC 79048 130 0 std::basic_filebuf<char, std::char_traits<char> >::~basic_filebuf
+79048 4 67 104
+7904c 4 70 104
+79050 8 67 104
+79058 8 70 104
+79060 4 67 104
+79064 c 84 104
+79070 4 85 104
+79074 8 86 104
+7907c c 85 104
+79088 8 89 104
+79090 8 119 104
+79098 c 120 104
+790a4 4 121 104
+790a8 4 122 104
+790ac 4 124 104
+790b0 8 93 104
+790b8 10 97 104
+790c8 10 97 104
+790d8 4 98 104
+790dc 8 97 104
+790e4 4 686 104
+790e8 4 98 104
+790ec 4 100 104
+790f0 4 101 104
+790f4 4 93 129
+790f8 4 94 129
+790fc 4 95 129
+79100 4 117 129
+79104 4 118 129
+79108 4 119 129
+7910c c 106 104
+79118 10 108 104
+79128 4 686 104
+7912c 8 687 104
+79134 8 688 104
+7913c 4 689 104
+79140 4 690 104
+79144 4 70 104
+79148 4 691 104
+7914c 4 692 104
+79150 c 70 104
+7915c 8 594 104
+79164 14 594 104
+FUNC 79178 24 0 std::basic_filebuf<char, std::char_traits<char> >::~basic_filebuf
+79178 c 67 104
+79184 4 67 104
+79188 4 70 104
+7918c 4 70 104
+79190 8 70 104
+79198 4 70 104
+FUNC 7919c a8 0 std::basic_ifstream<char, std::char_traits<char> >::~basic_ifstream
+7919c c 495 105
+791a8 c 495 105
+791b4 8 495 105
+791bc 8 495 105
+791c4 4 495 105
+791c8 4 495 105
+791cc 4 495 105
+791d0 4 495 105
+791d4 8 495 105
+791dc 8 495 105
+791e4 8 495 105
+791ec 14 495 105
+79200 4 495 105
+79204 4 495 105
+79208 8 495 105
+79210 8 495 105
+79218 4 495 105
+7921c 8 495 105
+79224 4 495 105
+79228 4 495 105
+7922c 8 495 105
+79234 4 495 105
+79238 c 495 105
+FUNC 79244 c 0 std::basic_ifstream<char, std::char_traits<char> >::~basic_ifstream
+79244 c 495 105
+FUNC 79260 24 0 std::basic_ifstream<char, std::char_traits<char> >::~basic_ifstream
+79260 c 495 105
+7926c 8 495 105
+79274 4 495 105
+79278 8 495 105
+79280 4 495 105
+FUNC 79294 c 0 std::basic_ifstream<char, std::char_traits<char> >::~basic_ifstream
+79294 c 495 105
+FUNC 792a0 bc 0 std::basic_filebuf<char, std::char_traits<char> >::_M_seek_init
+792a0 c 700 104
+792ac 4 700 104
+792b0 4 702 104
+792b4 4 706 104
+792b8 4 700 104
+792bc 4 706 104
+792c0 4 708 104
+792c4 c 708 104
+792d0 8 708 104
+792d8 4 709 104
+792dc 4 710 104
+792e0 8 594 104
+792e8 14 594 104
+792fc 4 711 104
+79300 4 713 104
+79304 4 712 104
+79308 4 713 104
+7930c 4 715 104
+79310 4 117 129
+79314 4 118 129
+79318 4 119 129
+7931c 4 715 104
+79320 4 720 104
+79324 4 723 104
+79328 4 720 104
+7932c 8 720 104
+79334 8 220 105
+7933c 8 93 129
+79344 4 94 129
+79348 4 95 129
+7934c 4 221 105
+79350 c 724 104
+FUNC 7935c 94 0 std::basic_filebuf<char, std::char_traits<char> >::_M_seek_return
+7935c 4 238 105
+79360 4 239 105
+79364 c 238 105
+79370 c 238 105
+7937c 4 239 105
+79380 8 240 105
+79388 8 119 104
+79390 c 120 104
+7939c 4 121 104
+793a0 4 122 104
+793a4 4 242 105
+793a8 4 243 105
+793ac 4 244 105
+793b0 4 245 105
+793b4 4 93 129
+793b8 4 94 129
+793bc 4 95 129
+793c0 4 117 129
+793c4 4 118 129
+793c8 4 119 129
+793cc c 250 105
+793d8 4 121 140
+793dc 14 253 105
+FUNC 793f0 8c 0 std::basic_filebuf<char, std::char_traits<char> >::seekpos
+793f0 10 384 104
+79400 c 384 104
+7940c 8 386 104
+79414 10 387 104
+79424 8 391 104
+7942c 10 391 104
+7943c 8 391 104
+79444 14 397 104
+79458 4 392 104
+7945c 10 393 104
+7946c 10 398 104
+FUNC 7947c 1f4 0 std::basic_filebuf<char, std::char_traits<char> >::seekoff
+7947c 10 291 104
+7948c 8 291 104
+79494 8 294 104
+7949c c 297 104
+794a8 4 297 104
+794ac 4 297 104
+794b0 14 298 104
+794c4 24 300 104
+794e8 10 304 104
+794f8 8 310 104
+79500 10 312 104
+79510 c 314 104
+7951c 10 317 104
+7952c 4 321 104
+79530 c 320 104
+7953c 8 321 104
+79544 10 321 104
+79554 c 321 104
+79560 c 324 104
+7956c 8 325 104
+79574 4 332 104
+79578 4 325 104
+7957c 10 332 104
+7958c 4 333 104
+79590 8 87 105
+79598 4 336 104
+7959c c 335 104
+795a8 8 336 104
+795b0 10 336 104
+795c0 c 336 104
+795cc 8 344 104
+795d4 8 224 102
+795dc 4 344 104
+795e0 4 346 104
+795e4 14 224 102
+795f8 10 370 104
+79608 4 373 104
+7960c 4 371 104
+79610 4 372 104
+79614 4 373 104
+79618 4 87 105
+7961c 4 372 104
+79620 8 373 104
+79628 4 375 104
+7962c c 375 104
+79638 10 375 104
+79648 18 378 104
+79660 10 379 104
+FUNC 79670 fc 0 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::rfind
+79670 4 468 130
+79674 4 468 130
+79678 4 400 131
+7967c 8 471 130
+79684 8 472 130
+7968c 10 474 130
+7969c 4 162 99
+796a0 4 474 130
+796a4 c 164 99
+796b0 c 165 99
+796bc c 168 99
+796c8 8 81 113
+796d0 c 171 99
+796dc 8 81 113
+796e4 c 174 99
+796f0 8 81 113
+796f8 c 164 99
+79704 4 152 113
+79708 1c 178 99
+79724 c 180 99
+79730 4 81 113
+79734 c 183 99
+79740 4 81 113
+79744 4 186 99
+79748 10 65 113
+79758 8 478 130
+79760 8 478 130
+79768 4 479 130
+FUNC 7976c 124 0 google_breakpad::PathnameStripper::File
+7976c 4 41 74
+79770 8 42 74
+79778 c 41 74
+79784 8 41 74
+7978c 8 42 74
+79794 10 43 74
+797a4 8 46 74
+797ac 10 46 74
+797bc 8 48 74
+797c4 4 49 74
+797c8 4 45 74
+797cc 4 49 74
+797d0 4 50 74
+797d4 4 112 132
+797d8 c 481 101
+797e4 4 400 131
+797e8 8 205 131
+797f0 c 604 130
+797fc 4 209 131
+79800 4 378 131
+79804 8 608 130
+7980c 8 610 130
+79814 4 347 101
+79818 8 158 101
+79820 8 134 119
+79828 8 158 101
+79830 4 613 130
+79834 4 611 130
+79838 4 612 130
+7983c c 613 130
+79848 c 107 137
+79854 c 106 137
+79860 8 107 137
+79868 c 600 130
+79874 4 380 131
+79878 4 54 74
+7987c 4 101 103
+79880 10 54 74
+FUNC 79890 c 0 google_breakpad::BasicCodeModules::module_count
+79890 4 85 67
+79894 8 87 67
+FUNC 7989c 20 0 google_breakpad::BasicCodeModules::GetMainModule
+7989c 8 100 67
+798a4 10 101 67
+798b4 8 102 67
+FUNC 798bc 1c 0 google_breakpad::BasicCodeModules::GetModuleAtIndex
+798bc 8 116 67
+798c4 c 121 67
+798d0 8 122 67
+FUNC 798d8 54 0 google_breakpad::linked_ptr<const google_breakpad::CodeModule>::depart
+798d8 4 155 70
+798dc 4 156 70
+798e0 4 155 70
+798e4 10 83 70
+798f4 14 85 70
+79908 8 86 70
+79910 8 156 70
+79918 4 156 70
+7991c 8 156 70
+79924 8 157 70
+FUNC 7992c 58 0 std::priv::_Rb_tree<long unsigned int, std::less<long unsigned int>, std::pair<long unsigned int const, google_breakpad::RangeMap<long unsigned int, google_breakpad::linked_ptr<const google_breakpad::CodeModule> >::Range>, std::priv::_Select1st<std::pair<long unsigned int const, google_breakpad::RangeMap<long unsigned int, google_breakpad::linked_ptr<const google_breakpad::CodeModule> >::Range> >, std::priv::_MapTraitsT<std::pair<long unsigned int const, google_breakpad::RangeMap<long unsigned int, google_breakpad::linked_ptr<const google_breakpad::CodeModule> >::Range> >, std::allocator<std::pair<long unsigned int const, google_breakpad::RangeMap<long unsigned int, google_breakpad::linked_ptr<const google_breakpad::CodeModule> >::Range> > >::_M_erase
+7992c 18 655 135
+79944 4 657 135
+79948 c 658 135
+79954 4 659 135
+79958 8 102 70
+79960 14 161 101
+79974 10 664 135
+FUNC 79984 50 0 google_breakpad::BasicCodeModules::~BasicCodeModules
+79984 10 81 67
+79994 8 81 67
+7999c 8 82 67
+799a4 8 531 136
+799ac c 532 136
+799b8 4 82 67
+799bc 8 83 67
+799c4 4 82 67
+799c8 c 83 67
+FUNC 799d4 24 0 google_breakpad::BasicCodeModules::~BasicCodeModules
+799d4 c 81 67
+799e0 4 81 67
+799e4 4 83 67
+799e8 4 83 67
+799ec 8 83 67
+799f4 4 83 67
+FUNC 799f8 40 0 google_breakpad::linked_ptr<const google_breakpad::CodeModule>::copy<const google_breakpad::CodeModule>
+799f8 c 165 70
+79a04 4 166 70
+79a08 8 167 70
+79a10 14 75 70
+79a24 4 76 70
+79a28 8 77 70
+79a30 4 69 70
+79a34 4 170 70
+FUNC 79a38 12c 0 google_breakpad::BasicCodeModules::GetModuleForAddress
+79a38 14 90 67
+79a4c 4 160 70
+79a50 4 90 67
+79a54 4 69 70
+79a58 4 92 67
+79a5c 4 69 70
+79a60 4 160 70
+79a64 8 568 136
+79a6c 4 571 136
+79a70 c 572 136
+79a7c 8 573 136
+79a84 14 575 136
+79a98 c 125 75
+79aa4 c 133 75
+79ab0 c 106 70
+79abc 8 117 70
+79ac4 c 118 70
+79ad0 c 102 70
+79adc 4 97 67
+79ae0 24 93 67
+79b04 4 110 72
+79b08 10 333 122
+79b18 c 93 67
+79b24 c 93 67
+79b30 4 156 132
+79b34 4 94 67
+79b38 4 156 132
+79b3c 8 93 67
+79b44 8 102 70
+79b4c 18 98 67
+FUNC 79b64 234 0 google_breakpad::BasicCodeModules::GetModuleAtSequence
+79b64 14 105 67
+79b78 4 105 67
+79b7c 4 160 70
+79b80 4 107 67
+79b84 4 69 70
+79b88 4 160 70
+79b8c 4 69 70
+79b90 4 207 75
+79b94 8 184 75
+79b9c 28 185 75
+79bc4 4 110 72
+79bc8 10 333 122
+79bd8 10 185 75
+79be8 c 333 122
+79bf4 8 185 75
+79bfc 4 108 67
+79c00 4 185 75
+79c04 8 185 75
+79c0c 1c 108 67
+79c28 4 110 72
+79c2c 10 333 122
+79c3c 14 181 122
+79c50 4 199 121
+79c54 1c 211 121
+79c70 4 192 75
+79c74 8 192 75
+79c7c 8 297 135
+79c84 10 94 136
+79c94 4 301 135
+79c98 c 302 135
+79ca4 c 304 135
+79cb0 c 309 135
+79cbc 8 192 75
+79cc4 10 106 70
+79cd4 8 117 70
+79cdc c 118 70
+79ce8 c 102 70
+79cf4 4 112 67
+79cf8 4 202 121
+79cfc 4 145 110
+79d00 4 202 121
+79d04 4 145 110
+79d08 4 202 121
+79d0c 8 145 110
+79d14 c 351 117
+79d20 8 351 117
+79d28 4 72 120
+79d2c 4 202 121
+79d30 8 72 120
+79d38 c 202 121
+79d44 4 72 120
+79d48 4 57 123
+79d4c c 72 120
+79d58 8 202 121
+79d60 4 210 121
+79d64 4 212 121
+79d68 4 109 67
+79d6c 4 212 121
+79d70 8 108 67
+79d78 8 102 70
+79d80 18 113 67
+FUNC 79d98 64 0 std::priv::_Rb_tree<long unsigned int, std::less<long unsigned int>, std::pair<long unsigned int const, google_breakpad::RangeMap<long unsigned int, google_breakpad::linked_ptr<const google_breakpad::CodeModule> >::Range>, std::priv::_Select1st<std::pair<long unsigned int const, google_breakpad::RangeMap<long unsigned int, google_breakpad::linked_ptr<const google_breakpad::CodeModule> >::Range> >, std::priv::_MapTraitsT<std::pair<long unsigned int const, google_breakpad::RangeMap<long unsigned int, google_breakpad::linked_ptr<const google_breakpad::CodeModule> >::Range> >, std::allocator<std::pair<long unsigned int const, google_breakpad::RangeMap<long unsigned int, google_breakpad::linked_ptr<const google_breakpad::CodeModule> >::Range> > >::_M_create_node
+79d98 4 315 136
+79d9c 4 306 101
+79da0 8 315 136
+79da8 4 315 136
+79dac 8 306 101
+79db4 4 158 101
+79db8 4 119 103
+79dbc 4 158 101
+79dc0 4 119 103
+79dc4 c 68 124
+79dd0 4 106 70
+79dd4 8 102 76
+79ddc 8 106 70
+79de4 4 321 136
+79de8 4 324 136
+79dec 4 322 136
+79df0 c 324 136
+FUNC 79dfc c8 0 std::priv::_Rb_tree<long unsigned int, std::less<long unsigned int>, std::pair<long unsigned int const, google_breakpad::RangeMap<long unsigned int, google_breakpad::linked_ptr<const google_breakpad::CodeModule> >::Range>, std::priv::_Select1st<std::pair<long unsigned int const, google_breakpad::RangeMap<long unsigned int, google_breakpad::linked_ptr<const google_breakpad::CodeModule> >::Range> >, std::priv::_MapTraitsT<std::pair<long unsigned int const, google_breakpad::RangeMap<long unsigned int, google_breakpad::linked_ptr<const google_breakpad::CodeModule> >::Range> >, std::allocator<std::pair<long unsigned int const, google_breakpad::RangeMap<long unsigned int, google_breakpad::linked_ptr<const google_breakpad::CodeModule> >::Range> > >::_M_insert
+79dfc 18 350 135
+79e14 4 358 135
+79e18 8 350 135
+79e20 4 358 135
+79e24 8 359 135
+79e2c 4 360 135
+79e30 4 361 135
+79e34 8 362 135
+79e3c 4 364 135
+79e40 4 364 135
+79e44 10 364 135
+79e54 4 367 135
+79e58 4 368 135
+79e5c 4 367 135
+79e60 c 369 135
+79e6c 8 370 135
+79e74 4 373 135
+79e78 4 374 135
+79e7c 4 373 135
+79e80 c 375 135
+79e8c 4 376 135
+79e90 8 379 135
+79e98 4 378 135
+79e9c 4 379 135
+79ea0 4 380 135
+79ea4 4 382 135
+79ea8 8 380 135
+79eb0 4 142 136
+79eb4 10 382 135
+FUNC 79ec4 2d8 0 google_breakpad::RangeMap<long unsigned int, google_breakpad::linked_ptr<const google_breakpad::CodeModule> >::StoreRange
+79ec4 14 50 75
+79ed8 8 53 75
+79ee0 c 56 75
+79eec 8 53 75
+79ef4 c 56 75
+79f00 20 60 75
+79f20 4 60 75
+79f24 4 60 75
+79f28 4 110 72
+79f2c 10 333 122
+79f3c 8 60 75
+79f44 4 61 75
+79f48 4 60 75
+79f4c 10 60 75
+79f5c c 333 122
+79f68 8 61 75
+79f70 4 61 75
+79f74 4 61 75
+79f78 10 61 75
+79f88 c 333 122
+79f94 c 61 75
+79fa0 c 61 75
+79fac 18 156 132
+79fc4 8 60 75
+79fcc c 63 75
+79fd8 4 568 136
+79fdc 4 569 136
+79fe0 4 571 136
+79fe4 c 572 136
+79ff0 8 573 136
+79ff8 14 575 136
+7a00c 4 568 136
+7a010 4 571 136
+7a014 c 572 136
+7a020 8 573 136
+7a028 14 575 136
+7a03c 8 71 75
+7a044 8 90 75
+7a04c c 91 75
+7a058 4 105 76
+7a05c 8 106 70
+7a064 4 105 76
+7a068 4 106 70
+7a06c 4 62 124
+7a070 4 106 70
+7a074 4 62 124
+7a078 4 102 76
+7a07c 4 106 70
+7a080 4 102 76
+7a084 8 106 70
+7a08c 4 407 135
+7a090 8 568 136
+7a098 4 408 135
+7a09c 4 409 135
+7a0a0 c 412 135
+7a0ac c 412 135
+7a0b8 14 412 135
+7a0cc 4 409 135
+7a0d0 4 415 135
+7a0d4 c 416 135
+7a0e0 14 417 135
+7a0f4 8 279 135
+7a0fc 10 279 135
+7a10c 8 280 135
+7a114 8 281 135
+7a11c 10 99 136
+7a12c 4 285 135
+7a130 c 286 135
+7a13c c 288 135
+7a148 4 187 136
+7a14c c 421 135
+7a158 1c 422 135
+7a174 10 102 70
+7a184 4 113 75
+7a188 14 114 75
+FUNC 7a19c 204 0 google_breakpad::BasicCodeModules::BasicCodeModules
+7a19c 10 48 67
+7a1ac 8 50 67
+7a1b4 8 48 67
+7a1bc 4 50 67
+7a1c0 4 50 67
+7a1c4 4 50 67
+7a1c8 10 48 67
+7a1d8 4 50 67
+7a1dc 4 481 101
+7a1e0 4 263 136
+7a1e4 4 266 136
+7a1e8 4 267 136
+7a1ec 4 391 136
+7a1f0 4 50 67
+7a1f4 4 52 67
+7a1f8 24 52 67
+7a21c 10 333 122
+7a22c 8 52 67
+7a234 10 55 67
+7a244 4 56 67
+7a248 10 57 67
+7a258 4 59 67
+7a25c 4 160 70
+7a260 4 70 67
+7a264 4 333 122
+7a268 4 60 67
+7a26c 4 70 67
+7a270 8 59 67
+7a278 4 333 122
+7a27c 8 59 67
+7a284 8 69 70
+7a28c 8 60 67
+7a294 8 68 67
+7a29c 8 69 67
+7a2a4 10 68 67
+7a2b4 8 68 67
+7a2bc 4 69 70
+7a2c0 4 160 70
+7a2c4 8 69 67
+7a2cc 8 69 67
+7a2d4 c 69 67
+7a2e0 8 69 67
+7a2e8 4 69 67
+7a2ec 18 69 67
+7a304 4 69 67
+7a308 1c 70 67
+7a324 4 110 72
+7a328 10 333 122
+7a338 4 70 67
+7a33c 4 70 67
+7a340 8 70 67
+7a348 c 70 67
+7a354 c 333 122
+7a360 8 156 132
+7a368 8 70 67
+7a370 4 102 70
+7a374 4 60 67
+7a378 8 102 70
+7a380 20 74 67
+FUNC 7a3a0 34 0 google_breakpad::BasicCodeModules::Copy
+7a3a0 c 124 67
+7a3ac 4 124 67
+7a3b0 c 125 67
+7a3bc 8 125 67
+7a3c4 10 126 67
+FUNC 7a3d4 5c 0 CxaThreadKey::freeObject
+7a3d4 10 251 161
+7a3e4 4 141 161
+7a3e8 18 68 161
+7a400 8 146 161
+7a408 4 72 161
+7a40c 4 147 161
+7a410 c 253 161
+7a41c 4 72 161
+7a420 10 253 161
+FUNC 7a430 74 0 CxaThreadKey::~CxaThreadKey
+7a430 c 217 161
+7a43c 10 116 161
+7a44c 8 117 161
+7a454 4 119 161
+7a458 8 121 161
+7a460 8 119 161
+7a468 4 120 161
+7a46c 4 121 161
+7a470 8 117 161
+7a478 10 123 161
+7a488 8 124 161
+7a490 4 219 161
+7a494 8 220 161
+7a49c 8 219 161
+FUNC 7a4a4 10 0 __cxxabiv1::__shim_type_info::~__shim_type_info
+7a4a4 10 278 161
+FUNC 7a4b4 14 0 __cxxabiv1::__cxa_pure_virtual
+7a4b4 4 281 161
+7a4b8 4 282 161
+7a4bc 4 281 161
+7a4c0 4 282 161
+7a4c4 4 282 161
+FUNC 7a4c8 168 0 __cxxabiv1::__cxa_get_globals
+7a4c8 c 289 161
+7a4d4 4 228 161
+7a4d8 4 289 161
+7a4dc c 228 161
+7a4e8 4 229 161
+7a4ec 14 291 161
+7a500 10 68 161
+7a510 14 131 161
+7a524 8 135 161
+7a52c 8 136 161
+7a534 4 135 161
+7a538 4 136 161
+7a53c c 72 161
+7a548 4 239 161
+7a54c c 244 161
+7a558 14 291 161
+7a56c 18 156 161
+7a584 8 157 161
+7a58c 10 161 161
+7a59c 4 167 161
+7a5a0 4 161 161
+7a5a4 8 162 161
+7a5ac 10 167 161
+7a5bc 4 167 161
+7a5c0 4 168 161
+7a5c4 4 167 161
+7a5c8 4 169 161
+7a5cc 4 170 161
+7a5d0 10 167 161
+7a5e0 c 172 161
+7a5ec 8 165 161
+7a5f4 2c 72 161
+7a620 c 242 161
+7a62c 4 289 161
+FUNC 7a630 4c 0 throwException
+7a630 14 262 161
+7a644 8 263 161
+7a64c 4 264 161
+7a650 4 268 161
+7a654 4 264 161
+7a658 4 265 161
+7a65c 4 266 161
+7a660 4 265 161
+7a664 4 268 161
+7a668 8 266 161
+7a670 4 268 161
+7a674 8 271 161
+FUNC 7a67c 2c 0 __cxxabiv1::__cxa_get_globals_fast
+7a67c 4 223 161
+7a680 8 293 161
+7a688 8 223 161
+7a690 14 295 161
+7a6a4 4 293 161
+FUNC 7a6a8 5c 0 __cxxabiv1::__cxa_allocate_exception
+7a6a8 4 297 161
+7a6ac 4 299 161
+7a6b0 4 297 161
+7a6b4 4 299 161
+7a6b8 4 300 161
+7a6bc 20 307 161
+7a6dc 4 308 161
+7a6e0 8 309 161
+7a6e8 18 304 161
+7a700 4 297 161
+FUNC 7a704 60 0 __cxxabiv1::__cxa_free_exception
+7a704 8 311 161
+7a70c 4 314 161
+7a710 4 311 161
+7a714 4 312 161
+7a718 4 314 161
+7a71c 4 316 161
+7a720 4 322 161
+7a724 8 323 161
+7a72c 4 322 161
+7a730 4 317 161
+7a734 14 318 161
+7a748 18 317 161
+7a760 4 311 161
+FUNC 7a764 8 0 defaultExceptionCleanupFunc
+7a764 8 51 161
+FUNC 7a76c 3c 0 __cxxabiv1::__cxa_throw
+7a76c 8 327 161
+7a774 4 332 161
+7a778 4 327 161
+7a77c 4 332 161
+7a780 4 332 161
+7a784 4 329 161
+7a788 4 333 161
+7a78c 4 330 161
+7a790 4 332 161
+7a794 4 333 161
+7a798 4 335 161
+7a79c 4 332 161
+7a7a0 4 333 161
+7a7a4 4 335 161
+FUNC 7a7a8 58 0 __cxxabiv1::__cxa_rethrow
+7a7a8 8 338 161
+7a7b0 4 339 161
+7a7b4 4 340 161
+7a7b8 4 342 161
+7a7bc 1c 347 161
+7a7d8 4 350 161
+7a7dc 8 353 161
+7a7e4 10 348 161
+7a7f4 c 344 161
+FUNC 7a800 a4 0 __cxxabiv1::__cxa_begin_catch
+7a800 c 356 161
+7a80c 4 356 161
+7a810 4 359 161
+7a814 4 361 161
+7a818 4 358 161
+7a81c 14 361 161
+7a830 4 362 161
+7a834 4 361 161
+7a838 4 362 161
+7a83c 4 368 161
+7a840 4 369 161
+7a844 4 369 161
+7a848 4 369 161
+7a84c 8 371 161
+7a854 4 372 161
+7a858 4 373 161
+7a85c 4 375 161
+7a860 4 377 161
+7a864 8 375 161
+7a86c 10 378 161
+7a87c c 369 161
+7a888 18 363 161
+7a8a0 4 356 161
+FUNC 7a8a4 b4 0 __cxxabiv1::__cxa_end_catch
+7a8a4 8 380 161
+7a8ac 4 381 161
+7a8b0 4 382 161
+7a8b4 4 381 161
+7a8b8 4 385 161
+7a8bc 20 389 161
+7a8dc 4 390 161
+7a8e0 4 391 161
+7a8e4 8 409 161
+7a8ec 4 395 161
+7a8f0 4 396 161
+7a8f4 8 400 161
+7a8fc 8 404 161
+7a904 4 408 161
+7a908 8 409 161
+7a910 8 397 161
+7a918 8 398 161
+7a920 8 408 161
+7a928 4 401 161
+7a92c 4 402 161
+7a930 4 401 161
+7a934 4 409 161
+7a938 4 402 161
+7a93c 18 405 161
+7a954 4 380 161
+FUNC 7a958 c 0 operator delete
+7a958 4 37 163
+7a95c 4 38 163
+7a960 4 39 163
+FUNC 7a964 4 0 operator delete []
+7a964 4 44 163
+FUNC 7a968 4 0 std::exception::~exception
+7a968 4 41 166
+FUNC 7a96c c 0 std::exception::what
+7a96c 4 44 166
+7a970 8 45 166
+FUNC 7a978 4 0 std::bad_exception::~bad_exception
+7a978 4 53 166
+FUNC 7a97c c 0 std::bad_exception::what
+7a97c 4 56 166
+7a980 8 57 166
+FUNC 7a988 4 0 std::exception::~exception
+7a988 4 41 166
+FUNC 7a98c 4 0 std::bad_exception::~bad_exception
+7a98c 4 53 166
+FUNC 7a990 10 0 std::exception::exception
+7a990 c 36 166
+7a99c 4 37 166
+FUNC 7a9a0 10 0 std::bad_exception::bad_exception
+7a9a0 c 48 166
+7a9ac 4 49 166
+FUNC 7a9b0 20 0 std::uncaught_exception
+7a9b0 8 60 166
+7a9b8 4 63 166
+7a9bc 4 64 166
+7a9c0 4 65 166
+7a9c4 4 64 166
+7a9c8 8 65 166
+FUNC 7a9d0 78 0 __gabixx::__fatal_error
+7a9d0 4 36 167
+7a9d4 8 41 167
+7a9dc 8 36 167
+7a9e4 4 36 167
+7a9e8 14 41 167
+7a9fc 14 65 167
+7aa10 4 67 167
+7aa14 10 68 167
+7aa24 4 69 167
+7aa28 14 70 167
+7aa3c 8 72 167
+7aa44 4 75 167
+FUNC 7aa48 10 0 __cxxabiv1::call_terminate
+7aa48 8 52 168
+7aa50 4 53 168
+7aa54 4 54 168
+FUNC 7aa58 a0 0 __cxxabiv1::getTypePtr
+7aa58 c 418 168
+7aa64 4 418 168
+7aa68 4 419 168
+7aa6c c 423 168
+7aa78 8 441 168
+7aa80 18 423 168
+7aa98 4 437 168
+7aa9c 8 443 168
+7aaa4 4 444 168
+7aaa8 4 443 168
+7aaac 4 444 168
+7aab0 8 445 168
+7aab8 4 433 168
+7aabc 8 443 168
+7aac4 4 444 168
+7aac8 4 443 168
+7aacc 4 444 168
+7aad0 8 445 168
+7aad8 4 429 168
+7aadc 8 443 168
+7aae4 4 444 168
+7aae8 4 443 168
+7aaec 4 444 168
+7aaf0 8 445 168
+FUNC 7aaf8 c4 0 __cxxabiv1::canExceptionSpecCatch
+7aaf8 18 452 168
+7ab10 14 452 168
+7ab24 4 453 168
+7ab28 4 459 168
+7ab2c 4 458 168
+7ab30 4 459 168
+7ab34 4 471 168
+7ab38 8 459 168
+7ab40 10 469 168
+7ab50 4 472 168
+7ab54 4 471 168
+7ab58 4 470 168
+7ab5c 10 471 168
+7ab6c 4 471 168
+7ab70 8 462 168
+7ab78 4 463 168
+7ab7c 4 476 168
+7ab80 18 477 168
+7ab98 4 473 168
+7ab9c 18 477 168
+7abb4 8 454 168
+FUNC 7abbc 3d4 0 __cxxabiv1::scanEHTable
+7abbc 28 62 168
+7abe4 4 72 168
+7abe8 14 62 168
+7abfc 4 62 168
+7ac00 4 72 168
+7ac04 4 64 168
+7ac08 4 69 168
+7ac0c 4 65 168
+7ac10 4 66 168
+7ac14 4 67 168
+7ac18 4 68 168
+7ac1c 4 69 168
+7ac20 4 72 168
+7ac24 8 73 168
+7ac2c c 89 168
+7ac38 4 89 168
+7ac3c 8 90 168
+7ac44 4 99 168
+7ac48 4 95 168
+7ac4c 8 96 168
+7ac54 4 100 168
+7ac58 8 96 168
+7ac60 4 97 168
+7ac64 4 96 168
+7ac68 c 97 168
+7ac74 4 100 168
+7ac78 4 98 168
+7ac7c 8 100 168
+7ac84 c 101 168
+7ac90 4 103 168
+7ac94 4 105 168
+7ac98 4 103 168
+7ac9c 8 105 168
+7aca4 4 103 168
+7aca8 4 105 168
+7acac 4 106 168
+7acb0 4 105 168
+7acb4 4 106 168
+7acb8 8 107 168
+7acc0 c 108 168
+7accc 4 110 168
+7acd0 4 111 168
+7acd4 4 110 168
+7acd8 4 115 168
+7acdc 4 110 168
+7ace0 4 111 168
+7ace4 4 112 168
+7ace8 4 113 168
+7acec 4 115 168
+7acf0 8 118 168
+7acf8 10 119 168
+7ad08 10 120 168
+7ad18 10 121 168
+7ad28 8 122 168
+7ad30 8 123 168
+7ad38 8 275 168
+7ad40 8 206 168
+7ad48 4 209 168
+7ad4c 8 210 168
+7ad54 18 216 168
+7ad6c 4 216 168
+7ad70 8 219 168
+7ad78 4 225 168
+7ad7c 4 221 168
+7ad80 4 222 168
+7ad84 4 223 168
+7ad88 4 224 168
+7ad8c 4 225 168
+7ad90 2c 280 168
+7adbc 4 77 168
+7adc0 c 78 168
+7adcc 8 79 168
+7add4 4 80 168
+7add8 4 124 168
+7addc c 130 168
+7ade8 4 131 168
+7adec c 132 168
+7adf8 8 266 168
+7ae00 4 267 168
+7ae04 14 123 168
+7ae18 4 144 168
+7ae1c 8 235 168
+7ae24 8 144 168
+7ae2c 4 251 168
+7ae30 4 235 168
+7ae34 4 243 168
+7ae38 8 144 168
+7ae40 4 243 168
+7ae44 8 208 168
+7ae4c 14 153 168
+7ae60 4 154 168
+7ae64 8 172 168
+7ae6c 4 174 168
+7ae70 4 176 168
+7ae74 8 177 168
+7ae7c 1c 183 168
+7ae98 4 183 168
+7ae9c 8 184 168
+7aea4 20 188 168
+7aec4 4 188 168
+7aec8 8 189 168
+7aed0 8 197 168
+7aed8 4 262 168
+7aedc 4 263 168
+7aee0 4 262 168
+7aee4 4 263 168
+7aee8 4 264 168
+7aeec 10 271 168
+7aefc 8 147 168
+7af04 4 148 168
+7af08 4 147 168
+7af0c 4 148 168
+7af10 4 204 168
+7af14 10 251 168
+7af24 8 235 168
+7af2c 10 243 168
+7af3c 4 134 168
+7af40 4 136 168
+7af44 4 135 168
+7af48 4 136 168
+7af4c 4 137 168
+7af50 4 255 168
+7af54 4 256 168
+7af58 4 252 168
+7af5c 4 253 168
+7af60 4 254 168
+7af64 4 255 168
+7af68 4 256 168
+7af6c 4 257 168
+7af70 8 194 168
+7af78 4 195 168
+7af7c 4 191 168
+7af80 4 192 168
+7af84 4 193 168
+7af88 8 195 168
+FUNC 7af90 48 0 __cxxabiv1::setRegisters
+7af90 c 481 168
+7af9c 8 481 168
+7afa4 10 483 168
+7afb4 10 485 168
+7afc4 8 486 168
+7afcc 8 487 168
+7afd4 4 486 168
+FUNC 7afd8 8 0 __cxxabiv1::continueUnwinding
+7afd8 8 492 168
+FUNC 7afe0 4 0 __cxxabiv1::saveDataToBarrierCache
+7afe0 4 498 168
+FUNC 7afe4 4 0 __cxxabiv1::loadDataFromBarrierCache
+7afe4 4 501 168
+FUNC 7afe8 4 0 __cxxabiv1::prepareBeginCleanup
+7afe8 4 503 168
+FUNC 7afec 4 0 __cxxabiv1::saveUnexpectedDataToBarrierCache
+7afec 4 507 168
+FUNC 7aff0 c 0 std::bad_alloc::what
+7aff0 4 51 169
+7aff4 8 52 169
+FUNC 7affc 10 0 std::bad_alloc::~bad_alloc
+7affc 10 47 169
+FUNC 7b00c 30 0 std::bad_alloc::~bad_alloc
+7b00c 10 47 169
+7b01c 10 47 169
+7b02c 4 48 169
+7b030 8 48 169
+7b038 4 48 169
+FUNC 7b03c 2c 0 std::bad_alloc::bad_alloc
+7b03c c 44 169
+7b048 14 44 169
+7b05c c 45 169
+FUNC 7b068 90 0 operator new
+7b068 c 96 169
+7b074 4 96 169
+7b078 1c 90 169
+7b094 4 104 169
+7b098 4 107 169
+7b09c 8 99 169
+7b0a4 4 100 169
+7b0a8 c 110 169
+7b0b4 c 105 169
+7b0c0 4 44 169
+7b0c4 8 105 169
+7b0cc 4 44 169
+7b0d0 4 105 169
+7b0d4 4 44 169
+7b0d8 8 105 169
+7b0e0 4 44 169
+7b0e4 10 105 169
+7b0f4 4 96 169
+FUNC 7b0f8 24 0 operator new []
+7b0f8 8 123 169
+7b100 4 124 169
+7b104 14 125 169
+7b118 4 123 169
+FUNC 7b11c 1b4 0 __cxxabiv1::__gxx_personality_v0
+7b11c 4 56 171
+7b120 4 57 171
+7b124 4 56 171
+7b128 4 57 171
+7b12c 4 57 171
+7b130 4 56 171
+7b134 4 57 171
+7b138 4 57 171
+7b13c c 56 171
+7b148 8 56 171
+7b150 c 57 171
+7b15c 18 61 171
+7b174 4 67 171
+7b178 4 58 171
+7b17c 4 88 171
+7b180 4 89 171
+7b184 4 93 171
+7b188 4 90 171
+7b18c 4 93 171
+7b190 4 98 171
+7b194 4 94 171
+7b198 4 98 171
+7b19c 4 95 171
+7b1a0 4 97 171
+7b1a4 4 96 171
+7b1a8 4 93 171
+7b1ac 4 94 171
+7b1b0 4 95 171
+7b1b4 4 96 171
+7b1b8 4 97 171
+7b1bc 4 98 171
+7b1c0 c 106 171
+7b1cc 4 110 171
+7b1d0 4 106 171
+7b1d4 14 109 171
+7b1e8 4 58 171
+7b1ec 18 126 171
+7b204 10 68 171
+7b214 c 69 171
+7b220 4 71 171
+7b224 4 73 171
+7b228 4 78 171
+7b22c 4 74 171
+7b230 4 78 171
+7b234 4 75 171
+7b238 4 78 171
+7b23c 4 76 171
+7b240 4 77 171
+7b244 4 73 171
+7b248 4 74 171
+7b24c 4 75 171
+7b250 4 76 171
+7b254 4 77 171
+7b258 8 78 171
+7b260 14 121 171
+7b274 10 114 171
+7b284 c 115 171
+7b290 c 117 171
+7b29c 4 119 171
+7b2a0 4 117 171
+7b2a4 c 118 171
+7b2b0 c 100 171
+7b2bc c 102 171
+7b2c8 8 103 171
+FUNC 7b2d0 8 0 __cxxabiv1::__si_class_type_info::code
+7b2d0 8 174 162
+FUNC 7b2d8 10 0 __cxxabiv1::__si_class_type_info::~__si_class_type_info
+7b2d8 10 34 172
+FUNC 7b2e8 30 0 __cxxabiv1::__si_class_type_info::~__si_class_type_info
+7b2e8 10 34 172
+7b2f8 10 34 172
+7b308 4 36 172
+7b30c 8 36 172
+7b314 4 36 172
+FUNC 7b318 60 0 __cxxabiv1::__si_class_type_info::walk_to
+7b318 10 40 172
+7b328 10 40 172
+7b338 c 41 172
+7b344 24 45 172
+7b368 10 46 172
+FUNC 7b378 18 0 __gabixx::__default_terminate
+7b378 4 72 173
+7b37c 4 68 173
+7b380 4 72 173
+7b384 4 68 173
+7b388 4 72 173
+7b38c 4 75 173
+FUNC 7b390 30 0 __gabixx::__terminate
+7b390 8 78 173
+7b398 4 79 173
+7b39c 4 84 173
+7b3a0 4 91 173
+7b3a4 8 80 173
+7b3ac 8 84 173
+7b3b4 4 85 173
+7b3b8 4 85 173
+7b3bc 4 91 173
+FUNC 7b3c0 1c 0 std::get_terminate
+7b3c0 18 99 173
+7b3d8 4 100 173
+FUNC 7b3dc 24 0 std::terminate
+7b3dc 4 99 173
+7b3e0 4 109 173
+7b3e4 4 99 173
+7b3e8 4 109 173
+7b3ec 10 99 173
+7b3fc 4 110 173
+FUNC 7b400 c 0 __gabixx::__default_unexpected
+7b400 8 46 173
+7b408 4 47 173
+FUNC 7b40c 1c 0 std::get_unexpected
+7b40c 18 114 173
+7b424 4 115 173
+FUNC 7b428 4 0 std::type_info::~type_info
+7b428 4 44 174
+FUNC 7b42c c 0 std::bad_cast::what
+7b42c 4 85 174
+7b430 8 86 174
+FUNC 7b438 10 0 std::bad_cast::~bad_cast
+7b438 10 81 174
+FUNC 7b448 30 0 std::bad_cast::~bad_cast
+7b448 10 81 174
+7b458 10 81 174
+7b468 4 82 174
+7b46c 8 82 174
+7b474 4 82 174
+FUNC 7b478 c 0 std::type_info::operator==
+7b478 4 55 174
+7b47c 8 57 174
+FUNC 7b484 c 0 std::type_info::operator!=
+7b484 4 62 174
+7b488 8 63 174
+FUNC 7b490 2c 0 std::bad_cast::bad_cast
+7b490 c 78 174
+7b49c 14 78 174
+7b4b0 c 79 174
+FUNC 7b4bc 8 0 std::__Named_exception::what
+7b4bc 8 95 234
+FUNC 7b4c4 44 0 std::__Named_exception::~__Named_exception
+7b4c4 8 89 234
+7b4cc 4 90 234
+7b4d0 8 89 234
+7b4d8 8 89 234
+7b4e0 4 90 234
+7b4e4 8 89 234
+7b4ec 8 90 234
+7b4f4 4 91 234
+7b4f8 4 89 234
+7b4fc 8 92 234
+7b504 4 89 234
+FUNC 7b508 24 0 std::__Named_exception::~__Named_exception
+7b508 c 89 234
+7b514 4 89 234
+7b518 4 92 234
+7b51c 4 92 234
+7b520 8 92 234
+7b528 4 92 234
+FUNC 7b52c 14 0 std::logic_error::~logic_error
+7b52c 14 76 182
+FUNC 7b540 24 0 std::logic_error::~logic_error
+7b540 c 76 182
+7b54c 8 76 182
+7b554 4 76 182
+7b558 8 76 182
+7b560 4 76 182
+FUNC 7b564 14 0 std::length_error::~length_error
+7b564 14 80 182
+FUNC 7b578 24 0 std::length_error::~length_error
+7b578 c 80 182
+7b584 8 80 182
+7b58c 4 80 182
+7b590 8 80 182
+7b598 4 80 182
+FUNC 7b59c 14 0 std::out_of_range::~out_of_range
+7b59c 14 81 182
+FUNC 7b5b0 24 0 std::out_of_range::~out_of_range
+7b5b0 c 81 182
+7b5bc 8 81 182
+7b5c4 4 81 182
+7b5c8 8 81 182
+7b5d0 4 81 182
+FUNC 7b5d4 18 0 std::allocator<char>::deallocate
+7b5d4 4 319 202
+7b5d8 8 161 202
+7b5e0 4 161 202
+7b5e4 4 135 223
+7b5e8 4 325 202
+FUNC 7b5ec a0 0 std::__Named_exception::__Named_exception
+7b5ec 10 19 234
+7b5fc 1c 19 234
+7b618 8 20 234
+7b620 4 20 234
+7b624 4 21 234
+7b628 4 20 234
+7b62c 4 21 234
+7b630 c 32 234
+7b63c c 35 234
+7b648 8 36 234
+7b650 10 40 234
+7b660 c 22 234
+7b66c 4 23 234
+7b670 8 28 234
+7b678 14 25 234
+FUNC 7b68c c4 0 std::__stl_throw_out_of_range
+7b68c 10 70 232
+7b69c 4 70 232
+7b6a0 10 70 232
+7b6b0 10 70 232
+7b6c0 c 34 233
+7b6cc 4 74 233
+7b6d0 4 64 239
+7b6d4 4 96 239
+7b6d8 c 74 233
+7b6e4 8 96 239
+7b6ec c 97 239
+7b6f8 1c 70 232
+7b714 10 70 232
+7b724 8 64 239
+7b72c c 96 239
+7b738 18 97 239
+FUNC 7b750 c4 0 std::__stl_throw_length_error
+7b750 10 73 232
+7b760 4 73 232
+7b764 10 73 232
+7b774 10 73 232
+7b784 c 34 233
+7b790 4 66 233
+7b794 4 64 239
+7b798 4 96 239
+7b79c c 66 233
+7b7a8 8 96 239
+7b7b0 c 97 239
+7b7bc 1c 73 232
+7b7d8 10 73 232
+7b7e8 8 64 239
+7b7f0 c 96 239
+7b7fc 18 97 239
+FUNC 7b814 18 0 std::_Filebuf_base::_Filebuf_base
+7b814 14 128 181
+7b828 4 129 181
+FUNC 7b82c 28 0 std::_Filebuf_base::_S_initialize
+7b82c 4 132 181
+7b830 4 144 181
+7b834 4 132 181
+7b838 14 144 181
+7b84c 8 146 181
+FUNC 7b854 60 0 std::_Filebuf_base::_M_file_size
+7b854 c 151 181
+7b860 10 114 181
+7b870 4 111 181
+7b874 4 114 181
+7b878 10 114 181
+7b888 10 153 181
+7b898 4 115 181
+7b89c 4 153 181
+7b8a0 8 115 181
+7b8a8 c 153 181
+FUNC 7b8b4 140 0 std::_Filebuf_base::_M_open
+7b8b4 18 157 181
+7b8cc 4 157 181
+7b8d0 8 160 181
+7b8d8 10 166 181
+7b8e8 4 190 181
+7b8ec 10 212 181
+7b8fc 18 166 181
+7b914 4 169 181
+7b918 c 193 181
+7b924 4 195 181
+7b928 4 198 181
+7b92c 4 200 181
+7b930 4 198 181
+7b934 4 200 181
+7b938 4 204 181
+7b93c 4 205 181
+7b940 4 206 181
+7b944 c 106 181
+7b950 4 106 181
+7b954 10 106 181
+7b964 8 209 181
+7b96c 8 211 181
+7b974 10 212 181
+7b984 8 187 181
+7b98c 4 176 181
+7b990 8 177 181
+7b998 8 173 181
+7b9a0 8 183 181
+7b9a8 8 180 181
+7b9b0 c 200 181
+7b9bc c 200 181
+7b9c8 4 204 181
+7b9cc 4 205 181
+7b9d0 4 206 181
+7b9d4 c 208 181
+7b9e0 4 201 181
+7b9e4 4 204 181
+7b9e8 4 205 181
+7b9ec 8 206 181
+FUNC 7b9f4 8 0 std::_Filebuf_base::_M_open
+7b9f4 8 221 181
+FUNC 7b9fc d4 0 std::_Filebuf_base::_M_open
+7b9fc 10 228 181
+7ba0c 4 229 181
+7ba10 8 229 181
+7ba18 10 229 181
+7ba28 c 232 181
+7ba34 8 234 181
+7ba3c c 82 181
+7ba48 4 94 181
+7ba4c 8 95 181
+7ba54 4 238 181
+7ba58 4 95 181
+7ba5c 4 240 181
+7ba60 4 237 181
+7ba64 4 106 181
+7ba68 4 240 181
+7ba6c 4 106 181
+7ba70 4 241 181
+7ba74 4 106 181
+7ba78 8 106 181
+7ba80 4 242 181
+7ba84 4 243 181
+7ba88 10 244 181
+7ba98 4 230 181
+7ba9c 10 244 181
+7baac 24 106 181
+FUNC 7bad0 58 0 std::_Filebuf_base::_M_close
+7bad0 4 247 181
+7bad4 4 249 181
+7bad8 8 247 181
+7bae0 c 248 181
+7baec 4 251 181
+7baf0 4 251 181
+7baf4 4 251 181
+7baf8 8 253 181
+7bb00 4 254 181
+7bb04 10 256 181
+7bb14 14 251 181
+FUNC 7bb28 8 0 std::_Filebuf_base::_M_read
+7bb28 8 262 181
+FUNC 7bb30 68 0 std::_Filebuf_base::_M_write
+7bb30 10 268 181
+7bb40 10 268 181
+7bb50 10 276 181
+7bb60 10 270 181
+7bb70 4 272 181
+7bb74 4 278 181
+7bb78 4 276 181
+7bb7c 4 277 181
+7bb80 4 272 181
+7bb84 4 273 181
+7bb88 10 283 181
+FUNC 7bb98 90 0 std::_Filebuf_base::_M_seek
+7bb98 4 287 181
+7bb9c 4 290 181
+7bba0 8 287 181
+7bba8 4 287 181
+7bbac 14 290 181
+7bbc0 10 309 181
+7bbd0 4 294 181
+7bbd4 4 292 181
+7bbd8 4 308 181
+7bbdc 8 309 181
+7bbe4 8 308 181
+7bbec 14 300 181
+7bc00 4 308 181
+7bc04 4 302 181
+7bc08 8 309 181
+7bc10 8 308 181
+7bc18 4 297 181
+7bc1c 8 309 181
+7bc24 4 308 181
+FUNC 7bc28 c 0 std::_Filebuf_base::_M_unmap
+7bc28 c 340 181
+FUNC 7bc34 8c 0 std::_Filebuf_base::_M_mmap
+7bc34 4 317 181
+7bc38 4 320 181
+7bc3c 14 317 181
+7bc50 4 320 181
+7bc54 4 317 181
+7bc58 14 320 181
+7bc6c 4 321 181
+7bc70 4 320 181
+7bc74 4 321 181
+7bc78 14 322 181
+7bc8c 14 334 181
+7bca0 8 327 181
+7bca8 c 323 181
+7bcb4 4 324 181
+7bcb8 8 323 181
+FUNC 7bcc0 424 0 std::_Underflow<char, std::char_traits<char> >::_M_doit
+7bcc0 14 38 183
+7bcd4 4 38 183
+7bcd8 8 42 183
+7bce0 8 46 183
+7bce8 8 220 209
+7bcf0 8 93 236
+7bcf8 4 48 183
+7bcfc 4 94 236
+7bd00 4 95 236
+7bd04 4 221 209
+7bd08 4 48 183
+7bd0c 4 223 247
+7bd10 14 93 183
+7bd24 4 430 208
+7bd28 4 44 183
+7bd2c 4 430 208
+7bd30 8 430 208
+7bd38 8 430 208
+7bd40 c 432 208
+7bd4c 8 438 208
+7bd54 4 440 208
+7bd58 4 435 208
+7bd5c 4 436 208
+7bd60 4 440 208
+7bd64 c 59 183
+7bd70 8 502 208
+7bd78 8 498 208
+7bd80 8 502 208
+7bd88 8 509 208
+7bd90 4 537 208
+7bd94 8 213 204
+7bd9c 14 515 208
+7bdb0 4 516 208
+7bdb4 4 522 208
+7bdb8 4 525 208
+7bdbc 8 522 208
+7bdc4 8 525 208
+7bdcc 4 537 208
+7bdd0 24 213 204
+7bdf4 8 547 208
+7bdfc 8 549 208
+7be04 10 549 208
+7be14 10 549 208
+7be24 8 549 208
+7be2c 4 555 208
+7be30 4 93 236
+7be34 4 94 236
+7be38 4 95 236
+7be3c 8 223 247
+7be44 8 58 183
+7be4c 4 61 183
+7be50 4 62 183
+7be54 4 61 183
+7be58 c 62 183
+7be64 14 66 183
+7be78 8 67 183
+7be80 8 68 183
+7be88 4 67 183
+7be8c 8 68 183
+7be94 10 68 183
+7bea4 c 128 209
+7beb0 8 69 183
+7beb8 4 72 183
+7bebc 4 70 183
+7bec0 8 74 183
+7bec8 4 75 183
+7becc 10 77 183
+7bedc 8 80 183
+7bee4 4 93 236
+7bee8 4 80 183
+7beec 4 94 236
+7bef0 4 95 236
+7bef4 4 223 247
+7bef8 4 81 183
+7befc 4 224 201
+7bf00 4 504 208
+7bf04 4 224 201
+7bf08 c 504 208
+7bf14 18 549 208
+7bf2c 8 119 208
+7bf34 c 120 208
+7bf40 4 121 208
+7bf44 4 122 208
+7bf48 4 124 208
+7bf4c 4 488 208
+7bf50 4 487 208
+7bf54 4 553 208
+7bf58 4 488 208
+7bf5c 4 93 236
+7bf60 4 94 236
+7bf64 4 95 236
+7bf68 14 93 183
+7bf7c 14 549 208
+7bf90 c 549 208
+7bf9c c 563 208
+7bfa8 4 87 183
+7bfac 8 88 183
+7bfb4 18 549 208
+7bfcc 4 93 236
+7bfd0 4 519 208
+7bfd4 4 94 236
+7bfd8 4 95 236
+7bfdc 14 93 183
+7bff0 8 75 183
+7bff8 8 224 201
+7c000 8 224 201
+7c008 4 328 209
+7c00c 8 327 209
+7c014 4 93 236
+7c018 4 94 236
+7c01c 8 95 236
+7c024 8 84 183
+7c02c c 128 209
+7c038 c 680 208
+7c044 c 644 208
+7c050 4 645 208
+7c054 4 655 208
+7c058 8 647 208
+7c060 4 227 204
+7c064 4 655 208
+7c068 4 227 204
+7c06c 4 655 208
+7c070 8 227 204
+7c078 c 655 208
+7c084 c 661 208
+7c090 4 664 208
+7c094 4 669 208
+7c098 c 670 208
+7c0a4 c 669 208
+7c0b0 8 686 208
+7c0b8 c 687 208
+7c0c4 8 688 208
+7c0cc 4 689 208
+7c0d0 4 690 208
+7c0d4 4 691 208
+7c0d8 4 692 208
+7c0dc 8 44 183
+FUNC 7c0e4 14 0 std::ios_base::failure::~failure
+7c0e4 14 41 184
+FUNC 7c0f8 24 0 std::ios_base::failure::~failure
+7c0f8 c 41 184
+7c104 8 41 184
+7c10c 4 41 184
+7c110 8 41 184
+7c118 4 41 184
+FUNC 7c11c 18 0 std::allocator<char>::deallocate
+7c11c 4 319 202
+7c120 8 161 202
+7c128 4 161 202
+7c12c 4 135 223
+7c130 4 325 202
+FUNC 7c134 30 0 std::ios_base::failure::failure
+7c134 c 37 184
+7c140 4 37 184
+7c144 14 38 184
+7c158 c 39 184
+FUNC 7c164 60 0 std::ios_base::_M_invoke_callbacks
+7c164 c 199 184
+7c170 4 200 184
+7c174 4 199 184
+7c178 14 200 184
+7c18c 4 201 184
+7c190 8 203 184
+7c198 4 201 184
+7c19c 10 203 184
+7c1ac 8 200 184
+7c1b4 10 205 184
+FUNC 7c1c4 d0 0 std::ios_base::imbue
+7c1c4 c 124 184
+7c1d0 4 125 184
+7c1d4 8 124 184
+7c1dc 8 124 184
+7c1e4 8 125 184
+7c1ec 4 124 184
+7c1f0 c 125 184
+7c1fc 10 126 184
+7c20c c 127 184
+7c218 c 128 184
+7c224 c 129 184
+7c230 8 129 184
+7c238 18 135 184
+7c250 c 132 184
+7c25c c 133 184
+7c268 1c 135 184
+7c284 10 129 184
+FUNC 7c294 64 0 std::ios_base::~ios_base
+7c294 4 299 184
+7c298 4 300 184
+7c29c 10 299 184
+7c2ac c 299 184
+7c2b8 4 300 184
+7c2bc 8 301 184
+7c2c4 8 302 184
+7c2cc 8 303 184
+7c2d4 4 299 184
+7c2d8 8 304 184
+7c2e0 8 299 184
+7c2e8 10 299 184
+FUNC 7c2f8 24 0 std::ios_base::~ios_base
+7c2f8 c 299 184
+7c304 4 299 184
+7c308 4 304 184
+7c30c 4 304 184
+7c310 8 304 184
+7c318 4 304 184
+FUNC 7c31c c0 0 std::ios_base::_M_throw_failure
+7c31c 4 209 184
+7c320 4 227 184
+7c324 c 209 184
+7c330 4 227 184
+7c334 4 106 244
+7c338 4 481 202
+7c33c 4 106 244
+7c340 4 107 244
+7c344 4 380 238
+7c348 4 227 184
+7c34c 4 227 184
+7c350 4 481 202
+7c354 18 106 244
+7c36c 4 101 206
+7c370 4 227 184
+7c374 4 64 239
+7c378 c 96 239
+7c384 c 97 239
+7c390 18 227 184
+7c3a8 8 64 239
+7c3b0 c 96 239
+7c3bc 10 97 239
+7c3cc 10 227 184
+FUNC 7c3dc 6c 0 std::ios_base::ios_base
+7c3dc 4 287 184
+7c3e0 4 295 184
+7c3e4 8 287 184
+7c3ec 4 287 184
+7c3f0 4c 295 184
+7c43c c 296 184
+FUNC 7c448 4 0 std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >::imbue
+7c448 4 180 235
+FUNC 7c44c 4 0 std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >::setbuf
+7c44c 4 200 235
+FUNC 7c450 c 0 std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >::seekoff
+7c450 c 195 235
+FUNC 7c45c c 0 std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >::seekpos
+7c45c c 189 235
+FUNC 7c468 8 0 std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >::sync
+7c468 8 184 235
+FUNC 7c470 8 0 std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >::showmanyc
+7c470 8 176 235
+FUNC 7c478 8 0 std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >::underflow
+7c478 8 171 235
+FUNC 7c480 8 0 std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >::pbackfail
+7c480 8 152 235
+FUNC 7c488 8 0 std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >::overflow
+7c488 8 158 235
+FUNC 7c490 10 0 std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >::~basic_streambuf
+7c490 10 41 235
+FUNC 7c4a0 30 0 std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >::~basic_streambuf
+7c4a0 4 40 235
+7c4a4 4 41 235
+7c4a8 8 40 235
+7c4b0 4 41 235
+7c4b4 4 40 235
+7c4b8 8 41 235
+7c4c0 4 41 235
+7c4c4 8 41 235
+7c4cc 4 41 235
+FUNC 7c4d0 10 0 std::basic_ios<wchar_t, std::char_traits<wchar_t> >::~basic_ios
+7c4d0 10 59 211
+FUNC 7c4e0 30 0 std::basic_ios<wchar_t, std::char_traits<wchar_t> >::~basic_ios
+7c4e0 10 59 211
+7c4f0 10 59 211
+7c500 4 59 211
+7c504 8 59 211
+7c50c 4 59 211
+FUNC 7c510 20 0 std::basic_istream<wchar_t, std::char_traits<wchar_t> >::~basic_istream
+7c510 4 90 214
+7c514 c 90 214
+7c520 10 59 211
+FUNC 7c540 3c 0 std::basic_istream<wchar_t, std::char_traits<wchar_t> >::~basic_istream
+7c540 4 90 214
+7c544 4 90 214
+7c548 8 90 214
+7c550 4 90 214
+7c554 8 90 214
+7c55c 10 59 211
+7c56c 4 90 214
+7c570 8 90 214
+7c578 4 90 214
+FUNC 7c58c 20 0 std::basic_ostream<wchar_t, std::char_traits<wchar_t> >::~basic_ostream
+7c58c 4 43 229
+7c590 c 44 229
+7c59c 10 59 211
+FUNC 7c5bc 3c 0 std::basic_ostream<wchar_t, std::char_traits<wchar_t> >::~basic_ostream
+7c5bc 4 43 229
+7c5c0 4 44 229
+7c5c4 8 43 229
+7c5cc 4 43 229
+7c5d0 8 44 229
+7c5d8 10 59 211
+7c5e8 4 44 229
+7c5ec 8 44 229
+7c5f4 4 44 229
+FUNC 7c608 c4 0 std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >::_M_xsputnc
+7c608 4 112 235
+7c60c 4 117 235
+7c610 10 112 235
+7c620 20 117 235
+7c640 4 261 247
+7c644 4 122 235
+7c648 4 261 247
+7c64c 4 123 235
+7c650 4 117 235
+7c654 8 123 235
+7c65c 4 117 235
+7c660 4 118 235
+7c664 4 120 235
+7c668 4 118 235
+7c66c 8 261 247
+7c674 4 118 235
+7c678 8 120 235
+7c680 4 118 235
+7c684 4 127 235
+7c688 10 127 235
+7c698 8 126 235
+7c6a0 4 128 235
+7c6a4 8 117 235
+7c6ac 18 133 235
+7c6c4 8 114 235
+FUNC 7c6cc c8 0 std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >::xsputn
+7c6cc 4 84 235
+7c6d0 4 89 235
+7c6d4 10 84 235
+7c6e4 8 84 235
+7c6ec 4 89 235
+7c6f0 4 84 235
+7c6f4 10 89 235
+7c704 4 253 247
+7c708 4 94 235
+7c70c 4 95 235
+7c710 4 253 247
+7c714 4 95 235
+7c718 4 96 235
+7c71c 4 89 235
+7c720 8 96 235
+7c728 4 89 235
+7c72c 4 90 235
+7c730 4 92 235
+7c734 4 90 235
+7c738 8 253 247
+7c740 4 90 235
+7c744 8 92 235
+7c74c 4 90 235
+7c750 4 100 235
+7c754 8 100 235
+7c75c 4 102 235
+7c760 8 100 235
+7c768 8 99 235
+7c770 4 101 235
+7c774 8 89 235
+7c77c 18 108 235
+FUNC 7c794 38 0 std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >::sync
+7c794 4 402 208
+7c798 4 406 208
+7c79c 4 402 208
+7c7a0 8 403 208
+7c7a8 4 405 208
+7c7ac c 405 208
+7c7b8 8 405 208
+7c7c0 c 407 208
+FUNC 7c7cc dc 0 std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >::_M_unshift
+7c7cc 14 593 208
+7c7e0 c 593 208
+7c7ec 8 322 209
+7c7f4 4 600 208
+7c7f8 4 600 208
+7c7fc 4 322 209
+7c800 4 600 208
+7c804 4 600 208
+7c808 4 322 209
+7c80c 4 600 208
+7c810 8 600 208
+7c818 8 603 208
+7c820 8 322 209
+7c828 4 596 208
+7c82c 4 605 208
+7c830 4 596 208
+7c834 4 598 208
+7c838 4 296 204
+7c83c 4 597 208
+7c840 14 296 204
+7c854 4 597 208
+7c858 c 296 204
+7c864 4 600 208
+7c868 4 322 209
+7c86c 4 600 208
+7c870 4 602 208
+7c874 18 611 208
+7c88c 4 610 208
+7c890 18 611 208
+FUNC 7c8a8 a4 0 std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >::showmanyc
+7c8a8 4 132 208
+7c8ac 4 135 208
+7c8b0 8 132 208
+7c8b8 8 134 208
+7c8c0 8 134 208
+7c8c8 8 136 208
+7c8d0 8 138 208
+7c8d8 4 144 208
+7c8dc 10 145 208
+7c8ec 18 139 208
+7c904 8 140 208
+7c90c c 141 208
+7c918 4 141 208
+7c91c 10 145 208
+7c92c 8 137 208
+7c934 4 145 208
+7c938 8 137 208
+7c940 c 145 208
+FUNC 7c94c 40 0 std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >::uflow
+7c94c 8 162 235
+7c954 4 163 235
+7c958 4 162 235
+7c95c 4 162 235
+7c960 8 163 235
+7c968 8 165 235
+7c970 10 165 235
+7c980 c 166 235
+FUNC 7c98c c4 0 std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >::xsgetn
+7c98c 4 54 235
+7c990 4 58 235
+7c994 10 54 235
+7c9a4 8 54 235
+7c9ac 4 58 235
+7c9b0 4 54 235
+7c9b4 10 58 235
+7c9c4 4 253 247
+7c9c8 4 63 235
+7c9cc 4 253 247
+7c9d0 4 64 235
+7c9d4 4 65 235
+7c9d8 4 64 235
+7c9dc 4 58 235
+7c9e0 8 65 235
+7c9e8 4 58 235
+7c9ec 4 59 235
+7c9f0 4 61 235
+7c9f4 4 59 235
+7c9f8 8 253 247
+7ca00 4 59 235
+7ca04 8 61 235
+7ca0c 4 59 235
+7ca10 4 228 236
+7ca14 c 229 236
+7ca20 8 69 235
+7ca28 4 71 235
+7ca2c 4 70 235
+7ca30 8 58 235
+7ca38 18 80 235
+FUNC 7ca50 e4 0 std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >::pbackfail
+7ca50 4 157 208
+7ca54 4 162 208
+7ca58 8 161 208
+7ca60 c 199 208
+7ca6c 8 166 208
+7ca74 c 166 208
+7ca80 8 166 208
+7ca88 8 166 208
+7ca90 4 178 208
+7ca94 4 177 208
+7ca98 4 178 208
+7ca9c c 180 208
+7caa8 4 181 208
+7caac 4 95 236
+7cab0 4 181 208
+7cab4 4 93 236
+7cab8 8 94 236
+7cac0 8 91 236
+7cac8 4 199 208
+7cacc 8 91 236
+7cad4 8 197 208
+7cadc 4 199 208
+7cae0 c 91 236
+7caec 4 199 208
+7caf0 4 189 208
+7caf4 4 188 208
+7caf8 4 187 208
+7cafc 4 190 208
+7cb00 4 93 236
+7cb04 4 94 236
+7cb08 4 190 208
+7cb0c 4 186 208
+7cb10 4 188 208
+7cb14 4 95 236
+7cb18 8 190 208
+7cb20 8 175 208
+7cb28 4 199 208
+7cb2c 4 162 208
+7cb30 4 199 208
+FUNC 7cb34 544 0 std::ios_base::_S_uninitialize
+7cb34 c 248 185
+7cb40 4 256 185
+7cb44 4 258 185
+7cb48 8 248 185
+7cb50 4 256 185
+7cb54 4 257 185
+7cb58 4 188 212
+7cb5c 4 259 185
+7cb60 c 256 185
+7cb6c 8 190 212
+7cb74 18 257 185
+7cb8c 4 92 211
+7cb90 4 190 212
+7cb94 8 92 211
+7cb9c 4 188 212
+7cba0 14 258 185
+7cbb4 4 92 211
+7cbb8 4 92 211
+7cbbc 4 190 212
+7cbc0 8 92 211
+7cbc8 4 188 212
+7cbcc c 259 185
+7cbd8 4 50 210
+7cbdc 4 259 185
+7cbe0 8 188 212
+7cbe8 4 92 211
+7cbec 4 92 211
+7cbf0 4 190 212
+7cbf4 8 92 211
+7cbfc 4 188 212
+7cc00 4 261 185
+7cc04 4 261 185
+7cc08 1c 261 185
+7cc24 4 188 212
+7cc28 4 50 210
+7cc2c 4 192 212
+7cc30 4 262 185
+7cc34 4 262 185
+7cc38 8 262 185
+7cc40 4 263 185
+7cc44 4 188 212
+7cc48 c 263 185
+7cc54 4 192 212
+7cc58 4 49 210
+7cc5c 4 188 212
+7cc60 4 50 210
+7cc64 4 192 212
+7cc68 4 263 185
+7cc6c 4 263 185
+7cc70 8 263 185
+7cc78 4 264 185
+7cc7c 4 188 212
+7cc80 c 264 185
+7cc8c 4 192 212
+7cc90 4 49 210
+7cc94 4 188 212
+7cc98 4 50 210
+7cc9c 4 192 212
+7cca0 4 264 185
+7cca4 4 264 185
+7cca8 8 264 185
+7ccb0 14 57 206
+7ccc4 c 59 211
+7ccd0 c 90 214
+7ccdc 10 59 211
+7ccec 18 57 206
+7cd04 8 59 211
+7cd0c c 44 229
+7cd18 10 59 211
+7cd28 10 57 206
+7cd38 c 59 211
+7cd44 c 44 229
+7cd50 10 59 211
+7cd60 10 57 206
+7cd70 c 59 211
+7cd7c c 44 229
+7cd88 10 59 211
+7cd98 4 278 185
+7cd9c 4 279 185
+7cda0 4 188 212
+7cda4 4 280 185
+7cda8 4 281 185
+7cdac 10 278 185
+7cdbc 8 190 212
+7cdc4 18 279 185
+7cddc 4 92 211
+7cde0 4 190 212
+7cde4 8 92 211
+7cdec 4 188 212
+7cdf0 14 280 185
+7ce04 4 92 211
+7ce08 4 92 211
+7ce0c 4 190 212
+7ce10 8 92 211
+7ce18 4 188 212
+7ce1c c 281 185
+7ce28 4 50 210
+7ce2c 4 281 185
+7ce30 8 188 212
+7ce38 4 92 211
+7ce3c 4 92 211
+7ce40 4 190 212
+7ce44 8 92 211
+7ce4c 4 188 212
+7ce50 4 283 185
+7ce54 4 283 185
+7ce58 1c 283 185
+7ce74 4 188 212
+7ce78 4 50 210
+7ce7c 4 192 212
+7ce80 4 284 185
+7ce84 4 284 185
+7ce88 8 284 185
+7ce90 4 285 185
+7ce94 4 188 212
+7ce98 c 285 185
+7cea4 4 192 212
+7cea8 4 49 210
+7ceac 4 188 212
+7ceb0 4 50 210
+7ceb4 4 192 212
+7ceb8 4 285 185
+7cebc 4 285 185
+7cec0 8 285 185
+7cec8 4 286 185
+7cecc 4 188 212
+7ced0 c 286 185
+7cedc 4 192 212
+7cee0 4 49 210
+7cee4 4 188 212
+7cee8 4 50 210
+7ceec 4 192 212
+7cef0 4 286 185
+7cef4 4 286 185
+7cef8 8 286 185
+7cf00 14 57 206
+7cf14 c 59 211
+7cf20 c 90 214
+7cf2c 10 59 211
+7cf3c 18 57 206
+7cf54 8 59 211
+7cf5c c 44 229
+7cf68 10 59 211
+7cf78 10 57 206
+7cf88 c 59 211
+7cf94 c 44 229
+7cfa0 10 59 211
+7cfb0 10 57 206
+7cfc0 c 59 211
+7cfcc c 44 229
+7cfd8 c 59 211
+7cfe4 10 293 185
+7cff4 4 59 211
+7cff8 4 50 210
+7cffc c 188 212
+7d008 4 50 210
+7d00c c 188 212
+7d018 24 57 206
+7d03c 14 293 185
+7d050 18 57 206
+7d068 10 193 212
+FUNC 7d078 34 0 std::ios_base::Init::~Init
+7d078 4 152 185
+7d07c 8 151 185
+7d084 14 152 185
+7d098 8 156 185
+7d0a0 4 153 185
+7d0a4 4 156 185
+7d0a8 4 154 185
+FUNC 7d0ac 34 0 std::auto_ptr<std::basic_streambuf<char, std::char_traits<char> > >::~auto_ptr
+7d0ac 8 107 203
+7d0b4 4 68 203
+7d0b8 4 107 203
+7d0bc 4 107 203
+7d0c0 8 107 203
+7d0c8 14 107 203
+7d0dc 4 107 203
+FUNC 7d0e0 100 0 std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >::_M_setup_codecvt
+7d0e0 c 735 208
+7d0ec 4 347 219
+7d0f0 8 735 208
+7d0f8 8 735 208
+7d100 10 347 219
+7d110 4 736 208
+7d114 4 747 208
+7d118 4 746 208
+7d11c 8 747 208
+7d124 8 748 208
+7d12c 4 749 208
+7d130 10 754 208
+7d140 8 351 219
+7d148 c 754 208
+7d154 10 351 219
+7d164 4 313 204
+7d168 4 737 208
+7d16c 8 313 204
+7d174 4 141 201
+7d178 4 741 208
+7d17c 4 313 204
+7d180 4 141 201
+7d184 4 740 208
+7d188 10 324 204
+7d198 4 741 208
+7d19c 4 743 208
+7d1a0 c 742 208
+7d1ac 10 315 204
+7d1bc 4 743 208
+7d1c0 1c 754 208
+7d1dc 4 346 219
+FUNC 7d1e0 1c 0 std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >::imbue
+7d1e0 8 414 208
+7d1e8 8 414 208
+7d1f0 4 417 208
+7d1f4 8 415 208
+FUNC 7d1fc 194 0 std::basic_ios<wchar_t, std::char_traits<wchar_t> >::init
+7d1fc 18 97 210
+7d214 4 50 210
+7d218 4 97 210
+7d21c 4 92 211
+7d220 4 188 212
+7d224 4 100 210
+7d228 4 70 210
+7d22c 8 100 210
+7d234 10 70 210
+7d244 8 72 210
+7d24c 14 46 235
+7d260 14 47 235
+7d274 c 48 235
+7d280 8 73 210
+7d288 10 351 219
+7d298 4 76 210
+7d29c 8 100 210
+7d2a4 8 100 210
+7d2ac 8 68 211
+7d2b4 8 103 210
+7d2bc 4 132 212
+7d2c0 4 190 212
+7d2c4 4 206 207
+7d2c8 4 188 212
+7d2cc 8 112 212
+7d2d4 8 206 207
+7d2dc 4 132 212
+7d2e0 4 139 212
+7d2e4 4 206 207
+7d2e8 4 84 211
+7d2ec 14 110 210
+7d300 4 192 212
+7d304 8 188 212
+7d30c 4 192 212
+7d310 4 193 212
+7d314 4 78 210
+7d318 14 79 210
+7d32c c 79 210
+7d338 8 79 210
+7d340 4 187 212
+7d344 4 117 210
+7d348 8 187 212
+7d350 4 117 210
+7d354 c 78 210
+7d360 20 100 210
+7d380 8 118 210
+7d388 8 78 210
+FUNC 7d390 100 0 std::basic_filebuf<char, std::char_traits<char> >::_M_setup_codecvt
+7d390 c 735 208
+7d39c 4 347 219
+7d3a0 8 735 208
+7d3a8 8 735 208
+7d3b0 10 347 219
+7d3c0 4 736 208
+7d3c4 4 747 208
+7d3c8 4 746 208
+7d3cc 8 747 208
+7d3d4 8 748 208
+7d3dc 4 749 208
+7d3e0 10 754 208
+7d3f0 8 351 219
+7d3f8 c 754 208
+7d404 10 351 219
+7d414 4 216 204
+7d418 4 737 208
+7d41c 8 216 204
+7d424 4 141 201
+7d428 4 741 208
+7d42c 4 216 204
+7d430 4 141 201
+7d434 4 740 208
+7d438 10 227 204
+7d448 4 741 208
+7d44c 4 743 208
+7d450 c 742 208
+7d45c 10 218 204
+7d46c 4 743 208
+7d470 1c 754 208
+7d48c 4 346 219
+FUNC 7d490 dc 0 std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >::_M_allocate_buffers
+7d490 10 630 208
+7d4a0 8 630 208
+7d4a8 4 637 208
+7d4ac 4 650 208
+7d4b0 4 651 208
+7d4b4 8 655 208
+7d4bc 8 324 204
+7d4c4 4 655 208
+7d4c8 8 324 204
+7d4d0 c 655 208
+7d4dc c 661 208
+7d4e8 4 664 208
+7d4ec 4 669 208
+7d4f0 4 670 208
+7d4f4 4 671 208
+7d4f8 4 670 208
+7d4fc 8 669 208
+7d504 10 672 208
+7d514 8 686 208
+7d51c c 687 208
+7d528 4 688 208
+7d52c 4 689 208
+7d530 4 690 208
+7d534 4 666 208
+7d538 4 691 208
+7d53c 4 692 208
+7d540 10 672 208
+7d550 c 644 208
+7d55c 4 645 208
+7d560 c 647 208
+FUNC 7d56c 68 0 std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >::setbuf
+7d56c c 268 208
+7d578 4 268 208
+7d57c 8 269 208
+7d584 8 269 208
+7d58c 8 269 208
+7d594 10 277 208
+7d5a4 8 271 208
+7d5ac 10 272 208
+7d5bc c 273 208
+7d5c8 c 274 208
+FUNC 7d5d4 2b8 0 std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >::underflow
+7d5d4 14 75 208
+7d5e8 4 75 208
+7d5ec 8 408 209
+7d5f4 8 412 209
+7d5fc 8 220 209
+7d604 8 93 236
+7d60c 4 414 209
+7d610 4 94 236
+7d614 4 95 236
+7d618 4 221 209
+7d61c 8 414 209
+7d624 1c 77 208
+7d640 4 498 208
+7d644 4 502 208
+7d648 8 498 208
+7d650 4 502 208
+7d654 c 224 201
+7d660 c 504 208
+7d66c 4 537 208
+7d670 8 310 204
+7d678 14 515 208
+7d68c 4 516 208
+7d690 4 522 208
+7d694 4 525 208
+7d698 8 522 208
+7d6a0 8 525 208
+7d6a8 4 537 208
+7d6ac 24 310 204
+7d6d0 8 547 208
+7d6d8 8 549 208
+7d6e0 10 549 208
+7d6f0 10 549 208
+7d700 8 549 208
+7d708 4 555 208
+7d70c 4 93 236
+7d710 4 94 236
+7d714 c 95 236
+7d720 1c 549 208
+7d73c 8 119 208
+7d744 c 120 208
+7d750 4 121 208
+7d754 4 122 208
+7d758 4 124 208
+7d75c 4 488 208
+7d760 4 487 208
+7d764 4 553 208
+7d768 4 488 208
+7d76c 4 93 236
+7d770 4 94 236
+7d774 4 95 236
+7d778 14 77 208
+7d78c 14 549 208
+7d7a0 c 549 208
+7d7ac c 563 208
+7d7b8 8 430 208
+7d7c0 8 430 208
+7d7c8 8 430 208
+7d7d0 4 410 209
+7d7d4 14 77 208
+7d7e8 8 432 208
+7d7f0 4 438 208
+7d7f4 4 440 208
+7d7f8 8 435 208
+7d800 4 438 208
+7d804 4 440 208
+7d808 8 509 208
+7d810 18 549 208
+7d828 4 93 236
+7d82c 4 519 208
+7d830 4 94 236
+7d834 4 95 236
+7d838 14 77 208
+7d84c c 224 201
+7d858 8 224 201
+7d860 c 128 209
+7d86c 8 680 208
+7d874 c 681 208
+7d880 4 432 208
+7d884 8 410 209
+FUNC 7d88c 2b4 0 std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >::overflow
+7d88c 18 208 208
+7d8a4 8 208 208
+7d8ac 8 210 208
+7d8b4 4 216 208
+7d8b8 c 219 208
+7d8c4 4 216 208
+7d8c8 4 117 236
+7d8cc 8 118 236
+7d8d4 4 119 236
+7d8d8 4 219 208
+7d8dc 8 220 208
+7d8e4 c 223 208
+7d8f0 8 228 208
+7d8f8 4 225 208
+7d8fc 14 290 204
+7d910 4 224 208
+7d914 4 290 204
+7d918 4 225 208
+7d91c c 290 204
+7d928 4 322 209
+7d92c c 290 204
+7d938 8 240 208
+7d940 4 240 208
+7d944 10 240 208
+7d954 8 322 209
+7d95c 10 290 204
+7d96c 4 246 208
+7d970 4 247 208
+7d974 4 223 208
+7d978 4 290 204
+7d97c 4 223 208
+7d980 4 228 208
+7d984 4 225 208
+7d988 10 290 204
+7d998 4 225 208
+7d99c 4 224 208
+7d9a0 c 290 204
+7d9ac 4 240 208
+7d9b0 4 322 209
+7d9b4 8 240 208
+7d9bc c 240 208
+7d9c8 24 240 208
+7d9ec 8 322 209
+7d9f4 10 290 204
+7da04 4 246 208
+7da08 4 582 208
+7da0c 4 580 208
+7da10 4 581 208
+7da14 4 232 208
+7da18 4 582 208
+7da1c 4 117 236
+7da20 4 118 236
+7da24 4 119 236
+7da28 18 256 208
+7da40 c 453 208
+7da4c 4 453 208
+7da50 8 453 208
+7da58 8 453 208
+7da60 8 456 208
+7da68 4 462 208
+7da6c 10 463 208
+7da7c 10 463 208
+7da8c 4 216 208
+7da90 4 466 208
+7da94 4 117 236
+7da98 4 219 208
+7da9c 4 216 208
+7daa0 4 466 208
+7daa4 4 118 236
+7daa8 4 119 236
+7daac c 219 208
+7dab8 4 212 208
+7dabc 18 256 208
+7dad4 c 223 208
+7dae0 8 182 247
+7dae8 8 182 247
+7daf0 4 232 208
+7daf4 18 256 208
+7db0c 4 681 208
+7db10 c 128 209
+7db1c 8 680 208
+7db24 c 681 208
+7db30 10 456 208
+FUNC 7db40 164 0 std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >::~basic_filebuf
+7db40 4 67 208
+7db44 4 70 208
+7db48 8 67 208
+7db50 8 70 208
+7db58 4 84 208
+7db5c 8 67 208
+7db64 4 84 208
+7db68 8 85 208
+7db70 8 93 208
+7db78 10 97 208
+7db88 10 97 208
+7db98 4 686 208
+7db9c 8 97 208
+7dba4 8 98 208
+7dbac 4 100 208
+7dbb0 4 101 208
+7dbb4 4 93 236
+7dbb8 4 94 236
+7dbbc 4 95 236
+7dbc0 4 117 236
+7dbc4 4 118 236
+7dbc8 4 119 236
+7dbcc c 106 208
+7dbd8 10 108 208
+7dbe8 4 686 208
+7dbec 8 687 208
+7dbf4 8 688 208
+7dbfc 4 689 208
+7dc00 4 41 235
+7dc04 4 690 208
+7dc08 4 691 208
+7dc0c 4 41 235
+7dc10 4 692 208
+7dc14 8 41 235
+7dc1c 8 70 208
+7dc24 4 41 235
+7dc28 8 89 208
+7dc30 4 119 208
+7dc34 4 120 208
+7dc38 4 119 208
+7dc3c c 120 208
+7dc48 4 121 208
+7dc4c 4 122 208
+7dc50 8 124 208
+7dc58 8 86 208
+7dc60 8 85 208
+7dc68 8 594 208
+7dc70 14 594 208
+7dc84 20 41 235
+FUNC 7dca4 24 0 std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >::~basic_filebuf
+7dca4 c 67 208
+7dcb0 4 67 208
+7dcb4 4 70 208
+7dcb8 4 70 208
+7dcbc 8 70 208
+7dcc4 4 70 208
+FUNC 7dcc8 64 0 std::auto_ptr<std::basic_filebuf<wchar_t, std::char_traits<wchar_t> > >::~auto_ptr
+7dcc8 c 107 203
+7dcd4 4 68 203
+7dcd8 4 107 203
+7dcdc 14 107 203
+7dcf0 c 70 208
+7dcfc 4 70 208
+7dd00 8 107 203
+7dd08 4 70 208
+7dd0c 4 107 203
+7dd10 18 107 203
+7dd28 4 107 203
+FUNC 7dd2c 230 0 std::_Stl_create_wfilebuf
+7dd2c 10 180 185
+7dd3c 4 181 185
+7dd40 c 180 185
+7dd4c 4 180 185
+7dd50 8 181 185
+7dd58 8 34 235
+7dd60 4 61 208
+7dd64 28 34 235
+7dd8c c 61 208
+7dd98 8 61 208
+7dda0 4 63 208
+7dda4 8 61 208
+7ddac 4 61 208
+7ddb0 4 61 208
+7ddb4 4 63 208
+7ddb8 28 61 208
+7dde0 10 61 208
+7ddf0 10 61 208
+7de00 10 61 208
+7de10 10 61 208
+7de20 20 61 208
+7de40 4 63 208
+7de44 10 63 208
+7de54 8 63 208
+7de5c 4 28 203
+7de60 10 194 209
+7de70 4 68 203
+7de74 8 184 185
+7de7c 1c 188 185
+7de98 14 107 203
+7deac c 70 208
+7deb8 4 70 208
+7debc 4 187 185
+7dec0 4 70 208
+7dec4 1c 188 185
+7dee0 4 107 203
+7dee4 4 187 185
+7dee8 2c 188 185
+7df14 10 187 185
+7df24 8 107 203
+7df2c 8 63 208
+7df34 10 41 235
+7df44 18 181 185
+FUNC 7df5c 22c 0 std::_Stl_create_filebuf<__sFILE*>
+7df5c 10 168 185
+7df6c 4 169 185
+7df70 c 168 185
+7df7c 4 168 185
+7df80 8 169 185
+7df88 8 34 235
+7df90 4 61 208
+7df94 28 34 235
+7dfbc c 61 208
+7dfc8 8 61 208
+7dfd0 4 63 208
+7dfd4 8 61 208
+7dfdc 4 61 208
+7dfe0 4 61 208
+7dfe4 4 63 208
+7dfe8 28 61 208
+7e010 10 61 208
+7e020 10 61 208
+7e030 10 61 208
+7e040 10 61 208
+7e050 20 61 208
+7e070 4 63 208
+7e074 10 63 208
+7e084 8 63 208
+7e08c 10 194 209
+7e09c c 172 185
+7e0a8 18 176 185
+7e0c0 14 107 203
+7e0d4 c 70 208
+7e0e0 8 70 208
+7e0e8 4 176 185
+7e0ec 4 175 185
+7e0f0 14 176 185
+7e104 4 107 203
+7e108 4 175 185
+7e10c 24 176 185
+7e130 8 107 203
+7e138 14 107 203
+7e14c c 107 203
+7e158 8 63 208
+7e160 10 41 235
+7e170 18 169 185
+FUNC 7e188 80c 0 std::ios_base::_S_initialize
+7e188 c 191 185
+7e194 4 202 185
+7e198 8 191 185
+7e1a0 4 202 185
+7e1a4 4 191 185
+7e1a8 4 28 203
+7e1ac 4 202 185
+7e1b0 c 28 203
+7e1bc 4 202 185
+7e1c0 8 203 185
+7e1c8 4 75 197
+7e1cc 4 203 185
+7e1d0 c 75 197
+7e1dc 4 68 203
+7e1e0 4 62 203
+7e1e4 c 75 197
+7e1f0 8 62 203
+7e1f8 c 62 203
+7e204 4 207 185
+7e208 4 28 203
+7e20c 8 207 185
+7e214 8 213 185
+7e21c 4 87 197
+7e220 4 213 185
+7e224 c 87 197
+7e230 4 68 203
+7e234 4 62 203
+7e238 c 87 197
+7e244 8 62 203
+7e24c c 62 203
+7e258 4 214 185
+7e25c 4 28 203
+7e260 4 214 185
+7e264 4 87 197
+7e268 4 214 185
+7e26c c 87 197
+7e278 4 68 203
+7e27c 8 87 197
+7e284 c 62 203
+7e290 c 62 203
+7e29c 4 215 185
+7e2a0 4 28 203
+7e2a4 4 215 185
+7e2a8 4 87 197
+7e2ac 4 215 185
+7e2b0 c 87 197
+7e2bc 4 68 203
+7e2c0 8 87 197
+7e2c8 c 62 203
+7e2d4 c 62 203
+7e2e0 4 28 203
+7e2e4 4 92 210
+7e2e8 4 68 203
+7e2ec 10 92 210
+7e2fc 8 87 214
+7e304 8 88 214
+7e30c 4 87 214
+7e310 8 87 214
+7e318 c 92 210
+7e324 8 87 214
+7e32c 4 88 214
+7e330 4 92 210
+7e334 4 55 203
+7e338 4 68 203
+7e33c 10 92 210
+7e34c 4 38 229
+7e350 4 38 229
+7e354 8 38 229
+7e35c 4 38 229
+7e360 4 39 229
+7e364 8 92 210
+7e36c 4 38 229
+7e370 4 92 210
+7e374 4 38 229
+7e378 4 39 229
+7e37c 4 92 210
+7e380 4 55 203
+7e384 4 68 203
+7e388 10 92 210
+7e398 4 38 229
+7e39c 4 38 229
+7e3a0 4 39 229
+7e3a4 4 38 229
+7e3a8 8 92 210
+7e3b0 4 38 229
+7e3b4 4 92 210
+7e3b8 4 38 229
+7e3bc 4 39 229
+7e3c0 4 92 210
+7e3c4 4 55 203
+7e3c8 4 68 203
+7e3cc 10 92 210
+7e3dc 4 38 229
+7e3e0 4 38 229
+7e3e4 4 39 229
+7e3e8 4 38 229
+7e3ec 8 92 210
+7e3f4 4 38 229
+7e3f8 4 92 210
+7e3fc 4 38 229
+7e400 4 39 229
+7e404 4 228 185
+7e408 4 232 185
+7e40c 4 68 211
+7e410 4 55 203
+7e414 4 228 185
+7e418 c 68 211
+7e424 10 229 185
+7e434 c 118 212
+7e440 8 232 185
+7e448 8 233 185
+7e450 4 28 203
+7e454 8 233 185
+7e45c 8 234 185
+7e464 4 28 203
+7e468 8 234 185
+7e470 8 235 185
+7e478 4 28 203
+7e47c 8 235 185
+7e484 4 92 210
+7e488 4 28 203
+7e48c 4 68 203
+7e490 10 92 210
+7e4a0 8 87 214
+7e4a8 8 88 214
+7e4b0 4 87 214
+7e4b4 8 87 214
+7e4bc c 92 210
+7e4c8 8 87 214
+7e4d0 4 88 214
+7e4d4 4 92 210
+7e4d8 4 55 203
+7e4dc 4 68 203
+7e4e0 10 92 210
+7e4f0 4 38 229
+7e4f4 4 38 229
+7e4f8 8 38 229
+7e500 4 38 229
+7e504 4 39 229
+7e508 8 92 210
+7e510 4 38 229
+7e514 4 92 210
+7e518 4 38 229
+7e51c 4 39 229
+7e520 4 92 210
+7e524 4 55 203
+7e528 4 68 203
+7e52c 10 92 210
+7e53c 4 38 229
+7e540 4 38 229
+7e544 4 39 229
+7e548 4 38 229
+7e54c 8 92 210
+7e554 4 38 229
+7e558 4 92 210
+7e55c 4 38 229
+7e560 4 39 229
+7e564 4 92 210
+7e568 4 55 203
+7e56c 4 68 203
+7e570 10 92 210
+7e580 4 38 229
+7e584 4 38 229
+7e588 4 39 229
+7e58c 4 38 229
+7e590 8 92 210
+7e598 4 38 229
+7e59c 4 92 210
+7e5a0 4 38 229
+7e5a4 4 39 229
+7e5a8 4 243 185
+7e5ac 4 68 211
+7e5b0 4 68 203
+7e5b4 4 243 185
+7e5b8 c 68 211
+7e5c4 10 244 185
+7e5d4 c 118 212
+7e5e0 4 107 203
+7e5e4 14 107 203
+7e5f8 c 70 208
+7e604 8 70 208
+7e60c 4 68 203
+7e610 4 107 203
+7e614 14 107 203
+7e628 c 70 208
+7e634 8 70 208
+7e63c 4 68 203
+7e640 4 107 203
+7e644 14 107 203
+7e658 c 70 208
+7e664 8 70 208
+7e66c 4 68 203
+7e670 4 107 203
+7e674 4 107 203
+7e678 8 107 203
+7e680 4 68 203
+7e684 4 107 203
+7e688 4 107 203
+7e68c 8 107 203
+7e694 4 68 203
+7e698 4 107 203
+7e69c 4 107 203
+7e6a0 8 107 203
+7e6a8 4 68 203
+7e6ac 4 107 203
+7e6b0 4 107 203
+7e6b4 8 107 203
+7e6bc 18 246 185
+7e6d4 14 219 185
+7e6e8 4 68 203
+7e6ec c 62 203
+7e6f8 c 62 203
+7e704 8 220 185
+7e70c 4 28 203
+7e710 c 220 185
+7e71c 4 68 203
+7e720 c 62 203
+7e72c c 62 203
+7e738 8 221 185
+7e740 4 28 203
+7e744 c 221 185
+7e750 4 68 203
+7e754 c 62 203
+7e760 c 62 203
+7e76c 8 28 203
+7e774 14 205 185
+7e788 4 68 203
+7e78c c 62 203
+7e798 10 62 203
+7e7a8 28 107 203
+7e7d0 c 107 203
+7e7dc 1c 59 211
+7e7f8 8 200 185
+7e800 8 199 185
+7e808 8 198 185
+7e810 10 244 185
+7e820 44 59 211
+7e864 8 234 185
+7e86c 8 233 185
+7e874 1c 232 185
+7e890 54 59 211
+7e8e4 18 235 185
+7e8fc 30 59 211
+7e92c 18 215 185
+7e944 50 59 211
+FUNC 7e994 38 0 std::ios_base::Init::Init
+7e994 4 144 185
+7e998 8 143 185
+7e9a0 14 144 185
+7e9b4 8 149 185
+7e9bc 4 145 185
+7e9c0 4 146 185
+7e9c4 4 149 185
+7e9c8 4 147 185
+FUNC 7e9cc cc 0 std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >::_M_seek_init
+7e9cc c 700 208
+7e9d8 4 702 208
+7e9dc 4 700 208
+7e9e0 4 706 208
+7e9e4 4 700 208
+7e9e8 4 706 208
+7e9ec 4 720 208
+7e9f0 4 723 208
+7e9f4 4 720 208
+7e9f8 8 720 208
+7ea00 8 220 209
+7ea08 8 93 236
+7ea10 4 94 236
+7ea14 4 95 236
+7ea18 4 221 209
+7ea1c c 724 208
+7ea28 4 708 208
+7ea2c c 708 208
+7ea38 8 708 208
+7ea40 4 709 208
+7ea44 4 710 208
+7ea48 8 594 208
+7ea50 14 594 208
+7ea64 4 710 208
+7ea68 4 712 208
+7ea6c 4 713 208
+7ea70 4 117 236
+7ea74 4 713 208
+7ea78 4 715 208
+7ea7c 4 118 236
+7ea80 4 119 236
+7ea84 c 724 208
+7ea90 8 711 208
+FUNC 7ea98 10c 0 std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >::seekpos
+7ea98 10 384 208
+7eaa8 8 384 208
+7eab0 4 386 208
+7eab4 4 384 208
+7eab8 4 386 208
+7eabc 8 388 208
+7eac4 10 398 208
+7ead4 10 387 208
+7eae4 8 391 208
+7eaec 4 391 208
+7eaf0 10 391 208
+7eb00 8 391 208
+7eb08 4 240 209
+7eb0c 4 392 208
+7eb10 4 240 209
+7eb14 8 119 208
+7eb1c c 120 208
+7eb28 4 121 208
+7eb2c 4 122 208
+7eb30 3c 121 247
+7eb6c 8 242 209
+7eb74 4 243 209
+7eb78 8 244 209
+7eb80 8 245 209
+7eb88 4 93 236
+7eb8c 4 94 236
+7eb90 4 95 236
+7eb94 4 117 236
+7eb98 4 118 236
+7eb9c 8 119 236
+FUNC 7eba4 c8 0 std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >::_M_seek_return
+7eba4 4 238 209
+7eba8 4 239 209
+7ebac c 238 209
+7ebb8 c 238 209
+7ebc4 4 239 209
+7ebc8 8 240 209
+7ebd0 8 119 208
+7ebd8 c 120 208
+7ebe4 4 121 208
+7ebe8 4 122 208
+7ebec 4 242 209
+7ebf0 4 243 209
+7ebf4 4 244 209
+7ebf8 4 245 209
+7ebfc 4 93 236
+7ec00 4 94 236
+7ec04 4 95 236
+7ec08 4 117 236
+7ec0c 4 118 236
+7ec10 4 119 236
+7ec14 4 121 247
+7ec18 38 252 209
+7ec50 4 253 209
+7ec54 4 252 209
+7ec58 4 253 209
+7ec5c 4 252 209
+7ec60 c 253 209
+FUNC 7ec6c 3ec 0 std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >::seekoff
+7ec6c 14 291 208
+7ec80 8 291 208
+7ec88 8 294 208
+7ec90 c 297 208
+7ec9c 4 297 208
+7eca0 4 297 208
+7eca4 8 295 208
+7ecac 14 379 208
+7ecc0 24 300 208
+7ece4 10 304 208
+7ecf4 8 310 208
+7ecfc 8 314 208
+7ed04 10 317 208
+7ed14 4 321 208
+7ed18 4 321 208
+7ed1c 10 321 208
+7ed2c 4 239 209
+7ed30 4 321 208
+7ed34 4 239 209
+7ed38 8 240 209
+7ed40 8 119 208
+7ed48 c 120 208
+7ed54 4 121 208
+7ed58 4 122 208
+7ed5c 4 242 209
+7ed60 4 243 209
+7ed64 4 244 209
+7ed68 4 245 209
+7ed6c 4 93 236
+7ed70 4 94 236
+7ed74 4 95 236
+7ed78 4 117 236
+7ed7c 4 118 236
+7ed80 4 119 236
+7ed84 c 321 208
+7ed90 3c 301 208
+7edcc 24 379 208
+7edf0 10 320 208
+7ee00 4 321 208
+7ee04 8 89 247
+7ee0c 14 306 208
+7ee20 4 239 209
+7ee24 4 306 208
+7ee28 4 239 209
+7ee2c 8 240 209
+7ee34 8 119 208
+7ee3c c 120 208
+7ee48 4 121 208
+7ee4c 4 122 208
+7ee50 4 242 209
+7ee54 4 243 209
+7ee58 4 244 209
+7ee5c 4 245 209
+7ee60 4 93 236
+7ee64 4 94 236
+7ee68 4 95 236
+7ee6c 4 117 236
+7ee70 4 118 236
+7ee74 4 119 236
+7ee78 c 306 208
+7ee84 14 312 208
+7ee98 4 239 209
+7ee9c 4 312 208
+7eea0 4 239 209
+7eea4 8 240 209
+7eeac 8 119 208
+7eeb4 c 120 208
+7eec0 4 121 208
+7eec4 4 122 208
+7eec8 4 242 209
+7eecc 4 243 209
+7eed0 4 244 209
+7eed4 4 245 209
+7eed8 4 93 236
+7eedc 4 94 236
+7eee0 4 95 236
+7eee4 4 117 236
+7eee8 4 118 236
+7eeec 4 119 236
+7eef0 4 306 208
+7eef4 4 312 208
+7eef8 8 306 208
+7ef00 14 312 208
+7ef14 8 324 208
+7ef1c 10 325 208
+7ef2c 4 332 208
+7ef30 4 325 208
+7ef34 4 332 208
+7ef38 4 325 208
+7ef3c c 332 208
+7ef48 4 333 208
+7ef4c 4 87 209
+7ef50 4 335 208
+7ef54 4 336 208
+7ef58 c 335 208
+7ef64 4 336 208
+7ef68 8 89 247
+7ef70 8 378 208
+7ef78 4 346 208
+7ef7c 4 344 208
+7ef80 8 341 208
+7ef88 8 321 204
+7ef90 4 344 208
+7ef94 4 341 208
+7ef98 4 344 208
+7ef9c 18 321 204
+7efb4 10 370 208
+7efc4 4 373 208
+7efc8 4 371 208
+7efcc 4 372 208
+7efd0 4 373 208
+7efd4 4 87 209
+7efd8 4 372 208
+7efdc 8 373 208
+7efe4 4 375 208
+7efe8 8 89 247
+7eff0 14 89 247
+7f004 10 336 208
+7f014 8 336 208
+7f01c 3c 375 208
+FUNC 7f058 14 0 std::locale::facet::~facet
+7f058 10 43 186
+7f068 4 342 241
+FUNC 7f06c 24 0 std::locale::facet::~facet
+7f06c c 43 186
+7f078 8 43 186
+7f080 4 43 186
+7f084 8 43 186
+7f08c 4 43 186
+FUNC 7f090 18 0 std::allocator<char>::deallocate
+7f090 4 319 202
+7f094 8 161 202
+7f09c 4 161 202
+7f0a0 4 135 223
+7f0a4 4 325 202
+FUNC 7f0a8 3c 0 std::locale::locale
+7f0a8 c 119 186
+7f0b4 4 119 186
+7f0b8 4 120 186
+7f0bc 8 120 186
+7f0c4 4 120 186
+7f0c8 18 121 186
+7f0e0 4 119 186
+FUNC 7f0e4 38 0 std::locale::locale
+7f0e4 c 124 186
+7f0f0 4 124 186
+7f0f4 8 125 186
+7f0fc 4 125 186
+7f100 18 126 186
+7f118 4 124 186
+FUNC 7f11c 28 0 std::locale::locale
+7f11c c 133 186
+7f128 4 133 186
+7f12c c 134 186
+7f138 c 135 186
+FUNC 7f144 2c 0 std::locale::~locale
+7f144 8 362 186
+7f14c 8 363 186
+7f154 4 364 186
+7f158 14 365 186
+7f16c 4 362 186
+FUNC 7f170 60 0 std::locale::operator=
+7f170 8 369 186
+7f178 8 370 186
+7f180 4 369 186
+7f184 4 370 186
+7f188 8 369 186
+7f190 4 370 186
+7f194 4 371 186
+7f198 8 372 186
+7f1a0 4 373 186
+7f1a4 4 373 186
+7f1a8 24 376 186
+7f1cc 4 369 186
+FUNC 7f1d0 2c 0 std::locale::_M_get_facet
+7f1d0 c 379 186
+7f1dc 8 192 246
+7f1e4 8 379 186
+7f1ec 4 379 186
+7f1f0 4 380 186
+7f1f4 4 379 186
+7f1f8 4 380 186
+FUNC 7f1fc 38 0 std::locale::_M_use_facet
+7f1fc 8 382 186
+7f204 c 383 186
+7f210 8 192 246
+7f218 8 383 186
+7f220 4 383 186
+7f224 4 384 186
+7f228 8 387 186
+7f230 4 385 186
+FUNC 7f234 9c 0 std::locale::name
+7f234 10 389 186
+7f244 4 390 186
+7f248 4 389 186
+7f24c 4 379 238
+7f250 4 112 239
+7f254 c 481 202
+7f260 4 378 238
+7f264 8 379 238
+7f26c c 107 244
+7f278 c 106 244
+7f284 4 107 244
+7f288 4 380 238
+7f28c 4 101 206
+7f290 14 391 186
+7f2a4 8 64 239
+7f2ac c 96 239
+7f2b8 18 97 239
+FUNC 7f2d0 1d0 0 std::locale::operator==
+7f2d0 8 394 186
+7f2d8 8 395 186
+7f2e0 c 394 186
+7f2ec 8 395 186
+7f2f4 14 396 186
+7f308 14 396 186
+7f31c 8 289 240
+7f324 10 400 238
+7f334 8 289 240
+7f33c c 96 239
+7f348 8 97 239
+7f350 8 161 202
+7f358 8 161 202
+7f360 4 64 239
+7f364 c 96 239
+7f370 8 97 239
+7f378 8 161 202
+7f380 8 161 202
+7f388 4 395 186
+7f38c 18 397 186
+7f3a4 14 135 223
+7f3b8 8 226 247
+7f3c0 4 289 240
+7f3c4 14 396 186
+7f3d8 4 395 186
+7f3dc 8 400 238
+7f3e4 8 324 240
+7f3ec c 96 239
+7f3f8 8 97 239
+7f400 8 161 202
+7f408 c 161 202
+7f414 10 324 240
+7f424 10 135 223
+7f434 4 64 239
+7f438 c 96 239
+7f444 18 97 239
+7f45c 4 395 186
+7f460 c 396 186
+7f46c 8 395 186
+7f474 8 64 239
+7f47c c 96 239
+7f488 10 97 239
+7f498 8 396 186
+FUNC 7f4a0 1c 0 std::locale::operator!=
+7f4a0 8 399 186
+7f4a8 8 400 186
+7f4b0 c 401 186
+FUNC 7f4bc 8 0 std::time_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_date_order
+7f4bc 8 168 243
+FUNC 7f4c4 8 0 std::time_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::do_date_order
+7f4c4 8 168 243
+FUNC 7f4cc 10 0 std::money_put<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::~money_put
+7f4cc 10 406 222
+FUNC 7f4dc 30 0 std::money_put<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::~money_put
+7f4dc 10 406 222
+7f4ec 10 406 222
+7f4fc 4 406 222
+7f500 8 406 222
+7f508 4 406 222
+FUNC 7f50c 10 0 std::money_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::~money_get
+7f50c 10 73 222
+FUNC 7f51c 30 0 std::money_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::~money_get
+7f51c 10 73 222
+7f52c 10 73 222
+7f53c 4 73 222
+7f540 8 73 222
+7f548 4 73 222
+FUNC 7f54c 10 0 std::money_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::~money_put
+7f54c 10 406 222
+FUNC 7f55c 30 0 std::money_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::~money_put
+7f55c 10 406 222
+7f56c 10 406 222
+7f57c 4 406 222
+7f580 8 406 222
+7f588 4 406 222
+FUNC 7f58c 10 0 std::money_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::~money_get
+7f58c 10 73 222
+FUNC 7f59c 30 0 std::money_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::~money_get
+7f59c 10 73 222
+7f5ac 10 73 222
+7f5bc 4 73 222
+7f5c0 8 73 222
+7f5c8 4 73 222
+FUNC 7f5cc 10 0 std::num_put<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::~num_put
+7f5cc 10 107 227
+FUNC 7f5dc 30 0 std::num_put<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::~num_put
+7f5dc 10 107 227
+7f5ec 10 107 227
+7f5fc 4 107 227
+7f600 8 107 227
+7f608 4 107 227
+FUNC 7f60c 10 0 std::num_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::~num_get
+7f60c 10 126 225
+FUNC 7f61c 30 0 std::num_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::~num_get
+7f61c 10 126 225
+7f62c 10 126 225
+7f63c 4 126 225
+7f640 8 126 225
+7f648 4 126 225
+FUNC 7f64c 10 0 std::num_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::~num_get
+7f64c 10 126 225
+FUNC 7f65c 30 0 std::num_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::~num_get
+7f65c 10 126 225
+7f66c 10 126 225
+7f67c 4 126 225
+7f680 8 126 225
+7f688 4 126 225
+FUNC 7f68c 10 0 std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::~num_put
+7f68c 10 107 227
+FUNC 7f69c 30 0 std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::~num_put
+7f69c 10 107 227
+7f6ac 10 107 227
+7f6bc 4 107 227
+7f6c0 8 107 227
+7f6c8 4 107 227
+FUNC 7f6cc 8 0 std::_Refcount_Base::~_Refcount_Base
+7f6cc 8 342 241
+FUNC 7f6d4 18 0 std::allocator<char>::deallocate
+7f6d4 4 319 202
+7f6d8 8 161 202
+7f6e0 4 161 202
+7f6e4 4 135 223
+7f6e8 4 325 202
+FUNC 7f6ec 1c 0 std::allocator<wchar_t>::deallocate
+7f6ec 4 319 202
+7f6f0 4 323 202
+7f6f4 8 161 202
+7f6fc 4 161 202
+7f700 4 135 223
+7f704 4 325 202
+FUNC 7f708 1c 0 std::basic_streambuf<char, std::char_traits<char> >::sbumpc
+7f708 8 227 236
+7f710 4 228 236
+7f714 8 229 236
+7f71c 8 230 236
+FUNC 7f724 110 0 std::priv::__write_integer_backward<long unsigned int>
+7f724 c 304 226
+7f730 4 304 226
+7f734 14 314 226
+7f748 4 322 226
+7f74c 4 323 226
+7f750 4 322 226
+7f754 8 323 226
+7f75c 4 322 226
+7f760 4 326 226
+7f764 c 327 226
+7f770 10 368 226
+7f780 8 295 226
+7f788 4 294 226
+7f78c 10 295 226
+7f79c 4 294 226
+7f7a0 8 295 226
+7f7a8 4 294 226
+7f7ac 4 297 226
+7f7b0 c 298 226
+7f7bc 18 368 226
+7f7d4 4 333 226
+7f7d8 c 333 226
+7f7e4 4 339 226
+7f7e8 4 340 226
+7f7ec 4 339 226
+7f7f0 8 340 226
+7f7f8 4 339 226
+7f7fc 4 342 226
+7f800 4 343 226
+7f804 4 344 226
+7f808 4 343 226
+7f80c 8 344 226
+7f814 10 368 226
+7f824 10 333 226
+FUNC 7f834 110 0 std::priv::__write_integer_backward<long long unsigned int>
+7f834 c 304 226
+7f840 4 304 226
+7f844 14 314 226
+7f858 4 322 226
+7f85c 4 323 226
+7f860 4 322 226
+7f864 8 323 226
+7f86c 4 322 226
+7f870 4 326 226
+7f874 c 327 226
+7f880 10 368 226
+7f890 8 295 226
+7f898 4 294 226
+7f89c 10 295 226
+7f8ac 4 294 226
+7f8b0 8 295 226
+7f8b8 4 294 226
+7f8bc 4 297 226
+7f8c0 c 298 226
+7f8cc 18 368 226
+7f8e4 4 333 226
+7f8e8 c 333 226
+7f8f4 4 339 226
+7f8f8 4 340 226
+7f8fc 4 339 226
+7f900 8 340 226
+7f908 4 339 226
+7f90c 4 342 226
+7f910 4 343 226
+7f914 4 344 226
+7f918 4 343 226
+7f91c 8 344 226
+7f924 10 368 226
+7f934 10 333 226
+FUNC 7f944 1c 0 std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >::sbumpc
+7f944 8 227 236
+7f94c 4 228 236
+7f950 8 229 236
+7f958 8 230 236
+FUNC 7f960 98 0 std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >::_M_getc
+7f960 c 89 215
+7f96c 4 89 215
+7f970 4 92 215
+7f974 1c 235 236
+7f990 4 93 215
+7f994 4 95 215
+7f998 4 94 215
+7f99c 4 95 215
+7f9a0 c 96 215
+7f9ac 20 234 236
+7f9cc 4 93 215
+7f9d0 4 95 215
+7f9d4 4 94 215
+7f9d8 4 95 215
+7f9dc c 96 215
+7f9e8 10 235 236
+FUNC 7f9f8 98 0 std::istreambuf_iterator<char, std::char_traits<char> >::_M_getc
+7f9f8 c 89 215
+7fa04 4 89 215
+7fa08 4 92 215
+7fa0c 18 235 236
+7fa24 4 93 215
+7fa28 4 95 215
+7fa2c 4 94 215
+7fa30 4 95 215
+7fa34 c 96 215
+7fa40 20 234 236
+7fa60 4 93 215
+7fa64 4 95 215
+7fa68 4 94 215
+7fa6c 4 95 215
+7fa70 c 96 215
+7fa7c 14 235 236
+FUNC 7fa90 c4 0 std::priv::__copy<char const*, std::ostreambuf_iterator<char, std::char_traits<char> >, long int>
+7fa90 10 211 201
+7faa0 4 213 201
+7faa4 8 211 201
+7faac 4 213 201
+7fab0 10 211 201
+7fac0 10 213 201
+7fad0 8 199 236
+7fad8 4 215 201
+7fadc 8 213 201
+7fae4 4 214 201
+7fae8 4 62 230
+7faec 4 200 236
+7faf0 4 199 236
+7faf4 4 200 236
+7faf8 4 199 236
+7fafc 8 200 236
+7fb04 4 199 236
+7fb08 4 223 247
+7fb0c c 199 236
+7fb18 4 200 236
+7fb1c 4 215 201
+7fb20 4 200 236
+7fb24 8 62 230
+7fb2c 8 213 201
+7fb34 4 218 201
+7fb38 1c 219 201
+FUNC 7fb54 bc 0 std::priv::__copy<wchar_t*, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, long int>
+7fb54 10 211 201
+7fb64 4 213 201
+7fb68 4 213 201
+7fb6c 4 211 201
+7fb70 8 211 201
+7fb78 10 213 201
+7fb88 8 199 236
+7fb90 8 62 230
+7fb98 4 215 201
+7fb9c 8 213 201
+7fba4 4 214 201
+7fba8 4 62 230
+7fbac 4 200 236
+7fbb0 4 200 236
+7fbb4 4 200 236
+7fbb8 4 199 236
+7fbbc 8 200 236
+7fbc4 18 199 236
+7fbdc 18 200 236
+7fbf4 4 218 201
+7fbf8 18 219 201
+FUNC 7fc10 bc 0 std::priv::__copy<wchar_t const*, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, long int>
+7fc10 10 211 201
+7fc20 4 213 201
+7fc24 4 213 201
+7fc28 4 211 201
+7fc2c 8 211 201
+7fc34 10 213 201
+7fc44 8 199 236
+7fc4c 8 62 230
+7fc54 4 215 201
+7fc58 8 213 201
+7fc60 4 214 201
+7fc64 4 62 230
+7fc68 4 200 236
+7fc6c 4 200 236
+7fc70 4 200 236
+7fc74 4 199 236
+7fc78 8 200 236
+7fc80 18 199 236
+7fc98 18 200 236
+7fcb0 4 218 201
+7fcb4 18 219 201
+FUNC 7fccc 100 0 std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >::operator++
+7fccc 10 144 215
+7fcdc 4 90 215
+7fce0 c 144 215
+7fcec 10 90 215
+7fcfc 4 229 236
+7fd00 8 148 215
+7fd08 4 229 236
+7fd0c 8 228 236
+7fd14 4 151 215
+7fd18 4 150 215
+7fd1c 4 151 215
+7fd20 4 152 215
+7fd24 4 151 215
+7fd28 4 152 215
+7fd2c 4 151 215
+7fd30 10 152 215
+7fd40 4 228 236
+7fd44 10 229 236
+7fd54 1c 235 236
+7fd70 4 94 215
+7fd74 4 95 215
+7fd78 4 93 215
+7fd7c 8 95 215
+7fd84 24 234 236
+7fda8 24 235 236
+FUNC 7fdcc f4 0 std::istreambuf_iterator<char, std::char_traits<char> >::operator++
+7fdcc 8 144 215
+7fdd4 4 90 215
+7fdd8 c 144 215
+7fde4 4 144 215
+7fde8 c 90 215
+7fdf4 8 229 236
+7fdfc 4 148 215
+7fe00 4 229 236
+7fe04 4 148 215
+7fe08 4 229 236
+7fe0c 8 228 236
+7fe14 4 151 215
+7fe18 4 150 215
+7fe1c 4 151 215
+7fe20 4 152 215
+7fe24 4 151 215
+7fe28 4 152 215
+7fe2c 4 151 215
+7fe30 10 152 215
+7fe40 4 228 236
+7fe44 10 229 236
+7fe54 4 92 215
+7fe58 14 235 236
+7fe6c 4 95 215
+7fe70 4 93 215
+7fe74 4 94 215
+7fe78 8 95 215
+7fe80 24 234 236
+7fea4 1c 235 236
+FUNC 7fec0 1fc 0 std::time_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::do_put
+7fec0 10 425 242
+7fed0 4 145 212
+7fed4 14 425 242
+7fee8 8 145 212
+7fef0 8 425 242
+7fef8 c 425 242
+7ff04 4 145 212
+7ff08 14 351 219
+7ff1c 4 428 242
+7ff20 4 108 213
+7ff24 4 41 213
+7ff28 4 428 242
+7ff2c 10 108 213
+7ff3c 14 41 213
+7ff50 4 613 237
+7ff54 18 430 242
+7ff6c 4 611 237
+7ff70 4 612 237
+7ff74 4 613 237
+7ff78 4 101 206
+7ff7c 10 430 242
+7ff8c 4 213 201
+7ff90 14 213 201
+7ffa4 10 199 236
+7ffb4 4 215 201
+7ffb8 8 213 201
+7ffc0 4 214 201
+7ffc4 4 62 230
+7ffc8 10 200 236
+7ffd8 14 199 236
+7ffec 8 200 236
+7fff4 4 62 230
+7fff8 8 215 201
+80000 c 213 201
+8000c 14 96 239
+80020 4 97 239
+80024 8 319 202
+8002c 4 97 239
+80030 8 161 202
+80038 4 161 202
+8003c 28 432 242
+80064 8 135 223
+8006c c 213 201
+80078 10 428 242
+80088 8 64 239
+80090 c 96 239
+8009c 4 97 239
+800a0 4 70 213
+800a4 4 97 239
+800a8 4 70 213
+800ac 10 70 213
+FUNC 800bc 49c 0 std::priv::__copy_digits<std::istreambuf_iterator<char, std::char_traits<char> >, char>
+800bc 2c 314 224
+800e8 c 314 224
+800f4 4 316 224
+800f8 8 95 215
+80100 4 75 215
+80104 8 90 215
+8010c 4 77 215
+80110 8 90 215
+80118 10 318 224
+80128 14 90 215
+8013c 8 320 224
+80144 4 64 239
+80148 8 74 239
+80150 10 74 239
+80160 c 535 238
+8016c 8 101 206
+80174 4 232 247
+80178 4 68 215
+8017c 4 539 238
+80180 4 229 236
+80184 4 539 238
+80188 4 229 236
+8018c 4 539 238
+80190 8 229 236
+80198 8 228 236
+801a0 4 69 215
+801a4 8 322 224
+801ac 14 235 236
+801c0 4 95 215
+801c4 c 318 224
+801d0 20 328 224
+801f0 14 235 236
+80204 4 93 215
+80208 4 94 215
+8020c 8 95 215
+80214 14 234 236
+80228 4 95 215
+8022c 8 234 236
+80234 4 92 215
+80238 1c 235 236
+80254 4 93 215
+80258 4 94 215
+8025c 8 95 215
+80264 4 228 236
+80268 10 229 236
+80278 4 400 238
+8027c 14 304 238
+80290 4 306 238
+80294 10 307 238
+802a4 4 64 213
+802a8 4 67 213
+802ac 4 64 213
+802b0 58 86 244
+80308 20 146 206
+80328 4 86 244
+8032c 4 146 206
+80330 10 86 244
+80340 4 146 206
+80344 c 86 244
+80350 4 146 206
+80354 c 86 244
+80360 4 146 206
+80364 c 86 244
+80370 4 146 206
+80374 c 86 244
+80380 4 146 206
+80384 c 86 244
+80390 4 146 206
+80394 c 86 244
+803a0 4 146 206
+803a4 c 86 244
+803b0 4 146 206
+803b4 c 86 244
+803c0 4 146 206
+803c4 c 86 244
+803d0 4 146 206
+803d4 c 86 244
+803e0 4 146 206
+803e4 c 86 244
+803f0 4 146 206
+803f4 c 86 244
+80400 4 146 206
+80404 8 86 244
+8040c 8 146 206
+80414 4 101 206
+80418 4 64 239
+8041c c 96 239
+80428 8 97 239
+80430 8 319 202
+80438 8 97 239
+80440 8 161 202
+80448 8 161 202
+80450 4 175 237
+80454 4 164 239
+80458 4 160 239
+8045c 8 165 239
+80464 14 74 239
+80478 4 308 238
+8047c 18 134 223
+80494 10 86 244
+804a4 3c 234 236
+804e0 8 86 244
+804e8 8 146 206
+804f0 c 86 244
+804fc c 135 223
+80508 4 235 236
+8050c 4 95 215
+80510 44 235 236
+80554 4 305 238
+FUNC 80558 68 0 std::_release_facet
+80558 c 44 187
+80564 4 45 187
+80568 4 44 187
+8056c 4 45 187
+80570 10 347 241
+80580 4 475 241
+80584 4 349 241
+80588 8 475 241
+80590 4 349 241
+80594 4 45 187
+80598 8 46 187
+805a0 c 46 187
+805ac 4 47 187
+805b0 10 49 187
+FUNC 805c0 a0 0 std::_Locale_impl::Init::_M_count
+805c0 c 69 187
+805cc 4 70 187
+805d0 4 69 187
+805d4 14 70 187
+805e8 4 71 187
+805ec 10 72 187
+805fc 8 70 187
+80604 4 457 241
+80608 8 340 241
+80610 4 457 241
+80614 4 340 241
+80618 8 70 187
+80620 18 70 187
+80638 4 72 187
+8063c 4 71 187
+80640 10 72 187
+80650 10 70 187
+FUNC 80660 4 0 std::_Locale_impl::_S_uninitialize
+80660 4 113 187
+FUNC 80664 5c 0 std::_Locale_impl::Init::~Init
+80664 10 63 187
+80674 8 64 187
+8067c c 347 241
+80688 4 475 241
+8068c 4 349 241
+80690 8 475 241
+80698 4 349 241
+8069c 4 64 187
+806a0 1c 67 187
+806bc 4 65 187
+FUNC 806c0 120 0 std::_Locale_impl::~_Locale_impl
+806c0 10 92 187
+806d0 8 93 187
+806d8 4 92 187
+806dc c 93 187
+806e8 8 60 199
+806f0 8 61 199
+806f8 4 60 199
+806fc c 60 199
+80708 4 87 246
+8070c 4 88 246
+80710 4 135 223
+80714 4 88 246
+80718 8 161 202
+80720 4 161 202
+80724 8 64 239
+8072c c 96 239
+80738 8 97 239
+80740 8 161 202
+80748 4 161 202
+8074c 4 342 241
+80750 c 95 187
+8075c 4 342 241
+80760 4 135 223
+80764 4 342 241
+80768 c 95 187
+80774 4 342 241
+80778 c 135 223
+80784 14 342 241
+80798 8 64 239
+807a0 c 96 239
+807ac 18 97 239
+807c4 4 87 246
+807c8 18 88 246
+FUNC 807e0 34 0 std::_Locale_impl::_M_throw_bad_cast
+807e0 4 116 187
+807e4 4 117 187
+807e8 8 116 187
+807f0 8 117 187
+807f8 4 117 187
+807fc 18 117 187
+FUNC 80814 40 0 std::_get_Locale_impl
+80814 c 696 187
+80820 4 347 241
+80824 4 696 187
+80828 8 347 241
+80830 4 471 241
+80834 4 349 241
+80838 8 471 241
+80840 4 349 241
+80844 10 700 187
+FUNC 80854 84 0 std::_release_Locale_impl
+80854 c 703 187
+80860 4 705 187
+80864 4 703 187
+80868 4 347 241
+8086c 4 703 187
+80870 8 347 241
+80878 4 475 241
+8087c 4 349 241
+80880 8 475 241
+80888 4 349 241
+8088c 4 705 187
+80890 4 109 188
+80894 4 706 187
+80898 8 109 188
+808a0 8 706 187
+808a8 4 707 187
+808ac 8 707 187
+808b4 8 707 187
+808bc 4 710 187
+808c0 10 712 187
+808d0 8 709 187
+FUNC 808d8 c 0 std::priv::_GetFacetId
+808d8 4 745 187
+808dc 8 745 187
+FUNC 808e4 158 0 std::vector<std::locale::facet*, std::allocator<std::locale::facet*> >::reserve
+808e4 c 62 245
+808f0 8 199 246
+808f8 4 62 245
+808fc 4 199 246
+80900 4 62 245
+80904 c 63 245
+80910 14 64 245
+80924 4 192 246
+80928 4 70 245
+8092c 4 346 202
+80930 8 347 202
+80938 8 158 202
+80940 8 134 223
+80948 4 352 202
+8094c 4 107 244
+80950 8 352 202
+80958 4 107 244
+8095c 14 106 244
+80970 8 657 246
+80978 4 319 202
+8097c 8 161 202
+80984 8 161 202
+8098c 4 76 245
+80990 4 666 246
+80994 4 667 246
+80998 4 668 246
+8099c 14 78 245
+809b0 10 158 202
+809c0 c 107 244
+809cc 8 356 202
+809d4 8 135 223
+809dc 4 346 202
+809e0 4 356 202
+809e4 4 346 202
+809e8 8 347 202
+809f0 8 158 202
+809f8 c 158 202
+80a04 10 352 202
+80a14 c 134 223
+80a20 8 107 244
+80a28 8 356 202
+80a30 c 41 245
+FUNC 80a3c 1b8 0 std::priv::_Time_Info_Base::~_Time_Info_Base
+80a3c 4 63 243
+80a40 4 64 239
+80a44 8 63 243
+80a4c 4 63 243
+80a50 4 64 239
+80a54 c 96 239
+80a60 8 97 239
+80a68 8 161 202
+80a70 4 161 202
+80a74 8 64 239
+80a7c c 96 239
+80a88 8 97 239
+80a90 8 161 202
+80a98 4 161 202
+80a9c 8 64 239
+80aa4 c 96 239
+80ab0 8 97 239
+80ab8 8 161 202
+80ac0 4 161 202
+80ac4 8 64 239
+80acc c 96 239
+80ad8 8 97 239
+80ae0 8 161 202
+80ae8 4 161 202
+80aec 4 64 239
+80af0 c 96 239
+80afc 8 97 239
+80b04 8 161 202
+80b0c 8 63 243
+80b14 4 161 202
+80b18 c 63 243
+80b24 20 135 223
+80b44 8 63 243
+80b4c 4 135 223
+80b50 c 64 239
+80b5c c 96 239
+80b68 10 97 239
+80b78 8 64 239
+80b80 c 96 239
+80b8c c 97 239
+80b98 8 64 239
+80ba0 c 96 239
+80bac c 97 239
+80bb8 4 64 239
+80bbc c 96 239
+80bc8 2c 97 239
+FUNC 80bf4 18c 0 std::priv::_Time_Info::~_Time_Info
+80bf4 10 72 243
+80c04 8 72 243
+80c0c 4 72 243
+80c10 8 72 243
+80c18 4 161 202
+80c1c 8 72 243
+80c24 4 72 243
+80c28 4 64 239
+80c2c c 96 239
+80c38 8 97 239
+80c40 8 161 202
+80c48 4 135 223
+80c4c 8 72 243
+80c54 c 72 243
+80c60 4 161 202
+80c64 8 72 243
+80c6c 4 72 243
+80c70 4 64 239
+80c74 c 96 239
+80c80 8 97 239
+80c88 8 161 202
+80c90 4 135 223
+80c94 8 72 243
+80c9c c 72 243
+80ca8 4 161 202
+80cac 8 72 243
+80cb4 4 72 243
+80cb8 4 64 239
+80cbc c 96 239
+80cc8 8 97 239
+80cd0 8 161 202
+80cd8 4 135 223
+80cdc 8 72 243
+80ce4 4 72 243
+80ce8 c 72 243
+80cf4 4 72 243
+80cf8 c 72 243
+80d04 4 72 243
+80d08 4 64 239
+80d0c c 96 239
+80d18 c 97 239
+80d24 c 72 243
+80d30 8 72 243
+80d38 4 72 243
+80d3c 4 64 239
+80d40 c 96 239
+80d4c c 97 239
+80d58 8 72 243
+80d60 20 72 243
+FUNC 80d80 44 0 std::time_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::~time_put
+80d80 10 273 243
+80d90 c 273 243
+80d9c 4 101 243
+80da0 4 273 243
+80da4 8 273 243
+80dac 8 273 243
+80db4 10 273 243
+FUNC 80dc4 4c 0 std::time_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::~time_put
+80dc4 10 273 243
+80dd4 c 273 243
+80de0 4 101 243
+80de4 8 273 243
+80dec 4 273 243
+80df0 8 273 243
+80df8 8 273 243
+80e00 10 273 243
+FUNC 80e10 44 0 std::time_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::~time_get
+80e10 10 166 243
+80e20 c 166 243
+80e2c 4 101 243
+80e30 4 166 243
+80e34 8 166 243
+80e3c 8 166 243
+80e44 10 166 243
+FUNC 80e54 4c 0 std::time_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::~time_get
+80e54 10 166 243
+80e64 c 166 243
+80e70 4 101 243
+80e74 8 166 243
+80e7c 4 166 243
+80e80 8 166 243
+80e88 8 166 243
+80e90 10 166 243
+FUNC 80ea0 1a0 0 std::priv::_WTime_Info::~_WTime_Info
+80ea0 14 80 243
+80eb4 8 80 243
+80ebc 4 80 243
+80ec0 8 80 243
+80ec8 4 161 202
+80ecc 8 80 243
+80ed4 4 80 243
+80ed8 4 64 239
+80edc c 96 239
+80ee8 8 97 239
+80ef0 8 161 202
+80ef8 4 135 223
+80efc 8 80 243
+80f04 c 80 243
+80f10 4 161 202
+80f14 8 80 243
+80f1c 4 80 243
+80f20 4 64 239
+80f24 c 96 239
+80f30 8 97 239
+80f38 8 161 202
+80f40 4 135 223
+80f44 8 80 243
+80f4c c 80 243
+80f58 4 161 202
+80f5c 8 80 243
+80f64 4 80 243
+80f68 4 64 239
+80f6c c 96 239
+80f78 8 97 239
+80f80 8 161 202
+80f88 4 135 223
+80f8c 8 80 243
+80f94 4 80 243
+80f98 c 80 243
+80fa4 4 80 243
+80fa8 c 80 243
+80fb4 4 80 243
+80fb8 4 64 239
+80fbc c 96 239
+80fc8 14 97 239
+80fdc c 80 243
+80fe8 8 80 243
+80ff0 4 80 243
+80ff4 4 64 239
+80ff8 c 96 239
+81004 14 97 239
+81018 8 80 243
+81020 20 80 243
+FUNC 81040 44 0 std::time_put<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::~time_put
+81040 10 273 243
+81050 c 273 243
+8105c 4 115 243
+81060 4 273 243
+81064 8 273 243
+8106c 8 273 243
+81074 10 273 243
+FUNC 81084 4c 0 std::time_put<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::~time_put
+81084 10 273 243
+81094 c 273 243
+810a0 4 115 243
+810a4 8 273 243
+810ac 4 273 243
+810b0 8 273 243
+810b8 8 273 243
+810c0 10 273 243
+FUNC 810d0 44 0 std::time_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::~time_get
+810d0 10 166 243
+810e0 c 166 243
+810ec 4 115 243
+810f0 4 166 243
+810f4 8 166 243
+810fc 8 166 243
+81104 10 166 243
+FUNC 81114 4c 0 std::time_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::~time_get
+81114 10 166 243
+81124 c 166 243
+81130 4 115 243
+81134 8 166 243
+8113c 4 166 243
+81140 8 166 243
+81148 8 166 243
+81150 10 166 243
+FUNC 81160 e0 0 std::_Locale_impl::_Locale_impl
+81160 c 74 187
+8116c 4 457 241
+81170 8 74 187
+81178 4 74 187
+8117c 4 340 241
+81180 4 457 241
+81184 4 75 187
+81188 4 74 187
+8118c 8 340 241
+81194 10 75 187
+811a4 8 67 246
+811ac 8 76 187
+811b4 4 67 246
+811b8 4 481 202
+811bc 18 76 187
+811d4 18 78 187
+811ec 18 342 241
+81204 4 87 246
+81208 14 88 246
+8121c 4 64 239
+81220 c 96 239
+8122c 14 97 239
+FUNC 81240 810 0 std::_Locale_impl::make_classic_locale
+81240 4 623 187
+81244 4 628 187
+81248 8 623 187
+81250 c 628 187
+8125c 8 623 187
+81264 4 628 187
+81268 54 661 187
+812bc 4 457 241
+812c0 8 340 241
+812c8 4 457 241
+812cc 4 340 241
+812d0 4 48 205
+812d4 4 661 187
+812d8 4 661 187
+812dc c 48 205
+812e8 8 661 187
+812f0 10 633 187
+81300 4 661 187
+81304 4 661 187
+81308 8 661 187
+81310 4 457 241
+81314 8 340 241
+8131c 4 457 241
+81320 4 340 241
+81324 4 180 204
+81328 4 661 187
+8132c 4 661 187
+81330 c 180 204
+8133c 8 661 187
+81344 8 635 187
+8134c 4 661 187
+81350 4 661 187
+81354 8 661 187
+8135c 8 636 187
+81364 4 661 187
+81368 4 661 187
+8136c 8 661 187
+81374 4 457 241
+81378 8 340 241
+81380 4 457 241
+81384 4 340 241
+81388 4 54 228
+8138c 4 661 187
+81390 4 661 187
+81394 c 54 228
+813a0 8 661 187
+813a8 8 638 187
+813b0 4 661 187
+813b4 4 661 187
+813b8 8 661 187
+813c0 4 457 241
+813c4 8 340 241
+813cc 4 457 241
+813d0 4 340 241
+813d4 4 60 222
+813d8 4 661 187
+813dc 8 60 222
+813e4 4 661 187
+813e8 8 661 187
+813f0 4 457 241
+813f4 8 340 241
+813fc 4 457 241
+81400 4 340 241
+81404 4 394 222
+81408 4 661 187
+8140c 8 394 222
+81414 4 661 187
+81418 8 661 187
+81420 4 457 241
+81424 8 340 241
+8142c 4 457 241
+81430 4 340 241
+81434 4 61 225
+81438 4 661 187
+8143c 8 61 225
+81444 4 661 187
+81448 8 661 187
+81450 4 457 241
+81454 8 340 241
+8145c 4 457 241
+81460 4 340 241
+81464 4 57 227
+81468 4 661 187
+8146c 8 57 227
+81474 4 661 187
+81478 8 661 187
+81480 4 457 241
+81484 8 340 241
+8148c 4 457 241
+81490 4 340 241
+81494 14 86 219
+814a8 4 136 243
+814ac 4 136 243
+814b0 4 661 187
+814b4 8 136 243
+814bc 4 661 187
+814c0 8 661 187
+814c8 4 457 241
+814cc 8 340 241
+814d4 4 457 241
+814d8 4 340 241
+814dc 10 86 219
+814ec 4 253 243
+814f0 4 253 243
+814f4 4 661 187
+814f8 8 253 243
+81500 4 661 187
+81504 8 661 187
+8150c 4 457 241
+81510 8 340 241
+81518 4 457 241
+8151c 4 340 241
+81520 4 84 205
+81524 4 661 187
+81528 4 661 187
+8152c c 84 205
+81538 8 661 187
+81540 4 457 241
+81544 8 340 241
+8154c 4 457 241
+81550 4 340 241
+81554 4 181 207
+81558 4 661 187
+8155c 4 661 187
+81560 c 181 207
+8156c 8 661 187
+81574 4 457 241
+81578 8 340 241
+81580 4 457 241
+81584 4 340 241
+81588 4 277 204
+8158c 4 661 187
+81590 4 661 187
+81594 c 277 204
+815a0 8 661 187
+815a8 8 649 187
+815b0 4 661 187
+815b4 4 661 187
+815b8 8 661 187
+815c0 8 650 187
+815c8 4 661 187
+815cc 4 661 187
+815d0 8 661 187
+815d8 4 457 241
+815dc 8 340 241
+815e4 4 457 241
+815e8 4 340 241
+815ec 4 83 228
+815f0 4 661 187
+815f4 4 661 187
+815f8 c 83 228
+81604 8 661 187
+8160c 8 652 187
+81614 4 661 187
+81618 4 661 187
+8161c 8 661 187
+81624 4 457 241
+81628 8 340 241
+81630 4 457 241
+81634 4 340 241
+81638 4 60 222
+8163c 4 661 187
+81640 8 60 222
+81648 4 661 187
+8164c 8 661 187
+81654 4 457 241
+81658 8 340 241
+81660 4 457 241
+81664 4 340 241
+81668 4 394 222
+8166c 4 661 187
+81670 8 394 222
+81678 4 661 187
+8167c 8 661 187
+81684 4 457 241
+81688 8 340 241
+81690 4 457 241
+81694 4 340 241
+81698 4 61 225
+8169c 4 661 187
+816a0 8 61 225
+816a8 4 661 187
+816ac 8 661 187
+816b4 4 457 241
+816b8 8 340 241
+816c0 4 457 241
+816c4 4 340 241
+816c8 4 57 227
+816cc 4 661 187
+816d0 8 57 227
+816d8 4 661 187
+816dc 8 661 187
+816e4 4 457 241
+816e8 8 340 241
+816f0 4 457 241
+816f4 4 340 241
+816f8 10 86 219
+81708 4 136 243
+8170c 4 136 243
+81710 4 661 187
+81714 8 136 243
+8171c 4 661 187
+81720 8 661 187
+81728 4 457 241
+8172c 8 340 241
+81734 4 457 241
+81738 4 340 241
+8173c 10 86 219
+8174c 4 253 243
+81750 4 253 243
+81754 4 664 187
+81758 4 253 243
+8175c 4 664 187
+81760 4 253 243
+81764 4 664 187
+81768 8 661 187
+81770 8 664 187
+81778 8 199 246
+81780 c 326 246
+8178c 4 192 246
+81790 8 332 246
+81798 4 510 217
+8179c c 224 201
+817a8 c 107 244
+817b4 14 106 244
+817c8 4 107 244
+817cc 8 341 246
+817d4 14 667 187
+817e8 4 670 187
+817ec 8 668 187
+817f4 8 670 187
+817fc 8 668 187
+81804 4 670 187
+81808 8 671 187
+81810 8 672 187
+81818 4 671 187
+8181c c 672 187
+81828 4 224 201
+8182c 4 667 187
+81830 8 224 201
+81838 4 224 201
+8183c 4 667 187
+81840 4 335 246
+81844 c 667 187
+81850 8 667 187
+81858 c 667 187
+81864 8 667 187
+8186c 1c 667 187
+81888 8 670 187
+81890 c 670 187
+8189c 8 670 187
+818a4 10 670 187
+818b4 4 671 187
+818b8 8 670 187
+818c0 4 672 187
+818c4 4 671 187
+818c8 4 672 187
+818cc 4 671 187
+818d0 c 672 187
+818dc 10 347 202
+818ec 4 158 202
+818f0 4 352 202
+818f4 8 106 244
+818fc 4 158 202
+81900 4 352 202
+81904 8 106 244
+8190c 8 657 246
+81914 4 319 202
+81918 8 161 202
+81920 4 161 202
+81924 4 666 246
+81928 8 330 246
+81930 4 666 246
+81934 4 667 246
+81938 8 668 246
+81940 8 107 244
+81948 10 224 201
+81958 c 135 223
+81964 14 670 187
+81978 8 253 243
+81980 1c 658 187
+8199c 40 136 243
+819dc 14 253 243
+819f0 14 136 243
+81a04 3c 633 187
+81a40 10 667 187
+FUNC 81a50 94 0 std::_Locale_impl::_S_initialize
+81a50 c 575 187
+81a5c c 576 187
+81a68 c 577 187
+81a74 c 578 187
+81a80 c 579 187
+81a8c c 580 187
+81a98 c 583 187
+81aa4 c 584 187
+81ab0 c 585 187
+81abc c 586 187
+81ac8 c 587 187
+81ad4 c 588 187
+81ae0 4 102 187
+FUNC 81ae4 60 0 std::_Locale_impl::Init::Init
+81ae4 10 57 187
+81af4 8 58 187
+81afc c 347 241
+81b08 4 471 241
+81b0c 4 349 241
+81b10 8 471 241
+81b18 4 349 241
+81b1c 8 58 187
+81b24 1c 61 187
+81b40 4 59 187
+FUNC 81b44 8c 0 std::_Stl_get_global_locale
+81b44 c 603 187
+81b50 10 604 187
+81b60 4 605 187
+81b64 8 606 187
+81b6c 4 605 187
+81b70 4 606 187
+81b74 8 604 187
+81b7c c 604 187
+81b88 8 604 187
+81b90 18 604 187
+81ba8 4 605 187
+81bac 8 606 187
+81bb4 4 605 187
+81bb8 8 606 187
+81bc0 10 604 187
+FUNC 81bd0 214 0 std::priv::__get_decimal_integer<wchar_t*, long double, wchar_t>
+81bd0 c 239 224
+81bdc 4 190 224
+81be0 4 239 224
+81be4 4 190 224
+81be8 8 239 224
+81bf0 4 120 239
+81bf4 8 239 224
+81bfc 4 101 206
+81c00 4 190 224
+81c04 4 120 239
+81c08 4 481 202
+81c0c 4 190 224
+81c10 4 192 224
+81c14 8 52 224
+81c1c 4 223 224
+81c20 20 243 224
+81c40 1c 52 224
+81c5c 8 52 224
+81c64 8 202 224
+81c6c 4 208 224
+81c70 4 205 224
+81c74 14 208 224
+81c88 38 211 224
+81cc0 18 212 224
+81cd8 4 213 224
+81cdc 8 213 224
+81ce4 4 214 224
+81ce8 4 213 224
+81cec 4 214 224
+81cf0 c 213 224
+81cfc c 190 224
+81d08 c 190 224
+81d14 4 192 224
+81d18 8 52 224
+81d20 c 224 224
+81d2c c 224 224
+81d38 18 224 224
+81d50 4 96 239
+81d54 4 97 239
+81d58 4 319 202
+81d5c 4 97 239
+81d60 8 161 202
+81d68 4 161 202
+81d6c 20 243 224
+81d8c 8 209 224
+81d94 c 214 224
+81da0 8 135 223
+81da8 10 223 224
+81db8 8 64 239
+81dc0 c 96 239
+81dcc 18 97 239
+FUNC 81e30 214 0 std::priv::__get_decimal_integer<char*, long double, char>
+81e30 c 239 224
+81e3c 4 190 224
+81e40 4 239 224
+81e44 4 190 224
+81e48 8 239 224
+81e50 4 120 239
+81e54 8 239 224
+81e5c 4 101 206
+81e60 4 190 224
+81e64 4 120 239
+81e68 4 481 202
+81e6c 4 190 224
+81e70 4 200 224
+81e74 8 52 224
+81e7c 4 223 224
+81e80 20 243 224
+81ea0 1c 52 224
+81ebc 8 52 224
+81ec4 8 202 224
+81ecc 4 208 224
+81ed0 4 205 224
+81ed4 14 208 224
+81ee8 38 211 224
+81f20 18 212 224
+81f38 4 213 224
+81f3c 8 213 224
+81f44 4 214 224
+81f48 4 213 224
+81f4c 4 214 224
+81f50 c 213 224
+81f5c c 190 224
+81f68 c 190 224
+81f74 4 200 224
+81f78 8 52 224
+81f80 c 224 224
+81f8c c 224 224
+81f98 18 224 224
+81fb0 4 96 239
+81fb4 4 97 239
+81fb8 4 319 202
+81fbc 4 97 239
+81fc0 8 161 202
+81fc8 4 161 202
+81fcc 20 243 224
+81fec 8 209 224
+81ff4 c 214 224
+82000 8 135 223
+82008 10 223 224
+82018 8 64 239
+82020 c 96 239
+8202c 18 97 239
+FUNC 82090 2c0 0 std::priv::__get_decimal_integer<std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, int, wchar_t>
+82090 14 239 224
+820a4 4 182 224
+820a8 10 239 224
+820b8 4 120 239
+820bc 4 239 224
+820c0 8 239 224
+820c8 4 120 239
+820cc 4 181 224
+820d0 4 481 202
+820d4 8 101 206
+820dc 8 95 215
+820e4 4 75 215
+820e8 8 90 215
+820f0 8 77 215
+820f8 c 90 215
+82104 c 190 224
+82110 c 90 215
+8211c 8 52 224
+82124 4 223 224
+82128 c 224 224
+82134 4 224 224
+82138 4 233 224
+8213c 4 64 239
+82140 c 233 224
+8214c c 96 239
+82158 c 97 239
+82164 20 243 224
+82184 1c 235 236
+821a0 4 93 215
+821a4 4 94 215
+821a8 8 95 215
+821b0 8 52 224
+821b8 8 202 224
+821c0 4 208 224
+821c4 4 205 224
+821c8 c 208 224
+821d4 8 211 224
+821dc 4 212 224
+821e0 4 213 224
+821e4 4 214 224
+821e8 8 213 224
+821f0 4 68 215
+821f4 10 229 236
+82204 c 228 236
+82210 8 69 215
+82218 4 92 215
+8221c 1c 235 236
+82238 4 93 215
+8223c 4 94 215
+82240 8 95 215
+82248 4 228 236
+8224c c 229 236
+82258 8 69 215
+82260 1c 235 236
+8227c 4 93 215
+82280 4 94 215
+82284 8 95 215
+8228c 8 209 224
+82294 8 214 224
+8229c 54 234 236
+822f0 34 235 236
+82324 8 64 239
+8232c c 96 239
+82338 18 97 239
+FUNC 82350 290 0 std::time_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_get_year
+82350 8 348 242
+82358 8 348 242
+82360 4 75 215
+82364 8 90 215
+8236c 8 77 215
+82374 c 90 215
+82380 c 351 242
+8238c 8 352 242
+82394 4 353 242
+82398 8 363 242
+823a0 1c 235 236
+823bc 4 93 215
+823c0 8 95 215
+823c8 4 351 242
+823cc 4 94 215
+823d0 8 351 242
+823d8 1c 356 242
+823f4 4 357 242
+823f8 4 356 242
+823fc 4 358 242
+82400 4 358 242
+82404 4 75 215
+82408 c 357 242
+82414 8 358 242
+8241c 4 358 242
+82420 4 75 215
+82424 8 90 215
+8242c 8 77 215
+82434 c 90 215
+82440 c 359 242
+8244c c 360 242
+82458 4 362 242
+8245c 8 363 242
+82464 1c 235 236
+82480 4 93 215
+82484 4 95 215
+82488 4 94 215
+8248c 8 95 215
+82494 20 235 236
+824b4 48 234 236
+824fc 1c 235 236
+82518 4 93 215
+8251c 4 95 215
+82520 4 94 215
+82524 8 95 215
+8252c 20 234 236
+8254c 14 235 236
+82560 2c 234 236
+8258c 54 235 236
+FUNC 825e0 2bc 0 std::priv::__get_decimal_integer<std::istreambuf_iterator<char, std::char_traits<char> >, int, char>
+825e0 14 239 224
+825f4 4 182 224
+825f8 18 239 224
+82610 4 181 224
+82614 4 120 239
+82618 4 239 224
+8261c 4 120 239
+82620 4 481 202
+82624 8 101 206
+8262c 8 95 215
+82634 4 75 215
+82638 8 90 215
+82640 8 77 215
+82648 c 90 215
+82654 c 190 224
+82660 c 90 215
+8266c 8 52 224
+82674 4 223 224
+82678 c 224 224
+82684 4 224 224
+82688 4 233 224
+8268c 4 64 239
+82690 c 233 224
+8269c c 96 239
+826a8 c 97 239
+826b4 20 243 224
+826d4 14 235 236
+826e8 4 93 215
+826ec 4 94 215
+826f0 8 95 215
+826f8 8 52 224
+82700 8 202 224
+82708 4 208 224
+8270c 4 205 224
+82710 c 208 224
+8271c 8 211 224
+82724 4 212 224
+82728 4 213 224
+8272c 4 214 224
+82730 8 213 224
+82738 4 68 215
+8273c 10 229 236
+8274c 8 228 236
+82754 8 69 215
+8275c 4 92 215
+82760 18 235 236
+82778 4 93 215
+8277c 4 94 215
+82780 8 95 215
+82788 4 228 236
+8278c c 229 236
+82798 8 69 215
+827a0 14 235 236
+827b4 4 93 215
+827b8 4 94 215
+827bc 8 95 215
+827c4 8 209 224
+827cc 8 214 224
+827d4 58 234 236
+8282c 44 235 236
+82870 8 64 239
+82878 c 96 239
+82884 18 97 239
+FUNC 8289c 274 0 std::time_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::do_get_year
+8289c 8 348 242
+828a4 8 348 242
+828ac 4 75 215
+828b0 8 90 215
+828b8 8 77 215
+828c0 c 90 215
+828cc c 351 242
+828d8 8 352 242
+828e0 4 353 242
+828e4 8 363 242
+828ec 14 235 236
+82900 4 93 215
+82904 8 95 215
+8290c 4 351 242
+82910 4 94 215
+82914 8 351 242
+8291c 1c 356 242
+82938 4 357 242
+8293c 4 356 242
+82940 4 358 242
+82944 4 358 242
+82948 4 75 215
+8294c c 357 242
+82958 8 358 242
+82960 4 358 242
+82964 4 75 215
+82968 8 90 215
+82970 8 77 215
+82978 c 90 215
+82984 c 359 242
+82990 c 360 242
+8299c 4 362 242
+829a0 8 363 242
+829a8 14 235 236
+829bc 4 93 215
+829c0 4 95 215
+829c4 4 94 215
+829c8 8 95 215
+829d0 10 235 236
+829e0 20 234 236
+82a00 14 235 236
+82a14 48 234 236
+82a5c 14 235 236
+82a70 4 93 215
+82a74 4 95 215
+82a78 4 94 215
+82a7c 8 95 215
+82a84 2c 234 236
+82ab0 60 235 236
+FUNC 82b10 3e0 0 std::priv::__do_put_bool<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >
+82b10 c 386 226
+82b1c 4 145 212
+82b20 14 386 226
+82b34 8 145 212
+82b3c 4 386 226
+82b40 8 386 226
+82b48 4 145 212
+82b4c 14 351 219
+82b60 8 387 226
+82b68 c 88 228
+82b74 4 389 226
+82b78 10 88 228
+82b88 4 138 212
+82b8c 4 400 238
+82b90 4 139 212
+82b94 4 400 238
+82b98 8 392 226
+82ba0 4 396 226
+82ba4 4 395 226
+82ba8 4 396 226
+82bac 8 398 226
+82bb4 10 480 201
+82bc4 4 62 230
+82bc8 10 200 236
+82bd8 c 199 236
+82be4 4 200 236
+82be8 8 62 230
+82bf0 1c 480 201
+82c0c 18 213 201
+82c24 c 199 236
+82c30 4 200 236
+82c34 8 62 230
+82c3c 4 215 201
+82c40 8 213 201
+82c48 4 214 201
+82c4c 4 62 230
+82c50 10 200 236
+82c60 14 199 236
+82c74 c 200 236
+82c80 14 199 236
+82c94 1c 200 236
+82cb0 c 96 239
+82cbc 8 97 239
+82cc4 8 161 202
+82ccc 4 161 202
+82cd0 20 407 226
+82cf0 10 89 228
+82d00 4 138 212
+82d04 4 400 238
+82d08 4 139 212
+82d0c 4 400 238
+82d10 8 392 226
+82d18 14 213 201
+82d2c c 199 236
+82d38 4 200 236
+82d3c 8 62 230
+82d44 4 215 201
+82d48 8 213 201
+82d50 4 214 201
+82d54 4 62 230
+82d58 10 200 236
+82d68 14 199 236
+82d7c c 200 236
+82d88 4 135 223
+82d8c 20 407 226
+82dac 14 213 201
+82dc0 c 199 236
+82dcc 4 200 236
+82dd0 8 62 230
+82dd8 4 215 201
+82ddc 8 213 201
+82de4 4 214 201
+82de8 4 62 230
+82dec 10 200 236
+82dfc 14 199 236
+82e10 c 200 236
+82e1c 10 480 201
+82e2c 4 62 230
+82e30 10 200 236
+82e40 c 199 236
+82e4c 4 200 236
+82e50 8 62 230
+82e58 18 480 201
+82e70 14 199 236
+82e84 10 200 236
+82e94 8 213 201
+82e9c 8 480 201
+82ea4 8 213 201
+82eac 8 64 239
+82eb4 c 96 239
+82ec0 20 97 239
+82ee0 10 387 226
+FUNC 82ef0 4c 0 std::num_put<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_put
+82ef0 c 420 226
+82efc 8 422 226
+82f04 18 426 226
+82f1c 8 427 226
+82f24 10 424 226
+82f34 8 427 226
+FUNC 82f3c 80 0 std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> >::operator=
+82f3c c 61 230
+82f48 8 61 230
+82f50 8 62 230
+82f58 4 63 230
+82f5c 10 200 236
+82f6c c 199 236
+82f78 8 62 230
+82f80 4 62 230
+82f84 10 65 230
+82f94 4 199 236
+82f98 4 62 230
+82f9c 14 199 236
+82fb0 c 200 236
+FUNC 82fbc 3d8 0 std::priv::__do_put_bool<char, std::ostreambuf_iterator<char, std::char_traits<char> > >
+82fbc c 386 226
+82fc8 4 145 212
+82fcc 14 386 226
+82fe0 8 145 212
+82fe8 4 386 226
+82fec 8 386 226
+82ff4 4 145 212
+82ff8 14 351 219
+8300c 8 387 226
+83014 c 59 228
+83020 4 389 226
+83024 10 59 228
+83034 4 138 212
+83038 4 400 238
+8303c 4 139 212
+83040 8 392 226
+83048 4 396 226
+8304c 4 395 226
+83050 4 396 226
+83054 8 398 226
+8305c 10 480 201
+8306c 4 62 230
+83070 10 200 236
+83080 10 199 236
+83090 18 480 201
+830a8 18 213 201
+830c0 10 199 236
+830d0 4 215 201
+830d4 8 213 201
+830dc 4 214 201
+830e0 4 62 230
+830e4 10 200 236
+830f4 14 199 236
+83108 8 200 236
+83110 4 62 230
+83114 8 215 201
+8311c 14 213 201
+83130 c 96 239
+8313c 8 97 239
+83144 8 161 202
+8314c 4 161 202
+83150 20 407 226
+83170 14 199 236
+83184 c 200 236
+83190 c 62 230
+8319c 10 60 228
+831ac 4 138 212
+831b0 4 400 238
+831b4 4 139 212
+831b8 8 392 226
+831c0 14 213 201
+831d4 10 199 236
+831e4 4 215 201
+831e8 8 213 201
+831f0 4 214 201
+831f4 4 62 230
+831f8 10 200 236
+83208 14 199 236
+8321c 8 200 236
+83224 c 62 230
+83230 4 135 223
+83234 20 407 226
+83254 14 213 201
+83268 10 199 236
+83278 4 215 201
+8327c 8 213 201
+83284 4 214 201
+83288 4 62 230
+8328c 10 200 236
+8329c 14 199 236
+832b0 8 200 236
+832b8 c 62 230
+832c4 10 480 201
+832d4 4 62 230
+832d8 10 200 236
+832e8 10 199 236
+832f8 18 480 201
+83310 14 199 236
+83324 c 200 236
+83330 c 62 230
+8333c 8 213 201
+83344 8 480 201
+8334c 8 213 201
+83354 8 64 239
+8335c c 96 239
+83368 1c 97 239
+83384 10 387 226
+FUNC 83394 50 0 std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::do_put
+83394 10 420 226
+833a4 8 422 226
+833ac 18 426 226
+833c4 8 427 226
+833cc 10 424 226
+833dc 8 427 226
+FUNC 833e4 8c 0 std::ostreambuf_iterator<char, std::char_traits<char> >::operator=
+833e4 c 61 230
+833f0 4 62 230
+833f4 4 61 230
+833f8 4 61 230
+833fc 4 62 230
+83400 4 63 230
+83404 10 200 236
+83414 c 199 236
+83420 4 62 230
+83424 10 65 230
+83434 4 199 236
+83438 4 62 230
+8343c 14 199 236
+83450 4 200 236
+83454 8 62 230
+8345c 4 62 230
+83460 10 65 230
+FUNC 83470 c6c 0 std::priv::__money_do_put<char, std::ostreambuf_iterator<char, std::char_traits<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >
+83470 10 316 221
+83480 4 145 212
+83484 1c 316 221
+834a0 4 145 212
+834a4 18 316 221
+834bc 4 316 221
+834c0 c 145 212
+834cc c 316 221
+834d8 4 145 212
+834dc 38 351 219
+83514 4 101 207
+83518 4 351 219
+8351c 68 101 207
+83584 4 336 221
+83588 10 92 222
+83598 4 93 222
+8359c 8 92 222
+835a4 c 93 222
+835b0 8 94 222
+835b8 4 93 222
+835bc 8 94 222
+835c4 4 93 222
+835c8 c 94 222
+835d4 10 98 222
+835e4 4 95 222
+835e8 4 98 222
+835ec 4 95 222
+835f0 1c 135 222
+8360c 8 354 221
+83614 10 360 221
+83624 4 361 221
+83628 4 368 221
+8362c 4 362 221
+83630 4 368 221
+83634 18 97 222
+8364c 4 385 221
+83650 8 387 221
+83658 c 79 207
+83664 4 387 221
+83668 4 390 221
+8366c 4 64 239
+83670 c 96 239
+8367c c 97 239
+83688 8 64 239
+83690 c 96 239
+8369c 10 97 239
+836ac 8 64 239
+836b4 c 96 239
+836c0 10 97 239
+836d0 8 498 221
+836d8 38 499 221
+83710 10 132 222
+83720 4 133 222
+83724 8 132 222
+8372c c 133 222
+83738 8 134 222
+83740 4 133 222
+83744 8 134 222
+8374c 4 133 222
+83750 c 134 222
+8375c 14 138 222
+83770 c 135 222
+8377c 8 368 221
+83784 18 96 222
+8379c 4 385 221
+837a0 c 79 207
+837ac 8 387 221
+837b4 4 388 221
+837b8 8 387 221
+837c0 8 79 207
+837c8 4 387 221
+837cc c 389 221
+837d8 c 108 213
+837e4 4 41 213
+837e8 c 108 213
+837f4 18 41 213
+8380c 4 397 221
+83810 4 611 237
+83814 4 612 237
+83818 4 101 206
+8381c 8 397 221
+83824 8 613 237
+8382c 8 397 221
+83834 8 579 238
+8383c 4 355 217
+83840 4 74 239
+83844 8 472 238
+8384c 8 482 238
+83854 4 232 247
+83858 8 107 244
+83860 10 106 244
+83870 4 101 206
+83874 10 485 238
+83884 1c 399 221
+838a0 4 400 238
+838a4 10 399 221
+838b4 c 413 221
+838c0 4 400 238
+838c4 4 419 221
+838c8 4 400 238
+838cc 4 421 221
+838d0 4 400 238
+838d4 4 416 221
+838d8 4 419 221
+838dc 4 421 221
+838e0 c 419 221
+838ec 10 421 221
+838fc 4 422 221
+83900 10 400 238
+83910 8 423 221
+83918 8 427 221
+83920 4 427 221
+83924 4 100 222
+83928 4 427 221
+8392c c 100 222
+83938 8 427 221
+83940 10 437 221
+83950 8 439 221
+83958 c 443 221
+83964 c 444 221
+83970 10 446 221
+83980 8 579 238
+83988 4 427 221
+8398c 4 140 222
+83990 4 427 221
+83994 c 139 222
+839a0 8 427 221
+839a8 10 437 221
+839b8 c 437 221
+839c4 c 443 221
+839d0 c 448 221
+839dc 8 446 221
+839e4 4 448 221
+839e8 10 448 221
+839f8 1c 480 201
+83a14 4 62 230
+83a18 10 200 236
+83a28 10 199 236
+83a38 8 480 201
+83a40 8 450 221
+83a48 4 480 221
+83a4c 4 444 221
+83a50 c 480 221
+83a5c c 454 221
+83a68 14 480 221
+83a7c 24 454 221
+83aa0 18 136 222
+83ab8 8 385 221
+83ac0 1c 137 222
+83adc 10 140 222
+83aec 10 99 222
+83afc c 456 221
+83b08 10 458 221
+83b18 14 480 201
+83b2c 4 62 230
+83b30 10 200 236
+83b40 10 199 236
+83b50 8 480 201
+83b58 c 459 221
+83b64 8 452 221
+83b6c c 400 238
+83b78 8 492 221
+83b80 8 493 221
+83b88 8 213 201
+83b90 1c 213 201
+83bac 10 199 236
+83bbc 4 215 201
+83bc0 8 213 201
+83bc8 4 214 201
+83bcc 4 62 230
+83bd0 10 200 236
+83be0 14 199 236
+83bf4 8 200 236
+83bfc 4 62 230
+83c00 8 215 201
+83c08 8 213 201
+83c10 8 493 221
+83c18 4 494 221
+83c1c c 494 221
+83c28 18 480 201
+83c40 4 62 230
+83c44 10 200 236
+83c54 10 199 236
+83c64 8 480 201
+83c6c 8 496 221
+83c74 4 64 239
+83c78 4 498 221
+83c7c c 96 239
+83c88 4 97 239
+83c8c 8 70 213
+83c94 10 70 213
+83ca4 c 466 221
+83cb0 10 467 221
+83cc0 8 470 221
+83cc8 10 473 221
+83cd8 c 475 221
+83ce4 c 476 221
+83cf0 18 480 201
+83d08 4 62 230
+83d0c 10 200 236
+83d1c 10 199 236
+83d2c c 480 201
+83d38 8 285 201
+83d40 14 477 221
+83d54 8 285 201
+83d5c c 483 221
+83d68 1c 462 221
+83d84 8 213 201
+83d8c 10 213 201
+83d9c 10 199 236
+83dac 4 215 201
+83db0 8 213 201
+83db8 4 214 201
+83dbc 4 62 230
+83dc0 14 200 236
+83dd4 1c 199 236
+83df0 8 200 236
+83df8 c 62 230
+83e04 18 199 236
+83e1c c 200 236
+83e28 c 62 230
+83e34 14 199 236
+83e48 c 200 236
+83e54 c 62 230
+83e60 14 199 236
+83e74 c 200 236
+83e80 c 62 230
+83e8c 18 199 236
+83ea4 c 200 236
+83eb0 10 62 230
+83ec0 24 285 201
+83ee4 4 480 221
+83ee8 4 482 221
+83eec 4 480 221
+83ef0 c 482 221
+83efc 24 285 201
+83f20 c 355 221
+83f2c 24 285 201
+83f50 10 463 221
+83f60 8 304 238
+83f68 8 306 238
+83f70 8 307 238
+83f78 8 308 238
+83f80 14 134 223
+83f94 8 107 244
+83f9c c 106 244
+83fa8 4 107 244
+83fac c 106 244
+83fb8 4 101 206
+83fbc 4 107 244
+83fc0 4 64 239
+83fc4 c 96 239
+83fd0 8 97 239
+83fd8 8 70 213
+83fe0 8 70 213
+83fe8 4 479 238
+83fec 4 165 239
+83ff0 4 164 239
+83ff4 4 479 238
+83ff8 4 165 239
+83ffc 8 160 239
+84004 4 64 213
+84008 8 67 213
+84010 c 64 213
+8401c 4 64 239
+84020 c 96 239
+8402c c 97 239
+84038 8 64 239
+84040 c 96 239
+8404c 10 97 239
+8405c 8 64 239
+84064 c 96 239
+84070 10 97 239
+84080 18 498 221
+84098 14 305 238
+840ac 8 64 239
+840b4 c 96 239
+840c0 4 97 239
+840c4 4 70 213
+840c8 4 97 239
+840cc 4 70 213
+840d0 c 70 213
+FUNC 840dc 34 0 std::money_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::do_put
+840dc 4 515 221
+840e0 8 518 221
+840e8 4 515 221
+840ec 18 518 221
+84104 4 518 221
+84108 8 519 221
+FUNC 84110 c6c 0 std::priv::__money_do_put<char, std::ostreambuf_iterator<char, std::char_traits<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::priv::__basic_iostring<char> >
+84110 10 316 221
+84120 4 145 212
+84124 1c 316 221
+84140 4 145 212
+84144 18 316 221
+8415c 4 316 221
+84160 c 145 212
+8416c c 316 221
+84178 4 145 212
+8417c 38 351 219
+841b4 4 101 207
+841b8 4 351 219
+841bc 68 101 207
+84224 4 336 221
+84228 10 92 222
+84238 4 93 222
+8423c 8 92 222
+84244 c 93 222
+84250 8 94 222
+84258 4 93 222
+8425c 8 94 222
+84264 4 93 222
+84268 c 94 222
+84274 10 98 222
+84284 4 95 222
+84288 4 98 222
+8428c 4 95 222
+84290 1c 135 222
+842ac 8 354 221
+842b4 10 360 221
+842c4 4 361 221
+842c8 4 368 221
+842cc 4 362 221
+842d0 4 368 221
+842d4 18 97 222
+842ec 4 385 221
+842f0 8 387 221
+842f8 c 79 207
+84304 4 387 221
+84308 4 390 221
+8430c 4 64 239
+84310 c 96 239
+8431c c 97 239
+84328 8 64 239
+84330 c 96 239
+8433c 10 97 239
+8434c 8 64 239
+84354 c 96 239
+84360 10 97 239
+84370 8 498 221
+84378 38 499 221
+843b0 10 132 222
+843c0 4 133 222
+843c4 8 132 222
+843cc c 133 222
+843d8 8 134 222
+843e0 4 133 222
+843e4 8 134 222
+843ec 4 133 222
+843f0 c 134 222
+843fc 14 138 222
+84410 c 135 222
+8441c 8 368 221
+84424 18 96 222
+8443c 4 385 221
+84440 c 79 207
+8444c 8 387 221
+84454 4 388 221
+84458 8 387 221
+84460 8 79 207
+84468 4 387 221
+8446c c 389 221
+84478 c 108 213
+84484 4 41 213
+84488 c 108 213
+84494 18 41 213
+844ac 4 397 221
+844b0 4 611 237
+844b4 4 612 237
+844b8 4 101 206
+844bc 8 397 221
+844c4 8 613 237
+844cc 8 397 221
+844d4 8 579 238
+844dc 4 355 217
+844e0 4 74 239
+844e4 8 472 238
+844ec 8 482 238
+844f4 4 232 247
+844f8 8 107 244
+84500 10 106 244
+84510 4 101 206
+84514 10 485 238
+84524 1c 399 221
+84540 4 400 238
+84544 10 399 221
+84554 c 413 221
+84560 4 400 238
+84564 4 419 221
+84568 4 400 238
+8456c 4 421 221
+84570 4 400 238
+84574 4 416 221
+84578 4 419 221
+8457c 4 421 221
+84580 c 419 221
+8458c 10 421 221
+8459c 4 422 221
+845a0 10 400 238
+845b0 8 423 221
+845b8 8 427 221
+845c0 4 427 221
+845c4 4 100 222
+845c8 4 427 221
+845cc c 100 222
+845d8 8 427 221
+845e0 10 437 221
+845f0 8 439 221
+845f8 c 443 221
+84604 c 444 221
+84610 10 446 221
+84620 8 579 238
+84628 4 427 221
+8462c 4 140 222
+84630 4 427 221
+84634 c 139 222
+84640 8 427 221
+84648 10 437 221
+84658 c 437 221
+84664 c 443 221
+84670 c 448 221
+8467c 8 446 221
+84684 4 448 221
+84688 10 448 221
+84698 1c 480 201
+846b4 4 62 230
+846b8 10 200 236
+846c8 10 199 236
+846d8 8 480 201
+846e0 8 450 221
+846e8 4 480 221
+846ec 4 444 221
+846f0 c 480 221
+846fc c 454 221
+84708 14 480 221
+8471c 24 454 221
+84740 18 136 222
+84758 8 385 221
+84760 1c 137 222
+8477c 10 140 222
+8478c 10 99 222
+8479c c 456 221
+847a8 10 458 221
+847b8 14 480 201
+847cc 4 62 230
+847d0 10 200 236
+847e0 10 199 236
+847f0 8 480 201
+847f8 c 459 221
+84804 8 452 221
+8480c c 400 238
+84818 8 492 221
+84820 8 493 221
+84828 8 213 201
+84830 1c 213 201
+8484c 10 199 236
+8485c 4 215 201
+84860 8 213 201
+84868 4 214 201
+8486c 4 62 230
+84870 10 200 236
+84880 14 199 236
+84894 8 200 236
+8489c 4 62 230
+848a0 8 215 201
+848a8 8 213 201
+848b0 8 493 221
+848b8 4 494 221
+848bc c 494 221
+848c8 18 480 201
+848e0 4 62 230
+848e4 10 200 236
+848f4 10 199 236
+84904 8 480 201
+8490c 8 496 221
+84914 4 64 239
+84918 4 498 221
+8491c c 96 239
+84928 4 97 239
+8492c 8 70 213
+84934 10 70 213
+84944 c 466 221
+84950 10 467 221
+84960 8 470 221
+84968 10 473 221
+84978 c 475 221
+84984 c 476 221
+84990 18 480 201
+849a8 4 62 230
+849ac 10 200 236
+849bc 10 199 236
+849cc c 480 201
+849d8 8 285 201
+849e0 14 477 221
+849f4 8 285 201
+849fc c 483 221
+84a08 1c 462 221
+84a24 8 213 201
+84a2c 10 213 201
+84a3c 10 199 236
+84a4c 4 215 201
+84a50 8 213 201
+84a58 4 214 201
+84a5c 4 62 230
+84a60 14 200 236
+84a74 1c 199 236
+84a90 8 200 236
+84a98 c 62 230
+84aa4 18 199 236
+84abc c 200 236
+84ac8 c 62 230
+84ad4 14 199 236
+84ae8 c 200 236
+84af4 c 62 230
+84b00 14 199 236
+84b14 c 200 236
+84b20 c 62 230
+84b2c 18 199 236
+84b44 c 200 236
+84b50 10 62 230
+84b60 24 285 201
+84b84 4 480 221
+84b88 4 482 221
+84b8c 4 480 221
+84b90 c 482 221
+84b9c 24 285 201
+84bc0 c 355 221
+84bcc 24 285 201
+84bf0 10 463 221
+84c00 8 304 238
+84c08 8 306 238
+84c10 8 307 238
+84c18 8 308 238
+84c20 14 134 223
+84c34 8 107 244
+84c3c c 106 244
+84c48 4 107 244
+84c4c c 106 244
+84c58 4 101 206
+84c5c 4 107 244
+84c60 4 64 239
+84c64 c 96 239
+84c70 8 97 239
+84c78 8 70 213
+84c80 8 70 213
+84c88 4 479 238
+84c8c 4 165 239
+84c90 4 164 239
+84c94 4 479 238
+84c98 4 165 239
+84c9c 8 160 239
+84ca4 4 64 213
+84ca8 8 67 213
+84cb0 c 64 213
+84cbc 4 64 239
+84cc0 c 96 239
+84ccc c 97 239
+84cd8 8 64 239
+84ce0 c 96 239
+84cec 10 97 239
+84cfc 8 64 239
+84d04 c 96 239
+84d10 10 97 239
+84d20 18 498 221
+84d38 14 305 238
+84d4c 8 64 239
+84d54 c 96 239
+84d60 4 97 239
+84d64 4 70 213
+84d68 4 97 239
+84d6c 4 70 213
+84d70 c 70 213
+FUNC 84d7c 138 0 std::money_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::do_put
+84d7c 10 505 221
+84d8c 4 108 213
+84d90 4 41 213
+84d94 10 505 221
+84da4 c 108 213
+84db0 4 41 213
+84db4 4 505 221
+84db8 10 505 221
+84dc8 4 108 213
+84dcc 10 41 213
+84ddc 4 611 237
+84de0 4 128 226
+84de4 4 613 237
+84de8 4 128 226
+84dec 4 612 237
+84df0 4 613 237
+84df4 4 101 206
+84df8 4 128 226
+84dfc 28 510 221
+84e24 4 64 239
+84e28 4 510 221
+84e2c c 96 239
+84e38 4 97 239
+84e3c 8 319 202
+84e44 4 97 239
+84e48 8 161 202
+84e50 4 161 202
+84e54 24 511 221
+84e78 8 135 223
+84e80 8 64 239
+84e88 c 96 239
+84e94 4 97 239
+84e98 4 70 213
+84e9c 4 97 239
+84ea0 4 70 213
+84ea4 10 70 213
+FUNC 84eb4 38 0 std::priv::_String_base<wchar_t, std::priv::__iostring_allocator<wchar_t> >::_M_deallocate_block
+84eb4 4 64 239
+84eb8 c 96 239
+84ec4 4 97 239
+84ec8 8 319 202
+84ed0 4 97 239
+84ed4 4 135 223
+84ed8 8 161 202
+84ee0 4 161 202
+84ee4 4 102 239
+84ee8 4 135 223
+FUNC 84eec 1d4 0 std::time_put<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_put
+84eec 10 425 242
+84efc 4 145 212
+84f00 8 425 242
+84f08 4 145 212
+84f0c 4 425 242
+84f10 4 145 212
+84f14 10 425 242
+84f24 c 425 242
+84f30 4 145 212
+84f34 14 351 219
+84f48 4 428 242
+84f4c 4 108 213
+84f50 4 41 213
+84f54 4 428 242
+84f58 10 108 213
+84f68 14 41 213
+84f7c 4 613 237
+84f80 18 430 242
+84f98 4 611 237
+84f9c 4 612 237
+84fa0 4 613 237
+84fa4 4 101 206
+84fa8 10 430 242
+84fb8 4 213 201
+84fbc 14 213 201
+84fd0 c 199 236
+84fdc 4 200 236
+84fe0 8 62 230
+84fe8 4 215 201
+84fec 8 213 201
+84ff4 4 214 201
+84ff8 4 62 230
+84ffc 10 200 236
+8500c 14 199 236
+85020 10 200 236
+85030 14 96 239
+85044 4 97 239
+85048 8 319 202
+85050 4 97 239
+85054 8 161 202
+8505c 4 161 202
+85060 28 432 242
+85088 8 135 223
+85090 c 213 201
+8509c 14 428 242
+850b0 10 156 239
+FUNC 850c0 c68 0 std::priv::__money_do_put<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >
+850c0 24 316 221
+850e4 4 145 212
+850e8 18 316 221
+85100 8 145 212
+85108 c 316 221
+85114 8 145 212
+8511c 4 316 221
+85120 c 316 221
+8512c 4 145 212
+85130 38 351 219
+85168 4 206 207
+8516c 4 351 219
+85170 5c 206 207
+851cc 4 336 221
+851d0 10 173 222
+851e0 4 174 222
+851e4 4 173 222
+851e8 c 174 222
+851f4 8 175 222
+851fc 4 174 222
+85200 10 175 222
+85210 10 179 222
+85220 4 176 222
+85224 4 179 222
+85228 4 176 222
+8522c 1c 215 222
+85248 8 354 221
+85250 14 360 221
+85264 4 361 221
+85268 8 368 221
+85270 1c 177 222
+8528c 8 385 221
+85294 1c 184 207
+852b0 4 387 221
+852b4 c 389 221
+852c0 c 108 213
+852cc 4 41 213
+852d0 c 108 213
+852dc 14 41 213
+852f0 4 101 206
+852f4 4 397 221
+852f8 4 41 213
+852fc 4 397 221
+85300 4 613 237
+85304 4 611 237
+85308 4 612 237
+8530c 4 397 221
+85310 4 613 237
+85314 4 397 221
+85318 4 355 217
+8531c 4 74 239
+85320 8 355 217
+85328 8 472 238
+85330 8 482 238
+85338 4 267 247
+8533c 8 107 244
+85344 c 106 244
+85350 10 484 238
+85360 4 101 206
+85364 8 485 238
+8536c 2c 399 221
+85398 4 400 238
+8539c 4 413 221
+853a0 4 419 221
+853a4 4 421 221
+853a8 8 400 238
+853b0 4 419 221
+853b4 4 413 221
+853b8 4 421 221
+853bc 8 400 238
+853c4 8 421 221
+853cc 8 416 221
+853d4 4 419 221
+853d8 4 413 221
+853dc 4 419 221
+853e0 4 422 221
+853e4 10 400 238
+853f4 8 423 221
+853fc 8 427 221
+85404 4 427 221
+85408 4 181 222
+8540c 4 427 221
+85410 c 181 222
+8541c 8 427 221
+85424 10 437 221
+85434 8 439 221
+8543c c 443 221
+85448 c 444 221
+85454 c 446 221
+85460 10 212 222
+85470 4 213 222
+85474 4 212 222
+85478 c 213 222
+85484 8 214 222
+8548c 4 213 222
+85490 10 214 222
+854a0 14 218 222
+854b4 c 215 222
+854c0 4 368 221
+854c4 4 362 221
+854c8 4 368 221
+854cc 1c 178 222
+854e8 4 385 221
+854ec c 387 221
+854f8 4 390 221
+854fc 8 64 239
+85504 c 96 239
+85510 18 97 239
+85528 8 64 239
+85530 c 96 239
+8553c 18 97 239
+85554 4 64 239
+85558 c 96 239
+85564 c 97 239
+85570 8 498 221
+85578 38 499 221
+855b0 4 388 221
+855b4 c 387 221
+855c0 c 108 213
+855cc 4 41 213
+855d0 c 108 213
+855dc 14 41 213
+855f0 4 101 206
+855f4 4 397 221
+855f8 4 41 213
+855fc 4 397 221
+85600 4 613 237
+85604 4 611 237
+85608 4 612 237
+8560c 4 397 221
+85610 4 613 237
+85614 4 397 221
+85618 10 584 238
+85628 4 427 221
+8562c 4 220 222
+85630 4 427 221
+85634 c 219 222
+85640 8 427 221
+85648 10 437 221
+85658 c 437 221
+85664 c 443 221
+85670 c 448 221
+8567c 8 446 221
+85684 4 448 221
+85688 10 448 221
+85698 1c 480 201
+856b4 4 62 230
+856b8 10 200 236
+856c8 c 199 236
+856d4 4 200 236
+856d8 8 62 230
+856e0 8 480 201
+856e8 8 450 221
+856f0 14 480 221
+85704 c 454 221
+85710 18 477 221
+85728 24 454 221
+8574c 20 216 222
+8576c 20 217 222
+8578c 10 220 222
+8579c 10 180 222
+857ac c 456 221
+857b8 10 458 221
+857c8 14 480 201
+857dc 4 62 230
+857e0 10 200 236
+857f0 c 199 236
+857fc 4 200 236
+85800 8 62 230
+85808 8 480 201
+85810 c 459 221
+8581c 8 452 221
+85824 10 400 238
+85834 8 492 221
+8583c 8 493 221
+85844 c 213 201
+85850 1c 213 201
+8586c c 199 236
+85878 4 200 236
+8587c 8 62 230
+85884 4 215 201
+85888 8 213 201
+85890 4 214 201
+85894 4 62 230
+85898 10 200 236
+858a8 14 199 236
+858bc c 200 236
+858c8 8 470 221
+858d0 10 473 221
+858e0 c 475 221
+858ec c 476 221
+858f8 10 477 221
+85908 4 480 201
+8590c 4 62 230
+85910 10 200 236
+85920 c 199 236
+8592c 4 200 236
+85930 8 62 230
+85938 c 480 201
+85944 8 285 201
+8594c 10 477 221
+8595c 4 285 201
+85960 4 477 221
+85964 10 285 201
+85974 c 466 221
+85980 10 467 221
+85990 8 462 221
+85998 28 285 201
+859c0 c 483 221
+859cc 18 199 236
+859e4 10 200 236
+859f4 8 493 221
+859fc 4 494 221
+85a00 c 494 221
+85a0c 18 480 201
+85a24 4 62 230
+85a28 10 200 236
+85a38 c 199 236
+85a44 4 200 236
+85a48 8 62 230
+85a50 8 480 201
+85a58 8 496 221
+85a60 4 64 239
+85a64 4 498 221
+85a68 c 96 239
+85a74 4 97 239
+85a78 8 319 202
+85a80 4 97 239
+85a84 8 161 202
+85a8c 8 161 202
+85a94 14 199 236
+85aa8 10 200 236
+85ab8 14 199 236
+85acc 10 200 236
+85adc 18 199 236
+85af4 14 200 236
+85b08 24 285 201
+85b2c 4 480 221
+85b30 4 482 221
+85b34 4 480 221
+85b38 c 482 221
+85b44 24 285 201
+85b68 c 355 221
+85b74 24 285 201
+85b98 8 135 223
+85ba0 c 304 238
+85bac 8 307 238
+85bb4 4 64 213
+85bb8 4 67 213
+85bbc 8 64 213
+85bc4 10 107 244
+85bd4 10 106 244
+85be4 4 107 244
+85be8 c 106 244
+85bf4 4 107 244
+85bf8 4 64 239
+85bfc 4 101 206
+85c00 c 96 239
+85c0c 8 97 239
+85c14 8 319 202
+85c1c 4 97 239
+85c20 4 135 223
+85c24 8 161 202
+85c2c 4 161 202
+85c30 8 479 238
+85c38 4 164 239
+85c3c 4 165 239
+85c40 4 479 238
+85c44 c 160 239
+85c50 c 135 223
+85c5c c 134 223
+85c68 10 600 237
+85c78 14 498 221
+85c8c 8 64 239
+85c94 c 96 239
+85ca0 18 97 239
+85cb8 4 64 239
+85cbc c 96 239
+85cc8 1c 97 239
+85ce4 c 156 239
+85cf0 8 64 239
+85cf8 c 96 239
+85d04 24 97 239
+FUNC 85d28 34 0 std::money_put<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_put
+85d28 4 515 221
+85d2c 8 518 221
+85d34 4 515 221
+85d38 18 518 221
+85d50 4 518 221
+85d54 8 519 221
+FUNC 85d5c c68 0 std::priv::__money_do_put<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >, std::priv::__basic_iostring<wchar_t> >
+85d5c 24 316 221
+85d80 4 145 212
+85d84 18 316 221
+85d9c 8 145 212
+85da4 c 316 221
+85db0 8 145 212
+85db8 4 316 221
+85dbc c 316 221
+85dc8 4 145 212
+85dcc 38 351 219
+85e04 4 206 207
+85e08 4 351 219
+85e0c 5c 206 207
+85e68 4 336 221
+85e6c 10 173 222
+85e7c 4 174 222
+85e80 4 173 222
+85e84 c 174 222
+85e90 8 175 222
+85e98 4 174 222
+85e9c 10 175 222
+85eac 10 179 222
+85ebc 4 176 222
+85ec0 4 179 222
+85ec4 4 176 222
+85ec8 1c 215 222
+85ee4 8 354 221
+85eec 14 360 221
+85f00 4 361 221
+85f04 8 368 221
+85f0c 1c 177 222
+85f28 8 385 221
+85f30 1c 184 207
+85f4c 4 387 221
+85f50 c 389 221
+85f5c c 108 213
+85f68 4 41 213
+85f6c c 108 213
+85f78 14 41 213
+85f8c 4 101 206
+85f90 4 397 221
+85f94 4 41 213
+85f98 4 397 221
+85f9c 4 613 237
+85fa0 4 611 237
+85fa4 4 612 237
+85fa8 4 397 221
+85fac 4 613 237
+85fb0 4 397 221
+85fb4 4 355 217
+85fb8 4 74 239
+85fbc 8 355 217
+85fc4 8 472 238
+85fcc 8 482 238
+85fd4 4 267 247
+85fd8 8 107 244
+85fe0 c 106 244
+85fec 10 484 238
+85ffc 4 101 206
+86000 8 485 238
+86008 2c 399 221
+86034 4 400 238
+86038 4 413 221
+8603c 4 419 221
+86040 4 421 221
+86044 8 400 238
+8604c 4 419 221
+86050 4 413 221
+86054 4 421 221
+86058 8 400 238
+86060 8 421 221
+86068 8 416 221
+86070 4 419 221
+86074 4 413 221
+86078 4 419 221
+8607c 4 422 221
+86080 10 400 238
+86090 8 423 221
+86098 8 427 221
+860a0 4 427 221
+860a4 4 181 222
+860a8 4 427 221
+860ac c 181 222
+860b8 8 427 221
+860c0 10 437 221
+860d0 8 439 221
+860d8 c 443 221
+860e4 c 444 221
+860f0 c 446 221
+860fc 10 212 222
+8610c 4 213 222
+86110 4 212 222
+86114 c 213 222
+86120 8 214 222
+86128 4 213 222
+8612c 10 214 222
+8613c 14 218 222
+86150 c 215 222
+8615c 4 368 221
+86160 4 362 221
+86164 4 368 221
+86168 1c 178 222
+86184 4 385 221
+86188 c 387 221
+86194 4 390 221
+86198 8 64 239
+861a0 c 96 239
+861ac 18 97 239
+861c4 8 64 239
+861cc c 96 239
+861d8 18 97 239
+861f0 4 64 239
+861f4 c 96 239
+86200 c 97 239
+8620c 8 498 221
+86214 38 499 221
+8624c 4 388 221
+86250 c 387 221
+8625c c 108 213
+86268 4 41 213
+8626c c 108 213
+86278 14 41 213
+8628c 4 101 206
+86290 4 397 221
+86294 4 41 213
+86298 4 397 221
+8629c 4 613 237
+862a0 4 611 237
+862a4 4 612 237
+862a8 4 397 221
+862ac 4 613 237
+862b0 4 397 221
+862b4 10 584 238
+862c4 4 427 221
+862c8 4 220 222
+862cc 4 427 221
+862d0 c 219 222
+862dc 8 427 221
+862e4 10 437 221
+862f4 c 437 221
+86300 c 443 221
+8630c c 448 221
+86318 8 446 221
+86320 4 448 221
+86324 10 448 221
+86334 1c 480 201
+86350 4 62 230
+86354 10 200 236
+86364 c 199 236
+86370 4 200 236
+86374 8 62 230
+8637c 8 480 201
+86384 8 450 221
+8638c 14 480 221
+863a0 c 454 221
+863ac 18 477 221
+863c4 24 454 221
+863e8 20 216 222
+86408 20 217 222
+86428 10 220 222
+86438 10 180 222
+86448 c 456 221
+86454 10 458 221
+86464 14 480 201
+86478 4 62 230
+8647c 10 200 236
+8648c c 199 236
+86498 4 200 236
+8649c 8 62 230
+864a4 8 480 201
+864ac c 459 221
+864b8 8 452 221
+864c0 10 400 238
+864d0 8 492 221
+864d8 8 493 221
+864e0 c 213 201
+864ec 1c 213 201
+86508 c 199 236
+86514 4 200 236
+86518 8 62 230
+86520 4 215 201
+86524 8 213 201
+8652c 4 214 201
+86530 4 62 230
+86534 10 200 236
+86544 14 199 236
+86558 c 200 236
+86564 8 470 221
+8656c 10 473 221
+8657c c 475 221
+86588 c 476 221
+86594 10 477 221
+865a4 4 480 201
+865a8 4 62 230
+865ac 10 200 236
+865bc c 199 236
+865c8 4 200 236
+865cc 8 62 230
+865d4 c 480 201
+865e0 8 285 201
+865e8 10 477 221
+865f8 4 285 201
+865fc 4 477 221
+86600 10 285 201
+86610 c 466 221
+8661c 10 467 221
+8662c 8 462 221
+86634 28 285 201
+8665c c 483 221
+86668 18 199 236
+86680 10 200 236
+86690 8 493 221
+86698 4 494 221
+8669c c 494 221
+866a8 18 480 201
+866c0 4 62 230
+866c4 10 200 236
+866d4 c 199 236
+866e0 4 200 236
+866e4 8 62 230
+866ec 8 480 201
+866f4 8 496 221
+866fc 4 64 239
+86700 4 498 221
+86704 c 96 239
+86710 4 97 239
+86714 8 319 202
+8671c 4 97 239
+86720 8 161 202
+86728 8 161 202
+86730 14 199 236
+86744 10 200 236
+86754 14 199 236
+86768 10 200 236
+86778 18 199 236
+86790 14 200 236
+867a4 24 285 201
+867c8 4 480 221
+867cc 4 482 221
+867d0 4 480 221
+867d4 c 482 221
+867e0 24 285 201
+86804 c 355 221
+86810 24 285 201
+86834 8 135 223
+8683c c 304 238
+86848 8 307 238
+86850 4 64 213
+86854 4 67 213
+86858 8 64 213
+86860 10 107 244
+86870 10 106 244
+86880 4 107 244
+86884 c 106 244
+86890 4 107 244
+86894 4 64 239
+86898 4 101 206
+8689c c 96 239
+868a8 8 97 239
+868b0 8 319 202
+868b8 4 97 239
+868bc 4 135 223
+868c0 8 161 202
+868c8 4 161 202
+868cc 8 479 238
+868d4 4 164 239
+868d8 4 165 239
+868dc 4 479 238
+868e0 c 160 239
+868ec c 135 223
+868f8 c 134 223
+86904 10 600 237
+86914 14 498 221
+86928 8 64 239
+86930 c 96 239
+8693c 18 97 239
+86954 4 64 239
+86958 c 96 239
+86964 1c 97 239
+86980 c 156 239
+8698c 8 64 239
+86994 c 96 239
+869a0 24 97 239
+FUNC 869c4 214 0 std::money_put<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_put
+869c4 10 505 221
+869d4 8 108 213
+869dc 10 505 221
+869ec c 108 213
+869f8 4 41 213
+869fc 4 505 221
+86a00 4 41 213
+86a04 8 505 221
+86a0c 4 41 213
+86a10 4 505 221
+86a14 8 505 221
+86a1c 4 108 213
+86a20 10 41 213
+86a30 4 611 237
+86a34 4 108 213
+86a38 4 613 237
+86a3c 8 108 213
+86a44 4 101 206
+86a48 4 613 237
+86a4c 4 612 237
+86a50 4 108 213
+86a54 10 41 213
+86a64 4 611 237
+86a68 4 133 226
+86a6c 4 613 237
+86a70 4 133 226
+86a74 4 612 237
+86a78 4 613 237
+86a7c 4 101 206
+86a80 4 133 226
+86a84 c 145 212
+86a90 14 351 219
+86aa4 8 135 226
+86aac 18 136 226
+86ac4 4 64 239
+86ac8 c 96 239
+86ad4 4 97 239
+86ad8 8 319 202
+86ae0 4 97 239
+86ae4 8 161 202
+86aec 4 161 202
+86af0 28 510 221
+86b18 4 64 239
+86b1c 4 510 221
+86b20 c 96 239
+86b2c 8 97 239
+86b34 8 319 202
+86b3c 4 97 239
+86b40 8 161 202
+86b48 4 161 202
+86b4c 28 511 221
+86b74 14 135 223
+86b88 14 156 239
+86b9c c 135 226
+86ba8 4 64 239
+86bac c 96 239
+86bb8 4 97 239
+86bbc 4 70 213
+86bc0 4 97 239
+86bc4 4 70 213
+86bc8 10 70 213
+FUNC 86bd8 278 0 std::priv::__get_string<std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, wchar_t*>
+86bd8 34 51 221
+86c0c 20 51 221
+86c2c 4 75 215
+86c30 c 90 215
+86c3c 4 77 215
+86c40 8 90 215
+86c48 4 53 221
+86c4c 10 53 221
+86c5c 4 90 215
+86c60 c 53 221
+86c6c 4 57 221
+86c70 8 62 231
+86c78 4 57 221
+86c7c 4 62 231
+86c80 4 57 221
+86c84 4 58 221
+86c88 4 62 231
+86c8c 20 58 221
+86cac 14 235 236
+86cc0 c 95 215
+86ccc 8 235 236
+86cd4 10 229 236
+86ce4 8 228 236
+86cec 4 55 221
+86cf0 8 69 215
+86cf8 4 228 236
+86cfc 20 229 236
+86d1c 14 235 236
+86d30 c 95 215
+86d3c 1c 235 236
+86d58 10 95 215
+86d68 18 234 236
+86d80 4 95 215
+86d84 28 234 236
+86dac 8 95 215
+86db4 1c 234 236
+86dd0 8 95 215
+86dd8 10 235 236
+86de8 4 95 215
+86dec 14 235 236
+86e00 4 95 215
+86e04 2c 235 236
+86e30 4 95 215
+86e34 1c 235 236
+FUNC 86e50 26c 0 std::priv::__get_string<std::istreambuf_iterator<char, std::char_traits<char> >, char*>
+86e50 3c 51 221
+86e8c 14 51 221
+86ea0 4 75 215
+86ea4 10 90 215
+86eb4 4 77 215
+86eb8 c 90 215
+86ec4 4 53 221
+86ec8 10 53 221
+86ed8 4 90 215
+86edc c 53 221
+86ee8 4 57 221
+86eec 8 62 231
+86ef4 4 57 221
+86ef8 8 62 231
+86f00 4 57 221
+86f04 24 58 221
+86f28 14 235 236
+86f3c 8 95 215
+86f44 18 234 236
+86f5c 4 95 215
+86f60 8 234 236
+86f68 10 229 236
+86f78 8 228 236
+86f80 4 55 221
+86f84 8 69 215
+86f8c 4 228 236
+86f90 20 229 236
+86fb0 18 235 236
+86fc8 8 95 215
+86fd0 18 235 236
+86fe8 8 95 215
+86ff0 20 234 236
+87010 8 95 215
+87018 1c 234 236
+87034 8 95 215
+8703c 8 235 236
+87044 4 95 215
+87048 24 235 236
+8706c 4 95 215
+87070 2c 235 236
+8709c 4 95 215
+870a0 1c 235 236
+FUNC 870bc 138 0 std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >::equal
+870bc c 74 215
+870c8 4 74 215
+870cc 8 75 215
+870d4 8 90 215
+870dc 8 77 215
+870e4 8 90 215
+870ec 8 79 215
+870f4 4 80 215
+870f8 4 79 215
+870fc c 80 215
+87108 1c 235 236
+87124 4 94 215
+87128 4 93 215
+8712c 8 95 215
+87134 4 79 215
+87138 4 80 215
+8713c 4 79 215
+87140 c 80 215
+8714c 1c 235 236
+87168 4 93 215
+8716c 4 95 215
+87170 4 94 215
+87174 8 95 215
+8717c 4c 234 236
+871c8 2c 235 236
+FUNC 871f4 290 0 std::priv::__match<std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, const std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >*>
+871f4 14 78 242
+87208 14 80 242
+8721c 4 78 242
+87220 4 80 242
+87224 14 78 242
+87238 8 80 242
+87240 4 87 242
+87244 4 120 215
+87248 8 83 242
+87250 4 120 215
+87254 4 85 242
+87258 4 87 242
+8725c 8 78 242
+87264 4 82 242
+87268 4 87 242
+8726c 4 78 242
+87270 8 120 215
+87278 4 81 242
+8727c 4 107 242
+87280 4 89 242
+87284 28 91 242
+872ac 8 92 242
+872b4 10 90 215
+872c4 c 93 242
+872d0 4 108 242
+872d4 4 107 242
+872d8 4 108 242
+872dc c 110 242
+872e8 14 91 242
+872fc 4 68 215
+87300 10 229 236
+87310 8 228 236
+87318 4 120 215
+8731c 4 69 215
+87320 4 120 215
+87324 4 119 242
+87328 4 120 242
+8732c 8 120 215
+87334 4 89 242
+87338 28 124 242
+87360 8 115 242
+87368 8 115 242
+87370 4 92 215
+87374 1c 235 236
+87390 8 94 215
+87398 4 93 215
+8739c 4 95 215
+873a0 c 93 242
+873ac c 400 238
+873b8 c 94 242
+873c4 c 104 242
+873d0 20 234 236
+873f0 4 97 242
+873f4 4 96 242
+873f8 4 97 242
+873fc 8 99 242
+87404 8 93 242
+8740c 8 228 236
+87414 18 229 236
+8742c 1c 235 236
+87448 8 91 242
+87450 4 68 215
+87454 4 93 242
+87458 10 229 236
+87468 8 228 236
+87470 4 69 215
+87474 8 101 242
+8747c 8 69 215
+FUNC 87484 178 0 std::time_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_get_monthname
+87484 c 384 242
+87490 4 292 242
+87494 4 384 242
+87498 8 384 242
+874a0 4 292 242
+874a4 8 384 242
+874ac 10 292 242
+874bc 8 293 242
+874c4 20 294 242
+874e4 4 390 242
+874e8 4 396 242
+874ec c 397 242
+874f8 4 75 215
+874fc 8 392 242
+87504 4 75 215
+87508 8 90 215
+87510 8 77 215
+87518 c 90 215
+87524 c 393 242
+87530 c 394 242
+8753c 4 396 242
+87540 c 397 242
+8754c 3c 235 236
+87588 4 93 215
+8758c 4 95 215
+87590 4 94 215
+87594 8 95 215
+8759c 1c 234 236
+875b8 10 235 236
+875c8 24 234 236
+875ec 10 235 236
+FUNC 875fc 188 0 std::time_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_get_weekday
+875fc c 367 242
+87608 4 281 242
+8760c 4 367 242
+87610 c 367 242
+8761c c 281 242
+87628 4 367 242
+8762c 4 281 242
+87630 8 282 242
+87638 34 283 242
+8766c 4 373 242
+87670 4 379 242
+87674 c 380 242
+87680 4 75 215
+87684 8 375 242
+8768c 4 75 215
+87690 8 90 215
+87698 8 77 215
+876a0 c 90 215
+876ac c 376 242
+876b8 c 377 242
+876c4 4 379 242
+876c8 c 380 242
+876d4 3c 235 236
+87710 4 93 215
+87714 4 95 215
+87718 4 94 215
+8771c 8 95 215
+87724 1c 234 236
+87740 10 235 236
+87750 24 234 236
+87774 10 235 236
+FUNC 87784 4c4 0 std::priv::__get_formatted_time<std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, wchar_t, std::priv::_WTime_Info>
+87784 c 149 242
+87790 4 145 212
+87794 8 149 242
+8779c 8 145 212
+877a4 4 149 242
+877a8 4 145 212
+877ac 10 149 242
+877bc c 149 242
+877c8 4 145 212
+877cc 10 351 219
+877dc 8 231 242
+877e4 4 166 242
+877e8 8 351 219
+877f0 4 153 242
+877f4 4 166 242
+877f8 4 231 242
+877fc 4 153 242
+87800 8 75 215
+87808 8 90 215
+87810 8 77 215
+87818 c 90 215
+87824 4 156 242
+87828 10 156 242
+87838 c 158 242
+87844 4 160 242
+87848 8 161 242
+87850 4 159 242
+87854 1c 166 242
+87870 1c 235 236
+8788c 4 156 242
+87890 4 93 215
+87894 4 95 215
+87898 4 94 215
+8789c 4 156 242
+878a0 4 95 215
+878a4 4 156 242
+878a8 20 276 242
+878c8 4 166 242
+878cc 4 157 242
+878d0 24 182 242
+878f4 8 183 242
+878fc 4 185 242
+87900 8 272 242
+87908 4 166 242
+8790c 4 157 242
+87910 24 171 242
+87934 8 172 242
+8793c 4 174 242
+87940 8 272 242
+87948 18 250 242
+87960 4 251 242
+87964 8 272 242
+8796c 18 257 242
+87984 c 258 242
+87990 4 259 242
+87994 8 272 242
+8799c 18 243 242
+879b4 4 244 242
+879b8 8 272 242
+879c0 14 231 242
+879d4 8 232 242
+879dc 8 235 242
+879e4 4 237 242
+879e8 c 237 242
+879f4 4 238 242
+879f8 8 272 242
+87a00 14 213 242
+87a14 c 214 242
+87a20 10 215 242
+87a30 14 216 242
+87a44 4 217 242
+87a48 18 206 242
+87a60 4 207 242
+87a64 8 272 242
+87a6c 18 190 242
+87a84 4 191 242
+87a88 10 191 242
+87a98 8 272 242
+87aa0 18 223 242
+87ab8 4 224 242
+87abc 8 272 242
+87ac4 18 199 242
+87adc 4 200 242
+87ae0 8 272 242
+87ae8 4 166 242
+87aec 8 179 242
+87af4 4 166 242
+87af8 8 168 242
+87b00 8 269 242
+87b08 4 90 215
+87b0c 8 269 242
+87b14 4 90 215
+87b18 14 206 207
+87b2c 8 269 242
+87b34 8 272 242
+87b3c 1c 235 236
+87b58 4 93 215
+87b5c 4 95 215
+87b60 4 94 215
+87b64 8 95 215
+87b6c 14 235 236
+87b80 8 93 215
+87b88 4 163 242
+87b8c 8 162 242
+87b94 4c 234 236
+87be0 8 235 236
+87be8 8 93 215
+87bf0 28 235 236
+87c18 c 235 242
+87c24 4 236 242
+87c28 4 272 242
+87c2c c 236 242
+87c38 10 153 242
+FUNC 87c48 1c0 0 std::time_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_get_date
+87c48 24 304 242
+87c6c 4 315 242
+87c70 4 304 242
+87c74 4 315 242
+87c78 4 304 242
+87c7c 4 315 242
+87c80 4 304 242
+87c84 10 315 242
+87c94 4 304 242
+87c98 10 315 242
+87ca8 8 304 242
+87cb0 4 315 242
+87cb4 18 316 242
+87ccc 8 319 242
+87cd4 4 75 215
+87cd8 8 90 215
+87ce0 4 77 215
+87ce4 c 90 215
+87cf0 8 320 242
+87cf8 c 321 242
+87d04 4 324 242
+87d08 8 323 242
+87d10 4 324 242
+87d14 4 323 242
+87d18 24 324 242
+87d3c 20 235 236
+87d5c 8 317 242
+87d64 14 235 236
+87d78 c 95 215
+87d84 8 235 236
+87d8c 1c 234 236
+87da8 14 235 236
+87dbc 24 234 236
+87de0 8 95 215
+87de8 4 235 236
+87dec 4 95 215
+87df0 18 235 236
+FUNC 87e08 1b8 0 std::time_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_get_time
+87e08 24 328 242
+87e2c 4 338 242
+87e30 4 328 242
+87e34 4 338 242
+87e38 4 328 242
+87e3c 4 338 242
+87e40 4 328 242
+87e44 c 338 242
+87e50 4 328 242
+87e54 14 338 242
+87e68 8 328 242
+87e70 4 338 242
+87e74 10 339 242
+87e84 10 339 242
+87e94 4 75 215
+87e98 8 90 215
+87ea0 4 77 215
+87ea4 c 90 215
+87eb0 8 341 242
+87eb8 c 342 242
+87ec4 4 344 242
+87ec8 8 343 242
+87ed0 4 344 242
+87ed4 4 343 242
+87ed8 24 344 242
+87efc 34 235 236
+87f30 c 95 215
+87f3c 8 235 236
+87f44 24 234 236
+87f68 8 95 215
+87f70 1c 234 236
+87f8c 18 235 236
+87fa4 4 95 215
+87fa8 18 235 236
+FUNC 87fc0 498 0 std::priv::__do_get_alphabool<std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, wchar_t>
+87fc0 8 449 224
+87fc8 4 145 212
+87fcc 8 449 224
+87fd4 4 145 212
+87fd8 18 449 224
+87ff0 c 145 212
+87ffc c 449 224
+88008 4 145 212
+8800c 14 351 219
+88020 4 451 224
+88024 4 88 228
+88028 4 451 224
+8802c 14 88 228
+88040 2c 89 228
+8806c c 95 215
+88078 4 75 215
+8807c 8 90 215
+88084 8 77 215
+8808c c 90 215
+88098 c 458 224
+880a4 18 90 215
+880bc 4 460 224
+880c0 4 461 224
+880c4 4 462 224
+880c8 8 229 236
+880d0 8 228 236
+880d8 8 69 215
+880e0 4 471 224
+880e4 c 400 238
+880f0 8 471 224
+880f8 4 472 224
+880fc 4 400 238
+88100 4 472 224
+88104 8 400 238
+8810c 8 472 224
+88114 c 479 224
+88120 10 112 215
+88130 4 481 224
+88134 10 482 224
+88144 4 96 239
+88148 4 64 239
+8814c 4 484 224
+88150 c 96 239
+8815c 18 97 239
+88174 4 64 239
+88178 c 96 239
+88184 14 97 239
+88198 2c 485 224
+881c4 1c 235 236
+881e0 4 93 215
+881e4 4 94 215
+881e8 8 95 215
+881f0 10 460 224
+88200 8 461 224
+88208 c 461 224
+88214 4 464 224
+88218 c 400 238
+88224 8 464 224
+8822c 4 229 236
+88230 8 464 224
+88238 4 229 236
+8823c c 228 236
+88248 10 69 215
+88258 4 464 224
+8825c 8 400 238
+88264 c 464 224
+88270 c 400 238
+8827c 8 464 224
+88284 8 229 236
+8828c 4 228 236
+88290 10 229 236
+882a0 4 92 215
+882a4 1c 235 236
+882c0 4 93 215
+882c4 4 94 215
+882c8 8 95 215
+882d0 1c 235 236
+882ec 4 93 215
+882f0 4 94 215
+882f4 c 95 215
+88300 c 461 224
+8830c 4 464 224
+88310 c 229 236
+8831c c 69 215
+88328 54 234 236
+8837c 8 475 224
+88384 c 476 224
+88390 48 235 236
+883d8 4 64 239
+883dc c 96 239
+883e8 20 97 239
+88408 14 451 224
+8841c 4 64 239
+88420 10 96 239
+88430 1c 97 239
+8844c 4 464 224
+88450 8 464 224
+FUNC 88458 130 0 std::istreambuf_iterator<char, std::char_traits<char> >::equal
+88458 c 74 215
+88464 4 74 215
+88468 8 75 215
+88470 8 90 215
+88478 8 77 215
+88480 8 90 215
+88488 8 79 215
+88490 4 80 215
+88494 4 79 215
+88498 c 80 215
+884a4 14 235 236
+884b8 4 93 215
+884bc 4 95 215
+884c0 4 94 215
+884c4 4 95 215
+884c8 4 79 215
+884cc 4 80 215
+884d0 4 79 215
+884d4 c 80 215
+884e0 14 235 236
+884f4 4 93 215
+884f8 4 95 215
+884fc 4 94 215
+88500 8 95 215
+88508 4c 234 236
+88554 34 235 236
+FUNC 88588 268 0 std::priv::__match<std::istreambuf_iterator<char, std::char_traits<char> >, const std::basic_string<char, std::char_traits<char>, std::allocator<char> >*>
+88588 4 78 242
+8858c 4 80 242
+88590 24 78 242
+885b4 8 80 242
+885bc 4 87 242
+885c0 4 78 242
+885c4 4 80 242
+885c8 4 78 242
+885cc 4 120 215
+885d0 4 87 242
+885d4 4 85 242
+885d8 4 83 242
+885dc 4 120 215
+885e0 8 78 242
+885e8 4 82 242
+885ec 4 87 242
+885f0 4 78 242
+885f4 8 120 215
+885fc 4 81 242
+88600 4 107 242
+88604 4 89 242
+88608 24 91 242
+8862c 8 92 242
+88634 10 90 215
+88644 c 93 242
+88650 4 108 242
+88654 4 107 242
+88658 4 108 242
+8865c c 110 242
+88668 14 91 242
+8867c 4 68 215
+88680 10 229 236
+88690 8 228 236
+88698 4 120 215
+8869c 4 69 215
+886a0 4 120 215
+886a4 4 119 242
+886a8 4 120 242
+886ac 8 120 215
+886b4 4 89 242
+886b8 28 124 242
+886e0 8 115 242
+886e8 8 115 242
+886f0 4 92 215
+886f4 14 235 236
+88708 4 93 215
+8870c 8 94 215
+88714 4 95 215
+88718 c 93 242
+88724 8 400 238
+8872c c 94 242
+88738 c 104 242
+88744 20 234 236
+88764 4 97 242
+88768 4 96 242
+8876c 4 97 242
+88770 8 99 242
+88778 8 93 242
+88780 8 228 236
+88788 14 229 236
+8879c 18 235 236
+887b4 8 91 242
+887bc 4 68 215
+887c0 4 93 242
+887c4 10 229 236
+887d4 8 228 236
+887dc 4 69 215
+887e0 8 101 242
+887e8 8 69 215
+FUNC 887f0 160 0 std::time_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::do_get_monthname
+887f0 c 384 242
+887fc 4 292 242
+88800 4 384 242
+88804 c 384 242
+88810 c 292 242
+8881c 4 384 242
+88820 4 292 242
+88824 8 293 242
+8882c 20 294 242
+8884c 4 390 242
+88850 4 396 242
+88854 c 397 242
+88860 4 75 215
+88864 8 392 242
+8886c 4 75 215
+88870 8 90 215
+88878 8 77 215
+88880 c 90 215
+8888c c 393 242
+88898 c 394 242
+888a4 4 396 242
+888a8 c 397 242
+888b4 10 235 236
+888c4 1c 234 236
+888e0 10 235 236
+888f0 14 235 236
+88904 4 93 215
+88908 4 95 215
+8890c 4 94 215
+88910 8 95 215
+88918 24 234 236
+8893c 14 235 236
+FUNC 88950 174 0 std::time_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::do_get_weekday
+88950 c 367 242
+8895c 4 281 242
+88960 4 367 242
+88964 c 367 242
+88970 c 281 242
+8897c 4 367 242
+88980 4 281 242
+88984 8 282 242
+8898c 34 283 242
+889c0 4 373 242
+889c4 4 379 242
+889c8 c 380 242
+889d4 4 75 215
+889d8 8 375 242
+889e0 4 75 215
+889e4 8 90 215
+889ec 8 77 215
+889f4 c 90 215
+88a00 c 376 242
+88a0c c 377 242
+88a18 4 379 242
+88a1c c 380 242
+88a28 10 235 236
+88a38 1c 234 236
+88a54 10 235 236
+88a64 14 235 236
+88a78 4 93 215
+88a7c 4 95 215
+88a80 4 94 215
+88a84 8 95 215
+88a8c 24 234 236
+88ab0 14 235 236
+FUNC 88ac4 4b4 0 std::priv::__get_formatted_time<std::istreambuf_iterator<char, std::char_traits<char> >, char, std::priv::_Time_Info>
+88ac4 c 149 242
+88ad0 4 145 212
+88ad4 8 149 242
+88adc 8 145 212
+88ae4 4 149 242
+88ae8 4 145 212
+88aec 10 149 242
+88afc c 149 242
+88b08 4 145 212
+88b0c 14 351 219
+88b20 4 166 242
+88b24 4 351 219
+88b28 4 269 242
+88b2c 4 153 242
+88b30 8 257 242
+88b38 4 166 242
+88b3c 4 153 242
+88b40 8 75 215
+88b48 8 90 215
+88b50 8 77 215
+88b58 c 90 215
+88b64 4 156 242
+88b68 10 156 242
+88b78 c 158 242
+88b84 4 160 242
+88b88 8 161 242
+88b90 4 159 242
+88b94 1c 166 242
+88bb0 14 235 236
+88bc4 4 156 242
+88bc8 4 93 215
+88bcc 4 95 215
+88bd0 4 94 215
+88bd4 4 156 242
+88bd8 4 95 215
+88bdc 4 156 242
+88be0 20 276 242
+88c00 4 166 242
+88c04 4 157 242
+88c08 24 182 242
+88c2c 8 183 242
+88c34 4 185 242
+88c38 8 272 242
+88c40 4 166 242
+88c44 4 157 242
+88c48 24 171 242
+88c6c 8 172 242
+88c74 4 174 242
+88c78 8 272 242
+88c80 18 250 242
+88c98 4 251 242
+88c9c 8 272 242
+88ca4 18 257 242
+88cbc c 258 242
+88cc8 4 259 242
+88ccc 8 272 242
+88cd4 18 243 242
+88cec 4 244 242
+88cf0 8 272 242
+88cf8 14 231 242
+88d0c 8 232 242
+88d14 8 235 242
+88d1c 4 237 242
+88d20 c 237 242
+88d2c 4 238 242
+88d30 8 272 242
+88d38 14 213 242
+88d4c c 214 242
+88d58 10 215 242
+88d68 14 216 242
+88d7c 4 217 242
+88d80 18 206 242
+88d98 4 207 242
+88d9c 8 272 242
+88da4 18 190 242
+88dbc 4 191 242
+88dc0 10 191 242
+88dd0 8 272 242
+88dd8 18 223 242
+88df0 4 224 242
+88df4 8 272 242
+88dfc 18 199 242
+88e14 4 200 242
+88e18 8 272 242
+88e20 4 166 242
+88e24 8 179 242
+88e2c 4 166 242
+88e30 8 168 242
+88e38 8 269 242
+88e40 4 90 215
+88e44 8 269 242
+88e4c 4 90 215
+88e50 14 101 207
+88e64 8 269 242
+88e6c 8 272 242
+88e74 14 235 236
+88e88 4 93 215
+88e8c 4 95 215
+88e90 4 94 215
+88e94 8 95 215
+88e9c 18 235 236
+88eb4 4 163 242
+88eb8 8 162 242
+88ec0 4c 234 236
+88f0c 3c 235 236
+88f48 c 235 242
+88f54 4 236 242
+88f58 4 272 242
+88f5c c 236 242
+88f68 10 153 242
+FUNC 88f78 1ac 0 std::time_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::do_get_date
+88f78 18 304 242
+88f90 4 315 242
+88f94 8 304 242
+88f9c 4 315 242
+88fa0 4 304 242
+88fa4 4 315 242
+88fa8 8 304 242
+88fb0 4 315 242
+88fb4 4 304 242
+88fb8 8 315 242
+88fc0 4 304 242
+88fc4 4 315 242
+88fc8 4 304 242
+88fcc 14 315 242
+88fe0 4 304 242
+88fe4 4 315 242
+88fe8 14 316 242
+88ffc 8 319 242
+89004 4 75 215
+89008 c 90 215
+89014 4 77 215
+89018 c 90 215
+89024 8 320 242
+8902c c 321 242
+89038 4 324 242
+8903c 8 323 242
+89044 4 324 242
+89048 4 323 242
+8904c 24 324 242
+89070 10 235 236
+89080 1c 234 236
+8909c 14 235 236
+890b0 8 317 242
+890b8 18 235 236
+890d0 8 95 215
+890d8 24 234 236
+890fc 8 95 215
+89104 4 235 236
+89108 4 95 215
+8910c 18 235 236
+FUNC 89124 1a4 0 std::time_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::do_get_time
+89124 18 328 242
+8913c 4 338 242
+89140 8 328 242
+89148 4 338 242
+8914c 4 328 242
+89150 4 338 242
+89154 c 328 242
+89160 8 338 242
+89168 8 328 242
+89170 1c 338 242
+8918c 4 328 242
+89190 4 338 242
+89194 10 339 242
+891a4 c 339 242
+891b0 4 75 215
+891b4 c 90 215
+891c0 4 77 215
+891c4 c 90 215
+891d0 8 341 242
+891d8 c 342 242
+891e4 4 344 242
+891e8 8 343 242
+891f0 4 344 242
+891f4 4 343 242
+891f8 24 344 242
+8921c 10 235 236
+8922c 1c 234 236
+89248 14 235 236
+8925c 18 235 236
+89274 8 95 215
+8927c 24 234 236
+892a0 8 95 215
+892a8 4 235 236
+892ac 4 95 215
+892b0 18 235 236
+FUNC 892c8 450 0 std::priv::__do_get_alphabool<std::istreambuf_iterator<char, std::char_traits<char> >, char>
+892c8 18 449 224
+892e0 4 145 212
+892e4 10 449 224
+892f4 8 145 212
+892fc 8 449 224
+89304 4 145 212
+89308 14 351 219
+8931c 4 451 224
+89320 4 59 228
+89324 4 451 224
+89328 14 59 228
+8933c 28 60 228
+89364 c 95 215
+89370 4 75 215
+89374 8 90 215
+8937c 8 77 215
+89384 c 90 215
+89390 c 458 224
+8939c 10 90 215
+893ac 4 460 224
+893b0 4 461 224
+893b4 4 462 224
+893b8 10 229 236
+893c8 8 228 236
+893d0 8 69 215
+893d8 4 471 224
+893dc c 400 238
+893e8 8 471 224
+893f0 4 472 224
+893f4 4 400 238
+893f8 4 472 224
+893fc 8 400 238
+89404 8 472 224
+8940c c 479 224
+89418 10 112 215
+89428 4 481 224
+8942c 10 482 224
+8943c 4 64 239
+89440 4 484 224
+89444 c 96 239
+89450 c 97 239
+8945c 4 64 239
+89460 c 96 239
+8946c c 97 239
+89478 28 485 224
+894a0 14 235 236
+894b4 4 93 215
+894b8 4 94 215
+894bc 8 95 215
+894c4 10 460 224
+894d4 8 461 224
+894dc c 461 224
+894e8 4 464 224
+894ec 8 400 238
+894f4 c 464 224
+89500 8 229 236
+89508 4 464 224
+8950c 8 229 236
+89514 8 228 236
+8951c c 69 215
+89528 4 464 224
+8952c 8 400 238
+89534 c 464 224
+89540 c 400 238
+8954c 8 464 224
+89554 10 229 236
+89564 4 228 236
+89568 10 229 236
+89578 4 92 215
+8957c 14 235 236
+89590 4 93 215
+89594 4 94 215
+89598 8 95 215
+895a0 14 235 236
+895b4 4 93 215
+895b8 4 94 215
+895bc c 95 215
+895c8 c 461 224
+895d4 4 464 224
+895d8 14 229 236
+895ec c 69 215
+895f8 54 234 236
+8964c 8 475 224
+89654 c 476 224
+89660 4c 235 236
+896ac 4 64 239
+896b0 c 96 239
+896bc 18 97 239
+896d4 10 451 224
+896e4 8 64 239
+896ec c 96 239
+896f8 14 97 239
+8970c 4 464 224
+89710 8 464 224
+FUNC 89718 15c 0 std::priv::__write_integer_backward<long int>
+89718 c 304 226
+89724 4 304 226
+89728 4 307 226
+8972c 8 309 226
+89734 4 308 226
+89738 4 309 226
+8973c 4 308 226
+89740 4 309 226
+89744 4 287 226
+89748 10 368 226
+89758 14 314 226
+8976c 4 277 226
+89770 4 279 226
+89774 8 281 226
+8977c 18 282 226
+89794 4 281 226
+89798 8 282 226
+897a0 4 281 226
+897a4 4 284 226
+897a8 4 286 226
+897ac c 287 226
+897b8 4 323 226
+897bc 4 322 226
+897c0 8 323 226
+897c8 8 322 226
+897d0 4 326 226
+897d4 18 327 226
+897ec 4 333 226
+897f0 c 333 226
+897fc 4 340 226
+89800 4 339 226
+89804 8 340 226
+8980c 8 339 226
+89814 4 342 226
+89818 4 343 226
+8981c 4 344 226
+89820 4 343 226
+89824 c 344 226
+89830 c 310 226
+8983c 10 368 226
+8984c 10 333 226
+8985c 8 279 226
+89864 10 285 226
+FUNC 89874 4e0 0 std::priv::__put_float<std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >
+89874 18 74 226
+8988c 4 145 212
+89890 10 74 226
+898a0 8 145 212
+898a8 10 74 226
+898b8 c 74 226
+898c4 4 145 212
+898c8 14 351 219
+898dc 4 78 226
+898e0 4 108 213
+898e4 4 41 213
+898e8 4 78 226
+898ec 10 108 213
+898fc 14 41 213
+89910 4 613 237
+89914 14 81 226
+89928 4 611 237
+8992c 4 612 237
+89930 4 613 237
+89934 4 101 206
+89938 4 81 226
+8993c 10 83 226
+8994c 2c 206 207
+89978 4 84 226
+8997c 4 206 207
+89980 18 84 226
+89998 18 206 207
+899b0 4 138 212
+899b4 4 400 238
+899b8 4 139 212
+899bc 8 400 238
+899c4 20 206 207
+899e4 c 47 226
+899f0 4 51 226
+899f4 4 50 226
+899f8 8 53 226
+89a00 10 57 226
+89a10 4 57 226
+89a14 10 57 226
+89a24 18 480 201
+89a3c 4 62 230
+89a40 10 200 236
+89a50 c 199 236
+89a5c 4 200 236
+89a60 8 62 230
+89a68 8 480 201
+89a70 4 64 226
+89a74 4 213 201
+89a78 4 64 226
+89a7c 10 213 201
+89a8c c 199 236
+89a98 4 200 236
+89a9c 8 62 230
+89aa4 4 215 201
+89aa8 8 213 201
+89ab0 4 214 201
+89ab4 4 62 230
+89ab8 10 200 236
+89ac8 14 199 236
+89adc 10 200 236
+89aec 14 199 236
+89b00 10 200 236
+89b10 10 213 201
+89b20 4 62 230
+89b24 c 64 239
+89b30 c 96 239
+89b3c 4 97 239
+89b40 8 319 202
+89b48 4 97 239
+89b4c 8 161 202
+89b54 4 161 202
+89b58 38 90 226
+89b90 c 199 236
+89b9c 4 200 236
+89ba0 8 62 230
+89ba8 4 215 201
+89bac 8 213 201
+89bb4 4 214 201
+89bb8 4 62 230
+89bbc 10 200 236
+89bcc 14 199 236
+89be0 c 200 236
+89bec 8 135 223
+89bf4 4 59 226
+89bf8 4 59 226
+89bfc 4 59 226
+89c00 18 480 201
+89c18 4 62 230
+89c1c 10 200 236
+89c2c c 199 236
+89c38 4 200 236
+89c3c 8 62 230
+89c44 8 480 201
+89c4c 10 285 201
+89c5c 8 60 226
+89c64 10 285 201
+89c74 14 199 236
+89c88 10 200 236
+89c98 18 285 201
+89cb0 4 54 226
+89cb4 4 480 201
+89cb8 4 54 226
+89cbc 8 285 201
+89cc4 c 480 201
+89cd0 4 62 230
+89cd4 10 200 236
+89ce4 c 199 236
+89cf0 4 200 236
+89cf4 8 62 230
+89cfc c 480 201
+89d08 14 199 236
+89d1c 14 200 236
+89d30 14 156 239
+89d44 10 78 226
+FUNC 89d54 220 0 std::priv::__do_put_float<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, long double>
+89d54 10 115 226
+89d64 4 108 213
+89d68 4 41 213
+89d6c 18 115 226
+89d84 4 108 213
+89d88 4 115 226
+89d8c 4 115 226
+89d90 8 108 213
+89d98 4 41 213
+89d9c 8 115 226
+89da4 4 108 213
+89da8 10 41 213
+89db8 4 611 237
+89dbc c 119 226
+89dc8 4 613 237
+89dcc 4 119 226
+89dd0 4 612 237
+89dd4 4 613 237
+89dd8 4 101 206
+89ddc 4 119 226
+89de0 4 145 212
+89de4 4 119 226
+89de8 8 145 212
+89df0 14 351 219
+89e04 8 121 226
+89e0c 10 85 228
+89e1c 4 86 228
+89e20 4 85 228
+89e24 c 86 228
+89e30 4 87 228
+89e34 4 86 228
+89e38 10 87 228
+89e48 2c 124 226
+89e74 4 64 239
+89e78 4 124 226
+89e7c c 96 239
+89e88 8 97 239
+89e90 8 161 202
+89e98 4 161 202
+89e9c 4 64 239
+89ea0 c 96 239
+89eac 4 97 239
+89eb0 8 319 202
+89eb8 4 97 239
+89ebc 8 161 202
+89ec4 4 161 202
+89ec8 2c 125 226
+89ef4 14 135 223
+89f08 4 64 239
+89f0c c 96 239
+89f18 4 97 239
+89f1c 4 70 213
+89f20 4 97 239
+89f24 4 70 213
+89f28 c 70 213
+89f34 8 64 239
+89f3c c 96 239
+89f48 1c 97 239
+89f64 10 121 226
+FUNC 89f74 24 0 std::num_put<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_put
+89f74 4 451 226
+89f78 8 453 226
+89f80 4 451 226
+89f84 8 453 226
+89f8c c 453 226
+FUNC 89f98 220 0 std::priv::__do_put_float<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, double>
+89f98 10 115 226
+89fa8 4 108 213
+89fac 4 41 213
+89fb0 18 115 226
+89fc8 4 108 213
+89fcc 4 115 226
+89fd0 4 115 226
+89fd4 8 108 213
+89fdc 4 41 213
+89fe0 8 115 226
+89fe8 4 108 213
+89fec 10 41 213
+89ffc 4 611 237
+8a000 c 119 226
+8a00c 4 613 237
+8a010 4 119 226
+8a014 4 612 237
+8a018 4 613 237
+8a01c 4 101 206
+8a020 4 119 226
+8a024 4 145 212
+8a028 4 119 226
+8a02c 8 145 212
+8a034 14 351 219
+8a048 8 121 226
+8a050 10 85 228
+8a060 4 86 228
+8a064 4 85 228
+8a068 c 86 228
+8a074 4 87 228
+8a078 4 86 228
+8a07c 10 87 228
+8a08c 2c 124 226
+8a0b8 4 64 239
+8a0bc 4 124 226
+8a0c0 c 96 239
+8a0cc 8 97 239
+8a0d4 8 161 202
+8a0dc 4 161 202
+8a0e0 4 64 239
+8a0e4 c 96 239
+8a0f0 4 97 239
+8a0f4 8 319 202
+8a0fc 4 97 239
+8a100 8 161 202
+8a108 4 161 202
+8a10c 2c 125 226
+8a138 14 135 223
+8a14c 4 64 239
+8a150 c 96 239
+8a15c 4 97 239
+8a160 4 70 213
+8a164 4 97 239
+8a168 4 70 213
+8a16c c 70 213
+8a178 8 64 239
+8a180 c 96 239
+8a18c 1c 97 239
+8a1a8 10 121 226
+FUNC 8a1b8 24 0 std::num_put<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_put
+8a1b8 4 444 226
+8a1bc 8 446 226
+8a1c4 4 444 226
+8a1c8 8 446 226
+8a1d0 c 446 226
+FUNC 8a1dc 15c 0 std::priv::__write_integer_backward<long long int>
+8a1dc c 304 226
+8a1e8 4 304 226
+8a1ec 4 307 226
+8a1f0 8 309 226
+8a1f8 4 308 226
+8a1fc 4 309 226
+8a200 4 308 226
+8a204 4 309 226
+8a208 4 287 226
+8a20c 10 368 226
+8a21c 14 314 226
+8a230 4 277 226
+8a234 4 279 226
+8a238 8 281 226
+8a240 18 282 226
+8a258 4 281 226
+8a25c 8 282 226
+8a264 4 281 226
+8a268 4 284 226
+8a26c 4 286 226
+8a270 c 287 226
+8a27c 4 323 226
+8a280 4 322 226
+8a284 8 323 226
+8a28c 8 322 226
+8a294 4 326 226
+8a298 18 327 226
+8a2b0 4 333 226
+8a2b4 c 333 226
+8a2c0 4 340 226
+8a2c4 4 339 226
+8a2c8 8 340 226
+8a2d0 8 339 226
+8a2d8 4 342 226
+8a2dc 4 343 226
+8a2e0 4 344 226
+8a2e4 4 343 226
+8a2e8 c 344 226
+8a2f4 c 310 226
+8a300 10 368 226
+8a310 10 333 226
+8a320 8 279 226
+8a328 10 285 226
+FUNC 8a338 3e8 0 std::priv::__get_base_or_zero<std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, wchar_t>
+8a338 10 56 224
+8a348 10 56 224
+8a358 8 59 224
+8a360 4 59 224
+8a364 4 59 224
+8a368 1c 209 207
+8a384 c 90 215
+8a390 c 64 224
+8a39c 10 68 224
+8a3ac 4 74 224
+8a3b0 18 76 224
+8a3c8 10 120 215
+8a3d8 4 95 224
+8a3dc 8 90 215
+8a3e4 10 95 224
+8a3f4 4 91 224
+8a3f8 8 72 224
+8a400 4 112 224
+8a404 10 113 224
+8a414 4 92 215
+8a418 1c 235 236
+8a434 4 64 224
+8a438 4 94 215
+8a43c 4 95 215
+8a440 4 93 215
+8a444 4 64 224
+8a448 4 95 215
+8a44c 4 64 224
+8a450 4 68 215
+8a454 10 229 236
+8a464 8 228 236
+8a46c 4 74 224
+8a470 4 69 215
+8a474 4 76 224
+8a478 4 69 215
+8a47c 4 76 224
+8a480 10 120 215
+8a490 4 85 224
+8a494 8 90 215
+8a49c 10 85 224
+8a4ac c 72 224
+8a4b8 4 112 224
+8a4bc 10 113 224
+8a4cc 4 68 215
+8a4d0 10 229 236
+8a4e0 8 228 236
+8a4e8 c 69 215
+8a4f4 4 228 236
+8a4f8 c 229 236
+8a504 4 228 236
+8a508 c 229 236
+8a514 4 68 215
+8a518 10 229 236
+8a528 8 228 236
+8a530 4 69 215
+8a534 10 120 215
+8a544 4 97 224
+8a548 8 90 215
+8a550 4 66 215
+8a554 c 97 224
+8a560 c 97 224
+8a56c 4 105 224
+8a570 8 72 224
+8a578 4 112 224
+8a57c 10 113 224
+8a58c 4 68 215
+8a590 10 229 236
+8a5a0 8 228 236
+8a5a8 4 69 215
+8a5ac 10 120 215
+8a5bc 4 87 224
+8a5c0 8 90 215
+8a5c8 4 66 215
+8a5cc c 87 224
+8a5d8 c 87 224
+8a5e4 4 91 224
+8a5e8 8 72 224
+8a5f0 4 112 224
+8a5f4 10 113 224
+8a604 4 68 215
+8a608 10 229 236
+8a618 8 228 236
+8a620 4 69 215
+8a624 4 72 224
+8a628 8 69 215
+8a630 4 112 224
+8a634 10 113 224
+8a644 2c 234 236
+8a670 4 66 215
+8a674 c 97 224
+8a680 20 90 215
+8a6a0 4 66 215
+8a6a4 c 87 224
+8a6b0 18 90 215
+8a6c8 4 228 236
+8a6cc c 229 236
+8a6d8 4 228 236
+8a6dc c 229 236
+8a6e8 4 228 236
+8a6ec 24 229 236
+8a710 10 235 236
+FUNC 8a720 5e0 0 std::priv::__do_get_integer<std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, long long unsigned int, wchar_t>
+8a720 20 247 224
+8a740 4 145 212
+8a744 10 247 224
+8a754 8 145 212
+8a75c c 247 224
+8a768 8 247 224
+8a770 4 145 212
+8a774 10 351 219
+8a784 4 258 224
+8a788 4 351 219
+8a78c 14 258 224
+8a7a0 8 112 215
+8a7a8 4 259 224
+8a7ac c 112 215
+8a7b8 4 263 224
+8a7bc 4 265 224
+8a7c0 4 266 224
+8a7c4 4 287 224
+8a7c8 4 287 224
+8a7cc 4 75 215
+8a7d0 4 287 224
+8a7d4 4 75 215
+8a7d8 8 90 215
+8a7e0 8 77 215
+8a7e8 c 90 215
+8a7f4 c 289 224
+8a800 10 290 224
+8a810 4 291 224
+8a814 4 291 224
+8a818 4 291 224
+8a81c 34 292 224
+8a850 1c 235 236
+8a86c 4 93 215
+8a870 4 95 215
+8a874 4 94 215
+8a878 8 95 215
+8a880 10 351 219
+8a890 4 275 224
+8a894 4 351 219
+8a898 4 86 228
+8a89c 4 275 224
+8a8a0 4 86 228
+8a8a4 8 275 224
+8a8ac 4 86 228
+8a8b0 8 87 228
+8a8b8 4 86 228
+8a8bc 14 87 228
+8a8d0 4 188 224
+8a8d4 4 183 224
+8a8d8 8 182 224
+8a8e0 4 185 224
+8a8e4 4 95 215
+8a8e8 4 181 224
+8a8ec c 188 224
+8a8f8 c 186 224
+8a904 8 183 224
+8a90c 4 188 224
+8a910 4 183 224
+8a914 14 188 224
+8a928 4 75 215
+8a92c 8 90 215
+8a934 8 77 215
+8a93c c 90 215
+8a948 c 190 224
+8a954 c 90 215
+8a960 c 194 224
+8a96c 8 195 224
+8a974 4 196 224
+8a978 4 68 215
+8a97c 10 229 236
+8a98c c 228 236
+8a998 8 69 215
+8a9a0 1c 235 236
+8a9bc 4 94 215
+8a9c0 4 93 215
+8a9c4 4 190 224
+8a9c8 4 95 215
+8a9cc c 190 224
+8a9d8 4 218 224
+8a9dc c 218 224
+8a9e8 8 219 224
+8a9f0 4 223 224
+8a9f4 10 224 224
+8aa04 14 233 224
+8aa18 8 224 224
+8aa20 4 233 224
+8aa24 18 233 224
+8aa3c 4 64 239
+8aa40 10 96 239
+8aa50 10 97 239
+8aa60 14 287 224
+8aa74 4 52 224
+8aa78 4 52 224
+8aa7c 4 52 224
+8aa80 c 202 224
+8aa8c 4 208 224
+8aa90 4 206 224
+8aa94 4 205 224
+8aa98 4 206 224
+8aa9c 8 208 224
+8aaa4 8 211 224
+8aaac 4 212 224
+8aab0 4 213 224
+8aab4 4 214 224
+8aab8 10 213 224
+8aac8 4 68 215
+8aacc 10 229 236
+8aadc 4 228 236
+8aae0 c 229 236
+8aaec 8 69 215
+8aaf4 4 92 215
+8aaf8 1c 235 236
+8ab14 4 93 215
+8ab18 4 94 215
+8ab1c 8 95 215
+8ab24 1c 235 236
+8ab40 4 93 215
+8ab44 4 94 215
+8ab48 8 95 215
+8ab50 c 209 224
+8ab5c c 52 224
+8ab68 8 214 224
+8ab70 60 234 236
+8abd0 1c 235 236
+8abec 4 93 215
+8abf0 4 95 215
+8abf4 4 94 215
+8abf8 8 95 215
+8ac00 10 224 224
+8ac10 24 234 236
+8ac34 8 287 224
+8ac3c 24 234 236
+8ac60 34 235 236
+8ac94 8 218 224
+8ac9c 20 235 236
+8acbc 8 64 239
+8acc4 10 96 239
+8acd4 14 97 239
+8ace8 18 291 224
+FUNC 8ad00 34 0 std::num_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_get
+8ad00 8 611 224
+8ad08 4 614 224
+8ad0c 8 611 224
+8ad14 20 614 224
+FUNC 8ad34 54 0 std::num_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_get
+8ad34 8 587 224
+8ad3c 4 595 224
+8ad40 8 587 224
+8ad48 18 595 224
+8ad60 4 587 224
+8ad64 4 595 224
+8ad68 c 596 224
+8ad74 c 597 224
+8ad80 8 599 224
+FUNC 8ad88 5f8 0 std::priv::__do_get_integer<std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, long long int, wchar_t>
+8ad88 20 247 224
+8ada8 4 145 212
+8adac 10 247 224
+8adbc 8 145 212
+8adc4 c 247 224
+8add0 4 247 224
+8add4 4 145 212
+8add8 10 351 219
+8ade8 4 258 224
+8adec 4 351 219
+8adf0 14 258 224
+8ae04 4 75 215
+8ae08 4 259 224
+8ae0c 4 75 215
+8ae10 8 90 215
+8ae18 8 77 215
+8ae20 c 90 215
+8ae2c c 263 224
+8ae38 8 265 224
+8ae40 8 266 224
+8ae48 4 287 224
+8ae4c 4 287 224
+8ae50 4 112 215
+8ae54 4 287 224
+8ae58 c 112 215
+8ae64 4 289 224
+8ae68 c 290 224
+8ae74 4 291 224
+8ae78 4 291 224
+8ae7c 4 291 224
+8ae80 34 292 224
+8aeb4 1c 235 236
+8aed0 4 94 215
+8aed4 4 93 215
+8aed8 8 95 215
+8aee0 c 263 224
+8aeec 10 351 219
+8aefc 4 275 224
+8af00 4 351 219
+8af04 4 275 224
+8af08 c 86 228
+8af14 8 87 228
+8af1c 4 86 228
+8af20 14 87 228
+8af34 4 128 224
+8af38 4 123 224
+8af3c 4 128 224
+8af40 4 122 224
+8af44 4 128 224
+8af48 c 126 224
+8af54 4 123 224
+8af58 4 125 224
+8af5c 8 121 224
+8af64 4 123 224
+8af68 4 95 215
+8af6c 8 123 224
+8af74 18 128 224
+8af8c 4 75 215
+8af90 8 90 215
+8af98 8 77 215
+8afa0 c 90 215
+8afac c 130 224
+8afb8 c 90 215
+8afc4 10 134 224
+8afd4 8 135 224
+8afdc 4 136 224
+8afe0 4 68 215
+8afe4 10 229 236
+8aff4 c 228 236
+8b000 8 69 215
+8b008 1c 235 236
+8b024 4 94 215
+8b028 4 93 215
+8b02c 4 130 224
+8b030 4 95 215
+8b034 8 130 224
+8b03c 4 158 224
+8b040 4 130 224
+8b044 4 158 224
+8b048 c 158 224
+8b054 8 159 224
+8b05c 4 163 224
+8b060 8 274 224
+8b068 c 164 224
+8b074 10 173 224
+8b084 c 164 224
+8b090 8 173 224
+8b098 4 96 239
+8b09c 4 64 239
+8b0a0 c 96 239
+8b0ac 10 97 239
+8b0bc 10 287 224
+8b0cc 4 52 224
+8b0d0 4 52 224
+8b0d4 4 52 224
+8b0d8 8 142 224
+8b0e0 4 148 224
+8b0e4 4 146 224
+8b0e8 4 145 224
+8b0ec 4 146 224
+8b0f0 8 148 224
+8b0f8 c 151 224
+8b104 4 152 224
+8b108 4 153 224
+8b10c 4 154 224
+8b110 10 153 224
+8b120 4 68 215
+8b124 10 229 236
+8b134 4 228 236
+8b138 c 229 236
+8b144 8 69 215
+8b14c 4 92 215
+8b150 1c 235 236
+8b16c 4 93 215
+8b170 4 94 215
+8b174 8 95 215
+8b17c 1c 235 236
+8b198 4 93 215
+8b19c 4 94 215
+8b1a0 8 95 215
+8b1a8 c 149 224
+8b1b4 c 52 224
+8b1c0 8 154 224
+8b1c8 60 234 236
+8b228 1c 235 236
+8b244 4 93 215
+8b248 4 95 215
+8b24c 4 94 215
+8b250 8 95 215
+8b258 10 164 224
+8b268 8 164 224
+8b270 8 173 224
+8b278 24 234 236
+8b29c 8 287 224
+8b2a4 24 234 236
+8b2c8 20 235 236
+8b2e8 18 173 224
+8b300 14 235 236
+8b314 8 158 224
+8b31c 24 235 236
+8b340 4 64 239
+8b344 10 96 239
+8b354 14 97 239
+8b368 18 291 224
+FUNC 8b380 34 0 std::num_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_get
+8b380 8 604 224
+8b388 4 607 224
+8b38c 8 604 224
+8b394 20 607 224
+FUNC 8b3b4 5e0 0 std::priv::__do_get_integer<std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, long unsigned int, wchar_t>
+8b3b4 20 247 224
+8b3d4 4 145 212
+8b3d8 10 247 224
+8b3e8 8 145 212
+8b3f0 c 247 224
+8b3fc 8 247 224
+8b404 4 145 212
+8b408 10 351 219
+8b418 4 258 224
+8b41c 4 351 219
+8b420 14 258 224
+8b434 8 112 215
+8b43c 4 259 224
+8b440 c 112 215
+8b44c 4 263 224
+8b450 4 265 224
+8b454 4 266 224
+8b458 4 287 224
+8b45c 4 287 224
+8b460 4 75 215
+8b464 4 287 224
+8b468 4 75 215
+8b46c 8 90 215
+8b474 8 77 215
+8b47c c 90 215
+8b488 c 289 224
+8b494 10 290 224
+8b4a4 4 291 224
+8b4a8 4 291 224
+8b4ac 4 291 224
+8b4b0 34 292 224
+8b4e4 1c 235 236
+8b500 4 93 215
+8b504 4 95 215
+8b508 4 94 215
+8b50c 8 95 215
+8b514 10 351 219
+8b524 4 275 224
+8b528 4 351 219
+8b52c 4 86 228
+8b530 4 275 224
+8b534 4 86 228
+8b538 8 275 224
+8b540 4 86 228
+8b544 8 87 228
+8b54c 4 86 228
+8b550 14 87 228
+8b564 4 188 224
+8b568 4 183 224
+8b56c 8 182 224
+8b574 4 185 224
+8b578 4 95 215
+8b57c 4 181 224
+8b580 c 188 224
+8b58c c 186 224
+8b598 8 183 224
+8b5a0 4 188 224
+8b5a4 4 183 224
+8b5a8 14 188 224
+8b5bc 4 75 215
+8b5c0 8 90 215
+8b5c8 8 77 215
+8b5d0 c 90 215
+8b5dc c 190 224
+8b5e8 c 90 215
+8b5f4 c 194 224
+8b600 8 195 224
+8b608 4 196 224
+8b60c 4 68 215
+8b610 10 229 236
+8b620 c 228 236
+8b62c 8 69 215
+8b634 1c 235 236
+8b650 4 94 215
+8b654 4 93 215
+8b658 4 190 224
+8b65c 4 95 215
+8b660 c 190 224
+8b66c 4 218 224
+8b670 c 218 224
+8b67c 8 219 224
+8b684 4 223 224
+8b688 10 224 224
+8b698 14 233 224
+8b6ac 8 224 224
+8b6b4 4 233 224
+8b6b8 18 233 224
+8b6d0 4 64 239
+8b6d4 10 96 239
+8b6e4 10 97 239
+8b6f4 14 287 224
+8b708 4 52 224
+8b70c 4 52 224
+8b710 4 52 224
+8b714 c 202 224
+8b720 4 208 224
+8b724 4 206 224
+8b728 4 205 224
+8b72c 4 206 224
+8b730 8 208 224
+8b738 8 211 224
+8b740 4 212 224
+8b744 4 213 224
+8b748 4 214 224
+8b74c 10 213 224
+8b75c 4 68 215
+8b760 10 229 236
+8b770 4 228 236
+8b774 c 229 236
+8b780 8 69 215
+8b788 4 92 215
+8b78c 1c 235 236
+8b7a8 4 93 215
+8b7ac 4 94 215
+8b7b0 8 95 215
+8b7b8 1c 235 236
+8b7d4 4 93 215
+8b7d8 4 94 215
+8b7dc 8 95 215
+8b7e4 c 209 224
+8b7f0 c 52 224
+8b7fc 8 214 224
+8b804 60 234 236
+8b864 1c 235 236
+8b880 4 93 215
+8b884 4 95 215
+8b888 4 94 215
+8b88c 8 95 215
+8b894 10 224 224
+8b8a4 24 234 236
+8b8c8 8 287 224
+8b8d0 24 234 236
+8b8f4 34 235 236
+8b928 8 218 224
+8b930 20 235 236
+8b950 8 64 239
+8b958 10 96 239
+8b968 14 97 239
+8b97c 18 291 224
+FUNC 8b994 34 0 std::num_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_get
+8b994 8 557 224
+8b99c 4 560 224
+8b9a0 8 557 224
+8b9a8 20 560 224
+FUNC 8b9c8 5d0 0 std::priv::__do_get_integer<std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, unsigned int, wchar_t>
+8b9c8 20 247 224
+8b9e8 4 145 212
+8b9ec 10 247 224
+8b9fc 8 145 212
+8ba04 c 247 224
+8ba10 4 247 224
+8ba14 4 145 212
+8ba18 10 351 219
+8ba28 4 258 224
+8ba2c 4 351 219
+8ba30 14 258 224
+8ba44 4 75 215
+8ba48 4 259 224
+8ba4c 4 75 215
+8ba50 8 90 215
+8ba58 8 77 215
+8ba60 c 90 215
+8ba6c c 263 224
+8ba78 8 265 224
+8ba80 8 266 224
+8ba88 4 287 224
+8ba8c 4 287 224
+8ba90 4 112 215
+8ba94 4 287 224
+8ba98 c 112 215
+8baa4 4 289 224
+8baa8 c 290 224
+8bab4 4 291 224
+8bab8 4 291 224
+8babc 4 291 224
+8bac0 34 292 224
+8baf4 1c 235 236
+8bb10 4 94 215
+8bb14 4 93 215
+8bb18 8 95 215
+8bb20 c 263 224
+8bb2c 10 351 219
+8bb3c 4 275 224
+8bb40 4 351 219
+8bb44 4 86 228
+8bb48 4 275 224
+8bb4c 4 86 228
+8bb50 4 275 224
+8bb54 4 86 228
+8bb58 8 87 228
+8bb60 4 86 228
+8bb64 14 87 228
+8bb78 4 186 224
+8bb7c 4 183 224
+8bb80 4 186 224
+8bb84 4 185 224
+8bb88 4 186 224
+8bb8c 4 183 224
+8bb90 8 181 224
+8bb98 4 183 224
+8bb9c 8 188 224
+8bba4 4 183 224
+8bba8 4 182 224
+8bbac 4 95 215
+8bbb0 14 188 224
+8bbc4 4 75 215
+8bbc8 8 90 215
+8bbd0 8 77 215
+8bbd8 c 90 215
+8bbe4 c 190 224
+8bbf0 c 90 215
+8bbfc c 194 224
+8bc08 8 195 224
+8bc10 4 196 224
+8bc14 4 68 215
+8bc18 10 229 236
+8bc28 c 228 236
+8bc34 8 69 215
+8bc3c 1c 235 236
+8bc58 4 94 215
+8bc5c 4 93 215
+8bc60 4 190 224
+8bc64 4 95 215
+8bc68 c 190 224
+8bc74 4 218 224
+8bc78 c 218 224
+8bc84 8 219 224
+8bc8c 4 223 224
+8bc90 c 224 224
+8bc9c 14 233 224
+8bcb0 8 224 224
+8bcb8 4 233 224
+8bcbc 4 96 239
+8bcc0 4 64 239
+8bcc4 c 96 239
+8bcd0 10 97 239
+8bce0 10 287 224
+8bcf0 4 52 224
+8bcf4 4 52 224
+8bcf8 4 52 224
+8bcfc c 202 224
+8bd08 4 208 224
+8bd0c 4 206 224
+8bd10 4 205 224
+8bd14 4 206 224
+8bd18 8 208 224
+8bd20 8 211 224
+8bd28 4 212 224
+8bd2c 4 213 224
+8bd30 4 214 224
+8bd34 10 213 224
+8bd44 4 68 215
+8bd48 10 229 236
+8bd58 4 228 236
+8bd5c c 229 236
+8bd68 8 69 215
+8bd70 4 92 215
+8bd74 1c 235 236
+8bd90 4 93 215
+8bd94 4 94 215
+8bd98 8 95 215
+8bda0 1c 235 236
+8bdbc 4 93 215
+8bdc0 4 94 215
+8bdc4 8 95 215
+8bdcc c 209 224
+8bdd8 c 52 224
+8bde4 8 214 224
+8bdec 60 234 236
+8be4c 1c 235 236
+8be68 4 93 215
+8be6c 4 95 215
+8be70 4 94 215
+8be74 8 95 215
+8be7c c 224 224
+8be88 8 233 224
+8be90 24 234 236
+8beb4 8 287 224
+8bebc 24 234 236
+8bee0 20 235 236
+8bf00 18 233 224
+8bf18 14 235 236
+8bf2c 8 218 224
+8bf34 24 235 236
+8bf58 4 64 239
+8bf5c 10 96 239
+8bf6c 14 97 239
+8bf80 18 291 224
+FUNC 8bf98 34 0 std::num_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_get
+8bf98 8 550 224
+8bfa0 4 553 224
+8bfa4 8 550 224
+8bfac 20 553 224
+FUNC 8bfcc 4f4 0 std::priv::__do_get_integer<std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, short unsigned int, wchar_t>
+8bfcc 20 247 224
+8bfec 4 145 212
+8bff0 10 247 224
+8c000 8 145 212
+8c008 c 247 224
+8c014 8 247 224
+8c01c 4 145 212
+8c020 10 351 219
+8c030 4 258 224
+8c034 4 351 219
+8c038 14 258 224
+8c04c 8 112 215
+8c054 4 259 224
+8c058 c 112 215
+8c064 4 263 224
+8c068 4 265 224
+8c06c 4 266 224
+8c070 4 287 224
+8c074 4 287 224
+8c078 4 112 215
+8c07c 4 287 224
+8c080 c 112 215
+8c08c 4 289 224
+8c090 c 290 224
+8c09c 4 291 224
+8c0a0 4 291 224
+8c0a4 4 291 224
+8c0a8 34 292 224
+8c0dc 10 351 219
+8c0ec 4 275 224
+8c0f0 4 351 219
+8c0f4 4 86 228
+8c0f8 4 275 224
+8c0fc 4 86 228
+8c100 4 275 224
+8c104 4 86 228
+8c108 8 87 228
+8c110 4 86 228
+8c114 14 87 228
+8c128 4 188 224
+8c12c 4 186 224
+8c130 4 183 224
+8c134 8 186 224
+8c13c 4 185 224
+8c140 4 183 224
+8c144 4 182 224
+8c148 4 188 224
+8c14c 4 95 215
+8c150 4 183 224
+8c154 4 188 224
+8c158 8 181 224
+8c160 4 188 224
+8c164 4 183 224
+8c168 10 188 224
+8c178 4 75 215
+8c17c 8 90 215
+8c184 8 77 215
+8c18c c 90 215
+8c198 c 190 224
+8c1a4 c 90 215
+8c1b0 c 194 224
+8c1bc 8 195 224
+8c1c4 4 196 224
+8c1c8 4 68 215
+8c1cc 10 229 236
+8c1dc c 228 236
+8c1e8 8 69 215
+8c1f0 1c 235 236
+8c20c 4 94 215
+8c210 4 93 215
+8c214 4 190 224
+8c218 4 95 215
+8c21c c 190 224
+8c228 4 218 224
+8c22c c 218 224
+8c238 8 219 224
+8c240 4 223 224
+8c244 10 224 224
+8c254 14 233 224
+8c268 8 224 224
+8c270 4 233 224
+8c274 18 233 224
+8c28c 4 96 239
+8c290 4 64 239
+8c294 c 96 239
+8c2a0 10 97 239
+8c2b0 14 287 224
+8c2c4 4 52 224
+8c2c8 4 52 224
+8c2cc 4 52 224
+8c2d0 c 202 224
+8c2dc 4 208 224
+8c2e0 4 206 224
+8c2e4 4 205 224
+8c2e8 4 206 224
+8c2ec 8 208 224
+8c2f4 10 211 224
+8c304 4 212 224
+8c308 8 213 224
+8c310 4 214 224
+8c314 c 213 224
+8c320 4 68 215
+8c324 10 229 236
+8c334 4 228 236
+8c338 c 229 236
+8c344 8 69 215
+8c34c 4 92 215
+8c350 1c 235 236
+8c36c 4 93 215
+8c370 4 94 215
+8c374 8 95 215
+8c37c 1c 235 236
+8c398 4 93 215
+8c39c 4 94 215
+8c3a0 8 95 215
+8c3a8 c 209 224
+8c3b4 c 52 224
+8c3c0 8 214 224
+8c3c8 60 234 236
+8c428 10 224 224
+8c438 8 287 224
+8c440 34 235 236
+8c474 c 218 224
+8c480 4 64 239
+8c484 10 96 239
+8c494 14 97 239
+8c4a8 18 291 224
+FUNC 8c4c0 34 0 std::num_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_get
+8c4c0 8 543 224
+8c4c8 4 546 224
+8c4cc 8 543 224
+8c4d4 20 546 224
+FUNC 8c4f4 5f8 0 std::priv::__do_get_integer<std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, long int, wchar_t>
+8c4f4 20 247 224
+8c514 4 145 212
+8c518 10 247 224
+8c528 8 145 212
+8c530 c 247 224
+8c53c 8 247 224
+8c544 4 145 212
+8c548 10 351 219
+8c558 4 258 224
+8c55c 4 351 219
+8c560 14 258 224
+8c574 8 112 215
+8c57c 4 259 224
+8c580 c 112 215
+8c58c 4 263 224
+8c590 4 265 224
+8c594 4 266 224
+8c598 4 287 224
+8c59c 4 287 224
+8c5a0 4 75 215
+8c5a4 4 287 224
+8c5a8 4 75 215
+8c5ac 8 90 215
+8c5b4 8 77 215
+8c5bc c 90 215
+8c5c8 c 289 224
+8c5d4 10 290 224
+8c5e4 4 291 224
+8c5e8 4 291 224
+8c5ec 4 291 224
+8c5f0 34 292 224
+8c624 1c 235 236
+8c640 4 93 215
+8c644 4 95 215
+8c648 4 94 215
+8c64c 8 95 215
+8c654 10 351 219
+8c664 4 275 224
+8c668 4 351 219
+8c66c 4 275 224
+8c670 c 86 228
+8c67c 8 87 228
+8c684 4 86 228
+8c688 14 87 228
+8c69c 4 128 224
+8c6a0 4 123 224
+8c6a4 4 128 224
+8c6a8 4 122 224
+8c6ac 4 128 224
+8c6b0 c 126 224
+8c6bc 4 123 224
+8c6c0 4 125 224
+8c6c4 8 121 224
+8c6cc 4 123 224
+8c6d0 4 95 215
+8c6d4 8 123 224
+8c6dc 18 128 224
+8c6f4 4 75 215
+8c6f8 8 90 215
+8c700 8 77 215
+8c708 c 90 215
+8c714 c 130 224
+8c720 c 90 215
+8c72c 10 134 224
+8c73c 8 135 224
+8c744 4 136 224
+8c748 4 68 215
+8c74c 10 229 236
+8c75c c 228 236
+8c768 8 69 215
+8c770 1c 235 236
+8c78c 4 94 215
+8c790 4 93 215
+8c794 4 130 224
+8c798 4 95 215
+8c79c 8 130 224
+8c7a4 4 158 224
+8c7a8 4 130 224
+8c7ac 4 158 224
+8c7b0 c 158 224
+8c7bc 8 159 224
+8c7c4 4 163 224
+8c7c8 8 274 224
+8c7d0 c 164 224
+8c7dc 14 173 224
+8c7f0 c 164 224
+8c7fc 8 173 224
+8c804 18 173 224
+8c81c 4 64 239
+8c820 10 96 239
+8c830 10 97 239
+8c840 14 287 224
+8c854 4 52 224
+8c858 4 52 224
+8c85c 4 52 224
+8c860 8 142 224
+8c868 4 148 224
+8c86c 4 146 224
+8c870 4 145 224
+8c874 4 146 224
+8c878 8 148 224
+8c880 c 151 224
+8c88c 4 152 224
+8c890 4 153 224
+8c894 4 154 224
+8c898 10 153 224
+8c8a8 4 68 215
+8c8ac 10 229 236
+8c8bc 4 228 236
+8c8c0 c 229 236
+8c8cc 8 69 215
+8c8d4 4 92 215
+8c8d8 1c 235 236
+8c8f4 4 93 215
+8c8f8 4 94 215
+8c8fc 8 95 215
+8c904 1c 235 236
+8c920 4 93 215
+8c924 4 94 215
+8c928 8 95 215
+8c930 c 149 224
+8c93c c 52 224
+8c948 8 154 224
+8c950 60 234 236
+8c9b0 1c 235 236
+8c9cc 4 93 215
+8c9d0 4 95 215
+8c9d4 4 94 215
+8c9d8 8 95 215
+8c9e0 10 164 224
+8c9f0 c 164 224
+8c9fc 24 234 236
+8ca20 8 287 224
+8ca28 24 234 236
+8ca4c 34 235 236
+8ca80 8 158 224
+8ca88 20 235 236
+8caa8 8 64 239
+8cab0 10 96 239
+8cac0 14 97 239
+8cad4 18 291 224
+FUNC 8caec 34 0 std::num_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_get
+8caec 8 537 224
+8caf4 4 539 224
+8caf8 8 537 224
+8cb00 20 539 224
+FUNC 8cb20 a8 0 std::num_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_get
+8cb20 8 499 224
+8cb28 4 501 224
+8cb2c 8 499 224
+8cb34 4 501 224
+8cb38 24 506 224
+8cb5c 14 507 224
+8cb70 8 508 224
+8cb78 8 510 224
+8cb80 8 513 224
+8cb88 8 517 224
+8cb90 1c 502 224
+8cbac 8 517 224
+8cbb4 4 509 224
+8cbb8 8 517 224
+8cbc0 8 511 224
+FUNC 8cbc8 3e4 0 std::priv::__get_base_or_zero<std::istreambuf_iterator<char, std::char_traits<char> >, char>
+8cbc8 10 56 224
+8cbd8 10 56 224
+8cbe8 8 59 224
+8cbf0 4 59 224
+8cbf4 4 59 224
+8cbf8 1c 103 207
+8cc14 c 90 215
+8cc20 c 64 224
+8cc2c 10 68 224
+8cc3c 4 74 224
+8cc40 18 76 224
+8cc58 10 120 215
+8cc68 4 95 224
+8cc6c 8 90 215
+8cc74 10 95 224
+8cc84 4 91 224
+8cc88 8 72 224
+8cc90 4 112 224
+8cc94 10 113 224
+8cca4 4 92 215
+8cca8 14 235 236
+8ccbc 4 94 215
+8ccc0 4 95 215
+8ccc4 4 64 224
+8ccc8 4 93 215
+8cccc 4 95 215
+8ccd0 8 64 224
+8ccd8 4 68 215
+8ccdc 10 229 236
+8ccec 8 228 236
+8ccf4 4 74 224
+8ccf8 4 69 215
+8ccfc 4 76 224
+8cd00 4 69 215
+8cd04 4 76 224
+8cd08 10 120 215
+8cd18 4 85 224
+8cd1c 8 90 215
+8cd24 10 85 224
+8cd34 c 72 224
+8cd40 4 112 224
+8cd44 10 113 224
+8cd54 4 68 215
+8cd58 10 229 236
+8cd68 8 228 236
+8cd70 c 69 215
+8cd7c 4 228 236
+8cd80 c 229 236
+8cd8c 4 228 236
+8cd90 c 229 236
+8cd9c 4 68 215
+8cda0 10 229 236
+8cdb0 8 228 236
+8cdb8 4 69 215
+8cdbc 10 120 215
+8cdcc 4 97 224
+8cdd0 8 90 215
+8cdd8 4 66 215
+8cddc c 97 224
+8cde8 c 97 224
+8cdf4 4 105 224
+8cdf8 8 72 224
+8ce00 4 112 224
+8ce04 10 113 224
+8ce14 4 68 215
+8ce18 10 229 236
+8ce28 8 228 236
+8ce30 4 69 215
+8ce34 10 120 215
+8ce44 4 87 224
+8ce48 8 90 215
+8ce50 4 66 215
+8ce54 c 87 224
+8ce60 c 87 224
+8ce6c 4 91 224
+8ce70 8 72 224
+8ce78 4 112 224
+8ce7c 10 113 224
+8ce8c 4 68 215
+8ce90 10 229 236
+8cea0 8 228 236
+8cea8 4 69 215
+8ceac 4 72 224
+8ceb0 8 69 215
+8ceb8 4 112 224
+8cebc 10 113 224
+8cecc 2c 234 236
+8cef8 4 66 215
+8cefc c 97 224
+8cf08 20 90 215
+8cf28 4 66 215
+8cf2c c 87 224
+8cf38 18 90 215
+8cf50 4 228 236
+8cf54 c 229 236
+8cf60 4 228 236
+8cf64 c 229 236
+8cf70 4 228 236
+8cf74 24 229 236
+8cf98 14 235 236
+FUNC 8cfac 5c4 0 std::priv::__do_get_integer<std::istreambuf_iterator<char, std::char_traits<char> >, long long unsigned int, char>
+8cfac 20 247 224
+8cfcc 4 145 212
+8cfd0 10 247 224
+8cfe0 8 145 212
+8cfe8 c 247 224
+8cff4 8 247 224
+8cffc 4 145 212
+8d000 10 351 219
+8d010 4 258 224
+8d014 4 351 219
+8d018 14 258 224
+8d02c 8 112 215
+8d034 4 259 224
+8d038 c 112 215
+8d044 4 263 224
+8d048 4 265 224
+8d04c 4 266 224
+8d050 4 287 224
+8d054 4 287 224
+8d058 4 75 215
+8d05c 4 287 224
+8d060 4 75 215
+8d064 8 90 215
+8d06c 8 77 215
+8d074 c 90 215
+8d080 c 289 224
+8d08c 10 290 224
+8d09c 4 291 224
+8d0a0 4 291 224
+8d0a4 4 291 224
+8d0a8 34 292 224
+8d0dc 14 235 236
+8d0f0 4 93 215
+8d0f4 4 95 215
+8d0f8 4 94 215
+8d0fc 8 95 215
+8d104 10 351 219
+8d114 4 275 224
+8d118 4 351 219
+8d11c 4 57 228
+8d120 4 275 224
+8d124 4 57 228
+8d128 8 275 224
+8d130 4 57 228
+8d134 8 58 228
+8d13c 4 57 228
+8d140 14 58 228
+8d154 4 188 224
+8d158 4 183 224
+8d15c 4 182 224
+8d160 4 185 224
+8d164 4 95 215
+8d168 4 181 224
+8d16c c 188 224
+8d178 c 186 224
+8d184 8 183 224
+8d18c 8 188 224
+8d194 4 183 224
+8d198 14 188 224
+8d1ac 4 75 215
+8d1b0 8 90 215
+8d1b8 8 77 215
+8d1c0 c 90 215
+8d1cc c 190 224
+8d1d8 c 90 215
+8d1e4 c 194 224
+8d1f0 8 195 224
+8d1f8 4 196 224
+8d1fc 4 68 215
+8d200 10 229 236
+8d210 8 228 236
+8d218 8 69 215
+8d220 14 235 236
+8d234 4 93 215
+8d238 4 94 215
+8d23c 4 95 215
+8d240 10 190 224
+8d250 4 218 224
+8d254 c 218 224
+8d260 8 219 224
+8d268 4 223 224
+8d26c 10 224 224
+8d27c 14 233 224
+8d290 8 224 224
+8d298 4 233 224
+8d29c 18 233 224
+8d2b4 4 64 239
+8d2b8 10 96 239
+8d2c8 10 97 239
+8d2d8 14 287 224
+8d2ec 4 52 224
+8d2f0 4 52 224
+8d2f4 4 52 224
+8d2f8 c 202 224
+8d304 4 208 224
+8d308 4 206 224
+8d30c 4 205 224
+8d310 4 206 224
+8d314 8 208 224
+8d31c 8 211 224
+8d324 4 212 224
+8d328 4 213 224
+8d32c 4 214 224
+8d330 10 213 224
+8d340 4 68 215
+8d344 10 229 236
+8d354 4 228 236
+8d358 c 229 236
+8d364 8 69 215
+8d36c 4 92 215
+8d370 14 235 236
+8d384 4 93 215
+8d388 4 94 215
+8d38c 8 95 215
+8d394 14 235 236
+8d3a8 4 93 215
+8d3ac 4 94 215
+8d3b0 8 95 215
+8d3b8 c 209 224
+8d3c4 c 52 224
+8d3d0 8 214 224
+8d3d8 60 234 236
+8d438 14 235 236
+8d44c 4 93 215
+8d450 4 95 215
+8d454 4 94 215
+8d458 8 95 215
+8d460 10 224 224
+8d470 24 234 236
+8d494 8 287 224
+8d49c 24 234 236
+8d4c0 3c 235 236
+8d4fc 8 218 224
+8d504 28 235 236
+8d52c 8 64 239
+8d534 10 96 239
+8d544 14 97 239
+8d558 18 291 224
+FUNC 8d570 34 0 std::num_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::do_get
+8d570 8 611 224
+8d578 4 614 224
+8d57c 8 611 224
+8d584 20 614 224
+FUNC 8d5a4 54 0 std::num_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::do_get
+8d5a4 8 587 224
+8d5ac 4 595 224
+8d5b0 8 587 224
+8d5b8 18 595 224
+8d5d0 4 587 224
+8d5d4 4 595 224
+8d5d8 c 596 224
+8d5e4 c 597 224
+8d5f0 8 599 224
+FUNC 8d5f8 5dc 0 std::priv::__do_get_integer<std::istreambuf_iterator<char, std::char_traits<char> >, long long int, char>
+8d5f8 20 247 224
+8d618 4 145 212
+8d61c 10 247 224
+8d62c 8 145 212
+8d634 c 247 224
+8d640 8 247 224
+8d648 4 145 212
+8d64c 10 351 219
+8d65c 4 258 224
+8d660 4 351 219
+8d664 14 258 224
+8d678 8 112 215
+8d680 4 259 224
+8d684 c 112 215
+8d690 4 263 224
+8d694 4 265 224
+8d698 4 266 224
+8d69c 4 287 224
+8d6a0 4 287 224
+8d6a4 4 75 215
+8d6a8 4 287 224
+8d6ac 4 75 215
+8d6b0 8 90 215
+8d6b8 8 77 215
+8d6c0 c 90 215
+8d6cc c 289 224
+8d6d8 10 290 224
+8d6e8 4 291 224
+8d6ec 4 291 224
+8d6f0 4 291 224
+8d6f4 34 292 224
+8d728 14 235 236
+8d73c 4 93 215
+8d740 4 95 215
+8d744 4 94 215
+8d748 8 95 215
+8d750 10 351 219
+8d760 4 275 224
+8d764 4 351 219
+8d768 4 275 224
+8d76c c 57 228
+8d778 8 58 228
+8d780 4 57 228
+8d784 14 58 228
+8d798 4 128 224
+8d79c 4 123 224
+8d7a0 4 128 224
+8d7a4 4 122 224
+8d7a8 4 128 224
+8d7ac c 126 224
+8d7b8 4 123 224
+8d7bc 4 125 224
+8d7c0 4 121 224
+8d7c4 4 95 215
+8d7c8 14 123 224
+8d7dc 14 128 224
+8d7f0 4 75 215
+8d7f4 8 90 215
+8d7fc 8 77 215
+8d804 c 90 215
+8d810 c 130 224
+8d81c c 90 215
+8d828 10 134 224
+8d838 8 135 224
+8d840 4 136 224
+8d844 4 68 215
+8d848 10 229 236
+8d858 8 228 236
+8d860 8 69 215
+8d868 14 235 236
+8d87c 4 93 215
+8d880 4 94 215
+8d884 4 95 215
+8d888 c 130 224
+8d894 4 158 224
+8d898 4 130 224
+8d89c 4 158 224
+8d8a0 c 158 224
+8d8ac 8 159 224
+8d8b4 4 163 224
+8d8b8 8 274 224
+8d8c0 c 164 224
+8d8cc 14 173 224
+8d8e0 c 164 224
+8d8ec 8 173 224
+8d8f4 18 173 224
+8d90c 4 64 239
+8d910 10 96 239
+8d920 10 97 239
+8d930 14 287 224
+8d944 4 52 224
+8d948 4 52 224
+8d94c 4 52 224
+8d950 8 142 224
+8d958 4 148 224
+8d95c 4 146 224
+8d960 4 145 224
+8d964 4 146 224
+8d968 8 148 224
+8d970 c 151 224
+8d97c 4 152 224
+8d980 4 153 224
+8d984 4 154 224
+8d988 10 153 224
+8d998 4 68 215
+8d99c 10 229 236
+8d9ac 4 228 236
+8d9b0 c 229 236
+8d9bc 8 69 215
+8d9c4 4 92 215
+8d9c8 14 235 236
+8d9dc 4 93 215
+8d9e0 4 94 215
+8d9e4 8 95 215
+8d9ec 14 235 236
+8da00 4 93 215
+8da04 4 94 215
+8da08 8 95 215
+8da10 c 149 224
+8da1c c 52 224
+8da28 8 154 224
+8da30 60 234 236
+8da90 14 235 236
+8daa4 4 93 215
+8daa8 4 95 215
+8daac 4 94 215
+8dab0 8 95 215
+8dab8 10 164 224
+8dac8 c 164 224
+8dad4 24 234 236
+8daf8 8 287 224
+8db00 24 234 236
+8db24 3c 235 236
+8db60 8 158 224
+8db68 28 235 236
+8db90 8 64 239
+8db98 10 96 239
+8dba8 14 97 239
+8dbbc 18 291 224
+FUNC 8dbd4 34 0 std::num_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::do_get
+8dbd4 8 604 224
+8dbdc 4 607 224
+8dbe0 8 604 224
+8dbe8 20 607 224
+FUNC 8dc08 5c4 0 std::priv::__do_get_integer<std::istreambuf_iterator<char, std::char_traits<char> >, long unsigned int, char>
+8dc08 20 247 224
+8dc28 4 145 212
+8dc2c 10 247 224
+8dc3c 8 145 212
+8dc44 c 247 224
+8dc50 8 247 224
+8dc58 4 145 212
+8dc5c 10 351 219
+8dc6c 4 258 224
+8dc70 4 351 219
+8dc74 14 258 224
+8dc88 8 112 215
+8dc90 4 259 224
+8dc94 c 112 215
+8dca0 4 263 224
+8dca4 4 265 224
+8dca8 4 266 224
+8dcac 4 287 224
+8dcb0 4 287 224
+8dcb4 4 75 215
+8dcb8 4 287 224
+8dcbc 4 75 215
+8dcc0 8 90 215
+8dcc8 8 77 215
+8dcd0 c 90 215
+8dcdc c 289 224
+8dce8 10 290 224
+8dcf8 4 291 224
+8dcfc 4 291 224
+8dd00 4 291 224
+8dd04 34 292 224
+8dd38 14 235 236
+8dd4c 4 93 215
+8dd50 4 95 215
+8dd54 4 94 215
+8dd58 8 95 215
+8dd60 10 351 219
+8dd70 4 275 224
+8dd74 4 351 219
+8dd78 4 57 228
+8dd7c 4 275 224
+8dd80 4 57 228
+8dd84 8 275 224
+8dd8c 4 57 228
+8dd90 8 58 228
+8dd98 4 57 228
+8dd9c 14 58 228
+8ddb0 4 188 224
+8ddb4 4 183 224
+8ddb8 4 182 224
+8ddbc 4 185 224
+8ddc0 4 95 215
+8ddc4 4 181 224
+8ddc8 c 188 224
+8ddd4 c 186 224
+8dde0 8 183 224
+8dde8 8 188 224
+8ddf0 4 183 224
+8ddf4 14 188 224
+8de08 4 75 215
+8de0c 8 90 215
+8de14 8 77 215
+8de1c c 90 215
+8de28 c 190 224
+8de34 c 90 215
+8de40 c 194 224
+8de4c 8 195 224
+8de54 4 196 224
+8de58 4 68 215
+8de5c 10 229 236
+8de6c 8 228 236
+8de74 8 69 215
+8de7c 14 235 236
+8de90 4 93 215
+8de94 4 94 215
+8de98 4 95 215
+8de9c 10 190 224
+8deac 4 218 224
+8deb0 c 218 224
+8debc 8 219 224
+8dec4 4 223 224
+8dec8 10 224 224
+8ded8 14 233 224
+8deec 8 224 224
+8def4 4 233 224
+8def8 18 233 224
+8df10 4 64 239
+8df14 10 96 239
+8df24 10 97 239
+8df34 14 287 224
+8df48 4 52 224
+8df4c 4 52 224
+8df50 4 52 224
+8df54 c 202 224
+8df60 4 208 224
+8df64 4 206 224
+8df68 4 205 224
+8df6c 4 206 224
+8df70 8 208 224
+8df78 8 211 224
+8df80 4 212 224
+8df84 4 213 224
+8df88 4 214 224
+8df8c 10 213 224
+8df9c 4 68 215
+8dfa0 10 229 236
+8dfb0 4 228 236
+8dfb4 c 229 236
+8dfc0 8 69 215
+8dfc8 4 92 215
+8dfcc 14 235 236
+8dfe0 4 93 215
+8dfe4 4 94 215
+8dfe8 8 95 215
+8dff0 14 235 236
+8e004 4 93 215
+8e008 4 94 215
+8e00c 8 95 215
+8e014 c 209 224
+8e020 c 52 224
+8e02c 8 214 224
+8e034 60 234 236
+8e094 14 235 236
+8e0a8 4 93 215
+8e0ac 4 95 215
+8e0b0 4 94 215
+8e0b4 8 95 215
+8e0bc 10 224 224
+8e0cc 24 234 236
+8e0f0 8 287 224
+8e0f8 24 234 236
+8e11c 3c 235 236
+8e158 8 218 224
+8e160 28 235 236
+8e188 8 64 239
+8e190 10 96 239
+8e1a0 14 97 239
+8e1b4 18 291 224
+FUNC 8e1cc 34 0 std::num_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::do_get
+8e1cc 8 557 224
+8e1d4 4 560 224
+8e1d8 8 557 224
+8e1e0 20 560 224
+FUNC 8e200 4d4 0 std::priv::__do_get_integer<std::istreambuf_iterator<char, std::char_traits<char> >, unsigned int, char>
+8e200 20 247 224
+8e220 4 145 212
+8e224 10 247 224
+8e234 8 145 212
+8e23c c 247 224
+8e248 8 247 224
+8e250 4 145 212
+8e254 10 351 219
+8e264 4 258 224
+8e268 4 351 219
+8e26c 14 258 224
+8e280 8 112 215
+8e288 4 259 224
+8e28c c 112 215
+8e298 4 263 224
+8e29c 4 265 224
+8e2a0 4 266 224
+8e2a4 4 287 224
+8e2a8 4 287 224
+8e2ac 4 112 215
+8e2b0 4 287 224
+8e2b4 c 112 215
+8e2c0 4 289 224
+8e2c4 c 290 224
+8e2d0 4 291 224
+8e2d4 4 291 224
+8e2d8 4 291 224
+8e2dc 34 292 224
+8e310 10 351 219
+8e320 4 275 224
+8e324 4 351 219
+8e328 4 57 228
+8e32c 4 275 224
+8e330 4 57 228
+8e334 4 275 224
+8e338 4 57 228
+8e33c 8 58 228
+8e344 4 57 228
+8e348 14 58 228
+8e35c 4 186 224
+8e360 4 183 224
+8e364 8 186 224
+8e36c 4 183 224
+8e370 4 185 224
+8e374 4 182 224
+8e378 4 95 215
+8e37c 4 183 224
+8e380 8 188 224
+8e388 4 183 224
+8e38c 4 181 224
+8e390 18 188 224
+8e3a8 4 75 215
+8e3ac 8 90 215
+8e3b4 8 77 215
+8e3bc c 90 215
+8e3c8 c 190 224
+8e3d4 c 90 215
+8e3e0 c 194 224
+8e3ec 8 195 224
+8e3f4 4 196 224
+8e3f8 4 68 215
+8e3fc 10 229 236
+8e40c 8 228 236
+8e414 8 69 215
+8e41c 14 235 236
+8e430 4 93 215
+8e434 4 94 215
+8e438 4 95 215
+8e43c 10 190 224
+8e44c 4 218 224
+8e450 c 218 224
+8e45c 8 219 224
+8e464 4 223 224
+8e468 10 224 224
+8e478 14 233 224
+8e48c 8 224 224
+8e494 4 233 224
+8e498 18 233 224
+8e4b0 4 96 239
+8e4b4 4 64 239
+8e4b8 c 96 239
+8e4c4 10 97 239
+8e4d4 14 287 224
+8e4e8 4 52 224
+8e4ec 4 52 224
+8e4f0 4 52 224
+8e4f4 c 202 224
+8e500 4 208 224
+8e504 4 206 224
+8e508 4 205 224
+8e50c 4 206 224
+8e510 8 208 224
+8e518 8 211 224
+8e520 4 212 224
+8e524 4 213 224
+8e528 4 214 224
+8e52c 10 213 224
+8e53c 4 68 215
+8e540 10 229 236
+8e550 4 228 236
+8e554 c 229 236
+8e560 8 69 215
+8e568 4 92 215
+8e56c 14 235 236
+8e580 4 93 215
+8e584 4 94 215
+8e588 8 95 215
+8e590 14 235 236
+8e5a4 4 93 215
+8e5a8 4 94 215
+8e5ac 8 95 215
+8e5b4 c 209 224
+8e5c0 c 52 224
+8e5cc 8 214 224
+8e5d4 60 234 236
+8e634 10 224 224
+8e644 8 287 224
+8e64c 3c 235 236
+8e688 c 218 224
+8e694 4 64 239
+8e698 10 96 239
+8e6a8 14 97 239
+8e6bc 18 291 224
+FUNC 8e6d4 34 0 std::num_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::do_get
+8e6d4 8 550 224
+8e6dc 4 553 224
+8e6e0 8 550 224
+8e6e8 20 553 224
+FUNC 8e708 5c0 0 std::priv::__do_get_integer<std::istreambuf_iterator<char, std::char_traits<char> >, short unsigned int, char>
+8e708 20 247 224
+8e728 4 145 212
+8e72c 10 247 224
+8e73c 8 145 212
+8e744 c 247 224
+8e750 4 247 224
+8e754 4 145 212
+8e758 10 351 219
+8e768 4 258 224
+8e76c 4 351 219
+8e770 14 258 224
+8e784 4 75 215
+8e788 4 259 224
+8e78c 4 75 215
+8e790 8 90 215
+8e798 8 77 215
+8e7a0 c 90 215
+8e7ac c 263 224
+8e7b8 8 265 224
+8e7c0 8 266 224
+8e7c8 4 287 224
+8e7cc 4 287 224
+8e7d0 4 112 215
+8e7d4 4 287 224
+8e7d8 c 112 215
+8e7e4 4 289 224
+8e7e8 c 290 224
+8e7f4 4 291 224
+8e7f8 4 291 224
+8e7fc 4 291 224
+8e800 34 292 224
+8e834 14 235 236
+8e848 4 93 215
+8e84c 4 95 215
+8e850 4 94 215
+8e854 4 95 215
+8e858 c 263 224
+8e864 10 351 219
+8e874 4 275 224
+8e878 4 351 219
+8e87c 4 57 228
+8e880 4 275 224
+8e884 4 57 228
+8e888 4 275 224
+8e88c 4 57 228
+8e890 8 58 228
+8e898 4 57 228
+8e89c 14 58 228
+8e8b0 4 186 224
+8e8b4 4 188 224
+8e8b8 4 186 224
+8e8bc 4 183 224
+8e8c0 4 186 224
+8e8c4 4 183 224
+8e8c8 4 185 224
+8e8cc 4 95 215
+8e8d0 4 183 224
+8e8d4 8 188 224
+8e8dc 4 183 224
+8e8e0 4 181 224
+8e8e4 4 182 224
+8e8e8 18 188 224
+8e900 4 75 215
+8e904 8 90 215
+8e90c 8 77 215
+8e914 c 90 215
+8e920 c 190 224
+8e92c c 90 215
+8e938 c 194 224
+8e944 8 195 224
+8e94c 4 196 224
+8e950 4 68 215
+8e954 10 229 236
+8e964 8 228 236
+8e96c 8 69 215
+8e974 14 235 236
+8e988 4 93 215
+8e98c 4 94 215
+8e990 4 95 215
+8e994 10 190 224
+8e9a4 4 218 224
+8e9a8 c 218 224
+8e9b4 8 219 224
+8e9bc 4 223 224
+8e9c0 c 224 224
+8e9cc 10 233 224
+8e9dc c 224 224
+8e9e8 4 233 224
+8e9ec 4 96 239
+8e9f0 4 64 239
+8e9f4 c 96 239
+8ea00 10 97 239
+8ea10 10 287 224
+8ea20 4 52 224
+8ea24 4 52 224
+8ea28 4 52 224
+8ea2c c 202 224
+8ea38 4 208 224
+8ea3c 4 206 224
+8ea40 4 205 224
+8ea44 4 206 224
+8ea48 8 208 224
+8ea50 10 211 224
+8ea60 4 212 224
+8ea64 8 213 224
+8ea6c 4 214 224
+8ea70 c 213 224
+8ea7c 4 68 215
+8ea80 10 229 236
+8ea90 4 228 236
+8ea94 c 229 236
+8eaa0 8 69 215
+8eaa8 4 92 215
+8eaac 14 235 236
+8eac0 4 93 215
+8eac4 4 94 215
+8eac8 8 95 215
+8ead0 14 235 236
+8eae4 4 93 215
+8eae8 4 94 215
+8eaec 8 95 215
+8eaf4 c 209 224
+8eb00 c 52 224
+8eb0c 8 214 224
+8eb14 60 234 236
+8eb74 14 235 236
+8eb88 4 93 215
+8eb8c 4 95 215
+8eb90 4 94 215
+8eb94 8 95 215
+8eb9c c 224 224
+8eba8 8 233 224
+8ebb0 24 234 236
+8ebd4 8 287 224
+8ebdc 24 234 236
+8ec00 28 235 236
+8ec28 18 233 224
+8ec40 14 235 236
+8ec54 8 218 224
+8ec5c 2c 235 236
+8ec88 4 64 239
+8ec8c 10 96 239
+8ec9c 14 97 239
+8ecb0 18 291 224
+FUNC 8ecc8 34 0 std::num_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::do_get
+8ecc8 8 543 224
+8ecd0 4 546 224
+8ecd4 8 543 224
+8ecdc 20 546 224
+FUNC 8ecfc 4fc 0 std::priv::__do_get_integer<std::istreambuf_iterator<char, std::char_traits<char> >, long int, char>
+8ecfc 20 247 224
+8ed1c 4 145 212
+8ed20 10 247 224
+8ed30 8 145 212
+8ed38 c 247 224
+8ed44 8 247 224
+8ed4c 4 145 212
+8ed50 10 351 219
+8ed60 4 258 224
+8ed64 4 351 219
+8ed68 14 258 224
+8ed7c 8 112 215
+8ed84 4 259 224
+8ed88 c 112 215
+8ed94 4 263 224
+8ed98 4 265 224
+8ed9c 4 266 224
+8eda0 4 287 224
+8eda4 4 287 224
+8eda8 4 112 215
+8edac 4 287 224
+8edb0 c 112 215
+8edbc 4 289 224
+8edc0 c 290 224
+8edcc 4 291 224
+8edd0 4 291 224
+8edd4 4 291 224
+8edd8 34 292 224
+8ee0c 10 351 219
+8ee1c 4 275 224
+8ee20 4 351 219
+8ee24 4 275 224
+8ee28 c 57 228
+8ee34 8 58 228
+8ee3c 4 57 228
+8ee40 14 58 228
+8ee54 4 128 224
+8ee58 4 123 224
+8ee5c 4 128 224
+8ee60 4 122 224
+8ee64 4 128 224
+8ee68 c 126 224
+8ee74 4 123 224
+8ee78 4 125 224
+8ee7c 4 121 224
+8ee80 4 95 215
+8ee84 14 123 224
+8ee98 14 128 224
+8eeac 4 75 215
+8eeb0 8 90 215
+8eeb8 8 77 215
+8eec0 c 90 215
+8eecc c 130 224
+8eed8 c 90 215
+8eee4 10 134 224
+8eef4 8 135 224
+8eefc 4 136 224
+8ef00 4 68 215
+8ef04 10 229 236
+8ef14 8 228 236
+8ef1c 8 69 215
+8ef24 14 235 236
+8ef38 4 93 215
+8ef3c 4 94 215
+8ef40 4 95 215
+8ef44 c 130 224
+8ef50 4 158 224
+8ef54 4 130 224
+8ef58 4 158 224
+8ef5c c 158 224
+8ef68 8 159 224
+8ef70 4 163 224
+8ef74 8 274 224
+8ef7c c 164 224
+8ef88 14 173 224
+8ef9c c 164 224
+8efa8 8 173 224
+8efb0 18 173 224
+8efc8 4 64 239
+8efcc 10 96 239
+8efdc 10 97 239
+8efec 14 287 224
+8f000 4 52 224
+8f004 4 52 224
+8f008 4 52 224
+8f00c 8 142 224
+8f014 4 148 224
+8f018 4 146 224
+8f01c 4 145 224
+8f020 4 146 224
+8f024 8 148 224
+8f02c c 151 224
+8f038 4 152 224
+8f03c 4 153 224
+8f040 4 154 224
+8f044 10 153 224
+8f054 4 68 215
+8f058 10 229 236
+8f068 4 228 236
+8f06c c 229 236
+8f078 8 69 215
+8f080 4 92 215
+8f084 14 235 236
+8f098 4 93 215
+8f09c 4 94 215
+8f0a0 8 95 215
+8f0a8 14 235 236
+8f0bc 4 93 215
+8f0c0 4 94 215
+8f0c4 8 95 215
+8f0cc c 149 224
+8f0d8 c 52 224
+8f0e4 8 154 224
+8f0ec 60 234 236
+8f14c 10 164 224
+8f15c c 164 224
+8f168 8 287 224
+8f170 3c 235 236
+8f1ac 8 158 224
+8f1b4 8 64 239
+8f1bc 10 96 239
+8f1cc 14 97 239
+8f1e0 18 291 224
+FUNC 8f1f8 34 0 std::num_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::do_get
+8f1f8 8 537 224
+8f200 4 539 224
+8f204 8 537 224
+8f20c 20 539 224
+FUNC 8f22c a8 0 std::num_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::do_get
+8f22c 8 499 224
+8f234 4 501 224
+8f238 8 499 224
+8f240 4 501 224
+8f244 24 506 224
+8f268 14 507 224
+8f27c 8 508 224
+8f284 8 510 224
+8f28c 8 513 224
+8f294 8 517 224
+8f29c 1c 502 224
+8f2b8 8 517 224
+8f2c0 4 509 224
+8f2c4 8 517 224
+8f2cc 8 511 224
+FUNC 8f2d4 468 0 std::priv::__put_float<std::ostreambuf_iterator<char, std::char_traits<char> > >
+8f2d4 20 96 226
+8f2f4 4 400 238
+8f2f8 4 96 226
+8f2fc 4 400 238
+8f300 8 96 226
+8f308 4 100 226
+8f30c 14 96 226
+8f320 4 100 226
+8f324 c 100 226
+8f330 10 104 226
+8f340 20 105 226
+8f360 4 138 212
+8f364 4 400 238
+8f368 8 139 212
+8f370 c 47 226
+8f37c 4 51 226
+8f380 4 50 226
+8f384 4 53 226
+8f388 4 50 226
+8f38c 4 53 226
+8f390 10 57 226
+8f3a0 c 57 226
+8f3ac 8 57 226
+8f3b4 18 480 201
+8f3cc 4 62 230
+8f3d0 4 200 236
+8f3d4 4 199 236
+8f3d8 4 200 236
+8f3dc 4 199 236
+8f3e0 8 200 236
+8f3e8 8 199 236
+8f3f0 8 480 201
+8f3f8 4 64 226
+8f3fc 4 213 201
+8f400 4 64 226
+8f404 10 213 201
+8f414 8 199 236
+8f41c 4 215 201
+8f420 8 213 201
+8f428 4 214 201
+8f42c 4 62 230
+8f430 4 200 236
+8f434 4 199 236
+8f438 4 200 236
+8f43c 4 199 236
+8f440 8 200 236
+8f448 4 199 236
+8f44c 4 223 247
+8f450 c 199 236
+8f45c 4 200 236
+8f460 4 215 201
+8f464 4 200 236
+8f468 8 62 230
+8f470 8 213 201
+8f478 10 62 230
+8f488 1c 111 226
+8f4a4 8 101 226
+8f4ac 4 199 236
+8f4b0 4 223 247
+8f4b4 c 199 236
+8f4c0 c 200 236
+8f4cc c 62 230
+8f4d8 1c 213 201
+8f4f4 8 199 236
+8f4fc 4 215 201
+8f500 8 213 201
+8f508 4 214 201
+8f50c 4 62 230
+8f510 4 200 236
+8f514 4 199 236
+8f518 4 200 236
+8f51c 4 199 236
+8f520 8 200 236
+8f528 4 199 236
+8f52c 4 223 247
+8f530 c 199 236
+8f53c 8 200 236
+8f544 c 62 230
+8f550 4 59 226
+8f554 4 59 226
+8f558 8 59 226
+8f560 14 480 201
+8f574 4 62 230
+8f578 4 200 236
+8f57c 4 199 236
+8f580 4 200 236
+8f584 4 199 236
+8f588 8 200 236
+8f590 8 199 236
+8f598 8 480 201
+8f5a0 4 213 201
+8f5a4 8 60 226
+8f5ac 1c 213 201
+8f5c8 8 199 236
+8f5d0 4 215 201
+8f5d4 8 213 201
+8f5dc 4 214 201
+8f5e0 4 62 230
+8f5e4 4 200 236
+8f5e8 4 199 236
+8f5ec 4 200 236
+8f5f0 4 199 236
+8f5f4 8 200 236
+8f5fc 4 199 236
+8f600 4 223 247
+8f604 c 199 236
+8f610 8 200 236
+8f618 c 62 230
+8f624 4 199 236
+8f628 4 223 247
+8f62c c 199 236
+8f638 c 200 236
+8f644 c 62 230
+8f650 1c 213 201
+8f66c 8 199 236
+8f674 4 215 201
+8f678 8 213 201
+8f680 4 214 201
+8f684 4 62 230
+8f688 4 200 236
+8f68c 4 199 236
+8f690 4 200 236
+8f694 4 199 236
+8f698 8 200 236
+8f6a0 4 199 236
+8f6a4 4 223 247
+8f6a8 c 199 236
+8f6b4 8 200 236
+8f6bc c 62 230
+8f6c8 4 54 226
+8f6cc 4 480 201
+8f6d0 4 54 226
+8f6d4 c 480 201
+8f6e0 4 62 230
+8f6e4 4 200 236
+8f6e8 4 199 236
+8f6ec 4 200 236
+8f6f0 4 199 236
+8f6f4 8 200 236
+8f6fc 8 199 236
+8f704 c 480 201
+8f710 4 199 236
+8f714 4 223 247
+8f718 c 199 236
+8f724 c 200 236
+8f730 c 62 230
+FUNC 8f73c 220 0 std::priv::__do_put_float<char, std::ostreambuf_iterator<char, std::char_traits<char> >, long double>
+8f73c 10 115 226
+8f74c 4 108 213
+8f750 4 41 213
+8f754 18 115 226
+8f76c 4 108 213
+8f770 4 115 226
+8f774 4 115 226
+8f778 8 108 213
+8f780 4 41 213
+8f784 8 115 226
+8f78c 4 108 213
+8f790 10 41 213
+8f7a0 4 611 237
+8f7a4 c 119 226
+8f7b0 4 613 237
+8f7b4 4 119 226
+8f7b8 4 612 237
+8f7bc 4 613 237
+8f7c0 4 101 206
+8f7c4 4 119 226
+8f7c8 4 145 212
+8f7cc 4 119 226
+8f7d0 8 145 212
+8f7d8 14 351 219
+8f7ec 8 121 226
+8f7f4 10 56 228
+8f804 4 57 228
+8f808 4 56 228
+8f80c c 57 228
+8f818 4 58 228
+8f81c 4 57 228
+8f820 10 58 228
+8f830 2c 124 226
+8f85c 4 64 239
+8f860 4 124 226
+8f864 c 96 239
+8f870 8 97 239
+8f878 8 161 202
+8f880 4 161 202
+8f884 4 64 239
+8f888 c 96 239
+8f894 4 97 239
+8f898 8 319 202
+8f8a0 4 97 239
+8f8a4 8 161 202
+8f8ac 4 161 202
+8f8b0 2c 125 226
+8f8dc 14 135 223
+8f8f0 4 64 239
+8f8f4 c 96 239
+8f900 4 97 239
+8f904 4 70 213
+8f908 4 97 239
+8f90c 4 70 213
+8f910 c 70 213
+8f91c 8 64 239
+8f924 c 96 239
+8f930 1c 97 239
+8f94c 10 121 226
+FUNC 8f95c 24 0 std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::do_put
+8f95c 4 451 226
+8f960 8 453 226
+8f968 4 451 226
+8f96c 8 453 226
+8f974 c 453 226
+FUNC 8f980 220 0 std::priv::__do_put_float<char, std::ostreambuf_iterator<char, std::char_traits<char> >, double>
+8f980 10 115 226
+8f990 4 108 213
+8f994 4 41 213
+8f998 18 115 226
+8f9b0 4 108 213
+8f9b4 4 115 226
+8f9b8 4 115 226
+8f9bc 8 108 213
+8f9c4 4 41 213
+8f9c8 8 115 226
+8f9d0 4 108 213
+8f9d4 10 41 213
+8f9e4 4 611 237
+8f9e8 c 119 226
+8f9f4 4 613 237
+8f9f8 4 119 226
+8f9fc 4 612 237
+8fa00 4 613 237
+8fa04 4 101 206
+8fa08 4 119 226
+8fa0c 4 145 212
+8fa10 4 119 226
+8fa14 8 145 212
+8fa1c 14 351 219
+8fa30 8 121 226
+8fa38 10 56 228
+8fa48 4 57 228
+8fa4c 4 56 228
+8fa50 c 57 228
+8fa5c 4 58 228
+8fa60 4 57 228
+8fa64 10 58 228
+8fa74 2c 124 226
+8faa0 4 64 239
+8faa4 4 124 226
+8faa8 c 96 239
+8fab4 8 97 239
+8fabc 8 161 202
+8fac4 4 161 202
+8fac8 4 64 239
+8facc c 96 239
+8fad8 4 97 239
+8fadc 8 319 202
+8fae4 4 97 239
+8fae8 8 161 202
+8faf0 4 161 202
+8faf4 2c 125 226
+8fb20 14 135 223
+8fb34 4 64 239
+8fb38 c 96 239
+8fb44 4 97 239
+8fb48 4 70 213
+8fb4c 4 97 239
+8fb50 4 70 213
+8fb54 c 70 213
+8fb60 8 64 239
+8fb68 c 96 239
+8fb74 1c 97 239
+8fb90 10 121 226
+FUNC 8fba0 24 0 std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::do_put
+8fba0 4 444 226
+8fba4 8 446 226
+8fbac 4 444 226
+8fbb0 8 446 226
+8fbb8 c 446 226
+FUNC 8fbc4 4b4 0 std::priv::__copy_integer_and_fill<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >
+8fbc4 4 148 226
+8fbc8 4 152 226
+8fbcc 10 148 226
+8fbdc c 148 226
+8fbe8 4 152 226
+8fbec 4 161 226
+8fbf0 4 159 226
+8fbf4 8 163 226
+8fbfc 10 167 226
+8fc0c 4 167 226
+8fc10 14 167 226
+8fc24 c 173 226
+8fc30 10 173 226
+8fc40 18 480 201
+8fc58 4 62 230
+8fc5c 4 200 236
+8fc60 4 200 236
+8fc64 4 200 236
+8fc68 4 199 236
+8fc6c 8 200 236
+8fc74 8 199 236
+8fc7c 8 62 230
+8fc84 8 480 201
+8fc8c 4 183 226
+8fc90 8 182 226
+8fc98 18 213 201
+8fcb0 8 199 236
+8fcb8 8 62 230
+8fcc0 4 215 201
+8fcc4 8 213 201
+8fccc 4 214 201
+8fcd0 4 62 230
+8fcd4 4 200 236
+8fcd8 4 200 236
+8fcdc 4 200 236
+8fce0 4 199 236
+8fce4 8 200 236
+8fcec 14 199 236
+8fd00 c 200 236
+8fd0c 8 153 226
+8fd14 18 213 201
+8fd2c 18 186 226
+8fd44 14 199 236
+8fd58 28 200 236
+8fd80 8 199 236
+8fd88 8 62 230
+8fd90 4 215 201
+8fd94 8 213 201
+8fd9c 4 214 201
+8fda0 4 62 230
+8fda4 4 200 236
+8fda8 4 200 236
+8fdac 4 200 236
+8fdb0 4 199 236
+8fdb4 8 200 236
+8fdbc 14 199 236
+8fdd0 c 200 236
+8fddc 10 169 226
+8fdec 18 480 201
+8fe04 4 62 230
+8fe08 4 200 236
+8fe0c 4 200 236
+8fe10 4 200 236
+8fe14 4 199 236
+8fe18 8 200 236
+8fe20 8 199 236
+8fe28 8 62 230
+8fe30 8 480 201
+8fe38 8 171 226
+8fe40 4 213 201
+8fe44 4 170 226
+8fe48 4 213 201
+8fe4c 4 170 226
+8fe50 1c 213 201
+8fe6c 8 199 236
+8fe74 8 62 230
+8fe7c 4 215 201
+8fe80 8 213 201
+8fe88 4 214 201
+8fe8c 4 62 230
+8fe90 4 200 236
+8fe94 4 200 236
+8fe98 4 200 236
+8fe9c 4 199 236
+8fea0 8 200 236
+8fea8 14 199 236
+8febc c 200 236
+8fec8 14 199 236
+8fedc 18 200 236
+8fef4 1c 285 201
+8ff10 8 164 226
+8ff18 14 480 201
+8ff2c 4 62 230
+8ff30 4 200 236
+8ff34 4 200 236
+8ff38 4 200 236
+8ff3c 4 199 236
+8ff40 8 200 236
+8ff48 8 199 236
+8ff50 8 62 230
+8ff58 14 480 201
+8ff6c 18 186 226
+8ff84 14 199 236
+8ff98 18 200 236
+8ffb0 14 176 226
+8ffc4 10 177 226
+8ffd4 18 480 201
+8ffec 4 62 230
+8fff0 4 200 236
+8fff4 4 200 236
+8fff8 4 200 236
+8fffc 4 199 236
+90000 8 200 236
+90008 8 199 236
+90010 8 62 230
+90018 8 480 201
+90020 10 285 201
+90030 8 178 226
+90038 14 285 201
+9004c 14 199 236
+90060 18 200 236
+FUNC 90078 21c 0 std::priv::__put_integer<std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >
+90078 18 192 226
+90090 4 145 212
+90094 10 192 226
+900a4 8 145 212
+900ac 8 192 226
+900b4 c 192 226
+900c0 4 145 212
+900c4 10 351 219
+900d4 8 206 207
+900dc 4 351 219
+900e0 20 206 207
+90100 8 209 207
+90108 4 206 207
+9010c 18 209 207
+90124 4 351 219
+90128 4 203 226
+9012c 4 351 219
+90130 4 204 226
+90134 8 351 219
+9013c c 87 228
+90148 4 351 219
+9014c 8 87 228
+90154 10 209 226
+90164 4 218 226
+90168 4 211 226
+9016c 14 86 228
+90180 20 220 226
+901a0 4 225 226
+901a4 4 138 212
+901a8 4 225 226
+901ac 4 139 212
+901b0 1c 225 226
+901cc 4 64 239
+901d0 4 225 226
+901d4 c 96 239
+901e0 8 97 239
+901e8 8 161 202
+901f0 4 161 202
+901f4 8 225 226
+901fc 30 226 226
+9022c c 212 226
+90238 c 215 226
+90244 8 135 223
+9024c 8 213 226
+90254 8 64 239
+9025c c 96 239
+90268 14 97 239
+9027c 18 225 226
+FUNC 90294 a4 0 std::priv::__do_put_integer<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, long unsigned int>
+90294 14 372 226
+902a8 10 372 226
+902b8 4 307 226
+902bc 4 309 226
+902c0 4 308 226
+902c4 4 309 226
+902c8 4 308 226
+902cc 4 309 226
+902d0 4 310 226
+902d4 4 308 226
+902d8 4 309 226
+902dc 14 381 226
+902f0 38 382 226
+90328 10 310 226
+FUNC 90338 1e8 0 std::num_put<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_put
+90338 c 475 226
+90344 4 145 212
+90348 8 475 226
+90350 4 145 212
+90354 4 475 226
+90358 4 145 212
+9035c c 475 226
+90368 4 475 226
+9036c 4 145 212
+90370 18 351 219
+90388 c 477 226
+90394 4 124 212
+90398 4 139 212
+9039c 4 123 212
+903a0 4 139 212
+903a4 8 124 212
+903ac 4 484 226
+903b0 c 206 207
+903bc 4 506 226
+903c0 c 206 207
+903cc 14 506 226
+903e0 4 112 212
+903e4 18 514 226
+903fc 4 488 226
+90400 8 488 226
+90408 18 206 207
+90420 4 62 230
+90424 10 200 236
+90434 c 199 236
+90440 4 200 236
+90444 8 62 230
+9044c 18 206 207
+90464 10 200 236
+90474 10 199 236
+90484 8 62 230
+9048c c 139 212
+90498 c 488 226
+904a4 1c 206 207
+904c0 18 199 236
+904d8 c 200 236
+904e4 1c 199 236
+90500 10 200 236
+90510 10 477 226
+FUNC 90520 28 0 std::num_put<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_put
+90520 4 438 226
+90524 8 440 226
+9052c 4 438 226
+90530 c 440 226
+9053c c 440 226
+FUNC 90548 a8 0 std::num_put<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_put
+90548 18 465 226
+90560 10 465 226
+90570 4 307 226
+90574 4 309 226
+90578 4 308 226
+9057c 4 309 226
+90580 4 308 226
+90584 4 309 226
+90588 4 310 226
+9058c 4 309 226
+90590 4 308 226
+90594 18 381 226
+905ac 34 467 226
+905e0 10 310 226
+FUNC 905f0 6c 0 std::num_put<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_put
+905f0 14 459 226
+90604 8 380 226
+9060c 8 459 226
+90614 c 380 226
+90620 8 459 226
+90628 8 380 226
+90630 1c 381 226
+9064c 10 461 226
+FUNC 9065c 6c 0 std::num_put<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_put
+9065c 14 432 226
+90670 8 380 226
+90678 8 432 226
+90680 c 380 226
+9068c 8 432 226
+90694 8 380 226
+9069c 1c 381 226
+906b8 10 434 226
+FUNC 906c8 550 0 std::priv::__copy_sign<std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, wchar_t>
+906c8 18 297 224
+906e0 18 297 224
+906f8 4 75 215
+906fc 8 90 215
+90704 4 77 215
+90708 c 90 215
+90714 8 299 224
+9071c 4 90 215
+90720 8 301 224
+90728 8 303 224
+90730 4 308 224
+90734 4 309 224
+90738 4 308 224
+9073c 4 309 224
+90740 4 308 224
+90744 18 309 224
+9075c 34 235 236
+90790 c 95 215
+9079c 1c 235 236
+907b8 c 95 215
+907c4 8 301 224
+907cc 10 229 236
+907dc 8 228 236
+907e4 4 165 239
+907e8 8 69 215
+907f0 4 64 239
+907f4 8 74 239
+907fc 10 74 239
+9080c c 535 238
+90818 4 101 206
+9081c c 232 247
+90828 4 539 238
+9082c 8 229 236
+90834 8 539 238
+9083c 8 229 236
+90844 8 228 236
+9084c c 69 215
+90858 24 234 236
+9087c 8 95 215
+90884 20 234 236
+908a4 28 235 236
+908cc 20 234 236
+908ec c 95 215
+908f8 8 235 236
+90900 8 95 215
+90908 20 235 236
+90928 4 228 236
+9092c 18 229 236
+90944 4 228 236
+90948 18 229 236
+90960 4 400 238
+90964 14 304 238
+90978 4 306 238
+9097c 10 307 238
+9098c 4 64 213
+90990 4 67 213
+90994 4 64 213
+90998 58 86 244
+909f0 20 146 206
+90a10 4 86 244
+90a14 4 146 206
+90a18 10 86 244
+90a28 4 146 206
+90a2c c 86 244
+90a38 4 146 206
+90a3c c 86 244
+90a48 4 146 206
+90a4c c 86 244
+90a58 4 146 206
+90a5c c 86 244
+90a68 4 146 206
+90a6c c 86 244
+90a78 4 146 206
+90a7c c 86 244
+90a88 4 146 206
+90a8c c 86 244
+90a98 4 146 206
+90a9c c 86 244
+90aa8 4 146 206
+90aac c 86 244
+90ab8 4 146 206
+90abc c 86 244
+90ac8 4 146 206
+90acc c 86 244
+90ad8 4 146 206
+90adc c 86 244
+90ae8 4 146 206
+90aec 8 86 244
+90af4 8 146 206
+90afc 4 101 206
+90b00 4 64 239
+90b04 c 96 239
+90b10 8 97 239
+90b18 8 319 202
+90b20 c 97 239
+90b2c 8 161 202
+90b34 c 161 202
+90b40 4 175 237
+90b44 4 164 239
+90b48 4 160 239
+90b4c 10 165 239
+90b5c 14 95 215
+90b70 2c 235 236
+90b9c 14 74 239
+90bb0 4 308 238
+90bb4 2c 134 223
+90be0 8 86 244
+90be8 8 146 206
+90bf0 c 86 244
+90bfc 10 135 223
+90c0c 8 86 244
+90c14 4 305 238
+FUNC 90c18 4d8 0 std::priv::__copy_digits<std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, wchar_t>
+90c18 2c 314 224
+90c44 10 314 224
+90c54 4 316 224
+90c58 8 95 215
+90c60 4 320 224
+90c64 4 75 215
+90c68 8 90 215
+90c70 4 77 215
+90c74 4 90 215
+90c78 10 318 224
+90c88 c 90 215
+90c94 8 320 224
+90c9c 4 319 224
+90ca0 8 320 224
+90ca8 4 320 224
+90cac 4 64 239
+90cb0 4 321 224
+90cb4 8 74 239
+90cbc 10 74 239
+90ccc c 535 238
+90cd8 8 101 206
+90ce0 4 232 247
+90ce4 4 68 215
+90ce8 4 539 238
+90cec 4 229 236
+90cf0 4 539 238
+90cf4 4 229 236
+90cf8 4 539 238
+90cfc 8 229 236
+90d04 8 228 236
+90d0c 4 69 215
+90d10 8 322 224
+90d18 14 235 236
+90d2c c 95 215
+90d38 4 235 236
+90d3c c 318 224
+90d48 20 328 224
+90d68 1c 235 236
+90d84 4 93 215
+90d88 4 94 215
+90d8c 8 95 215
+90d94 4 92 215
+90d98 1c 235 236
+90db4 4 93 215
+90db8 4 94 215
+90dbc 8 95 215
+90dc4 4 228 236
+90dc8 14 229 236
+90ddc 4 400 238
+90de0 14 304 238
+90df4 4 306 238
+90df8 10 307 238
+90e08 4 64 213
+90e0c 4 67 213
+90e10 4 64 213
+90e14 58 86 244
+90e6c 20 146 206
+90e8c 4 86 244
+90e90 4 146 206
+90e94 10 86 244
+90ea4 4 146 206
+90ea8 c 86 244
+90eb4 4 146 206
+90eb8 c 86 244
+90ec4 4 146 206
+90ec8 c 86 244
+90ed4 4 146 206
+90ed8 c 86 244
+90ee4 4 146 206
+90ee8 c 86 244
+90ef4 4 146 206
+90ef8 c 86 244
+90f04 4 146 206
+90f08 c 86 244
+90f14 4 146 206
+90f18 c 86 244
+90f24 4 146 206
+90f28 c 86 244
+90f34 4 146 206
+90f38 c 86 244
+90f44 4 146 206
+90f48 c 86 244
+90f54 4 146 206
+90f58 c 86 244
+90f64 4 146 206
+90f68 8 86 244
+90f70 8 146 206
+90f78 4 101 206
+90f7c 4 64 239
+90f80 c 96 239
+90f8c 8 97 239
+90f94 8 319 202
+90f9c c 97 239
+90fa8 c 161 202
+90fb4 10 161 202
+90fc4 4 175 237
+90fc8 4 164 239
+90fcc 4 160 239
+90fd0 8 165 239
+90fd8 14 74 239
+90fec 14 234 236
+91000 4 95 215
+91004 8 234 236
+9100c 4 308 238
+91010 20 134 223
+91030 10 86 244
+91040 38 234 236
+91078 8 86 244
+91080 8 146 206
+91088 c 86 244
+91094 14 135 223
+910a8 4 235 236
+910ac 4 95 215
+910b0 3c 235 236
+910ec 4 305 238
+FUNC 910f0 2bc 0 std::basic_string<char, std::char_traits<char>, std::priv::__iostring_allocator<char> >::push_back
+910f0 8 534 238
+910f8 4 64 239
+910fc c 534 238
+91108 4 74 239
+9110c 8 534 238
+91114 4 74 239
+91118 10 74 239
+91128 c 535 238
+91134 8 101 206
+9113c 4 232 247
+91140 4 539 238
+91144 4 540 238
+91148 8 539 238
+91150 10 540 238
+91160 4 400 238
+91164 14 304 238
+91178 4 306 238
+9117c 10 307 238
+9118c 4 64 213
+91190 4 67 213
+91194 4 64 213
+91198 58 86 244
+911f0 20 146 206
+91210 4 86 244
+91214 4 146 206
+91218 10 86 244
+91228 4 146 206
+9122c c 86 244
+91238 4 146 206
+9123c c 86 244
+91248 4 146 206
+9124c c 86 244
+91258 4 146 206
+9125c c 86 244
+91268 4 146 206
+9126c c 86 244
+91278 4 146 206
+9127c c 86 244
+91288 4 146 206
+9128c c 86 244
+91298 4 146 206
+9129c c 86 244
+912a8 4 146 206
+912ac c 86 244
+912b8 4 146 206
+912bc c 86 244
+912c8 4 146 206
+912cc c 86 244
+912d8 4 146 206
+912dc c 86 244
+912e8 4 146 206
+912ec 8 86 244
+912f4 8 146 206
+912fc 4 101 206
+91300 4 64 239
+91304 c 96 239
+91310 8 97 239
+91318 8 319 202
+91320 4 97 239
+91324 8 161 202
+9132c 4 161 202
+91330 4 175 237
+91334 4 164 239
+91338 4 160 239
+9133c c 165 239
+91348 14 74 239
+9135c 4 308 238
+91360 1c 134 223
+9137c 8 86 244
+91384 8 146 206
+9138c c 86 244
+91398 8 135 223
+913a0 8 86 244
+913a8 4 305 238
+FUNC 913ac 844 0 std::priv::__read_float<std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, wchar_t>
+913ac 14 368 224
+913c0 4 87 228
+913c4 10 368 224
+913d4 4 87 228
+913d8 4 368 224
+913dc 4 87 228
+913e0 8 368 224
+913e8 c 87 228
+913f4 c 368 224
+91400 8 368 224
+91408 4 87 228
+9140c 10 85 228
+9141c 4 86 228
+91420 4 85 228
+91424 10 86 228
+91434 20 390 224
+91454 18 393 224
+9146c 8 393 224
+91474 8 396 224
+9147c 8 393 224
+91484 4 396 224
+91488 10 393 224
+91498 4 396 224
+9149c 4 338 224
+914a0 4 339 224
+914a4 4 338 224
+914a8 4 336 224
+914ac 20 338 224
+914cc 8 343 224
+914d4 4 75 215
+914d8 8 90 215
+914e0 4 77 215
+914e4 4 90 215
+914e8 10 341 224
+914f8 c 90 215
+91504 c 343 224
+91510 4 342 224
+91514 8 343 224
+9151c 4 344 224
+91520 c 345 224
+9152c 4 68 215
+91530 8 346 224
+91538 4 347 224
+9153c 10 229 236
+9154c c 228 236
+91558 8 69 215
+91560 14 235 236
+91574 c 95 215
+91580 4 235 236
+91584 c 341 224
+91590 c 359 224
+9159c 8 360 224
+915a4 10 361 224
+915b4 10 120 215
+915c4 4 403 224
+915c8 8 90 215
+915d0 10 403 224
+915e0 4 375 224
+915e4 4 410 224
+915e8 4 413 224
+915ec 4 96 239
+915f0 4 64 239
+915f4 c 96 239
+91600 10 97 239
+91610 30 423 224
+91640 1c 235 236
+9165c 4 93 215
+91660 4 95 215
+91664 4 94 215
+91668 8 95 215
+91670 4 64 239
+91674 4 351 224
+91678 8 74 239
+91680 10 74 239
+91690 c 535 238
+9169c 4 101 206
+916a0 4 352 224
+916a4 8 350 224
+916ac 4 352 224
+916b0 4 232 247
+916b4 c 539 238
+916c0 4 68 215
+916c4 10 229 236
+916d4 4 228 236
+916d8 c 229 236
+916e4 8 69 215
+916ec 4 92 215
+916f0 1c 235 236
+9170c 4 94 215
+91710 4 95 215
+91714 4 93 215
+91718 8 95 215
+91720 18 234 236
+91738 4 95 215
+9173c 8 234 236
+91744 4 400 238
+91748 14 304 238
+9175c 4 306 238
+91760 4 307 238
+91764 4 306 238
+91768 c 307 238
+91774 4 64 213
+91778 8 67 213
+91780 8 64 213
+91788 40 234 236
+917c8 14 74 239
+917dc 8 308 238
+917e4 18 134 223
+917fc 58 86 244
+91854 24 146 206
+91878 4 86 244
+9187c 4 146 206
+91880 10 86 244
+91890 4 146 206
+91894 c 86 244
+918a0 4 146 206
+918a4 c 86 244
+918b0 4 146 206
+918b4 c 86 244
+918c0 4 146 206
+918c4 c 86 244
+918d0 4 146 206
+918d4 c 86 244
+918e0 4 146 206
+918e4 c 86 244
+918f0 4 146 206
+918f4 c 86 244
+91900 4 146 206
+91904 c 86 244
+91910 4 146 206
+91914 c 86 244
+91920 4 146 206
+91924 c 86 244
+91930 4 146 206
+91934 c 86 244
+91940 4 146 206
+91944 c 86 244
+91950 4 146 206
+91954 8 86 244
+9195c c 146 206
+91968 4 101 206
+9196c 4 64 239
+91970 c 96 239
+9197c 8 97 239
+91984 8 319 202
+9198c 4 97 239
+91990 8 161 202
+91998 4 161 202
+9199c 4 175 237
+919a0 4 164 239
+919a4 4 175 237
+919a8 4 165 239
+919ac 4 175 237
+919b0 8 160 239
+919b8 c 404 224
+919c4 4 68 215
+919c8 10 229 236
+919d8 8 228 236
+919e0 4 406 224
+919e4 4 69 215
+919e8 18 406 224
+91a00 4 410 224
+91a04 4 413 224
+91a08 10 120 215
+91a18 4 413 224
+91a1c 8 90 215
+91a24 4 66 215
+91a28 c 413 224
+91a34 c 413 224
+91a40 c 414 224
+91a4c 4 68 215
+91a50 10 229 236
+91a60 8 228 236
+91a68 4 416 224
+91a6c 4 69 215
+91a70 18 416 224
+91a88 4 416 224
+91a8c 4 416 224
+91a90 4 416 224
+91a94 c 417 224
+91aa0 14 416 224
+91ab4 18 417 224
+91acc 14 403 224
+91ae0 c 235 236
+91aec 8 95 215
+91af4 8 235 236
+91afc 4 86 244
+91b00 10 146 206
+91b10 c 86 244
+91b1c 14 235 236
+91b30 8 135 223
+91b38 1c 400 224
+91b54 14 235 236
+91b68 18 359 224
+91b80 10 86 244
+91b90 4 66 215
+91b94 c 413 224
+91ba0 18 90 215
+91bb8 8 305 238
+91bc0 4 64 239
+91bc4 10 96 239
+91bd4 1c 97 239
+FUNC 91bf0 2a0 0 std::priv::__do_get_float<std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, long double, wchar_t>
+91bf0 10 427 224
+91c00 4 145 212
+91c04 14 427 224
+91c18 8 145 212
+91c20 4 427 224
+91c24 8 427 224
+91c2c 4 145 212
+91c30 24 351 219
+91c54 4 108 213
+91c58 4 351 219
+91c5c c 108 213
+91c68 4 41 213
+91c6c 4 108 213
+91c70 14 41 213
+91c84 4 101 206
+91c88 4 41 213
+91c8c 4 613 237
+91c90 14 434 224
+91ca4 4 612 237
+91ca8 4 613 237
+91cac 4 611 237
+91cb0 8 434 224
+91cb8 4 435 224
+91cbc 8 440 224
+91cc4 8 75 215
+91ccc 8 90 215
+91cd4 8 77 215
+91cdc c 90 215
+91ce8 c 442 224
+91cf4 4 64 239
+91cf8 4 444 224
+91cfc c 96 239
+91d08 4 97 239
+91d0c 8 319 202
+91d14 4 97 239
+91d18 8 161 202
+91d20 4 161 202
+91d24 8 444 224
+91d2c 28 445 224
+91d54 10 443 224
+91d64 1c 235 236
+91d80 4 93 215
+91d84 4 95 215
+91d88 4 94 215
+91d8c 8 95 215
+91d94 8 135 223
+91d9c c 436 224
+91da8 8 437 224
+91db0 1c 235 236
+91dcc 4 93 215
+91dd0 4 95 215
+91dd4 4 94 215
+91dd8 8 95 215
+91de0 48 234 236
+91e28 24 235 236
+91e4c 10 444 224
+91e5c 8 64 239
+91e64 c 96 239
+91e70 4 97 239
+91e74 4 70 213
+91e78 4 97 239
+91e7c 4 70 213
+91e80 10 70 213
+FUNC 91e90 34 0 std::num_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_get
+91e90 8 579 224
+91e98 4 582 224
+91e9c 8 579 224
+91ea4 20 582 224
+FUNC 91ec4 2a0 0 std::priv::__do_get_float<std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, double, wchar_t>
+91ec4 10 427 224
+91ed4 4 145 212
+91ed8 14 427 224
+91eec 8 145 212
+91ef4 4 427 224
+91ef8 8 427 224
+91f00 4 145 212
+91f04 24 351 219
+91f28 4 108 213
+91f2c 4 351 219
+91f30 c 108 213
+91f3c 4 41 213
+91f40 4 108 213
+91f44 14 41 213
+91f58 4 101 206
+91f5c 4 41 213
+91f60 4 613 237
+91f64 14 434 224
+91f78 4 612 237
+91f7c 4 613 237
+91f80 4 611 237
+91f84 8 434 224
+91f8c 4 435 224
+91f90 8 440 224
+91f98 8 75 215
+91fa0 8 90 215
+91fa8 8 77 215
+91fb0 c 90 215
+91fbc c 442 224
+91fc8 4 64 239
+91fcc 4 444 224
+91fd0 c 96 239
+91fdc 4 97 239
+91fe0 8 319 202
+91fe8 4 97 239
+91fec 8 161 202
+91ff4 4 161 202
+91ff8 8 444 224
+92000 28 445 224
+92028 10 443 224
+92038 1c 235 236
+92054 4 93 215
+92058 4 95 215
+9205c 4 94 215
+92060 8 95 215
+92068 8 135 223
+92070 c 436 224
+9207c 8 437 224
+92084 1c 235 236
+920a0 4 93 215
+920a4 4 95 215
+920a8 4 94 215
+920ac 8 95 215
+920b4 48 234 236
+920fc 24 235 236
+92120 10 444 224
+92130 8 64 239
+92138 c 96 239
+92144 4 97 239
+92148 4 70 213
+9214c 4 97 239
+92150 4 70 213
+92154 10 70 213
+FUNC 92164 34 0 std::num_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_get
+92164 8 571 224
+9216c 4 574 224
+92170 8 571 224
+92178 20 574 224
+FUNC 92198 2a0 0 std::priv::__do_get_float<std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, float, wchar_t>
+92198 10 427 224
+921a8 4 145 212
+921ac 14 427 224
+921c0 8 145 212
+921c8 4 427 224
+921cc 8 427 224
+921d4 4 145 212
+921d8 24 351 219
+921fc 4 108 213
+92200 4 351 219
+92204 c 108 213
+92210 4 41 213
+92214 4 108 213
+92218 14 41 213
+9222c 4 101 206
+92230 4 41 213
+92234 4 613 237
+92238 14 434 224
+9224c 4 612 237
+92250 4 613 237
+92254 4 611 237
+92258 8 434 224
+92260 4 435 224
+92264 8 440 224
+9226c 8 75 215
+92274 8 90 215
+9227c 8 77 215
+92284 c 90 215
+92290 c 442 224
+9229c 4 64 239
+922a0 4 444 224
+922a4 c 96 239
+922b0 4 97 239
+922b4 8 319 202
+922bc 4 97 239
+922c0 8 161 202
+922c8 4 161 202
+922cc 8 444 224
+922d4 28 445 224
+922fc 10 443 224
+9230c 1c 235 236
+92328 4 93 215
+9232c 4 95 215
+92330 4 94 215
+92334 8 95 215
+9233c 8 135 223
+92344 c 436 224
+92350 8 437 224
+92358 1c 235 236
+92374 4 93 215
+92378 4 95 215
+9237c 4 94 215
+92380 8 95 215
+92388 48 234 236
+923d0 24 235 236
+923f4 10 444 224
+92404 8 64 239
+9240c c 96 239
+92418 4 97 239
+9241c 4 70 213
+92420 4 97 239
+92424 4 70 213
+92428 10 70 213
+FUNC 92438 34 0 std::num_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_get
+92438 8 564 224
+92440 4 567 224
+92444 8 564 224
+9244c 20 567 224
+FUNC 9246c 4f4 0 std::priv::__copy_sign<std::istreambuf_iterator<char, std::char_traits<char> >, char>
+9246c 1c 297 224
+92488 20 297 224
+924a8 4 75 215
+924ac c 90 215
+924b8 4 77 215
+924bc c 90 215
+924c8 8 299 224
+924d0 4 90 215
+924d4 8 301 224
+924dc 8 303 224
+924e4 4 308 224
+924e8 4 309 224
+924ec 4 308 224
+924f0 4 309 224
+924f4 4 308 224
+924f8 1c 309 224
+92514 10 235 236
+92524 20 234 236
+92544 18 235 236
+9255c 18 235 236
+92574 8 95 215
+9257c 18 235 236
+92594 4 95 215
+92598 8 301 224
+925a0 10 229 236
+925b0 8 228 236
+925b8 4 165 239
+925bc 8 69 215
+925c4 4 64 239
+925c8 8 74 239
+925d0 10 74 239
+925e0 c 535 238
+925ec 4 101 206
+925f0 c 232 247
+925fc 4 539 238
+92600 8 229 236
+92608 8 539 238
+92610 8 229 236
+92618 8 228 236
+92620 c 69 215
+9262c 24 234 236
+92650 8 95 215
+92658 20 234 236
+92678 c 95 215
+92684 4 235 236
+92688 4 95 215
+9268c 18 235 236
+926a4 4 228 236
+926a8 10 229 236
+926b8 4 228 236
+926bc 10 229 236
+926cc 4 400 238
+926d0 14 304 238
+926e4 4 306 238
+926e8 10 307 238
+926f8 4 64 213
+926fc 4 67 213
+92700 4 64 213
+92704 58 86 244
+9275c 20 146 206
+9277c 4 86 244
+92780 4 146 206
+92784 10 86 244
+92794 4 146 206
+92798 c 86 244
+927a4 4 146 206
+927a8 c 86 244
+927b4 4 146 206
+927b8 c 86 244
+927c4 4 146 206
+927c8 c 86 244
+927d4 4 146 206
+927d8 c 86 244
+927e4 4 146 206
+927e8 c 86 244
+927f4 4 146 206
+927f8 c 86 244
+92804 4 146 206
+92808 c 86 244
+92814 4 146 206
+92818 c 86 244
+92824 4 146 206
+92828 c 86 244
+92834 4 146 206
+92838 c 86 244
+92844 4 146 206
+92848 c 86 244
+92854 4 146 206
+92858 8 86 244
+92860 8 146 206
+92868 4 101 206
+9286c 4 64 239
+92870 c 96 239
+9287c 8 97 239
+92884 8 319 202
+9288c 8 97 239
+92894 8 161 202
+9289c 8 161 202
+928a4 4 175 237
+928a8 4 164 239
+928ac 4 160 239
+928b0 10 165 239
+928c0 c 95 215
+928cc 24 235 236
+928f0 14 74 239
+92904 4 308 238
+92908 24 134 223
+9292c 8 86 244
+92934 8 146 206
+9293c c 86 244
+92948 c 135 223
+92954 8 86 244
+9295c 4 305 238
+FUNC 92960 7b8 0 std::priv::__read_float<std::istreambuf_iterator<char, std::char_traits<char> >, char>
+92960 10 368 224
+92970 4 58 228
+92974 4 368 224
+92978 4 58 228
+9297c 8 368 224
+92984 4 58 228
+92988 8 368 224
+92990 8 58 228
+92998 c 368 224
+929a4 4 58 228
+929a8 c 368 224
+929b4 4 368 224
+929b8 4 58 228
+929bc 14 56 228
+929d0 8 57 228
+929d8 4 56 228
+929dc c 57 228
+929e8 18 393 224
+92a00 8 393 224
+92a08 8 396 224
+92a10 8 393 224
+92a18 4 396 224
+92a1c 10 393 224
+92a2c 8 396 224
+92a34 8 338 224
+92a3c 8 339 224
+92a44 10 338 224
+92a54 4 336 224
+92a58 8 338 224
+92a60 4 75 215
+92a64 8 90 215
+92a6c 4 77 215
+92a70 8 90 215
+92a78 10 341 224
+92a88 c 90 215
+92a94 8 42 224
+92a9c 4 39 224
+92aa0 c 344 224
+92aac 4 64 239
+92ab0 8 74 239
+92ab8 10 74 239
+92ac8 c 535 238
+92ad4 4 101 206
+92ad8 4 352 224
+92adc 8 350 224
+92ae4 4 352 224
+92ae8 4 232 247
+92aec c 539 238
+92af8 4 68 215
+92afc 10 229 236
+92b0c 8 228 236
+92b14 8 69 215
+92b1c 14 235 236
+92b30 4 95 215
+92b34 c 341 224
+92b40 10 359 224
+92b50 8 360 224
+92b58 10 361 224
+92b68 10 120 215
+92b78 4 403 224
+92b7c 8 90 215
+92b84 10 403 224
+92b94 4 375 224
+92b98 4 410 224
+92b9c 4 413 224
+92ba0 4 96 239
+92ba4 4 64 239
+92ba8 c 96 239
+92bb4 10 97 239
+92bc4 30 423 224
+92bf4 14 235 236
+92c08 4 93 215
+92c0c 4 95 215
+92c10 4 94 215
+92c14 8 95 215
+92c1c 18 234 236
+92c34 4 95 215
+92c38 8 234 236
+92c40 4 68 215
+92c44 8 346 224
+92c4c 4 347 224
+92c50 10 229 236
+92c60 4 228 236
+92c64 c 229 236
+92c70 8 69 215
+92c78 4 92 215
+92c7c 14 235 236
+92c90 4 95 215
+92c94 4 93 215
+92c98 4 94 215
+92c9c 8 95 215
+92ca4 4 400 238
+92ca8 14 304 238
+92cbc 4 306 238
+92cc0 4 307 238
+92cc4 4 306 238
+92cc8 c 307 238
+92cd4 4 64 213
+92cd8 4 67 213
+92cdc 8 64 213
+92ce4 40 234 236
+92d24 14 74 239
+92d38 8 308 238
+92d40 18 134 223
+92d58 58 86 244
+92db0 20 146 206
+92dd0 4 86 244
+92dd4 4 146 206
+92dd8 10 86 244
+92de8 4 146 206
+92dec c 86 244
+92df8 4 146 206
+92dfc c 86 244
+92e08 4 146 206
+92e0c c 86 244
+92e18 4 146 206
+92e1c c 86 244
+92e28 4 146 206
+92e2c c 86 244
+92e38 4 146 206
+92e3c c 86 244
+92e48 4 146 206
+92e4c c 86 244
+92e58 4 146 206
+92e5c c 86 244
+92e68 4 146 206
+92e6c c 86 244
+92e78 4 146 206
+92e7c c 86 244
+92e88 4 146 206
+92e8c c 86 244
+92e98 4 146 206
+92e9c c 86 244
+92ea8 4 146 206
+92eac 8 86 244
+92eb4 c 146 206
+92ec0 8 101 206
+92ec8 4 64 239
+92ecc c 96 239
+92ed8 8 97 239
+92ee0 8 70 213
+92ee8 8 70 213
+92ef0 4 175 237
+92ef4 8 164 239
+92efc 4 165 239
+92f00 4 175 237
+92f04 8 160 239
+92f0c c 404 224
+92f18 4 68 215
+92f1c 10 229 236
+92f2c 8 228 236
+92f34 4 406 224
+92f38 4 69 215
+92f3c 14 406 224
+92f50 4 410 224
+92f54 4 413 224
+92f58 10 120 215
+92f68 4 413 224
+92f6c 8 90 215
+92f74 4 66 215
+92f78 8 413 224
+92f80 8 413 224
+92f88 c 414 224
+92f94 4 68 215
+92f98 10 229 236
+92fa8 8 228 236
+92fb0 4 416 224
+92fb4 4 69 215
+92fb8 18 416 224
+92fd0 4 416 224
+92fd4 4 416 224
+92fd8 4 416 224
+92fdc 8 417 224
+92fe4 14 416 224
+92ff8 18 417 224
+93010 14 403 224
+93024 c 235 236
+93030 8 95 215
+93038 8 235 236
+93040 8 86 244
+93048 8 146 206
+93050 c 86 244
+9305c 14 235 236
+93070 18 400 224
+93088 24 235 236
+930ac 10 86 244
+930bc 4 66 215
+930c0 8 413 224
+930c8 1c 90 215
+930e4 4 64 239
+930e8 10 96 239
+930f8 1c 97 239
+93114 4 305 238
+FUNC 93118 298 0 std::priv::__do_get_float<std::istreambuf_iterator<char, std::char_traits<char> >, long double, char>
+93118 10 427 224
+93128 4 145 212
+9312c 14 427 224
+93140 8 145 212
+93148 4 427 224
+9314c 8 427 224
+93154 4 145 212
+93158 24 351 219
+9317c 4 108 213
+93180 4 351 219
+93184 c 108 213
+93190 4 41 213
+93194 4 108 213
+93198 14 41 213
+931ac 4 101 206
+931b0 4 41 213
+931b4 4 613 237
+931b8 14 434 224
+931cc 4 612 237
+931d0 4 613 237
+931d4 4 611 237
+931d8 8 434 224
+931e0 4 435 224
+931e4 8 440 224
+931ec 8 75 215
+931f4 8 90 215
+931fc 8 77 215
+93204 c 90 215
+93210 c 442 224
+9321c 4 64 239
+93220 4 444 224
+93224 c 96 239
+93230 4 97 239
+93234 8 319 202
+9323c 4 97 239
+93240 8 161 202
+93248 4 161 202
+9324c 8 444 224
+93254 28 445 224
+9327c 10 443 224
+9328c 14 235 236
+932a0 4 93 215
+932a4 4 95 215
+932a8 4 94 215
+932ac 8 95 215
+932b4 8 135 223
+932bc c 436 224
+932c8 8 437 224
+932d0 14 235 236
+932e4 4 93 215
+932e8 4 95 215
+932ec 4 94 215
+932f0 8 95 215
+932f8 48 234 236
+93340 2c 235 236
+9336c 10 444 224
+9337c 8 64 239
+93384 c 96 239
+93390 4 97 239
+93394 4 70 213
+93398 4 97 239
+9339c 4 70 213
+933a0 10 70 213
+FUNC 933b0 34 0 std::num_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::do_get
+933b0 8 579 224
+933b8 4 582 224
+933bc 8 579 224
+933c4 20 582 224
+FUNC 933e4 298 0 std::priv::__do_get_float<std::istreambuf_iterator<char, std::char_traits<char> >, double, char>
+933e4 10 427 224
+933f4 4 145 212
+933f8 14 427 224
+9340c 8 145 212
+93414 4 427 224
+93418 8 427 224
+93420 4 145 212
+93424 24 351 219
+93448 4 108 213
+9344c 4 351 219
+93450 c 108 213
+9345c 4 41 213
+93460 4 108 213
+93464 14 41 213
+93478 4 101 206
+9347c 4 41 213
+93480 4 613 237
+93484 14 434 224
+93498 4 612 237
+9349c 4 613 237
+934a0 4 611 237
+934a4 8 434 224
+934ac 4 435 224
+934b0 8 440 224
+934b8 8 75 215
+934c0 8 90 215
+934c8 8 77 215
+934d0 c 90 215
+934dc c 442 224
+934e8 4 64 239
+934ec 4 444 224
+934f0 c 96 239
+934fc 4 97 239
+93500 8 319 202
+93508 4 97 239
+9350c 8 161 202
+93514 4 161 202
+93518 8 444 224
+93520 28 445 224
+93548 10 443 224
+93558 14 235 236
+9356c 4 93 215
+93570 4 95 215
+93574 4 94 215
+93578 8 95 215
+93580 8 135 223
+93588 c 436 224
+93594 8 437 224
+9359c 14 235 236
+935b0 4 93 215
+935b4 4 95 215
+935b8 4 94 215
+935bc 8 95 215
+935c4 48 234 236
+9360c 2c 235 236
+93638 10 444 224
+93648 8 64 239
+93650 c 96 239
+9365c 4 97 239
+93660 4 70 213
+93664 4 97 239
+93668 4 70 213
+9366c 10 70 213
+FUNC 9367c 34 0 std::num_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::do_get
+9367c 8 571 224
+93684 4 574 224
+93688 8 571 224
+93690 20 574 224
+FUNC 936b0 298 0 std::priv::__do_get_float<std::istreambuf_iterator<char, std::char_traits<char> >, float, char>
+936b0 10 427 224
+936c0 4 145 212
+936c4 14 427 224
+936d8 8 145 212
+936e0 4 427 224
+936e4 8 427 224
+936ec 4 145 212
+936f0 24 351 219
+93714 4 108 213
+93718 4 351 219
+9371c c 108 213
+93728 4 41 213
+9372c 4 108 213
+93730 14 41 213
+93744 4 101 206
+93748 4 41 213
+9374c 4 613 237
+93750 14 434 224
+93764 4 612 237
+93768 4 613 237
+9376c 4 611 237
+93770 8 434 224
+93778 4 435 224
+9377c 8 440 224
+93784 8 75 215
+9378c 8 90 215
+93794 8 77 215
+9379c c 90 215
+937a8 c 442 224
+937b4 4 64 239
+937b8 4 444 224
+937bc c 96 239
+937c8 4 97 239
+937cc 8 319 202
+937d4 4 97 239
+937d8 8 161 202
+937e0 4 161 202
+937e4 8 444 224
+937ec 28 445 224
+93814 10 443 224
+93824 14 235 236
+93838 4 93 215
+9383c 4 95 215
+93840 4 94 215
+93844 8 95 215
+9384c 8 135 223
+93854 c 436 224
+93860 8 437 224
+93868 14 235 236
+9387c 4 93 215
+93880 4 95 215
+93884 4 94 215
+93888 8 95 215
+93890 48 234 236
+938d8 2c 235 236
+93904 10 444 224
+93914 8 64 239
+9391c c 96 239
+93928 4 97 239
+9392c 4 70 213
+93930 4 97 239
+93934 4 70 213
+93938 10 70 213
+FUNC 93948 34 0 std::num_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::do_get
+93948 8 564 224
+93950 4 567 224
+93954 8 564 224
+9395c 20 567 224
+FUNC 9397c 4c8 0 std::priv::__copy_integer_and_fill<char, std::ostreambuf_iterator<char, std::char_traits<char> > >
+9397c 4 148 226
+93980 4 152 226
+93984 14 148 226
+93998 10 148 226
+939a8 4 152 226
+939ac 4 161 226
+939b0 4 159 226
+939b4 8 163 226
+939bc 10 167 226
+939cc 4 167 226
+939d0 14 167 226
+939e4 c 173 226
+939f0 10 173 226
+93a00 18 480 201
+93a18 4 62 230
+93a1c 4 200 236
+93a20 4 199 236
+93a24 4 200 236
+93a28 4 199 236
+93a2c 8 200 236
+93a34 8 199 236
+93a3c 8 480 201
+93a44 4 182 226
+93a48 4 213 201
+93a4c 4 182 226
+93a50 14 213 201
+93a64 8 199 236
+93a6c 4 215 201
+93a70 8 213 201
+93a78 4 214 201
+93a7c 4 62 230
+93a80 4 200 236
+93a84 4 199 236
+93a88 4 200 236
+93a8c 4 199 236
+93a90 8 200 236
+93a98 4 199 236
+93a9c 4 223 247
+93aa0 c 199 236
+93aac 4 200 236
+93ab0 4 215 201
+93ab4 4 200 236
+93ab8 8 62 230
+93ac0 14 213 201
+93ad4 18 186 226
+93aec 4 199 236
+93af0 4 223 247
+93af4 c 199 236
+93b00 c 200 236
+93b0c c 62 230
+93b18 20 213 201
+93b38 8 199 236
+93b40 4 215 201
+93b44 8 213 201
+93b4c 4 214 201
+93b50 4 62 230
+93b54 4 200 236
+93b58 4 199 236
+93b5c 4 200 236
+93b60 4 199 236
+93b64 8 200 236
+93b6c 4 199 236
+93b70 4 223 247
+93b74 c 199 236
+93b80 8 200 236
+93b88 c 62 230
+93b94 c 169 226
+93ba0 14 480 201
+93bb4 4 62 230
+93bb8 4 200 236
+93bbc 4 199 236
+93bc0 4 200 236
+93bc4 4 199 236
+93bc8 8 200 236
+93bd0 8 199 236
+93bd8 8 480 201
+93be0 8 171 226
+93be8 4 213 201
+93bec 8 170 226
+93bf4 1c 213 201
+93c10 8 199 236
+93c18 4 215 201
+93c1c 8 213 201
+93c24 4 214 201
+93c28 4 62 230
+93c2c 4 200 236
+93c30 4 199 236
+93c34 4 200 236
+93c38 4 199 236
+93c3c 8 200 236
+93c44 4 199 236
+93c48 4 223 247
+93c4c c 199 236
+93c58 8 200 236
+93c60 c 62 230
+93c6c 4 199 236
+93c70 4 223 247
+93c74 c 199 236
+93c80 c 200 236
+93c8c c 62 230
+93c98 20 213 201
+93cb8 8 199 236
+93cc0 4 215 201
+93cc4 8 213 201
+93ccc 4 214 201
+93cd0 4 62 230
+93cd4 4 200 236
+93cd8 4 199 236
+93cdc 4 200 236
+93ce0 4 199 236
+93ce4 8 200 236
+93cec 4 199 236
+93cf0 4 223 247
+93cf4 c 199 236
+93d00 c 200 236
+93d0c c 62 230
+93d18 4 164 226
+93d1c 4 480 201
+93d20 4 164 226
+93d24 c 480 201
+93d30 4 62 230
+93d34 4 200 236
+93d38 4 199 236
+93d3c 4 200 236
+93d40 4 199 236
+93d44 8 200 236
+93d4c 8 199 236
+93d54 c 480 201
+93d60 4 199 236
+93d64 4 223 247
+93d68 c 199 236
+93d74 c 200 236
+93d80 c 62 230
+93d8c 10 176 226
+93d9c 10 177 226
+93dac 14 480 201
+93dc0 4 62 230
+93dc4 4 200 236
+93dc8 4 199 236
+93dcc 4 200 236
+93dd0 4 199 236
+93dd4 8 200 236
+93ddc 8 199 236
+93de4 8 480 201
+93dec 10 285 201
+93dfc 8 178 226
+93e04 14 285 201
+93e18 4 199 236
+93e1c 4 223 247
+93e20 c 199 236
+93e2c c 200 236
+93e38 c 62 230
+FUNC 93e44 1e8 0 std::priv::__put_integer<std::ostreambuf_iterator<char, std::char_traits<char> > >
+93e44 28 232 226
+93e6c 4 145 212
+93e70 4 235 226
+93e74 8 145 212
+93e7c c 232 226
+93e88 c 232 226
+93e94 4 145 212
+93e98 14 351 219
+93eac 4 237 226
+93eb0 4 58 228
+93eb4 4 237 226
+93eb8 14 58 228
+93ecc 10 240 226
+93edc 4 249 226
+93ee0 4 242 226
+93ee4 4 224 201
+93ee8 8 57 228
+93ef0 4 255 226
+93ef4 c 57 228
+93f00 20 256 226
+93f20 4 254 226
+93f24 4 260 226
+93f28 4 138 212
+93f2c 4 260 226
+93f30 4 139 212
+93f34 24 260 226
+93f58 4 64 239
+93f5c 4 260 226
+93f60 c 96 239
+93f6c 8 97 239
+93f74 8 161 202
+93f7c 4 161 202
+93f80 30 261 226
+93fb0 c 243 226
+93fbc 8 246 226
+93fc4 4 224 201
+93fc8 14 224 201
+93fdc 8 135 223
+93fe4 8 244 226
+93fec 8 64 239
+93ff4 c 96 239
+94000 1c 97 239
+9401c 10 237 226
+FUNC 9402c a4 0 std::priv::__do_put_integer<char, std::ostreambuf_iterator<char, std::char_traits<char> >, long unsigned int>
+9402c 14 372 226
+94040 10 372 226
+94050 4 307 226
+94054 4 309 226
+94058 4 308 226
+9405c 4 309 226
+94060 4 308 226
+94064 4 309 226
+94068 4 310 226
+9406c 4 308 226
+94070 4 309 226
+94074 14 381 226
+94088 38 382 226
+940c0 10 310 226
+FUNC 940d0 1fc 0 std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::do_put
+940d0 c 475 226
+940dc 4 145 212
+940e0 8 475 226
+940e8 4 145 212
+940ec 4 475 226
+940f0 4 145 212
+940f4 c 475 226
+94100 4 475 226
+94104 4 145 212
+94108 18 351 219
+94120 c 477 226
+9412c 4 124 212
+94130 4 139 212
+94134 4 123 212
+94138 4 139 212
+9413c 8 124 212
+94144 4 484 226
+94148 c 101 207
+94154 4 506 226
+94158 c 101 207
+94164 14 506 226
+94178 4 112 212
+9417c 18 514 226
+94194 4 488 226
+94198 8 488 226
+941a0 18 101 207
+941b8 4 62 230
+941bc 10 200 236
+941cc c 199 236
+941d8 18 101 207
+941f0 10 200 236
+94200 10 199 236
+94210 c 139 212
+9421c c 488 226
+94228 1c 101 207
+94244 18 199 236
+9425c 8 200 236
+94264 8 62 230
+9426c 1c 101 207
+94288 4 199 236
+9428c 4 223 247
+94290 14 199 236
+942a4 8 200 236
+942ac 10 62 230
+942bc 10 477 226
+FUNC 942cc 28 0 std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::do_put
+942cc 4 438 226
+942d0 8 440 226
+942d8 4 438 226
+942dc c 440 226
+942e8 c 440 226
+FUNC 942f4 a8 0 std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::do_put
+942f4 18 465 226
+9430c 10 465 226
+9431c 4 307 226
+94320 4 309 226
+94324 4 308 226
+94328 4 309 226
+9432c 4 308 226
+94330 4 309 226
+94334 4 310 226
+94338 4 309 226
+9433c 4 308 226
+94340 18 381 226
+94358 34 467 226
+9438c 10 310 226
+FUNC 9439c 70 0 std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::do_put
+9439c 10 459 226
+943ac 8 380 226
+943b4 4 459 226
+943b8 4 380 226
+943bc 8 459 226
+943c4 4 380 226
+943c8 4 459 226
+943cc 4 380 226
+943d0 4 459 226
+943d4 8 380 226
+943dc 1c 381 226
+943f8 14 461 226
+FUNC 9440c 70 0 std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::do_put
+9440c 10 432 226
+9441c 8 380 226
+94424 4 432 226
+94428 4 380 226
+9442c 8 432 226
+94434 4 380 226
+94438 4 432 226
+9443c 4 380 226
+94440 4 432 226
+94444 8 380 226
+9444c 1c 381 226
+94468 14 434 226
+FUNC 9447c 420 0 std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::_M_append
+9447c 4 196 237
+94480 4 197 237
+94484 10 196 237
+94494 4 196 237
+94498 4 197 237
+9449c 4 64 239
+944a0 8 198 237
+944a8 8 74 239
+944b0 10 74 239
+944c0 8 199 237
+944c8 4 210 237
+944cc 4 211 237
+944d0 8 86 244
+944d8 58 86 244
+94530 24 146 206
+94554 4 86 244
+94558 4 146 206
+9455c 10 86 244
+9456c 4 146 206
+94570 8 86 244
+94578 4 146 206
+9457c 4 101 206
+94580 8 212 237
+94588 4 267 247
+9458c 4 214 237
+94590 18 218 237
+945a8 4 400 238
+945ac 4 304 238
+945b0 4 400 238
+945b4 18 304 238
+945cc 4 306 238
+945d0 10 307 238
+945e0 8 346 202
+945e8 4 347 202
+945ec 8 158 202
+945f4 30 158 202
+94624 58 86 244
+9467c 24 146 206
+946a0 4 86 244
+946a4 4 146 206
+946a8 10 86 244
+946b8 4 146 206
+946bc c 86 244
+946c8 8 146 206
+946d0 58 86 244
+94728 24 146 206
+9474c 4 86 244
+94750 4 146 206
+94754 10 86 244
+94764 4 146 206
+94768 8 86 244
+94770 8 146 206
+94778 4 101 206
+9477c c 96 239
+94788 8 97 239
+94790 8 161 202
+94798 8 161 202
+947a0 4 160 239
+947a4 4 218 237
+947a8 4 165 239
+947ac 4 164 239
+947b0 14 218 237
+947c4 c 347 202
+947d0 1c 134 223
+947ec 4 146 206
+947f0 8 86 244
+947f8 4 101 206
+947fc 8 212 237
+94804 4 267 247
+94808 8 214 237
+94810 20 74 239
+94830 8 86 244
+94838 8 146 206
+94840 14 86 244
+94854 8 146 206
+9485c 14 86 244
+94870 c 135 223
+9487c 4 346 202
+94880 8 356 202
+94888 8 86 244
+94890 c 600 237
+FUNC 9489c 1d0 0 std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::_M_reserve
+9489c 4 170 237
+948a0 4 342 202
+948a4 c 170 237
+948b0 4 342 202
+948b4 4 170 237
+948b8 4 342 202
+948bc 4 346 202
+948c0 8 347 202
+948c8 8 158 202
+948d0 c 158 202
+948dc 10 352 202
+948ec c 86 244
+948f8 58 86 244
+94950 24 146 206
+94974 4 86 244
+94978 4 146 206
+9497c 10 86 244
+9498c 4 146 206
+94990 8 86 244
+94998 8 146 206
+949a0 4 101 206
+949a4 c 96 239
+949b0 8 97 239
+949b8 8 161 202
+949c0 8 161 202
+949c8 4 160 239
+949cc 4 164 239
+949d0 4 165 239
+949d4 10 176 237
+949e4 c 134 223
+949f0 8 86 244
+949f8 8 146 206
+94a00 c 86 244
+94a0c 8 135 223
+94a14 4 160 239
+94a18 4 164 239
+94a1c 4 165 239
+94a20 10 176 237
+94a30 4 346 202
+94a34 8 356 202
+94a3c 8 86 244
+94a44 c 343 202
+94a50 4 343 202
+94a54 18 343 202
+FUNC 94a6c 4c4 0 std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::assign
+94a6c 18 222 237
+94a84 4 400 238
+94a88 8 222 237
+94a90 4 400 238
+94a94 4 222 237
+94a98 4 400 238
+94a9c 8 222 237
+94aa4 8 223 237
+94aac 4 72 239
+94ab0 4 64 239
+94ab4 4 72 239
+94ab8 10 72 239
+94ac8 8 228 237
+94ad0 14 261 247
+94ae4 8 400 238
+94aec 8 181 237
+94af4 20 238 237
+94b14 4 608 237
+94b18 4 120 239
+94b1c 4 608 237
+94b20 4 120 239
+94b24 4 481 202
+94b28 4 247 238
+94b2c 4 608 237
+94b30 c 610 237
+94b3c 4 314 244
+94b40 4 249 244
+94b44 4 314 244
+94b48 30 249 244
+94b78 20 146 206
+94b98 4 249 244
+94b9c 4 146 206
+94ba0 8 249 244
+94ba8 4 146 206
+94bac 8 249 244
+94bb4 4 146 206
+94bb8 4 248 238
+94bbc 4 64 239
+94bc0 10 101 206
+94bd0 28 171 239
+94bf8 8 170 239
+94c00 8 185 239
+94c08 4 92 201
+94c0c 4 91 201
+94c10 4 92 201
+94c14 4 93 201
+94c18 4 92 201
+94c1c 4 91 201
+94c20 4 92 201
+94c24 4 93 201
+94c28 4 92 201
+94c2c 4 91 201
+94c30 4 92 201
+94c34 4 93 201
+94c38 4 64 239
+94c3c c 96 239
+94c48 8 97 239
+94c50 8 161 202
+94c58 8 161 202
+94c60 c 600 237
+94c6c 14 261 247
+94c80 8 225 237
+94c88 8 803 238
+94c90 c 249 247
+94c9c 4 806 238
+94ca0 4 249 247
+94ca4 4 238 237
+94ca8 4 806 238
+94cac 4 238 237
+94cb0 8 806 238
+94cb8 18 238 237
+94cd0 14 91 201
+94ce4 10 92 201
+94cf4 10 93 201
+94d04 4 174 239
+94d08 4 173 239
+94d0c 8 174 239
+94d14 4 175 239
+94d18 4 174 239
+94d1c 8 175 239
+94d24 4 178 239
+94d28 8 179 239
+94d30 4 249 244
+94d34 4 249 244
+94d38 4 249 244
+94d3c 4 146 206
+94d40 8 249 244
+94d48 8 72 239
+94d50 c 342 202
+94d5c 8 347 202
+94d64 4 158 202
+94d68 4 347 202
+94d6c 4 158 202
+94d70 8 158 202
+94d78 4 352 202
+94d7c 4 613 237
+94d80 4 611 237
+94d84 14 613 237
+94d98 10 182 237
+94da8 8 74 239
+94db0 c 74 239
+94dbc 8 184 237
+94dc4 8 186 237
+94dcc 4 249 244
+94dd0 30 249 244
+94e00 20 146 206
+94e20 4 249 244
+94e24 4 146 206
+94e28 8 249 244
+94e30 4 146 206
+94e34 8 249 244
+94e3c 4 146 206
+94e40 4 187 237
+94e44 8 238 237
+94e4c 4 101 206
+94e50 4 187 237
+94e54 4 267 247
+94e58 4 238 237
+94e5c 4 189 237
+94e60 14 238 237
+94e74 8 134 223
+94e7c 14 135 223
+94e90 4 306 238
+94e94 14 307 238
+94ea8 10 185 237
+94eb8 c 189 239
+94ec4 4 187 239
+94ec8 4 188 239
+94ecc 4 189 239
+94ed0 4 193 239
+94ed4 4 192 239
+94ed8 c 193 239
+94ee4 4 194 239
+94ee8 4 195 239
+94eec 8 196 239
+94ef4 c 74 239
+94f00 8 308 238
+94f08 c 343 202
+94f14 4 343 202
+94f18 18 343 202
+FUNC 94f30 7f4 0 std::priv::__get_monetary_value<std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::back_insert_iterator<std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >, wchar_t>
+94f30 20 62 221
+94f50 4 112 215
+94f54 14 62 221
+94f68 18 62 221
+94f80 8 112 215
+94f88 4 66 221
+94f8c 8 90 215
+94f94 1c 184 207
+94fb0 4 66 221
+94fb4 4 67 221
+94fb8 28 118 221
+94fe0 4 70 221
+94fe4 4 70 221
+94fe8 1c 70 221
+95004 4 81 221
+95008 10 95 215
+95018 4 75 215
+9501c 8 90 215
+95024 8 77 215
+9502c c 90 215
+95038 c 73 221
+95044 c 90 215
+95050 18 184 207
+95068 4 74 221
+9506c 4 78 221
+95070 c 90 215
+9507c 8 79 221
+95084 4 68 215
+95088 8 80 221
+95090 10 229 236
+950a0 c 228 236
+950ac 4 69 215
+950b0 4 80 221
+950b4 8 81 221
+950bc 1c 235 236
+950d8 4 93 215
+950dc 4 73 221
+950e0 4 94 215
+950e4 4 95 215
+950e8 14 73 221
+950fc 8 90 221
+95104 c 93 221
+95110 8 94 221
+95118 4 97 221
+9511c 4 96 221
+95120 10 112 215
+95130 4 99 221
+95134 8 90 215
+9513c 10 99 221
+9514c 14 100 221
+95160 4 307 238
+95164 8 267 247
+9516c 4 535 238
+95170 4 267 247
+95174 8 101 206
+9517c 4 100 221
+95180 4 267 247
+95184 4 539 238
+95188 4 100 221
+9518c 4 64 239
+95190 8 74 239
+95198 c 74 239
+951a4 8 535 238
+951ac 14 400 238
+951c0 4 306 238
+951c4 10 307 238
+951d4 10 536 238
+951e4 4 76 221
+951e8 4 75 221
+951ec 4 76 221
+951f0 4 75 221
+951f4 4 76 221
+951f8 8 90 215
+95200 4 64 239
+95204 4 66 215
+95208 8 74 239
+95210 14 74 239
+95224 8 535 238
+9522c 4 267 247
+95230 8 101 206
+95238 4 267 247
+9523c 8 539 238
+95244 4 92 215
+95248 1c 235 236
+95264 4 93 215
+95268 4 94 215
+9526c 8 95 215
+95274 1c 235 236
+95290 4 93 215
+95294 4 94 215
+95298 8 95 215
+952a0 4 92 215
+952a4 1c 235 236
+952c0 4 93 215
+952c4 4 94 215
+952c8 8 95 215
+952d0 4 228 236
+952d4 1c 229 236
+952f0 48 234 236
+95338 4 64 239
+9533c 4 66 215
+95340 8 74 239
+95348 10 74 239
+95358 8 535 238
+95360 14 400 238
+95374 4 306 238
+95378 14 307 238
+9538c 18 536 238
+953a4 20 234 236
+953c4 8 91 221
+953cc 4 68 215
+953d0 10 229 236
+953e0 10 228 236
+953f0 4 69 215
+953f4 4 108 221
+953f8 8 95 215
+95400 4 75 215
+95404 8 90 215
+9540c 8 77 215
+95414 c 90 215
+95420 c 110 221
+9542c 8 90 215
+95434 1c 184 207
+95450 4 110 221
+95454 10 115 221
+95464 4 115 221
+95468 4 117 221
+9546c 1c 235 236
+95488 4 93 215
+9548c 4 94 215
+95490 8 95 215
+95498 8 111 221
+954a0 4 90 215
+954a4 8 111 221
+954ac 4 90 215
+954b0 4 64 239
+954b4 8 74 239
+954bc 14 74 239
+954d0 8 535 238
+954d8 4 267 247
+954dc 8 101 206
+954e4 4 112 221
+954e8 4 267 247
+954ec 8 539 238
+954f4 14 235 236
+95508 4 93 215
+9550c 4 64 239
+95510 8 74 239
+95518 10 74 239
+95528 8 535 238
+95530 14 400 238
+95544 4 306 238
+95548 14 307 238
+9555c 10 536 238
+9556c 1c 235 236
+95588 4 93 215
+9558c 4 94 215
+95590 14 95 215
+955a4 3c 234 236
+955e0 10 74 239
+955f0 8 308 238
+955f8 14 234 236
+9560c 8 235 236
+95614 8 93 215
+9561c 1c 234 236
+95638 18 308 238
+95650 1c 184 207
+9566c 8 66 221
+95674 28 235 236
+9569c 14 90 221
+956b0 8 94 221
+956b8 40 235 236
+956f8 8 70 221
+95700 24 235 236
+FUNC 95724 b48 0 std::priv::__money_do_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >
+95724 48 122 221
+9576c c 122 221
+95778 8 112 215
+95780 4 122 221
+95784 8 112 215
+9578c 4 125 221
+95790 4 126 221
+95794 4 127 221
+95798 8 126 221
+957a0 3c 272 221
+957dc 14 145 212
+957f0 3c 351 219
+9582c 8 143 221
+95834 10 220 222
+95844 4 143 221
+95848 c 217 222
+95854 8 143 221
+9585c 10 217 222
+9586c 18 216 222
+95884 c 120 239
+95890 4 171 216
+95894 4 120 239
+95898 4 149 221
+9589c 8 120 239
+958a4 8 149 221
+958ac 4 154 221
+958b0 4 481 202
+958b4 4 154 221
+958b8 4 101 206
+958bc 4 154 221
+958c0 8 220 221
+958c8 8 214 222
+958d0 24 154 221
+958f4 10 181 222
+95904 4 143 221
+95908 c 178 222
+95914 8 143 221
+9591c 10 178 222
+9592c 1c 177 222
+95948 10 112 215
+95958 4 176 221
+9595c 10 177 221
+9596c 14 179 221
+95980 c 192 221
+9598c 8 153 221
+95994 14 244 221
+959a8 4 400 238
+959ac 8 245 221
+959b4 14 247 221
+959c8 10 248 221
+959d8 4 249 221
+959dc 8 248 221
+959e4 4 249 221
+959e8 c 250 221
+959f4 4 252 221
+959f8 10 112 215
+95a08 4 268 221
+95a0c c 269 221
+95a18 4 271 221
+95a1c 4 96 239
+95a20 4 64 239
+95a24 c 96 239
+95a30 18 97 239
+95a48 4 64 239
+95a4c c 96 239
+95a58 14 97 239
+95a6c 8 64 239
+95a74 c 96 239
+95a80 18 97 239
+95a98 c 271 221
+95aa4 8 167 221
+95aac 14 176 222
+95ac0 18 169 221
+95ad8 1c 170 221
+95af4 8 171 221
+95afc 4 64 239
+95b00 8 172 221
+95b08 4 64 239
+95b0c 8 172 221
+95b14 4 96 239
+95b18 c 172 221
+95b24 8 96 239
+95b2c 18 97 239
+95b44 10 90 215
+95b54 1c 184 207
+95b70 4 156 221
+95b74 4 68 215
+95b78 10 229 236
+95b88 c 228 236
+95b94 4 69 215
+95b98 4 95 215
+95b9c 4 75 215
+95ba0 8 90 215
+95ba8 8 77 215
+95bb0 c 90 215
+95bbc c 162 221
+95bc8 c 90 215
+95bd4 18 184 207
+95bec 4 162 221
+95bf0 4 68 215
+95bf4 10 229 236
+95c04 c 228 236
+95c10 8 69 215
+95c18 1c 235 236
+95c34 4 93 215
+95c38 4 94 215
+95c3c 8 95 215
+95c44 8 215 221
+95c4c 10 173 222
+95c5c 4 179 222
+95c60 4 173 222
+95c64 c 179 222
+95c70 4 175 222
+95c74 4 179 222
+95c78 10 175 222
+95c88 c 220 221
+95c94 10 225 221
+95ca4 8 225 221
+95cac 10 174 222
+95cbc 4 213 222
+95cc0 28 227 221
+95ce8 4 232 221
+95cec 4 227 221
+95cf0 8 232 221
+95cf8 c 233 221
+95d04 4 234 221
+95d08 8 64 239
+95d10 c 96 239
+95d1c 18 97 239
+95d34 10 95 215
+95d44 4 92 215
+95d48 1c 235 236
+95d64 4 93 215
+95d68 4 94 215
+95d6c 8 95 215
+95d74 4 228 236
+95d78 c 229 236
+95d84 8 69 215
+95d8c 1c 235 236
+95da8 4 93 215
+95dac 4 94 215
+95db0 8 95 215
+95db8 54 234 236
+95e0c 44 235 236
+95e50 4 400 238
+95e54 8 256 221
+95e5c 14 258 221
+95e70 10 259 221
+95e80 4 260 221
+95e84 8 259 221
+95e8c 4 260 221
+95e90 c 261 221
+95e9c 4 263 221
+95ea0 18 206 207
+95eb8 c 359 238
+95ec4 18 517 238
+95edc 8 263 221
+95ee4 10 212 222
+95ef4 4 218 222
+95ef8 4 212 222
+95efc c 218 222
+95f08 4 214 222
+95f0c 4 218 222
+95f10 14 214 222
+95f24 1c 215 222
+95f40 c 187 221
+95f4c 8 90 215
+95f54 4 66 215
+95f58 14 197 221
+95f6c c 201 221
+95f78 8 90 215
+95f80 c 203 221
+95f8c 4 68 215
+95f90 10 229 236
+95fa0 8 228 236
+95fa8 8 69 215
+95fb0 1c 213 222
+95fcc 14 69 215
+95fe0 c 243 237
+95fec 4 400 238
+95ff0 4 249 247
+95ff4 8 400 238
+95ffc 8 244 237
+96004 8 249 247
+9600c 10 246 237
+9601c 8 803 238
+96024 c 249 247
+96030 4 806 238
+96034 4 249 247
+96038 10 806 238
+96048 4 68 215
+9604c 10 229 236
+9605c 4 228 236
+96060 4 69 215
+96064 18 228 236
+9607c 4 249 247
+96080 4 400 238
+96084 4 250 237
+96088 c 400 238
+96094 14 250 237
+960a8 c 188 221
+960b4 8 90 215
+960bc 18 190 221
+960d4 20 69 215
+960f4 8 225 221
+960fc 8 157 221
+96104 c 158 221
+96110 8 69 215
+96118 8 235 221
+96120 4 96 239
+96124 4 64 239
+96128 4 236 221
+9612c c 96 239
+96138 2c 97 239
+96164 4 64 239
+96168 10 96 239
+96178 18 97 239
+96190 4 96 239
+96194 4 64 239
+96198 c 96 239
+961a4 18 97 239
+961bc 4 64 239
+961c0 c 96 239
+961cc 14 97 239
+961e0 8 64 239
+961e8 c 96 239
+961f4 18 97 239
+9620c 24 271 221
+96230 4 64 239
+96234 10 96 239
+96244 28 97 239
+FUNC 9626c 54 0 std::money_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_get
+9626c 4 304 221
+96270 14 308 221
+96284 8 304 221
+9628c 4 308 221
+96290 4 307 221
+96294 4 307 221
+96298 4 308 221
+9629c 4 307 221
+962a0 10 308 221
+962b0 10 309 221
+FUNC 962c0 154 0 std::money_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_get
+962c0 4 279 221
+962c4 4 284 221
+962c8 4 283 221
+962cc 8 279 221
+962d4 4 283 221
+962d8 4 279 221
+962dc 4 120 239
+962e0 4 279 221
+962e4 4 283 221
+962e8 4 284 221
+962ec 4 279 221
+962f0 4 284 221
+962f4 4 279 221
+962f8 1c 284 221
+96314 4 120 239
+96318 4 481 202
+9631c 4 101 206
+96320 4 284 221
+96324 4 286 221
+96328 10 284 221
+96338 c 286 221
+96344 4 287 221
+96348 4 289 221
+9634c 8 287 221
+96354 4 289 221
+96358 14 292 221
+9636c 8 294 221
+96374 4 64 239
+96378 c 96 239
+96384 8 97 239
+9638c 8 161 202
+96394 4 161 202
+96398 20 300 221
+963b8 18 295 221
+963d0 c 289 221
+963dc 8 135 223
+963e4 8 64 239
+963ec c 96 239
+963f8 1c 97 239
+FUNC 96414 504 0 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::assign
+96414 20 222 237
+96434 4 400 238
+96438 4 222 237
+9643c 4 400 238
+96440 8 223 237
+96448 4 72 239
+9644c 4 64 239
+96450 4 72 239
+96454 c 72 239
+96460 8 228 237
+96468 4 120 239
+9646c 8 124 239
+96474 4 120 239
+96478 4 481 202
+9647c 8 124 239
+96484 4 249 244
+96488 4 249 244
+9648c 4 314 244
+96490 28 249 244
+964b8 20 146 206
+964d8 4 249 244
+964dc 4 146 206
+964e0 8 249 244
+964e8 4 146 206
+964ec 8 249 244
+964f4 4 146 206
+964f8 8 249 244
+96500 4 146 206
+96504 8 249 244
+9650c 4 146 206
+96510 8 249 244
+96518 4 146 206
+9651c 8 249 244
+96524 4 146 206
+96528 8 249 244
+96530 4 146 206
+96534 8 249 244
+9653c 4 146 206
+96540 8 249 244
+96548 4 146 206
+9654c 8 249 244
+96554 4 146 206
+96558 8 249 244
+96560 4 146 206
+96564 8 249 244
+9656c 4 146 206
+96570 8 249 244
+96578 4 146 206
+9657c 8 249 244
+96584 4 146 206
+96588 4 248 238
+9658c 4 64 239
+96590 18 101 206
+965a8 28 171 239
+965d0 8 170 239
+965d8 8 185 239
+965e0 4 92 201
+965e4 4 91 201
+965e8 4 92 201
+965ec 4 93 201
+965f0 4 92 201
+965f4 4 91 201
+965f8 4 92 201
+965fc 4 93 201
+96600 4 92 201
+96604 4 91 201
+96608 4 92 201
+9660c 4 93 201
+96610 4 64 239
+96614 c 96 239
+96620 8 97 239
+96628 8 161 202
+96630 8 161 202
+96638 10 235 247
+96648 4 400 238
+9664c 8 181 237
+96654 18 238 237
+9666c c 235 247
+96678 c 225 237
+96684 8 803 238
+9668c 4 168 247
+96690 4 806 238
+96694 4 168 247
+96698 4 806 238
+9669c 4 238 237
+966a0 8 806 238
+966a8 14 238 237
+966bc 4 92 201
+966c0 4 91 201
+966c4 4 92 201
+966c8 4 91 201
+966cc 8 92 201
+966d4 8 93 201
+966dc c 174 239
+966e8 4 173 239
+966ec c 174 239
+966f8 c 175 239
+96704 4 178 239
+96708 8 91 201
+96710 8 179 239
+96718 8 72 239
+96720 10 182 237
+96730 8 74 239
+96738 8 74 239
+96740 c 184 237
+9674c 8 186 237
+96754 4 249 244
+96758 4 249 244
+9675c 2c 249 244
+96788 20 146 206
+967a8 4 249 244
+967ac 4 146 206
+967b0 8 249 244
+967b8 4 146 206
+967bc 8 249 244
+967c4 4 146 206
+967c8 8 249 244
+967d0 4 146 206
+967d4 8 249 244
+967dc 4 146 206
+967e0 8 249 244
+967e8 4 146 206
+967ec 8 249 244
+967f4 4 146 206
+967f8 8 249 244
+96800 4 146 206
+96804 8 249 244
+9680c 4 146 206
+96810 8 249 244
+96818 4 146 206
+9681c 8 249 244
+96824 4 146 206
+96828 8 249 244
+96830 4 146 206
+96834 8 249 244
+9683c 4 146 206
+96840 8 249 244
+96848 4 146 206
+9684c 8 249 244
+96854 8 146 206
+9685c 8 101 206
+96864 4 232 247
+96868 4 189 237
+9686c 4 238 237
+96870 8 189 237
+96878 14 238 237
+9688c 14 135 223
+968a0 4 306 238
+968a4 10 307 238
+968b4 10 185 237
+968c4 4 189 239
+968c8 4 188 239
+968cc 4 189 239
+968d0 4 187 239
+968d4 8 189 239
+968dc 4 192 239
+968e0 10 193 239
+968f0 4 194 239
+968f4 4 195 239
+968f8 8 196 239
+96900 c 74 239
+9690c 8 308 238
+96914 4 183 237
+FUNC 96918 7cc 0 std::priv::__get_monetary_value<std::istreambuf_iterator<char, std::char_traits<char> >, std::back_insert_iterator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, char>
+96918 1c 62 221
+96934 4 112 215
+96938 20 62 221
+96958 10 62 221
+96968 8 112 215
+96970 4 66 221
+96974 8 90 215
+9697c c 79 207
+96988 4 66 221
+9698c 4 67 221
+96990 20 118 221
+969b0 4 70 221
+969b4 4 70 221
+969b8 18 70 221
+969d0 4 81 221
+969d4 8 95 215
+969dc 4 75 215
+969e0 8 90 215
+969e8 8 77 215
+969f0 c 90 215
+969fc c 73 221
+96a08 10 90 215
+96a18 8 79 207
+96a20 8 74 221
+96a28 4 78 221
+96a2c 8 90 215
+96a34 8 79 221
+96a3c 4 68 215
+96a40 8 80 221
+96a48 10 229 236
+96a58 8 228 236
+96a60 4 69 215
+96a64 4 80 221
+96a68 8 81 221
+96a70 14 235 236
+96a84 4 93 215
+96a88 4 73 221
+96a8c 4 94 215
+96a90 4 95 215
+96a94 14 73 221
+96aa8 8 90 221
+96ab0 c 93 221
+96abc 8 94 221
+96ac4 4 97 221
+96ac8 4 96 221
+96acc 10 112 215
+96adc 4 99 221
+96ae0 8 90 215
+96ae8 10 99 221
+96af8 14 100 221
+96b0c 8 232 247
+96b14 8 101 206
+96b1c 8 100 221
+96b24 4 232 247
+96b28 c 539 238
+96b34 4 100 221
+96b38 4 64 239
+96b3c 8 74 239
+96b44 8 74 239
+96b4c c 535 238
+96b58 4 400 238
+96b5c 14 304 238
+96b70 4 306 238
+96b74 10 307 238
+96b84 10 536 238
+96b94 4 75 221
+96b98 4 76 221
+96b9c 4 75 221
+96ba0 4 76 221
+96ba4 4 90 215
+96ba8 8 76 221
+96bb0 4 90 215
+96bb4 4 64 239
+96bb8 8 74 239
+96bc0 10 74 239
+96bd0 c 535 238
+96bdc 8 101 206
+96be4 4 232 247
+96be8 14 539 238
+96bfc 4 92 215
+96c00 18 235 236
+96c18 4 93 215
+96c1c 4 94 215
+96c20 8 95 215
+96c28 14 235 236
+96c3c 4 93 215
+96c40 4 94 215
+96c44 8 95 215
+96c4c 4 92 215
+96c50 14 235 236
+96c64 4 93 215
+96c68 4 94 215
+96c6c 8 95 215
+96c74 8 228 236
+96c7c 14 229 236
+96c90 3c 234 236
+96ccc 10 235 236
+96cdc 8 64 239
+96ce4 8 74 239
+96cec 8 74 239
+96cf4 4 535 238
+96cf8 4 74 239
+96cfc 8 535 238
+96d04 4 400 238
+96d08 14 304 238
+96d1c 4 306 238
+96d20 10 307 238
+96d30 18 536 238
+96d48 1c 234 236
+96d64 8 91 221
+96d6c 4 68 215
+96d70 10 229 236
+96d80 c 228 236
+96d8c 4 69 215
+96d90 4 108 221
+96d94 8 95 215
+96d9c 4 75 215
+96da0 8 90 215
+96da8 8 77 215
+96db0 c 90 215
+96dbc c 110 221
+96dc8 8 90 215
+96dd0 c 79 207
+96ddc 4 110 221
+96de0 c 115 221
+96dec 4 117 221
+96df0 4 115 221
+96df4 4 115 221
+96df8 20 118 221
+96e18 14 235 236
+96e2c 4 93 215
+96e30 4 94 215
+96e34 8 95 215
+96e3c 8 111 221
+96e44 4 90 215
+96e48 8 111 221
+96e50 4 90 215
+96e54 4 64 239
+96e58 8 74 239
+96e60 10 74 239
+96e70 c 535 238
+96e7c 4 101 206
+96e80 8 112 221
+96e88 4 232 247
+96e8c 14 539 238
+96ea0 10 235 236
+96eb0 8 64 239
+96eb8 8 74 239
+96ec0 8 74 239
+96ec8 4 535 238
+96ecc 4 74 239
+96ed0 8 535 238
+96ed8 4 400 238
+96edc 14 304 238
+96ef0 4 306 238
+96ef4 10 307 238
+96f04 10 536 238
+96f14 14 235 236
+96f28 4 93 215
+96f2c 4 94 215
+96f30 14 95 215
+96f44 38 234 236
+96f7c c 74 239
+96f88 8 308 238
+96f90 14 234 236
+96fa4 c 235 236
+96fb0 1c 234 236
+96fcc 8 102 221
+96fd4 10 308 238
+96fe4 14 234 236
+96ff8 14 235 236
+9700c c 79 207
+97018 8 66 221
+97020 28 235 236
+97048 14 90 221
+9705c 8 94 221
+97064 4c 235 236
+970b0 8 70 221
+970b8 28 235 236
+970e0 4 305 238
+FUNC 970e4 a44 0 std::priv::__money_do_get<char, std::istreambuf_iterator<char, std::char_traits<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >
+970e4 34 122 221
+97118 8 122 221
+97120 4 112 215
+97124 14 122 221
+97138 10 112 215
+97148 4 125 221
+9714c 4 126 221
+97150 4 127 221
+97154 8 126 221
+9715c 3c 272 221
+97198 10 145 212
+971a8 3c 351 219
+971e4 8 143 221
+971ec 10 140 222
+971fc 8 137 222
+97204 4 143 221
+97208 14 137 222
+9721c 1c 136 222
+97238 4 149 221
+9723c c 120 239
+97248 c 149 221
+97254 4 481 202
+97258 4 120 239
+9725c 8 171 216
+97264 8 154 221
+9726c 8 101 206
+97274 4 154 221
+97278 8 227 221
+97280 8 134 222
+97288 24 154 221
+972ac 10 100 222
+972bc 8 97 222
+972c4 4 143 221
+972c8 14 97 222
+972dc 20 96 222
+972fc 10 112 215
+9730c 4 176 221
+97310 10 177 221
+97320 10 179 221
+97330 c 192 221
+9733c 8 153 221
+97344 14 244 221
+97358 4 400 238
+9735c 8 245 221
+97364 14 247 221
+97378 10 248 221
+97388 4 249 221
+9738c 8 248 221
+97394 4 249 221
+97398 c 250 221
+973a4 4 252 221
+973a8 10 112 215
+973b8 4 268 221
+973bc c 269 221
+973c8 4 271 221
+973cc 4 96 239
+973d0 4 64 239
+973d4 c 96 239
+973e0 10 97 239
+973f0 4 64 239
+973f4 10 96 239
+97404 10 97 239
+97414 4 96 239
+97418 4 64 239
+9741c c 96 239
+97428 10 97 239
+97438 c 271 221
+97444 8 167 221
+9744c 14 95 222
+97460 18 169 221
+97478 1c 170 221
+97494 8 171 221
+9749c 4 64 239
+974a0 4 172 221
+974a4 4 64 239
+974a8 8 172 221
+974b0 4 96 239
+974b4 10 172 221
+974c4 8 96 239
+974cc 14 97 239
+974e0 8 90 215
+974e8 c 79 207
+974f4 4 156 221
+974f8 4 68 215
+974fc 10 229 236
+9750c c 228 236
+97518 4 69 215
+9751c 4 95 215
+97520 4 75 215
+97524 8 90 215
+9752c 8 77 215
+97534 c 90 215
+97540 c 162 221
+9754c 10 90 215
+9755c 8 79 207
+97564 4 162 221
+97568 4 68 215
+9756c 10 229 236
+9757c c 228 236
+97588 8 69 215
+97590 14 235 236
+975a4 4 93 215
+975a8 4 94 215
+975ac 8 95 215
+975b4 8 215 221
+975bc 10 92 222
+975cc 4 98 222
+975d0 8 92 222
+975d8 c 98 222
+975e4 4 94 222
+975e8 4 98 222
+975ec 10 94 222
+975fc 4 220 221
+97600 4 225 221
+97604 4 220 221
+97608 c 225 221
+97614 8 225 221
+9761c 10 93 222
+9762c 4 133 222
+97630 24 227 221
+97654 4 232 221
+97658 4 227 221
+9765c 4 232 221
+97660 c 233 221
+9766c 4 234 221
+97670 8 64 239
+97678 10 96 239
+97688 10 95 215
+97698 4 228 236
+9769c c 229 236
+976a8 8 69 215
+976b0 4 92 215
+976b4 18 235 236
+976cc 4 93 215
+976d0 4 94 215
+976d4 8 95 215
+976dc 14 235 236
+976f0 4 93 215
+976f4 4 94 215
+976f8 8 95 215
+97700 58 234 236
+97758 4c 235 236
+977a4 4 400 238
+977a8 8 256 221
+977b0 14 258 221
+977c4 10 259 221
+977d4 4 260 221
+977d8 8 259 221
+977e0 4 260 221
+977e4 c 261 221
+977f0 4 263 221
+977f4 18 101 207
+9780c c 359 238
+97818 18 517 238
+97830 8 263 221
+97838 1c 135 222
+97854 c 187 221
+97860 8 90 215
+97868 4 66 215
+9786c 10 197 221
+9787c c 201 221
+97888 8 90 215
+97890 c 203 221
+9789c 4 68 215
+978a0 10 229 236
+978b0 8 228 236
+978b8 8 69 215
+978c0 10 132 222
+978d0 4 138 222
+978d4 8 132 222
+978dc c 138 222
+978e8 4 134 222
+978ec 4 138 222
+978f0 14 134 222
+97904 28 133 222
+9792c 8 69 215
+97934 14 349 238
+97948 4 68 215
+9794c 10 229 236
+9795c 4 228 236
+97960 4 69 215
+97964 1c 228 236
+97980 c 188 221
+9798c 8 90 215
+97994 18 190 221
+979ac 1c 69 215
+979c8 c 225 221
+979d4 8 69 215
+979dc 8 157 221
+979e4 8 158 221
+979ec 8 235 221
+979f4 4 96 239
+979f8 4 64 239
+979fc 4 236 221
+97a00 c 96 239
+97a0c 28 97 239
+97a34 4 96 239
+97a38 4 64 239
+97a3c c 96 239
+97a48 10 97 239
+97a58 1c 271 221
+97a74 4 96 239
+97a78 4 64 239
+97a7c c 96 239
+97a88 10 97 239
+97a98 4 64 239
+97a9c 10 96 239
+97aac 18 97 239
+97ac4 4 64 239
+97ac8 10 96 239
+97ad8 1c 97 239
+97af4 4 64 239
+97af8 10 96 239
+97b08 20 97 239
+FUNC 97b28 54 0 std::money_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::do_get
+97b28 4 304 221
+97b2c 14 308 221
+97b40 8 304 221
+97b48 4 308 221
+97b4c 4 307 221
+97b50 4 307 221
+97b54 4 308 221
+97b58 4 307 221
+97b5c 10 308 221
+97b6c 10 309 221
+FUNC 97b7c 154 0 std::money_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::do_get
+97b7c 4 279 221
+97b80 4 284 221
+97b84 4 283 221
+97b88 8 279 221
+97b90 4 283 221
+97b94 4 279 221
+97b98 4 120 239
+97b9c 4 279 221
+97ba0 4 283 221
+97ba4 4 284 221
+97ba8 4 279 221
+97bac 4 284 221
+97bb0 4 279 221
+97bb4 1c 284 221
+97bd0 4 120 239
+97bd4 4 481 202
+97bd8 4 101 206
+97bdc 4 284 221
+97be0 4 286 221
+97be4 c 284 221
+97bf0 4 286 221
+97bf4 8 284 221
+97bfc 8 286 221
+97c04 4 287 221
+97c08 4 289 221
+97c0c 4 287 221
+97c10 4 287 221
+97c14 4 289 221
+97c18 14 292 221
+97c2c 8 294 221
+97c34 4 64 239
+97c38 c 96 239
+97c44 8 97 239
+97c4c 8 161 202
+97c54 4 161 202
+97c58 20 300 221
+97c78 18 295 221
+97c90 c 289 221
+97c9c 8 135 223
+97ca4 8 64 239
+97cac c 96 239
+97cb8 18 97 239
+FUNC 97cd0 84 0 std::priv::_String_base<wchar_t, std::allocator<wchar_t> >::_M_allocate_block
+97cd0 4 607 237
+97cd4 8 608 237
+97cdc 8 607 237
+97ce4 4 608 237
+97ce8 4 607 237
+97cec 4 608 237
+97cf0 c 600 237
+97cfc 8 610 237
+97d04 c 623 237
+97d10 8 347 202
+97d18 8 158 202
+97d20 8 158 202
+97d28 4 613 237
+97d2c 4 611 237
+97d30 4 613 237
+97d34 4 612 237
+97d38 8 613 237
+97d40 c 623 237
+97d4c 8 134 223
+FUNC 97d54 9c 0 std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::basic_string
+97d54 14 639 237
+97d68 4 264 247
+97d6c 4 639 237
+97d70 4 112 239
+97d74 4 481 202
+97d78 4 264 247
+97d7c 4 643 237
+97d80 4 378 238
+97d84 10 379 238
+97d94 4 107 244
+97d98 c 106 244
+97da4 4 107 244
+97da8 4 380 238
+97dac 4 101 206
+97db0 10 644 237
+97dc0 8 64 239
+97dc8 c 96 239
+97dd4 1c 97 239
+FUNC 97df0 4 0 std::_STLP_mutex::~_STLP_mutex
+97df0 4 342 241
+FUNC 97df4 58 0 std::__node_alloc_impl::_M_deallocate
+97df4 4 340 176
+97df8 4 341 176
+97dfc 8 340 176
+97e04 4 347 241
+97e08 8 340 176
+97e10 4 347 241
+97e14 10 341 176
+97e24 8 347 241
+97e2c 4 346 176
+97e30 4 349 241
+97e34 4 346 176
+97e38 4 347 176
+97e3c c 353 176
+97e48 4 349 241
+FUNC 97e4c 1d0 0 std::__node_alloc_impl::_S_chunk_alloc
+97e4c 18 365 176
+97e64 8 405 176
+97e6c 4 365 176
+97e70 c 405 176
+97e7c c 365 176
+97e88 8 386 176
+97e90 8 392 176
+97e98 8 405 176
+97ea0 8 377 176
+97ea8 c 386 176
+97eb4 8 387 176
+97ebc 4 389 176
+97ec0 8 388 176
+97ec8 4 389 176
+97ecc c 248 176
+97ed8 4 392 176
+97edc 8 134 223
+97ee4 4 395 176
+97ee8 4 421 176
+97eec 8 426 176
+97ef4 8 421 176
+97efc 4 367 176
+97f00 4 370 176
+97f04 4 367 176
+97f08 4 370 176
+97f0c 8 371 176
+97f14 8 373 176
+97f1c 1c 429 176
+97f38 4 378 176
+97f3c 4 429 176
+97f40 4 378 176
+97f44 c 429 176
+97f50 4 379 176
+97f54 8 381 176
+97f5c 18 429 176
+97f74 4 398 176
+97f78 8 404 176
+97f80 4 406 176
+97f84 8 407 176
+97f8c 4 404 176
+97f90 10 404 176
+97fa0 8 405 176
+97fa8 4 406 176
+97fac 4 405 176
+97fb0 4 407 176
+97fb4 4 408 176
+97fb8 4 410 176
+97fbc 8 411 176
+97fc4 4 408 176
+97fc8 4 409 176
+97fcc 4 410 176
+97fd0 8 411 176
+97fd8 c 398 176
+97fe4 8 134 223
+97fec 4 417 176
+97ff0 4 398 176
+97ff4 c 367 176
+98000 10 407 176
+98010 c 398 176
+FUNC 9801c 84 0 std::__node_alloc_impl::_S_refill
+9801c 4 434 176
+98020 4 435 176
+98024 4 434 176
+98028 4 435 176
+9802c 4 434 176
+98030 4 434 176
+98034 4 435 176
+98038 4 436 176
+9803c c 438 176
+98048 4 440 176
+9804c 4 447 176
+98050 4 440 176
+98054 4 447 176
+98058 4 440 176
+9805c 4 447 176
+98060 4 448 176
+98064 4 447 176
+98068 c 448 176
+98074 4 450 176
+98078 4 448 176
+9807c 4 451 176
+98080 10 448 176
+98090 4 453 176
+98094 c 455 176
+FUNC 980a0 b4 0 std::__node_alloc_impl::_M_allocate
+980a0 18 318 176
+980b8 4 320 176
+980bc 4 347 241
+980c0 4 248 176
+980c4 4 320 176
+980c8 4 347 241
+980cc 8 248 176
+980d4 4 319 176
+980d8 8 320 176
+980e0 4 347 241
+980e4 8 328 176
+980ec 8 329 176
+980f4 8 349 241
+980fc 18 338 176
+98114 c 331 176
+98120 8 349 241
+98128 1c 338 176
+98144 10 349 241
+FUNC 98154 4 0 std::__node_alloc::_M_allocate
+98154 4 743 176
+FUNC 98158 4 0 std::__node_alloc::_M_deallocate
+98158 4 746 176
+FUNC 9815c 124 0 _Locale_init
+9815c 14 58 177
+98170 8 58 177
+98178 c 63 177
+98184 c 63 177
+98190 c 64 177
+9819c 10 64 177
+981ac 8 65 177
+981b4 c 65 177
+981c0 c 66 177
+981cc c 66 177
+981d8 c 67 177
+981e4 c 67 177
+981f0 c 68 177
+981fc c 68 177
+98208 c 69 177
+98214 c 69 177
+98220 c 70 177
+9822c c 70 177
+98238 c 71 177
+98244 14 71 177
+98258 8 72 177
+98260 4 76 177
+98264 c 77 177
+98270 10 76 177
+FUNC 98280 4 0 _Locale_final
+98280 4 80 177
+FUNC 98284 1d0 0 __cxxabiv1::__cxa_call_unexpected
+98284 18 250 159
+9829c 4 250 159
+982a0 4 252 159
+982a4 4 255 159
+982a8 1c 257 159
+982c4 4 263 159
+982c8 4 270 159
+982cc 4 264 159
+982d0 4 265 159
+982d4 4 266 159
+982d8 4 269 159
+982dc 4 270 159
+982e0 4 126 159
+982e4 4 127 159
+982e8 4 272 159
+982ec 4 260 159
+982f0 4 272 159
+982f4 8 273 159
+982fc 4 253 159
+98300 4 278 159
+98304 4 281 159
+98308 4 282 159
+9830c 10 284 159
+9831c c 285 159
+98328 10 286 159
+98338 8 287 159
+98340 8 290 159
+98348 8 291 159
+98350 4 292 159
+98354 4 293 159
+98358 4 292 159
+9835c 4 294 159
+98360 8 300 159
+98368 14 298 159
+9837c 8 300 159
+98384 20 303 159
+983a4 4 302 159
+983a8 24 321 159
+983cc 4 320 159
+983d0 4 322 159
+983d4 4 323 159
+983d8 c 324 159
+983e4 4 324 159
+983e8 14 324 159
+983fc c 295 159
+98408 c 278 159
+98414 4 310 159
+98418 4 311 159
+9841c 8 310 159
+98424 8 311 159
+9842c 4 312 159
+98430 4 313 159
+98434 8 314 159
+9843c 4 315 159
+98440 8 288 159
+98448 4 278 159
+9844c 8 329 159
+FUNC 98454 8 0 __cxxabiv1::__class_type_info::code
+98454 8 153 162
+FUNC 9845c 10 0 __cxxabiv1::__class_type_info::~__class_type_info
+9845c 10 34 160
+FUNC 9846c 30 0 __cxxabiv1::__class_type_info::~__class_type_info
+9846c 10 34 160
+9847c 10 34 160
+9848c 4 36 160
+98490 8 36 160
+98498 4 36 160
+FUNC 9849c 50 0 __cxxabiv1::__class_type_info::walk_to
+9849c c 63 160
+984a8 c 63 160
+984b4 c 70 160
+984c0 4 72 160
+984c4 4 71 160
+984c8 4 73 160
+984cc 4 72 160
+984d0 4 71 160
+984d4 8 73 160
+984dc 4 74 160
+984e0 c 65 160
+FUNC 984ec 50 0 __cxxabiv1::__class_type_info::self_class_type_match
+984ec c 69 160
+984f8 c 69 160
+98504 c 70 160
+98510 4 72 160
+98514 4 71 160
+98518 4 73 160
+9851c 4 72 160
+98520 4 71 160
+98524 8 73 160
+9852c 4 74 160
+98530 c 79 160
+FUNC 9853c 64 0 __cxxabiv1::__UpcastInfo::__UpcastInfo
+9853c 10 82 160
+9854c 18 84 160
+98564 8 87 160
+9856c 1c 87 160
+98588 4 86 160
+9858c 8 88 160
+98594 c 90 160
+FUNC 985a0 c0 0 __cxxabiv1::__class_type_info::can_catch
+985a0 10 39 160
+985b0 c 39 160
+985bc 8 40 160
+985c4 4 40 160
+985c8 4 45 160
+985cc 20 45 160
+985ec 4 46 160
+985f0 14 50 160
+98604 1c 51 160
+98620 c 53 160
+9862c 14 59 160
+98640 4 58 160
+98644 8 57 160
+9864c 14 59 160
+FUNC 98660 30 0 __cxxabiv1::readULEB128
+98660 4 56 164
+98664 4 58 164
+98668 4 57 164
+9866c 4 60 164
+98670 4 62 164
+98674 10 63 164
+98684 4 61 164
+98688 4 66 164
+9868c 4 68 164
+FUNC 98690 48 0 __cxxabiv1::readSLEB128
+98690 4 70 164
+98694 4 72 164
+98698 4 71 164
+9869c 4 74 164
+986a0 4 76 164
+986a4 10 77 164
+986b4 4 75 164
+986b8 4 80 164
+986bc c 81 164
+986c8 c 82 164
+986d4 4 85 164
+FUNC 986d8 1b8 0 __cxxabiv1::readEncodedPointer
+986d8 c 144 164
+986e4 4 144 164
+986e8 8 146 164
+986f0 8 149 164
+986f8 4 151 164
+986fc 4 149 164
+98700 8 151 164
+98708 4 193 164
+9870c 18 151 164
+98724 4 115 164
+98728 4 187 164
+9872c 4 114 164
+98730 4 113 164
+98734 4 115 164
+98738 4 116 164
+9873c 8 117 164
+98744 4 118 164
+98748 4 114 164
+9874c 4 119 164
+98750 4 115 164
+98754 4 120 164
+98758 4 116 164
+9875c 4 117 164
+98760 4 187 164
+98764 4 118 164
+98768 4 120 164
+9876c 10 191 164
+9877c 4 198 164
+98780 4 208 164
+98784 4 209 164
+98788 4 208 164
+9878c c 210 164
+98798 8 199 164
+987a0 c 205 164
+987ac 8 206 164
+987b4 c 90 164
+987c0 4 179 164
+987c4 4 90 164
+987c8 4 178 164
+987cc 4 180 164
+987d0 c 163 164
+987dc 4 164 164
+987e0 4 101 164
+987e4 4 183 164
+987e8 4 100 164
+987ec 4 99 164
+987f0 4 101 164
+987f4 8 102 164
+987fc 4 183 164
+98800 4 100 164
+98804 4 102 164
+98808 4 182 164
+9880c 4 184 164
+98810 4 101 164
+98814 4 171 164
+98818 4 100 164
+9881c 4 99 164
+98820 4 101 164
+98824 8 102 164
+9882c 4 171 164
+98830 4 100 164
+98834 4 170 164
+98838 4 172 164
+9883c c 90 164
+98848 4 167 164
+9884c 4 90 164
+98850 4 166 164
+98854 4 168 164
+98858 8 151 164
+98860 4 62 164
+98864 10 63 164
+98874 4 61 164
+98878 4 66 164
+9887c 4 161 164
+98880 4 147 164
+98884 c 210 164
+FUNC 98890 184 0 base_to_derived_cast
+98890 18 203 165
+988a8 8 205 165
+988b0 4 203 165
+988b4 4 203 165
+988b8 4 204 165
+988bc 8 205 165
+988c4 4 206 165
+988c8 4 207 165
+988cc c 211 165
+988d8 24 221 165
+988fc 4 243 165
+98900 4 57 165
+98904 8 243 165
+9890c 10 245 165
+9891c 4 113 162
+98920 4 103 165
+98924 4 107 165
+98928 14 251 165
+9893c 10 254 165
+9894c 4 243 165
+98950 8 243 165
+98958 4 263 165
+9895c 14 264 165
+98970 8 210 165
+98978 14 211 165
+9898c 8 213 165
+98994 c 215 165
+989a0 4 263 165
+989a4 8 216 165
+989ac 14 264 165
+989c0 8 214 165
+989c8 4 263 165
+989cc 14 264 165
+989e0 20 261 165
+98a00 10 232 165
+98a10 4 233 165
+FUNC 98a14 158 0 walk_object
+98a14 28 119 165
+98a3c 14 120 165
+98a50 24 123 165
+98a74 8 146 165
+98a7c 4 57 165
+98a80 4 146 165
+98a84 10 148 165
+98a94 4 113 162
+98a98 4 103 165
+98a9c 4 107 165
+98aa0 18 155 165
+98ab8 8 157 165
+98ac0 4 159 165
+98ac4 4 161 165
+98ac8 c 165 165
+98ad4 4 146 165
+98ad8 8 146 165
+98ae0 4 169 165
+98ae4 18 176 165
+98afc 2c 173 165
+98b28 4 127 165
+98b2c 18 176 165
+98b44 8 135 165
+98b4c 8 158 165
+98b54 8 121 165
+98b5c 4 121 165
+98b60 c 121 165
+FUNC 98b6c 124 0 __cxxabiv1::__dynamic_cast
+98b6c 10 293 165
+98b7c 4 77 165
+98b80 8 293 165
+98b88 4 48 165
+98b8c 8 293 165
+98b94 4 293 165
+98b98 4 48 165
+98b9c 4 293 165
+98ba0 4 66 165
+98ba4 c 303 165
+98bb0 4 66 165
+98bb4 c 303 165
+98bc0 4 304 165
+98bc4 8 318 165
+98bcc 10 322 165
+98bdc 4 48 165
+98be0 18 355 165
+98bf8 1c 193 165
+98c14 4 329 165
+98c18 c 330 165
+98c24 8 335 165
+98c2c 4 336 165
+98c30 8 335 165
+98c38 8 348 165
+98c40 14 353 165
+98c54 8 354 165
+98c5c 4 305 165
+98c60 20 355 165
+98c80 10 333 165
+FUNC 98c90 94 0 __cxa_guard_acquire
+98c90 c 60 170
+98c9c 4 61 170
+98ca0 4 60 170
+98ca4 4 61 170
+98ca8 4 60 170
+98cac 8 61 170
+98cb4 4 66 170
+98cb8 4 67 170
+98cbc 8 88 170
+98cc4 4 76 170
+98cc8 4 87 170
+98ccc 4 88 170
+98cd0 4 87 170
+98cd4 8 88 170
+98cdc 4 66 170
+98ce0 4 67 170
+98ce4 8 69 170
+98cec 4 70 170
+98cf0 10 90 170
+98d00 4 79 170
+98d04 4 80 170
+98d08 4 79 170
+98d0c 4 80 170
+98d10 4 81 170
+98d14 10 90 170
+FUNC 98d24 48 0 __cxa_guard_release
+98d24 c 93 170
+98d30 4 94 170
+98d34 4 93 170
+98d38 8 94 170
+98d40 4 96 170
+98d44 8 98 170
+98d4c 4 99 170
+98d50 c 100 170
+98d5c 4 102 170
+98d60 8 103 170
+98d68 4 102 170
+FUNC 98d6c 44 0 __cxa_guard_abort
+98d6c c 106 170
+98d78 4 107 170
+98d7c 4 106 170
+98d80 8 107 170
+98d88 4 109 170
+98d8c 4 110 170
+98d90 4 111 170
+98d94 c 112 170
+98da0 4 114 170
+98da4 8 115 170
+98dac 4 114 170
+FUNC 98db0 8 0 __cxxabiv1::__vmi_class_type_info::code
+98db0 8 198 162
+FUNC 98db8 10 0 __cxxabiv1::__vmi_class_type_info::~__vmi_class_type_info
+98db8 10 35 175
+FUNC 98dc8 30 0 __cxxabiv1::__vmi_class_type_info::~__vmi_class_type_info
+98dc8 10 35 175
+98dd8 10 35 175
+98de8 4 37 175
+98dec 8 37 175
+98df4 4 37 175
+FUNC 98df8 270 0 __cxxabiv1::__vmi_class_type_info::walk_to
+98df8 1c 41 175
+98e14 10 41 175
+98e24 c 42 175
+98e30 4 46 175
+98e34 10 46 175
+98e44 4 74 175
+98e48 c 47 175
+98e54 c 48 175
+98e60 4 103 162
+98e64 4 113 162
+98e68 4 49 175
+98e6c 4 107 162
+98e70 4 55 175
+98e74 4 56 175
+98e78 8 59 175
+98e80 8 61 175
+98e88 4 65 175
+98e8c 4 66 175
+98e90 4 65 175
+98e94 1c 74 175
+98eb0 4 74 175
+98eb4 8 83 175
+98ebc 4 86 175
+98ec0 4 88 175
+98ec4 4 92 175
+98ec8 4 92 175
+98ecc 4 92 175
+98ed0 4 111 175
+98ed4 8 114 175
+98edc 4 114 175
+98ee0 8 120 175
+98ee8 10 138 175
+98ef8 4 138 175
+98efc 8 143 175
+98f04 8 143 175
+98f0c 8 146 175
+98f14 8 46 175
+98f1c 8 46 175
+98f24 c 156 175
+98f30 1c 157 175
+98f4c 1c 74 175
+98f68 8 74 175
+98f70 8 120 175
+98f78 8 121 175
+98f80 8 121 175
+98f88 10 126 175
+98f98 4 126 175
+98f9c 8 115 175
+98fa4 4 106 175
+98fa8 1c 157 175
+98fc4 4 92 175
+98fc8 c 93 175
+98fd4 4 94 175
+98fd8 1c 93 175
+98ff4 4 94 175
+98ff8 4 95 175
+98ffc 4 94 175
+99000 8 106 175
+99008 20 111 175
+99028 20 143 175
+99048 20 138 175
+FUNC 99068 8 0 std::priv::stdio_istreambuf::showmanyc
+99068 8 154 196
+FUNC 99070 8 0 std::priv::stdio_ostreambuf::showmanyc
+99070 8 201 196
+FUNC 99078 60 0 std::priv::stdio_streambuf_base::~stdio_streambuf_base
+99078 10 60 196
+99088 4 60 196
+9908c 4 61 196
+99090 8 60 196
+99098 4 61 196
+9909c c 41 235
+990a8 4 62 196
+990ac 4 41 235
+990b0 4 62 196
+990b4 24 41 235
+FUNC 990d8 10 0 std::priv::stdio_istreambuf::~stdio_istreambuf
+990d8 10 151 196
+FUNC 990e8 30 0 std::priv::stdio_istreambuf::~stdio_istreambuf
+990e8 10 151 196
+990f8 10 151 196
+99108 4 151 196
+9910c 8 151 196
+99114 4 151 196
+FUNC 99118 10 0 std::priv::stdio_ostreambuf::~stdio_ostreambuf
+99118 10 198 196
+FUNC 99128 30 0 std::priv::stdio_ostreambuf::~stdio_ostreambuf
+99128 10 198 196
+99138 10 198 196
+99148 4 198 196
+9914c 8 198 196
+99154 4 198 196
+FUNC 99158 24 0 std::priv::stdio_streambuf_base::~stdio_streambuf_base
+99158 c 60 196
+99164 4 60 196
+99168 4 62 196
+9916c 4 62 196
+99170 8 62 196
+99178 4 62 196
+FUNC 9917c 20 0 std::priv::stdio_streambuf_base::sync
+9917c 8 144 196
+99184 c 145 196
+99190 c 146 196
+FUNC 9919c 50 0 std::priv::stdio_streambuf_base::setbuf
+9919c 10 64 196
+991ac 4 64 196
+991b0 4 70 196
+991b4 4 70 196
+991b8 4 70 196
+991bc 4 70 196
+991c0 4 70 196
+991c4 10 73 196
+991d4 4 70 196
+991d8 4 70 196
+991dc 10 73 196
+FUNC 991ec 7c 0 std::priv::stdio_streambuf_base::seekoff
+991ec 4 77 196
+991f0 4 79 196
+991f4 8 77 196
+991fc 14 79 196
+99210 8 109 196
+99218 c 110 196
+99224 8 81 196
+9922c 8 93 196
+99234 4 93 196
+99238 c 95 196
+99244 4 110 196
+99248 8 105 196
+99250 8 110 196
+99258 4 87 196
+9925c 4 88 196
+99260 8 84 196
+FUNC 99268 8 0 std::priv::stdio_istreambuf::uflow
+99268 8 175 196
+FUNC 99270 3c 0 std::priv::stdio_istreambuf::underflow
+99270 c 157 196
+9927c 4 157 196
+99280 8 161 196
+99288 4 163 196
+9928c 4 161 196
+99290 4 163 196
+99294 8 164 196
+9929c 10 169 196
+FUNC 992ac 4c 0 std::priv::stdio_streambuf_base::seekpos
+992ac 8 114 196
+992b4 4 138 196
+992b8 4 114 196
+992bc 4 141 196
+992c0 8 114 196
+992c8 4 138 196
+992cc 8 141 196
+992d4 10 141 196
+992e4 4 142 196
+992e8 4 141 196
+992ec c 142 196
+FUNC 992f8 3c 0 std::priv::stdio_istreambuf::pbackfail
+992f8 4 181 196
+992fc 4 180 196
+99300 4 181 196
+99304 10 182 196
+99314 c 186 196
+99320 4 91 236
+99324 4 182 247
+99328 4 91 236
+9932c 8 193 196
+FUNC 99334 80 0 std::priv::stdio_ostreambuf::overflow
+99334 4 203 196
+99338 4 205 196
+9933c c 203 196
+99348 4 205 196
+9934c 8 227 196
+99354 8 231 196
+9935c 4 227 196
+99360 4 207 196
+99364 4 182 247
+99368 4 207 196
+9936c 8 208 196
+99374 14 231 196
+99388 8 209 196
+99390 14 211 196
+993a4 10 231 196
+FUNC 993b4 60 0 std::priv::stdio_streambuf_base::stdio_streambuf_base
+993b4 4 55 196
+993b8 4 34 235
+993bc 8 55 196
+993c4 4 55 196
+993c8 8 34 235
+993d0 4 55 196
+993d4 20 34 235
+993f4 14 57 196
+99408 c 58 196
+FUNC 99414 10 0 std::codecvt<char, char, mbstate_t>::do_length
+99414 10 34 178
+FUNC 99424 8 0 std::codecvt<char, char, mbstate_t>::do_max_length
+99424 8 37 178
+FUNC 9942c 8 0 std::codecvt<char, char, mbstate_t>::do_always_noconv
+9942c 8 41 178
+FUNC 99434 8 0 std::codecvt<char, char, mbstate_t>::do_encoding
+99434 8 45 178
+FUNC 9943c c 0 std::codecvt<char, char, mbstate_t>::do_unshift
+9943c c 52 178
+FUNC 99448 10 0 std::codecvt<char, char, mbstate_t>::do_in
+99448 10 62 178
+FUNC 99458 10 0 std::codecvt<char, char, mbstate_t>::do_out
+99458 10 72 178
+FUNC 99468 1f4 0 std::codecvt<wchar_t, char, mbstate_t>::do_out
+99468 14 90 178
+9947c 4 91 178
+99480 4 213 201
+99484 4 91 178
+99488 48 213 201
+994d0 64 214 201
+99534 4 213 201
+99538 4 214 201
+9953c 8 213 201
+99544 4 214 201
+99548 4 213 201
+9954c 4 214 201
+99550 4 213 201
+99554 4 214 201
+99558 4 213 201
+9955c 4 214 201
+99560 4 213 201
+99564 4 214 201
+99568 4 213 201
+9956c 4 214 201
+99570 4 213 201
+99574 4 214 201
+99578 4 213 201
+9957c 4 214 201
+99580 4 213 201
+99584 4 214 201
+99588 4 213 201
+9958c 4 214 201
+99590 4 213 201
+99594 4 214 201
+99598 4 213 201
+9959c 4 214 201
+995a0 4 213 201
+995a4 4 214 201
+995a8 4 213 201
+995ac 4 214 201
+995b0 4 213 201
+995b4 4 214 201
+995b8 4 213 201
+995bc 4 214 201
+995c0 4 213 201
+995c4 4 214 201
+995c8 4 213 201
+995cc 4 214 201
+995d0 4 213 201
+995d4 4 214 201
+995d8 4 213 201
+995dc 4 214 201
+995e0 4 213 201
+995e4 4 214 201
+995e8 4 213 201
+995ec 4 214 201
+995f0 4 213 201
+995f4 4 214 201
+995f8 4 213 201
+995fc 4 214 201
+99600 4 213 201
+99604 4 214 201
+99608 4 213 201
+9960c 4 214 201
+99610 4 213 201
+99614 8 214 201
+9961c 4 92 178
+99620 4 93 178
+99624 4 95 178
+99628 4 93 178
+9962c 4 95 178
+99630 4 213 201
+99634 c 214 201
+99640 8 213 201
+99648 4 92 178
+9964c 4 93 178
+99650 4 95 178
+99654 4 93 178
+99658 4 95 178
+FUNC 9965c 1f0 0 std::codecvt<wchar_t, char, mbstate_t>::do_in
+9965c 14 105 178
+99670 8 213 201
+99678 4 107 178
+9967c 44 213 201
+996c0 64 214 201
+99724 4 213 201
+99728 4 214 201
+9972c 8 213 201
+99734 4 214 201
+99738 4 213 201
+9973c 4 214 201
+99740 4 213 201
+99744 4 214 201
+99748 4 213 201
+9974c 4 214 201
+99750 4 213 201
+99754 4 214 201
+99758 4 213 201
+9975c 4 214 201
+99760 4 213 201
+99764 4 214 201
+99768 4 213 201
+9976c 4 214 201
+99770 4 213 201
+99774 4 214 201
+99778 4 213 201
+9977c 4 214 201
+99780 4 213 201
+99784 4 214 201
+99788 4 213 201
+9978c 4 214 201
+99790 4 213 201
+99794 4 214 201
+99798 4 213 201
+9979c 4 214 201
+997a0 4 213 201
+997a4 4 214 201
+997a8 4 213 201
+997ac 4 214 201
+997b0 4 213 201
+997b4 4 214 201
+997b8 4 213 201
+997bc 4 214 201
+997c0 4 213 201
+997c4 4 214 201
+997c8 4 213 201
+997cc 4 214 201
+997d0 4 213 201
+997d4 4 214 201
+997d8 4 213 201
+997dc 4 214 201
+997e0 4 213 201
+997e4 4 214 201
+997e8 4 213 201
+997ec 4 214 201
+997f0 4 213 201
+997f4 4 214 201
+997f8 4 213 201
+997fc 4 214 201
+99800 4 213 201
+99804 8 214 201
+9980c 4 108 178
+99810 4 109 178
+99814 4 111 178
+99818 4 109 178
+9981c 4 111 178
+99820 4 213 201
+99824 c 214 201
+99830 8 213 201
+99838 4 108 178
+9983c 4 109 178
+99840 4 111 178
+99844 4 109 178
+99848 4 111 178
+FUNC 9984c c 0 std::codecvt<wchar_t, char, mbstate_t>::do_unshift
+9984c 4 118 178
+99850 8 120 178
+FUNC 99858 8 0 std::codecvt<wchar_t, char, mbstate_t>::do_encoding
+99858 8 123 178
+FUNC 99860 8 0 std::codecvt<wchar_t, char, mbstate_t>::do_always_noconv
+99860 8 126 178
+FUNC 99868 10 0 std::codecvt<wchar_t, char, mbstate_t>::do_length
+99868 10 132 178
+FUNC 99878 8 0 std::codecvt<wchar_t, char, mbstate_t>::do_max_length
+99878 8 135 178
+FUNC 99880 14 0 std::codecvt<char, char, mbstate_t>::~codecvt
+99880 14 28 178
+FUNC 99894 14 0 std::codecvt<wchar_t, char, mbstate_t>::~codecvt
+99894 14 79 178
+FUNC 998a8 24 0 std::codecvt<char, char, mbstate_t>::~codecvt
+998a8 c 28 178
+998b4 8 28 178
+998bc 4 28 178
+998c0 8 28 178
+998c8 4 28 178
+FUNC 998cc 24 0 std::codecvt<wchar_t, char, mbstate_t>::~codecvt
+998cc c 79 178
+998d8 8 79 178
+998e0 4 79 178
+998e4 8 79 178
+998ec 4 79 178
+FUNC 998f0 24 0 std::collate<char>::do_hash
+998f0 c 37 179
+998fc 8 38 179
+99904 4 37 179
+99908 4 38 179
+9990c 4 37 179
+99910 4 40 179
+FUNC 99914 5c 0 std::collate<wchar_t>::do_compare
+99914 14 80 200
+99928 10 81 200
+99938 4 85 200
+9993c 4 87 200
+99940 4 88 200
+99944 10 80 200
+99954 8 91 200
+9995c 4 50 179
+99960 4 83 200
+99964 4 50 179
+99968 4 86 200
+9996c 4 50 179
+FUNC 99970 24 0 std::collate<wchar_t>::do_hash
+99970 c 57 179
+9997c 8 58 179
+99984 4 57 179
+99988 4 58 179
+9998c 4 57 179
+99990 4 60 179
+FUNC 99994 14 0 std::collate<char>::~collate
+99994 14 26 179
+FUNC 999a8 14 0 std::collate<wchar_t>::~collate
+999a8 14 45 179
+FUNC 999bc 24 0 std::collate<char>::~collate
+999bc c 26 179
+999c8 8 26 179
+999d0 4 26 179
+999d4 8 26 179
+999dc 4 26 179
+FUNC 999e0 24 0 std::collate<wchar_t>::~collate
+999e0 c 45 179
+999ec 8 45 179
+999f4 4 45 179
+999f8 8 45 179
+99a00 4 45 179
+FUNC 99a04 48 0 std::collate<char>::do_compare
+99a04 10 30 179
+99a14 4 625 201
+99a18 8 626 201
+99a20 c 627 201
+99a2c 4 629 201
+99a30 8 629 201
+99a38 8 629 201
+99a40 c 30 179
+FUNC 99a4c f4 0 std::collate<char>::do_transform
+99a4c 10 33 179
+99a5c 4 355 217
+99a60 4 33 179
+99a64 4 608 237
+99a68 4 33 179
+99a6c 4 112 239
+99a70 4 33 179
+99a74 4 481 202
+99a78 4 608 237
+99a7c c 600 237
+99a88 c 610 237
+99a94 8 107 244
+99a9c c 106 244
+99aa8 4 107 244
+99aac 4 325 238
+99ab0 4 101 206
+99ab4 14 33 179
+99ac8 4 347 202
+99acc 8 158 202
+99ad4 8 158 202
+99adc 4 613 237
+99ae0 4 158 202
+99ae4 4 611 237
+99ae8 4 613 237
+99aec 4 612 237
+99af0 8 613 237
+99af8 8 134 223
+99b00 8 64 239
+99b08 c 96 239
+99b14 8 97 239
+99b1c 8 161 202
+99b24 10 161 202
+99b34 c 135 223
+FUNC 99b40 108 0 std::collate<wchar_t>::do_transform
+99b40 4 53 179
+99b44 4 608 237
+99b48 14 53 179
+99b5c 4 355 217
+99b60 4 53 179
+99b64 4 355 217
+99b68 4 112 239
+99b6c 4 608 237
+99b70 4 481 202
+99b74 4 324 238
+99b78 4 608 237
+99b7c c 600 237
+99b88 c 610 237
+99b94 8 107 244
+99b9c c 106 244
+99ba8 4 107 244
+99bac 4 325 238
+99bb0 4 101 206
+99bb4 14 53 179
+99bc8 8 347 202
+99bd0 8 158 202
+99bd8 8 158 202
+99be0 4 613 237
+99be4 4 158 202
+99be8 4 611 237
+99bec 4 613 237
+99bf0 4 612 237
+99bf4 c 613 237
+99c00 8 134 223
+99c08 8 64 239
+99c10 c 96 239
+99c1c 8 97 239
+99c24 8 161 202
+99c2c 10 161 202
+99c3c c 135 223
+FUNC 99c48 14 0 std::ctype<char>::do_toupper
+99c48 14 342 180
+FUNC 99c5c 14 0 std::ctype<char>::do_tolower
+99c5c 14 344 180
+FUNC 99c70 2c 0 std::ctype<char>::do_toupper
+99c70 4 347 180
+99c74 8 346 180
+99c7c 4 347 180
+99c80 10 348 180
+99c90 8 347 180
+99c98 4 350 180
+FUNC 99c9c 2c 0 std::ctype<char>::do_tolower
+99c9c 4 352 180
+99ca0 8 351 180
+99ca8 4 352 180
+99cac 10 353 180
+99cbc 8 352 180
+99cc4 4 355 180
+FUNC 99cc8 8 0 std::ctype<char>::do_widen
+99cc8 8 358 180
+FUNC 99cd0 8 0 std::ctype<char>::do_narrow
+99cd0 8 367 180
+FUNC 99cd8 1c 0 std::ctype<wchar_t>::do_toupper
+99cd8 4 426 180
+99cdc 4 424 180
+99ce0 4 426 180
+99ce4 8 425 180
+99cec 4 426 180
+99cf0 4 427 180
+FUNC 99cf4 34 0 std::ctype<wchar_t>::do_toupper
+99cf4 4 431 180
+99cf8 4 430 180
+99cfc 4 433 180
+99d00 4 431 180
+99d04 4 432 180
+99d08 8 434 180
+99d10 8 434 180
+99d18 4 434 180
+99d1c 8 431 180
+99d24 4 437 180
+FUNC 99d28 1c 0 std::ctype<wchar_t>::do_tolower
+99d28 4 441 180
+99d2c 4 439 180
+99d30 4 441 180
+99d34 8 440 180
+99d3c 4 441 180
+99d40 4 442 180
+FUNC 99d44 34 0 std::ctype<wchar_t>::do_tolower
+99d44 4 446 180
+99d48 4 445 180
+99d4c 4 448 180
+99d50 4 446 180
+99d54 4 447 180
+99d58 8 449 180
+99d60 8 449 180
+99d68 4 449 180
+99d6c 8 446 180
+99d74 4 452 180
+FUNC 99d78 8 0 std::ctype<wchar_t>::do_widen
+99d78 8 456 180
+FUNC 99d80 208 0 std::ctype<wchar_t>::do_widen
+99d80 4 461 180
+99d84 4 460 180
+99d88 5c 461 180
+99de4 68 462 180
+99e4c 8 461 180
+99e54 c 462 180
+99e60 8 461 180
+99e68 c 462 180
+99e74 8 461 180
+99e7c c 462 180
+99e88 8 461 180
+99e90 c 462 180
+99e9c 8 461 180
+99ea4 c 462 180
+99eb0 8 461 180
+99eb8 c 462 180
+99ec4 8 461 180
+99ecc c 462 180
+99ed8 8 461 180
+99ee0 c 462 180
+99eec 8 461 180
+99ef4 c 462 180
+99f00 8 461 180
+99f08 c 462 180
+99f14 8 461 180
+99f1c c 462 180
+99f28 8 461 180
+99f30 c 462 180
+99f3c 8 461 180
+99f44 c 462 180
+99f50 8 461 180
+99f58 8 462 180
+99f60 8 464 180
+99f68 8 461 180
+99f70 c 462 180
+99f7c 8 461 180
+99f84 4 464 180
+FUNC 99f88 14 0 std::ctype<wchar_t>::do_narrow
+99f88 8 467 180
+99f90 4 467 180
+99f94 8 467 180
+FUNC 99f9c 30 0 std::ctype<wchar_t>::do_narrow
+99f9c 4 472 180
+99fa0 8 471 180
+99fa8 4 472 180
+99fac 4 473 180
+99fb0 c 474 180
+99fbc 4 472 180
+99fc0 4 474 180
+99fc4 4 472 180
+99fc8 4 478 180
+FUNC 99fcc 44 0 std::ctype<char>::~ctype
+99fcc 10 322 180
+99fdc 8 322 180
+99fe4 4 323 180
+99fe8 8 322 180
+99ff0 4 323 180
+99ff4 8 324 180
+99ffc 4 324 180
+9a000 4 322 180
+9a004 8 325 180
+9a00c 4 322 180
+FUNC 9a010 14 0 std::ctype<wchar_t>::~ctype
+9a010 14 391 180
+FUNC 9a024 24 0 std::ctype<char>::~ctype
+9a024 c 322 180
+9a030 4 322 180
+9a034 4 325 180
+9a038 4 325 180
+9a03c 8 325 180
+9a044 4 325 180
+FUNC 9a048 24 0 std::ctype<wchar_t>::~ctype
+9a048 c 391 180
+9a054 8 391 180
+9a05c 4 391 180
+9a060 8 391 180
+9a068 4 391 180
+FUNC 9a06c 30 0 std::ctype<char>::do_widen
+9a06c c 362 180
+9a078 4 362 180
+9a07c 8 224 201
+9a084 8 224 201
+9a08c 10 365 180
+FUNC 9a09c 30 0 std::ctype<char>::do_narrow
+9a09c c 370 180
+9a0a8 4 370 180
+9a0ac 8 224 201
+9a0b4 8 224 201
+9a0bc 10 373 180
+FUNC 9a0cc c 0 std::ctype<char>::classic_table
+9a0cc 4 192 180
+9a0d0 8 193 180
+FUNC 9a0d8 40 0 std::ctype<wchar_t>::do_is
+9a0d8 8 394 180
+9a0e0 8 394 180
+9a0e8 4 395 180
+9a0ec 4 396 180
+9a0f0 4 396 180
+9a0f4 c 396 180
+9a100 c 396 180
+9a10c c 397 180
+FUNC 9a118 5c 0 std::ctype<wchar_t>::do_is
+9a118 8 400 180
+9a120 c 400 180
+9a12c 4 402 180
+9a130 14 404 180
+9a144 4 405 180
+9a148 4 406 180
+9a14c 4 404 180
+9a150 8 406 180
+9a158 4 406 180
+9a15c 4 406 180
+9a160 8 404 180
+9a168 c 409 180
+FUNC 9a174 184 0 std::ctype<wchar_t>::do_scan_is
+9a174 8 413 180
+9a17c c 413 180
+9a188 4 414 180
+9a18c 8 162 200
+9a194 4 164 200
+9a198 c 162 200
+9a1a4 10 164 200
+9a1b4 4 168 200
+9a1b8 8 385 180
+9a1c0 c 385 180
+9a1cc 4 171 200
+9a1d0 8 385 180
+9a1d8 c 385 180
+9a1e4 4 174 200
+9a1e8 8 385 180
+9a1f0 10 385 180
+9a200 8 164 200
+9a208 4 165 200
+9a20c 8 385 180
+9a214 10 385 180
+9a224 c 415 180
+9a230 4 166 200
+9a234 c 415 180
+9a240 4 169 200
+9a244 c 415 180
+9a250 4 172 200
+9a254 10 415 180
+9a264 8 164 200
+9a26c 14 178 200
+9a280 4 190 200
+9a284 4 178 200
+9a288 4 186 200
+9a28c 4 190 200
+9a290 8 385 180
+9a298 10 385 180
+9a2a8 4 180 200
+9a2ac 8 385 180
+9a2b4 4 181 200
+9a2b8 4 183 200
+9a2bc 8 385 180
+9a2c4 10 385 180
+9a2d4 8 184 200
+9a2dc 14 385 180
+9a2f0 8 164 200
+FUNC 9a2f8 188 0 std::ctype<wchar_t>::do_scan_not
+9a2f8 8 420 180
+9a300 c 420 180
+9a30c 4 421 180
+9a310 4 162 200
+9a314 4 421 180
+9a318 4 162 200
+9a31c 4 164 200
+9a320 c 162 200
+9a32c c 164 200
+9a338 8 385 180
+9a340 10 385 180
+9a350 4 166 200
+9a354 c 385 180
+9a360 14 385 180
+9a374 8 385 180
+9a37c 14 385 180
+9a390 8 385 180
+9a398 10 385 180
+9a3a8 c 164 200
+9a3b4 8 385 180
+9a3bc 10 385 180
+9a3cc 8 385 180
+9a3d4 4 168 200
+9a3d8 8 422 180
+9a3e0 4 165 200
+9a3e4 c 422 180
+9a3f0 8 164 200
+9a3f8 14 178 200
+9a40c 4 190 200
+9a410 8 178 200
+9a418 c 385 180
+9a424 4 385 180
+9a428 10 190 200
+9a438 c 385 180
+9a444 c 385 180
+9a450 8 181 200
+9a458 c 385 180
+9a464 c 385 180
+9a470 8 184 200
+9a478 8 164 200
+FUNC 9a480 78 0 std::ctype<char>::ctype
+9a480 4 316 180
+9a484 4 86 219
+9a488 10 316 180
+9a498 4 86 219
+9a49c 4 316 180
+9a4a0 8 340 241
+9a4a8 4 457 241
+9a4ac 4 316 180
+9a4b0 4 340 241
+9a4b4 18 319 180
+9a4cc 14 319 180
+9a4e0 10 320 180
+9a4f0 8 319 180
+FUNC 9a4f8 8 0 std::moneypunct<char, true>::do_decimal_point
+9a4f8 8 52 190
+FUNC 9a500 8 0 std::moneypunct<char, true>::do_thousands_sep
+9a500 8 53 190
+FUNC 9a508 8 0 std::moneypunct<char, true>::do_pos_format
+9a508 8 58 190
+FUNC 9a510 8 0 std::moneypunct<char, true>::do_neg_format
+9a510 8 59 190
+FUNC 9a518 8 0 std::moneypunct<char, true>::do_frac_digits
+9a518 8 60 190
+FUNC 9a520 8 0 std::moneypunct<char, false>::do_decimal_point
+9a520 8 66 190
+FUNC 9a528 8 0 std::moneypunct<char, false>::do_thousands_sep
+9a528 8 67 190
+FUNC 9a530 8 0 std::moneypunct<char, false>::do_pos_format
+9a530 8 73 190
+FUNC 9a538 8 0 std::moneypunct<char, false>::do_neg_format
+9a538 8 74 190
+FUNC 9a540 8 0 std::moneypunct<char, false>::do_frac_digits
+9a540 8 75 190
+FUNC 9a548 8 0 std::moneypunct<wchar_t, true>::do_decimal_point
+9a548 8 82 190
+FUNC 9a550 8 0 std::moneypunct<wchar_t, true>::do_thousands_sep
+9a550 8 83 190
+FUNC 9a558 8 0 std::moneypunct<wchar_t, true>::do_frac_digits
+9a558 8 92 190
+FUNC 9a560 8 0 std::moneypunct<wchar_t, true>::do_pos_format
+9a560 8 94 190
+FUNC 9a568 8 0 std::moneypunct<wchar_t, true>::do_neg_format
+9a568 8 96 190
+FUNC 9a570 8 0 std::moneypunct<wchar_t, false>::do_decimal_point
+9a570 8 102 190
+FUNC 9a578 8 0 std::moneypunct<wchar_t, false>::do_thousands_sep
+9a578 8 103 190
+FUNC 9a580 8 0 std::moneypunct<wchar_t, false>::do_frac_digits
+9a580 8 111 190
+FUNC 9a588 8 0 std::moneypunct<wchar_t, false>::do_pos_format
+9a588 8 114 190
+FUNC 9a590 8 0 std::moneypunct<wchar_t, false>::do_neg_format
+9a590 8 116 190
+FUNC 9a598 14 0 std::moneypunct<char, true>::~moneypunct
+9a598 14 50 190
+FUNC 9a5ac 14 0 std::moneypunct<char, false>::~moneypunct
+9a5ac 14 64 190
+FUNC 9a5c0 14 0 std::moneypunct<wchar_t, true>::~moneypunct
+9a5c0 14 80 190
+FUNC 9a5d4 14 0 std::moneypunct<wchar_t, false>::~moneypunct
+9a5d4 14 100 190
+FUNC 9a5e8 24 0 std::moneypunct<char, true>::~moneypunct
+9a5e8 c 50 190
+9a5f4 8 50 190
+9a5fc 4 50 190
+9a600 8 50 190
+9a608 4 50 190
+FUNC 9a60c 24 0 std::moneypunct<char, false>::~moneypunct
+9a60c c 64 190
+9a618 8 64 190
+9a620 4 64 190
+9a624 8 64 190
+9a62c 4 64 190
+FUNC 9a630 24 0 std::moneypunct<wchar_t, true>::~moneypunct
+9a630 c 80 190
+9a63c 8 80 190
+9a644 4 80 190
+9a648 8 80 190
+9a650 4 80 190
+FUNC 9a654 24 0 std::moneypunct<wchar_t, false>::~moneypunct
+9a654 c 100 190
+9a660 8 100 190
+9a668 4 100 190
+9a66c 8 100 190
+9a674 4 100 190
+FUNC 9a678 70 0 std::moneypunct<char, true>::moneypunct
+9a678 4 48 190
+9a67c 4 86 219
+9a680 4 340 241
+9a684 8 48 190
+9a68c 4 48 190
+9a690 4 86 219
+9a694 4 340 241
+9a698 4 457 241
+9a69c 4 340 241
+9a6a0 4 48 190
+9a6a4 4 27 190
+9a6a8 4 28 190
+9a6ac 4 30 190
+9a6b0 4 48 190
+9a6b4 4 27 190
+9a6b8 4 28 190
+9a6bc 4 48 190
+9a6c0 4 29 190
+9a6c4 4 48 190
+9a6c8 4 30 190
+9a6cc 4 32 190
+9a6d0 4 33 190
+9a6d4 4 34 190
+9a6d8 4 35 190
+9a6dc c 49 190
+FUNC 9a6e8 70 0 std::moneypunct<char, false>::moneypunct
+9a6e8 4 62 190
+9a6ec 4 86 219
+9a6f0 4 340 241
+9a6f4 8 62 190
+9a6fc 4 62 190
+9a700 4 86 219
+9a704 4 340 241
+9a708 4 457 241
+9a70c 4 340 241
+9a710 4 62 190
+9a714 4 27 190
+9a718 4 28 190
+9a71c 4 30 190
+9a720 4 62 190
+9a724 4 27 190
+9a728 4 28 190
+9a72c 4 62 190
+9a730 4 29 190
+9a734 4 62 190
+9a738 4 30 190
+9a73c 4 32 190
+9a740 4 33 190
+9a744 4 34 190
+9a748 4 35 190
+9a74c c 63 190
+FUNC 9a758 70 0 std::moneypunct<wchar_t, true>::moneypunct
+9a758 4 78 190
+9a75c 4 86 219
+9a760 4 340 241
+9a764 8 78 190
+9a76c 4 78 190
+9a770 4 86 219
+9a774 4 340 241
+9a778 4 457 241
+9a77c 4 340 241
+9a780 4 78 190
+9a784 4 27 190
+9a788 4 28 190
+9a78c 4 30 190
+9a790 4 78 190
+9a794 4 27 190
+9a798 4 28 190
+9a79c 4 78 190
+9a7a0 4 29 190
+9a7a4 4 78 190
+9a7a8 4 30 190
+9a7ac 4 32 190
+9a7b0 4 33 190
+9a7b4 4 34 190
+9a7b8 4 35 190
+9a7bc c 79 190
+FUNC 9a7c8 70 0 std::moneypunct<wchar_t, false>::moneypunct
+9a7c8 4 98 190
+9a7cc 4 86 219
+9a7d0 4 340 241
+9a7d4 8 98 190
+9a7dc 4 98 190
+9a7e0 4 86 219
+9a7e4 4 340 241
+9a7e8 4 457 241
+9a7ec 4 340 241
+9a7f0 4 98 190
+9a7f4 4 27 190
+9a7f8 4 28 190
+9a7fc 4 30 190
+9a800 4 98 190
+9a804 4 27 190
+9a808 4 28 190
+9a80c 4 98 190
+9a810 4 29 190
+9a814 4 98 190
+9a818 4 30 190
+9a81c 4 32 190
+9a820 4 33 190
+9a824 4 34 190
+9a828 4 35 190
+9a82c c 99 190
+FUNC 9a838 30 0 std::moneypunct<char, true>::do_grouping
+9a838 4 54 190
+9a83c 8 54 190
+9a844 4 54 190
+9a848 8 54 190
+9a850 8 54 190
+9a858 10 54 190
+FUNC 9a868 30 0 std::moneypunct<char, true>::do_curr_symbol
+9a868 4 55 190
+9a86c 8 55 190
+9a874 4 55 190
+9a878 8 55 190
+9a880 8 55 190
+9a888 10 55 190
+FUNC 9a898 30 0 std::moneypunct<char, true>::do_positive_sign
+9a898 4 56 190
+9a89c 8 56 190
+9a8a4 4 56 190
+9a8a8 8 56 190
+9a8b0 8 56 190
+9a8b8 10 56 190
+FUNC 9a8c8 30 0 std::moneypunct<char, true>::do_negative_sign
+9a8c8 4 57 190
+9a8cc 8 57 190
+9a8d4 4 57 190
+9a8d8 8 57 190
+9a8e0 8 57 190
+9a8e8 10 57 190
+FUNC 9a8f8 30 0 std::moneypunct<char, false>::do_grouping
+9a8f8 4 69 190
+9a8fc 8 69 190
+9a904 4 69 190
+9a908 8 69 190
+9a910 8 69 190
+9a918 10 69 190
+FUNC 9a928 30 0 std::moneypunct<char, false>::do_curr_symbol
+9a928 4 70 190
+9a92c 8 70 190
+9a934 4 70 190
+9a938 8 70 190
+9a940 8 70 190
+9a948 10 70 190
+FUNC 9a958 30 0 std::moneypunct<char, false>::do_positive_sign
+9a958 4 71 190
+9a95c 8 71 190
+9a964 4 71 190
+9a968 8 71 190
+9a970 8 71 190
+9a978 10 71 190
+FUNC 9a988 30 0 std::moneypunct<char, false>::do_negative_sign
+9a988 4 72 190
+9a98c 8 72 190
+9a994 4 72 190
+9a998 8 72 190
+9a9a0 8 72 190
+9a9a8 10 72 190
+FUNC 9a9b8 30 0 std::moneypunct<wchar_t, true>::do_grouping
+9a9b8 4 84 190
+9a9bc 8 84 190
+9a9c4 4 84 190
+9a9c8 8 84 190
+9a9d0 8 84 190
+9a9d8 10 84 190
+FUNC 9a9e8 30 0 std::moneypunct<wchar_t, false>::do_grouping
+9a9e8 4 104 190
+9a9ec 8 104 190
+9a9f4 4 104 190
+9a9f8 8 104 190
+9aa00 8 104 190
+9aa08 10 104 190
+FUNC 9aa18 30 0 std::moneypunct<wchar_t, true>::do_curr_symbol
+9aa18 4 87 190
+9aa1c 8 87 190
+9aa24 4 87 190
+9aa28 8 87 190
+9aa30 8 87 190
+9aa38 10 87 190
+FUNC 9aa48 30 0 std::moneypunct<wchar_t, true>::do_positive_sign
+9aa48 4 89 190
+9aa4c 8 89 190
+9aa54 4 89 190
+9aa58 8 89 190
+9aa60 8 89 190
+9aa68 10 89 190
+FUNC 9aa78 30 0 std::moneypunct<wchar_t, true>::do_negative_sign
+9aa78 4 91 190
+9aa7c 8 91 190
+9aa84 4 91 190
+9aa88 8 91 190
+9aa90 8 91 190
+9aa98 10 91 190
+FUNC 9aaa8 30 0 std::moneypunct<wchar_t, false>::do_curr_symbol
+9aaa8 4 106 190
+9aaac 8 106 190
+9aab4 4 106 190
+9aab8 8 106 190
+9aac0 8 106 190
+9aac8 10 106 190
+FUNC 9aad8 30 0 std::moneypunct<wchar_t, false>::do_positive_sign
+9aad8 4 108 190
+9aadc 8 108 190
+9aae4 4 108 190
+9aae8 8 108 190
+9aaf0 8 108 190
+9aaf8 10 108 190
+FUNC 9ab08 30 0 std::moneypunct<wchar_t, false>::do_negative_sign
+9ab08 4 110 190
+9ab0c 8 110 190
+9ab14 4 110 190
+9ab18 8 110 190
+9ab20 8 110 190
+9ab28 10 110 190
+FUNC 9ab38 78 0 std::priv::__valid_grouping
+9ab38 18 40 191
+9ab50 8 42 191
+9ab58 8 44 191
+9ab60 24 45 191
+9ab84 4 48 191
+9ab88 4 47 191
+9ab8c 4 48 191
+9ab90 8 44 191
+9ab98 10 51 191
+9aba8 8 52 191
+FUNC 9abb0 10 0 std::priv::__digit_val_table
+9abb0 8 66 191
+9abb8 8 67 191
+FUNC 9abc0 c 0 std::priv::__narrow_atoms
+9abc0 4 70 191
+9abc4 8 70 191
+FUNC 9abcc 12c 0 std::priv::__get_fdigit
+9abcc 4 78 191
+9abd0 4 79 191
+9abd4 c 118 200
+9abe0 c 121 200
+9abec c 124 200
+9abf8 c 127 200
+9ac04 4 118 200
+9ac08 4 128 200
+9ac0c 8 118 200
+9ac14 c 121 200
+9ac20 c 124 200
+9ac2c c 127 200
+9ac38 4 128 200
+9ac3c 20 131 200
+9ac5c 4 85 191
+9ac60 8 86 191
+9ac68 4 118 200
+9ac6c 4 136 200
+9ac70 4 80 191
+9ac74 4 85 191
+9ac78 4 80 191
+9ac7c 4 81 191
+9ac80 4 82 191
+9ac84 10 81 191
+9ac94 8 86 191
+9ac9c 4 121 200
+9aca0 8 119 200
+9aca8 c 133 200
+9acb4 4 134 200
+9acb8 c 136 200
+9acc4 4 137 200
+9acc8 4 139 200
+9accc 4 85 191
+9acd0 8 139 200
+9acd8 8 86 191
+9ace0 4 124 200
+9ace4 8 122 200
+9acec 4 127 200
+9acf0 8 125 200
+FUNC 9acf8 28 0 std::priv::__get_fdigit_or_sep
+9acf8 4 90 191
+9acfc 4 89 191
+9ad00 8 90 191
+9ad08 8 95 191
+9ad10 8 91 191
+9ad18 8 96 191
+FUNC 9ad20 c 0 std::priv::__hex_char_table_lo
+9ad20 4 119 193
+9ad24 8 119 193
+FUNC 9ad2c c 0 std::priv::__hex_char_table_hi
+9ad2c 4 122 193
+9ad30 8 122 193
+FUNC 9ad38 180 0 std::priv::__write_integer
+9ad38 c 125 193
+9ad44 4 125 193
+9ad48 4 307 226
+9ad4c 4 309 226
+9ad50 4 308 226
+9ad54 4 309 226
+9ad58 4 308 226
+9ad5c 4 309 226
+9ad60 4 308 226
+9ad64 4 309 226
+9ad68 10 224 201
+9ad78 c 224 201
+9ad84 4 224 201
+9ad88 c 130 193
+9ad94 14 314 226
+9ada8 4 277 226
+9adac 4 279 226
+9adb0 c 281 226
+9adbc 4 282 226
+9adc0 4 339 226
+9adc4 14 282 226
+9add8 4 281 226
+9addc 8 282 226
+9ade4 4 281 226
+9ade8 4 284 226
+9adec 4 286 226
+9adf0 10 287 226
+9ae00 4 305 226
+9ae04 4 323 226
+9ae08 4 322 226
+9ae0c 8 323 226
+9ae14 8 322 226
+9ae1c 4 326 226
+9ae20 18 327 226
+9ae38 4 333 226
+9ae3c c 333 226
+9ae48 4 305 226
+9ae4c 4 340 226
+9ae50 4 339 226
+9ae54 8 340 226
+9ae5c 8 339 226
+9ae64 4 342 226
+9ae68 4 343 226
+9ae6c 4 344 226
+9ae70 4 343 226
+9ae74 c 344 226
+9ae80 10 310 226
+9ae90 10 333 226
+9aea0 8 279 226
+9aea8 10 285 226
+FUNC 9aeb8 120 0 std::priv::__insert_grouping
+9aeb8 4 136 193
+9aebc 4 36 193
+9aec0 1c 136 193
+9aedc 10 136 193
+9aeec 4 36 193
+9aef0 4 41 193
+9aef4 14 41 193
+9af08 4 46 193
+9af0c 4 52 193
+9af10 8 46 193
+9af18 c 49 193
+9af24 4 57 193
+9af28 8 400 238
+9af30 8 53 193
+9af38 8 54 193
+9af40 4 57 193
+9af44 4 57 193
+9af48 4 57 193
+9af4c 4 62 193
+9af50 4 256 201
+9af54 c 57 193
+9af60 4 63 193
+9af64 4 255 201
+9af68 8 256 201
+9af70 4 256 201
+9af74 4 256 201
+9af78 4 256 201
+9af7c 8 65 193
+9af84 c 68 193
+9af90 1c 139 193
+9afac c 43 193
+9afb8 4 37 193
+9afbc 1c 139 193
+FUNC 9afd8 7b4 0 std::priv::__insert_grouping
+9afd8 14 143 193
+9afec 8 400 238
+9aff4 4 143 193
+9aff8 4 400 238
+9affc 10 143 193
+9b00c c 80 193
+9b018 8 84 193
+9b020 4 70 213
+9b024 4 86 193
+9b028 4 97 193
+9b02c c 86 193
+9b038 4 92 193
+9b03c 4 83 193
+9b040 4 94 193
+9b044 4 90 193
+9b048 8 102 193
+9b050 8 400 238
+9b058 8 98 193
+9b060 8 99 193
+9b068 8 102 193
+9b070 c 102 193
+9b07c 14 102 193
+9b090 4 108 193
+9b094 8 660 238
+9b09c 8 74 239
+9b0a4 8 74 239
+9b0ac 8 259 237
+9b0b4 4 101 206
+9b0b8 4 261 237
+9b0bc 8 168 247
+9b0c4 c 168 247
+9b0d0 4 232 247
+9b0d4 14 263 237
+9b0e8 1c 145 193
+9b104 8 74 239
+9b10c 8 74 239
+9b114 c 535 238
+9b120 8 101 206
+9b128 4 232 247
+9b12c 10 539 238
+9b13c 8 74 239
+9b144 8 259 237
+9b14c 4 400 238
+9b150 14 304 238
+9b164 4 306 238
+9b168 10 307 238
+9b178 4 64 213
+9b17c 4 67 213
+9b180 4 64 213
+9b184 4 86 244
+9b188 58 86 244
+9b1e0 20 146 206
+9b200 4 86 244
+9b204 4 146 206
+9b208 10 86 244
+9b218 4 146 206
+9b21c c 86 244
+9b228 4 146 206
+9b22c c 86 244
+9b238 4 146 206
+9b23c c 86 244
+9b248 4 146 206
+9b24c c 86 244
+9b258 4 146 206
+9b25c c 86 244
+9b268 4 146 206
+9b26c c 86 244
+9b278 4 146 206
+9b27c c 86 244
+9b288 4 146 206
+9b28c c 86 244
+9b298 4 146 206
+9b29c c 86 244
+9b2a8 4 146 206
+9b2ac c 86 244
+9b2b8 4 146 206
+9b2bc c 86 244
+9b2c8 4 146 206
+9b2cc c 86 244
+9b2d8 4 146 206
+9b2dc 8 86 244
+9b2e4 8 146 206
+9b2ec 8 232 247
+9b2f4 4 271 237
+9b2f8 4 86 244
+9b2fc 60 86 244
+9b35c 20 146 206
+9b37c 4 86 244
+9b380 4 146 206
+9b384 10 86 244
+9b394 4 146 206
+9b398 c 86 244
+9b3a4 4 146 206
+9b3a8 c 86 244
+9b3b4 4 146 206
+9b3b8 c 86 244
+9b3c4 4 146 206
+9b3c8 c 86 244
+9b3d4 4 146 206
+9b3d8 c 86 244
+9b3e4 4 146 206
+9b3e8 c 86 244
+9b3f4 4 146 206
+9b3f8 c 86 244
+9b404 4 146 206
+9b408 c 86 244
+9b414 4 146 206
+9b418 c 86 244
+9b424 4 146 206
+9b428 c 86 244
+9b434 4 146 206
+9b438 c 86 244
+9b444 4 146 206
+9b448 c 86 244
+9b454 4 146 206
+9b458 8 86 244
+9b460 8 146 206
+9b468 4 101 206
+9b46c 4 64 239
+9b470 c 96 239
+9b47c 4 319 202
+9b480 4 97 239
+9b484 4 319 202
+9b488 c 97 239
+9b494 10 161 202
+9b4a4 14 161 202
+9b4b8 4 274 237
+9b4bc 4 164 239
+9b4c0 4 160 239
+9b4c4 c 165 239
+9b4d0 4 308 238
+9b4d4 1c 134 223
+9b4f0 18 135 223
+9b508 4 400 238
+9b50c 14 304 238
+9b520 4 306 238
+9b524 10 307 238
+9b534 4 64 213
+9b538 4 67 213
+9b53c 4 64 213
+9b540 4 86 244
+9b544 58 86 244
+9b59c 20 146 206
+9b5bc 4 86 244
+9b5c0 4 146 206
+9b5c4 10 86 244
+9b5d4 4 146 206
+9b5d8 c 86 244
+9b5e4 4 146 206
+9b5e8 c 86 244
+9b5f4 4 146 206
+9b5f8 c 86 244
+9b604 4 146 206
+9b608 c 86 244
+9b614 4 146 206
+9b618 c 86 244
+9b624 4 146 206
+9b628 c 86 244
+9b634 4 146 206
+9b638 c 86 244
+9b644 4 146 206
+9b648 c 86 244
+9b654 4 146 206
+9b658 c 86 244
+9b664 4 146 206
+9b668 c 86 244
+9b674 4 146 206
+9b678 c 86 244
+9b684 4 146 206
+9b688 c 86 244
+9b694 4 146 206
+9b698 8 86 244
+9b6a0 8 146 206
+9b6a8 4 101 206
+9b6ac 4 64 239
+9b6b0 c 96 239
+9b6bc 4 319 202
+9b6c0 4 97 239
+9b6c4 4 319 202
+9b6c8 4 97 239
+9b6cc 8 161 202
+9b6d4 4 161 202
+9b6d8 4 175 237
+9b6dc 4 164 239
+9b6e0 4 160 239
+9b6e4 c 165 239
+9b6f0 c 74 239
+9b6fc 8 86 244
+9b704 4 146 206
+9b708 14 86 244
+9b71c 8 146 206
+9b724 c 86 244
+9b730 4 308 238
+9b734 18 134 223
+9b74c 8 86 244
+9b754 8 135 223
+9b75c 8 86 244
+9b764 8 146 206
+9b76c 14 86 244
+9b780 c 600 237
+FUNC 9b78c 128 0 std::priv::__insert_grouping
+9b78c 4 151 193
+9b790 4 36 193
+9b794 18 151 193
+9b7ac c 151 193
+9b7b8 4 36 193
+9b7bc 4 41 193
+9b7c0 14 41 193
+9b7d4 c 46 193
+9b7e0 4 52 193
+9b7e4 8 46 193
+9b7ec c 49 193
+9b7f8 4 53 193
+9b7fc 4 57 193
+9b800 4 53 193
+9b804 8 54 193
+9b80c 4 57 193
+9b810 4 57 193
+9b814 4 57 193
+9b818 4 62 193
+9b81c 4 256 201
+9b820 c 57 193
+9b82c 4 63 193
+9b830 4 255 201
+9b834 8 256 201
+9b83c 8 256 201
+9b844 4 256 201
+9b848 10 256 201
+9b858 8 65 193
+9b860 4 68 193
+9b864 4 154 193
+9b868 8 68 193
+9b870 18 154 193
+9b888 c 43 193
+9b894 4 37 193
+9b898 1c 154 193
+FUNC 9b8b4 1c0 0 std::basic_string<wchar_t, std::char_traits<wchar_t>, std::priv::__iostring_allocator<wchar_t> >::_M_reserve
+9b8b4 4 170 237
+9b8b8 4 64 213
+9b8bc c 170 237
+9b8c8 4 170 237
+9b8cc 8 64 213
+9b8d4 8 67 213
+9b8dc c 86 244
+9b8e8 58 86 244
+9b940 24 146 206
+9b964 4 86 244
+9b968 4 146 206
+9b96c 10 86 244
+9b97c 4 146 206
+9b980 8 86 244
+9b988 8 146 206
+9b990 4 101 206
+9b994 c 96 239
+9b9a0 8 97 239
+9b9a8 8 319 202
+9b9b0 4 97 239
+9b9b4 4 135 223
+9b9b8 8 161 202
+9b9c0 4 161 202
+9b9c4 4 175 237
+9b9c8 4 164 239
+9b9cc 4 160 239
+9b9d0 4 165 239
+9b9d4 10 176 237
+9b9e4 c 302 202
+9b9f0 4 306 202
+9b9f4 10 134 223
+9ba04 8 86 244
+9ba0c 8 146 206
+9ba14 c 86 244
+9ba20 4 135 223
+9ba24 4 164 239
+9ba28 4 175 237
+9ba2c 4 165 239
+9ba30 4 160 239
+9ba34 10 176 237
+9ba44 8 86 244
+9ba4c c 303 202
+9ba58 4 303 202
+9ba5c 18 303 202
+FUNC 9ba74 46c 0 std::priv::__insert_grouping
+9ba74 c 159 193
+9ba80 8 400 238
+9ba88 4 159 193
+9ba8c 4 400 238
+9ba90 c 159 193
+9ba9c 4 80 193
+9baa0 4 159 193
+9baa4 8 80 193
+9baac 8 84 193
+9bab4 4 92 193
+9bab8 4 86 193
+9babc 4 70 213
+9bac0 c 86 193
+9bacc 4 97 193
+9bad0 8 83 193
+9bad8 4 90 193
+9badc 4 94 193
+9bae0 4 70 213
+9bae4 8 102 193
+9baec 8 400 238
+9baf4 8 98 193
+9bafc 8 99 193
+9bb04 8 102 193
+9bb0c 14 102 193
+9bb20 10 102 193
+9bb30 c 108 193
+9bb3c 8 660 238
+9bb44 8 74 239
+9bb4c 10 74 239
+9bb5c 8 259 237
+9bb64 4 261 237
+9bb68 4 101 206
+9bb6c c 249 247
+9bb78 4 263 237
+9bb7c 4 249 247
+9bb80 4 263 237
+9bb84 4 267 247
+9bb88 c 263 237
+9bb94 4 400 238
+9bb98 4 307 238
+9bb9c 10 400 238
+9bbac 4 306 238
+9bbb0 10 307 238
+9bbc0 8 64 213
+9bbc8 4 67 213
+9bbcc 4 64 213
+9bbd0 8 86 244
+9bbd8 58 86 244
+9bc30 24 146 206
+9bc54 4 86 244
+9bc58 4 146 206
+9bc5c 10 86 244
+9bc6c 4 146 206
+9bc70 8 86 244
+9bc78 8 146 206
+9bc80 4 267 247
+9bc84 8 86 244
+9bc8c 4 86 244
+9bc90 4 267 247
+9bc94 5c 86 244
+9bcf0 24 146 206
+9bd14 4 86 244
+9bd18 4 146 206
+9bd1c 10 86 244
+9bd2c 4 146 206
+9bd30 8 86 244
+9bd38 8 146 206
+9bd40 4 101 206
+9bd44 c 96 239
+9bd50 8 319 202
+9bd58 4 97 239
+9bd5c 4 319 202
+9bd60 c 97 239
+9bd6c c 161 202
+9bd78 10 161 202
+9bd88 4 274 237
+9bd8c 4 164 239
+9bd90 4 160 239
+9bd94 c 165 239
+9bda0 20 161 193
+9bdc0 4 307 238
+9bdc4 20 134 223
+9bde4 8 86 244
+9bdec 10 86 244
+9bdfc 8 74 239
+9be04 c 74 239
+9be10 8 535 238
+9be18 4 101 206
+9be1c 4 539 238
+9be20 4 267 247
+9be24 8 539 238
+9be2c 14 74 239
+9be40 8 86 244
+9be48 8 146 206
+9be50 18 86 244
+9be68 4 146 206
+9be6c c 86 244
+9be78 14 135 223
+9be8c 14 400 238
+9bea0 4 306 238
+9bea4 14 307 238
+9beb8 10 536 238
+9bec8 10 74 239
+9bed8 8 308 238
+FUNC 9bee0 44 0 std::priv::_Stl_mult64
+9bee0 4 122 192
+9bee4 4 124 192
+9bee8 4 123 192
+9beec 4 125 192
+9bef0 4 127 192
+9bef4 4 130 192
+9bef8 4 136 192
+9befc 4 130 192
+9bf00 4 128 192
+9bf04 8 134 192
+9bf0c 4 136 192
+9bf10 8 135 192
+9bf18 8 136 192
+9bf20 4 137 192
+FUNC 9bf24 84 0 std::priv::_Stl_norm_and_round
+9bf24 4 233 192
+9bf28 4 234 192
+9bf2c c 238 192
+9bf38 8 246 192
+9bf40 4 248 192
+9bf44 8 247 192
+9bf4c 4 254 192
+9bf50 4 263 192
+9bf54 4 255 192
+9bf58 4 255 192
+9bf5c c 255 192
+9bf68 8 259 192
+9bf70 8 260 192
+9bf78 4 263 192
+9bf7c 4 251 192
+9bf80 8 254 192
+9bf88 4 239 192
+9bf8c 8 238 192
+9bf94 8 243 192
+9bf9c 4 263 192
+9bfa0 4 258 192
+9bfa4 4 263 192
+FUNC 9bfa8 17c 0 std::priv::_Stl_tenscale
+9bfa8 4 269 192
+9bfac 4 280 192
+9bfb0 1c 269 192
+9bfcc c 269 192
+9bfd8 4 280 192
+9bfdc 4 281 192
+9bfe0 4 276 192
+9bfe4 4 281 192
+9bfe8 4 282 192
+9bfec 4 285 192
+9bff0 4 284 192
+9bff4 8 283 192
+9bffc 4 289 192
+9c000 4 288 192
+9c004 20 303 192
+9c024 c 307 192
+9c030 4 306 192
+9c034 c 307 192
+9c040 4 305 192
+9c044 8 307 192
+9c04c 14 308 192
+9c060 20 309 192
+9c080 4 303 192
+9c084 4 312 192
+9c088 4 314 192
+9c08c 4 313 192
+9c090 18 314 192
+9c0a8 14 315 192
+9c0bc 20 316 192
+9c0dc 20 320 192
+9c0fc c 291 192
+9c108 4 292 192
+9c10c 4 291 192
+9c110 4 296 192
+9c114 8 295 192
+9c11c 8 276 192
+FUNC 9c124 3a8 0 std::priv::_Stl_string_to_double
+9c124 10 645 192
+9c134 4 655 192
+9c138 8 659 192
+9c140 8 661 192
+9c148 4 655 192
+9c14c 4 658 192
+9c150 4 672 192
+9c154 4 666 192
+9c158 4 673 192
+9c15c 4 669 192
+9c160 4 666 192
+9c164 4 668 192
+9c168 4 674 192
+9c16c 4 673 192
+9c170 8 674 192
+9c178 c 678 192
+9c184 4 681 192
+9c188 4 683 192
+9c18c 4 681 192
+9c190 4 690 192
+9c194 4 672 192
+9c198 8 673 192
+9c1a0 c 685 192
+9c1ac 4 686 192
+9c1b0 8 690 192
+9c1b8 8 676 192
+9c1c0 8 690 192
+9c1c8 c 694 192
+9c1d4 c 698 192
+9c1e0 4 701 192
+9c1e4 14 702 192
+9c1f8 8 704 192
+9c200 4 701 192
+9c204 c 708 192
+9c210 4 722 192
+9c214 8 723 192
+9c21c 4 724 192
+9c220 4 723 192
+9c224 8 726 192
+9c22c 4 166 218
+9c230 4 167 218
+9c234 4 736 192
+9c238 4 737 192
+9c23c 10 741 192
+9c24c 8 683 192
+9c254 8 660 192
+9c25c 8 658 192
+9c264 8 703 192
+9c26c 4 699 192
+9c270 10 708 192
+9c280 4 710 192
+9c284 4 711 192
+9c288 4 710 192
+9c28c 10 709 192
+9c29c c 722 192
+9c2a8 4 717 192
+9c2ac 8 723 192
+9c2b4 4 724 192
+9c2b8 8 723 192
+9c2c0 8 663 192
+9c2c8 8 662 192
+9c2d0 8 706 192
+9c2d8 8 705 192
+9c2e0 4 354 192
+9c2e4 4 355 192
+9c2e8 c 357 192
+9c2f4 4 359 192
+9c2f8 4 358 192
+9c2fc 4 357 192
+9c300 4 359 192
+9c304 4 357 192
+9c308 4 363 192
+9c30c 1c 372 192
+9c328 4 373 192
+9c32c 4 372 192
+9c330 8 373 192
+9c338 8 374 192
+9c340 8 374 192
+9c348 8 375 192
+9c350 8 375 192
+9c358 c 376 192
+9c364 24 377 192
+9c388 c 378 192
+9c394 4 381 192
+9c398 4 270 192
+9c39c 4 381 192
+9c3a0 4 390 192
+9c3a4 8 381 192
+9c3ac 4 272 192
+9c3b0 4 429 192
+9c3b4 8 432 192
+9c3bc 4 441 192
+9c3c0 4 442 192
+9c3c4 4 429 192
+9c3c8 8 442 192
+9c3d0 4 443 192
+9c3d4 8 444 192
+9c3dc 4 445 192
+9c3e0 4 446 192
+9c3e4 4 445 192
+9c3e8 8 464 192
+9c3f0 4 150 192
+9c3f4 4 469 192
+9c3f8 c 150 192
+9c404 4 474 192
+9c408 8 736 192
+9c410 4 695 192
+9c414 c 741 192
+9c420 4 364 192
+9c424 14 736 192
+9c438 8 390 192
+9c440 8 392 192
+9c448 8 394 192
+9c450 8 398 192
+9c458 8 401 192
+9c460 8 406 192
+9c468 c 412 192
+9c474 4 413 192
+9c478 4 412 192
+9c47c 4 413 192
+9c480 4 412 192
+9c484 8 413 192
+9c48c 4 418 192
+9c490 c 418 192
+9c49c 4 419 192
+9c4a0 4 150 192
+9c4a4 8 474 192
+9c4ac 4 395 192
+9c4b0 8 474 192
+9c4b8 4 407 192
+9c4bc 4 409 192
+9c4c0 4 407 192
+9c4c4 8 408 192
+FUNC 9c4cc d8 0 std::priv::_Initialize_get_float
+9c4cc 4 86 192
+9c4d0 4 87 192
+9c4d4 4 86 192
+9c4d8 4 87 192
+9c4dc 4 206 207
+9c4e0 4 86 192
+9c4e4 4 87 192
+9c4e8 4 86 192
+9c4ec 4 87 192
+9c4f0 4 86 192
+9c4f4 4 87 192
+9c4f8 8 206 207
+9c500 c 87 192
+9c50c 10 86 192
+9c51c c 206 207
+9c528 4 88 192
+9c52c 14 206 207
+9c540 8 89 192
+9c548 14 206 207
+9c55c 4 90 192
+9c560 4 206 207
+9c564 4 90 192
+9c568 8 206 207
+9c570 8 209 207
+9c578 4 91 192
+9c57c 8 209 207
+9c584 4 91 192
+9c588 10 209 207
+9c598 c 93 192
+FUNC 9c5a4 28 0 std::priv::__string_to_float
+9c5a4 8 847 192
+9c5ac 4 849 192
+9c5b0 4 847 192
+9c5b4 4 849 192
+9c5b8 c 849 192
+9c5c4 8 853 192
+FUNC 9c5cc 24 0 std::priv::__string_to_float
+9c5cc 8 857 192
+9c5d4 4 859 192
+9c5d8 4 857 192
+9c5dc 4 859 192
+9c5e0 8 859 192
+9c5e8 8 863 192
+FUNC 9c5f0 27c 0 std::priv::_Stl_atodT<long double, ieee854_long_double, 16, 16383>
+9c5f0 4 483 192
+9c5f4 4 488 192
+9c5f8 4 492 192
+9c5fc 8 483 192
+9c604 8 492 192
+9c60c 4 494 192
+9c610 4 493 192
+9c614 4 492 192
+9c618 4 494 192
+9c61c 4 492 192
+9c620 4 497 192
+9c624 18 507 192
+9c63c 4 508 192
+9c640 8 507 192
+9c648 8 508 192
+9c650 8 509 192
+9c658 8 509 192
+9c660 8 510 192
+9c668 8 510 192
+9c670 c 511 192
+9c67c 14 512 192
+9c690 8 516 192
+9c698 4 270 192
+9c69c 8 517 192
+9c6a4 4 527 192
+9c6a8 14 272 192
+9c6bc 4 527 192
+9c6c0 4 529 192
+9c6c4 4 527 192
+9c6c8 8 529 192
+9c6d0 c 589 192
+9c6dc 8 598 192
+9c6e4 8 604 192
+9c6ec 4 608 192
+9c6f0 c 613 192
+9c6fc 4 614 192
+9c700 4 613 192
+9c704 4 614 192
+9c708 4 613 192
+9c70c 8 614 192
+9c714 4 619 192
+9c718 c 619 192
+9c724 8 620 192
+9c72c 4 621 192
+9c730 4 626 192
+9c734 4 624 192
+9c738 8 626 192
+9c740 4 625 192
+9c744 10 627 192
+9c754 8 628 192
+9c75c c 512 192
+9c768 c 513 192
+9c774 4 516 192
+9c778 4 270 192
+9c77c 4 516 192
+9c780 4 527 192
+9c784 8 517 192
+9c78c 4 272 192
+9c790 8 571 192
+9c798 c 197 218
+9c7a4 4 641 192
+9c7a8 8 197 218
+9c7b0 4 198 218
+9c7b4 4 197 218
+9c7b8 4 200 218
+9c7bc 4 199 218
+9c7c0 4 641 192
+9c7c4 4 200 218
+9c7c8 4 641 192
+9c7cc 4 498 192
+9c7d0 c 641 192
+9c7dc 4 581 192
+9c7e0 4 582 192
+9c7e4 4 579 192
+9c7e8 4 582 192
+9c7ec 8 581 192
+9c7f4 4 579 192
+9c7f8 4 582 192
+9c7fc 8 580 192
+9c804 8 582 192
+9c80c 4 641 192
+9c810 4 584 192
+9c814 8 641 192
+9c81c 4 590 192
+9c820 4 637 192
+9c824 4 635 192
+9c828 8 637 192
+9c830 4 635 192
+9c834 4 638 192
+9c838 8 636 192
+9c840 8 638 192
+9c848 4 641 192
+9c84c 4 640 192
+9c850 8 641 192
+9c858 4 609 192
+9c85c 4 611 192
+9c860 4 609 192
+9c864 8 610 192
+FUNC 9c880 1f0 0 std::priv::_Stl_string_to_doubleT<long double, ieee854_long_double, 16, 16383>
+9c880 c 749 192
+9c88c 4 761 192
+9c890 8 765 192
+9c898 8 767 192
+9c8a0 4 761 192
+9c8a4 4 764 192
+9c8a8 4 778 192
+9c8ac 4 772 192
+9c8b0 4 779 192
+9c8b4 4 775 192
+9c8b8 4 772 192
+9c8bc 4 774 192
+9c8c0 4 780 192
+9c8c4 4 779 192
+9c8c8 8 780 192
+9c8d0 c 784 192
+9c8dc 4 787 192
+9c8e0 4 789 192
+9c8e4 4 787 192
+9c8e8 4 796 192
+9c8ec 4 778 192
+9c8f0 8 779 192
+9c8f8 c 791 192
+9c904 4 792 192
+9c908 8 796 192
+9c910 8 782 192
+9c918 8 796 192
+9c920 8 799 192
+9c928 c 803 192
+9c934 4 806 192
+9c938 14 807 192
+9c94c 8 809 192
+9c954 4 806 192
+9c958 c 813 192
+9c964 4 827 192
+9c968 4 826 192
+9c96c c 827 192
+9c978 c 829 192
+9c984 c 197 218
+9c990 4 198 218
+9c994 8 199 218
+9c99c 4 840 192
+9c9a0 4 840 192
+9c9a4 18 841 192
+9c9bc 8 789 192
+9c9c4 4 800 192
+9c9c8 4 841 192
+9c9cc 4 800 192
+9c9d0 10 841 192
+9c9e0 8 766 192
+9c9e8 8 764 192
+9c9f0 8 808 192
+9c9f8 4 804 192
+9c9fc 10 813 192
+9ca0c 4 815 192
+9ca10 4 816 192
+9ca14 4 815 192
+9ca18 18 814 192
+9ca30 8 822 192
+9ca38 8 769 192
+9ca40 8 768 192
+9ca48 18 837 192
+9ca60 8 811 192
+9ca68 8 810 192
+FUNC 9ca70 24 0 std::priv::__string_to_float
+9ca70 8 867 192
+9ca78 4 874 192
+9ca7c 4 867 192
+9ca80 4 874 192
+9ca84 8 874 192
+9ca8c 8 876 192
+FUNC 9ca94 f0 0 std::priv::__fill_fmtbuf
+9ca94 8 711 194
+9ca9c 4 710 194
+9caa0 4 714 194
+9caa4 18 715 194
+9cabc 8 717 194
+9cac4 14 718 194
+9cad8 8 720 194
+9cae0 c 721 194
+9caec 4 723 194
+9caf0 8 724 194
+9caf8 4 726 194
+9cafc 4 735 194
+9cb00 10 726 194
+9cb10 10 739 194
+9cb20 4 739 194
+9cb24 4 739 194
+9cb28 4 743 194
+9cb2c 10 744 194
+9cb3c 8 712 194
+9cb44 10 729 194
+9cb54 4 729 194
+9cb58 4 729 194
+9cb5c 4 743 194
+9cb60 4 744 194
+9cb64 10 735 194
+9cb74 4 735 194
+9cb78 4 735 194
+9cb7c 4 743 194
+9cb80 4 744 194
+FUNC 9cb84 5f8 0 std::basic_string<char, std::char_traits<char>, std::priv::__iostring_allocator<char> >::_M_append
+9cb84 4 196 237
+9cb88 4 197 237
+9cb8c 10 196 237
+9cb9c 4 196 237
+9cba0 4 197 237
+9cba4 4 64 239
+9cba8 4 198 237
+9cbac 8 74 239
+9cbb4 c 74 239
+9cbc0 8 199 237
+9cbc8 4 210 237
+9cbcc 4 211 237
+9cbd0 4 86 244
+9cbd4 58 86 244
+9cc2c 20 146 206
+9cc4c 4 86 244
+9cc50 4 146 206
+9cc54 10 86 244
+9cc64 4 146 206
+9cc68 c 86 244
+9cc74 4 146 206
+9cc78 c 86 244
+9cc84 4 146 206
+9cc88 c 86 244
+9cc94 4 146 206
+9cc98 c 86 244
+9cca4 4 146 206
+9cca8 c 86 244
+9ccb4 4 146 206
+9ccb8 c 86 244
+9ccc4 4 146 206
+9ccc8 c 86 244
+9ccd4 4 146 206
+9ccd8 c 86 244
+9cce4 4 146 206
+9cce8 c 86 244
+9ccf4 4 146 206
+9ccf8 c 86 244
+9cd04 4 146 206
+9cd08 c 86 244
+9cd14 4 146 206
+9cd18 c 86 244
+9cd24 4 146 206
+9cd28 8 86 244
+9cd30 8 146 206
+9cd38 c 101 206
+9cd44 4 232 247
+9cd48 c 214 237
+9cd54 18 218 237
+9cd6c 4 400 238
+9cd70 1c 304 238
+9cd8c 4 306 238
+9cd90 10 307 238
+9cda0 4 64 213
+9cda4 4 67 213
+9cda8 8 64 213
+9cdb0 4 308 238
+9cdb4 20 134 223
+9cdd4 58 86 244
+9ce2c 20 146 206
+9ce4c 4 86 244
+9ce50 4 146 206
+9ce54 10 86 244
+9ce64 4 146 206
+9ce68 c 86 244
+9ce74 4 146 206
+9ce78 c 86 244
+9ce84 4 146 206
+9ce88 c 86 244
+9ce94 4 146 206
+9ce98 c 86 244
+9cea4 4 146 206
+9cea8 c 86 244
+9ceb4 4 146 206
+9ceb8 c 86 244
+9cec4 4 146 206
+9cec8 c 86 244
+9ced4 4 146 206
+9ced8 c 86 244
+9cee4 4 146 206
+9cee8 c 86 244
+9cef4 4 146 206
+9cef8 c 86 244
+9cf04 4 146 206
+9cf08 c 86 244
+9cf14 4 146 206
+9cf18 c 86 244
+9cf24 4 146 206
+9cf28 8 86 244
+9cf30 8 146 206
+9cf38 58 86 244
+9cf90 20 146 206
+9cfb0 4 86 244
+9cfb4 4 146 206
+9cfb8 10 86 244
+9cfc8 4 146 206
+9cfcc c 86 244
+9cfd8 4 146 206
+9cfdc c 86 244
+9cfe8 4 146 206
+9cfec c 86 244
+9cff8 4 146 206
+9cffc c 86 244
+9d008 4 146 206
+9d00c c 86 244
+9d018 4 146 206
+9d01c c 86 244
+9d028 4 146 206
+9d02c c 86 244
+9d038 4 146 206
+9d03c c 86 244
+9d048 4 146 206
+9d04c c 86 244
+9d058 4 146 206
+9d05c c 86 244
+9d068 4 146 206
+9d06c c 86 244
+9d078 4 146 206
+9d07c c 86 244
+9d088 4 146 206
+9d08c 8 86 244
+9d094 8 146 206
+9d09c 4 101 206
+9d0a0 4 64 239
+9d0a4 c 96 239
+9d0b0 8 97 239
+9d0b8 8 319 202
+9d0c0 4 97 239
+9d0c4 8 161 202
+9d0cc 4 161 202
+9d0d0 4 165 239
+9d0d4 4 206 237
+9d0d8 4 164 239
+9d0dc 4 218 237
+9d0e0 4 160 239
+9d0e4 20 218 237
+9d104 4 146 206
+9d108 10 86 244
+9d118 10 74 239
+9d128 8 86 244
+9d130 8 146 206
+9d138 14 86 244
+9d14c 8 146 206
+9d154 c 86 244
+9d160 8 135 223
+9d168 8 86 244
+9d170 c 600 237
+FUNC 9d17c 220 0 std::priv::__get_floor_digits
+9d17c 4 844 194
+9d180 4 849 194
+9d184 4 844 194
+9d188 8 849 194
+9d190 c 844 194
+9d19c 4 849 194
+9d1a0 4 844 194
+9d1a4 4 849 194
+9d1a8 4 844 194
+9d1ac 4 849 194
+9d1b0 4 844 194
+9d1b4 4 849 194
+9d1b8 10 853 194
+9d1c8 4 854 194
+9d1cc 8 470 238
+9d1d4 4 64 239
+9d1d8 4 355 217
+9d1dc 8 74 239
+9d1e4 10 74 239
+9d1f4 10 472 238
+9d204 4 232 247
+9d208 c 107 244
+9d214 10 106 244
+9d224 4 101 206
+9d228 c 485 238
+9d234 1c 870 194
+9d250 4 400 238
+9d254 1c 304 238
+9d270 4 306 238
+9d274 10 307 238
+9d284 4 64 213
+9d288 8 67 213
+9d290 8 64 213
+9d298 4 308 238
+9d29c 10 134 223
+9d2ac 4 311 202
+9d2b0 c 107 244
+9d2bc 10 106 244
+9d2cc 4 107 244
+9d2d0 c 106 244
+9d2dc 4 101 206
+9d2e0 4 107 244
+9d2e4 4 64 239
+9d2e8 c 96 239
+9d2f4 8 97 239
+9d2fc 8 319 202
+9d304 4 97 239
+9d308 4 135 223
+9d30c 8 161 202
+9d314 4 161 202
+9d318 4 164 239
+9d31c 4 479 238
+9d320 4 165 239
+9d324 4 160 239
+9d328 1c 870 194
+9d344 10 74 239
+9d354 8 229 247
+9d35c 4 530 238
+9d360 c 530 238
+9d36c 1c 870 194
+9d388 8 135 223
+9d390 c 600 237
+FUNC 9d39c 334 0 std::priv::__convert_float_buffer
+9d39c 2c 875 194
+9d3c8 4 875 194
+9d3cc 4 880 194
+9d3d0 4 879 194
+9d3d4 4 880 194
+9d3d8 4 881 194
+9d3dc 4 307 238
+9d3e0 c 881 194
+9d3ec 4 267 247
+9d3f0 4 101 206
+9d3f4 4 880 194
+9d3f8 4 267 247
+9d3fc 4 539 238
+9d400 4 880 194
+9d404 c 881 194
+9d410 8 206 207
+9d418 4 882 194
+9d41c c 206 207
+9d428 4 64 239
+9d42c 8 74 239
+9d434 14 74 239
+9d448 8 535 238
+9d450 14 400 238
+9d464 4 306 238
+9d468 10 307 238
+9d478 c 536 238
+9d484 4 880 194
+9d488 4 267 247
+9d48c 4 101 206
+9d490 4 267 247
+9d494 4 539 238
+9d498 4 880 194
+9d49c 18 900 194
+9d4b4 4 889 194
+9d4b8 18 206 207
+9d4d0 4 64 239
+9d4d4 8 74 239
+9d4dc 14 74 239
+9d4f0 8 535 238
+9d4f8 4 267 247
+9d4fc 4 101 206
+9d500 4 267 247
+9d504 4 539 238
+9d508 c 896 194
+9d514 8 307 238
+9d51c 4 267 247
+9d520 4 101 206
+9d524 8 896 194
+9d52c 4 267 247
+9d530 4 539 238
+9d534 4 896 194
+9d538 18 206 207
+9d550 4 64 239
+9d554 8 74 239
+9d55c 14 74 239
+9d570 c 535 238
+9d57c 14 400 238
+9d590 4 306 238
+9d594 10 307 238
+9d5a4 10 536 238
+9d5b4 14 74 239
+9d5c8 8 308 238
+9d5d0 14 74 239
+9d5e4 c 308 238
+9d5f0 4 64 239
+9d5f4 8 74 239
+9d5fc c 74 239
+9d608 8 535 238
+9d610 4 267 247
+9d614 4 101 206
+9d618 4 267 247
+9d61c 8 539 238
+9d624 14 400 238
+9d638 4 306 238
+9d63c 14 307 238
+9d650 10 536 238
+9d660 14 74 239
+9d674 14 400 238
+9d688 4 306 238
+9d68c 14 307 238
+9d6a0 10 536 238
+9d6b0 8 308 238
+9d6b8 10 74 239
+9d6c8 8 308 238
+FUNC 9d6d0 dc 0 std::basic_string<char, std::char_traits<char>, std::priv::__iostring_allocator<char> >::_M_assign
+9d6d0 18 242 237
+9d6e8 4 243 237
+9d6ec 4 242 237
+9d6f0 4 242 237
+9d6f4 4 400 238
+9d6f8 4 244 237
+9d6fc 4 242 237
+9d700 4 244 237
+9d704 4 168 247
+9d708 4 246 237
+9d70c 8 803 238
+9d714 4 168 247
+9d718 4 806 238
+9d71c 4 168 247
+9d720 c 806 238
+9d72c 14 253 237
+9d740 4 168 247
+9d744 10 250 237
+9d754 14 253 237
+9d768 10 168 247
+9d778 4 246 237
+9d77c c 803 238
+9d788 10 168 247
+9d798 14 250 237
+FUNC 9d7ac 230 0 std::priv::__write_floatT<long double>
+9d7ac c 749 194
+9d7b8 4 760 194
+9d7bc c 749 194
+9d7c8 4 760 194
+9d7cc 4 749 194
+9d7d0 4 749 194
+9d7d4 4 760 194
+9d7d8 4 749 194
+9d7dc 4 761 194
+9d7e0 4 749 194
+9d7e4 4 760 194
+9d7e8 18 761 194
+9d800 8 229 247
+9d808 4 355 238
+9d80c 10 355 238
+9d81c 10 162 200
+9d82c 8 164 200
+9d834 4 165 200
+9d838 14 705 194
+9d84c 4 168 200
+9d850 20 705 194
+9d870 4 174 200
+9d874 14 705 194
+9d888 8 164 200
+9d890 4 165 200
+9d894 14 705 194
+9d8a8 4 168 200
+9d8ac 18 705 194
+9d8c4 8 171 200
+9d8cc c 705 194
+9d8d8 8 169 200
+9d8e0 20 820 194
+9d900 4 172 200
+9d904 30 820 194
+9d934 8 166 200
+9d93c c 164 200
+9d948 18 178 200
+9d960 4 186 200
+9d964 20 705 194
+9d984 8 166 200
+9d98c 4 180 200
+9d990 10 705 194
+9d9a0 4 181 200
+9d9a4 4 705 194
+9d9a8 4 183 200
+9d9ac 14 705 194
+9d9c0 10 184 200
+9d9d0 c 164 200
+FUNC 9d9dc 4 0 std::priv::__write_float
+9d9dc 4 840 194
+FUNC 9d9e0 210 0 std::priv::__write_floatT<double>
+9d9e0 8 749 194
+9d9e8 4 760 194
+9d9ec 8 749 194
+9d9f4 4 760 194
+9d9f8 4 749 194
+9d9fc 4 749 194
+9da00 4 760 194
+9da04 4 749 194
+9da08 4 761 194
+9da0c 4 749 194
+9da10 4 760 194
+9da14 18 761 194
+9da2c 8 229 247
+9da34 4 355 238
+9da38 10 355 238
+9da48 10 162 200
+9da58 8 164 200
+9da60 4 165 200
+9da64 14 705 194
+9da78 4 168 200
+9da7c 20 705 194
+9da9c 4 174 200
+9daa0 14 705 194
+9dab4 8 164 200
+9dabc 4 165 200
+9dac0 14 705 194
+9dad4 4 168 200
+9dad8 18 705 194
+9daf0 8 171 200
+9daf8 c 705 194
+9db04 8 169 200
+9db0c 10 820 194
+9db1c 4 172 200
+9db20 28 820 194
+9db48 8 166 200
+9db50 c 164 200
+9db5c 18 178 200
+9db74 4 186 200
+9db78 20 705 194
+9db98 8 166 200
+9dba0 4 180 200
+9dba4 10 705 194
+9dbb4 4 181 200
+9dbb8 4 705 194
+9dbbc 4 183 200
+9dbc0 14 705 194
+9dbd4 10 184 200
+9dbe4 c 164 200
+FUNC 9dbf0 4 0 std::priv::__write_float
+9dbf0 4 829 194
+FUNC 9dbf4 8 0 std::numpunct<char>::do_decimal_point
+9dbf4 8 26 195
+FUNC 9dbfc 8 0 std::numpunct<char>::do_thousands_sep
+9dbfc 8 27 195
+FUNC 9dc04 8 0 std::numpunct<wchar_t>::do_decimal_point
+9dc04 8 34 195
+FUNC 9dc0c 8 0 std::numpunct<wchar_t>::do_thousands_sep
+9dc0c 8 35 195
+FUNC 9dc14 14 0 std::numpunct<char>::~numpunct
+9dc14 14 31 195
+FUNC 9dc28 24 0 std::numpunct<char>::~numpunct
+9dc28 c 31 195
+9dc34 8 31 195
+9dc3c 4 31 195
+9dc40 8 31 195
+9dc48 4 31 195
+FUNC 9dc4c 14 0 std::numpunct<wchar_t>::~numpunct
+9dc4c 14 39 195
+FUNC 9dc60 24 0 std::numpunct<wchar_t>::~numpunct
+9dc60 c 39 195
+9dc6c 8 39 195
+9dc74 4 39 195
+9dc78 8 39 195
+9dc80 4 39 195
+FUNC 9dc84 14 0 std::numpunct<wchar_t>::do_grouping
+9dc84 4 36 195
+9dc88 4 120 239
+9dc8c 4 481 202
+9dc90 4 101 206
+9dc94 4 36 195
+FUNC 9dc98 14 0 std::numpunct<char>::do_grouping
+9dc98 4 28 195
+9dc9c 4 120 239
+9dca0 4 481 202
+9dca4 4 101 206
+9dca8 4 28 195
+FUNC 9dcac 30 0 std::numpunct<char>::do_truename
+9dcac 4 29 195
+9dcb0 8 29 195
+9dcb8 4 29 195
+9dcbc 8 29 195
+9dcc4 8 29 195
+9dccc 10 29 195
+FUNC 9dcdc 30 0 std::numpunct<char>::do_falsename
+9dcdc 4 30 195
+9dce0 8 30 195
+9dce8 4 30 195
+9dcec 8 30 195
+9dcf4 8 30 195
+9dcfc 10 30 195
+FUNC 9dd0c 30 0 std::numpunct<wchar_t>::do_truename
+9dd0c 4 37 195
+9dd10 8 37 195
+9dd18 4 37 195
+9dd1c 8 37 195
+9dd24 8 37 195
+9dd2c 10 37 195
+FUNC 9dd3c 30 0 std::numpunct<wchar_t>::do_falsename
+9dd3c 4 38 195
+9dd40 8 38 195
+9dd48 4 38 195
+9dd4c 8 38 195
+9dd54 8 38 195
+9dd5c 10 38 195
+FUNC 9dd6c 1dc 0 std::priv::__append
+9dd6c c 174 198
+9dd78 4 209 207
+9dd7c 4 174 198
+9dd80 4 209 207
+9dd84 4 174 198
+9dd88 8 209 207
+9dd90 8 174 198
+9dd98 4 174 198
+9dd9c 4 209 207
+9dda0 4 174 198
+9dda4 4 209 207
+9dda8 8 177 198
+9ddb0 8 470 238
+9ddb8 4 64 239
+9ddbc 8 355 217
+9ddc4 8 74 239
+9ddcc 14 74 239
+9dde0 8 472 238
+9dde8 4 107 244
+9ddec 8 267 247
+9ddf4 8 107 244
+9ddfc 10 106 244
+9de0c 4 101 206
+9de10 4 484 238
+9de14 4 485 238
+9de18 14 178 198
+9de2c 4 400 238
+9de30 4 304 238
+9de34 4 400 238
+9de38 18 304 238
+9de50 4 306 238
+9de54 10 307 238
+9de64 c 64 213
+9de70 8 67 213
+9de78 c 107 244
+9de84 10 106 244
+9de94 4 107 244
+9de98 c 106 244
+9dea4 4 107 244
+9dea8 4 64 239
+9deac 4 101 206
+9deb0 c 96 239
+9debc 8 97 239
+9dec4 8 319 202
+9decc 4 97 239
+9ded0 4 135 223
+9ded4 8 161 202
+9dedc 4 161 202
+9dee0 4 479 238
+9dee4 4 164 239
+9dee8 4 160 239
+9deec 4 165 239
+9def0 14 178 198
+9df04 4 307 238
+9df08 8 134 223
+9df10 10 311 202
+9df20 14 74 239
+9df34 8 135 223
+9df3c c 600 237
+FUNC 9df48 1b8 0 std::priv::__append
+9df48 1c 169 198
+9df64 4 470 238
+9df68 8 400 238
+9df70 4 470 238
+9df74 4 64 239
+9df78 8 74 239
+9df80 14 74 239
+9df94 c 472 238
+9dfa0 8 482 238
+9dfa8 4 267 247
+9dfac 8 107 244
+9dfb4 10 106 244
+9dfc4 4 101 206
+9dfc8 4 484 238
+9dfcc 4 485 238
+9dfd0 14 169 198
+9dfe4 4 400 238
+9dfe8 4 304 238
+9dfec 4 400 238
+9dff0 18 304 238
+9e008 4 306 238
+9e00c 10 307 238
+9e01c c 64 213
+9e028 8 67 213
+9e030 c 107 244
+9e03c 10 106 244
+9e04c 4 107 244
+9e050 c 106 244
+9e05c 4 107 244
+9e060 4 64 239
+9e064 4 101 206
+9e068 c 96 239
+9e074 8 97 239
+9e07c 8 319 202
+9e084 4 97 239
+9e088 4 135 223
+9e08c 8 161 202
+9e094 4 161 202
+9e098 4 479 238
+9e09c 4 165 239
+9e0a0 4 160 239
+9e0a4 4 164 239
+9e0a8 14 169 198
+9e0bc 4 307 238
+9e0c0 8 134 223
+9e0c8 10 311 202
+9e0d8 14 74 239
+9e0ec 8 135 223
+9e0f4 c 600 237
+FUNC 9e100 208 0 std::basic_string<wchar_t, std::char_traits<wchar_t>, std::priv::__iostring_allocator<wchar_t> >::append
+9e100 1c 180 237
+9e11c 4 74 239
+9e120 8 180 237
+9e128 4 74 239
+9e12c c 74 239
+9e138 8 184 237
+9e140 4 267 247
+9e144 4 101 206
+9e148 c 192 237
+9e154 4 267 247
+9e158 4 189 237
+9e15c c 192 237
+9e168 14 400 238
+9e17c 4 306 238
+9e180 14 307 238
+9e194 c 64 213
+9e1a0 8 67 213
+9e1a8 58 86 244
+9e200 24 146 206
+9e224 4 86 244
+9e228 4 146 206
+9e22c 10 86 244
+9e23c 4 146 206
+9e240 c 86 244
+9e24c 8 146 206
+9e254 4 101 206
+9e258 c 96 239
+9e264 8 97 239
+9e26c 8 319 202
+9e274 4 97 239
+9e278 8 161 202
+9e280 4 161 202
+9e284 4 175 237
+9e288 4 165 239
+9e28c 4 160 239
+9e290 8 165 239
+9e298 4 307 238
+9e29c 24 134 223
+9e2c0 1c 74 239
+9e2dc 8 86 244
+9e2e4 8 146 206
+9e2ec c 86 244
+9e2f8 8 135 223
+9e300 8 86 244
+FUNC 9e308 2b8 0 std::basic_string<char, std::char_traits<char>, std::priv::__iostring_allocator<char> >::append
+9e308 18 180 237
+9e320 4 400 238
+9e324 8 180 237
+9e32c 4 182 237
+9e330 4 180 237
+9e334 4 182 237
+9e338 8 74 239
+9e340 8 74 239
+9e348 8 184 237
+9e350 8 101 206
+9e358 4 232 247
+9e35c 4 192 237
+9e360 4 189 237
+9e364 4 192 237
+9e368 8 189 237
+9e370 1c 192 237
+9e38c 4 306 238
+9e390 10 307 238
+9e3a0 4 64 213
+9e3a4 4 67 213
+9e3a8 8 64 213
+9e3b0 4 308 238
+9e3b4 18 134 223
+9e3cc 58 86 244
+9e424 20 146 206
+9e444 4 86 244
+9e448 4 146 206
+9e44c 10 86 244
+9e45c 4 146 206
+9e460 c 86 244
+9e46c 4 146 206
+9e470 c 86 244
+9e47c 4 146 206
+9e480 c 86 244
+9e48c 4 146 206
+9e490 c 86 244
+9e49c 4 146 206
+9e4a0 c 86 244
+9e4ac 4 146 206
+9e4b0 c 86 244
+9e4bc 4 146 206
+9e4c0 c 86 244
+9e4cc 4 146 206
+9e4d0 c 86 244
+9e4dc 4 146 206
+9e4e0 c 86 244
+9e4ec 4 146 206
+9e4f0 c 86 244
+9e4fc 4 146 206
+9e500 c 86 244
+9e50c 4 146 206
+9e510 c 86 244
+9e51c 4 146 206
+9e520 8 86 244
+9e528 8 146 206
+9e530 4 101 206
+9e534 4 64 239
+9e538 c 96 239
+9e544 8 97 239
+9e54c 8 319 202
+9e554 4 97 239
+9e558 8 161 202
+9e560 4 161 202
+9e564 4 175 237
+9e568 4 164 239
+9e56c 4 160 239
+9e570 c 165 239
+9e57c c 74 239
+9e588 8 86 244
+9e590 8 146 206
+9e598 c 86 244
+9e5a4 8 135 223
+9e5ac 8 86 244
+9e5b4 c 600 237
+FUNC 9e5c0 a8 0 std::priv::__subformat<wchar_t, std::priv::_WTime_Info>
+9e5c0 24 148 198
+9e5e4 8 148 198
+9e5ec 8 152 198
+9e5f4 10 153 198
+9e604 4 156 198
+9e608 4 155 198
+9e60c 4 156 198
+9e610 4 155 198
+9e614 4 156 198
+9e618 4 154 198
+9e61c 18 159 198
+9e634 8 152 198
+9e63c 14 163 198
+9e650 10 161 198
+9e660 8 157 198
+FUNC 9e668 8b4 0 std::priv::__write_formatted_timeT<wchar_t, std::priv::_WTime_Info>
+9e668 10 213 198
+9e678 4 220 198
+9e67c 4 220 198
+9e680 c 213 198
+9e68c 2c 220 198
+9e6b8 18 374 198
+9e6d0 18 374 198
+9e6e8 4 64 239
+9e6ec c 96 239
+9e6f8 8 97 239
+9e700 8 161 202
+9e708 4 161 202
+9e70c 14 452 198
+9e720 1c 338 198
+9e73c 14 342 198
+9e750 4 357 198
+9e754 14 358 198
+9e768 14 452 198
+9e77c 20 206 207
+9e79c 30 381 198
+9e7cc 8 420 198
+9e7d4 10 421 198
+9e7e4 14 452 198
+9e7f8 24 226 198
+9e81c c 305 198
+9e828 1c 304 198
+9e844 4 243 198
+9e848 c 243 198
+9e854 4 243 198
+9e858 c 282 198
+9e864 4 283 198
+9e868 10 283 198
+9e878 14 452 198
+9e88c c 239 198
+9e898 28 313 198
+9e8c0 1c 222 198
+9e8dc 18 318 198
+9e8f4 1c 309 198
+9e910 4 299 198
+9e914 c 299 198
+9e920 4 299 198
+9e924 4 299 198
+9e928 4 299 198
+9e92c 4 420 198
+9e930 14 299 198
+9e944 c 420 198
+9e950 40 287 198
+9e990 4 282 198
+9e994 c 282 198
+9e9a0 4 282 198
+9e9a4 c 282 198
+9e9b0 4 283 198
+9e9b4 10 283 198
+9e9c4 18 366 198
+9e9dc 1c 366 198
+9e9f8 4 273 198
+9e9fc c 273 198
+9ea08 4 273 198
+9ea0c c 273 198
+9ea18 4 274 198
+9ea1c 10 274 198
+9ea2c 8 258 198
+9ea34 18 258 198
+9ea4c 18 258 198
+9ea64 8 259 198
+9ea6c 4 253 198
+9ea70 c 253 198
+9ea7c 4 253 198
+9ea80 c 253 198
+9ea8c 4 254 198
+9ea90 10 254 198
+9eaa0 4 394 198
+9eaa4 4 194 198
+9eaa8 4 394 198
+9eaac 4 393 198
+9eab0 1c 194 198
+9eacc 8 395 198
+9ead4 8 393 198
+9eadc 8 401 198
+9eae4 14 401 198
+9eaf8 18 401 198
+9eb10 4 401 198
+9eb14 20 194 198
+9eb34 8 402 198
+9eb3c 4 404 198
+9eb40 10 409 198
+9eb50 4 411 198
+9eb54 4 420 198
+9eb58 1c 411 198
+9eb74 4 386 198
+9eb78 4 387 198
+9eb7c 4 386 198
+9eb80 4 387 198
+9eb84 8 420 198
+9eb8c 2c 357 198
+9ebb8 18 352 198
+9ebd0 18 263 198
+9ebe8 1c 348 198
+9ec04 24 206 207
+9ec28 8 292 198
+9ec30 4 420 198
+9ec34 8 292 198
+9ec3c 24 234 198
+9ec60 18 370 198
+9ec78 1c 370 198
+9ec94 40 278 198
+9ecd4 10 206 207
+9ece4 4 268 198
+9ece8 c 268 198
+9ecf4 4 268 198
+9ecf8 10 268 198
+9ed08 8 269 198
+9ed10 18 258 198
+9ed28 8 258 198
+9ed30 4 258 198
+9ed34 10 258 198
+9ed44 24 259 198
+9ed68 14 259 198
+9ed7c 8 259 198
+9ed84 10 268 198
+9ed94 4 269 198
+9ed98 10 269 198
+9eda8 c 243 198
+9edb4 4 244 198
+9edb8 10 244 198
+9edc8 c 299 198
+9edd4 4 258 198
+9edd8 4 258 198
+9eddc 8 258 198
+9ede4 8 135 223
+9edec c 258 198
+9edf8 4 417 198
+9edfc 4 420 198
+9ee00 24 417 198
+9ee24 4 414 198
+9ee28 8 420 198
+9ee30 8 397 198
+9ee38 8 398 198
+9ee40 14 398 198
+9ee54 18 398 198
+9ee6c 4 398 198
+9ee70 20 194 198
+9ee90 10 195 198
+9eea0 8 64 239
+9eea8 c 96 239
+9eeb4 18 97 239
+9eecc 8 64 239
+9eed4 c 96 239
+9eee0 14 97 239
+9eef4 8 64 239
+9eefc c 96 239
+9ef08 14 97 239
+FUNC 9ef1c 4 0 std::priv::__write_formatted_time
+9ef1c 4 462 198
+FUNC 9ef20 294 0 std::priv::time_init<char>::time_init
+9ef20 10 502 198
+9ef30 4 101 206
+9ef34 10 502 198
+9ef44 c 120 239
+9ef50 4 481 202
+9ef54 4 120 239
+9ef58 4 101 206
+9ef5c 14 120 239
+9ef70 4 481 202
+9ef74 4 120 239
+9ef78 4 101 206
+9ef7c c 120 239
+9ef88 4 481 202
+9ef8c 4 120 239
+9ef90 4 101 206
+9ef94 c 120 239
+9efa0 4 481 202
+9efa4 4 120 239
+9efa8 4 101 206
+9efac c 120 239
+9efb8 4 481 202
+9efbc 4 120 239
+9efc0 4 101 206
+9efc4 4 72 243
+9efc8 4 120 239
+9efcc 4 72 243
+9efd0 8 481 202
+9efd8 4 101 206
+9efdc 4 120 239
+9efe0 4 481 202
+9efe4 4 101 206
+9efe8 4 120 239
+9efec 4 481 202
+9eff0 4 101 206
+9eff4 4 120 239
+9eff8 4 481 202
+9effc 4 101 206
+9f000 4 120 239
+9f004 4 481 202
+9f008 4 101 206
+9f00c 4 120 239
+9f010 4 481 202
+9f014 4 101 206
+9f018 4 120 239
+9f01c 4 481 202
+9f020 4 101 206
+9f024 4 120 239
+9f028 4 481 202
+9f02c 4 101 206
+9f030 4 120 239
+9f034 4 481 202
+9f038 4 101 206
+9f03c 4 120 239
+9f040 4 481 202
+9f044 4 101 206
+9f048 4 120 239
+9f04c 4 481 202
+9f050 4 101 206
+9f054 4 120 239
+9f058 4 481 202
+9f05c 4 101 206
+9f060 4 120 239
+9f064 4 481 202
+9f068 4 101 206
+9f06c 4 120 239
+9f070 4 481 202
+9f074 4 101 206
+9f078 4 120 239
+9f07c 4 481 202
+9f080 4 101 206
+9f084 8 72 243
+9f08c 8 120 239
+9f094 8 481 202
+9f09c 8 101 206
+9f0a4 8 120 239
+9f0ac 8 481 202
+9f0b4 4 101 206
+9f0b8 4 503 198
+9f0bc 8 229 247
+9f0c4 4 355 238
+9f0c8 14 355 238
+9f0dc 10 77 198
+9f0ec 8 229 247
+9f0f4 4 355 238
+9f0f8 14 355 238
+9f10c 8 79 198
+9f114 70 355 238
+9f184 20 504 198
+9f1a4 10 503 198
+FUNC 9f1b4 c0 0 std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::_M_assign
+9f1b4 14 242 237
+9f1c8 4 243 237
+9f1cc 4 242 237
+9f1d0 4 400 238
+9f1d4 4 242 237
+9f1d8 4 243 237
+9f1dc 4 242 237
+9f1e0 8 400 238
+9f1e8 8 244 237
+9f1f0 c 249 247
+9f1fc 8 246 237
+9f204 8 803 238
+9f20c c 249 247
+9f218 4 806 238
+9f21c 4 249 247
+9f220 c 806 238
+9f22c 14 253 237
+9f240 4 249 247
+9f244 4 400 238
+9f248 4 250 237
+9f24c 4 400 238
+9f250 4 250 237
+9f254 4 400 238
+9f258 8 250 237
+9f260 14 253 237
+FUNC 9f274 2bc 0 std::priv::time_init<wchar_t>::time_init
+9f274 4 527 198
+9f278 8 120 239
+9f280 c 527 198
+9f28c 4 101 206
+9f290 10 527 198
+9f2a0 c 120 239
+9f2ac 4 481 202
+9f2b0 4 120 239
+9f2b4 4 101 206
+9f2b8 14 120 239
+9f2cc 4 481 202
+9f2d0 4 120 239
+9f2d4 4 101 206
+9f2d8 c 120 239
+9f2e4 4 481 202
+9f2e8 4 120 239
+9f2ec 4 101 206
+9f2f0 c 120 239
+9f2fc 4 481 202
+9f300 4 120 239
+9f304 4 101 206
+9f308 8 120 239
+9f310 4 80 243
+9f314 8 481 202
+9f31c 4 101 206
+9f320 4 80 243
+9f324 8 120 239
+9f32c 4 481 202
+9f330 4 101 206
+9f334 4 120 239
+9f338 4 481 202
+9f33c 4 101 206
+9f340 4 120 239
+9f344 4 481 202
+9f348 4 101 206
+9f34c 4 120 239
+9f350 4 481 202
+9f354 4 101 206
+9f358 4 120 239
+9f35c 4 481 202
+9f360 4 101 206
+9f364 4 120 239
+9f368 4 481 202
+9f36c 4 101 206
+9f370 4 120 239
+9f374 4 481 202
+9f378 4 101 206
+9f37c 4 120 239
+9f380 4 481 202
+9f384 4 101 206
+9f388 4 120 239
+9f38c 4 481 202
+9f390 4 101 206
+9f394 4 120 239
+9f398 4 481 202
+9f39c 4 101 206
+9f3a0 4 120 239
+9f3a4 4 481 202
+9f3a8 4 101 206
+9f3ac 4 120 239
+9f3b0 4 481 202
+9f3b4 4 101 206
+9f3b8 4 120 239
+9f3bc 4 481 202
+9f3c0 4 101 206
+9f3c4 4 120 239
+9f3c8 4 481 202
+9f3cc 4 101 206
+9f3d0 4 120 239
+9f3d4 4 481 202
+9f3d8 4 101 206
+9f3dc 8 80 243
+9f3e4 4 80 243
+9f3e8 1c 120 239
+9f404 4 481 202
+9f408 4 101 206
+9f40c 4 120 239
+9f410 4 481 202
+9f414 4 101 206
+9f418 4 528 198
+9f41c 8 264 247
+9f424 4 355 238
+9f428 14 355 238
+9f43c 14 89 198
+9f450 8 264 247
+9f458 4 355 238
+9f45c 14 355 238
+9f470 8 91 198
+9f478 14 264 247
+9f48c 8 355 238
+9f494 8 355 238
+9f49c 14 264 247
+9f4b0 8 355 238
+9f4b8 48 355 238
+9f500 20 529 198
+9f520 10 528 198
+FUNC 9f530 1a8 0 std::basic_string<char, std::char_traits<char>, std::priv::__iostring_allocator<char> >::_M_appendT<char const*>
+9f530 4 468 238
+9f534 4 470 238
+9f538 10 468 238
+9f548 8 468 238
+9f550 4 470 238
+9f554 4 64 239
+9f558 4 355 217
+9f55c 8 74 239
+9f564 c 74 239
+9f570 c 472 238
+9f57c 4 482 238
+9f580 4 232 247
+9f584 c 107 244
+9f590 10 106 244
+9f5a0 4 101 206
+9f5a4 c 485 238
+9f5b0 18 489 238
+9f5c8 4 400 238
+9f5cc 1c 304 238
+9f5e8 4 306 238
+9f5ec 10 307 238
+9f5fc 4 64 213
+9f600 4 67 213
+9f604 8 64 213
+9f60c 4 308 238
+9f610 8 134 223
+9f618 c 311 202
+9f624 c 107 244
+9f630 10 106 244
+9f640 4 107 244
+9f644 c 106 244
+9f650 4 101 206
+9f654 4 107 244
+9f658 4 64 239
+9f65c c 96 239
+9f668 8 97 239
+9f670 8 319 202
+9f678 4 97 239
+9f67c 4 135 223
+9f680 8 161 202
+9f688 4 161 202
+9f68c 4 164 239
+9f690 4 479 238
+9f694 4 165 239
+9f698 4 489 238
+9f69c 4 160 239
+9f6a0 14 489 238
+9f6b4 10 74 239
+9f6c4 8 135 223
+9f6cc c 600 237
+FUNC 9f6d8 1a8 0 std::basic_string<char, std::char_traits<char>, std::priv::__iostring_allocator<char> >::_M_appendT<char*>
+9f6d8 4 468 238
+9f6dc 4 470 238
+9f6e0 10 468 238
+9f6f0 8 468 238
+9f6f8 4 470 238
+9f6fc 4 64 239
+9f700 4 355 217
+9f704 8 74 239
+9f70c c 74 239
+9f718 c 472 238
+9f724 4 482 238
+9f728 4 232 247
+9f72c c 107 244
+9f738 10 106 244
+9f748 4 101 206
+9f74c c 485 238
+9f758 18 489 238
+9f770 4 400 238
+9f774 1c 304 238
+9f790 4 306 238
+9f794 10 307 238
+9f7a4 4 64 213
+9f7a8 4 67 213
+9f7ac 8 64 213
+9f7b4 4 308 238
+9f7b8 8 134 223
+9f7c0 c 311 202
+9f7cc c 107 244
+9f7d8 10 106 244
+9f7e8 4 107 244
+9f7ec c 106 244
+9f7f8 4 101 206
+9f7fc 4 107 244
+9f800 4 64 239
+9f804 c 96 239
+9f810 8 97 239
+9f818 8 319 202
+9f820 4 97 239
+9f824 4 135 223
+9f828 8 161 202
+9f830 4 161 202
+9f834 4 164 239
+9f838 4 479 238
+9f83c 4 165 239
+9f840 4 489 238
+9f844 4 160 239
+9f848 14 489 238
+9f85c 10 74 239
+9f86c 8 135 223
+9f874 c 600 237
+FUNC 9f880 11f8 0 std::priv::__write_formatted_timeT<char, std::priv::_Time_Info>
+9f880 10 213 198
+9f890 4 220 198
+9f894 4 220 198
+9f898 c 213 198
+9f8a4 2c 220 198
+9f8d0 4 222 198
+9f8d4 10 226 198
+9f8e4 8 470 238
+9f8ec 4 64 239
+9f8f0 4 355 217
+9f8f4 8 74 239
+9f8fc 10 74 239
+9f90c 8 472 238
+9f914 4 400 238
+9f918 1c 304 238
+9f934 4 306 238
+9f938 10 307 238
+9f948 4 64 213
+9f94c 4 67 213
+9f950 4 64 213
+9f954 8 107 244
+9f95c 10 106 244
+9f96c 4 107 244
+9f970 c 106 244
+9f97c 4 101 206
+9f980 4 107 244
+9f984 4 64 239
+9f988 c 96 239
+9f994 8 97 239
+9f99c 8 319 202
+9f9a4 4 97 239
+9f9a8 4 135 223
+9f9ac 8 161 202
+9f9b4 4 161 202
+9f9b8 4 479 238
+9f9bc 4 164 239
+9f9c0 4 160 239
+9f9c4 4 165 239
+9f9c8 14 452 198
+9f9dc 8 342 198
+9f9e4 10 352 198
+9f9f4 18 497 238
+9fa0c 20 101 207
+9fa2c 34 381 198
+9fa60 4 470 238
+9fa64 4 381 198
+9fa68 4 470 238
+9fa6c 4 64 239
+9fa70 4 355 217
+9fa74 8 74 239
+9fa7c 10 74 239
+9fa8c c 472 238
+9fa98 4 107 244
+9fa9c 4 232 247
+9faa0 c 107 244
+9faac 10 106 244
+9fabc 4 101 206
+9fac0 4 485 238
+9fac4 4 452 198
+9fac8 8 485 238
+9fad0 10 452 198
+9fae0 1c 348 198
+9fafc 28 313 198
+9fb24 4 470 238
+9fb28 4 313 198
+9fb2c 4 470 238
+9fb30 4 64 239
+9fb34 4 355 217
+9fb38 8 74 239
+9fb40 10 74 239
+9fb50 8 472 238
+9fb58 4 400 238
+9fb5c 1c 304 238
+9fb78 4 306 238
+9fb7c 10 307 238
+9fb8c 4 64 213
+9fb90 4 67 213
+9fb94 4 64 213
+9fb98 8 107 244
+9fba0 10 106 244
+9fbb0 4 107 244
+9fbb4 c 106 244
+9fbc0 4 101 206
+9fbc4 4 107 244
+9fbc8 4 64 239
+9fbcc c 96 239
+9fbd8 8 97 239
+9fbe0 8 319 202
+9fbe8 4 97 239
+9fbec 4 135 223
+9fbf0 8 161 202
+9fbf8 4 161 202
+9fbfc 4 165 239
+9fc00 4 479 238
+9fc04 4 164 239
+9fc08 4 160 239
+9fc0c 14 452 198
+9fc20 8 243 198
+9fc28 18 243 198
+9fc40 4 244 198
+9fc44 4 244 198
+9fc48 8 244 198
+9fc50 4 64 239
+9fc54 4 355 217
+9fc58 8 74 239
+9fc60 10 74 239
+9fc70 c 472 238
+9fc7c 4 107 244
+9fc80 4 232 247
+9fc84 c 107 244
+9fc90 10 106 244
+9fca0 4 485 238
+9fca4 4 101 206
+9fca8 c 485 238
+9fcb4 8 239 198
+9fcbc 4 305 198
+9fcc0 1c 304 198
+9fcdc 4 230 198
+9fce0 10 234 198
+9fcf0 8 470 238
+9fcf8 4 64 239
+9fcfc 4 355 217
+9fd00 8 74 239
+9fd08 10 74 239
+9fd18 c 472 238
+9fd24 4 482 238
+9fd28 4 232 247
+9fd2c c 107 244
+9fd38 10 106 244
+9fd48 4 101 206
+9fd4c 10 485 238
+9fd5c 18 318 198
+9fd74 4 470 238
+9fd78 4 318 198
+9fd7c 4 470 238
+9fd80 4 64 239
+9fd84 4 355 217
+9fd88 8 74 239
+9fd90 10 74 239
+9fda0 8 472 238
+9fda8 4 400 238
+9fdac 1c 304 238
+9fdc8 4 306 238
+9fdcc 10 307 238
+9fddc 4 64 213
+9fde0 4 67 213
+9fde4 4 64 213
+9fde8 8 134 223
+9fdf0 10 311 202
+9fe00 1c 309 198
+9fe1c 4 299 198
+9fe20 c 299 198
+9fe2c 4 299 198
+9fe30 4 299 198
+9fe34 4 299 198
+9fe38 4 297 198
+9fe3c c 299 198
+9fe48 4 297 198
+9fe4c 4 299 198
+9fe50 4 297 198
+9fe54 4 299 198
+9fe58 4 297 198
+9fe5c 4 470 238
+9fe60 4 297 198
+9fe64 8 470 238
+9fe6c 40 287 198
+9feac 4 470 238
+9feb0 4 287 198
+9feb4 8 470 238
+9febc 18 374 198
+9fed4 18 374 198
+9feec 4 64 239
+9fef0 c 96 239
+9fefc 8 97 239
+9ff04 8 161 202
+9ff0c 4 161 202
+9ff10 4 375 198
+9ff14 8 282 198
+9ff1c 18 282 198
+9ff34 4 283 198
+9ff38 4 283 198
+9ff3c 8 283 198
+9ff44 4 64 239
+9ff48 4 355 217
+9ff4c 8 74 239
+9ff54 10 74 239
+9ff64 8 472 238
+9ff6c 4 400 238
+9ff70 1c 304 238
+9ff8c 4 306 238
+9ff90 10 307 238
+9ffa0 4 64 213
+9ffa4 4 67 213
+9ffa8 4 64 213
+9ffac 8 107 244
+9ffb4 10 106 244
+9ffc4 4 107 244
+9ffc8 c 106 244
+9ffd4 4 107 244
+9ffd8 4 64 239
+9ffdc 4 101 206
+9ffe0 c 96 239
+9ffec 18 366 198
+a0004 1c 366 198
+a0020 8 258 198
+a0028 8 258 198
+a0030 8 258 198
+a0038 c 258 198
+a0044 c 258 198
+a0050 4 258 198
+a0054 8 258 198
+a005c 8 258 198
+a0064 20 259 198
+a0084 10 259 198
+a0094 8 253 198
+a009c 18 253 198
+a00b4 4 254 198
+a00b8 4 254 198
+a00bc 8 254 198
+a00c4 8 274 198
+a00cc 8 394 198
+a00d4 4 393 198
+a00d8 20 194 198
+a00f8 8 395 198
+a0100 8 393 198
+a0108 8 401 198
+a0110 14 401 198
+a0124 18 401 198
+a013c 4 401 198
+a0140 20 194 198
+a0160 8 402 198
+a0168 4 404 198
+a016c 10 409 198
+a017c 4 411 198
+a0180 4 420 198
+a0184 1c 411 198
+a01a0 8 273 198
+a01a8 18 273 198
+a01c0 4 274 198
+a01c4 4 274 198
+a01c8 8 274 198
+a01d0 8 274 198
+a01d8 4 338 198
+a01dc 8 497 238
+a01e4 8 338 198
+a01ec 10 497 238
+a01fc 8 268 198
+a0204 1c 268 198
+a0220 4 269 198
+a0224 4 269 198
+a0228 8 269 198
+a0230 8 274 198
+a0238 28 357 198
+a0260 4 64 239
+a0264 8 74 239
+a026c 10 74 239
+a027c c 472 238
+a0288 4 232 247
+a028c 4 483 238
+a0290 c 106 244
+a029c 4 101 206
+a02a0 10 485 238
+a02b0 c 352 198
+a02bc 14 263 198
+a02d0 c 305 198
+a02dc 4 386 198
+a02e0 4 387 198
+a02e4 8 386 198
+a02ec c 420 198
+a02f8 4 470 238
+a02fc 4 420 198
+a0300 4 470 238
+a0304 4 64 239
+a0308 4 355 217
+a030c 8 74 239
+a0314 10 74 239
+a0324 8 472 238
+a032c 4 400 238
+a0330 1c 304 238
+a034c 4 306 238
+a0350 10 307 238
+a0360 4 64 213
+a0364 4 67 213
+a0368 4 64 213
+a036c 10 107 244
+a037c 10 234 198
+a038c 10 226 198
+a039c 24 101 207
+a03c0 18 370 198
+a03d8 1c 370 198
+a03f4 30 278 198
+a0424 8 470 238
+a042c 4 64 239
+a0430 4 355 217
+a0434 8 74 239
+a043c 10 74 239
+a044c 8 472 238
+a0454 4 400 238
+a0458 1c 304 238
+a0474 4 306 238
+a0478 10 307 238
+a0488 4 64 213
+a048c 4 67 213
+a0490 4 64 213
+a0494 10 107 244
+a04a4 14 292 198
+a04b8 4 470 238
+a04bc 4 292 198
+a04c0 8 470 238
+a04c8 10 101 207
+a04d8 18 282 198
+a04f0 4 283 198
+a04f4 4 283 198
+a04f8 8 283 198
+a0500 8 283 198
+a0508 4 400 238
+a050c 1c 304 238
+a0528 4 306 238
+a052c 10 307 238
+a053c 4 64 213
+a0540 4 67 213
+a0544 4 64 213
+a0548 8 134 223
+a0550 10 311 202
+a0560 4 400 238
+a0564 1c 304 238
+a0580 4 306 238
+a0584 10 307 238
+a0594 4 64 213
+a0598 4 67 213
+a059c 4 64 213
+a05a0 10 107 244
+a05b0 8 135 223
+a05b8 10 74 239
+a05c8 8 308 238
+a05d0 10 74 239
+a05e0 4 308 238
+a05e4 8 134 223
+a05ec 10 311 202
+a05fc 4 400 238
+a0600 1c 304 238
+a061c 4 306 238
+a0620 10 307 238
+a0630 4 64 213
+a0634 4 67 213
+a0638 4 64 213
+a063c 8 134 223
+a0644 10 311 202
+a0654 c 299 198
+a0660 8 259 198
+a0668 8 135 223
+a0670 10 74 239
+a0680 4 308 238
+a0684 8 134 223
+a068c 10 311 202
+a069c 4 417 198
+a06a0 4 420 198
+a06a4 24 417 198
+a06c8 4 414 198
+a06cc 8 420 198
+a06d4 4 400 238
+a06d8 20 304 238
+a06f8 4 306 238
+a06fc 10 307 238
+a070c 4 64 213
+a0710 4 67 213
+a0714 4 64 213
+a0718 8 107 244
+a0720 10 106 244
+a0730 4 107 244
+a0734 c 106 244
+a0740 4 101 206
+a0744 4 64 239
+a0748 c 96 239
+a0754 8 97 239
+a075c 8 319 202
+a0764 4 97 239
+a0768 4 135 223
+a076c 8 161 202
+a0774 4 161 202
+a0778 4 479 238
+a077c 4 164 239
+a0780 4 160 239
+a0784 8 165 239
+a078c c 258 198
+a0798 1c 268 198
+a07b4 4 269 198
+a07b8 4 269 198
+a07bc 8 269 198
+a07c4 8 274 198
+a07cc 18 273 198
+a07e4 4 274 198
+a07e8 4 274 198
+a07ec 8 274 198
+a07f4 8 274 198
+a07fc 18 253 198
+a0814 4 254 198
+a0818 4 254 198
+a081c 8 254 198
+a0824 8 274 198
+a082c 18 243 198
+a0844 4 244 198
+a0848 4 244 198
+a084c 8 244 198
+a0854 8 274 198
+a085c 8 397 198
+a0864 8 398 198
+a086c 14 398 198
+a0880 18 398 198
+a0898 4 398 198
+a089c 20 194 198
+a08bc 8 195 198
+a08c4 30 74 239
+a08f4 4 308 238
+a08f8 8 134 223
+a0900 10 311 202
+a0910 c 308 238
+a091c 8 134 223
+a0924 10 311 202
+a0934 10 135 223
+a0944 10 74 239
+a0954 4 308 238
+a0958 8 134 223
+a0960 10 311 202
+a0970 30 74 239
+a09a0 4 308 238
+a09a4 8 134 223
+a09ac 10 311 202
+a09bc c 308 238
+a09c8 8 134 223
+a09d0 10 311 202
+a09e0 8 107 244
+a09e8 8 135 223
+a09f0 c 600 237
+a09fc 8 64 239
+a0a04 c 96 239
+a0a10 18 97 239
+a0a28 8 64 239
+a0a30 c 96 239
+a0a3c 14 97 239
+a0a50 8 64 239
+a0a58 c 96 239
+a0a64 14 97 239
+FUNC a0a78 4 0 std::priv::__write_formatted_time
+a0a78 4 457 198
+FUNC a0a7c a8 0 std::priv::__subformat<char, std::priv::_Time_Info>
+a0a7c 24 148 198
+a0aa0 8 148 198
+a0aa8 8 152 198
+a0ab0 10 153 198
+a0ac0 4 156 198
+a0ac4 4 155 198
+a0ac8 4 156 198
+a0acc 4 155 198
+a0ad0 4 156 198
+a0ad4 4 154 198
+a0ad8 18 159 198
+a0af0 8 152 198
+a0af8 14 163 198
+a0b0c 10 161 198
+a0b1c 8 157 198
+FUNC a0b24 8 0 std::messages<char>::do_open
+a0b24 8 77 220
+FUNC a0b2c 4 0 std::messages<char>::do_close
+a0b2c 4 82 220
+FUNC a0b30 8 0 std::messages<wchar_t>::do_open
+a0b30 8 110 220
+FUNC a0b38 4 0 std::messages<wchar_t>::do_close
+a0b38 4 115 220
+FUNC a0b3c 14 0 std::messages<char>::~messages
+a0b3c 14 74 220
+FUNC a0b50 34 0 std::messages<char>::~messages
+a0b50 14 74 220
+a0b64 10 74 220
+a0b74 4 74 220
+a0b78 8 74 220
+a0b80 4 74 220
+FUNC a0b84 14 0 std::messages<wchar_t>::~messages
+a0b84 14 107 220
+FUNC a0b98 34 0 std::messages<wchar_t>::~messages
+a0b98 14 107 220
+a0bac 10 107 220
+a0bbc 4 107 220
+a0bc0 8 107 220
+a0bc8 4 107 220
+FUNC a0bcc 44 0 std::messages<char>::messages
+a0bcc 4 188 189
+a0bd0 4 86 219
+a0bd4 4 340 241
+a0bd8 8 188 189
+a0be0 4 188 189
+a0be4 4 86 219
+a0be8 4 340 241
+a0bec 4 457 241
+a0bf0 4 340 241
+a0bf4 1c 189 189
+FUNC a0c10 44 0 std::messages<wchar_t>::messages
+a0c10 4 217 189
+a0c14 4 86 219
+a0c18 4 340 241
+a0c1c 8 217 189
+a0c24 4 217 189
+a0c28 4 86 219
+a0c2c 4 340 241
+a0c30 4 457 241
+a0c34 4 340 241
+a0c38 1c 218 189
+FUNC a0c54 28 0 std::messages<char>::do_get
+a0c54 4 78 220
+a0c58 8 80 220
+a0c60 4 78 220
+a0c64 18 80 220
+FUNC a0c7c a8 0 std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::basic_string
+a0c7c 14 647 237
+a0c90 4 112 239
+a0c94 c 481 202
+a0ca0 8 378 238
+a0ca8 8 379 238
+a0cb0 c 107 244
+a0cbc c 106 244
+a0cc8 4 107 244
+a0ccc 4 380 238
+a0cd0 4 101 206
+a0cd4 10 649 237
+a0ce4 8 64 239
+a0cec c 96 239
+a0cf8 8 97 239
+a0d00 8 161 202
+a0d08 10 161 202
+a0d18 c 135 223
+FUNC a0d24 28 0 std::messages<wchar_t>::do_get
+a0d24 4 111 220
+a0d28 8 113 220
+a0d30 4 111 220
+a0d34 18 113 220
+FUNC a0d4c 34 0 __popcountdi2
+a0d4c c 846 147
+a0d58 10 847 147
+a0d68 4 849 147
+a0d6c 8 848 147
+a0d74 4 849 147
+a0d78 8 858 147
+FUNC a0d80 aa4 0 __addtf3
+a0d80 1c 36 148
+a0d9c 8 36 148
+a0da4 4 43 148
+a0da8 8 44 148
+a0db0 8 45 148
+a0db8 8 44 148
+a0dc0 4 44 148
+a0dc4 4 46 148
+a0dc8 4 44 148
+a0dcc 4 44 148
+a0dd0 4 45 148
+a0dd4 4 45 148
+a0dd8 4 45 148
+a0ddc 4 44 148
+a0de0 4 44 148
+a0de4 4 45 148
+a0de8 8 45 148
+a0df0 4 46 148
+a0df4 10 46 148
+a0e04 4 46 148
+a0e08 8 46 148
+a0e10 8 46 148
+a0e18 14 46 148
+a0e2c 4 46 148
+a0e30 4 46 148
+a0e34 8 46 148
+a0e3c 8 46 148
+a0e44 8 46 148
+a0e4c c 46 148
+a0e58 4 46 148
+a0e5c 4 46 148
+a0e60 4 46 148
+a0e64 4 46 148
+a0e68 4 46 148
+a0e6c 4 46 148
+a0e70 8 46 148
+a0e78 c 46 148
+a0e84 4 46 148
+a0e88 4 46 148
+a0e8c c 46 148
+a0e98 14 46 148
+a0eac 8 46 148
+a0eb4 4 46 148
+a0eb8 4 46 148
+a0ebc 18 46 148
+a0ed4 8 46 148
+a0edc 4 46 148
+a0ee0 8 46 148
+a0ee8 c 46 148
+a0ef4 8 46 148
+a0efc c 46 148
+a0f08 c 46 148
+a0f14 8 46 148
+a0f1c 8 46 148
+a0f24 14 46 148
+a0f38 4 46 148
+a0f3c 4 46 148
+a0f40 8 46 148
+a0f48 8 46 148
+a0f50 c 46 148
+a0f5c 4 46 148
+a0f60 4 46 148
+a0f64 8 46 148
+a0f6c 4 46 148
+a0f70 4 46 148
+a0f74 8 46 148
+a0f7c c 46 148
+a0f88 4 46 148
+a0f8c 4 46 148
+a0f90 c 46 148
+a0f9c 14 46 148
+a0fb0 8 46 148
+a0fb8 4 46 148
+a0fbc 4 46 148
+a0fc0 c 46 148
+a0fcc 4 45 148
+a0fd0 8 46 148
+a0fd8 18 46 148
+a0ff0 4 46 148
+a0ff4 4 46 148
+a0ff8 8 46 148
+a1000 14 46 148
+a1014 c 46 148
+a1020 8 46 148
+a1028 4 46 148
+a102c 4 46 148
+a1030 4 46 148
+a1034 8 46 148
+a103c c 46 148
+a1048 4 37 148
+a104c 4 46 148
+a1050 8 46 148
+a1058 4 46 148
+a105c 8 46 148
+a1064 8 46 148
+a106c 8 46 148
+a1074 10 46 148
+a1084 4 46 148
+a1088 c 46 148
+a1094 24 46 148
+a10b8 8 37 148
+a10c0 8 46 148
+a10c8 8 46 148
+a10d0 1c 46 148
+a10ec 8 46 148
+a10f4 4 46 148
+a10f8 8 46 148
+a1100 4 46 148
+a1104 2c 46 148
+a1130 8 46 148
+a1138 8 46 148
+a1140 1c 46 148
+a115c c 46 148
+a1168 10 46 148
+a1178 10 46 148
+a1188 4 46 148
+a118c 8 46 148
+a1194 c 46 148
+a11a0 8 46 148
+a11a8 18 46 148
+a11c0 4 46 148
+a11c4 4 46 148
+a11c8 8 46 148
+a11d0 8 46 148
+a11d8 4 46 148
+a11dc 4 44 148
+a11e0 4 46 148
+a11e4 4 44 148
+a11e8 8 46 148
+a11f0 8 46 148
+a11f8 8 46 148
+a1200 c 46 148
+a120c 4 46 148
+a1210 4 46 148
+a1214 4 46 148
+a1218 4 46 148
+a121c 4 46 148
+a1220 4 46 148
+a1224 8 46 148
+a122c c 46 148
+a1238 4 46 148
+a123c 4 46 148
+a1240 c 46 148
+a124c 14 46 148
+a1260 8 46 148
+a1268 4 46 148
+a126c 4 46 148
+a1270 1c 46 148
+a128c 8 46 148
+a1294 4 46 148
+a1298 8 46 148
+a12a0 c 46 148
+a12ac 8 46 148
+a12b4 18 46 148
+a12cc c 46 148
+a12d8 8 46 148
+a12e0 8 46 148
+a12e8 18 46 148
+a1300 4 46 148
+a1304 4 46 148
+a1308 8 46 148
+a1310 8 46 148
+a1318 c 46 148
+a1324 4 46 148
+a1328 4 46 148
+a132c 8 46 148
+a1334 4 46 148
+a1338 4 46 148
+a133c 8 46 148
+a1344 c 46 148
+a1350 4 46 148
+a1354 4 46 148
+a1358 c 46 148
+a1364 14 46 148
+a1378 8 46 148
+a1380 4 46 148
+a1384 4 46 148
+a1388 14 46 148
+a139c c 45 148
+a13a8 18 46 148
+a13c0 4 46 148
+a13c4 4 46 148
+a13c8 4 46 148
+a13cc 14 46 148
+a13e0 4 46 148
+a13e4 18 46 148
+a13fc 18 46 148
+a1414 8 46 148
+a141c 18 46 148
+a1434 c 46 148
+a1440 4 46 148
+a1444 4 46 148
+a1448 4 46 148
+a144c 8 46 148
+a1454 c 46 148
+a1460 4 37 148
+a1464 4 46 148
+a1468 4 46 148
+a146c 4 46 148
+a1470 8 46 148
+a1478 4 46 148
+a147c 30 46 148
+a14ac 4 46 148
+a14b0 10 46 148
+a14c0 4 46 148
+a14c4 c 46 148
+a14d0 c 46 148
+a14dc 18 46 148
+a14f4 1c 46 148
+a1510 c 46 148
+a151c 4 46 148
+a1520 8 46 148
+a1528 4 46 148
+a152c 4 46 148
+a1530 4 46 148
+a1534 4 46 148
+a1538 c 46 148
+a1544 1c 46 148
+a1560 c 46 148
+a156c 10 46 148
+a157c c 46 148
+a1588 c 46 148
+a1594 4 46 148
+a1598 4 46 148
+a159c 8 46 148
+a15a4 4 46 148
+a15a8 4 46 148
+a15ac 8 46 148
+a15b4 c 46 148
+a15c0 4 46 148
+a15c4 4 46 148
+a15c8 c 46 148
+a15d4 18 46 148
+a15ec c 46 148
+a15f8 20 45 148
+a1618 4 47 148
+a161c 1c 47 148
+a1638 4 47 148
+a163c 8 47 148
+a1644 1c 47 148
+a1660 c 47 148
+a166c 8 47 148
+a1674 8 47 148
+a167c 4 47 148
+a1680 14 47 148
+a1694 4 47 148
+a1698 4 47 148
+a169c 4 47 148
+a16a0 4 47 148
+a16a4 4 47 148
+a16a8 14 47 148
+a16bc 4 47 148
+a16c0 4 47 148
+a16c4 4 47 148
+a16c8 8 47 148
+a16d0 18 47 148
+a16e8 c 47 148
+a16f4 8 47 148
+a16fc c 47 148
+a1708 14 47 148
+a171c 4 47 148
+a1720 c 47 148
+a172c 18 47 148
+a1744 8 48 148
+a174c c 48 148
+a1758 4 45 148
+a175c 8 46 148
+a1764 14 45 148
+a1778 10 46 148
+a1788 10 46 148
+a1798 8 46 148
+a17a0 18 46 148
+a17b8 18 46 148
+a17d0 8 37 148
+a17d8 8 44 148
+a17e0 4 46 148
+a17e4 10 47 148
+a17f4 8 47 148
+a17fc 4 46 148
+a1800 4 37 148
+a1804 8 46 148
+a180c 4 46 148
+a1810 4 37 148
+a1814 8 46 148
+a181c 8 51 148
+FUNC a1824 100 0 __eqtf2
+a1824 1c 36 149
+a1840 c 36 149
+a184c 4 42 149
+a1850 c 43 149
+a185c c 44 149
+a1868 c 45 149
+a1874 8 45 149
+a187c 8 45 149
+a1884 8 45 149
+a188c 8 45 149
+a1894 14 45 149
+a18a8 8 45 149
+a18b0 4 45 149
+a18b4 10 45 149
+a18c4 c 46 149
+a18d0 8 46 149
+a18d8 8 46 149
+a18e0 c 46 149
+a18ec c 46 149
+a18f8 4 46 149
+a18fc 4 48 149
+a1900 10 48 149
+a1910 c 46 149
+a191c 8 51 149
+FUNC a1924 13c 0 __getf2
+a1924 18 36 151
+a193c c 36 151
+a1948 4 42 151
+a194c c 43 151
+a1958 8 45 151
+a1960 c 44 151
+a196c 4 45 151
+a1970 c 45 151
+a197c 8 45 151
+a1984 8 45 151
+a198c 4 45 151
+a1990 4 45 151
+a1994 c 45 151
+a19a0 4 45 151
+a19a4 4 45 151
+a19a8 c 45 151
+a19b4 4 45 151
+a19b8 4 45 151
+a19bc 4 45 151
+a19c0 4 44 151
+a19c4 4 45 151
+a19c8 4 45 151
+a19cc 4 43 151
+a19d0 4 45 151
+a19d4 8 45 151
+a19dc 8 45 151
+a19e4 4 45 151
+a19e8 8 45 151
+a19f0 10 45 151
+a1a00 10 45 151
+a1a10 8 45 151
+a1a18 c 45 151
+a1a24 10 45 151
+a1a34 8 45 151
+a1a3c 10 48 151
+a1a4c c 45 151
+a1a58 8 51 151
+FUNC a1a60 6bc 0 __multf3
+a1a60 14 36 152
+a1a74 c 36 152
+a1a80 4 43 152
+a1a84 30 44 152
+a1ab4 4 44 152
+a1ab8 4 44 152
+a1abc 4 44 152
+a1ac0 4 44 152
+a1ac4 8 44 152
+a1acc 8 44 152
+a1ad4 4 44 152
+a1ad8 4 44 152
+a1adc 4 44 152
+a1ae0 4 44 152
+a1ae4 c 44 152
+a1af0 20 44 152
+a1b10 c 44 152
+a1b1c 18 44 152
+a1b34 8 44 152
+a1b3c 18 44 152
+a1b54 10 44 152
+a1b64 4 44 152
+a1b68 4 37 152
+a1b6c 30 45 152
+a1b9c 4 45 152
+a1ba0 4 45 152
+a1ba4 4 45 152
+a1ba8 4 45 152
+a1bac 8 45 152
+a1bb4 8 45 152
+a1bbc 4 45 152
+a1bc0 4 45 152
+a1bc4 4 45 152
+a1bc8 4 45 152
+a1bcc c 45 152
+a1bd8 20 45 152
+a1bf8 c 45 152
+a1c04 14 45 152
+a1c18 8 45 152
+a1c20 18 45 152
+a1c38 10 45 152
+a1c48 4 45 152
+a1c4c 4c 46 152
+a1c98 4 46 152
+a1c9c 8 46 152
+a1ca4 2c 46 152
+a1cd0 8 46 152
+a1cd8 30 46 152
+a1d08 8 46 152
+a1d10 34 46 152
+a1d44 8 46 152
+a1d4c 28 46 152
+a1d74 8 46 152
+a1d7c 54 46 152
+a1dd0 8 46 152
+a1dd8 8 46 152
+a1de0 8 46 152
+a1de8 c 46 152
+a1df4 4 46 152
+a1df8 4 46 152
+a1dfc 4 46 152
+a1e00 4 46 152
+a1e04 4 46 152
+a1e08 8 46 152
+a1e10 c 46 152
+a1e1c 4 46 152
+a1e20 20 46 152
+a1e40 4 46 152
+a1e44 8 46 152
+a1e4c 1c 47 152
+a1e68 14 47 152
+a1e7c 10 47 152
+a1e8c 8 47 152
+a1e94 1c 47 152
+a1eb0 c 47 152
+a1ebc 8 47 152
+a1ec4 8 47 152
+a1ecc 4 47 152
+a1ed0 10 47 152
+a1ee0 4 47 152
+a1ee4 8 47 152
+a1eec 18 47 152
+a1f04 14 47 152
+a1f18 3c 47 152
+a1f54 10 47 152
+a1f64 10 47 152
+a1f74 8 47 152
+a1f7c 10 47 152
+a1f8c 8 47 152
+a1f94 4 47 152
+a1f98 4 47 152
+a1f9c c 47 152
+a1fa8 c 47 152
+a1fb4 4 47 152
+a1fb8 4 47 152
+a1fbc c 47 152
+a1fc8 14 47 152
+a1fdc 8 47 152
+a1fe4 1c 47 152
+a2000 c 47 152
+a200c 8 47 152
+a2014 8 47 152
+a201c 4 47 152
+a2020 10 47 152
+a2030 8 47 152
+a2038 14 47 152
+a204c 8 47 152
+a2054 4 47 152
+a2058 4 47 152
+a205c 8 47 152
+a2064 c 47 152
+a2070 18 47 152
+a2088 28 47 152
+a20b0 4 47 152
+a20b4 8 47 152
+a20bc 8 47 152
+a20c4 10 46 152
+a20d4 4 47 152
+a20d8 8 47 152
+a20e0 c 47 152
+a20ec 18 47 152
+a2104 8 48 152
+a210c 8 48 152
+a2114 8 51 152
+FUNC a211c 64 0 __floatsitf
+a211c 4 41 150
+a2120 4 41 150
+a2124 8 41 150
+a212c 4 41 150
+a2130 4 41 150
+a2134 4 41 150
+a2138 4 41 150
+a213c 4 41 150
+a2140 4 41 150
+a2144 4 41 150
+a2148 c 41 150
+a2154 c 41 150
+a2160 1c 42 150
+a217c 4 45 150
+FUNC a2180 28 0 read_uleb128
+a2180 4 137 157
+a2184 4 133 157
+a2188 4 140 157
+a218c 8 141 157
+a2194 4 142 157
+a2198 4 141 157
+a219c 4 144 157
+a21a0 4 146 157
+a21a4 4 148 157
+FUNC a21a8 40 0 read_sleb128
+a21a8 4 159 157
+a21ac 4 155 157
+a21b0 4 162 157
+a21b4 8 163 157
+a21bc 4 164 157
+a21c0 4 163 157
+a21c4 4 166 157
+a21c8 8 169 157
+a21d0 4 169 157
+a21d4 c 170 157
+a21e0 4 172 157
+a21e4 4 174 157
+FUNC a21e8 f0 0 read_encoded_value_with_base
+a21e8 18 183 157
+a2200 4 198 157
+a2204 8 183 157
+a220c 4 198 157
+a2210 4 201 157
+a2214 c 202 157
+a2220 24 207 157
+a2244 10 217 157
+a2254 c 225 157
+a2260 4 226 157
+a2264 4 228 157
+a2268 8 231 157
+a2270 4 233 157
+a2274 8 235 157
+a227c 4 237 157
+a2280 8 244 157
+a2288 4 246 157
+a228c 8 248 157
+a2294 4 250 157
+a2298 8 252 157
+a22a0 4 254 157
+a22a4 4 257 157
+a22a8 4 260 157
+a22ac 4 263 157
+a22b0 8 263 157
+a22b8 4 262 157
+a22bc 4 264 157
+a22c0 4 265 157
+a22c4 4 269 157
+a22c8 10 271 157
+FUNC a22d8 114 0 init_dwarf_reg_size_table
+a22d8 110 1549 156
+a23e8 4 1550 156
+FUNC a23ec 3c 0 _Unwind_SetSpColumn
+a23ec 4 1368 156
+a23f0 8 1367 156
+a23f8 c 1370 156
+a2404 4 1371 156
+a2408 4 218 156
+a240c 4 312 156
+a2410 8 313 156
+a2418 4 1374 156
+a241c 4 314 156
+a2420 8 1378 156
+FUNC a2428 58 0 _Unwind_GetGR
+a2428 4 225 156
+a242c 4 235 156
+a2430 4 225 156
+a2434 4 235 156
+a2438 4 235 156
+a243c c 236 156
+a2448 4 218 156
+a244c 4 237 156
+a2450 4 236 156
+a2454 4 239 156
+a2458 c 239 156
+a2464 4 115 156
+a2468 4 240 156
+a246c 8 243 156
+a2474 4 244 156
+a2478 8 250 156
+FUNC a2480 10c 0 uw_install_context_1
+a2480 10 1632 156
+a2490 4 218 156
+a2494 4 1632 156
+a2498 4 1632 156
+a249c 4 301 156
+a24a0 8 301 156
+a24a8 8 1638 156
+a24b0 10 1639 156
+a24c0 4 1632 156
+a24c4 8 1664 156
+a24cc 4 1643 156
+a24d0 4 1644 156
+a24d4 8 1646 156
+a24dc 8 1646 156
+a24e4 8 1647 156
+a24ec 4 1647 156
+a24f0 8 1647 156
+a24f8 10 1651 156
+a2508 8 1654 156
+a2510 8 1663 156
+a2518 10 1663 156
+a2528 c 1664 156
+a2534 4 1641 156
+a2538 8 1641 156
+a2540 4 218 156
+a2544 4 301 156
+a2548 4 301 156
+a254c 4 1682 156
+a2550 4 301 156
+a2554 4 1670 156
+a2558 4 1682 156
+a255c 4 1670 156
+a2560 c 255 156
+a256c 10 1678 156
+a257c 10 1683 156
+FUNC a258c 8 0 _Unwind_GetCFA
+a258c 8 264 156
+FUNC a2594 58 0 _Unwind_SetGR
+a2594 4 270 156
+a2598 4 275 156
+a259c 4 270 156
+a25a0 4 275 156
+a25a4 4 275 156
+a25a8 c 276 156
+a25b4 4 218 156
+a25b8 4 276 156
+a25bc 4 278 156
+a25c0 c 278 156
+a25cc 4 280 156
+a25d0 4 281 156
+a25d4 4 286 156
+a25d8 4 284 156
+a25dc 4 286 156
+a25e0 4 287 156
+a25e4 8 293 156
+FUNC a25ec 8 0 _Unwind_GetIP
+a25ec 8 348 156
+FUNC a25f4 14 0 _Unwind_GetIPInfo
+a25f4 4 202 156
+a25f8 4 358 156
+a25fc 4 202 156
+a2600 4 356 156
+a2604 4 358 156
+FUNC a2608 8 0 _Unwind_SetIP
+a2608 4 365 156
+a260c 4 366 156
+FUNC a2610 8 0 _Unwind_GetLanguageSpecificData
+a2610 8 372 156
+FUNC a2618 8 0 _Unwind_GetRegionStart
+a2618 8 378 156
+FUNC a2620 28 0 _Unwind_FindEnclosingFunction
+a2620 4 382 156
+a2624 4 384 156
+a2628 4 382 156
+a262c 8 384 156
+a2634 4 386 156
+a2638 10 389 156
+FUNC a2648 8 0 _Unwind_GetDataRelBase
+a2648 8 396 156
+FUNC a2650 8 0 _Unwind_GetTextRelBase
+a2650 8 402 156
+FUNC a2658 78 0 base_of_encoded_value
+a2658 c 102 157
+a2664 4 103 157
+a2668 4 102 157
+a266c 4 103 157
+a2670 38 106 157
+a26a8 4 121 157
+a26ac 4 116 157
+a26b0 4 121 157
+a26b4 4 114 157
+a26b8 4 121 157
+a26bc 4 118 157
+a26c0 4 120 157
+a26c4 c 121 157
+FUNC a26d0 4f8 0 execute_cfa_program
+a26d0 1c 942 156
+a26ec 4 985 156
+a26f0 c 942 156
+a26fc 4 946 156
+a2700 4 943 156
+a2704 4 985 156
+a2708 4 1209 156
+a270c 4 1210 156
+a2710 4 1215 156
+a2714 4 1169 156
+a2718 8 957 156
+a2720 4 202 156
+a2724 14 958 156
+a2738 8 960 156
+a2740 c 964 156
+a274c 14 965 156
+a2760 8 966 156
+a2768 4 968 156
+a276c 4 969 156
+a2770 8 968 156
+a2778 8 978 156
+a2780 10 983 156
+a2790 18 985 156
+a27a8 4 991 156
+a27ac 14 282 157
+a27c0 18 282 157
+a27d8 8 993 156
+a27e0 4 995 156
+a27e4 4 998 156
+a27e8 4 999 156
+a27ec c 998 156
+a27f8 4 1000 156
+a27fc 4 1002 156
+a2800 4 1003 156
+a2804 c 1002 156
+a2810 4 1004 156
+a2814 4 1006 156
+a2818 4 1007 156
+a281c c 1006 156
+a2828 4 1008 156
+a282c c 1011 156
+a2838 c 1012 156
+a2844 c 1013 156
+a2850 10 1032 156
+a2860 4 1033 156
+a2864 8 1034 156
+a286c c 1035 156
+a2878 10 1039 156
+a2888 4 1040 156
+a288c 8 1041 156
+a2894 10 1042 156
+a28a4 c 1051 156
+a28b0 c 1052 156
+a28bc 4 1053 156
+a28c0 c 1054 156
+a28cc c 1056 156
+a28d8 8 1057 156
+a28e0 8 1065 156
+a28e8 8 1068 156
+a28f0 8 1071 156
+a28f8 10 1073 156
+a2908 4 1074 156
+a290c 4 1076 156
+a2910 4 1080 156
+a2914 14 1081 156
+a2928 8 1082 156
+a2930 8 1085 156
+a2938 c 1088 156
+a2944 8 1089 156
+a294c c 1090 156
+a2958 c 1091 156
+a2964 10 1096 156
+a2974 8 1097 156
+a297c 4 1098 156
+a2980 4 1099 156
+a2984 10 1102 156
+a2994 8 1103 156
+a299c 4 1109 156
+a29a0 4 1108 156
+a29a4 4 1109 156
+a29a8 8 1110 156
+a29b0 c 1115 156
+a29bc 4 1116 156
+a29c0 c 1117 156
+a29cc c 1119 156
+a29d8 c 1128 156
+a29e4 c 1129 156
+a29f0 c 1130 156
+a29fc 4 1131 156
+a2a00 10 1132 156
+a2a10 8 1134 156
+a2a18 c 1140 156
+a2a24 8 1141 156
+a2a2c 8 1142 156
+a2a34 4 1144 156
+a2a38 4 1142 156
+a2a3c 10 1145 156
+a2a4c 4 1146 156
+a2a50 14 1149 156
+a2a64 c 1156 156
+a2a70 c 1157 156
+a2a7c c 1158 156
+a2a88 c 1168 156
+a2a94 c 1169 156
+a2aa0 c 1170 156
+a2aac 4 1171 156
+a2ab0 c 1172 156
+a2abc 10 1174 156
+a2acc c 1180 156
+a2ad8 4 1181 156
+a2adc c 1182 156
+a2ae8 c 1184 156
+a2af4 4 1185 156
+a2af8 8 1187 156
+a2b00 8 1188 156
+a2b08 4 1189 156
+a2b0c 10 1194 156
+a2b1c 4 1196 156
+a2b20 4 1194 156
+a2b24 4 1197 156
+a2b28 10 1194 156
+a2b38 10 1202 156
+a2b48 8 1203 156
+a2b50 4 1204 156
+a2b54 c 1209 156
+a2b60 c 1210 156
+a2b6c c 1211 156
+a2b78 4 1212 156
+a2b7c c 1213 156
+a2b88 8 1216 156
+a2b90 4 1215 156
+a2b94 8 1216 156
+a2b9c c 1221 156
+a2ba8 20 1224 156
+FUNC a2bc8 41c 0 uw_frame_state_for
+a2bc8 4 1233 156
+a2bcc 4 1238 156
+a2bd0 14 1233 156
+a2be4 8 1238 156
+a2bec c 1233 156
+a2bf8 4 1238 156
+a2bfc 4 1239 156
+a2c00 4 1242 156
+a2c04 4 1240 156
+a2c08 4 1242 156
+a2c0c 8 1243 156
+a2c14 8 202 156
+a2c1c 4 1245 156
+a2c20 10 1245 156
+a2c30 4 1247 156
+a2c34 4 60 145
+a2c38 14 71 145
+a2c4c 18 71 145
+a2c64 4 76 145
+a2c68 8 84 145
+a2c70 c 85 145
+a2c7c c 83 145
+a2c88 4 85 145
+a2c8c 4 89 145
+a2c90 8 90 145
+a2c98 c 87 145
+a2ca4 c 100 145
+a2cb0 8 115 145
+a2cb8 4 101 145
+a2cbc 4 100 145
+a2cc0 18 105 145
+a2cd8 c 115 145
+a2ce4 4 133 145
+a2ce8 8 111 145
+a2cf0 c 102 145
+a2cfc 4 143 145
+a2d00 4 142 145
+a2d04 4 143 145
+a2d08 4 145 145
+a2d0c 4 143 145
+a2d10 8 147 145
+a2d18 4 149 145
+a2d1c 4 142 145
+a2d20 4 149 145
+a2d24 4 151 145
+a2d28 4 148 145
+a2d2c 8 151 145
+a2d34 4 1259 156
+a2d38 4 157 155
+a2d3c 4 1259 156
+a2d40 8 157 155
+a2d48 4 415 156
+a2d4c c 416 156
+a2d58 4 423 156
+a2d5c 4 416 156
+a2d60 8 423 156
+a2d68 c 423 156
+a2d74 4 173 156
+a2d78 4 427 156
+a2d7c 4 425 156
+a2d80 c 433 156
+a2d8c c 435 156
+a2d98 8 435 156
+a2da0 4 437 156
+a2da4 c 441 156
+a2db0 8 442 156
+a2db8 c 443 156
+a2dc4 8 444 156
+a2dcc c 445 156
+a2dd8 c 446 156
+a2de4 8 449 156
+a2dec 8 450 156
+a2df4 8 452 156
+a2dfc 4 417 156
+a2e00 c 457 156
+a2e0c 4 459 156
+a2e10 4 463 156
+a2e14 4 459 156
+a2e18 4 460 156
+a2e1c 8 462 156
+a2e24 8 460 156
+a2e2c 4 496 156
+a2e30 4 282 157
+a2e34 8 467 156
+a2e3c 8 470 156
+a2e44 c 472 156
+a2e50 8 477 156
+a2e58 10 479 156
+a2e68 8 484 156
+a2e70 4 488 156
+a2e74 4 282 157
+a2e78 4 488 156
+a2e7c c 282 157
+a2e88 10 282 157
+a2e98 c 489 156
+a2ea4 8 494 156
+a2eac c 496 156
+a2eb8 c 506 156
+a2ec4 4 494 156
+a2ec8 4 1263 156
+a2ecc 4 163 155
+a2ed0 8 1269 156
+a2ed8 4 163 155
+a2edc 8 1269 156
+a2ee4 4 1273 156
+a2ee8 8 74 157
+a2ef0 24 77 157
+a2f14 8 82 157
+a2f1c 8 84 157
+a2f24 4 88 157
+a2f28 8 75 157
+a2f30 4 80 157
+a2f34 4 1275 156
+a2f38 8 1273 156
+a2f40 4 1274 156
+a2f44 4 1273 156
+a2f48 4 1275 156
+a2f4c c 1278 156
+a2f58 4 1279 156
+a2f5c 4 1278 156
+a2f60 4 1279 156
+a2f64 c 1281 156
+a2f70 10 282 157
+a2f80 14 282 157
+a2f94 8 1286 156
+a2f9c 4 163 155
+a2fa0 4 1291 156
+a2fa4 8 1293 156
+a2fac 4 163 155
+a2fb0 c 1293 156
+a2fbc 8 1295 156
+a2fc4 4 1265 156
+a2fc8 1c 1296 156
+FUNC a2fe4 598 0 execute_stack_op
+a2fe4 14 516 156
+a2ff8 4 520 156
+a2ffc 8 516 156
+a3004 4 520 156
+a3008 8 516 156
+a3010 4 836 156
+a3014 4 770 156
+a3018 c 516 156
+a3024 4 521 156
+a3028 4 836 156
+a302c 4 801 156
+a3030 4 770 156
+a3034 4 656 156
+a3038 c 523 156
+a3044 8 525 156
+a304c 3c 530 156
+a3088 4 568 156
+a308c 4 569 156
+a3090 4 570 156
+a3094 14 530 156
+a30a8 4 585 156
+a30ac 4 587 156
+a30b0 1c 530 156
+a30cc 8 597 156
+a30d4 c0 530 156
+a3194 c 653 156
+a31a0 14 530 156
+a31b4 8 696 156
+a31bc 4 697 156
+a31c0 4 696 156
+a31c4 c 697 156
+a31d0 c 698 156
+a31dc 10 530 156
+a31ec 4 575 156
+a31f0 4 282 157
+a31f4 4 575 156
+a31f8 c 282 157
+a3204 18 282 157
+a321c 4 564 156
+a3220 4 565 156
+a3224 4 581 156
+a3228 4 583 156
+a322c 8 589 156
+a3234 4 593 156
+a3238 4 594 156
+a323c 4 595 156
+a3240 4 601 156
+a3244 4 602 156
+a3248 4 603 156
+a324c 4 197 156
+a3250 4 611 156
+a3254 10 613 156
+a3264 4 614 156
+a3268 4 615 156
+a326c 14 617 156
+a3280 4 618 156
+a3284 4 619 156
+a3288 10 656 156
+a3298 c 657 156
+a32a4 4 658 156
+a32a8 14 692 156
+a32bc 8 693 156
+a32c4 4 698 156
+a32c8 8 698 156
+a32d0 4 699 156
+a32d4 4 702 156
+a32d8 8 703 156
+a32e0 4 707 156
+a32e4 4 708 156
+a32e8 4 709 156
+a32ec 4 713 156
+a32f0 c 712 156
+a32fc c 713 156
+a3308 8 714 156
+a3310 4 715 156
+a3314 8 718 156
+a331c 8 719 156
+a3324 4 720 156
+a3328 8 725 156
+a3330 4 727 156
+a3334 4 726 156
+a3338 4 727 156
+a333c 4 728 156
+a3340 4 729 156
+a3344 8 736 156
+a334c 4 739 156
+a3350 4 738 156
+a3354 4 737 156
+a3358 4 739 156
+a335c 4 740 156
+a3360 4 741 156
+a3364 4 742 156
+a3368 4 743 156
+a336c 4 753 156
+a3370 4 754 156
+a3374 4 758 156
+a3378 4 756 156
+a337c 3c 758 156
+a33b8 4 798 156
+a33bc 4 799 156
+a33c0 24 770 156
+a33e4 4 773 156
+a33e8 4 774 156
+a33ec 4 776 156
+a33f0 4 777 156
+a33f4 4 779 156
+a33f8 4 780 156
+a33fc 4 795 156
+a3400 4 796 156
+a3404 10 801 156
+a3414 8 802 156
+a341c 4 803 156
+a3420 8 830 156
+a3428 4 831 156
+a342c 4 836 156
+a3430 4 834 156
+a3434 4 836 156
+a3438 4 833 156
+a343c 4 834 156
+a3440 14 836 156
+a3454 8 839 156
+a345c 8 842 156
+a3464 8 845 156
+a346c c 848 156
+a3478 8 851 156
+a3480 8 854 156
+a3488 8 857 156
+a3490 8 860 156
+a3498 8 863 156
+a34a0 8 866 156
+a34a8 8 869 156
+a34b0 c 872 156
+a34bc c 875 156
+a34c8 c 878 156
+a34d4 c 881 156
+a34e0 8 884 156
+a34e8 4 831 156
+a34ec 4 885 156
+a34f0 c 887 156
+a34fc 4 899 156
+a3500 4 898 156
+a3504 4 899 156
+a3508 4 900 156
+a350c 4 903 156
+a3510 4 904 156
+a3514 4 907 156
+a3518 4 185 156
+a351c 4 909 156
+a3520 4 908 156
+a3524 c 909 156
+a3530 4 916 156
+a3534 8 920 156
+a353c 10 921 156
+a354c 4 927 156
+a3550 4 928 156
+a3554 28 930 156
+FUNC a357c 224 0 uw_update_context_1
+a357c 4 1382 156
+a3580 4 1383 156
+a3584 14 1382 156
+a3598 4 1383 156
+a359c 4 1382 156
+a35a0 4 1383 156
+a35a4 4 1382 156
+a35a8 4 1383 156
+a35ac c 1382 156
+a35b8 4 1383 156
+a35bc 8 301 156
+a35c4 8 301 156
+a35cc 8 1405 156
+a35d4 10 1406 156
+a35e4 4 218 156
+a35e8 4 312 156
+a35ec 4 313 156
+a35f0 4 1411 156
+a35f4 4 314 156
+a35f8 10 1411 156
+a3608 10 1423 156
+a3618 1c 1424 156
+a3634 c 255 156
+a3640 8 1415 156
+a3648 4 1436 156
+a364c 4 1432 156
+a3650 c 1436 156
+a365c 4 1435 156
+a3660 4 1436 156
+a3664 4 1483 156
+a3668 4 326 156
+a366c 4 328 156
+a3670 24 1436 156
+a3694 c 1443 156
+a36a0 4 1448 156
+a36a4 4 339 156
+a36a8 8 1448 156
+a36b0 8 1449 156
+a36b8 10 326 156
+a36c8 4 326 156
+a36cc 4 218 156
+a36d0 4 303 156
+a36d4 4 312 156
+a36d8 4 313 156
+a36dc 8 314 156
+a36e4 c 1464 156
+a36f0 14 1465 156
+a3704 4 218 156
+a3708 4 312 156
+a370c 8 313 156
+a3714 c 1474 156
+a3720 c 1483 156
+a372c 18 1484 156
+a3744 4 328 156
+a3748 4 329 156
+a374c 8 1435 156
+a3754 10 1435 156
+a3764 4 208 156
+a3768 14 209 156
+a377c 24 1496 156
+FUNC a37a0 cc 0 uw_init_context_1
+a37a0 1c 1555 156
+a37bc 8 1555 156
+a37c4 10 1561 156
+a37d4 4 1562 156
+a37d8 4 1564 156
+a37dc 4 1566 156
+a37e0 4 1564 156
+a37e4 c 1566 156
+a37f0 4 1567 156
+a37f4 4 1567 156
+a37f8 18 712 144
+a3810 4 1572 156
+a3814 8 1573 156
+a381c 4 1574 156
+a3820 10 1582 156
+a3830 4 1585 156
+a3834 8 1583 156
+a383c 4 1584 156
+a3840 4 1587 156
+a3844 4 1584 156
+a3848 8 1587 156
+a3850 4 1592 156
+a3854 18 1593 156
+FUNC a386c 4c 0 uw_update_context
+a386c c 1505 156
+a3878 8 1505 156
+a3880 4 1506 156
+a3884 14 1514 156
+a3898 8 1518 156
+a38a0 8 255 156
+a38a8 4 1522 156
+a38ac c 1524 156
+FUNC a38b8 c0 0 _Unwind_RaiseException_Phase2
+a38b8 18 40 158
+a38d0 8 40 158
+a38d8 4 48 158
+a38dc 4 52 158
+a38e0 10 48 158
+a38f0 8 1692 156
+a38f8 4 202 156
+a38fc 4 1692 156
+a3900 4 52 158
+a3904 8 52 158
+a390c 4 54 158
+a3910 8 60 158
+a3918 4 71 158
+a391c 4 71 158
+a3920 18 62 158
+a3938 8 64 158
+a3940 c 66 158
+a394c c 73 158
+a3958 4 74 158
+a395c 4 57 158
+a3960 18 77 158
+FUNC a3978 ec 0 _Unwind_ForcedUnwind_Phase2
+a3978 10 144 158
+a3988 4 145 158
+a398c 4 146 158
+a3990 c 144 158
+a399c 8 144 158
+a39a4 4 155 158
+a39a8 8 162 158
+a39b0 c 155 158
+a39bc 4 156 158
+a39c0 4 155 158
+a39c4 8 156 158
+a39cc 4 162 158
+a39d0 1c 163 158
+a39ec 4 165 158
+a39f0 8 170 158
+a39f8 8 173 158
+a3a00 c 1529 156
+a3a0c 4 186 158
+a3a10 18 175 158
+a3a28 4 177 158
+a3a2c 4 175 158
+a3a30 4 177 158
+a3a34 8 179 158
+a3a3c 8 157 158
+a3a44 4 188 158
+a3a48 1c 189 158
+FUNC a3a64 f4 0 __frame_state_for
+a3a64 4 1318 156
+a3a68 4 1323 156
+a3a6c c 1318 156
+a3a78 4 1323 156
+a3a7c 4 1318 156
+a3a80 8 1318 156
+a3a88 8 1323 156
+a3a90 4 1326 156
+a3a94 4 1323 156
+a3a98 4 1326 156
+a3a9c 4 1325 156
+a3aa0 4 1328 156
+a3aa4 4 1325 156
+a3aa8 c 1328 156
+a3ab4 4 1329 156
+a3ab8 4 1328 156
+a3abc 1c 1333 156
+a3ad8 8 1338 156
+a3ae0 10 1339 156
+a3af0 8 1345 156
+a3af8 4 1346 156
+a3afc c 1348 156
+a3b08 c 1336 156
+a3b14 4 1353 156
+a3b18 4 1359 156
+a3b1c 4 1353 156
+a3b20 8 1354 156
+a3b28 8 1355 156
+a3b30 8 1356 156
+a3b38 8 1357 156
+a3b40 18 1360 156
+FUNC a3b58 4 0 _Unwind_DebugHook
+a3b58 4 1613 156
+FUNC a3b5c 188 0 _Unwind_RaiseException
+a3b5c 14 83 158
+a3b70 4 88 158
+a3b74 18 83 158
+a3b8c 8 88 158
+a3b94 4 83 158
+a3b98 4 88 158
+a3b9c c 83 158
+a3ba8 4 89 158
+a3bac 4 88 158
+a3bb0 c 89 158
+a3bbc 4 99 158
+a3bc0 4 89 158
+a3bc4 c 99 158
+a3bd0 8 101 158
+a3bd8 4 105 158
+a3bdc 8 108 158
+a3be4 8 111 158
+a3bec c 122 158
+a3bf8 4 123 158
+a3bfc 18 113 158
+a3c14 8 115 158
+a3c1c c 117 158
+a3c28 8 103 158
+a3c30 4 127 158
+a3c34 8 1692 156
+a3c3c 4 202 156
+a3c40 4 130 158
+a3c44 4 1692 156
+a3c48 4 130 158
+a3c4c 4 128 158
+a3c50 8 130 158
+a3c58 c 131 158
+a3c64 c 132 158
+a3c70 c 135 158
+a3c7c 4 135 158
+a3c80 4 135 158
+a3c84 c 135 158
+a3c90 54 136 158
+FUNC a3ce4 f4 0 _Unwind_ForcedUnwind
+a3ce4 14 197 158
+a3cf8 4 201 158
+a3cfc 28 197 158
+a3d24 c 201 158
+a3d30 4 202 158
+a3d34 8 197 158
+a3d3c 4 201 158
+a3d40 10 202 158
+a3d50 4 204 158
+a3d54 4 205 158
+a3d58 c 207 158
+a3d64 4 208 158
+a3d68 4 212 158
+a3d6c 4 208 158
+a3d70 c 211 158
+a3d7c 4 211 158
+a3d80 4 211 158
+a3d84 c 211 158
+a3d90 48 212 158
+FUNC a3dd8 fc 0 _Unwind_Resume
+a3dd8 14 220 158
+a3dec 4 224 158
+a3df0 14 220 158
+a3e04 8 224 158
+a3e0c 8 220 158
+a3e14 4 224 158
+a3e18 c 220 158
+a3e24 4 225 158
+a3e28 4 224 158
+a3e2c 10 225 158
+a3e3c 8 229 158
+a3e44 10 230 158
+a3e54 c 232 158
+a3e60 8 234 158
+a3e68 4 234 158
+a3e6c c 236 158
+a3e78 4 236 158
+a3e7c 4 236 158
+a3e80 c 236 158
+a3e8c 48 237 158
+FUNC a3ed4 fc 0 _Unwind_Resume_or_Rethrow
+a3ed4 10 245 158
+a3ee4 4 251 158
+a3ee8 2c 245 158
+a3f14 4 245 158
+a3f18 8 251 158
+a3f20 4 252 158
+a3f24 8 262 158
+a3f2c c 254 158
+a3f38 4 255 158
+a3f3c 4 254 158
+a3f40 10 255 158
+a3f50 c 257 158
+a3f5c 8 259 158
+a3f64 4 259 158
+a3f68 c 261 158
+a3f74 4 261 158
+a3f78 4 261 158
+a3f7c c 261 158
+a3f88 48 262 158
+FUNC a3fd0 24 0 _Unwind_DeleteException
+a3fd0 8 269 158
+a3fd8 c 270 158
+a3fe4 8 271 158
+a3fec 8 272 158
+FUNC a3ff4 d0 0 _Unwind_Backtrace
+a3ff4 4 279 158
+a3ff8 4 283 158
+a3ffc 10 279 158
+a400c 4 283 158
+a4010 1c 279 158
+a402c 8 283 158
+a4034 4 290 158
+a4038 8 279 158
+a4040 4 283 158
+a4044 c 290 158
+a4050 4 291 158
+a4054 4 290 158
+a4058 8 291 158
+a4060 c 295 158
+a406c 4 295 158
+a4070 8 299 158
+a4078 c 303 158
+a4084 4 304 158
+a4088 8 292 158
+a4090 4 306 158
+a4094 30 307 158
+FUNC a40c4 28 0 read_uleb128
+a40c4 4 137 157
+a40c8 4 133 157
+a40cc 4 140 157
+a40d0 8 141 157
+a40d8 4 142 157
+a40dc 4 141 157
+a40e0 4 144 157
+a40e4 4 146 157
+a40e8 4 148 157
+FUNC a40ec 40 0 read_sleb128
+a40ec 4 159 157
+a40f0 4 155 157
+a40f4 4 162 157
+a40f8 8 163 157
+a4100 4 164 157
+a4104 4 163 157
+a4108 4 166 157
+a410c 8 169 157
+a4114 4 169 157
+a4118 c 170 157
+a4124 4 172 157
+a4128 4 174 157
+FUNC a412c 1c 0 fde_unencoded_compare
+a412c 4 334 154
+a4130 4 338 154
+a4134 4 335 154
+a4138 8 337 154
+a4140 4 339 154
+a4144 4 342 154
+FUNC a4148 c0 0 frame_downheap
+a4148 c 488 154
+a4154 4 491 154
+a4158 c 488 154
+a4164 10 488 154
+a4174 4 491 154
+a4178 8 491 154
+a4180 c 495 154
+a418c 28 495 154
+a41b4 1c 498 154
+a41d0 4 500 154
+a41d4 4 501 154
+a41d8 c 500 154
+a41e4 c 493 154
+a41f0 18 506 154
+FUNC a4208 b4 0 frame_heapsort
+a4208 c 514 154
+a4214 4 522 154
+a4218 c 514 154
+a4224 c 514 154
+a4230 4 518 154
+a4234 4 528 154
+a4238 4 528 154
+a423c 4 528 154
+a4240 1c 529 154
+a425c c 534 154
+a4268 8 534 154
+a4270 4 536 154
+a4274 4 537 154
+a4278 4 536 154
+a427c 4 537 154
+a4280 4 536 154
+a4284 4 537 154
+a4288 4 536 154
+a428c 8 537 154
+a4294 8 534 154
+a429c 8 537 154
+a42a4 18 540 154
+FUNC a42bc 60 0 size_of_encoded_value
+a42bc 8 73 157
+a42c4 4 74 157
+a42c8 4 73 157
+a42cc 4 74 157
+a42d0 24 77 157
+a42f4 8 82 157
+a42fc 8 84 157
+a4304 4 88 157
+a4308 8 75 157
+a4310 4 80 157
+a4314 8 89 157
+FUNC a431c 60 0 base_from_object
+a431c 8 240 154
+a4324 4 241 154
+a4328 4 240 154
+a432c 4 241 154
+a4330 2c 244 154
+a435c 4 256 154
+a4360 8 252 154
+a4368 8 254 154
+a4370 4 249 154
+a4374 8 258 154
+FUNC a437c 60 0 base_from_cb_data
+a437c 8 133 153
+a4384 4 134 153
+a4388 4 133 153
+a438c 4 134 153
+a4390 2c 137 153
+a43bc 4 149 153
+a43c0 8 145 153
+a43c8 8 147 153
+a43d0 4 142 153
+a43d4 8 151 153
+FUNC a43dc f0 0 read_encoded_value_with_base
+a43dc 18 183 157
+a43f4 4 198 157
+a43f8 8 183 157
+a4400 4 198 157
+a4404 4 201 157
+a4408 c 202 157
+a4414 24 207 157
+a4438 10 217 157
+a4448 c 225 157
+a4454 4 226 157
+a4458 4 228 157
+a445c 8 231 157
+a4464 4 233 157
+a4468 8 235 157
+a4470 4 237 157
+a4474 8 244 157
+a447c 4 246 157
+a4480 8 248 157
+a4488 4 250 157
+a448c 8 252 157
+a4494 4 254 157
+a4498 4 257 157
+a449c 4 260 157
+a44a0 4 263 157
+a44a4 8 263 157
+a44ac 4 262 157
+a44b0 4 264 157
+a44b4 4 265 157
+a44b8 4 269 157
+a44bc 10 271 157
+FUNC a44cc 90 0 fde_single_encoding_compare
+a44cc c 346 154
+a44d8 4 349 154
+a44dc c 346 154
+a44e8 c 349 154
+a44f4 4 346 154
+a44f8 4 346 154
+a44fc 8 349 154
+a4504 14 350 154
+a4518 18 351 154
+a4530 4 353 154
+a4534 4 354 154
+a4538 c 353 154
+a4544 4 355 154
+a4548 14 358 154
+FUNC a455c fc 0 get_cie_encoding
+a455c c 265 154
+a4568 4 271 154
+a456c 4 265 154
+a4570 c 272 154
+a457c 4 273 154
+a4580 4 272 154
+a4584 8 273 154
+a458c 4 275 154
+a4590 4 276 154
+a4594 8 275 154
+a459c 8 275 154
+a45a4 4 278 154
+a45a8 c 281 154
+a45b4 8 282 154
+a45bc 10 284 154
+a45cc 8 285 154
+a45d4 c 286 154
+a45e0 8 287 154
+a45e8 8 289 154
+a45f0 4 292 154
+a45f4 4 291 154
+a45f8 4 304 154
+a45fc 4 292 154
+a4600 c 296 154
+a460c 8 297 154
+a4614 8 299 154
+a461c 1c 304 154
+a4638 8 307 154
+a4640 4 308 154
+a4644 4 312 154
+a4648 4 313 154
+a464c c 314 154
+FUNC a4658 160 0 linear_search_fdes
+a4658 10 799 154
+a4668 4 801 154
+a466c 4 799 154
+a4670 4 801 154
+a4674 4 799 154
+a4678 4 802 154
+a467c c 799 154
+a4688 4 799 154
+a468c 4 801 154
+a4690 4 802 154
+a4694 4 839 154
+a4698 4 802 154
+a469c 4 800 154
+a46a0 4 841 154
+a46a4 4 849 154
+a46a8 8 804 154
+a46b0 8 810 154
+a46b8 c 813 154
+a46c4 8 157 155
+a46cc 8 818 154
+a46d4 c 821 154
+a46e0 c 822 154
+a46ec 4 826 154
+a46f0 4 829 154
+a46f4 4 830 154
+a46f8 4 829 154
+a46fc 4 830 154
+a4700 4 831 154
+a4704 14 857 154
+a4718 8 858 154
+a4720 1c 839 154
+a473c 10 841 154
+a474c 8 847 154
+a4754 4 847 154
+a4758 4 848 154
+a475c 4 851 154
+a4760 4 848 154
+a4764 c 849 154
+a4770 14 853 154
+a4784 14 163 155
+a4798 4 861 154
+a479c 1c 862 154
+FUNC a47b8 10 0 get_fde_encoding
+a47b8 8 157 155
+a47c0 8 319 154
+FUNC a47c8 414 0 _Unwind_IteratePhdrCallback
+a47c8 4 155 153
+a47cc 4 189 153
+a47d0 10 155 153
+a47e0 4 189 153
+a47e4 4 181 153
+a47e8 4 182 153
+a47ec 4 189 153
+a47f0 4 189 153
+a47f4 4 189 153
+a47f8 1c 198 153
+a4814 10 198 153
+a4824 4 207 153
+a4828 4 187 153
+a482c 4 186 153
+a4830 4 207 153
+a4834 4 207 153
+a4838 14 211 153
+a484c 8 212 153
+a4854 4 219 153
+a4858 4 214 153
+a485c 4 215 153
+a4860 4 219 153
+a4864 4 223 153
+a4868 8 221 153
+a4870 4 222 153
+a4874 8 223 153
+a487c 8 230 153
+a4884 18 232 153
+a489c 4 238 153
+a48a0 14 239 153
+a48b4 4 245 153
+a48b8 8 246 153
+a48c0 4 243 153
+a48c4 4 247 153
+a48c8 4 243 153
+a48cc c 249 153
+a48d8 4 250 153
+a48dc 8 251 153
+a48e4 10 256 153
+a48f4 4 262 153
+a48f8 8 168 153
+a4900 4 180 153
+a4904 4 184 153
+a4908 4 183 153
+a490c c 262 153
+a4918 c 264 153
+a4924 4 266 153
+a4928 4 268 153
+a492c 4 266 153
+a4930 8 268 153
+a4938 24 268 153
+a495c 10 275 153
+a496c 10 283 153
+a497c c 262 153
+a4988 4 287 153
+a498c 8 288 153
+a4994 8 290 153
+a499c 8 295 153
+a49a4 8 297 153
+a49ac c 298 153
+a49b8 4 299 153
+a49bc c 302 153
+a49c8 4 303 153
+a49cc 4 304 153
+a49d0 4 305 153
+a49d4 4 306 153
+a49d8 4 311 153
+a49dc 8 316 153
+a49e4 c 317 153
+a49f0 18 353 153
+a4a08 10 353 153
+a4a18 4 362 153
+a4a1c 4 353 153
+a4a20 8 362 153
+a4a28 c 363 153
+a4a34 14 367 153
+a4a48 14 367 153
+a4a5c 8 372 153
+a4a64 8 374 153
+a4a6c 14 388 153
+a4a80 4 387 153
+a4a84 14 390 153
+a4a98 4 397 153
+a4a9c 8 395 153
+a4aa4 8 397 153
+a4aac 14 398 153
+a4ac0 18 400 153
+a4ad8 10 409 153
+a4ae8 8 410 153
+a4af0 c 411 153
+a4afc 4 413 153
+a4b00 14 412 153
+a4b14 1c 414 153
+a4b30 4 415 153
+a4b34 4 416 153
+a4b38 4 417 153
+a4b3c 8 425 153
+a4b44 8 426 153
+a4b4c 4 429 153
+a4b50 4 427 153
+a4b54 4 428 153
+a4b58 4 430 153
+a4b5c 4 429 153
+a4b60 4 430 153
+a4b64 4 424 153
+a4b68 4 427 153
+a4b6c 4 430 153
+a4b70 4 430 153
+a4b74 4 431 153
+a4b78 4 434 153
+a4b7c 14 436 153
+a4b90 4 438 153
+a4b94 10 436 153
+a4ba4 8 439 153
+a4bac 8 441 153
+a4bb4 10 258 153
+a4bc4 4 406 153
+a4bc8 14 442 153
+FUNC a4bdc 9c 0 fde_mixed_encoding_compare
+a4bdc 10 362 154
+a4bec 4 366 154
+a4bf0 4 362 154
+a4bf4 8 362 154
+a4bfc 4 366 154
+a4c00 14 367 154
+a4c14 10 367 154
+a4c24 8 370 154
+a4c2c 14 371 154
+a4c40 10 371 154
+a4c50 4 374 154
+a4c54 4 375 154
+a4c58 c 374 154
+a4c64 4 376 154
+a4c68 10 379 154
+FUNC a4c78 160 0 classify_object_over_fdes
+a4c78 c 607 154
+a4c84 4 611 154
+a4c88 10 607 154
+a4c98 8 607 154
+a4ca0 4 610 154
+a4ca4 4 609 154
+a4ca8 4 608 154
+a4cac 4 638 154
+a4cb0 4 647 154
+a4cb4 8 613 154
+a4cbc 8 619 154
+a4cc4 8 157 155
+a4ccc 8 625 154
+a4cd4 8 628 154
+a4cdc 4 629 154
+a4ce0 4 628 154
+a4ce4 4 629 154
+a4ce8 8 630 154
+a4cf0 14 631 154
+a4d04 10 632 154
+a4d14 c 633 154
+a4d20 c 634 154
+a4d2c 14 635 154
+a4d40 18 638 154
+a4d58 8 645 154
+a4d60 4 645 154
+a4d64 4 646 154
+a4d68 4 649 154
+a4d6c 4 646 154
+a4d70 c 647 154
+a4d7c c 651 154
+a4d88 4 655 154
+a4d8c 4 654 154
+a4d90 8 655 154
+a4d98 c 656 154
+a4da4 14 163 155
+a4db8 4 659 154
+a4dbc 1c 660 154
+FUNC a4dd8 134 0 add_fdes
+a4dd8 10 664 154
+a4de8 4 666 154
+a4dec 4 664 154
+a4df0 4 666 154
+a4df4 4 664 154
+a4df8 4 667 154
+a4dfc c 664 154
+a4e08 4 666 154
+a4e0c 4 664 154
+a4e10 4 667 154
+a4e14 4 701 154
+a4e18 4 667 154
+a4e1c 4 665 154
+a4e20 4 710 154
+a4e24 8 669 154
+a4e2c c 674 154
+a4e38 8 677 154
+a4e40 8 157 155
+a4e48 8 682 154
+a4e50 c 685 154
+a4e5c c 686 154
+a4e68 4 690 154
+a4e6c c 694 154
+a4e78 18 701 154
+a4e90 8 708 154
+a4e98 4 708 154
+a4e9c 4 709 154
+a4ea0 4 712 154
+a4ea4 4 709 154
+a4ea8 c 710 154
+a4eb4 10 714 154
+a4ec4 4 423 154
+a4ec8 14 424 154
+a4edc 14 163 155
+a4ef0 1c 720 154
+FUNC a4f0c 578 0 search_object
+a4f0c 10 956 154
+a4f1c 4 959 154
+a4f20 14 956 154
+a4f34 4 956 154
+a4f38 4 959 154
+a4f3c c 970 154
+a4f48 8 733 154
+a4f50 4 734 154
+a4f54 4 736 154
+a4f58 4 738 154
+a4f5c 8 739 154
+a4f64 8 741 154
+a4f6c 8 742 154
+a4f74 4 755 154
+a4f78 4 754 154
+a4f7c 4 755 154
+a4f80 14 756 154
+a4f94 4 744 154
+a4f98 8 739 154
+a4fa0 8 749 154
+a4fa8 4 750 154
+a4fac 4 749 154
+a4fb0 4 750 154
+a4fb4 4 766 154
+a4fb8 4 767 154
+a4fbc 8 766 154
+a4fc4 4 767 154
+a4fc8 8 766 154
+a4fd0 8 768 154
+a4fd8 4 405 154
+a4fdc 8 408 154
+a4fe4 10 409 154
+a4ff4 4 411 154
+a4ff8 10 412 154
+a5008 c 413 154
+a5014 4 473 154
+a5018 8 472 154
+a5020 c 473 154
+a502c 8 471 154
+a5034 8 471 154
+a503c 4 476 154
+a5040 4 477 154
+a5044 1c 587 154
+a5060 c 588 154
+a506c 8 589 154
+a5074 4 550 154
+a5078 4 551 154
+a507c c 553 154
+a5088 8 556 154
+a5090 4 557 154
+a5094 4 558 154
+a5098 10 563 154
+a50a8 4 565 154
+a50ac 10 566 154
+a50bc 8 590 154
+a50c4 c 787 154
+a50d0 4 788 154
+a50d4 c 790 154
+a50e0 c 966 154
+a50ec 8 967 154
+a50f4 4 972 154
+a50f8 4 926 154
+a50fc 4 941 154
+a5100 4 929 154
+a5104 4 938 154
+a5108 4 941 154
+a510c 4 929 154
+a5110 8 929 154
+a5118 8 931 154
+a5120 8 932 154
+a5128 8 937 154
+a5130 4 938 154
+a5134 4 937 154
+a5138 10 938 154
+a5148 14 938 154
+a515c 10 941 154
+a516c c 943 154
+a5178 10 945 154
+a5188 c 946 154
+a5194 10 932 154
+a51a4 10 974 154
+a51b4 8 873 154
+a51bc 8 873 154
+a51c4 8 875 154
+a51cc 8 876 154
+a51d4 4 879 154
+a51d8 4 880 154
+a51dc 8 882 154
+a51e4 c 884 154
+a51f0 8 885 154
+a51f8 8 875 154
+a5200 4 897 154
+a5204 4 898 154
+a5208 4 896 154
+a520c 4 901 154
+a5210 4 897 154
+a5214 8 898 154
+a521c 4 910 154
+a5220 4 901 154
+a5224 4 908 154
+a5228 8 910 154
+a5230 8 901 154
+a5238 4 903 154
+a523c 4 908 154
+a5240 4 903 154
+a5244 4 908 154
+a5248 8 904 154
+a5250 10 908 154
+a5260 10 910 154
+a5270 c 912 154
+a527c 10 914 154
+a528c c 915 154
+a5298 10 904 154
+a52a8 4 982 154
+a52ac 4 985 154
+a52b0 8 985 154
+a52b8 c 987 154
+a52c4 4 988 154
+a52c8 8 985 154
+a52d0 14 994 154
+a52e4 8 774 154
+a52ec 4 777 154
+a52f0 4 778 154
+a52f4 8 777 154
+a52fc 8 778 154
+a5304 4 777 154
+a5308 8 778 154
+a5310 10 781 154
+a5320 8 575 154
+a5328 c 575 154
+a5334 4 575 154
+a5338 8 577 154
+a5340 c 579 154
+a534c c 582 154
+a5358 c 578 154
+a5364 8 580 154
+a536c 8 584 154
+a5374 c 445 154
+a5380 4 444 154
+a5384 4 445 154
+a5388 4 444 154
+a538c 4 453 154
+a5390 4 457 154
+a5394 8 453 154
+a539c 8 457 154
+a53a4 24 458 154
+a53c8 c 461 154
+a53d4 c 462 154
+a53e0 4 453 154
+a53e4 4 464 154
+a53e8 c 465 154
+a53f4 10 453 154
+a5404 10 475 154
+a5414 2c 558 154
+a5440 4 560 154
+a5444 4 561 154
+a5448 8 560 154
+a5450 14 596 154
+a5464 20 996 154
+FUNC a5484 84 0 __register_frame_info_bases
+a5484 10 79 154
+a5494 4 81 154
+a5498 c 81 154
+a54a4 8 761 144
+a54ac 4 84 154
+a54b0 4 761 144
+a54b4 4 87 154
+a54b8 4 89 154
+a54bc 4 88 154
+a54c0 4 84 154
+a54c4 4 85 154
+a54c8 4 86 154
+a54cc 4 89 154
+a54d0 8 761 144
+a54d8 8 97 154
+a54e0 4 791 144
+a54e4 4 98 154
+a54e8 c 101 154
+a54f4 4 791 144
+a54f8 10 101 154
+FUNC a5508 c 0 __register_frame_info
+a5508 c 106 154
+FUNC a5514 40 0 __register_frame
+a5514 8 111 154
+a551c 4 115 154
+a5520 4 111 154
+a5524 8 115 154
+a552c c 118 154
+a5538 4 119 154
+a553c 8 120 154
+a5544 4 119 154
+a5548 c 120 154
+FUNC a5554 70 0 __register_frame_info_table_bases
+a5554 4 129 154
+a5558 4 130 154
+a555c 8 129 154
+a5564 4 134 154
+a5568 4 761 144
+a556c 4 133 154
+a5570 8 135 154
+a5578 8 761 144
+a5580 4 130 154
+a5584 4 136 154
+a5588 4 131 154
+a558c 4 136 154
+a5590 4 132 154
+a5594 4 136 154
+a5598 4 761 144
+a559c 4 136 154
+a55a0 4 761 144
+a55a4 8 141 154
+a55ac 4 142 154
+a55b0 4 141 154
+a55b4 4 791 144
+a55b8 8 145 154
+a55c0 4 791 144
+FUNC a55c4 c 0 __register_frame_info_table
+a55c4 c 150 154
+FUNC a55d0 2c 0 __register_frame_table
+a55d0 c 155 154
+a55dc 4 155 154
+a55e0 c 156 154
+a55ec 4 157 154
+a55f0 8 158 154
+a55f8 4 157 154
+FUNC a55fc f0 0 __deregister_frame_info_bases
+a55fc 10 174 154
+a560c 4 179 154
+a5610 8 179 154
+a5618 10 761 144
+a5628 4 185 154
+a562c 4 761 144
+a5630 4 185 154
+a5634 4 185 154
+a5638 c 186 154
+a5644 c 189 154
+a5650 c 185 154
+a565c 8 185 154
+a5664 8 193 154
+a566c 8 194 154
+a5674 10 196 154
+a5684 8 199 154
+a568c c 200 154
+a5698 c 206 154
+a56a4 c 209 154
+a56b0 8 193 154
+a56b8 c 791 144
+a56c4 4 216 154
+a56c8 4 216 154
+a56cc c 180 154
+a56d8 14 218 154
+FUNC a56ec 4 0 __deregister_frame_info
+a56ec 4 223 154
+FUNC a56f0 24 0 __deregister_frame
+a56f0 8 228 154
+a56f8 8 230 154
+a5700 4 231 154
+a5704 4 232 154
+a5708 4 231 154
+a570c 8 232 154
+FUNC a5714 190 0 _Unwind_Find_FDE
+a5714 c 446 153
+a5720 4 761 144
+a5724 8 446 153
+a572c 4 761 144
+a5730 4 446 153
+a5734 4 446 153
+a5738 8 761 144
+a5740 4 1010 154
+a5744 4 1010 154
+a5748 c 1011 154
+a5754 10 1013 154
+a5764 8 1014 154
+a576c 8 1010 154
+a5774 c 1020 154
+a5780 4 1024 154
+a5784 4 1025 154
+a5788 4 1024 154
+a578c c 1025 154
+a5798 8 1028 154
+a57a0 4 1028 154
+a57a4 10 1029 154
+a57b4 c 1028 154
+a57c0 4 1031 154
+a57c4 4 1032 154
+a57c8 8 1034 154
+a57d0 4 1020 154
+a57d4 10 791 144
+a57e4 4 1041 154
+a57e8 8 1046 154
+a57f0 4 1050 154
+a57f4 8 1047 154
+a57fc 8 1049 154
+a5804 4 1050 154
+a5808 8 1051 154
+a5810 14 1052 154
+a5824 10 1052 154
+a5834 8 1054 154
+a583c 8 459 153
+a5844 c 461 153
+a5850 4 454 153
+a5854 4 455 153
+a5858 4 456 153
+a585c 4 457 153
+a5860 4 458 153
+a5864 4 461 153
+a5868 4 461 153
+a586c 8 464 153
+a5874 8 466 153
+a587c 8 467 153
+a5884 8 468 153
+a588c 18 471 153
+FUNC a58a4 60 0 __sfp_handle_exceptions
+a58a4 4 36 146
+a58a8 8 38 146
+a58b0 4 42 146
+a58b4 4 44 146
+a58b8 c 46 146
+a58c4 4 50 146
+a58c8 4 52 146
+a58cc c 54 146
+a58d8 4 58 146
+a58dc 4 60 146
+a58e0 8 62 146
+a58e8 4 66 146
+a58ec 4 68 146
+a58f0 c 70 146
+a58fc 4 74 146
+a5900 4 76 146
+PUBLIC 268d4 0 _ZN38ExceptionHandlerTest_SimpleWithFD_Test8TestBodyEv
+PUBLIC 26aa8 0 _ZN7testing13PrintToStringIiEESsRKT_
+PUBLIC 26b30 0 _ZN7testing8internal18CmpHelperOpFailureIiiEENS_15AssertionResultEPKcS4_RKT_RKT0_S4_
+PUBLIC 26c44 0 _ZN7testing8internal11CmpHelperNEIiiEENS_15AssertionResultEPKcS4_RKT_RKT0_
+PUBLIC 26c88 0 _ZN7testing8internal11CmpHelperEQIiiEENS_15AssertionResultEPKcS4_RKT_RKT0_
+PUBLIC 26f1c 0 _ZN7testing13PrintToStringIlEESsRKT_
+PUBLIC 26f78 0 _ZN7testing8internal11CmpHelperEQIllEENS_15AssertionResultEPKcS4_RKT_RKT0_
+PUBLIC 27014 0 _ZN7testing8internal11CmpHelperEQIilEENS_15AssertionResultEPKcS4_RKT_RKT0_
+PUBLIC 2744c 0 _ZN7testing8internal11CmpHelperGTIliEENS_15AssertionResultEPKcS4_RKT_RKT0_
+PUBLIC 27580 0 _ZN53ExceptionHandlerTest_GenerateMultipleDumpsWithFD_Test8TestBodyEv
+PUBLIC 27850 0 _ZN7testing13PrintToStringIPvEESsRKT_
+PUBLIC 278d8 0 _ZN7testing8internal18CmpHelperOpFailureIPvS2_EENS_15AssertionResultEPKcS5_RKT_RKT0_S5_
+PUBLIC 279ec 0 _ZN7testing13PrintToStringIjEESsRKT_
+PUBLIC 27a48 0 _ZN7testing8internal11CmpHelperLTIjjEENS_15AssertionResultEPKcS4_RKT_RKT0_
+PUBLIC 27b7c 0 _ZN7testing8internal11CmpHelperEQIjjEENS_15AssertionResultEPKcS4_RKT_RKT0_
+PUBLIC 27c18 0 _ZN7testing8internal18CmpHelperEQFailureI20MDExceptionCodeLinuxjEENS_15AssertionResultEPKcS5_RKT_RKT0_
+PUBLIC 27d70 0 _ZN7testing13PrintToStringISsEESsRKT_
+PUBLIC 27dcc 0 _ZN7testing8internal11CmpHelperEQISsSsEENS_15AssertionResultEPKcS4_RKT_RKT0_
+PUBLIC 27e8c 0 _ZN40ExceptionHandlerTest_SimpleWithPath_Test8TestBodyEv
+PUBLIC 28074 0 _ZN7testing13PrintToStringImEESsRKT_
+PUBLIC 280d0 0 _ZN7testing8internal11CmpHelperEQImjEENS_15AssertionResultEPKcS4_RKT_RKT0_
+PUBLIC 2816c 0 _ZN7testing8internal11CmpHelperEQIjmEENS_15AssertionResultEPKcS4_RKT_RKT0_
+PUBLIC 28208 0 _ZN7testing8internal11CmpHelperEQImmEENS_15AssertionResultEPKcS4_RKT_RKT0_
+PUBLIC 289c8 0 _Z10ChildCrashb
+PUBLIC 28dac 0 _ZN44ExceptionHandlerTest_ChildCrashWithPath_Test8TestBodyEv
+PUBLIC 28e54 0 _ZN42ExceptionHandlerTest_ChildCrashWithFD_Test8TestBodyEv
+PUBLIC 28efc 0 _ZN57ExceptionHandlerTest_RedeliveryOnFilterCallbackFalse_Test8TestBodyEv
+PUBLIC 290a0 0 _ZN55ExceptionHandlerTest_RedeliveryOnDoneCallbackFalse_Test8TestBodyEv
+PUBLIC 29244 0 _ZN56ExceptionHandlerTest_NoRedeliveryOnDoneCallbackTrue_Test8TestBodyEv
+PUBLIC 293e8 0 _ZN58ExceptionHandlerTest_NoRedeliveryOnFilterCallbackTrue_Test8TestBodyEv
+PUBLIC 2958c 0 _ZN52ExceptionHandlerTest_RedeliveryToDefaultHandler_Test8TestBodyEv
+PUBLIC 29688 0 _ZN58ExceptionHandlerTest_RedeliveryOnBadSignalHandlerFlag_Test8TestBodyEv
+PUBLIC 299ac 0 _ZN55ExceptionHandlerTest_StackedHandlersDeliveredToTop_Test8TestBodyEv
+PUBLIC 29ae8 0 _ZN61ExceptionHandlerTest_StackedHandlersNotDeliveredToBottom_Test8TestBodyEv
+PUBLIC 29c24 0 _ZN57ExceptionHandlerTest_StackedHandlersFilteredToBottom_Test8TestBodyEv
+PUBLIC 29d64 0 _ZN58ExceptionHandlerTest_StackedHandlersUnhandledToBottom_Test8TestBodyEv
+PUBLIC 29ea4 0 _ZN40ExceptionHandlerTest_ExternalDumper_Test8TestBodyEv
+PUBLIC 2a868 0 _ZN50ExceptionHandlerTest_InstructionPointerMemory_Test8TestBodyEv
+PUBLIC 2b30c 0 _ZN58ExceptionHandlerTest_InstructionPointerMemoryMinBound_Test8TestBodyEv
+PUBLIC 2bcc0 0 _ZN58ExceptionHandlerTest_InstructionPointerMemoryMaxBound_Test8TestBodyEv
+PUBLIC 2c678 0 _ZN61ExceptionHandlerTest_InstructionPointerMemoryNullPointer_Test8TestBodyEv
+PUBLIC 2cc2c 0 _ZN36ExceptionHandlerTest_ModuleInfo_Test8TestBodyEv
+PUBLIC 2d504 0 _ZN54ExceptionHandlerTest_WriteMinidumpExceptionStream_Test8TestBodyEv
+PUBLIC 2d874 0 _ZN55ExceptionHandlerTest_GenerateMultipleDumpsWithPath_Test8TestBodyEv
+PUBLIC 2de2c 0 _ZN42ExceptionHandlerTest_AdditionalMemory_Test8TestBodyEv
+PUBLIC 2e2b4 0 _ZN48ExceptionHandlerTest_AdditionalMemoryRemove_Test8TestBodyEv
+PUBLIC 2e584 0 _ZN47ExceptionHandlerTest_WriteMinidumpForChild_Test8TestBodyEv
+PUBLIC 2eb58 0 _ZN7testing13PrintToStringIPKvEESsRKT_
+PUBLIC 2ebe0 0 _ZN7testing8internal11CmpHelperNEIPcS2_EENS_15AssertionResultEPKcS5_RKT_RKT0_
+PUBLIC 2ff78 0 _ZN26CpuSetTest_EmptyCount_Test8TestBodyEv
+PUBLIC 3003c 0 _ZN22CpuSetTest_OneCpu_Test8TestBodyEv
+PUBLIC 30260 0 _ZN32CpuSetTest_OneCpuTerminated_Test8TestBodyEv
+PUBLIC 30484 0 _ZN32CpuSetTest_TwoCpusWithComma_Test8TestBodyEv
+PUBLIC 306a8 0 _ZN32CpuSetTest_TwoCpusWithRange_Test8TestBodyEv
+PUBLIC 308cc 0 _ZN32CpuSetTest_TenCpusWithRange_Test8TestBodyEv
+PUBLIC 30af0 0 _ZN26CpuSetTest_MultiItems_Test8TestBodyEv
+PUBLIC 30d14 0 _ZN29CpuSetTest_IntersectWith_Test8TestBodyEv
+PUBLIC 31260 0 _ZN32CpuSetTest_SelfIntersection_Test8TestBodyEv
+PUBLIC 314f0 0 _ZN33CpuSetTest_EmptyIntersection_Test8TestBodyEv
+PUBLIC 31af8 0 _ZNSt4priv8_Rb_treeISsSt4lessISsESsNS_9_IdentityISsEENS_11_SetTraitsTISsEESaISsEE8_M_eraseEPNS_18_Rb_tree_node_baseE
+PUBLIC 31d8c 0 _ZNSt4priv8_Rb_treeISsSt4lessISsESsNS_9_IdentityISsEENS_11_SetTraitsTISsEESaISsEE9_M_insertEPNS_18_Rb_tree_node_baseERKSsSA_SA_
+PUBLIC 31e68 0 _ZN39DirectoryReaderTest_CompareResults_Test8TestBodyEv
+PUBLIC 32d34 0 _ZN29LineReaderTest_EmptyFile_Test8TestBodyEv
+PUBLIC 32edc 0 _ZN27LineReaderTest_TooLong_Test8TestBodyEv
+PUBLIC 330b0 0 _ZN7testing8internal18CmpHelperEQFailureIccEENS_15AssertionResultEPKcS4_RKT_RKT0_
+PUBLIC 33198 0 _ZN7testing8internal11CmpHelperEQIccEENS_15AssertionResultEPKcS4_RKT_RKT0_
+PUBLIC 331d4 0 _ZN37LineReaderTest_OneLineTerminated_Test8TestBodyEv
+PUBLIC 33548 0 _ZN27LineReaderTest_OneLine_Test8TestBodyEv
+PUBLIC 338bc 0 _ZN38LineReaderTest_TwoLinesTerminated_Test8TestBodyEv
+PUBLIC 33e24 0 _ZN28LineReaderTest_TwoLines_Test8TestBodyEv
+PUBLIC 3438c 0 _ZN29LineReaderTest_MaxLength_Test8TestBodyEv
+PUBLIC 3483c 0 _ZN7testing8internal18CmpHelperEQFailureIjmEENS_15AssertionResultEPKcS4_RKT_RKT0_
+PUBLIC 34958 0 _ZN38LinuxCoreDumperTest_BuildProcPath_Test8TestBodyEv
+PUBLIC 34e00 0 _ZN54LinuxCoreDumperTest_VerifyDumpWithMultipleThreads_Test8TestBodyEv
+PUBLIC 35ed8 0 _ZN29LinuxPtraceDumperMappingsTest5SetUpEv
+PUBLIC 36294 0 _ZN37LinuxPtraceDumperChildTest_Setup_Test12RealTestBodyEv
+PUBLIC 362c8 0 _ZN44LinuxPtraceDumperChildTest_FindMappings_Test12RealTestBodyEv
+PUBLIC 364f8 0 _ZN45LinuxPtraceDumperChildTest_BuildProcPath_Test12RealTestBodyEv
+PUBLIC 369f4 0 _ZN44LinuxPtraceDumperChildTest_FileIDsMatch_Test12RealTestBodyEv
+PUBLIC 36eac 0 _ZN42LinuxPtraceDumperChildTest_ThreadList_Test12RealTestBodyEv
+PUBLIC 372b4 0 _ZN50LinuxPtraceDumperChildTest_LinuxGateMappingID_Test12RealTestBodyEv
+PUBLIC 376c0 0 _ZN56LinuxPtraceDumperChildTest_MappingsIncludeLinuxGate_Test12RealTestBodyEv
+PUBLIC 37aa0 0 _ZN49LinuxPtraceDumperMappingsTest_MergedMappings_Test12RealTestBodyEv
+PUBLIC 37e78 0 _ZN61LinuxPtraceDumperTest_VerifyStackReadWithMultipleThreads_Test8TestBodyEv
+PUBLIC 3db40 0 _ZN15google_breakpad15GetHelperBinaryEv
+PUBLIC 3e620 0 _ZN36ProcCpuInfoReaderTest_EmptyFile_Test8TestBodyEv
+PUBLIC 3e7cc 0 _ZN44ProcCpuInfoReaderTest_OneLineTerminated_Test8TestBodyEv
+PUBLIC 3eac8 0 _ZN45ProcCpuInfoReaderTest_TwoLinesTerminated_Test8TestBodyEv
+PUBLIC 3eee8 0 _ZN44ProcCpuInfoReaderTest_SkipMalformedLine_Test8TestBodyEv
+PUBLIC 3f1e4 0 _ZN43ProcCpuInfoReaderTest_SkipOneEmptyLine_Test8TestBodyEv
+PUBLIC 3f4e0 0 _ZN41ProcCpuInfoReaderTest_SkipEmptyField_Test8TestBodyEv
+PUBLIC 3f7dc 0 _ZN44ProcCpuInfoReaderTest_SkipTwoEmptyLines_Test8TestBodyEv
+PUBLIC 3fc18 0 _ZN42ProcCpuInfoReaderTest_FieldWithSpaces_Test8TestBodyEv
+PUBLIC 3ff14 0 _ZN37ProcCpuInfoReaderTest_EmptyValue_Test8TestBodyEv
+PUBLIC 402cc 0 _ZN34ProcCpuInfoReaderTest_OneLine_Test8TestBodyEv
+PUBLIC 408a0 0 _ZN7testing8internal18CmpHelperEQFailureIPK9elf64_hdrS4_EENS_15AssertionResultEPKcS7_RKT_RKT0_
+PUBLIC 40988 0 _ZN7testing8internal18CmpHelperEQFailureIPK10elf64_phdrS4_EENS_15AssertionResultEPKcS7_RKT_RKT0_
+PUBLIC 40a70 0 _ZNSt4priv8_Rb_treeIiSt4lessIiEiNS_9_IdentityIiEENS_11_SetTraitsTIiEESaIiEE8_M_eraseEPNS_18_Rb_tree_node_baseE
+PUBLIC 40afc 0 _ZNSt4priv8_Rb_treeIiSt4lessIiEiNS_9_IdentityIiEENS_11_SetTraitsTIiEESaIiEE9_M_insertEPNS_18_Rb_tree_node_baseERKiSA_SA_
+PUBLIC 40c18 0 _ZNSt4priv8_Rb_treeIiSt4lessIiEiNS_9_IdentityIiEENS_11_SetTraitsTIiEESaIiEE13insert_uniqueERKi
+PUBLIC 40d30 0 _ZN39ElfCoreDumpTest_DefaultConstructor_Test8TestBodyEv
+PUBLIC 410f8 0 _ZN34ElfCoreDumpTest_TestElfHeader_Test8TestBodyEv
+PUBLIC 42350 0 _ZN34ElfCoreDumpTest_ValidCoreFile_Test8TestBodyEv
+PUBLIC 435f8 0 _ZNSt4priv8_Rb_treeISsSt4lessISsESt4pairIKSsN15google_breakpad14test_assembler5LabelEENS_10_Select1stIS8_EENS_11_MapTraitsTIS8_EESaIS8_EE8_M_eraseEPNS_18_Rb_tree_node_baseE
+PUBLIC 44a34 0 _ZN7testing8internal18CmpHelperOpFailureIjmEENS_15AssertionResultEPKcS4_RKT_RKT0_S4_
+PUBLIC 44e9c 0 _ZN24FileIDTest_ElfClass_TestIN15google_breakpad10ElfClass64EE8TestBodyEv
+PUBLIC 450ec 0 _ZN23FileIDTest_BuildID_TestIN15google_breakpad10ElfClass64EE8TestBodyEv
+PUBLIC 45460 0 _ZN25FileIDTest_BuildIDPH_TestIN15google_breakpad10ElfClass64EE8TestBodyEv
+PUBLIC 4582c 0 _ZN28FileIDTest_UniqueHashes_TestIN15google_breakpad10ElfClass64EE8TestBodyEv
+PUBLIC 45e7c 0 _ZN24FileIDTest_ElfClass_TestIN15google_breakpad10ElfClass32EE8TestBodyEv
+PUBLIC 460cc 0 _ZN23FileIDTest_BuildID_TestIN15google_breakpad10ElfClass32EE8TestBodyEv
+PUBLIC 46440 0 _ZN25FileIDTest_BuildIDPH_TestIN15google_breakpad10ElfClass32EE8TestBodyEv
+PUBLIC 4680c 0 _ZN28FileIDTest_UniqueHashes_TestIN15google_breakpad10ElfClass32EE8TestBodyEv
+PUBLIC 47148 0 _ZN32LinuxLibcSupportTest_strlen_Test8TestBodyEv
+PUBLIC 47290 0 _ZN32LinuxLibcSupportTest_strcmp_Test8TestBodyEv
+PUBLIC 473b4 0 _ZN33LinuxLibcSupportTest_strtoui_Test8TestBodyEv
+PUBLIC 47af0 0 _ZN31LinuxLibcSupportTest_uitos_Test8TestBodyEv
+PUBLIC 47e28 0 _ZN34LinuxLibcSupportTest_uint_len_Test8TestBodyEv
+PUBLIC 48354 0 _ZN32LinuxLibcSupportTest_strchr_Test8TestBodyEv
+PUBLIC 487ac 0 _ZN33LinuxLibcSupportTest_strrchr_Test8TestBodyEv
+PUBLIC 48bc4 0 _ZN7testing8internal18CmpHelperEQFailureIPvS2_EENS_15AssertionResultEPKcS5_RKT_RKT0_
+PUBLIC 48c48 0 _ZN7testing8internal11CmpHelperEQIA10_cPvEENS_15AssertionResultEPKcS6_RKT_RKT0_
+PUBLIC 48d80 0 _ZN32LinuxLibcSupportTest_memchr_Test8TestBodyEv
+PUBLIC 4913c 0 _ZN7testing13PrintToStringIcEESsRKT_
+PUBLIC 49198 0 _ZN7testing8internal11CmpHelperEQIciEENS_15AssertionResultEPKcS4_RKT_RKT0_
+PUBLIC 49234 0 _ZN38LinuxLibcSupportTest_read_hex_ptr_Test8TestBodyEv
+PUBLIC 496b0 0 _ZN42LinuxLibcSupportTest_read_decimal_ptr_Test8TestBodyEv
+PUBLIC 49a9c 0 _ZN15google_breakpad9synth_elf3ELF13AppendSectionERNS1_10ElfSectionE
+PUBLIC 49b10 0 _ZN15google_breakpad9synth_elf3ELF10AddSegmentEiijj
+PUBLIC 49cf0 0 _ZN15google_breakpad9synth_elf5Notes7AddNoteEiRKSsPKhm
+PUBLIC 49f04 0 _ZN15google_breakpad9synth_elf11SymbolTableC2ENS_14test_assembler10EndiannessEmRNS0_11StringTableE
+PUBLIC 49fe4 0 _ZNSt4priv12_Impl_vectorIN15google_breakpad9synth_elf3ELF10ElfSectionESaIS4_EE22_M_insert_overflow_auxEPS4_RKS4_RKSt12__false_typemb
+PUBLIC 4a244 0 _ZNSt4priv8_Rb_treeISsSt4lessISsESt4pairIKSsN15google_breakpad14test_assembler5LabelEENS_10_Select1stIS8_EENS_11_MapTraitsTIS8_EESaIS8_EE9_M_insertEPNS_18_Rb_tree_node_baseERKS8_SG_SG_
+PUBLIC 4a320 0 _ZNSt4priv8_Rb_treeISsSt4lessISsESt4pairIKSsN15google_breakpad14test_assembler5LabelEENS_10_Select1stIS8_EENS_11_MapTraitsTIS8_EESaIS8_EE13insert_uniqueERKS8_
+PUBLIC 4a41c 0 _ZNSt4priv8_Rb_treeISsSt4lessISsESt4pairIKSsN15google_breakpad14test_assembler5LabelEENS_10_Select1stIS8_EENS_11_MapTraitsTIS8_EESaIS8_EE13insert_uniqueENS_17_Rb_tree_iteratorIS8_SC_EERKS8_
+PUBLIC 4a8fc 0 _ZN15google_breakpad9synth_elf11SymbolTable9AddSymbolERKSsjjjt
+PUBLIC 4a9a0 0 _ZN15google_breakpad9synth_elf11SymbolTable9AddSymbolERKSsmmjt
+PUBLIC 4aa44 0 _ZN15google_breakpad9synth_elf3ELF10AddSectionERKSsRKNS_14test_assembler7SectionEjjmjmm
+PUBLIC 4ac54 0 _ZN15google_breakpad9synth_elf3ELF6FinishEv
+PUBLIC 4ad54 0 _ZN15google_breakpad9synth_elf3ELFC1EthNS_14test_assembler10EndiannessE
+PUBLIC 4b264 0 _ZNK15google_breakpad14CrashGenerator21HasDefaultCorePatternEv
+PUBLIC 4b2d0 0 _ZNK15google_breakpad14CrashGenerator11GetThreadIdEj
+PUBLIC 4b2dc 0 _ZN15google_breakpad14CrashGenerator18GetThreadIdPointerEj
+PUBLIC 4b2e8 0 _ZN15google_breakpad14CrashGenerator17UnmapSharedMemoryEv
+PUBLIC 4b340 0 _ZN15google_breakpad14CrashGenerator15MapSharedMemoryEm
+PUBLIC 4b3c8 0 _ZNK15google_breakpad14CrashGenerator20SetCoreFileSizeLimitEm
+PUBLIC 4b40c 0 _ZNK15google_breakpad14CrashGenerator13CopyProcFilesEiPKc
+PUBLIC 4b4e8 0 _ZN15google_breakpad14CrashGenerator27CreateThreadsInChildProcessEj
+PUBLIC 4b6c4 0 _ZN15google_breakpad14CrashGeneratorC1Ev
+PUBLIC 4b6ec 0 _ZN15google_breakpad14CrashGeneratorD2Ev
+PUBLIC 4b71c 0 _ZNK15google_breakpad14CrashGenerator15GetCoreFilePathEv
+PUBLIC 4b748 0 _ZNK15google_breakpad14CrashGenerator27GetDirectoryOfProcFilesCopyEv
+PUBLIC 4b774 0 _ZN15google_breakpad14CrashGenerator16CreateChildCrashEjjiPi
+PUBLIC 4be6c 0 _ZN28PageAllocatorTest_Setup_Test8TestBodyEv
+PUBLIC 4be98 0 _ZN35PageAllocatorTest_SmallObjects_Test8TestBodyEv
+PUBLIC 4bfac 0 _ZN34PageAllocatorTest_LargeObject_Test8TestBodyEv
+PUBLIC 4c250 0 _ZNSt4priv12_Impl_vectorIjN15google_breakpad16PageStdAllocatorIjEEE7reserveEm
+PUBLIC 4c2f8 0 _ZN41WastefulVectorTest_UsesPageAllocator_Test8TestBodyEv
+PUBLIC 4c42c 0 _ZN7testing8internal18CmpHelperEQFailureImjEENS_15AssertionResultEPKcS4_RKT_RKT0_
+PUBLIC 4c4e0 0 _ZN29WastefulVectorTest_Setup_Test8TestBodyEv
+PUBLIC 4c5b8 0 _ZN7testing8internal18CmpHelperEQFailureIjjEENS_15AssertionResultEPKcS4_RKT_RKT0_
+PUBLIC 4c63c 0 _ZN30WastefulVectorTest_Simple_Test8TestBodyEv
+PUBLIC 4d4b0 0 _ZN15google_breakpad31NonAllocatingMapTest_Entry_Test8TestBodyEv
+PUBLIC 4dab0 0 _ZN15google_breakpad39NonAllocatingMapTest_CopyAndAssign_Test8TestBodyEv
+PUBLIC 4e440 0 _ZN15google_breakpad35NonAllocatingMapTest_AddRemove_Test8TestBodyEv
+PUBLIC 4eae8 0 _ZN15google_breakpad35NonAllocatingMapTest_Serialize_Test8TestBodyEv
+PUBLIC 4f08c 0 _ZN15google_breakpad36NonAllocatingMapTest_OutOfSpace_Test8TestBodyEv
+PUBLIC 4f2a4 0 _ZN7testing8internal18CmpHelperOpFailureIPKcA7_cEENS_15AssertionResultES3_S3_RKT_RKT0_S3_
+PUBLIC 4f3e8 0 _ZN7testing8internal11CmpHelperNEIPKcA7_cEENS_15AssertionResultES3_S3_RKT_RKT0_
+PUBLIC 4f428 0 _ZN15google_breakpad48NonAllocatingMapTest_SimpleStringDictionary_Test8TestBodyEv
+PUBLIC 4f9a4 0 _ZN15google_breakpad34NonAllocatingMapTest_Iterator_Test8TestBodyEv
+PUBLIC 4ffb0 0 _ZN15google_breakpad14test_assembler5LabelC1Ev
+PUBLIC 4ffe8 0 _ZN15google_breakpad14test_assembler5LabelC1Em
+PUBLIC 50028 0 _ZN15google_breakpad14test_assembler5LabelC2ERKS1_
+PUBLIC 50040 0 _ZN15google_breakpad14test_assembler5Label7BindingC2Ev
+PUBLIC 50054 0 _ZN15google_breakpad14test_assembler5Label7BindingC2Em
+PUBLIC 50068 0 _ZN15google_breakpad14test_assembler5Label7BindingD1Ev
+PUBLIC 500c0 0 _ZN15google_breakpad14test_assembler5LabelD2Ev
+PUBLIC 5010c 0 _ZN15google_breakpad14test_assembler5Label7Binding3GetEPPS2_Pm
+PUBLIC 501bc 0 _ZNK15google_breakpad14test_assembler5Label15IsKnownConstantEPm
+PUBLIC 50208 0 _ZNK15google_breakpad14test_assembler5Label5ValueEv
+PUBLIC 50228 0 _ZNK15google_breakpad14test_assembler5Label17IsKnownOffsetFromERKS1_Pm
+PUBLIC 50298 0 _ZNK15google_breakpad14test_assembler5LabelmiERKS1_
+PUBLIC 502b4 0 _ZN15google_breakpad14test_assembler5Label7Binding3SetEPS2_m
+PUBLIC 50380 0 _ZN15google_breakpad14test_assembler5LabelaSEm
+PUBLIC 503b0 0 _ZN15google_breakpad14test_assembler5LabelaSERKS1_
+PUBLIC 503e0 0 _ZNK15google_breakpad14test_assembler5LabelplEm
+PUBLIC 50420 0 _ZNK15google_breakpad14test_assembler5LabelmiEm
+PUBLIC 50468 0 _ZN15google_breakpad14test_assembler7Section5AlignEmh
+PUBLIC 504b0 0 _ZN15google_breakpad14test_assembler7Section6LEB128Ex
+PUBLIC 50508 0 _ZN15google_breakpad14test_assembler7Section7ULEB128Em
+PUBLIC 505d8 0 _ZN15google_breakpad14test_assembler7Section6AppendENS0_10EndiannessEmm
+PUBLIC 5060c 0 _ZN15google_breakpad14test_assembler7Section3L16Et
+PUBLIC 50640 0 _ZN15google_breakpad14test_assembler7Section3L32Ej
+PUBLIC 50674 0 _ZN15google_breakpad14test_assembler7Section3L64Em
+PUBLIC 506a8 0 _ZN15google_breakpad14test_assembler7Section3B16Et
+PUBLIC 506dc 0 _ZN15google_breakpad14test_assembler7Section3B32Ej
+PUBLIC 50710 0 _ZN15google_breakpad14test_assembler7Section3B64Em
+PUBLIC 50744 0 _ZN15google_breakpad14test_assembler7Section3D16Et
+PUBLIC 50778 0 _ZN15google_breakpad14test_assembler7Section3D32Ej
+PUBLIC 507ac 0 _ZN15google_breakpad14test_assembler7Section3D64Em
+PUBLIC 50830 0 _ZN15google_breakpad14test_assembler7Section5ClearEv
+PUBLIC 5095c 0 _ZN15google_breakpad14test_assembler7Section11GetContentsEPSs
+PUBLIC 50a9c 0 _ZNSt4priv12_Impl_vectorIN15google_breakpad14test_assembler7Section9ReferenceESaIS4_EE22_M_insert_overflow_auxEPS4_RKS4_RKSt12__false_typemb
+PUBLIC 50d88 0 _ZN15google_breakpad14test_assembler7Section6AppendENS0_10EndiannessEmRKNS0_5LabelE
+PUBLIC 50e48 0 _ZN15google_breakpad14test_assembler7Section2L8ERKNS0_5LabelE
+PUBLIC 50e58 0 _ZN15google_breakpad14test_assembler7Section2B8ERKNS0_5LabelE
+PUBLIC 50e68 0 _ZN15google_breakpad14test_assembler7Section3L16ERKNS0_5LabelE
+PUBLIC 50e78 0 _ZN15google_breakpad14test_assembler7Section3L32ERKNS0_5LabelE
+PUBLIC 50e88 0 _ZN15google_breakpad14test_assembler7Section3L64ERKNS0_5LabelE
+PUBLIC 50e98 0 _ZN15google_breakpad14test_assembler7Section3B16ERKNS0_5LabelE
+PUBLIC 50ea8 0 _ZN15google_breakpad14test_assembler7Section3B32ERKNS0_5LabelE
+PUBLIC 50eb8 0 _ZN15google_breakpad14test_assembler7Section3B64ERKNS0_5LabelE
+PUBLIC 50ec8 0 _ZN15google_breakpad14test_assembler7Section2D8ERKNS0_5LabelE
+PUBLIC 50ed8 0 _ZN15google_breakpad14test_assembler7Section3D16ERKNS0_5LabelE
+PUBLIC 50ee8 0 _ZN15google_breakpad14test_assembler7Section3D32ERKNS0_5LabelE
+PUBLIC 50ef8 0 _ZN15google_breakpad14test_assembler7Section3D64ERKNS0_5LabelE
+PUBLIC 50f08 0 _ZN15google_breakpad14test_assembler7Section6AppendERKS1_
+PUBLIC 510ec 0 _ZN15google_breakpad8CopyFileEPKcS1_
+PUBLIC 512d0 0 _ZN15google_breakpad8ReadFileEPKcPvPl
+PUBLIC 513d4 0 _ZN15google_breakpad9WriteFileEPKcPKvm
+PUBLIC 51dbc 0 _ZN7testing8internal18CmpHelperEQFailureIPKiS3_EENS_15AssertionResultEPKcS6_RKT_RKT0_
+PUBLIC 51ef4 0 _ZN7testing13PrintToStringIPKhEESsRKT_
+PUBLIC 51f50 0 _ZN7testing8internal11CmpHelperEQIPKhS3_EENS_15AssertionResultEPKcS6_RKT_RKT0_
+PUBLIC 51fec 0 _ZN47MinidumpMemoryRangeTest_DefaultConstructor_Test8TestBodyEv
+PUBLIC 52118 0 _ZN55MinidumpMemoryRangeTest_SubrangeOfEmptyMemoryRange_Test8TestBodyEv
+PUBLIC 52260 0 _ZN57MinidumpMemoryRangeTest_ConstructorWithDataAndLength_Test8TestBodyEv
+PUBLIC 5239c 0 _ZN34MinidumpMemoryRangeTest_Reset_Test8TestBodyEv
+PUBLIC 526d4 0 _ZN32MinidumpMemoryRangeTest_Set_Test8TestBodyEv
+PUBLIC 52914 0 _ZN7testing8internal11CmpHelperEQIPKhPKvEENS_15AssertionResultEPKcS8_RKT_RKT0_
+PUBLIC 529b0 0 _ZN7testing8internal18CmpHelperEQFailureIPKvS3_EENS_15AssertionResultEPKcS6_RKT_RKT0_
+PUBLIC 52a34 0 _ZN61MinidumpMemoryRangeTest_SubrangeWithMDLocationDescriptor_Test8TestBodyEv
+PUBLIC 52fe0 0 _ZN44MinidumpMemoryRangeTest_GetArrayElement_Test8TestBodyEv
+PUBLIC 531e4 0 _ZN47MinidumpMemoryRangeTest_SubrangeAndGetData_Test8TestBodyEv
+PUBLIC 53820 0 _ZN52MinidumpMemoryRangeTest_GetDataWithTemplateType_Test8TestBodyEv
+PUBLIC 539b0 0 _ZN59MinidumpMemoryRangeTest_GetArrayElmentWithTemplateType_Test8TestBodyEv
+PUBLIC 53b40 0 _ZN7testing8internal11CmpHelperEQIA1_cSsEENS_15AssertionResultEPKcS5_RKT_RKT0_
+PUBLIC 53bfc 0 _ZN45MinidumpMemoryRangeTest_GetAsciiMDString_Test8TestBodyEv
+PUBLIC 540c4 0 _ZN7testing8internal18CmpHelperEQFailureImmEENS_15AssertionResultEPKcS4_RKT_RKT0_
+PUBLIC 54200 0 _ZN33AndroidUContext_SigmakOffset_Test8TestBodyEv
+PUBLIC 5429c 0 _ZN32AndroidUContext_GRegsOffset_Test8TestBodyEv
+STACK CFI INIT 2351c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23520 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23524 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2352c 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23534 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2353c 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23544 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2354c 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23554 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23558 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23560 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23564 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23568 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2356c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23570 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23574 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23578 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2357c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23580 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23584 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23588 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2358c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23590 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23594 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23598 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2359c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235a0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235a4 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235a8 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235ac 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235b0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235b4 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235b8 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235bc 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235c0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235c4 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235c8 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235d0 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235ec 24 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23610 6c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2367c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23680 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23688 40 .cfa: sp 0 + .ra: x30
+STACK CFI 2368c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 23690 .cfa: x29 32 +
+STACK CFI 23694 x19: .cfa -16 + ^
+STACK CFI 236c0 x19: x19
+STACK CFI 236c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 236c8 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 236d0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 236d4 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 236d8 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 236dc 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 236e0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 236e4 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 236e8 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 236ec 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 236f0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 236f4 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 236f8 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 236fc 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23700 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23704 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23708 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2370c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23710 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23714 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23718 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2371c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23720 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23724 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23728 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2372c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23730 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23734 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23738 b4 .cfa: sp 0 + .ra: x30
+STACK CFI 2373c .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 23740 .cfa: x29 64 +
+STACK CFI 2374c x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 237dc x23: x23
+STACK CFI 237e0 x19: x19 x20: x20
+STACK CFI 237e4 x21: x21 x22: x22
+STACK CFI 237e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 237ec a8 .cfa: sp 0 + .ra: x30
+STACK CFI 237f0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 237f4 .cfa: x29 64 +
+STACK CFI 23800 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 23884 x23: x23
+STACK CFI 23888 x19: x19 x20: x20
+STACK CFI 2388c x21: x21 x22: x22
+STACK CFI 23890 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23894 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 238a8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 238ac .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 238b0 .cfa: x29 32 +
+STACK CFI 238b4 x19: .cfa -16 + ^
+STACK CFI 238c4 x19: x19
+STACK CFI 238c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 238cc 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 238e0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 238e4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 238e8 .cfa: x29 32 +
+STACK CFI 238ec x19: .cfa -16 + ^
+STACK CFI 238fc x19: x19
+STACK CFI 23900 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23904 3c .cfa: sp 0 + .ra: x30
+STACK CFI 23908 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 23914 .cfa: x29 48 +
+STACK CFI 2393c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23940 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23948 1c .cfa: sp 0 + .ra: x30
+STACK CFI 2394c .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 23954 .cfa: x29 16 +
+STACK CFI 23960 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23964 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23978 24 .cfa: sp 0 + .ra: x30
+STACK CFI 2397c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 23980 .cfa: x29 32 +
+STACK CFI 23984 x19: .cfa -16 + ^
+STACK CFI 23994 x19: x19
+STACK CFI 23998 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2399c 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 239b0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 239b4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 239b8 .cfa: x29 32 +
+STACK CFI 239bc x19: .cfa -16 + ^
+STACK CFI 239cc x19: x19
+STACK CFI 239d0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 239d4 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 239e8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 239ec .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 239f0 .cfa: x29 32 +
+STACK CFI 239f4 x19: .cfa -16 + ^
+STACK CFI 23a04 x19: x19
+STACK CFI 23a08 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23a0c 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23a20 24 .cfa: sp 0 + .ra: x30
+STACK CFI 23a24 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 23a28 .cfa: x29 32 +
+STACK CFI 23a2c x19: .cfa -16 + ^
+STACK CFI 23a3c x19: x19
+STACK CFI 23a40 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23a44 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23a58 24 .cfa: sp 0 + .ra: x30
+STACK CFI 23a5c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 23a60 .cfa: x29 32 +
+STACK CFI 23a64 x19: .cfa -16 + ^
+STACK CFI 23a74 x19: x19
+STACK CFI 23a78 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23a7c 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23a90 24 .cfa: sp 0 + .ra: x30
+STACK CFI 23a94 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 23a98 .cfa: x29 32 +
+STACK CFI 23a9c x19: .cfa -16 + ^
+STACK CFI 23aac x19: x19
+STACK CFI 23ab0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23ab4 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23ac8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 23acc .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 23ad0 .cfa: x29 32 +
+STACK CFI 23ad4 x19: .cfa -16 + ^
+STACK CFI 23ae4 x19: x19
+STACK CFI 23ae8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23aec 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23b00 24 .cfa: sp 0 + .ra: x30
+STACK CFI 23b04 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 23b08 .cfa: x29 32 +
+STACK CFI 23b0c x19: .cfa -16 + ^
+STACK CFI 23b1c x19: x19
+STACK CFI 23b20 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23b24 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23b38 24 .cfa: sp 0 + .ra: x30
+STACK CFI 23b3c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 23b40 .cfa: x29 32 +
+STACK CFI 23b44 x19: .cfa -16 + ^
+STACK CFI 23b54 x19: x19
+STACK CFI 23b58 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23b5c 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23b70 24 .cfa: sp 0 + .ra: x30
+STACK CFI 23b74 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 23b78 .cfa: x29 32 +
+STACK CFI 23b7c x19: .cfa -16 + ^
+STACK CFI 23b8c x19: x19
+STACK CFI 23b90 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23b94 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23ba8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 23bac .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 23bb0 .cfa: x29 32 +
+STACK CFI 23bb4 x19: .cfa -16 + ^
+STACK CFI 23bc4 x19: x19
+STACK CFI 23bc8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23bcc 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23be0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 23be4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 23be8 .cfa: x29 32 +
+STACK CFI 23bec x19: .cfa -16 + ^
+STACK CFI 23bfc x19: x19
+STACK CFI 23c00 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23c04 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23c18 24 .cfa: sp 0 + .ra: x30
+STACK CFI 23c1c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 23c20 .cfa: x29 32 +
+STACK CFI 23c24 x19: .cfa -16 + ^
+STACK CFI 23c34 x19: x19
+STACK CFI 23c38 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23c3c 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23c50 24 .cfa: sp 0 + .ra: x30
+STACK CFI 23c54 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 23c58 .cfa: x29 32 +
+STACK CFI 23c5c x19: .cfa -16 + ^
+STACK CFI 23c6c x19: x19
+STACK CFI 23c70 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23c74 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23c88 24 .cfa: sp 0 + .ra: x30
+STACK CFI 23c8c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 23c90 .cfa: x29 32 +
+STACK CFI 23c94 x19: .cfa -16 + ^
+STACK CFI 23ca4 x19: x19
+STACK CFI 23ca8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23cac 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23cc0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 23cc4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 23cc8 .cfa: x29 32 +
+STACK CFI 23ccc x19: .cfa -16 + ^
+STACK CFI 23cdc x19: x19
+STACK CFI 23ce0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23ce4 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23cf8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 23cfc .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 23d00 .cfa: x29 32 +
+STACK CFI 23d04 x19: .cfa -16 + ^
+STACK CFI 23d14 x19: x19
+STACK CFI 23d18 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23d1c 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23d30 24 .cfa: sp 0 + .ra: x30
+STACK CFI 23d34 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 23d38 .cfa: x29 32 +
+STACK CFI 23d3c x19: .cfa -16 + ^
+STACK CFI 23d4c x19: x19
+STACK CFI 23d50 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23d54 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23d68 24 .cfa: sp 0 + .ra: x30
+STACK CFI 23d6c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 23d70 .cfa: x29 32 +
+STACK CFI 23d74 x19: .cfa -16 + ^
+STACK CFI 23d84 x19: x19
+STACK CFI 23d88 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23d8c 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23da0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 23da4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 23da8 .cfa: x29 32 +
+STACK CFI 23dac x19: .cfa -16 + ^
+STACK CFI 23dbc x19: x19
+STACK CFI 23dc0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23dc4 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23dd8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 23ddc .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 23de0 .cfa: x29 32 +
+STACK CFI 23de4 x19: .cfa -16 + ^
+STACK CFI 23df4 x19: x19
+STACK CFI 23df8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23dfc 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23e10 24 .cfa: sp 0 + .ra: x30
+STACK CFI 23e14 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 23e18 .cfa: x29 32 +
+STACK CFI 23e1c x19: .cfa -16 + ^
+STACK CFI 23e2c x19: x19
+STACK CFI 23e30 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23e34 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23e48 24 .cfa: sp 0 + .ra: x30
+STACK CFI 23e4c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 23e50 .cfa: x29 32 +
+STACK CFI 23e54 x19: .cfa -16 + ^
+STACK CFI 23e64 x19: x19
+STACK CFI 23e68 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23e6c 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23e80 24 .cfa: sp 0 + .ra: x30
+STACK CFI 23e84 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 23e88 .cfa: x29 32 +
+STACK CFI 23e8c x19: .cfa -16 + ^
+STACK CFI 23e9c x19: x19
+STACK CFI 23ea0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23ea4 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23eb8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 23ebc .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 23ec0 .cfa: x29 32 +
+STACK CFI 23ec4 x19: .cfa -16 + ^
+STACK CFI 23ed4 x19: x19
+STACK CFI 23ed8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23edc 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23ef0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 23ef4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 23ef8 .cfa: x29 32 +
+STACK CFI 23efc x19: .cfa -16 + ^
+STACK CFI 23f0c x19: x19
+STACK CFI 23f10 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23f14 194 .cfa: sp 0 + .ra: x30
+STACK CFI 23f18 .cfa: sp 208 + .ra: .cfa -200 + ^ x29: .cfa -208 + ^
+STACK CFI 23f1c .cfa: x29 208 +
+STACK CFI 23f20 x19: .cfa -192 + ^ x20: .cfa -184 + ^
+STACK CFI 23f2c x21: .cfa -176 + ^ x22: .cfa -168 + ^
+STACK CFI 2409c x19: x19 x20: x20
+STACK CFI 240a0 x21: x21 x22: x22
+STACK CFI 240a4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 240a8 d4 .cfa: sp 0 + .ra: x30
+STACK CFI 240ac .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 240b4 .cfa: x29 64 +
+STACK CFI 240bc x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 24170 x19: x19 x20: x20
+STACK CFI 24174 x21: x21 x22: x22
+STACK CFI 24178 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2417c 3c .cfa: sp 0 + .ra: x30
+STACK CFI 24180 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 24188 .cfa: x29 32 +
+STACK CFI 2418c x19: .cfa -16 + ^
+STACK CFI 241b0 x19: x19
+STACK CFI 241b4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 241b8 3c .cfa: sp 0 + .ra: x30
+STACK CFI 241bc .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 241c4 .cfa: x29 32 +
+STACK CFI 241c8 x19: .cfa -16 + ^
+STACK CFI 241ec x19: x19
+STACK CFI 241f0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 241f4 3c .cfa: sp 0 + .ra: x30
+STACK CFI 241f8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 24200 .cfa: x29 32 +
+STACK CFI 24204 x19: .cfa -16 + ^
+STACK CFI 24228 x19: x19
+STACK CFI 2422c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24230 3c .cfa: sp 0 + .ra: x30
+STACK CFI 24234 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2423c .cfa: x29 32 +
+STACK CFI 24240 x19: .cfa -16 + ^
+STACK CFI 24264 x19: x19
+STACK CFI 24268 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2426c 3c .cfa: sp 0 + .ra: x30
+STACK CFI 24270 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 24278 .cfa: x29 32 +
+STACK CFI 2427c x19: .cfa -16 + ^
+STACK CFI 242a0 x19: x19
+STACK CFI 242a4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 242a8 3c .cfa: sp 0 + .ra: x30
+STACK CFI 242ac .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 242b4 .cfa: x29 32 +
+STACK CFI 242b8 x19: .cfa -16 + ^
+STACK CFI 242dc x19: x19
+STACK CFI 242e0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 242e4 3c .cfa: sp 0 + .ra: x30
+STACK CFI 242e8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 242f0 .cfa: x29 32 +
+STACK CFI 242f4 x19: .cfa -16 + ^
+STACK CFI 24318 x19: x19
+STACK CFI 2431c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24320 3c .cfa: sp 0 + .ra: x30
+STACK CFI 24324 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2432c .cfa: x29 32 +
+STACK CFI 24330 x19: .cfa -16 + ^
+STACK CFI 24354 x19: x19
+STACK CFI 24358 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2435c 3c .cfa: sp 0 + .ra: x30
+STACK CFI 24360 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 24368 .cfa: x29 32 +
+STACK CFI 2436c x19: .cfa -16 + ^
+STACK CFI 24390 x19: x19
+STACK CFI 24394 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24398 3c .cfa: sp 0 + .ra: x30
+STACK CFI 2439c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 243a4 .cfa: x29 32 +
+STACK CFI 243a8 x19: .cfa -16 + ^
+STACK CFI 243cc x19: x19
+STACK CFI 243d0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 243d4 3c .cfa: sp 0 + .ra: x30
+STACK CFI 243d8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 243e0 .cfa: x29 32 +
+STACK CFI 243e4 x19: .cfa -16 + ^
+STACK CFI 24408 x19: x19
+STACK CFI 2440c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24410 3c .cfa: sp 0 + .ra: x30
+STACK CFI 24414 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2441c .cfa: x29 32 +
+STACK CFI 24420 x19: .cfa -16 + ^
+STACK CFI 24444 x19: x19
+STACK CFI 24448 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2444c 3c .cfa: sp 0 + .ra: x30
+STACK CFI 24450 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 24458 .cfa: x29 32 +
+STACK CFI 2445c x19: .cfa -16 + ^
+STACK CFI 24480 x19: x19
+STACK CFI 24484 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24488 3c .cfa: sp 0 + .ra: x30
+STACK CFI 2448c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 24494 .cfa: x29 32 +
+STACK CFI 24498 x19: .cfa -16 + ^
+STACK CFI 244bc x19: x19
+STACK CFI 244c0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 244c4 3c .cfa: sp 0 + .ra: x30
+STACK CFI 244c8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 244d0 .cfa: x29 32 +
+STACK CFI 244d4 x19: .cfa -16 + ^
+STACK CFI 244f8 x19: x19
+STACK CFI 244fc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24500 3c .cfa: sp 0 + .ra: x30
+STACK CFI 24504 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2450c .cfa: x29 32 +
+STACK CFI 24510 x19: .cfa -16 + ^
+STACK CFI 24534 x19: x19
+STACK CFI 24538 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2453c 3c .cfa: sp 0 + .ra: x30
+STACK CFI 24540 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 24548 .cfa: x29 32 +
+STACK CFI 2454c x19: .cfa -16 + ^
+STACK CFI 24570 x19: x19
+STACK CFI 24574 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24578 3c .cfa: sp 0 + .ra: x30
+STACK CFI 2457c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 24584 .cfa: x29 32 +
+STACK CFI 24588 x19: .cfa -16 + ^
+STACK CFI 245ac x19: x19
+STACK CFI 245b0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 245b4 3c .cfa: sp 0 + .ra: x30
+STACK CFI 245b8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 245c0 .cfa: x29 32 +
+STACK CFI 245c4 x19: .cfa -16 + ^
+STACK CFI 245e8 x19: x19
+STACK CFI 245ec .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 245f0 3c .cfa: sp 0 + .ra: x30
+STACK CFI 245f4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 245fc .cfa: x29 32 +
+STACK CFI 24600 x19: .cfa -16 + ^
+STACK CFI 24624 x19: x19
+STACK CFI 24628 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2462c 3c .cfa: sp 0 + .ra: x30
+STACK CFI 24630 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 24638 .cfa: x29 32 +
+STACK CFI 2463c x19: .cfa -16 + ^
+STACK CFI 24660 x19: x19
+STACK CFI 24664 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24668 3c .cfa: sp 0 + .ra: x30
+STACK CFI 2466c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 24674 .cfa: x29 32 +
+STACK CFI 24678 x19: .cfa -16 + ^
+STACK CFI 2469c x19: x19
+STACK CFI 246a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 246a4 3c .cfa: sp 0 + .ra: x30
+STACK CFI 246a8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 246b0 .cfa: x29 32 +
+STACK CFI 246b4 x19: .cfa -16 + ^
+STACK CFI 246d8 x19: x19
+STACK CFI 246dc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 246e0 3c .cfa: sp 0 + .ra: x30
+STACK CFI 246e4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 246ec .cfa: x29 32 +
+STACK CFI 246f0 x19: .cfa -16 + ^
+STACK CFI 24714 x19: x19
+STACK CFI 24718 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2471c 3c .cfa: sp 0 + .ra: x30
+STACK CFI 24720 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 24728 .cfa: x29 32 +
+STACK CFI 2472c x19: .cfa -16 + ^
+STACK CFI 24750 x19: x19
+STACK CFI 24754 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24758 3c .cfa: sp 0 + .ra: x30
+STACK CFI 2475c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 24764 .cfa: x29 32 +
+STACK CFI 24768 x19: .cfa -16 + ^
+STACK CFI 2478c x19: x19
+STACK CFI 24790 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24794 b0 .cfa: sp 0 + .ra: x30
+STACK CFI 24798 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 2479c .cfa: x29 64 +
+STACK CFI 247a8 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 24834 x23: x23
+STACK CFI 24838 x19: x19 x20: x20
+STACK CFI 2483c x21: x21 x22: x22
+STACK CFI 24840 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24844 40 .cfa: sp 0 + .ra: x30
+STACK CFI 24848 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 24854 .cfa: x29 32 +
+STACK CFI 24858 x19: .cfa -16 + ^
+STACK CFI 2487c x19: x19
+STACK CFI 24880 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24884 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 248a0 48 .cfa: sp 0 + .ra: x30
+STACK CFI 248a4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 248a8 .cfa: x29 32 +
+STACK CFI 248ac x19: .cfa -16 + ^
+STACK CFI 248e0 x19: x19
+STACK CFI 248e4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 248e8 30 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 24918 28 .cfa: sp 0 + .ra: x30
+STACK CFI 2491c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 24920 .cfa: x29 32 +
+STACK CFI 24924 x19: .cfa -16 + ^
+STACK CFI 24938 x19: x19
+STACK CFI 2493c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24940 34 .cfa: sp 0 + .ra: x30
+STACK CFI 24948 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2494c .cfa: x29 32 +
+STACK CFI 24954 x19: .cfa -16 + ^
+STACK CFI 2496c x19: x19
+STACK CFI 24970 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24974 24 .cfa: sp 0 + .ra: x30
+STACK CFI 24978 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2497c .cfa: x29 32 +
+STACK CFI 24980 x19: .cfa -16 + ^
+STACK CFI 24990 x19: x19
+STACK CFI 24994 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24998 60 .cfa: sp 0 + .ra: x30
+STACK CFI 2499c .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 249a0 .cfa: x29 48 +
+STACK CFI 249a8 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 249ec x19: x19 x20: x20
+STACK CFI 249f0 x21: x21
+STACK CFI 249f4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 249f8 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 24a00 fc .cfa: sp 0 + .ra: x30
+STACK CFI 24a04 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 24a0c .cfa: x29 96 +
+STACK CFI 24a18 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^
+STACK CFI 24aec x21: x21 x22: x22
+STACK CFI 24af0 x19: x19 x20: x20
+STACK CFI 24af4 x23: x23 x24: x24
+STACK CFI 24af8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24afc b4 .cfa: sp 0 + .ra: x30
+STACK CFI 24b00 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 24b04 .cfa: x29 48 +
+STACK CFI 24b08 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 24b18 x21: .cfa -16 + ^
+STACK CFI 24ba4 x21: x21
+STACK CFI 24ba8 x19: x19 x20: x20
+STACK CFI 24bac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24bb0 b0 .cfa: sp 0 + .ra: x30
+STACK CFI 24bb4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 24bb8 .cfa: x29 48 +
+STACK CFI 24bc0 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 24c40 x21: x21
+STACK CFI 24c58 x19: x19 x20: x20
+STACK CFI 24c5c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24c60 98 .cfa: sp 0 + .ra: x30
+STACK CFI 24c64 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 24c68 .cfa: x29 64 +
+STACK CFI 24c70 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 24cec x19: x19 x20: x20
+STACK CFI 24cf0 x21: x21
+STACK CFI 24cf4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24cf8 1c .cfa: sp 0 + .ra: x30
+STACK CFI 24cfc .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 24d00 .cfa: x29 16 +
+STACK CFI 24d10 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24d14 3c .cfa: sp 0 + .ra: x30
+STACK CFI 24d18 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 24d1c .cfa: x29 16 +
+STACK CFI 24d4c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24d50 60 .cfa: sp 0 + .ra: x30
+STACK CFI 24d54 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 24d60 .cfa: x29 32 +
+STACK CFI 24d64 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 24da8 x19: x19 x20: x20
+STACK CFI 24dac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24db0 68 .cfa: sp 0 + .ra: x30
+STACK CFI 24db4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 24db8 .cfa: x29 48 +
+STACK CFI 24dbc x19: .cfa -32 + ^
+STACK CFI 24e10 x19: x19
+STACK CFI 24e14 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24e18 34 .cfa: sp 0 + .ra: x30
+STACK CFI 24e1c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 24e24 .cfa: x29 32 +
+STACK CFI 24e28 x19: .cfa -16 + ^
+STACK CFI 24e44 x19: x19
+STACK CFI 24e48 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24e4c 50 .cfa: sp 0 + .ra: x30
+STACK CFI 24e50 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 24e54 .cfa: x29 48 +
+STACK CFI 24e58 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 24e94 x19: x19 x20: x20
+STACK CFI 24e98 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24e9c bc .cfa: sp 0 + .ra: x30
+STACK CFI 24ea0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 24ea4 .cfa: x29 64 +
+STACK CFI 24eac x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 24f4c x21: x21
+STACK CFI 24f50 x19: x19 x20: x20
+STACK CFI 24f54 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24f58 e8 .cfa: sp 0 + .ra: x30
+STACK CFI 24f5c .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 24f60 .cfa: x29 64 +
+STACK CFI 24f64 x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 24f70 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 25034 x19: x19 x20: x20
+STACK CFI 25038 x21: x21 x22: x22
+STACK CFI 2503c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25040 64 .cfa: sp 0 + .ra: x30
+STACK CFI 25044 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 25048 .cfa: x29 48 +
+STACK CFI 2504c x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 25058 x21: .cfa -16 + ^
+STACK CFI 25098 x19: x19 x20: x20
+STACK CFI 2509c x21: x21
+STACK CFI 250a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 250a4 58 .cfa: sp 0 + .ra: x30
+STACK CFI 250a8 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 250ac .cfa: x29 48 +
+STACK CFI 250b0 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 250b8 x21: .cfa -16 + ^
+STACK CFI 250f0 x19: x19 x20: x20
+STACK CFI 250f4 x21: x21
+STACK CFI 250f8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 250fc 4c .cfa: sp 0 + .ra: x30
+STACK CFI 25100 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 25104 .cfa: x29 48 +
+STACK CFI 25108 x19: .cfa -32 + ^
+STACK CFI 25140 x19: x19
+STACK CFI 25144 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25148 7c .cfa: sp 0 + .ra: x30
+STACK CFI 2514c .cfa: sp 384 + .ra: .cfa -376 + ^ x29: .cfa -384 + ^
+STACK CFI 25150 .cfa: x29 384 +
+STACK CFI 25154 x19: .cfa -368 + ^ x20: .cfa -360 + ^
+STACK CFI 2515c x21: .cfa -352 + ^
+STACK CFI 251b8 x21: x21
+STACK CFI 251bc x19: x19 x20: x20
+STACK CFI 251c0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 251c4 2c .cfa: sp 0 + .ra: x30
+STACK CFI 251c8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 251cc .cfa: x29 32 +
+STACK CFI 251d0 x19: .cfa -16 + ^
+STACK CFI 251e8 x19: x19
+STACK CFI 251ec .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 251f0 8c .cfa: sp 0 + .ra: x30
+STACK CFI 251f4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 251f8 .cfa: x29 48 +
+STACK CFI 251fc x19: .cfa -32 + ^
+STACK CFI 25268 x19: x19
+STACK CFI 2526c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 25270 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 25274 x19: x19
+STACK CFI 25278 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2527c c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25288 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25298 24 .cfa: sp 0 + .ra: x30
+STACK CFI 2529c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 252a0 .cfa: x29 32 +
+STACK CFI 252a4 x19: .cfa -16 + ^
+STACK CFI 252b4 x19: x19
+STACK CFI 252b8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 252bc 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 252cc c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 252d8 8c .cfa: sp 0 + .ra: x30
+STACK CFI 252dc .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 252e0 .cfa: x29 48 +
+STACK CFI 252e4 x19: .cfa -32 + ^
+STACK CFI 25350 x19: x19
+STACK CFI 25354 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 25358 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 2535c x19: x19
+STACK CFI 25360 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25364 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25370 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25380 24 .cfa: sp 0 + .ra: x30
+STACK CFI 25384 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 25388 .cfa: x29 32 +
+STACK CFI 2538c x19: .cfa -16 + ^
+STACK CFI 2539c x19: x19
+STACK CFI 253a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 253a4 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 253b4 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 253c0 e0 .cfa: sp 0 + .ra: x30
+STACK CFI 253c4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 253c8 .cfa: x29 48 +
+STACK CFI 253cc x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 2548c x19: x19 x20: x20
+STACK CFI 25490 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 25494 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x29: .cfa -48 + ^
+STACK CFI 25498 x19: x19 x20: x20
+STACK CFI 2549c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 254a0 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 254ac cc .cfa: sp 0 + .ra: x30
+STACK CFI 254b0 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 254b4 .cfa: x29 48 +
+STACK CFI 254b8 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 25564 x19: x19 x20: x20
+STACK CFI 25568 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2556c .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x29: .cfa -48 + ^
+STACK CFI 25570 x19: x19 x20: x20
+STACK CFI 25574 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25578 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25584 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25590 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25598 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255a8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 255ac .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 255b0 .cfa: x29 32 +
+STACK CFI 255b4 x19: .cfa -16 + ^
+STACK CFI 255c4 x19: x19
+STACK CFI 255c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 255cc 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255d4 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255e4 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255f0 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255f8 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25608 24 .cfa: sp 0 + .ra: x30
+STACK CFI 2560c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 25610 .cfa: x29 32 +
+STACK CFI 25614 x19: .cfa -16 + ^
+STACK CFI 25624 x19: x19
+STACK CFI 25628 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2562c 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25634 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25644 5c .cfa: sp 0 + .ra: x30
+STACK CFI 25648 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2564c .cfa: x29 32 +
+STACK CFI 25650 x19: .cfa -16 + ^
+STACK CFI 25698 x19: x19
+STACK CFI 2569c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 256a0 78 .cfa: sp 0 + .ra: x30
+STACK CFI 256a4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 256ac .cfa: x29 32 +
+STACK CFI 256b0 x19: .cfa -16 + ^
+STACK CFI 25710 x19: x19
+STACK CFI 25714 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25718 50 .cfa: sp 0 + .ra: x30
+STACK CFI 2571c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 25720 .cfa: x29 32 +
+STACK CFI 25724 x19: .cfa -16 + ^
+STACK CFI 25754 x19: x19
+STACK CFI 25758 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2575c .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI 25760 x19: x19
+STACK CFI 25764 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25768 13c .cfa: sp 0 + .ra: x30
+STACK CFI 2576c .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 25770 .cfa: x29 64 +
+STACK CFI 25778 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 25898 x19: x19 x20: x20
+STACK CFI 2589c x21: x21 x22: x22
+STACK CFI 258a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 258a4 c0 .cfa: sp 0 + .ra: x30
+STACK CFI 258a8 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 258ac .cfa: x29 80 +
+STACK CFI 258b4 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI 25954 x21: x21
+STACK CFI 2595c x19: x19 x20: x20
+STACK CFI 25960 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25964 104 .cfa: sp 0 + .ra: x30
+STACK CFI 25968 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 2596c .cfa: x29 80 +
+STACK CFI 25978 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^
+STACK CFI 25a58 x19: x19 x20: x20
+STACK CFI 25a5c x21: x21 x22: x22
+STACK CFI 25a60 x23: x23 x24: x24
+STACK CFI 25a64 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25a68 c0 .cfa: sp 0 + .ra: x30
+STACK CFI 25a6c .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 25a70 .cfa: x29 80 +
+STACK CFI 25a78 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI 25b18 x21: x21
+STACK CFI 25b20 x19: x19 x20: x20
+STACK CFI 25b24 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25b28 2c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25b54 5c .cfa: sp 0 + .ra: x30
+STACK CFI 25b58 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 25b5c .cfa: x29 16 +
+STACK CFI 25bac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25bb0 164 .cfa: sp 0 + .ra: x30
+STACK CFI 25bb4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 25bbc .cfa: x29 80 +
+STACK CFI 25bc8 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI 25d04 x23: x23
+STACK CFI 25d08 x19: x19 x20: x20
+STACK CFI 25d0c x21: x21 x22: x22
+STACK CFI 25d10 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25d14 90 .cfa: sp 0 + .ra: x30
+STACK CFI 25d18 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 25d1c .cfa: x29 48 +
+STACK CFI 25d20 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 25d2c x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 25d98 x19: x19 x20: x20
+STACK CFI 25d9c x21: x21 x22: x22
+STACK CFI 25da0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25da4 234 .cfa: sp 0 + .ra: x30
+STACK CFI 25da8 .cfa: sp 272 + .ra: .cfa -264 + ^ x29: .cfa -272 + ^
+STACK CFI 25dac .cfa: x29 272 +
+STACK CFI 25db0 x21: .cfa -240 + ^ x22: .cfa -232 + ^
+STACK CFI 25dc0 x19: .cfa -256 + ^ x20: .cfa -248 + ^ x23: .cfa -224 + ^ x24: .cfa -216 + ^
+STACK CFI 25dcc x25: .cfa -208 + ^ x26: .cfa -200 + ^
+STACK CFI 25fc4 x19: x19 x20: x20
+STACK CFI 25fc8 x21: x21 x22: x22
+STACK CFI 25fcc x23: x23 x24: x24
+STACK CFI 25fd0 x25: x25 x26: x26
+STACK CFI 25fd4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25fd8 34 .cfa: sp 0 + .ra: x30
+STACK CFI 25fdc .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 25fe0 .cfa: x29 48 +
+STACK CFI 25fe4 x19: .cfa -32 + ^
+STACK CFI 26004 x19: x19
+STACK CFI 26008 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2600c 24 .cfa: sp 0 + .ra: x30
+STACK CFI 26018 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 2601c .cfa: x29 16 +
+STACK CFI 2602c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26030 98 .cfa: sp 0 + .ra: x30
+STACK CFI 26034 .cfa: sp 128 + .ra: .cfa -120 + ^ x29: .cfa -128 + ^
+STACK CFI 26038 .cfa: x29 128 +
+STACK CFI 26044 x19: .cfa -112 + ^ x20: .cfa -104 + ^ x21: .cfa -96 + ^ x22: .cfa -88 + ^ x23: .cfa -80 + ^
+STACK CFI 260b8 x23: x23
+STACK CFI 260bc x19: x19 x20: x20
+STACK CFI 260c0 x21: x21 x22: x22
+STACK CFI 260c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 260c8 c0 .cfa: sp 0 + .ra: x30
+STACK CFI 260cc .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 260d0 .cfa: x29 80 +
+STACK CFI 260d8 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI 26178 x21: x21
+STACK CFI 26180 x19: x19 x20: x20
+STACK CFI 26184 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26188 54 .cfa: sp 0 + .ra: x30
+STACK CFI 2618c .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 26190 .cfa: x29 64 +
+STACK CFI 26194 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 261d4 x19: x19 x20: x20
+STACK CFI 261d8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 261dc 64 .cfa: sp 0 + .ra: x30
+STACK CFI 261e0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 261e4 .cfa: x29 64 +
+STACK CFI 261e8 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 26238 x19: x19 x20: x20
+STACK CFI 2623c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26240 54 .cfa: sp 0 + .ra: x30
+STACK CFI 26244 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 26248 .cfa: x29 64 +
+STACK CFI 2624c x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 2628c x19: x19 x20: x20
+STACK CFI 26290 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26294 54 .cfa: sp 0 + .ra: x30
+STACK CFI 26298 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 2629c .cfa: x29 64 +
+STACK CFI 262a0 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 262e0 x19: x19 x20: x20
+STACK CFI 262e4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 262e8 54 .cfa: sp 0 + .ra: x30
+STACK CFI 262ec .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 262f0 .cfa: x29 64 +
+STACK CFI 262f4 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 26334 x19: x19 x20: x20
+STACK CFI 26338 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2633c 104 .cfa: sp 0 + .ra: x30
+STACK CFI 26340 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 26348 .cfa: x29 80 +
+STACK CFI 26350 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x23: .cfa -32 + ^
+STACK CFI 26358 x21: .cfa -48 + ^ x22: .cfa -40 + ^
+STACK CFI 26430 x23: x23
+STACK CFI 26434 x19: x19 x20: x20
+STACK CFI 26438 x21: x21 x22: x22
+STACK CFI 2643c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26440 8c .cfa: sp 0 + .ra: x30
+STACK CFI 26444 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 26448 .cfa: x29 64 +
+STACK CFI 2644c x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 2645c x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 264c0 x19: x19 x20: x20
+STACK CFI 264c4 x21: x21 x22: x22
+STACK CFI 264c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 264cc 370 .cfa: sp 0 + .ra: x30
+STACK CFI 264d0 .cfa: sp 368 + .ra: .cfa -360 + ^ x29: .cfa -368 + ^
+STACK CFI 264d4 .cfa: x29 368 +
+STACK CFI 264e8 x19: .cfa -352 + ^ x20: .cfa -344 + ^ x21: .cfa -336 + ^ x22: .cfa -328 + ^ x23: .cfa -320 + ^ x24: .cfa -312 + ^ x25: .cfa -304 + ^ x26: .cfa -296 + ^ x27: .cfa -288 + ^ x28: .cfa -280 + ^
+STACK CFI 26824 x19: x19 x20: x20
+STACK CFI 26828 x21: x21 x22: x22
+STACK CFI 2682c x23: x23 x24: x24
+STACK CFI 26830 x25: x25 x26: x26
+STACK CFI 26834 x27: x27 x28: x28
+STACK CFI 26838 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2683c 28 .cfa: sp 0 + .ra: x30
+STACK CFI 26840 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 26848 .cfa: x29 32 +
+STACK CFI 2684c x19: .cfa -16 + ^
+STACK CFI 2685c x19: x19
+STACK CFI 26860 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26864 70 .cfa: sp 0 + .ra: x30
+STACK CFI 26868 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 2686c .cfa: x29 96 +
+STACK CFI 26874 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^
+STACK CFI 268c8 x19: x19 x20: x20
+STACK CFI 268cc x21: x21 x22: x22
+STACK CFI 268d0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 268d4 b0 .cfa: sp 0 + .ra: x30
+STACK CFI 268d8 .cfa: sp 480 + .ra: .cfa -472 + ^ x29: .cfa -480 + ^
+STACK CFI 268dc .cfa: x29 480 +
+STACK CFI 268e0 x21: .cfa -448 + ^ x22: .cfa -440 + ^
+STACK CFI 268f4 x19: .cfa -464 + ^ x20: .cfa -456 + ^ x23: .cfa -432 + ^
+STACK CFI 26974 x23: x23
+STACK CFI 26978 x19: x19 x20: x20
+STACK CFI 2697c x21: x21 x22: x22
+STACK CFI 26980 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26984 124 .cfa: sp 0 + .ra: x30
+STACK CFI 26988 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 26990 .cfa: x29 80 +
+STACK CFI 2699c x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI 26a98 x19: x19 x20: x20
+STACK CFI 26a9c x21: x21 x22: x22
+STACK CFI 26aa0 x23: x23
+STACK CFI 26aa4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26aa8 88 .cfa: sp 0 + .ra: x30
+STACK CFI 26aac .cfa: sp 336 + .ra: .cfa -328 + ^ x29: .cfa -336 + ^
+STACK CFI 26ab4 .cfa: x29 336 +
+STACK CFI 26ab8 x19: .cfa -320 + ^ x20: .cfa -312 + ^
+STACK CFI 26ac0 x21: .cfa -304 + ^
+STACK CFI 26b20 x21: x21
+STACK CFI 26b28 x19: x19 x20: x20
+STACK CFI 26b2c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26b30 114 .cfa: sp 0 + .ra: x30
+STACK CFI 26b34 .cfa: sp 224 + .ra: .cfa -216 + ^ x29: .cfa -224 + ^
+STACK CFI 26b38 .cfa: x29 224 +
+STACK CFI 26b3c x19: .cfa -208 + ^ x20: .cfa -200 + ^
+STACK CFI 26b48 x21: .cfa -192 + ^ x22: .cfa -184 + ^ x23: .cfa -176 + ^
+STACK CFI 26c30 x23: x23
+STACK CFI 26c38 x19: x19 x20: x20
+STACK CFI 26c3c x21: x21 x22: x22
+STACK CFI 26c40 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26c44 44 .cfa: sp 0 + .ra: x30
+STACK CFI 26c48 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 26c4c .cfa: x29 32 +
+STACK CFI 26c58 x19: .cfa -16 + ^
+STACK CFI 26c80 x19: x19
+STACK CFI 26c84 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26c88 9c .cfa: sp 0 + .ra: x30
+STACK CFI 26c8c .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 26c90 .cfa: x29 160 +
+STACK CFI 26c98 x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^
+STACK CFI 26d18 x19: x19 x20: x20
+STACK CFI 26d1c x21: x21 x22: x22
+STACK CFI 26d20 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26d24 1f8 .cfa: sp 0 + .ra: x30
+STACK CFI 26d28 .cfa: sp 176 + .ra: .cfa -168 + ^ x29: .cfa -176 + ^
+STACK CFI 26d2c .cfa: x29 176 +
+STACK CFI 26d38 x19: .cfa -160 + ^ x20: .cfa -152 + ^ x21: .cfa -144 + ^ x22: .cfa -136 + ^ x23: .cfa -128 + ^
+STACK CFI 26f0c x23: x23
+STACK CFI 26f10 x19: x19 x20: x20
+STACK CFI 26f14 x21: x21 x22: x22
+STACK CFI 26f18 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26f1c 5c .cfa: sp 0 + .ra: x30
+STACK CFI 26f20 .cfa: sp 336 + .ra: .cfa -328 + ^ x29: .cfa -336 + ^
+STACK CFI 26f28 .cfa: x29 336 +
+STACK CFI 26f2c x19: .cfa -320 + ^ x20: .cfa -312 + ^
+STACK CFI 26f34 x21: .cfa -304 + ^
+STACK CFI 26f68 x21: x21
+STACK CFI 26f70 x19: x19 x20: x20
+STACK CFI 26f74 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26f78 9c .cfa: sp 0 + .ra: x30
+STACK CFI 26f7c .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 26f80 .cfa: x29 160 +
+STACK CFI 26f88 x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^
+STACK CFI 27008 x19: x19 x20: x20
+STACK CFI 2700c x21: x21 x22: x22
+STACK CFI 27010 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 27014 9c .cfa: sp 0 + .ra: x30
+STACK CFI 27018 .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 2701c .cfa: x29 160 +
+STACK CFI 27024 x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^
+STACK CFI 270a4 x19: x19 x20: x20
+STACK CFI 270a8 x21: x21 x22: x22
+STACK CFI 270ac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 270b0 39c .cfa: sp 0 + .ra: x30
+STACK CFI 270b4 .cfa: sp 176 + .ra: .cfa -168 + ^ x29: .cfa -176 + ^
+STACK CFI 270b8 .cfa: x29 176 +
+STACK CFI 270c4 x19: .cfa -160 + ^ x20: .cfa -152 + ^ x23: .cfa -128 + ^ x24: .cfa -120 + ^
+STACK CFI 270d0 x25: .cfa -112 + ^ x26: .cfa -104 + ^
+STACK CFI 270e0 x21: .cfa -144 + ^ x22: .cfa -136 + ^
+STACK CFI 273f8 x19: x19 x20: x20
+STACK CFI 273fc x21: x21 x22: x22
+STACK CFI 27400 x23: x23 x24: x24
+STACK CFI 27404 x25: x25 x26: x26
+STACK CFI 27408 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2740c .cfa: x29 176 + .ra: .cfa -168 + ^ x19: .cfa -160 + ^ x20: .cfa -152 + ^ x21: .cfa -144 + ^ x22: .cfa -136 + ^ x23: .cfa -128 + ^ x24: .cfa -120 + ^ x25: .cfa -112 + ^ x26: .cfa -104 + ^ x29: .cfa -176 + ^
+STACK CFI 27438 x19: x19 x20: x20
+STACK CFI 2743c x21: x21 x22: x22
+STACK CFI 27440 x23: x23 x24: x24
+STACK CFI 27444 x25: x25 x26: x26
+STACK CFI 27448 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2744c 134 .cfa: sp 0 + .ra: x30
+STACK CFI 27450 .cfa: sp 224 + .ra: .cfa -216 + ^ x29: .cfa -224 + ^
+STACK CFI 27454 .cfa: x29 224 +
+STACK CFI 27460 x19: .cfa -208 + ^ x20: .cfa -200 + ^ x21: .cfa -192 + ^ x22: .cfa -184 + ^ x23: .cfa -176 + ^
+STACK CFI 27570 x23: x23
+STACK CFI 27574 x19: x19 x20: x20
+STACK CFI 27578 x21: x21 x22: x22
+STACK CFI 2757c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 27580 2d0 .cfa: sp 0 + .ra: x30
+STACK CFI 27584 .cfa: sp 480 +
+STACK CFI 27588 .cfa: sp 576 + .ra: .cfa -568 + ^ x29: .cfa -576 + ^
+STACK CFI 2758c .cfa: x29 576 +
+STACK CFI 27590 x23: .cfa -528 + ^ x24: .cfa -520 + ^
+STACK CFI 275a4 x19: .cfa -560 + ^ x20: .cfa -552 + ^ x21: .cfa -544 + ^ x22: .cfa -536 + ^ x25: .cfa -512 + ^ x26: .cfa -504 + ^
+STACK CFI 275b0 x27: .cfa -496 + ^ x28: .cfa -488 + ^
+STACK CFI 27834 x19: x19 x20: x20
+STACK CFI 27838 x21: x21 x22: x22
+STACK CFI 2783c x23: x23 x24: x24
+STACK CFI 27840 x25: x25 x26: x26
+STACK CFI 27844 x27: x27 x28: x28
+STACK CFI 27848 .cfa: sp 480 + .ra: .ra x29: x29
+STACK CFI 2784c .cfa: sp 384 +
+STACK CFI INIT 27850 88 .cfa: sp 0 + .ra: x30
+STACK CFI 27854 .cfa: sp 352 + .ra: .cfa -344 + ^ x29: .cfa -352 + ^
+STACK CFI 2785c .cfa: x29 352 +
+STACK CFI 27860 x19: .cfa -336 + ^ x20: .cfa -328 + ^
+STACK CFI 27870 x21: .cfa -320 + ^
+STACK CFI 278cc x21: x21
+STACK CFI 278d0 x19: x19 x20: x20
+STACK CFI 278d4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 278d8 114 .cfa: sp 0 + .ra: x30
+STACK CFI 278dc .cfa: sp 224 + .ra: .cfa -216 + ^ x29: .cfa -224 + ^
+STACK CFI 278e0 .cfa: x29 224 +
+STACK CFI 278e4 x19: .cfa -208 + ^ x20: .cfa -200 + ^
+STACK CFI 278f0 x21: .cfa -192 + ^ x22: .cfa -184 + ^ x23: .cfa -176 + ^
+STACK CFI 279d8 x23: x23
+STACK CFI 279e0 x19: x19 x20: x20
+STACK CFI 279e4 x21: x21 x22: x22
+STACK CFI 279e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 279ec 5c .cfa: sp 0 + .ra: x30
+STACK CFI 279f0 .cfa: sp 336 + .ra: .cfa -328 + ^ x29: .cfa -336 + ^
+STACK CFI 279f8 .cfa: x29 336 +
+STACK CFI 279fc x19: .cfa -320 + ^ x20: .cfa -312 + ^
+STACK CFI 27a04 x21: .cfa -304 + ^
+STACK CFI 27a38 x21: x21
+STACK CFI 27a40 x19: x19 x20: x20
+STACK CFI 27a44 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 27a48 134 .cfa: sp 0 + .ra: x30
+STACK CFI 27a4c .cfa: sp 224 + .ra: .cfa -216 + ^ x29: .cfa -224 + ^
+STACK CFI 27a50 .cfa: x29 224 +
+STACK CFI 27a5c x19: .cfa -208 + ^ x20: .cfa -200 + ^ x21: .cfa -192 + ^ x22: .cfa -184 + ^ x23: .cfa -176 + ^
+STACK CFI 27b6c x23: x23
+STACK CFI 27b70 x19: x19 x20: x20
+STACK CFI 27b74 x21: x21 x22: x22
+STACK CFI 27b78 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 27b7c 9c .cfa: sp 0 + .ra: x30
+STACK CFI 27b80 .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 27b84 .cfa: x29 160 +
+STACK CFI 27b8c x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^
+STACK CFI 27c0c x19: x19 x20: x20
+STACK CFI 27c10 x21: x21 x22: x22
+STACK CFI 27c14 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 27c18 158 .cfa: sp 0 + .ra: x30
+STACK CFI 27c1c .cfa: sp 464 + .ra: .cfa -456 + ^ x29: .cfa -464 + ^
+STACK CFI 27c20 .cfa: x29 464 +
+STACK CFI 27c24 x19: .cfa -448 + ^ x20: .cfa -440 + ^
+STACK CFI 27c34 x23: .cfa -416 + ^ x24: .cfa -408 + ^ x25: .cfa -400 + ^ x26: .cfa -392 + ^ x27: .cfa -384 + ^
+STACK CFI 27c48 x21: .cfa -432 + ^ x22: .cfa -424 + ^
+STACK CFI 27d54 x27: x27
+STACK CFI 27d5c x19: x19 x20: x20
+STACK CFI 27d60 x21: x21 x22: x22
+STACK CFI 27d64 x23: x23 x24: x24
+STACK CFI 27d68 x25: x25 x26: x26
+STACK CFI 27d6c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 27d70 5c .cfa: sp 0 + .ra: x30
+STACK CFI 27d74 .cfa: sp 336 + .ra: .cfa -328 + ^ x29: .cfa -336 + ^
+STACK CFI 27d7c .cfa: x29 336 +
+STACK CFI 27d80 x19: .cfa -320 + ^ x20: .cfa -312 + ^
+STACK CFI 27d88 x21: .cfa -304 + ^
+STACK CFI 27dbc x21: x21
+STACK CFI 27dc4 x19: x19 x20: x20
+STACK CFI 27dc8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 27dcc c0 .cfa: sp 0 + .ra: x30
+STACK CFI 27dd0 .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 27dd4 .cfa: x29 160 +
+STACK CFI 27de0 x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^ x23: .cfa -112 + ^ x24: .cfa -104 + ^
+STACK CFI 27e7c x19: x19 x20: x20
+STACK CFI 27e80 x21: x21 x22: x22
+STACK CFI 27e84 x23: x23 x24: x24
+STACK CFI 27e88 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 27e8c 1e8 .cfa: sp 0 + .ra: x30
+STACK CFI 27e90 .cfa: sp 448 +
+STACK CFI 27e94 .cfa: sp 512 + .ra: .cfa -504 + ^ x29: .cfa -512 + ^
+STACK CFI 27e98 .cfa: x29 512 +
+STACK CFI 27e9c x21: .cfa -480 + ^ x22: .cfa -472 + ^
+STACK CFI 27eb0 x19: .cfa -496 + ^ x20: .cfa -488 + ^ x23: .cfa -464 + ^ x24: .cfa -456 + ^
+STACK CFI 28060 x19: x19 x20: x20
+STACK CFI 28064 x21: x21 x22: x22
+STACK CFI 28068 x23: x23 x24: x24
+STACK CFI 2806c .cfa: sp 448 + .ra: .ra x29: x29
+STACK CFI 28070 .cfa: sp 384 +
+STACK CFI INIT 28074 5c .cfa: sp 0 + .ra: x30
+STACK CFI 28078 .cfa: sp 336 + .ra: .cfa -328 + ^ x29: .cfa -336 + ^
+STACK CFI 28080 .cfa: x29 336 +
+STACK CFI 28084 x19: .cfa -320 + ^ x20: .cfa -312 + ^
+STACK CFI 2808c x21: .cfa -304 + ^
+STACK CFI 280c0 x21: x21
+STACK CFI 280c8 x19: x19 x20: x20
+STACK CFI 280cc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 280d0 9c .cfa: sp 0 + .ra: x30
+STACK CFI 280d4 .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 280d8 .cfa: x29 160 +
+STACK CFI 280e0 x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^
+STACK CFI 28160 x19: x19 x20: x20
+STACK CFI 28164 x21: x21 x22: x22
+STACK CFI 28168 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2816c 9c .cfa: sp 0 + .ra: x30
+STACK CFI 28170 .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 28174 .cfa: x29 160 +
+STACK CFI 2817c x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^
+STACK CFI 281fc x19: x19 x20: x20
+STACK CFI 28200 x21: x21 x22: x22
+STACK CFI 28204 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 28208 9c .cfa: sp 0 + .ra: x30
+STACK CFI 2820c .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 28210 .cfa: x29 160 +
+STACK CFI 28218 x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^
+STACK CFI 28298 x19: x19 x20: x20
+STACK CFI 2829c x21: x21 x22: x22
+STACK CFI 282a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 282a4 28 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 282cc 20 .cfa: sp 0 + .ra: x30
+STACK CFI 282d0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 282d8 .cfa: x29 32 +
+STACK CFI 282e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 282ec 20 .cfa: sp 0 + .ra: x30
+STACK CFI 282f0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 282f8 .cfa: x29 32 +
+STACK CFI 28308 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2830c 110 .cfa: sp 0 + .ra: x30
+STACK CFI 28310 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2831c .cfa: x29 32 +
+STACK CFI 28398 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2839c .cfa: x29 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI INIT 2841c 124 .cfa: sp 0 + .ra: x30
+STACK CFI 28420 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 28424 .cfa: x29 80 +
+STACK CFI 28430 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^
+STACK CFI 28530 x19: x19 x20: x20
+STACK CFI 28534 x21: x21 x22: x22
+STACK CFI 28538 x23: x23 x24: x24
+STACK CFI 2853c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 28540 b0 .cfa: sp 0 + .ra: x30
+STACK CFI 28544 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 28548 .cfa: x29 80 +
+STACK CFI 28550 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI 285e0 x21: x21
+STACK CFI 285e8 x19: x19 x20: x20
+STACK CFI 285ec .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 285f0 60 .cfa: sp 0 + .ra: x30
+STACK CFI 285f4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 285f8 .cfa: x29 32 +
+STACK CFI 285fc x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 28648 x19: x19 x20: x20
+STACK CFI 2864c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 28650 c4 .cfa: sp 0 + .ra: x30
+STACK CFI 28654 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 2865c .cfa: x29 48 +
+STACK CFI 28664 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 28708 x19: x19 x20: x20
+STACK CFI 2870c x21: x21
+STACK CFI 28710 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 28714 b8 .cfa: sp 0 + .ra: x30
+STACK CFI 28718 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 2871c .cfa: x29 48 +
+STACK CFI 28724 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 287c0 x21: x21
+STACK CFI 287c4 x19: x19 x20: x20
+STACK CFI 287c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 287cc 10c .cfa: sp 0 + .ra: x30
+STACK CFI 287d0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 287d8 .cfa: x29 64 +
+STACK CFI 287e0 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x23: .cfa -16 + ^
+STACK CFI 287e8 x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 288c8 x19: x19 x20: x20
+STACK CFI 288cc x21: x21 x22: x22
+STACK CFI 288d0 x23: x23
+STACK CFI 288d4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 288d8 f0 .cfa: sp 0 + .ra: x30
+STACK CFI 288dc .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 288e4 .cfa: x29 64 +
+STACK CFI 288f0 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 289b8 x23: x23
+STACK CFI 289bc x19: x19 x20: x20
+STACK CFI 289c0 x21: x21 x22: x22
+STACK CFI 289c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 208f4 858 .cfa: sp 0 + .ra: x30
+STACK CFI 208f8 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 208fc .cfa: x29 64 +
+STACK CFI 20904 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 21138 x21: x21
+STACK CFI 21140 x19: x19 x20: x20
+STACK CFI 21144 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 289c8 3e4 .cfa: sp 0 + .ra: x30
+STACK CFI 289cc .cfa: sp 384 + .ra: .cfa -376 + ^ x29: .cfa -384 + ^
+STACK CFI 289d0 .cfa: x29 384 +
+STACK CFI 289d4 x23: .cfa -336 + ^ x24: .cfa -328 + ^
+STACK CFI 289e0 x25: .cfa -320 + ^ x26: .cfa -312 + ^ x27: .cfa -304 + ^
+STACK CFI 289f0 x19: .cfa -368 + ^ x20: .cfa -360 + ^ x21: .cfa -352 + ^ x22: .cfa -344 + ^
+STACK CFI 28d94 x27: x27
+STACK CFI 28d98 x19: x19 x20: x20
+STACK CFI 28d9c x21: x21 x22: x22
+STACK CFI 28da0 x23: x23 x24: x24
+STACK CFI 28da4 x25: x25 x26: x26
+STACK CFI 28da8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 28dac a8 .cfa: sp 0 + .ra: x30
+STACK CFI 28db0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 28db4 .cfa: x29 64 +
+STACK CFI 28db8 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 28e4c x19: x19 x20: x20
+STACK CFI 28e50 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 28e54 a8 .cfa: sp 0 + .ra: x30
+STACK CFI 28e58 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 28e5c .cfa: x29 64 +
+STACK CFI 28e60 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 28ef4 x19: x19 x20: x20
+STACK CFI 28ef8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 28efc 1a4 .cfa: sp 0 + .ra: x30
+STACK CFI 28f00 .cfa: sp 192 + .ra: .cfa -184 + ^ x29: .cfa -192 + ^
+STACK CFI 28f04 .cfa: x29 192 +
+STACK CFI 28f08 x19: .cfa -176 + ^ x20: .cfa -168 + ^
+STACK CFI 28f1c x21: .cfa -160 + ^ x22: .cfa -152 + ^ x23: .cfa -144 + ^
+STACK CFI 29090 x23: x23
+STACK CFI 29094 x19: x19 x20: x20
+STACK CFI 29098 x21: x21 x22: x22
+STACK CFI 2909c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 290a0 1a4 .cfa: sp 0 + .ra: x30
+STACK CFI 290a4 .cfa: sp 192 + .ra: .cfa -184 + ^ x29: .cfa -192 + ^
+STACK CFI 290a8 .cfa: x29 192 +
+STACK CFI 290ac x19: .cfa -176 + ^ x20: .cfa -168 + ^
+STACK CFI 290c0 x21: .cfa -160 + ^ x22: .cfa -152 + ^ x23: .cfa -144 + ^
+STACK CFI 29234 x23: x23
+STACK CFI 29238 x19: x19 x20: x20
+STACK CFI 2923c x21: x21 x22: x22
+STACK CFI 29240 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 29244 1a4 .cfa: sp 0 + .ra: x30
+STACK CFI 29248 .cfa: sp 192 + .ra: .cfa -184 + ^ x29: .cfa -192 + ^
+STACK CFI 2924c .cfa: x29 192 +
+STACK CFI 29250 x19: .cfa -176 + ^ x20: .cfa -168 + ^
+STACK CFI 29264 x21: .cfa -160 + ^ x22: .cfa -152 + ^ x23: .cfa -144 + ^
+STACK CFI 293d8 x23: x23
+STACK CFI 293dc x19: x19 x20: x20
+STACK CFI 293e0 x21: x21 x22: x22
+STACK CFI 293e4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 293e8 1a4 .cfa: sp 0 + .ra: x30
+STACK CFI 293ec .cfa: sp 192 + .ra: .cfa -184 + ^ x29: .cfa -192 + ^
+STACK CFI 293f0 .cfa: x29 192 +
+STACK CFI 293f4 x19: .cfa -176 + ^ x20: .cfa -168 + ^
+STACK CFI 29408 x21: .cfa -160 + ^ x22: .cfa -152 + ^ x23: .cfa -144 + ^
+STACK CFI 2957c x23: x23
+STACK CFI 29580 x19: x19 x20: x20
+STACK CFI 29584 x21: x21 x22: x22
+STACK CFI 29588 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2958c fc .cfa: sp 0 + .ra: x30
+STACK CFI 29590 .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 29594 .cfa: x29 160 +
+STACK CFI 29598 x19: .cfa -144 + ^ x20: .cfa -136 + ^
+STACK CFI 295a0 x21: .cfa -128 + ^
+STACK CFI 2967c x21: x21
+STACK CFI 29680 x19: x19 x20: x20
+STACK CFI 29684 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 29688 324 .cfa: sp 0 + .ra: x30
+STACK CFI 2968c .cfa: sp 464 + .ra: .cfa -456 + ^ x29: .cfa -464 + ^
+STACK CFI 29690 .cfa: x29 464 +
+STACK CFI 29694 x23: .cfa -416 + ^ x24: .cfa -408 + ^
+STACK CFI 296a8 x19: .cfa -448 + ^ x20: .cfa -440 + ^ x21: .cfa -432 + ^ x22: .cfa -424 + ^ x25: .cfa -400 + ^ x26: .cfa -392 + ^
+STACK CFI 29998 x19: x19 x20: x20
+STACK CFI 2999c x21: x21 x22: x22
+STACK CFI 299a0 x23: x23 x24: x24
+STACK CFI 299a4 x25: x25 x26: x26
+STACK CFI 299a8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 299ac 13c .cfa: sp 0 + .ra: x30
+STACK CFI 299b0 .cfa: sp 416 + .ra: .cfa -408 + ^ x29: .cfa -416 + ^
+STACK CFI 299b4 .cfa: x29 416 +
+STACK CFI 299b8 x21: .cfa -384 + ^ x22: .cfa -376 + ^
+STACK CFI 299c4 x19: .cfa -400 + ^ x20: .cfa -392 + ^
+STACK CFI 29adc x19: x19 x20: x20
+STACK CFI 29ae0 x21: x21 x22: x22
+STACK CFI 29ae4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 29ae8 13c .cfa: sp 0 + .ra: x30
+STACK CFI 29aec .cfa: sp 416 + .ra: .cfa -408 + ^ x29: .cfa -416 + ^
+STACK CFI 29af0 .cfa: x29 416 +
+STACK CFI 29af4 x21: .cfa -384 + ^ x22: .cfa -376 + ^
+STACK CFI 29b00 x19: .cfa -400 + ^ x20: .cfa -392 + ^
+STACK CFI 29c18 x19: x19 x20: x20
+STACK CFI 29c1c x21: x21 x22: x22
+STACK CFI 29c20 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 29c24 140 .cfa: sp 0 + .ra: x30
+STACK CFI 29c28 .cfa: sp 416 + .ra: .cfa -408 + ^ x29: .cfa -416 + ^
+STACK CFI 29c2c .cfa: x29 416 +
+STACK CFI 29c30 x21: .cfa -384 + ^ x22: .cfa -376 + ^
+STACK CFI 29c3c x19: .cfa -400 + ^ x20: .cfa -392 + ^
+STACK CFI 29d58 x19: x19 x20: x20
+STACK CFI 29d5c x21: x21 x22: x22
+STACK CFI 29d60 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 29d64 140 .cfa: sp 0 + .ra: x30
+STACK CFI 29d68 .cfa: sp 416 + .ra: .cfa -408 + ^ x29: .cfa -416 + ^
+STACK CFI 29d6c .cfa: x29 416 +
+STACK CFI 29d70 x21: .cfa -384 + ^ x22: .cfa -376 + ^
+STACK CFI 29d7c x19: .cfa -400 + ^ x20: .cfa -392 + ^
+STACK CFI 29e98 x19: x19 x20: x20
+STACK CFI 29e9c x21: x21 x22: x22
+STACK CFI 29ea0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 29ea4 9c4 .cfa: sp 0 + .ra: x30
+STACK CFI 29ea8 .cfa: sp 4096 +
+STACK CFI 29eb0 .cfa: sp 5648 +
+STACK CFI 29ebc .cfa: sp 5760 + .ra: .cfa -5752 + ^ x29: .cfa -5760 + ^
+STACK CFI 29ec0 .cfa: x29 5760 +
+STACK CFI 29ec4 x19: .cfa -5744 + ^ x20: .cfa -5736 + ^
+STACK CFI 29ecc x23: .cfa -5712 + ^ x24: .cfa -5704 + ^
+STACK CFI 29ee8 v8: .cfa -5664 + ^ x21: .cfa -5728 + ^ x22: .cfa -5720 + ^ x25: .cfa -5696 + ^ x26: .cfa -5688 + ^ x27: .cfa -5680 + ^ x28: .cfa -5672 + ^
+STACK CFI 2a844 x19: x19 x20: x20
+STACK CFI 2a848 x21: x21 x22: x22
+STACK CFI 2a84c x23: x23 x24: x24
+STACK CFI 2a850 x25: x25 x26: x26
+STACK CFI 2a854 x27: x27 x28: x28
+STACK CFI 2a858 v8: v8
+STACK CFI 2a85c .cfa: sp 5648 + .ra: .ra x29: x29
+STACK CFI 2a860 .cfa: sp 4096 +
+STACK CFI 2a864 .cfa: sp 3984 +
+STACK CFI INIT 2a868 aa4 .cfa: sp 0 + .ra: x30
+STACK CFI 2a86c .cfa: sp 800 +
+STACK CFI 2a870 .cfa: sp 912 + .ra: .cfa -904 + ^ x29: .cfa -912 + ^
+STACK CFI 2a874 .cfa: x29 912 +
+STACK CFI 2a878 x27: .cfa -832 + ^ x28: .cfa -824 + ^
+STACK CFI 2a890 v8: .cfa -816 + ^ x19: .cfa -896 + ^ x20: .cfa -888 + ^ x21: .cfa -880 + ^ x22: .cfa -872 + ^ x23: .cfa -864 + ^ x24: .cfa -856 + ^
+STACK CFI 2a898 x25: .cfa -848 + ^ x26: .cfa -840 + ^
+STACK CFI 2b2ec v8: v8
+STACK CFI 2b2f0 x19: x19 x20: x20
+STACK CFI 2b2f4 x21: x21 x22: x22
+STACK CFI 2b2f8 x23: x23 x24: x24
+STACK CFI 2b2fc x25: x25 x26: x26
+STACK CFI 2b300 x27: x27 x28: x28
+STACK CFI 2b304 .cfa: sp 800 + .ra: .ra x29: x29
+STACK CFI 2b308 .cfa: sp 688 +
+STACK CFI INIT 2b30c 9b4 .cfa: sp 0 + .ra: x30
+STACK CFI 2b310 .cfa: sp 640 +
+STACK CFI 2b314 .cfa: sp 736 + .ra: .cfa -728 + ^ x29: .cfa -736 + ^
+STACK CFI 2b318 .cfa: x29 736 +
+STACK CFI 2b31c x27: .cfa -656 + ^ x28: .cfa -648 + ^
+STACK CFI 2b334 x19: .cfa -720 + ^ x20: .cfa -712 + ^ x21: .cfa -704 + ^ x22: .cfa -696 + ^ x23: .cfa -688 + ^ x24: .cfa -680 + ^ x25: .cfa -672 + ^ x26: .cfa -664 + ^
+STACK CFI 2bca4 x19: x19 x20: x20
+STACK CFI 2bca8 x21: x21 x22: x22
+STACK CFI 2bcac x23: x23 x24: x24
+STACK CFI 2bcb0 x25: x25 x26: x26
+STACK CFI 2bcb4 x27: x27 x28: x28
+STACK CFI 2bcb8 .cfa: sp 640 + .ra: .ra x29: x29
+STACK CFI 2bcbc .cfa: sp 544 +
+STACK CFI INIT 2bcc0 9b8 .cfa: sp 0 + .ra: x30
+STACK CFI 2bcc4 .cfa: sp 640 +
+STACK CFI 2bcc8 .cfa: sp 736 + .ra: .cfa -728 + ^ x29: .cfa -736 + ^
+STACK CFI 2bccc .cfa: x29 736 +
+STACK CFI 2bcd0 x27: .cfa -656 + ^ x28: .cfa -648 + ^
+STACK CFI 2bce8 x19: .cfa -720 + ^ x20: .cfa -712 + ^ x21: .cfa -704 + ^ x22: .cfa -696 + ^ x23: .cfa -688 + ^ x24: .cfa -680 + ^ x25: .cfa -672 + ^ x26: .cfa -664 + ^
+STACK CFI 2c65c x19: x19 x20: x20
+STACK CFI 2c660 x21: x21 x22: x22
+STACK CFI 2c664 x23: x23 x24: x24
+STACK CFI 2c668 x25: x25 x26: x26
+STACK CFI 2c66c x27: x27 x28: x28
+STACK CFI 2c670 .cfa: sp 640 + .ra: .ra x29: x29
+STACK CFI 2c674 .cfa: sp 544 +
+STACK CFI INIT 2c678 5b4 .cfa: sp 0 + .ra: x30
+STACK CFI 2c67c .cfa: sp 512 +
+STACK CFI 2c680 .cfa: sp 608 + .ra: .cfa -600 + ^ x29: .cfa -608 + ^
+STACK CFI 2c684 .cfa: x29 608 +
+STACK CFI 2c688 x25: .cfa -544 + ^ x26: .cfa -536 + ^
+STACK CFI 2c6a0 x19: .cfa -592 + ^ x20: .cfa -584 + ^ x21: .cfa -576 + ^ x22: .cfa -568 + ^ x23: .cfa -560 + ^ x24: .cfa -552 + ^ x27: .cfa -528 + ^ x28: .cfa -520 + ^
+STACK CFI 2cc10 x19: x19 x20: x20
+STACK CFI 2cc14 x21: x21 x22: x22
+STACK CFI 2cc18 x23: x23 x24: x24
+STACK CFI 2cc1c x25: x25 x26: x26
+STACK CFI 2cc20 x27: x27 x28: x28
+STACK CFI 2cc24 .cfa: sp 512 + .ra: .ra x29: x29
+STACK CFI 2cc28 .cfa: sp 416 +
+STACK CFI INIT 2cc2c 8d8 .cfa: sp 0 + .ra: x30
+STACK CFI 2cc30 .cfa: sp 896 +
+STACK CFI 2cc38 .cfa: sp 1024 + .ra: .cfa -1016 + ^ x29: .cfa -1024 + ^
+STACK CFI 2cc3c .cfa: x29 1024 +
+STACK CFI 2cc44 v8: .cfa -928 + ^ v9: .cfa -920 + ^ x21: .cfa -992 + ^ x22: .cfa -984 + ^
+STACK CFI 2cc54 v10: .cfa -912 + ^ x19: .cfa -1008 + ^ x20: .cfa -1000 + ^ x23: .cfa -976 + ^ x24: .cfa -968 + ^
+STACK CFI 2cc60 x25: .cfa -960 + ^ x26: .cfa -952 + ^ x27: .cfa -944 + ^ x28: .cfa -936 + ^
+STACK CFI 2d458 v8: v8 v9: v9
+STACK CFI 2d45c x19: x19 x20: x20
+STACK CFI 2d460 x21: x21 x22: x22
+STACK CFI 2d464 x23: x23 x24: x24
+STACK CFI 2d468 x25: x25 x26: x26
+STACK CFI 2d46c x27: x27 x28: x28
+STACK CFI 2d470 v10: v10
+STACK CFI 2d474 .cfa: sp 896 + .ra: .ra x29: x29
+STACK CFI 2d478 .cfa: sp 768 +
+STACK CFI 2d47c .cfa: x29 1024 + .ra: .cfa -1016 + ^ v10: .cfa -912 + ^ v8: .cfa -928 + ^ v9: .cfa -920 + ^ x19: .cfa -1008 + ^ x20: .cfa -1000 + ^ x21: .cfa -992 + ^ x22: .cfa -984 + ^ x23: .cfa -976 + ^ x24: .cfa -968 + ^ x25: .cfa -960 + ^ x26: .cfa -952 + ^ x27: .cfa -944 + ^ x28: .cfa -936 + ^ x29: .cfa -1024 + ^
+STACK CFI INIT 2d504 370 .cfa: sp 0 + .ra: x30
+STACK CFI 2d508 .cfa: sp 496 +
+STACK CFI 2d50c .cfa: sp 576 + .ra: .cfa -568 + ^ x29: .cfa -576 + ^
+STACK CFI 2d510 .cfa: x29 576 +
+STACK CFI 2d514 x25: .cfa -512 + ^ x26: .cfa -504 + ^
+STACK CFI 2d52c x19: .cfa -560 + ^ x20: .cfa -552 + ^ x21: .cfa -544 + ^ x22: .cfa -536 + ^ x23: .cfa -528 + ^ x24: .cfa -520 + ^
+STACK CFI 2d85c x19: x19 x20: x20
+STACK CFI 2d860 x21: x21 x22: x22
+STACK CFI 2d864 x23: x23 x24: x24
+STACK CFI 2d868 x25: x25 x26: x26
+STACK CFI 2d86c .cfa: sp 496 + .ra: .ra x29: x29
+STACK CFI 2d870 .cfa: sp 416 +
+STACK CFI INIT 2d874 5b8 .cfa: sp 0 + .ra: x30
+STACK CFI 2d878 .cfa: sp 800 +
+STACK CFI 2d87c .cfa: sp 928 + .ra: .cfa -920 + ^ x29: .cfa -928 + ^
+STACK CFI 2d880 .cfa: x29 928 +
+STACK CFI 2d88c v10: .cfa -816 + ^ v8: .cfa -832 + ^ v9: .cfa -824 + ^
+STACK CFI 2d8a4 x19: .cfa -912 + ^ x20: .cfa -904 + ^ x21: .cfa -896 + ^ x22: .cfa -888 + ^ x23: .cfa -880 + ^ x24: .cfa -872 + ^ x25: .cfa -864 + ^ x26: .cfa -856 + ^ x27: .cfa -848 + ^ x28: .cfa -840 + ^
+STACK CFI 2de08 v8: v8 v9: v9
+STACK CFI 2de0c x19: x19 x20: x20
+STACK CFI 2de10 x21: x21 x22: x22
+STACK CFI 2de14 x23: x23 x24: x24
+STACK CFI 2de18 x25: x25 x26: x26
+STACK CFI 2de1c x27: x27 x28: x28
+STACK CFI 2de20 v10: v10
+STACK CFI 2de24 .cfa: sp 800 + .ra: .ra x29: x29
+STACK CFI 2de28 .cfa: sp 672 +
+STACK CFI INIT 2de2c 488 .cfa: sp 0 + .ra: x30
+STACK CFI 2de30 .cfa: sp 464 +
+STACK CFI 2de38 .cfa: sp 576 + .ra: .cfa -568 + ^ x29: .cfa -576 + ^
+STACK CFI 2de3c .cfa: x29 576 +
+STACK CFI 2de40 x27: .cfa -496 + ^ x28: .cfa -488 + ^
+STACK CFI 2de58 v8: .cfa -480 + ^ x19: .cfa -560 + ^ x20: .cfa -552 + ^ x21: .cfa -544 + ^ x22: .cfa -536 + ^ x23: .cfa -528 + ^ x24: .cfa -520 + ^ x25: .cfa -512 + ^ x26: .cfa -504 + ^
+STACK CFI 2e294 v8: v8
+STACK CFI 2e298 x19: x19 x20: x20
+STACK CFI 2e29c x21: x21 x22: x22
+STACK CFI 2e2a0 x23: x23 x24: x24
+STACK CFI 2e2a4 x25: x25 x26: x26
+STACK CFI 2e2a8 x27: x27 x28: x28
+STACK CFI 2e2ac .cfa: sp 464 + .ra: .ra x29: x29
+STACK CFI 2e2b0 .cfa: sp 352 +
+STACK CFI INIT 2e2b4 2d0 .cfa: sp 0 + .ra: x30
+STACK CFI 2e2b8 .cfa: sp 464 +
+STACK CFI 2e2c0 .cfa: sp 544 + .ra: .cfa -536 + ^ x29: .cfa -544 + ^
+STACK CFI 2e2c4 .cfa: x29 544 +
+STACK CFI 2e2d4 x19: .cfa -528 + ^ x20: .cfa -520 + ^ x21: .cfa -512 + ^ x22: .cfa -504 + ^ x23: .cfa -496 + ^ x24: .cfa -488 + ^ x25: .cfa -480 + ^ x26: .cfa -472 + ^
+STACK CFI 2e56c x19: x19 x20: x20
+STACK CFI 2e570 x21: x21 x22: x22
+STACK CFI 2e574 x23: x23 x24: x24
+STACK CFI 2e578 x25: x25 x26: x26
+STACK CFI 2e57c .cfa: sp 464 + .ra: .ra x29: x29
+STACK CFI 2e580 .cfa: sp 384 +
+STACK CFI INIT 2e584 540 .cfa: sp 0 + .ra: x30
+STACK CFI 2e588 .cfa: sp 416 + .ra: .cfa -408 + ^ x29: .cfa -416 + ^
+STACK CFI 2e590 .cfa: x29 416 +
+STACK CFI 2e594 x25: .cfa -352 + ^ x26: .cfa -344 + ^
+STACK CFI 2e5b0 x19: .cfa -400 + ^ x20: .cfa -392 + ^ x21: .cfa -384 + ^ x22: .cfa -376 + ^ x23: .cfa -368 + ^ x24: .cfa -360 + ^ x27: .cfa -336 + ^ x28: .cfa -328 + ^
+STACK CFI 2eaac x19: x19 x20: x20
+STACK CFI 2eab0 x21: x21 x22: x22
+STACK CFI 2eab4 x23: x23 x24: x24
+STACK CFI 2eab8 x25: x25 x26: x26
+STACK CFI 2eabc x27: x27 x28: x28
+STACK CFI 2eac0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2351c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23520 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23524 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2354c 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23554 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23558 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2eac4 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235c8 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235d0 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235ec 24 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23610 6c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2367c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23680 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23688 40 .cfa: sp 0 + .ra: x30
+STACK CFI 2368c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 23690 .cfa: x29 32 +
+STACK CFI 23694 x19: .cfa -16 + ^
+STACK CFI 236c0 x19: x19
+STACK CFI 236c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 236c8 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2eac8 3c .cfa: sp 0 + .ra: x30
+STACK CFI 2eacc .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2ead4 .cfa: x29 32 +
+STACK CFI 2ead8 x19: .cfa -16 + ^
+STACK CFI 2eafc x19: x19
+STACK CFI 2eb00 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 237ec a8 .cfa: sp 0 + .ra: x30
+STACK CFI 237f0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 237f4 .cfa: x29 64 +
+STACK CFI 23800 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 23884 x23: x23
+STACK CFI 23888 x19: x19 x20: x20
+STACK CFI 2388c x21: x21 x22: x22
+STACK CFI 23890 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2eb04 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23738 b4 .cfa: sp 0 + .ra: x30
+STACK CFI 2373c .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 23740 .cfa: x29 64 +
+STACK CFI 2374c x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 237dc x23: x23
+STACK CFI 237e0 x19: x19 x20: x20
+STACK CFI 237e4 x21: x21 x22: x22
+STACK CFI 237e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23894 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 238a8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 238ac .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 238b0 .cfa: x29 32 +
+STACK CFI 238b4 x19: .cfa -16 + ^
+STACK CFI 238c4 x19: x19
+STACK CFI 238c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 238cc 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 238e0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 238e4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 238e8 .cfa: x29 32 +
+STACK CFI 238ec x19: .cfa -16 + ^
+STACK CFI 238fc x19: x19
+STACK CFI 23900 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2eb08 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2eb1c 24 .cfa: sp 0 + .ra: x30
+STACK CFI 2eb20 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2eb24 .cfa: x29 32 +
+STACK CFI 2eb28 x19: .cfa -16 + ^
+STACK CFI 2eb38 x19: x19
+STACK CFI 2eb3c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24794 b0 .cfa: sp 0 + .ra: x30
+STACK CFI 24798 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 2479c .cfa: x29 64 +
+STACK CFI 247a8 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 24834 x23: x23
+STACK CFI 24838 x19: x19 x20: x20
+STACK CFI 2483c x21: x21 x22: x22
+STACK CFI 24840 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2eb40 18 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 24844 40 .cfa: sp 0 + .ra: x30
+STACK CFI 24848 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 24854 .cfa: x29 32 +
+STACK CFI 24858 x19: .cfa -16 + ^
+STACK CFI 2487c x19: x19
+STACK CFI 24880 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 248a0 48 .cfa: sp 0 + .ra: x30
+STACK CFI 248a4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 248a8 .cfa: x29 32 +
+STACK CFI 248ac x19: .cfa -16 + ^
+STACK CFI 248e0 x19: x19
+STACK CFI 248e4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 248e8 30 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 24940 34 .cfa: sp 0 + .ra: x30
+STACK CFI 24948 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2494c .cfa: x29 32 +
+STACK CFI 24954 x19: .cfa -16 + ^
+STACK CFI 2496c x19: x19
+STACK CFI 24970 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24974 24 .cfa: sp 0 + .ra: x30
+STACK CFI 24978 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2497c .cfa: x29 32 +
+STACK CFI 24980 x19: .cfa -16 + ^
+STACK CFI 24990 x19: x19
+STACK CFI 24994 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24998 60 .cfa: sp 0 + .ra: x30
+STACK CFI 2499c .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 249a0 .cfa: x29 48 +
+STACK CFI 249a8 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 249ec x19: x19 x20: x20
+STACK CFI 249f0 x21: x21
+STACK CFI 249f4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 249f8 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 24a00 fc .cfa: sp 0 + .ra: x30
+STACK CFI 24a04 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 24a0c .cfa: x29 96 +
+STACK CFI 24a18 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^
+STACK CFI 24aec x21: x21 x22: x22
+STACK CFI 24af0 x19: x19 x20: x20
+STACK CFI 24af4 x23: x23 x24: x24
+STACK CFI 24af8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24afc b4 .cfa: sp 0 + .ra: x30
+STACK CFI 24b00 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 24b04 .cfa: x29 48 +
+STACK CFI 24b08 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 24b18 x21: .cfa -16 + ^
+STACK CFI 24ba4 x21: x21
+STACK CFI 24ba8 x19: x19 x20: x20
+STACK CFI 24bac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24bb0 b0 .cfa: sp 0 + .ra: x30
+STACK CFI 24bb4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 24bb8 .cfa: x29 48 +
+STACK CFI 24bc0 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 24c40 x21: x21
+STACK CFI 24c58 x19: x19 x20: x20
+STACK CFI 24c5c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24c60 98 .cfa: sp 0 + .ra: x30
+STACK CFI 24c64 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 24c68 .cfa: x29 64 +
+STACK CFI 24c70 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 24cec x19: x19 x20: x20
+STACK CFI 24cf0 x21: x21
+STACK CFI 24cf4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24cf8 1c .cfa: sp 0 + .ra: x30
+STACK CFI 24cfc .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 24d00 .cfa: x29 16 +
+STACK CFI 24d10 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24d14 3c .cfa: sp 0 + .ra: x30
+STACK CFI 24d18 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 24d1c .cfa: x29 16 +
+STACK CFI 24d4c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 54 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^
+STACK CFI 4c x19: x19
+STACK CFI 50 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 250a4 58 .cfa: sp 0 + .ra: x30
+STACK CFI 250a8 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 250ac .cfa: x29 48 +
+STACK CFI 250b0 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 250b8 x21: .cfa -16 + ^
+STACK CFI 250f0 x19: x19 x20: x20
+STACK CFI 250f4 x21: x21
+STACK CFI 250f8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 c8 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI 10 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI b4 x21: x21
+STACK CFI c0 x19: x19 x20: x20
+STACK CFI c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 f4 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 18 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI e8 x19: x19 x20: x20
+STACK CFI ec x21: x21 x22: x22
+STACK CFI f0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 251f0 8c .cfa: sp 0 + .ra: x30
+STACK CFI 251f4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 251f8 .cfa: x29 48 +
+STACK CFI 251fc x19: .cfa -32 + ^
+STACK CFI 25268 x19: x19
+STACK CFI 2526c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 25270 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 25274 x19: x19
+STACK CFI 25278 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2527c c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25288 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25298 24 .cfa: sp 0 + .ra: x30
+STACK CFI 2529c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 252a0 .cfa: x29 32 +
+STACK CFI 252a4 x19: .cfa -16 + ^
+STACK CFI 252b4 x19: x19
+STACK CFI 252b8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 252bc 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 252cc c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 252d8 8c .cfa: sp 0 + .ra: x30
+STACK CFI 252dc .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 252e0 .cfa: x29 48 +
+STACK CFI 252e4 x19: .cfa -32 + ^
+STACK CFI 25350 x19: x19
+STACK CFI 25354 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 25358 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 2535c x19: x19
+STACK CFI 25360 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25364 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25370 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25380 24 .cfa: sp 0 + .ra: x30
+STACK CFI 25384 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 25388 .cfa: x29 32 +
+STACK CFI 2538c x19: .cfa -16 + ^
+STACK CFI 2539c x19: x19
+STACK CFI 253a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 253a4 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 253b4 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 253c0 e0 .cfa: sp 0 + .ra: x30
+STACK CFI 253c4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 253c8 .cfa: x29 48 +
+STACK CFI 253cc x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 2548c x19: x19 x20: x20
+STACK CFI 25490 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 25494 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x29: .cfa -48 + ^
+STACK CFI 25498 x19: x19 x20: x20
+STACK CFI 2549c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 254a0 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 254ac cc .cfa: sp 0 + .ra: x30
+STACK CFI 254b0 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 254b4 .cfa: x29 48 +
+STACK CFI 254b8 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 25564 x19: x19 x20: x20
+STACK CFI 25568 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2556c .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x29: .cfa -48 + ^
+STACK CFI 25570 x19: x19 x20: x20
+STACK CFI 25574 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25578 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25584 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25590 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25598 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255a8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 255ac .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 255b0 .cfa: x29 32 +
+STACK CFI 255b4 x19: .cfa -16 + ^
+STACK CFI 255c4 x19: x19
+STACK CFI 255c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 255cc 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255d4 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255e4 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255f0 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255f8 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25608 24 .cfa: sp 0 + .ra: x30
+STACK CFI 2560c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 25610 .cfa: x29 32 +
+STACK CFI 25614 x19: .cfa -16 + ^
+STACK CFI 25624 x19: x19
+STACK CFI 25628 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2562c 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25634 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25644 5c .cfa: sp 0 + .ra: x30
+STACK CFI 25648 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2564c .cfa: x29 32 +
+STACK CFI 25650 x19: .cfa -16 + ^
+STACK CFI 25698 x19: x19
+STACK CFI 2569c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 256a0 78 .cfa: sp 0 + .ra: x30
+STACK CFI 256a4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 256ac .cfa: x29 32 +
+STACK CFI 256b0 x19: .cfa -16 + ^
+STACK CFI 25710 x19: x19
+STACK CFI 25714 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25718 50 .cfa: sp 0 + .ra: x30
+STACK CFI 2571c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 25720 .cfa: x29 32 +
+STACK CFI 25724 x19: .cfa -16 + ^
+STACK CFI 25754 x19: x19
+STACK CFI 25758 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2575c .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI 25760 x19: x19
+STACK CFI 25764 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 cc .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI 10 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI bc x21: x21
+STACK CFI c4 x19: x19 x20: x20
+STACK CFI c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25768 13c .cfa: sp 0 + .ra: x30
+STACK CFI 2576c .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 25770 .cfa: x29 64 +
+STACK CFI 25778 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 25898 x19: x19 x20: x20
+STACK CFI 2589c x21: x21 x22: x22
+STACK CFI 258a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25964 104 .cfa: sp 0 + .ra: x30
+STACK CFI 25968 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 2596c .cfa: x29 80 +
+STACK CFI 25978 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^
+STACK CFI 25a58 x19: x19 x20: x20
+STACK CFI 25a5c x21: x21 x22: x22
+STACK CFI 25a60 x23: x23 x24: x24
+STACK CFI 25a64 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 cc .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI 10 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI bc x21: x21
+STACK CFI c4 x19: x19 x20: x20
+STACK CFI c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25b28 2c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25b54 5c .cfa: sp 0 + .ra: x30
+STACK CFI 25b58 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 25b5c .cfa: x29 16 +
+STACK CFI 25bac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 154 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI c .cfa: x29 80 +
+STACK CFI 18 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI 144 x23: x23
+STACK CFI 148 x19: x19 x20: x20
+STACK CFI 14c x21: x21 x22: x22
+STACK CFI 150 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 2ac .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 272 + .ra: .cfa -264 + ^ x29: .cfa -272 + ^
+STACK CFI c .cfa: x29 272 +
+STACK CFI 10 x19: .cfa -256 + ^ x20: .cfa -248 + ^
+STACK CFI 20 x21: .cfa -240 + ^ x22: .cfa -232 + ^ x23: .cfa -224 + ^ x24: .cfa -216 + ^ x25: .cfa -208 + ^
+STACK CFI 298 x19: x19 x20: x20
+STACK CFI 29c x21: x21 x22: x22
+STACK CFI 2a0 x23: x23 x24: x24
+STACK CFI 2a4 x25: x25
+STACK CFI 2a8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 a8 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 128 + .ra: .cfa -120 + ^ x29: .cfa -128 + ^
+STACK CFI 8 .cfa: x29 128 +
+STACK CFI 14 x19: .cfa -112 + ^ x20: .cfa -104 + ^ x21: .cfa -96 + ^ x22: .cfa -88 + ^ x23: .cfa -80 + ^
+STACK CFI 98 x23: x23
+STACK CFI 9c x19: x19 x20: x20
+STACK CFI a0 x21: x21 x22: x22
+STACK CFI a4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26188 54 .cfa: sp 0 + .ra: x30
+STACK CFI 2618c .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 26190 .cfa: x29 64 +
+STACK CFI 26194 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 261d4 x19: x19 x20: x20
+STACK CFI 261d8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 261dc 64 .cfa: sp 0 + .ra: x30
+STACK CFI 261e0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 261e4 .cfa: x29 64 +
+STACK CFI 261e8 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 26238 x19: x19 x20: x20
+STACK CFI 2623c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26240 54 .cfa: sp 0 + .ra: x30
+STACK CFI 26244 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 26248 .cfa: x29 64 +
+STACK CFI 2624c x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 2628c x19: x19 x20: x20
+STACK CFI 26290 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26294 54 .cfa: sp 0 + .ra: x30
+STACK CFI 26298 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 2629c .cfa: x29 64 +
+STACK CFI 262a0 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 262e0 x19: x19 x20: x20
+STACK CFI 262e4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 262e8 54 .cfa: sp 0 + .ra: x30
+STACK CFI 262ec .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 262f0 .cfa: x29 64 +
+STACK CFI 262f4 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 26334 x19: x19 x20: x20
+STACK CFI 26338 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 f4 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI c .cfa: x29 80 +
+STACK CFI 18 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI e4 x23: x23
+STACK CFI e8 x19: x19 x20: x20
+STACK CFI ec x21: x21 x22: x22
+STACK CFI f0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26440 8c .cfa: sp 0 + .ra: x30
+STACK CFI 26444 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 26448 .cfa: x29 64 +
+STACK CFI 2644c x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 2645c x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 264c0 x19: x19 x20: x20
+STACK CFI 264c4 x21: x21 x22: x22
+STACK CFI 264c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 264cc 370 .cfa: sp 0 + .ra: x30
+STACK CFI 264d0 .cfa: sp 368 + .ra: .cfa -360 + ^ x29: .cfa -368 + ^
+STACK CFI 264d4 .cfa: x29 368 +
+STACK CFI 264e8 x19: .cfa -352 + ^ x20: .cfa -344 + ^ x21: .cfa -336 + ^ x22: .cfa -328 + ^ x23: .cfa -320 + ^ x24: .cfa -312 + ^ x25: .cfa -304 + ^ x26: .cfa -296 + ^ x27: .cfa -288 + ^ x28: .cfa -280 + ^
+STACK CFI 26824 x19: x19 x20: x20
+STACK CFI 26828 x21: x21 x22: x22
+STACK CFI 2682c x23: x23 x24: x24
+STACK CFI 26830 x25: x25 x26: x26
+STACK CFI 26834 x27: x27 x28: x28
+STACK CFI 26838 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26984 124 .cfa: sp 0 + .ra: x30
+STACK CFI 26988 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 26990 .cfa: x29 80 +
+STACK CFI 2699c x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI 26a98 x19: x19 x20: x20
+STACK CFI 26a9c x21: x21 x22: x22
+STACK CFI 26aa0 x23: x23
+STACK CFI 26aa4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26aa8 88 .cfa: sp 0 + .ra: x30
+STACK CFI 26aac .cfa: sp 336 + .ra: .cfa -328 + ^ x29: .cfa -336 + ^
+STACK CFI 26ab4 .cfa: x29 336 +
+STACK CFI 26ab8 x19: .cfa -320 + ^ x20: .cfa -312 + ^
+STACK CFI 26ac0 x21: .cfa -304 + ^
+STACK CFI 26b20 x21: x21
+STACK CFI 26b28 x19: x19 x20: x20
+STACK CFI 26b2c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 134 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 224 + .ra: .cfa -216 + ^ x29: .cfa -224 + ^
+STACK CFI 8 .cfa: x29 224 +
+STACK CFI 14 x19: .cfa -208 + ^ x20: .cfa -200 + ^ x21: .cfa -192 + ^ x22: .cfa -184 + ^ x23: .cfa -176 + ^
+STACK CFI 124 x23: x23
+STACK CFI 128 x19: x19 x20: x20
+STACK CFI 12c x21: x21 x22: x22
+STACK CFI 130 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2eb58 88 .cfa: sp 0 + .ra: x30
+STACK CFI 2eb5c .cfa: sp 352 + .ra: .cfa -344 + ^ x29: .cfa -352 + ^
+STACK CFI 2eb64 .cfa: x29 352 +
+STACK CFI 2eb68 x19: .cfa -336 + ^ x20: .cfa -328 + ^
+STACK CFI 2eb78 x21: .cfa -320 + ^
+STACK CFI 2ebd4 x21: x21
+STACK CFI 2ebd8 x19: x19 x20: x20
+STACK CFI 2ebdc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2ebe0 148 .cfa: sp 0 + .ra: x30
+STACK CFI 2ebe4 .cfa: sp 224 + .ra: .cfa -216 + ^ x29: .cfa -224 + ^
+STACK CFI 2ebe8 .cfa: x29 224 +
+STACK CFI 2ebf4 x19: .cfa -208 + ^ x20: .cfa -200 + ^ x21: .cfa -192 + ^ x22: .cfa -184 + ^ x23: .cfa -176 + ^
+STACK CFI 2ed18 x23: x23
+STACK CFI 2ed1c x19: x19 x20: x20
+STACK CFI 2ed20 x21: x21 x22: x22
+STACK CFI 2ed24 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2ed28 a7c .cfa: sp 0 + .ra: x30
+STACK CFI 2ed2c .cfa: sp 4096 +
+STACK CFI 2ed30 .cfa: sp 6352 +
+STACK CFI 2ed34 .cfa: sp 6448 + .ra: .cfa -6440 + ^ x29: .cfa -6448 + ^
+STACK CFI 2ed38 .cfa: x29 6448 +
+STACK CFI 2ed3c x19: .cfa -6432 + ^ x20: .cfa -6424 + ^
+STACK CFI 2ed48 x21: .cfa -6416 + ^ x22: .cfa -6408 + ^
+STACK CFI 2ed60 x23: .cfa -6400 + ^ x24: .cfa -6392 + ^ x25: .cfa -6384 + ^ x26: .cfa -6376 + ^ x27: .cfa -6368 + ^ x28: .cfa -6360 + ^
+STACK CFI 2f784 x19: x19 x20: x20
+STACK CFI 2f788 x21: x21 x22: x22
+STACK CFI 2f78c x23: x23 x24: x24
+STACK CFI 2f790 x25: x25 x26: x26
+STACK CFI 2f794 x27: x27 x28: x28
+STACK CFI 2f798 .cfa: sp 6352 + .ra: .ra x29: x29
+STACK CFI 2f79c .cfa: sp 4096 +
+STACK CFI 2f7a0 .cfa: sp 4000 +
+STACK CFI INIT 282a4 28 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 282cc 20 .cfa: sp 0 + .ra: x30
+STACK CFI 282d0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 282d8 .cfa: x29 32 +
+STACK CFI 282e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 282ec 20 .cfa: sp 0 + .ra: x30
+STACK CFI 282f0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 282f8 .cfa: x29 32 +
+STACK CFI 28308 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2830c 110 .cfa: sp 0 + .ra: x30
+STACK CFI 28310 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2831c .cfa: x29 32 +
+STACK CFI 28398 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2839c .cfa: x29 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI INIT 2841c 124 .cfa: sp 0 + .ra: x30
+STACK CFI 28420 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 28424 .cfa: x29 80 +
+STACK CFI 28430 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^
+STACK CFI 28530 x19: x19 x20: x20
+STACK CFI 28534 x21: x21 x22: x22
+STACK CFI 28538 x23: x23 x24: x24
+STACK CFI 2853c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 9c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI 10 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI 8c x21: x21
+STACK CFI 94 x19: x19 x20: x20
+STACK CFI 98 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 285f0 60 .cfa: sp 0 + .ra: x30
+STACK CFI 285f4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 285f8 .cfa: x29 32 +
+STACK CFI 285fc x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 28648 x19: x19 x20: x20
+STACK CFI 2864c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 28650 c4 .cfa: sp 0 + .ra: x30
+STACK CFI 28654 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 2865c .cfa: x29 48 +
+STACK CFI 28664 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 28708 x19: x19 x20: x20
+STACK CFI 2870c x21: x21
+STACK CFI 28710 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 28714 b8 .cfa: sp 0 + .ra: x30
+STACK CFI 28718 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 2871c .cfa: x29 48 +
+STACK CFI 28724 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 287c0 x21: x21
+STACK CFI 287c4 x19: x19 x20: x20
+STACK CFI 287c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 287cc 10c .cfa: sp 0 + .ra: x30
+STACK CFI 287d0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 287d8 .cfa: x29 64 +
+STACK CFI 287e0 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x23: .cfa -16 + ^
+STACK CFI 287e8 x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 288c8 x19: x19 x20: x20
+STACK CFI 288cc x21: x21 x22: x22
+STACK CFI 288d0 x23: x23
+STACK CFI 288d4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 288d8 f0 .cfa: sp 0 + .ra: x30
+STACK CFI 288dc .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 288e4 .cfa: x29 64 +
+STACK CFI 288f0 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 289b8 x23: x23
+STACK CFI 289bc x19: x19 x20: x20
+STACK CFI 289c0 x21: x21 x22: x22
+STACK CFI 289c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2114c 6c .cfa: sp 0 + .ra: x30
+STACK CFI 21150 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 21154 .cfa: x29 32 +
+STACK CFI 211b0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2351c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23520 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23524 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2354c 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23554 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23558 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2f7a4 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2f7a8 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2f7ac 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2f7b0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2f7b4 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2f7b8 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2f7bc 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2f7c0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2f7c4 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2f7c8 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235c8 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235d0 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235ec 24 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23610 6c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2367c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23680 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23688 40 .cfa: sp 0 + .ra: x30
+STACK CFI 2368c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 23690 .cfa: x29 32 +
+STACK CFI 23694 x19: .cfa -16 + ^
+STACK CFI 236c0 x19: x19
+STACK CFI 236c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 236c8 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2f7cc 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2f7d0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2f7d4 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2f7d8 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2f7dc 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2f7e0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2f7e4 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2f7e8 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2f7ec 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2f7f0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 237ec a8 .cfa: sp 0 + .ra: x30
+STACK CFI 237f0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 237f4 .cfa: x29 64 +
+STACK CFI 23800 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 23884 x23: x23
+STACK CFI 23888 x19: x19 x20: x20
+STACK CFI 2388c x21: x21 x22: x22
+STACK CFI 23890 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23738 b4 .cfa: sp 0 + .ra: x30
+STACK CFI 2373c .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 23740 .cfa: x29 64 +
+STACK CFI 2374c x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 237dc x23: x23
+STACK CFI 237e0 x19: x19 x20: x20
+STACK CFI 237e4 x21: x21 x22: x22
+STACK CFI 237e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23894 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 238a8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 238ac .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 238b0 .cfa: x29 32 +
+STACK CFI 238b4 x19: .cfa -16 + ^
+STACK CFI 238c4 x19: x19
+STACK CFI 238c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 238cc 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 238e0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 238e4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 238e8 .cfa: x29 32 +
+STACK CFI 238ec x19: .cfa -16 + ^
+STACK CFI 238fc x19: x19
+STACK CFI 23900 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2f7f4 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2f808 24 .cfa: sp 0 + .ra: x30
+STACK CFI 2f80c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2f810 .cfa: x29 32 +
+STACK CFI 2f814 x19: .cfa -16 + ^
+STACK CFI 2f824 x19: x19
+STACK CFI 2f828 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2f82c 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2f840 24 .cfa: sp 0 + .ra: x30
+STACK CFI 2f844 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2f848 .cfa: x29 32 +
+STACK CFI 2f84c x19: .cfa -16 + ^
+STACK CFI 2f85c x19: x19
+STACK CFI 2f860 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2f864 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2f878 24 .cfa: sp 0 + .ra: x30
+STACK CFI 2f87c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2f880 .cfa: x29 32 +
+STACK CFI 2f884 x19: .cfa -16 + ^
+STACK CFI 2f894 x19: x19
+STACK CFI 2f898 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2f89c 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2f8b0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 2f8b4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2f8b8 .cfa: x29 32 +
+STACK CFI 2f8bc x19: .cfa -16 + ^
+STACK CFI 2f8cc x19: x19
+STACK CFI 2f8d0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2f8d4 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2f8e8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 2f8ec .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2f8f0 .cfa: x29 32 +
+STACK CFI 2f8f4 x19: .cfa -16 + ^
+STACK CFI 2f904 x19: x19
+STACK CFI 2f908 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2f90c 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2f920 24 .cfa: sp 0 + .ra: x30
+STACK CFI 2f924 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2f928 .cfa: x29 32 +
+STACK CFI 2f92c x19: .cfa -16 + ^
+STACK CFI 2f93c x19: x19
+STACK CFI 2f940 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2f944 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2f958 24 .cfa: sp 0 + .ra: x30
+STACK CFI 2f95c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2f960 .cfa: x29 32 +
+STACK CFI 2f964 x19: .cfa -16 + ^
+STACK CFI 2f974 x19: x19
+STACK CFI 2f978 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2f97c 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2f990 24 .cfa: sp 0 + .ra: x30
+STACK CFI 2f994 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2f998 .cfa: x29 32 +
+STACK CFI 2f99c x19: .cfa -16 + ^
+STACK CFI 2f9ac x19: x19
+STACK CFI 2f9b0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2f9b4 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2f9c8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 2f9cc .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2f9d0 .cfa: x29 32 +
+STACK CFI 2f9d4 x19: .cfa -16 + ^
+STACK CFI 2f9e4 x19: x19
+STACK CFI 2f9e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2f9ec 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2fa00 24 .cfa: sp 0 + .ra: x30
+STACK CFI 2fa04 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2fa08 .cfa: x29 32 +
+STACK CFI 2fa0c x19: .cfa -16 + ^
+STACK CFI 2fa1c x19: x19
+STACK CFI 2fa20 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2fa24 3c .cfa: sp 0 + .ra: x30
+STACK CFI 2fa28 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2fa30 .cfa: x29 32 +
+STACK CFI 2fa34 x19: .cfa -16 + ^
+STACK CFI 2fa58 x19: x19
+STACK CFI 2fa5c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2fa60 3c .cfa: sp 0 + .ra: x30
+STACK CFI 2fa64 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2fa6c .cfa: x29 32 +
+STACK CFI 2fa70 x19: .cfa -16 + ^
+STACK CFI 2fa94 x19: x19
+STACK CFI 2fa98 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2fa9c 3c .cfa: sp 0 + .ra: x30
+STACK CFI 2faa0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2faa8 .cfa: x29 32 +
+STACK CFI 2faac x19: .cfa -16 + ^
+STACK CFI 2fad0 x19: x19
+STACK CFI 2fad4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2fad8 3c .cfa: sp 0 + .ra: x30
+STACK CFI 2fadc .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2fae4 .cfa: x29 32 +
+STACK CFI 2fae8 x19: .cfa -16 + ^
+STACK CFI 2fb0c x19: x19
+STACK CFI 2fb10 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2fb14 3c .cfa: sp 0 + .ra: x30
+STACK CFI 2fb18 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2fb20 .cfa: x29 32 +
+STACK CFI 2fb24 x19: .cfa -16 + ^
+STACK CFI 2fb48 x19: x19
+STACK CFI 2fb4c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2fb50 3c .cfa: sp 0 + .ra: x30
+STACK CFI 2fb54 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2fb5c .cfa: x29 32 +
+STACK CFI 2fb60 x19: .cfa -16 + ^
+STACK CFI 2fb84 x19: x19
+STACK CFI 2fb88 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2fb8c 3c .cfa: sp 0 + .ra: x30
+STACK CFI 2fb90 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2fb98 .cfa: x29 32 +
+STACK CFI 2fb9c x19: .cfa -16 + ^
+STACK CFI 2fbc0 x19: x19
+STACK CFI 2fbc4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2fbc8 3c .cfa: sp 0 + .ra: x30
+STACK CFI 2fbcc .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2fbd4 .cfa: x29 32 +
+STACK CFI 2fbd8 x19: .cfa -16 + ^
+STACK CFI 2fbfc x19: x19
+STACK CFI 2fc00 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2fc04 3c .cfa: sp 0 + .ra: x30
+STACK CFI 2fc08 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2fc10 .cfa: x29 32 +
+STACK CFI 2fc14 x19: .cfa -16 + ^
+STACK CFI 2fc38 x19: x19
+STACK CFI 2fc3c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2fc40 3c .cfa: sp 0 + .ra: x30
+STACK CFI 2fc44 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2fc4c .cfa: x29 32 +
+STACK CFI 2fc50 x19: .cfa -16 + ^
+STACK CFI 2fc74 x19: x19
+STACK CFI 2fc78 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24794 b0 .cfa: sp 0 + .ra: x30
+STACK CFI 24798 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 2479c .cfa: x29 64 +
+STACK CFI 247a8 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 24834 x23: x23
+STACK CFI 24838 x19: x19 x20: x20
+STACK CFI 2483c x21: x21 x22: x22
+STACK CFI 24840 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2eb40 18 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 24844 40 .cfa: sp 0 + .ra: x30
+STACK CFI 24848 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 24854 .cfa: x29 32 +
+STACK CFI 24858 x19: .cfa -16 + ^
+STACK CFI 2487c x19: x19
+STACK CFI 24880 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24884 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2fc7c c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2fc88 184 .cfa: sp 0 + .ra: x30
+STACK CFI 2fc8c .cfa: sp 528 +
+STACK CFI 2fc94 .cfa: sp 608 + .ra: .cfa -600 + ^ x29: .cfa -608 + ^
+STACK CFI 2fc98 .cfa: x29 608 +
+STACK CFI 2fca0 x19: .cfa -592 + ^ x20: .cfa -584 + ^ x25: .cfa -544 + ^ x26: .cfa -536 + ^
+STACK CFI 2fcb0 x21: .cfa -576 + ^ x22: .cfa -568 + ^ x23: .cfa -560 + ^ x24: .cfa -552 + ^
+STACK CFI 2fdf4 x19: x19 x20: x20
+STACK CFI 2fdf8 x21: x21 x22: x22
+STACK CFI 2fdfc x23: x23 x24: x24
+STACK CFI 2fe00 x25: x25 x26: x26
+STACK CFI 2fe04 .cfa: sp 528 + .ra: .ra x29: x29
+STACK CFI 2fe08 .cfa: sp 448 +
+STACK CFI INIT 2fe0c 48 .cfa: sp 0 + .ra: x30
+STACK CFI 2fe10 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 2fe14 .cfa: x29 48 +
+STACK CFI 2fe18 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 2fe20 x21: .cfa -16 + ^
+STACK CFI 2fe48 x21: x21
+STACK CFI 2fe4c x19: x19 x20: x20
+STACK CFI 2fe50 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2fe54 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2fe64 68 .cfa: sp 0 + .ra: x30
+STACK CFI 2fe68 .cfa: sp 4096 +
+STACK CFI 2fe7c .cfa: sp 4128 + .ra: .cfa -4120 + ^ x29: .cfa -4128 + ^
+STACK CFI 2fe80 .cfa: x29 4128 +
+STACK CFI 2fe84 x19: .cfa -4112 + ^ x20: .cfa -4104 + ^
+STACK CFI 2fec0 x19: x19 x20: x20
+STACK CFI 2fec4 .cfa: sp 4096 + .ra: .ra x29: x29
+STACK CFI 2fec8 .cfa: sp 4064 +
+STACK CFI INIT 2fecc ac .cfa: sp 0 + .ra: x30
+STACK CFI 2fed0 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 2fed4 .cfa: x29 48 +
+STACK CFI 2fed8 x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 2fee4 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 2ff58 x19: x19 x20: x20
+STACK CFI 2ff5c x21: x21 x22: x22
+STACK CFI 2ff60 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2ff68 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^ x29: .cfa -48 + ^
+STACK CFI 2ff6c x19: x19 x20: x20
+STACK CFI 2ff70 x21: x21 x22: x22
+STACK CFI 2ff74 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 248a0 48 .cfa: sp 0 + .ra: x30
+STACK CFI 248a4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 248a8 .cfa: x29 32 +
+STACK CFI 248ac x19: .cfa -16 + ^
+STACK CFI 248e0 x19: x19
+STACK CFI 248e4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 248e8 30 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 24940 34 .cfa: sp 0 + .ra: x30
+STACK CFI 24948 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2494c .cfa: x29 32 +
+STACK CFI 24954 x19: .cfa -16 + ^
+STACK CFI 2496c x19: x19
+STACK CFI 24970 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24974 24 .cfa: sp 0 + .ra: x30
+STACK CFI 24978 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2497c .cfa: x29 32 +
+STACK CFI 24980 x19: .cfa -16 + ^
+STACK CFI 24990 x19: x19
+STACK CFI 24994 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 54 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^
+STACK CFI 40 x19: x19
+STACK CFI 44 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 48 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI 4c x19: x19
+STACK CFI 50 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24a00 fc .cfa: sp 0 + .ra: x30
+STACK CFI 24a04 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 24a0c .cfa: x29 96 +
+STACK CFI 24a18 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^
+STACK CFI 24aec x21: x21 x22: x22
+STACK CFI 24af0 x19: x19 x20: x20
+STACK CFI 24af4 x23: x23 x24: x24
+STACK CFI 24af8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 54 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^
+STACK CFI 4c x19: x19
+STACK CFI 50 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 251f0 8c .cfa: sp 0 + .ra: x30
+STACK CFI 251f4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 251f8 .cfa: x29 48 +
+STACK CFI 251fc x19: .cfa -32 + ^
+STACK CFI 25268 x19: x19
+STACK CFI 2526c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 25270 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 25274 x19: x19
+STACK CFI 25278 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2527c c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25288 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25298 24 .cfa: sp 0 + .ra: x30
+STACK CFI 2529c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 252a0 .cfa: x29 32 +
+STACK CFI 252a4 x19: .cfa -16 + ^
+STACK CFI 252b4 x19: x19
+STACK CFI 252b8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 252bc 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 252cc c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 252d8 8c .cfa: sp 0 + .ra: x30
+STACK CFI 252dc .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 252e0 .cfa: x29 48 +
+STACK CFI 252e4 x19: .cfa -32 + ^
+STACK CFI 25350 x19: x19
+STACK CFI 25354 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 25358 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 2535c x19: x19
+STACK CFI 25360 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25364 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25370 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25380 24 .cfa: sp 0 + .ra: x30
+STACK CFI 25384 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 25388 .cfa: x29 32 +
+STACK CFI 2538c x19: .cfa -16 + ^
+STACK CFI 2539c x19: x19
+STACK CFI 253a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 253a4 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 253b4 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 253c0 e0 .cfa: sp 0 + .ra: x30
+STACK CFI 253c4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 253c8 .cfa: x29 48 +
+STACK CFI 253cc x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 2548c x19: x19 x20: x20
+STACK CFI 25490 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 25494 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x29: .cfa -48 + ^
+STACK CFI 25498 x19: x19 x20: x20
+STACK CFI 2549c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 254a0 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 254ac cc .cfa: sp 0 + .ra: x30
+STACK CFI 254b0 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 254b4 .cfa: x29 48 +
+STACK CFI 254b8 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 25564 x19: x19 x20: x20
+STACK CFI 25568 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2556c .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x29: .cfa -48 + ^
+STACK CFI 25570 x19: x19 x20: x20
+STACK CFI 25574 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25578 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25584 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25590 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25598 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255a8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 255ac .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 255b0 .cfa: x29 32 +
+STACK CFI 255b4 x19: .cfa -16 + ^
+STACK CFI 255c4 x19: x19
+STACK CFI 255c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 255cc 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255d4 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255e4 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255f0 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255f8 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25608 24 .cfa: sp 0 + .ra: x30
+STACK CFI 2560c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 25610 .cfa: x29 32 +
+STACK CFI 25614 x19: .cfa -16 + ^
+STACK CFI 25624 x19: x19
+STACK CFI 25628 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2562c 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25634 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 74 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^
+STACK CFI 6c x19: x19
+STACK CFI 70 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 13c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI 10 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 130 x21: x21
+STACK CFI 134 x19: x19 x20: x20
+STACK CFI 138 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25b54 5c .cfa: sp 0 + .ra: x30
+STACK CFI 25b58 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 25b5c .cfa: x29 16 +
+STACK CFI 25bac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 114 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI c .cfa: x29 80 +
+STACK CFI 18 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI 104 x23: x23
+STACK CFI 108 x19: x19 x20: x20
+STACK CFI 10c x21: x21 x22: x22
+STACK CFI 110 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26984 124 .cfa: sp 0 + .ra: x30
+STACK CFI 26988 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 26990 .cfa: x29 80 +
+STACK CFI 2699c x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI 26a98 x19: x19 x20: x20
+STACK CFI 26a9c x21: x21 x22: x22
+STACK CFI 26aa0 x23: x23
+STACK CFI 26aa4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 1c8 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 336 + .ra: .cfa -328 + ^ x29: .cfa -336 + ^
+STACK CFI 8 .cfa: x29 336 +
+STACK CFI c x21: .cfa -304 + ^ x22: .cfa -296 + ^
+STACK CFI 1c x19: .cfa -320 + ^ x20: .cfa -312 + ^
+STACK CFI 1bc x19: x19 x20: x20
+STACK CFI 1c0 x21: x21 x22: x22
+STACK CFI 1c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26c88 9c .cfa: sp 0 + .ra: x30
+STACK CFI 26c8c .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 26c90 .cfa: x29 160 +
+STACK CFI 26c98 x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^
+STACK CFI 26d18 x19: x19 x20: x20
+STACK CFI 26d1c x21: x21 x22: x22
+STACK CFI 26d20 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2ff78 c4 .cfa: sp 0 + .ra: x30
+STACK CFI 2ff7c .cfa: sp 208 + .ra: .cfa -200 + ^ x29: .cfa -208 + ^
+STACK CFI 2ff80 .cfa: x29 208 +
+STACK CFI 2ff84 x19: .cfa -192 + ^ x20: .cfa -184 + ^
+STACK CFI 2ff94 x21: .cfa -176 + ^ x22: .cfa -168 + ^
+STACK CFI 30030 x19: x19 x20: x20
+STACK CFI 30034 x21: x21 x22: x22
+STACK CFI 30038 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 3003c 224 .cfa: sp 0 + .ra: x30
+STACK CFI 30040 .cfa: sp 304 + .ra: .cfa -296 + ^ x29: .cfa -304 + ^
+STACK CFI 30048 .cfa: x29 304 +
+STACK CFI 3004c x23: .cfa -256 + ^ x24: .cfa -248 + ^
+STACK CFI 30064 x19: .cfa -288 + ^ x20: .cfa -280 + ^ x21: .cfa -272 + ^ x22: .cfa -264 + ^ x25: .cfa -240 + ^
+STACK CFI 3024c x25: x25
+STACK CFI 30250 x19: x19 x20: x20
+STACK CFI 30254 x21: x21 x22: x22
+STACK CFI 30258 x23: x23 x24: x24
+STACK CFI 3025c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 30260 224 .cfa: sp 0 + .ra: x30
+STACK CFI 30264 .cfa: sp 304 + .ra: .cfa -296 + ^ x29: .cfa -304 + ^
+STACK CFI 3026c .cfa: x29 304 +
+STACK CFI 30270 x23: .cfa -256 + ^ x24: .cfa -248 + ^
+STACK CFI 30288 x19: .cfa -288 + ^ x20: .cfa -280 + ^ x21: .cfa -272 + ^ x22: .cfa -264 + ^ x25: .cfa -240 + ^
+STACK CFI 30470 x25: x25
+STACK CFI 30474 x19: x19 x20: x20
+STACK CFI 30478 x21: x21 x22: x22
+STACK CFI 3047c x23: x23 x24: x24
+STACK CFI 30480 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 30484 224 .cfa: sp 0 + .ra: x30
+STACK CFI 30488 .cfa: sp 304 + .ra: .cfa -296 + ^ x29: .cfa -304 + ^
+STACK CFI 30490 .cfa: x29 304 +
+STACK CFI 30494 x23: .cfa -256 + ^ x24: .cfa -248 + ^
+STACK CFI 304ac x19: .cfa -288 + ^ x20: .cfa -280 + ^ x21: .cfa -272 + ^ x22: .cfa -264 + ^ x25: .cfa -240 + ^
+STACK CFI 30694 x25: x25
+STACK CFI 30698 x19: x19 x20: x20
+STACK CFI 3069c x21: x21 x22: x22
+STACK CFI 306a0 x23: x23 x24: x24
+STACK CFI 306a4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 306a8 224 .cfa: sp 0 + .ra: x30
+STACK CFI 306ac .cfa: sp 304 + .ra: .cfa -296 + ^ x29: .cfa -304 + ^
+STACK CFI 306b4 .cfa: x29 304 +
+STACK CFI 306b8 x23: .cfa -256 + ^ x24: .cfa -248 + ^
+STACK CFI 306d0 x19: .cfa -288 + ^ x20: .cfa -280 + ^ x21: .cfa -272 + ^ x22: .cfa -264 + ^ x25: .cfa -240 + ^
+STACK CFI 308b8 x25: x25
+STACK CFI 308bc x19: x19 x20: x20
+STACK CFI 308c0 x21: x21 x22: x22
+STACK CFI 308c4 x23: x23 x24: x24
+STACK CFI 308c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 308cc 224 .cfa: sp 0 + .ra: x30
+STACK CFI 308d0 .cfa: sp 304 + .ra: .cfa -296 + ^ x29: .cfa -304 + ^
+STACK CFI 308d8 .cfa: x29 304 +
+STACK CFI 308dc x23: .cfa -256 + ^ x24: .cfa -248 + ^
+STACK CFI 308f4 x19: .cfa -288 + ^ x20: .cfa -280 + ^ x21: .cfa -272 + ^ x22: .cfa -264 + ^ x25: .cfa -240 + ^
+STACK CFI 30adc x25: x25
+STACK CFI 30ae0 x19: x19 x20: x20
+STACK CFI 30ae4 x21: x21 x22: x22
+STACK CFI 30ae8 x23: x23 x24: x24
+STACK CFI 30aec .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 30af0 224 .cfa: sp 0 + .ra: x30
+STACK CFI 30af4 .cfa: sp 304 + .ra: .cfa -296 + ^ x29: .cfa -304 + ^
+STACK CFI 30afc .cfa: x29 304 +
+STACK CFI 30b00 x23: .cfa -256 + ^ x24: .cfa -248 + ^
+STACK CFI 30b18 x19: .cfa -288 + ^ x20: .cfa -280 + ^ x21: .cfa -272 + ^ x22: .cfa -264 + ^ x25: .cfa -240 + ^
+STACK CFI 30d00 x25: x25
+STACK CFI 30d04 x19: x19 x20: x20
+STACK CFI 30d08 x21: x21 x22: x22
+STACK CFI 30d0c x23: x23 x24: x24
+STACK CFI 30d10 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 30d14 54c .cfa: sp 0 + .ra: x30
+STACK CFI 30d18 .cfa: sp 480 + .ra: .cfa -472 + ^ x29: .cfa -480 + ^
+STACK CFI 30d20 .cfa: x29 480 +
+STACK CFI 30d24 x25: .cfa -416 + ^ x26: .cfa -408 + ^
+STACK CFI 30d44 v8: .cfa -384 + ^ x19: .cfa -464 + ^ x20: .cfa -456 + ^ x21: .cfa -448 + ^ x22: .cfa -440 + ^ x23: .cfa -432 + ^ x24: .cfa -424 + ^ x27: .cfa -400 + ^ x28: .cfa -392 + ^
+STACK CFI 31244 v8: v8
+STACK CFI 31248 x19: x19 x20: x20
+STACK CFI 3124c x21: x21 x22: x22
+STACK CFI 31250 x23: x23 x24: x24
+STACK CFI 31254 x25: x25 x26: x26
+STACK CFI 31258 x27: x27 x28: x28
+STACK CFI 3125c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 31260 290 .cfa: sp 0 + .ra: x30
+STACK CFI 31264 .cfa: sp 320 + .ra: .cfa -312 + ^ x29: .cfa -320 + ^
+STACK CFI 3126c .cfa: x29 320 +
+STACK CFI 31270 x25: .cfa -256 + ^ x26: .cfa -248 + ^
+STACK CFI 3128c x19: .cfa -304 + ^ x20: .cfa -296 + ^ x21: .cfa -288 + ^ x22: .cfa -280 + ^ x23: .cfa -272 + ^ x24: .cfa -264 + ^ x27: .cfa -240 + ^
+STACK CFI 314d8 x27: x27
+STACK CFI 314dc x19: x19 x20: x20
+STACK CFI 314e0 x21: x21 x22: x22
+STACK CFI 314e4 x23: x23 x24: x24
+STACK CFI 314e8 x25: x25 x26: x26
+STACK CFI 314ec .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 314f0 540 .cfa: sp 0 + .ra: x30
+STACK CFI 314f4 .cfa: sp 464 + .ra: .cfa -456 + ^ x29: .cfa -464 + ^
+STACK CFI 314fc .cfa: x29 464 +
+STACK CFI 31504 v8: .cfa -368 + ^ v9: .cfa -360 + ^ x25: .cfa -400 + ^ x26: .cfa -392 + ^
+STACK CFI 31520 x19: .cfa -448 + ^ x20: .cfa -440 + ^ x21: .cfa -432 + ^ x22: .cfa -424 + ^ x23: .cfa -416 + ^ x24: .cfa -408 + ^ x27: .cfa -384 + ^ x28: .cfa -376 + ^
+STACK CFI 31a14 v8: v8 v9: v9
+STACK CFI 31a18 x19: x19 x20: x20
+STACK CFI 31a1c x21: x21 x22: x22
+STACK CFI 31a20 x23: x23 x24: x24
+STACK CFI 31a24 x25: x25 x26: x26
+STACK CFI 31a28 x27: x27 x28: x28
+STACK CFI 31a2c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 282a4 28 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 282cc 20 .cfa: sp 0 + .ra: x30
+STACK CFI 282d0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 282d8 .cfa: x29 32 +
+STACK CFI 282e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 282ec 20 .cfa: sp 0 + .ra: x30
+STACK CFI 282f0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 282f8 .cfa: x29 32 +
+STACK CFI 28308 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2830c 110 .cfa: sp 0 + .ra: x30
+STACK CFI 28310 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2831c .cfa: x29 32 +
+STACK CFI 28398 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2839c .cfa: x29 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI INIT 2841c 124 .cfa: sp 0 + .ra: x30
+STACK CFI 28420 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 28424 .cfa: x29 80 +
+STACK CFI 28430 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^
+STACK CFI 28530 x19: x19 x20: x20
+STACK CFI 28534 x21: x21 x22: x22
+STACK CFI 28538 x23: x23 x24: x24
+STACK CFI 2853c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 9c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI 10 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI 8c x21: x21
+STACK CFI 94 x19: x19 x20: x20
+STACK CFI 98 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 7c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 74 x19: x19 x20: x20
+STACK CFI 78 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 28650 c4 .cfa: sp 0 + .ra: x30
+STACK CFI 28654 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 2865c .cfa: x29 48 +
+STACK CFI 28664 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 28708 x19: x19 x20: x20
+STACK CFI 2870c x21: x21
+STACK CFI 28710 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 d0 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI 10 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI c4 x21: x21
+STACK CFI c8 x19: x19 x20: x20
+STACK CFI cc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 287cc 10c .cfa: sp 0 + .ra: x30
+STACK CFI 287d0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 287d8 .cfa: x29 64 +
+STACK CFI 287e0 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x23: .cfa -16 + ^
+STACK CFI 287e8 x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 288c8 x19: x19 x20: x20
+STACK CFI 288cc x21: x21 x22: x22
+STACK CFI 288d0 x23: x23
+STACK CFI 288d4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 288d8 f0 .cfa: sp 0 + .ra: x30
+STACK CFI 288dc .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 288e4 .cfa: x29 64 +
+STACK CFI 288f0 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 289b8 x23: x23
+STACK CFI 289bc x19: x19 x20: x20
+STACK CFI 289c0 x21: x21 x22: x22
+STACK CFI 289c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 211b8 358 .cfa: sp 0 + .ra: x30
+STACK CFI 211bc .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 211c0 .cfa: x29 64 +
+STACK CFI 211c8 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 214fc x21: x21
+STACK CFI 21504 x19: x19 x20: x20
+STACK CFI 21508 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2351c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23520 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23524 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2354c 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23554 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23558 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 31a30 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235c8 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235d0 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235ec 24 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23610 6c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2367c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23680 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23688 40 .cfa: sp 0 + .ra: x30
+STACK CFI 2368c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 23690 .cfa: x29 32 +
+STACK CFI 23694 x19: .cfa -16 + ^
+STACK CFI 236c0 x19: x19
+STACK CFI 236c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 236c8 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23738 b4 .cfa: sp 0 + .ra: x30
+STACK CFI 2373c .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 23740 .cfa: x29 64 +
+STACK CFI 2374c x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 237dc x23: x23
+STACK CFI 237e0 x19: x19 x20: x20
+STACK CFI 237e4 x21: x21 x22: x22
+STACK CFI 237e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 237ec a8 .cfa: sp 0 + .ra: x30
+STACK CFI 237f0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 237f4 .cfa: x29 64 +
+STACK CFI 23800 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 23884 x23: x23
+STACK CFI 23888 x19: x19 x20: x20
+STACK CFI 2388c x21: x21 x22: x22
+STACK CFI 23890 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 31a34 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23894 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 238a8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 238ac .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 238b0 .cfa: x29 32 +
+STACK CFI 238b4 x19: .cfa -16 + ^
+STACK CFI 238c4 x19: x19
+STACK CFI 238c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 238cc 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 238e0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 238e4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 238e8 .cfa: x29 32 +
+STACK CFI 238ec x19: .cfa -16 + ^
+STACK CFI 238fc x19: x19
+STACK CFI 23900 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 31a38 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 31a4c 24 .cfa: sp 0 + .ra: x30
+STACK CFI 31a50 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 31a54 .cfa: x29 32 +
+STACK CFI 31a58 x19: .cfa -16 + ^
+STACK CFI 31a68 x19: x19
+STACK CFI 31a6c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 31a70 3c .cfa: sp 0 + .ra: x30
+STACK CFI 31a74 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 31a7c .cfa: x29 32 +
+STACK CFI 31a80 x19: .cfa -16 + ^
+STACK CFI 31aa4 x19: x19
+STACK CFI 31aa8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24794 b0 .cfa: sp 0 + .ra: x30
+STACK CFI 24798 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 2479c .cfa: x29 64 +
+STACK CFI 247a8 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 24834 x23: x23
+STACK CFI 24838 x19: x19 x20: x20
+STACK CFI 2483c x21: x21 x22: x22
+STACK CFI 24840 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2eb40 18 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 24844 40 .cfa: sp 0 + .ra: x30
+STACK CFI 24848 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 24854 .cfa: x29 32 +
+STACK CFI 24858 x19: .cfa -16 + ^
+STACK CFI 2487c x19: x19
+STACK CFI 24880 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 248a0 48 .cfa: sp 0 + .ra: x30
+STACK CFI 248a4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 248a8 .cfa: x29 32 +
+STACK CFI 248ac x19: .cfa -16 + ^
+STACK CFI 248e0 x19: x19
+STACK CFI 248e4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 248e8 30 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 24998 60 .cfa: sp 0 + .ra: x30
+STACK CFI 2499c .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 249a0 .cfa: x29 48 +
+STACK CFI 249a8 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 249ec x19: x19 x20: x20
+STACK CFI 249f0 x21: x21
+STACK CFI 249f4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 249f8 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 24940 34 .cfa: sp 0 + .ra: x30
+STACK CFI 24948 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2494c .cfa: x29 32 +
+STACK CFI 24954 x19: .cfa -16 + ^
+STACK CFI 2496c x19: x19
+STACK CFI 24970 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24974 24 .cfa: sp 0 + .ra: x30
+STACK CFI 24978 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2497c .cfa: x29 32 +
+STACK CFI 24980 x19: .cfa -16 + ^
+STACK CFI 24990 x19: x19
+STACK CFI 24994 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24a00 fc .cfa: sp 0 + .ra: x30
+STACK CFI 24a04 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 24a0c .cfa: x29 96 +
+STACK CFI 24a18 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^
+STACK CFI 24aec x21: x21 x22: x22
+STACK CFI 24af0 x19: x19 x20: x20
+STACK CFI 24af4 x23: x23 x24: x24
+STACK CFI 24af8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24afc b4 .cfa: sp 0 + .ra: x30
+STACK CFI 24b00 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 24b04 .cfa: x29 48 +
+STACK CFI 24b08 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 24b18 x21: .cfa -16 + ^
+STACK CFI 24ba4 x21: x21
+STACK CFI 24ba8 x19: x19 x20: x20
+STACK CFI 24bac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24bb0 b0 .cfa: sp 0 + .ra: x30
+STACK CFI 24bb4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 24bb8 .cfa: x29 48 +
+STACK CFI 24bc0 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 24c40 x21: x21
+STACK CFI 24c58 x19: x19 x20: x20
+STACK CFI 24c5c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24c60 98 .cfa: sp 0 + .ra: x30
+STACK CFI 24c64 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 24c68 .cfa: x29 64 +
+STACK CFI 24c70 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 24cec x19: x19 x20: x20
+STACK CFI 24cf0 x21: x21
+STACK CFI 24cf4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24cf8 1c .cfa: sp 0 + .ra: x30
+STACK CFI 24cfc .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 24d00 .cfa: x29 16 +
+STACK CFI 24d10 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24d14 3c .cfa: sp 0 + .ra: x30
+STACK CFI 24d18 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 24d1c .cfa: x29 16 +
+STACK CFI 24d4c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 54 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^
+STACK CFI 4c x19: x19
+STACK CFI 50 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25040 64 .cfa: sp 0 + .ra: x30
+STACK CFI 25044 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 25048 .cfa: x29 48 +
+STACK CFI 2504c x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 25058 x21: .cfa -16 + ^
+STACK CFI 25098 x19: x19 x20: x20
+STACK CFI 2509c x21: x21
+STACK CFI 250a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 250a4 58 .cfa: sp 0 + .ra: x30
+STACK CFI 250a8 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 250ac .cfa: x29 48 +
+STACK CFI 250b0 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 250b8 x21: .cfa -16 + ^
+STACK CFI 250f0 x19: x19 x20: x20
+STACK CFI 250f4 x21: x21
+STACK CFI 250f8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 31aac 4c .cfa: sp 0 + .ra: x30
+STACK CFI 31ab0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 31ab8 .cfa: x29 64 +
+STACK CFI 31abc x19: .cfa -48 + ^
+STACK CFI 31af0 x19: x19
+STACK CFI 31af4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 f4 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 18 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI e8 x19: x19 x20: x20
+STACK CFI ec x21: x21 x22: x22
+STACK CFI f0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 c8 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI 10 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI b4 x21: x21
+STACK CFI c0 x19: x19 x20: x20
+STACK CFI c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 251f0 8c .cfa: sp 0 + .ra: x30
+STACK CFI 251f4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 251f8 .cfa: x29 48 +
+STACK CFI 251fc x19: .cfa -32 + ^
+STACK CFI 25268 x19: x19
+STACK CFI 2526c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 25270 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 25274 x19: x19
+STACK CFI 25278 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2527c c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25288 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25298 24 .cfa: sp 0 + .ra: x30
+STACK CFI 2529c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 252a0 .cfa: x29 32 +
+STACK CFI 252a4 x19: .cfa -16 + ^
+STACK CFI 252b4 x19: x19
+STACK CFI 252b8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 252bc 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 252cc c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 252d8 8c .cfa: sp 0 + .ra: x30
+STACK CFI 252dc .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 252e0 .cfa: x29 48 +
+STACK CFI 252e4 x19: .cfa -32 + ^
+STACK CFI 25350 x19: x19
+STACK CFI 25354 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 25358 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 2535c x19: x19
+STACK CFI 25360 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25364 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25370 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25380 24 .cfa: sp 0 + .ra: x30
+STACK CFI 25384 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 25388 .cfa: x29 32 +
+STACK CFI 2538c x19: .cfa -16 + ^
+STACK CFI 2539c x19: x19
+STACK CFI 253a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 253a4 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 253b4 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 253c0 e0 .cfa: sp 0 + .ra: x30
+STACK CFI 253c4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 253c8 .cfa: x29 48 +
+STACK CFI 253cc x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 2548c x19: x19 x20: x20
+STACK CFI 25490 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 25494 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x29: .cfa -48 + ^
+STACK CFI 25498 x19: x19 x20: x20
+STACK CFI 2549c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 254a0 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 254ac cc .cfa: sp 0 + .ra: x30
+STACK CFI 254b0 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 254b4 .cfa: x29 48 +
+STACK CFI 254b8 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 25564 x19: x19 x20: x20
+STACK CFI 25568 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2556c .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x29: .cfa -48 + ^
+STACK CFI 25570 x19: x19 x20: x20
+STACK CFI 25574 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25578 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25584 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25590 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25598 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255a8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 255ac .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 255b0 .cfa: x29 32 +
+STACK CFI 255b4 x19: .cfa -16 + ^
+STACK CFI 255c4 x19: x19
+STACK CFI 255c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 255cc 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255d4 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255e4 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255f0 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255f8 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25608 24 .cfa: sp 0 + .ra: x30
+STACK CFI 2560c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 25610 .cfa: x29 32 +
+STACK CFI 25614 x19: .cfa -16 + ^
+STACK CFI 25624 x19: x19
+STACK CFI 25628 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2562c 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25634 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25644 5c .cfa: sp 0 + .ra: x30
+STACK CFI 25648 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2564c .cfa: x29 32 +
+STACK CFI 25650 x19: .cfa -16 + ^
+STACK CFI 25698 x19: x19
+STACK CFI 2569c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 256a0 78 .cfa: sp 0 + .ra: x30
+STACK CFI 256a4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 256ac .cfa: x29 32 +
+STACK CFI 256b0 x19: .cfa -16 + ^
+STACK CFI 25710 x19: x19
+STACK CFI 25714 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25718 50 .cfa: sp 0 + .ra: x30
+STACK CFI 2571c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 25720 .cfa: x29 32 +
+STACK CFI 25724 x19: .cfa -16 + ^
+STACK CFI 25754 x19: x19
+STACK CFI 25758 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2575c .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI 25760 x19: x19
+STACK CFI 25764 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25768 13c .cfa: sp 0 + .ra: x30
+STACK CFI 2576c .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 25770 .cfa: x29 64 +
+STACK CFI 25778 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 25898 x19: x19 x20: x20
+STACK CFI 2589c x21: x21 x22: x22
+STACK CFI 258a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25964 104 .cfa: sp 0 + .ra: x30
+STACK CFI 25968 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 2596c .cfa: x29 80 +
+STACK CFI 25978 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^
+STACK CFI 25a58 x19: x19 x20: x20
+STACK CFI 25a5c x21: x21 x22: x22
+STACK CFI 25a60 x23: x23 x24: x24
+STACK CFI 25a64 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25b28 2c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25b54 5c .cfa: sp 0 + .ra: x30
+STACK CFI 25b58 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 25b5c .cfa: x29 16 +
+STACK CFI 25bac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 1b8 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 128 + .ra: .cfa -120 + ^ x29: .cfa -128 + ^
+STACK CFI 8 .cfa: x29 128 +
+STACK CFI 14 x19: .cfa -112 + ^ x20: .cfa -104 + ^ x21: .cfa -96 + ^ x22: .cfa -88 + ^ x23: .cfa -80 + ^ x24: .cfa -72 + ^
+STACK CFI 1a8 x19: x19 x20: x20
+STACK CFI 1ac x21: x21 x22: x22
+STACK CFI 1b0 x23: x23 x24: x24
+STACK CFI 1b4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 cc .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI 10 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI bc x21: x21
+STACK CFI c4 x19: x19 x20: x20
+STACK CFI c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 31af8 58 .cfa: sp 0 + .ra: x30
+STACK CFI 31afc .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 31b00 .cfa: x29 48 +
+STACK CFI 31b08 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 31b44 x19: x19 x20: x20
+STACK CFI 31b48 x21: x21
+STACK CFI 31b4c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 261dc 64 .cfa: sp 0 + .ra: x30
+STACK CFI 261e0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 261e4 .cfa: x29 64 +
+STACK CFI 261e8 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 26238 x19: x19 x20: x20
+STACK CFI 2623c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 31b50 60 .cfa: sp 0 + .ra: x30
+STACK CFI 31b54 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 31b60 .cfa: x29 32 +
+STACK CFI 31b64 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 31ba8 x19: x19 x20: x20
+STACK CFI 31bac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 31bb0 5c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 31c0c 5c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 31c68 124 .cfa: sp 0 + .ra: x30
+STACK CFI 31c6c .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 31c70 .cfa: x29 48 +
+STACK CFI 31c78 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 31ca0 x19: x19 x20: x20
+STACK CFI 31ca4 x21: x21 x22: x22
+STACK CFI 31ca8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 31cac .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^ x29: .cfa -48 + ^
+STACK CFI INIT 31d8c dc .cfa: sp 0 + .ra: x30
+STACK CFI 31d90 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 31d98 .cfa: x29 64 +
+STACK CFI 31da0 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 31e5c x19: x19 x20: x20
+STACK CFI 31e60 x21: x21 x22: x22
+STACK CFI 31e64 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 134 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 384 + .ra: .cfa -376 + ^ x29: .cfa -384 + ^
+STACK CFI c .cfa: x29 384 +
+STACK CFI 10 x19: .cfa -368 + ^ x20: .cfa -360 + ^
+STACK CFI 20 x21: .cfa -352 + ^ x22: .cfa -344 + ^
+STACK CFI 28 x23: .cfa -336 + ^ x24: .cfa -328 + ^
+STACK CFI 124 x19: x19 x20: x20
+STACK CFI 128 x21: x21 x22: x22
+STACK CFI 12c x23: x23 x24: x24
+STACK CFI 130 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 218 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 240 + .ra: .cfa -232 + ^ x29: .cfa -240 + ^
+STACK CFI 8 .cfa: x29 240 +
+STACK CFI c x21: .cfa -208 + ^ x22: .cfa -200 + ^
+STACK CFI 14 x23: .cfa -192 + ^ x24: .cfa -184 + ^
+STACK CFI 30 x19: .cfa -224 + ^ x20: .cfa -216 + ^
+STACK CFI 208 x19: x19 x20: x20
+STACK CFI 20c x21: x21 x22: x22
+STACK CFI 210 x23: x23 x24: x24
+STACK CFI 214 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 31e68 950 .cfa: sp 0 + .ra: x30
+STACK CFI 31e6c .cfa: sp 1024 +
+STACK CFI 31e70 .cfa: sp 1136 + .ra: .cfa -1128 + ^ x29: .cfa -1136 + ^
+STACK CFI 31e74 .cfa: x29 1136 +
+STACK CFI 31e7c x19: .cfa -1120 + ^ x20: .cfa -1112 + ^ x21: .cfa -1104 + ^ x22: .cfa -1096 + ^
+STACK CFI 31e90 x23: .cfa -1088 + ^ x24: .cfa -1080 + ^
+STACK CFI 31ea4 v8: .cfa -1040 + ^ x25: .cfa -1072 + ^ x26: .cfa -1064 + ^ x27: .cfa -1056 + ^ x28: .cfa -1048 + ^
+STACK CFI 32798 x19: x19 x20: x20
+STACK CFI 3279c x21: x21 x22: x22
+STACK CFI 327a0 x23: x23 x24: x24
+STACK CFI 327a4 x25: x25 x26: x26
+STACK CFI 327a8 x27: x27 x28: x28
+STACK CFI 327ac v8: v8
+STACK CFI 327b0 .cfa: sp 1024 + .ra: .ra x29: x29
+STACK CFI 327b4 .cfa: sp 912 +
+STACK CFI INIT 282a4 28 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 282cc 20 .cfa: sp 0 + .ra: x30
+STACK CFI 282d0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 282d8 .cfa: x29 32 +
+STACK CFI 282e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 282ec 20 .cfa: sp 0 + .ra: x30
+STACK CFI 282f0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 282f8 .cfa: x29 32 +
+STACK CFI 28308 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2830c 110 .cfa: sp 0 + .ra: x30
+STACK CFI 28310 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2831c .cfa: x29 32 +
+STACK CFI 28398 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2839c .cfa: x29 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI INIT 2841c 124 .cfa: sp 0 + .ra: x30
+STACK CFI 28420 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 28424 .cfa: x29 80 +
+STACK CFI 28430 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^
+STACK CFI 28530 x19: x19 x20: x20
+STACK CFI 28534 x21: x21 x22: x22
+STACK CFI 28538 x23: x23 x24: x24
+STACK CFI 2853c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 9c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI 10 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI 8c x21: x21
+STACK CFI 94 x19: x19 x20: x20
+STACK CFI 98 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 28714 b8 .cfa: sp 0 + .ra: x30
+STACK CFI 28718 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 2871c .cfa: x29 48 +
+STACK CFI 28724 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 287c0 x21: x21
+STACK CFI 287c4 x19: x19 x20: x20
+STACK CFI 287c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 287cc 10c .cfa: sp 0 + .ra: x30
+STACK CFI 287d0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 287d8 .cfa: x29 64 +
+STACK CFI 287e0 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x23: .cfa -16 + ^
+STACK CFI 287e8 x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 288c8 x19: x19 x20: x20
+STACK CFI 288cc x21: x21 x22: x22
+STACK CFI 288d0 x23: x23
+STACK CFI 288d4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 285f0 60 .cfa: sp 0 + .ra: x30
+STACK CFI 285f4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 285f8 .cfa: x29 32 +
+STACK CFI 285fc x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 28648 x19: x19 x20: x20
+STACK CFI 2864c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 28650 c4 .cfa: sp 0 + .ra: x30
+STACK CFI 28654 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 2865c .cfa: x29 48 +
+STACK CFI 28664 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 28708 x19: x19 x20: x20
+STACK CFI 2870c x21: x21
+STACK CFI 28710 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 288d8 f0 .cfa: sp 0 + .ra: x30
+STACK CFI 288dc .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 288e4 .cfa: x29 64 +
+STACK CFI 288f0 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 289b8 x23: x23
+STACK CFI 289bc x19: x19 x20: x20
+STACK CFI 289c0 x21: x21 x22: x22
+STACK CFI 289c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 f4 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI c .cfa: x29 80 +
+STACK CFI 18 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI e4 x23: x23
+STACK CFI e8 x19: x19 x20: x20
+STACK CFI ec x21: x21 x22: x22
+STACK CFI f0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26984 124 .cfa: sp 0 + .ra: x30
+STACK CFI 26988 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 26990 .cfa: x29 80 +
+STACK CFI 2699c x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI 26a98 x19: x19 x20: x20
+STACK CFI 26a9c x21: x21 x22: x22
+STACK CFI 26aa0 x23: x23
+STACK CFI 26aa4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 21510 6c .cfa: sp 0 + .ra: x30
+STACK CFI 21514 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 21518 .cfa: x29 32 +
+STACK CFI 21574 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2351c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23520 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23524 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2354c 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23554 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23558 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 327b8 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 327bc 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 327c0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 327c4 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 327c8 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 327cc 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 327d0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235c8 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235d0 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235ec 24 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23610 6c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2367c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23680 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23688 40 .cfa: sp 0 + .ra: x30
+STACK CFI 2368c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 23690 .cfa: x29 32 +
+STACK CFI 23694 x19: .cfa -16 + ^
+STACK CFI 236c0 x19: x19
+STACK CFI 236c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 236c8 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 327d4 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 327d8 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 327dc 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 327e0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 327e4 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 327e8 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 327ec 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 237ec a8 .cfa: sp 0 + .ra: x30
+STACK CFI 237f0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 237f4 .cfa: x29 64 +
+STACK CFI 23800 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 23884 x23: x23
+STACK CFI 23888 x19: x19 x20: x20
+STACK CFI 2388c x21: x21 x22: x22
+STACK CFI 23890 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23738 b4 .cfa: sp 0 + .ra: x30
+STACK CFI 2373c .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 23740 .cfa: x29 64 +
+STACK CFI 2374c x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 237dc x23: x23
+STACK CFI 237e0 x19: x19 x20: x20
+STACK CFI 237e4 x21: x21 x22: x22
+STACK CFI 237e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23894 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 238a8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 238ac .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 238b0 .cfa: x29 32 +
+STACK CFI 238b4 x19: .cfa -16 + ^
+STACK CFI 238c4 x19: x19
+STACK CFI 238c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 238cc 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 238e0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 238e4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 238e8 .cfa: x29 32 +
+STACK CFI 238ec x19: .cfa -16 + ^
+STACK CFI 238fc x19: x19
+STACK CFI 23900 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 327f0 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 32804 24 .cfa: sp 0 + .ra: x30
+STACK CFI 32808 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 3280c .cfa: x29 32 +
+STACK CFI 32810 x19: .cfa -16 + ^
+STACK CFI 32820 x19: x19
+STACK CFI 32824 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 32828 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 3283c 24 .cfa: sp 0 + .ra: x30
+STACK CFI 32840 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 32844 .cfa: x29 32 +
+STACK CFI 32848 x19: .cfa -16 + ^
+STACK CFI 32858 x19: x19
+STACK CFI 3285c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 32860 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 32874 24 .cfa: sp 0 + .ra: x30
+STACK CFI 32878 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 3287c .cfa: x29 32 +
+STACK CFI 32880 x19: .cfa -16 + ^
+STACK CFI 32890 x19: x19
+STACK CFI 32894 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 32898 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 328ac 24 .cfa: sp 0 + .ra: x30
+STACK CFI 328b0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 328b4 .cfa: x29 32 +
+STACK CFI 328b8 x19: .cfa -16 + ^
+STACK CFI 328c8 x19: x19
+STACK CFI 328cc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 328d0 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 328e4 24 .cfa: sp 0 + .ra: x30
+STACK CFI 328e8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 328ec .cfa: x29 32 +
+STACK CFI 328f0 x19: .cfa -16 + ^
+STACK CFI 32900 x19: x19
+STACK CFI 32904 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 32908 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 3291c 24 .cfa: sp 0 + .ra: x30
+STACK CFI 32920 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 32924 .cfa: x29 32 +
+STACK CFI 32928 x19: .cfa -16 + ^
+STACK CFI 32938 x19: x19
+STACK CFI 3293c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 32940 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 32954 24 .cfa: sp 0 + .ra: x30
+STACK CFI 32958 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 3295c .cfa: x29 32 +
+STACK CFI 32960 x19: .cfa -16 + ^
+STACK CFI 32970 x19: x19
+STACK CFI 32974 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 32978 3c .cfa: sp 0 + .ra: x30
+STACK CFI 3297c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 32984 .cfa: x29 32 +
+STACK CFI 32988 x19: .cfa -16 + ^
+STACK CFI 329ac x19: x19
+STACK CFI 329b0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 329b4 3c .cfa: sp 0 + .ra: x30
+STACK CFI 329b8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 329c0 .cfa: x29 32 +
+STACK CFI 329c4 x19: .cfa -16 + ^
+STACK CFI 329e8 x19: x19
+STACK CFI 329ec .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 329f0 3c .cfa: sp 0 + .ra: x30
+STACK CFI 329f4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 329fc .cfa: x29 32 +
+STACK CFI 32a00 x19: .cfa -16 + ^
+STACK CFI 32a24 x19: x19
+STACK CFI 32a28 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 32a2c 3c .cfa: sp 0 + .ra: x30
+STACK CFI 32a30 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 32a38 .cfa: x29 32 +
+STACK CFI 32a3c x19: .cfa -16 + ^
+STACK CFI 32a60 x19: x19
+STACK CFI 32a64 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 32a68 3c .cfa: sp 0 + .ra: x30
+STACK CFI 32a6c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 32a74 .cfa: x29 32 +
+STACK CFI 32a78 x19: .cfa -16 + ^
+STACK CFI 32a9c x19: x19
+STACK CFI 32aa0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 32aa4 3c .cfa: sp 0 + .ra: x30
+STACK CFI 32aa8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 32ab0 .cfa: x29 32 +
+STACK CFI 32ab4 x19: .cfa -16 + ^
+STACK CFI 32ad8 x19: x19
+STACK CFI 32adc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 32ae0 3c .cfa: sp 0 + .ra: x30
+STACK CFI 32ae4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 32aec .cfa: x29 32 +
+STACK CFI 32af0 x19: .cfa -16 + ^
+STACK CFI 32b14 x19: x19
+STACK CFI 32b18 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24794 b0 .cfa: sp 0 + .ra: x30
+STACK CFI 24798 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 2479c .cfa: x29 64 +
+STACK CFI 247a8 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 24834 x23: x23
+STACK CFI 24838 x19: x19 x20: x20
+STACK CFI 2483c x21: x21 x22: x22
+STACK CFI 24840 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 32b1c 118 .cfa: sp 0 + .ra: x30
+STACK CFI 32b20 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 32b2c .cfa: x29 32 +
+STACK CFI 32b30 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 32c2c x19: x19 x20: x20
+STACK CFI 32c30 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 32c34 20 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2eb40 18 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 24844 40 .cfa: sp 0 + .ra: x30
+STACK CFI 24848 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 24854 .cfa: x29 32 +
+STACK CFI 24858 x19: .cfa -16 + ^
+STACK CFI 2487c x19: x19
+STACK CFI 24880 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24884 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2fe54 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2fe64 68 .cfa: sp 0 + .ra: x30
+STACK CFI 2fe68 .cfa: sp 4096 +
+STACK CFI 2fe7c .cfa: sp 4128 + .ra: .cfa -4120 + ^ x29: .cfa -4128 + ^
+STACK CFI 2fe80 .cfa: x29 4128 +
+STACK CFI 2fe84 x19: .cfa -4112 + ^ x20: .cfa -4104 + ^
+STACK CFI 2fec0 x19: x19 x20: x20
+STACK CFI 2fec4 .cfa: sp 4096 + .ra: .ra x29: x29
+STACK CFI 2fec8 .cfa: sp 4064 +
+STACK CFI INIT 32c54 8c .cfa: sp 0 + .ra: x30
+STACK CFI 32c58 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 32c5c .cfa: x29 48 +
+STACK CFI 32c64 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 32cb8 x21: x21 x22: x22
+STACK CFI 32cbc x19: x19 x20: x20
+STACK CFI 32cc0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 32cc4 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^ x29: .cfa -48 + ^
+STACK CFI 32cd0 x19: x19 x20: x20
+STACK CFI 32cd4 x21: x21 x22: x22
+STACK CFI 32cd8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 32ce0 54 .cfa: sp 0 + .ra: x30
+STACK CFI 32ce4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 32ce8 .cfa: x29 32 +
+STACK CFI 32cec x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 32d20 x19: x19 x20: x20
+STACK CFI 32d24 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 32d28 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x20: .cfa -8 + ^ x29: .cfa -32 + ^
+STACK CFI 32d2c x19: x19 x20: x20
+STACK CFI 32d30 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 248a0 48 .cfa: sp 0 + .ra: x30
+STACK CFI 248a4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 248a8 .cfa: x29 32 +
+STACK CFI 248ac x19: .cfa -16 + ^
+STACK CFI 248e0 x19: x19
+STACK CFI 248e4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 248e8 30 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 24940 34 .cfa: sp 0 + .ra: x30
+STACK CFI 24948 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2494c .cfa: x29 32 +
+STACK CFI 24954 x19: .cfa -16 + ^
+STACK CFI 2496c x19: x19
+STACK CFI 24970 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24974 24 .cfa: sp 0 + .ra: x30
+STACK CFI 24978 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2497c .cfa: x29 32 +
+STACK CFI 24980 x19: .cfa -16 + ^
+STACK CFI 24990 x19: x19
+STACK CFI 24994 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 54 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^
+STACK CFI 40 x19: x19
+STACK CFI 44 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 48 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI 4c x19: x19
+STACK CFI 50 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 32d34 1a8 .cfa: sp 0 + .ra: x30
+STACK CFI 32d38 .cfa: sp 624 +
+STACK CFI 32d44 .cfa: sp 688 + .ra: .cfa -680 + ^ x29: .cfa -688 + ^
+STACK CFI 32d48 .cfa: x29 688 +
+STACK CFI 32d4c x21: .cfa -656 + ^ x22: .cfa -648 + ^
+STACK CFI 32d60 x19: .cfa -672 + ^ x20: .cfa -664 + ^ x23: .cfa -640 + ^
+STACK CFI 32ec8 x23: x23
+STACK CFI 32ecc x19: x19 x20: x20
+STACK CFI 32ed0 x21: x21 x22: x22
+STACK CFI 32ed4 .cfa: sp 624 + .ra: .ra x29: x29
+STACK CFI 32ed8 .cfa: sp 560 +
+STACK CFI INIT 32edc 1d4 .cfa: sp 0 + .ra: x30
+STACK CFI 32ee0 .cfa: sp 1136 +
+STACK CFI 32eec .cfa: sp 1200 + .ra: .cfa -1192 + ^ x29: .cfa -1200 + ^
+STACK CFI 32ef0 .cfa: x29 1200 +
+STACK CFI 32ef4 x19: .cfa -1184 + ^ x20: .cfa -1176 + ^
+STACK CFI 32f08 x21: .cfa -1168 + ^ x22: .cfa -1160 + ^ x23: .cfa -1152 + ^
+STACK CFI 3309c x23: x23
+STACK CFI 330a0 x19: x19 x20: x20
+STACK CFI 330a4 x21: x21 x22: x22
+STACK CFI 330a8 .cfa: sp 1136 + .ra: .ra x29: x29
+STACK CFI 330ac .cfa: sp 1072 +
+STACK CFI INIT 24a00 fc .cfa: sp 0 + .ra: x30
+STACK CFI 24a04 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 24a0c .cfa: x29 96 +
+STACK CFI 24a18 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^
+STACK CFI 24aec x21: x21 x22: x22
+STACK CFI 24af0 x19: x19 x20: x20
+STACK CFI 24af4 x23: x23 x24: x24
+STACK CFI 24af8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24afc b4 .cfa: sp 0 + .ra: x30
+STACK CFI 24b00 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 24b04 .cfa: x29 48 +
+STACK CFI 24b08 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 24b18 x21: .cfa -16 + ^
+STACK CFI 24ba4 x21: x21
+STACK CFI 24ba8 x19: x19 x20: x20
+STACK CFI 24bac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24bb0 b0 .cfa: sp 0 + .ra: x30
+STACK CFI 24bb4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 24bb8 .cfa: x29 48 +
+STACK CFI 24bc0 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 24c40 x21: x21
+STACK CFI 24c58 x19: x19 x20: x20
+STACK CFI 24c5c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 54 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^
+STACK CFI 4c x19: x19
+STACK CFI 50 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 250a4 58 .cfa: sp 0 + .ra: x30
+STACK CFI 250a8 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 250ac .cfa: x29 48 +
+STACK CFI 250b0 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 250b8 x21: .cfa -16 + ^
+STACK CFI 250f0 x19: x19 x20: x20
+STACK CFI 250f4 x21: x21
+STACK CFI 250f8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 c8 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI 10 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI b4 x21: x21
+STACK CFI c0 x19: x19 x20: x20
+STACK CFI c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 f4 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 18 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI e8 x19: x19 x20: x20
+STACK CFI ec x21: x21 x22: x22
+STACK CFI f0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 251f0 8c .cfa: sp 0 + .ra: x30
+STACK CFI 251f4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 251f8 .cfa: x29 48 +
+STACK CFI 251fc x19: .cfa -32 + ^
+STACK CFI 25268 x19: x19
+STACK CFI 2526c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 25270 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 25274 x19: x19
+STACK CFI 25278 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2527c c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25288 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25298 24 .cfa: sp 0 + .ra: x30
+STACK CFI 2529c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 252a0 .cfa: x29 32 +
+STACK CFI 252a4 x19: .cfa -16 + ^
+STACK CFI 252b4 x19: x19
+STACK CFI 252b8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 252bc 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 252cc c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 252d8 8c .cfa: sp 0 + .ra: x30
+STACK CFI 252dc .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 252e0 .cfa: x29 48 +
+STACK CFI 252e4 x19: .cfa -32 + ^
+STACK CFI 25350 x19: x19
+STACK CFI 25354 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 25358 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 2535c x19: x19
+STACK CFI 25360 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25364 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25370 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25380 24 .cfa: sp 0 + .ra: x30
+STACK CFI 25384 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 25388 .cfa: x29 32 +
+STACK CFI 2538c x19: .cfa -16 + ^
+STACK CFI 2539c x19: x19
+STACK CFI 253a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 253a4 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 253b4 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 253c0 e0 .cfa: sp 0 + .ra: x30
+STACK CFI 253c4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 253c8 .cfa: x29 48 +
+STACK CFI 253cc x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 2548c x19: x19 x20: x20
+STACK CFI 25490 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 25494 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x29: .cfa -48 + ^
+STACK CFI 25498 x19: x19 x20: x20
+STACK CFI 2549c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 254a0 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 254ac cc .cfa: sp 0 + .ra: x30
+STACK CFI 254b0 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 254b4 .cfa: x29 48 +
+STACK CFI 254b8 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 25564 x19: x19 x20: x20
+STACK CFI 25568 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2556c .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x29: .cfa -48 + ^
+STACK CFI 25570 x19: x19 x20: x20
+STACK CFI 25574 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25578 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25584 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25590 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25598 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255a8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 255ac .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 255b0 .cfa: x29 32 +
+STACK CFI 255b4 x19: .cfa -16 + ^
+STACK CFI 255c4 x19: x19
+STACK CFI 255c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 255cc 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255d4 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255e4 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255f0 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255f8 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25608 24 .cfa: sp 0 + .ra: x30
+STACK CFI 2560c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 25610 .cfa: x29 32 +
+STACK CFI 25614 x19: .cfa -16 + ^
+STACK CFI 25624 x19: x19
+STACK CFI 25628 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2562c 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25634 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 74 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^
+STACK CFI 6c x19: x19
+STACK CFI 70 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25b54 5c .cfa: sp 0 + .ra: x30
+STACK CFI 25b58 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 25b5c .cfa: x29 16 +
+STACK CFI 25bac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 13c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI 10 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 130 x21: x21
+STACK CFI 134 x19: x19 x20: x20
+STACK CFI 138 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 330b0 e8 .cfa: sp 0 + .ra: x30
+STACK CFI 330b4 .cfa: sp 480 + .ra: .cfa -472 + ^ x29: .cfa -480 + ^
+STACK CFI 330b8 .cfa: x29 480 +
+STACK CFI 330bc x19: .cfa -464 + ^ x20: .cfa -456 + ^
+STACK CFI 330c8 x23: .cfa -432 + ^ x24: .cfa -424 + ^ x25: .cfa -416 + ^
+STACK CFI 330e4 x21: .cfa -448 + ^ x22: .cfa -440 + ^
+STACK CFI 33180 x25: x25
+STACK CFI 33188 x19: x19 x20: x20
+STACK CFI 3318c x21: x21 x22: x22
+STACK CFI 33190 x23: x23 x24: x24
+STACK CFI 33194 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 33198 3c .cfa: sp 0 + .ra: x30
+STACK CFI 3319c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 331a0 .cfa: x29 32 +
+STACK CFI 331ac x19: .cfa -16 + ^
+STACK CFI 331cc x19: x19
+STACK CFI 331d0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 114 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI c .cfa: x29 80 +
+STACK CFI 18 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI 104 x23: x23
+STACK CFI 108 x19: x19 x20: x20
+STACK CFI 10c x21: x21 x22: x22
+STACK CFI 110 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26984 124 .cfa: sp 0 + .ra: x30
+STACK CFI 26988 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 26990 .cfa: x29 80 +
+STACK CFI 2699c x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI 26a98 x19: x19 x20: x20
+STACK CFI 26a9c x21: x21 x22: x22
+STACK CFI 26aa0 x23: x23
+STACK CFI 26aa4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 279ec 5c .cfa: sp 0 + .ra: x30
+STACK CFI 279f0 .cfa: sp 336 + .ra: .cfa -328 + ^ x29: .cfa -336 + ^
+STACK CFI 279f8 .cfa: x29 336 +
+STACK CFI 279fc x19: .cfa -320 + ^ x20: .cfa -312 + ^
+STACK CFI 27a04 x21: .cfa -304 + ^
+STACK CFI 27a38 x21: x21
+STACK CFI 27a40 x19: x19 x20: x20
+STACK CFI 27a44 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 27b7c 9c .cfa: sp 0 + .ra: x30
+STACK CFI 27b80 .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 27b84 .cfa: x29 160 +
+STACK CFI 27b8c x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^
+STACK CFI 27c0c x19: x19 x20: x20
+STACK CFI 27c10 x21: x21 x22: x22
+STACK CFI 27c14 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 331d4 374 .cfa: sp 0 + .ra: x30
+STACK CFI 331d8 .cfa: sp 624 +
+STACK CFI 331e4 .cfa: sp 704 + .ra: .cfa -696 + ^ x29: .cfa -704 + ^
+STACK CFI 331e8 .cfa: x29 704 +
+STACK CFI 331ec x23: .cfa -656 + ^ x24: .cfa -648 + ^
+STACK CFI 33200 x19: .cfa -688 + ^ x20: .cfa -680 + ^ x21: .cfa -672 + ^ x22: .cfa -664 + ^ x25: .cfa -640 + ^ x26: .cfa -632 + ^
+STACK CFI 33530 x19: x19 x20: x20
+STACK CFI 33534 x21: x21 x22: x22
+STACK CFI 33538 x23: x23 x24: x24
+STACK CFI 3353c x25: x25 x26: x26
+STACK CFI 33540 .cfa: sp 624 + .ra: .ra x29: x29
+STACK CFI 33544 .cfa: sp 544 +
+STACK CFI INIT 33548 374 .cfa: sp 0 + .ra: x30
+STACK CFI 3354c .cfa: sp 624 +
+STACK CFI 33558 .cfa: sp 704 + .ra: .cfa -696 + ^ x29: .cfa -704 + ^
+STACK CFI 3355c .cfa: x29 704 +
+STACK CFI 33560 x23: .cfa -656 + ^ x24: .cfa -648 + ^
+STACK CFI 33574 x19: .cfa -688 + ^ x20: .cfa -680 + ^ x21: .cfa -672 + ^ x22: .cfa -664 + ^ x25: .cfa -640 + ^ x26: .cfa -632 + ^
+STACK CFI 338a4 x19: x19 x20: x20
+STACK CFI 338a8 x21: x21 x22: x22
+STACK CFI 338ac x23: x23 x24: x24
+STACK CFI 338b0 x25: x25 x26: x26
+STACK CFI 338b4 .cfa: sp 624 + .ra: .ra x29: x29
+STACK CFI 338b8 .cfa: sp 544 +
+STACK CFI INIT 338bc 568 .cfa: sp 0 + .ra: x30
+STACK CFI 338c0 .cfa: sp 624 +
+STACK CFI 338cc .cfa: sp 752 + .ra: .cfa -744 + ^ x29: .cfa -752 + ^
+STACK CFI 338d0 .cfa: x29 752 +
+STACK CFI 338d8 v8: .cfa -656 + ^ v9: .cfa -648 + ^ x25: .cfa -688 + ^ x26: .cfa -680 + ^
+STACK CFI 338f4 v10: .cfa -640 + ^ x19: .cfa -736 + ^ x20: .cfa -728 + ^ x21: .cfa -720 + ^ x22: .cfa -712 + ^ x23: .cfa -704 + ^ x24: .cfa -696 + ^ x27: .cfa -672 + ^ x28: .cfa -664 + ^
+STACK CFI 33e00 v8: v8 v9: v9
+STACK CFI 33e04 x19: x19 x20: x20
+STACK CFI 33e08 x21: x21 x22: x22
+STACK CFI 33e0c x23: x23 x24: x24
+STACK CFI 33e10 x25: x25 x26: x26
+STACK CFI 33e14 x27: x27 x28: x28
+STACK CFI 33e18 v10: v10
+STACK CFI 33e1c .cfa: sp 624 + .ra: .ra x29: x29
+STACK CFI 33e20 .cfa: sp 496 +
+STACK CFI INIT 33e24 568 .cfa: sp 0 + .ra: x30
+STACK CFI 33e28 .cfa: sp 624 +
+STACK CFI 33e34 .cfa: sp 752 + .ra: .cfa -744 + ^ x29: .cfa -752 + ^
+STACK CFI 33e38 .cfa: x29 752 +
+STACK CFI 33e40 v8: .cfa -656 + ^ v9: .cfa -648 + ^ x25: .cfa -688 + ^ x26: .cfa -680 + ^
+STACK CFI 33e5c v10: .cfa -640 + ^ x19: .cfa -736 + ^ x20: .cfa -728 + ^ x21: .cfa -720 + ^ x22: .cfa -712 + ^ x23: .cfa -704 + ^ x24: .cfa -696 + ^ x27: .cfa -672 + ^ x28: .cfa -664 + ^
+STACK CFI 34368 v8: v8 v9: v9
+STACK CFI 3436c x19: x19 x20: x20
+STACK CFI 34370 x21: x21 x22: x22
+STACK CFI 34374 x23: x23 x24: x24
+STACK CFI 34378 x25: x25 x26: x26
+STACK CFI 3437c x27: x27 x28: x28
+STACK CFI 34380 v10: v10
+STACK CFI 34384 .cfa: sp 624 + .ra: .ra x29: x29
+STACK CFI 34388 .cfa: sp 496 +
+STACK CFI INIT 3438c 3b8 .cfa: sp 0 + .ra: x30
+STACK CFI 34390 .cfa: sp 1424 +
+STACK CFI 3439c .cfa: sp 1504 + .ra: .cfa -1496 + ^ x29: .cfa -1504 + ^
+STACK CFI 343a0 .cfa: x29 1504 +
+STACK CFI 343a4 x25: .cfa -1440 + ^ x26: .cfa -1432 + ^
+STACK CFI 343b8 x19: .cfa -1488 + ^ x20: .cfa -1480 + ^ x21: .cfa -1472 + ^ x22: .cfa -1464 + ^ x23: .cfa -1456 + ^ x24: .cfa -1448 + ^
+STACK CFI 3472c x19: x19 x20: x20
+STACK CFI 34730 x21: x21 x22: x22
+STACK CFI 34734 x23: x23 x24: x24
+STACK CFI 34738 x25: x25 x26: x26
+STACK CFI 3473c .cfa: sp 1424 + .ra: .ra x29: x29
+STACK CFI 34740 .cfa: sp 1344 +
+STACK CFI INIT 282a4 28 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 282cc 20 .cfa: sp 0 + .ra: x30
+STACK CFI 282d0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 282d8 .cfa: x29 32 +
+STACK CFI 282e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 282ec 20 .cfa: sp 0 + .ra: x30
+STACK CFI 282f0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 282f8 .cfa: x29 32 +
+STACK CFI 28308 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2830c 110 .cfa: sp 0 + .ra: x30
+STACK CFI 28310 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2831c .cfa: x29 32 +
+STACK CFI 28398 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2839c .cfa: x29 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI INIT 2841c 124 .cfa: sp 0 + .ra: x30
+STACK CFI 28420 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 28424 .cfa: x29 80 +
+STACK CFI 28430 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^
+STACK CFI 28530 x19: x19 x20: x20
+STACK CFI 28534 x21: x21 x22: x22
+STACK CFI 28538 x23: x23 x24: x24
+STACK CFI 2853c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 9c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI 10 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI 8c x21: x21
+STACK CFI 94 x19: x19 x20: x20
+STACK CFI 98 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 7c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 74 x19: x19 x20: x20
+STACK CFI 78 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 28650 c4 .cfa: sp 0 + .ra: x30
+STACK CFI 28654 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 2865c .cfa: x29 48 +
+STACK CFI 28664 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 28708 x19: x19 x20: x20
+STACK CFI 2870c x21: x21
+STACK CFI 28710 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 d0 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI 10 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI c4 x21: x21
+STACK CFI c8 x19: x19 x20: x20
+STACK CFI cc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 287cc 10c .cfa: sp 0 + .ra: x30
+STACK CFI 287d0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 287d8 .cfa: x29 64 +
+STACK CFI 287e0 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x23: .cfa -16 + ^
+STACK CFI 287e8 x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 288c8 x19: x19 x20: x20
+STACK CFI 288cc x21: x21 x22: x22
+STACK CFI 288d0 x23: x23
+STACK CFI 288d4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 288d8 f0 .cfa: sp 0 + .ra: x30
+STACK CFI 288dc .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 288e4 .cfa: x29 64 +
+STACK CFI 288f0 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 289b8 x23: x23
+STACK CFI 289bc x19: x19 x20: x20
+STACK CFI 289c0 x21: x21 x22: x22
+STACK CFI 289c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2157c 268 .cfa: sp 0 + .ra: x30
+STACK CFI 21580 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 21584 .cfa: x29 64 +
+STACK CFI 2158c x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 217d0 x21: x21
+STACK CFI 217d8 x19: x19 x20: x20
+STACK CFI 217dc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2351c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23520 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23524 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2354c 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23554 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23558 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 34744 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 34748 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235c8 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235d0 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235ec 24 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23610 6c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2367c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23680 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23688 40 .cfa: sp 0 + .ra: x30
+STACK CFI 2368c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 23690 .cfa: x29 32 +
+STACK CFI 23694 x19: .cfa -16 + ^
+STACK CFI 236c0 x19: x19
+STACK CFI 236c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 236c8 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 237ec a8 .cfa: sp 0 + .ra: x30
+STACK CFI 237f0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 237f4 .cfa: x29 64 +
+STACK CFI 23800 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 23884 x23: x23
+STACK CFI 23888 x19: x19 x20: x20
+STACK CFI 2388c x21: x21 x22: x22
+STACK CFI 23890 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 3474c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 34750 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23738 b4 .cfa: sp 0 + .ra: x30
+STACK CFI 2373c .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 23740 .cfa: x29 64 +
+STACK CFI 2374c x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 237dc x23: x23
+STACK CFI 237e0 x19: x19 x20: x20
+STACK CFI 237e4 x21: x21 x22: x22
+STACK CFI 237e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23894 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 238a8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 238ac .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 238b0 .cfa: x29 32 +
+STACK CFI 238b4 x19: .cfa -16 + ^
+STACK CFI 238c4 x19: x19
+STACK CFI 238c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 238cc 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 238e0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 238e4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 238e8 .cfa: x29 32 +
+STACK CFI 238ec x19: .cfa -16 + ^
+STACK CFI 238fc x19: x19
+STACK CFI 23900 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 34754 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 34768 24 .cfa: sp 0 + .ra: x30
+STACK CFI 3476c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 34770 .cfa: x29 32 +
+STACK CFI 34774 x19: .cfa -16 + ^
+STACK CFI 34784 x19: x19
+STACK CFI 34788 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 3478c 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 347a0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 347a4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 347a8 .cfa: x29 32 +
+STACK CFI 347ac x19: .cfa -16 + ^
+STACK CFI 347bc x19: x19
+STACK CFI 347c0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 347c4 3c .cfa: sp 0 + .ra: x30
+STACK CFI 347c8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 347d0 .cfa: x29 32 +
+STACK CFI 347d4 x19: .cfa -16 + ^
+STACK CFI 347f8 x19: x19
+STACK CFI 347fc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 34800 3c .cfa: sp 0 + .ra: x30
+STACK CFI 34804 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 3480c .cfa: x29 32 +
+STACK CFI 34810 x19: .cfa -16 + ^
+STACK CFI 34834 x19: x19
+STACK CFI 34838 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24794 b0 .cfa: sp 0 + .ra: x30
+STACK CFI 24798 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 2479c .cfa: x29 64 +
+STACK CFI 247a8 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 24834 x23: x23
+STACK CFI 24838 x19: x19 x20: x20
+STACK CFI 2483c x21: x21 x22: x22
+STACK CFI 24840 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2eb40 18 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 24844 40 .cfa: sp 0 + .ra: x30
+STACK CFI 24848 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 24854 .cfa: x29 32 +
+STACK CFI 24858 x19: .cfa -16 + ^
+STACK CFI 2487c x19: x19
+STACK CFI 24880 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 248a0 48 .cfa: sp 0 + .ra: x30
+STACK CFI 248a4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 248a8 .cfa: x29 32 +
+STACK CFI 248ac x19: .cfa -16 + ^
+STACK CFI 248e0 x19: x19
+STACK CFI 248e4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 248e8 30 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 24940 34 .cfa: sp 0 + .ra: x30
+STACK CFI 24948 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2494c .cfa: x29 32 +
+STACK CFI 24954 x19: .cfa -16 + ^
+STACK CFI 2496c x19: x19
+STACK CFI 24970 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24974 24 .cfa: sp 0 + .ra: x30
+STACK CFI 24978 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2497c .cfa: x29 32 +
+STACK CFI 24980 x19: .cfa -16 + ^
+STACK CFI 24990 x19: x19
+STACK CFI 24994 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 54 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^
+STACK CFI 40 x19: x19
+STACK CFI 44 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 48 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI 4c x19: x19
+STACK CFI 50 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24a00 fc .cfa: sp 0 + .ra: x30
+STACK CFI 24a04 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 24a0c .cfa: x29 96 +
+STACK CFI 24a18 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^
+STACK CFI 24aec x21: x21 x22: x22
+STACK CFI 24af0 x19: x19 x20: x20
+STACK CFI 24af4 x23: x23 x24: x24
+STACK CFI 24af8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24afc b4 .cfa: sp 0 + .ra: x30
+STACK CFI 24b00 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 24b04 .cfa: x29 48 +
+STACK CFI 24b08 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 24b18 x21: .cfa -16 + ^
+STACK CFI 24ba4 x21: x21
+STACK CFI 24ba8 x19: x19 x20: x20
+STACK CFI 24bac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24bb0 b0 .cfa: sp 0 + .ra: x30
+STACK CFI 24bb4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 24bb8 .cfa: x29 48 +
+STACK CFI 24bc0 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 24c40 x21: x21
+STACK CFI 24c58 x19: x19 x20: x20
+STACK CFI 24c5c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 54 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^
+STACK CFI 4c x19: x19
+STACK CFI 50 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 250a4 58 .cfa: sp 0 + .ra: x30
+STACK CFI 250a8 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 250ac .cfa: x29 48 +
+STACK CFI 250b0 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 250b8 x21: .cfa -16 + ^
+STACK CFI 250f0 x19: x19 x20: x20
+STACK CFI 250f4 x21: x21
+STACK CFI 250f8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 f4 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 18 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI e8 x19: x19 x20: x20
+STACK CFI ec x21: x21 x22: x22
+STACK CFI f0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 c8 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI 10 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI b4 x21: x21
+STACK CFI c0 x19: x19 x20: x20
+STACK CFI c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 251f0 8c .cfa: sp 0 + .ra: x30
+STACK CFI 251f4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 251f8 .cfa: x29 48 +
+STACK CFI 251fc x19: .cfa -32 + ^
+STACK CFI 25268 x19: x19
+STACK CFI 2526c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 25270 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 25274 x19: x19
+STACK CFI 25278 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2527c c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25288 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25298 24 .cfa: sp 0 + .ra: x30
+STACK CFI 2529c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 252a0 .cfa: x29 32 +
+STACK CFI 252a4 x19: .cfa -16 + ^
+STACK CFI 252b4 x19: x19
+STACK CFI 252b8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 252bc 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 252cc c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 252d8 8c .cfa: sp 0 + .ra: x30
+STACK CFI 252dc .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 252e0 .cfa: x29 48 +
+STACK CFI 252e4 x19: .cfa -32 + ^
+STACK CFI 25350 x19: x19
+STACK CFI 25354 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 25358 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 2535c x19: x19
+STACK CFI 25360 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25364 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25370 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25380 24 .cfa: sp 0 + .ra: x30
+STACK CFI 25384 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 25388 .cfa: x29 32 +
+STACK CFI 2538c x19: .cfa -16 + ^
+STACK CFI 2539c x19: x19
+STACK CFI 253a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 253a4 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 253b4 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 253c0 e0 .cfa: sp 0 + .ra: x30
+STACK CFI 253c4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 253c8 .cfa: x29 48 +
+STACK CFI 253cc x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 2548c x19: x19 x20: x20
+STACK CFI 25490 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 25494 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x29: .cfa -48 + ^
+STACK CFI 25498 x19: x19 x20: x20
+STACK CFI 2549c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 254a0 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 254ac cc .cfa: sp 0 + .ra: x30
+STACK CFI 254b0 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 254b4 .cfa: x29 48 +
+STACK CFI 254b8 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 25564 x19: x19 x20: x20
+STACK CFI 25568 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2556c .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x29: .cfa -48 + ^
+STACK CFI 25570 x19: x19 x20: x20
+STACK CFI 25574 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25578 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25584 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25590 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25598 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255a8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 255ac .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 255b0 .cfa: x29 32 +
+STACK CFI 255b4 x19: .cfa -16 + ^
+STACK CFI 255c4 x19: x19
+STACK CFI 255c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 255cc 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255d4 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255e4 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255f0 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255f8 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25608 24 .cfa: sp 0 + .ra: x30
+STACK CFI 2560c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 25610 .cfa: x29 32 +
+STACK CFI 25614 x19: .cfa -16 + ^
+STACK CFI 25624 x19: x19
+STACK CFI 25628 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2562c 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25634 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 74 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^
+STACK CFI 6c x19: x19
+STACK CFI 70 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 84 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^
+STACK CFI 7c x19: x19
+STACK CFI 80 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25718 50 .cfa: sp 0 + .ra: x30
+STACK CFI 2571c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 25720 .cfa: x29 32 +
+STACK CFI 25724 x19: .cfa -16 + ^
+STACK CFI 25754 x19: x19
+STACK CFI 25758 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2575c .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI 25760 x19: x19
+STACK CFI 25764 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 dc .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI 10 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI cc x21: x21
+STACK CFI d4 x19: x19 x20: x20
+STACK CFI d8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25b54 5c .cfa: sp 0 + .ra: x30
+STACK CFI 25b58 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 25b5c .cfa: x29 16 +
+STACK CFI 25bac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 dc .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI 10 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI cc x21: x21
+STACK CFI d4 x19: x19 x20: x20
+STACK CFI d8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 3483c e8 .cfa: sp 0 + .ra: x30
+STACK CFI 34840 .cfa: sp 480 + .ra: .cfa -472 + ^ x29: .cfa -480 + ^
+STACK CFI 34844 .cfa: x29 480 +
+STACK CFI 34848 x19: .cfa -464 + ^ x20: .cfa -456 + ^
+STACK CFI 34854 x23: .cfa -432 + ^ x24: .cfa -424 + ^ x25: .cfa -416 + ^
+STACK CFI 34870 x21: .cfa -448 + ^ x22: .cfa -440 + ^
+STACK CFI 3490c x25: x25
+STACK CFI 34914 x19: x19 x20: x20
+STACK CFI 34918 x21: x21 x22: x22
+STACK CFI 3491c x23: x23 x24: x24
+STACK CFI 34920 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 114 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI c .cfa: x29 80 +
+STACK CFI 18 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI 104 x23: x23
+STACK CFI 108 x19: x19 x20: x20
+STACK CFI 10c x21: x21 x22: x22
+STACK CFI 110 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26984 124 .cfa: sp 0 + .ra: x30
+STACK CFI 26988 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 26990 .cfa: x29 80 +
+STACK CFI 2699c x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI 26a98 x19: x19 x20: x20
+STACK CFI 26a9c x21: x21 x22: x22
+STACK CFI 26aa0 x23: x23
+STACK CFI 26aa4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26aa8 88 .cfa: sp 0 + .ra: x30
+STACK CFI 26aac .cfa: sp 336 + .ra: .cfa -328 + ^ x29: .cfa -336 + ^
+STACK CFI 26ab4 .cfa: x29 336 +
+STACK CFI 26ab8 x19: .cfa -320 + ^ x20: .cfa -312 + ^
+STACK CFI 26ac0 x21: .cfa -304 + ^
+STACK CFI 26b20 x21: x21
+STACK CFI 26b28 x19: x19 x20: x20
+STACK CFI 26b2c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26c88 9c .cfa: sp 0 + .ra: x30
+STACK CFI 26c8c .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 26c90 .cfa: x29 160 +
+STACK CFI 26c98 x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^
+STACK CFI 26d18 x19: x19 x20: x20
+STACK CFI 26d1c x21: x21 x22: x22
+STACK CFI 26d20 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 34924 34 .cfa: sp 0 + .ra: x30
+STACK CFI 3492c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 34930 .cfa: x29 32 +
+STACK CFI 34938 x19: .cfa -16 + ^
+STACK CFI 34950 x19: x19
+STACK CFI 34954 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 34958 4a8 .cfa: sp 0 + .ra: x30
+STACK CFI 3495c .cfa: sp 1104 +
+STACK CFI 34960 .cfa: sp 1200 + .ra: .cfa -1192 + ^ x29: .cfa -1200 + ^
+STACK CFI 34964 .cfa: x29 1200 +
+STACK CFI 34978 x19: .cfa -1184 + ^ x20: .cfa -1176 + ^ x21: .cfa -1168 + ^ x22: .cfa -1160 + ^ x23: .cfa -1152 + ^ x24: .cfa -1144 + ^ x25: .cfa -1136 + ^ x26: .cfa -1128 + ^ x27: .cfa -1120 + ^ x28: .cfa -1112 + ^
+STACK CFI 34de4 x19: x19 x20: x20
+STACK CFI 34de8 x21: x21 x22: x22
+STACK CFI 34dec x23: x23 x24: x24
+STACK CFI 34df0 x25: x25 x26: x26
+STACK CFI 34df4 x27: x27 x28: x28
+STACK CFI 34df8 .cfa: sp 1104 + .ra: .ra x29: x29
+STACK CFI 34dfc .cfa: sp 1008 +
+STACK CFI INIT 34e00 880 .cfa: sp 0 + .ra: x30
+STACK CFI 34e04 .cfa: sp 1456 +
+STACK CFI 34e08 .cfa: sp 1584 + .ra: .cfa -1576 + ^ x29: .cfa -1584 + ^
+STACK CFI 34e0c .cfa: x29 1584 +
+STACK CFI 34e14 v8: .cfa -1488 + ^ v9: .cfa -1480 + ^ x23: .cfa -1536 + ^ x24: .cfa -1528 + ^
+STACK CFI 34e30 v10: .cfa -1472 + ^ x19: .cfa -1568 + ^ x20: .cfa -1560 + ^ x21: .cfa -1552 + ^ x22: .cfa -1544 + ^ x25: .cfa -1520 + ^ x26: .cfa -1512 + ^ x27: .cfa -1504 + ^ x28: .cfa -1496 + ^
+STACK CFI 3565c v8: v8 v9: v9
+STACK CFI 35660 x19: x19 x20: x20
+STACK CFI 35664 x21: x21 x22: x22
+STACK CFI 35668 x23: x23 x24: x24
+STACK CFI 3566c x25: x25 x26: x26
+STACK CFI 35670 x27: x27 x28: x28
+STACK CFI 35674 v10: v10
+STACK CFI 35678 .cfa: sp 1456 + .ra: .ra x29: x29
+STACK CFI 3567c .cfa: sp 1328 +
+STACK CFI INIT 35680 24 .cfa: sp 0 + .ra: x30
+STACK CFI 35684 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 35688 .cfa: x29 32 +
+STACK CFI 3568c x19: .cfa -16 + ^
+STACK CFI 3569c x19: x19
+STACK CFI 356a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 282a4 28 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 282cc 20 .cfa: sp 0 + .ra: x30
+STACK CFI 282d0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 282d8 .cfa: x29 32 +
+STACK CFI 282e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 282ec 20 .cfa: sp 0 + .ra: x30
+STACK CFI 282f0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 282f8 .cfa: x29 32 +
+STACK CFI 28308 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2830c 110 .cfa: sp 0 + .ra: x30
+STACK CFI 28310 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2831c .cfa: x29 32 +
+STACK CFI 28398 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2839c .cfa: x29 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI INIT 2841c 124 .cfa: sp 0 + .ra: x30
+STACK CFI 28420 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 28424 .cfa: x29 80 +
+STACK CFI 28430 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^
+STACK CFI 28530 x19: x19 x20: x20
+STACK CFI 28534 x21: x21 x22: x22
+STACK CFI 28538 x23: x23 x24: x24
+STACK CFI 2853c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 9c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI 10 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI 8c x21: x21
+STACK CFI 94 x19: x19 x20: x20
+STACK CFI 98 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 7c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 74 x19: x19 x20: x20
+STACK CFI 78 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 28650 c4 .cfa: sp 0 + .ra: x30
+STACK CFI 28654 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 2865c .cfa: x29 48 +
+STACK CFI 28664 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 28708 x19: x19 x20: x20
+STACK CFI 2870c x21: x21
+STACK CFI 28710 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 d0 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI 10 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI c4 x21: x21
+STACK CFI c8 x19: x19 x20: x20
+STACK CFI cc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 287cc 10c .cfa: sp 0 + .ra: x30
+STACK CFI 287d0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 287d8 .cfa: x29 64 +
+STACK CFI 287e0 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x23: .cfa -16 + ^
+STACK CFI 287e8 x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 288c8 x19: x19 x20: x20
+STACK CFI 288cc x21: x21 x22: x22
+STACK CFI 288d0 x23: x23
+STACK CFI 288d4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 288d8 f0 .cfa: sp 0 + .ra: x30
+STACK CFI 288dc .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 288e4 .cfa: x29 64 +
+STACK CFI 288f0 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 289b8 x23: x23
+STACK CFI 289bc x19: x19 x20: x20
+STACK CFI 289c0 x21: x21 x22: x22
+STACK CFI 289c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 217e4 d8 .cfa: sp 0 + .ra: x30
+STACK CFI 217e8 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 217ec .cfa: x29 64 +
+STACK CFI 217f4 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 218a8 x21: x21
+STACK CFI 218b0 x19: x19 x20: x20
+STACK CFI 218b4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2351c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23520 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23524 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2354c 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23554 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23558 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 356a4 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 356a8 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 356ac 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 356b0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 356b4 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 356b8 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 356bc 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 356c0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 356c4 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235c8 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235d0 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235ec 24 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23610 6c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2367c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23680 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23688 40 .cfa: sp 0 + .ra: x30
+STACK CFI 2368c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 23690 .cfa: x29 32 +
+STACK CFI 23694 x19: .cfa -16 + ^
+STACK CFI 236c0 x19: x19
+STACK CFI 236c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 236c8 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 356c8 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 356cc 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 356d0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 356d4 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 356d8 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 356dc 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 356e0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 356e4 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 356e8 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 237ec a8 .cfa: sp 0 + .ra: x30
+STACK CFI 237f0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 237f4 .cfa: x29 64 +
+STACK CFI 23800 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 23884 x23: x23
+STACK CFI 23888 x19: x19 x20: x20
+STACK CFI 2388c x21: x21 x22: x22
+STACK CFI 23890 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23738 b4 .cfa: sp 0 + .ra: x30
+STACK CFI 2373c .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 23740 .cfa: x29 64 +
+STACK CFI 2374c x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 237dc x23: x23
+STACK CFI 237e0 x19: x19 x20: x20
+STACK CFI 237e4 x21: x21 x22: x22
+STACK CFI 237e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23894 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 238a8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 238ac .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 238b0 .cfa: x29 32 +
+STACK CFI 238b4 x19: .cfa -16 + ^
+STACK CFI 238c4 x19: x19
+STACK CFI 238c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 238cc 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 238e0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 238e4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 238e8 .cfa: x29 32 +
+STACK CFI 238ec x19: .cfa -16 + ^
+STACK CFI 238fc x19: x19
+STACK CFI 23900 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 356ec 24 .cfa: sp 0 + .ra: x30
+STACK CFI 356f0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 356f4 .cfa: x29 32 +
+STACK CFI 356f8 x19: .cfa -16 + ^
+STACK CFI 35708 x19: x19
+STACK CFI 3570c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 35710 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 35724 24 .cfa: sp 0 + .ra: x30
+STACK CFI 35728 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 3572c .cfa: x29 32 +
+STACK CFI 35730 x19: .cfa -16 + ^
+STACK CFI 35740 x19: x19
+STACK CFI 35744 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 35748 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 3575c 24 .cfa: sp 0 + .ra: x30
+STACK CFI 35760 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 35764 .cfa: x29 32 +
+STACK CFI 35768 x19: .cfa -16 + ^
+STACK CFI 35778 x19: x19
+STACK CFI 3577c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 35780 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 35794 24 .cfa: sp 0 + .ra: x30
+STACK CFI 35798 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 3579c .cfa: x29 32 +
+STACK CFI 357a0 x19: .cfa -16 + ^
+STACK CFI 357b0 x19: x19
+STACK CFI 357b4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 357b8 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 357cc 24 .cfa: sp 0 + .ra: x30
+STACK CFI 357d0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 357d4 .cfa: x29 32 +
+STACK CFI 357d8 x19: .cfa -16 + ^
+STACK CFI 357e8 x19: x19
+STACK CFI 357ec .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 357f0 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 35804 24 .cfa: sp 0 + .ra: x30
+STACK CFI 35808 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 3580c .cfa: x29 32 +
+STACK CFI 35810 x19: .cfa -16 + ^
+STACK CFI 35820 x19: x19
+STACK CFI 35824 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 35828 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 3583c 24 .cfa: sp 0 + .ra: x30
+STACK CFI 35840 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 35844 .cfa: x29 32 +
+STACK CFI 35848 x19: .cfa -16 + ^
+STACK CFI 35858 x19: x19
+STACK CFI 3585c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 35860 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 35874 24 .cfa: sp 0 + .ra: x30
+STACK CFI 35878 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 3587c .cfa: x29 32 +
+STACK CFI 35880 x19: .cfa -16 + ^
+STACK CFI 35890 x19: x19
+STACK CFI 35894 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 35898 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 358ac 24 .cfa: sp 0 + .ra: x30
+STACK CFI 358b0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 358b4 .cfa: x29 32 +
+STACK CFI 358b8 x19: .cfa -16 + ^
+STACK CFI 358c8 x19: x19
+STACK CFI 358cc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 358d0 3c .cfa: sp 0 + .ra: x30
+STACK CFI 358d4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 358dc .cfa: x29 32 +
+STACK CFI 358e0 x19: .cfa -16 + ^
+STACK CFI 35904 x19: x19
+STACK CFI 35908 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 3590c 3c .cfa: sp 0 + .ra: x30
+STACK CFI 35910 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 35918 .cfa: x29 32 +
+STACK CFI 3591c x19: .cfa -16 + ^
+STACK CFI 35940 x19: x19
+STACK CFI 35944 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 35948 3c .cfa: sp 0 + .ra: x30
+STACK CFI 3594c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 35954 .cfa: x29 32 +
+STACK CFI 35958 x19: .cfa -16 + ^
+STACK CFI 3597c x19: x19
+STACK CFI 35980 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 35984 3c .cfa: sp 0 + .ra: x30
+STACK CFI 35988 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 35990 .cfa: x29 32 +
+STACK CFI 35994 x19: .cfa -16 + ^
+STACK CFI 359b8 x19: x19
+STACK CFI 359bc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 359c0 3c .cfa: sp 0 + .ra: x30
+STACK CFI 359c4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 359cc .cfa: x29 32 +
+STACK CFI 359d0 x19: .cfa -16 + ^
+STACK CFI 359f4 x19: x19
+STACK CFI 359f8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 359fc 3c .cfa: sp 0 + .ra: x30
+STACK CFI 35a00 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 35a08 .cfa: x29 32 +
+STACK CFI 35a0c x19: .cfa -16 + ^
+STACK CFI 35a30 x19: x19
+STACK CFI 35a34 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 35a38 3c .cfa: sp 0 + .ra: x30
+STACK CFI 35a3c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 35a44 .cfa: x29 32 +
+STACK CFI 35a48 x19: .cfa -16 + ^
+STACK CFI 35a6c x19: x19
+STACK CFI 35a70 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 35a74 3c .cfa: sp 0 + .ra: x30
+STACK CFI 35a78 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 35a80 .cfa: x29 32 +
+STACK CFI 35a84 x19: .cfa -16 + ^
+STACK CFI 35aa8 x19: x19
+STACK CFI 35aac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24794 b0 .cfa: sp 0 + .ra: x30
+STACK CFI 24798 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 2479c .cfa: x29 64 +
+STACK CFI 247a8 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 24834 x23: x23
+STACK CFI 24838 x19: x19 x20: x20
+STACK CFI 2483c x21: x21 x22: x22
+STACK CFI 24840 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24844 40 .cfa: sp 0 + .ra: x30
+STACK CFI 24848 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 24854 .cfa: x29 32 +
+STACK CFI 24858 x19: .cfa -16 + ^
+STACK CFI 2487c x19: x19
+STACK CFI 24880 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24884 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 248a0 48 .cfa: sp 0 + .ra: x30
+STACK CFI 248a4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 248a8 .cfa: x29 32 +
+STACK CFI 248ac x19: .cfa -16 + ^
+STACK CFI 248e0 x19: x19
+STACK CFI 248e4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 248e8 30 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 24940 34 .cfa: sp 0 + .ra: x30
+STACK CFI 24948 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2494c .cfa: x29 32 +
+STACK CFI 24954 x19: .cfa -16 + ^
+STACK CFI 2496c x19: x19
+STACK CFI 24970 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24974 24 .cfa: sp 0 + .ra: x30
+STACK CFI 24978 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2497c .cfa: x29 32 +
+STACK CFI 24980 x19: .cfa -16 + ^
+STACK CFI 24990 x19: x19
+STACK CFI 24994 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24998 60 .cfa: sp 0 + .ra: x30
+STACK CFI 2499c .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 249a0 .cfa: x29 48 +
+STACK CFI 249a8 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 249ec x19: x19 x20: x20
+STACK CFI 249f0 x21: x21
+STACK CFI 249f4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 249f8 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 35ab0 190 .cfa: sp 0 + .ra: x30
+STACK CFI 35ab4 .cfa: sp 128 + .ra: .cfa -120 + ^ x29: .cfa -128 + ^
+STACK CFI 35ab8 .cfa: x29 128 +
+STACK CFI 35ac0 x19: .cfa -112 + ^ x20: .cfa -104 + ^ x21: .cfa -96 + ^ x22: .cfa -88 + ^
+STACK CFI 35c34 x19: x19 x20: x20
+STACK CFI 35c38 x21: x21 x22: x22
+STACK CFI 35c3c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 35c40 68 .cfa: sp 0 + .ra: x30
+STACK CFI 35c44 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 35c48 .cfa: x29 32 +
+STACK CFI 35c4c x19: .cfa -16 + ^
+STACK CFI 35ca0 x19: x19
+STACK CFI 35ca4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 35ca8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 35cac .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 35cb0 .cfa: x29 32 +
+STACK CFI 35cb4 x19: .cfa -16 + ^
+STACK CFI 35cc4 x19: x19
+STACK CFI 35cc8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24a00 fc .cfa: sp 0 + .ra: x30
+STACK CFI 24a04 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 24a0c .cfa: x29 96 +
+STACK CFI 24a18 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^
+STACK CFI 24aec x21: x21 x22: x22
+STACK CFI 24af0 x19: x19 x20: x20
+STACK CFI 24af4 x23: x23 x24: x24
+STACK CFI 24af8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24afc b4 .cfa: sp 0 + .ra: x30
+STACK CFI 24b00 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 24b04 .cfa: x29 48 +
+STACK CFI 24b08 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 24b18 x21: .cfa -16 + ^
+STACK CFI 24ba4 x21: x21
+STACK CFI 24ba8 x19: x19 x20: x20
+STACK CFI 24bac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24bb0 b0 .cfa: sp 0 + .ra: x30
+STACK CFI 24bb4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 24bb8 .cfa: x29 48 +
+STACK CFI 24bc0 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 24c40 x21: x21
+STACK CFI 24c58 x19: x19 x20: x20
+STACK CFI 24c5c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24c60 98 .cfa: sp 0 + .ra: x30
+STACK CFI 24c64 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 24c68 .cfa: x29 64 +
+STACK CFI 24c70 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 24cec x19: x19 x20: x20
+STACK CFI 24cf0 x21: x21
+STACK CFI 24cf4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24cf8 1c .cfa: sp 0 + .ra: x30
+STACK CFI 24cfc .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 24d00 .cfa: x29 16 +
+STACK CFI 24d10 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24d14 3c .cfa: sp 0 + .ra: x30
+STACK CFI 24d18 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 24d1c .cfa: x29 16 +
+STACK CFI 24d4c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 35ccc 144 .cfa: sp 0 + .ra: x30
+STACK CFI 35cd0 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 35cd4 .cfa: x29 48 +
+STACK CFI 35cdc x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 35e04 x19: x19 x20: x20
+STACK CFI 35e08 x21: x21 x22: x22
+STACK CFI 35e0c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24db0 68 .cfa: sp 0 + .ra: x30
+STACK CFI 24db4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 24db8 .cfa: x29 48 +
+STACK CFI 24dbc x19: .cfa -32 + ^
+STACK CFI 24e10 x19: x19
+STACK CFI 24e14 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 250a4 58 .cfa: sp 0 + .ra: x30
+STACK CFI 250a8 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 250ac .cfa: x29 48 +
+STACK CFI 250b0 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 250b8 x21: .cfa -16 + ^
+STACK CFI 250f0 x19: x19 x20: x20
+STACK CFI 250f4 x21: x21
+STACK CFI 250f8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 35e10 78 .cfa: sp 0 + .ra: x30
+STACK CFI 35e14 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 35e1c .cfa: x29 32 +
+STACK CFI 35e20 x19: .cfa -16 + ^
+STACK CFI 35e80 x19: x19
+STACK CFI 35e84 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 f4 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 18 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI e8 x19: x19 x20: x20
+STACK CFI ec x21: x21 x22: x22
+STACK CFI f0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 c8 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI 10 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI b4 x21: x21
+STACK CFI c0 x19: x19 x20: x20
+STACK CFI c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 251f0 8c .cfa: sp 0 + .ra: x30
+STACK CFI 251f4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 251f8 .cfa: x29 48 +
+STACK CFI 251fc x19: .cfa -32 + ^
+STACK CFI 25268 x19: x19
+STACK CFI 2526c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 25270 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 25274 x19: x19
+STACK CFI 25278 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2527c c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25288 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25298 24 .cfa: sp 0 + .ra: x30
+STACK CFI 2529c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 252a0 .cfa: x29 32 +
+STACK CFI 252a4 x19: .cfa -16 + ^
+STACK CFI 252b4 x19: x19
+STACK CFI 252b8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 252bc 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 252cc c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 252d8 8c .cfa: sp 0 + .ra: x30
+STACK CFI 252dc .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 252e0 .cfa: x29 48 +
+STACK CFI 252e4 x19: .cfa -32 + ^
+STACK CFI 25350 x19: x19
+STACK CFI 25354 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 25358 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 2535c x19: x19
+STACK CFI 25360 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25364 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25370 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25380 24 .cfa: sp 0 + .ra: x30
+STACK CFI 25384 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 25388 .cfa: x29 32 +
+STACK CFI 2538c x19: .cfa -16 + ^
+STACK CFI 2539c x19: x19
+STACK CFI 253a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 253a4 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 253b4 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 253c0 e0 .cfa: sp 0 + .ra: x30
+STACK CFI 253c4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 253c8 .cfa: x29 48 +
+STACK CFI 253cc x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 2548c x19: x19 x20: x20
+STACK CFI 25490 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 25494 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x29: .cfa -48 + ^
+STACK CFI 25498 x19: x19 x20: x20
+STACK CFI 2549c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 254a0 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 254ac cc .cfa: sp 0 + .ra: x30
+STACK CFI 254b0 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 254b4 .cfa: x29 48 +
+STACK CFI 254b8 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 25564 x19: x19 x20: x20
+STACK CFI 25568 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2556c .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x29: .cfa -48 + ^
+STACK CFI 25570 x19: x19 x20: x20
+STACK CFI 25574 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25578 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25584 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25590 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25598 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255a8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 255ac .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 255b0 .cfa: x29 32 +
+STACK CFI 255b4 x19: .cfa -16 + ^
+STACK CFI 255c4 x19: x19
+STACK CFI 255c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 255cc 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255d4 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255e4 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255f0 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255f8 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25608 24 .cfa: sp 0 + .ra: x30
+STACK CFI 2560c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 25610 .cfa: x29 32 +
+STACK CFI 25614 x19: .cfa -16 + ^
+STACK CFI 25624 x19: x19
+STACK CFI 25628 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2562c 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25634 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25644 5c .cfa: sp 0 + .ra: x30
+STACK CFI 25648 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2564c .cfa: x29 32 +
+STACK CFI 25650 x19: .cfa -16 + ^
+STACK CFI 25698 x19: x19
+STACK CFI 2569c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 256a0 78 .cfa: sp 0 + .ra: x30
+STACK CFI 256a4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 256ac .cfa: x29 32 +
+STACK CFI 256b0 x19: .cfa -16 + ^
+STACK CFI 25710 x19: x19
+STACK CFI 25714 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25718 50 .cfa: sp 0 + .ra: x30
+STACK CFI 2571c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 25720 .cfa: x29 32 +
+STACK CFI 25724 x19: .cfa -16 + ^
+STACK CFI 25754 x19: x19
+STACK CFI 25758 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2575c .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI 25760 x19: x19
+STACK CFI 25764 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25768 13c .cfa: sp 0 + .ra: x30
+STACK CFI 2576c .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 25770 .cfa: x29 64 +
+STACK CFI 25778 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 25898 x19: x19 x20: x20
+STACK CFI 2589c x21: x21 x22: x22
+STACK CFI 258a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25964 104 .cfa: sp 0 + .ra: x30
+STACK CFI 25968 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 2596c .cfa: x29 80 +
+STACK CFI 25978 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^
+STACK CFI 25a58 x19: x19 x20: x20
+STACK CFI 25a5c x21: x21 x22: x22
+STACK CFI 25a60 x23: x23 x24: x24
+STACK CFI 25a64 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 cc .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI 10 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI bc x21: x21
+STACK CFI c4 x19: x19 x20: x20
+STACK CFI c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 cc .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI 10 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI bc x21: x21
+STACK CFI c4 x19: x19 x20: x20
+STACK CFI c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 35e88 50 .cfa: sp 0 + .ra: x30
+STACK CFI 35e8c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 35e98 .cfa: x29 32 +
+STACK CFI 35e9c x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 35ea4 x19: x19 x20: x20
+STACK CFI 35eac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 35eb4 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x20: .cfa -8 + ^ x29: .cfa -32 + ^
+STACK CFI 35ed0 x19: x19 x20: x20
+STACK CFI 35ed4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25b28 2c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25b54 5c .cfa: sp 0 + .ra: x30
+STACK CFI 25b58 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 25b5c .cfa: x29 16 +
+STACK CFI 25bac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25bb0 164 .cfa: sp 0 + .ra: x30
+STACK CFI 25bb4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 25bbc .cfa: x29 80 +
+STACK CFI 25bc8 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI 25d04 x23: x23
+STACK CFI 25d08 x19: x19 x20: x20
+STACK CFI 25d0c x21: x21 x22: x22
+STACK CFI 25d10 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 a8 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 128 + .ra: .cfa -120 + ^ x29: .cfa -128 + ^
+STACK CFI 8 .cfa: x29 128 +
+STACK CFI 14 x19: .cfa -112 + ^ x20: .cfa -104 + ^ x21: .cfa -96 + ^ x22: .cfa -88 + ^ x23: .cfa -80 + ^
+STACK CFI 98 x23: x23
+STACK CFI 9c x19: x19 x20: x20
+STACK CFI a0 x21: x21 x22: x22
+STACK CFI a4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 cc .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI 10 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI bc x21: x21
+STACK CFI c4 x19: x19 x20: x20
+STACK CFI c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26188 54 .cfa: sp 0 + .ra: x30
+STACK CFI 2618c .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 26190 .cfa: x29 64 +
+STACK CFI 26194 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 261d4 x19: x19 x20: x20
+STACK CFI 261d8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 261dc 64 .cfa: sp 0 + .ra: x30
+STACK CFI 261e0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 261e4 .cfa: x29 64 +
+STACK CFI 261e8 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 26238 x19: x19 x20: x20
+STACK CFI 2623c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26240 54 .cfa: sp 0 + .ra: x30
+STACK CFI 26244 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 26248 .cfa: x29 64 +
+STACK CFI 2624c x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 2628c x19: x19 x20: x20
+STACK CFI 26290 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26294 54 .cfa: sp 0 + .ra: x30
+STACK CFI 26298 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 2629c .cfa: x29 64 +
+STACK CFI 262a0 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 262e0 x19: x19 x20: x20
+STACK CFI 262e4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 28074 5c .cfa: sp 0 + .ra: x30
+STACK CFI 28078 .cfa: sp 336 + .ra: .cfa -328 + ^ x29: .cfa -336 + ^
+STACK CFI 28080 .cfa: x29 336 +
+STACK CFI 28084 x19: .cfa -320 + ^ x20: .cfa -312 + ^
+STACK CFI 2808c x21: .cfa -304 + ^
+STACK CFI 280c0 x21: x21
+STACK CFI 280c8 x19: x19 x20: x20
+STACK CFI 280cc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 28208 9c .cfa: sp 0 + .ra: x30
+STACK CFI 2820c .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 28210 .cfa: x29 160 +
+STACK CFI 28218 x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^
+STACK CFI 28298 x19: x19 x20: x20
+STACK CFI 2829c x21: x21 x22: x22
+STACK CFI 282a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26aa8 88 .cfa: sp 0 + .ra: x30
+STACK CFI 26aac .cfa: sp 336 + .ra: .cfa -328 + ^ x29: .cfa -336 + ^
+STACK CFI 26ab4 .cfa: x29 336 +
+STACK CFI 26ab8 x19: .cfa -320 + ^ x20: .cfa -312 + ^
+STACK CFI 26ac0 x21: .cfa -304 + ^
+STACK CFI 26b20 x21: x21
+STACK CFI 26b28 x19: x19 x20: x20
+STACK CFI 26b2c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 158 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 224 + .ra: .cfa -216 + ^ x29: .cfa -224 + ^
+STACK CFI 8 .cfa: x29 224 +
+STACK CFI 14 x19: .cfa -208 + ^ x20: .cfa -200 + ^ x21: .cfa -192 + ^ x22: .cfa -184 + ^ x23: .cfa -176 + ^
+STACK CFI 148 x23: x23
+STACK CFI 14c x19: x19 x20: x20
+STACK CFI 150 x21: x21 x22: x22
+STACK CFI 154 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 35ed8 3a8 .cfa: sp 0 + .ra: x30
+STACK CFI 35edc .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 35ee0 .cfa: x29 160 +
+STACK CFI 35ee4 x19: .cfa -144 + ^ x20: .cfa -136 + ^
+STACK CFI 35ef8 x21: .cfa -128 + ^ x22: .cfa -120 + ^ x23: .cfa -112 + ^ x24: .cfa -104 + ^
+STACK CFI 36270 x19: x19 x20: x20
+STACK CFI 36274 x21: x21 x22: x22
+STACK CFI 36278 x23: x23 x24: x24
+STACK CFI 3627c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26c88 9c .cfa: sp 0 + .ra: x30
+STACK CFI 26c8c .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 26c90 .cfa: x29 160 +
+STACK CFI 26c98 x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^
+STACK CFI 26d18 x19: x19 x20: x20
+STACK CFI 26d1c x21: x21 x22: x22
+STACK CFI 26d20 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 36280 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 36294 34 .cfa: sp 0 + .ra: x30
+STACK CFI 36298 .cfa: sp 208 + .ra: .cfa -200 + ^ x29: .cfa -208 + ^
+STACK CFI 3629c .cfa: x29 208 +
+STACK CFI 362a0 x19: .cfa -192 + ^
+STACK CFI 362c0 x19: x19
+STACK CFI 362c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 362c8 230 .cfa: sp 0 + .ra: x30
+STACK CFI 362cc .cfa: sp 320 + .ra: .cfa -312 + ^ x29: .cfa -320 + ^
+STACK CFI 362d0 .cfa: x29 320 +
+STACK CFI 362dc x19: .cfa -304 + ^ x20: .cfa -296 + ^ x21: .cfa -288 + ^ x22: .cfa -280 + ^ x23: .cfa -272 + ^
+STACK CFI 364e8 x23: x23
+STACK CFI 364ec x19: x19 x20: x20
+STACK CFI 364f0 x21: x21 x22: x22
+STACK CFI 364f4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 364f8 4fc .cfa: sp 0 + .ra: x30
+STACK CFI 364fc .cfa: sp 1024 +
+STACK CFI 36500 .cfa: sp 1120 + .ra: .cfa -1112 + ^ x29: .cfa -1120 + ^
+STACK CFI 36504 .cfa: x29 1120 +
+STACK CFI 36518 x19: .cfa -1104 + ^ x20: .cfa -1096 + ^ x21: .cfa -1088 + ^ x22: .cfa -1080 + ^ x23: .cfa -1072 + ^ x24: .cfa -1064 + ^ x25: .cfa -1056 + ^ x26: .cfa -1048 + ^ x27: .cfa -1040 + ^
+STACK CFI 369d8 x27: x27
+STACK CFI 369dc x19: x19 x20: x20
+STACK CFI 369e0 x21: x21 x22: x22
+STACK CFI 369e4 x23: x23 x24: x24
+STACK CFI 369e8 x25: x25 x26: x26
+STACK CFI 369ec .cfa: sp 1024 + .ra: .ra x29: x29
+STACK CFI 369f0 .cfa: sp 928 +
+STACK CFI INIT 369f4 4b8 .cfa: sp 0 + .ra: x30
+STACK CFI 369f8 .cfa: sp 4096 +
+STACK CFI 36a00 .cfa: sp 4512 +
+STACK CFI 36a0c .cfa: sp 4576 + .ra: .cfa -4568 + ^ x29: .cfa -4576 + ^
+STACK CFI 36a10 .cfa: x29 4576 +
+STACK CFI 36a14 x19: .cfa -4560 + ^ x20: .cfa -4552 + ^
+STACK CFI 36a24 x21: .cfa -4544 + ^ x22: .cfa -4536 + ^ x23: .cfa -4528 + ^ x24: .cfa -4520 + ^
+STACK CFI 36e94 x19: x19 x20: x20
+STACK CFI 36e98 x21: x21 x22: x22
+STACK CFI 36e9c x23: x23 x24: x24
+STACK CFI 36ea0 .cfa: sp 4512 + .ra: .ra x29: x29
+STACK CFI 36ea4 .cfa: sp 4096 +
+STACK CFI 36ea8 .cfa: sp 4032 +
+STACK CFI INIT 36eac 408 .cfa: sp 0 + .ra: x30
+STACK CFI 36eb0 .cfa: sp 432 + .ra: .cfa -424 + ^ x29: .cfa -432 + ^
+STACK CFI 36eb4 .cfa: x29 432 +
+STACK CFI 36ec0 x19: .cfa -416 + ^ x20: .cfa -408 + ^ x21: .cfa -400 + ^ x22: .cfa -392 + ^ x23: .cfa -384 + ^ x24: .cfa -376 + ^
+STACK CFI 36ecc x25: .cfa -368 + ^ x26: .cfa -360 + ^ x27: .cfa -352 + ^
+STACK CFI 3729c x27: x27
+STACK CFI 372a0 x19: x19 x20: x20
+STACK CFI 372a4 x21: x21 x22: x22
+STACK CFI 372a8 x23: x23 x24: x24
+STACK CFI 372ac x25: x25 x26: x26
+STACK CFI 372b0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 372b4 40c .cfa: sp 0 + .ra: x30
+STACK CFI 372b8 .cfa: sp 400 + .ra: .cfa -392 + ^ x29: .cfa -400 + ^
+STACK CFI 372bc .cfa: x29 400 +
+STACK CFI 372cc x19: .cfa -384 + ^ x20: .cfa -376 + ^ x21: .cfa -368 + ^ x22: .cfa -360 + ^ x23: .cfa -352 + ^ x24: .cfa -344 + ^ x25: .cfa -336 + ^
+STACK CFI 376ac x25: x25
+STACK CFI 376b0 x19: x19 x20: x20
+STACK CFI 376b4 x21: x21 x22: x22
+STACK CFI 376b8 x23: x23 x24: x24
+STACK CFI 376bc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 376c0 3e0 .cfa: sp 0 + .ra: x30
+STACK CFI 376c4 .cfa: sp 592 +
+STACK CFI 376c8 .cfa: sp 672 + .ra: .cfa -664 + ^ x29: .cfa -672 + ^
+STACK CFI 376cc .cfa: x29 672 +
+STACK CFI 376d8 x19: .cfa -656 + ^ x20: .cfa -648 + ^ x21: .cfa -640 + ^ x22: .cfa -632 + ^ x23: .cfa -624 + ^ x24: .cfa -616 + ^
+STACK CFI 376e4 x25: .cfa -608 + ^ x26: .cfa -600 + ^
+STACK CFI 37a88 x19: x19 x20: x20
+STACK CFI 37a8c x21: x21 x22: x22
+STACK CFI 37a90 x23: x23 x24: x24
+STACK CFI 37a94 x25: x25 x26: x26
+STACK CFI 37a98 .cfa: sp 592 + .ra: .ra x29: x29
+STACK CFI 37a9c .cfa: sp 512 +
+STACK CFI INIT 37aa0 3d8 .cfa: sp 0 + .ra: x30
+STACK CFI 37aa4 .cfa: sp 544 +
+STACK CFI 37aa8 .cfa: sp 656 + .ra: .cfa -648 + ^ x29: .cfa -656 + ^
+STACK CFI 37aac .cfa: x29 656 +
+STACK CFI 37ab4 v8: .cfa -560 + ^ x19: .cfa -640 + ^ x20: .cfa -632 + ^
+STACK CFI 37ac4 x21: .cfa -624 + ^ x22: .cfa -616 + ^ x23: .cfa -608 + ^ x24: .cfa -600 + ^ x25: .cfa -592 + ^ x26: .cfa -584 + ^
+STACK CFI 37ad0 x27: .cfa -576 + ^ x28: .cfa -568 + ^
+STACK CFI 37e58 v8: v8
+STACK CFI 37e5c x19: x19 x20: x20
+STACK CFI 37e60 x21: x21 x22: x22
+STACK CFI 37e64 x23: x23 x24: x24
+STACK CFI 37e68 x25: x25 x26: x26
+STACK CFI 37e6c x27: x27 x28: x28
+STACK CFI 37e70 .cfa: sp 544 + .ra: .ra x29: x29
+STACK CFI 37e74 .cfa: sp 432 +
+STACK CFI INIT 37e78 b58 .cfa: sp 0 + .ra: x30
+STACK CFI 37e7c .cfa: sp 1120 +
+STACK CFI 37e84 .cfa: sp 1248 + .ra: .cfa -1240 + ^ x29: .cfa -1248 + ^
+STACK CFI 37e88 .cfa: x29 1248 +
+STACK CFI 37e90 v8: .cfa -1152 + ^ v9: .cfa -1144 + ^ x21: .cfa -1216 + ^ x22: .cfa -1208 + ^
+STACK CFI 37ea0 v10: .cfa -1136 + ^ v11: .cfa -1128 + ^ x27: .cfa -1168 + ^ x28: .cfa -1160 + ^
+STACK CFI 37eb0 x19: .cfa -1232 + ^ x20: .cfa -1224 + ^
+STACK CFI 37ec0 x23: .cfa -1200 + ^ x24: .cfa -1192 + ^ x25: .cfa -1184 + ^ x26: .cfa -1176 + ^
+STACK CFI 389ac x19: x19 x20: x20
+STACK CFI 389b0 v8: v8 v9: v9
+STACK CFI 389b4 x21: x21 x22: x22
+STACK CFI 389b8 v10: v10 v11: v11
+STACK CFI 389bc x23: x23 x24: x24
+STACK CFI 389c0 x25: x25 x26: x26
+STACK CFI 389c4 x27: x27 x28: x28
+STACK CFI 389c8 .cfa: sp 1120 + .ra: .ra x29: x29
+STACK CFI 389cc .cfa: sp 992 +
+STACK CFI INIT 389d0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 389d4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 389d8 .cfa: x29 32 +
+STACK CFI 389dc x19: .cfa -16 + ^
+STACK CFI 389ec x19: x19
+STACK CFI 389f0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 282a4 28 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 282cc 20 .cfa: sp 0 + .ra: x30
+STACK CFI 282d0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 282d8 .cfa: x29 32 +
+STACK CFI 282e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 282ec 20 .cfa: sp 0 + .ra: x30
+STACK CFI 282f0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 282f8 .cfa: x29 32 +
+STACK CFI 28308 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2830c 110 .cfa: sp 0 + .ra: x30
+STACK CFI 28310 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2831c .cfa: x29 32 +
+STACK CFI 28398 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2839c .cfa: x29 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI INIT 2841c 124 .cfa: sp 0 + .ra: x30
+STACK CFI 28420 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 28424 .cfa: x29 80 +
+STACK CFI 28430 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^
+STACK CFI 28530 x19: x19 x20: x20
+STACK CFI 28534 x21: x21 x22: x22
+STACK CFI 28538 x23: x23 x24: x24
+STACK CFI 2853c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 28540 b0 .cfa: sp 0 + .ra: x30
+STACK CFI 28544 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 28548 .cfa: x29 80 +
+STACK CFI 28550 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI 285e0 x21: x21
+STACK CFI 285e8 x19: x19 x20: x20
+STACK CFI 285ec .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 285f0 60 .cfa: sp 0 + .ra: x30
+STACK CFI 285f4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 285f8 .cfa: x29 32 +
+STACK CFI 285fc x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 28648 x19: x19 x20: x20
+STACK CFI 2864c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 28650 c4 .cfa: sp 0 + .ra: x30
+STACK CFI 28654 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 2865c .cfa: x29 48 +
+STACK CFI 28664 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 28708 x19: x19 x20: x20
+STACK CFI 2870c x21: x21
+STACK CFI 28710 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 28714 b8 .cfa: sp 0 + .ra: x30
+STACK CFI 28718 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 2871c .cfa: x29 48 +
+STACK CFI 28724 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 287c0 x21: x21
+STACK CFI 287c4 x19: x19 x20: x20
+STACK CFI 287c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 287cc 10c .cfa: sp 0 + .ra: x30
+STACK CFI 287d0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 287d8 .cfa: x29 64 +
+STACK CFI 287e0 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x23: .cfa -16 + ^
+STACK CFI 287e8 x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 288c8 x19: x19 x20: x20
+STACK CFI 288cc x21: x21 x22: x22
+STACK CFI 288d0 x23: x23
+STACK CFI 288d4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 288d8 f0 .cfa: sp 0 + .ra: x30
+STACK CFI 288dc .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 288e4 .cfa: x29 64 +
+STACK CFI 288f0 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 289b8 x23: x23
+STACK CFI 289bc x19: x19 x20: x20
+STACK CFI 289c0 x21: x21 x22: x22
+STACK CFI 289c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2633c 104 .cfa: sp 0 + .ra: x30
+STACK CFI 26340 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 26348 .cfa: x29 80 +
+STACK CFI 26350 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x23: .cfa -32 + ^
+STACK CFI 26358 x21: .cfa -48 + ^ x22: .cfa -40 + ^
+STACK CFI 26430 x23: x23
+STACK CFI 26434 x19: x19 x20: x20
+STACK CFI 26438 x21: x21 x22: x22
+STACK CFI 2643c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26984 124 .cfa: sp 0 + .ra: x30
+STACK CFI 26988 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 26990 .cfa: x29 80 +
+STACK CFI 2699c x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI 26a98 x19: x19 x20: x20
+STACK CFI 26a9c x21: x21 x22: x22
+STACK CFI 26aa0 x23: x23
+STACK CFI 26aa4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 218bc 2dc .cfa: sp 0 + .ra: x30
+STACK CFI 218c0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 218c8 .cfa: x29 64 +
+STACK CFI 218d0 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 21b88 x19: x19 x20: x20
+STACK CFI 21b8c x21: x21 x22: x22
+STACK CFI 21b94 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2351c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23520 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23524 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2354c 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23554 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23558 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 389f4 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 389f8 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 389fc 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 38a00 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 38a04 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 38a08 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 38a0c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 38a10 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235c8 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235d0 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235ec 24 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23610 6c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2367c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23680 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23688 40 .cfa: sp 0 + .ra: x30
+STACK CFI 2368c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 23690 .cfa: x29 32 +
+STACK CFI 23694 x19: .cfa -16 + ^
+STACK CFI 236c0 x19: x19
+STACK CFI 236c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 236c8 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 38a14 3c .cfa: sp 0 + .ra: x30
+STACK CFI 38a18 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 38a20 .cfa: x29 32 +
+STACK CFI 38a24 x19: .cfa -16 + ^
+STACK CFI 38a48 x19: x19
+STACK CFI 38a4c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 38a50 3c .cfa: sp 0 + .ra: x30
+STACK CFI 38a54 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 38a5c .cfa: x29 32 +
+STACK CFI 38a60 x19: .cfa -16 + ^
+STACK CFI 38a84 x19: x19
+STACK CFI 38a88 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 38a8c 3c .cfa: sp 0 + .ra: x30
+STACK CFI 38a90 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 38a98 .cfa: x29 32 +
+STACK CFI 38a9c x19: .cfa -16 + ^
+STACK CFI 38ac0 x19: x19
+STACK CFI 38ac4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 38ac8 3c .cfa: sp 0 + .ra: x30
+STACK CFI 38acc .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 38ad4 .cfa: x29 32 +
+STACK CFI 38ad8 x19: .cfa -16 + ^
+STACK CFI 38afc x19: x19
+STACK CFI 38b00 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 38b04 3c .cfa: sp 0 + .ra: x30
+STACK CFI 38b08 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 38b10 .cfa: x29 32 +
+STACK CFI 38b14 x19: .cfa -16 + ^
+STACK CFI 38b38 x19: x19
+STACK CFI 38b3c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 38b40 3c .cfa: sp 0 + .ra: x30
+STACK CFI 38b44 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 38b4c .cfa: x29 32 +
+STACK CFI 38b50 x19: .cfa -16 + ^
+STACK CFI 38b74 x19: x19
+STACK CFI 38b78 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 38b7c 3c .cfa: sp 0 + .ra: x30
+STACK CFI 38b80 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 38b88 .cfa: x29 32 +
+STACK CFI 38b8c x19: .cfa -16 + ^
+STACK CFI 38bb0 x19: x19
+STACK CFI 38bb4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 38bb8 3c .cfa: sp 0 + .ra: x30
+STACK CFI 38bbc .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 38bc4 .cfa: x29 32 +
+STACK CFI 38bc8 x19: .cfa -16 + ^
+STACK CFI 38bec x19: x19
+STACK CFI 38bf0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 237ec a8 .cfa: sp 0 + .ra: x30
+STACK CFI 237f0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 237f4 .cfa: x29 64 +
+STACK CFI 23800 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 23884 x23: x23
+STACK CFI 23888 x19: x19 x20: x20
+STACK CFI 2388c x21: x21 x22: x22
+STACK CFI 23890 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 38bf4 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 38bf8 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 38bfc 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 38c00 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 38c04 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 38c08 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 38c0c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 38c10 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23738 b4 .cfa: sp 0 + .ra: x30
+STACK CFI 2373c .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 23740 .cfa: x29 64 +
+STACK CFI 2374c x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 237dc x23: x23
+STACK CFI 237e0 x19: x19 x20: x20
+STACK CFI 237e4 x21: x21 x22: x22
+STACK CFI 237e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23894 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 238a8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 238ac .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 238b0 .cfa: x29 32 +
+STACK CFI 238b4 x19: .cfa -16 + ^
+STACK CFI 238c4 x19: x19
+STACK CFI 238c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 238cc 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 238e0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 238e4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 238e8 .cfa: x29 32 +
+STACK CFI 238ec x19: .cfa -16 + ^
+STACK CFI 238fc x19: x19
+STACK CFI 23900 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 38c14 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 38c28 24 .cfa: sp 0 + .ra: x30
+STACK CFI 38c2c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 38c30 .cfa: x29 32 +
+STACK CFI 38c34 x19: .cfa -16 + ^
+STACK CFI 38c44 x19: x19
+STACK CFI 38c48 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 38c4c 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 38c60 24 .cfa: sp 0 + .ra: x30
+STACK CFI 38c64 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 38c68 .cfa: x29 32 +
+STACK CFI 38c6c x19: .cfa -16 + ^
+STACK CFI 38c7c x19: x19
+STACK CFI 38c80 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 38c84 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 38c98 24 .cfa: sp 0 + .ra: x30
+STACK CFI 38c9c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 38ca0 .cfa: x29 32 +
+STACK CFI 38ca4 x19: .cfa -16 + ^
+STACK CFI 38cb4 x19: x19
+STACK CFI 38cb8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 38cbc 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 38cd0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 38cd4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 38cd8 .cfa: x29 32 +
+STACK CFI 38cdc x19: .cfa -16 + ^
+STACK CFI 38cec x19: x19
+STACK CFI 38cf0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 38cf4 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 38d08 24 .cfa: sp 0 + .ra: x30
+STACK CFI 38d0c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 38d10 .cfa: x29 32 +
+STACK CFI 38d14 x19: .cfa -16 + ^
+STACK CFI 38d24 x19: x19
+STACK CFI 38d28 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 38d2c 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 38d40 24 .cfa: sp 0 + .ra: x30
+STACK CFI 38d44 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 38d48 .cfa: x29 32 +
+STACK CFI 38d4c x19: .cfa -16 + ^
+STACK CFI 38d5c x19: x19
+STACK CFI 38d60 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 38d64 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 38d78 24 .cfa: sp 0 + .ra: x30
+STACK CFI 38d7c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 38d80 .cfa: x29 32 +
+STACK CFI 38d84 x19: .cfa -16 + ^
+STACK CFI 38d94 x19: x19
+STACK CFI 38d98 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 38d9c 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 38db0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 38db4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 38db8 .cfa: x29 32 +
+STACK CFI 38dbc x19: .cfa -16 + ^
+STACK CFI 38dcc x19: x19
+STACK CFI 38dd0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24794 b0 .cfa: sp 0 + .ra: x30
+STACK CFI 24798 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 2479c .cfa: x29 64 +
+STACK CFI 247a8 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 24834 x23: x23
+STACK CFI 24838 x19: x19 x20: x20
+STACK CFI 2483c x21: x21 x22: x22
+STACK CFI 24840 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2eb40 18 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 24844 40 .cfa: sp 0 + .ra: x30
+STACK CFI 24848 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 24854 .cfa: x29 32 +
+STACK CFI 24858 x19: .cfa -16 + ^
+STACK CFI 2487c x19: x19
+STACK CFI 24880 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24884 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 248a0 48 .cfa: sp 0 + .ra: x30
+STACK CFI 248a4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 248a8 .cfa: x29 32 +
+STACK CFI 248ac x19: .cfa -16 + ^
+STACK CFI 248e0 x19: x19
+STACK CFI 248e4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 248e8 30 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 24998 60 .cfa: sp 0 + .ra: x30
+STACK CFI 2499c .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 249a0 .cfa: x29 48 +
+STACK CFI 249a8 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 249ec x19: x19 x20: x20
+STACK CFI 249f0 x21: x21
+STACK CFI 249f4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 249f8 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 24940 34 .cfa: sp 0 + .ra: x30
+STACK CFI 24948 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2494c .cfa: x29 32 +
+STACK CFI 24954 x19: .cfa -16 + ^
+STACK CFI 2496c x19: x19
+STACK CFI 24970 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24974 24 .cfa: sp 0 + .ra: x30
+STACK CFI 24978 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2497c .cfa: x29 32 +
+STACK CFI 24980 x19: .cfa -16 + ^
+STACK CFI 24990 x19: x19
+STACK CFI 24994 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24a00 fc .cfa: sp 0 + .ra: x30
+STACK CFI 24a04 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 24a0c .cfa: x29 96 +
+STACK CFI 24a18 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^
+STACK CFI 24aec x21: x21 x22: x22
+STACK CFI 24af0 x19: x19 x20: x20
+STACK CFI 24af4 x23: x23 x24: x24
+STACK CFI 24af8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24afc b4 .cfa: sp 0 + .ra: x30
+STACK CFI 24b00 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 24b04 .cfa: x29 48 +
+STACK CFI 24b08 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 24b18 x21: .cfa -16 + ^
+STACK CFI 24ba4 x21: x21
+STACK CFI 24ba8 x19: x19 x20: x20
+STACK CFI 24bac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24bb0 b0 .cfa: sp 0 + .ra: x30
+STACK CFI 24bb4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 24bb8 .cfa: x29 48 +
+STACK CFI 24bc0 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 24c40 x21: x21
+STACK CFI 24c58 x19: x19 x20: x20
+STACK CFI 24c5c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24c60 98 .cfa: sp 0 + .ra: x30
+STACK CFI 24c64 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 24c68 .cfa: x29 64 +
+STACK CFI 24c70 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 24cec x19: x19 x20: x20
+STACK CFI 24cf0 x21: x21
+STACK CFI 24cf4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24cf8 1c .cfa: sp 0 + .ra: x30
+STACK CFI 24cfc .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 24d00 .cfa: x29 16 +
+STACK CFI 24d10 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24d14 3c .cfa: sp 0 + .ra: x30
+STACK CFI 24d18 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 24d1c .cfa: x29 16 +
+STACK CFI 24d4c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 38dd4 fc .cfa: sp 0 + .ra: x30
+STACK CFI INIT 24d50 60 .cfa: sp 0 + .ra: x30
+STACK CFI 24d54 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 24d60 .cfa: x29 32 +
+STACK CFI 24d64 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 24da8 x19: x19 x20: x20
+STACK CFI 24dac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 38ed0 5c .cfa: sp 0 + .ra: x30
+STACK CFI 38ed4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 38ed8 .cfa: x29 32 +
+STACK CFI 38edc x19: .cfa -16 + ^
+STACK CFI 38f24 x19: x19
+STACK CFI 38f28 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 38f2c 5c .cfa: sp 0 + .ra: x30
+STACK CFI 38f30 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 38f38 .cfa: x29 64 +
+STACK CFI 38f3c x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 38f80 x19: x19 x20: x20
+STACK CFI 38f84 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 54 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^
+STACK CFI 4c x19: x19
+STACK CFI 50 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25040 64 .cfa: sp 0 + .ra: x30
+STACK CFI 25044 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 25048 .cfa: x29 48 +
+STACK CFI 2504c x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 25058 x21: .cfa -16 + ^
+STACK CFI 25098 x19: x19 x20: x20
+STACK CFI 2509c x21: x21
+STACK CFI 250a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 250a4 58 .cfa: sp 0 + .ra: x30
+STACK CFI 250a8 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 250ac .cfa: x29 48 +
+STACK CFI 250b0 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 250b8 x21: .cfa -16 + ^
+STACK CFI 250f0 x19: x19 x20: x20
+STACK CFI 250f4 x21: x21
+STACK CFI 250f8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 f4 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 18 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI e8 x19: x19 x20: x20
+STACK CFI ec x21: x21 x22: x22
+STACK CFI f0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 c8 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI 10 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI b4 x21: x21
+STACK CFI c0 x19: x19 x20: x20
+STACK CFI c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 251f0 8c .cfa: sp 0 + .ra: x30
+STACK CFI 251f4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 251f8 .cfa: x29 48 +
+STACK CFI 251fc x19: .cfa -32 + ^
+STACK CFI 25268 x19: x19
+STACK CFI 2526c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 25270 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 25274 x19: x19
+STACK CFI 25278 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2527c c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25288 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25298 24 .cfa: sp 0 + .ra: x30
+STACK CFI 2529c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 252a0 .cfa: x29 32 +
+STACK CFI 252a4 x19: .cfa -16 + ^
+STACK CFI 252b4 x19: x19
+STACK CFI 252b8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 252bc 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 252cc c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 252d8 8c .cfa: sp 0 + .ra: x30
+STACK CFI 252dc .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 252e0 .cfa: x29 48 +
+STACK CFI 252e4 x19: .cfa -32 + ^
+STACK CFI 25350 x19: x19
+STACK CFI 25354 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 25358 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 2535c x19: x19
+STACK CFI 25360 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25364 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25370 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25380 24 .cfa: sp 0 + .ra: x30
+STACK CFI 25384 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 25388 .cfa: x29 32 +
+STACK CFI 2538c x19: .cfa -16 + ^
+STACK CFI 2539c x19: x19
+STACK CFI 253a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 253a4 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 253b4 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 253c0 e0 .cfa: sp 0 + .ra: x30
+STACK CFI 253c4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 253c8 .cfa: x29 48 +
+STACK CFI 253cc x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 2548c x19: x19 x20: x20
+STACK CFI 25490 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 25494 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x29: .cfa -48 + ^
+STACK CFI 25498 x19: x19 x20: x20
+STACK CFI 2549c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 254a0 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 254ac cc .cfa: sp 0 + .ra: x30
+STACK CFI 254b0 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 254b4 .cfa: x29 48 +
+STACK CFI 254b8 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 25564 x19: x19 x20: x20
+STACK CFI 25568 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2556c .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x29: .cfa -48 + ^
+STACK CFI 25570 x19: x19 x20: x20
+STACK CFI 25574 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25578 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25584 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25590 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25598 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255a8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 255ac .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 255b0 .cfa: x29 32 +
+STACK CFI 255b4 x19: .cfa -16 + ^
+STACK CFI 255c4 x19: x19
+STACK CFI 255c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 255cc 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255d4 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255e4 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255f0 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255f8 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25608 24 .cfa: sp 0 + .ra: x30
+STACK CFI 2560c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 25610 .cfa: x29 32 +
+STACK CFI 25614 x19: .cfa -16 + ^
+STACK CFI 25624 x19: x19
+STACK CFI 25628 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2562c 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25634 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25644 5c .cfa: sp 0 + .ra: x30
+STACK CFI 25648 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2564c .cfa: x29 32 +
+STACK CFI 25650 x19: .cfa -16 + ^
+STACK CFI 25698 x19: x19
+STACK CFI 2569c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 256a0 78 .cfa: sp 0 + .ra: x30
+STACK CFI 256a4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 256ac .cfa: x29 32 +
+STACK CFI 256b0 x19: .cfa -16 + ^
+STACK CFI 25710 x19: x19
+STACK CFI 25714 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25718 50 .cfa: sp 0 + .ra: x30
+STACK CFI 2571c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 25720 .cfa: x29 32 +
+STACK CFI 25724 x19: .cfa -16 + ^
+STACK CFI 25754 x19: x19
+STACK CFI 25758 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2575c .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI 25760 x19: x19
+STACK CFI 25764 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25768 13c .cfa: sp 0 + .ra: x30
+STACK CFI 2576c .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 25770 .cfa: x29 64 +
+STACK CFI 25778 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 25898 x19: x19 x20: x20
+STACK CFI 2589c x21: x21 x22: x22
+STACK CFI 258a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 cc .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI 10 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI bc x21: x21
+STACK CFI c4 x19: x19 x20: x20
+STACK CFI c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25964 104 .cfa: sp 0 + .ra: x30
+STACK CFI 25968 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 2596c .cfa: x29 80 +
+STACK CFI 25978 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^
+STACK CFI 25a58 x19: x19 x20: x20
+STACK CFI 25a5c x21: x21 x22: x22
+STACK CFI 25a60 x23: x23 x24: x24
+STACK CFI 25a64 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25b28 2c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25b54 5c .cfa: sp 0 + .ra: x30
+STACK CFI 25b58 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 25b5c .cfa: x29 16 +
+STACK CFI 25bac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 154 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI c .cfa: x29 80 +
+STACK CFI 18 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI 144 x23: x23
+STACK CFI 148 x19: x19 x20: x20
+STACK CFI 14c x21: x21 x22: x22
+STACK CFI 150 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 38f88 34 .cfa: sp 0 + .ra: x30
+STACK CFI 38f8c .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 38f90 .cfa: x29 48 +
+STACK CFI 38f94 x19: .cfa -32 + ^
+STACK CFI 38fb4 x19: x19
+STACK CFI 38fb8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 2a0 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 272 + .ra: .cfa -264 + ^ x29: .cfa -272 + ^
+STACK CFI c .cfa: x29 272 +
+STACK CFI 10 x19: .cfa -256 + ^ x20: .cfa -248 + ^
+STACK CFI 20 x21: .cfa -240 + ^ x22: .cfa -232 + ^ x23: .cfa -224 + ^ x24: .cfa -216 + ^ x25: .cfa -208 + ^
+STACK CFI 28c x19: x19 x20: x20
+STACK CFI 290 x21: x21 x22: x22
+STACK CFI 294 x23: x23 x24: x24
+STACK CFI 298 x25: x25
+STACK CFI 29c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 a8 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 128 + .ra: .cfa -120 + ^ x29: .cfa -128 + ^
+STACK CFI 8 .cfa: x29 128 +
+STACK CFI 14 x19: .cfa -112 + ^ x20: .cfa -104 + ^ x21: .cfa -96 + ^ x22: .cfa -88 + ^ x23: .cfa -80 + ^
+STACK CFI 98 x23: x23
+STACK CFI 9c x19: x19 x20: x20
+STACK CFI a0 x21: x21 x22: x22
+STACK CFI a4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 cc .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI 10 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI bc x21: x21
+STACK CFI c4 x19: x19 x20: x20
+STACK CFI c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26188 54 .cfa: sp 0 + .ra: x30
+STACK CFI 2618c .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 26190 .cfa: x29 64 +
+STACK CFI 26194 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 261d4 x19: x19 x20: x20
+STACK CFI 261d8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 261dc 64 .cfa: sp 0 + .ra: x30
+STACK CFI 261e0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 261e4 .cfa: x29 64 +
+STACK CFI 261e8 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 26238 x19: x19 x20: x20
+STACK CFI 2623c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26240 54 .cfa: sp 0 + .ra: x30
+STACK CFI 26244 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 26248 .cfa: x29 64 +
+STACK CFI 2624c x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 2628c x19: x19 x20: x20
+STACK CFI 26290 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26294 54 .cfa: sp 0 + .ra: x30
+STACK CFI 26298 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 2629c .cfa: x29 64 +
+STACK CFI 262a0 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 262e0 x19: x19 x20: x20
+STACK CFI 262e4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 262e8 54 .cfa: sp 0 + .ra: x30
+STACK CFI 262ec .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 262f0 .cfa: x29 64 +
+STACK CFI 262f4 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 26334 x19: x19 x20: x20
+STACK CFI 26338 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 38fbc 40 .cfa: sp 0 + .ra: x30
+STACK CFI 38fc0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 38fc4 .cfa: x29 32 +
+STACK CFI 38fc8 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 38ff4 x19: x19 x20: x20
+STACK CFI 38ff8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 38ffc 44 .cfa: sp 0 + .ra: x30
+STACK CFI 39000 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 39004 .cfa: x29 32 +
+STACK CFI 39008 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 39038 x19: x19 x20: x20
+STACK CFI 3903c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 f4 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI c .cfa: x29 80 +
+STACK CFI 18 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI e4 x23: x23
+STACK CFI e8 x19: x19 x20: x20
+STACK CFI ec x21: x21 x22: x22
+STACK CFI f0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26440 8c .cfa: sp 0 + .ra: x30
+STACK CFI 26444 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 26448 .cfa: x29 64 +
+STACK CFI 2644c x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 2645c x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 264c0 x19: x19 x20: x20
+STACK CFI 264c4 x21: x21 x22: x22
+STACK CFI 264c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 264cc 370 .cfa: sp 0 + .ra: x30
+STACK CFI 264d0 .cfa: sp 368 + .ra: .cfa -360 + ^ x29: .cfa -368 + ^
+STACK CFI 264d4 .cfa: x29 368 +
+STACK CFI 264e8 x19: .cfa -352 + ^ x20: .cfa -344 + ^ x21: .cfa -336 + ^ x22: .cfa -328 + ^ x23: .cfa -320 + ^ x24: .cfa -312 + ^ x25: .cfa -304 + ^ x26: .cfa -296 + ^ x27: .cfa -288 + ^ x28: .cfa -280 + ^
+STACK CFI 26824 x19: x19 x20: x20
+STACK CFI 26828 x21: x21 x22: x22
+STACK CFI 2682c x23: x23 x24: x24
+STACK CFI 26830 x25: x25 x26: x26
+STACK CFI 26834 x27: x27 x28: x28
+STACK CFI 26838 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2683c 28 .cfa: sp 0 + .ra: x30
+STACK CFI 26840 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 26848 .cfa: x29 32 +
+STACK CFI 2684c x19: .cfa -16 + ^
+STACK CFI 2685c x19: x19
+STACK CFI 26860 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26984 124 .cfa: sp 0 + .ra: x30
+STACK CFI 26988 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 26990 .cfa: x29 80 +
+STACK CFI 2699c x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI 26a98 x19: x19 x20: x20
+STACK CFI 26a9c x21: x21 x22: x22
+STACK CFI 26aa0 x23: x23
+STACK CFI 26aa4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26aa8 88 .cfa: sp 0 + .ra: x30
+STACK CFI 26aac .cfa: sp 336 + .ra: .cfa -328 + ^ x29: .cfa -336 + ^
+STACK CFI 26ab4 .cfa: x29 336 +
+STACK CFI 26ab8 x19: .cfa -320 + ^ x20: .cfa -312 + ^
+STACK CFI 26ac0 x21: .cfa -304 + ^
+STACK CFI 26b20 x21: x21
+STACK CFI 26b28 x19: x19 x20: x20
+STACK CFI 26b2c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26b30 114 .cfa: sp 0 + .ra: x30
+STACK CFI 26b34 .cfa: sp 224 + .ra: .cfa -216 + ^ x29: .cfa -224 + ^
+STACK CFI 26b38 .cfa: x29 224 +
+STACK CFI 26b3c x19: .cfa -208 + ^ x20: .cfa -200 + ^
+STACK CFI 26b48 x21: .cfa -192 + ^ x22: .cfa -184 + ^ x23: .cfa -176 + ^
+STACK CFI 26c30 x23: x23
+STACK CFI 26c38 x19: x19 x20: x20
+STACK CFI 26c3c x21: x21 x22: x22
+STACK CFI 26c40 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26c44 44 .cfa: sp 0 + .ra: x30
+STACK CFI 26c48 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 26c4c .cfa: x29 32 +
+STACK CFI 26c58 x19: .cfa -16 + ^
+STACK CFI 26c80 x19: x19
+STACK CFI 26c84 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26c88 9c .cfa: sp 0 + .ra: x30
+STACK CFI 26c8c .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 26c90 .cfa: x29 160 +
+STACK CFI 26c98 x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^
+STACK CFI 26d18 x19: x19 x20: x20
+STACK CFI 26d1c x21: x21 x22: x22
+STACK CFI 26d20 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26f1c 5c .cfa: sp 0 + .ra: x30
+STACK CFI 26f20 .cfa: sp 336 + .ra: .cfa -328 + ^ x29: .cfa -336 + ^
+STACK CFI 26f28 .cfa: x29 336 +
+STACK CFI 26f2c x19: .cfa -320 + ^ x20: .cfa -312 + ^
+STACK CFI 26f34 x21: .cfa -304 + ^
+STACK CFI 26f68 x21: x21
+STACK CFI 26f70 x19: x19 x20: x20
+STACK CFI 26f74 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2744c 134 .cfa: sp 0 + .ra: x30
+STACK CFI 27450 .cfa: sp 224 + .ra: .cfa -216 + ^ x29: .cfa -224 + ^
+STACK CFI 27454 .cfa: x29 224 +
+STACK CFI 27460 x19: .cfa -208 + ^ x20: .cfa -200 + ^ x21: .cfa -192 + ^ x22: .cfa -184 + ^ x23: .cfa -176 + ^
+STACK CFI 27570 x23: x23
+STACK CFI 27574 x19: x19 x20: x20
+STACK CFI 27578 x21: x21 x22: x22
+STACK CFI 2757c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 39040 354 .cfa: sp 0 + .ra: x30
+STACK CFI 39044 .cfa: sp 4096 +
+STACK CFI 3904c .cfa: sp 5504 +
+STACK CFI 39050 .cfa: sp 5600 + .ra: .cfa -5592 + ^ x29: .cfa -5600 + ^
+STACK CFI 39054 .cfa: x29 5600 +
+STACK CFI 39058 x19: .cfa -5584 + ^ x20: .cfa -5576 + ^
+STACK CFI 39060 x21: .cfa -5568 + ^ x22: .cfa -5560 + ^
+STACK CFI 39074 x23: .cfa -5552 + ^ x24: .cfa -5544 + ^ x25: .cfa -5536 + ^ x26: .cfa -5528 + ^ x27: .cfa -5520 + ^ x28: .cfa -5512 + ^
+STACK CFI 39374 x19: x19 x20: x20
+STACK CFI 39378 x21: x21 x22: x22
+STACK CFI 3937c x23: x23 x24: x24
+STACK CFI 39380 x25: x25 x26: x26
+STACK CFI 39384 x27: x27 x28: x28
+STACK CFI 39388 .cfa: sp 5504 + .ra: .ra x29: x29
+STACK CFI 3938c .cfa: sp 4096 +
+STACK CFI 39390 .cfa: sp 4000 +
+STACK CFI INIT 39394 360 .cfa: sp 0 + .ra: x30
+STACK CFI 39398 .cfa: sp 4096 +
+STACK CFI 393a0 .cfa: sp 5504 +
+STACK CFI 393a4 .cfa: sp 5600 + .ra: .cfa -5592 + ^ x29: .cfa -5600 + ^
+STACK CFI 393a8 .cfa: x29 5600 +
+STACK CFI 393ac x19: .cfa -5584 + ^ x20: .cfa -5576 + ^
+STACK CFI 393b4 x21: .cfa -5568 + ^ x22: .cfa -5560 + ^
+STACK CFI 393c8 x23: .cfa -5552 + ^ x24: .cfa -5544 + ^ x25: .cfa -5536 + ^ x26: .cfa -5528 + ^ x27: .cfa -5520 + ^ x28: .cfa -5512 + ^
+STACK CFI 396d4 x19: x19 x20: x20
+STACK CFI 396d8 x21: x21 x22: x22
+STACK CFI 396dc x23: x23 x24: x24
+STACK CFI 396e0 x25: x25 x26: x26
+STACK CFI 396e4 x27: x27 x28: x28
+STACK CFI 396e8 .cfa: sp 5504 + .ra: .ra x29: x29
+STACK CFI 396ec .cfa: sp 4096 +
+STACK CFI 396f0 .cfa: sp 4000 +
+STACK CFI INIT 26f78 9c .cfa: sp 0 + .ra: x30
+STACK CFI 26f7c .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 26f80 .cfa: x29 160 +
+STACK CFI 26f88 x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^
+STACK CFI 27008 x19: x19 x20: x20
+STACK CFI 2700c x21: x21 x22: x22
+STACK CFI 27010 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 28074 5c .cfa: sp 0 + .ra: x30
+STACK CFI 28078 .cfa: sp 336 + .ra: .cfa -328 + ^ x29: .cfa -336 + ^
+STACK CFI 28080 .cfa: x29 336 +
+STACK CFI 28084 x19: .cfa -320 + ^ x20: .cfa -312 + ^
+STACK CFI 2808c x21: .cfa -304 + ^
+STACK CFI 280c0 x21: x21
+STACK CFI 280c8 x19: x19 x20: x20
+STACK CFI 280cc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 28208 9c .cfa: sp 0 + .ra: x30
+STACK CFI 2820c .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 28210 .cfa: x29 160 +
+STACK CFI 28218 x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^
+STACK CFI 28298 x19: x19 x20: x20
+STACK CFI 2829c x21: x21 x22: x22
+STACK CFI 282a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 279ec 5c .cfa: sp 0 + .ra: x30
+STACK CFI 279f0 .cfa: sp 336 + .ra: .cfa -328 + ^ x29: .cfa -336 + ^
+STACK CFI 279f8 .cfa: x29 336 +
+STACK CFI 279fc x19: .cfa -320 + ^ x20: .cfa -312 + ^
+STACK CFI 27a04 x21: .cfa -304 + ^
+STACK CFI 27a38 x21: x21
+STACK CFI 27a40 x19: x19 x20: x20
+STACK CFI 27a44 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 27d70 5c .cfa: sp 0 + .ra: x30
+STACK CFI 27d74 .cfa: sp 336 + .ra: .cfa -328 + ^ x29: .cfa -336 + ^
+STACK CFI 27d7c .cfa: x29 336 +
+STACK CFI 27d80 x19: .cfa -320 + ^ x20: .cfa -312 + ^
+STACK CFI 27d88 x21: .cfa -304 + ^
+STACK CFI 27dbc x21: x21
+STACK CFI 27dc4 x19: x19 x20: x20
+STACK CFI 27dc8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 27dcc c0 .cfa: sp 0 + .ra: x30
+STACK CFI 27dd0 .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 27dd4 .cfa: x29 160 +
+STACK CFI 27de0 x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^ x23: .cfa -112 + ^ x24: .cfa -104 + ^
+STACK CFI 27e7c x19: x19 x20: x20
+STACK CFI 27e80 x21: x21 x22: x22
+STACK CFI 27e84 x23: x23 x24: x24
+STACK CFI 27e88 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 396f4 f0 .cfa: sp 0 + .ra: x30
+STACK CFI 396f8 .cfa: sp 416 + .ra: .cfa -408 + ^ x29: .cfa -416 + ^
+STACK CFI 396fc .cfa: x29 416 +
+STACK CFI 39704 x21: .cfa -384 + ^ x22: .cfa -376 + ^ x23: .cfa -368 + ^
+STACK CFI 3970c x19: .cfa -400 + ^ x20: .cfa -392 + ^
+STACK CFI 397d4 x23: x23
+STACK CFI 397d8 x19: x19 x20: x20
+STACK CFI 397dc x21: x21 x22: x22
+STACK CFI 397e0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 282a4 28 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 282cc 20 .cfa: sp 0 + .ra: x30
+STACK CFI 282d0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 282d8 .cfa: x29 32 +
+STACK CFI 282e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 282ec 20 .cfa: sp 0 + .ra: x30
+STACK CFI 282f0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 282f8 .cfa: x29 32 +
+STACK CFI 28308 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2830c 110 .cfa: sp 0 + .ra: x30
+STACK CFI 28310 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2831c .cfa: x29 32 +
+STACK CFI 28398 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2839c .cfa: x29 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI INIT 2841c 124 .cfa: sp 0 + .ra: x30
+STACK CFI 28420 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 28424 .cfa: x29 80 +
+STACK CFI 28430 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^
+STACK CFI 28530 x19: x19 x20: x20
+STACK CFI 28534 x21: x21 x22: x22
+STACK CFI 28538 x23: x23 x24: x24
+STACK CFI 2853c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 9c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI 10 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI 8c x21: x21
+STACK CFI 94 x19: x19 x20: x20
+STACK CFI 98 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 28714 b8 .cfa: sp 0 + .ra: x30
+STACK CFI 28718 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 2871c .cfa: x29 48 +
+STACK CFI 28724 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 287c0 x21: x21
+STACK CFI 287c4 x19: x19 x20: x20
+STACK CFI 287c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 287cc 10c .cfa: sp 0 + .ra: x30
+STACK CFI 287d0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 287d8 .cfa: x29 64 +
+STACK CFI 287e0 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x23: .cfa -16 + ^
+STACK CFI 287e8 x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 288c8 x19: x19 x20: x20
+STACK CFI 288cc x21: x21 x22: x22
+STACK CFI 288d0 x23: x23
+STACK CFI 288d4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 285f0 60 .cfa: sp 0 + .ra: x30
+STACK CFI 285f4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 285f8 .cfa: x29 32 +
+STACK CFI 285fc x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 28648 x19: x19 x20: x20
+STACK CFI 2864c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 28650 c4 .cfa: sp 0 + .ra: x30
+STACK CFI 28654 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 2865c .cfa: x29 48 +
+STACK CFI 28664 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 28708 x19: x19 x20: x20
+STACK CFI 2870c x21: x21
+STACK CFI 28710 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 288d8 f0 .cfa: sp 0 + .ra: x30
+STACK CFI 288dc .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 288e4 .cfa: x29 64 +
+STACK CFI 288f0 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 289b8 x23: x23
+STACK CFI 289bc x19: x19 x20: x20
+STACK CFI 289c0 x21: x21 x22: x22
+STACK CFI 289c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 21b98 2b8 .cfa: sp 0 + .ra: x30
+STACK CFI 21b9c .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 21ba0 .cfa: x29 64 +
+STACK CFI 21ba8 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 21e3c x21: x21
+STACK CFI 21e44 x19: x19 x20: x20
+STACK CFI 21e48 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 397e4 10b4 .cfa: sp 0 + .ra: x30
+STACK CFI 397e8 .cfa: sp 4096 +
+STACK CFI 397ec .cfa: sp 6320 +
+STACK CFI 397f0 .cfa: sp 6416 + .ra: .cfa -6408 + ^ x29: .cfa -6416 + ^
+STACK CFI 397f4 .cfa: x29 6416 +
+STACK CFI 397f8 x19: .cfa -6400 + ^ x20: .cfa -6392 + ^
+STACK CFI 3980c x21: .cfa -6384 + ^ x22: .cfa -6376 + ^ x27: .cfa -6336 + ^
+STACK CFI 3981c x23: .cfa -6368 + ^ x24: .cfa -6360 + ^ x25: .cfa -6352 + ^ x26: .cfa -6344 + ^
+STACK CFI 3a878 x19: x19 x20: x20
+STACK CFI 3a87c x21: x21 x22: x22
+STACK CFI 3a880 x23: x23 x24: x24
+STACK CFI 3a884 x25: x25 x26: x26
+STACK CFI 3a888 x27: x27
+STACK CFI 3a88c .cfa: sp 6320 + .ra: .ra x29: x29
+STACK CFI 3a890 .cfa: sp 4096 +
+STACK CFI 3a894 .cfa: sp 4000 +
+STACK CFI INIT 3a898 aac .cfa: sp 0 + .ra: x30
+STACK CFI 3a89c .cfa: sp 4096 +
+STACK CFI 3a8a0 .cfa: sp 6320 +
+STACK CFI 3a8a4 .cfa: sp 6416 + .ra: .cfa -6408 + ^ x29: .cfa -6416 + ^
+STACK CFI 3a8a8 .cfa: x29 6416 +
+STACK CFI 3a8ac x19: .cfa -6400 + ^ x20: .cfa -6392 + ^
+STACK CFI 3a8c8 x21: .cfa -6384 + ^ x22: .cfa -6376 + ^ x23: .cfa -6368 + ^ x24: .cfa -6360 + ^ x25: .cfa -6352 + ^ x26: .cfa -6344 + ^ x27: .cfa -6336 + ^ x28: .cfa -6328 + ^
+STACK CFI 3b324 x19: x19 x20: x20
+STACK CFI 3b328 x21: x21 x22: x22
+STACK CFI 3b32c x23: x23 x24: x24
+STACK CFI 3b330 x25: x25 x26: x26
+STACK CFI 3b334 x27: x27 x28: x28
+STACK CFI 3b338 .cfa: sp 6320 + .ra: .ra x29: x29
+STACK CFI 3b33c .cfa: sp 4096 +
+STACK CFI 3b340 .cfa: sp 4000 +
+STACK CFI INIT 3b344 b84 .cfa: sp 0 + .ra: x30
+STACK CFI 3b348 .cfa: sp 4096 +
+STACK CFI 3b34c .cfa: sp 6000 +
+STACK CFI 3b350 .cfa: sp 6112 + .ra: .cfa -6104 + ^ x29: .cfa -6112 + ^
+STACK CFI 3b354 .cfa: x29 6112 +
+STACK CFI 3b358 x19: .cfa -6096 + ^ x20: .cfa -6088 + ^
+STACK CFI 3b364 v8: .cfa -6016 + ^
+STACK CFI 3b370 x21: .cfa -6080 + ^ x22: .cfa -6072 + ^ x27: .cfa -6032 + ^ x28: .cfa -6024 + ^
+STACK CFI 3b388 x23: .cfa -6064 + ^ x24: .cfa -6056 + ^ x25: .cfa -6048 + ^ x26: .cfa -6040 + ^
+STACK CFI 3b7d4 v8: v8
+STACK CFI 3b7d8 x19: x19 x20: x20
+STACK CFI 3b7dc x21: x21 x22: x22
+STACK CFI 3b7e0 x23: x23 x24: x24
+STACK CFI 3b7e4 x25: x25 x26: x26
+STACK CFI 3b7e8 x27: x27 x28: x28
+STACK CFI 3b7ec .cfa: sp 6000 + .ra: .ra x29: x29
+STACK CFI 3b7f0 .cfa: sp 4096 +
+STACK CFI 3b7f4 .cfa: sp 3984 +
+STACK CFI 3b7f8 .cfa: x29 6112 + .ra: .cfa -6104 + ^ v8: .cfa -6016 + ^ x19: .cfa -6096 + ^ x20: .cfa -6088 + ^ x21: .cfa -6080 + ^ x22: .cfa -6072 + ^ x23: .cfa -6064 + ^ x24: .cfa -6056 + ^ x25: .cfa -6048 + ^ x26: .cfa -6040 + ^ x27: .cfa -6032 + ^ x28: .cfa -6024 + ^ x29: .cfa -6112 + ^
+STACK CFI INIT 3bec8 3ac .cfa: sp 0 + .ra: x30
+STACK CFI 3becc .cfa: sp 4096 +
+STACK CFI 3bed4 .cfa: sp 5536 +
+STACK CFI 3bed8 .cfa: sp 5632 + .ra: .cfa -5624 + ^ x29: .cfa -5632 + ^
+STACK CFI 3bedc .cfa: x29 5632 +
+STACK CFI 3bee0 x19: .cfa -5616 + ^ x20: .cfa -5608 + ^
+STACK CFI 3beec x21: .cfa -5600 + ^ x22: .cfa -5592 + ^ x27: .cfa -5552 + ^
+STACK CFI 3befc x23: .cfa -5584 + ^ x24: .cfa -5576 + ^ x25: .cfa -5568 + ^ x26: .cfa -5560 + ^
+STACK CFI 3c254 x19: x19 x20: x20
+STACK CFI 3c258 x21: x21 x22: x22
+STACK CFI 3c25c x23: x23 x24: x24
+STACK CFI 3c260 x25: x25 x26: x26
+STACK CFI 3c264 x27: x27
+STACK CFI 3c268 .cfa: sp 5536 + .ra: .ra x29: x29
+STACK CFI 3c26c .cfa: sp 4096 +
+STACK CFI 3c270 .cfa: sp 4000 +
+STACK CFI INIT 3c274 790 .cfa: sp 0 + .ra: x30
+STACK CFI 3c278 .cfa: sp 4096 +
+STACK CFI 3c280 .cfa: sp 5632 +
+STACK CFI 3c284 .cfa: sp 5728 + .ra: .cfa -5720 + ^ x29: .cfa -5728 + ^
+STACK CFI 3c288 .cfa: x29 5728 +
+STACK CFI 3c28c x19: .cfa -5712 + ^ x20: .cfa -5704 + ^
+STACK CFI 3c298 x21: .cfa -5696 + ^ x22: .cfa -5688 + ^ x27: .cfa -5648 + ^
+STACK CFI 3c2a8 x23: .cfa -5680 + ^ x24: .cfa -5672 + ^ x25: .cfa -5664 + ^ x26: .cfa -5656 + ^
+STACK CFI 3c9e4 x19: x19 x20: x20
+STACK CFI 3c9e8 x21: x21 x22: x22
+STACK CFI 3c9ec x23: x23 x24: x24
+STACK CFI 3c9f0 x25: x25 x26: x26
+STACK CFI 3c9f4 x27: x27
+STACK CFI 3c9f8 .cfa: sp 5632 + .ra: .ra x29: x29
+STACK CFI 3c9fc .cfa: sp 4096 +
+STACK CFI 3ca00 .cfa: sp 4000 +
+STACK CFI INIT 3ca04 113c .cfa: sp 0 + .ra: x30
+STACK CFI 3ca08 .cfa: sp 544 +
+STACK CFI 3ca10 .cfa: sp 688 + .ra: .cfa -680 + ^ x29: .cfa -688 + ^
+STACK CFI 3ca14 .cfa: x29 688 +
+STACK CFI 3ca1c v8: .cfa -592 + ^ v9: .cfa -584 + ^ x19: .cfa -672 + ^ x20: .cfa -664 + ^
+STACK CFI 3ca2c v10: .cfa -576 + ^ v11: .cfa -568 + ^ v12: .cfa -560 + ^ v13: .cfa -552 + ^ x23: .cfa -640 + ^ x24: .cfa -632 + ^
+STACK CFI 3ca44 x21: .cfa -656 + ^ x22: .cfa -648 + ^ x27: .cfa -608 + ^ x28: .cfa -600 + ^
+STACK CFI 3ca50 x25: .cfa -624 + ^ x26: .cfa -616 + ^
+STACK CFI 3cdf4 v8: v8 v9: v9
+STACK CFI 3cdf8 x19: x19 x20: x20
+STACK CFI 3cdfc x21: x21 x22: x22
+STACK CFI 3ce00 v10: v10 v11: v11
+STACK CFI 3ce04 x23: x23 x24: x24
+STACK CFI 3ce08 v12: v12 v13: v13
+STACK CFI 3ce0c x25: x25 x26: x26
+STACK CFI 3ce10 x27: x27 x28: x28
+STACK CFI 3ce14 .cfa: sp 544 + .ra: .ra x29: x29
+STACK CFI 3ce18 .cfa: sp 400 +
+STACK CFI 3ce1c .cfa: x29 688 + .ra: .cfa -680 + ^ v10: .cfa -576 + ^ v11: .cfa -568 + ^ v12: .cfa -560 + ^ v13: .cfa -552 + ^ v8: .cfa -592 + ^ v9: .cfa -584 + ^ x19: .cfa -672 + ^ x20: .cfa -664 + ^ x21: .cfa -656 + ^ x22: .cfa -648 + ^ x23: .cfa -640 + ^ x24: .cfa -632 + ^ x25: .cfa -624 + ^ x26: .cfa -616 + ^ x27: .cfa -608 + ^ x28: .cfa -600 + ^ x29: .cfa -688 + ^
+STACK CFI INIT 2eb40 18 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 24844 40 .cfa: sp 0 + .ra: x30
+STACK CFI 24848 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 24854 .cfa: x29 32 +
+STACK CFI 24858 x19: .cfa -16 + ^
+STACK CFI 2487c x19: x19
+STACK CFI 24880 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 248e8 30 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 24d50 60 .cfa: sp 0 + .ra: x30
+STACK CFI 24d54 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 24d60 .cfa: x29 32 +
+STACK CFI 24d64 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 24da8 x19: x19 x20: x20
+STACK CFI 24dac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 54 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^
+STACK CFI 4c x19: x19
+STACK CFI 50 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25040 64 .cfa: sp 0 + .ra: x30
+STACK CFI 25044 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 25048 .cfa: x29 48 +
+STACK CFI 2504c x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 25058 x21: .cfa -16 + ^
+STACK CFI 25098 x19: x19 x20: x20
+STACK CFI 2509c x21: x21
+STACK CFI 250a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25b54 5c .cfa: sp 0 + .ra: x30
+STACK CFI 25b58 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 25b5c .cfa: x29 16 +
+STACK CFI 25bac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 170 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI c .cfa: x29 80 +
+STACK CFI 18 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI 160 x23: x23
+STACK CFI 164 x19: x19 x20: x20
+STACK CFI 168 x21: x21 x22: x22
+STACK CFI 16c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25d14 90 .cfa: sp 0 + .ra: x30
+STACK CFI 25d18 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 25d1c .cfa: x29 48 +
+STACK CFI 25d20 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 25d2c x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 25d98 x19: x19 x20: x20
+STACK CFI 25d9c x21: x21 x22: x22
+STACK CFI 25da0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 3db40 390 .cfa: sp 0 + .ra: x30
+STACK CFI 3db44 .cfa: sp 4096 +
+STACK CFI 3db4c .cfa: sp 4208 +
+STACK CFI 3db50 .cfa: sp 4272 + .ra: .cfa -4264 + ^ x29: .cfa -4272 + ^
+STACK CFI 3db54 .cfa: x29 4272 +
+STACK CFI 3db58 x19: .cfa -4256 + ^ x20: .cfa -4248 + ^
+STACK CFI 3db64 x21: .cfa -4240 + ^ x22: .cfa -4232 + ^
+STACK CFI 3db6c x23: .cfa -4224 + ^
+STACK CFI 3deb4 x23: x23
+STACK CFI 3debc x19: x19 x20: x20
+STACK CFI 3dec0 x21: x21 x22: x22
+STACK CFI 3dec4 .cfa: sp 4208 + .ra: .ra x29: x29
+STACK CFI 3dec8 .cfa: sp 4096 +
+STACK CFI 3decc .cfa: sp 4032 +
+STACK CFI INIT 2351c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23520 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23524 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2354c 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23554 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23558 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 3ded0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 3ded4 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 3ded8 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 3dedc 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 3dee0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 3dee4 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 3dee8 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 3deec 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 3def0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 3def4 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235c8 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235d0 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235ec 24 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23610 6c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2367c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23680 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23688 40 .cfa: sp 0 + .ra: x30
+STACK CFI 2368c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 23690 .cfa: x29 32 +
+STACK CFI 23694 x19: .cfa -16 + ^
+STACK CFI 236c0 x19: x19
+STACK CFI 236c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 236c8 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 3def8 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 3defc 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 3df00 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 3df04 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 3df08 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 3df0c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 3df10 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 3df14 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 3df18 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 3df1c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 237ec a8 .cfa: sp 0 + .ra: x30
+STACK CFI 237f0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 237f4 .cfa: x29 64 +
+STACK CFI 23800 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 23884 x23: x23
+STACK CFI 23888 x19: x19 x20: x20
+STACK CFI 2388c x21: x21 x22: x22
+STACK CFI 23890 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23738 b4 .cfa: sp 0 + .ra: x30
+STACK CFI 2373c .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 23740 .cfa: x29 64 +
+STACK CFI 2374c x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 237dc x23: x23
+STACK CFI 237e0 x19: x19 x20: x20
+STACK CFI 237e4 x21: x21 x22: x22
+STACK CFI 237e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23894 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 238a8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 238ac .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 238b0 .cfa: x29 32 +
+STACK CFI 238b4 x19: .cfa -16 + ^
+STACK CFI 238c4 x19: x19
+STACK CFI 238c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 238cc 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 238e0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 238e4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 238e8 .cfa: x29 32 +
+STACK CFI 238ec x19: .cfa -16 + ^
+STACK CFI 238fc x19: x19
+STACK CFI 23900 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 3df20 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 3df34 24 .cfa: sp 0 + .ra: x30
+STACK CFI 3df38 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 3df3c .cfa: x29 32 +
+STACK CFI 3df40 x19: .cfa -16 + ^
+STACK CFI 3df50 x19: x19
+STACK CFI 3df54 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 3df58 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 3df6c 24 .cfa: sp 0 + .ra: x30
+STACK CFI 3df70 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 3df74 .cfa: x29 32 +
+STACK CFI 3df78 x19: .cfa -16 + ^
+STACK CFI 3df88 x19: x19
+STACK CFI 3df8c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 3df90 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 3dfa4 24 .cfa: sp 0 + .ra: x30
+STACK CFI 3dfa8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 3dfac .cfa: x29 32 +
+STACK CFI 3dfb0 x19: .cfa -16 + ^
+STACK CFI 3dfc0 x19: x19
+STACK CFI 3dfc4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 3dfc8 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 3dfdc 24 .cfa: sp 0 + .ra: x30
+STACK CFI 3dfe0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 3dfe4 .cfa: x29 32 +
+STACK CFI 3dfe8 x19: .cfa -16 + ^
+STACK CFI 3dff8 x19: x19
+STACK CFI 3dffc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 3e000 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 3e014 24 .cfa: sp 0 + .ra: x30
+STACK CFI 3e018 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 3e01c .cfa: x29 32 +
+STACK CFI 3e020 x19: .cfa -16 + ^
+STACK CFI 3e030 x19: x19
+STACK CFI 3e034 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 3e038 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 3e04c 24 .cfa: sp 0 + .ra: x30
+STACK CFI 3e050 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 3e054 .cfa: x29 32 +
+STACK CFI 3e058 x19: .cfa -16 + ^
+STACK CFI 3e068 x19: x19
+STACK CFI 3e06c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 3e070 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 3e084 24 .cfa: sp 0 + .ra: x30
+STACK CFI 3e088 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 3e08c .cfa: x29 32 +
+STACK CFI 3e090 x19: .cfa -16 + ^
+STACK CFI 3e0a0 x19: x19
+STACK CFI 3e0a4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 3e0a8 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 3e0bc 24 .cfa: sp 0 + .ra: x30
+STACK CFI 3e0c0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 3e0c4 .cfa: x29 32 +
+STACK CFI 3e0c8 x19: .cfa -16 + ^
+STACK CFI 3e0d8 x19: x19
+STACK CFI 3e0dc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 3e0e0 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 3e0f4 24 .cfa: sp 0 + .ra: x30
+STACK CFI 3e0f8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 3e0fc .cfa: x29 32 +
+STACK CFI 3e100 x19: .cfa -16 + ^
+STACK CFI 3e110 x19: x19
+STACK CFI 3e114 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 3e118 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 3e12c 24 .cfa: sp 0 + .ra: x30
+STACK CFI 3e130 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 3e134 .cfa: x29 32 +
+STACK CFI 3e138 x19: .cfa -16 + ^
+STACK CFI 3e148 x19: x19
+STACK CFI 3e14c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 3e150 3c .cfa: sp 0 + .ra: x30
+STACK CFI 3e154 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 3e15c .cfa: x29 32 +
+STACK CFI 3e160 x19: .cfa -16 + ^
+STACK CFI 3e184 x19: x19
+STACK CFI 3e188 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 3e18c 3c .cfa: sp 0 + .ra: x30
+STACK CFI 3e190 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 3e198 .cfa: x29 32 +
+STACK CFI 3e19c x19: .cfa -16 + ^
+STACK CFI 3e1c0 x19: x19
+STACK CFI 3e1c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 3e1c8 3c .cfa: sp 0 + .ra: x30
+STACK CFI 3e1cc .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 3e1d4 .cfa: x29 32 +
+STACK CFI 3e1d8 x19: .cfa -16 + ^
+STACK CFI 3e1fc x19: x19
+STACK CFI 3e200 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 3e204 3c .cfa: sp 0 + .ra: x30
+STACK CFI 3e208 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 3e210 .cfa: x29 32 +
+STACK CFI 3e214 x19: .cfa -16 + ^
+STACK CFI 3e238 x19: x19
+STACK CFI 3e23c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 3e240 3c .cfa: sp 0 + .ra: x30
+STACK CFI 3e244 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 3e24c .cfa: x29 32 +
+STACK CFI 3e250 x19: .cfa -16 + ^
+STACK CFI 3e274 x19: x19
+STACK CFI 3e278 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 3e27c 3c .cfa: sp 0 + .ra: x30
+STACK CFI 3e280 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 3e288 .cfa: x29 32 +
+STACK CFI 3e28c x19: .cfa -16 + ^
+STACK CFI 3e2b0 x19: x19
+STACK CFI 3e2b4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 3e2b8 3c .cfa: sp 0 + .ra: x30
+STACK CFI 3e2bc .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 3e2c4 .cfa: x29 32 +
+STACK CFI 3e2c8 x19: .cfa -16 + ^
+STACK CFI 3e2ec x19: x19
+STACK CFI 3e2f0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 3e2f4 3c .cfa: sp 0 + .ra: x30
+STACK CFI 3e2f8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 3e300 .cfa: x29 32 +
+STACK CFI 3e304 x19: .cfa -16 + ^
+STACK CFI 3e328 x19: x19
+STACK CFI 3e32c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 3e330 3c .cfa: sp 0 + .ra: x30
+STACK CFI 3e334 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 3e33c .cfa: x29 32 +
+STACK CFI 3e340 x19: .cfa -16 + ^
+STACK CFI 3e364 x19: x19
+STACK CFI 3e368 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 3e36c 3c .cfa: sp 0 + .ra: x30
+STACK CFI 3e370 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 3e378 .cfa: x29 32 +
+STACK CFI 3e37c x19: .cfa -16 + ^
+STACK CFI 3e3a0 x19: x19
+STACK CFI 3e3a4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24794 b0 .cfa: sp 0 + .ra: x30
+STACK CFI 24798 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 2479c .cfa: x29 64 +
+STACK CFI 247a8 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 24834 x23: x23
+STACK CFI 24838 x19: x19 x20: x20
+STACK CFI 2483c x21: x21 x22: x22
+STACK CFI 24840 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 3e3a8 1cc .cfa: sp 0 + .ra: x30
+STACK CFI 3e3ac .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 3e3b0 .cfa: x29 96 +
+STACK CFI 3e3c4 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^ x25: .cfa -32 + ^ x26: .cfa -24 + ^ x27: .cfa -16 + ^
+STACK CFI 3e55c x27: x27
+STACK CFI 3e560 x19: x19 x20: x20
+STACK CFI 3e564 x21: x21 x22: x22
+STACK CFI 3e568 x23: x23 x24: x24
+STACK CFI 3e56c x25: x25 x26: x26
+STACK CFI 3e570 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2eb40 18 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 24844 40 .cfa: sp 0 + .ra: x30
+STACK CFI 24848 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 24854 .cfa: x29 32 +
+STACK CFI 24858 x19: .cfa -16 + ^
+STACK CFI 2487c x19: x19
+STACK CFI 24880 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24884 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2fe54 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2fe64 68 .cfa: sp 0 + .ra: x30
+STACK CFI 2fe68 .cfa: sp 4096 +
+STACK CFI 2fe7c .cfa: sp 4128 + .ra: .cfa -4120 + ^ x29: .cfa -4128 + ^
+STACK CFI 2fe80 .cfa: x29 4128 +
+STACK CFI 2fe84 x19: .cfa -4112 + ^ x20: .cfa -4104 + ^
+STACK CFI 2fec0 x19: x19 x20: x20
+STACK CFI 2fec4 .cfa: sp 4096 + .ra: .ra x29: x29
+STACK CFI 2fec8 .cfa: sp 4064 +
+STACK CFI INIT 3e574 ac .cfa: sp 0 + .ra: x30
+STACK CFI 3e578 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 3e57c .cfa: x29 48 +
+STACK CFI 3e580 x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 3e58c x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 3e600 x19: x19 x20: x20
+STACK CFI 3e604 x21: x21 x22: x22
+STACK CFI 3e608 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 3e610 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^ x29: .cfa -48 + ^
+STACK CFI 3e614 x19: x19 x20: x20
+STACK CFI 3e618 x21: x21 x22: x22
+STACK CFI 3e61c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 248a0 48 .cfa: sp 0 + .ra: x30
+STACK CFI 248a4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 248a8 .cfa: x29 32 +
+STACK CFI 248ac x19: .cfa -16 + ^
+STACK CFI 248e0 x19: x19
+STACK CFI 248e4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 248e8 30 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 24940 34 .cfa: sp 0 + .ra: x30
+STACK CFI 24948 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2494c .cfa: x29 32 +
+STACK CFI 24954 x19: .cfa -16 + ^
+STACK CFI 2496c x19: x19
+STACK CFI 24970 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24974 24 .cfa: sp 0 + .ra: x30
+STACK CFI 24978 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2497c .cfa: x29 32 +
+STACK CFI 24980 x19: .cfa -16 + ^
+STACK CFI 24990 x19: x19
+STACK CFI 24994 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 54 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^
+STACK CFI 40 x19: x19
+STACK CFI 44 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 48 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI 4c x19: x19
+STACK CFI 50 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 3e620 1ac .cfa: sp 0 + .ra: x30
+STACK CFI 3e624 .cfa: sp 640 +
+STACK CFI 3e630 .cfa: sp 704 + .ra: .cfa -696 + ^ x29: .cfa -704 + ^
+STACK CFI 3e634 .cfa: x29 704 +
+STACK CFI 3e638 x21: .cfa -672 + ^ x22: .cfa -664 + ^
+STACK CFI 3e64c x19: .cfa -688 + ^ x20: .cfa -680 + ^ x23: .cfa -656 + ^
+STACK CFI 3e7b8 x23: x23
+STACK CFI 3e7bc x19: x19 x20: x20
+STACK CFI 3e7c0 x21: x21 x22: x22
+STACK CFI 3e7c4 .cfa: sp 640 + .ra: .ra x29: x29
+STACK CFI 3e7c8 .cfa: sp 576 +
+STACK CFI INIT 3e7cc 2fc .cfa: sp 0 + .ra: x30
+STACK CFI 3e7d0 .cfa: sp 640 +
+STACK CFI 3e7dc .cfa: sp 720 + .ra: .cfa -712 + ^ x29: .cfa -720 + ^
+STACK CFI 3e7e0 .cfa: x29 720 +
+STACK CFI 3e7e4 x23: .cfa -672 + ^ x24: .cfa -664 + ^
+STACK CFI 3e7f8 x19: .cfa -704 + ^ x20: .cfa -696 + ^ x21: .cfa -688 + ^ x22: .cfa -680 + ^ x25: .cfa -656 + ^
+STACK CFI 3eab0 x25: x25
+STACK CFI 3eab4 x19: x19 x20: x20
+STACK CFI 3eab8 x21: x21 x22: x22
+STACK CFI 3eabc x23: x23 x24: x24
+STACK CFI 3eac0 .cfa: sp 640 + .ra: .ra x29: x29
+STACK CFI 3eac4 .cfa: sp 560 +
+STACK CFI INIT 3eac8 420 .cfa: sp 0 + .ra: x30
+STACK CFI 3eacc .cfa: sp 640 +
+STACK CFI 3ead8 .cfa: sp 736 + .ra: .cfa -728 + ^ x29: .cfa -736 + ^
+STACK CFI 3eadc .cfa: x29 736 +
+STACK CFI 3eae0 x23: .cfa -688 + ^ x24: .cfa -680 + ^
+STACK CFI 3eaf8 x19: .cfa -720 + ^ x20: .cfa -712 + ^ x21: .cfa -704 + ^ x22: .cfa -696 + ^ x25: .cfa -672 + ^ x26: .cfa -664 + ^ x27: .cfa -656 + ^
+STACK CFI 3eecc x27: x27
+STACK CFI 3eed0 x19: x19 x20: x20
+STACK CFI 3eed4 x21: x21 x22: x22
+STACK CFI 3eed8 x23: x23 x24: x24
+STACK CFI 3eedc x25: x25 x26: x26
+STACK CFI 3eee0 .cfa: sp 640 + .ra: .ra x29: x29
+STACK CFI 3eee4 .cfa: sp 544 +
+STACK CFI INIT 3eee8 2fc .cfa: sp 0 + .ra: x30
+STACK CFI 3eeec .cfa: sp 640 +
+STACK CFI 3eef8 .cfa: sp 720 + .ra: .cfa -712 + ^ x29: .cfa -720 + ^
+STACK CFI 3eefc .cfa: x29 720 +
+STACK CFI 3ef00 x23: .cfa -672 + ^ x24: .cfa -664 + ^
+STACK CFI 3ef14 x19: .cfa -704 + ^ x20: .cfa -696 + ^ x21: .cfa -688 + ^ x22: .cfa -680 + ^ x25: .cfa -656 + ^
+STACK CFI 3f1cc x25: x25
+STACK CFI 3f1d0 x19: x19 x20: x20
+STACK CFI 3f1d4 x21: x21 x22: x22
+STACK CFI 3f1d8 x23: x23 x24: x24
+STACK CFI 3f1dc .cfa: sp 640 + .ra: .ra x29: x29
+STACK CFI 3f1e0 .cfa: sp 560 +
+STACK CFI INIT 3f1e4 2fc .cfa: sp 0 + .ra: x30
+STACK CFI 3f1e8 .cfa: sp 640 +
+STACK CFI 3f1f4 .cfa: sp 720 + .ra: .cfa -712 + ^ x29: .cfa -720 + ^
+STACK CFI 3f1f8 .cfa: x29 720 +
+STACK CFI 3f1fc x23: .cfa -672 + ^ x24: .cfa -664 + ^
+STACK CFI 3f210 x19: .cfa -704 + ^ x20: .cfa -696 + ^ x21: .cfa -688 + ^ x22: .cfa -680 + ^ x25: .cfa -656 + ^
+STACK CFI 3f4c8 x25: x25
+STACK CFI 3f4cc x19: x19 x20: x20
+STACK CFI 3f4d0 x21: x21 x22: x22
+STACK CFI 3f4d4 x23: x23 x24: x24
+STACK CFI 3f4d8 .cfa: sp 640 + .ra: .ra x29: x29
+STACK CFI 3f4dc .cfa: sp 560 +
+STACK CFI INIT 3f4e0 2fc .cfa: sp 0 + .ra: x30
+STACK CFI 3f4e4 .cfa: sp 640 +
+STACK CFI 3f4f0 .cfa: sp 720 + .ra: .cfa -712 + ^ x29: .cfa -720 + ^
+STACK CFI 3f4f4 .cfa: x29 720 +
+STACK CFI 3f4f8 x23: .cfa -672 + ^ x24: .cfa -664 + ^
+STACK CFI 3f50c x19: .cfa -704 + ^ x20: .cfa -696 + ^ x21: .cfa -688 + ^ x22: .cfa -680 + ^ x25: .cfa -656 + ^
+STACK CFI 3f7c4 x25: x25
+STACK CFI 3f7c8 x19: x19 x20: x20
+STACK CFI 3f7cc x21: x21 x22: x22
+STACK CFI 3f7d0 x23: x23 x24: x24
+STACK CFI 3f7d4 .cfa: sp 640 + .ra: .ra x29: x29
+STACK CFI 3f7d8 .cfa: sp 560 +
+STACK CFI INIT 3f7dc 43c .cfa: sp 0 + .ra: x30
+STACK CFI 3f7e0 .cfa: sp 640 +
+STACK CFI 3f7ec .cfa: sp 768 + .ra: .cfa -760 + ^ x29: .cfa -768 + ^
+STACK CFI 3f7f0 .cfa: x29 768 +
+STACK CFI 3f7f8 v8: .cfa -672 + ^ v9: .cfa -664 + ^ x23: .cfa -720 + ^ x24: .cfa -712 + ^
+STACK CFI 3f814 v10: .cfa -656 + ^ x19: .cfa -752 + ^ x20: .cfa -744 + ^ x21: .cfa -736 + ^ x22: .cfa -728 + ^ x25: .cfa -704 + ^ x26: .cfa -696 + ^ x27: .cfa -688 + ^ x28: .cfa -680 + ^
+STACK CFI 3fbf4 v8: v8 v9: v9
+STACK CFI 3fbf8 x19: x19 x20: x20
+STACK CFI 3fbfc x21: x21 x22: x22
+STACK CFI 3fc00 x23: x23 x24: x24
+STACK CFI 3fc04 x25: x25 x26: x26
+STACK CFI 3fc08 x27: x27 x28: x28
+STACK CFI 3fc0c v10: v10
+STACK CFI 3fc10 .cfa: sp 640 + .ra: .ra x29: x29
+STACK CFI 3fc14 .cfa: sp 512 +
+STACK CFI INIT 3fc18 2fc .cfa: sp 0 + .ra: x30
+STACK CFI 3fc1c .cfa: sp 640 +
+STACK CFI 3fc28 .cfa: sp 720 + .ra: .cfa -712 + ^ x29: .cfa -720 + ^
+STACK CFI 3fc2c .cfa: x29 720 +
+STACK CFI 3fc30 x23: .cfa -672 + ^ x24: .cfa -664 + ^
+STACK CFI 3fc44 x19: .cfa -704 + ^ x20: .cfa -696 + ^ x21: .cfa -688 + ^ x22: .cfa -680 + ^ x25: .cfa -656 + ^
+STACK CFI 3fefc x25: x25
+STACK CFI 3ff00 x19: x19 x20: x20
+STACK CFI 3ff04 x21: x21 x22: x22
+STACK CFI 3ff08 x23: x23 x24: x24
+STACK CFI 3ff0c .cfa: sp 640 + .ra: .ra x29: x29
+STACK CFI 3ff10 .cfa: sp 560 +
+STACK CFI INIT 24a00 fc .cfa: sp 0 + .ra: x30
+STACK CFI 24a04 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 24a0c .cfa: x29 96 +
+STACK CFI 24a18 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^
+STACK CFI 24aec x21: x21 x22: x22
+STACK CFI 24af0 x19: x19 x20: x20
+STACK CFI 24af4 x23: x23 x24: x24
+STACK CFI 24af8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24afc b4 .cfa: sp 0 + .ra: x30
+STACK CFI 24b00 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 24b04 .cfa: x29 48 +
+STACK CFI 24b08 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 24b18 x21: .cfa -16 + ^
+STACK CFI 24ba4 x21: x21
+STACK CFI 24ba8 x19: x19 x20: x20
+STACK CFI 24bac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24bb0 b0 .cfa: sp 0 + .ra: x30
+STACK CFI 24bb4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 24bb8 .cfa: x29 48 +
+STACK CFI 24bc0 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 24c40 x21: x21
+STACK CFI 24c58 x19: x19 x20: x20
+STACK CFI 24c5c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 54 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^
+STACK CFI 4c x19: x19
+STACK CFI 50 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 250a4 58 .cfa: sp 0 + .ra: x30
+STACK CFI 250a8 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 250ac .cfa: x29 48 +
+STACK CFI 250b0 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 250b8 x21: .cfa -16 + ^
+STACK CFI 250f0 x19: x19 x20: x20
+STACK CFI 250f4 x21: x21
+STACK CFI 250f8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 f4 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 18 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI e8 x19: x19 x20: x20
+STACK CFI ec x21: x21 x22: x22
+STACK CFI f0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 c8 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI 10 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI b4 x21: x21
+STACK CFI c0 x19: x19 x20: x20
+STACK CFI c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 251f0 8c .cfa: sp 0 + .ra: x30
+STACK CFI 251f4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 251f8 .cfa: x29 48 +
+STACK CFI 251fc x19: .cfa -32 + ^
+STACK CFI 25268 x19: x19
+STACK CFI 2526c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 25270 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 25274 x19: x19
+STACK CFI 25278 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2527c c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25288 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25298 24 .cfa: sp 0 + .ra: x30
+STACK CFI 2529c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 252a0 .cfa: x29 32 +
+STACK CFI 252a4 x19: .cfa -16 + ^
+STACK CFI 252b4 x19: x19
+STACK CFI 252b8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 252bc 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 252cc c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 252d8 8c .cfa: sp 0 + .ra: x30
+STACK CFI 252dc .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 252e0 .cfa: x29 48 +
+STACK CFI 252e4 x19: .cfa -32 + ^
+STACK CFI 25350 x19: x19
+STACK CFI 25354 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 25358 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 2535c x19: x19
+STACK CFI 25360 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25364 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25370 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25380 24 .cfa: sp 0 + .ra: x30
+STACK CFI 25384 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 25388 .cfa: x29 32 +
+STACK CFI 2538c x19: .cfa -16 + ^
+STACK CFI 2539c x19: x19
+STACK CFI 253a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 253a4 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 253b4 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 253c0 e0 .cfa: sp 0 + .ra: x30
+STACK CFI 253c4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 253c8 .cfa: x29 48 +
+STACK CFI 253cc x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 2548c x19: x19 x20: x20
+STACK CFI 25490 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 25494 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x29: .cfa -48 + ^
+STACK CFI 25498 x19: x19 x20: x20
+STACK CFI 2549c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 254a0 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 254ac cc .cfa: sp 0 + .ra: x30
+STACK CFI 254b0 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 254b4 .cfa: x29 48 +
+STACK CFI 254b8 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 25564 x19: x19 x20: x20
+STACK CFI 25568 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2556c .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x29: .cfa -48 + ^
+STACK CFI 25570 x19: x19 x20: x20
+STACK CFI 25574 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25578 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25584 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25590 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25598 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255a8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 255ac .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 255b0 .cfa: x29 32 +
+STACK CFI 255b4 x19: .cfa -16 + ^
+STACK CFI 255c4 x19: x19
+STACK CFI 255c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 255cc 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255d4 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255e4 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255f0 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255f8 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25608 24 .cfa: sp 0 + .ra: x30
+STACK CFI 2560c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 25610 .cfa: x29 32 +
+STACK CFI 25614 x19: .cfa -16 + ^
+STACK CFI 25624 x19: x19
+STACK CFI 25628 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2562c 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25634 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 74 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^
+STACK CFI 6c x19: x19
+STACK CFI 70 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25b54 5c .cfa: sp 0 + .ra: x30
+STACK CFI 25b58 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 25b5c .cfa: x29 16 +
+STACK CFI 25bac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 13c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI 10 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 130 x21: x21
+STACK CFI 134 x19: x19 x20: x20
+STACK CFI 138 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 3483c e8 .cfa: sp 0 + .ra: x30
+STACK CFI 34840 .cfa: sp 480 + .ra: .cfa -472 + ^ x29: .cfa -480 + ^
+STACK CFI 34844 .cfa: x29 480 +
+STACK CFI 34848 x19: .cfa -464 + ^ x20: .cfa -456 + ^
+STACK CFI 34854 x23: .cfa -432 + ^ x24: .cfa -424 + ^ x25: .cfa -416 + ^
+STACK CFI 34870 x21: .cfa -448 + ^ x22: .cfa -440 + ^
+STACK CFI 3490c x25: x25
+STACK CFI 34914 x19: x19 x20: x20
+STACK CFI 34918 x21: x21 x22: x22
+STACK CFI 3491c x23: x23 x24: x24
+STACK CFI 34920 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 3ff14 3b8 .cfa: sp 0 + .ra: x30
+STACK CFI 3ff18 .cfa: sp 656 +
+STACK CFI 3ff24 .cfa: sp 736 + .ra: .cfa -728 + ^ x29: .cfa -736 + ^
+STACK CFI 3ff28 .cfa: x29 736 +
+STACK CFI 3ff2c x23: .cfa -688 + ^ x24: .cfa -680 + ^
+STACK CFI 3ff40 x19: .cfa -720 + ^ x20: .cfa -712 + ^ x21: .cfa -704 + ^ x22: .cfa -696 + ^ x25: .cfa -672 + ^
+STACK CFI 402b4 x25: x25
+STACK CFI 402b8 x19: x19 x20: x20
+STACK CFI 402bc x21: x21 x22: x22
+STACK CFI 402c0 x23: x23 x24: x24
+STACK CFI 402c4 .cfa: sp 656 + .ra: .ra x29: x29
+STACK CFI 402c8 .cfa: sp 576 +
+STACK CFI INIT 402cc 3c0 .cfa: sp 0 + .ra: x30
+STACK CFI 402d0 .cfa: sp 656 +
+STACK CFI 402dc .cfa: sp 736 + .ra: .cfa -728 + ^ x29: .cfa -736 + ^
+STACK CFI 402e0 .cfa: x29 736 +
+STACK CFI 402e4 x23: .cfa -688 + ^ x24: .cfa -680 + ^
+STACK CFI 402f8 x19: .cfa -720 + ^ x20: .cfa -712 + ^ x21: .cfa -704 + ^ x22: .cfa -696 + ^ x25: .cfa -672 + ^
+STACK CFI 40674 x25: x25
+STACK CFI 40678 x19: x19 x20: x20
+STACK CFI 4067c x21: x21 x22: x22
+STACK CFI 40680 x23: x23 x24: x24
+STACK CFI 40684 .cfa: sp 656 + .ra: .ra x29: x29
+STACK CFI 40688 .cfa: sp 576 +
+STACK CFI INIT 0 114 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI c .cfa: x29 80 +
+STACK CFI 18 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI 104 x23: x23
+STACK CFI 108 x19: x19 x20: x20
+STACK CFI 10c x21: x21 x22: x22
+STACK CFI 110 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26984 124 .cfa: sp 0 + .ra: x30
+STACK CFI 26988 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 26990 .cfa: x29 80 +
+STACK CFI 2699c x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI 26a98 x19: x19 x20: x20
+STACK CFI 26a9c x21: x21 x22: x22
+STACK CFI 26aa0 x23: x23
+STACK CFI 26aa4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 282a4 28 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 282cc 20 .cfa: sp 0 + .ra: x30
+STACK CFI 282d0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 282d8 .cfa: x29 32 +
+STACK CFI 282e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 282ec 20 .cfa: sp 0 + .ra: x30
+STACK CFI 282f0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 282f8 .cfa: x29 32 +
+STACK CFI 28308 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2830c 110 .cfa: sp 0 + .ra: x30
+STACK CFI 28310 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2831c .cfa: x29 32 +
+STACK CFI 28398 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2839c .cfa: x29 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI INIT 2841c 124 .cfa: sp 0 + .ra: x30
+STACK CFI 28420 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 28424 .cfa: x29 80 +
+STACK CFI 28430 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^
+STACK CFI 28530 x19: x19 x20: x20
+STACK CFI 28534 x21: x21 x22: x22
+STACK CFI 28538 x23: x23 x24: x24
+STACK CFI 2853c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 9c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI 10 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI 8c x21: x21
+STACK CFI 94 x19: x19 x20: x20
+STACK CFI 98 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 7c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 74 x19: x19 x20: x20
+STACK CFI 78 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 28650 c4 .cfa: sp 0 + .ra: x30
+STACK CFI 28654 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 2865c .cfa: x29 48 +
+STACK CFI 28664 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 28708 x19: x19 x20: x20
+STACK CFI 2870c x21: x21
+STACK CFI 28710 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 d0 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI 10 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI c4 x21: x21
+STACK CFI c8 x19: x19 x20: x20
+STACK CFI cc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 287cc 10c .cfa: sp 0 + .ra: x30
+STACK CFI 287d0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 287d8 .cfa: x29 64 +
+STACK CFI 287e0 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x23: .cfa -16 + ^
+STACK CFI 287e8 x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 288c8 x19: x19 x20: x20
+STACK CFI 288cc x21: x21 x22: x22
+STACK CFI 288d0 x23: x23
+STACK CFI 288d4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 288d8 f0 .cfa: sp 0 + .ra: x30
+STACK CFI 288dc .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 288e4 .cfa: x29 64 +
+STACK CFI 288f0 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 289b8 x23: x23
+STACK CFI 289bc x19: x19 x20: x20
+STACK CFI 289c0 x21: x21 x22: x22
+STACK CFI 289c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 21e50 358 .cfa: sp 0 + .ra: x30
+STACK CFI 21e54 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 21e58 .cfa: x29 64 +
+STACK CFI 21e60 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 22194 x21: x21
+STACK CFI 2219c x19: x19 x20: x20
+STACK CFI 221a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2351c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23520 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23524 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2354c 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23554 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23558 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 4068c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 40690 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 40694 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235c8 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235d0 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235ec 24 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23610 6c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2367c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23680 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23688 40 .cfa: sp 0 + .ra: x30
+STACK CFI 2368c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 23690 .cfa: x29 32 +
+STACK CFI 23694 x19: .cfa -16 + ^
+STACK CFI 236c0 x19: x19
+STACK CFI 236c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 236c8 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 40698 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 4069c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 406a0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 237ec a8 .cfa: sp 0 + .ra: x30
+STACK CFI 237f0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 237f4 .cfa: x29 64 +
+STACK CFI 23800 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 23884 x23: x23
+STACK CFI 23888 x19: x19 x20: x20
+STACK CFI 2388c x21: x21 x22: x22
+STACK CFI 23890 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23738 b4 .cfa: sp 0 + .ra: x30
+STACK CFI 2373c .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 23740 .cfa: x29 64 +
+STACK CFI 2374c x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 237dc x23: x23
+STACK CFI 237e0 x19: x19 x20: x20
+STACK CFI 237e4 x21: x21 x22: x22
+STACK CFI 237e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23894 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 238a8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 238ac .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 238b0 .cfa: x29 32 +
+STACK CFI 238b4 x19: .cfa -16 + ^
+STACK CFI 238c4 x19: x19
+STACK CFI 238c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 238cc 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 238e0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 238e4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 238e8 .cfa: x29 32 +
+STACK CFI 238ec x19: .cfa -16 + ^
+STACK CFI 238fc x19: x19
+STACK CFI 23900 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 406a4 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 406b8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 406bc .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 406c0 .cfa: x29 32 +
+STACK CFI 406c4 x19: .cfa -16 + ^
+STACK CFI 406d4 x19: x19
+STACK CFI 406d8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 406dc 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 406f0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 406f4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 406f8 .cfa: x29 32 +
+STACK CFI 406fc x19: .cfa -16 + ^
+STACK CFI 4070c x19: x19
+STACK CFI 40710 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 40714 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 40728 24 .cfa: sp 0 + .ra: x30
+STACK CFI 4072c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 40730 .cfa: x29 32 +
+STACK CFI 40734 x19: .cfa -16 + ^
+STACK CFI 40744 x19: x19
+STACK CFI 40748 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4074c 3c .cfa: sp 0 + .ra: x30
+STACK CFI 40750 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 40758 .cfa: x29 32 +
+STACK CFI 4075c x19: .cfa -16 + ^
+STACK CFI 40780 x19: x19
+STACK CFI 40784 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 40788 3c .cfa: sp 0 + .ra: x30
+STACK CFI 4078c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 40794 .cfa: x29 32 +
+STACK CFI 40798 x19: .cfa -16 + ^
+STACK CFI 407bc x19: x19
+STACK CFI 407c0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 407c4 3c .cfa: sp 0 + .ra: x30
+STACK CFI 407c8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 407d0 .cfa: x29 32 +
+STACK CFI 407d4 x19: .cfa -16 + ^
+STACK CFI 407f8 x19: x19
+STACK CFI 407fc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24794 b0 .cfa: sp 0 + .ra: x30
+STACK CFI 24798 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 2479c .cfa: x29 64 +
+STACK CFI 247a8 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 24834 x23: x23
+STACK CFI 24838 x19: x19 x20: x20
+STACK CFI 2483c x21: x21 x22: x22
+STACK CFI 24840 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2eb40 18 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 24844 40 .cfa: sp 0 + .ra: x30
+STACK CFI 24848 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 24854 .cfa: x29 32 +
+STACK CFI 24858 x19: .cfa -16 + ^
+STACK CFI 2487c x19: x19
+STACK CFI 24880 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24884 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 248a0 48 .cfa: sp 0 + .ra: x30
+STACK CFI 248a4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 248a8 .cfa: x29 32 +
+STACK CFI 248ac x19: .cfa -16 + ^
+STACK CFI 248e0 x19: x19
+STACK CFI 248e4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 248e8 30 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 24940 34 .cfa: sp 0 + .ra: x30
+STACK CFI 24948 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2494c .cfa: x29 32 +
+STACK CFI 24954 x19: .cfa -16 + ^
+STACK CFI 2496c x19: x19
+STACK CFI 24970 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24974 24 .cfa: sp 0 + .ra: x30
+STACK CFI 24978 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2497c .cfa: x29 32 +
+STACK CFI 24980 x19: .cfa -16 + ^
+STACK CFI 24990 x19: x19
+STACK CFI 24994 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 54 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^
+STACK CFI 40 x19: x19
+STACK CFI 44 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 48 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI 4c x19: x19
+STACK CFI 50 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24a00 fc .cfa: sp 0 + .ra: x30
+STACK CFI 24a04 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 24a0c .cfa: x29 96 +
+STACK CFI 24a18 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^
+STACK CFI 24aec x21: x21 x22: x22
+STACK CFI 24af0 x19: x19 x20: x20
+STACK CFI 24af4 x23: x23 x24: x24
+STACK CFI 24af8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24afc b4 .cfa: sp 0 + .ra: x30
+STACK CFI 24b00 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 24b04 .cfa: x29 48 +
+STACK CFI 24b08 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 24b18 x21: .cfa -16 + ^
+STACK CFI 24ba4 x21: x21
+STACK CFI 24ba8 x19: x19 x20: x20
+STACK CFI 24bac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24bb0 b0 .cfa: sp 0 + .ra: x30
+STACK CFI 24bb4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 24bb8 .cfa: x29 48 +
+STACK CFI 24bc0 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 24c40 x21: x21
+STACK CFI 24c58 x19: x19 x20: x20
+STACK CFI 24c5c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24d14 3c .cfa: sp 0 + .ra: x30
+STACK CFI 24d18 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 24d1c .cfa: x29 16 +
+STACK CFI 24d4c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 54 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^
+STACK CFI 4c x19: x19
+STACK CFI 50 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 250a4 58 .cfa: sp 0 + .ra: x30
+STACK CFI 250a8 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 250ac .cfa: x29 48 +
+STACK CFI 250b0 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 250b8 x21: .cfa -16 + ^
+STACK CFI 250f0 x19: x19 x20: x20
+STACK CFI 250f4 x21: x21
+STACK CFI 250f8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 c8 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI 10 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI b4 x21: x21
+STACK CFI c0 x19: x19 x20: x20
+STACK CFI c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 f4 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 18 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI e8 x19: x19 x20: x20
+STACK CFI ec x21: x21 x22: x22
+STACK CFI f0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 251f0 8c .cfa: sp 0 + .ra: x30
+STACK CFI 251f4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 251f8 .cfa: x29 48 +
+STACK CFI 251fc x19: .cfa -32 + ^
+STACK CFI 25268 x19: x19
+STACK CFI 2526c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 25270 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 25274 x19: x19
+STACK CFI 25278 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2527c c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25288 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25298 24 .cfa: sp 0 + .ra: x30
+STACK CFI 2529c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 252a0 .cfa: x29 32 +
+STACK CFI 252a4 x19: .cfa -16 + ^
+STACK CFI 252b4 x19: x19
+STACK CFI 252b8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 252bc 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 252cc c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 252d8 8c .cfa: sp 0 + .ra: x30
+STACK CFI 252dc .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 252e0 .cfa: x29 48 +
+STACK CFI 252e4 x19: .cfa -32 + ^
+STACK CFI 25350 x19: x19
+STACK CFI 25354 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 25358 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 2535c x19: x19
+STACK CFI 25360 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25364 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25370 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25380 24 .cfa: sp 0 + .ra: x30
+STACK CFI 25384 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 25388 .cfa: x29 32 +
+STACK CFI 2538c x19: .cfa -16 + ^
+STACK CFI 2539c x19: x19
+STACK CFI 253a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 253a4 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 253b4 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 253c0 e0 .cfa: sp 0 + .ra: x30
+STACK CFI 253c4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 253c8 .cfa: x29 48 +
+STACK CFI 253cc x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 2548c x19: x19 x20: x20
+STACK CFI 25490 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 25494 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x29: .cfa -48 + ^
+STACK CFI 25498 x19: x19 x20: x20
+STACK CFI 2549c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 254a0 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 254ac cc .cfa: sp 0 + .ra: x30
+STACK CFI 254b0 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 254b4 .cfa: x29 48 +
+STACK CFI 254b8 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 25564 x19: x19 x20: x20
+STACK CFI 25568 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2556c .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x29: .cfa -48 + ^
+STACK CFI 25570 x19: x19 x20: x20
+STACK CFI 25574 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25578 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25584 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25590 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25598 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255a8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 255ac .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 255b0 .cfa: x29 32 +
+STACK CFI 255b4 x19: .cfa -16 + ^
+STACK CFI 255c4 x19: x19
+STACK CFI 255c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 255cc 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255d4 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255e4 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255f0 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255f8 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25608 24 .cfa: sp 0 + .ra: x30
+STACK CFI 2560c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 25610 .cfa: x29 32 +
+STACK CFI 25614 x19: .cfa -16 + ^
+STACK CFI 25624 x19: x19
+STACK CFI 25628 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2562c 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25634 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25644 5c .cfa: sp 0 + .ra: x30
+STACK CFI 25648 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2564c .cfa: x29 32 +
+STACK CFI 25650 x19: .cfa -16 + ^
+STACK CFI 25698 x19: x19
+STACK CFI 2569c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 256a0 78 .cfa: sp 0 + .ra: x30
+STACK CFI 256a4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 256ac .cfa: x29 32 +
+STACK CFI 256b0 x19: .cfa -16 + ^
+STACK CFI 25710 x19: x19
+STACK CFI 25714 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25718 50 .cfa: sp 0 + .ra: x30
+STACK CFI 2571c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 25720 .cfa: x29 32 +
+STACK CFI 25724 x19: .cfa -16 + ^
+STACK CFI 25754 x19: x19
+STACK CFI 25758 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2575c .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI 25760 x19: x19
+STACK CFI 25764 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 140 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI 10 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 134 x19: x19 x20: x20
+STACK CFI 138 x21: x21 x22: x22
+STACK CFI 13c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 cc .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI 10 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI bc x21: x21
+STACK CFI c4 x19: x19 x20: x20
+STACK CFI c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 40800 50 .cfa: sp 0 + .ra: x30
+STACK CFI 40804 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 40810 .cfa: x29 32 +
+STACK CFI 40814 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 4081c x19: x19 x20: x20
+STACK CFI 40824 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 4082c .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x20: .cfa -8 + ^ x29: .cfa -32 + ^
+STACK CFI 40848 x19: x19 x20: x20
+STACK CFI 4084c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 40850 50 .cfa: sp 0 + .ra: x30
+STACK CFI 40854 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 40860 .cfa: x29 32 +
+STACK CFI 40864 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 4086c x19: x19 x20: x20
+STACK CFI 40874 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 4087c .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x20: .cfa -8 + ^ x29: .cfa -32 + ^
+STACK CFI 40898 x19: x19 x20: x20
+STACK CFI 4089c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25b28 2c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25b54 5c .cfa: sp 0 + .ra: x30
+STACK CFI 25b58 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 25b5c .cfa: x29 16 +
+STACK CFI 25bac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 154 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI c .cfa: x29 80 +
+STACK CFI 18 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI 144 x23: x23
+STACK CFI 148 x19: x19 x20: x20
+STACK CFI 14c x21: x21 x22: x22
+STACK CFI 150 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 2ac .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 272 + .ra: .cfa -264 + ^ x29: .cfa -272 + ^
+STACK CFI c .cfa: x29 272 +
+STACK CFI 10 x19: .cfa -256 + ^ x20: .cfa -248 + ^
+STACK CFI 20 x21: .cfa -240 + ^ x22: .cfa -232 + ^ x23: .cfa -224 + ^ x24: .cfa -216 + ^ x25: .cfa -208 + ^
+STACK CFI 298 x19: x19 x20: x20
+STACK CFI 29c x21: x21 x22: x22
+STACK CFI 2a0 x23: x23 x24: x24
+STACK CFI 2a4 x25: x25
+STACK CFI 2a8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 cc .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI 10 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI bc x21: x21
+STACK CFI c4 x19: x19 x20: x20
+STACK CFI c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 408a0 e8 .cfa: sp 0 + .ra: x30
+STACK CFI 408a4 .cfa: sp 480 + .ra: .cfa -472 + ^ x29: .cfa -480 + ^
+STACK CFI 408a8 .cfa: x29 480 +
+STACK CFI 408ac x19: .cfa -464 + ^ x20: .cfa -456 + ^
+STACK CFI 408b8 x23: .cfa -432 + ^ x24: .cfa -424 + ^ x25: .cfa -416 + ^
+STACK CFI 408d4 x21: .cfa -448 + ^ x22: .cfa -440 + ^
+STACK CFI 40970 x25: x25
+STACK CFI 40978 x19: x19 x20: x20
+STACK CFI 4097c x21: x21 x22: x22
+STACK CFI 40980 x23: x23 x24: x24
+STACK CFI 40984 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 40988 e8 .cfa: sp 0 + .ra: x30
+STACK CFI 4098c .cfa: sp 480 + .ra: .cfa -472 + ^ x29: .cfa -480 + ^
+STACK CFI 40990 .cfa: x29 480 +
+STACK CFI 40994 x19: .cfa -464 + ^ x20: .cfa -456 + ^
+STACK CFI 409a0 x23: .cfa -432 + ^ x24: .cfa -424 + ^ x25: .cfa -416 + ^
+STACK CFI 409bc x21: .cfa -448 + ^ x22: .cfa -440 + ^
+STACK CFI 40a58 x25: x25
+STACK CFI 40a60 x19: x19 x20: x20
+STACK CFI 40a64 x21: x21 x22: x22
+STACK CFI 40a68 x23: x23 x24: x24
+STACK CFI 40a6c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 40a70 50 .cfa: sp 0 + .ra: x30
+STACK CFI 40a74 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 40a78 .cfa: x29 48 +
+STACK CFI 40a80 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 40ab4 x19: x19 x20: x20
+STACK CFI 40ab8 x21: x21
+STACK CFI 40abc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 40ac0 3c .cfa: sp 0 + .ra: x30
+STACK CFI 40ac4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 40ac8 .cfa: x29 32 +
+STACK CFI 40ad0 x19: .cfa -16 + ^
+STACK CFI 40af4 x19: x19
+STACK CFI 40af8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 f4 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI c .cfa: x29 80 +
+STACK CFI 18 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI e4 x23: x23
+STACK CFI e8 x19: x19 x20: x20
+STACK CFI ec x21: x21 x22: x22
+STACK CFI f0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26440 8c .cfa: sp 0 + .ra: x30
+STACK CFI 26444 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 26448 .cfa: x29 64 +
+STACK CFI 2644c x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 2645c x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 264c0 x19: x19 x20: x20
+STACK CFI 264c4 x21: x21 x22: x22
+STACK CFI 264c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 264cc 370 .cfa: sp 0 + .ra: x30
+STACK CFI 264d0 .cfa: sp 368 + .ra: .cfa -360 + ^ x29: .cfa -368 + ^
+STACK CFI 264d4 .cfa: x29 368 +
+STACK CFI 264e8 x19: .cfa -352 + ^ x20: .cfa -344 + ^ x21: .cfa -336 + ^ x22: .cfa -328 + ^ x23: .cfa -320 + ^ x24: .cfa -312 + ^ x25: .cfa -304 + ^ x26: .cfa -296 + ^ x27: .cfa -288 + ^ x28: .cfa -280 + ^
+STACK CFI 26824 x19: x19 x20: x20
+STACK CFI 26828 x21: x21 x22: x22
+STACK CFI 2682c x23: x23 x24: x24
+STACK CFI 26830 x25: x25 x26: x26
+STACK CFI 26834 x27: x27 x28: x28
+STACK CFI 26838 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26984 124 .cfa: sp 0 + .ra: x30
+STACK CFI 26988 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 26990 .cfa: x29 80 +
+STACK CFI 2699c x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI 26a98 x19: x19 x20: x20
+STACK CFI 26a9c x21: x21 x22: x22
+STACK CFI 26aa0 x23: x23
+STACK CFI 26aa4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 31bb0 5c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 31c0c 5c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 31c68 124 .cfa: sp 0 + .ra: x30
+STACK CFI 31c6c .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 31c70 .cfa: x29 48 +
+STACK CFI 31c78 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 31ca0 x19: x19 x20: x20
+STACK CFI 31ca4 x21: x21 x22: x22
+STACK CFI 31ca8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 31cac .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^ x29: .cfa -48 + ^
+STACK CFI INIT 40afc 11c .cfa: sp 0 + .ra: x30
+STACK CFI 40b00 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 40b08 .cfa: x29 80 +
+STACK CFI 40b14 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI 40c08 x19: x19 x20: x20
+STACK CFI 40c0c x21: x21 x22: x22
+STACK CFI 40c10 x23: x23
+STACK CFI 40c14 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 40c18 118 .cfa: sp 0 + .ra: x30
+STACK CFI 40c1c .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 40c28 .cfa: x29 48 +
+STACK CFI 40c2c x19: .cfa -32 + ^
+STACK CFI 40d28 x19: x19
+STACK CFI 40d2c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 279ec 5c .cfa: sp 0 + .ra: x30
+STACK CFI 279f0 .cfa: sp 336 + .ra: .cfa -328 + ^ x29: .cfa -336 + ^
+STACK CFI 279f8 .cfa: x29 336 +
+STACK CFI 279fc x19: .cfa -320 + ^ x20: .cfa -312 + ^
+STACK CFI 27a04 x21: .cfa -304 + ^
+STACK CFI 27a38 x21: x21
+STACK CFI 27a40 x19: x19 x20: x20
+STACK CFI 27a44 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 27b7c 9c .cfa: sp 0 + .ra: x30
+STACK CFI 27b80 .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 27b84 .cfa: x29 160 +
+STACK CFI 27b8c x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^
+STACK CFI 27c0c x19: x19 x20: x20
+STACK CFI 27c10 x21: x21 x22: x22
+STACK CFI 27c14 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 40d30 3c8 .cfa: sp 0 + .ra: x30
+STACK CFI 40d34 .cfa: sp 192 + .ra: .cfa -184 + ^ x29: .cfa -192 + ^
+STACK CFI 40d38 .cfa: x29 192 +
+STACK CFI 40d3c x21: .cfa -160 + ^ x22: .cfa -152 + ^
+STACK CFI 40d50 x19: .cfa -176 + ^ x20: .cfa -168 + ^ x23: .cfa -144 + ^
+STACK CFI 410e8 x23: x23
+STACK CFI 410ec x19: x19 x20: x20
+STACK CFI 410f0 x21: x21 x22: x22
+STACK CFI 410f4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 410f8 1258 .cfa: sp 0 + .ra: x30
+STACK CFI 410fc .cfa: sp 416 + .ra: .cfa -408 + ^ x29: .cfa -416 + ^
+STACK CFI 41100 .cfa: x29 416 +
+STACK CFI 41104 x25: .cfa -352 + ^ x26: .cfa -344 + ^
+STACK CFI 41120 v8: .cfa -320 + ^ x19: .cfa -400 + ^ x20: .cfa -392 + ^ x21: .cfa -384 + ^ x22: .cfa -376 + ^ x23: .cfa -368 + ^ x24: .cfa -360 + ^ x27: .cfa -336 + ^ x28: .cfa -328 + ^
+STACK CFI 42334 v8: v8
+STACK CFI 42338 x19: x19 x20: x20
+STACK CFI 4233c x21: x21 x22: x22
+STACK CFI 42340 x23: x23 x24: x24
+STACK CFI 42344 x25: x25 x26: x26
+STACK CFI 42348 x27: x27 x28: x28
+STACK CFI 4234c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 28074 5c .cfa: sp 0 + .ra: x30
+STACK CFI 28078 .cfa: sp 336 + .ra: .cfa -328 + ^ x29: .cfa -336 + ^
+STACK CFI 28080 .cfa: x29 336 +
+STACK CFI 28084 x19: .cfa -320 + ^ x20: .cfa -312 + ^
+STACK CFI 2808c x21: .cfa -304 + ^
+STACK CFI 280c0 x21: x21
+STACK CFI 280c8 x19: x19 x20: x20
+STACK CFI 280cc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 28208 9c .cfa: sp 0 + .ra: x30
+STACK CFI 2820c .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 28210 .cfa: x29 160 +
+STACK CFI 28218 x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^
+STACK CFI 28298 x19: x19 x20: x20
+STACK CFI 2829c x21: x21 x22: x22
+STACK CFI 282a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2816c 9c .cfa: sp 0 + .ra: x30
+STACK CFI 28170 .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 28174 .cfa: x29 160 +
+STACK CFI 2817c x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^
+STACK CFI 281fc x19: x19 x20: x20
+STACK CFI 28200 x21: x21 x22: x22
+STACK CFI 28204 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 134 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 384 + .ra: .cfa -376 + ^ x29: .cfa -384 + ^
+STACK CFI c .cfa: x29 384 +
+STACK CFI 10 x19: .cfa -368 + ^ x20: .cfa -360 + ^
+STACK CFI 20 x21: .cfa -352 + ^ x22: .cfa -344 + ^
+STACK CFI 28 x23: .cfa -336 + ^ x24: .cfa -328 + ^
+STACK CFI 124 x19: x19 x20: x20
+STACK CFI 128 x21: x21 x22: x22
+STACK CFI 12c x23: x23 x24: x24
+STACK CFI 130 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26c88 9c .cfa: sp 0 + .ra: x30
+STACK CFI 26c8c .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 26c90 .cfa: x29 160 +
+STACK CFI 26c98 x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^
+STACK CFI 26d18 x19: x19 x20: x20
+STACK CFI 26d1c x21: x21 x22: x22
+STACK CFI 26d20 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 42350 b1c .cfa: sp 0 + .ra: x30
+STACK CFI 42354 .cfa: sp 464 +
+STACK CFI 42358 .cfa: sp 624 + .ra: .cfa -616 + ^ x29: .cfa -624 + ^
+STACK CFI 4235c .cfa: x29 624 +
+STACK CFI 42364 v8: .cfa -528 + ^ v9: .cfa -520 + ^ x25: .cfa -560 + ^ x26: .cfa -552 + ^
+STACK CFI 42388 v10: .cfa -512 + ^ v11: .cfa -504 + ^ v12: .cfa -496 + ^ v13: .cfa -488 + ^ v14: .cfa -480 + ^ v15: .cfa -472 + ^ x19: .cfa -608 + ^ x20: .cfa -600 + ^ x21: .cfa -592 + ^ x22: .cfa -584 + ^ x23: .cfa -576 + ^ x24: .cfa -568 + ^ x27: .cfa -544 + ^ x28: .cfa -536 + ^
+STACK CFI 42e40 v8: v8 v9: v9
+STACK CFI 42e44 x19: x19 x20: x20
+STACK CFI 42e48 x21: x21 x22: x22
+STACK CFI 42e4c v10: v10 v11: v11
+STACK CFI 42e50 x23: x23 x24: x24
+STACK CFI 42e54 v12: v12 v13: v13
+STACK CFI 42e58 x25: x25 x26: x26
+STACK CFI 42e5c v14: v14 v15: v15
+STACK CFI 42e60 x27: x27 x28: x28
+STACK CFI 42e64 .cfa: sp 464 + .ra: .ra x29: x29
+STACK CFI 42e68 .cfa: sp 304 +
+STACK CFI INIT 282a4 28 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 282cc 20 .cfa: sp 0 + .ra: x30
+STACK CFI 282d0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 282d8 .cfa: x29 32 +
+STACK CFI 282e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 282ec 20 .cfa: sp 0 + .ra: x30
+STACK CFI 282f0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 282f8 .cfa: x29 32 +
+STACK CFI 28308 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2830c 110 .cfa: sp 0 + .ra: x30
+STACK CFI 28310 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2831c .cfa: x29 32 +
+STACK CFI 28398 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2839c .cfa: x29 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI INIT 2841c 124 .cfa: sp 0 + .ra: x30
+STACK CFI 28420 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 28424 .cfa: x29 80 +
+STACK CFI 28430 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^
+STACK CFI 28530 x19: x19 x20: x20
+STACK CFI 28534 x21: x21 x22: x22
+STACK CFI 28538 x23: x23 x24: x24
+STACK CFI 2853c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 9c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI 10 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI 8c x21: x21
+STACK CFI 94 x19: x19 x20: x20
+STACK CFI 98 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 285f0 60 .cfa: sp 0 + .ra: x30
+STACK CFI 285f4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 285f8 .cfa: x29 32 +
+STACK CFI 285fc x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 28648 x19: x19 x20: x20
+STACK CFI 2864c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 28650 c4 .cfa: sp 0 + .ra: x30
+STACK CFI 28654 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 2865c .cfa: x29 48 +
+STACK CFI 28664 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 28708 x19: x19 x20: x20
+STACK CFI 2870c x21: x21
+STACK CFI 28710 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 28714 b8 .cfa: sp 0 + .ra: x30
+STACK CFI 28718 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 2871c .cfa: x29 48 +
+STACK CFI 28724 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 287c0 x21: x21
+STACK CFI 287c4 x19: x19 x20: x20
+STACK CFI 287c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 287cc 10c .cfa: sp 0 + .ra: x30
+STACK CFI 287d0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 287d8 .cfa: x29 64 +
+STACK CFI 287e0 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x23: .cfa -16 + ^
+STACK CFI 287e8 x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 288c8 x19: x19 x20: x20
+STACK CFI 288cc x21: x21 x22: x22
+STACK CFI 288d0 x23: x23
+STACK CFI 288d4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 288d8 f0 .cfa: sp 0 + .ra: x30
+STACK CFI 288dc .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 288e4 .cfa: x29 64 +
+STACK CFI 288f0 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 289b8 x23: x23
+STACK CFI 289bc x19: x19 x20: x20
+STACK CFI 289c0 x21: x21 x22: x22
+STACK CFI 289c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 221a8 128 .cfa: sp 0 + .ra: x30
+STACK CFI 221ac .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 221b0 .cfa: x29 64 +
+STACK CFI 221b8 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 222bc x21: x21
+STACK CFI 222c4 x19: x19 x20: x20
+STACK CFI 222c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2351c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23520 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23524 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2354c 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23554 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23558 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 42e6c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 42e70 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 42e74 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 42e78 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 42e7c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 42e80 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 42e84 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 42e88 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235c8 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235d0 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235ec 24 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23610 6c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2367c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23680 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23688 40 .cfa: sp 0 + .ra: x30
+STACK CFI 2368c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 23690 .cfa: x29 32 +
+STACK CFI 23694 x19: .cfa -16 + ^
+STACK CFI 236c0 x19: x19
+STACK CFI 236c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 236c8 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23738 b4 .cfa: sp 0 + .ra: x30
+STACK CFI 2373c .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 23740 .cfa: x29 64 +
+STACK CFI 2374c x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 237dc x23: x23
+STACK CFI 237e0 x19: x19 x20: x20
+STACK CFI 237e4 x21: x21 x22: x22
+STACK CFI 237e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 42e8c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 42e90 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 42e94 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 42e98 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 42e9c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 42ea0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 42ea4 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 42ea8 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23894 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 238a8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 238ac .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 238b0 .cfa: x29 32 +
+STACK CFI 238b4 x19: .cfa -16 + ^
+STACK CFI 238c4 x19: x19
+STACK CFI 238c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 237ec a8 .cfa: sp 0 + .ra: x30
+STACK CFI 237f0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 237f4 .cfa: x29 64 +
+STACK CFI 23800 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 23884 x23: x23
+STACK CFI 23888 x19: x19 x20: x20
+STACK CFI 2388c x21: x21 x22: x22
+STACK CFI 23890 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 238cc 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 238e0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 238e4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 238e8 .cfa: x29 32 +
+STACK CFI 238ec x19: .cfa -16 + ^
+STACK CFI 238fc x19: x19
+STACK CFI 23900 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 42eac 48 .cfa: sp 0 + .ra: x30
+STACK CFI 42eb0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 42eb8 .cfa: x29 32 +
+STACK CFI 42ebc x19: .cfa -16 + ^
+STACK CFI 42eec x19: x19
+STACK CFI 42ef0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 42ef4 48 .cfa: sp 0 + .ra: x30
+STACK CFI 42ef8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 42f00 .cfa: x29 32 +
+STACK CFI 42f04 x19: .cfa -16 + ^
+STACK CFI 42f34 x19: x19
+STACK CFI 42f38 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 42f3c 48 .cfa: sp 0 + .ra: x30
+STACK CFI 42f40 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 42f48 .cfa: x29 32 +
+STACK CFI 42f4c x19: .cfa -16 + ^
+STACK CFI 42f7c x19: x19
+STACK CFI 42f80 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 42f84 48 .cfa: sp 0 + .ra: x30
+STACK CFI 42f88 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 42f90 .cfa: x29 32 +
+STACK CFI 42f94 x19: .cfa -16 + ^
+STACK CFI 42fc4 x19: x19
+STACK CFI 42fc8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 42fcc 48 .cfa: sp 0 + .ra: x30
+STACK CFI 42fd0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 42fd8 .cfa: x29 32 +
+STACK CFI 42fdc x19: .cfa -16 + ^
+STACK CFI 4300c x19: x19
+STACK CFI 43010 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 43014 48 .cfa: sp 0 + .ra: x30
+STACK CFI 43018 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 43020 .cfa: x29 32 +
+STACK CFI 43024 x19: .cfa -16 + ^
+STACK CFI 43054 x19: x19
+STACK CFI 43058 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4305c 48 .cfa: sp 0 + .ra: x30
+STACK CFI 43060 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 43068 .cfa: x29 32 +
+STACK CFI 4306c x19: .cfa -16 + ^
+STACK CFI 4309c x19: x19
+STACK CFI 430a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 430a4 48 .cfa: sp 0 + .ra: x30
+STACK CFI 430a8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 430b0 .cfa: x29 32 +
+STACK CFI 430b4 x19: .cfa -16 + ^
+STACK CFI 430e4 x19: x19
+STACK CFI 430e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24794 b0 .cfa: sp 0 + .ra: x30
+STACK CFI 24798 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 2479c .cfa: x29 64 +
+STACK CFI 247a8 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 24834 x23: x23
+STACK CFI 24838 x19: x19 x20: x20
+STACK CFI 2483c x21: x21 x22: x22
+STACK CFI 24840 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 430ec 38 .cfa: sp 0 + .ra: x30
+STACK CFI 430f0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 430fc .cfa: x29 32 +
+STACK CFI 43100 x19: .cfa -16 + ^
+STACK CFI 4311c x19: x19
+STACK CFI 43120 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2eb40 18 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 43124 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 24844 40 .cfa: sp 0 + .ra: x30
+STACK CFI 24848 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 24854 .cfa: x29 32 +
+STACK CFI 24858 x19: .cfa -16 + ^
+STACK CFI 2487c x19: x19
+STACK CFI 24880 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 43134 1b0 .cfa: sp 0 + .ra: x30
+STACK CFI 43138 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 43140 .cfa: x29 96 +
+STACK CFI 43150 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^ x25: .cfa -32 + ^ x26: .cfa -24 + ^
+STACK CFI 432d0 x19: x19 x20: x20
+STACK CFI 432d4 x21: x21 x22: x22
+STACK CFI 432d8 x23: x23 x24: x24
+STACK CFI 432dc x25: x25 x26: x26
+STACK CFI 432e0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 248a0 48 .cfa: sp 0 + .ra: x30
+STACK CFI 248a4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 248a8 .cfa: x29 32 +
+STACK CFI 248ac x19: .cfa -16 + ^
+STACK CFI 248e0 x19: x19
+STACK CFI 248e4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 24 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 24940 34 .cfa: sp 0 + .ra: x30
+STACK CFI 24948 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2494c .cfa: x29 32 +
+STACK CFI 24954 x19: .cfa -16 + ^
+STACK CFI 2496c x19: x19
+STACK CFI 24970 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24974 24 .cfa: sp 0 + .ra: x30
+STACK CFI 24978 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2497c .cfa: x29 32 +
+STACK CFI 24980 x19: .cfa -16 + ^
+STACK CFI 24990 x19: x19
+STACK CFI 24994 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24998 60 .cfa: sp 0 + .ra: x30
+STACK CFI 2499c .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 249a0 .cfa: x29 48 +
+STACK CFI 249a8 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 249ec x19: x19 x20: x20
+STACK CFI 249f0 x21: x21
+STACK CFI 249f4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 249f8 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 432e4 70 .cfa: sp 0 + .ra: x30
+STACK CFI 432ec .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 432f0 .cfa: x29 48 +
+STACK CFI 432fc x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 43348 x21: x21
+STACK CFI 4334c x19: x19 x20: x20
+STACK CFI 43350 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 43354 24 .cfa: sp 0 + .ra: x30
+STACK CFI 43358 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 4335c .cfa: x29 32 +
+STACK CFI 43360 x19: .cfa -16 + ^
+STACK CFI 43370 x19: x19
+STACK CFI 43374 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 43378 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 4338c 24 .cfa: sp 0 + .ra: x30
+STACK CFI 43390 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 43394 .cfa: x29 32 +
+STACK CFI 43398 x19: .cfa -16 + ^
+STACK CFI 433a8 x19: x19
+STACK CFI 433ac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25b28 2c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 9c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI 10 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI 8c x21: x21
+STACK CFI 94 x19: x19 x20: x20
+STACK CFI 98 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 288d8 f0 .cfa: sp 0 + .ra: x30
+STACK CFI 288dc .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 288e4 .cfa: x29 64 +
+STACK CFI 288f0 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 289b8 x23: x23
+STACK CFI 289bc x19: x19 x20: x20
+STACK CFI 289c0 x21: x21 x22: x22
+STACK CFI 289c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25b54 5c .cfa: sp 0 + .ra: x30
+STACK CFI 25b58 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 25b5c .cfa: x29 16 +
+STACK CFI 25bac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 154 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI c .cfa: x29 80 +
+STACK CFI 18 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI 144 x23: x23
+STACK CFI 148 x19: x19 x20: x20
+STACK CFI 14c x21: x21 x22: x22
+STACK CFI 150 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 28714 b8 .cfa: sp 0 + .ra: x30
+STACK CFI 28718 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 2871c .cfa: x29 48 +
+STACK CFI 28724 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 287c0 x21: x21
+STACK CFI 287c4 x19: x19 x20: x20
+STACK CFI 287c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 433b0 68 .cfa: sp 0 + .ra: x30
+STACK CFI 433b4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 433b8 .cfa: x29 48 +
+STACK CFI 433c0 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 4340c x19: x19 x20: x20
+STACK CFI 43410 x21: x21 x22: x22
+STACK CFI 43414 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 287cc 10c .cfa: sp 0 + .ra: x30
+STACK CFI 287d0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 287d8 .cfa: x29 64 +
+STACK CFI 287e0 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x23: .cfa -16 + ^
+STACK CFI 287e8 x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 288c8 x19: x19 x20: x20
+STACK CFI 288cc x21: x21 x22: x22
+STACK CFI 288d0 x23: x23
+STACK CFI 288d4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 285f0 60 .cfa: sp 0 + .ra: x30
+STACK CFI 285f4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 285f8 .cfa: x29 32 +
+STACK CFI 285fc x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 28648 x19: x19 x20: x20
+STACK CFI 2864c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 28650 c4 .cfa: sp 0 + .ra: x30
+STACK CFI 28654 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 2865c .cfa: x29 48 +
+STACK CFI 28664 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 28708 x19: x19 x20: x20
+STACK CFI 2870c x21: x21
+STACK CFI 28710 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24a00 fc .cfa: sp 0 + .ra: x30
+STACK CFI 24a04 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 24a0c .cfa: x29 96 +
+STACK CFI 24a18 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^
+STACK CFI 24aec x21: x21 x22: x22
+STACK CFI 24af0 x19: x19 x20: x20
+STACK CFI 24af4 x23: x23 x24: x24
+STACK CFI 24af8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24afc b4 .cfa: sp 0 + .ra: x30
+STACK CFI 24b00 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 24b04 .cfa: x29 48 +
+STACK CFI 24b08 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 24b18 x21: .cfa -16 + ^
+STACK CFI 24ba4 x21: x21
+STACK CFI 24ba8 x19: x19 x20: x20
+STACK CFI 24bac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24bb0 b0 .cfa: sp 0 + .ra: x30
+STACK CFI 24bb4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 24bb8 .cfa: x29 48 +
+STACK CFI 24bc0 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 24c40 x21: x21
+STACK CFI 24c58 x19: x19 x20: x20
+STACK CFI 24c5c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24c60 98 .cfa: sp 0 + .ra: x30
+STACK CFI 24c64 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 24c68 .cfa: x29 64 +
+STACK CFI 24c70 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 24cec x19: x19 x20: x20
+STACK CFI 24cf0 x21: x21
+STACK CFI 24cf4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24cf8 1c .cfa: sp 0 + .ra: x30
+STACK CFI 24cfc .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 24d00 .cfa: x29 16 +
+STACK CFI 24d10 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24d14 3c .cfa: sp 0 + .ra: x30
+STACK CFI 24d18 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 24d1c .cfa: x29 16 +
+STACK CFI 24d4c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 54 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^
+STACK CFI 4c x19: x19
+STACK CFI 50 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25040 64 .cfa: sp 0 + .ra: x30
+STACK CFI 25044 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 25048 .cfa: x29 48 +
+STACK CFI 2504c x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 25058 x21: .cfa -16 + ^
+STACK CFI 25098 x19: x19 x20: x20
+STACK CFI 2509c x21: x21
+STACK CFI 250a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24e18 34 .cfa: sp 0 + .ra: x30
+STACK CFI 24e1c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 24e24 .cfa: x29 32 +
+STACK CFI 24e28 x19: .cfa -16 + ^
+STACK CFI 24e44 x19: x19
+STACK CFI 24e48 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 43418 50 .cfa: sp 0 + .ra: x30
+STACK CFI 4341c .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 43420 .cfa: x29 48 +
+STACK CFI 43424 x19: .cfa -32 + ^
+STACK CFI 43460 x19: x19
+STACK CFI 43464 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26030 98 .cfa: sp 0 + .ra: x30
+STACK CFI 26034 .cfa: sp 128 + .ra: .cfa -120 + ^ x29: .cfa -128 + ^
+STACK CFI 26038 .cfa: x29 128 +
+STACK CFI 26044 x19: .cfa -112 + ^ x20: .cfa -104 + ^ x21: .cfa -96 + ^ x22: .cfa -88 + ^ x23: .cfa -80 + ^
+STACK CFI 260b8 x23: x23
+STACK CFI 260bc x19: x19 x20: x20
+STACK CFI 260c0 x21: x21 x22: x22
+STACK CFI 260c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24f58 e8 .cfa: sp 0 + .ra: x30
+STACK CFI 24f5c .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 24f60 .cfa: x29 64 +
+STACK CFI 24f64 x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 24f70 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 25034 x19: x19 x20: x20
+STACK CFI 25038 x21: x21 x22: x22
+STACK CFI 2503c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24e9c bc .cfa: sp 0 + .ra: x30
+STACK CFI 24ea0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 24ea4 .cfa: x29 64 +
+STACK CFI 24eac x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 24f4c x21: x21
+STACK CFI 24f50 x19: x19 x20: x20
+STACK CFI 24f54 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 43468 80 .cfa: sp 0 + .ra: x30
+STACK CFI 4346c .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 43474 .cfa: x29 64 +
+STACK CFI 4347c x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 434dc x21: x21
+STACK CFI 434e0 x19: x19 x20: x20
+STACK CFI 434e4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 250a4 58 .cfa: sp 0 + .ra: x30
+STACK CFI 250a8 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 250ac .cfa: x29 48 +
+STACK CFI 250b0 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 250b8 x21: .cfa -16 + ^
+STACK CFI 250f0 x19: x19 x20: x20
+STACK CFI 250f4 x21: x21
+STACK CFI 250f8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 434e8 88 .cfa: sp 0 + .ra: x30
+STACK CFI 434ec .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 434f0 .cfa: x29 64 +
+STACK CFI 434f8 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 43564 x21: x21
+STACK CFI 43568 x19: x19 x20: x20
+STACK CFI 4356c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 43570 88 .cfa: sp 0 + .ra: x30
+STACK CFI 43574 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 43578 .cfa: x29 48 +
+STACK CFI 43580 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 435e8 x21: x21
+STACK CFI 435f0 x19: x19 x20: x20
+STACK CFI 435f4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 435f8 64 .cfa: sp 0 + .ra: x30
+STACK CFI 435fc .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 43600 .cfa: x29 48 +
+STACK CFI 43608 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 43650 x19: x19 x20: x20
+STACK CFI 43654 x21: x21 x22: x22
+STACK CFI 43658 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4365c 48 .cfa: sp 0 + .ra: x30
+STACK CFI 43664 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 43668 .cfa: x29 32 +
+STACK CFI 43670 x19: .cfa -16 + ^
+STACK CFI 4369c x19: x19
+STACK CFI 436a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 436a4 24 .cfa: sp 0 + .ra: x30
+STACK CFI 436a8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 436ac .cfa: x29 32 +
+STACK CFI 436b0 x19: .cfa -16 + ^
+STACK CFI 436c0 x19: x19
+STACK CFI 436c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 436c8 b8 .cfa: sp 0 + .ra: x30
+STACK CFI 436cc .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 436d0 .cfa: x29 48 +
+STACK CFI 436d4 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 436e0 x21: .cfa -16 + ^
+STACK CFI 43770 x21: x21
+STACK CFI 43778 x19: x19 x20: x20
+STACK CFI 4377c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 43780 24 .cfa: sp 0 + .ra: x30
+STACK CFI 43784 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 43788 .cfa: x29 32 +
+STACK CFI 4378c x19: .cfa -16 + ^
+STACK CFI 4379c x19: x19
+STACK CFI 437a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 251f0 8c .cfa: sp 0 + .ra: x30
+STACK CFI 251f4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 251f8 .cfa: x29 48 +
+STACK CFI 251fc x19: .cfa -32 + ^
+STACK CFI 25268 x19: x19
+STACK CFI 2526c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 25270 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 25274 x19: x19
+STACK CFI 25278 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2527c c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25288 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25298 24 .cfa: sp 0 + .ra: x30
+STACK CFI 2529c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 252a0 .cfa: x29 32 +
+STACK CFI 252a4 x19: .cfa -16 + ^
+STACK CFI 252b4 x19: x19
+STACK CFI 252b8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 252bc 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 252cc c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 252d8 8c .cfa: sp 0 + .ra: x30
+STACK CFI 252dc .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 252e0 .cfa: x29 48 +
+STACK CFI 252e4 x19: .cfa -32 + ^
+STACK CFI 25350 x19: x19
+STACK CFI 25354 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 25358 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 2535c x19: x19
+STACK CFI 25360 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25364 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25370 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25380 24 .cfa: sp 0 + .ra: x30
+STACK CFI 25384 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 25388 .cfa: x29 32 +
+STACK CFI 2538c x19: .cfa -16 + ^
+STACK CFI 2539c x19: x19
+STACK CFI 253a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 253a4 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 253b4 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 253c0 e0 .cfa: sp 0 + .ra: x30
+STACK CFI 253c4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 253c8 .cfa: x29 48 +
+STACK CFI 253cc x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 2548c x19: x19 x20: x20
+STACK CFI 25490 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 25494 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x29: .cfa -48 + ^
+STACK CFI 25498 x19: x19 x20: x20
+STACK CFI 2549c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 254a0 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 254ac cc .cfa: sp 0 + .ra: x30
+STACK CFI 254b0 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 254b4 .cfa: x29 48 +
+STACK CFI 254b8 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 25564 x19: x19 x20: x20
+STACK CFI 25568 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2556c .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x29: .cfa -48 + ^
+STACK CFI 25570 x19: x19 x20: x20
+STACK CFI 25574 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25578 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25584 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25590 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25598 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255a8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 255ac .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 255b0 .cfa: x29 32 +
+STACK CFI 255b4 x19: .cfa -16 + ^
+STACK CFI 255c4 x19: x19
+STACK CFI 255c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 255cc 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255d4 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255e4 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255f0 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255f8 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25608 24 .cfa: sp 0 + .ra: x30
+STACK CFI 2560c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 25610 .cfa: x29 32 +
+STACK CFI 25614 x19: .cfa -16 + ^
+STACK CFI 25624 x19: x19
+STACK CFI 25628 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2562c 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25634 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25644 5c .cfa: sp 0 + .ra: x30
+STACK CFI 25648 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2564c .cfa: x29 32 +
+STACK CFI 25650 x19: .cfa -16 + ^
+STACK CFI 25698 x19: x19
+STACK CFI 2569c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 256a0 78 .cfa: sp 0 + .ra: x30
+STACK CFI 256a4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 256ac .cfa: x29 32 +
+STACK CFI 256b0 x19: .cfa -16 + ^
+STACK CFI 25710 x19: x19
+STACK CFI 25714 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25718 50 .cfa: sp 0 + .ra: x30
+STACK CFI 2571c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 25720 .cfa: x29 32 +
+STACK CFI 25724 x19: .cfa -16 + ^
+STACK CFI 25754 x19: x19
+STACK CFI 25758 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2575c .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI 25760 x19: x19
+STACK CFI 25764 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 437a4 128 .cfa: sp 0 + .ra: x30
+STACK CFI 437a8 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 437ac .cfa: x29 96 +
+STACK CFI 437b0 x23: .cfa -48 + ^ x24: .cfa -40 + ^
+STACK CFI 437bc x19: .cfa -80 + ^ x20: .cfa -72 + ^
+STACK CFI 437c8 x21: .cfa -64 + ^ x22: .cfa -56 + ^
+STACK CFI 438bc x19: x19 x20: x20
+STACK CFI 438c0 x21: x21 x22: x22
+STACK CFI 438c4 x23: x23 x24: x24
+STACK CFI 438c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25768 13c .cfa: sp 0 + .ra: x30
+STACK CFI 2576c .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 25770 .cfa: x29 64 +
+STACK CFI 25778 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 25898 x19: x19 x20: x20
+STACK CFI 2589c x21: x21 x22: x22
+STACK CFI 258a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25964 104 .cfa: sp 0 + .ra: x30
+STACK CFI 25968 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 2596c .cfa: x29 80 +
+STACK CFI 25978 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^
+STACK CFI 25a58 x19: x19 x20: x20
+STACK CFI 25a5c x21: x21 x22: x22
+STACK CFI 25a60 x23: x23 x24: x24
+STACK CFI 25a64 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 cc .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI 10 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI bc x21: x21
+STACK CFI c4 x19: x19 x20: x20
+STACK CFI c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 f4 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI c .cfa: x29 80 +
+STACK CFI 18 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI e4 x23: x23
+STACK CFI e8 x19: x19 x20: x20
+STACK CFI ec x21: x21 x22: x22
+STACK CFI f0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26440 8c .cfa: sp 0 + .ra: x30
+STACK CFI 26444 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 26448 .cfa: x29 64 +
+STACK CFI 2644c x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 2645c x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 264c0 x19: x19 x20: x20
+STACK CFI 264c4 x21: x21 x22: x22
+STACK CFI 264c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 438cc 1c0 .cfa: sp 0 + .ra: x30
+STACK CFI 438d0 .cfa: sp 480 +
+STACK CFI 438d4 .cfa: sp 576 + .ra: .cfa -568 + ^ x29: .cfa -576 + ^
+STACK CFI 438d8 .cfa: x29 576 +
+STACK CFI 438e0 x19: .cfa -560 + ^ x20: .cfa -552 + ^ x23: .cfa -528 + ^ x24: .cfa -520 + ^
+STACK CFI 438fc x21: .cfa -544 + ^ x22: .cfa -536 + ^ x25: .cfa -512 + ^ x26: .cfa -504 + ^
+STACK CFI 43914 x27: .cfa -496 + ^ x28: .cfa -488 + ^
+STACK CFI 43a6c x19: x19 x20: x20
+STACK CFI 43a70 x21: x21 x22: x22
+STACK CFI 43a74 x23: x23 x24: x24
+STACK CFI 43a78 x25: x25 x26: x26
+STACK CFI 43a7c x27: x27 x28: x28
+STACK CFI 43a80 .cfa: sp 480 + .ra: .ra x29: x29
+STACK CFI 43a88 .cfa: sp 384 +
+STACK CFI INIT 43a8c 1f4 .cfa: sp 0 + .ra: x30
+STACK CFI 43a90 .cfa: sp 512 +
+STACK CFI 43a94 .cfa: sp 608 + .ra: .cfa -600 + ^ x29: .cfa -608 + ^
+STACK CFI 43a98 .cfa: x29 608 +
+STACK CFI 43aa0 x19: .cfa -592 + ^ x20: .cfa -584 + ^ x21: .cfa -576 + ^ x22: .cfa -568 + ^
+STACK CFI 43ab8 x27: .cfa -528 + ^ x28: .cfa -520 + ^
+STACK CFI 43ad0 x23: .cfa -560 + ^ x24: .cfa -552 + ^ x25: .cfa -544 + ^ x26: .cfa -536 + ^
+STACK CFI 43c64 x19: x19 x20: x20
+STACK CFI 43c68 x21: x21 x22: x22
+STACK CFI 43c6c x23: x23 x24: x24
+STACK CFI 43c70 x25: x25 x26: x26
+STACK CFI 43c74 x27: x27 x28: x28
+STACK CFI 43c78 .cfa: sp 512 + .ra: .ra x29: x29
+STACK CFI 43c7c .cfa: sp 416 +
+STACK CFI INIT 43c80 1c0 .cfa: sp 0 + .ra: x30
+STACK CFI 43c84 .cfa: sp 480 +
+STACK CFI 43c88 .cfa: sp 576 + .ra: .cfa -568 + ^ x29: .cfa -576 + ^
+STACK CFI 43c8c .cfa: x29 576 +
+STACK CFI 43c94 x19: .cfa -560 + ^ x20: .cfa -552 + ^ x23: .cfa -528 + ^ x24: .cfa -520 + ^
+STACK CFI 43cb0 x21: .cfa -544 + ^ x22: .cfa -536 + ^ x25: .cfa -512 + ^ x26: .cfa -504 + ^
+STACK CFI 43cc8 x27: .cfa -496 + ^ x28: .cfa -488 + ^
+STACK CFI 43e20 x19: x19 x20: x20
+STACK CFI 43e24 x21: x21 x22: x22
+STACK CFI 43e28 x23: x23 x24: x24
+STACK CFI 43e2c x25: x25 x26: x26
+STACK CFI 43e30 x27: x27 x28: x28
+STACK CFI 43e34 .cfa: sp 480 + .ra: .ra x29: x29
+STACK CFI 43e3c .cfa: sp 384 +
+STACK CFI INIT 43e40 1f4 .cfa: sp 0 + .ra: x30
+STACK CFI 43e44 .cfa: sp 512 +
+STACK CFI 43e48 .cfa: sp 608 + .ra: .cfa -600 + ^ x29: .cfa -608 + ^
+STACK CFI 43e4c .cfa: x29 608 +
+STACK CFI 43e54 x19: .cfa -592 + ^ x20: .cfa -584 + ^ x21: .cfa -576 + ^ x22: .cfa -568 + ^
+STACK CFI 43e6c x27: .cfa -528 + ^ x28: .cfa -520 + ^
+STACK CFI 43e84 x23: .cfa -560 + ^ x24: .cfa -552 + ^ x25: .cfa -544 + ^ x26: .cfa -536 + ^
+STACK CFI 44018 x19: x19 x20: x20
+STACK CFI 4401c x21: x21 x22: x22
+STACK CFI 44020 x23: x23 x24: x24
+STACK CFI 44024 x25: x25 x26: x26
+STACK CFI 44028 x27: x27 x28: x28
+STACK CFI 4402c .cfa: sp 512 + .ra: .ra x29: x29
+STACK CFI 44030 .cfa: sp 416 +
+STACK CFI INIT 44034 1c0 .cfa: sp 0 + .ra: x30
+STACK CFI 44038 .cfa: sp 480 +
+STACK CFI 4403c .cfa: sp 576 + .ra: .cfa -568 + ^ x29: .cfa -576 + ^
+STACK CFI 44040 .cfa: x29 576 +
+STACK CFI 44048 x19: .cfa -560 + ^ x20: .cfa -552 + ^ x23: .cfa -528 + ^ x24: .cfa -520 + ^
+STACK CFI 44064 x21: .cfa -544 + ^ x22: .cfa -536 + ^ x25: .cfa -512 + ^ x26: .cfa -504 + ^
+STACK CFI 4407c x27: .cfa -496 + ^ x28: .cfa -488 + ^
+STACK CFI 441d4 x19: x19 x20: x20
+STACK CFI 441d8 x21: x21 x22: x22
+STACK CFI 441dc x23: x23 x24: x24
+STACK CFI 441e0 x25: x25 x26: x26
+STACK CFI 441e4 x27: x27 x28: x28
+STACK CFI 441e8 .cfa: sp 480 + .ra: .ra x29: x29
+STACK CFI 441f0 .cfa: sp 384 +
+STACK CFI INIT 441f4 1f4 .cfa: sp 0 + .ra: x30
+STACK CFI 441f8 .cfa: sp 512 +
+STACK CFI 441fc .cfa: sp 608 + .ra: .cfa -600 + ^ x29: .cfa -608 + ^
+STACK CFI 44200 .cfa: x29 608 +
+STACK CFI 44208 x19: .cfa -592 + ^ x20: .cfa -584 + ^ x21: .cfa -576 + ^ x22: .cfa -568 + ^
+STACK CFI 44220 x27: .cfa -528 + ^ x28: .cfa -520 + ^
+STACK CFI 44238 x23: .cfa -560 + ^ x24: .cfa -552 + ^ x25: .cfa -544 + ^ x26: .cfa -536 + ^
+STACK CFI 443cc x19: x19 x20: x20
+STACK CFI 443d0 x21: x21 x22: x22
+STACK CFI 443d4 x23: x23 x24: x24
+STACK CFI 443d8 x25: x25 x26: x26
+STACK CFI 443dc x27: x27 x28: x28
+STACK CFI 443e0 .cfa: sp 512 + .ra: .ra x29: x29
+STACK CFI 443e4 .cfa: sp 416 +
+STACK CFI INIT 443e8 1c0 .cfa: sp 0 + .ra: x30
+STACK CFI 443ec .cfa: sp 480 +
+STACK CFI 443f0 .cfa: sp 576 + .ra: .cfa -568 + ^ x29: .cfa -576 + ^
+STACK CFI 443f4 .cfa: x29 576 +
+STACK CFI 443fc x19: .cfa -560 + ^ x20: .cfa -552 + ^ x23: .cfa -528 + ^ x24: .cfa -520 + ^
+STACK CFI 44418 x21: .cfa -544 + ^ x22: .cfa -536 + ^ x25: .cfa -512 + ^ x26: .cfa -504 + ^
+STACK CFI 44430 x27: .cfa -496 + ^ x28: .cfa -488 + ^
+STACK CFI 44588 x19: x19 x20: x20
+STACK CFI 4458c x21: x21 x22: x22
+STACK CFI 44590 x23: x23 x24: x24
+STACK CFI 44594 x25: x25 x26: x26
+STACK CFI 44598 x27: x27 x28: x28
+STACK CFI 4459c .cfa: sp 480 + .ra: .ra x29: x29
+STACK CFI 445a4 .cfa: sp 384 +
+STACK CFI INIT 445a8 1f4 .cfa: sp 0 + .ra: x30
+STACK CFI 445ac .cfa: sp 512 +
+STACK CFI 445b0 .cfa: sp 608 + .ra: .cfa -600 + ^ x29: .cfa -608 + ^
+STACK CFI 445b4 .cfa: x29 608 +
+STACK CFI 445bc x19: .cfa -592 + ^ x20: .cfa -584 + ^ x21: .cfa -576 + ^ x22: .cfa -568 + ^
+STACK CFI 445d4 x27: .cfa -528 + ^ x28: .cfa -520 + ^
+STACK CFI 445ec x23: .cfa -560 + ^ x24: .cfa -552 + ^ x25: .cfa -544 + ^ x26: .cfa -536 + ^
+STACK CFI 44780 x19: x19 x20: x20
+STACK CFI 44784 x21: x21 x22: x22
+STACK CFI 44788 x23: x23 x24: x24
+STACK CFI 4478c x25: x25 x26: x26
+STACK CFI 44790 x27: x27 x28: x28
+STACK CFI 44794 .cfa: sp 512 + .ra: .ra x29: x29
+STACK CFI 44798 .cfa: sp 416 +
+STACK CFI INIT 26984 124 .cfa: sp 0 + .ra: x30
+STACK CFI 26988 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 26990 .cfa: x29 80 +
+STACK CFI 2699c x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI 26a98 x19: x19 x20: x20
+STACK CFI 26a9c x21: x21 x22: x22
+STACK CFI 26aa0 x23: x23
+STACK CFI 26aa4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4479c 48 .cfa: sp 0 + .ra: x30
+STACK CFI 447a8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 447ac .cfa: x29 32 +
+STACK CFI 447b4 x19: .cfa -16 + ^
+STACK CFI 447dc x19: x19
+STACK CFI 447e0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 447e4 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 447f8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 447fc .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 44800 .cfa: x29 32 +
+STACK CFI 44804 x19: .cfa -16 + ^
+STACK CFI 44814 x19: x19
+STACK CFI 44818 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4481c 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 44830 24 .cfa: sp 0 + .ra: x30
+STACK CFI 44834 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 44838 .cfa: x29 32 +
+STACK CFI 4483c x19: .cfa -16 + ^
+STACK CFI 4484c x19: x19
+STACK CFI 44850 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 44854 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 44868 24 .cfa: sp 0 + .ra: x30
+STACK CFI 4486c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 44870 .cfa: x29 32 +
+STACK CFI 44874 x19: .cfa -16 + ^
+STACK CFI 44884 x19: x19
+STACK CFI 44888 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4488c 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 448a0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 448a4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 448a8 .cfa: x29 32 +
+STACK CFI 448ac x19: .cfa -16 + ^
+STACK CFI 448bc x19: x19
+STACK CFI 448c0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 448c4 24 .cfa: sp 0 + .ra: x30
+STACK CFI 448c8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 448cc .cfa: x29 32 +
+STACK CFI 448d0 x19: .cfa -16 + ^
+STACK CFI 448e0 x19: x19
+STACK CFI 448e4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 448e8 48 .cfa: sp 0 + .ra: x30
+STACK CFI 448f4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 448f8 .cfa: x29 32 +
+STACK CFI 44900 x19: .cfa -16 + ^
+STACK CFI 44928 x19: x19
+STACK CFI 4492c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 44930 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 44944 24 .cfa: sp 0 + .ra: x30
+STACK CFI 44948 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 4494c .cfa: x29 32 +
+STACK CFI 44950 x19: .cfa -16 + ^
+STACK CFI 44960 x19: x19
+STACK CFI 44964 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 44968 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 4497c 24 .cfa: sp 0 + .ra: x30
+STACK CFI 44980 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 44984 .cfa: x29 32 +
+STACK CFI 44988 x19: .cfa -16 + ^
+STACK CFI 44998 x19: x19
+STACK CFI 4499c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 449a0 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 449b4 24 .cfa: sp 0 + .ra: x30
+STACK CFI 449b8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 449bc .cfa: x29 32 +
+STACK CFI 449c0 x19: .cfa -16 + ^
+STACK CFI 449d0 x19: x19
+STACK CFI 449d4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 449d8 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 449ec 24 .cfa: sp 0 + .ra: x30
+STACK CFI 449f0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 449f4 .cfa: x29 32 +
+STACK CFI 449f8 x19: .cfa -16 + ^
+STACK CFI 44a08 x19: x19
+STACK CFI 44a0c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 44a10 24 .cfa: sp 0 + .ra: x30
+STACK CFI 44a14 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 44a18 .cfa: x29 32 +
+STACK CFI 44a1c x19: .cfa -16 + ^
+STACK CFI 44a2c x19: x19
+STACK CFI 44a30 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 282a4 28 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 282cc 20 .cfa: sp 0 + .ra: x30
+STACK CFI 282d0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 282d8 .cfa: x29 32 +
+STACK CFI 282e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 282ec 20 .cfa: sp 0 + .ra: x30
+STACK CFI 282f0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 282f8 .cfa: x29 32 +
+STACK CFI 28308 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2830c 110 .cfa: sp 0 + .ra: x30
+STACK CFI 28310 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2831c .cfa: x29 32 +
+STACK CFI 28398 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2839c .cfa: x29 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI INIT 2841c 124 .cfa: sp 0 + .ra: x30
+STACK CFI 28420 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 28424 .cfa: x29 80 +
+STACK CFI 28430 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^
+STACK CFI 28530 x19: x19 x20: x20
+STACK CFI 28534 x21: x21 x22: x22
+STACK CFI 28538 x23: x23 x24: x24
+STACK CFI 2853c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 261dc 64 .cfa: sp 0 + .ra: x30
+STACK CFI 261e0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 261e4 .cfa: x29 64 +
+STACK CFI 261e8 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 26238 x19: x19 x20: x20
+STACK CFI 2623c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 44a34 27c .cfa: sp 0 + .ra: x30
+STACK CFI 44a38 .cfa: sp 448 +
+STACK CFI 44a3c .cfa: sp 528 + .ra: .cfa -520 + ^ x29: .cfa -528 + ^
+STACK CFI 44a40 .cfa: x29 528 +
+STACK CFI 44a44 x21: .cfa -496 + ^ x22: .cfa -488 + ^
+STACK CFI 44a50 x23: .cfa -480 + ^ x24: .cfa -472 + ^ x25: .cfa -464 + ^
+STACK CFI 44a70 x19: .cfa -512 + ^ x20: .cfa -504 + ^
+STACK CFI 44c94 x25: x25
+STACK CFI 44c9c x19: x19 x20: x20
+STACK CFI 44ca0 x21: x21 x22: x22
+STACK CFI 44ca4 x23: x23 x24: x24
+STACK CFI 44ca8 .cfa: sp 448 + .ra: .ra x29: x29
+STACK CFI 44cac .cfa: sp 368 +
+STACK CFI INIT 44cb0 1ec .cfa: sp 0 + .ra: x30
+STACK CFI 44cb4 .cfa: sp 192 + .ra: .cfa -184 + ^ x29: .cfa -192 + ^
+STACK CFI 44cb8 .cfa: x29 192 +
+STACK CFI 44cc0 x19: .cfa -176 + ^ x20: .cfa -168 + ^ x21: .cfa -160 + ^ x22: .cfa -152 + ^
+STACK CFI 44cdc x23: .cfa -144 + ^
+STACK CFI 44e8c x23: x23
+STACK CFI 44e90 x19: x19 x20: x20
+STACK CFI 44e94 x21: x21 x22: x22
+STACK CFI 44e98 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 44e9c 250 .cfa: sp 0 + .ra: x30
+STACK CFI 44ea0 .cfa: sp 768 +
+STACK CFI 44eb0 .cfa: sp 848 + .ra: .cfa -840 + ^ x29: .cfa -848 + ^
+STACK CFI 44eb4 .cfa: x29 848 +
+STACK CFI 44eb8 x25: .cfa -784 + ^ x26: .cfa -776 + ^
+STACK CFI 44ecc x19: .cfa -832 + ^ x20: .cfa -824 + ^ x21: .cfa -816 + ^ x22: .cfa -808 + ^ x23: .cfa -800 + ^ x24: .cfa -792 + ^
+STACK CFI 450d0 .cfa: sp 848 +
+STACK CFI 450d4 x19: x19 x20: x20
+STACK CFI 450d8 x21: x21 x22: x22
+STACK CFI 450dc x23: x23 x24: x24
+STACK CFI 450e0 x25: x25 x26: x26
+STACK CFI 450e4 .cfa: sp 768 + .ra: .ra x29: x29
+STACK CFI 450e8 .cfa: sp 688 +
+STACK CFI INIT 450ec 374 .cfa: sp 0 + .ra: x30
+STACK CFI 450f0 .cfa: sp 880 +
+STACK CFI 45100 .cfa: sp 976 + .ra: .cfa -968 + ^ x29: .cfa -976 + ^
+STACK CFI 45104 .cfa: x29 976 +
+STACK CFI 45108 x19: .cfa -960 + ^ x20: .cfa -952 + ^
+STACK CFI 45114 x25: .cfa -912 + ^ x26: .cfa -904 + ^ x27: .cfa -896 + ^
+STACK CFI 4519c x21: .cfa -944 + ^ x22: .cfa -936 + ^ x23: .cfa -928 + ^ x24: .cfa -920 + ^
+STACK CFI 45440 .cfa: sp 976 +
+STACK CFI 45444 x19: x19 x20: x20
+STACK CFI 45448 x21: x21 x22: x22
+STACK CFI 4544c x23: x23 x24: x24
+STACK CFI 45450 x25: x25 x26: x26
+STACK CFI 45454 x27: x27
+STACK CFI 45458 .cfa: sp 880 + .ra: .ra x29: x29
+STACK CFI 4545c .cfa: sp 784 +
+STACK CFI INIT 45460 3cc .cfa: sp 0 + .ra: x30
+STACK CFI 45464 .cfa: sp 896 +
+STACK CFI 45474 .cfa: sp 992 + .ra: .cfa -984 + ^ x29: .cfa -992 + ^
+STACK CFI 45478 .cfa: x29 992 +
+STACK CFI 4547c x19: .cfa -976 + ^ x20: .cfa -968 + ^
+STACK CFI 45488 x25: .cfa -928 + ^ x26: .cfa -920 + ^ x27: .cfa -912 + ^
+STACK CFI 45510 x21: .cfa -960 + ^ x22: .cfa -952 + ^ x23: .cfa -944 + ^ x24: .cfa -936 + ^
+STACK CFI 4580c .cfa: sp 992 +
+STACK CFI 45810 x19: x19 x20: x20
+STACK CFI 45814 x21: x21 x22: x22
+STACK CFI 45818 x23: x23 x24: x24
+STACK CFI 4581c x25: x25 x26: x26
+STACK CFI 45820 x27: x27
+STACK CFI 45824 .cfa: sp 896 + .ra: .ra x29: x29
+STACK CFI 45828 .cfa: sp 800 +
+STACK CFI INIT 4582c 464 .cfa: sp 0 + .ra: x30
+STACK CFI 45830 .cfa: sp 880 +
+STACK CFI 45838 .cfa: sp 992 + .ra: .cfa -984 + ^ x29: .cfa -992 + ^
+STACK CFI 4583c .cfa: x29 992 +
+STACK CFI 45840 x19: .cfa -976 + ^ x20: .cfa -968 + ^
+STACK CFI 45850 x27: .cfa -912 + ^ x28: .cfa -904 + ^
+STACK CFI 45868 v8: .cfa -896 + ^ x21: .cfa -960 + ^ x22: .cfa -952 + ^ x23: .cfa -944 + ^ x24: .cfa -936 + ^ x25: .cfa -928 + ^ x26: .cfa -920 + ^
+STACK CFI 45c6c .cfa: sp 992 +
+STACK CFI 45c70 v8: v8
+STACK CFI 45c74 x19: x19 x20: x20
+STACK CFI 45c78 x21: x21 x22: x22
+STACK CFI 45c7c x23: x23 x24: x24
+STACK CFI 45c80 x25: x25 x26: x26
+STACK CFI 45c84 x27: x27 x28: x28
+STACK CFI 45c88 .cfa: sp 880 + .ra: .ra x29: x29
+STACK CFI 45c8c .cfa: sp 768 +
+STACK CFI INIT 45c90 1ec .cfa: sp 0 + .ra: x30
+STACK CFI 45c94 .cfa: sp 192 + .ra: .cfa -184 + ^ x29: .cfa -192 + ^
+STACK CFI 45c98 .cfa: x29 192 +
+STACK CFI 45ca0 x19: .cfa -176 + ^ x20: .cfa -168 + ^ x21: .cfa -160 + ^ x22: .cfa -152 + ^
+STACK CFI 45cbc x23: .cfa -144 + ^
+STACK CFI 45e6c x23: x23
+STACK CFI 45e70 x19: x19 x20: x20
+STACK CFI 45e74 x21: x21 x22: x22
+STACK CFI 45e78 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 45e7c 250 .cfa: sp 0 + .ra: x30
+STACK CFI 45e80 .cfa: sp 768 +
+STACK CFI 45e90 .cfa: sp 848 + .ra: .cfa -840 + ^ x29: .cfa -848 + ^
+STACK CFI 45e94 .cfa: x29 848 +
+STACK CFI 45e98 x25: .cfa -784 + ^ x26: .cfa -776 + ^
+STACK CFI 45eac x19: .cfa -832 + ^ x20: .cfa -824 + ^ x21: .cfa -816 + ^ x22: .cfa -808 + ^ x23: .cfa -800 + ^ x24: .cfa -792 + ^
+STACK CFI 460b0 .cfa: sp 848 +
+STACK CFI 460b4 x19: x19 x20: x20
+STACK CFI 460b8 x21: x21 x22: x22
+STACK CFI 460bc x23: x23 x24: x24
+STACK CFI 460c0 x25: x25 x26: x26
+STACK CFI 460c4 .cfa: sp 768 + .ra: .ra x29: x29
+STACK CFI 460c8 .cfa: sp 688 +
+STACK CFI INIT 460cc 374 .cfa: sp 0 + .ra: x30
+STACK CFI 460d0 .cfa: sp 880 +
+STACK CFI 460e0 .cfa: sp 976 + .ra: .cfa -968 + ^ x29: .cfa -976 + ^
+STACK CFI 460e4 .cfa: x29 976 +
+STACK CFI 460e8 x19: .cfa -960 + ^ x20: .cfa -952 + ^
+STACK CFI 460f4 x25: .cfa -912 + ^ x26: .cfa -904 + ^ x27: .cfa -896 + ^
+STACK CFI 4617c x21: .cfa -944 + ^ x22: .cfa -936 + ^ x23: .cfa -928 + ^ x24: .cfa -920 + ^
+STACK CFI 46420 .cfa: sp 976 +
+STACK CFI 46424 x19: x19 x20: x20
+STACK CFI 46428 x21: x21 x22: x22
+STACK CFI 4642c x23: x23 x24: x24
+STACK CFI 46430 x25: x25 x26: x26
+STACK CFI 46434 x27: x27
+STACK CFI 46438 .cfa: sp 880 + .ra: .ra x29: x29
+STACK CFI 4643c .cfa: sp 784 +
+STACK CFI INIT 46440 3cc .cfa: sp 0 + .ra: x30
+STACK CFI 46444 .cfa: sp 896 +
+STACK CFI 46454 .cfa: sp 992 + .ra: .cfa -984 + ^ x29: .cfa -992 + ^
+STACK CFI 46458 .cfa: x29 992 +
+STACK CFI 4645c x19: .cfa -976 + ^ x20: .cfa -968 + ^
+STACK CFI 46468 x25: .cfa -928 + ^ x26: .cfa -920 + ^ x27: .cfa -912 + ^
+STACK CFI 464f0 x21: .cfa -960 + ^ x22: .cfa -952 + ^ x23: .cfa -944 + ^ x24: .cfa -936 + ^
+STACK CFI 467ec .cfa: sp 992 +
+STACK CFI 467f0 x19: x19 x20: x20
+STACK CFI 467f4 x21: x21 x22: x22
+STACK CFI 467f8 x23: x23 x24: x24
+STACK CFI 467fc x25: x25 x26: x26
+STACK CFI 46800 x27: x27
+STACK CFI 46804 .cfa: sp 896 + .ra: .ra x29: x29
+STACK CFI 46808 .cfa: sp 800 +
+STACK CFI INIT 4680c 464 .cfa: sp 0 + .ra: x30
+STACK CFI 46810 .cfa: sp 880 +
+STACK CFI 46818 .cfa: sp 992 + .ra: .cfa -984 + ^ x29: .cfa -992 + ^
+STACK CFI 4681c .cfa: x29 992 +
+STACK CFI 46820 x19: .cfa -976 + ^ x20: .cfa -968 + ^
+STACK CFI 46830 x27: .cfa -912 + ^ x28: .cfa -904 + ^
+STACK CFI 46848 v8: .cfa -896 + ^ x21: .cfa -960 + ^ x22: .cfa -952 + ^ x23: .cfa -944 + ^ x24: .cfa -936 + ^ x25: .cfa -928 + ^ x26: .cfa -920 + ^
+STACK CFI 46c4c .cfa: sp 992 +
+STACK CFI 46c50 v8: v8
+STACK CFI 46c54 x19: x19 x20: x20
+STACK CFI 46c58 x21: x21 x22: x22
+STACK CFI 46c5c x23: x23 x24: x24
+STACK CFI 46c60 x25: x25 x26: x26
+STACK CFI 46c64 x27: x27 x28: x28
+STACK CFI 46c68 .cfa: sp 880 + .ra: .ra x29: x29
+STACK CFI 46c6c .cfa: sp 768 +
+STACK CFI INIT 222d0 a8 .cfa: sp 0 + .ra: x30
+STACK CFI 222d4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 222e0 .cfa: x29 32 +
+STACK CFI 222e4 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 2236c x19: x19 x20: x20
+STACK CFI 22370 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2351c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23520 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23524 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2354c 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23554 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23558 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 46c70 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 46c74 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 46c78 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 46c7c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 46c80 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 46c84 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 46c88 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 46c8c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 46c90 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 46c94 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235c8 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235d0 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235ec 24 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23610 6c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2367c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23680 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23688 40 .cfa: sp 0 + .ra: x30
+STACK CFI 2368c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 23690 .cfa: x29 32 +
+STACK CFI 23694 x19: .cfa -16 + ^
+STACK CFI 236c0 x19: x19
+STACK CFI 236c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 236c8 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 46c98 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 46c9c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 46ca0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 46ca4 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 46ca8 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 46cac 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 46cb0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 46cb4 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 46cb8 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 46cbc 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 237ec a8 .cfa: sp 0 + .ra: x30
+STACK CFI 237f0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 237f4 .cfa: x29 64 +
+STACK CFI 23800 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 23884 x23: x23
+STACK CFI 23888 x19: x19 x20: x20
+STACK CFI 2388c x21: x21 x22: x22
+STACK CFI 23890 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23738 b4 .cfa: sp 0 + .ra: x30
+STACK CFI 2373c .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 23740 .cfa: x29 64 +
+STACK CFI 2374c x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 237dc x23: x23
+STACK CFI 237e0 x19: x19 x20: x20
+STACK CFI 237e4 x21: x21 x22: x22
+STACK CFI 237e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23894 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 238a8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 238ac .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 238b0 .cfa: x29 32 +
+STACK CFI 238b4 x19: .cfa -16 + ^
+STACK CFI 238c4 x19: x19
+STACK CFI 238c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 238cc 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 238e0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 238e4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 238e8 .cfa: x29 32 +
+STACK CFI 238ec x19: .cfa -16 + ^
+STACK CFI 238fc x19: x19
+STACK CFI 23900 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 46cc0 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 46cd4 24 .cfa: sp 0 + .ra: x30
+STACK CFI 46cd8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 46cdc .cfa: x29 32 +
+STACK CFI 46ce0 x19: .cfa -16 + ^
+STACK CFI 46cf0 x19: x19
+STACK CFI 46cf4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 46cf8 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 46d0c 24 .cfa: sp 0 + .ra: x30
+STACK CFI 46d10 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 46d14 .cfa: x29 32 +
+STACK CFI 46d18 x19: .cfa -16 + ^
+STACK CFI 46d28 x19: x19
+STACK CFI 46d2c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 46d30 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 46d44 24 .cfa: sp 0 + .ra: x30
+STACK CFI 46d48 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 46d4c .cfa: x29 32 +
+STACK CFI 46d50 x19: .cfa -16 + ^
+STACK CFI 46d60 x19: x19
+STACK CFI 46d64 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 46d68 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 46d7c 24 .cfa: sp 0 + .ra: x30
+STACK CFI 46d80 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 46d84 .cfa: x29 32 +
+STACK CFI 46d88 x19: .cfa -16 + ^
+STACK CFI 46d98 x19: x19
+STACK CFI 46d9c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 46da0 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 46db4 24 .cfa: sp 0 + .ra: x30
+STACK CFI 46db8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 46dbc .cfa: x29 32 +
+STACK CFI 46dc0 x19: .cfa -16 + ^
+STACK CFI 46dd0 x19: x19
+STACK CFI 46dd4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 46dd8 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 46dec 24 .cfa: sp 0 + .ra: x30
+STACK CFI 46df0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 46df4 .cfa: x29 32 +
+STACK CFI 46df8 x19: .cfa -16 + ^
+STACK CFI 46e08 x19: x19
+STACK CFI 46e0c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 46e10 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 46e24 24 .cfa: sp 0 + .ra: x30
+STACK CFI 46e28 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 46e2c .cfa: x29 32 +
+STACK CFI 46e30 x19: .cfa -16 + ^
+STACK CFI 46e40 x19: x19
+STACK CFI 46e44 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 46e48 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 46e5c 24 .cfa: sp 0 + .ra: x30
+STACK CFI 46e60 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 46e64 .cfa: x29 32 +
+STACK CFI 46e68 x19: .cfa -16 + ^
+STACK CFI 46e78 x19: x19
+STACK CFI 46e7c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 46e80 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 46e94 24 .cfa: sp 0 + .ra: x30
+STACK CFI 46e98 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 46e9c .cfa: x29 32 +
+STACK CFI 46ea0 x19: .cfa -16 + ^
+STACK CFI 46eb0 x19: x19
+STACK CFI 46eb4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 46eb8 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 46ecc 24 .cfa: sp 0 + .ra: x30
+STACK CFI 46ed0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 46ed4 .cfa: x29 32 +
+STACK CFI 46ed8 x19: .cfa -16 + ^
+STACK CFI 46ee8 x19: x19
+STACK CFI 46eec .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 46ef0 3c .cfa: sp 0 + .ra: x30
+STACK CFI 46ef4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 46efc .cfa: x29 32 +
+STACK CFI 46f00 x19: .cfa -16 + ^
+STACK CFI 46f24 x19: x19
+STACK CFI 46f28 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 46f2c 3c .cfa: sp 0 + .ra: x30
+STACK CFI 46f30 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 46f38 .cfa: x29 32 +
+STACK CFI 46f3c x19: .cfa -16 + ^
+STACK CFI 46f60 x19: x19
+STACK CFI 46f64 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 46f68 3c .cfa: sp 0 + .ra: x30
+STACK CFI 46f6c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 46f74 .cfa: x29 32 +
+STACK CFI 46f78 x19: .cfa -16 + ^
+STACK CFI 46f9c x19: x19
+STACK CFI 46fa0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 46fa4 3c .cfa: sp 0 + .ra: x30
+STACK CFI 46fa8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 46fb0 .cfa: x29 32 +
+STACK CFI 46fb4 x19: .cfa -16 + ^
+STACK CFI 46fd8 x19: x19
+STACK CFI 46fdc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 46fe0 3c .cfa: sp 0 + .ra: x30
+STACK CFI 46fe4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 46fec .cfa: x29 32 +
+STACK CFI 46ff0 x19: .cfa -16 + ^
+STACK CFI 47014 x19: x19
+STACK CFI 47018 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4701c 3c .cfa: sp 0 + .ra: x30
+STACK CFI 47020 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 47028 .cfa: x29 32 +
+STACK CFI 4702c x19: .cfa -16 + ^
+STACK CFI 47050 x19: x19
+STACK CFI 47054 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 47058 3c .cfa: sp 0 + .ra: x30
+STACK CFI 4705c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 47064 .cfa: x29 32 +
+STACK CFI 47068 x19: .cfa -16 + ^
+STACK CFI 4708c x19: x19
+STACK CFI 47090 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 47094 3c .cfa: sp 0 + .ra: x30
+STACK CFI 47098 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 470a0 .cfa: x29 32 +
+STACK CFI 470a4 x19: .cfa -16 + ^
+STACK CFI 470c8 x19: x19
+STACK CFI 470cc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 470d0 3c .cfa: sp 0 + .ra: x30
+STACK CFI 470d4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 470dc .cfa: x29 32 +
+STACK CFI 470e0 x19: .cfa -16 + ^
+STACK CFI 47104 x19: x19
+STACK CFI 47108 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4710c 3c .cfa: sp 0 + .ra: x30
+STACK CFI 47110 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 47118 .cfa: x29 32 +
+STACK CFI 4711c x19: .cfa -16 + ^
+STACK CFI 47140 x19: x19
+STACK CFI 47144 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24794 b0 .cfa: sp 0 + .ra: x30
+STACK CFI 24798 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 2479c .cfa: x29 64 +
+STACK CFI 247a8 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 24834 x23: x23
+STACK CFI 24838 x19: x19 x20: x20
+STACK CFI 2483c x21: x21 x22: x22
+STACK CFI 24840 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2eb40 18 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 24844 40 .cfa: sp 0 + .ra: x30
+STACK CFI 24848 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 24854 .cfa: x29 32 +
+STACK CFI 24858 x19: .cfa -16 + ^
+STACK CFI 2487c x19: x19
+STACK CFI 24880 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24884 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 248a0 48 .cfa: sp 0 + .ra: x30
+STACK CFI 248a4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 248a8 .cfa: x29 32 +
+STACK CFI 248ac x19: .cfa -16 + ^
+STACK CFI 248e0 x19: x19
+STACK CFI 248e4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 248e8 30 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 24940 34 .cfa: sp 0 + .ra: x30
+STACK CFI 24948 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2494c .cfa: x29 32 +
+STACK CFI 24954 x19: .cfa -16 + ^
+STACK CFI 2496c x19: x19
+STACK CFI 24970 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24974 24 .cfa: sp 0 + .ra: x30
+STACK CFI 24978 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2497c .cfa: x29 32 +
+STACK CFI 24980 x19: .cfa -16 + ^
+STACK CFI 24990 x19: x19
+STACK CFI 24994 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 54 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^
+STACK CFI 40 x19: x19
+STACK CFI 44 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 48 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI 4c x19: x19
+STACK CFI 50 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24a00 fc .cfa: sp 0 + .ra: x30
+STACK CFI 24a04 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 24a0c .cfa: x29 96 +
+STACK CFI 24a18 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^
+STACK CFI 24aec x21: x21 x22: x22
+STACK CFI 24af0 x19: x19 x20: x20
+STACK CFI 24af4 x23: x23 x24: x24
+STACK CFI 24af8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24afc b4 .cfa: sp 0 + .ra: x30
+STACK CFI 24b00 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 24b04 .cfa: x29 48 +
+STACK CFI 24b08 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 24b18 x21: .cfa -16 + ^
+STACK CFI 24ba4 x21: x21
+STACK CFI 24ba8 x19: x19 x20: x20
+STACK CFI 24bac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24bb0 b0 .cfa: sp 0 + .ra: x30
+STACK CFI 24bb4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 24bb8 .cfa: x29 48 +
+STACK CFI 24bc0 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 24c40 x21: x21
+STACK CFI 24c58 x19: x19 x20: x20
+STACK CFI 24c5c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24d14 3c .cfa: sp 0 + .ra: x30
+STACK CFI 24d18 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 24d1c .cfa: x29 16 +
+STACK CFI 24d4c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 54 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^
+STACK CFI 4c x19: x19
+STACK CFI 50 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 250a4 58 .cfa: sp 0 + .ra: x30
+STACK CFI 250a8 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 250ac .cfa: x29 48 +
+STACK CFI 250b0 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 250b8 x21: .cfa -16 + ^
+STACK CFI 250f0 x19: x19 x20: x20
+STACK CFI 250f4 x21: x21
+STACK CFI 250f8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 f4 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 18 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI e8 x19: x19 x20: x20
+STACK CFI ec x21: x21 x22: x22
+STACK CFI f0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 c8 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI 10 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI b4 x21: x21
+STACK CFI c0 x19: x19 x20: x20
+STACK CFI c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 251f0 8c .cfa: sp 0 + .ra: x30
+STACK CFI 251f4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 251f8 .cfa: x29 48 +
+STACK CFI 251fc x19: .cfa -32 + ^
+STACK CFI 25268 x19: x19
+STACK CFI 2526c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 25270 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 25274 x19: x19
+STACK CFI 25278 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2527c c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25288 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25298 24 .cfa: sp 0 + .ra: x30
+STACK CFI 2529c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 252a0 .cfa: x29 32 +
+STACK CFI 252a4 x19: .cfa -16 + ^
+STACK CFI 252b4 x19: x19
+STACK CFI 252b8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 252bc 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 252cc c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 252d8 8c .cfa: sp 0 + .ra: x30
+STACK CFI 252dc .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 252e0 .cfa: x29 48 +
+STACK CFI 252e4 x19: .cfa -32 + ^
+STACK CFI 25350 x19: x19
+STACK CFI 25354 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 25358 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 2535c x19: x19
+STACK CFI 25360 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25364 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25370 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25380 24 .cfa: sp 0 + .ra: x30
+STACK CFI 25384 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 25388 .cfa: x29 32 +
+STACK CFI 2538c x19: .cfa -16 + ^
+STACK CFI 2539c x19: x19
+STACK CFI 253a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 253a4 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 253b4 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 253c0 e0 .cfa: sp 0 + .ra: x30
+STACK CFI 253c4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 253c8 .cfa: x29 48 +
+STACK CFI 253cc x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 2548c x19: x19 x20: x20
+STACK CFI 25490 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 25494 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x29: .cfa -48 + ^
+STACK CFI 25498 x19: x19 x20: x20
+STACK CFI 2549c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 254a0 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 254ac cc .cfa: sp 0 + .ra: x30
+STACK CFI 254b0 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 254b4 .cfa: x29 48 +
+STACK CFI 254b8 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 25564 x19: x19 x20: x20
+STACK CFI 25568 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2556c .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x29: .cfa -48 + ^
+STACK CFI 25570 x19: x19 x20: x20
+STACK CFI 25574 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25578 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25584 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25590 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25598 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255a8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 255ac .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 255b0 .cfa: x29 32 +
+STACK CFI 255b4 x19: .cfa -16 + ^
+STACK CFI 255c4 x19: x19
+STACK CFI 255c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 255cc 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255d4 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255e4 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255f0 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255f8 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25608 24 .cfa: sp 0 + .ra: x30
+STACK CFI 2560c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 25610 .cfa: x29 32 +
+STACK CFI 25614 x19: .cfa -16 + ^
+STACK CFI 25624 x19: x19
+STACK CFI 25628 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2562c 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25634 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25644 5c .cfa: sp 0 + .ra: x30
+STACK CFI 25648 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2564c .cfa: x29 32 +
+STACK CFI 25650 x19: .cfa -16 + ^
+STACK CFI 25698 x19: x19
+STACK CFI 2569c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 256a0 78 .cfa: sp 0 + .ra: x30
+STACK CFI 256a4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 256ac .cfa: x29 32 +
+STACK CFI 256b0 x19: .cfa -16 + ^
+STACK CFI 25710 x19: x19
+STACK CFI 25714 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25718 50 .cfa: sp 0 + .ra: x30
+STACK CFI 2571c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 25720 .cfa: x29 32 +
+STACK CFI 25724 x19: .cfa -16 + ^
+STACK CFI 25754 x19: x19
+STACK CFI 25758 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2575c .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI 25760 x19: x19
+STACK CFI 25764 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 140 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI 10 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 134 x19: x19 x20: x20
+STACK CFI 138 x21: x21 x22: x22
+STACK CFI 13c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 cc .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI 10 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI bc x21: x21
+STACK CFI c4 x19: x19 x20: x20
+STACK CFI c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25b54 5c .cfa: sp 0 + .ra: x30
+STACK CFI 25b58 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 25b5c .cfa: x29 16 +
+STACK CFI 25bac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 cc .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI 10 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI bc x21: x21
+STACK CFI c4 x19: x19 x20: x20
+STACK CFI c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 28074 5c .cfa: sp 0 + .ra: x30
+STACK CFI 28078 .cfa: sp 336 + .ra: .cfa -328 + ^ x29: .cfa -336 + ^
+STACK CFI 28080 .cfa: x29 336 +
+STACK CFI 28084 x19: .cfa -320 + ^ x20: .cfa -312 + ^
+STACK CFI 2808c x21: .cfa -304 + ^
+STACK CFI 280c0 x21: x21
+STACK CFI 280c8 x19: x19 x20: x20
+STACK CFI 280cc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 47148 148 .cfa: sp 0 + .ra: x30
+STACK CFI 4714c .cfa: sp 208 + .ra: .cfa -200 + ^ x29: .cfa -208 + ^
+STACK CFI 47150 .cfa: x29 208 +
+STACK CFI 47158 x19: .cfa -192 + ^ x20: .cfa -184 + ^ x21: .cfa -176 + ^ x22: .cfa -168 + ^
+STACK CFI 47174 x23: .cfa -160 + ^ x24: .cfa -152 + ^ x25: .cfa -144 + ^
+STACK CFI 4727c x19: x19 x20: x20
+STACK CFI 47280 x21: x21 x22: x22
+STACK CFI 47284 x23: x23 x24: x24
+STACK CFI 47288 x25: x25
+STACK CFI 4728c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 134 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 384 + .ra: .cfa -376 + ^ x29: .cfa -384 + ^
+STACK CFI c .cfa: x29 384 +
+STACK CFI 10 x19: .cfa -368 + ^ x20: .cfa -360 + ^
+STACK CFI 20 x21: .cfa -352 + ^ x22: .cfa -344 + ^
+STACK CFI 28 x23: .cfa -336 + ^ x24: .cfa -328 + ^
+STACK CFI 124 x19: x19 x20: x20
+STACK CFI 128 x21: x21 x22: x22
+STACK CFI 12c x23: x23 x24: x24
+STACK CFI 130 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26c88 9c .cfa: sp 0 + .ra: x30
+STACK CFI 26c8c .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 26c90 .cfa: x29 160 +
+STACK CFI 26c98 x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^
+STACK CFI 26d18 x19: x19 x20: x20
+STACK CFI 26d1c x21: x21 x22: x22
+STACK CFI 26d20 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 47290 124 .cfa: sp 0 + .ra: x30
+STACK CFI 47294 .cfa: sp 128 + .ra: .cfa -120 + ^ x29: .cfa -128 + ^
+STACK CFI 47298 .cfa: x29 128 +
+STACK CFI 472a4 x19: .cfa -112 + ^ x20: .cfa -104 + ^ x21: .cfa -96 + ^ x22: .cfa -88 + ^ x23: .cfa -80 + ^ x24: .cfa -72 + ^
+STACK CFI 472b8 x25: .cfa -64 + ^
+STACK CFI 473a0 x19: x19 x20: x20
+STACK CFI 473a4 x21: x21 x22: x22
+STACK CFI 473a8 x23: x23 x24: x24
+STACK CFI 473ac x25: x25
+STACK CFI 473b0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 473b4 73c .cfa: sp 0 + .ra: x30
+STACK CFI 473b8 .cfa: sp 176 + .ra: .cfa -168 + ^ x29: .cfa -176 + ^
+STACK CFI 473c0 .cfa: x29 176 +
+STACK CFI 473c4 x21: .cfa -144 + ^ x22: .cfa -136 + ^
+STACK CFI 473dc x19: .cfa -160 + ^ x20: .cfa -152 + ^ x23: .cfa -128 + ^ x24: .cfa -120 + ^ x25: .cfa -112 + ^ x26: .cfa -104 + ^
+STACK CFI 47adc x19: x19 x20: x20
+STACK CFI 47ae0 x21: x21 x22: x22
+STACK CFI 47ae4 x23: x23 x24: x24
+STACK CFI 47ae8 x25: x25 x26: x26
+STACK CFI 47aec .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 47af0 338 .cfa: sp 0 + .ra: x30
+STACK CFI 47af4 .cfa: sp 128 + .ra: .cfa -120 + ^ x29: .cfa -128 + ^
+STACK CFI 47b00 .cfa: x29 128 +
+STACK CFI 47b04 x23: .cfa -80 + ^ x24: .cfa -72 + ^
+STACK CFI 47b1c x19: .cfa -112 + ^ x20: .cfa -104 + ^ x21: .cfa -96 + ^ x22: .cfa -88 + ^
+STACK CFI 47e18 x19: x19 x20: x20
+STACK CFI 47e1c x21: x21 x22: x22
+STACK CFI 47e20 x23: x23 x24: x24
+STACK CFI 47e24 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 279ec 5c .cfa: sp 0 + .ra: x30
+STACK CFI 279f0 .cfa: sp 336 + .ra: .cfa -328 + ^ x29: .cfa -336 + ^
+STACK CFI 279f8 .cfa: x29 336 +
+STACK CFI 279fc x19: .cfa -320 + ^ x20: .cfa -312 + ^
+STACK CFI 27a04 x21: .cfa -304 + ^
+STACK CFI 27a38 x21: x21
+STACK CFI 27a40 x19: x19 x20: x20
+STACK CFI 27a44 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 27b7c 9c .cfa: sp 0 + .ra: x30
+STACK CFI 27b80 .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 27b84 .cfa: x29 160 +
+STACK CFI 27b8c x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^
+STACK CFI 27c0c x19: x19 x20: x20
+STACK CFI 27c10 x21: x21 x22: x22
+STACK CFI 27c14 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 47e28 484 .cfa: sp 0 + .ra: x30
+STACK CFI 47e2c .cfa: sp 112 + .ra: .cfa -104 + ^ x29: .cfa -112 + ^
+STACK CFI 47e34 .cfa: x29 112 +
+STACK CFI 47e44 x19: .cfa -96 + ^ x20: .cfa -88 + ^ x21: .cfa -80 + ^ x22: .cfa -72 + ^ x23: .cfa -64 + ^ x24: .cfa -56 + ^ x25: .cfa -48 + ^
+STACK CFI 48298 x25: x25
+STACK CFI 4829c x19: x19 x20: x20
+STACK CFI 482a0 x21: x21 x22: x22
+STACK CFI 482a4 x23: x23 x24: x24
+STACK CFI 482a8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 280d0 9c .cfa: sp 0 + .ra: x30
+STACK CFI 280d4 .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 280d8 .cfa: x29 160 +
+STACK CFI 280e0 x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^
+STACK CFI 28160 x19: x19 x20: x20
+STACK CFI 28164 x21: x21 x22: x22
+STACK CFI 28168 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2eb58 88 .cfa: sp 0 + .ra: x30
+STACK CFI 2eb5c .cfa: sp 352 + .ra: .cfa -344 + ^ x29: .cfa -352 + ^
+STACK CFI 2eb64 .cfa: x29 352 +
+STACK CFI 2eb68 x19: .cfa -336 + ^ x20: .cfa -328 + ^
+STACK CFI 2eb78 x21: .cfa -320 + ^
+STACK CFI 2ebd4 x21: x21
+STACK CFI 2ebd8 x19: x19 x20: x20
+STACK CFI 2ebdc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 482ac a8 .cfa: sp 0 + .ra: x30
+STACK CFI 482b0 .cfa: sp 176 + .ra: .cfa -168 + ^ x29: .cfa -176 + ^
+STACK CFI 482b4 .cfa: x29 176 +
+STACK CFI 482bc x19: .cfa -160 + ^ x20: .cfa -152 + ^ x21: .cfa -144 + ^ x22: .cfa -136 + ^
+STACK CFI 48348 x19: x19 x20: x20
+STACK CFI 4834c x21: x21 x22: x22
+STACK CFI 48350 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 48354 458 .cfa: sp 0 + .ra: x30
+STACK CFI 48358 .cfa: sp 208 + .ra: .cfa -200 + ^ x29: .cfa -208 + ^
+STACK CFI 48360 .cfa: x29 208 +
+STACK CFI 48364 x23: .cfa -160 + ^ x24: .cfa -152 + ^
+STACK CFI 48380 x19: .cfa -192 + ^ x20: .cfa -184 + ^ x21: .cfa -176 + ^ x22: .cfa -168 + ^
+STACK CFI 4879c x19: x19 x20: x20
+STACK CFI 487a0 x21: x21 x22: x22
+STACK CFI 487a4 x23: x23 x24: x24
+STACK CFI 487a8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 487ac 418 .cfa: sp 0 + .ra: x30
+STACK CFI 487b0 .cfa: sp 176 + .ra: .cfa -168 + ^ x29: .cfa -176 + ^
+STACK CFI 487b8 .cfa: x29 176 +
+STACK CFI 487bc x23: .cfa -128 + ^ x24: .cfa -120 + ^
+STACK CFI 487d8 x19: .cfa -160 + ^ x20: .cfa -152 + ^ x21: .cfa -144 + ^ x22: .cfa -136 + ^
+STACK CFI 48bb4 x19: x19 x20: x20
+STACK CFI 48bb8 x21: x21 x22: x22
+STACK CFI 48bbc x23: x23 x24: x24
+STACK CFI 48bc0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 27850 88 .cfa: sp 0 + .ra: x30
+STACK CFI 27854 .cfa: sp 352 + .ra: .cfa -344 + ^ x29: .cfa -352 + ^
+STACK CFI 2785c .cfa: x29 352 +
+STACK CFI 27860 x19: .cfa -336 + ^ x20: .cfa -328 + ^
+STACK CFI 27870 x21: .cfa -320 + ^
+STACK CFI 278cc x21: x21
+STACK CFI 278d0 x19: x19 x20: x20
+STACK CFI 278d4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 48bc4 84 .cfa: sp 0 + .ra: x30
+STACK CFI 48bc8 .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 48bcc .cfa: x29 160 +
+STACK CFI 48bd0 x19: .cfa -144 + ^ x20: .cfa -136 + ^
+STACK CFI 48bdc x21: .cfa -128 + ^ x22: .cfa -120 + ^
+STACK CFI 48c3c x19: x19 x20: x20
+STACK CFI 48c40 x21: x21 x22: x22
+STACK CFI 48c44 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 48c48 9c .cfa: sp 0 + .ra: x30
+STACK CFI 48c4c .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 48c50 .cfa: x29 160 +
+STACK CFI 48c58 x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^
+STACK CFI 48cd8 x19: x19 x20: x20
+STACK CFI 48cdc x21: x21 x22: x22
+STACK CFI 48ce0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 48ce4 9c .cfa: sp 0 + .ra: x30
+STACK CFI 48ce8 .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 48cec .cfa: x29 160 +
+STACK CFI 48cf4 x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^
+STACK CFI 48d74 x19: x19 x20: x20
+STACK CFI 48d78 x21: x21 x22: x22
+STACK CFI 48d7c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 48d80 3bc .cfa: sp 0 + .ra: x30
+STACK CFI 48d84 .cfa: sp 128 + .ra: .cfa -120 + ^ x29: .cfa -128 + ^
+STACK CFI 48d90 .cfa: x29 128 +
+STACK CFI 48da4 x19: .cfa -112 + ^ x20: .cfa -104 + ^ x21: .cfa -96 + ^ x22: .cfa -88 + ^ x23: .cfa -80 + ^
+STACK CFI 4912c x23: x23
+STACK CFI 49130 x19: x19 x20: x20
+STACK CFI 49134 x21: x21 x22: x22
+STACK CFI 49138 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4913c 5c .cfa: sp 0 + .ra: x30
+STACK CFI 49140 .cfa: sp 336 + .ra: .cfa -328 + ^ x29: .cfa -336 + ^
+STACK CFI 49148 .cfa: x29 336 +
+STACK CFI 4914c x19: .cfa -320 + ^ x20: .cfa -312 + ^
+STACK CFI 49154 x21: .cfa -304 + ^
+STACK CFI 49188 x21: x21
+STACK CFI 49190 x19: x19 x20: x20
+STACK CFI 49194 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 9c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 8 .cfa: x29 160 +
+STACK CFI 10 x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^
+STACK CFI 90 x19: x19 x20: x20
+STACK CFI 94 x21: x21 x22: x22
+STACK CFI 98 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 49198 9c .cfa: sp 0 + .ra: x30
+STACK CFI 4919c .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 491a0 .cfa: x29 160 +
+STACK CFI 491a8 x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^
+STACK CFI 49228 x19: x19 x20: x20
+STACK CFI 4922c x21: x21 x22: x22
+STACK CFI 49230 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 49234 47c .cfa: sp 0 + .ra: x30
+STACK CFI 49238 .cfa: sp 144 + .ra: .cfa -136 + ^ x29: .cfa -144 + ^
+STACK CFI 49240 .cfa: x29 144 +
+STACK CFI 49244 x21: .cfa -112 + ^ x22: .cfa -104 + ^
+STACK CFI 49258 x23: .cfa -96 + ^ x24: .cfa -88 + ^ x25: .cfa -80 + ^ x26: .cfa -72 + ^
+STACK CFI 49268 x19: .cfa -128 + ^ x20: .cfa -120 + ^ x27: .cfa -64 + ^ x28: .cfa -56 + ^
+STACK CFI 49698 x19: x19 x20: x20
+STACK CFI 4969c x21: x21 x22: x22
+STACK CFI 496a0 x23: x23 x24: x24
+STACK CFI 496a4 x25: x25 x26: x26
+STACK CFI 496a8 x27: x27 x28: x28
+STACK CFI 496ac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 496b0 390 .cfa: sp 0 + .ra: x30
+STACK CFI 496b4 .cfa: sp 144 + .ra: .cfa -136 + ^ x29: .cfa -144 + ^
+STACK CFI 496b8 .cfa: x29 144 +
+STACK CFI 496bc x25: .cfa -80 + ^ x26: .cfa -72 + ^
+STACK CFI 496c8 x21: .cfa -112 + ^ x22: .cfa -104 + ^
+STACK CFI 496e0 x19: .cfa -128 + ^ x20: .cfa -120 + ^ x23: .cfa -96 + ^ x24: .cfa -88 + ^ x27: .cfa -64 + ^ x28: .cfa -56 + ^
+STACK CFI 49a28 x19: x19 x20: x20
+STACK CFI 49a2c x21: x21 x22: x22
+STACK CFI 49a30 x23: x23 x24: x24
+STACK CFI 49a34 x25: x25 x26: x26
+STACK CFI 49a38 x27: x27 x28: x28
+STACK CFI 49a3c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 282a4 28 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 282cc 20 .cfa: sp 0 + .ra: x30
+STACK CFI 282d0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 282d8 .cfa: x29 32 +
+STACK CFI 282e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 282ec 20 .cfa: sp 0 + .ra: x30
+STACK CFI 282f0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 282f8 .cfa: x29 32 +
+STACK CFI 28308 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2830c 110 .cfa: sp 0 + .ra: x30
+STACK CFI 28310 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2831c .cfa: x29 32 +
+STACK CFI 28398 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2839c .cfa: x29 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI INIT 2841c 124 .cfa: sp 0 + .ra: x30
+STACK CFI 28420 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 28424 .cfa: x29 80 +
+STACK CFI 28430 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^
+STACK CFI 28530 x19: x19 x20: x20
+STACK CFI 28534 x21: x21 x22: x22
+STACK CFI 28538 x23: x23 x24: x24
+STACK CFI 2853c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 9c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI 10 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI 8c x21: x21
+STACK CFI 94 x19: x19 x20: x20
+STACK CFI 98 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 7c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 74 x19: x19 x20: x20
+STACK CFI 78 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 28650 c4 .cfa: sp 0 + .ra: x30
+STACK CFI 28654 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 2865c .cfa: x29 48 +
+STACK CFI 28664 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 28708 x19: x19 x20: x20
+STACK CFI 2870c x21: x21
+STACK CFI 28710 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 d0 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI 10 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI c4 x21: x21
+STACK CFI c8 x19: x19 x20: x20
+STACK CFI cc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 287cc 10c .cfa: sp 0 + .ra: x30
+STACK CFI 287d0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 287d8 .cfa: x29 64 +
+STACK CFI 287e0 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x23: .cfa -16 + ^
+STACK CFI 287e8 x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 288c8 x19: x19 x20: x20
+STACK CFI 288cc x21: x21 x22: x22
+STACK CFI 288d0 x23: x23
+STACK CFI 288d4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 288d8 f0 .cfa: sp 0 + .ra: x30
+STACK CFI 288dc .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 288e4 .cfa: x29 64 +
+STACK CFI 288f0 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 289b8 x23: x23
+STACK CFI 289bc x19: x19 x20: x20
+STACK CFI 289c0 x21: x21 x22: x22
+STACK CFI 289c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 114 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI c .cfa: x29 80 +
+STACK CFI 18 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI 104 x23: x23
+STACK CFI 108 x19: x19 x20: x20
+STACK CFI 10c x21: x21 x22: x22
+STACK CFI 110 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26984 124 .cfa: sp 0 + .ra: x30
+STACK CFI 26988 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 26990 .cfa: x29 80 +
+STACK CFI 2699c x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI 26a98 x19: x19 x20: x20
+STACK CFI 26a9c x21: x21 x22: x22
+STACK CFI 26aa0 x23: x23
+STACK CFI 26aa4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 22378 358 .cfa: sp 0 + .ra: x30
+STACK CFI 2237c .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 22380 .cfa: x29 64 +
+STACK CFI 22388 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 226bc x21: x21
+STACK CFI 226c4 x19: x19 x20: x20
+STACK CFI 226c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2eb40 18 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 43124 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 49a40 5c .cfa: sp 0 + .ra: x30
+STACK CFI 49a44 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 49a48 .cfa: x29 64 +
+STACK CFI 49a50 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 49a8c x21: x21
+STACK CFI 49a94 x19: x19 x20: x20
+STACK CFI 49a98 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 49a9c 74 .cfa: sp 0 + .ra: x30
+STACK CFI 49aa0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 49aa8 .cfa: x29 32 +
+STACK CFI 49aac x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 49ad8 x19: x19 x20: x20
+STACK CFI 49adc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 49ae0 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x20: .cfa -8 + ^ x29: .cfa -32 + ^
+STACK CFI 49b04 x19: x19 x20: x20
+STACK CFI 49b08 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 49b10 150 .cfa: sp 0 + .ra: x30
+STACK CFI 49b14 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 49b18 .cfa: x29 80 +
+STACK CFI 49b28 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^ x25: .cfa -16 + ^ x26: .cfa -8 + ^
+STACK CFI 49c4c x19: x19 x20: x20
+STACK CFI 49c50 x21: x21 x22: x22
+STACK CFI 49c54 x23: x23 x24: x24
+STACK CFI 49c58 x25: x25 x26: x26
+STACK CFI 49c5c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 24 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 432e4 70 .cfa: sp 0 + .ra: x30
+STACK CFI 432ec .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 432f0 .cfa: x29 48 +
+STACK CFI 432fc x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 43348 x21: x21
+STACK CFI 4334c x19: x19 x20: x20
+STACK CFI 43350 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 43354 24 .cfa: sp 0 + .ra: x30
+STACK CFI 43358 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 4335c .cfa: x29 32 +
+STACK CFI 43360 x19: .cfa -16 + ^
+STACK CFI 43370 x19: x19
+STACK CFI 43374 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 49c60 34 .cfa: sp 0 + .ra: x30
+STACK CFI 49c68 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 49c6c .cfa: x29 32 +
+STACK CFI 49c74 x19: .cfa -16 + ^
+STACK CFI 49c8c x19: x19
+STACK CFI 49c90 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 49c94 24 .cfa: sp 0 + .ra: x30
+STACK CFI 49c98 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 49c9c .cfa: x29 32 +
+STACK CFI 49ca0 x19: .cfa -16 + ^
+STACK CFI 49cb0 x19: x19
+STACK CFI 49cb4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 49cb8 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 49ccc 24 .cfa: sp 0 + .ra: x30
+STACK CFI 49cd0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 49cd4 .cfa: x29 32 +
+STACK CFI 49cd8 x19: .cfa -16 + ^
+STACK CFI 49ce8 x19: x19
+STACK CFI 49cec .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 9c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI 10 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI 8c x21: x21
+STACK CFI 94 x19: x19 x20: x20
+STACK CFI 98 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25b54 5c .cfa: sp 0 + .ra: x30
+STACK CFI 25b58 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 25b5c .cfa: x29 16 +
+STACK CFI 25bac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 170 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI c .cfa: x29 80 +
+STACK CFI 18 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI 160 x23: x23
+STACK CFI 164 x19: x19 x20: x20
+STACK CFI 168 x21: x21 x22: x22
+STACK CFI 16c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 7c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 74 x19: x19 x20: x20
+STACK CFI 78 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 49cf0 b4 .cfa: sp 0 + .ra: x30
+STACK CFI 49cf4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 49cf8 .cfa: x29 80 +
+STACK CFI 49d00 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI 49d98 x21: x21
+STACK CFI 49d9c x19: x19 x20: x20
+STACK CFI 49da0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 49da4 108 .cfa: sp 0 + .ra: x30
+STACK CFI 49da8 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 49dac .cfa: x29 96 +
+STACK CFI 49db8 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^
+STACK CFI 49e9c x23: x23 x24: x24
+STACK CFI 49ea0 x19: x19 x20: x20
+STACK CFI 49ea4 x21: x21 x22: x22
+STACK CFI 49ea8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 54 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^
+STACK CFI 4c x19: x19
+STACK CFI 50 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 6c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 14 x21: .cfa -16 + ^
+STACK CFI 60 x19: x19 x20: x20
+STACK CFI 64 x21: x21
+STACK CFI 68 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 68 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 14 x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 5c x19: x19 x20: x20
+STACK CFI 60 x21: x21 x22: x22
+STACK CFI 64 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 49eac 58 .cfa: sp 0 + .ra: x30
+STACK CFI 49eb0 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 49eb8 .cfa: x29 48 +
+STACK CFI 49ebc x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 49efc x19: x19 x20: x20
+STACK CFI 49f00 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 5c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^
+STACK CFI 54 x19: x19
+STACK CFI 58 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 49f04 48 .cfa: sp 0 + .ra: x30
+STACK CFI 49f08 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 49f0c .cfa: x29 48 +
+STACK CFI 49f10 x19: .cfa -32 + ^
+STACK CFI 49f44 x19: x19
+STACK CFI 49f48 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 435f8 64 .cfa: sp 0 + .ra: x30
+STACK CFI 435fc .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 43600 .cfa: x29 48 +
+STACK CFI 43608 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 43650 x19: x19 x20: x20
+STACK CFI 43654 x21: x21 x22: x22
+STACK CFI 43658 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4365c 48 .cfa: sp 0 + .ra: x30
+STACK CFI 43664 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 43668 .cfa: x29 32 +
+STACK CFI 43670 x19: .cfa -16 + ^
+STACK CFI 4369c x19: x19
+STACK CFI 436a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 436a4 24 .cfa: sp 0 + .ra: x30
+STACK CFI 436a8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 436ac .cfa: x29 32 +
+STACK CFI 436b0 x19: .cfa -16 + ^
+STACK CFI 436c0 x19: x19
+STACK CFI 436c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 436c8 b8 .cfa: sp 0 + .ra: x30
+STACK CFI 436cc .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 436d0 .cfa: x29 48 +
+STACK CFI 436d4 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 436e0 x21: .cfa -16 + ^
+STACK CFI 43770 x21: x21
+STACK CFI 43778 x19: x19 x20: x20
+STACK CFI 4377c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 43780 24 .cfa: sp 0 + .ra: x30
+STACK CFI 43784 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 43788 .cfa: x29 32 +
+STACK CFI 4378c x19: .cfa -16 + ^
+STACK CFI 4379c x19: x19
+STACK CFI 437a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 31b50 60 .cfa: sp 0 + .ra: x30
+STACK CFI 31b54 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 31b60 .cfa: x29 32 +
+STACK CFI 31b64 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 31ba8 x19: x19 x20: x20
+STACK CFI 31bac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 49f4c 98 .cfa: sp 0 + .ra: x30
+STACK CFI 49f50 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 49f54 .cfa: x29 32 +
+STACK CFI 49f58 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 49fdc x19: x19 x20: x20
+STACK CFI 49fe0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 49fe4 204 .cfa: sp 0 + .ra: x30
+STACK CFI 49fe8 .cfa: sp 128 + .ra: .cfa -120 + ^ x29: .cfa -128 + ^
+STACK CFI 49fec .cfa: x29 128 +
+STACK CFI 49ff0 x21: .cfa -96 + ^ x22: .cfa -88 + ^
+STACK CFI 4a000 v8: .cfa -32 + ^ x25: .cfa -64 + ^ x26: .cfa -56 + ^
+STACK CFI 4a01c x27: .cfa -48 + ^ x28: .cfa -40 + ^
+STACK CFI 4a034 x19: .cfa -112 + ^ x20: .cfa -104 + ^ x23: .cfa -80 + ^ x24: .cfa -72 + ^
+STACK CFI 4a1cc x23: x23 x24: x24
+STACK CFI 4a1d0 x19: x19 x20: x20
+STACK CFI 4a1d4 x21: x21 x22: x22
+STACK CFI 4a1d8 x25: x25 x26: x26
+STACK CFI 4a1dc x27: x27 x28: x28
+STACK CFI 4a1e0 v8: v8
+STACK CFI 4a1e4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4a1e8 5c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 31bb0 5c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 31c0c 5c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 31c68 124 .cfa: sp 0 + .ra: x30
+STACK CFI 31c6c .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 31c70 .cfa: x29 48 +
+STACK CFI 31c78 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 31ca0 x19: x19 x20: x20
+STACK CFI 31ca4 x21: x21 x22: x22
+STACK CFI 31ca8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 31cac .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^ x29: .cfa -48 + ^
+STACK CFI INIT 4a244 dc .cfa: sp 0 + .ra: x30
+STACK CFI 4a248 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 4a250 .cfa: x29 64 +
+STACK CFI 4a258 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 4a314 x19: x19 x20: x20
+STACK CFI 4a318 x21: x21 x22: x22
+STACK CFI 4a31c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4a320 fc .cfa: sp 0 + .ra: x30
+STACK CFI 4a324 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 4a328 .cfa: x29 96 +
+STACK CFI 4a334 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^
+STACK CFI 4a40c x19: x19 x20: x20
+STACK CFI 4a410 x21: x21 x22: x22
+STACK CFI 4a414 x23: x23
+STACK CFI 4a418 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4a41c 2d4 .cfa: sp 0 + .ra: x30
+STACK CFI 4a420 .cfa: sp 112 + .ra: .cfa -104 + ^ x29: .cfa -112 + ^
+STACK CFI 4a424 .cfa: x29 112 +
+STACK CFI 4a434 x19: .cfa -96 + ^ x20: .cfa -88 + ^ x21: .cfa -80 + ^ x22: .cfa -72 + ^ x23: .cfa -64 + ^ x24: .cfa -56 + ^ x25: .cfa -48 + ^
+STACK CFI 4a6dc x25: x25
+STACK CFI 4a6e0 x19: x19 x20: x20
+STACK CFI 4a6e4 x21: x21 x22: x22
+STACK CFI 4a6e8 x23: x23 x24: x24
+STACK CFI 4a6ec .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4a6f0 ec .cfa: sp 0 + .ra: x30
+STACK CFI 4a6f4 .cfa: sp 144 + .ra: .cfa -136 + ^ x29: .cfa -144 + ^
+STACK CFI 4a6f8 .cfa: x29 144 +
+STACK CFI 4a704 x19: .cfa -128 + ^ x20: .cfa -120 + ^ x21: .cfa -112 + ^ x22: .cfa -104 + ^ x23: .cfa -96 + ^
+STACK CFI 4a7cc x23: x23
+STACK CFI 4a7d0 x19: x19 x20: x20
+STACK CFI 4a7d4 x21: x21 x22: x22
+STACK CFI 4a7d8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4a7dc 120 .cfa: sp 0 + .ra: x30
+STACK CFI 4a7e0 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 4a7e4 .cfa: x29 80 +
+STACK CFI 4a7f0 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^
+STACK CFI 4a8ec x19: x19 x20: x20
+STACK CFI 4a8f0 x21: x21 x22: x22
+STACK CFI 4a8f4 x23: x23 x24: x24
+STACK CFI 4a8f8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4a8fc a4 .cfa: sp 0 + .ra: x30
+STACK CFI 4a900 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 4a904 .cfa: x29 96 +
+STACK CFI 4a90c x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^
+STACK CFI 4a994 x21: x21
+STACK CFI 4a998 x19: x19 x20: x20
+STACK CFI 4a99c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4a9a0 a4 .cfa: sp 0 + .ra: x30
+STACK CFI 4a9a4 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 4a9a8 .cfa: x29 96 +
+STACK CFI 4a9b0 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^
+STACK CFI 4aa38 x21: x21
+STACK CFI 4aa3c x19: x19 x20: x20
+STACK CFI 4aa40 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4aa44 210 .cfa: sp 0 + .ra: x30
+STACK CFI 4aa48 .cfa: sp 288 + .ra: .cfa -280 + ^ x29: .cfa -288 + ^
+STACK CFI 4aa4c .cfa: x29 288 +
+STACK CFI 4aa50 x21: .cfa -256 + ^ x22: .cfa -248 + ^
+STACK CFI 4aa5c x19: .cfa -272 + ^ x20: .cfa -264 + ^
+STACK CFI 4aa80 x23: .cfa -240 + ^ x24: .cfa -232 + ^ x25: .cfa -224 + ^ x26: .cfa -216 + ^ x27: .cfa -208 + ^ x28: .cfa -200 + ^
+STACK CFI 4ac3c x19: x19 x20: x20
+STACK CFI 4ac40 x21: x21 x22: x22
+STACK CFI 4ac44 x23: x23 x24: x24
+STACK CFI 4ac48 x25: x25 x26: x26
+STACK CFI 4ac4c x27: x27 x28: x28
+STACK CFI 4ac50 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4ac54 100 .cfa: sp 0 + .ra: x30
+STACK CFI 4ac58 .cfa: sp 112 +
+STACK CFI 4ac5c .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 4ac60 .cfa: x29 96 +
+STACK CFI 4ac64 x19: .cfa -80 + ^ x20: .cfa -72 + ^
+STACK CFI 4ad44 .cfa: sp 112 +
+STACK CFI 4ad48 x19: x19 x20: x20
+STACK CFI 4ad4c .ra: .ra x29: x29
+STACK CFI 4ad50 .cfa: sp 0 +
+STACK CFI INIT 4ad54 438 .cfa: sp 0 + .ra: x30
+STACK CFI 4ad58 .cfa: sp 320 +
+STACK CFI 4ad60 .ra: .cfa -296 + ^ x29: .cfa -304 + ^
+STACK CFI 4ad64 .cfa: x29 304 +
+STACK CFI 4ad6c v10: .cfa -192 + ^ v8: .cfa -208 + ^ v9: .cfa -200 + ^
+STACK CFI 4ad80 x19: .cfa -288 + ^ x20: .cfa -280 + ^
+STACK CFI 4ad8c x21: .cfa -272 + ^ x22: .cfa -264 + ^ x23: .cfa -256 + ^ x24: .cfa -248 + ^
+STACK CFI 4ad9c x25: .cfa -240 + ^ x26: .cfa -232 + ^ x27: .cfa -224 + ^ x28: .cfa -216 + ^
+STACK CFI 4b164 .cfa: sp 320 +
+STACK CFI 4b168 v8: v8 v9: v9
+STACK CFI 4b16c v10: v10
+STACK CFI 4b170 x19: x19 x20: x20
+STACK CFI 4b174 x21: x21 x22: x22
+STACK CFI 4b178 x23: x23 x24: x24
+STACK CFI 4b17c x25: x25 x26: x26
+STACK CFI 4b180 x27: x27 x28: x28
+STACK CFI 4b184 .ra: .ra x29: x29
+STACK CFI 4b188 .cfa: sp 0 +
+STACK CFI INIT 4b18c 78 .cfa: sp 0 + .ra: x30
+STACK CFI 4b190 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 4b194 .cfa: x29 48 +
+STACK CFI 4b198 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 4b1a0 x21: .cfa -16 + ^
+STACK CFI 4b1f8 x19: x19 x20: x20
+STACK CFI 4b1fc x21: x21
+STACK CFI 4b200 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4b204 60 .cfa: sp 0 + .ra: x30
+STACK CFI 4b208 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 4b20c .cfa: x29 48 +
+STACK CFI 4b210 x19: .cfa -32 + ^
+STACK CFI INIT 2eb40 18 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 4b264 6c .cfa: sp 0 + .ra: x30
+STACK CFI 4b268 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 4b270 .cfa: x29 48 +
+STACK CFI 4b274 x19: .cfa -32 + ^
+STACK CFI 4b2c8 x19: x19
+STACK CFI 4b2cc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4b2d0 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 4b2dc c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 4b2e8 58 .cfa: sp 0 + .ra: x30
+STACK CFI 4b2ec .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 4b2f4 .cfa: x29 32 +
+STACK CFI 4b2f8 x19: .cfa -16 + ^
+STACK CFI 4b338 x19: x19
+STACK CFI 4b33c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4b340 88 .cfa: sp 0 + .ra: x30
+STACK CFI 4b344 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 4b348 .cfa: x29 48 +
+STACK CFI 4b350 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 4b3bc x19: x19 x20: x20
+STACK CFI 4b3c0 x21: x21 x22: x22
+STACK CFI 4b3c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4b3c8 44 .cfa: sp 0 + .ra: x30
+STACK CFI 4b3cc .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 4b3d4 .cfa: x29 32 +
+STACK CFI 4b408 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4b40c dc .cfa: sp 0 + .ra: x30
+STACK CFI 4b410 .cfa: sp 8192 +
+STACK CFI 4b418 .cfa: sp 8288 + .ra: .cfa -8280 + ^ x29: .cfa -8288 + ^
+STACK CFI 4b41c .cfa: x29 8288 +
+STACK CFI 4b424 x19: .cfa -8272 + ^ x20: .cfa -8264 + ^ x21: .cfa -8256 + ^ x22: .cfa -8248 + ^
+STACK CFI 4b438 x23: .cfa -8240 + ^ x24: .cfa -8232 + ^ x25: .cfa -8224 + ^ x26: .cfa -8216 + ^ x27: .cfa -8208 + ^
+STACK CFI 4b4cc x19: x19 x20: x20
+STACK CFI 4b4d0 x21: x21 x22: x22
+STACK CFI 4b4d4 x23: x23 x24: x24
+STACK CFI 4b4d8 x25: x25 x26: x26
+STACK CFI 4b4dc x27: x27
+STACK CFI 4b4e0 .cfa: sp 8192 + .ra: .ra x29: x29
+STACK CFI 4b4e4 .cfa: sp 8096 +
+STACK CFI INIT 4b4e8 188 .cfa: sp 0 + .ra: x30
+STACK CFI 4b4ec .cfa: sp 256 + .ra: .cfa -248 + ^ x29: .cfa -256 + ^
+STACK CFI 4b4f0 .cfa: x29 256 +
+STACK CFI 4b4f8 x21: .cfa -224 + ^ x22: .cfa -216 + ^ x27: .cfa -176 + ^
+STACK CFI 4b508 x19: .cfa -240 + ^ x20: .cfa -232 + ^ x23: .cfa -208 + ^ x24: .cfa -200 + ^ x25: .cfa -192 + ^ x26: .cfa -184 + ^
+STACK CFI 4b658 x19: x19 x20: x20
+STACK CFI 4b65c x21: x21 x22: x22
+STACK CFI 4b660 x23: x23 x24: x24
+STACK CFI 4b664 x25: x25 x26: x26
+STACK CFI 4b668 x27: x27
+STACK CFI 4b66c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 248e8 30 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 54 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^
+STACK CFI 40 x19: x19
+STACK CFI 44 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 48 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI 4c x19: x19
+STACK CFI 50 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4b670 54 .cfa: sp 0 + .ra: x30
+STACK CFI 4b674 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 4b678 .cfa: x29 32 +
+STACK CFI 4b67c x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 4b6bc x19: x19 x20: x20
+STACK CFI 4b6c0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 54 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^
+STACK CFI 4c x19: x19
+STACK CFI 50 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25b54 5c .cfa: sp 0 + .ra: x30
+STACK CFI 25b58 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 25b5c .cfa: x29 16 +
+STACK CFI 25bac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 170 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI c .cfa: x29 80 +
+STACK CFI 18 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI 160 x23: x23
+STACK CFI 164 x19: x19 x20: x20
+STACK CFI 168 x21: x21 x22: x22
+STACK CFI 16c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 2b0 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 272 + .ra: .cfa -264 + ^ x29: .cfa -272 + ^
+STACK CFI c .cfa: x29 272 +
+STACK CFI 10 x19: .cfa -256 + ^ x20: .cfa -248 + ^
+STACK CFI 20 x21: .cfa -240 + ^ x22: .cfa -232 + ^ x23: .cfa -224 + ^ x24: .cfa -216 + ^ x25: .cfa -208 + ^
+STACK CFI 29c x19: x19 x20: x20
+STACK CFI 2a0 x21: x21 x22: x22
+STACK CFI 2a4 x23: x23 x24: x24
+STACK CFI 2a8 x25: x25
+STACK CFI 2ac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4b6c4 28 .cfa: sp 0 + .ra: x30
+STACK CFI 4b6c8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 4b6cc .cfa: x29 32 +
+STACK CFI 4b6d0 x19: .cfa -16 + ^
+STACK CFI 4b6e4 x19: x19
+STACK CFI 4b6e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 174 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI c x21: .cfa -48 + ^ x22: .cfa -40 + ^
+STACK CFI 20 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^
+STACK CFI 164 x19: x19 x20: x20
+STACK CFI 168 x21: x21 x22: x22
+STACK CFI 16c x23: x23 x24: x24
+STACK CFI 170 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 380 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 368 + .ra: .cfa -360 + ^ x29: .cfa -368 + ^
+STACK CFI 8 .cfa: x29 368 +
+STACK CFI 1c x19: .cfa -352 + ^ x20: .cfa -344 + ^ x21: .cfa -336 + ^ x22: .cfa -328 + ^ x23: .cfa -320 + ^ x24: .cfa -312 + ^ x25: .cfa -304 + ^ x26: .cfa -296 + ^ x27: .cfa -288 + ^ x28: .cfa -280 + ^
+STACK CFI 368 x19: x19 x20: x20
+STACK CFI 36c x21: x21 x22: x22
+STACK CFI 370 x23: x23 x24: x24
+STACK CFI 374 x25: x25 x26: x26
+STACK CFI 378 x27: x27 x28: x28
+STACK CFI 37c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4b6ec 30 .cfa: sp 0 + .ra: x30
+STACK CFI 4b6f0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 4b6f4 .cfa: x29 32 +
+STACK CFI 4b6f8 x19: .cfa -16 + ^
+STACK CFI 4b714 x19: x19
+STACK CFI 4b718 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4b71c 2c .cfa: sp 0 + .ra: x30
+STACK CFI 4b720 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 4b728 .cfa: x29 32 +
+STACK CFI 4b730 x19: .cfa -16 + ^
+STACK CFI 4b740 x19: x19
+STACK CFI 4b744 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4b748 2c .cfa: sp 0 + .ra: x30
+STACK CFI 4b74c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 4b754 .cfa: x29 32 +
+STACK CFI 4b75c x19: .cfa -16 + ^
+STACK CFI 4b76c x19: x19
+STACK CFI 4b770 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4b774 27c .cfa: sp 0 + .ra: x30
+STACK CFI 4b778 .cfa: sp 128 + .ra: .cfa -120 + ^ x29: .cfa -128 + ^
+STACK CFI 4b780 .cfa: x29 128 +
+STACK CFI 4b784 x23: .cfa -80 + ^ x24: .cfa -72 + ^
+STACK CFI 4b7a0 x19: .cfa -112 + ^ x20: .cfa -104 + ^ x21: .cfa -96 + ^ x22: .cfa -88 + ^ x25: .cfa -64 + ^ x26: .cfa -56 + ^
+STACK CFI 4b9dc x19: x19 x20: x20
+STACK CFI 4b9e0 x21: x21 x22: x22
+STACK CFI 4b9e4 x23: x23 x24: x24
+STACK CFI 4b9e8 x25: x25 x26: x26
+STACK CFI 4b9ec .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2351c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23520 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23524 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2354c 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23554 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23558 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 4b9f0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 4b9f4 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 4b9f8 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 4b9fc 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 4ba00 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 4ba04 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235c8 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235d0 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235ec 24 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23610 6c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2367c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23680 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23688 40 .cfa: sp 0 + .ra: x30
+STACK CFI 2368c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 23690 .cfa: x29 32 +
+STACK CFI 23694 x19: .cfa -16 + ^
+STACK CFI 236c0 x19: x19
+STACK CFI 236c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 236c8 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 237ec a8 .cfa: sp 0 + .ra: x30
+STACK CFI 237f0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 237f4 .cfa: x29 64 +
+STACK CFI 23800 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 23884 x23: x23
+STACK CFI 23888 x19: x19 x20: x20
+STACK CFI 2388c x21: x21 x22: x22
+STACK CFI 23890 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4ba08 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 4ba0c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 4ba10 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 4ba14 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 4ba18 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 4ba1c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23738 b4 .cfa: sp 0 + .ra: x30
+STACK CFI 2373c .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 23740 .cfa: x29 64 +
+STACK CFI 2374c x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 237dc x23: x23
+STACK CFI 237e0 x19: x19 x20: x20
+STACK CFI 237e4 x21: x21 x22: x22
+STACK CFI 237e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23894 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 238a8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 238ac .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 238b0 .cfa: x29 32 +
+STACK CFI 238b4 x19: .cfa -16 + ^
+STACK CFI 238c4 x19: x19
+STACK CFI 238c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 238cc 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 238e0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 238e4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 238e8 .cfa: x29 32 +
+STACK CFI 238ec x19: .cfa -16 + ^
+STACK CFI 238fc x19: x19
+STACK CFI 23900 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4ba20 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 4ba34 24 .cfa: sp 0 + .ra: x30
+STACK CFI 4ba38 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 4ba3c .cfa: x29 32 +
+STACK CFI 4ba40 x19: .cfa -16 + ^
+STACK CFI 4ba50 x19: x19
+STACK CFI 4ba54 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4ba58 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 4ba6c 24 .cfa: sp 0 + .ra: x30
+STACK CFI 4ba70 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 4ba74 .cfa: x29 32 +
+STACK CFI 4ba78 x19: .cfa -16 + ^
+STACK CFI 4ba88 x19: x19
+STACK CFI 4ba8c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4ba90 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 4baa4 24 .cfa: sp 0 + .ra: x30
+STACK CFI 4baa8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 4baac .cfa: x29 32 +
+STACK CFI 4bab0 x19: .cfa -16 + ^
+STACK CFI 4bac0 x19: x19
+STACK CFI 4bac4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4bac8 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 4badc 24 .cfa: sp 0 + .ra: x30
+STACK CFI 4bae0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 4bae4 .cfa: x29 32 +
+STACK CFI 4bae8 x19: .cfa -16 + ^
+STACK CFI 4baf8 x19: x19
+STACK CFI 4bafc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4bb00 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 4bb14 24 .cfa: sp 0 + .ra: x30
+STACK CFI 4bb18 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 4bb1c .cfa: x29 32 +
+STACK CFI 4bb20 x19: .cfa -16 + ^
+STACK CFI 4bb30 x19: x19
+STACK CFI 4bb34 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4bb38 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 4bb4c 24 .cfa: sp 0 + .ra: x30
+STACK CFI 4bb50 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 4bb54 .cfa: x29 32 +
+STACK CFI 4bb58 x19: .cfa -16 + ^
+STACK CFI 4bb68 x19: x19
+STACK CFI 4bb6c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4bb70 3c .cfa: sp 0 + .ra: x30
+STACK CFI 4bb74 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 4bb7c .cfa: x29 32 +
+STACK CFI 4bb80 x19: .cfa -16 + ^
+STACK CFI 4bba4 x19: x19
+STACK CFI 4bba8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4bbac 3c .cfa: sp 0 + .ra: x30
+STACK CFI 4bbb0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 4bbb8 .cfa: x29 32 +
+STACK CFI 4bbbc x19: .cfa -16 + ^
+STACK CFI 4bbe0 x19: x19
+STACK CFI 4bbe4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4bbe8 3c .cfa: sp 0 + .ra: x30
+STACK CFI 4bbec .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 4bbf4 .cfa: x29 32 +
+STACK CFI 4bbf8 x19: .cfa -16 + ^
+STACK CFI 4bc1c x19: x19
+STACK CFI 4bc20 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4bc24 3c .cfa: sp 0 + .ra: x30
+STACK CFI 4bc28 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 4bc30 .cfa: x29 32 +
+STACK CFI 4bc34 x19: .cfa -16 + ^
+STACK CFI 4bc58 x19: x19
+STACK CFI 4bc5c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4bc60 3c .cfa: sp 0 + .ra: x30
+STACK CFI 4bc64 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 4bc6c .cfa: x29 32 +
+STACK CFI 4bc70 x19: .cfa -16 + ^
+STACK CFI 4bc94 x19: x19
+STACK CFI 4bc98 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4bc9c 3c .cfa: sp 0 + .ra: x30
+STACK CFI 4bca0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 4bca8 .cfa: x29 32 +
+STACK CFI 4bcac x19: .cfa -16 + ^
+STACK CFI 4bcd0 x19: x19
+STACK CFI 4bcd4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24794 b0 .cfa: sp 0 + .ra: x30
+STACK CFI 24798 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 2479c .cfa: x29 64 +
+STACK CFI 247a8 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 24834 x23: x23
+STACK CFI 24838 x19: x19 x20: x20
+STACK CFI 2483c x21: x21 x22: x22
+STACK CFI 24840 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2eb40 18 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 24844 40 .cfa: sp 0 + .ra: x30
+STACK CFI 24848 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 24854 .cfa: x29 32 +
+STACK CFI 24858 x19: .cfa -16 + ^
+STACK CFI 2487c x19: x19
+STACK CFI 24880 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4bcd8 34 .cfa: sp 0 + .ra: x30
+STACK CFI 4bcdc .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 4bce0 .cfa: x29 32 +
+STACK CFI 4bce4 x19: .cfa -16 + ^
+STACK CFI 4bd04 x19: x19
+STACK CFI 4bd08 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4bd0c fc .cfa: sp 0 + .ra: x30
+STACK CFI 4bd10 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 4bd18 .cfa: x29 32 +
+STACK CFI 4bd1c x19: .cfa -16 + ^
+STACK CFI 4be00 x19: x19
+STACK CFI 4be04 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4be08 64 .cfa: sp 0 + .ra: x30
+STACK CFI 4be0c .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 4be10 .cfa: x29 48 +
+STACK CFI 4be18 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 4be60 x19: x19 x20: x20
+STACK CFI 4be64 x21: x21
+STACK CFI 4be68 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4be6c 2c .cfa: sp 0 + .ra: x30
+STACK CFI 4be70 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 4be74 .cfa: x29 64 +
+STACK CFI 4be78 x19: .cfa -48 + ^
+STACK CFI 4be90 x19: x19
+STACK CFI 4be94 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 248a0 48 .cfa: sp 0 + .ra: x30
+STACK CFI 248a4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 248a8 .cfa: x29 32 +
+STACK CFI 248ac x19: .cfa -16 + ^
+STACK CFI 248e0 x19: x19
+STACK CFI 248e4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 248e8 30 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 24940 34 .cfa: sp 0 + .ra: x30
+STACK CFI 24948 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2494c .cfa: x29 32 +
+STACK CFI 24954 x19: .cfa -16 + ^
+STACK CFI 2496c x19: x19
+STACK CFI 24970 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24974 24 .cfa: sp 0 + .ra: x30
+STACK CFI 24978 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2497c .cfa: x29 32 +
+STACK CFI 24980 x19: .cfa -16 + ^
+STACK CFI 24990 x19: x19
+STACK CFI 24994 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 54 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^
+STACK CFI 40 x19: x19
+STACK CFI 44 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 48 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI 4c x19: x19
+STACK CFI 50 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4be98 114 .cfa: sp 0 + .ra: x30
+STACK CFI 4be9c .cfa: sp 176 + .ra: .cfa -168 + ^ x29: .cfa -176 + ^
+STACK CFI 4bea0 .cfa: x29 176 +
+STACK CFI 4bea8 x19: .cfa -160 + ^ x20: .cfa -152 + ^ x21: .cfa -144 + ^ x22: .cfa -136 + ^
+STACK CFI 4beb4 x23: .cfa -128 + ^
+STACK CFI 4bf9c x23: x23
+STACK CFI 4bfa0 x19: x19 x20: x20
+STACK CFI 4bfa4 x21: x21 x22: x22
+STACK CFI 4bfa8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4bfac 180 .cfa: sp 0 + .ra: x30
+STACK CFI 4bfb0 .cfa: sp 176 + .ra: .cfa -168 + ^ x29: .cfa -176 + ^
+STACK CFI 4bfb4 .cfa: x29 176 +
+STACK CFI 4bfb8 x19: .cfa -160 + ^ x20: .cfa -152 + ^
+STACK CFI 4bfc8 x21: .cfa -144 + ^ x22: .cfa -136 + ^ x23: .cfa -128 + ^
+STACK CFI 4c11c x23: x23
+STACK CFI 4c120 x19: x19 x20: x20
+STACK CFI 4c124 x21: x21 x22: x22
+STACK CFI 4c128 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24a00 fc .cfa: sp 0 + .ra: x30
+STACK CFI 24a04 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 24a0c .cfa: x29 96 +
+STACK CFI 24a18 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^
+STACK CFI 24aec x21: x21 x22: x22
+STACK CFI 24af0 x19: x19 x20: x20
+STACK CFI 24af4 x23: x23 x24: x24
+STACK CFI 24af8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24afc b4 .cfa: sp 0 + .ra: x30
+STACK CFI 24b00 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 24b04 .cfa: x29 48 +
+STACK CFI 24b08 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 24b18 x21: .cfa -16 + ^
+STACK CFI 24ba4 x21: x21
+STACK CFI 24ba8 x19: x19 x20: x20
+STACK CFI 24bac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24bb0 b0 .cfa: sp 0 + .ra: x30
+STACK CFI 24bb4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 24bb8 .cfa: x29 48 +
+STACK CFI 24bc0 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 24c40 x21: x21
+STACK CFI 24c58 x19: x19 x20: x20
+STACK CFI 24c5c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24d14 3c .cfa: sp 0 + .ra: x30
+STACK CFI 24d18 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 24d1c .cfa: x29 16 +
+STACK CFI 24d4c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4c12c d4 .cfa: sp 0 + .ra: x30
+STACK CFI 4c130 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 4c134 .cfa: x29 64 +
+STACK CFI 4c140 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 4c1f0 x19: x19 x20: x20
+STACK CFI 4c1f4 x21: x21 x22: x22
+STACK CFI 4c1f8 x23: x23
+STACK CFI 4c1fc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 54 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^
+STACK CFI 4c x19: x19
+STACK CFI 50 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 250a4 58 .cfa: sp 0 + .ra: x30
+STACK CFI 250a8 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 250ac .cfa: x29 48 +
+STACK CFI 250b0 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 250b8 x21: .cfa -16 + ^
+STACK CFI 250f0 x19: x19 x20: x20
+STACK CFI 250f4 x21: x21
+STACK CFI 250f8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 c8 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI 10 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI b4 x21: x21
+STACK CFI c0 x19: x19 x20: x20
+STACK CFI c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 f4 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 18 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI e8 x19: x19 x20: x20
+STACK CFI ec x21: x21 x22: x22
+STACK CFI f0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 251f0 8c .cfa: sp 0 + .ra: x30
+STACK CFI 251f4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 251f8 .cfa: x29 48 +
+STACK CFI 251fc x19: .cfa -32 + ^
+STACK CFI 25268 x19: x19
+STACK CFI 2526c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 25270 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 25274 x19: x19
+STACK CFI 25278 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2527c c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25288 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25298 24 .cfa: sp 0 + .ra: x30
+STACK CFI 2529c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 252a0 .cfa: x29 32 +
+STACK CFI 252a4 x19: .cfa -16 + ^
+STACK CFI 252b4 x19: x19
+STACK CFI 252b8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 252bc 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 252cc c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 252d8 8c .cfa: sp 0 + .ra: x30
+STACK CFI 252dc .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 252e0 .cfa: x29 48 +
+STACK CFI 252e4 x19: .cfa -32 + ^
+STACK CFI 25350 x19: x19
+STACK CFI 25354 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 25358 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 2535c x19: x19
+STACK CFI 25360 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25364 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25370 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25380 24 .cfa: sp 0 + .ra: x30
+STACK CFI 25384 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 25388 .cfa: x29 32 +
+STACK CFI 2538c x19: .cfa -16 + ^
+STACK CFI 2539c x19: x19
+STACK CFI 253a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 253a4 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 253b4 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 253c0 e0 .cfa: sp 0 + .ra: x30
+STACK CFI 253c4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 253c8 .cfa: x29 48 +
+STACK CFI 253cc x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 2548c x19: x19 x20: x20
+STACK CFI 25490 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 25494 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x29: .cfa -48 + ^
+STACK CFI 25498 x19: x19 x20: x20
+STACK CFI 2549c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 254a0 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 254ac cc .cfa: sp 0 + .ra: x30
+STACK CFI 254b0 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 254b4 .cfa: x29 48 +
+STACK CFI 254b8 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 25564 x19: x19 x20: x20
+STACK CFI 25568 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2556c .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x29: .cfa -48 + ^
+STACK CFI 25570 x19: x19 x20: x20
+STACK CFI 25574 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25578 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25584 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25590 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25598 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255a8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 255ac .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 255b0 .cfa: x29 32 +
+STACK CFI 255b4 x19: .cfa -16 + ^
+STACK CFI 255c4 x19: x19
+STACK CFI 255c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 255cc 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255d4 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255e4 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255f0 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255f8 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25608 24 .cfa: sp 0 + .ra: x30
+STACK CFI 2560c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 25610 .cfa: x29 32 +
+STACK CFI 25614 x19: .cfa -16 + ^
+STACK CFI 25624 x19: x19
+STACK CFI 25628 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2562c 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25634 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25644 5c .cfa: sp 0 + .ra: x30
+STACK CFI 25648 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2564c .cfa: x29 32 +
+STACK CFI 25650 x19: .cfa -16 + ^
+STACK CFI 25698 x19: x19
+STACK CFI 2569c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 256a0 78 .cfa: sp 0 + .ra: x30
+STACK CFI 256a4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 256ac .cfa: x29 32 +
+STACK CFI 256b0 x19: .cfa -16 + ^
+STACK CFI 25710 x19: x19
+STACK CFI 25714 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25718 50 .cfa: sp 0 + .ra: x30
+STACK CFI 2571c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 25720 .cfa: x29 32 +
+STACK CFI 25724 x19: .cfa -16 + ^
+STACK CFI 25754 x19: x19
+STACK CFI 25758 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2575c .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI 25760 x19: x19
+STACK CFI 25764 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 140 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI 10 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 134 x19: x19 x20: x20
+STACK CFI 138 x21: x21 x22: x22
+STACK CFI 13c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 cc .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI 10 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI bc x21: x21
+STACK CFI c4 x19: x19 x20: x20
+STACK CFI c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4c200 50 .cfa: sp 0 + .ra: x30
+STACK CFI 4c204 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 4c210 .cfa: x29 32 +
+STACK CFI 4c214 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 4c21c x19: x19 x20: x20
+STACK CFI 4c224 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 4c22c .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x20: .cfa -8 + ^ x29: .cfa -32 + ^
+STACK CFI 4c248 x19: x19 x20: x20
+STACK CFI 4c24c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25b54 5c .cfa: sp 0 + .ra: x30
+STACK CFI 25b58 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 25b5c .cfa: x29 16 +
+STACK CFI 25bac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 cc .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI 10 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI bc x21: x21
+STACK CFI c4 x19: x19 x20: x20
+STACK CFI c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4c250 a8 .cfa: sp 0 + .ra: x30
+STACK CFI 4c254 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 4c258 .cfa: x29 64 +
+STACK CFI 4c264 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^ x24: .cfa -8 + ^
+STACK CFI 4c2e8 x19: x19 x20: x20
+STACK CFI 4c2ec x21: x21 x22: x22
+STACK CFI 4c2f0 x23: x23 x24: x24
+STACK CFI 4c2f4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4c2f8 134 .cfa: sp 0 + .ra: x30
+STACK CFI 4c2fc .cfa: sp 208 + .ra: .cfa -200 + ^ x29: .cfa -208 + ^
+STACK CFI 4c300 .cfa: x29 208 +
+STACK CFI 4c304 x19: .cfa -192 + ^ x20: .cfa -184 + ^
+STACK CFI 4c318 x21: .cfa -176 + ^ x22: .cfa -168 + ^ x23: .cfa -160 + ^
+STACK CFI 4c41c x23: x23
+STACK CFI 4c420 x19: x19 x20: x20
+STACK CFI 4c424 x21: x21 x22: x22
+STACK CFI 4c428 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 279ec 5c .cfa: sp 0 + .ra: x30
+STACK CFI 279f0 .cfa: sp 336 + .ra: .cfa -328 + ^ x29: .cfa -336 + ^
+STACK CFI 279f8 .cfa: x29 336 +
+STACK CFI 279fc x19: .cfa -320 + ^ x20: .cfa -312 + ^
+STACK CFI 27a04 x21: .cfa -304 + ^
+STACK CFI 27a38 x21: x21
+STACK CFI 27a40 x19: x19 x20: x20
+STACK CFI 27a44 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4c42c b4 .cfa: sp 0 + .ra: x30
+STACK CFI 4c430 .cfa: sp 416 + .ra: .cfa -408 + ^ x29: .cfa -416 + ^
+STACK CFI 4c434 .cfa: x29 416 +
+STACK CFI 4c438 x19: .cfa -400 + ^ x20: .cfa -392 + ^
+STACK CFI 4c444 x21: .cfa -384 + ^ x22: .cfa -376 + ^ x23: .cfa -368 + ^
+STACK CFI 4c4cc x23: x23
+STACK CFI 4c4d4 x19: x19 x20: x20
+STACK CFI 4c4d8 x21: x21 x22: x22
+STACK CFI 4c4dc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4c4e0 d8 .cfa: sp 0 + .ra: x30
+STACK CFI 4c4e4 .cfa: sp 112 + .ra: .cfa -104 + ^ x29: .cfa -112 + ^
+STACK CFI 4c4e8 .cfa: x29 112 +
+STACK CFI 4c4ec x19: .cfa -96 + ^ x20: .cfa -88 + ^
+STACK CFI 4c4fc x21: .cfa -80 + ^ x22: .cfa -72 + ^
+STACK CFI 4c5ac x19: x19 x20: x20
+STACK CFI 4c5b0 x21: x21 x22: x22
+STACK CFI 4c5b4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4c5b8 84 .cfa: sp 0 + .ra: x30
+STACK CFI 4c5bc .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 4c5c0 .cfa: x29 160 +
+STACK CFI 4c5c4 x19: .cfa -144 + ^ x20: .cfa -136 + ^
+STACK CFI 4c5d0 x21: .cfa -128 + ^ x22: .cfa -120 + ^
+STACK CFI 4c630 x19: x19 x20: x20
+STACK CFI 4c634 x21: x21 x22: x22
+STACK CFI 4c638 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4c63c 478 .cfa: sp 0 + .ra: x30
+STACK CFI 4c640 .cfa: sp 464 +
+STACK CFI 4c644 .cfa: sp 576 + .ra: .cfa -568 + ^ x29: .cfa -576 + ^
+STACK CFI 4c648 .cfa: x29 576 +
+STACK CFI 4c64c x23: .cfa -528 + ^ x24: .cfa -520 + ^
+STACK CFI 4c65c x19: .cfa -560 + ^ x20: .cfa -552 + ^ x21: .cfa -544 + ^ x22: .cfa -536 + ^
+STACK CFI 4c66c v8: .cfa -480 + ^ x27: .cfa -496 + ^ x28: .cfa -488 + ^
+STACK CFI 4c674 x25: .cfa -512 + ^ x26: .cfa -504 + ^
+STACK CFI 4ca94 v8: v8
+STACK CFI 4ca98 x19: x19 x20: x20
+STACK CFI 4ca9c x21: x21 x22: x22
+STACK CFI 4caa0 x23: x23 x24: x24
+STACK CFI 4caa4 x25: x25 x26: x26
+STACK CFI 4caa8 x27: x27 x28: x28
+STACK CFI 4caac .cfa: sp 464 + .ra: .ra x29: x29
+STACK CFI 4cab0 .cfa: sp 352 +
+STACK CFI INIT 282a4 28 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 282cc 20 .cfa: sp 0 + .ra: x30
+STACK CFI 282d0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 282d8 .cfa: x29 32 +
+STACK CFI 282e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 282ec 20 .cfa: sp 0 + .ra: x30
+STACK CFI 282f0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 282f8 .cfa: x29 32 +
+STACK CFI 28308 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2830c 110 .cfa: sp 0 + .ra: x30
+STACK CFI 28310 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2831c .cfa: x29 32 +
+STACK CFI 28398 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2839c .cfa: x29 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI INIT 2841c 124 .cfa: sp 0 + .ra: x30
+STACK CFI 28420 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 28424 .cfa: x29 80 +
+STACK CFI 28430 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^
+STACK CFI 28530 x19: x19 x20: x20
+STACK CFI 28534 x21: x21 x22: x22
+STACK CFI 28538 x23: x23 x24: x24
+STACK CFI 2853c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 9c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI 10 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI 8c x21: x21
+STACK CFI 94 x19: x19 x20: x20
+STACK CFI 98 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 7c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 74 x19: x19 x20: x20
+STACK CFI 78 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 28650 c4 .cfa: sp 0 + .ra: x30
+STACK CFI 28654 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 2865c .cfa: x29 48 +
+STACK CFI 28664 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 28708 x19: x19 x20: x20
+STACK CFI 2870c x21: x21
+STACK CFI 28710 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 d0 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI 10 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI c4 x21: x21
+STACK CFI c8 x19: x19 x20: x20
+STACK CFI cc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 287cc 10c .cfa: sp 0 + .ra: x30
+STACK CFI 287d0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 287d8 .cfa: x29 64 +
+STACK CFI 287e0 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x23: .cfa -16 + ^
+STACK CFI 287e8 x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 288c8 x19: x19 x20: x20
+STACK CFI 288cc x21: x21 x22: x22
+STACK CFI 288d0 x23: x23
+STACK CFI 288d4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 288d8 f0 .cfa: sp 0 + .ra: x30
+STACK CFI 288dc .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 288e4 .cfa: x29 64 +
+STACK CFI 288f0 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 289b8 x23: x23
+STACK CFI 289bc x19: x19 x20: x20
+STACK CFI 289c0 x21: x21 x22: x22
+STACK CFI 289c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 114 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI c .cfa: x29 80 +
+STACK CFI 18 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI 104 x23: x23
+STACK CFI 108 x19: x19 x20: x20
+STACK CFI 10c x21: x21 x22: x22
+STACK CFI 110 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26984 124 .cfa: sp 0 + .ra: x30
+STACK CFI 26988 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 26990 .cfa: x29 80 +
+STACK CFI 2699c x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI 26a98 x19: x19 x20: x20
+STACK CFI 26a9c x21: x21 x22: x22
+STACK CFI 26aa0 x23: x23
+STACK CFI 26aa4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 226d0 220 .cfa: sp 0 + .ra: x30
+STACK CFI 226d4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 226d8 .cfa: x29 64 +
+STACK CFI 226e0 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 228e0 x19: x19 x20: x20
+STACK CFI 228e4 x21: x21 x22: x22
+STACK CFI 228ec .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2351c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23520 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23524 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2354c 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23554 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23558 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 4cab4 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 4cab8 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 4cabc 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 4cac0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 4cac4 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 4cac8 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 4cacc 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235c8 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235d0 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235ec 24 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23610 6c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2367c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23680 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23688 40 .cfa: sp 0 + .ra: x30
+STACK CFI 2368c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 23690 .cfa: x29 32 +
+STACK CFI 23694 x19: .cfa -16 + ^
+STACK CFI 236c0 x19: x19
+STACK CFI 236c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 236c8 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 4cad0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 4cad4 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 4cad8 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 4cadc 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 4cae0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 4cae4 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 4cae8 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 237ec a8 .cfa: sp 0 + .ra: x30
+STACK CFI 237f0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 237f4 .cfa: x29 64 +
+STACK CFI 23800 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 23884 x23: x23
+STACK CFI 23888 x19: x19 x20: x20
+STACK CFI 2388c x21: x21 x22: x22
+STACK CFI 23890 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23738 b4 .cfa: sp 0 + .ra: x30
+STACK CFI 2373c .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 23740 .cfa: x29 64 +
+STACK CFI 2374c x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 237dc x23: x23
+STACK CFI 237e0 x19: x19 x20: x20
+STACK CFI 237e4 x21: x21 x22: x22
+STACK CFI 237e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23894 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 238a8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 238ac .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 238b0 .cfa: x29 32 +
+STACK CFI 238b4 x19: .cfa -16 + ^
+STACK CFI 238c4 x19: x19
+STACK CFI 238c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 238cc 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 238e0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 238e4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 238e8 .cfa: x29 32 +
+STACK CFI 238ec x19: .cfa -16 + ^
+STACK CFI 238fc x19: x19
+STACK CFI 23900 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4caec 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 4cb00 24 .cfa: sp 0 + .ra: x30
+STACK CFI 4cb04 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 4cb08 .cfa: x29 32 +
+STACK CFI 4cb0c x19: .cfa -16 + ^
+STACK CFI 4cb1c x19: x19
+STACK CFI 4cb20 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4cb24 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 4cb38 24 .cfa: sp 0 + .ra: x30
+STACK CFI 4cb3c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 4cb40 .cfa: x29 32 +
+STACK CFI 4cb44 x19: .cfa -16 + ^
+STACK CFI 4cb54 x19: x19
+STACK CFI 4cb58 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4cb5c 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 4cb70 24 .cfa: sp 0 + .ra: x30
+STACK CFI 4cb74 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 4cb78 .cfa: x29 32 +
+STACK CFI 4cb7c x19: .cfa -16 + ^
+STACK CFI 4cb8c x19: x19
+STACK CFI 4cb90 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4cb94 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 4cba8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 4cbac .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 4cbb0 .cfa: x29 32 +
+STACK CFI 4cbb4 x19: .cfa -16 + ^
+STACK CFI 4cbc4 x19: x19
+STACK CFI 4cbc8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4cbcc 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 4cbe0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 4cbe4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 4cbe8 .cfa: x29 32 +
+STACK CFI 4cbec x19: .cfa -16 + ^
+STACK CFI 4cbfc x19: x19
+STACK CFI 4cc00 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4cc04 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 4cc18 24 .cfa: sp 0 + .ra: x30
+STACK CFI 4cc1c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 4cc20 .cfa: x29 32 +
+STACK CFI 4cc24 x19: .cfa -16 + ^
+STACK CFI 4cc34 x19: x19
+STACK CFI 4cc38 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4cc3c 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 4cc50 24 .cfa: sp 0 + .ra: x30
+STACK CFI 4cc54 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 4cc58 .cfa: x29 32 +
+STACK CFI 4cc5c x19: .cfa -16 + ^
+STACK CFI 4cc6c x19: x19
+STACK CFI 4cc70 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4cc74 cc .cfa: sp 0 + .ra: x30
+STACK CFI 4cc78 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 4cc7c .cfa: x29 64 +
+STACK CFI 4cc80 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 4cc8c x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 4cd30 x19: x19 x20: x20
+STACK CFI 4cd34 x21: x21 x22: x22
+STACK CFI 4cd38 x23: x23
+STACK CFI 4cd3c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4cd40 b8 .cfa: sp 0 + .ra: x30
+STACK CFI 4cd44 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 4cd48 .cfa: x29 64 +
+STACK CFI 4cd54 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^ x24: .cfa -8 + ^
+STACK CFI 4cde8 x19: x19 x20: x20
+STACK CFI 4cdec x21: x21 x22: x22
+STACK CFI 4cdf0 x23: x23 x24: x24
+STACK CFI 4cdf4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4cdf8 3c .cfa: sp 0 + .ra: x30
+STACK CFI 4cdfc .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 4ce04 .cfa: x29 32 +
+STACK CFI 4ce08 x19: .cfa -16 + ^
+STACK CFI 4ce2c x19: x19
+STACK CFI 4ce30 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4ce34 3c .cfa: sp 0 + .ra: x30
+STACK CFI 4ce38 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 4ce40 .cfa: x29 32 +
+STACK CFI 4ce44 x19: .cfa -16 + ^
+STACK CFI 4ce68 x19: x19
+STACK CFI 4ce6c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4ce70 3c .cfa: sp 0 + .ra: x30
+STACK CFI 4ce74 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 4ce7c .cfa: x29 32 +
+STACK CFI 4ce80 x19: .cfa -16 + ^
+STACK CFI 4cea4 x19: x19
+STACK CFI 4cea8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4ceac 3c .cfa: sp 0 + .ra: x30
+STACK CFI 4ceb0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 4ceb8 .cfa: x29 32 +
+STACK CFI 4cebc x19: .cfa -16 + ^
+STACK CFI 4cee0 x19: x19
+STACK CFI 4cee4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4cee8 3c .cfa: sp 0 + .ra: x30
+STACK CFI 4ceec .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 4cef4 .cfa: x29 32 +
+STACK CFI 4cef8 x19: .cfa -16 + ^
+STACK CFI 4cf1c x19: x19
+STACK CFI 4cf20 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4cf24 3c .cfa: sp 0 + .ra: x30
+STACK CFI 4cf28 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 4cf30 .cfa: x29 32 +
+STACK CFI 4cf34 x19: .cfa -16 + ^
+STACK CFI 4cf58 x19: x19
+STACK CFI 4cf5c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4cf60 3c .cfa: sp 0 + .ra: x30
+STACK CFI 4cf64 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 4cf6c .cfa: x29 32 +
+STACK CFI 4cf70 x19: .cfa -16 + ^
+STACK CFI 4cf94 x19: x19
+STACK CFI 4cf98 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24794 b0 .cfa: sp 0 + .ra: x30
+STACK CFI 24798 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 2479c .cfa: x29 64 +
+STACK CFI 247a8 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 24834 x23: x23
+STACK CFI 24838 x19: x19 x20: x20
+STACK CFI 2483c x21: x21 x22: x22
+STACK CFI 24840 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24844 40 .cfa: sp 0 + .ra: x30
+STACK CFI 24848 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 24854 .cfa: x29 32 +
+STACK CFI 24858 x19: .cfa -16 + ^
+STACK CFI 2487c x19: x19
+STACK CFI 24880 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24884 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 248a0 48 .cfa: sp 0 + .ra: x30
+STACK CFI 248a4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 248a8 .cfa: x29 32 +
+STACK CFI 248ac x19: .cfa -16 + ^
+STACK CFI 248e0 x19: x19
+STACK CFI 248e4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4cf9c 28 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 248e8 30 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 24940 34 .cfa: sp 0 + .ra: x30
+STACK CFI 24948 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2494c .cfa: x29 32 +
+STACK CFI 24954 x19: .cfa -16 + ^
+STACK CFI 2496c x19: x19
+STACK CFI 24970 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24974 24 .cfa: sp 0 + .ra: x30
+STACK CFI 24978 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2497c .cfa: x29 32 +
+STACK CFI 24980 x19: .cfa -16 + ^
+STACK CFI 24990 x19: x19
+STACK CFI 24994 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24998 60 .cfa: sp 0 + .ra: x30
+STACK CFI 2499c .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 249a0 .cfa: x29 48 +
+STACK CFI 249a8 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 249ec x19: x19 x20: x20
+STACK CFI 249f0 x21: x21
+STACK CFI 249f4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 249f8 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 24a00 fc .cfa: sp 0 + .ra: x30
+STACK CFI 24a04 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 24a0c .cfa: x29 96 +
+STACK CFI 24a18 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^
+STACK CFI 24aec x21: x21 x22: x22
+STACK CFI 24af0 x19: x19 x20: x20
+STACK CFI 24af4 x23: x23 x24: x24
+STACK CFI 24af8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24afc b4 .cfa: sp 0 + .ra: x30
+STACK CFI 24b00 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 24b04 .cfa: x29 48 +
+STACK CFI 24b08 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 24b18 x21: .cfa -16 + ^
+STACK CFI 24ba4 x21: x21
+STACK CFI 24ba8 x19: x19 x20: x20
+STACK CFI 24bac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24bb0 b0 .cfa: sp 0 + .ra: x30
+STACK CFI 24bb4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 24bb8 .cfa: x29 48 +
+STACK CFI 24bc0 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 24c40 x21: x21
+STACK CFI 24c58 x19: x19 x20: x20
+STACK CFI 24c5c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24c60 98 .cfa: sp 0 + .ra: x30
+STACK CFI 24c64 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 24c68 .cfa: x29 64 +
+STACK CFI 24c70 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 24cec x19: x19 x20: x20
+STACK CFI 24cf0 x21: x21
+STACK CFI 24cf4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24cf8 1c .cfa: sp 0 + .ra: x30
+STACK CFI 24cfc .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 24d00 .cfa: x29 16 +
+STACK CFI 24d10 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24d14 3c .cfa: sp 0 + .ra: x30
+STACK CFI 24d18 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 24d1c .cfa: x29 16 +
+STACK CFI 24d4c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4cfc4 5c .cfa: sp 0 + .ra: x30
+STACK CFI 4cfc8 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 4cfcc .cfa: x29 48 +
+STACK CFI 4cfd4 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 4d014 x19: x19 x20: x20
+STACK CFI 4d018 x21: x21 x22: x22
+STACK CFI 4d01c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4d020 24 .cfa: sp 0 + .ra: x30
+STACK CFI 4d024 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 4d028 .cfa: x29 16 +
+STACK CFI 4d040 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4d044 c0 .cfa: sp 0 + .ra: x30
+STACK CFI 4d048 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 4d04c .cfa: x29 64 +
+STACK CFI 4d058 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^ x24: .cfa -8 + ^
+STACK CFI 4d064 x19: x19 x20: x20
+STACK CFI 4d068 x21: x21 x22: x22
+STACK CFI 4d06c x23: x23 x24: x24
+STACK CFI 4d070 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 4d074 .cfa: x29 64 + .ra: .cfa -56 + ^ x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^ x24: .cfa -8 + ^ x29: .cfa -64 + ^
+STACK CFI 4d0f4 x19: x19 x20: x20
+STACK CFI 4d0f8 x21: x21 x22: x22
+STACK CFI 4d0fc x23: x23 x24: x24
+STACK CFI 4d100 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4d104 5c .cfa: sp 0 + .ra: x30
+STACK CFI 4d108 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 4d10c .cfa: x29 48 +
+STACK CFI 4d114 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 4d154 x19: x19 x20: x20
+STACK CFI 4d158 x21: x21 x22: x22
+STACK CFI 4d15c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4d160 24 .cfa: sp 0 + .ra: x30
+STACK CFI 4d164 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 4d168 .cfa: x29 16 +
+STACK CFI 4d180 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4d184 c4 .cfa: sp 0 + .ra: x30
+STACK CFI 4d188 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 4d18c .cfa: x29 64 +
+STACK CFI 4d198 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^ x24: .cfa -8 + ^
+STACK CFI 4d1a4 x19: x19 x20: x20
+STACK CFI 4d1a8 x21: x21 x22: x22
+STACK CFI 4d1ac x23: x23 x24: x24
+STACK CFI 4d1b0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 4d1b4 .cfa: x29 64 + .ra: .cfa -56 + ^ x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^ x24: .cfa -8 + ^ x29: .cfa -64 + ^
+STACK CFI 4d238 x19: x19 x20: x20
+STACK CFI 4d23c x21: x21 x22: x22
+STACK CFI 4d240 x23: x23 x24: x24
+STACK CFI 4d244 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4d248 2c .cfa: sp 0 + .ra: x30
+STACK CFI 4d24c .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 4d254 .cfa: x29 16 +
+STACK CFI 4d270 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4d274 5c .cfa: sp 0 + .ra: x30
+STACK CFI 4d278 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 4d27c .cfa: x29 48 +
+STACK CFI 4d284 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 4d2c4 x19: x19 x20: x20
+STACK CFI 4d2c8 x21: x21 x22: x22
+STACK CFI 4d2cc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4d2d0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 4d2d4 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 4d2d8 .cfa: x29 16 +
+STACK CFI 4d2f0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4d2f4 c4 .cfa: sp 0 + .ra: x30
+STACK CFI 4d2f8 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 4d2fc .cfa: x29 64 +
+STACK CFI 4d308 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^ x24: .cfa -8 + ^
+STACK CFI 4d314 x19: x19 x20: x20
+STACK CFI 4d318 x21: x21 x22: x22
+STACK CFI 4d31c x23: x23 x24: x24
+STACK CFI 4d320 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 4d324 .cfa: x29 64 + .ra: .cfa -56 + ^ x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^ x24: .cfa -8 + ^ x29: .cfa -64 + ^
+STACK CFI 4d3a8 x19: x19 x20: x20
+STACK CFI 4d3ac x21: x21 x22: x22
+STACK CFI 4d3b0 x23: x23 x24: x24
+STACK CFI 4d3b4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4d3b8 5c .cfa: sp 0 + .ra: x30
+STACK CFI 4d3bc .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 4d3c0 .cfa: x29 48 +
+STACK CFI 4d3c8 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 4d408 x19: x19 x20: x20
+STACK CFI 4d40c x21: x21 x22: x22
+STACK CFI 4d410 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4d414 9c .cfa: sp 0 + .ra: x30
+STACK CFI 4d418 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 4d41c .cfa: x29 64 +
+STACK CFI 4d428 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^ x24: .cfa -8 + ^
+STACK CFI 4d4a0 x19: x19 x20: x20
+STACK CFI 4d4a4 x21: x21 x22: x22
+STACK CFI 4d4a8 x23: x23 x24: x24
+STACK CFI 4d4ac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24db0 68 .cfa: sp 0 + .ra: x30
+STACK CFI 24db4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 24db8 .cfa: x29 48 +
+STACK CFI 24dbc x19: .cfa -32 + ^
+STACK CFI 24e10 x19: x19
+STACK CFI 24e14 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 250a4 58 .cfa: sp 0 + .ra: x30
+STACK CFI 250a8 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 250ac .cfa: x29 48 +
+STACK CFI 250b0 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 250b8 x21: .cfa -16 + ^
+STACK CFI 250f0 x19: x19 x20: x20
+STACK CFI 250f4 x21: x21
+STACK CFI 250f8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 c8 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI 10 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI b4 x21: x21
+STACK CFI c0 x19: x19 x20: x20
+STACK CFI c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 f4 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 18 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI e8 x19: x19 x20: x20
+STACK CFI ec x21: x21 x22: x22
+STACK CFI f0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 251f0 8c .cfa: sp 0 + .ra: x30
+STACK CFI 251f4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 251f8 .cfa: x29 48 +
+STACK CFI 251fc x19: .cfa -32 + ^
+STACK CFI 25268 x19: x19
+STACK CFI 2526c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 25270 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 25274 x19: x19
+STACK CFI 25278 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2527c c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25288 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25298 24 .cfa: sp 0 + .ra: x30
+STACK CFI 2529c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 252a0 .cfa: x29 32 +
+STACK CFI 252a4 x19: .cfa -16 + ^
+STACK CFI 252b4 x19: x19
+STACK CFI 252b8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 252bc 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 252cc c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 252d8 8c .cfa: sp 0 + .ra: x30
+STACK CFI 252dc .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 252e0 .cfa: x29 48 +
+STACK CFI 252e4 x19: .cfa -32 + ^
+STACK CFI 25350 x19: x19
+STACK CFI 25354 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 25358 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 2535c x19: x19
+STACK CFI 25360 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25364 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25370 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25380 24 .cfa: sp 0 + .ra: x30
+STACK CFI 25384 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 25388 .cfa: x29 32 +
+STACK CFI 2538c x19: .cfa -16 + ^
+STACK CFI 2539c x19: x19
+STACK CFI 253a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 253a4 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 253b4 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 253c0 e0 .cfa: sp 0 + .ra: x30
+STACK CFI 253c4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 253c8 .cfa: x29 48 +
+STACK CFI 253cc x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 2548c x19: x19 x20: x20
+STACK CFI 25490 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 25494 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x29: .cfa -48 + ^
+STACK CFI 25498 x19: x19 x20: x20
+STACK CFI 2549c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 254a0 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 254ac cc .cfa: sp 0 + .ra: x30
+STACK CFI 254b0 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 254b4 .cfa: x29 48 +
+STACK CFI 254b8 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 25564 x19: x19 x20: x20
+STACK CFI 25568 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2556c .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x29: .cfa -48 + ^
+STACK CFI 25570 x19: x19 x20: x20
+STACK CFI 25574 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25578 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25584 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25590 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25598 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255a8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 255ac .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 255b0 .cfa: x29 32 +
+STACK CFI 255b4 x19: .cfa -16 + ^
+STACK CFI 255c4 x19: x19
+STACK CFI 255c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 255cc 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255d4 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255e4 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255f0 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255f8 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25608 24 .cfa: sp 0 + .ra: x30
+STACK CFI 2560c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 25610 .cfa: x29 32 +
+STACK CFI 25614 x19: .cfa -16 + ^
+STACK CFI 25624 x19: x19
+STACK CFI 25628 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2562c 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25634 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25644 5c .cfa: sp 0 + .ra: x30
+STACK CFI 25648 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2564c .cfa: x29 32 +
+STACK CFI 25650 x19: .cfa -16 + ^
+STACK CFI 25698 x19: x19
+STACK CFI 2569c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 256a0 78 .cfa: sp 0 + .ra: x30
+STACK CFI 256a4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 256ac .cfa: x29 32 +
+STACK CFI 256b0 x19: .cfa -16 + ^
+STACK CFI 25710 x19: x19
+STACK CFI 25714 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25718 50 .cfa: sp 0 + .ra: x30
+STACK CFI 2571c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 25720 .cfa: x29 32 +
+STACK CFI 25724 x19: .cfa -16 + ^
+STACK CFI 25754 x19: x19
+STACK CFI 25758 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2575c .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI 25760 x19: x19
+STACK CFI 25764 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25768 13c .cfa: sp 0 + .ra: x30
+STACK CFI 2576c .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 25770 .cfa: x29 64 +
+STACK CFI 25778 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 25898 x19: x19 x20: x20
+STACK CFI 2589c x21: x21 x22: x22
+STACK CFI 258a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 cc .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI 10 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI bc x21: x21
+STACK CFI c4 x19: x19 x20: x20
+STACK CFI c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25964 104 .cfa: sp 0 + .ra: x30
+STACK CFI 25968 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 2596c .cfa: x29 80 +
+STACK CFI 25978 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^
+STACK CFI 25a58 x19: x19 x20: x20
+STACK CFI 25a5c x21: x21 x22: x22
+STACK CFI 25a60 x23: x23 x24: x24
+STACK CFI 25a64 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25b28 2c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25b54 5c .cfa: sp 0 + .ra: x30
+STACK CFI 25b58 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 25b5c .cfa: x29 16 +
+STACK CFI 25bac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 1c8 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 128 + .ra: .cfa -120 + ^ x29: .cfa -128 + ^
+STACK CFI 8 .cfa: x29 128 +
+STACK CFI 14 x19: .cfa -112 + ^ x20: .cfa -104 + ^ x21: .cfa -96 + ^ x22: .cfa -88 + ^ x23: .cfa -80 + ^ x24: .cfa -72 + ^
+STACK CFI 1b8 x19: x19 x20: x20
+STACK CFI 1bc x21: x21 x22: x22
+STACK CFI 1c0 x23: x23 x24: x24
+STACK CFI 1c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 cc .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI 10 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI bc x21: x21
+STACK CFI c4 x19: x19 x20: x20
+STACK CFI c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 e8 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 480 + .ra: .cfa -472 + ^ x29: .cfa -480 + ^
+STACK CFI 8 .cfa: x29 480 +
+STACK CFI c x19: .cfa -464 + ^ x20: .cfa -456 + ^
+STACK CFI 18 x23: .cfa -432 + ^ x24: .cfa -424 + ^ x25: .cfa -416 + ^
+STACK CFI 34 x21: .cfa -448 + ^ x22: .cfa -440 + ^
+STACK CFI d0 x25: x25
+STACK CFI d8 x19: x19 x20: x20
+STACK CFI dc x21: x21 x22: x22
+STACK CFI e0 x23: x23 x24: x24
+STACK CFI e4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4d4b0 600 .cfa: sp 0 + .ra: x30
+STACK CFI 4d4b4 .cfa: sp 416 + .ra: .cfa -408 + ^ x29: .cfa -416 + ^
+STACK CFI 4d4bc .cfa: x29 416 +
+STACK CFI 4d4d0 x19: .cfa -400 + ^ x20: .cfa -392 + ^ x21: .cfa -384 + ^ x22: .cfa -376 + ^ x23: .cfa -368 + ^ x24: .cfa -360 + ^ x25: .cfa -352 + ^ x26: .cfa -344 + ^ x27: .cfa -336 + ^ x28: .cfa -328 + ^
+STACK CFI 4da98 x19: x19 x20: x20
+STACK CFI 4da9c x21: x21 x22: x22
+STACK CFI 4daa0 x23: x23 x24: x24
+STACK CFI 4daa4 x25: x25 x26: x26
+STACK CFI 4daa8 x27: x27 x28: x28
+STACK CFI 4daac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26188 54 .cfa: sp 0 + .ra: x30
+STACK CFI 2618c .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 26190 .cfa: x29 64 +
+STACK CFI 26194 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 261d4 x19: x19 x20: x20
+STACK CFI 261d8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 261dc 64 .cfa: sp 0 + .ra: x30
+STACK CFI 261e0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 261e4 .cfa: x29 64 +
+STACK CFI 261e8 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 26238 x19: x19 x20: x20
+STACK CFI 2623c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26240 54 .cfa: sp 0 + .ra: x30
+STACK CFI 26244 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 26248 .cfa: x29 64 +
+STACK CFI 2624c x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 2628c x19: x19 x20: x20
+STACK CFI 26290 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26294 54 .cfa: sp 0 + .ra: x30
+STACK CFI 26298 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 2629c .cfa: x29 64 +
+STACK CFI 262a0 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 262e0 x19: x19 x20: x20
+STACK CFI 262e4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 3483c e8 .cfa: sp 0 + .ra: x30
+STACK CFI 34840 .cfa: sp 480 + .ra: .cfa -472 + ^ x29: .cfa -480 + ^
+STACK CFI 34844 .cfa: x29 480 +
+STACK CFI 34848 x19: .cfa -464 + ^ x20: .cfa -456 + ^
+STACK CFI 34854 x23: .cfa -432 + ^ x24: .cfa -424 + ^ x25: .cfa -416 + ^
+STACK CFI 34870 x21: .cfa -448 + ^ x22: .cfa -440 + ^
+STACK CFI 3490c x25: x25
+STACK CFI 34914 x19: x19 x20: x20
+STACK CFI 34918 x21: x21 x22: x22
+STACK CFI 3491c x23: x23 x24: x24
+STACK CFI 34920 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 3c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI 14 x19: .cfa -16 + ^
+STACK CFI 34 x19: x19
+STACK CFI 38 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4dab0 990 .cfa: sp 0 + .ra: x30
+STACK CFI 4dab4 .cfa: sp 704 +
+STACK CFI 4dabc .cfa: sp 864 + .ra: .cfa -856 + ^ x29: .cfa -864 + ^
+STACK CFI 4dac0 .cfa: x29 864 +
+STACK CFI 4dae0 v10: .cfa -752 + ^ v11: .cfa -744 + ^ v12: .cfa -736 + ^ v13: .cfa -728 + ^ v8: .cfa -768 + ^ v9: .cfa -760 + ^ x19: .cfa -848 + ^ x20: .cfa -840 + ^ x21: .cfa -832 + ^ x22: .cfa -824 + ^ x23: .cfa -816 + ^ x24: .cfa -808 + ^ x25: .cfa -800 + ^ x26: .cfa -792 + ^ x27: .cfa -784 + ^ x28: .cfa -776 + ^
+STACK CFI 4dae8 v14: .cfa -720 + ^
+STACK CFI 4e414 v8: v8 v9: v9
+STACK CFI 4e418 x19: x19 x20: x20
+STACK CFI 4e41c x21: x21 x22: x22
+STACK CFI 4e420 v10: v10 v11: v11
+STACK CFI 4e424 x23: x23 x24: x24
+STACK CFI 4e428 v12: v12 v13: v13
+STACK CFI 4e42c x25: x25 x26: x26
+STACK CFI 4e430 x27: x27 x28: x28
+STACK CFI 4e434 v14: v14
+STACK CFI 4e438 .cfa: sp 704 + .ra: .ra x29: x29
+STACK CFI 4e43c .cfa: sp 544 +
+STACK CFI INIT 4e440 6a8 .cfa: sp 0 + .ra: x30
+STACK CFI 4e444 .cfa: sp 288 + .ra: .cfa -280 + ^ x29: .cfa -288 + ^
+STACK CFI 4e44c .cfa: x29 288 +
+STACK CFI 4e454 v8: .cfa -192 + ^ v9: .cfa -184 + ^ x21: .cfa -256 + ^ x22: .cfa -248 + ^
+STACK CFI 4e474 x19: .cfa -272 + ^ x20: .cfa -264 + ^
+STACK CFI 4e498 x23: .cfa -240 + ^ x24: .cfa -232 + ^ x25: .cfa -224 + ^ x26: .cfa -216 + ^ x27: .cfa -208 + ^ x28: .cfa -200 + ^
+STACK CFI 4eacc v8: v8 v9: v9
+STACK CFI 4ead0 x19: x19 x20: x20
+STACK CFI 4ead4 x21: x21 x22: x22
+STACK CFI 4ead8 x23: x23 x24: x24
+STACK CFI 4eadc x25: x25 x26: x26
+STACK CFI 4eae0 x27: x27 x28: x28
+STACK CFI 4eae4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4eae8 5a4 .cfa: sp 0 + .ra: x30
+STACK CFI 4eaec .cfa: sp 304 + .ra: .cfa -296 + ^ x29: .cfa -304 + ^
+STACK CFI 4eaf4 .cfa: x29 304 +
+STACK CFI 4eb0c v8: .cfa -208 + ^ v9: .cfa -200 + ^ x19: .cfa -288 + ^ x20: .cfa -280 + ^ x21: .cfa -272 + ^ x22: .cfa -264 + ^ x23: .cfa -256 + ^ x24: .cfa -248 + ^ x25: .cfa -240 + ^ x26: .cfa -232 + ^ x27: .cfa -224 + ^ x28: .cfa -216 + ^
+STACK CFI 4eb14 v10: .cfa -192 + ^
+STACK CFI 4f06c v8: v8 v9: v9
+STACK CFI 4f070 x19: x19 x20: x20
+STACK CFI 4f074 x21: x21 x22: x22
+STACK CFI 4f078 x23: x23 x24: x24
+STACK CFI 4f07c x25: x25 x26: x26
+STACK CFI 4f080 x27: x27 x28: x28
+STACK CFI 4f084 v10: v10
+STACK CFI 4f088 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4f08c 218 .cfa: sp 0 + .ra: x30
+STACK CFI 4f090 .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 4f09c .cfa: x29 160 +
+STACK CFI 4f0a0 x19: .cfa -144 + ^ x20: .cfa -136 + ^
+STACK CFI 4f0b8 x21: .cfa -128 + ^ x22: .cfa -120 + ^ x23: .cfa -112 + ^
+STACK CFI 4f294 x23: x23
+STACK CFI 4f298 x19: x19 x20: x20
+STACK CFI 4f29c x21: x21 x22: x22
+STACK CFI 4f2a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2eb58 88 .cfa: sp 0 + .ra: x30
+STACK CFI 2eb5c .cfa: sp 352 + .ra: .cfa -344 + ^ x29: .cfa -352 + ^
+STACK CFI 2eb64 .cfa: x29 352 +
+STACK CFI 2eb68 x19: .cfa -336 + ^ x20: .cfa -328 + ^
+STACK CFI 2eb78 x21: .cfa -320 + ^
+STACK CFI 2ebd4 x21: x21
+STACK CFI 2ebd8 x19: x19 x20: x20
+STACK CFI 2ebdc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4f2a4 144 .cfa: sp 0 + .ra: x30
+STACK CFI 4f2a8 .cfa: sp 240 + .ra: .cfa -232 + ^ x29: .cfa -240 + ^
+STACK CFI 4f2ac .cfa: x29 240 +
+STACK CFI 4f2b0 x21: .cfa -208 + ^ x22: .cfa -200 + ^
+STACK CFI 4f2d0 x19: .cfa -224 + ^ x20: .cfa -216 + ^ x23: .cfa -192 + ^
+STACK CFI 4f3d4 x23: x23
+STACK CFI 4f3dc x19: x19 x20: x20
+STACK CFI 4f3e0 x21: x21 x22: x22
+STACK CFI 4f3e4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4f3e8 40 .cfa: sp 0 + .ra: x30
+STACK CFI 4f3ec .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 4f3f0 .cfa: x29 32 +
+STACK CFI 4f3f8 x19: .cfa -16 + ^
+STACK CFI 4f420 x19: x19
+STACK CFI 4f424 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4f428 57c .cfa: sp 0 + .ra: x30
+STACK CFI 4f42c .cfa: sp 32768 +
+STACK CFI 4f430 .cfa: sp 32864 +
+STACK CFI 4f434 .cfa: sp 32944 + .ra: .cfa -32936 + ^ x29: .cfa -32944 + ^
+STACK CFI 4f438 .cfa: x29 32944 +
+STACK CFI 4f448 x19: .cfa -32928 + ^ x20: .cfa -32920 + ^ x21: .cfa -32912 + ^ x22: .cfa -32904 + ^ x23: .cfa -32896 + ^ x24: .cfa -32888 + ^ x25: .cfa -32880 + ^ x26: .cfa -32872 + ^
+STACK CFI 4f988 x19: x19 x20: x20
+STACK CFI 4f98c x21: x21 x22: x22
+STACK CFI 4f990 x23: x23 x24: x24
+STACK CFI 4f994 x25: x25 x26: x26
+STACK CFI 4f998 .cfa: sp 32864 + .ra: .ra x29: x29
+STACK CFI 4f99c .cfa: sp 32768 +
+STACK CFI 4f9a0 .cfa: sp 32688 +
+STACK CFI INIT 0 134 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 384 + .ra: .cfa -376 + ^ x29: .cfa -384 + ^
+STACK CFI c .cfa: x29 384 +
+STACK CFI 10 x19: .cfa -368 + ^ x20: .cfa -360 + ^
+STACK CFI 20 x21: .cfa -352 + ^ x22: .cfa -344 + ^
+STACK CFI 28 x23: .cfa -336 + ^ x24: .cfa -328 + ^
+STACK CFI 124 x19: x19 x20: x20
+STACK CFI 128 x21: x21 x22: x22
+STACK CFI 12c x23: x23 x24: x24
+STACK CFI 130 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26c88 9c .cfa: sp 0 + .ra: x30
+STACK CFI 26c8c .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 26c90 .cfa: x29 160 +
+STACK CFI 26c98 x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^
+STACK CFI 26d18 x19: x19 x20: x20
+STACK CFI 26d1c x21: x21 x22: x22
+STACK CFI 26d20 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4f9a4 60c .cfa: sp 0 + .ra: x30
+STACK CFI 4f9a8 .cfa: sp 880 +
+STACK CFI 4f9b0 .cfa: sp 992 + .ra: .cfa -984 + ^ x29: .cfa -992 + ^
+STACK CFI 4f9b4 .cfa: x29 992 +
+STACK CFI 4f9cc v8: .cfa -896 + ^ v9: .cfa -888 + ^ x19: .cfa -976 + ^ x20: .cfa -968 + ^ x21: .cfa -960 + ^ x22: .cfa -952 + ^ x23: .cfa -944 + ^ x24: .cfa -936 + ^ x25: .cfa -928 + ^ x26: .cfa -920 + ^ x27: .cfa -912 + ^ x28: .cfa -904 + ^
+STACK CFI 4ff90 v8: v8 v9: v9
+STACK CFI 4ff94 x19: x19 x20: x20
+STACK CFI 4ff98 x21: x21 x22: x22
+STACK CFI 4ff9c x23: x23 x24: x24
+STACK CFI 4ffa0 x25: x25 x26: x26
+STACK CFI 4ffa4 x27: x27 x28: x28
+STACK CFI 4ffa8 .cfa: sp 880 + .ra: .ra x29: x29
+STACK CFI 4ffac .cfa: sp 768 +
+STACK CFI INIT 282a4 28 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 282cc 20 .cfa: sp 0 + .ra: x30
+STACK CFI 282d0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 282d8 .cfa: x29 32 +
+STACK CFI 282e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 282ec 20 .cfa: sp 0 + .ra: x30
+STACK CFI 282f0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 282f8 .cfa: x29 32 +
+STACK CFI 28308 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2830c 110 .cfa: sp 0 + .ra: x30
+STACK CFI 28310 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2831c .cfa: x29 32 +
+STACK CFI 28398 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2839c .cfa: x29 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI INIT 2841c 124 .cfa: sp 0 + .ra: x30
+STACK CFI 28420 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 28424 .cfa: x29 80 +
+STACK CFI 28430 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^
+STACK CFI 28530 x19: x19 x20: x20
+STACK CFI 28534 x21: x21 x22: x22
+STACK CFI 28538 x23: x23 x24: x24
+STACK CFI 2853c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 28540 b0 .cfa: sp 0 + .ra: x30
+STACK CFI 28544 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 28548 .cfa: x29 80 +
+STACK CFI 28550 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI 285e0 x21: x21
+STACK CFI 285e8 x19: x19 x20: x20
+STACK CFI 285ec .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 285f0 60 .cfa: sp 0 + .ra: x30
+STACK CFI 285f4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 285f8 .cfa: x29 32 +
+STACK CFI 285fc x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 28648 x19: x19 x20: x20
+STACK CFI 2864c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 28650 c4 .cfa: sp 0 + .ra: x30
+STACK CFI 28654 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 2865c .cfa: x29 48 +
+STACK CFI 28664 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 28708 x19: x19 x20: x20
+STACK CFI 2870c x21: x21
+STACK CFI 28710 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 28714 b8 .cfa: sp 0 + .ra: x30
+STACK CFI 28718 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 2871c .cfa: x29 48 +
+STACK CFI 28724 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 287c0 x21: x21
+STACK CFI 287c4 x19: x19 x20: x20
+STACK CFI 287c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 287cc 10c .cfa: sp 0 + .ra: x30
+STACK CFI 287d0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 287d8 .cfa: x29 64 +
+STACK CFI 287e0 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x23: .cfa -16 + ^
+STACK CFI 287e8 x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 288c8 x19: x19 x20: x20
+STACK CFI 288cc x21: x21 x22: x22
+STACK CFI 288d0 x23: x23
+STACK CFI 288d4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 288d8 f0 .cfa: sp 0 + .ra: x30
+STACK CFI 288dc .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 288e4 .cfa: x29 64 +
+STACK CFI 288f0 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 289b8 x23: x23
+STACK CFI 289bc x19: x19 x20: x20
+STACK CFI 289c0 x21: x21 x22: x22
+STACK CFI 289c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2633c 104 .cfa: sp 0 + .ra: x30
+STACK CFI 26340 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 26348 .cfa: x29 80 +
+STACK CFI 26350 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x23: .cfa -32 + ^
+STACK CFI 26358 x21: .cfa -48 + ^ x22: .cfa -40 + ^
+STACK CFI 26430 x23: x23
+STACK CFI 26434 x19: x19 x20: x20
+STACK CFI 26438 x21: x21 x22: x22
+STACK CFI 2643c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26984 124 .cfa: sp 0 + .ra: x30
+STACK CFI 26988 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 26990 .cfa: x29 80 +
+STACK CFI 2699c x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI 26a98 x19: x19 x20: x20
+STACK CFI 26a9c x21: x21 x22: x22
+STACK CFI 26aa0 x23: x23
+STACK CFI 26aa4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 228f0 268 .cfa: sp 0 + .ra: x30
+STACK CFI 228f4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 228f8 .cfa: x29 64 +
+STACK CFI 22900 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 22b44 x21: x21
+STACK CFI 22b4c x19: x19 x20: x20
+STACK CFI 22b50 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2eb40 18 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 4ffb0 38 .cfa: sp 0 + .ra: x30
+STACK CFI 4ffb4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 4ffb8 .cfa: x29 32 +
+STACK CFI 4ffbc x19: .cfa -16 + ^
+STACK CFI 4ffe0 x19: x19
+STACK CFI 4ffe4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4ffe8 40 .cfa: sp 0 + .ra: x30
+STACK CFI 4ffec .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 4fff0 .cfa: x29 48 +
+STACK CFI 4fff4 x19: .cfa -32 + ^
+STACK CFI 50020 x19: x19
+STACK CFI 50024 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 50028 18 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 50040 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 50054 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 50068 58 .cfa: sp 0 + .ra: x30
+STACK CFI 5006c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 50070 .cfa: x29 32 +
+STACK CFI 50074 x19: .cfa -16 + ^
+STACK CFI 500ac x19: x19
+STACK CFI 500b0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 500b4 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI 500b8 x19: x19
+STACK CFI 500bc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 500c0 4c .cfa: sp 0 + .ra: x30
+STACK CFI 500c4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 500c8 .cfa: x29 32 +
+STACK CFI 500cc x19: .cfa -16 + ^
+STACK CFI 500f8 x19: x19
+STACK CFI 500fc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 50100 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI 50104 x19: x19
+STACK CFI 50108 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5010c b0 .cfa: sp 0 + .ra: x30
+STACK CFI 50110 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 50114 .cfa: x29 64 +
+STACK CFI 5011c x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 501b0 x19: x19 x20: x20
+STACK CFI 501b4 x21: x21 x22: x22
+STACK CFI 501b8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 501bc 4c .cfa: sp 0 + .ra: x30
+STACK CFI 501c0 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 501c4 .cfa: x29 48 +
+STACK CFI 501c8 x19: .cfa -32 + ^
+STACK CFI 50200 x19: x19
+STACK CFI 50204 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 50208 20 .cfa: sp 0 + .ra: x30
+STACK CFI 5020c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 50210 .cfa: x29 32 +
+STACK CFI 50224 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 50228 70 .cfa: sp 0 + .ra: x30
+STACK CFI 5022c .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 50230 .cfa: x29 64 +
+STACK CFI 50234 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 50290 x19: x19 x20: x20
+STACK CFI 50294 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 50298 1c .cfa: sp 0 + .ra: x30
+STACK CFI 5029c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 502a0 .cfa: x29 32 +
+STACK CFI 502b0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 502b4 cc .cfa: sp 0 + .ra: x30
+STACK CFI 502b8 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 502bc .cfa: x29 80 +
+STACK CFI 502c4 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI 50374 x19: x19 x20: x20
+STACK CFI 50378 x21: x21
+STACK CFI 5037c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 50380 30 .cfa: sp 0 + .ra: x30
+STACK CFI 50384 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 50390 .cfa: x29 32 +
+STACK CFI 50394 x19: .cfa -16 + ^
+STACK CFI 503a8 x19: x19
+STACK CFI 503ac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 503b0 30 .cfa: sp 0 + .ra: x30
+STACK CFI 503b4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 503bc .cfa: x29 32 +
+STACK CFI 503c0 x19: .cfa -16 + ^
+STACK CFI 503d8 x19: x19
+STACK CFI 503dc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 503e0 40 .cfa: sp 0 + .ra: x30
+STACK CFI 503e4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 503e8 .cfa: x29 48 +
+STACK CFI 503ec x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 50418 x19: x19 x20: x20
+STACK CFI 5041c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 50420 48 .cfa: sp 0 + .ra: x30
+STACK CFI 50424 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 50428 .cfa: x29 48 +
+STACK CFI 50430 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 50458 x21: x21
+STACK CFI 50460 x19: x19 x20: x20
+STACK CFI 50464 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 248e8 30 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 9c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI 10 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI 8c x21: x21
+STACK CFI 94 x19: x19 x20: x20
+STACK CFI 98 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25b54 5c .cfa: sp 0 + .ra: x30
+STACK CFI 25b58 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 25b5c .cfa: x29 16 +
+STACK CFI 25bac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 d0 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI 10 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI c4 x21: x21
+STACK CFI c8 x19: x19 x20: x20
+STACK CFI cc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 50468 48 .cfa: sp 0 + .ra: x30
+STACK CFI 5046c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 50470 .cfa: x29 32 +
+STACK CFI 50474 x19: .cfa -16 + ^
+STACK CFI 504a8 x19: x19
+STACK CFI 504ac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 7c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 74 x19: x19 x20: x20
+STACK CFI 78 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 504b0 58 .cfa: sp 0 + .ra: x30
+STACK CFI 504b4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 504b8 .cfa: x29 48 +
+STACK CFI 504c0 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 504f8 x21: x21
+STACK CFI 50500 x19: x19 x20: x20
+STACK CFI 50504 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 50508 54 .cfa: sp 0 + .ra: x30
+STACK CFI 5050c .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 50510 .cfa: x29 48 +
+STACK CFI 50518 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 5054c x21: x21
+STACK CFI 50554 x19: x19 x20: x20
+STACK CFI 50558 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5055c 7c .cfa: sp 0 + .ra: x30
+STACK CFI 50560 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 50568 .cfa: x29 48 +
+STACK CFI 50570 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 505cc x19: x19 x20: x20
+STACK CFI 505d0 x21: x21 x22: x22
+STACK CFI 505d4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 505d8 34 .cfa: sp 0 + .ra: x30
+STACK CFI 505dc .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 505e0 .cfa: x29 32 +
+STACK CFI 505e4 x19: .cfa -16 + ^
+STACK CFI 50604 x19: x19
+STACK CFI 50608 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5060c 34 .cfa: sp 0 + .ra: x30
+STACK CFI 50610 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 5061c .cfa: x29 32 +
+STACK CFI 50620 x19: .cfa -16 + ^
+STACK CFI 50638 x19: x19
+STACK CFI 5063c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 50640 34 .cfa: sp 0 + .ra: x30
+STACK CFI 50644 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 50650 .cfa: x29 32 +
+STACK CFI 50654 x19: .cfa -16 + ^
+STACK CFI 5066c x19: x19
+STACK CFI 50670 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 50674 34 .cfa: sp 0 + .ra: x30
+STACK CFI 50678 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 50684 .cfa: x29 32 +
+STACK CFI 50688 x19: .cfa -16 + ^
+STACK CFI 506a0 x19: x19
+STACK CFI 506a4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 506a8 34 .cfa: sp 0 + .ra: x30
+STACK CFI 506ac .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 506b8 .cfa: x29 32 +
+STACK CFI 506bc x19: .cfa -16 + ^
+STACK CFI 506d4 x19: x19
+STACK CFI 506d8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 506dc 34 .cfa: sp 0 + .ra: x30
+STACK CFI 506e0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 506ec .cfa: x29 32 +
+STACK CFI 506f0 x19: .cfa -16 + ^
+STACK CFI 50708 x19: x19
+STACK CFI 5070c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 50710 34 .cfa: sp 0 + .ra: x30
+STACK CFI 50714 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 50720 .cfa: x29 32 +
+STACK CFI 50724 x19: .cfa -16 + ^
+STACK CFI 5073c x19: x19
+STACK CFI 50740 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 50744 34 .cfa: sp 0 + .ra: x30
+STACK CFI 50748 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 50754 .cfa: x29 32 +
+STACK CFI 50758 x19: .cfa -16 + ^
+STACK CFI 50770 x19: x19
+STACK CFI 50774 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 50778 34 .cfa: sp 0 + .ra: x30
+STACK CFI 5077c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 50788 .cfa: x29 32 +
+STACK CFI 5078c x19: .cfa -16 + ^
+STACK CFI 507a4 x19: x19
+STACK CFI 507a8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 507ac 34 .cfa: sp 0 + .ra: x30
+STACK CFI 507b0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 507bc .cfa: x29 32 +
+STACK CFI 507c0 x19: .cfa -16 + ^
+STACK CFI 507d8 x19: x19
+STACK CFI 507dc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 507e0 50 .cfa: sp 0 + .ra: x30
+STACK CFI 507e4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 507e8 .cfa: x29 48 +
+STACK CFI 507f0 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 50824 x19: x19 x20: x20
+STACK CFI 50828 x21: x21 x22: x22
+STACK CFI 5082c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 50830 24 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 50854 108 .cfa: sp 0 + .ra: x30
+STACK CFI 50858 .cfa: sp 32 +
+STACK CFI 50958 .cfa: sp 0 +
+STACK CFI INIT 5095c 140 .cfa: sp 0 + .ra: x30
+STACK CFI 50960 .cfa: sp 112 + .ra: .cfa -104 + ^ x29: .cfa -112 + ^
+STACK CFI 50968 .cfa: x29 112 +
+STACK CFI 50978 x19: .cfa -96 + ^ x20: .cfa -88 + ^ x21: .cfa -80 + ^ x22: .cfa -72 + ^ x23: .cfa -64 + ^ x24: .cfa -56 + ^ x25: .cfa -48 + ^ x26: .cfa -40 + ^
+STACK CFI 50a88 x19: x19 x20: x20
+STACK CFI 50a8c x21: x21 x22: x22
+STACK CFI 50a90 x23: x23 x24: x24
+STACK CFI 50a94 x25: x25 x26: x26
+STACK CFI 50a98 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 50a9c 274 .cfa: sp 0 + .ra: x30
+STACK CFI 50aa0 .cfa: sp 128 + .ra: .cfa -120 + ^ x29: .cfa -128 + ^
+STACK CFI 50aa4 .cfa: x29 128 +
+STACK CFI 50aa8 x21: .cfa -96 + ^ x22: .cfa -88 + ^
+STACK CFI 50ab8 v8: .cfa -32 + ^
+STACK CFI 50acc x23: .cfa -80 + ^ x24: .cfa -72 + ^
+STACK CFI 50ae8 x19: .cfa -112 + ^ x20: .cfa -104 + ^ x25: .cfa -64 + ^ x26: .cfa -56 + ^ x27: .cfa -48 + ^ x28: .cfa -40 + ^
+STACK CFI 50cf4 x23: x23 x24: x24
+STACK CFI 50cf8 x19: x19 x20: x20
+STACK CFI 50cfc x21: x21 x22: x22
+STACK CFI 50d00 x25: x25 x26: x26
+STACK CFI 50d04 x27: x27 x28: x28
+STACK CFI 50d08 v8: v8
+STACK CFI 50d0c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 50d10 78 .cfa: sp 0 + .ra: x30
+STACK CFI 50d14 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 50d1c .cfa: x29 48 +
+STACK CFI 50d20 x19: .cfa -32 + ^
+STACK CFI 50d80 x19: x19
+STACK CFI 50d84 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 50d88 c0 .cfa: sp 0 + .ra: x30
+STACK CFI 50d8c .cfa: sp 128 + .ra: .cfa -120 + ^ x29: .cfa -128 + ^
+STACK CFI 50d90 .cfa: x29 128 +
+STACK CFI 50d98 x19: .cfa -112 + ^ x20: .cfa -104 + ^ x23: .cfa -80 + ^ x24: .cfa -72 + ^
+STACK CFI 50dac x21: .cfa -96 + ^ x22: .cfa -88 + ^
+STACK CFI 50e38 x19: x19 x20: x20
+STACK CFI 50e3c x21: x21 x22: x22
+STACK CFI 50e40 x23: x23 x24: x24
+STACK CFI 50e44 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 50e48 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 50e58 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 50e68 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 50e78 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 50e88 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 50e98 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 50ea8 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 50eb8 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 50ec8 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 50ed8 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 50ee8 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 50ef8 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 50f08 1e4 .cfa: sp 0 + .ra: x30
+STACK CFI 50f0c .cfa: sp 112 + .ra: .cfa -104 + ^ x29: .cfa -112 + ^
+STACK CFI 50f10 .cfa: x29 112 +
+STACK CFI 50f14 x21: .cfa -80 + ^ x22: .cfa -72 + ^
+STACK CFI 50f24 x19: .cfa -96 + ^ x20: .cfa -88 + ^ x23: .cfa -64 + ^ x24: .cfa -56 + ^ x25: .cfa -48 + ^ x26: .cfa -40 + ^
+STACK CFI 510d8 x19: x19 x20: x20
+STACK CFI 510dc x21: x21 x22: x22
+STACK CFI 510e0 x23: x23 x24: x24
+STACK CFI 510e4 x25: x25 x26: x26
+STACK CFI 510e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 510ec 1e4 .cfa: sp 0 + .ra: x30
+STACK CFI 510f0 .cfa: sp 1024 +
+STACK CFI 510f4 .cfa: sp 1088 + .ra: .cfa -1080 + ^ x29: .cfa -1088 + ^
+STACK CFI 510f8 .cfa: x29 1088 +
+STACK CFI 51104 x19: .cfa -1072 + ^ x20: .cfa -1064 + ^ x21: .cfa -1056 + ^ x22: .cfa -1048 + ^ x23: .cfa -1040 + ^
+STACK CFI 512bc x23: x23
+STACK CFI 512c0 x19: x19 x20: x20
+STACK CFI 512c4 x21: x21 x22: x22
+STACK CFI 512c8 .cfa: sp 1024 + .ra: .ra x29: x29
+STACK CFI 512cc .cfa: sp 960 +
+STACK CFI INIT 512d0 104 .cfa: sp 0 + .ra: x30
+STACK CFI 512d4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 512d8 .cfa: x29 48 +
+STACK CFI 512e0 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 513c8 x19: x19 x20: x20
+STACK CFI 513cc x21: x21 x22: x22
+STACK CFI 513d0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 513d4 104 .cfa: sp 0 + .ra: x30
+STACK CFI 513d8 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 513dc .cfa: x29 64 +
+STACK CFI 513e8 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^ x24: .cfa -8 + ^
+STACK CFI 514c8 x19: x19 x20: x20
+STACK CFI 514cc x21: x21 x22: x22
+STACK CFI 514d0 x23: x23 x24: x24
+STACK CFI 514d4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2351c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23520 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23524 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2354c 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23554 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23558 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 514d8 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 514dc 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 514e0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 514e4 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 514e8 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 514ec 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 514f0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 514f4 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 514f8 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 514fc 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 51500 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235c8 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235d0 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235ec 24 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23610 6c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2367c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23680 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23688 40 .cfa: sp 0 + .ra: x30
+STACK CFI 2368c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 23690 .cfa: x29 32 +
+STACK CFI 23694 x19: .cfa -16 + ^
+STACK CFI 236c0 x19: x19
+STACK CFI 236c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 236c8 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 51504 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 51508 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 5150c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 51510 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 51514 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 51518 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 5151c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 51520 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 51524 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 51528 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 5152c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 237ec a8 .cfa: sp 0 + .ra: x30
+STACK CFI 237f0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 237f4 .cfa: x29 64 +
+STACK CFI 23800 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 23884 x23: x23
+STACK CFI 23888 x19: x19 x20: x20
+STACK CFI 2388c x21: x21 x22: x22
+STACK CFI 23890 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23738 b4 .cfa: sp 0 + .ra: x30
+STACK CFI 2373c .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 23740 .cfa: x29 64 +
+STACK CFI 2374c x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 237dc x23: x23
+STACK CFI 237e0 x19: x19 x20: x20
+STACK CFI 237e4 x21: x21 x22: x22
+STACK CFI 237e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23894 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 238a8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 238ac .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 238b0 .cfa: x29 32 +
+STACK CFI 238b4 x19: .cfa -16 + ^
+STACK CFI 238c4 x19: x19
+STACK CFI 238c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 238cc 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 238e0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 238e4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 238e8 .cfa: x29 32 +
+STACK CFI 238ec x19: .cfa -16 + ^
+STACK CFI 238fc x19: x19
+STACK CFI 23900 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 51530 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 51544 24 .cfa: sp 0 + .ra: x30
+STACK CFI 51548 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 5154c .cfa: x29 32 +
+STACK CFI 51550 x19: .cfa -16 + ^
+STACK CFI 51560 x19: x19
+STACK CFI 51564 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 51568 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 5157c 24 .cfa: sp 0 + .ra: x30
+STACK CFI 51580 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 51584 .cfa: x29 32 +
+STACK CFI 51588 x19: .cfa -16 + ^
+STACK CFI 51598 x19: x19
+STACK CFI 5159c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 515a0 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 515b4 24 .cfa: sp 0 + .ra: x30
+STACK CFI 515b8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 515bc .cfa: x29 32 +
+STACK CFI 515c0 x19: .cfa -16 + ^
+STACK CFI 515d0 x19: x19
+STACK CFI 515d4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 515d8 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 515ec 24 .cfa: sp 0 + .ra: x30
+STACK CFI 515f0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 515f4 .cfa: x29 32 +
+STACK CFI 515f8 x19: .cfa -16 + ^
+STACK CFI 51608 x19: x19
+STACK CFI 5160c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 51610 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 51624 24 .cfa: sp 0 + .ra: x30
+STACK CFI 51628 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 5162c .cfa: x29 32 +
+STACK CFI 51630 x19: .cfa -16 + ^
+STACK CFI 51640 x19: x19
+STACK CFI 51644 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 51648 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 5165c 24 .cfa: sp 0 + .ra: x30
+STACK CFI 51660 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 51664 .cfa: x29 32 +
+STACK CFI 51668 x19: .cfa -16 + ^
+STACK CFI 51678 x19: x19
+STACK CFI 5167c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 51680 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 51694 24 .cfa: sp 0 + .ra: x30
+STACK CFI 51698 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 5169c .cfa: x29 32 +
+STACK CFI 516a0 x19: .cfa -16 + ^
+STACK CFI 516b0 x19: x19
+STACK CFI 516b4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 516b8 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 516cc 24 .cfa: sp 0 + .ra: x30
+STACK CFI 516d0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 516d4 .cfa: x29 32 +
+STACK CFI 516d8 x19: .cfa -16 + ^
+STACK CFI 516e8 x19: x19
+STACK CFI 516ec .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 516f0 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 51704 24 .cfa: sp 0 + .ra: x30
+STACK CFI 51708 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 5170c .cfa: x29 32 +
+STACK CFI 51710 x19: .cfa -16 + ^
+STACK CFI 51720 x19: x19
+STACK CFI 51724 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 51728 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 5173c 24 .cfa: sp 0 + .ra: x30
+STACK CFI 51740 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 51744 .cfa: x29 32 +
+STACK CFI 51748 x19: .cfa -16 + ^
+STACK CFI 51758 x19: x19
+STACK CFI 5175c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 51760 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 51774 24 .cfa: sp 0 + .ra: x30
+STACK CFI 51778 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 5177c .cfa: x29 32 +
+STACK CFI 51780 x19: .cfa -16 + ^
+STACK CFI 51790 x19: x19
+STACK CFI 51794 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 51798 3c .cfa: sp 0 + .ra: x30
+STACK CFI 5179c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 517a4 .cfa: x29 32 +
+STACK CFI 517a8 x19: .cfa -16 + ^
+STACK CFI 517cc x19: x19
+STACK CFI 517d0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 517d4 3c .cfa: sp 0 + .ra: x30
+STACK CFI 517d8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 517e0 .cfa: x29 32 +
+STACK CFI 517e4 x19: .cfa -16 + ^
+STACK CFI 51808 x19: x19
+STACK CFI 5180c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 51810 3c .cfa: sp 0 + .ra: x30
+STACK CFI 51814 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 5181c .cfa: x29 32 +
+STACK CFI 51820 x19: .cfa -16 + ^
+STACK CFI 51844 x19: x19
+STACK CFI 51848 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5184c 3c .cfa: sp 0 + .ra: x30
+STACK CFI 51850 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 51858 .cfa: x29 32 +
+STACK CFI 5185c x19: .cfa -16 + ^
+STACK CFI 51880 x19: x19
+STACK CFI 51884 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 51888 3c .cfa: sp 0 + .ra: x30
+STACK CFI 5188c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 51894 .cfa: x29 32 +
+STACK CFI 51898 x19: .cfa -16 + ^
+STACK CFI 518bc x19: x19
+STACK CFI 518c0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 518c4 3c .cfa: sp 0 + .ra: x30
+STACK CFI 518c8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 518d0 .cfa: x29 32 +
+STACK CFI 518d4 x19: .cfa -16 + ^
+STACK CFI 518f8 x19: x19
+STACK CFI 518fc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 51900 3c .cfa: sp 0 + .ra: x30
+STACK CFI 51904 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 5190c .cfa: x29 32 +
+STACK CFI 51910 x19: .cfa -16 + ^
+STACK CFI 51934 x19: x19
+STACK CFI 51938 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5193c 3c .cfa: sp 0 + .ra: x30
+STACK CFI 51940 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 51948 .cfa: x29 32 +
+STACK CFI 5194c x19: .cfa -16 + ^
+STACK CFI 51970 x19: x19
+STACK CFI 51974 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 51978 3c .cfa: sp 0 + .ra: x30
+STACK CFI 5197c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 51984 .cfa: x29 32 +
+STACK CFI 51988 x19: .cfa -16 + ^
+STACK CFI 519ac x19: x19
+STACK CFI 519b0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 519b4 3c .cfa: sp 0 + .ra: x30
+STACK CFI 519b8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 519c0 .cfa: x29 32 +
+STACK CFI 519c4 x19: .cfa -16 + ^
+STACK CFI 519e8 x19: x19
+STACK CFI 519ec .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 519f0 3c .cfa: sp 0 + .ra: x30
+STACK CFI 519f4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 519fc .cfa: x29 32 +
+STACK CFI 51a00 x19: .cfa -16 + ^
+STACK CFI 51a24 x19: x19
+STACK CFI 51a28 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24794 b0 .cfa: sp 0 + .ra: x30
+STACK CFI 24798 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 2479c .cfa: x29 64 +
+STACK CFI 247a8 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 24834 x23: x23
+STACK CFI 24838 x19: x19 x20: x20
+STACK CFI 2483c x21: x21 x22: x22
+STACK CFI 24840 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2eb40 18 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 24844 40 .cfa: sp 0 + .ra: x30
+STACK CFI 24848 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 24854 .cfa: x29 32 +
+STACK CFI 24858 x19: .cfa -16 + ^
+STACK CFI 2487c x19: x19
+STACK CFI 24880 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24884 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 51a2c 3c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 51a68 3c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 248a0 48 .cfa: sp 0 + .ra: x30
+STACK CFI 248a4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 248a8 .cfa: x29 32 +
+STACK CFI 248ac x19: .cfa -16 + ^
+STACK CFI 248e0 x19: x19
+STACK CFI 248e4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 248e8 30 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 24940 34 .cfa: sp 0 + .ra: x30
+STACK CFI 24948 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2494c .cfa: x29 32 +
+STACK CFI 24954 x19: .cfa -16 + ^
+STACK CFI 2496c x19: x19
+STACK CFI 24970 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24974 24 .cfa: sp 0 + .ra: x30
+STACK CFI 24978 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2497c .cfa: x29 32 +
+STACK CFI 24980 x19: .cfa -16 + ^
+STACK CFI 24990 x19: x19
+STACK CFI 24994 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 54 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^
+STACK CFI 40 x19: x19
+STACK CFI 44 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 48 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI 4c x19: x19
+STACK CFI 50 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24a00 fc .cfa: sp 0 + .ra: x30
+STACK CFI 24a04 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 24a0c .cfa: x29 96 +
+STACK CFI 24a18 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^
+STACK CFI 24aec x21: x21 x22: x22
+STACK CFI 24af0 x19: x19 x20: x20
+STACK CFI 24af4 x23: x23 x24: x24
+STACK CFI 24af8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24afc b4 .cfa: sp 0 + .ra: x30
+STACK CFI 24b00 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 24b04 .cfa: x29 48 +
+STACK CFI 24b08 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 24b18 x21: .cfa -16 + ^
+STACK CFI 24ba4 x21: x21
+STACK CFI 24ba8 x19: x19 x20: x20
+STACK CFI 24bac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24bb0 b0 .cfa: sp 0 + .ra: x30
+STACK CFI 24bb4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 24bb8 .cfa: x29 48 +
+STACK CFI 24bc0 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 24c40 x21: x21
+STACK CFI 24c58 x19: x19 x20: x20
+STACK CFI 24c5c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24c60 98 .cfa: sp 0 + .ra: x30
+STACK CFI 24c64 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 24c68 .cfa: x29 64 +
+STACK CFI 24c70 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 24cec x19: x19 x20: x20
+STACK CFI 24cf0 x21: x21
+STACK CFI 24cf4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24cf8 1c .cfa: sp 0 + .ra: x30
+STACK CFI 24cfc .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 24d00 .cfa: x29 16 +
+STACK CFI 24d10 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24d14 3c .cfa: sp 0 + .ra: x30
+STACK CFI 24d18 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 24d1c .cfa: x29 16 +
+STACK CFI 24d4c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 9c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI 10 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI 8c x21: x21
+STACK CFI 94 x19: x19 x20: x20
+STACK CFI 98 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 288d8 f0 .cfa: sp 0 + .ra: x30
+STACK CFI 288dc .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 288e4 .cfa: x29 64 +
+STACK CFI 288f0 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 289b8 x23: x23
+STACK CFI 289bc x19: x19 x20: x20
+STACK CFI 289c0 x21: x21 x22: x22
+STACK CFI 289c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25b54 5c .cfa: sp 0 + .ra: x30
+STACK CFI 25b58 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 25b5c .cfa: x29 16 +
+STACK CFI 25bac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 7c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 74 x19: x19 x20: x20
+STACK CFI 78 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 28650 c4 .cfa: sp 0 + .ra: x30
+STACK CFI 28654 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 2865c .cfa: x29 48 +
+STACK CFI 28664 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 28708 x19: x19 x20: x20
+STACK CFI 2870c x21: x21
+STACK CFI 28710 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 54 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^
+STACK CFI 4c x19: x19
+STACK CFI 50 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 250a4 58 .cfa: sp 0 + .ra: x30
+STACK CFI 250a8 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 250ac .cfa: x29 48 +
+STACK CFI 250b0 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 250b8 x21: .cfa -16 + ^
+STACK CFI 250f0 x19: x19 x20: x20
+STACK CFI 250f4 x21: x21
+STACK CFI 250f8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 51aa4 90 .cfa: sp 0 + .ra: x30
+STACK CFI 51aa8 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 51aac .cfa: x29 48 +
+STACK CFI 51ab0 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 51abc x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 51b28 x19: x19 x20: x20
+STACK CFI 51b2c x21: x21 x22: x22
+STACK CFI 51b30 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 c8 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI 10 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI b4 x21: x21
+STACK CFI c0 x19: x19 x20: x20
+STACK CFI c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 f4 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 18 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI e8 x19: x19 x20: x20
+STACK CFI ec x21: x21 x22: x22
+STACK CFI f0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 251f0 8c .cfa: sp 0 + .ra: x30
+STACK CFI 251f4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 251f8 .cfa: x29 48 +
+STACK CFI 251fc x19: .cfa -32 + ^
+STACK CFI 25268 x19: x19
+STACK CFI 2526c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 25270 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 25274 x19: x19
+STACK CFI 25278 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2527c c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25288 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25298 24 .cfa: sp 0 + .ra: x30
+STACK CFI 2529c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 252a0 .cfa: x29 32 +
+STACK CFI 252a4 x19: .cfa -16 + ^
+STACK CFI 252b4 x19: x19
+STACK CFI 252b8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 252bc 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 252cc c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 252d8 8c .cfa: sp 0 + .ra: x30
+STACK CFI 252dc .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 252e0 .cfa: x29 48 +
+STACK CFI 252e4 x19: .cfa -32 + ^
+STACK CFI 25350 x19: x19
+STACK CFI 25354 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 25358 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 2535c x19: x19
+STACK CFI 25360 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25364 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25370 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25380 24 .cfa: sp 0 + .ra: x30
+STACK CFI 25384 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 25388 .cfa: x29 32 +
+STACK CFI 2538c x19: .cfa -16 + ^
+STACK CFI 2539c x19: x19
+STACK CFI 253a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 253a4 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 253b4 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 253c0 e0 .cfa: sp 0 + .ra: x30
+STACK CFI 253c4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 253c8 .cfa: x29 48 +
+STACK CFI 253cc x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 2548c x19: x19 x20: x20
+STACK CFI 25490 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 25494 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x29: .cfa -48 + ^
+STACK CFI 25498 x19: x19 x20: x20
+STACK CFI 2549c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 254a0 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 254ac cc .cfa: sp 0 + .ra: x30
+STACK CFI 254b0 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 254b4 .cfa: x29 48 +
+STACK CFI 254b8 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 25564 x19: x19 x20: x20
+STACK CFI 25568 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2556c .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x29: .cfa -48 + ^
+STACK CFI 25570 x19: x19 x20: x20
+STACK CFI 25574 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25578 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25584 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25590 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25598 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255a8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 255ac .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 255b0 .cfa: x29 32 +
+STACK CFI 255b4 x19: .cfa -16 + ^
+STACK CFI 255c4 x19: x19
+STACK CFI 255c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 255cc 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255d4 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255e4 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255f0 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255f8 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25608 24 .cfa: sp 0 + .ra: x30
+STACK CFI 2560c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 25610 .cfa: x29 32 +
+STACK CFI 25614 x19: .cfa -16 + ^
+STACK CFI 25624 x19: x19
+STACK CFI 25628 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2562c 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25634 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25644 5c .cfa: sp 0 + .ra: x30
+STACK CFI 25648 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2564c .cfa: x29 32 +
+STACK CFI 25650 x19: .cfa -16 + ^
+STACK CFI 25698 x19: x19
+STACK CFI 2569c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 256a0 78 .cfa: sp 0 + .ra: x30
+STACK CFI 256a4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 256ac .cfa: x29 32 +
+STACK CFI 256b0 x19: .cfa -16 + ^
+STACK CFI 25710 x19: x19
+STACK CFI 25714 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25718 50 .cfa: sp 0 + .ra: x30
+STACK CFI 2571c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 25720 .cfa: x29 32 +
+STACK CFI 25724 x19: .cfa -16 + ^
+STACK CFI 25754 x19: x19
+STACK CFI 25758 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2575c .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI 25760 x19: x19
+STACK CFI 25764 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25768 13c .cfa: sp 0 + .ra: x30
+STACK CFI 2576c .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 25770 .cfa: x29 64 +
+STACK CFI 25778 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 25898 x19: x19 x20: x20
+STACK CFI 2589c x21: x21 x22: x22
+STACK CFI 258a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 51b34 cc .cfa: sp 0 + .ra: x30
+STACK CFI 51b38 .cfa: sp 400 + .ra: .cfa -392 + ^ x29: .cfa -400 + ^
+STACK CFI 51b40 .cfa: x29 400 +
+STACK CFI 51b44 x19: .cfa -384 + ^ x20: .cfa -376 + ^
+STACK CFI 51b58 x21: .cfa -368 + ^ x22: .cfa -360 + ^ x23: .cfa -352 + ^ x24: .cfa -344 + ^
+STACK CFI 51bf0 x19: x19 x20: x20
+STACK CFI 51bf4 x21: x21 x22: x22
+STACK CFI 51bf8 x23: x23 x24: x24
+STACK CFI 51bfc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 cc .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI 10 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI bc x21: x21
+STACK CFI c4 x19: x19 x20: x20
+STACK CFI c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 51c00 50 .cfa: sp 0 + .ra: x30
+STACK CFI 51c04 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 51c10 .cfa: x29 32 +
+STACK CFI 51c14 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 51c1c x19: x19 x20: x20
+STACK CFI 51c24 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 51c2c .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x20: .cfa -8 + ^ x29: .cfa -32 + ^
+STACK CFI 51c48 x19: x19 x20: x20
+STACK CFI 51c4c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 51c50 50 .cfa: sp 0 + .ra: x30
+STACK CFI 51c54 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 51c60 .cfa: x29 32 +
+STACK CFI 51c64 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 51c6c x19: x19 x20: x20
+STACK CFI 51c74 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 51c7c .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x20: .cfa -8 + ^ x29: .cfa -32 + ^
+STACK CFI 51c98 x19: x19 x20: x20
+STACK CFI 51c9c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 51ca0 11c .cfa: sp 0 + .ra: x30
+STACK CFI 51ca4 .cfa: sp 128 + .ra: .cfa -120 + ^ x29: .cfa -128 + ^
+STACK CFI 51ca8 .cfa: x29 128 +
+STACK CFI 51cac x23: .cfa -80 + ^ x24: .cfa -72 + ^
+STACK CFI 51cb8 x19: .cfa -112 + ^ x20: .cfa -104 + ^
+STACK CFI 51cc4 x21: .cfa -96 + ^ x22: .cfa -88 + ^
+STACK CFI 51dac x19: x19 x20: x20
+STACK CFI 51db0 x21: x21 x22: x22
+STACK CFI 51db4 x23: x23 x24: x24
+STACK CFI 51db8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 cc .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI 10 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI bc x21: x21
+STACK CFI c4 x19: x19 x20: x20
+STACK CFI c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 51dbc e8 .cfa: sp 0 + .ra: x30
+STACK CFI 51dc0 .cfa: sp 480 + .ra: .cfa -472 + ^ x29: .cfa -480 + ^
+STACK CFI 51dc4 .cfa: x29 480 +
+STACK CFI 51dc8 x19: .cfa -464 + ^ x20: .cfa -456 + ^
+STACK CFI 51dd4 x23: .cfa -432 + ^ x24: .cfa -424 + ^ x25: .cfa -416 + ^
+STACK CFI 51df0 x21: .cfa -448 + ^ x22: .cfa -440 + ^
+STACK CFI 51e8c x25: x25
+STACK CFI 51e94 x19: x19 x20: x20
+STACK CFI 51e98 x21: x21 x22: x22
+STACK CFI 51e9c x23: x23 x24: x24
+STACK CFI 51ea0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 51ea4 50 .cfa: sp 0 + .ra: x30
+STACK CFI 51ea8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 51eac .cfa: x29 32 +
+STACK CFI 51eb0 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 51eec x19: x19 x20: x20
+STACK CFI 51ef0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 51ef4 5c .cfa: sp 0 + .ra: x30
+STACK CFI 51ef8 .cfa: sp 336 + .ra: .cfa -328 + ^ x29: .cfa -336 + ^
+STACK CFI 51f00 .cfa: x29 336 +
+STACK CFI 51f04 x19: .cfa -320 + ^ x20: .cfa -312 + ^
+STACK CFI 51f0c x21: .cfa -304 + ^
+STACK CFI 51f40 x21: x21
+STACK CFI 51f48 x19: x19 x20: x20
+STACK CFI 51f4c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 51f50 9c .cfa: sp 0 + .ra: x30
+STACK CFI 51f54 .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 51f58 .cfa: x29 160 +
+STACK CFI 51f60 x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^
+STACK CFI 51fe0 x19: x19 x20: x20
+STACK CFI 51fe4 x21: x21 x22: x22
+STACK CFI 51fe8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 28074 5c .cfa: sp 0 + .ra: x30
+STACK CFI 28078 .cfa: sp 336 + .ra: .cfa -328 + ^ x29: .cfa -336 + ^
+STACK CFI 28080 .cfa: x29 336 +
+STACK CFI 28084 x19: .cfa -320 + ^ x20: .cfa -312 + ^
+STACK CFI 2808c x21: .cfa -304 + ^
+STACK CFI 280c0 x21: x21
+STACK CFI 280c8 x19: x19 x20: x20
+STACK CFI 280cc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 b4 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 416 + .ra: .cfa -408 + ^ x29: .cfa -416 + ^
+STACK CFI 8 .cfa: x29 416 +
+STACK CFI c x19: .cfa -400 + ^ x20: .cfa -392 + ^
+STACK CFI 18 x21: .cfa -384 + ^ x22: .cfa -376 + ^ x23: .cfa -368 + ^
+STACK CFI a0 x23: x23
+STACK CFI a8 x19: x19 x20: x20
+STACK CFI ac x21: x21 x22: x22
+STACK CFI b0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 3c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI 14 x19: .cfa -16 + ^
+STACK CFI 34 x19: x19
+STACK CFI 38 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 51fec 12c .cfa: sp 0 + .ra: x30
+STACK CFI 51ff0 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 51ffc .cfa: x29 96 +
+STACK CFI 52004 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^
+STACK CFI 5210c x21: x21
+STACK CFI 52110 x19: x19 x20: x20
+STACK CFI 52114 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 52118 148 .cfa: sp 0 + .ra: x30
+STACK CFI 5211c .cfa: sp 112 + .ra: .cfa -104 + ^ x29: .cfa -112 + ^
+STACK CFI 52128 .cfa: x29 112 +
+STACK CFI 52134 x19: .cfa -96 + ^ x20: .cfa -88 + ^ x21: .cfa -80 + ^ x22: .cfa -72 + ^
+STACK CFI 52254 x19: x19 x20: x20
+STACK CFI 52258 x21: x21 x22: x22
+STACK CFI 5225c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 28208 9c .cfa: sp 0 + .ra: x30
+STACK CFI 2820c .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 28210 .cfa: x29 160 +
+STACK CFI 28218 x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^
+STACK CFI 28298 x19: x19 x20: x20
+STACK CFI 2829c x21: x21 x22: x22
+STACK CFI 282a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 52260 13c .cfa: sp 0 + .ra: x30
+STACK CFI 52264 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 52270 .cfa: x29 80 +
+STACK CFI 52280 x19: .cfa -64 + ^ x20: .cfa -56 + ^
+STACK CFI 522a4 x21: .cfa -48 + ^
+STACK CFI 52390 x21: x21
+STACK CFI 52394 x19: x19 x20: x20
+STACK CFI 52398 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5239c 338 .cfa: sp 0 + .ra: x30
+STACK CFI 523a0 .cfa: sp 128 + .ra: .cfa -120 + ^ x29: .cfa -128 + ^
+STACK CFI 523a4 .cfa: x29 128 +
+STACK CFI 523b0 x19: .cfa -112 + ^ x20: .cfa -104 + ^ x21: .cfa -96 + ^ x22: .cfa -88 + ^ x23: .cfa -80 + ^ x24: .cfa -72 + ^
+STACK CFI 523d8 x25: .cfa -64 + ^
+STACK CFI 526c0 x25: x25
+STACK CFI 526c4 x19: x19 x20: x20
+STACK CFI 526c8 x21: x21 x22: x22
+STACK CFI 526cc x23: x23 x24: x24
+STACK CFI 526d0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 526d4 240 .cfa: sp 0 + .ra: x30
+STACK CFI 526d8 .cfa: sp 112 + .ra: .cfa -104 + ^ x29: .cfa -112 + ^
+STACK CFI 526e4 .cfa: x29 112 +
+STACK CFI 526f8 x19: .cfa -96 + ^ x20: .cfa -88 + ^ x21: .cfa -80 + ^ x22: .cfa -72 + ^
+STACK CFI 5271c x23: .cfa -64 + ^
+STACK CFI 52904 x23: x23
+STACK CFI 52908 x19: x19 x20: x20
+STACK CFI 5290c x21: x21 x22: x22
+STACK CFI 52910 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 5c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 336 + .ra: .cfa -328 + ^ x29: .cfa -336 + ^
+STACK CFI c .cfa: x29 336 +
+STACK CFI 10 x19: .cfa -320 + ^ x20: .cfa -312 + ^
+STACK CFI 18 x21: .cfa -304 + ^
+STACK CFI 4c x21: x21
+STACK CFI 54 x19: x19 x20: x20
+STACK CFI 58 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 52914 9c .cfa: sp 0 + .ra: x30
+STACK CFI 52918 .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 5291c .cfa: x29 160 +
+STACK CFI 52924 x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^
+STACK CFI 529a4 x19: x19 x20: x20
+STACK CFI 529a8 x21: x21 x22: x22
+STACK CFI 529ac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 529b0 84 .cfa: sp 0 + .ra: x30
+STACK CFI 529b4 .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 529b8 .cfa: x29 160 +
+STACK CFI 529bc x19: .cfa -144 + ^ x20: .cfa -136 + ^
+STACK CFI 529c8 x21: .cfa -128 + ^ x22: .cfa -120 + ^
+STACK CFI 52a28 x19: x19 x20: x20
+STACK CFI 52a2c x21: x21 x22: x22
+STACK CFI 52a30 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 52a34 5ac .cfa: sp 0 + .ra: x30
+STACK CFI 52a38 .cfa: sp 272 + .ra: .cfa -264 + ^ x29: .cfa -272 + ^
+STACK CFI 52a40 .cfa: x29 272 +
+STACK CFI 52a4c v10: .cfa -160 + ^ v11: .cfa -152 + ^ x25: .cfa -208 + ^ x26: .cfa -200 + ^
+STACK CFI 52a6c v8: .cfa -176 + ^ v9: .cfa -168 + ^ x19: .cfa -256 + ^ x20: .cfa -248 + ^
+STACK CFI 52a80 x21: .cfa -240 + ^ x22: .cfa -232 + ^
+STACK CFI 52a8c x23: .cfa -224 + ^ x24: .cfa -216 + ^ x27: .cfa -192 + ^ x28: .cfa -184 + ^
+STACK CFI 52fc0 x19: x19 x20: x20
+STACK CFI 52fc4 v8: v8 v9: v9
+STACK CFI 52fc8 x21: x21 x22: x22
+STACK CFI 52fcc v10: v10 v11: v11
+STACK CFI 52fd0 x23: x23 x24: x24
+STACK CFI 52fd4 x25: x25 x26: x26
+STACK CFI 52fd8 x27: x27 x28: x28
+STACK CFI 52fdc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 52fe0 204 .cfa: sp 0 + .ra: x30
+STACK CFI 52fe4 .cfa: sp 176 + .ra: .cfa -168 + ^ x29: .cfa -176 + ^
+STACK CFI 52fec .cfa: x29 176 +
+STACK CFI 52ffc v8: .cfa -80 + ^ v9: .cfa -72 + ^ x25: .cfa -112 + ^ x26: .cfa -104 + ^
+STACK CFI 53010 x19: .cfa -160 + ^ x20: .cfa -152 + ^
+STACK CFI 5302c x23: .cfa -128 + ^ x24: .cfa -120 + ^
+STACK CFI 53038 x21: .cfa -144 + ^ x22: .cfa -136 + ^ x27: .cfa -96 + ^ x28: .cfa -88 + ^
+STACK CFI 531c8 x19: x19 x20: x20
+STACK CFI 531cc v8: v8 v9: v9
+STACK CFI 531d0 x21: x21 x22: x22
+STACK CFI 531d4 x23: x23 x24: x24
+STACK CFI 531d8 x25: x25 x26: x26
+STACK CFI 531dc x27: x27 x28: x28
+STACK CFI 531e0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 531e4 5ac .cfa: sp 0 + .ra: x30
+STACK CFI 531e8 .cfa: sp 272 + .ra: .cfa -264 + ^ x29: .cfa -272 + ^
+STACK CFI 531f0 .cfa: x29 272 +
+STACK CFI 531fc v10: .cfa -160 + ^ v11: .cfa -152 + ^ x25: .cfa -208 + ^ x26: .cfa -200 + ^
+STACK CFI 5321c v8: .cfa -176 + ^ v9: .cfa -168 + ^ x19: .cfa -256 + ^ x20: .cfa -248 + ^
+STACK CFI 53230 x21: .cfa -240 + ^ x22: .cfa -232 + ^
+STACK CFI 5323c x23: .cfa -224 + ^ x24: .cfa -216 + ^ x27: .cfa -192 + ^ x28: .cfa -184 + ^
+STACK CFI 53770 x19: x19 x20: x20
+STACK CFI 53774 v8: v8 v9: v9
+STACK CFI 53778 x21: x21 x22: x22
+STACK CFI 5377c v10: v10 v11: v11
+STACK CFI 53780 x23: x23 x24: x24
+STACK CFI 53784 x25: x25 x26: x26
+STACK CFI 53788 x27: x27 x28: x28
+STACK CFI 5378c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 53790 90 .cfa: sp 0 + .ra: x30
+STACK CFI 53794 .cfa: sp 176 + .ra: .cfa -168 + ^ x29: .cfa -176 + ^
+STACK CFI 53798 .cfa: x29 176 +
+STACK CFI 5379c x19: .cfa -160 + ^ x20: .cfa -152 + ^
+STACK CFI 537a8 x21: .cfa -144 + ^
+STACK CFI 53814 x21: x21
+STACK CFI 53818 x19: x19 x20: x20
+STACK CFI 5381c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 53820 190 .cfa: sp 0 + .ra: x30
+STACK CFI 53824 .cfa: sp 128 + .ra: .cfa -120 + ^ x29: .cfa -128 + ^
+STACK CFI 53830 .cfa: x29 128 +
+STACK CFI 5383c x23: .cfa -80 + ^
+STACK CFI 53858 x19: .cfa -112 + ^ x20: .cfa -104 + ^ x21: .cfa -96 + ^ x22: .cfa -88 + ^
+STACK CFI 539a0 x23: x23
+STACK CFI 539a4 x19: x19 x20: x20
+STACK CFI 539a8 x21: x21 x22: x22
+STACK CFI 539ac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 539b0 190 .cfa: sp 0 + .ra: x30
+STACK CFI 539b4 .cfa: sp 128 + .ra: .cfa -120 + ^ x29: .cfa -128 + ^
+STACK CFI 539c0 .cfa: x29 128 +
+STACK CFI 539cc x23: .cfa -80 + ^
+STACK CFI 539e8 x19: .cfa -112 + ^ x20: .cfa -104 + ^ x21: .cfa -96 + ^ x22: .cfa -88 + ^
+STACK CFI 53b30 x23: x23
+STACK CFI 53b34 x19: x19 x20: x20
+STACK CFI 53b38 x21: x21 x22: x22
+STACK CFI 53b3c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 27d70 5c .cfa: sp 0 + .ra: x30
+STACK CFI 27d74 .cfa: sp 336 + .ra: .cfa -328 + ^ x29: .cfa -336 + ^
+STACK CFI 27d7c .cfa: x29 336 +
+STACK CFI 27d80 x19: .cfa -320 + ^ x20: .cfa -312 + ^
+STACK CFI 27d88 x21: .cfa -304 + ^
+STACK CFI 27dbc x21: x21
+STACK CFI 27dc4 x19: x19 x20: x20
+STACK CFI 27dc8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 53b40 bc .cfa: sp 0 + .ra: x30
+STACK CFI 53b44 .cfa: sp 208 + .ra: .cfa -200 + ^ x29: .cfa -208 + ^
+STACK CFI 53b48 .cfa: x29 208 +
+STACK CFI 53b50 x23: .cfa -160 + ^ x24: .cfa -152 + ^ x25: .cfa -144 + ^
+STACK CFI 53b6c x19: .cfa -192 + ^ x20: .cfa -184 + ^ x21: .cfa -176 + ^ x22: .cfa -168 + ^
+STACK CFI 53be8 x25: x25
+STACK CFI 53bec x19: x19 x20: x20
+STACK CFI 53bf0 x21: x21 x22: x22
+STACK CFI 53bf4 x23: x23 x24: x24
+STACK CFI 53bf8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 53bfc 3d0 .cfa: sp 0 + .ra: x30
+STACK CFI 53c00 .cfa: sp 384 + .ra: .cfa -376 + ^ x29: .cfa -384 + ^
+STACK CFI 53c0c .cfa: x29 384 +
+STACK CFI 53c20 x19: .cfa -368 + ^ x20: .cfa -360 + ^ x21: .cfa -352 + ^ x22: .cfa -344 + ^ x23: .cfa -336 + ^ x24: .cfa -328 + ^ x25: .cfa -320 + ^
+STACK CFI 53fb8 x25: x25
+STACK CFI 53fbc x19: x19 x20: x20
+STACK CFI 53fc0 x21: x21 x22: x22
+STACK CFI 53fc4 x23: x23 x24: x24
+STACK CFI 53fc8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 282a4 28 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 282cc 20 .cfa: sp 0 + .ra: x30
+STACK CFI 282d0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 282d8 .cfa: x29 32 +
+STACK CFI 282e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 282ec 20 .cfa: sp 0 + .ra: x30
+STACK CFI 282f0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 282f8 .cfa: x29 32 +
+STACK CFI 28308 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2830c 110 .cfa: sp 0 + .ra: x30
+STACK CFI 28310 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2831c .cfa: x29 32 +
+STACK CFI 28398 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2839c .cfa: x29 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI INIT 2841c 124 .cfa: sp 0 + .ra: x30
+STACK CFI 28420 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 28424 .cfa: x29 80 +
+STACK CFI 28430 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^
+STACK CFI 28530 x19: x19 x20: x20
+STACK CFI 28534 x21: x21 x22: x22
+STACK CFI 28538 x23: x23 x24: x24
+STACK CFI 2853c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 d0 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI 10 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI c4 x21: x21
+STACK CFI c8 x19: x19 x20: x20
+STACK CFI cc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 287cc 10c .cfa: sp 0 + .ra: x30
+STACK CFI 287d0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 287d8 .cfa: x29 64 +
+STACK CFI 287e0 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x23: .cfa -16 + ^
+STACK CFI 287e8 x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 288c8 x19: x19 x20: x20
+STACK CFI 288cc x21: x21 x22: x22
+STACK CFI 288d0 x23: x23
+STACK CFI 288d4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 114 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI c .cfa: x29 80 +
+STACK CFI 18 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI 104 x23: x23
+STACK CFI 108 x19: x19 x20: x20
+STACK CFI 10c x21: x21 x22: x22
+STACK CFI 110 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26984 124 .cfa: sp 0 + .ra: x30
+STACK CFI 26988 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 26990 .cfa: x29 80 +
+STACK CFI 2699c x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI 26a98 x19: x19 x20: x20
+STACK CFI 26a9c x21: x21 x22: x22
+STACK CFI 26aa0 x23: x23
+STACK CFI 26aa4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 22b58 3e8 .cfa: sp 0 + .ra: x30
+STACK CFI 22b60 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 22b64 .cfa: x29 64 +
+STACK CFI 22b78 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 22f2c x21: x21
+STACK CFI 22f34 x19: x19 x20: x20
+STACK CFI 22f38 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2351c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23520 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23524 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2354c 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23554 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23558 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 53fcc 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 53fd0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235c8 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235d0 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 235ec 24 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23610 6c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 2367c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23680 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23688 40 .cfa: sp 0 + .ra: x30
+STACK CFI 2368c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 23690 .cfa: x29 32 +
+STACK CFI 23694 x19: .cfa -16 + ^
+STACK CFI 236c0 x19: x19
+STACK CFI 236c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 236c8 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 53fd4 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 53fd8 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 237ec a8 .cfa: sp 0 + .ra: x30
+STACK CFI 237f0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 237f4 .cfa: x29 64 +
+STACK CFI 23800 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 23884 x23: x23
+STACK CFI 23888 x19: x19 x20: x20
+STACK CFI 2388c x21: x21 x22: x22
+STACK CFI 23890 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23738 b4 .cfa: sp 0 + .ra: x30
+STACK CFI 2373c .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 23740 .cfa: x29 64 +
+STACK CFI 2374c x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 237dc x23: x23
+STACK CFI 237e0 x19: x19 x20: x20
+STACK CFI 237e4 x21: x21 x22: x22
+STACK CFI 237e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23894 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 238a8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 238ac .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 238b0 .cfa: x29 32 +
+STACK CFI 238b4 x19: .cfa -16 + ^
+STACK CFI 238c4 x19: x19
+STACK CFI 238c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 238cc 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 238e0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 238e4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 238e8 .cfa: x29 32 +
+STACK CFI 238ec x19: .cfa -16 + ^
+STACK CFI 238fc x19: x19
+STACK CFI 23900 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 53fdc 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 53ff0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 53ff4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 53ff8 .cfa: x29 32 +
+STACK CFI 53ffc x19: .cfa -16 + ^
+STACK CFI 5400c x19: x19
+STACK CFI 54010 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 54014 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 54028 24 .cfa: sp 0 + .ra: x30
+STACK CFI 5402c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 54030 .cfa: x29 32 +
+STACK CFI 54034 x19: .cfa -16 + ^
+STACK CFI 54044 x19: x19
+STACK CFI 54048 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5404c 3c .cfa: sp 0 + .ra: x30
+STACK CFI 54050 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 54058 .cfa: x29 32 +
+STACK CFI 5405c x19: .cfa -16 + ^
+STACK CFI 54080 x19: x19
+STACK CFI 54084 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 54088 3c .cfa: sp 0 + .ra: x30
+STACK CFI 5408c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 54094 .cfa: x29 32 +
+STACK CFI 54098 x19: .cfa -16 + ^
+STACK CFI 540bc x19: x19
+STACK CFI 540c0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24794 b0 .cfa: sp 0 + .ra: x30
+STACK CFI 24798 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 2479c .cfa: x29 64 +
+STACK CFI 247a8 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 24834 x23: x23
+STACK CFI 24838 x19: x19 x20: x20
+STACK CFI 2483c x21: x21 x22: x22
+STACK CFI 24840 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2eb40 18 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 24844 40 .cfa: sp 0 + .ra: x30
+STACK CFI 24848 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 24854 .cfa: x29 32 +
+STACK CFI 24858 x19: .cfa -16 + ^
+STACK CFI 2487c x19: x19
+STACK CFI 24880 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 248e8 30 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 24940 34 .cfa: sp 0 + .ra: x30
+STACK CFI 24948 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2494c .cfa: x29 32 +
+STACK CFI 24954 x19: .cfa -16 + ^
+STACK CFI 2496c x19: x19
+STACK CFI 24970 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24974 24 .cfa: sp 0 + .ra: x30
+STACK CFI 24978 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2497c .cfa: x29 32 +
+STACK CFI 24980 x19: .cfa -16 + ^
+STACK CFI 24990 x19: x19
+STACK CFI 24994 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 54 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^
+STACK CFI 40 x19: x19
+STACK CFI 44 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 48 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI 4c x19: x19
+STACK CFI 50 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24a00 fc .cfa: sp 0 + .ra: x30
+STACK CFI 24a04 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 24a0c .cfa: x29 96 +
+STACK CFI 24a18 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^
+STACK CFI 24aec x21: x21 x22: x22
+STACK CFI 24af0 x19: x19 x20: x20
+STACK CFI 24af4 x23: x23 x24: x24
+STACK CFI 24af8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24afc b4 .cfa: sp 0 + .ra: x30
+STACK CFI 24b00 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 24b04 .cfa: x29 48 +
+STACK CFI 24b08 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 24b18 x21: .cfa -16 + ^
+STACK CFI 24ba4 x21: x21
+STACK CFI 24ba8 x19: x19 x20: x20
+STACK CFI 24bac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24bb0 b0 .cfa: sp 0 + .ra: x30
+STACK CFI 24bb4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 24bb8 .cfa: x29 48 +
+STACK CFI 24bc0 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 24c40 x21: x21
+STACK CFI 24c58 x19: x19 x20: x20
+STACK CFI 24c5c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4b670 54 .cfa: sp 0 + .ra: x30
+STACK CFI 4b674 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 4b678 .cfa: x29 32 +
+STACK CFI 4b67c x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 4b6bc x19: x19 x20: x20
+STACK CFI 4b6c0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 54 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^
+STACK CFI 4c x19: x19
+STACK CFI 50 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 f4 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 18 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI e8 x19: x19 x20: x20
+STACK CFI ec x21: x21 x22: x22
+STACK CFI f0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 c8 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI 10 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI b4 x21: x21
+STACK CFI c0 x19: x19 x20: x20
+STACK CFI c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 251f0 8c .cfa: sp 0 + .ra: x30
+STACK CFI 251f4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 251f8 .cfa: x29 48 +
+STACK CFI 251fc x19: .cfa -32 + ^
+STACK CFI 25268 x19: x19
+STACK CFI 2526c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 25270 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 25274 x19: x19
+STACK CFI 25278 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2527c c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25288 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25298 24 .cfa: sp 0 + .ra: x30
+STACK CFI 2529c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 252a0 .cfa: x29 32 +
+STACK CFI 252a4 x19: .cfa -16 + ^
+STACK CFI 252b4 x19: x19
+STACK CFI 252b8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 252bc 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 252cc c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 252d8 8c .cfa: sp 0 + .ra: x30
+STACK CFI 252dc .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 252e0 .cfa: x29 48 +
+STACK CFI 252e4 x19: .cfa -32 + ^
+STACK CFI 25350 x19: x19
+STACK CFI 25354 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 25358 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 2535c x19: x19
+STACK CFI 25360 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25364 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25370 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25380 24 .cfa: sp 0 + .ra: x30
+STACK CFI 25384 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 25388 .cfa: x29 32 +
+STACK CFI 2538c x19: .cfa -16 + ^
+STACK CFI 2539c x19: x19
+STACK CFI 253a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 253a4 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 253b4 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 253c0 e0 .cfa: sp 0 + .ra: x30
+STACK CFI 253c4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 253c8 .cfa: x29 48 +
+STACK CFI 253cc x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 2548c x19: x19 x20: x20
+STACK CFI 25490 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 25494 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x29: .cfa -48 + ^
+STACK CFI 25498 x19: x19 x20: x20
+STACK CFI 2549c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 254a0 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 254ac cc .cfa: sp 0 + .ra: x30
+STACK CFI 254b0 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 254b4 .cfa: x29 48 +
+STACK CFI 254b8 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 25564 x19: x19 x20: x20
+STACK CFI 25568 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2556c .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x29: .cfa -48 + ^
+STACK CFI 25570 x19: x19 x20: x20
+STACK CFI 25574 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25578 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25584 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25590 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25598 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255a8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 255ac .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 255b0 .cfa: x29 32 +
+STACK CFI 255b4 x19: .cfa -16 + ^
+STACK CFI 255c4 x19: x19
+STACK CFI 255c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 255cc 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255d4 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255e4 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255f0 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 255f8 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25608 24 .cfa: sp 0 + .ra: x30
+STACK CFI 2560c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 25610 .cfa: x29 32 +
+STACK CFI 25614 x19: .cfa -16 + ^
+STACK CFI 25624 x19: x19
+STACK CFI 25628 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2562c 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25634 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 74 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^
+STACK CFI 6c x19: x19
+STACK CFI 70 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25b54 5c .cfa: sp 0 + .ra: x30
+STACK CFI 25b58 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 25b5c .cfa: x29 16 +
+STACK CFI 25bac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 13c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI 10 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 130 x21: x21
+STACK CFI 134 x19: x19 x20: x20
+STACK CFI 138 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 540c4 13c .cfa: sp 0 + .ra: x30
+STACK CFI 540c8 .cfa: sp 480 + .ra: .cfa -472 + ^ x29: .cfa -480 + ^
+STACK CFI 540cc .cfa: x29 480 +
+STACK CFI 540d0 x21: .cfa -448 + ^ x22: .cfa -440 + ^
+STACK CFI 540dc x25: .cfa -416 + ^ x26: .cfa -408 + ^
+STACK CFI 540f8 x19: .cfa -464 + ^ x20: .cfa -456 + ^ x23: .cfa -432 + ^ x24: .cfa -424 + ^
+STACK CFI 541ec x19: x19 x20: x20
+STACK CFI 541f0 x21: x21 x22: x22
+STACK CFI 541f4 x23: x23 x24: x24
+STACK CFI 541f8 x25: x25 x26: x26
+STACK CFI 541fc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 54200 9c .cfa: sp 0 + .ra: x30
+STACK CFI 54204 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 54208 .cfa: x29 80 +
+STACK CFI 5420c x19: .cfa -64 + ^ x20: .cfa -56 + ^
+STACK CFI 54214 x21: .cfa -48 + ^
+STACK CFI 54290 x21: x21
+STACK CFI 54294 x19: x19 x20: x20
+STACK CFI 54298 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5429c 1d8 .cfa: sp 0 + .ra: x30
+STACK CFI 542a0 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 542a4 .cfa: x29 80 +
+STACK CFI 542a8 x19: .cfa -64 + ^ x20: .cfa -56 + ^
+STACK CFI 542b0 x21: .cfa -48 + ^
+STACK CFI 54468 x21: x21
+STACK CFI 5446c x19: x19 x20: x20
+STACK CFI 54470 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 282a4 28 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 282cc 20 .cfa: sp 0 + .ra: x30
+STACK CFI 282d0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 282d8 .cfa: x29 32 +
+STACK CFI 282e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 282ec 20 .cfa: sp 0 + .ra: x30
+STACK CFI 282f0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 282f8 .cfa: x29 32 +
+STACK CFI 28308 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2830c 110 .cfa: sp 0 + .ra: x30
+STACK CFI 28310 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2831c .cfa: x29 32 +
+STACK CFI 28398 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2839c .cfa: x29 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI INIT 2841c 124 .cfa: sp 0 + .ra: x30
+STACK CFI 28420 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 28424 .cfa: x29 80 +
+STACK CFI 28430 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^
+STACK CFI 28530 x19: x19 x20: x20
+STACK CFI 28534 x21: x21 x22: x22
+STACK CFI 28538 x23: x23 x24: x24
+STACK CFI 2853c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 9c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI 10 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI 8c x21: x21
+STACK CFI 94 x19: x19 x20: x20
+STACK CFI 98 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 7c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 74 x19: x19 x20: x20
+STACK CFI 78 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 28650 c4 .cfa: sp 0 + .ra: x30
+STACK CFI 28654 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 2865c .cfa: x29 48 +
+STACK CFI 28664 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 28708 x19: x19 x20: x20
+STACK CFI 2870c x21: x21
+STACK CFI 28710 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 d0 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI 10 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI c4 x21: x21
+STACK CFI c8 x19: x19 x20: x20
+STACK CFI cc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 287cc 10c .cfa: sp 0 + .ra: x30
+STACK CFI 287d0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 287d8 .cfa: x29 64 +
+STACK CFI 287e0 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x23: .cfa -16 + ^
+STACK CFI 287e8 x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 288c8 x19: x19 x20: x20
+STACK CFI 288cc x21: x21 x22: x22
+STACK CFI 288d0 x23: x23
+STACK CFI 288d4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 288d8 f0 .cfa: sp 0 + .ra: x30
+STACK CFI 288dc .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 288e4 .cfa: x29 64 +
+STACK CFI 288f0 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 289b8 x23: x23
+STACK CFI 289bc x19: x19 x20: x20
+STACK CFI 289c0 x21: x21 x22: x22
+STACK CFI 289c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 114 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI c .cfa: x29 80 +
+STACK CFI 18 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI 104 x23: x23
+STACK CFI 108 x19: x19 x20: x20
+STACK CFI 10c x21: x21 x22: x22
+STACK CFI 110 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26984 124 .cfa: sp 0 + .ra: x30
+STACK CFI 26988 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 26990 .cfa: x29 80 +
+STACK CFI 2699c x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI 26a98 x19: x19 x20: x20
+STACK CFI 26a9c x21: x21 x22: x22
+STACK CFI 26aa0 x23: x23
+STACK CFI 26aa4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 22f40 d8 .cfa: sp 0 + .ra: x30
+STACK CFI 22f44 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 22f48 .cfa: x29 64 +
+STACK CFI 22f50 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 23004 x21: x21
+STACK CFI 2300c x19: x19 x20: x20
+STACK CFI 23010 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2eb40 18 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 248e8 30 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 24cf8 1c .cfa: sp 0 + .ra: x30
+STACK CFI 24cfc .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 24d00 .cfa: x29 16 +
+STACK CFI 24d10 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24d14 3c .cfa: sp 0 + .ra: x30
+STACK CFI 24d18 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 24d1c .cfa: x29 16 +
+STACK CFI 24d4c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 54474 1c .cfa: sp 0 + .ra: x30
+STACK CFI 54478 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 5447c .cfa: x29 16 +
+STACK CFI 5448c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25644 5c .cfa: sp 0 + .ra: x30
+STACK CFI 25648 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2564c .cfa: x29 32 +
+STACK CFI 25650 x19: .cfa -16 + ^
+STACK CFI 25698 x19: x19
+STACK CFI 2569c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 78 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI c .cfa: x29 32 +
+STACK CFI 10 x19: .cfa -16 + ^
+STACK CFI 70 x19: x19
+STACK CFI 74 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25718 50 .cfa: sp 0 + .ra: x30
+STACK CFI 2571c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 25720 .cfa: x29 32 +
+STACK CFI 25724 x19: .cfa -16 + ^
+STACK CFI 25754 x19: x19
+STACK CFI 25758 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2575c .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI 25760 x19: x19
+STACK CFI 25764 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 12c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI 10 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 120 x19: x19 x20: x20
+STACK CFI 124 x21: x21 x22: x22
+STACK CFI 128 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 54490 ec .cfa: sp 0 + .ra: x30
+STACK CFI 54494 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 54498 .cfa: x29 80 +
+STACK CFI 544a0 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI 5456c x21: x21
+STACK CFI 54574 x19: x19 x20: x20
+STACK CFI 54578 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 cc .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI 10 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI bc x21: x21
+STACK CFI c4 x19: x19 x20: x20
+STACK CFI c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5457c 48 .cfa: sp 0 + .ra: x30
+STACK CFI 54580 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 5458c .cfa: x29 16 +
+STACK CFI 545c0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 545c4 11c .cfa: sp 0 + .ra: x30
+STACK CFI 545c8 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 545cc .cfa: x29 64 +
+STACK CFI 545d4 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 546d4 x21: x21
+STACK CFI 546d8 x19: x19 x20: x20
+STACK CFI 546dc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 b8 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 8 .cfa: x29 96 +
+STACK CFI c x25: .cfa -32 + ^
+STACK CFI 18 x21: .cfa -64 + ^ x22: .cfa -56 + ^
+STACK CFI 30 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^
+STACK CFI a4 x19: x19 x20: x20
+STACK CFI a8 x21: x21 x22: x22
+STACK CFI ac x23: x23 x24: x24
+STACK CFI b0 x25: x25
+STACK CFI b4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 140 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 8 .cfa: x29 96 +
+STACK CFI c x21: .cfa -64 + ^ x22: .cfa -56 + ^
+STACK CFI 1c x19: .cfa -80 + ^ x20: .cfa -72 + ^ x23: .cfa -48 + ^
+STACK CFI 130 x23: x23
+STACK CFI 134 x19: x19 x20: x20
+STACK CFI 138 x21: x21 x22: x22
+STACK CFI 13c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 134 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 8 .cfa: x29 96 +
+STACK CFI 14 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^
+STACK CFI 20 x25: .cfa -32 + ^ x26: .cfa -24 + ^
+STACK CFI 120 x19: x19 x20: x20
+STACK CFI 124 x21: x21 x22: x22
+STACK CFI 128 x23: x23 x24: x24
+STACK CFI 12c x25: x25 x26: x26
+STACK CFI 130 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25b54 5c .cfa: sp 0 + .ra: x30
+STACK CFI 25b58 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 25b5c .cfa: x29 16 +
+STACK CFI 25bac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 546e0 2dc .cfa: sp 0 + .ra: x30
+STACK CFI 546e4 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 546e8 .cfa: x29 96 +
+STACK CFI 546ec x25: .cfa -32 + ^
+STACK CFI 546f8 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^
+STACK CFI 54704 x23: .cfa -48 + ^ x24: .cfa -40 + ^
+STACK CFI 549a8 x25: x25
+STACK CFI 549ac x19: x19 x20: x20
+STACK CFI 549b0 x21: x21 x22: x22
+STACK CFI 549b4 x23: x23 x24: x24
+STACK CFI 549b8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 549bc 234 .cfa: sp 0 + .ra: x30
+STACK CFI 549c0 .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 549c4 .cfa: x29 160 +
+STACK CFI 549c8 x21: .cfa -128 + ^ x22: .cfa -120 + ^
+STACK CFI 549d4 x19: .cfa -144 + ^ x20: .cfa -136 + ^ x23: .cfa -112 + ^
+STACK CFI 54be0 x19: x19 x20: x20
+STACK CFI 54be4 x21: x21 x22: x22
+STACK CFI 54be8 x23: x23
+STACK CFI 54bec .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 54bf0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 238 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 8 .cfa: x29 160 +
+STACK CFI c x21: .cfa -128 + ^ x22: .cfa -120 + ^
+STACK CFI 18 x19: .cfa -144 + ^ x20: .cfa -136 + ^ x23: .cfa -112 + ^
+STACK CFI 228 x19: x19 x20: x20
+STACK CFI 22c x21: x21 x22: x22
+STACK CFI 230 x23: x23
+STACK CFI 234 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 54bf4 190 .cfa: sp 0 + .ra: x30
+STACK CFI 54bf8 .cfa: sp 144 + .ra: .cfa -136 + ^ x29: .cfa -144 + ^
+STACK CFI 54c04 .cfa: x29 144 +
+STACK CFI 54c0c x19: .cfa -128 + ^ x20: .cfa -120 + ^ x21: .cfa -112 + ^
+STACK CFI 54d78 x19: x19 x20: x20
+STACK CFI 54d7c x21: x21
+STACK CFI 54d80 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 d0 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 8 .cfa: x29 96 +
+STACK CFI c x19: .cfa -80 + ^ x20: .cfa -72 + ^
+STACK CFI 24 x21: .cfa -64 + ^
+STACK CFI c4 x19: x19 x20: x20
+STACK CFI c8 x21: x21
+STACK CFI cc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 54d84 100 .cfa: sp 0 + .ra: x30
+STACK CFI 54d88 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 54d8c .cfa: x29 80 +
+STACK CFI 54d90 x21: .cfa -48 + ^ x22: .cfa -40 + ^
+STACK CFI 54d9c x19: .cfa -64 + ^ x20: .cfa -56 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^
+STACK CFI 54db0 x25: .cfa -16 + ^ x26: .cfa -8 + ^
+STACK CFI 54e54 x19: x19 x20: x20
+STACK CFI 54e58 x21: x21 x22: x22
+STACK CFI 54e5c x23: x23 x24: x24
+STACK CFI 54e60 x25: x25 x26: x26
+STACK CFI 54e64 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 54e68 .cfa: x29 80 + .ra: .cfa -72 + ^ x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^ x25: .cfa -16 + ^ x26: .cfa -8 + ^ x29: .cfa -80 + ^
+STACK CFI INIT 0 58 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI c .cfa: x29 32 +
+STACK CFI 10 x19: .cfa -16 + ^
+STACK CFI 28 x19: x19
+STACK CFI 30 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 34 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI 4c x19: x19
+STACK CFI 54 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 68 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^
+STACK CFI 1c x19: x19
+STACK CFI 24 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2c .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 60 x19: x19
+STACK CFI 64 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 54e84 18 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 114 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 8 .cfa: x29 96 +
+STACK CFI c x19: .cfa -80 + ^ x20: .cfa -72 + ^
+STACK CFI 18 x25: .cfa -32 + ^ x26: .cfa -24 + ^ x27: .cfa -16 + ^
+STACK CFI 30 x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^
+STACK CFI f4 x27: x27
+STACK CFI f8 x19: x19 x20: x20
+STACK CFI fc x21: x21 x22: x22
+STACK CFI 100 x23: x23 x24: x24
+STACK CFI 104 x25: x25 x26: x26
+STACK CFI 10c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 58 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI c .cfa: x29 32 +
+STACK CFI 10 x19: .cfa -16 + ^
+STACK CFI 28 x19: x19
+STACK CFI 30 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 34 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI 4c x19: x19
+STACK CFI 54 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 68 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^
+STACK CFI 1c x19: x19
+STACK CFI 24 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2c .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 60 x19: x19
+STACK CFI 64 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 54e9c 34 .cfa: sp 0 + .ra: x30
+STACK CFI 54ea0 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 54ea4 .cfa: x29 16 +
+STACK CFI 54ecc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 54ed0 34 .cfa: sp 0 + .ra: x30
+STACK CFI 54ed4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 54edc .cfa: x29 32 +
+STACK CFI 54ee0 x19: .cfa -16 + ^
+STACK CFI 54efc x19: x19
+STACK CFI 54f00 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 54f04 24 .cfa: sp 0 + .ra: x30
+STACK CFI 54f08 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 54f0c .cfa: x29 32 +
+STACK CFI 54f10 x19: .cfa -16 + ^
+STACK CFI 54f20 x19: x19
+STACK CFI 54f24 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 50 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 8 .cfa: x29 16 +
+STACK CFI 44 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 54f28 48 .cfa: sp 0 + .ra: x30
+STACK CFI 54f2c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 54f30 .cfa: x29 32 +
+STACK CFI 54f34 x19: .cfa -16 + ^
+STACK CFI 54f68 x19: x19
+STACK CFI 54f6c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 248e8 30 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 24d14 3c .cfa: sp 0 + .ra: x30
+STACK CFI 24d18 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 24d1c .cfa: x29 16 +
+STACK CFI 24d4c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25644 5c .cfa: sp 0 + .ra: x30
+STACK CFI 25648 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2564c .cfa: x29 32 +
+STACK CFI 25650 x19: .cfa -16 + ^
+STACK CFI 25698 x19: x19
+STACK CFI 2569c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25718 50 .cfa: sp 0 + .ra: x30
+STACK CFI 2571c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 25720 .cfa: x29 32 +
+STACK CFI 25724 x19: .cfa -16 + ^
+STACK CFI 25754 x19: x19
+STACK CFI 25758 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2575c .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI 25760 x19: x19
+STACK CFI 25764 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 68 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^
+STACK CFI 60 x19: x19
+STACK CFI 64 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 68 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 14 x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 5c x19: x19 x20: x20
+STACK CFI 60 x21: x21 x22: x22
+STACK CFI 64 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 54f70 a8 .cfa: sp 0 + .ra: x30
+STACK CFI 54f74 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 54f7c .cfa: x29 48 +
+STACK CFI 54f84 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 54f8c x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 5500c x19: x19 x20: x20
+STACK CFI 55010 x21: x21 x22: x22
+STACK CFI 55014 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 78 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI c .cfa: x29 32 +
+STACK CFI 10 x19: .cfa -16 + ^
+STACK CFI 70 x19: x19
+STACK CFI 74 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 140 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI 10 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 134 x19: x19 x20: x20
+STACK CFI 138 x21: x21 x22: x22
+STACK CFI 13c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 210 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI c x21: .cfa -48 + ^ x22: .cfa -40 + ^
+STACK CFI 14 x19: .cfa -64 + ^ x20: .cfa -56 + ^
+STACK CFI 204 x19: x19 x20: x20
+STACK CFI 208 x21: x21 x22: x22
+STACK CFI 20c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 55018 48 .cfa: sp 0 + .ra: x30
+STACK CFI 5501c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 55020 .cfa: x29 32 +
+STACK CFI 55024 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 55058 x19: x19 x20: x20
+STACK CFI 5505c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 55060 268 .cfa: sp 0 + .ra: x30
+STACK CFI 55064 .cfa: sp 128 + .ra: .cfa -120 + ^ x29: .cfa -128 + ^
+STACK CFI 55068 .cfa: x29 128 +
+STACK CFI 5506c x21: .cfa -96 + ^ x22: .cfa -88 + ^
+STACK CFI 55084 x19: .cfa -112 + ^ x20: .cfa -104 + ^ x23: .cfa -80 + ^ x24: .cfa -72 + ^ x25: .cfa -64 + ^ x26: .cfa -56 + ^ x27: .cfa -48 + ^ x28: .cfa -40 + ^
+STACK CFI 552b0 x23: x23 x24: x24
+STACK CFI 552b4 x19: x19 x20: x20
+STACK CFI 552b8 x21: x21 x22: x22
+STACK CFI 552bc x25: x25 x26: x26
+STACK CFI 552c0 x27: x27 x28: x28
+STACK CFI 552c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 60 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI c .cfa: x29 48 +
+STACK CFI 10 x19: .cfa -32 + ^
+STACK CFI 58 x19: x19
+STACK CFI 5c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 552c8 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 552d8 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 552e8 20 .cfa: sp 0 + .ra: x30
+STACK CFI 552ec .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 552f0 .cfa: x29 16 +
+STACK CFI 55304 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 55308 20 .cfa: sp 0 + .ra: x30
+STACK CFI 5530c .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 55310 .cfa: x29 16 +
+STACK CFI 55324 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23524 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 55328 18 .cfa: sp 0 + .ra: x30
+STACK CFI 5532c .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 55330 .cfa: x29 16 +
+STACK CFI 5533c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 55340 18 .cfa: sp 0 + .ra: x30
+STACK CFI 55344 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 55348 .cfa: x29 16 +
+STACK CFI 55354 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 55358 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 5536c 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 55374 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 5537c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 55380 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 55384 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 55388 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 5538c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 55390 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 55394 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 55398 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 5539c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 553a0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 553a4 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 553a8 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 553ac 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 553b4 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 553b8 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 553bc 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 553c0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 553c4 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 553c8 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 553cc 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 553d0 1c .cfa: sp 0 + .ra: x30
+STACK CFI 553d4 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 553d8 .cfa: x29 16 +
+STACK CFI 553e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 553ec 1c .cfa: sp 0 + .ra: x30
+STACK CFI 553f0 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 553f4 .cfa: x29 16 +
+STACK CFI 55404 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 55408 20 .cfa: sp 0 + .ra: x30
+STACK CFI 5540c .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 55410 .cfa: x29 16 +
+STACK CFI 55424 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 55428 20 .cfa: sp 0 + .ra: x30
+STACK CFI 5542c .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 55430 .cfa: x29 16 +
+STACK CFI 55444 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 55448 20 .cfa: sp 0 + .ra: x30
+STACK CFI 5544c .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 55450 .cfa: x29 16 +
+STACK CFI 55464 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 55468 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 5546c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 55470 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 55474 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 24 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 6c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 40 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^
+STACK CFI 38 x19: x19
+STACK CFI 3c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^
+STACK CFI 1c x19: x19
+STACK CFI 20 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 55478 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 5547c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 55480 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 55484 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 a8 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI 14 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 98 x23: x23
+STACK CFI 9c x19: x19 x20: x20
+STACK CFI a0 x21: x21 x22: x22
+STACK CFI a4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 b4 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI 14 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI a4 x23: x23
+STACK CFI a8 x19: x19 x20: x20
+STACK CFI ac x21: x21 x22: x22
+STACK CFI b0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 238e0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 238e4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 238e8 .cfa: x29 32 +
+STACK CFI 238ec x19: .cfa -16 + ^
+STACK CFI 238fc x19: x19
+STACK CFI 23900 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 55488 64 .cfa: sp 0 + .ra: x30
+STACK CFI 5548c .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 55490 .cfa: x29 48 +
+STACK CFI 55498 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 554e0 x19: x19 x20: x20
+STACK CFI 554e4 x21: x21
+STACK CFI 554e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 554ec 64 .cfa: sp 0 + .ra: x30
+STACK CFI 554f0 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 554f4 .cfa: x29 48 +
+STACK CFI 554fc x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 55544 x19: x19 x20: x20
+STACK CFI 55548 x21: x21
+STACK CFI 5554c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 55550 64 .cfa: sp 0 + .ra: x30
+STACK CFI 55554 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 55558 .cfa: x29 48 +
+STACK CFI 55560 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 555a8 x19: x19 x20: x20
+STACK CFI 555ac x21: x21
+STACK CFI 555b0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 555b4 64 .cfa: sp 0 + .ra: x30
+STACK CFI 555b8 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 555bc .cfa: x29 48 +
+STACK CFI 555c4 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 5560c x19: x19 x20: x20
+STACK CFI 55610 x21: x21
+STACK CFI 55614 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 55618 64 .cfa: sp 0 + .ra: x30
+STACK CFI 5561c .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 55620 .cfa: x29 48 +
+STACK CFI 55628 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 55670 x19: x19 x20: x20
+STACK CFI 55674 x21: x21
+STACK CFI 55678 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5567c 64 .cfa: sp 0 + .ra: x30
+STACK CFI 55680 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 55684 .cfa: x29 48 +
+STACK CFI 5568c x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 556d4 x19: x19 x20: x20
+STACK CFI 556d8 x21: x21
+STACK CFI 556dc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 556e0 80 .cfa: sp 0 + .ra: x30
+STACK CFI 556e4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 556e8 .cfa: x29 64 +
+STACK CFI 556f4 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 55750 x19: x19 x20: x20
+STACK CFI 55754 x21: x21 x22: x22
+STACK CFI 55758 x23: x23
+STACK CFI 5575c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 55760 80 .cfa: sp 0 + .ra: x30
+STACK CFI 55764 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 55768 .cfa: x29 64 +
+STACK CFI 55774 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 557d0 x19: x19 x20: x20
+STACK CFI 557d4 x21: x21 x22: x22
+STACK CFI 557d8 x23: x23
+STACK CFI 557dc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 557e0 80 .cfa: sp 0 + .ra: x30
+STACK CFI 557e4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 557e8 .cfa: x29 64 +
+STACK CFI 557f4 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 55850 x19: x19 x20: x20
+STACK CFI 55854 x21: x21 x22: x22
+STACK CFI 55858 x23: x23
+STACK CFI 5585c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 55860 80 .cfa: sp 0 + .ra: x30
+STACK CFI 55864 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 55868 .cfa: x29 64 +
+STACK CFI 55874 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 558d0 x19: x19 x20: x20
+STACK CFI 558d4 x21: x21 x22: x22
+STACK CFI 558d8 x23: x23
+STACK CFI 558dc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 558e0 80 .cfa: sp 0 + .ra: x30
+STACK CFI 558e4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 558e8 .cfa: x29 64 +
+STACK CFI 558f4 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 55950 x19: x19 x20: x20
+STACK CFI 55954 x21: x21 x22: x22
+STACK CFI 55958 x23: x23
+STACK CFI 5595c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 55960 6c .cfa: sp 0 + .ra: x30
+STACK CFI 55964 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 55968 .cfa: x29 48 +
+STACK CFI 55970 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 559c0 x19: x19 x20: x20
+STACK CFI 559c4 x21: x21 x22: x22
+STACK CFI 559c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 559cc 88 .cfa: sp 0 + .ra: x30
+STACK CFI 559d0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 559d4 .cfa: x29 64 +
+STACK CFI 559e0 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^ x24: .cfa -8 + ^
+STACK CFI 55a44 x19: x19 x20: x20
+STACK CFI 55a48 x21: x21 x22: x22
+STACK CFI 55a4c x23: x23 x24: x24
+STACK CFI 55a50 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 55a54 84 .cfa: sp 0 + .ra: x30
+STACK CFI 55a58 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 55a5c .cfa: x29 48 +
+STACK CFI 55a64 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 55a8c x19: x19 x20: x20
+STACK CFI 55a90 x21: x21
+STACK CFI 55a98 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 55aa0 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x29: .cfa -48 + ^
+STACK CFI 55acc x19: x19 x20: x20
+STACK CFI 55ad0 x21: x21
+STACK CFI 55ad4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 55ad8 60 .cfa: sp 0 + .ra: x30
+STACK CFI 55adc .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 55ae0 .cfa: x29 64 +
+STACK CFI 55ae4 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 55aec x21: .cfa -32 + ^
+STACK CFI 55b2c x21: x21
+STACK CFI 55b30 x19: x19 x20: x20
+STACK CFI 55b34 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 55b38 30 .cfa: sp 0 + .ra: x30
+STACK CFI 55b3c .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 55b44 .cfa: x29 16 +
+STACK CFI 55b64 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 55b68 24 .cfa: sp 0 + .ra: x30
+STACK CFI 55b6c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 55b70 .cfa: x29 32 +
+STACK CFI 55b74 x19: .cfa -16 + ^
+STACK CFI 55b84 x19: x19
+STACK CFI 55b88 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 b0 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI 14 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI a0 x23: x23
+STACK CFI a4 x19: x19 x20: x20
+STACK CFI a8 x21: x21 x22: x22
+STACK CFI ac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 430ec 38 .cfa: sp 0 + .ra: x30
+STACK CFI 430f0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 430fc .cfa: x29 32 +
+STACK CFI 43100 x19: .cfa -16 + ^
+STACK CFI 4311c x19: x19
+STACK CFI 43120 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2eb40 18 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 55b8c 5c .cfa: sp 0 + .ra: x30
+STACK CFI 55b90 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 55ba0 .cfa: x29 48 +
+STACK CFI 55be4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 43124 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 24844 40 .cfa: sp 0 + .ra: x30
+STACK CFI 24848 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 24854 .cfa: x29 32 +
+STACK CFI 24858 x19: .cfa -16 + ^
+STACK CFI 2487c x19: x19
+STACK CFI 24880 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 54 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 4c x19: x19 x20: x20
+STACK CFI 50 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 55be8 a8 .cfa: sp 0 + .ra: x30
+STACK CFI 55bec .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 55bf0 .cfa: x29 32 +
+STACK CFI 55bf4 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 55c88 x19: x19 x20: x20
+STACK CFI 55c8c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 55c90 58 .cfa: sp 0 + .ra: x30
+STACK CFI 55c94 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 55c98 .cfa: x29 48 +
+STACK CFI 55ca0 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 55cdc x21: x21
+STACK CFI 55ce0 x19: x19 x20: x20
+STACK CFI 55ce4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 55ce8 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 55cf4 24 .cfa: sp 0 + .ra: x30
+STACK CFI 55cf8 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 55d04 .cfa: x29 16 +
+STACK CFI 55d14 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 55d18 24 .cfa: sp 0 + .ra: x30
+STACK CFI 55d1c .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 55d28 .cfa: x29 16 +
+STACK CFI 55d38 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 55d3c 24 .cfa: sp 0 + .ra: x30
+STACK CFI 55d40 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 55d4c .cfa: x29 16 +
+STACK CFI 55d5c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 10 .cfa: x29 16 +
+STACK CFI 20 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 55d60 24 .cfa: sp 0 + .ra: x30
+STACK CFI 55d64 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 55d70 .cfa: x29 16 +
+STACK CFI 55d80 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 10 .cfa: x29 16 +
+STACK CFI 20 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 55d84 24 .cfa: sp 0 + .ra: x30
+STACK CFI 55d88 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 55d94 .cfa: x29 16 +
+STACK CFI 55da4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 55da8 30 .cfa: sp 0 + .ra: x30
+STACK CFI 55dac .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 55db4 .cfa: x29 32 +
+STACK CFI 55dcc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 55dd8 30 .cfa: sp 0 + .ra: x30
+STACK CFI 55ddc .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 55de4 .cfa: x29 16 +
+STACK CFI 55e04 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 24 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 55e08 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 55e1c 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 30 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI c .cfa: x29 16 +
+STACK CFI 2c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 55e2c 30 .cfa: sp 0 + .ra: x30
+STACK CFI 55e30 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 55e38 .cfa: x29 16 +
+STACK CFI 55e58 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 6c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI 10 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 60 x19: x19 x20: x20
+STACK CFI 64 x21: x21 x22: x22
+STACK CFI 68 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 38 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 55e5c 58 .cfa: sp 0 + .ra: x30
+STACK CFI 55e60 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 55e64 .cfa: x29 16 +
+STACK CFI 55ea8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 55eb4 58 .cfa: sp 0 + .ra: x30
+STACK CFI 55eb8 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 55ebc .cfa: x29 16 +
+STACK CFI 55f00 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 55f0c 70 .cfa: sp 0 + .ra: x30
+STACK CFI 55f10 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 55f14 .cfa: x29 48 +
+STACK CFI 55f18 x21: .cfa -16 + ^
+STACK CFI 55f20 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 55f70 x19: x19 x20: x20
+STACK CFI 55f74 x21: x21
+STACK CFI 55f78 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 55f7c 18 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 55f94 2c .cfa: sp 0 + .ra: x30
+STACK CFI 55f98 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 55f9c .cfa: x29 16 +
+STACK CFI 55fbc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 55fc0 30 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 55ff0 30 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 56020 50 .cfa: sp 0 + .ra: x30
+STACK CFI 56024 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 56028 .cfa: x29 32 +
+STACK CFI 5602c x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 56068 x19: x19 x20: x20
+STACK CFI 5606c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 56070 28 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 56098 44 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 560dc 154 .cfa: sp 0 + .ra: x30
+STACK CFI 560e0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 560e8 .cfa: x29 32 +
+STACK CFI 560ec x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 56218 x19: x19 x20: x20
+STACK CFI 5621c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 56224 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x20: .cfa -8 + ^ x29: .cfa -32 + ^
+STACK CFI 56228 x19: x19 x20: x20
+STACK CFI 5622c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 56230 134 .cfa: sp 0 + .ra: x30
+STACK CFI 56234 .cfa: sp 288 + .ra: .cfa -280 + ^ x29: .cfa -288 + ^
+STACK CFI 56238 .cfa: x29 288 +
+STACK CFI 5623c x21: .cfa -256 + ^
+STACK CFI 56248 x19: .cfa -272 + ^ x20: .cfa -264 + ^
+STACK CFI 56358 x19: x19 x20: x20
+STACK CFI 5635c x21: x21
+STACK CFI 56360 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 56364 38 .cfa: sp 0 + .ra: x30
+STACK CFI 56368 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 56374 .cfa: x29 16 +
+STACK CFI 56390 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5639c 54 .cfa: sp 0 + .ra: x30
+STACK CFI 563a0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 563a8 .cfa: x29 32 +
+STACK CFI 563ac x19: .cfa -16 + ^
+STACK CFI 563dc x19: x19
+STACK CFI 563e4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 563f0 38 .cfa: sp 0 + .ra: x30
+STACK CFI 563f4 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 56400 .cfa: x29 16 +
+STACK CFI 5641c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 56428 c0 .cfa: sp 0 + .ra: x30
+STACK CFI 5642c .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 56430 .cfa: x29 64 +
+STACK CFI 56438 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 564bc x21: x21
+STACK CFI 564c0 x19: x19 x20: x20
+STACK CFI 564cc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 564d8 .cfa: x29 64 + .ra: .cfa -56 + ^ x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x29: .cfa -64 + ^
+STACK CFI 564dc x19: x19 x20: x20
+STACK CFI 564e0 x21: x21
+STACK CFI 564e4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 564e8 7c .cfa: sp 0 + .ra: x30
+STACK CFI 564ec .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 564f4 .cfa: x29 32 +
+STACK CFI 564f8 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 5655c x19: x19 x20: x20
+STACK CFI 56560 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 56564 50 .cfa: sp 0 + .ra: x30
+STACK CFI 56568 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 5656c .cfa: x29 32 +
+STACK CFI 56570 x19: .cfa -16 + ^
+STACK CFI 565ac x19: x19
+STACK CFI 565b0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 565b4 24 .cfa: sp 0 + .ra: x30
+STACK CFI 565b8 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 565bc .cfa: x29 16 +
+STACK CFI 565d4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 565d8 2c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 56604 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 56610 18 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 56628 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 56630 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 56638 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 56640 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 56648 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 56650 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 5665c 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 56670 30 .cfa: sp 0 + .ra: x30
+STACK CFI 56674 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 56680 .cfa: x29 16 +
+STACK CFI 5669c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 566a0 7c .cfa: sp 0 + .ra: x30
+STACK CFI 566a4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 566a8 .cfa: x29 48 +
+STACK CFI 566ac x19: .cfa -32 + ^
+STACK CFI 56708 x19: x19
+STACK CFI 5670c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 56710 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 56714 x19: x19
+STACK CFI 56718 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 5671c 144 .cfa: sp 0 + .ra: x30
+STACK CFI 56720 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 56724 .cfa: x29 80 +
+STACK CFI 56730 x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^ x25: .cfa -16 + ^ x26: .cfa -8 + ^
+STACK CFI 56744 x19: .cfa -64 + ^ x20: .cfa -56 + ^
+STACK CFI 56844 x19: x19 x20: x20
+STACK CFI 56848 x21: x21 x22: x22
+STACK CFI 56850 x23: x23 x24: x24
+STACK CFI 56854 x25: x25 x26: x26
+STACK CFI 56858 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 44 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 3c x19: x19 x20: x20
+STACK CFI 40 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 18 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 56860 4c .cfa: sp 0 + .ra: x30
+STACK CFI 56864 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 56868 .cfa: x29 32 +
+STACK CFI 5686c x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 568a4 x19: x19 x20: x20
+STACK CFI 568a8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 568ac 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 568b0 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 568b8 5c .cfa: sp 0 + .ra: x30
+STACK CFI 568bc .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 568c0 .cfa: x29 48 +
+STACK CFI 568c4 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 568cc x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 56908 x19: x19 x20: x20
+STACK CFI 5690c x21: x21 x22: x22
+STACK CFI 56910 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 56914 b8 .cfa: sp 0 + .ra: x30
+STACK CFI 56918 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 5691c .cfa: x29 48 +
+STACK CFI 56920 x19: .cfa -32 + ^
+STACK CFI 569c4 x19: x19
+STACK CFI 569c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 8 .cfa: x29 16 +
+STACK CFI 20 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 569cc 30 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 569fc 3c .cfa: sp 0 + .ra: x30
+STACK CFI 56a00 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 56a08 .cfa: x29 32 +
+STACK CFI 56a0c x19: .cfa -16 + ^
+STACK CFI 56a30 x19: x19
+STACK CFI 56a34 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 56a38 3c .cfa: sp 0 + .ra: x30
+STACK CFI 56a3c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 56a44 .cfa: x29 32 +
+STACK CFI 56a48 x19: .cfa -16 + ^
+STACK CFI 56a6c x19: x19
+STACK CFI 56a70 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 56a74 40 .cfa: sp 0 + .ra: x30
+STACK CFI 56a78 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 56a80 .cfa: x29 32 +
+STACK CFI 56a84 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 56aac x19: x19 x20: x20
+STACK CFI 56ab0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 3c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI c .cfa: x29 32 +
+STACK CFI 10 x19: .cfa -16 + ^
+STACK CFI 34 x19: x19
+STACK CFI 38 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 56ab4 5c .cfa: sp 0 + .ra: x30
+STACK CFI 56ab8 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 56abc .cfa: x29 64 +
+STACK CFI 56ac4 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 56b04 x21: x21
+STACK CFI 56b08 x19: x19 x20: x20
+STACK CFI 56b0c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 56b10 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 56b20 3c .cfa: sp 0 + .ra: x30
+STACK CFI 56b24 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 56b28 .cfa: x29 32 +
+STACK CFI 56b2c x19: .cfa -16 + ^
+STACK CFI 56b44 x19: x19
+STACK CFI 56b48 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 56b4c .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI 56b54 x19: x19
+STACK CFI 56b58 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 56b5c 20 .cfa: sp 0 + .ra: x30
+STACK CFI 56b60 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 56b64 .cfa: x29 16 +
+STACK CFI 56b78 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 56b7c 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 56b8c 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 56b94 50 .cfa: sp 0 + .ra: x30
+STACK CFI 56b98 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 56b9c .cfa: x29 32 +
+STACK CFI 56ba0 x19: .cfa -16 + ^
+STACK CFI 56bdc x19: x19
+STACK CFI 56be0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 56be4 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 56c00 58 .cfa: sp 0 + .ra: x30
+STACK CFI 56c04 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 56c08 .cfa: x29 48 +
+STACK CFI 56c0c x19: .cfa -32 + ^
+STACK CFI 56c50 x19: x19
+STACK CFI 56c54 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 56c58 5c .cfa: sp 0 + .ra: x30
+STACK CFI 56c5c .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 56c60 .cfa: x29 64 +
+STACK CFI 56c68 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 56ca8 x21: x21
+STACK CFI 56cac x19: x19 x20: x20
+STACK CFI 56cb0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 56cb4 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 56cc4 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 56cd4 28 .cfa: sp 0 + .ra: x30
+STACK CFI 56cd8 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 56cdc .cfa: x29 16 +
+STACK CFI 56cf8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 56cfc 104 .cfa: sp 0 + .ra: x30
+STACK CFI 56d00 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 56d04 .cfa: x29 80 +
+STACK CFI 56d0c x21: .cfa -48 + ^ x22: .cfa -40 + ^ x25: .cfa -16 + ^
+STACK CFI 56d18 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^
+STACK CFI 56dec x19: x19 x20: x20
+STACK CFI 56df0 x21: x21 x22: x22
+STACK CFI 56df4 x23: x23 x24: x24
+STACK CFI 56df8 x25: x25
+STACK CFI 56dfc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 28 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 8 .cfa: x29 16 +
+STACK CFI 24 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 56e00 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 56e10 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 56e20 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 24 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 56e30 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 56e34 3c .cfa: sp 0 + .ra: x30
+STACK CFI 56e38 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 56e3c .cfa: x29 32 +
+STACK CFI 56e40 x19: .cfa -16 + ^
+STACK CFI 56e5c x19: x19
+STACK CFI 56e60 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 56e64 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI 56e68 x19: x19
+STACK CFI 56e6c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 30 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI c .cfa: x29 32 +
+STACK CFI 10 x19: .cfa -16 + ^
+STACK CFI 28 x19: x19
+STACK CFI 2c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^
+STACK CFI 1c x19: x19
+STACK CFI 20 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 56e70 30 .cfa: sp 0 + .ra: x30
+STACK CFI 56e74 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 56e78 .cfa: x29 32 +
+STACK CFI 56e7c x19: .cfa -16 + ^
+STACK CFI 56e98 x19: x19
+STACK CFI 56e9c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 56ea0 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 56eb0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 56eb4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 56eb8 .cfa: x29 32 +
+STACK CFI 56ebc x19: .cfa -16 + ^
+STACK CFI 56ecc x19: x19
+STACK CFI 56ed0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 56ed4 68 .cfa: sp 0 + .ra: x30
+STACK CFI 56ed8 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 56edc .cfa: x29 48 +
+STACK CFI 56ee4 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 56f1c x21: x21
+STACK CFI 56f20 x19: x19 x20: x20
+STACK CFI 56f24 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 56f2c .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x29: .cfa -48 + ^
+STACK CFI 56f30 x19: x19 x20: x20
+STACK CFI 56f34 x21: x21
+STACK CFI 56f38 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 56f3c 58 .cfa: sp 0 + .ra: x30
+STACK CFI 56f40 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 56f44 .cfa: x29 48 +
+STACK CFI 56f4c x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 56f88 x19: x19 x20: x20
+STACK CFI 56f8c x21: x21
+STACK CFI 56f90 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 38 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^
+STACK CFI 24 x19: x19
+STACK CFI 28 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2c .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI 30 x19: x19
+STACK CFI 34 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 fc .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI c .cfa: x29 96 +
+STACK CFI 18 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^
+STACK CFI ec x21: x21 x22: x22
+STACK CFI f0 x19: x19 x20: x20
+STACK CFI f4 x23: x23 x24: x24
+STACK CFI f8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 b8 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 1c x21: .cfa -16 + ^
+STACK CFI 94 x21: x21
+STACK CFI b0 x19: x19 x20: x20
+STACK CFI b4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 b0 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI 10 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 90 x21: x21
+STACK CFI a8 x19: x19 x20: x20
+STACK CFI ac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24cf8 1c .cfa: sp 0 + .ra: x30
+STACK CFI 24cfc .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 24d00 .cfa: x29 16 +
+STACK CFI 24d10 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24d14 3c .cfa: sp 0 + .ra: x30
+STACK CFI 24d18 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 24d1c .cfa: x29 16 +
+STACK CFI 24d4c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 56f94 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 56fb0 50 .cfa: sp 0 + .ra: x30
+STACK CFI 56fb4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 56fb8 .cfa: x29 48 +
+STACK CFI 56fbc x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 56fc4 x21: .cfa -16 + ^
+STACK CFI 56ff4 x21: x21
+STACK CFI 56ff8 x19: x19 x20: x20
+STACK CFI 56ffc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 57000 24 .cfa: sp 0 + .ra: x30
+STACK CFI 57004 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 57008 .cfa: x29 32 +
+STACK CFI 5700c x19: .cfa -16 + ^
+STACK CFI 5701c x19: x19
+STACK CFI 57020 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 57024 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 57040 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 5705c f0 .cfa: sp 0 + .ra: x30
+STACK CFI 57060 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 57064 .cfa: x29 80 +
+STACK CFI 57070 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI 5713c x19: x19 x20: x20
+STACK CFI 57140 x21: x21 x22: x22
+STACK CFI 57144 x23: x23
+STACK CFI 57148 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 9c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI 10 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI 8c x21: x21
+STACK CFI 94 x19: x19 x20: x20
+STACK CFI 98 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5714c 60 .cfa: sp 0 + .ra: x30
+STACK CFI 57150 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 57158 .cfa: x29 16 +
+STACK CFI 571a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 571a4 .cfa: x29 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 571a8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 c4 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 10 .cfa: x29 64 +
+STACK CFI 1c x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI b4 x23: x23
+STACK CFI b8 x19: x19 x20: x20
+STACK CFI bc x21: x21 x22: x22
+STACK CFI c0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 571ac f0 .cfa: sp 0 + .ra: x30
+STACK CFI 571b0 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 571b4 .cfa: x29 80 +
+STACK CFI 571c0 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI 5728c x19: x19 x20: x20
+STACK CFI 57290 x21: x21 x22: x22
+STACK CFI 57294 x23: x23
+STACK CFI 57298 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25b28 2c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25b54 5c .cfa: sp 0 + .ra: x30
+STACK CFI 25b58 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 25b5c .cfa: x29 16 +
+STACK CFI 25bac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 285f0 60 .cfa: sp 0 + .ra: x30
+STACK CFI 285f4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 285f8 .cfa: x29 32 +
+STACK CFI 285fc x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 28648 x19: x19 x20: x20
+STACK CFI 2864c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 c4 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI c .cfa: x29 48 +
+STACK CFI 14 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI b8 x19: x19 x20: x20
+STACK CFI bc x21: x21
+STACK CFI c0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 154 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI c .cfa: x29 80 +
+STACK CFI 18 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI 144 x23: x23
+STACK CFI 148 x19: x19 x20: x20
+STACK CFI 14c x21: x21 x22: x22
+STACK CFI 150 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 a8 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 18 x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 9c x19: x19 x20: x20
+STACK CFI a0 x21: x21 x22: x22
+STACK CFI a4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5729c 38 .cfa: sp 0 + .ra: x30
+STACK CFI 572a0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 572ac .cfa: x29 32 +
+STACK CFI 572b0 x19: .cfa -16 + ^
+STACK CFI 572cc x19: x19
+STACK CFI 572d0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 572d4 50 .cfa: sp 0 + .ra: x30
+STACK CFI 572d8 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 572dc .cfa: x29 48 +
+STACK CFI 572e4 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 57318 x19: x19 x20: x20
+STACK CFI 5731c x21: x21 x22: x22
+STACK CFI 57320 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 57324 68 .cfa: sp 0 + .ra: x30
+STACK CFI 57328 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 5732c .cfa: x29 48 +
+STACK CFI 57330 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 5733c x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 57380 x21: x21 x22: x22
+STACK CFI 57384 x19: x19 x20: x20
+STACK CFI 57388 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 5738c 44 .cfa: sp 0 + .ra: x30
+STACK CFI 57390 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 57394 .cfa: x29 32 +
+STACK CFI 57398 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 573c8 x19: x19 x20: x20
+STACK CFI 573cc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 573d0 194 .cfa: sp 0 + .ra: x30
+STACK CFI 573d4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 573dc .cfa: x29 80 +
+STACK CFI 573ec x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^ x25: .cfa -16 + ^ x26: .cfa -8 + ^
+STACK CFI 57538 x21: x21 x22: x22
+STACK CFI 5753c x19: x19 x20: x20
+STACK CFI 57540 x23: x23 x24: x24
+STACK CFI 57544 x25: x25 x26: x26
+STACK CFI 57548 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 5754c .cfa: x29 80 + .ra: .cfa -72 + ^ x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^ x25: .cfa -16 + ^ x26: .cfa -8 + ^ x29: .cfa -80 + ^
+STACK CFI 57550 x19: x19 x20: x20
+STACK CFI 57554 x21: x21 x22: x22
+STACK CFI 57558 x23: x23 x24: x24
+STACK CFI 5755c x25: x25 x26: x26
+STACK CFI 57560 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^
+STACK CFI 1c x19: x19
+STACK CFI 20 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25fd8 34 .cfa: sp 0 + .ra: x30
+STACK CFI 25fdc .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 25fe0 .cfa: x29 48 +
+STACK CFI 25fe4 x19: .cfa -32 + ^
+STACK CFI 26004 x19: x19
+STACK CFI 26008 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 57564 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 57574 12c .cfa: sp 0 + .ra: x30
+STACK CFI 57578 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 5757c .cfa: x29 48 +
+STACK CFI 57580 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 5758c x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 57694 x19: x19 x20: x20
+STACK CFI 57698 x21: x21 x22: x22
+STACK CFI 5769c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 54 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^
+STACK CFI 4c x19: x19
+STACK CFI 50 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 576a0 4c .cfa: sp 0 + .ra: x30
+STACK CFI 576a4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 576a8 .cfa: x29 48 +
+STACK CFI 576ac x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 576e4 x19: x19 x20: x20
+STACK CFI 576e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 3c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^
+STACK CFI 34 x19: x19
+STACK CFI 38 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 576ec 68 .cfa: sp 0 + .ra: x30
+STACK CFI 576f0 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 576f4 .cfa: x29 80 +
+STACK CFI 576f8 x19: .cfa -64 + ^ x20: .cfa -56 + ^
+STACK CFI 5774c x19: x19 x20: x20
+STACK CFI 57750 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 57754 30 .cfa: sp 0 + .ra: x30
+STACK CFI 57758 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 57764 .cfa: x29 48 +
+STACK CFI 5777c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 57784 70 .cfa: sp 0 + .ra: x30
+STACK CFI 57788 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 57790 .cfa: x29 48 +
+STACK CFI 57794 x19: .cfa -32 + ^
+STACK CFI 577ec x19: x19
+STACK CFI 577f0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 577f4 30 .cfa: sp 0 + .ra: x30
+STACK CFI 577f8 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 57804 .cfa: x29 48 +
+STACK CFI 5781c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 57824 e4 .cfa: sp 0 + .ra: x30
+STACK CFI 57828 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 57830 .cfa: x29 96 +
+STACK CFI 57834 x23: .cfa -48 + ^ x24: .cfa -40 + ^
+STACK CFI 57844 x19: .cfa -80 + ^ x20: .cfa -72 + ^
+STACK CFI 57850 x21: .cfa -64 + ^ x22: .cfa -56 + ^ x25: .cfa -32 + ^
+STACK CFI 578e8 x25: x25
+STACK CFI 578f8 x21: x21 x22: x22
+STACK CFI 578fc x19: x19 x20: x20
+STACK CFI 57900 x23: x23 x24: x24
+STACK CFI 57904 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 57908 24 .cfa: sp 0 + .ra: x30
+STACK CFI 5790c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 57910 .cfa: x29 32 +
+STACK CFI 57914 x19: .cfa -16 + ^
+STACK CFI 57924 x19: x19
+STACK CFI 57928 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5792c 7c .cfa: sp 0 + .ra: x30
+STACK CFI 57930 .cfa: sp 144 + .ra: .cfa -136 + ^ x29: .cfa -144 + ^
+STACK CFI 57938 .cfa: x29 144 +
+STACK CFI 5793c x19: .cfa -128 + ^ x20: .cfa -120 + ^
+STACK CFI 57954 x21: .cfa -112 + ^
+STACK CFI 5799c x21: x21
+STACK CFI 579a0 x19: x19 x20: x20
+STACK CFI 579a4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 579a8 4c .cfa: sp 0 + .ra: x30
+STACK CFI 579ac .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 579b0 .cfa: x29 48 +
+STACK CFI 579b4 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 579ec x19: x19 x20: x20
+STACK CFI 579f0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 579f4 60 .cfa: sp 0 + .ra: x30
+STACK CFI 579f8 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 57a00 .cfa: x29 64 +
+STACK CFI 57a04 x21: .cfa -32 + ^
+STACK CFI 57a10 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 57a48 x19: x19 x20: x20
+STACK CFI 57a4c x21: x21
+STACK CFI 57a50 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 57a54 54 .cfa: sp 0 + .ra: x30
+STACK CFI 57a58 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 57a60 .cfa: x29 16 +
+STACK CFI 57aa0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 57aa8 78 .cfa: sp 0 + .ra: x30
+STACK CFI 57aac .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 57ab4 .cfa: x29 48 +
+STACK CFI 57ab8 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 57b18 x19: x19 x20: x20
+STACK CFI 57b1c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24e18 34 .cfa: sp 0 + .ra: x30
+STACK CFI 24e1c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 24e24 .cfa: x29 32 +
+STACK CFI 24e28 x19: .cfa -16 + ^
+STACK CFI 24e44 x19: x19
+STACK CFI 24e48 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 57b20 9c .cfa: sp 0 + .ra: x30
+STACK CFI 57b24 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 57b28 .cfa: x29 64 +
+STACK CFI 57b30 x21: .cfa -32 + ^
+STACK CFI 57b3c x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 57bb0 x21: x21
+STACK CFI 57bb4 x19: x19 x20: x20
+STACK CFI 57bb8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 57bbc ac .cfa: sp 0 + .ra: x30
+STACK CFI 57bc0 .cfa: sp 128 + .ra: .cfa -120 + ^ x29: .cfa -128 + ^
+STACK CFI 57bc8 .cfa: x29 128 +
+STACK CFI 57bcc x23: .cfa -80 + ^ x24: .cfa -72 + ^
+STACK CFI 57bdc x19: .cfa -112 + ^ x20: .cfa -104 + ^ x21: .cfa -96 + ^ x22: .cfa -88 + ^
+STACK CFI 57c58 x19: x19 x20: x20
+STACK CFI 57c5c x21: x21 x22: x22
+STACK CFI 57c60 x23: x23 x24: x24
+STACK CFI 57c64 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 57c68 28 .cfa: sp 0 + .ra: x30
+STACK CFI 57c6c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 57c70 .cfa: x29 32 +
+STACK CFI 57c74 x19: .cfa -16 + ^
+STACK CFI 57c88 x19: x19
+STACK CFI 57c8c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 ac .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 128 + .ra: .cfa -120 + ^ x29: .cfa -128 + ^
+STACK CFI 8 .cfa: x29 128 +
+STACK CFI 14 x19: .cfa -112 + ^ x20: .cfa -104 + ^ x21: .cfa -96 + ^ x22: .cfa -88 + ^ x23: .cfa -80 + ^
+STACK CFI 9c x23: x23
+STACK CFI a0 x19: x19 x20: x20
+STACK CFI a4 x21: x21 x22: x22
+STACK CFI a8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 dc .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI c x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 18 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI d0 x19: x19 x20: x20
+STACK CFI d4 x21: x21 x22: x22
+STACK CFI d8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 57c90 58 .cfa: sp 0 + .ra: x30
+STACK CFI 57c94 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 57c98 .cfa: x29 64 +
+STACK CFI 57c9c x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 57ce0 x19: x19 x20: x20
+STACK CFI 57ce4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 b4 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI 10 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI a8 x21: x21
+STACK CFI ac x19: x19 x20: x20
+STACK CFI b0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 57ce8 1a4 .cfa: sp 0 + .ra: x30
+STACK CFI 57cec .cfa: sp 112 + .ra: .cfa -104 + ^ x29: .cfa -112 + ^
+STACK CFI 57cf4 .cfa: x29 112 +
+STACK CFI 57d08 x19: .cfa -96 + ^ x20: .cfa -88 + ^ x21: .cfa -80 + ^ x22: .cfa -72 + ^ x23: .cfa -64 + ^ x24: .cfa -56 + ^ x25: .cfa -48 + ^ x26: .cfa -40 + ^ x27: .cfa -32 + ^
+STACK CFI 57e74 x23: x23 x24: x24
+STACK CFI 57e78 x19: x19 x20: x20
+STACK CFI 57e7c x21: x21 x22: x22
+STACK CFI 57e80 x25: x25 x26: x26
+STACK CFI 57e84 x27: x27
+STACK CFI 57e88 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 57e8c 120 .cfa: sp 0 + .ra: x30
+STACK CFI 57e90 .cfa: sp 112 + .ra: .cfa -104 + ^ x29: .cfa -112 + ^
+STACK CFI 57e94 .cfa: x29 112 +
+STACK CFI 57e9c x19: .cfa -96 + ^ x20: .cfa -88 + ^ x23: .cfa -64 + ^ x24: .cfa -56 + ^
+STACK CFI 57eb0 x21: .cfa -80 + ^ x22: .cfa -72 + ^
+STACK CFI 57eec x19: x19 x20: x20
+STACK CFI 57ef0 x21: x21 x22: x22
+STACK CFI 57ef4 x23: x23 x24: x24
+STACK CFI 57ef8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 57efc .cfa: x29 112 + .ra: .cfa -104 + ^ x19: .cfa -96 + ^ x20: .cfa -88 + ^ x21: .cfa -80 + ^ x22: .cfa -72 + ^ x23: .cfa -64 + ^ x24: .cfa -56 + ^ x29: .cfa -112 + ^
+STACK CFI INIT 0 80 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI 10 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 70 x21: x21
+STACK CFI 78 x19: x19 x20: x20
+STACK CFI 7c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 54474 1c .cfa: sp 0 + .ra: x30
+STACK CFI 54478 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 5447c .cfa: x29 16 +
+STACK CFI 5448c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 251c4 2c .cfa: sp 0 + .ra: x30
+STACK CFI 251c8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 251cc .cfa: x29 32 +
+STACK CFI 251d0 x19: .cfa -16 + ^
+STACK CFI 251e8 x19: x19
+STACK CFI 251ec .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 84 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^
+STACK CFI 70 x19: x19
+STACK CFI 74 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 78 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 7c x19: x19
+STACK CFI 80 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2527c c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25288 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25298 24 .cfa: sp 0 + .ra: x30
+STACK CFI 2529c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 252a0 .cfa: x29 32 +
+STACK CFI 252a4 x19: .cfa -16 + ^
+STACK CFI 252b4 x19: x19
+STACK CFI 252b8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 252bc 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 252cc c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 84 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^
+STACK CFI 70 x19: x19
+STACK CFI 74 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 78 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 7c x19: x19
+STACK CFI 80 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^
+STACK CFI 1c x19: x19
+STACK CFI 20 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 d0 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI bc x19: x19 x20: x20
+STACK CFI c0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI c4 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x29: .cfa -48 + ^
+STACK CFI c8 x19: x19 x20: x20
+STACK CFI cc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 c0 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI ac x19: x19 x20: x20
+STACK CFI b0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI b4 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x29: .cfa -48 + ^
+STACK CFI b8 x19: x19 x20: x20
+STACK CFI bc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^
+STACK CFI 1c x19: x19
+STACK CFI 20 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 5c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 336 + .ra: .cfa -328 + ^ x29: .cfa -336 + ^
+STACK CFI c .cfa: x29 336 +
+STACK CFI 10 x19: .cfa -320 + ^ x20: .cfa -312 + ^
+STACK CFI 18 x21: .cfa -304 + ^
+STACK CFI 4c x21: x21
+STACK CFI 54 x19: x19 x20: x20
+STACK CFI 58 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^
+STACK CFI 1c x19: x19
+STACK CFI 20 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25644 5c .cfa: sp 0 + .ra: x30
+STACK CFI 25648 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2564c .cfa: x29 32 +
+STACK CFI 25650 x19: .cfa -16 + ^
+STACK CFI 25698 x19: x19
+STACK CFI 2569c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 78 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI c .cfa: x29 32 +
+STACK CFI 10 x19: .cfa -16 + ^
+STACK CFI 70 x19: x19
+STACK CFI 74 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25718 50 .cfa: sp 0 + .ra: x30
+STACK CFI 2571c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 25720 .cfa: x29 32 +
+STACK CFI 25724 x19: .cfa -16 + ^
+STACK CFI 25754 x19: x19
+STACK CFI 25758 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2575c .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI 25760 x19: x19
+STACK CFI 25764 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 c0 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI 10 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI b0 x21: x21
+STACK CFI b8 x19: x19 x20: x20
+STACK CFI bc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 57fac cc .cfa: sp 0 + .ra: x30
+STACK CFI 57fb0 .cfa: sp 368 + .ra: .cfa -360 + ^ x29: .cfa -368 + ^
+STACK CFI 57fb8 .cfa: x29 368 +
+STACK CFI 57fbc x19: .cfa -352 + ^ x20: .cfa -344 + ^
+STACK CFI 57fc4 x21: .cfa -336 + ^
+STACK CFI 58068 x21: x21
+STACK CFI 58070 x19: x19 x20: x20
+STACK CFI 58074 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 12c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI 10 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 120 x19: x19 x20: x20
+STACK CFI 124 x21: x21 x22: x22
+STACK CFI 128 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 58078 138 .cfa: sp 0 + .ra: x30
+STACK CFI 5807c .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 58080 .cfa: x29 64 +
+STACK CFI 58088 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 5819c x21: x21 x22: x22
+STACK CFI 581a8 x19: x19 x20: x20
+STACK CFI 581ac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 581b0 38 .cfa: sp 0 + .ra: x30
+STACK CFI 581b4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 581b8 .cfa: x29 32 +
+STACK CFI 581bc x19: .cfa -16 + ^
+STACK CFI 581e0 x19: x19
+STACK CFI 581e4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 54 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI c x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 4c x19: x19 x20: x20
+STACK CFI 50 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 581e8 8c .cfa: sp 0 + .ra: x30
+STACK CFI 581ec .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 581f0 .cfa: x29 64 +
+STACK CFI 581f8 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 58260 x21: x21
+STACK CFI 5826c x19: x19 x20: x20
+STACK CFI 58270 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 58274 44 .cfa: sp 0 + .ra: x30
+STACK CFI 58278 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 58280 .cfa: x29 32 +
+STACK CFI 58284 x19: .cfa -16 + ^
+STACK CFI 582b0 x19: x19
+STACK CFI 582b4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 582b8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 582bc .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 582c0 .cfa: x29 32 +
+STACK CFI 582c4 x19: .cfa -16 + ^
+STACK CFI 582d4 x19: x19
+STACK CFI 582d8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 582dc 68 .cfa: sp 0 + .ra: x30
+STACK CFI 582e0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 582e4 .cfa: x29 64 +
+STACK CFI 582e8 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 582f0 x21: .cfa -32 + ^
+STACK CFI 58334 x21: x21
+STACK CFI 5833c x19: x19 x20: x20
+STACK CFI 58340 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 94 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 400 + .ra: .cfa -392 + ^ x29: .cfa -400 + ^
+STACK CFI c .cfa: x29 400 +
+STACK CFI 10 x19: .cfa -384 + ^ x20: .cfa -376 + ^
+STACK CFI 20 x21: .cfa -368 + ^ x22: .cfa -360 + ^
+STACK CFI 88 x19: x19 x20: x20
+STACK CFI 8c x21: x21 x22: x22
+STACK CFI 90 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 58344 8c .cfa: sp 0 + .ra: x30
+STACK CFI 58348 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 5834c .cfa: x29 64 +
+STACK CFI 58354 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 583c4 x19: x19 x20: x20
+STACK CFI 583c8 x21: x21
+STACK CFI 583cc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 583d0 54 .cfa: sp 0 + .ra: x30
+STACK CFI 583d4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 583d8 .cfa: x29 64 +
+STACK CFI 583dc x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 5841c x19: x19 x20: x20
+STACK CFI 58420 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26240 54 .cfa: sp 0 + .ra: x30
+STACK CFI 26244 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 26248 .cfa: x29 64 +
+STACK CFI 2624c x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 2628c x19: x19 x20: x20
+STACK CFI 26290 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 54 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI c x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 4c x19: x19 x20: x20
+STACK CFI 50 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 54 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI c x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 4c x19: x19 x20: x20
+STACK CFI 50 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 262e8 54 .cfa: sp 0 + .ra: x30
+STACK CFI 262ec .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 262f0 .cfa: x29 64 +
+STACK CFI 262f4 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 26334 x19: x19 x20: x20
+STACK CFI 26338 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 58424 54 .cfa: sp 0 + .ra: x30
+STACK CFI 58428 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 5842c .cfa: x29 64 +
+STACK CFI 58430 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 58470 x19: x19 x20: x20
+STACK CFI 58474 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 54 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI c x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 4c x19: x19 x20: x20
+STACK CFI 50 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26188 54 .cfa: sp 0 + .ra: x30
+STACK CFI 2618c .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 26190 .cfa: x29 64 +
+STACK CFI 26194 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 261d4 x19: x19 x20: x20
+STACK CFI 261d8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 58478 10c .cfa: sp 0 + .ra: x30
+STACK CFI 5847c .cfa: sp 112 + .ra: .cfa -104 + ^ x29: .cfa -112 + ^
+STACK CFI 58480 .cfa: x29 112 +
+STACK CFI 58488 x19: .cfa -96 + ^ x20: .cfa -88 + ^ x21: .cfa -80 + ^ x22: .cfa -72 + ^
+STACK CFI 58578 x19: x19 x20: x20
+STACK CFI 5857c x21: x21 x22: x22
+STACK CFI 58580 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 10c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 112 + .ra: .cfa -104 + ^ x29: .cfa -112 + ^
+STACK CFI 8 .cfa: x29 112 +
+STACK CFI 10 x19: .cfa -96 + ^ x20: .cfa -88 + ^ x21: .cfa -80 + ^ x22: .cfa -72 + ^
+STACK CFI 100 x19: x19 x20: x20
+STACK CFI 104 x21: x21 x22: x22
+STACK CFI 108 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 54 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI c x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 4c x19: x19 x20: x20
+STACK CFI 50 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 178 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 128 + .ra: .cfa -120 + ^ x29: .cfa -128 + ^
+STACK CFI 8 .cfa: x29 128 +
+STACK CFI 14 x19: .cfa -112 + ^ x20: .cfa -104 + ^ x25: .cfa -64 + ^ x26: .cfa -56 + ^
+STACK CFI 28 x21: .cfa -96 + ^ x22: .cfa -88 + ^ x23: .cfa -80 + ^ x24: .cfa -72 + ^
+STACK CFI 164 x19: x19 x20: x20
+STACK CFI 168 x21: x21 x22: x22
+STACK CFI 16c x23: x23 x24: x24
+STACK CFI 170 x25: x25 x26: x26
+STACK CFI 174 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 48 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 10 .cfa: x29 48 +
+STACK CFI 1c x19: .cfa -32 + ^
+STACK CFI 40 x19: x19
+STACK CFI 44 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 48 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 10 .cfa: x29 48 +
+STACK CFI 1c x19: .cfa -32 + ^
+STACK CFI 40 x19: x19
+STACK CFI 44 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 188 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 176 + .ra: .cfa -168 + ^ x29: .cfa -176 + ^
+STACK CFI 8 .cfa: x29 176 +
+STACK CFI c x19: .cfa -160 + ^ x20: .cfa -152 + ^
+STACK CFI 14 x21: .cfa -144 + ^ x22: .cfa -136 + ^
+STACK CFI 17c x19: x19 x20: x20
+STACK CFI 180 x21: x21 x22: x22
+STACK CFI 184 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 58584 118 .cfa: sp 0 + .ra: x30
+STACK CFI 58588 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 5858c .cfa: x29 96 +
+STACK CFI 58594 x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^
+STACK CFI 5859c x19: .cfa -80 + ^ x20: .cfa -72 + ^
+STACK CFI 58688 x23: x23
+STACK CFI 58690 x19: x19 x20: x20
+STACK CFI 58694 x21: x21 x22: x22
+STACK CFI 58698 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 e0 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI 10 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI d0 x21: x21
+STACK CFI d8 x19: x19 x20: x20
+STACK CFI dc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5869c 98 .cfa: sp 0 + .ra: x30
+STACK CFI 586a0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 586a4 .cfa: x29 64 +
+STACK CFI 586ac x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 58720 x21: x21 x22: x22
+STACK CFI 5872c x19: x19 x20: x20
+STACK CFI 58730 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 58734 8c .cfa: sp 0 + .ra: x30
+STACK CFI 58738 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 5873c .cfa: x29 64 +
+STACK CFI 58744 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 587b4 x19: x19 x20: x20
+STACK CFI 587b8 x21: x21
+STACK CFI 587bc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 587c0 38 .cfa: sp 0 + .ra: x30
+STACK CFI 587c4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 587c8 .cfa: x29 48 +
+STACK CFI 587cc x19: .cfa -32 + ^
+STACK CFI 587f0 x19: x19
+STACK CFI 587f4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 587f8 2c .cfa: sp 0 + .ra: x30
+STACK CFI 587fc .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 58800 .cfa: x29 32 +
+STACK CFI 58820 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 3c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI c x19: .cfa -48 + ^
+STACK CFI 34 x19: x19
+STACK CFI 38 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 3c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^
+STACK CFI 34 x19: x19
+STACK CFI 38 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 3c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^
+STACK CFI 34 x19: x19
+STACK CFI 38 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 58824 90 .cfa: sp 0 + .ra: x30
+STACK CFI 58828 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 58830 .cfa: x29 64 +
+STACK CFI 58838 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 588a8 x19: x19 x20: x20
+STACK CFI 588ac x21: x21 x22: x22
+STACK CFI 588b0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 588b4 40 .cfa: sp 0 + .ra: x30
+STACK CFI 588b8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 588bc .cfa: x29 32 +
+STACK CFI 588c0 x19: .cfa -16 + ^
+STACK CFI 588ec x19: x19
+STACK CFI 588f0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 588f4 c0 .cfa: sp 0 + .ra: x30
+STACK CFI 588f8 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 588fc .cfa: x29 96 +
+STACK CFI 58904 x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^
+STACK CFI 58910 x19: .cfa -80 + ^ x20: .cfa -72 + ^
+STACK CFI 589a4 x19: x19 x20: x20
+STACK CFI 589a8 x21: x21 x22: x22
+STACK CFI 589ac x23: x23 x24: x24
+STACK CFI 589b0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 589b4 a8 .cfa: sp 0 + .ra: x30
+STACK CFI 589b8 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 589bc .cfa: x29 80 +
+STACK CFI 589c0 x21: .cfa -48 + ^ x22: .cfa -40 + ^
+STACK CFI 589d0 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^
+STACK CFI 58a4c x19: x19 x20: x20
+STACK CFI 58a50 x21: x21 x22: x22
+STACK CFI 58a54 x23: x23 x24: x24
+STACK CFI 58a58 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 58a5c 54 .cfa: sp 0 + .ra: x30
+STACK CFI 58a60 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 58a64 .cfa: x29 48 +
+STACK CFI 58a6c x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 58aa4 x19: x19 x20: x20
+STACK CFI 58aa8 x21: x21
+STACK CFI 58aac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 58ab0 84 .cfa: sp 0 + .ra: x30
+STACK CFI 58ab4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 58ab8 .cfa: x29 64 +
+STACK CFI 58ac0 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 58b28 x19: x19 x20: x20
+STACK CFI 58b2c x21: x21
+STACK CFI 58b30 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 58b34 40 .cfa: sp 0 + .ra: x30
+STACK CFI 58b38 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 58b3c .cfa: x29 32 +
+STACK CFI 58b40 x19: .cfa -16 + ^
+STACK CFI 58b6c x19: x19
+STACK CFI 58b70 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 58b74 24 .cfa: sp 0 + .ra: x30
+STACK CFI 58b78 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 58b7c .cfa: x29 32 +
+STACK CFI 58b80 x19: .cfa -16 + ^
+STACK CFI 58b90 x19: x19
+STACK CFI 58b94 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 58b98 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 58ba8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 58bac .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 58bb0 .cfa: x29 32 +
+STACK CFI 58bb4 x19: .cfa -16 + ^
+STACK CFI 58bc4 x19: x19
+STACK CFI 58bc8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 58bcc 9c .cfa: sp 0 + .ra: x30
+STACK CFI 58bd0 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 58bd4 .cfa: x29 48 +
+STACK CFI 58bdc x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 58c5c x21: x21
+STACK CFI 58c60 x19: x19 x20: x20
+STACK CFI 58c64 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 58c68 74 .cfa: sp 0 + .ra: x30
+STACK CFI 58c6c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 58c70 .cfa: x29 32 +
+STACK CFI 58c74 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 58cd4 x19: x19 x20: x20
+STACK CFI 58cd8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 58cdc 34 .cfa: sp 0 + .ra: x30
+STACK CFI 58ce0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 58ce4 .cfa: x29 32 +
+STACK CFI 58ce8 x19: .cfa -16 + ^
+STACK CFI 58cfc x19: x19
+STACK CFI 58d00 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 58d04 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI 58d08 x19: x19
+STACK CFI 58d0c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 58d10 8c .cfa: sp 0 + .ra: x30
+STACK CFI 58d14 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 58d18 .cfa: x29 48 +
+STACK CFI 58d1c x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 58d24 x21: .cfa -16 + ^
+STACK CFI 58d90 x21: x21
+STACK CFI 58d94 x19: x19 x20: x20
+STACK CFI 58d98 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 58d9c 24 .cfa: sp 0 + .ra: x30
+STACK CFI 58da0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 58da4 .cfa: x29 32 +
+STACK CFI 58da8 x19: .cfa -16 + ^
+STACK CFI 58db8 x19: x19
+STACK CFI 58dbc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 58dc0 1d0 .cfa: sp 0 + .ra: x30
+STACK CFI 58dc4 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 58dc8 .cfa: x29 96 +
+STACK CFI 58dd8 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^ x25: .cfa -32 + ^
+STACK CFI 58f7c x19: x19 x20: x20
+STACK CFI 58f80 x21: x21 x22: x22
+STACK CFI 58f84 x23: x23 x24: x24
+STACK CFI 58f88 x25: x25
+STACK CFI 58f8c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 58f90 b0 .cfa: sp 0 + .ra: x30
+STACK CFI 58f94 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 58f9c .cfa: x29 48 +
+STACK CFI 58fa4 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 59034 x19: x19 x20: x20
+STACK CFI 59038 x21: x21 x22: x22
+STACK CFI 5903c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 20 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 59040 9c .cfa: sp 0 + .ra: x30
+STACK CFI 59044 .cfa: sp 368 + .ra: .cfa -360 + ^ x29: .cfa -368 + ^
+STACK CFI 5904c .cfa: x29 368 +
+STACK CFI 59050 x19: .cfa -352 + ^ x20: .cfa -344 + ^
+STACK CFI 59058 x21: .cfa -336 + ^
+STACK CFI 590cc x21: x21
+STACK CFI 590d4 x19: x19 x20: x20
+STACK CFI 590d8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 590dc 90 .cfa: sp 0 + .ra: x30
+STACK CFI 590e0 .cfa: sp 336 + .ra: .cfa -328 + ^ x29: .cfa -336 + ^
+STACK CFI 590e8 .cfa: x29 336 +
+STACK CFI 590ec x19: .cfa -320 + ^ x20: .cfa -312 + ^
+STACK CFI 590f4 x21: .cfa -304 + ^
+STACK CFI 5915c x21: x21
+STACK CFI 59164 x19: x19 x20: x20
+STACK CFI 59168 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 5c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI c x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 14 x21: .cfa -32 + ^
+STACK CFI 4c x21: x21
+STACK CFI 54 x19: x19 x20: x20
+STACK CFI 58 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5916c 1a0 .cfa: sp 0 + .ra: x30
+STACK CFI 59170 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 59174 .cfa: x29 96 +
+STACK CFI 59184 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^ x25: .cfa -32 + ^ x26: .cfa -24 + ^
+STACK CFI 592f8 x19: x19 x20: x20
+STACK CFI 592fc x21: x21 x22: x22
+STACK CFI 59300 x23: x23 x24: x24
+STACK CFI 59304 x25: x25 x26: x26
+STACK CFI 59308 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5930c 50 .cfa: sp 0 + .ra: x30
+STACK CFI 59310 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 59314 .cfa: x29 48 +
+STACK CFI 59318 x19: .cfa -32 + ^
+STACK CFI 59354 x19: x19
+STACK CFI 59358 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5935c c8 .cfa: sp 0 + .ra: x30
+STACK CFI 59360 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 59364 .cfa: x29 96 +
+STACK CFI 59370 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^
+STACK CFI 59414 x21: x21
+STACK CFI 5941c x19: x19 x20: x20
+STACK CFI 59420 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 58 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI c x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 50 x19: x19 x20: x20
+STACK CFI 54 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 1f0 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 8 .cfa: x29 160 +
+STACK CFI 20 x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^ x23: .cfa -112 + ^ x24: .cfa -104 + ^ x25: .cfa -96 + ^
+STACK CFI 1dc x25: x25
+STACK CFI 1e0 x19: x19 x20: x20
+STACK CFI 1e4 x21: x21 x22: x22
+STACK CFI 1e8 x23: x23 x24: x24
+STACK CFI 1ec .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 59428 64 .cfa: sp 0 + .ra: x30
+STACK CFI 5942c .cfa: sp 336 + .ra: .cfa -328 + ^ x29: .cfa -336 + ^
+STACK CFI 59434 .cfa: x29 336 +
+STACK CFI 59438 x19: .cfa -320 + ^ x20: .cfa -312 + ^
+STACK CFI 59448 x21: .cfa -304 + ^
+STACK CFI 59480 x21: x21
+STACK CFI 59484 x19: x19 x20: x20
+STACK CFI 59488 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 59498 f8 .cfa: sp 0 + .ra: x30
+STACK CFI 5949c .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 594a0 .cfa: x29 96 +
+STACK CFI 594ac x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^
+STACK CFI 594d0 x25: .cfa -32 + ^
+STACK CFI 5957c x25: x25
+STACK CFI 59580 x19: x19 x20: x20
+STACK CFI 59584 x21: x21 x22: x22
+STACK CFI 59588 x23: x23 x24: x24
+STACK CFI 5958c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5457c 48 .cfa: sp 0 + .ra: x30
+STACK CFI 54580 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 5458c .cfa: x29 16 +
+STACK CFI 545c0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 545c4 11c .cfa: sp 0 + .ra: x30
+STACK CFI 545c8 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 545cc .cfa: x29 64 +
+STACK CFI 545d4 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 546d4 x21: x21
+STACK CFI 546d8 x19: x19 x20: x20
+STACK CFI 546dc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 134 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 8 .cfa: x29 96 +
+STACK CFI 14 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^
+STACK CFI 20 x25: .cfa -32 + ^ x26: .cfa -24 + ^
+STACK CFI 120 x19: x19 x20: x20
+STACK CFI 124 x21: x21 x22: x22
+STACK CFI 128 x23: x23 x24: x24
+STACK CFI 12c x25: x25 x26: x26
+STACK CFI 130 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 59590 108 .cfa: sp 0 + .ra: x30
+STACK CFI 59594 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 59598 .cfa: x29 64 +
+STACK CFI 595a0 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 5968c x19: x19 x20: x20
+STACK CFI 59690 x21: x21 x22: x22
+STACK CFI 59694 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 59698 1d4 .cfa: sp 0 + .ra: x30
+STACK CFI 5969c .cfa: sp 112 + .ra: .cfa -104 + ^ x29: .cfa -112 + ^
+STACK CFI 596a0 .cfa: x29 112 +
+STACK CFI 596a8 x19: .cfa -96 + ^ x20: .cfa -88 + ^ x21: .cfa -80 + ^ x22: .cfa -72 + ^
+STACK CFI 59860 x19: x19 x20: x20
+STACK CFI 59864 x21: x21 x22: x22
+STACK CFI 59868 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5986c 7c .cfa: sp 0 + .ra: x30
+STACK CFI 59870 .cfa: sp 128 + .ra: .cfa -120 + ^ x29: .cfa -128 + ^
+STACK CFI 59874 .cfa: x29 128 +
+STACK CFI 59878 x19: .cfa -112 + ^ x20: .cfa -104 + ^
+STACK CFI 59884 x21: .cfa -96 + ^ x22: .cfa -88 + ^
+STACK CFI 598dc x19: x19 x20: x20
+STACK CFI 598e0 x21: x21 x22: x22
+STACK CFI 598e4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 4c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI c .cfa: x29 48 +
+STACK CFI 10 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 44 x19: x19 x20: x20
+STACK CFI 48 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 26294 54 .cfa: sp 0 + .ra: x30
+STACK CFI 26298 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 2629c .cfa: x29 64 +
+STACK CFI 262a0 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 262e0 x19: x19 x20: x20
+STACK CFI 262e4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 3c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI 38 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 118 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 208 + .ra: .cfa -200 + ^ x29: .cfa -208 + ^
+STACK CFI 8 .cfa: x29 208 +
+STACK CFI 24 x19: .cfa -192 + ^ x20: .cfa -184 + ^ x21: .cfa -176 + ^ x22: .cfa -168 + ^ x23: .cfa -160 + ^
+STACK CFI 108 x23: x23
+STACK CFI 10c x19: x19 x20: x20
+STACK CFI 110 x21: x21 x22: x22
+STACK CFI 114 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 224 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 736 +
+STACK CFI c .cfa: sp 816 + .ra: .cfa -808 + ^ x29: .cfa -816 + ^
+STACK CFI 10 .cfa: x29 816 +
+STACK CFI 18 x23: .cfa -768 + ^ x24: .cfa -760 + ^ x25: .cfa -752 + ^ x26: .cfa -744 + ^
+STACK CFI 28 x19: .cfa -800 + ^ x20: .cfa -792 + ^ x21: .cfa -784 + ^ x22: .cfa -776 + ^
+STACK CFI 20c x19: x19 x20: x20
+STACK CFI 210 x21: x21 x22: x22
+STACK CFI 214 x23: x23 x24: x24
+STACK CFI 218 x25: x25 x26: x26
+STACK CFI 21c .cfa: sp 736 + .ra: .ra x29: x29
+STACK CFI 220 .cfa: sp 656 +
+STACK CFI INIT 0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^
+STACK CFI 1c x19: x19
+STACK CFI 20 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 220 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 736 +
+STACK CFI c .cfa: sp 816 + .ra: .cfa -808 + ^ x29: .cfa -816 + ^
+STACK CFI 10 .cfa: x29 816 +
+STACK CFI 18 x23: .cfa -768 + ^ x24: .cfa -760 + ^ x25: .cfa -752 + ^ x26: .cfa -744 + ^
+STACK CFI 28 x19: .cfa -800 + ^ x20: .cfa -792 + ^ x21: .cfa -784 + ^ x22: .cfa -776 + ^
+STACK CFI 208 x19: x19 x20: x20
+STACK CFI 20c x21: x21 x22: x22
+STACK CFI 210 x23: x23 x24: x24
+STACK CFI 214 x25: x25 x26: x26
+STACK CFI 218 .cfa: sp 736 + .ra: .ra x29: x29
+STACK CFI 21c .cfa: sp 656 +
+STACK CFI INIT 0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^
+STACK CFI 1c x19: x19
+STACK CFI 20 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 264 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 144 + .ra: .cfa -136 + ^ x29: .cfa -144 + ^
+STACK CFI 8 .cfa: x29 144 +
+STACK CFI 18 x19: .cfa -128 + ^ x20: .cfa -120 + ^ x21: .cfa -112 + ^ x22: .cfa -104 + ^ x23: .cfa -96 + ^ x24: .cfa -88 + ^ x25: .cfa -80 + ^
+STACK CFI 250 x25: x25
+STACK CFI 254 x19: x19 x20: x20
+STACK CFI 258 x21: x21 x22: x22
+STACK CFI 25c x23: x23 x24: x24
+STACK CFI 260 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 44 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 14 .cfa: x29 32 +
+STACK CFI 2c x19: .cfa -16 + ^
+STACK CFI 3c x19: x19
+STACK CFI 40 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 44 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 14 .cfa: x29 32 +
+STACK CFI 2c x19: .cfa -16 + ^
+STACK CFI 3c x19: x19
+STACK CFI 40 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 2c4 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI c .cfa: x29 160 +
+STACK CFI 1c x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^ x23: .cfa -112 + ^ x24: .cfa -104 + ^ x25: .cfa -96 + ^ x26: .cfa -88 + ^
+STACK CFI 2b0 x19: x19 x20: x20
+STACK CFI 2b4 x21: x21 x22: x22
+STACK CFI 2b8 x23: x23 x24: x24
+STACK CFI 2bc x25: x25 x26: x26
+STACK CFI 2c0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 598e8 104 .cfa: sp 0 + .ra: x30
+STACK CFI 598ec .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 598f0 .cfa: x29 160 +
+STACK CFI 598f8 x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^
+STACK CFI 599e0 x19: x19 x20: x20
+STACK CFI 599e4 x21: x21 x22: x22
+STACK CFI 599e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 599ec 1c8 .cfa: sp 0 + .ra: x30
+STACK CFI 599f0 .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 599f4 .cfa: x29 160 +
+STACK CFI 59a00 x19: .cfa -144 + ^ x20: .cfa -136 + ^ x23: .cfa -112 + ^ x24: .cfa -104 + ^ x25: .cfa -96 + ^ x26: .cfa -88 + ^
+STACK CFI 59a18 x21: .cfa -128 + ^ x22: .cfa -120 + ^ x27: .cfa -80 + ^ x28: .cfa -72 + ^
+STACK CFI 59b9c x19: x19 x20: x20
+STACK CFI 59ba0 x21: x21 x22: x22
+STACK CFI 59ba4 x23: x23 x24: x24
+STACK CFI 59ba8 x25: x25 x26: x26
+STACK CFI 59bac x27: x27 x28: x28
+STACK CFI 59bb0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 59bb4 154 .cfa: sp 0 + .ra: x30
+STACK CFI 59bb8 .cfa: sp 224 + .ra: .cfa -216 + ^ x29: .cfa -224 + ^
+STACK CFI 59bbc .cfa: x29 224 +
+STACK CFI 59bc8 x19: .cfa -208 + ^ x20: .cfa -200 + ^ x23: .cfa -176 + ^ x24: .cfa -168 + ^ x25: .cfa -160 + ^ x26: .cfa -152 + ^
+STACK CFI 59bf4 x27: .cfa -144 + ^ x28: .cfa -136 + ^
+STACK CFI 59c00 x21: .cfa -192 + ^ x22: .cfa -184 + ^
+STACK CFI 59cf0 x19: x19 x20: x20
+STACK CFI 59cf4 x21: x21 x22: x22
+STACK CFI 59cf8 x23: x23 x24: x24
+STACK CFI 59cfc x25: x25 x26: x26
+STACK CFI 59d00 x27: x27 x28: x28
+STACK CFI 59d04 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 59d08 64 .cfa: sp 0 + .ra: x30
+STACK CFI 59d0c .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 59d10 .cfa: x29 96 +
+STACK CFI 59d14 x19: .cfa -80 + ^ x20: .cfa -72 + ^
+STACK CFI 59d20 x21: .cfa -64 + ^
+STACK CFI 59d60 x21: x21
+STACK CFI 59d64 x19: x19 x20: x20
+STACK CFI 59d68 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 59d6c 380 .cfa: sp 0 + .ra: x30
+STACK CFI 59d70 .cfa: sp 128 + .ra: .cfa -120 + ^ x29: .cfa -128 + ^
+STACK CFI 59d74 .cfa: x29 128 +
+STACK CFI 59d78 x19: .cfa -112 + ^ x20: .cfa -104 + ^
+STACK CFI 59d88 x21: .cfa -96 + ^ x22: .cfa -88 + ^ x23: .cfa -80 + ^
+STACK CFI 5a0dc x19: x19 x20: x20
+STACK CFI 5a0e0 x21: x21 x22: x22
+STACK CFI 5a0e4 x23: x23
+STACK CFI 5a0e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5a0ec 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 5a100 134 .cfa: sp 0 + .ra: x30
+STACK CFI 5a104 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 5a10c .cfa: x29 64 +
+STACK CFI 5a118 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 5a228 x19: x19 x20: x20
+STACK CFI 5a22c x21: x21 x22: x22
+STACK CFI 5a230 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5a234 c8 .cfa: sp 0 + .ra: x30
+STACK CFI 5a238 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 5a23c .cfa: x29 64 +
+STACK CFI 5a244 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 5a2f0 x19: x19 x20: x20
+STACK CFI 5a2f4 x21: x21 x22: x22
+STACK CFI 5a2f8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5a2fc 1c .cfa: sp 0 + .ra: x30
+STACK CFI 5a300 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 5a308 .cfa: x29 16 +
+STACK CFI 5a314 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5a318 2a4 .cfa: sp 0 + .ra: x30
+STACK CFI 5a31c .cfa: sp 368 + .ra: .cfa -360 + ^ x29: .cfa -368 + ^
+STACK CFI 5a320 .cfa: x29 368 +
+STACK CFI 5a324 v8: .cfa -272 + ^ v9: .cfa -264 + ^
+STACK CFI 5a32c x21: .cfa -336 + ^ x22: .cfa -328 + ^
+STACK CFI 5a338 x23: .cfa -320 + ^ x24: .cfa -312 + ^
+STACK CFI 5a348 x19: .cfa -352 + ^ x20: .cfa -344 + ^ x25: .cfa -304 + ^ x26: .cfa -296 + ^
+STACK CFI 5a354 x27: .cfa -288 + ^ x28: .cfa -280 + ^
+STACK CFI 5a578 v8: v8 v9: v9
+STACK CFI 5a57c x19: x19 x20: x20
+STACK CFI 5a580 x21: x21 x22: x22
+STACK CFI 5a584 x23: x23 x24: x24
+STACK CFI 5a588 x25: x25 x26: x26
+STACK CFI 5a58c x27: x27 x28: x28
+STACK CFI 5a590 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 5a594 .cfa: x29 368 + .ra: .cfa -360 + ^ v8: .cfa -272 + ^ v9: .cfa -264 + ^ x19: .cfa -352 + ^ x20: .cfa -344 + ^ x21: .cfa -336 + ^ x22: .cfa -328 + ^ x23: .cfa -320 + ^ x24: .cfa -312 + ^ x25: .cfa -304 + ^ x26: .cfa -296 + ^ x27: .cfa -288 + ^ x28: .cfa -280 + ^ x29: .cfa -368 + ^
+STACK CFI INIT 5a5bc 24 .cfa: sp 0 + .ra: x30
+STACK CFI 5a5c0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 5a5c8 .cfa: x29 32 +
+STACK CFI 5a5dc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 31b50 60 .cfa: sp 0 + .ra: x30
+STACK CFI 31b54 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 31b60 .cfa: x29 32 +
+STACK CFI 31b64 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 31ba8 x19: x19 x20: x20
+STACK CFI 31bac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5a5e0 8c .cfa: sp 0 + .ra: x30
+STACK CFI 5a5e4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 5a5e8 .cfa: x29 64 +
+STACK CFI 5a5f4 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 5a65c x23: x23
+STACK CFI 5a660 x19: x19 x20: x20
+STACK CFI 5a664 x21: x21 x22: x22
+STACK CFI 5a668 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5a66c 58 .cfa: sp 0 + .ra: x30
+STACK CFI 5a670 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 5a674 .cfa: x29 48 +
+STACK CFI 5a67c x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 5a6b8 x19: x19 x20: x20
+STACK CFI 5a6bc x21: x21
+STACK CFI 5a6c0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5a6c4 44 .cfa: sp 0 + .ra: x30
+STACK CFI 5a6c8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 5a6cc .cfa: x29 32 +
+STACK CFI 5a6d0 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 5a700 x19: x19 x20: x20
+STACK CFI 5a704 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5a708 3c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 5a744 9c .cfa: sp 0 + .ra: x30
+STACK CFI 5a748 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 5a74c .cfa: x29 64 +
+STACK CFI 5a750 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 5a758 x21: .cfa -32 + ^
+STACK CFI 5a7d4 x19: x19 x20: x20
+STACK CFI 5a7d8 x21: x21
+STACK CFI 5a7dc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5a7e0 4c .cfa: sp 0 + .ra: x30
+STACK CFI 5a7ec .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 5a7f4 .cfa: x29 16 +
+STACK CFI 5a828 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5a82c 144 .cfa: sp 0 + .ra: x30
+STACK CFI 5a830 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 5a834 .cfa: x29 64 +
+STACK CFI 5a838 x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 5a844 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 5a854 x23: .cfa -16 + ^
+STACK CFI 5a960 x23: x23
+STACK CFI 5a964 x19: x19 x20: x20
+STACK CFI 5a968 x21: x21 x22: x22
+STACK CFI 5a96c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5a970 154 .cfa: sp 0 + .ra: x30
+STACK CFI 5a974 .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 5a978 .cfa: x29 160 +
+STACK CFI 5a97c x21: .cfa -128 + ^ x22: .cfa -120 + ^
+STACK CFI 5a98c x23: .cfa -112 + ^ x24: .cfa -104 + ^ x25: .cfa -96 + ^
+STACK CFI 5a99c x19: .cfa -144 + ^ x20: .cfa -136 + ^
+STACK CFI 5aab0 x25: x25
+STACK CFI 5aab4 x19: x19 x20: x20
+STACK CFI 5aab8 x21: x21 x22: x22
+STACK CFI 5aabc x23: x23 x24: x24
+STACK CFI 5aac0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5aac4 124 .cfa: sp 0 + .ra: x30
+STACK CFI 5aac8 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 5aacc .cfa: x29 96 +
+STACK CFI 5aadc x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^ x25: .cfa -32 + ^
+STACK CFI 5abd4 x21: x21 x22: x22
+STACK CFI 5abd8 x19: x19 x20: x20
+STACK CFI 5abdc x23: x23 x24: x24
+STACK CFI 5abe0 x25: x25
+STACK CFI 5abe4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5abe8 50 .cfa: sp 0 + .ra: x30
+STACK CFI 5abec .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 5abf8 .cfa: x29 32 +
+STACK CFI 5ac34 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI c .cfa: x29 32 +
+STACK CFI 20 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5ac38 28 .cfa: sp 0 + .ra: x30
+STACK CFI 5ac3c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 5ac40 .cfa: x29 32 +
+STACK CFI 5ac5c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5ac60 5c .cfa: sp 0 + .ra: x30
+STACK CFI 5ac64 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 5ac68 .cfa: x29 32 +
+STACK CFI 5ac6c x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 5aca8 x19: x19 x20: x20
+STACK CFI 5acac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 5acb0 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x20: .cfa -8 + ^ x29: .cfa -32 + ^
+STACK CFI 5acb4 x19: x19 x20: x20
+STACK CFI 5acb8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5acbc 244 .cfa: sp 0 + .ra: x30
+STACK CFI 5acc0 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 5acc4 .cfa: x29 96 +
+STACK CFI 5acc8 x19: .cfa -80 + ^ x20: .cfa -72 + ^
+STACK CFI 5acd8 x21: .cfa -64 + ^ x22: .cfa -56 + ^
+STACK CFI 5acfc x23: .cfa -48 + ^ x24: .cfa -40 + ^ x25: .cfa -32 + ^
+STACK CFI 5aeec x25: x25
+STACK CFI 5aef0 x19: x19 x20: x20
+STACK CFI 5aef4 x21: x21 x22: x22
+STACK CFI 5aef8 x23: x23 x24: x24
+STACK CFI 5aefc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5af00 44 .cfa: sp 0 + .ra: x30
+STACK CFI 5af04 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 5af0c .cfa: x29 32 +
+STACK CFI 5af10 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 5af3c x19: x19 x20: x20
+STACK CFI 5af40 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5af44 5c .cfa: sp 0 + .ra: x30
+STACK CFI 5af48 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 5af4c .cfa: x29 48 +
+STACK CFI 5af50 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 5af98 x19: x19 x20: x20
+STACK CFI 5af9c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5afa0 244 .cfa: sp 0 + .ra: x30
+STACK CFI 5afa8 .cfa: sp 384 + .ra: .cfa -376 + ^ x29: .cfa -384 + ^
+STACK CFI 5afac .cfa: x29 384 +
+STACK CFI 5afc0 x19: .cfa -368 + ^ x20: .cfa -360 + ^ x21: .cfa -352 + ^ x22: .cfa -344 + ^ x23: .cfa -336 + ^ x24: .cfa -328 + ^ x25: .cfa -320 + ^ x26: .cfa -312 + ^
+STACK CFI 5b1d0 x19: x19 x20: x20
+STACK CFI 5b1d4 x21: x21 x22: x22
+STACK CFI 5b1d8 x23: x23 x24: x24
+STACK CFI 5b1dc x25: x25 x26: x26
+STACK CFI 5b1e0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5b1e4 18 .cfa: sp 0 + .ra: x30
+STACK CFI 5b1e8 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 5b1ec .cfa: x29 16 +
+STACK CFI 5b1f8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 60 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 38 x19: x19 x20: x20
+STACK CFI 3c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 40 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x20: .cfa -8 + ^ x29: .cfa -32 + ^
+STACK CFI 58 x19: x19 x20: x20
+STACK CFI 5c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 18 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 18 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 58 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^
+STACK CFI 34 x19: x19
+STACK CFI 38 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 3c .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI 50 x19: x19
+STACK CFI 54 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^
+STACK CFI 1c x19: x19
+STACK CFI 20 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5b1fc 4c .cfa: sp 0 + .ra: x30
+STACK CFI 5b200 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 5b204 .cfa: x29 48 +
+STACK CFI 5b208 x19: .cfa -32 + ^
+STACK CFI 5b240 x19: x19
+STACK CFI 5b244 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5b248 28 .cfa: sp 0 + .ra: x30
+STACK CFI 5b24c .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 5b250 .cfa: x29 16 +
+STACK CFI 5b25c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5b270 28 .cfa: sp 0 + .ra: x30
+STACK CFI 5b274 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 5b278 .cfa: x29 16 +
+STACK CFI 5b284 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 38 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^
+STACK CFI 30 x19: x19
+STACK CFI 34 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 6c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 128 + .ra: .cfa -120 + ^ x29: .cfa -128 + ^
+STACK CFI 8 .cfa: x29 128 +
+STACK CFI 10 x19: .cfa -112 + ^ x20: .cfa -104 + ^ x21: .cfa -96 + ^
+STACK CFI 60 x21: x21
+STACK CFI 64 x19: x19 x20: x20
+STACK CFI 68 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5b298 14 .cfa: sp 0 + .ra: x30
+STACK CFI 5b29c .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 5b2a0 .cfa: x29 16 +
+STACK CFI 5b2a8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5b2ac 5c .cfa: sp 0 + .ra: x30
+STACK CFI 5b2b0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 5b2b4 .cfa: x29 32 +
+STACK CFI 5b2b8 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 5b2f4 x19: x19 x20: x20
+STACK CFI 5b2f8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 5b2fc .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x20: .cfa -8 + ^ x29: .cfa -32 + ^
+STACK CFI 5b300 x19: x19 x20: x20
+STACK CFI 5b304 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5b308 c8 .cfa: sp 0 + .ra: x30
+STACK CFI 5b30c .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 5b310 .cfa: x29 160 +
+STACK CFI 5b314 x19: .cfa -144 + ^ x20: .cfa -136 + ^
+STACK CFI 5b320 x21: .cfa -128 + ^ x22: .cfa -120 + ^
+STACK CFI 5b3c4 x19: x19 x20: x20
+STACK CFI 5b3c8 x21: x21 x22: x22
+STACK CFI 5b3cc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 30 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI 2c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5b3d0 50 .cfa: sp 0 + .ra: x30
+STACK CFI 5b3d4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 5b3d8 .cfa: x29 64 +
+STACK CFI 5b3e0 x19: .cfa -48 + ^
+STACK CFI 5b418 x19: x19
+STACK CFI 5b41c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5b420 38 .cfa: sp 0 + .ra: x30
+STACK CFI 5b424 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 5b428 .cfa: x29 32 +
+STACK CFI 5b42c x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 5b450 x19: x19 x20: x20
+STACK CFI 5b454 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5b458 5c .cfa: sp 0 + .ra: x30
+STACK CFI 5b45c .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 5b460 .cfa: x29 48 +
+STACK CFI 5b464 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 5b4ac x19: x19 x20: x20
+STACK CFI 5b4b0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5b4b4 24 .cfa: sp 0 + .ra: x30
+STACK CFI 5b4b8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 5b4bc .cfa: x29 32 +
+STACK CFI 5b4c0 x19: .cfa -16 + ^
+STACK CFI 5b4d0 x19: x19
+STACK CFI 5b4d4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5b4d8 228 .cfa: sp 0 + .ra: x30
+STACK CFI 5b4dc .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 5b4e0 .cfa: x29 64 +
+STACK CFI 5b4e4 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 5b4f0 x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 5b6f4 x19: x19 x20: x20
+STACK CFI 5b6f8 x21: x21 x22: x22
+STACK CFI 5b6fc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5b700 24 .cfa: sp 0 + .ra: x30
+STACK CFI 5b704 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 5b708 .cfa: x29 32 +
+STACK CFI 5b70c x19: .cfa -16 + ^
+STACK CFI 5b71c x19: x19
+STACK CFI 5b720 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 5c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 f4 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI c .cfa: x29 80 +
+STACK CFI 18 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI e4 x23: x23
+STACK CFI e8 x19: x19 x20: x20
+STACK CFI ec x21: x21 x22: x22
+STACK CFI f0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 84 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI c x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 18 x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 78 x19: x19 x20: x20
+STACK CFI 7c x21: x21 x22: x22
+STACK CFI 80 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5b724 e4 .cfa: sp 0 + .ra: x30
+STACK CFI 5b728 .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 5b72c .cfa: x29 160 +
+STACK CFI 5b730 x21: .cfa -128 + ^ x22: .cfa -120 + ^
+STACK CFI 5b740 x19: .cfa -144 + ^ x20: .cfa -136 + ^
+STACK CFI 5b750 x23: .cfa -112 + ^ x24: .cfa -104 + ^
+STACK CFI 5b7f8 x19: x19 x20: x20
+STACK CFI 5b7fc x21: x21 x22: x22
+STACK CFI 5b800 x23: x23 x24: x24
+STACK CFI 5b804 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 124 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI c .cfa: x29 80 +
+STACK CFI 18 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI 114 x19: x19 x20: x20
+STACK CFI 118 x21: x21 x22: x22
+STACK CFI 11c x23: x23
+STACK CFI 120 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 88 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI c x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 1c x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 7c x19: x19 x20: x20
+STACK CFI 80 x21: x21 x22: x22
+STACK CFI 84 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5b808 18c .cfa: sp 0 + .ra: x30
+STACK CFI 5b80c .cfa: sp 288 + .ra: .cfa -280 + ^ x29: .cfa -288 + ^
+STACK CFI 5b810 .cfa: x29 288 +
+STACK CFI 5b814 x19: .cfa -272 + ^ x20: .cfa -264 + ^
+STACK CFI 5b834 x21: .cfa -256 + ^ x22: .cfa -248 + ^ x23: .cfa -240 + ^ x24: .cfa -232 + ^ x25: .cfa -224 + ^
+STACK CFI 5b97c x25: x25
+STACK CFI 5b984 x19: x19 x20: x20
+STACK CFI 5b988 x21: x21 x22: x22
+STACK CFI 5b98c x23: x23 x24: x24
+STACK CFI 5b990 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5b994 1f8 .cfa: sp 0 + .ra: x30
+STACK CFI 5b998 .cfa: sp 272 + .ra: .cfa -264 + ^ x29: .cfa -272 + ^
+STACK CFI 5b99c .cfa: x29 272 +
+STACK CFI 5b9bc v10: .cfa -160 + ^ v11: .cfa -152 + ^ v12: .cfa -144 + ^ v8: .cfa -176 + ^ v9: .cfa -168 + ^ x19: .cfa -256 + ^ x20: .cfa -248 + ^ x21: .cfa -240 + ^ x22: .cfa -232 + ^ x23: .cfa -224 + ^ x24: .cfa -216 + ^ x25: .cfa -208 + ^ x26: .cfa -200 + ^ x27: .cfa -192 + ^ x28: .cfa -184 + ^
+STACK CFI 5bb68 v10: v10 v11: v11
+STACK CFI 5bb6c x19: x19 x20: x20
+STACK CFI 5bb70 v8: v8 v9: v9
+STACK CFI 5bb74 x21: x21 x22: x22
+STACK CFI 5bb78 x23: x23 x24: x24
+STACK CFI 5bb7c x25: x25 x26: x26
+STACK CFI 5bb80 x27: x27 x28: x28
+STACK CFI 5bb84 v12: v12
+STACK CFI 5bb88 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5bb8c 58 .cfa: sp 0 + .ra: x30
+STACK CFI 5bb90 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 5bb94 .cfa: x29 96 +
+STACK CFI 5bb9c x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^
+STACK CFI 5bbd8 x21: x21
+STACK CFI 5bbdc x19: x19 x20: x20
+STACK CFI 5bbe0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5bbe4 48 .cfa: sp 0 + .ra: x30
+STACK CFI 5bbe8 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 5bbf0 .cfa: x29 96 +
+STACK CFI 5bbf4 x19: .cfa -80 + ^ x20: .cfa -72 + ^
+STACK CFI 5bc24 x19: x19 x20: x20
+STACK CFI 5bc28 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5bc2c 9c .cfa: sp 0 + .ra: x30
+STACK CFI 5bc30 .cfa: sp 144 + .ra: .cfa -136 + ^ x29: .cfa -144 + ^
+STACK CFI 5bc34 .cfa: x29 144 +
+STACK CFI 5bc38 x21: .cfa -112 + ^
+STACK CFI 5bc44 x19: .cfa -128 + ^ x20: .cfa -120 + ^
+STACK CFI 5bcbc x21: x21
+STACK CFI 5bcc0 x19: x19 x20: x20
+STACK CFI 5bcc4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5bcc8 6c .cfa: sp 0 + .ra: x30
+STACK CFI 5bccc .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 5bcd0 .cfa: x29 160 +
+STACK CFI 5bcd4 x19: .cfa -144 + ^ x20: .cfa -136 + ^
+STACK CFI 5bcdc x21: .cfa -128 + ^
+STACK CFI 5bd28 x21: x21
+STACK CFI 5bd2c x19: x19 x20: x20
+STACK CFI 5bd30 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5bd34 228 .cfa: sp 0 + .ra: x30
+STACK CFI 5bd38 .cfa: sp 224 + .ra: .cfa -216 + ^ x29: .cfa -224 + ^
+STACK CFI 5bd3c .cfa: x29 224 +
+STACK CFI 5bd40 x21: .cfa -192 + ^ x22: .cfa -184 + ^
+STACK CFI 5bd50 x19: .cfa -208 + ^ x20: .cfa -200 + ^ x23: .cfa -176 + ^ x24: .cfa -168 + ^
+STACK CFI 5bf4c x19: x19 x20: x20
+STACK CFI 5bf50 x21: x21 x22: x22
+STACK CFI 5bf54 x23: x23 x24: x24
+STACK CFI 5bf58 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5bf5c 64 .cfa: sp 0 + .ra: x30
+STACK CFI 5bf60 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 5bf64 .cfa: x29 32 +
+STACK CFI 5bf68 x19: .cfa -16 + ^
+STACK CFI 5bfac x19: x19
+STACK CFI 5bfb0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 5bfb4 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI 5bfb8 x19: x19
+STACK CFI 5bfbc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5bfc0 94 .cfa: sp 0 + .ra: x30
+STACK CFI 5bfc4 .cfa: sp 144 + .ra: .cfa -136 + ^ x29: .cfa -144 + ^
+STACK CFI 5bfc8 .cfa: x29 144 +
+STACK CFI 5bfcc x19: .cfa -128 + ^ x20: .cfa -120 + ^
+STACK CFI 5bfd8 x21: .cfa -112 + ^ x22: .cfa -104 + ^
+STACK CFI 5c048 x19: x19 x20: x20
+STACK CFI 5c04c x21: x21 x22: x22
+STACK CFI 5c050 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5c054 a0 .cfa: sp 0 + .ra: x30
+STACK CFI 5c058 .cfa: sp 176 + .ra: .cfa -168 + ^ x29: .cfa -176 + ^
+STACK CFI 5c05c .cfa: x29 176 +
+STACK CFI 5c060 x19: .cfa -160 + ^ x20: .cfa -152 + ^
+STACK CFI 5c06c x21: .cfa -144 + ^ x22: .cfa -136 + ^
+STACK CFI 5c0e8 x19: x19 x20: x20
+STACK CFI 5c0ec x21: x21 x22: x22
+STACK CFI 5c0f0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 cc .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 10 .cfa: x29 80 +
+STACK CFI 18 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^
+STACK CFI c0 x19: x19 x20: x20
+STACK CFI c4 x21: x21 x22: x22
+STACK CFI c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 240 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 176 + .ra: .cfa -168 + ^ x29: .cfa -176 + ^
+STACK CFI 8 .cfa: x29 176 +
+STACK CFI 1c x19: .cfa -160 + ^ x20: .cfa -152 + ^ x21: .cfa -144 + ^ x22: .cfa -136 + ^ x23: .cfa -128 + ^ x24: .cfa -120 + ^ x25: .cfa -112 + ^ x26: .cfa -104 + ^ x27: .cfa -96 + ^ x28: .cfa -88 + ^
+STACK CFI 228 x19: x19 x20: x20
+STACK CFI 22c x21: x21 x22: x22
+STACK CFI 230 x23: x23 x24: x24
+STACK CFI 234 x25: x25 x26: x26
+STACK CFI 238 x27: x27 x28: x28
+STACK CFI 23c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 6c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 128 + .ra: .cfa -120 + ^ x29: .cfa -128 + ^
+STACK CFI 8 .cfa: x29 128 +
+STACK CFI 10 x19: .cfa -112 + ^ x20: .cfa -104 + ^ x21: .cfa -96 + ^
+STACK CFI 60 x21: x21
+STACK CFI 64 x19: x19 x20: x20
+STACK CFI 68 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5c0f4 314 .cfa: sp 0 + .ra: x30
+STACK CFI 5c0f8 .cfa: sp 112 + .ra: .cfa -104 + ^ x29: .cfa -112 + ^
+STACK CFI 5c0fc .cfa: x29 112 +
+STACK CFI 5c110 x19: .cfa -96 + ^ x20: .cfa -88 + ^ x21: .cfa -80 + ^ x22: .cfa -72 + ^ x23: .cfa -64 + ^ x24: .cfa -56 + ^ x25: .cfa -48 + ^ x26: .cfa -40 + ^ x27: .cfa -32 + ^
+STACK CFI 5c3f0 x27: x27
+STACK CFI 5c3f4 x19: x19 x20: x20
+STACK CFI 5c3f8 x21: x21 x22: x22
+STACK CFI 5c3fc x23: x23 x24: x24
+STACK CFI 5c400 x25: x25 x26: x26
+STACK CFI 5c404 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5c408 bc .cfa: sp 0 + .ra: x30
+STACK CFI 5c40c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 5c410 .cfa: x29 32 +
+STACK CFI 5c414 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 5c4bc x19: x19 x20: x20
+STACK CFI 5c4c0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5c4c4 10c .cfa: sp 0 + .ra: x30
+STACK CFI 5c4c8 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 5c4cc .cfa: x29 64 +
+STACK CFI 5c4d8 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 5c5c0 x19: x19 x20: x20
+STACK CFI 5c5c4 x21: x21 x22: x22
+STACK CFI 5c5c8 x23: x23
+STACK CFI 5c5cc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5c5d0 100 .cfa: sp 0 + .ra: x30
+STACK CFI 5c5d4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 5c5d8 .cfa: x29 64 +
+STACK CFI 5c5e4 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 5c6c0 x19: x19 x20: x20
+STACK CFI 5c6c4 x21: x21 x22: x22
+STACK CFI 5c6c8 x23: x23
+STACK CFI 5c6cc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5c6d0 3fc .cfa: sp 0 + .ra: x30
+STACK CFI 5c6d4 .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 5c6dc .cfa: x29 160 +
+STACK CFI 5c6e8 v10: .cfa -48 + ^ v11: .cfa -40 + ^ v8: .cfa -64 + ^ v9: .cfa -56 + ^ x19: .cfa -144 + ^ x20: .cfa -136 + ^
+STACK CFI 5c6fc x21: .cfa -128 + ^ x22: .cfa -120 + ^ x23: .cfa -112 + ^ x24: .cfa -104 + ^ x25: .cfa -96 + ^ x26: .cfa -88 + ^ x27: .cfa -80 + ^ x28: .cfa -72 + ^
+STACK CFI 5caac v8: v8 v9: v9
+STACK CFI 5cab0 x19: x19 x20: x20
+STACK CFI 5cab4 v10: v10 v11: v11
+STACK CFI 5cab8 x21: x21 x22: x22
+STACK CFI 5cabc x23: x23 x24: x24
+STACK CFI 5cac0 x25: x25 x26: x26
+STACK CFI 5cac4 x27: x27 x28: x28
+STACK CFI 5cac8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5cacc cc .cfa: sp 0 + .ra: x30
+STACK CFI 5cad4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 5cad8 .cfa: x29 48 +
+STACK CFI 5cae4 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 5cb8c x21: x21
+STACK CFI 5cb90 x19: x19 x20: x20
+STACK CFI 5cb94 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5cb98 70 .cfa: sp 0 + .ra: x30
+STACK CFI 5cb9c .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 5cba0 .cfa: x29 160 +
+STACK CFI 5cba8 x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^
+STACK CFI 5cbfc x19: x19 x20: x20
+STACK CFI 5cc00 x21: x21 x22: x22
+STACK CFI 5cc04 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5cc08 70 .cfa: sp 0 + .ra: x30
+STACK CFI 5cc0c .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 5cc10 .cfa: x29 160 +
+STACK CFI 5cc18 x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^
+STACK CFI 5cc6c x19: x19 x20: x20
+STACK CFI 5cc70 x21: x21 x22: x22
+STACK CFI 5cc74 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5cc78 88 .cfa: sp 0 + .ra: x30
+STACK CFI 5cc7c .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 5cc80 .cfa: x29 160 +
+STACK CFI 5cc84 x19: .cfa -144 + ^ x20: .cfa -136 + ^
+STACK CFI 5cc90 x21: .cfa -128 + ^ x22: .cfa -120 + ^
+STACK CFI 5ccf4 x19: x19 x20: x20
+STACK CFI 5ccf8 x21: x21 x22: x22
+STACK CFI 5ccfc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5cd00 ac .cfa: sp 0 + .ra: x30
+STACK CFI 5cd04 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 5cd0c .cfa: x29 80 +
+STACK CFI 5cd10 x19: .cfa -64 + ^ x20: .cfa -56 + ^
+STACK CFI 5cda4 x19: x19 x20: x20
+STACK CFI 5cda8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5cdac 18c .cfa: sp 0 + .ra: x30
+STACK CFI 5cdb4 .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 5cdb8 .cfa: x29 160 +
+STACK CFI 5cdc4 x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^
+STACK CFI 5cf2c x19: x19 x20: x20
+STACK CFI 5cf30 x21: x21 x22: x22
+STACK CFI 5cf34 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5cf38 2a0 .cfa: sp 0 + .ra: x30
+STACK CFI 5cf40 .cfa: sp 864 +
+STACK CFI 5cf48 .cfa: sp 960 + .ra: .cfa -952 + ^ x29: .cfa -960 + ^
+STACK CFI 5cf4c .cfa: x29 960 +
+STACK CFI 5cf5c x21: .cfa -928 + ^ x22: .cfa -920 + ^
+STACK CFI 5cf74 x19: .cfa -944 + ^ x20: .cfa -936 + ^ x23: .cfa -912 + ^ x24: .cfa -904 + ^ x25: .cfa -896 + ^ x26: .cfa -888 + ^ x27: .cfa -880 + ^ x28: .cfa -872 + ^
+STACK CFI 5d1bc x19: x19 x20: x20
+STACK CFI 5d1c0 x21: x21 x22: x22
+STACK CFI 5d1c4 x23: x23 x24: x24
+STACK CFI 5d1c8 x25: x25 x26: x26
+STACK CFI 5d1cc x27: x27 x28: x28
+STACK CFI 5d1d0 .cfa: sp 864 + .ra: .ra x29: x29
+STACK CFI 5d1d4 .cfa: sp 768 +
+STACK CFI INIT 5d1d8 e0 .cfa: sp 0 + .ra: x30
+STACK CFI 5d1dc .cfa: sp 224 + .ra: .cfa -216 + ^ x29: .cfa -224 + ^
+STACK CFI 5d1e0 .cfa: x29 224 +
+STACK CFI 5d1ec x19: .cfa -208 + ^ x20: .cfa -200 + ^ x21: .cfa -192 + ^ x22: .cfa -184 + ^ x23: .cfa -176 + ^ x24: .cfa -168 + ^
+STACK CFI 5d2a8 x19: x19 x20: x20
+STACK CFI 5d2ac x21: x21 x22: x22
+STACK CFI 5d2b0 x23: x23 x24: x24
+STACK CFI 5d2b4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5d2b8 54 .cfa: sp 0 + .ra: x30
+STACK CFI 5d2bc .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 5d2c0 .cfa: x29 32 +
+STACK CFI 5d2c4 x19: .cfa -16 + ^
+STACK CFI 5d304 x19: x19
+STACK CFI 5d308 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5d30c 8c .cfa: sp 0 + .ra: x30
+STACK CFI 5d310 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 5d314 .cfa: x29 80 +
+STACK CFI 5d318 x21: .cfa -48 + ^ x22: .cfa -40 + ^
+STACK CFI 5d328 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x23: .cfa -32 + ^
+STACK CFI 5d388 x23: x23
+STACK CFI 5d38c x19: x19 x20: x20
+STACK CFI 5d390 x21: x21 x22: x22
+STACK CFI 5d394 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5d398 38 .cfa: sp 0 + .ra: x30
+STACK CFI 5d39c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 5d3a0 .cfa: x29 32 +
+STACK CFI 5d3a4 x19: .cfa -16 + ^
+STACK CFI 5d3c8 x19: x19
+STACK CFI 5d3cc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5d3d0 374 .cfa: sp 0 + .ra: x30
+STACK CFI 5d3d4 .cfa: sp 144 + .ra: .cfa -136 + ^ x29: .cfa -144 + ^
+STACK CFI 5d3d8 .cfa: x29 144 +
+STACK CFI 5d3e0 x23: .cfa -96 + ^ x24: .cfa -88 + ^ x25: .cfa -80 + ^ x26: .cfa -72 + ^
+STACK CFI 5d3f8 x19: .cfa -128 + ^ x20: .cfa -120 + ^ x21: .cfa -112 + ^ x22: .cfa -104 + ^ x27: .cfa -64 + ^
+STACK CFI 5d72c x19: x19 x20: x20
+STACK CFI 5d730 x21: x21 x22: x22
+STACK CFI 5d734 x23: x23 x24: x24
+STACK CFI 5d738 x25: x25 x26: x26
+STACK CFI 5d73c x27: x27
+STACK CFI 5d740 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 130 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 144 + .ra: .cfa -136 + ^ x29: .cfa -144 + ^
+STACK CFI 10 .cfa: x29 144 +
+STACK CFI 18 x19: .cfa -128 + ^ x20: .cfa -120 + ^ x21: .cfa -112 + ^
+STACK CFI 124 x21: x21
+STACK CFI 128 x19: x19 x20: x20
+STACK CFI 12c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 b4 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 416 + .ra: .cfa -408 + ^ x29: .cfa -416 + ^
+STACK CFI c .cfa: x29 416 +
+STACK CFI 1c x19: .cfa -400 + ^ x20: .cfa -392 + ^ x21: .cfa -384 + ^ x22: .cfa -376 + ^ x23: .cfa -368 + ^ x24: .cfa -360 + ^ x25: .cfa -352 + ^
+STACK CFI 9c x25: x25
+STACK CFI a4 x19: x19 x20: x20
+STACK CFI a8 x21: x21 x22: x22
+STACK CFI ac x23: x23 x24: x24
+STACK CFI b0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 44 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^
+STACK CFI 3c x19: x19
+STACK CFI 40 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 48 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI c x19: .cfa -64 + ^ x20: .cfa -56 + ^
+STACK CFI 40 x19: x19 x20: x20
+STACK CFI 44 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 1d8 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 8 .cfa: x29 160 +
+STACK CFI 14 x19: .cfa -144 + ^ x20: .cfa -136 + ^ x23: .cfa -112 + ^ x24: .cfa -104 + ^
+STACK CFI 28 x25: .cfa -96 + ^ x26: .cfa -88 + ^ x27: .cfa -80 + ^
+STACK CFI 30 x21: .cfa -128 + ^ x22: .cfa -120 + ^
+STACK CFI 1c0 x27: x27
+STACK CFI 1c4 x19: x19 x20: x20
+STACK CFI 1c8 x21: x21 x22: x22
+STACK CFI 1cc x23: x23 x24: x24
+STACK CFI 1d0 x25: x25 x26: x26
+STACK CFI 1d4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 48 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 10 .cfa: x29 48 +
+STACK CFI 1c x19: .cfa -32 + ^
+STACK CFI 40 x19: x19
+STACK CFI 44 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 48 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 10 .cfa: x29 48 +
+STACK CFI 1c x19: .cfa -32 + ^
+STACK CFI 40 x19: x19
+STACK CFI 44 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 48 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI c x19: .cfa -64 + ^ x20: .cfa -56 + ^
+STACK CFI 40 x19: x19 x20: x20
+STACK CFI 44 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 54 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI c x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 14 x21: .cfa -32 + ^
+STACK CFI 44 x21: x21
+STACK CFI 4c x19: x19 x20: x20
+STACK CFI 50 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 374 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 144 + .ra: .cfa -136 + ^ x29: .cfa -144 + ^
+STACK CFI 8 .cfa: x29 144 +
+STACK CFI 10 x23: .cfa -96 + ^ x24: .cfa -88 + ^ x25: .cfa -80 + ^ x26: .cfa -72 + ^
+STACK CFI 28 x19: .cfa -128 + ^ x20: .cfa -120 + ^ x21: .cfa -112 + ^ x22: .cfa -104 + ^ x27: .cfa -64 + ^
+STACK CFI 35c x19: x19 x20: x20
+STACK CFI 360 x21: x21 x22: x22
+STACK CFI 364 x23: x23 x24: x24
+STACK CFI 368 x25: x25 x26: x26
+STACK CFI 36c x27: x27
+STACK CFI 370 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 5d744 150 .cfa: sp 0 + .ra: x30
+STACK CFI 5d748 .cfa: sp 496 + .ra: .cfa -488 + ^ x29: .cfa -496 + ^
+STACK CFI 5d74c .cfa: x29 496 +
+STACK CFI 5d754 x19: .cfa -480 + ^ x20: .cfa -472 + ^ x27: .cfa -416 + ^
+STACK CFI 5d764 x21: .cfa -464 + ^ x22: .cfa -456 + ^ x23: .cfa -448 + ^ x24: .cfa -440 + ^ x25: .cfa -432 + ^ x26: .cfa -424 + ^
+STACK CFI 5d87c x27: x27
+STACK CFI 5d880 x19: x19 x20: x20
+STACK CFI 5d884 x21: x21 x22: x22
+STACK CFI 5d888 x23: x23 x24: x24
+STACK CFI 5d88c x25: x25 x26: x26
+STACK CFI 5d890 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5d894 47c .cfa: sp 0 + .ra: x30
+STACK CFI 5d898 .cfa: sp 400 + .ra: .cfa -392 + ^ x29: .cfa -400 + ^
+STACK CFI 5d89c .cfa: x29 400 +
+STACK CFI 5d8a4 v8: .cfa -304 + ^ v9: .cfa -296 + ^ x21: .cfa -368 + ^ x22: .cfa -360 + ^
+STACK CFI 5d8b8 v10: .cfa -288 + ^ v11: .cfa -280 + ^ x19: .cfa -384 + ^ x20: .cfa -376 + ^
+STACK CFI 5d8c4 x23: .cfa -352 + ^ x24: .cfa -344 + ^ x25: .cfa -336 + ^ x26: .cfa -328 + ^
+STACK CFI 5d8f0 v12: .cfa -272 + ^ x27: .cfa -320 + ^ x28: .cfa -312 + ^
+STACK CFI 5dcec v8: v8 v9: v9
+STACK CFI 5dcf0 x19: x19 x20: x20
+STACK CFI 5dcf4 x21: x21 x22: x22
+STACK CFI 5dcf8 v10: v10 v11: v11
+STACK CFI 5dcfc x23: x23 x24: x24
+STACK CFI 5dd00 x25: x25 x26: x26
+STACK CFI 5dd04 x27: x27 x28: x28
+STACK CFI 5dd08 v12: v12
+STACK CFI 5dd0c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5dd10 2e4 .cfa: sp 0 + .ra: x30
+STACK CFI 5dd14 .cfa: sp 240 + .ra: .cfa -232 + ^ x29: .cfa -240 + ^
+STACK CFI 5dd18 .cfa: x29 240 +
+STACK CFI 5dd20 x19: .cfa -224 + ^ x20: .cfa -216 + ^ x21: .cfa -208 + ^ x22: .cfa -200 + ^
+STACK CFI 5dd2c x23: .cfa -192 + ^ x24: .cfa -184 + ^
+STACK CFI 5dd48 x25: .cfa -176 + ^
+STACK CFI 5dfe0 x25: x25
+STACK CFI 5dfe4 x19: x19 x20: x20
+STACK CFI 5dfe8 x21: x21 x22: x22
+STACK CFI 5dfec x23: x23 x24: x24
+STACK CFI 5dff0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5dff4 3ac .cfa: sp 0 + .ra: x30
+STACK CFI 5dff8 .cfa: sp 240 + .ra: .cfa -232 + ^ x29: .cfa -240 + ^
+STACK CFI 5dffc .cfa: x29 240 +
+STACK CFI 5e004 x19: .cfa -224 + ^ x20: .cfa -216 + ^ x21: .cfa -208 + ^ x22: .cfa -200 + ^
+STACK CFI 5e010 x23: .cfa -192 + ^ x24: .cfa -184 + ^
+STACK CFI 5e02c x25: .cfa -176 + ^
+STACK CFI 5e38c x25: x25
+STACK CFI 5e390 x19: x19 x20: x20
+STACK CFI 5e394 x21: x21 x22: x22
+STACK CFI 5e398 x23: x23 x24: x24
+STACK CFI 5e39c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5e3a0 108 .cfa: sp 0 + .ra: x30
+STACK CFI 5e3a4 .cfa: sp 496 + .ra: .cfa -488 + ^ x29: .cfa -496 + ^
+STACK CFI 5e3a8 .cfa: x29 496 +
+STACK CFI 5e3b0 x19: .cfa -480 + ^ x20: .cfa -472 + ^ x23: .cfa -448 + ^ x24: .cfa -440 + ^
+STACK CFI 5e3c8 x21: .cfa -464 + ^ x22: .cfa -456 + ^
+STACK CFI 5e498 x19: x19 x20: x20
+STACK CFI 5e49c x21: x21 x22: x22
+STACK CFI 5e4a0 x23: x23 x24: x24
+STACK CFI 5e4a4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5e4a8 c0 .cfa: sp 0 + .ra: x30
+STACK CFI 5e4ac .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 5e4b0 .cfa: x29 80 +
+STACK CFI 5e4b8 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI 5e558 x21: x21
+STACK CFI 5e560 x19: x19 x20: x20
+STACK CFI 5e564 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5e568 5c .cfa: sp 0 + .ra: x30
+STACK CFI 5e56c .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 5e570 .cfa: x29 64 +
+STACK CFI 5e574 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 5e57c x21: .cfa -32 + ^
+STACK CFI 5e5b4 x21: x21
+STACK CFI 5e5bc x19: x19 x20: x20
+STACK CFI 5e5c0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5e5c4 d4 .cfa: sp 0 + .ra: x30
+STACK CFI 5e5c8 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 5e5cc .cfa: x29 96 +
+STACK CFI 5e5d0 x19: .cfa -80 + ^ x20: .cfa -72 + ^
+STACK CFI 5e690 x19: x19 x20: x20
+STACK CFI 5e694 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5e698 23c .cfa: sp 0 + .ra: x30
+STACK CFI 5e69c .cfa: sp 176 + .ra: .cfa -168 + ^ x29: .cfa -176 + ^
+STACK CFI 5e6a4 .cfa: x29 176 +
+STACK CFI 5e6a8 x19: .cfa -160 + ^ x20: .cfa -152 + ^
+STACK CFI 5e6c0 x21: .cfa -144 + ^ x22: .cfa -136 + ^ x23: .cfa -128 + ^ x24: .cfa -120 + ^
+STACK CFI 5e8c4 x19: x19 x20: x20
+STACK CFI 5e8c8 x21: x21 x22: x22
+STACK CFI 5e8cc x23: x23 x24: x24
+STACK CFI 5e8d0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5e8d4 bc .cfa: sp 0 + .ra: x30
+STACK CFI 5e8dc .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 5e8e0 .cfa: x29 160 +
+STACK CFI 5e8e8 x19: .cfa -144 + ^ x20: .cfa -136 + ^
+STACK CFI 5e988 x19: x19 x20: x20
+STACK CFI 5e98c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5e990 11c .cfa: sp 0 + .ra: x30
+STACK CFI 5e994 .cfa: sp 384 + .ra: .cfa -376 + ^ x29: .cfa -384 + ^
+STACK CFI 5e998 .cfa: x29 384 +
+STACK CFI 5e99c x23: .cfa -336 + ^ x24: .cfa -328 + ^
+STACK CFI 5e9a4 x25: .cfa -320 + ^
+STACK CFI 5e9b4 x19: .cfa -368 + ^ x20: .cfa -360 + ^ x21: .cfa -352 + ^ x22: .cfa -344 + ^
+STACK CFI 5ea98 x25: x25
+STACK CFI 5ea9c x19: x19 x20: x20
+STACK CFI 5eaa0 x21: x21 x22: x22
+STACK CFI 5eaa4 x23: x23 x24: x24
+STACK CFI 5eaa8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5eaac 11c .cfa: sp 0 + .ra: x30
+STACK CFI 5eab0 .cfa: sp 384 + .ra: .cfa -376 + ^ x29: .cfa -384 + ^
+STACK CFI 5eab4 .cfa: x29 384 +
+STACK CFI 5eab8 x25: .cfa -320 + ^
+STACK CFI 5eacc x19: .cfa -368 + ^ x20: .cfa -360 + ^ x21: .cfa -352 + ^ x22: .cfa -344 + ^ x23: .cfa -336 + ^ x24: .cfa -328 + ^
+STACK CFI 5ebb4 x25: x25
+STACK CFI 5ebb8 x19: x19 x20: x20
+STACK CFI 5ebbc x21: x21 x22: x22
+STACK CFI 5ebc0 x23: x23 x24: x24
+STACK CFI 5ebc4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5ebc8 124 .cfa: sp 0 + .ra: x30
+STACK CFI 5ebcc .cfa: sp 384 + .ra: .cfa -376 + ^ x29: .cfa -384 + ^
+STACK CFI 5ebd0 .cfa: x29 384 +
+STACK CFI 5ebd4 x25: .cfa -320 + ^
+STACK CFI 5ebe8 x19: .cfa -368 + ^ x20: .cfa -360 + ^ x21: .cfa -352 + ^ x22: .cfa -344 + ^ x23: .cfa -336 + ^ x24: .cfa -328 + ^
+STACK CFI 5ecd8 x25: x25
+STACK CFI 5ecdc x19: x19 x20: x20
+STACK CFI 5ece0 x21: x21 x22: x22
+STACK CFI 5ece4 x23: x23 x24: x24
+STACK CFI 5ece8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 5c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 336 + .ra: .cfa -328 + ^ x29: .cfa -336 + ^
+STACK CFI c .cfa: x29 336 +
+STACK CFI 10 x19: .cfa -320 + ^ x20: .cfa -312 + ^
+STACK CFI 18 x21: .cfa -304 + ^
+STACK CFI 4c x21: x21
+STACK CFI 54 x19: x19 x20: x20
+STACK CFI 58 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 10c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 208 + .ra: .cfa -200 + ^ x29: .cfa -208 + ^
+STACK CFI c .cfa: x29 208 +
+STACK CFI 18 x19: .cfa -192 + ^ x20: .cfa -184 + ^ x21: .cfa -176 + ^ x22: .cfa -168 + ^ x23: .cfa -160 + ^
+STACK CFI fc x23: x23
+STACK CFI 100 x19: x19 x20: x20
+STACK CFI 104 x21: x21 x22: x22
+STACK CFI 108 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 10c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 208 + .ra: .cfa -200 + ^ x29: .cfa -208 + ^
+STACK CFI c .cfa: x29 208 +
+STACK CFI 18 x19: .cfa -192 + ^ x20: .cfa -184 + ^ x21: .cfa -176 + ^ x22: .cfa -168 + ^ x23: .cfa -160 + ^
+STACK CFI fc x23: x23
+STACK CFI 100 x19: x19 x20: x20
+STACK CFI 104 x21: x21 x22: x22
+STACK CFI 108 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 10c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 208 + .ra: .cfa -200 + ^ x29: .cfa -208 + ^
+STACK CFI c .cfa: x29 208 +
+STACK CFI 18 x19: .cfa -192 + ^ x20: .cfa -184 + ^ x21: .cfa -176 + ^ x22: .cfa -168 + ^ x23: .cfa -160 + ^
+STACK CFI fc x23: x23
+STACK CFI 100 x19: x19 x20: x20
+STACK CFI 104 x21: x21 x22: x22
+STACK CFI 108 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 10c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 208 + .ra: .cfa -200 + ^ x29: .cfa -208 + ^
+STACK CFI c .cfa: x29 208 +
+STACK CFI 18 x19: .cfa -192 + ^ x20: .cfa -184 + ^ x21: .cfa -176 + ^ x22: .cfa -168 + ^ x23: .cfa -160 + ^
+STACK CFI fc x23: x23
+STACK CFI 100 x19: x19 x20: x20
+STACK CFI 104 x21: x21 x22: x22
+STACK CFI 108 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 10c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 208 + .ra: .cfa -200 + ^ x29: .cfa -208 + ^
+STACK CFI c .cfa: x29 208 +
+STACK CFI 18 x19: .cfa -192 + ^ x20: .cfa -184 + ^ x21: .cfa -176 + ^ x22: .cfa -168 + ^ x23: .cfa -160 + ^
+STACK CFI fc x23: x23
+STACK CFI 100 x19: x19 x20: x20
+STACK CFI 104 x21: x21 x22: x22
+STACK CFI 108 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5ecec 1a0 .cfa: sp 0 + .ra: x30
+STACK CFI 5ecf0 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 5ecf4 .cfa: x29 96 +
+STACK CFI 5ecf8 x19: .cfa -80 + ^ x20: .cfa -72 + ^
+STACK CFI 5ed04 x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^
+STACK CFI 5ee78 x23: x23
+STACK CFI 5ee80 x21: x21 x22: x22
+STACK CFI 5ee84 x19: x19 x20: x20
+STACK CFI 5ee88 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5ee90 63c .cfa: sp 0 + .ra: x30
+STACK CFI 5ee94 .cfa: sp 192 + .ra: .cfa -184 + ^ x29: .cfa -192 + ^
+STACK CFI 5ee98 .cfa: x29 192 +
+STACK CFI 5eea0 v8: .cfa -96 + ^ v9: .cfa -88 + ^ x23: .cfa -144 + ^ x24: .cfa -136 + ^
+STACK CFI 5eeb8 x19: .cfa -176 + ^ x20: .cfa -168 + ^ x21: .cfa -160 + ^ x22: .cfa -152 + ^ x25: .cfa -128 + ^ x26: .cfa -120 + ^ x27: .cfa -112 + ^ x28: .cfa -104 + ^
+STACK CFI 5f4b0 v8: v8 v9: v9
+STACK CFI 5f4b4 x19: x19 x20: x20
+STACK CFI 5f4b8 x21: x21 x22: x22
+STACK CFI 5f4bc x23: x23 x24: x24
+STACK CFI 5f4c0 x25: x25 x26: x26
+STACK CFI 5f4c4 x27: x27 x28: x28
+STACK CFI 5f4c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 55018 48 .cfa: sp 0 + .ra: x30
+STACK CFI 5501c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 55020 .cfa: x29 32 +
+STACK CFI 55024 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 55058 x19: x19 x20: x20
+STACK CFI 5505c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 238 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 128 + .ra: .cfa -120 + ^ x29: .cfa -128 + ^
+STACK CFI 8 .cfa: x29 128 +
+STACK CFI c x21: .cfa -96 + ^ x22: .cfa -88 + ^
+STACK CFI 24 x19: .cfa -112 + ^ x20: .cfa -104 + ^ x23: .cfa -80 + ^ x24: .cfa -72 + ^ x25: .cfa -64 + ^ x26: .cfa -56 + ^ x27: .cfa -48 + ^ x28: .cfa -40 + ^
+STACK CFI 220 x23: x23 x24: x24
+STACK CFI 224 x19: x19 x20: x20
+STACK CFI 228 x21: x21 x22: x22
+STACK CFI 22c x25: x25 x26: x26
+STACK CFI 230 x27: x27 x28: x28
+STACK CFI 234 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5f4d8 60 .cfa: sp 0 + .ra: x30
+STACK CFI 5f4dc .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 5f4e4 .cfa: x29 48 +
+STACK CFI 5f4e8 x19: .cfa -32 + ^
+STACK CFI 5f530 x19: x19
+STACK CFI 5f534 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 5f538 58 .cfa: sp 0 + .ra: x30
+STACK CFI 5f53c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 5f540 .cfa: x29 32 +
+STACK CFI 5f544 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 5f588 x19: x19 x20: x20
+STACK CFI 5f58c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 2c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 24 x19: x19 x20: x20
+STACK CFI 28 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 238 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 128 + .ra: .cfa -120 + ^ x29: .cfa -128 + ^
+STACK CFI c .cfa: x29 128 +
+STACK CFI 10 x21: .cfa -96 + ^ x22: .cfa -88 + ^
+STACK CFI 28 x19: .cfa -112 + ^ x20: .cfa -104 + ^ x23: .cfa -80 + ^ x24: .cfa -72 + ^ x25: .cfa -64 + ^ x26: .cfa -56 + ^ x27: .cfa -48 + ^ x28: .cfa -40 + ^
+STACK CFI 220 x23: x23 x24: x24
+STACK CFI 224 x19: x19 x20: x20
+STACK CFI 228 x21: x21 x22: x22
+STACK CFI 22c x25: x25 x26: x26
+STACK CFI 230 x27: x27 x28: x28
+STACK CFI 234 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 248 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 256 + .ra: .cfa -248 + ^ x29: .cfa -256 + ^
+STACK CFI 8 .cfa: x29 256 +
+STACK CFI c x21: .cfa -224 + ^ x22: .cfa -216 + ^
+STACK CFI 28 x19: .cfa -240 + ^ x20: .cfa -232 + ^ x23: .cfa -208 + ^ x24: .cfa -200 + ^ x25: .cfa -192 + ^ x26: .cfa -184 + ^ x27: .cfa -176 + ^
+STACK CFI 230 x19: x19 x20: x20
+STACK CFI 234 x21: x21 x22: x22
+STACK CFI 238 x23: x23 x24: x24
+STACK CFI 23c x25: x25 x26: x26
+STACK CFI 240 x27: x27
+STACK CFI 244 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 a8 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 112 + .ra: .cfa -104 + ^ x29: .cfa -112 + ^
+STACK CFI 8 .cfa: x29 112 +
+STACK CFI c x19: .cfa -96 + ^ x20: .cfa -88 + ^
+STACK CFI 14 x21: .cfa -80 + ^
+STACK CFI 9c x21: x21
+STACK CFI a0 x19: x19 x20: x20
+STACK CFI a4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 64 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 8 .cfa: x29 160 +
+STACK CFI 10 x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^
+STACK CFI 58 x21: x21
+STACK CFI 5c x19: x19 x20: x20
+STACK CFI 60 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 2c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^
+STACK CFI 24 x19: x19
+STACK CFI 28 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 8c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 176 + .ra: .cfa -168 + ^ x29: .cfa -176 + ^
+STACK CFI 8 .cfa: x29 176 +
+STACK CFI c x19: .cfa -160 + ^ x20: .cfa -152 + ^
+STACK CFI 18 x21: .cfa -144 + ^ x22: .cfa -136 + ^
+STACK CFI 80 x19: x19 x20: x20
+STACK CFI 84 x21: x21 x22: x22
+STACK CFI 88 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5f590 244 .cfa: sp 0 + .ra: x30
+STACK CFI 5f594 .cfa: sp 128 + .ra: .cfa -120 + ^ x29: .cfa -128 + ^
+STACK CFI 5f598 .cfa: x29 128 +
+STACK CFI 5f59c x21: .cfa -96 + ^ x22: .cfa -88 + ^
+STACK CFI 5f5ac v8: .cfa -32 + ^
+STACK CFI 5f5c0 x25: .cfa -64 + ^ x26: .cfa -56 + ^
+STACK CFI 5f5dc x19: .cfa -112 + ^ x20: .cfa -104 + ^ x23: .cfa -80 + ^ x24: .cfa -72 + ^ x27: .cfa -48 + ^ x28: .cfa -40 + ^
+STACK CFI 5f7b8 x23: x23 x24: x24
+STACK CFI 5f7bc x19: x19 x20: x20
+STACK CFI 5f7c0 x21: x21 x22: x22
+STACK CFI 5f7c4 x25: x25 x26: x26
+STACK CFI 5f7c8 x27: x27 x28: x28
+STACK CFI 5f7cc v8: v8
+STACK CFI 5f7d0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5f7d4 98 .cfa: sp 0 + .ra: x30
+STACK CFI 5f7d8 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 5f7dc .cfa: x29 64 +
+STACK CFI 5f7e0 x19: .cfa -48 + ^
+STACK CFI 5f864 x19: x19
+STACK CFI 5f868 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5f86c 88 .cfa: sp 0 + .ra: x30
+STACK CFI 5f870 .cfa: sp 176 + .ra: .cfa -168 + ^ x29: .cfa -176 + ^
+STACK CFI 5f874 .cfa: x29 176 +
+STACK CFI 5f878 x19: .cfa -160 + ^ x20: .cfa -152 + ^
+STACK CFI 5f884 x21: .cfa -144 + ^ x22: .cfa -136 + ^
+STACK CFI 5f8e8 x19: x19 x20: x20
+STACK CFI 5f8ec x21: x21 x22: x22
+STACK CFI 5f8f0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5f8f4 148 .cfa: sp 0 + .ra: x30
+STACK CFI 5f8f8 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 5f8fc .cfa: x29 96 +
+STACK CFI 5f90c x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^ x25: .cfa -32 + ^
+STACK CFI 5fa28 x19: x19 x20: x20
+STACK CFI 5fa2c x21: x21 x22: x22
+STACK CFI 5fa30 x23: x23 x24: x24
+STACK CFI 5fa34 x25: x25
+STACK CFI 5fa38 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5fa3c 1a4 .cfa: sp 0 + .ra: x30
+STACK CFI 5fa40 .cfa: sp 272 + .ra: .cfa -264 + ^ x29: .cfa -272 + ^
+STACK CFI 5fa44 .cfa: x29 272 +
+STACK CFI 5fa58 x19: .cfa -256 + ^ x20: .cfa -248 + ^ x21: .cfa -240 + ^ x22: .cfa -232 + ^ x23: .cfa -224 + ^ x24: .cfa -216 + ^ x25: .cfa -208 + ^ x26: .cfa -200 + ^ x27: .cfa -192 + ^
+STACK CFI 5fbc8 x19: x19 x20: x20
+STACK CFI 5fbcc x21: x21 x22: x22
+STACK CFI 5fbd0 x23: x23 x24: x24
+STACK CFI 5fbd4 x25: x25 x26: x26
+STACK CFI 5fbd8 x27: x27
+STACK CFI 5fbdc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5fbe0 16c .cfa: sp 0 + .ra: x30
+STACK CFI 5fbe4 .cfa: sp 208 + .ra: .cfa -200 + ^ x29: .cfa -208 + ^
+STACK CFI 5fbec .cfa: x29 208 +
+STACK CFI 5fbf0 x19: .cfa -192 + ^ x20: .cfa -184 + ^
+STACK CFI 5fc00 x21: .cfa -176 + ^ x22: .cfa -168 + ^ x25: .cfa -144 + ^ x26: .cfa -136 + ^
+STACK CFI 5fc24 x23: .cfa -160 + ^ x24: .cfa -152 + ^
+STACK CFI 5fd38 x19: x19 x20: x20
+STACK CFI 5fd3c x21: x21 x22: x22
+STACK CFI 5fd40 x23: x23 x24: x24
+STACK CFI 5fd44 x25: x25 x26: x26
+STACK CFI 5fd48 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 5c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 5c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 124 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI 10 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 38 x19: x19 x20: x20
+STACK CFI 3c x21: x21 x22: x22
+STACK CFI 40 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 44 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^ x29: .cfa -48 + ^
+STACK CFI INIT 5fd4c dc .cfa: sp 0 + .ra: x30
+STACK CFI 5fd50 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 5fd58 .cfa: x29 64 +
+STACK CFI 5fd60 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 5fe1c x19: x19 x20: x20
+STACK CFI 5fe20 x21: x21 x22: x22
+STACK CFI 5fe24 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5fe28 fc .cfa: sp 0 + .ra: x30
+STACK CFI 5fe2c .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 5fe30 .cfa: x29 96 +
+STACK CFI 5fe3c x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^
+STACK CFI 5ff14 x19: x19 x20: x20
+STACK CFI 5ff18 x21: x21 x22: x22
+STACK CFI 5ff1c x23: x23
+STACK CFI 5ff20 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5ff24 2d4 .cfa: sp 0 + .ra: x30
+STACK CFI 5ff28 .cfa: sp 112 + .ra: .cfa -104 + ^ x29: .cfa -112 + ^
+STACK CFI 5ff2c .cfa: x29 112 +
+STACK CFI 5ff3c x19: .cfa -96 + ^ x20: .cfa -88 + ^ x21: .cfa -80 + ^ x22: .cfa -72 + ^ x23: .cfa -64 + ^ x24: .cfa -56 + ^ x25: .cfa -48 + ^
+STACK CFI 601e4 x25: x25
+STACK CFI 601e8 x19: x19 x20: x20
+STACK CFI 601ec x21: x21 x22: x22
+STACK CFI 601f0 x23: x23 x24: x24
+STACK CFI 601f4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 601f8 c8 .cfa: sp 0 + .ra: x30
+STACK CFI 601fc .cfa: sp 144 + .ra: .cfa -136 + ^ x29: .cfa -144 + ^
+STACK CFI 60200 .cfa: x29 144 +
+STACK CFI 6020c x19: .cfa -128 + ^ x20: .cfa -120 + ^ x21: .cfa -112 + ^ x22: .cfa -104 + ^ x23: .cfa -96 + ^
+STACK CFI 602b0 x23: x23
+STACK CFI 602b4 x19: x19 x20: x20
+STACK CFI 602b8 x21: x21 x22: x22
+STACK CFI 602bc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 602c0 1b4 .cfa: sp 0 + .ra: x30
+STACK CFI 602c4 .cfa: sp 224 + .ra: .cfa -216 + ^ x29: .cfa -224 + ^
+STACK CFI 602c8 .cfa: x29 224 +
+STACK CFI 602cc x23: .cfa -176 + ^ x24: .cfa -168 + ^
+STACK CFI 602dc v8: .cfa -128 + ^
+STACK CFI 602f4 x19: .cfa -208 + ^ x20: .cfa -200 + ^ x21: .cfa -192 + ^ x22: .cfa -184 + ^ x25: .cfa -160 + ^ x26: .cfa -152 + ^ x27: .cfa -144 + ^ x28: .cfa -136 + ^
+STACK CFI 60458 x19: x19 x20: x20
+STACK CFI 6045c x21: x21 x22: x22
+STACK CFI 60460 x23: x23 x24: x24
+STACK CFI 60464 x25: x25 x26: x26
+STACK CFI 60468 x27: x27 x28: x28
+STACK CFI 6046c v8: v8
+STACK CFI 60470 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 60474 554 .cfa: sp 0 + .ra: x30
+STACK CFI 60478 .cfa: sp 432 +
+STACK CFI 6047c .cfa: sp 592 + .ra: .cfa -584 + ^ x29: .cfa -592 + ^
+STACK CFI 60480 .cfa: x29 592 +
+STACK CFI 60484 v8: .cfa -496 + ^ v9: .cfa -488 + ^
+STACK CFI 6048c v10: .cfa -480 + ^ v11: .cfa -472 + ^
+STACK CFI 60498 v12: .cfa -464 + ^ v13: .cfa -456 + ^
+STACK CFI 604a4 v14: .cfa -448 + ^ v15: .cfa -440 + ^ x23: .cfa -544 + ^ x24: .cfa -536 + ^
+STACK CFI 604bc x19: .cfa -576 + ^ x20: .cfa -568 + ^ x21: .cfa -560 + ^ x22: .cfa -552 + ^ x25: .cfa -528 + ^ x26: .cfa -520 + ^ x27: .cfa -512 + ^ x28: .cfa -504 + ^
+STACK CFI 60998 v8: v8 v9: v9
+STACK CFI 609a0 x19: x19 x20: x20
+STACK CFI 609a4 v10: v10 v11: v11
+STACK CFI 609a8 x21: x21 x22: x22
+STACK CFI 609ac v12: v12 v13: v13
+STACK CFI 609b0 x23: x23 x24: x24
+STACK CFI 609b4 v14: v14 v15: v15
+STACK CFI 609b8 x25: x25 x26: x26
+STACK CFI 609bc x27: x27 x28: x28
+STACK CFI 609c0 .cfa: sp 432 + .ra: .ra x29: x29
+STACK CFI 609c4 .cfa: sp 272 +
+STACK CFI INIT 609c8 54 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 60a1c d4 .cfa: sp 0 + .ra: x30
+STACK CFI 60a20 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 60a24 .cfa: x29 80 +
+STACK CFI 60a34 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^ x25: .cfa -16 + ^
+STACK CFI 60adc x19: x19 x20: x20
+STACK CFI 60ae0 x21: x21 x22: x22
+STACK CFI 60ae4 x23: x23 x24: x24
+STACK CFI 60ae8 x25: x25
+STACK CFI 60aec .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 60af0 224 .cfa: sp 0 + .ra: x30
+STACK CFI 60af4 .cfa: sp 128 + .ra: .cfa -120 + ^ x29: .cfa -128 + ^
+STACK CFI 60af8 .cfa: x29 128 +
+STACK CFI 60afc x21: .cfa -96 + ^ x22: .cfa -88 + ^
+STACK CFI 60b14 x19: .cfa -112 + ^ x20: .cfa -104 + ^ x23: .cfa -80 + ^ x24: .cfa -72 + ^ x25: .cfa -64 + ^ x26: .cfa -56 + ^ x27: .cfa -48 + ^ x28: .cfa -40 + ^
+STACK CFI 60cfc x23: x23 x24: x24
+STACK CFI 60d00 x19: x19 x20: x20
+STACK CFI 60d04 x21: x21 x22: x22
+STACK CFI 60d08 x25: x25 x26: x26
+STACK CFI 60d0c x27: x27 x28: x28
+STACK CFI 60d10 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 60d14 b4 .cfa: sp 0 + .ra: x30
+STACK CFI 60d18 .cfa: sp 112 + .ra: .cfa -104 + ^ x29: .cfa -112 + ^
+STACK CFI 60d20 .cfa: x29 112 +
+STACK CFI 60d28 x19: .cfa -96 + ^ x20: .cfa -88 + ^ x21: .cfa -80 + ^
+STACK CFI 60dbc x19: x19 x20: x20
+STACK CFI 60dc0 x21: x21
+STACK CFI 60dc4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 60dc8 128 .cfa: sp 0 + .ra: x30
+STACK CFI 60dcc .cfa: sp 144 + .ra: .cfa -136 + ^ x29: .cfa -144 + ^
+STACK CFI 60dd4 .cfa: x29 144 +
+STACK CFI 60de4 x19: .cfa -128 + ^ x20: .cfa -120 + ^ x21: .cfa -112 + ^ x22: .cfa -104 + ^ x23: .cfa -96 + ^ x24: .cfa -88 + ^ x25: .cfa -80 + ^
+STACK CFI 60ed8 x25: x25
+STACK CFI 60ee0 x19: x19 x20: x20
+STACK CFI 60ee4 x21: x21 x22: x22
+STACK CFI 60ee8 x23: x23 x24: x24
+STACK CFI 60eec .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 60ef0 22c .cfa: sp 0 + .ra: x30
+STACK CFI 60ef4 .cfa: sp 192 + .ra: .cfa -184 + ^ x29: .cfa -192 + ^
+STACK CFI 60ef8 .cfa: x29 192 +
+STACK CFI 60efc x19: .cfa -176 + ^ x20: .cfa -168 + ^
+STACK CFI 60f10 x21: .cfa -160 + ^ x22: .cfa -152 + ^ x25: .cfa -128 + ^
+STACK CFI 60f20 x23: .cfa -144 + ^ x24: .cfa -136 + ^
+STACK CFI 61104 x25: x25
+STACK CFI 6110c x19: x19 x20: x20
+STACK CFI 61110 x21: x21 x22: x22
+STACK CFI 61114 x23: x23 x24: x24
+STACK CFI 61118 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6111c b0 .cfa: sp 0 + .ra: x30
+STACK CFI 61120 .cfa: sp 176 + .ra: .cfa -168 + ^ x29: .cfa -176 + ^
+STACK CFI 61124 .cfa: x29 176 +
+STACK CFI 61128 x23: .cfa -128 + ^ x24: .cfa -120 + ^
+STACK CFI 61140 x19: .cfa -160 + ^ x20: .cfa -152 + ^ x21: .cfa -144 + ^ x22: .cfa -136 + ^
+STACK CFI 611bc x19: x19 x20: x20
+STACK CFI 611c0 x21: x21 x22: x22
+STACK CFI 611c4 x23: x23 x24: x24
+STACK CFI 611c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 b0 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 176 + .ra: .cfa -168 + ^ x29: .cfa -176 + ^
+STACK CFI 8 .cfa: x29 176 +
+STACK CFI 10 x21: .cfa -144 + ^ x22: .cfa -136 + ^ x23: .cfa -128 + ^
+STACK CFI 28 x19: .cfa -160 + ^ x20: .cfa -152 + ^
+STACK CFI a0 x23: x23
+STACK CFI a4 x19: x19 x20: x20
+STACK CFI a8 x21: x21 x22: x22
+STACK CFI ac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 b0 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 176 + .ra: .cfa -168 + ^ x29: .cfa -176 + ^
+STACK CFI 8 .cfa: x29 176 +
+STACK CFI c x23: .cfa -128 + ^ x24: .cfa -120 + ^
+STACK CFI 24 x19: .cfa -160 + ^ x20: .cfa -152 + ^ x21: .cfa -144 + ^ x22: .cfa -136 + ^
+STACK CFI a0 x19: x19 x20: x20
+STACK CFI a4 x21: x21 x22: x22
+STACK CFI a8 x23: x23 x24: x24
+STACK CFI ac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 9c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 176 + .ra: .cfa -168 + ^ x29: .cfa -176 + ^
+STACK CFI c .cfa: x29 176 +
+STACK CFI 14 x19: .cfa -160 + ^ x20: .cfa -152 + ^ x21: .cfa -144 + ^ x22: .cfa -136 + ^
+STACK CFI 90 x19: x19 x20: x20
+STACK CFI 94 x21: x21 x22: x22
+STACK CFI 98 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 611cc f4 .cfa: sp 0 + .ra: x30
+STACK CFI 611d4 .cfa: sp 112 + .ra: .cfa -104 + ^ x29: .cfa -112 + ^
+STACK CFI 611d8 .cfa: x29 112 +
+STACK CFI 611f0 x19: .cfa -96 + ^ x20: .cfa -88 + ^ x21: .cfa -80 + ^ x22: .cfa -72 + ^ x23: .cfa -64 + ^ x24: .cfa -56 + ^
+STACK CFI 612b0 x19: x19 x20: x20
+STACK CFI 612b4 x21: x21 x22: x22
+STACK CFI 612b8 x23: x23 x24: x24
+STACK CFI 612bc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 f4 .cfa: sp 0 + .ra: x30
+STACK CFI 8 .cfa: sp 112 + .ra: .cfa -104 + ^ x29: .cfa -112 + ^
+STACK CFI c .cfa: x29 112 +
+STACK CFI 24 x19: .cfa -96 + ^ x20: .cfa -88 + ^ x21: .cfa -80 + ^ x22: .cfa -72 + ^ x23: .cfa -64 + ^ x24: .cfa -56 + ^
+STACK CFI e4 x19: x19 x20: x20
+STACK CFI e8 x21: x21 x22: x22
+STACK CFI ec x23: x23 x24: x24
+STACK CFI f0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 282a4 28 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 20 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI c .cfa: x29 32 +
+STACK CFI 1c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 20 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI c .cfa: x29 32 +
+STACK CFI 1c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 110 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 10 .cfa: x29 32 +
+STACK CFI 8c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 90 .cfa: x29 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI INIT 0 124 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI 14 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^
+STACK CFI 114 x19: x19 x20: x20
+STACK CFI 118 x21: x21 x22: x22
+STACK CFI 11c x23: x23 x24: x24
+STACK CFI 120 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 b8 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI 10 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI ac x21: x21
+STACK CFI b0 x19: x19 x20: x20
+STACK CFI b4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 10c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI c .cfa: x29 64 +
+STACK CFI 14 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x23: .cfa -16 + ^
+STACK CFI 1c x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI fc x19: x19 x20: x20
+STACK CFI 100 x21: x21 x22: x22
+STACK CFI 104 x23: x23
+STACK CFI 108 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23018 238 .cfa: sp 0 + .ra: x30
+STACK CFI 2301c .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 23028 .cfa: x29 80 +
+STACK CFI 23038 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI 23230 x23: x23
+STACK CFI 23240 x19: x19 x20: x20
+STACK CFI 23244 x21: x21 x22: x22
+STACK CFI 2324c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 612c0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 612c4 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 24844 40 .cfa: sp 0 + .ra: x30
+STACK CFI 24848 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 24854 .cfa: x29 32 +
+STACK CFI 24858 x19: .cfa -16 + ^
+STACK CFI 2487c x19: x19
+STACK CFI 24880 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2eb40 18 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 43124 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 612c8 1c .cfa: sp 0 + .ra: x30
+STACK CFI 612cc .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 612d0 .cfa: x29 16 +
+STACK CFI 612e0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 24 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 2c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 28 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI c .cfa: x29 32 +
+STACK CFI 24 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 612e4 80 .cfa: sp 0 + .ra: x30
+STACK CFI 612e8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 612ec .cfa: x29 32 +
+STACK CFI 612f0 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI INIT 0 60 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI 10 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 54 x19: x19 x20: x20
+STACK CFI 58 x21: x21 x22: x22
+STACK CFI 5c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 1c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 16 +
+STACK CFI c .cfa: sp 0 +
+STACK CFI INIT 0 20 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI 1c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 248a0 48 .cfa: sp 0 + .ra: x30
+STACK CFI 248a4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 248a8 .cfa: x29 32 +
+STACK CFI 248ac x19: .cfa -16 + ^
+STACK CFI 248e0 x19: x19
+STACK CFI 248e4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 56c00 58 .cfa: sp 0 + .ra: x30
+STACK CFI 56c04 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 56c08 .cfa: x29 48 +
+STACK CFI 56c0c x19: .cfa -32 + ^
+STACK CFI 56c50 x19: x19
+STACK CFI 56c54 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 50 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 10 .cfa: x29 16 +
+STACK CFI 4c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 fc .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 24 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 56e30 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 56ed4 68 .cfa: sp 0 + .ra: x30
+STACK CFI 56ed8 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 56edc .cfa: x29 48 +
+STACK CFI 56ee4 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 56f1c x21: x21
+STACK CFI 56f20 x19: x19 x20: x20
+STACK CFI 56f24 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 56f2c .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x29: .cfa -48 + ^
+STACK CFI 56f30 x19: x19 x20: x20
+STACK CFI 56f34 x21: x21
+STACK CFI 56f38 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 98 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI 10 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 8c x19: x19 x20: x20
+STACK CFI 90 x21: x21
+STACK CFI 94 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24cf8 1c .cfa: sp 0 + .ra: x30
+STACK CFI 24cfc .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 24d00 .cfa: x29 16 +
+STACK CFI 24d10 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24d14 3c .cfa: sp 0 + .ra: x30
+STACK CFI 24d18 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 24d1c .cfa: x29 16 +
+STACK CFI 24d4c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 54 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^
+STACK CFI 4c x19: x19
+STACK CFI 50 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 576a0 4c .cfa: sp 0 + .ra: x30
+STACK CFI 576a4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 576a8 .cfa: x29 48 +
+STACK CFI 576ac x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 576e4 x19: x19 x20: x20
+STACK CFI 576e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 3c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^
+STACK CFI 34 x19: x19
+STACK CFI 38 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 61364 50 .cfa: sp 0 + .ra: x30
+STACK CFI 61368 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 6136c .cfa: x29 48 +
+STACK CFI 61370 x19: .cfa -32 + ^
+STACK CFI 613ac x19: x19
+STACK CFI 613b0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 613b4 54 .cfa: sp 0 + .ra: x30
+STACK CFI 613b8 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 613c0 .cfa: x29 96 +
+STACK CFI 613c4 x19: .cfa -80 + ^
+STACK CFI 61400 x19: x19
+STACK CFI 61404 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 61408 60 .cfa: sp 0 + .ra: x30
+STACK CFI 6140c .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 61410 .cfa: x29 48 +
+STACK CFI 61414 x19: .cfa -32 + ^
+STACK CFI 61460 x19: x19
+STACK CFI 61464 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 57a54 54 .cfa: sp 0 + .ra: x30
+STACK CFI 57a58 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 57a60 .cfa: x29 16 +
+STACK CFI 57aa0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25644 5c .cfa: sp 0 + .ra: x30
+STACK CFI 25648 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2564c .cfa: x29 32 +
+STACK CFI 25650 x19: .cfa -16 + ^
+STACK CFI 25698 x19: x19
+STACK CFI 2569c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 78 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI c .cfa: x29 32 +
+STACK CFI 10 x19: .cfa -16 + ^
+STACK CFI 70 x19: x19
+STACK CFI 74 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25718 50 .cfa: sp 0 + .ra: x30
+STACK CFI 2571c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 25720 .cfa: x29 32 +
+STACK CFI 25724 x19: .cfa -16 + ^
+STACK CFI 25754 x19: x19
+STACK CFI 25758 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2575c .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI 25760 x19: x19
+STACK CFI 25764 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 54490 ec .cfa: sp 0 + .ra: x30
+STACK CFI 54494 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 54498 .cfa: x29 80 +
+STACK CFI 544a0 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI 5456c x21: x21
+STACK CFI 54574 x19: x19 x20: x20
+STACK CFI 54578 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 5c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI c x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 14 x21: .cfa -32 + ^
+STACK CFI 4c x21: x21
+STACK CFI 54 x19: x19 x20: x20
+STACK CFI 58 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 cc .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI 10 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI bc x21: x21
+STACK CFI c4 x19: x19 x20: x20
+STACK CFI c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 13c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI 10 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 130 x19: x19 x20: x20
+STACK CFI 134 x21: x21 x22: x22
+STACK CFI 138 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 61468 e8 .cfa: sp 0 + .ra: x30
+STACK CFI 6146c .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 61470 .cfa: x29 64 +
+STACK CFI 61478 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 61544 x19: x19 x20: x20
+STACK CFI 61548 x21: x21 x22: x22
+STACK CFI 6154c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 104 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI 14 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^
+STACK CFI f4 x19: x19 x20: x20
+STACK CFI f8 x21: x21 x22: x22
+STACK CFI fc x23: x23 x24: x24
+STACK CFI 100 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25b54 5c .cfa: sp 0 + .ra: x30
+STACK CFI 25b58 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 25b5c .cfa: x29 16 +
+STACK CFI 25bac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 170 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI c .cfa: x29 80 +
+STACK CFI 18 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI 160 x23: x23
+STACK CFI 164 x19: x19 x20: x20
+STACK CFI 168 x21: x21 x22: x22
+STACK CFI 16c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 61550 c8 .cfa: sp 0 + .ra: x30
+STACK CFI 61554 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 61558 .cfa: x29 48 +
+STACK CFI 6155c x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 61568 x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 615e8 x19: x19 x20: x20
+STACK CFI 61600 x21: x21 x22: x22
+STACK CFI 61604 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 61608 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^ x29: .cfa -48 + ^
+STACK CFI 6160c x19: x19 x20: x20
+STACK CFI 61610 x21: x21 x22: x22
+STACK CFI 61614 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 57564 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 80 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI 10 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 70 x21: x21
+STACK CFI 78 x19: x19 x20: x20
+STACK CFI 7c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 61618 104 .cfa: sp 0 + .ra: x30
+STACK CFI 6161c .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 61624 .cfa: x29 160 +
+STACK CFI 61628 x19: .cfa -144 + ^ x20: .cfa -136 + ^
+STACK CFI 61638 x21: .cfa -128 + ^ x22: .cfa -120 + ^ x23: .cfa -112 + ^ x24: .cfa -104 + ^ x25: .cfa -96 + ^ x26: .cfa -88 + ^
+STACK CFI 61708 x19: x19 x20: x20
+STACK CFI 6170c x21: x21 x22: x22
+STACK CFI 61710 x23: x23 x24: x24
+STACK CFI 61714 x25: x25 x26: x26
+STACK CFI 61718 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6171c 348 .cfa: sp 0 + .ra: x30
+STACK CFI 61720 .cfa: sp 240 + .ra: .cfa -232 + ^ x29: .cfa -240 + ^
+STACK CFI 61724 .cfa: x29 240 +
+STACK CFI 61728 x21: .cfa -208 + ^ x22: .cfa -200 + ^
+STACK CFI 6173c x19: .cfa -224 + ^ x20: .cfa -216 + ^ x23: .cfa -192 + ^ x24: .cfa -184 + ^ x25: .cfa -176 + ^
+STACK CFI 61a4c x25: x25
+STACK CFI 61a54 x19: x19 x20: x20
+STACK CFI 61a58 x21: x21 x22: x22
+STACK CFI 61a5c x23: x23 x24: x24
+STACK CFI 61a60 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 61a64 18 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 13c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 8 .cfa: x29 96 +
+STACK CFI c x19: .cfa -80 + ^ x20: .cfa -72 + ^
+STACK CFI 1c x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^ x25: .cfa -32 + ^ x26: .cfa -24 + ^
+STACK CFI 128 x21: x21 x22: x22
+STACK CFI 12c x19: x19 x20: x20
+STACK CFI 130 x23: x23 x24: x24
+STACK CFI 134 x25: x25 x26: x26
+STACK CFI 138 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 114 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI c .cfa: x29 80 +
+STACK CFI 18 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI 104 x23: x23
+STACK CFI 108 x19: x19 x20: x20
+STACK CFI 10c x21: x21 x22: x22
+STACK CFI 110 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 88 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI c x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 1c x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 7c x19: x19 x20: x20
+STACK CFI 80 x21: x21 x22: x22
+STACK CFI 84 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 61a7c 3c0 .cfa: sp 0 + .ra: x30
+STACK CFI 61a80 .cfa: sp 624 +
+STACK CFI 61a84 .cfa: sp 688 + .ra: .cfa -680 + ^ x29: .cfa -688 + ^
+STACK CFI 61a88 .cfa: x29 688 +
+STACK CFI 61a94 x19: .cfa -672 + ^ x20: .cfa -664 + ^ x21: .cfa -656 + ^ x22: .cfa -648 + ^ x23: .cfa -640 + ^ x24: .cfa -632 + ^
+STACK CFI 61c34 x19: x19 x20: x20
+STACK CFI 61c38 x21: x21 x22: x22
+STACK CFI 61c3c x23: x23 x24: x24
+STACK CFI 61c40 .cfa: sp 624 + .ra: .ra x29: x29
+STACK CFI 61c44 .cfa: sp 560 +
+STACK CFI 61c48 .cfa: x29 688 + .ra: .cfa -680 + ^ x19: .cfa -672 + ^ x20: .cfa -664 + ^ x21: .cfa -656 + ^ x22: .cfa -648 + ^ x23: .cfa -640 + ^ x24: .cfa -632 + ^ x29: .cfa -688 + ^
+STACK CFI INIT 61e3c 13c .cfa: sp 0 + .ra: x30
+STACK CFI 61e40 .cfa: sp 448 + .ra: .cfa -440 + ^ x29: .cfa -448 + ^
+STACK CFI 61e4c .cfa: x29 448 +
+STACK CFI 61e50 x19: .cfa -432 + ^ x20: .cfa -424 + ^
+STACK CFI INIT 20570 d8 .cfa: sp 0 + .ra: x30
+STACK CFI 20574 .cfa: sp 448 + .ra: .cfa -440 + ^ x29: .cfa -448 + ^
+STACK CFI 2057c .cfa: x29 448 +
+STACK CFI 20580 x19: .cfa -432 + ^ x20: .cfa -424 + ^
+STACK CFI INIT 61f78 74 .cfa: sp 0 + .ra: x30
+STACK CFI 61f7c .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 61f84 .cfa: x29 48 +
+STACK CFI 61f88 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 61fe4 x19: x19 x20: x20
+STACK CFI 61fe8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 61fec 51c .cfa: sp 0 + .ra: x30
+STACK CFI 61ff0 .cfa: sp 496 + .ra: .cfa -488 + ^ x29: .cfa -496 + ^
+STACK CFI 61ff4 .cfa: x29 496 +
+STACK CFI 62000 x19: .cfa -480 + ^ x20: .cfa -472 + ^ x21: .cfa -464 + ^ x22: .cfa -456 + ^ x23: .cfa -448 + ^
+STACK CFI 624f8 x19: x19 x20: x20
+STACK CFI 624fc x21: x21 x22: x22
+STACK CFI 62500 x23: x23
+STACK CFI 62504 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 62508 c0 .cfa: sp 0 + .ra: x30
+STACK CFI 6250c .cfa: sp 400 + .ra: .cfa -392 + ^ x29: .cfa -400 + ^
+STACK CFI 62514 .cfa: x29 400 +
+STACK CFI 62518 x19: .cfa -384 + ^ x20: .cfa -376 + ^
+STACK CFI INIT 625c8 50 .cfa: sp 0 + .ra: x30
+STACK CFI 625cc .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 625d4 .cfa: x29 32 +
+STACK CFI 625d8 x19: .cfa -16 + ^
+STACK CFI 62610 x19: x19
+STACK CFI 62614 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 62618 24 .cfa: sp 0 + .ra: x30
+STACK CFI 6261c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 62620 .cfa: x29 32 +
+STACK CFI 62624 x19: .cfa -16 + ^
+STACK CFI 62634 x19: x19
+STACK CFI 62638 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6263c 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6264c 24 .cfa: sp 0 + .ra: x30
+STACK CFI 62650 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 62654 .cfa: x29 32 +
+STACK CFI 62658 x19: .cfa -16 + ^
+STACK CFI 62668 x19: x19
+STACK CFI 6266c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 62670 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 62680 24 .cfa: sp 0 + .ra: x30
+STACK CFI 62684 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 62688 .cfa: x29 32 +
+STACK CFI 6268c x19: .cfa -16 + ^
+STACK CFI 6269c x19: x19
+STACK CFI 626a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 84 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI c x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 18 x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 78 x19: x19 x20: x20
+STACK CFI 7c x21: x21 x22: x22
+STACK CFI 80 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 626a4 24c .cfa: sp 0 + .ra: x30
+STACK CFI 626a8 .cfa: sp 384 + .ra: .cfa -376 + ^ x29: .cfa -384 + ^
+STACK CFI 626ac .cfa: x29 384 +
+STACK CFI 626bc x19: .cfa -368 + ^ x20: .cfa -360 + ^ x21: .cfa -352 + ^ x22: .cfa -344 + ^ x23: .cfa -336 + ^ x24: .cfa -328 + ^ x25: .cfa -320 + ^ x26: .cfa -312 + ^
+STACK CFI 628dc x19: x19 x20: x20
+STACK CFI 628e0 x21: x21 x22: x22
+STACK CFI 628e4 x23: x23 x24: x24
+STACK CFI 628e8 x25: x25 x26: x26
+STACK CFI 628ec .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5f8f4 148 .cfa: sp 0 + .ra: x30
+STACK CFI 5f8f8 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 5f8fc .cfa: x29 96 +
+STACK CFI 5f90c x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^ x25: .cfa -32 + ^
+STACK CFI 5fa28 x19: x19 x20: x20
+STACK CFI 5fa2c x21: x21 x22: x22
+STACK CFI 5fa30 x23: x23 x24: x24
+STACK CFI 5fa34 x25: x25
+STACK CFI 5fa38 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 628f0 4c .cfa: sp 0 + .ra: x30
+STACK CFI 628f4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 628fc .cfa: x29 32 +
+STACK CFI 62938 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6293c 44 .cfa: sp 0 + .ra: x30
+STACK CFI 62940 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 62944 .cfa: x29 48 +
+STACK CFI 62948 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 62978 x19: x19 x20: x20
+STACK CFI 6297c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 62980 c0c .cfa: sp 0 + .ra: x30
+STACK CFI 62984 .cfa: sp 784 +
+STACK CFI 62988 .cfa: sp 944 + .ra: .cfa -936 + ^ x29: .cfa -944 + ^
+STACK CFI 6298c .cfa: x29 944 +
+STACK CFI 62990 v8: .cfa -848 + ^ v9: .cfa -840 + ^
+STACK CFI 629b4 v10: .cfa -832 + ^ v11: .cfa -824 + ^ v12: .cfa -816 + ^ v13: .cfa -808 + ^ v14: .cfa -800 + ^ v15: .cfa -792 + ^ x19: .cfa -928 + ^ x20: .cfa -920 + ^ x21: .cfa -912 + ^ x22: .cfa -904 + ^ x23: .cfa -896 + ^ x24: .cfa -888 + ^ x25: .cfa -880 + ^ x26: .cfa -872 + ^ x27: .cfa -864 + ^ x28: .cfa -856 + ^
+STACK CFI 63560 x19: x19 x20: x20
+STACK CFI 63564 v8: v8 v9: v9
+STACK CFI 63568 x21: x21 x22: x22
+STACK CFI 6356c v10: v10 v11: v11
+STACK CFI 63570 x23: x23 x24: x24
+STACK CFI 63574 v12: v12 v13: v13
+STACK CFI 63578 x25: x25 x26: x26
+STACK CFI 6357c v14: v14 v15: v15
+STACK CFI 63580 x27: x27 x28: x28
+STACK CFI 63584 .cfa: sp 784 + .ra: .ra x29: x29
+STACK CFI 63588 .cfa: sp 624 +
+STACK CFI INIT 0 2a4 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 112 + .ra: .cfa -104 + ^ x29: .cfa -112 + ^
+STACK CFI 8 .cfa: x29 112 +
+STACK CFI c x21: .cfa -80 + ^ x22: .cfa -72 + ^
+STACK CFI 20 x19: .cfa -96 + ^ x20: .cfa -88 + ^ x23: .cfa -64 + ^ x24: .cfa -56 + ^ x25: .cfa -48 + ^ x26: .cfa -40 + ^ x27: .cfa -32 + ^
+STACK CFI 28c x23: x23 x24: x24
+STACK CFI 290 x19: x19 x20: x20
+STACK CFI 294 x21: x21 x22: x22
+STACK CFI 298 x25: x25 x26: x26
+STACK CFI 29c x27: x27
+STACK CFI 2a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 60d14 b4 .cfa: sp 0 + .ra: x30
+STACK CFI 60d18 .cfa: sp 112 + .ra: .cfa -104 + ^ x29: .cfa -112 + ^
+STACK CFI 60d20 .cfa: x29 112 +
+STACK CFI 60d28 x19: .cfa -96 + ^ x20: .cfa -88 + ^ x21: .cfa -80 + ^
+STACK CFI 60dbc x19: x19 x20: x20
+STACK CFI 60dc0 x21: x21
+STACK CFI 60dc4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6358c 234 .cfa: sp 0 + .ra: x30
+STACK CFI 63590 .cfa: sp 272 + .ra: .cfa -264 + ^ x29: .cfa -272 + ^
+STACK CFI 63598 .cfa: x29 272 +
+STACK CFI 6359c x19: .cfa -256 + ^ x20: .cfa -248 + ^
+STACK CFI 635b0 x25: .cfa -208 + ^
+STACK CFI 635bc x21: .cfa -240 + ^ x22: .cfa -232 + ^ x23: .cfa -224 + ^ x24: .cfa -216 + ^
+STACK CFI 637ac x19: x19 x20: x20
+STACK CFI 637b0 x21: x21 x22: x22
+STACK CFI 637b4 x23: x23 x24: x24
+STACK CFI 637b8 x25: x25
+STACK CFI 637bc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23250 e8 .cfa: sp 0 + .ra: x30
+STACK CFI 23254 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 23260 .cfa: x29 64 +
+STACK CFI 2326c x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 23278 x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 2332c x19: x19 x20: x20
+STACK CFI 23330 x21: x21 x22: x22
+STACK CFI 23334 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24844 40 .cfa: sp 0 + .ra: x30
+STACK CFI 24848 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 24854 .cfa: x29 32 +
+STACK CFI 24858 x19: .cfa -16 + ^
+STACK CFI 2487c x19: x19
+STACK CFI 24880 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 637c0 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 637cc 24 .cfa: sp 0 + .ra: x30
+STACK CFI 637d0 .cfa: sp 144 + .ra: .cfa -136 + ^ x29: .cfa -144 + ^
+STACK CFI 637d4 .cfa: x29 144 +
+STACK CFI 637ec .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 637f0 38 .cfa: sp 0 + .ra: x30
+STACK CFI 637f4 .cfa: sp 144 + .ra: .cfa -136 + ^ x29: .cfa -144 + ^
+STACK CFI 637f8 .cfa: x29 144 +
+STACK CFI 63824 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 28 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 63828 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6383c 24 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 63860 44 .cfa: sp 0 + .ra: x30
+STACK CFI 63864 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6386c .cfa: x29 32 +
+STACK CFI 63870 x19: .cfa -16 + ^
+STACK CFI 6388c x19: x19
+STACK CFI 63890 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 63894 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI 6389c x19: x19
+STACK CFI 638a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 248e8 30 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 68 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^
+STACK CFI 60 x19: x19
+STACK CFI 64 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 576a0 4c .cfa: sp 0 + .ra: x30
+STACK CFI 576a4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 576a8 .cfa: x29 48 +
+STACK CFI 576ac x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 576e4 x19: x19 x20: x20
+STACK CFI 576e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 3c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^
+STACK CFI 34 x19: x19
+STACK CFI 38 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 57a54 54 .cfa: sp 0 + .ra: x30
+STACK CFI 57a58 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 57a60 .cfa: x29 16 +
+STACK CFI 57aa0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 74 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^
+STACK CFI 6c x19: x19
+STACK CFI 70 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 13c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI 10 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 130 x21: x21
+STACK CFI 134 x19: x19 x20: x20
+STACK CFI 138 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25b54 5c .cfa: sp 0 + .ra: x30
+STACK CFI 25b58 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 25b5c .cfa: x29 16 +
+STACK CFI 25bac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 180 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI c .cfa: x29 80 +
+STACK CFI 18 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI 170 x23: x23
+STACK CFI 174 x19: x19 x20: x20
+STACK CFI 178 x21: x21 x22: x22
+STACK CFI 17c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 57564 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 a8 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 18 x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 9c x19: x19 x20: x20
+STACK CFI a0 x21: x21 x22: x22
+STACK CFI a4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25fd8 34 .cfa: sp 0 + .ra: x30
+STACK CFI 25fdc .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 25fe0 .cfa: x29 48 +
+STACK CFI 25fe4 x19: .cfa -32 + ^
+STACK CFI 26004 x19: x19
+STACK CFI 26008 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 638a4 c0 .cfa: sp 0 + .ra: x30
+STACK CFI 638a8 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 638ac .cfa: x29 48 +
+STACK CFI 638b4 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 638c4 x19: x19 x20: x20
+STACK CFI 638c8 x21: x21
+STACK CFI 638d0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 638d8 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x29: .cfa -48 + ^
+STACK CFI 63958 x21: x21
+STACK CFI 6395c x19: x19 x20: x20
+STACK CFI 63960 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 57908 24 .cfa: sp 0 + .ra: x30
+STACK CFI 5790c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 57910 .cfa: x29 32 +
+STACK CFI 57914 x19: .cfa -16 + ^
+STACK CFI 57924 x19: x19
+STACK CFI 57928 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 63964 90 .cfa: sp 0 + .ra: x30
+STACK CFI 63968 .cfa: sp 4096 +
+STACK CFI 63970 .cfa: sp 4160 +
+STACK CFI 63978 .cfa: sp 4208 + .ra: .cfa -4200 + ^ x29: .cfa -4208 + ^
+STACK CFI 6397c .cfa: x29 4208 +
+STACK CFI 63980 x19: .cfa -4192 + ^ x20: .cfa -4184 + ^
+STACK CFI 63988 x21: .cfa -4176 + ^
+STACK CFI 639e0 x21: x21
+STACK CFI 639e4 x19: x19 x20: x20
+STACK CFI 639e8 .cfa: sp 4160 + .ra: .ra x29: x29
+STACK CFI 639ec .cfa: sp 4096 +
+STACK CFI 639f0 .cfa: sp 4048 +
+STACK CFI INIT 639f4 68 .cfa: sp 0 + .ra: x30
+STACK CFI 639f8 .cfa: sp 112 + .ra: .cfa -104 + ^ x29: .cfa -112 + ^
+STACK CFI 639fc .cfa: x29 112 +
+STACK CFI 63a00 x19: .cfa -96 + ^ x20: .cfa -88 + ^
+STACK CFI 63a54 x19: x19 x20: x20
+STACK CFI 63a58 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 63a5c 78 .cfa: sp 0 + .ra: x30
+STACK CFI 63a60 .cfa: sp 112 + .ra: .cfa -104 + ^ x29: .cfa -112 + ^
+STACK CFI 63a64 .cfa: x29 112 +
+STACK CFI 63a68 x19: .cfa -96 + ^ x20: .cfa -88 + ^
+STACK CFI 63acc x19: x19 x20: x20
+STACK CFI 63ad0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 63ad4 1ec .cfa: sp 0 + .ra: x30
+STACK CFI 63ad8 .cfa: sp 224 + .ra: .cfa -216 + ^ x29: .cfa -224 + ^
+STACK CFI 63adc .cfa: x29 224 +
+STACK CFI 63aec x19: .cfa -208 + ^ x20: .cfa -200 + ^ x21: .cfa -192 + ^ x22: .cfa -184 + ^ x23: .cfa -176 + ^ x24: .cfa -168 + ^ x25: .cfa -160 + ^
+STACK CFI 63cac x25: x25
+STACK CFI 63cb0 x19: x19 x20: x20
+STACK CFI 63cb4 x21: x21 x22: x22
+STACK CFI 63cb8 x23: x23 x24: x24
+STACK CFI 63cbc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 63cc0 b4 .cfa: sp 0 + .ra: x30
+STACK CFI 63cc4 .cfa: sp 144 + .ra: .cfa -136 + ^ x29: .cfa -144 + ^
+STACK CFI 63cc8 .cfa: x29 144 +
+STACK CFI 63cd0 x19: .cfa -128 + ^ x20: .cfa -120 + ^ x21: .cfa -112 + ^ x22: .cfa -104 + ^
+STACK CFI 63d68 x19: x19 x20: x20
+STACK CFI 63d6c x21: x21 x22: x22
+STACK CFI 63d70 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 63d74 a0 .cfa: sp 0 + .ra: x30
+STACK CFI 63d78 .cfa: sp 144 + .ra: .cfa -136 + ^ x29: .cfa -144 + ^
+STACK CFI 63d7c .cfa: x29 144 +
+STACK CFI 63d84 x19: .cfa -128 + ^ x20: .cfa -120 + ^ x21: .cfa -112 + ^
+STACK CFI 63e08 x21: x21
+STACK CFI 63e0c x19: x19 x20: x20
+STACK CFI 63e10 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 168 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI c x21: .cfa -48 + ^ x22: .cfa -40 + ^
+STACK CFI 1c x19: .cfa -64 + ^ x20: .cfa -56 + ^ x23: .cfa -32 + ^
+STACK CFI 158 x23: x23
+STACK CFI 15c x19: x19 x20: x20
+STACK CFI 160 x21: x21 x22: x22
+STACK CFI 164 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 e4 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 192 + .ra: .cfa -184 + ^ x29: .cfa -192 + ^
+STACK CFI 8 .cfa: x29 192 +
+STACK CFI 14 x19: .cfa -176 + ^ x20: .cfa -168 + ^ x23: .cfa -144 + ^
+STACK CFI 38 x21: .cfa -160 + ^ x22: .cfa -152 + ^
+STACK CFI d0 x23: x23
+STACK CFI d8 x19: x19 x20: x20
+STACK CFI dc x21: x21 x22: x22
+STACK CFI e0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 63e14 224 .cfa: sp 0 + .ra: x30
+STACK CFI 63e18 .cfa: sp 384 + .ra: .cfa -376 + ^ x29: .cfa -384 + ^
+STACK CFI 63e1c .cfa: x29 384 +
+STACK CFI 63e20 x19: .cfa -368 + ^ x20: .cfa -360 + ^
+STACK CFI 63e30 x23: .cfa -336 + ^ x24: .cfa -328 + ^ x27: .cfa -304 + ^ x28: .cfa -296 + ^
+STACK CFI 63e48 x21: .cfa -352 + ^ x22: .cfa -344 + ^ x25: .cfa -320 + ^ x26: .cfa -312 + ^
+STACK CFI 64020 x19: x19 x20: x20
+STACK CFI 64024 x21: x21 x22: x22
+STACK CFI 64028 x23: x23 x24: x24
+STACK CFI 6402c x25: x25 x26: x26
+STACK CFI 64030 x27: x27 x28: x28
+STACK CFI 64034 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 64038 a4 .cfa: sp 0 + .ra: x30
+STACK CFI 6403c .cfa: sp 112 + .ra: .cfa -104 + ^ x29: .cfa -112 + ^
+STACK CFI 64040 .cfa: x29 112 +
+STACK CFI 64048 x19: .cfa -96 + ^ x20: .cfa -88 + ^ x23: .cfa -64 + ^ x24: .cfa -56 + ^
+STACK CFI 6405c x21: .cfa -80 + ^ x22: .cfa -72 + ^
+STACK CFI 640cc x19: x19 x20: x20
+STACK CFI 640d0 x21: x21 x22: x22
+STACK CFI 640d4 x23: x23 x24: x24
+STACK CFI 640d8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24844 40 .cfa: sp 0 + .ra: x30
+STACK CFI 24848 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 24854 .cfa: x29 32 +
+STACK CFI 24858 x19: .cfa -16 + ^
+STACK CFI 2487c x19: x19
+STACK CFI 24880 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 640dc 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 640e4 30 .cfa: sp 0 + .ra: x30
+STACK CFI 640e8 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 640f4 .cfa: x29 16 +
+STACK CFI 64110 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 18 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 64114 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 64120 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6412c c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 64138 3c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 44 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^
+STACK CFI 2c x19: x19
+STACK CFI 34 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 38 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI 3c x19: x19
+STACK CFI 40 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 64174 158 .cfa: sp 0 + .ra: x30
+STACK CFI 64178 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 64180 .cfa: x29 32 +
+STACK CFI 64184 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 64200 x19: x19 x20: x20
+STACK CFI 64204 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 64208 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x20: .cfa -8 + ^ x29: .cfa -32 + ^
+STACK CFI 64220 x19: x19 x20: x20
+STACK CFI 64224 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 64228 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x20: .cfa -8 + ^ x29: .cfa -32 + ^
+STACK CFI 642c4 x19: x19 x20: x20
+STACK CFI 642c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 642cc bc .cfa: sp 0 + .ra: x30
+STACK CFI 642d0 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 642d4 .cfa: x29 48 +
+STACK CFI 642dc x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 64340 x21: x21 x22: x22
+STACK CFI 64344 x19: x19 x20: x20
+STACK CFI 64348 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 6434c .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^ x29: .cfa -48 + ^
+STACK CFI 6437c x19: x19 x20: x20
+STACK CFI 64380 x21: x21 x22: x22
+STACK CFI 64384 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 64388 c0 .cfa: sp 0 + .ra: x30
+STACK CFI 6438c .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 64394 .cfa: x29 80 +
+STACK CFI 643a8 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^ x25: .cfa -16 + ^
+STACK CFI 64434 x19: x19 x20: x20
+STACK CFI 64438 x21: x21 x22: x22
+STACK CFI 6443c x23: x23 x24: x24
+STACK CFI 64440 x25: x25
+STACK CFI 64444 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 64448 68 .cfa: sp 0 + .ra: x30
+STACK CFI 6444c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 64450 .cfa: x29 32 +
+STACK CFI 64454 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 64478 x19: x19 x20: x20
+STACK CFI 6447c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 64480 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x20: .cfa -8 + ^ x29: .cfa -32 + ^
+STACK CFI 644a8 x19: x19 x20: x20
+STACK CFI 644ac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 28 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^
+STACK CFI 20 x19: x19
+STACK CFI 24 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 644b0 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 644cc 2c .cfa: sp 0 + .ra: x30
+STACK CFI 644d0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 644dc .cfa: x29 32 +
+STACK CFI 644e0 x19: .cfa -16 + ^
+STACK CFI 644f0 x19: x19
+STACK CFI 644f4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 644f8 18 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 248a0 48 .cfa: sp 0 + .ra: x30
+STACK CFI 248a4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 248a8 .cfa: x29 32 +
+STACK CFI 248ac x19: .cfa -16 + ^
+STACK CFI 248e0 x19: x19
+STACK CFI 248e4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 248e8 30 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 24cf8 1c .cfa: sp 0 + .ra: x30
+STACK CFI 24cfc .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 24d00 .cfa: x29 16 +
+STACK CFI 24d10 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24d14 3c .cfa: sp 0 + .ra: x30
+STACK CFI 24d18 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 24d1c .cfa: x29 16 +
+STACK CFI 24d4c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25644 5c .cfa: sp 0 + .ra: x30
+STACK CFI 25648 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2564c .cfa: x29 32 +
+STACK CFI 25650 x19: .cfa -16 + ^
+STACK CFI 25698 x19: x19
+STACK CFI 2569c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25718 50 .cfa: sp 0 + .ra: x30
+STACK CFI 2571c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 25720 .cfa: x29 32 +
+STACK CFI 25724 x19: .cfa -16 + ^
+STACK CFI 25754 x19: x19
+STACK CFI 25758 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2575c .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI 25760 x19: x19
+STACK CFI 25764 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 64510 3c .cfa: sp 0 + .ra: x30
+STACK CFI 64514 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 64518 .cfa: x29 32 +
+STACK CFI 6451c x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 64544 x19: x19 x20: x20
+STACK CFI 64548 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6454c 5c .cfa: sp 0 + .ra: x30
+STACK CFI 64550 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 64554 .cfa: x29 48 +
+STACK CFI 64558 x19: .cfa -32 + ^
+STACK CFI 645a0 x19: x19
+STACK CFI 645a4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 88 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI c .cfa: x29 64 +
+STACK CFI 10 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 1c x21: .cfa -32 + ^
+STACK CFI 7c x19: x19 x20: x20
+STACK CFI 80 x21: x21
+STACK CFI 84 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 68 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^
+STACK CFI 60 x19: x19
+STACK CFI 64 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 576a0 4c .cfa: sp 0 + .ra: x30
+STACK CFI 576a4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 576a8 .cfa: x29 48 +
+STACK CFI 576ac x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 576e4 x19: x19 x20: x20
+STACK CFI 576e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 645a8 9c .cfa: sp 0 + .ra: x30
+STACK CFI 645ac .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 645b0 .cfa: x29 64 +
+STACK CFI 645b8 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 645c0 x23: .cfa -16 + ^
+STACK CFI 64630 x23: x23
+STACK CFI 64638 x19: x19 x20: x20
+STACK CFI 6463c x21: x21 x22: x22
+STACK CFI 64640 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 64644 a8 .cfa: sp 0 + .ra: x30
+STACK CFI 64648 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 6464c .cfa: x29 48 +
+STACK CFI 64654 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 646e0 x21: x21
+STACK CFI 646e4 x19: x19 x20: x20
+STACK CFI 646e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 2c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI c .cfa: x29 32 +
+STACK CFI 14 x19: .cfa -16 + ^
+STACK CFI 24 x19: x19
+STACK CFI 28 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 646ec 2c .cfa: sp 0 + .ra: x30
+STACK CFI 646f0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 646f8 .cfa: x29 32 +
+STACK CFI 64700 x19: .cfa -16 + ^
+STACK CFI 64710 x19: x19
+STACK CFI 64714 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 54474 1c .cfa: sp 0 + .ra: x30
+STACK CFI 54478 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 5447c .cfa: x29 16 +
+STACK CFI 5448c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 78 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI c .cfa: x29 32 +
+STACK CFI 10 x19: .cfa -16 + ^
+STACK CFI 70 x19: x19
+STACK CFI 74 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 54490 ec .cfa: sp 0 + .ra: x30
+STACK CFI 54494 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 54498 .cfa: x29 80 +
+STACK CFI 544a0 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI 5456c x21: x21
+STACK CFI 54574 x19: x19 x20: x20
+STACK CFI 54578 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 12c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI 10 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 120 x19: x19 x20: x20
+STACK CFI 124 x21: x21 x22: x22
+STACK CFI 128 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 64718 38 .cfa: sp 0 + .ra: x30
+STACK CFI 6471c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 64720 .cfa: x29 32 +
+STACK CFI 64724 x19: .cfa -16 + ^
+STACK CFI 64748 x19: x19
+STACK CFI 6474c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 ac .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI c x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 18 x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI a0 x19: x19 x20: x20
+STACK CFI a4 x21: x21 x22: x22
+STACK CFI a8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5457c 48 .cfa: sp 0 + .ra: x30
+STACK CFI 54580 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 5458c .cfa: x29 16 +
+STACK CFI 545c0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 64750 7c .cfa: sp 0 + .ra: x30
+STACK CFI 64754 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 64758 .cfa: x29 48 +
+STACK CFI 6475c x19: .cfa -32 + ^
+STACK CFI 647c4 x19: x19
+STACK CFI 647c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 647cc 48 .cfa: sp 0 + .ra: x30
+STACK CFI 647d0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 647d4 .cfa: x29 32 +
+STACK CFI 647d8 x19: .cfa -16 + ^
+STACK CFI 6480c x19: x19
+STACK CFI 64810 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 134 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 8 .cfa: x29 96 +
+STACK CFI 14 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^
+STACK CFI 20 x25: .cfa -32 + ^ x26: .cfa -24 + ^
+STACK CFI 120 x19: x19 x20: x20
+STACK CFI 124 x21: x21 x22: x22
+STACK CFI 128 x23: x23 x24: x24
+STACK CFI 12c x25: x25 x26: x26
+STACK CFI 130 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 48 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI c x19: .cfa -64 + ^ x20: .cfa -56 + ^
+STACK CFI 40 x19: x19 x20: x20
+STACK CFI 44 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 64814 1a8 .cfa: sp 0 + .ra: x30
+STACK CFI 64818 .cfa: sp 112 + .ra: .cfa -104 + ^ x29: .cfa -112 + ^
+STACK CFI 6481c .cfa: x29 112 +
+STACK CFI 64820 x19: .cfa -96 + ^ x20: .cfa -88 + ^
+STACK CFI 6482c x21: .cfa -80 + ^
+STACK CFI 649b0 x19: x19 x20: x20
+STACK CFI 649b4 x21: x21
+STACK CFI 649b8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25b54 5c .cfa: sp 0 + .ra: x30
+STACK CFI 25b58 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 25b5c .cfa: x29 16 +
+STACK CFI 25bac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 180 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI c .cfa: x29 80 +
+STACK CFI 18 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI 170 x23: x23
+STACK CFI 174 x19: x19 x20: x20
+STACK CFI 178 x21: x21 x22: x22
+STACK CFI 17c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 57564 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 168 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI c x21: .cfa -48 + ^ x22: .cfa -40 + ^
+STACK CFI 1c x19: .cfa -64 + ^ x20: .cfa -56 + ^ x23: .cfa -32 + ^
+STACK CFI 158 x23: x23
+STACK CFI 15c x19: x19 x20: x20
+STACK CFI 160 x21: x21 x22: x22
+STACK CFI 164 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 649bc 150 .cfa: sp 0 + .ra: x30
+STACK CFI 649c0 .cfa: sp 256 + .ra: .cfa -248 + ^ x29: .cfa -256 + ^
+STACK CFI 649c4 .cfa: x29 256 +
+STACK CFI 649d0 x19: .cfa -240 + ^ x20: .cfa -232 + ^ x21: .cfa -224 + ^ x22: .cfa -216 + ^ x23: .cfa -208 + ^ x24: .cfa -200 + ^
+STACK CFI 64afc x19: x19 x20: x20
+STACK CFI 64b00 x21: x21 x22: x22
+STACK CFI 64b04 x23: x23 x24: x24
+STACK CFI 64b08 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 64b0c cc .cfa: sp 0 + .ra: x30
+STACK CFI 64b10 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 64b14 .cfa: x29 96 +
+STACK CFI 64b18 x19: .cfa -80 + ^ x20: .cfa -72 + ^
+STACK CFI 64bd0 x19: x19 x20: x20
+STACK CFI 64bd4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 64bd8 1a4 .cfa: sp 0 + .ra: x30
+STACK CFI 64bdc .cfa: sp 128 + .ra: .cfa -120 + ^ x29: .cfa -128 + ^
+STACK CFI 64be0 .cfa: x29 128 +
+STACK CFI 64bf0 x19: .cfa -112 + ^ x20: .cfa -104 + ^ x21: .cfa -96 + ^ x22: .cfa -88 + ^ x23: .cfa -80 + ^ x24: .cfa -72 + ^ x25: .cfa -64 + ^
+STACK CFI 64d68 x21: x21 x22: x22
+STACK CFI 64d6c x19: x19 x20: x20
+STACK CFI 64d70 x23: x23 x24: x24
+STACK CFI 64d74 x25: x25
+STACK CFI 64d78 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 18 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 64d7c 18 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 64d94 13c .cfa: sp 0 + .ra: x30
+STACK CFI 64d98 .cfa: sp 224 + .ra: .cfa -216 + ^ x29: .cfa -224 + ^
+STACK CFI 64d9c .cfa: x29 224 +
+STACK CFI 64da8 x19: .cfa -208 + ^ x20: .cfa -200 + ^ x21: .cfa -192 + ^ x22: .cfa -184 + ^ x23: .cfa -176 + ^
+STACK CFI 64ebc x23: x23
+STACK CFI 64ec4 x19: x19 x20: x20
+STACK CFI 64ec8 x21: x21 x22: x22
+STACK CFI 64ecc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 545c4 11c .cfa: sp 0 + .ra: x30
+STACK CFI 545c8 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 545cc .cfa: x29 64 +
+STACK CFI 545d4 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 546d4 x21: x21
+STACK CFI 546d8 x19: x19 x20: x20
+STACK CFI 546dc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 64ed0 c8 .cfa: sp 0 + .ra: x30
+STACK CFI 64ed4 .cfa: sp 112 + .ra: .cfa -104 + ^ x29: .cfa -112 + ^
+STACK CFI 64ed8 .cfa: x29 112 +
+STACK CFI 64edc x19: .cfa -96 + ^ x20: .cfa -88 + ^
+STACK CFI 64eec x21: .cfa -80 + ^ x22: .cfa -72 + ^
+STACK CFI 64f8c x19: x19 x20: x20
+STACK CFI 64f90 x21: x21 x22: x22
+STACK CFI 64f94 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 64f98 54 .cfa: sp 0 + .ra: x30
+STACK CFI 64f9c .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 64fa0 .cfa: x29 80 +
+STACK CFI 64fa4 x19: .cfa -64 + ^ x20: .cfa -56 + ^
+STACK CFI 64fe4 x19: x19 x20: x20
+STACK CFI 64fe8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 64fec 10c .cfa: sp 0 + .ra: x30
+STACK CFI 64ff0 .cfa: sp 176 + .ra: .cfa -168 + ^ x29: .cfa -176 + ^
+STACK CFI 64ff4 .cfa: x29 176 +
+STACK CFI 64ff8 x21: .cfa -144 + ^ x22: .cfa -136 + ^
+STACK CFI 65008 x19: .cfa -160 + ^ x20: .cfa -152 + ^ x23: .cfa -128 + ^
+STACK CFI 650e4 x23: x23
+STACK CFI 650ec x19: x19 x20: x20
+STACK CFI 650f0 x21: x21 x22: x22
+STACK CFI 650f4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 650f8 48 .cfa: sp 0 + .ra: x30
+STACK CFI 650fc .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 65100 .cfa: x29 96 +
+STACK CFI 65104 x19: .cfa -80 + ^ x20: .cfa -72 + ^
+STACK CFI 65138 x19: x19 x20: x20
+STACK CFI 6513c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 4d4 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 192 + .ra: .cfa -184 + ^ x29: .cfa -192 + ^
+STACK CFI 8 .cfa: x29 192 +
+STACK CFI 20 v8: .cfa -96 + ^ x19: .cfa -176 + ^ x20: .cfa -168 + ^ x21: .cfa -160 + ^ x22: .cfa -152 + ^ x23: .cfa -144 + ^ x24: .cfa -136 + ^ x25: .cfa -128 + ^ x26: .cfa -120 + ^ x27: .cfa -112 + ^ x28: .cfa -104 + ^
+STACK CFI 4b8 x19: x19 x20: x20
+STACK CFI 4bc x21: x21 x22: x22
+STACK CFI 4c0 x23: x23 x24: x24
+STACK CFI 4c4 x25: x25 x26: x26
+STACK CFI 4c8 x27: x27 x28: x28
+STACK CFI 4cc v8: v8
+STACK CFI 4d0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 c0 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI 10 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI b4 x19: x19 x20: x20
+STACK CFI b8 x21: x21
+STACK CFI bc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 23338 28 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23360 44 .cfa: sp 0 + .ra: x30
+STACK CFI 23364 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 23368 .cfa: x29 48 +
+STACK CFI 2336c x19: .cfa -32 + ^
+STACK CFI 2339c x19: x19
+STACK CFI 233a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 65140 40 .cfa: sp 0 + .ra: x30
+STACK CFI 65144 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 65148 .cfa: x29 32 +
+STACK CFI 6514c x19: .cfa -16 + ^
+STACK CFI 65178 x19: x19
+STACK CFI 6517c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 65180 44 .cfa: sp 0 + .ra: x30
+STACK CFI 65184 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6518c .cfa: x29 32 +
+STACK CFI 65190 x19: .cfa -16 + ^
+STACK CFI 651bc x19: x19
+STACK CFI 651c0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 651c4 50 .cfa: sp 0 + .ra: x30
+STACK CFI 651c8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 651d4 .cfa: x29 32 +
+STACK CFI 651d8 x19: .cfa -16 + ^
+STACK CFI 6520c x19: x19
+STACK CFI 65210 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2eb40 18 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 65214 fc .cfa: sp 0 + .ra: x30
+STACK CFI 6521c .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 65220 .cfa: x29 96 +
+STACK CFI 6522c x19: .cfa -80 + ^ x20: .cfa -72 + ^ x23: .cfa -48 + ^
+STACK CFI 65234 x21: .cfa -64 + ^ x22: .cfa -56 + ^
+STACK CFI 65300 x19: x19 x20: x20
+STACK CFI 65304 x21: x21 x22: x22
+STACK CFI 65308 x23: x23
+STACK CFI 6530c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 65310 2b0 .cfa: sp 0 + .ra: x30
+STACK CFI 65314 .cfa: sp 112 + .ra: .cfa -104 + ^ x29: .cfa -112 + ^
+STACK CFI 65318 .cfa: x29 112 +
+STACK CFI 65328 x19: .cfa -96 + ^ x20: .cfa -88 + ^ x21: .cfa -80 + ^ x22: .cfa -72 + ^ x23: .cfa -64 + ^ x24: .cfa -56 + ^ x25: .cfa -48 + ^
+STACK CFI 65594 x25: x25
+STACK CFI 65598 x19: x19 x20: x20
+STACK CFI 6559c x21: x21 x22: x22
+STACK CFI 655a0 x23: x23 x24: x24
+STACK CFI 655a4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 655a8 .cfa: x29 112 + .ra: .cfa -104 + ^ x19: .cfa -96 + ^ x20: .cfa -88 + ^ x21: .cfa -80 + ^ x22: .cfa -72 + ^ x23: .cfa -64 + ^ x24: .cfa -56 + ^ x25: .cfa -48 + ^ x29: .cfa -112 + ^
+STACK CFI INIT 655c0 84 .cfa: sp 0 + .ra: x30
+STACK CFI 655c8 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 655cc .cfa: x29 64 +
+STACK CFI 655dc x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 65634 x19: x19 x20: x20
+STACK CFI 65638 x21: x21 x22: x22
+STACK CFI 6563c x23: x23
+STACK CFI 65640 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 65644 c4 .cfa: sp 0 + .ra: x30
+STACK CFI 65648 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 6564c .cfa: x29 48 +
+STACK CFI 65650 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 65658 x21: .cfa -16 + ^
+STACK CFI 656d8 x21: x21
+STACK CFI 656dc x19: x19 x20: x20
+STACK CFI 656e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 656f0 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x29: .cfa -48 + ^
+STACK CFI 656fc x19: x19 x20: x20
+STACK CFI 65700 x21: x21
+STACK CFI 65704 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 65708 368 .cfa: sp 0 + .ra: x30
+STACK CFI 6570c .cfa: sp 128 + .ra: .cfa -120 + ^ x29: .cfa -128 + ^
+STACK CFI 65710 .cfa: x29 128 +
+STACK CFI 65720 x19: .cfa -112 + ^ x20: .cfa -104 + ^ x21: .cfa -96 + ^ x22: .cfa -88 + ^ x23: .cfa -80 + ^ x24: .cfa -72 + ^ x25: .cfa -64 + ^ x26: .cfa -56 + ^
+STACK CFI 65a5c x19: x19 x20: x20
+STACK CFI 65a60 x21: x21 x22: x22
+STACK CFI 65a64 x23: x23 x24: x24
+STACK CFI 65a68 x25: x25 x26: x26
+STACK CFI 65a6c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 65a70 128 .cfa: sp 0 + .ra: x30
+STACK CFI 65a74 .cfa: sp 4096 +
+STACK CFI 65a78 .cfa: sp 5232 +
+STACK CFI 65a7c .cfa: sp 5296 + .ra: .cfa -5288 + ^ x29: .cfa -5296 + ^
+STACK CFI 65a80 .cfa: x29 5296 +
+STACK CFI 65a8c x19: .cfa -5280 + ^ x20: .cfa -5272 + ^ x21: .cfa -5264 + ^ x22: .cfa -5256 + ^ x23: .cfa -5248 + ^
+STACK CFI 65b80 x19: x19 x20: x20
+STACK CFI 65b84 x21: x21 x22: x22
+STACK CFI 65b88 x23: x23
+STACK CFI 65b8c .cfa: sp 5232 + .ra: .ra x29: x29
+STACK CFI 65b90 .cfa: sp 4096 +
+STACK CFI 65b94 .cfa: sp 4032 +
+STACK CFI INIT 65b98 5c .cfa: sp 0 + .ra: x30
+STACK CFI 65b9c .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 65ba4 .cfa: x29 48 +
+STACK CFI 65ba8 x19: .cfa -32 + ^
+STACK CFI 65bdc x19: x19
+STACK CFI 65be0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 65be8 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 65bec x19: x19
+STACK CFI 65bf0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 7c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 4096 +
+STACK CFI c .cfa: sp 4704 +
+STACK CFI 10 .cfa: sp 4752 + .ra: .cfa -4744 + ^ x29: .cfa -4752 + ^
+STACK CFI 14 .cfa: x29 4752 +
+STACK CFI 18 x19: .cfa -4736 + ^ x20: .cfa -4728 + ^
+STACK CFI 24 x21: .cfa -4720 + ^ x22: .cfa -4712 + ^
+STACK CFI 68 x19: x19 x20: x20
+STACK CFI 6c x21: x21 x22: x22
+STACK CFI 70 .cfa: sp 4704 + .ra: .ra x29: x29
+STACK CFI 74 .cfa: sp 4096 +
+STACK CFI 78 .cfa: sp 4048 +
+STACK CFI INIT 65bf4 190 .cfa: sp 0 + .ra: x30
+STACK CFI 65bf8 .cfa: sp 128 + .ra: .cfa -120 + ^ x29: .cfa -128 + ^
+STACK CFI 65bfc .cfa: x29 128 +
+STACK CFI 65c00 x19: .cfa -112 + ^ x20: .cfa -104 + ^
+STACK CFI 65c18 x21: .cfa -96 + ^ x22: .cfa -88 + ^ x23: .cfa -80 + ^ x24: .cfa -72 + ^ x25: .cfa -64 + ^ x26: .cfa -56 + ^
+STACK CFI 65d70 x19: x19 x20: x20
+STACK CFI 65d74 x21: x21 x22: x22
+STACK CFI 65d78 x23: x23 x24: x24
+STACK CFI 65d7c x25: x25 x26: x26
+STACK CFI 65d80 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 65d84 b8 .cfa: sp 0 + .ra: x30
+STACK CFI 65d88 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 65d8c .cfa: x29 64 +
+STACK CFI 65d94 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 65e30 x19: x19 x20: x20
+STACK CFI 65e34 x21: x21
+STACK CFI 65e38 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 65e3c 68 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 65ea4 40 .cfa: sp 0 + .ra: x30
+STACK CFI 65ea8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 65eac .cfa: x29 32 +
+STACK CFI 65eb0 x19: .cfa -16 + ^
+STACK CFI 65edc x19: x19
+STACK CFI 65ee0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 65ee4 130 .cfa: sp 0 + .ra: x30
+STACK CFI 65ee8 .cfa: sp 4096 +
+STACK CFI 65eec .cfa: sp 5232 +
+STACK CFI 65ef0 .cfa: sp 5280 + .ra: .cfa -5272 + ^ x29: .cfa -5280 + ^
+STACK CFI 65ef4 .cfa: x29 5280 +
+STACK CFI 65efc x19: .cfa -5264 + ^ x20: .cfa -5256 + ^ x21: .cfa -5248 + ^ x22: .cfa -5240 + ^
+STACK CFI 65ffc x19: x19 x20: x20
+STACK CFI 66000 x21: x21 x22: x22
+STACK CFI 66004 .cfa: sp 5232 + .ra: .ra x29: x29
+STACK CFI 6600c .cfa: sp 4096 +
+STACK CFI 66010 .cfa: sp 4048 +
+STACK CFI INIT 66014 b4 .cfa: sp 0 + .ra: x30
+STACK CFI 66018 .cfa: sp 592 +
+STACK CFI 6601c .cfa: sp 640 + .ra: .cfa -632 + ^ x29: .cfa -640 + ^
+STACK CFI 66020 .cfa: x29 640 +
+STACK CFI 66028 x19: .cfa -624 + ^ x20: .cfa -616 + ^ x21: .cfa -608 + ^ x22: .cfa -600 + ^
+STACK CFI 660b8 x19: x19 x20: x20
+STACK CFI 660bc x21: x21 x22: x22
+STACK CFI 660c0 .cfa: sp 592 + .ra: .ra x29: x29
+STACK CFI 660c4 .cfa: sp 544 +
+STACK CFI INIT 660c8 84 .cfa: sp 0 + .ra: x30
+STACK CFI 660cc .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 660d0 .cfa: x29 64 +
+STACK CFI 660d4 x19: .cfa -48 + ^
+STACK CFI 66144 x19: x19
+STACK CFI 66148 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6614c 48 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 248e8 30 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 66194 258 .cfa: sp 0 + .ra: x30
+STACK CFI 66198 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 6619c .cfa: x29 96 +
+STACK CFI 661a0 x21: .cfa -64 + ^ x22: .cfa -56 + ^
+STACK CFI 661a8 x19: .cfa -80 + ^ x20: .cfa -72 + ^
+STACK CFI 663e0 x19: x19 x20: x20
+STACK CFI 663e4 x21: x21 x22: x22
+STACK CFI 663e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 54 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^
+STACK CFI 4c x19: x19
+STACK CFI 50 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 68 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 14 x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 5c x19: x19 x20: x20
+STACK CFI 60 x21: x21 x22: x22
+STACK CFI 64 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 663ec cc .cfa: sp 0 + .ra: x30
+STACK CFI 663f0 .cfa: sp 192 + .ra: .cfa -184 + ^ x29: .cfa -192 + ^
+STACK CFI 663f4 .cfa: x29 192 +
+STACK CFI 663fc x19: .cfa -176 + ^ x20: .cfa -168 + ^ x21: .cfa -160 + ^ x22: .cfa -152 + ^
+STACK CFI 664ac x19: x19 x20: x20
+STACK CFI 664b0 x21: x21 x22: x22
+STACK CFI 664b4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 c4 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 384 + .ra: .cfa -376 + ^ x29: .cfa -384 + ^
+STACK CFI 10 .cfa: x29 384 +
+STACK CFI 14 x21: .cfa -352 + ^ x22: .cfa -344 + ^
+STACK CFI 38 x19: .cfa -368 + ^ x20: .cfa -360 + ^
+STACK CFI b8 x19: x19 x20: x20
+STACK CFI bc x21: x21 x22: x22
+STACK CFI c0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2eb40 18 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 24844 40 .cfa: sp 0 + .ra: x30
+STACK CFI 24848 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 24854 .cfa: x29 32 +
+STACK CFI 24858 x19: .cfa -16 + ^
+STACK CFI 2487c x19: x19
+STACK CFI 24880 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 248e8 30 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 54 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^
+STACK CFI 4c x19: x19
+STACK CFI 50 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 664b8 a4 .cfa: sp 0 + .ra: x30
+STACK CFI 664bc .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 664c0 .cfa: x29 64 +
+STACK CFI 664c8 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 664d0 x23: .cfa -16 + ^
+STACK CFI 66544 x21: x21 x22: x22
+STACK CFI 66550 x23: x23
+STACK CFI 66554 x19: x19 x20: x20
+STACK CFI 66558 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25b54 5c .cfa: sp 0 + .ra: x30
+STACK CFI 25b58 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 25b5c .cfa: x29 16 +
+STACK CFI 25bac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 170 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI c .cfa: x29 80 +
+STACK CFI 18 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI 160 x23: x23
+STACK CFI 164 x19: x19 x20: x20
+STACK CFI 168 x21: x21 x22: x22
+STACK CFI 16c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 a8 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 18 x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 9c x19: x19 x20: x20
+STACK CFI a0 x21: x21 x22: x22
+STACK CFI a4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 15c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI c x21: .cfa -48 + ^ x22: .cfa -40 + ^
+STACK CFI 1c x19: .cfa -64 + ^ x20: .cfa -56 + ^ x23: .cfa -32 + ^
+STACK CFI 14c x23: x23
+STACK CFI 150 x19: x19 x20: x20
+STACK CFI 154 x21: x21 x22: x22
+STACK CFI 158 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6655c f0 .cfa: sp 0 + .ra: x30
+STACK CFI 66560 .cfa: sp 272 + .ra: .cfa -264 + ^ x29: .cfa -272 + ^
+STACK CFI 66564 .cfa: x29 272 +
+STACK CFI 66568 x19: .cfa -256 + ^ x20: .cfa -248 + ^
+STACK CFI 6657c x21: .cfa -240 + ^ x22: .cfa -232 + ^ x23: .cfa -224 + ^
+STACK CFI 66634 x23: x23
+STACK CFI 66640 x21: x21 x22: x22
+STACK CFI 66644 x19: x19 x20: x20
+STACK CFI 66648 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6664c 88 .cfa: sp 0 + .ra: x30
+STACK CFI 66650 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 66654 .cfa: x29 32 +
+STACK CFI 66658 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 666cc x19: x19 x20: x20
+STACK CFI 666d0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 666d4 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 666e8 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 666f4 40 .cfa: sp 0 + .ra: x30
+STACK CFI 666f8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 66710 .cfa: x29 32 +
+STACK CFI 66730 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 66734 4c .cfa: sp 0 + .ra: x30
+STACK CFI 66738 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 66744 .cfa: x29 48 +
+STACK CFI 6677c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 66780 44 .cfa: sp 0 + .ra: x30
+STACK CFI 66784 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 66788 .cfa: x29 32 +
+STACK CFI 6678c x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 667b4 x19: x19 x20: x20
+STACK CFI 667b8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 667c4 220 .cfa: sp 0 + .ra: x30
+STACK CFI 667c8 .cfa: sp 544 +
+STACK CFI 667d0 .cfa: sp 608 + .ra: .cfa -600 + ^ x29: .cfa -608 + ^
+STACK CFI 667d4 .cfa: x29 608 +
+STACK CFI 667e0 x19: .cfa -592 + ^ x20: .cfa -584 + ^ x21: .cfa -576 + ^ x22: .cfa -568 + ^ x23: .cfa -560 + ^
+STACK CFI 669d0 x23: x23
+STACK CFI 669d4 x19: x19 x20: x20
+STACK CFI 669d8 x21: x21 x22: x22
+STACK CFI 669dc .cfa: sp 544 + .ra: .ra x29: x29
+STACK CFI 669e0 .cfa: sp 480 +
+STACK CFI INIT 669e4 678 .cfa: sp 0 + .ra: x30
+STACK CFI 669e8 .cfa: sp 1120 +
+STACK CFI 669f0 .cfa: sp 1248 + .ra: .cfa -1240 + ^ x29: .cfa -1248 + ^
+STACK CFI 669f4 .cfa: x29 1248 +
+STACK CFI 669fc v8: .cfa -1152 + ^ v9: .cfa -1144 + ^ x21: .cfa -1216 + ^ x22: .cfa -1208 + ^
+STACK CFI 66a08 x19: .cfa -1232 + ^ x20: .cfa -1224 + ^
+STACK CFI 66a24 v10: .cfa -1136 + ^ x23: .cfa -1200 + ^ x24: .cfa -1192 + ^ x25: .cfa -1184 + ^ x26: .cfa -1176 + ^ x27: .cfa -1168 + ^ x28: .cfa -1160 + ^
+STACK CFI 67038 v8: v8 v9: v9
+STACK CFI 6703c x19: x19 x20: x20
+STACK CFI 67040 x21: x21 x22: x22
+STACK CFI 67044 x23: x23 x24: x24
+STACK CFI 67048 x25: x25 x26: x26
+STACK CFI 6704c x27: x27 x28: x28
+STACK CFI 67050 v10: v10
+STACK CFI 67054 .cfa: sp 1120 + .ra: .ra x29: x29
+STACK CFI 67058 .cfa: sp 992 +
+STACK CFI INIT 6705c 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 67064 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6706c 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 67074 64 .cfa: sp 0 + .ra: x30
+STACK CFI 67078 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6707c .cfa: x29 32 +
+STACK CFI 670d4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 670d8 54 .cfa: sp 0 + .ra: x30
+STACK CFI 670dc .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 670e8 .cfa: x29 48 +
+STACK CFI 670f0 x19: .cfa -32 + ^
+STACK CFI 67110 x19: x19
+STACK CFI 67114 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 67120 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 67124 x19: x19
+STACK CFI 67128 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6712c b4 .cfa: sp 0 + .ra: x30
+STACK CFI 67130 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 67134 .cfa: x29 80 +
+STACK CFI 67144 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^ x25: .cfa -16 + ^
+STACK CFI 671cc x19: x19 x20: x20
+STACK CFI 671d0 x21: x21 x22: x22
+STACK CFI 671d4 x23: x23 x24: x24
+STACK CFI 671d8 x25: x25
+STACK CFI 671dc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 671e0 90 .cfa: sp 0 + .ra: x30
+STACK CFI 671e4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 671ec .cfa: x29 64 +
+STACK CFI 671f0 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 67204 x23: .cfa -16 + ^
+STACK CFI 67214 x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 67258 x23: x23
+STACK CFI 67264 x19: x19 x20: x20
+STACK CFI 67268 x21: x21 x22: x22
+STACK CFI 6726c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 30 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI c .cfa: x29 32 +
+STACK CFI 10 x19: .cfa -16 + ^
+STACK CFI 28 x19: x19
+STACK CFI 2c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 35680 24 .cfa: sp 0 + .ra: x30
+STACK CFI 35684 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 35688 .cfa: x29 32 +
+STACK CFI 3568c x19: .cfa -16 + ^
+STACK CFI 3569c x19: x19
+STACK CFI 356a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4bd0c fc .cfa: sp 0 + .ra: x30
+STACK CFI 4bd10 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 4bd18 .cfa: x29 32 +
+STACK CFI 4bd1c x19: .cfa -16 + ^
+STACK CFI 4be00 x19: x19
+STACK CFI 4be04 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 67270 84 .cfa: sp 0 + .ra: x30
+STACK CFI 67274 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 67278 .cfa: x29 48 +
+STACK CFI 6727c x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 672ec x19: x19 x20: x20
+STACK CFI 672f0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 672f4 190 .cfa: sp 0 + .ra: x30
+STACK CFI 672f8 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 672fc .cfa: x29 96 +
+STACK CFI 67300 x19: .cfa -80 + ^ x20: .cfa -72 + ^
+STACK CFI 67314 x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^ x25: .cfa -32 + ^ x26: .cfa -24 + ^ x27: .cfa -16 + ^
+STACK CFI 6746c x21: x21 x22: x22
+STACK CFI 67470 x19: x19 x20: x20
+STACK CFI 67474 x23: x23 x24: x24
+STACK CFI 67478 x25: x25 x26: x26
+STACK CFI 6747c x27: x27
+STACK CFI 67480 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 67484 2b4 .cfa: sp 0 + .ra: x30
+STACK CFI 67488 .cfa: sp 864 +
+STACK CFI 6748c .cfa: sp 976 + .ra: .cfa -968 + ^ x29: .cfa -976 + ^
+STACK CFI 67490 .cfa: x29 976 +
+STACK CFI 67498 x19: .cfa -960 + ^ x20: .cfa -952 + ^ x23: .cfa -928 + ^ x24: .cfa -920 + ^
+STACK CFI 674b8 v8: .cfa -880 + ^ x21: .cfa -944 + ^ x22: .cfa -936 + ^ x25: .cfa -912 + ^ x26: .cfa -904 + ^ x27: .cfa -896 + ^ x28: .cfa -888 + ^
+STACK CFI 67718 x19: x19 x20: x20
+STACK CFI 6771c x21: x21 x22: x22
+STACK CFI 67720 x23: x23 x24: x24
+STACK CFI 67724 x25: x25 x26: x26
+STACK CFI 67728 x27: x27 x28: x28
+STACK CFI 6772c v8: v8
+STACK CFI 67730 .cfa: sp 864 + .ra: .ra x29: x29
+STACK CFI 67734 .cfa: sp 752 +
+STACK CFI INIT 67738 60 .cfa: sp 0 + .ra: x30
+STACK CFI 6773c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 67744 .cfa: x29 32 +
+STACK CFI 67748 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 67768 x19: x19 x20: x20
+STACK CFI 6776c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 67770 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x20: .cfa -8 + ^ x29: .cfa -32 + ^
+STACK CFI 67790 x19: x19 x20: x20
+STACK CFI 67794 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 67798 1ac .cfa: sp 0 + .ra: x30
+STACK CFI 6779c .cfa: sp 416 + .ra: .cfa -408 + ^ x29: .cfa -416 + ^
+STACK CFI 677a0 .cfa: x29 416 +
+STACK CFI 677a8 x19: .cfa -400 + ^ x20: .cfa -392 + ^ x25: .cfa -352 + ^ x26: .cfa -344 + ^
+STACK CFI 677c0 x21: .cfa -384 + ^ x22: .cfa -376 + ^ x23: .cfa -368 + ^ x24: .cfa -360 + ^ x27: .cfa -336 + ^
+STACK CFI 6792c x27: x27
+STACK CFI 67930 x19: x19 x20: x20
+STACK CFI 67934 x21: x21 x22: x22
+STACK CFI 67938 x23: x23 x24: x24
+STACK CFI 6793c x25: x25 x26: x26
+STACK CFI 67940 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 67944 120 .cfa: sp 0 + .ra: x30
+STACK CFI 67948 .cfa: sp 768 +
+STACK CFI 67954 .cfa: sp 832 + .ra: .cfa -824 + ^ x29: .cfa -832 + ^
+STACK CFI 67958 .cfa: x29 832 +
+STACK CFI 67960 x19: .cfa -816 + ^ x20: .cfa -808 + ^ x23: .cfa -784 + ^
+STACK CFI 67968 x21: .cfa -800 + ^ x22: .cfa -792 + ^
+STACK CFI 67a50 x23: x23
+STACK CFI 67a54 x19: x19 x20: x20
+STACK CFI 67a58 x21: x21 x22: x22
+STACK CFI 67a5c .cfa: sp 768 + .ra: .ra x29: x29
+STACK CFI 67a60 .cfa: sp 704 +
+STACK CFI INIT 430ec 38 .cfa: sp 0 + .ra: x30
+STACK CFI 430f0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 430fc .cfa: x29 32 +
+STACK CFI 43100 x19: .cfa -16 + ^
+STACK CFI 4311c x19: x19
+STACK CFI 43120 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24844 40 .cfa: sp 0 + .ra: x30
+STACK CFI 24848 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 24854 .cfa: x29 32 +
+STACK CFI 24858 x19: .cfa -16 + ^
+STACK CFI 2487c x19: x19
+STACK CFI 24880 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4bd0c fc .cfa: sp 0 + .ra: x30
+STACK CFI 4bd10 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 4bd18 .cfa: x29 32 +
+STACK CFI 4bd1c x19: .cfa -16 + ^
+STACK CFI 4be00 x19: x19
+STACK CFI 4be04 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 32c34 20 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 67a64 70 .cfa: sp 0 + .ra: x30
+STACK CFI 67a68 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 67a6c .cfa: x29 48 +
+STACK CFI 67a70 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 67a78 x21: .cfa -16 + ^
+STACK CFI 67ac8 x19: x19 x20: x20
+STACK CFI 67acc x21: x21
+STACK CFI 67ad0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^
+STACK CFI 1c x19: x19
+STACK CFI 20 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 67ad4 fc .cfa: sp 0 + .ra: x30
+STACK CFI 67ad8 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 67adc .cfa: x29 64 +
+STACK CFI 67ae0 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 67af8 x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 67b6c x23: x23
+STACK CFI 67b7c x19: x19 x20: x20
+STACK CFI 67b80 x21: x21 x22: x22
+STACK CFI 67b84 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 67b88 .cfa: x29 64 + .ra: .cfa -56 + ^ x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^ x29: .cfa -64 + ^
+STACK CFI 67bac x21: x21 x22: x22
+STACK CFI 67bb0 x19: x19 x20: x20
+STACK CFI 67bb4 x23: x23
+STACK CFI 67bb8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 67bbc .cfa: x29 64 + .ra: .cfa -56 + ^ x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^ x29: .cfa -64 + ^
+STACK CFI 67bc0 x19: x19 x20: x20
+STACK CFI 67bc4 x21: x21 x22: x22
+STACK CFI 67bc8 x23: x23
+STACK CFI 67bcc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 67bd0 11c .cfa: sp 0 + .ra: x30
+STACK CFI 67bd4 .cfa: sp 320 + .ra: .cfa -312 + ^ x29: .cfa -320 + ^
+STACK CFI 67bdc .cfa: x29 320 +
+STACK CFI 67be4 x19: .cfa -304 + ^ x20: .cfa -296 + ^ x21: .cfa -288 + ^ x22: .cfa -280 + ^
+STACK CFI 67ce0 x19: x19 x20: x20
+STACK CFI 67ce4 x21: x21 x22: x22
+STACK CFI 67ce8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 67cec 5c .cfa: sp 0 + .ra: x30
+STACK CFI 67cf0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 67cf4 .cfa: x29 32 +
+STACK CFI 67cf8 x19: .cfa -16 + ^
+STACK CFI 67d40 x19: x19
+STACK CFI 67d44 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 67d48 4c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 67d94 84 .cfa: sp 0 + .ra: x30
+STACK CFI 67d98 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 67d9c .cfa: x29 64 +
+STACK CFI 67da4 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 67e0c x19: x19 x20: x20
+STACK CFI 67e10 x21: x21 x22: x22
+STACK CFI 67e14 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 67e18 64 .cfa: sp 0 + .ra: x30
+STACK CFI 67e1c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 67e20 .cfa: x29 32 +
+STACK CFI 67e24 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 67e64 x19: x19 x20: x20
+STACK CFI 67e68 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 67e6c .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x20: .cfa -8 + ^ x29: .cfa -32 + ^
+STACK CFI 67e74 x19: x19 x20: x20
+STACK CFI 67e78 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 67e7c 1bc .cfa: sp 0 + .ra: x30
+STACK CFI 67e80 .cfa: sp 368 + .ra: .cfa -360 + ^ x29: .cfa -368 + ^
+STACK CFI 67e84 .cfa: x29 368 +
+STACK CFI 67e90 x19: .cfa -352 + ^ x20: .cfa -344 + ^ x21: .cfa -336 + ^ x22: .cfa -328 + ^ x25: .cfa -304 + ^ x26: .cfa -296 + ^
+STACK CFI 67eb0 x23: .cfa -320 + ^ x24: .cfa -312 + ^ x27: .cfa -288 + ^
+STACK CFI 68020 x27: x27
+STACK CFI 68024 x19: x19 x20: x20
+STACK CFI 68028 x21: x21 x22: x22
+STACK CFI 6802c x23: x23 x24: x24
+STACK CFI 68030 x25: x25 x26: x26
+STACK CFI 68034 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 68038 f4 .cfa: sp 0 + .ra: x30
+STACK CFI 6803c .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 68040 .cfa: x29 80 +
+STACK CFI 6804c x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^
+STACK CFI 6811c x21: x21 x22: x22
+STACK CFI 68120 x19: x19 x20: x20
+STACK CFI 68124 x23: x23 x24: x24
+STACK CFI 68128 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6812c 148 .cfa: sp 0 + .ra: x30
+STACK CFI 68130 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 68134 .cfa: x29 96 +
+STACK CFI 68144 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^ x25: .cfa -32 + ^
+STACK CFI 68260 x19: x19 x20: x20
+STACK CFI 68264 x21: x21 x22: x22
+STACK CFI 68268 x23: x23 x24: x24
+STACK CFI 6826c x25: x25
+STACK CFI 68270 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 68274 100 .cfa: sp 0 + .ra: x30
+STACK CFI 68278 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 6827c .cfa: x29 64 +
+STACK CFI 68280 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 68294 x21: .cfa -32 + ^
+STACK CFI 68368 x21: x21
+STACK CFI 6836c x19: x19 x20: x20
+STACK CFI 68370 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 68374 148 .cfa: sp 0 + .ra: x30
+STACK CFI 68378 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 6837c .cfa: x29 96 +
+STACK CFI 6838c x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^ x25: .cfa -32 + ^
+STACK CFI 684a8 x19: x19 x20: x20
+STACK CFI 684ac x21: x21 x22: x22
+STACK CFI 684b0 x23: x23 x24: x24
+STACK CFI 684b4 x25: x25
+STACK CFI 684b8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 684bc 58c .cfa: sp 0 + .ra: x30
+STACK CFI 684c0 .cfa: sp 464 + .ra: .cfa -456 + ^ x29: .cfa -464 + ^
+STACK CFI 684c8 .cfa: x29 464 +
+STACK CFI 684e8 v10: .cfa -352 + ^ v11: .cfa -344 + ^ v12: .cfa -336 + ^ v13: .cfa -328 + ^ v8: .cfa -368 + ^ v9: .cfa -360 + ^ x19: .cfa -448 + ^ x20: .cfa -440 + ^ x21: .cfa -432 + ^ x22: .cfa -424 + ^ x23: .cfa -416 + ^ x24: .cfa -408 + ^ x25: .cfa -400 + ^ x26: .cfa -392 + ^ x27: .cfa -384 + ^ x28: .cfa -376 + ^
+STACK CFI 68a24 x19: x19 x20: x20
+STACK CFI 68a28 v8: v8 v9: v9
+STACK CFI 68a2c x21: x21 x22: x22
+STACK CFI 68a30 v10: v10 v11: v11
+STACK CFI 68a34 x23: x23 x24: x24
+STACK CFI 68a38 v12: v12 v13: v13
+STACK CFI 68a3c x25: x25 x26: x26
+STACK CFI 68a40 x27: x27 x28: x28
+STACK CFI 68a44 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 68a48 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 68a50 48 .cfa: sp 0 + .ra: x30
+STACK CFI 68a54 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 68a60 .cfa: x29 32 +
+STACK CFI 68a64 x19: .cfa -16 + ^
+STACK CFI 68a90 x19: x19
+STACK CFI 68a94 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 68a98 a0 .cfa: sp 0 + .ra: x30
+STACK CFI 68a9c .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 68aa4 .cfa: x29 96 +
+STACK CFI 68aa8 x21: .cfa -64 + ^ x22: .cfa -56 + ^
+STACK CFI 68abc x19: .cfa -80 + ^ x20: .cfa -72 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^ x25: .cfa -32 + ^ x26: .cfa -24 + ^
+STACK CFI 68b24 x19: x19 x20: x20
+STACK CFI 68b28 x21: x21 x22: x22
+STACK CFI 68b2c x23: x23 x24: x24
+STACK CFI 68b30 x25: x25 x26: x26
+STACK CFI 68b34 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 389d0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 389d4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 389d8 .cfa: x29 32 +
+STACK CFI 389dc x19: .cfa -16 + ^
+STACK CFI 389ec x19: x19
+STACK CFI 389f0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 68b38 e4 .cfa: sp 0 + .ra: x30
+STACK CFI 68b3c .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 68b44 .cfa: x29 80 +
+STACK CFI 68b48 x19: .cfa -64 + ^ x20: .cfa -56 + ^
+STACK CFI 68b64 x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^ x25: .cfa -16 + ^
+STACK CFI 68c08 x19: x19 x20: x20
+STACK CFI 68c0c x21: x21 x22: x22
+STACK CFI 68c10 x23: x23 x24: x24
+STACK CFI 68c14 x25: x25
+STACK CFI 68c18 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 68c1c 78 .cfa: sp 0 + .ra: x30
+STACK CFI 68c20 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 68c24 .cfa: x29 48 +
+STACK CFI 68c2c x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 68c88 x21: x21
+STACK CFI 68c8c x19: x19 x20: x20
+STACK CFI 68c90 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4bd0c fc .cfa: sp 0 + .ra: x30
+STACK CFI 4bd10 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 4bd18 .cfa: x29 32 +
+STACK CFI 4bd1c x19: .cfa -16 + ^
+STACK CFI 4be00 x19: x19
+STACK CFI 4be04 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 68c94 2dc .cfa: sp 0 + .ra: x30
+STACK CFI 68c98 .cfa: sp 384 + .ra: .cfa -376 + ^ x29: .cfa -384 + ^
+STACK CFI 68c9c .cfa: x29 384 +
+STACK CFI 68cb0 x19: .cfa -368 + ^ x20: .cfa -360 + ^ x21: .cfa -352 + ^ x22: .cfa -344 + ^ x23: .cfa -336 + ^ x24: .cfa -328 + ^ x25: .cfa -320 + ^ x26: .cfa -312 + ^ x27: .cfa -304 + ^ x28: .cfa -296 + ^
+STACK CFI 68f58 x19: x19 x20: x20
+STACK CFI 68f5c x21: x21 x22: x22
+STACK CFI 68f60 x23: x23 x24: x24
+STACK CFI 68f64 x25: x25 x26: x26
+STACK CFI 68f68 x27: x27 x28: x28
+STACK CFI 68f6c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 68f70 30 .cfa: sp 0 + .ra: x30
+STACK CFI 68f74 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 68f78 .cfa: x29 32 +
+STACK CFI 68f7c x19: .cfa -16 + ^
+STACK CFI 68f98 x19: x19
+STACK CFI 68f9c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 68fa0 110 .cfa: sp 0 + .ra: x30
+STACK CFI 68fa4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 68fa8 .cfa: x29 80 +
+STACK CFI 68fac x19: .cfa -64 + ^ x20: .cfa -56 + ^
+STACK CFI 68fbc x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^ x25: .cfa -16 + ^ x26: .cfa -8 + ^
+STACK CFI 6909c x21: x21 x22: x22
+STACK CFI 690a0 x19: x19 x20: x20
+STACK CFI 690a4 x23: x23 x24: x24
+STACK CFI 690a8 x25: x25 x26: x26
+STACK CFI 690ac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 690b0 240 .cfa: sp 0 + .ra: x30
+STACK CFI 690b4 .cfa: sp 384 + .ra: .cfa -376 + ^ x29: .cfa -384 + ^
+STACK CFI 690bc .cfa: x29 384 +
+STACK CFI 690d4 v8: .cfa -288 + ^ x19: .cfa -368 + ^ x20: .cfa -360 + ^ x21: .cfa -352 + ^ x22: .cfa -344 + ^ x23: .cfa -336 + ^ x24: .cfa -328 + ^ x25: .cfa -320 + ^ x26: .cfa -312 + ^ x27: .cfa -304 + ^ x28: .cfa -296 + ^
+STACK CFI 692d4 x19: x19 x20: x20
+STACK CFI 692d8 x21: x21 x22: x22
+STACK CFI 692dc x23: x23 x24: x24
+STACK CFI 692e0 x25: x25 x26: x26
+STACK CFI 692e4 x27: x27 x28: x28
+STACK CFI 692e8 v8: v8
+STACK CFI 692ec .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 692f0 154 .cfa: sp 0 + .ra: x30
+STACK CFI 692f4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 692f8 .cfa: x29 80 +
+STACK CFI 69304 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^
+STACK CFI 69434 x19: x19 x20: x20
+STACK CFI 69438 x21: x21 x22: x22
+STACK CFI 6943c x23: x23 x24: x24
+STACK CFI 69440 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 69444 1a4 .cfa: sp 0 + .ra: x30
+STACK CFI 69448 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 6944c .cfa: x29 96 +
+STACK CFI 6945c x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^ x25: .cfa -32 + ^ x26: .cfa -24 + ^
+STACK CFI 695d4 x19: x19 x20: x20
+STACK CFI 695d8 x21: x21 x22: x22
+STACK CFI 695dc x23: x23 x24: x24
+STACK CFI 695e0 x25: x25 x26: x26
+STACK CFI 695e4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 695e8 44 .cfa: sp 0 + .ra: x30
+STACK CFI 695ec .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 695f4 .cfa: x29 32 +
+STACK CFI 695f8 x19: .cfa -16 + ^
+STACK CFI 69624 x19: x19
+STACK CFI 69628 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 20648 44 .cfa: sp 0 + .ra: x30
+STACK CFI 2064c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 20654 .cfa: x29 32 +
+STACK CFI 20658 x19: .cfa -16 + ^
+STACK CFI 20684 x19: x19
+STACK CFI 20688 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6962c 78 .cfa: sp 0 + .ra: x30
+STACK CFI 69630 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 69634 .cfa: x29 32 +
+STACK CFI 69638 x19: .cfa -16 + ^
+STACK CFI 6969c x19: x19
+STACK CFI 696a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 696a4 50 .cfa: sp 0 + .ra: x30
+STACK CFI 696a8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 696b4 .cfa: x29 32 +
+STACK CFI 696b8 x19: .cfa -16 + ^
+STACK CFI 696ec x19: x19
+STACK CFI 696f0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 696f4 184 .cfa: sp 0 + .ra: x30
+STACK CFI 696f8 .cfa: sp 848 +
+STACK CFI 696fc .cfa: sp 928 + .ra: .cfa -920 + ^ x29: .cfa -928 + ^
+STACK CFI 69700 .cfa: x29 928 +
+STACK CFI 69708 x19: .cfa -912 + ^ x20: .cfa -904 + ^ x21: .cfa -896 + ^ x22: .cfa -888 + ^
+STACK CFI 69718 x23: .cfa -880 + ^ x24: .cfa -872 + ^
+STACK CFI 69738 x25: .cfa -864 + ^ x26: .cfa -856 + ^
+STACK CFI 69860 x19: x19 x20: x20
+STACK CFI 69864 x21: x21 x22: x22
+STACK CFI 69868 x23: x23 x24: x24
+STACK CFI 6986c x25: x25 x26: x26
+STACK CFI 69870 .cfa: sp 848 + .ra: .ra x29: x29
+STACK CFI 69874 .cfa: sp 768 +
+STACK CFI INIT 69878 48 .cfa: sp 0 + .ra: x30
+STACK CFI 6987c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 69880 .cfa: x29 32 +
+STACK CFI 69884 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 698b8 x19: x19 x20: x20
+STACK CFI 698bc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 698c0 ec .cfa: sp 0 + .ra: x30
+STACK CFI 698c4 .cfa: sp 272 + .ra: .cfa -264 + ^ x29: .cfa -272 + ^
+STACK CFI 698cc .cfa: x29 272 +
+STACK CFI 698d0 x19: .cfa -256 + ^ x20: .cfa -248 + ^
+STACK CFI 698e4 x23: .cfa -224 + ^
+STACK CFI 698f0 x21: .cfa -240 + ^ x22: .cfa -232 + ^
+STACK CFI 6999c x23: x23
+STACK CFI 699a0 x19: x19 x20: x20
+STACK CFI 699a4 x21: x21 x22: x22
+STACK CFI 699a8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 4bd0c fc .cfa: sp 0 + .ra: x30
+STACK CFI 4bd10 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 4bd18 .cfa: x29 32 +
+STACK CFI 4bd1c x19: .cfa -16 + ^
+STACK CFI 4be00 x19: x19
+STACK CFI 4be04 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2068c 16c .cfa: sp 0 + .ra: x30
+STACK CFI 20690 .cfa: sp 112 + .ra: .cfa -104 + ^ x29: .cfa -112 + ^
+STACK CFI 20694 .cfa: x29 112 +
+STACK CFI 20698 x21: .cfa -80 + ^ x22: .cfa -72 + ^
+STACK CFI 206ac x19: .cfa -96 + ^ x20: .cfa -88 + ^ x23: .cfa -64 + ^ x24: .cfa -56 + ^ x25: .cfa -48 + ^
+STACK CFI 207e4 x25: x25
+STACK CFI 207e8 x19: x19 x20: x20
+STACK CFI 207ec x21: x21 x22: x22
+STACK CFI 207f0 x23: x23 x24: x24
+STACK CFI 207f4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 207f8 5c .cfa: sp 0 + .ra: x30
+STACK CFI 207fc .cfa: sp 304 + .ra: .cfa -296 + ^ x29: .cfa -304 + ^
+STACK CFI 20800 .cfa: x29 304 +
+STACK CFI 20808 x19: .cfa -288 + ^ x20: .cfa -280 + ^ x21: .cfa -272 + ^
+STACK CFI 20848 x19: x19 x20: x20
+STACK CFI 2084c x21: x21
+STACK CFI 20850 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 164 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 528 +
+STACK CFI c .cfa: sp 608 + .ra: .cfa -600 + ^ x29: .cfa -608 + ^
+STACK CFI 10 .cfa: x29 608 +
+STACK CFI 14 x19: .cfa -592 + ^ x20: .cfa -584 + ^
+STACK CFI 1c x25: .cfa -544 + ^ x26: .cfa -536 + ^
+STACK CFI 30 x21: .cfa -576 + ^ x22: .cfa -568 + ^ x23: .cfa -560 + ^ x24: .cfa -552 + ^
+STACK CFI 14c x19: x19 x20: x20
+STACK CFI 150 x21: x21 x22: x22
+STACK CFI 154 x23: x23 x24: x24
+STACK CFI 158 x25: x25 x26: x26
+STACK CFI 15c .cfa: sp 528 + .ra: .ra x29: x29
+STACK CFI 160 .cfa: sp 448 +
+STACK CFI INIT 0 1a8 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 8 .cfa: x29 96 +
+STACK CFI 1c x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^ x25: .cfa -32 + ^ x26: .cfa -24 + ^ x27: .cfa -16 + ^
+STACK CFI 190 x19: x19 x20: x20
+STACK CFI 194 x21: x21 x22: x22
+STACK CFI 198 x23: x23 x24: x24
+STACK CFI 19c x25: x25 x26: x26
+STACK CFI 1a0 x27: x27
+STACK CFI 1a4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 699ac 18 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 699c4 28 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 699ec 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 69a00 120 .cfa: sp 0 + .ra: x30
+STACK CFI 69a04 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 69a08 .cfa: x29 80 +
+STACK CFI 69a0c x19: .cfa -64 + ^ x20: .cfa -56 + ^
+STACK CFI 69a18 x21: .cfa -48 + ^ x22: .cfa -40 + ^
+STACK CFI 69b14 x19: x19 x20: x20
+STACK CFI 69b18 x21: x21 x22: x22
+STACK CFI 69b1c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 69b20 2c8 .cfa: sp 0 + .ra: x30
+STACK CFI 69b24 .cfa: sp 224 + .ra: .cfa -216 + ^ x29: .cfa -224 + ^
+STACK CFI 69b28 .cfa: x29 224 +
+STACK CFI 69b38 x19: .cfa -208 + ^ x20: .cfa -200 + ^ x21: .cfa -192 + ^ x22: .cfa -184 + ^ x23: .cfa -176 + ^ x24: .cfa -168 + ^ x25: .cfa -160 + ^
+STACK CFI 69dd4 x25: x25
+STACK CFI 69dd8 x19: x19 x20: x20
+STACK CFI 69ddc x21: x21 x22: x22
+STACK CFI 69de0 x23: x23 x24: x24
+STACK CFI 69de4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 69de8 28 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 69e10 b8 .cfa: sp 0 + .ra: x30
+STACK CFI 69e14 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 69e18 .cfa: x29 64 +
+STACK CFI 69e24 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 69eb8 x19: x19 x20: x20
+STACK CFI 69ebc x21: x21 x22: x22
+STACK CFI 69ec0 x23: x23
+STACK CFI 69ec4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 40 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 38 x19: x19 x20: x20
+STACK CFI 3c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 44 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 3c x19: x19 x20: x20
+STACK CFI 40 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 69ec8 17c .cfa: sp 0 + .ra: x30
+STACK CFI 69ecc .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 69ed0 .cfa: x29 64 +
+STACK CFI 69ed4 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 69edc x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 6a038 x21: x21 x22: x22
+STACK CFI 6a03c x19: x19 x20: x20
+STACK CFI 6a040 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6a044 54 .cfa: sp 0 + .ra: x30
+STACK CFI 6a048 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6a054 .cfa: x29 32 +
+STACK CFI 6a094 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6a098 124 .cfa: sp 0 + .ra: x30
+STACK CFI 6a09c .cfa: sp 112 + .ra: .cfa -104 + ^ x29: .cfa -112 + ^
+STACK CFI 6a0a0 .cfa: x29 112 +
+STACK CFI 6a0ac x19: .cfa -96 + ^ x20: .cfa -88 + ^ x21: .cfa -80 + ^ x22: .cfa -72 + ^ x23: .cfa -64 + ^
+STACK CFI 6a1ac x23: x23
+STACK CFI 6a1b0 x19: x19 x20: x20
+STACK CFI 6a1b4 x21: x21 x22: x22
+STACK CFI 6a1b8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6a1bc 4c8 .cfa: sp 0 + .ra: x30
+STACK CFI 6a1c0 .cfa: sp 1760 +
+STACK CFI 6a1c4 .cfa: sp 1904 + .ra: .cfa -1896 + ^ x29: .cfa -1904 + ^
+STACK CFI 6a1c8 .cfa: x29 1904 +
+STACK CFI 6a1e8 v10: .cfa -1792 + ^ v11: .cfa -1784 + ^ v12: .cfa -1776 + ^ v8: .cfa -1808 + ^ v9: .cfa -1800 + ^ x19: .cfa -1888 + ^ x20: .cfa -1880 + ^ x21: .cfa -1872 + ^ x22: .cfa -1864 + ^ x23: .cfa -1856 + ^ x24: .cfa -1848 + ^ x25: .cfa -1840 + ^ x26: .cfa -1832 + ^ x27: .cfa -1824 + ^ x28: .cfa -1816 + ^
+STACK CFI 6a65c v8: v8 v9: v9
+STACK CFI 6a660 x19: x19 x20: x20
+STACK CFI 6a664 v10: v10 v11: v11
+STACK CFI 6a668 x21: x21 x22: x22
+STACK CFI 6a66c x23: x23 x24: x24
+STACK CFI 6a670 x25: x25 x26: x26
+STACK CFI 6a674 x27: x27 x28: x28
+STACK CFI 6a678 v12: v12
+STACK CFI 6a67c .cfa: sp 1760 + .ra: .ra x29: x29
+STACK CFI 6a680 .cfa: sp 1616 +
+STACK CFI INIT 6a684 f4 .cfa: sp 0 + .ra: x30
+STACK CFI 6a688 .cfa: sp 128 + .ra: .cfa -120 + ^ x29: .cfa -128 + ^
+STACK CFI 6a68c .cfa: x29 128 +
+STACK CFI 6a69c x19: .cfa -112 + ^ x20: .cfa -104 + ^ x21: .cfa -96 + ^ x22: .cfa -88 + ^ x23: .cfa -80 + ^ x24: .cfa -72 + ^ x25: .cfa -64 + ^
+STACK CFI 6a764 x19: x19 x20: x20
+STACK CFI 6a768 x21: x21 x22: x22
+STACK CFI 6a76c x23: x23 x24: x24
+STACK CFI 6a770 x25: x25
+STACK CFI 6a774 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6a778 130 .cfa: sp 0 + .ra: x30
+STACK CFI 6a77c .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 6a780 .cfa: x29 80 +
+STACK CFI 6a78c x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI 6a870 x19: x19 x20: x20
+STACK CFI 6a874 x21: x21 x22: x22
+STACK CFI 6a878 x23: x23
+STACK CFI 6a87c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 6a880 .cfa: x29 80 + .ra: .cfa -72 + ^ x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x29: .cfa -80 + ^
+STACK CFI 6a898 x23: x23
+STACK CFI 6a89c x19: x19 x20: x20
+STACK CFI 6a8a0 x21: x21 x22: x22
+STACK CFI 6a8a4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6a8a8 130 .cfa: sp 0 + .ra: x30
+STACK CFI 6a8ac .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 6a8b0 .cfa: x29 96 +
+STACK CFI 6a8c0 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^ x25: .cfa -32 + ^
+STACK CFI 6a9c4 x19: x19 x20: x20
+STACK CFI 6a9c8 x21: x21 x22: x22
+STACK CFI 6a9cc x23: x23 x24: x24
+STACK CFI 6a9d0 x25: x25
+STACK CFI 6a9d4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6a9d8 d08 .cfa: sp 0 + .ra: x30
+STACK CFI 6a9dc .cfa: sp 1232 +
+STACK CFI 6a9e4 .cfa: sp 1392 + .ra: .cfa -1384 + ^ x29: .cfa -1392 + ^
+STACK CFI 6a9e8 .cfa: x29 1392 +
+STACK CFI 6a9f0 v8: .cfa -1296 + ^ v9: .cfa -1288 + ^ x21: .cfa -1360 + ^ x22: .cfa -1352 + ^
+STACK CFI 6aa00 v10: .cfa -1280 + ^ v11: .cfa -1272 + ^ x23: .cfa -1344 + ^ x24: .cfa -1336 + ^
+STACK CFI 6aa24 v12: .cfa -1264 + ^ v13: .cfa -1256 + ^ v14: .cfa -1248 + ^ v15: .cfa -1240 + ^ x25: .cfa -1328 + ^ x26: .cfa -1320 + ^
+STACK CFI 6aa34 x19: .cfa -1376 + ^ x20: .cfa -1368 + ^ x27: .cfa -1312 + ^ x28: .cfa -1304 + ^
+STACK CFI 6b6b4 x19: x19 x20: x20
+STACK CFI 6b6b8 x21: x21 x22: x22
+STACK CFI 6b6bc v8: v8 v9: v9
+STACK CFI 6b6c0 x23: x23 x24: x24
+STACK CFI 6b6c4 v10: v10 v11: v11
+STACK CFI 6b6c8 x25: x25 x26: x26
+STACK CFI 6b6cc v12: v12 v13: v13
+STACK CFI 6b6d0 x27: x27 x28: x28
+STACK CFI 6b6d4 v14: v14 v15: v15
+STACK CFI 6b6d8 .cfa: sp 1232 + .ra: .ra x29: x29
+STACK CFI 6b6dc .cfa: sp 1072 +
+STACK CFI INIT 6b6e0 148 .cfa: sp 0 + .ra: x30
+STACK CFI 6b6e4 .cfa: sp 416 + .ra: .cfa -408 + ^ x29: .cfa -416 + ^
+STACK CFI 6b6e8 .cfa: x29 416 +
+STACK CFI 6b6ec x21: .cfa -384 + ^ x22: .cfa -376 + ^
+STACK CFI 6b6fc x19: .cfa -400 + ^ x20: .cfa -392 + ^ x25: .cfa -352 + ^ x26: .cfa -344 + ^ x27: .cfa -336 + ^
+STACK CFI 6b718 x23: .cfa -368 + ^ x24: .cfa -360 + ^
+STACK CFI 6b80c x27: x27
+STACK CFI 6b814 x19: x19 x20: x20
+STACK CFI 6b818 x21: x21 x22: x22
+STACK CFI 6b81c x23: x23 x24: x24
+STACK CFI 6b820 x25: x25 x26: x26
+STACK CFI 6b824 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6b828 74 .cfa: sp 0 + .ra: x30
+STACK CFI 6b82c .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 6b838 .cfa: x29 80 +
+STACK CFI 6b83c x19: .cfa -64 + ^ x20: .cfa -56 + ^
+STACK CFI 6b860 x21: .cfa -48 + ^
+STACK CFI 6b890 x21: x21
+STACK CFI 6b894 x19: x19 x20: x20
+STACK CFI 6b898 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6b89c 7c .cfa: sp 0 + .ra: x30
+STACK CFI 6b8a0 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 6b8ac .cfa: x29 80 +
+STACK CFI 6b8b0 x19: .cfa -64 + ^ x20: .cfa -56 + ^
+STACK CFI 6b8dc x21: .cfa -48 + ^
+STACK CFI 6b90c x21: x21
+STACK CFI 6b910 x19: x19 x20: x20
+STACK CFI 6b914 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6b918 2c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 34 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6b944 34 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6b978 3c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6b9b4 108 .cfa: sp 0 + .ra: x30
+STACK CFI 6b9b8 .cfa: sp 416 + .ra: .cfa -408 + ^ x29: .cfa -416 + ^
+STACK CFI 6b9bc .cfa: x29 416 +
+STACK CFI 6b9c0 x21: .cfa -384 + ^ x22: .cfa -376 + ^
+STACK CFI 6b9c8 x23: .cfa -368 + ^
+STACK CFI 6b9d4 x19: .cfa -400 + ^ x20: .cfa -392 + ^
+STACK CFI 6baa8 x23: x23
+STACK CFI 6bab0 x19: x19 x20: x20
+STACK CFI 6bab4 x21: x21 x22: x22
+STACK CFI 6bab8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 a4 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 176 + .ra: .cfa -168 + ^ x29: .cfa -176 + ^
+STACK CFI 8 .cfa: x29 176 +
+STACK CFI c x19: .cfa -160 + ^ x20: .cfa -152 + ^
+STACK CFI 9c x19: x19 x20: x20
+STACK CFI a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6babc 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6bad8 58 .cfa: sp 0 + .ra: x30
+STACK CFI 6badc .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6bae8 .cfa: x29 32 +
+STACK CFI 6baec x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 6bb28 x19: x19 x20: x20
+STACK CFI 6bb2c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6bb30 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6bb3c 7c .cfa: sp 0 + .ra: x30
+STACK CFI 6bb40 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6bb48 .cfa: x29 32 +
+STACK CFI 6bb4c x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 6bbb0 x19: x19 x20: x20
+STACK CFI 6bbb4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6bbb8 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6bbc8 80 .cfa: sp 0 + .ra: x30
+STACK CFI 6bbcc .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 6bbd4 .cfa: x29 48 +
+STACK CFI 6bbdc x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 6bc3c x21: x21
+STACK CFI 6bc40 x19: x19 x20: x20
+STACK CFI 6bc44 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6bc48 ac .cfa: sp 0 + .ra: x30
+STACK CFI 6bc4c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6bc54 .cfa: x29 32 +
+STACK CFI 6bc58 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 6bcec x19: x19 x20: x20
+STACK CFI 6bcf0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6bcf4 34 .cfa: sp 0 + .ra: x30
+STACK CFI 6bcf8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6bcfc .cfa: x29 32 +
+STACK CFI 6bd00 x19: .cfa -16 + ^
+STACK CFI 6bd20 x19: x19
+STACK CFI 6bd24 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6bd28 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 88 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI 10 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI 7c x19: x19 x20: x20
+STACK CFI 80 x21: x21
+STACK CFI 84 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6bd30 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 a8 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI c .cfa: x29 96 +
+STACK CFI 10 x19: .cfa -80 + ^ x20: .cfa -72 + ^
+STACK CFI 20 x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^ x25: .cfa -32 + ^ x26: .cfa -24 + ^
+STACK CFI 94 x19: x19 x20: x20
+STACK CFI 98 x21: x21 x22: x22
+STACK CFI 9c x23: x23 x24: x24
+STACK CFI a0 x25: x25 x26: x26
+STACK CFI a4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6bd44 9c .cfa: sp 0 + .ra: x30
+STACK CFI 6bd48 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 6bd50 .cfa: x29 96 +
+STACK CFI 6bd60 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^ x25: .cfa -32 + ^
+STACK CFI 6bdcc x19: x19 x20: x20
+STACK CFI 6bdd0 x21: x21 x22: x22
+STACK CFI 6bdd4 x23: x23 x24: x24
+STACK CFI 6bdd8 x25: x25
+STACK CFI 6bddc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 12c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 112 + .ra: .cfa -104 + ^ x29: .cfa -112 + ^
+STACK CFI 10 .cfa: x29 112 +
+STACK CFI 14 x21: .cfa -80 + ^ x22: .cfa -72 + ^
+STACK CFI 28 x19: .cfa -96 + ^ x20: .cfa -88 + ^ x23: .cfa -64 + ^
+STACK CFI 11c x23: x23
+STACK CFI 120 x19: x19 x20: x20
+STACK CFI 124 x21: x21 x22: x22
+STACK CFI 128 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6bde0 12c .cfa: sp 0 + .ra: x30
+STACK CFI 6bde4 .cfa: sp 112 + .ra: .cfa -104 + ^ x29: .cfa -112 + ^
+STACK CFI 6bdf0 .cfa: x29 112 +
+STACK CFI 6bdf4 x21: .cfa -80 + ^ x22: .cfa -72 + ^
+STACK CFI 6be08 x19: .cfa -96 + ^ x20: .cfa -88 + ^ x23: .cfa -64 + ^
+STACK CFI 6befc x23: x23
+STACK CFI 6bf00 x19: x19 x20: x20
+STACK CFI 6bf04 x21: x21 x22: x22
+STACK CFI 6bf08 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 51a2c 3c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6bf0c 3c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6bf48 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6bf54 1c .cfa: sp 0 + .ra: x30
+STACK CFI 6bf58 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 6bf5c .cfa: x29 16 +
+STACK CFI 6bf6c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6bf70 24 .cfa: sp 0 + .ra: x30
+STACK CFI 6bf74 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 6bf78 .cfa: x29 16 +
+STACK CFI 6bf90 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6bf94 40 .cfa: sp 0 + .ra: x30
+STACK CFI 6bf98 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6bf9c .cfa: x29 32 +
+STACK CFI 6bfa0 x19: .cfa -16 + ^
+STACK CFI 6bfcc x19: x19
+STACK CFI 6bfd0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6bfd4 48 .cfa: sp 0 + .ra: x30
+STACK CFI 6bfd8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6bfdc .cfa: x29 32 +
+STACK CFI 6bfe0 x19: .cfa -16 + ^
+STACK CFI 6c014 x19: x19
+STACK CFI 6c018 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6c01c 58 .cfa: sp 0 + .ra: x30
+STACK CFI 6c020 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6c024 .cfa: x29 32 +
+STACK CFI 6c028 x19: .cfa -16 + ^
+STACK CFI 6c06c x19: x19
+STACK CFI 6c070 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6c074 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6c080 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6c08c c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6c098 58 .cfa: sp 0 + .ra: x30
+STACK CFI 6c09c .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 6c0a0 .cfa: x29 16 +
+STACK CFI 6c0ec .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6c0f0 48 .cfa: sp 0 + .ra: x30
+STACK CFI 6c0f4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6c0f8 .cfa: x29 32 +
+STACK CFI 6c0fc x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 6c120 x19: x19 x20: x20
+STACK CFI 6c124 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 6c12c .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x20: .cfa -8 + ^ x29: .cfa -32 + ^
+STACK CFI 6c130 x19: x19 x20: x20
+STACK CFI 6c134 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6c138 24 .cfa: sp 0 + .ra: x30
+STACK CFI 6c13c .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 6c140 .cfa: x29 16 +
+STACK CFI 6c158 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6c15c 60 .cfa: sp 0 + .ra: x30
+STACK CFI 6c160 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 6c164 .cfa: x29 48 +
+STACK CFI 6c16c x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 6c1b0 x19: x19 x20: x20
+STACK CFI 6c1b4 x21: x21 x22: x22
+STACK CFI 6c1b8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6c1bc c4 .cfa: sp 0 + .ra: x30
+STACK CFI 6c1c0 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 6c1c4 .cfa: x29 80 +
+STACK CFI 6c1d4 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^ x25: .cfa -16 + ^
+STACK CFI 6c26c x19: x19 x20: x20
+STACK CFI 6c270 x21: x21 x22: x22
+STACK CFI 6c274 x23: x23 x24: x24
+STACK CFI 6c278 x25: x25
+STACK CFI 6c27c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6c280 44 .cfa: sp 0 + .ra: x30
+STACK CFI 6c284 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6c28c .cfa: x29 32 +
+STACK CFI 6c290 x19: .cfa -16 + ^
+STACK CFI 6c2bc x19: x19
+STACK CFI 6c2c0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6c2c4 28 .cfa: sp 0 + .ra: x30
+STACK CFI 6c2c8 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 6c2d4 .cfa: x29 16 +
+STACK CFI 6c2e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6c2ec 1e8 .cfa: sp 0 + .ra: x30
+STACK CFI 6c2f0 .cfa: sp 128 + .ra: .cfa -120 + ^ x29: .cfa -128 + ^
+STACK CFI 6c2f4 .cfa: x29 128 +
+STACK CFI 6c310 x19: .cfa -112 + ^ x20: .cfa -104 + ^ x21: .cfa -96 + ^ x22: .cfa -88 + ^ x23: .cfa -80 + ^ x24: .cfa -72 + ^ x25: .cfa -64 + ^ x26: .cfa -56 + ^
+STACK CFI 6c31c v8: .cfa -32 + ^ x27: .cfa -48 + ^ x28: .cfa -40 + ^
+STACK CFI 6c4b8 x19: x19 x20: x20
+STACK CFI 6c4bc x21: x21 x22: x22
+STACK CFI 6c4c0 x23: x23 x24: x24
+STACK CFI 6c4c4 x25: x25 x26: x26
+STACK CFI 6c4c8 x27: x27 x28: x28
+STACK CFI 6c4cc v8: v8
+STACK CFI 6c4d0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6c4d4 104 .cfa: sp 0 + .ra: x30
+STACK CFI 6c4d8 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 6c4dc .cfa: x29 64 +
+STACK CFI 6c4e0 x19: .cfa -48 + ^
+STACK CFI 6c5d0 x19: x19
+STACK CFI 6c5d4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6c5d8 ac .cfa: sp 0 + .ra: x30
+STACK CFI 6c5dc .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 6c5e0 .cfa: x29 64 +
+STACK CFI 6c5e4 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 6c5ec x21: .cfa -32 + ^
+STACK CFI 6c678 x19: x19 x20: x20
+STACK CFI 6c67c x21: x21
+STACK CFI 6c680 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6c684 220 .cfa: sp 0 + .ra: x30
+STACK CFI 6c688 .cfa: sp 112 + .ra: .cfa -104 + ^ x29: .cfa -112 + ^
+STACK CFI 6c68c .cfa: x29 112 +
+STACK CFI 6c698 x21: .cfa -80 + ^ x22: .cfa -72 + ^ x23: .cfa -64 + ^
+STACK CFI 6c6bc x19: .cfa -96 + ^ x20: .cfa -88 + ^
+STACK CFI 6c894 x19: x19 x20: x20
+STACK CFI 6c898 x21: x21 x22: x22
+STACK CFI 6c89c x23: x23
+STACK CFI 6c8a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6c8a4 60 .cfa: sp 0 + .ra: x30
+STACK CFI 6c8a8 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 6c8b0 .cfa: x29 64 +
+STACK CFI 6c8b8 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 6c8f4 x21: x21
+STACK CFI 6c8fc x19: x19 x20: x20
+STACK CFI 6c900 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6c904 d4 .cfa: sp 0 + .ra: x30
+STACK CFI 6c908 .cfa: sp 16 +
+STACK CFI 6c9d0 .cfa: sp 0 +
+STACK CFI INIT 6c9d8 18 .cfa: sp 0 + .ra: x30
+STACK CFI 6c9dc .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 6c9e4 .cfa: x29 16 +
+STACK CFI 6c9ec .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6c9f0 8c .cfa: sp 0 + .ra: x30
+STACK CFI 6c9f4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6c9fc .cfa: x29 32 +
+STACK CFI 6ca00 x19: .cfa -16 + ^
+STACK CFI 6ca74 x19: x19
+STACK CFI 6ca78 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6ca7c 98 .cfa: sp 0 + .ra: x30
+STACK CFI 6ca80 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6ca88 .cfa: x29 32 +
+STACK CFI 6ca8c x19: .cfa -16 + ^
+STACK CFI 6cb0c x19: x19
+STACK CFI 6cb10 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6cb14 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6cb30 38 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6cb68 4c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6cbb4 5c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6cc10 24 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6cc34 28 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6cc5c 28 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6cc84 28 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6ccac 28 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6ccd4 6c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6cd40 38 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6cd78 20 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6cd98 3c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6cdd4 4c .cfa: sp 0 + .ra: x30
+STACK CFI 6cdd8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6cddc .cfa: x29 32 +
+STACK CFI 6cde0 x19: .cfa -16 + ^
+STACK CFI 6ce18 x19: x19
+STACK CFI 6ce1c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6ce20 48 .cfa: sp 0 + .ra: x30
+STACK CFI 6ce28 .cfa: sp 16 +
+STACK CFI 6ce64 .cfa: sp 0 +
+STACK CFI INIT 6ce68 44 .cfa: sp 0 + .ra: x30
+STACK CFI 6ce6c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6ce74 .cfa: x29 32 +
+STACK CFI 6ce78 x19: .cfa -16 + ^
+STACK CFI 6cea4 x19: x19
+STACK CFI 6cea8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6ceac c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6ceb8 50 .cfa: sp 0 + .ra: x30
+STACK CFI 6cebc .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6cec0 .cfa: x29 32 +
+STACK CFI 6cec4 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 6cf00 x19: x19 x20: x20
+STACK CFI 6cf04 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6cf08 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6cf0c 13c .cfa: sp 0 + .ra: x30
+STACK CFI 6cf10 .cfa: sp 208 + .ra: .cfa -200 + ^ x29: .cfa -208 + ^
+STACK CFI 6cf14 .cfa: x29 208 +
+STACK CFI 6cf20 x21: .cfa -176 + ^ x22: .cfa -168 + ^ x23: .cfa -160 + ^ x24: .cfa -152 + ^
+STACK CFI 6cf2c x19: .cfa -192 + ^ x20: .cfa -184 + ^
+STACK CFI 6d038 x19: x19 x20: x20
+STACK CFI 6d03c x21: x21 x22: x22
+STACK CFI 6d040 x23: x23 x24: x24
+STACK CFI 6d044 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6d048 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6d054 7c .cfa: sp 0 + .ra: x30
+STACK CFI 6d058 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 6d064 .cfa: x29 48 +
+STACK CFI 6d06c x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 6d0c4 x19: x19 x20: x20
+STACK CFI 6d0c8 x21: x21
+STACK CFI 6d0cc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6d0d0 8c .cfa: sp 0 + .ra: x30
+STACK CFI 6d0d4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 6d0d8 .cfa: x29 80 +
+STACK CFI 6d0e0 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^
+STACK CFI 6d0e8 x23: .cfa -32 + ^ x24: .cfa -24 + ^
+STACK CFI 6d14c x19: x19 x20: x20
+STACK CFI 6d150 x21: x21 x22: x22
+STACK CFI 6d154 x23: x23 x24: x24
+STACK CFI 6d158 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 58 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 10 .cfa: x29 64 +
+STACK CFI 18 x19: .cfa -48 + ^
+STACK CFI 50 x19: x19
+STACK CFI 54 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 ac .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI c x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 14 x21: .cfa -32 + ^
+STACK CFI a0 x19: x19 x20: x20
+STACK CFI a4 x21: x21
+STACK CFI a8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 10c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI c .cfa: x29 96 +
+STACK CFI 14 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^
+STACK CFI 100 x19: x19 x20: x20
+STACK CFI 104 x21: x21 x22: x22
+STACK CFI 108 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 154 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI 14 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^
+STACK CFI 144 x19: x19 x20: x20
+STACK CFI 148 x21: x21 x22: x22
+STACK CFI 14c x23: x23 x24: x24
+STACK CFI 150 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 17c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 8 .cfa: x29 96 +
+STACK CFI 18 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^ x25: .cfa -32 + ^
+STACK CFI 168 x19: x19 x20: x20
+STACK CFI 16c x21: x21 x22: x22
+STACK CFI 170 x23: x23 x24: x24
+STACK CFI 174 x25: x25
+STACK CFI 178 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 40 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 b4 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI c x19: .cfa -64 + ^ x20: .cfa -56 + ^
+STACK CFI 18 x21: .cfa -48 + ^
+STACK CFI a8 x21: x21
+STACK CFI ac x19: x19 x20: x20
+STACK CFI b0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 b4 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI c x19: .cfa -64 + ^ x20: .cfa -56 + ^
+STACK CFI 18 x21: .cfa -48 + ^
+STACK CFI a8 x21: x21
+STACK CFI ac x19: x19 x20: x20
+STACK CFI b0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6d200 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6d204 44 .cfa: sp 0 + .ra: x30
+STACK CFI 6d208 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6d210 .cfa: x29 32 +
+STACK CFI 6d214 x19: .cfa -16 + ^
+STACK CFI 6d240 x19: x19
+STACK CFI 6d244 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6d248 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6d24c 158 .cfa: sp 0 + .ra: x30
+STACK CFI 6d250 .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 6d25c .cfa: x29 160 +
+STACK CFI 6d260 x21: .cfa -128 + ^
+STACK CFI 6d268 x19: .cfa -144 + ^ x20: .cfa -136 + ^
+STACK CFI 6d398 x19: x19 x20: x20
+STACK CFI 6d39c x21: x21
+STACK CFI 6d3a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6d3a4 44 .cfa: sp 0 + .ra: x30
+STACK CFI 6d3a8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6d3b4 .cfa: x29 32 +
+STACK CFI 6d3b8 x19: .cfa -16 + ^
+STACK CFI 6d3e0 x19: x19
+STACK CFI 6d3e4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6d3e8 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6d3ec 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6d3f4 68 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6d45c 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6d464 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6d46c 64 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6d4d0 fc .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 d8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 b0 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 164 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 30 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6d5cc 220 .cfa: sp 0 + .ra: x30
+STACK CFI 6d5d0 .cfa: sp 144 + .ra: .cfa -136 + ^ x29: .cfa -144 + ^
+STACK CFI 6d5d8 .cfa: x29 144 +
+STACK CFI 6d5ec x19: .cfa -128 + ^ x20: .cfa -120 + ^ x21: .cfa -112 + ^ x22: .cfa -104 + ^ x23: .cfa -96 + ^ x24: .cfa -88 + ^ x25: .cfa -80 + ^ x26: .cfa -72 + ^ x27: .cfa -64 + ^ x28: .cfa -56 + ^
+STACK CFI 6d7d4 x19: x19 x20: x20
+STACK CFI 6d7d8 x21: x21 x22: x22
+STACK CFI 6d7dc x23: x23 x24: x24
+STACK CFI 6d7e0 x25: x25 x26: x26
+STACK CFI 6d7e4 x27: x27 x28: x28
+STACK CFI 6d7e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 124 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 1f4 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 144 + .ra: .cfa -136 + ^ x29: .cfa -144 + ^
+STACK CFI 10 .cfa: x29 144 +
+STACK CFI 24 x19: .cfa -128 + ^ x20: .cfa -120 + ^ x21: .cfa -112 + ^ x22: .cfa -104 + ^ x23: .cfa -96 + ^ x24: .cfa -88 + ^ x25: .cfa -80 + ^ x26: .cfa -72 + ^ x27: .cfa -64 + ^ x28: .cfa -56 + ^
+STACK CFI 1dc x19: x19 x20: x20
+STACK CFI 1e0 x21: x21 x22: x22
+STACK CFI 1e4 x23: x23 x24: x24
+STACK CFI 1e8 x25: x25 x26: x26
+STACK CFI 1ec x27: x27 x28: x28
+STACK CFI 1f0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6d7ec 38 .cfa: sp 0 + .ra: x30
+STACK CFI 6d7f0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6d7f4 .cfa: x29 32 +
+STACK CFI 6d7f8 x19: .cfa -16 + ^
+STACK CFI 6d81c x19: x19
+STACK CFI 6d820 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6d824 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6d840 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6d848 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6d850 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6d858 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6d860 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6d868 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6d870 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6d878 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6d880 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6d888 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6d890 88 .cfa: sp 0 + .ra: x30
+STACK CFI 6d894 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6d898 .cfa: x29 32 +
+STACK CFI 6d89c x19: .cfa -16 + ^
+STACK CFI 6d910 x19: x19
+STACK CFI 6d914 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6d918 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6d928 24 .cfa: sp 0 + .ra: x30
+STACK CFI 6d92c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6d930 .cfa: x29 32 +
+STACK CFI 6d934 x19: .cfa -16 + ^
+STACK CFI 6d944 x19: x19
+STACK CFI 6d948 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 74 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^
+STACK CFI 6c x19: x19
+STACK CFI 70 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 1d4 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI 10 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x23: .cfa -16 + ^
+STACK CFI 18 x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 1b0 x23: x23
+STACK CFI 1b4 x19: x19 x20: x20
+STACK CFI 1b8 x21: x21 x22: x22
+STACK CFI 1bc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 1c0 .cfa: x29 64 + .ra: .cfa -56 + ^ x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^ x29: .cfa -64 + ^
+STACK CFI 1c4 x19: x19 x20: x20
+STACK CFI 1c8 x21: x21 x22: x22
+STACK CFI 1cc x23: x23
+STACK CFI 1d0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6d94c 70 .cfa: sp 0 + .ra: x30
+STACK CFI 6d950 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 6d954 .cfa: x29 48 +
+STACK CFI 6d958 x19: .cfa -32 + ^
+STACK CFI 6d9b4 x19: x19
+STACK CFI 6d9b8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6d9bc 74 .cfa: sp 0 + .ra: x30
+STACK CFI 6d9c0 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 6d9c4 .cfa: x29 48 +
+STACK CFI 6d9c8 x19: .cfa -32 + ^
+STACK CFI 6da28 x19: x19
+STACK CFI 6da2c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6da30 74 .cfa: sp 0 + .ra: x30
+STACK CFI 6da34 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 6da38 .cfa: x29 48 +
+STACK CFI 6da3c x19: .cfa -32 + ^
+STACK CFI 6da9c x19: x19
+STACK CFI 6daa0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6daa4 74 .cfa: sp 0 + .ra: x30
+STACK CFI 6daa8 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 6daac .cfa: x29 48 +
+STACK CFI 6dab0 x19: .cfa -32 + ^
+STACK CFI 6db10 x19: x19
+STACK CFI 6db14 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6db18 70 .cfa: sp 0 + .ra: x30
+STACK CFI 6db1c .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 6db20 .cfa: x29 48 +
+STACK CFI 6db24 x19: .cfa -32 + ^
+STACK CFI 6db80 x19: x19
+STACK CFI 6db84 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6db88 74 .cfa: sp 0 + .ra: x30
+STACK CFI 6db8c .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 6db90 .cfa: x29 48 +
+STACK CFI 6db94 x19: .cfa -32 + ^
+STACK CFI 6dbf4 x19: x19
+STACK CFI 6dbf8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6dbfc 74 .cfa: sp 0 + .ra: x30
+STACK CFI 6dc00 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 6dc04 .cfa: x29 48 +
+STACK CFI 6dc08 x19: .cfa -32 + ^
+STACK CFI 6dc68 x19: x19
+STACK CFI 6dc6c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6dc70 70 .cfa: sp 0 + .ra: x30
+STACK CFI 6dc74 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 6dc78 .cfa: x29 48 +
+STACK CFI 6dc7c x19: .cfa -32 + ^
+STACK CFI 6dcd8 x19: x19
+STACK CFI 6dcdc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6dce0 1e0 .cfa: sp 0 + .ra: x30
+STACK CFI 6dce4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 6dce8 .cfa: x29 64 +
+STACK CFI 6dcf0 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 6deb4 x21: x21
+STACK CFI 6deb8 x19: x19 x20: x20
+STACK CFI 6debc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 c08 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI 14 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI bf8 x19: x19 x20: x20
+STACK CFI bfc x21: x21 x22: x22
+STACK CFI c00 x23: x23
+STACK CFI c04 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6dec0 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 ac .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI c x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 14 x21: .cfa -32 + ^
+STACK CFI a0 x19: x19 x20: x20
+STACK CFI a4 x21: x21
+STACK CFI a8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6dec8 4c .cfa: sp 0 + .ra: x30
+STACK CFI 6decc .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 6ded8 .cfa: x29 64 +
+STACK CFI 6dedc x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 6df0c x19: x19 x20: x20
+STACK CFI 6df10 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6df14 4c .cfa: sp 0 + .ra: x30
+STACK CFI 6df18 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 6df24 .cfa: x29 64 +
+STACK CFI 6df28 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 6df58 x19: x19 x20: x20
+STACK CFI 6df5c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6df60 4c .cfa: sp 0 + .ra: x30
+STACK CFI 6df64 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 6df70 .cfa: x29 64 +
+STACK CFI 6df74 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 6dfa4 x19: x19 x20: x20
+STACK CFI 6dfa8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 248e8 30 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 24cf8 1c .cfa: sp 0 + .ra: x30
+STACK CFI 24cfc .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 24d00 .cfa: x29 16 +
+STACK CFI 24d10 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24d14 3c .cfa: sp 0 + .ra: x30
+STACK CFI 24d18 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 24d1c .cfa: x29 16 +
+STACK CFI 24d4c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25644 5c .cfa: sp 0 + .ra: x30
+STACK CFI 25648 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2564c .cfa: x29 32 +
+STACK CFI 25650 x19: .cfa -16 + ^
+STACK CFI 25698 x19: x19
+STACK CFI 2569c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25718 50 .cfa: sp 0 + .ra: x30
+STACK CFI 2571c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 25720 .cfa: x29 32 +
+STACK CFI 25724 x19: .cfa -16 + ^
+STACK CFI 25754 x19: x19
+STACK CFI 25758 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2575c .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI 25760 x19: x19
+STACK CFI 25764 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 78 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI c .cfa: x29 32 +
+STACK CFI 10 x19: .cfa -16 + ^
+STACK CFI 70 x19: x19
+STACK CFI 74 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 13c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI 10 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 130 x19: x19 x20: x20
+STACK CFI 134 x21: x21 x22: x22
+STACK CFI 138 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 5457c 48 .cfa: sp 0 + .ra: x30
+STACK CFI 54580 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 5458c .cfa: x29 16 +
+STACK CFI 545c0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6dfac 7c .cfa: sp 0 + .ra: x30
+STACK CFI 6dfb0 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 6dfb4 .cfa: x29 48 +
+STACK CFI 6dfb8 x19: .cfa -32 + ^
+STACK CFI 6e020 x19: x19
+STACK CFI 6e024 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 134 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 8 .cfa: x29 96 +
+STACK CFI 14 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^
+STACK CFI 20 x25: .cfa -32 + ^ x26: .cfa -24 + ^
+STACK CFI 120 x19: x19 x20: x20
+STACK CFI 124 x21: x21 x22: x22
+STACK CFI 128 x23: x23 x24: x24
+STACK CFI 12c x25: x25 x26: x26
+STACK CFI 130 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6e028 20c .cfa: sp 0 + .ra: x30
+STACK CFI 6e02c .cfa: sp 304 + .ra: .cfa -296 + ^ x29: .cfa -304 + ^
+STACK CFI 6e030 .cfa: x29 304 +
+STACK CFI 6e040 x19: .cfa -288 + ^ x20: .cfa -280 + ^ x21: .cfa -272 + ^ x22: .cfa -264 + ^ x23: .cfa -256 + ^ x24: .cfa -248 + ^ x25: .cfa -240 + ^
+STACK CFI 6e220 x25: x25
+STACK CFI 6e224 x19: x19 x20: x20
+STACK CFI 6e228 x21: x21 x22: x22
+STACK CFI 6e22c x23: x23 x24: x24
+STACK CFI 6e230 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 1c4 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI c .cfa: x29 80 +
+STACK CFI 18 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI 1b4 x23: x23
+STACK CFI 1b8 x19: x19 x20: x20
+STACK CFI 1bc x21: x21 x22: x22
+STACK CFI 1c0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6e234 c0 .cfa: sp 0 + .ra: x30
+STACK CFI 6e238 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 6e23c .cfa: x29 48 +
+STACK CFI 6e244 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 6e2e8 x19: x19 x20: x20
+STACK CFI 6e2ec x21: x21 x22: x22
+STACK CFI 6e2f0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6e2f4 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6e2f8 18 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6e310 18 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6e328 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6e330 18 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6e348 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6e350 18 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6e368 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6e370 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6e384 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6e38c 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6e394 18 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6e3ac 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6e3bc 38 .cfa: sp 0 + .ra: x30
+STACK CFI 6e3c0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6e3c4 .cfa: x29 32 +
+STACK CFI 6e3c8 x19: .cfa -16 + ^
+STACK CFI 6e3ec x19: x19
+STACK CFI 6e3f0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6e3f4 24 .cfa: sp 0 + .ra: x30
+STACK CFI 6e3f8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6e3fc .cfa: x29 32 +
+STACK CFI 6e400 x19: .cfa -16 + ^
+STACK CFI 6e410 x19: x19
+STACK CFI 6e414 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 54 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^
+STACK CFI 4c x19: x19
+STACK CFI 50 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6e418 50 .cfa: sp 0 + .ra: x30
+STACK CFI 6e41c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6e420 .cfa: x29 32 +
+STACK CFI 6e424 x19: .cfa -16 + ^
+STACK CFI 6e460 x19: x19
+STACK CFI 6e464 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6e468 30 .cfa: sp 0 + .ra: x30
+STACK CFI 6e46c .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 6e474 .cfa: x29 16 +
+STACK CFI 6e494 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 2a0 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 40 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^
+STACK CFI 38 x19: x19
+STACK CFI 3c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6e498 d4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6e56c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6e570 24 .cfa: sp 0 + .ra: x30
+STACK CFI 6e574 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6e578 .cfa: x29 32 +
+STACK CFI 6e57c x19: .cfa -16 + ^
+STACK CFI 6e58c x19: x19
+STACK CFI 6e590 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6e594 24 .cfa: sp 0 + .ra: x30
+STACK CFI 6e598 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6e59c .cfa: x29 32 +
+STACK CFI 6e5a0 x19: .cfa -16 + ^
+STACK CFI 6e5b0 x19: x19
+STACK CFI 6e5b4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6e5b8 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6e5c8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 6e5cc .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6e5d0 .cfa: x29 32 +
+STACK CFI 6e5d4 x19: .cfa -16 + ^
+STACK CFI 6e5e4 x19: x19
+STACK CFI 6e5e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^
+STACK CFI 1c x19: x19
+STACK CFI 20 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 a8 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI 14 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 98 x23: x23
+STACK CFI 9c x19: x19 x20: x20
+STACK CFI a0 x21: x21 x22: x22
+STACK CFI a4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 38 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6e5ec 34 .cfa: sp 0 + .ra: x30
+STACK CFI 6e5f0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6e5f4 .cfa: x29 32 +
+STACK CFI 6e5f8 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 6e618 x19: x19 x20: x20
+STACK CFI 6e61c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6e620 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6e628 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 238e0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 238e4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 238e8 .cfa: x29 32 +
+STACK CFI 238ec x19: .cfa -16 + ^
+STACK CFI 238fc x19: x19
+STACK CFI 23900 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6e62c 38 .cfa: sp 0 + .ra: x30
+STACK CFI 6e630 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 6e638 .cfa: x29 16 +
+STACK CFI 6e660 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6e664 88 .cfa: sp 0 + .ra: x30
+STACK CFI 6e668 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6e670 .cfa: x29 32 +
+STACK CFI 6e674 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 6e6e4 x19: x19 x20: x20
+STACK CFI 6e6e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6e6ec b8 .cfa: sp 0 + .ra: x30
+STACK CFI 6e6f0 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 6e6f4 .cfa: x29 80 +
+STACK CFI 6e700 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^
+STACK CFI 6e794 x19: x19 x20: x20
+STACK CFI 6e798 x21: x21 x22: x22
+STACK CFI 6e79c x23: x23 x24: x24
+STACK CFI 6e7a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6e7a4 80 .cfa: sp 0 + .ra: x30
+STACK CFI 6e7a8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6e7ac .cfa: x29 32 +
+STACK CFI 6e7b0 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 6e81c x19: x19 x20: x20
+STACK CFI 6e820 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 b0 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI 14 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI a0 x23: x23
+STACK CFI a4 x19: x19 x20: x20
+STACK CFI a8 x21: x21 x22: x22
+STACK CFI ac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 b4 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI 14 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI a4 x23: x23
+STACK CFI a8 x19: x19 x20: x20
+STACK CFI ac x21: x21 x22: x22
+STACK CFI b0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6e824 98 .cfa: sp 0 + .ra: x30
+STACK CFI 6e828 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 6e82c .cfa: x29 48 +
+STACK CFI 6e834 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 6e870 x21: x21 x22: x22
+STACK CFI 6e874 x19: x19 x20: x20
+STACK CFI 6e878 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 6e87c .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^ x29: .cfa -48 + ^
+STACK CFI 6e8a0 x19: x19 x20: x20
+STACK CFI 6e8a4 x21: x21 x22: x22
+STACK CFI 6e8a8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 6e8ac .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^ x29: .cfa -48 + ^
+STACK CFI 6e8b0 x19: x19 x20: x20
+STACK CFI 6e8b4 x21: x21 x22: x22
+STACK CFI 6e8b8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2eb40 18 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6e8bc 54 .cfa: sp 0 + .ra: x30
+STACK CFI 6e8c0 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 6e8c8 .cfa: x29 48 +
+STACK CFI 6e8cc x19: .cfa -32 + ^
+STACK CFI 6e908 x19: x19
+STACK CFI 6e90c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6e910 4c .cfa: sp 0 + .ra: x30
+STACK CFI 6e914 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 6e91c .cfa: x29 48 +
+STACK CFI 6e920 x19: .cfa -32 + ^
+STACK CFI 6e954 x19: x19
+STACK CFI 6e958 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6e95c 54 .cfa: sp 0 + .ra: x30
+STACK CFI 6e960 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 6e968 .cfa: x29 48 +
+STACK CFI 6e96c x19: .cfa -32 + ^
+STACK CFI 6e9a8 x19: x19
+STACK CFI 6e9ac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 43124 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6e9b0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 6e9b4 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 6e9b8 .cfa: x29 16 +
+STACK CFI 6e9d0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6e9d4 b8 .cfa: sp 0 + .ra: x30
+STACK CFI 6e9d8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6e9dc .cfa: x29 32 +
+STACK CFI 6e9e0 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 6ea84 x19: x19 x20: x20
+STACK CFI 6ea88 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6ea8c 34 .cfa: sp 0 + .ra: x30
+STACK CFI 6ea90 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6ea94 .cfa: x29 32 +
+STACK CFI 6ea98 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 6eab8 x19: x19 x20: x20
+STACK CFI 6eabc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6eac0 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6eac8 34 .cfa: sp 0 + .ra: x30
+STACK CFI 6eacc .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 6ead0 .cfa: x29 48 +
+STACK CFI 6ead4 x19: .cfa -32 + ^
+STACK CFI 6eaf4 x19: x19
+STACK CFI 6eaf8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 3c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^
+STACK CFI 34 x19: x19
+STACK CFI 38 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6eafc 3c .cfa: sp 0 + .ra: x30
+STACK CFI 6eb00 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 6eb04 .cfa: x29 48 +
+STACK CFI 6eb08 x19: .cfa -32 + ^
+STACK CFI 6eb30 x19: x19
+STACK CFI 6eb34 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 38 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^
+STACK CFI 30 x19: x19
+STACK CFI 34 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6eb38 50 .cfa: sp 0 + .ra: x30
+STACK CFI 6eb3c .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 6eb40 .cfa: x29 48 +
+STACK CFI 6eb44 x19: .cfa -32 + ^
+STACK CFI 6eb80 x19: x19
+STACK CFI 6eb84 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6eb88 28 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6ebb0 54 .cfa: sp 0 + .ra: x30
+STACK CFI 6ebb4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 6ebb8 .cfa: x29 48 +
+STACK CFI 6ebbc x19: .cfa -32 + ^
+STACK CFI 6ebfc x19: x19
+STACK CFI 6ec00 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6ec04 4c .cfa: sp 0 + .ra: x30
+STACK CFI 6ec08 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6ec0c .cfa: x29 32 +
+STACK CFI 6ec10 x19: .cfa -16 + ^
+STACK CFI 6ec48 x19: x19
+STACK CFI 6ec4c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6ec50 84 .cfa: sp 0 + .ra: x30
+STACK CFI 6ec54 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 6ec58 .cfa: x29 48 +
+STACK CFI 6ec5c x19: .cfa -32 + ^
+STACK CFI 6eccc x19: x19
+STACK CFI 6ecd0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6ecd4 60 .cfa: sp 0 + .ra: x30
+STACK CFI 6ecd8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6ecdc .cfa: x29 32 +
+STACK CFI 6ece0 x19: .cfa -16 + ^
+STACK CFI 6ed2c x19: x19
+STACK CFI 6ed30 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6ed34 58 .cfa: sp 0 + .ra: x30
+STACK CFI 6ed38 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6ed3c .cfa: x29 32 +
+STACK CFI 6ed40 x19: .cfa -16 + ^
+STACK CFI 6ed84 x19: x19
+STACK CFI 6ed88 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6ed8c 40 .cfa: sp 0 + .ra: x30
+STACK CFI 6ed90 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6ed94 .cfa: x29 32 +
+STACK CFI 6ed98 x19: .cfa -16 + ^
+STACK CFI 6edc4 x19: x19
+STACK CFI 6edc8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6edcc 48 .cfa: sp 0 + .ra: x30
+STACK CFI 6edd0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6edd4 .cfa: x29 32 +
+STACK CFI 6edd8 x19: .cfa -16 + ^
+STACK CFI 6ee0c x19: x19
+STACK CFI 6ee10 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 38 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^
+STACK CFI 30 x19: x19
+STACK CFI 34 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 4c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^
+STACK CFI 44 x19: x19
+STACK CFI 48 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 20 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 24 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 54 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^
+STACK CFI 4c x19: x19
+STACK CFI 50 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6ee14 24 .cfa: sp 0 + .ra: x30
+STACK CFI 6ee18 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 6ee1c .cfa: x29 16 +
+STACK CFI 6ee34 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6ee38 70 .cfa: sp 0 + .ra: x30
+STACK CFI 6ee3c .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 6ee40 .cfa: x29 48 +
+STACK CFI 6ee48 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 6ee88 x21: x21
+STACK CFI 6ee8c x19: x19 x20: x20
+STACK CFI 6ee90 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 6ee98 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x29: .cfa -48 + ^
+STACK CFI 6ee9c x19: x19 x20: x20
+STACK CFI 6eea0 x21: x21
+STACK CFI 6eea4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6eea8 70 .cfa: sp 0 + .ra: x30
+STACK CFI 6eeac .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 6eeb0 .cfa: x29 48 +
+STACK CFI 6eeb8 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 6eef8 x21: x21
+STACK CFI 6eefc x19: x19 x20: x20
+STACK CFI 6ef00 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 6ef08 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x29: .cfa -48 + ^
+STACK CFI 6ef0c x19: x19 x20: x20
+STACK CFI 6ef10 x21: x21
+STACK CFI 6ef14 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6ef18 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6ef34 70 .cfa: sp 0 + .ra: x30
+STACK CFI 6ef38 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 6ef3c .cfa: x29 48 +
+STACK CFI 6ef44 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 6ef84 x21: x21
+STACK CFI 6ef88 x19: x19 x20: x20
+STACK CFI 6ef8c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 6ef94 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x29: .cfa -48 + ^
+STACK CFI 6ef98 x19: x19 x20: x20
+STACK CFI 6ef9c x21: x21
+STACK CFI 6efa0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 70 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI 10 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 50 x21: x21
+STACK CFI 54 x19: x19 x20: x20
+STACK CFI 58 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 60 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x29: .cfa -48 + ^
+STACK CFI 64 x19: x19 x20: x20
+STACK CFI 68 x21: x21
+STACK CFI 6c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 84 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^
+STACK CFI 70 x19: x19
+STACK CFI 74 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 78 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 7c x19: x19
+STACK CFI 80 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 2527c c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25288 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25298 24 .cfa: sp 0 + .ra: x30
+STACK CFI 2529c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 252a0 .cfa: x29 32 +
+STACK CFI 252a4 x19: .cfa -16 + ^
+STACK CFI 252b4 x19: x19
+STACK CFI 252b8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 252bc 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 252cc c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6efa4 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 24 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6efc0 38 .cfa: sp 0 + .ra: x30
+STACK CFI 6efc4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6efc8 .cfa: x29 32 +
+STACK CFI 6efcc x19: .cfa -16 + ^
+STACK CFI 6efe4 x19: x19
+STACK CFI 6efe8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 6efec .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI 6eff0 x19: x19
+STACK CFI 6eff4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6eff8 48 .cfa: sp 0 + .ra: x30
+STACK CFI 6effc .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6f004 .cfa: x29 32 +
+STACK CFI 6f008 x19: .cfa -16 + ^
+STACK CFI 6f038 x19: x19
+STACK CFI 6f03c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6f040 24 .cfa: sp 0 + .ra: x30
+STACK CFI 6f044 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6f048 .cfa: x29 32 +
+STACK CFI 6f04c x19: .cfa -16 + ^
+STACK CFI 6f05c x19: x19
+STACK CFI 6f060 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 3c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^
+STACK CFI 34 x19: x19
+STACK CFI 38 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^
+STACK CFI 1c x19: x19
+STACK CFI 20 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6f064 60 .cfa: sp 0 + .ra: x30
+STACK CFI 6f068 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6f06c .cfa: x29 32 +
+STACK CFI 6f070 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 6f0b0 x19: x19 x20: x20
+STACK CFI 6f0b4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 6f0b8 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x20: .cfa -8 + ^ x29: .cfa -32 + ^
+STACK CFI 6f0bc x19: x19 x20: x20
+STACK CFI 6f0c0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6f0c4 24 .cfa: sp 0 + .ra: x30
+STACK CFI 6f0c8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6f0cc .cfa: x29 32 +
+STACK CFI 6f0d0 x19: .cfa -16 + ^
+STACK CFI 6f0e0 x19: x19
+STACK CFI 6f0e4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 44 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^
+STACK CFI 3c x19: x19
+STACK CFI 40 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^
+STACK CFI 1c x19: x19
+STACK CFI 20 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 9c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI 10 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI 8c x21: x21
+STACK CFI 94 x19: x19 x20: x20
+STACK CFI 98 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 98 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI 10 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 8c x19: x19 x20: x20
+STACK CFI 90 x21: x21
+STACK CFI 94 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24cf8 1c .cfa: sp 0 + .ra: x30
+STACK CFI 24cfc .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 24d00 .cfa: x29 16 +
+STACK CFI 24d10 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24d14 3c .cfa: sp 0 + .ra: x30
+STACK CFI 24d18 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 24d1c .cfa: x29 16 +
+STACK CFI 24d4c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6f0e8 a0 .cfa: sp 0 + .ra: x30
+STACK CFI 6f0ec .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 6f0f0 .cfa: x29 64 +
+STACK CFI 6f0f4 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 6f180 x19: x19 x20: x20
+STACK CFI 6f184 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6f188 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6f1a4 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6f1c0 50 .cfa: sp 0 + .ra: x30
+STACK CFI 6f1c4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6f1cc .cfa: x29 32 +
+STACK CFI 6f1d0 x19: .cfa -16 + ^
+STACK CFI 6f1fc x19: x19
+STACK CFI 6f200 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 6f204 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI 6f208 x19: x19
+STACK CFI 6f20c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6f210 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6f218 24 .cfa: sp 0 + .ra: x30
+STACK CFI 6f21c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6f220 .cfa: x29 32 +
+STACK CFI 6f224 x19: .cfa -16 + ^
+STACK CFI 6f234 x19: x19
+STACK CFI 6f238 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6f23c 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6f244 38 .cfa: sp 0 + .ra: x30
+STACK CFI 6f248 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6f24c .cfa: x29 32 +
+STACK CFI 6f250 x19: .cfa -16 + ^
+STACK CFI 6f268 x19: x19
+STACK CFI 6f26c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 6f270 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI 6f274 x19: x19
+STACK CFI 6f278 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 38 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 30 x19: x19 x20: x20
+STACK CFI 34 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6f27c 84 .cfa: sp 0 + .ra: x30
+STACK CFI 6f280 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6f284 .cfa: x29 32 +
+STACK CFI 6f288 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 6f2ec x19: x19 x20: x20
+STACK CFI 6f2f0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 6f2f4 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x20: .cfa -8 + ^ x29: .cfa -32 + ^
+STACK CFI 6f2f8 x19: x19 x20: x20
+STACK CFI 6f2fc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6f300 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6f308 24 .cfa: sp 0 + .ra: x30
+STACK CFI 6f30c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6f310 .cfa: x29 32 +
+STACK CFI 6f314 x19: .cfa -16 + ^
+STACK CFI 6f324 x19: x19
+STACK CFI 6f328 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6f32c 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6f334 90 .cfa: sp 0 + .ra: x30
+STACK CFI 6f338 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 6f33c .cfa: x29 64 +
+STACK CFI 6f340 x19: .cfa -48 + ^
+STACK CFI 6f3bc x19: x19
+STACK CFI 6f3c0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 fc .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI c .cfa: x29 96 +
+STACK CFI 18 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^
+STACK CFI ec x21: x21 x22: x22
+STACK CFI f0 x19: x19 x20: x20
+STACK CFI f4 x23: x23 x24: x24
+STACK CFI f8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6f3c4 60 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6f424 44 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6f468 170 .cfa: sp 0 + .ra: x30
+STACK CFI 6f46c .cfa: sp 112 + .ra: .cfa -104 + ^ x29: .cfa -112 + ^
+STACK CFI 6f470 .cfa: x29 112 +
+STACK CFI 6f484 x19: .cfa -96 + ^ x20: .cfa -88 + ^ x21: .cfa -80 + ^ x22: .cfa -72 + ^ x23: .cfa -64 + ^ x24: .cfa -56 + ^ x25: .cfa -48 + ^ x26: .cfa -40 + ^ x27: .cfa -32 + ^ x28: .cfa -24 + ^
+STACK CFI 6f5c0 x19: x19 x20: x20
+STACK CFI 6f5c4 x21: x21 x22: x22
+STACK CFI 6f5c8 x23: x23 x24: x24
+STACK CFI 6f5cc x25: x25 x26: x26
+STACK CFI 6f5d0 x27: x27 x28: x28
+STACK CFI 6f5d4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 282a4 28 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 20 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI c .cfa: x29 32 +
+STACK CFI 1c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 20 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI c .cfa: x29 32 +
+STACK CFI 1c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 54 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^
+STACK CFI 4c x19: x19
+STACK CFI 50 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24e18 34 .cfa: sp 0 + .ra: x30
+STACK CFI 24e1c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 24e24 .cfa: x29 32 +
+STACK CFI 24e28 x19: .cfa -16 + ^
+STACK CFI 24e44 x19: x19
+STACK CFI 24e48 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 64 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 5c x19: x19 x20: x20
+STACK CFI 60 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 70 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 68 x19: x19 x20: x20
+STACK CFI 6c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 84 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 7c x19: x19 x20: x20
+STACK CFI 80 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 64 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI c x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 1c x21: .cfa -32 + ^
+STACK CFI 58 x19: x19 x20: x20
+STACK CFI 5c x21: x21
+STACK CFI 60 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 3c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^
+STACK CFI 34 x19: x19
+STACK CFI 38 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 7c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 144 + .ra: .cfa -136 + ^ x29: .cfa -144 + ^
+STACK CFI 8 .cfa: x29 144 +
+STACK CFI 14 x19: .cfa -128 + ^ x20: .cfa -120 + ^
+STACK CFI 74 x19: x19 x20: x20
+STACK CFI 78 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6f5d8 28 .cfa: sp 0 + .ra: x30
+STACK CFI 6f5dc .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6f5e8 .cfa: x29 32 +
+STACK CFI 6f5f8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6f600 28 .cfa: sp 0 + .ra: x30
+STACK CFI 6f604 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6f610 .cfa: x29 32 +
+STACK CFI 6f620 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6f628 28 .cfa: sp 0 + .ra: x30
+STACK CFI 6f62c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6f638 .cfa: x29 32 +
+STACK CFI 6f648 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6f650 28 .cfa: sp 0 + .ra: x30
+STACK CFI 6f654 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6f660 .cfa: x29 32 +
+STACK CFI 6f670 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6f678 28 .cfa: sp 0 + .ra: x30
+STACK CFI 6f67c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6f688 .cfa: x29 32 +
+STACK CFI 6f698 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6f6a0 28 .cfa: sp 0 + .ra: x30
+STACK CFI 6f6a4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 6f6b0 .cfa: x29 32 +
+STACK CFI 6f6c0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6f6c8 84 .cfa: sp 0 + .ra: x30
+STACK CFI 6f6cc .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 6f6d0 .cfa: x29 48 +
+STACK CFI 6f6d4 x19: .cfa -32 + ^
+STACK CFI 6f744 x19: x19
+STACK CFI 6f748 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25644 5c .cfa: sp 0 + .ra: x30
+STACK CFI 25648 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2564c .cfa: x29 32 +
+STACK CFI 25650 x19: .cfa -16 + ^
+STACK CFI 25698 x19: x19
+STACK CFI 2569c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 78 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI c .cfa: x29 32 +
+STACK CFI 10 x19: .cfa -16 + ^
+STACK CFI 70 x19: x19
+STACK CFI 74 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25718 50 .cfa: sp 0 + .ra: x30
+STACK CFI 2571c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 25720 .cfa: x29 32 +
+STACK CFI 25724 x19: .cfa -16 + ^
+STACK CFI 25754 x19: x19
+STACK CFI 25758 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2575c .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI 25760 x19: x19
+STACK CFI 25764 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 13c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI 10 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 130 x19: x19 x20: x20
+STACK CFI 134 x21: x21 x22: x22
+STACK CFI 138 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6f74c 74 .cfa: sp 0 + .ra: x30
+STACK CFI 6f750 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 6f754 .cfa: x29 48 +
+STACK CFI 6f758 x19: .cfa -32 + ^
+STACK CFI 6f7b8 x19: x19
+STACK CFI 6f7bc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6f7c0 20 .cfa: sp 0 + .ra: x30
+STACK CFI 6f7c4 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 6f7c8 .cfa: x29 16 +
+STACK CFI 6f7dc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6f7e0 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 e0 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^
+STACK CFI d8 x19: x19
+STACK CFI dc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 dc .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI 10 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI d0 x19: x19 x20: x20
+STACK CFI d4 x21: x21 x22: x22
+STACK CFI d8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 c8 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^
+STACK CFI c0 x19: x19
+STACK CFI c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6f7e8 68 .cfa: sp 0 + .ra: x30
+STACK CFI 6f7ec .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 6f7f0 .cfa: x29 48 +
+STACK CFI 6f7f4 x19: .cfa -32 + ^
+STACK CFI 6f848 x19: x19
+STACK CFI 6f84c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 c8 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^
+STACK CFI c0 x19: x19
+STACK CFI c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6f850 6c .cfa: sp 0 + .ra: x30
+STACK CFI 6f854 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 6f858 .cfa: x29 48 +
+STACK CFI 6f85c x19: .cfa -32 + ^
+STACK CFI 6f8b4 x19: x19
+STACK CFI 6f8b8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6f8bc 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6f8c4 6c .cfa: sp 0 + .ra: x30
+STACK CFI 6f8c8 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 6f8cc .cfa: x29 48 +
+STACK CFI 6f8d0 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 6f928 x19: x19 x20: x20
+STACK CFI 6f92c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6f930 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 19c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 194 x19: x19 x20: x20
+STACK CFI 198 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 d4 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI 10 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI c8 x19: x19 x20: x20
+STACK CFI cc x21: x21 x22: x22
+STACK CFI d0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6f938 68 .cfa: sp 0 + .ra: x30
+STACK CFI 6f93c .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 6f940 .cfa: x29 48 +
+STACK CFI 6f944 x19: .cfa -32 + ^
+STACK CFI 6f998 x19: x19
+STACK CFI 6f99c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6f9a0 c0 .cfa: sp 0 + .ra: x30
+STACK CFI 6f9a4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 6f9a8 .cfa: x29 64 +
+STACK CFI 6f9b0 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 6fa54 x21: x21
+STACK CFI 6fa58 x19: x19 x20: x20
+STACK CFI 6fa5c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6fa60 c0 .cfa: sp 0 + .ra: x30
+STACK CFI 6fa64 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 6fa68 .cfa: x29 64 +
+STACK CFI 6fa70 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 6fb14 x21: x21
+STACK CFI 6fb18 x19: x19 x20: x20
+STACK CFI 6fb1c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 110 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI 10 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 104 x19: x19 x20: x20
+STACK CFI 108 x21: x21 x22: x22
+STACK CFI 10c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 110 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI 10 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 104 x19: x19 x20: x20
+STACK CFI 108 x21: x21 x22: x22
+STACK CFI 10c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 3e8 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 112 +
+STACK CFI 8 .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI c .cfa: x29 96 +
+STACK CFI 10 x19: .cfa -80 + ^ x20: .cfa -72 + ^
+STACK CFI 3d8 .cfa: sp 112 +
+STACK CFI 3dc x19: x19 x20: x20
+STACK CFI 3e0 .ra: .ra x29: x29
+STACK CFI 3e4 .cfa: sp 0 +
+STACK CFI INIT 0 24c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 8 .cfa: x29 160 +
+STACK CFI 1c x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^ x23: .cfa -112 + ^ x24: .cfa -104 + ^ x25: .cfa -96 + ^ x26: .cfa -88 + ^ x27: .cfa -80 + ^
+STACK CFI 234 x19: x19 x20: x20
+STACK CFI 238 x21: x21 x22: x22
+STACK CFI 23c x23: x23 x24: x24
+STACK CFI 240 x25: x25 x26: x26
+STACK CFI 244 x27: x27
+STACK CFI 248 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 12c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 144 +
+STACK CFI 8 .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI c .cfa: x29 80 +
+STACK CFI 14 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI 118 .cfa: sp 144 +
+STACK CFI 11c x19: x19 x20: x20
+STACK CFI 120 x21: x21
+STACK CFI 124 .ra: .ra x29: x29
+STACK CFI 128 .cfa: sp 0 +
+STACK CFI INIT 6fb20 8c .cfa: sp 0 + .ra: x30
+STACK CFI 6fb24 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 6fb2c .cfa: x29 48 +
+STACK CFI 6fb30 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 6fba4 x19: x19 x20: x20
+STACK CFI 6fba8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6fbac 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 6fbb4 104 .cfa: sp 0 + .ra: x30
+STACK CFI 6fbb8 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 6fbbc .cfa: x29 80 +
+STACK CFI 6fbc8 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^
+STACK CFI 6fca8 x19: x19 x20: x20
+STACK CFI 6fcac x21: x21 x22: x22
+STACK CFI 6fcb0 x23: x23 x24: x24
+STACK CFI 6fcb4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 104 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI 14 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^
+STACK CFI f4 x19: x19 x20: x20
+STACK CFI f8 x21: x21 x22: x22
+STACK CFI fc x23: x23 x24: x24
+STACK CFI 100 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6fcb8 238 .cfa: sp 0 + .ra: x30
+STACK CFI 6fcbc .cfa: sp 176 + .ra: .cfa -168 + ^ x29: .cfa -176 + ^
+STACK CFI 6fcc0 .cfa: x29 176 +
+STACK CFI 6fccc x19: .cfa -160 + ^ x20: .cfa -152 + ^ x21: .cfa -144 + ^ x22: .cfa -136 + ^ x23: .cfa -128 + ^
+STACK CFI 6fee0 x23: x23
+STACK CFI 6fee4 x19: x19 x20: x20
+STACK CFI 6fee8 x21: x21 x22: x22
+STACK CFI 6feec .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6fef0 108 .cfa: sp 0 + .ra: x30
+STACK CFI 6fef4 .cfa: sp 128 + .ra: .cfa -120 + ^ x29: .cfa -128 + ^
+STACK CFI 6fef8 .cfa: x29 128 +
+STACK CFI 6ff00 x19: .cfa -112 + ^ x20: .cfa -104 + ^ x21: .cfa -96 + ^
+STACK CFI 6ffec x19: x19 x20: x20
+STACK CFI 6fff0 x21: x21
+STACK CFI 6fff4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6fff8 20 .cfa: sp 0 + .ra: x30
+STACK CFI 6fffc .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 70000 .cfa: x29 16 +
+STACK CFI 70014 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 70018 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 cc .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI 10 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI bc x21: x21
+STACK CFI c4 x19: x19 x20: x20
+STACK CFI c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 70020 fc .cfa: sp 0 + .ra: x30
+STACK CFI 70024 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 70028 .cfa: x29 64 +
+STACK CFI 70030 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 70110 x19: x19 x20: x20
+STACK CFI 70114 x21: x21 x22: x22
+STACK CFI 70118 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7011c fc .cfa: sp 0 + .ra: x30
+STACK CFI 70120 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 70124 .cfa: x29 64 +
+STACK CFI 7012c x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 7020c x19: x19 x20: x20
+STACK CFI 70210 x21: x21 x22: x22
+STACK CFI 70214 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 70218 20 .cfa: sp 0 + .ra: x30
+STACK CFI 7021c .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 70220 .cfa: x29 16 +
+STACK CFI 70234 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 70238 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 70240 fc .cfa: sp 0 + .ra: x30
+STACK CFI 70244 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 70248 .cfa: x29 64 +
+STACK CFI 70250 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 70330 x19: x19 x20: x20
+STACK CFI 70334 x21: x21 x22: x22
+STACK CFI 70338 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 168 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 8 .cfa: x29 96 +
+STACK CFI 18 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^ x25: .cfa -32 + ^ x26: .cfa -24 + ^
+STACK CFI 154 x19: x19 x20: x20
+STACK CFI 158 x21: x21 x22: x22
+STACK CFI 15c x23: x23 x24: x24
+STACK CFI 160 x25: x25 x26: x26
+STACK CFI 164 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7033c 100 .cfa: sp 0 + .ra: x30
+STACK CFI 70340 .cfa: sp 128 + .ra: .cfa -120 + ^ x29: .cfa -128 + ^
+STACK CFI 70344 .cfa: x29 128 +
+STACK CFI 7034c x19: .cfa -112 + ^ x20: .cfa -104 + ^ x21: .cfa -96 + ^
+STACK CFI 70430 x19: x19 x20: x20
+STACK CFI 70434 x21: x21
+STACK CFI 70438 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 fc .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI 10 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI f0 x19: x19 x20: x20
+STACK CFI f4 x21: x21 x22: x22
+STACK CFI f8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 100 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 128 + .ra: .cfa -120 + ^ x29: .cfa -128 + ^
+STACK CFI 8 .cfa: x29 128 +
+STACK CFI 10 x19: .cfa -112 + ^ x20: .cfa -104 + ^ x21: .cfa -96 + ^
+STACK CFI f4 x19: x19 x20: x20
+STACK CFI f8 x21: x21
+STACK CFI fc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 fc .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI 10 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI f0 x19: x19 x20: x20
+STACK CFI f4 x21: x21 x22: x22
+STACK CFI f8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 cc .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI 10 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI bc x21: x21
+STACK CFI c4 x19: x19 x20: x20
+STACK CFI c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 28 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7043c 1e4 .cfa: sp 0 + .ra: x30
+STACK CFI 70440 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 70444 .cfa: x29 80 +
+STACK CFI 70450 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI 70610 x19: x19 x20: x20
+STACK CFI 70614 x21: x21 x22: x22
+STACK CFI 70618 x23: x23
+STACK CFI 7061c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 70620 20 .cfa: sp 0 + .ra: x30
+STACK CFI 70624 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 70628 .cfa: x29 16 +
+STACK CFI 7063c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 70640 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 25b54 5c .cfa: sp 0 + .ra: x30
+STACK CFI 25b58 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 25b5c .cfa: x29 16 +
+STACK CFI 25bac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 7c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 74 x19: x19 x20: x20
+STACK CFI 78 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 70648 378 .cfa: sp 0 + .ra: x30
+STACK CFI 7064c .cfa: sp 224 + .ra: .cfa -216 + ^ x29: .cfa -224 + ^
+STACK CFI 70650 .cfa: x29 224 +
+STACK CFI 70654 x23: .cfa -176 + ^ x24: .cfa -168 + ^
+STACK CFI 70668 x19: .cfa -208 + ^ x20: .cfa -200 + ^ x21: .cfa -192 + ^ x22: .cfa -184 + ^
+STACK CFI 70674 x25: .cfa -160 + ^ x26: .cfa -152 + ^ x27: .cfa -144 + ^ x28: .cfa -136 + ^
+STACK CFI 709a8 x19: x19 x20: x20
+STACK CFI 709ac x21: x21 x22: x22
+STACK CFI 709b0 x23: x23 x24: x24
+STACK CFI 709b4 x25: x25 x26: x26
+STACK CFI 709b8 x27: x27 x28: x28
+STACK CFI 709bc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 1d4 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI c x19: .cfa -64 + ^ x20: .cfa -56 + ^
+STACK CFI 18 x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI 1c4 x23: x23
+STACK CFI 1c8 x19: x19 x20: x20
+STACK CFI 1cc x21: x21 x22: x22
+STACK CFI 1d0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25fd8 34 .cfa: sp 0 + .ra: x30
+STACK CFI 25fdc .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 25fe0 .cfa: x29 48 +
+STACK CFI 25fe4 x19: .cfa -32 + ^
+STACK CFI 26004 x19: x19
+STACK CFI 26008 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 709c0 214 .cfa: sp 0 + .ra: x30
+STACK CFI 709c4 .cfa: sp 176 + .ra: .cfa -168 + ^ x29: .cfa -176 + ^
+STACK CFI 709c8 .cfa: x29 176 +
+STACK CFI 709d4 x19: .cfa -160 + ^ x20: .cfa -152 + ^ x21: .cfa -144 + ^ x22: .cfa -136 + ^ x23: .cfa -128 + ^ x24: .cfa -120 + ^
+STACK CFI 70bc4 x19: x19 x20: x20
+STACK CFI 70bc8 x21: x21 x22: x22
+STACK CFI 70bcc x23: x23 x24: x24
+STACK CFI 70bd0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 70bd4 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 70bdc 1e4 .cfa: sp 0 + .ra: x30
+STACK CFI 70be0 .cfa: sp 224 +
+STACK CFI 70be4 .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 70be8 .cfa: x29 160 +
+STACK CFI 70bf4 x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^ x23: .cfa -112 + ^
+STACK CFI 70da4 .cfa: sp 224 +
+STACK CFI 70dac x19: x19 x20: x20
+STACK CFI 70db0 x21: x21 x22: x22
+STACK CFI 70db4 x23: x23
+STACK CFI 70db8 .ra: .ra x29: x29
+STACK CFI 70dbc .cfa: sp 0 +
+STACK CFI INIT 70dc0 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 70dc8 168 .cfa: sp 0 + .ra: x30
+STACK CFI 70dcc .cfa: sp 144 + .ra: .cfa -136 + ^ x29: .cfa -144 + ^
+STACK CFI 70dd0 .cfa: x29 144 +
+STACK CFI 70ddc x19: .cfa -128 + ^ x20: .cfa -120 + ^ x21: .cfa -112 + ^ x22: .cfa -104 + ^ x23: .cfa -96 + ^
+STACK CFI 70f20 x23: x23
+STACK CFI 70f24 x19: x19 x20: x20
+STACK CFI 70f28 x21: x21 x22: x22
+STACK CFI 70f2c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 70f30 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 1cc .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 128 + .ra: .cfa -120 + ^ x29: .cfa -128 + ^
+STACK CFI 8 .cfa: x29 128 +
+STACK CFI c x19: .cfa -112 + ^ x20: .cfa -104 + ^
+STACK CFI 18 x21: .cfa -96 + ^ x22: .cfa -88 + ^ x23: .cfa -80 + ^
+STACK CFI 1bc x23: x23
+STACK CFI 1c0 x19: x19 x20: x20
+STACK CFI 1c4 x21: x21 x22: x22
+STACK CFI 1c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 1e4 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 176 + .ra: .cfa -168 + ^ x29: .cfa -176 + ^
+STACK CFI 8 .cfa: x29 176 +
+STACK CFI 14 x19: .cfa -160 + ^ x20: .cfa -152 + ^ x21: .cfa -144 + ^ x22: .cfa -136 + ^ x23: .cfa -128 + ^ x24: .cfa -120 + ^
+STACK CFI 1d4 x19: x19 x20: x20
+STACK CFI 1d8 x21: x21 x22: x22
+STACK CFI 1dc x23: x23 x24: x24
+STACK CFI 1e0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 e4 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 112 + .ra: .cfa -104 + ^ x29: .cfa -112 + ^
+STACK CFI c .cfa: x29 112 +
+STACK CFI 18 x19: .cfa -96 + ^ x20: .cfa -88 + ^ x21: .cfa -80 + ^ x22: .cfa -72 + ^ x23: .cfa -64 + ^ x24: .cfa -56 + ^
+STACK CFI d4 x19: x19 x20: x20
+STACK CFI d8 x21: x21 x22: x22
+STACK CFI dc x23: x23 x24: x24
+STACK CFI e0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 70f38 248 .cfa: sp 0 + .ra: x30
+STACK CFI 70f3c .cfa: sp 192 + .ra: .cfa -184 + ^ x29: .cfa -192 + ^
+STACK CFI 70f40 .cfa: x29 192 +
+STACK CFI 70f50 x19: .cfa -176 + ^ x20: .cfa -168 + ^ x21: .cfa -160 + ^ x22: .cfa -152 + ^ x23: .cfa -144 + ^ x24: .cfa -136 + ^ x25: .cfa -128 + ^ x26: .cfa -120 + ^
+STACK CFI 7116c x19: x19 x20: x20
+STACK CFI 71170 x21: x21 x22: x22
+STACK CFI 71174 x23: x23 x24: x24
+STACK CFI 71178 x25: x25 x26: x26
+STACK CFI 7117c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 71180 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 71188 50 .cfa: sp 0 + .ra: x30
+STACK CFI 7118c .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 71190 .cfa: x29 48 +
+STACK CFI 71198 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 711cc x19: x19 x20: x20
+STACK CFI 711d0 x21: x21
+STACK CFI 711d4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 711d8 5c .cfa: sp 0 + .ra: x30
+STACK CFI 711dc .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 711e0 .cfa: x29 32 +
+STACK CFI 711e4 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 71220 x19: x19 x20: x20
+STACK CFI 71224 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 71228 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x20: .cfa -8 + ^ x29: .cfa -32 + ^
+STACK CFI 7122c x19: x19 x20: x20
+STACK CFI 71230 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 71234 24 .cfa: sp 0 + .ra: x30
+STACK CFI 71238 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 7123c .cfa: x29 32 +
+STACK CFI 71240 x19: .cfa -16 + ^
+STACK CFI 71250 x19: x19
+STACK CFI 71254 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 71258 50 .cfa: sp 0 + .ra: x30
+STACK CFI 7125c .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 71260 .cfa: x29 48 +
+STACK CFI 71268 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 7129c x19: x19 x20: x20
+STACK CFI 712a0 x21: x21
+STACK CFI 712a4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 712a8 3c .cfa: sp 0 + .ra: x30
+STACK CFI 712ac .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 712b0 .cfa: x29 32 +
+STACK CFI 712b8 x19: .cfa -16 + ^
+STACK CFI 712dc x19: x19
+STACK CFI 712e0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 712e4 6c .cfa: sp 0 + .ra: x30
+STACK CFI 712e8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 712ec .cfa: x29 32 +
+STACK CFI 712f0 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 7133c x19: x19 x20: x20
+STACK CFI 71340 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 71344 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x20: .cfa -8 + ^ x29: .cfa -32 + ^
+STACK CFI 71348 x19: x19 x20: x20
+STACK CFI 7134c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 71350 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 71358 24 .cfa: sp 0 + .ra: x30
+STACK CFI 7135c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 71360 .cfa: x29 32 +
+STACK CFI 71364 x19: .cfa -16 + ^
+STACK CFI 71374 x19: x19
+STACK CFI 71378 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7137c 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 71384 78 .cfa: sp 0 + .ra: x30
+STACK CFI 71388 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 7138c .cfa: x29 32 +
+STACK CFI 71390 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 713e8 x19: x19 x20: x20
+STACK CFI 713ec .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 713f0 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x20: .cfa -8 + ^ x29: .cfa -32 + ^
+STACK CFI 713f4 x19: x19 x20: x20
+STACK CFI 713f8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 713fc 24 .cfa: sp 0 + .ra: x30
+STACK CFI 71400 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 71404 .cfa: x29 32 +
+STACK CFI 71408 x19: .cfa -16 + ^
+STACK CFI 71418 x19: x19
+STACK CFI 7141c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 60 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 4c x19: x19 x20: x20
+STACK CFI 50 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 54 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x20: .cfa -8 + ^ x29: .cfa -32 + ^
+STACK CFI 58 x19: x19 x20: x20
+STACK CFI 5c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^
+STACK CFI 1c x19: x19
+STACK CFI 20 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 71420 58 .cfa: sp 0 + .ra: x30
+STACK CFI 71424 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 71428 .cfa: x29 48 +
+STACK CFI 71430 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 7146c x19: x19 x20: x20
+STACK CFI 71470 x21: x21
+STACK CFI 71474 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 71478 d4 .cfa: sp 0 + .ra: x30
+STACK CFI 7147c .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 71480 .cfa: x29 48 +
+STACK CFI 71484 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 71544 x19: x19 x20: x20
+STACK CFI 71548 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7154c 24 .cfa: sp 0 + .ra: x30
+STACK CFI 71550 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 71554 .cfa: x29 32 +
+STACK CFI 71558 x19: .cfa -16 + ^
+STACK CFI 71568 x19: x19
+STACK CFI 7156c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 71570 78 .cfa: sp 0 + .ra: x30
+STACK CFI 71574 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 71578 .cfa: x29 32 +
+STACK CFI 7157c x19: .cfa -16 + ^
+STACK CFI 715d8 x19: x19
+STACK CFI 715e4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 715e8 134 .cfa: sp 0 + .ra: x30
+STACK CFI 715ec .cfa: sp 128 + .ra: .cfa -120 + ^ x29: .cfa -128 + ^
+STACK CFI 715f0 .cfa: x29 128 +
+STACK CFI 715f8 x19: .cfa -112 + ^ x20: .cfa -104 + ^ x21: .cfa -96 + ^ x22: .cfa -88 + ^
+STACK CFI 71710 x19: x19 x20: x20
+STACK CFI 71714 x21: x21 x22: x22
+STACK CFI 71718 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7171c 270 .cfa: sp 0 + .ra: x30
+STACK CFI 71720 .cfa: sp 112 + .ra: .cfa -104 + ^ x29: .cfa -112 + ^
+STACK CFI 71724 .cfa: x29 112 +
+STACK CFI 71730 x19: .cfa -96 + ^ x20: .cfa -88 + ^ x21: .cfa -80 + ^ x22: .cfa -72 + ^ x23: .cfa -64 + ^
+STACK CFI 7197c x23: x23
+STACK CFI 71980 x19: x19 x20: x20
+STACK CFI 71984 x21: x21 x22: x22
+STACK CFI 71988 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7198c 280 .cfa: sp 0 + .ra: x30
+STACK CFI 71990 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 71994 .cfa: x29 96 +
+STACK CFI 7199c x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^
+STACK CFI 719a4 x19: .cfa -80 + ^ x20: .cfa -72 + ^
+STACK CFI 71bfc x19: x19 x20: x20
+STACK CFI 71c00 x21: x21 x22: x22
+STACK CFI 71c04 x23: x23
+STACK CFI 71c08 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 71c0c 18 .cfa: sp 0 + .ra: x30
+STACK CFI 71c10 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 71c14 .cfa: x29 32 +
+STACK CFI 71c20 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 29c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 8 .cfa: x29 96 +
+STACK CFI c x23: .cfa -48 + ^
+STACK CFI 24 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^
+STACK CFI 28c x19: x19 x20: x20
+STACK CFI 290 x21: x21 x22: x22
+STACK CFI 294 x23: x23
+STACK CFI 298 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 18 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI 14 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 71c24 280 .cfa: sp 0 + .ra: x30
+STACK CFI 71c28 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 71c2c .cfa: x29 96 +
+STACK CFI 71c34 x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^
+STACK CFI 71c3c x19: .cfa -80 + ^ x20: .cfa -72 + ^
+STACK CFI 71e94 x19: x19 x20: x20
+STACK CFI 71e98 x21: x21 x22: x22
+STACK CFI 71e9c x23: x23
+STACK CFI 71ea0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 71ea4 18 .cfa: sp 0 + .ra: x30
+STACK CFI 71ea8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 71eac .cfa: x29 32 +
+STACK CFI 71eb8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 280 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 8 .cfa: x29 96 +
+STACK CFI 10 x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^
+STACK CFI 18 x19: .cfa -80 + ^ x20: .cfa -72 + ^
+STACK CFI 270 x19: x19 x20: x20
+STACK CFI 274 x21: x21 x22: x22
+STACK CFI 278 x23: x23
+STACK CFI 27c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 18 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI 14 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 29c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 8 .cfa: x29 96 +
+STACK CFI c x23: .cfa -48 + ^
+STACK CFI 24 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^
+STACK CFI 28c x19: x19 x20: x20
+STACK CFI 290 x21: x21 x22: x22
+STACK CFI 294 x23: x23
+STACK CFI 298 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 18 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI 14 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 71ebc 280 .cfa: sp 0 + .ra: x30
+STACK CFI 71ec0 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 71ec4 .cfa: x29 96 +
+STACK CFI 71ecc x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^
+STACK CFI 71ed4 x19: .cfa -80 + ^ x20: .cfa -72 + ^
+STACK CFI 7212c x19: x19 x20: x20
+STACK CFI 72130 x21: x21 x22: x22
+STACK CFI 72134 x23: x23
+STACK CFI 72138 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7213c 18 .cfa: sp 0 + .ra: x30
+STACK CFI 72140 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 72144 .cfa: x29 32 +
+STACK CFI 72150 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 72154 280 .cfa: sp 0 + .ra: x30
+STACK CFI 72158 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 7215c .cfa: x29 96 +
+STACK CFI 72164 x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^
+STACK CFI 7216c x19: .cfa -80 + ^ x20: .cfa -72 + ^
+STACK CFI 723c4 x19: x19 x20: x20
+STACK CFI 723c8 x21: x21 x22: x22
+STACK CFI 723cc x23: x23
+STACK CFI 723d0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 723d4 18 .cfa: sp 0 + .ra: x30
+STACK CFI 723d8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 723dc .cfa: x29 32 +
+STACK CFI 723e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 723ec 280 .cfa: sp 0 + .ra: x30
+STACK CFI 723f0 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 723f4 .cfa: x29 96 +
+STACK CFI 723fc x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^
+STACK CFI 72404 x19: .cfa -80 + ^ x20: .cfa -72 + ^
+STACK CFI 7265c x19: x19 x20: x20
+STACK CFI 72660 x21: x21 x22: x22
+STACK CFI 72664 x23: x23
+STACK CFI 72668 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7266c 18 .cfa: sp 0 + .ra: x30
+STACK CFI 72670 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 72674 .cfa: x29 32 +
+STACK CFI 72680 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 280 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 8 .cfa: x29 96 +
+STACK CFI 10 x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^
+STACK CFI 18 x19: .cfa -80 + ^ x20: .cfa -72 + ^
+STACK CFI 270 x19: x19 x20: x20
+STACK CFI 274 x21: x21 x22: x22
+STACK CFI 278 x23: x23
+STACK CFI 27c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 18 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI 14 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 72684 370 .cfa: sp 0 + .ra: x30
+STACK CFI 72688 .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 7268c .cfa: x29 160 +
+STACK CFI 726a0 x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^ x23: .cfa -112 + ^ x24: .cfa -104 + ^ x25: .cfa -96 + ^ x26: .cfa -88 + ^ x27: .cfa -80 + ^ x28: .cfa -72 + ^
+STACK CFI 729dc x19: x19 x20: x20
+STACK CFI 729e0 x21: x21 x22: x22
+STACK CFI 729e4 x23: x23 x24: x24
+STACK CFI 729e8 x25: x25 x26: x26
+STACK CFI 729ec x27: x27 x28: x28
+STACK CFI 729f0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 729f4 8c .cfa: sp 0 + .ra: x30
+STACK CFI 729f8 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 72a00 .cfa: x29 48 +
+STACK CFI 72a04 x19: .cfa -32 + ^
+STACK CFI 72a78 x19: x19
+STACK CFI 72a7c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 72a80 134 .cfa: sp 0 + .ra: x30
+STACK CFI 72a84 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 72a88 .cfa: x29 48 +
+STACK CFI 72a90 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 72b94 x19: x19 x20: x20
+STACK CFI 72b98 x21: x21
+STACK CFI 72b9c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 72ba0 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x29: .cfa -48 + ^
+STACK CFI 72ba8 x21: x21
+STACK CFI 72bac x19: x19 x20: x20
+STACK CFI 72bb0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 72bb4 1b0 .cfa: sp 0 + .ra: x30
+STACK CFI 72bb8 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 72bbc .cfa: x29 80 +
+STACK CFI 72bc0 x19: .cfa -64 + ^ x20: .cfa -56 + ^
+STACK CFI 72bcc x23: .cfa -32 + ^ x24: .cfa -24 + ^ x25: .cfa -16 + ^ x26: .cfa -8 + ^
+STACK CFI 72bd8 x21: .cfa -48 + ^ x22: .cfa -40 + ^
+STACK CFI 72d50 x19: x19 x20: x20
+STACK CFI 72d54 x21: x21 x22: x22
+STACK CFI 72d58 x23: x23 x24: x24
+STACK CFI 72d5c x25: x25 x26: x26
+STACK CFI 72d60 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 72d64 158 .cfa: sp 0 + .ra: x30
+STACK CFI 72d68 .cfa: sp 112 + .ra: .cfa -104 + ^ x29: .cfa -112 + ^
+STACK CFI 72d6c .cfa: x29 112 +
+STACK CFI 72d74 x19: .cfa -96 + ^ x20: .cfa -88 + ^ x21: .cfa -80 + ^ x22: .cfa -72 + ^
+STACK CFI 72eb0 x19: x19 x20: x20
+STACK CFI 72eb4 x21: x21 x22: x22
+STACK CFI 72eb8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 72ebc 14f4 .cfa: sp 0 + .ra: x30
+STACK CFI 72ec0 .cfa: sp 128 + .ra: .cfa -120 + ^ x29: .cfa -128 + ^
+STACK CFI 72ec4 .cfa: x29 128 +
+STACK CFI 72ed0 x19: .cfa -112 + ^ x20: .cfa -104 + ^ x21: .cfa -96 + ^ x22: .cfa -88 + ^ x23: .cfa -80 + ^ x24: .cfa -72 + ^
+STACK CFI 743a0 x19: x19 x20: x20
+STACK CFI 743a4 x21: x21 x22: x22
+STACK CFI 743a8 x23: x23 x24: x24
+STACK CFI 743ac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 743b0 170 .cfa: sp 0 + .ra: x30
+STACK CFI 743b4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 743b8 .cfa: x29 64 +
+STACK CFI 743c0 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 74514 x19: x19 x20: x20
+STACK CFI 74518 x21: x21 x22: x22
+STACK CFI 7451c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 74520 170 .cfa: sp 0 + .ra: x30
+STACK CFI 74524 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 74528 .cfa: x29 64 +
+STACK CFI 74530 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 74684 x19: x19 x20: x20
+STACK CFI 74688 x21: x21 x22: x22
+STACK CFI 7468c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 164 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI 10 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 158 x19: x19 x20: x20
+STACK CFI 15c x21: x21
+STACK CFI 160 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 74690 240 .cfa: sp 0 + .ra: x30
+STACK CFI 74694 .cfa: sp 240 + .ra: .cfa -232 + ^ x29: .cfa -240 + ^
+STACK CFI 74698 .cfa: x29 240 +
+STACK CFI 746a8 x19: .cfa -224 + ^ x20: .cfa -216 + ^ x21: .cfa -208 + ^ x22: .cfa -200 + ^ x23: .cfa -192 + ^ x24: .cfa -184 + ^ x25: .cfa -176 + ^
+STACK CFI 748bc x25: x25
+STACK CFI 748c0 x19: x19 x20: x20
+STACK CFI 748c4 x21: x21 x22: x22
+STACK CFI 748c8 x23: x23 x24: x24
+STACK CFI 748cc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 748d0 268 .cfa: sp 0 + .ra: x30
+STACK CFI 748d4 .cfa: sp 176 + .ra: .cfa -168 + ^ x29: .cfa -176 + ^
+STACK CFI 748d8 .cfa: x29 176 +
+STACK CFI 748e4 x19: .cfa -160 + ^ x20: .cfa -152 + ^ x21: .cfa -144 + ^ x22: .cfa -136 + ^ x23: .cfa -128 + ^
+STACK CFI 74b28 x23: x23
+STACK CFI 74b2c x19: x19 x20: x20
+STACK CFI 74b30 x21: x21 x22: x22
+STACK CFI 74b34 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 74b38 18c .cfa: sp 0 + .ra: x30
+STACK CFI 74b3c .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 74b40 .cfa: x29 64 +
+STACK CFI 74b48 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 74cb8 x19: x19 x20: x20
+STACK CFI 74cbc x21: x21 x22: x22
+STACK CFI 74cc0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 74cc4 1f4 .cfa: sp 0 + .ra: x30
+STACK CFI 74cc8 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 74ccc .cfa: x29 64 +
+STACK CFI 74cd4 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 74eac x21: x21
+STACK CFI 74eb0 x19: x19 x20: x20
+STACK CFI 74eb4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 138 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI c .cfa: x29 64 +
+STACK CFI 14 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 12c x21: x21
+STACK CFI 130 x19: x19 x20: x20
+STACK CFI 134 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 19c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 176 + .ra: .cfa -168 + ^ x29: .cfa -176 + ^
+STACK CFI c .cfa: x29 176 +
+STACK CFI 18 x19: .cfa -160 + ^ x20: .cfa -152 + ^ x21: .cfa -144 + ^ x22: .cfa -136 + ^ x23: .cfa -128 + ^
+STACK CFI 18c x23: x23
+STACK CFI 190 x19: x19 x20: x20
+STACK CFI 194 x21: x21 x22: x22
+STACK CFI 198 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 19c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI c .cfa: x29 64 +
+STACK CFI 14 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 190 x21: x21
+STACK CFI 194 x19: x19 x20: x20
+STACK CFI 198 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 36c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI 14 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI 35c x23: x23
+STACK CFI 360 x19: x19 x20: x20
+STACK CFI 364 x21: x21 x22: x22
+STACK CFI 368 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 74eb8 2c8 .cfa: sp 0 + .ra: x30
+STACK CFI 74ebc .cfa: sp 112 + .ra: .cfa -104 + ^ x29: .cfa -112 + ^
+STACK CFI 74ec0 .cfa: x29 112 +
+STACK CFI 74ecc x19: .cfa -96 + ^ x20: .cfa -88 + ^ x21: .cfa -80 + ^ x22: .cfa -72 + ^ x23: .cfa -64 + ^ x24: .cfa -56 + ^
+STACK CFI 75170 x19: x19 x20: x20
+STACK CFI 75174 x21: x21 x22: x22
+STACK CFI 75178 x23: x23 x24: x24
+STACK CFI 7517c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 c8 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI c0 x19: x19 x20: x20
+STACK CFI c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 258 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI 10 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 24c x19: x19 x20: x20
+STACK CFI 250 x21: x21
+STACK CFI 254 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 75180 238 .cfa: sp 0 + .ra: x30
+STACK CFI 75184 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 75188 .cfa: x29 96 +
+STACK CFI 75194 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^
+STACK CFI 753a8 x19: x19 x20: x20
+STACK CFI 753ac x21: x21 x22: x22
+STACK CFI 753b0 x23: x23
+STACK CFI 753b4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 753b8 21c .cfa: sp 0 + .ra: x30
+STACK CFI 753bc .cfa: sp 224 + .ra: .cfa -216 + ^ x29: .cfa -224 + ^
+STACK CFI 753c0 .cfa: x29 224 +
+STACK CFI 753cc x19: .cfa -208 + ^ x20: .cfa -200 + ^ x21: .cfa -192 + ^ x22: .cfa -184 + ^ x23: .cfa -176 + ^ x24: .cfa -168 + ^
+STACK CFI 755c4 x19: x19 x20: x20
+STACK CFI 755c8 x21: x21 x22: x22
+STACK CFI 755cc x23: x23 x24: x24
+STACK CFI 755d0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 755d4 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 755d8 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 755e0 240 .cfa: sp 0 + .ra: x30
+STACK CFI 755e4 .cfa: sp 224 + .ra: .cfa -216 + ^ x29: .cfa -224 + ^
+STACK CFI 755e8 .cfa: x29 224 +
+STACK CFI 755f4 x19: .cfa -208 + ^ x20: .cfa -200 + ^ x21: .cfa -192 + ^ x22: .cfa -184 + ^ x23: .cfa -176 + ^ x24: .cfa -168 + ^
+STACK CFI 75810 x19: x19 x20: x20
+STACK CFI 75814 x21: x21 x22: x22
+STACK CFI 75818 x23: x23 x24: x24
+STACK CFI 7581c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 75820 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 75824 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7582c 240 .cfa: sp 0 + .ra: x30
+STACK CFI 75830 .cfa: sp 224 + .ra: .cfa -216 + ^ x29: .cfa -224 + ^
+STACK CFI 75834 .cfa: x29 224 +
+STACK CFI 75840 x19: .cfa -208 + ^ x20: .cfa -200 + ^ x21: .cfa -192 + ^ x22: .cfa -184 + ^ x23: .cfa -176 + ^ x24: .cfa -168 + ^
+STACK CFI 75a5c x19: x19 x20: x20
+STACK CFI 75a60 x21: x21 x22: x22
+STACK CFI 75a64 x23: x23 x24: x24
+STACK CFI 75a68 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 75a6c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 75a70 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 75a78 240 .cfa: sp 0 + .ra: x30
+STACK CFI 75a7c .cfa: sp 224 + .ra: .cfa -216 + ^ x29: .cfa -224 + ^
+STACK CFI 75a80 .cfa: x29 224 +
+STACK CFI 75a8c x19: .cfa -208 + ^ x20: .cfa -200 + ^ x21: .cfa -192 + ^ x22: .cfa -184 + ^ x23: .cfa -176 + ^ x24: .cfa -168 + ^
+STACK CFI 75ca8 x19: x19 x20: x20
+STACK CFI 75cac x21: x21 x22: x22
+STACK CFI 75cb0 x23: x23 x24: x24
+STACK CFI 75cb4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 75cb8 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 75cbc 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 75cc4 cc .cfa: sp 0 + .ra: x30
+STACK CFI 75cc8 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 75ccc .cfa: x29 64 +
+STACK CFI 75cd4 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 75d84 x19: x19 x20: x20
+STACK CFI 75d88 x21: x21 x22: x22
+STACK CFI 75d8c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 75d90 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 75d98 440 .cfa: sp 0 + .ra: x30
+STACK CFI 75d9c .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 75da0 .cfa: x29 96 +
+STACK CFI 75dac x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^
+STACK CFI 761c8 x19: x19 x20: x20
+STACK CFI 761cc x21: x21 x22: x22
+STACK CFI 761d0 x23: x23 x24: x24
+STACK CFI 761d4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 761d8 334 .cfa: sp 0 + .ra: x30
+STACK CFI 761dc .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 761e0 .cfa: x29 96 +
+STACK CFI 761ec x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^
+STACK CFI 764fc x19: x19 x20: x20
+STACK CFI 76500 x21: x21 x22: x22
+STACK CFI 76504 x23: x23 x24: x24
+STACK CFI 76508 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7650c 17c .cfa: sp 0 + .ra: x30
+STACK CFI 76510 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 76514 .cfa: x29 64 +
+STACK CFI 7651c x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 7667c x21: x21
+STACK CFI 76680 x19: x19 x20: x20
+STACK CFI 76684 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 4a4 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 144 + .ra: .cfa -136 + ^ x29: .cfa -144 + ^
+STACK CFI 8 .cfa: x29 144 +
+STACK CFI c x19: .cfa -128 + ^ x20: .cfa -120 + ^
+STACK CFI 20 x21: .cfa -112 + ^ x22: .cfa -104 + ^ x23: .cfa -96 + ^
+STACK CFI 494 x23: x23
+STACK CFI 498 x19: x19 x20: x20
+STACK CFI 49c x21: x21 x22: x22
+STACK CFI 4a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 64 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI c x19: .cfa -32 + ^
+STACK CFI 5c x19: x19
+STACK CFI 60 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 d4 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI 10 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI c8 x19: x19 x20: x20
+STACK CFI cc x21: x21 x22: x22
+STACK CFI d0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 5c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 5c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 5c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 124 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI 10 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 38 x19: x19 x20: x20
+STACK CFI 3c x21: x21 x22: x22
+STACK CFI 40 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 44 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^ x29: .cfa -48 + ^
+STACK CFI INIT 76688 c8 .cfa: sp 0 + .ra: x30
+STACK CFI 7668c .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 76690 .cfa: x29 48 +
+STACK CFI 76694 x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 766a0 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 76744 x19: x19 x20: x20
+STACK CFI 76748 x21: x21 x22: x22
+STACK CFI 7674c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 76750 e4 .cfa: sp 0 + .ra: x30
+STACK CFI 76754 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 76760 .cfa: x29 64 +
+STACK CFI 76764 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 7682c x19: x19 x20: x20
+STACK CFI 76830 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 76834 1cc .cfa: sp 0 + .ra: x30
+STACK CFI 76838 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 7683c .cfa: x29 96 +
+STACK CFI 7684c x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^ x25: .cfa -32 + ^
+STACK CFI 769ec x25: x25
+STACK CFI 769f0 x19: x19 x20: x20
+STACK CFI 769f4 x21: x21 x22: x22
+STACK CFI 769f8 x23: x23 x24: x24
+STACK CFI 769fc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 76a00 84 .cfa: sp 0 + .ra: x30
+STACK CFI 76a04 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 76a0c .cfa: x29 48 +
+STACK CFI 76a80 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 76a84 28 .cfa: sp 0 + .ra: x30
+STACK CFI 76a88 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 76a90 .cfa: x29 32 +
+STACK CFI 76aa8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 76aac 624 .cfa: sp 0 + .ra: x30
+STACK CFI 76ab0 .cfa: sp 224 + .ra: .cfa -216 + ^ x29: .cfa -224 + ^
+STACK CFI 76ab4 .cfa: x29 224 +
+STACK CFI 76ab8 x23: .cfa -176 + ^ x24: .cfa -168 + ^
+STACK CFI 76acc x19: .cfa -208 + ^ x20: .cfa -200 + ^ x21: .cfa -192 + ^ x22: .cfa -184 + ^ x25: .cfa -160 + ^ x26: .cfa -152 + ^ x27: .cfa -144 + ^ x28: .cfa -136 + ^
+STACK CFI 770b8 x19: x19 x20: x20
+STACK CFI 770bc x21: x21 x22: x22
+STACK CFI 770c0 x23: x23 x24: x24
+STACK CFI 770c4 x25: x25 x26: x26
+STACK CFI 770c8 x27: x27 x28: x28
+STACK CFI 770cc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 770d0 c8 .cfa: sp 0 + .ra: x30
+STACK CFI 770d4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 770d8 .cfa: x29 48 +
+STACK CFI 770dc x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 770e8 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 7718c x19: x19 x20: x20
+STACK CFI 77190 x21: x21 x22: x22
+STACK CFI 77194 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 77198 254 .cfa: sp 0 + .ra: x30
+STACK CFI 7719c .cfa: sp 224 + .ra: .cfa -216 + ^ x29: .cfa -224 + ^
+STACK CFI 771a0 .cfa: x29 224 +
+STACK CFI 771ac x19: .cfa -208 + ^ x20: .cfa -200 + ^ x21: .cfa -192 + ^ x22: .cfa -184 + ^ x23: .cfa -176 + ^ x24: .cfa -168 + ^
+STACK CFI 773dc x19: x19 x20: x20
+STACK CFI 773e0 x21: x21 x22: x22
+STACK CFI 773e4 x23: x23 x24: x24
+STACK CFI 773e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 773ec 7c8 .cfa: sp 0 + .ra: x30
+STACK CFI 773f0 .cfa: sp 432 + .ra: .cfa -424 + ^ x29: .cfa -432 + ^
+STACK CFI 773f4 .cfa: x29 432 +
+STACK CFI 77408 x19: .cfa -416 + ^ x20: .cfa -408 + ^ x21: .cfa -400 + ^ x22: .cfa -392 + ^ x23: .cfa -384 + ^ x24: .cfa -376 + ^ x25: .cfa -368 + ^ x26: .cfa -360 + ^ x27: .cfa -352 + ^ x28: .cfa -344 + ^
+STACK CFI 77b9c x19: x19 x20: x20
+STACK CFI 77ba0 x21: x21 x22: x22
+STACK CFI 77ba4 x23: x23 x24: x24
+STACK CFI 77ba8 x25: x25 x26: x26
+STACK CFI 77bac x27: x27 x28: x28
+STACK CFI 77bb0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 77bb4 70c .cfa: sp 0 + .ra: x30
+STACK CFI 77bb8 .cfa: sp 240 + .ra: .cfa -232 + ^ x29: .cfa -240 + ^
+STACK CFI 77bbc .cfa: x29 240 +
+STACK CFI 77bd0 x19: .cfa -224 + ^ x20: .cfa -216 + ^ x21: .cfa -208 + ^ x22: .cfa -200 + ^ x23: .cfa -192 + ^ x24: .cfa -184 + ^ x25: .cfa -176 + ^ x26: .cfa -168 + ^ x27: .cfa -160 + ^ x28: .cfa -152 + ^
+STACK CFI 782a8 x19: x19 x20: x20
+STACK CFI 782ac x21: x21 x22: x22
+STACK CFI 782b0 x23: x23 x24: x24
+STACK CFI 782b4 x25: x25 x26: x26
+STACK CFI 782b8 x27: x27 x28: x28
+STACK CFI 782bc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 5e8 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 288 + .ra: .cfa -280 + ^ x29: .cfa -288 + ^
+STACK CFI 8 .cfa: x29 288 +
+STACK CFI 20 v8: .cfa -192 + ^ v9: .cfa -184 + ^ x19: .cfa -272 + ^ x20: .cfa -264 + ^ x21: .cfa -256 + ^ x22: .cfa -248 + ^ x23: .cfa -240 + ^ x24: .cfa -232 + ^ x25: .cfa -224 + ^ x26: .cfa -216 + ^ x27: .cfa -208 + ^ x28: .cfa -200 + ^
+STACK CFI 5cc v8: v8 v9: v9
+STACK CFI 5d0 x19: x19 x20: x20
+STACK CFI 5d4 x21: x21 x22: x22
+STACK CFI 5d8 x23: x23 x24: x24
+STACK CFI 5dc x25: x25 x26: x26
+STACK CFI 5e0 x27: x27 x28: x28
+STACK CFI 5e4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 782c0 c8 .cfa: sp 0 + .ra: x30
+STACK CFI 782c4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 782c8 .cfa: x29 48 +
+STACK CFI 782cc x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 782d8 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 7837c x19: x19 x20: x20
+STACK CFI 78380 x21: x21 x22: x22
+STACK CFI 78384 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 78388 e4 .cfa: sp 0 + .ra: x30
+STACK CFI 7838c .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 78398 .cfa: x29 64 +
+STACK CFI 7839c x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 78464 x19: x19 x20: x20
+STACK CFI 78468 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7846c 1cc .cfa: sp 0 + .ra: x30
+STACK CFI 78470 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 78474 .cfa: x29 96 +
+STACK CFI 78484 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^ x25: .cfa -32 + ^
+STACK CFI 78624 x25: x25
+STACK CFI 78628 x19: x19 x20: x20
+STACK CFI 7862c x21: x21 x22: x22
+STACK CFI 78630 x23: x23 x24: x24
+STACK CFI 78634 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 78638 6e4 .cfa: sp 0 + .ra: x30
+STACK CFI 7863c .cfa: sp 304 + .ra: .cfa -296 + ^ x29: .cfa -304 + ^
+STACK CFI 78640 .cfa: x29 304 +
+STACK CFI 7865c v10: .cfa -192 + ^ v8: .cfa -208 + ^ v9: .cfa -200 + ^ x19: .cfa -288 + ^ x20: .cfa -280 + ^ x21: .cfa -272 + ^ x22: .cfa -264 + ^ x23: .cfa -256 + ^ x24: .cfa -248 + ^ x25: .cfa -240 + ^ x26: .cfa -232 + ^ x27: .cfa -224 + ^ x28: .cfa -216 + ^
+STACK CFI 78cfc v8: v8 v9: v9
+STACK CFI 78d00 x19: x19 x20: x20
+STACK CFI 78d04 x21: x21 x22: x22
+STACK CFI 78d08 x23: x23 x24: x24
+STACK CFI 78d0c x25: x25 x26: x26
+STACK CFI 78d10 x27: x27 x28: x28
+STACK CFI 78d14 v10: v10
+STACK CFI 78d18 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 78d1c d4 .cfa: sp 0 + .ra: x30
+STACK CFI 78d20 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 78d24 .cfa: x29 48 +
+STACK CFI 78d2c x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 78de4 x21: x21
+STACK CFI 78de8 x19: x19 x20: x20
+STACK CFI 78dec .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 78df0 60 .cfa: sp 0 + .ra: x30
+STACK CFI 78df4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 78df8 .cfa: x29 32 +
+STACK CFI 78dfc x19: .cfa -16 + ^
+STACK CFI 78e48 x19: x19
+STACK CFI 78e4c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 78e50 1f8 .cfa: sp 0 + .ra: x30
+STACK CFI 78e54 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 78e58 .cfa: x29 96 +
+STACK CFI 78e68 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^ x25: .cfa -32 + ^ x26: .cfa -24 + ^
+STACK CFI 79034 x19: x19 x20: x20
+STACK CFI 79038 x21: x21 x22: x22
+STACK CFI 7903c x23: x23 x24: x24
+STACK CFI 79040 x25: x25 x26: x26
+STACK CFI 79044 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 79048 130 .cfa: sp 0 + .ra: x30
+STACK CFI 7904c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 79054 .cfa: x29 32 +
+STACK CFI 79058 x19: .cfa -16 + ^
+STACK CFI 79154 x19: x19
+STACK CFI 79158 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7915c .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI INIT 79178 24 .cfa: sp 0 + .ra: x30
+STACK CFI 7917c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 79180 .cfa: x29 32 +
+STACK CFI 79184 x19: .cfa -16 + ^
+STACK CFI 79194 x19: x19
+STACK CFI 79198 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7919c a8 .cfa: sp 0 + .ra: x30
+STACK CFI 791a0 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 791a4 .cfa: x29 48 +
+STACK CFI 791a8 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 79230 x19: x19 x20: x20
+STACK CFI 79234 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 79238 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x29: .cfa -48 + ^
+STACK CFI 7923c x19: x19 x20: x20
+STACK CFI 79240 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 79244 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 79250 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 79260 24 .cfa: sp 0 + .ra: x30
+STACK CFI 79264 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 79268 .cfa: x29 32 +
+STACK CFI 7926c x19: .cfa -16 + ^
+STACK CFI 7927c x19: x19
+STACK CFI 79280 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 79284 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 79294 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 792a0 bc .cfa: sp 0 + .ra: x30
+STACK CFI 792a4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 792a8 .cfa: x29 32 +
+STACK CFI 792ac x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 79354 x19: x19 x20: x20
+STACK CFI 79358 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7935c 94 .cfa: sp 0 + .ra: x30
+STACK CFI 79360 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 79368 .cfa: x29 64 +
+STACK CFI 79370 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 793e0 x19: x19 x20: x20
+STACK CFI 793e8 x21: x21
+STACK CFI 793ec .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 793f0 8c .cfa: sp 0 + .ra: x30
+STACK CFI 793f4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 793f8 .cfa: x29 64 +
+STACK CFI 79400 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 79470 x19: x19 x20: x20
+STACK CFI 79474 x21: x21
+STACK CFI 79478 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7947c 1f4 .cfa: sp 0 + .ra: x30
+STACK CFI 79480 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 79484 .cfa: x29 96 +
+STACK CFI 7948c x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^
+STACK CFI 79664 x19: x19 x20: x20
+STACK CFI 79668 x21: x21 x22: x22
+STACK CFI 7966c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 79670 fc .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7976c 124 .cfa: sp 0 + .ra: x30
+STACK CFI 79770 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 7977c .cfa: x29 64 +
+STACK CFI 79784 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 79884 x19: x19 x20: x20
+STACK CFI 79888 x21: x21 x22: x22
+STACK CFI 7988c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 79890 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7989c 20 .cfa: sp 0 + .ra: x30
+STACK CFI 798a0 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 798a4 .cfa: x29 16 +
+STACK CFI 798b8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 798bc 1c .cfa: sp 0 + .ra: x30
+STACK CFI 798c0 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 798c4 .cfa: x29 16 +
+STACK CFI 798d4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 4c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8 .cfa: x29 32 +
+STACK CFI c x19: .cfa -16 + ^
+STACK CFI 44 x19: x19
+STACK CFI 48 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 248e8 30 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 798d8 54 .cfa: sp 0 + .ra: x30
+STACK CFI 798dc .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 798e4 .cfa: x29 16 +
+STACK CFI 79928 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 98 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI 10 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^
+STACK CFI 8c x19: x19 x20: x20
+STACK CFI 90 x21: x21
+STACK CFI 94 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24cf8 1c .cfa: sp 0 + .ra: x30
+STACK CFI 24cfc .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 24d00 .cfa: x29 16 +
+STACK CFI 24d10 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 24d14 3c .cfa: sp 0 + .ra: x30
+STACK CFI 24d18 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 24d1c .cfa: x29 16 +
+STACK CFI 24d4c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25644 5c .cfa: sp 0 + .ra: x30
+STACK CFI 25648 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 2564c .cfa: x29 32 +
+STACK CFI 25650 x19: .cfa -16 + ^
+STACK CFI 25698 x19: x19
+STACK CFI 2569c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 78 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI c .cfa: x29 32 +
+STACK CFI 10 x19: .cfa -16 + ^
+STACK CFI 70 x19: x19
+STACK CFI 74 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 25718 50 .cfa: sp 0 + .ra: x30
+STACK CFI 2571c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 25720 .cfa: x29 32 +
+STACK CFI 25724 x19: .cfa -16 + ^
+STACK CFI 25754 x19: x19
+STACK CFI 25758 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 2575c .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI 25760 x19: x19
+STACK CFI 25764 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 104 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8 .cfa: x29 80 +
+STACK CFI 14 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^
+STACK CFI f4 x19: x19 x20: x20
+STACK CFI f8 x21: x21 x22: x22
+STACK CFI fc x23: x23 x24: x24
+STACK CFI 100 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 13c .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 8 .cfa: x29 64 +
+STACK CFI 10 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 130 x19: x19 x20: x20
+STACK CFI 134 x21: x21 x22: x22
+STACK CFI 138 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 54490 ec .cfa: sp 0 + .ra: x30
+STACK CFI 54494 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 54498 .cfa: x29 80 +
+STACK CFI 544a0 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^
+STACK CFI 5456c x21: x21
+STACK CFI 54574 x19: x19 x20: x20
+STACK CFI 54578 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7992c 58 .cfa: sp 0 + .ra: x30
+STACK CFI 79930 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 79934 .cfa: x29 48 +
+STACK CFI 7993c x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 79978 x19: x19 x20: x20
+STACK CFI 7997c x21: x21
+STACK CFI 79980 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 79984 50 .cfa: sp 0 + .ra: x30
+STACK CFI 79988 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 79990 .cfa: x29 32 +
+STACK CFI 79994 x19: .cfa -16 + ^
+STACK CFI 799c0 x19: x19
+STACK CFI 799c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 799c8 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI 799cc x19: x19
+STACK CFI 799d0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 799d4 24 .cfa: sp 0 + .ra: x30
+STACK CFI 799d8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 799dc .cfa: x29 32 +
+STACK CFI 799e0 x19: .cfa -16 + ^
+STACK CFI 799f0 x19: x19
+STACK CFI 799f4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 799f8 40 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 79a38 12c .cfa: sp 0 + .ra: x30
+STACK CFI 79a3c .cfa: sp 144 + .ra: .cfa -136 + ^ x29: .cfa -144 + ^
+STACK CFI 79a40 .cfa: x29 144 +
+STACK CFI 79a4c x19: .cfa -128 + ^ x20: .cfa -120 + ^ x21: .cfa -112 + ^ x22: .cfa -104 + ^ x23: .cfa -96 + ^
+STACK CFI 79b50 x23: x23
+STACK CFI 79b58 x19: x19 x20: x20
+STACK CFI 79b5c x21: x21 x22: x22
+STACK CFI 79b60 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 79b64 234 .cfa: sp 0 + .ra: x30
+STACK CFI 79b68 .cfa: sp 112 + .ra: .cfa -104 + ^ x29: .cfa -112 + ^
+STACK CFI 79b6c .cfa: x29 112 +
+STACK CFI 79b78 x19: .cfa -96 + ^ x20: .cfa -88 + ^ x21: .cfa -80 + ^ x22: .cfa -72 + ^ x23: .cfa -64 + ^ x24: .cfa -56 + ^
+STACK CFI 79d88 x19: x19 x20: x20
+STACK CFI 79d8c x21: x21 x22: x22
+STACK CFI 79d90 x23: x23 x24: x24
+STACK CFI 79d94 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 79d98 64 .cfa: sp 0 + .ra: x30
+STACK CFI 79d9c .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 79da4 .cfa: x29 48 +
+STACK CFI 79da8 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 79df4 x19: x19 x20: x20
+STACK CFI 79df8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 0 5c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 5c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 0 124 .cfa: sp 0 + .ra: x30
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8 .cfa: x29 48 +
+STACK CFI 10 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 38 x19: x19 x20: x20
+STACK CFI 3c x21: x21 x22: x22
+STACK CFI 40 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 44 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^ x29: .cfa -48 + ^
+STACK CFI INIT 79dfc c8 .cfa: sp 0 + .ra: x30
+STACK CFI 79e00 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 79e04 .cfa: x29 48 +
+STACK CFI 79e08 x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 79e14 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 79eb8 x19: x19 x20: x20
+STACK CFI 79ebc x21: x21 x22: x22
+STACK CFI 79ec0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 79ec4 2d8 .cfa: sp 0 + .ra: x30
+STACK CFI 79ec8 .cfa: sp 224 + .ra: .cfa -216 + ^ x29: .cfa -224 + ^
+STACK CFI 79ecc .cfa: x29 224 +
+STACK CFI 79ed8 x19: .cfa -208 + ^ x20: .cfa -200 + ^ x21: .cfa -192 + ^ x22: .cfa -184 + ^ x23: .cfa -176 + ^ x24: .cfa -168 + ^
+STACK CFI 7a18c x19: x19 x20: x20
+STACK CFI 7a190 x21: x21 x22: x22
+STACK CFI 7a194 x23: x23 x24: x24
+STACK CFI 7a198 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7a19c 204 .cfa: sp 0 + .ra: x30
+STACK CFI 7a1a0 .cfa: sp 192 + .ra: .cfa -184 + ^ x29: .cfa -192 + ^
+STACK CFI 7a1a4 .cfa: x29 192 +
+STACK CFI 7a1a8 x19: .cfa -176 + ^ x20: .cfa -168 + ^
+STACK CFI 7a1d8 v8: .cfa -96 + ^ x21: .cfa -160 + ^ x22: .cfa -152 + ^ x23: .cfa -144 + ^ x24: .cfa -136 + ^ x25: .cfa -128 + ^ x26: .cfa -120 + ^ x27: .cfa -112 + ^ x28: .cfa -104 + ^
+STACK CFI 7a384 x19: x19 x20: x20
+STACK CFI 7a388 x21: x21 x22: x22
+STACK CFI 7a38c x23: x23 x24: x24
+STACK CFI 7a390 x25: x25 x26: x26
+STACK CFI 7a394 x27: x27 x28: x28
+STACK CFI 7a398 v8: v8
+STACK CFI 7a39c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7a3a0 34 .cfa: sp 0 + .ra: x30
+STACK CFI 7a3a4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 7a3a8 .cfa: x29 48 +
+STACK CFI 7a3ac x19: .cfa -32 + ^
+STACK CFI 7a3cc x19: x19
+STACK CFI 7a3d0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 6d160 9c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7a3d4 5c .cfa: sp 0 + .ra: x30
+STACK CFI 7a3d8 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 7a3dc .cfa: x29 48 +
+STACK CFI 7a3e4 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 7a414 x21: x21
+STACK CFI 7a418 x19: x19 x20: x20
+STACK CFI 7a41c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7a420 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x29: .cfa -48 + ^
+STACK CFI 7a424 x19: x19 x20: x20
+STACK CFI 7a428 x21: x21
+STACK CFI 7a42c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7a430 74 .cfa: sp 0 + .ra: x30
+STACK CFI 7a434 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 7a438 .cfa: x29 32 +
+STACK CFI 7a43c x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 7a498 x19: x19 x20: x20
+STACK CFI 7a49c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7a4a4 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7a4b4 14 .cfa: sp 0 + .ra: x30
+STACK CFI 7a4b8 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 7a4c0 .cfa: x29 16 +
+STACK CFI INIT 7a4c8 168 .cfa: sp 0 + .ra: x30
+STACK CFI 7a4cc .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 7a4d0 .cfa: x29 64 +
+STACK CFI 7a4d4 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 7a4dc x21: .cfa -32 + ^
+STACK CFI 7a4f4 x21: x21
+STACK CFI 7a4f8 x19: x19 x20: x20
+STACK CFI 7a4fc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7a500 .cfa: x29 64 + .ra: .cfa -56 + ^ x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x29: .cfa -64 + ^
+STACK CFI 7a560 x21: x21
+STACK CFI 7a564 x19: x19 x20: x20
+STACK CFI 7a568 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7a56c .cfa: x29 64 + .ra: .cfa -56 + ^ x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x29: .cfa -64 + ^
+STACK CFI INIT 7a630 4c .cfa: sp 0 + .ra: x30
+STACK CFI 7a634 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 7a638 .cfa: x29 48 +
+STACK CFI 7a63c x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 7a644 x21: .cfa -16 + ^
+STACK CFI INIT 7a67c 2c .cfa: sp 0 + .ra: x30
+STACK CFI 7a684 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 7a688 .cfa: x29 16 +
+STACK CFI 7a694 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7a698 .cfa: x29 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI INIT 7a6a8 5c .cfa: sp 0 + .ra: x30
+STACK CFI 7a6ac .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 7a6b4 .cfa: x29 16 +
+STACK CFI 7a6e4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7a6e8 .cfa: x29 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI INIT 7a704 60 .cfa: sp 0 + .ra: x30
+STACK CFI 7a708 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 7a70c .cfa: x29 48 +
+STACK CFI 7a714 x19: .cfa -32 + ^
+STACK CFI 7a728 x19: x19
+STACK CFI 7a72c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7a730 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI INIT 7a764 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7a76c 3c .cfa: sp 0 + .ra: x30
+STACK CFI 7a770 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 7a77c .cfa: x29 16 +
+STACK CFI INIT 7a7a8 58 .cfa: sp 0 + .ra: x30
+STACK CFI 7a7ac .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 7a7b0 .cfa: x29 16 +
+STACK CFI INIT 7a800 a4 .cfa: sp 0 + .ra: x30
+STACK CFI 7a804 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 7a808 .cfa: x29 32 +
+STACK CFI 7a80c x19: .cfa -16 + ^
+STACK CFI 7a870 x19: x19
+STACK CFI 7a878 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7a87c .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI INIT 7a8a4 b4 .cfa: sp 0 + .ra: x30
+STACK CFI 7a8a8 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 7a8ac .cfa: x29 16 +
+STACK CFI 7a8e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7a8ec .cfa: x29 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 7a90c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7a910 .cfa: x29 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 7a938 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7a93c .cfa: x29 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI INIT 233a4 88 .cfa: sp 0 + .ra: x30
+STACK CFI 233a8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 233b4 .cfa: x29 32 +
+STACK CFI 233c0 x19: .cfa -16 + ^
+STACK CFI 23404 x19: x19
+STACK CFI 23414 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 23420 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI INIT 7a958 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7a964 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7a968 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7a96c c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7a978 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7a97c c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7a988 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7a98c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7a990 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7a9a0 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7a9b0 20 .cfa: sp 0 + .ra: x30
+STACK CFI 7a9b4 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 7a9b8 .cfa: x29 16 +
+STACK CFI 7a9c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7a9d0 78 .cfa: sp 0 + .ra: x30
+STACK CFI 7a9d4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 7a9e0 .cfa: x29 32 +
+STACK CFI 7a9e4 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI INIT 7aa48 10 .cfa: sp 0 + .ra: x30
+STACK CFI 7aa4c .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 7aa50 .cfa: x29 16 +
+STACK CFI INIT 7aa58 a0 .cfa: sp 0 + .ra: x30
+STACK CFI 7aa5c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 7aa64 .cfa: x29 32 +
+STACK CFI 7aab4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7aab8 .cfa: x29 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 7aad4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7aad8 .cfa: x29 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 7aaf4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7aaf8 c4 .cfa: sp 0 + .ra: x30
+STACK CFI 7aafc .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 7ab00 .cfa: x29 96 +
+STACK CFI 7ab10 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^ x25: .cfa -32 + ^
+STACK CFI 7ab84 x25: x25
+STACK CFI 7ab88 x19: x19 x20: x20
+STACK CFI 7ab8c x21: x21 x22: x22
+STACK CFI 7ab90 x23: x23 x24: x24
+STACK CFI 7ab94 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7ab98 .cfa: x29 96 + .ra: .cfa -88 + ^ x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^ x25: .cfa -32 + ^ x29: .cfa -96 + ^
+STACK CFI 7aba0 x25: x25
+STACK CFI 7aba4 x19: x19 x20: x20
+STACK CFI 7aba8 x21: x21 x22: x22
+STACK CFI 7abac x23: x23 x24: x24
+STACK CFI 7abb0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7abb4 .cfa: x29 96 + .ra: .cfa -88 + ^ x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^ x25: .cfa -32 + ^ x29: .cfa -96 + ^
+STACK CFI INIT 7abbc 3d4 .cfa: sp 0 + .ra: x30
+STACK CFI 7abc0 .cfa: sp 208 + .ra: .cfa -200 + ^ x29: .cfa -208 + ^
+STACK CFI 7abc4 .cfa: x29 208 +
+STACK CFI 7abcc v8: .cfa -112 + ^ v9: .cfa -104 + ^ x25: .cfa -144 + ^ x26: .cfa -136 + ^
+STACK CFI 7abe8 v10: .cfa -96 + ^ v11: .cfa -88 + ^ v12: .cfa -80 + ^ v13: .cfa -72 + ^ x23: .cfa -160 + ^ x24: .cfa -152 + ^
+STACK CFI 7abfc v14: .cfa -64 + ^ x19: .cfa -192 + ^ x20: .cfa -184 + ^ x21: .cfa -176 + ^ x22: .cfa -168 + ^ x27: .cfa -128 + ^ x28: .cfa -120 + ^
+STACK CFI 7ad94 x19: x19 x20: x20
+STACK CFI 7ad98 v8: v8 v9: v9
+STACK CFI 7ad9c x21: x21 x22: x22
+STACK CFI 7ada0 v10: v10 v11: v11
+STACK CFI 7ada4 x23: x23 x24: x24
+STACK CFI 7ada8 v12: v12 v13: v13
+STACK CFI 7adac x25: x25 x26: x26
+STACK CFI 7adb0 x27: x27 x28: x28
+STACK CFI 7adb4 v14: v14
+STACK CFI 7adb8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7adbc .cfa: x29 208 + .ra: .cfa -200 + ^ v10: .cfa -96 + ^ v11: .cfa -88 + ^ v12: .cfa -80 + ^ v13: .cfa -72 + ^ v14: .cfa -64 + ^ v8: .cfa -112 + ^ v9: .cfa -104 + ^ x19: .cfa -192 + ^ x20: .cfa -184 + ^ x21: .cfa -176 + ^ x22: .cfa -168 + ^ x23: .cfa -160 + ^ x24: .cfa -152 + ^ x25: .cfa -144 + ^ x26: .cfa -136 + ^ x27: .cfa -128 + ^ x28: .cfa -120 + ^ x29: .cfa -208 + ^
+STACK CFI INIT 7af90 48 .cfa: sp 0 + .ra: x30
+STACK CFI 7af94 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 7af98 .cfa: x29 32 +
+STACK CFI 7af9c x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 7afd0 x19: x19 x20: x20
+STACK CFI 7afd4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7afd8 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7afe0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7afe4 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7afe8 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7afec 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7aff0 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7affc 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7b00c 30 .cfa: sp 0 + .ra: x30
+STACK CFI 7b010 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 7b018 .cfa: x29 32 +
+STACK CFI 7b01c x19: .cfa -16 + ^
+STACK CFI 7b034 x19: x19
+STACK CFI 7b038 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7b03c 2c .cfa: sp 0 + .ra: x30
+STACK CFI 7b040 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 7b044 .cfa: x29 32 +
+STACK CFI 7b048 x19: .cfa -16 + ^
+STACK CFI 7b060 x19: x19
+STACK CFI 7b064 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7b068 90 .cfa: sp 0 + .ra: x30
+STACK CFI 7b06c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 7b070 .cfa: x29 32 +
+STACK CFI 7b074 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 7b0ac x19: x19 x20: x20
+STACK CFI 7b0b0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7b0b4 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x20: .cfa -8 + ^ x29: .cfa -32 + ^
+STACK CFI INIT 7b0f8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 7b0fc .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 7b100 .cfa: x29 16 +
+STACK CFI 7b108 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7b10c .cfa: x29 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI INIT 7b11c 1b4 .cfa: sp 0 + .ra: x30
+STACK CFI 7b120 .cfa: sp 112 + .ra: .cfa -104 + ^ x29: .cfa -112 + ^
+STACK CFI 7b134 .cfa: x29 112 +
+STACK CFI 7b148 x19: .cfa -96 + ^ x20: .cfa -88 + ^ x21: .cfa -80 + ^ x22: .cfa -72 + ^ x23: .cfa -64 + ^
+STACK CFI 7b1f4 x23: x23
+STACK CFI 7b1f8 x19: x19 x20: x20
+STACK CFI 7b1fc x21: x21 x22: x22
+STACK CFI 7b200 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7b204 .cfa: x29 112 + .ra: .cfa -104 + ^ x19: .cfa -96 + ^ x20: .cfa -88 + ^ x21: .cfa -80 + ^ x22: .cfa -72 + ^ x23: .cfa -64 + ^ x29: .cfa -112 + ^
+STACK CFI INIT 7b2d0 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7b2d8 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7b2e8 30 .cfa: sp 0 + .ra: x30
+STACK CFI 7b2ec .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 7b2f4 .cfa: x29 32 +
+STACK CFI 7b2f8 x19: .cfa -16 + ^
+STACK CFI 7b310 x19: x19
+STACK CFI 7b314 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7b318 60 .cfa: sp 0 + .ra: x30
+STACK CFI 7b31c .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 7b320 .cfa: x29 48 +
+STACK CFI 7b328 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 7b36c x19: x19 x20: x20
+STACK CFI 7b370 x21: x21 x22: x22
+STACK CFI 7b374 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7b378 18 .cfa: sp 0 + .ra: x30
+STACK CFI 7b380 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 7b388 .cfa: x29 16 +
+STACK CFI INIT 7b390 30 .cfa: sp 0 + .ra: x30
+STACK CFI 7b394 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 7b398 .cfa: x29 16 +
+STACK CFI INIT 7b3c0 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7b3dc 24 .cfa: sp 0 + .ra: x30
+STACK CFI 7b3e4 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 7b3ec .cfa: x29 16 +
+STACK CFI INIT 7b400 c .cfa: sp 0 + .ra: x30
+STACK CFI 7b404 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 7b408 .cfa: x29 16 +
+STACK CFI INIT 7b40c 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7b428 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7b42c c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7b438 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7b448 30 .cfa: sp 0 + .ra: x30
+STACK CFI 7b44c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 7b454 .cfa: x29 32 +
+STACK CFI 7b458 x19: .cfa -16 + ^
+STACK CFI 7b470 x19: x19
+STACK CFI 7b474 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7b478 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7b484 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7b490 2c .cfa: sp 0 + .ra: x30
+STACK CFI 7b494 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 7b498 .cfa: x29 32 +
+STACK CFI 7b49c x19: .cfa -16 + ^
+STACK CFI 7b4b4 x19: x19
+STACK CFI 7b4b8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7b4bc 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7b4c4 44 .cfa: sp 0 + .ra: x30
+STACK CFI 7b4c8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 7b4d4 .cfa: x29 32 +
+STACK CFI 7b4d8 x19: .cfa -16 + ^
+STACK CFI 7b500 x19: x19
+STACK CFI 7b504 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7b508 24 .cfa: sp 0 + .ra: x30
+STACK CFI 7b50c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 7b510 .cfa: x29 32 +
+STACK CFI 7b514 x19: .cfa -16 + ^
+STACK CFI 7b524 x19: x19
+STACK CFI 7b528 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7b52c 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7b540 24 .cfa: sp 0 + .ra: x30
+STACK CFI 7b544 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 7b548 .cfa: x29 32 +
+STACK CFI 7b54c x19: .cfa -16 + ^
+STACK CFI 7b55c x19: x19
+STACK CFI 7b560 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7b564 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7b578 24 .cfa: sp 0 + .ra: x30
+STACK CFI 7b57c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 7b580 .cfa: x29 32 +
+STACK CFI 7b584 x19: .cfa -16 + ^
+STACK CFI 7b594 x19: x19
+STACK CFI 7b598 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7b59c 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7b5b0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 7b5b4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 7b5b8 .cfa: x29 32 +
+STACK CFI 7b5bc x19: .cfa -16 + ^
+STACK CFI 7b5cc x19: x19
+STACK CFI 7b5d0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7b5d4 18 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7b5ec a0 .cfa: sp 0 + .ra: x30
+STACK CFI 7b5f0 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 7b5f4 .cfa: x29 48 +
+STACK CFI 7b5fc x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 7b654 x19: x19 x20: x20
+STACK CFI 7b658 x21: x21 x22: x22
+STACK CFI 7b65c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7b660 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^ x29: .cfa -48 + ^
+STACK CFI INIT 7b68c c4 .cfa: sp 0 + .ra: x30
+STACK CFI 7b690 .cfa: sp 128 + .ra: .cfa -120 + ^ x29: .cfa -128 + ^
+STACK CFI 7b694 .cfa: x29 128 +
+STACK CFI 7b69c x19: .cfa -112 + ^ x20: .cfa -104 + ^ x21: .cfa -96 + ^
+STACK CFI INIT 7b750 c4 .cfa: sp 0 + .ra: x30
+STACK CFI 7b754 .cfa: sp 128 + .ra: .cfa -120 + ^ x29: .cfa -128 + ^
+STACK CFI 7b758 .cfa: x29 128 +
+STACK CFI 7b760 x19: .cfa -112 + ^ x20: .cfa -104 + ^ x21: .cfa -96 + ^
+STACK CFI INIT 7b814 18 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7b82c 28 .cfa: sp 0 + .ra: x30
+STACK CFI 7b830 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 7b838 .cfa: x29 16 +
+STACK CFI 7b850 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7b854 60 .cfa: sp 0 + .ra: x30
+STACK CFI 7b858 .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 7b85c .cfa: x29 160 +
+STACK CFI 7b860 x19: .cfa -144 + ^
+STACK CFI 7b890 x19: x19
+STACK CFI 7b894 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7b898 .cfa: x29 160 + .ra: .cfa -152 + ^ x19: .cfa -144 + ^ x29: .cfa -160 + ^
+STACK CFI 7b8a0 x19: x19
+STACK CFI 7b8b0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7b8b4 140 .cfa: sp 0 + .ra: x30
+STACK CFI 7b8b8 .cfa: sp 176 + .ra: .cfa -168 + ^ x29: .cfa -176 + ^
+STACK CFI 7b8bc .cfa: x29 176 +
+STACK CFI 7b8c0 x19: .cfa -160 + ^ x20: .cfa -152 + ^
+STACK CFI 7b8cc x21: .cfa -144 + ^ x22: .cfa -136 + ^
+STACK CFI 7b8f0 x19: x19 x20: x20
+STACK CFI 7b8f4 x21: x21 x22: x22
+STACK CFI 7b8f8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7b8fc .cfa: x29 176 + .ra: .cfa -168 + ^ x19: .cfa -160 + ^ x20: .cfa -152 + ^ x21: .cfa -144 + ^ x22: .cfa -136 + ^ x29: .cfa -176 + ^
+STACK CFI 7b978 x19: x19 x20: x20
+STACK CFI 7b97c x21: x21 x22: x22
+STACK CFI 7b980 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7b984 .cfa: x29 176 + .ra: .cfa -168 + ^ x19: .cfa -160 + ^ x20: .cfa -152 + ^ x21: .cfa -144 + ^ x22: .cfa -136 + ^ x29: .cfa -176 + ^
+STACK CFI INIT 7b9f4 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7b9fc d4 .cfa: sp 0 + .ra: x30
+STACK CFI 7ba00 .cfa: sp 176 + .ra: .cfa -168 + ^ x29: .cfa -176 + ^
+STACK CFI 7ba04 .cfa: x29 176 +
+STACK CFI 7ba0c x19: .cfa -160 + ^ x20: .cfa -152 + ^ x21: .cfa -144 + ^
+STACK CFI 7ba8c x19: x19 x20: x20
+STACK CFI 7ba90 x21: x21
+STACK CFI 7ba94 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7ba98 .cfa: x29 176 + .ra: .cfa -168 + ^ x19: .cfa -160 + ^ x20: .cfa -152 + ^ x21: .cfa -144 + ^ x29: .cfa -176 + ^
+STACK CFI 7baa0 x21: x21
+STACK CFI 7baa4 x19: x19 x20: x20
+STACK CFI 7baa8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7baac .cfa: x29 176 + .ra: .cfa -168 + ^ x19: .cfa -160 + ^ x20: .cfa -152 + ^ x21: .cfa -144 + ^ x29: .cfa -176 + ^
+STACK CFI INIT 7bad0 58 .cfa: sp 0 + .ra: x30
+STACK CFI 7bad4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 7badc .cfa: x29 32 +
+STACK CFI 7bae0 x19: .cfa -16 + ^
+STACK CFI 7bb0c x19: x19
+STACK CFI 7bb10 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7bb14 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI INIT 7bb28 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7bb30 68 .cfa: sp 0 + .ra: x30
+STACK CFI 7bb34 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 7bb38 .cfa: x29 48 +
+STACK CFI 7bb40 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 7bb8c x19: x19 x20: x20
+STACK CFI 7bb90 x21: x21
+STACK CFI 7bb94 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7bb98 90 .cfa: sp 0 + .ra: x30
+STACK CFI 7bb9c .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 7bba4 .cfa: x29 48 +
+STACK CFI 7bba8 x19: .cfa -32 + ^
+STACK CFI 7bbc8 x19: x19
+STACK CFI 7bbcc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7bbd0 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 7bbe0 x19: x19
+STACK CFI 7bbe4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7bbe8 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 7bc0c x19: x19
+STACK CFI 7bc10 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7bc14 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 7bc20 x19: x19
+STACK CFI 7bc24 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7bc28 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7bc34 8c .cfa: sp 0 + .ra: x30
+STACK CFI 7bc38 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 7bc40 .cfa: x29 48 +
+STACK CFI 7bc44 x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 7bc50 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 7bc94 x19: x19 x20: x20
+STACK CFI 7bc98 x21: x21 x22: x22
+STACK CFI 7bc9c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7bca0 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^ x29: .cfa -48 + ^
+STACK CFI INIT 7bcc0 424 .cfa: sp 0 + .ra: x30
+STACK CFI 7bcc4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 7bcc8 .cfa: x29 80 +
+STACK CFI 7bcd4 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^
+STACK CFI 7bd14 x19: x19 x20: x20
+STACK CFI 7bd18 x21: x21 x22: x22
+STACK CFI 7bd1c x23: x23 x24: x24
+STACK CFI 7bd20 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7bd24 .cfa: x29 80 + .ra: .cfa -72 + ^ x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^ x29: .cfa -80 + ^
+STACK CFI 7bf6c x21: x21 x22: x22
+STACK CFI 7bf70 x19: x19 x20: x20
+STACK CFI 7bf74 x23: x23 x24: x24
+STACK CFI 7bf78 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7bf7c .cfa: x29 80 + .ra: .cfa -72 + ^ x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^ x29: .cfa -80 + ^
+STACK CFI 7bfe0 x21: x21 x22: x22
+STACK CFI 7bfe4 x19: x19 x20: x20
+STACK CFI 7bfe8 x23: x23 x24: x24
+STACK CFI 7bfec .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7bff0 .cfa: x29 80 + .ra: .cfa -72 + ^ x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^ x29: .cfa -80 + ^
+STACK CFI INIT 7c0e4 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7c0f8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 7c0fc .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 7c100 .cfa: x29 32 +
+STACK CFI 7c104 x19: .cfa -16 + ^
+STACK CFI 7c114 x19: x19
+STACK CFI 7c118 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7c11c 18 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7c134 30 .cfa: sp 0 + .ra: x30
+STACK CFI 7c138 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 7c13c .cfa: x29 32 +
+STACK CFI 7c140 x19: .cfa -16 + ^
+STACK CFI 7c15c x19: x19
+STACK CFI 7c160 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7c164 60 .cfa: sp 0 + .ra: x30
+STACK CFI 7c168 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 7c16c .cfa: x29 48 +
+STACK CFI 7c170 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 7c178 x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 7c1b8 x19: x19 x20: x20
+STACK CFI 7c1bc x21: x21 x22: x22
+STACK CFI 7c1c0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7c1c4 d0 .cfa: sp 0 + .ra: x30
+STACK CFI 7c1c8 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 7c1cc .cfa: x29 80 +
+STACK CFI 7c1d0 x19: .cfa -64 + ^ x20: .cfa -56 + ^
+STACK CFI 7c1dc x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI 7c23c x23: x23
+STACK CFI 7c244 x19: x19 x20: x20
+STACK CFI 7c248 x21: x21 x22: x22
+STACK CFI 7c24c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7c250 .cfa: x29 80 + .ra: .cfa -72 + ^ x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x29: .cfa -80 + ^
+STACK CFI 7c26c x23: x23
+STACK CFI 7c274 x19: x19 x20: x20
+STACK CFI 7c278 x21: x21 x22: x22
+STACK CFI 7c27c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7c280 .cfa: x29 80 + .ra: .cfa -72 + ^ x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x29: .cfa -80 + ^
+STACK CFI INIT 7c294 64 .cfa: sp 0 + .ra: x30
+STACK CFI 7c2a0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 7c2a4 .cfa: x29 32 +
+STACK CFI 7c2ac x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 7c2dc x19: x19 x20: x20
+STACK CFI 7c2e0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7c2e4 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x20: .cfa -8 + ^ x29: .cfa -32 + ^
+STACK CFI INIT 7c2f8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 7c2fc .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 7c300 .cfa: x29 32 +
+STACK CFI 7c304 x19: .cfa -16 + ^
+STACK CFI 7c314 x19: x19
+STACK CFI 7c318 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7c31c c0 .cfa: sp 0 + .ra: x30
+STACK CFI 7c320 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 7c328 .cfa: x29 96 +
+STACK CFI 7c330 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^
+STACK CFI INIT 7c3dc 6c .cfa: sp 0 + .ra: x30
+STACK CFI 7c3e0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 7c3e8 .cfa: x29 32 +
+STACK CFI 7c3ec x19: .cfa -16 + ^
+STACK CFI 7c440 x19: x19
+STACK CFI 7c444 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7c448 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7c44c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7c450 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7c45c c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7c468 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7c470 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7c478 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7c480 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7c488 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7c490 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7c4a0 30 .cfa: sp 0 + .ra: x30
+STACK CFI 7c4a4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 7c4ac .cfa: x29 32 +
+STACK CFI 7c4b0 x19: .cfa -16 + ^
+STACK CFI 7c4c8 x19: x19
+STACK CFI 7c4cc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7c4d0 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7c4e0 30 .cfa: sp 0 + .ra: x30
+STACK CFI 7c4e4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 7c4ec .cfa: x29 32 +
+STACK CFI 7c4f0 x19: .cfa -16 + ^
+STACK CFI 7c508 x19: x19
+STACK CFI 7c50c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7c510 20 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7c530 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7c540 3c .cfa: sp 0 + .ra: x30
+STACK CFI 7c544 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 7c54c .cfa: x29 32 +
+STACK CFI 7c550 x19: .cfa -16 + ^
+STACK CFI 7c574 x19: x19
+STACK CFI 7c578 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7c57c 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7c58c 20 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7c5ac 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7c5bc 3c .cfa: sp 0 + .ra: x30
+STACK CFI 7c5c0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 7c5c8 .cfa: x29 32 +
+STACK CFI 7c5cc x19: .cfa -16 + ^
+STACK CFI 7c5f0 x19: x19
+STACK CFI 7c5f4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7c5f8 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7c608 c4 .cfa: sp 0 + .ra: x30
+STACK CFI 7c60c .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 7c614 .cfa: x29 64 +
+STACK CFI 7c620 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 7c6b4 x23: x23
+STACK CFI 7c6b8 x19: x19 x20: x20
+STACK CFI 7c6bc x21: x21 x22: x22
+STACK CFI 7c6c0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7c6c4 .cfa: x29 64 + .ra: .cfa -56 + ^ x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^ x29: .cfa -64 + ^
+STACK CFI INIT 7c6cc c8 .cfa: sp 0 + .ra: x30
+STACK CFI 7c6d0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 7c6d8 .cfa: x29 64 +
+STACK CFI 7c6e4 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 7c784 x23: x23
+STACK CFI 7c788 x19: x19 x20: x20
+STACK CFI 7c78c x21: x21 x22: x22
+STACK CFI 7c790 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7c794 38 .cfa: sp 0 + .ra: x30
+STACK CFI 7c798 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 7c7a0 .cfa: x29 16 +
+STACK CFI 7c7c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7c7cc dc .cfa: sp 0 + .ra: x30
+STACK CFI 7c7d0 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 7c7d4 .cfa: x29 80 +
+STACK CFI 7c7e0 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^
+STACK CFI 7c87c x19: x19 x20: x20
+STACK CFI 7c880 x21: x21 x22: x22
+STACK CFI 7c884 x23: x23 x24: x24
+STACK CFI 7c888 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7c88c .cfa: x29 80 + .ra: .cfa -72 + ^ x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^ x29: .cfa -80 + ^
+STACK CFI 7c898 x19: x19 x20: x20
+STACK CFI 7c89c x21: x21 x22: x22
+STACK CFI 7c8a0 x23: x23 x24: x24
+STACK CFI 7c8a4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7c8a8 a4 .cfa: sp 0 + .ra: x30
+STACK CFI 7c8ac .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 7c8b4 .cfa: x29 32 +
+STACK CFI 7c8b8 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 7c8e4 x19: x19 x20: x20
+STACK CFI 7c8e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7c8ec .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x20: .cfa -8 + ^ x29: .cfa -32 + ^
+STACK CFI 7c924 x19: x19 x20: x20
+STACK CFI 7c928 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7c92c .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x20: .cfa -8 + ^ x29: .cfa -32 + ^
+STACK CFI 7c938 x19: x19 x20: x20
+STACK CFI 7c948 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7c94c 40 .cfa: sp 0 + .ra: x30
+STACK CFI 7c950 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 7c954 .cfa: x29 32 +
+STACK CFI 7c95c x19: .cfa -16 + ^
+STACK CFI 7c984 x19: x19
+STACK CFI 7c988 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7c98c c4 .cfa: sp 0 + .ra: x30
+STACK CFI 7c990 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 7c998 .cfa: x29 64 +
+STACK CFI 7c9a4 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 7ca40 x23: x23
+STACK CFI 7ca44 x19: x19 x20: x20
+STACK CFI 7ca48 x21: x21 x22: x22
+STACK CFI 7ca4c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7ca50 e4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7cb34 544 .cfa: sp 0 + .ra: x30
+STACK CFI 7cb38 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 7cb3c .cfa: x29 64 +
+STACK CFI 7cb40 x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 7cb50 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x23: .cfa -16 + ^ x24: .cfa -8 + ^
+STACK CFI 7cfe8 x19: x19 x20: x20
+STACK CFI 7cfec x21: x21 x22: x22
+STACK CFI 7cff0 x23: x23 x24: x24
+STACK CFI 7cff4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7cff8 .cfa: x29 64 + .ra: .cfa -56 + ^ x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^ x24: .cfa -8 + ^ x29: .cfa -64 + ^
+STACK CFI 7d040 x19: x19 x20: x20
+STACK CFI 7d044 x21: x21 x22: x22
+STACK CFI 7d048 x23: x23 x24: x24
+STACK CFI 7d04c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7d050 .cfa: x29 64 + .ra: .cfa -56 + ^ x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^ x24: .cfa -8 + ^ x29: .cfa -64 + ^
+STACK CFI INIT 7d078 34 .cfa: sp 0 + .ra: x30
+STACK CFI 7d080 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 7d084 .cfa: x29 16 +
+STACK CFI 7d09c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7d0a0 .cfa: x29 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 7d0a8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7d0ac 34 .cfa: sp 0 + .ra: x30
+STACK CFI 7d0b0 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 7d0b4 .cfa: x29 16 +
+STACK CFI 7d0cc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7d0d0 .cfa: x29 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI INIT 7d0e0 100 .cfa: sp 0 + .ra: x30
+STACK CFI 7d0e4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 7d0e8 .cfa: x29 48 +
+STACK CFI 7d0ec x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 7d0f8 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 7d134 x19: x19 x20: x20
+STACK CFI 7d138 x21: x21 x22: x22
+STACK CFI 7d13c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7d140 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^ x29: .cfa -48 + ^
+STACK CFI 7d14c x21: x21 x22: x22
+STACK CFI 7d150 x19: x19 x20: x20
+STACK CFI 7d154 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7d158 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^ x29: .cfa -48 + ^
+STACK CFI 7d1c4 x19: x19 x20: x20
+STACK CFI 7d1c8 x21: x21 x22: x22
+STACK CFI 7d1cc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7d1d0 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^ x29: .cfa -48 + ^
+STACK CFI INIT 7d1e0 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7d1fc 194 .cfa: sp 0 + .ra: x30
+STACK CFI 7d200 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 7d204 .cfa: x29 96 +
+STACK CFI 7d208 x19: .cfa -80 + ^ x20: .cfa -72 + ^
+STACK CFI 7d214 x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^
+STACK CFI 7d2f0 x21: x21 x22: x22
+STACK CFI 7d2f4 x19: x19 x20: x20
+STACK CFI 7d2f8 x23: x23 x24: x24
+STACK CFI 7d2fc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7d300 .cfa: x29 96 + .ra: .cfa -88 + ^ x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^ x29: .cfa -96 + ^
+STACK CFI INIT 7d390 100 .cfa: sp 0 + .ra: x30
+STACK CFI 7d394 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 7d398 .cfa: x29 48 +
+STACK CFI 7d39c x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 7d3a8 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 7d3e4 x19: x19 x20: x20
+STACK CFI 7d3e8 x21: x21 x22: x22
+STACK CFI 7d3ec .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7d3f0 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^ x29: .cfa -48 + ^
+STACK CFI 7d3fc x21: x21 x22: x22
+STACK CFI 7d400 x19: x19 x20: x20
+STACK CFI 7d404 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7d408 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^ x29: .cfa -48 + ^
+STACK CFI 7d474 x19: x19 x20: x20
+STACK CFI 7d478 x21: x21 x22: x22
+STACK CFI 7d47c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7d480 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^ x29: .cfa -48 + ^
+STACK CFI INIT 7d490 dc .cfa: sp 0 + .ra: x30
+STACK CFI 7d494 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 7d498 .cfa: x29 48 +
+STACK CFI 7d4a0 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 7d508 x19: x19 x20: x20
+STACK CFI 7d50c x21: x21
+STACK CFI 7d510 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7d514 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x29: .cfa -48 + ^
+STACK CFI 7d544 x21: x21
+STACK CFI 7d548 x19: x19 x20: x20
+STACK CFI 7d54c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7d550 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x29: .cfa -48 + ^
+STACK CFI INIT 7d56c 68 .cfa: sp 0 + .ra: x30
+STACK CFI 7d570 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 7d574 .cfa: x29 32 +
+STACK CFI 7d578 x19: .cfa -16 + ^
+STACK CFI 7d59c x19: x19
+STACK CFI 7d5a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7d5a4 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI INIT 7d5d4 2b8 .cfa: sp 0 + .ra: x30
+STACK CFI 7d5d8 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 7d5dc .cfa: x29 80 +
+STACK CFI 7d5e8 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^
+STACK CFI 7d628 x19: x19 x20: x20
+STACK CFI 7d62c x21: x21 x22: x22
+STACK CFI 7d630 x23: x23 x24: x24
+STACK CFI 7d634 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7d638 .cfa: x29 80 + .ra: .cfa -72 + ^ x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^ x29: .cfa -80 + ^
+STACK CFI 7d77c x21: x21 x22: x22
+STACK CFI 7d780 x19: x19 x20: x20
+STACK CFI 7d784 x23: x23 x24: x24
+STACK CFI 7d788 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7d78c .cfa: x29 80 + .ra: .cfa -72 + ^ x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^ x29: .cfa -80 + ^
+STACK CFI 7d7d8 x19: x19 x20: x20
+STACK CFI 7d7dc x21: x21 x22: x22
+STACK CFI 7d7e0 x23: x23 x24: x24
+STACK CFI 7d7e4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7d7e8 .cfa: x29 80 + .ra: .cfa -72 + ^ x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^ x29: .cfa -80 + ^
+STACK CFI 7d83c x21: x21 x22: x22
+STACK CFI 7d840 x19: x19 x20: x20
+STACK CFI 7d844 x23: x23 x24: x24
+STACK CFI 7d848 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7d84c .cfa: x29 80 + .ra: .cfa -72 + ^ x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^ x29: .cfa -80 + ^
+STACK CFI INIT 7d88c 2b4 .cfa: sp 0 + .ra: x30
+STACK CFI 7d890 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 7d894 .cfa: x29 96 +
+STACK CFI 7d8a4 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^ x25: .cfa -32 + ^ x26: .cfa -24 + ^
+STACK CFI 7da2c x19: x19 x20: x20
+STACK CFI 7da30 x21: x21 x22: x22
+STACK CFI 7da34 x23: x23 x24: x24
+STACK CFI 7da38 x25: x25 x26: x26
+STACK CFI 7da3c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7da40 .cfa: x29 96 + .ra: .cfa -88 + ^ x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^ x25: .cfa -32 + ^ x26: .cfa -24 + ^ x29: .cfa -96 + ^
+STACK CFI 7dac0 x19: x19 x20: x20
+STACK CFI 7dac4 x21: x21 x22: x22
+STACK CFI 7dac8 x23: x23 x24: x24
+STACK CFI 7dacc x25: x25 x26: x26
+STACK CFI 7dad0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7dad4 .cfa: x29 96 + .ra: .cfa -88 + ^ x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^ x25: .cfa -32 + ^ x26: .cfa -24 + ^ x29: .cfa -96 + ^
+STACK CFI 7daf8 x19: x19 x20: x20
+STACK CFI 7dafc x21: x21 x22: x22
+STACK CFI 7db00 x23: x23 x24: x24
+STACK CFI 7db04 x25: x25 x26: x26
+STACK CFI 7db08 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7db0c .cfa: x29 96 + .ra: .cfa -88 + ^ x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^ x25: .cfa -32 + ^ x26: .cfa -24 + ^ x29: .cfa -96 + ^
+STACK CFI INIT 7db40 164 .cfa: sp 0 + .ra: x30
+STACK CFI 7db44 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 7db4c .cfa: x29 32 +
+STACK CFI 7db50 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 7dc20 x19: x19 x20: x20
+STACK CFI 7dc24 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7dc28 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x20: .cfa -8 + ^ x29: .cfa -32 + ^
+STACK CFI INIT 7dca4 24 .cfa: sp 0 + .ra: x30
+STACK CFI 7dca8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 7dcac .cfa: x29 32 +
+STACK CFI 7dcb0 x19: .cfa -16 + ^
+STACK CFI 7dcc0 x19: x19
+STACK CFI 7dcc4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7dcc8 64 .cfa: sp 0 + .ra: x30
+STACK CFI 7dccc .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 7dcd0 .cfa: x29 32 +
+STACK CFI 7dcd4 x19: .cfa -16 + ^
+STACK CFI 7dd04 x19: x19
+STACK CFI 7dd08 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7dd0c .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI 7dd14 x19: x19
+STACK CFI 7dd18 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7dd1c .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI INIT 7dd2c 230 .cfa: sp 0 + .ra: x30
+STACK CFI 7dd30 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 7dd34 .cfa: x29 96 +
+STACK CFI 7dd38 x25: .cfa -32 + ^
+STACK CFI 7dd4c x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^
+STACK CFI 7de84 x25: x25
+STACK CFI 7de88 x19: x19 x20: x20
+STACK CFI 7de8c x21: x21 x22: x22
+STACK CFI 7de90 x23: x23 x24: x24
+STACK CFI 7de94 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7de98 .cfa: x29 96 + .ra: .cfa -88 + ^ x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^ x25: .cfa -32 + ^ x29: .cfa -96 + ^
+STACK CFI 7dec8 x25: x25
+STACK CFI 7ded0 x19: x19 x20: x20
+STACK CFI 7ded4 x21: x21 x22: x22
+STACK CFI 7ded8 x23: x23 x24: x24
+STACK CFI 7dedc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7dee0 .cfa: x29 96 + .ra: .cfa -88 + ^ x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^ x25: .cfa -32 + ^ x29: .cfa -96 + ^
+STACK CFI 7deec x25: x25
+STACK CFI 7def4 x19: x19 x20: x20
+STACK CFI 7def8 x21: x21 x22: x22
+STACK CFI 7defc x23: x23 x24: x24
+STACK CFI 7df00 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7df04 .cfa: x29 96 + .ra: .cfa -88 + ^ x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^ x25: .cfa -32 + ^ x29: .cfa -96 + ^
+STACK CFI INIT 7df5c 22c .cfa: sp 0 + .ra: x30
+STACK CFI 7df60 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 7df64 .cfa: x29 96 +
+STACK CFI 7df68 x25: .cfa -32 + ^
+STACK CFI 7df7c x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^
+STACK CFI 7e0ac x19: x19 x20: x20
+STACK CFI 7e0b0 x21: x21 x22: x22
+STACK CFI 7e0b4 x23: x23 x24: x24
+STACK CFI 7e0b8 x25: x25
+STACK CFI 7e0bc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7e0c0 .cfa: x29 96 + .ra: .cfa -88 + ^ x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^ x25: .cfa -32 + ^ x29: .cfa -96 + ^
+STACK CFI 7e0ec x25: x25
+STACK CFI 7e0f4 x19: x19 x20: x20
+STACK CFI 7e0f8 x21: x21 x22: x22
+STACK CFI 7e0fc x23: x23 x24: x24
+STACK CFI 7e100 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7e104 .cfa: x29 96 + .ra: .cfa -88 + ^ x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^ x25: .cfa -32 + ^ x29: .cfa -96 + ^
+STACK CFI 7e110 x25: x25
+STACK CFI 7e114 x19: x19 x20: x20
+STACK CFI 7e118 x21: x21 x22: x22
+STACK CFI 7e11c x23: x23 x24: x24
+STACK CFI 7e120 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7e124 .cfa: x29 96 + .ra: .cfa -88 + ^ x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^ x25: .cfa -32 + ^ x29: .cfa -96 + ^
+STACK CFI INIT 7e188 80c .cfa: sp 0 + .ra: x30
+STACK CFI 7e18c .cfa: sp 144 + .ra: .cfa -136 + ^ x29: .cfa -144 + ^
+STACK CFI 7e190 .cfa: x29 144 +
+STACK CFI 7e194 x19: .cfa -128 + ^ x20: .cfa -120 + ^
+STACK CFI 7e1a8 x21: .cfa -112 + ^ x22: .cfa -104 + ^ x23: .cfa -96 + ^ x24: .cfa -88 + ^ x25: .cfa -80 + ^ x26: .cfa -72 + ^
+STACK CFI 7e6c0 x19: x19 x20: x20
+STACK CFI 7e6c4 x21: x21 x22: x22
+STACK CFI 7e6c8 x23: x23 x24: x24
+STACK CFI 7e6cc x25: x25 x26: x26
+STACK CFI 7e6d0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7e6d4 .cfa: x29 144 + .ra: .cfa -136 + ^ x19: .cfa -128 + ^ x20: .cfa -120 + ^ x21: .cfa -112 + ^ x22: .cfa -104 + ^ x23: .cfa -96 + ^ x24: .cfa -88 + ^ x25: .cfa -80 + ^ x26: .cfa -72 + ^ x29: .cfa -144 + ^
+STACK CFI INIT 7e994 38 .cfa: sp 0 + .ra: x30
+STACK CFI 7e99c .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 7e9a0 .cfa: x29 16 +
+STACK CFI 7e9b8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7e9bc .cfa: x29 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 7e9c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7e9cc cc .cfa: sp 0 + .ra: x30
+STACK CFI 7e9d0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 7e9d4 .cfa: x29 32 +
+STACK CFI 7e9d8 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 7ea20 x19: x19 x20: x20
+STACK CFI 7ea24 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7ea28 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x20: .cfa -8 + ^ x29: .cfa -32 + ^
+STACK CFI 7ea88 x19: x19 x20: x20
+STACK CFI 7ea8c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7ea90 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x20: .cfa -8 + ^ x29: .cfa -32 + ^
+STACK CFI INIT 7ea98 10c .cfa: sp 0 + .ra: x30
+STACK CFI 7ea9c .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 7eaa0 .cfa: x29 48 +
+STACK CFI 7eaa8 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 7eac8 x19: x19 x20: x20
+STACK CFI 7eacc x21: x21 x22: x22
+STACK CFI 7ead0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7ead4 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^ x29: .cfa -48 + ^
+STACK CFI INIT 7eba4 c8 .cfa: sp 0 + .ra: x30
+STACK CFI 7eba8 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 7ebb0 .cfa: x29 48 +
+STACK CFI 7ebb8 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 7ec5c x21: x21
+STACK CFI 7ec64 x19: x19 x20: x20
+STACK CFI 7ec68 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7ec6c 3ec .cfa: sp 0 + .ra: x30
+STACK CFI 7ec70 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 7ec74 .cfa: x29 96 +
+STACK CFI 7ec80 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^
+STACK CFI 7ecb0 x19: x19 x20: x20
+STACK CFI 7ecb4 x21: x21 x22: x22
+STACK CFI 7ecb8 x23: x23
+STACK CFI 7ecbc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7ecc0 .cfa: x29 96 + .ra: .cfa -88 + ^ x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x29: .cfa -96 + ^
+STACK CFI 7edd0 x23: x23
+STACK CFI 7ede4 x19: x19 x20: x20
+STACK CFI 7ede8 x21: x21 x22: x22
+STACK CFI 7edec .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7edf0 .cfa: x29 96 + .ra: .cfa -88 + ^ x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x29: .cfa -96 + ^
+STACK CFI INIT 7f058 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7f06c 24 .cfa: sp 0 + .ra: x30
+STACK CFI 7f070 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 7f074 .cfa: x29 32 +
+STACK CFI 7f078 x19: .cfa -16 + ^
+STACK CFI 7f088 x19: x19
+STACK CFI 7f08c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7f090 18 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7f0a8 3c .cfa: sp 0 + .ra: x30
+STACK CFI 7f0ac .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 7f0b0 .cfa: x29 32 +
+STACK CFI 7f0b4 x19: .cfa -16 + ^
+STACK CFI 7f0cc x19: x19
+STACK CFI 7f0d0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7f0d4 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI INIT 7f0e4 38 .cfa: sp 0 + .ra: x30
+STACK CFI 7f0e8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 7f0ec .cfa: x29 32 +
+STACK CFI 7f0f0 x19: .cfa -16 + ^
+STACK CFI 7f104 x19: x19
+STACK CFI 7f108 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7f10c .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI INIT 7f11c 28 .cfa: sp 0 + .ra: x30
+STACK CFI 7f120 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 7f124 .cfa: x29 32 +
+STACK CFI 7f128 x19: .cfa -16 + ^
+STACK CFI 7f13c x19: x19
+STACK CFI 7f140 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7f144 2c .cfa: sp 0 + .ra: x30
+STACK CFI 7f148 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 7f14c .cfa: x29 16 +
+STACK CFI 7f15c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7f160 .cfa: x29 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI INIT 7f170 60 .cfa: sp 0 + .ra: x30
+STACK CFI 7f174 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 7f178 .cfa: x29 32 +
+STACK CFI 7f184 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 7f1b0 x19: x19 x20: x20
+STACK CFI 7f1b4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7f1b8 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x20: .cfa -8 + ^ x29: .cfa -32 + ^
+STACK CFI INIT 7f1d0 2c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7f1fc 38 .cfa: sp 0 + .ra: x30
+STACK CFI 7f200 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 7f204 .cfa: x29 16 +
+STACK CFI 7f22c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7f230 .cfa: x29 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI INIT 7f234 9c .cfa: sp 0 + .ra: x30
+STACK CFI 7f238 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 7f23c .cfa: x29 48 +
+STACK CFI 7f240 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 7f24c x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 7f298 x19: x19 x20: x20
+STACK CFI 7f29c x21: x21 x22: x22
+STACK CFI 7f2a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7f2a4 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^ x29: .cfa -48 + ^
+STACK CFI INIT 7f2d0 1d0 .cfa: sp 0 + .ra: x30
+STACK CFI 7f2d4 .cfa: sp 208 + .ra: .cfa -200 + ^ x29: .cfa -208 + ^
+STACK CFI 7f2d8 .cfa: x29 208 +
+STACK CFI 7f2ec x19: .cfa -192 + ^ x20: .cfa -184 + ^ x21: .cfa -176 + ^ x22: .cfa -168 + ^ x23: .cfa -160 + ^
+STACK CFI 7f394 x23: x23
+STACK CFI 7f398 x19: x19 x20: x20
+STACK CFI 7f39c x21: x21 x22: x22
+STACK CFI 7f3a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7f3a4 .cfa: x29 208 + .ra: .cfa -200 + ^ x19: .cfa -192 + ^ x20: .cfa -184 + ^ x21: .cfa -176 + ^ x22: .cfa -168 + ^ x23: .cfa -160 + ^ x29: .cfa -208 + ^
+STACK CFI INIT 7f4a0 1c .cfa: sp 0 + .ra: x30
+STACK CFI 7f4a4 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 7f4a8 .cfa: x29 16 +
+STACK CFI 7f4b8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7f4bc 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7f4c4 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7f4cc 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7f4dc 30 .cfa: sp 0 + .ra: x30
+STACK CFI 7f4e0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 7f4e8 .cfa: x29 32 +
+STACK CFI 7f4ec x19: .cfa -16 + ^
+STACK CFI 7f504 x19: x19
+STACK CFI 7f508 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7f50c 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7f51c 30 .cfa: sp 0 + .ra: x30
+STACK CFI 7f520 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 7f528 .cfa: x29 32 +
+STACK CFI 7f52c x19: .cfa -16 + ^
+STACK CFI 7f544 x19: x19
+STACK CFI 7f548 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7f54c 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7f55c 30 .cfa: sp 0 + .ra: x30
+STACK CFI 7f560 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 7f568 .cfa: x29 32 +
+STACK CFI 7f56c x19: .cfa -16 + ^
+STACK CFI 7f584 x19: x19
+STACK CFI 7f588 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7f58c 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7f59c 30 .cfa: sp 0 + .ra: x30
+STACK CFI 7f5a0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 7f5a8 .cfa: x29 32 +
+STACK CFI 7f5ac x19: .cfa -16 + ^
+STACK CFI 7f5c4 x19: x19
+STACK CFI 7f5c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7f5cc 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7f5dc 30 .cfa: sp 0 + .ra: x30
+STACK CFI 7f5e0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 7f5e8 .cfa: x29 32 +
+STACK CFI 7f5ec x19: .cfa -16 + ^
+STACK CFI 7f604 x19: x19
+STACK CFI 7f608 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7f60c 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7f61c 30 .cfa: sp 0 + .ra: x30
+STACK CFI 7f620 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 7f628 .cfa: x29 32 +
+STACK CFI 7f62c x19: .cfa -16 + ^
+STACK CFI 7f644 x19: x19
+STACK CFI 7f648 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7f64c 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7f65c 30 .cfa: sp 0 + .ra: x30
+STACK CFI 7f660 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 7f668 .cfa: x29 32 +
+STACK CFI 7f66c x19: .cfa -16 + ^
+STACK CFI 7f684 x19: x19
+STACK CFI 7f688 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7f68c 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7f69c 30 .cfa: sp 0 + .ra: x30
+STACK CFI 7f6a0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 7f6a8 .cfa: x29 32 +
+STACK CFI 7f6ac x19: .cfa -16 + ^
+STACK CFI 7f6c4 x19: x19
+STACK CFI 7f6c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7f6cc 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7f6d4 18 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 7f6ec 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 20854 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 20870 14 .cfa: sp 0 + .ra: x30
+STACK CFI 20874 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 2087c .cfa: x29 16 +
+STACK CFI INIT 20884 14 .cfa: sp 0 + .ra: x30
+STACK CFI 20888 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 20890 .cfa: x29 16 +
+STACK CFI INIT 7f708 1c .cfa: sp 0 + .ra: x30
+STACK CFI 7f70c .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 7f710 .cfa: x29 16 +
+STACK CFI 7f720 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7f724 110 .cfa: sp 0 + .ra: x30
+STACK CFI 7f728 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 7f72c .cfa: x29 48 +
+STACK CFI 7f730 x19: .cfa -32 + ^
+STACK CFI 7f778 x19: x19
+STACK CFI 7f77c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7f780 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 7f7c4 x19: x19
+STACK CFI 7f7c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7f7cc .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 7f81c x19: x19
+STACK CFI 7f820 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7f824 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI INIT 7f834 110 .cfa: sp 0 + .ra: x30
+STACK CFI 7f838 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 7f83c .cfa: x29 48 +
+STACK CFI 7f840 x19: .cfa -32 + ^
+STACK CFI 7f888 x19: x19
+STACK CFI 7f88c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7f890 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 7f8d4 x19: x19
+STACK CFI 7f8d8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7f8dc .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 7f92c x19: x19
+STACK CFI 7f930 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7f934 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI INIT 7f944 1c .cfa: sp 0 + .ra: x30
+STACK CFI 7f948 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 7f94c .cfa: x29 16 +
+STACK CFI 7f95c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7f960 98 .cfa: sp 0 + .ra: x30
+STACK CFI 7f964 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 7f968 .cfa: x29 32 +
+STACK CFI 7f96c x19: .cfa -16 + ^
+STACK CFI 7f9a4 x19: x19
+STACK CFI 7f9a8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7f9ac .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI 7f9e0 x19: x19
+STACK CFI 7f9e4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7f9e8 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI INIT 7f9f8 98 .cfa: sp 0 + .ra: x30
+STACK CFI 7f9fc .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 7fa00 .cfa: x29 32 +
+STACK CFI 7fa04 x19: .cfa -16 + ^
+STACK CFI 7fa38 x19: x19
+STACK CFI 7fa3c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7fa40 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI 7fa74 x19: x19
+STACK CFI 7fa78 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7fa7c .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI INIT 7fa90 c4 .cfa: sp 0 + .ra: x30
+STACK CFI 7fa94 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 7fa98 .cfa: x29 64 +
+STACK CFI 7fa9c x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 7faac x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 7fb44 x23: x23
+STACK CFI 7fb48 x19: x19 x20: x20
+STACK CFI 7fb4c x21: x21 x22: x22
+STACK CFI 7fb50 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7fb54 bc .cfa: sp 0 + .ra: x30
+STACK CFI 7fb58 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 7fb5c .cfa: x29 64 +
+STACK CFI 7fb60 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 7fb70 x21: .cfa -32 + ^
+STACK CFI 7fbfc x21: x21
+STACK CFI 7fc08 x19: x19 x20: x20
+STACK CFI 7fc0c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7fc10 bc .cfa: sp 0 + .ra: x30
+STACK CFI 7fc14 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 7fc18 .cfa: x29 64 +
+STACK CFI 7fc1c x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 7fc2c x21: .cfa -32 + ^
+STACK CFI 7fcb8 x21: x21
+STACK CFI 7fcc4 x19: x19 x20: x20
+STACK CFI 7fcc8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 7fccc 100 .cfa: sp 0 + .ra: x30
+STACK CFI 7fcd0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 7fcd4 .cfa: x29 64 +
+STACK CFI 7fcd8 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 7fce8 x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 7fd2c x23: x23
+STACK CFI 7fd34 x19: x19 x20: x20
+STACK CFI 7fd38 x21: x21 x22: x22
+STACK CFI 7fd3c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7fd40 .cfa: x29 64 + .ra: .cfa -56 + ^ x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^ x29: .cfa -64 + ^
+STACK CFI INIT 7fdcc f4 .cfa: sp 0 + .ra: x30
+STACK CFI 7fdd0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 7fdd4 .cfa: x29 64 +
+STACK CFI 7fde4 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 7fe2c x23: x23
+STACK CFI 7fe34 x19: x19 x20: x20
+STACK CFI 7fe38 x21: x21 x22: x22
+STACK CFI 7fe3c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 7fe40 .cfa: x29 64 + .ra: .cfa -56 + ^ x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^ x29: .cfa -64 + ^
+STACK CFI INIT 7fec0 1fc .cfa: sp 0 + .ra: x30
+STACK CFI 7fec4 .cfa: sp 576 +
+STACK CFI 7fec8 .cfa: sp 672 + .ra: .cfa -664 + ^ x29: .cfa -672 + ^
+STACK CFI 7fecc .cfa: x29 672 +
+STACK CFI 7fed0 x21: .cfa -640 + ^ x22: .cfa -632 + ^
+STACK CFI 7fee0 x19: .cfa -656 + ^ x20: .cfa -648 + ^ x25: .cfa -608 + ^ x26: .cfa -600 + ^
+STACK CFI 7fef8 x23: .cfa -624 + ^ x24: .cfa -616 + ^ x27: .cfa -592 + ^ x28: .cfa -584 + ^
+STACK CFI 80048 x19: x19 x20: x20
+STACK CFI 8004c x21: x21 x22: x22
+STACK CFI 80050 x23: x23 x24: x24
+STACK CFI 80054 x25: x25 x26: x26
+STACK CFI 80058 x27: x27 x28: x28
+STACK CFI 8005c .cfa: sp 576 + .ra: .ra x29: x29
+STACK CFI 80060 .cfa: sp 480 +
+STACK CFI 80064 .cfa: x29 672 + .ra: .cfa -664 + ^ x19: .cfa -656 + ^ x20: .cfa -648 + ^ x21: .cfa -640 + ^ x22: .cfa -632 + ^ x23: .cfa -624 + ^ x24: .cfa -616 + ^ x25: .cfa -608 + ^ x26: .cfa -600 + ^ x27: .cfa -592 + ^ x28: .cfa -584 + ^ x29: .cfa -672 + ^
+STACK CFI INIT 800bc 49c .cfa: sp 0 + .ra: x30
+STACK CFI 800c0 .cfa: sp 112 + .ra: .cfa -104 + ^ x29: .cfa -112 + ^
+STACK CFI 800c4 .cfa: x29 112 +
+STACK CFI 800cc x19: .cfa -96 + ^ x20: .cfa -88 + ^ x21: .cfa -80 + ^ x22: .cfa -72 + ^
+STACK CFI 800e8 x23: .cfa -64 + ^ x24: .cfa -56 + ^ x25: .cfa -48 + ^ x26: .cfa -40 + ^ x27: .cfa -32 + ^ x28: .cfa -24 + ^
+STACK CFI 801d8 x19: x19 x20: x20
+STACK CFI 801dc x21: x21 x22: x22
+STACK CFI 801e0 x23: x23 x24: x24
+STACK CFI 801e4 x25: x25 x26: x26
+STACK CFI 801e8 x27: x27 x28: x28
+STACK CFI 801ec .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 801f0 .cfa: x29 112 + .ra: .cfa -104 + ^ x19: .cfa -96 + ^ x20: .cfa -88 + ^ x21: .cfa -80 + ^ x22: .cfa -72 + ^ x23: .cfa -64 + ^ x24: .cfa -56 + ^ x25: .cfa -48 + ^ x26: .cfa -40 + ^ x27: .cfa -32 + ^ x28: .cfa -24 + ^ x29: .cfa -112 + ^
+STACK CFI INIT 80558 68 .cfa: sp 0 + .ra: x30
+STACK CFI 8055c .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 80560 .cfa: x29 48 +
+STACK CFI 80564 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 8056c x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 805b4 x19: x19 x20: x20
+STACK CFI 805b8 x21: x21 x22: x22
+STACK CFI 805bc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 805c0 a0 .cfa: sp 0 + .ra: x30
+STACK CFI 805c4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 805c8 .cfa: x29 48 +
+STACK CFI 805cc x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 805d4 x21: .cfa -16 + ^
+STACK CFI 805f0 x21: x21
+STACK CFI 805f4 x19: x19 x20: x20
+STACK CFI 805f8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 805fc .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x29: .cfa -48 + ^
+STACK CFI 8063c x21: x21
+STACK CFI 80644 x19: x19 x20: x20
+STACK CFI 80648 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 8064c .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x29: .cfa -48 + ^
+STACK CFI INIT 80660 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 80664 5c .cfa: sp 0 + .ra: x30
+STACK CFI 80668 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8066c .cfa: x29 48 +
+STACK CFI 80674 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 806a4 x19: x19 x20: x20
+STACK CFI 806a8 x21: x21
+STACK CFI 806ac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 806b0 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x29: .cfa -48 + ^
+STACK CFI 806b4 x19: x19 x20: x20
+STACK CFI 806b8 x21: x21
+STACK CFI 806bc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 806c0 120 .cfa: sp 0 + .ra: x30
+STACK CFI 806c4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 806c8 .cfa: x29 48 +
+STACK CFI 806cc x21: .cfa -16 + ^
+STACK CFI 806dc x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 80754 x21: x21
+STACK CFI 80758 x19: x19 x20: x20
+STACK CFI 8075c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 80760 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x29: .cfa -48 + ^
+STACK CFI 8076c x21: x21
+STACK CFI 80770 x19: x19 x20: x20
+STACK CFI 80774 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 80778 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x29: .cfa -48 + ^
+STACK CFI INIT 807e0 34 .cfa: sp 0 + .ra: x30
+STACK CFI 807e4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 807ec .cfa: x29 32 +
+STACK CFI 807f0 x19: .cfa -16 + ^
+STACK CFI INIT 80814 40 .cfa: sp 0 + .ra: x30
+STACK CFI 80818 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8081c .cfa: x29 32 +
+STACK CFI 80820 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 8084c x19: x19 x20: x20
+STACK CFI 80850 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 80854 84 .cfa: sp 0 + .ra: x30
+STACK CFI 80858 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8085c .cfa: x29 48 +
+STACK CFI 80860 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 80868 x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 808c4 x19: x19 x20: x20
+STACK CFI 808c8 x21: x21 x22: x22
+STACK CFI 808cc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 808d0 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^ x29: .cfa -48 + ^
+STACK CFI INIT 808d8 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 808e4 158 .cfa: sp 0 + .ra: x30
+STACK CFI 808e8 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 808ec .cfa: x29 80 +
+STACK CFI 808f4 x21: .cfa -48 + ^ x22: .cfa -40 + ^
+STACK CFI 80904 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x23: .cfa -32 + ^
+STACK CFI 809a0 x19: x19 x20: x20
+STACK CFI 809a4 x21: x21 x22: x22
+STACK CFI 809a8 x23: x23
+STACK CFI 809ac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 809b0 .cfa: x29 80 + .ra: .cfa -72 + ^ x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x29: .cfa -80 + ^
+STACK CFI INIT 80a3c 1b8 .cfa: sp 0 + .ra: x30
+STACK CFI 80a40 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 80a48 .cfa: x29 32 +
+STACK CFI 80a4c x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 80b10 x19: x19 x20: x20
+STACK CFI 80b14 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 80b18 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x20: .cfa -8 + ^ x29: .cfa -32 + ^
+STACK CFI 80b1c x19: x19 x20: x20
+STACK CFI 80b20 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 80b24 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x20: .cfa -8 + ^ x29: .cfa -32 + ^
+STACK CFI 80b48 x19: x19 x20: x20
+STACK CFI 80b4c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 80b50 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x20: .cfa -8 + ^ x29: .cfa -32 + ^
+STACK CFI INIT 80bf4 18c .cfa: sp 0 + .ra: x30
+STACK CFI 80bf8 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 80bfc .cfa: x29 48 +
+STACK CFI 80c04 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 80cec x19: x19 x20: x20
+STACK CFI 80cf0 x21: x21 x22: x22
+STACK CFI 80cf4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 80cf8 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^ x29: .cfa -48 + ^
+STACK CFI INIT 80d80 44 .cfa: sp 0 + .ra: x30
+STACK CFI 80d84 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 80d8c .cfa: x29 32 +
+STACK CFI 80d90 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 80da8 x19: x19 x20: x20
+STACK CFI 80dac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 80db0 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x20: .cfa -8 + ^ x29: .cfa -32 + ^
+STACK CFI INIT 80dc4 4c .cfa: sp 0 + .ra: x30
+STACK CFI 80dc8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 80dd0 .cfa: x29 32 +
+STACK CFI 80dd4 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 80df4 x19: x19 x20: x20
+STACK CFI 80df8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 80dfc .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x20: .cfa -8 + ^ x29: .cfa -32 + ^
+STACK CFI INIT 80e10 44 .cfa: sp 0 + .ra: x30
+STACK CFI 80e14 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 80e1c .cfa: x29 32 +
+STACK CFI 80e20 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 80e38 x19: x19 x20: x20
+STACK CFI 80e3c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 80e40 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x20: .cfa -8 + ^ x29: .cfa -32 + ^
+STACK CFI INIT 80e54 4c .cfa: sp 0 + .ra: x30
+STACK CFI 80e58 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 80e60 .cfa: x29 32 +
+STACK CFI 80e64 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 80e84 x19: x19 x20: x20
+STACK CFI 80e88 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 80e8c .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x20: .cfa -8 + ^ x29: .cfa -32 + ^
+STACK CFI INIT 80ea0 1a0 .cfa: sp 0 + .ra: x30
+STACK CFI 80ea4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 80ea8 .cfa: x29 48 +
+STACK CFI 80eac x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 80eb4 x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 80f9c x19: x19 x20: x20
+STACK CFI 80fa0 x21: x21 x22: x22
+STACK CFI 80fa4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 80fa8 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^ x29: .cfa -48 + ^
+STACK CFI INIT 81040 44 .cfa: sp 0 + .ra: x30
+STACK CFI 81044 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 8104c .cfa: x29 32 +
+STACK CFI 81050 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 81068 x19: x19 x20: x20
+STACK CFI 8106c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 81070 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x20: .cfa -8 + ^ x29: .cfa -32 + ^
+STACK CFI INIT 81084 4c .cfa: sp 0 + .ra: x30
+STACK CFI 81088 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 81090 .cfa: x29 32 +
+STACK CFI 81094 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 810b4 x19: x19 x20: x20
+STACK CFI 810b8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 810bc .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x20: .cfa -8 + ^ x29: .cfa -32 + ^
+STACK CFI INIT 810d0 44 .cfa: sp 0 + .ra: x30
+STACK CFI 810d4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 810dc .cfa: x29 32 +
+STACK CFI 810e0 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 810f8 x19: x19 x20: x20
+STACK CFI 810fc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 81100 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x20: .cfa -8 + ^ x29: .cfa -32 + ^
+STACK CFI INIT 81114 4c .cfa: sp 0 + .ra: x30
+STACK CFI 81118 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 81120 .cfa: x29 32 +
+STACK CFI 81124 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 81144 x19: x19 x20: x20
+STACK CFI 81148 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 8114c .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x20: .cfa -8 + ^ x29: .cfa -32 + ^
+STACK CFI INIT 81160 e0 .cfa: sp 0 + .ra: x30
+STACK CFI 81164 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 81168 .cfa: x29 80 +
+STACK CFI 8116c x19: .cfa -64 + ^ x20: .cfa -56 + ^
+STACK CFI 81178 x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI 811d8 x19: x19 x20: x20
+STACK CFI 811dc x21: x21 x22: x22
+STACK CFI 811e0 x23: x23
+STACK CFI 811e4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 811e8 .cfa: x29 80 + .ra: .cfa -72 + ^ x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x29: .cfa -80 + ^
+STACK CFI INIT 81240 810 .cfa: sp 0 + .ra: x30
+STACK CFI 81244 .cfa: sp 320 + .ra: .cfa -312 + ^ x29: .cfa -320 + ^
+STACK CFI 8124c .cfa: x29 320 +
+STACK CFI 81250 x21: .cfa -288 + ^ x22: .cfa -280 + ^
+STACK CFI 81264 x19: .cfa -304 + ^ x20: .cfa -296 + ^ x23: .cfa -272 + ^
+STACK CFI 81814 x21: x21 x22: x22
+STACK CFI 81818 x23: x23
+STACK CFI 81820 x19: x19 x20: x20
+STACK CFI 81824 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 81828 .cfa: x29 320 + .ra: .cfa -312 + ^ x19: .cfa -304 + ^ x20: .cfa -296 + ^ x21: .cfa -288 + ^ x22: .cfa -280 + ^ x23: .cfa -272 + ^ x29: .cfa -320 + ^
+STACK CFI 818c4 x23: x23
+STACK CFI 818cc x21: x21 x22: x22
+STACK CFI 818d4 x19: x19 x20: x20
+STACK CFI 818d8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 818dc .cfa: x29 320 + .ra: .cfa -312 + ^ x19: .cfa -304 + ^ x20: .cfa -296 + ^ x21: .cfa -288 + ^ x22: .cfa -280 + ^ x23: .cfa -272 + ^ x29: .cfa -320 + ^
+STACK CFI INIT 81a50 94 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 81ae4 60 .cfa: sp 0 + .ra: x30
+STACK CFI 81ae8 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 81aec .cfa: x29 48 +
+STACK CFI 81af4 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI 81b28 x19: x19 x20: x20
+STACK CFI 81b2c x21: x21
+STACK CFI 81b30 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 81b34 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x29: .cfa -48 + ^
+STACK CFI 81b38 x19: x19 x20: x20
+STACK CFI 81b3c x21: x21
+STACK CFI 81b40 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 81b44 8c .cfa: sp 0 + .ra: x30
+STACK CFI 81b48 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 81b4c .cfa: x29 32 +
+STACK CFI 81b50 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 81b68 x19: x19 x20: x20
+STACK CFI 81b6c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 81b74 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x20: .cfa -8 + ^ x29: .cfa -32 + ^
+STACK CFI 81bb0 x19: x19 x20: x20
+STACK CFI 81bb4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 81bbc .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x20: .cfa -8 + ^ x29: .cfa -32 + ^
+STACK CFI INIT 81bd0 214 .cfa: sp 0 + .ra: x30
+STACK CFI 81bd4 .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 81bd8 .cfa: x29 160 +
+STACK CFI 81be0 x19: .cfa -144 + ^ x20: .cfa -136 + ^
+STACK CFI 81bf0 x21: .cfa -128 + ^ x22: .cfa -120 + ^ x23: .cfa -112 + ^ x24: .cfa -104 + ^
+STACK CFI 81bfc x25: .cfa -96 + ^ x26: .cfa -88 + ^ x27: .cfa -80 + ^
+STACK CFI 81c28 x27: x27
+STACK CFI 81c2c x19: x19 x20: x20
+STACK CFI 81c30 x21: x21 x22: x22
+STACK CFI 81c34 x23: x23 x24: x24
+STACK CFI 81c38 x25: x25 x26: x26
+STACK CFI 81c3c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 81c40 .cfa: x29 160 + .ra: .cfa -152 + ^ x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^ x23: .cfa -112 + ^ x24: .cfa -104 + ^ x25: .cfa -96 + ^ x26: .cfa -88 + ^ x27: .cfa -80 + ^ x29: .cfa -160 + ^
+STACK CFI 81d70 x27: x27
+STACK CFI 81d78 x19: x19 x20: x20
+STACK CFI 81d7c x21: x21 x22: x22
+STACK CFI 81d80 x23: x23 x24: x24
+STACK CFI 81d84 x25: x25 x26: x26
+STACK CFI 81d88 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 81d8c .cfa: x29 160 + .ra: .cfa -152 + ^ x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^ x23: .cfa -112 + ^ x24: .cfa -104 + ^ x25: .cfa -96 + ^ x26: .cfa -88 + ^ x27: .cfa -80 + ^ x29: .cfa -160 + ^
+STACK CFI INIT 81e30 214 .cfa: sp 0 + .ra: x30
+STACK CFI 81e34 .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 81e38 .cfa: x29 160 +
+STACK CFI 81e40 x19: .cfa -144 + ^ x20: .cfa -136 + ^
+STACK CFI 81e50 x21: .cfa -128 + ^ x22: .cfa -120 + ^ x23: .cfa -112 + ^ x24: .cfa -104 + ^
+STACK CFI 81e5c x25: .cfa -96 + ^ x26: .cfa -88 + ^ x27: .cfa -80 + ^
+STACK CFI 81e88 x27: x27
+STACK CFI 81e8c x19: x19 x20: x20
+STACK CFI 81e90 x21: x21 x22: x22
+STACK CFI 81e94 x23: x23 x24: x24
+STACK CFI 81e98 x25: x25 x26: x26
+STACK CFI 81e9c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 81ea0 .cfa: x29 160 + .ra: .cfa -152 + ^ x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^ x23: .cfa -112 + ^ x24: .cfa -104 + ^ x25: .cfa -96 + ^ x26: .cfa -88 + ^ x27: .cfa -80 + ^ x29: .cfa -160 + ^
+STACK CFI 81fd0 x27: x27
+STACK CFI 81fd8 x19: x19 x20: x20
+STACK CFI 81fdc x21: x21 x22: x22
+STACK CFI 81fe0 x23: x23 x24: x24
+STACK CFI 81fe4 x25: x25 x26: x26
+STACK CFI 81fe8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 81fec .cfa: x29 160 + .ra: .cfa -152 + ^ x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^ x23: .cfa -112 + ^ x24: .cfa -104 + ^ x25: .cfa -96 + ^ x26: .cfa -88 + ^ x27: .cfa -80 + ^ x29: .cfa -160 + ^
+STACK CFI INIT 82090 2c0 .cfa: sp 0 + .ra: x30
+STACK CFI 82094 .cfa: sp 144 + .ra: .cfa -136 + ^ x29: .cfa -144 + ^
+STACK CFI 82098 .cfa: x29 144 +
+STACK CFI 820a4 x19: .cfa -128 + ^ x20: .cfa -120 + ^ x21: .cfa -112 + ^ x22: .cfa -104 + ^ x25: .cfa -80 + ^ x26: .cfa -72 + ^
+STACK CFI 820c0 x23: .cfa -96 + ^ x24: .cfa -88 + ^ x27: .cfa -64 + ^
+STACK CFI 8216c x27: x27
+STACK CFI 82170 x19: x19 x20: x20
+STACK CFI 82174 x21: x21 x22: x22
+STACK CFI 82178 x23: x23 x24: x24
+STACK CFI 8217c x25: x25 x26: x26
+STACK CFI 82180 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 82184 .cfa: x29 144 + .ra: .cfa -136 + ^ x19: .cfa -128 + ^ x20: .cfa -120 + ^ x21: .cfa -112 + ^ x22: .cfa -104 + ^ x23: .cfa -96 + ^ x24: .cfa -88 + ^ x25: .cfa -80 + ^ x26: .cfa -72 + ^ x27: .cfa -64 + ^ x29: .cfa -144 + ^
+STACK CFI INIT 82350 290 .cfa: sp 0 + .ra: x30
+STACK CFI 82354 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 82358 .cfa: x29 64 +
+STACK CFI 8239c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 823a0 .cfa: x29 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 82460 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 82464 .cfa: x29 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI INIT 825e0 2bc .cfa: sp 0 + .ra: x30
+STACK CFI 825e4 .cfa: sp 144 + .ra: .cfa -136 + ^ x29: .cfa -144 + ^
+STACK CFI 825e8 .cfa: x29 144 +
+STACK CFI 825f4 x19: .cfa -128 + ^ x20: .cfa -120 + ^ x21: .cfa -112 + ^ x22: .cfa -104 + ^ x27: .cfa -64 + ^
+STACK CFI 82610 x23: .cfa -96 + ^ x24: .cfa -88 + ^ x25: .cfa -80 + ^ x26: .cfa -72 + ^
+STACK CFI 826bc x27: x27
+STACK CFI 826c0 x19: x19 x20: x20
+STACK CFI 826c4 x21: x21 x22: x22
+STACK CFI 826c8 x23: x23 x24: x24
+STACK CFI 826cc x25: x25 x26: x26
+STACK CFI 826d0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 826d4 .cfa: x29 144 + .ra: .cfa -136 + ^ x19: .cfa -128 + ^ x20: .cfa -120 + ^ x21: .cfa -112 + ^ x22: .cfa -104 + ^ x23: .cfa -96 + ^ x24: .cfa -88 + ^ x25: .cfa -80 + ^ x26: .cfa -72 + ^ x27: .cfa -64 + ^ x29: .cfa -144 + ^
+STACK CFI INIT 8289c 274 .cfa: sp 0 + .ra: x30
+STACK CFI 828a0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 828a4 .cfa: x29 64 +
+STACK CFI 828e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 828ec .cfa: x29 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 829a4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 829a8 .cfa: x29 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI INIT 82b10 3e0 .cfa: sp 0 + .ra: x30
+STACK CFI 82b14 .cfa: sp 224 + .ra: .cfa -216 + ^ x29: .cfa -224 + ^
+STACK CFI 82b18 .cfa: x29 224 +
+STACK CFI 82b1c x23: .cfa -176 + ^ x24: .cfa -168 + ^
+STACK CFI 82b2c x19: .cfa -208 + ^ x20: .cfa -200 + ^ x21: .cfa -192 + ^ x22: .cfa -184 + ^
+STACK CFI 82b40 x25: .cfa -160 + ^ x26: .cfa -152 + ^
+STACK CFI 82cdc x19: x19 x20: x20
+STACK CFI 82ce0 x21: x21 x22: x22
+STACK CFI 82ce4 x23: x23 x24: x24
+STACK CFI 82ce8 x25: x25 x26: x26
+STACK CFI 82cec .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 82cf0 .cfa: x29 224 + .ra: .cfa -216 + ^ x19: .cfa -208 + ^ x20: .cfa -200 + ^ x21: .cfa -192 + ^ x22: .cfa -184 + ^ x23: .cfa -176 + ^ x24: .cfa -168 + ^ x25: .cfa -160 + ^ x26: .cfa -152 + ^ x29: .cfa -224 + ^
+STACK CFI 82d98 x19: x19 x20: x20
+STACK CFI 82d9c x21: x21 x22: x22
+STACK CFI 82da0 x23: x23 x24: x24
+STACK CFI 82da4 x25: x25 x26: x26
+STACK CFI 82da8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 82dac .cfa: x29 224 + .ra: .cfa -216 + ^ x19: .cfa -208 + ^ x20: .cfa -200 + ^ x21: .cfa -192 + ^ x22: .cfa -184 + ^ x23: .cfa -176 + ^ x24: .cfa -168 + ^ x25: .cfa -160 + ^ x26: .cfa -152 + ^ x29: .cfa -224 + ^
+STACK CFI INIT 82ef0 4c .cfa: sp 0 + .ra: x30
+STACK CFI 82ef4 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 82efc .cfa: x29 16 +
+STACK CFI 82f20 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 82f24 .cfa: x29 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 82f38 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 82f3c 80 .cfa: sp 0 + .ra: x30
+STACK CFI 82f40 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 82f44 .cfa: x29 32 +
+STACK CFI 82f48 x19: .cfa -16 + ^
+STACK CFI 82f8c x19: x19
+STACK CFI 82f90 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 82f94 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI INIT 82fbc 3d8 .cfa: sp 0 + .ra: x30
+STACK CFI 82fc0 .cfa: sp 128 + .ra: .cfa -120 + ^ x29: .cfa -128 + ^
+STACK CFI 82fc4 .cfa: x29 128 +
+STACK CFI 82fc8 x23: .cfa -80 + ^ x24: .cfa -72 + ^
+STACK CFI 82fd8 x19: .cfa -112 + ^ x20: .cfa -104 + ^ x21: .cfa -96 + ^ x22: .cfa -88 + ^
+STACK CFI 82fec x25: .cfa -64 + ^ x26: .cfa -56 + ^
+STACK CFI 8315c x19: x19 x20: x20
+STACK CFI 83160 x21: x21 x22: x22
+STACK CFI 83164 x23: x23 x24: x24
+STACK CFI 83168 x25: x25 x26: x26
+STACK CFI 8316c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 83170 .cfa: x29 128 + .ra: .cfa -120 + ^ x19: .cfa -112 + ^ x20: .cfa -104 + ^ x21: .cfa -96 + ^ x22: .cfa -88 + ^ x23: .cfa -80 + ^ x24: .cfa -72 + ^ x25: .cfa -64 + ^ x26: .cfa -56 + ^ x29: .cfa -128 + ^
+STACK CFI 83240 x19: x19 x20: x20
+STACK CFI 83244 x21: x21 x22: x22
+STACK CFI 83248 x23: x23 x24: x24
+STACK CFI 8324c x25: x25 x26: x26
+STACK CFI 83250 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 83254 .cfa: x29 128 + .ra: .cfa -120 + ^ x19: .cfa -112 + ^ x20: .cfa -104 + ^ x21: .cfa -96 + ^ x22: .cfa -88 + ^ x23: .cfa -80 + ^ x24: .cfa -72 + ^ x25: .cfa -64 + ^ x26: .cfa -56 + ^ x29: .cfa -128 + ^
+STACK CFI INIT 83394 50 .cfa: sp 0 + .ra: x30
+STACK CFI 83398 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 833a4 .cfa: x29 16 +
+STACK CFI 833c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 833cc .cfa: x29 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 833e0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 833e4 8c .cfa: sp 0 + .ra: x30
+STACK CFI 833e8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 833f0 .cfa: x29 32 +
+STACK CFI 833f8 x19: .cfa -16 + ^
+STACK CFI 8342c x19: x19
+STACK CFI 83430 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 83434 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI 83468 x19: x19
+STACK CFI 8346c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 83470 c6c .cfa: sp 0 + .ra: x30
+STACK CFI 83474 .cfa: sp 848 +
+STACK CFI 8347c .cfa: sp 1008 + .ra: .cfa -1000 + ^ x29: .cfa -1008 + ^
+STACK CFI 83480 .cfa: x29 1008 +
+STACK CFI 83490 v10: .cfa -896 + ^ v11: .cfa -888 + ^ v14: .cfa -864 + ^ v15: .cfa -856 + ^ x19: .cfa -992 + ^ x20: .cfa -984 + ^
+STACK CFI 834bc v12: .cfa -880 + ^ v13: .cfa -872 + ^ v8: .cfa -912 + ^ v9: .cfa -904 + ^ x21: .cfa -976 + ^ x22: .cfa -968 + ^ x23: .cfa -960 + ^ x24: .cfa -952 + ^ x25: .cfa -944 + ^ x26: .cfa -936 + ^ x27: .cfa -928 + ^ x28: .cfa -920 + ^
+STACK CFI 836e4 x19: x19 x20: x20
+STACK CFI 836e8 v8: v8 v9: v9
+STACK CFI 836ec x21: x21 x22: x22
+STACK CFI 836f0 v10: v10 v11: v11
+STACK CFI 836f4 x23: x23 x24: x24
+STACK CFI 836f8 v12: v12 v13: v13
+STACK CFI 836fc x25: x25 x26: x26
+STACK CFI 83700 v14: v14 v15: v15
+STACK CFI 83704 x27: x27 x28: x28
+STACK CFI 83708 .cfa: sp 848 + .ra: .ra x29: x29
+STACK CFI 8370c .cfa: sp 688 +
+STACK CFI 83710 .cfa: x29 1008 + .ra: .cfa -1000 + ^ v10: .cfa -896 + ^ v11: .cfa -888 + ^ v12: .cfa -880 + ^ v13: .cfa -872 + ^ v14: .cfa -864 + ^ v15: .cfa -856 + ^ v8: .cfa -912 + ^ v9: .cfa -904 + ^ x19: .cfa -992 + ^ x20: .cfa -984 + ^ x21: .cfa -976 + ^ x22: .cfa -968 + ^ x23: .cfa -960 + ^ x24: .cfa -952 + ^ x25: .cfa -944 + ^ x26: .cfa -936 + ^ x27: .cfa -928 + ^ x28: .cfa -920 + ^ x29: .cfa -1008 + ^
+STACK CFI INIT 840dc 34 .cfa: sp 0 + .ra: x30
+STACK CFI 840e0 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 840ec .cfa: x29 16 +
+STACK CFI 8410c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 84110 c6c .cfa: sp 0 + .ra: x30
+STACK CFI 84114 .cfa: sp 848 +
+STACK CFI 8411c .cfa: sp 1008 + .ra: .cfa -1000 + ^ x29: .cfa -1008 + ^
+STACK CFI 84120 .cfa: x29 1008 +
+STACK CFI 84130 v10: .cfa -896 + ^ v11: .cfa -888 + ^ v14: .cfa -864 + ^ v15: .cfa -856 + ^ x19: .cfa -992 + ^ x20: .cfa -984 + ^
+STACK CFI 8415c v12: .cfa -880 + ^ v13: .cfa -872 + ^ v8: .cfa -912 + ^ v9: .cfa -904 + ^ x21: .cfa -976 + ^ x22: .cfa -968 + ^ x23: .cfa -960 + ^ x24: .cfa -952 + ^ x25: .cfa -944 + ^ x26: .cfa -936 + ^ x27: .cfa -928 + ^ x28: .cfa -920 + ^
+STACK CFI 84384 x19: x19 x20: x20
+STACK CFI 84388 v8: v8 v9: v9
+STACK CFI 8438c x21: x21 x22: x22
+STACK CFI 84390 v10: v10 v11: v11
+STACK CFI 84394 x23: x23 x24: x24
+STACK CFI 84398 v12: v12 v13: v13
+STACK CFI 8439c x25: x25 x26: x26
+STACK CFI 843a0 v14: v14 v15: v15
+STACK CFI 843a4 x27: x27 x28: x28
+STACK CFI 843a8 .cfa: sp 848 + .ra: .ra x29: x29
+STACK CFI 843ac .cfa: sp 688 +
+STACK CFI 843b0 .cfa: x29 1008 + .ra: .cfa -1000 + ^ v10: .cfa -896 + ^ v11: .cfa -888 + ^ v12: .cfa -880 + ^ v13: .cfa -872 + ^ v14: .cfa -864 + ^ v15: .cfa -856 + ^ v8: .cfa -912 + ^ v9: .cfa -904 + ^ x19: .cfa -992 + ^ x20: .cfa -984 + ^ x21: .cfa -976 + ^ x22: .cfa -968 + ^ x23: .cfa -960 + ^ x24: .cfa -952 + ^ x25: .cfa -944 + ^ x26: .cfa -936 + ^ x27: .cfa -928 + ^ x28: .cfa -920 + ^ x29: .cfa -1008 + ^
+STACK CFI INIT 84d7c 138 .cfa: sp 0 + .ra: x30
+STACK CFI 84d80 .cfa: sp 592 +
+STACK CFI 84d84 .cfa: sp 672 + .ra: .cfa -664 + ^ x29: .cfa -672 + ^
+STACK CFI 84d88 .cfa: x29 672 +
+STACK CFI 84d8c x19: .cfa -656 + ^ x20: .cfa -648 + ^
+STACK CFI 84d9c x21: .cfa -640 + ^ x22: .cfa -632 + ^ x23: .cfa -624 + ^ x24: .cfa -616 + ^
+STACK CFI 84db8 x25: .cfa -608 + ^ x26: .cfa -600 + ^
+STACK CFI 84e60 x19: x19 x20: x20
+STACK CFI 84e64 x21: x21 x22: x22
+STACK CFI 84e68 x23: x23 x24: x24
+STACK CFI 84e6c x25: x25 x26: x26
+STACK CFI 84e70 .cfa: sp 592 + .ra: .ra x29: x29
+STACK CFI 84e74 .cfa: sp 512 +
+STACK CFI 84e78 .cfa: x29 672 + .ra: .cfa -664 + ^ x19: .cfa -656 + ^ x20: .cfa -648 + ^ x21: .cfa -640 + ^ x22: .cfa -632 + ^ x23: .cfa -624 + ^ x24: .cfa -616 + ^ x25: .cfa -608 + ^ x26: .cfa -600 + ^ x29: .cfa -672 + ^
+STACK CFI INIT 84eb4 38 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 84eec 1d4 .cfa: sp 0 + .ra: x30
+STACK CFI 84ef0 .cfa: sp 2208 +
+STACK CFI 84ef4 .cfa: sp 2304 + .ra: .cfa -2296 + ^ x29: .cfa -2304 + ^
+STACK CFI 84ef8 .cfa: x29 2304 +
+STACK CFI 84efc x21: .cfa -2272 + ^ x22: .cfa -2264 + ^
+STACK CFI 84f0c x25: .cfa -2240 + ^ x26: .cfa -2232 + ^
+STACK CFI 84f24 x19: .cfa -2288 + ^ x20: .cfa -2280 + ^ x23: .cfa -2256 + ^ x24: .cfa -2248 + ^ x27: .cfa -2224 + ^ x28: .cfa -2216 + ^
+STACK CFI 8506c x21: x21 x22: x22
+STACK CFI 85070 x19: x19 x20: x20
+STACK CFI 85074 x23: x23 x24: x24
+STACK CFI 85078 x25: x25 x26: x26
+STACK CFI 8507c x27: x27 x28: x28
+STACK CFI 85080 .cfa: sp 2208 + .ra: .ra x29: x29
+STACK CFI 85084 .cfa: sp 2112 +
+STACK CFI 85088 .cfa: x29 2304 + .ra: .cfa -2296 + ^ x19: .cfa -2288 + ^ x20: .cfa -2280 + ^ x21: .cfa -2272 + ^ x22: .cfa -2264 + ^ x23: .cfa -2256 + ^ x24: .cfa -2248 + ^ x25: .cfa -2240 + ^ x26: .cfa -2232 + ^ x27: .cfa -2224 + ^ x28: .cfa -2216 + ^ x29: .cfa -2304 + ^
+STACK CFI INIT 850c0 c68 .cfa: sp 0 + .ra: x30
+STACK CFI 850c4 .cfa: sp 2672 +
+STACK CFI 850cc .cfa: sp 2832 + .ra: .cfa -2824 + ^ x29: .cfa -2832 + ^
+STACK CFI 850d0 .cfa: x29 2832 +
+STACK CFI 850d8 v10: .cfa -2720 + ^ v11: .cfa -2712 + ^ x23: .cfa -2784 + ^ x24: .cfa -2776 + ^
+STACK CFI 850e8 v14: .cfa -2688 + ^ v15: .cfa -2680 + ^
+STACK CFI 850fc v12: .cfa -2704 + ^ v13: .cfa -2696 + ^ v8: .cfa -2736 + ^ v9: .cfa -2728 + ^ x19: .cfa -2816 + ^ x20: .cfa -2808 + ^
+STACK CFI 85114 x21: .cfa -2800 + ^ x22: .cfa -2792 + ^ x25: .cfa -2768 + ^ x26: .cfa -2760 + ^
+STACK CFI 85120 x27: .cfa -2752 + ^ x28: .cfa -2744 + ^
+STACK CFI 85584 x19: x19 x20: x20
+STACK CFI 85588 v8: v8 v9: v9
+STACK CFI 8558c x21: x21 x22: x22
+STACK CFI 85590 v10: v10 v11: v11
+STACK CFI 85594 x23: x23 x24: x24
+STACK CFI 85598 v12: v12 v13: v13
+STACK CFI 8559c x25: x25 x26: x26
+STACK CFI 855a0 v14: v14 v15: v15
+STACK CFI 855a4 x27: x27 x28: x28
+STACK CFI 855a8 .cfa: sp 2672 + .ra: .ra x29: x29
+STACK CFI 855ac .cfa: sp 2512 +
+STACK CFI 855b0 .cfa: x29 2832 + .ra: .cfa -2824 + ^ v10: .cfa -2720 + ^ v11: .cfa -2712 + ^ v12: .cfa -2704 + ^ v13: .cfa -2696 + ^ v14: .cfa -2688 + ^ v15: .cfa -2680 + ^ v8: .cfa -2736 + ^ v9: .cfa -2728 + ^ x19: .cfa -2816 + ^ x20: .cfa -2808 + ^ x21: .cfa -2800 + ^ x22: .cfa -2792 + ^ x23: .cfa -2784 + ^ x24: .cfa -2776 + ^ x25: .cfa -2768 + ^ x26: .cfa -2760 + ^ x27: .cfa -2752 + ^ x28: .cfa -2744 + ^ x29: .cfa -2832 + ^
+STACK CFI INIT 85d28 34 .cfa: sp 0 + .ra: x30
+STACK CFI 85d2c .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 85d38 .cfa: x29 16 +
+STACK CFI 85d58 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 85d5c c68 .cfa: sp 0 + .ra: x30
+STACK CFI 85d60 .cfa: sp 2672 +
+STACK CFI 85d68 .cfa: sp 2832 + .ra: .cfa -2824 + ^ x29: .cfa -2832 + ^
+STACK CFI 85d6c .cfa: x29 2832 +
+STACK CFI 85d74 v10: .cfa -2720 + ^ v11: .cfa -2712 + ^ x23: .cfa -2784 + ^ x24: .cfa -2776 + ^
+STACK CFI 85d84 v14: .cfa -2688 + ^ v15: .cfa -2680 + ^
+STACK CFI 85d98 v12: .cfa -2704 + ^ v13: .cfa -2696 + ^ v8: .cfa -2736 + ^ v9: .cfa -2728 + ^ x19: .cfa -2816 + ^ x20: .cfa -2808 + ^
+STACK CFI 85db0 x21: .cfa -2800 + ^ x22: .cfa -2792 + ^ x25: .cfa -2768 + ^ x26: .cfa -2760 + ^
+STACK CFI 85dbc x27: .cfa -2752 + ^ x28: .cfa -2744 + ^
+STACK CFI 86220 x19: x19 x20: x20
+STACK CFI 86224 v8: v8 v9: v9
+STACK CFI 86228 x21: x21 x22: x22
+STACK CFI 8622c v10: v10 v11: v11
+STACK CFI 86230 x23: x23 x24: x24
+STACK CFI 86234 v12: v12 v13: v13
+STACK CFI 86238 x25: x25 x26: x26
+STACK CFI 8623c v14: v14 v15: v15
+STACK CFI 86240 x27: x27 x28: x28
+STACK CFI 86244 .cfa: sp 2672 + .ra: .ra x29: x29
+STACK CFI 86248 .cfa: sp 2512 +
+STACK CFI 8624c .cfa: x29 2832 + .ra: .cfa -2824 + ^ v10: .cfa -2720 + ^ v11: .cfa -2712 + ^ v12: .cfa -2704 + ^ v13: .cfa -2696 + ^ v14: .cfa -2688 + ^ v15: .cfa -2680 + ^ v8: .cfa -2736 + ^ v9: .cfa -2728 + ^ x19: .cfa -2816 + ^ x20: .cfa -2808 + ^ x21: .cfa -2800 + ^ x22: .cfa -2792 + ^ x23: .cfa -2784 + ^ x24: .cfa -2776 + ^ x25: .cfa -2768 + ^ x26: .cfa -2760 + ^ x27: .cfa -2752 + ^ x28: .cfa -2744 + ^ x29: .cfa -2832 + ^
+STACK CFI INIT 869c4 214 .cfa: sp 0 + .ra: x30
+STACK CFI 869c8 .cfa: sp 2496 +
+STACK CFI 869cc .cfa: sp 2592 + .ra: .cfa -2584 + ^ x29: .cfa -2592 + ^
+STACK CFI 869d0 .cfa: x29 2592 +
+STACK CFI 869d4 x19: .cfa -2576 + ^ x20: .cfa -2568 + ^
+STACK CFI 869e4 x21: .cfa -2560 + ^ x22: .cfa -2552 + ^ x23: .cfa -2544 + ^ x24: .cfa -2536 + ^
+STACK CFI 86a00 x25: .cfa -2528 + ^ x26: .cfa -2520 + ^
+STACK CFI 86a14 x27: .cfa -2512 + ^ x28: .cfa -2504 + ^
+STACK CFI 86b58 x19: x19 x20: x20
+STACK CFI 86b5c x21: x21 x22: x22
+STACK CFI 86b60 x23: x23 x24: x24
+STACK CFI 86b64 x25: x25 x26: x26
+STACK CFI 86b68 x27: x27 x28: x28
+STACK CFI 86b6c .cfa: sp 2496 + .ra: .ra x29: x29
+STACK CFI 86b70 .cfa: sp 2400 +
+STACK CFI 86b74 .cfa: x29 2592 + .ra: .cfa -2584 + ^ x19: .cfa -2576 + ^ x20: .cfa -2568 + ^ x21: .cfa -2560 + ^ x22: .cfa -2552 + ^ x23: .cfa -2544 + ^ x24: .cfa -2536 + ^ x25: .cfa -2528 + ^ x26: .cfa -2520 + ^ x27: .cfa -2512 + ^ x28: .cfa -2504 + ^ x29: .cfa -2592 + ^
+STACK CFI INIT 86bd8 278 .cfa: sp 0 + .ra: x30
+STACK CFI 86bdc .cfa: sp 128 + .ra: .cfa -120 + ^ x29: .cfa -128 + ^
+STACK CFI 86be0 .cfa: x29 128 +
+STACK CFI 86be4 x19: .cfa -112 + ^ x20: .cfa -104 + ^
+STACK CFI 86bf8 v8: .cfa -32 + ^
+STACK CFI 86c0c x21: .cfa -96 + ^ x22: .cfa -88 + ^ x23: .cfa -80 + ^ x24: .cfa -72 + ^ x25: .cfa -64 + ^ x26: .cfa -56 + ^ x27: .cfa -48 + ^ x28: .cfa -40 + ^
+STACK CFI 86c90 x19: x19 x20: x20
+STACK CFI 86c94 x21: x21 x22: x22
+STACK CFI 86c98 x23: x23 x24: x24
+STACK CFI 86c9c x25: x25 x26: x26
+STACK CFI 86ca0 x27: x27 x28: x28
+STACK CFI 86ca4 v8: v8
+STACK CFI 86ca8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 86cac .cfa: x29 128 + .ra: .cfa -120 + ^ v8: .cfa -32 + ^ x19: .cfa -112 + ^ x20: .cfa -104 + ^ x21: .cfa -96 + ^ x22: .cfa -88 + ^ x23: .cfa -80 + ^ x24: .cfa -72 + ^ x25: .cfa -64 + ^ x26: .cfa -56 + ^ x27: .cfa -48 + ^ x28: .cfa -40 + ^ x29: .cfa -128 + ^
+STACK CFI INIT 86e50 26c .cfa: sp 0 + .ra: x30
+STACK CFI 86e54 .cfa: sp 128 + .ra: .cfa -120 + ^ x29: .cfa -128 + ^
+STACK CFI 86e58 .cfa: x29 128 +
+STACK CFI 86e5c x19: .cfa -112 + ^ x20: .cfa -104 + ^
+STACK CFI 86e70 v8: .cfa -32 + ^
+STACK CFI 86e80 x21: .cfa -96 + ^ x22: .cfa -88 + ^ x25: .cfa -64 + ^ x26: .cfa -56 + ^ x27: .cfa -48 + ^ x28: .cfa -40 + ^
+STACK CFI 86e8c x23: .cfa -80 + ^ x24: .cfa -72 + ^
+STACK CFI 86f0c x19: x19 x20: x20
+STACK CFI 86f10 x21: x21 x22: x22
+STACK CFI 86f14 x23: x23 x24: x24
+STACK CFI 86f18 x25: x25 x26: x26
+STACK CFI 86f1c x27: x27 x28: x28
+STACK CFI 86f20 v8: v8
+STACK CFI 86f24 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 86f28 .cfa: x29 128 + .ra: .cfa -120 + ^ v8: .cfa -32 + ^ x19: .cfa -112 + ^ x20: .cfa -104 + ^ x21: .cfa -96 + ^ x22: .cfa -88 + ^ x23: .cfa -80 + ^ x24: .cfa -72 + ^ x25: .cfa -64 + ^ x26: .cfa -56 + ^ x27: .cfa -48 + ^ x28: .cfa -40 + ^ x29: .cfa -128 + ^
+STACK CFI INIT 870bc 138 .cfa: sp 0 + .ra: x30
+STACK CFI 870c0 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 870c4 .cfa: x29 48 +
+STACK CFI 870c8 x19: .cfa -32 + ^
+STACK CFI 870f8 x19: x19
+STACK CFI 87104 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 87108 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 8713c x19: x19
+STACK CFI 87148 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 8714c .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI INIT 871f4 290 .cfa: sp 0 + .ra: x30
+STACK CFI 871f8 .cfa: sp 176 + .ra: .cfa -168 + ^ x29: .cfa -176 + ^
+STACK CFI 87200 .cfa: x29 176 +
+STACK CFI 87204 v10: .cfa -64 + ^ v11: .cfa -56 + ^
+STACK CFI 87224 v8: .cfa -80 + ^ v9: .cfa -72 + ^
+STACK CFI 87230 x23: .cfa -128 + ^ x24: .cfa -120 + ^ x27: .cfa -96 + ^ x28: .cfa -88 + ^
+STACK CFI 87264 x21: .cfa -144 + ^ x22: .cfa -136 + ^ x25: .cfa -112 + ^ x26: .cfa -104 + ^
+STACK CFI 87270 x19: .cfa -160 + ^ x20: .cfa -152 + ^
+STACK CFI 87340 v10: v10 v11: v11
+STACK CFI 87344 x19: x19 x20: x20
+STACK CFI 87348 v8: v8 v9: v9
+STACK CFI 8734c x21: x21 x22: x22
+STACK CFI 87350 x23: x23 x24: x24
+STACK CFI 87354 x25: x25 x26: x26
+STACK CFI 87358 x27: x27 x28: x28
+STACK CFI 8735c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 87360 .cfa: x29 176 + .ra: .cfa -168 + ^ v10: .cfa -64 + ^ v11: .cfa -56 + ^ v8: .cfa -80 + ^ v9: .cfa -72 + ^ x19: .cfa -160 + ^ x20: .cfa -152 + ^ x21: .cfa -144 + ^ x22: .cfa -136 + ^ x23: .cfa -128 + ^ x24: .cfa -120 + ^ x25: .cfa -112 + ^ x26: .cfa -104 + ^ x27: .cfa -96 + ^ x28: .cfa -88 + ^ x29: .cfa -176 + ^
+STACK CFI INIT 87484 178 .cfa: sp 0 + .ra: x30
+STACK CFI 87488 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 87490 .cfa: x29 80 +
+STACK CFI 87498 x19: .cfa -64 + ^
+STACK CFI 874f0 x19: x19
+STACK CFI 874f4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 874f8 .cfa: x29 80 + .ra: .cfa -72 + ^ x19: .cfa -64 + ^ x29: .cfa -80 + ^
+STACK CFI 87544 x19: x19
+STACK CFI 87548 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 8754c .cfa: x29 80 + .ra: .cfa -72 + ^ x19: .cfa -64 + ^ x29: .cfa -80 + ^
+STACK CFI INIT 875fc 188 .cfa: sp 0 + .ra: x30
+STACK CFI 87600 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 87608 .cfa: x29 80 +
+STACK CFI 87610 x19: .cfa -64 + ^
+STACK CFI 87678 x19: x19
+STACK CFI 8767c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 87680 .cfa: x29 80 + .ra: .cfa -72 + ^ x19: .cfa -64 + ^ x29: .cfa -80 + ^
+STACK CFI 876cc x19: x19
+STACK CFI 876d0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 876d4 .cfa: x29 80 + .ra: .cfa -72 + ^ x19: .cfa -64 + ^ x29: .cfa -80 + ^
+STACK CFI INIT 87784 4c4 .cfa: sp 0 + .ra: x30
+STACK CFI 87788 .cfa: sp 144 + .ra: .cfa -136 + ^ x29: .cfa -144 + ^
+STACK CFI 8778c .cfa: x29 144 +
+STACK CFI 87790 x19: .cfa -128 + ^ x20: .cfa -120 + ^
+STACK CFI 877ac x21: .cfa -112 + ^ x22: .cfa -104 + ^
+STACK CFI 877bc x23: .cfa -96 + ^ x24: .cfa -88 + ^ x25: .cfa -80 + ^ x26: .cfa -72 + ^ x27: .cfa -64 + ^ x28: .cfa -56 + ^
+STACK CFI 878b0 x19: x19 x20: x20
+STACK CFI 878b4 x21: x21 x22: x22
+STACK CFI 878b8 x23: x23 x24: x24
+STACK CFI 878bc x25: x25 x26: x26
+STACK CFI 878c0 x27: x27 x28: x28
+STACK CFI 878c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 878c8 .cfa: x29 144 + .ra: .cfa -136 + ^ x19: .cfa -128 + ^ x20: .cfa -120 + ^ x21: .cfa -112 + ^ x22: .cfa -104 + ^ x23: .cfa -96 + ^ x24: .cfa -88 + ^ x25: .cfa -80 + ^ x26: .cfa -72 + ^ x27: .cfa -64 + ^ x28: .cfa -56 + ^ x29: .cfa -144 + ^
+STACK CFI INIT 87c48 1c0 .cfa: sp 0 + .ra: x30
+STACK CFI 87c4c .cfa: sp 128 +
+STACK CFI 87c54 .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 87c58 .cfa: x29 96 +
+STACK CFI 87c5c x23: .cfa -48 + ^ x24: .cfa -40 + ^
+STACK CFI 87c68 x19: .cfa -80 + ^ x20: .cfa -72 + ^
+STACK CFI 87c80 x21: .cfa -64 + ^ x22: .cfa -56 + ^
+STACK CFI 87cb0 x25: .cfa -32 + ^ x26: .cfa -24 + ^ x27: .cfa -16 + ^ x28: .cfa -8 + ^
+STACK CFI 87d08 .cfa: sp 128 +
+STACK CFI 87d20 x19: x19 x20: x20
+STACK CFI 87d24 x21: x21 x22: x22
+STACK CFI 87d28 x23: x23 x24: x24
+STACK CFI 87d2c x25: x25 x26: x26
+STACK CFI 87d30 x27: x27 x28: x28
+STACK CFI 87d34 .ra: .ra x29: x29
+STACK CFI 87d38 .cfa: sp 0 +
+STACK CFI 87d3c .cfa: x29 96 + .ra: .cfa -88 + ^ x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^ x25: .cfa -32 + ^ x26: .cfa -24 + ^ x27: .cfa -16 + ^ x28: .cfa -8 + ^ x29: .cfa -96 + ^
+STACK CFI INIT 87e08 1b8 .cfa: sp 0 + .ra: x30
+STACK CFI 87e0c .cfa: sp 128 +
+STACK CFI 87e14 .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 87e18 .cfa: x29 96 +
+STACK CFI 87e1c x23: .cfa -48 + ^ x24: .cfa -40 + ^
+STACK CFI 87e28 x19: .cfa -80 + ^ x20: .cfa -72 + ^
+STACK CFI 87e40 x21: .cfa -64 + ^ x22: .cfa -56 + ^
+STACK CFI 87e70 x25: .cfa -32 + ^ x26: .cfa -24 + ^ x27: .cfa -16 + ^ x28: .cfa -8 + ^
+STACK CFI 87ec8 .cfa: sp 128 +
+STACK CFI 87ee0 x19: x19 x20: x20
+STACK CFI 87ee4 x21: x21 x22: x22
+STACK CFI 87ee8 x23: x23 x24: x24
+STACK CFI 87eec x25: x25 x26: x26
+STACK CFI 87ef0 x27: x27 x28: x28
+STACK CFI 87ef4 .ra: .ra x29: x29
+STACK CFI 87ef8 .cfa: sp 0 +
+STACK CFI 87efc .cfa: x29 96 + .ra: .cfa -88 + ^ x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^ x25: .cfa -32 + ^ x26: .cfa -24 + ^ x27: .cfa -16 + ^ x28: .cfa -8 + ^ x29: .cfa -96 + ^
+STACK CFI INIT 87fc0 498 .cfa: sp 0 + .ra: x30
+STACK CFI 87fc4 .cfa: sp 416 + .ra: .cfa -408 + ^ x29: .cfa -416 + ^
+STACK CFI 87fc8 .cfa: x29 416 +
+STACK CFI 87fd4 v10: .cfa -304 + ^ v8: .cfa -320 + ^ v9: .cfa -312 + ^
+STACK CFI 87fe8 x19: .cfa -400 + ^ x20: .cfa -392 + ^ x21: .cfa -384 + ^ x22: .cfa -376 + ^
+STACK CFI 88008 x23: .cfa -368 + ^ x24: .cfa -360 + ^ x25: .cfa -352 + ^ x26: .cfa -344 + ^ x27: .cfa -336 + ^ x28: .cfa -328 + ^
+STACK CFI 881a4 x19: x19 x20: x20
+STACK CFI 881a8 v8: v8 v9: v9
+STACK CFI 881ac x21: x21 x22: x22
+STACK CFI 881b0 x23: x23 x24: x24
+STACK CFI 881b4 x25: x25 x26: x26
+STACK CFI 881b8 x27: x27 x28: x28
+STACK CFI 881bc v10: v10
+STACK CFI 881c0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 881c4 .cfa: x29 416 + .ra: .cfa -408 + ^ v10: .cfa -304 + ^ v8: .cfa -320 + ^ v9: .cfa -312 + ^ x19: .cfa -400 + ^ x20: .cfa -392 + ^ x21: .cfa -384 + ^ x22: .cfa -376 + ^ x23: .cfa -368 + ^ x24: .cfa -360 + ^ x25: .cfa -352 + ^ x26: .cfa -344 + ^ x27: .cfa -336 + ^ x28: .cfa -328 + ^ x29: .cfa -416 + ^
+STACK CFI INIT 88458 130 .cfa: sp 0 + .ra: x30
+STACK CFI 8845c .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 88460 .cfa: x29 48 +
+STACK CFI 88464 x19: .cfa -32 + ^
+STACK CFI 88494 x19: x19
+STACK CFI 884a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 884a4 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 884d0 x19: x19
+STACK CFI 884dc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 884e0 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI INIT 88588 268 .cfa: sp 0 + .ra: x30
+STACK CFI 8858c .cfa: sp 176 + .ra: .cfa -168 + ^ x29: .cfa -176 + ^
+STACK CFI 88594 .cfa: x29 176 +
+STACK CFI 8859c v10: .cfa -64 + ^ v11: .cfa -56 + ^ x23: .cfa -128 + ^ x24: .cfa -120 + ^
+STACK CFI 885b4 v8: .cfa -80 + ^ v9: .cfa -72 + ^ x25: .cfa -112 + ^ x26: .cfa -104 + ^
+STACK CFI 885e8 x21: .cfa -144 + ^ x22: .cfa -136 + ^ x27: .cfa -96 + ^ x28: .cfa -88 + ^
+STACK CFI 885f4 x19: .cfa -160 + ^ x20: .cfa -152 + ^
+STACK CFI 886c0 v10: v10 v11: v11
+STACK CFI 886c4 x19: x19 x20: x20
+STACK CFI 886c8 v8: v8 v9: v9
+STACK CFI 886cc x21: x21 x22: x22
+STACK CFI 886d0 x23: x23 x24: x24
+STACK CFI 886d4 x25: x25 x26: x26
+STACK CFI 886d8 x27: x27 x28: x28
+STACK CFI 886dc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 886e0 .cfa: x29 176 + .ra: .cfa -168 + ^ v10: .cfa -64 + ^ v11: .cfa -56 + ^ v8: .cfa -80 + ^ v9: .cfa -72 + ^ x19: .cfa -160 + ^ x20: .cfa -152 + ^ x21: .cfa -144 + ^ x22: .cfa -136 + ^ x23: .cfa -128 + ^ x24: .cfa -120 + ^ x25: .cfa -112 + ^ x26: .cfa -104 + ^ x27: .cfa -96 + ^ x28: .cfa -88 + ^ x29: .cfa -176 + ^
+STACK CFI INIT 887f0 160 .cfa: sp 0 + .ra: x30
+STACK CFI 887f4 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 887fc .cfa: x29 80 +
+STACK CFI 88804 x19: .cfa -64 + ^
+STACK CFI 88858 x19: x19
+STACK CFI 8885c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 88860 .cfa: x29 80 + .ra: .cfa -72 + ^ x19: .cfa -64 + ^ x29: .cfa -80 + ^
+STACK CFI 888ac x19: x19
+STACK CFI 888b0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 888b4 .cfa: x29 80 + .ra: .cfa -72 + ^ x19: .cfa -64 + ^ x29: .cfa -80 + ^
+STACK CFI INIT 88950 174 .cfa: sp 0 + .ra: x30
+STACK CFI 88954 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8895c .cfa: x29 80 +
+STACK CFI 88964 x19: .cfa -64 + ^
+STACK CFI 889cc x19: x19
+STACK CFI 889d0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 889d4 .cfa: x29 80 + .ra: .cfa -72 + ^ x19: .cfa -64 + ^ x29: .cfa -80 + ^
+STACK CFI 88a20 x19: x19
+STACK CFI 88a24 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 88a28 .cfa: x29 80 + .ra: .cfa -72 + ^ x19: .cfa -64 + ^ x29: .cfa -80 + ^
+STACK CFI INIT 88ac4 4b4 .cfa: sp 0 + .ra: x30
+STACK CFI 88ac8 .cfa: sp 144 + .ra: .cfa -136 + ^ x29: .cfa -144 + ^
+STACK CFI 88acc .cfa: x29 144 +
+STACK CFI 88ad0 x19: .cfa -128 + ^ x20: .cfa -120 + ^
+STACK CFI 88aec x21: .cfa -112 + ^ x22: .cfa -104 + ^
+STACK CFI 88afc x23: .cfa -96 + ^ x24: .cfa -88 + ^ x25: .cfa -80 + ^ x26: .cfa -72 + ^ x27: .cfa -64 + ^ x28: .cfa -56 + ^
+STACK CFI 88be8 x19: x19 x20: x20
+STACK CFI 88bec x21: x21 x22: x22
+STACK CFI 88bf0 x23: x23 x24: x24
+STACK CFI 88bf4 x25: x25 x26: x26
+STACK CFI 88bf8 x27: x27 x28: x28
+STACK CFI 88bfc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 88c00 .cfa: x29 144 + .ra: .cfa -136 + ^ x19: .cfa -128 + ^ x20: .cfa -120 + ^ x21: .cfa -112 + ^ x22: .cfa -104 + ^ x23: .cfa -96 + ^ x24: .cfa -88 + ^ x25: .cfa -80 + ^ x26: .cfa -72 + ^ x27: .cfa -64 + ^ x28: .cfa -56 + ^ x29: .cfa -144 + ^
+STACK CFI INIT 88f78 1ac .cfa: sp 0 + .ra: x30
+STACK CFI 88f7c .cfa: sp 128 +
+STACK CFI 88f84 .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 88f88 .cfa: x29 96 +
+STACK CFI 88f8c x25: .cfa -32 + ^ x26: .cfa -24 + ^
+STACK CFI 88f98 x19: .cfa -80 + ^ x20: .cfa -72 + ^
+STACK CFI 88fb4 x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^
+STACK CFI 88fe4 x27: .cfa -16 + ^ x28: .cfa -8 + ^
+STACK CFI 8903c .cfa: sp 128 +
+STACK CFI 89054 x19: x19 x20: x20
+STACK CFI 89058 x21: x21 x22: x22
+STACK CFI 8905c x23: x23 x24: x24
+STACK CFI 89060 x25: x25 x26: x26
+STACK CFI 89064 x27: x27 x28: x28
+STACK CFI 89068 .ra: .ra x29: x29
+STACK CFI 8906c .cfa: sp 0 +
+STACK CFI 89070 .cfa: x29 96 + .ra: .cfa -88 + ^ x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^ x25: .cfa -32 + ^ x26: .cfa -24 + ^ x27: .cfa -16 + ^ x28: .cfa -8 + ^ x29: .cfa -96 + ^
+STACK CFI INIT 89124 1a4 .cfa: sp 0 + .ra: x30
+STACK CFI 89128 .cfa: sp 128 +
+STACK CFI 89130 .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 89134 .cfa: x29 96 +
+STACK CFI 89138 x25: .cfa -32 + ^ x26: .cfa -24 + ^
+STACK CFI 89144 x19: .cfa -80 + ^ x20: .cfa -72 + ^
+STACK CFI 8915c x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^
+STACK CFI 89190 x27: .cfa -16 + ^ x28: .cfa -8 + ^
+STACK CFI 891e8 .cfa: sp 128 +
+STACK CFI 89200 x19: x19 x20: x20
+STACK CFI 89204 x21: x21 x22: x22
+STACK CFI 89208 x23: x23 x24: x24
+STACK CFI 8920c x25: x25 x26: x26
+STACK CFI 89210 x27: x27 x28: x28
+STACK CFI 89214 .ra: .ra x29: x29
+STACK CFI 89218 .cfa: sp 0 +
+STACK CFI 8921c .cfa: x29 96 + .ra: .cfa -88 + ^ x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^ x25: .cfa -32 + ^ x26: .cfa -24 + ^ x27: .cfa -16 + ^ x28: .cfa -8 + ^ x29: .cfa -96 + ^
+STACK CFI INIT 892c8 450 .cfa: sp 0 + .ra: x30
+STACK CFI 892cc .cfa: sp 208 + .ra: .cfa -200 + ^ x29: .cfa -208 + ^
+STACK CFI 892d0 .cfa: x29 208 +
+STACK CFI 892d4 v8: .cfa -112 + ^ v9: .cfa -104 + ^
+STACK CFI 892e0 x25: .cfa -144 + ^ x26: .cfa -136 + ^
+STACK CFI 892ec x19: .cfa -192 + ^ x20: .cfa -184 + ^ x21: .cfa -176 + ^ x22: .cfa -168 + ^
+STACK CFI 89304 x23: .cfa -160 + ^ x24: .cfa -152 + ^ x27: .cfa -128 + ^ x28: .cfa -120 + ^
+STACK CFI 89484 x19: x19 x20: x20
+STACK CFI 89488 v8: v8 v9: v9
+STACK CFI 8948c x21: x21 x22: x22
+STACK CFI 89490 x23: x23 x24: x24
+STACK CFI 89494 x25: x25 x26: x26
+STACK CFI 89498 x27: x27 x28: x28
+STACK CFI 8949c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 894a0 .cfa: x29 208 + .ra: .cfa -200 + ^ v8: .cfa -112 + ^ v9: .cfa -104 + ^ x19: .cfa -192 + ^ x20: .cfa -184 + ^ x21: .cfa -176 + ^ x22: .cfa -168 + ^ x23: .cfa -160 + ^ x24: .cfa -152 + ^ x25: .cfa -144 + ^ x26: .cfa -136 + ^ x27: .cfa -128 + ^ x28: .cfa -120 + ^ x29: .cfa -208 + ^
+STACK CFI INIT 89718 15c .cfa: sp 0 + .ra: x30
+STACK CFI 8971c .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 89720 .cfa: x29 48 +
+STACK CFI 89724 x19: .cfa -32 + ^
+STACK CFI 89750 x19: x19
+STACK CFI 89754 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 89758 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 89844 x19: x19
+STACK CFI 89848 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 8984c .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI INIT 89874 4e0 .cfa: sp 0 + .ra: x30
+STACK CFI 89878 .cfa: sp 2224 +
+STACK CFI 8987c .cfa: sp 2336 + .ra: .cfa -2328 + ^ x29: .cfa -2336 + ^
+STACK CFI 89880 .cfa: x29 2336 +
+STACK CFI 89884 v8: .cfa -2240 + ^
+STACK CFI 8988c x21: .cfa -2304 + ^ x22: .cfa -2296 + ^
+STACK CFI 8989c x23: .cfa -2288 + ^ x24: .cfa -2280 + ^
+STACK CFI 898b8 x19: .cfa -2320 + ^ x20: .cfa -2312 + ^ x25: .cfa -2272 + ^ x26: .cfa -2264 + ^ x27: .cfa -2256 + ^ x28: .cfa -2248 + ^
+STACK CFI 89b64 x21: x21 x22: x22
+STACK CFI 89b68 x19: x19 x20: x20
+STACK CFI 89b6c x23: x23 x24: x24
+STACK CFI 89b70 x25: x25 x26: x26
+STACK CFI 89b74 x27: x27 x28: x28
+STACK CFI 89b78 v8: v8
+STACK CFI 89b7c .cfa: sp 2224 + .ra: .ra x29: x29
+STACK CFI 89b80 .cfa: sp 2112 +
+STACK CFI 89b84 .cfa: x29 2336 + .ra: .cfa -2328 + ^ v8: .cfa -2240 + ^ x19: .cfa -2320 + ^ x20: .cfa -2312 + ^ x21: .cfa -2304 + ^ x22: .cfa -2296 + ^ x23: .cfa -2288 + ^ x24: .cfa -2280 + ^ x25: .cfa -2272 + ^ x26: .cfa -2264 + ^ x27: .cfa -2256 + ^ x28: .cfa -2248 + ^ x29: .cfa -2336 + ^
+STACK CFI INIT 89d54 220 .cfa: sp 0 + .ra: x30
+STACK CFI 89d58 .cfa: sp 592 +
+STACK CFI 89d5c .cfa: sp 688 + .ra: .cfa -680 + ^ x29: .cfa -688 + ^
+STACK CFI 89d60 .cfa: x29 688 +
+STACK CFI 89d64 x19: .cfa -672 + ^ x20: .cfa -664 + ^
+STACK CFI 89d78 x21: .cfa -656 + ^ x22: .cfa -648 + ^ x23: .cfa -640 + ^ x24: .cfa -632 + ^ x25: .cfa -624 + ^ x26: .cfa -616 + ^
+STACK CFI 89d8c x27: .cfa -608 + ^ x28: .cfa -600 + ^
+STACK CFI 89ecc .cfa: sp 688 +
+STACK CFI 89ed8 x19: x19 x20: x20
+STACK CFI 89edc x21: x21 x22: x22
+STACK CFI 89ee0 x23: x23 x24: x24
+STACK CFI 89ee4 x25: x25 x26: x26
+STACK CFI 89ee8 x27: x27 x28: x28
+STACK CFI 89eec .cfa: sp 592 + .ra: .ra x29: x29
+STACK CFI 89ef0 .cfa: sp 496 +
+STACK CFI 89ef4 .cfa: x29 688 + .ra: .cfa -680 + ^ x19: .cfa -672 + ^ x20: .cfa -664 + ^ x21: .cfa -656 + ^ x22: .cfa -648 + ^ x23: .cfa -640 + ^ x24: .cfa -632 + ^ x25: .cfa -624 + ^ x26: .cfa -616 + ^ x27: .cfa -608 + ^ x28: .cfa -600 + ^ x29: .cfa -688 + ^
+STACK CFI INIT 89f74 24 .cfa: sp 0 + .ra: x30
+STACK CFI 89f78 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 89f84 .cfa: x29 16 +
+STACK CFI 89f94 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 89f98 220 .cfa: sp 0 + .ra: x30
+STACK CFI 89f9c .cfa: sp 592 +
+STACK CFI 89fa0 .cfa: sp 688 + .ra: .cfa -680 + ^ x29: .cfa -688 + ^
+STACK CFI 89fa4 .cfa: x29 688 +
+STACK CFI 89fa8 x19: .cfa -672 + ^ x20: .cfa -664 + ^
+STACK CFI 89fbc x21: .cfa -656 + ^ x22: .cfa -648 + ^ x23: .cfa -640 + ^ x24: .cfa -632 + ^ x25: .cfa -624 + ^ x26: .cfa -616 + ^
+STACK CFI 89fd0 x27: .cfa -608 + ^ x28: .cfa -600 + ^
+STACK CFI 8a110 .cfa: sp 688 +
+STACK CFI 8a11c x19: x19 x20: x20
+STACK CFI 8a120 x21: x21 x22: x22
+STACK CFI 8a124 x23: x23 x24: x24
+STACK CFI 8a128 x25: x25 x26: x26
+STACK CFI 8a12c x27: x27 x28: x28
+STACK CFI 8a130 .cfa: sp 592 + .ra: .ra x29: x29
+STACK CFI 8a134 .cfa: sp 496 +
+STACK CFI 8a138 .cfa: x29 688 + .ra: .cfa -680 + ^ x19: .cfa -672 + ^ x20: .cfa -664 + ^ x21: .cfa -656 + ^ x22: .cfa -648 + ^ x23: .cfa -640 + ^ x24: .cfa -632 + ^ x25: .cfa -624 + ^ x26: .cfa -616 + ^ x27: .cfa -608 + ^ x28: .cfa -600 + ^ x29: .cfa -688 + ^
+STACK CFI INIT 8a1b8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 8a1bc .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 8a1c8 .cfa: x29 16 +
+STACK CFI 8a1d8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 8a1dc 15c .cfa: sp 0 + .ra: x30
+STACK CFI 8a1e0 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8a1e4 .cfa: x29 48 +
+STACK CFI 8a1e8 x19: .cfa -32 + ^
+STACK CFI 8a214 x19: x19
+STACK CFI 8a218 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 8a21c .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 8a308 x19: x19
+STACK CFI 8a30c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 8a310 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI INIT 8a338 3e8 .cfa: sp 0 + .ra: x30
+STACK CFI 8a33c .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 8a340 .cfa: x29 96 +
+STACK CFI 8a348 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^
+STACK CFI 8a408 x19: x19 x20: x20
+STACK CFI 8a40c x21: x21 x22: x22
+STACK CFI 8a410 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 8a414 .cfa: x29 96 + .ra: .cfa -88 + ^ x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x29: .cfa -96 + ^
+STACK CFI 8a4c0 x19: x19 x20: x20
+STACK CFI 8a4c4 x21: x21 x22: x22
+STACK CFI 8a4c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 8a4cc .cfa: x29 96 + .ra: .cfa -88 + ^ x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x29: .cfa -96 + ^
+STACK CFI 8a580 x19: x19 x20: x20
+STACK CFI 8a584 x21: x21 x22: x22
+STACK CFI 8a588 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 8a58c .cfa: x29 96 + .ra: .cfa -88 + ^ x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x29: .cfa -96 + ^
+STACK CFI 8a5f8 x19: x19 x20: x20
+STACK CFI 8a5fc x21: x21 x22: x22
+STACK CFI 8a600 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 8a604 .cfa: x29 96 + .ra: .cfa -88 + ^ x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x29: .cfa -96 + ^
+STACK CFI 8a638 x19: x19 x20: x20
+STACK CFI 8a63c x21: x21 x22: x22
+STACK CFI 8a640 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 8a644 .cfa: x29 96 + .ra: .cfa -88 + ^ x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x29: .cfa -96 + ^
+STACK CFI INIT 8a720 5e0 .cfa: sp 0 + .ra: x30
+STACK CFI 8a724 .cfa: sp 320 + .ra: .cfa -312 + ^ x29: .cfa -320 + ^
+STACK CFI 8a728 .cfa: x29 320 +
+STACK CFI 8a72c v8: .cfa -224 + ^ v9: .cfa -216 + ^
+STACK CFI 8a734 v14: .cfa -176 + ^ v15: .cfa -168 + ^
+STACK CFI 8a740 v10: .cfa -208 + ^ v11: .cfa -200 + ^ x25: .cfa -256 + ^ x26: .cfa -248 + ^
+STACK CFI 8a74c v12: .cfa -192 + ^ v13: .cfa -184 + ^ x19: .cfa -304 + ^ x20: .cfa -296 + ^
+STACK CFI 8a768 x21: .cfa -288 + ^ x22: .cfa -280 + ^ x23: .cfa -272 + ^ x24: .cfa -264 + ^ x27: .cfa -240 + ^ x28: .cfa -232 + ^
+STACK CFI 8a828 x19: x19 x20: x20
+STACK CFI 8a82c v8: v8 v9: v9
+STACK CFI 8a830 x21: x21 x22: x22
+STACK CFI 8a834 v10: v10 v11: v11
+STACK CFI 8a838 x23: x23 x24: x24
+STACK CFI 8a83c v12: v12 v13: v13
+STACK CFI 8a840 x25: x25 x26: x26
+STACK CFI 8a844 v14: v14 v15: v15
+STACK CFI 8a848 x27: x27 x28: x28
+STACK CFI 8a84c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 8a850 .cfa: x29 320 + .ra: .cfa -312 + ^ v10: .cfa -208 + ^ v11: .cfa -200 + ^ v12: .cfa -192 + ^ v13: .cfa -184 + ^ v14: .cfa -176 + ^ v15: .cfa -168 + ^ v8: .cfa -224 + ^ v9: .cfa -216 + ^ x19: .cfa -304 + ^ x20: .cfa -296 + ^ x21: .cfa -288 + ^ x22: .cfa -280 + ^ x23: .cfa -272 + ^ x24: .cfa -264 + ^ x25: .cfa -256 + ^ x26: .cfa -248 + ^ x27: .cfa -240 + ^ x28: .cfa -232 + ^ x29: .cfa -320 + ^
+STACK CFI INIT 8ad00 34 .cfa: sp 0 + .ra: x30
+STACK CFI 8ad04 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8ad08 .cfa: x29 48 +
+STACK CFI 8ad30 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 8ad34 54 .cfa: sp 0 + .ra: x30
+STACK CFI 8ad38 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8ad3c .cfa: x29 80 +
+STACK CFI 8ad84 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 8ad88 5f8 .cfa: sp 0 + .ra: x30
+STACK CFI 8ad8c .cfa: sp 320 + .ra: .cfa -312 + ^ x29: .cfa -320 + ^
+STACK CFI 8ad90 .cfa: x29 320 +
+STACK CFI 8ad94 v10: .cfa -208 + ^ v11: .cfa -200 + ^
+STACK CFI 8ad9c v12: .cfa -192 + ^ v13: .cfa -184 + ^
+STACK CFI 8ada8 v8: .cfa -224 + ^ v9: .cfa -216 + ^ x25: .cfa -256 + ^ x26: .cfa -248 + ^
+STACK CFI 8adb4 v14: .cfa -176 + ^ v15: .cfa -168 + ^ x19: .cfa -304 + ^ x20: .cfa -296 + ^
+STACK CFI 8add0 x21: .cfa -288 + ^ x22: .cfa -280 + ^ x23: .cfa -272 + ^ x24: .cfa -264 + ^ x27: .cfa -240 + ^ x28: .cfa -232 + ^
+STACK CFI 8ae8c x19: x19 x20: x20
+STACK CFI 8ae90 v8: v8 v9: v9
+STACK CFI 8ae94 x21: x21 x22: x22
+STACK CFI 8ae98 v10: v10 v11: v11
+STACK CFI 8ae9c x23: x23 x24: x24
+STACK CFI 8aea0 v12: v12 v13: v13
+STACK CFI 8aea4 x25: x25 x26: x26
+STACK CFI 8aea8 v14: v14 v15: v15
+STACK CFI 8aeac x27: x27 x28: x28
+STACK CFI 8aeb0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 8aeb4 .cfa: x29 320 + .ra: .cfa -312 + ^ v10: .cfa -208 + ^ v11: .cfa -200 + ^ v12: .cfa -192 + ^ v13: .cfa -184 + ^ v14: .cfa -176 + ^ v15: .cfa -168 + ^ v8: .cfa -224 + ^ v9: .cfa -216 + ^ x19: .cfa -304 + ^ x20: .cfa -296 + ^ x21: .cfa -288 + ^ x22: .cfa -280 + ^ x23: .cfa -272 + ^ x24: .cfa -264 + ^ x25: .cfa -256 + ^ x26: .cfa -248 + ^ x27: .cfa -240 + ^ x28: .cfa -232 + ^ x29: .cfa -320 + ^
+STACK CFI INIT 8b380 34 .cfa: sp 0 + .ra: x30
+STACK CFI 8b384 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8b388 .cfa: x29 48 +
+STACK CFI 8b3b0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 8b3b4 5e0 .cfa: sp 0 + .ra: x30
+STACK CFI 8b3b8 .cfa: sp 320 + .ra: .cfa -312 + ^ x29: .cfa -320 + ^
+STACK CFI 8b3bc .cfa: x29 320 +
+STACK CFI 8b3c0 v8: .cfa -224 + ^ v9: .cfa -216 + ^
+STACK CFI 8b3c8 v14: .cfa -176 + ^ v15: .cfa -168 + ^
+STACK CFI 8b3d4 v10: .cfa -208 + ^ v11: .cfa -200 + ^ x25: .cfa -256 + ^ x26: .cfa -248 + ^
+STACK CFI 8b3e0 v12: .cfa -192 + ^ v13: .cfa -184 + ^ x19: .cfa -304 + ^ x20: .cfa -296 + ^
+STACK CFI 8b3fc x21: .cfa -288 + ^ x22: .cfa -280 + ^ x23: .cfa -272 + ^ x24: .cfa -264 + ^ x27: .cfa -240 + ^ x28: .cfa -232 + ^
+STACK CFI 8b4bc x19: x19 x20: x20
+STACK CFI 8b4c0 v8: v8 v9: v9
+STACK CFI 8b4c4 x21: x21 x22: x22
+STACK CFI 8b4c8 v10: v10 v11: v11
+STACK CFI 8b4cc x23: x23 x24: x24
+STACK CFI 8b4d0 v12: v12 v13: v13
+STACK CFI 8b4d4 x25: x25 x26: x26
+STACK CFI 8b4d8 v14: v14 v15: v15
+STACK CFI 8b4dc x27: x27 x28: x28
+STACK CFI 8b4e0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 8b4e4 .cfa: x29 320 + .ra: .cfa -312 + ^ v10: .cfa -208 + ^ v11: .cfa -200 + ^ v12: .cfa -192 + ^ v13: .cfa -184 + ^ v14: .cfa -176 + ^ v15: .cfa -168 + ^ v8: .cfa -224 + ^ v9: .cfa -216 + ^ x19: .cfa -304 + ^ x20: .cfa -296 + ^ x21: .cfa -288 + ^ x22: .cfa -280 + ^ x23: .cfa -272 + ^ x24: .cfa -264 + ^ x25: .cfa -256 + ^ x26: .cfa -248 + ^ x27: .cfa -240 + ^ x28: .cfa -232 + ^ x29: .cfa -320 + ^
+STACK CFI INIT 8b994 34 .cfa: sp 0 + .ra: x30
+STACK CFI 8b998 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8b99c .cfa: x29 48 +
+STACK CFI 8b9c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 8b9c8 5d0 .cfa: sp 0 + .ra: x30
+STACK CFI 8b9cc .cfa: sp 304 + .ra: .cfa -296 + ^ x29: .cfa -304 + ^
+STACK CFI 8b9d0 .cfa: x29 304 +
+STACK CFI 8b9d4 v10: .cfa -192 + ^ v11: .cfa -184 + ^
+STACK CFI 8b9dc v12: .cfa -176 + ^ v13: .cfa -168 + ^
+STACK CFI 8b9e8 v8: .cfa -208 + ^ v9: .cfa -200 + ^ x25: .cfa -240 + ^ x26: .cfa -232 + ^
+STACK CFI 8b9f4 v14: .cfa -160 + ^ v15: .cfa -152 + ^ x19: .cfa -288 + ^ x20: .cfa -280 + ^
+STACK CFI 8ba10 x21: .cfa -272 + ^ x22: .cfa -264 + ^ x23: .cfa -256 + ^ x24: .cfa -248 + ^ x27: .cfa -224 + ^ x28: .cfa -216 + ^
+STACK CFI 8bacc x19: x19 x20: x20
+STACK CFI 8bad0 v8: v8 v9: v9
+STACK CFI 8bad4 x21: x21 x22: x22
+STACK CFI 8bad8 v10: v10 v11: v11
+STACK CFI 8badc x23: x23 x24: x24
+STACK CFI 8bae0 v12: v12 v13: v13
+STACK CFI 8bae4 x25: x25 x26: x26
+STACK CFI 8bae8 v14: v14 v15: v15
+STACK CFI 8baec x27: x27 x28: x28
+STACK CFI 8baf0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 8baf4 .cfa: x29 304 + .ra: .cfa -296 + ^ v10: .cfa -192 + ^ v11: .cfa -184 + ^ v12: .cfa -176 + ^ v13: .cfa -168 + ^ v14: .cfa -160 + ^ v15: .cfa -152 + ^ v8: .cfa -208 + ^ v9: .cfa -200 + ^ x19: .cfa -288 + ^ x20: .cfa -280 + ^ x21: .cfa -272 + ^ x22: .cfa -264 + ^ x23: .cfa -256 + ^ x24: .cfa -248 + ^ x25: .cfa -240 + ^ x26: .cfa -232 + ^ x27: .cfa -224 + ^ x28: .cfa -216 + ^ x29: .cfa -304 + ^
+STACK CFI INIT 8bf98 34 .cfa: sp 0 + .ra: x30
+STACK CFI 8bf9c .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8bfa0 .cfa: x29 48 +
+STACK CFI 8bfc8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 8bfcc 4f4 .cfa: sp 0 + .ra: x30
+STACK CFI 8bfd0 .cfa: sp 320 + .ra: .cfa -312 + ^ x29: .cfa -320 + ^
+STACK CFI 8bfd4 .cfa: x29 320 +
+STACK CFI 8bfd8 v10: .cfa -208 + ^ v11: .cfa -200 + ^
+STACK CFI 8bfe0 v14: .cfa -176 + ^ v15: .cfa -168 + ^
+STACK CFI 8bfec v8: .cfa -224 + ^ v9: .cfa -216 + ^ x25: .cfa -256 + ^ x26: .cfa -248 + ^
+STACK CFI 8bff8 v12: .cfa -192 + ^ v13: .cfa -184 + ^ x19: .cfa -304 + ^ x20: .cfa -296 + ^
+STACK CFI 8c014 x21: .cfa -288 + ^ x22: .cfa -280 + ^ x23: .cfa -272 + ^ x24: .cfa -264 + ^ x27: .cfa -240 + ^ x28: .cfa -232 + ^
+STACK CFI 8c0b4 x19: x19 x20: x20
+STACK CFI 8c0b8 v8: v8 v9: v9
+STACK CFI 8c0bc x21: x21 x22: x22
+STACK CFI 8c0c0 v10: v10 v11: v11
+STACK CFI 8c0c4 x23: x23 x24: x24
+STACK CFI 8c0c8 v12: v12 v13: v13
+STACK CFI 8c0cc x25: x25 x26: x26
+STACK CFI 8c0d0 v14: v14 v15: v15
+STACK CFI 8c0d4 x27: x27 x28: x28
+STACK CFI 8c0d8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 8c0dc .cfa: x29 320 + .ra: .cfa -312 + ^ v10: .cfa -208 + ^ v11: .cfa -200 + ^ v12: .cfa -192 + ^ v13: .cfa -184 + ^ v14: .cfa -176 + ^ v15: .cfa -168 + ^ v8: .cfa -224 + ^ v9: .cfa -216 + ^ x19: .cfa -304 + ^ x20: .cfa -296 + ^ x21: .cfa -288 + ^ x22: .cfa -280 + ^ x23: .cfa -272 + ^ x24: .cfa -264 + ^ x25: .cfa -256 + ^ x26: .cfa -248 + ^ x27: .cfa -240 + ^ x28: .cfa -232 + ^ x29: .cfa -320 + ^
+STACK CFI INIT 8c4c0 34 .cfa: sp 0 + .ra: x30
+STACK CFI 8c4c4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8c4c8 .cfa: x29 48 +
+STACK CFI 8c4f0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 8c4f4 5f8 .cfa: sp 0 + .ra: x30
+STACK CFI 8c4f8 .cfa: sp 320 + .ra: .cfa -312 + ^ x29: .cfa -320 + ^
+STACK CFI 8c4fc .cfa: x29 320 +
+STACK CFI 8c500 v8: .cfa -224 + ^ v9: .cfa -216 + ^
+STACK CFI 8c508 v14: .cfa -176 + ^ v15: .cfa -168 + ^
+STACK CFI 8c514 v10: .cfa -208 + ^ v11: .cfa -200 + ^ x25: .cfa -256 + ^ x26: .cfa -248 + ^
+STACK CFI 8c520 v12: .cfa -192 + ^ v13: .cfa -184 + ^ x19: .cfa -304 + ^ x20: .cfa -296 + ^
+STACK CFI 8c53c x21: .cfa -288 + ^ x22: .cfa -280 + ^ x23: .cfa -272 + ^ x24: .cfa -264 + ^ x27: .cfa -240 + ^ x28: .cfa -232 + ^
+STACK CFI 8c5fc x19: x19 x20: x20
+STACK CFI 8c600 v8: v8 v9: v9
+STACK CFI 8c604 x21: x21 x22: x22
+STACK CFI 8c608 v10: v10 v11: v11
+STACK CFI 8c60c x23: x23 x24: x24
+STACK CFI 8c610 v12: v12 v13: v13
+STACK CFI 8c614 x25: x25 x26: x26
+STACK CFI 8c618 v14: v14 v15: v15
+STACK CFI 8c61c x27: x27 x28: x28
+STACK CFI 8c620 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 8c624 .cfa: x29 320 + .ra: .cfa -312 + ^ v10: .cfa -208 + ^ v11: .cfa -200 + ^ v12: .cfa -192 + ^ v13: .cfa -184 + ^ v14: .cfa -176 + ^ v15: .cfa -168 + ^ v8: .cfa -224 + ^ v9: .cfa -216 + ^ x19: .cfa -304 + ^ x20: .cfa -296 + ^ x21: .cfa -288 + ^ x22: .cfa -280 + ^ x23: .cfa -272 + ^ x24: .cfa -264 + ^ x25: .cfa -256 + ^ x26: .cfa -248 + ^ x27: .cfa -240 + ^ x28: .cfa -232 + ^ x29: .cfa -320 + ^
+STACK CFI INIT 8caec 34 .cfa: sp 0 + .ra: x30
+STACK CFI 8caf0 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8caf4 .cfa: x29 48 +
+STACK CFI 8cb1c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 8cb20 a8 .cfa: sp 0 + .ra: x30
+STACK CFI 8cb24 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8cb28 .cfa: x29 80 +
+STACK CFI 8cb8c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 8cb90 .cfa: x29 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8cbb0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 8cbb4 .cfa: x29 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8cbbc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 8cbc0 .cfa: x29 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI INIT 8cbc8 3e4 .cfa: sp 0 + .ra: x30
+STACK CFI 8cbcc .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8cbd0 .cfa: x29 80 +
+STACK CFI 8cbd8 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^
+STACK CFI 8cc98 x19: x19 x20: x20
+STACK CFI 8cc9c x21: x21 x22: x22
+STACK CFI 8cca0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 8cca4 .cfa: x29 80 + .ra: .cfa -72 + ^ x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x29: .cfa -80 + ^
+STACK CFI 8cd48 x19: x19 x20: x20
+STACK CFI 8cd4c x21: x21 x22: x22
+STACK CFI 8cd50 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 8cd54 .cfa: x29 80 + .ra: .cfa -72 + ^ x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x29: .cfa -80 + ^
+STACK CFI 8ce08 x19: x19 x20: x20
+STACK CFI 8ce0c x21: x21 x22: x22
+STACK CFI 8ce10 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 8ce14 .cfa: x29 80 + .ra: .cfa -72 + ^ x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x29: .cfa -80 + ^
+STACK CFI 8ce80 x19: x19 x20: x20
+STACK CFI 8ce84 x21: x21 x22: x22
+STACK CFI 8ce88 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 8ce8c .cfa: x29 80 + .ra: .cfa -72 + ^ x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x29: .cfa -80 + ^
+STACK CFI 8cec0 x19: x19 x20: x20
+STACK CFI 8cec4 x21: x21 x22: x22
+STACK CFI 8cec8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 8cecc .cfa: x29 80 + .ra: .cfa -72 + ^ x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x29: .cfa -80 + ^
+STACK CFI INIT 8cfac 5c4 .cfa: sp 0 + .ra: x30
+STACK CFI 8cfb0 .cfa: sp 320 + .ra: .cfa -312 + ^ x29: .cfa -320 + ^
+STACK CFI 8cfb4 .cfa: x29 320 +
+STACK CFI 8cfb8 v8: .cfa -224 + ^ v9: .cfa -216 + ^
+STACK CFI 8cfc0 v14: .cfa -176 + ^ v15: .cfa -168 + ^
+STACK CFI 8cfcc v10: .cfa -208 + ^ v11: .cfa -200 + ^ x25: .cfa -256 + ^ x26: .cfa -248 + ^
+STACK CFI 8cfd8 v12: .cfa -192 + ^ v13: .cfa -184 + ^ x19: .cfa -304 + ^ x20: .cfa -296 + ^
+STACK CFI 8cff4 x21: .cfa -288 + ^ x22: .cfa -280 + ^ x23: .cfa -272 + ^ x24: .cfa -264 + ^ x27: .cfa -240 + ^ x28: .cfa -232 + ^
+STACK CFI 8d0b4 x19: x19 x20: x20
+STACK CFI 8d0b8 v8: v8 v9: v9
+STACK CFI 8d0bc x21: x21 x22: x22
+STACK CFI 8d0c0 v10: v10 v11: v11
+STACK CFI 8d0c4 x23: x23 x24: x24
+STACK CFI 8d0c8 v12: v12 v13: v13
+STACK CFI 8d0cc x25: x25 x26: x26
+STACK CFI 8d0d0 v14: v14 v15: v15
+STACK CFI 8d0d4 x27: x27 x28: x28
+STACK CFI 8d0d8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 8d0dc .cfa: x29 320 + .ra: .cfa -312 + ^ v10: .cfa -208 + ^ v11: .cfa -200 + ^ v12: .cfa -192 + ^ v13: .cfa -184 + ^ v14: .cfa -176 + ^ v15: .cfa -168 + ^ v8: .cfa -224 + ^ v9: .cfa -216 + ^ x19: .cfa -304 + ^ x20: .cfa -296 + ^ x21: .cfa -288 + ^ x22: .cfa -280 + ^ x23: .cfa -272 + ^ x24: .cfa -264 + ^ x25: .cfa -256 + ^ x26: .cfa -248 + ^ x27: .cfa -240 + ^ x28: .cfa -232 + ^ x29: .cfa -320 + ^
+STACK CFI INIT 8d570 34 .cfa: sp 0 + .ra: x30
+STACK CFI 8d574 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8d578 .cfa: x29 48 +
+STACK CFI 8d5a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 8d5a4 54 .cfa: sp 0 + .ra: x30
+STACK CFI 8d5a8 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8d5ac .cfa: x29 80 +
+STACK CFI 8d5f4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 8d5f8 5dc .cfa: sp 0 + .ra: x30
+STACK CFI 8d5fc .cfa: sp 320 + .ra: .cfa -312 + ^ x29: .cfa -320 + ^
+STACK CFI 8d600 .cfa: x29 320 +
+STACK CFI 8d604 v8: .cfa -224 + ^ v9: .cfa -216 + ^
+STACK CFI 8d60c v14: .cfa -176 + ^ v15: .cfa -168 + ^
+STACK CFI 8d618 v10: .cfa -208 + ^ v11: .cfa -200 + ^ x25: .cfa -256 + ^ x26: .cfa -248 + ^
+STACK CFI 8d624 v12: .cfa -192 + ^ v13: .cfa -184 + ^ x19: .cfa -304 + ^ x20: .cfa -296 + ^
+STACK CFI 8d640 x21: .cfa -288 + ^ x22: .cfa -280 + ^ x23: .cfa -272 + ^ x24: .cfa -264 + ^ x27: .cfa -240 + ^ x28: .cfa -232 + ^
+STACK CFI 8d700 x19: x19 x20: x20
+STACK CFI 8d704 v8: v8 v9: v9
+STACK CFI 8d708 x21: x21 x22: x22
+STACK CFI 8d70c v10: v10 v11: v11
+STACK CFI 8d710 x23: x23 x24: x24
+STACK CFI 8d714 v12: v12 v13: v13
+STACK CFI 8d718 x25: x25 x26: x26
+STACK CFI 8d71c v14: v14 v15: v15
+STACK CFI 8d720 x27: x27 x28: x28
+STACK CFI 8d724 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 8d728 .cfa: x29 320 + .ra: .cfa -312 + ^ v10: .cfa -208 + ^ v11: .cfa -200 + ^ v12: .cfa -192 + ^ v13: .cfa -184 + ^ v14: .cfa -176 + ^ v15: .cfa -168 + ^ v8: .cfa -224 + ^ v9: .cfa -216 + ^ x19: .cfa -304 + ^ x20: .cfa -296 + ^ x21: .cfa -288 + ^ x22: .cfa -280 + ^ x23: .cfa -272 + ^ x24: .cfa -264 + ^ x25: .cfa -256 + ^ x26: .cfa -248 + ^ x27: .cfa -240 + ^ x28: .cfa -232 + ^ x29: .cfa -320 + ^
+STACK CFI INIT 8dbd4 34 .cfa: sp 0 + .ra: x30
+STACK CFI 8dbd8 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8dbdc .cfa: x29 48 +
+STACK CFI 8dc04 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 8dc08 5c4 .cfa: sp 0 + .ra: x30
+STACK CFI 8dc0c .cfa: sp 320 + .ra: .cfa -312 + ^ x29: .cfa -320 + ^
+STACK CFI 8dc10 .cfa: x29 320 +
+STACK CFI 8dc14 v8: .cfa -224 + ^ v9: .cfa -216 + ^
+STACK CFI 8dc1c v14: .cfa -176 + ^ v15: .cfa -168 + ^
+STACK CFI 8dc28 v10: .cfa -208 + ^ v11: .cfa -200 + ^ x25: .cfa -256 + ^ x26: .cfa -248 + ^
+STACK CFI 8dc34 v12: .cfa -192 + ^ v13: .cfa -184 + ^ x19: .cfa -304 + ^ x20: .cfa -296 + ^
+STACK CFI 8dc50 x21: .cfa -288 + ^ x22: .cfa -280 + ^ x23: .cfa -272 + ^ x24: .cfa -264 + ^ x27: .cfa -240 + ^ x28: .cfa -232 + ^
+STACK CFI 8dd10 x19: x19 x20: x20
+STACK CFI 8dd14 v8: v8 v9: v9
+STACK CFI 8dd18 x21: x21 x22: x22
+STACK CFI 8dd1c v10: v10 v11: v11
+STACK CFI 8dd20 x23: x23 x24: x24
+STACK CFI 8dd24 v12: v12 v13: v13
+STACK CFI 8dd28 x25: x25 x26: x26
+STACK CFI 8dd2c v14: v14 v15: v15
+STACK CFI 8dd30 x27: x27 x28: x28
+STACK CFI 8dd34 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 8dd38 .cfa: x29 320 + .ra: .cfa -312 + ^ v10: .cfa -208 + ^ v11: .cfa -200 + ^ v12: .cfa -192 + ^ v13: .cfa -184 + ^ v14: .cfa -176 + ^ v15: .cfa -168 + ^ v8: .cfa -224 + ^ v9: .cfa -216 + ^ x19: .cfa -304 + ^ x20: .cfa -296 + ^ x21: .cfa -288 + ^ x22: .cfa -280 + ^ x23: .cfa -272 + ^ x24: .cfa -264 + ^ x25: .cfa -256 + ^ x26: .cfa -248 + ^ x27: .cfa -240 + ^ x28: .cfa -232 + ^ x29: .cfa -320 + ^
+STACK CFI INIT 8e1cc 34 .cfa: sp 0 + .ra: x30
+STACK CFI 8e1d0 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8e1d4 .cfa: x29 48 +
+STACK CFI 8e1fc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 8e200 4d4 .cfa: sp 0 + .ra: x30
+STACK CFI 8e204 .cfa: sp 320 + .ra: .cfa -312 + ^ x29: .cfa -320 + ^
+STACK CFI 8e208 .cfa: x29 320 +
+STACK CFI 8e20c v10: .cfa -208 + ^ v11: .cfa -200 + ^
+STACK CFI 8e214 v14: .cfa -176 + ^ v15: .cfa -168 + ^
+STACK CFI 8e220 v8: .cfa -224 + ^ v9: .cfa -216 + ^ x25: .cfa -256 + ^ x26: .cfa -248 + ^
+STACK CFI 8e22c v12: .cfa -192 + ^ v13: .cfa -184 + ^ x19: .cfa -304 + ^ x20: .cfa -296 + ^
+STACK CFI 8e248 x21: .cfa -288 + ^ x22: .cfa -280 + ^ x23: .cfa -272 + ^ x24: .cfa -264 + ^ x27: .cfa -240 + ^ x28: .cfa -232 + ^
+STACK CFI 8e2e8 x19: x19 x20: x20
+STACK CFI 8e2ec v8: v8 v9: v9
+STACK CFI 8e2f0 x21: x21 x22: x22
+STACK CFI 8e2f4 v10: v10 v11: v11
+STACK CFI 8e2f8 x23: x23 x24: x24
+STACK CFI 8e2fc v12: v12 v13: v13
+STACK CFI 8e300 x25: x25 x26: x26
+STACK CFI 8e304 v14: v14 v15: v15
+STACK CFI 8e308 x27: x27 x28: x28
+STACK CFI 8e30c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 8e310 .cfa: x29 320 + .ra: .cfa -312 + ^ v10: .cfa -208 + ^ v11: .cfa -200 + ^ v12: .cfa -192 + ^ v13: .cfa -184 + ^ v14: .cfa -176 + ^ v15: .cfa -168 + ^ v8: .cfa -224 + ^ v9: .cfa -216 + ^ x19: .cfa -304 + ^ x20: .cfa -296 + ^ x21: .cfa -288 + ^ x22: .cfa -280 + ^ x23: .cfa -272 + ^ x24: .cfa -264 + ^ x25: .cfa -256 + ^ x26: .cfa -248 + ^ x27: .cfa -240 + ^ x28: .cfa -232 + ^ x29: .cfa -320 + ^
+STACK CFI INIT 8e6d4 34 .cfa: sp 0 + .ra: x30
+STACK CFI 8e6d8 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8e6dc .cfa: x29 48 +
+STACK CFI 8e704 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 8e708 5c0 .cfa: sp 0 + .ra: x30
+STACK CFI 8e70c .cfa: sp 304 + .ra: .cfa -296 + ^ x29: .cfa -304 + ^
+STACK CFI 8e710 .cfa: x29 304 +
+STACK CFI 8e714 v10: .cfa -192 + ^ v11: .cfa -184 + ^
+STACK CFI 8e71c v12: .cfa -176 + ^ v13: .cfa -168 + ^
+STACK CFI 8e728 v8: .cfa -208 + ^ v9: .cfa -200 + ^ x25: .cfa -240 + ^ x26: .cfa -232 + ^
+STACK CFI 8e734 v14: .cfa -160 + ^ v15: .cfa -152 + ^ x19: .cfa -288 + ^ x20: .cfa -280 + ^
+STACK CFI 8e750 x21: .cfa -272 + ^ x22: .cfa -264 + ^ x23: .cfa -256 + ^ x24: .cfa -248 + ^ x27: .cfa -224 + ^ x28: .cfa -216 + ^
+STACK CFI 8e80c x19: x19 x20: x20
+STACK CFI 8e810 v8: v8 v9: v9
+STACK CFI 8e814 x21: x21 x22: x22
+STACK CFI 8e818 v10: v10 v11: v11
+STACK CFI 8e81c x23: x23 x24: x24
+STACK CFI 8e820 v12: v12 v13: v13
+STACK CFI 8e824 x25: x25 x26: x26
+STACK CFI 8e828 v14: v14 v15: v15
+STACK CFI 8e82c x27: x27 x28: x28
+STACK CFI 8e830 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 8e834 .cfa: x29 304 + .ra: .cfa -296 + ^ v10: .cfa -192 + ^ v11: .cfa -184 + ^ v12: .cfa -176 + ^ v13: .cfa -168 + ^ v14: .cfa -160 + ^ v15: .cfa -152 + ^ v8: .cfa -208 + ^ v9: .cfa -200 + ^ x19: .cfa -288 + ^ x20: .cfa -280 + ^ x21: .cfa -272 + ^ x22: .cfa -264 + ^ x23: .cfa -256 + ^ x24: .cfa -248 + ^ x25: .cfa -240 + ^ x26: .cfa -232 + ^ x27: .cfa -224 + ^ x28: .cfa -216 + ^ x29: .cfa -304 + ^
+STACK CFI INIT 8ecc8 34 .cfa: sp 0 + .ra: x30
+STACK CFI 8eccc .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8ecd0 .cfa: x29 48 +
+STACK CFI 8ecf8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 8ecfc 4fc .cfa: sp 0 + .ra: x30
+STACK CFI 8ed00 .cfa: sp 320 + .ra: .cfa -312 + ^ x29: .cfa -320 + ^
+STACK CFI 8ed04 .cfa: x29 320 +
+STACK CFI 8ed08 v10: .cfa -208 + ^ v11: .cfa -200 + ^
+STACK CFI 8ed10 v14: .cfa -176 + ^ v15: .cfa -168 + ^
+STACK CFI 8ed1c v8: .cfa -224 + ^ v9: .cfa -216 + ^ x25: .cfa -256 + ^ x26: .cfa -248 + ^
+STACK CFI 8ed28 v12: .cfa -192 + ^ v13: .cfa -184 + ^ x19: .cfa -304 + ^ x20: .cfa -296 + ^
+STACK CFI 8ed44 x21: .cfa -288 + ^ x22: .cfa -280 + ^ x23: .cfa -272 + ^ x24: .cfa -264 + ^ x27: .cfa -240 + ^ x28: .cfa -232 + ^
+STACK CFI 8ede4 x19: x19 x20: x20
+STACK CFI 8ede8 v8: v8 v9: v9
+STACK CFI 8edec x21: x21 x22: x22
+STACK CFI 8edf0 v10: v10 v11: v11
+STACK CFI 8edf4 x23: x23 x24: x24
+STACK CFI 8edf8 v12: v12 v13: v13
+STACK CFI 8edfc x25: x25 x26: x26
+STACK CFI 8ee00 v14: v14 v15: v15
+STACK CFI 8ee04 x27: x27 x28: x28
+STACK CFI 8ee08 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 8ee0c .cfa: x29 320 + .ra: .cfa -312 + ^ v10: .cfa -208 + ^ v11: .cfa -200 + ^ v12: .cfa -192 + ^ v13: .cfa -184 + ^ v14: .cfa -176 + ^ v15: .cfa -168 + ^ v8: .cfa -224 + ^ v9: .cfa -216 + ^ x19: .cfa -304 + ^ x20: .cfa -296 + ^ x21: .cfa -288 + ^ x22: .cfa -280 + ^ x23: .cfa -272 + ^ x24: .cfa -264 + ^ x25: .cfa -256 + ^ x26: .cfa -248 + ^ x27: .cfa -240 + ^ x28: .cfa -232 + ^ x29: .cfa -320 + ^
+STACK CFI INIT 8f1f8 34 .cfa: sp 0 + .ra: x30
+STACK CFI 8f1fc .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 8f200 .cfa: x29 48 +
+STACK CFI 8f228 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 8f22c a8 .cfa: sp 0 + .ra: x30
+STACK CFI 8f230 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8f234 .cfa: x29 80 +
+STACK CFI 8f298 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 8f29c .cfa: x29 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8f2bc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 8f2c0 .cfa: x29 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 8f2c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 8f2cc .cfa: x29 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI INIT 8f2d4 468 .cfa: sp 0 + .ra: x30
+STACK CFI 8f2d8 .cfa: sp 112 + .ra: .cfa -104 + ^ x29: .cfa -112 + ^
+STACK CFI 8f2e0 .cfa: x29 112 +
+STACK CFI 8f2e8 x19: .cfa -96 + ^ x20: .cfa -88 + ^ x23: .cfa -64 + ^ x24: .cfa -56 + ^
+STACK CFI 8f308 x21: .cfa -80 + ^ x22: .cfa -72 + ^ x25: .cfa -48 + ^ x26: .cfa -40 + ^ x27: .cfa -32 + ^
+STACK CFI 8f48c x19: x19 x20: x20
+STACK CFI 8f490 x21: x21 x22: x22
+STACK CFI 8f494 x23: x23 x24: x24
+STACK CFI 8f498 x25: x25 x26: x26
+STACK CFI 8f49c x27: x27
+STACK CFI 8f4a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 8f4a4 .cfa: x29 112 + .ra: .cfa -104 + ^ x19: .cfa -96 + ^ x20: .cfa -88 + ^ x21: .cfa -80 + ^ x22: .cfa -72 + ^ x23: .cfa -64 + ^ x24: .cfa -56 + ^ x25: .cfa -48 + ^ x26: .cfa -40 + ^ x27: .cfa -32 + ^ x29: .cfa -112 + ^
+STACK CFI INIT 8f73c 220 .cfa: sp 0 + .ra: x30
+STACK CFI 8f740 .cfa: sp 592 +
+STACK CFI 8f744 .cfa: sp 688 + .ra: .cfa -680 + ^ x29: .cfa -688 + ^
+STACK CFI 8f748 .cfa: x29 688 +
+STACK CFI 8f74c x19: .cfa -672 + ^ x20: .cfa -664 + ^
+STACK CFI 8f760 x21: .cfa -656 + ^ x22: .cfa -648 + ^ x23: .cfa -640 + ^ x24: .cfa -632 + ^ x25: .cfa -624 + ^ x26: .cfa -616 + ^
+STACK CFI 8f774 x27: .cfa -608 + ^ x28: .cfa -600 + ^
+STACK CFI 8f8b4 .cfa: sp 688 +
+STACK CFI 8f8c0 x19: x19 x20: x20
+STACK CFI 8f8c4 x21: x21 x22: x22
+STACK CFI 8f8c8 x23: x23 x24: x24
+STACK CFI 8f8cc x25: x25 x26: x26
+STACK CFI 8f8d0 x27: x27 x28: x28
+STACK CFI 8f8d4 .cfa: sp 592 + .ra: .ra x29: x29
+STACK CFI 8f8d8 .cfa: sp 496 +
+STACK CFI 8f8dc .cfa: x29 688 + .ra: .cfa -680 + ^ x19: .cfa -672 + ^ x20: .cfa -664 + ^ x21: .cfa -656 + ^ x22: .cfa -648 + ^ x23: .cfa -640 + ^ x24: .cfa -632 + ^ x25: .cfa -624 + ^ x26: .cfa -616 + ^ x27: .cfa -608 + ^ x28: .cfa -600 + ^ x29: .cfa -688 + ^
+STACK CFI INIT 8f95c 24 .cfa: sp 0 + .ra: x30
+STACK CFI 8f960 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 8f96c .cfa: x29 16 +
+STACK CFI 8f97c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 8f980 220 .cfa: sp 0 + .ra: x30
+STACK CFI 8f984 .cfa: sp 592 +
+STACK CFI 8f988 .cfa: sp 688 + .ra: .cfa -680 + ^ x29: .cfa -688 + ^
+STACK CFI 8f98c .cfa: x29 688 +
+STACK CFI 8f990 x19: .cfa -672 + ^ x20: .cfa -664 + ^
+STACK CFI 8f9a4 x21: .cfa -656 + ^ x22: .cfa -648 + ^ x23: .cfa -640 + ^ x24: .cfa -632 + ^ x25: .cfa -624 + ^ x26: .cfa -616 + ^
+STACK CFI 8f9b8 x27: .cfa -608 + ^ x28: .cfa -600 + ^
+STACK CFI 8faf8 .cfa: sp 688 +
+STACK CFI 8fb04 x19: x19 x20: x20
+STACK CFI 8fb08 x21: x21 x22: x22
+STACK CFI 8fb0c x23: x23 x24: x24
+STACK CFI 8fb10 x25: x25 x26: x26
+STACK CFI 8fb14 x27: x27 x28: x28
+STACK CFI 8fb18 .cfa: sp 592 + .ra: .ra x29: x29
+STACK CFI 8fb1c .cfa: sp 496 +
+STACK CFI 8fb20 .cfa: x29 688 + .ra: .cfa -680 + ^ x19: .cfa -672 + ^ x20: .cfa -664 + ^ x21: .cfa -656 + ^ x22: .cfa -648 + ^ x23: .cfa -640 + ^ x24: .cfa -632 + ^ x25: .cfa -624 + ^ x26: .cfa -616 + ^ x27: .cfa -608 + ^ x28: .cfa -600 + ^ x29: .cfa -688 + ^
+STACK CFI INIT 8fba0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 8fba4 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 8fbb0 .cfa: x29 16 +
+STACK CFI 8fbc0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 8fbc4 4b4 .cfa: sp 0 + .ra: x30
+STACK CFI 8fbc8 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 8fbd0 .cfa: x29 96 +
+STACK CFI 8fbdc x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^
+STACK CFI 8fd34 x23: x23
+STACK CFI 8fd38 x19: x19 x20: x20
+STACK CFI 8fd3c x21: x21 x22: x22
+STACK CFI 8fd40 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 8fd44 .cfa: x29 96 + .ra: .cfa -88 + ^ x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x29: .cfa -96 + ^
+STACK CFI 8ff70 x23: x23
+STACK CFI 8ff78 x19: x19 x20: x20
+STACK CFI 8ff7c x21: x21 x22: x22
+STACK CFI 8ff80 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 8ff84 .cfa: x29 96 + .ra: .cfa -88 + ^ x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x29: .cfa -96 + ^
+STACK CFI INIT 90078 21c .cfa: sp 0 + .ra: x30
+STACK CFI 9007c .cfa: sp 464 +
+STACK CFI 90080 .ra: .cfa -440 + ^ x29: .cfa -448 + ^
+STACK CFI 90084 .cfa: x29 448 +
+STACK CFI 90088 v8: .cfa -352 + ^
+STACK CFI 90090 x23: .cfa -400 + ^ x24: .cfa -392 + ^
+STACK CFI 9009c x19: .cfa -432 + ^ x20: .cfa -424 + ^ x21: .cfa -416 + ^ x22: .cfa -408 + ^
+STACK CFI 900b4 x25: .cfa -384 + ^ x26: .cfa -376 + ^ x27: .cfa -368 + ^ x28: .cfa -360 + ^
+STACK CFI 90200 .cfa: sp 464 +
+STACK CFI 9020c v8: v8
+STACK CFI 90210 x19: x19 x20: x20
+STACK CFI 90214 x21: x21 x22: x22
+STACK CFI 90218 x23: x23 x24: x24
+STACK CFI 9021c x25: x25 x26: x26
+STACK CFI 90220 x27: x27 x28: x28
+STACK CFI 90224 .ra: .ra x29: x29
+STACK CFI 90228 .cfa: sp 0 +
+STACK CFI 9022c .cfa: x29 448 + .ra: .cfa -440 + ^ v8: .cfa -352 + ^ x19: .cfa -432 + ^ x20: .cfa -424 + ^ x21: .cfa -416 + ^ x22: .cfa -408 + ^ x23: .cfa -400 + ^ x24: .cfa -392 + ^ x25: .cfa -384 + ^ x26: .cfa -376 + ^ x27: .cfa -368 + ^ x28: .cfa -360 + ^ x29: .cfa -448 + ^
+STACK CFI INIT 90294 a4 .cfa: sp 0 + .ra: x30
+STACK CFI 90298 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 902a0 .cfa: x29 96 +
+STACK CFI 902a8 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x22: .cfa -64 + ^ x23: .cfa -56 + ^
+STACK CFI 902f4 x19: x19 x20: x20
+STACK CFI 902f8 x22: x22 x23: x23
+STACK CFI 902fc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 90300 .cfa: x29 96 + .ra: .cfa -88 + ^ x19: .cfa -80 + ^ x20: .cfa -72 + ^ x22: .cfa -64 + ^ x23: .cfa -56 + ^ x29: .cfa -96 + ^
+STACK CFI INIT 90338 1e8 .cfa: sp 0 + .ra: x30
+STACK CFI 9033c .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 90340 .cfa: x29 96 +
+STACK CFI 90344 x19: .cfa -80 + ^ x20: .cfa -72 + ^
+STACK CFI 90354 x23: .cfa -48 + ^ x24: .cfa -40 + ^
+STACK CFI 90368 x21: .cfa -64 + ^ x22: .cfa -56 + ^ x25: .cfa -32 + ^ x26: .cfa -24 + ^
+STACK CFI 903e8 x21: x21 x22: x22
+STACK CFI 903ec x19: x19 x20: x20
+STACK CFI 903f0 x23: x23 x24: x24
+STACK CFI 903f4 x25: x25 x26: x26
+STACK CFI 903f8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 903fc .cfa: x29 96 + .ra: .cfa -88 + ^ x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^ x25: .cfa -32 + ^ x26: .cfa -24 + ^ x29: .cfa -96 + ^
+STACK CFI INIT 90520 28 .cfa: sp 0 + .ra: x30
+STACK CFI 90524 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 90530 .cfa: x29 16 +
+STACK CFI 90544 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 90548 a8 .cfa: sp 0 + .ra: x30
+STACK CFI 9054c .cfa: sp 112 + .ra: .cfa -104 + ^ x29: .cfa -112 + ^
+STACK CFI 90554 .cfa: x29 112 +
+STACK CFI 90560 x19: .cfa -96 + ^ x20: .cfa -88 + ^ x21: .cfa -80 + ^ x22: .cfa -72 + ^ x23: .cfa -64 + ^
+STACK CFI 905b0 x23: x23
+STACK CFI 905b4 x19: x19 x20: x20
+STACK CFI 905b8 x21: x21 x22: x22
+STACK CFI 905bc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 905c0 .cfa: x29 112 + .ra: .cfa -104 + ^ x19: .cfa -96 + ^ x20: .cfa -88 + ^ x21: .cfa -80 + ^ x22: .cfa -72 + ^ x23: .cfa -64 + ^ x29: .cfa -112 + ^
+STACK CFI INIT 905f0 6c .cfa: sp 0 + .ra: x30
+STACK CFI 905f4 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 905fc .cfa: x29 96 +
+STACK CFI 90600 x22: .cfa -64 + ^ x23: .cfa -56 + ^
+STACK CFI 90614 x19: .cfa -80 + ^ x20: .cfa -72 + ^
+STACK CFI 90650 x19: x19 x20: x20
+STACK CFI 90654 x22: x22 x23: x23
+STACK CFI 90658 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9065c 6c .cfa: sp 0 + .ra: x30
+STACK CFI 90660 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 90668 .cfa: x29 96 +
+STACK CFI 9066c x22: .cfa -64 + ^ x23: .cfa -56 + ^
+STACK CFI 90680 x19: .cfa -80 + ^ x20: .cfa -72 + ^
+STACK CFI 906bc x19: x19 x20: x20
+STACK CFI 906c0 x22: x22 x23: x23
+STACK CFI 906c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 906c8 550 .cfa: sp 0 + .ra: x30
+STACK CFI 906cc .cfa: sp 128 + .ra: .cfa -120 + ^ x29: .cfa -128 + ^
+STACK CFI 906d0 .cfa: x29 128 +
+STACK CFI 906e0 x19: .cfa -112 + ^ x20: .cfa -104 + ^ x21: .cfa -96 + ^ x22: .cfa -88 + ^ x23: .cfa -80 + ^ x24: .cfa -72 + ^ x25: .cfa -64 + ^
+STACK CFI 90740 x25: x25
+STACK CFI 9074c x19: x19 x20: x20
+STACK CFI 90750 x21: x21 x22: x22
+STACK CFI 90754 x23: x23 x24: x24
+STACK CFI 90758 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9075c .cfa: x29 128 + .ra: .cfa -120 + ^ x19: .cfa -112 + ^ x20: .cfa -104 + ^ x21: .cfa -96 + ^ x22: .cfa -88 + ^ x23: .cfa -80 + ^ x24: .cfa -72 + ^ x25: .cfa -64 + ^ x29: .cfa -128 + ^
+STACK CFI INIT 90c18 4d8 .cfa: sp 0 + .ra: x30
+STACK CFI 90c1c .cfa: sp 144 + .ra: .cfa -136 + ^ x29: .cfa -144 + ^
+STACK CFI 90c20 .cfa: x29 144 +
+STACK CFI 90c28 x19: .cfa -128 + ^ x20: .cfa -120 + ^ x27: .cfa -64 + ^ x28: .cfa -56 + ^
+STACK CFI 90c44 x21: .cfa -112 + ^ x22: .cfa -104 + ^ x23: .cfa -96 + ^ x24: .cfa -88 + ^ x25: .cfa -80 + ^ x26: .cfa -72 + ^
+STACK CFI 90d50 x19: x19 x20: x20
+STACK CFI 90d54 x21: x21 x22: x22
+STACK CFI 90d58 x23: x23 x24: x24
+STACK CFI 90d5c x25: x25 x26: x26
+STACK CFI 90d60 x27: x27 x28: x28
+STACK CFI 90d64 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 90d68 .cfa: x29 144 + .ra: .cfa -136 + ^ x19: .cfa -128 + ^ x20: .cfa -120 + ^ x21: .cfa -112 + ^ x22: .cfa -104 + ^ x23: .cfa -96 + ^ x24: .cfa -88 + ^ x25: .cfa -80 + ^ x26: .cfa -72 + ^ x27: .cfa -64 + ^ x28: .cfa -56 + ^ x29: .cfa -144 + ^
+STACK CFI INIT 910f0 2bc .cfa: sp 0 + .ra: x30
+STACK CFI 910f4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 910f8 .cfa: x29 64 +
+STACK CFI 91108 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 91148 x21: x21 x22: x22
+STACK CFI 91154 x23: x23
+STACK CFI 91158 x19: x19 x20: x20
+STACK CFI 9115c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 91160 .cfa: x29 64 + .ra: .cfa -56 + ^ x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^ x29: .cfa -64 + ^
+STACK CFI INIT 913ac 844 .cfa: sp 0 + .ra: x30
+STACK CFI 913b0 .cfa: sp 384 + .ra: .cfa -376 + ^ x29: .cfa -384 + ^
+STACK CFI 913b4 .cfa: x29 384 +
+STACK CFI 913bc v12: .cfa -256 + ^ v13: .cfa -248 + ^ x21: .cfa -352 + ^ x22: .cfa -344 + ^
+STACK CFI 913cc v8: .cfa -288 + ^ v9: .cfa -280 + ^ x19: .cfa -368 + ^ x20: .cfa -360 + ^
+STACK CFI 91400 v10: .cfa -272 + ^ v11: .cfa -264 + ^ v14: .cfa -240 + ^ v15: .cfa -232 + ^ x23: .cfa -336 + ^ x24: .cfa -328 + ^ x25: .cfa -320 + ^ x26: .cfa -312 + ^ x27: .cfa -304 + ^ x28: .cfa -296 + ^
+STACK CFI 91618 v8: v8 v9: v9
+STACK CFI 9161c x19: x19 x20: x20
+STACK CFI 91620 v10: v10 v11: v11
+STACK CFI 91624 x21: x21 x22: x22
+STACK CFI 91628 v12: v12 v13: v13
+STACK CFI 9162c x23: x23 x24: x24
+STACK CFI 91630 v14: v14 v15: v15
+STACK CFI 91634 x25: x25 x26: x26
+STACK CFI 91638 x27: x27 x28: x28
+STACK CFI 9163c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 91640 .cfa: x29 384 + .ra: .cfa -376 + ^ v10: .cfa -272 + ^ v11: .cfa -264 + ^ v12: .cfa -256 + ^ v13: .cfa -248 + ^ v14: .cfa -240 + ^ v15: .cfa -232 + ^ v8: .cfa -288 + ^ v9: .cfa -280 + ^ x19: .cfa -368 + ^ x20: .cfa -360 + ^ x21: .cfa -352 + ^ x22: .cfa -344 + ^ x23: .cfa -336 + ^ x24: .cfa -328 + ^ x25: .cfa -320 + ^ x26: .cfa -312 + ^ x27: .cfa -304 + ^ x28: .cfa -296 + ^ x29: .cfa -384 + ^
+STACK CFI INIT 91bf0 2a0 .cfa: sp 0 + .ra: x30
+STACK CFI 91bf4 .cfa: sp 592 +
+STACK CFI 91bf8 .cfa: sp 688 + .ra: .cfa -680 + ^ x29: .cfa -688 + ^
+STACK CFI 91bfc .cfa: x29 688 +
+STACK CFI 91c00 x23: .cfa -640 + ^ x24: .cfa -632 + ^
+STACK CFI 91c10 x19: .cfa -672 + ^ x20: .cfa -664 + ^ x21: .cfa -656 + ^ x22: .cfa -648 + ^ x27: .cfa -608 + ^
+STACK CFI 91c24 x25: .cfa -624 + ^ x26: .cfa -616 + ^
+STACK CFI 91d30 x27: x27
+STACK CFI 91d3c x19: x19 x20: x20
+STACK CFI 91d40 x21: x21 x22: x22
+STACK CFI 91d44 x23: x23 x24: x24
+STACK CFI 91d48 x25: x25 x26: x26
+STACK CFI 91d4c .cfa: sp 592 + .ra: .ra x29: x29
+STACK CFI 91d50 .cfa: sp 496 +
+STACK CFI 91d54 .cfa: x29 688 + .ra: .cfa -680 + ^ x19: .cfa -672 + ^ x20: .cfa -664 + ^ x21: .cfa -656 + ^ x22: .cfa -648 + ^ x23: .cfa -640 + ^ x24: .cfa -632 + ^ x25: .cfa -624 + ^ x26: .cfa -616 + ^ x27: .cfa -608 + ^ x29: .cfa -688 + ^
+STACK CFI INIT 91e90 34 .cfa: sp 0 + .ra: x30
+STACK CFI 91e94 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 91e98 .cfa: x29 48 +
+STACK CFI 91ec0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 91ec4 2a0 .cfa: sp 0 + .ra: x30
+STACK CFI 91ec8 .cfa: sp 592 +
+STACK CFI 91ecc .cfa: sp 688 + .ra: .cfa -680 + ^ x29: .cfa -688 + ^
+STACK CFI 91ed0 .cfa: x29 688 +
+STACK CFI 91ed4 x23: .cfa -640 + ^ x24: .cfa -632 + ^
+STACK CFI 91ee4 x19: .cfa -672 + ^ x20: .cfa -664 + ^ x21: .cfa -656 + ^ x22: .cfa -648 + ^ x27: .cfa -608 + ^
+STACK CFI 91ef8 x25: .cfa -624 + ^ x26: .cfa -616 + ^
+STACK CFI 92004 x27: x27
+STACK CFI 92010 x19: x19 x20: x20
+STACK CFI 92014 x21: x21 x22: x22
+STACK CFI 92018 x23: x23 x24: x24
+STACK CFI 9201c x25: x25 x26: x26
+STACK CFI 92020 .cfa: sp 592 + .ra: .ra x29: x29
+STACK CFI 92024 .cfa: sp 496 +
+STACK CFI 92028 .cfa: x29 688 + .ra: .cfa -680 + ^ x19: .cfa -672 + ^ x20: .cfa -664 + ^ x21: .cfa -656 + ^ x22: .cfa -648 + ^ x23: .cfa -640 + ^ x24: .cfa -632 + ^ x25: .cfa -624 + ^ x26: .cfa -616 + ^ x27: .cfa -608 + ^ x29: .cfa -688 + ^
+STACK CFI INIT 92164 34 .cfa: sp 0 + .ra: x30
+STACK CFI 92168 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 9216c .cfa: x29 48 +
+STACK CFI 92194 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 92198 2a0 .cfa: sp 0 + .ra: x30
+STACK CFI 9219c .cfa: sp 592 +
+STACK CFI 921a0 .cfa: sp 688 + .ra: .cfa -680 + ^ x29: .cfa -688 + ^
+STACK CFI 921a4 .cfa: x29 688 +
+STACK CFI 921a8 x23: .cfa -640 + ^ x24: .cfa -632 + ^
+STACK CFI 921b8 x19: .cfa -672 + ^ x20: .cfa -664 + ^ x21: .cfa -656 + ^ x22: .cfa -648 + ^ x27: .cfa -608 + ^
+STACK CFI 921cc x25: .cfa -624 + ^ x26: .cfa -616 + ^
+STACK CFI 922d8 x27: x27
+STACK CFI 922e4 x19: x19 x20: x20
+STACK CFI 922e8 x21: x21 x22: x22
+STACK CFI 922ec x23: x23 x24: x24
+STACK CFI 922f0 x25: x25 x26: x26
+STACK CFI 922f4 .cfa: sp 592 + .ra: .ra x29: x29
+STACK CFI 922f8 .cfa: sp 496 +
+STACK CFI 922fc .cfa: x29 688 + .ra: .cfa -680 + ^ x19: .cfa -672 + ^ x20: .cfa -664 + ^ x21: .cfa -656 + ^ x22: .cfa -648 + ^ x23: .cfa -640 + ^ x24: .cfa -632 + ^ x25: .cfa -624 + ^ x26: .cfa -616 + ^ x27: .cfa -608 + ^ x29: .cfa -688 + ^
+STACK CFI INIT 92438 34 .cfa: sp 0 + .ra: x30
+STACK CFI 9243c .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 92440 .cfa: x29 48 +
+STACK CFI 92468 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9246c 4f4 .cfa: sp 0 + .ra: x30
+STACK CFI 92470 .cfa: sp 128 + .ra: .cfa -120 + ^ x29: .cfa -128 + ^
+STACK CFI 92474 .cfa: x29 128 +
+STACK CFI 92488 x19: .cfa -112 + ^ x20: .cfa -104 + ^ x21: .cfa -96 + ^ x22: .cfa -88 + ^ x23: .cfa -80 + ^ x24: .cfa -72 + ^ x25: .cfa -64 + ^ x26: .cfa -56 + ^ x27: .cfa -48 + ^
+STACK CFI 924f4 x27: x27
+STACK CFI 92500 x19: x19 x20: x20
+STACK CFI 92504 x21: x21 x22: x22
+STACK CFI 92508 x23: x23 x24: x24
+STACK CFI 9250c x25: x25 x26: x26
+STACK CFI 92510 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 92514 .cfa: x29 128 + .ra: .cfa -120 + ^ x19: .cfa -112 + ^ x20: .cfa -104 + ^ x21: .cfa -96 + ^ x22: .cfa -88 + ^ x23: .cfa -80 + ^ x24: .cfa -72 + ^ x25: .cfa -64 + ^ x26: .cfa -56 + ^ x27: .cfa -48 + ^ x29: .cfa -128 + ^
+STACK CFI INIT 92960 7b8 .cfa: sp 0 + .ra: x30
+STACK CFI 92964 .cfa: sp 304 + .ra: .cfa -296 + ^ x29: .cfa -304 + ^
+STACK CFI 92968 .cfa: x29 304 +
+STACK CFI 92974 v8: .cfa -208 + ^ v9: .cfa -200 + ^ x19: .cfa -288 + ^ x20: .cfa -280 + ^
+STACK CFI 92984 v10: .cfa -192 + ^ v11: .cfa -184 + ^ v12: .cfa -176 + ^ v13: .cfa -168 + ^
+STACK CFI 929a0 x21: .cfa -272 + ^ x22: .cfa -264 + ^ x23: .cfa -256 + ^ x24: .cfa -248 + ^
+STACK CFI 929b4 v14: .cfa -160 + ^ x25: .cfa -240 + ^ x26: .cfa -232 + ^ x27: .cfa -224 + ^ x28: .cfa -216 + ^
+STACK CFI 92bcc v8: v8 v9: v9
+STACK CFI 92bd0 x19: x19 x20: x20
+STACK CFI 92bd4 v10: v10 v11: v11
+STACK CFI 92bd8 x21: x21 x22: x22
+STACK CFI 92bdc v12: v12 v13: v13
+STACK CFI 92be0 x23: x23 x24: x24
+STACK CFI 92be4 x25: x25 x26: x26
+STACK CFI 92be8 x27: x27 x28: x28
+STACK CFI 92bec v14: v14
+STACK CFI 92bf0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 92bf4 .cfa: x29 304 + .ra: .cfa -296 + ^ v10: .cfa -192 + ^ v11: .cfa -184 + ^ v12: .cfa -176 + ^ v13: .cfa -168 + ^ v14: .cfa -160 + ^ v8: .cfa -208 + ^ v9: .cfa -200 + ^ x19: .cfa -288 + ^ x20: .cfa -280 + ^ x21: .cfa -272 + ^ x22: .cfa -264 + ^ x23: .cfa -256 + ^ x24: .cfa -248 + ^ x25: .cfa -240 + ^ x26: .cfa -232 + ^ x27: .cfa -224 + ^ x28: .cfa -216 + ^ x29: .cfa -304 + ^
+STACK CFI INIT 93118 298 .cfa: sp 0 + .ra: x30
+STACK CFI 9311c .cfa: sp 592 +
+STACK CFI 93120 .cfa: sp 688 + .ra: .cfa -680 + ^ x29: .cfa -688 + ^
+STACK CFI 93124 .cfa: x29 688 +
+STACK CFI 93128 x23: .cfa -640 + ^ x24: .cfa -632 + ^
+STACK CFI 93138 x19: .cfa -672 + ^ x20: .cfa -664 + ^ x21: .cfa -656 + ^ x22: .cfa -648 + ^ x27: .cfa -608 + ^
+STACK CFI 9314c x25: .cfa -624 + ^ x26: .cfa -616 + ^
+STACK CFI 93258 x27: x27
+STACK CFI 93264 x19: x19 x20: x20
+STACK CFI 93268 x21: x21 x22: x22
+STACK CFI 9326c x23: x23 x24: x24
+STACK CFI 93270 x25: x25 x26: x26
+STACK CFI 93274 .cfa: sp 592 + .ra: .ra x29: x29
+STACK CFI 93278 .cfa: sp 496 +
+STACK CFI 9327c .cfa: x29 688 + .ra: .cfa -680 + ^ x19: .cfa -672 + ^ x20: .cfa -664 + ^ x21: .cfa -656 + ^ x22: .cfa -648 + ^ x23: .cfa -640 + ^ x24: .cfa -632 + ^ x25: .cfa -624 + ^ x26: .cfa -616 + ^ x27: .cfa -608 + ^ x29: .cfa -688 + ^
+STACK CFI INIT 933b0 34 .cfa: sp 0 + .ra: x30
+STACK CFI 933b4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 933b8 .cfa: x29 48 +
+STACK CFI 933e0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 933e4 298 .cfa: sp 0 + .ra: x30
+STACK CFI 933e8 .cfa: sp 592 +
+STACK CFI 933ec .cfa: sp 688 + .ra: .cfa -680 + ^ x29: .cfa -688 + ^
+STACK CFI 933f0 .cfa: x29 688 +
+STACK CFI 933f4 x23: .cfa -640 + ^ x24: .cfa -632 + ^
+STACK CFI 93404 x19: .cfa -672 + ^ x20: .cfa -664 + ^ x21: .cfa -656 + ^ x22: .cfa -648 + ^ x27: .cfa -608 + ^
+STACK CFI 93418 x25: .cfa -624 + ^ x26: .cfa -616 + ^
+STACK CFI 93524 x27: x27
+STACK CFI 93530 x19: x19 x20: x20
+STACK CFI 93534 x21: x21 x22: x22
+STACK CFI 93538 x23: x23 x24: x24
+STACK CFI 9353c x25: x25 x26: x26
+STACK CFI 93540 .cfa: sp 592 + .ra: .ra x29: x29
+STACK CFI 93544 .cfa: sp 496 +
+STACK CFI 93548 .cfa: x29 688 + .ra: .cfa -680 + ^ x19: .cfa -672 + ^ x20: .cfa -664 + ^ x21: .cfa -656 + ^ x22: .cfa -648 + ^ x23: .cfa -640 + ^ x24: .cfa -632 + ^ x25: .cfa -624 + ^ x26: .cfa -616 + ^ x27: .cfa -608 + ^ x29: .cfa -688 + ^
+STACK CFI INIT 9367c 34 .cfa: sp 0 + .ra: x30
+STACK CFI 93680 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 93684 .cfa: x29 48 +
+STACK CFI 936ac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 936b0 298 .cfa: sp 0 + .ra: x30
+STACK CFI 936b4 .cfa: sp 592 +
+STACK CFI 936b8 .cfa: sp 688 + .ra: .cfa -680 + ^ x29: .cfa -688 + ^
+STACK CFI 936bc .cfa: x29 688 +
+STACK CFI 936c0 x23: .cfa -640 + ^ x24: .cfa -632 + ^
+STACK CFI 936d0 x19: .cfa -672 + ^ x20: .cfa -664 + ^ x21: .cfa -656 + ^ x22: .cfa -648 + ^ x27: .cfa -608 + ^
+STACK CFI 936e4 x25: .cfa -624 + ^ x26: .cfa -616 + ^
+STACK CFI 937f0 x27: x27
+STACK CFI 937fc x19: x19 x20: x20
+STACK CFI 93800 x21: x21 x22: x22
+STACK CFI 93804 x23: x23 x24: x24
+STACK CFI 93808 x25: x25 x26: x26
+STACK CFI 9380c .cfa: sp 592 + .ra: .ra x29: x29
+STACK CFI 93810 .cfa: sp 496 +
+STACK CFI 93814 .cfa: x29 688 + .ra: .cfa -680 + ^ x19: .cfa -672 + ^ x20: .cfa -664 + ^ x21: .cfa -656 + ^ x22: .cfa -648 + ^ x23: .cfa -640 + ^ x24: .cfa -632 + ^ x25: .cfa -624 + ^ x26: .cfa -616 + ^ x27: .cfa -608 + ^ x29: .cfa -688 + ^
+STACK CFI INIT 93948 34 .cfa: sp 0 + .ra: x30
+STACK CFI 9394c .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 93950 .cfa: x29 48 +
+STACK CFI 93978 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9397c 4c8 .cfa: sp 0 + .ra: x30
+STACK CFI 93980 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 9398c .cfa: x29 80 +
+STACK CFI 93998 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^
+STACK CFI 93adc x19: x19 x20: x20
+STACK CFI 93ae0 x21: x21 x22: x22
+STACK CFI 93ae4 x23: x23 x24: x24
+STACK CFI 93ae8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 93aec .cfa: x29 80 + .ra: .cfa -72 + ^ x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^ x29: .cfa -80 + ^
+STACK CFI INIT 93e44 1e8 .cfa: sp 0 + .ra: x30
+STACK CFI 93e48 .cfa: sp 240 +
+STACK CFI 93e4c .ra: .cfa -216 + ^ x29: .cfa -224 + ^
+STACK CFI 93e50 .cfa: x29 224 +
+STACK CFI 93e54 x23: .cfa -176 + ^ x24: .cfa -168 + ^
+STACK CFI 93e64 v8: .cfa -128 + ^
+STACK CFI 93e6c x19: .cfa -208 + ^ x20: .cfa -200 + ^
+STACK CFI 93e88 x21: .cfa -192 + ^ x22: .cfa -184 + ^ x25: .cfa -160 + ^ x26: .cfa -152 + ^ x27: .cfa -144 + ^ x28: .cfa -136 + ^
+STACK CFI 93f84 .cfa: sp 240 +
+STACK CFI 93f90 v8: v8
+STACK CFI 93f94 x19: x19 x20: x20
+STACK CFI 93f98 x21: x21 x22: x22
+STACK CFI 93f9c x23: x23 x24: x24
+STACK CFI 93fa0 x25: x25 x26: x26
+STACK CFI 93fa4 x27: x27 x28: x28
+STACK CFI 93fa8 .ra: .ra x29: x29
+STACK CFI 93fac .cfa: sp 0 +
+STACK CFI 93fb0 .cfa: x29 224 + .ra: .cfa -216 + ^ v8: .cfa -128 + ^ x19: .cfa -208 + ^ x20: .cfa -200 + ^ x21: .cfa -192 + ^ x22: .cfa -184 + ^ x23: .cfa -176 + ^ x24: .cfa -168 + ^ x25: .cfa -160 + ^ x26: .cfa -152 + ^ x27: .cfa -144 + ^ x28: .cfa -136 + ^ x29: .cfa -224 + ^
+STACK CFI INIT 9402c a4 .cfa: sp 0 + .ra: x30
+STACK CFI 94030 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 94038 .cfa: x29 96 +
+STACK CFI 94040 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x22: .cfa -64 + ^ x23: .cfa -56 + ^
+STACK CFI 9408c x19: x19 x20: x20
+STACK CFI 94090 x22: x22 x23: x23
+STACK CFI 94094 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 94098 .cfa: x29 96 + .ra: .cfa -88 + ^ x19: .cfa -80 + ^ x20: .cfa -72 + ^ x22: .cfa -64 + ^ x23: .cfa -56 + ^ x29: .cfa -96 + ^
+STACK CFI INIT 940d0 1fc .cfa: sp 0 + .ra: x30
+STACK CFI 940d4 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 940d8 .cfa: x29 96 +
+STACK CFI 940dc x19: .cfa -80 + ^ x20: .cfa -72 + ^
+STACK CFI 940ec x23: .cfa -48 + ^ x24: .cfa -40 + ^
+STACK CFI 94100 x21: .cfa -64 + ^ x22: .cfa -56 + ^ x25: .cfa -32 + ^ x26: .cfa -24 + ^
+STACK CFI 94180 x21: x21 x22: x22
+STACK CFI 94184 x19: x19 x20: x20
+STACK CFI 94188 x23: x23 x24: x24
+STACK CFI 9418c x25: x25 x26: x26
+STACK CFI 94190 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 94194 .cfa: x29 96 + .ra: .cfa -88 + ^ x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^ x25: .cfa -32 + ^ x26: .cfa -24 + ^ x29: .cfa -96 + ^
+STACK CFI INIT 942cc 28 .cfa: sp 0 + .ra: x30
+STACK CFI 942d0 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 942dc .cfa: x29 16 +
+STACK CFI 942f0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 942f4 a8 .cfa: sp 0 + .ra: x30
+STACK CFI 942f8 .cfa: sp 112 + .ra: .cfa -104 + ^ x29: .cfa -112 + ^
+STACK CFI 94300 .cfa: x29 112 +
+STACK CFI 9430c x19: .cfa -96 + ^ x20: .cfa -88 + ^ x21: .cfa -80 + ^ x22: .cfa -72 + ^ x23: .cfa -64 + ^
+STACK CFI 9435c x23: x23
+STACK CFI 94360 x19: x19 x20: x20
+STACK CFI 94364 x21: x21 x22: x22
+STACK CFI 94368 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9436c .cfa: x29 112 + .ra: .cfa -104 + ^ x19: .cfa -96 + ^ x20: .cfa -88 + ^ x21: .cfa -80 + ^ x22: .cfa -72 + ^ x23: .cfa -64 + ^ x29: .cfa -112 + ^
+STACK CFI INIT 9439c 70 .cfa: sp 0 + .ra: x30
+STACK CFI 943a0 .cfa: sp 112 + .ra: .cfa -104 + ^ x29: .cfa -112 + ^
+STACK CFI 943a4 .cfa: x29 112 +
+STACK CFI 943a8 x23: .cfa -64 + ^
+STACK CFI 943b8 x19: .cfa -96 + ^ x20: .cfa -88 + ^
+STACK CFI 943c4 x21: .cfa -80 + ^ x22: .cfa -72 + ^
+STACK CFI 943fc x23: x23
+STACK CFI 94400 x19: x19 x20: x20
+STACK CFI 94404 x21: x21 x22: x22
+STACK CFI 94408 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9440c 70 .cfa: sp 0 + .ra: x30
+STACK CFI 94410 .cfa: sp 112 + .ra: .cfa -104 + ^ x29: .cfa -112 + ^
+STACK CFI 94414 .cfa: x29 112 +
+STACK CFI 94418 x23: .cfa -64 + ^
+STACK CFI 94428 x19: .cfa -96 + ^ x20: .cfa -88 + ^
+STACK CFI 94434 x21: .cfa -80 + ^ x22: .cfa -72 + ^
+STACK CFI 9446c x23: x23
+STACK CFI 94470 x19: x19 x20: x20
+STACK CFI 94474 x21: x21 x22: x22
+STACK CFI 94478 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9447c 420 .cfa: sp 0 + .ra: x30
+STACK CFI 94480 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 94488 .cfa: x29 96 +
+STACK CFI 94494 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^
+STACK CFI 94598 x19: x19 x20: x20
+STACK CFI 9459c x21: x21 x22: x22
+STACK CFI 945a0 x23: x23 x24: x24
+STACK CFI 945a4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 945a8 .cfa: x29 96 + .ra: .cfa -88 + ^ x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^ x29: .cfa -96 + ^
+STACK CFI 947b4 x21: x21 x22: x22
+STACK CFI 947b8 x19: x19 x20: x20
+STACK CFI 947bc x23: x23 x24: x24
+STACK CFI 947c0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 947c4 .cfa: x29 96 + .ra: .cfa -88 + ^ x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^ x29: .cfa -96 + ^
+STACK CFI INIT 9489c 1d0 .cfa: sp 0 + .ra: x30
+STACK CFI 948a0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 948a8 .cfa: x29 64 +
+STACK CFI 948b0 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 949d8 x19: x19 x20: x20
+STACK CFI 949dc x21: x21 x22: x22
+STACK CFI 949e0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 949e4 .cfa: x29 64 + .ra: .cfa -56 + ^ x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x29: .cfa -64 + ^
+STACK CFI 94a24 x19: x19 x20: x20
+STACK CFI 94a28 x21: x21 x22: x22
+STACK CFI 94a2c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 94a30 .cfa: x29 64 + .ra: .cfa -56 + ^ x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x29: .cfa -64 + ^
+STACK CFI INIT 94a6c 4c4 .cfa: sp 0 + .ra: x30
+STACK CFI 94a70 .cfa: sp 368 + .ra: .cfa -360 + ^ x29: .cfa -368 + ^
+STACK CFI 94a74 .cfa: x29 368 +
+STACK CFI 94a7c x21: .cfa -336 + ^ x22: .cfa -328 + ^ x25: .cfa -304 + ^ x26: .cfa -296 + ^
+STACK CFI 94a94 x23: .cfa -320 + ^ x24: .cfa -312 + ^
+STACK CFI 94aa4 x19: .cfa -352 + ^ x20: .cfa -344 + ^ x27: .cfa -288 + ^
+STACK CFI 94afc x27: x27
+STACK CFI 94b00 x19: x19 x20: x20
+STACK CFI 94b04 x21: x21 x22: x22
+STACK CFI 94b08 x23: x23 x24: x24
+STACK CFI 94b0c x25: x25 x26: x26
+STACK CFI 94b10 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 94b14 .cfa: x29 368 + .ra: .cfa -360 + ^ x19: .cfa -352 + ^ x20: .cfa -344 + ^ x21: .cfa -336 + ^ x22: .cfa -328 + ^ x23: .cfa -320 + ^ x24: .cfa -312 + ^ x25: .cfa -304 + ^ x26: .cfa -296 + ^ x27: .cfa -288 + ^ x29: .cfa -368 + ^
+STACK CFI 94ca8 x27: x27
+STACK CFI 94cb0 x19: x19 x20: x20
+STACK CFI 94cc0 x21: x21 x22: x22
+STACK CFI 94cc4 x23: x23 x24: x24
+STACK CFI 94cc8 x25: x25 x26: x26
+STACK CFI 94ccc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 94cd0 .cfa: x29 368 + .ra: .cfa -360 + ^ x19: .cfa -352 + ^ x20: .cfa -344 + ^ x21: .cfa -336 + ^ x22: .cfa -328 + ^ x23: .cfa -320 + ^ x24: .cfa -312 + ^ x25: .cfa -304 + ^ x26: .cfa -296 + ^ x27: .cfa -288 + ^ x29: .cfa -368 + ^
+STACK CFI 94e48 x27: x27
+STACK CFI 94e4c x19: x19 x20: x20
+STACK CFI 94e64 x21: x21 x22: x22
+STACK CFI 94e68 x23: x23 x24: x24
+STACK CFI 94e6c x25: x25 x26: x26
+STACK CFI 94e70 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 94e74 .cfa: x29 368 + .ra: .cfa -360 + ^ x19: .cfa -352 + ^ x20: .cfa -344 + ^ x21: .cfa -336 + ^ x22: .cfa -328 + ^ x23: .cfa -320 + ^ x24: .cfa -312 + ^ x25: .cfa -304 + ^ x26: .cfa -296 + ^ x27: .cfa -288 + ^ x29: .cfa -368 + ^
+STACK CFI INIT 94f30 7f4 .cfa: sp 0 + .ra: x30
+STACK CFI 94f34 .cfa: sp 304 + .ra: .cfa -296 + ^ x29: .cfa -304 + ^
+STACK CFI 94f38 .cfa: x29 304 +
+STACK CFI 94f44 v10: .cfa -192 + ^ v11: .cfa -184 + ^ v8: .cfa -208 + ^ v9: .cfa -200 + ^
+STACK CFI 94f68 x19: .cfa -288 + ^ x20: .cfa -280 + ^ x21: .cfa -272 + ^ x22: .cfa -264 + ^ x23: .cfa -256 + ^ x24: .cfa -248 + ^ x25: .cfa -240 + ^ x26: .cfa -232 + ^ x27: .cfa -224 + ^ x28: .cfa -216 + ^
+STACK CFI 94fc0 v8: v8 v9: v9
+STACK CFI 94fc4 x19: x19 x20: x20
+STACK CFI 94fc8 v10: v10 v11: v11
+STACK CFI 94fcc x21: x21 x22: x22
+STACK CFI 94fd0 x23: x23 x24: x24
+STACK CFI 94fd4 x25: x25 x26: x26
+STACK CFI 94fd8 x27: x27 x28: x28
+STACK CFI 94fdc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 94fe0 .cfa: x29 304 + .ra: .cfa -296 + ^ v10: .cfa -192 + ^ v11: .cfa -184 + ^ v8: .cfa -208 + ^ v9: .cfa -200 + ^ x19: .cfa -288 + ^ x20: .cfa -280 + ^ x21: .cfa -272 + ^ x22: .cfa -264 + ^ x23: .cfa -256 + ^ x24: .cfa -248 + ^ x25: .cfa -240 + ^ x26: .cfa -232 + ^ x27: .cfa -224 + ^ x28: .cfa -216 + ^ x29: .cfa -304 + ^
+STACK CFI INIT 95724 b48 .cfa: sp 0 + .ra: x30
+STACK CFI 95728 .cfa: sp 672 +
+STACK CFI 9572c .cfa: sp 832 + .ra: .cfa -824 + ^ x29: .cfa -832 + ^
+STACK CFI 95730 .cfa: x29 832 +
+STACK CFI 95738 v8: .cfa -736 + ^ v9: .cfa -728 + ^ x19: .cfa -816 + ^ x20: .cfa -808 + ^
+STACK CFI 95764 v10: .cfa -720 + ^ v11: .cfa -712 + ^ v12: .cfa -704 + ^ v13: .cfa -696 + ^ v14: .cfa -688 + ^ v15: .cfa -680 + ^ x21: .cfa -800 + ^ x22: .cfa -792 + ^ x23: .cfa -784 + ^ x24: .cfa -776 + ^ x25: .cfa -768 + ^ x26: .cfa -760 + ^ x27: .cfa -752 + ^ x28: .cfa -744 + ^
+STACK CFI 957a4 .cfa: sp 832 +
+STACK CFI 957b0 v8: v8 v9: v9
+STACK CFI 957b4 x19: x19 x20: x20
+STACK CFI 957b8 v10: v10 v11: v11
+STACK CFI 957bc x21: x21 x22: x22
+STACK CFI 957c0 v12: v12 v13: v13
+STACK CFI 957c4 x23: x23 x24: x24
+STACK CFI 957c8 v14: v14 v15: v15
+STACK CFI 957cc x25: x25 x26: x26
+STACK CFI 957d0 x27: x27 x28: x28
+STACK CFI 957d4 .cfa: sp 672 + .ra: .ra x29: x29
+STACK CFI 957d8 .cfa: sp 512 +
+STACK CFI 957dc .cfa: x29 832 + .ra: .cfa -824 + ^ v10: .cfa -720 + ^ v11: .cfa -712 + ^ v12: .cfa -704 + ^ v13: .cfa -696 + ^ v14: .cfa -688 + ^ v15: .cfa -680 + ^ v8: .cfa -736 + ^ v9: .cfa -728 + ^ x19: .cfa -816 + ^ x20: .cfa -808 + ^ x21: .cfa -800 + ^ x22: .cfa -792 + ^ x23: .cfa -784 + ^ x24: .cfa -776 + ^ x25: .cfa -768 + ^ x26: .cfa -760 + ^ x27: .cfa -752 + ^ x28: .cfa -744 + ^ x29: .cfa -832 + ^
+STACK CFI INIT 9626c 54 .cfa: sp 0 + .ra: x30
+STACK CFI 96270 .cfa: sp 48 +
+STACK CFI 96288 .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 9628c .cfa: x29 32 +
+STACK CFI 962b4 .cfa: sp 48 +
+STACK CFI 962b8 .ra: .ra x29: x29
+STACK CFI 962bc .cfa: sp 0 +
+STACK CFI INIT 962c0 154 .cfa: sp 0 + .ra: x30
+STACK CFI 962c4 .cfa: sp 256 +
+STACK CFI 962d0 .ra: .cfa -232 + ^ x29: .cfa -240 + ^
+STACK CFI 962d4 .cfa: x29 240 +
+STACK CFI 962dc x19: .cfa -224 + ^ x20: .cfa -216 + ^
+STACK CFI 962f0 x21: .cfa -208 + ^
+STACK CFI 9639c .cfa: sp 256 +
+STACK CFI 963a8 x19: x19 x20: x20
+STACK CFI 963ac x21: x21
+STACK CFI 963b0 .ra: .ra x29: x29
+STACK CFI 963b4 .cfa: sp 0 +
+STACK CFI 963b8 .cfa: x29 240 + .ra: .cfa -232 + ^ x19: .cfa -224 + ^ x20: .cfa -216 + ^ x21: .cfa -208 + ^ x29: .cfa -240 + ^
+STACK CFI INIT 96414 504 .cfa: sp 0 + .ra: x30
+STACK CFI 96418 .cfa: sp 144 + .ra: .cfa -136 + ^ x29: .cfa -144 + ^
+STACK CFI 9641c .cfa: x29 144 +
+STACK CFI 96420 x19: .cfa -128 + ^ x20: .cfa -120 + ^
+STACK CFI 9642c x21: .cfa -112 + ^ x22: .cfa -104 + ^
+STACK CFI 96434 x23: .cfa -96 + ^
+STACK CFI 9665c x23: x23
+STACK CFI 96660 x19: x19 x20: x20
+STACK CFI 96664 x21: x21 x22: x22
+STACK CFI 96668 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9666c .cfa: x29 144 + .ra: .cfa -136 + ^ x19: .cfa -128 + ^ x20: .cfa -120 + ^ x21: .cfa -112 + ^ x22: .cfa -104 + ^ x23: .cfa -96 + ^ x29: .cfa -144 + ^
+STACK CFI 966a0 x21: x21 x22: x22
+STACK CFI 966ac x23: x23
+STACK CFI 966b4 x19: x19 x20: x20
+STACK CFI 966b8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 966bc .cfa: x29 144 + .ra: .cfa -136 + ^ x19: .cfa -128 + ^ x20: .cfa -120 + ^ x21: .cfa -112 + ^ x22: .cfa -104 + ^ x23: .cfa -96 + ^ x29: .cfa -144 + ^
+STACK CFI 96870 x23: x23
+STACK CFI 96880 x19: x19 x20: x20
+STACK CFI 96884 x21: x21 x22: x22
+STACK CFI 96888 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9688c .cfa: x29 144 + .ra: .cfa -136 + ^ x19: .cfa -128 + ^ x20: .cfa -120 + ^ x21: .cfa -112 + ^ x22: .cfa -104 + ^ x23: .cfa -96 + ^ x29: .cfa -144 + ^
+STACK CFI INIT 96918 7cc .cfa: sp 0 + .ra: x30
+STACK CFI 9691c .cfa: sp 272 + .ra: .cfa -264 + ^ x29: .cfa -272 + ^
+STACK CFI 96920 .cfa: x29 272 +
+STACK CFI 96938 v8: .cfa -176 + ^ v9: .cfa -168 + ^ x19: .cfa -256 + ^ x20: .cfa -248 + ^
+STACK CFI 96958 x21: .cfa -240 + ^ x22: .cfa -232 + ^ x23: .cfa -224 + ^ x24: .cfa -216 + ^ x25: .cfa -208 + ^ x26: .cfa -200 + ^ x27: .cfa -192 + ^ x28: .cfa -184 + ^
+STACK CFI 96994 x19: x19 x20: x20
+STACK CFI 96998 v8: v8 v9: v9
+STACK CFI 9699c x21: x21 x22: x22
+STACK CFI 969a0 x23: x23 x24: x24
+STACK CFI 969a4 x25: x25 x26: x26
+STACK CFI 969a8 x27: x27 x28: x28
+STACK CFI 969ac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 969b0 .cfa: x29 272 + .ra: .cfa -264 + ^ v8: .cfa -176 + ^ v9: .cfa -168 + ^ x19: .cfa -256 + ^ x20: .cfa -248 + ^ x21: .cfa -240 + ^ x22: .cfa -232 + ^ x23: .cfa -224 + ^ x24: .cfa -216 + ^ x25: .cfa -208 + ^ x26: .cfa -200 + ^ x27: .cfa -192 + ^ x28: .cfa -184 + ^ x29: .cfa -272 + ^
+STACK CFI 96dfc x19: x19 x20: x20
+STACK CFI 96e00 v8: v8 v9: v9
+STACK CFI 96e04 x21: x21 x22: x22
+STACK CFI 96e08 x23: x23 x24: x24
+STACK CFI 96e0c x25: x25 x26: x26
+STACK CFI 96e10 x27: x27 x28: x28
+STACK CFI 96e14 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 96e18 .cfa: x29 272 + .ra: .cfa -264 + ^ v8: .cfa -176 + ^ v9: .cfa -168 + ^ x19: .cfa -256 + ^ x20: .cfa -248 + ^ x21: .cfa -240 + ^ x22: .cfa -232 + ^ x23: .cfa -224 + ^ x24: .cfa -216 + ^ x25: .cfa -208 + ^ x26: .cfa -200 + ^ x27: .cfa -192 + ^ x28: .cfa -184 + ^ x29: .cfa -272 + ^
+STACK CFI INIT 970e4 a44 .cfa: sp 0 + .ra: x30
+STACK CFI 970e8 .cfa: sp 464 +
+STACK CFI 970ec .ra: .cfa -440 + ^ x29: .cfa -448 + ^
+STACK CFI 970f0 .cfa: x29 448 +
+STACK CFI 970f8 v8: .cfa -352 + ^ v9: .cfa -344 + ^ x19: .cfa -432 + ^ x20: .cfa -424 + ^
+STACK CFI 97118 v10: .cfa -336 + ^ v11: .cfa -328 + ^ v12: .cfa -320 + ^ v13: .cfa -312 + ^ v14: .cfa -304 + ^ v15: .cfa -296 + ^ x21: .cfa -416 + ^ x22: .cfa -408 + ^ x23: .cfa -400 + ^ x24: .cfa -392 + ^ x25: .cfa -384 + ^ x26: .cfa -376 + ^ x27: .cfa -368 + ^ x28: .cfa -360 + ^
+STACK CFI 97160 .cfa: sp 464 +
+STACK CFI 9716c v8: v8 v9: v9
+STACK CFI 97170 x19: x19 x20: x20
+STACK CFI 97174 v10: v10 v11: v11
+STACK CFI 97178 x21: x21 x22: x22
+STACK CFI 9717c v12: v12 v13: v13
+STACK CFI 97180 x23: x23 x24: x24
+STACK CFI 97184 v14: v14 v15: v15
+STACK CFI 97188 x25: x25 x26: x26
+STACK CFI 9718c x27: x27 x28: x28
+STACK CFI 97190 .ra: .ra x29: x29
+STACK CFI 97194 .cfa: sp 0 +
+STACK CFI 97198 .cfa: x29 448 + .ra: .cfa -440 + ^ v10: .cfa -336 + ^ v11: .cfa -328 + ^ v12: .cfa -320 + ^ v13: .cfa -312 + ^ v14: .cfa -304 + ^ v15: .cfa -296 + ^ v8: .cfa -352 + ^ v9: .cfa -344 + ^ x19: .cfa -432 + ^ x20: .cfa -424 + ^ x21: .cfa -416 + ^ x22: .cfa -408 + ^ x23: .cfa -400 + ^ x24: .cfa -392 + ^ x25: .cfa -384 + ^ x26: .cfa -376 + ^ x27: .cfa -368 + ^ x28: .cfa -360 + ^ x29: .cfa -448 + ^
+STACK CFI INIT 97b28 54 .cfa: sp 0 + .ra: x30
+STACK CFI 97b2c .cfa: sp 48 +
+STACK CFI 97b44 .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 97b48 .cfa: x29 32 +
+STACK CFI 97b70 .cfa: sp 48 +
+STACK CFI 97b74 .ra: .ra x29: x29
+STACK CFI 97b78 .cfa: sp 0 +
+STACK CFI INIT 97b7c 154 .cfa: sp 0 + .ra: x30
+STACK CFI 97b80 .cfa: sp 160 +
+STACK CFI 97b8c .ra: .cfa -136 + ^ x29: .cfa -144 + ^
+STACK CFI 97b90 .cfa: x29 144 +
+STACK CFI 97b98 x19: .cfa -128 + ^ x20: .cfa -120 + ^
+STACK CFI 97bac x21: .cfa -112 + ^
+STACK CFI 97c5c .cfa: sp 160 +
+STACK CFI 97c68 x19: x19 x20: x20
+STACK CFI 97c6c x21: x21
+STACK CFI 97c70 .ra: .ra x29: x29
+STACK CFI 97c74 .cfa: sp 0 +
+STACK CFI 97c78 .cfa: x29 144 + .ra: .cfa -136 + ^ x19: .cfa -128 + ^ x20: .cfa -120 + ^ x21: .cfa -112 + ^ x29: .cfa -144 + ^
+STACK CFI INIT 2342c 38 .cfa: sp 0 + .ra: x30
+STACK CFI 23430 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 23438 .cfa: x29 32 +
+STACK CFI 23458 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 20898 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 97cd0 84 .cfa: sp 0 + .ra: x30
+STACK CFI 97cd4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 97ce0 .cfa: x29 48 +
+STACK CFI 97ce4 x19: .cfa -32 + ^
+STACK CFI 97d08 x19: x19
+STACK CFI 97d0c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 97d10 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 97d44 x19: x19
+STACK CFI 97d48 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 97d4c .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI INIT 97d54 9c .cfa: sp 0 + .ra: x30
+STACK CFI 97d58 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 97d5c .cfa: x29 48 +
+STACK CFI 97d60 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 97d68 x21: .cfa -16 + ^
+STACK CFI 97db4 x19: x19 x20: x20
+STACK CFI 97db8 x21: x21
+STACK CFI 97dbc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 97dc0 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x29: .cfa -48 + ^
+STACK CFI INIT 97df0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 97df4 58 .cfa: sp 0 + .ra: x30
+STACK CFI 97df8 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 97e00 .cfa: x29 48 +
+STACK CFI 97e04 x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 97e10 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 97e40 x19: x19 x20: x20
+STACK CFI 97e44 x21: x21 x22: x22
+STACK CFI 97e48 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 97e4c 1d0 .cfa: sp 0 + .ra: x30
+STACK CFI 97e50 .cfa: sp 112 + .ra: .cfa -104 + ^ x29: .cfa -112 + ^
+STACK CFI 97e54 .cfa: x29 112 +
+STACK CFI 97e60 x21: .cfa -80 + ^ x22: .cfa -72 + ^ x23: .cfa -64 + ^ x24: .cfa -56 + ^ x25: .cfa -48 + ^ x26: .cfa -40 + ^
+STACK CFI 97e88 x19: .cfa -96 + ^ x20: .cfa -88 + ^ x27: .cfa -32 + ^
+STACK CFI 97f20 x19: x19 x20: x20
+STACK CFI 97f24 x21: x21 x22: x22
+STACK CFI 97f28 x23: x23 x24: x24
+STACK CFI 97f2c x25: x25 x26: x26
+STACK CFI 97f30 x27: x27
+STACK CFI 97f34 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 97f38 .cfa: x29 112 + .ra: .cfa -104 + ^ x19: .cfa -96 + ^ x20: .cfa -88 + ^ x21: .cfa -80 + ^ x22: .cfa -72 + ^ x23: .cfa -64 + ^ x24: .cfa -56 + ^ x25: .cfa -48 + ^ x26: .cfa -40 + ^ x27: .cfa -32 + ^ x29: .cfa -112 + ^
+STACK CFI 97f40 x27: x27
+STACK CFI 97f48 x19: x19 x20: x20
+STACK CFI 97f4c x23: x23 x24: x24
+STACK CFI 97f50 x25: x25 x26: x26
+STACK CFI 97f60 x21: x21 x22: x22
+STACK CFI 97f64 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 97f68 .cfa: x29 112 + .ra: .cfa -104 + ^ x19: .cfa -96 + ^ x20: .cfa -88 + ^ x21: .cfa -80 + ^ x22: .cfa -72 + ^ x23: .cfa -64 + ^ x24: .cfa -56 + ^ x25: .cfa -48 + ^ x26: .cfa -40 + ^ x27: .cfa -32 + ^ x29: .cfa -112 + ^
+STACK CFI INIT 9801c 84 .cfa: sp 0 + .ra: x30
+STACK CFI 98020 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 98028 .cfa: x29 48 +
+STACK CFI 98030 x19: .cfa -32 + ^
+STACK CFI 98098 x19: x19
+STACK CFI 9809c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 980a0 b4 .cfa: sp 0 + .ra: x30
+STACK CFI 980a4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 980a8 .cfa: x29 64 +
+STACK CFI 980ac x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 980b8 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x23: .cfa -16 + ^
+STACK CFI 98100 x23: x23
+STACK CFI 98108 x19: x19 x20: x20
+STACK CFI 9810c x21: x21 x22: x22
+STACK CFI 98110 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 98114 .cfa: x29 64 + .ra: .cfa -56 + ^ x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^ x29: .cfa -64 + ^
+STACK CFI 9812c x23: x23
+STACK CFI 98134 x19: x19 x20: x20
+STACK CFI 98138 x21: x21 x22: x22
+STACK CFI 9813c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 98140 .cfa: x29 64 + .ra: .cfa -56 + ^ x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^ x29: .cfa -64 + ^
+STACK CFI INIT 98154 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 98158 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 23464 40 .cfa: sp 0 + .ra: x30
+STACK CFI 23468 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 23470 .cfa: x29 32 +
+STACK CFI 23474 x19: .cfa -16 + ^
+STACK CFI 23490 x19: x19
+STACK CFI 23498 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9815c 124 .cfa: sp 0 + .ra: x30
+STACK CFI 98160 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 98164 .cfa: x29 48 +
+STACK CFI 98168 x21: .cfa -16 + ^
+STACK CFI 98170 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 98268 x21: x21
+STACK CFI 9826c x19: x19 x20: x20
+STACK CFI 98270 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 98280 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 208b4 28 .cfa: sp 0 + .ra: x30
+STACK CFI 208b8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 208bc .cfa: x29 32 +
+STACK CFI INIT 98284 1d0 .cfa: sp 0 + .ra: x30
+STACK CFI 98288 .cfa: sp 112 + .ra: .cfa -104 + ^ x29: .cfa -112 + ^
+STACK CFI 9828c .cfa: x29 112 +
+STACK CFI 9829c x19: .cfa -96 + ^ x20: .cfa -88 + ^ x21: .cfa -80 + ^ x22: .cfa -72 + ^ x23: .cfa -64 + ^ x24: .cfa -56 + ^ x25: .cfa -48 + ^ x26: .cfa -40 + ^
+STACK CFI INIT 98454 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9845c 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9846c 30 .cfa: sp 0 + .ra: x30
+STACK CFI 98470 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 98478 .cfa: x29 32 +
+STACK CFI 9847c x19: .cfa -16 + ^
+STACK CFI 98494 x19: x19
+STACK CFI 98498 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9849c 50 .cfa: sp 0 + .ra: x30
+STACK CFI 984a0 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 984a4 .cfa: x29 48 +
+STACK CFI 984a8 x19: .cfa -32 + ^
+STACK CFI 984e4 x19: x19
+STACK CFI 984e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 984ec 50 .cfa: sp 0 + .ra: x30
+STACK CFI 984f0 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 984f4 .cfa: x29 48 +
+STACK CFI 984f8 x19: .cfa -32 + ^
+STACK CFI 98534 x19: x19
+STACK CFI 98538 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9853c 64 .cfa: sp 0 + .ra: x30
+STACK CFI 98540 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 98548 .cfa: x29 32 +
+STACK CFI 9854c x19: .cfa -16 + ^
+STACK CFI 98598 x19: x19
+STACK CFI 9859c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 985a0 c0 .cfa: sp 0 + .ra: x30
+STACK CFI 985a4 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 985a8 .cfa: x29 96 +
+STACK CFI 985b0 x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^
+STACK CFI 98634 x19: x19 x20: x20
+STACK CFI 98638 x21: x21 x22: x22
+STACK CFI 9863c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 98640 .cfa: x29 96 + .ra: .cfa -88 + ^ x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x29: .cfa -96 + ^
+STACK CFI 98654 x21: x21 x22: x22
+STACK CFI 98658 x19: x19 x20: x20
+STACK CFI 9865c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 98660 30 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 98690 48 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 986d8 1b8 .cfa: sp 0 + .ra: x30
+STACK CFI 986dc .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 986e0 .cfa: x29 48 +
+STACK CFI 986e4 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 98790 x19: x19 x20: x20
+STACK CFI 98794 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 98798 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x29: .cfa -48 + ^
+STACK CFI 98888 x19: x19 x20: x20
+STACK CFI 9888c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 98890 184 .cfa: sp 0 + .ra: x30
+STACK CFI 98894 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 98898 .cfa: x29 64 +
+STACK CFI 988a0 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 988b4 x23: .cfa -16 + ^ x24: .cfa -8 + ^
+STACK CFI 98960 x21: x21 x22: x22
+STACK CFI 98964 x19: x19 x20: x20
+STACK CFI 98968 x23: x23 x24: x24
+STACK CFI 9896c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 98970 .cfa: x29 64 + .ra: .cfa -56 + ^ x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^ x24: .cfa -8 + ^ x29: .cfa -64 + ^
+STACK CFI 989b0 x21: x21 x22: x22
+STACK CFI 989b4 x19: x19 x20: x20
+STACK CFI 989b8 x23: x23 x24: x24
+STACK CFI 989bc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 989c0 .cfa: x29 64 + .ra: .cfa -56 + ^ x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^ x24: .cfa -8 + ^ x29: .cfa -64 + ^
+STACK CFI 989d0 x21: x21 x22: x22
+STACK CFI 989d4 x19: x19 x20: x20
+STACK CFI 989d8 x23: x23 x24: x24
+STACK CFI 989dc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 989e0 .cfa: x29 64 + .ra: .cfa -56 + ^ x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^ x24: .cfa -8 + ^ x29: .cfa -64 + ^
+STACK CFI INIT 98a14 158 .cfa: sp 0 + .ra: x30
+STACK CFI 98a18 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 98a1c .cfa: x29 80 +
+STACK CFI 98a2c x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^ x25: .cfa -16 + ^
+STACK CFI 98ae8 x19: x19 x20: x20
+STACK CFI 98aec x21: x21 x22: x22
+STACK CFI 98af0 x23: x23 x24: x24
+STACK CFI 98af4 x25: x25
+STACK CFI 98af8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 98afc .cfa: x29 80 + .ra: .cfa -72 + ^ x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^ x25: .cfa -16 + ^ x29: .cfa -80 + ^
+STACK CFI 98b30 x25: x25
+STACK CFI 98b34 x19: x19 x20: x20
+STACK CFI 98b38 x21: x21 x22: x22
+STACK CFI 98b3c x23: x23 x24: x24
+STACK CFI 98b40 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 98b44 .cfa: x29 80 + .ra: .cfa -72 + ^ x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^ x25: .cfa -16 + ^ x29: .cfa -80 + ^
+STACK CFI INIT 98b6c 124 .cfa: sp 0 + .ra: x30
+STACK CFI 98b70 .cfa: sp 128 + .ra: .cfa -120 + ^ x29: .cfa -128 + ^
+STACK CFI 98b74 .cfa: x29 128 +
+STACK CFI 98b78 x19: .cfa -112 + ^ x20: .cfa -104 + ^
+STACK CFI 98b8c x21: .cfa -96 + ^ x22: .cfa -88 + ^ x23: .cfa -80 + ^ x24: .cfa -72 + ^
+STACK CFI 98b94 x25: .cfa -64 + ^
+STACK CFI 98be4 x19: x19 x20: x20
+STACK CFI 98be8 x21: x21 x22: x22
+STACK CFI 98bec x23: x23 x24: x24
+STACK CFI 98bf0 x25: x25
+STACK CFI 98bf4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 98bf8 .cfa: x29 128 + .ra: .cfa -120 + ^ x19: .cfa -112 + ^ x20: .cfa -104 + ^ x21: .cfa -96 + ^ x22: .cfa -88 + ^ x23: .cfa -80 + ^ x24: .cfa -72 + ^ x25: .cfa -64 + ^ x29: .cfa -128 + ^
+STACK CFI 98c64 x25: x25
+STACK CFI 98c68 x19: x19 x20: x20
+STACK CFI 98c6c x21: x21 x22: x22
+STACK CFI 98c70 x23: x23 x24: x24
+STACK CFI 98c74 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 98c78 .cfa: x29 128 + .ra: .cfa -120 + ^ x19: .cfa -112 + ^ x20: .cfa -104 + ^ x21: .cfa -96 + ^ x22: .cfa -88 + ^ x23: .cfa -80 + ^ x24: .cfa -72 + ^ x25: .cfa -64 + ^ x29: .cfa -128 + ^
+STACK CFI INIT 98c90 94 .cfa: sp 0 + .ra: x30
+STACK CFI 98c94 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 98c98 .cfa: x29 48 +
+STACK CFI 98c9c x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 98ca4 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 98cf4 x19: x19 x20: x20
+STACK CFI 98cf8 x21: x21 x22: x22
+STACK CFI 98cfc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 98d00 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^ x29: .cfa -48 + ^
+STACK CFI 98d18 x19: x19 x20: x20
+STACK CFI 98d1c x21: x21 x22: x22
+STACK CFI 98d20 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 98d24 48 .cfa: sp 0 + .ra: x30
+STACK CFI 98d28 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 98d2c .cfa: x29 32 +
+STACK CFI 98d30 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 98d64 x19: x19 x20: x20
+STACK CFI 98d68 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 98d6c 44 .cfa: sp 0 + .ra: x30
+STACK CFI 98d70 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 98d74 .cfa: x29 32 +
+STACK CFI 98d78 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 98da8 x19: x19 x20: x20
+STACK CFI 98dac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 98db0 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 98db8 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 98dc8 30 .cfa: sp 0 + .ra: x30
+STACK CFI 98dcc .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 98dd4 .cfa: x29 32 +
+STACK CFI 98dd8 x19: .cfa -16 + ^
+STACK CFI 98df0 x19: x19
+STACK CFI 98df4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 98df8 270 .cfa: sp 0 + .ra: x30
+STACK CFI 98dfc .cfa: sp 144 + .ra: .cfa -136 + ^ x29: .cfa -144 + ^
+STACK CFI 98e00 .cfa: x29 144 +
+STACK CFI 98e14 x19: .cfa -128 + ^ x20: .cfa -120 + ^ x21: .cfa -112 + ^ x22: .cfa -104 + ^ x23: .cfa -96 + ^ x24: .cfa -88 + ^ x25: .cfa -80 + ^ x26: .cfa -72 + ^ x27: .cfa -64 + ^ x28: .cfa -56 + ^
+STACK CFI 98f34 x19: x19 x20: x20
+STACK CFI 98f38 x21: x21 x22: x22
+STACK CFI 98f3c x23: x23 x24: x24
+STACK CFI 98f40 x25: x25 x26: x26
+STACK CFI 98f44 x27: x27 x28: x28
+STACK CFI 98f48 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 98f4c .cfa: x29 144 + .ra: .cfa -136 + ^ x19: .cfa -128 + ^ x20: .cfa -120 + ^ x21: .cfa -112 + ^ x22: .cfa -104 + ^ x23: .cfa -96 + ^ x24: .cfa -88 + ^ x25: .cfa -80 + ^ x26: .cfa -72 + ^ x27: .cfa -64 + ^ x28: .cfa -56 + ^ x29: .cfa -144 + ^
+STACK CFI 98fac x19: x19 x20: x20
+STACK CFI 98fb0 x21: x21 x22: x22
+STACK CFI 98fb4 x23: x23 x24: x24
+STACK CFI 98fb8 x25: x25 x26: x26
+STACK CFI 98fbc x27: x27 x28: x28
+STACK CFI 98fc0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 98fc4 .cfa: x29 144 + .ra: .cfa -136 + ^ x19: .cfa -128 + ^ x20: .cfa -120 + ^ x21: .cfa -112 + ^ x22: .cfa -104 + ^ x23: .cfa -96 + ^ x24: .cfa -88 + ^ x25: .cfa -80 + ^ x26: .cfa -72 + ^ x27: .cfa -64 + ^ x28: .cfa -56 + ^ x29: .cfa -144 + ^
+STACK CFI INIT 99068 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 99070 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 99078 60 .cfa: sp 0 + .ra: x30
+STACK CFI 9907c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 99084 .cfa: x29 32 +
+STACK CFI 99088 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 990ac x19: x19 x20: x20
+STACK CFI 990b4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 990b8 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x20: .cfa -8 + ^ x29: .cfa -32 + ^
+STACK CFI INIT 990d8 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 990e8 30 .cfa: sp 0 + .ra: x30
+STACK CFI 990ec .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 990f4 .cfa: x29 32 +
+STACK CFI 990f8 x19: .cfa -16 + ^
+STACK CFI 99110 x19: x19
+STACK CFI 99114 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 99118 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 99128 30 .cfa: sp 0 + .ra: x30
+STACK CFI 9912c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 99134 .cfa: x29 32 +
+STACK CFI 99138 x19: .cfa -16 + ^
+STACK CFI 99150 x19: x19
+STACK CFI 99154 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 99158 24 .cfa: sp 0 + .ra: x30
+STACK CFI 9915c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 99160 .cfa: x29 32 +
+STACK CFI 99164 x19: .cfa -16 + ^
+STACK CFI 99174 x19: x19
+STACK CFI 99178 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9917c 20 .cfa: sp 0 + .ra: x30
+STACK CFI 99180 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI 99184 .cfa: x29 16 +
+STACK CFI 99198 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9919c 50 .cfa: sp 0 + .ra: x30
+STACK CFI 991a0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 991a8 .cfa: x29 32 +
+STACK CFI 991ac x19: .cfa -16 + ^
+STACK CFI 991cc x19: x19
+STACK CFI 991d0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 991d4 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI 991e4 x19: x19
+STACK CFI 991e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 991ec 7c .cfa: sp 0 + .ra: x30
+STACK CFI 991f0 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 991f8 .cfa: x29 48 +
+STACK CFI 991fc x19: .cfa -32 + ^
+STACK CFI 9921c x19: x19
+STACK CFI 99220 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 99224 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI 99248 x19: x19
+STACK CFI 99254 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 99258 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x29: .cfa -48 + ^
+STACK CFI INIT 99268 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 99270 3c .cfa: sp 0 + .ra: x30
+STACK CFI 99274 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 99278 .cfa: x29 32 +
+STACK CFI 9927c x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 992a4 x19: x19 x20: x20
+STACK CFI 992a8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 992ac 4c .cfa: sp 0 + .ra: x30
+STACK CFI 992b0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 992b4 .cfa: x29 64 +
+STACK CFI 992bc x19: .cfa -48 + ^
+STACK CFI 992f0 x19: x19
+STACK CFI 992f4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 992f8 3c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 99334 80 .cfa: sp 0 + .ra: x30
+STACK CFI 99338 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 99344 .cfa: x29 32 +
+STACK CFI 99348 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 99358 x19: x19 x20: x20
+STACK CFI 9935c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 99360 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x20: .cfa -8 + ^ x29: .cfa -32 + ^
+STACK CFI 9937c x19: x19 x20: x20
+STACK CFI 99380 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 99384 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x20: .cfa -8 + ^ x29: .cfa -32 + ^
+STACK CFI 993ac x19: x19 x20: x20
+STACK CFI 993b0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 993b4 60 .cfa: sp 0 + .ra: x30
+STACK CFI 993b8 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 993c0 .cfa: x29 48 +
+STACK CFI 993c4 x19: .cfa -32 + ^
+STACK CFI 9940c x19: x19
+STACK CFI 99410 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 99414 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 99424 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9942c 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 99434 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9943c c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 99448 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 99458 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 99468 1f4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9965c 1f0 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9984c c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 99858 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 99860 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 99868 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 99878 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 99880 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 99894 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 998a8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 998ac .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 998b0 .cfa: x29 32 +
+STACK CFI 998b4 x19: .cfa -16 + ^
+STACK CFI 998c4 x19: x19
+STACK CFI 998c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 998cc 24 .cfa: sp 0 + .ra: x30
+STACK CFI 998d0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 998d4 .cfa: x29 32 +
+STACK CFI 998d8 x19: .cfa -16 + ^
+STACK CFI 998e8 x19: x19
+STACK CFI 998ec .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 998f0 24 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 99914 5c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 99970 24 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 99994 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 999a8 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 999bc 24 .cfa: sp 0 + .ra: x30
+STACK CFI 999c0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 999c4 .cfa: x29 32 +
+STACK CFI 999c8 x19: .cfa -16 + ^
+STACK CFI 999d8 x19: x19
+STACK CFI 999dc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 999e0 24 .cfa: sp 0 + .ra: x30
+STACK CFI 999e4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 999e8 .cfa: x29 32 +
+STACK CFI 999ec x19: .cfa -16 + ^
+STACK CFI 999fc x19: x19
+STACK CFI 99a00 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 99a04 48 .cfa: sp 0 + .ra: x30
+STACK CFI 99a08 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 99a10 .cfa: x29 32 +
+STACK CFI 99a14 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI 99a44 x19: x19 x20: x20
+STACK CFI 99a48 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 99a4c f4 .cfa: sp 0 + .ra: x30
+STACK CFI 99a50 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 99a54 .cfa: x29 64 +
+STACK CFI 99a58 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 99a64 x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 99abc x19: x19 x20: x20
+STACK CFI 99ac0 x21: x21 x22: x22
+STACK CFI 99ac4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 99ac8 .cfa: x29 64 + .ra: .cfa -56 + ^ x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x29: .cfa -64 + ^
+STACK CFI INIT 99b40 108 .cfa: sp 0 + .ra: x30
+STACK CFI 99b44 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 99b4c .cfa: x29 64 +
+STACK CFI 99b50 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 99b5c x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 99bbc x21: x21 x22: x22
+STACK CFI 99bc0 x19: x19 x20: x20
+STACK CFI 99bc4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 99bc8 .cfa: x29 64 + .ra: .cfa -56 + ^ x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x29: .cfa -64 + ^
+STACK CFI INIT 99c48 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 99c5c 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 99c70 2c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 99c9c 2c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 99cc8 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 99cd0 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 99cd8 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 99cf4 34 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 99d28 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 99d44 34 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 99d78 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 99d80 208 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 99f88 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 99f9c 30 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 99fcc 44 .cfa: sp 0 + .ra: x30
+STACK CFI 99fd0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 99fd8 .cfa: x29 32 +
+STACK CFI 99fdc x19: .cfa -16 + ^
+STACK CFI 9a008 x19: x19
+STACK CFI 9a00c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9a010 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9a024 24 .cfa: sp 0 + .ra: x30
+STACK CFI 9a028 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 9a02c .cfa: x29 32 +
+STACK CFI 9a030 x19: .cfa -16 + ^
+STACK CFI 9a040 x19: x19
+STACK CFI 9a044 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9a048 24 .cfa: sp 0 + .ra: x30
+STACK CFI 9a04c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 9a050 .cfa: x29 32 +
+STACK CFI 9a054 x19: .cfa -16 + ^
+STACK CFI 9a064 x19: x19
+STACK CFI 9a068 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9a06c 30 .cfa: sp 0 + .ra: x30
+STACK CFI 9a070 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 9a074 .cfa: x29 32 +
+STACK CFI 9a078 x19: .cfa -16 + ^
+STACK CFI 9a094 x19: x19
+STACK CFI 9a098 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9a09c 30 .cfa: sp 0 + .ra: x30
+STACK CFI 9a0a0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 9a0a4 .cfa: x29 32 +
+STACK CFI 9a0a8 x19: .cfa -16 + ^
+STACK CFI 9a0c4 x19: x19
+STACK CFI 9a0c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9a0cc c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9a0d8 40 .cfa: sp 0 + .ra: x30
+STACK CFI 9a0dc .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 9a0e0 .cfa: x29 32 +
+STACK CFI 9a114 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9a118 5c .cfa: sp 0 + .ra: x30
+STACK CFI 9a11c .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 9a120 .cfa: x29 48 +
+STACK CFI 9a170 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9a174 184 .cfa: sp 0 + .ra: x30
+STACK CFI 9a178 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 9a17c .cfa: x29 48 +
+STACK CFI 9a22c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9a230 .cfa: x29 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 9a23c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9a240 .cfa: x29 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 9a24c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9a250 .cfa: x29 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 9a25c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9a260 .cfa: x29 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI INIT 9a2f8 188 .cfa: sp 0 + .ra: x30
+STACK CFI 9a2fc .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 9a300 .cfa: x29 48 +
+STACK CFI 9a3dc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9a3e0 .cfa: x29 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 9a3e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9a3ec .cfa: x29 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI INIT 9a480 78 .cfa: sp 0 + .ra: x30
+STACK CFI 9a484 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 9a48c .cfa: x29 48 +
+STACK CFI 9a490 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 9a498 x21: .cfa -16 + ^
+STACK CFI 9a4e4 x21: x21
+STACK CFI 9a4e8 x19: x19 x20: x20
+STACK CFI 9a4ec .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9a4f0 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x29: .cfa -48 + ^
+STACK CFI INIT 9a4f8 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9a500 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9a508 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9a510 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9a518 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9a520 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9a528 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9a530 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9a538 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9a540 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9a548 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9a550 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9a558 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9a560 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9a568 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9a570 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9a578 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9a580 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9a588 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9a590 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9a598 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9a5ac 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9a5c0 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9a5d4 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9a5e8 24 .cfa: sp 0 + .ra: x30
+STACK CFI 9a5ec .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 9a5f0 .cfa: x29 32 +
+STACK CFI 9a5f4 x19: .cfa -16 + ^
+STACK CFI 9a604 x19: x19
+STACK CFI 9a608 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9a60c 24 .cfa: sp 0 + .ra: x30
+STACK CFI 9a610 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 9a614 .cfa: x29 32 +
+STACK CFI 9a618 x19: .cfa -16 + ^
+STACK CFI 9a628 x19: x19
+STACK CFI 9a62c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9a630 24 .cfa: sp 0 + .ra: x30
+STACK CFI 9a634 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 9a638 .cfa: x29 32 +
+STACK CFI 9a63c x19: .cfa -16 + ^
+STACK CFI 9a64c x19: x19
+STACK CFI 9a650 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9a654 24 .cfa: sp 0 + .ra: x30
+STACK CFI 9a658 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 9a65c .cfa: x29 32 +
+STACK CFI 9a660 x19: .cfa -16 + ^
+STACK CFI 9a670 x19: x19
+STACK CFI 9a674 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9a678 70 .cfa: sp 0 + .ra: x30
+STACK CFI 9a67c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 9a688 .cfa: x29 32 +
+STACK CFI 9a68c x19: .cfa -16 + ^
+STACK CFI 9a6e0 x19: x19
+STACK CFI 9a6e4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9a6e8 70 .cfa: sp 0 + .ra: x30
+STACK CFI 9a6ec .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 9a6f8 .cfa: x29 32 +
+STACK CFI 9a6fc x19: .cfa -16 + ^
+STACK CFI 9a750 x19: x19
+STACK CFI 9a754 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9a758 70 .cfa: sp 0 + .ra: x30
+STACK CFI 9a75c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 9a768 .cfa: x29 32 +
+STACK CFI 9a76c x19: .cfa -16 + ^
+STACK CFI 9a7c0 x19: x19
+STACK CFI 9a7c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9a7c8 70 .cfa: sp 0 + .ra: x30
+STACK CFI 9a7cc .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 9a7d8 .cfa: x29 32 +
+STACK CFI 9a7dc x19: .cfa -16 + ^
+STACK CFI 9a830 x19: x19
+STACK CFI 9a834 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9a838 30 .cfa: sp 0 + .ra: x30
+STACK CFI 9a83c .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 9a848 .cfa: x29 48 +
+STACK CFI 9a860 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9a868 30 .cfa: sp 0 + .ra: x30
+STACK CFI 9a86c .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 9a878 .cfa: x29 48 +
+STACK CFI 9a890 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9a898 30 .cfa: sp 0 + .ra: x30
+STACK CFI 9a89c .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 9a8a8 .cfa: x29 48 +
+STACK CFI 9a8c0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9a8c8 30 .cfa: sp 0 + .ra: x30
+STACK CFI 9a8cc .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 9a8d8 .cfa: x29 48 +
+STACK CFI 9a8f0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9a8f8 30 .cfa: sp 0 + .ra: x30
+STACK CFI 9a8fc .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 9a908 .cfa: x29 48 +
+STACK CFI 9a920 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9a928 30 .cfa: sp 0 + .ra: x30
+STACK CFI 9a92c .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 9a938 .cfa: x29 48 +
+STACK CFI 9a950 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9a958 30 .cfa: sp 0 + .ra: x30
+STACK CFI 9a95c .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 9a968 .cfa: x29 48 +
+STACK CFI 9a980 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9a988 30 .cfa: sp 0 + .ra: x30
+STACK CFI 9a98c .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 9a998 .cfa: x29 48 +
+STACK CFI 9a9b0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9a9b8 30 .cfa: sp 0 + .ra: x30
+STACK CFI 9a9bc .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 9a9c8 .cfa: x29 48 +
+STACK CFI 9a9e0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9a9e8 30 .cfa: sp 0 + .ra: x30
+STACK CFI 9a9ec .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 9a9f8 .cfa: x29 48 +
+STACK CFI 9aa10 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9aa18 30 .cfa: sp 0 + .ra: x30
+STACK CFI 9aa1c .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 9aa28 .cfa: x29 48 +
+STACK CFI 9aa40 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9aa48 30 .cfa: sp 0 + .ra: x30
+STACK CFI 9aa4c .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 9aa58 .cfa: x29 48 +
+STACK CFI 9aa70 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9aa78 30 .cfa: sp 0 + .ra: x30
+STACK CFI 9aa7c .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 9aa88 .cfa: x29 48 +
+STACK CFI 9aaa0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9aaa8 30 .cfa: sp 0 + .ra: x30
+STACK CFI 9aaac .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 9aab8 .cfa: x29 48 +
+STACK CFI 9aad0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9aad8 30 .cfa: sp 0 + .ra: x30
+STACK CFI 9aadc .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 9aae8 .cfa: x29 48 +
+STACK CFI 9ab00 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9ab08 30 .cfa: sp 0 + .ra: x30
+STACK CFI 9ab0c .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 9ab18 .cfa: x29 48 +
+STACK CFI 9ab30 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9ab38 78 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9abb0 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9abc0 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9abcc 12c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9acf8 28 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9ad20 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9ad2c c .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9ad38 180 .cfa: sp 0 + .ra: x30
+STACK CFI 9ad3c .cfa: sp 112 + .ra: .cfa -104 + ^ x29: .cfa -112 + ^
+STACK CFI 9ad40 .cfa: x29 112 +
+STACK CFI 9ad44 x19: .cfa -96 + ^ x20: .cfa -88 + ^
+STACK CFI 9ad8c x19: x19 x20: x20
+STACK CFI 9ad90 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9ad94 .cfa: x29 112 + .ra: .cfa -104 + ^ x19: .cfa -96 + ^ x20: .cfa -88 + ^ x29: .cfa -112 + ^
+STACK CFI INIT 9aeb8 120 .cfa: sp 0 + .ra: x30
+STACK CFI 9aebc .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 9aec8 .cfa: x29 96 +
+STACK CFI 9aedc x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^ x25: .cfa -32 + ^ x26: .cfa -24 + ^ x27: .cfa -16 + ^ x28: .cfa -8 + ^
+STACK CFI 9af94 x19: x19 x20: x20
+STACK CFI 9af98 x21: x21 x22: x22
+STACK CFI 9af9c x23: x23 x24: x24
+STACK CFI 9afa0 x25: x25 x26: x26
+STACK CFI 9afa4 x27: x27 x28: x28
+STACK CFI 9afa8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9afac .cfa: x29 96 + .ra: .cfa -88 + ^ x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^ x25: .cfa -32 + ^ x26: .cfa -24 + ^ x27: .cfa -16 + ^ x28: .cfa -8 + ^ x29: .cfa -96 + ^
+STACK CFI 9afc0 x19: x19 x20: x20
+STACK CFI 9afc4 x21: x21 x22: x22
+STACK CFI 9afc8 x23: x23 x24: x24
+STACK CFI 9afcc x25: x25 x26: x26
+STACK CFI 9afd0 x27: x27 x28: x28
+STACK CFI 9afd4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9afd8 7b4 .cfa: sp 0 + .ra: x30
+STACK CFI 9afdc .cfa: sp 128 + .ra: .cfa -120 + ^ x29: .cfa -128 + ^
+STACK CFI 9afe8 .cfa: x29 128 +
+STACK CFI 9aff0 x21: .cfa -96 + ^ x22: .cfa -88 + ^
+STACK CFI 9affc x25: .cfa -64 + ^ x26: .cfa -56 + ^
+STACK CFI 9b00c x19: .cfa -112 + ^ x20: .cfa -104 + ^ x23: .cfa -80 + ^ x24: .cfa -72 + ^ x27: .cfa -48 + ^ x28: .cfa -40 + ^
+STACK CFI 9b0ec x19: x19 x20: x20
+STACK CFI 9b0f0 x21: x21 x22: x22
+STACK CFI 9b0f4 x23: x23 x24: x24
+STACK CFI 9b0f8 x25: x25 x26: x26
+STACK CFI 9b0fc x27: x27 x28: x28
+STACK CFI 9b100 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9b104 .cfa: x29 128 + .ra: .cfa -120 + ^ x19: .cfa -112 + ^ x20: .cfa -104 + ^ x21: .cfa -96 + ^ x22: .cfa -88 + ^ x23: .cfa -80 + ^ x24: .cfa -72 + ^ x25: .cfa -64 + ^ x26: .cfa -56 + ^ x27: .cfa -48 + ^ x28: .cfa -40 + ^ x29: .cfa -128 + ^
+STACK CFI INIT 9b78c 128 .cfa: sp 0 + .ra: x30
+STACK CFI 9b790 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 9b798 .cfa: x29 96 +
+STACK CFI 9b7ac x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^ x25: .cfa -32 + ^ x26: .cfa -24 + ^ x27: .cfa -16 + ^ x28: .cfa -8 + ^
+STACK CFI 9b868 x21: x21 x22: x22
+STACK CFI 9b874 x19: x19 x20: x20
+STACK CFI 9b878 x23: x23 x24: x24
+STACK CFI 9b87c x25: x25 x26: x26
+STACK CFI 9b880 x27: x27 x28: x28
+STACK CFI 9b884 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9b888 .cfa: x29 96 + .ra: .cfa -88 + ^ x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^ x25: .cfa -32 + ^ x26: .cfa -24 + ^ x27: .cfa -16 + ^ x28: .cfa -8 + ^ x29: .cfa -96 + ^
+STACK CFI 9b89c x19: x19 x20: x20
+STACK CFI 9b8a0 x21: x21 x22: x22
+STACK CFI 9b8a4 x23: x23 x24: x24
+STACK CFI 9b8a8 x25: x25 x26: x26
+STACK CFI 9b8ac x27: x27 x28: x28
+STACK CFI 9b8b0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9b8b4 1c0 .cfa: sp 0 + .ra: x30
+STACK CFI 9b8b8 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 9b8c0 .cfa: x29 48 +
+STACK CFI 9b8c8 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 9b9d8 x19: x19 x20: x20
+STACK CFI 9b9dc x21: x21 x22: x22
+STACK CFI 9b9e0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9b9e4 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^ x29: .cfa -48 + ^
+STACK CFI 9ba38 x19: x19 x20: x20
+STACK CFI 9ba3c x21: x21 x22: x22
+STACK CFI 9ba40 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9ba44 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^ x29: .cfa -48 + ^
+STACK CFI INIT 9ba74 46c .cfa: sp 0 + .ra: x30
+STACK CFI 9ba78 .cfa: sp 144 + .ra: .cfa -136 + ^ x29: .cfa -144 + ^
+STACK CFI 9ba7c .cfa: x29 144 +
+STACK CFI 9ba84 x27: .cfa -64 + ^ x28: .cfa -56 + ^
+STACK CFI 9baa4 v8: .cfa -48 + ^ x19: .cfa -128 + ^ x20: .cfa -120 + ^ x21: .cfa -112 + ^ x22: .cfa -104 + ^ x23: .cfa -96 + ^ x24: .cfa -88 + ^ x25: .cfa -80 + ^ x26: .cfa -72 + ^
+STACK CFI 9bda4 x19: x19 x20: x20
+STACK CFI 9bda8 x21: x21 x22: x22
+STACK CFI 9bdac x23: x23 x24: x24
+STACK CFI 9bdb0 x25: x25 x26: x26
+STACK CFI 9bdb4 x27: x27 x28: x28
+STACK CFI 9bdb8 v8: v8
+STACK CFI 9bdbc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9bdc0 .cfa: x29 144 + .ra: .cfa -136 + ^ v8: .cfa -48 + ^ x19: .cfa -128 + ^ x20: .cfa -120 + ^ x21: .cfa -112 + ^ x22: .cfa -104 + ^ x23: .cfa -96 + ^ x24: .cfa -88 + ^ x25: .cfa -80 + ^ x26: .cfa -72 + ^ x27: .cfa -64 + ^ x28: .cfa -56 + ^ x29: .cfa -144 + ^
+STACK CFI INIT 9bee0 44 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9bf24 84 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9bfa8 17c .cfa: sp 0 + .ra: x30
+STACK CFI 9bfac .cfa: sp 144 + .ra: .cfa -136 + ^ x29: .cfa -144 + ^
+STACK CFI 9bfb4 .cfa: x29 144 +
+STACK CFI 9bfcc v8: .cfa -48 + ^ x19: .cfa -128 + ^ x20: .cfa -120 + ^ x21: .cfa -112 + ^ x22: .cfa -104 + ^ x23: .cfa -96 + ^ x24: .cfa -88 + ^ x25: .cfa -80 + ^ x26: .cfa -72 + ^ x27: .cfa -64 + ^ x28: .cfa -56 + ^
+STACK CFI 9c0e0 x19: x19 x20: x20
+STACK CFI 9c0e4 x21: x21 x22: x22
+STACK CFI 9c0e8 x23: x23 x24: x24
+STACK CFI 9c0ec x25: x25 x26: x26
+STACK CFI 9c0f0 x27: x27 x28: x28
+STACK CFI 9c0f4 v8: v8
+STACK CFI 9c0f8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9c0fc .cfa: x29 144 + .ra: .cfa -136 + ^ v8: .cfa -48 + ^ x19: .cfa -128 + ^ x20: .cfa -120 + ^ x21: .cfa -112 + ^ x22: .cfa -104 + ^ x23: .cfa -96 + ^ x24: .cfa -88 + ^ x25: .cfa -80 + ^ x26: .cfa -72 + ^ x27: .cfa -64 + ^ x28: .cfa -56 + ^ x29: .cfa -144 + ^
+STACK CFI INIT 9c124 3a8 .cfa: sp 0 + .ra: x30
+STACK CFI 9c128 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 9c130 .cfa: x29 80 +
+STACK CFI 9c134 x19: .cfa -64 + ^ x20: .cfa -56 + ^
+STACK CFI 9c240 x19: x19 x20: x20
+STACK CFI 9c244 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9c248 .cfa: x29 80 + .ra: .cfa -72 + ^ x19: .cfa -64 + ^ x20: .cfa -56 + ^ x29: .cfa -80 + ^
+STACK CFI 9c418 x19: x19 x20: x20
+STACK CFI 9c41c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9c420 .cfa: x29 80 + .ra: .cfa -72 + ^ x19: .cfa -64 + ^ x20: .cfa -56 + ^ x29: .cfa -80 + ^
+STACK CFI INIT 9c4cc d8 .cfa: sp 0 + .ra: x30
+STACK CFI 9c4d0 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 9c4d8 .cfa: x29 80 +
+STACK CFI 9c4e4 x19: .cfa -64 + ^ x20: .cfa -56 + ^
+STACK CFI 9c59c x19: x19 x20: x20
+STACK CFI 9c5a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9c5a4 28 .cfa: sp 0 + .ra: x30
+STACK CFI 9c5a8 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 9c5ac .cfa: x29 32 +
+STACK CFI 9c5c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9c5cc 24 .cfa: sp 0 + .ra: x30
+STACK CFI 9c5d0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 9c5d4 .cfa: x29 32 +
+STACK CFI 9c5ec .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9c5f0 27c .cfa: sp 0 + .ra: x30
+STACK CFI 9c5f4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 9c600 .cfa: x29 64 +
+STACK CFI 9c604 x19: .cfa -48 + ^
+STACK CFI 9c7a8 x19: x19
+STACK CFI 9c7c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9c7cc .cfa: x29 64 + .ra: .cfa -56 + ^ x19: .cfa -48 + ^ x29: .cfa -64 + ^
+STACK CFI 9c7d4 x19: x19
+STACK CFI 9c7d8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9c7dc .cfa: x29 64 + .ra: .cfa -56 + ^ x19: .cfa -48 + ^ x29: .cfa -64 + ^
+STACK CFI 9c810 x19: x19
+STACK CFI 9c818 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9c81c .cfa: x29 64 + .ra: .cfa -56 + ^ x19: .cfa -48 + ^ x29: .cfa -64 + ^
+STACK CFI 9c84c x19: x19
+STACK CFI 9c854 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9c858 .cfa: x29 64 + .ra: .cfa -56 + ^ x19: .cfa -48 + ^ x29: .cfa -64 + ^
+STACK CFI INIT 9c880 1f0 .cfa: sp 0 + .ra: x30
+STACK CFI 9c884 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 9c888 .cfa: x29 80 +
+STACK CFI 9c88c x19: .cfa -64 + ^
+STACK CFI 9c9ac x19: x19
+STACK CFI 9c9b0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9c9b8 .cfa: x29 80 + .ra: .cfa -72 + ^ x19: .cfa -64 + ^ x29: .cfa -80 + ^
+STACK CFI 9c9cc x19: x19
+STACK CFI 9c9d8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9c9e0 .cfa: x29 80 + .ra: .cfa -72 + ^ x19: .cfa -64 + ^ x29: .cfa -80 + ^
+STACK CFI INIT 9ca70 24 .cfa: sp 0 + .ra: x30
+STACK CFI 9ca74 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 9ca78 .cfa: x29 32 +
+STACK CFI 9ca90 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9ca94 f0 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9cb84 5f8 .cfa: sp 0 + .ra: x30
+STACK CFI 9cb88 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 9cb90 .cfa: x29 80 +
+STACK CFI 9cb9c x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^
+STACK CFI 9cd5c x23: x23
+STACK CFI 9cd60 x19: x19 x20: x20
+STACK CFI 9cd64 x21: x21 x22: x22
+STACK CFI 9cd68 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9cd6c .cfa: x29 80 + .ra: .cfa -72 + ^ x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x29: .cfa -80 + ^
+STACK CFI 9d0e8 x19: x19 x20: x20
+STACK CFI 9d0ec x21: x21 x22: x22
+STACK CFI 9d0f0 x23: x23
+STACK CFI 9d0f4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9d0f8 .cfa: x29 80 + .ra: .cfa -72 + ^ x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x29: .cfa -80 + ^
+STACK CFI INIT 9d17c 220 .cfa: sp 0 + .ra: x30
+STACK CFI 9d180 .cfa: sp 4096 +
+STACK CFI 9d188 .cfa: sp 4944 +
+STACK CFI 9d194 .cfa: sp 5008 + .ra: .cfa -5000 + ^ x29: .cfa -5008 + ^
+STACK CFI 9d198 .cfa: x29 5008 +
+STACK CFI 9d19c x21: .cfa -4976 + ^ x22: .cfa -4968 + ^
+STACK CFI 9d1a4 x19: .cfa -4992 + ^ x20: .cfa -4984 + ^
+STACK CFI 9d1b4 x23: .cfa -4960 + ^ x24: .cfa -4952 + ^
+STACK CFI 9d238 x19: x19 x20: x20
+STACK CFI 9d23c x21: x21 x22: x22
+STACK CFI 9d240 x23: x23 x24: x24
+STACK CFI 9d244 .cfa: sp 4944 + .ra: .ra x29: x29
+STACK CFI 9d248 .cfa: sp 4096 +
+STACK CFI 9d24c .cfa: sp 4032 +
+STACK CFI 9d250 .cfa: x29 5008 + .ra: .cfa -5000 + ^ x19: .cfa -4992 + ^ x20: .cfa -4984 + ^ x21: .cfa -4976 + ^ x22: .cfa -4968 + ^ x23: .cfa -4960 + ^ x24: .cfa -4952 + ^ x29: .cfa -5008 + ^
+STACK CFI 9d32c x19: x19 x20: x20
+STACK CFI 9d330 x21: x21 x22: x22
+STACK CFI 9d334 x23: x23 x24: x24
+STACK CFI 9d338 .cfa: sp 4944 + .ra: .ra x29: x29
+STACK CFI 9d33c .cfa: sp 4096 +
+STACK CFI 9d340 .cfa: sp 4032 +
+STACK CFI 9d344 .cfa: x29 5008 + .ra: .cfa -5000 + ^ x19: .cfa -4992 + ^ x20: .cfa -4984 + ^ x21: .cfa -4976 + ^ x22: .cfa -4968 + ^ x23: .cfa -4960 + ^ x24: .cfa -4952 + ^ x29: .cfa -5008 + ^
+STACK CFI 9d370 x19: x19 x20: x20
+STACK CFI 9d374 x21: x21 x22: x22
+STACK CFI 9d378 x23: x23 x24: x24
+STACK CFI 9d37c .cfa: sp 4944 + .ra: .ra x29: x29
+STACK CFI 9d380 .cfa: sp 4096 +
+STACK CFI 9d384 .cfa: sp 4032 +
+STACK CFI 9d388 .cfa: x29 5008 + .ra: .cfa -5000 + ^ x19: .cfa -4992 + ^ x20: .cfa -4984 + ^ x21: .cfa -4976 + ^ x22: .cfa -4968 + ^ x23: .cfa -4960 + ^ x24: .cfa -4952 + ^ x29: .cfa -5008 + ^
+STACK CFI INIT 9d39c 334 .cfa: sp 0 + .ra: x30
+STACK CFI 9d3a0 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI 9d3a8 .cfa: x29 80 +
+STACK CFI 9d3b4 x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^
+STACK CFI 9d3c8 x25: .cfa -16 + ^
+STACK CFI 9d4a0 x19: x19 x20: x20
+STACK CFI 9d4a4 x21: x21 x22: x22
+STACK CFI 9d4a8 x23: x23 x24: x24
+STACK CFI 9d4ac x25: x25
+STACK CFI 9d4b0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9d4b4 .cfa: x29 80 + .ra: .cfa -72 + ^ x19: .cfa -64 + ^ x20: .cfa -56 + ^ x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^ x25: .cfa -16 + ^ x29: .cfa -80 + ^
+STACK CFI INIT 9d6d0 dc .cfa: sp 0 + .ra: x30
+STACK CFI 9d6d4 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 9d6d8 .cfa: x29 48 +
+STACK CFI 9d6e0 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 9d6f0 x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 9d734 x19: x19 x20: x20
+STACK CFI 9d738 x21: x21 x22: x22
+STACK CFI 9d73c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9d740 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^ x29: .cfa -48 + ^
+STACK CFI 9d75c x19: x19 x20: x20
+STACK CFI 9d760 x21: x21 x22: x22
+STACK CFI 9d764 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9d768 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^ x29: .cfa -48 + ^
+STACK CFI INIT 9d7ac 230 .cfa: sp 0 + .ra: x30
+STACK CFI 9d7b0 .cfa: sp 4096 +
+STACK CFI 9d7b8 .cfa: sp 5008 +
+STACK CFI 9d7c0 .cfa: sp 5056 + .ra: .cfa -5048 + ^ x29: .cfa -5056 + ^
+STACK CFI 9d7c4 .cfa: x29 5056 +
+STACK CFI 9d7c8 x21: .cfa -5024 + ^
+STACK CFI 9d7d0 x19: .cfa -5040 + ^ x20: .cfa -5032 + ^
+STACK CFI 9d8e4 x19: x19 x20: x20
+STACK CFI 9d8e8 x21: x21
+STACK CFI 9d8ec .cfa: sp 5008 + .ra: .ra x29: x29
+STACK CFI 9d8f0 .cfa: sp 4096 +
+STACK CFI 9d8f4 .cfa: sp 4048 +
+STACK CFI 9d8f8 .cfa: x29 5056 + .ra: .cfa -5048 + ^ x19: .cfa -5040 + ^ x20: .cfa -5032 + ^ x21: .cfa -5024 + ^ x29: .cfa -5056 + ^
+STACK CFI 9d8fc x19: x19 x20: x20
+STACK CFI 9d900 x21: x21
+STACK CFI 9d908 .cfa: sp 5008 + .ra: .ra x29: x29
+STACK CFI 9d910 .cfa: sp 4096 +
+STACK CFI 9d914 .cfa: sp 4048 +
+STACK CFI 9d918 .cfa: x29 5056 + .ra: .cfa -5048 + ^ x19: .cfa -5040 + ^ x20: .cfa -5032 + ^ x21: .cfa -5024 + ^ x29: .cfa -5056 + ^
+STACK CFI 9d91c x19: x19 x20: x20
+STACK CFI 9d920 x21: x21
+STACK CFI 9d928 .cfa: sp 5008 + .ra: .ra x29: x29
+STACK CFI 9d92c .cfa: sp 4096 +
+STACK CFI 9d930 .cfa: sp 4048 +
+STACK CFI 9d934 .cfa: x29 5056 + .ra: .cfa -5048 + ^ x19: .cfa -5040 + ^ x20: .cfa -5032 + ^ x21: .cfa -5024 + ^ x29: .cfa -5056 + ^
+STACK CFI INIT 9d9dc 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9d9e0 210 .cfa: sp 0 + .ra: x30
+STACK CFI 9d9e4 .cfa: sp 432 + .ra: .cfa -424 + ^ x29: .cfa -432 + ^
+STACK CFI 9d9f0 .cfa: x29 432 +
+STACK CFI 9d9f4 x19: .cfa -416 + ^ x20: .cfa -408 + ^
+STACK CFI 9d9fc x21: .cfa -400 + ^
+STACK CFI 9db10 x19: x19 x20: x20
+STACK CFI 9db14 x21: x21
+STACK CFI 9db18 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9db1c .cfa: x29 432 + .ra: .cfa -424 + ^ x19: .cfa -416 + ^ x20: .cfa -408 + ^ x21: .cfa -400 + ^ x29: .cfa -432 + ^
+STACK CFI 9db24 x21: x21
+STACK CFI 9db2c x19: x19 x20: x20
+STACK CFI 9db30 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9db34 .cfa: x29 432 + .ra: .cfa -424 + ^ x19: .cfa -416 + ^ x20: .cfa -408 + ^ x21: .cfa -400 + ^ x29: .cfa -432 + ^
+STACK CFI 9db3c x21: x21
+STACK CFI 9db40 x19: x19 x20: x20
+STACK CFI 9db44 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9db48 .cfa: x29 432 + .ra: .cfa -424 + ^ x19: .cfa -416 + ^ x20: .cfa -408 + ^ x21: .cfa -400 + ^ x29: .cfa -432 + ^
+STACK CFI INIT 9dbf0 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9dbf4 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9dbfc 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9dc04 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9dc0c 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9dc14 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9dc28 24 .cfa: sp 0 + .ra: x30
+STACK CFI 9dc2c .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 9dc30 .cfa: x29 32 +
+STACK CFI 9dc34 x19: .cfa -16 + ^
+STACK CFI 9dc44 x19: x19
+STACK CFI 9dc48 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9dc4c 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9dc60 24 .cfa: sp 0 + .ra: x30
+STACK CFI 9dc64 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI 9dc68 .cfa: x29 32 +
+STACK CFI 9dc6c x19: .cfa -16 + ^
+STACK CFI 9dc7c x19: x19
+STACK CFI 9dc80 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9dc84 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9dc98 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9dcac 30 .cfa: sp 0 + .ra: x30
+STACK CFI 9dcb0 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 9dcbc .cfa: x29 48 +
+STACK CFI 9dcd4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9dcdc 30 .cfa: sp 0 + .ra: x30
+STACK CFI 9dce0 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 9dcec .cfa: x29 48 +
+STACK CFI 9dd04 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9dd0c 30 .cfa: sp 0 + .ra: x30
+STACK CFI 9dd10 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 9dd1c .cfa: x29 48 +
+STACK CFI 9dd34 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9dd3c 30 .cfa: sp 0 + .ra: x30
+STACK CFI 9dd40 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 9dd4c .cfa: x29 48 +
+STACK CFI 9dd64 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 208dc 18 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9dd6c 1dc .cfa: sp 0 + .ra: x30
+STACK CFI 9dd74 .cfa: sp 320 + .ra: .cfa -312 + ^ x29: .cfa -320 + ^
+STACK CFI 9dd78 .cfa: x29 320 +
+STACK CFI 9dd80 x19: .cfa -304 + ^ x20: .cfa -296 + ^
+STACK CFI 9dd98 x21: .cfa -288 + ^ x22: .cfa -280 + ^ x23: .cfa -272 + ^ x24: .cfa -264 + ^
+STACK CFI 9de1c x19: x19 x20: x20
+STACK CFI 9de20 x21: x21 x22: x22
+STACK CFI 9de24 x23: x23 x24: x24
+STACK CFI 9de28 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9de2c .cfa: x29 320 + .ra: .cfa -312 + ^ x19: .cfa -304 + ^ x20: .cfa -296 + ^ x21: .cfa -288 + ^ x22: .cfa -280 + ^ x23: .cfa -272 + ^ x24: .cfa -264 + ^ x29: .cfa -320 + ^
+STACK CFI 9def4 x19: x19 x20: x20
+STACK CFI 9def8 x21: x21 x22: x22
+STACK CFI 9defc x23: x23 x24: x24
+STACK CFI 9df00 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9df04 .cfa: x29 320 + .ra: .cfa -312 + ^ x19: .cfa -304 + ^ x20: .cfa -296 + ^ x21: .cfa -288 + ^ x22: .cfa -280 + ^ x23: .cfa -272 + ^ x24: .cfa -264 + ^ x29: .cfa -320 + ^
+STACK CFI INIT 9df48 1b8 .cfa: sp 0 + .ra: x30
+STACK CFI 9df4c .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 9df50 .cfa: x29 64 +
+STACK CFI 9df58 x23: .cfa -16 + ^ x24: .cfa -8 + ^
+STACK CFI 9df64 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 9dfd4 x19: x19 x20: x20
+STACK CFI 9dfd8 x21: x21 x22: x22
+STACK CFI 9dfdc x23: x23 x24: x24
+STACK CFI 9dfe0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9dfe4 .cfa: x29 64 + .ra: .cfa -56 + ^ x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^ x24: .cfa -8 + ^ x29: .cfa -64 + ^
+STACK CFI 9e0ac x21: x21 x22: x22
+STACK CFI 9e0b0 x19: x19 x20: x20
+STACK CFI 9e0b4 x23: x23 x24: x24
+STACK CFI 9e0b8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9e0bc .cfa: x29 64 + .ra: .cfa -56 + ^ x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^ x24: .cfa -8 + ^ x29: .cfa -64 + ^
+STACK CFI INIT 9e100 208 .cfa: sp 0 + .ra: x30
+STACK CFI 9e104 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 9e108 .cfa: x29 64 +
+STACK CFI 9e10c x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 9e11c x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 9e150 x23: x23
+STACK CFI 9e154 x21: x21 x22: x22
+STACK CFI 9e160 x19: x19 x20: x20
+STACK CFI 9e164 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9e168 .cfa: x29 64 + .ra: .cfa -56 + ^ x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^ x29: .cfa -64 + ^
+STACK CFI INIT 9e308 2b8 .cfa: sp 0 + .ra: x30
+STACK CFI 9e30c .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 9e310 .cfa: x29 64 +
+STACK CFI 9e31c x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI 9e32c x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^
+STACK CFI 9e368 x21: x21 x22: x22
+STACK CFI 9e374 x23: x23
+STACK CFI 9e378 x19: x19 x20: x20
+STACK CFI 9e37c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9e380 .cfa: x29 64 + .ra: .cfa -56 + ^ x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^ x29: .cfa -64 + ^
+STACK CFI INIT 9e5c0 a8 .cfa: sp 0 + .ra: x30
+STACK CFI 9e5c4 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 9e5c8 .cfa: x29 64 +
+STACK CFI 9e5d0 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI 9e5e4 x23: .cfa -16 + ^ x24: .cfa -8 + ^
+STACK CFI 9e640 x19: x19 x20: x20
+STACK CFI 9e644 x21: x21 x22: x22
+STACK CFI 9e648 x23: x23 x24: x24
+STACK CFI 9e64c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9e650 .cfa: x29 64 + .ra: .cfa -56 + ^ x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^ x24: .cfa -8 + ^ x29: .cfa -64 + ^
+STACK CFI INIT 9e668 8b4 .cfa: sp 0 + .ra: x30
+STACK CFI 9e66c .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 9e678 .cfa: x29 160 +
+STACK CFI 9e68c x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^ x23: .cfa -112 + ^
+STACK CFI 9e710 x19: x19 x20: x20
+STACK CFI 9e714 x21: x21 x22: x22
+STACK CFI 9e718 x23: x23
+STACK CFI 9e71c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9e720 .cfa: x29 160 + .ra: .cfa -152 + ^ x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^ x23: .cfa -112 + ^ x29: .cfa -160 + ^
+STACK CFI 9e76c x23: x23
+STACK CFI 9e770 x19: x19 x20: x20
+STACK CFI 9e774 x21: x21 x22: x22
+STACK CFI 9e778 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9e77c .cfa: x29 160 + .ra: .cfa -152 + ^ x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^ x23: .cfa -112 + ^ x29: .cfa -160 + ^
+STACK CFI 9e7e8 x23: x23
+STACK CFI 9e7ec x19: x19 x20: x20
+STACK CFI 9e7f0 x21: x21 x22: x22
+STACK CFI 9e7f4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9e7f8 .cfa: x29 160 + .ra: .cfa -152 + ^ x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^ x23: .cfa -112 + ^ x29: .cfa -160 + ^
+STACK CFI 9e87c x23: x23
+STACK CFI 9e880 x19: x19 x20: x20
+STACK CFI 9e884 x21: x21 x22: x22
+STACK CFI 9e888 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9e88c .cfa: x29 160 + .ra: .cfa -152 + ^ x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^ x23: .cfa -112 + ^ x29: .cfa -160 + ^
+STACK CFI INIT 9ef1c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT 9ef20 294 .cfa: sp 0 + .ra: x30
+STACK CFI 9ef24 .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI 9ef28 .cfa: x29 96 +
+STACK CFI 9ef2c x19: .cfa -80 + ^ x20: .cfa -72 + ^
+STACK CFI 9ef44 x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^ x25: .cfa -32 + ^ x26: .cfa -24 + ^ x27: .cfa -16 + ^
+STACK CFI 9f188 x19: x19 x20: x20
+STACK CFI 9f18c x21: x21 x22: x22
+STACK CFI 9f190 x23: x23 x24: x24
+STACK CFI 9f194 x25: x25 x26: x26
+STACK CFI 9f198 x27: x27
+STACK CFI 9f19c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9f1a0 .cfa: x29 96 + .ra: .cfa -88 + ^ x19: .cfa -80 + ^ x20: .cfa -72 + ^ x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^ x25: .cfa -32 + ^ x26: .cfa -24 + ^ x27: .cfa -16 + ^ x29: .cfa -96 + ^
+STACK CFI INIT 9f1b4 c0 .cfa: sp 0 + .ra: x30
+STACK CFI 9f1b8 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI 9f1bc .cfa: x29 48 +
+STACK CFI 9f1c0 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI 9f1d0 x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI 9f234 x19: x19 x20: x20
+STACK CFI 9f238 x21: x21 x22: x22
+STACK CFI 9f23c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9f240 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^ x29: .cfa -48 + ^
+STACK CFI 9f268 x19: x19 x20: x20
+STACK CFI 9f26c x21: x21 x22: x22
+STACK CFI 9f270 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT 9f274 2bc .cfa: sp 0 + .ra: x30
+STACK CFI 9f278 .cfa: sp 112 + .ra: .cfa -104 + ^ x29: .cfa -112 + ^
+STACK CFI 9f284 .cfa: x29 112 +
+STACK CFI 9f288 x19: .cfa -96 + ^ x20: .cfa -88 + ^
+STACK CFI 9f2a0 x21: .cfa -80 + ^ x22: .cfa -72 + ^ x23: .cfa -64 + ^ x24: .cfa -56 + ^ x25: .cfa -48 + ^ x26: .cfa -40 + ^ x27: .cfa -32 + ^
+STACK CFI 9f504 x19: x19 x20: x20
+STACK CFI 9f508 x21: x21 x22: x22
+STACK CFI 9f50c x23: x23 x24: x24
+STACK CFI 9f510 x25: x25 x26: x26
+STACK CFI 9f514 x27: x27
+STACK CFI 9f518 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9f51c .cfa: x29 112 + .ra: .cfa -104 + ^ x19: .cfa -96 + ^ x20: .cfa -88 + ^ x21: .cfa -80 + ^ x22: .cfa -72 + ^ x23: .cfa -64 + ^ x24: .cfa -56 + ^ x25: .cfa -48 + ^ x26: .cfa -40 + ^ x27: .cfa -32 + ^ x29: .cfa -112 + ^
+STACK CFI INIT 9f530 1a8 .cfa: sp 0 + .ra: x30
+STACK CFI 9f534 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 9f53c .cfa: x29 64 +
+STACK CFI 9f548 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^ x24: .cfa -8 + ^
+STACK CFI 9f5b8 x19: x19 x20: x20
+STACK CFI 9f5bc x21: x21 x22: x22
+STACK CFI 9f5c0 x23: x23 x24: x24
+STACK CFI 9f5c4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9f5c8 .cfa: x29 64 + .ra: .cfa -56 + ^ x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^ x24: .cfa -8 + ^ x29: .cfa -64 + ^
+STACK CFI 9f6a4 x19: x19 x20: x20
+STACK CFI 9f6a8 x21: x21 x22: x22
+STACK CFI 9f6ac x23: x23 x24: x24
+STACK CFI 9f6b0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9f6b4 .cfa: x29 64 + .ra: .cfa -56 + ^ x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^ x24: .cfa -8 + ^ x29: .cfa -64 + ^
+STACK CFI INIT 9f6d8 1a8 .cfa: sp 0 + .ra: x30
+STACK CFI 9f6dc .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI 9f6e4 .cfa: x29 64 +
+STACK CFI 9f6f0 x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^ x24: .cfa -8 + ^
+STACK CFI 9f760 x19: x19 x20: x20
+STACK CFI 9f764 x21: x21 x22: x22
+STACK CFI 9f768 x23: x23 x24: x24
+STACK CFI 9f76c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9f770 .cfa: x29 64 + .ra: .cfa -56 + ^ x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^ x24: .cfa -8 + ^ x29: .cfa -64 + ^
+STACK CFI 9f84c x19: x19 x20: x20
+STACK CFI 9f850 x21: x21 x22: x22
+STACK CFI 9f854 x23: x23 x24: x24
+STACK CFI 9f858 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9f85c .cfa: x29 64 + .ra: .cfa -56 + ^ x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^ x24: .cfa -8 + ^ x29: .cfa -64 + ^
+STACK CFI INIT 9f880 11f8 .cfa: sp 0 + .ra: x30
+STACK CFI 9f884 .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI 9f890 .cfa: x29 160 +
+STACK CFI 9f8a4 x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^ x23: .cfa -112 + ^ x24: .cfa -104 + ^
+STACK CFI 9f9cc x19: x19 x20: x20
+STACK CFI 9f9d0 x21: x21 x22: x22
+STACK CFI 9f9d4 x23: x23 x24: x24
+STACK CFI 9f9d8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9f9dc .cfa: x29 160 + .ra: .cfa -152 + ^ x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^ x23: .cfa -112 + ^ x24: .cfa -104 + ^ x29: .cfa -160 + ^
+STACK CFI 9fac8 x23: x23 x24: x24
+STACK CFI 9fad4 x19: x19 x20: x20
+STACK CFI 9fad8 x21: x21 x22: x22
+STACK CFI 9fadc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9fae0 .cfa: x29 160 + .ra: .cfa -152 + ^ x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^ x23: .cfa -112 + ^ x24: .cfa -104 + ^ x29: .cfa -160 + ^
+STACK CFI 9fc10 x19: x19 x20: x20
+STACK CFI 9fc14 x21: x21 x22: x22
+STACK CFI 9fc18 x23: x23 x24: x24
+STACK CFI 9fc1c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI 9fc20 .cfa: x29 160 + .ra: .cfa -152 + ^ x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^ x23: .cfa -112 + ^ x24: .cfa -104 + ^ x29: .cfa -160 + ^
+STACK CFI INIT a0a78 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT a0a7c a8 .cfa: sp 0 + .ra: x30
+STACK CFI a0a80 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI a0a84 .cfa: x29 64 +
+STACK CFI a0a8c x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI a0aa0 x23: .cfa -16 + ^ x24: .cfa -8 + ^
+STACK CFI a0afc x19: x19 x20: x20
+STACK CFI a0b00 x21: x21 x22: x22
+STACK CFI a0b04 x23: x23 x24: x24
+STACK CFI a0b08 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI a0b0c .cfa: x29 64 + .ra: .cfa -56 + ^ x19: .cfa -48 + ^ x20: .cfa -40 + ^ x21: .cfa -32 + ^ x22: .cfa -24 + ^ x23: .cfa -16 + ^ x24: .cfa -8 + ^ x29: .cfa -64 + ^
+STACK CFI INIT a0b24 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT a0b2c 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT a0b30 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT a0b38 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT a0b3c 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT a0b50 34 .cfa: sp 0 + .ra: x30
+STACK CFI a0b58 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI a0b5c .cfa: x29 32 +
+STACK CFI a0b64 x19: .cfa -16 + ^
+STACK CFI a0b7c x19: x19
+STACK CFI a0b80 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT a0b84 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT a0b98 34 .cfa: sp 0 + .ra: x30
+STACK CFI a0ba0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI a0ba4 .cfa: x29 32 +
+STACK CFI a0bac x19: .cfa -16 + ^
+STACK CFI a0bc4 x19: x19
+STACK CFI a0bc8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT a0bcc 44 .cfa: sp 0 + .ra: x30
+STACK CFI a0bd0 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI a0bdc .cfa: x29 32 +
+STACK CFI a0be0 x19: .cfa -16 + ^
+STACK CFI a0c08 x19: x19
+STACK CFI a0c0c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT a0c10 44 .cfa: sp 0 + .ra: x30
+STACK CFI a0c14 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI a0c20 .cfa: x29 32 +
+STACK CFI a0c24 x19: .cfa -16 + ^
+STACK CFI a0c4c x19: x19
+STACK CFI a0c50 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT a0c54 28 .cfa: sp 0 + .ra: x30
+STACK CFI a0c58 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI a0c64 .cfa: x29 32 +
+STACK CFI a0c74 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT a0c7c a8 .cfa: sp 0 + .ra: x30
+STACK CFI a0c80 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI a0c84 .cfa: x29 48 +
+STACK CFI a0c88 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI a0c90 x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI a0cd8 x19: x19 x20: x20
+STACK CFI a0cdc x21: x21 x22: x22
+STACK CFI a0ce0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI a0ce4 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^ x29: .cfa -48 + ^
+STACK CFI INIT a0d24 28 .cfa: sp 0 + .ra: x30
+STACK CFI a0d28 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI a0d34 .cfa: x29 32 +
+STACK CFI a0d44 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT a0d4c 34 .cfa: sp 0 + .ra: x30
+STACK CFI INIT a0d80 aa4 .cfa: sp 0 + .ra: x30
+STACK CFI a0d88 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI a0d98 .cfa: x29 32 +
+STACK CFI a1820 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT a1824 100 .cfa: sp 0 + .ra: x30
+STACK CFI a1828 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI a1834 .cfa: x29 16 +
+STACK CFI a1920 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT a1924 13c .cfa: sp 0 + .ra: x30
+STACK CFI a1928 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI a1934 .cfa: x29 16 +
+STACK CFI a1a5c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT a1a60 6bc .cfa: sp 0 + .ra: x30
+STACK CFI a1a64 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI a1a70 .cfa: x29 32 +
+STACK CFI a2118 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT a211c 64 .cfa: sp 0 + .ra: x30
+STACK CFI INIT a2180 28 .cfa: sp 0 + .ra: x30
+STACK CFI INIT a21a8 40 .cfa: sp 0 + .ra: x30
+STACK CFI INIT a21e8 f0 .cfa: sp 0 + .ra: x30
+STACK CFI a21ec .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI a21f0 .cfa: x29 64 +
+STACK CFI a21f4 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI a2200 x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI a22cc x19: x19 x20: x20
+STACK CFI a22d0 x21: x21 x22: x22
+STACK CFI a22d4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT a22d8 114 .cfa: sp 0 + .ra: x30
+STACK CFI INIT a23ec 3c .cfa: sp 0 + .ra: x30
+STACK CFI a23f4 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI a23f8 .cfa: x29 16 +
+STACK CFI a2424 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT a2428 58 .cfa: sp 0 + .ra: x30
+STACK CFI a242c .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI a2434 .cfa: x29 16 +
+STACK CFI a247c .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT a2480 10c .cfa: sp 0 + .ra: x30
+STACK CFI a2484 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI a2488 .cfa: x29 64 +
+STACK CFI a248c x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI a2498 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI a2580 x19: x19 x20: x20
+STACK CFI a2584 x21: x21 x22: x22
+STACK CFI a2588 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT a258c 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT a2594 58 .cfa: sp 0 + .ra: x30
+STACK CFI a2598 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI a25a0 .cfa: x29 16 +
+STACK CFI a25e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT a25ec 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT a25f4 14 .cfa: sp 0 + .ra: x30
+STACK CFI INIT a2608 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT a2610 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT a2618 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT a2620 28 .cfa: sp 0 + .ra: x30
+STACK CFI a2624 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI a262c .cfa: x29 48 +
+STACK CFI a2640 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT a2648 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT a2650 8 .cfa: sp 0 + .ra: x30
+STACK CFI INIT a2658 78 .cfa: sp 0 + .ra: x30
+STACK CFI a265c .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI a266c .cfa: x29 16 +
+STACK CFI a26ac .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI a26b0 .cfa: x29 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI a26b4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI a26b8 .cfa: x29 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI a26bc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI a26c0 .cfa: x29 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI a26cc .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT a26d0 4f8 .cfa: sp 0 + .ra: x30
+STACK CFI a26d4 .cfa: sp 144 + .ra: .cfa -136 + ^ x29: .cfa -144 + ^
+STACK CFI a26d8 .cfa: x29 144 +
+STACK CFI a26ec x19: .cfa -128 + ^ x20: .cfa -120 + ^ x21: .cfa -112 + ^ x22: .cfa -104 + ^ x23: .cfa -96 + ^ x24: .cfa -88 + ^ x25: .cfa -80 + ^ x26: .cfa -72 + ^ x27: .cfa -64 + ^ x28: .cfa -56 + ^
+STACK CFI a2bac .cfa: sp 144 +
+STACK CFI a2bb0 x19: x19 x20: x20
+STACK CFI a2bb4 x21: x21 x22: x22
+STACK CFI a2bb8 x23: x23 x24: x24
+STACK CFI a2bbc x25: x25 x26: x26
+STACK CFI a2bc0 x27: x27 x28: x28
+STACK CFI a2bc4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT a2bc8 41c .cfa: sp 0 + .ra: x30
+STACK CFI a2bcc .cfa: sp 128 + .ra: .cfa -120 + ^ x29: .cfa -128 + ^
+STACK CFI a2bd4 .cfa: x29 128 +
+STACK CFI a2bdc x19: .cfa -112 + ^ x20: .cfa -104 + ^ x21: .cfa -96 + ^ x22: .cfa -88 + ^
+STACK CFI a2bf8 x23: .cfa -80 + ^ x24: .cfa -72 + ^ x25: .cfa -64 + ^ x26: .cfa -56 + ^ x27: .cfa -48 + ^ x28: .cfa -40 + ^
+STACK CFI a2fcc x19: x19 x20: x20
+STACK CFI a2fd0 x21: x21 x22: x22
+STACK CFI a2fd4 x23: x23 x24: x24
+STACK CFI a2fd8 x25: x25 x26: x26
+STACK CFI a2fdc x27: x27 x28: x28
+STACK CFI a2fe0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT a2fe4 598 .cfa: sp 0 + .ra: x30
+STACK CFI a2fe8 .cfa: sp 544 +
+STACK CFI a2ff0 .cfa: sp 656 + .ra: .cfa -648 + ^ x29: .cfa -656 + ^
+STACK CFI a2ff4 .cfa: x29 656 +
+STACK CFI a2ff8 x23: .cfa -608 + ^ x24: .cfa -600 + ^
+STACK CFI a3008 v8: .cfa -560 + ^
+STACK CFI a3010 x27: .cfa -576 + ^ x28: .cfa -568 + ^
+STACK CFI a3024 x19: .cfa -640 + ^ x20: .cfa -632 + ^ x21: .cfa -624 + ^ x22: .cfa -616 + ^ x25: .cfa -592 + ^ x26: .cfa -584 + ^
+STACK CFI a3558 x21: x21 x22: x22
+STACK CFI a355c x25: x25 x26: x26
+STACK CFI a3564 x19: x19 x20: x20
+STACK CFI a3568 x23: x23 x24: x24
+STACK CFI a356c x27: x27 x28: x28
+STACK CFI a3570 v8: v8
+STACK CFI a3574 .cfa: sp 544 + .ra: .ra x29: x29
+STACK CFI a3578 .cfa: sp 432 +
+STACK CFI INIT a357c 224 .cfa: sp 0 + .ra: x30
+STACK CFI a3580 .cfa: sp 976 +
+STACK CFI a3588 .cfa: sp 1088 + .ra: .cfa -1080 + ^ x29: .cfa -1088 + ^
+STACK CFI a358c .cfa: x29 1088 +
+STACK CFI a3594 x19: .cfa -1072 + ^ x20: .cfa -1064 + ^ x21: .cfa -1056 + ^ x22: .cfa -1048 + ^
+STACK CFI a35a4 x25: .cfa -1024 + ^ x26: .cfa -1016 + ^
+STACK CFI a35b8 v8: .cfa -992 + ^ x23: .cfa -1040 + ^ x24: .cfa -1032 + ^ x27: .cfa -1008 + ^ x28: .cfa -1000 + ^
+STACK CFI a3780 x21: x21 x22: x22
+STACK CFI a3784 x19: x19 x20: x20
+STACK CFI a3788 x23: x23 x24: x24
+STACK CFI a378c x25: x25 x26: x26
+STACK CFI a3790 x27: x27 x28: x28
+STACK CFI a3794 v8: v8
+STACK CFI a3798 .cfa: sp 976 + .ra: .ra x29: x29
+STACK CFI a379c .cfa: sp 864 +
+STACK CFI INIT a37a0 cc .cfa: sp 0 + .ra: x30
+STACK CFI a37a4 .cfa: sp 1680 +
+STACK CFI a37a8 .cfa: sp 1744 + .ra: .cfa -1736 + ^ x29: .cfa -1744 + ^
+STACK CFI a37ac .cfa: x29 1744 +
+STACK CFI a37b4 x19: .cfa -1728 + ^ x20: .cfa -1720 + ^ x21: .cfa -1712 + ^ x22: .cfa -1704 + ^
+STACK CFI a37bc x23: .cfa -1696 + ^
+STACK CFI a3858 x23: x23
+STACK CFI a385c x19: x19 x20: x20
+STACK CFI a3860 x21: x21 x22: x22
+STACK CFI a3864 .cfa: sp 1680 + .ra: .ra x29: x29
+STACK CFI a3868 .cfa: sp 1616 +
+STACK CFI INIT a386c 4c .cfa: sp 0 + .ra: x30
+STACK CFI a3870 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI a3874 .cfa: x29 32 +
+STACK CFI a3878 x19: .cfa -16 + ^ x20: .cfa -8 + ^
+STACK CFI a38b0 x19: x19 x20: x20
+STACK CFI a38b4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT a38b8 c0 .cfa: sp 0 + .ra: x30
+STACK CFI a38bc .cfa: sp 1664 +
+STACK CFI a38c0 .cfa: sp 1728 + .ra: .cfa -1720 + ^ x29: .cfa -1728 + ^
+STACK CFI a38c4 .cfa: x29 1728 +
+STACK CFI a38d0 x19: .cfa -1712 + ^ x20: .cfa -1704 + ^ x21: .cfa -1696 + ^ x22: .cfa -1688 + ^ x23: .cfa -1680 + ^ x24: .cfa -1672 + ^
+STACK CFI a3964 x19: x19 x20: x20
+STACK CFI a3968 x21: x21 x22: x22
+STACK CFI a396c x23: x23 x24: x24
+STACK CFI a3970 .cfa: sp 1664 + .ra: .ra x29: x29
+STACK CFI a3974 .cfa: sp 1600 +
+STACK CFI INIT a3978 ec .cfa: sp 0 + .ra: x30
+STACK CFI a397c .cfa: sp 1664 +
+STACK CFI a3980 .cfa: sp 1744 + .ra: .cfa -1736 + ^ x29: .cfa -1744 + ^
+STACK CFI a3984 .cfa: x29 1744 +
+STACK CFI a3988 x23: .cfa -1696 + ^ x24: .cfa -1688 + ^
+STACK CFI a399c x19: .cfa -1728 + ^ x20: .cfa -1720 + ^ x21: .cfa -1712 + ^ x22: .cfa -1704 + ^ x25: .cfa -1680 + ^ x26: .cfa -1672 + ^
+STACK CFI a3a4c x19: x19 x20: x20
+STACK CFI a3a50 x21: x21 x22: x22
+STACK CFI a3a54 x23: x23 x24: x24
+STACK CFI a3a58 x25: x25 x26: x26
+STACK CFI a3a5c .cfa: sp 1664 + .ra: .ra x29: x29
+STACK CFI a3a60 .cfa: sp 1584 +
+STACK CFI INIT a3a64 f4 .cfa: sp 0 + .ra: x30
+STACK CFI a3a68 .cfa: sp 2624 +
+STACK CFI a3a70 .cfa: sp 2672 + .ra: .cfa -2664 + ^ x29: .cfa -2672 + ^
+STACK CFI a3a74 .cfa: x29 2672 +
+STACK CFI a3a78 x19: .cfa -2656 + ^ x20: .cfa -2648 + ^
+STACK CFI a3a80 x21: .cfa -2640 + ^
+STACK CFI a3b44 x19: x19 x20: x20
+STACK CFI a3b48 x21: x21
+STACK CFI a3b50 .cfa: sp 2624 + .ra: .ra x29: x29
+STACK CFI a3b54 .cfa: sp 2576 +
+STACK CFI INIT a3b58 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT a3b5c 188 .cfa: sp 0 + .ra: x30
+STACK CFI a3b60 .cfa: sp 3600 +
+STACK CFI a3b64 .cfa: sp 3792 + .ra: .cfa -3784 + ^ x29: .cfa -3792 + ^
+STACK CFI a3b68 .cfa: x29 3792 +
+STACK CFI a3b70 v8: .cfa -3664 + ^ v9: .cfa -3656 + ^ x21: .cfa -3728 + ^ x22: .cfa -3720 + ^
+STACK CFI a3b8c v10: .cfa -3648 + ^ v11: .cfa -3640 + ^ v12: .cfa -3632 + ^ v13: .cfa -3624 + ^ v14: .cfa -3616 + ^ v15: .cfa -3608 + ^ x0: .cfa -3776 + ^ x1: .cfa -3768 + ^ x19: .cfa -3744 + ^ x2: .cfa -3760 + ^ x20: .cfa -3736 + ^ x3: .cfa -3752 + ^
+STACK CFI a3ba8 x23: .cfa -3712 + ^ x24: .cfa -3704 + ^ x25: .cfa -3696 + ^ x26: .cfa -3688 + ^ x27: .cfa -3680 + ^ x28: .cfa -3672 + ^
+STACK CFI a3ca8 x2: x2 x3: x3
+STACK CFI a3cac v8: v8 v9: v9
+STACK CFI a3cb0 x19: x19 x20: x20
+STACK CFI a3cb4 v10: v10 v11: v11
+STACK CFI a3cb8 x21: x21 x22: x22
+STACK CFI a3cbc v12: v12 v13: v13
+STACK CFI a3cc0 x23: x23 x24: x24
+STACK CFI a3cc4 v14: v14 v15: v15
+STACK CFI a3cc8 x25: x25 x26: x26
+STACK CFI a3ccc x27: x27 x28: x28
+STACK CFI a3cd0 x0: x0 x1: x1
+STACK CFI a3cd4 .cfa: sp 3600 + .ra: .ra x29: x29
+STACK CFI a3cd8 .cfa: x16 0 +
+STACK CFI INIT a3ce4 f4 .cfa: sp 0 + .ra: x30
+STACK CFI a3ce8 .cfa: sp 1936 +
+STACK CFI a3cec .cfa: sp 2128 + .ra: .cfa -2120 + ^ x29: .cfa -2128 + ^
+STACK CFI a3cf0 .cfa: x29 2128 +
+STACK CFI a3cf8 v8: .cfa -2000 + ^ v9: .cfa -1992 + ^ x19: .cfa -2080 + ^ x20: .cfa -2072 + ^
+STACK CFI a3d18 v10: .cfa -1984 + ^ v11: .cfa -1976 + ^ v12: .cfa -1968 + ^ v13: .cfa -1960 + ^ v14: .cfa -1952 + ^ v15: .cfa -1944 + ^ x0: .cfa -2112 + ^ x1: .cfa -2104 + ^ x2: .cfa -2096 + ^ x21: .cfa -2064 + ^ x22: .cfa -2056 + ^ x23: .cfa -2048 + ^ x24: .cfa -2040 + ^ x3: .cfa -2088 + ^
+STACK CFI a3d3c x25: .cfa -2032 + ^ x26: .cfa -2024 + ^ x27: .cfa -2016 + ^ x28: .cfa -2008 + ^
+STACK CFI a3d9c x2: x2 x3: x3
+STACK CFI a3da0 v8: v8 v9: v9
+STACK CFI a3da4 x19: x19 x20: x20
+STACK CFI a3da8 v10: v10 v11: v11
+STACK CFI a3dac x21: x21 x22: x22
+STACK CFI a3db0 v12: v12 v13: v13
+STACK CFI a3db4 x23: x23 x24: x24
+STACK CFI a3db8 v14: v14 v15: v15
+STACK CFI a3dbc x25: x25 x26: x26
+STACK CFI a3dc0 x27: x27 x28: x28
+STACK CFI a3dc4 x0: x0 x1: x1
+STACK CFI a3dc8 .cfa: sp 1936 + .ra: .ra x29: x29
+STACK CFI a3dcc .cfa: x16 0 +
+STACK CFI INIT a3dd8 fc .cfa: sp 0 + .ra: x30
+STACK CFI a3ddc .cfa: sp 1936 +
+STACK CFI a3de0 .cfa: sp 2128 + .ra: .cfa -2120 + ^ x29: .cfa -2128 + ^
+STACK CFI a3de4 .cfa: x29 2128 +
+STACK CFI a3dec v8: .cfa -2000 + ^ v9: .cfa -1992 + ^ x19: .cfa -2080 + ^ x20: .cfa -2072 + ^
+STACK CFI a3e04 v10: .cfa -1984 + ^ v11: .cfa -1976 + ^ v12: .cfa -1968 + ^ v13: .cfa -1960 + ^ v14: .cfa -1952 + ^ v15: .cfa -1944 + ^ x0: .cfa -2112 + ^ x1: .cfa -2104 + ^ x2: .cfa -2096 + ^ x3: .cfa -2088 + ^
+STACK CFI a3e10 x21: .cfa -2064 + ^ x22: .cfa -2056 + ^
+STACK CFI a3e24 x23: .cfa -2048 + ^ x24: .cfa -2040 + ^ x25: .cfa -2032 + ^ x26: .cfa -2024 + ^ x27: .cfa -2016 + ^ x28: .cfa -2008 + ^
+STACK CFI a3e98 v8: v8 v9: v9
+STACK CFI a3e9c x0: x0 x1: x1
+STACK CFI a3ea0 v10: v10 v11: v11
+STACK CFI a3ea4 x2: x2 x3: x3
+STACK CFI a3ea8 v12: v12 v13: v13
+STACK CFI a3eac x19: x19 x20: x20
+STACK CFI a3eb0 v14: v14 v15: v15
+STACK CFI a3eb4 x21: x21 x22: x22
+STACK CFI a3eb8 x23: x23 x24: x24
+STACK CFI a3ebc x25: x25 x26: x26
+STACK CFI a3ec0 x27: x27 x28: x28
+STACK CFI a3ec4 .cfa: sp 1936 + .ra: .ra x29: x29
+STACK CFI a3ec8 .cfa: x16 0 +
+STACK CFI INIT a3ed4 fc .cfa: sp 0 + .ra: x30
+STACK CFI a3ed8 .cfa: sp 1936 +
+STACK CFI a3edc .cfa: sp 2128 + .ra: .cfa -2120 + ^ x29: .cfa -2128 + ^
+STACK CFI a3ee0 .cfa: x29 2128 +
+STACK CFI a3f10 v10: .cfa -1984 + ^ v11: .cfa -1976 + ^ v12: .cfa -1968 + ^ v13: .cfa -1960 + ^ v14: .cfa -1952 + ^ v15: .cfa -1944 + ^ v8: .cfa -2000 + ^ v9: .cfa -1992 + ^ x0: .cfa -2112 + ^ x1: .cfa -2104 + ^ x19: .cfa -2080 + ^ x2: .cfa -2096 + ^ x20: .cfa -2072 + ^ x21: .cfa -2064 + ^ x22: .cfa -2056 + ^ x23: .cfa -2048 + ^ x24: .cfa -2040 + ^ x25: .cfa -2032 + ^ x26: .cfa -2024 + ^ x27: .cfa -2016 + ^ x28: .cfa -2008 + ^ x3: .cfa -2088 + ^
+STACK CFI a3f94 x2: x2 x3: x3
+STACK CFI a3f98 v8: v8 v9: v9
+STACK CFI a3f9c x19: x19 x20: x20
+STACK CFI a3fa0 v10: v10 v11: v11
+STACK CFI a3fa4 x21: x21 x22: x22
+STACK CFI a3fa8 v12: v12 v13: v13
+STACK CFI a3fac x23: x23 x24: x24
+STACK CFI a3fb0 v14: v14 v15: v15
+STACK CFI a3fb4 x25: x25 x26: x26
+STACK CFI a3fb8 x27: x27 x28: x28
+STACK CFI a3fbc x0: x0 x1: x1
+STACK CFI a3fc0 .cfa: sp 1936 + .ra: .ra x29: x29
+STACK CFI a3fc4 .cfa: x16 0 +
+STACK CFI INIT a3fd0 24 .cfa: sp 0 + .ra: x30
+STACK CFI a3fd4 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI a3fd8 .cfa: x29 16 +
+STACK CFI a3ff0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT a3ff4 d0 .cfa: sp 0 + .ra: x30
+STACK CFI a3ff8 .cfa: sp 2624 +
+STACK CFI a4000 .cfa: sp 2784 + .ra: .cfa -2776 + ^ x29: .cfa -2784 + ^
+STACK CFI a4004 .cfa: x29 2784 +
+STACK CFI a400c v8: .cfa -2688 + ^ v9: .cfa -2680 + ^ x19: .cfa -2768 + ^ x20: .cfa -2760 + ^
+STACK CFI a4024 v10: .cfa -2672 + ^ v11: .cfa -2664 + ^ v12: .cfa -2656 + ^ v13: .cfa -2648 + ^ v14: .cfa -2640 + ^ v15: .cfa -2632 + ^ x21: .cfa -2752 + ^ x22: .cfa -2744 + ^ x23: .cfa -2736 + ^ x24: .cfa -2728 + ^
+STACK CFI a4040 x25: .cfa -2720 + ^ x26: .cfa -2712 + ^ x27: .cfa -2704 + ^ x28: .cfa -2696 + ^
+STACK CFI a4098 x19: x19 x20: x20
+STACK CFI a409c v8: v8 v9: v9
+STACK CFI a40a0 x21: x21 x22: x22
+STACK CFI a40a4 v10: v10 v11: v11
+STACK CFI a40a8 x23: x23 x24: x24
+STACK CFI a40ac v12: v12 v13: v13
+STACK CFI a40b0 x25: x25 x26: x26
+STACK CFI a40b4 v14: v14 v15: v15
+STACK CFI a40b8 x27: x27 x28: x28
+STACK CFI a40bc .cfa: sp 2624 + .ra: .ra x29: x29
+STACK CFI a40c0 .cfa: sp 2464 +
+STACK CFI INIT a40c4 28 .cfa: sp 0 + .ra: x30
+STACK CFI INIT a40ec 40 .cfa: sp 0 + .ra: x30
+STACK CFI INIT a412c 1c .cfa: sp 0 + .ra: x30
+STACK CFI INIT a4148 c0 .cfa: sp 0 + .ra: x30
+STACK CFI a414c .cfa: sp 96 + .ra: .cfa -88 + ^ x29: .cfa -96 + ^
+STACK CFI a4150 .cfa: x29 96 +
+STACK CFI a4154 x19: .cfa -80 + ^ x20: .cfa -72 + ^
+STACK CFI a4164 x21: .cfa -64 + ^ x22: .cfa -56 + ^ x23: .cfa -48 + ^ x24: .cfa -40 + ^ x25: .cfa -32 + ^
+STACK CFI a41f4 x19: x19 x20: x20
+STACK CFI a41f8 x21: x21 x22: x22
+STACK CFI a41fc x23: x23 x24: x24
+STACK CFI a4200 x25: x25
+STACK CFI a4204 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT a4208 b4 .cfa: sp 0 + .ra: x30
+STACK CFI a420c .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI a4210 .cfa: x29 80 +
+STACK CFI a4214 x19: .cfa -64 + ^ x20: .cfa -56 + ^
+STACK CFI a4224 x21: .cfa -48 + ^ x22: .cfa -40 + ^ x23: .cfa -32 + ^ x24: .cfa -24 + ^ x25: .cfa -16 + ^
+STACK CFI a42a8 x19: x19 x20: x20
+STACK CFI a42ac x21: x21 x22: x22
+STACK CFI a42b0 x23: x23 x24: x24
+STACK CFI a42b4 x25: x25
+STACK CFI a42b8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT a42bc 60 .cfa: sp 0 + .ra: x30
+STACK CFI a42c0 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI a42cc .cfa: x29 16 +
+STACK CFI a4318 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT a431c 60 .cfa: sp 0 + .ra: x30
+STACK CFI a4320 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI a432c .cfa: x29 16 +
+STACK CFI a4378 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT a437c 60 .cfa: sp 0 + .ra: x30
+STACK CFI a4380 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI a438c .cfa: x29 16 +
+STACK CFI a43d8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT a43dc f0 .cfa: sp 0 + .ra: x30
+STACK CFI a43e0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI a43e4 .cfa: x29 64 +
+STACK CFI a43e8 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI a43f4 x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI a44c0 x19: x19 x20: x20
+STACK CFI a44c4 x21: x21 x22: x22
+STACK CFI a44c8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT a44cc 90 .cfa: sp 0 + .ra: x30
+STACK CFI a44d0 .cfa: sp 80 + .ra: .cfa -72 + ^ x29: .cfa -80 + ^
+STACK CFI a44d4 .cfa: x29 80 +
+STACK CFI a44d8 x19: .cfa -64 + ^ x20: .cfa -56 + ^
+STACK CFI a44e4 x23: .cfa -32 + ^
+STACK CFI a44f8 x21: .cfa -48 + ^ x22: .cfa -40 + ^
+STACK CFI a454c x19: x19 x20: x20
+STACK CFI a4550 x21: x21 x22: x22
+STACK CFI a4554 x23: x23
+STACK CFI a4558 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT a455c fc .cfa: sp 0 + .ra: x30
+STACK CFI a4560 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI a4564 .cfa: x29 64 +
+STACK CFI a4568 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI a4650 x19: x19 x20: x20
+STACK CFI a4654 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT a4658 160 .cfa: sp 0 + .ra: x30
+STACK CFI a465c .cfa: sp 112 + .ra: .cfa -104 + ^ x29: .cfa -112 + ^
+STACK CFI a4660 .cfa: x29 112 +
+STACK CFI a4664 x21: .cfa -80 + ^ x22: .cfa -72 + ^
+STACK CFI a4674 x19: .cfa -96 + ^ x20: .cfa -88 + ^
+STACK CFI a4688 x23: .cfa -64 + ^ x24: .cfa -56 + ^ x25: .cfa -48 + ^ x26: .cfa -40 + ^ x27: .cfa -32 + ^ x28: .cfa -24 + ^
+STACK CFI a47a0 x19: x19 x20: x20
+STACK CFI a47a4 x21: x21 x22: x22
+STACK CFI a47a8 x23: x23 x24: x24
+STACK CFI a47ac x25: x25 x26: x26
+STACK CFI a47b0 x27: x27 x28: x28
+STACK CFI a47b4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT a47b8 10 .cfa: sp 0 + .ra: x30
+STACK CFI INIT a47c8 414 .cfa: sp 0 + .ra: x30
+STACK CFI a47cc .cfa: sp 144 + .ra: .cfa -136 + ^ x29: .cfa -144 + ^
+STACK CFI a47d4 .cfa: x29 144 +
+STACK CFI a47e0 x19: .cfa -128 + ^ x20: .cfa -120 + ^ x21: .cfa -112 + ^ x22: .cfa -104 + ^ x23: .cfa -96 + ^ x24: .cfa -88 + ^
+STACK CFI a4bcc x19: x19 x20: x20
+STACK CFI a4bd0 x21: x21 x22: x22
+STACK CFI a4bd4 x23: x23 x24: x24
+STACK CFI a4bd8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT a4bdc 9c .cfa: sp 0 + .ra: x30
+STACK CFI a4be0 .cfa: sp 64 + .ra: .cfa -56 + ^ x29: .cfa -64 + ^
+STACK CFI a4be4 .cfa: x29 64 +
+STACK CFI a4be8 x21: .cfa -32 + ^ x22: .cfa -24 + ^
+STACK CFI a4bf4 x19: .cfa -48 + ^ x20: .cfa -40 + ^
+STACK CFI a4c6c x19: x19 x20: x20
+STACK CFI a4c70 x21: x21 x22: x22
+STACK CFI a4c74 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT a4c78 160 .cfa: sp 0 + .ra: x30
+STACK CFI a4c7c .cfa: sp 112 + .ra: .cfa -104 + ^ x29: .cfa -112 + ^
+STACK CFI a4c80 .cfa: x29 112 +
+STACK CFI a4c84 x23: .cfa -64 + ^ x24: .cfa -56 + ^
+STACK CFI a4c98 x19: .cfa -96 + ^ x20: .cfa -88 + ^ x21: .cfa -80 + ^ x22: .cfa -72 + ^ x25: .cfa -48 + ^ x26: .cfa -40 + ^ x27: .cfa -32 + ^
+STACK CFI a4dc0 x19: x19 x20: x20
+STACK CFI a4dc4 x21: x21 x22: x22
+STACK CFI a4dc8 x23: x23 x24: x24
+STACK CFI a4dcc x25: x25 x26: x26
+STACK CFI a4dd0 x27: x27
+STACK CFI a4dd4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT a4dd8 134 .cfa: sp 0 + .ra: x30
+STACK CFI a4ddc .cfa: sp 112 + .ra: .cfa -104 + ^ x29: .cfa -112 + ^
+STACK CFI a4de0 .cfa: x29 112 +
+STACK CFI a4de4 x21: .cfa -80 + ^ x22: .cfa -72 + ^
+STACK CFI a4df4 x23: .cfa -64 + ^ x24: .cfa -56 + ^
+STACK CFI a4e08 x19: .cfa -96 + ^ x20: .cfa -88 + ^ x25: .cfa -48 + ^ x26: .cfa -40 + ^ x27: .cfa -32 + ^
+STACK CFI a4ef4 x19: x19 x20: x20
+STACK CFI a4ef8 x21: x21 x22: x22
+STACK CFI a4efc x23: x23 x24: x24
+STACK CFI a4f00 x25: x25 x26: x26
+STACK CFI a4f04 x27: x27
+STACK CFI a4f08 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT a4f0c 578 .cfa: sp 0 + .ra: x30
+STACK CFI a4f10 .cfa: sp 160 + .ra: .cfa -152 + ^ x29: .cfa -160 + ^
+STACK CFI a4f14 .cfa: x29 160 +
+STACK CFI a4f18 x23: .cfa -112 + ^ x24: .cfa -104 + ^
+STACK CFI a4f34 v8: .cfa -64 + ^ x19: .cfa -144 + ^ x20: .cfa -136 + ^ x21: .cfa -128 + ^ x22: .cfa -120 + ^ x25: .cfa -96 + ^ x26: .cfa -88 + ^ x27: .cfa -80 + ^ x28: .cfa -72 + ^
+STACK CFI a5468 x19: x19 x20: x20
+STACK CFI a546c x21: x21 x22: x22
+STACK CFI a5470 x23: x23 x24: x24
+STACK CFI a5474 x25: x25 x26: x26
+STACK CFI a5478 x27: x27 x28: x28
+STACK CFI a547c v8: v8
+STACK CFI a5480 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT a5484 84 .cfa: sp 0 + .ra: x30
+STACK CFI a5488 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI a548c .cfa: x29 48 +
+STACK CFI a5494 x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^
+STACK CFI a54ec x21: x21
+STACK CFI a54f0 x19: x19 x20: x20
+STACK CFI a54f4 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI a54f8 .cfa: x29 48 + .ra: .cfa -40 + ^ x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x29: .cfa -48 + ^
+STACK CFI a54fc x19: x19 x20: x20
+STACK CFI a5500 x21: x21
+STACK CFI a5504 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT a5508 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT a5514 40 .cfa: sp 0 + .ra: x30
+STACK CFI a5518 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI a551c .cfa: x29 32 +
+STACK CFI a5524 x19: .cfa -16 + ^
+STACK CFI a5540 x19: x19
+STACK CFI a5544 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI a5548 .cfa: x29 32 + .ra: .cfa -24 + ^ x19: .cfa -16 + ^ x29: .cfa -32 + ^
+STACK CFI a554c x19: x19
+STACK CFI a5550 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT a5554 70 .cfa: sp 0 + .ra: x30
+STACK CFI a5558 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI a5560 .cfa: x29 48 +
+STACK CFI a5564 x19: .cfa -32 + ^ x20: .cfa -24 + ^
+STACK CFI a55bc x19: x19 x20: x20
+STACK CFI a55c0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT a55c4 c .cfa: sp 0 + .ra: x30
+STACK CFI INIT a55d0 2c .cfa: sp 0 + .ra: x30
+STACK CFI a55d4 .cfa: sp 32 + .ra: .cfa -24 + ^ x29: .cfa -32 + ^
+STACK CFI a55d8 .cfa: x29 32 +
+STACK CFI a55dc x19: .cfa -16 + ^
+STACK CFI a55f4 x19: x19
+STACK CFI a55f8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT a55fc f0 .cfa: sp 0 + .ra: x30
+STACK CFI a5600 .cfa: sp 48 + .ra: .cfa -40 + ^ x29: .cfa -48 + ^
+STACK CFI a5604 .cfa: x29 48 +
+STACK CFI a560c x19: .cfa -32 + ^ x20: .cfa -24 + ^ x21: .cfa -16 + ^ x22: .cfa -8 + ^
+STACK CFI a56e0 x19: x19 x20: x20
+STACK CFI a56e4 x21: x21 x22: x22
+STACK CFI a56e8 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT a56ec 4 .cfa: sp 0 + .ra: x30
+STACK CFI INIT a56f0 24 .cfa: sp 0 + .ra: x30
+STACK CFI a56f4 .cfa: sp 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI a56f8 .cfa: x29 16 +
+STACK CFI a5708 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI a570c .cfa: x29 16 + .ra: .cfa -8 + ^ x29: .cfa -16 + ^
+STACK CFI a5710 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT a5714 190 .cfa: sp 0 + .ra: x30
+STACK CFI a5718 .cfa: sp 112 + .ra: .cfa -104 + ^ x29: .cfa -112 + ^
+STACK CFI a571c .cfa: x29 112 +
+STACK CFI a5720 x21: .cfa -80 + ^ x22: .cfa -72 + ^
+STACK CFI a572c x19: .cfa -96 + ^ x20: .cfa -88 + ^
+STACK CFI a5734 x23: .cfa -64 + ^ x24: .cfa -56 + ^
+STACK CFI a5894 x19: x19 x20: x20
+STACK CFI a5898 x21: x21 x22: x22
+STACK CFI a589c x23: x23 x24: x24
+STACK CFI a58a0 .cfa: sp 0 + .ra: .ra x29: x29
+STACK CFI INIT a58a4 60 .cfa: sp 0 + .ra: x30
diff --git a/google-breakpad/src/processor/testdata/symbols/microdump/breakpad_unittests/DA7778FB66018A4E9B4110ED06E730D00/breakpad_unittests.sym b/google-breakpad/src/processor/testdata/symbols/microdump/breakpad_unittests/DA7778FB66018A4E9B4110ED06E730D00/breakpad_unittests.sym
new file mode 100644
index 0000000..2ea3faa
--- /dev/null
+++ b/google-breakpad/src/processor/testdata/symbols/microdump/breakpad_unittests/DA7778FB66018A4E9B4110ED06E730D00/breakpad_unittests.sym
@@ -0,0 +1,66343 @@
+MODULE Linux arm DA7778FB66018A4E9B4110ED06E730D00 breakpad_unittests
+FILE 0 /s/clank/src/out_arm/Release/../../breakpad/src/client/linux/crash_generation/crash_generation_client.cc
+FILE 1 /s/clank/src/out_arm/Release/../../breakpad/src/client/linux/dump_writer_common/seccomp_unwinder.cc
+FILE 2 /s/clank/src/out_arm/Release/../../breakpad/src/client/linux/dump_writer_common/thread_info.cc
+FILE 3 /s/clank/src/out_arm/Release/../../breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc
+FILE 4 /s/clank/src/out_arm/Release/../../breakpad/src/client/linux/handler/exception_handler.cc
+FILE 5 /s/clank/src/out_arm/Release/../../breakpad/src/client/linux/handler/exception_handler.h
+FILE 6 /s/clank/src/out_arm/Release/../../breakpad/src/client/linux/handler/exception_handler_unittest.cc
+FILE 7 /s/clank/src/out_arm/Release/../../breakpad/src/client/linux/handler/minidump_descriptor.cc
+FILE 8 /s/clank/src/out_arm/Release/../../breakpad/src/client/linux/handler/minidump_descriptor.h
+FILE 9 /s/clank/src/out_arm/Release/../../breakpad/src/client/linux/log/log.cc
+FILE 10 /s/clank/src/out_arm/Release/../../breakpad/src/client/linux/microdump_writer/microdump_writer.cc
+FILE 11 /s/clank/src/out_arm/Release/../../breakpad/src/client/linux/microdump_writer/microdump_writer_unittest.cc
+FILE 12 /s/clank/src/out_arm/Release/../../breakpad/src/client/linux/minidump_writer/cpu_set.h
+FILE 13 /s/clank/src/out_arm/Release/../../breakpad/src/client/linux/minidump_writer/cpu_set_unittest.cc
+FILE 14 /s/clank/src/out_arm/Release/../../breakpad/src/client/linux/minidump_writer/directory_reader.h
+FILE 15 /s/clank/src/out_arm/Release/../../breakpad/src/client/linux/minidump_writer/directory_reader_unittest.cc
+FILE 16 /s/clank/src/out_arm/Release/../../breakpad/src/client/linux/minidump_writer/line_reader.h
+FILE 17 /s/clank/src/out_arm/Release/../../breakpad/src/client/linux/minidump_writer/line_reader_unittest.cc
+FILE 18 /s/clank/src/out_arm/Release/../../breakpad/src/client/linux/minidump_writer/linux_core_dumper.cc
+FILE 19 /s/clank/src/out_arm/Release/../../breakpad/src/client/linux/minidump_writer/linux_core_dumper.h
+FILE 20 /s/clank/src/out_arm/Release/../../breakpad/src/client/linux/minidump_writer/linux_core_dumper_unittest.cc
+FILE 21 /s/clank/src/out_arm/Release/../../breakpad/src/client/linux/minidump_writer/linux_dumper.cc
+FILE 22 /s/clank/src/out_arm/Release/../../breakpad/src/client/linux/minidump_writer/linux_dumper.h
+FILE 23 /s/clank/src/out_arm/Release/../../breakpad/src/client/linux/minidump_writer/linux_ptrace_dumper.cc
+FILE 24 /s/clank/src/out_arm/Release/../../breakpad/src/client/linux/minidump_writer/linux_ptrace_dumper.h
+FILE 25 /s/clank/src/out_arm/Release/../../breakpad/src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc
+FILE 26 /s/clank/src/out_arm/Release/../../breakpad/src/client/linux/minidump_writer/minidump_writer.cc
+FILE 27 /s/clank/src/out_arm/Release/../../breakpad/src/client/linux/minidump_writer/minidump_writer_unittest.cc
+FILE 28 /s/clank/src/out_arm/Release/../../breakpad/src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc
+FILE 29 /s/clank/src/out_arm/Release/../../breakpad/src/client/linux/minidump_writer/proc_cpuinfo_reader.h
+FILE 30 /s/clank/src/out_arm/Release/../../breakpad/src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc
+FILE 31 /s/clank/src/out_arm/Release/../../breakpad/src/client/minidump_file_writer-inl.h
+FILE 32 /s/clank/src/out_arm/Release/../../breakpad/src/client/minidump_file_writer.cc
+FILE 33 /s/clank/src/out_arm/Release/../../breakpad/src/client/minidump_file_writer.h
+FILE 34 /s/clank/src/out_arm/Release/../../breakpad/src/common/android/breakpad_getcontext_unittest.cc
+FILE 35 /s/clank/src/out_arm/Release/../../breakpad/src/common/android/testing/mkdtemp.h
+FILE 36 /s/clank/src/out_arm/Release/../../breakpad/src/common/android/testing/pthread_fixes.h
+FILE 37 /s/clank/src/out_arm/Release/../../breakpad/src/common/convert_UTF.c
+FILE 38 /s/clank/src/out_arm/Release/../../breakpad/src/common/linux/elf_core_dump.cc
+FILE 39 /s/clank/src/out_arm/Release/../../breakpad/src/common/linux/elf_core_dump_unittest.cc
+FILE 40 /s/clank/src/out_arm/Release/../../breakpad/src/common/linux/elfutils-inl.h
+FILE 41 /s/clank/src/out_arm/Release/../../breakpad/src/common/linux/elfutils.cc
+FILE 42 /s/clank/src/out_arm/Release/../../breakpad/src/common/linux/file_id.cc
+FILE 43 /s/clank/src/out_arm/Release/../../breakpad/src/common/linux/file_id_unittest.cc
+FILE 44 /s/clank/src/out_arm/Release/../../breakpad/src/common/linux/guid_creator.cc
+FILE 45 /s/clank/src/out_arm/Release/../../breakpad/src/common/linux/linux_libc_support.cc
+FILE 46 /s/clank/src/out_arm/Release/../../breakpad/src/common/linux/linux_libc_support_unittest.cc
+FILE 47 /s/clank/src/out_arm/Release/../../breakpad/src/common/linux/memory_mapped_file.cc
+FILE 48 /s/clank/src/out_arm/Release/../../breakpad/src/common/linux/safe_readlink.cc
+FILE 49 /s/clank/src/out_arm/Release/../../breakpad/src/common/linux/safe_readlink.h
+FILE 50 /s/clank/src/out_arm/Release/../../breakpad/src/common/linux/synth_elf.cc
+FILE 51 /s/clank/src/out_arm/Release/../../breakpad/src/common/linux/synth_elf.h
+FILE 52 /s/clank/src/out_arm/Release/../../breakpad/src/common/linux/tests/auto_testfile.h
+FILE 53 /s/clank/src/out_arm/Release/../../breakpad/src/common/linux/tests/crash_generator.cc
+FILE 54 /s/clank/src/out_arm/Release/../../breakpad/src/common/memory.h
+FILE 55 /s/clank/src/out_arm/Release/../../breakpad/src/common/memory_range.h
+FILE 56 /s/clank/src/out_arm/Release/../../breakpad/src/common/memory_unittest.cc
+FILE 57 /s/clank/src/out_arm/Release/../../breakpad/src/common/scoped_ptr.h
+FILE 58 /s/clank/src/out_arm/Release/../../breakpad/src/common/simple_string_dictionary.h
+FILE 59 /s/clank/src/out_arm/Release/../../breakpad/src/common/simple_string_dictionary_unittest.cc
+FILE 60 /s/clank/src/out_arm/Release/../../breakpad/src/common/string_conversion.cc
+FILE 61 /s/clank/src/out_arm/Release/../../breakpad/src/common/test_assembler.cc
+FILE 62 /s/clank/src/out_arm/Release/../../breakpad/src/common/test_assembler.h
+FILE 63 /s/clank/src/out_arm/Release/../../breakpad/src/common/tests/auto_tempdir.h
+FILE 64 /s/clank/src/out_arm/Release/../../breakpad/src/common/tests/file_utils.cc
+FILE 65 /s/clank/src/out_arm/Release/../../breakpad/src/google_breakpad/processor/minidump.h
+FILE 66 /s/clank/src/out_arm/Release/../../breakpad/src/processor/basic_code_module.h
+FILE 67 /s/clank/src/out_arm/Release/../../breakpad/src/processor/basic_code_modules.cc
+FILE 68 /s/clank/src/out_arm/Release/../../breakpad/src/processor/dump_context.cc
+FILE 69 /s/clank/src/out_arm/Release/../../breakpad/src/processor/dump_object.cc
+FILE 70 /s/clank/src/out_arm/Release/../../breakpad/src/processor/linked_ptr.h
+FILE 71 /s/clank/src/out_arm/Release/../../breakpad/src/processor/logging.cc
+FILE 72 /s/clank/src/out_arm/Release/../../breakpad/src/processor/logging.h
+FILE 73 /s/clank/src/out_arm/Release/../../breakpad/src/processor/minidump.cc
+FILE 74 /s/clank/src/out_arm/Release/../../breakpad/src/processor/pathname_stripper.cc
+FILE 75 /s/clank/src/out_arm/Release/../../breakpad/src/processor/range_map-inl.h
+FILE 76 /s/clank/src/out_arm/Release/../../breakpad/src/processor/range_map.h
+FILE 77 /s/clank/src/out_arm/Release/../../breakpad/src/tools/linux/md2core/minidump_memory_range.h
+FILE 78 /s/clank/src/out_arm/Release/../../breakpad/src/tools/linux/md2core/minidump_memory_range_unittest.cc
+FILE 79 /s/clank/src/out_arm/Release/../../testing/gtest/include/gtest/gtest-message.h
+FILE 80 /s/clank/src/out_arm/Release/../../testing/gtest/include/gtest/gtest-printers.h
+FILE 81 /s/clank/src/out_arm/Release/../../testing/gtest/include/gtest/gtest-test-part.h
+FILE 82 /s/clank/src/out_arm/Release/../../testing/gtest/include/gtest/gtest.h
+FILE 83 /s/clank/src/out_arm/Release/../../testing/gtest/include/gtest/internal/gtest-death-test-internal.h
+FILE 84 /s/clank/src/out_arm/Release/../../testing/gtest/include/gtest/internal/gtest-filepath.h
+FILE 85 /s/clank/src/out_arm/Release/../../testing/gtest/include/gtest/internal/gtest-internal.h
+FILE 86 /s/clank/src/out_arm/Release/../../testing/gtest/include/gtest/internal/gtest-param-util.h
+FILE 87 /s/clank/src/out_arm/Release/../../testing/gtest/include/gtest/internal/gtest-port.h
+FILE 88 /s/clank/src/out_arm/Release/../../testing/gtest/include/gtest/internal/gtest-type-util.h
+FILE 89 /s/clank/src/out_arm/Release/../../testing/gtest/src/gtest-death-test.cc
+FILE 90 /s/clank/src/out_arm/Release/../../testing/gtest/src/gtest-filepath.cc
+FILE 91 /s/clank/src/out_arm/Release/../../testing/gtest/src/gtest-internal-inl.h
+FILE 92 /s/clank/src/out_arm/Release/../../testing/gtest/src/gtest-port.cc
+FILE 93 /s/clank/src/out_arm/Release/../../testing/gtest/src/gtest-printers.cc
+FILE 94 /s/clank/src/out_arm/Release/../../testing/gtest/src/gtest-test-part.cc
+FILE 95 /s/clank/src/out_arm/Release/../../testing/gtest/src/gtest.cc
+FILE 96 /s/clank/src/out_arm/Release/../../testing/gtest/src/gtest_main.cc
+FILE 97 /s/clank/src/out_arm/Release/../../third_party/lss/linux_syscall_support.h
+FILE 98 /s/clank/src/third_party/android_tools/ndk/platforms/android-14/arch-arm/usr/include/ctype.h
+FILE 99 /s/clank/src/third_party/android_tools/ndk/platforms/android-14/arch-arm/usr/include/linux/socket.h
+FILE 100 /s/clank/src/third_party/android_tools/ndk/platforms/android-14/arch-arm/usr/include/signal.h
+FILE 101 /s/clank/src/third_party/android_tools/ndk/platforms/android-14/arch-arm/usr/include/stdlib.h
+FILE 102 /s/clank/src/third_party/android_tools/ndk/platforms/android-14/arch-arm/usr/include/unistd.h
+FILE 103 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_algo.h
+FILE 104 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_algobase.c
+FILE 105 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_algobase.h
+FILE 106 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_alloc.h
+FILE 107 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_codecvt.h
+FILE 108 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_construct.h
+FILE 109 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_fstream.c
+FILE 110 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_fstream.h
+FILE 111 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_function_base.h
+FILE 112 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_iomanip.h
+FILE 113 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_ios.c
+FILE 114 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_ios.h
+FILE 115 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_ios_base.h
+FILE 116 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_istream.c
+FILE 117 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_istream.h
+FILE 118 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_iterator.h
+FILE 119 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_iterator_base.h
+FILE 120 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_list.c
+FILE 121 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_list.h
+FILE 122 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_locale.h
+FILE 123 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_map.h
+FILE 124 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_new.h
+FILE 125 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_num_put.h
+FILE 126 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_ostream.c
+FILE 127 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_ostream.h
+FILE 128 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_ostreambuf_iterator.h
+FILE 129 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_pair.h
+FILE 130 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_relops_cont.h
+FILE 131 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_sstream.c
+FILE 132 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_sstream.h
+FILE 133 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_streambuf.c
+FILE 134 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_streambuf.h
+FILE 135 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_string.c
+FILE 136 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_string.h
+FILE 137 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_string_base.h
+FILE 138 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_string_io.c
+FILE 139 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_string_operators.h
+FILE 140 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_tree.c
+FILE 141 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_tree.h
+FILE 142 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_uninitialized.h
+FILE 143 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_vector.c
+FILE 144 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/_vector.h
+FILE 145 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/char_traits.h
+FILE 146 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/pointers/_list.h
+FILE 147 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/pointers/_set.h
+FILE 148 /s/clank/src/third_party/android_tools/ndk/sources/cxx-stl/stlport/stlport/stl/pointers/_vector.h
+FILE 149 /s/ndk-andrewhsieh/build/toolchain/gcc-4.9/arm-linux-androideabi/thumb/libgcc/./unwind.h
+FILE 150 /s/ndk-andrewhsieh/build/toolchain/gcc-4.9/gcc/include/unwind-arm-common.h
+FILE 151 /s/ndk-toolchain/src/build/../gcc/gcc-4.9/libgcc/config/arm/bpabi.c
+FILE 152 /s/ndk-toolchain/src/build/../gcc/gcc-4.9/libgcc/config/arm/pr-support.c
+FILE 153 /s/ndk-toolchain/src/build/../gcc/gcc-4.9/libgcc/config/arm/unwind-arm.c
+FILE 154 /s/ndk-toolchain/src/build/../gcc/gcc-4.9/libgcc/libgcc2.c
+FILE 155 /s/ndk-toolchain/src/build/../gcc/gcc-4.9/libgcc/unwind-arm-common.inc
+FILE 156 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/gabi++/include/unwind-arm.h
+FILE 157 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/gabi++/src/call_unexpected.cc
+FILE 158 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/gabi++/src/class_type_info.cc
+FILE 159 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/gabi++/src/cxxabi.cc
+FILE 160 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/gabi++/src/cxxabi_defines.h
+FILE 161 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/gabi++/src/delete.cc
+FILE 162 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/gabi++/src/dwarf_helper.cc
+FILE 163 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/gabi++/src/dynamic_cast.cc
+FILE 164 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/gabi++/src/exception.cc
+FILE 165 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/gabi++/src/fatal_error.cc
+FILE 166 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/gabi++/src/helper_func_internal.cc
+FILE 167 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/gabi++/src/new.cc
+FILE 168 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/gabi++/src/one_time_construction.cc
+FILE 169 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/gabi++/src/personality.cc
+FILE 170 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/gabi++/src/si_class_type_info.cc
+FILE 171 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/gabi++/src/terminate.cc
+FILE 172 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/gabi++/src/type_info.cc
+FILE 173 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/gabi++/src/vmi_class_type_info.cc
+FILE 174 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/src/_stdio_file.h
+FILE 175 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/src/allocators.cpp
+FILE 176 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/src/c_locale_dummy/c_locale_dummy.c
+FILE 177 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/src/codecvt.cpp
+FILE 178 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/src/collate.cpp
+FILE 179 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/src/ctype.cpp
+FILE 180 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/src/details/fstream_unistd.cpp
+FILE 181 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/src/dll_main.cpp
+FILE 182 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/src/fstream.cpp
+FILE 183 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/src/ios.cpp
+FILE 184 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/src/iostream.cpp
+FILE 185 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/src/locale.cpp
+FILE 186 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/src/locale_impl.cpp
+FILE 187 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/src/locale_impl.h
+FILE 188 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/src/messages.cpp
+FILE 189 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/src/monetary.cpp
+FILE 190 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/src/num_get.cpp
+FILE 191 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/src/num_get_float.cpp
+FILE 192 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/src/num_put.cpp
+FILE 193 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/src/num_put_float.cpp
+FILE 194 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/src/numpunct.cpp
+FILE 195 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/src/stdio_streambuf.cpp
+FILE 196 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/src/stdio_streambuf.h
+FILE 197 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/src/time_facets.cpp
+FILE 198 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_algo.h
+FILE 199 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_algobase.c
+FILE 200 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_algobase.h
+FILE 201 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_alloc.h
+FILE 202 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_auto_ptr.h
+FILE 203 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_codecvt.h
+FILE 204 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_collate.h
+FILE 205 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_construct.h
+FILE 206 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_ctype.h
+FILE 207 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_fstream.c
+FILE 208 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_fstream.h
+FILE 209 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_function.h
+FILE 210 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_ios.c
+FILE 211 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_ios.h
+FILE 212 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_ios_base.h
+FILE 213 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_iostream_string.h
+FILE 214 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_istream.h
+FILE 215 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_istreambuf_iterator.h
+FILE 216 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_iterator_base.h
+FILE 217 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_limits.c
+FILE 218 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_locale.h
+FILE 219 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_messages_facets.h
+FILE 220 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_monetary.c
+FILE 221 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_monetary.h
+FILE 222 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_new.h
+FILE 223 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_num_get.c
+FILE 224 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_num_get.h
+FILE 225 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_num_put.c
+FILE 226 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_num_put.h
+FILE 227 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_numpunct.h
+FILE 228 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_ostream.c
+FILE 229 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_ostreambuf_iterator.h
+FILE 230 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_pair.h
+FILE 231 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_range_errors.c
+FILE 232 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_stdexcept.h
+FILE 233 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_stdexcept_base.c
+FILE 234 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_streambuf.c
+FILE 235 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_streambuf.h
+FILE 236 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_string.c
+FILE 237 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_string.h
+FILE 238 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_string_base.h
+FILE 239 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_string_operators.h
+FILE 240 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_threads.h
+FILE 241 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_time_facets.c
+FILE 242 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_time_facets.h
+FILE 243 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_uninitialized.h
+FILE 244 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_vector.c
+FILE 245 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/_vector.h
+FILE 246 /tmp/ndk-user/tmp/build-stlport/ndk/sources/cxx-stl/stlport/stlport/stl/char_traits.h
+FUNC c 2c 0 std::basic_istream<char, std::char_traits<char> >::~basic_istream
+c 2 44 228
+e 2 43 228
+10 2 43 228
+12 2 44 228
+14 2 43 228
+16 4 44 228
+1a 2 59 211
+1c 2 44 228
+1e 8 59 211
+26 e 90 214
+34 4 90 214
+FUNC c 12 0 std::basic_ostream<char, std::char_traits<char> >::~basic_ostream
+FUNC 13a40 e0 0 MinidumpWriter::WriteFile
+13a40 8 1101 26
+13a48 2 1102 26
+13a4a 2 1101 26
+13a4c 4 1102 26
+13a50 6 1103 26
+13a56 4 1104 26
+13a5a 2 100 22
+13a5c a 772 26
+13a66 2 1115 26
+13a68 2 772 26
+13a6a 2 1116 26
+13a6c 2 1133 26
+13a6e 2 1115 26
+13a70 2 1116 26
+13a72 12 1122 26
+13a84 4 1123 26
+13a88 4 1123 26
+13a8c 8 1123 26
+13a94 4 1125 26
+13a98 6 1137 26
+13a9e 4 1139 26
+13aa2 4 1142 26
+13aa6 4 161 33
+13aaa 2 1143 26
+13aac 4 161 33
+13ab0 4 1143 26
+13ab4 2 161 33
+13ab6 c 1143 26
+13ac2 4 1150 26
+13ac6 c 1155 26
+13ad2 4 1156 26
+13ad6 2 1145 26
+13ad8 4 1145 26
+13adc 8 176 33
+13ae4 a 1158 26
+13aee 2 1159 26
+13af0 2 1129 26
+13af2 2 1128 26
+13af4 2 1129 26
+13af6 4 1130 26
+13afa 2 1129 26
+13afc 2 1130 26
+13afe 2 100 22
+13b00 a 772 26
+13b0a 2 1131 26
+13b0c 4 1133 26
+13b10 8 1134 26
+13b18 8 1160 26
+FUNC 13b20 40 0 MinidumpWriter::WriteProcFile
+13b20 c 1212 26
+13b2c 2 1215 26
+13b2e 4 1212 26
+13b32 2 1212 26
+13b34 e 1215 26
+13b42 a 1217 26
+13b4c 14 1218 26
+FUNC 13b60 28 0 std::priv::_STLP_alloc_proxy<wchar_t*, wchar_t, std::allocator<wchar_t> >::allocate(unsigned int, unsigned int&)
+13b60 2 525 201
+13b62 26 343 201
+FUNC 13b88 6ac 0 _GLOBAL__sub_I__ZN40ExceptionHandlerTest_SimpleWithPath_Test10test_info_E
+13b88 4 1191 6
+13b8c 6 160 6
+13b92 6 160 6
+13b98 2 160 6
+13b9a 4 1191 6
+13b9e 4 484 85
+13ba2 2 1191 6
+13ba4 2 484 85
+13ba6 4 160 6
+13baa 4 484 85
+13bae 24 160 6
+13bd2 8 160 6
+13bda 6 170 6
+13be0 6 170 6
+13be6 2 170 6
+13be8 4 484 85
+13bec 4 170 6
+13bf0 2 484 85
+13bf2 2 170 6
+13bf4 4 484 85
+13bf8 12 170 6
+13c0a 8 170 6
+13c12 6 253 6
+13c18 6 253 6
+13c1e 2 253 6
+13c20 4 484 85
+13c24 4 253 6
+13c28 2 484 85
+13c2a 2 253 6
+13c2c 4 484 85
+13c30 12 253 6
+13c42 8 253 6
+13c4a 6 257 6
+13c50 6 257 6
+13c56 2 257 6
+13c58 4 484 85
+13c5c 4 257 6
+13c60 2 484 85
+13c62 2 257 6
+13c64 4 484 85
+13c68 12 257 6
+13c7a 8 257 6
+13c82 6 315 6
+13c88 6 315 6
+13c8e 2 315 6
+13c90 4 484 85
+13c94 4 315 6
+13c98 2 484 85
+13c9a 2 315 6
+13c9c 4 484 85
+13ca0 12 315 6
+13cb2 8 315 6
+13cba 6 327 6
+13cc0 6 327 6
+13cc6 2 327 6
+13cc8 4 484 85
+13ccc 4 327 6
+13cd0 2 484 85
+13cd2 2 327 6
+13cd4 4 484 85
+13cd8 12 327 6
+13cea 8 327 6
+13cf2 6 339 6
+13cf8 6 339 6
+13cfe 2 339 6
+13d00 4 484 85
+13d04 4 339 6
+13d08 2 484 85
+13d0a 2 339 6
+13d0c 4 484 85
+13d10 12 339 6
+13d22 8 339 6
+13d2a 6 351 6
+13d30 6 351 6
+13d36 2 351 6
+13d38 4 484 85
+13d3c 4 351 6
+13d40 2 484 85
+13d42 2 351 6
+13d44 4 484 85
+13d48 12 351 6
+13d5a 6 351 6
+13d60 6 363 6
+13d66 6 363 6
+13d6c 2 363 6
+13d6e 2 484 85
+13d70 2 363 6
+13d72 2 484 85
+13d74 2 363 6
+13d76 4 484 85
+13d7a 12 363 6
+13d8c 6 363 6
+13d92 6 380 6
+13d98 6 380 6
+13d9e 2 380 6
+13da0 2 484 85
+13da2 2 380 6
+13da4 2 484 85
+13da6 2 380 6
+13da8 4 484 85
+13dac 12 380 6
+13dbe 6 380 6
+13dc4 6 409 6
+13dca 6 409 6
+13dd0 2 409 6
+13dd2 2 484 85
+13dd4 2 409 6
+13dd6 2 484 85
+13dd8 2 409 6
+13dda 4 484 85
+13dde 12 409 6
+13df0 6 409 6
+13df6 6 425 6
+13dfc 6 425 6
+13e02 2 425 6
+13e04 2 484 85
+13e06 2 425 6
+13e08 2 484 85
+13e0a 2 425 6
+13e0c 4 484 85
+13e10 12 425 6
+13e22 6 425 6
+13e28 6 441 6
+13e2e 6 441 6
+13e34 2 441 6
+13e36 2 484 85
+13e38 2 441 6
+13e3a 2 484 85
+13e3c 2 441 6
+13e3e 4 484 85
+13e42 12 441 6
+13e54 6 441 6
+13e5a 6 457 6
+13e60 6 457 6
+13e66 2 457 6
+13e68 2 484 85
+13e6a 2 457 6
+13e6c 2 484 85
+13e6e 2 457 6
+13e70 4 484 85
+13e74 12 457 6
+13e86 6 457 6
+13e8c 6 487 6
+13e92 6 487 6
+13e98 2 487 6
+13e9a 2 484 85
+13e9c 2 487 6
+13e9e 2 484 85
+13ea0 2 487 6
+13ea2 4 484 85
+13ea6 12 487 6
+13eb8 6 487 6
+13ebe 6 579 6
+13ec4 6 579 6
+13eca 2 579 6
+13ecc 2 484 85
+13ece 2 579 6
+13ed0 2 484 85
+13ed2 2 579 6
+13ed4 4 484 85
+13ed8 12 579 6
+13eea 6 579 6
+13ef0 6 667 6
+13ef6 6 667 6
+13efc 2 667 6
+13efe 2 484 85
+13f00 2 667 6
+13f02 2 484 85
+13f04 2 667 6
+13f06 4 484 85
+13f0a 12 667 6
+13f1c 6 667 6
+13f22 6 760 6
+13f28 6 760 6
+13f2e 2 760 6
+13f30 2 484 85
+13f32 2 760 6
+13f34 2 484 85
+13f36 2 760 6
+13f38 4 484 85
+13f3c 12 760 6
+13f4e 6 760 6
+13f54 6 806 6
+13f5a 6 806 6
+13f60 2 806 6
+13f62 2 484 85
+13f64 2 806 6
+13f66 2 484 85
+13f68 2 806 6
+13f6a 4 484 85
+13f6e 12 806 6
+13f80 6 806 6
+13f86 6 926 6
+13f8c 6 926 6
+13f92 2 926 6
+13f94 2 484 85
+13f96 2 926 6
+13f98 2 484 85
+13f9a 2 926 6
+13f9c 4 484 85
+13fa0 12 926 6
+13fb2 6 926 6
+13fb8 6 1000 6
+13fbe 6 1000 6
+13fc4 2 1000 6
+13fc6 2 484 85
+13fc8 2 1000 6
+13fca 2 484 85
+13fcc 2 1000 6
+13fce 4 484 85
+13fd2 12 1000 6
+13fe4 6 1000 6
+13fea 6 1019 6
+13ff0 6 1019 6
+13ff6 2 1019 6
+13ff8 2 484 85
+13ffa 2 1019 6
+13ffc 2 484 85
+13ffe 2 1019 6
+14000 4 484 85
+14004 12 1019 6
+14016 6 1019 6
+1401c 6 1036 6
+14022 6 1036 6
+14028 2 1036 6
+1402a 2 484 85
+1402c 2 1036 6
+1402e 2 484 85
+14030 2 1036 6
+14032 4 484 85
+14036 12 1036 6
+14048 6 1036 6
+1404e 6 1068 6
+14054 6 1068 6
+1405a 2 1068 6
+1405c 2 484 85
+1405e 2 1068 6
+14060 2 484 85
+14062 2 1068 6
+14064 4 484 85
+14068 12 1068 6
+1407a 6 1068 6
+14080 6 1112 6
+14086 6 1112 6
+1408c 2 1112 6
+1408e 2 484 85
+14090 2 1112 6
+14092 2 484 85
+14094 2 1112 6
+14096 4 484 85
+1409a 12 1112 6
+140ac 6 1112 6
+140b2 6 1154 6
+140b8 6 1154 6
+140be 2 1154 6
+140c0 2 484 85
+140c2 2 1154 6
+140c4 2 484 85
+140c6 2 1154 6
+140c8 4 484 85
+140cc 12 1154 6
+140de 6 1154 6
+140e4 150 1191 6
+FUNC 14234 58 0 _GLOBAL__sub_I_microdump_writer_unittest.cc
+14234 2 132 11
+14236 6 56 11
+1423c 6 56 11
+14242 2 56 11
+14244 2 484 85
+14246 2 56 11
+14248 6 484 85
+1424e 1c 56 11
+1426a 6 56 11
+14270 1c 132 11
+FUNC 1428c 294 0 _GLOBAL__sub_I__ZN26CpuSetTest_EmptyCount_Test10test_info_E
+1428c 4 163 13
+14290 6 58 13
+14296 6 58 13
+1429c 2 58 13
+1429e 2 163 13
+142a0 2 484 85
+142a2 2 163 13
+142a4 2 484 85
+142a6 2 58 13
+142a8 4 484 85
+142ac 1e 58 13
+142ca 6 58 13
+142d0 6 63 13
+142d6 6 63 13
+142dc 2 63 13
+142de 2 484 85
+142e0 2 63 13
+142e2 2 484 85
+142e4 2 63 13
+142e6 4 484 85
+142ea 12 63 13
+142fc 6 63 13
+14302 6 72 13
+14308 6 72 13
+1430e 2 72 13
+14310 2 484 85
+14312 2 72 13
+14314 2 484 85
+14316 2 72 13
+14318 4 484 85
+1431c 12 72 13
+1432e 6 72 13
+14334 6 81 13
+1433a 6 81 13
+14340 2 81 13
+14342 2 484 85
+14344 2 81 13
+14346 2 484 85
+14348 2 81 13
+1434a 4 484 85
+1434e 12 81 13
+14360 6 81 13
+14366 6 90 13
+1436c 6 90 13
+14372 2 90 13
+14374 2 484 85
+14376 2 90 13
+14378 2 484 85
+1437a 2 90 13
+1437c 4 484 85
+14380 12 90 13
+14392 6 90 13
+14398 6 99 13
+1439e 6 99 13
+143a4 2 99 13
+143a6 2 484 85
+143a8 2 99 13
+143aa 2 484 85
+143ac 2 99 13
+143ae 4 484 85
+143b2 12 99 13
+143c4 6 99 13
+143ca 6 108 13
+143d0 6 108 13
+143d6 2 108 13
+143d8 2 484 85
+143da 2 108 13
+143dc 2 484 85
+143de 2 108 13
+143e0 4 484 85
+143e4 12 108 13
+143f6 6 108 13
+143fc 6 117 13
+14402 6 117 13
+14408 2 117 13
+1440a 2 484 85
+1440c 2 117 13
+1440e 2 484 85
+14410 2 117 13
+14412 4 484 85
+14416 12 117 13
+14428 6 117 13
+1442e 6 135 13
+14434 6 135 13
+1443a 2 135 13
+1443c 2 484 85
+1443e 2 135 13
+14440 2 484 85
+14442 2 135 13
+14444 4 484 85
+14448 12 135 13
+1445a 6 135 13
+14460 6 146 13
+14466 6 146 13
+1446c 2 146 13
+1446e 2 484 85
+14470 2 146 13
+14472 2 484 85
+14474 2 146 13
+14476 4 484 85
+1447a 12 146 13
+1448c 6 146 13
+14492 8e 163 13
+FUNC 14520 5c 0 _GLOBAL__sub_I__ZN39DirectoryReaderTest_CompareResults_Test10test_info_E
+14520 2 78 15
+14522 6 47 15
+14528 8 47 15
+14530 2 47 15
+14532 8 484 85
+1453a 1e 47 15
+14558 6 47 15
+1455e 1e 78 15
+FUNC 1457c 1dc 0 _GLOBAL__sub_I__ZN29LineReaderTest_EmptyFile_Test10test_info_E
+1457c 4 169 17
+14580 6 57 17
+14586 6 57 17
+1458c 2 57 17
+1458e 2 169 17
+14590 2 484 85
+14592 2 169 17
+14594 2 484 85
+14596 2 57 17
+14598 4 484 85
+1459c 1e 57 17
+145ba 6 57 17
+145c0 6 67 17
+145c6 6 67 17
+145cc 2 67 17
+145ce 2 484 85
+145d0 2 67 17
+145d2 2 484 85
+145d4 2 67 17
+145d6 4 484 85
+145da 12 67 17
+145ec 6 67 17
+145f2 6 83 17
+145f8 6 83 17
+145fe 2 83 17
+14600 2 484 85
+14602 2 83 17
+14604 2 484 85
+14606 2 83 17
+14608 4 484 85
+1460c 12 83 17
+1461e 6 83 17
+14624 6 99 17
+1462a 6 99 17
+14630 2 99 17
+14632 2 484 85
+14634 2 99 17
+14636 2 484 85
+14638 2 99 17
+1463a 4 484 85
+1463e 12 99 17
+14650 6 99 17
+14656 6 121 17
+1465c 6 121 17
+14662 2 121 17
+14664 2 484 85
+14666 2 121 17
+14668 2 484 85
+1466a 2 121 17
+1466c 4 484 85
+14670 12 121 17
+14682 6 121 17
+14688 6 143 17
+1468e 6 143 17
+14694 2 143 17
+14696 2 484 85
+14698 2 143 17
+1469a 2 484 85
+1469c 2 143 17
+1469e 4 484 85
+146a2 12 143 17
+146b4 6 143 17
+146ba 6 158 17
+146c0 6 158 17
+146c6 2 158 17
+146c8 2 484 85
+146ca 2 158 17
+146cc 2 484 85
+146ce 2 158 17
+146d0 4 484 85
+146d4 12 158 17
+146e6 6 158 17
+146ec 6c 169 17
+FUNC 14758 9c 0 _GLOBAL__sub_I__ZN38LinuxCoreDumperTest_BuildProcPath_Test10test_info_E
+14758 4 118 20
+1475c 6 42 20
+14762 8 42 20
+1476a 2 42 20
+1476c 8 484 85
+14774 20 42 20
+14794 6 42 20
+1479a 6 65 20
+147a0 8 65 20
+147a8 2 65 20
+147aa 4 484 85
+147ae 2 65 20
+147b0 4 484 85
+147b4 12 65 20
+147c6 6 65 20
+147cc 28 118 20
+FUNC 147f4 1d4 0 _GLOBAL__sub_I__ZN37LinuxPtraceDumperChildTest_Setup_Test10test_info_E
+147f4 4 463 25
+147f8 6 121 25
+147fe 2 121 25
+14800 2 463 25
+14802 2 484 85
+14804 2 463 25
+14806 2 484 85
+14808 14 121 25
+1481c 4 484 85
+14820 14 121 25
+14834 6 121 25
+1483a 6 125 25
+14840 2 125 25
+14842 2 484 85
+14844 2 125 25
+14846 2 484 85
+14848 2 125 25
+1484a 4 484 85
+1484e 12 125 25
+14860 6 125 25
+14866 6 134 25
+1486c 2 134 25
+1486e 2 484 85
+14870 2 134 25
+14872 2 484 85
+14874 2 134 25
+14876 4 484 85
+1487a 12 134 25
+1488c 6 134 25
+14892 6 226 25
+14898 2 226 25
+1489a 2 484 85
+1489c 2 226 25
+1489e 2 484 85
+148a0 2 226 25
+148a2 4 484 85
+148a6 16 226 25
+148bc 6 226 25
+148c2 6 246 25
+148c8 2 246 25
+148ca 2 484 85
+148cc 2 246 25
+148ce 2 484 85
+148d0 2 246 25
+148d2 4 484 85
+148d6 12 246 25
+148e8 6 246 25
+148ee 6 325 25
+148f4 2 325 25
+148f6 2 484 85
+148f8 2 325 25
+148fa 2 484 85
+148fc 2 325 25
+148fe 4 484 85
+14902 12 325 25
+14914 6 325 25
+1491a 6 364 25
+14920 6 364 25
+14926 2 364 25
+14928 2 484 85
+1492a 2 364 25
+1492c 2 484 85
+1492e 2 364 25
+14930 4 484 85
+14934 12 364 25
+14946 6 364 25
+1494c 7c 463 25
+FUNC 149c8 200 0 _GLOBAL__sub_I_minidump_writer_unittest.cc
+149c8 4 756 27
+149cc 6 67 27
+149d2 6 67 27
+149d8 2 67 27
+149da 2 484 85
+149dc 2 67 27
+149de 6 484 85
+149e4 1e 67 27
+14a02 6 67 27
+14a08 6 96 27
+14a0e 6 96 27
+14a14 2 96 27
+14a16 2 484 85
+14a18 2 96 27
+14a1a 6 484 85
+14a20 12 96 27
+14a32 6 96 27
+14a38 6 128 27
+14a3e 6 128 27
+14a44 2 128 27
+14a46 2 484 85
+14a48 2 128 27
+14a4a 6 484 85
+14a50 12 128 27
+14a62 6 128 27
+14a68 6 236 27
+14a6e 6 236 27
+14a74 2 236 27
+14a76 2 484 85
+14a78 2 236 27
+14a7a 6 484 85
+14a80 12 236 27
+14a92 6 236 27
+14a98 6 338 27
+14a9e 6 338 27
+14aa4 2 338 27
+14aa6 2 484 85
+14aa8 2 338 27
+14aaa 6 484 85
+14ab0 12 338 27
+14ac2 6 338 27
+14ac8 6 432 27
+14ace 6 432 27
+14ad4 2 432 27
+14ad6 2 484 85
+14ad8 2 432 27
+14ada 6 484 85
+14ae0 12 432 27
+14af2 6 432 27
+14af8 6 504 27
+14afe 6 504 27
+14b04 2 504 27
+14b06 2 484 85
+14b08 2 504 27
+14b0a 6 484 85
+14b10 12 504 27
+14b22 6 504 27
+14b28 6 583 27
+14b2e 6 583 27
+14b34 2 583 27
+14b36 2 484 85
+14b38 2 583 27
+14b3a 6 484 85
+14b40 12 583 27
+14b52 6 583 27
+14b58 70 756 27
+FUNC 14bc8 294 0 _GLOBAL__sub_I__ZN36ProcCpuInfoReaderTest_EmptyFile_Test10test_info_E
+14bc8 4 199 30
+14bcc 6 63 30
+14bd2 6 63 30
+14bd8 2 63 30
+14bda 2 199 30
+14bdc 2 484 85
+14bde 2 199 30
+14be0 2 484 85
+14be2 2 63 30
+14be4 4 484 85
+14be8 1e 63 30
+14c06 6 63 30
+14c0c 6 72 30
+14c12 6 72 30
+14c18 2 72 30
+14c1a 2 484 85
+14c1c 2 72 30
+14c1e 2 484 85
+14c20 2 72 30
+14c22 4 484 85
+14c26 12 72 30
+14c38 6 72 30
+14c3e 6 85 30
+14c44 6 85 30
+14c4a 2 85 30
+14c4c 2 484 85
+14c4e 2 85 30
+14c50 2 484 85
+14c52 2 85 30
+14c54 4 484 85
+14c58 12 85 30
+14c6a 6 85 30
+14c70 6 100 30
+14c76 6 100 30
+14c7c 2 100 30
+14c7e 2 484 85
+14c80 2 100 30
+14c82 2 484 85
+14c84 2 100 30
+14c86 4 484 85
+14c8a 12 100 30
+14c9c 6 100 30
+14ca2 6 117 30
+14ca8 6 117 30
+14cae 2 117 30
+14cb0 2 484 85
+14cb2 2 117 30
+14cb4 2 484 85
+14cb6 2 117 30
+14cb8 4 484 85
+14cbc 12 117 30
+14cce 6 117 30
+14cd4 6 130 30
+14cda 6 130 30
+14ce0 2 130 30
+14ce2 2 484 85
+14ce4 2 130 30
+14ce6 2 484 85
+14ce8 2 130 30
+14cea 4 484 85
+14cee 12 130 30
+14d00 6 130 30
+14d06 6 143 30
+14d0c 6 143 30
+14d12 2 143 30
+14d14 2 484 85
+14d16 2 143 30
+14d18 2 484 85
+14d1a 2 143 30
+14d1c 4 484 85
+14d20 12 143 30
+14d32 6 143 30
+14d38 6 156 30
+14d3e 6 156 30
+14d44 2 156 30
+14d46 2 484 85
+14d48 2 156 30
+14d4a 2 484 85
+14d4c 2 156 30
+14d4e 4 484 85
+14d52 12 156 30
+14d64 6 156 30
+14d6a 6 173 30
+14d70 6 173 30
+14d76 2 173 30
+14d78 2 484 85
+14d7a 2 173 30
+14d7c 2 484 85
+14d7e 2 173 30
+14d80 4 484 85
+14d84 12 173 30
+14d96 6 173 30
+14d9c 6 186 30
+14da2 6 186 30
+14da8 2 186 30
+14daa 2 484 85
+14dac 2 186 30
+14dae 2 484 85
+14db0 2 186 30
+14db2 4 484 85
+14db6 12 186 30
+14dc8 6 186 30
+14dce 8e 199 30
+FUNC 14e5c dc 0 _GLOBAL__sub_I__ZN39ElfCoreDumpTest_DefaultConstructor_Test10test_info_E
+14e5c 4 256 39
+14e60 6 52 39
+14e66 8 52 39
+14e6e 2 52 39
+14e70 8 484 85
+14e78 20 52 39
+14e98 6 52 39
+14e9e 6 62 39
+14ea4 8 62 39
+14eac 2 62 39
+14eae 4 484 85
+14eb2 2 62 39
+14eb4 4 484 85
+14eb8 12 62 39
+14eca 6 62 39
+14ed0 6 130 39
+14ed6 8 130 39
+14ede 2 130 39
+14ee0 4 484 85
+14ee4 2 130 39
+14ee6 4 484 85
+14eea 12 130 39
+14efc 6 130 39
+14f02 36 256 39
+FUNC 14f38 84 0 _GLOBAL__sub_I_gtest_FileIDTest_ElfClass_registered_
+14f38 2 263 43
+14f3a 18 127 43
+14f52 2 151 43
+14f54 4 127 43
+14f58 e 151 43
+14f66 2 183 43
+14f68 4 151 43
+14f6c e 183 43
+14f7a 2 220 43
+14f7c 4 183 43
+14f80 3c 220 43
+FUNC 14fbc 294 0 _GLOBAL__sub_I__ZN32LinuxLibcSupportTest_strlen_Test10test_info_E
+14fbc 4 213 46
+14fc0 6 37 46
+14fc6 6 37 46
+14fcc 2 37 46
+14fce 2 213 46
+14fd0 2 484 85
+14fd2 2 213 46
+14fd4 2 484 85
+14fd6 2 37 46
+14fd8 4 484 85
+14fdc 1e 37 46
+14ffa 6 37 46
+15000 6 46 46
+15006 6 46 46
+1500c 2 46 46
+1500e 2 484 85
+15010 2 46 46
+15012 2 484 85
+15014 2 46 46
+15016 4 484 85
+1501a 12 46 46
+1502c 6 46 46
+15032 6 71 46
+15038 6 71 46
+1503e 2 71 46
+15040 2 484 85
+15042 2 71 46
+15044 2 484 85
+15046 2 71 46
+15048 4 484 85
+1504c 12 71 46
+1505e 6 71 46
+15064 6 92 46
+1506a 6 92 46
+15070 2 92 46
+15072 2 484 85
+15074 2 92 46
+15076 2 484 85
+15078 2 92 46
+1507a 4 484 85
+1507e 12 92 46
+15090 6 92 46
+15096 6 106 46
+1509c 6 106 46
+150a2 2 106 46
+150a4 2 484 85
+150a6 2 106 46
+150a8 2 484 85
+150aa 2 106 46
+150ac 4 484 85
+150b0 12 106 46
+150c2 6 106 46
+150c8 6 129 46
+150ce 6 129 46
+150d4 2 129 46
+150d6 2 484 85
+150d8 2 129 46
+150da 2 484 85
+150dc 2 129 46
+150de 4 484 85
+150e2 12 129 46
+150f4 6 129 46
+150fa 6 143 46
+15100 6 143 46
+15106 2 143 46
+15108 2 484 85
+1510a 2 143 46
+1510c 2 484 85
+1510e 2 143 46
+15110 4 484 85
+15114 12 143 46
+15126 6 143 46
+1512c 6 157 46
+15132 6 157 46
+15138 2 157 46
+1513a 2 484 85
+1513c 2 157 46
+1513e 2 484 85
+15140 2 157 46
+15142 4 484 85
+15146 12 157 46
+15158 6 157 46
+1515e 6 169 46
+15164 6 169 46
+1516a 2 169 46
+1516c 2 484 85
+1516e 2 169 46
+15170 2 484 85
+15172 2 169 46
+15174 4 484 85
+15178 12 169 46
+1518a 6 169 46
+15190 6 194 46
+15196 6 194 46
+1519c 2 194 46
+1519e 2 484 85
+151a0 2 194 46
+151a2 2 484 85
+151a4 2 194 46
+151a6 4 484 85
+151aa 12 194 46
+151bc 6 194 46
+151c2 8e 213 46
+FUNC 15250 1a4 0 _GLOBAL__sub_I__ZN28PageAllocatorTest_Setup_Test10test_info_E
+15250 6 97 56
+15256 6 39 56
+1525c 6 39 56
+15262 2 39 56
+15264 2 97 56
+15266 2 484 85
+15268 2 97 56
+1526a 2 484 85
+1526c 2 39 56
+1526e 4 484 85
+15272 22 39 56
+15294 6 39 56
+1529a 6 43 56
+152a0 6 43 56
+152a6 2 43 56
+152a8 2 484 85
+152aa 2 43 56
+152ac 2 484 85
+152ae 2 43 56
+152b0 4 484 85
+152b4 12 43 56
+152c6 6 43 56
+152cc 6 53 56
+152d2 6 53 56
+152d8 2 53 56
+152da 2 484 85
+152dc 2 53 56
+152de 2 484 85
+152e0 2 53 56
+152e2 4 484 85
+152e6 12 53 56
+152f8 6 53 56
+152fe 6 69 56
+15304 6 69 56
+1530a 2 69 56
+1530c 2 484 85
+1530e 2 69 56
+15310 6 484 85
+15316 16 69 56
+1532c 6 69 56
+15332 6 76 56
+15338 6 76 56
+1533e 2 76 56
+15340 2 484 85
+15342 2 76 56
+15344 2 484 85
+15346 2 76 56
+15348 4 484 85
+1534c 12 76 56
+1535e 6 76 56
+15364 6 91 56
+1536a 6 91 56
+15370 2 91 56
+15372 2 484 85
+15374 2 91 56
+15376 2 484 85
+15378 2 91 56
+1537a 4 484 85
+1537e 12 91 56
+15390 6 91 56
+15396 5e 97 56
+FUNC 153f4 1dc 0 _GLOBAL__sub_I__ZN15google_breakpad31NonAllocatingMapTest_Entry_Test10test_info_E
+153f4 4 308 59
+153f8 6 35 59
+153fe 6 35 59
+15404 2 35 59
+15406 2 308 59
+15408 2 484 85
+1540a 2 308 59
+1540c 2 484 85
+1540e 2 35 59
+15410 4 484 85
+15414 1e 35 59
+15432 6 35 59
+15438 6 63 59
+1543e 6 63 59
+15444 2 63 59
+15446 2 484 85
+15448 2 63 59
+1544a 2 484 85
+1544c 2 63 59
+1544e 4 484 85
+15452 12 63 59
+15464 6 63 59
+1546a 6 92 59
+15470 6 92 59
+15476 2 92 59
+15478 2 484 85
+1547a 2 92 59
+1547c 2 484 85
+1547e 2 92 59
+15480 4 484 85
+15484 12 92 59
+15496 6 92 59
+1549c 6 127 59
+154a2 6 127 59
+154a8 2 127 59
+154aa 2 484 85
+154ac 2 127 59
+154ae 2 484 85
+154b0 2 127 59
+154b2 4 484 85
+154b6 12 127 59
+154c8 6 127 59
+154ce 6 228 59
+154d4 6 228 59
+154da 2 228 59
+154dc 2 484 85
+154de 2 228 59
+154e0 2 484 85
+154e2 2 228 59
+154e4 4 484 85
+154e8 12 228 59
+154fa 6 228 59
+15500 6 253 59
+15506 6 253 59
+1550c 2 253 59
+1550e 2 484 85
+15510 2 253 59
+15512 2 484 85
+15514 2 253 59
+15516 4 484 85
+1551a 12 253 59
+1552c 6 253 59
+15532 6 282 59
+15538 6 282 59
+1553e 2 282 59
+15540 2 484 85
+15542 2 282 59
+15544 2 484 85
+15546 2 282 59
+15548 4 484 85
+1554c 12 282 59
+1555e 6 282 59
+15564 6c 308 59
+FUNC 155d0 300 0 _GLOBAL__sub_I__ZN47MinidumpMemoryRangeTest_DefaultConstructor_Test10test_info_E
+155d0 4 258 78
+155d4 a 90 78
+155de 2 78 78
+155e0 2 80 78
+155e2 6 90 78
+155e8 4 79 78
+155ec 4 81 78
+155f0 2 82 78
+155f2 8 90 78
+155fa 6 95 78
+15600 6 95 78
+15606 2 95 78
+15608 2 258 78
+1560a 2 484 85
+1560c 2 258 78
+1560e 2 484 85
+15610 2 95 78
+15612 4 484 85
+15616 1e 95 78
+15634 6 95 78
+1563a 6 101 78
+15640 6 101 78
+15646 2 101 78
+15648 2 484 85
+1564a 2 101 78
+1564c 2 484 85
+1564e 2 101 78
+15650 4 484 85
+15654 12 101 78
+15666 6 101 78
+1566c 6 107 78
+15672 6 107 78
+15678 2 107 78
+1567a 2 484 85
+1567c 2 107 78
+1567e 2 484 85
+15680 2 107 78
+15682 4 484 85
+15686 12 107 78
+15698 6 107 78
+1569e 6 122 78
+156a4 6 122 78
+156aa 2 122 78
+156ac 2 484 85
+156ae 2 122 78
+156b0 2 484 85
+156b2 2 122 78
+156b4 4 484 85
+156b8 12 122 78
+156ca 6 122 78
+156d0 6 133 78
+156d6 6 133 78
+156dc 2 133 78
+156de 2 484 85
+156e0 2 133 78
+156e2 2 484 85
+156e4 2 133 78
+156e6 4 484 85
+156ea 12 133 78
+156fc 6 133 78
+15702 6 140 78
+15708 6 140 78
+1570e 2 140 78
+15710 2 484 85
+15712 2 140 78
+15714 2 484 85
+15716 2 140 78
+15718 4 484 85
+1571c 12 140 78
+1572e 6 140 78
+15734 6 165 78
+1573a 6 165 78
+15740 2 165 78
+15742 2 484 85
+15744 2 165 78
+15746 2 484 85
+15748 2 165 78
+1574a 4 484 85
+1574e 12 165 78
+15760 6 165 78
+15766 6 193 78
+1576c 6 193 78
+15772 2 193 78
+15774 2 484 85
+15776 2 193 78
+15778 2 484 85
+1577a 2 193 78
+1577c 4 484 85
+15780 12 193 78
+15792 6 193 78
+15798 6 201 78
+1579e 6 201 78
+157a4 2 201 78
+157a6 2 484 85
+157a8 2 201 78
+157aa 2 484 85
+157ac 2 201 78
+157ae 4 484 85
+157b2 12 201 78
+157c4 6 201 78
+157ca 6 216 78
+157d0 6 216 78
+157d6 2 216 78
+157d8 2 484 85
+157da 2 216 78
+157dc 2 484 85
+157de 2 216 78
+157e0 4 484 85
+157e4 12 216 78
+157f6 6 216 78
+157fc 6 224 78
+15802 6 224 78
+15808 2 224 78
+1580a 2 484 85
+1580c 2 224 78
+1580e 2 484 85
+15810 2 224 78
+15812 4 484 85
+15816 12 224 78
+15828 6 224 78
+1582e a2 258 78
+FUNC 158d0 9c 0 _GLOBAL__sub_I__ZN32AndroidUContext_GRegsOffset_Test10test_info_E
+158d0 4 186 34
+158d4 6 50 34
+158da 8 50 34
+158e2 2 50 34
+158e4 8 484 85
+158ec 20 50 34
+1590c 6 50 34
+15912 6 183 34
+15918 8 183 34
+15920 2 183 34
+15922 4 484 85
+15926 2 183 34
+15928 4 484 85
+1592c 12 183 34
+1593e 6 183 34
+15944 28 186 34
+FUNC 1596c 1e0 0 _GLOBAL__sub_I_gtest.cc
+1596c 4 5291 95
+15970 c 193 95
+1597c 2 198 95
+1597e 4 193 95
+15982 2 198 95
+15984 2 209 95
+15986 8 198 95
+1598e 2 203 95
+15990 4 198 95
+15994 2 203 95
+15996 2 209 95
+15998 8 203 95
+159a0 2 209 95
+159a2 4 203 95
+159a6 a 209 95
+159b0 2 209 95
+159b2 4 209 95
+159b6 4 209 95
+159ba 2 209 95
+159bc 8 209 95
+159c4 a 209 95
+159ce c 217 95
+159da 2 217 95
+159dc 2 217 95
+159de a 217 95
+159e8 6 217 95
+159ee 2 229 95
+159f0 4 217 95
+159f4 c 229 95
+15a00 4 229 95
+15a04 2 229 95
+15a06 a 229 95
+15a10 a 229 95
+15a1a c 241 95
+15a26 2 247 95
+15a28 4 241 95
+15a2c a 247 95
+15a36 2 253 95
+15a38 4 247 95
+15a3c a 253 95
+15a46 2 264 95
+15a48 4 253 95
+15a4c a 264 95
+15a56 2 270 95
+15a58 4 264 95
+15a5c a 270 95
+15a66 2 276 95
+15a68 4 270 95
+15a6c 2 276 95
+15a6e 2 276 95
+15a70 6 276 95
+15a76 2 276 95
+15a78 2 276 95
+15a7a 8 276 95
+15a82 a 276 95
+15a8c a 283 95
+15a96 2 377 95
+15a98 2 283 95
+15a9a 2 377 95
+15a9c 4 283 95
+15aa0 8 377 95
+15aa8 a 377 95
+15ab2 a 608 95
+15abc 90 5291 95
+FUNC 15b4c a8 0 _GLOBAL__sub_I_gtest_death_test.cc
+15b4c 2 1346 89
+15b4e c 85 89
+15b5a 2 85 89
+15b5c 4 85 89
+15b60 4 85 89
+15b64 4 85 89
+15b68 2 85 89
+15b6a 8 85 89
+15b72 a 85 89
+15b7c a 94 89
+15b86 2 107 89
+15b88 2 94 89
+15b8a 2 107 89
+15b8c 2 94 89
+15b8e 4 107 89
+15b92 2 120 137
+15b94 2 94 89
+15b96 8 107 89
+15b9e 2 120 137
+15ba0 a 107 89
+15baa 2 124 137
+15bac 2 120 137
+15bae 2 481 106
+15bb0 6 124 137
+15bb6 4 101 108
+15bba 2 359 89
+15bbc 2 101 108
+15bbe 8 359 89
+15bc6 2e 1346 89
+FUNC 15bf4 24 0 _GLOBAL__sub_I_gtest_port.cc
+15bf4 4 67 144
+15bf8 4 1057 92
+15bfc 6 67 144
+15c02 2 481 106
+15c04 14 1057 92
+FUNC 15c18 2c 0 main
+15c18 2 34 96
+15c1a 8 34 96
+15c22 8 35 96
+15c2a 8 36 96
+15c32 4 2326 82
+15c36 4 2326 82
+15c3a a 38 96
+FUNC 15c44 70 0 _GLOBAL__sub_I_cxxabi.cc
+15c44 4 210 159
+15c48 2 463 159
+15c4a c 210 159
+15c56 4 104 159
+15c5a 2 108 159
+15c5c 2 104 159
+15c5e 4 108 159
+15c62 2 104 159
+15c64 6 105 159
+15c6a 6 106 159
+15c70 4 108 159
+15c74 a 260 159
+15c7e 2 109 159
+15c80 4 260 159
+15c84 2 110 159
+15c86 4 463 159
+15c8a 4 260 159
+15c8e 26 211 159
+FUNC 15cb4 30 0 _GLOBAL__sub_I_locale_impl.cpp
+15cb4 2 764 186
+15cb6 18 621 186
+15cce 4 764 186
+15cd2 12 621 186
+FUNC 15ce4 30 0 _GLOBAL__sub_I_allocators.cpp
+15ce4 2 1119 175
+15ce6 c 340 240
+15cf2 c 128 175
+15cfe 4 1119 175
+15d02 12 128 175
+FUNC 15dc4 2 0 testing::Test::SetUpTestCase
+15dc4 2 389 82
+FUNC 15dc6 2 0 testing::Test::TearDownTestCase
+15dc6 2 397 82
+FUNC 15dc8 4 0 __cxxabiv1::__class_type_info::code() const
+15dc8 4 153 160
+FUNC 15dc8 4 0 google_breakpad::LinuxPtraceDumper::IsPostMortem
+15dc8 4 275 23
+FUNC 15dc8 4 0 std::basic_streambuf<char, std::char_traits<char> >::showmanyc
+15dc8 4 176 133
+FUNC 15dc8 4 0 std::basic_streambuf<char, std::char_traits<char> >::sync
+FUNC 15dc8 4 0 std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >::showmanyc()
+FUNC 15dc8 4 0 std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >::sync()
+15dc8 4 184 234
+FUNC 15dc8 4 0 std::moneypunct<char, false>::do_frac_digits() const
+FUNC 15dc8 4 0 std::moneypunct<char, true>::do_frac_digits() const
+FUNC 15dc8 4 0 std::moneypunct<wchar_t, false>::do_frac_digits() const
+15dc8 4 111 189
+FUNC 15dc8 4 0 std::moneypunct<wchar_t, true>::do_frac_digits() const
+FUNC 15dc8 4 0 std::priv::stdio_istreambuf::showmanyc()
+15dc8 4 154 195
+FUNC 15dc8 4 0 testing::Test::Setup
+FUNC 15dc8 4 0 testing::internal::GetThreadCount
+15dc8 4 133 92
+FUNC 15dcc 4 0 DoneCallbackReturnFalse
+15dcc 4 267 6
+FUNC 15dd0 4 0 DoneCallbackReturnTrue
+15dd0 4 273 6
+FUNC 15dd4 4 0 FilterCallbackReturnFalse
+15dd4 4 284 6
+FUNC 15dd8 4 0 FilterCallbackReturnTrue
+15dd8 4 288 6
+FUNC 15ddc 6 0 std::basic_streambuf<char, std::char_traits<char> >::overflow
+FUNC 15ddc 6 0 std::basic_streambuf<char, std::char_traits<char> >::pbackfail
+15ddc 6 152 133
+FUNC 15ddc 6 0 std::basic_streambuf<char, std::char_traits<char> >::underflow
+FUNC 15de2 2 0 google_breakpad::::CrashGenerationClientImpl::~CrashGenerationClientImpl
+15de2 2 49 0
+FUNC 15de2 2 0 google_breakpad::MinidumpObject::~MinidumpObject
+15de2 2 180 133
+FUNC 15de2 2 0 google_breakpad::SeccompUnwinder::PopSeccompStackFrame
+15de2 2 41 1
+FUNC 15de2 2 0 std::basic_streambuf<char, std::char_traits<char> >::imbue
+FUNC 15de2 2 0 std::basic_streambuf<char, std::char_traits<char> >::setbuf
+FUNC 15de2 2 0 testing::Test::SetUp
+FUNC 15de2 2 0 testing::Test::TearDown
+FUNC 15de2 2 0 testing::internal::DefaultDeathTestFactory::~DefaultDeathTestFactory
+15de2 2 148 83
+FUNC 15de2 2 0 testing::internal::DefaultGlobalTestPartResultReporter::~DefaultGlobalTestPartResultReporter
+FUNC 15de2 2 0 testing::internal::DefaultPerThreadTestPartResultReporter::~DefaultPerThreadTestPartResultReporter
+FUNC 15de2 2 0 testing::internal::IsTrue
+FUNC 15de2 2 0 testing::internal::PrettyUnitTestResultPrinter::OnEnvironmentsSetUpEnd
+FUNC 15de2 2 0 testing::internal::PrettyUnitTestResultPrinter::OnEnvironmentsTearDownEnd
+FUNC 15de2 2 0 testing::internal::PrettyUnitTestResultPrinter::OnTestProgramEnd
+FUNC 15de2 2 0 testing::internal::PrettyUnitTestResultPrinter::OnTestProgramStart
+FUNC 15de2 2 0 testing::internal::PrettyUnitTestResultPrinter::~PrettyUnitTestResultPrinter
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MicrodumpWriterTest_Setup_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MinidumpWriterTest_AdditionalMemory_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MinidumpWriterTest_DeletedBinary_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MinidumpWriterTest_InvalidStackPointer_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MinidumpWriterTest_MappingInfoContained_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MinidumpWriterTest_MappingInfo_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MinidumpWriterTest_MinidumpSizeLimit_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MinidumpWriterTest_SetupWithFD_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MinidumpWriterTest_SetupWithPath_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<AndroidUContext_GRegsOffset_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<AndroidUContext_SigmakOffset_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<CpuSetTest_EmptyCount_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<CpuSetTest_EmptyIntersection_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<CpuSetTest_IntersectWith_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<CpuSetTest_MultiItems_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<CpuSetTest_OneCpuTerminated_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<CpuSetTest_OneCpu_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<CpuSetTest_SelfIntersection_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<CpuSetTest_TenCpusWithRange_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<CpuSetTest_TwoCpusWithComma_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<CpuSetTest_TwoCpusWithRange_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<DirectoryReaderTest_CompareResults_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<ElfCoreDumpTest_DefaultConstructor_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<ElfCoreDumpTest_TestElfHeader_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<ElfCoreDumpTest_ValidCoreFile_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_AdditionalMemoryRemove_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_AdditionalMemory_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_ChildCrashWithFD_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_ChildCrashWithPath_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_ExternalDumper_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_GenerateMultipleDumpsWithFD_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_GenerateMultipleDumpsWithPath_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_InstructionPointerMemoryMaxBound_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_InstructionPointerMemoryMinBound_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_InstructionPointerMemoryNullPointer_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_InstructionPointerMemory_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_ModuleInfo_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_NoRedeliveryOnDoneCallbackTrue_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_NoRedeliveryOnFilterCallbackTrue_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_RedeliveryOnBadSignalHandlerFlag_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_RedeliveryOnDoneCallbackFalse_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_RedeliveryOnFilterCallbackFalse_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_RedeliveryToDefaultHandler_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_SimpleWithFD_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_SimpleWithPath_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_StackedHandlersDeliveredToTop_Test>::~TestFactoryImpl
+15de2 2 484 85
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_StackedHandlersFilteredToBottom_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_StackedHandlersNotDeliveredToBottom_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_StackedHandlersUnhandledToBottom_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_WriteMinidumpExceptionStream_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_WriteMinidumpForChild_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<FileIDTest_BuildIDPH_Test<google_breakpad::ElfClass32> >::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<FileIDTest_BuildIDPH_Test<google_breakpad::ElfClass64> >::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<FileIDTest_BuildID_Test<google_breakpad::ElfClass32> >::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<FileIDTest_BuildID_Test<google_breakpad::ElfClass64> >::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<FileIDTest_ElfClass_Test<google_breakpad::ElfClass32> >::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<FileIDTest_ElfClass_Test<google_breakpad::ElfClass64> >::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<FileIDTest_UniqueHashes_Test<google_breakpad::ElfClass32> >::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<FileIDTest_UniqueHashes_Test<google_breakpad::ElfClass64> >::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<LineReaderTest_EmptyFile_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<LineReaderTest_MaxLength_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<LineReaderTest_OneLineTerminated_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<LineReaderTest_OneLine_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<LineReaderTest_TooLong_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<LineReaderTest_TwoLinesTerminated_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<LineReaderTest_TwoLines_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<LinuxCoreDumperTest_BuildProcPath_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<LinuxCoreDumperTest_VerifyDumpWithMultipleThreads_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_memchr_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_read_decimal_ptr_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_read_hex_ptr_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_strchr_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_strcmp_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_strlen_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_strrchr_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_strtoui_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_uint_len_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_uitos_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<LinuxPtraceDumperChildTest_BuildProcPath_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<LinuxPtraceDumperChildTest_FileIDsMatch_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<LinuxPtraceDumperChildTest_FindMappings_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<LinuxPtraceDumperChildTest_Setup_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<LinuxPtraceDumperChildTest_ThreadList_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<LinuxPtraceDumperMappingsTest_MergedMappings_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<LinuxPtraceDumperTest_VerifyStackReadWithMultipleThreads_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_ConstructorWithDataAndLength_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_DefaultConstructor_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_GetArrayElement_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_GetArrayElmentWithTemplateType_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_GetAsciiMDString_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_GetDataWithTemplateType_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_Reset_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_Set_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_SubrangeAndGetData_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_SubrangeOfEmptyMemoryRange_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_SubrangeWithMDLocationDescriptor_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<PageAllocatorTest_LargeObject_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<PageAllocatorTest_Setup_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<PageAllocatorTest_SmallObjects_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_EmptyFile_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_EmptyValue_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_FieldWithSpaces_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_OneLineTerminated_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_OneLine_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_SkipEmptyField_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_SkipMalformedLine_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_SkipOneEmptyLine_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_SkipTwoEmptyLines_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_TwoLinesTerminated_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<WastefulVectorTest_Setup_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<WastefulVectorTest_Simple_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<WastefulVectorTest_UsesPageAllocator_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<google_breakpad::NonAllocatingMapTest_AddRemove_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<google_breakpad::NonAllocatingMapTest_CopyAndAssign_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<google_breakpad::NonAllocatingMapTest_Entry_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<google_breakpad::NonAllocatingMapTest_Iterator_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<google_breakpad::NonAllocatingMapTest_OutOfSpace_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<google_breakpad::NonAllocatingMapTest_Serialize_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::TestFactoryImpl<google_breakpad::NonAllocatingMapTest_SimpleStringDictionary_Test>::~TestFactoryImpl
+FUNC 15de2 2 0 testing::internal::ThreadLocal<testing::TestPartResultReporterInterface*>::ValueHolder::~ValueHolder
+15de2 2 4924 95
+FUNC 15de4 ac 0 std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::seekoff
+15de4 2 299 131
+15de6 6 303 131
+15dec 4 305 131
+15df0 4 306 131
+15df4 2 308 131
+15df6 4 308 131
+15dfa 4 311 131
+15dfe 4 311 131
+15e02 4 311 131
+15e06 8 315 131
+15e0e 6 400 136
+15e14 2 332 131
+15e16 4 334 131
+15e1a 2 335 131
+15e1c 2 337 131
+15e1e 4 335 131
+15e22 2 337 131
+15e24 8 89 145
+15e2c 4 337 131
+15e30 2 339 131
+15e32 2 94 134
+15e34 2 343 131
+15e36 8 89 145
+15e3e 2 323 131
+15e40 6 323 131
+15e46 4 324 131
+15e4a 4 332 131
+15e4e 4 323 131
+15e52 4 324 131
+15e56 2 332 131
+15e58 6 343 131
+15e5e 2 344 131
+15e60 2 346 131
+15e62 4 344 131
+15e66 2 346 131
+15e68 4 346 131
+15e6c 6 115 134
+15e72 4 315 131
+15e76 6 317 131
+15e7c 6 344 131
+15e82 e 315 131
+FUNC 15e90 9e 0 std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::seekpos
+15e90 4 357 131
+15e94 2 357 131
+15e96 4 359 131
+15e9a 2 357 131
+15e9c 2 359 131
+15e9e 4 361 131
+15ea2 6 357 131
+15ea8 4 362 131
+15eac 6 364 131
+15eb2 2 364 131
+15eb4 c 89 145
+15ec0 6 367 131
+15ec6 6 367 131
+15ecc a 114 145
+15ed6 2 104 145
+15ed8 6 372 131
+15ede 6 373 131
+15ee4 a 373 131
+15eee 2 378 131
+15ef0 8 379 131
+15ef8 2 400 136
+15efa 4 379 131
+15efe 2 115 134
+15f00 2 117 134
+15f02 2 119 134
+15f04 2 115 134
+15f06 a 386 131
+15f10 2 375 131
+15f12 2 94 134
+15f14 6 378 131
+15f1a 4 367 131
+15f1e 6 114 145
+15f24 4 104 145
+15f28 6 387 131
+FUNC 15f2e 10 0 std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::underflow
+15f2e 2 96 131
+15f30 4 99 131
+15f34 4 223 145
+15f38 4 99 131
+15f3c 2 100 131
+FUNC 15f3e 16 0 std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::uflow
+15f3e 4 105 131
+15f42 4 106 131
+15f46 6 223 145
+15f4c 4 112 131
+15f50 2 91 134
+15f52 2 113 131
+FUNC 15f54 3e 0 std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::pbackfail
+15f54 4 117 131
+15f58 6 118 131
+15f5e 4 119 131
+15f62 4 120 131
+15f66 2 220 145
+15f68 4 120 131
+15f6c 6 91 134
+15f72 6 124 131
+15f78 4 91 134
+15f7c 4 126 131
+15f80 4 127 131
+15f84 4 91 134
+15f88 4 182 145
+15f8c 4 138 131
+15f90 2 139 131
+FUNC 15f92 c 0 std::basic_streambuf<char, std::char_traits<char> >::seekoff
+15f92 a 89 145
+15f9c 2 195 133
+FUNC 15f92 c 0 std::basic_streambuf<char, std::char_traits<char> >::seekoff(long, int, int)
+15f92 a 89 246
+15f9c 2 195 234
+FUNC 15f9e 1a 0 std::basic_streambuf<char, std::char_traits<char> >::seekpos
+15f9e 2 188 133
+15fa0 8 188 133
+15fa8 a 89 145
+15fb2 6 189 133
+FUNC 15fb8 18 0 std::basic_streambuf<char, std::char_traits<char> >::uflow
+15fb8 2 162 133
+15fba 2 163 133
+15fbc 2 162 133
+15fbe 4 163 133
+15fc2 2 165 133
+15fc4 8 165 133
+15fcc 2 223 145
+15fce 2 166 133
+FUNC 15fb8 18 0 std::basic_streambuf<char, std::char_traits<char> >::uflow()
+15fb8 2 165 234
+15fba 2 162 234
+15fbc 2 162 234
+15fbe 8 165 234
+15fc6 6 165 234
+15fcc 2 223 246
+15fce 2 166 234
+FUNC 15fd0 c 0 google_breakpad::::CrashGenerationClientImpl::~CrashGenerationClientImpl
+15fd0 2 49 0
+15fd2 2 49 0
+15fd4 4 49 0
+15fd8 4 49 0
+FUNC 15fd0 c 0 google_breakpad::MinidumpObject::~MinidumpObject
+15fd0 2 114 65
+15fd2 2 114 65
+15fd4 4 114 65
+15fd8 4 114 65
+FUNC 15fd0 c 0 testing::internal::DefaultDeathTestFactory::~DefaultDeathTestFactory
+15fd0 2 148 83
+15fd2 2 148 83
+15fd4 4 148 83
+15fd8 4 148 83
+FUNC 15fd0 c 0 testing::internal::DefaultGlobalTestPartResultReporter::~DefaultGlobalTestPartResultReporter
+FUNC 15fd0 c 0 testing::internal::DefaultPerThreadTestPartResultReporter::~DefaultPerThreadTestPartResultReporter
+15fd0 2 2017 87
+15fd2 2 2979 95
+15fd4 4 490 91
+15fd8 4 2979 95
+FUNC 15fd0 c 0 testing::internal::PrettyUnitTestResultPrinter::~PrettyUnitTestResultPrinter
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MicrodumpWriterTest_Setup_Test>::~TestFactoryImpl
+15fd0 2 484 85
+15fd2 2 484 85
+15fd4 4 484 85
+15fd8 4 484 85
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MinidumpWriterTest_AdditionalMemory_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MinidumpWriterTest_DeletedBinary_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MinidumpWriterTest_InvalidStackPointer_Test>::~TestFactoryImpl
+15fd0 2 484 85
+15fd2 2 484 85
+15fd4 4 484 85
+15fd8 4 484 85
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MinidumpWriterTest_MappingInfoContained_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MinidumpWriterTest_MappingInfo_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MinidumpWriterTest_MinidumpSizeLimit_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MinidumpWriterTest_SetupWithFD_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MinidumpWriterTest_SetupWithPath_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<AndroidUContext_GRegsOffset_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<AndroidUContext_SigmakOffset_Test>::~TestFactoryImpl
+15fd0 2 484 85
+15fd2 2 484 85
+15fd4 4 484 85
+15fd8 4 484 85
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<CpuSetTest_EmptyCount_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<CpuSetTest_EmptyIntersection_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<CpuSetTest_IntersectWith_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<CpuSetTest_MultiItems_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<CpuSetTest_OneCpuTerminated_Test>::~TestFactoryImpl
+15fd0 2 484 85
+15fd2 2 484 85
+15fd4 4 484 85
+15fd8 4 484 85
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<CpuSetTest_OneCpu_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<CpuSetTest_SelfIntersection_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<CpuSetTest_TenCpusWithRange_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<CpuSetTest_TwoCpusWithComma_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<CpuSetTest_TwoCpusWithRange_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<DirectoryReaderTest_CompareResults_Test>::~TestFactoryImpl
+15fd0 2 484 85
+15fd2 2 484 85
+15fd4 4 484 85
+15fd8 4 484 85
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<ElfCoreDumpTest_DefaultConstructor_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<ElfCoreDumpTest_TestElfHeader_Test>::~TestFactoryImpl
+15fd0 2 484 85
+15fd2 2 484 85
+15fd4 4 484 85
+15fd8 4 484 85
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<ElfCoreDumpTest_ValidCoreFile_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_AdditionalMemoryRemove_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_AdditionalMemory_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_ChildCrashWithFD_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_ChildCrashWithPath_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_ExternalDumper_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_GenerateMultipleDumpsWithFD_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_GenerateMultipleDumpsWithPath_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_InstructionPointerMemoryMaxBound_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_InstructionPointerMemoryMinBound_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_InstructionPointerMemoryNullPointer_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_InstructionPointerMemory_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_ModuleInfo_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_NoRedeliveryOnDoneCallbackTrue_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_NoRedeliveryOnFilterCallbackTrue_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_RedeliveryOnBadSignalHandlerFlag_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_RedeliveryOnDoneCallbackFalse_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_RedeliveryOnFilterCallbackFalse_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_RedeliveryToDefaultHandler_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_SimpleWithFD_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_SimpleWithPath_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_StackedHandlersDeliveredToTop_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_StackedHandlersFilteredToBottom_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_StackedHandlersNotDeliveredToBottom_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_StackedHandlersUnhandledToBottom_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_WriteMinidumpExceptionStream_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_WriteMinidumpForChild_Test>::~TestFactoryImpl
+15fd0 2 484 85
+15fd2 2 484 85
+15fd4 4 484 85
+15fd8 4 484 85
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<FileIDTest_BuildIDPH_Test<google_breakpad::ElfClass32> >::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<FileIDTest_BuildIDPH_Test<google_breakpad::ElfClass64> >::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<FileIDTest_BuildID_Test<google_breakpad::ElfClass32> >::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<FileIDTest_BuildID_Test<google_breakpad::ElfClass64> >::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<FileIDTest_ElfClass_Test<google_breakpad::ElfClass32> >::~TestFactoryImpl
+15fd0 2 484 85
+15fd2 2 484 85
+15fd4 4 484 85
+15fd8 4 484 85
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<FileIDTest_ElfClass_Test<google_breakpad::ElfClass64> >::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<FileIDTest_UniqueHashes_Test<google_breakpad::ElfClass32> >::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<FileIDTest_UniqueHashes_Test<google_breakpad::ElfClass64> >::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<LineReaderTest_EmptyFile_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<LineReaderTest_MaxLength_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<LineReaderTest_OneLineTerminated_Test>::~TestFactoryImpl
+15fd0 2 484 85
+15fd2 2 484 85
+15fd4 4 484 85
+15fd8 4 484 85
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<LineReaderTest_OneLine_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<LineReaderTest_TooLong_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<LineReaderTest_TwoLinesTerminated_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<LineReaderTest_TwoLines_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<LinuxCoreDumperTest_BuildProcPath_Test>::~TestFactoryImpl
+15fd0 2 484 85
+15fd2 2 484 85
+15fd4 4 484 85
+15fd8 4 484 85
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<LinuxCoreDumperTest_VerifyDumpWithMultipleThreads_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_memchr_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_read_decimal_ptr_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_read_hex_ptr_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_strchr_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_strcmp_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_strlen_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_strrchr_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_strtoui_Test>::~TestFactoryImpl
+15fd0 2 484 85
+15fd2 2 484 85
+15fd4 4 484 85
+15fd8 4 484 85
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_uint_len_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_uitos_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<LinuxPtraceDumperChildTest_BuildProcPath_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<LinuxPtraceDumperChildTest_FileIDsMatch_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<LinuxPtraceDumperChildTest_FindMappings_Test>::~TestFactoryImpl
+15fd0 2 484 85
+15fd2 2 484 85
+15fd4 4 484 85
+15fd8 4 484 85
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<LinuxPtraceDumperChildTest_Setup_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<LinuxPtraceDumperChildTest_ThreadList_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<LinuxPtraceDumperMappingsTest_MergedMappings_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<LinuxPtraceDumperTest_VerifyStackReadWithMultipleThreads_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_ConstructorWithDataAndLength_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_DefaultConstructor_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_GetArrayElement_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_GetArrayElmentWithTemplateType_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_GetAsciiMDString_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_GetDataWithTemplateType_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_Reset_Test>::~TestFactoryImpl
+15fd0 2 484 85
+15fd2 2 484 85
+15fd4 4 484 85
+15fd8 4 484 85
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_Set_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_SubrangeAndGetData_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_SubrangeOfEmptyMemoryRange_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_SubrangeWithMDLocationDescriptor_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<PageAllocatorTest_LargeObject_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<PageAllocatorTest_Setup_Test>::~TestFactoryImpl
+15fd0 2 484 85
+15fd2 2 484 85
+15fd4 4 484 85
+15fd8 4 484 85
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<PageAllocatorTest_SmallObjects_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_EmptyFile_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_EmptyValue_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_FieldWithSpaces_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_OneLineTerminated_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_OneLine_Test>::~TestFactoryImpl
+15fd0 2 484 85
+15fd2 2 484 85
+15fd4 4 484 85
+15fd8 4 484 85
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_SkipEmptyField_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_SkipMalformedLine_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_SkipOneEmptyLine_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_SkipTwoEmptyLines_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_TwoLinesTerminated_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<WastefulVectorTest_Setup_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<WastefulVectorTest_Simple_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<WastefulVectorTest_UsesPageAllocator_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<google_breakpad::NonAllocatingMapTest_AddRemove_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<google_breakpad::NonAllocatingMapTest_CopyAndAssign_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<google_breakpad::NonAllocatingMapTest_Entry_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<google_breakpad::NonAllocatingMapTest_Iterator_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<google_breakpad::NonAllocatingMapTest_OutOfSpace_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<google_breakpad::NonAllocatingMapTest_Serialize_Test>::~TestFactoryImpl
+FUNC 15fd0 c 0 testing::internal::TestFactoryImpl<google_breakpad::NonAllocatingMapTest_SimpleStringDictionary_Test>::~TestFactoryImpl
+15fd0 2 484 85
+15fd2 2 484 85
+15fd4 4 484 85
+15fd8 4 484 85
+FUNC 15fd0 c 0 testing::internal::ThreadLocal<testing::TestPartResultReporterInterface*>::ValueHolder::~ValueHolder
+FUNC 15fdc 54 0 std::basic_streambuf<char, std::char_traits<char> >::xsputn
+15fdc 4 84 133
+15fe0 6 84 133
+15fe6 2 86 133
+15fe8 4 89 133
+15fec 8 90 133
+15ff4 c 92 133
+16000 2 172 145
+16002 8 172 145
+1600a 2 96 133
+1600c 2 94 133
+1600e 2 95 133
+16010 6 96 133
+16016 2 100 133
+16018 8 100 133
+16020 4 99 133
+16024 2 101 133
+16026 4 102 133
+1602a 6 108 133
+FUNC 16030 4c 0 std::basic_streambuf<char, std::char_traits<char> >::_M_xsputnc
+16030 4 112 133
+16034 6 112 133
+1603a 2 114 133
+1603c 4 117 133
+16040 8 118 133
+16048 a 120 133
+16052 8 235 145
+1605a 2 123 133
+1605c 2 122 133
+1605e 6 123 133
+16064 2 127 133
+16066 8 127 133
+1606e 4 126 133
+16072 4 128 133
+16076 6 133 133
+FUNC 1607c 1c 0 std::basic_streambuf<char, std::char_traits<char> >::~basic_streambuf
+1607c 4 40 133
+16080 4 41 133
+16084 2 40 133
+16086 12 41 133
+FUNC 16098 12 0 std::basic_streambuf<char, std::char_traits<char> >::~basic_streambuf
+16098 2 40 133
+1609a 2 40 133
+1609c 4 41 133
+160a0 6 41 133
+160a6 4 41 133
+FUNC 160ac 1c 0 std::basic_ios<char, std::char_traits<char> >::~basic_ios
+160ac 4 59 114
+160b0 18 59 114
+FUNC 160c8 12 0 std::basic_ios<char, std::char_traits<char> >::~basic_ios
+160c8 2 59 114
+160ca 6 59 114
+160d0 6 59 114
+160d6 4 59 114
+FUNC 160dc 2c 0 InstallRaiseSIGKILL
+160dc 2 297 6
+160de a 299 6
+160e8 2 300 6
+160ea 2 301 6
+160ec 2 300 6
+160ee 4 301 6
+160f2 2 300 6
+160f4 4 301 6
+160f8 10 302 6
+FUNC 16108 6 0 RaiseSIGKILL
+16108 6 294 6
+FUNC 1610e c 0 DoneCallbackRaiseSIGKILL
+1610e 2 277 6
+16110 6 278 6
+16116 4 280 6
+FUNC 1611c 18 0 ExceptionHandlerTest_WriteMinidumpForChild_Test::~ExceptionHandlerTest_WriteMinidumpForChild_Test
+1611c 2 1154 6
+1611e 16 1154 6
+FUNC 16134 12 0 ExceptionHandlerTest_WriteMinidumpForChild_Test::~ExceptionHandlerTest_WriteMinidumpForChild_Test
+16134 2 1154 6
+16136 6 1154 6
+1613c 6 1154 6
+16142 4 1154 6
+FUNC 16148 18 0 ExceptionHandlerTest_AdditionalMemoryRemove_Test::~ExceptionHandlerTest_AdditionalMemoryRemove_Test
+16148 2 1112 6
+1614a 16 1112 6
+FUNC 16160 12 0 ExceptionHandlerTest_AdditionalMemoryRemove_Test::~ExceptionHandlerTest_AdditionalMemoryRemove_Test
+16160 2 1112 6
+16162 6 1112 6
+16168 6 1112 6
+1616e 4 1112 6
+FUNC 16174 18 0 ExceptionHandlerTest_AdditionalMemory_Test::~ExceptionHandlerTest_AdditionalMemory_Test
+16174 2 1068 6
+16176 16 1068 6
+FUNC 1618c 12 0 ExceptionHandlerTest_AdditionalMemory_Test::~ExceptionHandlerTest_AdditionalMemory_Test
+1618c 2 1068 6
+1618e 6 1068 6
+16194 6 1068 6
+1619a 4 1068 6
+FUNC 161a0 18 0 ExceptionHandlerTest_GenerateMultipleDumpsWithPath_Test::~ExceptionHandlerTest_GenerateMultipleDumpsWithPath_Test
+161a0 2 1036 6
+161a2 16 1036 6
+FUNC 161b8 12 0 ExceptionHandlerTest_GenerateMultipleDumpsWithPath_Test::~ExceptionHandlerTest_GenerateMultipleDumpsWithPath_Test
+161b8 2 1036 6
+161ba 6 1036 6
+161c0 6 1036 6
+161c6 4 1036 6
+FUNC 161cc 18 0 ExceptionHandlerTest_GenerateMultipleDumpsWithFD_Test::~ExceptionHandlerTest_GenerateMultipleDumpsWithFD_Test
+161cc 2 1019 6
+161ce 16 1019 6
+FUNC 161e4 12 0 ExceptionHandlerTest_GenerateMultipleDumpsWithFD_Test::~ExceptionHandlerTest_GenerateMultipleDumpsWithFD_Test
+161e4 2 1019 6
+161e6 6 1019 6
+161ec 6 1019 6
+161f2 4 1019 6
+FUNC 161f8 18 0 ExceptionHandlerTest_WriteMinidumpExceptionStream_Test::~ExceptionHandlerTest_WriteMinidumpExceptionStream_Test
+161f8 2 1000 6
+161fa 16 1000 6
+FUNC 16210 12 0 ExceptionHandlerTest_WriteMinidumpExceptionStream_Test::~ExceptionHandlerTest_WriteMinidumpExceptionStream_Test
+16210 2 1000 6
+16212 6 1000 6
+16218 6 1000 6
+1621e 4 1000 6
+FUNC 16224 18 0 ExceptionHandlerTest_ExternalDumper_Test::~ExceptionHandlerTest_ExternalDumper_Test
+16224 2 926 6
+16226 16 926 6
+FUNC 1623c 12 0 ExceptionHandlerTest_ExternalDumper_Test::~ExceptionHandlerTest_ExternalDumper_Test
+1623c 2 926 6
+1623e 6 926 6
+16244 6 926 6
+1624a 4 926 6
+FUNC 16250 18 0 ExceptionHandlerTest_ModuleInfo_Test::~ExceptionHandlerTest_ModuleInfo_Test
+16250 2 806 6
+16252 16 806 6
+FUNC 16268 12 0 ExceptionHandlerTest_ModuleInfo_Test::~ExceptionHandlerTest_ModuleInfo_Test
+16268 2 806 6
+1626a 6 806 6
+16270 6 806 6
+16276 4 806 6
+FUNC 1627c 18 0 ExceptionHandlerTest_InstructionPointerMemoryNullPointer_Test::~ExceptionHandlerTest_InstructionPointerMemoryNullPointer_Test
+1627c 2 760 6
+1627e 16 760 6
+FUNC 16294 12 0 ExceptionHandlerTest_InstructionPointerMemoryNullPointer_Test::~ExceptionHandlerTest_InstructionPointerMemoryNullPointer_Test
+16294 2 760 6
+16296 6 760 6
+1629c 6 760 6
+162a2 4 760 6
+FUNC 162a8 18 0 ExceptionHandlerTest_InstructionPointerMemoryMaxBound_Test::~ExceptionHandlerTest_InstructionPointerMemoryMaxBound_Test
+162a8 2 667 6
+162aa 16 667 6
+FUNC 162c0 12 0 ExceptionHandlerTest_InstructionPointerMemoryMaxBound_Test::~ExceptionHandlerTest_InstructionPointerMemoryMaxBound_Test
+162c0 2 667 6
+162c2 6 667 6
+162c8 6 667 6
+162ce 4 667 6
+FUNC 162d4 18 0 ExceptionHandlerTest_InstructionPointerMemoryMinBound_Test::~ExceptionHandlerTest_InstructionPointerMemoryMinBound_Test
+162d4 2 579 6
+162d6 16 579 6
+FUNC 162ec 12 0 ExceptionHandlerTest_InstructionPointerMemoryMinBound_Test::~ExceptionHandlerTest_InstructionPointerMemoryMinBound_Test
+162ec 2 579 6
+162ee 6 579 6
+162f4 6 579 6
+162fa 4 579 6
+FUNC 16300 18 0 ExceptionHandlerTest_InstructionPointerMemory_Test::~ExceptionHandlerTest_InstructionPointerMemory_Test
+16300 2 487 6
+16302 16 487 6
+FUNC 16318 12 0 ExceptionHandlerTest_InstructionPointerMemory_Test::~ExceptionHandlerTest_InstructionPointerMemory_Test
+16318 2 487 6
+1631a 6 487 6
+16320 6 487 6
+16326 4 487 6
+FUNC 1632c 18 0 ExceptionHandlerTest_StackedHandlersUnhandledToBottom_Test::~ExceptionHandlerTest_StackedHandlersUnhandledToBottom_Test
+1632c 2 457 6
+1632e 16 457 6
+FUNC 16344 12 0 ExceptionHandlerTest_StackedHandlersUnhandledToBottom_Test::~ExceptionHandlerTest_StackedHandlersUnhandledToBottom_Test
+16344 2 457 6
+16346 6 457 6
+1634c 6 457 6
+16352 4 457 6
+FUNC 16358 18 0 ExceptionHandlerTest_StackedHandlersFilteredToBottom_Test::~ExceptionHandlerTest_StackedHandlersFilteredToBottom_Test
+16358 2 441 6
+1635a 16 441 6
+FUNC 16370 12 0 ExceptionHandlerTest_StackedHandlersFilteredToBottom_Test::~ExceptionHandlerTest_StackedHandlersFilteredToBottom_Test
+16370 2 441 6
+16372 6 441 6
+16378 6 441 6
+1637e 4 441 6
+FUNC 16384 18 0 ExceptionHandlerTest_StackedHandlersNotDeliveredToBottom_Test::~ExceptionHandlerTest_StackedHandlersNotDeliveredToBottom_Test
+16384 2 425 6
+16386 16 425 6
+FUNC 1639c 12 0 ExceptionHandlerTest_StackedHandlersNotDeliveredToBottom_Test::~ExceptionHandlerTest_StackedHandlersNotDeliveredToBottom_Test
+1639c 2 425 6
+1639e 6 425 6
+163a4 6 425 6
+163aa 4 425 6
+FUNC 163b0 18 0 ExceptionHandlerTest_StackedHandlersDeliveredToTop_Test::~ExceptionHandlerTest_StackedHandlersDeliveredToTop_Test
+163b0 2 409 6
+163b2 16 409 6
+FUNC 163c8 12 0 ExceptionHandlerTest_StackedHandlersDeliveredToTop_Test::~ExceptionHandlerTest_StackedHandlersDeliveredToTop_Test
+163c8 2 409 6
+163ca 6 409 6
+163d0 6 409 6
+163d6 4 409 6
+FUNC 163dc 18 0 ExceptionHandlerTest_RedeliveryOnBadSignalHandlerFlag_Test::~ExceptionHandlerTest_RedeliveryOnBadSignalHandlerFlag_Test
+163dc 2 380 6
+163de 16 380 6
+FUNC 163f4 12 0 ExceptionHandlerTest_RedeliveryOnBadSignalHandlerFlag_Test::~ExceptionHandlerTest_RedeliveryOnBadSignalHandlerFlag_Test
+163f4 2 380 6
+163f6 6 380 6
+163fc 6 380 6
+16402 4 380 6
+FUNC 16408 18 0 ExceptionHandlerTest_RedeliveryToDefaultHandler_Test::~ExceptionHandlerTest_RedeliveryToDefaultHandler_Test
+16408 2 363 6
+1640a 16 363 6
+FUNC 16420 12 0 ExceptionHandlerTest_RedeliveryToDefaultHandler_Test::~ExceptionHandlerTest_RedeliveryToDefaultHandler_Test
+16420 2 363 6
+16422 6 363 6
+16428 6 363 6
+1642e 4 363 6
+FUNC 16434 18 0 ExceptionHandlerTest_NoRedeliveryOnFilterCallbackTrue_Test::~ExceptionHandlerTest_NoRedeliveryOnFilterCallbackTrue_Test
+16434 2 351 6
+16436 16 351 6
+FUNC 1644c 12 0 ExceptionHandlerTest_NoRedeliveryOnFilterCallbackTrue_Test::~ExceptionHandlerTest_NoRedeliveryOnFilterCallbackTrue_Test
+1644c 2 351 6
+1644e 6 351 6
+16454 6 351 6
+1645a 4 351 6
+FUNC 16460 18 0 ExceptionHandlerTest_NoRedeliveryOnDoneCallbackTrue_Test::~ExceptionHandlerTest_NoRedeliveryOnDoneCallbackTrue_Test
+16460 2 339 6
+16462 16 339 6
+FUNC 16478 12 0 ExceptionHandlerTest_NoRedeliveryOnDoneCallbackTrue_Test::~ExceptionHandlerTest_NoRedeliveryOnDoneCallbackTrue_Test
+16478 2 339 6
+1647a 6 339 6
+16480 6 339 6
+16486 4 339 6
+FUNC 1648c 18 0 ExceptionHandlerTest_RedeliveryOnDoneCallbackFalse_Test::~ExceptionHandlerTest_RedeliveryOnDoneCallbackFalse_Test
+1648c 2 327 6
+1648e 16 327 6
+FUNC 164a4 12 0 ExceptionHandlerTest_RedeliveryOnDoneCallbackFalse_Test::~ExceptionHandlerTest_RedeliveryOnDoneCallbackFalse_Test
+164a4 2 327 6
+164a6 6 327 6
+164ac 6 327 6
+164b2 4 327 6
+FUNC 164b8 18 0 ExceptionHandlerTest_RedeliveryOnFilterCallbackFalse_Test::~ExceptionHandlerTest_RedeliveryOnFilterCallbackFalse_Test
+164b8 2 315 6
+164ba 16 315 6
+FUNC 164d0 12 0 ExceptionHandlerTest_RedeliveryOnFilterCallbackFalse_Test::~ExceptionHandlerTest_RedeliveryOnFilterCallbackFalse_Test
+164d0 2 315 6
+164d2 6 315 6
+164d8 6 315 6
+164de 4 315 6
+FUNC 164e4 18 0 ExceptionHandlerTest_ChildCrashWithFD_Test::~ExceptionHandlerTest_ChildCrashWithFD_Test
+164e4 2 257 6
+164e6 16 257 6
+FUNC 164fc 12 0 ExceptionHandlerTest_ChildCrashWithFD_Test::~ExceptionHandlerTest_ChildCrashWithFD_Test
+164fc 2 257 6
+164fe 6 257 6
+16504 6 257 6
+1650a 4 257 6
+FUNC 16510 18 0 ExceptionHandlerTest_ChildCrashWithPath_Test::~ExceptionHandlerTest_ChildCrashWithPath_Test
+16510 2 253 6
+16512 16 253 6
+FUNC 16528 12 0 ExceptionHandlerTest_ChildCrashWithPath_Test::~ExceptionHandlerTest_ChildCrashWithPath_Test
+16528 2 253 6
+1652a 6 253 6
+16530 6 253 6
+16536 4 253 6
+FUNC 1653c 18 0 ExceptionHandlerTest_SimpleWithFD_Test::~ExceptionHandlerTest_SimpleWithFD_Test
+1653c 2 170 6
+1653e 16 170 6
+FUNC 16554 12 0 ExceptionHandlerTest_SimpleWithFD_Test::~ExceptionHandlerTest_SimpleWithFD_Test
+16554 2 170 6
+16556 6 170 6
+1655c 6 170 6
+16562 4 170 6
+FUNC 16568 18 0 ExceptionHandlerTest_SimpleWithPath_Test::~ExceptionHandlerTest_SimpleWithPath_Test
+16568 2 160 6
+1656a 16 160 6
+FUNC 16580 12 0 ExceptionHandlerTest_SimpleWithPath_Test::~ExceptionHandlerTest_SimpleWithPath_Test
+16580 2 160 6
+16582 6 160 6
+16588 6 160 6
+1658e 4 160 6
+FUNC 16592 80 0 DoneCallback
+16592 2 180 6
+16594 4 180 6
+16598 4 181 6
+1659c 6 184 6
+165a2 2 186 6
+165a4 2 187 6
+165a6 2 186 6
+165a8 4 187 6
+165ac 6 187 6
+165b2 18 3162 97
+165ca 4 3162 97
+165ce 4 3162 97
+165d2 4 188 6
+165d6 6 188 6
+165dc 18 3162 97
+165f4 4 3162 97
+165f8 4 3162 97
+165fc 4 189 6
+16600 8 189 6
+16608 4 182 6
+1660c 2 191 6
+1660e 4 192 6
+FUNC 16614 20 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_NoRedeliveryOnFilterCallbackTrue_Test>::CreateTest
+16614 2 486 85
+16616 8 486 85
+1661e 6 351 6
+16624 2 486 85
+16626 6 351 6
+1662c 8 486 85
+FUNC 16634 20 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_NoRedeliveryOnDoneCallbackTrue_Test>::CreateTest
+16634 2 486 85
+16636 8 486 85
+1663e 6 339 6
+16644 2 486 85
+16646 6 339 6
+1664c 8 486 85
+FUNC 16654 20 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_RedeliveryOnDoneCallbackFalse_Test>::CreateTest
+16654 2 486 85
+16656 8 486 85
+1665e 6 327 6
+16664 2 486 85
+16666 6 327 6
+1666c 8 486 85
+FUNC 16674 20 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_RedeliveryOnFilterCallbackFalse_Test>::CreateTest
+16674 2 486 85
+16676 8 486 85
+1667e 6 315 6
+16684 2 486 85
+16686 6 315 6
+1668c 8 486 85
+FUNC 16694 20 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_ChildCrashWithFD_Test>::CreateTest
+16694 2 486 85
+16696 8 486 85
+1669e 6 257 6
+166a4 2 486 85
+166a6 6 257 6
+166ac 8 486 85
+FUNC 166b4 20 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_ChildCrashWithPath_Test>::CreateTest
+166b4 2 486 85
+166b6 8 486 85
+166be 6 253 6
+166c4 2 486 85
+166c6 6 253 6
+166cc 8 486 85
+FUNC 166d4 20 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_SimpleWithFD_Test>::CreateTest
+166d4 2 486 85
+166d6 8 486 85
+166de 6 170 6
+166e4 2 486 85
+166e6 6 170 6
+166ec 8 486 85
+FUNC 166f4 20 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_SimpleWithPath_Test>::CreateTest
+166f4 2 486 85
+166f6 8 486 85
+166fe 6 160 6
+16704 2 486 85
+16706 6 160 6
+1670c 8 486 85
+FUNC 16714 20 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_AdditionalMemory_Test>::CreateTest
+16714 2 486 85
+16716 8 486 85
+1671e 6 1068 6
+16724 2 486 85
+16726 6 1068 6
+1672c 8 486 85
+FUNC 16734 20 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_GenerateMultipleDumpsWithPath_Test>::CreateTest
+16734 2 486 85
+16736 8 486 85
+1673e 6 1036 6
+16744 2 486 85
+16746 6 1036 6
+1674c 8 486 85
+FUNC 16754 20 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_GenerateMultipleDumpsWithFD_Test>::CreateTest
+16754 2 486 85
+16756 8 486 85
+1675e 6 1019 6
+16764 2 486 85
+16766 6 1019 6
+1676c 8 486 85
+FUNC 16774 20 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_WriteMinidumpExceptionStream_Test>::CreateTest
+16774 2 486 85
+16776 8 486 85
+1677e 6 1000 6
+16784 2 486 85
+16786 6 1000 6
+1678c 8 486 85
+FUNC 16794 20 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_ExternalDumper_Test>::CreateTest
+16794 2 486 85
+16796 8 486 85
+1679e 6 926 6
+167a4 2 486 85
+167a6 6 926 6
+167ac 8 486 85
+FUNC 167b4 20 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_ModuleInfo_Test>::CreateTest
+167b4 2 486 85
+167b6 8 486 85
+167be 6 806 6
+167c4 2 486 85
+167c6 6 806 6
+167cc 8 486 85
+FUNC 167d4 20 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_InstructionPointerMemoryNullPointer_Test>::CreateTest
+167d4 2 486 85
+167d6 8 486 85
+167de 6 760 6
+167e4 2 486 85
+167e6 6 760 6
+167ec 8 486 85
+FUNC 167f4 20 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_InstructionPointerMemoryMaxBound_Test>::CreateTest
+167f4 2 486 85
+167f6 8 486 85
+167fe 6 667 6
+16804 2 486 85
+16806 6 667 6
+1680c 8 486 85
+FUNC 16814 20 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_InstructionPointerMemoryMinBound_Test>::CreateTest
+16814 2 486 85
+16816 8 486 85
+1681e 6 579 6
+16824 2 486 85
+16826 6 579 6
+1682c 8 486 85
+FUNC 16834 20 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_InstructionPointerMemory_Test>::CreateTest
+16834 2 486 85
+16836 8 486 85
+1683e 6 487 6
+16844 2 486 85
+16846 6 487 6
+1684c 8 486 85
+FUNC 16854 20 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_StackedHandlersUnhandledToBottom_Test>::CreateTest
+16854 2 486 85
+16856 8 486 85
+1685e 6 457 6
+16864 2 486 85
+16866 6 457 6
+1686c 8 486 85
+FUNC 16874 20 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_StackedHandlersFilteredToBottom_Test>::CreateTest
+16874 2 486 85
+16876 8 486 85
+1687e 6 441 6
+16884 2 486 85
+16886 6 441 6
+1688c 8 486 85
+FUNC 16894 20 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_StackedHandlersNotDeliveredToBottom_Test>::CreateTest
+16894 2 486 85
+16896 8 486 85
+1689e 6 425 6
+168a4 2 486 85
+168a6 6 425 6
+168ac 8 486 85
+FUNC 168b4 20 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_StackedHandlersDeliveredToTop_Test>::CreateTest
+168b4 2 486 85
+168b6 8 486 85
+168be 6 409 6
+168c4 2 486 85
+168c6 6 409 6
+168cc 8 486 85
+FUNC 168d4 20 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_RedeliveryOnBadSignalHandlerFlag_Test>::CreateTest
+168d4 2 486 85
+168d6 8 486 85
+168de 6 380 6
+168e4 2 486 85
+168e6 6 380 6
+168ec 8 486 85
+FUNC 168f4 20 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_RedeliveryToDefaultHandler_Test>::CreateTest
+168f4 2 486 85
+168f6 8 486 85
+168fe 6 363 6
+16904 2 486 85
+16906 6 363 6
+1690c 8 486 85
+FUNC 16914 20 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_WriteMinidumpForChild_Test>::CreateTest
+16914 2 486 85
+16916 8 486 85
+1691e 6 1154 6
+16924 2 486 85
+16926 6 1154 6
+1692c 8 486 85
+FUNC 16934 20 0 testing::internal::TestFactoryImpl<ExceptionHandlerTest_AdditionalMemoryRemove_Test>::CreateTest
+16934 2 486 85
+16936 8 486 85
+1693e 6 1112 6
+16944 2 486 85
+16946 6 1112 6
+1694c 8 486 85
+FUNC 16954 118 0 CrashHandler
+16954 8 877 6
+1695c 8 877 6
+16964 2 880 6
+16966 6 877 6
+1696c 4 880 6
+16970 2 888 6
+16972 2 880 6
+16974 4 885 6
+16978 2 886 6
+1697a 4 888 6
+1697e 4 895 6
+16982 6 888 6
+16988 2 891 6
+1698a 2 893 6
+1698c 2 890 6
+1698e 6 895 6
+16994 2 892 6
+16996 2 895 6
+16998 2 892 6
+1699a 2 893 6
+1699c 4 895 6
+169a0 4 902 6
+169a4 2 903 6
+169a6 2 900 6
+169a8 2 903 6
+169aa 4 906 6
+169ae 2 907 6
+169b0 2 901 6
+169b2 2 907 6
+169b4 2 905 6
+169b6 2 896 6
+169b8 4 897 6
+169bc 6 909 6
+169c2 6 910 6
+169c8 4 911 6
+169cc 2 3671 97
+169ce 2 911 6
+169d0 18 3671 97
+169e8 4 3671 97
+169ec 4 3671 97
+169f0 4 913 6
+169f4 6 913 6
+169fa 4 3671 97
+169fe 14 2979 97
+16a12 4 2979 97
+16a16 4 2979 97
+16a1a 4 915 6
+16a1e 1c 3104 97
+16a3a 4 921 6
+16a3e 4 3104 97
+16a42 4 3104 97
+16a46 4 919 6
+16a4a 8 919 6
+16a52 2 916 6
+16a54 18 922 6
+FUNC 16a6c 54 0 std::basic_streambuf<char, std::char_traits<char> >::xsgetn
+16a6c 4 54 133
+16a70 6 54 133
+16a76 2 55 133
+16a78 4 58 133
+16a7c 8 59 133
+16a84 c 61 133
+16a90 2 172 145
+16a92 8 172 145
+16a9a 2 65 133
+16a9c 2 63 133
+16a9e 2 64 133
+16aa0 6 65 133
+16aa6 2 228 134
+16aa8 6 229 134
+16aae 4 69 133
+16ab2 4 220 145
+16ab6 4 71 133
+16aba 6 80 133
+FUNC 16ac0 18 0 std::priv::__ucopy_trivial
+16ac0 2 103 142
+16ac2 2 107 142
+16ac4 2 103 142
+16ac6 2 103 142
+16ac8 2 107 142
+16aca a 106 142
+16ad4 2 107 142
+16ad6 2 108 142
+FUNC 16ad8 14 0 testing::AssertionResult::message
+16ad8 2 1144 87
+16ada 6 298 82
+16ae0 4 298 82
+16ae4 8 299 82
+FUNC 16aec 1e 0 testing::internal::scoped_ptr<std::basic_stringstream<char, std::char_traits<char>, std::allocator<char> > >::~scoped_ptr
+16aec 2 1140 87
+16aee 2 1153 87
+16af0 2 1140 87
+16af2 2 1153 87
+16af4 8 1154 87
+16afc 4 1155 87
+16b00 6 1155 87
+16b06 4 1140 87
+FUNC 16b0a 1e 0 std::priv::_String_base<char, std::allocator<char> >::_M_deallocate_block
+16b0a 2 94 137
+16b0c 2 64 137
+16b0e 4 96 137
+16b12 4 96 137
+16b16 4 97 137
+16b1a 4 161 106
+16b1e 4 135 124
+16b22 6 161 106
+FUNC 16b28 16 0 google_breakpad::MinidumpDescriptor::~MinidumpDescriptor
+16b28 2 47 8
+16b2a 2 47 8
+16b2c e 156 137
+16b3a 4 47 8
+FUNC 16b40 24 0 std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::~basic_stringbuf
+16b40 4 58 131
+16b44 4 59 131
+16b48 2 58 131
+16b4a 6 59 131
+16b50 4 156 137
+16b54 6 59 131
+16b5a a 59 131
+FUNC 16b64 12 0 std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::~basic_stringbuf
+16b64 2 58 131
+16b66 2 58 131
+16b68 4 59 131
+16b6c 6 59 131
+16b72 4 59 131
+FUNC 16b76 28 0 testing::internal::scoped_ptr<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >::reset
+16b76 2 1152 87
+16b78 2 1153 87
+16b7a 2 1152 87
+16b7c 2 1153 87
+16b7e 2 1152 87
+16b80 2 1153 87
+16b82 8 1154 87
+16b8a 4 1155 87
+16b8e 6 156 137
+16b94 6 1155 87
+16b9a 4 1157 87
+FUNC 16b9e e 0 testing::internal::scoped_ptr<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >::~scoped_ptr
+16b9e 2 1140 87
+16ba0 c 1140 87
+FUNC 16bac 9c 0 std::basic_ios<char, std::char_traits<char> >::init
+16bac 4 97 113
+16bb0 4 92 114
+16bb4 2 192 115
+16bb6 2 92 114
+16bb8 2 192 115
+16bba 2 97 113
+16bbc 2 97 113
+16bbe 2 50 113
+16bc0 2 188 115
+16bc2 2 192 115
+16bc4 4 193 115
+16bc8 4 100 113
+16bcc 4 70 113
+16bd0 4 100 113
+16bd4 a 70 113
+16bde 4 72 113
+16be2 8 46 133
+16bea 6 47 133
+16bf0 2 46 133
+16bf2 8 47 133
+16bfa 8 48 133
+16c02 6 73 113
+16c08 c 351 122
+16c14 2 76 113
+16c16 6 100 113
+16c1c 6 100 113
+16c22 4 68 114
+16c26 2 190 115
+16c28 2 139 115
+16c2a 2 132 115
+16c2c 4 112 115
+16c30 2 132 115
+16c32 2 84 114
+16c34 2 188 115
+16c36 2 112 115
+16c38 4 84 114
+16c3c c 110 113
+FUNC 16c48 78 0 std::basic_iostream<char, std::char_traits<char> >::basic_iostream
+16c48 2 1406 116
+16c4a 4 92 113
+16c4e 2 1406 116
+16c50 2 92 113
+16c52 2 1406 116
+16c54 6 92 113
+16c5a 2 87 117
+16c5c 4 92 113
+16c60 6 87 117
+16c66 2 87 117
+16c68 4 92 113
+16c6c 2 87 117
+16c6e 4 87 117
+16c72 8 88 117
+16c7a 2 38 126
+16c7c 2 39 126
+16c7e 6 38 126
+16c84 2 38 126
+16c86 2 38 126
+16c88 2 38 126
+16c8a 8 39 126
+16c92 2 1411 116
+16c94 a 1410 116
+16c9e 4 1410 116
+16ca2 2 1410 116
+16ca4 2 1410 116
+16ca6 2 1410 116
+16ca8 6 1411 116
+16cae 12 1412 116
+FUNC 16cc0 66 0 std::basic_iostream<char, std::char_traits<char> >::basic_iostream
+16cc0 2 1406 116
+16cc2 2 87 117
+16cc4 2 1406 116
+16cc6 2 87 117
+16cc8 2 87 117
+16cca 4 87 117
+16cce 2 1406 116
+16cd0 4 87 117
+16cd4 2 1406 116
+16cd6 2 87 117
+16cd8 2 88 117
+16cda c 88 117
+16ce6 2 38 126
+16ce8 4 1410 116
+16cec 2 38 126
+16cee 2 38 126
+16cf0 6 38 126
+16cf6 2 39 126
+16cf8 c 39 126
+16d04 2 1410 116
+16d06 2 1411 116
+16d08 2 1410 116
+16d0a 2 1410 116
+16d0c 6 1410 116
+16d12 2 1410 116
+16d14 2 1410 116
+16d16 2 1411 116
+16d18 a 1411 116
+16d22 4 1412 116
+FUNC 16d26 42 0 std::__stlp_string_fill<char, std::char_traits<char> >
+16d26 2 16 138
+16d28 4 16 138
+16d2c 2 20 138
+16d2e c 19 138
+16d3a 4 20 138
+16d3e 8 200 134
+16d46 a 199 134
+16d50 8 200 134
+16d58 4 21 138
+16d5c 4 20 138
+16d60 4 24 138
+16d64 2 22 138
+16d66 2 25 138
+FUNC 16d68 6 0 std::basic_streambuf<char, std::char_traits<char> >::sputn
+16d68 6 205 134
+FUNC 16d6e 1c 0 std::basic_ios<char, std::char_traits<char> >::setstate
+16d6e 2 95 114
+16d70 4 95 114
+16d74 4 92 114
+16d78 4 92 114
+16d7c 2 192 115
+16d7e 2 188 115
+16d80 4 192 115
+16d84 6 193 115
+FUNC 16d8a 28 0 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::erase
+16d8a 2 803 136
+16d8c 2 802 136
+16d8e 6 802 136
+16d94 2 803 136
+16d96 4 805 136
+16d9a 4 168 145
+16d9e 8 168 145
+16da6 8 806 136
+16dae 4 809 136
+FUNC 16db4 38 0 std::priv::_String_base<char, std::allocator<char> >::_M_allocate_block
+16db4 2 607 135
+16db6 2 607 135
+16db8 2 608 135
+16dba 8 600 135
+16dc2 4 610 135
+16dc6 2 158 106
+16dc8 2 347 106
+16dca 2 158 106
+16dcc 8 134 124
+16dd4 6 158 106
+16dda 2 613 135
+16ddc 2 611 135
+16dde 2 612 135
+16de0 4 613 135
+16de4 8 623 135
+FUNC 16dec 18 0 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string
+16dec 2 158 136
+16dee 2 158 136
+16df0 2 124 137
+16df2 2 120 137
+16df4 2 481 106
+16df6 4 124 137
+16dfa 4 101 108
+16dfe 2 166 136
+16e00 2 101 108
+16e02 2 166 136
+FUNC 16e04 2e 0 google_breakpad::MinidumpDescriptor::MinidumpDescriptor
+16e04 2 69 8
+16e06 2 65 8
+16e08 2 65 8
+16e0a 2 69 8
+16e0c 4 69 8
+16e10 8 69 8
+16e18 a 69 8
+16e22 2 69 8
+16e24 2 71 8
+16e26 8 69 8
+16e2e 4 71 8
+FUNC 16e34 ac 0 std::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >::basic_stringstream
+16e34 4 439 131
+16e38 2 439 131
+16e3a 2 92 113
+16e3c 2 439 131
+16e3e 6 92 113
+16e44 2 439 131
+16e46 6 92 113
+16e4c 2 439 131
+16e4e a 92 113
+16e58 2 441 131
+16e5a 8 92 113
+16e62 c 441 131
+16e6e 2 441 131
+16e70 4 34 133
+16e74 8 441 131
+16e7c 4 441 131
+16e80 4 441 131
+16e84 2 34 133
+16e86 2 441 131
+16e88 16 34 133
+16e9e 2 46 131
+16ea0 2 46 131
+16ea2 2 46 131
+16ea4 4 34 133
+16ea8 8 46 131
+16eb0 8 46 131
+16eb8 8 442 131
+16ec0 20 443 131
+FUNC 16ee0 78 0 std::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >::basic_stringstream
+16ee0 2 439 131
+16ee2 6 439 131
+16ee8 8 441 131
+16ef0 2 441 131
+16ef2 4 34 133
+16ef6 2 441 131
+16ef8 2 441 131
+16efa 6 441 131
+16f00 2 441 131
+16f02 4 34 133
+16f06 4 441 131
+16f0a 1c 34 133
+16f26 2 46 131
+16f28 a 46 131
+16f32 8 46 131
+16f3a 2 442 131
+16f3c c 442 131
+16f48 10 443 131
+FUNC 16f58 30 0 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string
+16f58 2 639 135
+16f5a 2 639 135
+16f5c 2 112 137
+16f5e 2 481 106
+16f60 2 229 145
+16f62 2 639 135
+16f64 6 229 145
+16f6a 2 643 135
+16f6c 8 379 136
+16f74 a 148 142
+16f7e 2 101 108
+16f80 2 380 136
+16f82 2 101 108
+16f84 4 644 135
+FUNC 16f88 28 0 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string
+16f88 2 647 135
+16f8a 2 647 135
+16f8c 2 112 137
+16f8e 6 481 106
+16f94 2 378 136
+16f96 6 379 136
+16f9c a 148 142
+16fa6 2 101 108
+16fa8 2 380 136
+16faa 2 101 108
+16fac 4 649 135
+FUNC 16fb0 2a 0 google_breakpad::MinidumpDescriptor::MinidumpDescriptor
+16fb0 2 56 8
+16fb2 6 61 8
+16fb8 2 56 8
+16fba a 61 8
+16fc4 a 61 8
+16fce 2 61 8
+16fd0 2 63 8
+16fd2 4 61 8
+16fd6 4 63 8
+FUNC 16fdc 68 0 CrashWithCallbacks
+16fdc 8 308 6
+16fe4 4 308 6
+16fe8 2 310 6
+16fea 6 308 6
+16ff0 4 310 6
+16ff4 2 308 6
+16ff6 2 310 6
+16ff8 4 310 6
+16ffc 1a 310 6
+17016 6 310 6
+1701c 2 207 6
+1701e 2 312 6
+17020 6 207 6
+17026 4 312 6
+1702a 1a 313 6
+FUNC 17044 16 0 std::use_facet<std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > > >
+17044 2 292 122
+17046 2 292 122
+17048 8 351 122
+17050 2 351 122
+17052 4 297 122
+17056 4 351 122
+FUNC 1705c 54 0 std::basic_istream<char, std::char_traits<char> >::~basic_istream
+1705c 2 90 117
+1705e 6 90 117
+17064 6 90 117
+1706a 6 90 117
+17070 4 90 117
+17074 6 90 117
+1707a 2 90 117
+1707c 4 90 117
+17080 6 90 117
+17086 6 90 117
+1708c 6 90 117
+17092 8 90 117
+1709a 4 90 117
+1709e 6 90 117
+170a4 c 90 117
+FUNC 170b0 8 0 std::basic_istream<char, std::char_traits<char> >::~basic_istream
+170b0 8 90 117
+FUNC 170c4 12 0 std::basic_istream<char, std::char_traits<char> >::~basic_istream
+170c4 2 90 117
+170c6 6 90 117
+170cc 6 90 117
+170d2 4 90 117
+FUNC 170e2 8 0 std::basic_istream<char, std::char_traits<char> >::~basic_istream
+170e2 8 90 117
+FUNC 170ec 54 0 std::basic_ostream<char, std::char_traits<char> >::~basic_ostream
+170ec 2 43 126
+170ee 2 43 126
+170f0 4 44 126
+170f4 6 44 126
+170fa 6 44 126
+17100 4 44 126
+17104 6 44 126
+1710a 2 44 126
+1710c 4 44 126
+17110 6 44 126
+17116 6 44 126
+1711c 6 44 126
+17122 6 44 126
+17128 4 44 126
+1712c 6 44 126
+17132 e 44 126
+FUNC 17140 8 0 std::basic_ostream<char, std::char_traits<char> >::~basic_ostream
+17140 8 44 126
+FUNC 17154 12 0 std::basic_ostream<char, std::char_traits<char> >::~basic_ostream
+17154 2 43 126
+17156 2 43 126
+17158 4 44 126
+1715c 6 44 126
+17162 4 44 126
+FUNC 17172 8 0 std::basic_ostream<char, std::char_traits<char> >::~basic_ostream
+17172 2 43 126
+17174 6 44 126
+FUNC 1717c 8c 0 std::basic_iostream<char, std::char_traits<char> >::~basic_iostream
+1717c 2 1415 116
+1717e 8 1415 116
+17186 4 1416 116
+1718a 4 1416 116
+1718e 6 1416 116
+17194 4 1416 116
+17198 6 1416 116
+1719e 2 1416 116
+171a0 4 1416 116
+171a4 4 1416 116
+171a8 6 1416 116
+171ae 4 1416 116
+171b2 4 1416 116
+171b6 6 1416 116
+171bc 8 1416 116
+171c4 4 1416 116
+171c8 2 1416 116
+171ca 6 1416 116
+171d0 6 1416 116
+171d6 6 1416 116
+171dc 6 1416 116
+171e2 4 1416 116
+171e6 8 1416 116
+171ee 4 1416 116
+171f2 6 1416 116
+171f8 10 1416 116
+FUNC 17208 8 0 std::basic_iostream<char, std::char_traits<char> >::~basic_iostream
+17208 2 1415 116
+1720a 6 1416 116
+FUNC 17210 80 0 std::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >::~basic_stringstream
+17210 2 453 131
+17212 8 453 131
+1721a 4 454 131
+1721e 4 454 131
+17222 6 454 131
+17228 4 454 131
+1722c 6 454 131
+17232 2 454 131
+17234 4 454 131
+17238 4 454 131
+1723c 6 454 131
+17242 4 454 131
+17246 4 454 131
+1724a 6 454 131
+17250 c 454 131
+1725c 6 454 131
+17262 6 454 131
+17268 4 454 131
+1726c 8 454 131
+17274 4 454 131
+17278 6 454 131
+1727e 12 454 131
+FUNC 17290 8 0 std::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >::~basic_stringstream
+17290 2 453 131
+17292 6 454 131
+FUNC 17298 8 0 std::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >::~basic_stringstream
+17298 8 454 131
+FUNC 172b4 12 0 std::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >::~basic_stringstream
+172b4 2 453 131
+172b6 2 453 131
+172b8 4 454 131
+172bc 6 454 131
+172c2 4 454 131
+FUNC 172dc c0 0 testing::internal::CmpHelperEQ<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >
+172dc a 1476 82
+172e6 14 1476 82
+172fa e 400 136
+17308 6 289 139
+1730e 4 226 145
+17312 2 289 139
+17314 2 884 80
+17316 2 469 80
+17318 8 884 80
+17320 2 75 132
+17322 4 469 80
+17326 2 75 132
+17328 4 469 80
+1732c 8 75 132
+17334 6 886 80
+1733a 8 884 80
+17342 4 469 80
+17346 2 75 132
+17348 4 469 80
+1734c 8 75 132
+17354 6 886 80
+1735a 12 1471 82
+1736c e 156 137
+1737a 6 1482 82
+17380 1c 1488 82
+FUNC 1739c 8 0 std::basic_iostream<char, std::char_traits<char> >::~basic_iostream
+1739c 8 1416 116
+FUNC 173b8 12 0 std::basic_iostream<char, std::char_traits<char> >::~basic_iostream
+173b8 2 1415 116
+173ba 2 1415 116
+173bc 4 1416 116
+173c0 6 1416 116
+173c6 4 1416 116
+FUNC 173de 2c 0 std::basic_ostream<char, std::char_traits<char> >::flush
+173de 2 134 127
+173e0 2 135 127
+173e2 a 134 127
+173ec 2 135 127
+173ee 6 153 134
+173f4 4 136 127
+173f8 e 137 127
+17406 4 139 127
+FUNC 1740a 40 0 std::priv::__init_bostr<char, std::char_traits<char> >
+1740a 2 218 127
+1740c 2 218 127
+1740e c 219 127
+1741a 4 221 127
+1741e 6 222 127
+17424 c 223 127
+17430 4 224 127
+17434 8 225 127
+1743c a 174 115
+17446 2 228 127
+17448 2 229 127
+FUNC 1744a 24 0 std::basic_ostream<char, std::char_traits<char> >::sentry::~sentry
+1744a 2 184 127
+1744c 2 185 127
+1744e 2 184 127
+17450 e 185 127
+1745e 6 187 127
+17464 6 189 127
+1746a 4 190 127
+FUNC 1746e b4 0 std::basic_ostream<char, std::char_traits<char> >::_M_put_nowiden
+1746e 2 331 126
+17470 4 331 126
+17474 a 181 127
+1747e 4 333 126
+17482 6 229 145
+17488 2 336 126
+1748a 2 229 145
+1748c c 336 126
+17498 4 339 126
+1749c 2 341 126
+1749e 2 342 126
+174a0 8 341 126
+174a8 8 342 126
+174b0 4 343 126
+174b4 4 343 126
+174b8 a 344 126
+174c2 c 209 134
+174ce 4 343 126
+174d2 e 209 134
+174e0 4 348 126
+174e4 8 348 126
+174ec a 348 126
+174f6 6 348 126
+174fc 2 139 115
+174fe 2 351 126
+17500 8 139 115
+17508 2 357 126
+1750a e 358 126
+17518 6 359 126
+1751e 4 360 126
+FUNC 17522 90 0 std::priv::__put_num<char, std::char_traits<char>, long int>
+17522 4 194 126
+17526 4 194 126
+1752a a 181 127
+17534 2 199 126
+17536 10 211 126
+17546 2 202 126
+17548 2 145 115
+1754a 4 202 126
+1754e 2 145 115
+17550 2 202 126
+17552 6 145 115
+17558 6 202 126
+1755e 2 202 126
+17560 2 202 126
+17562 c 202 126
+1756e 18 57 128
+17586 16 67 125
+1759c 6 202 126
+175a2 4 210 126
+175a6 6 212 126
+175ac 6 213 126
+FUNC 175b2 98 0 std::operator<< <char, std::char_traits<char>, std::allocator<char> >
+175b2 4 30 138
+175b6 4 30 138
+175ba a 181 127
+175c4 2 41 138
+175c6 10 62 138
+175d6 2 139 115
+175d8 a 400 136
+175e2 8 44 138
+175ea 2 138 115
+175ec 2 139 115
+175ee 2 44 138
+175f0 2 46 138
+175f2 6 49 138
+175f8 a 44 138
+17602 2 49 138
+17604 2 52 138
+17606 c 55 138
+17612 6 55 138
+17618 a 53 138
+17622 6 55 138
+17628 4 50 138
+1762c 2 57 138
+1762e a 58 138
+17638 4 58 138
+1763c 6 64 138
+17642 8 65 138
+FUNC 1764a 90 0 std::priv::__put_num<char, std::char_traits<char>, void const*>
+1764a 4 194 126
+1764e 4 194 126
+17652 a 181 127
+1765c 2 199 126
+1765e 10 211 126
+1766e 2 202 126
+17670 2 145 115
+17672 4 202 126
+17676 2 145 115
+17678 2 202 126
+1767a 6 145 115
+17680 6 202 126
+17686 2 202 126
+17688 2 202 126
+1768a c 202 126
+17696 18 57 128
+176ae 16 101 125
+176c4 6 202 126
+176ca 4 210 126
+176ce 6 212 126
+176d4 6 213 126
+FUNC 176da 16 0 std::priv::_String_base<char, std::allocator<char> >::_M_rest
+176da 2 64 137
+176dc 2 74 137
+176de 4 74 137
+176e2 2 74 137
+176e4 4 74 137
+176e8 6 74 137
+176ee 2 74 137
+FUNC 176f0 3c 0 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_compute_next_size
+176f0 2 302 136
+176f2 6 400 136
+176f8 a 304 136
+17702 a 600 135
+1770c 8 306 136
+17714 4 307 136
+17718 2 307 136
+1771a c 308 136
+17726 6 310 136
+FUNC 1772c d8 0 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_append
+1772c 2 197 135
+1772e 4 196 135
+17732 6 196 135
+17738 2 197 135
+1773a 2 198 135
+1773c 8 199 135
+17744 8 200 135
+1774c 4 346 106
+17750 2 158 106
+17752 2 347 106
+17754 2 158 106
+17756 6 134 124
+1775c 8 158 106
+17764 6 352 106
+1776a 4 356 106
+1776e 14 86 142
+17782 8 86 142
+1778a 1c 146 108
+177a6 8 86 142
+177ae 6 146 108
+177b4 8 101 108
+177bc 8 205 135
+177c4 4 206 135
+177c8 2 160 137
+177ca 2 164 137
+177cc 6 165 137
+177d2 4 210 135
+177d6 6 86 142
+177dc 8 86 142
+177e4 6 146 108
+177ea a 101 108
+177f4 2 232 145
+177f6 6 214 135
+177fc 8 218 135
+FUNC 17804 44 0 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_assign
+17804 2 242 135
+17806 4 242 135
+1780a 2 400 136
+1780c 2 243 135
+1780e 2 242 135
+17810 2 400 136
+17812 2 244 135
+17814 2 242 135
+17816 2 244 135
+17818 2 168 145
+1781a 6 168 145
+17820 2 246 135
+17822 c 246 135
+1782e 2 168 145
+17830 4 168 145
+17834 4 400 136
+17838 2 250 135
+1783a 2 400 136
+1783c 8 250 135
+17844 4 253 135
+FUNC 17848 1a4 0 google_breakpad::AutoTempDir::AutoTempDir
+17848 8 54 63
+17850 4 54 63
+17854 4 54 63
+17858 2 54 63
+1785a 2 54 63
+1785c 4 54 63
+17860 4 54 63
+17864 1c 55 63
+17880 e 63 35
+1788e 2 64 35
+17890 8 63 35
+17898 6 64 35
+1789e 6 65 35
+178a4 8 67 35
+178ac c 68 35
+178b8 4 67 35
+178bc 8 69 35
+178c4 8 75 35
+178cc 4 76 35
+178d0 4 79 35
+178d4 8 80 35
+178dc 2 81 35
+178de 2 82 35
+178e0 2 81 35
+178e2 2 82 35
+178e4 c 84 35
+178f0 a 85 35
+178fa 2 54 63
+178fc a 96 35
+17906 4 121 101
+1790a 6 94 35
+17910 2 96 35
+17912 2 94 35
+17914 8 96 35
+1791c c 97 35
+17928 a 100 35
+17932 6 93 35
+17938 4 98 35
+1793c 2 101 35
+1793e 6 56 63
+17944 2 1139 87
+17946 4 277 82
+1794a 2 1139 87
+1794c 2 56 63
+1794e 18 56 63
+17966 a 56 63
+17970 4 56 63
+17974 a 56 63
+1797e 6 56 63
+17984 8 56 63
+1798c 6 85 79
+17992 6 56 63
+17998 6 156 137
+1799e 6 256 82
+179a4 6 229 145
+179aa 2 563 136
+179ac 2 563 136
+179ae 6 563 136
+179b4 38 58 63
+FUNC 179ec 1a 0 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator=
+179ec 2 353 136
+179ee 2 353 136
+179f0 2 229 145
+179f2 2 353 136
+179f4 4 229 145
+179f8 2 355 136
+179fa 2 355 136
+179fc 2 355 136
+179fe 4 356 136
+17a02 4 355 136
+FUNC 17a06 10 0 SimpleCallback
+17a06 2 1148 6
+17a08 2 1148 6
+17a0a 8 1150 6
+17a12 4 1152 6
+FUNC 17a18 6c 0 testing::AssertionResult::AppendMessage
+17a18 e 320 82
+17a26 2 320 82
+17a28 2 321 82
+17a2a 6 320 82
+17a30 2 321 82
+17a32 8 322 82
+17a3a 6 322 82
+17a40 8 322 82
+17a48 6 323 82
+17a4e 2 1143 87
+17a50 6 323 82
+17a56 6 229 145
+17a5c 2 530 136
+17a5e 2 530 136
+17a60 6 530 136
+17a66 6 156 137
+17a6c 18 324 82
+FUNC 17a84 2c 0 testing::AssertionResult::operator<< <char [12]>
+17a84 2 305 82
+17a86 4 305 82
+17a8a 8 306 82
+17a92 a 333 127
+17a9c 8 306 82
+17aa4 6 85 79
+17aaa 6 308 82
+FUNC 17a84 2c 0 testing::AssertionResult::operator<< <char [2]>
+FUNC 17a84 2c 0 testing::AssertionResult::operator<< <char [3]>
+FUNC 17a84 2c 0 testing::AssertionResult::operator<< <char [5]>
+FUNC 17a84 2c 0 testing::AssertionResult::operator<< <char [7]>
+FUNC 17ab0 38 0 testing::AssertionResult::operator<< <char const*>
+17ab0 2 305 82
+17ab2 2 305 82
+17ab4 2 306 82
+17ab6 2 305 82
+17ab8 a 306 82
+17ac2 2 333 127
+17ac4 2 150 79
+17ac6 8 333 127
+17ace 8 306 82
+17ad6 6 85 79
+17adc c 308 82
+FUNC 17ae8 2c 0 testing::AssertionResult::operator<< <std::basic_string<char, std::char_traits<char>, std::allocator<char> > >
+17ae8 2 305 82
+17aea 4 305 82
+17aee 8 306 82
+17af6 a 131 79
+17b00 8 306 82
+17b08 6 85 79
+17b0e 6 308 82
+FUNC 17b14 90 0 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_appendT<char const*>
+17b14 2 470 136
+17b16 4 468 136
+17b1a 6 468 136
+17b20 2 470 136
+17b22 2 355 119
+17b24 8 472 136
+17b2c 8 473 136
+17b34 4 346 106
+17b38 2 158 106
+17b3a 2 347 106
+17b3c 2 158 106
+17b3e 6 134 124
+17b44 6 158 106
+17b4a 2 352 106
+17b4c 4 353 106
+17b50 2 356 106
+17b52 a 120 142
+17b5c 2 148 142
+17b5e 2 120 142
+17b60 6 148 142
+17b66 2 101 108
+17b68 2 148 142
+17b6a 2 101 108
+17b6c 6 478 136
+17b72 2 479 136
+17b74 2 160 137
+17b76 2 164 137
+17b78 6 165 137
+17b7e 6 482 136
+17b84 2 148 142
+17b86 2 232 145
+17b88 2 483 136
+17b8a 6 148 142
+17b90 6 101 108
+17b96 6 485 136
+17b9c 8 489 136
+FUNC 17ba4 46 0 std::operator+<char, std::char_traits<char>, std::allocator<char> >
+17ba4 2 80 139
+17ba6 2 80 139
+17ba8 2 229 145
+17baa 4 80 139
+17bae 6 229 145
+17bb4 4 400 136
+17bb8 2 124 137
+17bba 4 400 136
+17bbe 2 124 137
+17bc0 2 120 137
+17bc2 2 481 106
+17bc4 4 124 137
+17bc8 4 101 108
+17bcc 2 517 136
+17bce 2 101 108
+17bd0 8 517 136
+17bd8 c 497 136
+17be4 6 94 139
+FUNC 17bec 2c8 0 google_breakpad::AutoTempDir::DeleteRecursively
+17bec 8 69 63
+17bf4 8 69 63
+17bfc 2 71 63
+17bfe 4 69 63
+17c02 6 71 63
+17c08 8 72 63
+17c10 6 77 63
+17c16 6 77 63
+17c1c 6 79 63
+17c22 12 85 63
+17c34 e 76 63
+17c42 e 77 63
+17c50 8 77 63
+17c58 4 77 63
+17c5c 8 79 63
+17c64 4 79 63
+17c68 4 79 63
+17c6c a 79 63
+17c76 6 156 137
+17c7c 8 81 63
+17c84 4 81 63
+17c88 2 1139 87
+17c8a 2 81 63
+17c8c 4 277 82
+17c90 6 1139 87
+17c96 2 81 63
+17c98 18 81 63
+17cb0 a 81 63
+17cba 4 81 63
+17cbe a 81 63
+17cc8 6 81 63
+17cce 8 81 63
+17cd6 6 85 79
+17cdc 6 81 63
+17ce2 6 156 137
+17ce8 a 256 82
+17cf2 c 82 63
+17cfe a 83 63
+17d08 6 85 63
+17d0e 4 85 63
+17d12 2 1139 87
+17d14 2 85 63
+17d16 4 277 82
+17d1a 2 1139 87
+17d1c 2 85 63
+17d1e 12 85 63
+17d30 a 85 63
+17d3a 4 85 63
+17d3e a 85 63
+17d48 6 85 63
+17d4e 8 85 63
+17d56 6 85 79
+17d5c 6 85 63
+17d62 6 156 137
+17d68 6 256 82
+17d6e 8 156 137
+17d76 c 87 63
+17d82 4 277 82
+17d86 4 1139 87
+17d8a 2 87 63
+17d8c 18 87 63
+17da4 a 87 63
+17dae 4 87 63
+17db2 a 87 63
+17dbc 6 87 63
+17dc2 8 87 63
+17dca 6 85 79
+17dd0 6 87 63
+17dd6 6 156 137
+17ddc a 256 82
+17de6 6 88 63
+17dec 4 88 63
+17df0 2 1139 87
+17df2 2 88 63
+17df4 4 277 82
+17df8 2 1139 87
+17dfa 2 88 63
+17dfc 18 88 63
+17e14 a 88 63
+17e1e 2 88 63
+17e20 a 88 63
+17e2a 6 88 63
+17e30 8 88 63
+17e38 6 85 79
+17e3e 6 88 63
+17e44 6 156 137
+17e4a 6 256 82
+17e50 64 89 63
+FUNC 17eb4 14 0 google_breakpad::AutoTempDir::~AutoTempDir
+17eb4 2 60 63
+17eb6 2 60 63
+17eb8 6 61 63
+17ebe 6 156 137
+17ec4 4 62 63
+FUNC 17ec8 64 0 CreateTMPFile
+17ec8 10 99 6
+17ed8 2 99 6
+17eda 8 100 6
+17ee2 2 99 6
+17ee4 6 100 6
+17eea 8 103 6
+17ef2 4 104 6
+17ef6 4 105 6
+17efa 8 106 6
+17f02 6 107 6
+17f08 6 156 137
+17f0e 1e 109 6
+FUNC 17f2c 88 0 ExceptionHandlerTest_SimpleWithFD_Test::TestBody
+17f2c 8 170 6
+17f34 4 170 6
+17f38 2 171 6
+17f3a 2 170 6
+17f3c 2 172 6
+17f3e 2 171 6
+17f40 2 170 6
+17f42 4 171 6
+17f46 8 172 6
+17f4e a 173 6
+17f58 c 174 6
+17f64 1a 174 6
+17f7e 6 174 6
+17f84 6 175 6
+17f8a 6 174 6
+17f90 6 156 137
+17f96 6 175 6
+17f9c 18 176 6
+FUNC 17fb4 180 0 ExceptionHandlerTest_SimpleWithPath_Test::TestBody
+17fb4 8 160 6
+17fbc 4 160 6
+17fc0 2 161 6
+17fc2 2 160 6
+17fc4 2 163 6
+17fc6 2 161 6
+17fc8 2 160 6
+17fca 4 161 6
+17fce 8 163 6
+17fd6 1e 163 6
+17ff4 4 87 8
+17ff8 6 163 6
+17ffe 8 87 8
+18006 16 1512 82
+1801c 6 156 137
+18022 6 164 6
+18028 6 302 82
+1802e a 164 6
+18038 4 164 6
+1803c 8 164 6
+18044 6 164 6
+1804a 8 164 6
+18052 6 85 79
+18058 6 164 6
+1805e a 256 82
+18068 e 165 6
+18076 8 166 6
+1807e 8 140 5
+18086 6 166 6
+1808c 8 87 8
+18094 12 1512 82
+180a6 6 156 137
+180ac 6 167 6
+180b2 6 302 82
+180b8 a 167 6
+180c2 4 167 6
+180c6 8 167 6
+180ce 6 167 6
+180d4 8 167 6
+180dc 6 85 79
+180e2 6 167 6
+180e8 6 256 82
+180ee 6 156 137
+180f4 6 163 6
+180fa 6 167 6
+18100 34 168 6
+FUNC 18134 a4 0 std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::xsputn
+18134 4 170 131
+18138 2 170 131
+1813a 2 174 131
+1813c 2 170 131
+1813e 4 174 131
+18142 2 170 131
+18144 2 174 131
+18146 8 174 131
+1814e 4 177 131
+18152 6 177 131
+18158 2 172 131
+1815a 14 193 131
+1816e 8 194 131
+18176 c 497 136
+18182 4 197 131
+18186 2 93 134
+18188 2 94 134
+1818a 4 95 134
+1818e c 497 136
+1819a 2 400 136
+1819c 2 117 134
+1819e 2 400 136
+181a0 2 115 134
+181a2 2 119 134
+181a4 2 115 134
+181a6 4 205 131
+181aa 6 172 131
+181b0 2 178 131
+181b2 4 179 131
+181b6 4 172 145
+181ba 2 115 134
+181bc 2 182 131
+181be 4 115 134
+181c2 2 182 131
+181c4 2 172 145
+181c6 6 172 145
+181cc 2 186 131
+181ce 4 187 131
+181d2 6 209 131
+FUNC 181d8 48 0 testing::PrintToString<int>
+181d8 e 883 80
+181e6 2 883 80
+181e8 6 884 80
+181ee 2 883 80
+181f0 4 884 80
+181f4 8 240 126
+181fc 8 75 132
+18204 6 886 80
+1820a 16 887 80
+FUNC 18220 d4 0 testing::internal::CmpHelperOpFailure<int, int>
+18220 8 1579 82
+18228 8 1579 82
+18230 2 1583 82
+18232 6 1579 82
+18238 2 1583 82
+1823a a 1579 82
+18244 4 1583 82
+18248 a 1583 82
+18252 6 1583 82
+18258 2 1583 82
+1825a 2 1382 82
+1825c 6 1583 82
+18262 6 1583 82
+18268 8 1583 82
+18270 6 1583 82
+18276 a 1584 82
+18280 8 1382 82
+18288 8 1584 82
+18290 2 1585 82
+18292 2 1382 82
+18294 8 1585 82
+1829c 8 1382 82
+182a4 a 1585 82
+182ae 6 1585 82
+182b4 c 156 137
+182c0 6 256 82
+182c6 2e 1586 82
+FUNC 182f4 2c 0 testing::internal::CmpHelperNE<int, int>
+182f4 2 1615 82
+182f6 c 1615 82
+18302 4 1615 82
+18306 2 1615 82
+18308 c 1615 82
+18314 c 1615 82
+FUNC 18320 74 0 testing::internal::CmpHelperEQ<int, int>
+18320 8 1476 82
+18328 c 1476 82
+18334 2 1481 82
+18336 2 1476 82
+18338 4 1481 82
+1833c 2 1476 82
+1833e 2 1481 82
+18340 2 1476 82
+18342 2 1481 82
+18344 6 1482 82
+1834a 14 1382 82
+1835e 12 1471 82
+18370 c 156 137
+1837c 18 1488 82
+FUNC 18394 178 0 WaitForProcessToTerminate
+18394 10 129 6
+183a4 4 129 6
+183a8 12 131 6
+183ba 4 131 6
+183be 6 131 6
+183c4 4 131 6
+183c8 4 131 6
+183cc 2 131 6
+183ce 8 131 6
+183d6 2 131 6
+183d8 e 131 6
+183e6 8 131 6
+183ee 6 302 82
+183f4 e 131 6
+18402 6 256 82
+18408 2 132 6
+1840a 2 1139 87
+1840c e 132 6
+1841a 2 1139 87
+1841c 4 277 82
+18420 2 132 6
+18422 1a 132 6
+1843c 12 132 6
+1844e 6 132 6
+18454 8 132 6
+1845c 6 85 79
+18462 6 132 6
+18468 8 156 137
+18470 6 256 82
+18476 2 133 6
+18478 4 1512 82
+1847c 6 133 6
+18482 e 1512 82
+18490 6 133 6
+18496 6 302 82
+1849c 10 133 6
+184ac 6 133 6
+184b2 8 133 6
+184ba 6 85 79
+184c0 6 133 6
+184c6 6 256 82
+184cc 40 134 6
+FUNC 1850c 2ac 0 ReadMinidumpPathFromPipe
+1850c a 137 6
+18516 a 137 6
+18520 2 139 6
+18522 2 137 6
+18524 4 139 6
+18528 2 141 6
+1852a 4 137 6
+1852e 2 140 6
+18530 4 141 6
+18534 10 143 6
+18544 4 143 6
+18548 6 143 6
+1854e 2 144 6
+18550 4 1512 82
+18554 2 144 6
+18556 10 1512 82
+18566 2 143 6
+18568 4 1512 82
+1856c a 144 6
+18576 6 302 82
+1857c e 144 6
+1858a 6 256 82
+18590 2 1139 87
+18592 4 145 6
+18596 2 1139 87
+18598 4 145 6
+1859c 4 277 82
+185a0 2 145 6
+185a2 1a 145 6
+185bc 12 145 6
+185ce 6 145 6
+185d4 8 145 6
+185dc 6 85 79
+185e2 6 145 6
+185e8 8 156 137
+185f0 6 256 82
+185f6 10 148 6
+18606 4 1512 82
+1860a 2 148 6
+1860c e 1512 82
+1861a 6 148 6
+18620 6 302 82
+18626 10 148 6
+18636 6 148 6
+1863c 8 148 6
+18644 4 85 79
+18648 6 256 82
+1864e 6 149 6
+18654 8 1619 82
+1865c 8 1619 82
+18664 18 1619 82
+1867c 6 149 6
+18682 6 302 82
+18688 8 149 6
+18690 2 149 6
+18692 8 149 6
+1869a 6 149 6
+186a0 8 149 6
+186a8 6 85 79
+186ae 6 149 6
+186b4 a 256 82
+186be 2 150 6
+186c0 4 1512 82
+186c4 8 150 6
+186cc a 151 6
+186d6 4 1512 82
+186da 2 151 6
+186dc 10 1512 82
+186ec 6 151 6
+186f2 6 302 82
+186f8 10 151 6
+18708 6 151 6
+1870e 8 151 6
+18716 6 85 79
+1871c 6 151 6
+18722 6 256 82
+18728 c 156 6
+18734 6 256 82
+1873a 4 152 6
+1873e 2 153 6
+18740 2 152 6
+18742 4 153 6
+18746 8 154 6
+1874e c 155 6
+1875a 6 156 6
+18760 4 155 6
+18764 54 156 6
+FUNC 187b8 e8 0 testing::internal::CmpHelperOpFailure<long int, int>
+187b8 8 1579 82
+187c0 8 1579 82
+187c8 2 1583 82
+187ca 6 1579 82
+187d0 2 1583 82
+187d2 a 1579 82
+187dc 4 1583 82
+187e0 a 1583 82
+187ea 6 1583 82
+187f0 2 1583 82
+187f2 2 884 80
+187f4 6 1583 82
+187fa 6 1583 82
+18800 8 1583 82
+18808 6 1583 82
+1880e a 1584 82
+18818 8 884 80
+18820 4 259 126
+18824 2 75 132
+18826 4 259 126
+1882a 8 75 132
+18832 6 886 80
+18838 8 1584 82
+18840 a 1585 82
+1884a 8 1382 82
+18852 a 1585 82
+1885c 6 1585 82
+18862 c 156 137
+1886e 6 256 82
+18874 2c 1586 82
+FUNC 188a0 244 0 ExceptionHandlerTest_GenerateMultipleDumpsWithFD_Test::TestBody
+188a0 a 1019 6
+188aa 6 1019 6
+188b0 4 1020 6
+188b4 4 1019 6
+188b8 4 1021 6
+188bc 2 1020 6
+188be 2 1021 6
+188c0 2 1019 6
+188c2 4 1020 6
+188c6 8 1021 6
+188ce 8 1022 6
+188d6 2 1023 6
+188d8 2 1022 6
+188da 8 1023 6
+188e2 1c 1023 6
+188fe 6 1023 6
+18904 6 1024 6
+1890a 2 1139 87
+1890c 4 277 82
+18910 4 1139 87
+18914 2 1024 6
+18916 16 1024 6
+1892c 14 1024 6
+18940 6 256 82
+18946 a 1027 6
+18950 2 1623 82
+18952 2 1027 6
+18954 2 1028 6
+18956 2 1623 82
+18958 8 1623 82
+18960 1a 1623 82
+1897a 6 1028 6
+18980 6 302 82
+18986 12 1028 6
+18998 6 256 82
+1899e 6 1031 6
+189a4 2 1139 87
+189a6 4 277 82
+189aa 2 1139 87
+189ac 2 1031 6
+189ae 16 1031 6
+189c4 12 1031 6
+189d6 2 1031 6
+189d8 4 1031 6
+189dc 6 1031 6
+189e2 8 1031 6
+189ea 6 85 79
+189f0 6 1031 6
+189f6 8 156 137
+189fe 6 256 82
+18a04 a 1032 6
+18a0e 2 1623 82
+18a10 2 1032 6
+18a12 2 1033 6
+18a14 2 1623 82
+18a16 8 1623 82
+18a1e 1a 1623 82
+18a38 6 1033 6
+18a3e 6 302 82
+18a44 10 1033 6
+18a54 2 1033 6
+18a56 4 1033 6
+18a5a 6 1033 6
+18a60 8 1033 6
+18a68 6 85 79
+18a6e 6 1033 6
+18a74 c 256 82
+18a80 c 156 137
+18a8c 58 1034 6
+FUNC 18ae4 6c 0 testing::PrintToString<void*>
+18ae4 e 883 80
+18af2 2 883 80
+18af4 4 884 80
+18af8 2 883 80
+18afa 4 884 80
+18afe 2 883 80
+18b00 8 884 80
+18b08 2 310 80
+18b0a c 333 127
+18b16 6 318 80
+18b1c 8 291 126
+18b24 8 75 132
+18b2c 6 886 80
+18b32 1e 887 80
+FUNC 18b50 d4 0 testing::internal::CmpHelperOpFailure<void*, void*>
+18b50 8 1579 82
+18b58 8 1579 82
+18b60 2 1583 82
+18b62 6 1579 82
+18b68 2 1583 82
+18b6a a 1579 82
+18b74 4 1583 82
+18b78 a 1583 82
+18b82 6 1583 82
+18b88 2 1583 82
+18b8a 2 1382 82
+18b8c 6 1583 82
+18b92 6 1583 82
+18b98 8 1583 82
+18ba0 6 1583 82
+18ba6 a 1584 82
+18bb0 8 1382 82
+18bb8 8 1584 82
+18bc0 2 1585 82
+18bc2 2 1382 82
+18bc4 8 1585 82
+18bcc 8 1382 82
+18bd4 a 1585 82
+18bde 6 1585 82
+18be4 c 156 137
+18bf0 6 256 82
+18bf6 2e 1586 82
+FUNC 18c24 d8 0 testing::PrintToString<unsigned int>
+18c24 e 883 80
+18c32 2 883 80
+18c34 6 884 80
+18c3a 2 181 127
+18c3c 2 883 80
+18c3e 2 884 80
+18c40 2 883 80
+18c42 4 884 80
+18c46 10 181 127
+18c56 2 199 126
+18c58 10 211 126
+18c68 2 202 126
+18c6a 2 145 115
+18c6c 4 202 126
+18c70 2 145 115
+18c72 2 202 126
+18c74 6 145 115
+18c7a 6 202 126
+18c80 2 202 126
+18c82 2 202 126
+18c84 c 202 126
+18c90 18 57 128
+18ca8 1c 72 125
+18cc4 6 202 126
+18cca 6 210 126
+18cd0 6 212 126
+18cd6 8 75 132
+18cde 6 886 80
+18ce4 18 887 80
+FUNC 18cfc e8 0 testing::internal::CmpHelperLT<unsigned int, unsigned int>
+18cfc e 1619 82
+18d0a 14 1619 82
+18d1e 4 1619 82
+18d22 4 1619 82
+18d26 10 1583 82
+18d36 a 1583 82
+18d40 6 1583 82
+18d46 2 1583 82
+18d48 2 1382 82
+18d4a 6 1583 82
+18d50 6 1583 82
+18d56 8 1583 82
+18d5e 6 1583 82
+18d64 a 1584 82
+18d6e 8 1382 82
+18d76 8 1584 82
+18d7e 2 1585 82
+18d80 2 1382 82
+18d82 8 1585 82
+18d8a 8 1382 82
+18d92 a 1585 82
+18d9c 6 1585 82
+18da2 c 156 137
+18dae 6 256 82
+18db4 30 1619 82
+FUNC 18de4 74 0 testing::internal::CmpHelperEQ<unsigned int, unsigned int>
+18de4 8 1476 82
+18dec c 1476 82
+18df8 2 1481 82
+18dfa 2 1476 82
+18dfc 4 1481 82
+18e00 2 1476 82
+18e02 2 1481 82
+18e04 2 1476 82
+18e06 2 1481 82
+18e08 6 1482 82
+18e0e 14 1382 82
+18e22 12 1471 82
+18e34 c 156 137
+18e40 18 1488 82
+FUNC 18e58 11c 0 testing::internal::CmpHelperEQ<unsigned int, long long unsigned int>
+18e58 e 1476 82
+18e66 2 1481 82
+18e68 2 1476 82
+18e6a 4 1476 82
+18e6e 2 1481 82
+18e70 4 1476 82
+18e74 a 1481 82
+18e7e 2 1476 82
+18e80 2 1481 82
+18e82 6 1482 82
+18e88 6 1382 82
+18e8e 4 181 127
+18e92 c 884 80
+18e9e e 181 127
+18eac 2 199 126
+18eae 12 211 126
+18ec0 2 202 126
+18ec2 2 145 115
+18ec4 4 202 126
+18ec8 2 145 115
+18eca 2 202 126
+18ecc 6 145 115
+18ed2 6 202 126
+18ed8 2 202 126
+18eda 2 202 126
+18edc c 202 126
+18ee8 18 57 128
+18f00 1a 83 125
+18f1a 6 202 126
+18f20 4 210 126
+18f24 2 75 132
+18f26 6 212 126
+18f2c 8 75 132
+18f34 6 886 80
+18f3a 14 1471 82
+18f4e c 156 137
+18f5a 1a 1488 82
+FUNC 18f74 96 0 std::priv::__put_num<char, std::char_traits<char>, long long int>
+18f74 4 194 126
+18f78 6 194 126
+18f7e a 181 127
+18f88 2 199 126
+18f8a 10 211 126
+18f9a 2 202 126
+18f9c 2 145 115
+18f9e 4 202 126
+18fa2 2 145 115
+18fa4 2 202 126
+18fa6 6 145 115
+18fac 6 202 126
+18fb2 2 202 126
+18fb4 2 202 126
+18fb6 c 202 126
+18fc2 18 57 128
+18fda 1a 78 125
+18ff4 6 202 126
+18ffa 4 210 126
+18ffe 6 212 126
+19004 6 213 126
+FUNC 1900c 110 0 testing::internal::CmpHelperGT<long long int, int>
+1900c 12 1623 82
+1901e 1e 1623 82
+1903c 4 1623 82
+19040 4 1623 82
+19044 10 1583 82
+19054 a 1583 82
+1905e 6 1583 82
+19064 2 1583 82
+19066 2 884 80
+19068 6 1583 82
+1906e 6 1583 82
+19074 8 1583 82
+1907c 6 1583 82
+19082 a 1584 82
+1908c 8 884 80
+19094 6 268 126
+1909a 2 75 132
+1909c 4 268 126
+190a0 8 75 132
+190a8 6 886 80
+190ae 8 1584 82
+190b6 a 1585 82
+190c0 8 1382 82
+190c8 a 1585 82
+190d2 6 1585 82
+190d8 c 156 137
+190e4 6 256 82
+190ea 32 1623 82
+FUNC 1911c 94 0 testing::internal::CmpHelperEQ<MDExceptionCodeLinux, unsigned int>
+1911c e 1476 82
+1912a 8 1476 82
+19132 6 1481 82
+19138 2 1476 82
+1913a 2 1481 82
+1913c 2 1476 82
+1913e 2 1481 82
+19140 6 1482 82
+19146 4 173 80
+1914a a 884 80
+19154 6 268 126
+1915a 4 75 132
+1915e 6 268 126
+19164 8 75 132
+1916c 6 886 80
+19172 8 1382 82
+1917a 10 1471 82
+1918a c 156 137
+19196 1a 1488 82
+FUNC 191b0 62 0 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_reserve
+191b0 2 170 135
+191b2 2 170 135
+191b4 4 346 106
+191b8 2 158 106
+191ba 2 347 106
+191bc 2 158 106
+191be 8 134 124
+191c6 8 158 106
+191ce 4 352 106
+191d2 4 356 106
+191d6 12 86 142
+191e8 8 86 142
+191f0 6 146 108
+191f6 8 101 108
+191fe 8 174 135
+19206 2 175 135
+19208 2 160 137
+1920a 2 164 137
+1920c 2 165 137
+1920e 4 176 135
+FUNC 19212 30 0 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::push_back
+19212 2 534 136
+19214 4 534 136
+19218 a 535 136
+19222 8 536 136
+1922a 6 536 136
+19230 8 101 108
+19238 2 232 145
+1923a 8 539 136
+FUNC 19242 5e 0 std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::overflow
+19242 2 142 131
+19244 2 142 131
+19246 2 144 131
+19248 2 142 131
+1924a 2 144 131
+1924c 6 145 131
+19252 c 146 131
+1925e 4 147 131
+19262 6 115 134
+19268 4 149 131
+1926c 6 150 131
+19272 8 151 131
+1927a 2 153 131
+1927c 2 93 134
+1927e 2 94 134
+19280 4 95 134
+19284 6 157 131
+1928a 4 117 134
+1928e 2 119 134
+19290 6 115 134
+19296 4 182 145
+1929a 4 163 131
+1929e 2 166 131
+FUNC 192a0 64 0 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::append
+192a0 2 180 135
+192a2 4 180 135
+192a6 4 181 135
+192aa 6 400 136
+192b0 a 182 135
+192ba 8 600 135
+192c2 8 184 135
+192ca a 185 135
+192d4 8 185 135
+192dc 2 186 135
+192de 4 249 142
+192e2 4 146 108
+192e6 4 249 142
+192ea 8 101 108
+192f2 2 232 145
+192f4 6 189 135
+192fa a 192 135
+FUNC 19304 90 0 std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::_M_xsputnc
+19304 4 213 131
+19308 2 213 131
+1930a 2 217 131
+1930c 2 213 131
+1930e 4 217 131
+19312 2 213 131
+19314 2 217 131
+19316 4 217 131
+1931a a 220 131
+19324 4 221 131
+19328 4 222 131
+1932c 4 235 145
+19330 2 115 134
+19332 2 225 131
+19334 4 115 134
+19338 4 225 131
+1933c 6 235 145
+19342 4 230 131
+19346 2 215 131
+19348 c 238 131
+19354 4 239 131
+19358 4 240 131
+1935c 2 239 131
+1935e 8 240 131
+19366 2 242 131
+19368 2 93 134
+1936a 2 94 134
+1936c 4 95 134
+19370 c 244 131
+1937c 2 400 136
+1937e 2 117 134
+19380 2 400 136
+19382 2 115 134
+19384 2 119 134
+19386 2 115 134
+19388 6 250 131
+1938e 2 215 131
+19390 4 254 131
+FUNC 19394 84 0 std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::setbuf
+19394 2 263 131
+19396 4 262 131
+1939a 2 262 131
+1939c 6 263 131
+193a2 2 279 131
+193a4 2 269 131
+193a6 4 267 131
+193aa c 271 131
+193b6 2 270 131
+193b8 2 265 131
+193ba 2 274 131
+193bc 4 266 131
+193c0 2 400 136
+193c2 6 276 131
+193c8 4 400 136
+193cc 4 276 131
+193d0 4 275 131
+193d4 8 264 131
+193dc 2 72 137
+193de 4 72 137
+193e2 4 162 135
+193e6 6 72 137
+193ec 4 163 135
+193f0 6 166 135
+193f6 8 284 131
+193fe 2 285 131
+19400 2 93 134
+19402 2 94 134
+19404 2 95 134
+19406 4 288 131
+1940a 2 115 134
+1940c 2 117 134
+1940e 2 119 134
+19410 2 115 134
+19412 6 295 131
+FUNC 19418 2f4 0 ChildCrash
+19418 8 210 6
+19420 4 210 6
+19424 2 211 6
+19426 4 210 6
+1942a 2 211 6
+1942c 2 210 6
+1942e 4 211 6
+19432 2 212 6
+19434 a 214 6
+1943e 4 212 6
+19442 8 214 6
+1944a 6 215 6
+19450 c 216 6
+1945c a 218 6
+19466 8 218 6
+1946e 2 218 6
+19470 a 218 6
+1947a 2 218 6
+1947c 4 218 6
+19480 a 218 6
+1948a 6 302 82
+19490 10 218 6
+194a0 6 218 6
+194a6 8 218 6
+194ae 6 85 79
+194b4 6 218 6
+194ba a 256 82
+194c4 2 213 6
+194c6 4 221 6
+194ca 8 222 6
+194d2 6 225 6
+194d8 8 227 6
+194e0 6 227 6
+194e6 8 227 6
+194ee 2 227 6
+194f0 e 227 6
+194fe 6 229 6
+19504 2 230 6
+19506 4 233 6
+1950a 2 230 6
+1950c 4 233 6
+19510 6 233 6
+19516 2 233 6
+19518 2 233 6
+1951a 18 233 6
+19532 2 233 6
+19534 4 108 57
+19538 4 233 6
+1953c a 207 6
+19546 4 98 57
+1954a 6 98 57
+19550 6 98 57
+19556 6 239 6
+1955c 6 240 6
+19562 6 242 6
+19568 6 242 6
+1956e 4 242 6
+19572 2 242 6
+19574 8 242 6
+1957c 8 242 6
+19584 4 242 6
+19588 c 244 6
+19594 12 242 6
+195a6 6 245 6
+195ac 6 245 6
+195b2 4 245 6
+195b6 2 245 6
+195b8 8 245 6
+195c0 8 245 6
+195c8 a 245 6
+195d2 14 245 6
+195e6 6 245 6
+195ec 8 245 6
+195f4 6 85 79
+195fa 6 245 6
+19600 2 245 6
+19602 4 248 6
+19606 4 248 6
+1960a 4 248 6
+1960e 4 248 6
+19612 c 1552 82
+1961e 2 248 6
+19620 e 1552 82
+1962e a 248 6
+19638 6 302 82
+1963e e 248 6
+1964c 6 256 82
+19652 1a 249 6
+1966c 6 302 82
+19672 10 249 6
+19682 6 249 6
+19688 8 249 6
+19690 6 85 79
+19696 6 249 6
+1969c e 256 82
+196aa 6 250 6
+196b0 c 156 137
+196bc 50 251 6
+FUNC 1970c 6c 0 ExceptionHandlerTest_ChildCrashWithPath_Test::TestBody
+1970c 4 253 6
+19710 8 254 6
+19718 6 254 6
+1971e 4 254 6
+19722 2 254 6
+19724 6 254 6
+1972a 8 254 6
+19732 a 254 6
+1973c 16 254 6
+19752 6 254 6
+19758 8 254 6
+19760 6 85 79
+19766 6 254 6
+1976c c 255 6
+FUNC 19778 70 0 ExceptionHandlerTest_ChildCrashWithFD_Test::TestBody
+19778 4 257 6
+1977c 8 258 6
+19784 6 258 6
+1978a 4 258 6
+1978e 2 258 6
+19790 6 258 6
+19796 8 258 6
+1979e a 258 6
+197a8 18 258 6
+197c0 6 258 6
+197c6 8 258 6
+197ce 6 85 79
+197d4 6 258 6
+197da e 259 6
+FUNC 197e8 148 0 ExceptionHandlerTest_RedeliveryOnFilterCallbackFalse_Test::TestBody
+197e8 8 315 6
+197f0 4 315 6
+197f4 4 316 6
+197f8 2 315 6
+197fa 2 316 6
+197fc 2 315 6
+197fe 4 316 6
+19802 6 318 6
+19808 8 319 6
+19810 6 320 6
+19816 4 277 82
+1981a 6 1139 87
+19820 2 320 6
+19822 16 320 6
+19838 8 320 6
+19840 2 320 6
+19842 e 320 6
+19850 6 320 6
+19856 8 320 6
+1985e 6 85 79
+19864 6 320 6
+1986a 6 156 137
+19870 e 256 82
+1987e 8 321 6
+19886 c 321 6
+19892 6 156 137
+19898 6 324 6
+1989e 6 324 6
+198a4 4 324 6
+198a8 2 324 6
+198aa 8 324 6
+198b2 8 324 6
+198ba a 324 6
+198c4 18 324 6
+198dc 6 324 6
+198e2 8 324 6
+198ea 6 85 79
+198f0 c 324 6
+198fc 34 325 6
+FUNC 19930 148 0 ExceptionHandlerTest_RedeliveryOnDoneCallbackFalse_Test::TestBody
+19930 8 327 6
+19938 4 327 6
+1993c 4 328 6
+19940 2 327 6
+19942 2 328 6
+19944 2 327 6
+19946 4 328 6
+1994a 6 330 6
+19950 8 331 6
+19958 6 332 6
+1995e 4 277 82
+19962 6 1139 87
+19968 2 332 6
+1996a 16 332 6
+19980 8 332 6
+19988 2 332 6
+1998a e 332 6
+19998 6 332 6
+1999e 8 332 6
+199a6 6 85 79
+199ac 6 332 6
+199b2 6 156 137
+199b8 e 256 82
+199c6 8 333 6
+199ce c 333 6
+199da 6 156 137
+199e0 6 336 6
+199e6 6 336 6
+199ec 4 336 6
+199f0 2 336 6
+199f2 8 336 6
+199fa 8 336 6
+19a02 a 336 6
+19a0c 18 336 6
+19a24 6 336 6
+19a2a 8 336 6
+19a32 6 85 79
+19a38 c 336 6
+19a44 34 337 6
+FUNC 19a78 148 0 ExceptionHandlerTest_NoRedeliveryOnDoneCallbackTrue_Test::TestBody
+19a78 8 339 6
+19a80 4 339 6
+19a84 4 340 6
+19a88 2 339 6
+19a8a 2 340 6
+19a8c 2 339 6
+19a8e 4 340 6
+19a92 6 342 6
+19a98 8 343 6
+19aa0 6 344 6
+19aa6 4 277 82
+19aaa 6 1139 87
+19ab0 2 344 6
+19ab2 16 344 6
+19ac8 8 344 6
+19ad0 2 344 6
+19ad2 e 344 6
+19ae0 6 344 6
+19ae6 8 344 6
+19aee 6 85 79
+19af4 6 344 6
+19afa 6 156 137
+19b00 e 256 82
+19b0e 8 345 6
+19b16 c 345 6
+19b22 6 156 137
+19b28 6 348 6
+19b2e 6 348 6
+19b34 4 348 6
+19b38 2 348 6
+19b3a 8 348 6
+19b42 8 348 6
+19b4a a 348 6
+19b54 18 348 6
+19b6c 6 348 6
+19b72 8 348 6
+19b7a 6 85 79
+19b80 c 348 6
+19b8c 34 349 6
+FUNC 19bc0 148 0 ExceptionHandlerTest_NoRedeliveryOnFilterCallbackTrue_Test::TestBody
+19bc0 8 351 6
+19bc8 4 351 6
+19bcc 4 352 6
+19bd0 2 351 6
+19bd2 2 352 6
+19bd4 2 351 6
+19bd6 4 352 6
+19bda 6 354 6
+19be0 8 355 6
+19be8 6 356 6
+19bee 4 277 82
+19bf2 6 1139 87
+19bf8 2 356 6
+19bfa 16 356 6
+19c10 8 356 6
+19c18 2 356 6
+19c1a e 356 6
+19c28 6 356 6
+19c2e 8 356 6
+19c36 6 85 79
+19c3c 6 356 6
+19c42 6 156 137
+19c48 e 256 82
+19c56 8 357 6
+19c5e c 357 6
+19c6a 6 156 137
+19c70 6 360 6
+19c76 6 360 6
+19c7c 4 360 6
+19c80 2 360 6
+19c82 8 360 6
+19c8a 8 360 6
+19c92 a 360 6
+19c9c 18 360 6
+19cb4 6 360 6
+19cba 8 360 6
+19cc2 6 85 79
+19cc8 c 360 6
+19cd4 34 361 6
+FUNC 19d08 c4 0 ExceptionHandlerTest_RedeliveryToDefaultHandler_Test::TestBody
+19d08 6 363 6
+19d0e 4 363 6
+19d12 2 364 6
+19d14 2 363 6
+19d16 2 364 6
+19d18 2 363 6
+19d1a 4 364 6
+19d1e 6 366 6
+19d24 4 367 6
+19d28 a 368 6
+19d32 c 368 6
+19d3e 6 156 137
+19d44 8 373 6
+19d4c 6 373 6
+19d52 4 373 6
+19d56 2 373 6
+19d58 8 373 6
+19d60 8 373 6
+19d68 a 373 6
+19d72 18 373 6
+19d8a 6 373 6
+19d90 8 373 6
+19d98 6 85 79
+19d9e 6 373 6
+19da4 6 373 6
+19daa 22 374 6
+FUNC 19dcc 270 0 ExceptionHandlerTest_RedeliveryOnBadSignalHandlerFlag_Test::TestBody
+19dcc 8 380 6
+19dd4 4 380 6
+19dd8 4 381 6
+19ddc 2 380 6
+19dde 2 381 6
+19de0 2 380 6
+19de2 4 381 6
+19de6 6 382 6
+19dec 8 383 6
+19df4 6 385 6
+19dfa 4 277 82
+19dfe 2 1139 87
+19e00 2 385 6
+19e02 16 385 6
+19e18 8 385 6
+19e20 2 385 6
+19e22 e 385 6
+19e30 6 385 6
+19e36 8 385 6
+19e3e 6 85 79
+19e44 6 385 6
+19e4a 6 156 137
+19e50 c 256 82
+19e5c 4 391 6
+19e60 6 256 82
+19e66 8 391 6
+19e6e 1c 391 6
+19e8a 6 391 6
+19e90 8 113 100
+19e98 2 1615 82
+19e9a 2 113 100
+19e9c 6 397 6
+19ea2 2 1615 82
+19ea4 8 1615 82
+19eac 1a 1615 82
+19ec6 6 397 6
+19ecc 6 302 82
+19ed2 12 397 6
+19ee4 6 256 82
+19eea 8 113 100
+19ef2 4 399 6
+19ef6 2 1615 82
+19ef8 4 399 6
+19efc 2 1615 82
+19efe 8 1615 82
+19f06 1a 1615 82
+19f20 6 399 6
+19f26 6 302 82
+19f2c 10 399 6
+19f3c 2 399 6
+19f3e 4 399 6
+19f42 6 399 6
+19f48 8 399 6
+19f50 6 85 79
+19f56 6 399 6
+19f5c 14 256 82
+19f70 4 207 6
+19f74 2 403 6
+19f76 6 207 6
+19f7c 4 403 6
+19f80 6 406 6
+19f86 6 406 6
+19f8c 4 406 6
+19f90 2 406 6
+19f92 8 406 6
+19f9a 8 406 6
+19fa2 a 406 6
+19fac 18 406 6
+19fc4 6 406 6
+19fca 8 406 6
+19fd2 6 85 79
+19fd8 c 406 6
+19fe4 58 407 6
+FUNC 1a03c f8 0 ExceptionHandlerTest_StackedHandlersDeliveredToTop_Test::TestBody
+1a03c 8 409 6
+1a044 4 409 6
+1a048 4 410 6
+1a04c 2 409 6
+1a04e 2 410 6
+1a050 2 409 6
+1a052 4 410 6
+1a056 6 412 6
+1a05c 4 413 6
+1a060 a 419 6
+1a06a 1a 419 6
+1a084 6 419 6
+1a08a 8 420 6
+1a092 c 420 6
+1a09e 6 156 137
+1a0a4 6 420 6
+1a0aa 8 422 6
+1a0b2 6 422 6
+1a0b8 4 422 6
+1a0bc 2 422 6
+1a0be 8 422 6
+1a0c6 8 422 6
+1a0ce a 422 6
+1a0d8 18 422 6
+1a0f0 6 422 6
+1a0f6 8 422 6
+1a0fe 6 85 79
+1a104 6 422 6
+1a10a 6 422 6
+1a110 24 423 6
+FUNC 1a134 f8 0 ExceptionHandlerTest_StackedHandlersNotDeliveredToBottom_Test::TestBody
+1a134 8 425 6
+1a13c 4 425 6
+1a140 4 426 6
+1a144 2 425 6
+1a146 2 426 6
+1a148 2 425 6
+1a14a 4 426 6
+1a14e 6 428 6
+1a154 4 429 6
+1a158 a 435 6
+1a162 1c 435 6
+1a17e 6 435 6
+1a184 8 436 6
+1a18c a 436 6
+1a196 6 156 137
+1a19c 6 436 6
+1a1a2 8 438 6
+1a1aa 6 438 6
+1a1b0 4 438 6
+1a1b4 2 438 6
+1a1b6 8 438 6
+1a1be 8 438 6
+1a1c6 a 438 6
+1a1d0 18 438 6
+1a1e8 6 438 6
+1a1ee 8 438 6
+1a1f6 6 85 79
+1a1fc 6 438 6
+1a202 6 438 6
+1a208 24 439 6
+FUNC 1a22c fc 0 ExceptionHandlerTest_StackedHandlersFilteredToBottom_Test::TestBody
+1a22c 8 441 6
+1a234 4 441 6
+1a238 4 442 6
+1a23c 2 441 6
+1a23e 2 442 6
+1a240 2 441 6
+1a242 4 442 6
+1a246 6 444 6
+1a24c 4 445 6
+1a250 a 451 6
+1a25a 1c 451 6
+1a276 6 451 6
+1a27c 8 452 6
+1a284 c 452 6
+1a290 6 156 137
+1a296 6 452 6
+1a29c 8 454 6
+1a2a4 6 454 6
+1a2aa 4 454 6
+1a2ae 2 454 6
+1a2b0 8 454 6
+1a2b8 8 454 6
+1a2c0 a 454 6
+1a2ca 18 454 6
+1a2e2 6 454 6
+1a2e8 8 454 6
+1a2f0 6 85 79
+1a2f6 6 454 6
+1a2fc 6 454 6
+1a302 26 455 6
+FUNC 1a328 fc 0 ExceptionHandlerTest_StackedHandlersUnhandledToBottom_Test::TestBody
+1a328 8 457 6
+1a330 4 457 6
+1a334 4 458 6
+1a338 2 457 6
+1a33a 2 458 6
+1a33c 2 457 6
+1a33e 4 458 6
+1a342 6 460 6
+1a348 4 461 6
+1a34c a 467 6
+1a356 1c 467 6
+1a372 6 467 6
+1a378 8 468 6
+1a380 c 468 6
+1a38c 6 156 137
+1a392 6 468 6
+1a398 8 470 6
+1a3a0 6 470 6
+1a3a6 4 470 6
+1a3aa 2 470 6
+1a3ac 8 470 6
+1a3b4 8 470 6
+1a3bc a 470 6
+1a3c6 18 470 6
+1a3de 6 470 6
+1a3e4 8 470 6
+1a3ec 6 85 79
+1a3f2 6 470 6
+1a3f8 6 470 6
+1a3fe 26 471 6
+FUNC 1a424 748 0 ExceptionHandlerTest_ExternalDumper_Test::TestBody
+1a424 c 926 6
+1a430 6 926 6
+1a436 4 928 6
+1a43a 4 926 6
+1a43e 10 928 6
+1a44e 8 928 6
+1a456 4 928 6
+1a45a 4 928 6
+1a45e 4 928 6
+1a462 e 928 6
+1a470 a 928 6
+1a47a 6 302 82
+1a480 14 928 6
+1a494 6 928 6
+1a49a 8 928 6
+1a4a2 6 85 79
+1a4a8 4 928 6
+1a4ac 4 930 6
+1a4b0 2 256 82
+1a4b2 4 930 6
+1a4b6 4 256 82
+1a4ba 14 930 6
+1a4ce 12 931 6
+1a4e0 4 933 6
+1a4e4 4 934 6
+1a4e8 4 937 6
+1a4ec 8 935 6
+1a4f4 a 937 6
+1a4fe 4 937 6
+1a502 6 937 6
+1a508 8 937 6
+1a510 20 937 6
+1a530 6 156 137
+1a536 4 144 5
+1a53a 2 939 6
+1a53c 4 144 5
+1a540 c 207 6
+1a54c 4 939 6
+1a550 4 942 6
+1a554 8 941 6
+1a55c a 942 6
+1a566 4 948 6
+1a56a 6 949 6
+1a570 6 951 6
+1a576 6 952 6
+1a57c 2 953 6
+1a57e 4 950 6
+1a582 4 953 6
+1a586 12 955 6
+1a598 4 955 6
+1a59c 6 955 6
+1a5a2 4 956 6
+1a5a6 2 955 6
+1a5a8 4 956 6
+1a5ac 8 1512 82
+1a5b4 2 955 6
+1a5b6 e 1512 82
+1a5c4 a 956 6
+1a5ce 6 302 82
+1a5d4 10 956 6
+1a5e4 4 959 6
+1a5e8 6 959 6
+1a5ee 8 959 6
+1a5f6 6 85 79
+1a5fc 6 959 6
+1a602 a 256 82
+1a60c 4 961 6
+1a610 2 962 6
+1a612 4 961 6
+1a616 2 962 6
+1a618 4 963 6
+1a61c 2 962 6
+1a61e 2 963 6
+1a620 4 1512 82
+1a624 4 963 6
+1a628 6 1512 82
+1a62e 6 963 6
+1a634 4 969 6
+1a638 4 1512 82
+1a63c 6 963 6
+1a642 8 965 6
+1a64a 8 967 6
+1a652 2 968 6
+1a654 2 970 6
+1a656 2 968 6
+1a658 4 969 6
+1a65c 2 970 6
+1a65e 4 1512 82
+1a662 2 970 6
+1a664 c 1512 82
+1a670 a 970 6
+1a67a 6 302 82
+1a680 14 970 6
+1a694 6 970 6
+1a69a 8 970 6
+1a6a2 6 85 79
+1a6a8 6 970 6
+1a6ae e 256 82
+1a6bc 1c 1512 82
+1a6d8 4 957 6
+1a6dc 6 302 82
+1a6e2 12 957 6
+1a6f4 4 958 6
+1a6f8 6 256 82
+1a6fe 6 1552 82
+1a704 4 958 6
+1a708 e 1552 82
+1a716 6 958 6
+1a71c 6 302 82
+1a722 10 958 6
+1a732 6 256 82
+1a738 c 959 6
+1a744 4 1552 82
+1a748 2 959 6
+1a74a e 1552 82
+1a758 8 959 6
+1a760 6 302 82
+1a766 10 959 6
+1a776 6 256 82
+1a77c 8 971 6
+1a784 2 972 6
+1a786 6 975 6
+1a78c 2 89 99
+1a78e 2 90 99
+1a790 8 89 99
+1a798 8 90 99
+1a7a0 8 91 99
+1a7a8 2e 979 6
+1a7d6 6 302 82
+1a7dc 10 979 6
+1a7ec 6 256 82
+1a7f2 1a 980 6
+1a80c 6 302 82
+1a812 12 980 6
+1a824 6 980 6
+1a82a 8 980 6
+1a832 6 85 79
+1a838 6 980 6
+1a83e 4 256 82
+1a842 4 982 6
+1a846 6 256 82
+1a84c 6 982 6
+1a852 10 983 6
+1a862 12 984 6
+1a874 2 1139 87
+1a876 4 277 82
+1a87a 2 984 6
+1a87c 18 984 6
+1a894 14 984 6
+1a8a8 6 984 6
+1a8ae 8 984 6
+1a8b6 6 85 79
+1a8bc 6 984 6
+1a8c2 6 156 137
+1a8c8 a 256 82
+1a8d2 2 987 6
+1a8d4 6 987 6
+1a8da 2 987 6
+1a8dc 12 987 6
+1a8ee 4 987 6
+1a8f2 6 987 6
+1a8f8 4 1512 82
+1a8fc 4 987 6
+1a900 e 1512 82
+1a90e 8 987 6
+1a916 6 302 82
+1a91c e 987 6
+1a92a 4 994 6
+1a92e 6 994 6
+1a934 8 994 6
+1a93c 6 85 79
+1a942 6 994 6
+1a948 e 256 82
+1a956 8 990 6
+1a95e 16 990 6
+1a974 6 990 6
+1a97a 8 990 6
+1a982 6 85 79
+1a988 6 990 6
+1a98e e 156 137
+1a99c 6 256 82
+1a9a2 c 988 6
+1a9ae 4 1552 82
+1a9b2 2 988 6
+1a9b4 e 1552 82
+1a9c2 6 988 6
+1a9c8 6 302 82
+1a9ce 10 988 6
+1a9de 6 990 6
+1a9e4 4 990 6
+1a9e8 2 990 6
+1a9ea 8 990 6
+1a9f2 c 990 6
+1a9fe 4 990 6
+1aa02 6 993 6
+1aa08 4 993 6
+1aa0c 4 993 6
+1aa10 6 1552 82
+1aa16 2 993 6
+1aa18 2 1552 82
+1aa1a 2 993 6
+1aa1c e 1552 82
+1aa2a 6 993 6
+1aa30 6 302 82
+1aa36 16 993 6
+1aa4c 6 256 82
+1aa52 18 994 6
+1aa6a 6 302 82
+1aa70 10 994 6
+1aa80 6 256 82
+1aa86 8 995 6
+1aa8e 4 156 137
+1aa92 da 996 6
+FUNC 1ab6c 884 0 ExceptionHandlerTest_InstructionPointerMemory_Test::TestBody
+1ab6c c 487 6
+1ab78 6 487 6
+1ab7e 2 490 6
+1ab80 2 487 6
+1ab82 a 488 6
+1ab8c a 490 6
+1ab96 8 490 6
+1ab9e 4 490 6
+1aba2 4 490 6
+1aba6 6 490 6
+1abac e 490 6
+1abba a 490 6
+1abc4 6 302 82
+1abca 14 490 6
+1abde 6 490 6
+1abe4 8 490 6
+1abec 6 85 79
+1abf2 6 490 6
+1abf8 8 256 82
+1ac00 4 494 6
+1ac04 6 256 82
+1ac0a 4 494 6
+1ac0e 4 497 6
+1ac12 6 498 6
+1ac18 4 502 6
+1ac1c 6 499 6
+1ac22 8 502 6
+1ac2a 20 502 6
+1ac4a 6 502 6
+1ac50 12 510 6
+1ac62 4 511 6
+1ac66 4 512 6
+1ac6a c 517 6
+1ac76 4 68 6
+1ac7a 4 517 6
+1ac7e 8 68 6
+1ac86 2 524 6
+1ac88 6 524 6
+1ac8e 6 526 6
+1ac94 a 528 6
+1ac9e 6 528 6
+1aca4 4 528 6
+1aca8 2 528 6
+1acaa 8 528 6
+1acb2 8 528 6
+1acba 2 530 6
+1acbc 4 528 6
+1acc0 8 530 6
+1acc8 c 531 6
+1acd4 1a 528 6
+1acee 6 528 6
+1acf4 8 528 6
+1acfc 6 85 79
+1ad02 6 528 6
+1ad08 2 528 6
+1ad0a 6 531 6
+1ad10 4 531 6
+1ad14 2 531 6
+1ad16 8 531 6
+1ad1e c 531 6
+1ad2a 4 531 6
+1ad2e 6 534 6
+1ad34 2 534 6
+1ad36 4 534 6
+1ad3a 8 1552 82
+1ad42 2 534 6
+1ad44 2 1552 82
+1ad46 2 534 6
+1ad48 e 1552 82
+1ad56 8 534 6
+1ad5e 6 302 82
+1ad64 16 534 6
+1ad7a 1a 531 6
+1ad94 6 531 6
+1ad9a 8 531 6
+1ada2 6 85 79
+1ada8 6 531 6
+1adae 2 531 6
+1adb0 6 256 82
+1adb6 1a 535 6
+1add0 6 302 82
+1add6 14 535 6
+1adea 6 535 6
+1adf0 8 535 6
+1adf8 6 85 79
+1adfe 6 535 6
+1ae04 8 256 82
+1ae0c 4 541 6
+1ae10 6 256 82
+1ae16 8 541 6
+1ae1e 6 542 6
+1ae24 4 1139 87
+1ae28 4 277 82
+1ae2c 2 542 6
+1ae2e 1e 542 6
+1ae4c 14 542 6
+1ae60 6 256 82
+1ae66 8 544 6
+1ae6e 6 545 6
+1ae74 8 277 82
+1ae7c 2 545 6
+1ae7e 4 277 82
+1ae82 4 1139 87
+1ae86 2 546 6
+1ae88 1e 546 6
+1aea6 14 546 6
+1aeba 6 256 82
+1aec0 8 277 82
+1aec8 4 1139 87
+1aecc 4 277 82
+1aed0 2 547 6
+1aed2 1e 547 6
+1aef0 16 547 6
+1af06 6 547 6
+1af0c 8 547 6
+1af14 6 85 79
+1af1a 6 547 6
+1af20 4 156 137
+1af24 6 256 82
+1af2a 2 548 6
+1af2c 6 545 65
+1af32 4 545 65
+1af36 a 548 6
+1af40 2 548 6
+1af42 e 548 6
+1af50 6 548 6
+1af56 6 302 82
+1af5c 14 548 6
+1af70 6 548 6
+1af76 8 548 6
+1af7e 6 85 79
+1af84 8 548 6
+1af8c 6 256 82
+1af92 6 550 6
+1af98 6 277 82
+1af9e 4 1139 87
+1afa2 4 277 82
+1afa6 8 1139 87
+1afae 2 551 6
+1afb0 16 551 6
+1afc6 14 551 6
+1afda 6 551 6
+1afe0 8 551 6
+1afe8 6 85 79
+1afee 4 551 6
+1aff2 6 256 82
+1aff8 8 554 6
+1b000 4 1139 87
+1b004 2 277 82
+1b006 2 554 6
+1b008 16 554 6
+1b01e 14 554 6
+1b032 6 256 82
+1b038 e 557 6
+1b046 a 277 82
+1b050 4 1139 87
+1b054 2 558 6
+1b056 16 558 6
+1b06c 14 558 6
+1b080 6 256 82
+1b086 8 560 6
+1b08e 4 1512 82
+1b092 2 560 6
+1b094 e 1512 82
+1b0a2 4 560 6
+1b0a6 6 302 82
+1b0ac 16 560 6
+1b0c2 6 560 6
+1b0c8 8 560 6
+1b0d0 6 85 79
+1b0d6 6 560 6
+1b0dc 6 256 82
+1b0e2 6 561 6
+1b0e8 6 277 82
+1b0ee 2 1139 87
+1b0f0 4 277 82
+1b0f4 2 1139 87
+1b0f6 2 562 6
+1b0f8 16 562 6
+1b10e 16 562 6
+1b124 6 562 6
+1b12a 8 562 6
+1b132 6 85 79
+1b138 6 562 6
+1b13e 6 156 137
+1b144 14 256 82
+1b158 4 567 6
+1b15c a 566 6
+1b166 a 567 6
+1b170 10 568 6
+1b180 2 277 82
+1b182 2 1139 87
+1b184 2 568 6
+1b186 1a 568 6
+1b1a0 18 568 6
+1b1b8 6 568 6
+1b1be 8 568 6
+1b1c6 6 85 79
+1b1cc 6 568 6
+1b1d2 6 156 137
+1b1d8 6 256 82
+1b1de 12 569 6
+1b1f0 2 1139 87
+1b1f2 2 569 6
+1b1f4 2 277 82
+1b1f6 2 1139 87
+1b1f8 2 569 6
+1b1fa 1a 569 6
+1b214 18 569 6
+1b22c 6 569 6
+1b232 8 570 6
+1b23a 6 85 79
+1b240 6 569 6
+1b246 6 156 137
+1b24c 6 256 82
+1b252 10 571 6
+1b262 2 1139 87
+1b264 2 571 6
+1b266 2 277 82
+1b268 2 1139 87
+1b26a 2 571 6
+1b26c 1a 571 6
+1b286 18 571 6
+1b29e 6 571 6
+1b2a4 8 572 6
+1b2ac 6 85 79
+1b2b2 6 571 6
+1b2b8 6 156 137
+1b2be 6 256 82
+1b2c4 8 574 6
+1b2cc 6 574 6
+1b2d2 10 156 137
+1b2e2 10e 575 6
+FUNC 1b3f0 7f8 0 ExceptionHandlerTest_InstructionPointerMemoryMinBound_Test::TestBody
+1b3f0 a 579 6
+1b3fa 4 579 6
+1b3fe 4 580 6
+1b402 2 579 6
+1b404 2 580 6
+1b406 4 582 6
+1b40a 2 579 6
+1b40c 4 580 6
+1b410 a 582 6
+1b41a 8 582 6
+1b422 4 582 6
+1b426 4 582 6
+1b42a 4 582 6
+1b42e e 582 6
+1b43c a 582 6
+1b446 6 302 82
+1b44c 14 582 6
+1b460 6 582 6
+1b466 8 582 6
+1b46e 6 85 79
+1b474 6 582 6
+1b47a e 256 82
+1b488 4 589 6
+1b48c 4 590 6
+1b490 4 594 6
+1b494 8 591 6
+1b49c 8 594 6
+1b4a4 20 594 6
+1b4c4 6 594 6
+1b4ca 12 602 6
+1b4dc 4 603 6
+1b4e0 4 604 6
+1b4e4 4 609 6
+1b4e8 4 68 6
+1b4ec 4 609 6
+1b4f0 2 68 6
+1b4f2 2 609 6
+1b4f4 6 68 6
+1b4fa 2 616 6
+1b4fc 6 616 6
+1b502 8 618 6
+1b50a 8 620 6
+1b512 6 620 6
+1b518 4 620 6
+1b51c 2 620 6
+1b51e 8 620 6
+1b526 6 620 6
+1b52c 2 622 6
+1b52e 4 620 6
+1b532 8 622 6
+1b53a c 623 6
+1b546 1a 620 6
+1b560 6 620 6
+1b566 8 620 6
+1b56e 6 85 79
+1b574 6 620 6
+1b57a 2 620 6
+1b57c 6 623 6
+1b582 4 623 6
+1b586 2 623 6
+1b588 a 623 6
+1b592 e 623 6
+1b5a0 4 623 6
+1b5a4 4 626 6
+1b5a8 4 626 6
+1b5ac 4 626 6
+1b5b0 8 1552 82
+1b5b8 2 626 6
+1b5ba 2 1552 82
+1b5bc 2 626 6
+1b5be e 1552 82
+1b5cc 8 626 6
+1b5d4 6 302 82
+1b5da 16 626 6
+1b5f0 1a 623 6
+1b60a 6 623 6
+1b610 8 623 6
+1b618 6 85 79
+1b61e 6 623 6
+1b624 2 623 6
+1b626 6 256 82
+1b62c 1a 627 6
+1b646 6 302 82
+1b64c 14 627 6
+1b660 6 627 6
+1b666 8 627 6
+1b66e 6 85 79
+1b674 6 627 6
+1b67a 8 256 82
+1b682 4 633 6
+1b686 6 256 82
+1b68c 8 633 6
+1b694 6 634 6
+1b69a 4 1139 87
+1b69e 2 277 82
+1b6a0 2 634 6
+1b6a2 1e 634 6
+1b6c0 14 634 6
+1b6d4 6 256 82
+1b6da 8 636 6
+1b6e2 6 637 6
+1b6e8 6 277 82
+1b6ee 2 637 6
+1b6f0 2 277 82
+1b6f2 4 1139 87
+1b6f6 2 638 6
+1b6f8 1e 638 6
+1b716 14 638 6
+1b72a 6 256 82
+1b730 8 277 82
+1b738 4 1139 87
+1b73c 2 277 82
+1b73e 2 639 6
+1b740 1e 639 6
+1b75e 14 639 6
+1b772 6 639 6
+1b778 8 639 6
+1b780 6 85 79
+1b786 6 639 6
+1b78c 6 156 137
+1b792 a 256 82
+1b79c 4 640 6
+1b7a0 6 545 65
+1b7a6 4 545 65
+1b7aa 6 640 6
+1b7b0 2 640 6
+1b7b2 e 640 6
+1b7c0 8 640 6
+1b7c8 6 302 82
+1b7ce 12 640 6
+1b7e0 6 640 6
+1b7e6 8 640 6
+1b7ee 6 85 79
+1b7f4 8 640 6
+1b7fc 6 256 82
+1b802 6 642 6
+1b808 6 277 82
+1b80e 2 1139 87
+1b810 4 277 82
+1b814 6 1139 87
+1b81a 2 643 6
+1b81c 16 643 6
+1b832 14 643 6
+1b846 6 643 6
+1b84c 8 643 6
+1b854 6 85 79
+1b85a 4 643 6
+1b85e 6 256 82
+1b864 8 646 6
+1b86c 2 1139 87
+1b86e 2 277 82
+1b870 4 1139 87
+1b874 2 646 6
+1b876 16 646 6
+1b88c 12 646 6
+1b89e 6 256 82
+1b8a4 e 649 6
+1b8b2 6 277 82
+1b8b8 2 1139 87
+1b8ba 4 277 82
+1b8be 2 1139 87
+1b8c0 2 650 6
+1b8c2 16 650 6
+1b8d8 14 650 6
+1b8ec 6 650 6
+1b8f2 8 650 6
+1b8fa 6 85 79
+1b900 6 650 6
+1b906 4 156 137
+1b90a 6 256 82
+1b910 c 652 6
+1b91c 4 1512 82
+1b920 2 652 6
+1b922 e 1512 82
+1b930 4 652 6
+1b934 6 302 82
+1b93a 12 652 6
+1b94c 6 652 6
+1b952 8 652 6
+1b95a 6 85 79
+1b960 6 652 6
+1b966 6 256 82
+1b96c 6 653 6
+1b972 6 277 82
+1b978 4 1139 87
+1b97c 4 277 82
+1b980 8 1139 87
+1b988 2 654 6
+1b98a 16 654 6
+1b9a0 14 654 6
+1b9b4 6 654 6
+1b9ba 8 654 6
+1b9c2 6 85 79
+1b9c8 6 654 6
+1b9ce 6 156 137
+1b9d4 14 256 82
+1b9e8 a 657 6
+1b9f2 12 658 6
+1ba04 2 277 82
+1ba06 4 1139 87
+1ba0a 2 658 6
+1ba0c 1a 658 6
+1ba26 16 658 6
+1ba3c 6 658 6
+1ba42 8 659 6
+1ba4a 6 85 79
+1ba50 6 658 6
+1ba56 6 156 137
+1ba5c 6 256 82
+1ba62 e 660 6
+1ba70 2 1139 87
+1ba72 2 660 6
+1ba74 2 277 82
+1ba76 2 1139 87
+1ba78 2 660 6
+1ba7a 18 660 6
+1ba92 14 660 6
+1baa6 6 660 6
+1baac 8 661 6
+1bab4 6 85 79
+1baba 6 660 6
+1bac0 6 156 137
+1bac6 6 256 82
+1bacc 8 662 6
+1bad4 6 662 6
+1bada 10 156 137
+1baea fe 663 6
+FUNC 1bbe8 7f8 0 ExceptionHandlerTest_InstructionPointerMemoryMaxBound_Test::TestBody
+1bbe8 a 667 6
+1bbf2 4 667 6
+1bbf6 4 668 6
+1bbfa 2 667 6
+1bbfc 2 668 6
+1bbfe 4 670 6
+1bc02 2 667 6
+1bc04 4 668 6
+1bc08 a 670 6
+1bc12 8 670 6
+1bc1a 4 670 6
+1bc1e 4 670 6
+1bc22 4 670 6
+1bc26 e 670 6
+1bc34 a 670 6
+1bc3e 6 302 82
+1bc44 14 670 6
+1bc58 6 670 6
+1bc5e 8 670 6
+1bc66 6 85 79
+1bc6c 6 670 6
+1bc72 e 256 82
+1bc80 4 680 6
+1bc84 4 681 6
+1bc88 4 685 6
+1bc8c 8 682 6
+1bc94 8 685 6
+1bc9c 20 685 6
+1bcbc 6 685 6
+1bcc2 12 693 6
+1bcd4 4 694 6
+1bcd8 4 695 6
+1bcdc c 700 6
+1bce8 4 68 6
+1bcec 4 700 6
+1bcf0 8 68 6
+1bcf8 2 707 6
+1bcfa 6 707 6
+1bd00 8 709 6
+1bd08 8 711 6
+1bd10 6 711 6
+1bd16 4 711 6
+1bd1a 2 711 6
+1bd1c 8 711 6
+1bd24 6 711 6
+1bd2a 2 713 6
+1bd2c 4 711 6
+1bd30 8 713 6
+1bd38 c 714 6
+1bd44 1a 711 6
+1bd5e 6 711 6
+1bd64 8 711 6
+1bd6c 6 85 79
+1bd72 6 711 6
+1bd78 2 711 6
+1bd7a 6 714 6
+1bd80 4 714 6
+1bd84 2 714 6
+1bd86 a 714 6
+1bd90 e 714 6
+1bd9e 4 714 6
+1bda2 4 717 6
+1bda6 4 717 6
+1bdaa 4 717 6
+1bdae 8 1552 82
+1bdb6 2 717 6
+1bdb8 2 1552 82
+1bdba 2 717 6
+1bdbc e 1552 82
+1bdca 8 717 6
+1bdd2 6 302 82
+1bdd8 16 717 6
+1bdee 1a 714 6
+1be08 6 714 6
+1be0e 8 714 6
+1be16 6 85 79
+1be1c 6 714 6
+1be22 2 714 6
+1be24 6 256 82
+1be2a 1a 718 6
+1be44 6 302 82
+1be4a 14 718 6
+1be5e 6 718 6
+1be64 8 718 6
+1be6c 6 85 79
+1be72 6 718 6
+1be78 8 256 82
+1be80 4 723 6
+1be84 6 256 82
+1be8a 8 723 6
+1be92 6 724 6
+1be98 4 1139 87
+1be9c 2 277 82
+1be9e 2 724 6
+1bea0 1e 724 6
+1bebe 14 724 6
+1bed2 6 256 82
+1bed8 8 726 6
+1bee0 6 727 6
+1bee6 6 277 82
+1beec 2 727 6
+1beee 2 277 82
+1bef0 4 1139 87
+1bef4 2 728 6
+1bef6 1e 728 6
+1bf14 14 728 6
+1bf28 6 256 82
+1bf2e 8 277 82
+1bf36 4 1139 87
+1bf3a 2 277 82
+1bf3c 2 729 6
+1bf3e 1e 729 6
+1bf5c 14 729 6
+1bf70 6 729 6
+1bf76 8 729 6
+1bf7e 6 85 79
+1bf84 6 729 6
+1bf8a 6 156 137
+1bf90 a 256 82
+1bf9a 4 730 6
+1bf9e 6 545 65
+1bfa4 4 545 65
+1bfa8 6 730 6
+1bfae 2 730 6
+1bfb0 e 730 6
+1bfbe 8 730 6
+1bfc6 6 302 82
+1bfcc 12 730 6
+1bfde 6 730 6
+1bfe4 8 730 6
+1bfec 6 85 79
+1bff2 8 730 6
+1bffa 6 256 82
+1c000 6 732 6
+1c006 6 277 82
+1c00c 2 1139 87
+1c00e 4 277 82
+1c012 6 1139 87
+1c018 2 733 6
+1c01a 16 733 6
+1c030 14 733 6
+1c044 6 733 6
+1c04a 8 733 6
+1c052 6 85 79
+1c058 4 733 6
+1c05c 6 256 82
+1c062 8 736 6
+1c06a 2 1139 87
+1c06c 2 277 82
+1c06e 4 1139 87
+1c072 2 736 6
+1c074 16 736 6
+1c08a 12 736 6
+1c09c 6 256 82
+1c0a2 e 739 6
+1c0b0 6 277 82
+1c0b6 2 1139 87
+1c0b8 4 277 82
+1c0bc 2 1139 87
+1c0be 2 740 6
+1c0c0 16 740 6
+1c0d6 14 740 6
+1c0ea 6 740 6
+1c0f0 8 740 6
+1c0f8 6 85 79
+1c0fe 6 740 6
+1c104 4 156 137
+1c108 6 256 82
+1c10e c 743 6
+1c11a 4 1512 82
+1c11e 2 743 6
+1c120 e 1512 82
+1c12e 4 743 6
+1c132 6 302 82
+1c138 12 743 6
+1c14a 6 743 6
+1c150 8 743 6
+1c158 6 85 79
+1c15e 6 743 6
+1c164 6 256 82
+1c16a 6 744 6
+1c170 6 277 82
+1c176 4 1139 87
+1c17a 4 277 82
+1c17e 6 1139 87
+1c184 2 745 6
+1c186 16 745 6
+1c19c 14 745 6
+1c1b0 6 745 6
+1c1b6 8 745 6
+1c1be 6 85 79
+1c1c4 6 745 6
+1c1ca 6 156 137
+1c1d0 14 256 82
+1c1e4 a 748 6
+1c1ee 10 749 6
+1c1fe 2 277 82
+1c200 4 1139 87
+1c204 2 749 6
+1c206 18 749 6
+1c21e 14 749 6
+1c232 6 749 6
+1c238 8 749 6
+1c240 6 85 79
+1c246 6 749 6
+1c24c 6 156 137
+1c252 6 256 82
+1c258 12 750 6
+1c26a 2 1139 87
+1c26c 2 750 6
+1c26e 2 277 82
+1c270 2 1139 87
+1c272 2 750 6
+1c274 18 750 6
+1c28c 14 750 6
+1c2a0 6 750 6
+1c2a6 8 751 6
+1c2ae 6 85 79
+1c2b4 6 750 6
+1c2ba 6 156 137
+1c2c0 6 256 82
+1c2c6 8 753 6
+1c2ce 6 753 6
+1c2d4 10 156 137
+1c2e4 fc 754 6
+FUNC 1c3e0 458 0 ExceptionHandlerTest_InstructionPointerMemoryNullPointer_Test::TestBody
+1c3e0 a 760 6
+1c3ea 6 760 6
+1c3f0 4 761 6
+1c3f4 4 760 6
+1c3f8 2 761 6
+1c3fa 2 763 6
+1c3fc 2 760 6
+1c3fe 4 761 6
+1c402 a 763 6
+1c40c 4 763 6
+1c410 4 763 6
+1c414 2 763 6
+1c416 6 763 6
+1c41c e 763 6
+1c42a c 763 6
+1c436 6 302 82
+1c43c 12 763 6
+1c44e 6 763 6
+1c454 8 763 6
+1c45c 6 85 79
+1c462 6 763 6
+1c468 e 256 82
+1c476 4 765 6
+1c47a 4 766 6
+1c47e 4 770 6
+1c482 6 767 6
+1c488 8 770 6
+1c490 1e 770 6
+1c4ae 6 770 6
+1c4b4 2 774 6
+1c4b6 6 774 6
+1c4bc 6 776 6
+1c4c2 6 778 6
+1c4c8 6 778 6
+1c4ce 4 778 6
+1c4d2 2 778 6
+1c4d4 8 778 6
+1c4dc 6 778 6
+1c4e2 4 780 6
+1c4e6 4 778 6
+1c4ea 8 780 6
+1c4f2 c 781 6
+1c4fe 16 778 6
+1c514 6 778 6
+1c51a 8 778 6
+1c522 6 85 79
+1c528 6 778 6
+1c52e 2 778 6
+1c530 6 781 6
+1c536 4 781 6
+1c53a 2 781 6
+1c53c 8 781 6
+1c544 c 781 6
+1c550 4 781 6
+1c554 4 784 6
+1c558 4 784 6
+1c55c 4 784 6
+1c560 8 1552 82
+1c568 2 784 6
+1c56a e 1552 82
+1c578 6 784 6
+1c57e 6 302 82
+1c584 14 784 6
+1c598 16 781 6
+1c5ae 6 781 6
+1c5b4 8 781 6
+1c5bc 6 85 79
+1c5c2 6 781 6
+1c5c8 2 781 6
+1c5ca 6 256 82
+1c5d0 18 785 6
+1c5e8 6 302 82
+1c5ee 12 785 6
+1c600 6 785 6
+1c606 8 785 6
+1c60e 6 85 79
+1c614 6 785 6
+1c61a 8 256 82
+1c622 4 791 6
+1c626 6 256 82
+1c62c 8 791 6
+1c634 6 792 6
+1c63a 4 1139 87
+1c63e 2 277 82
+1c640 2 792 6
+1c642 1a 792 6
+1c65c 12 792 6
+1c66e 6 256 82
+1c674 8 794 6
+1c67c 6 795 6
+1c682 2 277 82
+1c684 2 795 6
+1c686 6 277 82
+1c68c 4 1139 87
+1c690 2 277 82
+1c692 2 796 6
+1c694 1a 796 6
+1c6ae 12 796 6
+1c6c0 6 256 82
+1c6c6 8 277 82
+1c6ce 4 1139 87
+1c6d2 2 277 82
+1c6d4 2 797 6
+1c6d6 1a 797 6
+1c6f0 14 797 6
+1c704 6 797 6
+1c70a 8 797 6
+1c712 6 85 79
+1c718 6 797 6
+1c71e 6 156 137
+1c724 a 256 82
+1c72e 4 798 6
+1c732 6 545 65
+1c738 4 545 65
+1c73c 6 1512 82
+1c742 2 798 6
+1c744 e 1512 82
+1c752 4 798 6
+1c756 6 302 82
+1c75c 12 798 6
+1c76e 6 798 6
+1c774 8 798 6
+1c77c 6 85 79
+1c782 6 798 6
+1c788 e 256 82
+1c796 c 800 6
+1c7a2 c 156 137
+1c7ae 8a 801 6
+FUNC 1c838 690 0 ExceptionHandlerTest_ModuleInfo_Test::TestBody
+1c838 c 806 6
+1c844 6 806 6
+1c84a 2 809 6
+1c84c 2 806 6
+1c84e 2 814 6
+1c850 4 809 6
+1c854 6 814 6
+1c85a 4 809 6
+1c85e 2 814 6
+1c860 4 809 6
+1c864 16 814 6
+1c87a 8 818 6
+1c882 4 819 6
+1c886 4 818 6
+1c88a e 819 6
+1c898 4 440 135
+1c89c 6 162 104
+1c8a2 4 164 104
+1c8a6 6 165 104
+1c8ac 6 168 104
+1c8b2 4 166 104
+1c8b6 6 171 104
+1c8bc 4 169 104
+1c8c0 6 174 104
+1c8c6 6 172 104
+1c8cc 4 164 104
+1c8d0 4 178 104
+1c8d4 2 164 104
+1c8d6 c 178 104
+1c8e2 6 180 104
+1c8e8 2 181 104
+1c8ea 6 183 104
+1c8f0 2 184 104
+1c8f2 c 186 104
+1c8fe 4 190 104
+1c902 2 183 104
+1c904 4 447 135
+1c908 4 447 135
+1c90c 4 822 6
+1c910 4 400 136
+1c914 4 789 136
+1c918 a 604 135
+1c922 8 791 136
+1c92a c 791 136
+1c936 6 836 6
+1c93c e 530 136
+1c94a 14 836 6
+1c95e 8 837 6
+1c966 6 277 82
+1c96c 2 1139 87
+1c96e 8 277 82
+1c976 2 838 6
+1c978 1c 838 6
+1c994 a 838 6
+1c99e 2 838 6
+1c9a0 e 838 6
+1c9ae 6 838 6
+1c9b4 8 838 6
+1c9bc 6 85 79
+1c9c2 6 838 6
+1c9c8 6 156 137
+1c9ce 8 256 82
+1c9d6 2 840 6
+1c9d8 6 256 82
+1c9de 6 840 6
+1c9e4 a 842 6
+1c9ee 18 842 6
+1ca06 6 842 6
+1ca0c e 849 6
+1ca1a 16 849 6
+1ca30 6 156 137
+1ca36 6 850 6
+1ca3c 2 1139 87
+1ca3e 2 277 82
+1ca40 2 850 6
+1ca42 1c 850 6
+1ca5e 8 850 6
+1ca66 2 850 6
+1ca68 e 850 6
+1ca76 6 850 6
+1ca7c 8 850 6
+1ca84 6 85 79
+1ca8a 6 850 6
+1ca90 6 156 137
+1ca96 e 256 82
+1caa4 4 855 6
+1caa8 a 855 6
+1cab2 8 855 6
+1caba 6 156 137
+1cac0 8 856 6
+1cac8 2 277 82
+1caca 2 1139 87
+1cacc 2 856 6
+1cace 16 856 6
+1cae4 14 856 6
+1caf8 6 256 82
+1cafe 6 858 6
+1cb04 a 277 82
+1cb0e 2 1139 87
+1cb10 2 859 6
+1cb12 16 859 6
+1cb28 14 859 6
+1cb3c 6 256 82
+1cb42 10 861 6
+1cb52 a 277 82
+1cb5c 2 1139 87
+1cb5e 2 862 6
+1cb60 16 862 6
+1cb76 16 862 6
+1cb8c 6 862 6
+1cb92 8 862 6
+1cb9a 6 85 79
+1cba0 6 862 6
+1cba6 6 156 137
+1cbac 14 256 82
+1cbc0 a 864 6
+1cbca 2 1512 82
+1cbcc 4 864 6
+1cbd0 10 1512 82
+1cbe0 4 864 6
+1cbe4 6 302 82
+1cbea 14 864 6
+1cbfe 6 864 6
+1cc04 8 864 6
+1cc0c 6 85 79
+1cc12 6 864 6
+1cc18 a 256 82
+1cc22 a 865 6
+1cc2c 2 1512 82
+1cc2e 4 865 6
+1cc32 2 1512 82
+1cc34 2 256 82
+1cc36 e 1512 82
+1cc44 4 865 6
+1cc48 6 302 82
+1cc4e 16 865 6
+1cc64 6 865 6
+1cc6a 8 865 6
+1cc72 6 85 79
+1cc78 6 865 6
+1cc7e 6 256 82
+1cc84 10 866 6
+1cc94 4 400 136
+1cc98 6 315 139
+1cc9e 8 226 145
+1cca6 4 315 139
+1ccaa 6 1482 82
+1ccb0 6 156 137
+1ccb6 4 866 6
+1ccba 6 302 82
+1ccc0 c 866 6
+1cccc 2 866 6
+1ccce 8 866 6
+1ccd6 6 866 6
+1ccdc 8 866 6
+1cce4 6 85 79
+1ccea 6 866 6
+1ccf0 a 256 82
+1ccfa c 867 6
+1cd06 16 1512 82
+1cd1c 6 156 137
+1cd22 4 867 6
+1cd26 6 302 82
+1cd2c c 867 6
+1cd38 2 867 6
+1cd3a 8 867 6
+1cd42 6 867 6
+1cd48 8 867 6
+1cd50 6 85 79
+1cd56 6 867 6
+1cd5c 6 256 82
+1cd62 8 869 6
+1cd6a 6 869 6
+1cd70 6 842 6
+1cd76 6 869 6
+1cd7c 16 156 137
+1cd92 e 870 6
+1cda0 8 884 80
+1cda8 6 711 80
+1cdae 4 469 80
+1cdb2 8 711 80
+1cdba 8 469 80
+1cdc2 4 75 132
+1cdc6 6 156 137
+1cdcc 8 75 132
+1cdd4 6 886 80
+1cdda 8 884 80
+1cde2 4 469 80
+1cde6 4 75 132
+1cdea 4 469 80
+1cdee 8 75 132
+1cdf6 6 886 80
+1cdfc 18 1471 82
+1ce14 e 156 137
+1ce22 a6 870 6
+FUNC 1cec8 2dc 0 ExceptionHandlerTest_WriteMinidumpExceptionStream_Test::TestBody
+1cec8 8 1000 6
+1ced0 4 1000 6
+1ced4 4 1001 6
+1ced8 2 1000 6
+1ceda 2 1003 6
+1cedc 2 1001 6
+1cede 2 1000 6
+1cee0 4 1001 6
+1cee4 8 1003 6
+1ceec 22 1003 6
+1cf0e 6 1003 6
+1cf14 6 1004 6
+1cf1a 6 277 82
+1cf20 8 1139 87
+1cf28 2 1004 6
+1cf2a 16 1004 6
+1cf40 16 1004 6
+1cf56 6 1004 6
+1cf5c 8 1004 6
+1cf64 6 85 79
+1cf6a 6 1004 6
+1cf70 6 156 137
+1cf76 e 256 82
+1cf84 e 1006 6
+1cf92 8 1009 6
+1cf9a 6 1010 6
+1cfa0 4 1139 87
+1cfa4 2 277 82
+1cfa6 2 1010 6
+1cfa8 1a 1010 6
+1cfc2 14 1010 6
+1cfd6 6 256 82
+1cfdc 6 1011 6
+1cfe2 a 277 82
+1cfec 4 1139 87
+1cff0 2 1012 6
+1cff2 1a 1012 6
+1d00c 16 1012 6
+1d022 6 1012 6
+1d028 8 1012 6
+1d030 6 85 79
+1d036 6 1012 6
+1d03c 6 156 137
+1d042 a 256 82
+1d04c 6 600 65
+1d052 6 600 65
+1d058 2 600 65
+1d05a 8 277 82
+1d062 2 1139 87
+1d064 2 277 82
+1d066 2 1139 87
+1d068 2 1014 6
+1d06a 18 1014 6
+1d082 16 1014 6
+1d098 6 1014 6
+1d09e 8 1014 6
+1d0a6 6 85 79
+1d0ac 6 1014 6
+1d0b2 6 156 137
+1d0b8 c 256 82
+1d0c4 4 156 137
+1d0c8 6 256 82
+1d0ce 4 1015 6
+1d0d2 4 1512 82
+1d0d6 6 1015 6
+1d0dc e 1512 82
+1d0ea 4 1015 6
+1d0ee 6 302 82
+1d0f4 14 1015 6
+1d108 6 1015 6
+1d10e 8 1016 6
+1d116 6 85 79
+1d11c 6 1015 6
+1d122 6 256 82
+1d128 6 1009 6
+1d12e 12 156 137
+1d140 64 1017 6
+FUNC 1d1a4 468 0 ExceptionHandlerTest_GenerateMultipleDumpsWithPath_Test::TestBody
+1d1a4 a 1036 6
+1d1ae 6 1036 6
+1d1b4 4 1039 6
+1d1b8 2 1036 6
+1d1ba a 1037 6
+1d1c4 8 1039 6
+1d1cc 22 1039 6
+1d1ee 6 1039 6
+1d1f4 6 1040 6
+1d1fa 4 277 82
+1d1fe a 1139 87
+1d208 2 1040 6
+1d20a 16 1040 6
+1d220 4 1040 6
+1d224 2 1040 6
+1d226 10 1040 6
+1d236 6 1040 6
+1d23c 8 1040 6
+1d244 6 85 79
+1d24a 6 1040 6
+1d250 8 156 137
+1d258 6 256 82
+1d25e 4 1044 6
+1d262 4 1044 6
+1d266 4 1044 6
+1d26a 6 1552 82
+1d270 2 1044 6
+1d272 2 1552 82
+1d274 2 1044 6
+1d276 e 1552 82
+1d284 4 1044 6
+1d288 6 302 82
+1d28e 12 1044 6
+1d2a0 6 1044 6
+1d2a6 8 1044 6
+1d2ae 6 85 79
+1d2b4 6 1044 6
+1d2ba e 256 82
+1d2c8 1e 1045 6
+1d2e6 6 302 82
+1d2ec 10 1045 6
+1d2fc 4 1046 6
+1d300 6 256 82
+1d306 a 1046 6
+1d310 c 1048 6
+1d31c 6 1049 6
+1d322 4 1139 87
+1d326 2 277 82
+1d328 2 1049 6
+1d32a 1a 1049 6
+1d344 14 1049 6
+1d358 6 256 82
+1d35e 6 1050 6
+1d364 6 1053 6
+1d36a 4 1139 87
+1d36e 2 277 82
+1d370 2 1053 6
+1d372 1a 1053 6
+1d38c 16 1053 6
+1d3a2 6 1053 6
+1d3a8 8 1053 6
+1d3b0 6 85 79
+1d3b6 6 1053 6
+1d3bc 6 156 137
+1d3c2 e 256 82
+1d3d0 4 1055 6
+1d3d4 4 1055 6
+1d3d8 4 1055 6
+1d3dc 2 1552 82
+1d3de 2 1055 6
+1d3e0 e 1552 82
+1d3ee 4 1055 6
+1d3f2 6 302 82
+1d3f8 10 1055 6
+1d408 6 256 82
+1d40e 16 1056 6
+1d424 6 302 82
+1d42a 12 1056 6
+1d43c 6 1056 6
+1d442 8 1056 6
+1d44a 6 85 79
+1d450 8 1056 6
+1d458 4 1057 6
+1d45c 6 256 82
+1d462 4 1059 6
+1d466 a 1057 6
+1d470 8 1059 6
+1d478 6 1060 6
+1d47e 4 1139 87
+1d482 2 277 82
+1d484 2 1060 6
+1d486 1a 1060 6
+1d4a0 16 1060 6
+1d4b6 6 1060 6
+1d4bc 8 1060 6
+1d4c4 6 85 79
+1d4ca 6 1060 6
+1d4d0 8 156 137
+1d4d8 6 256 82
+1d4de 6 1061 6
+1d4e4 18 1064 6
+1d4fc 4 1064 6
+1d500 6 302 82
+1d506 12 1064 6
+1d518 6 1064 6
+1d51e 8 1064 6
+1d526 6 85 79
+1d52c 6 1064 6
+1d532 c 256 82
+1d53e 8 156 137
+1d546 6 256 82
+1d54c 6 1059 6
+1d552 6 156 137
+1d558 6 1048 6
+1d55e 6 156 137
+1d564 6 1039 6
+1d56a a 1064 6
+1d574 12 156 137
+1d586 86 1065 6
+FUNC 1d60c 370 0 ExceptionHandlerTest_AdditionalMemory_Test::TestBody
+1d60c 8 1068 6
+1d614 6 1068 6
+1d61a 2 1069 6
+1d61c 2 1068 6
+1d61e c 1069 6
+1d62a 4 1072 6
+1d62e 6 1073 6
+1d634 6 277 82
+1d63a 8 1139 87
+1d642 2 1072 6
+1d644 2 1073 6
+1d646 6 256 82
+1d64c 8 1077 6
+1d654 8 1077 6
+1d65c c 1078 6
+1d668 2 1081 6
+1d66a 4 1083 6
+1d66e 6 1081 6
+1d674 8 1083 6
+1d67c 20 1083 6
+1d69c 6 1083 6
+1d6a2 c 1086 6
+1d6ae 4 1092 6
+1d6b2 2 1087 6
+1d6b4 2 1092 6
+1d6b6 4 1087 6
+1d6ba a 1092 6
+1d6c4 8 1092 6
+1d6cc 6 156 137
+1d6d2 8 1093 6
+1d6da 4 277 82
+1d6de 6 1139 87
+1d6e4 2 1093 6
+1d6e6 16 1093 6
+1d6fc 12 1093 6
+1d70e 6 256 82
+1d714 6 1095 6
+1d71a c 277 82
+1d726 4 1139 87
+1d72a 2 1096 6
+1d72c 16 1096 6
+1d742 12 1096 6
+1d754 6 256 82
+1d75a 10 1098 6
+1d76a c 277 82
+1d776 4 1139 87
+1d77a 2 1099 6
+1d77c 16 1099 6
+1d792 14 1099 6
+1d7a6 6 1099 6
+1d7ac 8 1099 6
+1d7b4 6 85 79
+1d7ba 6 1099 6
+1d7c0 6 156 137
+1d7c6 e 256 82
+1d7d4 a 1101 6
+1d7de 2 1512 82
+1d7e0 4 1101 6
+1d7e4 10 1512 82
+1d7f4 6 1101 6
+1d7fa 6 302 82
+1d800 12 1101 6
+1d812 6 1101 6
+1d818 8 1101 6
+1d820 6 85 79
+1d826 6 1101 6
+1d82c 6 256 82
+1d832 a 1102 6
+1d83c 4 1512 82
+1d840 4 1102 6
+1d844 e 1512 82
+1d852 6 1102 6
+1d858 6 302 82
+1d85e 12 1102 6
+1d870 6 1102 6
+1d876 8 1102 6
+1d87e 6 85 79
+1d884 6 1102 6
+1d88a 6 256 82
+1d890 a 1105 6
+1d89a a 1105 6
+1d8a4 4 1552 82
+1d8a8 4 1105 6
+1d8ac e 1552 82
+1d8ba 6 1105 6
+1d8c0 6 302 82
+1d8c6 12 1105 6
+1d8d8 6 1105 6
+1d8de 8 1105 6
+1d8e6 6 85 79
+1d8ec 6 1105 6
+1d8f2 6 256 82
+1d8f8 18 1107 6
+1d910 6c 1108 6
+FUNC 1d97c 22c 0 ExceptionHandlerTest_AdditionalMemoryRemove_Test::TestBody
+1d97c a 1112 6
+1d986 a 1112 6
+1d990 2 1113 6
+1d992 2 1112 6
+1d994 6 1113 6
+1d99a 4 1116 6
+1d99e 2 1139 87
+1d9a0 2 277 82
+1d9a2 4 256 82
+1d9a6 2 1116 6
+1d9a8 4 1120 6
+1d9ac 2 256 82
+1d9ae 2 1122 6
+1d9b0 4 277 82
+1d9b4 2 1139 87
+1d9b6 4 256 82
+1d9ba 6 1120 6
+1d9c0 8 1122 6
+1d9c8 1a 1122 6
+1d9e2 6 1122 6
+1d9e8 a 1125 6
+1d9f2 8 1128 6
+1d9fa 2 1134 6
+1d9fc 4 256 82
+1da00 6 1129 6
+1da06 a 1134 6
+1da10 8 1134 6
+1da18 6 156 137
+1da1e 6 1135 6
+1da24 2 1139 87
+1da26 8 277 82
+1da2e 2 1135 6
+1da30 16 1135 6
+1da46 14 1135 6
+1da5a 6 256 82
+1da60 6 1137 6
+1da66 c 277 82
+1da72 2 1139 87
+1da74 2 1138 6
+1da76 16 1138 6
+1da8c 12 1138 6
+1da9e 4 1138 6
+1daa2 4 1138 6
+1daa6 6 1138 6
+1daac 8 1138 6
+1dab4 6 85 79
+1daba 6 1138 6
+1dac0 6 156 137
+1dac6 e 256 82
+1dad4 e 1140 6
+1dae2 6 1141 6
+1dae8 4 277 82
+1daec 2 1139 87
+1daee 2 1141 6
+1daf0 16 1141 6
+1db06 a 1141 6
+1db10 4 1141 6
+1db14 c 1141 6
+1db20 6 1141 6
+1db26 8 1141 6
+1db2e 6 85 79
+1db34 6 1141 6
+1db3a 6 156 137
+1db40 6 256 82
+1db46 18 1143 6
+1db5e 4a 1144 6
+FUNC 1dba8 41c 0 ExceptionHandlerTest_WriteMinidumpForChild_Test::TestBody
+1dba8 8 1154 6
+1dbb0 6 1154 6
+1dbb6 2 1156 6
+1dbb8 2 1154 6
+1dbba a 1156 6
+1dbc4 a 1156 6
+1dbce 2 1156 6
+1dbd0 e 1156 6
+1dbde a 1156 6
+1dbe8 6 302 82
+1dbee 12 1156 6
+1dc00 6 1156 6
+1dc06 8 1156 6
+1dc0e 6 85 79
+1dc14 6 1156 6
+1dc1a e 256 82
+1dc28 6 1158 6
+1dc2e 2 1159 6
+1dc30 6 1160 6
+1dc36 e 1162 6
+1dc44 4 1162 6
+1dc48 6 1162 6
+1dc4e 6 1163 6
+1dc54 6 1164 6
+1dc5a 4 1168 6
+1dc5e 6 1166 6
+1dc64 4 1169 6
+1dc68 6 1168 6
+1dc6e 8 1169 6
+1dc76 12 1170 6
+1dc88 4 1139 87
+1dc8c 4 277 82
+1dc90 8 1139 87
+1dc98 2 1170 6
+1dc9a 16 1170 6
+1dcb0 14 1170 6
+1dcc4 6 1170 6
+1dcca 8 1170 6
+1dcd2 6 85 79
+1dcd8 6 1170 6
+1dcde 6 156 137
+1dce4 e 256 82
+1dcf2 8 1175 6
+1dcfa 6 1176 6
+1dd00 4 1139 87
+1dd04 4 277 82
+1dd08 2 1176 6
+1dd0a 1a 1176 6
+1dd24 12 1176 6
+1dd36 6 256 82
+1dd3c 6 1178 6
+1dd42 c 277 82
+1dd4e 4 1139 87
+1dd52 2 1179 6
+1dd54 18 1179 6
+1dd6c 8 1179 6
+1dd74 2 1179 6
+1dd76 c 1179 6
+1dd82 6 1179 6
+1dd88 8 1179 6
+1dd90 6 85 79
+1dd96 6 1179 6
+1dd9c 4 156 137
+1dda0 6 256 82
+1dda6 8 1181 6
+1ddae 4 1139 87
+1ddb2 4 277 82
+1ddb6 2 1181 6
+1ddb8 1a 1181 6
+1ddd2 12 1181 6
+1dde4 6 256 82
+1ddea 2 1182 6
+1ddec 4 1512 82
+1ddf0 2 1182 6
+1ddf2 e 1512 82
+1de00 6 1182 6
+1de06 6 302 82
+1de0c 12 1182 6
+1de1e 6 1182 6
+1de24 8 1182 6
+1de2c 6 85 79
+1de32 6 1182 6
+1de38 6 256 82
+1de3e 6 600 65
+1de44 6 600 65
+1de4a 2 600 65
+1de4c 8 277 82
+1de54 2 1139 87
+1de56 4 277 82
+1de5a 2 1139 87
+1de5c 2 1185 6
+1de5e 1a 1185 6
+1de78 14 1185 6
+1de8c 6 1185 6
+1de92 8 1185 6
+1de9a 6 85 79
+1dea0 6 1185 6
+1dea6 6 156 137
+1deac e 256 82
+1deba 4 1186 6
+1debe 4 1512 82
+1dec2 6 1186 6
+1dec8 e 1512 82
+1ded6 6 1186 6
+1dedc 6 302 82
+1dee2 12 1186 6
+1def4 6 1186 6
+1defa 8 1187 6
+1df02 6 85 79
+1df08 6 1186 6
+1df0e 6 256 82
+1df14 6 1189 6
+1df1a c 1190 6
+1df26 c 156 137
+1df32 92 1191 6
+FUNC 1dfc4 20 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MicrodumpWriterTest_Setup_Test>::CreateTest
+1dfc4 2 486 85
+1dfc6 8 486 85
+1dfce 6 56 11
+1dfd4 2 486 85
+1dfd6 6 56 11
+1dfdc 8 486 85
+FUNC 1dfe4 18 0 MicrodumpWriterTest_Setup_Test::~MicrodumpWriterTest_Setup_Test
+1dfe4 2 56 11
+1dfe6 16 56 11
+FUNC 1dffc 12 0 MicrodumpWriterTest_Setup_Test::~MicrodumpWriterTest_Setup_Test
+1dffc 2 56 11
+1dffe 6 56 11
+1e004 6 56 11
+1e00a 4 56 11
+FUNC 1e00e 10 0 std::__node_alloc::allocate
+1e00e 6 158 106
+1e014 6 134 124
+1e01a 4 158 106
+FUNC 1e020 6c 0 testing::PrintToString<void const*>
+1e020 e 883 80
+1e02e 2 883 80
+1e030 4 884 80
+1e034 2 883 80
+1e036 4 884 80
+1e03a 2 883 80
+1e03c 8 884 80
+1e044 2 310 80
+1e046 c 333 127
+1e052 6 318 80
+1e058 8 291 126
+1e060 8 75 132
+1e068 6 886 80
+1e06e 1e 887 80
+FUNC 1e08c 108 0 testing::internal::CmpHelperNE<char*, char*>
+1e08c e 1615 82
+1e09a 12 1615 82
+1e0ac 4 1615 82
+1e0b0 4 1615 82
+1e0b4 10 1583 82
+1e0c4 a 1583 82
+1e0ce 6 1583 82
+1e0d4 2 1583 82
+1e0d6 2 1407 82
+1e0d8 6 1583 82
+1e0de 6 1583 82
+1e0e4 8 1583 82
+1e0ec 6 1583 82
+1e0f2 a 1584 82
+1e0fc e 1407 82
+1e10a a 1584 82
+1e114 6 306 82
+1e11a c 333 127
+1e126 8 306 82
+1e12e 6 85 79
+1e134 e 1407 82
+1e142 a 1585 82
+1e14c 6 1585 82
+1e152 c 156 137
+1e15e 6 256 82
+1e164 30 1615 82
+FUNC 1e194 6e4 0 MicrodumpWriterTest_Setup_Test::TestBody
+1e194 c 56 11
+1e1a0 6 56 11
+1e1a6 4 58 11
+1e1aa 4 56 11
+1e1ae e 58 11
+1e1bc 8 58 11
+1e1c4 2 58 11
+1e1c6 4 58 11
+1e1ca 2 58 11
+1e1cc e 58 11
+1e1da 8 58 11
+1e1e2 2 1144 87
+1e1e4 6 298 82
+1e1ea 6 298 82
+1e1f0 12 58 11
+1e202 6 58 11
+1e208 8 58 11
+1e210 6 85 79
+1e216 6 58 11
+1e21c 8 256 82
+1e224 4 60 11
+1e228 6 256 82
+1e22e 6 60 11
+1e234 12 61 11
+1e246 e 62 11
+1e254 a 63 11
+1e25e 4 62 11
+1e262 12 63 11
+1e274 2 1144 87
+1e276 6 298 82
+1e27c 6 298 82
+1e282 8 63 11
+1e28a 2 63 11
+1e28c a 63 11
+1e296 6 63 11
+1e29c 8 63 11
+1e2a4 4 85 79
+1e2a8 6 256 82
+1e2ae 6 65 11
+1e2b4 4 66 11
+1e2b8 8 67 11
+1e2c0 10 69 11
+1e2d0 4 69 11
+1e2d4 6 69 11
+1e2da 8 70 11
+1e2e2 6 71 11
+1e2e8 8 73 11
+1e2f0 c 76 11
+1e2fc a 77 11
+1e306 2 1481 82
+1e308 2 77 11
+1e30a 2 1481 82
+1e30c 2 77 11
+1e30e 2 1481 82
+1e310 8 1482 82
+1e318 18 1382 82
+1e330 1c 1471 82
+1e34c c 156 137
+1e358 6 77 11
+1e35e 4 1144 87
+1e362 6 298 82
+1e368 6 298 82
+1e36e 12 77 11
+1e380 6 77 11
+1e386 8 77 11
+1e38e 6 85 79
+1e394 6 77 11
+1e39a e 256 82
+1e3a8 2 83 11
+1e3aa 4 80 11
+1e3ae 4 83 11
+1e3b2 2 88 11
+1e3b4 2 83 11
+1e3b6 1c 88 11
+1e3d2 2 93 11
+1e3d4 a 94 11
+1e3de 4 91 11
+1e3e2 4 92 11
+1e3e6 2 93 11
+1e3e8 4 94 11
+1e3ec a 188 121
+1e3f6 8 481 106
+1e3fe 4 91 11
+1e402 2 98 11
+1e404 4 481 106
+1e408 6 98 11
+1e40e 2 99 11
+1e410 4 211 121
+1e414 4 212 121
+1e418 6 98 11
+1e41e 8 99 11
+1e426 4 306 106
+1e42a 2 307 106
+1e42c 2 306 106
+1e42e 6 307 106
+1e434 4 119 108
+1e438 a 119 108
+1e442 4 427 121
+1e446 2 103 11
+1e448 2 429 121
+1e44a 4 428 121
+1e44e 2 430 121
+1e450 4 431 121
+1e454 4 103 11
+1e458 a 104 11
+1e462 4 103 11
+1e466 2 104 11
+1e468 4 103 11
+1e46c 1e 104 11
+1e48a 2 1144 87
+1e48c 6 298 82
+1e492 4 298 82
+1e496 10 104 11
+1e4a6 6 104 11
+1e4ac 8 104 11
+1e4b4 4 85 79
+1e4b8 6 256 82
+1e4be 12 105 11
+1e4d0 2 105 11
+1e4d2 2 105 11
+1e4d4 e 105 11
+1e4e2 4 105 11
+1e4e6 2 1144 87
+1e4e8 6 298 82
+1e4ee 4 298 82
+1e4f2 6 105 11
+1e4f8 2 105 11
+1e4fa a 105 11
+1e504 6 105 11
+1e50a 8 105 11
+1e512 6 85 79
+1e518 6 105 11
+1e51e e 256 82
+1e52c e 107 11
+1e53a 4 1139 87
+1e53e 2 277 82
+1e540 4 1139 87
+1e544 2 107 11
+1e546 1a 107 11
+1e560 14 107 11
+1e574 6 107 11
+1e57a 8 107 11
+1e582 6 85 79
+1e588 6 107 11
+1e58e 8 156 137
+1e596 6 256 82
+1e59c a 110 11
+1e5a6 8 111 11
+1e5ae 8 114 11
+1e5b6 c 115 11
+1e5c2 a 117 11
+1e5cc e 118 11
+1e5da 2 1623 82
+1e5dc 6 118 11
+1e5e2 2 1623 82
+1e5e4 8 1623 82
+1e5ec 1a 1623 82
+1e606 4 118 11
+1e60a 2 1144 87
+1e60c 6 298 82
+1e612 4 298 82
+1e616 6 118 11
+1e61c 2 118 11
+1e61e a 118 11
+1e628 6 118 11
+1e62e 8 118 11
+1e636 6 85 79
+1e63c 6 118 11
+1e642 4 256 82
+1e646 4 120 11
+1e64a 6 256 82
+1e650 6 120 11
+1e656 4 120 11
+1e65a 4 120 11
+1e65e 6 120 11
+1e664 2 120 11
+1e666 2 120 11
+1e668 2 120 11
+1e66a e 120 11
+1e678 4 120 11
+1e67c 2 1144 87
+1e67e 6 298 82
+1e684 4 298 82
+1e688 10 120 11
+1e698 6 120 11
+1e69e 8 120 11
+1e6a6 4 85 79
+1e6aa 6 256 82
+1e6b0 6 122 11
+1e6b6 4 122 11
+1e6ba 4 122 11
+1e6be 2 122 11
+1e6c0 2 122 11
+1e6c2 e 122 11
+1e6d0 4 122 11
+1e6d4 2 1144 87
+1e6d6 6 298 82
+1e6dc 4 298 82
+1e6e0 e 122 11
+1e6ee 6 256 82
+1e6f4 6 124 11
+1e6fa 4 124 11
+1e6fe 4 124 11
+1e702 2 124 11
+1e704 2 124 11
+1e706 e 124 11
+1e714 4 124 11
+1e718 2 1144 87
+1e71a 6 298 82
+1e720 4 298 82
+1e724 c 124 11
+1e730 2 124 11
+1e732 4 124 11
+1e736 6 124 11
+1e73c 8 124 11
+1e744 6 85 79
+1e74a 6 124 11
+1e750 6 256 82
+1e756 8 203 57
+1e75e 6 256 82
+1e764 6 128 11
+1e76a 6 129 11
+1e770 2 67 120
+1e772 6 203 57
+1e778 2 67 120
+1e77a 4 68 120
+1e77e 2 74 120
+1e780 8 135 124
+1e788 4 67 120
+1e78c 4 68 120
+1e790 2 74 120
+1e792 8 135 124
+1e79a 2 61 63
+1e79c 6 156 137
+1e7a2 8 61 63
+1e7aa 6 156 137
+1e7b0 c8 130 11
+FUNC 1e878 18 0 CpuSetTest_EmptyIntersection_Test::~CpuSetTest_EmptyIntersection_Test
+1e878 2 146 13
+1e87a 16 146 13
+FUNC 1e890 12 0 CpuSetTest_EmptyIntersection_Test::~CpuSetTest_EmptyIntersection_Test
+1e890 2 146 13
+1e892 6 146 13
+1e898 6 146 13
+1e89e 4 146 13
+FUNC 1e8a4 18 0 CpuSetTest_SelfIntersection_Test::~CpuSetTest_SelfIntersection_Test
+1e8a4 2 135 13
+1e8a6 16 135 13
+FUNC 1e8bc 12 0 CpuSetTest_SelfIntersection_Test::~CpuSetTest_SelfIntersection_Test
+1e8bc 2 135 13
+1e8be 6 135 13
+1e8c4 6 135 13
+1e8ca 4 135 13
+FUNC 1e8d0 18 0 CpuSetTest_IntersectWith_Test::~CpuSetTest_IntersectWith_Test
+1e8d0 2 117 13
+1e8d2 16 117 13
+FUNC 1e8e8 12 0 CpuSetTest_IntersectWith_Test::~CpuSetTest_IntersectWith_Test
+1e8e8 2 117 13
+1e8ea 6 117 13
+1e8f0 6 117 13
+1e8f6 4 117 13
+FUNC 1e8fc 18 0 CpuSetTest_MultiItems_Test::~CpuSetTest_MultiItems_Test
+1e8fc 2 108 13
+1e8fe 16 108 13
+FUNC 1e914 12 0 CpuSetTest_MultiItems_Test::~CpuSetTest_MultiItems_Test
+1e914 2 108 13
+1e916 6 108 13
+1e91c 6 108 13
+1e922 4 108 13
+FUNC 1e928 18 0 CpuSetTest_TenCpusWithRange_Test::~CpuSetTest_TenCpusWithRange_Test
+1e928 2 99 13
+1e92a 16 99 13
+FUNC 1e940 12 0 CpuSetTest_TenCpusWithRange_Test::~CpuSetTest_TenCpusWithRange_Test
+1e940 2 99 13
+1e942 6 99 13
+1e948 6 99 13
+1e94e 4 99 13
+FUNC 1e954 18 0 CpuSetTest_TwoCpusWithRange_Test::~CpuSetTest_TwoCpusWithRange_Test
+1e954 2 90 13
+1e956 16 90 13
+FUNC 1e96c 12 0 CpuSetTest_TwoCpusWithRange_Test::~CpuSetTest_TwoCpusWithRange_Test
+1e96c 2 90 13
+1e96e 6 90 13
+1e974 6 90 13
+1e97a 4 90 13
+FUNC 1e980 18 0 CpuSetTest_TwoCpusWithComma_Test::~CpuSetTest_TwoCpusWithComma_Test
+1e980 2 81 13
+1e982 16 81 13
+FUNC 1e998 12 0 CpuSetTest_TwoCpusWithComma_Test::~CpuSetTest_TwoCpusWithComma_Test
+1e998 2 81 13
+1e99a 6 81 13
+1e9a0 6 81 13
+1e9a6 4 81 13
+FUNC 1e9ac 18 0 CpuSetTest_OneCpuTerminated_Test::~CpuSetTest_OneCpuTerminated_Test
+1e9ac 2 72 13
+1e9ae 16 72 13
+FUNC 1e9c4 12 0 CpuSetTest_OneCpuTerminated_Test::~CpuSetTest_OneCpuTerminated_Test
+1e9c4 2 72 13
+1e9c6 6 72 13
+1e9cc 6 72 13
+1e9d2 4 72 13
+FUNC 1e9d8 18 0 CpuSetTest_OneCpu_Test::~CpuSetTest_OneCpu_Test
+1e9d8 2 63 13
+1e9da 16 63 13
+FUNC 1e9f0 12 0 CpuSetTest_OneCpu_Test::~CpuSetTest_OneCpu_Test
+1e9f0 2 63 13
+1e9f2 6 63 13
+1e9f8 6 63 13
+1e9fe 4 63 13
+FUNC 1ea04 18 0 CpuSetTest_EmptyCount_Test::~CpuSetTest_EmptyCount_Test
+1ea04 2 58 13
+1ea06 16 58 13
+FUNC 1ea1c 12 0 CpuSetTest_EmptyCount_Test::~CpuSetTest_EmptyCount_Test
+1ea1c 2 58 13
+1ea1e 6 58 13
+1ea24 6 58 13
+1ea2a 4 58 13
+FUNC 1ea30 20 0 testing::internal::TestFactoryImpl<CpuSetTest_IntersectWith_Test>::CreateTest
+1ea30 2 486 85
+1ea32 8 486 85
+1ea3a 6 117 13
+1ea40 2 486 85
+1ea42 6 117 13
+1ea48 8 486 85
+FUNC 1ea50 20 0 testing::internal::TestFactoryImpl<CpuSetTest_EmptyIntersection_Test>::CreateTest
+1ea50 2 486 85
+1ea52 8 486 85
+1ea5a 6 146 13
+1ea60 2 486 85
+1ea62 6 146 13
+1ea68 8 486 85
+FUNC 1ea70 20 0 testing::internal::TestFactoryImpl<CpuSetTest_SelfIntersection_Test>::CreateTest
+1ea70 2 486 85
+1ea72 8 486 85
+1ea7a 6 135 13
+1ea80 2 486 85
+1ea82 6 135 13
+1ea88 8 486 85
+FUNC 1ea90 20 0 testing::internal::TestFactoryImpl<CpuSetTest_TwoCpusWithComma_Test>::CreateTest
+1ea90 2 486 85
+1ea92 8 486 85
+1ea9a 6 81 13
+1eaa0 2 486 85
+1eaa2 6 81 13
+1eaa8 8 486 85
+FUNC 1eab0 20 0 testing::internal::TestFactoryImpl<CpuSetTest_OneCpuTerminated_Test>::CreateTest
+1eab0 2 486 85
+1eab2 8 486 85
+1eaba 6 72 13
+1eac0 2 486 85
+1eac2 6 72 13
+1eac8 8 486 85
+FUNC 1ead0 20 0 testing::internal::TestFactoryImpl<CpuSetTest_OneCpu_Test>::CreateTest
+1ead0 2 486 85
+1ead2 8 486 85
+1eada 6 63 13
+1eae0 2 486 85
+1eae2 6 63 13
+1eae8 8 486 85
+FUNC 1eaf0 20 0 testing::internal::TestFactoryImpl<CpuSetTest_EmptyCount_Test>::CreateTest
+1eaf0 2 486 85
+1eaf2 8 486 85
+1eafa 6 58 13
+1eb00 2 486 85
+1eb02 6 58 13
+1eb08 8 486 85
+FUNC 1eb10 20 0 testing::internal::TestFactoryImpl<CpuSetTest_TenCpusWithRange_Test>::CreateTest
+1eb10 2 486 85
+1eb12 8 486 85
+1eb1a 6 99 13
+1eb20 2 486 85
+1eb22 6 99 13
+1eb28 8 486 85
+FUNC 1eb30 20 0 testing::internal::TestFactoryImpl<CpuSetTest_TwoCpusWithRange_Test>::CreateTest
+1eb30 2 486 85
+1eb32 8 486 85
+1eb3a 6 90 13
+1eb40 2 486 85
+1eb42 6 90 13
+1eb48 8 486 85
+FUNC 1eb50 20 0 testing::internal::TestFactoryImpl<CpuSetTest_MultiItems_Test>::CreateTest
+1eb50 2 486 85
+1eb52 8 486 85
+1eb5a 6 108 13
+1eb60 2 486 85
+1eb62 6 108 13
+1eb68 8 486 85
+FUNC 1eb70 10 0 google_breakpad::CpuSet::CpuSet
+1eb70 2 50 12
+1eb72 2 50 12
+1eb74 8 51 12
+1eb7c 4 52 12
+FUNC 1eb80 108 0 google_breakpad::CpuSet::ParseSysFile
+1eb80 a 55 12
+1eb8a a 55 12
+1eb94 1a 3104 97
+1ebae 4 3104 97
+1ebb2 4 3104 97
+1ebb6 4 59 12
+1ebba 8 58 12
+1ebc2 2 71 12
+1ebc4 2 61 12
+1ebc6 4 102 12
+1ebca 2 72 12
+1ebcc 6 73 12
+1ebd2 a 75 12
+1ebdc 2 75 12
+1ebde 2 75 12
+1ebe0 2 76 12
+1ebe2 4 75 12
+1ebe6 2 109 12
+1ebe8 c 110 12
+1ebf4 c 82 12
+1ec00 2 83 12
+1ec02 4 84 12
+1ec06 6 92 12
+1ec0c 8 92 12
+1ec14 c 92 12
+1ec20 4 96 12
+1ec24 4 100 12
+1ec28 4 101 12
+1ec2c 2 100 12
+1ec2e 4 101 12
+1ec32 2 102 12
+1ec34 2 101 12
+1ec36 4 102 12
+1ec3a 6 103 12
+1ec40 8 104 12
+1ec48 4 131 12
+1ec4c a 106 12
+1ec56 4 130 12
+1ec5a 4 131 12
+1ec5e 4 107 12
+1ec62 16 131 12
+1ec78 4 130 12
+1ec7c c 110 12
+FUNC 1ec88 1c 0 google_breakpad::CpuSet::GetCount
+1ec88 2 119 12
+1ec8a 8 120 12
+1ec92 8 122 12
+1ec9a 2 121 12
+1ec9c 2 122 12
+1ec9e 2 121 12
+1eca0 4 125 12
+FUNC 1eca4 12 0 google_breakpad::AutoTestFile::~AutoTestFile
+1eca4 2 72 52
+1eca6 2 72 52
+1eca8 6 73 52
+1ecae 4 74 52
+1ecb2 4 77 52
+FUNC 1ecb8 6c 0 google_breakpad::AutoTestFile::Init
+1ecb8 e 92 52
+1ecc6 c 92 52
+1ecd2 6 93 52
+1ecd8 4 97 52
+1ecdc 2 92 52
+1ecde c 97 52
+1ecea 6 98 52
+1ecf0 6 101 52
+1ecf6 2 102 52
+1ecf8 2 101 52
+1ecfa 2 102 52
+1ecfc 6 105 52
+1ed02 22 106 52
+FUNC 1ed24 5c 0 ScopedTestFile::ScopedTestFile
+1ed24 2 51 13
+1ed26 4 51 13
+1ed2a 8 60 52
+1ed32 6 61 52
+1ed38 8 62 52
+1ed40 10 109 52
+1ed50 4 109 52
+1ed54 6 109 52
+1ed5a 4 110 52
+1ed5e 6 111 52
+1ed64 8 112 52
+1ed6c a 116 52
+1ed76 a 53 13
+FUNC 1ed80 dc 0 testing::internal::CmpHelperEQFailure<int, int>
+1ed80 e 1464 82
+1ed8e 2 1464 82
+1ed90 2 884 80
+1ed92 2 1464 82
+1ed94 2 240 126
+1ed96 2 1464 82
+1ed98 4 884 80
+1ed9c 8 1464 82
+1eda4 4 884 80
+1eda8 10 240 126
+1edb8 2 112 137
+1edba 4 378 136
+1edbe 4 379 136
+1edc2 2 112 137
+1edc4 2 481 106
+1edc6 4 379 136
+1edca a 148 142
+1edd4 4 101 108
+1edd8 2 380 136
+1edda 4 101 108
+1edde 6 886 80
+1ede4 8 884 80
+1edec 12 240 126
+1edfe 2 112 137
+1ee00 4 378 136
+1ee04 4 379 136
+1ee08 2 112 137
+1ee0a 2 481 106
+1ee0c 4 379 136
+1ee10 a 148 142
+1ee1a 2 380 136
+1ee1c 4 101 108
+1ee20 6 886 80
+1ee26 10 1471 82
+1ee36 c 156 137
+1ee42 1a 1472 82
+FUNC 1ee5c 80 0 CpuSetTest_EmptyCount_Test::TestBody
+1ee5c 4 58 13
+1ee60 8 59 13
+1ee68 a 60 13
+1ee72 a 1552 82
+1ee7c 2 60 13
+1ee7e e 1552 82
+1ee8c 8 60 13
+1ee94 6 302 82
+1ee9a 10 60 13
+1eeaa 6 60 13
+1eeb0 8 60 13
+1eeb8 6 85 79
+1eebe 6 60 13
+1eec4 6 256 82
+1eeca 12 61 13
+FUNC 1eedc 1ac 0 CpuSetTest_OneCpu_Test::TestBody
+1eedc 8 63 13
+1eee4 4 63 13
+1eee8 2 64 13
+1eeea 2 63 13
+1eeec 8 64 13
+1eef4 2 63 13
+1eef6 4 64 13
+1eefa 2 82 52
+1eefc 4 1139 87
+1ef00 4 82 52
+1ef04 4 277 82
+1ef08 10 1139 87
+1ef18 2 65 13
+1ef1a 18 65 13
+1ef32 12 65 13
+1ef44 6 65 13
+1ef4a 8 65 13
+1ef52 6 85 79
+1ef58 6 65 13
+1ef5e 6 156 137
+1ef64 a 256 82
+1ef6e 6 67 13
+1ef74 8 68 13
+1ef7c 2 1139 87
+1ef7e 4 277 82
+1ef82 4 1139 87
+1ef86 2 68 13
+1ef88 1a 68 13
+1efa2 14 68 13
+1efb6 6 68 13
+1efbc 8 68 13
+1efc4 6 85 79
+1efca 6 68 13
+1efd0 8 156 137
+1efd8 6 256 82
+1efde a 69 13
+1efe8 8 1512 82
+1eff0 2 69 13
+1eff2 e 1512 82
+1f000 6 69 13
+1f006 6 302 82
+1f00c 10 69 13
+1f01c 6 69 13
+1f022 8 69 13
+1f02a 6 85 79
+1f030 6 69 13
+1f036 6 256 82
+1f03c 6 49 13
+1f042 46 70 13
+FUNC 1f088 1ac 0 CpuSetTest_OneCpuTerminated_Test::TestBody
+1f088 8 72 13
+1f090 4 72 13
+1f094 2 73 13
+1f096 2 72 13
+1f098 8 73 13
+1f0a0 2 72 13
+1f0a2 4 73 13
+1f0a6 2 82 52
+1f0a8 4 1139 87
+1f0ac 4 82 52
+1f0b0 4 277 82
+1f0b4 10 1139 87
+1f0c4 2 74 13
+1f0c6 18 74 13
+1f0de 12 74 13
+1f0f0 6 74 13
+1f0f6 8 74 13
+1f0fe 6 85 79
+1f104 6 74 13
+1f10a 6 156 137
+1f110 a 256 82
+1f11a 6 76 13
+1f120 8 77 13
+1f128 2 1139 87
+1f12a 4 277 82
+1f12e 4 1139 87
+1f132 2 77 13
+1f134 1a 77 13
+1f14e 14 77 13
+1f162 6 77 13
+1f168 8 77 13
+1f170 6 85 79
+1f176 6 77 13
+1f17c 8 156 137
+1f184 6 256 82
+1f18a a 78 13
+1f194 8 1512 82
+1f19c 2 78 13
+1f19e e 1512 82
+1f1ac 6 78 13
+1f1b2 6 302 82
+1f1b8 10 78 13
+1f1c8 6 78 13
+1f1ce 8 78 13
+1f1d6 6 85 79
+1f1dc 6 78 13
+1f1e2 6 256 82
+1f1e8 6 49 13
+1f1ee 46 79 13
+FUNC 1f234 1b0 0 CpuSetTest_TwoCpusWithComma_Test::TestBody
+1f234 8 81 13
+1f23c 4 81 13
+1f240 2 82 13
+1f242 2 81 13
+1f244 8 82 13
+1f24c 2 81 13
+1f24e 4 82 13
+1f252 2 82 52
+1f254 4 1139 87
+1f258 4 82 52
+1f25c 4 277 82
+1f260 10 1139 87
+1f270 2 83 13
+1f272 18 83 13
+1f28a 12 83 13
+1f29c 6 83 13
+1f2a2 8 83 13
+1f2aa 6 85 79
+1f2b0 6 83 13
+1f2b6 6 156 137
+1f2bc a 256 82
+1f2c6 6 85 13
+1f2cc 8 86 13
+1f2d4 2 1139 87
+1f2d6 4 277 82
+1f2da 4 1139 87
+1f2de 2 86 13
+1f2e0 1a 86 13
+1f2fa 14 86 13
+1f30e 6 86 13
+1f314 8 86 13
+1f31c 6 85 79
+1f322 6 86 13
+1f328 8 156 137
+1f330 4 87 13
+1f334 6 256 82
+1f33a a 87 13
+1f344 8 1512 82
+1f34c 2 87 13
+1f34e e 1512 82
+1f35c 6 87 13
+1f362 6 302 82
+1f368 10 87 13
+1f378 6 87 13
+1f37e 8 87 13
+1f386 6 85 79
+1f38c 6 87 13
+1f392 6 256 82
+1f398 6 49 13
+1f39e 46 88 13
+FUNC 1f3e4 1b0 0 CpuSetTest_TwoCpusWithRange_Test::TestBody
+1f3e4 8 90 13
+1f3ec 4 90 13
+1f3f0 2 91 13
+1f3f2 2 90 13
+1f3f4 8 91 13
+1f3fc 2 90 13
+1f3fe 4 91 13
+1f402 2 82 52
+1f404 4 1139 87
+1f408 4 82 52
+1f40c 4 277 82
+1f410 10 1139 87
+1f420 2 92 13
+1f422 18 92 13
+1f43a 12 92 13
+1f44c 6 92 13
+1f452 8 92 13
+1f45a 6 85 79
+1f460 6 92 13
+1f466 6 156 137
+1f46c a 256 82
+1f476 6 94 13
+1f47c 8 95 13
+1f484 2 1139 87
+1f486 4 277 82
+1f48a 4 1139 87
+1f48e 2 95 13
+1f490 1a 95 13
+1f4aa 14 95 13
+1f4be 6 95 13
+1f4c4 8 95 13
+1f4cc 6 85 79
+1f4d2 6 95 13
+1f4d8 8 156 137
+1f4e0 4 96 13
+1f4e4 6 256 82
+1f4ea a 96 13
+1f4f4 8 1512 82
+1f4fc 2 96 13
+1f4fe e 1512 82
+1f50c 6 96 13
+1f512 6 302 82
+1f518 10 96 13
+1f528 6 96 13
+1f52e 8 96 13
+1f536 6 85 79
+1f53c 6 96 13
+1f542 6 256 82
+1f548 6 49 13
+1f54e 46 97 13
+FUNC 1f594 1ac 0 CpuSetTest_TenCpusWithRange_Test::TestBody
+1f594 8 99 13
+1f59c 4 99 13
+1f5a0 2 100 13
+1f5a2 2 99 13
+1f5a4 8 100 13
+1f5ac 2 99 13
+1f5ae 4 100 13
+1f5b2 2 82 52
+1f5b4 4 1139 87
+1f5b8 4 82 52
+1f5bc 4 277 82
+1f5c0 10 1139 87
+1f5d0 2 101 13
+1f5d2 18 101 13
+1f5ea 12 101 13
+1f5fc 6 101 13
+1f602 8 101 13
+1f60a 6 85 79
+1f610 6 101 13
+1f616 6 156 137
+1f61c a 256 82
+1f626 6 103 13
+1f62c 8 104 13
+1f634 2 1139 87
+1f636 4 277 82
+1f63a 4 1139 87
+1f63e 2 104 13
+1f640 1a 104 13
+1f65a 14 104 13
+1f66e 6 104 13
+1f674 8 104 13
+1f67c 6 85 79
+1f682 6 104 13
+1f688 8 156 137
+1f690 6 256 82
+1f696 a 105 13
+1f6a0 8 1512 82
+1f6a8 2 105 13
+1f6aa e 1512 82
+1f6b8 6 105 13
+1f6be 6 302 82
+1f6c4 10 105 13
+1f6d4 6 105 13
+1f6da 8 105 13
+1f6e2 6 85 79
+1f6e8 6 105 13
+1f6ee 6 256 82
+1f6f4 6 49 13
+1f6fa 46 106 13
+FUNC 1f740 1ac 0 CpuSetTest_MultiItems_Test::TestBody
+1f740 8 108 13
+1f748 4 108 13
+1f74c 2 109 13
+1f74e 2 108 13
+1f750 8 109 13
+1f758 2 108 13
+1f75a 4 109 13
+1f75e 2 82 52
+1f760 4 1139 87
+1f764 4 82 52
+1f768 4 277 82
+1f76c 10 1139 87
+1f77c 2 110 13
+1f77e 18 110 13
+1f796 12 110 13
+1f7a8 6 110 13
+1f7ae 8 110 13
+1f7b6 6 85 79
+1f7bc 6 110 13
+1f7c2 6 156 137
+1f7c8 a 256 82
+1f7d2 6 112 13
+1f7d8 8 113 13
+1f7e0 2 1139 87
+1f7e2 4 277 82
+1f7e6 4 1139 87
+1f7ea 2 113 13
+1f7ec 1a 113 13
+1f806 14 113 13
+1f81a 6 113 13
+1f820 8 113 13
+1f828 6 85 79
+1f82e 6 113 13
+1f834 8 156 137
+1f83c 6 256 82
+1f842 a 114 13
+1f84c 8 1512 82
+1f854 2 114 13
+1f856 e 1512 82
+1f864 6 114 13
+1f86a 6 302 82
+1f870 10 114 13
+1f880 6 114 13
+1f886 8 114 13
+1f88e 6 85 79
+1f894 6 114 13
+1f89a 6 256 82
+1f8a0 6 49 13
+1f8a6 46 115 13
+FUNC 1f8ec 3e8 0 CpuSetTest_IntersectWith_Test::TestBody
+1f8ec 8 117 13
+1f8f4 4 117 13
+1f8f8 2 118 13
+1f8fa 2 117 13
+1f8fc 8 118 13
+1f904 2 117 13
+1f906 4 118 13
+1f90a 4 82 52
+1f90e 4 1139 87
+1f912 6 82 52
+1f918 4 277 82
+1f91c e 1139 87
+1f92a 2 119 13
+1f92c 18 119 13
+1f944 12 119 13
+1f956 6 119 13
+1f95c 8 119 13
+1f964 6 85 79
+1f96a 6 119 13
+1f970 4 156 137
+1f974 6 256 82
+1f97a 6 120 13
+1f980 c 121 13
+1f98c 4 277 82
+1f990 4 1139 87
+1f994 2 121 13
+1f996 18 121 13
+1f9ae 12 121 13
+1f9c0 6 121 13
+1f9c6 8 121 13
+1f9ce 6 85 79
+1f9d4 6 121 13
+1f9da 6 156 137
+1f9e0 e 256 82
+1f9ee a 122 13
+1f9f8 4 1512 82
+1f9fc 2 122 13
+1f9fe e 1512 82
+1fa0c 6 122 13
+1fa12 6 302 82
+1fa18 10 122 13
+1fa28 6 122 13
+1fa2e 8 122 13
+1fa36 6 85 79
+1fa3c 8 122 13
+1fa44 6 256 82
+1fa4a e 124 13
+1fa58 4 82 52
+1fa5c 4 1139 87
+1fa60 4 82 52
+1fa64 4 277 82
+1fa68 2 125 13
+1fa6a 18 125 13
+1fa82 12 125 13
+1fa94 6 125 13
+1fa9a 8 125 13
+1faa2 6 85 79
+1faa8 6 125 13
+1faae 6 156 137
+1fab4 a 256 82
+1fabe 6 126 13
+1fac4 c 127 13
+1fad0 2 277 82
+1fad2 8 1139 87
+1fada 2 127 13
+1fadc 18 127 13
+1faf4 12 127 13
+1fb06 6 127 13
+1fb0c 8 127 13
+1fb14 6 85 79
+1fb1a 6 127 13
+1fb20 8 156 137
+1fb28 6 256 82
+1fb2e a 128 13
+1fb38 4 1512 82
+1fb3c 2 128 13
+1fb3e e 1512 82
+1fb4c 4 128 13
+1fb50 6 302 82
+1fb56 10 128 13
+1fb66 6 128 13
+1fb6c 8 128 13
+1fb74 6 85 79
+1fb7a 6 128 13
+1fb80 a 256 82
+1fb8a 2 114 12
+1fb8c 10 115 12
+1fb9c 2 114 12
+1fb9e 4 114 12
+1fba2 8 131 13
+1fbaa 4 1512 82
+1fbae 4 131 13
+1fbb2 e 1512 82
+1fbc0 6 131 13
+1fbc6 6 302 82
+1fbcc e 131 13
+1fbda 6 256 82
+1fbe0 a 132 13
+1fbea 4 1512 82
+1fbee 2 132 13
+1fbf0 e 1512 82
+1fbfe 4 132 13
+1fc02 6 302 82
+1fc08 10 132 13
+1fc18 6 132 13
+1fc1e 8 132 13
+1fc26 6 85 79
+1fc2c 6 132 13
+1fc32 6 256 82
+1fc38 c 49 13
+1fc44 90 133 13
+FUNC 1fcd4 1fc 0 CpuSetTest_SelfIntersection_Test::TestBody
+1fcd4 8 135 13
+1fcdc 4 135 13
+1fce0 2 136 13
+1fce2 2 135 13
+1fce4 8 136 13
+1fcec 2 135 13
+1fcee 4 136 13
+1fcf2 2 82 52
+1fcf4 2 1139 87
+1fcf6 6 82 52
+1fcfc 4 277 82
+1fd00 e 1139 87
+1fd0e 2 137 13
+1fd10 18 137 13
+1fd28 12 137 13
+1fd3a 6 137 13
+1fd40 8 137 13
+1fd48 6 85 79
+1fd4e 6 137 13
+1fd54 6 156 137
+1fd5a a 256 82
+1fd64 6 138 13
+1fd6a 8 139 13
+1fd72 2 1139 87
+1fd74 4 277 82
+1fd78 4 1139 87
+1fd7c 2 139 13
+1fd7e 1a 139 13
+1fd98 14 139 13
+1fdac 6 139 13
+1fdb2 8 139 13
+1fdba 6 85 79
+1fdc0 6 139 13
+1fdc6 8 156 137
+1fdce 6 256 82
+1fdd4 a 140 13
+1fdde e 1512 82
+1fdec 2 140 13
+1fdee e 1512 82
+1fdfc 6 140 13
+1fe02 6 302 82
+1fe08 e 140 13
+1fe16 6 256 82
+1fe1c a 143 13
+1fe26 2 1512 82
+1fe28 2 143 13
+1fe2a c 1512 82
+1fe36 6 143 13
+1fe3c 6 302 82
+1fe42 10 143 13
+1fe52 6 143 13
+1fe58 8 143 13
+1fe60 6 85 79
+1fe66 6 143 13
+1fe6c 6 256 82
+1fe72 4 49 13
+1fe76 6 256 82
+1fe7c 6 49 13
+1fe82 4e 144 13
+FUNC 1fed0 3ec 0 CpuSetTest_EmptyIntersection_Test::TestBody
+1fed0 8 146 13
+1fed8 4 146 13
+1fedc 2 147 13
+1fede 2 146 13
+1fee0 8 147 13
+1fee8 2 146 13
+1feea 4 147 13
+1feee 4 82 52
+1fef2 2 1139 87
+1fef4 6 82 52
+1fefa 4 277 82
+1fefe c 1139 87
+1ff0a 2 148 13
+1ff0c 18 148 13
+1ff24 12 148 13
+1ff36 6 148 13
+1ff3c 8 148 13
+1ff44 6 85 79
+1ff4a 6 148 13
+1ff50 4 156 137
+1ff54 6 256 82
+1ff5a 6 149 13
+1ff60 a 150 13
+1ff6a 2 1139 87
+1ff6c 4 277 82
+1ff70 4 1139 87
+1ff74 2 150 13
+1ff76 18 150 13
+1ff8e 12 150 13
+1ffa0 6 150 13
+1ffa6 8 150 13
+1ffae 6 85 79
+1ffb4 6 150 13
+1ffba 6 156 137
+1ffc0 e 256 82
+1ffce a 151 13
+1ffd8 6 1512 82
+1ffde 2 151 13
+1ffe0 10 1512 82
+1fff0 8 151 13
+1fff8 6 302 82
+1fffe 10 151 13
+2000e 6 151 13
+20014 8 151 13
+2001c 6 85 79
+20022 8 151 13
+2002a 6 256 82
+20030 e 153 13
+2003e 4 82 52
+20042 2 1139 87
+20044 4 82 52
+20048 4 277 82
+2004c 2 1139 87
+2004e 2 154 13
+20050 18 154 13
+20068 12 154 13
+2007a 6 154 13
+20080 8 154 13
+20088 6 85 79
+2008e 6 154 13
+20094 6 156 137
+2009a a 256 82
+200a4 6 155 13
+200aa a 156 13
+200b4 6 1139 87
+200ba 6 277 82
+200c0 2 156 13
+200c2 18 156 13
+200da 12 156 13
+200ec 6 156 13
+200f2 8 156 13
+200fa 6 85 79
+20100 6 156 13
+20106 8 156 137
+2010e 6 256 82
+20114 a 157 13
+2011e 2 1512 82
+20120 2 157 13
+20122 e 1512 82
+20130 4 157 13
+20134 6 302 82
+2013a 10 157 13
+2014a 6 157 13
+20150 8 157 13
+20158 6 85 79
+2015e 6 157 13
+20164 a 256 82
+2016e 2 114 12
+20170 12 115 12
+20182 2 114 12
+20184 4 114 12
+20188 8 160 13
+20190 4 1552 82
+20194 4 160 13
+20198 e 1552 82
+201a6 8 160 13
+201ae 6 302 82
+201b4 e 160 13
+201c2 6 256 82
+201c8 a 162 13
+201d2 4 1512 82
+201d6 2 162 13
+201d8 e 1512 82
+201e6 6 162 13
+201ec 6 302 82
+201f2 10 162 13
+20202 6 162 13
+20208 8 162 13
+20210 6 85 79
+20216 6 162 13
+2021c 6 256 82
+20222 c 49 13
+2022e 8e 163 13
+FUNC 202bc 18 0 DirectoryReaderTest_CompareResults_Test::~DirectoryReaderTest_CompareResults_Test
+202bc 2 47 15
+202be 16 47 15
+FUNC 202d4 12 0 DirectoryReaderTest_CompareResults_Test::~DirectoryReaderTest_CompareResults_Test
+202d4 2 47 15
+202d6 6 47 15
+202dc 6 47 15
+202e2 4 47 15
+FUNC 202e8 20 0 testing::internal::TestFactoryImpl<DirectoryReaderTest_CompareResults_Test>::CreateTest
+202e8 2 486 85
+202ea 8 486 85
+202f2 6 47 15
+202f8 2 486 85
+202fa 6 47 15
+20300 8 486 85
+FUNC 20308 28 0 std::priv::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::priv::_Identity<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::priv::_SetTraitsT<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_M_create_node
+20308 2 315 141
+2030a 2 306 106
+2030c 2 315 141
+2030e 6 306 106
+20314 6 307 106
+2031a 4 119 108
+2031e 6 119 108
+20324 2 321 141
+20326 2 324 141
+20328 2 321 141
+2032a 2 322 141
+2032c 4 324 141
+FUNC 20330 98 0 std::priv::__put_num<char, std::char_traits<char>, long unsigned int>
+20330 4 194 126
+20334 4 194 126
+20338 a 181 127
+20342 2 199 126
+20344 10 211 126
+20354 2 202 126
+20356 2 145 115
+20358 4 202 126
+2035c 2 145 115
+2035e 2 202 126
+20360 6 145 115
+20366 8 351 122
+2036e 6 351 122
+20374 2 202 126
+20376 2 351 122
+20378 c 202 126
+20384 18 57 128
+2039c 16 72 125
+203b2 6 202 126
+203b8 4 210 126
+203bc 6 212 126
+203c2 6 213 126
+FUNC 203c8 28 0 std::priv::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::priv::_Identity<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::priv::_SetTraitsT<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_M_erase
+203c8 6 655 140
+203ce 2 657 140
+203d0 8 658 140
+203d8 4 156 137
+203dc 2 659 140
+203de 4 156 137
+203e2 c 161 106
+203ee 2 664 140
+FUNC 203f0 34 0 std::operator< <char, std::char_traits<char>, std::allocator<char> >
+203f0 6 351 139
+203f6 2 1073 136
+203f8 2 1074 136
+203fa 2 1073 136
+203fc 2 1074 136
+203fe 10 226 145
+2040e 2 1076 136
+20410 4 1076 136
+20414 8 1076 136
+2041c 4 1076 136
+20420 4 355 139
+FUNC 20424 2c 0 std::priv::_Rb_global<bool>::_Rotate_left
+20424 2 62 140
+20426 4 63 140
+2042a 4 64 140
+2042e 2 65 140
+20430 4 66 140
+20434 6 68 140
+2043a 4 69 140
+2043e 6 70 140
+20444 4 71 140
+20448 2 73 140
+2044a 2 74 140
+2044c 4 75 140
+FUNC 20450 2c 0 std::priv::_Rb_global<bool>::_Rotate_right
+20450 2 81 140
+20452 4 82 140
+20456 4 83 140
+2045a 2 84 140
+2045c 4 85 140
+20460 6 87 140
+20466 4 88 140
+2046a 6 89 140
+20470 4 90 140
+20474 2 92 140
+20476 2 93 140
+20478 4 94 140
+FUNC 2047c 9e 0 std::priv::_Rb_global<bool>::_Rebalance
+2047c 4 98 140
+20480 4 100 140
+20484 4 98 140
+20488 2 133 140
+2048a 4 100 140
+2048e 6 101 140
+20494 8 139 140
+2049c 8 101 140
+204a4 8 102 140
+204ac 2 103 140
+204ae 2 104 140
+204b0 4 104 140
+204b4 6 111 140
+204ba a 113 140
+204c4 2 115 140
+204c6 2 117 140
+204c8 2 115 140
+204ca 8 116 140
+204d2 a 117 140
+204dc 2 122 140
+204de 4 122 140
+204e2 2 123 140
+204e4 2 124 140
+204e6 6 125 140
+204ec 6 126 140
+204f2 6 129 140
+204f8 a 131 140
+20502 2 133 140
+20504 2 135 140
+20506 2 133 140
+20508 8 134 140
+20510 a 135 140
+FUNC 2051a 6e 0 std::priv::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::priv::_Identity<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::priv::_SetTraitsT<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_M_insert
+2051a 2 358 140
+2051c 2 350 140
+2051e 8 350 140
+20526 2 358 140
+20528 8 359 140
+20530 2 360 140
+20532 2 361 140
+20534 4 362 140
+20538 4 364 140
+2053c 4 364 140
+20540 a 79 111
+2054a 2 364 140
+2054c 6 367 140
+20552 2 368 140
+20554 2 369 140
+20556 2 367 140
+20558 4 369 140
+2055c 4 370 140
+20560 6 373 140
+20566 2 374 140
+20568 2 375 140
+2056a 2 373 140
+2056c 4 375 140
+20570 2 376 140
+20572 2 379 140
+20574 2 378 140
+20576 6 379 140
+2057c 2 380 140
+2057e 2 382 140
+20580 4 380 140
+20584 2 142 141
+20586 2 382 140
+FUNC 20588 70c 0 DirectoryReaderTest_CompareResults_Test::TestBody
+20588 8 47 15
+20590 2 263 141
+20592 8 47 15
+2059a 2 250 141
+2059c 2 47 15
+2059e 8 250 141
+205a6 2 47 15
+205a8 8 250 141
+205b0 a 481 106
+205ba 4 50 15
+205be 2 263 141
+205c0 2 50 15
+205c2 2 265 141
+205c4 2 391 141
+205c6 2 266 141
+205c8 2 267 141
+205ca 4 50 15
+205ce 6 51 15
+205d4 2 277 82
+205d6 2 1139 87
+205d8 2 51 15
+205da 6 277 82
+205e0 2 51 15
+205e2 1e 51 15
+20600 c 51 15
+2060c 4 51 15
+20610 a 51 15
+2061a 6 51 15
+20620 8 51 15
+20628 6 85 79
+2062e 6 51 15
+20634 4 156 137
+20638 6 256 82
+2063e 4 55 15
+20642 4 142 141
+20646 c 54 15
+20652 c 55 15
+2065e 2 408 140
+20660 2 406 140
+20662 2 407 140
+20664 2 409 140
+20666 a 79 111
+20670 2 412 140
+20672 4 412 140
+20676 2 412 140
+20678 6 47 15
+2067e 2 409 140
+20680 4 142 141
+20684 2 415 140
+20686 6 416 140
+2068c a 417 140
+20696 4 279 140
+2069a 8 279 140
+206a2 4 280 140
+206a6 4 281 140
+206aa 8 99 141
+206b2 2 285 140
+206b4 6 286 140
+206ba 6 288 140
+206c0 4 187 141
+206c4 4 356 141
+206c8 8 79 111
+206d0 2 421 140
+206d2 12 422 140
+206e4 8 156 137
+206ec 6 57 15
+206f2 12 59 15
+20704 2 60 15
+20706 2 1621 82
+20708 4 59 15
+2070c 4 60 15
+20710 2 1621 82
+20712 8 1621 82
+2071a 1e 1621 82
+20738 4 60 15
+2073c 2 1144 87
+2073e 6 298 82
+20744 6 298 82
+2074a 16 60 15
+20760 6 256 82
+20766 12 51 14
+20778 2 63 15
+2077a 4 3016 97
+2077e 4 553 141
+20782 6 65 14
+20788 1c 3016 97
+207a4 4 3016 97
+207a8 8 3016 97
+207b0 4 68 14
+207b4 4 71 14
+207b8 4 73 14
+207bc 4 71 14
+207c0 8 73 14
+207c8 8 77 14
+207d0 2 549 141
+207d2 a 553 141
+207dc 6 552 141
+207e2 a 553 141
+207ec c 79 111
+207f8 6 156 137
+207fe 4 553 141
+20802 6 554 141
+20808 c 556 141
+20814 4 558 141
+20818 c 559 141
+20824 c 79 111
+20830 6 156 137
+20836 8 560 141
+2083e 8 200 141
+20846 2 1139 87
+20848 2 277 82
+2084a 2 1139 87
+2084c 2 67 15
+2084e 1a 67 15
+20868 14 67 15
+2087c 6 256 82
+20882 2 68 15
+20884 4 87 14
+20888 4 68 15
+2088c 6 87 14
+20892 4 93 14
+20896 2 94 14
+20898 2 93 14
+2089a 4 94 14
+2089e 4 93 14
+208a2 6 94 14
+208a8 8 77 14
+208b0 2 549 141
+208b2 e 553 141
+208c0 6 552 141
+208c6 a 553 141
+208d0 c 79 111
+208dc 6 156 137
+208e2 4 553 141
+208e6 6 554 141
+208ec c 556 141
+208f8 4 558 141
+208fc 10 559 141
+2090c c 79 111
+20918 6 156 137
+2091e 8 560 141
+20926 8 200 141
+2092e 2 1139 87
+20930 2 277 82
+20932 2 1139 87
+20934 2 72 15
+20936 1a 72 15
+20950 14 72 15
+20964 2 549 141
+20966 2 256 82
+20968 4 553 141
+2096c 8 256 82
+20974 6 553 141
+2097a 6 552 141
+20980 a 553 141
+2098a c 79 111
+20996 6 156 137
+2099c 4 553 141
+209a0 6 554 141
+209a6 c 556 141
+209b2 4 558 141
+209b6 10 559 141
+209c6 c 79 111
+209d2 6 156 137
+209d8 8 560 141
+209e0 8 200 141
+209e8 2 1139 87
+209ea 2 277 82
+209ec 2 1139 87
+209ee 2 73 15
+209f0 1a 73 15
+20a0a 14 73 15
+20a1e 2 549 141
+20a20 2 256 82
+20a22 4 553 141
+20a26 8 256 82
+20a2e 6 553 141
+20a34 6 552 141
+20a3a a 553 141
+20a44 c 79 111
+20a50 6 156 137
+20a56 4 553 141
+20a5a 6 554 141
+20a60 c 556 141
+20a6c 4 558 141
+20a70 10 559 141
+20a80 c 79 111
+20a8c 6 156 137
+20a92 8 560 141
+20a9a 8 200 141
+20aa2 4 1139 87
+20aa6 2 277 82
+20aa8 4 1139 87
+20aac 2 74 15
+20aae 1a 74 15
+20ac8 16 74 15
+20ade 6 74 15
+20ae4 8 74 15
+20aec 6 85 79
+20af2 6 74 15
+20af8 8 156 137
+20b00 8 256 82
+20b08 6 1481 82
+20b0e 8 1482 82
+20b16 4 884 80
+20b1a 4 254 126
+20b1e 8 884 80
+20b26 4 75 132
+20b2a 4 254 126
+20b2e 2 75 132
+20b30 4 254 126
+20b34 8 75 132
+20b3c 6 886 80
+20b42 8 884 80
+20b4a 4 254 126
+20b4e 4 75 132
+20b52 4 254 126
+20b56 8 75 132
+20b5e 6 886 80
+20b64 18 1471 82
+20b7c c 156 137
+20b88 4 76 15
+20b8c 2 1144 87
+20b8e 6 298 82
+20b94 4 298 82
+20b98 12 76 15
+20baa 8 76 15
+20bb2 8 76 15
+20bba 6 85 79
+20bc0 6 76 15
+20bc6 e 256 82
+20bd4 6 77 15
+20bda 4 531 141
+20bde 8 532 141
+20be6 ae 78 15
+FUNC 20c94 18 0 LineReaderTest_TooLong_Test::~LineReaderTest_TooLong_Test
+20c94 2 158 17
+20c96 16 158 17
+FUNC 20cac 12 0 LineReaderTest_TooLong_Test::~LineReaderTest_TooLong_Test
+20cac 2 158 17
+20cae 6 158 17
+20cb4 6 158 17
+20cba 4 158 17
+FUNC 20cc0 18 0 LineReaderTest_MaxLength_Test::~LineReaderTest_MaxLength_Test
+20cc0 2 143 17
+20cc2 16 143 17
+FUNC 20cd8 12 0 LineReaderTest_MaxLength_Test::~LineReaderTest_MaxLength_Test
+20cd8 2 143 17
+20cda 6 143 17
+20ce0 6 143 17
+20ce6 4 143 17
+FUNC 20cec 18 0 LineReaderTest_TwoLines_Test::~LineReaderTest_TwoLines_Test
+20cec 2 121 17
+20cee 16 121 17
+FUNC 20d04 12 0 LineReaderTest_TwoLines_Test::~LineReaderTest_TwoLines_Test
+20d04 2 121 17
+20d06 6 121 17
+20d0c 6 121 17
+20d12 4 121 17
+FUNC 20d18 18 0 LineReaderTest_TwoLinesTerminated_Test::~LineReaderTest_TwoLinesTerminated_Test
+20d18 2 99 17
+20d1a 16 99 17
+FUNC 20d30 12 0 LineReaderTest_TwoLinesTerminated_Test::~LineReaderTest_TwoLinesTerminated_Test
+20d30 2 99 17
+20d32 6 99 17
+20d38 6 99 17
+20d3e 4 99 17
+FUNC 20d44 18 0 LineReaderTest_OneLine_Test::~LineReaderTest_OneLine_Test
+20d44 2 83 17
+20d46 16 83 17
+FUNC 20d5c 12 0 LineReaderTest_OneLine_Test::~LineReaderTest_OneLine_Test
+20d5c 2 83 17
+20d5e 6 83 17
+20d64 6 83 17
+20d6a 4 83 17
+FUNC 20d70 18 0 LineReaderTest_OneLineTerminated_Test::~LineReaderTest_OneLineTerminated_Test
+20d70 2 67 17
+20d72 16 67 17
+FUNC 20d88 12 0 LineReaderTest_OneLineTerminated_Test::~LineReaderTest_OneLineTerminated_Test
+20d88 2 67 17
+20d8a 6 67 17
+20d90 6 67 17
+20d96 4 67 17
+FUNC 20d9c 18 0 LineReaderTest_EmptyFile_Test::~LineReaderTest_EmptyFile_Test
+20d9c 2 57 17
+20d9e 16 57 17
+FUNC 20db4 12 0 LineReaderTest_EmptyFile_Test::~LineReaderTest_EmptyFile_Test
+20db4 2 57 17
+20db6 6 57 17
+20dbc 6 57 17
+20dc2 4 57 17
+FUNC 20dc8 20 0 testing::internal::TestFactoryImpl<LineReaderTest_TooLong_Test>::CreateTest
+20dc8 2 486 85
+20dca 8 486 85
+20dd2 6 158 17
+20dd8 2 486 85
+20dda 6 158 17
+20de0 8 486 85
+FUNC 20de8 20 0 testing::internal::TestFactoryImpl<LineReaderTest_TwoLinesTerminated_Test>::CreateTest
+20de8 2 486 85
+20dea 8 486 85
+20df2 6 99 17
+20df8 2 486 85
+20dfa 6 99 17
+20e00 8 486 85
+FUNC 20e08 20 0 testing::internal::TestFactoryImpl<LineReaderTest_OneLine_Test>::CreateTest
+20e08 2 486 85
+20e0a 8 486 85
+20e12 6 83 17
+20e18 2 486 85
+20e1a 6 83 17
+20e20 8 486 85
+FUNC 20e28 20 0 testing::internal::TestFactoryImpl<LineReaderTest_OneLineTerminated_Test>::CreateTest
+20e28 2 486 85
+20e2a 8 486 85
+20e32 6 67 17
+20e38 2 486 85
+20e3a 6 67 17
+20e40 8 486 85
+FUNC 20e48 20 0 testing::internal::TestFactoryImpl<LineReaderTest_EmptyFile_Test>::CreateTest
+20e48 2 486 85
+20e4a 8 486 85
+20e52 6 57 17
+20e58 2 486 85
+20e5a 6 57 17
+20e60 8 486 85
+FUNC 20e68 20 0 testing::internal::TestFactoryImpl<LineReaderTest_MaxLength_Test>::CreateTest
+20e68 2 486 85
+20e6a 8 486 85
+20e72 6 143 17
+20e78 2 486 85
+20e7a 6 143 17
+20e80 8 486 85
+FUNC 20e88 20 0 testing::internal::TestFactoryImpl<LineReaderTest_TwoLines_Test>::CreateTest
+20e88 2 486 85
+20e8a 8 486 85
+20e92 6 121 17
+20e98 2 486 85
+20e9a 6 121 17
+20ea0 8 486 85
+FUNC 20ea8 9e 0 google_breakpad::LineReader::GetNextLine
+20ea8 2 64 16
+20eaa 4 103 16
+20eae 6 64 16
+20eb4 4 66 16
+20eb8 6 66 16
+20ebe 6 64 16
+20ec4 4 69 16
+20ec8 8 70 16
+20ed0 4 71 16
+20ed4 2 73 16
+20ed6 2 71 16
+20ed8 2 74 16
+20eda 2 72 16
+20edc 2 73 16
+20ede 2 74 16
+20ee0 4 70 16
+20ee4 4 69 16
+20ee8 6 78 16
+20eee 4 86 16
+20ef2 6 90 16
+20ef8 2 91 16
+20efa 2 92 16
+20efc 2 93 16
+20efe 6 92 16
+20f04 2 93 16
+20f06 2 94 16
+20f08 2 98 16
+20f0a 2 3104 97
+20f0c 2 98 16
+20f0e 4 99 16
+20f12 12 3104 97
+20f24 4 3104 97
+20f28 6 3104 97
+20f2e 4 100 16
+20f32 4 105 16
+20f36 4 103 16
+20f3a 6 105 16
+20f40 2 67 16
+20f42 4 111 16
+FUNC 20f46 12 0 google_breakpad::LineReader::PopLine
+20f46 4 113 16
+20f4a 2 117 16
+20f4c 2 118 16
+20f4e 2 117 16
+20f50 8 118 16
+FUNC 20f58 42 0 google_breakpad::AutoTestFile::WriteText
+20f58 8 108 52
+20f60 10 109 52
+20f70 4 109 52
+20f74 6 109 52
+20f7a 4 110 52
+20f7e 6 111 52
+20f84 6 112 52
+20f8a 2 113 52
+20f8c 4 116 52
+20f90 4 117 52
+20f94 6 116 52
+FUNC 20f9c 2c 0 ScopedTestFile::ScopedTestFile
+20f9c 2 46 17
+20f9e 4 46 17
+20fa2 8 60 52
+20faa 6 61 52
+20fb0 6 62 52
+20fb6 2 62 52
+20fb8 2 62 52
+20fba 6 62 52
+20fc0 8 48 17
+FUNC 20fc8 148 0 LineReaderTest_EmptyFile_Test::TestBody
+20fc8 a 57 17
+20fd2 4 57 17
+20fd6 2 58 17
+20fd8 2 57 17
+20fda 6 58 17
+20fe0 2 57 17
+20fe2 4 58 17
+20fe6 2 82 52
+20fe8 4 1139 87
+20fec 2 82 52
+20fee 2 277 82
+20ff0 2 82 52
+20ff2 2 277 82
+20ff4 a 1139 87
+20ffe 2 59 17
+21000 16 59 17
+21016 a 59 17
+21020 4 59 17
+21024 a 59 17
+2102e 6 59 17
+21034 8 59 17
+2103c 6 85 79
+21042 6 59 17
+21048 4 156 137
+2104c 6 256 82
+21052 2 49 16
+21054 6 64 17
+2105a a 49 16
+21064 a 64 17
+2106e 2 277 82
+21070 4 1139 87
+21074 2 64 17
+21076 1a 64 17
+21090 c 64 17
+2109c 2 64 17
+2109e a 64 17
+210a8 6 64 17
+210ae 8 64 17
+210b6 6 85 79
+210bc 6 64 17
+210c2 6 156 137
+210c8 6 256 82
+210ce 6 44 17
+210d4 3c 65 17
+FUNC 21110 16c 0 LineReaderTest_TooLong_Test::TestBody
+21110 a 158 17
+2111a 4 158 17
+2111e 2 161 17
+21120 2 158 17
+21122 8 161 17
+2112a 4 158 17
+2112e 4 161 17
+21132 c 66 52
+2113e 6 67 52
+21144 c 68 52
+21150 2 82 52
+21152 4 1139 87
+21156 2 82 52
+21158 2 277 82
+2115a 2 82 52
+2115c 2 277 82
+2115e a 1139 87
+21168 2 163 17
+2116a 16 163 17
+21180 a 163 17
+2118a 4 163 17
+2118e a 163 17
+21198 6 163 17
+2119e 8 163 17
+211a6 6 85 79
+211ac 6 163 17
+211b2 4 156 137
+211b6 6 256 82
+211bc 2 49 16
+211be 6 168 17
+211c4 a 49 16
+211ce a 168 17
+211d8 2 277 82
+211da 4 1139 87
+211de 2 168 17
+211e0 1a 168 17
+211fa c 168 17
+21206 2 168 17
+21208 a 168 17
+21212 6 168 17
+21218 8 168 17
+21220 6 85 79
+21226 6 168 17
+2122c 6 156 137
+21232 6 256 82
+21238 6 44 17
+2123e 3e 169 17
+FUNC 2127c a0 0 testing::internal::CmpHelperEQFailure<unsigned int, unsigned int>
+2127c e 1464 82
+2128a 2 1464 82
+2128c 2 884 80
+2128e 6 1464 82
+21294 4 254 126
+21298 2 1464 82
+2129a 4 884 80
+2129e 4 1464 82
+212a2 2 75 132
+212a4 4 884 80
+212a8 4 254 126
+212ac 2 75 132
+212ae 4 254 126
+212b2 8 75 132
+212ba 6 886 80
+212c0 8 884 80
+212c8 6 254 126
+212ce 4 75 132
+212d2 4 254 126
+212d6 8 75 132
+212de 6 886 80
+212e4 14 1471 82
+212f8 c 156 137
+21304 18 1472 82
+FUNC 2131c a0 0 testing::internal::CmpHelperEQFailure<char, char>
+2131c e 1464 82
+2132a 2 1464 82
+2132c 2 884 80
+2132e 6 1464 82
+21334 4 394 80
+21338 2 1464 82
+2133a 4 884 80
+2133e 4 1464 82
+21342 2 75 132
+21344 4 884 80
+21348 4 394 80
+2134c 2 75 132
+2134e 4 394 80
+21352 8 75 132
+2135a 6 886 80
+21360 8 884 80
+21368 6 394 80
+2136e 4 75 132
+21372 4 394 80
+21376 8 75 132
+2137e 6 886 80
+21384 14 1471 82
+21398 c 156 137
+213a4 18 1472 82
+FUNC 213bc 20 0 testing::internal::CmpHelperEQ<char, char>
+213bc 2 1476 82
+213be 2 1476 82
+213c0 4 1481 82
+213c4 2 1476 82
+213c6 4 1481 82
+213ca 6 1482 82
+213d0 6 1487 82
+213d6 6 1488 82
+FUNC 213dc 288 0 LineReaderTest_OneLineTerminated_Test::TestBody
+213dc a 67 17
+213e6 4 67 17
+213ea 2 68 17
+213ec 2 67 17
+213ee 8 68 17
+213f6 2 67 17
+213f8 4 68 17
+213fc 4 82 52
+21400 4 1139 87
+21404 2 82 52
+21406 2 277 82
+21408 4 82 52
+2140c 2 277 82
+2140e a 1139 87
+21418 2 69 17
+2141a 16 69 17
+21430 12 69 17
+21442 6 256 82
+21448 4 74 17
+2144c 4 49 16
+21450 a 74 17
+2145a a 49 16
+21464 4 74 17
+21468 4 1139 87
+2146c 2 277 82
+2146e 2 74 17
+21470 18 74 17
+21488 12 74 17
+2149a 6 256 82
+214a0 2 75 17
+214a2 4 1512 82
+214a6 2 75 17
+214a8 10 1512 82
+214b8 4 75 17
+214bc 6 302 82
+214c2 10 75 17
+214d2 6 256 82
+214d8 2 76 17
+214da 2 1512 82
+214dc 2 76 17
+214de 14 1512 82
+214f2 4 76 17
+214f6 6 302 82
+214fc 10 76 17
+2150c 6 256 82
+21512 4 77 17
+21516 4 1552 82
+2151a 6 77 17
+21520 e 1552 82
+2152e 4 77 17
+21532 6 302 82
+21538 12 77 17
+2154a 6 77 17
+21550 8 77 17
+21558 6 85 79
+2155e 8 77 17
+21566 6 256 82
+2156c a 78 17
+21576 10 80 17
+21586 2 277 82
+21588 4 1139 87
+2158c 2 80 17
+2158e 18 80 17
+215a6 14 80 17
+215ba 6 80 17
+215c0 8 80 17
+215c8 6 85 79
+215ce 6 80 17
+215d4 6 156 137
+215da 6 256 82
+215e0 4 44 17
+215e4 6 256 82
+215ea 6 44 17
+215f0 74 81 17
+FUNC 21664 288 0 LineReaderTest_OneLine_Test::TestBody
+21664 a 83 17
+2166e 4 83 17
+21672 2 84 17
+21674 2 83 17
+21676 8 84 17
+2167e 2 83 17
+21680 4 84 17
+21684 4 82 52
+21688 4 1139 87
+2168c 2 82 52
+2168e 2 277 82
+21690 4 82 52
+21694 2 277 82
+21696 a 1139 87
+216a0 2 85 17
+216a2 16 85 17
+216b8 12 85 17
+216ca 6 256 82
+216d0 4 90 17
+216d4 4 49 16
+216d8 a 90 17
+216e2 a 49 16
+216ec 4 90 17
+216f0 4 1139 87
+216f4 2 277 82
+216f6 2 90 17
+216f8 18 90 17
+21710 12 90 17
+21722 6 256 82
+21728 2 91 17
+2172a 4 1512 82
+2172e 2 91 17
+21730 10 1512 82
+21740 4 91 17
+21744 6 302 82
+2174a 10 91 17
+2175a 6 256 82
+21760 2 92 17
+21762 2 1512 82
+21764 2 92 17
+21766 14 1512 82
+2177a 4 92 17
+2177e 6 302 82
+21784 10 92 17
+21794 6 256 82
+2179a 4 93 17
+2179e 4 1552 82
+217a2 6 93 17
+217a8 e 1552 82
+217b6 4 93 17
+217ba 6 302 82
+217c0 12 93 17
+217d2 6 93 17
+217d8 8 93 17
+217e0 6 85 79
+217e6 8 93 17
+217ee 6 256 82
+217f4 a 94 17
+217fe 10 96 17
+2180e 2 277 82
+21810 4 1139 87
+21814 2 96 17
+21816 18 96 17
+2182e 14 96 17
+21842 6 96 17
+21848 8 96 17
+21850 6 85 79
+21856 6 96 17
+2185c 6 156 137
+21862 6 256 82
+21868 4 44 17
+2186c 6 256 82
+21872 6 44 17
+21878 74 97 17
+FUNC 218ec 3c4 0 LineReaderTest_TwoLinesTerminated_Test::TestBody
+218ec a 99 17
+218f6 4 99 17
+218fa 2 100 17
+218fc 2 99 17
+218fe 8 100 17
+21906 2 99 17
+21908 4 100 17
+2190c 4 82 52
+21910 4 1139 87
+21914 2 82 52
+21916 2 277 82
+21918 4 82 52
+2191c 2 277 82
+2191e a 1139 87
+21928 2 101 17
+2192a 16 101 17
+21940 12 101 17
+21952 6 256 82
+21958 4 106 17
+2195c 4 49 16
+21960 a 106 17
+2196a a 49 16
+21974 4 106 17
+21978 4 1139 87
+2197c 2 277 82
+2197e 2 106 17
+21980 18 106 17
+21998 12 106 17
+219aa 6 256 82
+219b0 4 107 17
+219b4 1c 1512 82
+219d0 4 107 17
+219d4 6 302 82
+219da 10 107 17
+219ea 6 256 82
+219f0 4 108 17
+219f4 1a 1512 82
+21a0e 4 108 17
+21a12 6 302 82
+21a18 10 108 17
+21a28 6 256 82
+21a2e a 1552 82
+21a38 4 109 17
+21a3c 2 1552 82
+21a3e 6 109 17
+21a44 e 1552 82
+21a52 4 109 17
+21a56 6 302 82
+21a5c 10 109 17
+21a6c 6 256 82
+21a72 a 110 17
+21a7c a 112 17
+21a86 4 1139 87
+21a8a 2 277 82
+21a8c 2 112 17
+21a8e 18 112 17
+21aa6 14 112 17
+21aba 6 112 17
+21ac0 8 112 17
+21ac8 6 85 79
+21ace 6 112 17
+21ad4 4 156 137
+21ad8 6 256 82
+21ade 2 113 17
+21ae0 2 1512 82
+21ae2 2 113 17
+21ae4 e 1512 82
+21af2 4 113 17
+21af6 6 302 82
+21afc 10 113 17
+21b0c 6 256 82
+21b12 2 114 17
+21b14 2 1512 82
+21b16 2 114 17
+21b18 12 1512 82
+21b2a 4 114 17
+21b2e 6 302 82
+21b34 10 114 17
+21b44 6 256 82
+21b4a a 115 17
+21b54 e 1552 82
+21b62 4 115 17
+21b66 6 302 82
+21b6c 12 115 17
+21b7e 6 115 17
+21b84 8 115 17
+21b8c 6 85 79
+21b92 8 115 17
+21b9a 6 256 82
+21ba0 a 116 17
+21baa 10 118 17
+21bba 2 277 82
+21bbc 4 1139 87
+21bc0 2 118 17
+21bc2 18 118 17
+21bda a 118 17
+21be4 2 118 17
+21be6 a 118 17
+21bf0 6 118 17
+21bf6 8 118 17
+21bfe 6 85 79
+21c04 6 118 17
+21c0a 6 156 137
+21c10 6 256 82
+21c16 6 44 17
+21c1c 94 119 17
+FUNC 21cb0 3c4 0 LineReaderTest_TwoLines_Test::TestBody
+21cb0 a 121 17
+21cba 4 121 17
+21cbe 2 122 17
+21cc0 2 121 17
+21cc2 8 122 17
+21cca 2 121 17
+21ccc 4 122 17
+21cd0 4 82 52
+21cd4 4 1139 87
+21cd8 2 82 52
+21cda 2 277 82
+21cdc 4 82 52
+21ce0 2 277 82
+21ce2 a 1139 87
+21cec 2 123 17
+21cee 16 123 17
+21d04 12 123 17
+21d16 6 256 82
+21d1c 4 128 17
+21d20 4 49 16
+21d24 a 128 17
+21d2e a 49 16
+21d38 4 128 17
+21d3c 4 1139 87
+21d40 2 277 82
+21d42 2 128 17
+21d44 18 128 17
+21d5c 12 128 17
+21d6e 6 256 82
+21d74 4 129 17
+21d78 1c 1512 82
+21d94 4 129 17
+21d98 6 302 82
+21d9e 10 129 17
+21dae 6 256 82
+21db4 4 130 17
+21db8 1a 1512 82
+21dd2 4 130 17
+21dd6 6 302 82
+21ddc 10 130 17
+21dec 6 256 82
+21df2 a 1552 82
+21dfc 4 131 17
+21e00 2 1552 82
+21e02 6 131 17
+21e08 e 1552 82
+21e16 4 131 17
+21e1a 6 302 82
+21e20 10 131 17
+21e30 6 256 82
+21e36 a 132 17
+21e40 a 134 17
+21e4a 4 1139 87
+21e4e 2 277 82
+21e50 2 134 17
+21e52 18 134 17
+21e6a 14 134 17
+21e7e 6 134 17
+21e84 8 134 17
+21e8c 6 85 79
+21e92 6 134 17
+21e98 4 156 137
+21e9c 6 256 82
+21ea2 2 135 17
+21ea4 2 1512 82
+21ea6 2 135 17
+21ea8 e 1512 82
+21eb6 4 135 17
+21eba 6 302 82
+21ec0 10 135 17
+21ed0 6 256 82
+21ed6 2 136 17
+21ed8 2 1512 82
+21eda 2 136 17
+21edc 12 1512 82
+21eee 4 136 17
+21ef2 6 302 82
+21ef8 10 136 17
+21f08 6 256 82
+21f0e a 137 17
+21f18 e 1552 82
+21f26 4 137 17
+21f2a 6 302 82
+21f30 12 137 17
+21f42 6 137 17
+21f48 8 137 17
+21f50 6 85 79
+21f56 8 137 17
+21f5e 6 256 82
+21f64 a 138 17
+21f6e 10 140 17
+21f7e 2 277 82
+21f80 4 1139 87
+21f84 2 140 17
+21f86 18 140 17
+21f9e a 140 17
+21fa8 2 140 17
+21faa a 140 17
+21fb4 6 140 17
+21fba 8 140 17
+21fc2 6 85 79
+21fc8 6 140 17
+21fce 6 156 137
+21fd4 6 256 82
+21fda 6 44 17
+21fe0 94 141 17
+FUNC 22074 268 0 LineReaderTest_MaxLength_Test::TestBody
+22074 a 143 17
+2207e 4 143 17
+22082 4 145 17
+22086 2 143 17
+22088 8 145 17
+22090 4 143 17
+22094 4 145 17
+22098 e 66 52
+220a6 a 67 52
+220b0 c 68 52
+220bc 4 82 52
+220c0 4 1139 87
+220c4 2 82 52
+220c6 2 277 82
+220c8 2 82 52
+220ca 2 277 82
+220cc a 1139 87
+220d6 2 147 17
+220d8 16 147 17
+220ee 12 147 17
+22100 6 256 82
+22106 4 49 16
+2210a 4 152 17
+2210e 2 49 16
+22110 8 152 17
+22118 8 49 16
+22120 6 152 17
+22126 4 1139 87
+2212a 2 277 82
+2212c 2 152 17
+2212e 18 152 17
+22146 12 152 17
+22158 4 153 17
+2215c 6 256 82
+22162 6 1512 82
+22168 2 153 17
+2216a e 1512 82
+22178 4 153 17
+2217c 6 302 82
+22182 10 153 17
+22192 6 256 82
+22198 12 154 17
+221aa 2 277 82
+221ac 4 1139 87
+221b0 2 154 17
+221b2 18 154 17
+221ca 14 154 17
+221de 6 154 17
+221e4 8 154 17
+221ec 6 85 79
+221f2 6 154 17
+221f8 8 156 137
+22200 6 256 82
+22206 8 155 17
+2220e 2 1552 82
+22210 2 155 17
+22212 2 1552 82
+22214 4 155 17
+22218 e 1552 82
+22226 4 155 17
+2222a 6 302 82
+22230 12 155 17
+22242 6 155 17
+22248 8 155 17
+22250 6 85 79
+22256 6 155 17
+2225c 6 256 82
+22262 4 44 17
+22266 6 256 82
+2226c 6 44 17
+22272 6a 156 17
+FUNC 222dc 18 0 LinuxCoreDumperTest_VerifyDumpWithMultipleThreads_Test::~LinuxCoreDumperTest_VerifyDumpWithMultipleThreads_Test
+222dc 2 65 20
+222de 16 65 20
+FUNC 222f4 12 0 LinuxCoreDumperTest_VerifyDumpWithMultipleThreads_Test::~LinuxCoreDumperTest_VerifyDumpWithMultipleThreads_Test
+222f4 2 65 20
+222f6 6 65 20
+222fc 6 65 20
+22302 4 65 20
+FUNC 22308 18 0 LinuxCoreDumperTest_BuildProcPath_Test::~LinuxCoreDumperTest_BuildProcPath_Test
+22308 2 42 20
+2230a 16 42 20
+FUNC 22320 12 0 LinuxCoreDumperTest_BuildProcPath_Test::~LinuxCoreDumperTest_BuildProcPath_Test
+22320 2 42 20
+22322 6 42 20
+22328 6 42 20
+2232e 4 42 20
+FUNC 22334 20 0 testing::internal::TestFactoryImpl<LinuxCoreDumperTest_VerifyDumpWithMultipleThreads_Test>::CreateTest
+22334 2 486 85
+22336 8 486 85
+2233e 6 65 20
+22344 2 486 85
+22346 6 65 20
+2234c 8 486 85
+FUNC 22354 20 0 testing::internal::TestFactoryImpl<LinuxCoreDumperTest_BuildProcPath_Test>::CreateTest
+22354 2 486 85
+22356 8 486 85
+2235e 6 42 20
+22364 2 486 85
+22366 6 42 20
+2236c 8 486 85
+FUNC 22374 24 0 google_breakpad::LinuxCoreDumper::~LinuxCoreDumper
+22374 4 43 19
+22378 c 43 19
+22384 4 43 19
+22388 6 43 19
+2238e a 43 19
+FUNC 22398 3b8 0 LinuxCoreDumperTest_BuildProcPath_Test::TestBody
+22398 a 42 20
+223a2 6 42 20
+223a8 4 44 20
+223ac 2 42 20
+223ae 4 43 20
+223b2 2 44 20
+223b4 2 43 20
+223b6 22 44 20
+223d8 4 45 20
+223dc 2 47 20
+223de 4 45 20
+223e2 2 45 20
+223e4 a 45 20
+223ee e 47 20
+223fc 12 50 20
+2240e e 51 20
+2241c 2 277 82
+2241e 2 1139 87
+22420 4 277 82
+22424 2 51 20
+22426 16 51 20
+2243c c 51 20
+22448 4 51 20
+2244c a 51 20
+22456 6 51 20
+2245c 8 51 20
+22464 6 85 79
+2246a 6 51 20
+22470 6 156 137
+22476 a 256 82
+22480 16 52 20
+22496 2 1144 87
+22498 6 298 82
+2249e 4 298 82
+224a2 a 52 20
+224ac 4 52 20
+224b0 a 52 20
+224ba 6 52 20
+224c0 8 52 20
+224c8 6 85 79
+224ce 6 52 20
+224d4 6 256 82
+224da e 54 20
+224e8 2 1139 87
+224ea 6 54 20
+224f0 2 277 82
+224f2 2 1139 87
+224f4 2 54 20
+224f6 16 54 20
+2250c c 54 20
+22518 4 54 20
+2251c a 54 20
+22526 6 54 20
+2252c 8 54 20
+22534 6 85 79
+2253a 6 54 20
+22540 6 156 137
+22546 6 256 82
+2254c e 55 20
+2255a 2 1139 87
+2255c 6 55 20
+22562 2 277 82
+22564 2 1139 87
+22566 2 55 20
+22568 16 55 20
+2257e c 55 20
+2258a 4 55 20
+2258e a 55 20
+22598 6 55 20
+2259e 8 55 20
+225a6 6 85 79
+225ac 6 55 20
+225b2 6 156 137
+225b8 6 256 82
+225be c 56 20
+225ca 2 1139 87
+225cc 6 56 20
+225d2 2 277 82
+225d4 2 1139 87
+225d6 2 56 20
+225d8 16 56 20
+225ee c 56 20
+225fa 4 56 20
+225fe a 56 20
+22608 6 56 20
+2260e 8 56 20
+22616 6 85 79
+2261c 6 56 20
+22622 6 156 137
+22628 6 256 82
+2262e 6 59 20
+22634 2 61 20
+22636 4 59 20
+2263a e 60 20
+22648 8 62 20
+22650 4 61 20
+22654 a 62 20
+2265e 2 277 82
+22660 2 1139 87
+22662 2 62 20
+22664 18 62 20
+2267c a 62 20
+22686 2 62 20
+22688 a 62 20
+22692 6 62 20
+22698 8 62 20
+226a0 6 85 79
+226a6 6 62 20
+226ac 6 156 137
+226b2 6 256 82
+226b8 6 62 20
+226be 92 63 20
+FUNC 22750 70c 0 LinuxCoreDumperTest_VerifyDumpWithMultipleThreads_Test::TestBody
+22750 14 65 20
+22764 2 65 20
+22766 4 66 20
+2276a 2 65 20
+2276c 4 66 20
+22770 a 67 20
+2277a 12 69 20
+2278c 2 70 20
+2278e 2 75 20
+22790 6 73 20
+22796 4 75 20
+2279a 4 77 20
+2279e 4 75 20
+227a2 4 73 20
+227a6 c 77 20
+227b2 2 1139 87
+227b4 4 277 82
+227b8 4 1139 87
+227bc 2 77 20
+227be 20 77 20
+227de a 77 20
+227e8 2 77 20
+227ea c 77 20
+227f6 6 77 20
+227fc 8 77 20
+22804 6 85 79
+2280a 6 77 20
+22810 6 156 137
+22816 e 256 82
+22824 c 80 20
+22830 c 81 20
+2283c a 85 20
+22846 4 85 20
+2284a 14 87 20
+2285e 12 92 20
+22870 6 94 20
+22876 4 277 82
+2287a 2 1139 87
+2287c 2 94 20
+2287e 1c 94 20
+2289a c 94 20
+228a6 4 94 20
+228aa a 94 20
+228b4 6 94 20
+228ba 8 94 20
+228c2 6 85 79
+228c8 6 94 20
+228ce 6 156 137
+228d4 6 256 82
+228da 6 96 20
+228e0 2 1139 87
+228e2 2 256 82
+228e4 2 277 82
+228e6 2 1139 87
+228e8 2 96 20
+228ea 1e 96 20
+22908 c 96 20
+22914 4 96 20
+22918 a 96 20
+22922 6 96 20
+22928 8 96 20
+22930 6 85 79
+22936 6 96 20
+2293c 6 156 137
+22942 6 256 82
+22948 6 99 20
+2294e 2 1139 87
+22950 2 256 82
+22952 2 277 82
+22954 2 1139 87
+22956 2 99 20
+22958 1e 99 20
+22976 c 99 20
+22982 4 99 20
+22986 a 99 20
+22990 6 99 20
+22996 8 99 20
+2299e 6 85 79
+229a4 6 99 20
+229aa 6 156 137
+229b0 6 256 82
+229b6 6 100 20
+229bc 2 1139 87
+229be 2 256 82
+229c0 2 277 82
+229c2 2 1139 87
+229c4 2 100 20
+229c6 1e 100 20
+229e4 c 100 20
+229f0 4 100 20
+229f4 a 100 20
+229fe 6 100 20
+22a04 8 100 20
+22a0c 6 85 79
+22a12 6 100 20
+22a18 6 156 137
+22a1e 6 256 82
+22a24 a 104 20
+22a2e 2 256 82
+22a30 2 104 20
+22a32 2 1481 82
+22a34 8 1482 82
+22a3c 10 1487 82
+22a4c 6 104 20
+22a52 2 1144 87
+22a54 6 298 82
+22a5a 4 298 82
+22a5e a 104 20
+22a68 4 104 20
+22a6c a 104 20
+22a76 6 104 20
+22a7c 8 104 20
+22a84 6 85 79
+22a8a 6 104 20
+22a90 8 256 82
+22a98 4 1481 82
+22a9c 4 256 82
+22aa0 2 1481 82
+22aa2 2 105 20
+22aa4 2 1481 82
+22aa6 8 1482 82
+22aae 12 1487 82
+22ac0 6 105 20
+22ac6 4 1144 87
+22aca 6 298 82
+22ad0 4 298 82
+22ad4 14 105 20
+22ae8 6 105 20
+22aee 8 105 20
+22af6 6 85 79
+22afc 6 105 20
+22b02 6 256 82
+22b08 c 106 20
+22b14 2 1481 82
+22b16 4 106 20
+22b1a 2 1481 82
+22b1c 8 1482 82
+22b24 10 1487 82
+22b34 6 106 20
+22b3a 2 1144 87
+22b3c 6 298 82
+22b42 4 298 82
+22b46 14 106 20
+22b5a 6 106 20
+22b60 8 107 20
+22b68 6 85 79
+22b6e 6 106 20
+22b74 a 256 82
+22b7e 6 192 144
+22b84 4 1481 82
+22b88 2 192 144
+22b8a 2 1481 82
+22b8c 2 109 20
+22b8e 2 1481 82
+22b90 8 1482 82
+22b98 12 1487 82
+22baa 6 109 20
+22bb0 2 1144 87
+22bb2 6 298 82
+22bb8 4 298 82
+22bbc 12 109 20
+22bce 6 109 20
+22bd4 8 109 20
+22bdc 6 85 79
+22be2 6 109 20
+22be8 2 256 82
+22bea 4 110 20
+22bee 4 256 82
+22bf2 2 112 20
+22bf4 4 115 20
+22bf8 6 112 20
+22bfe 4 115 20
+22c02 6 112 20
+22c08 2 115 20
+22c0a 4 112 20
+22c0e 2 112 20
+22c10 2 115 20
+22c12 4 112 20
+22c16 a 112 20
+22c20 2 1139 87
+22c22 4 277 82
+22c26 2 1139 87
+22c28 2 112 20
+22c2a 12 112 20
+22c3c 14 112 20
+22c50 6 112 20
+22c56 8 112 20
+22c5e 6 85 79
+22c64 6 112 20
+22c6a 6 156 137
+22c70 6 256 82
+22c76 c 115 20
+22c82 2 1139 87
+22c84 2 256 82
+22c86 2 277 82
+22c88 2 1139 87
+22c8a 2 115 20
+22c8c 16 115 20
+22ca2 16 115 20
+22cb8 6 115 20
+22cbe 8 115 20
+22cc6 6 85 79
+22ccc 6 115 20
+22cd2 6 156 137
+22cd8 a 256 82
+22ce2 4 116 20
+22ce6 2 1481 82
+22ce8 2 256 82
+22cea 2 1481 82
+22cec 2 116 20
+22cee 2 1481 82
+22cf0 8 1482 82
+22cf8 14 1487 82
+22d0c 4 116 20
+22d10 2 1144 87
+22d12 6 298 82
+22d18 4 298 82
+22d1c 12 116 20
+22d2e 6 116 20
+22d34 8 116 20
+22d3c 6 85 79
+22d42 6 116 20
+22d48 2 256 82
+22d4a 4 110 20
+22d4e 4 256 82
+22d52 8 110 20
+22d5a 6 92 20
+22d60 c 156 137
+22d6c 6 70 20
+22d72 ea 118 20
+FUNC 22e5c 12 0 google_breakpad::LinuxCoreDumper::~LinuxCoreDumper
+22e5c 2 43 19
+22e5e 6 43 19
+22e64 6 43 19
+22e6a 4 43 19
+FUNC 22e6e c 0 LinuxPtraceDumperChildTest::SetUp
+22e6e 2 74 25
+22e70 2 74 25
+22e72 8 75 25
+FUNC 22e7c 18 0 LinuxPtraceDumperTest_VerifyStackReadWithMultipleThreads_Test::~LinuxPtraceDumperTest_VerifyStackReadWithMultipleThreads_Test
+22e7c 2 364 25
+22e7e 16 364 25
+FUNC 22e94 12 0 LinuxPtraceDumperTest_VerifyStackReadWithMultipleThreads_Test::~LinuxPtraceDumperTest_VerifyStackReadWithMultipleThreads_Test
+22e94 2 364 25
+22e96 6 364 25
+22e9c 6 364 25
+22ea2 4 364 25
+FUNC 22ea8 18 0 LinuxPtraceDumperChildTest_BuildProcPath_Test::~LinuxPtraceDumperChildTest_BuildProcPath_Test
+FUNC 22ea8 18 0 LinuxPtraceDumperChildTest_FileIDsMatch_Test::~LinuxPtraceDumperChildTest_FileIDsMatch_Test
+FUNC 22ea8 18 0 LinuxPtraceDumperChildTest_FindMappings_Test::~LinuxPtraceDumperChildTest_FindMappings_Test
+22ea8 2 125 25
+22eaa 2 125 25
+22eac c 72 25
+22eb8 8 134 25
+FUNC 22ea8 18 0 LinuxPtraceDumperChildTest_Setup_Test::~LinuxPtraceDumperChildTest_Setup_Test
+FUNC 22ea8 18 0 LinuxPtraceDumperChildTest_ThreadList_Test::~LinuxPtraceDumperChildTest_ThreadList_Test
+FUNC 22ec0 12 0 LinuxPtraceDumperChildTest_BuildProcPath_Test::~LinuxPtraceDumperChildTest_BuildProcPath_Test
+FUNC 22ec0 12 0 LinuxPtraceDumperChildTest_FileIDsMatch_Test::~LinuxPtraceDumperChildTest_FileIDsMatch_Test
+22ec0 2 246 25
+22ec2 6 125 25
+22ec8 6 125 25
+22ece 4 246 25
+FUNC 22ec0 12 0 LinuxPtraceDumperChildTest_FindMappings_Test::~LinuxPtraceDumperChildTest_FindMappings_Test
+FUNC 22ec0 12 0 LinuxPtraceDumperChildTest_Setup_Test::~LinuxPtraceDumperChildTest_Setup_Test
+FUNC 22ec0 12 0 LinuxPtraceDumperChildTest_ThreadList_Test::~LinuxPtraceDumperChildTest_ThreadList_Test
+FUNC 22ed4 20 0 testing::internal::TestFactoryImpl<LinuxPtraceDumperChildTest_FileIDsMatch_Test>::CreateTest
+22ed4 2 486 85
+22ed6 8 486 85
+22ede 4 72 25
+22ee2 2 325 25
+22ee4 2 486 85
+22ee6 6 325 25
+22eec 8 486 85
+FUNC 22ef4 20 0 testing::internal::TestFactoryImpl<LinuxPtraceDumperChildTest_ThreadList_Test>::CreateTest
+22ef4 2 486 85
+22ef6 8 486 85
+22efe 4 72 25
+22f02 2 134 25
+22f04 2 486 85
+22f06 6 134 25
+22f0c 8 486 85
+FUNC 22f14 20 0 testing::internal::TestFactoryImpl<LinuxPtraceDumperChildTest_FindMappings_Test>::CreateTest
+22f14 2 486 85
+22f16 8 486 85
+22f1e 4 72 25
+22f22 2 125 25
+22f24 2 486 85
+22f26 6 125 25
+22f2c 8 486 85
+FUNC 22f34 20 0 testing::internal::TestFactoryImpl<LinuxPtraceDumperChildTest_BuildProcPath_Test>::CreateTest
+22f34 2 486 85
+22f36 8 486 85
+22f3e 4 72 25
+22f42 2 246 25
+22f44 2 486 85
+22f46 6 246 25
+22f4c 8 486 85
+FUNC 22f54 20 0 testing::internal::TestFactoryImpl<LinuxPtraceDumperChildTest_Setup_Test>::CreateTest
+22f54 2 486 85
+22f56 8 486 85
+22f5e 4 72 25
+22f62 2 121 25
+22f64 2 486 85
+22f66 6 121 25
+22f6c 8 486 85
+FUNC 22f74 20 0 testing::internal::TestFactoryImpl<LinuxPtraceDumperTest_VerifyStackReadWithMultipleThreads_Test>::CreateTest
+22f74 2 486 85
+22f76 8 486 85
+22f7e 6 364 25
+22f84 2 486 85
+22f86 6 364 25
+22f8c 8 486 85
+FUNC 22f94 144 0 LinuxPtraceDumperChildTest::TestBody
+22f94 e 85 25
+22fa2 2 85 25
+22fa4 2 86 25
+22fa6 2 85 25
+22fa8 6 86 25
+22fae 6 88 25
+22fb4 4 89 25
+22fb8 2 90 25
+22fba 4 90 25
+22fbe a 90 25
+22fc8 2 90 25
+22fca 6 90 25
+22fd0 6 93 25
+22fd6 4 1139 87
+22fda 4 277 82
+22fde c 1139 87
+22fea 2 93 25
+22fec 18 93 25
+23004 4 93 25
+23008 2 93 25
+2300a e 93 25
+23018 6 93 25
+2301e 8 93 25
+23026 6 85 79
+2302c 6 93 25
+23032 6 156 137
+23038 e 256 82
+23046 a 95 25
+23050 8 96 25
+23058 14 97 25
+2306c 4 98 25
+23070 16 99 25
+23086 6 99 25
+2308c 8 99 25
+23094 6 85 79
+2309a 6 99 25
+230a0 38 101 25
+FUNC 230d8 44 0 LinuxPtraceDumperMappingsTest_MergedMappings_Test::~LinuxPtraceDumperMappingsTest_MergedMappings_Test
+230d8 2 226 25
+230da 2 176 25
+230dc 2 156 25
+230de 4 176 25
+230e2 2 226 25
+230e4 2 176 25
+230e6 2 156 25
+230e8 6 157 25
+230ee 6 158 25
+230f4 4 159 25
+230f8 8 156 137
+23100 e 72 25
+2310e e 226 25
+FUNC 2311c 12 0 LinuxPtraceDumperMappingsTest_MergedMappings_Test::~LinuxPtraceDumperMappingsTest_MergedMappings_Test
+2311c 2 226 25
+2311e 6 226 25
+23124 6 226 25
+2312a 4 226 25
+FUNC 23130 48 0 testing::internal::TestFactoryImpl<LinuxPtraceDumperMappingsTest_MergedMappings_Test>::CreateTest
+23130 2 486 85
+23132 8 486 85
+2313a 4 72 25
+2313e 4 176 25
+23142 2 124 137
+23144 8 176 25
+2314c 2 120 137
+2314e 2 481 106
+23150 4 124 137
+23154 4 101 108
+23158 2 486 85
+2315a 2 101 108
+2315c 8 154 25
+23164 2 226 25
+23166 2 154 25
+23168 6 226 25
+2316e a 486 85
+FUNC 23178 2b8 0 LinuxPtraceDumperMappingsTest::SetUp
+23178 8 185 25
+23180 4 185 25
+23184 2 186 25
+23186 2 185 25
+23188 4 186 25
+2318c 2 185 25
+2318e 2 186 25
+23190 2 185 25
+23192 4 186 25
+23196 e 348 136
+231a4 2 400 136
+231a6 4 243 135
+231aa 2 400 136
+231ac 4 244 135
+231b0 2 168 145
+231b2 8 168 145
+231ba 6 246 135
+231c0 4 803 136
+231c4 2 168 145
+231c6 2 806 136
+231c8 2 168 145
+231ca 8 806 136
+231d2 2 168 145
+231d4 6 168 145
+231da 4 400 136
+231de 2 250 135
+231e0 2 400 136
+231e2 8 250 135
+231ea 6 156 137
+231f0 c 187 25
+231fc 14 188 25
+23210 6 188 25
+23216 c 333 127
+23222 8 188 25
+2322a 6 85 79
+23230 6 188 25
+23236 2 188 25
+23238 6 194 25
+2323e 2 196 25
+23240 4 194 25
+23244 6 196 25
+2324a c 197 25
+23256 2 196 25
+23258 1a 197 25
+23272 6 302 82
+23278 12 197 25
+2328a 6 197 25
+23290 c 333 127
+2329c a 131 79
+232a6 c 333 127
+232b2 4 198 25
+232b6 2 198 25
+232b8 4 198 25
+232bc 4 150 79
+232c0 2 333 127
+232c2 2 150 79
+232c4 8 333 127
+232cc 8 198 25
+232d4 6 85 79
+232da 8 197 25
+232e2 6 256 82
+232e8 8 205 25
+232f0 4 195 25
+232f4 10 205 25
+23304 e 277 82
+23312 4 1139 87
+23316 2 206 25
+23318 16 206 25
+2332e 12 206 25
+23340 6 256 82
+23346 2 209 25
+23348 2 220 25
+2334a 2 162 25
+2334c 4 163 25
+23350 4 164 25
+23354 10 220 25
+23364 6 277 82
+2336a 4 1139 87
+2336e 4 277 82
+23372 2 221 25
+23374 16 221 25
+2338a 14 221 25
+2339e 6 221 25
+233a4 8 221 25
+233ac 6 85 79
+233b2 6 221 25
+233b8 6 156 137
+233be e 256 82
+233cc 6 223 25
+233d2 5e 224 25
+FUNC 23430 1c 0 google_breakpad::LinuxPtraceDumper::~LinuxPtraceDumper
+23430 4 42 24
+23434 18 42 24
+FUNC 2344c 1a 0 LinuxPtraceDumperChildTest_Setup_Test::RealTestBody
+2344c 4 121 25
+23450 6 122 25
+23456 6 122 25
+2345c 6 122 25
+23462 4 123 25
+FUNC 23468 1d0 0 LinuxPtraceDumperChildTest_FindMappings_Test::RealTestBody
+23468 8 125 25
+23470 6 125 25
+23476 2 126 25
+23478 2 125 25
+2347a 6 126 25
+23480 6 126 25
+23486 6 127 25
+2348c 2 1139 87
+2348e 4 277 82
+23492 8 1139 87
+2349a 2 127 25
+2349c 1a 127 25
+234b6 12 127 25
+234c8 6 256 82
+234ce c 129 25
+234da 6 277 82
+234e0 2 1139 87
+234e2 4 277 82
+234e6 2 129 25
+234e8 1a 129 25
+23502 12 129 25
+23514 6 256 82
+2351a c 130 25
+23526 6 277 82
+2352c 2 1139 87
+2352e 4 277 82
+23532 2 130 25
+23534 1a 130 25
+2354e 12 130 25
+23560 6 256 82
+23566 e 131 25
+23574 4 277 82
+23578 2 1139 87
+2357a 2 131 25
+2357c 1a 131 25
+23596 10 131 25
+235a6 4 131 25
+235aa 4 131 25
+235ae 6 131 25
+235b4 8 131 25
+235bc 6 85 79
+235c2 6 131 25
+235c8 6 156 137
+235ce c 256 82
+235da 5e 132 25
+FUNC 23638 400 0 LinuxPtraceDumperChildTest_BuildProcPath_Test::RealTestBody
+23638 a 246 25
+23642 6 246 25
+23648 2 250 25
+2364a 2 246 25
+2364c 6 247 25
+23652 a 248 25
+2365c 12 250 25
+2366e 12 253 25
+23680 e 254 25
+2368e 6 277 82
+23694 4 1139 87
+23698 2 254 25
+2369a 16 254 25
+236b0 a 254 25
+236ba 4 254 25
+236be a 254 25
+236c8 6 254 25
+236ce 8 254 25
+236d6 6 85 79
+236dc 6 254 25
+236e2 6 156 137
+236e8 8 256 82
+236f0 18 255 25
+23708 6 302 82
+2370e c 255 25
+2371a 4 255 25
+2371e 8 255 25
+23726 6 255 25
+2372c 8 255 25
+23734 6 85 79
+2373a 6 255 25
+23740 6 256 82
+23746 e 257 25
+23754 2 1139 87
+23756 6 257 25
+2375c 2 277 82
+2375e 2 1139 87
+23760 2 257 25
+23762 16 257 25
+23778 c 257 25
+23784 4 257 25
+23788 c 257 25
+23794 6 257 25
+2379a 8 257 25
+237a2 6 85 79
+237a8 6 257 25
+237ae 6 156 137
+237b4 6 256 82
+237ba e 258 25
+237c8 2 1139 87
+237ca 6 258 25
+237d0 2 277 82
+237d2 2 1139 87
+237d4 2 258 25
+237d6 16 258 25
+237ec c 258 25
+237f8 4 258 25
+237fc c 258 25
+23808 6 258 25
+2380e 8 258 25
+23816 6 85 79
+2381c 6 258 25
+23822 6 156 137
+23828 6 256 82
+2382e e 259 25
+2383c 2 1139 87
+2383e 6 259 25
+23844 2 277 82
+23846 2 1139 87
+23848 2 259 25
+2384a 16 259 25
+23860 c 259 25
+2386c 4 259 25
+23870 c 259 25
+2387c 6 259 25
+23882 8 259 25
+2388a 6 85 79
+23890 6 259 25
+23896 6 156 137
+2389c 6 256 82
+238a2 c 260 25
+238ae 2 1139 87
+238b0 6 260 25
+238b6 2 277 82
+238b8 2 1139 87
+238ba 2 260 25
+238bc 16 260 25
+238d2 c 260 25
+238de 4 260 25
+238e2 c 260 25
+238ee 6 260 25
+238f4 8 260 25
+238fc 6 85 79
+23902 6 260 25
+23908 6 156 137
+2390e 4 265 25
+23912 6 256 82
+23918 a 264 25
+23922 8 266 25
+2392a 4 265 25
+2392e a 266 25
+23938 2 277 82
+2393a 4 1139 87
+2393e 2 266 25
+23940 18 266 25
+23958 a 266 25
+23962 4 266 25
+23966 c 266 25
+23972 6 266 25
+23978 8 266 25
+23980 6 85 79
+23986 6 266 25
+2398c 6 156 137
+23992 6 256 82
+23998 6 266 25
+2399e 9a 267 25
+FUNC 23a38 46c 0 LinuxPtraceDumperChildTest_FileIDsMatch_Test::RealTestBody
+23a38 12 325 25
+23a4a 8 325 25
+23a52 2 60 49
+23a54 2 325 25
+23a56 2 60 49
+23a58 2 277 82
+23a5a a 60 49
+23a64 2 277 82
+23a66 4 60 49
+23a6a 2 1139 87
+23a6c 6 277 82
+23a72 8 1139 87
+23a7a 2 330 25
+23a7c 18 330 25
+23a94 18 330 25
+23aac 6 330 25
+23ab2 8 330 25
+23aba 6 85 79
+23ac0 6 330 25
+23ac6 6 156 137
+23acc e 256 82
+23ada 6 332 25
+23ae0 6 332 25
+23ae6 a 333 25
+23af0 4 277 82
+23af4 4 1139 87
+23af8 2 333 25
+23afa 18 333 25
+23b12 c 333 25
+23b1e 2 333 25
+23b20 c 333 25
+23b2c 6 333 25
+23b32 8 333 25
+23b3a 6 85 79
+23b40 6 333 25
+23b46 6 156 137
+23b4c a 256 82
+23b56 8 192 144
+23b5e 6 75 54
+23b64 4 76 54
+23b68 a 78 54
+23b72 a 78 54
+23b7c 2 79 54
+23b7e 2 80 54
+23b80 2 81 54
+23b82 6 82 54
+23b88 4 83 54
+23b8c 4 80 54
+23b90 4 86 54
+23b94 10 90 54
+23ba4 2 3454 97
+23ba6 4 122 54
+23baa 1c 3454 97
+23bc6 4 3454 97
+23bca 6 3454 97
+23bd0 4 124 54
+23bd4 4 134 54
+23bd8 4 135 54
+23bdc 4 96 54
+23be0 4 136 54
+23be4 12 96 54
+23bf6 4 97 54
+23bfa 2 98 54
+23bfc 8 98 54
+23c04 4 98 54
+23c08 4 100 54
+23c0c a 120 142
+23c16 4 337 25
+23c1a 4 192 144
+23c1e 4 337 25
+23c22 e 339 25
+23c30 6 337 25
+23c36 4 335 25
+23c3a 2 340 25
+23c3c 4 1139 87
+23c40 6 277 82
+23c46 8 1139 87
+23c4e 2 344 25
+23c50 16 344 25
+23c66 c 344 25
+23c72 2 344 25
+23c74 c 344 25
+23c80 6 344 25
+23c86 8 344 25
+23c8e 6 85 79
+23c94 6 344 25
+23c9a 6 156 137
+23ca0 e 256 82
+23cae 14 348 25
+23cc2 4 277 82
+23cc6 4 1139 87
+23cca 2 348 25
+23ccc 16 348 25
+23ce2 c 348 25
+23cee 4 348 25
+23cf2 c 348 25
+23cfe 6 348 25
+23d04 8 349 25
+23d0c 6 85 79
+23d12 6 348 25
+23d18 6 156 137
+23d1e 4 350 25
+23d22 4 256 82
+23d26 2 350 25
+23d28 4 256 82
+23d2c 4 351 25
+23d30 8 350 25
+23d38 8 351 25
+23d40 2 1139 87
+23d42 4 277 82
+23d46 4 1139 87
+23d4a 2 351 25
+23d4c 16 351 25
+23d62 c 351 25
+23d6e 4 351 25
+23d72 c 351 25
+23d7e 6 351 25
+23d84 8 351 25
+23d8c 6 85 79
+23d92 6 351 25
+23d98 6 156 137
+23d9e 2 355 25
+23da0 8 256 82
+23da8 a 355 25
+23db2 a 357 25
+23dbc 18 358 25
+23dd4 6 302 82
+23dda e 358 25
+23de8 4 358 25
+23dec 8 358 25
+23df4 6 358 25
+23dfa 8 358 25
+23e02 6 85 79
+23e08 6 358 25
+23e0e 8 256 82
+23e16 c 156 137
+23e22 82 359 25
+FUNC 23ea4 2b0 0 LinuxPtraceDumperChildTest_ThreadList_Test::RealTestBody
+23ea4 8 134 25
+23eac 6 134 25
+23eb2 4 135 25
+23eb6 2 134 25
+23eb8 6 135 25
+23ebe 6 135 25
+23ec4 6 136 25
+23eca 4 1139 87
+23ece 4 277 82
+23ed2 8 1139 87
+23eda 2 136 25
+23edc 1a 136 25
+23ef6 12 136 25
+23f08 6 256 82
+23f0e 6 192 144
+23f14 2 138 25
+23f16 2 192 144
+23f18 4 138 25
+23f1c 2 1621 82
+23f1e a 1621 82
+23f28 8 1583 82
+23f30 c 1382 82
+23f3c 4 1583 82
+23f40 a 1583 82
+23f4a 6 1583 82
+23f50 8 1583 82
+23f58 6 1583 82
+23f5e 8 1583 82
+23f66 6 1583 82
+23f6c a 1584 82
+23f76 8 1382 82
+23f7e a 1584 82
+23f88 6 306 82
+23f8e c 333 127
+23f9a 8 306 82
+23fa2 4 1382 82
+23fa6 6 85 79
+23fac 8 1382 82
+23fb4 a 1585 82
+23fbe 6 1585 82
+23fc4 c 156 137
+23fd0 6 256 82
+23fd6 8 138 25
+23fde 6 302 82
+23fe4 12 138 25
+23ff6 6 138 25
+23ffc 8 138 25
+24004 6 85 79
+2400a 6 138 25
+24010 6 256 82
+24016 2 139 25
+24018 4 256 82
+2401c 2 140 25
+2401e 2 1139 87
+24020 6 192 144
+24026 6 140 25
+2402c 6 141 25
+24032 4 141 25
+24036 6 141 25
+2403c 4 142 25
+24040 4 277 82
+24044 4 1139 87
+24048 2 142 25
+2404a 1a 142 25
+24064 12 142 25
+24076 6 256 82
+2407c 2 143 25
+2407e 6 140 25
+24084 2 1139 87
+24086 4 277 82
+2408a 2 1139 87
+2408c 2 146 25
+2408e 1a 146 25
+240a8 14 146 25
+240bc 6 146 25
+240c2 8 146 25
+240ca 6 85 79
+240d0 6 146 25
+240d6 6 156 137
+240dc c 256 82
+240e8 6c 147 25
+FUNC 24154 2a8 0 LinuxPtraceDumperMappingsTest_MergedMappings_Test::RealTestBody
+24154 8 226 25
+2415c a 226 25
+24166 4 228 25
+2416a 4 228 25
+2416e 2 228 25
+24170 6 228 25
+24176 6 229 25
+2417c 4 1139 87
+24180 6 277 82
+24186 4 1139 87
+2418a 2 229 25
+2418c 18 229 25
+241a4 8 229 25
+241ac 2 229 25
+241ae c 229 25
+241ba 6 229 25
+241c0 8 229 25
+241c8 6 85 79
+241ce 6 229 25
+241d4 8 156 137
+241dc 6 256 82
+241e2 2 1512 82
+241e4 2 230 25
+241e6 16 1512 82
+241fc c 1552 82
+24208 6 192 144
+2420e 8 231 25
+24216 4 232 25
+2421a c 233 25
+24226 6 233 25
+2422c 4 236 25
+24230 6 1512 82
+24236 2 236 25
+24238 e 1512 82
+24246 6 236 25
+2424c 6 302 82
+24252 14 236 25
+24266 6 236 25
+2426c 8 237 25
+24274 6 85 79
+2427a 6 236 25
+24280 6 256 82
+24286 e 238 25
+24294 e 1512 82
+242a2 6 238 25
+242a8 6 302 82
+242ae 14 238 25
+242c2 6 238 25
+242c8 8 238 25
+242d0 6 85 79
+242d6 6 238 25
+242dc 6 256 82
+242e2 c 239 25
+242ee e 1552 82
+242fc 6 239 25
+24302 6 302 82
+24308 12 239 25
+2431a 6 239 25
+24320 8 239 25
+24328 6 85 79
+2432e 6 239 25
+24334 6 256 82
+2433a 6 240 25
+24340 4 231 25
+24344 2 243 25
+24346 14 1512 82
+2435a 2 243 25
+2435c 4 1512 82
+24360 6 243 25
+24366 6 302 82
+2436c 12 243 25
+2437e 6 243 25
+24384 8 243 25
+2438c 6 85 79
+24392 6 243 25
+24398 6 256 82
+2439e 6 243 25
+243a4 58 244 25
+FUNC 243fc 8b4 0 LinuxPtraceDumperTest_VerifyStackReadWithMultipleThreads_Test::TestBody
+243fc 8 364 25
+24404 4 367 25
+24408 8 364 25
+24410 4 364 25
+24414 c 367 25
+24420 2 364 25
+24422 4 367 25
+24426 e 370 25
+24434 8 370 25
+2443c 2 370 25
+2443e 2 370 25
+24440 4 370 25
+24444 e 370 25
+24452 c 370 25
+2445e 6 302 82
+24464 14 370 25
+24478 6 370 25
+2447e 8 370 25
+24486 6 85 79
+2448c 6 370 25
+24492 a 256 82
+2449c 4 372 25
+244a0 6 373 25
+244a6 2 375 25
+244a8 2 377 25
+244aa 4 375 25
+244ae 6 377 25
+244b4 8 378 25
+244bc 1a 379 25
+244d6 6 379 25
+244dc 2 131 79
+244de a 333 127
+244e8 e 385 25
+244f6 14 390 25
+2450a 6 392 25
+24510 a 392 25
+2451a 1a 393 25
+24534 6 393 25
+2453a 2 131 79
+2453c c 333 127
+24548 2 131 79
+2454a 8 131 79
+24552 2 131 79
+24554 c 333 127
+24560 4 393 25
+24564 2 393 25
+24566 4 393 25
+2456a 4 150 79
+2456e 2 333 127
+24570 2 150 79
+24572 a 333 127
+2457c 8 393 25
+24584 6 85 79
+2458a 6 393 25
+24590 8 156 137
+24598 a 396 25
+245a2 20 1512 82
+245c2 6 401 25
+245c8 8 402 25
+245d0 4 403 25
+245d4 12 405 25
+245e6 4 405 25
+245ea 8 405 25
+245f2 6 256 82
+245f8 2 1139 87
+245fa 8 407 25
+24602 4 1139 87
+24606 4 407 25
+2460a 4 277 82
+2460e 4 407 25
+24612 1e 407 25
+24630 16 407 25
+24646 6 407 25
+2464c 8 407 25
+24654 6 85 79
+2465a 6 407 25
+24660 6 156 137
+24666 8 256 82
+2466e 2 406 25
+24670 2 405 25
+24672 2 406 25
+24674 4 1512 82
+24678 2 406 25
+2467a a 1512 82
+24684 2 405 25
+24686 4 1512 82
+2468a e 406 25
+24698 6 302 82
+2469e 10 406 25
+246ae 6 256 82
+246b4 12 409 25
+246c6 e 1512 82
+246d4 8 409 25
+246dc 6 302 82
+246e2 12 409 25
+246f4 6 409 25
+246fa 8 409 25
+24702 6 85 79
+24708 8 409 25
+24710 6 256 82
+24716 a 399 25
+24720 c 412 25
+2472c 6 417 25
+24732 8 420 25
+2473a 6 421 25
+24740 2 1139 87
+24742 4 277 82
+24746 4 1139 87
+2474a 2 421 25
+2474c 18 421 25
+24764 14 421 25
+24778 6 421 25
+2477e 8 421 25
+24786 6 85 79
+2478c 6 421 25
+24792 6 156 137
+24798 a 256 82
+247a2 2 422 25
+247a4 4 192 144
+247a8 2 422 25
+247aa 4 192 144
+247ae 2 1512 82
+247b0 2 192 144
+247b2 2 1512 82
+247b4 2 192 144
+247b6 2 422 25
+247b8 e 1512 82
+247c6 6 422 25
+247cc 6 302 82
+247d2 12 422 25
+247e4 6 422 25
+247ea 8 422 25
+247f2 6 85 79
+247f8 6 422 25
+247fe 6 256 82
+24804 6 423 25
+2480a 2 1139 87
+2480c 2 256 82
+2480e 2 277 82
+24810 2 1139 87
+24812 2 423 25
+24814 18 423 25
+2482c 8 423 25
+24834 2 423 25
+24836 c 423 25
+24842 6 423 25
+24848 8 423 25
+24850 6 85 79
+24856 6 423 25
+2485c 6 156 137
+24862 4 426 25
+24866 6 256 82
+2486c 12 427 25
+2487e 6 427 25
+24884 c 430 25
+24890 6 192 144
+24896 2 427 25
+24898 2 192 144
+2489a a 426 25
+248a4 8 427 25
+248ac 2 1139 87
+248ae 2 277 82
+248b0 2 1139 87
+248b2 2 427 25
+248b4 14 427 25
+248c8 a 427 25
+248d2 4 427 25
+248d6 c 427 25
+248e2 6 427 25
+248e8 8 427 25
+248f0 6 85 79
+248f6 6 427 25
+248fc 6 156 137
+24902 a 256 82
+2490c c 430 25
+24918 2 1139 87
+2491a 2 277 82
+2491c 2 1139 87
+2491e 2 430 25
+24920 14 430 25
+24934 a 430 25
+2493e 4 430 25
+24942 c 430 25
+2494e 6 430 25
+24954 8 431 25
+2495c 6 85 79
+24962 6 430 25
+24968 6 156 137
+2496e 6 256 82
+24974 1a 452 25
+2498e 16 1512 82
+249a4 4 453 25
+249a8 6 302 82
+249ae c 453 25
+249ba 2 453 25
+249bc 8 453 25
+249c4 6 453 25
+249ca 8 453 25
+249d2 6 85 79
+249d8 6 453 25
+249de 6 256 82
+249e4 c8 426 25
+24aac 4 455 25
+24ab0 2 1139 87
+24ab2 2 277 82
+24ab4 4 1139 87
+24ab8 2 455 25
+24aba 18 455 25
+24ad2 8 455 25
+24ada 4 455 25
+24ade c 455 25
+24aea 6 455 25
+24af0 8 455 25
+24af8 6 85 79
+24afe 6 455 25
+24b04 6 156 137
+24b0a 8 256 82
+24b12 8 456 25
+24b1a 4 460 25
+24b1e 4 460 25
+24b22 2 460 25
+24b24 12 460 25
+24b36 4 460 25
+24b3a 8 460 25
+24b42 6 256 82
+24b48 4 461 25
+24b4c 2 1139 87
+24b4e e 461 25
+24b5c 2 1139 87
+24b5e 2 277 82
+24b60 4 461 25
+24b64 18 461 25
+24b7c 14 461 25
+24b90 6 461 25
+24b96 8 461 25
+24b9e 6 85 79
+24ba4 6 461 25
+24baa 6 156 137
+24bb0 10 256 82
+24bc0 8 462 25
+24bc8 4 460 25
+24bcc 8 460 25
+24bd4 10 460 25
+24be4 6 460 25
+24bea 6 302 82
+24bf0 10 460 25
+24c00 6 256 82
+24c06 8 462 25
+24c0e 4 1512 82
+24c12 8 462 25
+24c1a 10 1512 82
+24c2a 6 462 25
+24c30 6 302 82
+24c36 12 462 25
+24c48 6 462 25
+24c4e 8 462 25
+24c56 6 85 79
+24c5c 8 462 25
+24c64 4c 463 25
+FUNC 24cb0 12 0 google_breakpad::LinuxPtraceDumper::~LinuxPtraceDumper
+24cb0 2 42 24
+24cb2 6 42 24
+24cb8 6 42 24
+24cbe 4 42 24
+FUNC 24cc4 20 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MinidumpWriterTest_SetupWithPath_Test>::CreateTest
+24cc4 2 486 85
+24cc6 8 486 85
+24cce 6 67 27
+24cd4 2 486 85
+24cd6 6 67 27
+24cdc 8 486 85
+FUNC 24ce4 20 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MinidumpWriterTest_SetupWithFD_Test>::CreateTest
+24ce4 2 486 85
+24ce6 8 486 85
+24cee 6 96 27
+24cf4 2 486 85
+24cf6 6 96 27
+24cfc 8 486 85
+FUNC 24d04 20 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MinidumpWriterTest_MappingInfo_Test>::CreateTest
+24d04 2 486 85
+24d06 8 486 85
+24d0e 6 128 27
+24d14 2 486 85
+24d16 6 128 27
+24d1c 8 486 85
+FUNC 24d24 20 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MinidumpWriterTest_MappingInfoContained_Test>::CreateTest
+24d24 2 486 85
+24d26 8 486 85
+24d2e 6 236 27
+24d34 2 486 85
+24d36 6 236 27
+24d3c 8 486 85
+FUNC 24d44 20 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MinidumpWriterTest_DeletedBinary_Test>::CreateTest
+24d44 2 486 85
+24d46 8 486 85
+24d4e 6 338 27
+24d54 2 486 85
+24d56 6 338 27
+24d5c 8 486 85
+FUNC 24d64 20 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MinidumpWriterTest_AdditionalMemory_Test>::CreateTest
+24d64 2 486 85
+24d66 8 486 85
+24d6e 6 432 27
+24d74 2 486 85
+24d76 6 432 27
+24d7c 8 486 85
+FUNC 24d84 20 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MinidumpWriterTest_InvalidStackPointer_Test>::CreateTest
+24d84 2 486 85
+24d86 8 486 85
+24d8e 6 504 27
+24d94 2 486 85
+24d96 6 504 27
+24d9c 8 486 85
+FUNC 24da4 20 0 testing::internal::TestFactoryImpl<(anonymous namespace)::MinidumpWriterTest_MinidumpSizeLimit_Test>::CreateTest
+24da4 2 486 85
+24da6 8 486 85
+24dae 6 583 27
+24db4 2 486 85
+24db6 6 583 27
+24dbc 8 486 85
+FUNC 24dc4 18 0 MinidumpWriterTest_SetupWithPath_Test::~MinidumpWriterTest_SetupWithPath_Test
+24dc4 2 67 27
+24dc6 16 67 27
+FUNC 24ddc 12 0 MinidumpWriterTest_SetupWithPath_Test::~MinidumpWriterTest_SetupWithPath_Test
+24ddc 2 67 27
+24dde 6 67 27
+24de4 6 67 27
+24dea 4 67 27
+FUNC 24df0 18 0 MinidumpWriterTest_SetupWithFD_Test::~MinidumpWriterTest_SetupWithFD_Test
+24df0 2 96 27
+24df2 16 96 27
+FUNC 24e08 12 0 MinidumpWriterTest_SetupWithFD_Test::~MinidumpWriterTest_SetupWithFD_Test
+24e08 2 96 27
+24e0a 6 96 27
+24e10 6 96 27
+24e16 4 96 27
+FUNC 24e1c 18 0 MinidumpWriterTest_MappingInfo_Test::~MinidumpWriterTest_MappingInfo_Test
+24e1c 2 128 27
+24e1e 16 128 27
+FUNC 24e34 12 0 MinidumpWriterTest_MappingInfo_Test::~MinidumpWriterTest_MappingInfo_Test
+24e34 2 128 27
+24e36 6 128 27
+24e3c 6 128 27
+24e42 4 128 27
+FUNC 24e48 18 0 MinidumpWriterTest_MappingInfoContained_Test::~MinidumpWriterTest_MappingInfoContained_Test
+24e48 2 236 27
+24e4a 16 236 27
+FUNC 24e60 12 0 MinidumpWriterTest_MappingInfoContained_Test::~MinidumpWriterTest_MappingInfoContained_Test
+24e60 2 236 27
+24e62 6 236 27
+24e68 6 236 27
+24e6e 4 236 27
+FUNC 24e74 18 0 MinidumpWriterTest_DeletedBinary_Test::~MinidumpWriterTest_DeletedBinary_Test
+24e74 2 338 27
+24e76 16 338 27
+FUNC 24e8c 12 0 MinidumpWriterTest_DeletedBinary_Test::~MinidumpWriterTest_DeletedBinary_Test
+24e8c 2 338 27
+24e8e 6 338 27
+24e94 6 338 27
+24e9a 4 338 27
+FUNC 24ea0 18 0 MinidumpWriterTest_AdditionalMemory_Test::~MinidumpWriterTest_AdditionalMemory_Test
+24ea0 2 432 27
+24ea2 16 432 27
+FUNC 24eb8 12 0 MinidumpWriterTest_AdditionalMemory_Test::~MinidumpWriterTest_AdditionalMemory_Test
+24eb8 2 432 27
+24eba 6 432 27
+24ec0 6 432 27
+24ec6 4 432 27
+FUNC 24ecc 18 0 MinidumpWriterTest_InvalidStackPointer_Test::~MinidumpWriterTest_InvalidStackPointer_Test
+24ecc 2 504 27
+24ece 16 504 27
+FUNC 24ee4 12 0 MinidumpWriterTest_InvalidStackPointer_Test::~MinidumpWriterTest_InvalidStackPointer_Test
+24ee4 2 504 27
+24ee6 6 504 27
+24eec 6 504 27
+24ef2 4 504 27
+FUNC 24ef8 18 0 MinidumpWriterTest_MinidumpSizeLimit_Test::~MinidumpWriterTest_MinidumpSizeLimit_Test
+24ef8 2 583 27
+24efa 16 583 27
+FUNC 24f10 12 0 MinidumpWriterTest_MinidumpSizeLimit_Test::~MinidumpWriterTest_MinidumpSizeLimit_Test
+24f10 2 583 27
+24f12 6 583 27
+24f18 6 583 27
+24f1e 4 583 27
+FUNC 24f22 7a 0 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::find
+24f22 6 438 135
+24f28 2 400 136
+24f2a 4 440 135
+24f2e 6 441 135
+24f34 2 446 135
+24f36 4 162 104
+24f3a 4 164 104
+24f3e 6 165 104
+24f44 6 168 104
+24f4a 4 166 104
+24f4e 6 171 104
+24f54 4 169 104
+24f58 6 174 104
+24f5e 6 172 104
+24f64 4 164 104
+24f68 10 178 104
+24f78 6 180 104
+24f7e 2 181 104
+24f80 6 183 104
+24f86 2 184 104
+24f88 a 186 104
+24f92 2 190 104
+24f94 4 447 135
+24f98 2 447 135
+24f9a 2 448 135
+FUNC 24f9c 30 0 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::erase
+24f9c 4 788 136
+24fa0 2 400 136
+24fa2 2 788 136
+24fa4 2 400 136
+24fa6 4 789 136
+24faa 8 604 135
+24fb2 a 791 136
+24fbc 8 791 136
+24fc4 8 793 136
+FUNC 24fcc 32 0 std::priv::_Impl_list<google_breakpad::MappingEntry, std::allocator<google_breakpad::MappingEntry> >::push_back
+24fcc 4 306 106
+24fd0 2 509 121
+24fd2 2 509 121
+24fd4 6 306 106
+24fda 2 509 121
+24fdc 6 307 106
+24fe2 4 119 108
+24fe6 a 119 108
+24ff0 2 427 121
+24ff2 2 428 121
+24ff4 2 429 121
+24ff6 2 430 121
+24ff8 2 431 121
+24ffa 4 509 121
+FUNC 24ffe 1a 0 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::append
+24ffe 2 529 136
+25000 2 529 136
+25002 2 229 145
+25004 2 529 136
+25006 4 229 145
+2500a 2 530 136
+2500c 2 530 136
+2500e 2 530 136
+25010 4 530 136
+25014 4 530 136
+FUNC 25018 22 0 std::priv::_List_base<google_breakpad::AppMemory, std::allocator<google_breakpad::AppMemory> >::_List_base
+FUNC 25018 22 0 std::priv::_List_base<google_breakpad::MappingEntry, std::allocator<google_breakpad::MappingEntry> >::_List_base
+25018 6 188 121
+2501e a 188 121
+25028 8 481 106
+25030 2 189 121
+25032 2 211 121
+25034 2 212 121
+25036 4 189 121
+FUNC 25018 22 0 std::priv::_List_base<std::pair<char, char const*>, std::allocator<std::pair<char, char const*> > >::_List_base
+25018 6 188 121
+2501e a 188 121
+25028 8 481 106
+25030 2 189 121
+25032 2 211 121
+25034 2 212 121
+25036 4 189 121
+FUNC 2503a 1a 0 std::priv::_List_base<google_breakpad::MappingEntry, std::allocator<google_breakpad::MappingEntry> >::clear
+2503a 2 66 120
+2503c 2 66 120
+2503e 2 67 120
+25040 4 68 120
+25044 2 74 120
+25046 8 135 124
+2504e 2 78 120
+25050 4 79 120
+FUNC 25054 1c 0 std::priv::_List_base<google_breakpad::AppMemory, std::allocator<google_breakpad::AppMemory> >::clear
+25054 2 66 120
+25056 2 66 120
+25058 2 67 120
+2505a 4 68 120
+2505e 2 74 120
+25060 a 161 106
+2506a 2 78 120
+2506c 4 79 120
+FUNC 25054 1c 0 std::priv::_List_base<std::pair<char, char const*>, std::allocator<std::pair<char, char const*> > >::clear
+25054 2 66 120
+25056 2 66 120
+25058 2 67 120
+2505a 4 68 120
+2505e 2 74 120
+25060 a 161 106
+2506a 2 78 120
+2506c 4 79 120
+FUNC 25070 c0 0 testing::internal::CmpHelperEQFailure<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >
+25070 8 1464 82
+25078 c 1464 82
+25084 2 884 80
+25086 6 1464 82
+2508c 4 884 80
+25090 6 1464 82
+25096 8 884 80
+2509e 2 708 80
+250a0 c 333 127
+250ac a 711 80
+250b6 8 469 80
+250be 6 156 137
+250c4 c 75 132
+250d0 6 886 80
+250d6 8 884 80
+250de 8 469 80
+250e6 8 75 132
+250ee 6 886 80
+250f4 12 1471 82
+25106 c 156 137
+25112 1e 1472 82
+FUNC 25130 4a 0 testing::internal::CmpHelperEQ<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >
+25130 4 1476 82
+25134 4 1481 82
+25138 2 1476 82
+2513a 2 229 145
+2513c 6 1476 82
+25142 4 229 145
+25146 2 1476 82
+25148 4 229 145
+2514c 4 400 136
+25150 4 315 139
+25154 6 226 145
+2515a 2 315 139
+2515c 10 1487 82
+2516c 6 1482 82
+25172 8 1488 82
+FUNC 2517c a0 0 testing::internal::CmpHelperEQFailure<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >
+2517c e 1464 82
+2518a 2 1464 82
+2518c 2 884 80
+2518e 6 1464 82
+25194 4 469 80
+25198 2 1464 82
+2519a 4 884 80
+2519e 4 1464 82
+251a2 2 75 132
+251a4 4 884 80
+251a8 4 469 80
+251ac 2 75 132
+251ae 4 469 80
+251b2 8 75 132
+251ba 6 886 80
+251c0 8 884 80
+251c8 4 469 80
+251cc 4 75 132
+251d0 4 469 80
+251d4 8 75 132
+251dc 6 886 80
+251e2 14 1471 82
+251f6 c 156 137
+25202 1a 1472 82
+FUNC 2521c d8 0 testing::PrintToString<long long int>
+2521c e 883 80
+2522a 2 883 80
+2522c 6 884 80
+25232 4 181 127
+25236 2 883 80
+25238 2 884 80
+2523a 2 883 80
+2523c 8 884 80
+25244 e 181 127
+25252 2 199 126
+25254 10 211 126
+25264 2 202 126
+25266 2 145 115
+25268 4 202 126
+2526c 2 145 115
+2526e 2 202 126
+25270 6 145 115
+25276 6 202 126
+2527c 2 202 126
+2527e 2 202 126
+25280 c 202 126
+2528c 18 57 128
+252a4 1a 78 125
+252be 6 202 126
+252c4 4 210 126
+252c8 6 212 126
+252ce 8 75 132
+252d6 6 886 80
+252dc 18 887 80
+FUNC 252f4 26c 0 MinidumpWriterTest_SetupWithPath_Test::TestBody
+252f4 c 67 27
+25300 a 67 27
+2530a 2 69 27
+2530c 4 67 27
+25310 e 69 27
+2531e 4 69 27
+25322 2 69 27
+25324 2 69 27
+25326 2 69 27
+25328 e 69 27
+25336 c 69 27
+25342 6 302 82
+25348 10 69 27
+25358 6 69 27
+2535e 8 69 27
+25366 6 85 79
+2536c 6 69 27
+25372 e 256 82
+25380 4 71 27
+25384 4 72 27
+25388 6 73 27
+2538e e 75 27
+2539c 4 75 27
+253a0 6 75 27
+253a6 6 76 27
+253ac 6 77 27
+253b2 4 82 27
+253b6 6 79 27
+253bc 4 84 27
+253c0 c 82 27
+253cc 6 84 27
+253d2 10 85 27
+253e2 c 88 27
+253ee 4 87 27
+253f2 4 88 27
+253f6 4 1139 87
+253fa 2 277 82
+253fc 8 1139 87
+25404 2 88 27
+25406 18 88 27
+2541e 12 88 27
+25430 6 88 27
+25436 8 88 27
+2543e 6 85 79
+25444 6 88 27
+2544a 8 156 137
+25452 6 256 82
+25458 6 90 27
+2545e 4 90 27
+25462 4 90 27
+25466 6 1552 82
+2546c 4 90 27
+25470 10 1552 82
+25480 4 90 27
+25484 6 302 82
+2548a e 90 27
+25498 6 256 82
+2549e 18 91 27
+254b6 6 302 82
+254bc 10 91 27
+254cc 6 91 27
+254d2 8 91 27
+254da 6 85 79
+254e0 6 91 27
+254e6 6 256 82
+254ec a 156 137
+254f6 6 256 82
+254fc 6 93 27
+25502 6 156 137
+25508 6 93 27
+2550e 52 94 27
+FUNC 25560 274 0 MinidumpWriterTest_SetupWithFD_Test::TestBody
+25560 c 96 27
+2556c a 96 27
+25576 2 98 27
+25578 4 96 27
+2557c e 98 27
+2558a 4 98 27
+2558e 2 98 27
+25590 2 98 27
+25592 2 98 27
+25594 e 98 27
+255a2 c 98 27
+255ae 6 302 82
+255b4 10 98 27
+255c4 6 98 27
+255ca 8 98 27
+255d2 6 85 79
+255d8 6 98 27
+255de e 256 82
+255ec 4 100 27
+255f0 4 101 27
+255f4 6 102 27
+255fa e 104 27
+25608 4 104 27
+2560c 6 104 27
+25612 6 105 27
+25618 6 106 27
+2561e 4 111 27
+25622 6 108 27
+25628 4 113 27
+2562c c 111 27
+25638 6 113 27
+2563e 10 114 27
+2564e e 115 27
+2565c 8 118 27
+25664 4 117 27
+25668 4 118 27
+2566c 4 1139 87
+25670 2 277 82
+25672 8 1139 87
+2567a 2 118 27
+2567c 18 118 27
+25694 12 118 27
+256a6 6 118 27
+256ac 8 118 27
+256b4 6 85 79
+256ba 6 118 27
+256c0 8 156 137
+256c8 6 256 82
+256ce 6 120 27
+256d4 4 120 27
+256d8 4 120 27
+256dc 6 1552 82
+256e2 4 120 27
+256e6 10 1552 82
+256f6 4 120 27
+256fa 6 302 82
+25700 e 120 27
+2570e 6 256 82
+25714 18 121 27
+2572c 6 302 82
+25732 10 121 27
+25742 6 121 27
+25748 8 121 27
+25750 6 85 79
+25756 6 121 27
+2575c 6 256 82
+25762 a 156 137
+2576c 6 256 82
+25772 6 123 27
+25778 6 156 137
+2577e 6 123 27
+25784 50 124 27
+FUNC 257d4 c70 0 MinidumpWriterTest_MappingInfo_Test::TestBody
+257d4 c 128 27
+257e0 a 128 27
+257ea 2 130 27
+257ec 4 128 27
+257f0 e 130 27
+257fe 8 130 27
+25806 2 130 27
+25808 2 130 27
+2580a 2 130 27
+2580c e 130 27
+2581a c 130 27
+25826 6 302 82
+2582c 12 130 27
+2583e 6 130 27
+25844 8 130 27
+2584c 6 85 79
+25852 6 130 27
+25858 10 256 82
+25868 6 134 27
+2586e 6 139 27
+25874 4 135 27
+25878 4 134 27
+2587c 4 135 27
+25880 4 139 27
+25884 4 134 27
+25888 16 139 27
+2589e a 143 27
+258a8 4 144 27
+258ac 4 143 27
+258b0 a 144 27
+258ba c 962 136
+258c6 4 147 27
+258ca 2 148 27
+258cc 2 147 27
+258ce a 148 27
+258d8 4 161 27
+258dc a 452 136
+258e6 16 161 27
+258fc 2 162 27
+258fe 8 277 82
+25906 4 1139 87
+2590a 2 277 82
+2590c 2 163 27
+2590e 1e 163 27
+2592c 14 163 27
+25940 6 163 27
+25946 8 163 27
+2594e 6 85 79
+25954 6 163 27
+2595a 6 156 137
+25960 a 256 82
+2596a 4 165 27
+2596e 4 166 27
+25972 6 167 27
+25978 e 169 27
+25986 4 169 27
+2598a 6 169 27
+25990 6 170 27
+25996 6 171 27
+2599c 4 177 27
+259a0 2 173 27
+259a2 4 176 27
+259a6 4 173 27
+259aa c 176 27
+259b6 a 177 27
+259c0 8 1552 82
+259c8 2 177 27
+259ca 2 1552 82
+259cc 4 177 27
+259d0 e 1552 82
+259de 6 177 27
+259e4 6 302 82
+259ea 12 177 27
+259fc 6 177 27
+25a02 8 177 27
+25a0a 6 85 79
+25a10 6 177 27
+25a16 10 256 82
+25a26 2 180 27
+25a28 2 178 27
+25a2a 2 180 27
+25a2c 4 178 27
+25a30 4 180 27
+25a34 12 181 27
+25a46 6 185 27
+25a4c 4 188 27
+25a50 2 185 27
+25a52 6 186 27
+25a58 4 187 27
+25a5c 2 186 27
+25a5e a 188 27
+25a68 8 353 121
+25a70 4 193 27
+25a74 2 185 27
+25a76 8 353 121
+25a7e c 193 27
+25a8a a 194 27
+25a94 8 229 146
+25a9c 1a 196 27
+25ab6 2 277 82
+25ab8 6 1139 87
+25abe 2 196 27
+25ac0 1c 196 27
+25adc 18 196 27
+25af4 6 196 27
+25afa 8 196 27
+25b02 6 85 79
+25b08 6 196 27
+25b0e 6 156 137
+25b14 e 256 82
+25b22 8 202 27
+25b2a a 203 27
+25b34 2 277 82
+25b36 4 1139 87
+25b3a 2 203 27
+25b3c 1c 203 27
+25b58 16 203 27
+25b6e 6 256 82
+25b74 6 205 27
+25b7a a 277 82
+25b84 4 1139 87
+25b88 2 206 27
+25b8a 1c 206 27
+25ba6 16 206 27
+25bbc 6 256 82
+25bc2 10 208 27
+25bd2 a 277 82
+25bdc 4 1139 87
+25be0 2 209 27
+25be2 1c 209 27
+25bfe 18 209 27
+25c16 6 209 27
+25c1c 8 209 27
+25c24 6 85 79
+25c2a 6 209 27
+25c30 6 156 137
+25c36 10 256 82
+25c46 a 211 27
+25c50 4 1512 82
+25c54 4 211 27
+25c58 12 1512 82
+25c6a 4 211 27
+25c6e 6 302 82
+25c74 14 211 27
+25c88 6 211 27
+25c8e 8 211 27
+25c96 6 85 79
+25c9c 6 211 27
+25ca2 6 256 82
+25ca8 a 212 27
+25cb2 4 1512 82
+25cb6 4 212 27
+25cba 4 1512 82
+25cbe 2 256 82
+25cc0 2 212 27
+25cc2 e 1512 82
+25cd0 4 212 27
+25cd4 6 302 82
+25cda 14 212 27
+25cee 6 212 27
+25cf4 8 212 27
+25cfc 6 85 79
+25d02 6 212 27
+25d08 8 256 82
+25d10 e 213 27
+25d1e 16 1512 82
+25d34 6 156 137
+25d3a 4 213 27
+25d3e 6 302 82
+25d44 e 213 27
+25d52 4 213 27
+25d56 8 213 27
+25d5e 6 213 27
+25d64 8 213 27
+25d6c 6 85 79
+25d72 6 213 27
+25d78 6 256 82
+25d7e c 214 27
+25d8a 16 1512 82
+25da0 6 156 137
+25da6 4 214 27
+25daa 6 302 82
+25db0 e 214 27
+25dbe 4 214 27
+25dc2 8 214 27
+25dca 6 214 27
+25dd0 8 214 27
+25dd8 6 85 79
+25dde 6 214 27
+25de4 6 256 82
+25dea a 218 27
+25df4 2 1139 87
+25df6 2 277 82
+25df8 2 1139 87
+25dfa 2 218 27
+25dfc 1c 218 27
+25e18 e 218 27
+25e26 4 218 27
+25e2a a 218 27
+25e34 6 218 27
+25e3a 8 218 27
+25e42 6 85 79
+25e48 6 218 27
+25e4e 6 156 137
+25e54 6 256 82
+25e5a a 219 27
+25e64 2 1139 87
+25e66 2 277 82
+25e68 2 1139 87
+25e6a 2 219 27
+25e6c 1c 219 27
+25e88 e 219 27
+25e96 4 219 27
+25e9a a 219 27
+25ea4 6 219 27
+25eaa 8 219 27
+25eb2 6 85 79
+25eb8 6 219 27
+25ebe 6 156 137
+25ec4 6 256 82
+25eca a 220 27
+25ed4 2 1139 87
+25ed6 2 277 82
+25ed8 2 1139 87
+25eda 2 220 27
+25edc 1c 220 27
+25ef8 e 220 27
+25f06 4 220 27
+25f0a a 220 27
+25f14 6 220 27
+25f1a 8 220 27
+25f22 6 85 79
+25f28 6 220 27
+25f2e 6 156 137
+25f34 6 256 82
+25f3a a 221 27
+25f44 2 1139 87
+25f46 2 277 82
+25f48 2 1139 87
+25f4a 2 221 27
+25f4c 1c 221 27
+25f68 e 221 27
+25f76 4 221 27
+25f7a a 221 27
+25f84 6 221 27
+25f8a 8 221 27
+25f92 6 85 79
+25f98 6 221 27
+25f9e 6 156 137
+25fa4 6 256 82
+25faa a 222 27
+25fb4 2 1139 87
+25fb6 2 277 82
+25fb8 2 1139 87
+25fba 2 222 27
+25fbc 1c 222 27
+25fd8 e 222 27
+25fe6 4 222 27
+25fea a 222 27
+25ff4 6 222 27
+25ffa 8 222 27
+26002 6 85 79
+26008 6 222 27
+2600e 6 156 137
+26014 6 256 82
+2601a a 223 27
+26024 2 1139 87
+26026 2 277 82
+26028 2 1139 87
+2602a 2 223 27
+2602c 16 223 27
+26042 c 223 27
+2604e 4 223 27
+26052 a 223 27
+2605c 6 223 27
+26062 8 223 27
+2606a 6 85 79
+26070 6 223 27
+26076 6 156 137
+2607c 6 256 82
+26082 a 224 27
+2608c 2 1139 87
+2608e 2 277 82
+26090 2 1139 87
+26092 2 224 27
+26094 16 224 27
+260aa c 224 27
+260b6 4 224 27
+260ba a 224 27
+260c4 6 224 27
+260ca 8 224 27
+260d2 6 85 79
+260d8 6 224 27
+260de 6 156 137
+260e4 6 256 82
+260ea a 225 27
+260f4 2 1139 87
+260f6 2 277 82
+260f8 2 1139 87
+260fa 2 225 27
+260fc 16 225 27
+26112 c 225 27
+2611e 4 225 27
+26122 a 225 27
+2612c 6 225 27
+26132 8 225 27
+2613a 6 85 79
+26140 6 225 27
+26146 6 156 137
+2614c 6 256 82
+26152 a 226 27
+2615c 2 1139 87
+2615e 2 277 82
+26160 2 1139 87
+26162 2 226 27
+26164 16 226 27
+2617a c 226 27
+26186 4 226 27
+2618a a 226 27
+26194 6 226 27
+2619a 8 226 27
+261a2 6 85 79
+261a8 6 226 27
+261ae 6 156 137
+261b4 6 256 82
+261ba a 227 27
+261c4 2 1139 87
+261c6 2 277 82
+261c8 2 1139 87
+261ca 2 227 27
+261cc 16 227 27
+261e2 c 227 27
+261ee 4 227 27
+261f2 a 227 27
+261fc 6 227 27
+26202 8 227 27
+2620a 6 85 79
+26210 6 227 27
+26216 6 156 137
+2621c 6 256 82
+26222 a 228 27
+2622c 2 1139 87
+2622e 2 277 82
+26230 2 1139 87
+26232 2 228 27
+26234 16 228 27
+2624a a 228 27
+26254 4 228 27
+26258 a 228 27
+26262 6 228 27
+26268 8 228 27
+26270 6 85 79
+26276 6 228 27
+2627c 6 156 137
+26282 6 256 82
+26288 6 230 27
+2628e 6 230 27
+26294 c 205 121
+262a0 12 156 137
+262b2 192 231 27
+FUNC 26444 7d0 0 MinidumpWriterTest_MappingInfoContained_Test::TestBody
+26444 c 236 27
+26450 6 236 27
+26456 4 238 27
+2645a 4 236 27
+2645e e 238 27
+2646c 8 238 27
+26474 2 238 27
+26476 2 238 27
+26478 2 238 27
+2647a e 238 27
+26488 8 238 27
+26490 6 302 82
+26496 12 238 27
+264a8 6 238 27
+264ae 8 238 27
+264b6 6 85 79
+264bc 6 238 27
+264c2 e 256 82
+264d0 6 242 27
+264d6 6 247 27
+264dc 4 243 27
+264e0 2 242 27
+264e2 4 243 27
+264e6 1a 247 27
+26500 a 251 27
+2650a 2 252 27
+2650c 4 251 27
+26510 a 252 27
+2651a c 962 136
+26526 4 255 27
+2652a 2 256 27
+2652c 2 255 27
+2652e a 256 27
+26538 4 452 136
+2653c 2 263 27
+2653e 6 452 136
+26544 6 263 27
+2654a 12 264 27
+2655c c 265 27
+26568 8 266 27
+26570 4 265 27
+26574 1a 266 27
+2658e 6 302 82
+26594 14 266 27
+265a8 6 266 27
+265ae 8 266 27
+265b6 6 85 79
+265bc 6 266 27
+265c2 e 256 82
+265d0 4 269 27
+265d4 8 267 27
+265dc 8 269 27
+265e4 6 270 27
+265ea 2 269 27
+265ec 2 197 57
+265ee 4 270 27
+265f2 c 271 27
+265fe 8 1512 82
+26606 2 271 27
+26608 e 1512 82
+26616 4 271 27
+2661a 6 302 82
+26620 14 271 27
+26634 6 271 27
+2663a 8 271 27
+26642 6 85 79
+26648 8 271 27
+26650 6 256 82
+26656 2 272 27
+26658 4 280 27
+2665c 8 272 27
+26664 16 280 27
+2667a c 277 82
+26686 4 1139 87
+2668a 2 282 27
+2668c 1e 282 27
+266aa 16 282 27
+266c0 6 282 27
+266c6 8 282 27
+266ce 6 85 79
+266d4 6 282 27
+266da 6 156 137
+266e0 e 256 82
+266ee 6 283 27
+266f4 4 285 27
+266f8 4 286 27
+266fc 8 287 27
+26704 10 289 27
+26714 4 289 27
+26718 6 289 27
+2671e 8 290 27
+26726 6 291 27
+2672c 2 296 27
+2672e 8 293 27
+26736 c 296 27
+26742 2 297 27
+26744 4 306 27
+26748 e 299 27
+26756 4 297 27
+2675a 4 299 27
+2675e a 304 27
+26768 2 353 121
+2676a 4 305 27
+2676e 4 353 121
+26772 6 307 27
+26778 4 304 27
+2677c 4 305 27
+26780 4 306 27
+26784 4 307 27
+26788 c 353 121
+26794 2 312 27
+26796 8 353 121
+2679e c 312 27
+267aa c 313 27
+267b6 8 229 146
+267be 1a 315 27
+267d8 2 277 82
+267da 8 1139 87
+267e2 2 315 27
+267e4 16 315 27
+267fa 16 315 27
+26810 6 315 27
+26816 8 315 27
+2681e 6 85 79
+26824 6 315 27
+2682a 6 156 137
+26830 e 256 82
+2683e 8 321 27
+26846 a 322 27
+26850 2 277 82
+26852 4 1139 87
+26856 2 322 27
+26858 16 322 27
+2686e 16 322 27
+26884 6 256 82
+2688a 6 324 27
+26890 a 277 82
+2689a 4 1139 87
+2689e 2 325 27
+268a0 16 325 27
+268b6 16 325 27
+268cc 6 256 82
+268d2 c 327 27
+268de a 277 82
+268e8 4 1139 87
+268ec 2 328 27
+268ee 16 328 27
+26904 18 328 27
+2691c 6 328 27
+26922 8 328 27
+2692a 6 85 79
+26930 6 328 27
+26936 6 156 137
+2693c 14 256 82
+26950 8 330 27
+26958 2 1512 82
+2695a 4 330 27
+2695e 10 1512 82
+2696e 4 330 27
+26972 6 302 82
+26978 16 330 27
+2698e 6 330 27
+26994 8 330 27
+2699c 6 85 79
+269a2 6 330 27
+269a8 6 256 82
+269ae 8 331 27
+269b6 2 1512 82
+269b8 4 331 27
+269bc 2 1512 82
+269be 4 331 27
+269c2 10 1512 82
+269d2 4 331 27
+269d6 6 302 82
+269dc 14 331 27
+269f0 6 331 27
+269f6 8 331 27
+269fe 6 85 79
+26a04 6 331 27
+26a0a a 256 82
+26a14 c 332 27
+26a20 12 1512 82
+26a32 6 156 137
+26a38 4 332 27
+26a3c 6 302 82
+26a42 c 332 27
+26a4e 4 332 27
+26a52 8 332 27
+26a5a 6 332 27
+26a60 8 332 27
+26a68 6 85 79
+26a6e 6 332 27
+26a74 6 256 82
+26a7a c 333 27
+26a86 14 1512 82
+26a9a 6 156 137
+26aa0 4 333 27
+26aa4 6 302 82
+26aaa c 333 27
+26ab6 2 333 27
+26ab8 8 333 27
+26ac0 6 333 27
+26ac6 8 333 27
+26ace 6 85 79
+26ad4 6 333 27
+26ada 6 256 82
+26ae0 6 335 27
+26ae6 6 335 27
+26aec c 205 121
+26af8 6 156 137
+26afe 6 203 57
+26b04 6 156 137
+26b0a 6 263 27
+26b10 4 156 137
+26b14 c 205 121
+26b20 6 156 137
+26b26 4 203 57
+26b2a 4 203 57
+26b2e 12 156 137
+26b40 d4 336 27
+FUNC 26c14 8a8 0 MinidumpWriterTest_DeletedBinary_Test::TestBody
+26c14 c 338 27
+26c20 4 338 27
+26c24 4 339 27
+26c28 2 338 27
+26c2a 8 339 27
+26c32 2 340 27
+26c34 4 339 27
+26c38 4 338 27
+26c3c 4 339 27
+26c40 6 340 27
+26c46 c 341 27
+26c52 1a 342 27
+26c6c 6 342 27
+26c72 2 131 79
+26c74 c 333 127
+26c80 8 342 27
+26c88 6 85 79
+26c8e 6 342 27
+26c94 2 342 27
+26c96 8 347 27
+26c9e 12 348 27
+26cb0 a 349 27
+26cba 4 1139 87
+26cbe 2 277 82
+26cc0 a 1139 87
+26cca 4 349 27
+26cce 20 349 27
+26cee 18 349 27
+26d06 6 350 27
+26d0c 2 131 79
+26d0e c 333 127
+26d1a 2 131 79
+26d1c 8 131 79
+26d24 2 131 79
+26d26 c 333 127
+26d32 2 131 79
+26d34 8 131 79
+26d3c 8 350 27
+26d44 6 85 79
+26d4a 6 349 27
+26d50 8 156 137
+26d58 6 256 82
+26d5e 8 351 27
+26d66 4 351 27
+26d6a 4 351 27
+26d6e 8 1552 82
+26d76 2 351 27
+26d78 e 1552 82
+26d86 4 351 27
+26d8a 6 302 82
+26d90 14 351 27
+26da4 6 351 27
+26daa 8 351 27
+26db2 6 85 79
+26db8 6 351 27
+26dbe e 256 82
+26dcc e 354 27
+26dda 8 354 27
+26de2 2 354 27
+26de4 e 354 27
+26df2 4 354 27
+26df6 6 302 82
+26dfc 14 354 27
+26e10 6 354 27
+26e16 8 354 27
+26e1e 6 85 79
+26e24 4 354 27
+26e28 6 256 82
+26e2e 4 356 27
+26e32 4 357 27
+26e36 6 359 27
+26e3c 14 363 27
+26e50 10 368 27
+26e60 c 370 27
+26e6c 6 373 27
+26e72 6 374 27
+26e78 4 375 27
+26e7c 12 377 27
+26e8e 4 377 27
+26e92 8 377 27
+26e9a 6 256 82
+26ea0 a 383 27
+26eaa 2 387 27
+26eac 6 390 27
+26eb2 4 387 27
+26eb6 c 390 27
+26ec2 12 392 27
+26ed4 c 395 27
+26ee0 4 394 27
+26ee4 4 395 27
+26ee8 4 1139 87
+26eec 2 277 82
+26eee 4 1139 87
+26ef2 6 395 27
+26ef8 20 395 27
+26f18 18 395 27
+26f30 6 395 27
+26f36 8 395 27
+26f3e 6 85 79
+26f44 6 395 27
+26f4a 6 156 137
+26f50 6 256 82
+26f56 1e 156 137
+26f74 12 429 27
+26f86 2 378 27
+26f88 4 1512 82
+26f8c 2 378 27
+26f8e 4 1512 82
+26f92 2 377 27
+26f94 a 1512 82
+26f9e 2 377 27
+26fa0 4 1512 82
+26fa4 6 378 27
+26faa 6 302 82
+26fb0 16 378 27
+26fc6 6 378 27
+26fcc 8 378 27
+26fd4 6 85 79
+26fda 4 378 27
+26fde 6 256 82
+26fe4 2 1139 87
+26fe6 2 379 27
+26fe8 2 1139 87
+26fea 4 379 27
+26fee 2 277 82
+26ff0 2 379 27
+26ff2 1e 379 27
+27010 18 379 27
+27028 6 379 27
+2702e 8 379 27
+27036 6 85 79
+2703c 6 379 27
+27042 8 156 137
+2704a 6 256 82
+27050 16 381 27
+27066 4 381 27
+2706a 6 381 27
+27070 2 382 27
+27072 2 1512 82
+27074 2 382 27
+27076 2 1512 82
+27078 2 381 27
+2707a a 1512 82
+27084 2 381 27
+27086 4 1512 82
+2708a a 382 27
+27094 6 302 82
+2709a 12 382 27
+270ac 6 382 27
+270b2 8 382 27
+270ba 6 85 79
+270c0 6 382 27
+270c6 a 256 82
+270d0 8 397 27
+270d8 6 400 27
+270de 4 400 27
+270e2 4 400 27
+270e6 8 1552 82
+270ee 2 400 27
+270f0 e 1552 82
+270fe 6 400 27
+27104 6 302 82
+2710a 12 400 27
+2711c 6 400 27
+27122 8 400 27
+2712a 6 85 79
+27130 8 400 27
+27138 6 256 82
+2713e 18 401 27
+27156 6 302 82
+2715c 10 401 27
+2716c 4 403 27
+27170 6 256 82
+27176 8 403 27
+2717e a 404 27
+27188 2 277 82
+2718a 4 1139 87
+2718e 2 404 27
+27190 16 404 27
+271a6 14 404 27
+271ba 6 256 82
+271c0 6 407 27
+271c6 a 277 82
+271d0 4 1139 87
+271d4 2 408 27
+271d6 16 408 27
+271ec 16 408 27
+27202 6 408 27
+27208 8 408 27
+27210 6 85 79
+27216 6 408 27
+2721c 6 156 137
+27222 e 256 82
+27230 e 409 27
+2723e 6 410 27
+27244 2 410 27
+27246 6 410 27
+2724c 16 410 27
+27262 6 156 137
+27268 4 410 27
+2726c 6 302 82
+27272 12 410 27
+27284 6 410 27
+2728a 8 410 27
+27292 6 85 79
+27298 6 410 27
+2729e 4 256 82
+272a2 2 412 27
+272a4 6 256 82
+272aa 4 414 27
+272ae 8 412 27
+272b6 8 414 27
+272be 2 1139 87
+272c0 2 256 82
+272c2 2 277 82
+272c4 2 1139 87
+272c6 2 414 27
+272c8 16 414 27
+272de a 414 27
+272e8 2 414 27
+272ea c 414 27
+272f6 6 414 27
+272fc 8 414 27
+27304 6 85 79
+2730a 6 414 27
+27310 6 156 137
+27316 6 256 82
+2731c 2 419 27
+2731e a 418 27
+27328 a 419 27
+27332 c 962 136
+2733e 2 422 27
+27340 2 423 27
+27342 2 422 27
+27344 8 423 27
+2734c 2 452 136
+2734e 2 428 27
+27350 6 452 136
+27356 a 428 27
+27360 12 1512 82
+27372 6 156 137
+27378 4 428 27
+2737c 6 302 82
+27382 a 428 27
+2738c 2 428 27
+2738e 8 428 27
+27396 6 428 27
+2739c 8 428 27
+273a4 6 85 79
+273aa 6 428 27
+273b0 6 256 82
+273b6 14 156 137
+273ca f2 429 27
+FUNC 274bc 298 0 MinidumpWriterTest_InvalidStackPointer_Test::TestBody
+274bc c 504 27
+274c8 a 504 27
+274d2 2 506 27
+274d4 4 504 27
+274d8 e 506 27
+274e6 6 506 27
+274ec 4 506 27
+274f0 e 506 27
+274fe c 506 27
+2750a 6 302 82
+27510 10 506 27
+27520 6 256 82
+27526 4 508 27
+2752a 4 509 27
+2752e 6 510 27
+27534 e 512 27
+27542 4 512 27
+27546 6 512 27
+2754c 6 513 27
+27552 6 514 27
+27558 6 516 27
+2755e a 523 27
+27568 4 1552 82
+2756c 2 523 27
+2756e 2 1552 82
+27570 2 523 27
+27572 e 1552 82
+27580 c 523 27
+2758c 6 302 82
+27592 12 523 27
+275a4 6 523 27
+275aa 8 523 27
+275b2 6 85 79
+275b8 6 523 27
+275be e 256 82
+275cc 2 524 27
+275ce 4 546 27
+275d2 4 524 27
+275d6 2 546 27
+275d8 4 530 27
+275dc 4 536 27
+275e0 4 546 27
+275e4 10 547 27
+275f4 10 550 27
+27604 2 1139 87
+27606 2 277 82
+27608 6 1139 87
+2760e 2 550 27
+27610 16 550 27
+27626 16 550 27
+2763c 6 550 27
+27642 8 550 27
+2764a 6 85 79
+27650 6 550 27
+27656 6 156 137
+2765c e 256 82
+2766a 8 553 27
+27672 6 554 27
+27678 2 1139 87
+2767a 2 277 82
+2767c 2 1139 87
+2767e 2 554 27
+27680 18 554 27
+27698 14 554 27
+276ac 6 554 27
+276b2 8 554 27
+276ba 6 85 79
+276c0 6 554 27
+276c6 6 156 137
+276cc 14 256 82
+276e0 6 579 27
+276e6 6 579 27
+276ec 10 156 137
+276fc 58 580 27
+FUNC 27754 5a4 0 MinidumpWriterTest_AdditionalMemory_Test::TestBody
+27754 c 432 27
+27760 6 432 27
+27766 2 434 27
+27768 4 432 27
+2776c 10 434 27
+2777c c 434 27
+27788 4 434 27
+2778c e 434 27
+2779a a 434 27
+277a4 6 302 82
+277aa 14 434 27
+277be 6 434 27
+277c4 8 434 27
+277cc 6 85 79
+277d2 6 434 27
+277d8 a 256 82
+277e2 a 438 27
+277ec 4 441 27
+277f0 6 277 82
+277f6 2 1139 87
+277f8 2 441 27
+277fa 2 442 27
+277fc 2 256 82
+277fe 4 1139 87
+27802 4 256 82
+27806 6 446 27
+2780c 6 446 27
+27812 c 447 27
+2781e 4 450 27
+27822 4 451 27
+27826 8 452 27
+2782e 10 454 27
+2783e 4 454 27
+27842 6 454 27
+27848 8 455 27
+27850 6 456 27
+27856 2 458 27
+27858 2 465 27
+2785a 6 458 27
+27860 a 465 27
+2786a a 1552 82
+27874 2 465 27
+27876 e 1552 82
+27884 8 465 27
+2788c 6 302 82
+27892 12 465 27
+278a4 6 465 27
+278aa 8 465 27
+278b2 6 85 79
+278b8 6 465 27
+278be a 256 82
+278c8 4 468 27
+278cc 4 256 82
+278d0 2 468 27
+278d2 2 466 27
+278d4 4 468 27
+278d8 10 469 27
+278e8 4 353 121
+278ec 8 470 27
+278f4 10 353 121
+27904 2 477 27
+27906 2 307 106
+27908 2 477 27
+2790a c 478 27
+27916 4 306 106
+2791a 6 307 106
+27920 4 119 108
+27924 a 119 108
+2792e 2 427 121
+27930 2 428 121
+27932 2 429 121
+27934 2 430 121
+27936 2 431 121
+27938 16 480 27
+2794e 2 1139 87
+27950 4 277 82
+27954 a 1139 87
+2795e 2 480 27
+27960 16 480 27
+27976 16 480 27
+2798c 6 480 27
+27992 8 480 27
+2799a 6 85 79
+279a0 6 480 27
+279a6 6 156 137
+279ac e 256 82
+279ba 8 484 27
+279c2 6 485 27
+279c8 2 1139 87
+279ca 2 277 82
+279cc 2 1139 87
+279ce 2 485 27
+279d0 1a 485 27
+279ea 14 485 27
+279fe 6 256 82
+27a04 6 487 27
+27a0a 6 277 82
+27a10 2 1139 87
+27a12 4 277 82
+27a16 2 1139 87
+27a18 2 488 27
+27a1a 1a 488 27
+27a34 14 488 27
+27a48 6 256 82
+27a4e 14 490 27
+27a62 6 277 82
+27a68 2 1139 87
+27a6a 4 277 82
+27a6e 2 1139 87
+27a70 2 491 27
+27a72 1a 491 27
+27a8c 16 491 27
+27aa2 6 491 27
+27aa8 8 491 27
+27ab0 6 85 79
+27ab6 6 491 27
+27abc 6 156 137
+27ac2 e 256 82
+27ad0 a 493 27
+27ada 2 1512 82
+27adc 4 493 27
+27ae0 10 1512 82
+27af0 4 493 27
+27af4 6 302 82
+27afa 12 493 27
+27b0c 6 493 27
+27b12 8 493 27
+27b1a 6 85 79
+27b20 6 493 27
+27b26 6 256 82
+27b2c a 494 27
+27b36 4 1481 82
+27b3a 4 494 27
+27b3e 2 1481 82
+27b40 2 256 82
+27b42 4 494 27
+27b46 2 1481 82
+27b48 8 1482 82
+27b50 12 1382 82
+27b62 16 1471 82
+27b78 e 156 137
+27b86 4 494 27
+27b8a 4 302 82
+27b8e c 494 27
+27b9a 2 494 27
+27b9c 8 494 27
+27ba4 6 494 27
+27baa 8 494 27
+27bb2 6 85 79
+27bb8 6 494 27
+27bbe 8 256 82
+27bc6 a 497 27
+27bd0 a 497 27
+27bda 4 1552 82
+27bde 6 497 27
+27be4 e 1552 82
+27bf2 6 497 27
+27bf8 6 302 82
+27bfe 12 497 27
+27c10 6 497 27
+27c16 8 497 27
+27c1e 6 85 79
+27c24 6 497 27
+27c2a 6 256 82
+27c30 6 499 27
+27c36 e 500 27
+27c44 c 205 121
+27c50 c 156 137
+27c5c 9c 501 27
+FUNC 27cf8 dec 0 MinidumpWriterTest_MinidumpSizeLimit_Test::TestBody
+27cf8 8 583 27
+27d00 4 587 27
+27d04 6 583 27
+27d0a 2 583 27
+27d0c 8 587 27
+27d14 2 589 27
+27d16 4 587 27
+27d1a 2 583 27
+27d1c 4 587 27
+27d20 6 589 27
+27d26 c 590 27
+27d32 c 591 27
+27d3e 2 591 27
+27d40 e 591 27
+27d4e 6 591 27
+27d54 2 131 79
+27d56 c 333 127
+27d62 8 591 27
+27d6a 6 85 79
+27d70 6 591 27
+27d76 2 591 27
+27d78 e 596 27
+27d86 c 596 27
+27d92 4 596 27
+27d96 e 596 27
+27da4 a 596 27
+27dae 6 302 82
+27db4 14 596 27
+27dc8 6 596 27
+27dce 8 596 27
+27dd6 6 85 79
+27ddc 6 596 27
+27de2 a 256 82
+27dec 4 598 27
+27df0 4 599 27
+27df4 2 605 27
+27df6 6 601 27
+27dfc c 605 27
+27e08 e 610 27
+27e16 a 612 27
+27e20 20 1512 82
+27e40 4 617 27
+27e44 4 618 27
+27e48 2 617 27
+27e4a 6 618 27
+27e50 4 619 27
+27e54 14 621 27
+27e68 4 621 27
+27e6c a 621 27
+27e76 6 256 82
+27e7c 2 1139 87
+27e7e 2 623 27
+27e80 2 1139 87
+27e82 4 623 27
+27e86 2 277 82
+27e88 6 623 27
+27e8e 1e 623 27
+27eac 16 623 27
+27ec2 6 623 27
+27ec8 8 623 27
+27ed0 6 85 79
+27ed6 6 623 27
+27edc 6 156 137
+27ee2 a 256 82
+27eec 4 725 27
+27ef0 4 256 82
+27ef4 4 725 27
+27ef8 4 726 27
+27efc 6 726 27
+27f02 6 726 27
+27f08 6 748 27
+27f0e 4 1619 82
+27f12 2 748 27
+27f14 6 1619 82
+27f1a 6 1619 82
+27f20 4 748 27
+27f24 6 302 82
+27f2a 16 748 27
+27f40 6 748 27
+27f46 8 749 27
+27f4e 6 85 79
+27f54 6 748 27
+27f5a 6 256 82
+27f60 6 749 27
+27f66 6 156 137
+27f6c e 753 27
+27f7a 6 156 137
+27f80 10 754 27
+27f90 4 622 27
+27f94 4 621 27
+27f98 2 622 27
+27f9a 2 1512 82
+27f9c 2 621 27
+27f9e 4 622 27
+27fa2 e 1512 82
+27fb0 e 622 27
+27fbe 6 302 82
+27fc4 10 622 27
+27fd4 6 256 82
+27fda 14 625 27
+27fee e 1512 82
+27ffc 4 625 27
+28000 6 302 82
+28006 12 625 27
+28018 6 625 27
+2801e 8 625 27
+28026 6 85 79
+2802c 8 625 27
+28034 6 256 82
+2803a 8 615 27
+28042 8 628 27
+2804a 4 640 27
+2804e 6 633 27
+28054 6 640 27
+2805a 14 645 27
+2806e 10 353 121
+2807e 16 646 27
+28094 4 1139 87
+28098 2 277 82
+2809a c 205 121
+280a6 8 646 27
+280ae 18 646 27
+280c6 14 646 27
+280da 6 646 27
+280e0 8 646 27
+280e8 6 85 79
+280ee 6 646 27
+280f4 6 156 137
+280fa a 256 82
+28104 6 650 27
+2810a 4 650 27
+2810e 4 650 27
+28112 8 1552 82
+2811a 2 650 27
+2811c e 1552 82
+2812a 4 650 27
+2812e 6 302 82
+28134 12 650 27
+28146 6 650 27
+2814c 8 650 27
+28154 6 85 79
+2815a 4 650 27
+2815e 6 256 82
+28164 18 651 27
+2817c 6 302 82
+28182 10 651 27
+28192 4 654 27
+28196 6 256 82
+2819c 4 654 27
+281a0 4 652 27
+281a4 4 654 27
+281a8 6 655 27
+281ae 4 1139 87
+281b2 2 277 82
+281b4 2 655 27
+281b6 1a 655 27
+281d0 14 655 27
+281e4 6 256 82
+281ea 6 656 27
+281f0 a 277 82
+281fa 4 1139 87
+281fe 2 657 27
+28200 1a 657 27
+2821a 16 657 27
+28230 6 657 27
+28236 8 657 27
+2823e 6 85 79
+28244 6 657 27
+2824a 4 156 137
+2824e 6 256 82
+28254 2 271 65
+28256 4 639 27
+2825a 2 658 27
+2825c 6 256 82
+28262 a 664 27
+2826c 4 658 27
+28270 4 664 27
+28274 4 658 27
+28278 6 658 27
+2827e 6 658 27
+28284 c 659 27
+28290 2 271 65
+28292 2 659 27
+28294 2 271 65
+28296 4 271 65
+2829a 6 660 27
+282a0 2 1139 87
+282a2 2 277 82
+282a4 2 660 27
+282a6 18 660 27
+282be 12 660 27
+282d0 2 663 27
+282d2 4 663 27
+282d6 6 663 27
+282dc 8 663 27
+282e4 6 85 79
+282ea 6 663 27
+282f0 6 156 137
+282f6 14 256 82
+2830a 8 662 27
+28312 8 663 27
+2831a 2 277 82
+2831c 2 1139 87
+2831e 4 663 27
+28322 18 663 27
+2833a ce 663 27
+28408 2 677 27
+2840a 4 156 137
+2840e 6 665 27
+28414 6 156 137
+2841a 4 676 27
+2841e 2 353 121
+28420 a 676 27
+2842a 16 353 121
+28440 14 677 27
+28454 4 277 82
+28458 2 1139 87
+2845a c 205 121
+28466 8 677 27
+2846e 1e 677 27
+2848c 16 677 27
+284a2 6 677 27
+284a8 8 677 27
+284b0 6 85 79
+284b6 6 677 27
+284bc 6 156 137
+284c2 a 256 82
+284cc 6 681 27
+284d2 2 681 27
+284d4 4 681 27
+284d8 8 1552 82
+284e0 2 681 27
+284e2 e 1552 82
+284f0 8 681 27
+284f8 6 302 82
+284fe 14 681 27
+28512 6 681 27
+28518 8 681 27
+28520 6 85 79
+28526 6 681 27
+2852c a 256 82
+28536 18 1481 82
+2854e 8 1482 82
+28556 a 884 80
+28560 4 75 132
+28564 8 259 126
+2856c 8 75 132
+28574 6 886 80
+2857a 8 1382 82
+28582 18 1471 82
+2859a e 156 137
+285a8 6 686 27
+285ae 6 302 82
+285b4 c 686 27
+285c0 2 686 27
+285c2 8 686 27
+285ca 6 686 27
+285d0 8 686 27
+285d8 6 85 79
+285de 6 686 27
+285e4 e 256 82
+285f2 a 156 137
+285fc 6 699 27
+28602 4 710 27
+28606 6 699 27
+2860c 12 709 27
+2861e 1e 353 121
+2863c 14 710 27
+28650 4 277 82
+28654 4 1139 87
+28658 c 205 121
+28664 8 710 27
+2866c 18 710 27
+28684 14 710 27
+28698 6 710 27
+2869e 8 710 27
+286a6 6 85 79
+286ac 6 710 27
+286b2 6 156 137
+286b8 4 256 82
+286bc 4 156 137
+286c0 6 256 82
+286c6 a 714 27
+286d0 4 714 27
+286d4 4 714 27
+286d8 8 1552 82
+286e0 2 714 27
+286e2 e 1552 82
+286f0 6 714 27
+286f6 6 302 82
+286fc 12 714 27
+2870e 6 714 27
+28714 8 714 27
+2871c 6 85 79
+28722 6 714 27
+28728 8 256 82
+28730 4 715 27
+28734 6 256 82
+2873a 1c 715 27
+28756 6 302 82
+2875c 10 715 27
+2876c 6 256 82
+28772 10 1619 82
+28782 12 1619 82
+28794 10 1583 82
+287a4 a 1583 82
+287ae 6 1583 82
+287b4 2 1583 82
+287b6 2 1382 82
+287b8 6 1583 82
+287be 6 1583 82
+287c4 8 1583 82
+287cc 6 1583 82
+287d2 a 1584 82
+287dc 8 1382 82
+287e4 8 1584 82
+287ec 2 1585 82
+287ee 2 884 80
+287f0 8 1585 82
+287f8 8 884 80
+28800 8 259 126
+28808 8 75 132
+28810 6 886 80
+28816 a 1585 82
+28820 6 1585 82
+28826 c 156 137
+28832 8 256 82
+2883a 6 719 27
+28840 6 302 82
+28846 14 719 27
+2885a 6 719 27
+28860 8 719 27
+28868 6 85 79
+2886e 6 719 27
+28874 4 721 27
+28878 6 256 82
+2887e 8 721 27
+28886 6 722 27
+2888c 2 1139 87
+2888e 2 277 82
+28890 4 1139 87
+28894 2 722 27
+28896 18 722 27
+288ae 14 722 27
+288c2 6 256 82
+288c8 6 723 27
+288ce a 277 82
+288d8 2 1139 87
+288da 6 724 27
+288e0 18 724 27
+288f8 14 724 27
+2890c c 727 27
+28918 2 271 65
+2891a 2 727 27
+2891c 2 271 65
+2891e 4 271 65
+28922 6 728 27
+28928 2 1139 87
+2892a 2 277 82
+2892c 2 1139 87
+2892e 2 728 27
+28930 18 728 27
+28948 12 728 27
+2895a 4 731 27
+2895e 6 731 27
+28964 8 731 27
+2896c 6 85 79
+28972 6 731 27
+28978 6 156 137
+2897e 14 256 82
+28992 a 730 27
+2899c 6 731 27
+289a2 2 1139 87
+289a4 2 731 27
+289a6 2 277 82
+289a8 2 1139 87
+289aa 2 731 27
+289ac 18 731 27
+289c4 14 731 27
+289d8 6 256 82
+289de e 732 27
+289ec 2 726 27
+289ee a 732 27
+289f8 1a 1619 82
+28a12 a 156 137
+28a1c c8 754 27
+FUNC 28ae4 2a0 0 google_breakpad::GetHelperBinary
+28ae4 6 42 28
+28aea 4 101 108
+28aee a 42 28
+28af8 4 120 137
+28afc 2 42 28
+28afe 4 120 137
+28b02 6 42 28
+28b08 2 124 137
+28b0a 2 42 28
+28b0c 2 120 137
+28b0e 2 124 137
+28b10 2 481 106
+28b12 2 42 28
+28b14 6 124 137
+28b1a 2 44 28
+28b1c 4 101 108
+28b20 a 44 28
+28b2a 8 45 28
+28b32 e 46 28
+28b40 8 400 136
+28b48 2 124 137
+28b4a 2 400 136
+28b4c 2 124 137
+28b4e 2 120 137
+28b50 2 481 106
+28b52 6 124 137
+28b58 2 517 136
+28b5a 4 101 108
+28b5e c 517 136
+28b6a 4 74 137
+28b6e 4 74 137
+28b72 6 74 137
+28b78 6 74 137
+28b7e 2 74 137
+28b80 4 472 136
+28b84 8 473 136
+28b8c 4 346 106
+28b90 4 347 106
+28b94 8 348 106
+28b9c 4 352 106
+28ba0 4 353 106
+28ba4 2 356 106
+28ba6 c 120 142
+28bb2 a 148 142
+28bbc 2 101 108
+28bbe 2 148 142
+28bc0 2 101 108
+28bc2 6 478 136
+28bc8 4 479 136
+28bcc 4 160 137
+28bd0 4 164 137
+28bd4 6 165 137
+28bda 2 232 145
+28bdc 2 482 136
+28bde 2 148 142
+28be0 2 232 145
+28be2 2 483 136
+28be4 c 148 142
+28bf0 6 101 108
+28bf6 6 485 136
+28bfc a 349 136
+28c06 e 156 137
+28c14 12 60 49
+28c26 2 50 28
+28c28 8 51 28
+28c30 c 53 28
+28c3c a 349 136
+28c46 a 156 137
+28c50 6 471 135
+28c56 2 162 104
+28c58 4 164 104
+28c5c 8 165 104
+28c64 8 168 104
+28c6c 2 81 118
+28c6e 6 65 118
+28c74 8 171 104
+28c7c 4 81 118
+28c80 8 174 104
+28c88 4 81 118
+28c8c 6 164 104
+28c92 2 152 118
+28c94 12 178 104
+28ca6 8 180 104
+28cae 6 81 118
+28cb4 4 76 118
+28cb8 8 183 104
+28cc0 6 81 118
+28cc6 4 76 118
+28cca 8 186 104
+28cd2 4 65 118
+28cd6 4 74 118
+28cda 4 478 135
+28cde 4 478 135
+28ce2 4 55 28
+28ce6 e 56 28
+28cf4 2 58 28
+28cf6 4 789 136
+28cfa 8 604 135
+28d02 8 791 136
+28d0a 12 530 136
+28d1c 2 379 136
+28d1e 2 378 136
+28d20 2 379 136
+28d22 2 112 137
+28d24 2 481 106
+28d26 4 379 136
+28d2a a 148 142
+28d34 2 101 108
+28d36 2 380 136
+28d38 2 101 108
+28d3a 6 156 137
+28d40 44 64 28
+FUNC 28d84 18 0 ProcCpuInfoReaderTest_EmptyValue_Test::~ProcCpuInfoReaderTest_EmptyValue_Test
+28d84 2 186 30
+28d86 16 186 30
+FUNC 28d9c 12 0 ProcCpuInfoReaderTest_EmptyValue_Test::~ProcCpuInfoReaderTest_EmptyValue_Test
+28d9c 2 186 30
+28d9e 6 186 30
+28da4 6 186 30
+28daa 4 186 30
+FUNC 28db0 18 0 ProcCpuInfoReaderTest_FieldWithSpaces_Test::~ProcCpuInfoReaderTest_FieldWithSpaces_Test
+28db0 2 173 30
+28db2 16 173 30
+FUNC 28dc8 12 0 ProcCpuInfoReaderTest_FieldWithSpaces_Test::~ProcCpuInfoReaderTest_FieldWithSpaces_Test
+28dc8 2 173 30
+28dca 6 173 30
+28dd0 6 173 30
+28dd6 4 173 30
+FUNC 28ddc 18 0 ProcCpuInfoReaderTest_SkipTwoEmptyLines_Test::~ProcCpuInfoReaderTest_SkipTwoEmptyLines_Test
+28ddc 2 156 30
+28dde 16 156 30
+FUNC 28df4 12 0 ProcCpuInfoReaderTest_SkipTwoEmptyLines_Test::~ProcCpuInfoReaderTest_SkipTwoEmptyLines_Test
+28df4 2 156 30
+28df6 6 156 30
+28dfc 6 156 30
+28e02 4 156 30
+FUNC 28e08 18 0 ProcCpuInfoReaderTest_SkipEmptyField_Test::~ProcCpuInfoReaderTest_SkipEmptyField_Test
+28e08 2 143 30
+28e0a 16 143 30
+FUNC 28e20 12 0 ProcCpuInfoReaderTest_SkipEmptyField_Test::~ProcCpuInfoReaderTest_SkipEmptyField_Test
+28e20 2 143 30
+28e22 6 143 30
+28e28 6 143 30
+28e2e 4 143 30
+FUNC 28e34 18 0 ProcCpuInfoReaderTest_SkipOneEmptyLine_Test::~ProcCpuInfoReaderTest_SkipOneEmptyLine_Test
+28e34 2 130 30
+28e36 16 130 30
+FUNC 28e4c 12 0 ProcCpuInfoReaderTest_SkipOneEmptyLine_Test::~ProcCpuInfoReaderTest_SkipOneEmptyLine_Test
+28e4c 2 130 30
+28e4e 6 130 30
+28e54 6 130 30
+28e5a 4 130 30
+FUNC 28e60 18 0 ProcCpuInfoReaderTest_SkipMalformedLine_Test::~ProcCpuInfoReaderTest_SkipMalformedLine_Test
+28e60 2 117 30
+28e62 16 117 30
+FUNC 28e78 12 0 ProcCpuInfoReaderTest_SkipMalformedLine_Test::~ProcCpuInfoReaderTest_SkipMalformedLine_Test
+28e78 2 117 30
+28e7a 6 117 30
+28e80 6 117 30
+28e86 4 117 30
+FUNC 28e8c 18 0 ProcCpuInfoReaderTest_TwoLinesTerminated_Test::~ProcCpuInfoReaderTest_TwoLinesTerminated_Test
+28e8c 2 100 30
+28e8e 16 100 30
+FUNC 28ea4 12 0 ProcCpuInfoReaderTest_TwoLinesTerminated_Test::~ProcCpuInfoReaderTest_TwoLinesTerminated_Test
+28ea4 2 100 30
+28ea6 6 100 30
+28eac 6 100 30
+28eb2 4 100 30
+FUNC 28eb8 18 0 ProcCpuInfoReaderTest_OneLine_Test::~ProcCpuInfoReaderTest_OneLine_Test
+28eb8 2 85 30
+28eba 16 85 30
+FUNC 28ed0 12 0 ProcCpuInfoReaderTest_OneLine_Test::~ProcCpuInfoReaderTest_OneLine_Test
+28ed0 2 85 30
+28ed2 6 85 30
+28ed8 6 85 30
+28ede 4 85 30
+FUNC 28ee4 18 0 ProcCpuInfoReaderTest_OneLineTerminated_Test::~ProcCpuInfoReaderTest_OneLineTerminated_Test
+28ee4 2 72 30
+28ee6 16 72 30
+FUNC 28efc 12 0 ProcCpuInfoReaderTest_OneLineTerminated_Test::~ProcCpuInfoReaderTest_OneLineTerminated_Test
+28efc 2 72 30
+28efe 6 72 30
+28f04 6 72 30
+28f0a 4 72 30
+FUNC 28f10 18 0 ProcCpuInfoReaderTest_EmptyFile_Test::~ProcCpuInfoReaderTest_EmptyFile_Test
+28f10 2 63 30
+28f12 16 63 30
+FUNC 28f28 12 0 ProcCpuInfoReaderTest_EmptyFile_Test::~ProcCpuInfoReaderTest_EmptyFile_Test
+28f28 2 63 30
+28f2a 6 63 30
+28f30 6 63 30
+28f36 4 63 30
+FUNC 28f3c 20 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_SkipTwoEmptyLines_Test>::CreateTest
+28f3c 2 486 85
+28f3e 8 486 85
+28f46 6 156 30
+28f4c 2 486 85
+28f4e 6 156 30
+28f54 8 486 85
+FUNC 28f5c 20 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_EmptyValue_Test>::CreateTest
+28f5c 2 486 85
+28f5e 8 486 85
+28f66 6 186 30
+28f6c 2 486 85
+28f6e 6 186 30
+28f74 8 486 85
+FUNC 28f7c 20 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_FieldWithSpaces_Test>::CreateTest
+28f7c 2 486 85
+28f7e 8 486 85
+28f86 6 173 30
+28f8c 2 486 85
+28f8e 6 173 30
+28f94 8 486 85
+FUNC 28f9c 20 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_TwoLinesTerminated_Test>::CreateTest
+28f9c 2 486 85
+28f9e 8 486 85
+28fa6 6 100 30
+28fac 2 486 85
+28fae 6 100 30
+28fb4 8 486 85
+FUNC 28fbc 20 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_OneLine_Test>::CreateTest
+28fbc 2 486 85
+28fbe 8 486 85
+28fc6 6 85 30
+28fcc 2 486 85
+28fce 6 85 30
+28fd4 8 486 85
+FUNC 28fdc 20 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_OneLineTerminated_Test>::CreateTest
+28fdc 2 486 85
+28fde 8 486 85
+28fe6 6 72 30
+28fec 2 486 85
+28fee 6 72 30
+28ff4 8 486 85
+FUNC 28ffc 20 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_EmptyFile_Test>::CreateTest
+28ffc 2 486 85
+28ffe 8 486 85
+29006 6 63 30
+2900c 2 486 85
+2900e 6 63 30
+29014 8 486 85
+FUNC 2901c 20 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_SkipOneEmptyLine_Test>::CreateTest
+2901c 2 486 85
+2901e 8 486 85
+29026 6 130 30
+2902c 2 486 85
+2902e 6 130 30
+29034 8 486 85
+FUNC 2903c 20 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_SkipMalformedLine_Test>::CreateTest
+2903c 2 486 85
+2903e 8 486 85
+29046 6 117 30
+2904c 2 486 85
+2904e 6 117 30
+29054 8 486 85
+FUNC 2905c 20 0 testing::internal::TestFactoryImpl<ProcCpuInfoReaderTest_SkipEmptyField_Test>::CreateTest
+2905c 2 486 85
+2905e 8 486 85
+29066 6 143 30
+2906c 2 486 85
+2906e 6 143 30
+29074 8 486 85
+FUNC 2907c 116 0 google_breakpad::ProcCpuInfoReader::GetNextField
+2907c 4 54 29
+29080 4 54 29
+29084 4 70 16
+29088 a 60 29
+29092 6 118 16
+29098 2 117 16
+2909a 2 118 16
+2909c 2 117 16
+2909e 6 118 16
+290a4 8 62 29
+290ac 8 66 16
+290b4 4 70 16
+290b8 8 66 16
+290c0 8 70 16
+290c8 2 70 16
+290ca 2 69 16
+290cc 6 69 16
+290d2 8 71 16
+290da 6 78 16
+290e0 4 86 16
+290e4 6 90 16
+290ea 4 92 16
+290ee 4 93 16
+290f2 4 68 29
+290f6 4 77 29
+290fa 2 70 29
+290fc 4 77 29
+29100 6 78 29
+29106 4 83 29
+2910a 2 84 29
+2910c 2 98 16
+2910e 2 3104 97
+29110 2 98 16
+29112 4 99 16
+29116 12 3104 97
+29128 4 3104 97
+2912c 6 3104 97
+29132 4 100 16
+29136 4 103 16
+2913a 2 105 16
+2913c 2 103 16
+2913e 8 105 16
+29146 c 84 29
+29152 2 84 29
+29154 8 84 29
+2915c 4 66 29
+29160 4 88 29
+29164 4 87 29
+29168 4 88 29
+2916c 6 92 29
+29172 8 92 29
+2917a 4 92 29
+2917e 4 95 29
+29182 4 99 29
+29186 4 101 29
+2918a 2 102 29
+2918c 6 104 29
+FUNC 29194 5c 0 ScopedTestFile::ScopedTestFile
+29194 2 56 30
+29196 4 56 30
+2919a 8 60 52
+291a2 6 61 52
+291a8 8 62 52
+291b0 10 109 52
+291c0 4 109 52
+291c4 6 109 52
+291ca 4 110 52
+291ce 6 111 52
+291d4 8 112 52
+291dc a 116 52
+291e6 a 58 30
+FUNC 291f0 150 0 ProcCpuInfoReaderTest_EmptyFile_Test::TestBody
+291f0 a 63 30
+291fa 4 63 30
+291fe 2 64 30
+29200 2 63 30
+29202 6 64 30
+29208 2 63 30
+2920a 4 64 30
+2920e 2 82 52
+29210 4 1139 87
+29214 2 82 52
+29216 2 277 82
+29218 2 82 52
+2921a 2 277 82
+2921c a 1139 87
+29226 2 65 30
+29228 16 65 30
+2923e a 65 30
+29248 4 65 30
+2924c a 65 30
+29256 6 65 30
+2925c 8 65 30
+29264 6 85 79
+2926a 6 65 30
+29270 4 156 137
+29274 6 256 82
+2927a 2 49 16
+2927c 2 69 30
+2927e 2 49 16
+29280 4 48 29
+29284 2 69 30
+29286 8 49 16
+2928e 4 48 29
+29292 a 69 30
+2929c 2 277 82
+2929e 4 1139 87
+292a2 2 69 30
+292a4 1a 69 30
+292be c 69 30
+292ca 2 69 30
+292cc a 69 30
+292d6 6 69 30
+292dc 8 69 30
+292e4 6 85 79
+292ea 6 69 30
+292f0 6 156 137
+292f6 6 256 82
+292fc 6 54 30
+29302 3e 70 30
+FUNC 29340 230 0 ProcCpuInfoReaderTest_OneLineTerminated_Test::TestBody
+29340 a 72 30
+2934a 4 72 30
+2934e 2 73 30
+29350 2 72 30
+29352 8 73 30
+2935a 2 72 30
+2935c 4 73 30
+29360 4 82 52
+29364 4 1139 87
+29368 2 82 52
+2936a 2 277 82
+2936c 2 82 52
+2936e 2 277 82
+29370 8 1139 87
+29378 2 74 30
+2937a 16 74 30
+29390 12 74 30
+293a2 6 256 82
+293a8 4 49 16
+293ac 4 78 30
+293b0 2 49 16
+293b2 4 48 29
+293b6 4 78 30
+293ba 8 49 16
+293c2 4 48 29
+293c6 4 78 30
+293ca 4 1139 87
+293ce 2 277 82
+293d0 2 78 30
+293d2 18 78 30
+293ea 12 78 30
+293fc 6 256 82
+29402 1c 79 30
+2941e 6 302 82
+29424 10 79 30
+29434 6 256 82
+2943a 18 80 30
+29452 4 80 30
+29456 6 302 82
+2945c e 80 30
+2946a 2 80 30
+2946c 4 80 30
+29470 6 80 30
+29476 8 80 30
+2947e 6 85 79
+29484 8 80 30
+2948c 6 256 82
+29492 e 82 30
+294a0 2 277 82
+294a2 4 1139 87
+294a6 2 82 30
+294a8 18 82 30
+294c0 10 82 30
+294d0 4 82 30
+294d4 4 82 30
+294d8 6 82 30
+294de 8 82 30
+294e6 6 85 79
+294ec 6 82 30
+294f2 6 156 137
+294f8 6 256 82
+294fe 6 54 30
+29504 6c 83 30
+FUNC 29570 30c 0 ProcCpuInfoReaderTest_TwoLinesTerminated_Test::TestBody
+29570 a 100 30
+2957a 4 100 30
+2957e 2 101 30
+29580 2 100 30
+29582 8 101 30
+2958a 2 100 30
+2958c 4 101 30
+29590 4 82 52
+29594 2 1139 87
+29596 2 82 52
+29598 2 277 82
+2959a 4 82 52
+2959e 2 277 82
+295a0 6 1139 87
+295a6 2 102 30
+295a8 16 102 30
+295be 12 102 30
+295d0 6 256 82
+295d6 4 49 16
+295da 4 106 30
+295de 2 49 16
+295e0 4 48 29
+295e4 4 106 30
+295e8 4 49 16
+295ec 4 48 29
+295f0 4 106 30
+295f4 2 1139 87
+295f6 2 277 82
+295f8 2 106 30
+295fa 18 106 30
+29612 12 106 30
+29624 6 256 82
+2962a 20 107 30
+2964a 6 302 82
+29650 10 107 30
+29660 6 256 82
+29666 1c 108 30
+29682 4 108 30
+29686 6 302 82
+2968c 10 108 30
+2969c 6 256 82
+296a2 8 110 30
+296aa 2 1139 87
+296ac 2 277 82
+296ae 2 110 30
+296b0 18 110 30
+296c8 12 110 30
+296da 6 256 82
+296e0 1a 111 30
+296fa 6 302 82
+29700 10 111 30
+29710 6 256 82
+29716 16 112 30
+2972c 4 112 30
+29730 6 302 82
+29736 e 112 30
+29744 2 112 30
+29746 4 112 30
+2974a 6 112 30
+29750 8 112 30
+29758 6 85 79
+2975e 8 112 30
+29766 6 256 82
+2976c e 114 30
+2977a 2 277 82
+2977c 2 1139 87
+2977e 2 114 30
+29780 18 114 30
+29798 10 114 30
+297a8 2 114 30
+297aa 4 114 30
+297ae 6 114 30
+297b4 8 114 30
+297bc 6 85 79
+297c2 6 114 30
+297c8 6 156 137
+297ce 6 256 82
+297d4 4 54 30
+297d8 6 256 82
+297de 6 54 30
+297e4 98 115 30
+FUNC 2987c 230 0 ProcCpuInfoReaderTest_SkipMalformedLine_Test::TestBody
+2987c a 117 30
+29886 4 117 30
+2988a 2 118 30
+2988c 2 117 30
+2988e 8 118 30
+29896 2 117 30
+29898 4 118 30
+2989c 4 82 52
+298a0 4 1139 87
+298a4 2 82 52
+298a6 2 277 82
+298a8 2 82 52
+298aa 2 277 82
+298ac 8 1139 87
+298b4 2 119 30
+298b6 16 119 30
+298cc 12 119 30
+298de 6 256 82
+298e4 4 49 16
+298e8 4 123 30
+298ec 2 49 16
+298ee 4 48 29
+298f2 4 123 30
+298f6 8 49 16
+298fe 4 48 29
+29902 4 123 30
+29906 4 1139 87
+2990a 2 277 82
+2990c 2 123 30
+2990e 18 123 30
+29926 12 123 30
+29938 6 256 82
+2993e 1c 124 30
+2995a 6 302 82
+29960 10 124 30
+29970 6 256 82
+29976 18 125 30
+2998e 4 125 30
+29992 6 302 82
+29998 e 125 30
+299a6 2 125 30
+299a8 4 125 30
+299ac 6 125 30
+299b2 8 125 30
+299ba 6 85 79
+299c0 8 125 30
+299c8 6 256 82
+299ce e 127 30
+299dc 2 277 82
+299de 4 1139 87
+299e2 2 127 30
+299e4 18 127 30
+299fc 10 127 30
+29a0c 4 127 30
+29a10 4 127 30
+29a14 6 127 30
+29a1a 8 127 30
+29a22 6 85 79
+29a28 6 127 30
+29a2e 6 156 137
+29a34 6 256 82
+29a3a 6 54 30
+29a40 6c 128 30
+FUNC 29aac 230 0 ProcCpuInfoReaderTest_SkipOneEmptyLine_Test::TestBody
+29aac a 130 30
+29ab6 4 130 30
+29aba 2 131 30
+29abc 2 130 30
+29abe 8 131 30
+29ac6 2 130 30
+29ac8 4 131 30
+29acc 4 82 52
+29ad0 4 1139 87
+29ad4 2 82 52
+29ad6 2 277 82
+29ad8 2 82 52
+29ada 2 277 82
+29adc 8 1139 87
+29ae4 2 132 30
+29ae6 16 132 30
+29afc 12 132 30
+29b0e 6 256 82
+29b14 4 49 16
+29b18 4 136 30
+29b1c 2 49 16
+29b1e 4 48 29
+29b22 4 136 30
+29b26 8 49 16
+29b2e 4 48 29
+29b32 4 136 30
+29b36 4 1139 87
+29b3a 2 277 82
+29b3c 2 136 30
+29b3e 18 136 30
+29b56 12 136 30
+29b68 6 256 82
+29b6e 1c 137 30
+29b8a 6 302 82
+29b90 10 137 30
+29ba0 6 256 82
+29ba6 18 138 30
+29bbe 4 138 30
+29bc2 6 302 82
+29bc8 e 138 30
+29bd6 2 138 30
+29bd8 4 138 30
+29bdc 6 138 30
+29be2 8 138 30
+29bea 6 85 79
+29bf0 8 138 30
+29bf8 6 256 82
+29bfe e 140 30
+29c0c 2 277 82
+29c0e 4 1139 87
+29c12 2 140 30
+29c14 18 140 30
+29c2c 10 140 30
+29c3c 4 140 30
+29c40 4 140 30
+29c44 6 140 30
+29c4a 8 140 30
+29c52 6 85 79
+29c58 6 140 30
+29c5e 6 156 137
+29c64 6 256 82
+29c6a 6 54 30
+29c70 6c 141 30
+FUNC 29cdc 230 0 ProcCpuInfoReaderTest_SkipEmptyField_Test::TestBody
+29cdc a 143 30
+29ce6 4 143 30
+29cea 2 144 30
+29cec 2 143 30
+29cee 8 144 30
+29cf6 2 143 30
+29cf8 4 144 30
+29cfc 4 82 52
+29d00 4 1139 87
+29d04 2 82 52
+29d06 2 277 82
+29d08 2 82 52
+29d0a 2 277 82
+29d0c 8 1139 87
+29d14 2 145 30
+29d16 16 145 30
+29d2c 12 145 30
+29d3e 6 256 82
+29d44 4 49 16
+29d48 4 149 30
+29d4c 2 49 16
+29d4e 4 48 29
+29d52 4 149 30
+29d56 8 49 16
+29d5e 4 48 29
+29d62 4 149 30
+29d66 4 1139 87
+29d6a 2 277 82
+29d6c 2 149 30
+29d6e 18 149 30
+29d86 12 149 30
+29d98 6 256 82
+29d9e 1c 150 30
+29dba 6 302 82
+29dc0 10 150 30
+29dd0 6 256 82
+29dd6 18 151 30
+29dee 4 151 30
+29df2 6 302 82
+29df8 e 151 30
+29e06 2 151 30
+29e08 4 151 30
+29e0c 6 151 30
+29e12 8 151 30
+29e1a 6 85 79
+29e20 8 151 30
+29e28 6 256 82
+29e2e e 153 30
+29e3c 2 277 82
+29e3e 4 1139 87
+29e42 2 153 30
+29e44 18 153 30
+29e5c 10 153 30
+29e6c 4 153 30
+29e70 4 153 30
+29e74 6 153 30
+29e7a 8 153 30
+29e82 6 85 79
+29e88 6 153 30
+29e8e 6 156 137
+29e94 6 256 82
+29e9a 6 54 30
+29ea0 6c 154 30
+FUNC 29f0c 300 0 ProcCpuInfoReaderTest_SkipTwoEmptyLines_Test::TestBody
+29f0c a 156 30
+29f16 4 156 30
+29f1a 2 157 30
+29f1c 2 156 30
+29f1e 8 157 30
+29f26 2 156 30
+29f28 4 157 30
+29f2c 4 82 52
+29f30 2 1139 87
+29f32 2 82 52
+29f34 2 277 82
+29f36 4 82 52
+29f3a 2 277 82
+29f3c 6 1139 87
+29f42 2 158 30
+29f44 16 158 30
+29f5a 12 158 30
+29f6c 6 256 82
+29f72 4 49 16
+29f76 4 162 30
+29f7a 2 49 16
+29f7c 4 48 29
+29f80 4 162 30
+29f84 4 49 16
+29f88 4 48 29
+29f8c 4 162 30
+29f90 2 1139 87
+29f92 2 277 82
+29f94 2 162 30
+29f96 18 162 30
+29fae 12 162 30
+29fc0 6 256 82
+29fc6 28 163 30
+29fee 6 302 82
+29ff4 10 163 30
+2a004 6 256 82
+2a00a 22 164 30
+2a02c 4 164 30
+2a030 6 302 82
+2a036 10 164 30
+2a046 6 256 82
+2a04c 8 166 30
+2a054 2 1139 87
+2a056 2 277 82
+2a058 2 166 30
+2a05a 18 166 30
+2a072 12 166 30
+2a084 6 256 82
+2a08a 16 167 30
+2a0a0 6 302 82
+2a0a6 10 167 30
+2a0b6 6 256 82
+2a0bc 10 168 30
+2a0cc 4 168 30
+2a0d0 6 302 82
+2a0d6 e 168 30
+2a0e4 2 168 30
+2a0e6 4 168 30
+2a0ea 6 168 30
+2a0f0 8 168 30
+2a0f8 6 85 79
+2a0fe 8 168 30
+2a106 6 256 82
+2a10c e 170 30
+2a11a 2 277 82
+2a11c 2 1139 87
+2a11e 2 170 30
+2a120 18 170 30
+2a138 10 170 30
+2a148 2 170 30
+2a14a 4 170 30
+2a14e 6 170 30
+2a154 8 170 30
+2a15c 6 85 79
+2a162 6 170 30
+2a168 6 156 137
+2a16e 6 256 82
+2a174 4 54 30
+2a178 6 256 82
+2a17e 6 54 30
+2a184 88 171 30
+FUNC 2a20c 230 0 ProcCpuInfoReaderTest_FieldWithSpaces_Test::TestBody
+2a20c a 173 30
+2a216 4 173 30
+2a21a 2 174 30
+2a21c 2 173 30
+2a21e 8 174 30
+2a226 2 173 30
+2a228 4 174 30
+2a22c 4 82 52
+2a230 4 1139 87
+2a234 2 82 52
+2a236 2 277 82
+2a238 2 82 52
+2a23a 2 277 82
+2a23c 8 1139 87
+2a244 2 175 30
+2a246 16 175 30
+2a25c 12 175 30
+2a26e 6 256 82
+2a274 4 49 16
+2a278 4 179 30
+2a27c 2 49 16
+2a27e 4 48 29
+2a282 4 179 30
+2a286 8 49 16
+2a28e 4 48 29
+2a292 4 179 30
+2a296 4 1139 87
+2a29a 2 277 82
+2a29c 2 179 30
+2a29e 18 179 30
+2a2b6 12 179 30
+2a2c8 6 256 82
+2a2ce 1c 180 30
+2a2ea 6 302 82
+2a2f0 10 180 30
+2a300 6 256 82
+2a306 18 181 30
+2a31e 4 181 30
+2a322 6 302 82
+2a328 e 181 30
+2a336 2 181 30
+2a338 4 181 30
+2a33c 6 181 30
+2a342 8 181 30
+2a34a 6 85 79
+2a350 8 181 30
+2a358 6 256 82
+2a35e e 183 30
+2a36c 2 277 82
+2a36e 4 1139 87
+2a372 2 183 30
+2a374 18 183 30
+2a38c 10 183 30
+2a39c 4 183 30
+2a3a0 4 183 30
+2a3a4 6 183 30
+2a3aa 8 183 30
+2a3b2 6 85 79
+2a3b8 6 183 30
+2a3be 6 156 137
+2a3c4 6 256 82
+2a3ca 6 54 30
+2a3d0 6c 184 30
+FUNC 2a43c 294 0 ProcCpuInfoReaderTest_EmptyValue_Test::TestBody
+2a43c c 186 30
+2a448 6 186 30
+2a44e 2 187 30
+2a450 4 186 30
+2a454 8 187 30
+2a45c 2 186 30
+2a45e 4 187 30
+2a462 4 82 52
+2a466 4 1139 87
+2a46a 2 82 52
+2a46c 2 277 82
+2a46e 2 82 52
+2a470 2 277 82
+2a472 a 1139 87
+2a47c 2 188 30
+2a47e 16 188 30
+2a494 12 188 30
+2a4a6 6 256 82
+2a4ac 4 49 16
+2a4b0 4 192 30
+2a4b4 2 49 16
+2a4b6 4 48 29
+2a4ba 4 192 30
+2a4be 8 49 16
+2a4c6 4 48 29
+2a4ca 4 192 30
+2a4ce 4 1139 87
+2a4d2 2 277 82
+2a4d4 2 192 30
+2a4d6 18 192 30
+2a4ee 12 192 30
+2a500 6 256 82
+2a506 1c 193 30
+2a522 6 302 82
+2a528 10 193 30
+2a538 6 256 82
+2a53e c 117 29
+2a54a 18 195 30
+2a562 4 195 30
+2a566 6 302 82
+2a56c 10 195 30
+2a57c 6 256 82
+2a582 4 1481 82
+2a586 4 196 30
+2a58a 2 1481 82
+2a58c 8 1482 82
+2a594 14 1487 82
+2a5a8 6 196 30
+2a5ae 6 302 82
+2a5b4 12 196 30
+2a5c6 6 196 30
+2a5cc 8 196 30
+2a5d4 6 85 79
+2a5da 8 196 30
+2a5e2 6 256 82
+2a5e8 8 198 30
+2a5f0 2 1139 87
+2a5f2 6 198 30
+2a5f8 2 277 82
+2a5fa 2 1139 87
+2a5fc 2 198 30
+2a5fe 18 198 30
+2a616 14 198 30
+2a62a 6 198 30
+2a630 8 198 30
+2a638 6 85 79
+2a63e 6 198 30
+2a644 6 156 137
+2a64a 6 256 82
+2a650 6 54 30
+2a656 7a 199 30
+FUNC 2a6d0 294 0 ProcCpuInfoReaderTest_OneLine_Test::TestBody
+2a6d0 c 85 30
+2a6dc 6 85 30
+2a6e2 2 86 30
+2a6e4 4 85 30
+2a6e8 8 86 30
+2a6f0 2 85 30
+2a6f2 4 86 30
+2a6f6 4 82 52
+2a6fa 4 1139 87
+2a6fe 2 82 52
+2a700 2 277 82
+2a702 2 82 52
+2a704 2 277 82
+2a706 a 1139 87
+2a710 2 87 30
+2a712 16 87 30
+2a728 12 87 30
+2a73a 6 256 82
+2a740 4 49 16
+2a744 4 92 30
+2a748 2 49 16
+2a74a 4 48 29
+2a74e 8 49 16
+2a756 4 92 30
+2a75a 4 48 29
+2a75e 4 92 30
+2a762 4 1139 87
+2a766 2 277 82
+2a768 2 92 30
+2a76a 18 92 30
+2a782 12 92 30
+2a794 6 256 82
+2a79a 1c 93 30
+2a7b6 6 302 82
+2a7bc 10 93 30
+2a7cc 6 256 82
+2a7d2 c 117 29
+2a7de 18 94 30
+2a7f6 4 94 30
+2a7fa 6 302 82
+2a800 10 94 30
+2a810 6 256 82
+2a816 4 95 30
+2a81a 8 1481 82
+2a822 8 1482 82
+2a82a 14 1487 82
+2a83e 4 95 30
+2a842 6 302 82
+2a848 12 95 30
+2a85a 6 95 30
+2a860 8 95 30
+2a868 6 85 79
+2a86e 8 95 30
+2a876 6 256 82
+2a87c 8 97 30
+2a884 2 1139 87
+2a886 6 97 30
+2a88c 2 277 82
+2a88e 2 1139 87
+2a890 2 97 30
+2a892 18 97 30
+2a8aa 14 97 30
+2a8be 6 97 30
+2a8c4 8 97 30
+2a8cc 6 85 79
+2a8d2 6 97 30
+2a8d8 6 156 137
+2a8de 6 256 82
+2a8e4 6 54 30
+2a8ea 7a 98 30
+FUNC 2a964 18 0 ElfCoreDumpTest_ValidCoreFile_Test::~ElfCoreDumpTest_ValidCoreFile_Test
+2a964 2 130 39
+2a966 16 130 39
+FUNC 2a97c 12 0 ElfCoreDumpTest_ValidCoreFile_Test::~ElfCoreDumpTest_ValidCoreFile_Test
+2a97c 2 130 39
+2a97e 6 130 39
+2a984 6 130 39
+2a98a 4 130 39
+FUNC 2a990 18 0 ElfCoreDumpTest_TestElfHeader_Test::~ElfCoreDumpTest_TestElfHeader_Test
+2a990 2 62 39
+2a992 16 62 39
+FUNC 2a9a8 12 0 ElfCoreDumpTest_TestElfHeader_Test::~ElfCoreDumpTest_TestElfHeader_Test
+2a9a8 2 62 39
+2a9aa 6 62 39
+2a9b0 6 62 39
+2a9b6 4 62 39
+FUNC 2a9bc 18 0 ElfCoreDumpTest_DefaultConstructor_Test::~ElfCoreDumpTest_DefaultConstructor_Test
+2a9bc 2 52 39
+2a9be 16 52 39
+FUNC 2a9d4 12 0 ElfCoreDumpTest_DefaultConstructor_Test::~ElfCoreDumpTest_DefaultConstructor_Test
+2a9d4 2 52 39
+2a9d6 6 52 39
+2a9dc 6 52 39
+2a9e2 4 52 39
+FUNC 2a9e8 20 0 testing::internal::TestFactoryImpl<ElfCoreDumpTest_DefaultConstructor_Test>::CreateTest
+2a9e8 2 486 85
+2a9ea 8 486 85
+2a9f2 6 52 39
+2a9f8 2 486 85
+2a9fa 6 52 39
+2aa00 8 486 85
+FUNC 2aa08 20 0 testing::internal::TestFactoryImpl<ElfCoreDumpTest_ValidCoreFile_Test>::CreateTest
+2aa08 2 486 85
+2aa0a 8 486 85
+2aa12 6 130 39
+2aa18 2 486 85
+2aa1a 6 130 39
+2aa20 8 486 85
+FUNC 2aa28 20 0 testing::internal::TestFactoryImpl<ElfCoreDumpTest_TestElfHeader_Test>::CreateTest
+2aa28 2 486 85
+2aa2a 8 486 85
+2aa32 6 62 39
+2aa38 2 486 85
+2aa3a 6 62 39
+2aa40 8 486 85
+FUNC 2aa48 30 0 std::map<long long unsigned int, google_breakpad::RangeMap<long long unsigned int, google_breakpad::linked_ptr<const google_breakpad::CodeModule> >::Range, std::less<long long unsigned int>, std::allocator<std::pair<long long unsigned int const, google_breakpad::RangeMap<long long unsigned int, google_breakpad::linked_ptr<const google_breakpad::CodeModule> >::Range> > >::map
+2aa48 6 99 123
+2aa4e 10 250 141
+2aa5e 8 481 106
+2aa66 2 263 141
+2aa68 2 99 123
+2aa6a 2 263 141
+2aa6c 2 265 141
+2aa6e 2 266 141
+2aa70 2 267 141
+2aa72 2 391 141
+2aa74 4 99 123
+FUNC 2aa48 30 0 std::map<long long unsigned int, google_breakpad::RangeMap<long long unsigned int, unsigned int>::Range, std::less<long long unsigned int>, std::allocator<std::pair<long long unsigned int const, google_breakpad::RangeMap<long long unsigned int, unsigned int>::Range> > >::map
+2aa48 6 99 123
+2aa4e 10 250 141
+2aa5e 8 481 106
+2aa66 2 263 141
+2aa68 2 99 123
+2aa6a 2 263 141
+2aa6c 2 265 141
+2aa6e 2 266 141
+2aa70 2 267 141
+2aa72 2 391 141
+2aa74 4 99 123
+FUNC 2aa48 30 0 std::map<unsigned int, google_breakpad::Minidump::MinidumpStreamInfo, std::less<unsigned int>, std::allocator<std::pair<unsigned int const, google_breakpad::Minidump::MinidumpStreamInfo> > >::map
+FUNC 2aa48 30 0 std::set<int, std::less<int>, std::allocator<int> >::set
+2aa48 6 129 147
+2aa4e 10 250 141
+2aa5e 8 481 106
+2aa66 2 263 141
+2aa68 2 129 147
+2aa6a 2 263 141
+2aa6c 2 265 141
+2aa6e 2 266 141
+2aa70 2 267 141
+2aa72 2 391 141
+2aa74 4 129 147
+FUNC 2aa78 74 0 std::operator==<int, std::less<int>, std::allocator<int> >
+2aa78 2 7 130
+2aa7a 8 10 130
+2aa82 8 10 130
+2aa8a 2 555 105
+2aa8c 2 200 141
+2aa8e 2 555 105
+2aa90 4 556 105
+2aa94 2 171 141
+2aa96 4 556 105
+2aa9a 4 297 140
+2aa9e a 94 141
+2aaa8 2 301 140
+2aaaa 6 302 140
+2aab0 6 304 140
+2aab6 8 309 140
+2aabe 2 177 141
+2aac0 4 297 140
+2aac4 a 94 141
+2aace 2 301 140
+2aad0 6 302 140
+2aad6 6 304 140
+2aadc 8 309 140
+2aae4 4 177 141
+2aae8 2 10 130
+2aaea 2 11 130
+FUNC 2aaec 2c 0 testing::internal::DefaultPrintTo<const Elf32_Phdr>
+2aaec 2 307 80
+2aaee 2 307 80
+2aaf0 4 310 80
+2aaf4 4 334 80
+2aaf8 a 333 127
+2ab02 6 318 80
+2ab08 4 291 126
+2ab0c 4 334 80
+2ab10 8 291 126
+FUNC 2aaec 2c 0 testing::internal::DefaultPrintTo<const elfhdr>
+FUNC 2ab18 a0 0 testing::internal::CmpHelperEQFailure<const Elf32_Phdr*, const Elf32_Phdr*>
+FUNC 2ab18 a0 0 testing::internal::CmpHelperEQFailure<const elfhdr*, const elfhdr*>
+2ab18 e 1464 82
+2ab26 2 1464 82
+2ab28 2 884 80
+2ab2a 6 1464 82
+2ab30 4 380 80
+2ab34 2 1464 82
+2ab36 4 884 80
+2ab3a 4 1464 82
+2ab3e 2 75 132
+2ab40 4 884 80
+2ab44 4 380 80
+2ab48 2 75 132
+2ab4a 4 380 80
+2ab4e 8 75 132
+2ab56 6 886 80
+2ab5c 8 884 80
+2ab64 6 380 80
+2ab6a 4 75 132
+2ab6e 4 380 80
+2ab72 8 75 132
+2ab7a 6 886 80
+2ab80 14 1471 82
+2ab94 c 156 137
+2aba0 18 1472 82
+FUNC 2abb8 2fc 0 ElfCoreDumpTest_DefaultConstructor_Test::TestBody
+2abb8 a 52 39
+2abc2 6 52 39
+2abc8 2 53 39
+2abca 4 52 39
+2abce 2 53 39
+2abd0 2 52 39
+2abd2 4 53 39
+2abd6 6 54 39
+2abdc 2 1139 87
+2abde 6 54 39
+2abe4 4 277 82
+2abe8 6 1139 87
+2abee 2 54 39
+2abf0 1a 54 39
+2ac0a 14 54 39
+2ac1e 6 54 39
+2ac24 8 54 39
+2ac2c 6 85 79
+2ac32 6 54 39
+2ac38 6 156 137
+2ac3e a 256 82
+2ac48 6 55 39
+2ac4e 6 1571 82
+2ac54 2 1481 82
+2ac56 8 1482 82
+2ac5e 14 1487 82
+2ac72 8 55 39
+2ac7a 6 302 82
+2ac80 10 55 39
+2ac90 6 55 39
+2ac96 8 55 39
+2ac9e 6 85 79
+2aca4 6 55 39
+2acaa 6 256 82
+2acb0 a 56 39
+2acba 4 1552 82
+2acbe 2 56 39
+2acc0 e 1552 82
+2acce 6 56 39
+2acd4 6 302 82
+2acda 10 56 39
+2acea 6 56 39
+2acf0 8 56 39
+2acf8 6 85 79
+2acfe 6 56 39
+2ad04 6 256 82
+2ad0a 8 57 39
+2ad12 6 1571 82
+2ad18 2 1481 82
+2ad1a 8 1482 82
+2ad22 14 1487 82
+2ad36 6 57 39
+2ad3c 6 302 82
+2ad42 10 57 39
+2ad52 6 57 39
+2ad58 8 57 39
+2ad60 6 85 79
+2ad66 6 57 39
+2ad6c 6 256 82
+2ad72 8 58 39
+2ad7a 6 1571 82
+2ad80 2 1481 82
+2ad82 8 1482 82
+2ad8a 12 1487 82
+2ad9c 6 58 39
+2ada2 6 302 82
+2ada8 12 58 39
+2adba 6 58 39
+2adc0 8 58 39
+2adc8 6 85 79
+2adce 6 58 39
+2add4 6 256 82
+2adda 8 59 39
+2ade2 6 59 39
+2ade8 2 1139 87
+2adea 6 59 39
+2adf0 4 277 82
+2adf4 2 1139 87
+2adf6 2 59 39
+2adf8 18 59 39
+2ae10 14 59 39
+2ae24 6 59 39
+2ae2a 8 59 39
+2ae32 6 85 79
+2ae38 6 59 39
+2ae3e 6 156 137
+2ae44 6 256 82
+2ae4a 6a 60 39
+FUNC 2aeb4 20 0 std::priv::_Rb_tree<int, std::less<int>, int, std::priv::_Identity<int>, std::priv::_SetTraitsT<int>, std::allocator<int> >::_M_erase
+2aeb4 6 655 140
+2aeba 2 657 140
+2aebc 8 658 140
+2aec4 2 659 140
+2aec6 c 161 106
+2aed2 2 664 140
+FUNC 2aed4 1a 0 std::priv::_Rb_tree<int, std::less<int>, int, std::priv::_Identity<int>, std::priv::_SetTraitsT<int>, std::allocator<int> >::clear
+2aed4 2 531 141
+2aed6 2 530 141
+2aed8 2 530 141
+2aeda 2 531 141
+2aedc 6 532 141
+2aee2 2 534 141
+2aee4 2 533 141
+2aee6 2 534 141
+2aee8 2 535 141
+2aeea 4 536 141
+FUNC 2aef0 f5c 0 ElfCoreDumpTest_TestElfHeader_Test::TestBody
+2aef0 a 62 39
+2aefa 4 62 39
+2aefe 2 64 39
+2af00 2 62 39
+2af02 4 64 39
+2af06 4 66 39
+2af0a 2 64 39
+2af0c 2 62 39
+2af0e 4 64 39
+2af12 6 66 39
+2af18 12 67 39
+2af2a c 69 39
+2af36 a 70 39
+2af40 a 72 39
+2af4a 6 1139 87
+2af50 4 277 82
+2af54 10 1139 87
+2af64 2 72 39
+2af66 1e 72 39
+2af84 12 72 39
+2af96 6 256 82
+2af9c a 73 39
+2afa6 4 1139 87
+2afaa 4 277 82
+2afae 2 73 39
+2afb0 1e 73 39
+2afce 14 73 39
+2afe2 6 73 39
+2afe8 8 73 39
+2aff0 6 85 79
+2aff6 6 73 39
+2affc 6 156 137
+2b002 c 256 82
+2b00e 8 74 39
+2b016 c 75 39
+2b022 4 277 82
+2b026 4 1139 87
+2b02a 2 75 39
+2b02c 20 75 39
+2b04c 14 75 39
+2b060 6 75 39
+2b066 8 75 39
+2b06e 6 85 79
+2b074 6 75 39
+2b07a 6 156 137
+2b080 6 256 82
+2b086 6 76 39
+2b08c 6 1571 82
+2b092 2 1481 82
+2b094 8 1482 82
+2b09c 18 1487 82
+2b0b4 6 76 39
+2b0ba 6 302 82
+2b0c0 a 76 39
+2b0ca 2 76 39
+2b0cc 8 76 39
+2b0d4 6 76 39
+2b0da 8 76 39
+2b0e2 6 85 79
+2b0e8 6 76 39
+2b0ee 6 256 82
+2b0f4 c 77 39
+2b100 8 1552 82
+2b108 4 256 82
+2b10c 6 1552 82
+2b112 2 77 39
+2b114 10 1552 82
+2b124 6 77 39
+2b12a 6 302 82
+2b130 12 77 39
+2b142 6 77 39
+2b148 8 77 39
+2b150 6 85 79
+2b156 6 77 39
+2b15c 6 256 82
+2b162 8 78 39
+2b16a 2 1571 82
+2b16c 4 256 82
+2b170 2 1571 82
+2b172 2 1481 82
+2b174 8 1482 82
+2b17c 18 1487 82
+2b194 6 78 39
+2b19a 6 302 82
+2b1a0 c 78 39
+2b1ac 4 78 39
+2b1b0 8 78 39
+2b1b8 6 78 39
+2b1be 8 78 39
+2b1c6 6 85 79
+2b1cc 6 78 39
+2b1d2 6 256 82
+2b1d8 8 79 39
+2b1e0 2 1571 82
+2b1e2 4 256 82
+2b1e6 2 1571 82
+2b1e8 2 1481 82
+2b1ea 8 1482 82
+2b1f2 18 1487 82
+2b20a 6 79 39
+2b210 6 302 82
+2b216 c 79 39
+2b222 4 79 39
+2b226 8 79 39
+2b22e 6 79 39
+2b234 8 79 39
+2b23c 6 85 79
+2b242 6 79 39
+2b248 6 256 82
+2b24e 8 80 39
+2b256 6 80 39
+2b25c 2 1139 87
+2b25e 6 80 39
+2b264 4 277 82
+2b268 2 1139 87
+2b26a 2 80 39
+2b26c 1e 80 39
+2b28a 16 80 39
+2b2a0 6 80 39
+2b2a6 8 80 39
+2b2ae 6 85 79
+2b2b4 6 80 39
+2b2ba 6 156 137
+2b2c0 6 256 82
+2b2c6 a 82 39
+2b2d0 6 1139 87
+2b2d6 4 277 82
+2b2da 2 256 82
+2b2dc 4 1139 87
+2b2e0 2 82 39
+2b2e2 1e 82 39
+2b300 14 82 39
+2b314 2 256 82
+2b316 4 83 39
+2b31a 4 256 82
+2b31e a 83 39
+2b328 4 256 82
+2b32c 4 277 82
+2b330 4 1139 87
+2b334 2 83 39
+2b336 1e 83 39
+2b354 16 83 39
+2b36a 6 83 39
+2b370 8 83 39
+2b378 6 85 79
+2b37e 6 83 39
+2b384 6 156 137
+2b38a 8 256 82
+2b392 2 84 39
+2b394 4 256 82
+2b398 8 84 39
+2b3a0 c 85 39
+2b3ac 4 277 82
+2b3b0 4 1139 87
+2b3b4 2 85 39
+2b3b6 1e 85 39
+2b3d4 18 85 39
+2b3ec 6 85 39
+2b3f2 8 85 39
+2b3fa 6 85 79
+2b400 6 85 39
+2b406 6 156 137
+2b40c 8 256 82
+2b414 2 87 39
+2b416 6 88 39
+2b41c 4 87 39
+2b420 4 1139 87
+2b424 4 88 39
+2b428 2 256 82
+2b42a 4 277 82
+2b42e 4 1139 87
+2b432 2 88 39
+2b434 1e 88 39
+2b452 14 88 39
+2b466 2 256 82
+2b468 4 89 39
+2b46c 4 256 82
+2b470 a 89 39
+2b47a 4 1139 87
+2b47e 4 277 82
+2b482 2 89 39
+2b484 1e 89 39
+2b4a2 14 89 39
+2b4b6 2 256 82
+2b4b8 2 90 39
+2b4ba 4 256 82
+2b4be 8 90 39
+2b4c6 c 91 39
+2b4d2 4 277 82
+2b4d6 4 1139 87
+2b4da 2 91 39
+2b4dc 20 91 39
+2b4fc c 91 39
+2b508 4 91 39
+2b50c a 91 39
+2b516 6 91 39
+2b51c 8 91 39
+2b524 6 85 79
+2b52a 6 91 39
+2b530 6 156 137
+2b536 8 256 82
+2b53e 2 93 39
+2b540 6 94 39
+2b546 4 93 39
+2b54a 4 1139 87
+2b54e 4 94 39
+2b552 4 1139 87
+2b556 4 277 82
+2b55a 2 94 39
+2b55c 1e 94 39
+2b57a 14 94 39
+2b58e 2 256 82
+2b590 4 95 39
+2b594 4 256 82
+2b598 a 95 39
+2b5a2 4 1139 87
+2b5a6 4 277 82
+2b5aa 2 95 39
+2b5ac 1e 95 39
+2b5ca 14 95 39
+2b5de 4 96 39
+2b5e2 6 256 82
+2b5e8 8 96 39
+2b5f0 c 97 39
+2b5fc 4 277 82
+2b600 4 1139 87
+2b604 2 97 39
+2b606 20 97 39
+2b626 c 97 39
+2b632 4 97 39
+2b636 a 97 39
+2b640 6 97 39
+2b646 8 97 39
+2b64e 6 85 79
+2b654 6 97 39
+2b65a 6 156 137
+2b660 6 256 82
+2b666 2 99 39
+2b668 6 100 39
+2b66e 4 99 39
+2b672 4 1139 87
+2b676 4 100 39
+2b67a 2 256 82
+2b67c 4 277 82
+2b680 4 1139 87
+2b684 2 100 39
+2b686 1e 100 39
+2b6a4 14 100 39
+2b6b8 2 256 82
+2b6ba 4 101 39
+2b6be 4 256 82
+2b6c2 a 101 39
+2b6cc 4 1139 87
+2b6d0 4 277 82
+2b6d4 2 101 39
+2b6d6 1e 101 39
+2b6f4 14 101 39
+2b708 2 256 82
+2b70a 2 102 39
+2b70c 4 256 82
+2b710 8 102 39
+2b718 c 103 39
+2b724 4 277 82
+2b728 4 1139 87
+2b72c 2 103 39
+2b72e 20 103 39
+2b74e c 103 39
+2b75a 4 103 39
+2b75e a 103 39
+2b768 6 103 39
+2b76e 8 103 39
+2b776 6 85 79
+2b77c 6 103 39
+2b782 6 156 137
+2b788 8 256 82
+2b790 2 105 39
+2b792 6 106 39
+2b798 4 105 39
+2b79c 4 1139 87
+2b7a0 4 106 39
+2b7a4 4 1139 87
+2b7a8 4 277 82
+2b7ac 2 106 39
+2b7ae 1e 106 39
+2b7cc 14 106 39
+2b7e0 2 256 82
+2b7e2 4 107 39
+2b7e6 4 256 82
+2b7ea a 107 39
+2b7f4 4 1139 87
+2b7f8 4 277 82
+2b7fc 2 107 39
+2b7fe 1e 107 39
+2b81c 14 107 39
+2b830 4 108 39
+2b834 6 256 82
+2b83a 8 108 39
+2b842 c 109 39
+2b84e 4 277 82
+2b852 4 1139 87
+2b856 2 109 39
+2b858 20 109 39
+2b878 c 109 39
+2b884 4 109 39
+2b888 a 109 39
+2b892 6 109 39
+2b898 8 109 39
+2b8a0 6 85 79
+2b8a6 6 109 39
+2b8ac 6 156 137
+2b8b2 4 111 39
+2b8b6 6 256 82
+2b8bc 6 112 39
+2b8c2 4 111 39
+2b8c6 4 1139 87
+2b8ca 4 112 39
+2b8ce 2 256 82
+2b8d0 4 277 82
+2b8d4 4 1139 87
+2b8d8 2 112 39
+2b8da 1e 112 39
+2b8f8 14 112 39
+2b90c 2 256 82
+2b90e 4 113 39
+2b912 4 256 82
+2b916 a 113 39
+2b920 4 1139 87
+2b924 4 277 82
+2b928 2 113 39
+2b92a 18 113 39
+2b942 12 113 39
+2b954 2 256 82
+2b956 2 114 39
+2b958 4 256 82
+2b95c 8 114 39
+2b964 c 115 39
+2b970 4 277 82
+2b974 4 1139 87
+2b978 2 115 39
+2b97a 1a 115 39
+2b994 c 115 39
+2b9a0 4 115 39
+2b9a4 8 115 39
+2b9ac 6 115 39
+2b9b2 8 115 39
+2b9ba 6 85 79
+2b9c0 6 115 39
+2b9c6 6 156 137
+2b9cc 4 117 39
+2b9d0 8 256 82
+2b9d8 6 118 39
+2b9de 4 117 39
+2b9e2 2 1139 87
+2b9e4 4 118 39
+2b9e8 2 1139 87
+2b9ea 4 277 82
+2b9ee 2 118 39
+2b9f0 18 118 39
+2ba08 12 118 39
+2ba1a 2 256 82
+2ba1c 4 119 39
+2ba20 4 256 82
+2ba24 a 119 39
+2ba2e 2 1139 87
+2ba30 4 277 82
+2ba34 2 119 39
+2ba36 18 119 39
+2ba4e 12 119 39
+2ba60 4 120 39
+2ba64 6 256 82
+2ba6a 8 120 39
+2ba72 c 121 39
+2ba7e 4 277 82
+2ba82 2 1139 87
+2ba84 2 121 39
+2ba86 1a 121 39
+2baa0 c 121 39
+2baac 4 121 39
+2bab0 8 121 39
+2bab8 6 121 39
+2babe 8 121 39
+2bac6 6 85 79
+2bacc 6 121 39
+2bad2 6 156 137
+2bad8 6 256 82
+2bade 2 123 39
+2bae0 6 124 39
+2bae6 4 123 39
+2baea 2 1139 87
+2baec 4 124 39
+2baf0 2 1139 87
+2baf2 4 277 82
+2baf6 2 124 39
+2baf8 18 124 39
+2bb10 12 124 39
+2bb22 2 256 82
+2bb24 4 125 39
+2bb28 4 256 82
+2bb2c a 125 39
+2bb36 2 1139 87
+2bb38 4 277 82
+2bb3c 6 125 39
+2bb42 18 125 39
+2bb5a 10 125 39
+2bb6a 2 125 39
+2bb6c 4 125 39
+2bb70 6 125 39
+2bb76 8 125 39
+2bb7e 6 85 79
+2bb84 6 125 39
+2bb8a 6 156 137
+2bb90 c 256 82
+2bb9c 6 156 137
+2bba2 8 61 63
+2bbaa 1ee 156 137
+2bd98 2 126 39
+2bd9a 6 256 82
+2bda0 8 126 39
+2bda8 6 127 39
+2bdae 2 1139 87
+2bdb0 4 277 82
+2bdb4 2 127 39
+2bdb6 18 127 39
+2bdce a 127 39
+2bdd8 2 127 39
+2bdda a 127 39
+2bde4 6 127 39
+2bdea 8 127 39
+2bdf2 6 85 79
+2bdf8 6 127 39
+2bdfe 6 156 137
+2be04 6 256 82
+2be0a 6 69 39
+2be10 2 61 63
+2be12 6 156 137
+2be18 8 61 63
+2be20 6 156 137
+2be26 26 128 39
+FUNC 2be4c 98 0 std::priv::_Rb_tree<int, std::less<int>, int, std::priv::_Identity<int>, std::priv::_SetTraitsT<int>, std::allocator<int> >::_M_insert
+2be4c 4 350 140
+2be50 2 358 140
+2be52 a 350 140
+2be5c 2 358 140
+2be5e 4 306 106
+2be62 8 307 106
+2be6a 2 126 108
+2be6c 4 321 141
+2be70 2 322 141
+2be72 2 360 140
+2be74 2 361 140
+2be76 4 362 140
+2be7a 4 364 140
+2be7e 4 364 140
+2be82 8 364 140
+2be8a 4 306 106
+2be8e 8 307 106
+2be96 2 126 108
+2be98 4 321 141
+2be9c 2 322 141
+2be9e 2 368 140
+2bea0 6 369 140
+2bea6 4 370 140
+2beaa 4 306 106
+2beae 8 307 106
+2beb6 2 126 108
+2beb8 4 321 141
+2bebc 2 322 141
+2bebe 2 374 140
+2bec0 6 375 140
+2bec6 2 376 140
+2bec8 2 379 140
+2beca 2 378 140
+2becc 6 379 140
+2bed2 2 382 140
+2bed4 6 380 140
+2beda 4 142 141
+2bede 6 382 140
+FUNC 2bee4 8e 0 std::priv::_Rb_tree<int, std::less<int>, int, std::priv::_Identity<int>, std::priv::_SetTraitsT<int>, std::allocator<int> >::insert_unique
+2bee4 2 405 140
+2bee6 2 405 140
+2bee8 2 408 140
+2beea 2 406 140
+2beec 2 405 140
+2beee 2 407 140
+2bef0 2 409 140
+2bef2 6 412 140
+2bef8 4 412 140
+2befc 10 412 140
+2bf0c 2 142 141
+2bf0e 2 415 140
+2bf10 6 416 140
+2bf16 4 417 140
+2bf1a 4 279 140
+2bf1e 8 279 140
+2bf26 4 280 140
+2bf2a 4 281 140
+2bf2e 8 99 141
+2bf36 2 285 140
+2bf38 6 286 140
+2bf3e 6 288 140
+2bf44 2 187 141
+2bf46 e 421 140
+2bf54 a 422 140
+2bf5e 4 142 141
+2bf62 6 62 129
+2bf68 2 142 141
+2bf6a 2 62 129
+2bf6c 6 425 140
+FUNC 2bf74 858 0 ElfCoreDumpTest_ValidCoreFile_Test::TestBody
+2bf74 14 130 39
+2bf88 2 130 39
+2bf8a 4 131 39
+2bf8e 2 130 39
+2bf90 4 131 39
+2bf94 a 132 39
+2bf9e 14 134 39
+2bfb2 2 135 39
+2bfb4 8 138 39
+2bfbc 2 141 39
+2bfbe a 140 39
+2bfc8 e 141 39
+2bfd6 4 277 82
+2bfda a 1139 87
+2bfe4 2 141 39
+2bfe6 1e 141 39
+2c004 14 141 39
+2c018 6 141 39
+2c01e 8 141 39
+2c026 6 85 79
+2c02c 6 141 39
+2c032 6 156 137
+2c038 e 256 82
+2c046 a 143 39
+2c050 6 144 39
+2c056 8 146 39
+2c05e 2 145 39
+2c060 2 146 39
+2c062 a 229 147
+2c06c 4 145 39
+2c070 a 151 39
+2c07a a 151 39
+2c084 6 156 137
+2c08a 2 151 39
+2c08c 14 153 39
+2c0a0 2 154 39
+2c0a2 a 158 39
+2c0ac 8 159 39
+2c0b4 a 159 39
+2c0be 4 277 82
+2c0c2 2 156 137
+2c0c4 2 1139 87
+2c0c6 4 156 137
+2c0ca a 159 39
+2c0d4 1c 159 39
+2c0f0 16 159 39
+2c106 6 159 39
+2c10c 8 159 39
+2c114 6 85 79
+2c11a 6 159 39
+2c120 6 156 137
+2c126 c 256 82
+2c132 4 162 39
+2c136 4 256 82
+2c13a 6 162 39
+2c140 8 163 39
+2c148 6 164 39
+2c14e 2 1139 87
+2c150 4 277 82
+2c154 2 164 39
+2c156 1c 164 39
+2c172 16 164 39
+2c188 6 164 39
+2c18e 8 164 39
+2c196 6 85 79
+2c19c 6 164 39
+2c1a2 6 156 137
+2c1a8 6 256 82
+2c1ae 2 187 39
+2c1b0 2 196 39
+2c1b2 2 187 39
+2c1b4 2 188 39
+2c1b6 4 196 39
+2c1ba 8 197 39
+2c1c2 18 201 39
+2c1da 8 201 39
+2c1e2 10 202 39
+2c1f2 16 198 39
+2c208 8 199 39
+2c210 8 200 39
+2c218 2 201 39
+2c21a 2 1139 87
+2c21c 6 201 39
+2c222 2 1139 87
+2c224 4 277 82
+2c228 2 201 39
+2c22a 14 201 39
+2c23e 8 201 39
+2c246 4 201 39
+2c24a a 201 39
+2c254 6 201 39
+2c25a 8 201 39
+2c262 6 85 79
+2c268 6 201 39
+2c26e 6 156 137
+2c274 a 256 82
+2c27e 2 1139 87
+2c280 8 202 39
+2c288 2 1139 87
+2c28a 4 277 82
+2c28e 2 202 39
+2c290 16 202 39
+2c2a6 c 202 39
+2c2b2 4 202 39
+2c2b6 a 202 39
+2c2c0 6 202 39
+2c2c6 8 202 39
+2c2ce 6 85 79
+2c2d4 6 202 39
+2c2da 6 156 137
+2c2e0 8 256 82
+2c2e8 8 204 39
+2c2f0 2 256 82
+2c2f2 a 204 39
+2c2fc 2 206 39
+2c2fe 2 1139 87
+2c300 6 206 39
+2c306 2 1139 87
+2c308 4 277 82
+2c30c 2 206 39
+2c30e 20 206 39
+2c32e c 206 39
+2c33a 4 206 39
+2c33e a 206 39
+2c348 6 206 39
+2c34e 8 206 39
+2c356 6 85 79
+2c35c 6 206 39
+2c362 6 156 137
+2c368 6 256 82
+2c36e 2 207 39
+2c370 4 1512 82
+2c374 8 207 39
+2c37c c 1512 82
+2c388 4 207 39
+2c38c 4 1512 82
+2c390 6 207 39
+2c396 6 302 82
+2c39c 10 207 39
+2c3ac 6 207 39
+2c3b2 8 207 39
+2c3ba 6 85 79
+2c3c0 6 207 39
+2c3c6 6 256 82
+2c3cc 6 208 39
+2c3d2 4 209 39
+2c3d6 2 1139 87
+2c3d8 6 212 39
+2c3de 2 1139 87
+2c3e0 4 277 82
+2c3e4 2 212 39
+2c3e6 1a 212 39
+2c400 c 212 39
+2c40c 4 212 39
+2c410 8 212 39
+2c418 6 212 39
+2c41e 8 212 39
+2c426 6 85 79
+2c42c 6 212 39
+2c432 6 156 137
+2c438 6 256 82
+2c43e 2 213 39
+2c440 4 1512 82
+2c444 2 213 39
+2c446 4 256 82
+2c44a 6 213 39
+2c450 c 1512 82
+2c45c 4 213 39
+2c460 4 1512 82
+2c464 6 213 39
+2c46a 6 302 82
+2c470 10 213 39
+2c480 6 213 39
+2c486 8 213 39
+2c48e 6 85 79
+2c494 6 213 39
+2c49a 6 256 82
+2c4a0 8 91 55
+2c4a8 4 229 147
+2c4ac 4 215 39
+2c4b0 a 229 147
+2c4ba 6 216 39
+2c4c0 a 1481 82
+2c4ca 8 1482 82
+2c4d2 12 1487 82
+2c4e4 6 217 39
+2c4ea 6 302 82
+2c4f0 8 217 39
+2c4f8 4 217 39
+2c4fc 8 217 39
+2c504 6 217 39
+2c50a 8 217 39
+2c512 6 85 79
+2c518 6 217 39
+2c51e a 256 82
+2c528 6 1481 82
+2c52e 4 256 82
+2c532 4 1481 82
+2c536 8 1482 82
+2c53e 12 1487 82
+2c550 6 218 39
+2c556 6 302 82
+2c55c 8 218 39
+2c564 2 218 39
+2c566 8 218 39
+2c56e 6 218 39
+2c574 8 218 39
+2c57c 6 85 79
+2c582 6 218 39
+2c588 6 256 82
+2c58e 6 220 39
+2c594 16 244 39
+2c5aa c 247 39
+2c5b6 4 1139 87
+2c5ba 4 277 82
+2c5be 2 247 39
+2c5c0 1a 247 39
+2c5da 16 247 39
+2c5f0 6 247 39
+2c5f6 8 247 39
+2c5fe 6 85 79
+2c604 6 247 39
+2c60a 6 156 137
+2c610 4 248 39
+2c614 6 256 82
+2c61a 10 1512 82
+2c62a 4 248 39
+2c62e 4 1512 82
+2c632 6 248 39
+2c638 6 302 82
+2c63e 14 248 39
+2c652 6 248 39
+2c658 8 248 39
+2c660 6 85 79
+2c666 6 248 39
+2c66c 6 256 82
+2c672 14 1512 82
+2c686 6 249 39
+2c68c 6 302 82
+2c692 12 249 39
+2c6a4 6 249 39
+2c6aa 8 249 39
+2c6b2 6 85 79
+2c6b8 6 249 39
+2c6be 6 256 82
+2c6c4 6 414 141
+2c6ca 6 158 39
+2c6d0 6 414 141
+2c6d6 6 135 39
+2c6dc f0 256 39
+FUNC 2c7cc 28 0 testing::internal::TestFactoryImpl<FileIDTest_BuildID_Test<google_breakpad::ElfClass32> >::CreateTest
+2c7cc 2 486 85
+2c7ce 8 486 85
+2c7d6 4 107 43
+2c7da 6 67 144
+2c7e0 4 481 106
+2c7e4 2 486 85
+2c7e6 8 151 43
+2c7ee 6 486 85
+FUNC 2c7f4 28 0 testing::internal::TestFactoryImpl<FileIDTest_UniqueHashes_Test<google_breakpad::ElfClass32> >::CreateTest
+2c7f4 2 486 85
+2c7f6 8 486 85
+2c7fe 4 107 43
+2c802 6 67 144
+2c808 4 481 106
+2c80c 2 486 85
+2c80e 8 220 43
+2c816 6 486 85
+FUNC 2c81c 28 0 testing::internal::TestFactoryImpl<FileIDTest_BuildIDPH_Test<google_breakpad::ElfClass32> >::CreateTest
+2c81c 2 486 85
+2c81e 8 486 85
+2c826 4 107 43
+2c82a 6 67 144
+2c830 4 481 106
+2c834 2 486 85
+2c836 8 183 43
+2c83e 6 486 85
+FUNC 2c844 28 0 testing::internal::TestFactoryImpl<FileIDTest_ElfClass_Test<google_breakpad::ElfClass32> >::CreateTest
+2c844 2 486 85
+2c846 8 486 85
+2c84e 4 107 43
+2c852 6 67 144
+2c858 4 481 106
+2c85c 2 486 85
+2c85e 8 127 43
+2c866 6 486 85
+FUNC 2c86c 28 0 testing::internal::TestFactoryImpl<FileIDTest_BuildID_Test<google_breakpad::ElfClass64> >::CreateTest
+2c86c 2 486 85
+2c86e 8 486 85
+2c876 4 107 43
+2c87a 6 67 144
+2c880 4 481 106
+2c884 2 486 85
+2c886 8 151 43
+2c88e 6 486 85
+FUNC 2c894 28 0 testing::internal::TestFactoryImpl<FileIDTest_BuildIDPH_Test<google_breakpad::ElfClass64> >::CreateTest
+2c894 2 486 85
+2c896 8 486 85
+2c89e 4 107 43
+2c8a2 6 67 144
+2c8a8 4 481 106
+2c8ac 2 486 85
+2c8ae 8 183 43
+2c8b6 6 486 85
+FUNC 2c8bc 28 0 testing::internal::TestFactoryImpl<FileIDTest_ElfClass_Test<google_breakpad::ElfClass64> >::CreateTest
+2c8bc 2 486 85
+2c8be 8 486 85
+2c8c6 4 107 43
+2c8ca 6 67 144
+2c8d0 4 481 106
+2c8d4 2 486 85
+2c8d6 8 127 43
+2c8de 6 486 85
+FUNC 2c8e4 28 0 testing::internal::TestFactoryImpl<FileIDTest_UniqueHashes_Test<google_breakpad::ElfClass64> >::CreateTest
+2c8e4 2 486 85
+2c8e6 8 486 85
+2c8ee 4 107 43
+2c8f2 6 67 144
+2c8f8 4 481 106
+2c8fc 2 486 85
+2c8fe 8 220 43
+2c906 6 486 85
+FUNC 2c90c 18 0 std::priv::__copy_trivial
+2c90c 4 222 105
+2c910 2 224 105
+2c912 2 224 105
+2c914 2 224 105
+2c916 8 224 105
+2c91e 4 224 105
+2c922 2 225 105
+FUNC 2c924 c 0 std::__node_alloc::deallocate
+2c924 4 161 106
+2c928 4 135 124
+2c92c 4 161 106
+FUNC 2c930 f8 0 std::priv::_Impl_vector<unsigned char, std::allocator<unsigned char> >::_M_range_insert<char*>
+2c930 2 546 144
+2c932 4 532 144
+2c936 8 532 144
+2c93e 2 546 144
+2c940 2 355 119
+2c942 a 549 144
+2c94c 4 476 144
+2c950 4 478 144
+2c954 4 479 144
+2c958 a 120 142
+2c962 2 480 144
+2c964 4 255 105
+2c968 2 480 144
+2c96a 2 256 105
+2c96c 2 480 144
+2c96e 2 256 105
+2c970 8 256 105
+2c978 6 269 105
+2c97e 4 510 119
+2c982 a 120 142
+2c98c 8 492 144
+2c994 2 120 142
+2c996 2 492 144
+2c998 6 120 142
+2c99e 4 269 105
+2c9a2 6 494 144
+2c9a8 8 269 105
+2c9b0 4 192 144
+2c9b4 6 173 144
+2c9ba 8 41 143
+2c9c2 8 175 144
+2c9ca 4 176 144
+2c9ce 4 346 106
+2c9d2 4 177 144
+2c9d6 6 347 106
+2c9dc 4 348 106
+2c9e0 2 352 106
+2c9e2 4 353 106
+2c9e6 2 356 106
+2c9e8 1e 120 142
+2ca06 2 662 144
+2ca08 4 120 142
+2ca0c 2 662 144
+2ca0e 2 319 106
+2ca10 4 323 106
+2ca14 4 667 144
+2ca18 2 443 144
+2ca1a 2 668 144
+2ca1c c 556 144
+FUNC 2ca28 4c 0 google_breakpad::test_assembler::Section::~Section
+2ca28 4 277 62
+2ca2c 10 277 62
+2ca3c 6 65 118
+2ca42 2 74 118
+2ca44 4 191 108
+2ca48 a 449 62
+2ca52 4 81 118
+2ca56 4 87 144
+2ca5a 2 88 144
+2ca5c 6 323 106
+2ca62 8 156 137
+2ca6a a 277 62
+FUNC 2ca74 12 0 google_breakpad::test_assembler::Section::~Section
+2ca74 2 277 62
+2ca76 6 277 62
+2ca7c 6 277 62
+2ca82 4 277 62
+FUNC 2ca88 1c 0 google_breakpad::synth_elf::Notes::~Notes
+2ca88 4 181 51
+2ca8c 18 181 51
+FUNC 2caa4 12 0 google_breakpad::synth_elf::Notes::~Notes
+2caa4 2 181 51
+2caa6 6 181 51
+2caac 6 181 51
+2cab2 4 181 51
+FUNC 2cab8 40 0 PopulateSection
+2cab8 2 62 43
+2caba 4 62 43
+2cabe 2 63 43
+2cac0 4 303 62
+2cac4 4 63 43
+2cac8 a 64 43
+2cad2 2 303 62
+2cad4 10 64 43
+2cae4 8 303 62
+2caec 4 63 43
+2caf0 8 65 43
+FUNC 2caf8 34 0 google_breakpad::test_assembler::Section::Section
+2caf8 4 272 62
+2cafc 6 273 62
+2cb02 2 272 62
+2cb04 4 273 62
+2cb08 8 273 62
+2cb10 2 67 144
+2cb12 4 273 62
+2cb16 4 67 144
+2cb1a 2 481 106
+2cb1c 4 273 62
+2cb20 c 273 62
+FUNC 2cb2c 42 0 testing::internal::GetPrefixUntilComma
+2cb2c 2 585 85
+2cb2e 4 585 85
+2cb32 8 586 85
+2cb3a 4 587 85
+2cb3e c 587 85
+2cb4a 2 355 119
+2cb4c 4 324 136
+2cb50 2 112 137
+2cb52 2 481 106
+2cb54 4 324 136
+2cb58 a 148 142
+2cb62 2 101 108
+2cb64 2 325 136
+2cb66 2 101 108
+2cb68 6 588 85
+FUNC 2cb70 4c 0 testing::internal::StripTrailingSpaces
+2cb70 2 2214 87
+2cb72 6 2214 87
+2cb78 6 2216 87
+2cb7e c 144 98
+2cb8a 2 2216 87
+2cb8c 4 144 98
+2cb90 4 2216 87
+2cb94 2 797 136
+2cb96 4 168 145
+2cb9a 6 168 145
+2cba0 a 798 136
+2cbaa 8 2218 87
+2cbb2 a 2219 87
+FUNC 2cbbc 3e 0 std::operator+<char, std::char_traits<char>, std::allocator<char> >
+2cbbc 2 29 139
+2cbbe 4 29 139
+2cbc2 4 400 136
+2cbc6 2 29 139
+2cbc8 a 400 136
+2cbd2 2 120 137
+2cbd4 2 481 106
+2cbd6 6 124 137
+2cbdc 4 101 108
+2cbe0 2 517 136
+2cbe2 2 101 108
+2cbe4 12 517 136
+2cbf6 4 42 139
+FUNC 2cbfa 32 0 std::priv::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, google_breakpad::test_assembler::Label>, std::priv::_Select1st<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, google_breakpad::test_assembler::Label> >, std::priv::_MapTraitsT<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, google_breakpad::test_assembler::Label> >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, google_breakpad::test_assembler::Label> > >::_M_erase
+2cbfa 6 655 140
+2cc00 2 657 140
+2cc02 8 658 140
+2cc0a 8 51 129
+2cc12 2 659 140
+2cc14 4 51 129
+2cc18 6 156 137
+2cc1e c 161 106
+2cc2a 2 664 140
+FUNC 2cc2c 30 0 google_breakpad::synth_elf::StringTable::~StringTable
+2cc2c 4 64 51
+2cc30 8 64 51
+2cc38 2 531 141
+2cc3a 2 64 51
+2cc3c 2 531 141
+2cc3e 8 532 141
+2cc46 8 64 51
+2cc4e 6 64 51
+2cc54 8 64 51
+FUNC 2cc5c 12 0 google_breakpad::synth_elf::StringTable::~StringTable
+2cc5c 2 64 51
+2cc5e 6 64 51
+2cc64 6 64 51
+2cc6a 4 64 51
+FUNC 2cc70 90 0 google_breakpad::synth_elf::ELF::~ELF
+2cc70 4 94 51
+2cc74 a 94 51
+2cc7e a 65 118
+2cc88 2 74 118
+2cc8a 4 191 108
+2cc8e 4 77 118
+2cc92 a 57 108
+2cc9c 4 81 118
+2cca0 6 87 144
+2cca6 4 88 144
+2ccaa 6 323 106
+2ccb0 8 94 51
+2ccb8 8 94 51
+2ccc0 8 94 51
+2ccc8 8 94 51
+2ccd0 8 94 51
+2ccd8 8 94 51
+2cce0 8 94 51
+2cce8 8 94 51
+2ccf0 6 94 51
+2ccf6 a 94 51
+FUNC 2cd00 12 0 google_breakpad::synth_elf::ELF::~ELF
+2cd00 2 94 51
+2cd02 6 94 51
+2cd08 6 94 51
+2cd0e 4 94 51
+FUNC 2cd12 c6 0 testing::internal::StreamableToString<int>
+2cd12 8 243 79
+2cd1a 2 244 79
+2cd1c 2 243 79
+2cd1e 6 244 79
+2cd24 6 1142 87
+2cd2a 4 131 79
+2cd2e c 181 127
+2cd3a 2 199 126
+2cd3c 10 211 126
+2cd4c 2 202 126
+2cd4e 2 145 115
+2cd50 4 202 126
+2cd54 2 145 115
+2cd56 2 202 126
+2cd58 6 145 115
+2cd5e 8 351 122
+2cd66 6 351 122
+2cd6c 2 202 126
+2cd6e 2 351 122
+2cd70 c 202 126
+2cd7c 18 57 128
+2cd94 1c 67 125
+2cdb0 6 202 126
+2cdb6 6 210 126
+2cdbc 6 212 126
+2cdc2 8 244 79
+2cdca 6 85 79
+2cdd0 8 245 79
+FUNC 2cdd8 148 0 testing::internal::TypeParameterizedTest<FileIDTest, testing::internal::TemplateSel<FileIDTest_ElfClass_Test>, testing::internal::Types1<google_breakpad::ElfClass64> >::Register
+2cdd8 e 604 85
+2cde6 2 604 85
+2cde8 2 621 85
+2cdea 6 604 85
+2cdf0 6 621 85
+2cdf6 2 604 85
+2cdf8 4 621 85
+2cdfc 6 621 85
+2ce02 6 621 85
+2ce08 4 621 85
+2ce0c 2 621 85
+2ce0e 2 621 85
+2ce10 8 621 85
+2ce18 a 621 85
+2ce22 6 621 85
+2ce28 4 621 85
+2ce2c 8 621 85
+2ce34 8 621 85
+2ce3c 8 621 85
+2ce44 4 621 85
+2ce48 8 621 85
+2ce50 4 621 85
+2ce54 6 621 85
+2ce5a 4 621 85
+2ce5e 8 621 85
+2ce66 16 85 88
+2ce7c a 621 85
+2ce86 2 612 85
+2ce88 a 484 85
+2ce92 1e 612 85
+2ceb0 36 156 137
+2cee6 3a 626 85
+FUNC 2cf20 158 0 testing::internal::TypeParameterizedTest<FileIDTest, testing::internal::TemplateSel<FileIDTest_ElfClass_Test>, testing::internal::Types2<google_breakpad::ElfClass32, google_breakpad::ElfClass64> >::Register
+2cf20 e 604 85
+2cf2e 2 604 85
+2cf30 2 621 85
+2cf32 6 604 85
+2cf38 6 621 85
+2cf3e 2 604 85
+2cf40 4 621 85
+2cf44 6 621 85
+2cf4a 6 621 85
+2cf50 4 621 85
+2cf54 2 621 85
+2cf56 2 621 85
+2cf58 8 621 85
+2cf60 a 621 85
+2cf6a 8 621 85
+2cf72 4 621 85
+2cf76 8 621 85
+2cf7e 8 621 85
+2cf86 8 621 85
+2cf8e 4 621 85
+2cf92 8 621 85
+2cf9a a 621 85
+2cfa4 c 621 85
+2cfb0 16 85 88
+2cfc6 a 621 85
+2cfd0 2 612 85
+2cfd2 a 484 85
+2cfdc 1e 612 85
+2cffa 36 156 137
+2d030 e 625 85
+2d03e 3a 626 85
+FUNC 2d078 148 0 testing::internal::TypeParameterizedTest<FileIDTest, testing::internal::TemplateSel<FileIDTest_BuildID_Test>, testing::internal::Types1<google_breakpad::ElfClass64> >::Register
+2d078 e 604 85
+2d086 2 604 85
+2d088 2 621 85
+2d08a 6 604 85
+2d090 6 621 85
+2d096 2 604 85
+2d098 4 621 85
+2d09c 6 621 85
+2d0a2 6 621 85
+2d0a8 4 621 85
+2d0ac 2 621 85
+2d0ae 2 621 85
+2d0b0 8 621 85
+2d0b8 a 621 85
+2d0c2 6 621 85
+2d0c8 4 621 85
+2d0cc 8 621 85
+2d0d4 8 621 85
+2d0dc 8 621 85
+2d0e4 4 621 85
+2d0e8 8 621 85
+2d0f0 4 621 85
+2d0f4 6 621 85
+2d0fa 4 621 85
+2d0fe 8 621 85
+2d106 16 85 88
+2d11c a 621 85
+2d126 2 612 85
+2d128 a 484 85
+2d132 1e 612 85
+2d150 36 156 137
+2d186 3a 626 85
+FUNC 2d1c0 158 0 testing::internal::TypeParameterizedTest<FileIDTest, testing::internal::TemplateSel<FileIDTest_BuildID_Test>, testing::internal::Types2<google_breakpad::ElfClass32, google_breakpad::ElfClass64> >::Register
+2d1c0 e 604 85
+2d1ce 2 604 85
+2d1d0 2 621 85
+2d1d2 6 604 85
+2d1d8 6 621 85
+2d1de 2 604 85
+2d1e0 4 621 85
+2d1e4 6 621 85
+2d1ea 6 621 85
+2d1f0 4 621 85
+2d1f4 2 621 85
+2d1f6 2 621 85
+2d1f8 8 621 85
+2d200 a 621 85
+2d20a 8 621 85
+2d212 4 621 85
+2d216 8 621 85
+2d21e 8 621 85
+2d226 8 621 85
+2d22e 4 621 85
+2d232 8 621 85
+2d23a a 621 85
+2d244 c 621 85
+2d250 16 85 88
+2d266 a 621 85
+2d270 2 612 85
+2d272 a 484 85
+2d27c 1e 612 85
+2d29a 36 156 137
+2d2d0 e 625 85
+2d2de 3a 626 85
+FUNC 2d318 148 0 testing::internal::TypeParameterizedTest<FileIDTest, testing::internal::TemplateSel<FileIDTest_BuildIDPH_Test>, testing::internal::Types1<google_breakpad::ElfClass64> >::Register
+2d318 e 604 85
+2d326 2 604 85
+2d328 2 621 85
+2d32a 6 604 85
+2d330 6 621 85
+2d336 2 604 85
+2d338 4 621 85
+2d33c 6 621 85
+2d342 6 621 85
+2d348 4 621 85
+2d34c 2 621 85
+2d34e 2 621 85
+2d350 8 621 85
+2d358 a 621 85
+2d362 6 621 85
+2d368 4 621 85
+2d36c 8 621 85
+2d374 8 621 85
+2d37c 8 621 85
+2d384 4 621 85
+2d388 8 621 85
+2d390 4 621 85
+2d394 6 621 85
+2d39a 4 621 85
+2d39e 8 621 85
+2d3a6 16 85 88
+2d3bc a 621 85
+2d3c6 2 612 85
+2d3c8 a 484 85
+2d3d2 1e 612 85
+2d3f0 36 156 137
+2d426 3a 626 85
+FUNC 2d460 158 0 testing::internal::TypeParameterizedTest<FileIDTest, testing::internal::TemplateSel<FileIDTest_BuildIDPH_Test>, testing::internal::Types2<google_breakpad::ElfClass32, google_breakpad::ElfClass64> >::Register
+2d460 e 604 85
+2d46e 2 604 85
+2d470 2 621 85
+2d472 6 604 85
+2d478 6 621 85
+2d47e 2 604 85
+2d480 4 621 85
+2d484 6 621 85
+2d48a 6 621 85
+2d490 4 621 85
+2d494 2 621 85
+2d496 2 621 85
+2d498 8 621 85
+2d4a0 a 621 85
+2d4aa 8 621 85
+2d4b2 4 621 85
+2d4b6 8 621 85
+2d4be 8 621 85
+2d4c6 8 621 85
+2d4ce 4 621 85
+2d4d2 8 621 85
+2d4da a 621 85
+2d4e4 c 621 85
+2d4f0 16 85 88
+2d506 a 621 85
+2d510 2 612 85
+2d512 a 484 85
+2d51c 1e 612 85
+2d53a 36 156 137
+2d570 e 625 85
+2d57e 3a 626 85
+FUNC 2d5b8 148 0 testing::internal::TypeParameterizedTest<FileIDTest, testing::internal::TemplateSel<FileIDTest_UniqueHashes_Test>, testing::internal::Types1<google_breakpad::ElfClass64> >::Register
+2d5b8 e 604 85
+2d5c6 2 604 85
+2d5c8 2 621 85
+2d5ca 6 604 85
+2d5d0 6 621 85
+2d5d6 2 604 85
+2d5d8 4 621 85
+2d5dc 6 621 85
+2d5e2 6 621 85
+2d5e8 4 621 85
+2d5ec 2 621 85
+2d5ee 2 621 85
+2d5f0 8 621 85
+2d5f8 a 621 85
+2d602 6 621 85
+2d608 4 621 85
+2d60c 8 621 85
+2d614 8 621 85
+2d61c 8 621 85
+2d624 4 621 85
+2d628 8 621 85
+2d630 4 621 85
+2d634 6 621 85
+2d63a 4 621 85
+2d63e 8 621 85
+2d646 16 85 88
+2d65c a 621 85
+2d666 2 612 85
+2d668 a 484 85
+2d672 1e 612 85
+2d690 36 156 137
+2d6c6 3a 626 85
+FUNC 2d700 158 0 testing::internal::TypeParameterizedTest<FileIDTest, testing::internal::TemplateSel<FileIDTest_UniqueHashes_Test>, testing::internal::Types2<google_breakpad::ElfClass32, google_breakpad::ElfClass64> >::Register
+2d700 e 604 85
+2d70e 2 604 85
+2d710 2 621 85
+2d712 6 604 85
+2d718 6 621 85
+2d71e 2 604 85
+2d720 4 621 85
+2d724 6 621 85
+2d72a 6 621 85
+2d730 4 621 85
+2d734 2 621 85
+2d736 2 621 85
+2d738 8 621 85
+2d740 a 621 85
+2d74a 8 621 85
+2d752 4 621 85
+2d756 8 621 85
+2d75e 8 621 85
+2d766 8 621 85
+2d76e 4 621 85
+2d772 8 621 85
+2d77a a 621 85
+2d784 c 621 85
+2d790 16 85 88
+2d7a6 a 621 85
+2d7b0 2 612 85
+2d7b2 a 484 85
+2d7bc 1e 612 85
+2d7da 36 156 137
+2d810 e 625 85
+2d81e 3a 626 85
+FUNC 2d858 28 0 FileIDTest<google_breakpad::ElfClass64>::~FileIDTest
+2d858 4 107 43
+2d85c a 107 43
+2d866 4 87 144
+2d86a 2 88 144
+2d86c 6 323 106
+2d872 6 107 43
+2d878 8 107 43
+FUNC 2d880 1c 0 FileIDTest_ElfClass_Test<google_breakpad::ElfClass64>::~FileIDTest_ElfClass_Test
+2d880 4 127 43
+2d884 18 127 43
+FUNC 2d89c 12 0 FileIDTest_ElfClass_Test<google_breakpad::ElfClass64>::~FileIDTest_ElfClass_Test
+2d89c 2 127 43
+2d89e 6 127 43
+2d8a4 6 127 43
+2d8aa 4 127 43
+FUNC 2d8b0 1c 0 FileIDTest_BuildID_Test<google_breakpad::ElfClass64>::~FileIDTest_BuildID_Test
+2d8b0 4 151 43
+2d8b4 18 151 43
+FUNC 2d8cc 12 0 FileIDTest_BuildID_Test<google_breakpad::ElfClass64>::~FileIDTest_BuildID_Test
+2d8cc 2 151 43
+2d8ce 6 151 43
+2d8d4 6 151 43
+2d8da 4 151 43
+FUNC 2d8e0 1c 0 FileIDTest_BuildIDPH_Test<google_breakpad::ElfClass64>::~FileIDTest_BuildIDPH_Test
+2d8e0 4 183 43
+2d8e4 18 183 43
+FUNC 2d8fc 12 0 FileIDTest_BuildIDPH_Test<google_breakpad::ElfClass64>::~FileIDTest_BuildIDPH_Test
+2d8fc 2 183 43
+2d8fe 6 183 43
+2d904 6 183 43
+2d90a 4 183 43
+FUNC 2d910 1c 0 FileIDTest_UniqueHashes_Test<google_breakpad::ElfClass64>::~FileIDTest_UniqueHashes_Test
+2d910 4 220 43
+2d914 18 220 43
+FUNC 2d92c 12 0 FileIDTest_UniqueHashes_Test<google_breakpad::ElfClass64>::~FileIDTest_UniqueHashes_Test
+2d92c 2 220 43
+2d92e 6 220 43
+2d934 6 220 43
+2d93a 4 220 43
+FUNC 2d940 28 0 FileIDTest<google_breakpad::ElfClass32>::~FileIDTest
+2d940 4 107 43
+2d944 a 107 43
+2d94e 4 87 144
+2d952 2 88 144
+2d954 6 323 106
+2d95a 6 107 43
+2d960 8 107 43
+FUNC 2d968 1c 0 FileIDTest_ElfClass_Test<google_breakpad::ElfClass32>::~FileIDTest_ElfClass_Test
+2d968 4 127 43
+2d96c 18 127 43
+FUNC 2d984 12 0 FileIDTest_ElfClass_Test<google_breakpad::ElfClass32>::~FileIDTest_ElfClass_Test
+2d984 2 127 43
+2d986 6 127 43
+2d98c 6 127 43
+2d992 4 127 43
+FUNC 2d998 1c 0 FileIDTest_BuildID_Test<google_breakpad::ElfClass32>::~FileIDTest_BuildID_Test
+2d998 4 151 43
+2d99c 18 151 43
+FUNC 2d9b4 12 0 FileIDTest_BuildID_Test<google_breakpad::ElfClass32>::~FileIDTest_BuildID_Test
+2d9b4 2 151 43
+2d9b6 6 151 43
+2d9bc 6 151 43
+2d9c2 4 151 43
+FUNC 2d9c8 1c 0 FileIDTest_BuildIDPH_Test<google_breakpad::ElfClass32>::~FileIDTest_BuildIDPH_Test
+2d9c8 4 183 43
+2d9cc 18 183 43
+FUNC 2d9e4 12 0 FileIDTest_BuildIDPH_Test<google_breakpad::ElfClass32>::~FileIDTest_BuildIDPH_Test
+2d9e4 2 183 43
+2d9e6 6 183 43
+2d9ec 6 183 43
+2d9f2 4 183 43
+FUNC 2d9f8 1c 0 FileIDTest_UniqueHashes_Test<google_breakpad::ElfClass32>::~FileIDTest_UniqueHashes_Test
+2d9f8 4 220 43
+2d9fc 18 220 43
+FUNC 2da14 12 0 FileIDTest_UniqueHashes_Test<google_breakpad::ElfClass32>::~FileIDTest_UniqueHashes_Test
+2da14 2 220 43
+2da16 6 220 43
+2da1c 6 220 43
+2da22 4 220 43
+FUNC 2da28 180 0 testing::internal::CmpHelperOpFailure<unsigned int, unsigned int>
+2da28 8 1579 82
+2da30 8 1579 82
+2da38 2 1583 82
+2da3a 4 1579 82
+2da3e 2 306 82
+2da40 2 1579 82
+2da42 2 1583 82
+2da44 a 1579 82
+2da4e 4 1583 82
+2da52 6 306 82
+2da58 c 333 127
+2da64 8 306 82
+2da6c 6 85 79
+2da72 a 1583 82
+2da7c 6 306 82
+2da82 c 333 127
+2da8e 8 306 82
+2da96 6 85 79
+2da9c a 1583 82
+2daa6 6 306 82
+2daac c 333 127
+2dab8 8 306 82
+2dac0 6 85 79
+2dac6 a 1583 82
+2dad0 6 306 82
+2dad6 c 333 127
+2dae2 8 306 82
+2daea 2 1382 82
+2daec 6 85 79
+2daf2 8 1382 82
+2dafa 6 306 82
+2db00 a 131 79
+2db0a 8 306 82
+2db12 6 85 79
+2db18 6 306 82
+2db1e c 333 127
+2db2a 8 306 82
+2db32 4 1382 82
+2db36 6 85 79
+2db3c 8 1382 82
+2db44 6 306 82
+2db4a a 131 79
+2db54 8 306 82
+2db5c 6 85 79
+2db62 8 1585 82
+2db6a c 156 137
+2db76 6 256 82
+2db7c 2c 1586 82
+FUNC 2dba8 178 0 FileIDTest<google_breakpad::ElfClass32>::GetElfContents
+2dba8 e 109 43
+2dbb6 2 109 43
+2dbb8 8 110 43
+2dbc0 2 109 43
+2dbc2 2 110 43
+2dbc4 2 109 43
+2dbc6 4 110 43
+2dbca 8 111 43
+2dbd2 6 1139 87
+2dbd8 4 277 82
+2dbdc 4 1139 87
+2dbe0 2 111 43
+2dbe2 1a 111 43
+2dbfc 8 111 43
+2dc04 4 111 43
+2dc08 c 111 43
+2dc14 6 111 43
+2dc1a 8 111 43
+2dc22 6 85 79
+2dc28 6 111 43
+2dc2e 8 156 137
+2dc36 6 256 82
+2dc3c 4 400 136
+2dc40 4 112 43
+2dc44 2 400 136
+2dc46 2 112 43
+2dc48 2 1619 82
+2dc4a 8 1619 82
+2dc52 1a 1619 82
+2dc6c 6 112 43
+2dc72 2 1144 87
+2dc74 6 298 82
+2dc7a 4 298 82
+2dc7e 8 112 43
+2dc86 4 112 43
+2dc8a a 112 43
+2dc94 6 112 43
+2dc9a 8 112 43
+2dca2 6 85 79
+2dca8 6 112 43
+2dcae 12 256 82
+2dcc0 4 228 148
+2dcc4 4 630 144
+2dcc8 6 269 105
+2dcce 2 615 144
+2dcd0 c 510 144
+2dcdc 4 116 43
+2dce0 6 156 137
+2dce6 3a 117 43
+FUNC 2dba8 178 0 FileIDTest<google_breakpad::ElfClass64>::GetElfContents
+FUNC 2dd20 1c4 0 FileIDTest_ElfClass_Test<google_breakpad::ElfClass32>::TestBody
+2dd20 c 127 43
+2dd2c 4 130 43
+2dd30 2 127 43
+2dd32 2 130 43
+2dd34 6 127 43
+2dd3a 18 130 43
+2dd52 2 134 43
+2dd54 4 130 43
+2dd58 2 134 43
+2dd5a 4 130 43
+2dd5e 6 134 43
+2dd64 4 135 43
+2dd68 4 134 43
+2dd6c a 135 43
+2dd76 e 453 136
+2dd84 4 136 43
+2dd88 10 139 43
+2dd98 22 139 43
+2ddba 6 156 137
+2ddc0 6 140 43
+2ddc6 4 143 43
+2ddca 8 141 43
+2ddd2 a 143 43
+2dddc 2 1139 87
+2ddde 2 277 82
+2dde0 2 143 43
+2dde2 16 143 43
+2ddf8 a 143 43
+2de02 4 143 43
+2de06 a 143 43
+2de10 6 143 43
+2de16 8 143 43
+2de1e 6 85 79
+2de24 6 143 43
+2de2a 6 156 137
+2de30 8 256 82
+2de38 a 146 43
+2de42 16 148 43
+2de58 2 1144 87
+2de5a 6 298 82
+2de60 4 298 82
+2de64 8 148 43
+2de6c 2 148 43
+2de6e a 148 43
+2de78 6 148 43
+2de7e 8 148 43
+2de86 6 85 79
+2de8c 6 148 43
+2de92 6 256 82
+2de98 6 135 43
+2de9e 6 148 43
+2dea4 40 149 43
+FUNC 2dee4 274 0 FileIDTest_BuildID_Test<google_breakpad::ElfClass32>::TestBody
+2dee4 12 151 43
+2def6 2 151 43
+2def8 1c 154 43
+2df14 1e 156 43
+2df32 4 157 43
+2df36 2 156 43
+2df38 2 157 43
+2df3a 2 156 43
+2df3c c 157 43
+2df48 8 164 43
+2df50 4 165 43
+2df54 6 164 43
+2df5a 8 165 43
+2df62 c 303 62
+2df6e 10 167 43
+2df7e 28 167 43
+2dfa6 6 156 137
+2dfac a 184 51
+2dfb6 2 170 43
+2dfb8 4 184 51
+2dfbc 2 170 43
+2dfbe 2 184 51
+2dfc0 6 170 43
+2dfc6 2 184 51
+2dfc8 4 170 43
+2dfcc 10 169 43
+2dfdc 6 156 137
+2dfe2 c 171 43
+2dfee 24 171 43
+2e012 6 156 137
+2e018 6 172 43
+2e01e 8 173 43
+2e026 a 175 43
+2e030 4 1139 87
+2e034 2 277 82
+2e036 2 175 43
+2e038 16 175 43
+2e04e c 175 43
+2e05a 4 175 43
+2e05e a 175 43
+2e068 6 175 43
+2e06e 8 175 43
+2e076 6 85 79
+2e07c 6 175 43
+2e082 6 156 137
+2e088 a 256 82
+2e092 a 178 43
+2e09c 16 180 43
+2e0b2 2 1144 87
+2e0b4 6 298 82
+2e0ba 4 298 82
+2e0be 8 180 43
+2e0c6 2 180 43
+2e0c8 a 180 43
+2e0d2 6 180 43
+2e0d8 8 180 43
+2e0e0 6 85 79
+2e0e6 6 180 43
+2e0ec 6 256 82
+2e0f2 6 168 43
+2e0f8 6 165 43
+2e0fe 6 180 43
+2e104 54 181 43
+FUNC 2e158 2a8 0 FileIDTest_BuildIDPH_Test<google_breakpad::ElfClass32>::TestBody
+2e158 10 183 43
+2e168 2 183 43
+2e16a 2 186 43
+2e16c 2 183 43
+2e16e 1a 186 43
+2e188 1e 188 43
+2e1a6 8 189 43
+2e1ae 4 188 43
+2e1b2 a 189 43
+2e1bc c 196 43
+2e1c8 4 197 43
+2e1cc 4 196 43
+2e1d0 8 197 43
+2e1d8 c 303 62
+2e1e4 10 199 43
+2e1f4 22 199 43
+2e216 6 156 137
+2e21c a 184 51
+2e226 2 202 43
+2e228 4 184 51
+2e22c 2 202 43
+2e22e 2 184 51
+2e230 6 202 43
+2e236 2 184 51
+2e238 4 202 43
+2e23c 14 201 43
+2e250 6 156 137
+2e256 c 204 43
+2e262 10 203 43
+2e272 6 156 137
+2e278 c 205 43
+2e284 22 205 43
+2e2a6 6 156 137
+2e2ac e 206 43
+2e2ba 6 207 43
+2e2c0 8 208 43
+2e2c8 e 210 43
+2e2d6 2 1139 87
+2e2d8 2 277 82
+2e2da 2 210 43
+2e2dc 16 210 43
+2e2f2 a 210 43
+2e2fc 4 210 43
+2e300 a 210 43
+2e30a 6 210 43
+2e310 8 210 43
+2e318 6 85 79
+2e31e 6 210 43
+2e324 6 156 137
+2e32a 8 256 82
+2e332 a 213 43
+2e33c 16 215 43
+2e352 2 1144 87
+2e354 6 298 82
+2e35a 4 298 82
+2e35e 8 215 43
+2e366 2 215 43
+2e368 a 215 43
+2e372 6 215 43
+2e378 8 215 43
+2e380 6 85 79
+2e386 6 215 43
+2e38c 6 256 82
+2e392 6 200 43
+2e398 6 197 43
+2e39e 6 215 43
+2e3a4 5c 216 43
+FUNC 2e400 390 0 FileIDTest_UniqueHashes_Test<google_breakpad::ElfClass32>::TestBody
+2e400 10 220 43
+2e410 2 220 43
+2e412 2 222 43
+2e414 2 220 43
+2e416 22 222 43
+2e438 1a 224 43
+2e452 2 229 43
+2e454 a 232 43
+2e45e 4 224 43
+2e462 2 229 43
+2e464 4 224 43
+2e468 4 230 43
+2e46c a 229 43
+2e476 8 230 43
+2e47e a 231 43
+2e488 10 232 43
+2e498 1c 232 43
+2e4b4 6 156 137
+2e4ba 8 233 43
+2e4c2 c 234 43
+2e4ce 10 235 43
+2e4de 1c 235 43
+2e4fa 6 156 137
+2e500 6 236 43
+2e506 8 237 43
+2e50e 6 233 43
+2e514 6 230 43
+2e51a 6 237 43
+2e520 a 240 43
+2e52a 2 1139 87
+2e52c 2 277 82
+2e52e 2 240 43
+2e530 16 240 43
+2e546 a 240 43
+2e550 2 240 43
+2e552 a 240 43
+2e55c 6 240 43
+2e562 8 240 43
+2e56a 6 85 79
+2e570 6 240 43
+2e576 6 156 137
+2e57c 6 256 82
+2e582 4 242 43
+2e586 4 256 82
+2e58a a 242 43
+2e594 6 246 43
+2e59a 4 247 43
+2e59e 8 246 43
+2e5a6 2 248 43
+2e5a8 8 247 43
+2e5b0 8 248 43
+2e5b8 a 249 43
+2e5c2 e 250 43
+2e5d0 28 250 43
+2e5f8 6 156 137
+2e5fe c 251 43
+2e60a c 252 43
+2e616 24 252 43
+2e63a 6 156 137
+2e640 6 253 43
+2e646 8 254 43
+2e64e 6 248 43
+2e654 6 247 43
+2e65a 6 254 43
+2e660 a 257 43
+2e66a 4 1139 87
+2e66e 2 277 82
+2e670 2 257 43
+2e672 16 257 43
+2e688 a 257 43
+2e692 2 257 43
+2e694 c 257 43
+2e6a0 6 257 43
+2e6a6 8 257 43
+2e6ae 6 85 79
+2e6b4 6 257 43
+2e6ba 6 156 137
+2e6c0 2 259 43
+2e6c2 6 256 82
+2e6c8 a 259 43
+2e6d2 4 262 43
+2e6d6 2 256 82
+2e6d8 12 262 43
+2e6ea 2 1144 87
+2e6ec 6 298 82
+2e6f2 4 298 82
+2e6f6 8 262 43
+2e6fe 2 262 43
+2e700 c 262 43
+2e70c 6 262 43
+2e712 8 262 43
+2e71a 6 85 79
+2e720 6 262 43
+2e726 6 256 82
+2e72c 64 263 43
+FUNC 2e790 1c4 0 FileIDTest_ElfClass_Test<google_breakpad::ElfClass64>::TestBody
+2e790 c 127 43
+2e79c 4 130 43
+2e7a0 2 127 43
+2e7a2 2 130 43
+2e7a4 6 127 43
+2e7aa 1c 130 43
+2e7c6 2 134 43
+2e7c8 4 130 43
+2e7cc 8 134 43
+2e7d4 4 135 43
+2e7d8 4 134 43
+2e7dc a 135 43
+2e7e6 e 453 136
+2e7f4 4 136 43
+2e7f8 10 139 43
+2e808 22 139 43
+2e82a 6 156 137
+2e830 6 140 43
+2e836 4 143 43
+2e83a 8 141 43
+2e842 a 143 43
+2e84c 2 1139 87
+2e84e 2 277 82
+2e850 2 143 43
+2e852 16 143 43
+2e868 a 143 43
+2e872 4 143 43
+2e876 a 143 43
+2e880 6 143 43
+2e886 8 143 43
+2e88e 6 85 79
+2e894 6 143 43
+2e89a 6 156 137
+2e8a0 8 256 82
+2e8a8 a 146 43
+2e8b2 16 148 43
+2e8c8 2 1144 87
+2e8ca 6 298 82
+2e8d0 4 298 82
+2e8d4 8 148 43
+2e8dc 2 148 43
+2e8de a 148 43
+2e8e8 6 148 43
+2e8ee 8 148 43
+2e8f6 6 85 79
+2e8fc 6 148 43
+2e902 6 256 82
+2e908 6 135 43
+2e90e 6 148 43
+2e914 40 149 43
+FUNC 2e954 274 0 FileIDTest_BuildID_Test<google_breakpad::ElfClass64>::TestBody
+2e954 12 151 43
+2e966 2 151 43
+2e968 1c 154 43
+2e984 1e 156 43
+2e9a2 4 157 43
+2e9a6 2 156 43
+2e9a8 2 157 43
+2e9aa 2 164 43
+2e9ac 2 156 43
+2e9ae 8 157 43
+2e9b6 4 165 43
+2e9ba 4 157 43
+2e9be c 164 43
+2e9ca 8 165 43
+2e9d2 c 303 62
+2e9de 10 167 43
+2e9ee 28 167 43
+2ea16 6 156 137
+2ea1c a 184 51
+2ea26 2 170 43
+2ea28 4 184 51
+2ea2c 2 170 43
+2ea2e 2 184 51
+2ea30 6 170 43
+2ea36 2 184 51
+2ea38 4 170 43
+2ea3c 10 169 43
+2ea4c 6 156 137
+2ea52 c 171 43
+2ea5e 24 171 43
+2ea82 6 156 137
+2ea88 6 172 43
+2ea8e 8 173 43
+2ea96 a 175 43
+2eaa0 4 1139 87
+2eaa4 2 277 82
+2eaa6 2 175 43
+2eaa8 16 175 43
+2eabe c 175 43
+2eaca 4 175 43
+2eace a 175 43
+2ead8 6 175 43
+2eade 8 175 43
+2eae6 6 85 79
+2eaec 6 175 43
+2eaf2 6 156 137
+2eaf8 a 256 82
+2eb02 a 178 43
+2eb0c 16 180 43
+2eb22 2 1144 87
+2eb24 6 298 82
+2eb2a 4 298 82
+2eb2e 8 180 43
+2eb36 2 180 43
+2eb38 a 180 43
+2eb42 6 180 43
+2eb48 8 180 43
+2eb50 6 85 79
+2eb56 6 180 43
+2eb5c 6 256 82
+2eb62 6 168 43
+2eb68 6 165 43
+2eb6e 6 180 43
+2eb74 54 181 43
+FUNC 2ebc8 2a8 0 FileIDTest_BuildIDPH_Test<google_breakpad::ElfClass64>::TestBody
+2ebc8 10 183 43
+2ebd8 2 183 43
+2ebda 2 186 43
+2ebdc 2 183 43
+2ebde 1a 186 43
+2ebf8 1e 188 43
+2ec16 8 189 43
+2ec1e 4 196 43
+2ec22 4 188 43
+2ec26 a 189 43
+2ec30 4 197 43
+2ec34 c 196 43
+2ec40 8 197 43
+2ec48 c 303 62
+2ec54 10 199 43
+2ec64 22 199 43
+2ec86 6 156 137
+2ec8c a 184 51
+2ec96 2 202 43
+2ec98 4 184 51
+2ec9c 2 202 43
+2ec9e 2 184 51
+2eca0 6 202 43
+2eca6 2 184 51
+2eca8 4 202 43
+2ecac 14 201 43
+2ecc0 6 156 137
+2ecc6 c 204 43
+2ecd2 10 203 43
+2ece2 6 156 137
+2ece8 c 205 43
+2ecf4 22 205 43
+2ed16 6 156 137
+2ed1c e 206 43
+2ed2a 6 207 43
+2ed30 8 208 43
+2ed38 e 210 43
+2ed46 2 1139 87
+2ed48 2 277 82
+2ed4a 2 210 43
+2ed4c 16 210 43
+2ed62 a 210 43
+2ed6c 4 210 43
+2ed70 a 210 43
+2ed7a 6 210 43
+2ed80 8 210 43
+2ed88 6 85 79
+2ed8e 6 210 43
+2ed94 6 156 137
+2ed9a 8 256 82
+2eda2 a 213 43
+2edac 16 215 43
+2edc2 2 1144 87
+2edc4 6 298 82
+2edca 4 298 82
+2edce 8 215 43
+2edd6 2 215 43
+2edd8 a 215 43
+2ede2 6 215 43
+2ede8 8 215 43
+2edf0 6 85 79
+2edf6 6 215 43
+2edfc 6 256 82
+2ee02 6 200 43
+2ee08 6 197 43
+2ee0e 6 215 43
+2ee14 5c 216 43
+FUNC 2ee70 390 0 FileIDTest_UniqueHashes_Test<google_breakpad::ElfClass64>::TestBody
+2ee70 10 220 43
+2ee80 2 220 43
+2ee82 2 222 43
+2ee84 2 220 43
+2ee86 22 222 43
+2eea8 1a 224 43
+2eec2 a 232 43
+2eecc 4 224 43
+2eed0 2 229 43
+2eed2 4 224 43
+2eed6 4 230 43
+2eeda c 229 43
+2eee6 8 230 43
+2eeee a 231 43
+2eef8 10 232 43
+2ef08 1c 232 43
+2ef24 6 156 137
+2ef2a 8 233 43
+2ef32 c 234 43
+2ef3e 10 235 43
+2ef4e 1c 235 43
+2ef6a 6 156 137
+2ef70 6 236 43
+2ef76 8 237 43
+2ef7e 6 233 43
+2ef84 6 230 43
+2ef8a 6 237 43
+2ef90 a 240 43
+2ef9a 2 1139 87
+2ef9c 2 277 82
+2ef9e 2 240 43
+2efa0 16 240 43
+2efb6 a 240 43
+2efc0 2 240 43
+2efc2 a 240 43
+2efcc 6 240 43
+2efd2 8 240 43
+2efda 6 85 79
+2efe0 6 240 43
+2efe6 6 156 137
+2efec 6 256 82
+2eff2 4 242 43
+2eff6 2 246 43
+2eff8 4 256 82
+2effc a 242 43
+2f006 4 247 43
+2f00a c 246 43
+2f016 2 248 43
+2f018 8 247 43
+2f020 8 248 43
+2f028 a 249 43
+2f032 e 250 43
+2f040 28 250 43
+2f068 6 156 137
+2f06e c 251 43
+2f07a c 252 43
+2f086 24 252 43
+2f0aa 6 156 137
+2f0b0 6 253 43
+2f0b6 8 254 43
+2f0be 6 248 43
+2f0c4 6 247 43
+2f0ca 6 254 43
+2f0d0 a 257 43
+2f0da 4 1139 87
+2f0de 2 277 82
+2f0e0 2 257 43
+2f0e2 16 257 43
+2f0f8 a 257 43
+2f102 2 257 43
+2f104 c 257 43
+2f110 6 257 43
+2f116 8 257 43
+2f11e 6 85 79
+2f124 6 257 43
+2f12a 6 156 137
+2f130 2 259 43
+2f132 6 256 82
+2f138 a 259 43
+2f142 4 262 43
+2f146 2 256 82
+2f148 12 262 43
+2f15a 2 1144 87
+2f15c 6 298 82
+2f162 4 298 82
+2f166 8 262 43
+2f16e 2 262 43
+2f170 c 262 43
+2f17c 6 262 43
+2f182 8 262 43
+2f18a 6 85 79
+2f190 6 262 43
+2f196 6 256 82
+2f19c 64 263 43
+FUNC 2f200 18 0 LinuxLibcSupportTest_read_decimal_ptr_Test::~LinuxLibcSupportTest_read_decimal_ptr_Test
+2f200 2 194 46
+2f202 16 194 46
+FUNC 2f218 12 0 LinuxLibcSupportTest_read_decimal_ptr_Test::~LinuxLibcSupportTest_read_decimal_ptr_Test
+2f218 2 194 46
+2f21a 6 194 46
+2f220 6 194 46
+2f226 4 194 46
+FUNC 2f22c 18 0 LinuxLibcSupportTest_read_hex_ptr_Test::~LinuxLibcSupportTest_read_hex_ptr_Test
+2f22c 2 169 46
+2f22e 16 169 46
+FUNC 2f244 12 0 LinuxLibcSupportTest_read_hex_ptr_Test::~LinuxLibcSupportTest_read_hex_ptr_Test
+2f244 2 169 46
+2f246 6 169 46
+2f24c 6 169 46
+2f252 4 169 46
+FUNC 2f258 18 0 LinuxLibcSupportTest_memchr_Test::~LinuxLibcSupportTest_memchr_Test
+2f258 2 157 46
+2f25a 16 157 46
+FUNC 2f270 12 0 LinuxLibcSupportTest_memchr_Test::~LinuxLibcSupportTest_memchr_Test
+2f270 2 157 46
+2f272 6 157 46
+2f278 6 157 46
+2f27e 4 157 46
+FUNC 2f284 18 0 LinuxLibcSupportTest_strrchr_Test::~LinuxLibcSupportTest_strrchr_Test
+2f284 2 143 46
+2f286 16 143 46
+FUNC 2f29c 12 0 LinuxLibcSupportTest_strrchr_Test::~LinuxLibcSupportTest_strrchr_Test
+2f29c 2 143 46
+2f29e 6 143 46
+2f2a4 6 143 46
+2f2aa 4 143 46
+FUNC 2f2b0 18 0 LinuxLibcSupportTest_strchr_Test::~LinuxLibcSupportTest_strchr_Test
+2f2b0 2 129 46
+2f2b2 16 129 46
+FUNC 2f2c8 12 0 LinuxLibcSupportTest_strchr_Test::~LinuxLibcSupportTest_strchr_Test
+2f2c8 2 129 46
+2f2ca 6 129 46
+2f2d0 6 129 46
+2f2d6 4 129 46
+FUNC 2f2dc 18 0 LinuxLibcSupportTest_uitos_Test::~LinuxLibcSupportTest_uitos_Test
+2f2dc 2 106 46
+2f2de 16 106 46
+FUNC 2f2f4 12 0 LinuxLibcSupportTest_uitos_Test::~LinuxLibcSupportTest_uitos_Test
+2f2f4 2 106 46
+2f2f6 6 106 46
+2f2fc 6 106 46
+2f302 4 106 46
+FUNC 2f308 18 0 LinuxLibcSupportTest_uint_len_Test::~LinuxLibcSupportTest_uint_len_Test
+2f308 2 92 46
+2f30a 16 92 46
+FUNC 2f320 12 0 LinuxLibcSupportTest_uint_len_Test::~LinuxLibcSupportTest_uint_len_Test
+2f320 2 92 46
+2f322 6 92 46
+2f328 6 92 46
+2f32e 4 92 46
+FUNC 2f334 18 0 LinuxLibcSupportTest_strtoui_Test::~LinuxLibcSupportTest_strtoui_Test
+2f334 2 71 46
+2f336 16 71 46
+FUNC 2f34c 12 0 LinuxLibcSupportTest_strtoui_Test::~LinuxLibcSupportTest_strtoui_Test
+2f34c 2 71 46
+2f34e 6 71 46
+2f354 6 71 46
+2f35a 4 71 46
+FUNC 2f360 18 0 LinuxLibcSupportTest_strcmp_Test::~LinuxLibcSupportTest_strcmp_Test
+2f360 2 46 46
+2f362 16 46 46
+FUNC 2f378 12 0 LinuxLibcSupportTest_strcmp_Test::~LinuxLibcSupportTest_strcmp_Test
+2f378 2 46 46
+2f37a 6 46 46
+2f380 6 46 46
+2f386 4 46 46
+FUNC 2f38c 18 0 LinuxLibcSupportTest_strlen_Test::~LinuxLibcSupportTest_strlen_Test
+2f38c 2 37 46
+2f38e 16 37 46
+FUNC 2f3a4 12 0 LinuxLibcSupportTest_strlen_Test::~LinuxLibcSupportTest_strlen_Test
+2f3a4 2 37 46
+2f3a6 6 37 46
+2f3ac 6 37 46
+2f3b2 4 37 46
+FUNC 2f3b8 20 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_read_decimal_ptr_Test>::CreateTest
+2f3b8 2 486 85
+2f3ba 8 486 85
+2f3c2 6 194 46
+2f3c8 2 486 85
+2f3ca 6 194 46
+2f3d0 8 486 85
+FUNC 2f3d8 20 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_read_hex_ptr_Test>::CreateTest
+2f3d8 2 486 85
+2f3da 8 486 85
+2f3e2 6 169 46
+2f3e8 2 486 85
+2f3ea 6 169 46
+2f3f0 8 486 85
+FUNC 2f3f8 20 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_memchr_Test>::CreateTest
+2f3f8 2 486 85
+2f3fa 8 486 85
+2f402 6 157 46
+2f408 2 486 85
+2f40a 6 157 46
+2f410 8 486 85
+FUNC 2f418 20 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_strrchr_Test>::CreateTest
+2f418 2 486 85
+2f41a 8 486 85
+2f422 6 143 46
+2f428 2 486 85
+2f42a 6 143 46
+2f430 8 486 85
+FUNC 2f438 20 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_strchr_Test>::CreateTest
+2f438 2 486 85
+2f43a 8 486 85
+2f442 6 129 46
+2f448 2 486 85
+2f44a 6 129 46
+2f450 8 486 85
+FUNC 2f458 20 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_uitos_Test>::CreateTest
+2f458 2 486 85
+2f45a 8 486 85
+2f462 6 106 46
+2f468 2 486 85
+2f46a 6 106 46
+2f470 8 486 85
+FUNC 2f478 20 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_uint_len_Test>::CreateTest
+2f478 2 486 85
+2f47a 8 486 85
+2f482 6 92 46
+2f488 2 486 85
+2f48a 6 92 46
+2f490 8 486 85
+FUNC 2f498 20 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_strtoui_Test>::CreateTest
+2f498 2 486 85
+2f49a 8 486 85
+2f4a2 6 71 46
+2f4a8 2 486 85
+2f4aa 6 71 46
+2f4b0 8 486 85
+FUNC 2f4b8 20 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_strcmp_Test>::CreateTest
+2f4b8 2 486 85
+2f4ba 8 486 85
+2f4c2 6 46 46
+2f4c8 2 486 85
+2f4ca 6 46 46
+2f4d0 8 486 85
+FUNC 2f4d8 20 0 testing::internal::TestFactoryImpl<LinuxLibcSupportTest_strlen_Test>::CreateTest
+2f4d8 2 486 85
+2f4da 8 486 85
+2f4e2 6 37 46
+2f4e8 2 486 85
+2f4ea 6 37 46
+2f4f0 8 486 85
+FUNC 2f4f8 a4 0 LinuxLibcSupportTest_strlen_Test::TestBody
+2f4f8 6 37 46
+2f4fe 8 1512 82
+2f506 6 37 46
+2f50c 8 1512 82
+2f514 6 40 46
+2f51a 8 42 46
+2f522 6 42 46
+2f528 4 1512 82
+2f52c 2 42 46
+2f52e e 1512 82
+2f53c 8 42 46
+2f544 6 302 82
+2f54a 10 42 46
+2f55a 6 42 46
+2f560 8 42 46
+2f568 6 85 79
+2f56e 6 42 46
+2f574 e 256 82
+2f582 2 43 46
+2f584 18 44 46
+FUNC 2f59c 328 0 LinuxLibcSupportTest_uint_len_Test::TestBody
+2f59c 4 92 46
+2f5a0 2 93 46
+2f5a2 2 92 46
+2f5a4 a 93 46
+2f5ae e 1512 82
+2f5bc 2 93 46
+2f5be a 1512 82
+2f5c8 4 93 46
+2f5cc 4 1512 82
+2f5d0 8 93 46
+2f5d8 6 302 82
+2f5de e 93 46
+2f5ec 6 256 82
+2f5f2 8 94 46
+2f5fa 2 1512 82
+2f5fc 2 94 46
+2f5fe a 1512 82
+2f608 4 94 46
+2f60c 4 1512 82
+2f610 6 94 46
+2f616 6 302 82
+2f61c e 94 46
+2f62a 6 256 82
+2f630 8 95 46
+2f638 2 1512 82
+2f63a 2 95 46
+2f63c a 1512 82
+2f646 4 95 46
+2f64a 4 1512 82
+2f64e 6 95 46
+2f654 6 302 82
+2f65a e 95 46
+2f668 6 256 82
+2f66e 8 96 46
+2f676 2 1512 82
+2f678 2 96 46
+2f67a a 1512 82
+2f684 4 96 46
+2f688 4 1512 82
+2f68c 6 96 46
+2f692 6 302 82
+2f698 e 96 46
+2f6a6 6 256 82
+2f6ac c 97 46
+2f6b8 8 1512 82
+2f6c0 2 97 46
+2f6c2 a 1512 82
+2f6cc 4 97 46
+2f6d0 4 1512 82
+2f6d4 6 97 46
+2f6da 6 302 82
+2f6e0 e 97 46
+2f6ee 6 256 82
+2f6f4 8 98 46
+2f6fc 2 1512 82
+2f6fe 2 98 46
+2f700 a 1512 82
+2f70a 4 98 46
+2f70e 4 1512 82
+2f712 6 98 46
+2f718 6 302 82
+2f71e e 98 46
+2f72c 6 256 82
+2f732 c 99 46
+2f73e 8 1512 82
+2f746 2 99 46
+2f748 a 1512 82
+2f752 4 99 46
+2f756 4 1512 82
+2f75a 6 99 46
+2f760 6 302 82
+2f766 e 99 46
+2f774 6 256 82
+2f77a 8 100 46
+2f782 2 1512 82
+2f784 2 100 46
+2f786 a 1512 82
+2f790 4 100 46
+2f794 4 1512 82
+2f798 6 100 46
+2f79e 6 302 82
+2f7a4 e 100 46
+2f7b2 6 256 82
+2f7b8 c 101 46
+2f7c4 4 1512 82
+2f7c8 4 101 46
+2f7cc e 1512 82
+2f7da 6 101 46
+2f7e0 6 302 82
+2f7e6 e 101 46
+2f7f4 6 256 82
+2f7fa e 103 46
+2f808 4 1512 82
+2f80c 4 103 46
+2f810 e 1512 82
+2f81e 6 103 46
+2f824 6 302 82
+2f82a 10 103 46
+2f83a 6 103 46
+2f840 8 103 46
+2f848 6 85 79
+2f84e 6 103 46
+2f854 6 256 82
+2f85a 6a 104 46
+FUNC 2f8c4 c4 0 LinuxLibcSupportTest_strcmp_Test::TestBody
+2f8c4 4 46 46
+2f8c8 6 66 46
+2f8ce 8 1512 82
+2f8d6 4 46 46
+2f8da 4 1512 82
+2f8de 8 60 46
+2f8e6 c 62 46
+2f8f2 4 63 46
+2f8f6 4 64 46
+2f8fa 2 65 46
+2f8fc 6 62 46
+2f902 4 67 46
+2f906 2 62 46
+2f908 4 67 46
+2f90c 8 1512 82
+2f914 2 67 46
+2f916 e 1512 82
+2f924 a 67 46
+2f92e 6 302 82
+2f934 12 67 46
+2f946 6 67 46
+2f94c 8 67 46
+2f954 6 85 79
+2f95a 6 67 46
+2f960 10 256 82
+2f970 2 68 46
+2f972 16 69 46
+FUNC 2f988 558 0 LinuxLibcSupportTest_strtoui_Test::TestBody
+2f988 a 71 46
+2f992 4 71 46
+2f996 4 74 46
+2f99a 2 71 46
+2f99c 6 74 46
+2f9a2 2 71 46
+2f9a4 4 74 46
+2f9a8 4 1139 87
+2f9ac 8 74 46
+2f9b4 4 277 82
+2f9b8 a 1139 87
+2f9c2 2 74 46
+2f9c4 1e 74 46
+2f9e2 14 74 46
+2f9f6 6 256 82
+2f9fc 12 75 46
+2fa0e 4 277 82
+2fa12 4 1139 87
+2fa16 2 75 46
+2fa18 18 75 46
+2fa30 12 75 46
+2fa42 6 256 82
+2fa48 10 76 46
+2fa58 4 277 82
+2fa5c 4 1139 87
+2fa60 2 76 46
+2fa62 18 76 46
+2fa7a 12 76 46
+2fa8c 6 256 82
+2fa92 10 77 46
+2faa2 4 277 82
+2faa6 4 1139 87
+2faaa 2 77 46
+2faac 18 77 46
+2fac4 12 77 46
+2fad6 6 256 82
+2fadc 10 78 46
+2faec 4 277 82
+2faf0 4 1139 87
+2faf4 2 78 46
+2faf6 18 78 46
+2fb0e 12 78 46
+2fb20 4 80 46
+2fb24 2 256 82
+2fb26 2 80 46
+2fb28 4 256 82
+2fb2c 8 80 46
+2fb34 4 1139 87
+2fb38 4 277 82
+2fb3c 2 80 46
+2fb3e 18 80 46
+2fb56 12 80 46
+2fb68 4 1512 82
+2fb6c 2 256 82
+2fb6e 2 1512 82
+2fb70 4 256 82
+2fb74 a 1512 82
+2fb7e 4 81 46
+2fb82 4 1512 82
+2fb86 6 81 46
+2fb8c 6 302 82
+2fb92 10 81 46
+2fba2 4 82 46
+2fba6 2 256 82
+2fba8 2 82 46
+2fbaa 4 256 82
+2fbae 8 82 46
+2fbb6 4 1139 87
+2fbba 4 277 82
+2fbbe 2 82 46
+2fbc0 18 82 46
+2fbd8 12 82 46
+2fbea 6 256 82
+2fbf0 2 83 46
+2fbf2 2 1512 82
+2fbf4 2 83 46
+2fbf6 c 1512 82
+2fc02 6 83 46
+2fc08 6 302 82
+2fc0e 10 83 46
+2fc1e 6 256 82
+2fc24 a 84 46
+2fc2e 4 1139 87
+2fc32 4 277 82
+2fc36 2 84 46
+2fc38 18 84 46
+2fc50 12 84 46
+2fc62 6 256 82
+2fc68 2 85 46
+2fc6a 8 1512 82
+2fc72 2 85 46
+2fc74 e 1512 82
+2fc82 6 85 46
+2fc88 6 302 82
+2fc8e 10 85 46
+2fc9e 4 86 46
+2fca2 2 256 82
+2fca4 2 86 46
+2fca6 4 256 82
+2fcaa 8 86 46
+2fcb2 4 1139 87
+2fcb6 4 277 82
+2fcba 4 1139 87
+2fcbe 2 86 46
+2fcc0 18 86 46
+2fcd8 12 86 46
+2fcea 4 87 46
+2fcee 6 256 82
+2fcf4 a 1512 82
+2fcfe 4 87 46
+2fd02 4 1512 82
+2fd06 6 87 46
+2fd0c 6 302 82
+2fd12 10 87 46
+2fd22 6 256 82
+2fd28 a 88 46
+2fd32 4 1139 87
+2fd36 4 277 82
+2fd3a 2 88 46
+2fd3c 18 88 46
+2fd54 14 88 46
+2fd68 6 88 46
+2fd6e 8 88 46
+2fd76 6 85 79
+2fd7c 6 88 46
+2fd82 8 156 137
+2fd8a 6 256 82
+2fd90 a 1512 82
+2fd9a 4 89 46
+2fd9e 4 1512 82
+2fda2 6 89 46
+2fda8 6 302 82
+2fdae 12 89 46
+2fdc0 6 89 46
+2fdc6 8 89 46
+2fdce 6 85 79
+2fdd4 6 89 46
+2fdda 6 256 82
+2fde0 100 90 46
+FUNC 2fee0 280 0 LinuxLibcSupportTest_uitos_Test::TestBody
+2fee0 6 106 46
+2fee6 4 109 46
+2feea 4 106 46
+2feee 4 110 46
+2fef2 2 106 46
+2fef4 2 106 46
+2fef6 4 109 46
+2fefa 2 106 46
+2fefc e 109 46
+2ff0a 4 1552 82
+2ff0e 4 110 46
+2ff12 2 1552 82
+2ff14 2 110 46
+2ff16 8 1552 82
+2ff1e 2 110 46
+2ff20 a 1552 82
+2ff2a 4 110 46
+2ff2e 4 1552 82
+2ff32 a 110 46
+2ff3c 6 302 82
+2ff42 e 110 46
+2ff50 6 256 82
+2ff56 e 112 46
+2ff64 4 113 46
+2ff68 2 1552 82
+2ff6a 4 113 46
+2ff6e a 1552 82
+2ff78 4 113 46
+2ff7c 4 1552 82
+2ff80 6 113 46
+2ff86 6 302 82
+2ff8c e 113 46
+2ff9a 4 115 46
+2ff9e 6 256 82
+2ffa4 e 115 46
+2ffb2 10 116 46
+2ffc2 2 1552 82
+2ffc4 2 116 46
+2ffc6 e 1552 82
+2ffd4 6 116 46
+2ffda 6 302 82
+2ffe0 e 116 46
+2ffee 6 256 82
+2fff4 e 118 46
+30002 10 119 46
+30012 2 1552 82
+30014 2 119 46
+30016 e 1552 82
+30024 6 119 46
+3002a 6 302 82
+30030 e 119 46
+3003e 6 256 82
+30044 e 121 46
+30052 10 122 46
+30062 2 1552 82
+30064 2 122 46
+30066 e 1552 82
+30074 6 122 46
+3007a 6 302 82
+30080 e 122 46
+3008e 6 256 82
+30094 12 125 46
+300a6 10 126 46
+300b6 2 1552 82
+300b8 2 126 46
+300ba e 1552 82
+300c8 6 126 46
+300ce 6 302 82
+300d4 10 126 46
+300e4 6 126 46
+300ea 8 126 46
+300f2 6 85 79
+300f8 6 126 46
+300fe 6 256 82
+30104 5c 127 46
+FUNC 30160 7c 0 testing::internal::CmpHelperEQ<char const*, char const*>
+30160 8 1476 82
+30168 a 1476 82
+30172 2 1481 82
+30174 2 1476 82
+30176 2 1481 82
+30178 2 1476 82
+3017a 2 1481 82
+3017c 4 1476 82
+30180 2 1481 82
+30182 6 1482 82
+30188 1c 1408 82
+301a4 12 1471 82
+301b6 c 156 137
+301c2 1a 1488 82
+FUNC 301dc 338 0 LinuxLibcSupportTest_strrchr_Test::TestBody
+301dc 8 143 46
+301e4 4 144 46
+301e8 6 143 46
+301ee 2 144 46
+301f0 6 143 46
+301f6 4 144 46
+301fa 2 143 46
+301fc 4 144 46
+30200 26 1571 82
+30226 a 144 46
+30230 6 302 82
+30236 e 144 46
+30244 6 256 82
+3024a a 145 46
+30254 18 1571 82
+3026c 6 145 46
+30272 6 302 82
+30278 e 145 46
+30286 6 256 82
+3028c a 146 46
+30296 16 1571 82
+302ac 8 146 46
+302b4 6 302 82
+302ba e 146 46
+302c8 6 256 82
+302ce a 148 46
+302d8 6 277 82
+302de 4 1139 87
+302e2 4 277 82
+302e6 2 148 46
+302e8 1a 148 46
+30302 10 148 46
+30312 6 256 82
+30318 8 149 46
+30320 6 277 82
+30326 4 1139 87
+3032a 4 277 82
+3032e 2 149 46
+30330 1a 149 46
+3034a 10 149 46
+3035a 6 256 82
+30360 a 150 46
+3036a 6 277 82
+30370 4 1139 87
+30374 4 277 82
+30378 2 150 46
+3037a 1a 150 46
+30394 10 150 46
+303a4 6 256 82
+303aa a 151 46
+303b4 6 277 82
+303ba 4 1139 87
+303be 4 277 82
+303c2 2 151 46
+303c4 1a 151 46
+303de 12 151 46
+303f0 6 151 46
+303f6 8 151 46
+303fe 6 85 79
+30404 6 151 46
+3040a 8 156 137
+30412 6 256 82
+30418 e 154 46
+30426 4 1512 82
+3042a 2 154 46
+3042c e 1512 82
+3043a 6 154 46
+30440 6 302 82
+30446 10 154 46
+30456 6 154 46
+3045c 8 154 46
+30464 6 85 79
+3046a 6 154 46
+30470 6 256 82
+30476 9e 155 46
+FUNC 30514 380 0 LinuxLibcSupportTest_strchr_Test::TestBody
+30514 8 129 46
+3051c 4 130 46
+30520 6 129 46
+30526 2 130 46
+30528 6 129 46
+3052e 4 130 46
+30532 2 129 46
+30534 4 130 46
+30538 22 1571 82
+3055a c 130 46
+30566 6 302 82
+3056c e 130 46
+3057a 6 256 82
+30580 a 131 46
+3058a 16 1571 82
+305a0 6 131 46
+305a6 6 302 82
+305ac 10 131 46
+305bc 6 131 46
+305c2 8 131 46
+305ca 6 85 79
+305d0 4 131 46
+305d4 6 256 82
+305da a 132 46
+305e4 16 1571 82
+305fa 6 132 46
+30600 6 302 82
+30606 10 132 46
+30616 6 256 82
+3061c a 134 46
+30626 6 277 82
+3062c 2 1139 87
+3062e 4 277 82
+30632 2 134 46
+30634 18 134 46
+3064c 12 134 46
+3065e 6 256 82
+30664 8 135 46
+3066c 6 277 82
+30672 2 1139 87
+30674 4 277 82
+30678 2 135 46
+3067a 18 135 46
+30692 12 135 46
+306a4 6 256 82
+306aa a 136 46
+306b4 6 277 82
+306ba 2 1139 87
+306bc 4 277 82
+306c0 2 136 46
+306c2 18 136 46
+306da 12 136 46
+306ec 6 256 82
+306f2 a 137 46
+306fc 6 277 82
+30702 2 1139 87
+30704 4 277 82
+30708 2 137 46
+3070a 18 137 46
+30722 14 137 46
+30736 6 137 46
+3073c 8 137 46
+30744 6 85 79
+3074a 6 137 46
+30750 8 156 137
+30758 2 256 82
+3075a 2 140 46
+3075c 4 256 82
+30760 a 140 46
+3076a 2 1481 82
+3076c 2 140 46
+3076e 2 1481 82
+30770 8 1482 82
+30778 1c 1408 82
+30794 16 1471 82
+307aa c 156 137
+307b6 8 140 46
+307be 6 302 82
+307c4 12 140 46
+307d6 6 140 46
+307dc 8 140 46
+307e4 6 85 79
+307ea 6 140 46
+307f0 6 256 82
+307f6 9e 141 46
+FUNC 30894 64 0 testing::internal::CmpHelperEQFailure<void*, void*>
+30894 8 1464 82
+3089c 4 1464 82
+308a0 2 1382 82
+308a2 a 1464 82
+308ac 2 1382 82
+308ae 2 1464 82
+308b0 4 1382 82
+308b4 2 1464 82
+308b6 c 1382 82
+308c2 12 1471 82
+308d4 c 156 137
+308e0 18 1472 82
+FUNC 308f8 74 0 testing::internal::CmpHelperEQ<char [10], void*>
+308f8 8 1476 82
+30900 10 1476 82
+30910 4 1481 82
+30914 2 1476 82
+30916 4 1481 82
+3091a 6 1482 82
+30920 2 1408 82
+30922 2 1382 82
+30924 a 1408 82
+3092e 8 1382 82
+30936 12 1471 82
+30948 c 156 137
+30954 18 1488 82
+FUNC 3096c 78 0 testing::internal::CmpHelperEQ<char const*, void*>
+3096c 8 1476 82
+30974 c 1476 82
+30980 2 1481 82
+30982 2 1476 82
+30984 4 1481 82
+30988 2 1476 82
+3098a 2 1481 82
+3098c 2 1476 82
+3098e 2 1481 82
+30990 6 1482 82
+30996 2 1408 82
+30998 2 1382 82
+3099a a 1408 82
+309a4 8 1382 82
+309ac 12 1471 82
+309be c 156 137
+309ca 1a 1488 82
+FUNC 309e4 290 0 LinuxLibcSupportTest_memchr_Test::TestBody
+309e4 4 157 46
+309e8 2 158 46
+309ea 2 157 46
+309ec a 158 46
+309f6 a 1571 82
+30a00 2 1481 82
+30a02 8 1482 82
+30a0a 14 1487 82
+30a1e 8 158 46
+30a26 6 302 82
+30a2c 10 158 46
+30a3c 6 256 82
+30a42 c 159 46
+30a4e 6 1571 82
+30a54 2 1481 82
+30a56 8 1482 82
+30a5e 14 1487 82
+30a72 6 159 46
+30a78 6 302 82
+30a7e 10 159 46
+30a8e 6 256 82
+30a94 c 160 46
+30aa0 6 1571 82
+30aa6 2 1481 82
+30aa8 8 1482 82
+30ab0 14 1487 82
+30ac4 8 160 46
+30acc 6 302 82
+30ad2 e 160 46
+30ae0 4 163 46
+30ae4 2 256 82
+30ae6 2 163 46
+30ae8 4 256 82
+30aec a 163 46
+30af6 8 1512 82
+30afe 2 163 46
+30b00 e 1512 82
+30b0e 6 163 46
+30b14 6 302 82
+30b1a e 163 46
+30b28 6 256 82
+30b2e a 164 46
+30b38 2 1512 82
+30b3a 2 164 46
+30b3c e 1512 82
+30b4a 6 164 46
+30b50 6 302 82
+30b56 e 164 46
+30b64 6 256 82
+30b6a 10 165 46
+30b7a 4 1512 82
+30b7e 2 165 46
+30b80 e 1512 82
+30b8e 6 165 46
+30b94 6 302 82
+30b9a e 165 46
+30ba8 6 256 82
+30bae 10 166 46
+30bbe 4 1512 82
+30bc2 2 166 46
+30bc4 e 1512 82
+30bd2 6 166 46
+30bd8 6 302 82
+30bde 10 166 46
+30bee 6 166 46
+30bf4 8 166 46
+30bfc 6 85 79
+30c02 6 166 46
+30c08 6 256 82
+30c0e 66 167 46
+FUNC 30c74 48 0 testing::PrintToString<char>
+30c74 e 883 80
+30c82 2 883 80
+30c84 6 884 80
+30c8a 2 883 80
+30c8c 4 884 80
+30c90 8 394 80
+30c98 8 75 132
+30ca0 6 886 80
+30ca6 16 887 80
+FUNC 30cbc 74 0 testing::internal::CmpHelperEQ<char, int>
+30cbc 8 1476 82
+30cc4 10 1476 82
+30cd4 6 1481 82
+30cda 2 1476 82
+30cdc 4 1481 82
+30ce0 6 1482 82
+30ce6 14 1382 82
+30cfa 12 1471 82
+30d0c c 156 137
+30d18 18 1488 82
+FUNC 30d30 30c 0 LinuxLibcSupportTest_read_hex_ptr_Test::TestBody
+30d30 4 169 46
+30d34 2 173 46
+30d36 2 169 46
+30d38 a 173 46
+30d42 2 174 46
+30d44 10 1512 82
+30d54 2 174 46
+30d56 2 173 46
+30d58 e 1512 82
+30d66 8 174 46
+30d6e 6 302 82
+30d74 10 174 46
+30d84 6 256 82
+30d8a 2 175 46
+30d8c 4 1512 82
+30d90 2 175 46
+30d92 16 1512 82
+30da8 6 175 46
+30dae 6 302 82
+30db4 10 175 46
+30dc4 6 256 82
+30dca 8 177 46
+30dd2 2 178 46
+30dd4 2 177 46
+30dd6 2 178 46
+30dd8 e 1512 82
+30de6 6 178 46
+30dec 6 302 82
+30df2 10 178 46
+30e02 6 256 82
+30e08 2 179 46
+30e0a 2 1512 82
+30e0c 2 179 46
+30e0e c 1512 82
+30e1a 6 179 46
+30e20 6 302 82
+30e26 10 179 46
+30e36 6 256 82
+30e3c a 181 46
+30e46 4 182 46
+30e4a 2 1512 82
+30e4c 2 182 46
+30e4e 2 181 46
+30e50 e 1512 82
+30e5e 6 182 46
+30e64 6 302 82
+30e6a 10 182 46
+30e7a 6 256 82
+30e80 2 183 46
+30e82 2 1512 82
+30e84 2 183 46
+30e86 c 1512 82
+30e92 6 183 46
+30e98 6 302 82
+30e9e 10 183 46
+30eae 6 256 82
+30eb4 a 185 46
+30ebe 4 186 46
+30ec2 4 1512 82
+30ec6 2 186 46
+30ec8 4 1512 82
+30ecc 2 185 46
+30ece c 1512 82
+30eda 6 186 46
+30ee0 6 302 82
+30ee6 10 186 46
+30ef6 6 256 82
+30efc 2 187 46
+30efe 2 1512 82
+30f00 2 187 46
+30f02 c 1512 82
+30f0e 6 187 46
+30f14 6 302 82
+30f1a 10 187 46
+30f2a 6 256 82
+30f30 a 189 46
+30f3a 4 190 46
+30f3e 2 189 46
+30f40 2 190 46
+30f42 e 1512 82
+30f50 6 190 46
+30f56 6 302 82
+30f5c 12 190 46
+30f6e 6 190 46
+30f74 8 190 46
+30f7c 6 85 79
+30f82 4 190 46
+30f86 6 256 82
+30f8c 2 191 46
+30f8e 2 1512 82
+30f90 4 191 46
+30f94 e 1512 82
+30fa2 6 191 46
+30fa8 6 302 82
+30fae a 191 46
+30fb8 2 191 46
+30fba 8 191 46
+30fc2 6 191 46
+30fc8 8 191 46
+30fd0 6 85 79
+30fd6 6 191 46
+30fdc 6 256 82
+30fe2 5a 192 46
+FUNC 3103c 26c 0 LinuxLibcSupportTest_read_decimal_ptr_Test::TestBody
+3103c 4 194 46
+31040 4 198 46
+31044 2 194 46
+31046 c 198 46
+31052 2 199 46
+31054 c 1512 82
+31060 2 199 46
+31062 2 198 46
+31064 e 1512 82
+31072 8 199 46
+3107a 6 302 82
+31080 10 199 46
+31090 6 256 82
+31096 2 200 46
+31098 4 1512 82
+3109c 2 200 46
+3109e 10 1512 82
+310ae 6 200 46
+310b4 6 302 82
+310ba 10 200 46
+310ca 6 256 82
+310d0 a 202 46
+310da 2 203 46
+310dc 2 1512 82
+310de 2 203 46
+310e0 2 202 46
+310e2 e 1512 82
+310f0 6 203 46
+310f6 6 302 82
+310fc 10 203 46
+3110c 6 256 82
+31112 2 204 46
+31114 2 1512 82
+31116 2 204 46
+31118 c 1512 82
+31124 6 204 46
+3112a 6 302 82
+31130 10 204 46
+31140 6 256 82
+31146 a 206 46
+31150 4 207 46
+31154 4 1512 82
+31158 2 206 46
+3115a 2 1512 82
+3115c 2 207 46
+3115e e 1512 82
+3116c 6 207 46
+31172 6 302 82
+31178 10 207 46
+31188 6 256 82
+3118e 2 208 46
+31190 2 1512 82
+31192 2 208 46
+31194 c 1512 82
+311a0 6 208 46
+311a6 6 302 82
+311ac 10 208 46
+311bc 6 256 82
+311c2 a 210 46
+311cc 4 211 46
+311d0 2 210 46
+311d2 2 211 46
+311d4 e 1512 82
+311e2 6 211 46
+311e8 6 302 82
+311ee 10 211 46
+311fe 6 256 82
+31204 2 212 46
+31206 2 1512 82
+31208 4 212 46
+3120c e 1512 82
+3121a 6 212 46
+31220 6 302 82
+31226 12 212 46
+31238 6 212 46
+3123e 8 212 46
+31246 6 85 79
+3124c 6 212 46
+31252 6 256 82
+31258 50 213 46
+FUNC 312a8 2e 0 google_breakpad::test_assembler::Section::Mark
+312a8 2 439 62
+312aa 4 439 62
+312ae 4 400 136
+312b2 10 436 62
+312c2 8 439 62
+312ca 6 439 62
+312d0 6 439 62
+FUNC 312d6 3e 0 google_breakpad::synth_elf::ELF::AppendSection
+312d6 2 121 50
+312d8 2 124 50
+312da 6 121 50
+312e0 2 124 50
+312e2 6 125 50
+312e8 4 126 50
+312ec 6 127 50
+312f2 4 133 50
+312f6 4 127 50
+312fa 4 129 50
+312fe 8 130 50
+31306 2 131 50
+31308 4 133 50
+3130c 8 131 50
+FUNC 31314 d6 0 google_breakpad::synth_elf::ELF::AddSegment
+31314 4 135 50
+31318 4 135 50
+3131c 2 140 50
+3131e 4 143 50
+31322 4 140 50
+31326 2 135 50
+31328 8 143 50
+31330 6 145 50
+31336 a 147 50
+31340 6 151 50
+31346 2 150 50
+31348 2 153 50
+3134a 8 153 50
+31352 2 202 144
+31354 2 154 50
+31356 2 155 50
+31358 4 153 50
+3135c 2 155 50
+3135e 8 158 50
+31366 2 159 50
+31368 6 163 50
+3136e 4 170 50
+31372 2 202 144
+31374 c 168 50
+31380 4 170 50
+31384 2 170 50
+31386 4 170 50
+3138a 2 170 50
+3138c 4 170 50
+31390 4 170 50
+31394 4 172 50
+31398 2 172 50
+3139a 4 172 50
+3139e 2 172 50
+313a0 4 172 50
+313a4 4 172 50
+313a8 4 174 50
+313ac 8 174 50
+313b4 4 174 50
+313b8 4 176 50
+313bc 8 176 50
+313c4 6 178 50
+313ca 8 180 50
+313d2 12 184 50
+313e4 6 185 50
+FUNC 313ec 24 0 google_breakpad::synth_elf::ELF::ElfSection::~ElfSection
+313ec 4 141 51
+313f0 10 141 51
+31400 6 141 51
+31406 a 141 51
+FUNC 31410 12 0 google_breakpad::synth_elf::ELF::ElfSection::~ElfSection
+31410 2 141 51
+31412 6 141 51
+31418 6 141 51
+3141e 4 141 51
+FUNC 31424 1c 0 google_breakpad::synth_elf::SymbolTable::~SymbolTable
+31424 4 161 51
+31428 18 161 51
+FUNC 31440 12 0 google_breakpad::synth_elf::SymbolTable::~SymbolTable
+31440 2 161 51
+31442 6 161 51
+31448 6 161 51
+3144e 4 161 51
+FUNC 31452 70 0 google_breakpad::synth_elf::Notes::AddNote
+31452 4 244 50
+31456 8 244 50
+3145e a 247 50
+31468 2 244 50
+3146a 4 247 50
+3146e 4 400 136
+31472 2 528 136
+31474 2 400 136
+31476 4 248 50
+3147a 4 292 62
+3147e 4 528 136
+31482 2 249 50
+31484 4 250 50
+31488 4 528 136
+3148c a 517 136
+31496 8 453 136
+3149e a 255 50
+314a8 a 528 136
+314b2 a 257 50
+314bc 6 258 50
+FUNC 314c4 a8 0 std::priv::_Impl_vector<google_breakpad::test_assembler::Section::Reference, std::allocator<google_breakpad::test_assembler::Section::Reference> >::_Impl_vector
+314c4 4 246 144
+314c8 2 246 144
+314ca 4 192 144
+314ce 2 70 144
+314d0 4 192 144
+314d4 4 342 106
+314d8 2 246 144
+314da 4 70 144
+314de 2 481 106
+314e0 2 342 106
+314e2 8 343 106
+314ea 4 343 106
+314ee 2 346 106
+314f0 6 347 106
+314f6 4 348 106
+314fa 2 352 106
+314fc 2 348 106
+314fe 4 352 106
+31502 2 356 106
+31504 4 73 144
+31508 2 71 144
+3150a 2 72 144
+3150c 4 73 144
+31510 10 86 142
+31520 4 86 142
+31524 6 139 108
+3152a 20 449 62
+3154a a 86 142
+31554 a 250 144
+3155e 2 249 144
+31560 c 250 144
+FUNC 3156c 34 0 std::priv::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, google_breakpad::test_assembler::Label>, std::priv::_Select1st<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, google_breakpad::test_assembler::Label> >, std::priv::_MapTraitsT<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, google_breakpad::test_assembler::Label> >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, google_breakpad::test_assembler::Label> > >::_M_create_node
+3156c 2 315 141
+3156e 2 306 106
+31570 2 315 141
+31572 6 306 106
+31578 6 307 106
+3157e 4 119 108
+31582 6 68 129
+31588 c 68 129
+31594 2 321 141
+31596 2 324 141
+31598 2 321 141
+3159a 2 322 141
+3159c 4 324 141
+FUNC 315a0 24 0 google_breakpad::synth_elf::SymbolTable::SymbolTable
+315a0 2 213 50
+315a2 6 213 50
+315a8 12 217 50
+315ba a 219 50
+FUNC 315c4 68 0 google_breakpad::synth_elf::ELF::ElfSection::ElfSection
+315c4 4 141 51
+315c8 2 141 51
+315ca 4 270 62
+315ce 2 141 51
+315d0 12 270 62
+315e2 c 124 148
+315ee e 270 62
+315fc 4 141 51
+31600 a 141 51
+3160a 4 141 51
+3160e a 141 51
+31618 4 141 51
+3161c 10 141 51
+FUNC 3162c 170 0 std::priv::_Impl_vector<google_breakpad::synth_elf::ELF::ElfSection, std::allocator<google_breakpad::synth_elf::ELF::ElfSection> >::_M_insert_overflow_aux
+3162c 6 81 143
+31632 4 81 143
+31636 c 192 144
+31642 4 173 144
+31646 2 81 143
+31648 8 173 144
+31650 8 41 143
+31658 a 175 144
+31662 4 176 144
+31666 6 176 144
+3166c 2 176 144
+3166e a 347 106
+31678 6 348 106
+3167e 8 352 106
+31686 4 91 143
+3168a 2 84 142
+3168c e 86 142
+3169a 4 86 142
+3169e 6 139 108
+316a4 8 139 108
+316ac 4 88 142
+316b0 4 89 142
+316b4 e 86 142
+316c2 a 93 143
+316cc 2 119 108
+316ce 8 119 108
+316d6 6 95 143
+316dc a 314 142
+316e6 8 249 142
+316ee 6 249 142
+316f4 2 139 108
+316f6 8 139 108
+316fe 8 249 142
+31706 6 98 143
+3170c 2 86 142
+3170e 2 84 142
+31710 c 86 142
+3171c 6 86 142
+31722 6 139 108
+31728 8 139 108
+31730 4 88 142
+31734 4 89 142
+31738 10 86 142
+31748 8 65 118
+31750 2 74 118
+31752 4 191 108
+31756 4 77 118
+3175a a 57 108
+31764 4 81 118
+31768 6 662 144
+3176e 2 319 106
+31770 4 323 106
+31774 6 104 143
+3177a 4 667 144
+3177e 2 668 144
+31780 6 105 143
+31786 6 346 106
+3178c 10 356 106
+FUNC 3179c 2e 0 std::priv::_Rb_global<bool>::_M_decrement
+3179c 4 279 140
+317a0 8 279 140
+317a8 4 280 140
+317ac 4 281 140
+317b0 8 99 141
+317b8 2 285 140
+317ba 6 286 140
+317c0 6 288 140
+317c6 4 293 140
+FUNC 317ca 6e 0 std::priv::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, google_breakpad::test_assembler::Label>, std::priv::_Select1st<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, google_breakpad::test_assembler::Label> >, std::priv::_MapTraitsT<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, google_breakpad::test_assembler::Label> >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, google_breakpad::test_assembler::Label> > >::_M_insert
+317ca 2 358 140
+317cc 2 350 140
+317ce 8 350 140
+317d6 2 358 140
+317d8 8 359 140
+317e0 2 360 140
+317e2 2 361 140
+317e4 4 362 140
+317e8 4 364 140
+317ec 4 364 140
+317f0 a 79 111
+317fa 2 364 140
+317fc 6 367 140
+31802 2 368 140
+31804 2 369 140
+31806 2 367 140
+31808 4 369 140
+3180c 4 370 140
+31810 6 373 140
+31816 2 374 140
+31818 2 375 140
+3181a 2 373 140
+3181c 4 375 140
+31820 2 376 140
+31822 2 379 140
+31824 2 378 140
+31826 6 379 140
+3182c 2 380 140
+3182e 2 382 140
+31830 4 380 140
+31834 2 142 141
+31836 2 382 140
+FUNC 31838 78 0 std::priv::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, google_breakpad::test_assembler::Label>, std::priv::_Select1st<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, google_breakpad::test_assembler::Label> >, std::priv::_MapTraitsT<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, google_breakpad::test_assembler::Label> >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, google_breakpad::test_assembler::Label> > >::insert_unique
+31838 4 405 140
+3183c 6 405 140
+31842 2 406 140
+31844 2 408 140
+31846 2 407 140
+31848 2 409 140
+3184a a 79 111
+31854 2 412 140
+31856 4 412 140
+3185a 2 412 140
+3185c 6 405 140
+31862 2 142 141
+31864 2 415 140
+31866 6 416 140
+3186c 6 417 140
+31872 8 187 141
+3187a 2 421 140
+3187c a 79 111
+31886 2 421 140
+31888 12 422 140
+3189a 4 142 141
+3189e 6 62 129
+318a4 2 142 141
+318a6 2 62 129
+318a8 8 425 140
+FUNC 318b0 174 0 std::priv::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, google_breakpad::test_assembler::Label>, std::priv::_Select1st<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, google_breakpad::test_assembler::Label> >, std::priv::_MapTraitsT<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, google_breakpad::test_assembler::Label> >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, google_breakpad::test_assembler::Label> > >::insert_unique
+318b0 6 432 140
+318b6 4 434 140
+318ba 2 432 140
+318bc 2 434 140
+318be 4 432 140
+318c2 2 434 140
+318c4 4 437 140
+318c8 4 438 140
+318cc 4 143 111
+318d0 8 79 111
+318d8 4 440 140
+318dc 8 79 111
+318e4 4 447 140
+318e8 c 297 140
+318f4 a 94 141
+318fe 4 301 140
+31902 6 302 140
+31908 6 304 140
+3190e a 309 140
+31918 4 458 140
+3191c c 462 140
+31928 a 309 140
+31932 6 513 140
+31938 a 475 140
+31942 6 142 141
+31948 4 479 140
+3194c 2 480 140
+3194e a 79 111
+31958 2 480 140
+3195a e 483 140
+31968 6 486 140
+3196e 6 187 141
+31974 4 143 111
+31978 2 187 141
+3197a 8 79 111
+31982 4 494 140
+31986 a 79 111
+31990 4 494 140
+31994 8 500 140
+3199c 8 79 111
+319a4 2 517 140
+319a6 4 517 140
+319aa a 79 111
+319b4 4 517 140
+319b8 6 521 140
+319be e 522 140
+319cc 8 497 140
+319d4 4 498 140
+319d8 e 524 140
+319e6 4 142 141
+319ea c 297 140
+319f6 c 94 141
+31a02 4 301 140
+31a06 6 302 140
+31a0c 6 304 140
+31a12 a 524 140
+31a1c 8 534 140
+FUNC 31a24 ac 0 std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, google_breakpad::test_assembler::Label, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, google_breakpad::test_assembler::Label> > >::operator[]<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >
+31a24 e 175 123
+31a32 4 568 141
+31a36 6 175 123
+31a3c 2 175 123
+31a3e 2 571 141
+31a40 a 79 111
+31a4a 2 572 141
+31a4c 4 573 141
+31a50 a 575 141
+31a5a 2 178 123
+31a5c 2 142 141
+31a5e 2 178 123
+31a60 a 79 111
+31a6a 2 178 123
+31a6c 12 181 123
+31a7e 2 179 123
+31a80 4 62 129
+31a84 6 179 123
+31a8a 4 62 129
+31a8e 4 62 129
+31a92 4 62 129
+31a96 8 62 129
+31a9e 8 191 123
+31aa6 2 142 141
+31aa8 4 191 123
+31aac 2 179 123
+31aae 2 51 129
+31ab0 2 179 123
+31ab2 4 51 129
+31ab6 6 156 137
+31abc 8 179 123
+31ac4 c 181 123
+FUNC 31ad0 a4 0 google_breakpad::synth_elf::StringTable::Add
+31ad0 4 75 51
+31ad4 4 549 141
+31ad8 6 75 51
+31ade 4 549 141
+31ae2 2 552 141
+31ae4 a 79 111
+31aee 2 553 141
+31af0 4 554 141
+31af4 a 556 141
+31afe 4 558 141
+31b02 a 79 111
+31b0c 6 559 141
+31b12 4 76 51
+31b16 a 77 51
+31b20 6 77 51
+31b26 2 77 51
+31b28 4 400 136
+31b2c c 436 62
+31b38 2 296 62
+31b3a 4 436 62
+31b3e a 517 136
+31b48 8 453 136
+31b50 8 81 51
+31b58 6 81 51
+31b5e 8 82 51
+31b66 6 82 51
+31b6c 8 83 51
+FUNC 31b74 58 0 google_breakpad::synth_elf::SymbolTable::AddSymbol
+31b74 2 222 50
+31b76 8 222 50
+31b7e c 224 50
+31b8a 8 224 50
+31b92 6 224 50
+31b98 8 225 50
+31ba0 4 357 62
+31ba4 8 226 50
+31bac 12 453 136
+31bbe a 229 50
+31bc8 4 230 50
+FUNC 31bcc 5c 0 google_breakpad::synth_elf::SymbolTable::AddSymbol
+31bcc 2 233 50
+31bce 8 233 50
+31bd6 c 235 50
+31be2 8 235 50
+31bea 2 235 50
+31bec 4 357 62
+31bf0 4 235 50
+31bf4 12 453 136
+31c06 a 238 50
+31c10 a 239 50
+31c1a a 240 50
+31c24 4 241 50
+FUNC 31c28 18c 0 google_breakpad::synth_elf::ELF::AddSection
+31c28 12 86 50
+31c3a 4 86 50
+31c3e 2 87 50
+31c40 4 86 50
+31c44 2 87 50
+31c46 a 86 50
+31c50 4 87 50
+31c54 2 88 50
+31c56 4 100 50
+31c5a e 88 50
+31c68 4 400 136
+31c6c 2 96 50
+31c6e 4 400 136
+31c72 2 91 50
+31c74 4 96 50
+31c78 2 91 50
+31c7a 4 92 50
+31c7e 4 96 50
+31c82 6 98 50
+31c88 2 100 50
+31c8a 2 100 50
+31c8c 4 100 50
+31c90 6 100 50
+31c96 e 102 50
+31ca4 a 104 50
+31cae 2 106 50
+31cb0 2 106 50
+31cb2 4 106 50
+31cb6 6 106 50
+31cbc 6 108 50
+31cc2 6 110 50
+31cc8 10 112 50
+31cd8 a 114 50
+31ce2 4 117 50
+31ce6 6 114 50
+31cec a 117 50
+31cf6 16 270 62
+31d0c a 124 148
+31d16 c 270 62
+31d22 2 145 51
+31d24 8 145 51
+31d2c 2 117 50
+31d2e 2 145 51
+31d30 4 117 50
+31d34 4 145 51
+31d38 2 117 50
+31d3a 4 145 51
+31d3e 2 145 51
+31d40 4 380 144
+31d44 2 145 51
+31d46 4 380 144
+31d4a 4 270 62
+31d4e 4 380 144
+31d52 2 119 108
+31d54 8 119 108
+31d5c c 382 144
+31d68 12 162 144
+31d7a 6 117 50
+31d80 6 117 50
+31d86 6 88 50
+31d8c 6 118 50
+31d92 22 119 50
+FUNC 31db4 dc 0 google_breakpad::synth_elf::ELF::Finish
+31db4 6 187 50
+31dba 2 189 50
+31dbc 8 187 50
+31dc4 4 187 50
+31dc8 8 189 50
+31dd0 e 191 50
+31dde 28 191 50
+31e06 6 156 137
+31e0c a 194 50
+31e16 6 195 50
+31e1c c 196 50
+31e28 e 198 50
+31e36 8 201 50
+31e3e 8 203 50
+31e46 4 201 50
+31e4a c 205 50
+31e56 c 206 50
+31e62 a 209 50
+31e6c a 210 50
+31e76 1a 211 50
+FUNC 31e90 30c 0 google_breakpad::synth_elf::ELF::ELF
+31e90 e 14 50
+31e9e 4 14 50
+31ea2 2 23 50
+31ea4 6 14 50
+31eaa 6 23 50
+31eb0 4 23 50
+31eb4 a 23 50
+31ebe 8 23 50
+31ec6 8 23 50
+31ece 2 23 50
+31ed0 2 23 50
+31ed2 4 23 50
+31ed6 4 23 50
+31eda 2 23 50
+31edc 4 23 50
+31ee0 4 23 50
+31ee4 a 23 50
+31eee 4 23 50
+31ef2 2 23 50
+31ef4 2 23 50
+31ef6 4 23 50
+31efa 4 23 50
+31efe 2 23 50
+31f00 4 23 50
+31f04 4 23 50
+31f08 a 23 50
+31f12 4 23 50
+31f16 2 23 50
+31f18 6 23 50
+31f1e 4 23 50
+31f22 18 67 51
+31f3a 2 250 141
+31f3c 6 67 51
+31f42 10 250 141
+31f52 8 481 106
+31f5a 2 432 62
+31f5c 4 481 106
+31f60 4 266 141
+31f64 4 267 141
+31f68 4 432 62
+31f6c 4 263 141
+31f70 4 265 141
+31f74 4 391 141
+31f78 6 432 62
+31f7e a 68 51
+31f88 6 68 51
+31f8e 10 69 51
+31f9e a 69 51
+31fa8 8 69 51
+31fb0 6 69 51
+31fb6 6 156 137
+31fbc 4 432 62
+31fc0 8 67 144
+31fc8 4 481 106
+31fcc 6 432 62
+31fd2 a 30 50
+31fdc 4 357 62
+31fe0 6 30 50
+31fe6 28 453 136
+3200e 2 41 50
+32010 24 453 136
+32034 4 182 135
+32038 6 400 136
+3203e 6 182 135
+32044 8 600 135
+3204c 2 74 137
+3204e 4 74 137
+32052 6 74 137
+32058 2 74 137
+3205a 4 184 135
+3205e a 185 135
+32068 6 185 135
+3206e 2 186 135
+32070 c 249 142
+3207c 8 249 142
+32084 6 146 108
+3208a 8 59 50
+32092 2 187 135
+32094 2 53 50
+32096 4 101 108
+3209a 2 53 50
+3209c 2 232 145
+3209e 6 189 135
+320a4 4 53 50
+320a8 8 55 50
+320b0 8 57 50
+320b8 e 59 50
+320c6 c 61 50
+320d2 c 63 50
+320de 8 65 50
+320e6 2 67 50
+320e8 2 67 50
+320ea 2 67 50
+320ec a 67 50
+320f6 2 69 50
+320f8 2 69 50
+320fa 2 69 50
+320fc a 69 50
+32106 8 71 50
+3210e 2 73 50
+32110 2 73 50
+32112 2 73 50
+32114 a 73 50
+3211e 8 75 50
+32126 8 77 50
+3212e 8 80 50
+32136 e 81 50
+32144 1c 81 50
+32160 6 156 137
+32166 6 81 50
+3216c 30 82 50
+FUNC 3219c 40 0 pthread_barrier_wait
+3219c 2 62 36
+3219e 2 62 36
+321a0 4 64 36
+321a4 a 67 36
+321ae 6 69 36
+321b4 6 70 36
+321ba 4 71 36
+321be 8 76 36
+321c6 6 75 36
+321cc 6 79 36
+321d2 2 80 36
+321d4 8 81 36
+FUNC 321dc 3c 0 thread_function
+321dc 2 81 53
+321de 2 81 53
+321e0 6 70 53
+321e6 2 83 53
+321e8 6 84 53
+321ee 6 85 53
+321f4 2 86 53
+321f6 6 86 53
+321fc 8 87 53
+32204 6 88 53
+3220a e 93 36
+FUNC 32218 5c 0 google_breakpad::CrashGenerator::HasDefaultCorePattern
+32218 6 108 53
+3221e 6 108 53
+32224 2 111 53
+32226 2 108 53
+32228 2 110 53
+3222a 8 111 53
+32232 2 110 53
+32234 4 111 53
+32238 2 112 53
+3223a 6 111 53
+32240 14 112 53
+32254 2 112 53
+32256 1e 113 53
+FUNC 32274 8 0 google_breakpad::CrashGenerator::GetThreadId
+32274 2 124 53
+32276 6 125 53
+FUNC 3227c 8 0 google_breakpad::CrashGenerator::GetThreadIdPointer
+3227c 2 128 53
+3227e 6 129 53
+FUNC 32284 2c 0 google_breakpad::CrashGenerator::UnmapSharedMemory
+32284 2 148 53
+32286 2 148 53
+32288 4 149 53
+3228c 8 152 53
+32294 2 153 53
+32296 4 154 53
+3229a 8 158 53
+322a2 4 159 53
+322a6 2 150 53
+322a8 8 160 53
+FUNC 322b0 54 0 google_breakpad::CrashGenerator::MapSharedMemory
+322b0 4 131 53
+322b4 4 131 53
+322b8 8 132 53
+322c0 16 136 53
+322d6 4 137 53
+322da 2 136 53
+322dc 2 137 53
+322de 2 138 53
+322e0 2 139 53
+322e2 8 138 53
+322ea 8 142 53
+322f2 4 143 53
+322f6 2 144 53
+322f8 c 146 53
+FUNC 32304 2c 0 google_breakpad::CrashGenerator::SetCoreFileSizeLimit
+32304 2 162 53
+32306 2 164 53
+32308 4 163 53
+3230c a 164 53
+32316 8 165 53
+3231e 4 166 53
+32322 2 168 53
+32324 c 169 53
+FUNC 32330 b4 0 google_breakpad::CrashGenerator::CopyProcFiles
+32330 a 256 53
+3233a 2 258 53
+3233c 6 256 53
+32342 6 256 53
+32348 2 260 53
+3234a 2 256 53
+3234c 4 260 53
+32350 4 256 53
+32354 4 265 53
+32358 2 256 53
+3235a 2 260 53
+3235c 2 256 53
+3235e 4 260 53
+32362 2 265 53
+32364 18 260 53
+3237c 6 261 53
+32382 4 262 53
+32386 16 265 53
+3239c 6 266 53
+323a2 c 269 53
+323ae 2 258 53
+323b0 4 258 53
+323b4 30 273 53
+FUNC 323e4 114 0 google_breakpad::CrashGenerator::CreateThreadsInChildProcess
+323e4 8 275 53
+323ec 2 128 53
+323ee 2 275 53
+323f0 4 276 53
+323f4 4 275 53
+323f8 2 278 53
+323fa 2 275 53
+323fc 2 276 53
+323fe 2 278 53
+32400 4 283 53
+32404 4 283 53
+32408 4 283 53
+3240c 2 283 53
+3240e 4 283 53
+32412 4 288 53
+32416 2 283 53
+32418 8 288 53
+32420 8 290 53
+32428 4 288 53
+3242c a 291 53
+32436 6 313 53
+3243c 6 314 53
+32442 2 58 36
+32444 6 57 36
+3244a 2 56 36
+3244c 4 57 36
+32450 c 58 36
+3245c a 305 53
+32466 2 302 53
+32468 4 128 53
+3246c 2 305 53
+3246e 4 128 53
+32472 2 303 53
+32474 a 305 53
+3247e 2 304 53
+32480 14 306 53
+32494 2 301 53
+32496 8 301 53
+3249e 6 311 53
+324a4 2 312 53
+324a6 6 312 53
+324ac c 313 53
+324b8 2 84 36
+324ba 2 85 36
+324bc 2 84 36
+324be 4 85 36
+324c2 6 86 36
+324c8 6 318 53
+324ce 6 319 53
+324d4 24 320 53
+FUNC 324f8 22 0 testing::internal::scoped_ptr<std::basic_stringstream<char, std::char_traits<char>, std::allocator<char> > >::reset
+324f8 2 1152 87
+324fa 2 1153 87
+324fc 2 1152 87
+324fe 2 1153 87
+32500 2 1152 87
+32502 2 1153 87
+32504 8 1154 87
+3250c 4 1155 87
+32510 6 1155 87
+32516 4 1157 87
+FUNC 3251a 12 0 google_breakpad::CrashGenerator::CrashGenerator
+3251a 2 99 53
+3251c 2 99 53
+3251e a 101 53
+32528 4 102 53
+FUNC 3252c 1a 0 google_breakpad::CrashGenerator::~CrashGenerator
+3252c 2 104 53
+3252e 2 104 53
+32530 4 105 53
+32534 8 61 63
+3253c 6 156 137
+32542 4 106 53
+FUNC 32548 14 0 google_breakpad::CrashGenerator::GetCoreFilePath
+32548 2 115 53
+3254a 2 115 53
+3254c 8 116 53
+32554 8 117 53
+FUNC 3255c 14 0 google_breakpad::CrashGenerator::GetDirectoryOfProcFilesCopy
+3255c 2 119 53
+3255e 2 119 53
+32560 8 120 53
+32568 8 121 53
+FUNC 32570 1c4 0 google_breakpad::CrashGenerator::CreateChildCrash
+32570 14 173 53
+32584 8 173 53
+3258c 6 174 53
+32592 4 174 53
+32596 14 176 53
+325aa a 180 53
+325b4 8 181 53
+325bc 2 182 53
+325be 4 185 53
+325c2 6 186 53
+325c8 6 187 53
+325ce 4 187 53
+325d2 6 188 53
+325d8 e 191 53
+325e6 4 192 53
+325ea 2 193 53
+325ec 4 192 53
+325f0 8 193 53
+325f8 a 194 53
+32602 4 194 53
+32606 8 195 53
+3260e 6 196 53
+32614 4 198 53
+32618 2 198 53
+3261a 2 198 53
+3261c 6 198 53
+32622 2 198 53
+32624 10 199 53
+32634 2 128 53
+32636 2 215 53
+32638 4 128 53
+3263c 2 215 53
+3263e 2 214 53
+32640 c 75 53
+3264c 4 214 53
+32650 8 215 53
+32658 6 226 53
+3265e 4 213 53
+32662 8 156 137
+3266a 6 230 53
+32670 4 233 53
+32674 6 234 53
+3267a 10 239 53
+3268a 4 239 53
+3268e 6 239 53
+32694 6 240 53
+3269a 10 243 53
+326aa 4 243 53
+326ae 4 247 53
+326b2 14 247 53
+326c6 4 248 53
+326ca 6 251 53
+326d0 4 252 53
+326d4 10 254 53
+326e4 6 240 53
+326ea 6 247 53
+326f0 44 254 53
+FUNC 32734 18 0 WastefulVectorTest_UsesPageAllocator_Test::~WastefulVectorTest_UsesPageAllocator_Test
+32734 2 91 56
+32736 16 91 56
+FUNC 3274c 12 0 WastefulVectorTest_UsesPageAllocator_Test::~WastefulVectorTest_UsesPageAllocator_Test
+3274c 2 91 56
+3274e 6 91 56
+32754 6 91 56
+3275a 4 91 56
+FUNC 32760 18 0 WastefulVectorTest_Simple_Test::~WastefulVectorTest_Simple_Test
+32760 2 76 56
+32762 16 76 56
+FUNC 32778 12 0 WastefulVectorTest_Simple_Test::~WastefulVectorTest_Simple_Test
+32778 2 76 56
+3277a 6 76 56
+32780 6 76 56
+32786 4 76 56
+FUNC 3278c 18 0 WastefulVectorTest_Setup_Test::~WastefulVectorTest_Setup_Test
+3278c 2 69 56
+3278e 16 69 56
+FUNC 327a4 12 0 WastefulVectorTest_Setup_Test::~WastefulVectorTest_Setup_Test
+327a4 2 69 56
+327a6 6 69 56
+327ac 6 69 56
+327b2 4 69 56
+FUNC 327b8 18 0 PageAllocatorTest_LargeObject_Test::~PageAllocatorTest_LargeObject_Test
+327b8 2 53 56
+327ba 16 53 56
+FUNC 327d0 12 0 PageAllocatorTest_LargeObject_Test::~PageAllocatorTest_LargeObject_Test
+327d0 2 53 56
+327d2 6 53 56
+327d8 6 53 56
+327de 4 53 56
+FUNC 327e4 18 0 PageAllocatorTest_SmallObjects_Test::~PageAllocatorTest_SmallObjects_Test
+327e4 2 43 56
+327e6 16 43 56
+FUNC 327fc 12 0 PageAllocatorTest_SmallObjects_Test::~PageAllocatorTest_SmallObjects_Test
+327fc 2 43 56
+327fe 6 43 56
+32804 6 43 56
+3280a 4 43 56
+FUNC 32810 18 0 PageAllocatorTest_Setup_Test::~PageAllocatorTest_Setup_Test
+32810 2 39 56
+32812 16 39 56
+FUNC 32828 12 0 PageAllocatorTest_Setup_Test::~PageAllocatorTest_Setup_Test
+32828 2 39 56
+3282a 6 39 56
+32830 6 39 56
+32836 4 39 56
+FUNC 3283c 20 0 testing::internal::TestFactoryImpl<WastefulVectorTest_UsesPageAllocator_Test>::CreateTest
+3283c 2 486 85
+3283e 8 486 85
+32846 6 91 56
+3284c 2 486 85
+3284e 6 91 56
+32854 8 486 85
+FUNC 3285c 20 0 testing::internal::TestFactoryImpl<WastefulVectorTest_Simple_Test>::CreateTest
+3285c 2 486 85
+3285e 8 486 85
+32866 6 76 56
+3286c 2 486 85
+3286e 6 76 56
+32874 8 486 85
+FUNC 3287c 20 0 testing::internal::TestFactoryImpl<WastefulVectorTest_Setup_Test>::CreateTest
+3287c 2 486 85
+3287e 8 486 85
+32886 6 69 56
+3288c 2 486 85
+3288e 6 69 56
+32894 8 486 85
+FUNC 3289c 20 0 testing::internal::TestFactoryImpl<PageAllocatorTest_LargeObject_Test>::CreateTest
+3289c 2 486 85
+3289e 8 486 85
+328a6 6 53 56
+328ac 2 486 85
+328ae 6 53 56
+328b4 8 486 85
+FUNC 328bc 20 0 testing::internal::TestFactoryImpl<PageAllocatorTest_SmallObjects_Test>::CreateTest
+328bc 2 486 85
+328be 8 486 85
+328c6 6 43 56
+328cc 2 486 85
+328ce 6 43 56
+328d4 8 486 85
+FUNC 328dc 20 0 testing::internal::TestFactoryImpl<PageAllocatorTest_Setup_Test>::CreateTest
+328dc 2 486 85
+328de 8 486 85
+328e6 6 39 56
+328ec 2 486 85
+328ee 6 39 56
+328f4 8 486 85
+FUNC 328fc a2 0 google_breakpad::PageAllocator::Alloc
+328fc 4 74 54
+32900 2 74 54
+32902 2 75 54
+32904 6 76 54
+3290a 6 78 54
+32910 8 78 54
+32918 2 79 54
+3291a 2 80 54
+3291c 2 81 54
+3291e 4 82 54
+32922 2 80 54
+32924 2 82 54
+32926 2 83 54
+32928 6 86 54
+3292e 10 90 54
+3293e 2 3454 97
+32940 4 122 54
+32944 1c 3454 97
+32960 4 3454 97
+32964 6 3454 97
+3296a 4 124 54
+3296e 2 134 54
+32970 4 135 54
+32974 2 96 54
+32976 2 136 54
+32978 10 96 54
+32988 2 97 54
+3298a 2 98 54
+3298c 8 98 54
+32994 2 98 54
+32996 4 100 54
+3299a 4 101 54
+FUNC 3299e 30 0 google_breakpad::PageAllocator::FreeAll
+3299e 2 141 54
+329a0 2 141 54
+329a2 2 144 54
+329a4 2 144 54
+329a6 4 146 54
+329aa 2 145 54
+329ac 14 3074 97
+329c0 4 3074 97
+329c4 4 3074 97
+329c8 4 141 54
+329cc 2 148 54
+FUNC 329d0 24 0 PageAllocatorTest_Setup_Test::TestBody
+329d0 4 39 56
+329d4 2 71 54
+329d6 4 176 102
+329da c 67 54
+329e6 4 71 54
+329ea a 41 56
+FUNC 329f4 e8 0 PageAllocatorTest_SmallObjects_Test::TestBody
+329f4 e 43 56
+32a02 4 43 56
+32a06 2 46 56
+32a08 4 176 102
+32a0c 8 67 54
+32a14 2 1139 87
+32a16 6 67 54
+32a1c e 47 56
+32a2a 8 48 56
+32a32 4 277 82
+32a36 2 1139 87
+32a38 2 48 56
+32a3a 18 48 56
+32a52 8 48 56
+32a5a 4 48 56
+32a5e c 48 56
+32a6a 6 48 56
+32a70 8 48 56
+32a78 6 85 79
+32a7e 6 48 56
+32a84 6 156 137
+32a8a e 256 82
+32a98 6 49 56
+32a9e 2 46 56
+32aa0 4 49 56
+32aa4 6 46 56
+32aaa 6 71 54
+32ab0 2c 51 56
+FUNC 32adc 13c 0 PageAllocatorTest_LargeObject_Test::TestBody
+32adc 8 53 56
+32ae4 6 53 56
+32aea 2 67 54
+32aec 4 53 56
+32af0 4 56 56
+32af4 4 176 102
+32af8 2 67 54
+32afa 6 56 56
+32b00 8 67 54
+32b08 4 56 56
+32b0c 6 57 56
+32b12 2 1139 87
+32b14 4 277 82
+32b18 4 1139 87
+32b1c 2 57 56
+32b1e 18 57 56
+32b36 12 57 56
+32b48 6 256 82
+32b4e 2 58 56
+32b50 8 59 56
+32b58 8 60 56
+32b60 4 277 82
+32b64 2 1139 87
+32b66 2 60 56
+32b68 18 60 56
+32b80 10 60 56
+32b90 4 60 56
+32b94 4 60 56
+32b98 6 60 56
+32b9e 8 60 56
+32ba6 6 85 79
+32bac 6 60 56
+32bb2 6 156 137
+32bb8 e 256 82
+32bc6 6 61 56
+32bcc 2 58 56
+32bce 4 61 56
+32bd2 4 58 56
+32bd6 6 71 54
+32bdc 3c 63 56
+FUNC 32c18 72 0 std::priv::_Impl_vector<unsigned int, google_breakpad::PageStdAllocator<unsigned int> >::push_back
+32c18 4 376 144
+32c1c 4 380 144
+32c20 2 376 144
+32c22 2 380 144
+32c24 2 376 144
+32c26 4 380 144
+32c2a 2 126 108
+32c2c a 382 144
+32c36 6 192 144
+32c3c 8 175 144
+32c44 6 176 144
+32c4a 2 176 144
+32c4c c 177 144
+32c58 a 172 54
+32c62 2 112 143
+32c64 2 172 54
+32c66 4 224 105
+32c6a 6 224 105
+32c70 2 224 105
+32c72 4 481 105
+32c76 4 118 143
+32c7a 4 481 105
+32c7e 2 667 144
+32c80 4 666 144
+32c84 6 668 144
+FUNC 32c8c 2c 0 testing::internal::DefaultPrintTo<unsigned int>
+32c8c 2 307 80
+32c8e 2 307 80
+32c90 4 310 80
+32c94 4 334 80
+32c98 a 333 127
+32ca2 6 318 80
+32ca8 4 291 126
+32cac 4 334 80
+32cb0 8 291 126
+FUNC 32cb8 ac 0 WastefulVectorTest_Setup_Test::TestBody
+32cb8 4 69 56
+32cbc 4 176 102
+32cc0 2 67 54
+32cc2 2 69 56
+32cc4 2 67 54
+32cc6 6 172 54
+32ccc 8 67 54
+32cd4 4 172 54
+32cd8 2 277 82
+32cda 4 256 82
+32cde 4 277 82
+32ce2 2 1139 87
+32ce4 4 256 82
+32ce8 4 1512 82
+32cec 4 73 56
+32cf0 12 1512 82
+32d02 6 73 56
+32d08 2 1144 87
+32d0a 6 298 82
+32d10 4 298 82
+32d14 10 73 56
+32d24 6 73 56
+32d2a 8 73 56
+32d32 6 85 79
+32d38 6 73 56
+32d3e 6 256 82
+32d44 6 71 54
+32d4a 1a 74 56
+FUNC 32d64 5c 0 std::priv::_Impl_vector<unsigned int, google_breakpad::PageStdAllocator<unsigned int> >::reserve
+32d64 4 62 143
+32d68 4 199 144
+32d6c 2 62 143
+32d6e 2 199 144
+32d70 6 63 143
+32d76 6 64 143
+32d7c 8 41 143
+32d84 a 192 144
+32d8e 4 172 54
+32d92 2 70 143
+32d94 6 172 54
+32d9a c 120 142
+32da6 6 172 54
+32dac 6 76 143
+32db2 2 666 144
+32db4 2 667 144
+32db6 a 668 144
+FUNC 32dc0 32c 0 WastefulVectorTest_Simple_Test::TestBody
+32dc0 8 76 56
+32dc8 6 76 56
+32dce 2 67 54
+32dd0 4 76 56
+32dd4 4 153 148
+32dd8 4 176 102
+32ddc 2 67 54
+32dde 4 163 54
+32de2 4 153 148
+32de6 8 67 54
+32dee 4 67 144
+32df2 4 163 54
+32df6 2 481 106
+32df8 4 153 148
+32dfc 2 1512 82
+32dfe 2 80 56
+32e00 6 1512 82
+32e06 2 80 56
+32e08 4 1512 82
+32e0c e 1471 82
+32e1a c 80 56
+32e26 8 173 148
+32e2e 2 207 144
+32e30 2 1512 82
+32e32 2 207 144
+32e34 c 1512 82
+32e40 6 82 56
+32e46 2 1144 87
+32e48 6 298 82
+32e4e 4 298 82
+32e52 10 82 56
+32e62 6 256 82
+32e68 2 207 144
+32e6a 4 202 144
+32e6e 2 207 144
+32e70 4 202 144
+32e74 4 1481 82
+32e78 8 1482 82
+32e80 c 884 80
+32e8c 6 380 80
+32e92 2 75 132
+32e94 6 380 80
+32e9a c 75 132
+32ea6 6 886 80
+32eac 8 884 80
+32eb4 4 380 80
+32eb8 4 75 132
+32ebc 4 380 80
+32ec0 8 75 132
+32ec8 6 886 80
+32ece 14 1471 82
+32ee2 c 156 137
+32eee 6 83 56
+32ef4 2 1144 87
+32ef6 6 298 82
+32efc 4 298 82
+32f00 e 83 56
+32f0e 2 83 56
+32f10 4 83 56
+32f14 6 83 56
+32f1a 8 83 56
+32f22 6 85 79
+32f28 6 83 56
+32f2e e 256 82
+32f3c 8 80 56
+32f44 4 85 56
+32f48 4 1139 87
+32f4c 6 85 56
+32f52 4 1139 87
+32f56 6 277 82
+32f5c 2 85 56
+32f5e 18 85 56
+32f76 4 85 56
+32f7a 2 85 56
+32f7c e 85 56
+32f8a 6 85 56
+32f90 8 85 56
+32f98 6 85 79
+32f9e 6 85 56
+32fa4 8 156 137
+32fac 6 256 82
+32fb2 4 192 144
+32fb6 4 86 56
+32fba 4 192 144
+32fbe 6 86 56
+32fc4 4 1512 82
+32fc8 4 86 56
+32fcc 10 1512 82
+32fdc 6 86 56
+32fe2 2 1144 87
+32fe4 6 298 82
+32fea 4 298 82
+32fee e 86 56
+32ffc 6 256 82
+33002 4 1512 82
+33006 4 87 56
+3300a 8 1512 82
+33012 2 87 56
+33014 6 256 82
+3301a 6 87 56
+33020 a 87 56
+3302a 12 1512 82
+3303c 8 88 56
+33044 2 1144 87
+33046 4 298 82
+3304a 10 88 56
+3305a 6 88 56
+33060 8 88 56
+33068 6 85 79
+3306e 4 88 56
+33072 6 298 82
+33078 6 71 54
+3307e 6e 89 56
+FUNC 330ec fc 0 WastefulVectorTest_UsesPageAllocator_Test::TestBody
+330ec 8 91 56
+330f4 6 91 56
+330fa 2 153 148
+330fc 4 91 56
+33100 2 153 148
+33102 4 176 102
+33106 2 67 54
+33108 2 153 148
+3310a 4 67 54
+3310e 2 163 54
+33110 6 67 54
+33116 4 67 144
+3311a 2 481 106
+3311c 2 163 54
+3311e 4 153 148
+33122 a 95 56
+3312c a 173 148
+33136 2 106 54
+33138 2 108 54
+3313a 2 106 54
+3313c 4 108 54
+33140 a 108 54
+3314a 4 106 54
+3314e 2 109 54
+33150 4 1139 87
+33154 4 277 82
+33158 4 1139 87
+3315c 2 96 56
+3315e 18 96 56
+33176 a 96 56
+33180 4 96 56
+33184 a 96 56
+3318e 6 96 56
+33194 8 96 56
+3319c 6 85 79
+331a2 6 96 56
+331a8 6 156 137
+331ae 6 256 82
+331b4 6 71 54
+331ba 2e 97 56
+FUNC 331e8 18 0 google_breakpad::NonAllocatingMapTest_OutOfSpace_Test::~NonAllocatingMapTest_OutOfSpace_Test
+331e8 2 282 59
+331ea 16 282 59
+FUNC 33200 12 0 google_breakpad::NonAllocatingMapTest_OutOfSpace_Test::~NonAllocatingMapTest_OutOfSpace_Test
+33200 2 282 59
+33202 6 282 59
+33208 6 282 59
+3320e 4 282 59
+FUNC 33214 18 0 google_breakpad::NonAllocatingMapTest_Serialize_Test::~NonAllocatingMapTest_Serialize_Test
+33214 2 253 59
+33216 16 253 59
+FUNC 3322c 12 0 google_breakpad::NonAllocatingMapTest_Serialize_Test::~NonAllocatingMapTest_Serialize_Test
+3322c 2 253 59
+3322e 6 253 59
+33234 6 253 59
+3323a 4 253 59
+FUNC 33240 18 0 google_breakpad::NonAllocatingMapTest_AddRemove_Test::~NonAllocatingMapTest_AddRemove_Test
+33240 2 228 59
+33242 16 228 59
+FUNC 33258 12 0 google_breakpad::NonAllocatingMapTest_AddRemove_Test::~NonAllocatingMapTest_AddRemove_Test
+33258 2 228 59
+3325a 6 228 59
+33260 6 228 59
+33266 4 228 59
+FUNC 3326c 18 0 google_breakpad::NonAllocatingMapTest_Iterator_Test::~NonAllocatingMapTest_Iterator_Test
+3326c 2 127 59
+3326e 16 127 59
+FUNC 33284 12 0 google_breakpad::NonAllocatingMapTest_Iterator_Test::~NonAllocatingMapTest_Iterator_Test
+33284 2 127 59
+33286 6 127 59
+3328c 6 127 59
+33292 4 127 59
+FUNC 33298 18 0 google_breakpad::NonAllocatingMapTest_CopyAndAssign_Test::~NonAllocatingMapTest_CopyAndAssign_Test
+33298 2 92 59
+3329a 16 92 59
+FUNC 332b0 12 0 google_breakpad::NonAllocatingMapTest_CopyAndAssign_Test::~NonAllocatingMapTest_CopyAndAssign_Test
+332b0 2 92 59
+332b2 6 92 59
+332b8 6 92 59
+332be 4 92 59
+FUNC 332c4 18 0 google_breakpad::NonAllocatingMapTest_SimpleStringDictionary_Test::~NonAllocatingMapTest_SimpleStringDictionary_Test
+332c4 2 63 59
+332c6 16 63 59
+FUNC 332dc 12 0 google_breakpad::NonAllocatingMapTest_SimpleStringDictionary_Test::~NonAllocatingMapTest_SimpleStringDictionary_Test
+332dc 2 63 59
+332de 6 63 59
+332e4 6 63 59
+332ea 4 63 59
+FUNC 332f0 18 0 google_breakpad::NonAllocatingMapTest_Entry_Test::~NonAllocatingMapTest_Entry_Test
+332f0 2 35 59
+332f2 16 35 59
+FUNC 33308 12 0 google_breakpad::NonAllocatingMapTest_Entry_Test::~NonAllocatingMapTest_Entry_Test
+33308 2 35 59
+3330a 6 35 59
+33310 6 35 59
+33316 4 35 59
+FUNC 3331a 66 0 google_breakpad::NonAllocatingMap<3u, 2u, 2u>::SetKeyValue
+3331a 4 161 58
+3331e 6 161 58
+33324 1a 240 58
+3333e 4 239 58
+33342 2 239 58
+33344 4 241 58
+33348 4 179 58
+3334c 8 181 58
+33354 2 180 58
+33356 2 181 58
+33358 10 184 58
+33368 2 185 58
+3336a 2 182 58
+3336c 2 185 58
+3336e a 206 58
+33378 8 207 58
+FUNC 33380 5e 0 google_breakpad::NonAllocatingMap<5u, 9u, 15u>::SetKeyValue
+33380 4 161 58
+33384 a 161 58
+3338e e 240 58
+3339c 8 239 58
+333a4 6 181 58
+333aa a 184 58
+333b4 a 185 58
+333be 2 180 58
+333c0 c 180 58
+333cc a 206 58
+333d6 8 207 58
+FUNC 333e0 20 0 testing::internal::TestFactoryImpl<google_breakpad::NonAllocatingMapTest_OutOfSpace_Test>::CreateTest
+333e0 2 486 85
+333e2 8 486 85
+333ea 6 282 59
+333f0 2 486 85
+333f2 6 282 59
+333f8 8 486 85
+FUNC 33400 20 0 testing::internal::TestFactoryImpl<google_breakpad::NonAllocatingMapTest_Serialize_Test>::CreateTest
+33400 2 486 85
+33402 8 486 85
+3340a 6 253 59
+33410 2 486 85
+33412 6 253 59
+33418 8 486 85
+FUNC 33420 20 0 testing::internal::TestFactoryImpl<google_breakpad::NonAllocatingMapTest_AddRemove_Test>::CreateTest
+33420 2 486 85
+33422 8 486 85
+3342a 6 228 59
+33430 2 486 85
+33432 6 228 59
+33438 8 486 85
+FUNC 33440 20 0 testing::internal::TestFactoryImpl<google_breakpad::NonAllocatingMapTest_Iterator_Test>::CreateTest
+33440 2 486 85
+33442 8 486 85
+3344a 6 127 59
+33450 2 486 85
+33452 6 127 59
+33458 8 486 85
+FUNC 33460 20 0 testing::internal::TestFactoryImpl<google_breakpad::NonAllocatingMapTest_CopyAndAssign_Test>::CreateTest
+33460 2 486 85
+33462 8 486 85
+3346a 6 92 59
+33470 2 486 85
+33472 6 92 59
+33478 8 486 85
+FUNC 33480 20 0 testing::internal::TestFactoryImpl<google_breakpad::NonAllocatingMapTest_SimpleStringDictionary_Test>::CreateTest
+33480 2 486 85
+33482 8 486 85
+3348a 6 63 59
+33490 2 486 85
+33492 6 63 59
+33498 8 486 85
+FUNC 334a0 20 0 testing::internal::TestFactoryImpl<google_breakpad::NonAllocatingMapTest_Entry_Test>::CreateTest
+334a0 2 486 85
+334a2 8 486 85
+334aa 6 35 59
+334b0 2 486 85
+334b2 6 35 59
+334b8 8 486 85
+FUNC 334c0 16 0 google_breakpad::NonAllocatingMap<5u, 7u, 6u>::GetCount
+334c0 2 133 58
+334c2 c 134 58
+334ce 4 135 58
+334d2 4 141 58
+FUNC 334d6 2a 0 google_breakpad::NonAllocatingMap<256u, 256u, 64u>::GetConstEntryForKey
+334d6 2 238 58
+334d8 8 238 58
+334e0 12 240 58
+334f2 6 239 58
+334f8 6 244 58
+334fe 2 245 58
+FUNC 33500 14 0 google_breakpad::NonAllocatingMap<256u, 256u, 64u>::RemoveKey
+33500 2 212 58
+33502 2 214 58
+33504 4 248 58
+33508 2 218 58
+3350a 4 219 58
+3350e 6 220 58
+FUNC 33514 6e 0 google_breakpad::NonAllocatingMap<256u, 256u, 64u>::SetKeyValue
+33514 4 161 58
+33518 4 161 58
+3351c 4 162 58
+33520 4 208 58
+33524 4 163 58
+33528 2 168 58
+3352a 4 173 58
+3352e 4 248 58
+33532 8 179 58
+3353a a 181 58
+33544 8 184 58
+3354c 4 185 58
+33550 2 181 58
+33552 4 184 58
+33556 6 185 58
+3355c 2 180 58
+3355e c 180 58
+3356a e 206 58
+33578 a 207 58
+FUNC 33582 24 0 google_breakpad::NonAllocatingMap<10u, 10u, 10u>::GetConstEntryForKey
+33582 2 238 58
+33584 8 238 58
+3358c e 240 58
+3359a 4 239 58
+3359e 6 244 58
+335a4 2 245 58
+FUNC 335a6 12 0 google_breakpad::NonAllocatingMap<10u, 10u, 10u>::RemoveKey
+335a6 2 212 58
+335a8 2 214 58
+335aa 4 248 58
+335ae 2 218 58
+335b0 4 219 58
+335b4 4 220 58
+FUNC 335b8 6a 0 google_breakpad::NonAllocatingMap<10u, 10u, 10u>::SetKeyValue
+335b8 4 161 58
+335bc 4 161 58
+335c0 4 162 58
+335c4 4 208 58
+335c8 4 163 58
+335cc 2 168 58
+335ce 4 173 58
+335d2 4 248 58
+335d6 8 179 58
+335de a 181 58
+335e8 6 184 58
+335ee 2 181 58
+335f0 4 184 58
+335f4 c 185 58
+33600 2 180 58
+33602 c 180 58
+3360e c 206 58
+3361a 8 207 58
+FUNC 33622 12 0 google_breakpad::NonAllocatingMap<10u, 10u, 10u>::GetValueForKey
+33622 2 145 58
+33624 2 147 58
+33626 4 150 58
+3362a 2 151 58
+3362c 4 154 58
+33630 2 148 58
+33632 2 155 58
+FUNC 33634 24 0 google_breakpad::NonAllocatingMap<5u, 7u, 6u>::GetConstEntryForKey
+33634 2 238 58
+33636 8 238 58
+3363e e 240 58
+3364c 4 239 58
+33650 6 244 58
+33656 2 245 58
+FUNC 33658 12 0 google_breakpad::NonAllocatingMap<5u, 7u, 6u>::RemoveKey
+33658 2 212 58
+3365a 2 214 58
+3365c 4 248 58
+33660 2 218 58
+33662 4 219 58
+33666 4 220 58
+FUNC 3366a 68 0 google_breakpad::NonAllocatingMap<5u, 7u, 6u>::SetKeyValue
+3366a 4 161 58
+3366e 4 161 58
+33672 4 162 58
+33676 4 208 58
+3367a 4 163 58
+3367e 2 168 58
+33680 4 173 58
+33684 4 248 58
+33688 8 179 58
+33690 a 181 58
+3369a 6 184 58
+336a0 2 181 58
+336a2 4 184 58
+336a6 c 185 58
+336b2 2 180 58
+336b4 c 180 58
+336c0 a 206 58
+336ca 8 207 58
+FUNC 336d2 24 0 google_breakpad::NonAllocatingMap<4u, 5u, 7u>::GetConstEntryForKey
+336d2 2 238 58
+336d4 8 238 58
+336dc e 240 58
+336ea 4 239 58
+336ee 6 244 58
+336f4 2 245 58
+FUNC 336f6 50 0 google_breakpad::NonAllocatingMap<4u, 5u, 7u>::SetKeyValue
+336f6 4 161 58
+336fa 6 161 58
+33700 4 248 58
+33704 8 179 58
+3370c 4 181 58
+33710 4 185 58
+33714 6 184 58
+3371a 2 185 58
+3371c 2 181 58
+3371e 4 184 58
+33722 4 185 58
+33726 2 180 58
+33728 c 180 58
+33734 a 206 58
+3373e 8 207 58
+FUNC 33748 49c 0 google_breakpad::NonAllocatingMapTest_Entry_Test::TestBody
+33748 10 35 59
+33758 4 35 59
+3375c 10 104 58
+3376c c 104 58
+33778 2 89 58
+3377a 8 90 58
+33782 4 88 58
+33786 2 94 58
+33788 4 40 59
+3378c 2 1139 87
+3378e 2 40 59
+33790 4 277 82
+33794 2 1139 87
+33796 2 40 59
+33798 18 40 59
+337b0 a 40 59
+337ba 2 40 59
+337bc a 40 59
+337c6 6 40 59
+337cc 8 40 59
+337d4 6 85 79
+337da 6 40 59
+337e0 6 156 137
+337e6 18 256 82
+337fe 2 89 58
+33800 8 90 58
+33808 6 88 58
+3380e 2 90 58
+33810 6 277 82
+33816 2 1139 87
+33818 4 277 82
+3381c 4 1139 87
+33820 2 45 59
+33822 18 45 59
+3383a 8 45 59
+33842 2 45 59
+33844 c 45 59
+33850 6 45 59
+33856 8 45 59
+3385e 6 85 79
+33864 6 45 59
+3386a 8 156 137
+33872 6 256 82
+33878 1c 46 59
+33894 6 302 82
+3389a a 46 59
+338a4 4 46 59
+338a8 8 46 59
+338b0 6 46 59
+338b6 8 46 59
+338be 6 85 79
+338c4 6 46 59
+338ca 6 256 82
+338d0 20 47 59
+338f0 6 302 82
+338f6 a 47 59
+33900 4 47 59
+33904 8 47 59
+3390c 6 47 59
+33912 8 47 59
+3391a 6 85 79
+33920 6 47 59
+33926 16 256 82
+3393c 18 51 59
+33954 6 302 82
+3395a a 51 59
+33964 4 51 59
+33968 8 51 59
+33970 6 51 59
+33976 8 51 59
+3397e 6 85 79
+33984 6 51 59
+3398a 6 256 82
+33990 1c 54 59
+339ac 6 302 82
+339b2 a 54 59
+339bc 4 54 59
+339c0 8 54 59
+339c8 6 54 59
+339ce 8 54 59
+339d6 6 85 79
+339dc 6 54 59
+339e2 8 256 82
+339ea 16 240 58
+33a00 4 219 58
+33a04 8 220 58
+33a0c 4 239 58
+33a10 2 58 59
+33a12 2 1139 87
+33a14 6 58 59
+33a1a 4 277 82
+33a1e 8 1139 87
+33a26 2 58 59
+33a28 1a 58 59
+33a42 12 58 59
+33a54 6 58 59
+33a5a 8 58 59
+33a62 6 85 79
+33a68 6 58 59
+33a6e 6 156 137
+33a74 6 256 82
+33a7a 8 59 59
+33a82 4 1512 82
+33a86 4 59 59
+33a8a 10 1512 82
+33a9a 6 59 59
+33aa0 6 302 82
+33aa6 10 59 59
+33ab6 6 59 59
+33abc 8 59 59
+33ac4 6 85 79
+33aca 6 59 59
+33ad0 6 256 82
+33ad6 8 60 59
+33ade 4 1512 82
+33ae2 4 60 59
+33ae6 10 1512 82
+33af6 6 60 59
+33afc 6 302 82
+33b02 10 60 59
+33b12 6 60 59
+33b18 8 60 59
+33b20 6 85 79
+33b26 6 60 59
+33b2c 6 256 82
+33b32 b2 61 59
+FUNC 33be4 7a0 0 google_breakpad::NonAllocatingMapTest_CopyAndAssign_Test::TestBody
+33be4 14 92 59
+33bf8 4 92 59
+33bfc 12 104 58
+33c0e 4 104 58
+33c12 e 94 59
+33c20 4 95 59
+33c24 4 94 59
+33c28 10 95 59
+33c38 12 96 59
+33c4a 8 97 59
+33c52 8 98 59
+33c5a e 134 58
+33c68 4 135 58
+33c6c 4 98 59
+33c70 18 1512 82
+33c88 6 98 59
+33c8e 6 302 82
+33c94 12 98 59
+33ca6 6 98 59
+33cac 8 98 59
+33cb4 6 85 79
+33cba 6 98 59
+33cc0 a 256 82
+33cca a 117 58
+33cd4 8 102 59
+33cdc c 134 58
+33ce8 4 135 58
+33cec 2 102 59
+33cee 1a 1512 82
+33d08 6 102 59
+33d0e 6 302 82
+33d14 12 102 59
+33d26 6 102 59
+33d2c 8 102 59
+33d34 6 85 79
+33d3a 6 102 59
+33d40 6 256 82
+33d46 c 103 59
+33d52 1a 103 59
+33d6c 6 103 59
+33d72 6 302 82
+33d78 12 103 59
+33d8a 6 103 59
+33d90 8 103 59
+33d98 6 85 79
+33d9e 6 103 59
+33da4 6 256 82
+33daa c 104 59
+33db6 1a 104 59
+33dd0 6 104 59
+33dd6 6 302 82
+33ddc 12 104 59
+33dee 6 104 59
+33df4 8 104 59
+33dfc 6 85 79
+33e02 6 104 59
+33e08 c 105 59
+33e14 6 256 82
+33e1a a 105 59
+33e24 8 106 59
+33e2c 16 106 59
+33e42 6 106 59
+33e48 6 302 82
+33e4e 14 106 59
+33e62 6 106 59
+33e68 8 106 59
+33e70 6 85 79
+33e76 6 106 59
+33e7c 6 256 82
+33e82 10 107 59
+33e92 2 1139 87
+33e94 2 107 59
+33e96 4 277 82
+33e9a 2 1139 87
+33e9c 2 107 59
+33e9e 20 107 59
+33ebe 16 107 59
+33ed4 6 107 59
+33eda 8 107 59
+33ee2 6 85 79
+33ee8 6 107 59
+33eee 6 156 137
+33ef4 8 256 82
+33efc 10 104 58
+33f0c 4 104 58
+33f10 a 117 58
+33f1a 8 112 59
+33f22 c 134 58
+33f2e 4 135 58
+33f32 8 112 59
+33f3a 14 1512 82
+33f4e 4 112 59
+33f52 6 302 82
+33f58 10 112 59
+33f68 6 112 59
+33f6e 8 112 59
+33f76 6 85 79
+33f7c 6 112 59
+33f82 a 256 82
+33f8c a 113 59
+33f96 6 113 59
+33f9c 4 256 82
+33fa0 e 113 59
+33fae 6 113 59
+33fb4 6 302 82
+33fba 10 113 59
+33fca 6 113 59
+33fd0 8 113 59
+33fd8 6 85 79
+33fde 6 113 59
+33fe4 6 256 82
+33fea a 114 59
+33ff4 14 114 59
+34008 4 114 59
+3400c 6 302 82
+34012 10 114 59
+34022 6 114 59
+34028 8 114 59
+34030 6 85 79
+34036 6 114 59
+3403c 2 256 82
+3403e c 115 59
+3404a 4 256 82
+3404e a 115 59
+34058 8 116 59
+34060 12 116 59
+34072 4 116 59
+34076 6 302 82
+3407c 8 116 59
+34084 4 116 59
+34088 8 116 59
+34090 6 116 59
+34096 8 116 59
+3409e 6 85 79
+340a4 6 116 59
+340aa a 256 82
+340b4 e 117 59
+340c2 2 1139 87
+340c4 2 117 59
+340c6 2 277 82
+340c8 2 1139 87
+340ca 2 117 59
+340cc 1a 117 59
+340e6 8 117 59
+340ee 4 117 59
+340f2 a 117 59
+340fc 6 117 59
+34102 8 117 59
+3410a 6 85 79
+34110 6 117 59
+34116 6 156 137
+3411c 4 119 59
+34120 2 256 82
+34122 2 119 59
+34124 4 256 82
+34128 8 119 59
+34130 c 120 59
+3413c 2 1139 87
+3413e 2 120 59
+34140 2 277 82
+34142 2 1139 87
+34144 2 120 59
+34146 1a 120 59
+34160 8 120 59
+34168 4 120 59
+3416c a 120 59
+34176 6 120 59
+3417c 8 120 59
+34184 6 85 79
+3418a 6 120 59
+34190 6 156 137
+34196 6 256 82
+3419c a 121 59
+341a6 14 121 59
+341ba 4 121 59
+341be 6 302 82
+341c4 8 121 59
+341cc 2 121 59
+341ce 8 121 59
+341d6 6 121 59
+341dc 8 121 59
+341e4 6 85 79
+341ea 6 121 59
+341f0 6 256 82
+341f6 a 122 59
+34200 14 122 59
+34214 4 122 59
+34218 6 302 82
+3421e 8 122 59
+34226 2 122 59
+34228 8 122 59
+34230 6 122 59
+34236 8 122 59
+3423e 6 85 79
+34244 6 122 59
+3424a 6 256 82
+34250 134 123 59
+FUNC 34384 544 0 google_breakpad::NonAllocatingMapTest_AddRemove_Test::TestBody
+34384 16 228 59
+3439a 2 228 59
+3439c 10 104 58
+343ac 4 104 58
+343b0 14 230 59
+343c4 12 231 59
+343d6 12 232 59
+343e8 a 234 59
+343f2 e 1512 82
+34400 2 234 59
+34402 e 1512 82
+34410 6 234 59
+34416 6 302 82
+3441c 10 234 59
+3442c 6 234 59
+34432 8 234 59
+3443a 6 85 79
+34440 6 234 59
+34446 a 256 82
+34450 a 150 58
+3445a 2 151 58
+3445c 2 154 58
+3445e 14 235 59
+34472 6 235 59
+34478 6 302 82
+3447e 10 235 59
+3448e 6 235 59
+34494 8 235 59
+3449c 6 85 79
+344a2 6 235 59
+344a8 6 256 82
+344ae a 150 58
+344b8 2 151 58
+344ba 2 154 58
+344bc 14 236 59
+344d0 6 236 59
+344d6 6 302 82
+344dc 10 236 59
+344ec 6 236 59
+344f2 8 236 59
+344fa 6 85 79
+34500 6 236 59
+34506 6 256 82
+3450c a 150 58
+34516 2 151 58
+34518 2 154 58
+3451a 14 237 59
+3452e 6 237 59
+34534 6 302 82
+3453a 10 237 59
+3454a 6 237 59
+34550 8 237 59
+34558 6 85 79
+3455e 6 237 59
+34564 6 256 82
+3456a a 239 59
+34574 a 241 59
+3457e 4 1512 82
+34582 2 241 59
+34584 e 1512 82
+34592 6 241 59
+34598 6 302 82
+3459e 10 241 59
+345ae 6 241 59
+345b4 8 241 59
+345bc 6 85 79
+345c2 6 241 59
+345c8 6 256 82
+345ce a 150 58
+345d8 2 151 58
+345da 2 154 58
+345dc 4 242 59
+345e0 2 1139 87
+345e2 2 242 59
+345e4 4 277 82
+345e8 2 1139 87
+345ea 2 242 59
+345ec 1a 242 59
+34606 12 242 59
+34618 6 242 59
+3461e 8 242 59
+34626 6 85 79
+3462c 6 242 59
+34632 6 156 137
+34638 6 256 82
+3463e e 244 59
+3464c a 245 59
+34656 4 1512 82
+3465a 2 245 59
+3465c e 1512 82
+3466a 6 245 59
+34670 6 302 82
+34676 10 245 59
+34686 6 245 59
+3468c 8 245 59
+34694 6 85 79
+3469a 6 245 59
+346a0 6 256 82
+346a6 a 150 58
+346b0 2 151 58
+346b2 2 154 58
+346b4 14 246 59
+346c8 6 246 59
+346ce 6 302 82
+346d4 10 246 59
+346e4 6 246 59
+346ea 8 246 59
+346f2 6 85 79
+346f8 6 246 59
+346fe 4 249 59
+34702 6 256 82
+34708 a 248 59
+34712 a 249 59
+3471c 4 1512 82
+34720 2 249 59
+34722 e 1512 82
+34730 6 249 59
+34736 6 302 82
+3473c 10 249 59
+3474c 6 249 59
+34752 8 249 59
+3475a 6 85 79
+34760 6 249 59
+34766 6 256 82
+3476c a 150 58
+34776 2 151 58
+34778 4 154 58
+3477c 2 152 58
+3477e 4 250 59
+34782 2 1139 87
+34784 2 250 59
+34786 4 277 82
+3478a 2 1139 87
+3478c 2 250 59
+3478e 18 250 59
+347a6 12 250 59
+347b8 6 250 59
+347be 8 250 59
+347c6 6 85 79
+347cc 6 250 59
+347d2 6 156 137
+347d8 6 256 82
+347de ea 251 59
+FUNC 348c8 498 0 google_breakpad::NonAllocatingMapTest_Serialize_Test::TestBody
+348c8 16 253 59
+348de 2 253 59
+348e0 10 104 58
+348f0 32 104 58
+34922 8 150 58
+3492a 2 151 58
+3492c 2 154 58
+3492e 16 260 59
+34944 6 260 59
+3494a 6 302 82
+34950 c 260 59
+3495c 2 260 59
+3495e 8 260 59
+34966 6 260 59
+3496c 8 260 59
+34974 6 85 79
+3497a 6 260 59
+34980 8 256 82
+34988 a 150 58
+34992 2 151 58
+34994 2 154 58
+34996 14 261 59
+349aa 6 261 59
+349b0 6 302 82
+349b6 c 261 59
+349c2 4 261 59
+349c6 8 261 59
+349ce 6 261 59
+349d4 8 261 59
+349dc 6 85 79
+349e2 6 261 59
+349e8 6 256 82
+349ee a 150 58
+349f8 2 151 58
+349fa 4 154 58
+349fe 2 152 58
+34a00 14 262 59
+34a14 6 262 59
+34a1a 6 302 82
+34a20 c 262 59
+34a2c 4 262 59
+34a30 8 262 59
+34a38 6 262 59
+34a3e 8 262 59
+34a46 6 85 79
+34a4c 6 262 59
+34a52 6 256 82
+34a58 6 268 59
+34a5e 6 277 82
+34a64 2 1139 87
+34a66 6 277 82
+34a6c 2 1139 87
+34a6e 2 269 59
+34a70 18 269 59
+34a88 a 269 59
+34a92 2 269 59
+34a94 c 269 59
+34aa0 6 269 59
+34aa6 8 269 59
+34aae 6 85 79
+34ab4 6 269 59
+34aba 6 156 137
+34ac0 6 256 82
+34ac6 2 270 59
+34ac8 4 256 82
+34acc 1a 270 59
+34ae6 1e 127 58
+34b04 6 273 59
+34b0a 4 275 59
+34b0e c 134 58
+34b1a 4 135 58
+34b1e a 1512 82
+34b28 2 275 59
+34b2a e 1512 82
+34b38 6 275 59
+34b3e 6 302 82
+34b44 12 275 59
+34b56 6 275 59
+34b5c 8 275 59
+34b64 6 85 79
+34b6a 6 275 59
+34b70 a 256 82
+34b7a a 150 58
+34b84 2 151 58
+34b86 2 154 58
+34b88 14 276 59
+34b9c 6 276 59
+34ba2 6 302 82
+34ba8 12 276 59
+34bba 6 276 59
+34bc0 8 276 59
+34bc8 6 85 79
+34bce 6 276 59
+34bd4 6 256 82
+34bda a 150 58
+34be4 2 151 58
+34be6 2 154 58
+34be8 14 277 59
+34bfc 6 277 59
+34c02 6 302 82
+34c08 12 277 59
+34c1a 6 277 59
+34c20 8 277 59
+34c28 6 85 79
+34c2e 6 277 59
+34c34 6 256 82
+34c3a a 150 58
+34c44 2 151 58
+34c46 4 154 58
+34c4a 2 152 58
+34c4c 14 278 59
+34c60 6 278 59
+34c66 6 302 82
+34c6c 12 278 59
+34c7e 6 278 59
+34c84 8 278 59
+34c8c 6 85 79
+34c92 6 278 59
+34c98 6 256 82
+34c9e c2 279 59
+FUNC 34d60 1a4 0 google_breakpad::NonAllocatingMapTest_OutOfSpace_Test::TestBody
+34d60 6 282 59
+34d66 2 104 58
+34d68 6 282 59
+34d6e 2 282 59
+34d70 8 104 58
+34d78 2 282 59
+34d7a 38 104 58
+34db2 4 287 59
+34db6 10 136 58
+34dc6 2 137 58
+34dc8 c 1512 82
+34dd4 2 287 59
+34dd6 e 1512 82
+34de4 6 287 59
+34dea 6 302 82
+34df0 12 287 59
+34e02 6 287 59
+34e08 8 287 59
+34e10 6 85 79
+34e16 6 287 59
+34e1c 2 240 58
+34e1e 6 256 82
+34e24 2 240 58
+34e26 4 256 82
+34e2a 18 240 58
+34e42 4 239 58
+34e46 2 239 58
+34e48 a 154 58
+34e52 2 152 58
+34e54 4 288 59
+34e58 2 1139 87
+34e5a 2 288 59
+34e5c 4 277 82
+34e60 2 1139 87
+34e62 2 288 59
+34e64 18 288 59
+34e7c 14 288 59
+34e90 6 288 59
+34e96 8 288 59
+34e9e 6 85 79
+34ea4 6 288 59
+34eaa 6 156 137
+34eb0 6 256 82
+34eb6 4e 289 59
+FUNC 34f04 104 0 testing::internal::CmpHelperNE<char const*, char [7]>
+34f04 10 1615 82
+34f14 e 1615 82
+34f22 4 1615 82
+34f26 4 1615 82
+34f2a 10 1583 82
+34f3a a 1583 82
+34f44 6 1583 82
+34f4a 2 1583 82
+34f4c 2 1408 82
+34f4e 6 1583 82
+34f54 6 1583 82
+34f5a 8 1583 82
+34f62 6 1583 82
+34f68 a 1584 82
+34f72 e 1408 82
+34f80 a 1584 82
+34f8a 6 306 82
+34f90 c 333 127
+34f9c 8 306 82
+34fa4 6 85 79
+34faa c 1408 82
+34fb6 a 1585 82
+34fc0 6 1585 82
+34fc6 c 156 137
+34fd2 6 256 82
+34fd8 30 1615 82
+FUNC 35008 478 0 google_breakpad::NonAllocatingMapTest_SimpleStringDictionary_Test::TestBody
+35008 16 63 59
+3501e a 63 59
+35028 2 104 58
+3502a 2 63 59
+3502c 16 104 58
+35042 6 104 58
+35048 10 68 59
+35058 e 69 59
+35066 e 70 59
+35074 8 150 58
+3507c 2 151 58
+3507e 4 154 58
+35082 8 72 59
+3508a 4 72 59
+3508e 4 72 59
+35092 4 72 59
+35096 e 72 59
+350a4 6 72 59
+350aa 6 302 82
+350b0 14 72 59
+350c4 6 72 59
+350ca 8 72 59
+350d2 6 85 79
+350d8 6 72 59
+350de 8 256 82
+350e6 a 150 58
+350f0 2 151 58
+350f2 4 154 58
+350f6 8 73 59
+350fe 4 73 59
+35102 e 73 59
+35110 6 73 59
+35116 6 302 82
+3511c 14 73 59
+35130 6 73 59
+35136 8 73 59
+3513e 6 85 79
+35144 6 73 59
+3514a 8 256 82
+35152 a 150 58
+3515c 2 151 58
+3515e 4 154 58
+35162 8 74 59
+3516a 4 74 59
+3516e e 74 59
+3517c 6 74 59
+35182 6 302 82
+35188 14 74 59
+3519c 6 74 59
+351a2 8 74 59
+351aa 6 85 79
+351b0 6 74 59
+351b6 a 256 82
+351c0 10 134 58
+351d0 6 135 58
+351d6 6 75 59
+351dc 4 1512 82
+351e0 8 75 59
+351e8 e 1512 82
+351f6 6 75 59
+351fc 6 302 82
+35202 10 75 59
+35212 6 75 59
+35218 8 75 59
+35220 6 85 79
+35226 6 75 59
+3522c 8 256 82
+35234 a 150 58
+3523e 2 151 58
+35240 4 154 58
+35244 4 77 59
+35248 2 1139 87
+3524a 2 77 59
+3524c 4 277 82
+35250 2 1139 87
+35252 2 77 59
+35254 1e 77 59
+35272 18 77 59
+3528a 6 77 59
+35290 8 77 59
+35298 6 85 79
+3529e 6 77 59
+352a4 6 156 137
+352aa 4 80 59
+352ae 4 256 82
+352b2 2 80 59
+352b4 4 256 82
+352b8 8 80 59
+352c0 8 150 58
+352c8 2 151 58
+352ca 4 154 58
+352ce 4 83 59
+352d2 2 1139 87
+352d4 2 83 59
+352d6 4 277 82
+352da 2 1139 87
+352dc 2 83 59
+352de 1e 83 59
+352fc 18 83 59
+35314 6 83 59
+3531a 8 83 59
+35322 6 85 79
+35328 6 83 59
+3532e 6 156 137
+35334 4 163 58
+35338 4 256 82
+3533c 2 163 58
+3533e 4 256 82
+35342 8 163 58
+3534a 8 150 58
+35352 2 151 58
+35354 4 154 58
+35358 4 89 59
+3535c 2 1139 87
+3535e 2 89 59
+35360 4 277 82
+35364 2 1139 87
+35366 2 89 59
+35368 1e 89 59
+35386 18 89 59
+3539e 6 89 59
+353a4 8 89 59
+353ac 6 85 79
+353b2 6 89 59
+353b8 6 156 137
+353be 8 256 82
+353c6 ba 90 59
+FUNC 35480 4a8 0 google_breakpad::NonAllocatingMapTest_Iterator_Test::TestBody
+35480 c 127 59
+3548c 6 127 59
+35492 4 128 59
+35496 2 127 59
+35498 e 128 59
+354a6 10 104 58
+354b6 4 104 58
+354ba 2 1139 87
+354bc 4 277 82
+354c0 2 256 82
+354c2 2 1139 87
+354c4 2 256 82
+354c6 2 277 82
+354c8 4 256 82
+354cc 6 1621 82
+354d2 4 138 59
+354d6 6 302 82
+354dc a 138 59
+354e6 2 138 59
+354e8 8 138 59
+354f0 6 138 59
+354f6 8 138 59
+354fe 6 85 79
+35504 6 138 59
+3550a 4 256 82
+3550e 4 146 59
+35512 4 147 59
+35516 2 256 82
+35518 4 142 59
+3551c 4 256 82
+35520 4 146 59
+35524 4 142 59
+35528 2 146 59
+3552a 2 147 59
+3552c 4 146 59
+35530 2 147 59
+35532 6 146 59
+35538 a 147 59
+35542 2 145 59
+35544 a 148 59
+3554e 4 145 59
+35552 a 153 59
+3555c 4 150 59
+35560 4 153 59
+35564 e 154 59
+35572 e 155 59
+35580 a 158 59
+3558a a 159 59
+35594 a 160 59
+3559e a 161 59
+355a8 a 162 59
+355b2 a 166 59
+355bc a 167 59
+355c6 2 165 59
+355c8 a 168 59
+355d2 4 165 59
+355d6 2 82 58
+355d8 4 170 59
+355dc 2 181 59
+355de 6 170 59
+355e4 2 181 59
+355e6 2 82 58
+355e8 4 181 59
+355ec 4 82 58
+355f0 4 181 59
+355f4 6 183 59
+355fa 6 191 59
+35600 6 195 59
+35606 c 1512 82
+35612 6 198 59
+35618 e 206 59
+35626 6 88 58
+3562c a 89 58
+35636 2 90 58
+35638 2 89 58
+3563a 6 90 58
+35640 4 191 59
+35644 6 187 59
+3564a 2 191 59
+3564c 4 187 59
+35650 8 191 59
+35658 a 195 59
+35662 4 1512 82
+35666 4 195 59
+3566a e 1512 82
+35678 6 198 59
+3567e 6 302 82
+35684 8 198 59
+3568c 4 198 59
+35690 8 198 59
+35698 6 198 59
+3569e 8 198 59
+356a6 6 85 79
+356ac 6 198 59
+356b2 6 256 82
+356b8 2 203 59
+356ba 2 1139 87
+356bc 8 203 59
+356c4 2 205 59
+356c6 4 277 82
+356ca 8 205 59
+356d2 4 1139 87
+356d6 2 206 59
+356d8 18 206 59
+356f0 e 206 59
+356fe 4 206 59
+35702 a 206 59
+3570c 6 206 59
+35712 8 206 59
+3571a 6 85 79
+35720 6 206 59
+35726 6 156 137
+3572c 6 256 82
+35732 2 1139 87
+35734 4 256 82
+35738 4 277 82
+3573c 4 1139 87
+35740 2 207 59
+35742 1a 207 59
+3575c e 207 59
+3576a 4 207 59
+3576e a 207 59
+35778 6 207 59
+3577e 8 207 59
+35786 6 85 79
+3578c 6 207 59
+35792 6 156 137
+35798 6 256 82
+3579e 6 209 59
+357a4 6 209 59
+357aa e 210 59
+357b8 2 88 58
+357ba 2 219 59
+357bc 8 1512 82
+357c4 2 219 59
+357c6 4 1512 82
+357ca 2 219 59
+357cc 8 218 59
+357d4 4 218 59
+357d8 4 218 59
+357dc 6 219 59
+357e2 2 1512 82
+357e4 4 219 59
+357e8 10 1512 82
+357f8 4 219 59
+357fc 6 302 82
+35802 10 219 59
+35812 6 219 59
+35818 8 219 59
+35820 6 85 79
+35826 6 219 59
+3582c 6 256 82
+35832 2 216 59
+35834 4 216 59
+35838 16 1512 82
+3584e 4 224 59
+35852 6 302 82
+35858 a 224 59
+35862 2 224 59
+35864 8 224 59
+3586c 6 224 59
+35872 8 224 59
+3587a 6 85 79
+35880 6 224 59
+35886 6 256 82
+3588c 9c 225 59
+FUNC 35928 20 0 google_breakpad::test_assembler::Label::Label
+35928 2 47 61
+3592a a 47 61
+35934 e 127 61
+35942 6 47 61
+FUNC 35948 20 0 google_breakpad::test_assembler::Label::Label
+35948 2 48 61
+3594a c 48 61
+35956 c 130 61
+35962 6 48 61
+FUNC 35968 c 0 google_breakpad::test_assembler::Label::Label
+35968 4 50 61
+3596c 6 180 62
+35972 2 52 61
+FUNC 35974 14 0 google_breakpad::test_assembler::Label::Binding::Binding
+35974 2 127 61
+35976 12 127 61
+FUNC 35988 10 0 google_breakpad::test_assembler::Label::Binding::Binding
+35988 2 129 61
+3598a e 130 61
+FUNC 35998 28 0 google_breakpad::test_assembler::Label::Binding::~Binding
+35998 2 132 61
+3599a 2 134 61
+3599c 2 132 61
+3599e 2 134 61
+359a0 4 134 61
+359a4 6 182 62
+359aa 2 134 61
+359ac 4 135 61
+359b0 6 135 61
+359b6 6 135 61
+359bc 4 136 61
+FUNC 359c0 22 0 google_breakpad::test_assembler::Label::~Label
+359c0 2 53 61
+359c2 2 54 61
+359c4 2 53 61
+359c6 6 182 62
+359cc 2 54 61
+359ce 4 54 61
+359d2 6 54 61
+359d8 6 54 61
+359de 4 55 61
+FUNC 359e2 66 0 google_breakpad::test_assembler::Label::Binding::Get
+359e2 4 186 61
+359e6 2 186 61
+359e8 2 187 61
+359ea 4 186 61
+359ee 2 187 61
+359f0 4 187 61
+359f4 8 194 61
+359fc 4 195 61
+35a00 6 180 62
+35a06 2 196 61
+35a08 6 182 62
+35a0e 2 196 61
+35a10 4 196 61
+35a14 6 196 61
+35a1a 6 196 61
+35a20 c 198 61
+35a2c 2 197 61
+35a2e 4 198 61
+35a32 2 197 61
+35a34 6 200 61
+35a3a 8 201 61
+35a42 6 202 61
+FUNC 35a48 28 0 google_breakpad::test_assembler::Label::IsKnownConstant
+35a48 2 104 61
+35a4a 2 104 61
+35a4c a 107 61
+35a56 4 108 61
+35a5a 2 109 61
+35a5c a 109 61
+35a66 4 108 61
+35a6a 2 110 61
+35a6c 4 111 61
+FUNC 35a70 1a 0 google_breakpad::test_assembler::Label::Value
+35a70 2 98 61
+35a72 a 99 61
+35a7c 4 100 61
+35a80 a 102 61
+FUNC 35a8a 44 0 google_breakpad::test_assembler::Label::IsKnownOffsetFrom
+35a8a 6 114 61
+35a90 2 117 61
+35a92 2 114 61
+35a94 8 117 61
+35a9c a 118 61
+35aa6 8 122 61
+35aae 2 123 61
+35ab0 14 123 61
+35ac4 4 122 61
+35ac8 2 124 61
+35aca 4 125 61
+FUNC 35ace 12 0 google_breakpad::test_assembler::Label::operator-
+35ace 2 92 61
+35ad0 6 94 61
+35ad6 a 96 61
+FUNC 35ae0 80 0 google_breakpad::test_assembler::Label::Binding::Set
+35ae0 4 138 61
+35ae4 2 139 61
+35ae6 2 138 61
+35ae8 6 138 61
+35aee 2 139 61
+35af0 4 139 61
+35af4 14 145 61
+35b08 2 147 61
+35b0a a 154 61
+35b14 8 155 61
+35b1c 6 163 61
+35b22 10 169 61
+35b32 2 171 61
+35b34 6 182 62
+35b3a 2 171 61
+35b3c 4 171 61
+35b40 6 171 61
+35b46 6 171 61
+35b4c 4 180 61
+35b50 6 180 62
+35b56 4 182 61
+35b5a 2 181 61
+35b5c 4 184 61
+FUNC 35b60 10 0 google_breakpad::test_assembler::Label::operator=
+35b60 2 57 61
+35b62 2 57 61
+35b64 8 58 61
+35b6c 4 60 61
+FUNC 35b70 14 0 google_breakpad::test_assembler::Label::operator=
+35b70 2 62 61
+35b72 2 62 61
+35b74 c 63 61
+35b80 4 65 61
+FUNC 35b84 1e 0 google_breakpad::test_assembler::Label::operator+
+35b84 2 67 61
+35b86 8 67 61
+35b8e 4 68 61
+35b92 c 69 61
+35b9e 4 71 61
+FUNC 35ba2 20 0 google_breakpad::test_assembler::Label::operator-
+35ba2 2 73 61
+35ba4 8 73 61
+35bac 4 74 61
+35bb0 e 75 61
+35bbe 4 77 61
+FUNC 35bc2 20 0 google_breakpad::test_assembler::Section::Align
+35bc2 2 324 61
+35bc4 2 324 61
+35bc6 8 400 136
+35bce 6 327 61
+35bd4 a 328 61
+35bde 4 331 61
+FUNC 35be2 44 0 google_breakpad::test_assembler::Section::LEB128
+35be2 2 303 61
+35be4 a 303 61
+35bee 10 304 61
+35bfe 4 305 61
+35c02 e 453 136
+35c10 8 307 61
+35c18 a 453 136
+35c22 4 313 61
+FUNC 35c26 3a 0 google_breakpad::test_assembler::Section::ULEB128
+35c26 2 315 61
+35c28 a 315 61
+35c32 8 316 61
+35c3a 4 317 61
+35c3e 8 453 136
+35c46 e 318 61
+35c54 8 453 136
+35c5c 4 322 61
+FUNC 35c60 5a 0 google_breakpad::test_assembler::InsertEndian<std::back_insert_iterator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >
+35c60 2 208 61
+35c62 4 205 61
+35c66 6 205 61
+35c6c 4 208 61
+35c70 4 209 61
+35c74 4 178 118
+35c78 6 211 61
+35c7e 4 178 118
+35c82 2 211 61
+35c84 e 209 61
+35c92 6 216 61
+35c98 4 216 61
+35c9c a 217 61
+35ca6 8 178 118
+35cae c 216 61
+FUNC 35cba 1c 0 google_breakpad::test_assembler::Section::Append
+35cba 2 221 61
+35cbc 2 221 61
+35cbe 4 223 61
+35cc2 e 223 61
+35cd0 6 225 61
+FUNC 35cd6 1a 0 google_breakpad::test_assembler::Section::L16
+35cd6 2 267 61
+35cd8 6 267 61
+35cde 2 267 61
+35ce0 2 267 61
+35ce2 8 267 61
+35cea 6 267 61
+FUNC 35cf0 1c 0 google_breakpad::test_assembler::Section::L32
+35cf0 2 268 61
+35cf2 8 268 61
+35cfa c 268 61
+35d06 6 268 61
+FUNC 35d0c 18 0 google_breakpad::test_assembler::Section::L64
+35d0c 2 269 61
+35d0e 6 269 61
+35d14 a 269 61
+35d1e 6 269 61
+FUNC 35d24 1a 0 google_breakpad::test_assembler::Section::B16
+35d24 2 270 61
+35d26 6 270 61
+35d2c 2 270 61
+35d2e 2 270 61
+35d30 8 270 61
+35d38 6 270 61
+FUNC 35d3e 1c 0 google_breakpad::test_assembler::Section::B32
+35d3e 2 271 61
+35d40 6 271 61
+35d46 2 271 61
+35d48 2 271 61
+35d4a a 271 61
+35d54 6 271 61
+FUNC 35d5a 18 0 google_breakpad::test_assembler::Section::B64
+35d5a 2 272 61
+35d5c 6 272 61
+35d62 a 272 61
+35d6c 6 272 61
+FUNC 35d72 1a 0 google_breakpad::test_assembler::Section::D16
+35d72 2 289 61
+35d74 6 289 61
+35d7a 2 289 61
+35d7c 2 289 61
+35d7e 8 289 61
+35d86 6 289 61
+FUNC 35d8c 1c 0 google_breakpad::test_assembler::Section::D32
+35d8c 2 290 61
+35d8e 6 290 61
+35d94 2 290 61
+35d96 2 290 61
+35d98 a 290 61
+35da2 6 290 61
+FUNC 35da8 18 0 google_breakpad::test_assembler::Section::D64
+35da8 2 291 61
+35daa 6 291 61
+35db0 a 291 61
+35dba 6 291 61
+FUNC 35dc0 20 0 std::priv::_Impl_vector<google_breakpad::test_assembler::Section::Reference, std::allocator<google_breakpad::test_assembler::Section::Reference> >::clear
+35dc0 6 650 144
+35dc6 2 630 144
+35dc8 2 650 144
+35dca 4 630 144
+35dce 4 449 62
+35dd2 2 191 108
+35dd4 4 449 62
+35dd8 4 191 108
+35ddc 4 615 144
+FUNC 35de0 1a 0 google_breakpad::test_assembler::Section::Clear
+35de0 2 333 61
+35de2 2 422 136
+35de4 2 228 148
+35de6 2 422 136
+35de8 6 232 145
+35dee 8 424 136
+35df6 4 228 148
+FUNC 35dfc b4 0 std::priv::_String_base<char, std::allocator<char> >::_M_swap
+35dfc 10 168 137
+35e0c 2 168 137
+35e0e 2 64 137
+35e10 4 170 137
+35e14 2 171 137
+35e16 2 64 137
+35e18 a 171 137
+35e22 a 91 105
+35e2c 8 92 105
+35e34 8 93 105
+35e3c 4 174 137
+35e40 2 173 137
+35e42 2 174 137
+35e44 2 175 137
+35e46 4 174 137
+35e4a 2 175 137
+35e4c 2 174 137
+35e4e 2 175 137
+35e50 2 178 137
+35e52 4 179 137
+35e56 2 64 137
+35e58 4 185 137
+35e5c 4 189 137
+35e60 4 188 137
+35e64 4 189 137
+35e68 2 192 137
+35e6a 2 193 137
+35e6c 4 187 137
+35e70 6 193 137
+35e76 4 194 137
+35e7a 2 195 137
+35e7c 6 196 137
+35e82 2 91 105
+35e84 4 92 105
+35e88 2 93 105
+35e8a 2 91 105
+35e8c 4 92 105
+35e90 2 93 105
+35e92 2 91 105
+35e94 4 92 105
+35e98 2 93 105
+35e9a 16 208 137
+FUNC 35eb0 ec 0 google_breakpad::test_assembler::Section::GetContents
+35eb0 8 338 61
+35eb8 4 341 61
+35ebc 2 338 61
+35ebe 4 344 61
+35ec2 a 192 144
+35ecc a 341 61
+35ed6 2 202 144
+35ed8 12 344 61
+35eea 14 345 61
+35efe c 350 61
+35f0a 2 208 61
+35f0c 2 350 61
+35f0e 2 208 61
+35f10 4 350 61
+35f14 4 208 61
+35f18 4 209 61
+35f1c 4 210 61
+35f20 10 211 61
+35f30 a 216 61
+35f3a 6 216 61
+35f40 a 217 61
+35f4a 2 216 61
+35f4c 4 217 61
+35f50 8 216 61
+35f58 a 341 61
+35f62 4 422 136
+35f66 4 942 136
+35f6a 2 422 136
+35f6c 6 232 145
+35f72 4 424 136
+35f76 2 942 136
+35f78 6 424 136
+35f7e 4 942 136
+35f82 8 228 148
+35f8a 2 355 61
+35f8c 10 356 61
+FUNC 35f9c 1bc 0 std::priv::_Impl_vector<google_breakpad::test_assembler::Section::Reference, std::allocator<google_breakpad::test_assembler::Section::Reference> >::_M_insert_overflow_aux
+35f9c 6 81 143
+35fa2 6 192 144
+35fa8 4 173 144
+35fac 2 81 143
+35fae 2 81 143
+35fb0 2 192 144
+35fb2 6 173 144
+35fb8 2 81 143
+35fba 2 173 144
+35fbc 8 41 143
+35fc4 a 175 144
+35fce 6 176 144
+35fd4 6 176 144
+35fda 4 176 144
+35fde 8 347 106
+35fe6 6 348 106
+35fec 4 352 106
+35ff0 6 91 143
+35ff6 a 86 142
+36000 6 86 142
+36006 6 139 108
+3600c 20 449 62
+3602c 12 86 142
+3603e a 93 143
+36048 2 119 108
+3604a 1e 449 62
+36068 6 95 143
+3606e 8 314 142
+36076 4 249 142
+3607a 8 449 62
+36082 6 249 142
+36088 4 139 108
+3608c 20 449 62
+360ac 8 249 142
+360b4 6 98 143
+360ba e 86 142
+360c8 6 86 142
+360ce 6 139 108
+360d4 20 449 62
+360f4 14 86 142
+36108 6 65 118
+3610e 2 74 118
+36110 4 191 108
+36114 a 449 62
+3611e 4 81 118
+36122 6 662 144
+36128 2 319 106
+3612a 4 161 106
+3612e 6 135 124
+36134 4 161 106
+36138 4 104 143
+3613c 4 667 144
+36140 2 668 144
+36142 6 105 143
+36148 6 346 106
+3614e a 356 106
+FUNC 36158 42 0 std::priv::_Impl_vector<google_breakpad::test_assembler::Section::Reference, std::allocator<google_breakpad::test_assembler::Section::Reference> >::push_back
+36158 2 376 144
+3615a 2 376 144
+3615c 4 380 144
+36160 2 376 144
+36162 4 380 144
+36166 2 119 108
+36168 18 449 62
+36180 8 382 144
+36188 e 162 144
+36196 4 388 144
+FUNC 3619a 6a 0 google_breakpad::test_assembler::Section::Append
+3619a 6 228 61
+361a0 4 228 61
+361a4 4 232 61
+361a8 4 228 61
+361ac c 232 61
+361b8 10 223 61
+361c8 2 233 61
+361ca 4 400 136
+361ce 2 453 62
+361d0 2 400 136
+361d2 10 453 62
+361e2 a 173 148
+361ec 6 449 62
+361f2 a 240 61
+361fc 8 242 61
+FUNC 36204 a 0 google_breakpad::test_assembler::Section::L8
+36204 a 265 61
+FUNC 3620e a 0 google_breakpad::test_assembler::Section::B8
+3620e a 266 61
+FUNC 36218 a 0 google_breakpad::test_assembler::Section::L16
+36218 a 267 61
+FUNC 36222 a 0 google_breakpad::test_assembler::Section::L32
+36222 a 268 61
+FUNC 3622c a 0 google_breakpad::test_assembler::Section::L64
+3622c a 269 61
+FUNC 36236 a 0 google_breakpad::test_assembler::Section::B16
+36236 a 270 61
+FUNC 36240 a 0 google_breakpad::test_assembler::Section::B32
+36240 a 271 61
+FUNC 3624a a 0 google_breakpad::test_assembler::Section::B64
+3624a a 272 61
+FUNC 36254 a 0 google_breakpad::test_assembler::Section::D8
+36254 a 288 61
+FUNC 3625e a 0 google_breakpad::test_assembler::Section::D16
+3625e a 289 61
+FUNC 36268 a 0 google_breakpad::test_assembler::Section::D32
+36268 a 290 61
+FUNC 36272 a 0 google_breakpad::test_assembler::Section::D64
+36272 a 291 61
+FUNC 3627c 130 0 google_breakpad::test_assembler::Section::Append
+3627c e 293 61
+3628a 2 197 135
+3628c 2 293 61
+3628e 2 293 61
+36290 4 400 136
+36294 4 295 61
+36298 2 197 135
+3629a 2 74 137
+3629c 4 74 137
+362a0 4 74 137
+362a4 4 198 135
+362a8 4 74 137
+362ac 2 74 137
+362ae 4 199 135
+362b2 8 200 135
+362ba 4 346 106
+362be 6 347 106
+362c4 4 348 106
+362c8 4 352 106
+362cc 4 348 106
+362d0 4 356 106
+362d4 14 86 142
+362e8 8 86 142
+362f0 1e 146 108
+3630e 8 86 142
+36316 6 146 108
+3631c 8 101 108
+36324 8 205 135
+3632c 4 206 135
+36330 2 160 137
+36332 2 164 137
+36334 8 165 137
+3633c 2 210 135
+3633e 6 86 142
+36344 8 86 142
+3634c 6 146 108
+36352 a 101 108
+3635c 2 232 145
+3635e 6 214 135
+36364 8 453 62
+3636c 4 173 148
+36370 a 296 61
+3637a 8 299 61
+36382 2 453 62
+36384 2 299 61
+36386 c 453 62
+36392 8 173 148
+3639a a 449 62
+363a4 8 301 61
+FUNC 363ac 158 0 google_breakpad::CopyFile
+363ac 16 44 64
+363c2 4 44 64
+363c6 e 45 64
+363d4 4 45 64
+363d8 6 45 64
+363de 6 47 64
+363e4 4 46 64
+363e8 10 51 64
+363f8 4 51 64
+363fc 6 51 64
+36402 8 53 64
+3640a a 54 64
+36414 4 54 64
+36418 6 54 64
+3641e 8 55 64
+36426 4 57 64
+3642a 4 65 64
+3642e 4 70 64
+36432 10 74 64
+36442 4 78 64
+36446 2 83 64
+36448 4 73 64
+3644c 12 64 64
+3645e 4 64 64
+36462 6 64 64
+36468 4 66 64
+3646c 6 79 64
+36472 a 87 64
+3647c c 91 64
+36488 10 97 64
+36498 4 52 64
+3649c 6 64 64
+364a2 4 87 64
+364a6 8 87 64
+364ae 4 91 64
+364b2 8 91 64
+364ba 6 54 64
+364c0 4 74 64
+364c4 6 74 64
+364ca a 79 64
+364d4 2 88 64
+364d6 2 89 64
+364d8 8 88 64
+364e0 24 97 64
+FUNC 36504 9c 0 google_breakpad::ReadFile
+36504 8 99 64
+3650c e 100 64
+3651a 4 100 64
+3651e 6 100 64
+36524 6 102 64
+3652a 2 107 64
+3652c 4 106 64
+36530 4 107 64
+36534 6 107 64
+3653a a 108 64
+36544 10 109 64
+36554 4 109 64
+36558 6 109 64
+3655e 2 109 64
+36560 4 110 64
+36564 2 111 64
+36566 2 112 64
+36568 6 111 64
+3656e a 115 64
+36578 4 115 64
+3657c a 115 64
+36586 8 116 64
+3658e 2 117 64
+36590 10 120 64
+FUNC 365a0 a0 0 google_breakpad::WriteFile
+365a0 a 122 64
+365aa 14 123 64
+365be 4 123 64
+365c2 6 123 64
+365c8 6 125 64
+365ce 2 130 64
+365d0 6 129 64
+365d6 4 134 64
+365da 16 136 64
+365f0 4 136 64
+365f4 6 136 64
+365fa 2 139 64
+365fc 2 140 64
+365fe 6 139 64
+36604 a 146 64
+3660e 4 146 64
+36612 c 146 64
+3661e 4 138 64
+36622 4 143 64
+36626 8 147 64
+3662e 2 148 64
+36630 10 151 64
+FUNC 36640 18 0 MinidumpMemoryRangeTest_GetAsciiMDString_Test::~MinidumpMemoryRangeTest_GetAsciiMDString_Test
+36640 2 224 78
+36642 16 224 78
+FUNC 36658 12 0 MinidumpMemoryRangeTest_GetAsciiMDString_Test::~MinidumpMemoryRangeTest_GetAsciiMDString_Test
+36658 2 224 78
+3665a 6 224 78
+36660 6 224 78
+36666 4 224 78
+FUNC 3666c 18 0 MinidumpMemoryRangeTest_GetArrayElmentWithTemplateType_Test::~MinidumpMemoryRangeTest_GetArrayElmentWithTemplateType_Test
+3666c 2 216 78
+3666e 16 216 78
+FUNC 36684 12 0 MinidumpMemoryRangeTest_GetArrayElmentWithTemplateType_Test::~MinidumpMemoryRangeTest_GetArrayElmentWithTemplateType_Test
+36684 2 216 78
+36686 6 216 78
+3668c 6 216 78
+36692 4 216 78
+FUNC 36698 18 0 MinidumpMemoryRangeTest_GetArrayElement_Test::~MinidumpMemoryRangeTest_GetArrayElement_Test
+36698 2 201 78
+3669a 16 201 78
+FUNC 366b0 12 0 MinidumpMemoryRangeTest_GetArrayElement_Test::~MinidumpMemoryRangeTest_GetArrayElement_Test
+366b0 2 201 78
+366b2 6 201 78
+366b8 6 201 78
+366be 4 201 78
+FUNC 366c4 18 0 MinidumpMemoryRangeTest_GetDataWithTemplateType_Test::~MinidumpMemoryRangeTest_GetDataWithTemplateType_Test
+366c4 2 193 78
+366c6 16 193 78
+FUNC 366dc 12 0 MinidumpMemoryRangeTest_GetDataWithTemplateType_Test::~MinidumpMemoryRangeTest_GetDataWithTemplateType_Test
+366dc 2 193 78
+366de 6 193 78
+366e4 6 193 78
+366ea 4 193 78
+FUNC 366f0 18 0 MinidumpMemoryRangeTest_SubrangeWithMDLocationDescriptor_Test::~MinidumpMemoryRangeTest_SubrangeWithMDLocationDescriptor_Test
+366f0 2 165 78
+366f2 16 165 78
+FUNC 36708 12 0 MinidumpMemoryRangeTest_SubrangeWithMDLocationDescriptor_Test::~MinidumpMemoryRangeTest_SubrangeWithMDLocationDescriptor_Test
+36708 2 165 78
+3670a 6 165 78
+36710 6 165 78
+36716 4 165 78
+FUNC 3671c 18 0 MinidumpMemoryRangeTest_SubrangeAndGetData_Test::~MinidumpMemoryRangeTest_SubrangeAndGetData_Test
+3671c 2 140 78
+3671e 16 140 78
+FUNC 36734 12 0 MinidumpMemoryRangeTest_SubrangeAndGetData_Test::~MinidumpMemoryRangeTest_SubrangeAndGetData_Test
+36734 2 140 78
+36736 6 140 78
+3673c 6 140 78
+36742 4 140 78
+FUNC 36748 18 0 MinidumpMemoryRangeTest_SubrangeOfEmptyMemoryRange_Test::~MinidumpMemoryRangeTest_SubrangeOfEmptyMemoryRange_Test
+36748 2 133 78
+3674a 16 133 78
+FUNC 36760 12 0 MinidumpMemoryRangeTest_SubrangeOfEmptyMemoryRange_Test::~MinidumpMemoryRangeTest_SubrangeOfEmptyMemoryRange_Test
+36760 2 133 78
+36762 6 133 78
+36768 6 133 78
+3676e 4 133 78
+FUNC 36774 18 0 MinidumpMemoryRangeTest_Set_Test::~MinidumpMemoryRangeTest_Set_Test
+36774 2 122 78
+36776 16 122 78
+FUNC 3678c 12 0 MinidumpMemoryRangeTest_Set_Test::~MinidumpMemoryRangeTest_Set_Test
+3678c 2 122 78
+3678e 6 122 78
+36794 6 122 78
+3679a 4 122 78
+FUNC 367a0 18 0 MinidumpMemoryRangeTest_Reset_Test::~MinidumpMemoryRangeTest_Reset_Test
+367a0 2 107 78
+367a2 16 107 78
+FUNC 367b8 12 0 MinidumpMemoryRangeTest_Reset_Test::~MinidumpMemoryRangeTest_Reset_Test
+367b8 2 107 78
+367ba 6 107 78
+367c0 6 107 78
+367c6 4 107 78
+FUNC 367cc 18 0 MinidumpMemoryRangeTest_ConstructorWithDataAndLength_Test::~MinidumpMemoryRangeTest_ConstructorWithDataAndLength_Test
+367cc 2 101 78
+367ce 16 101 78
+FUNC 367e4 12 0 MinidumpMemoryRangeTest_ConstructorWithDataAndLength_Test::~MinidumpMemoryRangeTest_ConstructorWithDataAndLength_Test
+367e4 2 101 78
+367e6 6 101 78
+367ec 6 101 78
+367f2 4 101 78
+FUNC 367f8 18 0 MinidumpMemoryRangeTest_DefaultConstructor_Test::~MinidumpMemoryRangeTest_DefaultConstructor_Test
+367f8 2 95 78
+367fa 16 95 78
+FUNC 36810 12 0 MinidumpMemoryRangeTest_DefaultConstructor_Test::~MinidumpMemoryRangeTest_DefaultConstructor_Test
+36810 2 95 78
+36812 6 95 78
+36818 6 95 78
+3681e 4 95 78
+FUNC 36824 20 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_GetAsciiMDString_Test>::CreateTest
+36824 2 486 85
+36826 8 486 85
+3682e 6 224 78
+36834 2 486 85
+36836 6 224 78
+3683c 8 486 85
+FUNC 36844 20 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_GetArrayElmentWithTemplateType_Test>::CreateTest
+36844 2 486 85
+36846 8 486 85
+3684e 6 216 78
+36854 2 486 85
+36856 6 216 78
+3685c 8 486 85
+FUNC 36864 20 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_GetArrayElement_Test>::CreateTest
+36864 2 486 85
+36866 8 486 85
+3686e 6 201 78
+36874 2 486 85
+36876 6 201 78
+3687c 8 486 85
+FUNC 36884 20 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_GetDataWithTemplateType_Test>::CreateTest
+36884 2 486 85
+36886 8 486 85
+3688e 6 193 78
+36894 2 486 85
+36896 6 193 78
+3689c 8 486 85
+FUNC 368a4 20 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_SubrangeWithMDLocationDescriptor_Test>::CreateTest
+368a4 2 486 85
+368a6 8 486 85
+368ae 6 165 78
+368b4 2 486 85
+368b6 6 165 78
+368bc 8 486 85
+FUNC 368c4 20 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_SubrangeAndGetData_Test>::CreateTest
+368c4 2 486 85
+368c6 8 486 85
+368ce 6 140 78
+368d4 2 486 85
+368d6 6 140 78
+368dc 8 486 85
+FUNC 368e4 20 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_SubrangeOfEmptyMemoryRange_Test>::CreateTest
+368e4 2 486 85
+368e6 8 486 85
+368ee 6 133 78
+368f4 2 486 85
+368f6 6 133 78
+368fc 8 486 85
+FUNC 36904 20 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_Set_Test>::CreateTest
+36904 2 486 85
+36906 8 486 85
+3690e 6 122 78
+36914 2 486 85
+36916 6 122 78
+3691c 8 486 85
+FUNC 36924 20 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_Reset_Test>::CreateTest
+36924 2 486 85
+36926 8 486 85
+3692e 6 107 78
+36934 2 486 85
+36936 6 107 78
+3693c 8 486 85
+FUNC 36944 20 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_ConstructorWithDataAndLength_Test>::CreateTest
+36944 2 486 85
+36946 8 486 85
+3694e 6 101 78
+36954 2 486 85
+36956 6 101 78
+3695c 8 486 85
+FUNC 36964 20 0 testing::internal::TestFactoryImpl<MinidumpMemoryRangeTest_DefaultConstructor_Test>::CreateTest
+36964 2 486 85
+36966 8 486 85
+3696e 6 95 78
+36974 2 486 85
+36976 6 95 78
+3697c 8 486 85
+FUNC 36984 18 0 google_breakpad::MemoryRange::GetData
+36984 2 90 55
+36986 4 83 55
+3698a 4 82 55
+3698e 4 83 55
+36992 4 91 55
+36996 4 91 55
+3699a 2 92 55
+FUNC 3699c 26 0 google_breakpad::MemoryRange::Subrange
+3699c 4 124 55
+369a0 4 83 55
+369a4 4 82 55
+369a8 4 83 55
+369ac 4 126 55
+369b0 2 72 55
+369b2 2 70 55
+369b4 6 72 55
+369ba 6 50 55
+369c0 2 127 55
+FUNC 3699c 26 0 google_breakpad::MinidumpMemoryRange::Subrange
+3699c 4 59 77
+369a0 4 83 55
+369a4 4 82 55
+369a8 4 83 55
+369ac 4 61 77
+369b0 2 72 55
+369b2 2 70 55
+369b4 6 72 55
+369ba 6 50 55
+369c0 2 63 77
+FUNC 369c2 44 0 google_breakpad::MinidumpMemoryRange::GetAsciiMDString
+369c2 2 74 77
+369c4 6 74 77
+369ca 2 101 108
+369cc 2 120 137
+369ce 2 481 106
+369d0 8 124 137
+369d8 2 99 55
+369da 2 101 108
+369dc 8 99 55
+369e4 4 77 77
+369e8 2 78 77
+369ea 6 79 77
+369f0 6 79 77
+369f6 8 80 77
+369fe 4 79 77
+36a02 4 84 77
+FUNC 36a08 98 0 testing::PrintToString<char const*>
+36a08 e 883 80
+36a16 2 883 80
+36a18 4 884 80
+36a1c 2 883 80
+36a1e 4 884 80
+36a22 2 883 80
+36a24 4 884 80
+36a28 8 885 80
+36a30 2 708 80
+36a32 c 333 127
+36a3e 2 112 137
+36a40 2 229 145
+36a42 2 112 137
+36a44 2 481 106
+36a46 6 229 145
+36a4c 4 643 135
+36a50 8 379 136
+36a58 a 148 142
+36a62 2 101 108
+36a64 2 380 136
+36a66 2 469 80
+36a68 2 101 108
+36a6a 6 469 80
+36a70 6 156 137
+36a76 8 75 132
+36a7e 6 886 80
+36a84 1c 887 80
+FUNC 36aa0 2c 0 testing::internal::DefaultPrintTo<int const>
+36aa0 2 307 80
+36aa2 2 307 80
+36aa4 4 310 80
+36aa8 4 334 80
+36aac a 333 127
+36ab6 6 318 80
+36abc 4 291 126
+36ac0 4 334 80
+36ac4 8 291 126
+FUNC 36aa0 2c 0 testing::internal::DefaultPrintTo<void const>
+FUNC 36acc c8 0 testing::operator<<
+36acc e 232 79
+36ada 2 232 79
+36adc 6 233 79
+36ae2 2 232 79
+36ae4 4 233 79
+36ae8 c 181 127
+36af4 2 41 138
+36af6 10 62 138
+36b06 2 139 115
+36b08 6 400 136
+36b0e e 44 138
+36b1c 2 138 115
+36b1e 2 139 115
+36b20 2 46 138
+36b22 e 49 138
+36b30 6 52 138
+36b36 a 55 138
+36b40 6 55 138
+36b46 a 53 138
+36b50 6 55 138
+36b56 6 57 138
+36b5c a 58 138
+36b66 4 58 138
+36b6a 6 64 138
+36b70 6 156 137
+36b76 e 234 79
+36b84 4 50 138
+36b88 c 234 79
+FUNC 36b94 a0 0 testing::internal::CmpHelperEQFailure<int const*, int const*>
+36b94 e 1464 82
+36ba2 2 1464 82
+36ba4 2 884 80
+36ba6 6 1464 82
+36bac 4 380 80
+36bb0 2 1464 82
+36bb2 4 884 80
+36bb6 4 1464 82
+36bba 2 75 132
+36bbc 4 884 80
+36bc0 4 380 80
+36bc4 2 75 132
+36bc6 4 380 80
+36bca 8 75 132
+36bd2 6 886 80
+36bd8 8 884 80
+36be0 6 380 80
+36be6 4 75 132
+36bea 4 380 80
+36bee 8 75 132
+36bf6 6 886 80
+36bfc 14 1471 82
+36c10 c 156 137
+36c1c 18 1472 82
+FUNC 36c34 28 0 std::operator==<char, std::char_traits<char>, std::allocator<char> >
+36c34 2 311 139
+36c36 4 311 139
+36c3a 6 229 145
+36c40 2 400 136
+36c42 2 229 145
+36c44 2 400 136
+36c46 4 315 139
+36c4a 6 226 145
+36c50 8 315 139
+36c58 2 315 139
+36c5a 2 316 139
+FUNC 36c5c 98 0 testing::internal::CmpHelperEQ<char [1], std::basic_string<char, std::char_traits<char>, std::allocator<char> > >
+36c5c e 1476 82
+36c6a a 1476 82
+36c74 4 1481 82
+36c78 4 1476 82
+36c7c 8 1481 82
+36c84 a 1482 82
+36c8e 6 1427 82
+36c94 4 884 80
+36c98 4 1427 82
+36c9c 8 884 80
+36ca4 4 469 80
+36ca8 4 75 132
+36cac 4 469 80
+36cb0 8 75 132
+36cb8 6 886 80
+36cbe 12 1471 82
+36cd0 c 156 137
+36cdc 18 1488 82
+FUNC 36cf4 308 0 MinidumpMemoryRangeTest_GetAsciiMDString_Test::TestBody
+36cf4 6 224 78
+36cfa 2 225 78
+36cfc 6 224 78
+36d02 2 225 78
+36d04 2 224 78
+36d06 6 225 78
+36d0c 2 224 78
+36d0e 4 225 78
+36d12 4 228 78
+36d16 4 229 78
+36d1a 4 230 78
+36d1e 4 231 78
+36d22 4 232 78
+36d26 2 241 78
+36d28 4 242 78
+36d2c 4 243 78
+36d30 4 244 78
+36d34 2 245 78
+36d36 2 239 78
+36d38 2 245 78
+36d3a 2 247 78
+36d3c 2 239 78
+36d3e 2 240 78
+36d40 2 239 78
+36d42 2 247 78
+36d44 2 248 78
+36d46 2 70 55
+36d48 4 1481 82
+36d4c 4 72 55
+36d50 2 251 78
+36d52 2 240 78
+36d54 4 251 78
+36d58 2 1481 82
+36d5a 2 239 78
+36d5c 2 248 78
+36d5e 4 251 78
+36d62 12 1481 82
+36d74 e 1482 82
+36d82 a 1427 82
+36d8c 8 884 80
+36d94 4 75 132
+36d98 8 469 80
+36da0 8 75 132
+36da8 6 886 80
+36dae 18 1471 82
+36dc6 12 156 137
+36dd8 4 251 78
+36ddc 6 302 82
+36de2 c 251 78
+36dee 4 251 78
+36df2 8 251 78
+36dfa 6 251 78
+36e00 8 251 78
+36e08 6 85 79
+36e0e 6 251 78
+36e14 4 256 82
+36e18 4 1481 82
+36e1c 6 256 82
+36e22 2 1481 82
+36e24 a 252 78
+36e2e c 1481 82
+36e3a e 1482 82
+36e48 a 1427 82
+36e52 8 884 80
+36e5a 4 75 132
+36e5e 8 469 80
+36e66 8 75 132
+36e6e 6 886 80
+36e74 14 1471 82
+36e88 12 156 137
+36e9a 4 252 78
+36e9e 6 302 82
+36ea4 a 252 78
+36eae 4 252 78
+36eb2 8 252 78
+36eba 6 252 78
+36ec0 8 252 78
+36ec8 6 85 79
+36ece 6 252 78
+36ed4 6 256 82
+36eda a 255 78
+36ee4 14 1512 82
+36ef8 6 156 137
+36efe 4 255 78
+36f02 6 302 82
+36f08 c 255 78
+36f14 4 255 78
+36f18 8 255 78
+36f20 6 255 78
+36f26 8 256 78
+36f2e 6 85 79
+36f34 6 255 78
+36f3a 6 256 82
+36f40 a 257 78
+36f4a 14 1512 82
+36f5e 6 156 137
+36f64 4 257 78
+36f68 6 302 82
+36f6e c 257 78
+36f7a 2 257 78
+36f7c 8 257 78
+36f84 6 257 78
+36f8a 8 257 78
+36f92 6 85 79
+36f98 6 257 78
+36f9e 6 256 82
+36fa4 58 258 78
+FUNC 36ffc 48 0 testing::PrintToString<unsigned char const*>
+36ffc e 883 80
+3700a 2 883 80
+3700c 6 884 80
+37012 2 883 80
+37014 4 884 80
+37018 8 380 80
+37020 8 75 132
+37028 6 886 80
+3702e 16 887 80
+FUNC 37044 74 0 testing::internal::CmpHelperEQ<unsigned char const*, unsigned char const*>
+37044 8 1476 82
+3704c c 1476 82
+37058 2 1481 82
+3705a 2 1476 82
+3705c 4 1481 82
+37060 2 1476 82
+37062 2 1481 82
+37064 2 1476 82
+37066 2 1481 82
+37068 6 1482 82
+3706e 14 1382 82
+37082 12 1471 82
+37094 c 156 137
+370a0 18 1488 82
+FUNC 370b8 e0 0 MinidumpMemoryRangeTest_ConstructorWithDataAndLength_Test::TestBody
+370b8 2 101 78
+370ba 2 103 78
+370bc 2 101 78
+370be 4 103 78
+370c2 18 1512 82
+370da 6 103 78
+370e0 6 302 82
+370e6 12 103 78
+370f8 6 103 78
+370fe 8 103 78
+37106 6 85 79
+3710c 6 103 78
+37112 8 256 82
+3711a 2 104 78
+3711c 2 1512 82
+3711e 2 104 78
+37120 12 1512 82
+37132 6 104 78
+37138 6 302 82
+3713e 12 104 78
+37150 6 104 78
+37156 8 104 78
+3715e 6 85 79
+37164 6 104 78
+3716a 6 256 82
+37170 28 105 78
+FUNC 37198 d4 0 MinidumpMemoryRangeTest_DefaultConstructor_Test::TestBody
+37198 4 95 78
+3719c 2 1571 82
+3719e 2 95 78
+371a0 1a 1571 82
+371ba 8 97 78
+371c2 6 302 82
+371c8 10 97 78
+371d8 6 97 78
+371de 8 97 78
+371e6 6 85 79
+371ec 6 97 78
+371f2 8 256 82
+371fa 2 98 78
+371fc 4 1552 82
+37200 4 98 78
+37204 e 1552 82
+37212 6 98 78
+37218 6 302 82
+3721e 10 98 78
+3722e 6 98 78
+37234 8 98 78
+3723c 6 85 79
+37242 6 98 78
+37248 6 256 82
+3724e 1e 99 78
+FUNC 3726c e8 0 MinidumpMemoryRangeTest_SubrangeOfEmptyMemoryRange_Test::TestBody
+3726c 2 133 78
+3726e 2 50 55
+37270 2 133 78
+37272 8 135 78
+3727a 4 50 55
+3727e 6 135 78
+37284 1c 1571 82
+372a0 8 136 78
+372a8 6 302 82
+372ae 10 136 78
+372be 6 136 78
+372c4 8 136 78
+372cc 6 85 79
+372d2 6 136 78
+372d8 8 256 82
+372e0 2 137 78
+372e2 2 1552 82
+372e4 2 137 78
+372e6 2 1552 82
+372e8 2 137 78
+372ea 2 1552 82
+372ec 2 137 78
+372ee c 1552 82
+372fa 6 137 78
+37300 6 302 82
+37306 10 137 78
+37316 6 137 78
+3731c 8 137 78
+37324 6 85 79
+3732a 6 137 78
+37330 6 256 82
+37336 1e 138 78
+FUNC 37354 1a0 0 MinidumpMemoryRangeTest_Set_Test::TestBody
+37354 2 122 78
+37356 2 125 78
+37358 2 122 78
+3735a 4 125 78
+3735e 18 1512 82
+37376 8 125 78
+3737e 6 302 82
+37384 10 125 78
+37394 6 125 78
+3739a 8 125 78
+373a2 6 85 79
+373a8 6 125 78
+373ae 8 256 82
+373b6 2 126 78
+373b8 2 1512 82
+373ba 2 126 78
+373bc 12 1512 82
+373ce 6 126 78
+373d4 6 302 82
+373da 10 126 78
+373ea 6 126 78
+373f0 8 126 78
+373f8 6 85 79
+373fe 6 126 78
+37404 8 256 82
+3740c 16 1571 82
+37422 8 129 78
+3742a 6 302 82
+37430 10 129 78
+37440 6 129 78
+37446 8 129 78
+3744e 6 85 79
+37454 6 129 78
+3745a 6 256 82
+37460 2 130 78
+37462 4 1552 82
+37466 4 130 78
+3746a e 1552 82
+37478 6 130 78
+3747e 6 302 82
+37484 10 130 78
+37494 6 130 78
+3749a 8 130 78
+374a2 6 85 79
+374a8 6 130 78
+374ae 6 256 82
+374b4 40 131 78
+FUNC 374f4 264 0 MinidumpMemoryRangeTest_Reset_Test::TestBody
+374f4 4 107 78
+374f8 2 1571 82
+374fa 2 107 78
+374fc 1a 1571 82
+37516 8 110 78
+3751e 6 302 82
+37524 10 110 78
+37534 6 110 78
+3753a 8 110 78
+37542 6 85 79
+37548 6 110 78
+3754e 8 256 82
+37556 2 111 78
+37558 4 1552 82
+3755c 4 111 78
+37560 e 1552 82
+3756e 6 111 78
+37574 6 302 82
+3757a 10 111 78
+3758a 6 111 78
+37590 8 111 78
+37598 6 85 79
+3759e 6 111 78
+375a4 6 256 82
+375aa 2 114 78
+375ac 2 1512 82
+375ae 4 114 78
+375b2 12 1512 82
+375c4 6 114 78
+375ca 6 302 82
+375d0 10 114 78
+375e0 6 114 78
+375e6 8 114 78
+375ee 6 85 79
+375f4 6 114 78
+375fa 6 256 82
+37600 2 115 78
+37602 2 1512 82
+37604 2 115 78
+37606 12 1512 82
+37618 6 115 78
+3761e 6 302 82
+37624 10 115 78
+37634 6 115 78
+3763a 8 115 78
+37642 6 85 79
+37648 6 115 78
+3764e 8 256 82
+37656 16 1571 82
+3766c 8 118 78
+37674 6 302 82
+3767a 10 118 78
+3768a 6 118 78
+37690 8 118 78
+37698 6 85 79
+3769e 6 118 78
+376a4 6 256 82
+376aa 2 119 78
+376ac 4 1552 82
+376b0 4 119 78
+376b4 e 1552 82
+376c2 6 119 78
+376c8 6 302 82
+376ce 10 119 78
+376de 6 119 78
+376e4 8 119 78
+376ec 6 85 79
+376f2 6 119 78
+376f8 6 256 82
+376fe 5a 120 78
+FUNC 37758 74 0 testing::internal::CmpHelperEQ<unsigned char const*, void const*>
+37758 8 1476 82
+37760 c 1476 82
+3776c 2 1481 82
+3776e 2 1476 82
+37770 4 1481 82
+37774 2 1476 82
+37776 2 1481 82
+37778 2 1476 82
+3777a 2 1481 82
+3777c 6 1482 82
+37782 14 1382 82
+37796 12 1471 82
+377a8 c 156 137
+377b4 18 1488 82
+FUNC 377cc 74 0 testing::internal::CmpHelperEQ<void const*, void const*>
+377cc 8 1476 82
+377d4 c 1476 82
+377e0 2 1481 82
+377e2 2 1476 82
+377e4 4 1481 82
+377e8 2 1476 82
+377ea 2 1481 82
+377ec 2 1476 82
+377ee 2 1481 82
+377f0 6 1482 82
+377f6 14 1382 82
+3780a 12 1471 82
+3781c c 156 137
+37828 18 1488 82
+FUNC 37840 148 0 MinidumpMemoryRangeTest_GetArrayElement_Test::TestBody
+37840 4 201 78
+37844 2 70 55
+37846 2 201 78
+37848 4 70 55
+3784c 6 72 55
+37852 c 208 78
+3785e 2 333 127
+37860 2 208 78
+37862 10 333 127
+37872 c 1512 82
+3787e 2 207 78
+37880 4 206 78
+37884 2 208 78
+37886 2 208 78
+37888 2 208 78
+3788a 2 207 78
+3788c 4 204 78
+37890 4 208 78
+37894 6 208 78
+3789a a 333 127
+378a4 a 254 126
+378ae a 333 127
+378b8 a 254 126
+378c2 a 333 127
+378cc a 254 126
+378d6 6 131 79
+378dc 4 208 78
+378e0 4 131 79
+378e4 c 208 78
+378f0 c 85 79
+378fc c 109 55
+37908 2 1512 82
+3790a 2 211 78
+3790c c 1512 82
+37918 6 211 78
+3791e 6 302 82
+37924 10 211 78
+37934 6 211 78
+3793a 8 212 78
+37942 6 85 79
+37948 6 211 78
+3794e 6 256 82
+37954 6 213 78
+3795a 8 203 78
+37962 26 214 78
+FUNC 37988 490 0 MinidumpMemoryRangeTest_SubrangeWithMDLocationDescriptor_Test::TestBody
+37988 10 165 78
+37998 2 165 78
+3799a 2 70 55
+3799c 2 72 55
+3799e 4 70 55
+379a2 4 72 55
+379a6 2 168 78
+379a8 2 72 55
+379aa 4 168 78
+379ae c 333 127
+379ba 6 171 78
+379c0 c 1571 82
+379cc 2 168 78
+379ce 2 171 78
+379d0 6 168 78
+379d6 2 169 78
+379d8 2 170 78
+379da 2 171 78
+379dc 2 171 78
+379de 2 170 78
+379e0 4 171 78
+379e4 6 171 78
+379ea a 333 127
+379f4 a 254 126
+379fe a 333 127
+37a08 a 254 126
+37a12 6 131 79
+37a18 4 171 78
+37a1c 4 131 79
+37a20 c 171 78
+37a2c 6 85 79
+37a32 4 68 77
+37a36 6 85 79
+37a3c 12 68 77
+37a4e 8 178 78
+37a56 4 83 55
+37a5a 4 82 55
+37a5e a 83 55
+37a68 2 83 55
+37a6a 2 1139 87
+37a6c 4 277 82
+37a70 2 1139 87
+37a72 2 179 78
+37a74 1a 179 78
+37a8e 8 179 78
+37a96 4 179 78
+37a9a a 179 78
+37aa4 6 179 78
+37aaa 8 179 78
+37ab2 6 85 79
+37ab8 6 179 78
+37abe 6 156 137
+37ac4 6 256 82
+37aca 14 180 78
+37ade a 1512 82
+37ae8 2 180 78
+37aea e 1512 82
+37af8 6 180 78
+37afe 6 302 82
+37b04 10 180 78
+37b14 6 180 78
+37b1a 8 181 78
+37b22 6 85 79
+37b28 6 180 78
+37b2e a 256 82
+37b38 2 182 78
+37b3a 2 1512 82
+37b3c 4 182 78
+37b40 2 1512 82
+37b42 4 182 78
+37b46 2 1512 82
+37b48 2 182 78
+37b4a 8 1512 82
+37b52 2 182 78
+37b54 4 1512 82
+37b58 6 182 78
+37b5e 6 302 82
+37b64 10 182 78
+37b74 6 182 78
+37b7a 8 182 78
+37b82 6 85 79
+37b88 6 182 78
+37b8e 6 256 82
+37b94 2 183 78
+37b96 4 1512 82
+37b9a 2 183 78
+37b9c e 1512 82
+37baa 6 183 78
+37bb0 6 302 82
+37bb6 10 183 78
+37bc6 6 183 78
+37bcc 8 183 78
+37bd4 6 85 79
+37bda 6 183 78
+37be0 4 256 82
+37be4 4 83 55
+37be8 4 82 55
+37bec c 83 55
+37bf8 2 1139 87
+37bfa 4 185 78
+37bfe 4 277 82
+37c02 2 1139 87
+37c04 2 185 78
+37c06 1a 185 78
+37c20 8 185 78
+37c28 4 185 78
+37c2c a 185 78
+37c36 6 185 78
+37c3c 8 185 78
+37c44 6 85 79
+37c4a 6 185 78
+37c50 6 156 137
+37c56 a 256 82
+37c60 a 186 78
+37c6a 1a 1571 82
+37c84 6 186 78
+37c8a 6 302 82
+37c90 10 186 78
+37ca0 6 186 78
+37ca6 8 186 78
+37cae 6 85 79
+37cb4 6 186 78
+37cba 8 256 82
+37cc2 1a 1571 82
+37cdc 6 187 78
+37ce2 6 302 82
+37ce8 10 187 78
+37cf8 6 187 78
+37cfe 8 187 78
+37d06 6 85 79
+37d0c 6 187 78
+37d12 6 256 82
+37d18 2 188 78
+37d1a 2 1552 82
+37d1c 2 188 78
+37d1e 2 1552 82
+37d20 2 188 78
+37d22 2 1552 82
+37d24 2 188 78
+37d26 c 1552 82
+37d32 6 188 78
+37d38 6 302 82
+37d3e 10 188 78
+37d4e 6 188 78
+37d54 8 188 78
+37d5c 6 85 79
+37d62 6 188 78
+37d68 8 256 82
+37d70 6 190 78
+37d76 6 167 78
+37d7c 9c 191 78
+FUNC 37e18 490 0 MinidumpMemoryRangeTest_SubrangeAndGetData_Test::TestBody
+37e18 10 140 78
+37e28 2 140 78
+37e2a 2 70 55
+37e2c 2 72 55
+37e2e 4 70 55
+37e32 4 72 55
+37e36 2 143 78
+37e38 2 72 55
+37e3a 4 143 78
+37e3e c 333 127
+37e4a 6 146 78
+37e50 c 1571 82
+37e5c 2 143 78
+37e5e 2 146 78
+37e60 6 143 78
+37e66 2 144 78
+37e68 2 145 78
+37e6a 2 146 78
+37e6c 2 146 78
+37e6e 2 145 78
+37e70 4 146 78
+37e74 6 146 78
+37e7a a 333 127
+37e84 a 254 126
+37e8e a 333 127
+37e98 a 254 126
+37ea2 6 131 79
+37ea8 4 146 78
+37eac 4 131 79
+37eb0 c 146 78
+37ebc 6 85 79
+37ec2 4 149 78
+37ec6 6 85 79
+37ecc 12 149 78
+37ede 8 150 78
+37ee6 4 83 55
+37eea 4 82 55
+37eee a 83 55
+37ef8 2 83 55
+37efa 2 1139 87
+37efc 4 277 82
+37f00 2 1139 87
+37f02 2 151 78
+37f04 1a 151 78
+37f1e 8 151 78
+37f26 4 151 78
+37f2a a 151 78
+37f34 6 151 78
+37f3a 8 151 78
+37f42 6 85 79
+37f48 6 151 78
+37f4e 6 156 137
+37f54 6 256 82
+37f5a 14 152 78
+37f6e a 1512 82
+37f78 2 152 78
+37f7a e 1512 82
+37f88 6 152 78
+37f8e 6 302 82
+37f94 10 152 78
+37fa4 6 152 78
+37faa 8 153 78
+37fb2 6 85 79
+37fb8 6 152 78
+37fbe a 256 82
+37fc8 2 154 78
+37fca 2 1512 82
+37fcc 4 154 78
+37fd0 2 1512 82
+37fd2 4 154 78
+37fd6 2 1512 82
+37fd8 2 154 78
+37fda 8 1512 82
+37fe2 2 154 78
+37fe4 4 1512 82
+37fe8 6 154 78
+37fee 6 302 82
+37ff4 10 154 78
+38004 6 154 78
+3800a 8 154 78
+38012 6 85 79
+38018 6 154 78
+3801e 6 256 82
+38024 2 155 78
+38026 4 1512 82
+3802a 2 155 78
+3802c e 1512 82
+3803a 6 155 78
+38040 6 302 82
+38046 10 155 78
+38056 6 155 78
+3805c 8 155 78
+38064 6 85 79
+3806a 6 155 78
+38070 4 256 82
+38074 4 83 55
+38078 4 82 55
+3807c c 83 55
+38088 2 1139 87
+3808a 4 157 78
+3808e 4 277 82
+38092 2 1139 87
+38094 2 157 78
+38096 1a 157 78
+380b0 8 157 78
+380b8 4 157 78
+380bc a 157 78
+380c6 6 157 78
+380cc 8 157 78
+380d4 6 85 79
+380da 6 157 78
+380e0 6 156 137
+380e6 a 256 82
+380f0 a 158 78
+380fa 1a 1571 82
+38114 6 158 78
+3811a 6 302 82
+38120 10 158 78
+38130 6 158 78
+38136 8 158 78
+3813e 6 85 79
+38144 6 158 78
+3814a 8 256 82
+38152 1a 1571 82
+3816c 6 159 78
+38172 6 302 82
+38178 10 159 78
+38188 6 159 78
+3818e 8 159 78
+38196 6 85 79
+3819c 6 159 78
+381a2 6 256 82
+381a8 2 160 78
+381aa 2 1552 82
+381ac 2 160 78
+381ae 2 1552 82
+381b0 2 160 78
+381b2 2 1552 82
+381b4 2 160 78
+381b6 c 1552 82
+381c2 6 160 78
+381c8 6 302 82
+381ce 10 160 78
+381de 6 160 78
+381e4 8 160 78
+381ec 6 85 79
+381f2 6 160 78
+381f8 8 256 82
+38200 6 162 78
+38206 6 142 78
+3820c 9c 163 78
+FUNC 382a8 6c 0 testing::internal::CmpHelperEQFailure<char const*, char const*>
+382a8 8 1464 82
+382b0 6 1464 82
+382b6 4 1408 82
+382ba 2 1464 82
+382bc 2 1408 82
+382be 6 1464 82
+382c4 4 1408 82
+382c8 2 1464 82
+382ca 14 1408 82
+382de 12 1471 82
+382f0 c 156 137
+382fc 18 1472 82
+FUNC 38314 124 0 MinidumpMemoryRangeTest_GetArrayElmentWithTemplateType_Test::TestBody
+38314 2 216 78
+38316 2 70 55
+38318 2 216 78
+3831a 4 70 55
+3831e 2 72 55
+38320 8 109 55
+38328 2 72 55
+3832a 4 109 55
+3832e 2 219 78
+38330 2 218 78
+38332 6 219 78
+38338 2 1481 82
+3833a 2 219 78
+3833c 2 1481 82
+3833e 8 1482 82
+38346 14 1487 82
+3835a 6 219 78
+38360 6 302 82
+38366 a 219 78
+38370 2 219 78
+38372 8 219 78
+3837a 6 219 78
+38380 8 219 78
+38388 6 85 79
+3838e 6 219 78
+38394 8 256 82
+3839c a 109 55
+383a6 2 221 78
+383a8 2 220 78
+383aa 4 221 78
+383ae 2 1481 82
+383b0 2 221 78
+383b2 2 1481 82
+383b4 8 1482 82
+383bc 14 1487 82
+383d0 6 221 78
+383d6 6 302 82
+383dc a 221 78
+383e6 2 221 78
+383e8 8 221 78
+383f0 6 221 78
+383f6 8 221 78
+383fe 6 85 79
+38404 6 221 78
+3840a 6 256 82
+38410 28 222 78
+FUNC 38438 124 0 MinidumpMemoryRangeTest_GetDataWithTemplateType_Test::TestBody
+38438 2 193 78
+3843a 2 70 55
+3843c 2 193 78
+3843e 4 70 55
+38442 2 72 55
+38444 8 99 55
+3844c 2 72 55
+3844e 4 99 55
+38452 2 196 78
+38454 2 195 78
+38456 6 196 78
+3845c 2 1481 82
+3845e 2 196 78
+38460 2 1481 82
+38462 8 1482 82
+3846a 14 1487 82
+3847e 6 196 78
+38484 6 302 82
+3848a a 196 78
+38494 2 196 78
+38496 8 196 78
+3849e 6 196 78
+384a4 8 196 78
+384ac 6 85 79
+384b2 6 196 78
+384b8 8 256 82
+384c0 a 99 55
+384ca 2 198 78
+384cc 2 197 78
+384ce 4 198 78
+384d2 2 1481 82
+384d4 2 198 78
+384d6 2 1481 82
+384d8 8 1482 82
+384e0 14 1487 82
+384f4 6 198 78
+384fa 6 302 82
+38500 a 198 78
+3850a 2 198 78
+3850c 8 198 78
+38514 6 198 78
+3851a 8 198 78
+38522 6 85 79
+38528 6 198 78
+3852e 6 256 82
+38534 28 199 78
+FUNC 3855c 18 0 AndroidUContext_SigmakOffset_Test::~AndroidUContext_SigmakOffset_Test
+3855c 2 183 34
+3855e 16 183 34
+FUNC 38574 12 0 AndroidUContext_SigmakOffset_Test::~AndroidUContext_SigmakOffset_Test
+38574 2 183 34
+38576 6 183 34
+3857c 6 183 34
+38582 4 183 34
+FUNC 38588 18 0 AndroidUContext_GRegsOffset_Test::~AndroidUContext_GRegsOffset_Test
+38588 2 50 34
+3858a 16 50 34
+FUNC 385a0 12 0 AndroidUContext_GRegsOffset_Test::~AndroidUContext_GRegsOffset_Test
+385a0 2 50 34
+385a2 6 50 34
+385a8 6 50 34
+385ae 4 50 34
+FUNC 385b4 20 0 testing::internal::TestFactoryImpl<AndroidUContext_SigmakOffset_Test>::CreateTest
+385b4 2 486 85
+385b6 8 486 85
+385be 6 183 34
+385c4 2 486 85
+385c6 6 183 34
+385cc 8 486 85
+FUNC 385d4 20 0 testing::internal::TestFactoryImpl<AndroidUContext_GRegsOffset_Test>::CreateTest
+385d4 2 486 85
+385d6 8 486 85
+385de 6 50 34
+385e4 2 486 85
+385e6 6 50 34
+385ec 8 486 85
+FUNC 385f4 60 0 AndroidUContext_GRegsOffset_Test::TestBody
+385f4 4 50 34
+385f8 6 1482 82
+385fe 8 54 34
+38606 2 1144 87
+38608 6 298 82
+3860e 4 298 82
+38612 8 54 34
+3861a 2 54 34
+3861c a 54 34
+38626 6 54 34
+3862c 8 54 34
+38634 6 85 79
+3863a 6 54 34
+38640 6 256 82
+38646 e 181 34
+FUNC 38654 60 0 AndroidUContext_SigmakOffset_Test::TestBody
+38654 4 183 34
+38658 6 1482 82
+3865e 8 184 34
+38666 2 1144 87
+38668 6 298 82
+3866e 4 298 82
+38672 8 184 34
+3867a 2 184 34
+3867c a 184 34
+38686 6 184 34
+3868c 8 184 34
+38694 6 85 79
+3869a 6 184 34
+386a0 6 256 82
+386a6 e 186 34
+FUNC 386b4 6 0 std::basic_streambuf<char, std::char_traits<char> >::_M_sputnc
+386b4 6 209 134
+FUNC 386ba 20 0 std::basic_streambuf<char, std::char_traits<char> >::sputc
+386ba 2 198 134
+386bc 4 200 134
+386c0 2 198 134
+386c2 4 200 134
+386c6 4 201 134
+386ca 2 199 134
+386cc 4 200 134
+386d0 6 199 134
+386d6 4 201 134
+FUNC 386da a6 0 std::basic_ostream<char, std::char_traits<char> >::_M_put_char
+386da 2 300 126
+386dc 4 300 126
+386e0 a 181 127
+386ea 4 302 126
+386ee e 305 126
+386fc 4 307 126
+38700 2 309 126
+38702 2 310 126
+38704 8 309 126
+3870c 6 310 126
+38712 4 311 126
+38716 4 311 126
+3871a 2 312 126
+3871c 2 312 126
+3871e 6 312 126
+38724 a 312 126
+3872e 8 311 126
+38736 a 315 126
+38740 4 316 126
+38744 8 316 126
+3874c 8 316 126
+38754 6 316 126
+3875a 2 139 115
+3875c 2 319 126
+3875e 8 139 115
+38766 2 325 126
+38768 e 326 126
+38776 6 327 126
+3877c 4 328 126
+FUNC 38780 1bc 0 std::operator+<char, std::char_traits<char>, std::allocator<char> >
+38780 4 46 139
+38784 4 46 139
+38788 2 229 145
+3878a 2 46 139
+3878c 4 229 145
+38790 4 400 136
+38794 2 229 145
+38796 4 400 136
+3879a 2 608 135
+3879c 2 120 137
+3879e 2 481 106
+387a0 2 608 135
+387a2 8 600 135
+387aa 4 610 135
+387ae 6 347 106
+387b4 4 348 106
+387b8 2 613 135
+387ba 2 611 135
+387bc 2 613 135
+387be 2 612 135
+387c0 2 613 135
+387c2 6 101 108
+387c8 2 57 139
+387ca 4 470 136
+387ce 2 64 137
+387d0 4 74 137
+387d4 4 74 137
+387d8 4 74 137
+387dc 2 74 137
+387de 4 472 136
+387e2 8 473 136
+387ea 4 346 106
+387ee 6 347 106
+387f4 4 348 106
+387f8 4 352 106
+387fc 4 353 106
+38800 6 356 106
+38806 4 107 142
+3880a c 106 142
+38816 4 107 142
+3881a 2 107 142
+3881c 8 106 142
+38824 2 101 108
+38826 2 107 142
+38828 2 101 108
+3882a 6 478 136
+38830 4 479 136
+38834 2 160 137
+38836 2 164 137
+38838 8 165 137
+38840 4 482 136
+38844 2 232 145
+38846 2 483 136
+38848 2 107 142
+3884a 4 483 136
+3884e 2 107 142
+38850 6 106 142
+38856 6 101 108
+3885c a 485 136
+38866 4 197 135
+3886a 2 64 137
+3886c 2 198 135
+3886e 4 74 137
+38872 4 74 137
+38876 4 74 137
+3887a 2 74 137
+3887c 4 199 135
+38880 8 200 135
+38888 4 346 106
+3888c 6 347 106
+38892 4 348 106
+38896 4 352 106
+3889a 4 348 106
+3889e 4 356 106
+388a2 14 86 142
+388b6 8 86 142
+388be 1c 146 108
+388da 8 86 142
+388e2 6 146 108
+388e8 8 101 108
+388f0 8 205 135
+388f8 4 206 135
+388fc 2 160 137
+388fe 2 164 137
+38900 6 165 137
+38906 4 210 135
+3890a 6 86 142
+38910 8 86 142
+38918 6 146 108
+3891e a 101 108
+38928 2 232 145
+3892a 6 214 135
+38930 c 60 139
+FUNC 3893c 194 0 testing::internal::PrintCharAndCodeTo<unsigned char, unsigned char>
+3893c c 217 93
+38948 2 333 127
+3894a 2 217 93
+3894c 2 333 127
+3894e 4 217 93
+38952 2 333 127
+38954 2 217 93
+38956 4 333 127
+3895a 12 147 93
+3896c 8 333 127
+38974 8 147 93
+3897c 8 333 127
+38984 e 147 93
+38992 8 333 127
+3899a 8 147 93
+389a2 12 333 127
+389b4 4 187 93
+389b8 28 333 127
+389e0 4 138 93
+389e4 4 179 93
+389e8 8 305 127
+389f0 4 181 93
+389f4 a 183 93
+389fe 10 183 93
+38a0e 8 183 93
+38a16 c 156 137
+38a22 2 184 93
+38a24 a 333 127
+38a2e 2 226 93
+38a30 a 333 127
+38a3a 8 240 126
+38a42 4 233 93
+38a46 6 233 93
+38a4c 2 333 127
+38a4e 2 236 93
+38a50 8 333 127
+38a58 8 236 93
+38a60 8 236 93
+38a68 6 156 137
+38a6e a 333 127
+38a78 58 239 93
+FUNC 38ad0 4 0 testing::internal::PrintTo
+38ad0 4 242 93
+FUNC 38ad4 11c 0 testing::internal::PrintAsCharLiteralTo<wchar_t, wchar_t>
+38ad4 e 146 93
+38ae2 2 147 93
+38ae4 6 146 93
+38aea e 147 93
+38af8 8 333 127
+38b00 8 147 93
+38b08 8 333 127
+38b10 e 147 93
+38b1e 8 333 127
+38b26 8 147 93
+38b2e 3a 333 127
+38b68 4 187 93
+38b6c 4 138 93
+38b70 4 179 93
+38b74 8 305 127
+38b7c 4 181 93
+38b80 a 183 93
+38b8a e 183 93
+38b98 8 183 93
+38ba0 c 156 137
+38bac 2 184 93
+38bae 42 188 93
+FUNC 38bf0 bc 0 testing::internal::PrintCharsAsStringTo<char>
+38bf0 4 262 93
+38bf4 2 262 93
+38bf6 2 333 127
+38bf8 2 262 93
+38bfa 4 333 127
+38bfe 2 262 93
+38c00 4 333 127
+38c04 2 266 93
+38c06 18 333 127
+38c1e 4 267 93
+38c22 4 268 93
+38c26 4 269 93
+38c2a a 154 98
+38c34 6 269 93
+38c3a c 193 93
+38c46 8 333 127
+38c4e 4 196 93
+38c52 8 333 127
+38c5a 4 199 93
+38c5e 8 201 93
+38c66 8 275 93
+38c6e 4 333 127
+38c72 4 278 93
+38c76 36 333 127
+FUNC 38cac e 0 testing::internal::PrintStringTo
+38cac 6 354 93
+38cb2 2 400 136
+38cb4 6 355 93
+FUNC 38cba 12 0 testing::internal::HasNewFatalFailureHelper::ReportTestPartResult
+38cba 4 103 94
+38cbe 6 104 94
+38cc4 8 105 94
+FUNC 38ccc 20 0 testing::internal::HasNewFatalFailureHelper::~HasNewFatalFailureHelper
+38ccc 4 96 94
+38cd0 8 96 94
+38cd8 4 937 91
+38cdc 8 98 94
+38ce4 8 99 94
+FUNC 38cec 12 0 testing::internal::HasNewFatalFailureHelper::~HasNewFatalFailureHelper
+38cec 2 96 94
+38cee 2 96 94
+38cf0 4 99 94
+38cf4 6 99 94
+38cfa 4 99 94
+FUNC 38d00 30 0 testing::internal::HasNewFatalFailureHelper::HasNewFatalFailureHelper
+38d00 2 92 94
+38d02 2 89 94
+38d04 a 92 94
+38d0e 2 89 94
+38d10 4 937 91
+38d14 6 92 94
+38d1a 2 92 94
+38d1c 4 937 91
+38d20 8 93 94
+38d28 8 94 94
+FUNC 38d30 58 0 testing::TestPartResult::ExtractSummary
+38d30 2 51 94
+38d32 4 51 94
+38d36 c 52 94
+38d42 2 112 137
+38d44 2 54 94
+38d46 2 481 106
+38d48 2 54 94
+38d4a 8 229 145
+38d52 a 379 136
+38d5c 4 107 142
+38d60 2 355 119
+38d62 8 324 136
+38d6a 6 107 142
+38d70 8 106 142
+38d78 2 107 142
+38d7a 2 101 108
+38d7c 2 325 136
+38d7e 2 101 108
+38d80 8 55 94
+FUNC 38d88 32 0 testing::TestPartResult::TestPartResult
+38d88 2 47 81
+38d8a 12 47 81
+38d9c 4 47 81
+38da0 2 47 81
+38da2 8 47 81
+38daa c 47 81
+38db6 4 47 81
+FUNC 38dbc 190 0 std::priv::_Impl_vector<testing::TestPartResult, std::allocator<testing::TestPartResult> >::_M_insert_overflow_aux
+38dbc 6 81 143
+38dc2 4 81 143
+38dc6 c 192 144
+38dd2 4 173 144
+38dd6 2 81 143
+38dd8 8 173 144
+38de0 8 41 143
+38de8 a 175 144
+38df2 4 176 144
+38df6 6 176 144
+38dfc 2 176 144
+38dfe 4 347 106
+38e02 2 158 106
+38e04 2 347 106
+38e06 2 158 106
+38e08 6 134 124
+38e0e 8 158 106
+38e16 8 352 106
+38e1e 4 91 143
+38e22 2 84 142
+38e24 e 86 142
+38e32 4 86 142
+38e36 6 139 108
+38e3c 8 139 108
+38e44 4 88 142
+38e48 4 89 142
+38e4c e 86 142
+38e5a a 93 143
+38e64 2 119 108
+38e66 8 119 108
+38e6e 6 95 143
+38e74 a 314 142
+38e7e 8 249 142
+38e86 6 249 142
+38e8c 2 139 108
+38e8e 8 139 108
+38e96 8 249 142
+38e9e 6 98 143
+38ea4 2 86 142
+38ea6 2 84 142
+38ea8 c 86 142
+38eb4 6 86 142
+38eba 6 139 108
+38ec0 8 139 108
+38ec8 4 88 142
+38ecc 4 89 142
+38ed0 10 86 142
+38ee0 8 65 118
+38ee8 2 74 118
+38eea 4 191 108
+38eee 14 156 137
+38f02 2 81 118
+38f04 4 156 137
+38f08 4 81 118
+38f0c 6 662 144
+38f12 2 319 106
+38f14 4 161 106
+38f18 6 135 124
+38f1e 4 161 106
+38f22 6 104 143
+38f28 4 667 144
+38f2c 2 668 144
+38f2e 6 105 143
+38f34 6 346 106
+38f3a 12 356 106
+FUNC 38f4c 8 0 std::ios_base::precision
+38f4c 2 130 115
+38f4e 2 131 115
+38f50 2 132 115
+38f52 2 134 115
+FUNC 38f54 8 0 std::ios_base::width
+38f54 2 137 115
+38f56 2 138 115
+38f58 2 139 115
+38f5a 2 141 115
+FUNC 38f5c a 0 testing::internal::DeleteThreadLocalValue
+38f5c 2 1989 87
+38f5e 8 1989 87
+FUNC 38f66 a 0 testing::Test::DeleteSelf_
+38f66 2 453 82
+38f68 2 453 82
+38f6a 6 453 82
+FUNC 38f70 4 0 testing::TestCase::RunSetUpTestCase
+38f70 4 879 82
+FUNC 38f74 4 0 testing::TestCase::RunTearDownTestCase
+38f74 4 883 82
+FUNC 38f78 e 0 testing::TestCase::TestReportableDisabled
+38f78 4 696 82
+38f7c 2 898 82
+38f7e 4 898 82
+38f82 4 899 82
+FUNC 38f86 6 0 testing::TestCase::TestReportable
+38f86 6 909 82
+FUNC 38f8c 6 0 testing::TestCase::ShouldRunTest
+38f8c 6 914 82
+FUNC 38f92 2 0 testing::EmptyTestEventListener::OnTestProgramStart
+38f92 2 1038 82
+FUNC 38f94 2 0 testing::EmptyTestEventListener::OnTestIterationStart
+38f94 2 1039 82
+FUNC 38f96 2 0 testing::EmptyTestEventListener::OnEnvironmentsSetUpStart
+38f96 2 1041 82
+FUNC 38f98 2 0 testing::EmptyTestEventListener::OnEnvironmentsSetUpEnd
+38f98 2 1042 82
+FUNC 38f9a 2 0 testing::EmptyTestEventListener::OnTestCaseStart
+38f9a 2 1043 82
+FUNC 38f9c 2 0 testing::EmptyTestEventListener::OnTestStart
+38f9c 2 1044 82
+FUNC 38f9e 2 0 testing::EmptyTestEventListener::OnTestPartResult
+38f9e 2 1045 82
+FUNC 38fa0 2 0 testing::EmptyTestEventListener::OnTestEnd
+38fa0 2 1046 82
+FUNC 38fa2 2 0 testing::EmptyTestEventListener::OnTestCaseEnd
+38fa2 2 1047 82
+FUNC 38fa4 2 0 testing::EmptyTestEventListener::OnEnvironmentsTearDownStart
+38fa4 2 1048 82
+FUNC 38fa6 2 0 testing::EmptyTestEventListener::OnEnvironmentsTearDownEnd
+38fa6 2 1049 82
+FUNC 38fa8 2 0 testing::EmptyTestEventListener::OnTestProgramEnd
+38fa8 2 1052 82
+FUNC 38faa 6 0 testing::internal::ShouldRunTestCase
+38faa 6 348 95
+FUNC 38fb0 2 0 testing::internal::OsStackTraceGetter::UponLeavingGTest
+38fb0 2 3802 95
+FUNC 38fb2 6 0 testing::internal::SetUpEnvironment
+38fb2 6 4486 95
+FUNC 38fb8 6 0 testing::internal::TearDownEnvironment
+38fb8 6 4487 95
+FUNC 38fbe a 0 testing::internal::Delete<testing::Environment>
+FUNC 38fbe a 0 testing::internal::Delete<testing::TestCase>
+38fbe 2 340 91
+38fc0 8 340 91
+FUNC 38fbe a 0 testing::internal::Delete<testing::TestEventListener>
+FUNC 38fc8 2c 0 testing::internal::TestEventRepeater::OnTestProgramStart
+38fc8 2 3263 95
+38fca c 3263 95
+38fd6 6 192 144
+38fdc 6 3263 95
+38fe2 12 3263 95
+FUNC 38ff4 2c 0 testing::internal::TestEventRepeater::OnEnvironmentsSetUpStart
+38ff4 2 3264 95
+38ff6 c 3264 95
+39002 6 192 144
+39008 6 3264 95
+3900e 12 3264 95
+FUNC 39020 2c 0 testing::internal::TestEventRepeater::OnTestCaseStart
+39020 2 3265 95
+39022 c 3265 95
+3902e 6 192 144
+39034 6 3265 95
+3903a 12 3265 95
+FUNC 3904c 2c 0 testing::internal::TestEventRepeater::OnTestStart
+3904c 2 3266 95
+3904e c 3266 95
+3905a 6 192 144
+39060 6 3266 95
+39066 12 3266 95
+FUNC 39078 2c 0 testing::internal::TestEventRepeater::OnTestPartResult
+39078 2 3267 95
+3907a c 3267 95
+39086 6 192 144
+3908c 6 3267 95
+39092 12 3267 95
+FUNC 390a4 2c 0 testing::internal::TestEventRepeater::OnEnvironmentsTearDownStart
+390a4 2 3268 95
+390a6 c 3268 95
+390b2 6 192 144
+390b8 6 3268 95
+390be 12 3268 95
+FUNC 390d0 2e 0 testing::internal::TestEventRepeater::OnEnvironmentsSetUpEnd
+390d0 2 3269 95
+390d2 8 3269 95
+390da 8 192 144
+390e2 4 3269 95
+390e6 4 3269 95
+390ea 2 202 144
+390ec 12 3269 95
+FUNC 390fe 2e 0 testing::internal::TestEventRepeater::OnEnvironmentsTearDownEnd
+390fe 2 3270 95
+39100 8 3270 95
+39108 8 192 144
+39110 4 3270 95
+39114 4 3270 95
+39118 2 202 144
+3911a 12 3270 95
+FUNC 3912c 2e 0 testing::internal::TestEventRepeater::OnTestEnd
+3912c 2 3271 95
+3912e 8 3271 95
+39136 8 192 144
+3913e 4 3271 95
+39142 4 3271 95
+39146 2 202 144
+39148 12 3271 95
+FUNC 3915a 2e 0 testing::internal::TestEventRepeater::OnTestCaseEnd
+3915a 2 3272 95
+3915c 8 3272 95
+39164 8 192 144
+3916c 4 3272 95
+39170 4 3272 95
+39174 2 202 144
+39176 12 3272 95
+FUNC 39188 2e 0 testing::internal::TestEventRepeater::OnTestProgramEnd
+39188 2 3273 95
+3918a 8 3273 95
+39192 8 192 144
+3919a 4 3273 95
+3919e 4 3273 95
+391a2 2 202 144
+391a4 12 3273 95
+FUNC 391b6 30 0 testing::internal::TestEventRepeater::OnTestIterationStart
+391b6 2 3279 95
+391b8 2 3280 95
+391ba 6 3279 95
+391c0 6 3280 95
+391c6 6 192 144
+391cc 6 3281 95
+391d2 4 3282 95
+391d6 2 3282 95
+391d8 2 3282 95
+391da 6 3282 95
+391e0 6 3281 95
+FUNC 391e6 36 0 testing::internal::TestEventRepeater::OnTestIterationEnd
+391e6 4 3288 95
+391ea 2 3289 95
+391ec 6 3288 95
+391f2 2 3289 95
+391f4 8 192 144
+391fc 4 3290 95
+39200 4 3290 95
+39204 2 202 144
+39206 2 3291 95
+39208 2 3291 95
+3920a 2 3291 95
+3920c 2 3291 95
+3920e 2 3290 95
+39210 c 3291 95
+FUNC 3921c 44 0 testing::internal::PrintOnOneLine
+3921c 2 4788 95
+3921e 4 4789 95
+39222 6 4796 95
+39228 6 4790 95
+3922e 4 4791 95
+39232 2 4792 95
+39234 4 4804 95
+39238 6 4792 95
+3923e 4 4795 95
+39242 6 4796 95
+39248 4 4797 95
+3924c 4 4799 95
+39250 10 4800 95
+FUNC 39260 2e 0 testing::internal::SumOverTestCaseList
+39260 2 325 95
+39262 2 328 95
+39264 2 325 95
+39266 2 327 95
+39268 6 325 95
+3926e 6 192 144
+39274 6 328 95
+3927a 8 329 95
+39282 2 328 95
+39284 4 329 95
+39288 6 332 95
+FUNC 39290 20 0 testing::internal::StreamingListener::~StreamingListener
+39290 2 1044 91
+39292 a 1044 91
+3929c 4 1153 87
+392a0 6 1155 87
+392a6 a 1044 91
+FUNC 392b0 12 0 testing::internal::StreamingListener::~StreamingListener
+392b0 2 1044 91
+392b2 6 1044 91
+392b8 6 1044 91
+392be 4 1044 91
+FUNC 392c4 34 0 std::allocator<testing::internal::edit_distance::EditType>::_M_allocate
+392c4 4 342 106
+392c8 2 341 106
+392ca 2 341 106
+392cc 2 342 106
+392ce 8 343 106
+392d6 4 343 106
+392da 2 346 106
+392dc 8 347 106
+392e4 4 348 106
+392e8 6 352 106
+392ee a 357 106
+FUNC 392f8 2c 0 std::setprecision
+392f8 2 119 112
+392fa 2 120 112
+392fc 2 119 112
+392fe a 120 112
+39308 a 119 112
+39312 4 39 112
+39316 2 122 112
+39318 2 39 112
+3931a a 122 112
+FUNC 39324 54 0 testing::internal::UnitTestOptions::PatternMatchesString
+39324 2 445 95
+39326 6 445 95
+3932c 18 446 95
+39344 a 449 95
+3934e 6 451 95
+39354 6 453 95
+3935a 6 453 95
+39360 6 453 95
+39366 6 456 95
+3936c 4 457 95
+39370 6 451 95
+39376 2 459 95
+FUNC 39378 24 0 testing::internal::UnitTestOptions::MatchesFilter
+39378 2 462 95
+3937a 4 462 95
+3937e 8 465 95
+39386 4 465 95
+3938a 8 470 95
+39392 2 473 95
+39394 2 478 95
+39396 2 479 95
+39398 4 480 95
+FUNC 3939c c 0 testing::internal::GetTestTypeId
+3939c c 604 95
+FUNC 393a8 24 0 testing::internal::UnitTestImpl::successful_test_count
+393a8 2 733 95
+393aa 16 734 95
+393c0 c 735 95
+FUNC 393cc 24 0 testing::internal::UnitTestImpl::failed_test_count
+393cc 2 738 95
+393ce 16 739 95
+393e4 c 740 95
+FUNC 393f0 24 0 testing::internal::UnitTestImpl::reportable_disabled_test_count
+393f0 2 743 95
+393f2 16 745 95
+39408 c 746 95
+FUNC 39414 24 0 testing::internal::UnitTestImpl::reportable_test_count
+39414 2 754 95
+39416 16 755 95
+3942c c 756 95
+FUNC 39438 24 0 testing::internal::UnitTestImpl::test_to_run_count
+39438 2 764 95
+3943a 16 765 95
+39450 c 766 95
+FUNC 3945c 24 0 testing::internal::GetTimeInMillis
+3945c 2 784 95
+3945e 8 820 95
+39466 16 821 95
+3947c 4 825 95
+FUNC 39480 1c 0 testing::internal::String::CStringEquals
+39480 2 872 95
+39482 2 873 95
+39484 6 873 95
+3948a 2 875 95
+3948c c 877 95
+39498 2 875 95
+3949a 2 878 95
+FUNC 3949c a 0 testing::AssertionSuccess
+3949c 4 277 82
+394a0 4 1139 87
+394a4 2 973 95
+FUNC 394a6 8 0 testing::AssertionFailure
+394a6 4 277 82
+394aa 2 1139 87
+394ac 2 978 95
+FUNC 394ae 1c 0 testing::internal::String::CaseInsensitiveCStringEquals
+394ae 2 1866 95
+394b0 2 1867 95
+394b2 6 1868 95
+394b8 2 1869 95
+394ba 4 2274 87
+394be 8 1871 95
+394c6 2 1870 95
+394c8 2 1872 95
+FUNC 394cc 34 0 testing::TestResult::GetTestPartResult
+394cc 2 1991 95
+394ce 2 1990 95
+394d0 2 1991 95
+394d2 c 192 144
+394de 4 1991 95
+394e2 2 167 144
+394e4 8 45 143
+394ec 4 2340 87
+394f0 6 203 144
+394f6 a 1994 95
+FUNC 39500 34 0 testing::TestResult::GetTestProperty
+39500 2 2000 95
+39502 2 1999 95
+39504 2 2000 95
+39506 c 192 144
+39512 4 2000 95
+39516 2 167 144
+39518 8 45 143
+39520 4 2340 87
+39524 6 203 144
+3952a a 2003 95
+FUNC 39534 34 0 testing::TestResult::Failed
+39534 2 2131 95
+39536 2 2131 95
+39538 2 2132 95
+3953a c 192 144
+39546 4 2132 95
+3954a c 2133 95
+39556 4 2132 95
+3955a 4 2136 95
+3955e 2 2134 95
+39560 8 2137 95
+FUNC 39568 10 0 testing::TestCase::TestFailed
+39568 4 689 82
+3956c 2 892 82
+3956e 6 892 82
+39574 4 893 82
+FUNC 39578 18 0 testing::TestCase::TestPassed
+39578 2 886 82
+3957a 4 689 82
+3957e 2 887 82
+39580 6 540 82
+39586 6 887 82
+3958c 4 888 82
+FUNC 39590 20 0 testing::TestResult::HasFatalFailure
+39590 4 2145 95
+39594 2 285 91
+39596 4 286 91
+3959a 2 287 91
+3959c 2 286 91
+3959e 2 287 91
+395a0 6 288 91
+395a6 a 2147 95
+FUNC 395b0 20 0 testing::TestResult::HasNonfatalFailure
+395b0 4 2155 95
+395b4 2 285 91
+395b6 4 286 91
+395ba 2 287 91
+395bc 2 286 91
+395be 2 287 91
+395c0 6 288 91
+395c6 a 2157 95
+FUNC 395d0 26 0 testing::internal::UnitTestImpl::RegisterParameterizedTests
+395d0 2 2571 95
+395d2 4 2573 95
+395d6 2 2571 95
+395d8 4 2573 95
+395dc 6 600 86
+395e2 c 602 86
+395ee 8 2575 95
+FUNC 395f6 18 0 testing::TestCase::UnshuffleTests
+395f6 2 2753 95
+395f8 6 192 144
+395fe 6 2753 95
+39604 4 2754 95
+39608 4 2753 95
+3960c 2 2756 95
+FUNC 39610 30 0 testing::internal::GetAnsiColorCode
+39610 c 2859 95
+3961c 4 2863 95
+39620 6 2861 95
+39626 6 2862 95
+3962c 4 2860 95
+39630 10 2865 95
+FUNC 39640 f8 0 testing::internal::ShouldUseColor
+39640 4 2870 95
+39644 6 2873 95
+3964a 2 2870 95
+3964c c 2873 95
+39658 8 2328 87
+39660 2 2882 95
+39662 2 2328 87
+39664 6 2882 95
+3966a 4 2887 95
+3966e a 2883 95
+39678 4 2882 95
+3967c a 2884 95
+39686 4 2883 95
+3968a a 2885 95
+39694 2 2884 95
+39696 a 2886 95
+396a0 2 2885 95
+396a2 a 2887 95
+396ac 2 2886 95
+396ae a 2888 95
+396b8 4 2887 95
+396bc a 2893 95
+396c6 2 2895 95
+396c8 4 2895 95
+396cc a 2894 95
+396d6 4 2893 95
+396da a 2895 95
+396e4 4 2894 95
+396e8 4 2896 95
+396ec 4 2900 95
+396f0 6 2896 95
+396f6 4 2889 95
+396fa 2 2889 95
+396fc 3c 2900 95
+FUNC 39738 90 0 testing::internal::ColoredPrintf
+39738 4 2906 95
+3973c 2 2915 95
+3973e 6 2906 95
+39744 2 2915 95
+39746 2 2908 95
+39748 2 2915 95
+3974a 2 2906 95
+3974c a 2915 95
+39756 8 2271 87
+3975e a 2915 95
+39768 a 2915 95
+39772 8 2916 95
+3977a 2 2916 95
+3977c a 2921 95
+39786 8 2947 95
+3978e 8 2947 95
+39796 8 2948 95
+3979e 8 2949 95
+397a6 22 2952 95
+FUNC 397c8 30 0 testing::internal::PrettyUnitTestResultPrinter::OnEnvironmentsSetUpStart
+397c8 2 3043 95
+397ca 2 3042 95
+397cc 8 3043 95
+397d4 8 3044 95
+397dc 4 3046 95
+397e0 2 3044 95
+397e2 16 3045 95
+FUNC 397f8 3c 0 testing::internal::PrettyUnitTestResultPrinter::OnTestStart
+397f8 2 3061 95
+397fa 2 3061 95
+397fc a 3062 95
+39806 c 2983 95
+39812 6 3064 95
+39818 4 3066 95
+3981c 2 3064 95
+3981e 16 3065 95
+FUNC 39834 30 0 testing::internal::PrettyUnitTestResultPrinter::OnEnvironmentsTearDownStart
+39834 2 3113 95
+39836 2 3112 95
+39838 8 3113 95
+39840 8 3114 95
+39848 4 3116 95
+3984c 2 3114 95
+3984e 16 3115 95
+FUNC 39864 68 0 testing::internal::PrintFullTestCommentIfPresent
+39864 2 2959 95
+39866 2 1144 87
+39868 4 660 82
+3986c 2 1144 87
+3986e 4 668 82
+39872 2 2963 95
+39874 2 2963 95
+39876 8 2964 95
+3987e 2 2965 95
+39880 e 2966 95
+3988e 2 2967 95
+39890 a 2968 95
+3989a 2 2970 95
+3989c 6 2971 95
+398a2 4 2974 95
+398a6 8 2971 95
+398ae 1e 2963 95
+FUNC 398cc 3a 0 testing::internal::TestEventRepeater::Release
+398cc 2 3231 95
+398ce 2 3232 95
+398d0 2 3231 95
+398d2 4 192 144
+398d6 2 3231 95
+398d8 4 192 144
+398dc 4 3232 95
+398e0 2 202 144
+398e2 8 3233 95
+398ea 6 580 144
+398f0 4 269 105
+398f4 8 584 144
+398fc 4 3232 95
+39900 2 3239 95
+39902 4 3240 95
+FUNC 39908 2c 0 testing::TestEventListeners::TestEventListeners
+39908 2 3842 95
+3990a 2 3842 95
+3990c 6 3845 95
+39912 c 3188 95
+3991e 6 67 144
+39924 2 481 106
+39926 6 3845 95
+3992c 8 3846 95
+FUNC 39934 12 0 google_breakpad::scoped_ptr<google_breakpad::MinidumpContext>::~scoped_ptr
+39934 2 96 57
+39936 2 96 57
+39938 4 98 57
+3993c 6 98 57
+39942 4 99 57
+FUNC 39934 12 0 testing::TestEventListeners::~TestEventListeners
+39934 2 3848 95
+39936 6 3848 95
+3993c 2 3848 95
+3993e 4 3848 95
+39942 4 3848 95
+FUNC 39946 1c 0 testing::TestEventListeners::Release
+39946 6 3862 95
+3994c 6 3863 95
+39952 4 3864 95
+39956 6 3865 95
+3995c 6 3866 95
+FUNC 39962 8 0 testing::TestEventListeners::SuppressEventForwarding
+39962 2 3196 95
+39964 2 3912 95
+39966 4 3196 95
+FUNC 3996a c 0 testing::UnitTest::total_test_case_count
+3996a 2 1280 82
+3996c 6 192 144
+39972 4 3958 95
+FUNC 39976 6 0 testing::UnitTest::successful_test_count
+39976 6 3968 95
+FUNC 3997c 6 0 testing::UnitTest::failed_test_count
+3997c 6 3972 95
+FUNC 39982 6 0 testing::UnitTest::reportable_disabled_test_count
+39982 6 3976 95
+FUNC 39988 6 0 testing::UnitTest::reportable_test_count
+39988 6 3986 95
+FUNC 3998e 6 0 testing::UnitTest::test_to_run_count
+3998e 6 3993 95
+FUNC 39994 6 0 testing::UnitTest::original_working_dir
+39994 2 4217 95
+39996 4 4219 95
+FUNC 3999a 10 0 testing::internal::UnitTestImpl::SuppressTestEventsIfInSubprocess
+3999a 6 4345 95
+399a0 2 3196 95
+399a2 4 3912 95
+399a6 4 3196 95
+FUNC 399aa 1a 0 testing::internal::TestCaseNameIs::operator()
+399aa 2 4429 95
+399ac 2 4429 95
+399ae 2 4430 95
+399b0 8 4430 95
+399b8 8 4430 95
+399c0 2 4430 95
+399c2 2 4431 95
+FUNC 399c4 54 0 testing::internal::WriteToShardStatusFileIfNeeded
+399c4 2 4635 95
+399c6 a 2328 87
+399d0 4 4637 95
+399d4 8 2298 87
+399dc 2 4639 95
+399de 10 4643 95
+399ee a 4644 95
+399f8 6 4645 95
+399fe 4 4649 95
+39a02 16 4647 95
+FUNC 39a18 f0 0 testing::internal::UnitTestImpl::ListTestsMatchingFilter
+39a18 6 4807 95
+39a1e 2 4811 95
+39a20 2 4830 95
+39a22 2 4807 95
+39a24 4 4830 95
+39a28 2 4832 95
+39a2a 4 4823 95
+39a2e 6 4832 95
+39a34 2 4823 95
+39a36 4 4832 95
+39a3a 6 4821 95
+39a40 a 192 144
+39a4a 6 4811 95
+39a50 2 4815 95
+39a52 2 4813 95
+39a54 4 4823 95
+39a58 4 4812 95
+39a5c 2 4823 95
+39a5e 6 192 144
+39a64 6 4815 95
+39a6a 4 4817 95
+39a6e 6 4818 95
+39a74 2 4819 95
+39a76 8 4821 95
+39a7e 2 1144 87
+39a80 2 797 82
+39a82 4 4822 95
+39a86 8 4823 95
+39a8e 2 1144 87
+39a90 6 797 82
+39a96 2 799 82
+39a98 4 4826 95
+39a9c 6 4828 95
+39aa2 a 4830 95
+39aac 4 1144 87
+39ab0 2 668 82
+39ab2 4 4831 95
+39ab6 8 4832 95
+39abe 4 1144 87
+39ac2 4 668 82
+39ac6 4 4835 95
+39aca 8 4837 95
+39ad2 4 4815 95
+39ad6 6 4811 95
+39adc 6 4841 95
+39ae2 6 4842 95
+39ae8 20 4841 95
+FUNC 39b08 26 0 testing::internal::UnitTestImpl::UnshuffleTests
+39b08 2 4892 95
+39b0a 2 4892 95
+39b0c 2 4893 95
+39b0e 6 192 144
+39b14 6 4893 95
+39b1a 8 4895 95
+39b22 2 202 144
+39b24 4 4897 95
+39b28 4 4893 95
+39b2c 2 4899 95
+FUNC 39b2e 4 0 __cxxabiv1::__si_class_type_info::code() const
+39b2e 4 174 160
+FUNC 39b2e 4 0 google_breakpad::LinuxCoreDumper::IsPostMortem
+39b2e 4 116 18
+FUNC 39b2e 4 0 google_breakpad::LinuxCoreDumper::ThreadsResume
+FUNC 39b2e 4 0 google_breakpad::LinuxCoreDumper::ThreadsSuspend
+FUNC 39b2e 4 0 std::codecvt<char, char, mbstate_t>::do_always_noconv() const
+FUNC 39b2e 4 0 std::codecvt<char, char, mbstate_t>::do_encoding() const
+FUNC 39b2e 4 0 std::codecvt<char, char, mbstate_t>::do_max_length() const
+39b2e 4 37 177
+FUNC 39b2e 4 0 std::codecvt<wchar_t, char, mbstate_t>::do_always_noconv() const
+FUNC 39b2e 4 0 std::codecvt<wchar_t, char, mbstate_t>::do_encoding() const
+FUNC 39b2e 4 0 std::codecvt<wchar_t, char, mbstate_t>::do_max_length() const
+FUNC 39b2e 4 0 testing::internal::AlwaysTrue
+39b2e 4 4934 95
+FUNC 39b32 26 0 testing::internal::SkipPrefix
+39b32 2 4939 95
+39b34 4 4939 95
+39b38 6 4940 95
+39b3e e 4941 95
+39b4c 4 4942 95
+39b50 4 4943 95
+39b54 2 4945 95
+39b56 2 4946 95
+FUNC 39b58 74 0 testing::internal::HasGoogleTestFlagPrefix
+39b58 2 5043 95
+39b5a 6 5043 95
+39b60 a 5044 95
+39b6a 2 5047 95
+39b6c a 5047 95
+39b76 4 5046 95
+39b7a a 5045 95
+39b84 4 5044 95
+39b88 a 5046 95
+39b92 4 5045 95
+39b96 4 5047 95
+39b9a a 5048 95
+39ba4 2 5047 95
+39ba6 a 5049 95
+39bb0 1c 5050 95
+FUNC 39bcc 1c 0 testing::internal::GetElementOr<int>
+39bcc 2 303 91
+39bce 2 302 91
+39bd0 2 303 91
+39bd2 6 192 144
+39bd8 6 303 91
+39bde 6 303 91
+39be4 2 303 91
+39be6 2 304 91
+FUNC 39be8 1c 0 testing::TestCase::GetMutableTestInfo
+FUNC 39be8 1c 0 testing::TestCase::GetTestInfo
+39be8 2 2693 95
+39bea 4 2694 95
+39bee 2 2693 95
+39bf0 6 2701 95
+39bf6 2 2702 95
+39bf8 8 2695 95
+39c00 2 2695 95
+39c02 2 2696 95
+FUNC 39c04 20 0 testing::UnitTest::GetTestCase
+39c04 2 4015 95
+39c06 2 1280 82
+39c08 8 587 91
+39c10 2 4015 95
+39c12 4 587 91
+39c16 2 588 91
+39c18 8 588 91
+39c20 2 588 91
+39c22 2 4017 95
+FUNC 39c24 24 0 testing::internal::CountIf<std::vector<testing::TestCase*>, bool (*)(const testing::TestCase*)>
+39c24 2 282 91
+39c26 4 282 91
+39c2a 4 285 91
+39c2e 8 286 91
+39c36 a 287 91
+39c40 4 288 91
+39c44 4 291 91
+FUNC 39c24 24 0 testing::internal::CountIf<std::vector<testing::TestInfo*>, bool (*)(const testing::TestInfo*)>
+FUNC 39c48 10 0 testing::internal::UnitTestImpl::failed_test_case_count
+39c48 10 718 95
+FUNC 39c58 1c 0 testing::internal::UnitTestImpl::Failed
+39c58 2 580 91
+39c5a 2 580 91
+39c5c 8 581 91
+39c64 4 581 91
+39c68 4 582 91
+39c6c 4 581 91
+39c70 4 582 91
+FUNC 39c74 10 0 testing::UnitTest::Passed
+39c74 2 4007 95
+39c76 a 576 91
+39c80 4 4007 95
+FUNC 39c84 10 0 testing::internal::UnitTestImpl::test_case_to_run_count
+39c84 10 729 95
+FUNC 39c94 6 0 testing::UnitTest::test_case_to_run_count
+39c94 6 3963 95
+FUNC 39c9a 2a 0 std::operator<< <char, std::char_traits<char>, int>
+39c9a 2 80 112
+39c9c 2 80 112
+39c9e 2 82 112
+39ca0 2 42 112
+39ca2 4 82 112
+39ca6 4 42 112
+39caa 8 82 112
+39cb2 4 42 112
+39cb6 2 42 112
+39cb8 4 42 112
+39cbc 4 42 112
+39cc0 4 84 112
+FUNC 39cc4 14 0 std::priv::_Impl_vector<MDMemoryDescriptor, std::allocator<MDMemoryDescriptor> >::~_Impl_vector
+FUNC 39cc4 14 0 std::priv::_Impl_vector<MDRawDirectory, std::allocator<MDRawDirectory> >::~_Impl_vector
+FUNC 39cc4 14 0 std::priv::_Impl_vector<testing::internal::edit_distance::EditType, std::allocator<testing::internal::edit_distance::EditType> >::~_Impl_vector
+FUNC 39cc4 14 0 std::priv::_Vector_base<double, std::allocator<double> >::~_Vector_base
+FUNC 39cc4 14 0 std::priv::_Vector_base<short unsigned int, std::allocator<short unsigned int> >::~_Vector_base
+39cc4 2 86 144
+39cc6 4 304 144
+39cca 2 87 144
+39ccc 2 88 144
+39cce 6 323 106
+39cd4 4 304 144
+FUNC 39cc4 14 0 std::priv::_Vector_base<unsigned char, std::allocator<unsigned char> >::~_Vector_base
+FUNC 39cc4 14 0 std::priv::_Vector_base<unsigned int, std::allocator<unsigned int> >::~_Vector_base
+FUNC 39cc4 14 0 std::priv::_Vector_base<void*, std::allocator<void*> >::~_Vector_base
+39cc4 2 86 144
+39cc6 2 86 144
+39cc8 2 304 144
+39cca 2 87 144
+39ccc 2 88 144
+39cce 6 323 106
+39cd4 4 89 144
+FUNC 39cd8 2a 0 std::operator==<char, std::char_traits<char>, std::allocator<char> >
+39cd8 2 320 139
+39cda 2 320 139
+39cdc 2 229 145
+39cde 2 320 139
+39ce0 6 229 145
+39ce6 4 400 136
+39cea 4 324 139
+39cee 8 226 145
+39cf6 8 324 139
+39cfe 2 324 139
+39d00 2 325 139
+FUNC 39d04 10 0 testing::TestCase::successful_test_count
+39d04 10 2632 95
+FUNC 39d14 10 0 testing::TestCase::failed_test_count
+39d14 10 2637 95
+FUNC 39d24 18 0 testing::internal::TestCaseFailed
+39d24 2 340 95
+39d26 4 803 82
+39d2a 2 341 95
+39d2c 4 830 82
+39d30 8 341 95
+39d38 4 342 95
+FUNC 39d3c 98 0 testing::internal::PrettyUnitTestResultPrinter::PrintFailedTests
+39d3c 4 3119 95
+39d40 2 3119 95
+39d42 4 3120 95
+39d46 8 3121 95
+39d4e 4 3135 95
+39d52 4 3136 95
+39d56 2 3135 95
+39d58 2 3136 95
+39d5a 6 3125 95
+39d60 4 3125 95
+39d64 8 3126 95
+39d6c 4 3127 95
+39d70 2 3126 95
+39d72 2 3127 95
+39d74 4 3127 95
+39d78 4 3127 95
+39d7c 6 192 144
+39d82 6 3130 95
+39d88 8 3131 95
+39d90 4 3132 95
+39d94 2 3131 95
+39d96 2 3132 95
+39d98 6 540 82
+39d9e 2 3132 95
+39da0 4 3130 95
+39da4 8 3125 95
+39dac 8 3135 95
+39db4 a 3136 95
+39dbe 6 3137 95
+39dc4 10 3138 95
+FUNC 39dd4 10 0 testing::TestCase::reportable_disabled_test_count
+39dd4 10 2642 95
+FUNC 39de4 10 0 testing::TestCase::reportable_test_count
+39de4 10 2652 95
+FUNC 39df4 10 0 testing::TestCase::test_to_run_count
+39df4 10 2657 95
+FUNC 39e04 c 0 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string
+39e04 2 121 136
+39e06 2 121 136
+39e08 4 156 137
+39e0c 4 121 136
+FUNC 39e10 18 0 testing::internal::AssertHelper::~AssertHelper
+39e10 2 358 95
+39e12 2 358 95
+39e14 4 359 95
+39e18 6 156 137
+39e1e 6 359 95
+39e24 4 360 95
+FUNC 39e28 1c 0 testing::TestPartResult::~TestPartResult
+39e28 2 47 81
+39e2a 2 47 81
+39e2c 14 156 137
+39e40 4 47 81
+FUNC 39e44 1c 0 testing::internal::XmlUnitTestResultPrinter::~XmlUnitTestResultPrinter
+39e44 2 3299 95
+39e46 c 3299 95
+39e52 4 156 137
+39e56 a 3299 95
+FUNC 39e60 12 0 testing::internal::XmlUnitTestResultPrinter::~XmlUnitTestResultPrinter
+39e60 2 3299 95
+39e62 6 3299 95
+39e68 6 3299 95
+39e6e 4 3299 95
+FUNC 39e72 2e 0 std::priv::_Impl_vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::~_Impl_vector
+39e72 2 304 144
+39e74 2 304 144
+39e76 6 65 118
+39e7c 2 74 118
+39e7e 4 191 108
+39e82 2 121 136
+39e84 6 156 137
+39e8a 4 81 118
+39e8e 4 87 144
+39e92 2 88 144
+39e94 6 323 106
+39e9a 6 304 144
+FUNC 39ea0 28 0 testing::internal::scoped_ptr<testing::internal::InternalRunDeathTestFlag>::reset
+39ea0 2 1152 87
+39ea2 2 1153 87
+39ea4 2 1152 87
+39ea6 2 1153 87
+39ea8 2 1152 87
+39eaa 2 1153 87
+39eac 2 1155 87
+39eae 6 244 83
+39eb4 4 2314 87
+39eb8 6 156 137
+39ebe 6 1155 87
+39ec4 4 1157 87
+FUNC 39ec8 30 0 testing::internal::TestEventRepeater::~TestEventRepeater
+39ec8 2 3222 95
+39eca e 3222 95
+39ed8 4 60 103
+39edc a 61 103
+39ee6 8 304 144
+39eee a 3224 95
+FUNC 39ef8 12 0 testing::internal::TestEventRepeater::~TestEventRepeater
+39ef8 2 3222 95
+39efa 2 3222 95
+39efc 4 3224 95
+39f00 6 3224 95
+39f06 4 3224 95
+FUNC 39f0a 84 0 std::priv::_Impl_vector<int, std::allocator<int> >::push_back
+39f0a 4 376 144
+39f0e 4 380 144
+39f12 2 376 144
+39f14 2 380 144
+39f16 2 376 144
+39f18 4 380 144
+39f1c 2 126 108
+39f1e 8 382 144
+39f26 6 192 144
+39f2c 8 175 144
+39f34 6 176 144
+39f3a 4 176 144
+39f3e 4 176 144
+39f42 8 347 106
+39f4a 4 348 106
+39f4e 2 353 106
+39f50 4 352 106
+39f54 a 112 143
+39f5e c 481 105
+39f6a 4 657 144
+39f6e 2 319 106
+39f70 4 323 106
+39f74 4 118 143
+39f78 4 667 144
+39f7c 4 668 144
+39f80 4 346 106
+39f84 4 356 106
+39f88 6 388 144
+FUNC 39f0a 84 0 std::priv::_Impl_vector<unsigned int, std::allocator<unsigned int> >::push_back
+FUNC 39f90 3c 0 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::reserve
+39f90 2 158 135
+39f92 4 159 135
+39f96 a 600 135
+39fa0 a 400 136
+39faa 2 72 137
+39fac 4 72 137
+39fb0 2 72 137
+39fb2 4 162 135
+39fb6 4 72 137
+39fba 4 163 135
+39fbe 4 167 135
+39fc2 a 166 135
+FUNC 39fcc 16 0 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator=
+39fcc 2 348 136
+39fce 2 347 136
+39fd0 4 347 136
+39fd4 2 348 136
+39fd6 8 349 136
+39fde 4 351 136
+FUNC 39fe2 1e 0 std::priv::_Impl_vector<testing::TestPartResult, std::allocator<testing::TestPartResult> >::clear
+39fe2 6 650 144
+39fe8 2 630 144
+39fea 2 650 144
+39fec 4 630 144
+39ff0 2 57 108
+39ff2 2 191 108
+39ff4 4 57 108
+39ff8 4 191 108
+39ffc 4 615 144
+FUNC 3a000 38 0 testing::TestResult::Clear
+3a000 2 2123 95
+3a002 2 2123 95
+3a004 a 228 148
+3a00e 6 630 144
+3a014 a 156 137
+3a01e 2 191 108
+3a020 4 156 137
+3a024 4 191 108
+3a028 2 615 144
+3a02a 2 2126 95
+3a02c 2 2127 95
+3a02e 2 2126 95
+3a030 8 2127 95
+FUNC 3a038 22 0 testing::TestCase::ClearResult
+3a038 2 2741 95
+3a03a 2 2741 95
+3a03c a 2742 95
+3a046 6 60 103
+3a04c c 740 82
+3a058 2 2744 95
+FUNC 3a05c 14c 0 testing::Test::~Test
+3a05c 4 2180 95
+3a060 2 2180 95
+3a062 2 2181 95
+3a064 8 2180 95
+3a06c 4 2181 95
+3a070 8 186 91
+3a078 8 187 91
+3a080 2 189 91
+3a082 4 188 91
+3a086 2 189 91
+3a088 2 188 91
+3a08a 4 189 91
+3a08e 2 188 91
+3a090 4 189 91
+3a094 12 190 91
+3a0a6 2 192 91
+3a0a8 8 191 91
+3a0b0 8 192 91
+3a0b8 2 191 91
+3a0ba 4 192 91
+3a0be 10 193 91
+3a0ce 2 194 91
+3a0d0 2 195 91
+3a0d2 4 194 91
+3a0d6 4 195 91
+3a0da 2 194 91
+3a0dc 4 195 91
+3a0e0 2 194 91
+3a0e2 4 195 91
+3a0e6 a 196 91
+3a0f0 a 197 91
+3a0fa a 198 91
+3a104 a 199 91
+3a10e 2 201 91
+3a110 6 200 91
+3a116 6 201 91
+3a11c 2 200 91
+3a11e 2 201 91
+3a120 2 200 91
+3a122 4 201 91
+3a126 8 202 91
+3a12e 2 156 137
+3a130 2 202 91
+3a132 22 156 137
+3a154 6 2181 95
+3a15a 4e 2182 95
+FUNC 3a1a8 a 0 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::append
+3a1a8 2 516 136
+3a1aa 8 517 136
+FUNC 3a1b2 ac 0 std::priv::__find_if<testing::TestCase**, testing::internal::TestCaseNameIs>
+3a1b2 4 159 104
+3a1b6 6 159 104
+3a1bc 4 162 104
+3a1c0 4 164 104
+3a1c4 c 165 104
+3a1d0 a 168 104
+3a1da 2 166 104
+3a1dc 4 168 104
+3a1e0 a 171 104
+3a1ea 4 169 104
+3a1ee 4 171 104
+3a1f2 a 174 104
+3a1fc 4 172 104
+3a200 6 174 104
+3a206 4 164 104
+3a20a 16 178 104
+3a220 a 180 104
+3a22a 2 181 104
+3a22c a 183 104
+3a236 2 184 104
+3a238 14 186 104
+3a24c e 190 104
+3a25a 4 192 104
+FUNC 3a25e 22 0 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_range_initialize
+3a25e 2 376 136
+3a260 6 376 136
+3a266 2 378 136
+3a268 6 379 136
+3a26e a 148 142
+3a278 2 101 108
+3a27a 2 380 136
+3a27c 4 101 108
+FUNC 3a280 30 0 testing::internal::AssertHelper::AssertHelper
+3a280 4 351 95
+3a284 2 351 95
+3a286 2 355 95
+3a288 6 351 95
+3a28e 4 355 95
+3a292 2 1784 82
+3a294 2 355 95
+3a296 8 1784 82
+3a29e 8 1784 82
+3a2a6 2 356 95
+3a2a8 2 355 95
+3a2aa 6 356 95
+FUNC 3a2b0 18 0 testing::internal::UnitTestImpl::CurrentOsStackTraceExceptTop
+3a2b0 2 778 95
+3a2b2 2 778 95
+3a2b4 a 780 95
+3a2be a 781 95
+FUNC 3a2c8 50 0 testing::internal::XmlUnitTestResultPrinter::XmlUnitTestResultPrinter
+3a2c8 2 3372 95
+3a2ca 2 3372 95
+3a2cc 2 3373 95
+3a2ce 2 3373 95
+3a2d0 8 3373 95
+3a2d8 6 3373 95
+3a2de 2 3374 95
+3a2e0 6 3374 95
+3a2e6 14 3375 95
+3a2fa 6 3376 95
+3a300 6 3377 95
+3a306 12 3379 95
+FUNC 3a318 18 0 testing::internal::OsStackTraceGetter::CurrentStackTrace
+3a318 2 3797 95
+3a31a 2 3797 95
+3a31c a 3798 95
+3a326 a 3799 95
+FUNC 3a330 88 0 std::priv::_Impl_vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_M_range_initialize<char const* const*>
+3a330 4 699 144
+3a334 2 342 106
+3a336 4 355 119
+3a33a 2 342 106
+3a33c 6 699 144
+3a342 2 342 106
+3a344 8 343 106
+3a34c 4 343 106
+3a350 2 346 106
+3a352 a 347 106
+3a35c 4 348 106
+3a360 4 352 106
+3a364 2 348 106
+3a366 8 352 106
+3a36e 2 346 106
+3a370 2 356 106
+3a372 2 703 144
+3a374 2 84 142
+3a376 4 703 144
+3a37a 4 702 144
+3a37e 4 703 144
+3a382 4 139 108
+3a386 4 86 142
+3a38a 2 139 108
+3a38c a 139 108
+3a396 2 88 142
+3a398 a 89 142
+3a3a2 4 704 144
+3a3a6 12 705 144
+FUNC 3a3b8 12 0 testing::internal::FilePath::FilePath
+3a3b8 2 64 84
+3a3ba 6 64 84
+3a3c0 6 65 84
+3a3c6 4 66 84
+FUNC 3a3cc 64 0 testing::internal::GetCurrentExecutableName
+3a3cc c 381 95
+3a3d8 2 61 84
+3a3da 2 381 95
+3a3dc 8 61 84
+3a3e4 2 381 95
+3a3e6 4 61 84
+3a3ea c 387 95
+3a3f6 8 74 84
+3a3fe 6 156 137
+3a404 8 390 95
+3a40c 6 156 137
+3a412 1e 391 95
+FUNC 3a430 22 0 testing::AssertionResult::AssertionResult
+3a430 2 948 95
+3a432 2 952 95
+3a434 2 948 95
+3a436 2 952 95
+3a438 2 1144 87
+3a43a 2 952 95
+3a43c 8 952 95
+3a444 6 951 95
+3a44a 2 952 95
+3a44c 2 1139 87
+3a44e 4 953 95
+FUNC 3a452 2c 0 std::priv::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int>, std::priv::_Select1st<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int> >, std::priv::_MapTraitsT<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int> >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int> > >::_M_create_node
+3a452 2 315 141
+3a454 2 306 106
+3a456 2 315 141
+3a458 6 306 106
+3a45e 6 307 106
+3a464 4 119 108
+3a468 a 68 129
+3a472 2 321 141
+3a474 2 324 141
+3a476 2 321 141
+3a478 2 322 141
+3a47a 4 324 141
+FUNC 3a480 34 0 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string
+3a480 2 183 136
+3a482 2 183 136
+3a484 2 112 137
+3a486 4 481 106
+3a48a 4 400 136
+3a48e 4 205 136
+3a492 8 604 135
+3a49a a 209 136
+3a4a4 8 208 136
+3a4ac 8 210 136
+FUNC 3a4b4 44 0 testing::internal::UnitTestOptions::GetOutputFormat
+3a4b4 4 396 95
+3a4b8 6 396 95
+3a4be 2 398 95
+3a4c0 6 398 95
+3a4c6 8 400 95
+3a4ce 4 403 95
+3a4d2 c 403 95
+3a4de 2 112 137
+3a4e0 2 481 106
+3a4e2 8 225 136
+3a4ea e 404 95
+FUNC 3a4f8 44 0 testing::internal::XmlUnitTestResultPrinter::RemoveInvalidXmlCharacters
+3a4f8 2 3473 95
+3a4fa 4 3473 95
+3a4fe 6 3474 95
+3a504 4 400 136
+3a508 a 3475 95
+3a512 6 3476 95
+3a518 4 3477 95
+3a51c 8 3309 95
+3a524 4 3309 95
+3a528 8 3478 95
+3a530 6 3314 95
+3a536 6 3481 95
+FUNC 3a53c 80 0 testing::internal::StringStreamToString
+3a53c e 1943 95
+3a54a 2 1943 95
+3a54c 6 75 132
+3a552 2 1943 95
+3a554 a 75 132
+3a55e 2 1948 95
+3a560 4 400 136
+3a564 6 1948 95
+3a56a a 1949 95
+3a574 a 530 136
+3a57e 4 1950 95
+3a582 4 1951 95
+3a586 2 530 136
+3a588 2 1951 95
+3a58a a 530 136
+3a594 6 453 136
+3a59a 6 156 137
+3a5a0 1c 1959 95
+FUNC 3a5bc e 0 testing::Message::GetString
+3a5bc 2 942 95
+3a5be 2 942 95
+3a5c0 6 943 95
+3a5c6 4 944 95
+FUNC 3a5ca 2e 0 testing::Message::Message
+3a5ca 2 907 95
+3a5cc a 907 95
+3a5d6 2 910 95
+3a5d8 6 907 95
+3a5de 2 910 95
+3a5e0 2 1139 87
+3a5e2 6 910 95
+3a5e8 a 910 95
+3a5f2 6 911 95
+FUNC 3a5f8 160 0 testing::Test::Test
+3a5f8 4 2175 95
+3a5fc 2 2176 95
+3a5fe 2 2175 95
+3a600 6 2176 95
+3a606 2 2175 95
+3a608 8 2176 95
+3a610 2 164 91
+3a612 4 164 91
+3a616 2 164 91
+3a618 4 164 91
+3a61c 6 164 91
+3a622 4 164 91
+3a626 8 164 91
+3a62e 4 164 91
+3a632 8 164 91
+3a63a 4 164 91
+3a63e 8 164 91
+3a646 8 164 91
+3a64e 4 164 91
+3a652 4 164 91
+3a656 2 164 91
+3a658 4 164 91
+3a65c 2 165 91
+3a65e 2 168 91
+3a660 4 165 91
+3a664 2 168 91
+3a666 2 165 91
+3a668 2 166 91
+3a66a 2 168 91
+3a66c 6 166 91
+3a672 8 167 91
+3a67a 4 168 91
+3a67e e 169 91
+3a68c 2 171 91
+3a68e 6 170 91
+3a694 2 171 91
+3a696 4 170 91
+3a69a 6 171 91
+3a6a0 c 172 91
+3a6ac 2 173 91
+3a6ae 2 174 91
+3a6b0 4 173 91
+3a6b4 2 174 91
+3a6b6 4 173 91
+3a6ba 6 174 91
+3a6c0 2 175 91
+3a6c2 2 180 91
+3a6c4 4 175 91
+3a6c8 2 180 91
+3a6ca 4 175 91
+3a6ce 2 176 91
+3a6d0 2 180 91
+3a6d2 8 176 91
+3a6da a 177 91
+3a6e4 a 178 91
+3a6ee a 179 91
+3a6f8 4 180 91
+3a6fc 2 2177 95
+3a6fe a 181 91
+3a708 2 2176 95
+3a70a 4e 2177 95
+FUNC 3a758 d0 0 testing::internal::PrintColorEncoded
+3a758 6 5063 95
+3a75e 2 5064 95
+3a760 4 5063 95
+3a764 2 5064 95
+3a766 2 5063 95
+3a768 4 5077 95
+3a76c 4 5082 95
+3a770 2 5063 95
+3a772 2 5063 95
+3a774 2 5064 95
+3a776 2 5077 95
+3a778 2 5082 95
+3a77a 8 5071 95
+3a782 4 5072 95
+3a786 c 5073 95
+3a792 c 5095 95
+3a79e 4 112 137
+3a7a2 2 355 119
+3a7a4 4 324 136
+3a7a8 4 112 137
+3a7ac 4 481 106
+3a7b0 4 324 136
+3a7b4 a 148 142
+3a7be 4 101 108
+3a7c2 2 325 136
+3a7c4 4 101 108
+3a7c8 a 5077 95
+3a7d2 6 156 137
+3a7d8 2 5079 95
+3a7da 2 5080 95
+3a7dc 4 5081 95
+3a7e0 a 5082 95
+3a7ea 4 5083 95
+3a7ee 4 5084 95
+3a7f2 4 5085 95
+3a7f6 4 5086 95
+3a7fa 4 5087 95
+3a7fe 4 5088 95
+3a802 4 5089 95
+3a806 4 5090 95
+3a80a 4 5092 95
+3a80e 1a 5095 95
+FUNC 3a828 a4 0 testing::internal::String::FormatByte
+3a828 6 1934 95
+3a82e 4 1934 95
+3a832 2 1935 95
+3a834 6 1934 95
+3a83a 4 1935 95
+3a83e 2 1934 95
+3a840 4 1935 95
+3a844 2 147 112
+3a846 e 84 114
+3a854 2 126 112
+3a856 2 39 112
+3a858 12 126 112
+3a86a 6 39 112
+3a870 4 1936 95
+3a874 2 39 112
+3a876 4 1936 95
+3a87a 8 79 127
+3a882 6 123 115
+3a888 6 124 115
+3a88e 2 79 127
+3a890 2 254 126
+3a892 6 79 127
+3a898 8 118 115
+3a8a0 4 254 126
+3a8a4 8 75 132
+3a8ac 6 1938 95
+3a8b2 1a 1939 95
+FUNC 3a8cc e8 0 testing::internal::Random::Generate
+3a8cc 2 295 95
+3a8ce 4 297 95
+3a8d2 2 295 95
+3a8d4 e 297 95
+3a8e2 4 299 95
+3a8e6 14 299 95
+3a8fa 16 333 127
+3a910 6 301 95
+3a916 14 301 95
+3a92a 18 333 127
+3a942 a 254 126
+3a94c 12 333 127
+3a95e a 254 126
+3a968 8 333 127
+3a970 6 301 95
+3a976 8 308 95
+3a97e 36 309 95
+FUNC 3a9b4 1c 0 testing::Message::operator<< <char const>
+3a9b4 2 149 79
+3a9b6 4 149 79
+3a9ba 2 333 127
+3a9bc 2 150 79
+3a9be 8 333 127
+3a9c6 a 156 79
+FUNC 3a9d0 5c 0 testing::internal::StreamingListener::SocketWriter::CloseConnection
+3a9d0 2 1094 91
+3a9d2 2 1095 91
+3a9d4 2 1094 91
+3a9d6 4 1095 91
+3a9da 14 1095 91
+3a9ee 18 333 127
+3aa06 6 1095 91
+3aa0c 6 1098 91
+3aa12 6 1099 91
+3aa18 14 1100 91
+FUNC 3aa2c 30 0 testing::internal::StreamingListener::SocketWriter::~SocketWriter
+3aa2c 2 1071 91
+3aa2e a 1071 91
+3aa38 6 1072 91
+3aa3e 4 1073 91
+3aa42 10 156 137
+3aa52 a 1074 91
+FUNC 3aa5c 12 0 testing::internal::StreamingListener::SocketWriter::~SocketWriter
+3aa5c 2 1071 91
+3aa5e 2 1071 91
+3aa60 4 1074 91
+3aa64 6 1074 91
+3aa6a 4 1074 91
+FUNC 3aa70 38 0 testing::internal::StreamableToString<char*>
+3aa70 2 243 79
+3aa72 2 243 79
+3aa74 2 244 79
+3aa76 2 243 79
+3aa78 a 244 79
+3aa82 2 333 127
+3aa84 2 150 79
+3aa86 8 333 127
+3aa8e 8 244 79
+3aa96 6 85 79
+3aa9c c 245 79
+FUNC 3aaa8 50 0 testing::internal::Int32FromEnvOrDie
+3aaa8 2 4702 95
+3aaaa 4 4702 95
+3aaae 4 2328 87
+3aab2 4 4704 95
+3aab6 8 4709 95
+3aabe c 333 127
+3aaca 8 4709 95
+3aad2 a 4710 95
+3aadc 6 85 79
+3aae2 2 4709 95
+3aae4 6 4711 95
+3aaea 4 4713 95
+3aaee 2 4705 95
+3aaf0 8 4714 95
+FUNC 3aaf8 b0 0 testing::internal::CmpHelperSTRNE
+3aaf8 4 1483 95
+3aafc 4 1483 95
+3ab00 4 1484 95
+3ab04 4 1483 95
+3ab08 6 1484 95
+3ab0e 2 277 82
+3ab10 2 1139 87
+3ab12 6 277 82
+3ab18 6 1487 95
+3ab1e 4 277 82
+3ab22 2 1139 87
+3ab24 4 1487 95
+3ab28 6 1487 95
+3ab2e 2 1487 95
+3ab30 2 306 82
+3ab32 6 1487 95
+3ab38 8 1488 95
+3ab40 6 306 82
+3ab46 c 333 127
+3ab52 8 306 82
+3ab5a 6 85 79
+3ab60 8 1489 95
+3ab68 8 1489 95
+3ab70 6 1489 95
+3ab76 a 1489 95
+3ab80 6 1489 95
+3ab86 6 256 82
+3ab8c 1c 1491 95
+FUNC 3aba8 b0 0 testing::internal::GetBoolAssertionFailureMessage
+3aba8 4 1311 95
+3abac 2 1311 95
+3abae 2 1144 87
+3abb0 4 1311 95
+3abb4 6 298 82
+3abba 4 298 82
+3abbe 8 1313 95
+3abc6 c 333 127
+3abd2 a 1314 95
+3abdc 2 333 127
+3abde 2 131 79
+3abe0 8 333 127
+3abe8 8 1315 95
+3abf0 4 1316 95
+3abf4 c 333 127
+3ac00 8 1317 95
+3ac08 2 333 127
+3ac0a 2 131 79
+3ac0c 14 333 127
+3ac20 8 1318 95
+3ac28 8 1319 95
+3ac30 6 85 79
+3ac36 22 1320 95
+FUNC 3ac58 4 0 std::basic_ostream<char, std::char_traits<char> >::operator<<
+3ac58 4 240 126
+FUNC 3ac5c 64 0 testing::internal::MutexBase::Lock
+3ac5c 2 1886 87
+3ac5e 2 1886 87
+3ac60 8 1887 87
+3ac68 14 1887 87
+3ac7c 18 333 127
+3ac94 8 1887 87
+3ac9c 6 1887 87
+3aca2 4 1888 87
+3aca6 2 1889 87
+3aca8 2 1888 87
+3acaa 2 1889 87
+3acac 14 1890 87
+FUNC 3acc0 64 0 testing::internal::GTestMutexLock::~GTestMutexLock
+3acc0 2 1898 87
+3acc2 2 1965 87
+3acc4 4 1965 87
+3acc8 2 1898 87
+3acca 8 1899 87
+3acd2 14 1899 87
+3ace6 18 333 127
+3acfe 8 1899 87
+3ad06 6 1899 87
+3ad0c 18 1965 87
+FUNC 3ad24 1e 0 testing::internal::UnitTestImpl::GetGlobalTestPartResultReporter
+3ad24 2 687 95
+3ad26 2 687 95
+3ad28 2 1963 87
+3ad2a 2 688 95
+3ad2c 8 1963 87
+3ad34 2 689 95
+3ad36 6 689 95
+3ad3c 6 690 95
+FUNC 3ad42 16 0 testing::internal::DefaultPerThreadTestPartResultReporter::ReportTestPartResult
+3ad42 2 681 95
+3ad44 2 682 95
+3ad46 2 681 95
+3ad48 6 682 95
+3ad4e 2 682 95
+3ad50 4 683 95
+3ad54 4 682 95
+FUNC 3ad58 64 0 testing::internal::Mutex::Mutex
+3ad58 2 1943 87
+3ad5a 2 1944 87
+3ad5c 2 1943 87
+3ad5e 8 1944 87
+3ad66 14 1944 87
+3ad7a 18 333 127
+3ad92 8 1944 87
+3ad9a 6 1944 87
+3ada0 2 1945 87
+3ada2 2 1946 87
+3ada4 2 1945 87
+3ada6 16 1946 87
+FUNC 3adbc 24 0 testing::TestResult::TestResult
+3adbc 2 1978 95
+3adbe 2 1978 95
+3adc0 4 1980 95
+3adc4 2 67 144
+3adc6 2 1980 95
+3adc8 4 67 144
+3adcc 2 481 106
+3adce 4 67 144
+3add2 2 481 106
+3add4 8 1980 95
+3addc 4 1981 95
+FUNC 3ade0 68 0 testing::TestInfo::TestInfo
+3ade0 2 2461 95
+3ade2 8 2461 95
+3adea 4 2476 95
+3adee a 2476 95
+3adf8 2 2476 95
+3adfa 8 2476 95
+3ae02 8 2469 95
+3ae0a 2 2476 95
+3ae0c 2 1139 87
+3ae0e 2 2476 95
+3ae10 8 2476 95
+3ae18 8 2470 95
+3ae20 2 2476 95
+3ae22 2 2476 95
+3ae24 2 1139 87
+3ae26 12 2476 95
+3ae38 4 2476 95
+3ae3c 2 2476 95
+3ae3e 4 2476 95
+3ae42 6 2476 95
+FUNC 3ae48 68 0 testing::TestCase::TestCase
+3ae48 4 2674 95
+3ae4c 2 2674 95
+3ae4e 2 2682 95
+3ae50 2 2682 95
+3ae52 4 2682 95
+3ae56 2 2674 95
+3ae58 4 2682 95
+3ae5c 2 2682 95
+3ae5e 2 2674 95
+3ae60 4 2682 95
+3ae64 2 2682 95
+3ae66 8 2682 95
+3ae6e 8 2678 95
+3ae76 2 2682 95
+3ae78 2 67 144
+3ae7a 2 2682 95
+3ae7c 4 67 144
+3ae80 2 481 106
+3ae82 4 67 144
+3ae86 2 481 106
+3ae88 a 2682 95
+3ae92 2 1139 87
+3ae94 6 2682 95
+3ae9a 8 2682 95
+3aea2 e 2683 95
+FUNC 3aeb0 30 0 testing::internal::UnitTestImpl::os_stack_trace_getter
+3aeb0 2 4860 95
+3aeb2 4 4861 95
+3aeb6 2 4860 95
+3aeb8 2 4861 95
+3aeba 8 4862 95
+3aec2 a 442 91
+3aecc 4 442 91
+3aed0 2 442 91
+3aed2 4 4862 95
+3aed6 a 4866 95
+FUNC 3aee0 5c 0 testing::internal::Mutex::~Mutex
+3aee0 2 1947 87
+3aee2 2 1947 87
+3aee4 8 1948 87
+3aeec 14 1948 87
+3af00 18 333 127
+3af18 8 1948 87
+3af20 6 1948 87
+3af26 16 1949 87
+FUNC 3af3c 24 0 testing::UnitTest::~UnitTest
+3af3c 2 4256 95
+3af3e a 4256 95
+3af48 4 4257 95
+3af4c 6 4257 95
+3af52 6 4256 95
+3af58 8 4258 95
+FUNC 3af60 12 0 testing::UnitTest::~UnitTest
+3af60 2 4256 95
+3af62 2 4256 95
+3af64 4 4258 95
+3af68 6 4258 95
+3af6e 4 4258 95
+FUNC 3af74 1c 0 testing::internal::OsStackTraceGetter::~OsStackTraceGetter
+3af74 2 440 91
+3af76 1a 440 91
+FUNC 3af90 12 0 testing::internal::OsStackTraceGetter::~OsStackTraceGetter
+3af90 2 440 91
+3af92 6 440 91
+3af98 6 440 91
+3af9e 4 440 91
+FUNC 3afa2 60 0 testing::TestResult::~TestResult
+3afa2 2 1984 95
+3afa4 2 1984 95
+3afa6 6 65 118
+3afac 2 74 118
+3afae 4 191 108
+3afb2 4 156 137
+3afb6 2 121 136
+3afb8 a 156 137
+3afc2 4 81 118
+3afc6 4 87 144
+3afca 2 88 144
+3afcc 6 323 106
+3afd2 6 65 118
+3afd8 2 74 118
+3afda 4 191 108
+3afde 2 77 118
+3afe0 6 57 108
+3afe6 4 81 118
+3afea 4 87 144
+3afee 2 88 144
+3aff0 6 323 106
+3aff6 6 1984 95
+3affc 6 1985 95
+FUNC 3b002 48 0 testing::TestInfo::~TestInfo
+3b002 2 2479 95
+3b004 6 2479 95
+3b00a 2 2479 95
+3b00c 4 2479 95
+3b010 8 2479 95
+3b018 4 1153 87
+3b01c 6 156 137
+3b022 6 1155 87
+3b028 4 1153 87
+3b02c 6 156 137
+3b032 6 1155 87
+3b038 e 156 137
+3b046 4 2479 95
+FUNC 3b04a 16 0 testing::internal::Delete<testing::TestInfo>
+3b04a 2 339 91
+3b04c 4 340 91
+3b050 4 340 91
+3b054 2 340 91
+3b056 4 341 91
+3b05a 6 340 91
+FUNC 3b060 58 0 testing::TestCase::~TestCase
+3b060 2 2686 95
+3b062 e 2686 95
+3b070 4 60 103
+3b074 a 61 103
+3b07e 8 2686 95
+3b086 4 87 144
+3b08a 2 88 144
+3b08c 6 323 106
+3b092 8 304 144
+3b09a 4 1153 87
+3b09e 6 156 137
+3b0a4 6 1155 87
+3b0aa 6 156 137
+3b0b0 8 2689 95
+FUNC 3b0b8 12 0 testing::TestCase::~TestCase
+3b0b8 2 2686 95
+3b0ba 2 2686 95
+3b0bc 4 2689 95
+3b0c0 6 2689 95
+3b0c6 4 2689 95
+FUNC 3b0cc 80 0 testing::internal::String::FormatIntWidth2
+3b0cc 6 1920 95
+3b0d2 4 1920 95
+3b0d6 2 1921 95
+3b0d8 6 1920 95
+3b0de 4 1921 95
+3b0e2 2 1920 95
+3b0e4 4 1921 95
+3b0e8 2 147 112
+3b0ea e 84 114
+3b0f8 2 126 112
+3b0fa 2 39 112
+3b0fc 12 126 112
+3b10e 6 39 112
+3b114 4 1922 95
+3b118 2 39 112
+3b11a 4 1922 95
+3b11e 6 1922 95
+3b124 8 75 132
+3b12c 6 1923 95
+3b132 1a 1924 95
+FUNC 3b14c 6c 0 testing::internal::String::FormatHexInt
+3b14c e 1927 95
+3b15a 2 1927 95
+3b15c 6 1928 95
+3b162 2 1927 95
+3b164 4 1928 95
+3b168 a 79 127
+3b172 6 123 115
+3b178 6 124 115
+3b17e 8 79 127
+3b186 8 118 115
+3b18e 6 1929 95
+3b194 8 75 132
+3b19c 6 1930 95
+3b1a2 16 1931 95
+FUNC 3b1b8 118 0 testing::internal::ThreadLocal<std::vector<testing::internal::TraceInfo, std::allocator<testing::internal::TraceInfo> > >::GetOrCreateValue
+3b1b8 4 2037 87
+3b1bc 2 2037 87
+3b1be 6 2039 87
+3b1c4 4 2040 87
+3b1c8 2 2021 87
+3b1ca 2 2041 87
+3b1cc 6 2044 87
+3b1d2 2 2019 87
+3b1d4 2 2044 87
+3b1d6 6 2019 87
+3b1dc 4 192 144
+3b1e0 2 70 144
+3b1e2 4 192 144
+3b1e6 4 342 106
+3b1ea 2 70 144
+3b1ec 2 481 106
+3b1ee 2 342 106
+3b1f0 8 343 106
+3b1f8 4 343 106
+3b1fc 2 346 106
+3b1fe 6 347 106
+3b204 4 348 106
+3b208 2 352 106
+3b20a 2 348 106
+3b20c 4 352 106
+3b210 2 356 106
+3b212 4 73 144
+3b216 2 71 144
+3b218 2 72 144
+3b21a 4 73 144
+3b21e 10 86 142
+3b22e 6 86 142
+3b234 6 139 108
+3b23a 18 466 91
+3b252 16 86 142
+3b268 2 249 144
+3b26a c 2046 87
+3b276 14 2046 87
+3b28a 18 333 127
+3b2a2 8 2046 87
+3b2aa 6 2046 87
+3b2b0 2 2021 87
+3b2b2 1e 2048 87
+FUNC 3b2d0 32 0 testing::UnitTest::PopGTestTrace
+3b2d0 2 4270 95
+3b2d2 2 4270 95
+3b2d4 2 1963 87
+3b2d6 2 4271 95
+3b2d8 8 1963 87
+3b2e0 2 752 91
+3b2e2 6 2010 87
+3b2e8 8 563 144
+3b2f0 8 156 137
+3b2f8 6 4272 95
+3b2fe 4 4273 95
+FUNC 3b304 150 0 testing::internal::ShuffleRange<int>
+3b304 4 311 91
+3b308 2 311 91
+3b30a 6 192 144
+3b310 2 314 91
+3b312 4 192 144
+3b316 4 311 91
+3b31a 4 192 144
+3b31e 2 314 91
+3b320 4 314 91
+3b324 4 317 91
+3b328 4 317 91
+3b32c 6 323 91
+3b332 4 323 91
+3b336 e 325 91
+3b344 2 92 105
+3b346 4 91 105
+3b34a 2 323 91
+3b34c 4 92 105
+3b350 6 93 105
+3b356 16 314 91
+3b36c 18 333 127
+3b384 a 240 126
+3b38e 8 333 127
+3b396 8 240 126
+3b39e 8 333 127
+3b3a6 8 314 91
+3b3ae 16 317 91
+3b3c4 18 333 127
+3b3dc a 240 126
+3b3e6 8 333 127
+3b3ee a 240 126
+3b3f8 8 333 127
+3b400 8 240 126
+3b408 8 333 127
+3b410 8 317 91
+3b418 3c 328 91
+FUNC 3b454 58 0 testing::internal::UnitTestImpl::ShuffleTests
+3b454 2 4877 95
+3b456 2 4877 95
+3b458 6 4879 95
+3b45e 4 801 91
+3b462 c 4879 95
+3b46e 4 192 144
+3b472 2 4883 95
+3b474 2 192 144
+3b476 c 4883 95
+3b482 2 4886 95
+3b484 6 192 144
+3b48a 6 4886 95
+3b490 4 4887 95
+3b494 2 333 91
+3b496 6 192 144
+3b49c 2 4886 95
+3b49e 2 192 144
+3b4a0 a 333 91
+3b4aa 2 4889 95
+FUNC 3b4ac 96 0 std::priv::__put_num<char, std::char_traits<char>, double>
+3b4ac 4 194 126
+3b4b0 6 194 126
+3b4b6 a 181 127
+3b4c0 2 199 126
+3b4c2 10 211 126
+3b4d2 2 202 126
+3b4d4 2 145 115
+3b4d6 4 202 126
+3b4da 2 145 115
+3b4dc 2 202 126
+3b4de 6 145 115
+3b4e4 6 202 126
+3b4ea 2 202 126
+3b4ec 2 202 126
+3b4ee c 202 126
+3b4fa 18 57 128
+3b512 1a 89 125
+3b52c 6 202 126
+3b532 4 210 126
+3b536 6 212 126
+3b53c 6 213 126
+FUNC 3b548 74 0 testing::internal::FormatTimeInMillisAsSeconds
+3b548 10 3500 95
+3b558 2 3500 95
+3b55a 4 3501 95
+3b55e 2 3500 95
+3b560 4 3501 95
+3b564 2 3500 95
+3b566 4 3501 95
+3b56a 14 3502 95
+3b57e a 281 126
+3b588 8 75 132
+3b590 6 3503 95
+3b596 26 3504 95
+FUNC 3b5c0 94 0 testing::internal::XmlUnitTestResultPrinter::OutputXmlCDataSection
+3b5c0 4 3530 95
+3b5c4 2 3530 95
+3b5c6 2 333 127
+3b5c8 2 3530 95
+3b5ca 6 333 127
+3b5d0 2 3534 95
+3b5d2 4 333 127
+3b5d6 2 3534 95
+3b5d8 2 333 127
+3b5da 8 3534 95
+3b5e2 4 3535 95
+3b5e6 c 181 127
+3b5f2 2 434 126
+3b5f4 10 444 126
+3b604 2 436 126
+3b606 8 3537 95
+3b60e c 436 126
+3b61a 4 443 126
+3b61e 6 446 126
+3b624 8 333 127
+3b62c 2 3539 95
+3b62e 2 3544 95
+3b630 10 333 127
+3b640 14 3546 95
+FUNC 3b654 bc 0 testing::internal::StreamingListener::SocketWriter::Send
+3b654 2 1077 91
+3b656 2 1078 91
+3b658 2 1077 91
+3b65a 2 1078 91
+3b65c 2 1077 91
+3b65e 2 1078 91
+3b660 14 1078 91
+3b674 18 333 127
+3b68c 8 1078 91
+3b694 2 400 136
+3b696 2 1082 91
+3b698 2 400 136
+3b69a 6 1082 91
+3b6a0 4 1082 91
+3b6a4 14 1083 91
+3b6b8 e 333 127
+3b6c6 c 1085 91
+3b6d2 8 333 127
+3b6da a 1085 91
+3b6e4 6 1083 91
+3b6ea 26 1087 91
+FUNC 3b710 154 0 testing::internal::StreamingListener::SocketWriter::MakeConnection
+3b710 4 3721 95
+3b714 2 3722 95
+3b716 4 3721 95
+3b71a 2 3722 95
+3b71c 6 3721 95
+3b722 2 3722 95
+3b724 10 3722 95
+3b734 1a 333 127
+3b74e 6 3722 95
+3b754 a 3726 95
+3b75e 2 3729 95
+3b760 4 3728 95
+3b764 6 3729 95
+3b76a 6 3734 95
+3b770 4 3728 95
+3b774 4 3734 95
+3b778 4 3735 95
+3b77c 12 3736 95
+3b78e 10 333 127
+3b79e 8 3737 95
+3b7a6 6 333 127
+3b7ac 6 3736 95
+3b7b2 2 3741 95
+3b7b4 6 3741 95
+3b7ba 2 3741 95
+3b7bc 8 3744 95
+3b7c4 2 3745 95
+3b7c6 2 3744 95
+3b7c8 2 3745 95
+3b7ca e 3747 95
+3b7d8 6 3748 95
+3b7de 2 3749 95
+3b7e0 4 3741 95
+3b7e4 6 3754 95
+3b7ea 6 3756 95
+3b7f0 12 3757 95
+3b802 10 333 127
+3b812 c 3758 95
+3b81e 8 333 127
+3b826 a 3758 95
+3b830 6 3757 95
+3b836 2e 3760 95
+FUNC 3b864 5c 0 testing::AssertionResult::operator<< <testing::Message>
+3b864 10 305 82
+3b874 2 305 82
+3b876 2 306 82
+3b878 2 305 82
+3b87a 4 306 82
+3b87e 2 131 79
+3b880 6 233 79
+3b886 2 131 79
+3b888 4 233 79
+3b88c 8 233 79
+3b894 6 156 137
+3b89a 8 306 82
+3b8a2 6 85 79
+3b8a8 18 308 82
+FUNC 3b8c0 d4 0 testing::internal::PrettyUnitTestResultPrinter::OnTestPartResult
+3b8c0 e 3070 95
+3b8ce 2 3070 95
+3b8d0 2 3072 95
+3b8d2 4 3070 95
+3b8d6 4 3072 95
+3b8da 6 2808 95
+3b8e0 4 77 81
+3b8e4 10 2808 95
+3b8f4 a 131 79
+3b8fe c 333 127
+3b90a 2 2785 95
+3b90c 2 2808 95
+3b90e 6 2785 95
+3b914 6 2794 95
+3b91a 6 2797 95
+3b920 4 2787 95
+3b924 6 2809 95
+3b92a 6 2810 95
+3b930 4 2810 95
+3b934 2 2810 95
+3b936 6 2810 95
+3b93c 6 156 137
+3b942 6 85 79
+3b948 8 2817 95
+3b950 e 2818 95
+3b95e 6 156 137
+3b964 6 3077 95
+3b96a 2a 3078 95
+FUNC 3b994 138 0 testing::internal::XmlUnitTestResultPrinter::EscapeXml
+3b994 6 3427 95
+3b99a 2 3430 95
+3b99c 6 3427 95
+3b9a2 2 3427 95
+3b9a4 2 3428 95
+3b9a6 2 3427 95
+3b9a8 2 3428 95
+3b9aa 6 3427 95
+3b9b0 4 3428 95
+3b9b4 2a 333 127
+3b9de 6 400 136
+3b9e4 4 3430 95
+3b9e8 2 3431 95
+3b9ea e 3432 95
+3b9f8 a 333 127
+3ba02 8 3432 95
+3ba0a 14 333 127
+3ba1e 2 3443 95
+3ba20 c 333 127
+3ba2c 2 3449 95
+3ba2e 4 333 127
+3ba32 8 3309 95
+3ba3a 4 3309 95
+3ba3e 4 3314 95
+3ba42 a 305 127
+3ba4c 4 3430 95
+3ba50 8 3466 95
+3ba58 6 85 79
+3ba5e 10 3467 95
+3ba6e 4 3456 95
+3ba72 2 333 127
+3ba74 4 3457 95
+3ba78 8 333 127
+3ba80 8 3457 95
+3ba88 a 131 79
+3ba92 a 333 127
+3ba9c 8 156 137
+3baa4 28 3467 95
+FUNC 3bacc f0 0 testing::internal::XmlUnitTestResultPrinter::TestPropertiesAsXmlAttributes
+3bacc 6 3683 95
+3bad2 2 3685 95
+3bad4 6 3683 95
+3bada 2 3683 95
+3badc 2 3684 95
+3bade 2 3683 95
+3bae0 2 3684 95
+3bae2 4 3683 95
+3bae6 4 3684 95
+3baea 14 333 127
+3bafe c 192 144
+3bb0a 4 3685 95
+3bb0e a 3686 95
+3bb18 a 333 127
+3bb22 c 3687 95
+3bb2e 2 131 79
+3bb30 8 333 127
+3bb38 2 131 79
+3bb3a 4 3688 95
+3bb3e 8 333 127
+3bb46 6 3688 95
+3bb4c 4 3328 95
+3bb50 6 3688 95
+3bb56 a 3328 95
+3bb60 2 131 79
+3bb62 8 131 79
+3bb6a 2 131 79
+3bb6c 8 333 127
+3bb74 c 156 137
+3bb80 4 3685 95
+3bb84 8 3690 95
+3bb8c 6 85 79
+3bb92 2a 3691 95
+FUNC 3bbbc 58 0 testing::Message::Message
+3bbbc 8 96 79
+3bbc4 14 96 79
+3bbd8 2 97 79
+3bbda 6 96 79
+3bbe0 4 97 79
+3bbe4 2 1139 87
+3bbe6 4 97 79
+3bbea a 97 79
+3bbf4 6 156 137
+3bbfa 1a 98 79
+FUNC 3bc14 270 0 testing::internal::ShouldShard
+3bc14 e 4657 95
+3bc22 4 4657 95
+3bc26 4 4664 95
+3bc2a 2 4657 95
+3bc2c 4 4664 95
+3bc30 4 4665 95
+3bc34 2 4664 95
+3bc36 6 4665 95
+3bc3c 2 4667 95
+3bc3e 2 4665 95
+3bc40 2 4667 95
+3bc42 6 4667 95
+3bc48 8 4671 95
+3bc50 24 333 127
+3bc74 a 131 79
+3bc7e 20 333 127
+3bc9e 2 4673 95
+3bca0 4 333 127
+3bca4 8 4673 95
+3bcac 4 85 79
+3bcb0 4 4677 95
+3bcb4 8 4679 95
+3bcbc 24 333 127
+3bce0 a 131 79
+3bcea 20 333 127
+3bd0a 2 4681 95
+3bd0c 4 333 127
+3bd10 8 4681 95
+3bd18 2 4682 95
+3bd1a 6 85 79
+3bd20 8 4682 95
+3bd28 8 4682 95
+3bd30 6 156 137
+3bd36 a 4683 95
+3bd40 6 4684 95
+3bd46 4 4685 95
+3bd4a 4 4685 95
+3bd4e a 4687 95
+3bd58 5a 333 127
+3bdb2 a 131 79
+3bdbc 20 333 127
+3bddc a 131 79
+3bde6 8 333 127
+3bdee 2 4690 95
+3bdf0 4 333 127
+3bdf4 8 4690 95
+3bdfc 2 85 79
+3bdfe 2 4691 95
+3be00 4 85 79
+3be04 6 4691 95
+3be0a a 4696 95
+3be14 2 4668 95
+3be16 6e 4697 95
+FUNC 3be84 a 0 testing::internal::ShouldShard
+3be84 6 4660 95
+3be8a 4 4697 95
+FUNC 3be90 dc 0 testing::GetReservedAttributesForElement
+3be90 4 2074 95
+3be94 4 2074 95
+3be98 e 2075 95
+3bea6 2 67 144
+3bea8 2 272 144
+3beaa 2 67 144
+3beac 2 272 144
+3beae 2 67 144
+3beb0 2 481 106
+3beb2 8 272 144
+3beba e 2077 95
+3bec8 2 272 144
+3beca 4 67 144
+3bece 2 481 106
+3bed0 6 272 144
+3bed6 e 2079 95
+3bee4 4 272 144
+3bee8 4 67 144
+3beec 2 481 106
+3beee c 272 144
+3befa 16 2082 95
+3bf10 18 333 127
+3bf28 8 2082 95
+3bf30 6 2082 95
+3bf36 4 67 144
+3bf3a 2 481 106
+3bf3c 30 2086 95
+FUNC 3bf6c 84 0 testing::internal::ThreadLocal<testing::TestPartResultReporterInterface*>::GetOrCreateValue
+3bf6c 2 2037 87
+3bf6e 2 2037 87
+3bf70 6 2039 87
+3bf76 2 2040 87
+3bf78 2 2021 87
+3bf7a 2 2041 87
+3bf7c 8 2044 87
+3bf84 2 2019 87
+3bf86 2 2046 87
+3bf88 a 2019 87
+3bf92 a 2046 87
+3bf9c 14 2046 87
+3bfb0 18 333 127
+3bfc8 8 2046 87
+3bfd0 6 2046 87
+3bfd6 2 2021 87
+3bfd8 18 2048 87
+FUNC 3bff0 c 0 testing::internal::UnitTestImpl::GetTestPartResultReporterForCurrentThread
+3bff0 2 701 95
+3bff2 6 2011 87
+3bff8 4 703 95
+FUNC 3bffc 1d4 0 testing::UnitTest::AddTestPartResult
+3bffc e 4065 95
+3c00a 4 4065 95
+3c00e 2 4066 95
+3c010 2 4065 95
+3c012 2 4066 95
+3c014 8 4065 95
+3c01c 4 4066 95
+3c020 a 131 79
+3c02a 2 4069 95
+3c02c 6 1963 87
+3c032 2 752 91
+3c034 6 2010 87
+3c03a 6 192 144
+3c040 8 4070 95
+3c048 6 4081 95
+3c04e 24 333 127
+3c072 2 752 91
+3c074 4 4076 95
+3c078 6 2010 87
+3c07e 6 192 144
+3c084 2 333 127
+3c086 2 192 144
+3c088 a 333 127
+3c092 4 4073 95
+3c096 2 752 91
+3c098 2 4075 95
+3c09a 6 2010 87
+3c0a0 4 202 144
+3c0a4 6 333 127
+3c0aa 4 202 144
+3c0ae 8 333 127
+3c0b6 e 4076 95
+3c0c4 a 131 79
+3c0ce a 333 127
+3c0d8 c 131 79
+3c0e4 8 156 137
+3c0ec 6 4081 95
+3c0f2 a 4087 95
+3c0fc 10 68 81
+3c10c 4 68 81
+3c110 a 68 81
+3c11a 2 68 81
+3c11c 4 68 81
+3c120 2 68 81
+3c122 4 68 81
+3c126 a 68 81
+3c130 6 156 137
+3c136 6 4088 95
+3c13c 2 4089 95
+3c13e 4 68 81
+3c142 6 4089 95
+3c148 4 4091 95
+3c14c 8 4097 95
+3c154 6 4108 95
+3c15a 8 4110 95
+3c162 6 4116 95
+3c168 6 4087 95
+3c16e 6 4069 95
+3c174 6 85 79
+3c17a e 4120 95
+3c188 c 333 127
+3c194 c 131 79
+3c1a0 30 4120 95
+FUNC 3c1d0 e 0 testing::internal::UnitTestImpl::SetTestPartResultReporterForCurrentThread
+3c1d0 2 707 95
+3c1d2 2 2010 87
+3c1d4 2 707 95
+3c1d6 4 2010 87
+3c1da 4 2013 87
+FUNC 3c1de 42 0 std::priv::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int>, std::priv::_Select1st<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int> >, std::priv::_MapTraitsT<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int> >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int> > >::_M_find<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >
+3c1de 4 548 141
+3c1e2 4 548 141
+3c1e6 6 549 141
+3c1ec 2 552 141
+3c1ee a 79 111
+3c1f8 4 553 141
+3c1fc 4 554 141
+3c200 4 556 141
+3c204 4 558 141
+3c208 12 79 111
+3c21a 6 564 141
+FUNC 3c220 28 0 std::priv::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int>, std::priv::_Select1st<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int> >, std::priv::_MapTraitsT<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int> >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int> > >::_M_erase
+3c220 6 655 140
+3c226 2 657 140
+3c228 8 658 140
+3c230 4 156 137
+3c234 2 659 140
+3c236 4 156 137
+3c23a c 161 106
+3c246 2 664 140
+FUNC 3c248 20 0 std::priv::_List_global<bool>::_Transfer
+3c248 2 50 120
+3c24a 2 48 120
+3c24c 2 50 120
+3c24e 4 52 120
+3c252 4 53 120
+3c256 4 54 120
+3c25a 2 58 120
+3c25c 2 57 120
+3c25e 2 58 120
+3c260 4 59 120
+3c264 4 60 120
+FUNC 3c268 56 0 testing::internal::edit_distance::::Hunk::PushLine
+3c268 2 208 121
+3c26a 2 1096 95
+3c26c 2 1099 95
+3c26e 2 1096 95
+3c270 4 1099 95
+3c274 4 208 121
+3c278 2 1096 95
+3c27a 2 600 121
+3c27c 4 370 121
+3c280 2 600 121
+3c282 6 602 121
+3c288 6 208 121
+3c28e 4 600 121
+3c292 6 602 121
+3c298 8 306 106
+3c2a0 4 307 106
+3c2a4 4 119 108
+3c2a8 8 68 129
+3c2b0 2 427 121
+3c2b2 2 428 121
+3c2b4 2 429 121
+3c2b6 2 430 121
+3c2b8 2 431 121
+3c2ba 4 1112 95
+FUNC 3c2be 26 0 std::operator==<char, std::char_traits<char>, std::allocator<char> >
+3c2be 2 287 139
+3c2c0 6 287 139
+3c2c6 a 400 136
+3c2d0 4 289 139
+3c2d4 4 226 145
+3c2d8 8 289 139
+3c2e0 2 289 139
+3c2e2 2 290 139
+FUNC 3c2e4 a8 0 std::priv::__find<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >
+3c2e4 4 112 104
+3c2e8 2 115 104
+3c2ea 8 112 104
+3c2f2 8 115 104
+3c2fa 4 117 104
+3c2fe a 118 104
+3c308 4 119 104
+3c30c e 121 104
+3c31a e 124 104
+3c328 c 127 104
+3c334 4 117 104
+3c338 18 131 104
+3c350 a 133 104
+3c35a 2 134 104
+3c35c a 136 104
+3c366 2 137 104
+3c368 8 139 104
+3c370 a 139 104
+3c37a 4 143 104
+3c37e 2 136 104
+3c380 c 145 104
+FUNC 3c38c 10c 0 testing::internal::XmlUnitTestResultPrinter::OutputXmlAttribute
+3c38c e 3552 95
+3c39a 2 3552 95
+3c39c 2 3554 95
+3c39e 4 3552 95
+3c3a2 2 3554 95
+3c3a4 4 3552 95
+3c3a8 8 3554 95
+3c3b0 e 223 104
+3c3be 6 3556 95
+3c3c4 12 3556 95
+3c3d6 18 333 127
+3c3ee a 3558 95
+3c3f8 8 333 127
+3c400 8 3558 95
+3c408 8 333 127
+3c410 6 3556 95
+3c416 a 333 127
+3c420 a 3561 95
+3c42a 2 333 127
+3c42c 2 3328 95
+3c42e 6 333 127
+3c434 a 3328 95
+3c43e 8 3561 95
+3c446 8 333 127
+3c44e 6 156 137
+3c454 6 42 148
+3c45a 3e 3562 95
+FUNC 3c498 ac 0 std::priv::_Impl_vector<void*, std::allocator<void*> >::_M_insert_overflow
+3c498 4 108 143
+3c49c 2 108 143
+3c49e 6 192 144
+3c4a4 4 173 144
+3c4a8 2 108 143
+3c4aa 2 192 144
+3c4ac 4 173 144
+3c4b0 4 108 143
+3c4b4 2 173 144
+3c4b6 8 41 143
+3c4be 8 175 144
+3c4c6 6 176 144
+3c4cc 4 176 144
+3c4d0 4 176 144
+3c4d4 8 347 106
+3c4dc 4 348 106
+3c4e0 2 353 106
+3c4e2 4 352 106
+3c4e6 e 112 143
+3c4f4 2 480 105
+3c4f6 4 481 105
+3c4fa 2 480 105
+3c4fc 6 481 105
+3c502 a 115 143
+3c50c e 116 143
+3c51a 4 657 144
+3c51e 2 319 106
+3c520 4 323 106
+3c524 4 118 143
+3c528 4 666 144
+3c52c 2 667 144
+3c52e 2 668 144
+3c530 6 119 143
+3c536 4 346 106
+3c53a a 356 106
+FUNC 3c544 28 0 std::priv::_Impl_vector<void*, std::allocator<void*> >::push_back
+3c544 2 376 144
+3c546 2 376 144
+3c548 a 380 144
+3c552 2 126 108
+3c554 8 382 144
+3c55c c 386 144
+3c568 4 388 144
+FUNC 3c56c 18 0 testing::TestEventListeners::Append
+3c56c 4 3854 95
+3c570 6 3855 95
+3c576 8 173 148
+3c57e 6 3856 95
+FUNC 3c584 2a 0 testing::TestEventListeners::SetDefaultResultPrinter
+3c584 2 3878 95
+3c586 2 3878 95
+3c588 2 3879 95
+3c58a 2 3878 95
+3c58c 4 3879 95
+3c590 6 3882 95
+3c596 2 3882 95
+3c598 4 3882 95
+3c59c 2 3883 95
+3c59e 2 3884 95
+3c5a0 4 3885 95
+3c5a4 4 3887 95
+3c5a8 6 3885 95
+FUNC 3c5b0 1c8 0 testing::internal::UnitTestImpl::UnitTestImpl
+3c5b0 6 4277 95
+3c5b6 2 4305 95
+3c5b8 2 4277 95
+3c5ba 4 4305 95
+3c5be 2 61 84
+3c5c0 2 4305 95
+3c5c2 2 61 84
+3c5c4 2 4305 95
+3c5c6 a 61 84
+3c5d0 a 669 95
+3c5da a 678 95
+3c5e4 6 4305 95
+3c5ea 8 4305 95
+3c5f2 e 2032 87
+3c600 2 4277 95
+3c602 4 4305 95
+3c606 2 4277 95
+3c608 4 2032 87
+3c60c 10 2032 87
+3c61c 1a 333 127
+3c636 8 2032 87
+3c63e 6 2032 87
+3c644 2 2034 87
+3c646 2 67 144
+3c648 2 1999 87
+3c64a 4 4305 95
+3c64e 4 1999 87
+3c652 2 4305 95
+3c654 4 67 144
+3c658 2 481 106
+3c65a 4 67 144
+3c65e 2 481 106
+3c660 4 67 144
+3c664 2 481 106
+3c666 4 67 144
+3c66a 2 481 106
+3c66c c 4305 95
+3c678 4 4305 95
+3c67c 4 4305 95
+3c680 4 4305 95
+3c684 6 4305 95
+3c68a 18 4305 95
+3c6a2 4 712 85
+3c6a6 4 1139 87
+3c6aa 6 4305 95
+3c6b0 2 148 83
+3c6b2 2 2032 87
+3c6b4 2 148 83
+3c6b6 2 2032 87
+3c6b8 4 148 83
+3c6bc 4 1139 87
+3c6c0 a 2032 87
+3c6ca 10 2032 87
+3c6da 1a 333 127
+3c6f4 8 2032 87
+3c6fc 6 2032 87
+3c702 2 2034 87
+3c704 2 4306 95
+3c706 4 1997 87
+3c70a a 67 144
+3c714 4 481 106
+3c718 4 4305 95
+3c71c 4 4306 95
+3c720 2 2981 95
+3c722 2 4306 95
+3c724 6 2981 95
+3c72a 6 4306 95
+3c730 48 4307 95
+FUNC 3c778 2c 0 testing::UnitTest::UnitTest
+3c778 2 4251 95
+3c77a 10 4251 95
+3c78a a 4252 95
+3c794 6 4252 95
+3c79a 2 4252 95
+3c79c 8 4253 95
+FUNC 3c7a4 44 0 testing::UnitTest::GetInstance
+3c7a4 2 3924 95
+3c7a6 a 3940 95
+3c7b0 c 3940 95
+3c7bc a 3940 95
+3c7c6 2 3940 95
+3c7c8 4 3940 95
+3c7cc 1c 3943 95
+FUNC 3c7e8 194 0 testing::internal::UnitTestOptions::GetAbsolutePathToOutputFile
+3c7e8 e 408 95
+3c7f6 10 408 95
+3c806 2 410 95
+3c808 c 411 95
+3c814 a 413 95
+3c81e 2 414 95
+3c820 6 418 95
+3c826 6 418 95
+3c82c 2 418 95
+3c82e 6 418 95
+3c834 8 418 95
+3c83c 8 418 95
+3c844 4 418 95
+3c848 6 418 95
+3c84e 8 418 95
+3c856 a 418 95
+3c860 8 418 95
+3c868 14 156 137
+3c87c 2 420 95
+3c87e 4 420 95
+3c882 2 420 95
+3c884 6 420 95
+3c88a 8 420 95
+3c892 6 156 137
+3c898 8 421 95
+3c8a0 6 426 95
+3c8a6 6 426 95
+3c8ac 4 426 95
+3c8b0 6 426 95
+3c8b6 4 426 95
+3c8ba 8 426 95
+3c8c2 4 426 95
+3c8c6 2 426 95
+3c8c8 6 426 95
+3c8ce 8 426 95
+3c8d6 a 426 95
+3c8e0 8 74 84
+3c8e8 1e 156 137
+3c906 8 430 95
+3c90e 8 431 95
+3c916 2 431 95
+3c918 8 435 95
+3c920 2 435 95
+3c922 6 435 95
+3c928 c 435 95
+3c934 c 156 137
+3c940 8 436 95
+3c948 c 156 137
+3c954 28 437 95
+FUNC 3c97c a 0 testing::internal::GetUnitTestImpl
+3c97c 2 936 91
+3c97e 4 937 91
+3c982 4 938 91
+FUNC 3c986 46 0 testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>
+3c986 4 2370 95
+3c98a 6 2370 95
+3c990 14 2395 95
+3c9a4 a 2362 95
+3c9ae c 2418 95
+3c9ba 4 2418 95
+3c9be 2 2418 95
+3c9c0 4 2418 95
+3c9c4 6 2420 95
+3c9ca 2 2418 95
+FUNC 3c986 46 0 testing::internal::HandleExceptionsInMethodIfSupported<testing::TestCase, void>
+FUNC 3c9cc 1c 0 testing::Test::HasFatalFailure
+3c9cc 2 2447 95
+3c9ce 4 2448 95
+3c9d2 6 4872 95
+3c9d8 6 4872 95
+3c9de 2 4872 95
+3c9e0 4 2449 95
+3c9e4 4 2448 95
+FUNC 3c9e8 1c 0 testing::Test::HasNonfatalFailure
+3c9e8 2 2452 95
+3c9ea 4 2454 95
+3c9ee 6 4872 95
+3c9f4 6 4872 95
+3c9fa 2 4872 95
+3c9fc 4 2455 95
+3ca00 4 2454 95
+FUNC 3ca04 88 0 testing::UnitTest::Run
+3ca04 8 4137 95
+3ca0c 4 4164 95
+3ca10 2 4137 95
+3ca12 4 4164 95
+3ca16 8 2328 87
+3ca1e 4 3816 95
+3ca22 4 3816 95
+3ca26 8 2298 87
+3ca2e 2 3821 95
+3ca30 2 2298 87
+3ca32 c 3821 95
+3ca3e 8 3822 95
+3ca46 2 4164 95
+3ca48 2 4168 95
+3ca4a 2 1279 82
+3ca4c 2 4168 95
+3ca4e 6 819 91
+3ca54 2 1279 82
+3ca56 4 2395 95
+3ca5a 6 2418 95
+3ca60 4 4212 95
+3ca64 2 4212 95
+3ca66 2 3827 95
+3ca68 4 3827 95
+3ca6c 6 3828 95
+3ca72 1a 4213 95
+FUNC 3ca8c 10 0 testing::internal::ScopedTrace::~ScopedTrace
+3ca8c 2 3780 95
+3ca8e 2 3780 95
+3ca90 4 3782 95
+3ca94 4 3782 95
+3ca98 4 3783 95
+FUNC 3ca9c 2a 0 testing::TestEventListeners::SetDefaultXmlGenerator
+3ca9c 2 3894 95
+3ca9e 2 3894 95
+3caa0 2 3895 95
+3caa2 2 3894 95
+3caa4 4 3895 95
+3caa8 6 3898 95
+3caae 2 3898 95
+3cab0 4 3898 95
+3cab4 2 3899 95
+3cab6 2 3900 95
+3cab8 4 3901 95
+3cabc 4 3903 95
+3cac0 6 3901 95
+FUNC 3cac8 a0 0 testing::internal::UnitTestImpl::ConfigureXmlOutput
+3cac8 8 4352 95
+3cad0 4 4352 95
+3cad4 2 4353 95
+3cad6 4 4352 95
+3cada 2 4353 95
+3cadc 2 4352 95
+3cade 4 4353 95
+3cae2 c 4354 95
+3caee 8 4356 95
+3caf6 c 4356 95
+3cb02 6 4356 95
+3cb08 a 4356 95
+3cb12 8 156 137
+3cb1a a 476 139
+3cb24 2 4357 95
+3cb26 c 4359 95
+3cb32 a 4360 95
+3cb3c 6 156 137
+3cb42 26 4362 95
+FUNC 3cb68 2c 0 testing::TestCase::AddTestInfo
+3cb68 2 2707 95
+3cb6a 8 2707 95
+3cb72 8 173 148
+3cb7a 8 192 144
+3cb82 2 2709 95
+3cb84 4 192 144
+3cb88 4 2709 95
+3cb8c 4 173 148
+3cb90 4 2710 95
+FUNC 3cb94 20 0 std::_Destroy_Range<std::reverse_iterator<testing::internal::TraceInfo*> >
+3cb94 2 219 108
+3cb96 6 65 118
+3cb9c 2 74 118
+3cb9e 4 191 108
+3cba2 4 156 137
+3cba6 2 81 118
+3cba8 4 156 137
+3cbac 4 81 118
+3cbb0 4 221 108
+FUNC 3cbb4 34 0 testing::internal::ThreadLocal<std::vector<testing::internal::TraceInfo, std::allocator<testing::internal::TraceInfo> > >::ValueHolder::~ValueHolder
+3cbb4 2 2017 87
+3cbb6 4 2017 87
+3cbba 2 304 144
+3cbbc 6 2017 87
+3cbc2 6 64 118
+3cbc8 2 304 144
+3cbca 2 64 118
+3cbcc 4 304 144
+3cbd0 4 87 144
+3cbd4 2 88 144
+3cbd6 6 323 106
+3cbdc c 2017 87
+FUNC 3cbe8 12 0 testing::internal::ThreadLocal<std::vector<testing::internal::TraceInfo, std::allocator<testing::internal::TraceInfo> > >::ValueHolder::~ValueHolder
+3cbe8 2 2017 87
+3cbea 6 2017 87
+3cbf0 6 2017 87
+3cbf6 4 2017 87
+FUNC 3cbfc 19c 0 testing::internal::UnitTestImpl::~UnitTestImpl
+3cbfc 2 4309 95
+3cbfe e 4309 95
+3cc0c 4 60 103
+3cc10 e 61 103
+3cc1e 4 60 103
+3cc22 a 61 103
+3cc2c 6 4316 95
+3cc32 6 4316 95
+3cc38 8 2003 87
+3cc40 4 2003 87
+3cc44 e 2007 87
+3cc52 12 2007 87
+3cc64 18 333 127
+3cc7c 8 2007 87
+3cc84 6 2007 87
+3cc8a c 64 118
+3cc96 2 304 144
+3cc98 4 64 118
+3cc9c 4 304 144
+3cca0 6 87 144
+3cca6 4 88 144
+3ccaa 6 323 106
+3ccb0 6 1153 87
+3ccb6 6 1155 87
+3ccbc a 1140 87
+3ccc6 8 4309 95
+3ccce a 4309 95
+3ccd8 6 560 86
+3ccde 8 562 86
+3cce6 8 562 86
+3ccee 8 304 144
+3ccf6 4 87 144
+3ccfa 2 88 144
+3ccfc 6 323 106
+3cd02 10 304 144
+3cd12 6 2003 87
+3cd18 4 2003 87
+3cd1c a 2007 87
+3cd26 12 2007 87
+3cd38 18 333 127
+3cd50 8 2007 87
+3cd58 6 2007 87
+3cd5e 8 4309 95
+3cd66 8 156 137
+3cd6e 2a 4317 95
+FUNC 3cd98 12 0 testing::internal::UnitTestImpl::~UnitTestImpl
+3cd98 2 4309 95
+3cd9a 2 4309 95
+3cd9c 4 4317 95
+3cda0 6 4317 95
+3cda6 4 4317 95
+FUNC 3cdac 98 0 testing::internal::StreamingListener::UrlEncode
+3cdac e 3702 95
+3cdba 2 3702 95
+3cdbc 2 3703 95
+3cdbe 4 3702 95
+3cdc2 4 3703 95
+3cdc6 6 3704 95
+3cdcc 4 3711 95
+3cdd0 2 3704 95
+3cdd2 6 3704 95
+3cdd8 2 3705 95
+3cdda 2 3711 95
+3cddc 6 3711 95
+3cde2 2 3705 95
+3cde4 10 3706 95
+3cdf4 6 3711 95
+3cdfa a 3711 95
+3ce04 8 3711 95
+3ce0c c 156 137
+3ce18 2 3712 95
+3ce1a 6 3714 95
+3ce20 6 3705 95
+3ce26 1e 3719 95
+FUNC 3ce44 130 0 testing::internal::UnitTestOptions::FilterMatchesTest
+3ce44 18 485 95
+3ce5c 2 485 95
+3ce5e a 486 95
+3ce68 2 486 95
+3ce6a 4 486 95
+3ce6e a 486 95
+3ce78 8 156 137
+3ce80 12 491 95
+3ce92 a 492 95
+3ce9c 2 493 95
+3ce9e 4 492 95
+3cea2 8 493 95
+3ceaa 6 494 95
+3ceb0 a 495 95
+3ceba 8 496 95
+3cec2 4 355 119
+3cec6 4 324 136
+3ceca 2 112 137
+3cecc 2 481 106
+3cece 4 324 136
+3ced2 a 148 142
+3cedc 2 101 108
+3cede 2 325 136
+3cee0 2 498 95
+3cee2 2 101 108
+3cee4 6 498 95
+3ceea 6 156 137
+3cef0 c 499 95
+3cefc 8 499 95
+3cf04 6 156 137
+3cf0a 8 500 95
+3cf12 a 502 95
+3cf1c 8 508 95
+3cf24 4 508 95
+3cf28 8 509 95
+3cf30 6 508 95
+3cf36 12 156 137
+3cf48 2c 510 95
+FUNC 3cf74 148 0 testing::internal::UnitTestImpl::FilterTests
+3cf74 e 4731 95
+3cf82 4 4731 95
+3cf86 6 4733 95
+3cf8c e 4733 95
+3cf9a 10 4735 95
+3cfaa 6 4733 95
+3cfb0 2 4735 95
+3cfb2 2 4743 95
+3cfb4 2 4755 95
+3cfb6 2 4742 95
+3cfb8 4 4755 95
+3cfbc 2 4766 95
+3cfbe 2 4741 95
+3cfc0 4 4766 95
+3cfc4 a 192 144
+3cfce 6 4743 95
+3cfd4 2 860 82
+3cfd6 4 4744 95
+3cfda a 4745 95
+3cfe4 4 4750 95
+3cfe8 4 860 82
+3cfec 6 192 144
+3cff2 6 4748 95
+3cff8 4 4749 95
+3cffc a 4750 95
+3d006 c 4755 95
+3d012 a 4757 95
+3d01c 4 4758 95
+3d020 8 4762 95
+3d028 2 4766 95
+3d02a 4 4763 95
+3d02e 4 4766 95
+3d032 6 4766 95
+3d038 4 4766 95
+3d03c 4 4769 95
+3d040 6 4769 95
+3d046 8 4721 95
+3d04e 4 4770 95
+3d052 4 4766 95
+3d056 2 4770 95
+3d058 2 4769 95
+3d05a 2 4774 95
+3d05c 4 4777 95
+3d060 2 4774 95
+3d062 2 4775 95
+3d064 2 156 137
+3d066 4 4775 95
+3d06a 4 803 82
+3d06e 2 4774 95
+3d070 6 4778 95
+3d076 4 860 82
+3d07a 4 156 137
+3d07e 4 4748 95
+3d082 6 156 137
+3d088 4 4743 95
+3d08c 10 4782 95
+3d09c 2 4766 95
+3d09e 4 4769 95
+3d0a2 1a 4782 95
+FUNC 3d0bc 44 0 testing::internal::StreamingListener::SendLn
+3d0bc 4 1174 91
+3d0c0 2 1143 87
+3d0c2 8 1174 91
+3d0ca 4 1059 91
+3d0ce 2 1174 91
+3d0d0 c 1059 91
+3d0dc 6 1059 91
+3d0e2 6 156 137
+3d0e8 18 1174 91
+FUNC 3d100 44 0 testing::internal::StreamingListener::OnTestProgramStart
+3d100 c 1118 91
+3d10c 2 1119 91
+3d10e 2 1118 91
+3d110 8 1119 91
+3d118 2 1118 91
+3d11a 4 1119 91
+3d11e 8 1119 91
+3d126 6 156 137
+3d12c 18 1120 91
+FUNC 3d144 78 0 testing::internal::StreamingListener::OnTestProgramEnd
+3d144 6 1122 91
+3d14a 8 1122 91
+3d152 2 1125 91
+3d154 2 1122 91
+3d156 4 1125 91
+3d15a 2 1180 91
+3d15c 6 1180 91
+3d162 4 1180 91
+3d166 a 1180 91
+3d170 e 1125 91
+3d17e 8 1125 91
+3d186 c 156 137
+3d192 2 1143 87
+3d194 2 1128 91
+3d196 4 1128 91
+3d19a 22 1129 91
+FUNC 3d1bc 58 0 testing::internal::StreamingListener::OnTestIterationStart
+3d1bc c 1131 91
+3d1c8 2 1131 91
+3d1ca 6 1132 91
+3d1d0 4 1131 91
+3d1d4 4 1132 91
+3d1d8 e 1132 91
+3d1e6 8 1133 91
+3d1ee c 156 137
+3d1fa 1a 1134 91
+FUNC 3d214 180 0 testing::internal::UnitTestImpl::ConfigureStreamingOutput
+3d214 8 4367 95
+3d21c 12 4367 95
+3d22e 6 4369 95
+3d234 6 440 135
+3d23a 6 162 104
+3d240 4 164 104
+3d244 6 165 104
+3d24a 6 168 104
+3d250 4 166 104
+3d254 6 171 104
+3d25a 4 169 104
+3d25e 6 174 104
+3d264 6 172 104
+3d26a 4 164 104
+3d26e 10 178 104
+3d27e 6 180 104
+3d284 2 181 104
+3d286 6 183 104
+3d28c 2 184 104
+3d28e a 186 104
+3d298 2 178 104
+3d29a 4 447 135
+3d29e 2 447 135
+3d2a0 4 4371 95
+3d2a4 32 1023 136
+3d2d6 6 4373 95
+3d2dc 2 1113 91
+3d2de 2 4373 95
+3d2e0 6 1113 91
+3d2e6 6 1113 91
+3d2ec 2 1067 91
+3d2ee 2 1113 91
+3d2f0 a 1067 91
+3d2fa 2 1067 91
+3d2fc 2 1067 91
+3d2fe 6 1067 91
+3d304 a 1067 91
+3d30e 6 1068 91
+3d314 2 1178 91
+3d316 4 1139 87
+3d31a c 1178 91
+3d326 8 1178 91
+3d32e 6 156 137
+3d334 a 4373 95
+3d33e e 156 137
+3d34c a 4376 95
+3d356 a 4377 95
+3d360 34 4380 95
+FUNC 3d394 3c 0 testing::internal::UnitTestImpl::PostFlagParsingInit
+3d394 2 4388 95
+3d396 4 4390 95
+3d39a 2 4388 95
+3d39c 2 4390 95
+3d39e 6 4391 95
+3d3a4 6 760 91
+3d3aa 8 760 91
+3d3b2 6 4395 95
+3d3b8 6 4401 95
+3d3be 6 4405 95
+3d3c4 2 4409 95
+3d3c6 4 4412 95
+3d3ca 6 4409 95
+FUNC 3d3d0 70 0 testing::internal::AppendUserMessage
+3d3d0 8 1963 95
+3d3d8 4 1963 95
+3d3dc 2 1965 95
+3d3de 6 1963 95
+3d3e4 4 1965 95
+3d3e8 2 1963 95
+3d3ea 4 1965 95
+3d3ee 8 1966 95
+3d3f6 a 1967 95
+3d400 e 1970 95
+3d40e a 1970 95
+3d418 c 156 137
+3d424 1c 1971 95
+FUNC 3d440 78 0 testing::internal::AssertHelper::operator=
+3d440 10 363 95
+3d450 4 363 95
+3d454 6 370 95
+3d45a 2 370 95
+3d45c a 370 95
+3d466 4 370 95
+3d46a 2 370 95
+3d46c 6 370 95
+3d472 6 370 95
+3d478 c 370 95
+3d484 10 370 95
+3d494 c 156 137
+3d4a0 18 371 95
+FUNC 3d4b8 224 0 testing::Test::HasSameFixtureClass
+3d4b8 6 2229 95
+3d4be 8 2230 95
+3d4c6 4 743 91
+3d4ca 2 2234 95
+3d4cc 2 2240 95
+3d4ce 6 2234 95
+3d4d4 4 2235 95
+3d4d8 6 2243 95
+3d4de c 2249 95
+3d4ea 4 2249 95
+3d4ee 4 2257 95
+3d4f2 2 2257 95
+3d4f4 2 2259 95
+3d4f6 16 2261 95
+3d50c 6 2262 95
+3d512 24 333 127
+3d536 a 2264 95
+3d540 2 333 127
+3d542 2 131 79
+3d544 a 333 127
+3d54e 4 131 79
+3d552 a 333 127
+3d55c a 2266 95
+3d566 2 333 127
+3d568 2 131 79
+3d56a 8 333 127
+3d572 2 131 79
+3d574 8 333 127
+3d57c a 2267 95
+3d586 2 333 127
+3d588 2 131 79
+3d58a 8 333 127
+3d592 2 131 79
+3d594 a 333 127
+3d59e 2 131 79
+3d5a0 8 333 127
+3d5a8 16 2273 95
+3d5be 6 2274 95
+3d5c4 18 333 127
+3d5dc a 2276 95
+3d5e6 2 333 127
+3d5e8 2 131 79
+3d5ea 8 333 127
+3d5f2 2 131 79
+3d5f4 a 333 127
+3d5fe a 2277 95
+3d608 2 333 127
+3d60a 2 131 79
+3d60c 8 333 127
+3d614 a 2278 95
+3d61e 2 333 127
+3d620 2 131 79
+3d622 8 333 127
+3d62a 2 131 79
+3d62c a 333 127
+3d636 2 131 79
+3d638 a 333 127
+3d642 2 131 79
+3d644 a 333 127
+3d64e 2 131 79
+3d650 a 333 127
+3d65a 8 2282 95
+3d662 6 85 79
+3d668 6 2273 95
+3d66e 4 2284 95
+3d672 2 2287 95
+3d674 68 2288 95
+FUNC 3d6dc a8 0 testing::Test::Run
+3d6dc 4 2425 95
+3d6e0 2 2425 95
+3d6e2 8 2426 95
+3d6ea 6 2428 95
+3d6f0 4 2429 95
+3d6f4 2 2430 95
+3d6f6 2 2429 95
+3d6f8 2 2430 95
+3d6fa 4 2429 95
+3d6fe 16 2430 95
+3d714 6 2432 95
+3d71a 8 2433 95
+3d722 2 2435 95
+3d724 4 2433 95
+3d728 18 2435 95
+3d740 8 2441 95
+3d748 4 2441 95
+3d74c 1e 2443 95
+3d76a 1a 2444 95
+FUNC 3d784 104 0 testing::TestInfo::Run
+3d784 4 2584 95
+3d788 4 2585 95
+3d78c 2 2584 95
+3d78e 2 2584 95
+3d790 4 2585 95
+3d794 4 2588 95
+3d798 4 693 91
+3d79c 2 2588 95
+3d79e 4 2591 95
+3d7a2 2 3871 95
+3d7a4 2 2594 95
+3d7a6 8 3871 95
+3d7ae a 2594 95
+3d7b8 6 2596 95
+3d7be 2 2598 95
+3d7c0 2 2596 95
+3d7c2 6 2598 95
+3d7c8 4 2598 95
+3d7cc 16 2603 95
+3d7e2 14 2395 95
+3d7f6 a 2362 95
+3d800 c 2418 95
+3d80c 6 2418 95
+3d812 2 2418 95
+3d814 4 2418 95
+3d818 4 2418 95
+3d81c 2 2607 95
+3d81e 4 2607 95
+3d822 2 2607 95
+3d824 6 2614 95
+3d82a 4 2616 95
+3d82e 2 2614 95
+3d830 4 2614 95
+3d834 1a 2616 95
+3d84e a 2618 95
+3d858 4 585 82
+3d85c c 2621 95
+3d868 6 693 91
+3d86e 8 2610 95
+3d876 12 2626 95
+FUNC 3d888 d4 0 testing::TestCase::Run
+3d888 4 2713 95
+3d88c 4 2714 95
+3d890 2 2713 95
+3d892 2 2713 95
+3d894 4 2714 95
+3d898 4 2716 95
+3d89c 4 686 91
+3d8a0 2 2716 95
+3d8a2 4 2719 95
+3d8a6 2 3871 95
+3d8a8 2 2721 95
+3d8aa 4 3871 95
+3d8ae 2 2724 95
+3d8b0 a 2721 95
+3d8ba 8 2722 95
+3d8c2 4 2722 95
+3d8c6 16 2724 95
+3d8dc 8 2726 95
+3d8e4 6 192 144
+3d8ea 6 2727 95
+3d8f0 8 2728 95
+3d8f8 4 2728 95
+3d8fc 4 2727 95
+3d900 e 2730 95
+3d90e 6 2732 95
+3d914 2 2734 95
+3d916 2 2732 95
+3d918 4 2732 95
+3d91c 18 2734 95
+3d934 c 2736 95
+3d940 4 686 91
+3d944 18 2738 95
+FUNC 3d95c 2d4 0 testing::internal::UnitTestImpl::RunAllTests
+3d95c 4 4498 95
+3d960 2 320 95
+3d962 2 4498 95
+3d964 2 320 95
+3d966 2 4500 95
+3d968 2 4498 95
+3d96a 2 4500 95
+3d96c 8 4503 95
+3d974 2 4504 95
+3d976 c 4508 95
+3d982 4 4513 95
+3d986 4 4518 95
+3d98a 4 4525 95
+3d98e 2 4529 95
+3d990 6 4525 95
+3d996 c 4529 95
+3d9a2 4 4535 95
+3d9a6 12 4535 95
+3d9b8 8 4538 95
+3d9c0 8 4540 95
+3d9c8 8 4545 95
+3d9d0 6 4545 95
+3d9d6 2 138 91
+3d9d8 4 137 91
+3d9dc 8 143 91
+3d9e4 2 144 91
+3d9e6 4 4545 95
+3d9ea 4 3871 95
+3d9ee 8 4552 95
+3d9f6 a 4553 95
+3da00 2 4557 95
+3da02 a 4557 95
+3da0c 4 4557 95
+3da10 4 4560 95
+3da14 2 4548 95
+3da16 6 4568 95
+3da1c 6 4620 95
+3da22 6 152 91
+3da28 12 333 127
+3da3a e 4560 95
+3da48 6 60 103
+3da4e a 871 82
+3da58 4 4565 95
+3da5c 2 4568 95
+3da5e 4 4565 95
+3da62 2 4568 95
+3da64 6 4568 95
+3da6a 4 714 85
+3da6e 2 4573 95
+3da70 4 714 85
+3da74 4 4573 95
+3da78 c 4577 95
+3da84 6 4580 95
+3da8a 10 4582 95
+3da9a 4 60 103
+3da9e a 61 103
+3daa8 a 4584 95
+3dab2 6 4588 95
+3dab8 a 4596 95
+3dac2 a 64 118
+3dacc 2 4588 95
+3dace 4 594 91
+3dad2 a 192 144
+3dadc 6 4589 95
+3dae2 c 594 91
+3daee 2 595 91
+3daf0 6 595 91
+3daf6 2 595 91
+3daf8 4 4591 95
+3dafc 4 4589 95
+3db00 2 74 118
+3db02 4 60 103
+3db06 8 61 103
+3db0e 4 81 118
+3db12 a 4599 95
+3db1c 16 4602 95
+3db32 c 4605 95
+3db3e 6 576 91
+3db44 2 4609 95
+3db46 2 4618 95
+3db48 4 4609 95
+3db4c 4 4618 95
+3db50 6 4620 95
+3db56 4 4622 95
+3db5a 8 152 91
+3db62 14 152 91
+3db76 16 333 127
+3db8c a 240 126
+3db96 6 333 127
+3db9c 8 240 126
+3dba4 8 333 127
+3dbac 6 152 91
+3dbb2 2 156 91
+3dbb4 2 155 91
+3dbb6 6 156 91
+3dbbc 4 4622 95
+3dbc0 6 4560 95
+3dbc6 6 4560 95
+3dbcc a 4626 95
+3dbd6 6 4628 95
+3dbdc 54 4629 95
+FUNC 3dc30 60 0 testing::internal::StreamingListener::OnTestStart
+3dc30 10 1152 91
+3dc40 2 1153 91
+3dc42 2 1152 91
+3dc44 2 1153 91
+3dc46 2 1153 91
+3dc48 6 1153 91
+3dc4e 2 1152 91
+3dc50 4 1153 91
+3dc54 c 1153 91
+3dc60 8 1153 91
+3dc68 c 156 137
+3dc74 1c 1154 91
+FUNC 3dc90 60 0 testing::internal::StreamingListener::OnTestCaseStart
+3dc90 10 1142 91
+3dca0 2 1143 91
+3dca2 2 1142 91
+3dca4 2 1143 91
+3dca6 2 1143 91
+3dca8 6 1143 91
+3dcae 2 1142 91
+3dcb0 4 1143 91
+3dcb4 c 1143 91
+3dcc0 8 1143 91
+3dcc8 c 156 137
+3dcd4 1c 1144 91
+FUNC 3dcf0 6c 0 testing::FormatCountableNoun
+3dcf0 12 2765 95
+3dd02 2 2765 95
+3dd04 2 2766 95
+3dd06 2 2765 95
+3dd08 4 2766 95
+3dd0c 2 2765 95
+3dd0e 4 2766 95
+3dd12 e 2766 95
+3dd20 12 2767 95
+3dd32 c 156 137
+3dd3e 1e 2768 95
+FUNC 3dd5c 9c 0 testing::internal::PrettyUnitTestResultPrinter::OnTestCaseStart
+3dd5c 6 3048 95
+3dd62 6 3048 95
+3dd68 2 3050 95
+3dd6a 4 3048 95
+3dd6e 4 3050 95
+3dd72 8 3050 95
+3dd7a 2 3050 95
+3dd7c 8 3050 95
+3dd84 a 3051 95
+3dd8e c 3052 95
+3dd9a 2 1144 87
+3dd9c 4 797 82
+3dda0 2 3053 95
+3dda2 8 3054 95
+3ddaa e 3056 95
+3ddb8 a 3058 95
+3ddc2 6 156 137
+3ddc8 30 3059 95
+FUNC 3ddf8 150 0 testing::internal::PrettyUnitTestResultPrinter::OnTestIterationStart
+3ddf8 e 3007 95
+3de06 2 3007 95
+3de08 c 3008 95
+3de14 c 3009 95
+3de20 10 3015 95
+3de30 20 3017 95
+3de50 2 3020 95
+3de52 c 3021 95
+3de5e 6 2328 87
+3de64 2 3025 95
+3de66 2 2328 87
+3de68 a 3025 95
+3de72 8 3028 95
+3de7a 2 798 91
+3de7c e 3031 95
+3de8a a 3034 95
+3de94 6 3037 95
+3de9a 6 2772 95
+3dea0 2 3037 95
+3dea2 a 2772 95
+3deac 8 3037 95
+3deb4 8 2777 95
+3debc 2 3037 95
+3debe 8 2777 95
+3dec6 c 3037 95
+3ded2 e 156 137
+3dee0 a 3038 95
+3deea 5e 3039 95
+FUNC 3df48 1a4 0 testing::internal::FormatEpochTimeInMillisAsIso8601
+3df48 8 3508 95
+3df50 a 3508 95
+3df5a e 3509 95
+3df68 2 3515 95
+3df6a 4 3509 95
+3df6e e 3515 95
+3df7c c 3516 95
+3df88 2 3520 95
+3df8a 2 3520 95
+3df8c c 3520 95
+3df98 2 3520 95
+3df9a 6 3520 95
+3dfa0 e 3520 95
+3dfae 2 3520 95
+3dfb0 c 3520 95
+3dfbc e 3520 95
+3dfca 8 3521 95
+3dfd2 2 3521 95
+3dfd4 6 3521 95
+3dfda 8 3521 95
+3dfe2 e 3521 95
+3dff0 10 3522 95
+3e000 4 3522 95
+3e004 4 3522 95
+3e008 2 3522 95
+3e00a 2 3523 95
+3e00c 6 3522 95
+3e012 a 3522 95
+3e01c 8 3523 95
+3e024 4 3523 95
+3e028 4 3523 95
+3e02c 4 3523 95
+3e030 4 3523 95
+3e034 8 3523 95
+3e03c 4 3524 95
+3e040 a 3523 95
+3e04a 4 3524 95
+3e04e 2 3525 95
+3e050 6 3524 95
+3e056 8 3525 95
+3e05e a 3525 95
+3e068 5a 156 137
+3e0c2 2a 3526 95
+FUNC 3e0ec a4 0 testing::internal::ParseFlagValue
+3e0ec 8 4955 95
+3e0f4 c 4955 95
+3e100 4 4957 95
+3e104 2 4957 95
+3e106 e 4960 95
+3e114 c 4960 95
+3e120 4 4960 95
+3e124 4 4960 95
+3e128 a 4960 95
+3e132 e 156 137
+3e140 2 400 136
+3e142 2 4962 95
+3e144 2 400 136
+3e146 6 4962 95
+3e14c 2 4962 95
+3e14e 4 4965 95
+3e152 6 4968 95
+3e158 2 4968 95
+3e15a 4 4975 95
+3e15e 4 4978 95
+3e162 2 4962 95
+3e164 8 156 137
+3e16c 2 4957 95
+3e16e 22 4979 95
+FUNC 3e190 26 0 testing::internal::ParseBoolFlag
+3e190 2 4991 95
+3e192 2 4991 95
+3e194 6 4993 95
+3e19a 2 4996 95
+3e19c 6 4999 95
+3e1a2 c 4999 95
+3e1ae 2 4999 95
+3e1b0 2 5000 95
+3e1b2 2 4999 95
+3e1b4 2 5001 95
+FUNC 3e1b8 48 0 testing::internal::ParseInt32Flag
+3e1b8 2 5008 95
+3e1ba 2 5008 95
+3e1bc 2 5010 95
+3e1be 2 5008 95
+3e1c0 4 5010 95
+3e1c4 4 5013 95
+3e1c8 8 5016 95
+3e1d0 c 333 127
+3e1dc 8 5016 95
+3e1e4 a 5017 95
+3e1ee 6 85 79
+3e1f4 c 5018 95
+FUNC 3e200 1a 0 testing::internal::ParseStringFlag
+3e200 2 5025 95
+3e202 2 5025 95
+3e204 6 5027 95
+3e20a 4 5030 95
+3e20e 6 5033 95
+3e214 4 5034 95
+3e218 2 5035 95
+FUNC 3e21c 2b8 0 testing::internal::ParseGoogleTestFlagsOnlyImpl<char>
+3e21c e 5165 95
+3e22a 2 5166 95
+3e22c 2 5165 95
+3e22e 4 5165 95
+3e232 2 5176 95
+3e234 4 5180 95
+3e238 6 5176 95
+3e23e 4 5180 95
+3e242 4 5176 95
+3e246 2 5178 95
+3e248 2 5165 95
+3e24a 6 5178 95
+3e250 2 5180 95
+3e252 4 5178 95
+3e256 2 5180 95
+3e258 a 5166 95
+3e262 10 5167 95
+3e272 a 5176 95
+3e27c 6 5175 95
+3e282 a 5178 95
+3e28c 6 5175 95
+3e292 a 5180 95
+3e29c 6 5175 95
+3e2a2 e 5181 95
+3e2b0 4 5175 95
+3e2b4 10 5183 95
+3e2c4 4 5175 95
+3e2c8 10 5185 95
+3e2d8 4 5175 95
+3e2dc e 5186 95
+3e2ea 4 5175 95
+3e2ee 10 5188 95
+3e2fe 4 5175 95
+3e302 e 5189 95
+3e310 4 5175 95
+3e314 e 5190 95
+3e322 4 5175 95
+3e326 e 5191 95
+3e334 4 5175 95
+3e338 e 5192 95
+3e346 2 5175 95
+3e348 e 5193 95
+3e356 2 5175 95
+3e358 e 5194 95
+3e366 2 5175 95
+3e368 e 5196 95
+3e376 2 5175 95
+3e378 e 5198 95
+3e386 2 5175 95
+3e388 e 5200 95
+3e396 4 5175 95
+3e39a a 5225 95
+3e3a4 6 5229 95
+3e3aa 2 5165 95
+3e3ac 8 5206 95
+3e3b4 4 5207 95
+3e3b8 2 5206 95
+3e3ba 6 5207 95
+3e3c0 6 5211 95
+3e3c6 4 5215 95
+3e3ca c 5216 95
+3e3d6 a 5216 95
+3e3e0 2 5216 95
+3e3e2 8 5221 95
+3e3ea 6 156 137
+3e3f0 4 5166 95
+3e3f4 a 5217 95
+3e3fe 4 5216 95
+3e402 a 5217 95
+3e40c 4 5216 95
+3e410 6 5218 95
+3e416 6 5216 95
+3e41c b8 5231 95
+FUNC 3e4d4 f8 0 testing::internal::StreamingListener::OnTestPartResult
+3e4d4 10 1163 91
+3e4e4 4 1163 91
+3e4e8 2 77 81
+3e4ea 2 1163 91
+3e4ec 6 77 81
+3e4f2 2 1165 91
+3e4f4 a 1166 91
+3e4fe 8 1167 91
+3e506 e 1167 91
+3e514 e 1167 91
+3e522 4 1168 91
+3e526 2 1168 91
+3e528 4 1168 91
+3e52c 4 1168 91
+3e530 2 1168 91
+3e532 4 1168 91
+3e536 a 1168 91
+3e540 8 1168 91
+3e548 4 1169 91
+3e54c 8 1168 91
+3e554 4 1169 91
+3e558 2 1169 91
+3e55a 4 1169 91
+3e55e a 1169 91
+3e568 8 1169 91
+3e570 30 156 137
+3e5a0 2c 1170 91
+FUNC 3e5cc 348 0 testing::internal::XmlUnitTestResultPrinter::OutputXmlTestInfo
+3e5cc 14 3568 95
+3e5e0 6 3568 95
+3e5e6 6 3570 95
+3e5ec 2 3568 95
+3e5ee 2 3570 95
+3e5f0 4 700 82
+3e5f4 4 3570 95
+3e5f8 2 700 82
+3e5fa 4 3570 95
+3e5fe a 333 127
+3e608 a 3573 95
+3e612 2 3573 95
+3e614 a 3573 95
+3e61e c 3573 95
+3e62a c 3573 95
+3e636 c 156 137
+3e642 8 1144 87
+3e64a 2 668 82
+3e64c 4 3575 95
+3e650 c 3577 95
+3e65c 4 1144 87
+3e660 4 668 82
+3e664 2 3577 95
+3e666 4 3577 95
+3e66a 6 3577 95
+3e670 c 3577 95
+3e67c c 156 137
+3e688 4 1144 87
+3e68c 2 660 82
+3e68e 4 3579 95
+3e692 c 3580 95
+3e69e 4 1144 87
+3e6a2 4 660 82
+3e6a6 a 3580 95
+3e6b0 e 3580 95
+3e6be c 156 137
+3e6ca c 3584 95
+3e6d6 6 3584 95
+3e6dc 6 3584 95
+3e6e2 4 3584 95
+3e6e6 2 3584 95
+3e6e8 6 3584 95
+3e6ee 8 3584 95
+3e6f6 c 3584 95
+3e702 c 156 137
+3e70e c 3586 95
+3e71a a 3586 95
+3e724 c 3586 95
+3e730 c 156 137
+3e73c c 3587 95
+3e748 a 3587 95
+3e752 2 3587 95
+3e754 4 3591 95
+3e758 2 3590 95
+3e75a a 3587 95
+3e764 c 156 137
+3e770 8 3588 95
+3e778 8 3588 95
+3e780 6 156 137
+3e786 6 3599 95
+3e78c 18 333 127
+3e7a4 10 192 144
+3e7b4 4 3591 95
+3e7b8 8 3592 95
+3e7c0 2 3593 95
+3e7c2 2 3592 95
+3e7c4 4 3593 95
+3e7c8 a 3594 95
+3e7d2 8 333 127
+3e7da 4 77 81
+3e7de 4 3598 95
+3e7e2 2 3599 95
+3e7e4 e 3598 95
+3e7f2 a 3599 95
+3e7fc e 3599 95
+3e80a 2 156 137
+3e80c 2 3601 95
+3e80e 4 156 137
+3e812 8 333 127
+3e81a a 3601 95
+3e824 a 3328 95
+3e82e 8 3601 95
+3e836 6 333 127
+3e83c c 156 137
+3e848 a 3603 95
+3e852 a 3603 95
+3e85c 6 156 137
+3e862 8 3604 95
+3e86a 8 3604 95
+3e872 6 156 137
+3e878 8 333 127
+3e880 12 156 137
+3e892 6 3591 95
+3e898 2 333 127
+3e89a 6 3609 95
+3e8a0 e 333 127
+3e8ae 6 156 137
+3e8b4 60 3613 95
+FUNC 3e914 228 0 testing::internal::XmlUnitTestResultPrinter::PrintXmlTestCase
+3e914 14 3617 95
+3e928 4 3618 95
+3e92c 4 3617 95
+3e930 a 3618 95
+3e93a 2 3617 95
+3e93c 4 3618 95
+3e940 a 333 127
+3e94a 8 3619 95
+3e952 8 3620 95
+3e95a 2 3620 95
+3e95c a 3620 95
+3e966 c 3620 95
+3e972 c 3620 95
+3e97e c 156 137
+3e98a c 3622 95
+3e996 6 3622 95
+3e99c 2 3622 95
+3e99e 2 3622 95
+3e9a0 6 3622 95
+3e9a6 c 3622 95
+3e9b2 c 156 137
+3e9be c 3624 95
+3e9ca 6 3624 95
+3e9d0 2 3624 95
+3e9d2 2 3624 95
+3e9d4 6 3624 95
+3e9da c 3624 95
+3e9e6 c 156 137
+3e9f2 c 3627 95
+3e9fe 6 3627 95
+3ea04 2 3627 95
+3ea06 2 3627 95
+3ea08 6 3627 95
+3ea0e c 3627 95
+3ea1a c 156 137
+3ea26 c 3628 95
+3ea32 c 3628 95
+3ea3e c 3628 95
+3ea4a c 156 137
+3ea56 c 3630 95
+3ea62 a 3630 95
+3ea6c c 3630 95
+3ea78 c 156 137
+3ea84 a 3631 95
+3ea8e 8 3631 95
+3ea96 8 333 127
+3ea9e 6 156 137
+3eaa4 2 3634 95
+3eaa6 a 192 144
+3eab0 6 3634 95
+3eab6 10 3635 95
+3eac6 a 3636 95
+3ead0 4 3634 95
+3ead4 a 333 127
+3eade 8 3638 95
+3eae6 8 333 127
+3eaee 6 156 137
+3eaf4 48 3639 95
+FUNC 3eb3c 2c0 0 testing::internal::XmlUnitTestResultPrinter::PrintXmlUnitTest
+3eb3c 14 3643 95
+3eb50 2 3644 95
+3eb52 4 3643 95
+3eb56 c 3644 95
+3eb62 2 3643 95
+3eb64 4 3644 95
+3eb68 14 333 127
+3eb7c 8 3647 95
+3eb84 12 3650 95
+3eb96 6 3650 95
+3eb9c 2 3650 95
+3eb9e 2 3650 95
+3eba0 8 3650 95
+3eba8 c 3650 95
+3ebb4 c 156 137
+3ebc0 c 3652 95
+3ebcc 6 3652 95
+3ebd2 2 3652 95
+3ebd4 2 3652 95
+3ebd6 6 3652 95
+3ebdc c 3652 95
+3ebe8 c 156 137
+3ebf4 c 3655 95
+3ec00 6 3655 95
+3ec06 2 3655 95
+3ec08 2 3655 95
+3ec0a 6 3655 95
+3ec10 c 3655 95
+3ec1c c 156 137
+3ec28 c 3656 95
+3ec34 c 3656 95
+3ec40 c 3656 95
+3ec4c c 156 137
+3ec58 c 3659 95
+3ec64 4 570 91
+3ec68 a 3659 95
+3ec72 c 3659 95
+3ec7e c 156 137
+3ec8a c 3661 95
+3ec96 4 573 91
+3ec9a a 3661 95
+3eca4 c 3661 95
+3ecb0 c 156 137
+3ecbc 8 3663 95
+3ecc4 c 3665 95
+3ecd0 4 798 91
+3ecd4 2 3665 95
+3ecd6 4 3665 95
+3ecda 2 3665 95
+3ecdc 2 3665 95
+3ecde 4 3665 95
+3ece2 c 3665 95
+3ecee c 156 137
+3ecfa 4 606 91
+3ecfe 8 3668 95
+3ed06 8 3668 95
+3ed0e 6 156 137
+3ed14 e 3670 95
+3ed22 c 3670 95
+3ed2e c 3670 95
+3ed3a c 156 137
+3ed46 a 333 127
+3ed50 2 3673 95
+3ed52 6 3673 95
+3ed58 4 3673 95
+3ed5c 8 3674 95
+3ed64 4 3674 95
+3ed68 4 3674 95
+3ed6c a 3675 95
+3ed76 6 3675 95
+3ed7c 4 3673 95
+3ed80 a 333 127
+3ed8a 8 3677 95
+3ed92 8 333 127
+3ed9a 6 156 137
+3eda0 5c 3678 95
+FUNC 3edfc c8 0 testing::internal::XmlUnitTestResultPrinter::OnTestIterationEnd
+3edfc e 3383 95
+3ee0a 2 3383 95
+3ee0c 2 3385 95
+3ee0e 2 3386 95
+3ee10 2 3383 95
+3ee12 4 3385 95
+3ee16 2 3383 95
+3ee18 4 3385 95
+3ee1c 8 3386 95
+3ee24 a 3388 95
+3ee2e 14 3404 95
+3ee42 6 3405 95
+3ee48 6 3406 95
+3ee4e a 2298 87
+3ee58 6 3391 95
+3ee5e a 3408 95
+3ee68 4 3409 95
+3ee6c 4 3410 95
+3ee70 4 3409 95
+3ee74 8 3410 95
+3ee7c 8 3410 95
+3ee84 6 156 137
+3ee8a 6 3411 95
+3ee90 6 3408 95
+3ee96 c 156 137
+3eea2 22 3412 95
+FUNC 3eec4 2e 0 testing::internal::StreamableToString<long long int>
+3eec4 2 243 79
+3eec6 4 243 79
+3eeca 8 244 79
+3eed2 c 268 126
+3eede 8 244 79
+3eee6 6 85 79
+3eeec 6 245 79
+FUNC 3eef4 b4 0 testing::internal::PrettyUnitTestResultPrinter::OnTestEnd
+3eef4 4 3080 95
+3eef8 4 700 82
+3eefc 8 3080 95
+3ef04 2 540 82
+3ef06 4 3080 95
+3ef0a 4 540 82
+3ef0e 2 3081 95
+3ef10 8 3082 95
+3ef18 a 3084 95
+3ef22 c 2983 95
+3ef2e 6 3087 95
+3ef34 2 3087 95
+3ef36 6 3088 95
+3ef3c 8 3090 95
+3ef44 4 3092 95
+3ef48 6 3092 95
+3ef4e 4 3092 95
+3ef52 4 3092 95
+3ef56 a 3092 95
+3ef60 8 156 137
+3ef68 8 3094 95
+3ef70 a 3096 95
+3ef7a 2e 3097 95
+FUNC 3efa8 1dc 0 testing::internal::PrettyUnitTestResultPrinter::OnTestIterationEnd
+3efa8 c 3144 95
+3efb4 2 3145 95
+3efb6 4 3144 95
+3efba 4 3145 95
+3efbe 2 3144 95
+3efc0 4 3145 95
+3efc4 6 3148 95
+3efca 6 2772 95
+3efd0 2 3148 95
+3efd2 a 2772 95
+3efdc a 3148 95
+3efe6 8 2777 95
+3efee 2 3148 95
+3eff0 8 2777 95
+3eff8 c 3148 95
+3f004 c 156 137
+3f010 8 3149 95
+3f018 2 573 91
+3f01a 6 3151 95
+3f020 2 3151 95
+3f022 4 3151 95
+3f026 4 3151 95
+3f02a a 3151 95
+3f034 6 156 137
+3f03a 6 3153 95
+3f040 a 3154 95
+3f04a 6 3155 95
+3f050 10 2772 95
+3f060 2 3155 95
+3f062 6 2772 95
+3f068 a 3155 95
+3f072 6 156 137
+3f078 8 3157 95
+3f080 8 3158 95
+3f088 8 3159 95
+3f090 a 3160 95
+3f09a c 2772 95
+3f0a6 a 3161 95
+3f0b0 6 156 137
+3f0b6 6 3162 95
+3f0bc 4 3164 95
+3f0c0 6 3164 95
+3f0c6 4 3164 95
+3f0ca a 3164 95
+3f0d4 6 3167 95
+3f0da 4 3168 95
+3f0de 8 3168 95
+3f0e6 2 3169 95
+3f0e8 6 3170 95
+3f0ee 4 3175 95
+3f0f2 6 3175 95
+3f0f8 4 3175 95
+3f0fc e 3175 95
+3f10a a 3178 95
+3f114 70 3179 95
+FUNC 3f184 ac 0 testing::internal::PrettyUnitTestResultPrinter::OnTestCaseEnd
+3f184 e 3099 95
+3f192 2 3099 95
+3f194 2 3100 95
+3f196 2 3099 95
+3f198 8 3100 95
+3f1a0 6 3103 95
+3f1a6 6 3103 95
+3f1ac 2 3103 95
+3f1ae a 3103 95
+3f1b8 a 3104 95
+3f1c2 6 3107 95
+3f1c8 6 3107 95
+3f1ce 8 3107 95
+3f1d6 4 3107 95
+3f1da e 3107 95
+3f1e8 8 156 137
+3f1f0 a 3108 95
+3f1fa 6 156 137
+3f200 30 3109 95
+FUNC 3f230 d8 0 testing::internal::StreamingListener::OnTestEnd
+3f230 8 1156 91
+3f238 8 1156 91
+3f240 4 540 82
+3f244 4 1156 91
+3f248 6 540 82
+3f24e 2 1180 91
+3f250 6 1180 91
+3f256 4 1180 91
+3f25a a 1180 91
+3f264 e 1157 91
+3f272 10 1158 91
+3f282 8 1159 91
+3f28a 2 1159 91
+3f28c c 1159 91
+3f298 a 1159 91
+3f2a2 10 1160 91
+3f2b2 8 1160 91
+3f2ba 24 156 137
+3f2de 2a 1161 91
+FUNC 3f308 d8 0 testing::internal::StreamingListener::OnTestCaseEnd
+3f308 8 1146 91
+3f310 8 1146 91
+3f318 2 830 82
+3f31a 4 1146 91
+3f31e 4 830 82
+3f322 6 1180 91
+3f328 6 1180 91
+3f32e 4 1180 91
+3f332 a 1180 91
+3f33c e 1147 91
+3f34a 14 1148 91
+3f35e 4 1148 91
+3f362 2 1148 91
+3f364 4 1148 91
+3f368 4 1148 91
+3f36c 4 1148 91
+3f370 a 1148 91
+3f37a 10 1149 91
+3f38a 8 1149 91
+3f392 24 156 137
+3f3b6 2a 1150 91
+FUNC 3f3e0 dc 0 testing::internal::StreamingListener::OnTestIterationEnd
+3f3e0 8 1136 91
+3f3e8 8 1136 91
+3f3f0 2 1137 91
+3f3f2 4 1136 91
+3f3f6 6 1137 91
+3f3fc 2 1180 91
+3f3fe 6 1180 91
+3f404 4 1180 91
+3f408 a 1180 91
+3f412 e 1137 91
+3f420 10 1138 91
+3f430 4 573 91
+3f434 4 1138 91
+3f438 2 1138 91
+3f43a 4 1138 91
+3f43e 4 1138 91
+3f442 4 1138 91
+3f446 4 1138 91
+3f44a a 1138 91
+3f454 10 1139 91
+3f464 8 1139 91
+3f46c 24 156 137
+3f490 2c 1140 91
+FUNC 3f4bc f0 0 std::priv::_Impl_vector<testing::internal::edit_distance::EditType, std::allocator<testing::internal::edit_distance::EditType> >::_M_insert_overflow_aux
+3f4bc 4 81 143
+3f4c0 2 81 143
+3f4c2 6 192 144
+3f4c8 4 173 144
+3f4cc 2 81 143
+3f4ce 2 192 144
+3f4d0 4 173 144
+3f4d4 4 81 143
+3f4d8 2 173 144
+3f4da 8 41 143
+3f4e2 8 175 144
+3f4ea 6 176 144
+3f4f0 e 177 144
+3f4fe 6 87 143
+3f504 4 551 106
+3f508 2 91 143
+3f50a 2 551 106
+3f50c 6 86 142
+3f512 2 84 142
+3f514 6 86 142
+3f51a 2 139 108
+3f51c 4 139 108
+3f520 2 88 142
+3f522 2 89 142
+3f524 a 86 142
+3f52e 8 93 143
+3f536 2 119 108
+3f538 8 119 108
+3f540 6 95 143
+3f546 6 314 142
+3f54c 2 249 142
+3f54e 4 249 142
+3f552 2 139 108
+3f554 6 139 108
+3f55a 6 249 142
+3f560 6 98 143
+3f566 2 86 142
+3f568 2 84 142
+3f56a 6 86 142
+3f570 4 86 142
+3f574 2 139 108
+3f576 4 139 108
+3f57a 2 88 142
+3f57c 2 89 142
+3f57e e 86 142
+3f58c 4 662 144
+3f590 2 319 106
+3f592 4 323 106
+3f596 2 104 143
+3f598 4 667 144
+3f59c 4 104 143
+3f5a0 2 668 144
+3f5a2 a 105 143
+FUNC 3f5b0 48e 0 testing::internal::edit_distance::CalculateOptimalEdits
+3f5b0 4 990 95
+3f5b4 4 192 144
+3f5b8 2 990 95
+3f5ba 2 192 144
+3f5bc 2 990 95
+3f5be 8 192 144
+3f5c6 2 70 144
+3f5c8 2 192 144
+3f5ca 2 992 95
+3f5cc 4 342 106
+3f5d0 4 990 95
+3f5d4 4 992 95
+3f5d8 4 70 144
+3f5dc 2 481 106
+3f5de 2 342 106
+3f5e0 8 343 106
+3f5e8 6 343 106
+3f5ee 2 346 106
+3f5f0 6 347 106
+3f5f6 4 348 106
+3f5fa 6 352 106
+3f600 2 356 106
+3f602 4 146 108
+3f606 6 73 144
+3f60c 2 71 144
+3f60e 2 314 142
+3f610 2 249 142
+3f612 4 249 142
+3f616 4 146 108
+3f61a 4 249 142
+3f61e 2 342 106
+3f620 2 244 144
+3f622 8 342 106
+3f62a 2 346 106
+3f62c a 347 106
+3f636 4 348 106
+3f63a 2 352 106
+3f63c 2 348 106
+3f63e 8 352 106
+3f646 2 346 106
+3f648 2 356 106
+3f64a 2 73 144
+3f64c 4 70 144
+3f650 4 314 142
+3f654 2 249 142
+3f656 4 73 144
+3f65a 8 249 142
+3f662 2 348 106
+3f664 2 71 144
+3f666 6 73 144
+3f66c 2 348 106
+3f66e 6 249 142
+3f674 4 139 108
+3f678 4 192 144
+3f67c 4 70 144
+3f680 4 192 144
+3f684 4 342 106
+3f688 4 70 144
+3f68c 4 481 106
+3f690 2 342 106
+3f692 2 346 106
+3f694 2 348 106
+3f696 2 347 106
+3f698 4 348 106
+3f69c 2 352 106
+3f69e 2 353 106
+3f6a0 4 352 106
+3f6a4 2 356 106
+3f6a6 4 73 144
+3f6aa 4 71 144
+3f6ae 4 72 144
+3f6b2 4 73 144
+3f6b6 8 120 142
+3f6be 4 249 144
+3f6c2 8 249 142
+3f6ca 4 70 144
+3f6ce 2 244 144
+3f6d0 8 304 144
+3f6d8 10 192 144
+3f6e8 2 551 106
+3f6ea 4 192 144
+3f6ee 2 994 95
+3f6f0 4 551 106
+3f6f4 8 70 144
+3f6fc 4 481 106
+3f700 4 551 106
+3f704 2 73 144
+3f706 2 314 142
+3f708 6 73 144
+3f70e 2 139 108
+3f710 4 192 144
+3f714 2 314 142
+3f716 4 994 95
+3f71a 2 71 144
+3f71c 2 249 142
+3f71e 4 249 142
+3f722 2 139 108
+3f724 2 139 108
+3f726 6 249 142
+3f72c 2 342 106
+3f72e 2 244 144
+3f730 6 342 106
+3f736 6 346 106
+3f73c 6 347 106
+3f742 2 348 106
+3f744 2 347 106
+3f746 4 348 106
+3f74a 2 352 106
+3f74c 2 348 106
+3f74e 8 352 106
+3f756 2 346 106
+3f758 2 356 106
+3f75a 2 73 144
+3f75c 4 314 142
+3f760 4 73 144
+3f764 4 314 142
+3f768 8 249 142
+3f770 4 70 144
+3f774 2 71 144
+3f776 2 73 144
+3f778 6 314 142
+3f77e 4 551 106
+3f782 4 249 142
+3f786 4 139 108
+3f78a 4 192 144
+3f78e 2 551 106
+3f790 6 192 144
+3f796 8 70 144
+3f79e 4 481 106
+3f7a2 6 551 106
+3f7a8 4 71 144
+3f7ac 4 72 144
+3f7b0 2 73 144
+3f7b2 2 84 142
+3f7b4 a 73 144
+3f7be a 86 142
+3f7c8 6 86 142
+3f7ce 2 139 108
+3f7d0 4 139 108
+3f7d4 2 88 142
+3f7d6 2 89 142
+3f7d8 e 86 142
+3f7e6 4 249 144
+3f7ea 6 249 142
+3f7f0 2 244 144
+3f7f2 2 999 95
+3f7f4 2 244 144
+3f7f6 a 42 148
+3f800 4 997 95
+3f804 6 997 95
+3f80a e 998 95
+3f818 2 997 95
+3f81a 6 998 95
+3f820 6 999 95
+3f826 2 1004 95
+3f828 6 192 144
+3f82e 6 1002 95
+3f834 10 1003 95
+3f844 2 202 144
+3f846 4 1004 95
+3f84a 4 1002 95
+3f84e 2 1002 95
+3f850 4 1028 95
+3f854 2 1002 95
+3f856 12 1023 95
+3f868 6 192 144
+3f86e 18 1007 95
+3f886 8 192 144
+3f88e 6 1008 95
+3f894 14 1009 95
+3f8a8 e 1011 95
+3f8b6 2 1012 95
+3f8b8 8 1011 95
+3f8c0 8 1012 95
+3f8c8 4 1017 95
+3f8cc 8 1016 95
+3f8d4 2 202 144
+3f8d6 8 1017 95
+3f8de 8 1019 95
+3f8e6 8 1018 95
+3f8ee 2 1019 95
+3f8f0 a 1019 95
+3f8fa 8 1020 95
+3f902 1a 1021 95
+3f91c a 1022 95
+3f926 a 1022 95
+3f930 8 1023 95
+3f938 6 1024 95
+3f93e 8 1028 95
+3f946 6 1029 95
+3f94c 8 1008 95
+3f954 c 1007 95
+3f960 2 162 144
+3f962 8 67 144
+3f96a 4 481 106
+3f96e 18 192 144
+3f986 4 162 144
+3f98a 6 1036 95
+3f990 2 1037 95
+3f992 4 380 144
+3f996 2 1037 95
+3f998 4 380 144
+3f99c 4 1037 95
+3f9a0 2 380 144
+3f9a2 2 1037 95
+3f9a4 2 380 144
+3f9a6 2 119 108
+3f9a8 2 119 108
+3f9aa c 382 144
+3f9b6 e 162 144
+3f9c4 8 1039 95
+3f9cc 8 1040 95
+3f9d4 8 1036 95
+3f9dc 4 324 103
+3f9e0 2 91 105
+3f9e2 8 92 105
+3f9ea 4 93 105
+3f9ee 6 65 118
+3f9f4 2 74 118
+3f9f6 4 191 108
+3f9fa 8 42 148
+3fa02 4 81 118
+3fa06 2 87 144
+3fa08 a 323 106
+3fa12 6 65 118
+3fa18 2 74 118
+3fa1a 4 191 108
+3fa1e 2 304 144
+3fa20 6 304 144
+3fa26 4 81 118
+3fa2a 2 87 144
+3fa2c a 323 106
+3fa36 8 1044 95
+FUNC 3fa40 32 0 std::priv::_Impl_vector<testing::TestPartResult, std::allocator<testing::TestPartResult> >::push_back
+3fa40 2 376 144
+3fa42 4 380 144
+3fa46 2 376 144
+3fa48 2 380 144
+3fa4a 4 376 144
+3fa4e 2 380 144
+3fa50 2 119 108
+3fa52 6 119 108
+3fa58 8 382 144
+3fa60 e 162 144
+3fa6e 4 388 144
+FUNC 3fa72 30 0 testing::internal::DefaultGlobalTestPartResultReporter::ReportTestPartResult
+3fa72 2 672 95
+3fa74 2 673 95
+3fa76 2 672 95
+3fa78 4 4872 95
+3fa7c 2 672 95
+3fa7e 2 4872 95
+3fa80 4 4872 95
+3fa84 4 4872 95
+3fa88 8 173 148
+3fa90 2 3871 95
+3fa92 2 674 95
+3fa94 4 675 95
+3fa98 4 3871 95
+3fa9c 2 674 95
+3fa9e 4 674 95
+FUNC 3faa4 194 0 std::priv::_Impl_vector<testing::internal::TraceInfo, std::allocator<testing::internal::TraceInfo> >::_M_insert_overflow_aux
+3faa4 6 81 143
+3faaa 6 192 144
+3fab0 4 173 144
+3fab4 2 81 143
+3fab6 2 81 143
+3fab8 2 192 144
+3faba 6 173 144
+3fac0 2 81 143
+3fac2 2 173 144
+3fac4 8 41 143
+3facc a 175 144
+3fad6 6 176 144
+3fadc 6 176 144
+3fae2 4 176 144
+3fae6 8 347 106
+3faee 6 348 106
+3faf4 4 352 106
+3faf8 6 91 143
+3fafe a 86 142
+3fb08 6 86 142
+3fb0e 6 139 108
+3fb14 18 466 91
+3fb2c 12 86 142
+3fb3e a 93 143
+3fb48 2 119 108
+3fb4a 18 466 91
+3fb62 6 95 143
+3fb68 8 314 142
+3fb70 4 249 142
+3fb74 8 466 91
+3fb7c 6 249 142
+3fb82 4 139 108
+3fb86 18 466 91
+3fb9e 8 249 142
+3fba6 6 98 143
+3fbac e 86 142
+3fbba 6 86 142
+3fbc0 6 139 108
+3fbc6 18 466 91
+3fbde 14 86 142
+3fbf2 6 65 118
+3fbf8 2 74 118
+3fbfa 4 191 108
+3fbfe 4 156 137
+3fc02 2 81 118
+3fc04 4 156 137
+3fc08 4 81 118
+3fc0c 6 662 144
+3fc12 2 319 106
+3fc14 4 323 106
+3fc18 4 104 143
+3fc1c 4 667 144
+3fc20 2 668 144
+3fc22 6 105 143
+3fc28 6 346 106
+3fc2e a 356 106
+FUNC 3fc38 58 0 testing::UnitTest::PushGTestTrace
+3fc38 6 4263 95
+3fc3e 2 4264 95
+3fc40 2 4263 95
+3fc42 6 1963 87
+3fc48 2 752 91
+3fc4a 6 2010 87
+3fc50 4 380 144
+3fc54 2 2010 87
+3fc56 4 380 144
+3fc5a 2 119 108
+3fc5c 14 466 91
+3fc70 8 382 144
+3fc78 e 162 144
+3fc86 6 4265 95
+3fc8c 4 4266 95
+FUNC 3fc90 68 0 testing::internal::ScopedTrace::ScopedTrace
+3fc90 14 3769 95
+3fca4 2 3769 95
+3fca6 6 466 91
+3fcac 2 3769 95
+3fcae 4 466 91
+3fcb2 2 3773 95
+3fcb4 6 3774 95
+3fcba 4 3772 95
+3fcbe 4 3774 95
+3fcc2 8 3774 95
+3fcca 6 156 137
+3fcd0 4 3776 95
+3fcd4 6 3776 95
+3fcda 6 156 137
+3fce0 18 3777 95
+FUNC 3fcf8 b4 0 std::priv::_Impl_vector<unsigned int, google_breakpad::PageStdAllocator<unsigned int> >::_M_fill_insert_aux
+FUNC 3fcf8 b4 0 std::priv::_Impl_vector<void*, google_breakpad::PageStdAllocator<void*> >::_M_fill_insert_aux
+3fcf8 4 140 143
+3fcfc 2 140 143
+3fcfe 2 416 144
+3fd00 2 140 143
+3fd02 2 416 144
+3fd04 6 140 143
+3fd0a 2 416 144
+3fd0c 4 416 144
+3fd10 8 150 143
+3fd18 4 152 143
+3fd1c 6 153 143
+3fd22 a 120 142
+3fd2c 2 154 143
+3fd2e 4 255 105
+3fd32 2 154 143
+3fd34 2 256 105
+3fd36 2 154 143
+3fd38 2 256 105
+3fd3a 8 256 105
+3fd42 2 442 105
+3fd44 4 442 105
+3fd48 4 443 105
+3fd4c 2 442 105
+3fd4e 6 443 105
+3fd54 4 158 143
+3fd58 6 314 142
+3fd5e 2 249 142
+3fd60 8 249 142
+3fd68 2 249 142
+3fd6a 6 146 108
+3fd70 2 158 143
+3fd72 8 120 142
+3fd7a 6 160 143
+3fd80 6 442 105
+3fd86 4 443 105
+3fd8a 4 442 105
+3fd8e 6 443 105
+3fd94 a 146 143
+3fd9e 8 147 143
+3fda6 6 163 143
+FUNC 3fcf8 b4 0 std::priv::_Impl_vector<void*, std::allocator<void*> >::_M_fill_insert_aux
+3fcf8 4 140 143
+3fcfc 2 140 143
+3fcfe 2 416 144
+3fd00 2 140 143
+3fd02 2 416 144
+3fd04 6 140 143
+3fd0a 2 416 144
+3fd0c 4 416 144
+3fd10 8 150 143
+3fd18 4 152 143
+3fd1c 6 153 143
+3fd22 a 120 142
+3fd2c 2 154 143
+3fd2e 4 255 105
+3fd32 2 154 143
+3fd34 2 256 105
+3fd36 2 154 143
+3fd38 2 256 105
+3fd3a 8 256 105
+3fd42 2 442 105
+3fd44 4 442 105
+3fd48 4 443 105
+3fd4c 2 442 105
+3fd4e 6 443 105
+3fd54 4 158 143
+3fd58 6 314 142
+3fd5e 2 249 142
+3fd60 8 249 142
+3fd68 2 249 142
+3fd6a 6 146 108
+3fd70 2 158 143
+3fd72 8 120 142
+3fd7a 6 160 143
+3fd80 6 442 105
+3fd86 4 443 105
+3fd8a 4 442 105
+3fd8e 6 443 105
+3fd94 a 146 143
+3fd9e 8 147 143
+3fda6 6 163 143
+FUNC 3fdac 120 0 testing::internal::UnitTestImpl::GetTestCase
+3fdac 8 4452 95
+3fdb4 8 4452 95
+3fdbc 4 4456 95
+3fdc0 4 4452 95
+3fdc4 4 4456 95
+3fdc8 8 4452 95
+3fdd0 4 4426 95
+3fdd4 4 4452 95
+3fdd8 6 4456 95
+3fdde 2 4422 95
+3fde0 2 4452 95
+3fde2 4 4456 95
+3fde6 8 4426 95
+3fdee 2 217 104
+3fdf0 8 4422 95
+3fdf8 e 217 104
+3fe06 12 156 137
+3fe18 6 4458 95
+3fe1e 6 4459 95
+3fe24 8 4463 95
+3fe2c e 4463 95
+3fe3a 6 4467 95
+3fe40 4 4463 95
+3fe44 4 4467 95
+3fe48 c 4466 95
+3fe54 a 156 137
+3fe5e 6 4466 95
+3fe64 2 4472 95
+3fe66 2 4474 95
+3fe68 4 4472 95
+3fe6c 2 172 143
+3fe6e 4 4474 95
+3fe72 8 172 143
+3fe7a c 173 143
+3fe86 10 176 143
+3fe96 6 173 148
+3fe9c 8 192 144
+3fea4 2 173 148
+3fea6 4 192 144
+3feaa 2 4480 95
+3feac 4 173 148
+3feb0 2 4481 95
+3feb2 1a 4482 95
+FUNC 3fecc 110 0 testing::internal::MakeAndRegisterTestInfo
+3fecc 10 2508 95
+3fedc 4 2508 95
+3fee0 4 2511 95
+3fee4 4 2508 95
+3fee8 2 2511 95
+3feea 4 2508 95
+3feee 2 2511 95
+3fef0 6 2508 95
+3fef6 4 2511 95
+3fefa 2 2511 95
+3fefc 6 2508 95
+3ff02 4 2511 95
+3ff06 a 2511 95
+3ff10 6 2511 95
+3ff16 12 2511 95
+3ff28 2 2511 95
+3ff2a 4 2511 95
+3ff2e c 156 137
+3ff3a 4 2512 95
+3ff3e 4 664 91
+3ff42 2 2512 95
+3ff44 4 664 91
+3ff48 6 665 91
+3ff4e a 74 84
+3ff58 6 156 137
+3ff5e c 666 91
+3ff6a 12 666 91
+3ff7c 18 333 127
+3ff94 6 666 91
+3ff9a 4 1144 87
+3ff9e 4 660 82
+3ffa2 c 673 91
+3ffae 6 673 91
+3ffb4 28 2514 95
+FUNC 3ffdc 6e 0 std::priv::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int>, std::priv::_Select1st<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int> >, std::priv::_MapTraitsT<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int> >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int> > >::_M_insert
+3ffdc 2 358 140
+3ffde 2 350 140
+3ffe0 8 350 140
+3ffe8 2 358 140
+3ffea 8 359 140
+3fff2 2 360 140
+3fff4 2 361 140
+3fff6 4 362 140
+3fffa 4 364 140
+3fffe 4 364 140
+40002 a 79 111
+4000c 2 364 140
+4000e 6 367 140
+40014 2 368 140
+40016 2 369 140
+40018 2 367 140
+4001a 4 369 140
+4001e 4 370 140
+40022 6 373 140
+40028 2 374 140
+4002a 2 375 140
+4002c 2 373 140
+4002e 4 375 140
+40032 2 376 140
+40034 2 379 140
+40036 2 378 140
+40038 6 379 140
+4003e 2 380 140
+40040 2 382 140
+40042 4 380 140
+40046 2 142 141
+40048 2 382 140
+FUNC 4004a 78 0 std::priv::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int>, std::priv::_Select1st<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int> >, std::priv::_MapTraitsT<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int> >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int> > >::insert_unique
+4004a 4 405 140
+4004e 6 405 140
+40054 2 406 140
+40056 2 408 140
+40058 2 407 140
+4005a 2 409 140
+4005c a 79 111
+40066 2 412 140
+40068 4 412 140
+4006c 2 412 140
+4006e 6 405 140
+40074 2 142 141
+40076 2 415 140
+40078 6 416 140
+4007e 6 417 140
+40084 8 187 141
+4008c 2 421 140
+4008e a 79 111
+40098 2 421 140
+4009a 12 422 140
+400ac 4 142 141
+400b0 6 62 129
+400b6 2 142 141
+400b8 2 62 129
+400ba 8 425 140
+FUNC 400c2 174 0 std::priv::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int>, std::priv::_Select1st<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int> >, std::priv::_MapTraitsT<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int> >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int> > >::insert_unique
+400c2 6 432 140
+400c8 4 434 140
+400cc 2 432 140
+400ce 2 434 140
+400d0 4 432 140
+400d4 2 434 140
+400d6 4 437 140
+400da 4 438 140
+400de 4 143 111
+400e2 8 79 111
+400ea 4 440 140
+400ee 8 79 111
+400f6 4 447 140
+400fa c 297 140
+40106 a 94 141
+40110 4 301 140
+40114 6 302 140
+4011a 6 304 140
+40120 a 309 140
+4012a 4 458 140
+4012e c 462 140
+4013a a 309 140
+40144 6 513 140
+4014a a 475 140
+40154 6 142 141
+4015a 4 479 140
+4015e 2 480 140
+40160 a 79 111
+4016a 2 480 140
+4016c e 483 140
+4017a 6 486 140
+40180 6 187 141
+40186 4 143 111
+4018a 2 187 141
+4018c 8 79 111
+40194 4 494 140
+40198 a 79 111
+401a2 4 494 140
+401a6 8 500 140
+401ae 8 79 111
+401b6 2 517 140
+401b8 4 517 140
+401bc a 79 111
+401c6 4 517 140
+401ca 6 521 140
+401d0 e 522 140
+401de 8 497 140
+401e6 4 498 140
+401ea e 524 140
+401f8 4 142 141
+401fc c 297 140
+40208 c 94 141
+40214 4 301 140
+40218 6 302 140
+4021e 6 304 140
+40224 a 524 140
+4022e 8 534 140
+FUNC 40238 8c 0 std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int> > >::operator[]<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >
+40238 e 175 123
+40246 4 568 141
+4024a 6 175 123
+40250 2 175 123
+40252 2 571 141
+40254 a 79 111
+4025e 2 572 141
+40260 4 573 141
+40264 a 575 141
+4026e 2 178 123
+40270 2 142 141
+40272 2 178 123
+40274 a 79 111
+4027e 2 178 123
+40280 12 181 123
+40292 c 62 129
+4029e 2 191 123
+402a0 2 62 129
+402a2 6 191 123
+402a8 2 142 141
+402aa 4 191 123
+402ae 2 179 123
+402b0 2 156 137
+402b2 2 179 123
+402b4 6 156 137
+402ba a 181 123
+FUNC 402c4 104 0 testing::internal::edit_distance::CalculateOptimalEdits
+402c4 4 1067 95
+402c8 6 67 144
+402ce 2 1067 95
+402d0 2 250 141
+402d2 4 1067 95
+402d6 4 250 141
+402da 4 1067 95
+402de 2 250 141
+402e0 4 67 144
+402e4 2 481 106
+402e6 4 67 144
+402ea 2 481 106
+402ec c 250 141
+402f8 6 481 106
+402fe 4 263 141
+40302 2 265 141
+40304 2 266 141
+40306 2 267 141
+40308 2 391 141
+4030a 10 192 144
+4031a 4 1071 95
+4031e 4 203 144
+40322 8 543 141
+4032a 4 1053 95
+4032e 4 1053 95
+40332 a 1055 95
+4033c 4 173 148
+40340 2 1072 95
+40342 2 1071 95
+40344 10 173 148
+40354 10 192 144
+40364 4 1074 95
+40368 6 203 144
+4036e 8 543 141
+40376 4 1053 95
+4037a 4 1053 95
+4037e a 1055 95
+40388 4 173 148
+4038c 2 1075 95
+4038e 2 1074 95
+40390 6 173 148
+40396 4 531 141
+4039a 8 532 141
+403a2 c 1078 95
+403ae c 304 144
+403ba e 1079 95
+FUNC 403c8 36c 0 testing::internal::edit_distance::CreateUnifiedDiff
+403c8 4 1166 95
+403cc 6 1169 95
+403d2 4 1166 95
+403d6 2 1169 95
+403d8 2 1166 95
+403da 6 1166 95
+403e0 2 1167 95
+403e2 6 1166 95
+403e8 4 1167 95
+403ec 8 1170 95
+403f4 20 333 127
+40414 8 192 144
+4041c 4 1171 95
+40420 8 1173 95
+40428 2 1176 95
+4042a 2 1173 95
+4042c 4 1174 95
+40430 4 1175 95
+40434 4 1173 95
+40438 6 1182 95
+4043e a 192 144
+40448 6 1189 95
+4044e 6 1190 95
+40454 4 1192 95
+40458 6 1193 95
+4045e 10 1124 95
+4046e 8 1124 95
+40476 12 205 121
+40488 8 75 132
+40490 6 1170 95
+40496 6 42 148
+4049c 14 1224 95
+404b0 c 1094 95
+404bc 4 1181 95
+404c0 4 353 121
+404c4 4 1094 95
+404c8 4 1181 95
+404cc 4 353 121
+404d0 8 1094 95
+404d8 20 353 121
+404f8 1c 1182 95
+40514 8 1193 95
+4051c c 1194 95
+40528 4 1200 95
+4052c 6 1202 95
+40532 2 1202 95
+40534 6 1205 95
+4053a a 1204 95
+40544 2 1202 95
+40546 8 1205 95
+4054e 26 1097 95
+40574 2 1104 95
+40576 2 306 106
+40578 4 1104 95
+4057c 6 306 106
+40582 4 307 106
+40586 4 119 108
+4058a a 68 129
+40594 2 427 121
+40596 2 428 121
+40598 4 429 121
+4059c 2 430 121
+4059e 4 431 121
+405a2 2 1108 95
+405a4 2 306 106
+405a6 4 1108 95
+405aa 6 306 106
+405b0 4 307 106
+405b4 4 119 108
+405b8 a 68 129
+405c2 2 427 121
+405c4 2 428 121
+405c6 4 429 121
+405ca 2 430 121
+405cc 2 431 121
+405ce c 1207 95
+405da c 306 106
+405e6 6 1108 95
+405ec 6 306 106
+405f2 4 307 106
+405f6 4 119 108
+405fa a 68 129
+40604 2 427 121
+40606 2 428 121
+40608 4 429 121
+4060c 2 430 121
+4060e 2 431 121
+40610 8 1212 95
+40618 8 1213 95
+40620 8 1189 95
+40628 a 333 127
+40632 4 1138 95
+40636 8 333 127
+4063e a 254 126
+40648 6 333 127
+4064e c 254 126
+4065a 6 1141 95
+40660 4 1141 95
+40664 8 333 127
+4066c 4 1144 95
+40670 a 333 127
+4067a a 254 126
+40684 8 333 127
+4068c c 254 126
+40698 a 333 127
+406a2 4 208 121
+406a6 4 600 121
+406aa 8 602 121
+406b2 2 208 121
+406b4 4 600 121
+406b8 8 602 121
+406c0 8 89 121
+406c8 4 305 127
+406cc 4 1117 95
+406d0 8 305 127
+406d8 10 333 127
+406e8 4 91 121
+406ec 14 205 121
+40700 2 1202 95
+40702 6 1207 95
+40708 2c 1224 95
+FUNC 40734 36 0 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string
+40734 2 253 136
+40736 2 486 106
+40738 2 253 136
+4073a 2 486 106
+4073c 2 64 137
+4073e 4 129 137
+40742 8 130 137
+4074a 4 131 137
+4074e 2 132 137
+40750 8 131 137
+40758 2 135 137
+4075a 4 136 137
+4075e 4 137 137
+40762 4 138 137
+40766 4 254 136
+FUNC 4076a 5a 0 std::priv::_Impl_vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_M_erase
+4076a 4 588 144
+4076e 6 588 144
+40774 2 591 144
+40776 6 589 144
+4077c 4 591 144
+40780 4 591 144
+40784 6 156 137
+4078a 8 160 108
+40792 8 591 144
+4079a 2 156 137
+4079c 2 191 108
+4079e 4 156 137
+407a2 6 191 108
+407a8 2 160 108
+407aa 8 160 108
+407b2 4 602 144
+407b6 4 602 144
+407ba 4 608 144
+407be 6 610 144
+FUNC 407c4 14c 0 std::priv::_Impl_vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_M_insert_overflow_aux
+407c4 6 81 143
+407ca 4 81 143
+407ce c 192 144
+407da 4 173 144
+407de 2 81 143
+407e0 8 173 144
+407e8 8 41 143
+407f0 a 175 144
+407fa 4 176 144
+407fe 4 176 144
+40802 2 176 144
+40804 a 347 106
+4080e 6 348 106
+40814 8 352 106
+4081c 4 91 143
+40820 10 428 142
+40830 4 428 142
+40834 6 160 108
+4083a 8 160 108
+40842 8 430 142
+4084a e 428 142
+40858 a 93 143
+40862 2 119 108
+40864 8 119 108
+4086c 6 95 143
+40872 a 314 142
+4087c 8 249 142
+40884 6 249 142
+4088a 2 139 108
+4088c 8 139 108
+40894 8 249 142
+4089c 6 98 143
+408a2 10 428 142
+408b2 6 428 142
+408b8 6 160 108
+408be 8 160 108
+408c6 8 430 142
+408ce 12 428 142
+408e0 4 662 144
+408e4 2 319 106
+408e6 4 323 106
+408ea 6 104 143
+408f0 4 667 144
+408f4 2 668 144
+408f6 6 105 143
+408fc 4 346 106
+40900 10 356 106
+FUNC 40910 84 0 std::priv::_Impl_vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::push_back
+40910 10 376 144
+40920 2 376 144
+40922 4 380 144
+40926 2 376 144
+40928 6 380 144
+4092e 2 119 108
+40930 6 119 108
+40936 8 382 144
+4093e a 416 144
+40948 4 416 144
+4094c 8 150 144
+40954 12 151 144
+40966 8 156 137
+4096e 10 154 144
+4097e 16 388 144
+FUNC 40994 c4 0 testing::internal::::SplitEscapedString
+40994 6 1233 95
+4099a 2 67 144
+4099c 6 1233 95
+409a2 4 67 144
+409a6 2 481 106
+409a8 2 1233 95
+409aa 2 1233 95
+409ac 4 400 136
+409b0 2 1233 95
+409b2 2 400 136
+409b4 2 1236 95
+409b6 2 1233 95
+409b8 2 1236 95
+409ba 6 1236 95
+409c0 4 1236 95
+409c4 a 1238 95
+409ce 2 1241 95
+409d0 2 1240 95
+409d2 8 1023 136
+409da a 1241 95
+409e4 2 1242 95
+409e6 8 1244 95
+409ee e 1023 136
+409fc 8 173 148
+40a04 a 156 137
+40a0e c 1249 95
+40a1a 6 1243 95
+40a20 12 1023 136
+40a32 8 173 148
+40a3a 6 156 137
+40a40 18 1254 95
+FUNC 40a58 180 0 testing::internal::EqFailure
+40a58 e 1277 95
+40a66 6 1277 95
+40a6c 2 1278 95
+40a6e 8 1277 95
+40a76 4 1278 95
+40a7a c 333 127
+40a86 8 1279 95
+40a8e 4 476 139
+40a92 2 1278 95
+40a94 4 476 139
+40a98 2 1280 95
+40a9a c 333 127
+40aa6 a 131 79
+40ab0 c 333 127
+40abc 8 1284 95
+40ac4 6 1285 95
+40aca c 333 127
+40ad6 8 476 139
+40ade 2 1288 95
+40ae0 c 333 127
+40aec a 131 79
+40af6 e 1292 95
+40b04 c 1292 95
+40b10 a 1294 95
+40b1a 8 1296 95
+40b22 c 192 144
+40b2e 4 1297 95
+40b32 a 192 144
+40b3c 4 1297 95
+40b40 c 42 148
+40b4c 2 277 82
+40b4e 2 1139 87
+40b50 4 277 82
+40b54 2 1303 95
+40b56 4 1139 87
+40b5a 8 1303 95
+40b62 6 1303 95
+40b68 6 256 82
+40b6e 6 85 79
+40b74 e 1304 95
+40b82 4 333 127
+40b86 4 1299 95
+40b8a 8 333 127
+40b92 c 1299 95
+40b9e a 131 79
+40ba8 8 156 137
+40bb0 28 1304 95
+FUNC 40bd8 78 0 testing::internal::CmpHelperSTREQ
+40bd8 8 1451 95
+40be0 e 1451 95
+40bee 2 1452 95
+40bf0 6 1451 95
+40bf6 8 1452 95
+40bfe 4 277 82
+40c02 6 1139 87
+40c08 2 1460 95
+40c0a 2 1460 95
+40c0c 8 1460 95
+40c14 8 1460 95
+40c1c 10 1460 95
+40c2c c 156 137
+40c38 18 1461 95
+FUNC 40c50 b4 0 testing::InitGoogleTest
+40c50 c 5281 95
+40c5c 2 5248 95
+40c5e 2 5281 95
+40c60 2 5248 95
+40c62 2 5281 95
+40c64 2 5281 95
+40c66 2 5248 95
+40c68 2 5281 95
+40c6a 2 5248 95
+40c6c 2 5251 95
+40c6e 4 5248 95
+40c72 2 5251 95
+40c74 8 5253 95
+40c7c 8 5255 95
+40c84 a 5255 95
+40c8e 10 156 137
+40c9e 6 630 144
+40ca4 8 632 144
+40cac 2 5281 95
+40cae 8 5260 95
+40cb6 a 5261 95
+40cc0 8 173 148
+40cc8 6 156 137
+40cce 4 5260 95
+40cd2 8 5236 95
+40cda 4 5267 95
+40cde 4 5267 95
+40ce2 22 5283 95
+FUNC 40d04 e 0 testing::internal::AlwaysFalse
+40d04 2 692 85
+40d06 c 692 85
+FUNC 40d14 5c 0 testing::internal::DeathTestAbort
+40d14 2 251 89
+40d16 2 251 89
+40d18 4 937 91
+40d1c 6 1144 87
+40d22 2 257 89
+40d24 c 2304 87
+40d30 8 259 89
+40d38 8 260 89
+40d40 6 261 89
+40d46 8 262 89
+40d4e 10 264 89
+40d5e 6 265 89
+40d64 c 2340 87
+FUNC 40d70 12 0 testing::internal::StackLowerThanAddress
+40d70 2 983 89
+40d72 c 985 89
+40d7e 4 986 89
+FUNC 40d82 16 0 testing::internal::StackGrowsDown
+40d82 2 990 89
+40d84 a 993 89
+40d8e a 995 89
+FUNC 40d98 30 0 testing::internal::GetLastErrnoDescription
+40d98 2 304 89
+40d9a 2 304 89
+40d9c 8 305 89
+40da4 4 305 89
+40da8 2 305 89
+40daa 8 2315 87
+40db2 4 305 89
+40db6 8 305 89
+40dbe a 306 89
+FUNC 40dc8 58 0 testing::internal::DeathTest::DeathTest
+40dc8 6 335 89
+40dce 12 335 89
+40de0 4 937 91
+40de4 2 743 91
+40de6 6 337 89
+40dec e 339 89
+40dfa 6 339 89
+40e00 20 341 89
+FUNC 40e20 34 0 testing::internal::ForkingDeathTest::ForkingDeathTest
+40e20 2 792 89
+40e22 6 792 89
+40e28 e 371 89
+40e36 2 794 89
+40e38 2 371 89
+40e3a 4 794 89
+40e3e 8 371 89
+40e46 e 794 89
+FUNC 40e54 98 0 testing::internal::ParseNaturalNumber<int>
+40e54 6 976 91
+40e5a 2 980 91
+40e5c 2 976 91
+40e5e 2 980 91
+40e60 2 976 91
+40e62 2 980 91
+40e64 6 2188 87
+40e6a 4 980 91
+40e6e 6 983 91
+40e74 a 998 91
+40e7e 2 1002 91
+40e80 2 998 91
+40e82 2 1002 91
+40e84 2 998 91
+40e86 2 1002 91
+40e88 4 1002 91
+40e8c 8 1002 91
+40e94 8 1006 91
+40e9c 12 1006 91
+40eae e 333 127
+40ebc 6 1006 91
+40ec2 2 1009 91
+40ec4 a 1009 91
+40ece 6 1010 91
+40ed4 2 981 91
+40ed6 16 1014 91
+FUNC 40eec 6c 0 testing::internal::DeathTest::set_last_death_test_message
+40eec 2 348 136
+40eee 2 355 89
+40ef0 c 348 136
+40efc 2 400 136
+40efe 2 243 135
+40f00 2 400 136
+40f02 4 244 135
+40f06 2 168 145
+40f08 c 168 145
+40f14 6 246 135
+40f1a 4 803 136
+40f1e 2 168 145
+40f20 2 806 136
+40f22 2 168 145
+40f24 8 806 136
+40f2c 2 168 145
+40f2e 6 168 145
+40f34 6 250 135
+40f3a 6 400 136
+40f40 2 250 135
+40f42 4 357 89
+40f46 12 250 135
+FUNC 40f58 a8 0 testing::internal::FormatDeathTestOutput
+40f58 c 493 89
+40f64 2 101 108
+40f66 4 493 89
+40f6a 2 493 89
+40f6c 2 120 137
+40f6e 2 481 106
+40f70 2 124 137
+40f72 4 530 136
+40f76 2 493 89
+40f78 6 124 137
+40f7e 2 530 136
+40f80 2 101 108
+40f82 4 530 136
+40f86 c 496 89
+40f92 a 530 136
+40f9c a 498 89
+40fa6 e 1023 136
+40fb4 8 451 136
+40fbc 6 156 137
+40fc2 10 506 89
+40fd2 e 1023 136
+40fe0 8 451 136
+40fe8 6 156 137
+40fee 2 503 89
+40ff0 2 504 89
+40ff2 e 506 89
+FUNC 41000 2ac 0 testing::internal::DeathTestImpl::Passed
+41000 6 530 89
+41006 2 531 89
+41008 8 530 89
+41010 6 530 89
+41016 6 531 89
+4101c 4 534 89
+41020 4 537 89
+41024 4 534 89
+41028 6 537 89
+4102e 14 333 127
+41042 2 150 79
+41044 14 333 127
+41058 16 540 89
+4106e 2e 333 127
+4109c 8 547 89
+410a4 a 131 79
+410ae 4 156 137
+410b2 16 333 127
+410c8 6 554 89
+410ce a 555 89
+410d8 6 556 89
+410de 22 333 127
+41100 2 150 79
+41102 3a 333 127
+4113c a 183 89
+41146 6 191 89
+4114c c 333 127
+41158 a 240 126
+41162 a 193 89
+4116c c 333 127
+41178 a 240 126
+41182 4 197 89
+41186 c 333 127
+41192 a 203 89
+4119c 8 1140 87
+411a4 a 131 79
+411ae 18 333 127
+411c6 8 566 89
+411ce a 131 79
+411d8 e 156 137
+411e6 12 571 89
+411f8 e 333 127
+41206 6 571 89
+4120c 4 536 89
+41210 2 557 89
+41212 8 575 89
+4121a 6 575 89
+41220 6 156 137
+41226 8 1140 87
+4122e 6 156 137
+41234 4 577 89
+41238 2 532 89
+4123a 72 577 89
+FUNC 412ac 2c8 0 testing::internal::DeathTestImpl::ReadAndInterpretStatusByte
+412ac 10 425 89
+412bc 2 425 89
+412be 4 2309 87
+412c2 2 425 89
+412c4 a 2309 87
+412ce 4 435 89
+412d2 4 435 89
+412d6 8 435 89
+412de 4 439 89
+412e2 12 459 89
+412f4 a 333 127
+412fe 2 460 89
+41300 6 333 127
+41306 6 460 89
+4130c 8 460 89
+41314 6 156 137
+4131a 6 459 89
+41320 6 2314 87
+41326 4 462 89
+4132a 4 462 89
+4132e 6 462 89
+41334 e 462 89
+41342 e 462 89
+41350 e 462 89
+4135e 4 462 89
+41362 2 462 89
+41364 2 462 89
+41366 2 462 89
+41368 2 462 89
+4136a 2 462 89
+4136c 4 462 89
+41370 a 462 89
+4137a e 462 89
+41388 e 462 89
+41396 e 462 89
+413a4 6 462 89
+413aa 4 462 89
+413ae 4 462 89
+413b2 4 388 89
+413b6 2 464 89
+413b8 2 388 89
+413ba c 464 89
+413c6 4 437 89
+413ca 4 386 89
+413ce 18 440 89
+413e6 e 386 89
+413f4 8 313 89
+413fc 4 319 89
+41400 4 313 89
+41404 e 2309 87
+41412 4 318 89
+41416 4 319 89
+4141a 2 131 79
+4141c a 333 127
+41426 4 322 89
+4142a 4 322 89
+4142e 6 322 89
+41434 4 327 89
+41438 8 328 89
+41440 4 327 89
+41444 c 328 89
+41450 a 333 127
+4145a 2 329 89
+4145c 6 333 127
+41462 6 329 89
+41468 a 329 89
+41472 8 333 127
+4147a 8 240 126
+41482 8 333 127
+4148a 6 156 137
+41490 6 328 89
+41496 a 1140 87
+414a0 14 454 89
+414b4 1a 333 127
+414ce 8 254 126
+414d6 8 333 127
+414de 4 454 89
+414e2 4 324 89
+414e6 c 325 89
+414f2 4 325 89
+414f6 8 325 89
+414fe 8 325 89
+41506 e 325 89
+41514 6 156 137
+4151a 4 325 89
+4151e 56 464 89
+FUNC 41574 e0 0 testing::internal::DeathTestImpl::Abort
+41574 c 470 89
+41580 2 476 89
+41582 4 470 89
+41586 2 476 89
+41588 a 476 89
+41592 2 476 89
+41594 6 476 89
+4159a a 2312 87
+415a4 4 478 89
+415a8 4 478 89
+415ac 6 478 89
+415b2 e 478 89
+415c0 e 478 89
+415ce e 478 89
+415dc 4 478 89
+415e0 4 478 89
+415e4 2 478 89
+415e6 2 478 89
+415e8 2 478 89
+415ea 4 478 89
+415ee a 478 89
+415f8 e 478 89
+41606 e 478 89
+41614 e 478 89
+41622 6 478 89
+41628 4 478 89
+4162c 4 478 89
+41630 24 487 89
+FUNC 41654 e8 0 testing::internal::ForkingDeathTest::Wait
+41654 c 799 89
+41660 2 799 89
+41662 2 800 89
+41664 4 799 89
+41668 4 800 89
+4166c 4 803 89
+41670 10 806 89
+41680 4 806 89
+41684 6 806 89
+4168a e 806 89
+41698 e 806 89
+416a6 e 806 89
+416b4 4 806 89
+416b8 4 806 89
+416bc 2 806 89
+416be 2 806 89
+416c0 2 806 89
+416c2 4 806 89
+416c6 a 806 89
+416d0 e 806 89
+416de e 806 89
+416ec e 806 89
+416fa 6 806 89
+41700 4 806 89
+41704 4 806 89
+41708 2 807 89
+4170a 2 384 89
+4170c 2 808 89
+4170e 2 801 89
+41710 2c 809 89
+FUNC 4173c 3bc 0 testing::internal::NoExecDeathTest::AssumeRole
+4173c 8 822 89
+41744 a 822 89
+4174e 4 823 89
+41752 4 824 89
+41756 4 823 89
+4175a 2 824 89
+4175c 14 825 89
+41770 6 218 89
+41776 34 333 127
+417aa 2 221 89
+417ac e 333 127
+417ba a 254 126
+417c4 8 333 127
+417cc 2 225 89
+417ce 4 333 127
+417d2 8 225 89
+417da 8 1140 87
+417e2 c 825 89
+417ee 6 156 137
+417f4 6 825 89
+417fa 12 829 89
+4180c e 829 89
+4181a e 829 89
+41828 e 829 89
+41836 4 829 89
+4183a 4 829 89
+4183e 2 829 89
+41840 2 829 89
+41842 2 829 89
+41844 4 829 89
+41848 a 829 89
+41852 e 829 89
+41860 c 829 89
+4186c 4 829 89
+41870 6 829 89
+41876 10 831 89
+41886 6 831 89
+4188c 6 156 137
+41892 4 832 89
+41896 6 1294 87
+4189c 6 842 89
+418a2 e 843 89
+418b0 e 843 89
+418be e 843 89
+418cc 10 843 89
+418dc 4 843 89
+418e0 6 843 89
+418e6 2 843 89
+418e8 2 843 89
+418ea 4 843 89
+418ee a 843 89
+418f8 e 843 89
+41906 c 843 89
+41912 6 843 89
+41918 4 843 89
+4191c 4 843 89
+41920 4 784 89
+41924 6 845 89
+4192a a 846 89
+41934 4 846 89
+41938 6 846 89
+4193e e 846 89
+4194c e 846 89
+4195a e 846 89
+41968 4 846 89
+4196c 6 846 89
+41972 2 846 89
+41974 2 846 89
+41976 4 846 89
+4197a a 846 89
+41984 e 846 89
+41992 e 846 89
+419a0 a 846 89
+419aa 4 846 89
+419ae 4 846 89
+419b2 4 390 89
+419b6 4 937 91
+419ba 2 599 91
+419bc 6 854 89
+419c2 8 855 89
+419ca 2 856 89
+419cc a 858 89
+419d6 4 858 89
+419da 6 858 89
+419e0 e 858 89
+419ee e 858 89
+419fc e 858 89
+41a0a 4 858 89
+41a0e 6 858 89
+41a14 2 858 89
+41a16 2 858 89
+41a18 4 858 89
+41a1c a 858 89
+41a26 e 858 89
+41a34 e 858 89
+41a42 a 858 89
+41a4c 4 858 89
+41a50 4 858 89
+41a54 4 388 89
+41a58 4 382 89
+41a5c 9c 863 89
+FUNC 41af8 184 0 testing::internal::ExecDeathTestChildMain
+41af8 10 944 89
+41b08 2 944 89
+41b0a c 946 89
+41b16 4 946 89
+41b1a 6 946 89
+41b20 e 946 89
+41b2e e 946 89
+41b3c e 946 89
+41b4a 4 946 89
+41b4e 2 946 89
+41b50 2 946 89
+41b52 4 946 89
+41b56 2 946 89
+41b58 4 946 89
+41b5c a 946 89
+41b66 e 946 89
+41b74 e 946 89
+41b82 10 946 89
+41b92 4 946 89
+41b96 4 946 89
+41b9a 4 952 89
+41b9e 6 952 89
+41ba4 16 954 89
+41bba c 955 89
+41bc6 a 955 89
+41bd0 a 955 89
+41bda 6 965 89
+41be0 4 937 89
+41be4 8 965 89
+41bec 10 966 89
+41bfc 4 966 89
+41c00 e 966 89
+41c0e c 966 89
+41c1a a 966 89
+41c24 c 967 89
+41c30 6 967 89
+41c36 a 967 89
+41c40 3c 968 89
+FUNC 41c7c c8 0 testing::internal::DeathTestImpl::~DeathTestImpl
+41c7c 10 374 89
+41c8c a 374 89
+41c96 10 374 89
+41ca6 e 374 89
+41cb4 e 374 89
+41cc2 e 374 89
+41cd0 4 374 89
+41cd4 4 374 89
+41cd8 2 374 89
+41cda 2 374 89
+41cdc 2 374 89
+41cde 4 374 89
+41ce2 a 374 89
+41cec e 374 89
+41cfa e 374 89
+41d08 6 374 89
+41d0e 4 374 89
+41d12 4 374 89
+41d16 2e 374 89
+FUNC 41d44 18 0 testing::internal::ExecDeathTest::~ExecDeathTest
+41d44 2 868 89
+41d46 2 813 89
+41d48 c 776 89
+41d54 8 813 89
+FUNC 41d44 18 0 testing::internal::NoExecDeathTest::~NoExecDeathTest
+FUNC 41d5c 12 0 testing::internal::ExecDeathTest::~ExecDeathTest
+41d5c 2 813 89
+41d5e 6 813 89
+41d64 6 813 89
+41d6a 4 813 89
+FUNC 41d5c 12 0 testing::internal::NoExecDeathTest::~NoExecDeathTest
+FUNC 41d70 1a8 0 testing::internal::DefaultDeathTestFactory::Create
+41d70 10 1157 89
+41d80 8 1157 89
+41d88 4 937 91
+41d8c 2 1279 82
+41d8e 4 1144 87
+41d92 4 743 91
+41d96 6 609 82
+41d9c 2 1162 89
+41d9e 8 1164 89
+41da6 4 1165 89
+41daa a 1167 89
+41db4 e 1167 89
+41dc2 10 1168 89
+41dd2 2 1169 89
+41dd4 2 1169 89
+41dd6 4 1169 89
+41dda 4 1169 89
+41dde 2 1169 89
+41de0 4 1169 89
+41de4 a 1169 89
+41dee 10 1169 89
+41dfe 6 1169 89
+41e04 24 156 137
+41e28 4 1170 89
+41e2c 8 1173 89
+41e34 4 1174 89
+41e38 8 1173 89
+41e40 4 1174 89
+41e44 12 1189 89
+41e56 8 1190 89
+41e5e 1a 872 89
+41e78 e 1191 89
+41e86 8 1192 89
+41e8e 10 816 89
+41e9e 4 1192 89
+41ea2 e 1199 89
+41eb0 e 1200 89
+41ebe 6 1200 89
+41ec4 c 156 137
+41ed0 e 1205 89
+41ede 2 1175 89
+41ee0 2 1176 89
+41ee2 2 1175 89
+41ee4 2 1176 89
+41ee6 32 1205 89
+FUNC 41f18 30 0 std::priv::_Impl_vector<void*, std::allocator<void*> >::_M_fill_insert
+41f18 6 166 143
+41f1e 2 171 143
+41f20 e 172 143
+41f2e 8 173 143
+41f36 e 176 143
+41f44 4 179 143
+FUNC 41f48 22 0 testing::internal::Arguments::AddArgument
+41f48 2 899 89
+41f4a 2 900 89
+41f4c 2 899 89
+41f4e 2 2276 87
+41f50 2 900 89
+41f52 4 2276 87
+41f56 6 900 89
+41f5c a 225 143
+41f66 4 901 89
+FUNC 41f6c 98c 0 testing::internal::ExecDeathTest::AssumeRole
+41f6c a 1102 89
+41f76 a 1102 89
+41f80 4 937 91
+41f84 4 1279 82
+41f88 4 744 91
+41f8c 4 1144 87
+41f90 6 1107 89
+41f96 2 1109 89
+41f98 6 1115 89
+41f9e 2 390 89
+41fa0 2 1111 89
+41fa2 2 390 89
+41fa4 4 1111 89
+41fa8 4 1115 89
+41fac 4 1115 89
+41fb0 14 1115 89
+41fc4 10 1115 89
+41fd4 10 1115 89
+41fe4 10 1115 89
+41ff4 4 1115 89
+41ff8 2 1115 89
+41ffa 2 1115 89
+41ffc 2 1115 89
+41ffe 2 1115 89
+42000 2 1115 89
+42002 4 1115 89
+42006 a 1115 89
+42010 10 1115 89
+42020 e 1115 89
+4202e 4 1118 89
+42032 6 1118 89
+42038 18 1118 89
+42050 10 1118 89
+42060 10 1118 89
+42070 10 1118 89
+42080 4 1118 89
+42084 2 1118 89
+42086 2 1118 89
+42088 2 1118 89
+4208a 2 1118 89
+4208c 2 1118 89
+4208e 4 1118 89
+42092 a 1118 89
+4209c c 1118 89
+420a8 2 1118 89
+420aa 4 1118 89
+420ae e 1118 89
+420bc 6 1118 89
+420c2 4 1121 89
+420c6 4 1121 89
+420ca 8 1121 89
+420d2 4 1121 89
+420d6 2 1121 89
+420d8 2 1121 89
+420da 8 1121 89
+420e2 a 1121 89
+420ec 6 1121 89
+420f2 4 1121 89
+420f6 6 1121 89
+420fc 2 1121 89
+420fe 6 1121 89
+42104 e 1121 89
+42112 10 1122 89
+42122 12 1122 89
+42134 c 1122 89
+42140 24 156 137
+42164 e 1124 89
+42172 e 1124 89
+42180 8 1124 89
+42188 4 1124 89
+4218c a 1124 89
+42196 a 1124 89
+421a0 6 1125 89
+421a6 4 1125 89
+421aa a 1125 89
+421b4 10 1125 89
+421c4 e 1125 89
+421d2 a 1125 89
+421dc a 1125 89
+421e6 8 1126 89
+421ee a 1126 89
+421f8 a 1126 89
+42202 8 1127 89
+4220a a 1127 89
+42214 4e 156 137
+42262 2 386 144
+42264 2 67 144
+42266 2 386 144
+42268 4 67 144
+4226c 2 481 106
+4226e 4 890 89
+42272 e 386 144
+42280 4 877 89
+42284 c 192 144
+42290 2 877 89
+42292 2 342 106
+42294 4 70 144
+42298 2 342 106
+4229a 4 70 144
+4229e 6 481 106
+422a4 2 342 106
+422a6 8 343 106
+422ae 4 343 106
+422b2 2 346 106
+422b4 2 348 106
+422b6 2 347 106
+422b8 4 348 106
+422bc 4 352 106
+422c0 2 348 106
+422c2 8 352 106
+422ca 2 356 106
+422cc 6 73 144
+422d2 4 71 144
+422d6 4 72 144
+422da 8 73 144
+422e2 10 86 142
+422f2 2 84 142
+422f4 4 86 142
+422f8 6 86 142
+422fe 2 139 108
+42300 8 139 108
+42308 2 88 142
+4230a 2 89 142
+4230c 4 88 142
+42310 12 86 142
+42322 c 249 144
+4232e 8 905 89
+42336 4 908 89
+4233a 2 2276 87
+4233c 4 908 89
+42340 4 2276 87
+42344 2 225 143
+42346 2 908 89
+42348 a 225 143
+42352 4 905 89
+42356 6 42 148
+4235c 8 1130 89
+42364 8 1131 89
+4236c e 1133 89
+4237a 6 1133 89
+42380 6 156 137
+42386 4 1135 89
+4238a 6 1294 87
+42390 2 1140 89
+42392 c 1005 89
+4239e a 1045 89
+423a8 6 1047 89
+423ae e 1048 89
+423bc 4 1048 89
+423c0 6 1048 89
+423c6 c 1048 89
+423d2 c 1048 89
+423de c 1048 89
+423ea 4 1048 89
+423ee 2 1048 89
+423f0 2 1048 89
+423f2 2 1048 89
+423f4 2 1048 89
+423f6 2 1048 89
+423f8 4 1048 89
+423fc a 1048 89
+42406 e 1048 89
+42414 e 1048 89
+42422 c 1048 89
+4242e 4 1048 89
+42432 4 1048 89
+42436 4 1048 89
+4243a 4 1053 89
+4243e 8 1055 89
+42446 a 1056 89
+42450 10 1056 89
+42460 2 1060 89
+42462 8 176 102
+4246a 14 1060 89
+4247e e 1061 89
+4248c c 1061 89
+42498 c 1061 89
+424a4 e 1061 89
+424b2 6 1061 89
+424b8 2 1061 89
+424ba 2 1061 89
+424bc 2 1061 89
+424be 4 1061 89
+424c2 a 1061 89
+424cc e 1061 89
+424da c 1061 89
+424e6 4 1061 89
+424ea 4 1061 89
+424ee 8 1071 89
+424f6 4 1071 89
+424fa 2 1072 89
+424fc 6 1073 89
+42502 4 1073 89
+42506 4 1073 89
+4250a 2 1073 89
+4250c 6 1073 89
+42512 a 1073 89
+4251c c 1073 89
+42528 c 1073 89
+42534 e 1073 89
+42542 6 1073 89
+42548 2 1073 89
+4254a 2 1073 89
+4254c 2 1073 89
+4254e 4 1073 89
+42552 a 1073 89
+4255c e 1073 89
+4256a ba 1073 89
+42624 4 1073 89
+42628 6 1073 89
+4262e 10 1076 89
+4263e 14 1078 89
+42652 c 1078 89
+4265e c 1078 89
+4266a e 1078 89
+42678 6 1078 89
+4267e 2 1078 89
+42680 2 1078 89
+42682 2 1078 89
+42684 4 1078 89
+42688 a 1078 89
+42692 e 1078 89
+426a0 c 1078 89
+426ac 4 1078 89
+426b0 6 1078 89
+426b6 4 1090 89
+426ba 4 1090 89
+426be e 1090 89
+426cc 4 1090 89
+426d0 6 1090 89
+426d6 c 1090 89
+426e2 c 1090 89
+426ee c 1090 89
+426fa 4 1090 89
+426fe 2 1090 89
+42700 2 1090 89
+42702 2 1090 89
+42704 2 1090 89
+42706 2 1090 89
+42708 4 1090 89
+4270c a 1090 89
+42716 e 1090 89
+42724 e 1090 89
+42732 c 1090 89
+4273e c 1094 89
+4274a c 1094 89
+42756 c 1094 89
+42762 e 1094 89
+42770 6 1094 89
+42776 2 1094 89
+42778 2 1094 89
+4277a 2 1094 89
+4277c 4 1094 89
+42780 a 1094 89
+4278a e 1094 89
+42798 c 1094 89
+427a4 4 1094 89
+427a8 4 1094 89
+427ac 10 1141 89
+427bc 4 1141 89
+427c0 6 1141 89
+427c6 c 1141 89
+427d2 c 1141 89
+427de c 1141 89
+427ea 4 1141 89
+427ee 2 1141 89
+427f0 4 1141 89
+427f4 4 1141 89
+427f8 4 1141 89
+427fc a 1141 89
+42806 e 1141 89
+42814 e 1141 89
+42822 c 1141 89
+4282e 4 1141 89
+42832 4 1141 89
+42836 2 784 89
+42838 2 388 89
+4283a 2 784 89
+4283c 8 388 89
+42844 6 382 89
+4284a 6 894 89
+42850 a 896 89
+4285a 4 87 144
+4285e 2 88 144
+42860 6 323 106
+42866 c 156 137
+42872 2 1145 89
+42874 e 1146 89
+42882 4 1084 89
+42886 8 1084 89
+4288e 6 1085 89
+42894 64 1146 89
+FUNC 428f8 16c 0 testing::internal::ParseInternalRunDeathTestFlag
+428f8 6 1298 89
+428fe 2 1299 89
+42900 4 1298 89
+42904 2 1299 89
+42906 2 1298 89
+42908 2 1299 89
+4290a 2 1298 89
+4290c 4 1299 89
+42910 2 1298 89
+42912 a 1299 89
+4291c 4 1303 89
+42920 2 1306 89
+42922 4 67 144
+42926 2 481 106
+42928 6 1306 89
+4292e 2 1303 89
+42930 6 1304 89
+42936 6 1306 89
+4293c 4 67 144
+42940 2 481 106
+42942 6 1214 89
+42948 c 1215 89
+42954 4 1216 89
+42958 2 1215 89
+4295a 8 1023 136
+42962 2 1216 89
+42964 6 1023 136
+4296a 8 173 148
+42972 8 156 137
+4297a 8 1023 136
+42982 8 173 148
+4298a 6 156 137
+42990 6 1221 89
+42996 2 91 105
+42998 2 92 105
+4299a 2 93 105
+4299c 2 92 105
+4299e 2 91 105
+429a0 2 92 105
+429a2 2 93 105
+429a4 2 92 105
+429a6 2 91 105
+429a8 2 92 105
+429aa 2 42 148
+429ac 2 92 105
+429ae 2 93 105
+429b0 4 42 148
+429b4 6 156 137
+429ba 4 1307 89
+429be 2 192 144
+429c0 2 1307 89
+429c2 a 192 144
+429cc 4 1332 89
+429d0 8 1330 89
+429d8 2 1330 89
+429da a 1331 89
+429e4 2 1331 89
+429e6 e 1332 89
+429f4 2 1299 89
+429f6 c 1340 89
+42a02 10 1334 89
+42a12 6 1334 89
+42a18 c 1339 89
+42a24 8 1339 89
+42a2c e 241 83
+42a3a a 42 148
+42a44 20 1340 89
+FUNC 42a64 8 0 testing::internal::FilePath::FindLastPathSeparator
+42a64 8 137 90
+FUNC 42a6c 30 0 testing::internal::FilePath::FileOrDirectoryExists
+42a6c 6 209 90
+42a72 6 209 90
+42a78 4 2272 87
+42a7c 2 209 90
+42a7e 4 2272 87
+42a82 1a 219 90
+FUNC 42a9c 40 0 testing::internal::FilePath::DirectoryExists
+42a9c 6 223 90
+42aa2 6 223 90
+42aa8 4 2272 87
+42aac 2 223 90
+42aae 4 2272 87
+42ab2 2 244 90
+42ab4 6 2278 87
+42aba a 244 90
+42ac4 2 244 90
+42ac6 16 249 90
+FUNC 42adc e 0 testing::internal::FilePath::IsAbsolutePath
+42adc 2 274 90
+42ade 2 94 90
+42ae0 a 276 90
+FUNC 42aea 1a 0 testing::internal::FilePath::IsDirectory
+42aea 4 300 90
+42aee 4 301 90
+42af2 e 301 90
+42b00 2 301 90
+42b02 2 303 90
+FUNC 42b04 20 0 testing::internal::FilePath::CreateFolder
+42b04 2 325 90
+42b06 4 334 90
+42b0a 2 325 90
+42b0c 6 334 90
+42b12 4 337 90
+42b16 2 338 90
+42b18 4 341 90
+42b1c 4 338 90
+42b20 4 341 90
+FUNC 42b24 6c 0 testing::internal::FilePath::Normalize
+42b24 4 356 90
+42b28 2 356 90
+42b2a 2 357 90
+42b2c 4 384 90
+42b30 8 358 90
+42b38 4 400 136
+42b3c 8 362 90
+42b44 4 400 136
+42b48 2 364 90
+42b4a 2 400 136
+42b4c 8 364 90
+42b54 4 366 90
+42b58 4 367 90
+42b5c a 368 90
+42b66 6 369 90
+42b6c a 376 90
+42b76 4 382 90
+42b7a 2 381 90
+42b7c 4 382 90
+42b80 2 383 90
+42b82 4 384 90
+42b86 a 383 90
+FUNC 42b90 78 0 testing::internal::FilePath::GetCurrentDir
+42b90 e 99 90
+42b9e 8 99 90
+42ba6 2 108 90
+42ba8 2 99 90
+42baa 2 108 90
+42bac 2 99 90
+42bae a 108 90
+42bb8 a 109 90
+42bc2 2 116 90
+42bc4 6 116 90
+42bca 2 116 90
+42bcc a 116 90
+42bd6 8 116 90
+42bde 6 156 137
+42be4 24 118 90
+FUNC 42c08 58 0 testing::internal::FilePath::RemoveDirectoryName
+42c08 6 155 90
+42c0e 8 155 90
+42c16 2 156 90
+42c18 4 155 90
+42c1c 4 156 90
+42c20 4 157 90
+42c24 c 157 90
+42c30 8 157 90
+42c38 8 156 137
+42c40 8 62 84
+42c48 18 158 90
+FUNC 42c60 64 0 testing::internal::FilePath::RemoveTrailingPathSeparator
+42c60 6 346 90
+42c66 8 346 90
+42c6e 2 347 90
+42c70 4 346 90
+42c74 6 347 90
+42c7a 2 349 90
+42c7c 4 400 136
+42c80 2 1023 136
+42c82 2 400 136
+42c84 10 1023 136
+42c94 8 349 90
+42c9c 8 156 137
+42ca4 8 62 84
+42cac 18 350 90
+FUNC 42cc4 14c 0 testing::internal::FilePath::ConcatPaths
+42cc4 10 200 90
+42cd4 2 200 90
+42cd6 4 201 90
+42cda 2 200 90
+42cdc 4 201 90
+42ce0 8 62 84
+42ce8 8 203 90
+42cf0 4 400 136
+42cf4 2 120 137
+42cf6 2 400 136
+42cf8 4 124 137
+42cfc 2 120 137
+42cfe 2 481 106
+42d00 4 124 137
+42d04 4 101 108
+42d08 2 107 139
+42d0a 2 101 108
+42d0c 6 107 139
+42d12 6 74 137
+42d18 4 74 137
+42d1c 4 74 137
+42d20 2 74 137
+42d22 4 535 136
+42d26 6 536 136
+42d2c 4 346 106
+42d30 2 158 106
+42d32 2 347 106
+42d34 2 158 106
+42d36 6 134 124
+42d3c 8 158 106
+42d44 6 352 106
+42d4a 4 356 106
+42d4e 14 86 142
+42d62 8 86 142
+42d6a 6 146 108
+42d70 a 101 108
+42d7a a 174 135
+42d84 4 175 135
+42d88 2 160 137
+42d8a 4 164 137
+42d8e 4 165 137
+42d92 4 101 108
+42d96 2 232 145
+42d98 2 101 108
+42d9a 4 120 137
+42d9e 4 101 108
+42da2 2 232 145
+42da4 2 124 137
+42da6 2 232 145
+42da8 2 539 136
+42daa 2 400 136
+42dac 2 539 136
+42dae 2 400 136
+42db0 2 539 136
+42db2 8 400 136
+42dba 2 124 137
+42dbc 4 120 137
+42dc0 4 481 106
+42dc4 6 124 137
+42dca 2 39 139
+42dcc 4 101 108
+42dd0 6 39 139
+42dd6 8 40 139
+42dde 8 204 90
+42de6 12 156 137
+42df8 18 205 90
+FUNC 42e10 90 0 testing::internal::FilePath::RemoveFileName
+42e10 8 166 90
+42e18 8 166 90
+42e20 2 167 90
+42e22 4 166 90
+42e26 4 167 90
+42e2a 2 120 137
+42e2c 2 167 90
+42e2e 4 124 137
+42e32 2 120 137
+42e34 2 481 106
+42e36 4 124 137
+42e3a 6 101 108
+42e40 8 169 90
+42e48 2 112 137
+42e4a 6 225 136
+42e50 2 112 137
+42e52 2 481 106
+42e54 4 225 136
+42e58 a 349 136
+42e62 8 156 137
+42e6a a 172 90
+42e74 8 174 90
+42e7c 6 156 137
+42e82 1e 175 90
+FUNC 42ea0 70 0 testing::internal::FilePath::CreateDirectoriesRecursively
+42ea0 6 308 90
+42ea6 a 308 90
+42eb0 8 309 90
+42eb8 8 313 90
+42ec0 6 313 90
+42ec6 2 313 90
+42ec8 6 317 90
+42ece 2 317 90
+42ed0 4 317 90
+42ed4 8 317 90
+42edc 6 156 137
+42ee2 a 318 90
+42eec 8 318 90
+42ef4 6 156 137
+42efa 16 319 90
+FUNC 42f10 160 0 testing::internal::FilePath::MakeFileName
+42f10 8 186 90
+42f18 4 186 90
+42f1c 2 120 137
+42f1e 8 186 90
+42f26 4 124 137
+42f2a 8 186 90
+42f32 2 120 137
+42f34 2 481 106
+42f36 4 124 137
+42f3a c 101 108
+42f46 6 188 90
+42f4c c 189 90
+42f58 a 189 90
+42f62 a 349 136
+42f6c a 156 137
+42f76 8 191 90
+42f7e 2 244 79
+42f80 4 191 90
+42f84 6 244 79
+42f8a a 240 126
+42f94 8 244 79
+42f9c 4 1153 87
+42fa0 8 1154 87
+42fa8 4 1155 87
+42fac 6 1155 87
+42fb2 4 400 136
+42fb6 2 120 137
+42fb8 6 400 136
+42fbe 2 124 137
+42fc0 2 400 136
+42fc2 2 35 139
+42fc4 2 124 137
+42fc6 2 120 137
+42fc8 2 481 106
+42fca 4 124 137
+42fce 4 101 108
+42fd2 4 39 139
+42fd6 2 101 108
+42fd8 2 39 139
+42fda 4 40 139
+42fde 6 39 139
+42fe4 8 40 139
+42fec c 192 90
+42ff8 a 192 90
+43002 a 349 136
+4300c 1e 156 137
+4302a 8 194 90
+43032 a 194 90
+4303c c 156 137
+43048 28 195 90
+FUNC 43070 74 0 testing::internal::FilePath::GenerateUniqueFileName
+43070 c 288 90
+4307c 2 61 84
+4307e 2 288 90
+43080 6 288 90
+43086 4 61 84
+4308a 4 288 90
+4308e 4 61 84
+43092 2 290 90
+43094 14 292 90
+430a8 4 348 136
+430ac a 349 136
+430b6 6 156 137
+430bc 6 291 90
+430c2 2 292 90
+430c4 4 291 90
+430c8 1c 295 90
+FUNC 430e4 18 0 testing::internal::IsInSet
+430e4 2 587 92
+430e6 2 587 92
+430e8 4 588 92
+430ec 6 588 92
+430f2 8 588 92
+430fa 2 589 92
+FUNC 430fc c 0 testing::internal::IsAsciiPunct
+430fc c 596 92
+FUNC 43108 c 0 testing::internal::IsRepeat
+43108 c 598 92
+FUNC 43114 c 0 testing::internal::IsAsciiWhiteSpace
+43114 c 599 92
+FUNC 43120 20 0 testing::internal::IsAsciiWordChar
+43120 a 601 92
+4312a 8 601 92
+43132 a 602 92
+4313c 2 602 92
+4313e 2 603 92
+FUNC 43140 b8 0 testing::internal::AtomMatchesChar
+43140 2 612 92
+43142 4 612 92
+43146 4 613 92
+4314a 14 614 92
+4315e 8 621 92
+43166 8 614 92
+4316e 4 617 92
+43172 e 614 92
+43180 4 631 92
+43184 6 620 92
+4318a 8 614 92
+43192 4 631 92
+43196 6 624 92
+4319c e 594 92
+431aa e 616 92
+431b8 4 618 92
+431bc 4 619 92
+431c0 4 622 92
+431c4 4 623 92
+431c8 e 625 92
+431d6 a 627 92
+431e0 4 630 92
+431e4 a 630 92
+431ee 8 630 92
+431f6 2 631 92
+FUNC 431f8 5a 0 testing::internal::MatchRegexAtHead
+431f8 6 731 92
+431fe 4 732 92
+43202 4 737 92
+43206 a 738 92
+43210 8 741 92
+43218 2 742 92
+4321a 2 743 92
+4321c a 744 92
+43226 12 749 92
+43238 6 754 92
+4323e 8 754 92
+43246 2 754 92
+43248 4 755 92
+4324c 2 733 92
+4324e 4 757 92
+FUNC 43252 60 0 testing::internal::MatchRepetitionAndRegexAtHead
+43252 2 707 92
+43254 4 706 92
+43258 6 706 92
+4325e 2 707 92
+43260 10 707 92
+43270 2 707 92
+43272 4 709 92
+43276 4 713 92
+4327a 4 715 92
+4327e 8 715 92
+43286 6 715 92
+4328c 6 722 92
+43292 e 722 92
+432a0 6 723 92
+432a6 2 713 92
+432a8 4 713 92
+432ac 2 723 92
+432ae 4 726 92
+FUNC 432b2 34 0 testing::internal::MatchRegexAnywhere
+432b2 2 767 92
+432b4 2 767 92
+432b6 4 768 92
+432ba 2 768 92
+432bc 6 771 92
+432c2 2 772 92
+432c4 4 780 92
+432c8 4 772 92
+432cc a 776 92
+432d6 c 775 92
+432e2 2 769 92
+432e4 2 780 92
+FUNC 432e6 16 0 testing::internal::RE::PartialMatch
+432e6 2 796 92
+432e8 2 796 92
+432ea 4 797 92
+432ee 4 797 92
+432f2 4 798 92
+432f6 4 797 92
+432fa 2 798 92
+FUNC 432fc 16 0 testing::internal::CapturedStream::GetFileSize
+432fc 2 980 92
+432fe 2 980 92
+43300 8 981 92
+43308 2 982 92
+4330a 4 983 92
+4330e 4 982 92
+FUNC 43314 18 0 testing::internal::GetInjectableArgvs
+43314 8 1069 92
+4331c 4 1072 92
+43320 c 1073 92
+FUNC 4332c 1e 0 std::_Destroy_Range<std::reverse_iterator<std::basic_string<char, std::char_traits<char>, std::allocator<char> >*> >
+4332c 2 219 108
+4332e 6 65 118
+43334 2 74 118
+43336 4 191 108
+4333a 2 121 136
+4333c 6 156 137
+43342 4 81 118
+43346 4 221 108
+FUNC 4334a 30 0 std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::~vector
+4334a 2 42 148
+4334c 2 42 148
+4334e 2 64 118
+43350 2 304 144
+43352 4 64 118
+43356 2 304 144
+43358 2 64 118
+4335a 4 304 144
+4335e 4 87 144
+43362 4 88 144
+43366 4 161 106
+4336a 6 135 124
+43370 4 161 106
+43374 6 42 148
+FUNC 4337a 52 0 testing::internal::CapturedStream::ReadEntireFile
+4337a 4 986 92
+4337e 2 986 92
+43380 2 987 92
+43382 2 986 92
+43384 6 987 92
+4338a 4 988 92
+4338e 2 993 92
+43390 2 988 92
+43392 8 993 92
+4339a 2 991 92
+4339c e 998 92
+433aa 2 999 92
+433ac 2 997 92
+433ae 4 1000 92
+433b2 6 225 136
+433b8 2 112 137
+433ba 2 481 106
+433bc 4 225 136
+433c0 6 1003 92
+433c6 6 1006 92
+FUNC 433cc 68 0 testing::internal::GetCapturedStream
+433cc 2 1023 92
+433ce 2 1024 92
+433d0 2 1023 92
+433d2 2 950 92
+433d4 2 1023 92
+433d6 4 950 92
+433da 6 952 92
+433e0 8 953 92
+433e8 6 954 92
+433ee 6 955 92
+433f4 c 2298 87
+43400 8 959 92
+43408 6 2306 87
+4340e 4 1026 92
+43412 6 946 92
+43418 8 156 137
+43420 6 1026 92
+43426 4 1027 92
+4342a a 1030 92
+FUNC 43434 14 0 testing::internal::GetCapturedStderr
+43434 2 1048 92
+43436 2 1048 92
+43438 8 1049 92
+43440 8 1050 92
+FUNC 43448 1c 0 testing::Message::operator<< <char const>
+43448 2 149 79
+4344a 4 149 79
+4344e 2 333 127
+43450 2 150 79
+43452 8 333 127
+4345a a 156 79
+FUNC 43464 46 0 std::endl<char, std::char_traits<char> >
+43464 2 357 127
+43466 2 357 127
+43468 a 181 127
+43472 2 412 126
+43474 10 422 126
+43484 2 414 126
+43486 e 414 126
+43494 4 421 126
+43498 6 424 126
+4349e 6 359 127
+434a4 6 361 127
+FUNC 434ac 30 0 testing::internal::GTestLog::~GTestLog
+434ac 2 880 92
+434ae 2 880 92
+434b0 a 78 127
+434ba 8 882 92
+434c2 a 883 92
+434cc 4 2340 87
+434d0 c 886 92
+FUNC 434dc 17c 0 testing::internal::ParseInt32
+434dc 6 1103 92
+434e2 2 1105 92
+434e4 a 1103 92
+434ee 2 1103 92
+434f0 2 1105 92
+434f2 4 1103 92
+434f6 4 1105 92
+434fa 4 1106 92
+434fe 2 1103 92
+43500 4 1106 92
+43504 8 1109 92
+4350c 8 1111 92
+43514 c 333 127
+43520 a 131 79
+4352a 18 333 127
+43542 8 1114 92
+4354a 2 333 127
+4354c 2 131 79
+4354e 4 333 127
+43552 4 1115 92
+43556 4 333 127
+4355a 8 1115 92
+43562 a 1115 92
+4356c 6 156 137
+43572 a 1116 92
+4357c 6 85 79
+43582 4 1117 92
+43586 a 1122 92
+43590 8 1128 92
+43598 c 333 127
+435a4 a 131 79
+435ae 18 333 127
+435c6 8 1131 92
+435ce 2 333 127
+435d0 2 131 79
+435d2 4 333 127
+435d6 4 1132 92
+435da 4 333 127
+435de 8 1132 92
+435e6 a 1132 92
+435f0 6 156 137
+435f6 a 1133 92
+43600 6 85 79
+43606 4 1134 92
+4360a 4 1137 92
+4360e 2 1138 92
+43610 48 1139 92
+FUNC 43658 e0 0 testing::internal::FormatFileLocation
+43658 8 840 92
+43660 c 840 92
+4366c 6 841 92
+43672 4 841 92
+43676 2 112 137
+43678 2 229 145
+4367a 2 112 137
+4367c 2 481 106
+4367e 4 229 145
+43682 2 643 135
+43684 2 643 135
+43686 6 643 135
+4368c 6 843 92
+43692 e 844 92
+436a0 a 849 92
+436aa 4 849 92
+436ae 8 849 92
+436b6 8 849 92
+436be 4 400 136
+436c2 2 120 137
+436c4 6 400 136
+436ca 2 124 137
+436cc 2 400 136
+436ce 2 35 139
+436d0 2 124 137
+436d2 2 120 137
+436d4 2 481 106
+436d6 4 124 137
+436da 4 101 108
+436de 2 39 139
+436e0 2 101 108
+436e2 6 39 139
+436e8 8 40 139
+436f0 a 849 92
+436fa 18 156 137
+43712 26 851 92
+FUNC 43738 b0 0 testing::internal::GTestLog::GTestLog
+43738 10 869 92
+43748 6 869 92
+4374e 4 870 92
+43752 2 874 92
+43754 4 874 92
+43758 4 874 92
+4375c 6 874 92
+43762 6 874 92
+43768 6 874 92
+4376e 4 874 92
+43772 c 78 127
+4377e c 333 127
+4378a 2 876 92
+4378c 4 333 127
+43790 a 876 92
+4379a 12 333 127
+437ac 6 156 137
+437b2 36 877 92
+FUNC 437e8 140 0 testing::internal::CaptureStream
+437e8 8 1014 92
+437f0 a 1014 92
+437fa 2 1015 92
+437fc 4 1014 92
+43800 2 1015 92
+43802 12 1016 92
+43814 20 333 127
+43834 6 1016 92
+4383a 8 1019 92
+43842 e 897 92
+43850 4 120 137
+43854 4 481 106
+43858 8 124 137
+43860 2 101 108
+43862 6 933 92
+43868 2 101 108
+4386a 20 933 92
+4388a 8 937 92
+43892 6 229 145
+43898 2 400 136
+4389a 6 355 136
+438a0 4 243 135
+438a4 2 400 136
+438a6 4 244 135
+438aa 2 168 145
+438ac 8 168 145
+438b4 6 246 135
+438ba 4 803 136
+438be 2 168 145
+438c0 2 806 136
+438c2 2 168 145
+438c4 8 806 136
+438cc 2 168 145
+438ce 6 168 145
+438d4 4 400 136
+438d8 2 250 135
+438da 2 400 136
+438dc 8 250 135
+438e4 6 940 92
+438ea 8 941 92
+438f2 6 942 92
+438f8 4 1019 92
+438fc 2c 1020 92
+FUNC 43928 18 0 testing::internal::CaptureStderr
+43928 18 1039 92
+FUNC 43940 c8 0 testing::internal::FormatCompilerIndependentFileLocation
+43940 c 859 92
+4394c a 859 92
+43956 6 860 92
+4395c 4 860 92
+43960 2 112 137
+43962 2 229 145
+43964 2 112 137
+43966 2 481 106
+43968 4 229 145
+4396c 2 643 135
+4396e 2 643 135
+43970 6 643 135
+43976 6 862 92
+4397c 2 112 137
+4397e 2 481 106
+43980 c 649 135
+4398c 6 865 92
+43992 4 865 92
+43996 8 865 92
+4399e 8 865 92
+439a6 a 400 136
+439b0 2 124 137
+439b2 2 400 136
+439b4 2 35 139
+439b6 2 124 137
+439b8 2 120 137
+439ba 2 481 106
+439bc 4 124 137
+439c0 4 101 108
+439c4 2 39 139
+439c6 2 101 108
+439c8 6 39 139
+439ce 8 40 139
+439d6 12 156 137
+439e8 20 866 92
+FUNC 43a08 a4 0 testing::internal::FlagToEnvVar
+43a08 e 1088 92
+43a16 4 1088 92
+43a1a 2 1090 92
+43a1c 2 1088 92
+43a1e 4 1090 92
+43a22 c 333 127
+43a2e 8 1090 92
+43a36 4 1090 92
+43a3a 2 1090 92
+43a3c 6 1090 92
+43a42 6 85 79
+43a48 2 1092 92
+43a4a 2 1090 92
+43a4c 4 1092 92
+43a50 4 1093 92
+43a54 4 400 136
+43a58 4 1093 92
+43a5c 2 166 98
+43a5e 2 168 98
+43a60 2 305 127
+43a62 8 168 98
+43a6a a 305 127
+43a74 4 1093 92
+43a78 8 1097 92
+43a80 6 85 79
+43a86 6 156 137
+43a8c 20 1098 92
+FUNC 43aac 54 0 testing::internal::BoolFromGTestEnv
+43aac c 1145 92
+43ab8 2 1145 92
+43aba 4 1146 92
+43abe 2 1145 92
+43ac0 2 1146 92
+43ac2 2 1145 92
+43ac4 4 1146 92
+43ac8 6 2328 87
+43ace 2 1149 92
+43ad0 8 1149 92
+43ad8 6 1149 92
+43ade 6 156 137
+43ae4 1c 1150 92
+FUNC 43b00 d0 0 testing::internal::Int32FromGTestEnv
+43b00 e 1155 92
+43b0e 2 1155 92
+43b10 4 1156 92
+43b14 2 1155 92
+43b16 2 1156 92
+43b18 2 1155 92
+43b1a 4 1156 92
+43b1e 8 2328 87
+43b26 6 1158 92
+43b2c 4 1164 92
+43b30 2 1163 92
+43b32 4 1164 92
+43b36 c 333 127
+43b42 a 131 79
+43b4c c 1165 92
+43b58 6 85 79
+43b5e 6 1164 92
+43b64 6 1167 92
+43b6a 4 240 126
+43b6e 4 1167 92
+43b72 6 240 126
+43b78 8 1167 92
+43b80 a 1167 92
+43b8a 6 156 137
+43b90 8 85 79
+43b98 a 1168 92
+43ba2 2 1169 92
+43ba4 2 1172 92
+43ba6 6 156 137
+43bac 24 1173 92
+FUNC 43bd0 44 0 testing::internal::StringFromGTestEnv
+43bd0 c 1177 92
+43bdc 2 1177 92
+43bde 2 1178 92
+43be0 2 1177 92
+43be2 4 1178 92
+43be6 2 1177 92
+43be8 4 1178 92
+43bec 6 2328 87
+43bf2 6 1180 92
+43bf8 6 156 137
+43bfe 16 1181 92
+FUNC 43c14 24 0 sys_sigaltstack
+43c14 2 3142 97
+43c16 12 3142 97
+43c28 4 3142 97
+43c2c 8 3142 97
+43c34 4 3142 97
+FUNC 43c38 24 0 sys_close
+43c38 2 2979 97
+43c3a 12 2979 97
+43c4c 4 2979 97
+43c50 8 2979 97
+43c58 4 2979 97
+FUNC 43c5c 2a 0 sys_prctl
+43c5c 4 3092 97
+43c60 16 3092 97
+43c76 4 3092 97
+43c7a 8 3092 97
+43c82 4 3092 97
+FUNC 43c88 d0 0 google_breakpad::ExceptionHandler::InstallHandlersLocked
+43c88 2 246 4
+43c8a 2 247 4
+43c8c 2 246 4
+43c8e 6 247 4
+43c94 4 248 4
+43c98 1a 252 4
+43cb2 2 251 4
+43cb4 4 251 4
+43cb8 2 257 4
+43cba 2 261 4
+43cbc 2 75 100
+43cbe 2 262 4
+43cc0 a 257 4
+43cca 2 262 4
+43ccc 2 75 100
+43cce 4 74 100
+43cd2 2 261 4
+43cd4 2 74 100
+43cd6 28 75 100
+43cfe 2 261 4
+43d00 4 75 100
+43d04 2 261 4
+43d06 2 267 4
+43d08 2 264 4
+43d0a 2 268 4
+43d0c 4 264 4
+43d10 2 265 4
+43d12 2 268 4
+43d14 2 265 4
+43d16 8 268 4
+43d1e 2 267 4
+43d20 4 268 4
+43d24 4 267 4
+43d28 8 273 4
+43d30 28 275 4
+FUNC 43d58 214 0 google_breakpad::ExceptionHandler::ExceptionHandler
+43d58 4 200 4
+43d5c 2 92 57
+43d5e 4 200 4
+43d62 c 210 4
+43d6e 2 92 57
+43d70 2 210 4
+43d72 2 200 4
+43d74 6 210 4
+43d7a a 188 121
+43d84 8 481 106
+43d8c 6 188 121
+43d92 2 210 4
+43d94 2 211 4
+43d96 8 481 106
+43d9e 2 211 121
+43da0 4 212 121
+43da4 c 481 106
+43db0 2 211 121
+43db2 2 212 121
+43db4 2 211 4
+43db6 8 212 4
+43dbe 6 105 57
+43dc4 2 107 57
+43dc6 6 107 57
+43dcc 2 108 57
+43dce 4 214 4
+43dd2 a 214 4
+43ddc 2 218 4
+43dde 2 219 4
+43de0 2 218 4
+43de2 2 219 4
+43de4 4 218 4
+43de8 4 219 4
+43dec 6 220 4
+43df2 4 67 144
+43df6 2 481 106
+43df8 2 220 4
+43dfa 8 221 4
+43e02 a 138 4
+43e0c c 141 4
+43e18 c 142 4
+43e24 a 147 4
+43e2e e 147 4
+43e3c 10 151 4
+43e4c 4 151 4
+43e50 c 151 4
+43e5c 14 153 4
+43e70 4 156 4
+43e74 2 154 4
+43e76 8 156 4
+43e7e 6 157 4
+43e84 4 223 4
+43e88 6 225 4
+43e8e 8 380 144
+43e96 2 126 108
+43e98 8 382 144
+43ea0 6 192 144
+43ea6 8 175 144
+43eae 6 176 144
+43eb4 4 176 144
+43eb8 4 176 144
+43ebc 8 347 106
+43ec4 4 348 106
+43ec8 2 353 106
+43eca 4 352 106
+43ece 2 112 143
+43ed0 2 224 105
+43ed2 4 224 105
+43ed6 6 224 105
+43edc 2 224 105
+43ede 8 481 105
+43ee6 4 657 144
+43eea 2 319 106
+43eec 4 161 106
+43ef0 6 135 124
+43ef6 4 161 106
+43efa 4 118 143
+43efe 4 666 144
+43f02 2 667 144
+43f04 4 668 144
+43f08 8 216 4
+43f10 a 160 4
+43f1a 4 346 106
+43f1e 4 356 106
+43f22 8 226 4
+43f2a 42 227 4
+FUNC 43f6c 50 0 google_breakpad::ExceptionHandler::RestoreHandlersLocked
+43f6c 2 280 4
+43f6e a 281 4
+43f78 1c 285 4
+43f94 8 113 100
+43f9c 2 284 4
+43f9e 4 284 4
+43fa2 1a 289 4
+FUNC 43fbc 7c 0 google_breakpad::ExceptionHandler::SendContinueSignalToChild
+43fbc 2 521 4
+43fbe 2 521 4
+43fc0 1c 3162 97
+43fdc 4 3162 97
+43fe0 4 3162 97
+43fe4 4 524 4
+43fe8 6 524 4
+43fee a 528 4
+43ff8 6 529 4
+43ffe 6 529 4
+44004 4 529 4
+44008 2 529 4
+4400a 4 529 4
+4400e 6 529 4
+44014 6 529 4
+4401a 4 532 4
+4401e 1a 530 4
+FUNC 44038 268 0 google_breakpad::ExceptionHandler::GenerateDump
+44038 4 449 4
+4403c 2 122 57
+4403e 2 449 4
+44040 4 449 4
+44044 2 450 4
+44046 2 451 4
+44048 c 451 4
+44054 4 451 4
+44058 2 67 54
+4405a 6 176 102
+44060 8 90 54
+44068 2 67 54
+4406a 6 90 54
+44070 2 3454 97
+44072 4 122 54
+44076 1c 3454 97
+44092 4 3454 97
+44096 6 3454 97
+4409c 4 124 54
+440a0 4 459 4
+440a4 2 134 54
+440a6 4 458 4
+440aa 4 135 54
+440ae 2 136 54
+440b0 2 458 4
+440b2 a 462 4
+440bc 4 466 4
+440c0 4 462 4
+440c4 2 465 4
+440c6 2 466 4
+440c8 4 467 4
+440cc 4 469 4
+440d0 4 461 4
+440d4 2 467 4
+440d6 4 461 4
+440da 4 468 4
+440de 2 469 4
+440e0 4 475 4
+440e4 12 3761 97
+440f6 4 3761 97
+440fa 4 3761 97
+440fe a 481 4
+44108 6 482 4
+4410e 6 482 4
+44114 4 482 4
+44118 2 482 4
+4411a 4 482 4
+4411e 6 482 4
+44124 6 482 4
+4412a a 483 4
+44134 8 486 4
+4413c 2 2367 97
+4413e 4 2440 97
+44142 2 2365 97
+44144 2 2366 97
+44146 2 2368 97
+44148 2 2369 97
+4414a 36 2440 97
+44180 6 2445 97
+44186 4 2445 97
+4418a 4 2445 97
+4418e 6 493 4
+44194 8 494 4
+4419c 6 514 4
+441a2 a 514 4
+441ac 6 515 4
+441b2 8 516 4
+441ba 2 144 54
+441bc 4 144 54
+441c0 2 146 54
+441c2 2 3074 97
+441c4 2 145 54
+441c6 14 3074 97
+441da 4 3074 97
+441de 4 3074 97
+441e2 4 514 4
+441e6 8 499 4
+441ee 6 500 4
+441f4 1e 3272 97
+44212 4 3272 97
+44216 4 3272 97
+4421a 4 502 4
+4421e 6 502 4
+44224 4 3272 97
+44228 6 504 4
+4422e 6 505 4
+44234 4 507 4
+44238 a 509 4
+44242 6 510 4
+44248 6 510 4
+4424e 4 510 4
+44252 2 510 4
+44254 4 510 4
+44258 6 510 4
+4425e 6 510 4
+44264 c 511 4
+44270 4 514 4
+44274 4 514 4
+44278 28 518 4
+FUNC 442a0 a0 0 google_breakpad::ExceptionHandler::HandleSignal
+442a0 e 392 4
+442ae 2 397 4
+442b0 6 392 4
+442b6 6 392 4
+442bc 2 398 4
+442be 4 398 4
+442c2 6 400 4
+442c8 2 400 4
+442ca 4 400 4
+442ce 4 400 4
+442d2 c 405 4
+442de a 406 4
+442e8 c 407 4
+442f4 6 426 4
+442fa 2 427 4
+442fc 2 405 4
+442fe 2 426 4
+44300 2 427 4
+44302 a 432 4
+4430c 10 428 4
+4431c c 433 4
+44328 a 401 4
+44332 e 433 4
+FUNC 44340 22 0 google_breakpad::ExceptionHandler::HandleSignal
+44340 2 392 4
+44342 2 393 4
+44344 6 392 4
+4434a 2 393 4
+4434c 4 393 4
+44350 8 393 4
+44358 a 433 4
+FUNC 44364 134 0 google_breakpad::ExceptionHandler::SignalHandler
+44364 6 299 4
+4436a 2 301 4
+4436c 2 299 4
+4436e 2 301 4
+44370 4 299 4
+44374 4 301 4
+44378 c 314 4
+44384 2 315 4
+44386 6 314 4
+4438c 2 333 4
+4438e 4 334 4
+44392 4 333 4
+44396 2 334 4
+44398 6 192 144
+4439e c 333 4
+443aa a 333 4
+443b4 2 334 4
+443b6 2 334 4
+443b8 a 334 4
+443c2 6 333 4
+443c8 4 333 4
+443cc 8 113 100
+443d4 8 348 4
+443dc 4 350 4
+443e0 4 350 4
+443e4 6 355 4
+443ea 6 355 4
+443f0 2 110 4
+443f2 2 355 4
+443f4 a 110 4
+443fe 4 355 4
+44402 6 359 4
+44408 2 91 100
+4440a 2 74 100
+4440c 4 91 100
+44410 32 75 100
+44442 2 320 4
+44444 2 323 4
+44446 4 320 4
+4444a 2 321 4
+4444c 4 323 4
+44450 2 321 4
+44452 8 323 4
+4445a 8 113 100
+44462 a 328 4
+4446c 6 345 4
+44472 26 366 4
+FUNC 44498 74 0 google_breakpad::ExceptionHandler::WaitForContinueSignal
+44498 2 536 4
+4449a 2 536 4
+4449c 1c 3104 97
+444b8 4 3104 97
+444bc 4 3104 97
+444c0 4 539 4
+444c4 6 539 4
+444ca a 543 4
+444d4 6 544 4
+444da 6 544 4
+444e0 4 544 4
+444e4 2 544 4
+444e6 4 544 4
+444ea 6 544 4
+444f0 6 544 4
+444f6 a 545 4
+44500 c 547 4
+FUNC 4450c 4e 0 google_breakpad::ExceptionHandler::DoDump
+4450c 2 552 4
+4450e 6 552 4
+44514 2 553 4
+44516 8 552 4
+4451e 2 553 4
+44520 4 557 4
+44524 6 575 4
+4452a 4 557 4
+4452e 6 559 4
+44534 6 566 4
+4453a 2 559 4
+4453c e 566 4
+4454a c 574 4
+44556 4 575 4
+FUNC 4455a 1e 0 google_breakpad::ExceptionHandler::ThreadEntry
+4455a 2 379 4
+4455c 2 379 4
+4455e 6 384 4
+44564 10 387 4
+44574 4 388 4
+FUNC 44578 c0 0 google_breakpad::ExceptionHandler::WriteMinidump
+44578 e 593 4
+44586 2 593 4
+44588 4 594 4
+4458c 4 593 4
+44590 4 594 4
+44594 6 594 4
+4459a 6 600 4
+445a0 8 609 4
+445a8 6 612 4
+445ae 2 613 4
+445b0 12 3039 97
+445c2 4 3039 97
+445c6 4 3039 97
+445ca 12 3026 97
+445dc 4 3026 97
+445e0 8 3026 97
+445e8 6 646 4
+445ee 2 643 4
+445f0 4 646 4
+445f4 6 647 4
+445fa 2 656 4
+445fc 4 667 4
+44600 2 656 4
+44602 6 667 4
+44608 2 614 4
+4460a c 668 4
+44616 4 601 4
+4461a a 604 4
+44624 a 605 4
+4462e a 668 4
+FUNC 44638 a4 0 google_breakpad::ExceptionHandler::AddMappingInfo
+44638 c 674 4
+44644 6 674 4
+4464a 2 676 4
+4464c 2 677 4
+4464e 6 674 4
+44654 2 677 4
+44656 2 678 4
+44658 2 674 4
+4465a 4 679 4
+4465e 2 674 4
+44660 4 679 4
+44664 2 678 4
+44666 4 679 4
+4466a 2 680 4
+4466c 2 676 4
+4466e a 683 4
+44678 4 680 4
+4467c 4 683 4
+44680 18 684 4
+44698 8 306 106
+446a0 6 307 106
+446a6 2 119 108
+446a8 4 370 121
+446ac 2 119 108
+446ae a 119 108
+446b8 2 427 121
+446ba 2 428 121
+446bc 2 429 121
+446be 2 430 121
+446c0 6 686 4
+446c6 2 431 121
+446c8 14 686 4
+FUNC 446dc 50 0 google_breakpad::ExceptionHandler::RegisterAppMemory
+446dc 2 688 4
+446de 4 370 121
+446e2 2 89 121
+446e4 2 91 121
+446e6 2 144 121
+446e8 4 198 104
+446ec 6 198 104
+446f2 4 91 121
+446f6 2 198 104
+446f8 4 691 4
+446fc 8 306 106
+44704 2 697 4
+44706 2 698 4
+44708 6 307 106
+4470e 4 119 108
+44712 c 119 108
+4471e 2 427 121
+44720 2 428 121
+44722 2 429 121
+44724 2 430 121
+44726 2 431 121
+44728 4 700 4
+FUNC 4472c 34 0 google_breakpad::ExceptionHandler::UnregisterAppMemory
+4472c 2 89 121
+4472e 2 702 4
+44730 4 370 121
+44734 2 91 121
+44736 2 144 121
+44738 4 198 104
+4473c 6 198 104
+44742 4 91 121
+44746 2 198 104
+44748 4 705 4
+4474c 2 161 106
+4474e 2 519 121
+44750 2 520 121
+44752 2 522 121
+44754 2 523 121
+44756 2 708 4
+44758 4 161 106
+4475c 4 708 4
+FUNC 44760 184 0 google_breakpad::ExceptionHandler::~ExceptionHandler
+44760 4 230 4
+44764 2 231 4
+44766 2 230 4
+44768 6 231 4
+4476e a 233 4
+44778 4 115 104
+4477c 4 117 104
+44780 6 118 104
+44786 6 121 104
+4478c 4 119 104
+44790 6 124 104
+44796 6 122 104
+4479c 6 127 104
+447a2 8 125 104
+447aa 4 117 104
+447ae 12 131 104
+447c0 6 133 104
+447c6 2 134 104
+447c8 6 136 104
+447ce 2 137 104
+447d0 c 139 104
+447dc 4 143 104
+447e0 2 136 104
+447e2 6 580 144
+447e8 4 224 105
+447ec 4 224 105
+447f0 2 584 144
+447f2 2 200 144
+447f4 2 584 144
+447f6 2 235 4
+447f8 2 584 144
+447fa 2 235 4
+447fc 2 87 144
+447fe 4 88 144
+44802 4 161 106
+44806 6 135 124
+4480c 4 161 106
+44810 2 236 4
+44812 2 237 4
+44814 4 236 4
+44818 6 237 4
+4481e 8 166 4
+44826 c 170 4
+44832 c 175 4
+4483e 8 176 4
+44846 4 177 4
+4484a 2 181 4
+4484c 2 182 4
+4484e 2 181 4
+44850 8 182 4
+44858 a 187 4
+44862 8 188 4
+4486a 4 239 4
+4486e 2 67 120
+44870 8 241 4
+44878 4 67 120
+4487c 4 68 120
+44880 2 74 120
+44882 a 161 106
+4488c 6 67 120
+44892 4 68 120
+44896 2 74 120
+44898 8 135 124
+448a0 10 156 137
+448b0 4 98 57
+448b4 6 98 57
+448ba 2a 242 4
+FUNC 448e4 98 0 google_breakpad::ExceptionHandler::WriteMinidumpForChild
+448e4 6 715 4
+448ea 4 61 8
+448ee 4 715 4
+448f2 4 61 8
+448f6 2 715 4
+448f8 4 715 4
+448fc 2 61 8
+448fe 4 715 4
+44902 2 120 137
+44904 4 715 4
+44908 4 61 8
+4490c 2 715 4
+4490e c 61 8
+4491a 4 124 137
+4491e 2 120 137
+44920 2 481 106
+44922 4 124 137
+44926 4 101 108
+4492a 4 61 8
+4492e 2 101 108
+44930 2 718 4
+44932 6 61 8
+44938 4 718 4
+4493c a 721 4
+44946 4 719 4
+4494a 2 724 4
+4494c a 724 4
+44956 c 156 137
+44962 1a 725 4
+FUNC 4497c 50 0 google_breakpad::MinidumpDescriptor::MinidumpDescriptor
+4497c 2 41 7
+4497e 2 41 7
+44980 2 46 7
+44982 2 112 137
+44984 6 46 7
+4498a 2 41 7
+4498c 4 46 7
+44990 2 112 137
+44992 6 481 106
+44998 2 378 136
+4499a 6 379 136
+449a0 a 148 142
+449aa 2 101 108
+449ac 2 380 136
+449ae 2 101 108
+449b0 4 165 136
+449b4 2 120 137
+449b6 2 481 106
+449b8 8 124 137
+449c0 2 51 7
+449c2 2 101 108
+449c4 6 46 7
+449ca 2 51 7
+FUNC 449cc b0 0 google_breakpad::MinidumpDescriptor::UpdatePath
+449cc 8 70 7
+449d4 4 70 7
+449d8 2 75 7
+449da 4 70 7
+449de 2 75 7
+449e0 2 70 7
+449e2 a 75 7
+449ec c 75 7
+449f8 2 422 136
+449fa 2 80 7
+449fc 2 422 136
+449fe 6 232 145
+44a04 2 424 136
+44a06 2 80 7
+44a08 4 424 136
+44a0c 8 80 7
+44a14 2 80 7
+44a16 4 80 7
+44a1a a 80 7
+44a24 6 80 7
+44a2a 4 79 7
+44a2e a 80 7
+44a38 4 348 136
+44a3c a 349 136
+44a46 12 156 137
+44a58 2 81 7
+44a5a 2 82 7
+44a5c 2 81 7
+44a5e 1e 82 7
+FUNC 44a7c 48 0 google_breakpad::MinidumpDescriptor::operator=
+44a7c 2 54 7
+44a7e 2 57 7
+44a80 2 54 7
+44a82 2 57 7
+44a84 2 58 7
+44a86 2 59 7
+44a88 4 58 7
+44a8c 4 59 7
+44a90 2 348 136
+44a92 2 54 7
+44a94 2 348 136
+44a96 a 349 136
+44aa0 4 422 136
+44aa4 6 232 145
+44aaa 4 424 136
+44aae 4 61 7
+44ab2 2 63 7
+44ab4 2 64 7
+44ab6 2 63 7
+44ab8 4 64 7
+44abc 2 66 7
+44abe 2 68 7
+44ac0 2 66 7
+44ac2 2 68 7
+FUNC 44ac4 10 0 logger::write
+44ac4 2 42 9
+44ac6 2 40 9
+44ac8 c 42 9
+FUNC 44ad4 a 0 MicrodumpWriter::LogAppend
+44ad4 a 108 10
+FUNC 44ae0 30 0 MicrodumpWriter::LogAppend<unsigned char>
+44ae0 2 118 10
+44ae2 8 124 10
+44aea 2 123 10
+44aec 4 124 10
+44af0 2 113 10
+44af2 4 124 10
+44af6 2 125 10
+44af8 4 124 10
+44afc 4 125 10
+44b00 4 113 10
+44b04 c 127 10
+FUNC 44b10 4c 0 MicrodumpWriter::LogAppend<unsigned int>
+44b10 4 118 10
+44b14 2 124 10
+44b16 a 118 10
+44b20 2 123 10
+44b22 a 124 10
+44b2c 2 123 10
+44b2e 2 124 10
+44b30 2 123 10
+44b32 4 123 10
+44b36 2 125 10
+44b38 2 113 10
+44b3a 4 125 10
+44b3e 4 113 10
+44b42 1a 127 10
+FUNC 44b5c 2c 0 MicrodumpWriter::LogCommitLine
+44b5c 2 137 10
+44b5e 2 228 57
+44b60 2 137 10
+44b62 8 100 10
+44b6a 6 100 10
+44b70 4 139 10
+44b74 4 140 10
+44b78 10 139 10
+FUNC 44b88 16c 0 MicrodumpWriter::DumpModule
+44b88 a 291 10
+44b92 10 291 10
+44ba2 2 296 10
+44ba4 1a 298 10
+44bbe 8 304 10
+44bc6 12 310 10
+44bd8 2 312 10
+44bda 2 314 10
+44bdc 8 312 10
+44be4 2 314 10
+44be6 a 313 10
+44bf0 8 314 10
+44bf8 a 315 10
+44c02 8 316 10
+44c0a a 317 10
+44c14 8 318 10
+44c1c 8 319 10
+44c24 2 123 10
+44c26 2 124 10
+44c28 2 320 10
+44c2a a 124 10
+44c34 2 123 10
+44c36 2 124 10
+44c38 2 123 10
+44c3a 4 123 10
+44c3e 2 125 10
+44c40 4 113 10
+44c44 2 125 10
+44c46 4 113 10
+44c4a 2 123 10
+44c4c 2 124 10
+44c4e 2 321 10
+44c50 8 124 10
+44c58 2 123 10
+44c5a 2 124 10
+44c5c 2 123 10
+44c5e 4 123 10
+44c62 2 125 10
+44c64 4 113 10
+44c68 2 125 10
+44c6a 4 113 10
+44c6e 8 322 10
+44c76 8 323 10
+44c7e 8 324 10
+44c86 8 325 10
+44c8e 8 326 10
+44c96 8 327 10
+44c9e 8 328 10
+44ca6 8 329 10
+44cae a 330 10
+44cb8 8 113 10
+44cc0 6 332 10
+44cc6 2e 333 10
+FUNC 44cf4 444 0 google_breakpad::WriteMicrodump
+44cf4 12 375 10
+44d06 2 375 10
+44d08 2 376 10
+44d0a 2 375 10
+44d0c 4 376 10
+44d10 4 375 10
+44d14 6 376 10
+44d1a 2 378 10
+44d1c 8 379 10
+44d24 2 123 22
+44d26 2 72 10
+44d28 2 123 22
+44d2a 6 127 22
+44d30 6 130 22
+44d36 e 72 10
+44d44 2 73 10
+44d46 2 197 57
+44d48 2 73 10
+44d4a a 79 10
+44d54 4 389 10
+44d58 8 81 10
+44d60 4 388 10
+44d64 c 100 10
+44d70 6 100 10
+44d76 e 144 10
+44d84 6 146 10
+44d8a 2 149 10
+44d8c 2 146 10
+44d8e 2 170 10
+44d90 4 149 10
+44d94 2 159 10
+44d96 2 149 10
+44d98 4 170 10
+44d9c 2 159 10
+44d9e 4 170 10
+44da2 2 171 10
+44da4 2 172 10
+44da6 2 171 10
+44da8 2 172 10
+44daa 4 171 10
+44dae 2 159 10
+44db0 8 172 10
+44db8 8 173 10
+44dc0 8 174 10
+44dc8 a 175 10
+44dd2 8 176 10
+44dda 8 113 10
+44de2 8 178 10
+44dea a 113 10
+44df4 8 180 10
+44dfc a 113 10
+44e06 6 182 10
+44e0c 2 233 10
+44e0e 2 235 10
+44e10 a 192 144
+44e1a 6 267 10
+44e20 6 200 10
+44e26 6 202 10
+44e2c 6 221 10
+44e32 6 223 10
+44e38 c 235 10
+44e44 c 237 10
+44e50 6 238 10
+44e56 2 241 10
+44e58 4 238 10
+44e5c 2 241 10
+44e5e 2 238 10
+44e60 4 241 10
+44e64 8 248 10
+44e6c 2 249 10
+44e6e 6 194 10
+44e74 2 249 10
+44e76 12 194 10
+44e88 8 200 10
+44e90 8 201 10
+44e98 8 202 10
+44ea0 a 203 10
+44eaa 8 204 10
+44eb2 8 205 10
+44eba 6 206 10
+44ec0 6 213 10
+44ec6 2 75 54
+44ec8 4 76 54
+44ecc a 78 54
+44ed6 a 78 54
+44ee0 2 80 54
+44ee2 2 81 54
+44ee4 2 79 54
+44ee6 4 82 54
+44eea 4 80 54
+44eee 4 82 54
+44ef2 6 83 54
+44ef8 e 90 54
+44f06 2 3454 97
+44f08 4 122 54
+44f0c 1c 3454 97
+44f28 4 3454 97
+44f2c 6 3454 97
+44f32 4 124 54
+44f36 4 134 54
+44f3a 4 135 54
+44f3e 4 96 54
+44f42 4 136 54
+44f46 10 96 54
+44f56 4 97 54
+44f5a 2 98 54
+44f5c 8 98 54
+44f64 4 98 54
+44f68 4 100 54
+44f6c 1e 214 10
+44f8a 2 219 10
+44f8c 8 219 10
+44f94 8 221 10
+44f9c c 222 10
+44fa8 8 223 10
+44fb0 16 225 10
+44fc6 2 132 10
+44fc8 2 133 10
+44fca 2 132 10
+44fcc a 133 10
+44fd6 4 226 10
+44fda 6 219 10
+44fe0 2 190 10
+44fe2 a 253 10
+44fec 2 257 10
+44fee 4 253 10
+44ff2 8 257 10
+44ffa 2 259 10
+44ffc a 260 10
+45006 a 267 10
+45010 a 133 10
+4501a 6 132 10
+45020 6 269 10
+45026 8 235 10
+4502e 2 235 10
+45030 2 347 10
+45032 2 338 10
+45034 6 192 144
+4503a 6 338 10
+45040 4 339 10
+45044 4 342 10
+45048 4 340 10
+4504c 4 342 10
+45050 6 341 10
+45056 2 275 10
+45058 2 89 121
+4505a 4 275 10
+4505e 8 280 10
+45066 2 282 10
+45068 2 281 10
+4506a 2 282 10
+4506c 4 280 10
+45070 4 91 121
+45074 e 347 10
+45082 30 338 10
+450b2 2 89 121
+450b4 6 350 10
+450ba 2 353 10
+450bc 4 353 10
+450c0 e 353 10
+450ce 4 91 121
+450d2 4 91 10
+450d6 2 88 10
+450d8 c 100 10
+450e4 6 100 10
+450ea 8 93 10
+450f2 a 76 10
+450fc 4 203 57
+45100 6 203 57
+45106 2 380 10
+45108 10 42 24
+45118 20 391 10
+FUNC 45138 5a 0 google_breakpad::LinuxCoreDumper::BuildProcPath
+45138 4 57 18
+4513c 4 57 18
+45140 4 58 18
+45144 6 59 18
+4514a 4 58 18
+4514e 6 61 18
+45154 6 62 18
+4515a a 65 18
+45164 2 66 18
+45166 2 67 18
+45168 2 65 18
+4516a 2 67 18
+4516c c 70 18
+45178 2 71 18
+4517a 2 72 18
+4517c 2 71 18
+4517e a 72 18
+45188 4 73 18
+4518c 2 74 18
+4518e 4 75 18
+FUNC 45194 38 0 google_breakpad::LinuxCoreDumper::GetThreadInfoByIndex
+45194 2 90 18
+45196 4 192 144
+4519a 2 90 18
+4519c 8 192 144
+451a4 4 91 18
+451a8 c 94 18
+451b4 4 101 18
+451b8 2 110 18
+451ba 2 111 18
+451bc 2 110 18
+451be 2 111 18
+451c0 2 92 18
+451c2 a 112 18
+FUNC 451cc 22 0 google_breakpad::LinuxCoreDumper::CopyFromProcess
+451cc 2 78 18
+451ce 2 78 18
+451d0 6 83 18
+451d6 2 78 18
+451d8 6 83 18
+451de 4 86 18
+451e2 4 88 18
+451e6 8 86 18
+FUNC 451f0 40 0 std::priv::__ucopy<google_breakpad::ThreadInfo*, google_breakpad::ThreadInfo*, int>
+451f0 4 86 142
+451f4 4 82 142
+451f8 4 86 142
+451fc 4 82 142
+45200 4 86 142
+45204 4 86 142
+45208 4 139 108
+4520c a 139 108
+45216 6 86 142
+4521c 14 95 142
+FUNC 45230 50 0 google_breakpad::LinuxCoreDumper::LinuxCoreDumper
+45230 2 46 18
+45232 6 46 18
+45238 10 52 18
+45248 8 52 18
+45250 8 52 18
+45258 2 67 144
+4525a 4 52 18
+4525e 4 67 144
+45262 2 163 54
+45264 2 481 106
+45266 8 172 54
+4526e 2 666 144
+45270 2 667 144
+45272 4 76 143
+45276 2 668 144
+45278 8 54 18
+FUNC 45280 d0 0 std::priv::_Impl_vector<google_breakpad::ThreadInfo, google_breakpad::PageStdAllocator<google_breakpad::ThreadInfo> >::_M_insert_overflow_aux
+45280 4 81 143
+45284 2 192 144
+45286 2 81 143
+45288 a 192 144
+45292 2 173 144
+45294 6 81 143
+4529a 4 173 144
+4529e 4 81 143
+452a2 2 173 144
+452a4 8 41 143
+452ac a 175 144
+452b6 4 176 144
+452ba a 177 144
+452c4 e 172 54
+452d2 a 113 142
+452dc 4 93 143
+452e0 2 113 142
+452e2 2 93 143
+452e4 2 119 108
+452e6 8 119 108
+452ee 6 95 143
+452f4 4 314 142
+452f8 2 249 142
+452fa 4 314 142
+452fe 8 249 142
+45306 6 249 142
+4530c 2 139 108
+4530e a 139 108
+45318 8 249 142
+45320 6 98 143
+45326 c 113 142
+45332 2 104 143
+45334 4 666 144
+45338 2 667 144
+4533a 2 668 144
+4533c 14 105 143
+FUNC 45350 1f4 0 google_breakpad::LinuxCoreDumper::EnumerateThreads
+45350 12 126 18
+45362 4 127 18
+45366 4 126 18
+4536a 6 127 18
+45370 2 126 18
+45372 a 127 18
+4537c c 128 18
+45388 4 132 18
+4538c 8 132 18
+45394 a 133 18
+4539e c 134 18
+453aa a 138 18
+453b4 a 139 18
+453be 12 140 18
+453d0 2 139 18
+453d2 4 147 18
+453d6 4 148 18
+453da 4 188 18
+453de 8 146 18
+453e6 8 147 18
+453ee 8 148 18
+453f6 4 150 18
+453fa 8 150 18
+45402 8 150 18
+4540a 2 188 18
+4540c 2 186 18
+4540e 4 188 18
+45412 2 186 18
+45414 4 188 18
+45418 2 189 18
+4541a 2 202 18
+4541c 2 189 18
+4541e 2 190 18
+45420 6 202 18
+45426 2 190 18
+45428 4 202 18
+4542c 2 204 18
+4542e 4 205 18
+45432 4 206 18
+45436 8 380 144
+4543e 4 126 108
+45442 6 382 144
+45448 8 380 144
+45450 2 119 108
+45452 a 119 108
+4545c 6 382 144
+45462 2 208 18
+45464 12 244 18
+45476 a 145 18
+45480 10 248 18
+45490 10 151 18
+454a0 6 152 18
+454a6 4 177 18
+454aa 4 179 18
+454ae c 180 18
+454ba 6 192 144
+454c0 8 175 144
+454c8 6 176 144
+454ce e 177 144
+454dc a 172 54
+454e6 2 112 143
+454e8 2 172 54
+454ea 4 224 105
+454ee 6 224 105
+454f4 2 224 105
+454f6 4 481 105
+454fa 2 118 143
+454fc 4 481 105
+45500 2 667 144
+45502 4 666 144
+45506 4 668 144
+4550a 14 162 144
+4551e 26 248 18
+FUNC 45544 114 0 google_breakpad::::ElfFileSoName
+45544 8 193 21
+4554c 6 193 21
+45552 2 67 21
+45554 2 193 21
+45556 4 67 21
+4555a 4 193 21
+4555e 6 67 21
+45564 2 193 21
+45566 6 67 21
+4556c 2 194 21
+4556e 4 196 21
+45572 6 200 21
+45578 2 201 21
+4557a 2 200 21
+4557c 2 201 21
+4557e 2 208 21
+45580 6 207 21
+45586 2 210 21
+45588 6 207 21
+4558e 8 210 21
+45596 2 208 21
+45598 6 210 21
+4559e 2 211 21
+455a0 6 211 21
+455a6 2 213 21
+455a8 6 216 21
+455ae 10 217 21
+455be 8 146 21
+455c6 22 155 21
+455e8 2 154 21
+455ea 4 157 21
+455ee 16 163 21
+45604 6 162 21
+4560a 4 169 21
+4560e 4 168 21
+45612 a 170 21
+4561c 6 171 21
+45622 4 173 21
+45626 2 172 21
+45628 4 173 21
+4562c 2 178 21
+4562e 10 179 21
+4563e 4 170 21
+45642 16 217 21
+FUNC 45658 c4 0 google_breakpad::LinuxDumper::HandleDeletedFileInMapping
+45658 a 438 21
+45662 6 438 21
+45668 2 454 21
+4566a 2 438 21
+4566c 6 454 21
+45672 2 438 21
+45674 c 454 21
+45680 6 455 21
+45686 e 60 49
+45694 6 456 21
+4569a c 458 21
+456a6 16 3149 97
+456bc 2 466 21
+456be 16 3149 97
+456d4 4 3149 97
+456d8 6 3149 97
+456de 2 464 21
+456e0 a 465 21
+456ea 8 466 21
+456f2 a 471 21
+456fc 20 473 21
+FUNC 4571c 40 0 google_breakpad::LinuxDumper::~LinuxDumper
+4571c 2 88 21
+4571e a 88 21
+45728 2 144 54
+4572a 2 144 54
+4572c 4 146 54
+45730 2 145 54
+45732 14 3074 97
+45746 4 3074 97
+4574a 4 3074 97
+4574e 4 88 21
+45752 a 89 21
+FUNC 4575c 80 0 google_breakpad::LinuxDumper::GetMappingEffectiveNameAndPath
+4575c 4 227 21
+45760 4 227 21
+45764 6 228 21
+4576a 8 227 21
+45772 4 228 21
+45776 4 235 21
+4577a 4 235 21
+4577e a 236 21
+45788 2 238 21
+4578a 8 243 21
+45792 6 243 21
+45798 8 243 21
+457a0 c 244 21
+457ac 6 245 21
+457b2 4 255 21
+457b6 4 245 21
+457ba 8 251 21
+457c2 2 252 21
+457c4 2 252 21
+457c6 6 253 21
+457cc 4 255 21
+457d0 c 253 21
+FUNC 457dc b8 0 google_breakpad::LinuxDumper::ReadAuxv
+457dc 8 257 21
+457e4 6 257 21
+457ea 2 259 21
+457ec 2 257 21
+457ee c 259 21
+457fa 2 257 21
+457fc 6 259 21
+45802 18 3087 97
+4581a 4 3087 97
+4581e 4 3087 97
+45822 4 265 21
+45826 6 264 21
+4582c 1c 3104 97
+45848 4 3104 97
+4584c 6 3104 97
+45852 4 272 21
+45856 4 273 21
+4585a 2 272 21
+4585c 2 274 21
+4585e a 275 21
+45868 2 276 21
+4586a 6 275 21
+45870 6 279 21
+45876 2 280 21
+45878 1c 281 21
+FUNC 45894 24 0 google_breakpad::LinuxDumper::Init
+45894 2 91 21
+45896 2 91 21
+45898 6 92 21
+4589e 2 92 21
+458a0 6 92 21
+458a6 2 92 21
+458a8 2 92 21
+458aa 2 92 21
+458ac 4 93 21
+458b0 4 92 21
+458b4 4 93 21
+FUNC 458b8 2a 0 google_breakpad::LinuxDumper::FindMapping
+458b8 2 429 21
+458ba 2 426 21
+458bc 8 192 144
+458c4 4 429 21
+458c8 6 430 21
+458ce 4 431 21
+458d2 8 431 21
+458da 4 429 21
+458de 2 435 21
+458e0 2 436 21
+FUNC 458e4 38 0 google_breakpad::LinuxDumper::GetStackInfo
+458e4 2 402 21
+458e6 6 402 21
+458ec 4 176 102
+458f0 6 407 21
+458f6 6 412 21
+458fc 2 413 21
+458fe 2 416 21
+45900 2 418 21
+45902 2 416 21
+45904 2 418 21
+45906 a 420 21
+45910 2 422 21
+45912 2 420 21
+45914 2 421 21
+45916 6 423 21
+FUNC 4591c 34 0 google_breakpad::LinuxDumper::HandleDeletedFileInMapping
+4591c 2 438 21
+4591e 2 438 21
+45920 2 443 21
+45922 2 438 21
+45924 4 443 21
+45928 4 444 21
+4592c 2 447 21
+4592e 2 446 21
+45930 a 447 21
+4593a 6 446 21
+45940 10 473 21
+FUNC 45950 130 0 google_breakpad::LinuxDumper::ElfFileIdentifierForMapping
+45950 e 99 21
+4595e a 99 21
+45968 4 101 21
+4596c 2 99 21
+4596e 2 101 21
+45970 2 99 21
+45972 4 101 21
+45976 12 67 21
+45988 2 102 21
+4598a 4 103 21
+4598e c 106 21
+4599a 2 108 21
+4599c 12 3026 97
+459ae 4 3026 97
+459b2 8 3026 97
+459ba 4 108 21
+459be 4 109 21
+459c2 c 111 21
+459ce 12 114 21
+459e0 c 116 21
+459ec 6 120 21
+459f2 2 121 21
+459f4 2 120 21
+459f6 2 121 21
+459f8 4 126 21
+459fc e 125 21
+45a0a 4 127 21
+45a0e 4 126 21
+45a12 4 127 21
+45a16 2 129 21
+45a18 2 127 21
+45a1a c 129 21
+45a26 2 130 21
+45a28 4 131 21
+45a2c 6 130 21
+45a32 6 134 21
+45a38 4 135 21
+45a3c 6 135 21
+45a42 6 140 21
+45a48 10 141 21
+45a58 6 135 21
+45a5e 10 137 21
+45a6e 12 141 21
+FUNC 45a80 94 0 std::priv::_Impl_vector<void*, google_breakpad::PageStdAllocator<void*> >::_M_insert_overflow
+45a80 4 108 143
+45a84 2 108 143
+45a86 6 192 144
+45a8c 4 173 144
+45a90 2 108 143
+45a92 2 192 144
+45a94 4 173 144
+45a98 4 108 143
+45a9c 2 173 144
+45a9e 8 41 143
+45aa6 8 175 144
+45aae 6 176 144
+45ab4 e 177 144
+45ac2 e 172 54
+45ad0 e 112 143
+45ade 2 480 105
+45ae0 2 481 105
+45ae2 2 480 105
+45ae4 6 481 105
+45aea a 115 143
+45af4 a 116 143
+45afe 4 118 143
+45b02 4 666 144
+45b06 2 667 144
+45b08 c 668 144
+FUNC 45b14 98 0 google_breakpad::LinuxDumper::LinuxDumper
+45b14 2 75 21
+45b16 10 82 21
+45b26 4 176 102
+45b2a 2 67 54
+45b2c 2 75 21
+45b2e 2 67 54
+45b30 8 82 21
+45b38 6 67 54
+45b3e 4 67 144
+45b42 2 163 54
+45b44 2 481 106
+45b46 8 172 54
+45b4e 2 666 144
+45b50 2 667 144
+45b52 2 76 143
+45b54 2 668 144
+45b56 4 67 144
+45b5a 2 163 54
+45b5c 2 481 106
+45b5e 8 172 54
+45b66 2 666 144
+45b68 2 667 144
+45b6a 2 76 143
+45b6c 2 668 144
+45b6e 4 67 144
+45b72 2 163 54
+45b74 2 481 106
+45b76 8 172 54
+45b7e 4 76 143
+45b82 2 668 144
+45b84 2 173 143
+45b86 2 85 21
+45b88 2 172 54
+45b8a 2 666 144
+45b8c 2 667 144
+45b8e 4 85 21
+45b92 c 173 143
+45b9e e 86 21
+FUNC 45bac 374 0 google_breakpad::LinuxDumper::EnumerateMappings
+45bac 8 283 21
+45bb4 6 283 21
+45bba 2 285 21
+45bbc 2 283 21
+45bbe c 285 21
+45bca 2 283 21
+45bcc 6 285 21
+45bd2 6 3087 97
+45bd8 4 296 21
+45bdc 2 300 21
+45bde 2 296 21
+45be0 2 300 21
+45be2 14 3087 97
+45bf6 4 3087 97
+45bfa 6 3087 97
+45c00 4 304 21
+45c04 4 303 21
+45c08 4 305 21
+45c0c 6 208 54
+45c12 2 305 21
+45c14 4 208 54
+45c18 2 49 16
+45c1a 2 208 54
+45c1c 4 49 16
+45c20 2 70 16
+45c22 2 351 21
+45c24 4 49 16
+45c28 4 351 21
+45c2c 6 325 21
+45c32 2 103 16
+45c34 8 66 16
+45c3c 4 70 16
+45c40 8 66 16
+45c48 8 70 16
+45c50 2 70 16
+45c52 2 69 16
+45c54 6 69 16
+45c5a 4 71 16
+45c5e 2 70 16
+45c60 6 71 16
+45c66 8 78 16
+45c6e 8 86 16
+45c76 8 90 16
+45c7e 4 92 16
+45c82 4 93 16
+45c86 c 312 21
+45c92 2 313 21
+45c94 2 312 21
+45c96 6 313 21
+45c9c 8 314 21
+45ca4 2 315 21
+45ca6 2 314 21
+45ca8 4 315 21
+45cac 2 316 21
+45cae a 317 21
+45cb8 2 316 21
+45cba 4 317 21
+45cbe 6 318 21
+45cc4 c 323 21
+45cd0 4 322 21
+45cd4 a 323 21
+45cde 2 325 21
+45ce0 4 326 21
+45ce4 2 200 144
+45ce6 6 330 21
+45cec 2 344 21
+45cee 2 200 144
+45cf0 a 344 21
+45cfa 4 331 21
+45cfe 6 332 21
+45d04 6 333 21
+45d0a 6 333 21
+45d10 4 333 21
+45d14 2 333 21
+45d16 6 333 21
+45d1c 4 332 21
+45d20 a 208 54
+45d2a 4 357 21
+45d2e 6 358 21
+45d34 4 357 21
+45d38 4 358 21
+45d3c 8 359 21
+45d44 c 360 21
+45d50 4 361 21
+45d54 c 316 21
+45d60 2 363 21
+45d62 6 364 21
+45d68 2 365 21
+45d6a 2 364 21
+45d6c 2 365 21
+45d6e c 366 21
+45d7a 8 377 21
+45d82 4 374 21
+45d86 2 373 21
+45d88 2 374 21
+45d8a 4 373 21
+45d8e 4 377 21
+45d92 4 375 21
+45d96 2 200 144
+45d98 6 377 21
+45d9e 4 383 21
+45da2 a 390 21
+45dac 2 98 16
+45dae 2 3104 97
+45db0 2 98 16
+45db2 4 99 16
+45db6 12 3104 97
+45dc8 4 3104 97
+45dcc 6 3104 97
+45dd2 4 100 16
+45dd6 4 105 16
+45dda 2 103 16
+45ddc 6 105 16
+45de2 6 393 21
+45de8 a 395 21
+45df2 10 396 21
+45e02 6 334 21
+45e08 2 334 21
+45e0a 2 334 21
+45e0c 6 334 21
+45e12 4 333 21
+45e16 e 335 21
+45e24 4 345 21
+45e28 6 346 21
+45e2e 8 349 21
+45e36 a 346 21
+45e40 a 347 21
+45e4a 8 348 21
+45e52 a 351 21
+45e5c 6 349 21
+45e62 e 352 21
+45e70 a 380 144
+45e7a 2 126 108
+45e7c 8 382 144
+45e84 14 386 144
+45e98 2 192 144
+45e9a 2 380 21
+45e9c 2 192 144
+45e9e 2 380 21
+45ea0 2 640 144
+45ea2 2 380 21
+45ea4 4 222 148
+45ea8 2 640 144
+45eaa 4 641 144
+45eae 4 630 144
+45eb2 6 269 105
+45eb8 4 615 144
+45ebc a 172 143
+45ec6 a 173 143
+45ed0 12 176 143
+45ee2 8 192 144
+45eea c 381 21
+45ef6 6 381 21
+45efc 2 202 144
+45efe a 382 21
+45f08 18 396 21
+FUNC 45f20 24 0 sys_ptrace
+45f20 2 3097 97
+45f22 12 3097 97
+45f34 4 3097 97
+45f38 8 3097 97
+45f40 4 3097 97
+FUNC 45f44 52 0 google_breakpad::LinuxPtraceDumper::CopyFromProcess
+45f44 4 134 23
+45f48 2 136 23
+45f4a 2 134 23
+45f4c 2 135 23
+45f4e 4 134 23
+45f52 2 144 23
+45f54 2 135 23
+45f56 2 134 23
+45f58 4 135 23
+45f5c 4 141 23
+45f60 4 142 23
+45f64 c 143 23
+45f70 4 142 23
+45f74 4 143 23
+45f78 2 146 23
+45f7a 2 143 23
+45f7c 6 146 23
+45f82 6 144 23
+45f88 2 147 23
+45f8a 6 146 23
+45f90 6 149 23
+FUNC 45f98 78 0 google_breakpad::LinuxPtraceDumper::BuildProcPath
+45f98 4 112 23
+45f9c 4 112 23
+45fa0 4 113 23
+45fa4 4 114 23
+45fa8 4 113 23
+45fac 4 113 23
+45fb0 6 116 23
+45fb6 6 117 23
+45fbc e 120 23
+45fca 2 121 23
+45fcc 4 122 23
+45fd0 2 120 23
+45fd2 2 122 23
+45fd4 c 125 23
+45fe0 c 126 23
+45fec 4 127 23
+45ff0 2 128 23
+45ff2 2 127 23
+45ff4 a 128 23
+45ffe 2 129 23
+46000 2 130 23
+46002 4 129 23
+46006 a 131 23
+FUNC 46010 42 0 google_breakpad::LinuxPtraceDumper::ThreadsResume
+46010 2 295 23
+46012 2 295 23
+46014 c 296 23
+46020 6 192 144
+46026 6 299 23
+4602c e 101 23
+4603a 2 299 23
+4603c c 300 23
+46048 8 301 23
+46050 2 303 23
+FUNC 46054 1b0 0 google_breakpad::LinuxPtraceDumper::GetThreadInfoByIndex
+46054 10 155 23
+46064 2 155 23
+46066 4 192 144
+4606a 2 155 23
+4606c 2 192 144
+4606e 8 156 23
+46076 2 163 23
+46078 4 159 23
+4607c 12 163 23
+4608e 18 3087 97
+460a6 4 3087 97
+460aa 4 3087 97
+460ae 6 168 23
+460b4 4 167 23
+460b8 c 208 54
+460c4 2 49 16
+460c6 4 174 23
+460ca 2 208 54
+460cc 4 49 16
+460d0 2 70 16
+460d2 2 177 23
+460d4 2 49 16
+460d6 4 177 23
+460da 2 179 23
+460dc 2 174 23
+460de 2 179 23
+460e0 2 174 23
+460e2 2 179 23
+460e4 2 103 16
+460e6 8 66 16
+460ee 4 70 16
+460f2 8 66 16
+460fa 8 70 16
+46102 2 70 16
+46104 2 69 16
+46106 6 69 16
+4610c 8 71 16
+46114 6 78 16
+4611a 4 86 16
+4611e 6 90 16
+46124 4 92 16
+46128 4 93 16
+4612c c 177 23
+46138 4 178 23
+4613c c 179 23
+46148 c 180 23
+46154 4 118 16
+46158 4 117 16
+4615c a 118 16
+46166 2 98 16
+46168 2 3104 97
+4616a 2 98 16
+4616c 4 99 16
+46170 12 3104 97
+46182 4 3104 97
+46186 6 3104 97
+4618c 4 100 16
+46190 4 105 16
+46194 2 103 16
+46196 6 105 16
+4619c 6 185 23
+461a2 6 187 23
+461a8 8 187 23
+461b0 12 204 23
+461c2 14 208 23
+461d6 4 259 23
+461da 4 268 23
+461de 26 271 23
+FUNC 46204 20 0 google_breakpad::LinuxPtraceDumper::LinuxPtraceDumper
+46204 2 106 23
+46206 2 106 23
+46208 6 108 23
+4620e 2 109 23
+46210 c 108 23
+4621c 8 109 23
+FUNC 46224 a0 0 std::priv::_Impl_vector<int, google_breakpad::PageStdAllocator<int> >::_M_insert_overflow
+46224 4 108 143
+46228 2 108 143
+4622a 6 192 144
+46230 4 173 144
+46234 4 108 143
+46238 2 192 144
+4623a 4 173 144
+4623e 4 108 143
+46242 2 173 144
+46244 8 41 143
+4624c a 175 144
+46256 6 176 144
+4625c e 177 144
+4626a a 172 54
+46274 2 112 143
+46276 2 172 54
+46278 4 224 105
+4627c 6 224 105
+46282 2 224 105
+46284 4 172 54
+46288 2 480 105
+4628a 4 481 105
+4628e 2 480 105
+46290 6 481 105
+46296 a 115 143
+462a0 2 223 105
+462a2 4 224 105
+462a6 8 224 105
+462ae 2 224 105
+462b0 2 118 143
+462b2 4 666 144
+462b6 2 667 144
+462b8 c 668 144
+FUNC 462c4 164 0 google_breakpad::LinuxPtraceDumper::EnumerateThreads
+462c4 8 307 23
+462cc 6 307 23
+462d2 2 309 23
+462d4 2 307 23
+462d6 c 309 23
+462e2 2 307 23
+462e4 8 309 23
+462ec 1a 3087 97
+46306 4 3087 97
+4630a 4 3087 97
+4630e 6 314 23
+46314 4 313 23
+46318 c 208 54
+46324 2 51 14
+46326 2 208 54
+46328 4 319 23
+4632c 2 51 14
+4632e 2 322 23
+46330 2 51 14
+46332 4 322 23
+46336 2 323 23
+46338 4 63 14
+4633c 4 323 23
+46340 4 65 14
+46344 1a 3016 97
+4635e 4 3016 97
+46362 6 3016 97
+46368 4 68 14
+4636c 4 71 14
+46370 2 73 14
+46372 2 71 14
+46374 6 73 14
+4637a 4 77 14
+4637e 4 77 14
+46382 4 82 14
+46386 a 322 23
+46390 8 323 23
+46398 2 322 23
+4639a 6 324 23
+463a0 4 325 23
+463a4 4 324 23
+463a8 6 325 23
+463ae 4 326 23
+463b2 6 325 23
+463b8 6 87 14
+463be 2 93 14
+463c0 2 94 14
+463c2 2 93 14
+463c4 2 94 14
+463c6 2 93 14
+463c8 8 94 14
+463d0 6 334 23
+463d6 14 336 23
+463ea 8 380 144
+463f2 2 126 108
+463f4 8 382 144
+463fc 14 386 144
+46410 18 336 23
+FUNC 46428 be 0 std::priv::_Impl_vector<int, google_breakpad::PageStdAllocator<int> >::_M_fill_insert_aux
+46428 4 140 143
+4642c 2 140 143
+4642e 2 416 144
+46430 2 140 143
+46432 2 416 144
+46434 6 140 143
+4643a 2 416 144
+4643c 4 416 144
+46440 8 150 143
+46448 4 152 143
+4644c 6 153 143
+46452 4 107 142
+46456 c 106 142
+46462 2 154 143
+46464 4 255 105
+46468 2 154 143
+4646a 2 256 105
+4646c 2 154 143
+4646e 2 256 105
+46470 8 256 105
+46478 2 442 105
+4647a 4 442 105
+4647e 4 443 105
+46482 2 442 105
+46484 6 443 105
+4648a 4 158 143
+4648e 6 314 142
+46494 2 249 142
+46496 8 249 142
+4649e 2 249 142
+464a0 6 146 108
+464a6 2 107 142
+464a8 2 158 143
+464aa 2 107 142
+464ac 8 106 142
+464b4 6 160 143
+464ba 6 442 105
+464c0 4 443 105
+464c4 4 442 105
+464c8 6 443 105
+464ce a 146 143
+464d8 8 147 143
+464e0 6 163 143
+FUNC 464e6 fe 0 google_breakpad::LinuxPtraceDumper::ThreadsSuspend
+464e6 6 277 23
+464ec 4 278 23
+464f0 2 277 23
+464f2 6 278 23
+464f8 2 65 23
+464fa 8 192 144
+46502 4 280 23
+46506 4 281 23
+4650a 4 65 23
+4650e 2 66 23
+46510 2 65 23
+46512 6 66 23
+46518 4 202 144
+4651c 6 66 23
+46522 6 67 23
+46528 2 66 23
+4652a 1c 3272 97
+46546 4 3272 97
+4654a 4 3272 97
+4654e a 71 23
+46558 e 72 23
+46566 a 70 23
+46570 2 192 144
+46572 4 202 144
+46576 2 192 144
+46578 4 286 23
+4657c c 286 23
+46588 4 192 144
+4658c 2 287 23
+4658e 4 192 144
+46592 4 640 144
+46596 4 641 144
+4659a 4 630 144
+4659e 4 615 144
+465a2 2 172 143
+465a4 4 222 148
+465a8 c 172 143
+465b4 a 173 143
+465be e 176 143
+465cc 2 288 23
+465ce 4 280 23
+465d2 2 291 23
+465d4 6 292 23
+465da 4 291 23
+465de 6 293 23
+FUNC 465e4 24 0 sys_read
+465e4 2 3104 97
+465e6 12 3104 97
+465f8 4 3104 97
+465fc 8 3104 97
+46604 4 3104 97
+FUNC 46608 e4 0 MinidumpWriter::WriteOSInformation
+46608 a 1162 26
+46612 6 1162 26
+46618 2 1170 26
+4661a 2 1162 26
+4661c 4 1164 26
+46620 2 1162 26
+46622 2 1164 26
+46624 2 1170 26
+46626 2 1162 26
+46628 a 1170 26
+46632 4 1171 26
+46636 2 1174 26
+46638 2 1182 26
+4663a c 1174 26
+46646 1c 1182 26
+46662 2 1183 26
+46664 4 1175 26
+46668 a 1195 26
+46672 6 1184 26
+46678 6 1187 26
+4667e 6 1188 26
+46684 4 1191 26
+46688 6 1191 26
+4668e 14 1205 26
+466a2 6 1207 26
+466a8 2 1209 26
+466aa 2 1194 26
+466ac c 1195 26
+466b8 2 1196 26
+466ba c 1200 26
+466c6 4 1201 26
+466ca 4 1199 26
+466ce 1e 1210 26
+FUNC 466ec 36 0 MinidumpWriter::Init
+466ec 2 144 26
+466ee 2 144 26
+466f0 a 145 26
+466fa a 148 26
+46704 6 149 26
+4670a 8 150 26
+46712 2 153 26
+46714 4 154 26
+46718 6 153 26
+4671e 4 154 26
+FUNC 46722 2a 0 MinidumpWriter::HaveMappingInfo
+46722 2 462 26
+46724 2 463 26
+46726 2 89 121
+46728 4 463 26
+4672c 8 468 26
+46734 4 469 26
+46738 4 470 26
+4673c 4 468 26
+46740 4 91 121
+46744 4 474 26
+46748 2 471 26
+4674a 2 475 26
+FUNC 4674c 36 0 std::priv::__ucopy<MDMemoryDescriptor*, MDMemoryDescriptor*, int>
+4674c 2 86 142
+4674e 2 82 142
+46750 2 86 142
+46752 4 82 142
+46756 4 86 142
+4675a 6 86 142
+46760 2 139 108
+46762 8 139 108
+4676a 4 86 142
+4676e e 139 108
+4677c 6 95 142
+FUNC 46782 28 0 sys_open
+46782 4 3087 97
+46786 14 3087 97
+4679a 4 3087 97
+4679e 8 3087 97
+467a6 4 3087 97
+FUNC 467ac 128 0 MinidumpWriter::FillRawModule
+467ac 14 534 26
+467c0 c 534 26
+467cc 6 539 26
+467d2 4 534 26
+467d6 4 539 26
+467da 2 541 26
+467dc 4 548 26
+467e0 6 541 26
+467e6 8 542 26
+467ee 8 548 26
+467f6 2 552 26
+467f8 18 554 26
+46810 10 558 26
+46820 a 560 26
+4682a 12 566 26
+4683c 6 568 26
+46842 a 161 33
+4684c 4 569 26
+46850 4 570 26
+46854 2 568 26
+46856 4 570 26
+4685a 6 161 33
+46860 6 570 26
+46866 4 571 26
+4686a c 574 26
+46876 c 186 33
+46882 8 176 33
+4688a 2 580 26
+4688c 2 176 33
+4688e c 577 26
+4689a 6 580 26
+468a0 2 580 26
+468a2 2 580 26
+468a4 8 580 26
+468ac 4 580 26
+468b0 4 582 26
+468b4 20 584 26
+FUNC 468d4 26 0 MinidumpWriter::~MinidumpWriter
+468d4 2 156 26
+468d6 6 159 26
+468dc 2 156 26
+468de 4 159 26
+468e2 6 160 26
+468e8 8 161 26
+468f0 6 156 26
+468f6 4 162 26
+FUNC 468fc 340 0 MinidumpWriter::WriteSystemInfoStream
+468fc 4 628 26
+46900 2 161 33
+46902 4 46 31
+46906 4 628 26
+4690a 2 161 33
+4690c 4 629 26
+46910 2 161 33
+46912 2 212 33
+46914 2 161 33
+46916 2 212 33
+46918 4 628 26
+4691c 4 212 33
+46920 4 161 33
+46924 4 212 33
+46928 4 47 31
+4692c 4 46 31
+46930 4 47 31
+46934 8 630 26
+4693c a 632 26
+46946 4 896 26
+4694a 2 634 26
+4694c 2 896 26
+4694e 2 634 26
+46950 2 896 26
+46952 2 176 33
+46954 4 634 26
+46958 8 176 33
+46960 2 896 26
+46962 8 635 26
+4696a c 896 26
+46976 10 928 26
+46986 4 935 26
+4698a 2 947 26
+4698c a 51 12
+46996 2 947 26
+46998 4 946 26
+4699c 2 945 26
+4699e 2 948 26
+469a0 2 949 26
+469a2 e 51 12
+469b0 8 959 26
+469b8 6 960 26
+469be 8 961 26
+469c6 6 962 26
+469cc 8 964 26
+469d4 6 965 26
+469da 8 966 26
+469e2 6 967 26
+469e8 e 115 12
+469f6 2 114 12
+469f8 8 114 12
+46a00 8 122 12
+46a08 4 121 12
+46a0c 4 121 12
+46a10 2 122 12
+46a12 8 121 12
+46a1a 2 973 26
+46a1c 8 983 26
+46a24 a 984 26
+46a2e 2 67 54
+46a30 4 176 102
+46a34 2 67 54
+46a36 6 208 54
+46a3c 8 67 54
+46a44 4 208 54
+46a48 2 49 16
+46a4a 2 208 54
+46a4c 2 49 16
+46a4e 8 48 29
+46a56 2 1026 26
+46a58 2 49 16
+46a5a 4 1026 26
+46a5e 2 1061 26
+46a60 2 49 16
+46a62 4 1061 26
+46a66 1a 995 26
+46a80 e 1000 26
+46a8e 6 1002 26
+46a94 8 1005 26
+46a9c 8 1005 26
+46aa4 8 1006 26
+46aac 4 1007 26
+46ab0 2 1008 26
+46ab2 2 1007 26
+46ab4 2 1008 26
+46ab6 2 1007 26
+46ab8 6 1008 26
+46abe 4 1010 26
+46ac2 4 1012 26
+46ac6 e 1015 26
+46ad4 6 1016 26
+46ada 8 1018 26
+46ae2 4 996 26
+46ae6 c 1026 26
+46af2 c 118 29
+46afe 8 1034 26
+46b06 8 1034 26
+46b0e 6 1034 26
+46b14 8 1038 26
+46b1c 8 1038 26
+46b24 e 1061 26
+46b32 4 117 29
+46b36 4 118 29
+46b3a 6 1066 26
+46b40 8 1069 26
+46b48 4 1070 26
+46b4c c 1072 26
+46b58 6 1073 26
+46b5e 6 1075 26
+46b64 2 1076 26
+46b66 6 1075 26
+46b6c 2 1078 26
+46b6e 12 1083 26
+46b80 a 1084 26
+46b8a 2 1083 26
+46b8c 12 1085 26
+46b9e 2 1078 26
+46ba0 4 1078 26
+46ba4 6 1078 26
+46baa 2 1092 26
+46bac 2 144 54
+46bae 4 1092 26
+46bb2 2 144 54
+46bb4 2 144 54
+46bb6 4 146 54
+46bba 2 145 54
+46bbc 14 3074 97
+46bd0 4 3074 97
+46bd4 4 3074 97
+46bd8 4 1078 26
+46bdc 8 638 26
+46be4 6 216 33
+46bea 12 92 31
+46bfc 6 1040 26
+46c02 2 1041 26
+46c04 6 1042 26
+46c0a 2 1041 26
+46c0c 4 1042 26
+46c10 6 1043 26
+46c16 26 641 26
+FUNC 46c3c 12 0 google_breakpad::TypedMDRVA<MDRawDirectory>::CopyIndex
+46c3c 2 76 31
+46c3e 2 72 31
+46c40 6 76 31
+46c46 4 77 31
+46c4a 4 76 31
+FUNC 46c4e 1e 0 google_breakpad::TypedMDRVA<MDRawContextARM>::~TypedMDRVA
+46c4e 2 214 33
+46c50 4 216 33
+46c54 2 214 33
+46c56 4 216 33
+46c5a e 92 31
+46c68 4 218 33
+FUNC 46c6c 14 0 google_breakpad::TypedMDRVA<MDString>::CopyIndexAfterObject
+46c6c 2 80 31
+46c6e a 87 31
+46c78 4 88 31
+46c7c 4 87 31
+FUNC 46c6c 14 0 google_breakpad::TypedMDRVA<unsigned int>::CopyIndexAfterObject
+46c6c 2 80 31
+46c6e a 87 31
+46c78 4 88 31
+46c7c 4 87 31
+FUNC 46c80 1a 0 google_breakpad::TypedMDRVA<MDRawLinkMap>::~TypedMDRVA
+46c80 2 214 33
+46c82 2 216 33
+46c84 2 214 33
+46c86 4 216 33
+46c8a c 92 31
+46c96 4 218 33
+FUNC 46c9c 5c 0 std::priv::_Impl_vector<MDMemoryDescriptor, google_breakpad::PageStdAllocator<MDMemoryDescriptor> >::reserve
+46c9c 4 62 143
+46ca0 4 199 144
+46ca4 2 62 143
+46ca6 2 199 144
+46ca8 6 63 143
+46cae 6 64 143
+46cb4 8 41 143
+46cbc a 192 144
+46cc6 4 172 54
+46cca 2 70 143
+46ccc 6 172 54
+46cd2 c 113 142
+46cde 6 172 54
+46ce4 6 76 143
+46cea 2 666 144
+46cec 2 667 144
+46cee a 668 144
+FUNC 46cf8 ac 0 std::priv::_Impl_vector<MDMemoryDescriptor, google_breakpad::PageStdAllocator<MDMemoryDescriptor> >::_M_insert_overflow_aux
+46cf8 4 81 143
+46cfc 2 81 143
+46cfe 6 192 144
+46d04 4 173 144
+46d08 2 81 143
+46d0a 2 192 144
+46d0c 4 173 144
+46d10 4 81 143
+46d14 2 173 144
+46d16 8 41 143
+46d1e 8 175 144
+46d26 6 176 144
+46d2c e 177 144
+46d3a c 172 54
+46d46 a 113 142
+46d50 2 93 143
+46d52 2 113 142
+46d54 2 93 143
+46d56 2 119 108
+46d58 8 119 108
+46d60 6 95 143
+46d66 6 314 142
+46d6c 2 249 142
+46d6e 4 249 142
+46d72 2 139 108
+46d74 8 139 108
+46d7c 6 249 142
+46d82 6 98 143
+46d88 c 113 142
+46d94 4 667 144
+46d98 2 104 143
+46d9a a 668 144
+FUNC 46da4 32 0 std::priv::_Impl_vector<MDMemoryDescriptor, google_breakpad::PageStdAllocator<MDMemoryDescriptor> >::push_back
+46da4 2 376 144
+46da6 4 380 144
+46daa 2 376 144
+46dac 2 380 144
+46dae 4 376 144
+46db2 2 380 144
+46db4 2 119 108
+46db6 6 119 108
+46dbc 8 382 144
+46dc4 e 162 144
+46dd2 4 388 144
+FUNC 46dd6 c2 0 MinidumpWriter::FillThreadStack
+46dd6 4 256 26
+46dda 4 258 26
+46dde 4 256 26
+46de2 4 256 26
+46de6 4 258 26
+46dea 4 256 26
+46dee 10 261 26
+46dfe 4 262 26
+46e02 4 161 33
+46e06 2 263 26
+46e08 6 161 33
+46e0e 2 263 26
+46e10 4 263 26
+46e14 4 265 26
+46e18 12 267 26
+46e2a 2 100 22
+46e2c 8 772 26
+46e34 2 269 26
+46e36 2 772 26
+46e38 12 271 26
+46e4a c 186 33
+46e56 2 274 26
+46e58 2 275 26
+46e5a 6 274 26
+46e60 8 176 33
+46e68 c 275 26
+46e74 e 173 148
+46e82 2 282 26
+46e84 6 278 26
+46e8a 4 279 26
+46e8e 2 280 26
+46e90 8 283 26
+FUNC 46e98 388 0 MinidumpWriter::WriteThreadListStream
+46e98 8 286 26
+46ea0 2 287 26
+46ea2 e 286 26
+46eb0 2 286 26
+46eb2 4 192 144
+46eb6 2 286 26
+46eb8 6 192 144
+46ebe 6 289 26
+46ec4 4 161 33
+46ec8 2 68 31
+46eca 4 161 33
+46ece 2 67 31
+46ed0 2 161 33
+46ed2 2 212 33
+46ed4 2 68 31
+46ed6 2 161 33
+46ed8 2 68 31
+46eda 2 286 26
+46edc 4 68 31
+46ee0 2 67 31
+46ee2 8 68 31
+46eea 6 290 26
+46ef0 2 293 26
+46ef2 2 176 33
+46ef4 4 293 26
+46ef8 8 176 33
+46f00 8 294 26
+46f08 2 304 26
+46f0a 2 296 26
+46f0c 2 304 26
+46f0e 2 296 26
+46f10 4 304 26
+46f14 a 308 26
+46f1e e 310 26
+46f2c 4 303 26
+46f30 2 313 26
+46f32 2 303 26
+46f34 2 315 26
+46f36 6 313 26
+46f3c a 315 26
+46f46 2 316 26
+46f48 4 203 144
+46f4c 2 316 26
+46f4e 2 323 26
+46f50 4 316 26
+46f54 2 323 26
+46f56 2 316 26
+46f58 2 323 26
+46f5a 4 322 26
+46f5e 6 324 26
+46f64 8 323 26
+46f6c e 388 26
+46f7a 6 393 26
+46f80 a 394 26
+46f8a 12 396 26
+46f9c 6 395 26
+46fa2 6 216 33
+46fa8 c 92 31
+46fb4 12 422 26
+46fc6 6 392 26
+46fcc 2 161 33
+46fce 4 212 33
+46fd2 4 161 33
+46fd6 2 212 33
+46fd8 4 161 33
+46fdc 6 212 33
+46fe2 2 161 33
+46fe4 4 212 33
+46fe8 2 46 31
+46fea 2 161 33
+46fec 6 47 31
+46ff2 4 46 31
+46ff6 4 47 31
+46ffa 2 400 26
+46ffc 8 401 26
+47004 c 402 26
+47010 8 403 26
+47018 6 404 26
+4701e 8 405 26
+47026 10 176 33
+47036 a 406 26
+47040 e 407 26
+4704e 4 176 33
+47052 4 408 26
+47056 4 176 33
+4705a 6 408 26
+47060 a 409 26
+4706a a 413 26
+47074 4 123 22
+47078 6 415 26
+4707e c 418 26
+4708a 4 313 26
+4708e 6 326 26
+47094 2 327 26
+47096 2 326 26
+47098 14 327 26
+470ac a 332 26
+470b6 2 338 26
+470b8 2 332 26
+470ba 8 192 144
+470c2 2 338 26
+470c4 4 192 144
+470c8 4 338 26
+470cc 4 340 26
+470d0 4 339 26
+470d4 c 340 26
+470e0 6 341 26
+470e6 2 340 26
+470e8 2 341 26
+470ea 6 340 26
+470f0 14 347 26
+47104 6 350 26
+4710a c 352 26
+47116 c 161 33
+47122 2 359 26
+47124 6 161 33
+4712a 2 352 26
+4712c 4 161 33
+47130 a 359 26
+4713a 2 100 22
+4713c a 772 26
+47146 14 367 26
+4715a e 186 33
+47168 e 176 33
+47176 a 369 26
+47180 c 173 148
+4718c 4 338 26
+47190 8 161 33
+47198 4 212 33
+4719c 4 161 33
+471a0 4 212 33
+471a4 2 161 33
+471a6 8 212 33
+471ae 2 46 31
+471b0 6 47 31
+471b6 4 46 31
+471ba 4 47 31
+471be 6 374 26
+471c4 c 376 26
+471d0 8 380 26
+471d8 4 382 26
+471dc 8 383 26
+471e4 12 176 33
+471f6 a 384 26
+47200 4 385 26
+47204 8 176 33
+4720c 6 385 26
+47212 e 422 26
+FUNC 47220 8a 0 MinidumpWriter::WriteAppMemory
+47220 6 425 26
+47226 4 161 33
+4722a 2 425 26
+4722c 2 89 121
+4722e 4 434 26
+47232 2 435 26
+47234 6 426 26
+4723a 2 100 22
+4723c a 430 26
+47246 2 432 26
+47248 2 432 26
+4724a 2 432 26
+4724c e 432 26
+4725a 2 161 33
+4725c 4 435 26
+47260 8 161 33
+47268 4 435 26
+4726c 2 435 26
+4726e c 186 33
+4727a 6 440 26
+47280 8 176 33
+47288 c 441 26
+47294 a 173 148
+4729e 4 91 121
+472a2 2 445 26
+472a4 6 446 26
+FUNC 472aa b0 0 std::priv::_Impl_vector<char, google_breakpad::PageStdAllocator<char> >::_M_fill_insert_aux
+472aa 6 140 143
+472b0 2 416 144
+472b2 2 140 143
+472b4 2 416 144
+472b6 8 140 143
+472be 2 416 144
+472c0 4 416 144
+472c4 2 150 143
+472c6 4 152 143
+472ca 2 153 143
+472cc 4 107 142
+472d0 a 106 142
+472da 4 154 143
+472de 2 255 105
+472e0 2 154 143
+472e2 2 256 105
+472e4 4 154 143
+472e8 2 256 105
+472ea 8 256 105
+472f2 a 471 105
+472fc 2 158 143
+472fe a 314 142
+47308 8 249 142
+47310 6 146 108
+47316 2 107 142
+47318 4 158 143
+4731c 2 107 142
+4731e 8 106 142
+47326 4 471 105
+4732a a 160 143
+47334 4 471 105
+47338 6 163 143
+4733e 4 471 105
+47342 a 146 143
+4734c 8 147 143
+47354 6 163 143
+FUNC 4735c ac 0 std::priv::_Impl_vector<char, google_breakpad::PageStdAllocator<char> >::resize
+4735c 4 636 144
+47360 2 636 144
+47362 8 192 144
+4736a 2 640 144
+4736c 4 636 144
+47370 2 640 144
+47372 2 641 144
+47374 4 630 144
+47378 4 615 144
+4737c 4 171 143
+47380 a 172 143
+4738a 10 173 143
+4739a 6 173 144
+473a0 8 41 143
+473a8 8 175 144
+473b0 8 177 144
+473b8 8 172 54
+473c0 2 112 143
+473c2 2 172 54
+473c4 6 224 105
+473ca 6 224 105
+473d0 2 224 105
+473d2 6 471 105
+473d8 2 503 105
+473da 4 471 105
+473de 2 223 105
+473e0 2 224 105
+473e2 6 224 105
+473e8 8 224 105
+473f0 2 224 105
+473f2 2 118 143
+473f4 4 666 144
+473f8 2 667 144
+473fa 2 668 144
+473fc c 644 144
+FUNC 47408 800 0 MinidumpWriter::Dump
+47408 6 164 26
+4740e 2 161 33
+47410 e 164 26
+4741e 2 161 33
+47420 2 164 26
+47422 4 212 33
+47426 4 169 26
+4742a 2 161 33
+4742c 4 212 33
+47430 2 164 26
+47432 6 161 33
+47438 2 212 33
+4743a 2 169 26
+4743c 4 212 33
+47440 8 161 33
+47448 2 46 31
+4744a 2 161 33
+4744c 4 47 31
+47450 8 212 33
+47458 2 46 31
+4745a 6 47 31
+47460 2 171 26
+47462 6 172 26
+47468 2 59 31
+4746a 4 60 31
+4746e 2 59 31
+47470 4 60 31
+47474 4 173 26
+47478 a 175 26
+47482 2 177 26
+47484 2 179 26
+47486 2 177 26
+47488 6 178 26
+4748e 4 179 26
+47492 4 180 26
+47496 2 181 26
+47498 2 179 26
+4749a 2 181 26
+4749c 10 186 26
+474ac a 188 26
+474b6 4 482 26
+474ba 4 483 26
+474be 8 192 144
+474c6 2 89 121
+474c8 4 319 119
+474cc 2 91 121
+474ce 4 320 119
+474d2 8 485 26
+474da 4 485 26
+474de 6 192 144
+474e4 6 485 26
+474ea 4 486 26
+474ee 4 449 26
+474f2 4 449 26
+474f6 4 452 26
+474fa 8 452 26
+47502 6 487 26
+47508 2 487 26
+4750a 2 488 26
+4750c 6 485 26
+47512 10 161 33
+47522 2 212 33
+47524 2 492 26
+47526 2 68 31
+47528 2 67 31
+4752a 2 68 31
+4752c 2 67 31
+4752e 6 68 31
+47534 2 493 26
+47536 2 502 26
+47538 4 508 26
+4753c 2 176 33
+4753e 2 502 26
+47540 8 176 33
+47548 a 503 26
+47552 2 192 144
+47554 2 504 26
+47556 e 192 144
+47564 4 507 26
+47568 6 514 26
+4756e 4 494 26
+47572 2 46 31
+47574 2 47 31
+47576 8 46 31
+4757e 6 509 26
+47584 6 449 26
+4758a 4 508 26
+4758e 8 508 26
+47596 6 449 26
+4759c 8 452 26
+475a4 12 452 26
+475b6 4 523 26
+475ba 4 89 121
+475be 4 525 26
+475c2 8 519 26
+475ca 2 523 26
+475cc 4 523 26
+475d0 12 523 26
+475e2 2 523 26
+475e4 4 524 26
+475e8 12 525 26
+475fa 6 91 121
+47600 6 216 33
+47606 c 92 31
+47612 6 190 26
+47618 a 192 26
+47622 e 194 26
+47630 a 161 33
+4763a 4 192 144
+4763e 6 161 33
+47644 2 212 33
+47646 6 192 144
+4764c 4 588 26
+47650 2 67 31
+47652 2 68 31
+47654 2 67 31
+47656 6 68 31
+4765c 2 589 26
+4765e 2 599 26
+47660 2 176 33
+47662 2 599 26
+47664 8 176 33
+4766c a 600 26
+47676 8 192 144
+4767e 4 604 26
+47682 4 192 144
+47686 4 602 26
+4768a 4 591 26
+4768e 2 46 31
+47690 2 47 31
+47692 2 46 31
+47694 4 47 31
+47698 a 192 144
+476a2 6 604 26
+476a8 e 606 26
+476b6 e 604 26
+476c4 6 216 33
+476ca c 92 31
+476d6 6 197 26
+476dc 2 161 33
+476de a 199 26
+476e8 2 161 33
+476ea 4 212 33
+476ee 6 161 33
+476f4 2 212 33
+476f6 2 161 33
+476f8 2 212 33
+476fa 2 161 33
+476fc 6 212 33
+47702 2 46 31
+47704 4 47 31
+47708 4 46 31
+4770c 4 47 31
+47710 4 613 26
+47714 a 615 26
+4771e 2 617 26
+47720 2 176 33
+47722 2 617 26
+47724 8 176 33
+4772c e 618 26
+4773a 4 620 26
+4773e 4 621 26
+47742 6 622 26
+47748 e 623 26
+47756 8 216 33
+4775e c 92 31
+4776a 8 201 26
+47772 a 203 26
+4777c 10 205 26
+4778c a 207 26
+47796 2 210 26
+47798 2 209 26
+4779a 8 210 26
+477a2 2 209 26
+477a4 6 210 26
+477aa 2 780 26
+477ac 2 781 26
+477ae 2 782 26
+477b0 a 212 26
+477ba 2 214 26
+477bc 2 215 26
+477be 6 214 26
+477c4 c 215 26
+477d0 2 215 26
+477d2 2 780 26
+477d4 2 781 26
+477d6 2 782 26
+477d8 a 217 26
+477e2 2 220 26
+477e4 2 219 26
+477e6 6 220 26
+477ec 2 219 26
+477ee 6 220 26
+477f4 2 780 26
+477f6 2 781 26
+477f8 2 782 26
+477fa a 222 26
+47804 2 224 26
+47806 2 225 26
+47808 6 224 26
+4780e c 225 26
+4781a 2 225 26
+4781c 2 780 26
+4781e 2 781 26
+47820 2 782 26
+47822 a 227 26
+4782c 2 229 26
+4782e 2 230 26
+47830 6 229 26
+47836 c 230 26
+47842 2 230 26
+47844 2 780 26
+47846 2 781 26
+47848 2 782 26
+4784a a 232 26
+47854 2 234 26
+47856 2 235 26
+47858 6 234 26
+4785e c 235 26
+4786a 2 235 26
+4786c 2 780 26
+4786e 2 781 26
+47870 2 782 26
+47872 a 237 26
+4787c 2 239 26
+4787e 2 240 26
+47880 6 239 26
+47886 c 240 26
+47892 2 240 26
+47894 2 780 26
+47896 2 781 26
+47898 2 782 26
+4789a e 242 26
+478a8 6 244 26
+478ae 2 646 26
+478b0 4 644 26
+478b4 6 647 26
+478ba 6 647 26
+478c0 4 654 26
+478c4 4 657 26
+478c8 8 651 26
+478d0 2 657 26
+478d2 4 655 26
+478d6 4 657 26
+478da 2 657 26
+478dc 2 657 26
+478de e 657 26
+478ec 6 660 26
+478f2 4 660 26
+478f6 6 661 26
+478fc 2 663 26
+478fe 6 664 26
+47904 6 655 26
+4790a 8 667 26
+47912 6 670 26
+47918 2 676 26
+4791a 4 682 26
+4791e 2 675 26
+47920 2 682 26
+47922 4 682 26
+47926 2 682 26
+47928 2 682 26
+4792a 6 682 26
+47930 4 680 26
+47934 8 682 26
+4793c 6 683 26
+47942 4 684 26
+47946 4 680 26
+4794a 4 686 26
+4794e 2 703 26
+47950 4 703 26
+47954 4 703 26
+47958 2 703 26
+4795a e 703 26
+47968 4 704 26
+4796c 2 706 26
+4796e 6 704 26
+47974 4 706 26
+47978 2 706 26
+4797a 8 706 26
+47982 6 706 26
+47988 2 708 26
+4798a 8 707 26
+47992 8 711 26
+4799a 6 712 26
+479a0 2 161 33
+479a2 2 60 31
+479a4 c 161 33
+479b0 2 59 31
+479b2 4 60 31
+479b6 c 212 33
+479c2 2 59 31
+479c4 4 60 31
+479c8 4 716 26
+479cc 2 176 33
+479ce 2 722 26
+479d0 2 176 33
+479d2 2 724 26
+479d4 4 726 26
+479d8 4 722 26
+479dc 2 724 26
+479de 4 724 26
+479e2 2 724 26
+479e4 2 724 26
+479e6 c 724 26
+479f2 8 726 26
+479fa 2 725 26
+479fc 4 726 26
+47a00 4 727 26
+47a04 4 729 26
+47a08 6 729 26
+47a0e c 729 26
+47a1a 14 732 26
+47a2e 8 735 26
+47a36 2 736 26
+47a38 2 76 31
+47a3a 2 736 26
+47a3c 2 737 26
+47a3e 2 76 31
+47a40 2 737 26
+47a42 e 76 31
+47a50 48 739 26
+47a98 a 717 26
+47aa2 6 161 33
+47aa8 4 212 33
+47aac 6 161 33
+47ab2 6 212 33
+47ab8 6 161 33
+47abe 4 212 33
+47ac2 2 67 31
+47ac4 2 161 33
+47ac6 6 68 31
+47acc 2 67 31
+47ace 4 68 31
+47ad2 6 744 26
+47ad8 a 746 26
+47ae2 2 747 26
+47ae4 2 176 33
+47ae6 2 747 26
+47ae8 2 176 33
+47aea 2 752 26
+47aec 4 176 33
+47af0 2 67 144
+47af2 2 176 33
+47af4 2 750 26
+47af6 a 748 26
+47b00 2 750 26
+47b02 2 754 26
+47b04 2 751 26
+47b06 4 100 22
+47b0a 2 751 26
+47b0c 2 754 26
+47b0e 2 753 26
+47b10 2 755 26
+47b12 2 100 22
+47b14 2 753 26
+47b16 2 755 26
+47b18 8 67 144
+47b20 2 163 54
+47b22 4 481 106
+47b26 2 63 143
+47b28 6 172 54
+47b2e 2 666 144
+47b30 2 667 144
+47b32 2 76 143
+47b34 2 668 144
+47b36 4 760 26
+47b3a 4 222 148
+47b3e 2 760 26
+47b40 4 222 148
+47b44 6 762 26
+47b4a c 762 26
+47b56 e 87 31
+47b64 6 216 33
+47b6a c 92 31
+47b76 2 245 26
+47b78 2 780 26
+47b7a 2 781 26
+47b7c 2 782 26
+47b7e a 247 26
+47b88 a 252 26
+47b92 6 216 33
+47b98 c 92 31
+47ba4 6 216 33
+47baa c 92 31
+47bb6 10 254 26
+47bc6 8 510 26
+47bce 6 510 26
+47bd4 18 514 26
+47bec 14 516 26
+47c00 8 254 26
+FUNC 47c08 a8 0 WriteMinidumpImpl
+47c08 6 1250 26
+47c0e 2 1250 26
+47c10 2 1251 26
+47c12 4 1250 26
+47c16 4 1251 26
+47c1a 2 1250 26
+47c1c 4 1251 26
+47c20 2 1253 26
+47c22 8 1254 26
+47c2a 4 123 22
+47c2e 4 127 22
+47c32 6 130 22
+47c38 8 138 26
+47c40 2 138 26
+47c42 10 138 26
+47c52 2 100 22
+47c54 2 153 148
+47c56 4 100 22
+47c5a 2 67 144
+47c5c 2 163 54
+47c5e 2 153 148
+47c60 4 67 144
+47c64 2 481 106
+47c66 4 153 148
+47c6a 8 138 26
+47c72 2 1266 26
+47c74 2 138 26
+47c76 2 768 26
+47c78 8 1266 26
+47c80 8 1268 26
+47c88 8 1263 26
+47c90 4 1255 26
+47c94 e 42 24
+47ca2 e 1269 26
+FUNC 47cb0 52 0 google_breakpad::WriteMinidump
+47cb0 6 1276 26
+47cb6 4 353 121
+47cba 4 1276 26
+47cbe 4 353 121
+47cc2 4 1276 26
+47cc6 c 353 121
+47cd2 1c 1279 26
+47cee c 205 121
+47cfa 8 1280 26
+FUNC 47d02 52 0 google_breakpad::WriteMinidump
+47d02 e 1283 26
+47d10 14 353 121
+47d24 1c 1286 26
+47d40 c 205 121
+47d4c 8 1287 26
+FUNC 47d54 20 0 google_breakpad::WriteMinidump
+47d54 2 1305 26
+47d56 2 1305 26
+47d58 18 1308 26
+47d70 4 1309 26
+FUNC 47d74 26 0 google_breakpad::WriteMinidump
+47d74 8 1324 26
+47d7c 1a 1327 26
+47d96 4 1328 26
+FUNC 47d9a 26 0 google_breakpad::WriteMinidump
+47d9a 2 1334 26
+47d9c 6 1334 26
+47da2 1a 1337 26
+47dbc 4 1338 26
+FUNC 47dc0 a4 0 google_breakpad::WriteMinidump
+47dc0 6 1290 26
+47dc6 4 127 22
+47dca 4 1290 26
+47dce 2 1291 26
+47dd0 2 353 121
+47dd2 6 1291 26
+47dd8 8 353 121
+47de0 2 130 22
+47de2 4 127 22
+47de6 c 353 121
+47df2 2 138 26
+47df4 6 138 26
+47dfa 4 138 26
+47dfe 6 138 26
+47e04 2 100 22
+47e06 2 153 148
+47e08 2 100 22
+47e0a 2 153 148
+47e0c 2 163 54
+47e0e 4 67 144
+47e12 2 481 106
+47e14 4 138 26
+47e18 4 153 148
+47e1c 2 205 121
+47e1e 8 138 26
+47e26 a 205 121
+47e30 a 1297 26
+47e3a 8 1299 26
+47e42 8 1296 26
+47e4a e 42 24
+47e58 c 1300 26
+FUNC 47e64 12 0 google_breakpad::MinidumpFileWriter::MinidumpFileWriter
+47e64 10 55 32
+47e74 2 56 32
+FUNC 47e76 34 0 google_breakpad::MinidumpFileWriter::Open
+47e76 2 63 32
+47e78 4 3087 97
+47e7c 2 63 32
+47e7e 16 3087 97
+47e94 4 3087 97
+47e98 8 3087 97
+47ea0 2 72 32
+47ea2 2 66 32
+47ea4 6 72 32
+FUNC 47eaa 8 0 google_breakpad::MinidumpFileWriter::SetFile
+47eaa 2 77 32
+47eac 2 76 32
+47eae 4 77 32
+FUNC 47eb2 4a 0 google_breakpad::MinidumpFileWriter::Close
+47eb2 2 80 32
+47eb4 2 80 32
+47eb6 6 83 32
+47ebc a 84 32
+47ec6 14 2979 97
+47eda 4 2979 97
+47ede 8 2979 97
+47ee6 4 92 32
+47eea 4 88 32
+47eee 2 92 32
+47ef0 4 88 32
+47ef4 4 81 32
+47ef8 2 85 32
+47efa 2 96 32
+FUNC 47efc 10 0 google_breakpad::MinidumpFileWriter::~MinidumpFileWriter
+47efc 2 58 32
+47efe 2 59 32
+47f00 2 58 32
+47f02 2 59 32
+47f04 4 60 32
+47f08 4 61 32
+FUNC 47f0c 44 0 google_breakpad::MinidumpFileWriter::Allocate
+47f0c 2 220 32
+47f0e 2 223 32
+47f10 2 225 32
+47f12 4 223 32
+47f16 6 225 32
+47f1c 2 220 32
+47f1e 4 225 32
+47f22 2 234 32
+47f24 6 176 102
+47f2a 8 233 32
+47f32 8 234 32
+47f3a 2 237 32
+47f3c 2 240 32
+47f3e 4 241 32
+47f42 4 243 32
+47f46 4 235 32
+47f4a 6 244 32
+FUNC 47f50 6e 0 google_breakpad::MinidumpFileWriter::Copy
+47f50 4 246 32
+47f54 4 246 32
+47f58 4 252 32
+47f5c 2 246 32
+47f5e 2 252 32
+47f60 2 246 32
+47f62 2 252 32
+47f64 6 253 32
+47f6a 16 3071 97
+47f80 4 3071 97
+47f84 8 3071 97
+47f8c 4 257 32
+47f90 18 3162 97
+47fa8 4 3162 97
+47fac 8 3162 97
+47fb4 6 258 32
+47fba 4 268 32
+FUNC 47fbe 16 0 google_breakpad::UntypedMDRVA::Allocate
+47fbe 2 270 32
+47fc0 2 270 32
+47fc2 2 272 32
+47fc4 8 273 32
+47fcc 8 275 32
+FUNC 47fd4 6 0 google_breakpad::UntypedMDRVA::Copy
+47fd4 6 281 32
+FUNC 47fda 4c 0 google_breakpad::MinidumpFileWriter::CopyStringToMDString
+47fda 4 133 32
+47fde 6 133 32
+47fe4 2 136 32
+47fe6 2 134 32
+47fe8 2 140 32
+47fea 2 139 32
+47fec 2 139 32
+47fee a 140 32
+47ff8 2 141 32
+47ffa 4 149 32
+47ffe 2 151 32
+48000 c 149 32
+4800c 2 145 32
+4800e 2 146 32
+48010 c 151 32
+4801c 4 152 32
+48020 6 155 32
+FUNC 48026 aa 0 google_breakpad::MinidumpFileWriter::WriteString
+48026 4 199 32
+4802a 2 167 32
+4802c 6 199 32
+48032 6 167 32
+48038 2 168 32
+4803a 2 199 32
+4803c 6 168 32
+48042 2 168 32
+48044 4 168 32
+48048 8 161 33
+48050 2 67 31
+48052 2 173 32
+48054 2 68 31
+48056 8 68 31
+4805e 6 161 33
+48064 8 212 33
+4806c 2 67 31
+4806e 4 68 31
+48072 4 173 32
+48076 4 168 32
+4807a 2 177 32
+4807c 8 179 32
+48084 2 177 32
+48086 4 179 32
+4808a 2 182 32
+4808c 4 174 32
+48090 2 183 32
+48092 2 184 32
+48094 4 183 32
+48098 8 184 32
+480a0 4 186 32
+480a4 8 176 33
+480ac a 187 32
+480b6 6 216 33
+480bc c 92 31
+480c8 8 201 32
+FUNC 480d0 8 0 google_breakpad::ElfCoreDump::Note::GetHeader
+480d0 8 99 55
+FUNC 480d8 e 0 google_breakpad::ElfCoreDump::Note::IsValid
+480d8 2 46 38
+480da 4 47 38
+480de 8 48 38
+FUNC 480e6 c 0 google_breakpad::ElfCoreDump::Note::GetType
+480e6 2 54 38
+480e8 4 55 38
+480ec 2 57 38
+480ee 2 57 38
+480f0 2 58 38
+FUNC 480f2 26 0 google_breakpad::ElfCoreDump::Note::GetName
+480f2 2 60 38
+480f4 2 60 38
+480f6 2 61 38
+480f8 2 60 38
+480fa 4 61 38
+480fe 4 62 38
+48102 e 63 38
+48110 4 50 55
+48114 4 66 38
+FUNC 48118 2c 0 google_breakpad::ElfCoreDump::Note::GetDescription
+48118 2 68 38
+4811a 2 68 38
+4811c 2 69 38
+4811e 2 68 38
+48120 4 69 38
+48124 4 70 38
+48128 2 92 38
+4812a 2 72 38
+4812c 2 92 38
+4812e c 72 38
+4813a 2 72 38
+4813c 4 50 55
+48140 4 75 38
+FUNC 48144 42 0 google_breakpad::ElfCoreDump::Note::GetNextNote
+48144 2 50 55
+48146 2 77 38
+48148 2 77 38
+4814a 2 79 38
+4814c 2 77 38
+4814e 4 50 55
+48152 6 79 38
+48158 2 80 38
+4815a e 92 38
+48168 2 84 38
+4816a 4 92 38
+4816e a 84 38
+48178 8 44 38
+48180 6 87 38
+FUNC 48186 8 0 google_breakpad::ElfCoreDump::ElfCoreDump
+48186 6 50 55
+4818c 2 98 38
+FUNC 48186 8 0 google_breakpad::MemoryMappedFile::MemoryMappedFile
+48186 6 50 55
+4818c 2 47 47
+FUNC 4818e a 0 google_breakpad::ElfCoreDump::SetContent
+4818e 2 104 38
+48190 8 105 38
+FUNC 48198 8 0 google_breakpad::ElfCoreDump::GetHeader
+48198 8 99 55
+FUNC 481a0 30 0 google_breakpad::ElfCoreDump::IsValid
+481a0 2 108 38
+481a2 4 109 38
+481a6 2 116 38
+481a8 8 113 38
+481b0 6 114 38
+481b6 6 115 38
+481bc a 116 38
+481c6 2 116 38
+481c8 8 118 38
+FUNC 481d0 20 0 google_breakpad::ElfCoreDump::GetProgramHeader
+481d0 2 124 38
+481d2 4 124 38
+481d6 4 125 38
+481da 2 126 38
+481dc 2 128 38
+481de 2 108 55
+481e0 6 109 55
+481e6 4 131 38
+481ea 4 109 55
+481ee 2 131 38
+FUNC 481f0 c 0 google_breakpad::ElfCoreDump::GetProgramHeaderCount
+481f0 2 144 38
+481f2 4 145 38
+481f6 2 146 38
+481f8 2 146 38
+481fa 2 147 38
+FUNC 481fc 28 0 google_breakpad::ElfCoreDump::GetFirstProgramHeaderOfType
+481fc 2 134 38
+481fe 4 134 38
+48202 8 135 38
+4820a 4 135 38
+4820e 8 136 38
+48216 6 137 38
+4821c 4 135 38
+48220 2 141 38
+48222 2 142 38
+FUNC 48224 5e 0 google_breakpad::ElfCoreDump::CopyData
+48224 4 149 38
+48228 8 149 38
+48230 8 150 38
+48238 4 150 38
+4823c 8 151 38
+48244 6 152 38
+4824a 2 155 38
+4824c 4 156 38
+48250 2 156 38
+48252 4 155 38
+48256 4 156 38
+4825a c 159 38
+48266 4 160 38
+4826a 8 161 38
+48272 6 162 38
+48278 4 150 38
+4827c 2 166 38
+4827e 4 167 38
+FUNC 48282 34 0 google_breakpad::ElfCoreDump::GetFirstNote
+48282 2 50 55
+48284 2 169 38
+48286 4 169 38
+4828a 4 171 38
+4828e 4 50 55
+48292 6 171 38
+48298 4 172 38
+4829c c 174 38
+482a8 8 44 38
+482b0 6 177 38
+FUNC 482b8 18 0 google_breakpad::IsValidElf
+482b8 2 111 41
+482ba 2 109 41
+482bc 8 111 41
+482c4 c 112 41
+FUNC 482d0 104 0 google_breakpad::FindElfSection
+482d0 4 126 41
+482d4 2 126 41
+482d6 2 131 41
+482d8 2 126 41
+482da 2 132 41
+482dc 2 131 41
+482de 2 132 41
+482e0 6 126 41
+482e6 6 134 41
+482ec 4 135 41
+482f0 2 118 41
+482f2 2 138 41
+482f4 2 139 41
+482f6 4 145 41
+482fa 2 62 41
+482fc 2 42 40
+482fe 2 62 41
+48300 2 42 40
+48302 4 62 41
+48306 2 42 40
+48308 2 65 41
+4830a 4 42 40
+4830e 4 65 41
+48312 2 70 41
+48314 2 57 40
+48316 2 70 41
+48318 4 57 40
+4831c a 58 40
+48326 6 61 40
+4832c 8 63 40
+48334 2 63 40
+48336 2 62 40
+48338 6 63 40
+4833e 6 65 40
+48344 2 63 40
+48346 8 61 40
+4834e 4 149 41
+48352 2 42 40
+48354 2 62 41
+48356 2 42 40
+48358 4 62 41
+4835c 2 42 40
+4835e 2 65 41
+48360 4 42 40
+48364 4 65 41
+48368 2 70 41
+4836a 2 57 40
+4836c 2 70 41
+4836e 4 57 40
+48372 8 58 40
+4837a 6 61 40
+48380 8 63 40
+48388 2 63 40
+4838a 2 62 40
+4838c 6 63 40
+48392 6 65 40
+48398 2 63 40
+4839a 8 61 40
+483a2 4 72 41
+483a6 6 73 41
+483ac 6 74 41
+483b2 a 152 41
+483bc 8 72 41
+483c4 6 73 41
+483ca 4 74 41
+483ce 6 156 41
+FUNC 483d4 8a 0 google_breakpad::FindElfSegment
+483d4 4 162 41
+483d8 2 162 41
+483da 4 167 41
+483de 2 168 41
+483e0 a 162 41
+483ea 6 170 41
+483f0 6 171 41
+483f6 2 118 41
+483f8 6 174 41
+483fe 4 175 41
+48402 4 181 41
+48406 2 98 41
+48408 2 42 40
+4840a 8 98 41
+48412 a 99 41
+4841c 6 100 41
+48422 4 101 41
+48426 4 98 41
+4842a 4 185 41
+4842e 2 42 40
+48430 2 98 41
+48432 2 42 40
+48434 4 98 41
+48438 2 98 41
+4843a 4 98 41
+4843e a 99 41
+48448 6 100 41
+4844e 4 101 41
+48452 8 188 41
+4845a 4 192 41
+FUNC 48460 5c 0 google_breakpad::FileID::FileID
+48460 2 51 42
+48462 2 51 42
+48464 2 112 137
+48466 2 481 106
+48468 2 229 145
+4846a 2 51 42
+4846c 6 229 145
+48472 4 608 135
+48476 8 600 135
+4847e 4 610 135
+48482 2 158 106
+48484 2 347 106
+48486 2 158 106
+48488 6 134 124
+4848e 6 158 106
+48494 2 613 135
+48496 2 611 135
+48498 2 613 135
+4849a 2 612 135
+4849c 4 613 135
+484a0 2 107 142
+484a2 8 106 142
+484aa 2 107 142
+484ac 2 101 108
+484ae 2 380 136
+484b0 2 101 108
+484b2 a 51 42
+FUNC 484bc 138 0 google_breakpad::FileID::ElfFileIdentifierFromMappedFile
+484bc 6 142 42
+484c2 6 98 42
+484c8 2 142 42
+484ca 8 98 42
+484d2 2 142 42
+484d4 4 98 42
+484d8 2 99 42
+484da 4 98 42
+484de 12 101 42
+484f0 2 99 42
+484f2 2 103 42
+484f4 18 124 42
+4850c 8 101 42
+48514 4 124 42
+48518 2 126 42
+4851a 4 148 42
+4851e 6 106 42
+48524 2 108 42
+48526 4 64 42
+4852a 4 66 42
+4852e 6 67 42
+48534 8 70 42
+4853c c 71 42
+48548 4 69 42
+4854c 4 109 42
+48550 2 111 42
+48552 4 64 42
+48556 4 66 42
+4855a 6 67 42
+48560 8 70 42
+48568 c 71 42
+48574 4 69 42
+48578 a 129 42
+48582 2 130 42
+48584 12 131 42
+48596 8 132 42
+4859e 8 134 42
+485a6 2 133 42
+485a8 6 134 42
+485ae 2 133 42
+485b0 4 135 42
+485b4 6 74 42
+485ba 2 80 42
+485bc 6 83 42
+485c2 2 80 42
+485c4 4 83 42
+485c8 4 80 42
+485cc 2 85 42
+485ce 4 80 42
+485d2 e 84 42
+485e0 2 87 42
+485e2 12 149 42
+FUNC 485f4 2a 0 google_breakpad::FileID::ElfFileIdentifier
+485f4 4 151 42
+485f8 2 151 42
+485fa e 152 42
+48608 2 153 42
+4860a 6 156 42
+48610 2 154 42
+48612 6 156 42
+48618 6 157 42
+FUNC 48620 b4 0 google_breakpad::FileID::ConvertIdentifierToString
+48620 8 161 42
+48628 6 161 42
+4862e 2 165 42
+48630 4 161 42
+48634 18 165 42
+4864c 4 167 42
+48650 2 167 42
+48652 4 169 42
+48656 2 169 42
+48658 4 169 42
+4865c 4 171 42
+48660 2 171 42
+48662 2 174 42
+48664 4 171 42
+48668 4 181 42
+4866c 2 173 42
+4866e 4 174 42
+48672 4 175 42
+48676 4 177 42
+4867a 6 180 42
+48680 4 177 42
+48684 4 178 42
+48688 2 180 42
+4868a 4 180 42
+4868e 6 181 42
+48694 2 183 42
+48696 4 183 42
+4869a 2 183 42
+4869c 2 184 42
+4869e 8 183 42
+486a6 4 184 42
+486aa 2 184 42
+486ac 4 183 42
+486b0 2 184 42
+486b2 2 184 42
+486b4 4 174 42
+486b8 2 188 42
+486ba 4 188 42
+486be 16 189 42
+FUNC 486d4 10 0 GUIDGenerator::InitOnceImpl
+486d4 2 78 44
+486d6 6 79 44
+486dc 4 80 44
+486e0 4 132 101
+FUNC 486e4 54 0 CreateGUID
+486e4 2 87 44
+486e6 2 75 44
+486e8 2 87 44
+486ea a 75 44
+486f4 4 128 101
+486f8 2 65 44
+486fa 4 128 101
+486fe 2 66 44
+48700 4 128 101
+48704 2 67 44
+48706 4 128 101
+4870a 2 58 44
+4870c 2 57 44
+4870e 2 58 44
+48710 2 59 44
+48712 2 60 44
+48714 2 59 44
+48716 2 60 44
+48718 4 128 101
+4871c 2 58 44
+4871e 2 57 44
+48720 2 58 44
+48722 2 59 44
+48724 4 60 44
+48728 2 59 44
+4872a e 89 44
+FUNC 48738 60 0 GUIDToString
+48738 2 92 44
+4873a 4 92 44
+4873e 8 98 44
+48746 2 52 44
+48748 2 51 44
+4874a 6 52 44
+48750 2 51 44
+48752 2 52 44
+48754 6 53 44
+4875a 2 98 44
+4875c 2 52 44
+4875e 4 51 44
+48762 6 52 44
+48768 2 53 44
+4876a 2 52 44
+4876c 4 53 44
+48770 10 98 44
+48780 6 99 44
+48786 6 102 44
+4878c 2 103 44
+4878e a 104 44
+FUNC 48798 10 0 my_strlen
+48798 2 40 45
+4879a 4 42 45
+4879e 8 42 45
+487a6 2 44 45
+FUNC 487a8 22 0 my_strcmp
+487a8 4 46 45
+487ac c 48 45
+487b8 2 50 45
+487ba 6 52 45
+487c0 6 49 45
+487c6 2 51 45
+487c8 2 57 45
+FUNC 487ca 26 0 my_strncmp
+487ca 2 59 45
+487cc 2 60 45
+487ce 4 60 45
+487d2 8 61 45
+487da 2 63 45
+487dc 2 65 45
+487de 4 60 45
+487e2 4 66 45
+487e6 6 62 45
+487ec 4 64 45
+FUNC 487f0 32 0 my_strtoui
+487f0 2 78 45
+487f2 6 79 45
+487f8 4 86 45
+487fc 6 83 45
+48802 6 87 45
+48808 4 86 45
+4880c 2 87 45
+4880e 2 89 45
+48810 8 90 45
+48818 2 94 45
+4881a 4 95 45
+4881e 2 80 45
+48820 2 96 45
+FUNC 48822 24 0 my_uint_len
+48822 4 100 45
+48826 2 99 45
+48828 4 100 45
+4882c 8 106 45
+48834 4 104 45
+48838 4 105 45
+4883c 2 104 45
+4883e 4 109 45
+48842 2 101 45
+48844 2 110 45
+FUNC 48846 36 0 my_uitos
+48846 2 118 45
+48848 a 118 45
+48852 4 119 45
+48856 12 120 45
+48868 12 119 45
+4887a 2 121 45
+FUNC 4887c 1a 0 my_strchr
+4887c 2 123 45
+4887e 6 124 45
+48884 8 124 45
+4888c 8 126 45
+48894 2 129 45
+FUNC 48896 18 0 my_strrchr
+48896 2 132 45
+48898 4 131 45
+4889c 6 133 45
+488a2 8 134 45
+488aa 4 139 45
+FUNC 488ae 1a 0 my_memchr
+488ae 4 141 45
+488b2 2 143 45
+488b4 6 144 45
+488ba a 145 45
+488c4 2 148 45
+488c6 2 149 45
+FUNC 488c8 40 0 my_read_hex_ptr
+488c8 2 155 45
+488ca 2 156 45
+488cc 4 155 45
+488d0 10 159 45
+488e0 4 161 45
+488e4 c 162 45
+488f0 4 164 45
+488f4 c 165 45
+48900 2 167 45
+48902 2 174 45
+48904 2 173 45
+48906 2 175 45
+FUNC 48908 22 0 my_read_decimal_ptr
+48908 2 177 45
+4890a 2 178 45
+4890c 2 177 45
+4890e 4 182 45
+48912 10 181 45
+48922 2 183 45
+48924 2 189 45
+48926 2 188 45
+48928 2 190 45
+FUNC 4892a e 0 my_memset
+4892a 2 192 45
+4892c 4 194 45
+48930 6 195 45
+48936 2 196 45
+FUNC 48938 22 0 my_strlcpy
+48938 2 198 45
+4893a 2 199 45
+4893c a 202 45
+48946 4 203 45
+4894a 8 204 45
+48952 2 209 45
+48954 2 210 45
+48956 4 213 45
+FUNC 4895a 20 0 my_strlcat
+4895a 2 215 45
+4895c 2 216 45
+4895e 4 218 45
+48962 4 218 45
+48966 8 219 45
+4896e a 224 45
+48978 2 225 45
+FUNC 4897c 48 0 my_isspace
+4897c 4 227 45
+48980 2 229 45
+48982 4 227 45
+48986 2 229 45
+48988 4 227 45
+4898c 4 229 45
+48990 2 227 45
+48992 4 229 45
+48996 4 230 45
+4899a 6 231 45
+489a0 2 230 45
+489a2 4 230 45
+489a6 4 234 45
+489aa 2 232 45
+489ac 18 235 45
+FUNC 489c4 2c 0 google_breakpad::MemoryMappedFile::Unmap
+489c4 2 106 47
+489c6 4 106 47
+489ca 2 107 47
+489cc 14 3074 97
+489e0 4 3074 97
+489e4 4 3074 97
+489e8 4 70 55
+489ec 4 72 55
+FUNC 489f0 c 0 google_breakpad::MemoryMappedFile::~MemoryMappedFile
+489f0 2 53 47
+489f2 2 53 47
+489f4 4 54 47
+489f8 4 55 47
+FUNC 489fc e4 0 google_breakpad::MemoryMappedFile::Map
+489fc 8 57 47
+48a04 e 57 47
+48a12 4 58 47
+48a16 18 3087 97
+48a2e 4 3087 97
+48a32 6 3087 97
+48a38 14 3446 97
+48a4c 4 3446 97
+48a50 4 3446 97
+48a54 6 91 47
+48a5a 2 99 47
+48a5c c 104 47
+48a68 e 70 47
+48a76 4 81 47
+48a7a 8 82 47
+48a82 8 89 47
+48a8a 8 3454 97
+48a92 4 95 47
+48a96 12 3454 97
+48aa8 4 3454 97
+48aac 8 3454 97
+48ab4 6 97 47
+48aba 4 98 47
+48abe 2 72 55
+48ac0 4 102 47
+48ac4 6 72 55
+48aca 4 70 55
+48ace 4 72 55
+48ad2 4 103 47
+48ad6 a 104 47
+FUNC 48ae0 12 0 google_breakpad::MemoryMappedFile::MemoryMappedFile
+48ae0 2 50 55
+48ae2 2 49 47
+48ae4 2 49 47
+48ae6 4 50 55
+48aea 4 50 47
+48aee 4 51 47
+FUNC 48af2 32 0 google_breakpad::SafeReadLink
+48af2 2 39 48
+48af4 12 3108 97
+48b06 4 3108 97
+48b0a 4 3108 97
+48b0e 4 50 48
+48b12 8 46 48
+48b1a 2 46 48
+48b1c 4 47 48
+48b20 2 48 48
+48b22 2 51 48
+FUNC 48b24 48 0 google_breakpad::UTF8ToUTF16Char
+48b24 4 58 60
+48b28 2 63 60
+48b2a 4 58 60
+48b2e 2 59 60
+48b30 2 60 60
+48b32 2 61 60
+48b34 4 62 60
+48b38 4 63 60
+48b3c 16 69 60
+48b52 2 71 60
+48b54 6 72 60
+48b5a 2 76 60
+48b5c 4 78 60
+48b60 2 75 60
+48b62 2 78 60
+48b64 2 82 60
+48b66 6 83 60
+FUNC 48ba8 f8 0 google_breakpad::::CrashGenerationClientImpl::RequestDump
+48ba8 6 51 0
+48bae a 51 0
+48bb8 14 3761 97
+48bcc 4 3761 97
+48bd0 6 3761 97
+48bd6 4 53 0
+48bda 2 63 0
+48bdc 2 61 0
+48bde 2 58 0
+48be0 2 59 0
+48be2 a 61 0
+48bec 2 62 0
+48bee 6 64 0
+48bf4 2 62 0
+48bf6 2 63 0
+48bf8 4 64 0
+48bfc 4 65 0
+48c00 2 66 0
+48c02 2 69 0
+48c04 2 70 0
+48c06 2 3671 97
+48c08 2 66 0
+48c0a 2 71 0
+48c0c 4 73 0
+48c10 18 3671 97
+48c28 4 3671 97
+48c2c 4 3671 97
+48c30 4 75 0
+48c34 6 75 0
+48c3a 4 3671 97
+48c3e 6 76 0
+48c44 4 77 0
+48c48 6 78 0
+48c4e 2 54 0
+48c50 c 88 0
+48c5c 1c 3104 97
+48c78 6 85 0
+48c7e 4 87 0
+48c82 4 3104 97
+48c86 4 3104 97
+48c8a 4 84 0
+48c8e 8 84 0
+48c96 a 88 0
+FUNC 48ca0 20 0 google_breakpad::CrashGenerationClient::TryCreate
+48ca0 2 99 0
+48ca2 4 100 0
+48ca6 6 102 0
+48cac a 48 0
+48cb6 2 102 0
+48cb8 2 101 0
+48cba 6 103 0
+FUNC 48cc0 4 0 google_breakpad::ThreadInfo::GetInstructionPointer
+48cc0 4 195 2
+FUNC 48cc4 24 0 google_breakpad::ThreadInfo::FillCPUContext
+48cc4 4 197 2
+48cc8 a 198 2
+48cd2 4 201 2
+48cd6 2 200 2
+48cd8 4 201 2
+48cdc 2 200 2
+48cde a 203 2
+FUNC 48ce8 4 0 google_breakpad::UContextReader::GetStackPointer
+48ce8 4 150 3
+FUNC 48cec 4 0 google_breakpad::UContextReader::GetInstructionPointer
+48cec 4 154 3
+FUNC 48cf0 94 0 google_breakpad::UContextReader::FillCPUContext
+48cf0 2 156 3
+48cf2 2 157 3
+48cf4 2 180 3
+48cf6 2 157 3
+48cf8 2 159 3
+48cfa 2 156 3
+48cfc 2 159 3
+48cfe 2 160 3
+48d00 2 181 3
+48d02 4 160 3
+48d06 6 161 3
+48d0c 6 162 3
+48d12 6 163 3
+48d18 6 164 3
+48d1e 6 165 3
+48d24 6 166 3
+48d2a 6 167 3
+48d30 6 168 3
+48d36 6 169 3
+48d3c 6 171 3
+48d42 6 172 3
+48d48 6 173 3
+48d4e 6 174 3
+48d54 6 175 3
+48d5a 2 177 3
+48d5c 2 181 3
+48d5e 4 177 3
+48d62 6 180 3
+48d68 8 181 3
+48d70 4 182 3
+48d74 4 183 3
+48d78 c 182 3
+FUNC 48d84 7a 0 isLegalUTF8
+48d84 2 299 37
+48d86 e 300 37
+48d94 e 303 37
+48da2 e 304 37
+48db0 8 305 37
+48db8 c 307 37
+48dc4 4 309 37
+48dc8 8 307 37
+48dd0 4 312 37
+48dd4 4 310 37
+48dd8 6 311 37
+48dde 4 312 37
+48de2 4 313 37
+48de6 a 316 37
+48df0 a 301 37
+48dfa 2 303 37
+48dfc 2 320 37
+FUNC 48e00 118 0 ConvertUTF8toUTF16
+48e00 8 339 37
+48e08 4 390 37
+48e0c 2 339 37
+48e0e 2 339 37
+48e10 2 345 37
+48e12 4 365 37
+48e16 2 345 37
+48e18 2 341 37
+48e1a 2 342 37
+48e1c 2 339 37
+48e1e 2 345 37
+48e20 2 365 37
+48e22 4 343 37
+48e26 6 345 37
+48e2c 6 346 37
+48e32 c 350 37
+48e3e e 357 37
+48e4c 6 358 37
+48e52 2 344 37
+48e54 a 359 37
+48e5e 2 344 37
+48e60 a 360 37
+48e6a 2 344 37
+48e6c a 361 37
+48e76 2 344 37
+48e78 a 362 37
+48e82 2 344 37
+48e84 8 363 37
+48e8c 2 344 37
+48e8e 6 365 37
+48e94 6 367 37
+48e9a 6 371 37
+48ea0 a 373 37
+48eaa 4 382 37
+48eae 6 384 37
+48eb4 4 385 37
+48eb8 6 387 37
+48ebe 8 390 37
+48ec6 8 394 37
+48ece 2 395 37
+48ed0 2 396 37
+48ed2 2 395 37
+48ed4 2 396 37
+48ed6 2 399 37
+48ed8 4 398 37
+48edc 6 399 37
+48ee2 4 400 37
+48ee6 4 399 37
+48eea a 400 37
+48ef4 4 340 37
+48ef8 4 347 37
+48efc 2 351 37
+48efe 2 404 37
+48f00 4 403 37
+48f04 2 404 37
+48f06 12 406 37
+FUNC 48f18 20 0 google_breakpad::DumpContext::DumpContext
+48f18 2 53 68
+48f1a 2 53 68
+48f1c 1c 54 68
+FUNC 48f38 10 0 google_breakpad::DumpContext::GetContextCPU
+48f38 4 61 68
+48f3c 8 67 68
+48f44 2 64 68
+48f46 2 68 68
+FUNC 48f48 4 0 google_breakpad::DumpContext::GetContextFlags
+48f48 4 72 68
+FUNC 48f4c 4 0 google_breakpad::DumpContext::SetContextFlags
+48f4c 4 190 68
+FUNC 48f50 4 0 google_breakpad::DumpContext::SetContextAMD64
+FUNC 48f50 4 0 google_breakpad::DumpContext::SetContextARM
+FUNC 48f50 4 0 google_breakpad::DumpContext::SetContextARM64
+FUNC 48f50 4 0 google_breakpad::DumpContext::SetContextMIPS
+FUNC 48f50 4 0 google_breakpad::DumpContext::SetContextPPC
+FUNC 48f50 4 0 google_breakpad::DumpContext::SetContextPPC64
+FUNC 48f50 4 0 google_breakpad::DumpContext::SetContextSPARC
+FUNC 48f50 4 0 google_breakpad::DumpContext::SetContextX86
+48f50 4 194 68
+FUNC 48f54 4a 0 google_breakpad::DumpContext::FreeContext
+48f54 2 225 68
+48f56 2 225 68
+48f58 38 226 68
+48f90 6 256 68
+48f96 4 266 68
+48f9a 4 267 68
+FUNC 48fa0 18 0 google_breakpad::DumpContext::~DumpContext
+48fa0 2 56 68
+48fa2 a 56 68
+48fac 4 57 68
+48fb0 8 58 68
+FUNC 48fb8 12 0 google_breakpad::DumpContext::~DumpContext
+48fb8 2 56 68
+48fba 2 56 68
+48fbc 4 58 68
+48fc0 6 58 68
+48fc6 4 58 68
+FUNC 48fcc 4c 0 google_breakpad::DumpContext::GetContextX86
+48fcc 2 74 68
+48fce 2 74 68
+48fd0 a 75 68
+48fda 18 76 68
+48ff2 a 333 127
+48ffc 6 76 68
+49002 4 76 68
+49006 2 80 68
+49008 10 81 68
+FUNC 49018 4c 0 google_breakpad::DumpContext::GetContextPPC
+49018 2 83 68
+4901a 2 83 68
+4901c a 84 68
+49026 18 85 68
+4903e a 333 127
+49048 6 85 68
+4904e 4 85 68
+49052 2 89 68
+49054 10 90 68
+FUNC 49064 4c 0 google_breakpad::DumpContext::GetContextARM
+49064 2 119 68
+49066 2 119 68
+49068 a 120 68
+49072 18 121 68
+4908a a 333 127
+49094 6 121 68
+4909a 4 121 68
+4909e 2 125 68
+490a0 10 126 68
+FUNC 490b0 4c 0 google_breakpad::DumpContext::GetContextPPC64
+490b0 2 92 68
+490b2 2 92 68
+490b4 a 93 68
+490be 18 94 68
+490d6 a 333 127
+490e0 6 94 68
+490e6 4 94 68
+490ea 2 98 68
+490ec 10 99 68
+FUNC 490fc 4c 0 google_breakpad::DumpContext::GetContextAMD64
+490fc 2 101 68
+490fe 2 101 68
+49100 a 102 68
+4910a 18 103 68
+49122 a 333 127
+4912c 6 103 68
+49132 4 103 68
+49136 2 107 68
+49138 10 108 68
+FUNC 49148 4c 0 google_breakpad::DumpContext::GetContextSPARC
+49148 2 110 68
+4914a 2 110 68
+4914c a 111 68
+49156 18 112 68
+4916e a 333 127
+49178 6 112 68
+4917e 4 112 68
+49182 2 116 68
+49184 10 117 68
+FUNC 49194 4c 0 google_breakpad::DumpContext::GetContextARM64
+49194 2 128 68
+49196 2 128 68
+49198 a 129 68
+491a2 18 130 68
+491ba a 333 127
+491c4 6 130 68
+491ca 4 130 68
+491ce 2 134 68
+491d0 10 135 68
+FUNC 491e0 4c 0 google_breakpad::DumpContext::GetContextMIPS
+491e0 2 137 68
+491e2 2 137 68
+491e4 a 138 68
+491ee 18 139 68
+49206 a 333 127
+49210 6 139 68
+49216 4 139 68
+4921a 2 143 68
+4921c 10 144 68
+FUNC 4922c 170 0 google_breakpad::DumpContext::GetInstructionPointer
+4922c 6 146 68
+49232 4 146 68
+49236 4 147 68
+4923a 1a 147 68
+49254 a 333 127
+4925e 6 147 68
+49264 8 149 68
+4926c 4 151 68
+49270 1a 152 68
+4928a a 333 127
+49294 6 152 68
+4929a 2 153 68
+4929c 20 156 68
+492bc c 176 68
+492c8 e 156 68
+492d6 c 173 68
+492e2 c 156 68
+492ee 12 164 68
+49300 c 158 68
+4930c a 161 68
+49316 a 167 68
+49320 c 170 68
+4932c 6 176 68
+49332 2 177 68
+49334 12 179 68
+49346 2 180 68
+49348 1a 183 68
+49362 a 333 127
+4936c 6 183 68
+49372 2 184 68
+49374 28 187 68
+FUNC 4939c 6 0 google_breakpad::DumpObject::DumpObject
+4939c 4 36 69
+493a0 2 37 69
+FUNC 493a4 44 0 google_breakpad::HexString
+493a4 e 86 71
+493b2 2 86 71
+493b4 4 88 71
+493b8 2 86 71
+493ba a 88 71
+493c4 a 89 71
+493ce 1a 90 71
+FUNC 493e8 48 0 google_breakpad::HexString
+493e8 c 92 71
+493f4 2 92 71
+493f6 8 94 71
+493fe 2 92 71
+49400 a 94 71
+4940a a 95 71
+49414 1c 96 71
+FUNC 49430 44 0 google_breakpad::HexString
+49430 e 98 71
+4943e 2 98 71
+49440 4 100 71
+49444 2 98 71
+49446 a 100 71
+49450 a 101 71
+4945a 1a 102 71
+FUNC 49474 4a 0 google_breakpad::LogStream::~LogStream
+49474 2 82 71
+49476 2 83 71
+49478 2 82 71
+4947a c 181 127
+49486 2 412 126
+49488 10 422 126
+49498 2 414 126
+4949a e 414 126
+494a8 4 421 126
+494ac 6 424 126
+494b2 6 359 127
+494b8 6 84 71
+FUNC 494c0 18c 0 google_breakpad::LogStream::LogStream
+494c0 e 54 71
+494ce 2 58 71
+494d0 6 54 71
+494d6 2 56 71
+494d8 2 58 71
+494da 2 54 71
+494dc 4 58 71
+494e0 a 63 71
+494ea 12 66 71
+494fc c 69 71
+49508 6 74 71
+4950e 2 75 71
+49510 8 71 71
+49518 6 68 71
+4951e 2 78 71
+49520 e 333 127
+4952e 4 78 71
+49532 4 333 127
+49536 6 78 71
+4953c 2 78 71
+4953e 4 78 71
+49542 8 78 71
+4954a a 78 71
+49554 8 333 127
+4955c c 181 127
+49568 2 199 126
+4956a 10 211 126
+4957a 2 202 126
+4957c 2 145 115
+4957e 4 202 126
+49582 2 145 115
+49584 2 202 126
+49586 6 145 115
+4958c 8 351 122
+49594 6 351 122
+4959a 2 202 126
+4959c 2 351 122
+4959e c 202 126
+495aa 18 57 128
+495c2 1c 67 125
+495de 6 202 126
+495e4 6 210 126
+495ea 2 333 127
+495ec 2 212 126
+495ee 2 333 127
+495f0 4 212 126
+495f4 18 333 127
+4960c c 156 137
+49618 34 80 71
+FUNC 4964c 62 0 google_breakpad::ErrnoString
+4964c 2 104 71
+4964e 2 104 71
+49650 6 111 71
+49656 6 111 71
+4965c 6 229 145
+49662 6 400 136
+49668 4 244 135
+4966c 2 168 145
+4966e 8 168 145
+49676 6 246 135
+4967c 4 803 136
+49680 2 168 145
+49682 2 806 136
+49684 2 168 145
+49686 8 806 136
+4968e 2 168 145
+49690 6 168 145
+49696 4 400 136
+4969a 2 250 135
+4969c 2 400 136
+4969e 8 250 135
+496a6 6 112 71
+496ac 2 113 71
+FUNC 496ae c 0 google_breakpad::MinidumpThreadList::thread_count
+496ae 4 322 65
+496b2 4 322 65
+496b6 2 322 65
+496b8 2 323 65
+FUNC 496ba 14 0 google_breakpad::MinidumpModule::base_address
+496ba 4 383 65
+496be 6 383 65
+496c4 8 383 65
+496cc 2 384 65
+FUNC 496d6 e 0 google_breakpad::MinidumpModule::size
+496d6 4 385 65
+496da 4 385 65
+496de 2 385 65
+496e0 4 385 65
+FUNC 496ec c 0 google_breakpad::MinidumpModuleList::module_count
+496ec 4 491 65
+496f0 4 491 65
+496f4 2 491 65
+496f6 2 492 65
+FUNC 49700 e 0 google_breakpad::Minidump::header
+49700 6 882 65
+49706 4 882 65
+4970a 2 882 65
+4970c 2 882 65
+FUNC 4970e 6 0 google_breakpad::BasicCodeModule::base_address
+4970e 6 84 66
+FUNC 49714 6 0 google_breakpad::BasicCodeModule::size
+49714 6 85 66
+FUNC 4971a e 0 google_breakpad::Swap
+4971a a 125 73
+49724 4 127 73
+FUNC 49728 8 0 google_breakpad::Swap
+49728 4 131 73
+4972c 4 135 73
+FUNC 49730 18 0 google_breakpad::Swap
+49730 2 139 73
+49732 2 139 73
+49734 4 141 73
+49738 6 142 73
+4973e 2 143 73
+49740 2 144 73
+49742 6 145 73
+FUNC 49748 12 0 google_breakpad::Swap
+49748 2 182 73
+4974a 2 182 73
+4974c 4 183 73
+49750 2 184 73
+49752 4 185 73
+49756 4 184 73
+FUNC 4975c 28 0 google_breakpad::MinidumpThread::~MinidumpThread
+4975c 2 1380 73
+4975e a 1380 73
+49768 4 1381 73
+4976c 6 1381 73
+49772 4 1382 73
+49776 6 1382 73
+4977c 8 1383 73
+FUNC 49784 20 0 google_breakpad::MinidumpException::~MinidumpException
+49784 2 2883 73
+49786 a 2883 73
+49790 6 2884 73
+49796 6 2884 73
+4979c 8 2885 73
+FUNC 497a4 84 0 std::basic_filebuf<char, std::char_traits<char> >::pbackfail
+497a4 2 157 109
+497a6 a 161 109
+497b0 4 166 109
+497b4 4 166 109
+497b8 a 166 109
+497c2 6 166 109
+497c8 4 175 109
+497cc 4 178 109
+497d0 4 177 109
+497d4 2 178 109
+497d6 8 180 109
+497de 2 181 109
+497e0 2 95 134
+497e2 2 181 109
+497e4 2 93 134
+497e6 4 94 134
+497ea 2 187 109
+497ec 2 188 109
+497ee 2 186 109
+497f0 2 188 109
+497f2 4 189 109
+497f6 2 93 134
+497f8 2 94 134
+497fa 2 190 109
+497fc 2 95 134
+497fe 6 190 109
+49804 4 220 145
+49808 a 162 109
+49812 4 91 134
+49816 8 171 109
+4981e 6 171 109
+49824 2 223 145
+49826 2 199 109
+FUNC 49828 12 0 google_breakpad::MinidumpThread::~MinidumpThread
+49828 2 1380 73
+4982a 2 1380 73
+4982c 4 1383 73
+49830 6 1383 73
+49836 4 1383 73
+FUNC 4983a 12 0 google_breakpad::MinidumpException::~MinidumpException
+4983a 2 2883 73
+4983c 2 2883 73
+4983e 4 2885 73
+49842 6 2885 73
+49848 4 2885 73
+FUNC 4984c 18 0 google_breakpad::MinidumpContext::~MinidumpContext
+4984c 2 420 73
+4984e e 420 73
+4985c 8 421 73
+FUNC 49864 12 0 google_breakpad::MinidumpContext::~MinidumpContext
+49864 2 420 73
+49866 2 420 73
+49868 4 421 73
+4986c 6 421 73
+49872 4 421 73
+FUNC 49876 18 0 google_breakpad::MinidumpModuleList::Copy
+49876 2 2640 73
+49878 2 2640 73
+4987a 8 2641 73
+49882 8 2641 73
+4988a 4 2642 73
+FUNC 49896 4 0 std::basic_filebuf<char, std::char_traits<char> >::underflow
+49896 4 76 109
+FUNC 49896 4 0 std::basic_filebuf<char, std::char_traits<char> >::underflow()
+49896 4 76 207
+FUNC 4989a 22 0 std::basic_filebuf<char, std::char_traits<char> >::sync
+4989a 2 402 109
+4989c 6 403 109
+498a2 2 405 109
+498a4 8 405 109
+498ac c 405 109
+498b8 2 406 109
+498ba 2 407 109
+FUNC 498bc 4a 0 std::basic_filebuf<char, std::char_traits<char> >::showmanyc
+498bc 2 132 109
+498be 6 134 109
+498c4 4 134 109
+498c8 6 135 109
+498ce 6 136 109
+498d4 8 137 109
+498dc 6 138 109
+498e2 4 144 109
+498e6 e 139 109
+498f4 6 140 109
+498fa 4 141 109
+498fe 4 141 109
+49902 4 141 109
+FUNC 49906 54 0 std::basic_filebuf<char, std::char_traits<char> >::_M_unshift
+49906 4 593 109
+4990a 2 593 109
+4990c 4 598 109
+49910 2 199 107
+49912 4 322 110
+49916 2 597 109
+49918 2 598 109
+4991a 2 597 109
+4991c c 199 107
+49928 2 600 109
+4992a 2 199 107
+4992c 2 600 109
+4992e 8 600 109
+49936 2 600 109
+49938 4 603 109
+4993c 4 604 109
+49940 8 322 110
+49948 4 605 109
+4994c 6 596 109
+49952 2 602 109
+49954 6 611 109
+FUNC 4995c 4c 0 std::basic_filebuf<char, std::char_traits<char> >::_M_setup_codecvt
+4995c 2 735 109
+4995e 2 735 109
+49960 c 351 122
+4996c 2 737 109
+4996e 6 216 107
+49974 8 141 105
+4997c 2 216 107
+4997e 2 741 109
+49980 2 740 109
+49982 6 227 107
+49988 8 742 109
+49990 2 741 109
+49992 2 743 109
+49994 4 742 109
+49998 6 218 107
+4999e a 743 109
+FUNC 499a8 50 0 std::basic_filebuf<char, std::char_traits<char> >::imbue
+499a8 2 413 109
+499aa 4 414 109
+499ae 4 413 109
+499b2 2 414 109
+499b4 6 414 109
+499ba c 347 122
+499c6 6 736 109
+499cc 8 417 109
+499d4 2 747 109
+499d6 2 746 109
+499d8 8 748 109
+499e0 4 747 109
+499e4 4 351 122
+499e8 4 417 109
+499ec c 351 122
+FUNC 499f8 38 0 std::priv::_Rb_tree<unsigned int, std::less<unsigned int>, std::pair<unsigned int const, google_breakpad::Minidump::MinidumpStreamInfo>, std::priv::_Select1st<std::pair<unsigned int const, google_breakpad::Minidump::MinidumpStreamInfo> >, std::priv::_MapTraitsT<std::pair<unsigned int const, google_breakpad::Minidump::MinidumpStreamInfo> >, std::allocator<std::pair<unsigned int const, google_breakpad::Minidump::MinidumpStreamInfo> > >::_M_create_node
+499f8 2 306 106
+499fa 2 315 141
+499fc 2 315 141
+499fe 6 306 106
+49a04 4 307 106
+49a08 4 119 108
+49a0c 2 307 106
+49a0e 16 68 129
+49a24 2 321 141
+49a26 2 324 141
+49a28 2 321 141
+49a2a 2 322 141
+49a2c 4 324 141
+FUNC 49a30 38 0 std::priv::_Rb_tree<long long unsigned int, std::less<long long unsigned int>, std::pair<long long unsigned int const, google_breakpad::RangeMap<long long unsigned int, unsigned int>::Range>, std::priv::_Select1st<std::pair<long long unsigned int const, google_breakpad::RangeMap<long long unsigned int, unsigned int>::Range> >, std::priv::_MapTraitsT<std::pair<long long unsigned int const, google_breakpad::RangeMap<long long unsigned int, unsigned int>::Range> >, std::allocator<std::pair<long long unsigned int const, google_breakpad::RangeMap<long long unsigned int, unsigned int>::Range> > >::_M_create_node
+49a30 2 306 106
+49a32 2 315 141
+49a34 2 315 141
+49a36 6 306 106
+49a3c 4 307 106
+49a40 4 119 108
+49a44 2 307 106
+49a46 2 119 108
+49a48 14 68 129
+49a5c 2 321 141
+49a5e 2 324 141
+49a60 2 321 141
+49a62 2 322 141
+49a64 4 324 141
+FUNC 49a68 28 0 std::priv::_Rb_tree<unsigned int, std::less<unsigned int>, std::pair<unsigned int const, google_breakpad::MinidumpThread*>, std::priv::_Select1st<std::pair<unsigned int const, google_breakpad::MinidumpThread*> >, std::priv::_MapTraitsT<std::pair<unsigned int const, google_breakpad::MinidumpThread*> >, std::allocator<std::pair<unsigned int const, google_breakpad::MinidumpThread*> > >::_M_create_node
+49a68 2 306 106
+49a6a 2 315 141
+49a6c 2 315 141
+49a6e 6 306 106
+49a74 4 307 106
+49a78 4 119 108
+49a7c a 68 129
+49a86 4 321 141
+49a8a 2 322 141
+49a8c 4 324 141
+FUNC 49a90 12 0 google_breakpad::Minidump::MinidumpStreamInfo::~MinidumpStreamInfo
+49a90 2 969 65
+49a92 6 969 65
+49a98 2 969 65
+49a9a 4 969 65
+49a9e 4 969 65
+FUNC 49aa4 6c 0 google_breakpad::BasicCodeModule::BasicCodeModule
+49aa4 2 57 66
+49aa6 2 64 66
+49aa8 2 57 66
+49aaa 6 64 66
+49ab0 6 58 66
+49ab6 2 57 66
+49ab8 2 58 66
+49aba 4 64 66
+49abe 8 59 66
+49ac6 4 64 66
+49aca 2 60 66
+49acc a 64 66
+49ad6 2 61 66
+49ad8 a 64 66
+49ae2 2 62 66
+49ae4 a 64 66
+49aee 2 63 66
+49af0 a 64 66
+49afa 2 64 66
+49afc a 64 66
+49b06 a 64 66
+FUNC 49b10 18 0 google_breakpad::MinidumpModule::Copy
+49b10 2 2071 73
+49b12 2 2071 73
+49b14 8 2072 73
+49b1c 8 2072 73
+49b24 4 2073 73
+FUNC 49b30 16 0 google_breakpad::BasicCodeModule::Copy
+49b30 2 91 66
+49b32 a 91 66
+49b3c 6 91 66
+49b42 4 91 66
+FUNC 49b48 20 0 google_breakpad::MinidumpStream::MinidumpStream
+49b48 2 405 73
+49b4a 4 405 73
+49b4e 6 396 73
+49b54 2 406 73
+49b56 2 396 73
+49b58 6 406 73
+49b5e a 407 73
+FUNC 49b68 2c 0 google_breakpad::MinidumpMemoryRegion::MinidumpMemoryRegion
+49b68 2 1192 73
+49b6a 2 1192 73
+49b6c 2 396 73
+49b6e 2 1192 73
+49b70 4 396 73
+49b74 2 1195 73
+49b76 2 396 73
+49b78 12 1195 73
+49b8a a 1196 73
+FUNC 49b94 22 0 google_breakpad::MinidumpMemoryRegion::SetDescriptor
+49b94 2 1204 73
+49b96 2 1205 73
+49b98 2 1206 73
+49b9a 4 1208 73
+49b9e 2 1207 73
+49ba0 4 1208 73
+49ba4 2 1207 73
+49ba6 c 1206 73
+49bb2 4 1209 73
+FUNC 49bb8 30 0 google_breakpad::MinidumpThread::MinidumpThread
+49bb8 2 1372 73
+49bba 2 1372 73
+49bbc 2 396 73
+49bbe 2 1372 73
+49bc0 4 396 73
+49bc4 4 1376 73
+49bc8 2 396 73
+49bca 16 1376 73
+49be0 8 1377 73
+FUNC 49be8 48 0 google_breakpad::MinidumpThreadList::MinidumpThreadList
+49be8 4 1540 73
+49bec 2 1544 73
+49bee 2 1540 73
+49bf0 6 1544 73
+49bf6 2 250 141
+49bf8 8 1544 73
+49c00 e 250 141
+49c0e 8 481 106
+49c16 2 263 141
+49c18 2 1545 73
+49c1a 2 263 141
+49c1c 2 265 141
+49c1e 2 266 141
+49c20 2 267 141
+49c22 2 391 141
+49c24 4 1544 73
+49c28 8 1545 73
+FUNC 49c30 4c 0 google_breakpad::MinidumpModule::MinidumpModule
+49c30 2 1704 73
+49c32 4 1704 73
+49c36 8 396 73
+49c3e 34 1712 73
+49c72 a 1713 73
+FUNC 49c7c 2c 0 google_breakpad::MinidumpException::MinidumpException
+49c7c 2 2876 73
+49c7e 2 2876 73
+49c80 1e 2879 73
+49c9e a 2880 73
+FUNC 49ca8 2c 0 google_breakpad::MinidumpSystemInfo::MinidumpSystemInfo
+49ca8 2 3092 73
+49caa 2 3092 73
+49cac 1e 3096 73
+49cca a 3097 73
+FUNC 49cd4 34 0 std::priv::_Impl_vector<google_breakpad::MinidumpThread, std::allocator<google_breakpad::MinidumpThread> >::~_Impl_vector
+49cd4 2 304 144
+49cd6 2 304 144
+49cd8 6 65 118
+49cde 2 74 118
+49ce0 4 191 108
+49ce4 4 77 118
+49ce8 a 57 108
+49cf2 4 81 118
+49cf6 4 87 144
+49cfa 2 88 144
+49cfc 6 323 106
+49d02 6 304 144
+FUNC 49d08 34 0 std::priv::_Impl_vector<google_breakpad::MinidumpModule, std::allocator<google_breakpad::MinidumpModule> >::~_Impl_vector
+49d08 2 304 144
+49d0a 2 304 144
+49d0c 6 65 118
+49d12 2 74 118
+49d14 4 191 108
+49d18 4 77 118
+49d1c a 57 108
+49d26 4 81 118
+49d2a 4 87 144
+49d2e 2 88 144
+49d30 6 323 106
+49d36 6 304 144
+FUNC 49d3c 34 0 std::priv::_Impl_vector<google_breakpad::MinidumpMemoryRegion, std::allocator<google_breakpad::MinidumpMemoryRegion> >::~_Impl_vector
+49d3c 2 304 144
+49d3e 2 304 144
+49d40 6 65 118
+49d46 2 74 118
+49d48 4 191 108
+49d4c 4 77 118
+49d50 a 57 108
+49d5a 4 81 118
+49d5e 4 87 144
+49d62 2 88 144
+49d64 6 323 106
+49d6a 6 304 144
+FUNC 49d70 18 0 google_breakpad::scoped_ptr<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >::~scoped_ptr
+49d70 2 96 57
+49d72 2 98 57
+49d74 2 96 57
+49d76 2 98 57
+49d78 6 156 137
+49d7e 6 98 57
+49d84 4 99 57
+FUNC 49d88 3c 0 google_breakpad::BasicCodeModule::~BasicCodeModule
+49d88 2 80 66
+49d8a c 80 66
+49d96 24 156 137
+49dba a 80 66
+FUNC 49dc4 12 0 google_breakpad::BasicCodeModule::~BasicCodeModule
+49dc4 2 80 66
+49dc6 6 80 66
+49dcc 6 80 66
+49dd2 4 80 66
+FUNC 49dd8 34 0 google_breakpad::MinidumpSystemInfo::~MinidumpSystemInfo
+49dd8 2 3100 73
+49dda 2 3100 73
+49ddc 2 3101 73
+49dde 8 3100 73
+49de6 2 3101 73
+49de8 6 156 137
+49dee 6 3101 73
+49df4 4 3102 73
+49df8 6 156 137
+49dfe 6 3102 73
+49e04 8 3103 73
+FUNC 49e0c 12 0 google_breakpad::MinidumpSystemInfo::~MinidumpSystemInfo
+49e0c 2 3100 73
+49e0e 2 3100 73
+49e10 4 3103 73
+49e14 6 3103 73
+49e1a 4 3103 73
+FUNC 49e20 60 0 std::priv::_Impl_vector<short unsigned int, std::allocator<short unsigned int> >::_Impl_vector
+49e20 2 70 144
+49e22 4 342 106
+49e26 2 233 144
+49e28 4 233 144
+49e2c 4 70 144
+49e30 2 481 106
+49e32 2 342 106
+49e34 8 343 106
+49e3c 6 343 106
+49e42 2 346 106
+49e44 6 347 106
+49e4a 4 348 106
+49e4e 6 352 106
+49e54 2 356 106
+49e56 4 73 144
+49e5a 2 314 142
+49e5c 2 71 144
+49e5e 2 72 144
+49e60 2 73 144
+49e62 4 249 142
+49e66 6 249 142
+49e6c 2 249 142
+49e6e 6 146 108
+49e74 c 244 144
+FUNC 49e80 2c 0 google_breakpad::MinidumpMemoryRegion::~MinidumpMemoryRegion
+49e80 2 1199 73
+49e82 2 1199 73
+49e84 2 1200 73
+49e86 e 1199 73
+49e94 2 1200 73
+49e96 6 304 144
+49e9c 6 1200 73
+49ea2 a 1201 73
+FUNC 49eb4 12 0 google_breakpad::MinidumpMemoryRegion::~MinidumpMemoryRegion
+49eb4 2 1199 73
+49eb6 2 1199 73
+49eb8 4 1201 73
+49ebc 6 1201 73
+49ec2 4 1201 73
+FUNC 49ece 18 0 google_breakpad::scoped_ptr<std::vector<unsigned char, std::allocator<unsigned char> > >::~scoped_ptr
+49ece 2 96 57
+49ed0 2 98 57
+49ed2 2 96 57
+49ed4 2 98 57
+49ed6 6 304 144
+49edc 6 98 57
+49ee2 4 99 57
+FUNC 49ee8 50 0 google_breakpad::MinidumpModule::~MinidumpModule
+49ee8 2 1716 73
+49eea 2 1716 73
+49eec 4 1717 73
+49ef0 e 1716 73
+49efe 2 1717 73
+49f00 6 156 137
+49f06 6 1717 73
+49f0c 6 1718 73
+49f12 6 304 144
+49f18 6 1718 73
+49f1e 6 1719 73
+49f24 6 304 144
+49f2a 6 1719 73
+49f30 8 1720 73
+FUNC 49f40 12 0 google_breakpad::MinidumpModule::~MinidumpModule
+49f40 2 1716 73
+49f42 2 1716 73
+49f44 4 1720 73
+49f48 6 1720 73
+49f4e 4 1720 73
+FUNC 49f5a 4a 0 std::priv::_Impl_vector<unsigned char, std::allocator<unsigned char> >::_Impl_vector
+49f5a 2 70 144
+49f5c 2 233 144
+49f5e 4 233 144
+49f62 4 70 144
+49f66 2 481 106
+49f68 4 346 106
+49f6c 6 347 106
+49f72 4 348 106
+49f76 4 352 106
+49f7a 2 346 106
+49f7c 2 356 106
+49f7e 2 73 144
+49f80 2 314 142
+49f82 2 71 144
+49f84 2 72 144
+49f86 a 73 144
+49f90 6 249 142
+49f96 6 146 108
+49f9c 8 244 144
+FUNC 49fa4 34 0 google_breakpad::MinidumpModuleList::MinidumpModuleList
+49fa4 2 2431 73
+49fa6 2 2431 73
+49fa8 6 2435 73
+49fae 2 2435 73
+49fb0 c 2435 73
+49fbc 6 2435 73
+49fc2 4 55 76
+49fc6 8 2435 73
+49fce a 2436 73
+FUNC 49fd8 30 0 google_breakpad::MinidumpMemoryList::MinidumpMemoryList
+49fd8 2 2673 73
+49fda 2 2673 73
+49fdc 6 2678 73
+49fe2 2 2678 73
+49fe4 6 2678 73
+49fea 6 2678 73
+49ff0 4 55 76
+49ff4 a 2678 73
+49ffe a 2679 73
+FUNC 4a008 32 0 std::priv::_Rb_tree<unsigned int, std::less<unsigned int>, std::pair<unsigned int const, google_breakpad::Minidump::MinidumpStreamInfo>, std::priv::_Select1st<std::pair<unsigned int const, google_breakpad::Minidump::MinidumpStreamInfo> >, std::priv::_MapTraitsT<std::pair<unsigned int const, google_breakpad::Minidump::MinidumpStreamInfo> >, std::allocator<std::pair<unsigned int const, google_breakpad::Minidump::MinidumpStreamInfo> > >::find<unsigned int>
+4a008 2 543 141
+4a00a 6 549 141
+4a010 2 552 141
+4a012 6 553 141
+4a018 6 556 141
+4a01e 2 554 141
+4a020 6 556 141
+4a026 4 558 141
+4a02a c 559 141
+4a036 2 142 141
+4a038 2 543 141
+FUNC 4a03a 26 0 std::priv::_Rb_global<bool>::_M_increment
+4a03a 4 297 140
+4a03e a 94 141
+4a048 2 301 140
+4a04a 6 302 140
+4a050 6 304 140
+4a056 8 309 140
+4a05e 2 313 140
+FUNC 4a060 e6 0 std::priv::__read_unbuffered<char, std::char_traits<char>, std::priv::_Constant_unary_fun<bool, int> >
+4a060 10 579 116
+4a070 e 579 116
+4a07e 4 603 116
+4a082 4 579 116
+4a086 2 603 116
+4a088 a 592 116
+4a092 8 593 116
+4a09a 8 229 134
+4a0a2 4 228 134
+4a0a6 4 223 145
+4a0aa 2 228 134
+4a0ac 6 229 134
+4a0b2 4 599 116
+4a0b6 6 600 116
+4a0bc 8 600 116
+4a0c4 6 603 116
+4a0ca 6 604 116
+4a0d0 4 605 116
+4a0d4 a 244 134
+4a0de 8 244 134
+4a0e6 2 243 134
+4a0e8 2 244 134
+4a0ea a 622 116
+4a0f4 2 243 134
+4a0f6 6 244 134
+4a0fc 6 606 116
+4a102 4 612 116
+4a106 4 591 116
+4a10a a 622 116
+4a114 6 623 116
+4a11a 2 624 116
+4a11c 14 625 116
+4a130 4 594 116
+4a134 2 601 116
+4a136 8 622 116
+4a13e 8 627 116
+FUNC 4a146 e 0 google_breakpad::BasicCodeModule::code_file
+4a146 2 86 66
+4a148 c 86 66
+FUNC 4a154 e 0 google_breakpad::BasicCodeModule::code_identifier
+4a154 2 87 66
+4a156 c 87 66
+FUNC 4a162 e 0 google_breakpad::BasicCodeModule::debug_file
+4a162 2 88 66
+4a164 c 88 66
+FUNC 4a170 e 0 google_breakpad::BasicCodeModule::debug_identifier
+4a170 2 89 66
+4a172 c 89 66
+FUNC 4a17e e 0 google_breakpad::BasicCodeModule::version
+4a17e 2 90 66
+4a180 c 90 66
+FUNC 4a18c e 0 google_breakpad::Minidump::path
+4a18c 2 869 65
+4a18e 2 869 65
+4a190 6 870 65
+4a196 4 871 65
+FUNC 4a19c 48 0 google_breakpad::Minidump::Minidump
+4a19c 2 3972 73
+4a19e 2 3972 73
+4a1a0 e 3979 73
+4a1ae 2 3972 73
+4a1b0 10 3979 73
+4a1c0 4 3979 73
+4a1c4 2 3979 73
+4a1c6 a 3979 73
+4a1d0 a 3979 73
+4a1da a 3980 73
+FUNC 4a1e4 50 0 google_breakpad::MinidumpModuleList::GetMainModule
+4a1e4 2 2588 73
+4a1e6 2 2589 73
+4a1e8 2 2588 73
+4a1ea 2 2589 73
+4a1ec 1a 2590 73
+4a206 a 333 127
+4a210 6 2590 73
+4a216 4 2590 73
+4a21a 8 2596 73
+4a222 12 2597 73
+FUNC 4a248 48 0 google_breakpad::MinidumpThread::GetMemory
+4a248 2 1438 73
+4a24a 2 1439 73
+4a24c 2 1438 73
+4a24e 2 1439 73
+4a250 1a 1440 73
+4a26a a 333 127
+4a274 6 1440 73
+4a27a 4 1440 73
+4a27e 2 1444 73
+4a280 10 1445 73
+FUNC 4a290 50 0 google_breakpad::MinidumpMemoryRegion::GetBase
+4a290 2 1252 73
+4a292 4 1253 73
+4a296 1a 1254 73
+4a2b0 a 333 127
+4a2ba 6 1254 73
+4a2c0 a 1254 73
+4a2ca 6 1258 73
+4a2d0 10 1259 73
+FUNC 4a2e8 4c 0 google_breakpad::MinidumpMemoryRegion::GetSize
+4a2e8 2 1262 73
+4a2ea 2 1263 73
+4a2ec 2 1262 73
+4a2ee 2 1263 73
+4a2f0 1a 1264 73
+4a30a a 333 127
+4a314 6 1264 73
+4a31a 4 1264 73
+4a31e 4 1268 73
+4a322 12 1269 73
+FUNC 4a33c 4c 0 google_breakpad::MinidumpThread::GetStartOfStackMemoryRange
+4a33c 2 1429 73
+4a33e 4 1430 73
+4a342 1a 1431 73
+4a35c a 333 127
+4a366 6 1431 73
+4a36c 6 1431 73
+4a372 4 1435 73
+4a376 12 1436 73
+FUNC 4a388 8c 0 google_breakpad::MinidumpThread::GetThreadID
+4a388 6 1474 73
+4a38e 4 1476 73
+4a392 1a 1476 73
+4a3ac a 333 127
+4a3b6 6 1476 73
+4a3bc 4 1478 73
+4a3c0 4 1480 73
+4a3c4 1a 1481 73
+4a3de a 333 127
+4a3e8 8 1481 73
+4a3f0 4 1485 73
+4a3f4 20 1487 73
+FUNC 4a414 8c 0 google_breakpad::MinidumpException::GetThreadID
+4a414 6 2930 73
+4a41a 4 2932 73
+4a41e 1a 2932 73
+4a438 a 333 127
+4a442 6 2932 73
+4a448 4 2934 73
+4a44c 4 2936 73
+4a450 1a 2937 73
+4a46a a 333 127
+4a474 6 2937 73
+4a47a 2 2938 73
+4a47c 4 2941 73
+4a480 20 2943 73
+FUNC 4a4a0 60 0 google_breakpad::MinidumpModule::code_file
+4a4a0 2 1817 73
+4a4a2 2 1818 73
+4a4a4 2 1817 73
+4a4a6 2 1817 73
+4a4a8 2 1818 73
+4a4aa 1a 1819 73
+4a4c4 a 333 127
+4a4ce 6 1819 73
+4a4d4 e 1820 73
+4a4e2 8 1823 73
+4a4ea 16 1824 73
+FUNC 4a508 b4 0 google_breakpad::RangeMap<long long unsigned int, unsigned int>::RetrieveRange
+4a508 4 118 75
+4a50c a 118 75
+4a516 4 121 75
+4a51a 18 121 75
+4a532 a 333 127
+4a53c 6 121 75
+4a542 4 568 141
+4a546 2 571 141
+4a548 e 572 141
+4a556 6 575 141
+4a55c 2 573 141
+4a55e 6 575 141
+4a564 4 125 75
+4a568 12 133 75
+4a57a 4 136 75
+4a57e 2 137 75
+4a580 4 107 76
+4a584 4 138 75
+4a588 a 139 75
+4a592 14 140 75
+4a5a6 2 142 75
+4a5a8 14 143 75
+FUNC 4a5bc 19c 0 google_breakpad::MinidumpContext::CheckAgainstSystemInfo
+4a5bc c 1106 73
+4a5c8 2 1109 73
+4a5ca 4 1106 73
+4a5ce 2 1106 73
+4a5d0 2 1109 73
+4a5d2 2 1106 73
+4a5d4 6 1109 73
+4a5da 4 1110 73
+4a5de 1a 1112 73
+4a5f8 a 333 127
+4a602 6 1112 73
+4a608 4 1113 73
+4a60c 4 675 65
+4a610 4 1130 73
+4a614 2 1125 73
+4a616 26 1130 73
+4a63c 6 1155 73
+4a642 c 1130 73
+4a64e 6 1165 73
+4a654 2 1132 73
+4a656 a 1133 73
+4a660 4 1140 73
+4a664 6 1145 73
+4a66a 4 1150 73
+4a66e 4 1160 73
+4a672 4 1165 73
+4a676 4 1170 73
+4a67a 10 1181 73
+4a68a 1c 1120 73
+4a6a6 a 333 127
+4a6b0 6 1120 73
+4a6b6 2 1121 73
+4a6b8 1c 1175 73
+4a6d4 4 110 72
+4a6d8 4 333 127
+4a6dc 2 1176 73
+4a6de 6 333 127
+4a6e4 8 1176 73
+4a6ec a 1176 73
+4a6f6 2 333 127
+4a6f8 2 1178 73
+4a6fa 6 333 127
+4a700 8 1178 73
+4a708 8 1178 73
+4a710 c 156 137
+4a71c 6 1175 73
+4a722 4 1175 73
+4a726 32 1181 73
+FUNC 4a758 d8 0 google_breakpad::MinidumpModuleList::GetModuleForAddress
+4a758 6 2571 73
+4a75e 6 2571 73
+4a764 2 2572 73
+4a766 c 2571 73
+4a772 2 2572 73
+4a774 1a 2573 73
+4a78e c 333 127
+4a79a 12 2578 73
+4a7ac 1a 2579 73
+4a7c6 4 110 72
+4a7ca 2 333 127
+4a7cc 2 2580 73
+4a7ce 8 333 127
+4a7d6 a 2580 73
+4a7e0 8 2580 73
+4a7e8 6 156 137
+4a7ee 6 2579 73
+4a7f4 4 2581 73
+4a7f8 a 2584 73
+4a802 2e 2585 73
+FUNC 4a844 b0 0 google_breakpad::MinidumpThreadList::GetThreadAtIndex
+4a844 2 1652 73
+4a846 2 1653 73
+4a848 2 1652 73
+4a84a 4 1652 73
+4a84e 2 1653 73
+4a850 1a 1654 73
+4a86a a 333 127
+4a874 4 1654 73
+4a878 6 1658 73
+4a87e 1a 1659 73
+4a898 2 110 72
+4a89a a 333 127
+4a8a4 a 254 126
+4a8ae 8 333 127
+4a8b6 8 254 126
+4a8be 6 1659 73
+4a8c4 6 1659 73
+4a8ca 8 202 144
+4a8d2 22 1665 73
+FUNC 4a8f4 b0 0 google_breakpad::MinidumpModuleList::GetModuleAtIndex
+4a8f4 2 2624 73
+4a8f6 2 2625 73
+4a8f8 2 2624 73
+4a8fa 4 2624 73
+4a8fe 2 2625 73
+4a900 1a 2626 73
+4a91a a 333 127
+4a924 4 2626 73
+4a928 6 2630 73
+4a92e 1a 2631 73
+4a948 2 110 72
+4a94a a 333 127
+4a954 a 254 126
+4a95e 8 333 127
+4a966 8 254 126
+4a96e 6 2631 73
+4a974 6 2631 73
+4a97a 8 202 144
+4a982 22 2637 73
+FUNC 4a9b8 b0 0 google_breakpad::MinidumpMemoryList::GetMemoryRegionAtIndex
+4a9b8 2 2805 73
+4a9ba 2 2806 73
+4a9bc 2 2805 73
+4a9be 4 2805 73
+4a9c2 2 2806 73
+4a9c4 1a 2807 73
+4a9de a 333 127
+4a9e8 4 2807 73
+4a9ec 6 2811 73
+4a9f2 1a 2812 73
+4aa0c 2 110 72
+4aa0e a 333 127
+4aa18 a 254 126
+4aa22 8 333 127
+4aa2a 8 254 126
+4aa32 6 2812 73
+4aa38 6 2812 73
+4aa3e 8 202 144
+4aa46 22 2818 73
+FUNC 4aa68 d8 0 google_breakpad::MinidumpMemoryList::GetMemoryRegionForAddress
+4aa68 6 2822 73
+4aa6e 6 2822 73
+4aa74 2 2823 73
+4aa76 c 2822 73
+4aa82 2 2823 73
+4aa84 1a 2824 73
+4aa9e c 333 127
+4aaaa 12 2829 73
+4aabc 1a 2830 73
+4aad6 4 110 72
+4aada 2 333 127
+4aadc 2 2831 73
+4aade 8 333 127
+4aae6 a 2831 73
+4aaf0 8 2831 73
+4aaf8 6 156 137
+4aafe 6 2830 73
+4ab04 4 2832 73
+4ab08 8 2835 73
+4ab10 30 2836 73
+FUNC 4ab40 16c 0 google_breakpad::MinidumpModuleList::GetModuleAtSequence
+4ab40 6 2601 73
+4ab46 2 2602 73
+4ab48 4 2601 73
+4ab4c 4 2601 73
+4ab50 2 2602 73
+4ab52 1c 2603 73
+4ab6e a 333 127
+4ab78 4 2603 73
+4ab7c 6 2607 73
+4ab82 1c 2608 73
+4ab9e 2 110 72
+4aba0 a 333 127
+4abaa a 254 126
+4abb4 8 333 127
+4abbc 8 254 126
+4abc4 6 2608 73
+4abca 4 2610 73
+4abce 4 2614 73
+4abd2 8 184 75
+4abda 1a 185 75
+4abf4 2 110 72
+4abf6 a 333 127
+4ac00 a 240 126
+4ac0a 8 333 127
+4ac12 a 240 126
+4ac1c 8 185 75
+4ac24 4 142 141
+4ac28 4 192 75
+4ac2c 4 192 75
+4ac30 4 177 141
+4ac34 8 192 75
+4ac3c 2 2614 73
+4ac3e 1c 2615 73
+4ac5a 2 110 72
+4ac5c a 333 127
+4ac66 6 254 126
+4ac6c 8 2619 73
+4ac74 38 2620 73
+FUNC 4acc0 29c 0 google_breakpad::UTF16ToUTF8
+4acc0 a 234 73
+4acca e 234 73
+4acd8 2 235 73
+4acda 2 234 73
+4acdc 6 235 73
+4ace2 8 235 73
+4acea 8 192 144
+4acf2 2 159 135
+4acf4 4 92 57
+4acf8 2 159 135
+4acfa a 600 135
+4ad04 a 400 136
+4ad0e 2 72 137
+4ad10 4 162 135
+4ad14 4 72 137
+4ad18 4 72 137
+4ad1c 4 163 135
+4ad20 6 166 135
+4ad26 a 248 73
+4ad30 a 242 73
+4ad3a 6 246 73
+4ad40 4 247 73
+4ad44 6 248 73
+4ad4a e 252 73
+4ad58 1a 253 73
+4ad72 2 110 72
+4ad74 6 333 127
+4ad7a 2 254 73
+4ad7c 4 333 127
+4ad80 a 254 73
+4ad8a 8 254 73
+4ad92 6 333 127
+4ad98 c 256 73
+4ada4 4 259 73
+4ada8 4 258 73
+4adac 2 259 73
+4adae 2 258 73
+4adb0 2 259 73
+4adb2 4 258 73
+4adb6 2 259 73
+4adb8 1c 260 73
+4add4 2 110 72
+4add6 6 333 127
+4addc 2 261 73
+4adde 4 333 127
+4ade2 a 261 73
+4adec 8 261 73
+4adf4 a 333 127
+4adfe 2 265 73
+4ae00 8 266 73
+4ae08 4 265 73
+4ae0c 2 266 73
+4ae0e 1c 267 73
+4ae2a 2 110 72
+4ae2c 6 333 127
+4ae32 2 268 73
+4ae34 4 333 127
+4ae38 8 268 73
+4ae40 a 268 73
+4ae4a 2 333 127
+4ae4c 2 269 73
+4ae4e 6 333 127
+4ae54 a 269 73
+4ae5e 8 269 73
+4ae66 c 156 137
+4ae72 6 267 73
+4ae78 4 255 73
+4ae7c a 272 73
+4ae86 2 281 73
+4ae88 2 276 73
+4ae8a 2 281 73
+4ae8c 6 453 136
+4ae92 6 283 73
+4ae98 4 284 73
+4ae9c a 453 136
+4aea6 4 285 73
+4aeaa 8 453 136
+4aeb2 12 286 73
+4aec4 4 287 73
+4aec8 6 453 136
+4aece 4 291 73
+4aed2 a 453 136
+4aedc 4 292 73
+4aee0 a 453 136
+4aeea 4 293 73
+4aeee 14 453 136
+4af02 4 242 73
+4af06 2 144 57
+4af08 2 143 57
+4af0a 2 144 57
+4af0c 6 302 73
+4af12 4a 303 73
+FUNC 4af5c 1dc 0 google_breakpad::MinidumpModule::code_identifier
+4af5c e 1827 73
+4af6a 6 1827 73
+4af70 2 1828 73
+4af72 6 1827 73
+4af78 2 1828 73
+4af7a 1a 1829 73
+4af94 a 333 127
+4af9e 6 1829 73
+4afa4 8 1830 73
+4afac 4 1833 73
+4afb0 6 1834 73
+4afb6 8 1836 73
+4afbe 4 1837 73
+4afc2 1a 1839 73
+4afdc a 333 127
+4afe6 6 1839 73
+4afec 8 1840 73
+4aff4 6 675 65
+4affa a 1849 73
+4b004 18 1851 73
+4b01c 18 1858 73
+4b034 6 1859 73
+4b03a a 1851 73
+4b044 a 1873 73
+4b04e 2 1874 73
+4b050 1a 1881 73
+4b06a 4 110 72
+4b06e 2 333 127
+4b070 2 1881 73
+4b072 8 333 127
+4b07a a 1881 73
+4b084 8 1881 73
+4b08c 6 156 137
+4b092 6 1881 73
+4b098 8 1886 73
+4b0a0 8 156 137
+4b0a8 1a 1845 73
+4b0c2 a 333 127
+4b0cc 6 1845 73
+4b0d2 c 1846 73
+4b0de 5a 1887 73
+FUNC 4b140 170 0 google_breakpad::MinidumpModule::debug_identifier
+4b140 e 1970 73
+4b14e 2 1970 73
+4b150 2 1971 73
+4b152 8 1970 73
+4b15a 2 1971 73
+4b15c 18 1972 73
+4b174 a 333 127
+4b17e 6 1972 73
+4b184 8 1973 73
+4b18c 4 1976 73
+4b190 c 1977 73
+4b19c c 1979 73
+4b1a8 8 1982 73
+4b1b0 c 1983 73
+4b1bc 3e 2005 73
+4b1fa 8 2007 73
+4b202 14 2017 73
+4b216 8 2018 73
+4b21e 8 2033 73
+4b226 18 2033 73
+4b23e 2 110 72
+4b240 a 333 127
+4b24a a 2033 73
+4b254 6 2033 73
+4b25a 8 2035 73
+4b262 6 156 137
+4b268 48 2036 73
+FUNC 4b2b8 11c 0 google_breakpad::MinidumpModule::version
+4b2b8 e 2039 73
+4b2c6 2 2039 73
+4b2c8 2 2040 73
+4b2ca 8 2039 73
+4b2d2 2 2040 73
+4b2d4 18 2041 73
+4b2ec a 333 127
+4b2f6 6 2041 73
+4b2fc e 2042 73
+4b30a c 2045 73
+4b316 8 2047 73
+4b31e 2 2048 73
+4b320 4 2047 73
+4b324 20 2054 73
+4b344 8 2055 73
+4b34c 8 2065 73
+4b354 18 2065 73
+4b36c 2 110 72
+4b36e a 333 127
+4b378 a 2065 73
+4b382 6 2065 73
+4b388 8 2067 73
+4b390 6 156 137
+4b396 3e 2068 73
+FUNC 4b3dc 1b4 0 google_breakpad::MinidumpModule::debug_file
+4b3dc e 1890 73
+4b3ea 2 1890 73
+4b3ec 2 1891 73
+4b3ee 8 1890 73
+4b3f6 2 1891 73
+4b3f8 18 1892 73
+4b410 a 333 127
+4b41a 6 1892 73
+4b420 8 1893 73
+4b428 4 1896 73
+4b42c c 1897 73
+4b438 a 1899 73
+4b442 6 1901 73
+4b448 a 1902 73
+4b452 8 1909 73
+4b45a 6 1910 73
+4b460 a 1917 73
+4b46a 8 1924 73
+4b472 e 1926 73
+4b480 6 1929 73
+4b486 2 112 137
+4b488 8 225 136
+4b490 2 112 137
+4b492 2 481 106
+4b494 4 225 136
+4b498 a 349 136
+4b4a2 8 156 137
+4b4aa 4 1943 73
+4b4ae 6 1944 73
+4b4b4 4 1949 73
+4b4b8 4 1945 73
+4b4bc 4 1949 73
+4b4c0 c 116 148
+4b4cc 6 1950 73
+4b4d2 c 1951 73
+4b4de 8 1955 73
+4b4e6 2 348 136
+4b4e8 2 1955 73
+4b4ea 2 92 57
+4b4ec 2 348 136
+4b4ee a 349 136
+4b4f8 6 1955 73
+4b4fe 6 304 144
+4b504 8 1964 73
+4b50c 18 1964 73
+4b524 2 110 72
+4b526 a 333 127
+4b530 a 1964 73
+4b53a 6 1964 73
+4b540 8 1966 73
+4b548 6 156 137
+4b54e 42 1967 73
+FUNC 4b598 20 0 std::priv::_Rb_tree<unsigned int, std::less<unsigned int>, std::pair<unsigned int const, google_breakpad::MinidumpThread*>, std::priv::_Select1st<std::pair<unsigned int const, google_breakpad::MinidumpThread*> >, std::priv::_MapTraitsT<std::pair<unsigned int const, google_breakpad::MinidumpThread*> >, std::allocator<std::pair<unsigned int const, google_breakpad::MinidumpThread*> > >::_M_erase
+4b598 6 655 140
+4b59e 2 657 140
+4b5a0 8 658 140
+4b5a8 2 659 140
+4b5aa c 161 106
+4b5b6 2 664 140
+FUNC 4b5b8 34 0 google_breakpad::MinidumpThreadList::~MinidumpThreadList
+4b5b8 2 1548 73
+4b5ba 2 1548 73
+4b5bc 2 1549 73
+4b5be 8 1548 73
+4b5c6 2 1549 73
+4b5c8 6 42 148
+4b5ce 6 1549 73
+4b5d4 4 531 141
+4b5d8 a 532 141
+4b5e2 a 1550 73
+FUNC 4b5ec 12 0 google_breakpad::MinidumpThreadList::~MinidumpThreadList
+4b5ec 2 1548 73
+4b5ee 2 1548 73
+4b5f0 4 1550 73
+4b5f4 6 1550 73
+4b5fa 4 1550 73
+FUNC 4b5fe 20 0 std::priv::_Rb_tree<long long unsigned int, std::less<long long unsigned int>, std::pair<long long unsigned int const, google_breakpad::RangeMap<long long unsigned int, unsigned int>::Range>, std::priv::_Select1st<std::pair<long long unsigned int const, google_breakpad::RangeMap<long long unsigned int, unsigned int>::Range> >, std::priv::_MapTraitsT<std::pair<long long unsigned int const, google_breakpad::RangeMap<long long unsigned int, unsigned int>::Range> >, std::allocator<std::pair<long long unsigned int const, google_breakpad::RangeMap<long long unsigned int, unsigned int>::Range> > >::_M_erase
+4b5fe 6 655 140
+4b604 2 657 140
+4b606 8 658 140
+4b60e 2 659 140
+4b610 c 161 106
+4b61c 2 664 140
+FUNC 4b61e 1a 0 std::priv::_Rb_tree<long long unsigned int, std::less<long long unsigned int>, std::pair<long long unsigned int const, google_breakpad::RangeMap<long long unsigned int, unsigned int>::Range>, std::priv::_Select1st<std::pair<long long unsigned int const, google_breakpad::RangeMap<long long unsigned int, unsigned int>::Range> >, std::priv::_MapTraitsT<std::pair<long long unsigned int const, google_breakpad::RangeMap<long long unsigned int, unsigned int>::Range> >, std::allocator<std::pair<long long unsigned int const, google_breakpad::RangeMap<long long unsigned int, unsigned int>::Range> > >::clear
+4b61e 2 531 141
+4b620 2 530 141
+4b622 2 530 141
+4b624 2 531 141
+4b626 6 532 141
+4b62c 2 534 141
+4b62e 2 533 141
+4b630 2 534 141
+4b632 2 535 141
+4b634 4 536 141
+FUNC 4b638 3c 0 google_breakpad::MinidumpModuleList::~MinidumpModuleList
+4b638 2 2439 73
+4b63a 2 2439 73
+4b63c 2 2440 73
+4b63e e 2439 73
+4b64c 2 2440 73
+4b64e 6 414 141
+4b654 6 2440 73
+4b65a 4 2441 73
+4b65e 6 42 148
+4b664 6 2441 73
+4b66a a 2442 73
+FUNC 4b67c 12 0 google_breakpad::MinidumpModuleList::~MinidumpModuleList
+4b67c 2 2439 73
+4b67e 2 2439 73
+4b680 4 2442 73
+4b684 6 2442 73
+4b68a 4 2442 73
+FUNC 4b698 44 0 google_breakpad::MinidumpMemoryList::~MinidumpMemoryList
+4b698 2 2682 73
+4b69a 2 2682 73
+4b69c 2 2683 73
+4b69e 8 2682 73
+4b6a6 2 2683 73
+4b6a8 6 414 141
+4b6ae 6 2683 73
+4b6b4 4 2684 73
+4b6b8 6 42 148
+4b6be 6 2684 73
+4b6c4 4 2685 73
+4b6c8 6 42 148
+4b6ce 6 2685 73
+4b6d4 8 2686 73
+FUNC 4b6dc 12 0 google_breakpad::MinidumpMemoryList::~MinidumpMemoryList
+4b6dc 2 2682 73
+4b6de 2 2682 73
+4b6e0 4 2686 73
+4b6e4 6 2686 73
+4b6ea 4 2686 73
+FUNC 4b6ee 28 0 std::priv::_Rb_tree<unsigned int, std::less<unsigned int>, std::pair<unsigned int const, google_breakpad::Minidump::MinidumpStreamInfo>, std::priv::_Select1st<std::pair<unsigned int const, google_breakpad::Minidump::MinidumpStreamInfo> >, std::priv::_MapTraitsT<std::pair<unsigned int const, google_breakpad::Minidump::MinidumpStreamInfo> >, std::allocator<std::pair<unsigned int const, google_breakpad::Minidump::MinidumpStreamInfo> > >::_M_erase
+4b6ee 6 655 140
+4b6f4 2 657 140
+4b6f6 8 658 140
+4b6fe 2 659 140
+4b700 8 51 129
+4b708 c 161 106
+4b714 2 664 140
+FUNC 4b718 94 0 google_breakpad::Minidump::~Minidump
+4b718 6 3992 73
+4b71e 6 3992 73
+4b724 2 3993 73
+4b726 2 3992 73
+4b728 2 3993 73
+4b72a 1a 3994 73
+4b744 a 333 127
+4b74e 6 3994 73
+4b754 8 3996 73
+4b75c 4 3997 73
+4b760 6 3997 73
+4b766 4 3999 73
+4b76a 6 42 148
+4b770 6 3999 73
+4b776 4 4000 73
+4b77a 4 531 141
+4b77e 8 532 141
+4b786 6 4000 73
+4b78c 8 156 137
+4b794 18 4001 73
+FUNC 4b7ac 12 0 google_breakpad::Minidump::~Minidump
+4b7ac 2 3992 73
+4b7ae 2 3992 73
+4b7b0 4 4001 73
+4b7b4 6 4001 73
+4b7ba 4 4001 73
+FUNC 4b7be 40 0 std::_M_init_noskip<char, std::char_traits<char> >
+4b7be 2 310 117
+4b7c0 2 310 117
+4b7c2 e 311 117
+4b7d0 2 312 117
+4b7d2 4 313 117
+4b7d6 c 315 117
+4b7e2 4 316 117
+4b7e6 6 319 117
+4b7ec 8 320 117
+4b7f4 2 174 115
+4b7f6 8 321 117
+FUNC 4b800 e4 0 google_breakpad::Minidump::SeekSet
+4b800 a 4445 73
+4b80a 2 4448 73
+4b80c 4 4445 73
+4b810 8 4445 73
+4b818 2 4449 73
+4b81a 4 4448 73
+4b81e 4 207 117
+4b822 8 521 116
+4b82a 4 176 115
+4b82e 6 522 116
+4b834 4 522 116
+4b838 e 4452 73
+4b846 c 4453 73
+4b852 6 4454 73
+4b858 4 4455 73
+4b85c 4 4454 73
+4b860 12 4455 73
+4b872 2 110 72
+4b874 a 333 127
+4b87e a 240 126
+4b888 8 333 127
+4b890 8 4455 73
+4b898 6 4455 73
+4b89e a 156 137
+4b8a8 2 4458 73
+4b8aa c 4459 73
+4b8b6 14 147 134
+4b8ca 1a 4459 73
+FUNC 4b8e4 1e4 0 google_breakpad::Minidump::SeekToStreamType
+4b8e4 8 4526 73
+4b8ec 6 4526 73
+4b8f2 6 4528 73
+4b8f8 1a 4528 73
+4b912 a 333 127
+4b91c 6 4528 73
+4b922 8 4530 73
+4b92a 6 4532 73
+4b930 1a 4533 73
+4b94a a 333 127
+4b954 6 4533 73
+4b95a 2 4534 73
+4b95c a 210 123
+4b966 2 168 141
+4b968 6 4538 73
+4b96e 1a 4540 73
+4b988 2 110 72
+4b98a a 333 127
+4b994 8 254 126
+4b99c 2 333 127
+4b99e 2 4541 73
+4b9a0 6 333 127
+4b9a6 6 4540 73
+4b9ac 2 4541 73
+4b9ae a 4544 73
+4b9b8 8 4545 73
+4b9c0 1c 4546 73
+4b9dc 2 110 72
+4b9de a 333 127
+4b9e8 a 254 126
+4b9f2 8 333 127
+4b9fa a 254 126
+4ba04 8 333 127
+4ba0c 8 254 126
+4ba14 6 4546 73
+4ba1a 4 4549 73
+4ba1e 6 202 144
+4ba24 2 4553 73
+4ba26 6 202 144
+4ba2c c 4553 73
+4ba38 1c 4554 73
+4ba54 2 110 72
+4ba56 a 333 127
+4ba60 8 254 126
+4ba68 6 4554 73
+4ba6e 2 4556 73
+4ba70 8 4559 73
+4ba78 6 4561 73
+4ba7e 4a 4562 73
+FUNC 4bac8 1f4 0 google_breakpad::Minidump::GetStream<google_breakpad::MinidumpException>
+4bac8 4 4566 73
+4bacc 2 4570 73
+4bace 4 4566 73
+4bad2 4 4566 73
+4bad6 2 4570 73
+4bad8 4 4572 73
+4badc 1c 4572 73
+4baf8 4 110 72
+4bafc a 333 127
+4bb06 8 254 126
+4bb0e 8 333 127
+4bb16 6 4572 73
+4bb1c 4 4575 73
+4bb20 6 4577 73
+4bb26 1c 4578 73
+4bb42 2 110 72
+4bb44 a 333 127
+4bb4e 8 254 126
+4bb56 6 4578 73
+4bb5c 4 4579 73
+4bb60 c 210 123
+4bb6c 4 197 141
+4bb70 8 4583 73
+4bb78 1c 4585 73
+4bb94 2 110 72
+4bb96 a 333 127
+4bba0 8 254 126
+4bba8 a 333 127
+4bbb2 a 4592 73
+4bbbc 4 4595 73
+4bbc0 4 4596 73
+4bbc4 e 4600 73
+4bbd2 1c 4601 73
+4bbee 2 110 72
+4bbf0 a 333 127
+4bbfa 8 254 126
+4bc02 6 4601 73
+4bc08 2 4602 73
+4bc0a 8 4605 73
+4bc12 6 4605 73
+4bc18 2 4607 73
+4bc1a 2 92 57
+4bc1c 8 4607 73
+4bc24 4 4607 73
+4bc28 1c 4608 73
+4bc44 2 110 72
+4bc46 a 333 127
+4bc50 8 254 126
+4bc58 6 4608 73
+4bc5e 2 4609 73
+4bc60 2 4612 73
+4bc62 4 4613 73
+4bc66 2 4614 73
+4bc68 4 144 57
+4bc6c 4 98 57
+4bc70 6 98 57
+4bc76 46 4615 73
+FUNC 4bcbc e 0 google_breakpad::Minidump::GetException
+4bcbc 2 4249 73
+4bcbe 6 4251 73
+4bcc4 6 4252 73
+FUNC 4bccc 1f4 0 google_breakpad::Minidump::GetStream<google_breakpad::MinidumpSystemInfo>
+4bccc 4 4566 73
+4bcd0 2 4570 73
+4bcd2 4 4566 73
+4bcd6 4 4566 73
+4bcda 2 4570 73
+4bcdc 4 4572 73
+4bce0 1c 4572 73
+4bcfc 4 110 72
+4bd00 a 333 127
+4bd0a 8 254 126
+4bd12 8 333 127
+4bd1a 6 4572 73
+4bd20 4 4575 73
+4bd24 6 4577 73
+4bd2a 1c 4578 73
+4bd46 2 110 72
+4bd48 a 333 127
+4bd52 8 254 126
+4bd5a 6 4578 73
+4bd60 4 4579 73
+4bd64 c 210 123
+4bd70 4 197 141
+4bd74 8 4583 73
+4bd7c 1c 4585 73
+4bd98 2 110 72
+4bd9a a 333 127
+4bda4 8 254 126
+4bdac a 333 127
+4bdb6 a 4592 73
+4bdc0 4 4595 73
+4bdc4 4 4596 73
+4bdc8 e 4600 73
+4bdd6 1c 4601 73
+4bdf2 2 110 72
+4bdf4 a 333 127
+4bdfe 8 254 126
+4be06 6 4601 73
+4be0c 2 4602 73
+4be0e 8 4605 73
+4be16 6 4605 73
+4be1c 2 4607 73
+4be1e 2 92 57
+4be20 8 4607 73
+4be28 4 4607 73
+4be2c 1c 4608 73
+4be48 2 110 72
+4be4a a 333 127
+4be54 8 254 126
+4be5c 6 4608 73
+4be62 2 4609 73
+4be64 2 4612 73
+4be66 4 4613 73
+4be6a 2 4614 73
+4be6c 4 144 57
+4be70 4 98 57
+4be74 6 98 57
+4be7a 46 4615 73
+FUNC 4bec0 e 0 google_breakpad::Minidump::GetSystemInfo
+4bec0 2 4260 73
+4bec2 6 4262 73
+4bec8 6 4263 73
+FUNC 4bed0 1f4 0 google_breakpad::Minidump::GetStream<google_breakpad::MinidumpThreadList>
+4bed0 4 4566 73
+4bed4 2 4570 73
+4bed6 4 4566 73
+4beda 4 4566 73
+4bede 2 4570 73
+4bee0 4 4572 73
+4bee4 1c 4572 73
+4bf00 4 110 72
+4bf04 a 333 127
+4bf0e 8 254 126
+4bf16 8 333 127
+4bf1e 6 4572 73
+4bf24 4 4575 73
+4bf28 6 4577 73
+4bf2e 1c 4578 73
+4bf4a 2 110 72
+4bf4c a 333 127
+4bf56 8 254 126
+4bf5e 6 4578 73
+4bf64 4 4579 73
+4bf68 c 210 123
+4bf74 4 197 141
+4bf78 8 4583 73
+4bf80 1c 4585 73
+4bf9c 2 110 72
+4bf9e a 333 127
+4bfa8 8 254 126
+4bfb0 a 333 127
+4bfba a 4592 73
+4bfc4 4 4595 73
+4bfc8 4 4596 73
+4bfcc e 4600 73
+4bfda 1c 4601 73
+4bff6 2 110 72
+4bff8 a 333 127
+4c002 8 254 126
+4c00a 6 4601 73
+4c010 2 4602 73
+4c012 8 4605 73
+4c01a 6 4605 73
+4c020 2 4607 73
+4c022 2 92 57
+4c024 8 4607 73
+4c02c 4 4607 73
+4c030 1c 4608 73
+4c04c 2 110 72
+4c04e a 333 127
+4c058 8 254 126
+4c060 6 4608 73
+4c066 2 4609 73
+4c068 2 4612 73
+4c06a 4 4613 73
+4c06e 2 4614 73
+4c070 4 144 57
+4c074 4 98 57
+4c078 6 98 57
+4c07e 46 4615 73
+FUNC 4c0c4 e 0 google_breakpad::Minidump::GetThreadList
+4c0c4 2 4231 73
+4c0c6 6 4233 73
+4c0cc 6 4234 73
+FUNC 4c0d4 1f4 0 google_breakpad::Minidump::GetStream<google_breakpad::MinidumpModuleList>
+4c0d4 4 4566 73
+4c0d8 2 4570 73
+4c0da 4 4566 73
+4c0de 4 4566 73
+4c0e2 2 4570 73
+4c0e4 4 4572 73
+4c0e8 1c 4572 73
+4c104 4 110 72
+4c108 a 333 127
+4c112 8 254 126
+4c11a 8 333 127
+4c122 6 4572 73
+4c128 4 4575 73
+4c12c 6 4577 73
+4c132 1c 4578 73
+4c14e 2 110 72
+4c150 a 333 127
+4c15a 8 254 126
+4c162 6 4578 73
+4c168 4 4579 73
+4c16c c 210 123
+4c178 4 197 141
+4c17c 8 4583 73
+4c184 1c 4585 73
+4c1a0 2 110 72
+4c1a2 a 333 127
+4c1ac 8 254 126
+4c1b4 a 333 127
+4c1be a 4592 73
+4c1c8 4 4595 73
+4c1cc 4 4596 73
+4c1d0 e 4600 73
+4c1de 1c 4601 73
+4c1fa 2 110 72
+4c1fc a 333 127
+4c206 8 254 126
+4c20e 6 4601 73
+4c214 2 4602 73
+4c216 8 4605 73
+4c21e 6 4605 73
+4c224 2 4607 73
+4c226 2 92 57
+4c228 8 4607 73
+4c230 4 4607 73
+4c234 1c 4608 73
+4c250 2 110 72
+4c252 a 333 127
+4c25c 8 254 126
+4c264 6 4608 73
+4c26a 2 4609 73
+4c26c 2 4612 73
+4c26e 4 4613 73
+4c272 2 4614 73
+4c274 4 144 57
+4c278 4 98 57
+4c27c 6 98 57
+4c282 46 4615 73
+FUNC 4c2c8 e 0 google_breakpad::Minidump::GetModuleList
+4c2c8 2 4237 73
+4c2ca 6 4239 73
+4c2d0 6 4240 73
+FUNC 4c2d8 1f4 0 google_breakpad::Minidump::GetStream<google_breakpad::MinidumpMemoryList>
+4c2d8 4 4566 73
+4c2dc 2 4570 73
+4c2de 4 4566 73
+4c2e2 4 4566 73
+4c2e6 2 4570 73
+4c2e8 4 4572 73
+4c2ec 1c 4572 73
+4c308 4 110 72
+4c30c a 333 127
+4c316 8 254 126
+4c31e 8 333 127
+4c326 6 4572 73
+4c32c 4 4575 73
+4c330 6 4577 73
+4c336 1c 4578 73
+4c352 2 110 72
+4c354 a 333 127
+4c35e 8 254 126
+4c366 6 4578 73
+4c36c 4 4579 73
+4c370 c 210 123
+4c37c 4 197 141
+4c380 8 4583 73
+4c388 1c 4585 73
+4c3a4 2 110 72
+4c3a6 a 333 127
+4c3b0 8 254 126
+4c3b8 a 333 127
+4c3c2 a 4592 73
+4c3cc 4 4595 73
+4c3d0 4 4596 73
+4c3d4 e 4600 73
+4c3e2 1c 4601 73
+4c3fe 2 110 72
+4c400 a 333 127
+4c40a 8 254 126
+4c412 6 4601 73
+4c418 2 4602 73
+4c41a 8 4605 73
+4c422 6 4605 73
+4c428 2 4607 73
+4c42a 2 92 57
+4c42c 8 4607 73
+4c434 4 4607 73
+4c438 1c 4608 73
+4c454 2 110 72
+4c456 a 333 127
+4c460 8 254 126
+4c468 6 4608 73
+4c46e 2 4609 73
+4c470 2 4612 73
+4c472 4 4613 73
+4c476 2 4614 73
+4c478 4 144 57
+4c47c 4 98 57
+4c480 6 98 57
+4c486 46 4615 73
+FUNC 4c4cc e 0 google_breakpad::Minidump::GetMemoryList
+4c4cc 2 4243 73
+4c4ce 6 4245 73
+4c4d4 6 4246 73
+FUNC 4c4dc 284 0 google_breakpad::Minidump::Open
+4c4dc c 4004 73
+4c4e8 2 4005 73
+4c4ea 4 4004 73
+4c4ee c 4004 73
+4c4fa 2 4005 73
+4c4fc 1a 4006 73
+4c516 2 110 72
+4c518 a 333 127
+4c522 8 4006 73
+4c52a 6 4006 73
+4c530 c 4010 73
+4c53c a 4013 73
+4c546 a 92 113
+4c550 2 87 117
+4c552 2 88 117
+4c554 6 87 117
+4c55a 2 87 117
+4c55c c 92 113
+4c568 2 87 117
+4c56a 6 87 117
+4c570 6 88 117
+4c576 2 464 110
+4c578 2 34 133
+4c57a 6 464 110
+4c580 c 464 110
+4c58c 2 34 133
+4c58e 2 464 110
+4c590 18 34 133
+4c5a8 c 61 109
+4c5b4 6 61 109
+4c5ba 3a 61 109
+4c5f4 2 63 109
+4c5f6 4 61 109
+4c5fa 4 63 109
+4c5fe e 347 122
+4c60c c 736 109
+4c618 2 746 109
+4c61a 4 747 109
+4c61e 8 748 109
+4c626 6 63 109
+4c62c 8 465 110
+4c634 e 169 110
+4c642 4 4013 73
+4c646 e 4014 73
+4c654 a 4015 73
+4c65e 6 4016 73
+4c664 6 4017 73
+4c66a 2 4016 73
+4c66c 14 4017 73
+4c680 2 110 72
+4c682 a 333 127
+4c68c a 4017 73
+4c696 8 333 127
+4c69e a 240 126
+4c6a8 8 333 127
+4c6b0 8 4018 73
+4c6b8 6 4017 73
+4c6be 6 156 137
+4c6c4 2 4019 73
+4c6c6 e 4024 73
+4c6d4 a 467 110
+4c6de 18 4022 73
+4c6f6 2 110 72
+4c6f8 a 333 127
+4c702 8 4022 73
+4c70a 6 4022 73
+4c710 4 4023 73
+4c714 4c 4024 73
+FUNC 4c760 48 0 google_breakpad::Minidump::Tell
+4c760 2 4461 73
+4c762 6 4462 73
+4c768 4 4462 73
+4c76c 6 207 117
+4c772 a 497 116
+4c77c 2 499 116
+4c77e 2 176 115
+4c780 6 499 116
+4c786 10 147 134
+4c796 8 89 145
+4c79e 2 4470 73
+4c7a0 4 4463 73
+4c7a4 4 4475 73
+FUNC 4c7a8 bc 0 google_breakpad::Minidump::GetContextCPUFlagsFromSystemInfo
+4c7a8 2 4026 73
+4c7aa 4 4028 73
+4c7ae 4 4026 73
+4c7b2 4 4031 73
+4c7b6 2 4032 73
+4c7b8 2 4031 73
+4c7ba 2 4032 73
+4c7bc c 4039 73
+4c7c8 2 4039 73
+4c7ca 6 4039 73
+4c7d0 6 675 65
+4c7d6 14 4042 73
+4c7ea 6 4044 73
+4c7f0 6 4042 73
+4c7f6 4 4059 73
+4c7fa 1c 4042 73
+4c816 6 4056 73
+4c81c 6 4047 73
+4c822 6 4050 73
+4c828 6 4053 73
+4c82e 6 4062 73
+4c834 6 4065 73
+4c83a 6 4068 73
+4c840 2 4074 73
+4c842 2 4075 73
+4c844 6 4077 73
+4c84a 6 4083 73
+4c850 4 4089 73
+4c854 4 4095 73
+4c858 4 4096 73
+4c85c 4 4095 73
+4c860 4 4096 73
+FUNC 4c864 116 0 std::basic_istream<char, std::char_traits<char> >::read
+4c864 6 783 116
+4c86a 6 783 116
+4c870 4 207 117
+4c874 6 785 116
+4c87a 2 787 116
+4c87c 6 787 116
+4c882 2 175 115
+4c884 6 787 116
+4c88a c 802 116
+4c896 8 804 116
+4c89e 2 175 115
+4c8a0 4 804 116
+4c8a4 a 805 116
+4c8ae 8 789 116
+4c8b6 2 642 116
+4c8b8 2 640 116
+4c8ba 6 641 116
+4c8c0 4 645 116
+4c8c4 6 645 116
+4c8ca 4 703 116
+4c8ce e 704 116
+4c8dc 4 640 116
+4c8e0 16 799 116
+4c8f6 4 796 116
+4c8fa 4 652 116
+4c8fe 8 655 116
+4c906 6 172 145
+4c90c 8 172 145
+4c914 2 91 134
+4c916 2 658 116
+4c918 2 91 134
+4c91a 2 671 116
+4c91c 2 657 116
+4c91e 2 91 134
+4c920 2 671 116
+4c922 6 235 134
+4c928 2 234 134
+4c92a 6 235 134
+4c930 14 690 116
+4c944 6 682 116
+4c94a 6 700 116
+4c950 22 714 116
+4c972 8 808 116
+FUNC 4c97c 114 0 google_breakpad::Minidump::ReadBytes
+4c97c 10 4413 73
+4c98c 2 4416 73
+4c98e 2 4413 73
+4c990 4 4413 73
+4c994 4 4416 73
+4c998 8 4419 73
+4c9a0 4 4421 73
+4c9a4 c 4422 73
+4c9b0 6 4423 73
+4c9b6 2 4424 73
+4c9b8 2 4423 73
+4c9ba 18 4424 73
+4c9d2 2 110 72
+4c9d4 a 333 127
+4c9de a 240 126
+4c9e8 8 333 127
+4c9f0 8 4424 73
+4c9f8 6 4424 73
+4c9fe 8 156 137
+4ca06 4 4436 73
+4ca0a 1c 4437 73
+4ca26 2 110 72
+4ca28 a 333 127
+4ca32 a 254 126
+4ca3c 8 333 127
+4ca44 8 254 126
+4ca4c 6 4437 73
+4ca52 4 4438 73
+4ca56 2 4441 73
+4ca58 38 4442 73
+FUNC 4ca90 11a8 0 google_breakpad::MinidumpContext::Read
+4ca90 4 423 73
+4ca94 4 424 73
+4ca98 10 423 73
+4caa8 2 423 73
+4caaa 4 424 73
+4caae 4 423 73
+4cab2 4 443 73
+4cab6 a 448 73
+4cac0 24 449 73
+4cae4 c 333 127
+4caf0 6 449 73
+4caf6 10 451 73
+4cb06 a 453 73
+4cb10 2 452 73
+4cb12 1a 454 73
+4cb2c a 333 127
+4cb36 6 458 73
+4cb3c 6 958 65
+4cb42 2 458 73
+4cb44 8 459 73
+4cb4c 8 461 73
+4cb54 2 462 73
+4cb56 a 463 73
+4cb60 a 464 73
+4cb6a 1e 466 73
+4cb88 a 333 127
+4cb92 8 471 73
+4cb9a 1e 474 73
+4cbb8 a 333 127
+4cbc2 8 480 73
+4cbca 1e 481 73
+4cbe8 c 333 127
+4cbf4 a 481 73
+4cbfe 6 480 73
+4cc04 4 155 73
+4cc08 4 156 73
+4cc0c 4 157 73
+4cc10 8 156 73
+4cc18 4 487 73
+4cc1c 6 492 73
+4cc22 a 958 65
+4cc2c 6 492 73
+4cc32 6 493 73
+4cc38 8 494 73
+4cc40 8 495 73
+4cc48 8 496 73
+4cc50 8 497 73
+4cc58 8 498 73
+4cc60 8 500 73
+4cc68 8 501 73
+4cc70 8 502 73
+4cc78 8 503 73
+4cc80 8 504 73
+4cc88 8 505 73
+4cc90 8 506 73
+4cc98 8 507 73
+4cca0 8 508 73
+4cca8 8 509 73
+4ccb0 8 510 73
+4ccb8 8 511 73
+4ccc0 8 512 73
+4ccc8 8 513 73
+4ccd0 8 514 73
+4ccd8 8 515 73
+4cce0 8 516 73
+4cce8 8 517 73
+4ccf0 8 518 73
+4ccf8 8 519 73
+4cd00 8 520 73
+4cd08 8 521 73
+4cd10 8 522 73
+4cd18 8 523 73
+4cd20 8 524 73
+4cd28 8 525 73
+4cd30 8 526 73
+4cd38 8 527 73
+4cd40 8 528 73
+4cd48 8 529 73
+4cd50 6 164 73
+4cd56 a 165 73
+4cd60 4 535 73
+4cd64 8 539 73
+4cd6c 6 540 73
+4cd72 8 541 73
+4cd7a 8 542 73
+4cd82 8 543 73
+4cd8a 8 544 73
+4cd92 8 547 73
+4cd9a a 549 73
+4cda4 8 550 73
+4cdac e 554 73
+4cdba 20 555 73
+4cdda a 333 127
+4cde4 6 558 73
+4cdea 6 958 65
+4cdf0 2 558 73
+4cdf2 6 559 73
+4cdf8 2 561 73
+4cdfa 4 562 73
+4cdfe 6 561 73
+4ce04 10 562 73
+4ce14 4 564 73
+4ce18 a 565 73
+4ce22 12 566 73
+4ce34 20 568 73
+4ce54 c 333 127
+4ce60 8 573 73
+4ce68 20 576 73
+4ce88 c 333 127
+4ce94 a 583 73
+4ce9e c 589 73
+4ceaa 2 588 73
+4ceac 20 590 73
+4cecc c 333 127
+4ced8 a 596 73
+4cee2 20 597 73
+4cf02 c 333 127
+4cf0e 6 600 73
+4cf14 8 958 65
+4cf1c 4 600 73
+4cf20 6 602 73
+4cf26 10 603 73
+4cf36 8 607 73
+4cf3e 4 604 73
+4cf42 6 609 73
+4cf48 8 610 73
+4cf50 8 611 73
+4cf58 8 612 73
+4cf60 10 613 73
+4cf70 8 617 73
+4cf78 4 614 73
+4cf7c 10 621 73
+4cf8c 6 164 73
+4cf92 a 165 73
+4cf9c 4 622 73
+4cfa0 a 164 73
+4cfaa 6 165 73
+4cfb0 8 630 73
+4cfb8 8 633 73
+4cfc0 14 637 73
+4cfd4 20 639 73
+4cff4 c 333 127
+4d000 a 643 73
+4d00a 8 644 73
+4d012 22 649 73
+4d034 c 333 127
+4d040 6 649 73
+4d046 c 651 73
+4d052 1c 652 73
+4d06e a 333 127
+4d078 6 655 73
+4d07e 6 958 65
+4d084 2 655 73
+4d086 6 656 73
+4d08c 14 658 73
+4d0a0 8 660 73
+4d0a8 2 661 73
+4d0aa a 662 73
+4d0b4 12 663 73
+4d0c6 20 665 73
+4d0e6 c 333 127
+4d0f2 8 670 73
+4d0fa 20 673 73
+4d11a c 333 127
+4d126 4 680 73
+4d12a 4 684 73
+4d12e 4 680 73
+4d132 c 686 73
+4d13e 2 685 73
+4d140 20 687 73
+4d160 c 333 127
+4d16c a 693 73
+4d176 20 694 73
+4d196 c 333 127
+4d1a2 6 698 73
+4d1a8 6 958 65
+4d1ae 8 718 73
+4d1b6 14 722 73
+4d1ca 20 724 73
+4d1ea c 333 127
+4d1f6 8 698 73
+4d1fe 8 703 73
+4d206 4 700 73
+4d20a 6 705 73
+4d210 8 706 73
+4d218 8 707 73
+4d220 a 708 73
+4d22a 10 156 73
+4d23a 2 164 73
+4d23c 8 157 73
+4d244 4 164 73
+4d248 2 708 73
+4d24a 8 165 73
+4d252 a 708 73
+4d25c 8 728 73
+4d264 a 98 57
+4d26e e 731 73
+4d27c 20 732 73
+4d29c a 333 127
+4d2a6 6 735 73
+4d2ac 6 958 65
+4d2b2 2 735 73
+4d2b4 6 736 73
+4d2ba 8 738 73
+4d2c2 2 739 73
+4d2c4 2 744 73
+4d2c6 c 746 73
+4d2d2 8 747 73
+4d2da 4 751 73
+4d2de a 752 73
+4d2e8 a 753 73
+4d2f2 20 755 73
+4d312 10 333 127
+4d322 32 764 73
+4d354 6 766 73
+4d35a 1e 767 73
+4d378 2 110 72
+4d37a c 333 127
+4d386 a 254 126
+4d390 a 333 127
+4d39a 8 254 126
+4d3a2 a 772 73
+4d3ac 2 777 73
+4d3ae 6 772 73
+4d3b4 2 777 73
+4d3b6 4 783 73
+4d3ba 4 777 73
+4d3be 8 783 73
+4d3c6 2 782 73
+4d3c8 1e 784 73
+4d3e6 a 333 127
+4d3f0 a 790 73
+4d3fa 1c 791 73
+4d416 8 333 127
+4d41e 6 795 73
+4d424 8 958 65
+4d42c 4 795 73
+4d430 6 797 73
+4d436 8 798 73
+4d43e 8 799 73
+4d446 8 800 73
+4d44e 8 801 73
+4d456 8 802 73
+4d45e 8 803 73
+4d466 8 804 73
+4d46e 8 805 73
+4d476 8 806 73
+4d47e 8 807 73
+4d486 8 808 73
+4d48e 8 809 73
+4d496 8 812 73
+4d49e 8 813 73
+4d4a6 8 814 73
+4d4ae 8 815 73
+4d4b6 8 816 73
+4d4be 8 817 73
+4d4c6 8 818 73
+4d4ce 8 819 73
+4d4d6 8 820 73
+4d4de 8 821 73
+4d4e6 8 822 73
+4d4ee 8 823 73
+4d4f6 8 824 73
+4d4fe 8 825 73
+4d506 8 826 73
+4d50e 8 827 73
+4d516 8 828 73
+4d51e a 833 73
+4d528 6 839 73
+4d52e 1c 840 73
+4d54a 2 110 72
+4d54c a 333 127
+4d556 a 254 126
+4d560 8 333 127
+4d568 8 254 126
+4d570 a 845 73
+4d57a 2 850 73
+4d57c 6 845 73
+4d582 2 850 73
+4d584 4 856 73
+4d588 4 850 73
+4d58c 8 856 73
+4d594 2 855 73
+4d596 1c 857 73
+4d5b2 8 333 127
+4d5ba a 863 73
+4d5c4 1c 864 73
+4d5e0 8 333 127
+4d5e8 6 876 73
+4d5ee 8 958 65
+4d5f6 4 876 73
+4d5fa 6 878 73
+4d600 10 879 73
+4d610 8 883 73
+4d618 4 880 73
+4d61c 6 885 73
+4d622 8 886 73
+4d62a 8 887 73
+4d632 8 888 73
+4d63a 8 889 73
+4d642 10 890 73
+4d652 8 894 73
+4d65a 4 891 73
+4d65e 10 898 73
+4d66e 6 164 73
+4d674 a 165 73
+4d67e 4 899 73
+4d682 a 164 73
+4d68c 6 165 73
+4d692 8 906 73
+4d69a a 909 73
+4d6a4 6 915 73
+4d6aa 1c 916 73
+4d6c6 2 110 72
+4d6c8 a 333 127
+4d6d2 a 254 126
+4d6dc 8 333 127
+4d6e4 8 254 126
+4d6ec 10 921 73
+4d6fc 4 926 73
+4d700 4 932 73
+4d704 4 926 73
+4d708 6 932 73
+4d70e 6 931 73
+4d714 1c 933 73
+4d730 fc 333 127
+4d82c a 939 73
+4d836 1c 940 73
+4d852 8 333 127
+4d85a 6 944 73
+4d860 6 958 65
+4d866 a 944 73
+4d870 8 949 73
+4d878 4 946 73
+4d87c 6 951 73
+4d882 8 952 73
+4d88a 8 953 73
+4d892 8 954 73
+4d89a 8 955 73
+4d8a2 10 956 73
+4d8b2 8 960 73
+4d8ba 4 957 73
+4d8be 6 962 73
+4d8c4 8 963 73
+4d8cc a 965 73
+4d8d6 6 971 73
+4d8dc 1c 972 73
+4d8f8 2 110 72
+4d8fa a 333 127
+4d904 a 254 126
+4d90e 8 333 127
+4d916 8 254 126
+4d91e 8 977 73
+4d926 2 982 73
+4d928 8 977 73
+4d930 2 982 73
+4d932 4 988 73
+4d936 4 982 73
+4d93a 8 988 73
+4d942 2 987 73
+4d944 1c 989 73
+4d960 8 333 127
+4d968 a 995 73
+4d972 1c 996 73
+4d98e a 333 127
+4d998 6 996 73
+4d99e 4 98 57
+4d9a2 6 1000 73
+4d9a8 6 958 65
+4d9ae a 1020 73
+4d9b8 8 1000 73
+4d9c0 8 1005 73
+4d9c8 4 1002 73
+4d9cc 6 1007 73
+4d9d2 10 1008 73
+4d9e2 8 1012 73
+4d9ea 8 1009 73
+4d9f2 8 1017 73
+4d9fa 6 1014 73
+4da00 6 1026 73
+4da06 1c 1027 73
+4da22 2 110 72
+4da24 a 333 127
+4da2e a 254 126
+4da38 8 333 127
+4da40 c 254 126
+4da4c 10 1034 73
+4da5c 4 1039 73
+4da60 4 1045 73
+4da64 4 1039 73
+4da68 6 1045 73
+4da6e 2 1044 73
+4da70 1c 1046 73
+4da8c 8 333 127
+4da94 a 1052 73
+4da9e 1c 1053 73
+4daba a 333 127
+4dac4 6 1053 73
+4daca 4 98 57
+4dace 6 1057 73
+4dad4 8 958 65
+4dadc c 1057 73
+4dae8 8 1062 73
+4daf0 4 1059 73
+4daf4 6 1064 73
+4dafa 10 1065 73
+4db0a 6 1069 73
+4db10 a 1070 73
+4db1a 4 1066 73
+4db1e 8 1072 73
+4db26 8 1073 73
+4db2e 8 1074 73
+4db36 8 1075 73
+4db3e 10 1076 73
+4db4e 8 1080 73
+4db56 4 1077 73
+4db5a 6 1082 73
+4db60 8 1083 73
+4db68 8 1085 73
+4db70 6 98 57
+4db76 a 1099 73
+4db80 6 98 57
+4db86 1c 1093 73
+4dba2 2 110 72
+4dba4 2 333 127
+4dba6 2 1094 73
+4dba8 8 333 127
+4dbb0 8 1094 73
+4dbb8 8 1094 73
+4dbc0 6 156 137
+4dbc6 6 1093 73
+4dbcc 4 733 73
+4dbd0 4 1102 73
+4dbd4 64 1104 73
+FUNC 4dc38 10c 0 google_breakpad::MinidumpThread::GetContext
+4dc38 6 1448 73
+4dc3e 2 1449 73
+4dc40 4 1448 73
+4dc44 2 1448 73
+4dc46 2 1449 73
+4dc48 1c 1450 73
+4dc64 8 333 127
+4dc6c 6 1454 73
+4dc72 a 1455 73
+4dc7c 1c 1456 73
+4dc98 a 333 127
+4dca2 6 1456 73
+4dca8 2 1457 73
+4dcaa a 1460 73
+4dcb4 12 417 73
+4dcc6 2 92 57
+4dcc8 4 1462 73
+4dccc 4 92 57
+4dcd0 4 1462 73
+4dcd4 2 1462 73
+4dcd6 1c 1463 73
+4dcf2 a 333 127
+4dcfc 6 1463 73
+4dd02 8 1464 73
+4dd0a 2 143 57
+4dd0c 2 1467 73
+4dd0e 2 1467 73
+4dd10 2 144 57
+4dd12 4 1467 73
+4dd16 2 1470 73
+4dd18 2c 1471 73
+FUNC 4dd44 11c 0 google_breakpad::MinidumpException::GetContext
+4dd44 6 2946 73
+4dd4a 2 2947 73
+4dd4c 4 2946 73
+4dd50 2 2946 73
+4dd52 2 2947 73
+4dd54 1c 2948 73
+4dd70 8 333 127
+4dd78 8 2952 73
+4dd80 c 2953 73
+4dd8c 1c 2954 73
+4dda8 a 333 127
+4ddb2 6 2954 73
+4ddb8 2 2955 73
+4ddba a 2958 73
+4ddc4 12 417 73
+4ddd6 2 92 57
+4ddd8 6 2962 73
+4ddde 4 92 57
+4dde2 4 2962 73
+4dde6 2 2962 73
+4dde8 1c 2963 73
+4de04 a 333 127
+4de0e 6 2963 73
+4de14 8 2964 73
+4de1c 2 143 57
+4de1e 2 2967 73
+4de20 4 2967 73
+4de24 2 144 57
+4de26 4 2967 73
+4de2a 4 2970 73
+4de2e 32 2971 73
+FUNC 4de60 1c4 0 google_breakpad::MinidumpThread::Read
+4de60 10 1386 73
+4de70 2 1388 73
+4de72 2 1386 73
+4de74 2 1386 73
+4de76 2 1388 73
+4de78 6 1388 73
+4de7e 2 1389 73
+4de80 2 1390 73
+4de82 2 1389 73
+4de84 2 1390 73
+4de86 6 1390 73
+4de8c 2 1391 73
+4de8e 4 1395 73
+4de92 2 1391 73
+4de94 2 1393 73
+4de96 e 1395 73
+4dea4 1c 1396 73
+4dec0 a 333 127
+4deca 6 1396 73
+4ded0 2 1397 73
+4ded2 6 1400 73
+4ded8 6 958 65
+4dede 2 1400 73
+4dee0 6 1401 73
+4dee6 8 1402 73
+4deee 8 1403 73
+4def6 8 1404 73
+4defe 8 1405 73
+4df06 8 189 73
+4df0e 8 190 73
+4df16 8 1407 73
+4df1e 4 1412 73
+4df22 2 1412 73
+4df24 2 1411 73
+4df26 a 1413 73
+4df30 8 1412 73
+4df38 1c 1416 73
+4df54 4 110 72
+4df58 6 333 127
+4df5e 4 1417 73
+4df62 4 333 127
+4df66 a 1417 73
+4df70 a 1417 73
+4df7a 2 333 127
+4df7c 4 1418 73
+4df80 6 333 127
+4df86 8 1418 73
+4df8e a 1418 73
+4df98 2 333 127
+4df9a 4 1419 73
+4df9e 6 333 127
+4dfa4 8 1419 73
+4dfac 8 1419 73
+4dfb4 12 156 137
+4dfc6 6 1416 73
+4dfcc 4 1425 73
+4dfd0 e 1427 73
+4dfde 8 1421 73
+4dfe6 6 1421 73
+4dfec 2 1421 73
+4dfee c 1422 73
+4dffa 2a 1427 73
+FUNC 4e024 220 0 google_breakpad::MinidumpModule::Read
+4e024 c 1723 73
+4e030 4 1725 73
+4e034 4 1723 73
+4e038 4 1723 73
+4e03c 2 1725 73
+4e03e 6 156 137
+4e044 6 1725 73
+4e04a 2 1726 73
+4e04c 4 1727 73
+4e050 4 1726 73
+4e054 2 1727 73
+4e056 6 304 144
+4e05c 6 1727 73
+4e062 6 1728 73
+4e068 4 1729 73
+4e06c 4 1730 73
+4e070 4 1729 73
+4e074 2 1730 73
+4e076 6 304 144
+4e07c 6 1730 73
+4e082 2 1731 73
+4e084 4 1737 73
+4e088 4 1731 73
+4e08c 2 1733 73
+4e08e 2 1734 73
+4e090 2 1735 73
+4e092 e 1737 73
+4e0a0 1c 1738 73
+4e0bc a 333 127
+4e0c6 6 1738 73
+4e0cc 2 1739 73
+4e0ce 6 1742 73
+4e0d4 8 958 65
+4e0dc 4 1742 73
+4e0e0 6 1743 73
+4e0e6 8 1744 73
+4e0ee 8 1745 73
+4e0f6 8 1746 73
+4e0fe 8 1747 73
+4e106 8 1748 73
+4e10e 8 1749 73
+4e116 8 1750 73
+4e11e 8 1751 73
+4e126 8 1752 73
+4e12e 8 1753 73
+4e136 8 1754 73
+4e13e 8 1755 73
+4e146 8 1756 73
+4e14e 8 1757 73
+4e156 8 1758 73
+4e15e 8 1759 73
+4e166 8 1760 73
+4e16e 8 1761 73
+4e176 8 1762 73
+4e17e 4 1768 73
+4e182 2 1769 73
+4e184 4 1770 73
+4e188 4 1769 73
+4e18c 4 1770 73
+4e190 8 1768 73
+4e198 1c 1771 73
+4e1b4 4 110 72
+4e1b8 2 333 127
+4e1ba 2 1772 73
+4e1bc 8 333 127
+4e1c4 a 1772 73
+4e1ce a 1772 73
+4e1d8 2 333 127
+4e1da 4 1773 73
+4e1de 6 333 127
+4e1e4 8 1773 73
+4e1ec 8 1773 73
+4e1f4 c 156 137
+4e200 6 1771 73
+4e206 2 1774 73
+4e208 e 1779 73
+4e216 4 1777 73
+4e21a 2 1778 73
+4e21c 28 1779 73
+FUNC 4e244 11c 0 google_breakpad::MinidumpException::Read
+4e244 4 2888 73
+4e248 4 2890 73
+4e24c 2 2888 73
+4e24e 2 2888 73
+4e250 2 2890 73
+4e252 6 2890 73
+4e258 2 2891 73
+4e25a 2 2895 73
+4e25c 4 2891 73
+4e260 2 2893 73
+4e262 2 2895 73
+4e264 1a 2896 73
+4e27e 2 110 72
+4e280 a 333 127
+4e28a a 254 126
+4e294 8 333 127
+4e29c a 254 126
+4e2a6 12 2901 73
+4e2b8 1a 2902 73
+4e2d2 a 333 127
+4e2dc 6 2902 73
+4e2e2 2 2903 73
+4e2e4 6 2906 73
+4e2ea 6 958 65
+4e2f0 2 2906 73
+4e2f2 6 2907 73
+4e2f8 8 2910 73
+4e300 8 2911 73
+4e308 8 2912 73
+4e310 8 2913 73
+4e318 10 2914 73
+4e328 8 2920 73
+4e330 4 2917 73
+4e334 6 2922 73
+4e33a 4 2925 73
+4e33e 22 2927 73
+FUNC 4e360 17c 0 google_breakpad::MinidumpSystemInfo::Read
+4e360 2 3106 73
+4e362 2 3108 73
+4e364 2 3106 73
+4e366 4 3106 73
+4e36a 2 3108 73
+4e36c 6 156 137
+4e372 6 3108 73
+4e378 2 3109 73
+4e37a 2 3110 73
+4e37c 2 3109 73
+4e37e 2 3110 73
+4e380 6 156 137
+4e386 6 3110 73
+4e38c 2 3111 73
+4e38e 2 3115 73
+4e390 2 3111 73
+4e392 2 3113 73
+4e394 2 3115 73
+4e396 1a 3116 73
+4e3b0 2 110 72
+4e3b2 a 333 127
+4e3bc a 254 126
+4e3c6 8 333 127
+4e3ce a 254 126
+4e3d8 12 3121 73
+4e3ea 1a 3122 73
+4e404 a 333 127
+4e40e 6 3122 73
+4e414 2 3123 73
+4e416 6 3126 73
+4e41c 8 958 65
+4e424 4 3126 73
+4e428 6 3127 73
+4e42e 8 3128 73
+4e436 8 3129 73
+4e43e 8 3132 73
+4e446 8 3133 73
+4e44e 8 3134 73
+4e456 8 3135 73
+4e45e 8 3136 73
+4e466 8 3137 73
+4e46e c 3140 73
+4e47a 12 3143 73
+4e48c 8 3144 73
+4e494 8 3145 73
+4e49c a 3146 73
+4e4a6 4 3140 73
+4e4aa a 3149 73
+4e4b4 4 3153 73
+4e4b8 24 3155 73
+FUNC 4e4dc 240 0 google_breakpad::Minidump::ReadString
+4e4dc 6 4478 73
+4e4e2 4 4479 73
+4e4e6 2 4478 73
+4e4e8 8 4478 73
+4e4f0 2 4479 73
+4e4f2 1a 4480 73
+4e50c c 333 127
+4e518 8 4483 73
+4e520 1a 4484 73
+4e53a 2 110 72
+4e53c a 333 127
+4e546 8 259 126
+4e54e 6 4484 73
+4e554 2 4485 73
+4e556 12 4489 73
+4e568 1a 4490 73
+4e582 2 110 72
+4e584 8 333 127
+4e58c 6 4494 73
+4e592 6 4495 73
+4e598 8 4497 73
+4e5a0 1a 4498 73
+4e5ba 2 110 72
+4e5bc a 333 127
+4e5c6 a 254 126
+4e5d0 8 333 127
+4e5d8 8 259 126
+4e5e0 6 4498 73
+4e5e6 4 4500 73
+4e5ea 4 4504 73
+4e5ee 4 4502 73
+4e5f2 a 4504 73
+4e5fc 1a 4505 73
+4e616 2 110 72
+4e618 a 333 127
+4e622 a 254 126
+4e62c 8 333 127
+4e634 a 254 126
+4e63e 2 333 127
+4e640 2 254 126
+4e642 4 333 127
+4e646 8 4511 73
+4e64e c 116 148
+4e65a 6 4513 73
+4e660 a 4514 73
+4e66a 4 4514 73
+4e66e 1a 4515 73
+4e688 2 110 72
+4e68a a 333 127
+4e694 a 254 126
+4e69e 8 333 127
+4e6a6 8 259 126
+4e6ae 6 4515 73
+4e6b4 2 4517 73
+4e6b6 c 4521 73
+4e6c2 6 304 144
+4e6c8 54 4522 73
+FUNC 4e71c 1b0 0 google_breakpad::MinidumpMemoryRegion::GetMemory
+4e71c 6 1213 73
+4e722 2 1214 73
+4e724 4 1213 73
+4e728 2 1213 73
+4e72a 2 1214 73
+4e72c 1c 1215 73
+4e748 a 333 127
+4e752 4 1215 73
+4e756 c 1219 73
+4e762 8 1220 73
+4e76a 1a 1221 73
+4e784 8 333 127
+4e78c a 1225 73
+4e796 1a 1226 73
+4e7b0 c 333 127
+4e7bc e 1230 73
+4e7ca 1a 1231 73
+4e7e4 2 110 72
+4e7e6 a 333 127
+4e7f0 2 1232 73
+4e7f2 a 254 126
+4e7fc 8 333 127
+4e804 8 254 126
+4e80c 6 1231 73
+4e812 2 1234 73
+4e814 2 1238 73
+4e816 4 1238 73
+4e81a 6 1238 73
+4e820 2 1238 73
+4e822 a 116 148
+4e82c 2 92 57
+4e82e 2 1240 73
+4e830 4 92 57
+4e834 c 1240 73
+4e840 2 1240 73
+4e842 1a 1241 73
+4e85c a 333 127
+4e866 6 1241 73
+4e86c 8 1242 73
+4e874 2 143 57
+4e876 2 1245 73
+4e878 2 1245 73
+4e87a 4 144 57
+4e87e 6 1245 73
+4e884 8 1222 73
+4e88c 40 1249 73
+FUNC 4e8cc 1d0 0 google_breakpad::MinidumpMemoryRegion::GetMemoryAtAddressInternal<unsigned char>
+4e8cc 10 1279 73
+4e8dc e 1279 73
+4e8ea 6 1281 73
+4e8f0 1e 1281 73
+4e90e a 333 127
+4e918 6 1281 73
+4e91e 6 1284 73
+4e924 a 1286 73
+4e92e 1c 1287 73
+4e94a a 333 127
+4e954 6 1287 73
+4e95a 2 1289 73
+4e95c 10 1293 73
+4e96c a 1293 73
+4e976 1a 1293 73
+4e990 6 1304 73
+4e996 2 1305 73
+4e998 c 1312 73
+4e9a4 10 1319 73
+4e9b4 4 1307 73
+4e9b8 1e 1297 73
+4e9d6 2 110 72
+4e9d8 6 333 127
+4e9de 4 1297 73
+4e9e2 4 333 127
+4e9e6 a 1297 73
+4e9f0 a 1297 73
+4e9fa a 333 127
+4ea04 a 254 126
+4ea0e 2 333 127
+4ea10 2 1298 73
+4ea12 6 333 127
+4ea18 2 1298 73
+4ea1a a 1298 73
+4ea24 a 1298 73
+4ea2e 6 333 127
+4ea34 2 1299 73
+4ea36 a 1299 73
+4ea40 8 1299 73
+4ea48 12 156 137
+4ea5a 6 1297 73
+4ea60 6 1301 73
+4ea66 36 1319 73
+FUNC 4ea9c 4 0 google_breakpad::MinidumpMemoryRegion::GetMemoryAtAddress
+4ea9c 4 1324 73
+FUNC 4eaa8 1f0 0 google_breakpad::MinidumpMemoryRegion::GetMemoryAtAddressInternal<short unsigned int>
+4eaa8 10 1279 73
+4eab8 e 1279 73
+4eac6 6 1281 73
+4eacc 1e 1281 73
+4eaea a 333 127
+4eaf4 6 1281 73
+4eafa 6 1284 73
+4eb00 a 1286 73
+4eb0a 1c 1287 73
+4eb26 a 333 127
+4eb30 6 1287 73
+4eb36 2 1289 73
+4eb38 10 1293 73
+4eb48 10 1293 73
+4eb58 1a 1293 73
+4eb72 6 1304 73
+4eb78 2 1305 73
+4eb7a c 1312 73
+4eb86 6 1315 73
+4eb8c 6 958 65
+4eb92 10 1319 73
+4eba2 4 1315 73
+4eba6 8 1316 73
+4ebae 4 1307 73
+4ebb2 1e 1297 73
+4ebd0 2 110 72
+4ebd2 6 333 127
+4ebd8 4 1297 73
+4ebdc 4 333 127
+4ebe0 a 1297 73
+4ebea a 1297 73
+4ebf4 a 333 127
+4ebfe a 254 126
+4ec08 2 333 127
+4ec0a 2 1298 73
+4ec0c 6 333 127
+4ec12 2 1298 73
+4ec14 a 1298 73
+4ec1e a 1298 73
+4ec28 6 333 127
+4ec2e 2 1299 73
+4ec30 a 1299 73
+4ec3a 8 1299 73
+4ec42 12 156 137
+4ec54 6 1297 73
+4ec5a 6 1301 73
+4ec60 38 1319 73
+FUNC 4ec98 4 0 google_breakpad::MinidumpMemoryRegion::GetMemoryAtAddress
+4ec98 4 1330 73
+FUNC 4eca4 1f0 0 google_breakpad::MinidumpMemoryRegion::GetMemoryAtAddressInternal<unsigned int>
+4eca4 10 1279 73
+4ecb4 e 1279 73
+4ecc2 6 1281 73
+4ecc8 1e 1281 73
+4ece6 a 333 127
+4ecf0 6 1281 73
+4ecf6 6 1284 73
+4ecfc a 1286 73
+4ed06 1c 1287 73
+4ed22 a 333 127
+4ed2c 6 1287 73
+4ed32 2 1289 73
+4ed34 10 1293 73
+4ed44 10 1293 73
+4ed54 1a 1293 73
+4ed6e 6 1304 73
+4ed74 2 1305 73
+4ed76 c 1312 73
+4ed82 6 1315 73
+4ed88 6 958 65
+4ed8e 10 1319 73
+4ed9e 4 1315 73
+4eda2 8 1316 73
+4edaa 4 1307 73
+4edae 1e 1297 73
+4edcc 2 110 72
+4edce 6 333 127
+4edd4 4 1297 73
+4edd8 4 333 127
+4eddc a 1297 73
+4ede6 a 1297 73
+4edf0 a 333 127
+4edfa a 254 126
+4ee04 2 333 127
+4ee06 2 1298 73
+4ee08 6 333 127
+4ee0e 2 1298 73
+4ee10 a 1298 73
+4ee1a a 1298 73
+4ee24 6 333 127
+4ee2a 2 1299 73
+4ee2c a 1299 73
+4ee36 8 1299 73
+4ee3e 12 156 137
+4ee50 6 1297 73
+4ee56 6 1301 73
+4ee5c 38 1319 73
+FUNC 4ee94 4 0 google_breakpad::MinidumpMemoryRegion::GetMemoryAtAddress
+4ee94 4 1336 73
+FUNC 4eea0 1f8 0 google_breakpad::MinidumpMemoryRegion::GetMemoryAtAddressInternal<long long unsigned int>
+4eea0 10 1279 73
+4eeb0 e 1279 73
+4eebe 6 1281 73
+4eec4 1e 1281 73
+4eee2 a 333 127
+4eeec 6 1281 73
+4eef2 8 1284 73
+4eefa a 1286 73
+4ef04 1c 1287 73
+4ef20 a 333 127
+4ef2a 6 1287 73
+4ef30 2 1289 73
+4ef32 10 1293 73
+4ef42 10 1293 73
+4ef52 1c 1293 73
+4ef6e 6 1304 73
+4ef74 2 1305 73
+4ef76 10 1312 73
+4ef86 6 1315 73
+4ef8c 6 958 65
+4ef92 10 1319 73
+4efa2 4 1315 73
+4efa6 8 1316 73
+4efae 4 1307 73
+4efb2 1e 1297 73
+4efd0 2 110 72
+4efd2 6 333 127
+4efd8 4 1297 73
+4efdc 4 333 127
+4efe0 a 1297 73
+4efea a 1297 73
+4eff4 a 333 127
+4effe a 254 126
+4f008 2 333 127
+4f00a 2 1298 73
+4f00c 6 333 127
+4f012 2 1298 73
+4f014 a 1298 73
+4f01e a 1298 73
+4f028 6 333 127
+4f02e 2 1299 73
+4f030 a 1299 73
+4f03a 8 1299 73
+4f042 12 156 137
+4f054 6 1297 73
+4f05a 6 1301 73
+4f060 38 1319 73
+FUNC 4f098 4 0 google_breakpad::MinidumpMemoryRegion::GetMemoryAtAddress
+4f098 4 1342 73
+FUNC 4f0a4 90 0 google_breakpad::MinidumpMemoryRegion::Print
+4f0a4 2 1346 73
+4f0a6 2 1347 73
+4f0a8 2 1346 73
+4f0aa 2 1346 73
+4f0ac 2 1347 73
+4f0ae 1a 1348 73
+4f0c8 a 333 127
+4f0d2 8 1348 73
+4f0da 4 1352 73
+4f0de 4 1353 73
+4f0e2 2 1354 73
+4f0e4 2 1355 73
+4f0e6 6 1354 73
+4f0ec 4 1358 73
+4f0f0 4 1356 73
+4f0f4 6 1355 73
+4f0fa c 1358 73
+4f106 8 1360 73
+4f10e 8 1362 73
+4f116 1e 1364 73
+FUNC 4f13c 358 0 google_breakpad::MinidumpModule::GetCVRecord
+4f13c 6 2076 73
+4f142 2 2077 73
+4f144 4 2076 73
+4f148 4 2076 73
+4f14c 2 2077 73
+4f14e 1c 2078 73
+4f16a a 333 127
+4f174 4 2078 73
+4f178 a 2082 73
+4f182 8 2085 73
+4f18a c 2089 73
+4f196 1a 2090 73
+4f1b0 c 333 127
+4f1bc 10 2094 73
+4f1cc 1a 2095 73
+4f1e6 2 110 72
+4f1e8 a 333 127
+4f1f2 a 254 126
+4f1fc 8 333 127
+4f204 a 254 126
+4f20e 6 2095 73
+4f214 2 2098 73
+4f216 2 2109 73
+4f218 4 2109 73
+4f21c 6 2109 73
+4f222 a 116 148
+4f22c 2 92 57
+4f22e 4 116 148
+4f232 4 92 57
+4f236 c 2111 73
+4f242 2 2111 73
+4f244 1a 2112 73
+4f25e 8 333 127
+4f266 6 2116 73
+4f26c 8 2117 73
+4f274 6 2120 73
+4f27a 6 2121 73
+4f280 6 958 65
+4f286 2 2121 73
+4f288 6 2122 73
+4f28e 8 2125 73
+4f296 6 2127 73
+4f29c 1a 2128 73
+4f2b6 2 110 72
+4f2b8 a 333 127
+4f2c2 8 254 126
+4f2ca 2 333 127
+4f2cc 2 254 126
+4f2ce 4 333 127
+4f2d2 6 2134 73
+4f2d8 6 958 65
+4f2de 8 2134 73
+4f2e6 2 2137 73
+4f2e8 4 195 73
+4f2ec 4 2137 73
+4f2f0 6 195 73
+4f2f6 8 196 73
+4f2fe 8 197 73
+4f306 a 2139 73
+4f310 e 2146 73
+4f31e 1a 2148 73
+4f338 8 333 127
+4f340 6 2151 73
+4f346 6 2153 73
+4f34c 1a 2154 73
+4f366 2 110 72
+4f368 a 333 127
+4f372 a 254 126
+4f37c 8 333 127
+4f384 a 254 126
+4f38e 6 2159 73
+4f394 6 958 65
+4f39a 8 2159 73
+4f3a2 6 2162 73
+4f3a8 8 2163 73
+4f3b0 8 2164 73
+4f3b8 a 2165 73
+4f3c2 c 2172 73
+4f3ce 1a 2174 73
+4f3e8 a 333 127
+4f3f2 6 2174 73
+4f3f8 8 2113 73
+4f400 2 144 57
+4f402 2 143 57
+4f404 2 2188 73
+4f406 4 2187 73
+4f40a 2 2188 73
+4f40c 2 144 57
+4f40e a 2188 73
+4f418 4 2086 73
+4f41c 6 2191 73
+4f422 c 2192 73
+4f42e 66 2195 73
+FUNC 4f494 27c 0 google_breakpad::MinidumpModule::GetMiscRecord
+4f494 6 2198 73
+4f49a 2 2199 73
+4f49c 4 2198 73
+4f4a0 4 2198 73
+4f4a4 2 2199 73
+4f4a6 1c 2200 73
+4f4c2 a 333 127
+4f4cc 4 2200 73
+4f4d0 a 2204 73
+4f4da 8 2205 73
+4f4e2 6 2209 73
+4f4e8 1a 2211 73
+4f502 2 110 72
+4f504 a 333 127
+4f50e a 254 126
+4f518 8 333 127
+4f520 6 254 126
+4f526 a 2216 73
+4f530 1a 2218 73
+4f54a a 333 127
+4f554 6 2218 73
+4f55a 2 2219 73
+4f55c 10 2222 73
+4f56c 1a 2223 73
+4f586 2 110 72
+4f588 a 333 127
+4f592 a 254 126
+4f59c 8 333 127
+4f5a4 c 254 126
+4f5b0 2 2236 73
+4f5b2 4 2236 73
+4f5b6 6 2236 73
+4f5bc a 116 148
+4f5c6 4 92 57
+4f5ca c 2240 73
+4f5d6 1a 2242 73
+4f5f0 c 333 127
+4f5fc 6 2246 73
+4f602 6 958 65
+4f608 8 2262 73
+4f610 1a 2264 73
+4f62a 2 110 72
+4f62c a 333 127
+4f636 a 254 126
+4f640 8 333 127
+4f648 a 254 126
+4f652 4 2246 73
+4f656 6 2247 73
+4f65c 6 2248 73
+4f662 6 2252 73
+4f668 2 2257 73
+4f66a 4 2255 73
+4f66e a 2257 73
+4f678 4 214 73
+4f67c c 215 73
+4f688 6 2264 73
+4f68e 8 2243 73
+4f696 2 144 57
+4f698 2 143 57
+4f69a 6 144 57
+4f6a0 4 2271 73
+4f6a4 6 2271 73
+4f6aa 4 2206 73
+4f6ae 6 2274 73
+4f6b4 c 2275 73
+4f6c0 50 2278 73
+FUNC 4f710 124 0 google_breakpad::MinidumpModule::ReadAuxiliaryData
+4f710 6 1782 73
+4f716 2 1783 73
+4f718 4 1782 73
+4f71c 2 1782 73
+4f71e 2 1783 73
+4f720 1c 1784 73
+4f73c a 333 127
+4f746 6 1784 73
+4f74c 2 1785 73
+4f74e e 1789 73
+4f75c 2 1790 73
+4f75e 1c 1791 73
+4f77a 8 333 127
+4f782 4 1796 73
+4f786 2 1800 73
+4f788 4 1796 73
+4f78c 2 1800 73
+4f78e 8 1800 73
+4f796 4 1800 73
+4f79a 1c 1802 73
+4f7b6 8 333 127
+4f7be 4 1806 73
+4f7c2 8 1806 73
+4f7ca 4 1806 73
+4f7ce 1c 1808 73
+4f7ea a 333 127
+4f7f4 6 1808 73
+4f7fa 4 1809 73
+4f7fe 4 1812 73
+4f802 32 1814 73
+FUNC 4f834 64 0 std::priv::_Rb_tree<unsigned int, std::less<unsigned int>, std::pair<unsigned int const, google_breakpad::MinidumpThread*>, std::priv::_Select1st<std::pair<unsigned int const, google_breakpad::MinidumpThread*> >, std::priv::_MapTraitsT<std::pair<unsigned int const, google_breakpad::MinidumpThread*> >, std::allocator<std::pair<unsigned int const, google_breakpad::MinidumpThread*> > >::_M_insert
+4f834 2 358 140
+4f836 2 350 140
+4f838 8 350 140
+4f840 2 358 140
+4f842 6 359 140
+4f848 2 360 140
+4f84a 2 361 140
+4f84c 4 362 140
+4f850 4 364 140
+4f854 4 364 140
+4f858 8 364 140
+4f860 4 367 140
+4f864 2 368 140
+4f866 2 369 140
+4f868 2 367 140
+4f86a 4 369 140
+4f86e 4 370 140
+4f872 4 373 140
+4f876 2 374 140
+4f878 2 375 140
+4f87a 2 373 140
+4f87c 4 375 140
+4f880 2 376 140
+4f882 2 379 140
+4f884 2 378 140
+4f886 6 379 140
+4f88c 2 380 140
+4f88e 2 382 140
+4f890 4 380 140
+4f894 2 142 141
+4f896 2 382 140
+FUNC 4f898 70 0 std::priv::_Rb_tree<unsigned int, std::less<unsigned int>, std::pair<unsigned int const, google_breakpad::MinidumpThread*>, std::priv::_Select1st<std::pair<unsigned int const, google_breakpad::MinidumpThread*> >, std::priv::_MapTraitsT<std::pair<unsigned int const, google_breakpad::MinidumpThread*> >, std::allocator<std::pair<unsigned int const, google_breakpad::MinidumpThread*> > >::insert_unique
+4f898 2 405 140
+4f89a 2 408 140
+4f89c 4 405 140
+4f8a0 2 406 140
+4f8a2 2 405 140
+4f8a4 2 407 140
+4f8a6 2 405 140
+4f8a8 2 409 140
+4f8aa 4 412 140
+4f8ae 2 412 140
+4f8b0 2 412 140
+4f8b2 4 412 140
+4f8b6 a 412 140
+4f8c0 2 142 141
+4f8c2 2 415 140
+4f8c4 6 416 140
+4f8ca 6 417 140
+4f8d0 8 187 141
+4f8d8 e 421 140
+4f8e6 10 422 140
+4f8f6 4 142 141
+4f8fa 4 62 129
+4f8fe 2 142 141
+4f900 2 425 140
+4f902 2 62 129
+4f904 4 425 140
+FUNC 4f908 f4 0 std::priv::_Rb_tree<unsigned int, std::less<unsigned int>, std::pair<unsigned int const, google_breakpad::MinidumpThread*>, std::priv::_Select1st<std::pair<unsigned int const, google_breakpad::MinidumpThread*> >, std::priv::_MapTraitsT<std::pair<unsigned int const, google_breakpad::MinidumpThread*> >, std::allocator<std::pair<unsigned int const, google_breakpad::MinidumpThread*> > >::insert_unique
+4f908 4 432 140
+4f90c 4 434 140
+4f910 2 432 140
+4f912 2 434 140
+4f914 4 432 140
+4f918 2 434 140
+4f91a a 437 140
+4f924 4 440 140
+4f928 a 441 140
+4f932 4 447 140
+4f936 6 177 141
+4f93c 2 458 140
+4f93e 2 177 141
+4f940 2 458 140
+4f942 c 462 140
+4f94e 8 479 140
+4f956 8 480 140
+4f95e 8 483 140
+4f966 2 486 140
+4f968 6 475 140
+4f96e 6 142 141
+4f974 c 187 141
+4f980 c 79 111
+4f98c 6 494 140
+4f992 6 494 140
+4f998 8 177 141
+4f9a0 6 513 140
+4f9a6 4 517 140
+4f9aa 4 517 140
+4f9ae 6 517 140
+4f9b4 6 475 140
+4f9ba 6 500 140
+4f9c0 8 522 140
+4f9c8 6 497 140
+4f9ce 4 498 140
+4f9d2 c 524 140
+4f9de 4 142 141
+4f9e2 4 521 140
+4f9e6 6 522 140
+4f9ec 8 524 140
+4f9f4 8 534 140
+FUNC 4f9fc 4c 0 std::map<unsigned int, google_breakpad::MinidumpThread*, std::less<unsigned int>, std::allocator<std::pair<unsigned int const, google_breakpad::MinidumpThread*> > >::operator[]<unsigned int>
+4f9fc 2 175 123
+4f9fe 2 568 141
+4fa00 8 175 123
+4fa08 2 571 141
+4fa0a 4 572 141
+4fa0e 6 575 141
+4fa14 2 573 141
+4fa16 6 575 141
+4fa1c 2 178 123
+4fa1e 2 142 141
+4fa20 2 178 123
+4fa22 6 178 123
+4fa28 6 62 129
+4fa2e 2 142 141
+4fa30 c 191 123
+4fa3c 4 179 123
+4fa40 4 180 123
+4fa44 4 181 123
+FUNC 4fa48 18 0 google_breakpad::MinidumpThreadList::GetThreadByID
+4fa48 2 1668 73
+4fa4a 6 1668 73
+4fa50 8 1671 73
+4fa58 8 1672 73
+FUNC 4fa60 50c 0 google_breakpad::MinidumpThreadList::Read
+4fa60 e 1553 73
+4fa6e 6 1553 73
+4fa74 6 206 123
+4fa7a 2 531 141
+4fa7c 4 1553 73
+4fa80 2 531 141
+4fa82 8 532 141
+4fa8a 2 533 141
+4fa8c 2 535 141
+4fa8e 2 533 141
+4fa90 2 534 141
+4fa92 2 535 141
+4fa94 2 534 141
+4fa96 2 536 141
+4fa98 4 1556 73
+4fa9c 6 42 148
+4faa2 6 1556 73
+4faa8 2 1557 73
+4faaa 2 1563 73
+4faac 2 1557 73
+4faae 2 1558 73
+4fab0 2 1560 73
+4fab2 2 1563 73
+4fab4 1c 1564 73
+4fad0 2 110 72
+4fad2 a 333 127
+4fadc a 254 126
+4fae6 2 333 127
+4fae8 2 1566 73
+4faea 6 333 127
+4faf0 8 254 126
+4faf8 6 1564 73
+4fafe 2 1566 73
+4fb00 10 1568 73
+4fb10 1c 1569 73
+4fb2c a 333 127
+4fb36 6 1569 73
+4fb3c 2 1570 73
+4fb3e 6 1573 73
+4fb44 6 958 65
+4fb4a 2 1573 73
+4fb4c 6 1574 73
+4fb52 8 1576 73
+4fb5a 1c 1577 73
+4fb76 2 110 72
+4fb78 a 333 127
+4fb82 8 254 126
+4fb8a a 333 127
+4fb94 4 1583 73
+4fb98 6 1582 73
+4fb9e 6 1585 73
+4fba4 10 1588 73
+4fbb4 1c 1590 73
+4fbd0 a 333 127
+4fbda 6 1590 73
+4fbe0 4 1591 73
+4fbe4 1c 1594 73
+4fc00 2 110 72
+4fc02 a 333 127
+4fc0c a 254 126
+4fc16 8 333 127
+4fc1e 2 254 126
+4fc20 4 1596 73
+4fc24 6 254 126
+4fc2a 6 1594 73
+4fc30 6 1597 73
+4fc36 c 1602 73
+4fc42 1c 1603 73
+4fc5e 2 110 72
+4fc60 a 333 127
+4fc6a a 254 126
+4fc74 8 333 127
+4fc7c 6 254 126
+4fc82 6 1608 73
+4fc88 c 1610 73
+4fc94 6 1610 73
+4fc9a 2 70 144
+4fc9c 4 1610 73
+4fca0 4 70 144
+4fca4 2 481 106
+4fca6 2 342 106
+4fca8 2 1610 73
+4fcaa 4 342 106
+4fcae 8 343 106
+4fcb6 6 343 106
+4fcbc 6 346 106
+4fcc2 c 347 106
+4fcce 4 348 106
+4fcd2 a 352 106
+4fcdc 2 346 106
+4fcde 2 356 106
+4fce0 2 73 144
+4fce2 4 314 142
+4fce6 4 73 144
+4fcea 6 314 142
+4fcf0 2 112 65
+4fcf2 4 267 65
+4fcf6 2 112 65
+4fcf8 4 249 142
+4fcfc 2 112 65
+4fcfe 2 267 65
+4fd00 4 249 142
+4fd04 2 71 144
+4fd06 2 72 144
+4fd08 6 73 144
+4fd0e 2 112 65
+4fd10 4 267 65
+4fd14 6 249 142
+4fd1a 4 139 108
+4fd1e 4 112 65
+4fd22 4 267 65
+4fd26 6 112 65
+4fd2c 4 267 65
+4fd30 6 112 65
+4fd36 4 267 65
+4fd3a 4 112 65
+4fd3e 24 267 65
+4fd62 8 249 142
+4fd6a 2 1612 73
+4fd6c 2 244 144
+4fd6e 2 1610 73
+4fd70 2 244 144
+4fd72 4 1610 73
+4fd76 4 1625 73
+4fd7a 8 1612 73
+4fd82 c 202 144
+4fd8e 2 1618 73
+4fd90 2 202 144
+4fd92 6 1618 73
+4fd98 1a 1619 73
+4fdb2 2 110 72
+4fdb4 a 333 127
+4fdbe 8 254 126
+4fdc6 2 333 127
+4fdc8 2 254 126
+4fdca 4 333 127
+4fdce 12 1625 73
+4fde0 1a 1626 73
+4fdfa 2 110 72
+4fdfc a 333 127
+4fe06 a 254 126
+4fe10 8 333 127
+4fe18 8c 254 126
+4fea4 c 1631 73
+4feb0 1a 1633 73
+4feca 2 110 72
+4fecc 4 333 127
+4fed0 2 1634 73
+4fed2 6 333 127
+4fed8 8 1634 73
+4fee0 a 1634 73
+4feea 8 333 127
+4fef2 a 254 126
+4fefc 8 333 127
+4ff04 8 254 126
+4ff0c 6 156 137
+4ff12 6 1633 73
+4ff18 6 42 148
+4ff1e 8 98 57
+4ff26 8 1638 73
+4ff2e 2 1612 73
+4ff30 6 1638 73
+4ff36 2 1641 73
+4ff38 4 1644 73
+4ff3c 4 1646 73
+4ff40 2c 1648 73
+FUNC 4ff6c 80 0 std::priv::_Rb_tree<long long unsigned int, std::less<long long unsigned int>, std::pair<long long unsigned int const, google_breakpad::RangeMap<long long unsigned int, unsigned int>::Range>, std::priv::_Select1st<std::pair<long long unsigned int const, google_breakpad::RangeMap<long long unsigned int, unsigned int>::Range> >, std::priv::_MapTraitsT<std::pair<long long unsigned int const, google_breakpad::RangeMap<long long unsigned int, unsigned int>::Range> >, std::allocator<std::pair<long long unsigned int const, google_breakpad::RangeMap<long long unsigned int, unsigned int>::Range> > >::_M_insert
+4ff6c 2 358 140
+4ff6e 4 350 140
+4ff72 8 350 140
+4ff7a 2 358 140
+4ff7c 6 359 140
+4ff82 2 360 140
+4ff84 2 361 140
+4ff86 4 362 140
+4ff8a 4 364 140
+4ff8e 4 364 140
+4ff92 10 364 140
+4ffa2 4 367 140
+4ffa6 2 368 140
+4ffa8 4 369 140
+4ffac 2 367 140
+4ffae 4 369 140
+4ffb2 6 370 140
+4ffb8 4 373 140
+4ffbc 2 374 140
+4ffbe 4 375 140
+4ffc2 2 373 140
+4ffc4 4 375 140
+4ffc8 4 376 140
+4ffcc 2 379 140
+4ffce 2 378 140
+4ffd0 8 379 140
+4ffd8 4 380 140
+4ffdc 2 382 140
+4ffde 6 380 140
+4ffe4 4 142 141
+4ffe8 4 382 140
+FUNC 4ffec 1e8 0 google_breakpad::RangeMap<long long unsigned int, unsigned int>::StoreRange
+4ffec 8 50 75
+4fff4 4 53 75
+4fff8 e 50 75
+50006 2 50 75
+50008 4 56 75
+5000c 4 50 75
+50010 4 53 75
+50014 2 50 75
+50016 a 56 75
+50020 6 53 75
+50026 6 56 75
+5002c 4 53 75
+50030 2 56 75
+50032 18 60 75
+5004a 4 110 72
+5004e 6 333 127
+50054 4 60 75
+50058 4 333 127
+5005c a 60 75
+50066 a 60 75
+50070 2 333 127
+50072 4 61 75
+50076 6 333 127
+5007c a 61 75
+50086 a 61 75
+50090 2 333 127
+50092 2 61 75
+50094 6 333 127
+5009a a 61 75
+500a4 8 61 75
+500ac 12 156 137
+500be 6 60 75
+500c4 6 63 75
+500ca 2 568 141
+500cc 2 569 141
+500ce 2 571 141
+500d0 a 572 141
+500da 6 575 141
+500e0 2 573 141
+500e2 6 575 141
+500e8 2 569 141
+500ea 2 568 141
+500ec 2 571 141
+500ee e 572 141
+500fc 6 575 141
+50102 2 573 141
+50104 6 575 141
+5010a 4 71 75
+5010e 4 90 75
+50112 10 91 75
+50122 a 105 76
+5012c 10 62 129
+5013c 2 568 141
+5013e 4 62 129
+50142 2 408 140
+50144 2 409 140
+50146 e 412 140
+50154 4 412 140
+50158 4 412 140
+5015c 4 412 140
+50160 6 412 140
+50166 4 142 141
+5016a 2 415 140
+5016c 6 416 140
+50172 8 417 140
+5017a a 187 141
+50184 10 421 140
+50194 12 422 140
+501a6 2 113 75
+501a8 2c 114 75
+FUNC 501d4 630 0 google_breakpad::MinidumpModuleList::Read
+501d4 14 2445 73
+501e8 2 2445 73
+501ea 2 206 123
+501ec 4 2445 73
+501f0 4 206 123
+501f4 6 2448 73
+501fa 6 42 148
+50200 6 2448 73
+50206 2 2449 73
+50208 2 2455 73
+5020a 2 2449 73
+5020c 2 2450 73
+5020e 2 2452 73
+50210 2 2455 73
+50212 1e 2456 73
+50230 2 110 72
+50232 a 333 127
+5023c a 254 126
+50246 8 333 127
+5024e 8 254 126
+50256 4 2456 73
+5025a 10 2460 73
+5026a 1e 2461 73
+50288 a 333 127
+50292 6 2461 73
+50298 2 2462 73
+5029a 6 2465 73
+502a0 6 958 65
+502a6 2 2465 73
+502a8 6 2466 73
+502ae 8 2468 73
+502b6 1e 2469 73
+502d4 2 110 72
+502d6 a 333 127
+502e0 8 254 126
+502e8 a 333 127
+502f2 8 2475 73
+502fa 6 2474 73
+50300 6 2477 73
+50306 10 2480 73
+50316 1e 2482 73
+50334 a 333 127
+5033e 6 2482 73
+50344 4 2483 73
+50348 1e 2486 73
+50366 2 110 72
+50368 a 333 127
+50372 a 254 126
+5037c 8 333 127
+50384 2 2488 73
+50386 2 254 126
+50388 4 2488 73
+5038c 6 254 126
+50392 4 2486 73
+50396 10 2493 73
+503a6 1e 2494 73
+503c4 2 110 72
+503c6 a 333 127
+503d0 a 254 126
+503da 8 333 127
+503e2 a 254 126
+503ec 8 2494 73
+503f4 6 2499 73
+503fa c 2501 73
+50406 6 2501 73
+5040c 2 70 144
+5040e 4 2501 73
+50412 4 70 144
+50416 2 481 106
+50418 2 342 106
+5041a 2 2501 73
+5041c 4 342 106
+50420 8 343 106
+50428 4 343 106
+5042c 6 346 106
+50432 c 347 106
+5043e 4 348 106
+50442 a 352 106
+5044c 2 348 106
+5044e 4 352 106
+50452 2 346 106
+50454 2 356 106
+50456 2 73 144
+50458 4 314 142
+5045c 4 73 144
+50460 6 314 142
+50466 a 249 142
+50470 2 112 65
+50472 4 364 65
+50476 4 112 65
+5047a 4 71 144
+5047e 4 72 144
+50482 4 73 144
+50486 2 112 65
+50488 2 364 65
+5048a 6 249 142
+50490 2 139 108
+50492 4 112 65
+50496 4 364 65
+5049a 4 112 65
+5049e 2 364 65
+504a0 4 112 65
+504a4 2 364 65
+504a6 2 112 65
+504a8 34 364 65
+504dc 8 249 142
+504e4 2 244 144
+504e6 2 2501 73
+504e8 4 244 144
+504ec 4 92 57
+504f0 2 2503 73
+504f2 4 2501 73
+504f6 4 202 144
+504fa 6 2503 73
+50500 4 202 144
+50504 a 2509 73
+5050e 1c 2510 73
+5052a 2 110 72
+5052c a 333 127
+50536 8 254 126
+5053e 2 333 127
+50540 2 254 126
+50542 4 333 127
+50546 7e 2503 73
+505c4 4 2521 73
+505c8 8 2550 73
+505d0 2 2522 73
+505d2 6 2521 73
+505d8 e 202 144
+505e6 8 2531 73
+505ee 4 2531 73
+505f2 1c 2533 73
+5060e 2 110 72
+50610 a 333 127
+5061a 8 254 126
+50622 2 333 127
+50624 2 254 126
+50626 4 333 127
+5062a 6 2560 73
+50630 e 2541 73
+5063e a 2542 73
+50648 c 2543 73
+50654 4 2542 73
+50658 2 2543 73
+5065a 1e 2545 73
+50678 2 110 72
+5067a a 333 127
+50684 a 254 126
+5068e 8 333 127
+50696 a 254 126
+506a0 2 333 127
+506a2 2 2546 73
+506a4 6 333 127
+506aa 2 2546 73
+506ac 8 2546 73
+506b4 8 2546 73
+506bc 6 156 137
+506c2 6 2551 73
+506c8 4 98 57
+506cc 6 42 148
+506d2 a 98 57
+506dc 4 2563 73
+506e0 4 2565 73
+506e4 10 2567 73
+506f4 4 333 127
+506f8 8 254 126
+50700 4 2533 73
+50704 10 2550 73
+50714 1e 2551 73
+50732 2 110 72
+50734 a 333 127
+5073e a 254 126
+50748 8 333 127
+50750 a 254 126
+5075a 2 333 127
+5075c 2 2553 73
+5075e 8 333 127
+50766 a 2553 73
+50770 a 2553 73
+5077a 2 333 127
+5077c 2 2554 73
+5077e 4 333 127
+50782 a 2554 73
+5078c a 2554 73
+50796 2 333 127
+50798 2 2555 73
+5079a 6 333 127
+507a0 a 2555 73
+507aa 8 2555 73
+507b2 e 156 137
+507c0 8 2521 73
+507c8 3c 2567 73
+FUNC 50804 61c 0 google_breakpad::MinidumpMemoryList::Read
+50804 10 2689 73
+50814 2 2691 73
+50816 4 2689 73
+5081a 8 2689 73
+50822 2 2691 73
+50824 6 42 148
+5082a 6 2691 73
+50830 2 2692 73
+50832 2 2693 73
+50834 2 2692 73
+50836 2 2693 73
+50838 6 42 148
+5083e 6 2693 73
+50844 2 2694 73
+50846 2 206 123
+50848 2 2694 73
+5084a 4 206 123
+5084e 2 2701 73
+50850 2 2696 73
+50852 2 2698 73
+50854 2 2701 73
+50856 20 2702 73
+50876 2 110 72
+50878 c 333 127
+50884 a 254 126
+5088e a 333 127
+50898 a 254 126
+508a2 12 2706 73
+508b4 20 2707 73
+508d4 c 333 127
+508e0 6 2707 73
+508e6 2 2708 73
+508e8 6 2711 73
+508ee 6 958 65
+508f4 2 2711 73
+508f6 6 2712 73
+508fc 8 2714 73
+50904 20 2716 73
+50924 2 110 72
+50926 c 333 127
+50932 8 254 126
+5093a c 333 127
+50946 2 2722 73
+50948 6 2721 73
+5094e 6 2724 73
+50954 10 2727 73
+50964 20 2729 73
+50984 c 333 127
+50990 6 2729 73
+50996 4 2730 73
+5099a 1e 2733 73
+509b8 2 110 72
+509ba c 333 127
+509c6 a 254 126
+509d0 8 333 127
+509d8 2 2735 73
+509da 2 254 126
+509dc 2 2735 73
+509de 4 254 126
+509e2 c 2740 73
+509ee 1c 2741 73
+50a0a 2 110 72
+50a0c a 333 127
+50a16 a 254 126
+50a20 8 333 127
+50a28 8 254 126
+50a30 8 2741 73
+50a38 6 2746 73
+50a3e 6 2748 73
+50a44 2 2748 73
+50a46 8 2748 73
+50a4e 4 2748 73
+50a52 2 2748 73
+50a54 2 2748 73
+50a56 4 342 106
+50a5a 4 70 144
+50a5e 2 481 106
+50a60 2 342 106
+50a62 8 343 106
+50a6a 8 343 106
+50a72 2 346 106
+50a74 6 347 106
+50a7a 4 348 106
+50a7e 2 352 106
+50a80 2 348 106
+50a82 4 352 106
+50a86 2 356 106
+50a88 4 73 144
+50a8c 4 314 142
+50a90 4 71 144
+50a94 4 72 144
+50a98 4 73 144
+50a9c 4 249 142
+50aa0 6 249 142
+50aa6 2 139 108
+50aa8 8 139 108
+50ab0 8 249 142
+50ab8 2 2753 73
+50aba 4 244 144
+50abe 8 2753 73
+50ac6 4 92 57
+50aca 8 2753 73
+50ad2 2 2752 73
+50ad4 1a 2754 73
+50aee a 333 127
+50af8 6 2754 73
+50afe 2 2755 73
+50b00 8 2759 73
+50b08 6 2759 73
+50b0e 2 70 144
+50b10 4 2759 73
+50b14 4 70 144
+50b18 2 481 106
+50b1a 2 342 106
+50b1c 2 2759 73
+50b1e 8 342 106
+50b26 6 346 106
+50b2c c 347 106
+50b38 4 348 106
+50b3c a 352 106
+50b46 2 346 106
+50b48 2 356 106
+50b4a 2 73 144
+50b4c 4 314 142
+50b50 4 73 144
+50b54 4 314 142
+50b58 4 249 142
+50b5c 2 71 144
+50b5e 2 72 144
+50b60 4 112 65
+50b64 4 249 142
+50b68 2 201 65
+50b6a 2 112 65
+50b6c 6 201 65
+50b72 2 73 144
+50b74 2 112 65
+50b76 2 201 65
+50b78 6 249 142
+50b7e 4 139 108
+50b82 e 112 65
+50b90 4 201 65
+50b94 4 112 65
+50b98 10 201 65
+50ba8 8 249 142
+50bb0 4 244 144
+50bb4 6 2759 73
+50bba 4 2761 73
+50bbe 8 2782 73
+50bc6 2 2762 73
+50bc8 6 2761 73
+50bce 8 202 144
+50bd6 6 2766 73
+50bdc 6 958 65
+50be2 2 2766 73
+50be4 6 189 73
+50bea 8 190 73
+50bf2 8 2769 73
+50bfa 4 2770 73
+50bfe 6 2773 73
+50c04 6 2774 73
+50c0a 6 2773 73
+50c10 2 2774 73
+50c12 4 2773 73
+50c16 4 2793 73
+50c1a 4 2794 73
+50c1e 16 2782 73
+50c34 1a 2783 73
+50c4e 2 110 72
+50c50 a 333 127
+50c5a a 254 126
+50c64 8 333 127
+50c6c a 254 126
+50c76 2 333 127
+50c78 2 2785 73
+50c7a 6 333 127
+50c80 a 2785 73
+50c8a a 2785 73
+50c94 4 333 127
+50c98 2 2778 73
+50c9a 4 333 127
+50c9e 8 2778 73
+50ca6 8 2778 73
+50cae c 156 137
+50cba 6 2775 73
+50cc0 6 42 148
+50cc6 6 98 57
+50ccc 4 98 57
+50cd0 6 42 148
+50cd6 a 98 57
+50ce0 4 2797 73
+50ce4 4 2799 73
+50ce8 10 2801 73
+50cf8 1a 2775 73
+50d12 2 110 72
+50d14 14 333 127
+50d28 a 254 126
+50d32 8 333 127
+50d3a a 254 126
+50d44 2 333 127
+50d46 2 2777 73
+50d48 6 333 127
+50d4e a 2777 73
+50d58 8 2777 73
+50d60 2 333 127
+50d62 2 2777 73
+50d64 4 333 127
+50d68 2 2790 73
+50d6a 2 202 144
+50d6c c 2790 73
+50d78 8 2761 73
+50d80 a0 2801 73
+FUNC 50e20 64 0 std::priv::_Rb_tree<unsigned int, std::less<unsigned int>, std::pair<unsigned int const, google_breakpad::Minidump::MinidumpStreamInfo>, std::priv::_Select1st<std::pair<unsigned int const, google_breakpad::Minidump::MinidumpStreamInfo> >, std::priv::_MapTraitsT<std::pair<unsigned int const, google_breakpad::Minidump::MinidumpStreamInfo> >, std::allocator<std::pair<unsigned int const, google_breakpad::Minidump::MinidumpStreamInfo> > >::_M_insert
+50e20 2 358 140
+50e22 2 350 140
+50e24 8 350 140
+50e2c 2 358 140
+50e2e 6 359 140
+50e34 2 360 140
+50e36 2 361 140
+50e38 4 362 140
+50e3c 4 364 140
+50e40 4 364 140
+50e44 8 364 140
+50e4c 4 367 140
+50e50 2 368 140
+50e52 2 369 140
+50e54 2 367 140
+50e56 4 369 140
+50e5a 4 370 140
+50e5e 4 373 140
+50e62 2 374 140
+50e64 2 375 140
+50e66 2 373 140
+50e68 4 375 140
+50e6c 2 376 140
+50e6e 2 379 140
+50e70 2 378 140
+50e72 6 379 140
+50e78 2 380 140
+50e7a 2 382 140
+50e7c 4 380 140
+50e80 2 142 141
+50e82 2 382 140
+FUNC 50e84 70 0 std::priv::_Rb_tree<unsigned int, std::less<unsigned int>, std::pair<unsigned int const, google_breakpad::Minidump::MinidumpStreamInfo>, std::priv::_Select1st<std::pair<unsigned int const, google_breakpad::Minidump::MinidumpStreamInfo> >, std::priv::_MapTraitsT<std::pair<unsigned int const, google_breakpad::Minidump::MinidumpStreamInfo> >, std::allocator<std::pair<unsigned int const, google_breakpad::Minidump::MinidumpStreamInfo> > >::insert_unique
+50e84 2 405 140
+50e86 2 408 140
+50e88 4 405 140
+50e8c 2 406 140
+50e8e 2 405 140
+50e90 2 407 140
+50e92 2 405 140
+50e94 2 409 140
+50e96 4 412 140
+50e9a 2 412 140
+50e9c 2 412 140
+50e9e 4 412 140
+50ea2 a 412 140
+50eac 2 142 141
+50eae 2 415 140
+50eb0 6 416 140
+50eb6 6 417 140
+50ebc 8 187 141
+50ec4 e 421 140
+50ed2 10 422 140
+50ee2 4 142 141
+50ee6 4 62 129
+50eea 2 142 141
+50eec 2 425 140
+50eee 2 62 129
+50ef0 4 425 140
+FUNC 50ef4 f4 0 std::priv::_Rb_tree<unsigned int, std::less<unsigned int>, std::pair<unsigned int const, google_breakpad::Minidump::MinidumpStreamInfo>, std::priv::_Select1st<std::pair<unsigned int const, google_breakpad::Minidump::MinidumpStreamInfo> >, std::priv::_MapTraitsT<std::pair<unsigned int const, google_breakpad::Minidump::MinidumpStreamInfo> >, std::allocator<std::pair<unsigned int const, google_breakpad::Minidump::MinidumpStreamInfo> > >::insert_unique
+50ef4 4 432 140
+50ef8 4 434 140
+50efc 2 432 140
+50efe 2 434 140
+50f00 4 432 140
+50f04 2 434 140
+50f06 a 437 140
+50f10 4 440 140
+50f14 a 441 140
+50f1e 4 447 140
+50f22 6 177 141
+50f28 2 458 140
+50f2a 2 177 141
+50f2c 2 458 140
+50f2e c 462 140
+50f3a 8 479 140
+50f42 8 480 140
+50f4a 8 483 140
+50f52 2 486 140
+50f54 6 475 140
+50f5a 6 142 141
+50f60 c 187 141
+50f6c c 79 111
+50f78 6 494 140
+50f7e 6 494 140
+50f84 8 177 141
+50f8c 6 513 140
+50f92 4 517 140
+50f96 4 517 140
+50f9a 6 517 140
+50fa0 6 475 140
+50fa6 6 500 140
+50fac 8 522 140
+50fb4 6 497 140
+50fba 4 498 140
+50fbe c 524 140
+50fca 4 142 141
+50fce 4 521 140
+50fd2 6 522 140
+50fd8 8 524 140
+50fe0 8 534 140
+FUNC 50fe8 5a8 0 google_breakpad::Minidump::Read
+50fe8 10 4099 73
+50ff8 2 4101 73
+50ffa 4 4099 73
+50ffe 6 4099 73
+51004 2 4101 73
+51006 6 42 148
+5100c 6 4101 73
+51012 2 4102 73
+51014 2 4103 73
+51016 2 4102 73
+51018 4 531 141
+5101c 8 532 141
+51024 2 533 141
+51026 2 534 141
+51028 2 535 141
+5102a 2 536 141
+5102c 2 4105 73
+5102e 2 4107 73
+51030 4 4105 73
+51034 a 4107 73
+5103e 1e 4108 73
+5105c a 333 127
+51066 12 4112 73
+51078 1e 4113 73
+51096 c 333 127
+510a2 6 4113 73
+510a8 2 4114 73
+510aa a 4117 73
+510b4 6 4122 73
+510ba 4 4123 73
+510be 6 4124 73
+510c4 1e 4126 73
+510e2 4 110 72
+510e6 6 333 127
+510ec 2 4127 73
+510ee 6 333 127
+510f4 8 4127 73
+510fc a 4127 73
+51106 4 333 127
+5110a 2 4128 73
+5110c 6 333 127
+51112 8 4128 73
+5111a a 4128 73
+51124 4 333 127
+51128 4 4129 73
+5112c 6 333 127
+51132 8 4129 73
+5113a 8 4129 73
+51142 12 156 137
+51154 6 4126 73
+5115a 4 4130 73
+5115e 8 4132 73
+51166 4 4136 73
+5116a 1a 4139 73
+51184 2 110 72
+51186 a 333 127
+51190 6 4139 73
+51196 6 4139 73
+5119c 4 4139 73
+511a0 10 333 127
+511b0 6 4139 73
+511b6 6 4142 73
+511bc 6 4143 73
+511c2 8 4144 73
+511ca 8 4145 73
+511d2 8 4146 73
+511da 8 4147 73
+511e2 8 4148 73
+511ea 8 4149 73
+511f2 a 4154 73
+511fc 1a 4155 73
+51216 2 110 72
+51218 2 333 127
+5121a 2 4156 73
+5121c 8 333 127
+51224 8 4156 73
+5122c a 4156 73
+51236 2 333 127
+51238 2 4157 73
+5123a 6 333 127
+51240 8 4157 73
+51248 8 4157 73
+51250 e 156 137
+5125e c 4161 73
+5126a 1a 4162 73
+51284 8 333 127
+5128c c 4166 73
+51298 1a 4167 73
+512b2 2 110 72
+512b4 a 333 127
+512be a 254 126
+512c8 8 333 127
+512d0 8 254 126
+512d8 8 4167 73
+512e0 6 4172 73
+512e6 4 4174 73
+512ea 2 4174 73
+512ec c 4174 73
+512f8 4 4174 73
+512fc 4 4174 73
+51300 2 342 106
+51302 2 4174 73
+51304 2 342 106
+51306 8 70 144
+5130e 4 481 106
+51312 2 342 106
+51314 8 343 106
+5131c 8 343 106
+51324 6 346 106
+5132a c 347 106
+51336 6 348 106
+5133c a 352 106
+51346 2 346 106
+51348 2 356 106
+5134a 2 73 144
+5134c 4 314 142
+51350 4 73 144
+51354 4 314 142
+51358 8 249 142
+51360 2 71 144
+51362 2 72 144
+51364 2 73 144
+51366 6 249 142
+5136c 2 139 108
+5136e 8 139 108
+51376 8 249 142
+5137e 4 4179 73
+51382 4 244 144
+51386 e 4179 73
+51394 4 4178 73
+51398 1a 4180 73
+513b2 8 333 127
+513ba 2 178 123
+513bc 2 142 141
+513be 2 178 123
+513c0 6 178 123
+513c6 2 171 141
+513c8 4 4218 73
+513cc 4 4184 73
+513d0 6 4184 73
+513d6 e 202 144
+513e4 6 4189 73
+513ea 6 4190 73
+513f0 8 4191 73
+513f8 6 4196 73
+513fe 2 4197 73
+51400 2 4196 73
+51402 2 4197 73
+51404 a 210 123
+5140e 2 423 141
+51410 2 200 141
+51412 4 4205 73
+51416 1a 4208 73
+51430 2 110 72
+51432 a 333 127
+5143c 8 254 126
+51444 8 333 127
+5144c 6 4208 73
+51452 6 42 148
+51458 8 98 57
+51460 6 210 123
+51466 4 202 144
+5146a 4 210 123
+5146e 10 4197 73
+5147e 6 4218 73
+51484 6 568 141
+5148a 4 571 141
+5148e 4 572 141
+51492 6 575 141
+51498 2 573 141
+5149a 6 575 141
+514a0 4 4223 73
+514a4 6 98 57
+514aa 6 4226 73
+514b0 10 4228 73
+514c0 2 968 65
+514c2 4 62 129
+514c6 4 968 65
+514ca a 62 129
+514d4 2 142 141
+514d6 4 62 129
+514da c 191 123
+514e6 2 179 123
+514e8 2 51 129
+514ea 2 179 123
+514ec 4 51 129
+514f0 8 179 123
+514f8 98 4228 73
+FUNC 51590 66 0 std::basic_filebuf<char, std::char_traits<char> >::_M_allocate_buffers
+51590 2 630 109
+51592 4 630 109
+51596 2 637 109
+51598 8 644 109
+515a0 2 645 109
+515a2 4 647 109
+515a6 2 651 109
+515a8 2 650 109
+515aa 2 655 109
+515ac 4 651 109
+515b0 2 227 107
+515b2 2 655 109
+515b4 4 227 107
+515b8 8 655 109
+515c0 8 661 109
+515c8 2 664 109
+515ca 6 686 109
+515d0 6 687 109
+515d6 6 688 109
+515dc 4 689 109
+515e0 2 690 109
+515e2 2 691 109
+515e4 4 692 109
+515e8 2 670 109
+515ea 2 671 109
+515ec 2 669 109
+515ee 2 670 109
+515f0 4 669 109
+515f4 2 672 109
+FUNC 515f6 26 0 std::basic_filebuf<char, std::char_traits<char> >::setbuf
+515f6 2 268 109
+515f8 4 269 109
+515fc 2 268 109
+515fe 2 269 109
+51600 4 269 109
+51604 4 269 109
+51608 2 271 109
+5160a 2 271 109
+5160c 4 272 109
+51610 4 273 109
+51614 4 274 109
+51618 4 277 109
+FUNC 5161c 140 0 std::basic_filebuf<char, std::char_traits<char> >::overflow
+5161c 4 208 109
+51620 4 210 109
+51624 2 208 109
+51626 4 208 109
+5162a 4 210 109
+5162e a 453 109
+51638 8 453 109
+51640 a 453 109
+5164a 8 453 109
+51652 6 456 109
+51658 6 128 110
+5165e a 680 109
+51668 2 681 109
+5166a 4 680 109
+5166e 6 681 109
+51674 4 456 109
+51678 4 462 109
+5167c 6 463 109
+51682 4 118 134
+51686 6 466 109
+5168c 2 216 109
+5168e 4 214 109
+51692 2 219 109
+51694 4 216 109
+51698 2 117 134
+5169a 2 118 134
+5169c 2 119 134
+5169e 4 228 109
+516a2 4 220 145
+516a6 4 193 107
+516aa 4 220 109
+516ae 4 193 107
+516b2 4 223 109
+516b6 2 225 109
+516b8 2 228 109
+516ba 2 225 109
+516bc 2 224 109
+516be 1c 193 107
+516da 4 229 109
+516de c 322 110
+516ea 4 232 109
+516ee 4 240 109
+516f2 2 580 109
+516f4 2 582 109
+516f6 4 580 109
+516fa 4 581 109
+516fe 4 582 109
+51702 2 117 134
+51704 2 118 134
+51706 4 119 134
+5170a 6 240 109
+51710 10 240 109
+51720 8 240 109
+51728 4 240 109
+5172c e 322 110
+5173a 4 246 109
+5173e 4 247 109
+51742 a 182 145
+5174c 4 212 109
+51750 c 256 109
+FUNC 5175c c0 0 std::basic_filebuf<char, std::char_traits<char> >::~basic_filebuf
+5175c 2 67 109
+5175e 2 70 109
+51760 4 84 109
+51764 6 70 109
+5176a a 67 109
+51774 2 84 109
+51776 2 85 109
+51778 8 86 109
+51780 6 85 109
+51786 6 89 109
+5178c 4 119 109
+51790 8 120 109
+51798 2 121 109
+5179a 2 122 109
+5179c 6 124 109
+517a2 6 93 109
+517a8 6 97 109
+517ae 4 98 109
+517b2 2 100 109
+517b4 2 101 109
+517b6 2 93 134
+517b8 2 94 134
+517ba 2 95 134
+517bc 2 117 134
+517be 2 118 134
+517c0 2 119 134
+517c2 6 106 109
+517c8 10 108 109
+517d8 6 686 109
+517de 8 687 109
+517e6 8 594 109
+517ee 10 594 109
+517fe 6 688 109
+51804 2 689 109
+51806 2 70 109
+51808 2 689 109
+5180a 2 690 109
+5180c 2 691 109
+5180e 2 692 109
+51810 c 70 109
+FUNC 5181c 12 0 std::basic_filebuf<char, std::char_traits<char> >::~basic_filebuf
+5181c 2 67 109
+5181e 2 67 109
+51820 4 70 109
+51824 6 70 109
+5182a 4 70 109
+FUNC 51830 6c 0 std::basic_ifstream<char, std::char_traits<char> >::~basic_ifstream
+51830 2 495 110
+51832 8 495 110
+5183a 4 495 110
+5183e 6 495 110
+51844 4 495 110
+51848 6 495 110
+5184e 2 495 110
+51850 4 495 110
+51854 4 495 110
+51858 6 495 110
+5185e c 495 110
+5186a 6 495 110
+51870 6 495 110
+51876 4 495 110
+5187a 8 495 110
+51882 4 495 110
+51886 6 495 110
+5188c 10 495 110
+FUNC 5189c 8 0 std::basic_ifstream<char, std::char_traits<char> >::~basic_ifstream
+5189c 8 495 110
+FUNC 518b0 12 0 std::basic_ifstream<char, std::char_traits<char> >::~basic_ifstream
+518b0 2 495 110
+518b2 6 495 110
+518b8 6 495 110
+518be 4 495 110
+FUNC 518ce 70 0 std::basic_filebuf<char, std::char_traits<char> >::_M_seek_init
+518ce 2 700 109
+518d0 6 702 109
+518d6 4 706 109
+518da 4 700 109
+518de 2 706 109
+518e0 2 708 109
+518e2 8 708 109
+518ea 6 708 109
+518f0 2 709 109
+518f2 2 710 109
+518f4 6 594 109
+518fa c 594 109
+51906 2 711 109
+51908 2 712 109
+5190a 2 713 109
+5190c 4 712 109
+51910 4 713 109
+51914 2 117 134
+51916 2 118 134
+51918 2 119 134
+5191a 2 715 109
+5191c 6 720 109
+51922 6 720 109
+51928 6 93 134
+5192e 2 95 134
+51930 2 221 110
+51932 2 93 134
+51934 2 94 134
+51936 4 221 110
+5193a 2 723 109
+5193c 2 724 109
+FUNC 5193e 4e 0 std::basic_filebuf<char, std::char_traits<char> >::_M_seek_return
+5193e 2 238 110
+51940 2 238 110
+51942 2 239 110
+51944 6 238 110
+5194a 2 239 110
+5194c 6 240 110
+51952 4 119 109
+51956 a 120 109
+51960 4 121 109
+51964 2 122 109
+51966 6 242 110
+5196c 4 243 110
+51970 4 244 110
+51974 4 245 110
+51978 2 93 134
+5197a 2 94 134
+5197c 2 95 134
+5197e 2 117 134
+51980 2 118 134
+51982 2 119 134
+51984 4 121 145
+51988 4 253 110
+FUNC 5198c 52 0 std::basic_filebuf<char, std::char_traits<char> >::seekpos
+5198c 2 384 109
+5198e 8 384 109
+51996 4 386 109
+5199a 2 384 109
+5199c 2 386 109
+5199e a 387 109
+519a8 e 89 145
+519b6 4 391 109
+519ba c 391 109
+519c6 6 391 109
+519cc 2 393 109
+519ce 2 392 109
+519d0 8 393 109
+519d8 6 398 109
+FUNC 519de 12c 0 std::basic_filebuf<char, std::char_traits<char> >::seekoff
+519de 6 291 109
+519e4 4 294 109
+519e8 2 291 109
+519ea 6 291 109
+519f0 2 294 109
+519f2 c 89 145
+519fe 6 297 109
+51a04 4 297 109
+51a08 2 300 109
+51a0a 8 300 109
+51a12 2 300 109
+51a14 a 300 109
+51a1e 4 304 109
+51a22 4 304 109
+51a26 c 306 109
+51a32 a 310 109
+51a3c c 312 109
+51a48 c 314 109
+51a54 c 317 109
+51a60 2 321 109
+51a62 8 321 109
+51a6a 2 321 109
+51a6c 2 321 109
+51a6e 8 321 109
+51a76 4 324 109
+51a7a 2 325 109
+51a7c 6 324 109
+51a82 2 325 109
+51a84 2 332 109
+51a86 2 325 109
+51a88 8 332 109
+51a90 2 333 109
+51a92 6 87 110
+51a98 2 336 109
+51a9a 8 335 109
+51aa2 2 336 109
+51aa4 4 89 145
+51aa8 8 336 109
+51ab0 2 336 109
+51ab2 2 336 109
+51ab4 6 336 109
+51aba 4 344 109
+51abe 2 346 109
+51ac0 4 344 109
+51ac4 c 224 107
+51ad0 4 370 109
+51ad4 2 224 107
+51ad6 a 370 109
+51ae0 2 373 109
+51ae2 2 371 109
+51ae4 2 372 109
+51ae6 2 373 109
+51ae8 2 87 110
+51aea 2 372 109
+51aec 4 373 109
+51af0 2 375 109
+51af2 6 89 145
+51af8 a 375 109
+51b02 8 379 109
+FUNC 51b0a a0 0 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::rfind
+51b0a 4 468 135
+51b0e 2 400 136
+51b10 4 471 135
+51b14 6 472 135
+51b1a a 474 135
+51b24 2 162 104
+51b26 2 474 135
+51b28 4 164 104
+51b2c 8 165 104
+51b34 8 168 104
+51b3c 2 81 118
+51b3e 4 65 118
+51b42 8 171 104
+51b4a 4 81 118
+51b4e 8 174 104
+51b56 4 81 118
+51b5a 6 164 104
+51b60 2 152 118
+51b62 10 178 104
+51b72 8 180 104
+51b7a 4 81 118
+51b7e 2 76 118
+51b80 8 183 104
+51b88 4 81 118
+51b8c 2 76 118
+51b8e 8 186 104
+51b96 6 65 118
+51b9c 2 74 118
+51b9e 4 478 135
+51ba2 4 478 135
+51ba6 4 479 135
+FUNC 51bac a8 0 google_breakpad::PathnameStripper::File
+51bac 2 41 74
+51bae 2 41 74
+51bb0 4 42 74
+51bb4 2 41 74
+51bb6 a 42 74
+51bc0 c 43 74
+51bcc 4 46 74
+51bd0 4 46 74
+51bd4 4 47 74
+51bd8 4 48 74
+51bdc 4 49 74
+51be0 4 50 74
+51be4 2 45 74
+51be6 2 112 137
+51be8 6 481 106
+51bee 2 400 136
+51bf0 4 205 136
+51bf4 8 604 135
+51bfc 2 209 136
+51bfe 2 378 136
+51c00 4 608 135
+51c04 4 610 135
+51c08 2 158 106
+51c0a 2 347 106
+51c0c 2 158 106
+51c0e 6 134 124
+51c14 6 158 106
+51c1a 2 613 135
+51c1c 2 611 135
+51c1e 2 612 135
+51c20 4 613 135
+51c24 6 107 142
+51c2a 8 106 142
+51c32 4 107 142
+51c36 8 600 135
+51c3e 2 101 108
+51c40 2 380 136
+51c42 2 101 108
+51c44 10 54 74
+FUNC 51c54 6 0 google_breakpad::BasicCodeModules::module_count
+51c54 2 85 67
+51c56 4 87 67
+FUNC 51c5a a 0 google_breakpad::BasicCodeModules::GetMainModule
+51c5a a 101 67
+FUNC 51c64 6 0 google_breakpad::BasicCodeModules::GetModuleAtIndex
+51c64 6 121 67
+FUNC 51c6a 24 0 google_breakpad::linked_ptr<const google_breakpad::CodeModule>::depart
+51c6a 2 83 70
+51c6c 2 156 70
+51c6e 6 83 70
+51c74 a 85 70
+51c7e 4 86 70
+51c82 4 156 70
+51c86 2 156 70
+51c88 6 156 70
+FUNC 51c8e 28 0 std::priv::_Rb_tree<long long unsigned int, std::less<long long unsigned int>, std::pair<long long unsigned int const, google_breakpad::RangeMap<long long unsigned int, google_breakpad::linked_ptr<const google_breakpad::CodeModule> >::Range>, std::priv::_Select1st<std::pair<long long unsigned int const, google_breakpad::RangeMap<long long unsigned int, google_breakpad::linked_ptr<const google_breakpad::CodeModule> >::Range> >, std::priv::_MapTraitsT<std::pair<long long unsigned int const, google_breakpad::RangeMap<long long unsigned int, google_breakpad::linked_ptr<const google_breakpad::CodeModule> >::Range> >, std::allocator<std::pair<long long unsigned int const, google_breakpad::RangeMap<long long unsigned int, google_breakpad::linked_ptr<const google_breakpad::CodeModule> >::Range> > >::_M_erase
+51c8e 6 655 140
+51c94 2 657 140
+51c96 8 658 140
+51c9e 4 102 70
+51ca2 2 659 140
+51ca4 4 102 70
+51ca8 c 161 106
+51cb4 2 664 140
+FUNC 51cb8 2c 0 google_breakpad::BasicCodeModules::~BasicCodeModules
+51cb8 2 81 67
+51cba 2 81 67
+51cbc 2 82 67
+51cbe 8 81 67
+51cc6 2 82 67
+51cc8 4 531 141
+51ccc 8 532 141
+51cd4 6 82 67
+51cda a 83 67
+FUNC 51ce4 12 0 google_breakpad::BasicCodeModules::~BasicCodeModules
+51ce4 2 81 67
+51ce6 2 81 67
+51ce8 4 83 67
+51cec 6 83 67
+51cf2 4 83 67
+FUNC 51cf6 24 0 google_breakpad::linked_ptr<const google_breakpad::CodeModule>::copy<const google_breakpad::CodeModule>
+51cf6 2 165 70
+51cf8 4 164 70
+51cfc 4 165 70
+51d00 2 166 70
+51d02 4 167 70
+51d06 a 75 70
+51d10 2 76 70
+51d12 4 77 70
+51d16 4 69 70
+FUNC 51d1c e8 0 google_breakpad::BasicCodeModules::GetModuleForAddress
+51d1c 10 90 67
+51d2c 2 90 67
+51d2e 2 160 70
+51d30 2 92 67
+51d32 4 90 67
+51d36 2 568 141
+51d38 2 160 70
+51d3a 6 69 70
+51d40 2 571 141
+51d42 a 572 141
+51d4c 6 575 141
+51d52 2 573 141
+51d54 6 575 141
+51d5a a 125 75
+51d64 c 133 75
+51d70 a 106 70
+51d7a 6 117 70
+51d80 8 118 70
+51d88 8 102 70
+51d90 2 97 67
+51d92 16 93 67
+51da8 4 110 72
+51dac 2 333 127
+51dae 4 93 67
+51db2 8 333 127
+51dba a 93 67
+51dc4 8 93 67
+51dcc 6 156 137
+51dd2 6 93 67
+51dd8 2 94 67
+51dda 6 102 70
+51de0 24 98 67
+FUNC 51e04 3e 0 std::priv::_Rb_tree<long long unsigned int, std::less<long long unsigned int>, std::pair<long long unsigned int const, google_breakpad::RangeMap<long long unsigned int, google_breakpad::linked_ptr<const google_breakpad::CodeModule> >::Range>, std::priv::_Select1st<std::pair<long long unsigned int const, google_breakpad::RangeMap<long long unsigned int, google_breakpad::linked_ptr<const google_breakpad::CodeModule> >::Range> >, std::priv::_MapTraitsT<std::pair<long long unsigned int const, google_breakpad::RangeMap<long long unsigned int, google_breakpad::linked_ptr<const google_breakpad::CodeModule> >::Range> >, std::allocator<std::pair<long long unsigned int const, google_breakpad::RangeMap<long long unsigned int, google_breakpad::linked_ptr<const google_breakpad::CodeModule> >::Range> > >::_M_create_node
+51e04 2 306 106
+51e06 2 315 141
+51e08 2 315 141
+51e0a 6 306 106
+51e10 4 158 106
+51e14 4 119 108
+51e18 2 158 106
+51e1a 2 119 108
+51e1c 4 68 129
+51e20 2 102 76
+51e22 4 68 129
+51e26 2 106 70
+51e28 8 102 76
+51e30 6 106 70
+51e36 2 321 141
+51e38 2 324 141
+51e3a 2 321 141
+51e3c 2 322 141
+51e3e 4 324 141
+FUNC 51e44 194 0 google_breakpad::BasicCodeModules::GetModuleAtSequence
+51e44 4 105 67
+51e48 2 160 70
+51e4a 2 105 67
+51e4c 2 107 67
+51e4e 4 69 70
+51e52 2 184 75
+51e54 2 105 67
+51e56 2 184 75
+51e58 2 160 70
+51e5a 2 184 75
+51e5c 1a 185 75
+51e76 4 110 72
+51e7a a 333 127
+51e84 a 240 126
+51e8e 8 333 127
+51e96 8 240 126
+51e9e 6 185 75
+51ea4 16 108 67
+51eba 2 110 72
+51ebc a 333 127
+51ec6 c 181 127
+51ed2 6 199 126
+51ed8 2 142 141
+51eda 4 192 75
+51ede 4 297 140
+51ee2 a 94 141
+51eec 2 301 140
+51eee 6 302 140
+51ef4 6 304 140
+51efa 8 309 140
+51f02 4 192 75
+51f06 6 106 70
+51f0c 2 117 70
+51f0e 4 106 70
+51f12 6 117 70
+51f18 8 118 70
+51f20 8 102 70
+51f28 2 112 67
+51f2a 2 202 126
+51f2c 2 145 115
+51f2e 4 202 126
+51f32 2 145 115
+51f34 2 202 126
+51f36 6 145 115
+51f3c 8 351 122
+51f44 6 351 122
+51f4a 2 202 126
+51f4c 2 351 122
+51f4e c 202 126
+51f5a 16 57 128
+51f70 1c 72 125
+51f8c 6 202 126
+51f92 2 210 126
+51f94 e 211 126
+51fa2 6 212 126
+51fa8 6 108 67
+51fae 2 109 67
+51fb0 6 102 70
+51fb6 22 113 67
+FUNC 51fd8 80 0 std::priv::_Rb_tree<long long unsigned int, std::less<long long unsigned int>, std::pair<long long unsigned int const, google_breakpad::RangeMap<long long unsigned int, google_breakpad::linked_ptr<const google_breakpad::CodeModule> >::Range>, std::priv::_Select1st<std::pair<long long unsigned int const, google_breakpad::RangeMap<long long unsigned int, google_breakpad::linked_ptr<const google_breakpad::CodeModule> >::Range> >, std::priv::_MapTraitsT<std::pair<long long unsigned int const, google_breakpad::RangeMap<long long unsigned int, google_breakpad::linked_ptr<const google_breakpad::CodeModule> >::Range> >, std::allocator<std::pair<long long unsigned int const, google_breakpad::RangeMap<long long unsigned int, google_breakpad::linked_ptr<const google_breakpad::CodeModule> >::Range> > >::_M_insert
+51fd8 2 358 140
+51fda 4 350 140
+51fde 8 350 140
+51fe6 2 358 140
+51fe8 6 359 140
+51fee 2 360 140
+51ff0 2 361 140
+51ff2 4 362 140
+51ff6 4 364 140
+51ffa 4 364 140
+51ffe 10 364 140
+5200e 4 367 140
+52012 2 368 140
+52014 4 369 140
+52018 2 367 140
+5201a 4 369 140
+5201e 6 370 140
+52024 4 373 140
+52028 2 374 140
+5202a 4 375 140
+5202e 2 373 140
+52030 4 375 140
+52034 4 376 140
+52038 2 379 140
+5203a 2 378 140
+5203c 8 379 140
+52044 4 380 140
+52048 2 382 140
+5204a 6 380 140
+52050 4 142 141
+52054 4 382 140
+FUNC 52058 218 0 google_breakpad::RangeMap<long long unsigned int, google_breakpad::linked_ptr<const google_breakpad::CodeModule> >::StoreRange
+52058 8 50 75
+52060 4 53 75
+52064 e 50 75
+52072 2 50 75
+52074 4 56 75
+52078 4 50 75
+5207c 4 53 75
+52080 2 50 75
+52082 a 56 75
+5208c 4 53 75
+52090 8 56 75
+52098 18 60 75
+520b0 4 110 72
+520b4 6 333 127
+520ba 4 60 75
+520be 4 333 127
+520c2 a 60 75
+520cc a 60 75
+520d6 2 333 127
+520d8 4 61 75
+520dc 6 333 127
+520e2 a 61 75
+520ec a 61 75
+520f6 2 333 127
+520f8 2 61 75
+520fa 6 333 127
+52100 a 61 75
+5210a 8 61 75
+52112 12 156 137
+52124 6 60 75
+5212a 6 63 75
+52130 2 568 141
+52132 2 569 141
+52134 2 571 141
+52136 a 572 141
+52140 6 575 141
+52146 2 573 141
+52148 6 575 141
+5214e 2 568 141
+52150 2 571 141
+52152 a 572 141
+5215c 6 575 141
+52162 2 573 141
+52164 6 575 141
+5216a 4 71 75
+5216e 4 90 75
+52172 c 91 75
+5217e 2 106 70
+52180 4 105 76
+52184 8 106 70
+5218c 4 102 76
+52190 4 62 129
+52194 6 106 70
+5219a 4 102 76
+5219e 8 106 70
+521a6 2 568 141
+521a8 2 408 140
+521aa 2 407 140
+521ac 2 409 140
+521ae a 412 140
+521b8 4 412 140
+521bc 4 412 140
+521c0 4 412 140
+521c4 6 412 140
+521ca 2 409 140
+521cc 4 142 141
+521d0 2 415 140
+521d2 6 416 140
+521d8 8 417 140
+521e0 6 279 140
+521e6 a 279 140
+521f0 6 280 140
+521f6 6 281 140
+521fc 8 99 141
+52204 4 285 140
+52208 6 286 140
+5220e 6 288 140
+52214 4 187 141
+52218 c 421 140
+52224 10 422 140
+52234 c 102 70
+52240 2 113 75
+52242 2e 114 75
+FUNC 52270 174 0 google_breakpad::BasicCodeModules::BasicCodeModules
+52270 12 48 67
+52282 2 48 67
+52284 2 50 67
+52286 2 48 67
+52288 2 50 67
+5228a 2 48 67
+5228c c 50 67
+52298 2 50 67
+5229a 2 48 67
+5229c 6 50 67
+522a2 4 55 76
+522a6 4 50 67
+522aa 2 52 67
+522ac 1c 52 67
+522c8 a 333 127
+522d2 6 52 67
+522d8 8 55 67
+522e0 2 56 67
+522e2 a 57 67
+522ec 8 59 67
+522f4 2 60 67
+522f6 2 70 67
+522f8 2 59 67
+522fa 4 70 67
+522fe c 333 127
+5230a 6 60 67
+52310 c 68 67
+5231c 4 160 70
+52320 4 68 67
+52324 2 69 70
+52326 4 160 70
+5232a 2 69 70
+5232c 4 69 67
+52330 4 69 67
+52334 6 69 67
+5233a 4 69 67
+5233e 2 69 67
+52340 4 69 67
+52344 2 69 67
+52346 4 69 67
+5234a a 69 67
+52354 2 69 67
+52356 18 70 67
+5236e 4 110 72
+52372 a 333 127
+5237c 2 70 67
+5237e 2 70 67
+52380 6 70 67
+52386 8 70 67
+5238e 6 333 127
+52394 6 156 137
+5239a 6 70 67
+523a0 6 102 70
+523a6 4 60 67
+523aa 3a 74 67
+FUNC 523e4 16 0 google_breakpad::BasicCodeModules::Copy
+523e4 2 124 67
+523e6 2 124 67
+523e8 8 125 67
+523f0 6 125 67
+523f6 4 126 67
+FUNC 523fc 2c 0 CxaThreadKey::freeObject
+523fc 2 251 159
+523fe 2 251 159
+52400 2 141 159
+52402 8 144 159
+5240a 6 68 159
+52410 2 146 159
+52412 2 72 159
+52414 2 146 159
+52416 2 147 159
+52418 4 253 159
+5241c c 72 159
+FUNC 52428 58 0 CxaThreadKey::~CxaThreadKey
+52428 2 217 159
+5242a 2 217 159
+5242c c 116 159
+52438 4 117 159
+5243c 2 119 159
+5243e 6 121 159
+52444 2 119 159
+52446 2 120 159
+52448 4 121 159
+5244c 6 117 159
+52452 c 123 159
+5245e 6 124 159
+52464 a 219 159
+5246e 12 220 159
+FUNC 52480 18 0 __cxxabiv1::__shim_type_info::~__shim_type_info
+52480 4 278 159
+52484 8 278 159
+5248c c 279 159
+FUNC 52498 12 0 __cxxabiv1::__shim_type_info::~__shim_type_info
+52498 2 278 159
+5249a 2 278 159
+5249c 4 279 159
+524a0 6 279 159
+524a6 4 279 159
+FUNC 524ac 10 0 __cxxabiv1::__cxa_pure_virtual
+524ac 2 282 159
+524ae 2 281 159
+524b0 c 282 159
+FUNC 524bc f8 0 __cxxabiv1::__cxa_get_globals
+524bc 2 228 159
+524be 2 289 159
+524c0 4 228 159
+524c4 2 289 159
+524c6 6 228 159
+524cc 2 229 159
+524ce 6 291 159
+524d4 6 129 159
+524da 4 68 159
+524de a 131 159
+524e8 2 135 159
+524ea 2 136 159
+524ec 6 135 159
+524f2 6 136 159
+524f8 6 129 159
+524fe 4 72 159
+52502 4 239 159
+52506 e 244 159
+52514 16 156 159
+5252a 4 157 159
+5252e 8 161 159
+52536 2 167 159
+52538 2 161 159
+5253a 2 162 159
+5253c 6 167 159
+52542 2 167 159
+52544 2 167 159
+52546 2 168 159
+52548 2 167 159
+5254a 2 169 159
+5254c 2 170 159
+5254e 2 167 159
+52550 c 172 159
+5255c 6 167 159
+52562 c 129 159
+5256e 8 72 159
+52576 a 290 159
+52580 8 242 159
+52588 2c 289 159
+FUNC 525b4 2c 0 throwException
+525b4 2 262 159
+525b6 2 262 159
+525b8 4 263 159
+525bc 4 268 159
+525c0 2 263 159
+525c2 6 264 159
+525c8 4 265 159
+525cc 4 266 159
+525d0 2 265 159
+525d2 2 268 159
+525d4 2 266 159
+525d6 4 268 159
+525da 6 271 159
+FUNC 525e0 20 0 __cxxabiv1::__cxa_get_globals_fast
+525e0 2 223 159
+525e2 2 293 159
+525e4 8 223 159
+525ec 2 295 159
+525ee 8 294 159
+525f6 a 293 159
+FUNC 52600 34 0 __cxxabiv1::__cxa_allocate_exception
+52600 2 297 159
+52602 2 298 159
+52604 6 299 159
+5260a 2 300 159
+5260c 8 307 159
+52614 4 308 159
+52618 2 309 159
+5261a 8 304 159
+52622 8 308 159
+5262a a 297 159
+FUNC 52634 40 0 __cxxabiv1::__cxa_free_exception
+52634 2 311 159
+52636 2 311 159
+52638 6 314 159
+5263e 2 316 159
+52640 4 312 159
+52644 4 323 159
+52648 4 322 159
+5264c 4 317 159
+52650 c 318 159
+5265c 8 317 159
+52664 4 318 159
+52668 c 311 159
+FUNC 52674 8 0 defaultExceptionCleanupFunc
+52674 4 51 159
+52678 4 51 159
+FUNC 52680 34 0 __cxxabiv1::__cxa_throw
+52680 2 327 159
+52682 2 327 159
+52684 6 332 159
+5268a 4 328 159
+5268e 2 333 159
+52690 4 329 159
+52694 2 333 159
+52696 4 332 159
+5269a 4 330 159
+5269e 4 333 159
+526a2 12 335 159
+FUNC 526b8 44 0 __cxxabiv1::__cxa_rethrow
+526b8 2 338 159
+526ba 4 339 159
+526be 2 340 159
+526c0 2 342 159
+526c2 14 347 159
+526d6 4 350 159
+526da 6 353 159
+526e0 8 348 159
+526e8 14 344 159
+FUNC 52700 74 0 __cxxabiv1::__cxa_begin_catch
+52700 2 356 159
+52702 2 356 159
+52704 4 359 159
+52708 12 361 159
+5271a 2 362 159
+5271c 2 361 159
+5271e 2 362 159
+52720 4 369 159
+52724 4 358 159
+52728 2 369 159
+5272a 6 369 159
+52730 2 369 159
+52732 4 369 159
+52736 4 377 159
+5273a 2 371 159
+5273c 6 372 159
+52742 2 373 159
+52744 6 375 159
+5274a 4 378 159
+5274e 8 363 159
+52756 8 377 159
+5275e 16 356 159
+FUNC 52778 7c 0 __cxxabiv1::__cxa_end_catch
+52778 2 380 159
+5277a 4 381 159
+5277e 2 382 159
+52780 2 385 159
+52782 14 389 159
+52796 2 383 159
+52798 4 390 159
+5279c a 391 159
+527a6 2 395 159
+527a8 4 396 159
+527ac 4 400 159
+527b0 4 404 159
+527b4 4 408 159
+527b8 4 397 159
+527bc 6 398 159
+527c2 2 401 159
+527c4 2 402 159
+527c6 2 401 159
+527c8 2 402 159
+527ca 4 409 159
+527ce 4 402 159
+527d2 8 405 159
+527da 8 408 159
+527e2 12 380 159
+FUNC 527f8 8 0 operator delete(void*)
+527f8 2 37 161
+527fa 6 38 161
+FUNC 52800 4 0 operator delete[](void*)
+52800 4 44 161
+FUNC 52804 10 0 std::bad_exception::~bad_exception
+FUNC 52804 10 0 std::exception::exception
+FUNC 52804 10 0 std::exception::~exception
+52804 8 36 164
+5280c 8 41 164
+FUNC 52814 c 0 std::exception::what() const
+52814 4 44 164
+52818 8 45 164
+FUNC 52820 c 0 std::bad_exception::what() const
+52820 4 56 164
+52824 8 57 164
+FUNC 5282c 18 0 std::bad_exception::~bad_exception
+5282c 2 40 164
+5282e 2 40 164
+52830 2 40 164
+52832 6 40 164
+52838 4 53 164
+5283c 8 53 164
+FUNC 5282c 18 0 std::exception::~exception
+FUNC 52844 10 0 std::bad_exception::bad_exception
+52844 8 48 164
+5284c 8 49 164
+FUNC 52854 10 0 std::uncaught_exception()
+52854 2 60 164
+52856 4 63 164
+5285a 2 64 164
+5285c 6 64 164
+52862 2 65 164
+FUNC 52864 5c 0 __gabixx::__fatal_error(char const*)
+52864 2 36 165
+52866 2 41 165
+52868 4 36 165
+5286c 10 41 165
+5287c c 65 165
+52888 2 67 165
+5288a a 68 165
+52894 2 69 165
+52896 a 70 165
+528a0 6 72 165
+528a6 1a 75 165
+FUNC 528c0 a 0 __cxxabiv1::call_terminate(_Unwind_Control_Block*)
+528c0 2 52 166
+528c2 4 53 166
+528c6 4 54 166
+FUNC 528cc a 0 __cxxabiv1::decodeRelocTarget2
+528cc 2 292 166
+528ce 2 293 166
+528d0 2 298 166
+528d2 4 300 166
+FUNC 528d8 1a 0 __cxxabiv1::getTypePtr(unsigned long long, unsigned char const*, unsigned char, _Unwind_Control_Block*)
+528d8 2 305 166
+528da 2 306 166
+528dc 4 309 166
+528e0 2 292 166
+528e2 2 293 166
+528e4 4 298 166
+528e8 2 293 166
+528ea 2 311 166
+528ec 6 307 166
+FUNC 528f4 3c 0 __cxxabiv1::canExceptionSpecCatch(long long, unsigned char const*, unsigned char, std::type_info const*, void*, _Unwind_Control_Block*)
+528f4 2 324 166
+528f6 4 318 166
+528fa 4 325 166
+528fe 2 318 166
+52900 2 313 166
+52902 2 318 166
+52904 4 319 166
+52908 2 334 166
+5290a 2 336 166
+5290c 2 335 166
+5290e 2 336 166
+52910 2 337 166
+52912 6 336 166
+52918 4 328 166
+5291c 4 329 166
+52920 2 341 166
+52922 4 342 166
+52926 4 338 166
+5292a 6 320 166
+FUNC 52930 2b4 0 __cxxabiv1::scanEHTable(__cxxabiv1::ScanResultInternal&, int, bool, _Unwind_Control_Block*, _Unwind_Context*)
+52930 6 62 166
+52936 2 62 166
+52938 2 64 166
+5293a 2 65 166
+5293c 2 64 166
+5293e 2 62 166
+52940 2 69 166
+52942 4 64 166
+52946 4 72 166
+5294a 2 65 166
+5294c 2 62 166
+5294e 2 66 166
+52950 2 67 166
+52952 2 62 166
+52954 2 68 166
+52956 2 69 166
+52958 2 62 166
+5295a 6 72 166
+52960 8 73 166
+52968 8 89 166
+52970 6 90 166
+52976 4 150 156
+5297a 2 95 166
+5297c c 150 156
+52988 2 159 156
+5298a 2 97 166
+5298c 2 100 166
+5298e 4 159 156
+52992 4 97 166
+52996 2 100 166
+52998 4 96 166
+5299c 8 100 166
+529a4 2 97 166
+529a6 4 98 166
+529aa 6 101 166
+529b0 2 105 166
+529b2 8 103 166
+529ba 4 105 166
+529be 2 103 166
+529c0 2 106 166
+529c2 4 105 166
+529c6 4 106 166
+529ca 6 107 166
+529d0 6 108 166
+529d6 4 110 166
+529da 2 111 166
+529dc 2 115 166
+529de 2 110 166
+529e0 4 111 166
+529e4 2 112 166
+529e6 4 115 166
+529ea 2 113 166
+529ec 4 118 166
+529f0 8 119 166
+529f8 2 120 166
+529fa 2 119 166
+529fc 6 120 166
+52a02 2 121 166
+52a04 2 120 166
+52a06 8 121 166
+52a0e 6 122 166
+52a14 6 123 166
+52a1a 6 279 166
+52a20 8 124 166
+52a28 8 130 166
+52a30 6 131 166
+52a36 2 251 166
+52a38 4 144 166
+52a3c 2 58 166
+52a3e 2 144 166
+52a40 4 251 166
+52a44 2 144 166
+52a46 4 58 166
+52a4a 4 144 166
+52a4e 2 251 166
+52a50 2 58 166
+52a52 8 144 166
+52a5a 10 153 166
+52a6a 4 154 166
+52a6e 4 172 166
+52a72 4 176 166
+52a76 6 174 166
+52a7c 18 177 166
+52a94 12 183 166
+52aa6 6 184 166
+52aac e 188 166
+52aba 8 189 166
+52ac2 6 243 166
+52ac8 8 262 166
+52ad0 4 263 166
+52ad4 4 264 166
+52ad8 6 271 166
+52ade 6 147 166
+52ae4 4 148 166
+52ae8 4 147 166
+52aec 6 148 166
+52af2 6 204 166
+52af8 8 251 166
+52b00 4 255 166
+52b04 4 252 166
+52b08 2 254 166
+52b0a 2 255 166
+52b0c 2 256 166
+52b0e 2 253 166
+52b10 2 254 166
+52b12 2 256 166
+52b14 6 280 166
+52b1a 6 77 166
+52b20 a 78 166
+52b2a 4 79 166
+52b2e 4 80 166
+52b32 4 266 166
+52b36 2 267 166
+52b38 8 123 166
+52b40 4 275 166
+52b44 6 99 166
+52b4a a 132 166
+52b54 2 135 166
+52b56 8 134 166
+52b5e 4 136 166
+52b62 2 135 166
+52b64 2 137 166
+52b66 8 235 166
+52b6e 6 206 166
+52b74 4 210 166
+52b78 4 209 166
+52b7c 18 210 166
+52b94 16 216 166
+52baa 8 219 166
+52bb2 2 225 166
+52bb4 4 221 166
+52bb8 2 223 166
+52bba 2 222 166
+52bbc 4 224 166
+52bc0 2 223 166
+52bc2 2 225 166
+52bc4 4 226 166
+52bc8 2 194 166
+52bca 4 191 166
+52bce 2 193 166
+52bd0 2 194 166
+52bd2 2 195 166
+52bd4 2 192 166
+52bd6 2 193 166
+52bd8 2 195 166
+52bda a 196 166
+FUNC 52be4 5c 0 __cxxabiv1::setRegisters(_Unwind_Control_Block*, _Unwind_Context*, __cxxabiv1::ScanResultInternal const&)
+52be4 6 350 166
+52bea 2 155 156
+52bec 6 350 166
+52bf2 6 155 156
+52bf8 4 350 166
+52bfc 6 155 156
+52c02 2 352 166
+52c04 a 155 156
+52c0e 2 352 166
+52c10 4 155 156
+52c14 6 150 156
+52c1a 2 353 166
+52c1c 8 150 156
+52c24 2 163 156
+52c26 4 155 156
+52c2a 4 163 156
+52c2e 2 155 156
+52c30 2 164 156
+52c32 4 155 156
+52c36 2 150 156
+52c38 4 155 156
+52c3c 4 354 166
+FUNC 52c40 10 0 __cxxabiv1::continueUnwinding(_Unwind_Control_Block*, _Unwind_Context*)
+52c40 2 357 166
+52c42 4 358 166
+52c46 8 359 166
+52c4e 2 362 166
+FUNC 52c50 2c 0 __cxxabiv1::saveDataToBarrierCache(_Unwind_Control_Block*, _Unwind_Context*, __cxxabiv1::ScanResultInternal const&)
+52c50 4 366 166
+52c54 4 150 156
+52c58 2 366 166
+52c5a 2 366 166
+52c5c c 150 156
+52c68 2 368 166
+52c6a 2 369 166
+52c6c 2 370 166
+52c6e 2 368 166
+52c70 2 367 166
+52c72 2 369 166
+52c74 2 370 166
+52c76 2 367 166
+52c78 4 371 166
+FUNC 52c7c 16 0 __cxxabiv1::loadDataFromBarrierCache(_Unwind_Control_Block*, __cxxabiv1::ScanResultInternal&)
+52c7c 2 376 166
+52c7e 2 377 166
+52c80 2 374 166
+52c82 2 375 166
+52c84 4 376 166
+52c88 2 377 166
+52c8a 2 375 166
+52c8c 2 376 166
+52c8e 4 378 166
+FUNC 52c94 4 0 __cxxabiv1::prepareBeginCleanup(_Unwind_Control_Block*)
+52c94 4 381 166
+FUNC 52c98 6e 0 __cxxabiv1::saveUnexpectedDataToBarrierCache(_Unwind_Control_Block*, _Unwind_Context*, __cxxabiv1::ScanResultInternal const&)
+52c98 6 386 166
+52c9e 4 386 166
+52ca2 4 387 166
+52ca6 2 389 166
+52ca8 2 391 166
+52caa 4 389 166
+52cae 2 391 166
+52cb0 2 389 166
+52cb2 8 391 166
+52cba 6 393 166
+52cc0 6 395 166
+52cc6 2 396 166
+52cc8 2 390 166
+52cca 4 396 166
+52cce 2 397 166
+52cd0 2 396 166
+52cd2 2 397 166
+52cd4 6 398 166
+52cda 4 399 166
+52cde 4 402 166
+52ce2 4 404 166
+52ce6 4 402 166
+52cea 2 404 166
+52cec 2 403 166
+52cee 6 404 166
+52cf4 2 405 166
+52cf6 4 404 166
+52cfa 2 408 166
+52cfc 2 409 166
+52cfe 2 410 166
+52d00 2 409 166
+52d02 4 411 166
+FUNC 52d08 c 0 std::bad_alloc::what() const
+52d08 4 51 167
+52d0c 8 52 167
+FUNC 52d14 18 0 std::bad_alloc::~bad_alloc
+52d14 4 47 167
+52d18 8 47 167
+52d20 c 48 167
+FUNC 52d2c 12 0 std::bad_alloc::~bad_alloc
+52d2c 2 47 167
+52d2e 2 47 167
+52d30 4 48 167
+52d34 6 48 167
+52d3a 4 48 167
+FUNC 52d40 18 0 std::bad_alloc::bad_alloc
+52d40 2 44 167
+52d42 8 44 167
+52d4a 2 45 167
+52d4c 6 44 167
+52d52 6 45 167
+FUNC 52d58 2c 0 std::get_new_handler()
+52d58 24 90 167
+52d7c 8 91 167
+FUNC 52d84 48 0 operator new(unsigned int)
+52d84 2 96 167
+52d86 4 96 167
+52d8a 4 103 167
+52d8e 2 104 167
+52d90 2 107 167
+52d92 6 99 167
+52d98 4 100 167
+52d9c 2 110 167
+52d9e 1a 105 167
+52db8 8 107 167
+52dc0 c 96 167
+FUNC 52dcc 14 0 operator new[](unsigned int)
+52dcc 2 123 167
+52dce 4 124 167
+52dd2 2 125 167
+52dd4 8 124 167
+52ddc 4 123 167
+FUNC 52de0 168 0 __cxxabiv1::__gxx_personality_v0
+52de0 e 56 169
+52dee c 56 169
+52dfa 2 56 169
+52dfc 6 155 156
+52e02 2 56 169
+52e04 8 155 156
+52e0c 4 57 169
+52e10 18 61 169
+52e28 4 67 169
+52e2c 4 88 169
+52e30 4 89 169
+52e34 4 90 169
+52e38 4 97 169
+52e3c 4 98 169
+52e40 4 93 169
+52e44 4 94 169
+52e48 2 95 169
+52e4a 2 98 169
+52e4c 2 96 169
+52e4e 2 98 169
+52e50 6 93 169
+52e56 2 94 169
+52e58 2 97 169
+52e5a 4 98 169
+52e5e a 106 169
+52e68 a 109 169
+52e72 4 110 169
+52e76 4 56 169
+52e7a 2 56 169
+52e7c 6 126 169
+52e82 e 68 169
+52e90 6 69 169
+52e96 a 121 169
+52ea0 4 125 169
+52ea4 6 150 156
+52eaa 2 56 169
+52eac a 150 156
+52eb6 c 56 169
+52ec2 2 80 169
+52ec4 4 71 169
+52ec8 2 73 169
+52eca 6 78 169
+52ed0 4 73 169
+52ed4 6 74 169
+52eda 6 75 169
+52ee0 6 76 169
+52ee6 6 77 169
+52eec 4 78 169
+52ef0 4 80 169
+52ef4 e 114 169
+52f02 6 115 169
+52f08 a 117 169
+52f12 6 118 169
+52f18 4 119 169
+52f1c 12 100 169
+52f2e 6 102 169
+52f34 14 103 169
+FUNC 52f48 18 0 __cxxabiv1::__si_class_type_info::~__si_class_type_info
+52f48 4 34 170
+52f4c 8 34 170
+52f54 c 36 170
+FUNC 52f60 12 0 __cxxabiv1::__si_class_type_info::~__si_class_type_info
+52f60 2 34 170
+52f62 2 34 170
+52f64 4 36 170
+52f68 6 36 170
+52f6e 4 36 170
+FUNC 52f74 24 0 __cxxabiv1::__si_class_type_info::walk_to(__cxxabiv1::__class_type_info const*, void*&, __cxxabiv1::__UpcastInfo&) const
+52f74 2 40 170
+52f76 8 40 170
+52f7e 6 41 170
+52f84 2 42 170
+52f86 2 46 170
+52f88 10 45 170
+FUNC 52f98 12 0 __gabixx::__default_terminate()
+52f98 2 68 171
+52f9a c 72 171
+52fa6 4 75 171
+FUNC 52fac 24 0 __gabixx::__terminate(void (*)())
+52fac 2 78 171
+52fae 2 79 171
+52fb0 2 84 171
+52fb2 4 91 171
+52fb6 4 80 171
+52fba 4 84 171
+52fbe 8 85 171
+52fc6 a 91 171
+FUNC 52fd0 2c 0 std::get_terminate()
+52fd0 24 99 171
+52ff4 8 100 171
+FUNC 52ffc a 0 std::terminate()
+52ffc 2 109 171
+52ffe 8 110 171
+FUNC 53008 6 0 __gabixx::__default_unexpected()
+53008 2 46 171
+5300a 4 47 171
+FUNC 53010 2c 0 std::get_unexpected()
+53010 24 114 171
+53034 8 115 171
+FUNC 5303c e 0 std::unexpected()
+5303c 2 124 171
+5303e 4 125 171
+53042 2 126 171
+53044 2 127 171
+53046 4 130 171
+FUNC 5304c 10 0 std::type_info::~type_info
+5304c 8 42 172
+53054 8 44 172
+FUNC 5305c c 0 std::bad_cast::what() const
+5305c 4 85 172
+53060 8 86 172
+FUNC 53068 18 0 std::type_info::~type_info
+53068 4 42 172
+5306c 8 42 172
+53074 4 44 172
+53078 8 44 172
+FUNC 53080 18 0 std::bad_cast::~bad_cast
+53080 4 81 172
+53084 8 81 172
+5308c c 82 172
+FUNC 53098 12 0 std::bad_cast::~bad_cast
+53098 2 81 172
+5309a 2 81 172
+5309c 4 82 172
+530a0 6 82 172
+530a6 4 82 172
+FUNC 530ac 14 0 std::type_info::operator==(std::type_info const&) const
+530ac 2 49 172
+530ae 8 53 172
+530b6 8 53 172
+530be 2 57 172
+FUNC 530c0 e 0 std::type_info::operator!=(std::type_info const&) const
+530c0 2 61 172
+530c2 8 62 172
+530ca 2 62 172
+530cc 2 63 172
+FUNC 530d0 18 0 std::bad_cast::bad_cast
+530d0 2 78 172
+530d2 8 78 172
+530da 2 79 172
+530dc 6 78 172
+530e2 6 79 172
+FUNC 530e8 6 0 std::__Named_exception::what() const
+530e8 4 95 233
+530ec 2 95 233
+FUNC 530f0 2c 0 std::__Named_exception::~__Named_exception
+530f0 4 89 233
+530f4 2 89 233
+530f6 6 90 233
+530fc 6 89 233
+53102 2 90 233
+53104 2 89 233
+53106 2 90 233
+53108 4 91 233
+5310c 10 92 233
+FUNC 5311c 1c 0 std::logic_error::~logic_error
+5311c 4 76 181
+53120 18 76 181
+FUNC 53138 1c 0 std::out_of_range::~out_of_range
+53138 4 81 181
+5313c 18 81 181
+FUNC 53154 12 0 std::out_of_range::~out_of_range
+53154 2 81 181
+53156 6 81 181
+5315c 6 81 181
+53162 4 81 181
+FUNC 53168 1c 0 std::length_error::~length_error
+53168 4 80 181
+5316c 18 80 181
+FUNC 53184 12 0 std::length_error::~length_error
+53184 2 80 181
+53186 6 80 181
+5318c 6 80 181
+53192 4 80 181
+FUNC 53198 12 0 std::logic_error::~logic_error
+53198 2 76 181
+5319a 6 76 181
+531a0 6 76 181
+531a6 4 76 181
+FUNC 531ac 12 0 std::__Named_exception::~__Named_exception
+531ac 2 89 233
+531ae 2 89 233
+531b0 4 92 233
+531b4 6 92 233
+531ba 4 92 233
+FUNC 531c0 74 0 std::__Named_exception::__Named_exception
+531c0 4 19 233
+531c4 8 19 233
+531cc 4 20 233
+531d0 6 19 233
+531d6 2 20 233
+531d8 4 19 233
+531dc 8 20 233
+531e4 6 21 233
+531ea 8 32 233
+531f2 8 35 233
+531fa 6 36 233
+53200 2 40 233
+53202 2 36 233
+53204 4 40 233
+53208 a 22 233
+53212 2 23 233
+53214 a 28 233
+5321e 16 25 233
+FUNC 53234 24 0 std::priv::_String_base<char, std::allocator<char> >::~_String_base
+53234 2 156 238
+53236 2 156 238
+53238 2 64 238
+5323a 4 96 238
+5323e 2 96 238
+53240 4 97 238
+53244 4 161 201
+53248 4 161 201
+5324c 4 156 238
+53250 4 135 222
+53254 4 156 238
+FUNC 53258 40 0 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string
+53258 2 639 236
+5325a 2 639 236
+5325c 2 112 238
+5325e 2 229 246
+53260 2 481 201
+53262 2 639 236
+53264 4 229 246
+53268 2 643 236
+5326a 2 379 237
+5326c 2 378 237
+5326e 6 379 237
+53274 2 107 243
+53276 2 66 238
+53278 2 107 243
+5327a 8 106 243
+53282 2 107 243
+53284 2 380 237
+53286 4 101 205
+5328a 4 644 236
+5328e a 643 236
+FUNC 53298 60 0 std::__stl_throw_out_of_range(char const*)
+53298 6 70 231
+5329e 12 70 231
+532b0 a 34 232
+532ba 2 121 237
+532bc 8 74 232
+532c4 6 121 237
+532ca 10 70 231
+532da a 70 231
+532e4 14 121 237
+FUNC 532f8 60 0 std::__stl_throw_length_error(char const*)
+532f8 6 73 231
+532fe 12 73 231
+53310 a 34 232
+5331a 2 121 237
+5331c 8 66 232
+53324 6 121 237
+5332a 10 73 231
+5333a a 73 231
+53344 14 121 237
+FUNC 53358 10 0 std::_Filebuf_base::_Filebuf_base
+53358 e 128 180
+53366 2 129 180
+FUNC 53368 18 0 std::_Filebuf_base::_S_initialize()
+53368 2 132 180
+5336a e 144 180
+53378 8 146 180
+FUNC 53380 32 0 std::_Filebuf_base::_M_file_size()
+53380 4 151 180
+53384 a 114 180
+5338e c 114 180
+5339a 4 153 180
+5339e 4 111 180
+533a2 10 115 180
+FUNC 533b4 e0 0 std::_Filebuf_base::_M_open(char const*, int, long)
+533b4 4 157 180
+533b8 2 160 180
+533ba 2 157 180
+533bc 4 157 180
+533c0 2 160 180
+533c2 46 166 180
+53408 2 196 180
+5340a 4 212 180
+5340e 4 183 180
+53412 6 193 180
+53418 2 195 180
+5341a 2 193 180
+5341c 2 195 180
+5341e 2 198 180
+53420 2 200 180
+53422 2 198 180
+53424 2 200 180
+53426 2 204 180
+53428 2 205 180
+5342a 2 206 180
+5342c 2 208 180
+5342e 8 211 180
+53436 6 173 180
+5343c 2 176 180
+5343e 2 177 180
+53440 2 178 180
+53442 4 187 180
+53446 2 188 180
+53448 6 169 180
+5344e 2 180 180
+53450 2 181 180
+53452 c 106 180
+5345e 6 106 180
+53464 a 106 180
+5346e 6 209 180
+53474 12 200 180
+53486 2 201 180
+53488 2 204 180
+5348a 2 201 180
+5348c 2 206 180
+5348e 2 205 180
+53490 4 206 180
+FUNC 53494 8 0 std::_Filebuf_base::_M_open(char const*, int)
+53494 4 221 180
+53498 4 221 180
+FUNC 5349c 78 0 std::_Filebuf_base::_M_open(int, int)
+5349c 4 228 180
+534a0 2 229 180
+534a2 2 228 180
+534a4 2 228 180
+534a6 c 229 180
+534b2 2 230 180
+534b4 4 244 180
+534b8 8 232 180
+534c0 2 234 180
+534c2 4 235 180
+534c6 2 234 180
+534c8 4 82 180
+534cc 4 234 180
+534d0 2 94 180
+534d2 2 106 180
+534d4 6 95 180
+534da 2 106 180
+534dc 4 238 180
+534e0 2 240 180
+534e2 2 241 180
+534e4 2 240 180
+534e6 2 241 180
+534e8 6 106 180
+534ee 6 106 180
+534f4 a 106 180
+534fe 2 242 180
+53500 4 243 180
+53504 10 234 180
+FUNC 53514 28 0 std::_Filebuf_base::_M_close()
+53514 2 247 180
+53516 2 247 180
+53518 4 248 180
+5351c 2 251 180
+5351e 2 251 180
+53520 2 251 180
+53522 6 253 180
+53528 2 254 180
+5352a 2 256 180
+5352c 6 251 180
+53532 a 251 180
+FUNC 5353c 6 0 std::_Filebuf_base::_M_read(char*, int)
+5353c 2 262 180
+5353e 4 262 180
+FUNC 53544 34 0 std::_Filebuf_base::_M_write(char*, int)
+53544 2 268 180
+53546 8 268 180
+5354e c 276 180
+5355a a 270 180
+53564 2 272 180
+53566 2 278 180
+53568 6 276 180
+5356e 4 277 180
+53572 2 272 180
+53574 2 273 180
+53576 2 283 180
+FUNC 53578 42 0 std::_Filebuf_base::_M_seek(long, int)
+53578 2 290 180
+5357a 6 287 180
+53580 a 290 180
+5358a 8 309 180
+53592 2 294 180
+53594 4 292 180
+53598 2 308 180
+5359a 6 309 180
+535a0 4 308 180
+535a4 8 300 180
+535ac 2 302 180
+535ae 8 300 180
+535b6 4 297 180
+FUNC 535bc 8 0 std::_Filebuf_base::_M_unmap(void*, long)
+535bc 4 340 180
+535c0 4 340 180
+FUNC 535c4 48 0 std::_Filebuf_base::_M_mmap(long, long)
+535c4 4 317 180
+535c8 2 320 180
+535ca 2 317 180
+535cc 4 320 180
+535d0 4 317 180
+535d4 c 320 180
+535e0 2 321 180
+535e2 2 320 180
+535e4 2 321 180
+535e6 e 322 180
+535f4 6 334 180
+535fa 4 327 180
+535fe 6 323 180
+53604 2 324 180
+53606 6 323 180
+FUNC 5360c 128 0 std::basic_filebuf<char, std::char_traits<char> >::_M_underflow_aux()
+5360c 2 498 207
+5360e 6 495 207
+53614 2 502 207
+53616 2 495 207
+53618 2 502 207
+5361a 2 498 207
+5361c 2 504 207
+5361e 8 502 207
+53626 2 509 207
+53628 2 502 207
+5362a 8 224 200
+53632 2 504 207
+53634 4 537 207
+53638 8 213 203
+53640 c 515 207
+5364c 2 516 207
+5364e 2 515 207
+53650 2 516 207
+53652 2 522 207
+53654 2 525 207
+53656 4 522 207
+5365a 4 525 207
+5365e 2 537 207
+53660 18 213 203
+53678 4 547 207
+5367c 4 549 207
+53680 8 549 207
+53688 8 549 207
+53690 8 549 207
+53698 4 549 207
+5369c 2 555 207
+5369e 2 93 235
+536a0 2 555 207
+536a2 2 94 235
+536a4 2 95 235
+536a6 2 223 246
+536a8 6 568 207
+536ae 10 549 207
+536be 4 119 207
+536c2 8 120 207
+536ca 4 121 207
+536ce 2 122 207
+536d0 2 124 207
+536d2 2 488 207
+536d4 4 124 207
+536d8 4 553 207
+536dc 4 487 207
+536e0 4 488 207
+536e4 2 93 235
+536e6 2 94 235
+536e8 2 95 235
+536ea 2 553 207
+536ec 6 549 207
+536f2 6 549 207
+536f8 6 563 207
+536fe 4 565 207
+53702 2 93 235
+53704 2 94 235
+53706 2 95 235
+53708 2 565 207
+5370a c 224 200
+53716 2 93 235
+53718 4 527 207
+5371c 2 93 235
+5371e 2 94 235
+53720 2 95 235
+53722 2 527 207
+53724 2 328 208
+53726 2 327 208
+53728 2 93 235
+5372a 2 327 208
+5372c 2 94 235
+5372e 2 95 235
+53730 2 223 246
+53732 2 548 207
+FUNC 53734 5c 0 std::basic_filebuf<char, std::char_traits<char> >::_M_switch_to_input_mode()
+53734 2 429 207
+53736 2 429 207
+53738 6 430 207
+5373e 8 430 207
+53746 2 430 207
+53748 2 444 207
+5374a 2 430 207
+5374c 4 432 207
+53750 2 435 207
+53752 2 440 207
+53754 2 438 207
+53756 2 441 207
+53758 4 440 207
+5375c 2 435 207
+5375e 2 436 207
+53760 2 438 207
+53762 2 441 207
+53764 4 445 207
+53768 6 128 208
+5376e c 680 207
+5377a 2 681 207
+5377c 4 680 207
+53780 6 681 207
+53786 a 432 207
+FUNC 53790 ec 0 std::_Underflow<char, std::char_traits<char> >::_M_doit(std::basic_filebuf<char, std::char_traits<char> >*)
+53790 4 38 182
+53794 2 38 182
+53796 6 42 182
+5379c 6 46 182
+537a2 2 93 235
+537a4 4 220 208
+537a8 2 93 235
+537aa 2 221 208
+537ac 2 48 182
+537ae 2 94 235
+537b0 2 95 235
+537b2 4 221 208
+537b6 2 48 182
+537b8 2 223 246
+537ba 4 50 182
+537be 8 43 182
+537c6 8 57 182
+537ce 8 57 182
+537d6 8 61 182
+537de c 62 182
+537ea c 66 182
+537f6 6 67 182
+537fc 2 68 182
+537fe 2 67 182
+53800 12 68 182
+53812 6 68 182
+53818 2 69 182
+5381a 6 128 208
+53820 a 69 182
+5382a 2 77 182
+5382c 6 72 182
+53832 4 74 182
+53836 2 77 182
+53838 8 75 182
+53840 8 77 182
+53848 2 70 182
+5384a 4 80 182
+5384e 2 93 235
+53850 2 80 182
+53852 2 94 235
+53854 2 95 235
+53856 2 223 246
+53858 4 81 182
+5385c 4 87 182
+53860 2 88 182
+53862 2 92 182
+53864 4 93 182
+53868 4 92 182
+5386c 4 44 182
+53870 4 93 182
+53874 8 84 182
+FUNC 5387c 1c 0 std::ios_base::failure::~failure
+5387c 4 41 183
+53880 18 41 183
+FUNC 53898 12 0 std::ios_base::failure::~failure
+53898 2 41 183
+5389a 6 41 183
+538a0 6 41 183
+538a6 4 41 183
+FUNC 538ac 1c 0 std::ios_base::failure::failure
+538ac 2 37 183
+538ae 2 37 183
+538b0 6 38 183
+538b6 2 39 183
+538b8 8 38 183
+538c0 8 39 183
+FUNC 538c8 28 0 std::ios_base::_M_invoke_callbacks(std::ios_base::event)
+538c8 2 199 183
+538ca 2 199 183
+538cc 2 200 183
+538ce 2 199 183
+538d0 2 200 183
+538d2 2 199 183
+538d4 6 200 183
+538da 2 201 183
+538dc 4 203 183
+538e0 2 201 183
+538e2 2 203 183
+538e4 2 200 183
+538e6 4 203 183
+538ea 6 200 183
+FUNC 538f0 44 0 std::ios_base::~ios_base
+538f0 2 299 183
+538f2 2 300 183
+538f4 2 299 183
+538f6 a 299 183
+53900 4 300 183
+53904 6 301 183
+5390a 6 302 183
+53910 6 303 183
+53916 4 299 183
+5391a 8 304 183
+53922 4 299 183
+53926 e 304 183
+FUNC 53934 12 0 std::ios_base::~ios_base
+53934 2 299 183
+53936 2 299 183
+53938 4 304 183
+5393c 6 304 183
+53942 4 304 183
+FUNC 53948 60 0 std::ios_base::imbue(std::locale const&)
+53948 2 124 183
+5394a 4 125 183
+5394e 6 124 183
+53954 4 125 183
+53958 2 124 183
+5395a 6 125 183
+53960 8 126 183
+53968 8 127 183
+53970 8 128 183
+53978 e 129 183
+53986 6 135 183
+5398c 8 132 183
+53994 a 133 183
+5399e a 129 183
+FUNC 539a8 3c 0 std::ios_base::ios_base
+539a8 2 287 183
+539aa 4 287 183
+539ae 24 295 183
+539d2 2 296 183
+539d4 a 295 183
+539de 6 296 183
+FUNC 539e4 78 0 std::ios_base::_M_throw_failure()
+539e4 2 209 183
+539e6 4 227 183
+539ea 2 209 183
+539ec 4 227 183
+539f0 2 379 237
+539f2 4 112 238
+539f6 2 481 201
+539f8 2 227 183
+539fa 6 379 237
+53a00 c 106 243
+53a0c 2 227 183
+53a0e 4 107 243
+53a12 2 380 237
+53a14 4 101 205
+53a18 6 227 183
+53a1e 8 121 237
+53a26 10 227 183
+53a36 6 643 236
+53a3c a 227 183
+53a46 16 121 237
+FUNC 53a5c 2 0 _Locale_final
+53a5c 2 80 176
+FUNC 53a5c 2 0 std::_Locale_impl::_S_uninitialize()
+53a5c 2 113 186
+FUNC 53a5c 2 0 std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >::imbue(std::locale const&)
+FUNC 53a5c 2 0 std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >::setbuf(wchar_t*, int)
+53a5c 2 180 234
+FUNC 53a5c 2 0 std::messages<char>::do_close(int) const
+53a5c 2 82 219
+FUNC 53a5c 2 0 std::messages<wchar_t>::do_close(int) const
+FUNC 53a60 c 0 std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >::seekoff(long, int, int)
+53a60 a 89 246
+53a6a 2 195 234
+FUNC 53a6c 16 0 std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >::seekpos(std::fpos<mbstate_t>, int)
+53a6c 2 188 234
+53a6e 6 188 234
+53a74 a 89 246
+53a7e 4 189 234
+FUNC 53a84 6 0 std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >::overflow(unsigned int)
+53a84 6 171 234
+FUNC 53a84 6 0 std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >::pbackfail(unsigned int)
+FUNC 53a84 6 0 std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >::underflow()
+FUNC 53a84 6 0 std::messages<char>::do_open(std::string const&, std::locale const&) const
+53a84 6 110 219
+FUNC 53a84 6 0 std::messages<wchar_t>::do_open(std::string const&, std::locale const&) const
+FUNC 53a84 6 0 std::priv::stdio_ostreambuf::showmanyc()
+53a84 6 201 195
+FUNC 53a8c 5c 0 std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >::_M_xsputnc(wchar_t, int)
+53a8c 4 112 234
+53a90 4 117 234
+53a94 6 112 234
+53a9a 4 117 234
+53a9e 6 120 234
+53aa4 2 122 234
+53aa6 6 261 246
+53aac 2 123 234
+53aae 2 117 234
+53ab0 6 123 234
+53ab6 2 117 234
+53ab8 2 118 234
+53aba 2 120 234
+53abc 2 118 234
+53abe 2 261 246
+53ac0 4 120 234
+53ac4 2 118 234
+53ac6 2 261 246
+53ac8 4 120 234
+53acc 2 118 234
+53ace e 126 234
+53adc 2 128 234
+53ade 4 117 234
+53ae2 6 133 234
+FUNC 53ae8 62 0 std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >::xsputn(wchar_t const*, int)
+53ae8 4 84 234
+53aec 4 89 234
+53af0 6 84 234
+53af6 4 89 234
+53afa 6 92 234
+53b00 2 94 234
+53b02 2 253 246
+53b04 2 95 234
+53b06 4 253 246
+53b0a 2 96 234
+53b0c 2 89 234
+53b0e 2 95 234
+53b10 4 96 234
+53b14 2 89 234
+53b16 2 90 234
+53b18 4 92 234
+53b1c 2 90 234
+53b1e 2 253 246
+53b20 4 92 234
+53b24 2 90 234
+53b26 2 253 246
+53b28 4 92 234
+53b2c 2 90 234
+53b2e 6 99 234
+53b34 2 102 234
+53b36 8 99 234
+53b3e 2 101 234
+53b40 4 89 234
+53b44 6 108 234
+FUNC 53b4c 64 0 std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >::xsgetn(wchar_t*, int)
+53b4c 4 54 234
+53b50 4 58 234
+53b54 6 54 234
+53b5a 4 58 234
+53b5e 8 229 235
+53b66 4 69 234
+53b6a 2 71 234
+53b6c 4 70 234
+53b70 4 58 234
+53b74 2 59 234
+53b76 4 61 234
+53b7a 2 59 234
+53b7c 2 253 246
+53b7e 4 61 234
+53b82 2 59 234
+53b84 2 253 246
+53b86 4 61 234
+53b8a 2 59 234
+53b8c 6 61 234
+53b92 2 63 234
+53b94 2 253 246
+53b96 4 64 234
+53b9a 4 253 246
+53b9e 2 65 234
+53ba0 2 58 234
+53ba2 2 64 234
+53ba4 4 65 234
+53ba8 2 58 234
+53baa 6 80 234
+FUNC 53bb0 18 0 std::basic_ios<wchar_t, std::char_traits<wchar_t> >::~basic_ios
+53bb0 4 59 211
+53bb4 14 59 211
+FUNC 53bc8 1c 0 std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >::~basic_streambuf
+53bc8 2 41 234
+53bca 2 40 234
+53bcc 2 41 234
+53bce 2 40 234
+53bd0 14 41 234
+FUNC 53be4 12 0 std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >::~basic_streambuf
+53be4 2 40 234
+53be6 2 40 234
+53be8 4 41 234
+53bec 6 41 234
+53bf2 4 41 234
+FUNC 53bf8 1e 0 std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >::sync()
+53bf8 2 402 207
+53bfa 6 403 207
+53c00 2 406 207
+53c02 2 407 207
+53c04 c 405 207
+53c10 6 405 207
+FUNC 53c18 6a 0 std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >::_M_unshift()
+53c18 c 593 207
+53c24 4 322 208
+53c28 2 593 207
+53c2a 2 598 207
+53c2c 2 296 203
+53c2e 2 597 207
+53c30 a 296 203
+53c3a 2 597 207
+53c3c 8 296 203
+53c44 2 600 207
+53c46 2 322 208
+53c48 2 600 207
+53c4a 8 600 207
+53c52 2 605 207
+53c54 14 600 207
+53c68 4 603 207
+53c6c 4 322 208
+53c70 2 605 207
+53c72 4 596 207
+53c76 2 602 207
+53c78 6 611 207
+53c7e 4 604 207
+FUNC 53c84 58 0 std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >::showmanyc()
+53c84 2 132 207
+53c86 6 134 207
+53c8c 4 134 207
+53c90 6 135 207
+53c96 6 136 207
+53c9c 6 138 207
+53ca2 2 144 207
+53ca4 2 145 207
+53ca6 a 137 207
+53cb0 e 139 207
+53cbe 6 140 207
+53cc4 10 141 207
+53cd4 4 141 207
+53cd8 4 141 207
+FUNC 53cdc 18 0 std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >::uflow()
+53cdc 2 165 234
+53cde 2 162 234
+53ce0 2 162 234
+53ce2 8 165 234
+53cea 6 165 234
+53cf0 2 350 184
+53cf2 2 166 234
+FUNC 53cf4 8a 0 std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >::pbackfail(unsigned int)
+53cf4 2 157 207
+53cf6 2 157 207
+53cf8 6 161 207
+53cfe 4 162 207
+53d02 6 199 207
+53d08 2 88 235
+53d0a 2 87 235
+53d0c 4 166 207
+53d10 6 166 207
+53d16 8 166 207
+53d1e 4 166 207
+53d22 4 178 207
+53d26 4 177 207
+53d2a 2 178 207
+53d2c 8 180 207
+53d34 2 181 207
+53d36 2 95 235
+53d38 2 181 207
+53d3a 2 93 235
+53d3c 2 94 235
+53d3e 4 197 207
+53d42 10 91 235
+53d52 2 188 207
+53d54 4 189 207
+53d58 2 187 207
+53d5a 2 190 207
+53d5c 2 186 207
+53d5e 2 188 207
+53d60 2 93 235
+53d62 2 94 235
+53d64 2 95 235
+53d66 4 190 207
+53d6a 4 197 207
+53d6e 4 91 235
+53d72 4 197 207
+53d76 8 175 207
+FUNC 53d8c 2c 0 std::basic_istream<wchar_t, std::char_traits<wchar_t> >::~basic_istream
+53d8c 2 90 214
+53d8e 2 59 211
+53d90 2 90 214
+53d92 2 90 214
+53d94 2 90 214
+53d96 2 59 211
+53d98 2 90 214
+53d9a 2 59 211
+53d9c 2 90 214
+53d9e 8 59 211
+53da6 6 90 214
+53dac c 90 214
+FUNC 53dc4 28 0 std::basic_ostream<wchar_t, std::char_traits<wchar_t> >::~basic_ostream
+53dc4 2 44 228
+53dc6 2 59 211
+53dc8 2 43 228
+53dca 2 44 228
+53dcc 2 43 228
+53dce 2 59 211
+53dd0 2 44 228
+53dd2 2 59 211
+53dd4 2 44 228
+53dd6 8 59 211
+53dde e 44 228
+FUNC 53df8 12 0 std::basic_ostream<wchar_t, std::char_traits<wchar_t> >::~basic_ostream
+53df8 2 43 228
+53dfa 2 43 228
+53dfc 4 44 228
+53e00 6 44 228
+53e06 4 44 228
+FUNC 53e0c 20 0 std::basic_ios<wchar_t, std::char_traits<wchar_t> >::~basic_ios
+53e0c 4 59 211
+53e10 c 59 211
+53e1c 6 59 211
+53e22 a 59 211
+FUNC 53e38 28 0 std::basic_istream<wchar_t, std::char_traits<wchar_t> >::~basic_istream
+53e38 2 90 214
+53e3a 2 59 211
+53e3c 2 90 214
+53e3e 2 90 214
+53e40 2 90 214
+53e42 2 59 211
+53e44 2 90 214
+53e46 2 59 211
+53e48 2 90 214
+53e4a 8 59 211
+53e52 e 90 214
+FUNC 53e60 1e 0 std::auto_ptr<std::basic_filebuf<wchar_t, std::char_traits<wchar_t> > >::~auto_ptr
+53e60 2 107 202
+53e62 2 107 202
+53e64 2 68 202
+53e66 2 107 202
+53e68 6 107 202
+53e6e 4 107 202
+53e72 8 107 202
+53e7a 4 107 202
+FUNC 53e60 1e 0 std::auto_ptr<std::basic_streambuf<char, std::char_traits<char> > >::~auto_ptr
+FUNC 53e80 1e 0 std::basic_ios<char, std::char_traits<char> >::rdbuf(std::basic_streambuf<char, std::char_traits<char> >*)
+53e80 2 48 210
+53e82 2 49 210
+53e84 2 50 210
+53e86 2 92 211
+53e88 4 188 212
+53e8c 4 53 210
+53e90 2 192 212
+53e92 4 188 212
+53e96 4 192 212
+53e9a 4 193 212
+FUNC 53ea0 1e 0 std::basic_ios<wchar_t, std::char_traits<wchar_t> >::rdbuf(std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >*)
+53ea0 2 48 210
+53ea2 2 49 210
+53ea4 2 50 210
+53ea6 2 92 211
+53ea8 4 188 212
+53eac 4 53 210
+53eb0 2 192 212
+53eb2 4 188 212
+53eb6 4 192 212
+53eba 4 193 212
+FUNC 53ec0 22c 0 std::ios_base::_S_uninitialize()
+53ec0 4 248 184
+53ec4 2 190 212
+53ec6 2 248 184
+53ec8 2 256 184
+53eca 2 248 184
+53ecc e 256 184
+53eda 2 92 211
+53edc 2 190 212
+53ede 2 172 212
+53ee0 6 92 211
+53ee6 2 188 212
+53ee8 2 190 212
+53eea c 257 184
+53ef6 2 92 211
+53ef8 2 190 212
+53efa 2 172 212
+53efc 6 92 211
+53f02 2 188 212
+53f04 2 190 212
+53f06 c 258 184
+53f12 2 92 211
+53f14 2 190 212
+53f16 2 172 212
+53f18 6 92 211
+53f1e 2 188 212
+53f20 2 190 212
+53f22 c 259 184
+53f2e 2 92 211
+53f30 2 190 212
+53f32 2 172 212
+53f34 6 92 211
+53f3a 2 188 212
+53f3c e 261 184
+53f4a 6 261 184
+53f50 10 262 184
+53f60 6 262 184
+53f66 10 263 184
+53f76 6 263 184
+53f7c 10 264 184
+53f8c 6 264 184
+53f92 22 57 205
+53fb4 2 278 184
+53fb6 2 190 212
+53fb8 a 278 184
+53fc2 2 92 211
+53fc4 2 190 212
+53fc6 2 172 212
+53fc8 4 92 211
+53fcc 2 188 212
+53fce 2 190 212
+53fd0 c 279 184
+53fdc 2 92 211
+53fde 2 190 212
+53fe0 2 172 212
+53fe2 4 92 211
+53fe6 2 188 212
+53fe8 2 190 212
+53fea c 280 184
+53ff6 2 92 211
+53ff8 2 190 212
+53ffa 2 172 212
+53ffc 4 92 211
+54000 2 188 212
+54002 2 190 212
+54004 c 281 184
+54010 2 92 211
+54012 2 190 212
+54014 2 172 212
+54016 4 92 211
+5401a 2 188 212
+5401c e 283 184
+5402a 6 283 184
+54030 10 284 184
+54040 6 284 184
+54046 10 285 184
+54056 6 285 184
+5405c 10 286 184
+5406c 6 286 184
+54072 20 57 205
+54092 4 293 184
+54096 56 92 211
+FUNC 540ec 28 0 std::ios_base::Init::~Init
+540ec 4 151 184
+540f0 4 152 184
+540f4 2 151 184
+540f6 8 152 184
+540fe 6 153 184
+54104 6 154 184
+5410a a 156 184
+FUNC 54114 90 0 std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >::_M_setup_codecvt(std::locale const&, bool)
+54114 2 735 207
+54116 6 735 207
+5411c 2 347 218
+5411e 2 735 207
+54120 a 347 218
+5412a 4 736 207
+5412e 8 351 218
+54136 2 313 203
+54138 2 351 218
+5413a 2 737 207
+5413c 6 313 203
+54142 2 741 207
+54144 8 141 200
+5414c 2 740 207
+5414e 6 324 203
+54154 2 743 207
+54156 c 742 207
+54162 4 315 203
+54166 2 741 207
+54168 4 315 203
+5416c 6 743 207
+54172 2 747 207
+54174 2 746 207
+54176 4 747 207
+5417a 8 748 207
+54182 4 749 207
+54186 4 351 218
+5418a 4 754 207
+5418e 4 351 218
+54192 8 736 207
+5419a a 346 218
+FUNC 541a4 12 0 std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >::imbue(std::locale const&)
+541a4 6 414 207
+541aa 6 414 207
+541b0 2 415 207
+541b2 4 415 207
+FUNC 541b8 ac 0 std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >::basic_filebuf
+541b8 4 34 234
+541bc 2 47 207
+541be 2 34 234
+541c0 2 47 207
+541c2 4 34 234
+541c6 2 47 207
+541c8 14 34 234
+541dc 10 61 207
+541ec 8 61 207
+541f4 2 63 207
+541f6 38 61 207
+5422e e 63 207
+5423c 6 63 207
+54242 6 64 207
+54248 1c 63 207
+FUNC 54264 56 0 std::_Stl_create_wfilebuf
+54264 6 180 184
+5426a 2 181 184
+5426c 2 180 184
+5426e a 181 184
+54278 4 107 174
+5427c 6 194 208
+54282 2 28 202
+54284 4 194 208
+54288 2 68 202
+5428a 6 184 184
+54290 4 188 184
+54294 6 107 202
+5429a 4 187 184
+5429e a 181 184
+542a8 4 107 202
+542ac 4 107 202
+542b0 a 187 184
+FUNC 542bc 90 0 std::basic_filebuf<char, std::char_traits<char> >::_M_setup_codecvt(std::locale const&, bool)
+542bc 2 735 207
+542be 6 735 207
+542c4 2 347 218
+542c6 2 735 207
+542c8 a 347 218
+542d2 4 736 207
+542d6 8 351 218
+542de 2 216 203
+542e0 2 351 218
+542e2 2 737 207
+542e4 6 216 203
+542ea 2 741 207
+542ec 8 141 200
+542f4 2 740 207
+542f6 6 227 203
+542fc 2 743 207
+542fe c 742 207
+5430a 4 218 203
+5430e 2 741 207
+54310 4 218 203
+54314 6 743 207
+5431a 2 747 207
+5431c 2 746 207
+5431e 4 747 207
+54322 8 748 207
+5432a 4 749 207
+5432e 4 351 218
+54332 4 754 207
+54336 4 351 218
+5433a 8 736 207
+54342 a 346 218
+FUNC 5434c ac 0 std::basic_filebuf<char, std::char_traits<char> >::basic_filebuf
+5434c 4 34 234
+54350 2 47 207
+54352 2 34 234
+54354 2 47 207
+54356 4 34 234
+5435a 2 47 207
+5435c 14 34 234
+54370 10 61 207
+54380 8 61 207
+54388 2 63 207
+5438a 38 61 207
+543c2 e 63 207
+543d0 6 63 207
+543d6 6 64 207
+543dc 1c 63 207
+FUNC 543f8 5a 0 std::_Stl_create_filebuf<__sFILE*>
+543f8 2 168 184
+543fa 2 168 184
+543fc 2 169 184
+543fe 2 168 184
+54400 a 169 184
+5440a 4 107 174
+5440e a 194 208
+54418 6 172 184
+5441e 4 176 184
+54422 8 107 202
+5442a 2 175 184
+5442c 4 176 184
+54430 a 169 184
+5443a 4 107 202
+5443e 8 107 202
+54446 c 107 202
+FUNC 54454 40 0 std::basic_ostream<char, std::char_traits<char> >::basic_ostream
+54454 2 37 228
+54456 2 92 210
+54458 4 37 228
+5445c 6 92 210
+54462 2 38 228
+54464 2 92 210
+54466 2 39 228
+54468 2 38 228
+5446a 4 92 210
+5446e 4 38 228
+54472 2 92 210
+54474 2 38 228
+54476 2 92 210
+54478 4 38 228
+5447c 6 39 228
+54482 4 40 228
+54486 e 38 228
+FUNC 54494 90 0 std::basic_ios<wchar_t, std::char_traits<wchar_t> >::imbue(std::locale const&)
+54494 6 69 210
+5449a 4 69 210
+5449e 4 70 210
+544a2 4 72 210
+544a6 a 46 234
+544b0 a 47 234
+544ba 8 48 234
+544c2 8 73 210
+544ca a 351 218
+544d4 2 76 210
+544d6 6 83 210
+544dc 4 78 210
+544e0 a 79 210
+544ea e 79 210
+544f8 2 117 210
+544fa 2 187 212
+544fc 2 117 210
+544fe 6 187 212
+54504 2 117 210
+54506 a 78 210
+54510 c 82 210
+5451c 8 118 210
+FUNC 54524 5e 0 std::basic_ios<wchar_t, std::char_traits<wchar_t> >::init(std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >*)
+54524 4 97 210
+54528 4 97 210
+5452c 4 99 210
+54530 10 100 210
+54540 c 100 210
+5454c 2 68 211
+5454e 2 121 211
+54550 4 103 210
+54554 2 68 211
+54556 4 103 210
+5455a 4 206 206
+5455e 2 190 212
+54560 2 188 212
+54562 4 112 212
+54566 2 139 212
+54568 2 132 212
+5456a 2 112 212
+5456c 2 132 212
+5456e 4 206 206
+54572 2 84 211
+54574 4 110 210
+54578 a 100 210
+FUNC 54584 40 0 std::basic_ostream<wchar_t, std::char_traits<wchar_t> >::basic_ostream
+54584 2 37 228
+54586 2 92 210
+54588 4 37 228
+5458c 6 92 210
+54592 2 38 228
+54594 2 92 210
+54596 2 39 228
+54598 2 38 228
+5459a 2 92 210
+5459c 4 38 228
+545a0 2 92 210
+545a2 2 38 228
+545a4 2 92 210
+545a6 4 38 228
+545aa 6 39 228
+545b0 4 40 228
+545b4 10 38 228
+FUNC 545c4 388 0 std::ios_base::_S_initialize()
+545c4 6 191 184
+545ca 2 191 184
+545cc 6 28 202
+545d2 2 191 184
+545d4 4 28 202
+545d8 c 202 184
+545e4 6 203 184
+545ea 2 75 196
+545ec 2 203 184
+545ee a 75 196
+545f8 2 68 202
+545fa 4 75 196
+545fe 2 61 202
+54600 2 75 196
+54602 2 61 202
+54604 2 62 202
+54606 6 62 202
+5460c 2 207 184
+5460e 2 28 202
+54610 6 207 184
+54616 6 213 184
+5461c 4 87 196
+54620 2 213 184
+54622 6 87 196
+54628 2 68 202
+5462a 2 87 196
+5462c 2 61 202
+5462e 6 87 196
+54634 2 61 202
+54636 2 62 202
+54638 6 62 202
+5463e 2 214 184
+54640 2 28 202
+54642 4 214 184
+54646 4 87 196
+5464a 2 214 184
+5464c 4 87 196
+54650 2 68 202
+54652 6 87 196
+54658 4 61 202
+5465c 2 62 202
+5465e 6 62 202
+54664 2 215 184
+54666 2 28 202
+54668 4 215 184
+5466c 4 87 196
+54670 2 215 184
+54672 4 87 196
+54676 2 68 202
+54678 4 87 196
+5467c 4 61 202
+54680 2 62 202
+54682 6 62 202
+54688 2 92 210
+5468a 2 28 202
+5468c 2 68 202
+5468e a 92 210
+54698 2 87 214
+5469a 2 92 210
+5469c 4 88 214
+546a0 4 92 210
+546a4 2 87 214
+546a6 2 92 210
+546a8 4 87 214
+546ac 2 92 210
+546ae 2 87 214
+546b0 2 87 214
+546b2 2 87 214
+546b4 2 88 214
+546b6 2 87 214
+546b8 4 88 214
+546bc 4 55 202
+546c0 e 225 184
+546ce 4 55 202
+546d2 c 226 184
+546de 4 55 202
+546e2 a 227 184
+546ec 2 229 184
+546ee 2 55 202
+546f0 2 228 184
+546f2 2 232 184
+546f4 2 55 202
+546f6 2 232 184
+546f8 4 229 184
+546fc 4 68 211
+54700 2 229 184
+54702 2 68 211
+54704 2 118 212
+54706 4 68 211
+5470a 6 118 212
+54710 4 232 184
+54714 4 233 184
+54718 2 28 202
+5471a 8 233 184
+54722 4 234 184
+54726 2 28 202
+54728 8 234 184
+54730 2 235 184
+54732 2 28 202
+54734 8 235 184
+5473c 2 92 210
+5473e 2 28 202
+54740 2 68 202
+54742 a 92 210
+5474c 2 87 214
+5474e 2 92 210
+54750 4 88 214
+54754 2 92 210
+54756 2 87 214
+54758 2 92 210
+5475a 4 87 214
+5475e 2 92 210
+54760 2 87 214
+54762 2 87 214
+54764 2 87 214
+54766 2 88 214
+54768 2 87 214
+5476a 4 88 214
+5476e 4 55 202
+54772 c 239 184
+5477e 4 55 202
+54782 c 240 184
+5478e 4 55 202
+54792 a 241 184
+5479c 2 244 184
+5479e 2 243 184
+547a0 2 68 202
+547a2 4 244 184
+547a6 4 68 211
+547aa 2 244 184
+547ac 2 55 202
+547ae 2 68 211
+547b0 2 55 202
+547b2 2 118 212
+547b4 2 68 211
+547b6 6 118 212
+547bc 2 107 202
+547be 6 107 202
+547c4 2 68 202
+547c6 2 107 202
+547c8 6 107 202
+547ce 2 68 202
+547d0 2 107 202
+547d2 6 107 202
+547d8 2 68 202
+547da 2 107 202
+547dc 6 107 202
+547e2 2 68 202
+547e4 2 107 202
+547e6 6 107 202
+547ec 2 68 202
+547ee 2 107 202
+547f0 6 107 202
+547f6 2 68 202
+547f8 2 107 202
+547fa 6 107 202
+54800 6 246 184
+54806 c 219 184
+54812 2 68 202
+54814 4 61 202
+54818 2 62 202
+5481a 6 62 202
+54820 6 220 184
+54826 2 28 202
+54828 6 220 184
+5482e 2 68 202
+54830 4 61 202
+54834 2 62 202
+54836 6 62 202
+5483c 6 221 184
+54842 2 28 202
+54844 6 221 184
+5484a 2 68 202
+5484c 6 61 202
+54852 6 62 202
+54858 8 62 202
+54860 e 205 184
+5486e 2 68 202
+54870 6 61 202
+54876 6 62 202
+5487c 8 62 202
+54884 4 246 184
+54888 6 244 184
+5488e 10 107 202
+5489e 8 87 214
+548a6 1a 244 184
+548c0 c 215 184
+548cc 16 203 184
+548e2 12 244 184
+548f4 8 87 214
+548fc 50 244 184
+FUNC 5494c 2c 0 std::ios_base::Init::Init
+5494c 4 143 184
+54950 4 144 184
+54954 2 143 184
+54956 8 144 184
+5495e 6 145 184
+54964 4 146 184
+54968 6 147 184
+5496e a 149 184
+FUNC 54978 20 0 std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >::_M_exit_input_mode()
+54978 2 119 207
+5497a 2 118 207
+5497c 2 118 207
+5497e 2 119 207
+54980 a 120 207
+5498a 4 121 207
+5498e 2 122 207
+54990 6 124 207
+54996 2 125 207
+FUNC 54998 9e 0 std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >::close()
+54998 2 81 207
+5499a 2 81 207
+5499c 4 130 208
+549a0 4 84 207
+549a4 6 130 208
+549aa 4 84 207
+549ae 4 85 207
+549b2 2 87 207
+549b4 8 93 207
+549bc 6 97 207
+549c2 4 98 207
+549c6 2 100 207
+549c8 2 101 207
+549ca 2 93 235
+549cc 2 94 235
+549ce 2 95 235
+549d0 2 117 235
+549d2 2 118 235
+549d4 2 119 235
+549d6 6 106 207
+549dc 10 108 207
+549ec 6 93 207
+549f2 8 111 207
+549fa 2 112 207
+549fc 8 89 207
+54a04 6 90 207
+54a0a e 85 207
+54a18 8 594 207
+54a20 e 594 207
+54a2e 8 87 207
+FUNC 54a38 48 0 std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >::~basic_filebuf
+54a38 2 70 207
+54a3a 2 67 207
+54a3c 6 70 207
+54a42 2 67 207
+54a44 4 68 207
+54a48 6 686 207
+54a4e 6 688 207
+54a54 2 689 207
+54a56 2 69 207
+54a58 2 689 207
+54a5a 2 690 207
+54a5c 2 691 207
+54a5e 2 692 207
+54a60 4 69 207
+54a64 4 70 207
+54a68 8 687 207
+54a70 10 69 207
+FUNC 54a80 12 0 std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >::~basic_filebuf
+54a80 2 67 207
+54a82 2 67 207
+54a84 4 70 207
+54a88 6 70 207
+54a8e 4 70 207
+FUNC 54a94 74 0 std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >::_M_allocate_buffers(wchar_t*, int)
+54a94 2 630 207
+54a96 4 630 207
+54a9a 4 637 207
+54a9e 2 651 207
+54aa0 2 650 207
+54aa2 4 651 207
+54aa6 4 655 207
+54aaa 2 324 203
+54aac 4 655 207
+54ab0 4 324 203
+54ab4 e 661 207
+54ac2 2 664 207
+54ac4 2 670 207
+54ac6 2 669 207
+54ac8 2 671 207
+54aca 2 670 207
+54acc 6 669 207
+54ad2 2 672 207
+54ad4 6 686 207
+54ada 8 687 207
+54ae2 4 688 207
+54ae6 4 689 207
+54aea 2 666 207
+54aec 2 690 207
+54aee 2 691 207
+54af0 2 692 207
+54af2 2 666 207
+54af4 2 638 207
+54af6 6 644 207
+54afc 4 645 207
+54b00 8 647 207
+FUNC 54b08 2c 0 std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >::_M_allocate_buffers()
+54b08 2 676 207
+54b0a 4 676 207
+54b0e 6 128 208
+54b14 c 680 207
+54b20 2 681 207
+54b22 4 680 207
+54b26 2 681 207
+54b28 4 682 207
+54b2c 8 681 207
+FUNC 54b34 52 0 std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >::_M_switch_to_output_mode()
+54b34 2 452 207
+54b36 2 452 207
+54b38 6 453 207
+54b3e 2 129 208
+54b40 6 453 207
+54b46 6 453 207
+54b4c 6 453 207
+54b52 4 456 207
+54b56 4 462 207
+54b5a 4 463 207
+54b5e 2 466 207
+54b60 2 465 207
+54b62 2 117 235
+54b64 2 465 207
+54b66 2 467 207
+54b68 2 118 235
+54b6a 2 119 235
+54b6c 4 466 207
+54b70 2 467 207
+54b72 2 470 207
+54b74 2 471 207
+54b76 10 456 207
+FUNC 54b88 11c 0 std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >::overflow(unsigned int)
+54b88 6 208 207
+54b8e 4 210 207
+54b92 4 208 207
+54b96 4 210 207
+54b9a 2 214 207
+54b9c 2 112 235
+54b9e 2 219 207
+54ba0 2 216 207
+54ba2 2 117 235
+54ba4 2 216 207
+54ba6 2 118 235
+54ba8 2 219 207
+54baa 2 119 235
+54bac 6 220 207
+54bb2 4 223 207
+54bb6 16 322 208
+54bcc 8 240 207
+54bd4 a 240 207
+54bde 4 322 208
+54be2 4 246 207
+54be6 a 247 207
+54bf0 4 223 207
+54bf4 2 228 207
+54bf6 2 290 203
+54bf8 4 225 207
+54bfc 12 290 203
+54c0e 2 224 207
+54c10 4 225 207
+54c14 6 290 203
+54c1a 2 229 207
+54c1c 2 322 208
+54c1e 2 229 207
+54c20 4 240 207
+54c24 6 240 207
+54c2a 14 240 207
+54c3e 8 240 207
+54c46 2 580 207
+54c48 4 252 207
+54c4c 4 580 207
+54c50 2 252 207
+54c52 2 582 207
+54c54 4 581 207
+54c58 4 582 207
+54c5c 2 117 235
+54c5e 2 118 235
+54c60 2 119 235
+54c62 8 256 207
+54c6a 8 211 207
+54c72 8 212 207
+54c7a e 182 246
+54c88 4 249 207
+54c8c 4 580 207
+54c90 2 249 207
+54c92 2 582 207
+54c94 4 581 207
+54c98 4 582 207
+54c9c 2 117 235
+54c9e 2 118 235
+54ca0 2 119 235
+54ca2 2 249 207
+FUNC 54ca4 52 0 std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >::setbuf(wchar_t*, int)
+54ca4 2 268 207
+54ca6 2 268 207
+54ca8 6 269 207
+54cae 4 269 207
+54cb2 4 269 207
+54cb6 4 277 207
+54cba 14 271 207
+54cce 14 273 207
+54ce2 8 274 207
+54cea c 272 207
+FUNC 54cf8 86 0 std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >::_M_seek_init(bool)
+54cf8 2 700 207
+54cfa 2 702 207
+54cfc 4 706 207
+54d00 4 700 207
+54d04 4 702 207
+54d08 2 706 207
+54d0a 6 720 207
+54d10 6 720 207
+54d16 2 93 235
+54d18 2 723 207
+54d1a 4 220 208
+54d1e 2 93 235
+54d20 2 221 208
+54d22 2 94 235
+54d24 2 95 235
+54d26 6 221 208
+54d2c 2 723 207
+54d2e 2 724 207
+54d30 4 723 207
+54d34 10 708 207
+54d44 2 709 207
+54d46 2 710 207
+54d48 8 594 207
+54d50 e 594 207
+54d5e 4 710 207
+54d62 2 712 207
+54d64 2 713 207
+54d66 4 712 207
+54d6a 2 715 207
+54d6c 4 713 207
+54d70 2 117 235
+54d72 2 118 235
+54d74 2 119 235
+54d76 2 715 207
+54d78 6 711 207
+FUNC 54d80 84 0 std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >::seekpos(std::fpos<mbstate_t>, int)
+54d80 4 384 207
+54d84 4 384 207
+54d88 4 386 207
+54d8c 6 384 207
+54d92 2 386 207
+54d94 a 89 246
+54d9e 6 398 207
+54da4 a 387 207
+54dae 2 92 246
+54db0 4 391 207
+54db4 10 391 207
+54dc4 2 120 246
+54dc6 4 240 208
+54dca 2 392 207
+54dcc 2 240 208
+54dce 2 242 208
+54dd0 2 89 246
+54dd2 4 242 208
+54dd6 4 243 208
+54dda 4 244 208
+54dde 4 245 208
+54de2 2 93 235
+54de4 2 94 235
+54de6 2 95 235
+54de8 2 117 235
+54dea 2 118 235
+54dec 2 119 235
+54dee 4 121 246
+54df2 a 89 246
+54dfc 8 241 208
+FUNC 54e04 1b4 0 std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >::seekoff(long, int, int)
+54e04 6 291 207
+54e0a 4 294 207
+54e0e 2 291 207
+54e10 6 291 207
+54e16 4 294 207
+54e1a 16 297 207
+54e30 a 89 246
+54e3a 8 379 207
+54e42 10 300 207
+54e52 14 304 207
+54e66 6 310 207
+54e6c 6 314 207
+54e72 2 317 207
+54e74 4 321 207
+54e78 8 317 207
+54e80 4 321 207
+54e84 8 336 207
+54e8c 2 89 246
+54e8e 2 336 207
+54e90 18 89 246
+54ea8 10 312 207
+54eb8 2 239 208
+54eba 2 312 207
+54ebc 2 239 208
+54ebe 8 240 208
+54ec6 6 242 208
+54ecc 4 243 208
+54ed0 4 244 208
+54ed4 4 245 208
+54ed8 2 93 235
+54eda 2 94 235
+54edc 2 95 235
+54ede 2 117 235
+54ee0 2 118 235
+54ee2 2 119 235
+54ee4 8 89 246
+54eec a 324 207
+54ef6 8 325 207
+54efe 4 332 207
+54f02 2 325 207
+54f04 2 332 207
+54f06 4 325 207
+54f0a 4 332 207
+54f0e 2 333 207
+54f10 4 336 207
+54f14 2 87 208
+54f16 4 336 207
+54f1a a 336 207
+54f24 6 239 208
+54f2a 8 241 208
+54f32 2 346 207
+54f34 2 344 207
+54f36 4 341 207
+54f3a 4 344 207
+54f3e 2 321 203
+54f40 4 341 207
+54f44 2 321 203
+54f46 4 344 207
+54f4a 4 341 207
+54f4e a 321 203
+54f58 4 370 207
+54f5c 2 321 203
+54f5e 8 370 207
+54f66 4 372 207
+54f6a 6 373 207
+54f70 2 87 208
+54f72 2 372 207
+54f74 6 373 207
+54f7a 2 375 207
+54f7c 8 89 246
+54f84 4 240 208
+54f88 2 89 246
+54f8a 2 240 208
+54f8c 2 242 208
+54f8e 2 89 246
+54f90 4 242 208
+54f94 4 243 208
+54f98 4 244 208
+54f9c 4 245 208
+54fa0 2 93 235
+54fa2 2 94 235
+54fa4 2 95 235
+54fa6 2 117 235
+54fa8 2 118 235
+54faa 2 119 235
+54fac 4 121 246
+54fb0 8 241 208
+FUNC 54fb8 112 0 std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >::_M_underflow_aux()
+54fb8 2 498 207
+54fba 6 495 207
+54fc0 2 502 207
+54fc2 2 495 207
+54fc4 2 502 207
+54fc6 2 498 207
+54fc8 2 504 207
+54fca 8 502 207
+54fd2 2 509 207
+54fd4 2 502 207
+54fd6 8 224 200
+54fde 2 504 207
+54fe0 4 537 207
+54fe4 8 310 203
+54fec c 515 207
+54ff8 2 516 207
+54ffa 2 515 207
+54ffc 2 516 207
+54ffe 2 522 207
+55000 2 525 207
+55002 4 522 207
+55006 4 525 207
+5500a 2 537 207
+5500c 18 310 203
+55024 4 547 207
+55028 4 549 207
+5502c 8 549 207
+55034 8 549 207
+5503c 8 549 207
+55044 4 549 207
+55048 4 555 207
+5504c 2 350 184
+5504e 2 93 235
+55050 2 94 235
+55052 2 95 235
+55054 6 568 207
+5505a 14 549 207
+5506e 6 486 207
+55074 2 487 207
+55076 2 488 207
+55078 4 487 207
+5507c 4 488 207
+55080 4 553 207
+55084 2 93 235
+55086 2 94 235
+55088 2 95 235
+5508a 2 553 207
+5508c 6 549 207
+55092 6 549 207
+55098 6 563 207
+5509e 2 93 235
+550a0 4 565 207
+550a4 2 94 235
+550a6 2 95 235
+550a8 2 565 207
+550aa c 224 200
+550b6 2 93 235
+550b8 4 527 207
+550bc 2 93 235
+550be 2 94 235
+550c0 2 95 235
+550c2 2 527 207
+550c4 6 548 207
+FUNC 550cc 76 0 std::basic_filebuf<wchar_t, std::char_traits<wchar_t> >::underflow()
+550cc 2 75 207
+550ce 2 75 207
+550d0 6 408 208
+550d6 8 430 207
+550de 6 430 207
+550e4 6 430 207
+550ea 6 432 207
+550f0 2 435 207
+550f2 2 440 207
+550f4 2 438 207
+550f6 4 440 207
+550fa 2 435 207
+550fc 2 436 207
+550fe 2 438 207
+55100 2 420 208
+55102 4 77 207
+55106 4 420 208
+5510a 8 412 208
+55112 2 93 235
+55114 4 220 208
+55118 2 93 235
+5511a 2 221 208
+5511c 2 414 208
+5511e 2 94 235
+55120 2 95 235
+55122 4 221 208
+55126 2 414 208
+55128 4 350 184
+5512c 6 410 208
+55132 a 432 207
+5513c 4 410 208
+55140 2 77 207
+FUNC 55144 1c 0 std::locale::facet::~facet
+55144 4 43 185
+55148 c 43 185
+55154 4 342 240
+55158 8 43 185
+FUNC 55160 12 0 std::locale::facet::~facet
+55160 2 43 185
+55162 6 43 185
+55168 6 43 185
+5516e 4 43 185
+FUNC 55174 20 0 std::locale::locale
+55174 2 119 185
+55176 2 119 185
+55178 4 120 185
+5517c 6 120 185
+55182 2 120 185
+55184 4 121 185
+55188 8 121 185
+55190 4 119 185
+FUNC 55194 1c 0 std::locale::locale
+55194 2 124 185
+55196 2 124 185
+55198 6 125 185
+5519e 2 125 185
+551a0 4 126 185
+551a4 8 126 185
+551ac 4 124 185
+FUNC 551b0 10 0 std::locale::locale
+551b0 2 133 185
+551b2 2 133 185
+551b4 8 134 185
+551bc 4 135 185
+FUNC 551c0 1c 0 std::locale::~locale
+551c0 2 363 185
+551c2 2 362 185
+551c4 2 362 185
+551c6 2 363 185
+551c8 4 364 185
+551cc 4 365 185
+551d0 8 365 185
+551d8 4 362 185
+FUNC 551dc 2e 0 std::locale::operator=(std::locale const&)
+551dc 2 369 185
+551de 2 369 185
+551e0 2 370 185
+551e2 2 369 185
+551e4 6 370 185
+551ea 2 371 185
+551ec 8 372 185
+551f4 4 373 185
+551f8 2 373 185
+551fa 4 376 185
+551fe 8 375 185
+55206 4 369 185
+FUNC 5520c 18 0 std::locale::_M_get_facet(std::locale::id const&) const
+5520c 4 379 185
+55210 6 192 245
+55216 4 379 185
+5521a 6 379 185
+55220 2 379 185
+55222 2 380 185
+FUNC 55224 1e 0 std::locale::_M_use_facet(std::locale::id const&) const
+55224 2 382 185
+55226 4 383 185
+5522a 6 192 245
+55230 6 383 185
+55236 4 383 185
+5523a 2 384 185
+5523c 2 387 185
+5523e 4 385 185
+FUNC 55244 10 0 std::locale::name() const
+55244 2 390 185
+55246 2 389 185
+55248 2 390 185
+5524a 2 389 185
+5524c 4 390 185
+55250 4 391 185
+FUNC 55254 ce 0 std::locale::operator==(std::locale const&) const
+55254 4 396 185
+55258 2 394 185
+5525a 2 396 185
+5525c 2 394 185
+5525e 4 394 185
+55262 2 396 185
+55264 a 396 185
+5526e a 396 185
+55278 4 65 238
+5527c 8 400 237
+55284 4 289 239
+55288 2 396 185
+5528a 2 64 238
+5528c 4 96 238
+55290 2 96 238
+55292 4 97 238
+55296 4 161 201
+5529a 4 161 201
+5529e 2 64 238
+552a0 4 96 238
+552a4 2 96 238
+552a6 4 97 238
+552aa 4 161 201
+552ae 6 161 201
+552b4 2 396 185
+552b6 6 397 185
+552bc 4 226 246
+552c0 4 289 239
+552c4 a 396 185
+552ce 2 65 238
+552d0 2 396 185
+552d2 4 400 237
+552d6 4 324 239
+552da 4 96 238
+552de 4 96 238
+552e2 4 97 238
+552e6 4 161 201
+552ea 6 161 201
+552f0 12 135 222
+55302 a 394 185
+5530c 16 156 238
+FUNC 55324 e 0 std::locale::operator!=(std::locale const&) const
+55324 2 399 185
+55326 8 400 185
+5532e 2 400 185
+55330 2 401 185
+FUNC 55334 6 0 std::time_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_date_order() const
+55334 4 168 242
+55338 2 168 242
+FUNC 5533c 6 0 std::time_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::do_date_order() const
+5533c 4 168 242
+55340 2 168 242
+FUNC 55344 18 0 std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::~num_put
+55344 4 107 226
+55348 14 107 226
+FUNC 5535c 18 0 std::num_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::~num_get
+5535c 4 126 224
+55360 14 126 224
+FUNC 55374 18 0 std::num_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::~num_get
+55374 4 126 224
+55378 14 126 224
+FUNC 5538c 18 0 std::num_put<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::~num_put
+5538c 4 107 226
+55390 14 107 226
+FUNC 553a4 18 0 std::money_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::~money_get
+553a4 4 73 221
+553a8 14 73 221
+FUNC 553bc 18 0 std::money_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::~money_put
+553bc 4 406 221
+553c0 14 406 221
+FUNC 553d4 18 0 std::money_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::~money_get
+553d4 4 73 221
+553d8 14 73 221
+FUNC 553ec 18 0 std::money_put<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::~money_put
+553ec 4 406 221
+553f0 14 406 221
+FUNC 55404 e 0 std::_Refcount_Base::~_Refcount_Base
+55404 2 441 240
+55406 2 441 240
+55408 6 342 240
+5540e 4 441 240
+FUNC 55414 10a 0 std::priv::__write_integer_backward<long int>
+55414 4 304 225
+55418 6 314 225
+5541e 6 304 225
+55424 6 314 225
+5542a 2 278 225
+5542c 4 279 225
+55430 2 278 225
+55432 2 279 225
+55434 8 281 225
+5543c c 282 225
+55448 6 281 225
+5544e 6 282 225
+55454 2 281 225
+55456 4 282 225
+5545a 8 281 225
+55462 6 281 225
+55468 6 284 225
+5546e 6 286 225
+55474 8 287 225
+5547c 6 368 225
+55482 4 322 225
+55486 8 322 225
+5548e 8 323 225
+55496 4 322 225
+5549a 4 322 225
+5549e 4 323 225
+554a2 2 322 225
+554a4 6 326 225
+554aa 8 327 225
+554b2 6 368 225
+554b8 6 333 225
+554be 4 333 225
+554c2 8 339 225
+554ca 2 339 225
+554cc 4 340 225
+554d0 6 339 225
+554d6 4 340 225
+554da 4 339 225
+554de 4 339 225
+554e2 4 340 225
+554e6 2 339 225
+554e8 6 342 225
+554ee 2 343 225
+554f0 6 344 225
+554f6 4 343 225
+554fa 2 344 225
+554fc 6 368 225
+55502 6 333 225
+55508 8 279 225
+55510 8 285 225
+55518 6 368 225
+FUNC 55520 de 0 std::priv::__write_integer_backward<long unsigned int>
+55520 6 314 225
+55526 4 304 225
+5552a 6 304 225
+55530 6 314 225
+55536 4 295 225
+5553a 2 344 225
+5553c 4 295 225
+55540 2 294 225
+55542 10 295 225
+55552 2 294 225
+55554 8 295 225
+5555c 4 294 225
+55560 6 297 225
+55566 8 298 225
+5556e 6 368 225
+55574 8 322 225
+5557c 8 322 225
+55584 8 323 225
+5558c 4 322 225
+55590 4 322 225
+55594 4 323 225
+55598 2 322 225
+5559a 6 326 225
+555a0 8 327 225
+555a8 6 368 225
+555ae 6 333 225
+555b4 4 333 225
+555b8 8 339 225
+555c0 4 340 225
+555c4 8 339 225
+555cc 4 340 225
+555d0 4 339 225
+555d4 4 340 225
+555d8 6 339 225
+555de 6 342 225
+555e4 2 343 225
+555e6 6 344 225
+555ec 4 343 225
+555f0 2 344 225
+555f2 6 368 225
+555f8 6 333 225
+FUNC 55600 10c 0 std::priv::__write_integer_backward<long long int>
+55600 4 304 225
+55604 2 304 225
+55606 4 314 225
+5560a 2 304 225
+5560c 2 314 225
+5560e 4 304 225
+55612 6 314 225
+55618 6 279 225
+5561e 8 281 225
+55626 c 282 225
+55632 6 281 225
+55638 6 282 225
+5563e 2 281 225
+55640 4 282 225
+55644 8 281 225
+5564c 6 281 225
+55652 6 284 225
+55658 6 286 225
+5565e 8 287 225
+55666 6 368 225
+5566c 8 322 225
+55674 8 322 225
+5567c 8 323 225
+55684 4 322 225
+55688 4 322 225
+5568c 4 323 225
+55690 2 322 225
+55692 6 326 225
+55698 8 327 225
+556a0 6 368 225
+556a6 6 333 225
+556ac 4 333 225
+556b0 8 339 225
+556b8 2 339 225
+556ba 4 340 225
+556be 6 339 225
+556c4 4 340 225
+556c8 4 339 225
+556cc 4 339 225
+556d0 4 340 225
+556d4 2 339 225
+556d6 6 342 225
+556dc 2 343 225
+556de 6 344 225
+556e4 4 343 225
+556e8 2 344 225
+556ea 6 368 225
+556f0 6 333 225
+556f6 8 279 225
+556fe 8 285 225
+55706 6 368 225
+FUNC 5570c ee 0 std::priv::__write_integer_backward<long long unsigned int>
+5570c 4 304 225
+55710 2 304 225
+55712 4 314 225
+55716 2 304 225
+55718 2 314 225
+5571a 4 304 225
+5571e 6 314 225
+55724 4 294 225
+55728 4 344 225
+5572c 2 294 225
+5572e c 295 225
+5573a 6 294 225
+55740 6 295 225
+55746 2 294 225
+55748 4 295 225
+5574c 8 294 225
+55754 6 294 225
+5575a 6 297 225
+55760 8 298 225
+55768 6 368 225
+5576e 4 322 225
+55772 4 294 225
+55776 2 322 225
+55778 8 322 225
+55780 8 323 225
+55788 4 322 225
+5578c 4 322 225
+55790 4 323 225
+55794 2 322 225
+55796 6 326 225
+5579c 8 327 225
+557a4 6 368 225
+557aa 6 333 225
+557b0 4 333 225
+557b4 8 339 225
+557bc 2 339 225
+557be 4 340 225
+557c2 6 339 225
+557c8 4 340 225
+557cc 4 339 225
+557d0 4 339 225
+557d4 4 340 225
+557d8 2 339 225
+557da 6 342 225
+557e0 2 343 225
+557e2 6 344 225
+557e8 4 343 225
+557ec 2 344 225
+557ee 6 368 225
+557f4 6 333 225
+FUNC 557fc 20 0 std::money_put<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::~money_put
+557fc 4 406 221
+55800 c 406 221
+5580c 6 406 221
+55812 a 406 221
+FUNC 5581c 20 0 std::money_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::~money_get
+5581c 4 73 221
+55820 c 73 221
+5582c 6 73 221
+55832 a 73 221
+FUNC 5583c 20 0 std::money_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::~money_put
+5583c 4 406 221
+55840 c 406 221
+5584c 6 406 221
+55852 a 406 221
+FUNC 5585c 20 0 std::money_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::~money_get
+5585c 4 73 221
+55860 c 73 221
+5586c 6 73 221
+55872 a 73 221
+FUNC 5587c 20 0 std::num_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::~num_get
+5587c 4 126 224
+55880 c 126 224
+5588c 6 126 224
+55892 a 126 224
+FUNC 5589c 20 0 std::num_put<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::~num_put
+5589c 4 107 226
+558a0 c 107 226
+558ac 6 107 226
+558b2 a 107 226
+FUNC 558bc 20 0 std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::~num_put
+558bc 4 107 226
+558c0 c 107 226
+558cc 6 107 226
+558d2 a 107 226
+FUNC 558dc 20 0 std::num_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::~num_get
+558dc 4 126 224
+558e0 c 126 224
+558ec 6 126 224
+558f2 a 126 224
+FUNC 558fc 6a 0 std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >::operator++(int)
+558fc 2 144 215
+558fe 2 144 215
+55900 2 90 215
+55902 2 144 215
+55904 8 90 215
+5590c 4 148 215
+55910 2 229 235
+55912 4 148 215
+55916 2 229 235
+55918 2 229 235
+5591a 2 152 215
+5591c 2 229 235
+5591e 4 150 215
+55922 2 152 215
+55924 8 229 235
+5592c 2 150 215
+5592e 2 152 215
+55930 2 150 215
+55932 2 152 215
+55934 2 92 215
+55936 6 235 235
+5593c 4 764 186
+55940 2 235 235
+55942 4 191 246
+55946 2 93 215
+55948 8 191 246
+55950 6 95 215
+55956 10 235 235
+FUNC 55968 66 0 std::istreambuf_iterator<char, std::char_traits<char> >::operator++(int)
+55968 2 90 215
+5596a 2 144 215
+5596c 4 144 215
+55970 4 90 215
+55974 4 229 235
+55978 4 148 215
+5597c 2 229 235
+5597e 4 148 215
+55982 2 229 235
+55984 2 229 235
+55986 2 152 215
+55988 2 229 235
+5598a 4 150 215
+5598e 2 152 215
+55990 8 229 235
+55998 2 150 215
+5599a 2 152 215
+5599c 2 150 215
+5599e 2 152 215
+559a0 2 92 215
+559a2 6 235 235
+559a8 4 223 246
+559ac 2 235 235
+559ae 4 191 246
+559b2 2 220 246
+559b4 8 191 246
+559bc 6 95 215
+559c2 c 235 235
+FUNC 559d0 30 0 std::_release_facet
+559d0 2 44 186
+559d2 2 44 186
+559d4 4 45 186
+559d8 a 347 240
+559e2 2 475 240
+559e4 2 349 240
+559e6 4 475 240
+559ea 4 349 240
+559ee 2 45 186
+559f0 4 46 186
+559f4 6 46 186
+559fa 6 47 186
+FUNC 55a00 74 0 std::_Locale_impl::Init::_M_count() const
+55a00 2 70 186
+55a02 2 69 186
+55a04 a 70 186
+55a0e 4 71 186
+55a12 2 72 186
+55a14 8 70 186
+55a1c 2 457 240
+55a1e 2 340 240
+55a20 6 457 240
+55a26 4 340 240
+55a2a 4 70 186
+55a2e 1a 70 186
+55a48 4 70 186
+55a4c 28 70 186
+FUNC 55a74 28 0 std::_Locale_impl::Init::~Init
+55a74 2 63 186
+55a76 2 63 186
+55a78 4 64 186
+55a7c 2 347 240
+55a7e 2 64 186
+55a80 6 347 240
+55a86 2 475 240
+55a88 2 349 240
+55a8a 4 475 240
+55a8e 4 349 240
+55a92 2 64 186
+55a94 4 65 186
+55a98 4 67 186
+FUNC 55a9c 28 0 std::_Locale_impl::_M_throw_bad_cast()
+55a9c 2 116 186
+55a9e 26 117 186
+FUNC 55ac4 1c 0 std::_get_Locale_impl(std::_Locale_impl*)
+55ac4 2 696 186
+55ac6 2 347 240
+55ac8 2 696 186
+55aca 6 347 240
+55ad0 2 471 240
+55ad2 2 349 240
+55ad4 4 471 240
+55ad8 4 349 240
+55adc 4 700 186
+FUNC 55ae0 c 0 std::priv::_GetFacetId(std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > > const*)
+55ae0 4 745 186
+55ae4 8 745 186
+FUNC 55aec 24 0 std::vector<std::locale::facet*, std::allocator<std::locale::facet*> >::~vector
+55aec 2 304 245
+55aee 2 304 245
+55af0 4 87 245
+55af4 4 88 245
+55af8 4 323 201
+55afc 4 161 201
+55b00 4 161 201
+55b04 4 304 245
+55b08 4 135 222
+55b0c 4 304 245
+FUNC 55b10 c4 0 std::vector<std::locale::facet*, std::allocator<std::locale::facet*> >::reserve(unsigned int)
+55b10 6 62 244
+55b16 4 199 245
+55b1a 2 62 244
+55b1c 6 199 245
+55b22 6 63 244
+55b28 6 64 244
+55b2e c 192 245
+55b3a 6 70 244
+55b40 2 346 201
+55b42 2 356 201
+55b44 2 346 201
+55b46 4 347 201
+55b4a 4 158 201
+55b4e 8 158 201
+55b56 2 352 201
+55b58 6 158 201
+55b5e 4 107 243
+55b62 a 106 243
+55b6c 4 657 245
+55b70 2 319 201
+55b72 2 657 245
+55b74 4 323 201
+55b78 4 161 201
+55b7c 4 161 201
+55b80 4 76 244
+55b84 2 668 245
+55b86 4 667 245
+55b8a 6 78 244
+55b90 6 135 222
+55b96 8 134 222
+55b9e 2 346 201
+55ba0 2 356 201
+55ba2 4 346 201
+55ba6 4 347 201
+55baa 4 158 201
+55bae 8 158 201
+55bb6 2 352 201
+55bb8 8 158 201
+55bc0 8 134 222
+55bc8 c 41 244
+FUNC 55bd4 56 0 std::priv::_Time_Info_Base::~_Time_Info_Base
+55bd4 2 63 242
+55bd6 2 63 242
+55bd8 4 121 237
+55bdc 4 156 238
+55be0 4 121 237
+55be4 4 156 238
+55be8 4 121 237
+55bec 4 156 238
+55bf0 4 121 237
+55bf4 a 156 238
+55bfe 4 63 242
+55c02 4 121 237
+55c06 4 156 238
+55c0a 4 121 237
+55c0e 4 156 238
+55c12 4 121 237
+55c16 14 156 238
+FUNC 55c2c 74 0 std::_Locale_impl::~_Locale_impl
+55c2c 2 93 186
+55c2e 2 92 186
+55c30 2 93 186
+55c32 2 92 186
+55c34 6 93 186
+55c3a 2 182 245
+55c3c 2 184 245
+55c3e 4 60 198
+55c42 6 61 198
+55c48 2 60 198
+55c4a 6 60 198
+55c50 2 87 245
+55c52 2 88 245
+55c54 2 135 222
+55c56 2 88 245
+55c58 4 323 201
+55c5c 4 161 201
+55c60 4 161 201
+55c64 4 121 237
+55c68 4 156 238
+55c6c 6 342 240
+55c72 4 95 186
+55c76 6 135 222
+55c7c 4 121 237
+55c80 4 156 238
+55c84 a 342 240
+55c8e 4 92 186
+55c92 e 95 186
+FUNC 55ca0 4c 0 std::_release_Locale_impl(std::_Locale_impl*&)
+55ca0 2 703 186
+55ca2 2 703 186
+55ca4 2 705 186
+55ca6 8 347 240
+55cae 2 475 240
+55cb0 2 349 240
+55cb2 4 475 240
+55cb6 4 349 240
+55cba 2 705 186
+55cbc 2 109 187
+55cbe 2 706 186
+55cc0 4 109 187
+55cc4 6 706 186
+55cca 2 707 186
+55ccc c 707 186
+55cd8 6 710 186
+55cde e 709 186
+FUNC 55cec f0 0 std::priv::time_init<char>::~time_init
+55cec 4 101 242
+55cf0 4 72 242
+55cf4 2 101 242
+55cf6 6 72 242
+55cfc 2 72 242
+55cfe 2 121 237
+55d00 6 156 238
+55d06 4 72 242
+55d0a 6 72 242
+55d10 2 121 237
+55d12 6 156 238
+55d18 4 72 242
+55d1c a 72 242
+55d26 2 72 242
+55d28 4 72 242
+55d2c 4 161 201
+55d30 4 72 242
+55d34 2 101 242
+55d36 2 64 238
+55d38 2 101 242
+55d3a 2 64 238
+55d3c 4 96 238
+55d40 4 96 238
+55d44 4 97 238
+55d48 4 161 201
+55d4c 4 135 222
+55d50 4 72 242
+55d54 4 121 237
+55d58 4 156 238
+55d5c 4 121 237
+55d60 4 156 238
+55d64 4 121 237
+55d68 4 156 238
+55d6c 4 121 237
+55d70 a 156 238
+55d7a 6 101 242
+55d80 6 72 242
+55d86 2 121 237
+55d88 6 156 238
+55d8e 4 72 242
+55d92 6 72 242
+55d98 2 72 242
+55d9a 2 121 237
+55d9c 6 156 238
+55da2 6 72 242
+55da8 a 156 238
+55db2 4 121 237
+55db6 6 156 238
+55dbc 4 121 237
+55dc0 6 156 238
+55dc6 a 72 242
+55dd0 4 121 237
+55dd4 8 156 238
+FUNC 55ddc 2c 0 std::time_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::~time_get
+55ddc 4 166 242
+55de0 e 166 242
+55dee 6 166 242
+55df4 14 166 242
+FUNC 55e08 2c 0 std::time_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::~time_put
+55e08 4 273 242
+55e0c e 273 242
+55e1a 6 273 242
+55e20 14 273 242
+FUNC 55e34 30 0 std::time_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::~time_get
+55e34 4 166 242
+55e38 e 166 242
+55e46 c 166 242
+55e52 12 166 242
+FUNC 55e64 30 0 std::time_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::~time_put
+55e64 4 273 242
+55e68 e 273 242
+55e76 c 273 242
+55e82 12 273 242
+FUNC 55e94 20 0 std::priv::_String_base<wchar_t, std::allocator<wchar_t> >::_M_deallocate_block()
+55e94 2 64 238
+55e96 4 96 238
+55e9a 2 96 238
+55e9c 2 97 238
+55e9e 2 135 222
+55ea0 2 97 238
+55ea2 4 323 201
+55ea6 4 161 201
+55eaa 4 161 201
+55eae 6 135 222
+FUNC 55eb4 14a 0 std::priv::time_init<wchar_t>::~time_init
+55eb4 4 115 242
+55eb8 6 80 242
+55ebe 2 115 242
+55ec0 2 80 242
+55ec2 e 80 242
+55ed0 4 161 201
+55ed4 4 80 242
+55ed8 2 115 242
+55eda 2 64 238
+55edc 2 115 242
+55ede 2 64 238
+55ee0 4 96 238
+55ee4 4 96 238
+55ee8 4 97 238
+55eec 4 323 201
+55ef0 4 161 201
+55ef4 4 135 222
+55ef8 4 80 242
+55efc a 80 242
+55f06 2 80 242
+55f08 4 80 242
+55f0c 4 161 201
+55f10 4 80 242
+55f14 2 115 242
+55f16 2 64 238
+55f18 2 115 242
+55f1a 2 64 238
+55f1c 4 96 238
+55f20 4 96 238
+55f24 4 97 238
+55f28 4 323 201
+55f2c 4 161 201
+55f30 4 135 222
+55f34 4 80 242
+55f38 a 80 242
+55f42 2 80 242
+55f44 4 80 242
+55f48 4 161 201
+55f4c 4 80 242
+55f50 2 115 242
+55f52 2 64 238
+55f54 2 115 242
+55f56 2 64 238
+55f58 4 96 238
+55f5c 4 96 238
+55f60 4 97 238
+55f64 4 323 201
+55f68 4 161 201
+55f6c 4 135 222
+55f70 4 80 242
+55f74 4 121 237
+55f78 4 156 238
+55f7c 4 121 237
+55f80 4 156 238
+55f84 4 121 237
+55f88 4 156 238
+55f8c 4 121 237
+55f90 a 156 238
+55f9a 6 115 242
+55fa0 6 80 242
+55fa6 2 80 242
+55fa8 2 121 237
+55faa 6 156 238
+55fb0 4 80 242
+55fb4 6 80 242
+55fba 2 80 242
+55fbc 2 121 237
+55fbe 6 156 238
+55fc4 6 80 242
+55fca a 156 238
+55fd4 4 121 237
+55fd8 6 156 238
+55fde 4 121 237
+55fe2 6 156 238
+55fe8 a 80 242
+55ff2 4 121 237
+55ff6 8 156 238
+FUNC 56000 2c 0 std::time_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::~time_get
+56000 4 166 242
+56004 e 166 242
+56012 6 166 242
+56018 14 166 242
+FUNC 5602c 2c 0 std::time_put<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::~time_put
+5602c 4 273 242
+56030 e 273 242
+5603e 6 273 242
+56044 14 273 242
+FUNC 56058 30 0 std::time_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::~time_get
+56058 4 166 242
+5605c e 166 242
+5606a c 166 242
+56076 12 166 242
+FUNC 56088 30 0 std::time_put<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::~time_put
+56088 4 273 242
+5608c e 273 242
+5609a c 273 242
+560a6 12 273 242
+FUNC 560b8 24 0 std::priv::_String_base<char, std::priv::__iostring_allocator<char> >::_M_deallocate_block()
+560b8 4 64 238
+560bc 4 96 238
+560c0 2 96 238
+560c2 4 97 238
+560c6 4 70 213
+560ca 2 97 238
+560cc 2 135 222
+560ce 4 161 201
+560d2 6 161 201
+560d8 4 135 222
+FUNC 560dc 40 0 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string
+560dc 2 639 236
+560de 2 639 236
+560e0 2 112 238
+560e2 2 229 246
+560e4 2 481 201
+560e6 2 639 236
+560e8 4 229 246
+560ec 2 643 236
+560ee 2 379 237
+560f0 2 378 237
+560f2 6 379 237
+560f8 2 107 243
+560fa 2 66 238
+560fc 2 107 243
+560fe 8 106 243
+56106 2 107 243
+56108 2 380 237
+5610a 4 101 205
+5610e 4 644 236
+56112 a 156 238
+FUNC 5611c 68 0 std::_Locale_impl::_Locale_impl
+5611c 2 74 186
+5611e 4 457 240
+56122 4 75 186
+56126 2 74 186
+56128 4 457 240
+5612c 2 340 240
+5612e 2 74 186
+56130 6 340 240
+56136 8 75 186
+5613e 6 76 186
+56144 4 67 245
+56148 4 76 186
+5614c 2 67 245
+5614e 2 481 201
+56150 8 76 186
+56158 4 77 186
+5615c 4 77 186
+56160 4 78 186
+56164 a 342 240
+5616e 6 78 186
+56174 10 156 238
+FUNC 56184 59c 0 std::_Locale_impl::make_classic_locale()
+56184 6 623 186
+5618a 4 628 186
+5618e 2 661 186
+56190 4 628 186
+56194 2 628 186
+56196 4 623 186
+5619a 6 628 186
+561a0 10 661 186
+561b0 2 457 240
+561b2 2 340 240
+561b4 2 623 186
+561b6 2 661 186
+561b8 4 340 240
+561bc 2 457 240
+561be 4 340 240
+561c2 4 48 204
+561c6 2 661 186
+561c8 4 86 218
+561cc 2 48 204
+561ce 2 86 218
+561d0 4 48 204
+561d4 6 661 186
+561da 6 633 186
+561e0 2 661 186
+561e2 4 633 186
+561e6 8 661 186
+561ee 2 457 240
+561f0 2 340 240
+561f2 2 661 186
+561f4 4 340 240
+561f8 2 457 240
+561fa 4 340 240
+561fe 4 180 203
+56202 2 661 186
+56204 2 180 203
+56206 2 661 186
+56208 4 180 203
+5620c 4 661 186
+56210 2 635 186
+56212 2 661 186
+56214 4 635 186
+56218 8 661 186
+56220 2 636 186
+56222 2 661 186
+56224 4 636 186
+56228 8 661 186
+56230 2 457 240
+56232 2 340 240
+56234 2 661 186
+56236 4 340 240
+5623a 2 457 240
+5623c 4 340 240
+56240 4 54 227
+56244 2 661 186
+56246 2 54 227
+56248 2 661 186
+5624a 4 54 227
+5624e 4 661 186
+56252 2 638 186
+56254 2 661 186
+56256 4 638 186
+5625a 8 661 186
+56262 2 457 240
+56264 2 340 240
+56266 2 661 186
+56268 4 340 240
+5626c 2 457 240
+5626e 4 340 240
+56272 4 60 221
+56276 4 661 186
+5627a 6 60 221
+56280 4 661 186
+56284 2 457 240
+56286 2 340 240
+56288 2 661 186
+5628a 4 340 240
+5628e 2 457 240
+56290 4 340 240
+56294 2 394 221
+56296 4 661 186
+5629a 6 394 221
+562a0 4 661 186
+562a4 2 457 240
+562a6 2 340 240
+562a8 2 661 186
+562aa 4 340 240
+562ae 2 457 240
+562b0 4 340 240
+562b4 2 61 224
+562b6 4 661 186
+562ba 6 61 224
+562c0 4 661 186
+562c4 2 457 240
+562c6 2 340 240
+562c8 2 661 186
+562ca 4 340 240
+562ce 2 457 240
+562d0 4 340 240
+562d4 2 57 226
+562d6 6 661 186
+562dc 6 57 226
+562e2 4 661 186
+562e6 2 457 240
+562e8 2 340 240
+562ea 2 661 186
+562ec 4 340 240
+562f0 2 457 240
+562f2 4 340 240
+562f6 a 86 218
+56300 4 136 242
+56304 2 136 242
+56306 6 661 186
+5630c 6 136 242
+56312 4 661 186
+56316 2 457 240
+56318 2 340 240
+5631a 2 661 186
+5631c 4 340 240
+56320 2 457 240
+56322 4 340 240
+56326 a 86 218
+56330 4 253 242
+56334 2 253 242
+56336 4 661 186
+5633a 6 253 242
+56340 4 661 186
+56344 2 457 240
+56346 2 340 240
+56348 2 661 186
+5634a 4 340 240
+5634e 2 457 240
+56350 4 340 240
+56354 2 84 204
+56356 2 661 186
+56358 2 84 204
+5635a 2 661 186
+5635c 4 84 204
+56360 4 661 186
+56364 2 457 240
+56366 2 340 240
+56368 2 661 186
+5636a 4 340 240
+5636e 2 457 240
+56370 4 340 240
+56374 2 181 206
+56376 2 661 186
+56378 2 181 206
+5637a 2 661 186
+5637c 4 181 206
+56380 4 661 186
+56384 2 457 240
+56386 2 340 240
+56388 2 661 186
+5638a 4 340 240
+5638e 2 457 240
+56390 4 340 240
+56394 2 277 203
+56396 2 661 186
+56398 2 277 203
+5639a 2 661 186
+5639c 4 277 203
+563a0 4 661 186
+563a4 2 649 186
+563a6 2 661 186
+563a8 4 649 186
+563ac 8 661 186
+563b4 2 650 186
+563b6 2 661 186
+563b8 4 650 186
+563bc 8 661 186
+563c4 2 457 240
+563c6 2 340 240
+563c8 2 661 186
+563ca 4 340 240
+563ce 2 457 240
+563d0 4 340 240
+563d4 2 83 227
+563d6 2 661 186
+563d8 2 83 227
+563da 2 661 186
+563dc 4 83 227
+563e0 4 661 186
+563e4 2 652 186
+563e6 2 661 186
+563e8 4 652 186
+563ec 8 661 186
+563f4 2 457 240
+563f6 2 340 240
+563f8 2 661 186
+563fa 4 340 240
+563fe 2 457 240
+56400 4 340 240
+56404 2 60 221
+56406 4 661 186
+5640a 6 60 221
+56410 4 661 186
+56414 2 457 240
+56416 2 340 240
+56418 2 661 186
+5641a 4 340 240
+5641e 2 457 240
+56420 4 340 240
+56424 2 394 221
+56426 4 661 186
+5642a 6 394 221
+56430 4 661 186
+56434 2 457 240
+56436 2 340 240
+56438 2 661 186
+5643a 4 340 240
+5643e 2 457 240
+56440 4 340 240
+56444 2 61 224
+56446 4 661 186
+5644a 6 61 224
+56450 4 661 186
+56454 2 457 240
+56456 2 340 240
+56458 2 661 186
+5645a 4 340 240
+5645e 2 457 240
+56460 4 340 240
+56464 2 57 226
+56466 6 661 186
+5646c 6 57 226
+56472 4 661 186
+56476 2 457 240
+56478 2 340 240
+5647a 2 661 186
+5647c 4 340 240
+56480 2 457 240
+56482 4 340 240
+56486 a 86 218
+56490 4 136 242
+56494 2 136 242
+56496 6 661 186
+5649c 6 136 242
+564a2 4 661 186
+564a6 2 457 240
+564a8 2 340 240
+564aa 2 661 186
+564ac 4 340 240
+564b0 2 457 240
+564b2 4 340 240
+564b6 8 86 218
+564be 4 253 242
+564c2 4 664 186
+564c6 2 253 242
+564c8 2 664 186
+564ca 2 661 186
+564cc 2 253 242
+564ce 4 664 186
+564d2 4 253 242
+564d6 4 664 186
+564da 6 199 245
+564e0 4 326 245
+564e4 6 192 245
+564ea 4 332 245
+564ee a 224 200
+564f8 2 335 245
+564fa a 667 186
+56504 2 670 186
+56506 2 668 186
+56508 2 670 186
+5650a 4 668 186
+5650e 2 670 186
+56510 4 668 186
+56514 4 670 186
+56518 a 671 186
+56522 6 672 186
+56528 4 510 216
+5652c 4 224 200
+56530 8 224 200
+56538 6 107 243
+5653e c 106 243
+5654a 2 107 243
+5654c 8 341 245
+56554 8 670 186
+5655c 2 670 186
+5655e 2 628 186
+56560 2 670 186
+56562 2 628 186
+56564 4 670 186
+56568 4 670 186
+5656c 16 670 186
+56582 a 347 201
+5658c 4 158 201
+56590 4 106 243
+56594 4 352 201
+56598 2 158 201
+5659a 4 106 243
+5659e 4 657 245
+565a2 2 319 201
+565a4 2 657 245
+565a6 4 323 201
+565aa 4 161 201
+565ae 4 161 201
+565b2 2 666 245
+565b4 8 330 245
+565bc 4 666 245
+565c0 2 667 245
+565c2 4 668 245
+565c6 8 667 186
+565ce 2 667 186
+565d0 2 628 186
+565d2 2 667 186
+565d4 2 628 186
+565d6 4 667 186
+565da 4 667 186
+565de 16 667 186
+565f4 6 135 222
+565fa 4 670 186
+565fe 8 670 186
+56606 22 633 186
+56628 8 136 242
+56630 14 253 242
+56644 1e 136 242
+56662 4 667 186
+56666 ba 667 186
+FUNC 56720 b8 0 std::_Locale_impl::_S_initialize()
+56720 4 100 186
+56724 8 575 186
+5672c 4 576 186
+56730 4 577 186
+56734 2 575 186
+56736 4 578 186
+5673a 2 576 186
+5673c 2 579 186
+5673e 2 577 186
+56740 2 580 186
+56742 2 578 186
+56744 2 583 186
+56746 2 579 186
+56748 2 584 186
+5674a 2 580 186
+5674c 2 585 186
+5674e 2 583 186
+56750 2 586 186
+56752 2 584 186
+56754 2 587 186
+56756 2 585 186
+56758 2 588 186
+5675a 2 586 186
+5675c 2 587 186
+5675e 4 575 186
+56762 2 588 186
+56764 8 576 186
+5676c 8 577 186
+56774 8 578 186
+5677c 8 579 186
+56784 4 580 186
+56788 4 583 186
+5678c 4 584 186
+56790 4 585 186
+56794 4 586 186
+56798 4 587 186
+5679c 4 588 186
+567a0 4 103 186
+567a4 34 102 186
+FUNC 567d8 2e 0 std::_Locale_impl::Init::Init
+567d8 2 57 186
+567da 2 57 186
+567dc 4 58 186
+567e0 2 347 240
+567e2 2 58 186
+567e4 6 347 240
+567ea 2 471 240
+567ec 2 349 240
+567ee 4 471 240
+567f2 4 349 240
+567f6 4 58 186
+567fa 4 61 186
+567fe 4 59 186
+56802 4 61 186
+FUNC 56808 70 0 std::_Stl_get_global_locale()
+56808 2 604 186
+5680a 2 603 186
+5680c 8 604 186
+56814 6 605 186
+5681a 2 606 186
+5681c 8 604 186
+56824 4 604 186
+56828 4 604 186
+5682c 4 604 186
+56830 1a 604 186
+5684a 4 604 186
+5684e 2a 604 186
+FUNC 56878 48 0 std::priv::_String_base<wchar_t, std::allocator<wchar_t> >::_M_allocate_block(unsigned int)
+56878 4 608 236
+5687c 6 607 236
+56882 2 608 236
+56884 2 608 236
+56886 4 610 236
+5688a 4 623 236
+5688e 8 600 236
+56896 4 347 201
+5689a 4 158 201
+5689e 6 158 201
+568a4 2 613 236
+568a6 2 611 236
+568a8 4 613 236
+568ac 2 612 236
+568ae 6 613 236
+568b4 c 134 222
+FUNC 568c0 3c 0 std::priv::_String_base<char, std::priv::__iostring_allocator<char> >::_M_allocate_block(unsigned int)
+568c0 6 607 236
+568c6 2 608 236
+568c8 4 610 236
+568cc 4 64 213
+568d0 4 67 213
+568d4 2 64 213
+568d6 2 613 236
+568d8 4 611 236
+568dc 2 612 236
+568de 2 613 236
+568e0 4 623 236
+568e4 8 600 236
+568ec 10 134 222
+FUNC 568fc 144 0 std::time_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::do_put(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char, tm const*, char, char) const
+568fc 8 425 241
+56904 4 425 241
+56908 2 145 212
+5690a 2 425 241
+5690c 2 145 212
+5690e 4 425 241
+56912 a 145 212
+5691c c 351 218
+56928 4 41 213
+5692c 2 428 241
+5692e 4 120 238
+56932 4 428 241
+56936 c 108 213
+56942 8 41 213
+5694a 4 120 238
+5694e 4 41 213
+56952 6 124 238
+56958 4 481 201
+5695c 4 124 238
+56960 4 90 238
+56964 2 101 205
+56966 6 430 241
+5696c 2 101 205
+5696e 12 430 241
+56980 a 90 238
+5698a 4 66 238
+5698e 18 90 238
+569a6 2 213 200
+569a8 2 90 238
+569aa 2 213 200
+569ac 8 90 238
+569b4 8 213 200
+569bc 4 214 200
+569c0 4 62 229
+569c4 6 200 235
+569ca 8 200 235
+569d2 2 200 235
+569d4 8 200 235
+569dc 8 62 229
+569e4 8 213 200
+569ec 4 218 200
+569f0 2 96 238
+569f2 c 218 200
+569fe 2 96 238
+56a00 2 96 238
+56a02 2 70 213
+56a04 4 97 238
+56a08 2 70 213
+56a0a 2 97 238
+56a0c 2 135 222
+56a0e 4 161 201
+56a12 4 161 201
+56a16 a 432 241
+56a20 6 135 222
+56a26 a 428 241
+56a30 10 156 238
+FUNC 56a40 32 0 std::priv::__basic_iostring<wchar_t>::~__basic_iostring
+56a40 2 97 213
+56a42 2 97 213
+56a44 4 64 238
+56a48 4 96 238
+56a4c 2 96 238
+56a4e 6 97 238
+56a54 4 70 213
+56a58 2 97 238
+56a5a 4 323 201
+56a5e 4 161 201
+56a62 4 161 201
+56a66 4 97 213
+56a6a 4 135 222
+56a6e 4 97 213
+FUNC 56a74 8e 0 std::copy<wchar_t const*, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >
+56a74 8 291 200
+56a7c 2 213 200
+56a7e 2 291 200
+56a80 4 213 200
+56a84 4 291 200
+56a88 8 213 200
+56a90 2 213 200
+56a92 4 213 200
+56a96 2 213 200
+56a98 16 213 200
+56aae 8 62 229
+56ab6 4 213 200
+56aba 4 214 200
+56abe 4 62 229
+56ac2 a 200 235
+56acc c 200 235
+56ad8 2 200 235
+56ada e 200 235
+56ae8 8 218 200
+56af0 2 294 200
+56af2 6 218 200
+56af8 a 294 200
+FUNC 56a74 8e 0 std::copy<wchar_t*, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >
+FUNC 56b04 8e 0 std::copy<char const*, std::ostreambuf_iterator<char, std::char_traits<char> > >
+FUNC 56b04 8e 0 std::copy<char*, std::ostreambuf_iterator<char, std::char_traits<char> > >
+56b04 8 291 200
+56b0c 2 213 200
+56b0e 6 291 200
+56b14 a 213 200
+56b1e 4 213 200
+56b22 22 213 200
+56b44 4 214 200
+56b48 6 62 229
+56b4e 6 200 235
+56b54 a 200 235
+56b5e 2 200 235
+56b60 8 200 235
+56b68 a 62 229
+56b72 6 213 200
+56b78 8 218 200
+56b80 2 294 200
+56b82 6 218 200
+56b88 a 294 200
+FUNC 56b94 28c 0 std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > std::priv::__do_put_bool<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >(std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&, wchar_t, bool)
+56b94 6 386 225
+56b9a 6 386 225
+56ba0 4 145 212
+56ba4 6 386 225
+56baa 4 145 212
+56bae 4 386 225
+56bb2 6 145 212
+56bb8 c 351 218
+56bc4 6 387 225
+56bca a 389 225
+56bd4 e 88 227
+56be2 2 89 238
+56be4 2 65 238
+56be6 2 139 212
+56be8 2 138 212
+56bea 2 400 237
+56bec 2 139 212
+56bee 2 400 237
+56bf0 6 392 225
+56bf6 2 396 225
+56bf8 2 395 225
+56bfa 4 396 225
+56bfe 6 398 225
+56c04 8 482 200
+56c0c 2 480 200
+56c0e a 482 200
+56c18 2 480 200
+56c1a 2 62 229
+56c1c 6 200 235
+56c22 a 200 235
+56c2c 2 200 235
+56c2e 8 62 229
+56c36 c 480 200
+56c42 6 482 200
+56c48 8 403 225
+56c50 2 213 200
+56c52 a 482 200
+56c5c 32 403 225
+56c8e 6 213 200
+56c94 8 62 229
+56c9c 4 213 200
+56ca0 4 214 200
+56ca4 4 62 229
+56ca8 6 200 235
+56cae 8 200 235
+56cb6 2 200 235
+56cb8 c 200 235
+56cc4 2 213 200
+56cc6 10 218 200
+56cd6 6 96 238
+56cdc 2 96 238
+56cde 2 97 238
+56ce0 2 135 222
+56ce2 2 97 238
+56ce4 4 323 201
+56ce8 4 161 201
+56cec 4 161 201
+56cf0 8 407 225
+56cf8 c 200 235
+56d04 e 89 227
+56d12 2 89 238
+56d14 2 65 238
+56d16 2 139 212
+56d18 2 138 212
+56d1a 2 400 237
+56d1c 2 139 212
+56d1e 2 400 237
+56d20 1c 392 225
+56d3c 2 213 200
+56d3e 1a 392 225
+56d58 6 213 200
+56d5e 8 62 229
+56d66 4 213 200
+56d6a 4 214 200
+56d6e 4 62 229
+56d72 6 200 235
+56d78 8 200 235
+56d80 2 200 235
+56d82 c 200 235
+56d8e 6 135 222
+56d94 12 399 225
+56da6 8 399 225
+56dae 2 480 200
+56db0 14 399 225
+56dc4 2 480 200
+56dc6 2 62 229
+56dc8 6 200 235
+56dce a 200 235
+56dd8 2 200 235
+56dda 8 62 229
+56de2 4 480 200
+56de6 14 482 200
+56dfa c 200 235
+56e06 a 156 238
+56e10 10 387 225
+FUNC 56e20 44 0 std::num_put<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_put(std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&, wchar_t, bool) const
+56e20 4 420 225
+56e24 c 420 225
+56e30 2 422 225
+56e32 4 420 225
+56e36 4 422 225
+56e3a 10 426 225
+56e4a 6 427 225
+56e50 14 424 225
+FUNC 56e64 2dc 0 std::ostreambuf_iterator<char, std::char_traits<char> > std::priv::__do_put_bool<char, std::ostreambuf_iterator<char, std::char_traits<char> > >(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char, bool)
+56e64 6 386 225
+56e6a 6 386 225
+56e70 4 145 212
+56e74 6 386 225
+56e7a 4 145 212
+56e7e 4 386 225
+56e82 6 145 212
+56e88 c 351 218
+56e94 6 387 225
+56e9a a 389 225
+56ea4 e 59 227
+56eb2 2 65 238
+56eb4 2 400 237
+56eb6 2 139 212
+56eb8 2 138 212
+56eba 2 400 237
+56ebc 2 139 212
+56ebe 6 392 225
+56ec4 2 396 225
+56ec6 2 395 225
+56ec8 4 398 225
+56ecc 4 396 225
+56ed0 6 398 225
+56ed6 4 482 200
+56eda 2 480 200
+56edc e 482 200
+56eea 2 480 200
+56eec 2 62 229
+56eee 6 200 235
+56ef4 8 200 235
+56efc 2 200 235
+56efe a 480 200
+56f08 4 482 200
+56f0c 4 403 225
+56f10 2 213 200
+56f12 4 482 200
+56f16 2 403 225
+56f18 a 482 200
+56f22 36 403 225
+56f58 a 213 200
+56f62 4 214 200
+56f66 4 62 229
+56f6a 6 200 235
+56f70 8 200 235
+56f78 2 200 235
+56f7a 8 200 235
+56f82 8 62 229
+56f8a 4 213 200
+56f8e 12 218 200
+56fa0 6 156 238
+56fa6 8 407 225
+56fae a 200 235
+56fb8 a 62 229
+56fc2 12 60 227
+56fd4 2 65 238
+56fd6 2 400 237
+56fd8 2 139 212
+56fda 2 138 212
+56fdc 2 400 237
+56fde 2 139 212
+56fe0 1c 392 225
+56ffc 2 213 200
+56ffe 1e 392 225
+5701c a 213 200
+57026 4 214 200
+5702a 4 62 229
+5702e 6 200 235
+57034 8 200 235
+5703c 2 200 235
+5703e 8 200 235
+57046 a 62 229
+57050 16 398 225
+57066 2 213 200
+57068 1a 398 225
+57082 a 213 200
+5708c 4 214 200
+57090 6 62 229
+57096 6 200 235
+5709c 8 200 235
+570a4 2 200 235
+570a6 8 200 235
+570ae a 62 229
+570b8 4 213 200
+570bc 4 218 200
+570c0 2 480 200
+570c2 2 399 225
+570c4 e 218 200
+570d2 16 399 225
+570e8 2 480 200
+570ea 2 62 229
+570ec 6 200 235
+570f2 8 200 235
+570fa 2 200 235
+570fc 4 480 200
+57100 14 482 200
+57114 a 200 235
+5711e a 62 229
+57128 a 156 238
+57132 e 387 225
+FUNC 57140 46 0 std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::do_put(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char, bool) const
+57140 4 420 225
+57144 e 420 225
+57152 2 422 225
+57154 4 420 225
+57158 4 422 225
+5715c 10 426 225
+5716c 6 427 225
+57172 14 424 225
+FUNC 57188 154 0 std::pair<std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, bool> std::priv::__get_string<std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, wchar_t*>(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, wchar_t*, wchar_t*)
+57188 6 51 220
+5718e a 51 220
+57198 2 53 220
+5719a 4 51 220
+5719e 16 53 220
+571b4 2 69 215
+571b6 2 75 215
+571b8 4 90 215
+571bc 4 77 215
+571c0 4 90 215
+571c4 4 53 220
+571c8 4 53 220
+571cc 6 90 215
+571d2 a 53 220
+571dc 6 57 220
+571e2 c 57 220
+571ee 10 57 220
+571fe 4 62 230
+57202 4 57 220
+57206 4 62 230
+5720a 8 58 220
+57212 6 235 235
+57218 4 764 186
+5721c 2 235 235
+5721e a 191 246
+57228 4 95 215
+5722c 6 235 235
+57232 4 764 186
+57236 2 235 235
+57238 c 191 246
+57244 4 95 215
+57248 6 235 235
+5724e 4 764 186
+57252 2 235 235
+57254 4 191 246
+57258 4 53 220
+5725c 8 191 246
+57264 2 95 215
+57266 4 53 220
+5726a 8 229 235
+57272 2 229 235
+57274 2 69 215
+57276 4 229 235
+5727a 10 235 235
+5728a 4 229 235
+5728e 2 69 215
+57290 16 229 235
+572a6 36 235 235
+FUNC 572e0 168 0 bool std::priv::__get_integer<wchar_t*, long double, wchar_t>(wchar_t*&, wchar_t*&, int, long double&, int, bool, wchar_t, std::string const&, std::__false_type const&)
+572e0 a 178 223
+572ea 8 188 223
+572f2 a 178 223
+572fc 6 190 223
+57302 2 183 223
+57304 4 188 223
+57308 2 183 223
+5730a 6 190 223
+57310 4 183 223
+57314 4 178 223
+57318 2 190 223
+5731a 4 188 223
+5731e 6 183 223
+57324 2 190 223
+57326 4 178 223
+5732a 12 190 223
+5733c 8 211 223
+57344 4 212 223
+57348 4 211 223
+5734c 6 212 223
+57352 4 213 223
+57356 a 213 223
+57360 6 214 223
+57366 2 213 223
+57368 4 190 223
+5736c 6 190 223
+57372 2 192 223
+57374 2 194 223
+57376 2 194 223
+57378 6 195 223
+5737e 4 196 223
+57382 2 194 223
+57384 4 52 223
+57388 2 52 223
+5738a 4 202 223
+5738e 4 208 223
+57392 4 206 223
+57396 4 205 223
+5739a 4 206 223
+5739e 8 208 223
+573a6 2 209 223
+573a8 4 190 223
+573ac c 190 223
+573b8 6 218 223
+573be 4 218 223
+573c2 6 219 223
+573c8 6 223 223
+573ce 2 224 223
+573d0 12 224 223
+573e2 2 233 223
+573e4 a 234 223
+573ee 8 214 223
+573f6 c 52 223
+57402 6 214 223
+57408 6 224 223
+5740e 4 224 223
+57412 6 224 223
+57418 2 233 223
+5741a 6 233 223
+57420 2 65 238
+57422 a 233 223
+5742c 1c 224 223
+FUNC 57448 134 0 std::basic_string<char, std::char_traits<char>, std::priv::__iostring_allocator<char> >& std::basic_string<char, std::char_traits<char>, std::priv::__iostring_allocator<char> >::assign<char const*>(char const*, char const*)
+57448 4 595 237
+5744c 2 595 237
+5744e 2 579 237
+57450 4 595 237
+57454 4 66 238
+57458 2 579 237
+5745a 2 90 238
+5745c a 579 237
+57466 4 764 186
+5746a 2 579 237
+5746c 4 232 246
+57470 2 581 237
+57472 2 582 237
+57474 2 579 237
+57476 2 90 238
+57478 8 579 237
+57480 2 74 238
+57482 4 355 216
+57486 2 74 238
+57488 4 74 238
+5748c 4 472 237
+57490 2 764 186
+57492 2 482 237
+57494 2 107 243
+57496 2 232 246
+57498 2 90 238
+5749a 2 107 243
+5749c 2 483 237
+5749e 8 106 243
+574a6 4 101 205
+574aa 6 485 237
+574b0 6 598 237
+574b6 2 400 237
+574b8 e 304 237
+574c6 a 306 237
+574d0 4 307 237
+574d4 4 307 237
+574d8 e 134 222
+574e6 2 107 243
+574e8 4 107 243
+574ec 2 107 243
+574ee c 106 243
+574fa 2 107 243
+574fc 8 106 243
+57504 4 101 205
+57508 2 107 243
+5750a 4 64 238
+5750e 4 96 238
+57512 2 96 238
+57514 6 97 238
+5751a 4 70 213
+5751e 2 97 238
+57520 2 135 222
+57522 4 161 201
+57526 4 161 201
+5752a 2 479 237
+5752c 2 164 238
+5752e 2 160 238
+57530 2 598 237
+57532 4 165 238
+57536 4 598 237
+5753a 4 307 237
+5753e 4 64 213
+57542 6 67 213
+57548 4 64 213
+5754c 6 135 222
+57552 6 74 238
+57558 2 90 238
+5755a 4 803 237
+5755e 2 168 246
+57560 2 806 237
+57562 2 598 237
+57564 2 168 246
+57566 6 806 237
+5756c 4 598 237
+57570 c 600 236
+FUNC 5757c 8c4 0 std::ostreambuf_iterator<char, std::char_traits<char> > std::priv::__money_do_put<char, std::ostreambuf_iterator<char, std::char_traits<char> >, std::string, std::string>(std::ostreambuf_iterator<char, std::char_traits<char> >, bool, std::ios_base&, char, std::string const&, bool, std::string*)
+5757c 8 316 220
+57584 c 316 220
+57590 4 145 212
+57594 6 316 220
+5759a 4 145 212
+5759e 8 316 220
+575a6 8 145 212
+575ae 2a 351 218
+575d8 2 101 206
+575da 2 351 218
+575dc 2c 101 206
+57608 2 336 220
+5760a 2 101 206
+5760c 4 336 220
+57610 8 92 221
+57618 2 93 221
+5761a 2 92 221
+5761c 6 93 221
+57622 6 94 221
+57628 2 93 221
+5762a c 94 221
+57636 8 98 221
+5763e 4 95 221
+57642 2 98 221
+57644 a 95 221
+5764e 4 65 238
+57652 4 89 238
+57656 4 354 220
+5765a 12 360 220
+5766c 2 361 220
+5766e 2 362 220
+57670 2 368 220
+57672 2 368 220
+57674 6 368 220
+5767a 2 137 221
+5767c 6 368 220
+57682 10 137 221
+57692 8 385 220
+5769a 4 387 220
+5769e 8 79 206
+576a6 6 387 220
+576ac 2 316 220
+576ae 2 387 220
+576b0 a 390 220
+576ba 12 156 238
+576cc 6 498 220
+576d2 a 499 220
+576dc 8 132 221
+576e4 2 133 221
+576e6 2 132 221
+576e8 6 133 221
+576ee 6 134 221
+576f4 2 133 221
+576f6 c 134 221
+57702 8 138 221
+5770a 4 135 221
+5770e 2 138 221
+57710 a 135 221
+5771a 4 65 238
+5771e 4 89 238
+57722 4 354 220
+57726 c 355 220
+57732 2 388 220
+57734 4 387 220
+57738 8 79 206
+57740 4 387 220
+57744 8 389 220
+5774c 4 120 238
+57750 8 108 213
+57758 4 41 213
+5775c 4 108 213
+57760 8 41 213
+57768 4 120 238
+5776c 4 41 213
+57770 6 124 238
+57776 4 481 201
+5777a 4 124 238
+5777e 4 90 238
+57782 2 101 205
+57784 4 397 220
+57788 2 101 205
+5778a c 397 220
+57796 a 398 220
+577a0 4 400 237
+577a4 2 399 220
+577a6 4 400 237
+577aa 2 399 220
+577ac 2 400 237
+577ae 1a 399 220
+577c8 4 66 238
+577cc 4 90 238
+577d0 2 400 237
+577d2 6 413 220
+577d8 4 400 237
+577dc 4 136 212
+577e0 2 400 237
+577e2 2 416 220
+577e4 2 418 220
+577e6 2 136 212
+577e8 2 418 220
+577ea 2 419 220
+577ec a 421 220
+577f6 2 422 220
+577f8 8 400 237
+57800 2 423 220
+57802 2 427 220
+57804 2 427 220
+57806 4 427 220
+5780a 2 100 221
+5780c 6 427 220
+57812 1a 100 221
+5782c 2 427 220
+5782e 4 100 221
+57832 2 427 220
+57834 6 100 221
+5783a 4 427 220
+5783e 2 437 220
+57840 4 100 221
+57844 4 427 220
+57848 6 437 220
+5784e 2 444 220
+57850 2 439 220
+57852 2 444 220
+57854 4 446 220
+57858 2 444 220
+5785a 2 444 220
+5785c 4 446 220
+57860 2 444 220
+57862 4 446 220
+57866 2 97 221
+57868 4 368 220
+5786c 12 97 221
+5787e 2 140 221
+57880 6 427 220
+57886 1a 139 221
+578a0 2 427 220
+578a2 a 139 221
+578ac 2 427 220
+578ae 4 139 221
+578b2 2 427 220
+578b4 8 437 220
+578bc 6 437 220
+578c2 4 444 220
+578c6 4 446 220
+578ca 2 444 220
+578cc 2 448 220
+578ce 8 446 220
+578d6 6 448 220
+578dc 8 448 220
+578e4 2 480 220
+578e6 2 444 220
+578e8 2 477 220
+578ea 4 480 220
+578ee 2 477 220
+578f0 8 480 220
+578f8 2 477 220
+578fa 2 480 220
+578fc 2 477 220
+578fe 1a 454 220
+57918 e 136 221
+57926 e 96 221
+57934 4 462 220
+57938 1e 463 220
+57956 c 471 220
+57962 2 452 220
+57964 4 452 220
+57968 4 400 237
+5796c 2 65 238
+5796e 2 400 237
+57970 1c 492 220
+5798c 2 493 220
+5798e 2 213 200
+57990 4 492 220
+57994 2 213 200
+57996 12 492 220
+579a8 8 213 200
+579b0 4 214 200
+579b4 4 62 229
+579b8 6 200 235
+579be 8 200 235
+579c6 2 200 235
+579c8 8 200 235
+579d0 8 62 229
+579d8 4 213 200
+579dc 10 218 200
+579ec c 493 220
+579f8 4 494 220
+579fc c 494 220
+57a08 4 64 238
+57a0c 8 498 220
+57a14 2 96 238
+57a16 4 498 220
+57a1a 4 96 238
+57a1e 6 96 238
+57a24 2 70 213
+57a26 4 97 238
+57a2a 6 70 213
+57a30 2 97 238
+57a32 2 135 222
+57a34 6 161 201
+57a3a 6 161 201
+57a40 6 62 229
+57a46 4 62 229
+57a4a a 200 235
+57a54 4 200 235
+57a58 2 62 229
+57a5a 6 200 235
+57a60 4 62 229
+57a64 1a 458 220
+57a7e 4 480 200
+57a82 6 458 220
+57a88 4 480 200
+57a8c c 458 220
+57a98 4 480 200
+57a9c 6 62 229
+57aa2 a 200 235
+57aac 8 200 235
+57ab4 4 480 200
+57ab8 12 482 200
+57aca e 459 220
+57ad8 8 470 220
+57ae0 c 473 220
+57aec a 62 229
+57af6 4 62 229
+57afa a 200 235
+57b04 8 200 235
+57b0c 4 62 229
+57b10 8 62 229
+57b18 a 200 235
+57b22 8 200 235
+57b2a 4 62 229
+57b2e 10 477 220
+57b3e 2 480 200
+57b40 6 62 229
+57b46 8 200 235
+57b4e 8 200 235
+57b56 4 480 200
+57b5a 2 482 200
+57b5c 2 477 220
+57b5e 8 478 220
+57b66 10 482 200
+57b76 8 477 220
+57b7e 6 478 220
+57b84 4 477 220
+57b88 a 478 220
+57b92 e 478 220
+57ba0 4 65 238
+57ba4 8 466 220
+57bac 4 62 229
+57bb0 2 467 220
+57bb2 2 62 229
+57bb4 4 62 229
+57bb8 a 200 235
+57bc2 2 62 229
+57bc4 6 200 235
+57bca 6 62 229
+57bd0 16 140 221
+57be6 2 427 220
+57be8 4 140 221
+57bec 2 427 220
+57bee a 140 221
+57bf8 4 427 220
+57bfc 4 140 221
+57c00 6 427 220
+57c06 1a 99 221
+57c20 2 427 220
+57c22 a 99 221
+57c2c 2 427 220
+57c2e 4 99 221
+57c32 4 427 220
+57c36 a 200 235
+57c40 c 62 229
+57c4c a 200 235
+57c56 c 62 229
+57c62 14 480 220
+57c76 8 480 220
+57c7e 2 62 229
+57c80 6 480 220
+57c86 2 62 229
+57c88 a 200 235
+57c92 4 200 235
+57c96 2 62 229
+57c98 6 200 235
+57c9e 4 62 229
+57ca2 16 483 220
+57cb8 c 483 220
+57cc4 6 494 220
+57cca 2 480 200
+57ccc c 494 220
+57cd8 2 480 200
+57cda 2 62 229
+57cdc 8 200 235
+57ce4 a 200 235
+57cee 8 480 200
+57cf6 10 482 200
+57d06 e 496 220
+57d14 a 200 235
+57d1e a 62 229
+57d28 18 471 220
+57d40 6 135 222
+57d46 2 480 200
+57d48 6 448 220
+57d4e 2 480 200
+57d50 c 448 220
+57d5c 4 480 200
+57d60 2 62 229
+57d62 8 200 235
+57d6a a 200 235
+57d74 4 480 200
+57d78 10 482 200
+57d88 e 450 220
+57d96 a 200 235
+57da0 a 62 229
+57daa 8 200 235
+57db2 6 62 229
+57db8 6 62 229
+57dbe 8 200 235
+57dc6 6 62 229
+57dcc 6 62 229
+57dd2 6 200 235
+57dd8 6 62 229
+57dde 6 62 229
+57de4 8 200 235
+57dec 8 62 229
+57df4 8 200 235
+57dfc c 62 229
+57e08 6 156 238
+57e0e c 498 220
+57e1a 26 156 238
+FUNC 57e40 32 0 std::money_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::do_put(std::ostreambuf_iterator<char, std::char_traits<char> >, bool, std::ios_base&, char, std::string const&) const
+57e40 4 515 220
+57e44 8 515 220
+57e4c 20 518 220
+57e6c 6 519 220
+FUNC 57e74 8c4 0 std::ostreambuf_iterator<char, std::char_traits<char> > std::priv::__money_do_put<char, std::ostreambuf_iterator<char, std::char_traits<char> >, std::string, std::priv::__basic_iostring<char> >(std::ostreambuf_iterator<char, std::char_traits<char> >, bool, std::ios_base&, char, std::priv::__basic_iostring<char> const&, bool, std::string*)
+57e74 8 316 220
+57e7c c 316 220
+57e88 4 145 212
+57e8c 6 316 220
+57e92 4 145 212
+57e96 8 316 220
+57e9e 8 145 212
+57ea6 2a 351 218
+57ed0 2 101 206
+57ed2 2 351 218
+57ed4 2c 101 206
+57f00 2 336 220
+57f02 2 101 206
+57f04 4 336 220
+57f08 8 92 221
+57f10 2 93 221
+57f12 2 92 221
+57f14 6 93 221
+57f1a 6 94 221
+57f20 2 93 221
+57f22 c 94 221
+57f2e 8 98 221
+57f36 4 95 221
+57f3a 2 98 221
+57f3c a 95 221
+57f46 4 65 238
+57f4a 4 89 238
+57f4e 4 354 220
+57f52 12 360 220
+57f64 2 361 220
+57f66 2 362 220
+57f68 2 368 220
+57f6a 2 368 220
+57f6c 6 368 220
+57f72 2 137 221
+57f74 6 368 220
+57f7a 10 137 221
+57f8a 8 385 220
+57f92 4 387 220
+57f96 8 79 206
+57f9e 6 387 220
+57fa4 2 316 220
+57fa6 2 387 220
+57fa8 a 390 220
+57fb2 12 156 238
+57fc4 6 498 220
+57fca a 499 220
+57fd4 8 132 221
+57fdc 2 133 221
+57fde 2 132 221
+57fe0 6 133 221
+57fe6 6 134 221
+57fec 2 133 221
+57fee c 134 221
+57ffa 8 138 221
+58002 4 135 221
+58006 2 138 221
+58008 a 135 221
+58012 4 65 238
+58016 4 89 238
+5801a 4 354 220
+5801e c 355 220
+5802a 2 388 220
+5802c 4 387 220
+58030 8 79 206
+58038 4 387 220
+5803c 8 389 220
+58044 4 120 238
+58048 8 108 213
+58050 4 41 213
+58054 4 108 213
+58058 8 41 213
+58060 4 120 238
+58064 4 41 213
+58068 6 124 238
+5806e 4 481 201
+58072 4 124 238
+58076 4 90 238
+5807a 2 101 205
+5807c 4 397 220
+58080 2 101 205
+58082 c 397 220
+5808e a 398 220
+58098 4 400 237
+5809c 2 399 220
+5809e 4 400 237
+580a2 2 399 220
+580a4 2 400 237
+580a6 1a 399 220
+580c0 4 66 238
+580c4 4 90 238
+580c8 2 400 237
+580ca 6 413 220
+580d0 4 400 237
+580d4 4 136 212
+580d8 2 400 237
+580da 2 416 220
+580dc 2 418 220
+580de 2 136 212
+580e0 2 418 220
+580e2 2 419 220
+580e4 a 421 220
+580ee 2 422 220
+580f0 8 400 237
+580f8 2 423 220
+580fa 2 427 220
+580fc 2 427 220
+580fe 4 427 220
+58102 2 100 221
+58104 6 427 220
+5810a 1a 100 221
+58124 2 427 220
+58126 4 100 221
+5812a 2 427 220
+5812c 6 100 221
+58132 4 427 220
+58136 2 437 220
+58138 4 100 221
+5813c 4 427 220
+58140 6 437 220
+58146 2 444 220
+58148 2 439 220
+5814a 2 444 220
+5814c 4 446 220
+58150 2 444 220
+58152 2 444 220
+58154 4 446 220
+58158 2 444 220
+5815a 4 446 220
+5815e 2 97 221
+58160 4 368 220
+58164 12 97 221
+58176 2 140 221
+58178 6 427 220
+5817e 1a 139 221
+58198 2 427 220
+5819a a 139 221
+581a4 2 427 220
+581a6 4 139 221
+581aa 2 427 220
+581ac 8 437 220
+581b4 6 437 220
+581ba 4 444 220
+581be 4 446 220
+581c2 2 444 220
+581c4 2 448 220
+581c6 8 446 220
+581ce 6 448 220
+581d4 8 448 220
+581dc 2 480 220
+581de 2 444 220
+581e0 2 477 220
+581e2 4 480 220
+581e6 2 477 220
+581e8 8 480 220
+581f0 2 477 220
+581f2 2 480 220
+581f4 2 477 220
+581f6 1a 454 220
+58210 e 136 221
+5821e e 96 221
+5822c 4 462 220
+58230 1e 463 220
+5824e c 471 220
+5825a 2 452 220
+5825c 4 452 220
+58260 4 400 237
+58264 2 65 238
+58266 2 400 237
+58268 1c 492 220
+58284 2 493 220
+58286 2 213 200
+58288 4 492 220
+5828c 2 213 200
+5828e 12 492 220
+582a0 8 213 200
+582a8 4 214 200
+582ac 4 62 229
+582b0 6 200 235
+582b6 8 200 235
+582be 2 200 235
+582c0 8 200 235
+582c8 8 62 229
+582d0 4 213 200
+582d4 10 218 200
+582e4 c 493 220
+582f0 4 494 220
+582f4 c 494 220
+58300 4 64 238
+58304 8 498 220
+5830c 2 96 238
+5830e 4 498 220
+58312 4 96 238
+58316 6 96 238
+5831c 2 70 213
+5831e 4 97 238
+58322 6 70 213
+58328 2 97 238
+5832a 2 135 222
+5832c 6 161 201
+58332 6 161 201
+58338 6 62 229
+5833e 4 62 229
+58342 a 200 235
+5834c 4 200 235
+58350 2 62 229
+58352 6 200 235
+58358 4 62 229
+5835c 1a 458 220
+58376 4 480 200
+5837a 6 458 220
+58380 4 480 200
+58384 c 458 220
+58390 4 480 200
+58394 6 62 229
+5839a a 200 235
+583a4 8 200 235
+583ac 4 480 200
+583b0 12 482 200
+583c2 e 459 220
+583d0 8 470 220
+583d8 c 473 220
+583e4 a 62 229
+583ee 4 62 229
+583f2 a 200 235
+583fc 8 200 235
+58404 4 62 229
+58408 8 62 229
+58410 a 200 235
+5841a 8 200 235
+58422 4 62 229
+58426 10 477 220
+58436 2 480 200
+58438 6 62 229
+5843e 8 200 235
+58446 8 200 235
+5844e 4 480 200
+58452 2 482 200
+58454 2 477 220
+58456 8 478 220
+5845e 10 482 200
+5846e 8 477 220
+58476 6 478 220
+5847c 4 477 220
+58480 a 478 220
+5848a e 478 220
+58498 4 65 238
+5849c 8 466 220
+584a4 4 62 229
+584a8 2 467 220
+584aa 2 62 229
+584ac 4 62 229
+584b0 a 200 235
+584ba 2 62 229
+584bc 6 200 235
+584c2 6 62 229
+584c8 16 140 221
+584de 2 427 220
+584e0 4 140 221
+584e4 2 427 220
+584e6 a 140 221
+584f0 4 427 220
+584f4 4 140 221
+584f8 6 427 220
+584fe 1a 99 221
+58518 2 427 220
+5851a a 99 221
+58524 2 427 220
+58526 4 99 221
+5852a 4 427 220
+5852e a 200 235
+58538 c 62 229
+58544 a 200 235
+5854e c 62 229
+5855a 14 480 220
+5856e 8 480 220
+58576 2 62 229
+58578 6 480 220
+5857e 2 62 229
+58580 a 200 235
+5858a 4 200 235
+5858e 2 62 229
+58590 6 200 235
+58596 4 62 229
+5859a 16 483 220
+585b0 c 483 220
+585bc 6 494 220
+585c2 2 480 200
+585c4 c 494 220
+585d0 2 480 200
+585d2 2 62 229
+585d4 8 200 235
+585dc a 200 235
+585e6 8 480 200
+585ee 10 482 200
+585fe e 496 220
+5860c a 200 235
+58616 a 62 229
+58620 18 471 220
+58638 6 135 222
+5863e 2 480 200
+58640 6 448 220
+58646 2 480 200
+58648 c 448 220
+58654 4 480 200
+58658 2 62 229
+5865a 8 200 235
+58662 a 200 235
+5866c 4 480 200
+58670 10 482 200
+58680 e 450 220
+5868e a 200 235
+58698 a 62 229
+586a2 8 200 235
+586aa 6 62 229
+586b0 6 62 229
+586b6 8 200 235
+586be 6 62 229
+586c4 6 62 229
+586ca 6 200 235
+586d0 6 62 229
+586d6 6 62 229
+586dc 8 200 235
+586e4 8 62 229
+586ec 8 200 235
+586f4 c 62 229
+58700 6 156 238
+58706 c 498 220
+58712 26 156 238
+FUNC 58738 9c 0 std::money_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::do_put(std::ostreambuf_iterator<char, std::char_traits<char> >, bool, std::ios_base&, char, long double) const
+58738 6 505 220
+5873e 2 505 220
+58740 2 41 213
+58742 2 120 238
+58744 2 108 213
+58746 6 505 220
+5874c a 108 213
+58756 8 41 213
+5875e 2 120 238
+58760 4 41 213
+58764 6 124 238
+5876a 4 481 201
+5876e 4 124 238
+58772 2 90 238
+58774 2 101 205
+58776 2 128 225
+58778 2 101 205
+5877a 8 128 225
+58782 20 510 220
+587a2 4 64 238
+587a6 4 96 238
+587aa 2 96 238
+587ac 2 70 213
+587ae 2 97 238
+587b0 2 70 213
+587b2 2 97 238
+587b4 4 161 201
+587b8 4 161 201
+587bc 8 511 220
+587c4 6 135 222
+587ca a 156 238
+FUNC 587d8 168 0 bool std::priv::__get_integer<char*, long double, char>(char*&, char*&, int, long double&, int, bool, char, std::string const&, std::__false_type const&)
+587d8 a 178 223
+587e2 8 188 223
+587ea a 178 223
+587f4 6 190 223
+587fa 2 183 223
+587fc 4 188 223
+58800 2 183 223
+58802 6 190 223
+58808 4 183 223
+5880c 4 178 223
+58810 2 190 223
+58812 4 188 223
+58816 6 183 223
+5881c 2 190 223
+5881e 4 178 223
+58822 12 190 223
+58834 8 211 223
+5883c 4 212 223
+58840 4 211 223
+58844 6 212 223
+5884a 4 213 223
+5884e a 213 223
+58858 6 214 223
+5885e 2 213 223
+58860 4 190 223
+58864 6 190 223
+5886a 2 192 223
+5886c 2 194 223
+5886e 2 194 223
+58870 6 195 223
+58876 4 196 223
+5887a 2 194 223
+5887c 4 52 223
+58880 2 52 223
+58882 4 202 223
+58886 4 208 223
+5888a 4 206 223
+5888e 4 205 223
+58892 4 206 223
+58896 8 208 223
+5889e 2 209 223
+588a0 4 190 223
+588a4 c 190 223
+588b0 6 218 223
+588b6 4 218 223
+588ba 6 219 223
+588c0 6 223 223
+588c6 2 224 223
+588c8 12 224 223
+588da 2 233 223
+588dc a 234 223
+588e6 8 214 223
+588ee c 52 223
+588fa 6 214 223
+58900 6 224 223
+58906 4 224 223
+5890a 6 224 223
+58910 2 233 223
+58912 6 233 223
+58918 2 65 238
+5891a a 233 223
+58924 1c 224 223
+FUNC 58940 1e8 0 unsigned int std::priv::__match<std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const*>(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >&, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >&, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const*, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const*)
+58940 6 78 241
+58946 2 78 241
+58948 2 87 241
+5894a 2 78 241
+5894c 2 80 241
+5894e 2 87 241
+58950 4 95 215
+58954 2 80 241
+58956 2 78 241
+58958 2 82 241
+5895a 2 81 241
+5895c 4 80 241
+58960 4 87 241
+58964 4 80 241
+58968 4 87 241
+5896c 4 80 241
+58970 4 87 241
+58974 8 80 241
+5897c 4 85 241
+58980 2 83 241
+58982 2 75 215
+58984 8 90 215
+5898c a 77 215
+58996 a 90 215
+589a0 6 89 241
+589a6 6 91 241
+589ac 18 78 241
+589c4 6 92 241
+589ca 2 115 241
+589cc c 115 241
+589d8 4 91 241
+589dc 2 68 215
+589de 8 229 235
+589e6 4 229 235
+589ea 2 69 215
+589ec 8 120 241
+589f4 4 69 215
+589f8 4 90 215
+589fc 2 65 238
+589fe 2 90 215
+58a00 6 93 241
+58a06 2 107 241
+58a08 6 108 241
+58a0e 4 110 241
+58a12 4 107 241
+58a16 2 110 241
+58a18 8 124 241
+58a20 2 92 215
+58a22 6 235 235
+58a28 4 764 186
+58a2c 2 235 235
+58a2e 4 191 246
+58a32 2 93 215
+58a34 2 191 246
+58a36 4 95 215
+58a3a 6 191 246
+58a40 2 65 238
+58a42 6 93 241
+58a48 6 400 237
+58a4e 6 94 241
+58a54 6 104 241
+58a5a 14 235 235
+58a6e 2 96 241
+58a70 6 97 241
+58a76 4 99 241
+58a7a 4 96 241
+58a7e 2 99 241
+58a80 4 93 241
+58a84 6 235 235
+58a8a 4 764 186
+58a8e 2 235 235
+58a90 2 93 215
+58a92 a 191 246
+58a9c 2 93 215
+58a9e 4 95 215
+58aa2 4 94 215
+58aa6 6 235 235
+58aac 4 764 186
+58ab0 2 235 235
+58ab2 4 191 246
+58ab6 2 93 215
+58ab8 2 191 246
+58aba 4 95 215
+58abe 6 191 246
+58ac4 e 77 215
+58ad2 12 229 235
+58ae4 20 235 235
+58b04 6 91 241
+58b0a 2 68 215
+58b0c 8 229 235
+58b14 4 229 235
+58b18 2 69 215
+58b1a 2 93 241
+58b1c 2 69 215
+58b1e 2 101 241
+58b20 8 229 235
+FUNC 58b28 84 0 std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >::equal(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > const&) const
+58b28 4 74 215
+58b2c 2 75 215
+58b2e 2 74 215
+58b30 2 75 215
+58b32 4 90 215
+58b36 4 77 215
+58b3a 6 90 215
+58b40 2 79 215
+58b42 c 79 215
+58b4e 4 80 215
+58b52 6 235 235
+58b58 4 764 186
+58b5c 2 235 235
+58b5e 4 191 246
+58b62 2 93 215
+58b64 6 191 246
+58b6a 2 95 215
+58b6c 2 94 215
+58b6e 4 95 215
+58b72 6 235 235
+58b78 4 764 186
+58b7c 2 235 235
+58b7e 4 191 246
+58b82 2 93 215
+58b84 a 191 246
+58b8e 6 95 215
+58b94 18 235 235
+FUNC 58bac 78 0 std::time_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_get_monthname(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&, int&, tm*) const
+58bac 4 384 241
+58bb0 8 292 241
+58bb8 2 384 241
+58bba 6 292 241
+58bc0 6 384 241
+58bc6 8 292 241
+58bce 2 384 241
+58bd0 4 292 241
+58bd4 4 293 241
+58bd8 18 294 241
+58bf0 2 390 241
+58bf2 2 294 241
+58bf4 2 390 241
+58bf6 a 396 241
+58c00 a 397 241
+58c0a 2 392 241
+58c0c 2 112 215
+58c0e 2 392 241
+58c10 6 112 215
+58c16 4 393 241
+58c1a a 394 241
+FUNC 58c24 76 0 std::time_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_get_weekday(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&, int&, tm*) const
+58c24 4 367 241
+58c28 8 281 241
+58c30 6 367 241
+58c36 4 281 241
+58c3a 2 367 241
+58c3c 4 281 241
+58c40 2 367 241
+58c42 4 281 241
+58c46 4 282 241
+58c4a 1c 283 241
+58c66 2 373 241
+58c68 2 283 241
+58c6a 2 373 241
+58c6c a 379 241
+58c76 a 380 241
+58c80 2 375 241
+58c82 2 112 215
+58c84 2 375 241
+58c86 6 112 215
+58c8c 4 376 241
+58c90 a 377 241
+FUNC 58c9c 284 0 std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > std::priv::__do_get_alphabool<std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, wchar_t>(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >&, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >&, std::ios_base&, int&, bool&, wchar_t*)
+58c9c 4 449 223
+58ca0 2 145 212
+58ca2 2 449 223
+58ca4 2 449 223
+58ca6 2 145 212
+58ca8 4 449 223
+58cac 8 145 212
+58cb4 c 351 218
+58cc0 6 451 223
+58cc6 a 88 227
+58cd0 2 89 227
+58cd2 2 88 227
+58cd4 2 89 227
+58cd6 2 88 227
+58cd8 16 89 227
+58cee 2 95 215
+58cf0 2 69 215
+58cf2 2 75 215
+58cf4 8 90 215
+58cfc 4 77 215
+58d00 a 90 215
+58d0a 6 458 223
+58d10 10 90 215
+58d20 6 460 223
+58d26 4 460 223
+58d2a 10 449 223
+58d3a 6 461 223
+58d40 4 461 223
+58d44 10 449 223
+58d54 2 462 223
+58d56 6 464 223
+58d5c a 400 237
+58d66 6 464 223
+58d6c 4 229 235
+58d70 4 229 235
+58d74 4 69 215
+58d78 6 471 223
+58d7e 6 400 237
+58d84 e 449 223
+58d92 6 472 223
+58d98 6 400 237
+58d9e e 449 223
+58dac 6 474 223
+58db2 8 474 223
+58dba 6 475 223
+58dc0 6 476 223
+58dc6 8 112 215
+58dce 2 481 223
+58dd0 a 482 223
+58dda 6 484 223
+58de0 2 64 238
+58de2 4 484 223
+58de6 6 96 238
+58dec 2 96 238
+58dee 2 97 238
+58df0 2 135 222
+58df2 2 97 238
+58df4 4 323 201
+58df8 4 161 201
+58dfc 4 161 201
+58e00 2 64 238
+58e02 6 96 238
+58e08 2 96 238
+58e0a 4 97 238
+58e0e 4 323 201
+58e12 4 161 201
+58e16 4 161 201
+58e1a 8 485 223
+58e22 6 235 235
+58e28 4 764 186
+58e2c 2 235 235
+58e2e 4 191 246
+58e32 2 93 215
+58e34 2 191 246
+58e36 4 95 215
+58e3a 4 191 246
+58e3e 4 94 215
+58e42 6 464 223
+58e48 a 400 237
+58e52 6 464 223
+58e58 2 229 235
+58e5a 4 464 223
+58e5e 2 229 235
+58e60 8 229 235
+58e68 6 464 223
+58e6e 4 229 235
+58e72 4 229 235
+58e76 8 69 215
+58e7e 6 235 235
+58e84 4 764 186
+58e88 2 235 235
+58e8a 4 191 246
+58e8e 2 93 215
+58e90 4 191 246
+58e94 4 95 215
+58e98 a 191 246
+58ea2 a 229 235
+58eac 6 235 235
+58eb2 4 764 186
+58eb6 2 235 235
+58eb8 4 191 246
+58ebc 2 93 215
+58ebe 2 191 246
+58ec0 4 95 215
+58ec4 8 191 246
+58ecc 20 235 235
+58eec c 135 222
+58ef8 8 479 223
+58f00 a 451 223
+58f0a 16 156 238
+FUNC 58f20 1ce 0 bool std::priv::__get_integer<std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, int, wchar_t>(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >&, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >&, int, int&, int, bool, wchar_t, std::string const&, std::__false_type const&)
+58f20 6 178 223
+58f26 4 178 223
+58f2a 2 183 223
+58f2c 4 186 223
+58f30 2 185 223
+58f32 2 178 223
+58f34 4 188 223
+58f38 2 183 223
+58f3a 4 95 215
+58f3e 4 183 223
+58f42 2 188 223
+58f44 2 178 223
+58f46 4 183 223
+58f4a 4 178 223
+58f4e 6 183 223
+58f54 a 188 223
+58f5e 2 186 223
+58f60 2 181 223
+58f62 2 186 223
+58f64 4 188 223
+58f68 2 75 215
+58f6a 8 90 215
+58f72 4 77 215
+58f76 8 90 215
+58f7e 6 190 223
+58f84 8 90 215
+58f8c 6 194 223
+58f92 6 194 223
+58f98 6 52 223
+58f9e 2 52 223
+58fa0 4 202 223
+58fa4 2 208 223
+58fa6 2 206 223
+58fa8 4 205 223
+58fac 2 208 223
+58fae 2 206 223
+58fb0 2 208 223
+58fb2 4 211 223
+58fb6 4 212 223
+58fba 6 213 223
+58fc0 6 213 223
+58fc6 4 213 223
+58fca 2 68 215
+58fcc 8 229 235
+58fd4 4 229 235
+58fd8 6 69 215
+58fde 6 235 235
+58fe4 4 764 186
+58fe8 2 235 235
+58fea 4 191 246
+58fee 2 93 215
+58ff0 2 191 246
+58ff2 4 95 215
+58ff6 4 191 246
+58ffa 2 94 215
+58ffc 8 190 223
+59004 6 218 223
+5900a 6 218 223
+59010 8 219 223
+59018 2 233 223
+5901a 6 223 223
+59020 6 224 223
+59026 2 224 223
+59028 2 233 223
+5902a 6 224 223
+59030 6 234 223
+59036 2 92 215
+59038 6 235 235
+5903e 4 764 186
+59042 2 235 235
+59044 4 191 246
+59048 2 93 215
+5904a 4 191 246
+5904e 4 95 215
+59052 8 191 246
+5905a 2 68 215
+5905c 4 209 223
+59060 8 229 235
+59068 a 229 235
+59072 4 211 223
+59076 6 235 235
+5907c 4 764 186
+59080 2 235 235
+59082 4 191 246
+59086 2 93 215
+59088 2 191 246
+5908a 4 95 215
+5908e 8 191 246
+59096 6 195 223
+5909c 2 196 223
+5909e 2 195 223
+590a0 2 197 223
+590a2 6 52 223
+590a8 18 235 235
+590c0 6 224 223
+590c6 2 224 223
+590c8 4 224 223
+590cc 2 224 223
+590ce 2 233 223
+590d0 6 233 223
+590d6 2 65 238
+590d8 4 233 223
+590dc 2 65 238
+590de 8 233 223
+590e6 8 224 223
+FUNC 590f0 4e 0 std::priv::__get_decimal_integer<std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, int, wchar_t>
+590f0 4 239 223
+590f4 2 120 238
+590f6 4 239 223
+590fa 4 124 238
+590fe 2 239 223
+59100 2 120 238
+59102 2 481 201
+59104 4 124 238
+59108 4 101 205
+5910c 4 242 223
+59110 2 101 205
+59112 16 242 223
+59128 6 156 238
+5912e 6 243 223
+59134 a 156 238
+FUNC 59140 350 0 char const* std::priv::__get_formatted_time<std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, wchar_t, std::priv::_WTime_Info>(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, char const*, char const*, wchar_t*, std::priv::_WTime_Info const&, std::ios_base const&, int&, tm*)
+59140 8 149 241
+59148 4 149 241
+5914c 2 145 212
+5914e 4 149 241
+59152 4 145 212
+59156 2 149 241
+59158 2 145 212
+5915a c 149 241
+59166 6 145 212
+5916c c 351 218
+59178 2 153 241
+5917a 4 231 241
+5917e 2 95 215
+59180 2 231 241
+59182 4 153 241
+59186 6 231 241
+5918c 4 75 215
+59190 a 90 215
+5919a 4 77 215
+5919e a 90 215
+591a8 8 156 241
+591b0 c 276 241
+591bc 6 235 235
+591c2 4 764 186
+591c6 4 235 235
+591ca 4 191 246
+591ce 2 93 215
+591d0 2 191 246
+591d2 4 95 215
+591d6 4 191 246
+591da 4 156 241
+591de 4 94 215
+591e2 4 156 241
+591e6 4 156 241
+591ea 8 158 241
+591f2 2 160 241
+591f4 6 161 241
+591fa 2 159 241
+591fc 7e 166 241
+5927a 2 157 241
+5927c 1c 171 241
+59298 4 172 241
+5929c 4 174 241
+592a0 4 272 241
+592a4 c 250 241
+592b0 6 251 241
+592b6 4 272 241
+592ba 10 231 241
+592ca 6 232 241
+592d0 6 235 241
+592d6 4 237 241
+592da 6 237 241
+592e0 6 238 241
+592e6 4 272 241
+592ea c 213 241
+592f6 a 214 241
+59300 2 215 241
+59302 4 215 241
+59306 4 215 241
+5930a a 216 241
+59314 2 217 241
+59316 c 206 241
+59322 6 207 241
+59328 4 272 241
+5932c c 190 241
+59338 2 191 241
+5933a 8 191 241
+59342 4 191 241
+59346 a 192 241
+59350 2 193 241
+59352 2 166 241
+59354 2 157 241
+59356 20 182 241
+59376 6 183 241
+5937c 4 185 241
+59380 4 272 241
+59384 c 257 241
+59390 e 258 241
+5939e 6 259 241
+593a4 4 272 241
+593a8 a 243 241
+593b2 6 244 241
+593b8 4 272 241
+593bc c 223 241
+593c8 6 224 241
+593ce 4 272 241
+593d2 c 199 241
+593de 6 200 241
+593e4 4 272 241
+593e8 2 166 241
+593ea 4 179 241
+593ee 2 166 241
+593f0 4 168 241
+593f4 8 269 241
+593fc 4 90 215
+59400 4 269 241
+59404 2 90 215
+59406 a 206 206
+59410 6 269 241
+59416 4 272 241
+5941a 6 235 235
+59420 4 764 186
+59424 2 235 235
+59426 4 191 246
+5942a 2 93 215
+5942c 2 191 246
+5942e 4 95 215
+59432 a 191 246
+5943c 2 92 215
+5943e 6 235 235
+59444 6 764 186
+5944a 2 235 235
+5944c a 235 235
+59456 2 163 241
+59458 4 162 241
+5945c 10 235 235
+5946c a 235 241
+59476 2 236 241
+59478 2 272 241
+5947a 6 236 241
+59480 10 153 241
+FUNC 59490 8a 0 std::time_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_get_date(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&, int&, tm*) const
+59490 8 304 241
+59498 2 315 241
+5949a 2 304 241
+5949c 4 89 238
+594a0 4 315 241
+594a4 2 304 241
+594a6 8 315 241
+594ae 6 304 241
+594b4 2 315 241
+594b6 4 304 241
+594ba 2c 315 241
+594e6 2 316 241
+594e8 4 317 241
+594ec 2 316 241
+594ee 2 319 241
+594f0 2 112 215
+594f2 2 319 241
+594f4 6 112 215
+594fa 2 320 241
+594fc 8 321 241
+59504 a 323 241
+5950e c 324 241
+FUNC 5951c 78 0 std::time_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_get_time(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&, int&, tm*) const
+5951c 6 328 241
+59522 2 338 241
+59524 4 328 241
+59528 8 338 241
+59530 4 328 241
+59534 2 89 238
+59536 2 338 241
+59538 4 328 241
+5953c 10 338 241
+5954c 2 328 241
+5954e 14 338 241
+59562 2 112 215
+59564 8 339 241
+5956c 2 112 215
+5956e 2 339 241
+59570 4 112 215
+59574 2 341 241
+59576 8 342 241
+5957e a 343 241
+59588 c 344 241
+FUNC 59594 6e 0 std::time_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_get_year(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&, int&, tm*) const
+59594 4 348 241
+59598 2 348 241
+5959a 4 112 215
+5959e 8 348 241
+595a6 4 112 215
+595aa 2 351 241
+595ac 6 353 241
+595b2 4 352 241
+595b6 4 353 241
+595ba a 363 241
+595c4 c 356 241
+595d0 2 357 241
+595d2 2 112 215
+595d4 8 357 241
+595dc 8 358 241
+595e4 2 112 215
+595e6 2 358 241
+595e8 4 112 215
+595ec 2 359 241
+595ee 8 360 241
+595f6 c 362 241
+FUNC 59604 84 0 std::istreambuf_iterator<char, std::char_traits<char> >::equal(std::istreambuf_iterator<char, std::char_traits<char> > const&) const
+59604 4 74 215
+59608 2 75 215
+5960a 2 74 215
+5960c 2 75 215
+5960e 4 90 215
+59612 4 77 215
+59616 6 90 215
+5961c 2 79 215
+5961e c 79 215
+5962a 4 80 215
+5962e 6 235 235
+59634 4 223 246
+59638 2 235 235
+5963a 4 191 246
+5963e 2 220 246
+59640 6 191 246
+59646 2 95 215
+59648 2 94 215
+5964a 4 95 215
+5964e 6 235 235
+59654 4 223 246
+59658 2 235 235
+5965a 4 191 246
+5965e 2 220 246
+59660 a 191 246
+5966a 6 95 215
+59670 18 235 235
+FUNC 59688 178 0 unsigned int std::priv::__match<std::istreambuf_iterator<char, std::char_traits<char> >, std::string const*>(std::istreambuf_iterator<char, std::char_traits<char> >&, std::istreambuf_iterator<char, std::char_traits<char> >&, std::string const*, std::string const*)
+59688 6 78 241
+5968e 2 78 241
+59690 4 107 241
+59694 2 78 241
+59696 2 80 241
+59698 2 78 241
+5969a 2 87 241
+5969c 2 80 241
+5969e 4 120 215
+596a2 2 82 241
+596a4 4 80 241
+596a8 2 87 241
+596aa 2 81 241
+596ac 2 87 241
+596ae 4 80 241
+596b2 4 87 241
+596b6 4 80 241
+596ba 4 87 241
+596be 8 80 241
+596c6 2 85 241
+596c8 2 83 241
+596ca 4 120 215
+596ce 4 89 241
+596d2 6 91 241
+596d8 10 78 241
+596e8 c 91 241
+596f4 a 92 241
+596fe 2 115 241
+59700 8 115 241
+59708 2 91 241
+5970a 8 115 241
+59712 6 91 241
+59718 2 68 215
+5971a 8 229 235
+59722 4 229 235
+59726 2 69 215
+59728 2 120 215
+5972a 2 69 215
+5972c 4 120 241
+59730 2 120 215
+59732 2 120 241
+59734 4 120 215
+59738 4 89 241
+5973c 8 124 241
+59744 4 90 215
+59748 2 65 238
+5974a 2 90 215
+5974c 6 93 241
+59752 2 107 241
+59754 6 108 241
+5975a 4 110 241
+5975e 4 107 241
+59762 4 110 241
+59766 2 92 215
+59768 6 235 235
+5976e 4 223 246
+59772 2 235 235
+59774 4 191 246
+59778 2 220 246
+5977a 2 191 246
+5977c 2 93 215
+5977e 4 191 246
+59782 4 95 215
+59786 2 191 246
+59788 2 65 238
+5978a 6 93 241
+59790 4 400 237
+59794 6 94 241
+5979a 6 104 241
+597a0 14 235 235
+597b4 2 96 241
+597b6 6 97 241
+597bc 4 99 241
+597c0 4 96 241
+597c4 2 99 241
+597c6 6 93 241
+597cc 10 229 235
+597dc 4 91 241
+597e0 2 68 215
+597e2 8 229 235
+597ea 4 229 235
+597ee 2 69 215
+597f0 4 93 241
+597f4 2 69 215
+597f6 2 101 241
+597f8 8 229 235
+FUNC 59800 6e 0 std::time_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::do_get_monthname(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, int&, tm*) const
+59800 2 384 241
+59802 4 292 241
+59806 2 384 241
+59808 6 292 241
+5980e 6 384 241
+59814 8 292 241
+5981c 2 384 241
+5981e 4 292 241
+59822 2 384 241
+59824 4 293 241
+59828 18 294 241
+59840 2 390 241
+59842 2 294 241
+59844 2 390 241
+59846 8 396 241
+5984e 6 397 241
+59854 2 392 241
+59856 2 112 215
+59858 2 392 241
+5985a 6 112 215
+59860 4 393 241
+59864 a 394 241
+FUNC 59870 70 0 std::time_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::do_get_weekday(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, int&, tm*) const
+59870 2 367 241
+59872 4 281 241
+59876 2 367 241
+59878 4 281 241
+5987c 2 367 241
+5987e 2 281 241
+59880 4 367 241
+59884 6 281 241
+5988a 2 367 241
+5988c 4 281 241
+59890 2 367 241
+59892 4 282 241
+59896 1c 283 241
+598b2 2 373 241
+598b4 2 283 241
+598b6 2 373 241
+598b8 8 379 241
+598c0 6 380 241
+598c6 2 375 241
+598c8 2 112 215
+598ca 2 375 241
+598cc 6 112 215
+598d2 4 376 241
+598d6 a 377 241
+FUNC 598e0 c0 0 std::pair<std::istreambuf_iterator<char, std::char_traits<char> >, bool> std::priv::__get_string<std::istreambuf_iterator<char, std::char_traits<char> >, char*>(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char, std::char_traits<char> >, char*, char*)
+598e0 8 51 220
+598e8 2 51 220
+598ea 4 95 215
+598ee 8 51 220
+598f6 4 69 215
+598fa 6 51 220
+59900 8 120 215
+59908 2 69 215
+5990a 2 53 220
+5990c 4 53 220
+59910 a 90 215
+5991a 2 95 215
+5991c 6 53 220
+59922 4 57 220
+59926 4 57 220
+5992a 2 57 220
+5992c a 57 220
+59936 4 57 220
+5993a 4 62 230
+5993e c 58 220
+5994a 2 92 215
+5994c 6 235 235
+59952 4 223 246
+59956 2 235 235
+59958 4 191 246
+5995c 2 220 246
+5995e 2 191 246
+59960 4 93 215
+59964 4 191 246
+59968 2 53 220
+5996a 2 95 215
+5996c 4 191 246
+59970 2 53 220
+59972 4 95 215
+59976 2 53 220
+59978 2 68 215
+5997a 8 229 235
+59982 2 229 235
+59984 4 69 215
+59988 4 229 235
+5998c 6 229 235
+59992 6 69 215
+59998 8 235 235
+FUNC 599a0 198 0 std::istreambuf_iterator<char, std::char_traits<char> > std::priv::__do_get_alphabool<std::istreambuf_iterator<char, std::char_traits<char> >, char>(std::istreambuf_iterator<char, std::char_traits<char> >&, std::istreambuf_iterator<char, std::char_traits<char> >&, std::ios_base&, int&, bool&, char*)
+599a0 2 145 212
+599a2 6 449 223
+599a8 4 449 223
+599ac 4 145 212
+599b0 2 449 223
+599b2 6 145 212
+599b8 c 351 218
+599c4 6 451 223
+599ca a 59 227
+599d4 10 60 227
+599e4 2 95 215
+599e6 2 69 215
+599e8 8 120 215
+599f0 2 458 223
+599f2 a 90 215
+599fc 2 460 223
+599fe 2 460 223
+59a00 e 449 223
+59a0e 2 461 223
+59a10 2 461 223
+59a12 a 449 223
+59a1c 2 462 223
+59a1e 4 464 223
+59a22 6 400 237
+59a28 4 464 223
+59a2c 8 229 235
+59a34 4 229 235
+59a38 4 69 215
+59a3c 2 471 223
+59a3e 6 400 237
+59a44 8 449 223
+59a4c 2 472 223
+59a4e 6 400 237
+59a54 8 449 223
+59a5c 2 474 223
+59a5e 4 474 223
+59a62 6 475 223
+59a68 4 476 223
+59a6c 8 112 215
+59a74 2 481 223
+59a76 a 482 223
+59a80 8 484 223
+59a88 c 156 238
+59a94 8 485 223
+59a9c 4 464 223
+59aa0 6 400 237
+59aa6 4 464 223
+59aaa 2 229 235
+59aac 2 464 223
+59aae 6 229 235
+59ab4 8 229 235
+59abc 4 464 223
+59ac0 8 229 235
+59ac8 4 229 235
+59acc 6 69 215
+59ad2 2 92 215
+59ad4 6 235 235
+59ada 4 223 246
+59ade 2 235 235
+59ae0 4 191 246
+59ae4 2 220 246
+59ae6 4 191 246
+59aea 2 93 215
+59aec 4 191 246
+59af0 4 95 215
+59af4 4 191 246
+59af8 6 229 235
+59afe 6 69 215
+59b04 c 235 235
+59b10 8 479 223
+59b18 a 451 223
+59b22 16 156 238
+FUNC 59b38 158 0 std::priv::__copy_digits<std::istreambuf_iterator<char, std::char_traits<char> >, char>
+59b38 6 314 223
+59b3e 2 314 223
+59b40 2 316 223
+59b42 4 314 223
+59b46 4 70 213
+59b4a 4 314 223
+59b4e 2 101 205
+59b50 4 70 213
+59b54 4 90 215
+59b58 4 39 223
+59b5c 6 320 223
+59b62 2 74 238
+59b64 4 64 238
+59b68 4 74 238
+59b6c 2 74 238
+59b6e 8 74 238
+59b76 4 535 237
+59b7a 4 101 205
+59b7e 2 90 238
+59b80 4 232 246
+59b84 2 68 215
+59b86 2 539 237
+59b88 2 229 235
+59b8a 2 539 237
+59b8c 2 229 235
+59b8e 2 539 237
+59b90 4 229 235
+59b94 4 229 235
+59b98 2 322 223
+59b9a 4 69 215
+59b9e 8 120 215
+59ba6 2 318 223
+59ba8 6 90 215
+59bae 2 92 215
+59bb0 6 235 235
+59bb6 4 223 246
+59bba 2 235 235
+59bbc 4 191 246
+59bc0 4 220 246
+59bc4 2 191 246
+59bc6 4 93 215
+59bca 4 191 246
+59bce 4 95 215
+59bd2 4 39 223
+59bd6 2 191 246
+59bd8 6 320 223
+59bde 8 328 223
+59be6 8 229 235
+59bee 2 400 237
+59bf0 4 304 237
+59bf4 e 306 237
+59c02 6 307 237
+59c08 4 307 237
+59c0c 4 64 213
+59c10 6 67 213
+59c16 2 64 213
+59c18 2 86 243
+59c1a 4 84 243
+59c1e 2 86 243
+59c20 4 314 223
+59c24 2 84 243
+59c26 4 764 186
+59c2a 4 146 205
+59c2e 4 86 243
+59c32 4 101 205
+59c36 4 64 238
+59c3a 4 96 238
+59c3e 2 96 238
+59c40 2 70 213
+59c42 2 97 238
+59c44 4 70 213
+59c48 2 97 238
+59c4a 4 161 201
+59c4e 4 161 201
+59c52 4 175 236
+59c56 2 164 238
+59c58 2 160 238
+59c5a 6 165 238
+59c60 4 307 237
+59c64 12 134 222
+59c76 8 235 235
+59c7e 6 135 222
+59c84 c 600 236
+FUNC 59c90 17a 0 bool std::priv::__get_integer<std::istreambuf_iterator<char, std::char_traits<char> >, int, char>(std::istreambuf_iterator<char, std::char_traits<char> >&, std::istreambuf_iterator<char, std::char_traits<char> >&, int, int&, int, bool, char, std::string const&, std::__false_type const&)
+59c90 6 178 223
+59c96 4 178 223
+59c9a 2 183 223
+59c9c 4 186 223
+59ca0 2 185 223
+59ca2 2 178 223
+59ca4 4 188 223
+59ca8 2 183 223
+59caa 2 196 223
+59cac 4 183 223
+59cb0 2 188 223
+59cb2 2 178 223
+59cb4 4 183 223
+59cb8 4 178 223
+59cbc 6 183 223
+59cc2 4 188 223
+59cc6 4 178 223
+59cca 2 186 223
+59ccc 2 120 215
+59cce 4 186 223
+59cd2 2 181 223
+59cd4 6 178 223
+59cda 2 188 223
+59cdc 6 120 215
+59ce2 4 190 223
+59ce6 8 90 215
+59cee 6 194 223
+59cf4 6 194 223
+59cfa 4 52 223
+59cfe 2 52 223
+59d00 4 202 223
+59d04 2 208 223
+59d06 2 206 223
+59d08 4 205 223
+59d0c 2 208 223
+59d0e 2 206 223
+59d10 2 208 223
+59d12 4 211 223
+59d16 4 212 223
+59d1a 6 213 223
+59d20 6 213 223
+59d26 4 213 223
+59d2a 2 68 215
+59d2c 8 229 235
+59d34 4 229 235
+59d38 4 69 215
+59d3c 8 120 215
+59d44 6 190 223
+59d4a 6 218 223
+59d50 6 218 223
+59d56 8 219 223
+59d5e 2 233 223
+59d60 6 223 223
+59d66 6 224 223
+59d6c 2 224 223
+59d6e 2 233 223
+59d70 6 224 223
+59d76 6 234 223
+59d7c 2 92 215
+59d7e 6 235 235
+59d84 4 223 246
+59d88 2 235 235
+59d8a 4 191 246
+59d8e 2 220 246
+59d90 4 191 246
+59d94 2 93 215
+59d96 4 191 246
+59d9a 2 95 215
+59d9c 2 191 246
+59d9e 4 95 215
+59da2 2 68 215
+59da4 4 209 223
+59da8 8 229 235
+59db0 6 229 235
+59db6 6 69 215
+59dbc 4 211 223
+59dc0 6 195 223
+59dc6 2 196 223
+59dc8 2 195 223
+59dca 2 197 223
+59dcc 6 52 223
+59dd2 a 235 235
+59ddc 6 224 223
+59de2 2 224 223
+59de4 4 224 223
+59de8 2 224 223
+59dea 2 233 223
+59dec 6 233 223
+59df2 2 65 238
+59df4 4 233 223
+59df8 2 65 238
+59dfa 8 233 223
+59e02 8 224 223
+FUNC 59e0c 4e 0 std::priv::__get_decimal_integer<std::istreambuf_iterator<char, std::char_traits<char> >, int, char>
+59e0c 4 239 223
+59e10 2 120 238
+59e12 4 239 223
+59e16 4 124 238
+59e1a 2 239 223
+59e1c 2 120 238
+59e1e 2 481 201
+59e20 4 124 238
+59e24 4 101 205
+59e28 4 242 223
+59e2c 2 101 205
+59e2e 16 242 223
+59e44 6 156 238
+59e4a 6 243 223
+59e50 a 156 238
+FUNC 59e5c 2d0 0 char const* std::priv::__get_formatted_time<std::istreambuf_iterator<char, std::char_traits<char> >, char, std::priv::_Time_Info>(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char, std::char_traits<char> >, char const*, char const*, char*, std::priv::_Time_Info const&, std::ios_base const&, int&, tm*)
+59e5c 6 149 241
+59e62 4 149 241
+59e66 2 145 212
+59e68 4 149 241
+59e6c 4 145 212
+59e70 8 149 241
+59e78 2 145 212
+59e7a a 149 241
+59e84 6 145 212
+59e8a c 351 218
+59e96 6 153 241
+59e9c 4 257 241
+59ea0 4 231 241
+59ea4 2 257 241
+59ea6 2 231 241
+59ea8 8 120 215
+59eb0 2 156 241
+59eb2 8 276 241
+59eba 4 156 241
+59ebe 8 158 241
+59ec6 2 160 241
+59ec8 6 161 241
+59ece 2 159 241
+59ed0 7e 166 241
+59f4e 2 157 241
+59f50 1c 171 241
+59f6c 4 172 241
+59f70 4 174 241
+59f74 4 272 241
+59f78 a 250 241
+59f82 4 251 241
+59f86 4 272 241
+59f8a e 231 241
+59f98 4 232 241
+59f9c 6 235 241
+59fa2 4 237 241
+59fa6 6 237 241
+59fac 6 238 241
+59fb2 4 272 241
+59fb6 c 213 241
+59fc2 a 214 241
+59fcc 2 215 241
+59fce 4 215 241
+59fd2 4 215 241
+59fd6 a 216 241
+59fe0 2 217 241
+59fe2 c 206 241
+59fee 6 207 241
+59ff4 4 272 241
+59ff8 c 190 241
+5a004 2 191 241
+5a006 8 191 241
+5a00e 4 191 241
+5a012 a 192 241
+5a01c 2 193 241
+5a01e 2 166 241
+5a020 2 157 241
+5a022 20 182 241
+5a042 6 183 241
+5a048 4 185 241
+5a04c 4 272 241
+5a050 a 257 241
+5a05a e 258 241
+5a068 6 259 241
+5a06e 4 272 241
+5a072 a 243 241
+5a07c 6 244 241
+5a082 4 272 241
+5a086 c 223 241
+5a092 6 224 241
+5a098 4 272 241
+5a09c c 199 241
+5a0a8 6 200 241
+5a0ae 4 272 241
+5a0b2 2 166 241
+5a0b4 4 179 241
+5a0b8 2 166 241
+5a0ba 4 168 241
+5a0be 8 269 241
+5a0c6 4 90 215
+5a0ca 4 269 241
+5a0ce 2 90 215
+5a0d0 a 101 206
+5a0da 6 269 241
+5a0e0 4 272 241
+5a0e4 2 92 215
+5a0e6 6 235 235
+5a0ec 4 223 246
+5a0f0 2 235 235
+5a0f2 6 220 246
+5a0f8 6 235 235
+5a0fe 6 220 246
+5a104 2 163 241
+5a106 4 162 241
+5a10a a 235 241
+5a114 2 236 241
+5a116 2 272 241
+5a118 6 236 241
+5a11e e 153 241
+FUNC 5a12c 7c 0 std::time_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::do_get_date(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, int&, tm*) const
+5a12c 6 304 241
+5a132 2 89 238
+5a134 8 315 241
+5a13c 2 304 241
+5a13e 2 315 241
+5a140 6 304 241
+5a146 14 315 241
+5a15a 2 304 241
+5a15c 1c 315 241
+5a178 2 316 241
+5a17a 6 317 241
+5a180 2 316 241
+5a182 2 319 241
+5a184 2 112 215
+5a186 2 319 241
+5a188 6 112 215
+5a18e 2 320 241
+5a190 8 321 241
+5a198 8 323 241
+5a1a0 8 324 241
+FUNC 5a1a8 74 0 std::time_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::do_get_time(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, int&, tm*) const
+5a1a8 4 328 241
+5a1ac 2 89 238
+5a1ae 2 328 241
+5a1b0 a 338 241
+5a1ba 8 328 241
+5a1c2 30 338 241
+5a1f2 2 112 215
+5a1f4 8 339 241
+5a1fc 2 112 215
+5a1fe 2 339 241
+5a200 4 112 215
+5a204 2 341 241
+5a206 8 342 241
+5a20e 8 343 241
+5a216 6 344 241
+FUNC 5a21c 68 0 std::time_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::do_get_year(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, int&, tm*) const
+5a21c 4 348 241
+5a220 2 348 241
+5a222 4 112 215
+5a226 a 348 241
+5a230 4 112 215
+5a234 2 351 241
+5a236 4 353 241
+5a23a 4 352 241
+5a23e 4 353 241
+5a242 6 363 241
+5a248 c 356 241
+5a254 2 357 241
+5a256 2 112 215
+5a258 8 357 241
+5a260 8 358 241
+5a268 2 112 215
+5a26a 2 358 241
+5a26c 4 112 215
+5a270 2 359 241
+5a272 8 360 241
+5a27a a 362 241
+FUNC 5a284 2b2 0 int std::priv::__get_base_or_zero<std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, wchar_t>(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >&, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >&, int, std::ctype<wchar_t> const&)
+5a284 6 56 223
+5a28a 8 56 223
+5a292 a 59 223
+5a29c 4 209 206
+5a2a0 2 59 223
+5a2a2 8 209 206
+5a2aa 8 90 215
+5a2b2 6 64 223
+5a2b8 8 68 223
+5a2c0 4 74 223
+5a2c4 c 76 223
+5a2d0 8 120 215
+5a2d8 4 95 223
+5a2dc 2 95 223
+5a2de 2 72 223
+5a2e0 4 112 223
+5a2e4 6 113 223
+5a2ea 2 92 215
+5a2ec 6 235 235
+5a2f2 4 764 186
+5a2f6 2 235 235
+5a2f8 4 191 246
+5a2fc 2 93 215
+5a2fe 8 191 246
+5a306 4 95 215
+5a30a 6 64 223
+5a310 2 68 215
+5a312 8 229 235
+5a31a 4 229 235
+5a31e 4 74 223
+5a322 4 69 215
+5a326 2 76 223
+5a328 2 69 215
+5a32a 2 76 223
+5a32c 8 120 215
+5a334 2 85 223
+5a336 2 85 223
+5a338 4 72 223
+5a33c 2 68 215
+5a33e 8 229 235
+5a346 4 229 235
+5a34a 6 69 215
+5a350 8 229 235
+5a358 8 90 215
+5a360 6 85 223
+5a366 2 68 215
+5a368 8 229 235
+5a370 4 229 235
+5a374 2 69 215
+5a376 2 120 215
+5a378 2 69 215
+5a37a 6 120 215
+5a380 4 87 223
+5a384 2 87 223
+5a386 4 91 223
+5a38a 8 90 215
+5a392 6 95 223
+5a398 2 68 215
+5a39a 8 229 235
+5a3a2 4 229 235
+5a3a6 2 69 215
+5a3a8 2 120 215
+5a3aa 2 69 215
+5a3ac 6 120 215
+5a3b2 2 97 223
+5a3b4 2 97 223
+5a3b6 4 105 223
+5a3ba 8 229 235
+5a3c2 8 235 235
+5a3ca 8 90 215
+5a3d2 6 97 223
+5a3d8 2 68 215
+5a3da 8 229 235
+5a3e2 4 229 235
+5a3e6 8 69 215
+5a3ee 8 90 215
+5a3f6 6 87 223
+5a3fc 6 90 215
+5a402 8 87 223
+5a40a 4 91 223
+5a40e 2 92 215
+5a410 6 235 235
+5a416 4 764 186
+5a41a 2 235 235
+5a41c 4 191 246
+5a420 2 93 215
+5a422 8 191 246
+5a42a 6 95 215
+5a430 2 92 215
+5a432 6 235 235
+5a438 4 764 186
+5a43c 2 235 235
+5a43e 4 191 246
+5a442 2 93 215
+5a444 8 191 246
+5a44c 6 95 215
+5a452 18 229 235
+5a46a 6 90 215
+5a470 8 97 223
+5a478 4 105 223
+5a47c 2 92 215
+5a47e 6 235 235
+5a484 4 764 186
+5a488 2 235 235
+5a48a 4 191 246
+5a48e 2 93 215
+5a490 8 191 246
+5a498 6 95 215
+5a49e 2 92 215
+5a4a0 6 235 235
+5a4a6 4 764 186
+5a4aa 2 235 235
+5a4ac 4 191 246
+5a4b0 2 93 215
+5a4b2 8 191 246
+5a4ba 6 95 215
+5a4c0 2 92 215
+5a4c2 6 235 235
+5a4c8 4 764 186
+5a4cc 2 235 235
+5a4ce 4 191 246
+5a4d2 2 93 215
+5a4d4 8 191 246
+5a4dc 6 95 215
+5a4e2 2 92 215
+5a4e4 6 235 235
+5a4ea 4 764 186
+5a4ee 2 235 235
+5a4f0 4 191 246
+5a4f4 2 93 215
+5a4f6 a 191 246
+5a500 6 95 215
+5a506 30 235 235
+FUNC 5a538 1e8 0 bool std::priv::__get_integer<std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, long, wchar_t>(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >&, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >&, int, long&, int, bool, wchar_t, std::string const&, std::__true_type const&)
+5a538 6 118 223
+5a53e 4 118 223
+5a542 2 123 223
+5a544 4 126 223
+5a548 2 125 223
+5a54a 2 118 223
+5a54c 4 128 223
+5a550 2 123 223
+5a552 4 95 215
+5a556 4 123 223
+5a55a 2 128 223
+5a55c 2 118 223
+5a55e 4 123 223
+5a562 8 118 223
+5a56a 6 123 223
+5a570 2 118 223
+5a572 4 128 223
+5a576 a 126 223
+5a580 2 121 223
+5a582 4 128 223
+5a586 2 75 215
+5a588 8 90 215
+5a590 4 77 215
+5a594 8 90 215
+5a59c 6 130 223
+5a5a2 8 90 215
+5a5aa 6 134 223
+5a5b0 8 134 223
+5a5b8 6 52 223
+5a5be 2 52 223
+5a5c0 4 142 223
+5a5c4 2 148 223
+5a5c6 2 146 223
+5a5c8 4 145 223
+5a5cc 2 148 223
+5a5ce 2 146 223
+5a5d0 2 148 223
+5a5d2 6 151 223
+5a5d8 4 152 223
+5a5dc 6 153 223
+5a5e2 6 153 223
+5a5e8 4 153 223
+5a5ec 2 68 215
+5a5ee 8 229 235
+5a5f6 4 229 235
+5a5fa 6 69 215
+5a600 6 235 235
+5a606 4 764 186
+5a60a 2 235 235
+5a60c 4 191 246
+5a610 2 93 215
+5a612 4 191 246
+5a616 4 95 215
+5a61a 4 191 246
+5a61e 2 94 215
+5a620 8 130 223
+5a628 6 158 223
+5a62e 6 158 223
+5a634 8 159 223
+5a63c 2 173 223
+5a63e 6 163 223
+5a644 6 164 223
+5a64a 6 164 223
+5a650 2 164 223
+5a652 2 173 223
+5a654 6 164 223
+5a65a 6 174 223
+5a660 2 92 215
+5a662 6 235 235
+5a668 4 764 186
+5a66c 2 235 235
+5a66e 4 191 246
+5a672 2 93 215
+5a674 2 191 246
+5a676 4 95 215
+5a67a 8 191 246
+5a682 2 68 215
+5a684 4 149 223
+5a688 8 229 235
+5a690 a 229 235
+5a69a 4 151 223
+5a69e 6 235 235
+5a6a4 4 764 186
+5a6a8 2 235 235
+5a6aa 4 191 246
+5a6ae 2 93 215
+5a6b0 2 191 246
+5a6b2 4 95 215
+5a6b6 8 191 246
+5a6be 6 135 223
+5a6c4 2 136 223
+5a6c6 2 135 223
+5a6c8 2 137 223
+5a6ca 6 52 223
+5a6d0 18 235 235
+5a6e8 4 164 223
+5a6ec 6 164 223
+5a6f2 2 173 223
+5a6f4 6 173 223
+5a6fa 2 65 238
+5a6fc 4 173 223
+5a700 2 65 238
+5a702 8 173 223
+5a70a 6 164 223
+5a710 2 173 223
+5a712 6 164 223
+5a718 4 164 223
+5a71c 4 164 223
+FUNC 5a720 f8 0 std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > std::priv::__do_get_integer<std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, long, wchar_t>(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >&, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >&, std::ios_base&, int&, long&, wchar_t*)
+5a720 6 247 223
+5a726 4 145 212
+5a72a 2 247 223
+5a72c 4 247 223
+5a730 4 145 212
+5a734 6 247 223
+5a73a 6 145 212
+5a740 c 351 218
+5a74c c 258 223
+5a758 8 112 215
+5a760 4 259 223
+5a764 2 263 223
+5a766 6 265 223
+5a76c 6 266 223
+5a772 4 287 223
+5a776 8 112 215
+5a77e 2 289 223
+5a780 c 290 223
+5a78c e 291 223
+5a79a a 292 223
+5a7a4 a 351 218
+5a7ae 2 86 227
+5a7b0 2 351 218
+5a7b2 4 86 227
+5a7b6 8 87 227
+5a7be 2 86 227
+5a7c0 8 87 227
+5a7c8 2 283 223
+5a7ca 2 275 223
+5a7cc 20 283 223
+5a7ec 6 156 238
+5a7f2 2 287 223
+5a7f4 4 287 223
+5a7f8 4 287 223
+5a7fc 6 156 238
+5a802 16 291 223
+FUNC 5a818 2e 0 std::num_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_get(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&, int&, long&) const
+5a818 6 537 223
+5a81e 8 537 223
+5a826 20 539 223
+FUNC 5a848 80 0 std::num_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_get(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&, int&, bool&) const
+5a848 6 499 223
+5a84e e 499 223
+5a85c 4 501 223
+5a860 2 499 223
+5a862 6 501 223
+5a868 1c 506 223
+5a884 6 507 223
+5a88a 8 515 223
+5a892 c 517 223
+5a89e 4 508 223
+5a8a2 4 511 223
+5a8a6 12 502 223
+5a8b8 2 510 223
+5a8ba 8 513 223
+5a8c2 2 510 223
+5a8c4 4 511 223
+FUNC 5a8c8 1d4 0 bool std::priv::__get_integer<std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, unsigned short, wchar_t>(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >&, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >&, int, unsigned short&, int, bool, wchar_t, std::string const&, std::__false_type const&)
+5a8c8 6 178 223
+5a8ce 2 178 223
+5a8d0 2 188 223
+5a8d2 2 183 223
+5a8d4 2 178 223
+5a8d6 2 188 223
+5a8d8 2 178 223
+5a8da 4 188 223
+5a8de 2 178 223
+5a8e0 2 183 223
+5a8e2 4 95 215
+5a8e6 4 183 223
+5a8ea 4 186 223
+5a8ee 2 185 223
+5a8f0 a 183 223
+5a8fa 4 188 223
+5a8fe a 178 223
+5a908 2 186 223
+5a90a 2 181 223
+5a90c 2 186 223
+5a90e 6 188 223
+5a914 2 75 215
+5a916 8 90 215
+5a91e 4 77 215
+5a922 8 90 215
+5a92a 6 190 223
+5a930 8 90 215
+5a938 6 194 223
+5a93e 6 194 223
+5a944 6 52 223
+5a94a 2 52 223
+5a94c 4 202 223
+5a950 2 208 223
+5a952 2 206 223
+5a954 4 205 223
+5a958 2 208 223
+5a95a 2 206 223
+5a95c 2 208 223
+5a95e 6 211 223
+5a964 4 212 223
+5a968 6 213 223
+5a96e 6 213 223
+5a974 4 213 223
+5a978 2 68 215
+5a97a 8 229 235
+5a982 4 229 235
+5a986 6 69 215
+5a98c 6 235 235
+5a992 4 764 186
+5a996 2 235 235
+5a998 4 191 246
+5a99c 2 93 215
+5a99e 4 191 246
+5a9a2 4 95 215
+5a9a6 4 191 246
+5a9aa 2 94 215
+5a9ac 8 190 223
+5a9b4 6 218 223
+5a9ba 6 218 223
+5a9c0 8 219 223
+5a9c8 6 223 223
+5a9ce 6 224 223
+5a9d4 8 224 223
+5a9dc 2 233 223
+5a9de 6 234 223
+5a9e4 2 92 215
+5a9e6 6 235 235
+5a9ec 4 764 186
+5a9f0 2 235 235
+5a9f2 4 191 246
+5a9f6 2 93 215
+5a9f8 2 191 246
+5a9fa 4 95 215
+5a9fe 8 191 246
+5aa06 2 68 215
+5aa08 4 209 223
+5aa0c 8 229 235
+5aa14 a 229 235
+5aa1e 4 211 223
+5aa22 6 235 235
+5aa28 4 764 186
+5aa2c 2 235 235
+5aa2e 4 191 246
+5aa32 2 93 215
+5aa34 2 191 246
+5aa36 4 95 215
+5aa3a 8 191 246
+5aa42 6 195 223
+5aa48 2 196 223
+5aa4a 2 195 223
+5aa4c 2 197 223
+5aa4e 6 52 223
+5aa54 18 235 235
+5aa6c 6 224 223
+5aa72 2 224 223
+5aa74 4 224 223
+5aa78 4 224 223
+5aa7c 2 233 223
+5aa7e 6 233 223
+5aa84 2 65 238
+5aa86 4 233 223
+5aa8a 2 65 238
+5aa8c 8 233 223
+5aa94 8 224 223
+FUNC 5aa9c f8 0 std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > std::priv::__do_get_integer<std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, unsigned short, wchar_t>(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >&, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >&, std::ios_base&, int&, unsigned short&, wchar_t*)
+5aa9c 6 247 223
+5aaa2 4 145 212
+5aaa6 2 247 223
+5aaa8 4 247 223
+5aaac 4 145 212
+5aab0 6 247 223
+5aab6 6 145 212
+5aabc c 351 218
+5aac8 c 258 223
+5aad4 8 112 215
+5aadc 4 259 223
+5aae0 2 263 223
+5aae2 6 265 223
+5aae8 6 266 223
+5aaee 2 287 223
+5aaf0 4 287 223
+5aaf4 8 112 215
+5aafc 2 289 223
+5aafe c 290 223
+5ab0a e 291 223
+5ab18 a 292 223
+5ab22 a 351 218
+5ab2c 2 86 227
+5ab2e 2 351 218
+5ab30 4 86 227
+5ab34 8 87 227
+5ab3c 2 86 227
+5ab3e 8 87 227
+5ab46 2 283 223
+5ab48 2 275 223
+5ab4a 20 283 223
+5ab6a 6 156 238
+5ab70 2 287 223
+5ab72 4 287 223
+5ab76 4 287 223
+5ab7a 6 156 238
+5ab80 14 291 223
+FUNC 5ab94 2e 0 std::num_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_get(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&, int&, unsigned short&) const
+5ab94 6 543 223
+5ab9a 8 543 223
+5aba2 20 546 223
+FUNC 5abc4 1ce 0 bool std::priv::__get_integer<std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, unsigned int, wchar_t>(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >&, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >&, int, unsigned int&, int, bool, wchar_t, std::string const&, std::__false_type const&)
+5abc4 6 178 223
+5abca 4 178 223
+5abce 2 183 223
+5abd0 4 186 223
+5abd4 2 185 223
+5abd6 2 178 223
+5abd8 4 188 223
+5abdc 2 183 223
+5abde 4 95 215
+5abe2 4 183 223
+5abe6 2 188 223
+5abe8 2 178 223
+5abea 4 183 223
+5abee 4 178 223
+5abf2 6 183 223
+5abf8 a 188 223
+5ac02 2 186 223
+5ac04 2 181 223
+5ac06 2 186 223
+5ac08 4 188 223
+5ac0c 2 75 215
+5ac0e 8 90 215
+5ac16 4 77 215
+5ac1a 8 90 215
+5ac22 6 190 223
+5ac28 8 90 215
+5ac30 6 194 223
+5ac36 6 194 223
+5ac3c 6 52 223
+5ac42 2 52 223
+5ac44 4 202 223
+5ac48 2 208 223
+5ac4a 2 206 223
+5ac4c 4 205 223
+5ac50 2 208 223
+5ac52 2 206 223
+5ac54 2 208 223
+5ac56 4 211 223
+5ac5a 4 212 223
+5ac5e 6 213 223
+5ac64 6 213 223
+5ac6a 4 213 223
+5ac6e 2 68 215
+5ac70 8 229 235
+5ac78 4 229 235
+5ac7c 6 69 215
+5ac82 6 235 235
+5ac88 4 764 186
+5ac8c 2 235 235
+5ac8e 4 191 246
+5ac92 2 93 215
+5ac94 4 191 246
+5ac98 4 95 215
+5ac9c 4 191 246
+5aca0 2 94 215
+5aca2 8 190 223
+5acaa 6 218 223
+5acb0 6 218 223
+5acb6 8 219 223
+5acbe 2 233 223
+5acc0 6 223 223
+5acc6 6 224 223
+5accc 2 224 223
+5acce 2 233 223
+5acd0 6 224 223
+5acd6 6 234 223
+5acdc 2 92 215
+5acde 6 235 235
+5ace4 4 764 186
+5ace8 2 235 235
+5acea 4 191 246
+5acee 2 93 215
+5acf0 2 191 246
+5acf2 4 95 215
+5acf6 8 191 246
+5acfe 2 68 215
+5ad00 4 209 223
+5ad04 8 229 235
+5ad0c a 229 235
+5ad16 4 211 223
+5ad1a 6 235 235
+5ad20 4 764 186
+5ad24 2 235 235
+5ad26 4 191 246
+5ad2a 2 93 215
+5ad2c 2 191 246
+5ad2e 4 95 215
+5ad32 8 191 246
+5ad3a 6 195 223
+5ad40 2 196 223
+5ad42 2 195 223
+5ad44 2 197 223
+5ad46 6 52 223
+5ad4c 18 235 235
+5ad64 6 224 223
+5ad6a 2 224 223
+5ad6c 4 224 223
+5ad70 2 224 223
+5ad72 2 233 223
+5ad74 6 233 223
+5ad7a 2 65 238
+5ad7c 4 233 223
+5ad80 2 65 238
+5ad82 8 233 223
+5ad8a 8 224 223
+FUNC 5abc4 1ce 0 bool std::priv::__get_integer<std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, unsigned long, wchar_t>(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >&, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >&, int, unsigned long&, int, bool, wchar_t, std::string const&, std::__false_type const&)
+FUNC 5ad94 f8 0 std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > std::priv::__do_get_integer<std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, unsigned int, wchar_t>(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >&, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >&, std::ios_base&, int&, unsigned int&, wchar_t*)
+5ad94 6 247 223
+5ad9a 4 145 212
+5ad9e 2 247 223
+5ada0 4 247 223
+5ada4 4 145 212
+5ada8 6 247 223
+5adae 6 145 212
+5adb4 c 351 218
+5adc0 c 258 223
+5adcc 8 112 215
+5add4 4 259 223
+5add8 2 263 223
+5adda 6 265 223
+5ade0 6 266 223
+5ade6 4 287 223
+5adea 8 112 215
+5adf2 2 289 223
+5adf4 c 290 223
+5ae00 e 291 223
+5ae0e a 292 223
+5ae18 a 351 218
+5ae22 2 86 227
+5ae24 2 351 218
+5ae26 4 86 227
+5ae2a 8 87 227
+5ae32 2 86 227
+5ae34 8 87 227
+5ae3c 2 283 223
+5ae3e 2 275 223
+5ae40 20 283 223
+5ae60 6 156 238
+5ae66 2 287 223
+5ae68 4 287 223
+5ae6c 4 287 223
+5ae70 6 156 238
+5ae76 16 291 223
+FUNC 5ad94 f8 0 std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > std::priv::__do_get_integer<std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, unsigned long, wchar_t>(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >&, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >&, std::ios_base&, int&, unsigned long&, wchar_t*)
+FUNC 5ae8c 2e 0 std::num_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_get(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&, int&, unsigned int&) const
+FUNC 5ae8c 2e 0 std::num_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_get(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&, int&, unsigned long&) const
+5ae8c 6 557 223
+5ae92 8 557 223
+5ae9a 20 560 223
+FUNC 5aebc 246 0 bool std::priv::__get_integer<std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, unsigned long long, wchar_t>(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >&, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >&, int, unsigned long long&, int, bool, wchar_t, std::string const&, std::__false_type const&)
+5aebc 6 178 223
+5aec2 4 188 223
+5aec6 2 178 223
+5aec8 4 183 223
+5aecc 2 178 223
+5aece 6 188 223
+5aed4 2 178 223
+5aed6 4 188 223
+5aeda 4 183 223
+5aede 2 188 223
+5aee0 4 183 223
+5aee4 4 186 223
+5aee8 2 188 223
+5aeea 4 95 215
+5aeee 4 183 223
+5aef2 2 178 223
+5aef4 4 186 223
+5aef8 6 183 223
+5aefe 4 188 223
+5af02 2 178 223
+5af04 2 185 223
+5af06 4 182 223
+5af0a 2 181 223
+5af0c 8 182 223
+5af14 6 188 223
+5af1a 4 186 223
+5af1e 2 75 215
+5af20 8 90 215
+5af28 4 77 215
+5af2c 8 90 215
+5af34 6 190 223
+5af3a 8 90 215
+5af42 6 194 223
+5af48 8 194 223
+5af50 6 52 223
+5af56 2 52 223
+5af58 8 202 223
+5af60 4 208 223
+5af64 2 206 223
+5af66 4 208 223
+5af6a 2 205 223
+5af6c 2 206 223
+5af6e 8 208 223
+5af76 20 211 223
+5af96 4 212 223
+5af9a 8 211 223
+5afa2 6 212 223
+5afa8 6 213 223
+5afae e 213 223
+5afbc a 213 223
+5afc6 2 68 215
+5afc8 8 229 235
+5afd0 4 229 235
+5afd4 6 69 215
+5afda 6 235 235
+5afe0 4 764 186
+5afe4 2 235 235
+5afe6 4 191 246
+5afea 2 93 215
+5afec 4 191 246
+5aff0 4 95 215
+5aff4 4 191 246
+5aff8 2 94 215
+5affa 6 190 223
+5b000 6 218 223
+5b006 8 218 223
+5b00e 8 219 223
+5b016 4 223 223
+5b01a 6 224 223
+5b020 10 224 223
+5b030 2 233 223
+5b032 6 234 223
+5b038 2 92 215
+5b03a 6 235 235
+5b040 4 764 186
+5b044 2 235 235
+5b046 4 191 246
+5b04a 2 93 215
+5b04c 2 191 246
+5b04e 4 95 215
+5b052 8 191 246
+5b05a 2 68 215
+5b05c 4 209 223
+5b060 8 229 235
+5b068 a 229 235
+5b072 6 211 223
+5b078 6 235 235
+5b07e 4 764 186
+5b082 2 235 235
+5b084 4 191 246
+5b088 2 93 215
+5b08a 2 191 246
+5b08c 4 95 215
+5b090 8 191 246
+5b098 8 195 223
+5b0a0 2 196 223
+5b0a2 4 195 223
+5b0a6 2 197 223
+5b0a8 6 52 223
+5b0ae 18 235 235
+5b0c6 6 224 223
+5b0cc 2 224 223
+5b0ce a 224 223
+5b0d8 4 224 223
+5b0dc 2 233 223
+5b0de 6 233 223
+5b0e4 2 65 238
+5b0e6 4 233 223
+5b0ea 2 65 238
+5b0ec 8 233 223
+5b0f4 e 224 223
+FUNC 5b104 fc 0 std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > std::priv::__do_get_integer<std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, unsigned long long, wchar_t>(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >&, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >&, std::ios_base&, int&, unsigned long long&, wchar_t*)
+5b104 6 247 223
+5b10a 4 145 212
+5b10e 2 247 223
+5b110 4 247 223
+5b114 4 145 212
+5b118 6 247 223
+5b11e 6 145 212
+5b124 c 351 218
+5b130 c 258 223
+5b13c 8 112 215
+5b144 4 259 223
+5b148 2 263 223
+5b14a 6 265 223
+5b150 a 266 223
+5b15a 2 287 223
+5b15c 4 287 223
+5b160 8 112 215
+5b168 2 289 223
+5b16a c 290 223
+5b176 e 291 223
+5b184 a 292 223
+5b18e a 351 218
+5b198 2 86 227
+5b19a 2 351 218
+5b19c 4 86 227
+5b1a0 8 87 227
+5b1a8 2 86 227
+5b1aa 8 87 227
+5b1b2 2 283 223
+5b1b4 2 275 223
+5b1b6 20 283 223
+5b1d6 6 156 238
+5b1dc 2 287 223
+5b1de 4 287 223
+5b1e2 4 287 223
+5b1e6 6 156 238
+5b1ec 14 291 223
+FUNC 5b200 2e 0 std::num_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_get(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&, int&, unsigned long long&) const
+5b200 6 611 223
+5b206 8 611 223
+5b20e 20 614 223
+FUNC 5b230 3a 0 std::num_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_get(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&, int&, void*&) const
+5b230 6 587 223
+5b236 6 587 223
+5b23c 2 595 223
+5b23e 4 587 223
+5b242 10 595 223
+5b252 4 596 223
+5b256 2 599 223
+5b258 8 597 223
+5b260 a 599 223
+FUNC 5b26c 202 0 bool std::priv::__get_integer<std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, long long, wchar_t>(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >&, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >&, int, long long&, int, bool, wchar_t, std::string const&, std::__true_type const&)
+5b26c 6 118 223
+5b272 4 128 223
+5b276 2 118 223
+5b278 4 123 223
+5b27c 2 118 223
+5b27e 4 128 223
+5b282 2 118 223
+5b284 2 128 223
+5b286 4 123 223
+5b28a 2 128 223
+5b28c 4 123 223
+5b290 4 128 223
+5b294 2 118 223
+5b296 4 123 223
+5b29a 2 128 223
+5b29c 4 126 223
+5b2a0 6 123 223
+5b2a6 4 128 223
+5b2aa 2 126 223
+5b2ac 2 122 223
+5b2ae 4 118 223
+5b2b2 2 125 223
+5b2b4 2 126 223
+5b2b6 c 122 223
+5b2c2 2 118 223
+5b2c4 2 136 223
+5b2c6 4 118 223
+5b2ca 6 121 223
+5b2d0 2 128 223
+5b2d2 2 120 215
+5b2d4 2 128 223
+5b2d6 6 120 215
+5b2dc 4 130 223
+5b2e0 8 90 215
+5b2e8 2 134 223
+5b2ea a 134 223
+5b2f4 6 52 223
+5b2fa 2 52 223
+5b2fc 8 142 223
+5b304 4 148 223
+5b308 2 146 223
+5b30a 4 148 223
+5b30e 2 145 223
+5b310 2 146 223
+5b312 8 148 223
+5b31a 16 151 223
+5b330 4 152 223
+5b334 8 151 223
+5b33c 6 152 223
+5b342 6 153 223
+5b348 e 153 223
+5b356 a 153 223
+5b360 2 68 215
+5b362 8 229 235
+5b36a 4 229 235
+5b36e 4 69 215
+5b372 8 120 215
+5b37a 6 130 223
+5b380 2 158 223
+5b382 8 158 223
+5b38a 8 159 223
+5b392 2 173 223
+5b394 4 163 223
+5b398 6 164 223
+5b39e 6 164 223
+5b3a4 c 164 223
+5b3b0 2 173 223
+5b3b2 6 174 223
+5b3b8 2 92 215
+5b3ba 6 235 235
+5b3c0 4 764 186
+5b3c4 2 235 235
+5b3c6 4 191 246
+5b3ca 2 93 215
+5b3cc a 191 246
+5b3d6 6 95 215
+5b3dc 2 68 215
+5b3de 4 149 223
+5b3e2 8 229 235
+5b3ea 6 229 235
+5b3f0 6 69 215
+5b3f6 6 151 223
+5b3fc 8 135 223
+5b404 2 136 223
+5b406 4 135 223
+5b40a 2 137 223
+5b40c 6 52 223
+5b412 8 235 235
+5b41a 4 164 223
+5b41e c 164 223
+5b42a 2 173 223
+5b42c 6 173 223
+5b432 4 65 238
+5b436 4 173 223
+5b43a 4 65 238
+5b43e a 173 223
+5b448 e 164 223
+5b456 4 173 223
+5b45a 4 164 223
+5b45e a 164 223
+5b468 6 164 223
+FUNC 5b470 fc 0 std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > std::priv::__do_get_integer<std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, long long, wchar_t>(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >&, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >&, std::ios_base&, int&, long long&, wchar_t*)
+5b470 6 247 223
+5b476 4 145 212
+5b47a 2 247 223
+5b47c 4 247 223
+5b480 4 145 212
+5b484 6 247 223
+5b48a 6 145 212
+5b490 c 351 218
+5b49c c 258 223
+5b4a8 8 112 215
+5b4b0 4 259 223
+5b4b4 2 263 223
+5b4b6 6 265 223
+5b4bc a 266 223
+5b4c6 2 287 223
+5b4c8 4 287 223
+5b4cc 8 112 215
+5b4d4 2 289 223
+5b4d6 c 290 223
+5b4e2 e 291 223
+5b4f0 a 292 223
+5b4fa a 351 218
+5b504 2 86 227
+5b506 2 351 218
+5b508 4 86 227
+5b50c 8 87 227
+5b514 2 86 227
+5b516 8 87 227
+5b51e 2 283 223
+5b520 2 275 223
+5b522 20 283 223
+5b542 6 156 238
+5b548 2 287 223
+5b54a 4 287 223
+5b54e 4 287 223
+5b552 6 156 238
+5b558 14 291 223
+FUNC 5b56c 2e 0 std::num_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_get(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&, int&, long long&) const
+5b56c 6 604 223
+5b572 8 604 223
+5b57a 20 607 223
+FUNC 5b59c 2d2 0 int std::priv::__get_base_or_zero<std::istreambuf_iterator<char, std::char_traits<char> >, char>(std::istreambuf_iterator<char, std::char_traits<char> >&, std::istreambuf_iterator<char, std::char_traits<char> >&, int, std::ctype<char> const&)
+5b59c 6 56 223
+5b5a2 8 56 223
+5b5aa a 59 223
+5b5b4 4 103 206
+5b5b8 2 59 223
+5b5ba 8 103 206
+5b5c2 8 90 215
+5b5ca 8 64 223
+5b5d2 a 68 223
+5b5dc 4 74 223
+5b5e0 c 76 223
+5b5ec 8 120 215
+5b5f4 4 95 223
+5b5f8 2 95 223
+5b5fa 2 72 223
+5b5fc 4 112 223
+5b600 6 113 223
+5b606 2 92 215
+5b608 6 235 235
+5b60e 4 223 246
+5b612 2 235 235
+5b614 4 191 246
+5b618 2 220 246
+5b61a 2 191 246
+5b61c 2 93 215
+5b61e 4 191 246
+5b622 4 95 215
+5b626 4 64 223
+5b62a 2 191 246
+5b62c 4 64 223
+5b630 2 68 215
+5b632 8 229 235
+5b63a 4 229 235
+5b63e 4 74 223
+5b642 4 69 215
+5b646 2 76 223
+5b648 2 69 215
+5b64a 2 76 223
+5b64c 8 120 215
+5b654 2 85 223
+5b656 2 85 223
+5b658 4 72 223
+5b65c 2 68 215
+5b65e 8 229 235
+5b666 4 229 235
+5b66a 6 69 215
+5b670 8 229 235
+5b678 8 90 215
+5b680 8 85 223
+5b688 2 68 215
+5b68a 8 229 235
+5b692 4 229 235
+5b696 2 69 215
+5b698 2 120 215
+5b69a 2 69 215
+5b69c 6 120 215
+5b6a2 4 87 223
+5b6a6 2 87 223
+5b6a8 4 91 223
+5b6ac 8 90 215
+5b6b4 8 95 223
+5b6bc 2 68 215
+5b6be 8 229 235
+5b6c6 4 229 235
+5b6ca 2 69 215
+5b6cc 2 120 215
+5b6ce 2 69 215
+5b6d0 6 120 215
+5b6d6 2 97 223
+5b6d8 2 97 223
+5b6da 4 105 223
+5b6de 8 229 235
+5b6e6 8 235 235
+5b6ee 8 90 215
+5b6f6 8 97 223
+5b6fe 2 68 215
+5b700 8 229 235
+5b708 4 229 235
+5b70c 8 69 215
+5b714 8 90 215
+5b71c 8 87 223
+5b724 6 90 215
+5b72a a 87 223
+5b734 4 91 223
+5b738 2 92 215
+5b73a 6 235 235
+5b740 4 223 246
+5b744 2 235 235
+5b746 4 191 246
+5b74a 2 220 246
+5b74c 2 191 246
+5b74e 2 93 215
+5b750 4 191 246
+5b754 2 95 215
+5b756 2 191 246
+5b758 4 95 215
+5b75c 2 92 215
+5b75e 6 235 235
+5b764 4 223 246
+5b768 2 235 235
+5b76a 4 191 246
+5b76e 2 220 246
+5b770 2 191 246
+5b772 2 93 215
+5b774 4 191 246
+5b778 2 95 215
+5b77a 2 191 246
+5b77c 4 95 215
+5b780 18 229 235
+5b798 6 90 215
+5b79e a 97 223
+5b7a8 4 105 223
+5b7ac 2 92 215
+5b7ae 6 235 235
+5b7b4 4 223 246
+5b7b8 2 235 235
+5b7ba 4 191 246
+5b7be 2 220 246
+5b7c0 2 191 246
+5b7c2 2 93 215
+5b7c4 4 191 246
+5b7c8 2 95 215
+5b7ca 2 191 246
+5b7cc 4 95 215
+5b7d0 2 92 215
+5b7d2 6 235 235
+5b7d8 4 223 246
+5b7dc 2 235 235
+5b7de 4 191 246
+5b7e2 2 220 246
+5b7e4 2 191 246
+5b7e6 2 93 215
+5b7e8 4 191 246
+5b7ec 2 95 215
+5b7ee 2 191 246
+5b7f0 4 95 215
+5b7f4 2 92 215
+5b7f6 6 235 235
+5b7fc 4 223 246
+5b800 2 235 235
+5b802 4 191 246
+5b806 2 220 246
+5b808 2 191 246
+5b80a 2 93 215
+5b80c 4 191 246
+5b810 2 95 215
+5b812 2 191 246
+5b814 4 95 215
+5b818 2 92 215
+5b81a 6 235 235
+5b820 4 223 246
+5b824 2 235 235
+5b826 4 191 246
+5b82a 2 220 246
+5b82c 4 191 246
+5b830 2 93 215
+5b832 4 191 246
+5b836 2 95 215
+5b838 2 191 246
+5b83a 4 95 215
+5b83e 30 235 235
+FUNC 5b870 192 0 bool std::priv::__get_integer<std::istreambuf_iterator<char, std::char_traits<char> >, long, char>(std::istreambuf_iterator<char, std::char_traits<char> >&, std::istreambuf_iterator<char, std::char_traits<char> >&, int, long&, int, bool, char, std::string const&, std::__true_type const&)
+5b870 6 118 223
+5b876 4 118 223
+5b87a 2 123 223
+5b87c 4 126 223
+5b880 2 125 223
+5b882 2 118 223
+5b884 4 128 223
+5b888 2 123 223
+5b88a 2 136 223
+5b88c 4 123 223
+5b890 2 128 223
+5b892 2 118 223
+5b894 4 123 223
+5b898 8 118 223
+5b8a0 6 123 223
+5b8a6 2 118 223
+5b8a8 4 128 223
+5b8ac 4 118 223
+5b8b0 2 120 215
+5b8b2 2 126 223
+5b8b4 2 121 223
+5b8b6 2 126 223
+5b8b8 8 118 223
+5b8c0 2 128 223
+5b8c2 6 120 215
+5b8c8 4 130 223
+5b8cc 8 90 215
+5b8d4 6 134 223
+5b8da 6 134 223
+5b8e0 4 52 223
+5b8e4 2 52 223
+5b8e6 4 142 223
+5b8ea 2 148 223
+5b8ec 2 146 223
+5b8ee 4 145 223
+5b8f2 2 148 223
+5b8f4 2 146 223
+5b8f6 2 148 223
+5b8f8 6 151 223
+5b8fe 4 152 223
+5b902 6 153 223
+5b908 6 153 223
+5b90e 4 153 223
+5b912 2 68 215
+5b914 8 229 235
+5b91c 4 229 235
+5b920 4 69 215
+5b924 8 120 215
+5b92c 6 130 223
+5b932 6 158 223
+5b938 6 158 223
+5b93e 8 159 223
+5b946 2 173 223
+5b948 6 163 223
+5b94e 6 164 223
+5b954 6 164 223
+5b95a 2 164 223
+5b95c 2 173 223
+5b95e 6 164 223
+5b964 6 174 223
+5b96a 2 92 215
+5b96c 6 235 235
+5b972 4 223 246
+5b976 2 235 235
+5b978 4 191 246
+5b97c 2 220 246
+5b97e 4 191 246
+5b982 2 93 215
+5b984 6 191 246
+5b98a 6 95 215
+5b990 2 68 215
+5b992 4 149 223
+5b996 8 229 235
+5b99e 6 229 235
+5b9a4 6 69 215
+5b9aa 4 151 223
+5b9ae 6 135 223
+5b9b4 2 136 223
+5b9b6 2 135 223
+5b9b8 2 137 223
+5b9ba 6 52 223
+5b9c0 a 235 235
+5b9ca 4 164 223
+5b9ce 6 164 223
+5b9d4 2 173 223
+5b9d6 6 173 223
+5b9dc 2 65 238
+5b9de 4 173 223
+5b9e2 2 65 238
+5b9e4 8 173 223
+5b9ec 6 164 223
+5b9f2 2 173 223
+5b9f4 6 164 223
+5b9fa 4 164 223
+5b9fe 4 164 223
+FUNC 5ba04 f8 0 std::istreambuf_iterator<char, std::char_traits<char> > std::priv::__do_get_integer<std::istreambuf_iterator<char, std::char_traits<char> >, long, char>(std::istreambuf_iterator<char, std::char_traits<char> >&, std::istreambuf_iterator<char, std::char_traits<char> >&, std::ios_base&, int&, long&, char*)
+5ba04 6 247 223
+5ba0a 4 145 212
+5ba0e 2 247 223
+5ba10 4 247 223
+5ba14 4 145 212
+5ba18 6 247 223
+5ba1e 6 145 212
+5ba24 c 351 218
+5ba30 c 258 223
+5ba3c 8 112 215
+5ba44 4 259 223
+5ba48 2 263 223
+5ba4a 6 265 223
+5ba50 6 266 223
+5ba56 4 287 223
+5ba5a 8 112 215
+5ba62 2 289 223
+5ba64 c 290 223
+5ba70 e 291 223
+5ba7e a 292 223
+5ba88 a 351 218
+5ba92 2 57 227
+5ba94 2 351 218
+5ba96 4 57 227
+5ba9a 8 58 227
+5baa2 2 57 227
+5baa4 8 58 227
+5baac 2 283 223
+5baae 2 275 223
+5bab0 20 283 223
+5bad0 6 156 238
+5bad6 2 287 223
+5bad8 4 287 223
+5badc 4 287 223
+5bae0 6 156 238
+5bae6 16 291 223
+FUNC 5bafc 26 0 std::num_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::do_get(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, int&, long&) const
+5bafc 4 537 223
+5bb00 8 537 223
+5bb08 1a 539 223
+FUNC 5bb24 76 0 std::num_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::do_get(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, int&, bool&) const
+5bb24 4 499 223
+5bb28 e 499 223
+5bb36 4 501 223
+5bb3a 2 499 223
+5bb3c 6 501 223
+5bb42 1a 506 223
+5bb5c 6 507 223
+5bb62 8 515 223
+5bb6a 6 517 223
+5bb70 4 508 223
+5bb74 4 511 223
+5bb78 12 502 223
+5bb8a 2 510 223
+5bb8c 8 513 223
+5bb94 2 510 223
+5bb96 4 511 223
+FUNC 5bb9c 17e 0 bool std::priv::__get_integer<std::istreambuf_iterator<char, std::char_traits<char> >, unsigned short, char>(std::istreambuf_iterator<char, std::char_traits<char> >&, std::istreambuf_iterator<char, std::char_traits<char> >&, int, unsigned short&, int, bool, char, std::string const&, std::__false_type const&)
+5bb9c 6 178 223
+5bba2 2 178 223
+5bba4 2 188 223
+5bba6 2 183 223
+5bba8 2 178 223
+5bbaa 2 188 223
+5bbac 2 178 223
+5bbae 4 188 223
+5bbb2 2 178 223
+5bbb4 6 183 223
+5bbba 4 186 223
+5bbbe 2 185 223
+5bbc0 4 183 223
+5bbc4 2 196 223
+5bbc6 6 183 223
+5bbcc 4 188 223
+5bbd0 4 178 223
+5bbd4 2 186 223
+5bbd6 2 120 215
+5bbd8 4 186 223
+5bbdc 8 178 223
+5bbe4 4 181 223
+5bbe8 4 188 223
+5bbec 6 120 215
+5bbf2 4 190 223
+5bbf6 8 90 215
+5bbfe 6 194 223
+5bc04 6 194 223
+5bc0a 4 52 223
+5bc0e 2 52 223
+5bc10 4 202 223
+5bc14 2 208 223
+5bc16 2 206 223
+5bc18 4 205 223
+5bc1c 2 208 223
+5bc1e 2 206 223
+5bc20 2 208 223
+5bc22 6 211 223
+5bc28 4 212 223
+5bc2c 6 213 223
+5bc32 6 213 223
+5bc38 4 213 223
+5bc3c 2 68 215
+5bc3e 8 229 235
+5bc46 4 229 235
+5bc4a 4 69 215
+5bc4e 8 120 215
+5bc56 6 190 223
+5bc5c 6 218 223
+5bc62 6 218 223
+5bc68 8 219 223
+5bc70 6 223 223
+5bc76 6 224 223
+5bc7c 8 224 223
+5bc84 2 233 223
+5bc86 6 234 223
+5bc8c 2 92 215
+5bc8e 6 235 235
+5bc94 4 223 246
+5bc98 2 235 235
+5bc9a 4 191 246
+5bc9e 2 220 246
+5bca0 2 191 246
+5bca2 2 93 215
+5bca4 4 191 246
+5bca8 2 95 215
+5bcaa 2 191 246
+5bcac 4 95 215
+5bcb0 2 68 215
+5bcb2 4 209 223
+5bcb6 8 229 235
+5bcbe 6 229 235
+5bcc4 6 69 215
+5bcca 4 211 223
+5bcce 6 195 223
+5bcd4 2 196 223
+5bcd6 2 195 223
+5bcd8 2 197 223
+5bcda 6 52 223
+5bce0 a 235 235
+5bcea 6 224 223
+5bcf0 2 224 223
+5bcf2 4 224 223
+5bcf6 4 224 223
+5bcfa 2 233 223
+5bcfc 6 233 223
+5bd02 2 65 238
+5bd04 4 233 223
+5bd08 2 65 238
+5bd0a 8 233 223
+5bd12 8 224 223
+FUNC 5bd1c f8 0 std::istreambuf_iterator<char, std::char_traits<char> > std::priv::__do_get_integer<std::istreambuf_iterator<char, std::char_traits<char> >, unsigned short, char>(std::istreambuf_iterator<char, std::char_traits<char> >&, std::istreambuf_iterator<char, std::char_traits<char> >&, std::ios_base&, int&, unsigned short&, char*)
+5bd1c 6 247 223
+5bd22 4 145 212
+5bd26 2 247 223
+5bd28 4 247 223
+5bd2c 4 145 212
+5bd30 6 247 223
+5bd36 6 145 212
+5bd3c c 351 218
+5bd48 c 258 223
+5bd54 8 112 215
+5bd5c 4 259 223
+5bd60 2 263 223
+5bd62 6 265 223
+5bd68 6 266 223
+5bd6e 2 287 223
+5bd70 4 287 223
+5bd74 8 112 215
+5bd7c 2 289 223
+5bd7e c 290 223
+5bd8a e 291 223
+5bd98 a 292 223
+5bda2 a 351 218
+5bdac 2 57 227
+5bdae 2 351 218
+5bdb0 4 57 227
+5bdb4 8 58 227
+5bdbc 2 57 227
+5bdbe 8 58 227
+5bdc6 2 283 223
+5bdc8 2 275 223
+5bdca 20 283 223
+5bdea 6 156 238
+5bdf0 2 287 223
+5bdf2 4 287 223
+5bdf6 4 287 223
+5bdfa 6 156 238
+5be00 14 291 223
+FUNC 5be14 26 0 std::num_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::do_get(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, int&, unsigned short&) const
+5be14 4 543 223
+5be18 8 543 223
+5be20 1a 546 223
+FUNC 5be3c 17a 0 bool std::priv::__get_integer<std::istreambuf_iterator<char, std::char_traits<char> >, unsigned int, char>(std::istreambuf_iterator<char, std::char_traits<char> >&, std::istreambuf_iterator<char, std::char_traits<char> >&, int, unsigned int&, int, bool, char, std::string const&, std::__false_type const&)
+5be3c 6 178 223
+5be42 4 178 223
+5be46 2 183 223
+5be48 4 186 223
+5be4c 2 185 223
+5be4e 2 178 223
+5be50 4 188 223
+5be54 2 183 223
+5be56 2 196 223
+5be58 4 183 223
+5be5c 2 188 223
+5be5e 2 178 223
+5be60 4 183 223
+5be64 4 178 223
+5be68 6 183 223
+5be6e 4 188 223
+5be72 4 178 223
+5be76 2 186 223
+5be78 2 120 215
+5be7a 4 186 223
+5be7e 2 181 223
+5be80 6 178 223
+5be86 2 188 223
+5be88 6 120 215
+5be8e 4 190 223
+5be92 8 90 215
+5be9a 6 194 223
+5bea0 6 194 223
+5bea6 4 52 223
+5beaa 2 52 223
+5beac 4 202 223
+5beb0 2 208 223
+5beb2 2 206 223
+5beb4 4 205 223
+5beb8 2 208 223
+5beba 2 206 223
+5bebc 2 208 223
+5bebe 4 211 223
+5bec2 4 212 223
+5bec6 6 213 223
+5becc 6 213 223
+5bed2 4 213 223
+5bed6 2 68 215
+5bed8 8 229 235
+5bee0 4 229 235
+5bee4 4 69 215
+5bee8 8 120 215
+5bef0 6 190 223
+5bef6 6 218 223
+5befc 6 218 223
+5bf02 8 219 223
+5bf0a 2 233 223
+5bf0c 6 223 223
+5bf12 6 224 223
+5bf18 2 224 223
+5bf1a 2 233 223
+5bf1c 6 224 223
+5bf22 6 234 223
+5bf28 2 92 215
+5bf2a 6 235 235
+5bf30 4 223 246
+5bf34 2 235 235
+5bf36 4 191 246
+5bf3a 2 220 246
+5bf3c 4 191 246
+5bf40 2 93 215
+5bf42 4 191 246
+5bf46 2 95 215
+5bf48 2 191 246
+5bf4a 4 95 215
+5bf4e 2 68 215
+5bf50 4 209 223
+5bf54 8 229 235
+5bf5c 6 229 235
+5bf62 6 69 215
+5bf68 4 211 223
+5bf6c 6 195 223
+5bf72 2 196 223
+5bf74 2 195 223
+5bf76 2 197 223
+5bf78 6 52 223
+5bf7e a 235 235
+5bf88 6 224 223
+5bf8e 2 224 223
+5bf90 4 224 223
+5bf94 2 224 223
+5bf96 2 233 223
+5bf98 6 233 223
+5bf9e 2 65 238
+5bfa0 4 233 223
+5bfa4 2 65 238
+5bfa6 8 233 223
+5bfae 8 224 223
+FUNC 5bfb8 f8 0 std::istreambuf_iterator<char, std::char_traits<char> > std::priv::__do_get_integer<std::istreambuf_iterator<char, std::char_traits<char> >, unsigned int, char>(std::istreambuf_iterator<char, std::char_traits<char> >&, std::istreambuf_iterator<char, std::char_traits<char> >&, std::ios_base&, int&, unsigned int&, char*)
+5bfb8 6 247 223
+5bfbe 4 145 212
+5bfc2 2 247 223
+5bfc4 4 247 223
+5bfc8 4 145 212
+5bfcc 6 247 223
+5bfd2 6 145 212
+5bfd8 c 351 218
+5bfe4 c 258 223
+5bff0 8 112 215
+5bff8 4 259 223
+5bffc 2 263 223
+5bffe 6 265 223
+5c004 6 266 223
+5c00a 4 287 223
+5c00e 8 112 215
+5c016 2 289 223
+5c018 c 290 223
+5c024 e 291 223
+5c032 a 292 223
+5c03c a 351 218
+5c046 2 57 227
+5c048 2 351 218
+5c04a 4 57 227
+5c04e 8 58 227
+5c056 2 57 227
+5c058 8 58 227
+5c060 2 283 223
+5c062 2 275 223
+5c064 20 283 223
+5c084 6 156 238
+5c08a 2 287 223
+5c08c 4 287 223
+5c090 4 287 223
+5c094 6 156 238
+5c09a 16 291 223
+FUNC 5c0b0 26 0 std::num_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::do_get(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, int&, unsigned int&) const
+5c0b0 4 550 223
+5c0b4 8 550 223
+5c0bc 1a 553 223
+FUNC 5c0d8 178 0 bool std::priv::__get_integer<std::istreambuf_iterator<char, std::char_traits<char> >, unsigned long, char>(std::istreambuf_iterator<char, std::char_traits<char> >&, std::istreambuf_iterator<char, std::char_traits<char> >&, int, unsigned long&, int, bool, char, std::string const&, std::__false_type const&)
+5c0d8 6 178 223
+5c0de 4 178 223
+5c0e2 2 183 223
+5c0e4 4 186 223
+5c0e8 2 185 223
+5c0ea 2 178 223
+5c0ec 4 188 223
+5c0f0 2 183 223
+5c0f2 2 196 223
+5c0f4 4 183 223
+5c0f8 2 188 223
+5c0fa 2 178 223
+5c0fc 4 183 223
+5c100 4 178 223
+5c104 6 183 223
+5c10a 4 188 223
+5c10e 4 178 223
+5c112 2 186 223
+5c114 2 120 215
+5c116 4 186 223
+5c11a 2 181 223
+5c11c 6 178 223
+5c122 2 188 223
+5c124 6 120 215
+5c12a 4 190 223
+5c12e 8 90 215
+5c136 6 194 223
+5c13c 6 194 223
+5c142 4 52 223
+5c146 2 52 223
+5c148 4 202 223
+5c14c 2 208 223
+5c14e 2 206 223
+5c150 4 205 223
+5c154 2 208 223
+5c156 2 206 223
+5c158 2 208 223
+5c15a 4 211 223
+5c15e 4 212 223
+5c162 6 213 223
+5c168 6 213 223
+5c16e 4 213 223
+5c172 2 68 215
+5c174 8 229 235
+5c17c 4 229 235
+5c180 4 69 215
+5c184 8 120 215
+5c18c 6 190 223
+5c192 6 218 223
+5c198 6 218 223
+5c19e 8 219 223
+5c1a6 2 233 223
+5c1a8 6 223 223
+5c1ae 6 224 223
+5c1b4 2 224 223
+5c1b6 2 233 223
+5c1b8 6 224 223
+5c1be 6 234 223
+5c1c4 2 92 215
+5c1c6 6 235 235
+5c1cc 4 223 246
+5c1d0 2 235 235
+5c1d2 4 191 246
+5c1d6 2 220 246
+5c1d8 2 191 246
+5c1da 2 93 215
+5c1dc 4 191 246
+5c1e0 2 95 215
+5c1e2 2 191 246
+5c1e4 4 95 215
+5c1e8 2 68 215
+5c1ea 4 209 223
+5c1ee 8 229 235
+5c1f6 6 229 235
+5c1fc 6 69 215
+5c202 4 211 223
+5c206 6 195 223
+5c20c 2 196 223
+5c20e 2 195 223
+5c210 2 197 223
+5c212 6 52 223
+5c218 a 235 235
+5c222 6 224 223
+5c228 2 224 223
+5c22a 4 224 223
+5c22e 2 224 223
+5c230 2 233 223
+5c232 6 233 223
+5c238 2 65 238
+5c23a 4 233 223
+5c23e 2 65 238
+5c240 8 233 223
+5c248 8 224 223
+FUNC 5c250 f8 0 std::istreambuf_iterator<char, std::char_traits<char> > std::priv::__do_get_integer<std::istreambuf_iterator<char, std::char_traits<char> >, unsigned long, char>(std::istreambuf_iterator<char, std::char_traits<char> >&, std::istreambuf_iterator<char, std::char_traits<char> >&, std::ios_base&, int&, unsigned long&, char*)
+5c250 6 247 223
+5c256 4 145 212
+5c25a 2 247 223
+5c25c 4 247 223
+5c260 4 145 212
+5c264 6 247 223
+5c26a 6 145 212
+5c270 c 351 218
+5c27c c 258 223
+5c288 8 112 215
+5c290 4 259 223
+5c294 2 263 223
+5c296 6 265 223
+5c29c 6 266 223
+5c2a2 4 287 223
+5c2a6 8 112 215
+5c2ae 2 289 223
+5c2b0 c 290 223
+5c2bc e 291 223
+5c2ca a 292 223
+5c2d4 a 351 218
+5c2de 2 57 227
+5c2e0 2 351 218
+5c2e2 4 57 227
+5c2e6 8 58 227
+5c2ee 2 57 227
+5c2f0 8 58 227
+5c2f8 2 283 223
+5c2fa 2 275 223
+5c2fc 20 283 223
+5c31c 6 156 238
+5c322 2 287 223
+5c324 4 287 223
+5c328 4 287 223
+5c32c 6 156 238
+5c332 16 291 223
+FUNC 5c348 26 0 std::num_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::do_get(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, int&, unsigned long&) const
+5c348 4 557 223
+5c34c 8 557 223
+5c354 1a 560 223
+FUNC 5c370 1f4 0 bool std::priv::__get_integer<std::istreambuf_iterator<char, std::char_traits<char> >, unsigned long long, char>(std::istreambuf_iterator<char, std::char_traits<char> >&, std::istreambuf_iterator<char, std::char_traits<char> >&, int, unsigned long long&, int, bool, char, std::string const&, std::__false_type const&)
+5c370 6 178 223
+5c376 4 188 223
+5c37a 2 178 223
+5c37c 4 183 223
+5c380 2 178 223
+5c382 4 188 223
+5c386 4 178 223
+5c38a 4 183 223
+5c38e 2 188 223
+5c390 4 183 223
+5c394 a 188 223
+5c39e 4 183 223
+5c3a2 4 186 223
+5c3a6 6 183 223
+5c3ac 4 188 223
+5c3b0 2 186 223
+5c3b2 2 182 223
+5c3b4 4 178 223
+5c3b8 2 185 223
+5c3ba 2 186 223
+5c3bc c 182 223
+5c3c8 2 178 223
+5c3ca 2 196 223
+5c3cc 4 178 223
+5c3d0 6 181 223
+5c3d6 2 188 223
+5c3d8 2 120 215
+5c3da 2 188 223
+5c3dc 6 120 215
+5c3e2 4 190 223
+5c3e6 8 90 215
+5c3ee 2 194 223
+5c3f0 a 194 223
+5c3fa 6 52 223
+5c400 2 52 223
+5c402 8 202 223
+5c40a 4 208 223
+5c40e 2 206 223
+5c410 4 208 223
+5c414 2 205 223
+5c416 2 206 223
+5c418 8 208 223
+5c420 1c 211 223
+5c43c 4 212 223
+5c440 c 211 223
+5c44c 6 212 223
+5c452 6 213 223
+5c458 e 213 223
+5c466 a 213 223
+5c470 2 68 215
+5c472 8 229 235
+5c47a 4 229 235
+5c47e 4 69 215
+5c482 8 120 215
+5c48a 6 190 223
+5c490 2 218 223
+5c492 8 218 223
+5c49a 8 219 223
+5c4a2 4 223 223
+5c4a6 6 224 223
+5c4ac 10 224 223
+5c4bc 2 233 223
+5c4be 6 234 223
+5c4c4 2 92 215
+5c4c6 6 235 235
+5c4cc 4 223 246
+5c4d0 2 235 235
+5c4d2 4 191 246
+5c4d6 2 220 246
+5c4d8 2 191 246
+5c4da 2 93 215
+5c4dc 6 191 246
+5c4e2 6 95 215
+5c4e8 2 68 215
+5c4ea 4 209 223
+5c4ee 8 229 235
+5c4f6 6 229 235
+5c4fc 6 69 215
+5c502 6 211 223
+5c508 8 195 223
+5c510 2 196 223
+5c512 4 195 223
+5c516 2 197 223
+5c518 6 52 223
+5c51e a 235 235
+5c528 6 224 223
+5c52e 2 224 223
+5c530 a 224 223
+5c53a 4 224 223
+5c53e 2 233 223
+5c540 6 233 223
+5c546 2 65 238
+5c548 4 233 223
+5c54c 2 65 238
+5c54e 8 233 223
+5c556 e 224 223
+FUNC 5c564 fc 0 std::istreambuf_iterator<char, std::char_traits<char> > std::priv::__do_get_integer<std::istreambuf_iterator<char, std::char_traits<char> >, unsigned long long, char>(std::istreambuf_iterator<char, std::char_traits<char> >&, std::istreambuf_iterator<char, std::char_traits<char> >&, std::ios_base&, int&, unsigned long long&, char*)
+5c564 6 247 223
+5c56a 4 145 212
+5c56e 2 247 223
+5c570 4 247 223
+5c574 4 145 212
+5c578 6 247 223
+5c57e 6 145 212
+5c584 c 351 218
+5c590 c 258 223
+5c59c 8 112 215
+5c5a4 4 259 223
+5c5a8 2 263 223
+5c5aa 6 265 223
+5c5b0 a 266 223
+5c5ba 2 287 223
+5c5bc 4 287 223
+5c5c0 8 112 215
+5c5c8 2 289 223
+5c5ca c 290 223
+5c5d6 e 291 223
+5c5e4 a 292 223
+5c5ee a 351 218
+5c5f8 2 57 227
+5c5fa 2 351 218
+5c5fc 4 57 227
+5c600 8 58 227
+5c608 2 57 227
+5c60a 8 58 227
+5c612 2 283 223
+5c614 2 275 223
+5c616 20 283 223
+5c636 6 156 238
+5c63c 2 287 223
+5c63e 4 287 223
+5c642 4 287 223
+5c646 6 156 238
+5c64c 14 291 223
+FUNC 5c660 26 0 std::num_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::do_get(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, int&, unsigned long long&) const
+5c660 4 611 223
+5c664 8 611 223
+5c66c 1a 614 223
+FUNC 5c688 32 0 std::num_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::do_get(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, int&, void*&) const
+5c688 4 587 223
+5c68c 6 587 223
+5c692 2 595 223
+5c694 4 587 223
+5c698 10 595 223
+5c6a8 4 596 223
+5c6ac 2 599 223
+5c6ae 8 597 223
+5c6b6 4 599 223
+FUNC 5c6bc 210 0 bool std::priv::__get_integer<std::istreambuf_iterator<char, std::char_traits<char> >, long long, char>(std::istreambuf_iterator<char, std::char_traits<char> >&, std::istreambuf_iterator<char, std::char_traits<char> >&, int, long long&, int, bool, char, std::string const&, std::__true_type const&)
+5c6bc 6 118 223
+5c6c2 4 128 223
+5c6c6 2 118 223
+5c6c8 4 123 223
+5c6cc 2 118 223
+5c6ce 4 128 223
+5c6d2 4 118 223
+5c6d6 4 123 223
+5c6da 2 128 223
+5c6dc 4 123 223
+5c6e0 8 128 223
+5c6e8 4 123 223
+5c6ec 4 126 223
+5c6f0 6 123 223
+5c6f6 4 128 223
+5c6fa 4 118 223
+5c6fe 2 126 223
+5c700 4 118 223
+5c704 2 125 223
+5c706 2 126 223
+5c708 2 122 223
+5c70a 2 118 223
+5c70c c 122 223
+5c718 2 118 223
+5c71a 2 136 223
+5c71c 4 118 223
+5c720 a 121 223
+5c72a 2 128 223
+5c72c 2 120 215
+5c72e 2 128 223
+5c730 6 120 215
+5c736 4 130 223
+5c73a 8 90 215
+5c742 2 134 223
+5c744 a 134 223
+5c74e 6 52 223
+5c754 2 52 223
+5c756 8 142 223
+5c75e 4 148 223
+5c762 2 146 223
+5c764 4 148 223
+5c768 2 145 223
+5c76a 2 146 223
+5c76c 8 148 223
+5c774 16 151 223
+5c78a 4 152 223
+5c78e 8 151 223
+5c796 6 152 223
+5c79c 6 153 223
+5c7a2 e 153 223
+5c7b0 a 153 223
+5c7ba 2 68 215
+5c7bc 8 229 235
+5c7c4 4 229 235
+5c7c8 4 69 215
+5c7cc 8 120 215
+5c7d4 6 130 223
+5c7da 2 158 223
+5c7dc 8 158 223
+5c7e4 8 159 223
+5c7ec 2 173 223
+5c7ee 4 163 223
+5c7f2 6 164 223
+5c7f8 6 164 223
+5c7fe c 164 223
+5c80a 2 173 223
+5c80c 6 174 223
+5c812 2 92 215
+5c814 6 235 235
+5c81a 4 223 246
+5c81e 2 235 235
+5c820 4 191 246
+5c824 2 220 246
+5c826 4 191 246
+5c82a 2 93 215
+5c82c 6 191 246
+5c832 6 95 215
+5c838 2 68 215
+5c83a 4 149 223
+5c83e 8 229 235
+5c846 6 229 235
+5c84c 6 69 215
+5c852 6 151 223
+5c858 8 135 223
+5c860 2 136 223
+5c862 4 135 223
+5c866 2 137 223
+5c868 6 52 223
+5c86e a 235 235
+5c878 4 164 223
+5c87c c 164 223
+5c888 2 173 223
+5c88a 6 173 223
+5c890 4 65 238
+5c894 4 173 223
+5c898 4 65 238
+5c89c a 173 223
+5c8a6 e 164 223
+5c8b4 4 173 223
+5c8b8 4 164 223
+5c8bc a 164 223
+5c8c6 6 164 223
+FUNC 5c8cc fc 0 std::istreambuf_iterator<char, std::char_traits<char> > std::priv::__do_get_integer<std::istreambuf_iterator<char, std::char_traits<char> >, long long, char>(std::istreambuf_iterator<char, std::char_traits<char> >&, std::istreambuf_iterator<char, std::char_traits<char> >&, std::ios_base&, int&, long long&, char*)
+5c8cc 6 247 223
+5c8d2 4 145 212
+5c8d6 2 247 223
+5c8d8 4 247 223
+5c8dc 4 145 212
+5c8e0 6 247 223
+5c8e6 6 145 212
+5c8ec c 351 218
+5c8f8 c 258 223
+5c904 8 112 215
+5c90c 4 259 223
+5c910 2 263 223
+5c912 6 265 223
+5c918 a 266 223
+5c922 2 287 223
+5c924 4 287 223
+5c928 8 112 215
+5c930 2 289 223
+5c932 c 290 223
+5c93e e 291 223
+5c94c a 292 223
+5c956 a 351 218
+5c960 2 57 227
+5c962 2 351 218
+5c964 4 57 227
+5c968 8 58 227
+5c970 2 57 227
+5c972 8 58 227
+5c97a 2 283 223
+5c97c 2 275 223
+5c97e 20 283 223
+5c99e 6 156 238
+5c9a4 2 287 223
+5c9a6 4 287 223
+5c9aa 4 287 223
+5c9ae 6 156 238
+5c9b4 14 291 223
+FUNC 5c9c8 26 0 std::num_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::do_get(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, int&, long long&) const
+5c9c8 4 604 223
+5c9cc 8 604 223
+5c9d4 1a 607 223
+FUNC 5c9f0 3b4 0 std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > std::priv::__copy_integer_and_fill<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >(wchar_t const*, int, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, int, int, wchar_t, wchar_t, wchar_t)
+5c9f0 a 148 225
+5c9fa 8 148 225
+5ca02 2 152 225
+5ca04 4 148 225
+5ca08 4 152 225
+5ca0c 4 159 225
+5ca10 4 161 225
+5ca14 a 153 225
+5ca1e 6 163 225
+5ca24 1a 167 225
+5ca3e c 167 225
+5ca4a 8 167 225
+5ca52 e 173 225
+5ca60 c 173 225
+5ca6c 8 179 225
+5ca74 2 480 200
+5ca76 10 179 225
+5ca86 2 480 200
+5ca88 2 62 229
+5ca8a 4 200 235
+5ca8e 2 200 235
+5ca90 6 200 235
+5ca96 c 200 235
+5caa2 2 200 235
+5caa4 8 62 229
+5caac 4 480 200
+5cab0 6 482 200
+5cab6 4 182 225
+5caba 4 213 200
+5cabe 4 482 200
+5cac2 4 213 200
+5cac6 8 482 200
+5cace 2e 182 225
+5cafc 4 213 200
+5cb00 4 182 225
+5cb04 8 213 200
+5cb0c 8 62 229
+5cb14 6 213 200
+5cb1a 4 214 200
+5cb1e 4 62 229
+5cb22 6 200 235
+5cb28 a 200 235
+5cb32 2 200 235
+5cb34 22 200 235
+5cb56 c 218 200
+5cb62 c 186 225
+5cb6e 10 153 225
+5cb7e 6 62 229
+5cb84 2 62 229
+5cb86 6 200 235
+5cb8c 8 200 235
+5cb94 4 200 235
+5cb98 6 62 229
+5cb9e c 62 229
+5cbaa 2 480 200
+5cbac c 62 229
+5cbb8 2 480 200
+5cbba 2 62 229
+5cbbc 4 200 235
+5cbc0 2 200 235
+5cbc2 6 200 235
+5cbc8 c 200 235
+5cbd4 2 200 235
+5cbd6 8 62 229
+5cbde 4 480 200
+5cbe2 6 482 200
+5cbe8 8 171 225
+5cbf0 c 482 200
+5cbfc a 178 225
+5cc06 2 179 225
+5cc08 2 178 225
+5cc0a c 179 225
+5cc16 16 200 235
+5cc2c 26 164 225
+5cc52 2 480 200
+5cc54 14 164 225
+5cc68 2 480 200
+5cc6a 2 62 229
+5cc6c 4 200 235
+5cc70 2 200 235
+5cc72 6 200 235
+5cc78 c 200 235
+5cc84 2 200 235
+5cc86 8 62 229
+5cc8e 4 480 200
+5cc92 10 482 200
+5cca2 e 200 235
+5ccb0 4 62 229
+5ccb4 4 176 225
+5ccb8 4 62 229
+5ccbc 2 62 229
+5ccbe 6 200 235
+5ccc4 8 200 235
+5cccc 2 200 235
+5ccce 4 62 229
+5ccd2 2 200 235
+5ccd4 2 62 229
+5ccd6 2 200 235
+5ccd8 4 62 229
+5ccdc 4 177 225
+5cce0 2 200 235
+5cce2 8 200 235
+5ccea 2 200 235
+5ccec 12 200 235
+5ccfe a 62 229
+5cd08 c 62 229
+5cd14 2 480 200
+5cd16 a 62 229
+5cd20 2 480 200
+5cd22 6 62 229
+5cd28 2 200 235
+5cd2a 2 200 235
+5cd2c 4 200 235
+5cd30 a 200 235
+5cd3a 2 200 235
+5cd3c a 62 229
+5cd46 4 480 200
+5cd4a 6 482 200
+5cd50 8 179 225
+5cd58 c 482 200
+5cd64 26 200 235
+5cd8a 6 62 229
+5cd90 14 200 235
+FUNC 5cda4 114 0 std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > std::priv::__put_integer<std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >(char*, char*, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&, int, wchar_t)
+5cda4 8 192 225
+5cdac 8 192 225
+5cdb4 2 145 212
+5cdb6 4 192 225
+5cdba a 145 212
+5cdc4 a 351 218
+5cdce 4 206 206
+5cdd2 2 351 218
+5cdd4 10 206 206
+5cde4 2 209 206
+5cde6 2 206 206
+5cde8 e 209 206
+5cdf6 a 351 218
+5ce00 2 87 227
+5ce02 2 351 218
+5ce04 8 87 227
+5ce0c 2 209 225
+5ce0e 2 203 225
+5ce10 6 209 225
+5ce16 8 211 225
+5ce1e 8 86 227
+5ce26 2 204 225
+5ce28 2 86 227
+5ce2a 4 204 225
+5ce2e 10 220 225
+5ce3e 4 138 212
+5ce42 6 139 212
+5ce48 22 225 225
+5ce6a 6 156 238
+5ce70 6 225 225
+5ce76 c 226 225
+5ce82 6 212 225
+5ce88 10 211 225
+5ce98 a 225 225
+5cea2 16 156 238
+FUNC 5ceb8 70 0 std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > std::priv::__do_put_integer<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, unsigned long>(std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&, wchar_t, unsigned long)
+5ceb8 4 372 225
+5cebc e 372 225
+5ceca 2 109 212
+5cecc 6 307 225
+5ced2 4 309 225
+5ced6 2 308 225
+5ced8 4 309 225
+5cedc e 308 225
+5ceea 2 309 225
+5ceec 16 381 225
+5cf02 6 382 225
+5cf08 4 380 225
+5cf0c 1c 310 225
+FUNC 5cf28 13c 0 std::num_put<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_put(std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&, wchar_t, void const*) const
+5cf28 6 475 225
+5cf2e 6 475 225
+5cf34 2 145 212
+5cf36 4 475 225
+5cf3a 2 62 229
+5cf3c 4 145 212
+5cf40 4 475 225
+5cf44 4 62 229
+5cf48 6 145 212
+5cf4e c 351 218
+5cf5a 6 477 225
+5cf60 2 109 212
+5cf62 4 139 212
+5cf66 8 123 212
+5cf6e 6 124 212
+5cf74 6 484 225
+5cf7a c 206 206
+5cf86 12 506 225
+5cf98 2 206 206
+5cf9a a 506 225
+5cfa4 2 112 212
+5cfa6 8 514 225
+5cfae 4 488 225
+5cfb2 6 488 225
+5cfb8 e 206 206
+5cfc6 6 62 229
+5cfcc a 200 235
+5cfd6 a 200 235
+5cfe0 2 200 235
+5cfe2 4 62 229
+5cfe6 e 206 206
+5cff4 a 200 235
+5cffe 2 206 206
+5d000 a 200 235
+5d00a 2 200 235
+5d00c a 62 229
+5d016 6 139 212
+5d01c 8 488 225
+5d024 8 206 206
+5d02c 4 62 229
+5d030 8 206 206
+5d038 1c 200 235
+5d054 10 477 225
+FUNC 5d064 22 0 std::num_put<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_put(std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&, wchar_t, unsigned long) const
+5d064 4 438 225
+5d068 8 438 225
+5d070 16 440 225
+FUNC 5d088 76 0 std::num_put<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_put(std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&, wchar_t, unsigned long long) const
+5d088 4 465 225
+5d08c 4 465 225
+5d090 2 310 225
+5d092 6 465 225
+5d098 2 310 225
+5d09a 4 465 225
+5d09e 4 310 225
+5d0a2 4 307 225
+5d0a6 2 109 212
+5d0a8 2 307 225
+5d0aa 4 309 225
+5d0ae 2 308 225
+5d0b0 4 309 225
+5d0b4 e 308 225
+5d0c2 2 309 225
+5d0c4 16 381 225
+5d0da 6 467 225
+5d0e0 4 380 225
+5d0e4 1a 310 225
+FUNC 5d100 76 0 std::num_put<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_put(std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&, wchar_t, long long) const
+5d100 4 459 225
+5d104 4 459 225
+5d108 2 310 225
+5d10a 6 459 225
+5d110 2 310 225
+5d112 4 459 225
+5d116 4 310 225
+5d11a 4 307 225
+5d11e 2 109 212
+5d120 2 307 225
+5d122 4 309 225
+5d126 2 308 225
+5d128 4 309 225
+5d12c e 308 225
+5d13a 2 309 225
+5d13c 16 381 225
+5d152 6 461 225
+5d158 4 380 225
+5d15c 1a 310 225
+FUNC 5d178 72 0 std::num_put<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_put(std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&, wchar_t, long) const
+5d178 4 432 225
+5d17c 6 432 225
+5d182 2 310 225
+5d184 4 432 225
+5d188 2 310 225
+5d18a 2 432 225
+5d18c 2 109 212
+5d18e 4 310 225
+5d192 2 307 225
+5d194 4 309 225
+5d198 2 308 225
+5d19a 4 309 225
+5d19e e 308 225
+5d1ac 2 309 225
+5d1ae 16 381 225
+5d1c4 6 434 225
+5d1ca 4 380 225
+5d1ce 1c 310 225
+FUNC 5d1ec 29a 0 std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > std::priv::__copy_float_and_fill<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >(wchar_t const*, wchar_t const*, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, int, int, wchar_t, wchar_t, wchar_t)
+5d1ec 8 42 225
+5d1f4 4 47 225
+5d1f8 6 42 225
+5d1fe 4 47 225
+5d202 2 42 225
+5d204 2 47 225
+5d206 2 42 225
+5d208 4 47 225
+5d20c 2 51 225
+5d20e 4 50 225
+5d212 4 51 225
+5d216 6 53 225
+5d21c 12 57 225
+5d22e a 57 225
+5d238 8 57 225
+5d240 8 61 225
+5d248 2 480 200
+5d24a 10 61 225
+5d25a 2 480 200
+5d25c 6 62 229
+5d262 4 200 235
+5d266 2 200 235
+5d268 6 200 235
+5d26e c 200 235
+5d27a 2 200 235
+5d27c a 62 229
+5d286 4 480 200
+5d28a 6 482 200
+5d290 4 64 225
+5d294 4 213 200
+5d298 c 482 200
+5d2a4 2e 64 225
+5d2d2 2 213 200
+5d2d4 4 64 225
+5d2d8 4 213 200
+5d2dc 8 62 229
+5d2e4 6 213 200
+5d2ea 4 214 200
+5d2ee 4 62 229
+5d2f2 6 200 235
+5d2f8 a 200 235
+5d302 2 200 235
+5d304 22 200 235
+5d326 c 218 200
+5d332 c 68 225
+5d33e c 48 225
+5d34a 4 62 229
+5d34e 4 59 225
+5d352 2 62 229
+5d354 2 62 229
+5d356 2 62 229
+5d358 6 200 235
+5d35e 8 200 235
+5d366 4 200 235
+5d36a 6 62 229
+5d370 c 62 229
+5d37c 2 480 200
+5d37e c 62 229
+5d38a 2 480 200
+5d38c 2 62 229
+5d38e 4 200 235
+5d392 2 200 235
+5d394 6 200 235
+5d39a c 200 235
+5d3a6 2 200 235
+5d3a8 8 62 229
+5d3b0 4 480 200
+5d3b4 12 482 200
+5d3c6 a 60 225
+5d3d0 2 61 225
+5d3d2 2 60 225
+5d3d4 c 61 225
+5d3e0 1a 200 235
+5d3fa 1e 54 225
+5d418 2 480 200
+5d41a 16 54 225
+5d430 2 480 200
+5d432 2 62 229
+5d434 4 200 235
+5d438 2 200 235
+5d43a 6 200 235
+5d440 c 200 235
+5d44c 2 200 235
+5d44e 8 62 229
+5d456 4 480 200
+5d45a 10 482 200
+5d46a 1c 200 235
+FUNC 5d488 1dc 0 bool std::priv::__copy_grouped_digits<std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, wchar_t>(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >&, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::priv::__basic_iostring<char>&, wchar_t const*, wchar_t, std::string const&, bool&)
+5d488 6 332 223
+5d48e 2 332 223
+5d490 2 338 223
+5d492 2 339 223
+5d494 2 338 223
+5d496 2 332 223
+5d498 4 338 223
+5d49c 4 332 223
+5d4a0 4 120 215
+5d4a4 2 332 223
+5d4a6 2 336 223
+5d4a8 2 101 205
+5d4aa 8 332 223
+5d4b2 4 120 215
+5d4b6 2 341 223
+5d4b8 8 90 215
+5d4c0 6 343 223
+5d4c6 2 342 223
+5d4c8 4 343 223
+5d4cc 2 344 223
+5d4ce 6 345 223
+5d4d4 4 346 223
+5d4d8 2 347 223
+5d4da 2 68 215
+5d4dc 8 229 235
+5d4e4 4 229 235
+5d4e8 4 69 215
+5d4ec 8 120 215
+5d4f4 4 341 223
+5d4f8 2 359 223
+5d4fa 2 361 223
+5d4fc 2 65 238
+5d4fe 6 359 223
+5d504 6 360 223
+5d50a 2 65 238
+5d50c a 361 223
+5d516 8 363 223
+5d51e 2 74 238
+5d520 4 64 238
+5d524 4 74 238
+5d528 2 74 238
+5d52a 8 74 238
+5d532 4 535 237
+5d536 4 101 205
+5d53a 2 350 223
+5d53c 2 90 238
+5d53e 2 352 223
+5d540 2 350 223
+5d542 2 352 223
+5d544 2 351 223
+5d546 2 68 215
+5d548 2 539 237
+5d54a 2 229 235
+5d54c 4 539 237
+5d550 6 229 235
+5d556 6 229 235
+5d55c 6 69 215
+5d562 2 92 215
+5d564 6 235 235
+5d56a 4 764 186
+5d56e 2 235 235
+5d570 4 191 246
+5d574 2 93 215
+5d576 8 191 246
+5d57e 2 95 215
+5d580 2 191 246
+5d582 4 95 215
+5d586 a 235 235
+5d590 2 400 237
+5d592 4 304 237
+5d596 e 306 237
+5d5a4 6 307 237
+5d5aa 8 307 237
+5d5b2 1c 134 222
+5d5ce 2 86 243
+5d5d0 4 84 243
+5d5d4 2 86 243
+5d5d6 6 332 223
+5d5dc 2 84 243
+5d5de 4 764 186
+5d5e2 4 146 205
+5d5e6 4 86 243
+5d5ea 4 101 205
+5d5ee 4 64 238
+5d5f2 4 96 238
+5d5f6 2 96 238
+5d5f8 6 97 238
+5d5fe 4 70 213
+5d602 2 97 238
+5d604 2 135 222
+5d606 2 161 201
+5d608 6 135 222
+5d60e 2 161 201
+5d610 c 161 201
+5d61c 2 175 236
+5d61e 2 164 238
+5d620 4 175 236
+5d624 2 160 238
+5d626 6 165 238
+5d62c 4 64 213
+5d630 8 67 213
+5d638 4 64 213
+5d63c 6 135 222
+5d642 c 175 236
+5d64e 2 164 238
+5d650 2 160 238
+5d652 6 165 238
+5d658 c 600 236
+FUNC 5d664 164 0 bool std::priv::__copy_digits<std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, wchar_t>(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >&, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::priv::__basic_iostring<char>&, wchar_t const*)
+5d664 6 314 223
+5d66a 2 314 223
+5d66c 2 316 223
+5d66e 8 314 223
+5d676 2 101 205
+5d678 4 314 223
+5d67c 2 318 223
+5d67e 2 90 215
+5d680 4 320 223
+5d684 2 319 223
+5d686 8 320 223
+5d68e 2 74 238
+5d690 4 64 238
+5d694 2 74 238
+5d696 4 321 223
+5d69a 2 74 238
+5d69c 2 74 238
+5d69e 8 74 238
+5d6a6 4 535 237
+5d6aa 4 101 205
+5d6ae 2 90 238
+5d6b0 4 321 223
+5d6b4 2 68 215
+5d6b6 2 539 237
+5d6b8 2 229 235
+5d6ba 2 539 237
+5d6bc 2 229 235
+5d6be 2 539 237
+5d6c0 4 229 235
+5d6c4 4 229 235
+5d6c8 2 322 223
+5d6ca 4 69 215
+5d6ce 8 120 215
+5d6d6 2 318 223
+5d6d8 6 90 215
+5d6de 2 92 215
+5d6e0 6 235 235
+5d6e6 4 764 186
+5d6ea 2 235 235
+5d6ec 4 191 246
+5d6f0 2 93 215
+5d6f2 2 191 246
+5d6f4 2 320 223
+5d6f6 4 191 246
+5d6fa 2 320 223
+5d6fc 2 191 246
+5d6fe 4 95 215
+5d702 2 319 223
+5d704 8 320 223
+5d70c 8 328 223
+5d714 8 229 235
+5d71c 2 400 237
+5d71e 4 304 237
+5d722 e 306 237
+5d730 6 307 237
+5d736 4 307 237
+5d73a 4 64 213
+5d73e 6 67 213
+5d744 2 64 213
+5d746 2 86 243
+5d748 4 84 243
+5d74c 2 86 243
+5d74e 2 314 223
+5d750 2 84 243
+5d752 4 764 186
+5d756 4 146 205
+5d75a 4 86 243
+5d75e 4 101 205
+5d762 4 64 238
+5d766 4 96 238
+5d76a 2 96 238
+5d76c 6 97 238
+5d772 4 70 213
+5d776 2 97 238
+5d778 2 135 222
+5d77a 4 161 201
+5d77e 6 161 201
+5d784 4 175 236
+5d788 2 164 238
+5d78a 2 160 238
+5d78c 6 165 238
+5d792 4 307 237
+5d796 12 134 222
+5d7a8 a 235 235
+5d7b2 8 135 222
+5d7ba e 600 236
+FUNC 5d7c8 c8 0 std::basic_string<char, std::char_traits<char>, std::priv::__iostring_allocator<char> >::push_back(char)
+5d7c8 4 64 238
+5d7cc 4 534 237
+5d7d0 2 74 238
+5d7d2 4 534 237
+5d7d6 2 74 238
+5d7d8 6 74 238
+5d7de 4 535 237
+5d7e2 4 101 205
+5d7e6 2 90 238
+5d7e8 2 232 246
+5d7ea 6 539 237
+5d7f0 4 540 237
+5d7f4 2 400 237
+5d7f6 4 304 237
+5d7fa a 306 237
+5d804 4 307 237
+5d808 4 307 237
+5d80c 4 64 213
+5d810 6 67 213
+5d816 2 64 213
+5d818 2 86 243
+5d81a 4 84 243
+5d81e 2 86 243
+5d820 4 534 237
+5d824 2 84 243
+5d826 4 764 186
+5d82a 4 146 205
+5d82e 4 86 243
+5d832 4 101 205
+5d836 4 64 238
+5d83a 4 96 238
+5d83e 2 96 238
+5d840 6 97 238
+5d846 4 70 213
+5d84a 2 97 238
+5d84c 4 161 201
+5d850 4 161 201
+5d854 2 175 236
+5d856 2 164 238
+5d858 2 160 238
+5d85a 6 165 238
+5d860 4 307 237
+5d864 12 134 222
+5d876 8 74 238
+5d87e 6 135 222
+5d884 c 600 236
+FUNC 5d890 8e 0 std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > std::priv::__copy_sign<std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, wchar_t>(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::priv::__basic_iostring<char>&, wchar_t, wchar_t)
+5d890 4 297 223
+5d894 8 297 223
+5d89c 8 120 215
+5d8a4 2 299 223
+5d8a6 8 308 223
+5d8ae 6 309 223
+5d8b4 8 90 215
+5d8bc 6 301 223
+5d8c2 6 303 223
+5d8c8 8 304 223
+5d8d0 2 68 215
+5d8d2 8 229 235
+5d8da 4 229 235
+5d8de 8 69 215
+5d8e6 2 92 215
+5d8e8 6 235 235
+5d8ee 4 764 186
+5d8f2 2 235 235
+5d8f4 4 191 246
+5d8f8 2 93 215
+5d8fa c 191 246
+5d906 8 95 215
+5d90e 8 229 235
+5d916 8 235 235
+FUNC 5d920 a0 0 std::istreambuf_iterator<char, std::char_traits<char> > std::priv::__copy_sign<std::istreambuf_iterator<char, std::char_traits<char> >, char>(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char, std::char_traits<char> >, std::priv::__basic_iostring<char>&, char, char)
+5d920 6 297 223
+5d926 6 297 223
+5d92c 4 120 215
+5d930 4 297 223
+5d934 4 120 215
+5d938 2 299 223
+5d93a 8 308 223
+5d942 c 309 223
+5d94e a 90 215
+5d958 8 301 223
+5d960 8 303 223
+5d968 8 304 223
+5d970 2 68 215
+5d972 8 229 235
+5d97a 4 229 235
+5d97e 8 69 215
+5d986 2 92 215
+5d988 6 235 235
+5d98e 4 223 246
+5d992 2 235 235
+5d994 4 191 246
+5d998 2 220 246
+5d99a 2 191 246
+5d99c 4 93 215
+5d9a0 4 191 246
+5d9a4 2 95 215
+5d9a6 4 191 246
+5d9aa 6 95 215
+5d9b0 8 229 235
+5d9b8 8 235 235
+FUNC 5d9c0 1b4 0 bool std::priv::__copy_grouped_digits<std::istreambuf_iterator<char, std::char_traits<char> >, char>(std::istreambuf_iterator<char, std::char_traits<char> >&, std::istreambuf_iterator<char, std::char_traits<char> >, std::priv::__basic_iostring<char>&, char const*, char, std::string const&, bool&)
+5d9c0 6 332 223
+5d9c6 4 332 223
+5d9ca 2 338 223
+5d9cc 2 332 223
+5d9ce 2 338 223
+5d9d0 2 339 223
+5d9d2 4 332 223
+5d9d6 4 120 215
+5d9da 4 70 213
+5d9de 6 332 223
+5d9e4 4 338 223
+5d9e8 2 336 223
+5d9ea 2 347 223
+5d9ec 2 70 213
+5d9ee 4 120 215
+5d9f2 4 341 223
+5d9f6 8 90 215
+5d9fe 4 42 223
+5da02 4 39 223
+5da06 6 344 223
+5da0c 2 74 238
+5da0e 4 64 238
+5da12 4 74 238
+5da16 2 74 238
+5da18 8 74 238
+5da20 4 535 237
+5da24 4 101 205
+5da28 2 350 223
+5da2a 2 90 238
+5da2c 2 352 223
+5da2e 2 350 223
+5da30 2 352 223
+5da32 2 232 246
+5da34 2 68 215
+5da36 4 539 237
+5da3a 2 229 235
+5da3c 2 539 237
+5da3e 6 229 235
+5da44 4 229 235
+5da48 4 69 215
+5da4c 8 120 215
+5da54 4 341 223
+5da58 2 359 223
+5da5a 2 361 223
+5da5c 6 359 223
+5da62 6 360 223
+5da68 2 65 238
+5da6a 2 361 223
+5da6c 2 65 238
+5da6e 8 361 223
+5da76 8 363 223
+5da7e 4 346 223
+5da82 2 347 223
+5da84 2 68 215
+5da86 8 229 235
+5da8e 6 229 235
+5da94 6 69 215
+5da9a 2 92 215
+5da9c 6 235 235
+5daa2 4 223 246
+5daa6 2 235 235
+5daa8 4 191 246
+5daac 2 220 246
+5daae 2 191 246
+5dab0 2 93 215
+5dab2 4 191 246
+5dab6 2 95 215
+5dab8 2 191 246
+5daba 4 95 215
+5dabe 8 235 235
+5dac6 2 400 237
+5dac8 4 304 237
+5dacc a 306 237
+5dad6 4 307 237
+5dada 8 307 237
+5dae2 14 134 222
+5daf6 2 86 243
+5daf8 4 84 243
+5dafc 2 86 243
+5dafe 4 332 223
+5db02 2 84 243
+5db04 4 764 186
+5db08 4 146 205
+5db0c 4 86 243
+5db10 4 101 205
+5db14 4 64 238
+5db18 4 96 238
+5db1c 2 96 238
+5db1e 4 70 213
+5db22 2 97 238
+5db24 4 70 213
+5db28 2 97 238
+5db2a 2 161 201
+5db2c 4 135 222
+5db30 2 161 201
+5db32 8 161 201
+5db3a 2 175 236
+5db3c 2 164 238
+5db3e 2 160 238
+5db40 6 165 238
+5db46 4 64 213
+5db4a 6 67 213
+5db50 4 64 213
+5db54 8 135 222
+5db5c 2 175 236
+5db5e 2 160 238
+5db60 2 164 238
+5db62 6 165 238
+5db68 c 600 236
+FUNC 5db74 3a2 0 std::ostreambuf_iterator<char, std::char_traits<char> > std::priv::__copy_integer_and_fill<char, std::ostreambuf_iterator<char, std::char_traits<char> > >(char const*, int, std::ostreambuf_iterator<char, std::char_traits<char> >, int, int, char, char, char)
+5db74 a 148 225
+5db7e 8 148 225
+5db86 2 152 225
+5db88 6 148 225
+5db8e 4 152 225
+5db92 4 159 225
+5db96 4 161 225
+5db9a a 153 225
+5dba4 6 163 225
+5dbaa 18 167 225
+5dbc2 e 167 225
+5dbd0 a 167 225
+5dbda e 173 225
+5dbe8 c 173 225
+5dbf4 8 179 225
+5dbfc 2 480 200
+5dbfe e 179 225
+5dc0c 2 480 200
+5dc0e 6 62 229
+5dc14 6 200 235
+5dc1a a 200 235
+5dc24 2 200 235
+5dc26 4 480 200
+5dc2a 6 482 200
+5dc30 4 182 225
+5dc34 4 213 200
+5dc38 a 482 200
+5dc42 14 182 225
+5dc56 4 213 200
+5dc5a 1e 182 225
+5dc78 e 213 200
+5dc86 4 214 200
+5dc8a 4 62 229
+5dc8e 6 200 235
+5dc94 a 200 235
+5dc9e 2 200 235
+5dca0 8 200 235
+5dca8 8 62 229
+5dcb0 6 213 200
+5dcb6 c 218 200
+5dcc2 c 186 225
+5dcce e 200 235
+5dcdc 10 62 229
+5dcec 10 153 225
+5dcfc 4 62 229
+5dd00 2 62 229
+5dd02 2 62 229
+5dd04 2 62 229
+5dd06 6 200 235
+5dd0c 8 200 235
+5dd14 4 62 229
+5dd18 4 200 235
+5dd1c c 62 229
+5dd28 2 480 200
+5dd2a 8 62 229
+5dd32 2 480 200
+5dd34 6 62 229
+5dd3a 6 200 235
+5dd40 a 200 235
+5dd4a 2 200 235
+5dd4c 4 480 200
+5dd50 6 482 200
+5dd56 8 171 225
+5dd5e a 482 200
+5dd68 a 178 225
+5dd72 2 179 225
+5dd74 2 178 225
+5dd76 c 179 225
+5dd82 e 200 235
+5dd90 10 62 229
+5dda0 26 164 225
+5ddc6 2 480 200
+5ddc8 12 164 225
+5ddda 2 480 200
+5dddc 6 62 229
+5dde2 6 200 235
+5dde8 a 200 235
+5ddf2 2 200 235
+5ddf4 4 480 200
+5ddf8 10 482 200
+5de08 a 200 235
+5de12 c 62 229
+5de1e 4 62 229
+5de22 4 176 225
+5de26 2 62 229
+5de28 4 62 229
+5de2c 6 200 235
+5de32 8 200 235
+5de3a 4 200 235
+5de3e 4 62 229
+5de42 4 177 225
+5de46 2 200 235
+5de48 4 62 229
+5de4c 8 200 235
+5de54 2 200 235
+5de56 c 200 235
+5de62 e 62 229
+5de70 c 62 229
+5de7c 2 480 200
+5de7e 8 62 229
+5de86 2 480 200
+5de88 6 62 229
+5de8e 6 200 235
+5de94 a 200 235
+5de9e 2 200 235
+5dea0 4 480 200
+5dea4 6 482 200
+5deaa 8 179 225
+5deb2 c 482 200
+5debe c 200 235
+5deca 10 62 229
+5deda e 200 235
+5dee8 16 62 229
+5defe c 200 235
+5df0a 8 62 229
+5df12 4 218 200
+FUNC 5df18 f8 0 std::ostreambuf_iterator<char, std::char_traits<char> > std::priv::__put_integer<std::ostreambuf_iterator<char, std::char_traits<char> > >(char*, char*, std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, int, char)
+5df18 8 232 225
+5df20 6 232 225
+5df26 2 145 212
+5df28 4 232 225
+5df2c 4 145 212
+5df30 4 232 225
+5df34 6 145 212
+5df3a c 351 218
+5df46 6 237 225
+5df4c 8 58 227
+5df54 2 235 225
+5df56 4 58 227
+5df5a 8 240 225
+5df62 6 242 225
+5df68 2 224 200
+5df6a a 224 200
+5df74 a 57 227
+5df7e 2 255 225
+5df80 2 57 227
+5df82 2 255 225
+5df84 14 256 225
+5df98 2 254 225
+5df9a 2 256 225
+5df9c 2 138 212
+5df9e 4 139 212
+5dfa2 24 260 225
+5dfc6 6 156 238
+5dfcc c 261 225
+5dfd8 4 243 225
+5dfdc 4 242 225
+5dfe0 6 243 225
+5dfe6 c 242 225
+5dff2 a 237 225
+5dffc 14 156 238
+FUNC 5e010 72 0 std::ostreambuf_iterator<char, std::char_traits<char> > std::priv::__do_put_integer<char, std::ostreambuf_iterator<char, std::char_traits<char> >, unsigned long>(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char, unsigned long)
+5e010 4 372 225
+5e014 e 372 225
+5e022 2 109 212
+5e024 6 307 225
+5e02a 4 309 225
+5e02e 2 308 225
+5e030 4 309 225
+5e034 e 308 225
+5e042 2 309 225
+5e044 18 381 225
+5e05c 6 382 225
+5e062 4 380 225
+5e066 1c 310 225
+FUNC 5e084 134 0 std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::do_put(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char, void const*) const
+5e084 6 475 225
+5e08a 6 475 225
+5e090 2 145 212
+5e092 4 475 225
+5e096 2 62 229
+5e098 4 145 212
+5e09c 4 475 225
+5e0a0 4 62 229
+5e0a4 6 145 212
+5e0aa c 351 218
+5e0b6 6 477 225
+5e0bc 2 109 212
+5e0be 4 139 212
+5e0c2 8 123 212
+5e0ca 6 124 212
+5e0d0 6 484 225
+5e0d6 c 101 206
+5e0e2 12 506 225
+5e0f4 2 101 206
+5e0f6 a 506 225
+5e100 2 112 212
+5e102 8 514 225
+5e10a 4 488 225
+5e10e 6 488 225
+5e114 e 101 206
+5e122 6 62 229
+5e128 a 200 235
+5e132 a 200 235
+5e13c 2 200 235
+5e13e e 101 206
+5e14c a 200 235
+5e156 2 101 206
+5e158 a 200 235
+5e162 2 200 235
+5e164 6 139 212
+5e16a 8 488 225
+5e172 a 200 235
+5e17c 4 62 229
+5e180 8 101 206
+5e188 4 62 229
+5e18c 8 101 206
+5e194 a 200 235
+5e19e c 62 229
+5e1aa e 477 225
+FUNC 5e1b8 24 0 std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::do_put(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char, unsigned long) const
+5e1b8 4 438 225
+5e1bc 8 438 225
+5e1c4 18 440 225
+FUNC 5e1dc 78 0 std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::do_put(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char, unsigned long long) const
+5e1dc 4 465 225
+5e1e0 4 465 225
+5e1e4 2 310 225
+5e1e6 6 465 225
+5e1ec 2 310 225
+5e1ee 4 465 225
+5e1f2 4 310 225
+5e1f6 4 307 225
+5e1fa 2 109 212
+5e1fc 2 307 225
+5e1fe 4 309 225
+5e202 2 308 225
+5e204 4 309 225
+5e208 e 308 225
+5e216 2 309 225
+5e218 18 381 225
+5e230 6 467 225
+5e236 4 380 225
+5e23a 1a 310 225
+FUNC 5e254 78 0 std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::do_put(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char, long long) const
+5e254 4 459 225
+5e258 4 459 225
+5e25c 2 310 225
+5e25e 6 459 225
+5e264 2 310 225
+5e266 4 459 225
+5e26a 4 310 225
+5e26e 4 307 225
+5e272 2 109 212
+5e274 2 307 225
+5e276 4 309 225
+5e27a 2 308 225
+5e27c 4 309 225
+5e280 e 308 225
+5e28e 2 309 225
+5e290 18 381 225
+5e2a8 6 461 225
+5e2ae 4 380 225
+5e2b2 1a 310 225
+FUNC 5e2cc 74 0 std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::do_put(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char, long) const
+5e2cc 4 432 225
+5e2d0 6 432 225
+5e2d6 2 310 225
+5e2d8 4 432 225
+5e2dc 2 310 225
+5e2de 2 432 225
+5e2e0 2 109 212
+5e2e2 4 310 225
+5e2e6 2 307 225
+5e2e8 4 309 225
+5e2ec 2 308 225
+5e2ee 4 309 225
+5e2f2 e 308 225
+5e300 2 309 225
+5e302 18 381 225
+5e31a 6 434 225
+5e320 4 380 225
+5e324 1c 310 225
+FUNC 5e340 294 0 std::ostreambuf_iterator<char, std::char_traits<char> > std::priv::__copy_float_and_fill<char, std::ostreambuf_iterator<char, std::char_traits<char> > >(char const*, char const*, std::ostreambuf_iterator<char, std::char_traits<char> >, int, int, char, char, char)
+5e340 8 42 225
+5e348 4 47 225
+5e34c 8 42 225
+5e354 2 47 225
+5e356 4 42 225
+5e35a 4 47 225
+5e35e 2 51 225
+5e360 4 50 225
+5e364 4 51 225
+5e368 6 53 225
+5e36e 12 57 225
+5e380 c 57 225
+5e38c a 57 225
+5e396 8 61 225
+5e39e 2 480 200
+5e3a0 10 61 225
+5e3b0 2 480 200
+5e3b2 6 62 229
+5e3b8 a 200 235
+5e3c2 c 200 235
+5e3ce 2 200 235
+5e3d0 4 480 200
+5e3d4 6 482 200
+5e3da 4 64 225
+5e3de 4 213 200
+5e3e2 c 482 200
+5e3ee 2e 64 225
+5e41c 2 213 200
+5e41e 4 64 225
+5e422 a 213 200
+5e42c 4 214 200
+5e430 4 62 229
+5e434 6 200 235
+5e43a a 200 235
+5e444 2 200 235
+5e446 8 200 235
+5e44e 8 62 229
+5e456 6 213 200
+5e45c c 218 200
+5e468 c 68 225
+5e474 10 200 235
+5e484 10 62 229
+5e494 c 48 225
+5e4a0 4 62 229
+5e4a4 4 59 225
+5e4a8 2 62 229
+5e4aa 2 62 229
+5e4ac 2 62 229
+5e4ae 6 200 235
+5e4b4 8 200 235
+5e4bc 4 62 229
+5e4c0 2 200 235
+5e4c2 c 62 229
+5e4ce 2 480 200
+5e4d0 8 62 229
+5e4d8 2 480 200
+5e4da 6 62 229
+5e4e0 6 200 235
+5e4e6 a 200 235
+5e4f0 2 200 235
+5e4f2 4 480 200
+5e4f6 10 482 200
+5e506 a 60 225
+5e510 2 61 225
+5e512 2 60 225
+5e514 c 61 225
+5e520 10 200 235
+5e530 12 62 229
+5e542 20 54 225
+5e562 2 480 200
+5e564 14 54 225
+5e578 2 480 200
+5e57a 6 62 229
+5e580 6 200 235
+5e586 a 200 235
+5e590 2 200 235
+5e592 4 480 200
+5e596 10 482 200
+5e5a6 a 200 235
+5e5b0 c 62 229
+5e5bc a 200 235
+5e5c6 e 62 229
+FUNC 5e5d4 7c 0 std::ostreambuf_iterator<char, std::char_traits<char> > std::priv::__put_float<std::ostreambuf_iterator<char, std::char_traits<char> > >(std::priv::__basic_iostring<char>&, std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char, char, char, unsigned int, std::string const&)
+5e5d4 6 96 225
+5e5da 4 65 238
+5e5de 2 96 225
+5e5e0 2 400 237
+5e5e2 4 96 225
+5e5e6 2 400 237
+5e5e8 2 100 225
+5e5ea 8 96 225
+5e5f2 2 100 225
+5e5f4 4 100 225
+5e5f8 8 101 225
+5e600 8 104 225
+5e608 16 105 225
+5e61e 2 138 212
+5e620 4 65 238
+5e624 2 110 225
+5e626 2 139 212
+5e628 2 109 212
+5e62a 2 139 212
+5e62c 1e 110 225
+5e64a 6 111 225
+FUNC 5e650 10c 0 std::ostreambuf_iterator<char, std::char_traits<char> > std::priv::__do_put_float<char, std::ostreambuf_iterator<char, std::char_traits<char> >, long double>(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char, long double)
+5e650 8 115 225
+5e658 4 115 225
+5e65c 4 41 213
+5e660 2 120 238
+5e662 6 115 225
+5e668 8 108 213
+5e670 2 115 225
+5e672 4 108 213
+5e676 8 41 213
+5e67e 2 120 238
+5e680 4 41 213
+5e684 6 124 238
+5e68a 4 481 201
+5e68e 4 124 238
+5e692 2 90 238
+5e694 2 101 205
+5e696 2 119 225
+5e698 2 101 205
+5e69a 14 119 225
+5e6ae c 145 212
+5e6ba c 351 218
+5e6c6 6 121 225
+5e6cc 8 56 227
+5e6d4 2 57 227
+5e6d6 2 56 227
+5e6d8 6 57 227
+5e6de 4 58 227
+5e6e2 2 57 227
+5e6e4 8 58 227
+5e6ec 22 124 225
+5e70e 6 156 238
+5e714 4 64 238
+5e718 4 96 238
+5e71c 2 96 238
+5e71e 2 70 213
+5e720 2 97 238
+5e722 2 70 213
+5e724 2 97 238
+5e726 4 161 201
+5e72a 4 161 201
+5e72e a 125 225
+5e738 6 135 222
+5e73e 12 156 238
+5e750 c 121 225
+FUNC 5e75c 28 0 std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::do_put(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char, long double) const
+5e75c 4 451 225
+5e760 8 451 225
+5e768 1c 453 225
+FUNC 5e784 10c 0 std::ostreambuf_iterator<char, std::char_traits<char> > std::priv::__do_put_float<char, std::ostreambuf_iterator<char, std::char_traits<char> >, double>(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char, double)
+5e784 8 115 225
+5e78c 4 115 225
+5e790 4 41 213
+5e794 2 120 238
+5e796 6 115 225
+5e79c 8 108 213
+5e7a4 2 115 225
+5e7a6 4 108 213
+5e7aa 8 41 213
+5e7b2 2 120 238
+5e7b4 4 41 213
+5e7b8 6 124 238
+5e7be 4 481 201
+5e7c2 4 124 238
+5e7c6 2 90 238
+5e7c8 2 101 205
+5e7ca 2 119 225
+5e7cc 2 101 205
+5e7ce 14 119 225
+5e7e2 c 145 212
+5e7ee c 351 218
+5e7fa 6 121 225
+5e800 8 56 227
+5e808 2 57 227
+5e80a 2 56 227
+5e80c 6 57 227
+5e812 4 58 227
+5e816 2 57 227
+5e818 8 58 227
+5e820 22 124 225
+5e842 6 156 238
+5e848 4 64 238
+5e84c 4 96 238
+5e850 2 96 238
+5e852 2 70 213
+5e854 2 97 238
+5e856 2 70 213
+5e858 2 97 238
+5e85a 4 161 201
+5e85e 4 161 201
+5e862 a 125 225
+5e86c 6 135 222
+5e872 12 156 238
+5e884 c 121 225
+FUNC 5e890 28 0 std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::do_put(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char, double) const
+5e890 4 444 225
+5e894 8 444 225
+5e89c 1c 446 225
+FUNC 5e8b8 40 0 std::priv::_String_base<wchar_t, std::priv::__iostring_allocator<wchar_t> >::_M_allocate_block(unsigned int)
+5e8b8 4 608 236
+5e8bc 2 607 236
+5e8be 2 607 236
+5e8c0 2 608 236
+5e8c2 2 608 236
+5e8c4 4 610 236
+5e8c8 2 67 213
+5e8ca 4 64 213
+5e8ce 4 67 213
+5e8d2 2 64 213
+5e8d4 2 306 201
+5e8d6 6 134 222
+5e8dc 2 613 236
+5e8de 4 611 236
+5e8e2 2 612 236
+5e8e4 4 613 236
+5e8e8 10 600 236
+FUNC 5e8f8 164 0 std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > std::priv::__put_float<std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >(std::priv::__basic_iostring<char>&, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&, wchar_t, wchar_t, wchar_t, unsigned int, std::string const&)
+5e8f8 a 74 225
+5e902 a 74 225
+5e90c 2 145 212
+5e90e 4 74 225
+5e912 4 145 212
+5e916 4 74 225
+5e91a 8 145 212
+5e922 c 351 218
+5e92e 6 78 225
+5e934 c 108 213
+5e940 8 120 238
+5e948 a 41 213
+5e952 2 120 238
+5e954 4 41 213
+5e958 6 124 238
+5e95e 4 481 201
+5e962 4 124 238
+5e966 4 101 205
+5e96a 4 81 225
+5e96e 2 101 205
+5e970 e 81 225
+5e97e 8 83 225
+5e986 16 206 206
+5e99c 1a 84 225
+5e9b6 4 138 212
+5e9ba 6 206 206
+5e9c0 4 65 238
+5e9c4 2 138 212
+5e9c6 2 139 212
+5e9c8 2 206 206
+5e9ca 4 139 212
+5e9ce 4 89 238
+5e9d2 4 109 212
+5e9d6 e 206 206
+5e9e4 2 89 225
+5e9e6 4 400 237
+5e9ea 2 89 225
+5e9ec 4 89 225
+5e9f0 2 89 225
+5e9f2 2 89 225
+5e9f4 1c 89 225
+5ea10 4 64 238
+5ea14 4 96 238
+5ea18 2 96 238
+5ea1a 4 70 213
+5ea1e 2 97 238
+5ea20 4 70 213
+5ea24 2 97 238
+5ea26 4 323 201
+5ea2a 4 161 201
+5ea2e 4 161 201
+5ea32 c 90 225
+5ea3e 6 135 222
+5ea44 a 78 225
+5ea4e e 89 225
+FUNC 5ea5c 10c 0 std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > std::priv::__do_put_float<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, long double>(std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&, wchar_t, long double)
+5ea5c 8 115 225
+5ea64 4 115 225
+5ea68 4 41 213
+5ea6c 2 120 238
+5ea6e 6 115 225
+5ea74 8 108 213
+5ea7c 2 115 225
+5ea7e 4 108 213
+5ea82 8 41 213
+5ea8a 2 120 238
+5ea8c 4 41 213
+5ea90 6 124 238
+5ea96 4 481 201
+5ea9a 4 124 238
+5ea9e 2 90 238
+5eaa0 2 101 205
+5eaa2 2 119 225
+5eaa4 2 101 205
+5eaa6 14 119 225
+5eaba c 145 212
+5eac6 c 351 218
+5ead2 6 121 225
+5ead8 8 85 227
+5eae0 2 86 227
+5eae2 2 85 227
+5eae4 6 86 227
+5eaea 4 87 227
+5eaee 2 86 227
+5eaf0 8 87 227
+5eaf8 20 124 225
+5eb18 6 156 238
+5eb1e 4 64 238
+5eb22 4 96 238
+5eb26 2 96 238
+5eb28 2 70 213
+5eb2a 2 97 238
+5eb2c 2 70 213
+5eb2e 2 97 238
+5eb30 4 161 201
+5eb34 4 161 201
+5eb38 a 125 225
+5eb42 6 135 222
+5eb48 12 156 238
+5eb5a e 121 225
+FUNC 5eb68 26 0 std::num_put<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_put(std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&, wchar_t, long double) const
+5eb68 4 451 225
+5eb6c 8 451 225
+5eb74 1a 453 225
+FUNC 5eb90 10c 0 std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > std::priv::__do_put_float<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, double>(std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&, wchar_t, double)
+5eb90 8 115 225
+5eb98 4 115 225
+5eb9c 4 41 213
+5eba0 2 120 238
+5eba2 6 115 225
+5eba8 8 108 213
+5ebb0 2 115 225
+5ebb2 4 108 213
+5ebb6 8 41 213
+5ebbe 2 120 238
+5ebc0 4 41 213
+5ebc4 6 124 238
+5ebca 4 481 201
+5ebce 4 124 238
+5ebd2 2 90 238
+5ebd4 2 101 205
+5ebd6 2 119 225
+5ebd8 2 101 205
+5ebda 14 119 225
+5ebee c 145 212
+5ebfa c 351 218
+5ec06 6 121 225
+5ec0c 8 85 227
+5ec14 2 86 227
+5ec16 2 85 227
+5ec18 6 86 227
+5ec1e 4 87 227
+5ec22 2 86 227
+5ec24 8 87 227
+5ec2c 20 124 225
+5ec4c 6 156 238
+5ec52 4 64 238
+5ec56 4 96 238
+5ec5a 2 96 238
+5ec5c 2 70 213
+5ec5e 2 97 238
+5ec60 2 70 213
+5ec62 2 97 238
+5ec64 4 161 201
+5ec68 4 161 201
+5ec6c a 125 225
+5ec76 6 135 222
+5ec7c 12 156 238
+5ec8e e 121 225
+FUNC 5ec9c 26 0 std::num_put<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_put(std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&, wchar_t, double) const
+5ec9c 4 444 225
+5eca0 8 444 225
+5eca8 1a 446 225
+FUNC 5ecc4 15c 0 std::time_put<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_put(std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&, wchar_t, tm const*, char, char) const
+5ecc4 a 425 241
+5ecce 6 425 241
+5ecd4 6 145 212
+5ecda 8 425 241
+5ece2 a 145 212
+5ecec c 351 218
+5ecf8 6 428 241
+5ecfe c 108 213
+5ed0a 8 120 238
+5ed12 a 41 213
+5ed1c 4 120 238
+5ed20 2 430 241
+5ed22 4 41 213
+5ed26 6 124 238
+5ed2c 4 481 201
+5ed30 4 124 238
+5ed34 6 101 205
+5ed3a 4 430 241
+5ed3e 2 101 205
+5ed40 14 430 241
+5ed54 e 90 238
+5ed62 4 66 238
+5ed66 c 90 238
+5ed72 2 213 200
+5ed74 4 90 238
+5ed78 2 213 200
+5ed7a 2 213 200
+5ed7c 10 90 238
+5ed8c 4 213 200
+5ed90 8 62 229
+5ed98 4 213 200
+5ed9c 4 214 200
+5eda0 4 62 229
+5eda4 6 200 235
+5edaa 8 200 235
+5edb2 2 200 235
+5edb4 c 200 235
+5edc0 4 213 200
+5edc4 4 218 200
+5edc8 2 96 238
+5edca c 218 200
+5edd6 2 96 238
+5edd8 2 96 238
+5edda 4 70 213
+5edde 4 97 238
+5ede2 4 70 213
+5ede6 2 97 238
+5ede8 2 135 222
+5edea 4 323 201
+5edee 4 161 201
+5edf2 4 161 201
+5edf6 c 432 241
+5ee02 6 135 222
+5ee08 a 428 241
+5ee12 e 431 241
+FUNC 5ee20 11c 0 std::basic_string<wchar_t, std::char_traits<wchar_t>, std::priv::__iostring_allocator<wchar_t> >& std::basic_string<wchar_t, std::char_traits<wchar_t>, std::priv::__iostring_allocator<wchar_t> >::_M_appendT<wchar_t const*>(wchar_t const*, wchar_t const*, std::forward_iterator_tag const&)
+5ee20 2 470 237
+5ee22 4 468 237
+5ee26 4 468 237
+5ee2a 2 470 237
+5ee2c 2 355 216
+5ee2e 4 64 238
+5ee32 2 355 216
+5ee34 4 74 238
+5ee38 8 74 238
+5ee40 4 472 237
+5ee44 2 400 237
+5ee46 c 304 237
+5ee52 2 400 237
+5ee54 a 304 237
+5ee5e c 306 237
+5ee6a 4 307 237
+5ee6e 4 307 237
+5ee72 10 134 222
+5ee82 2 764 186
+5ee84 2 482 237
+5ee86 2 107 243
+5ee88 2 267 246
+5ee8a 2 107 243
+5ee8c 2 483 237
+5ee8e 8 106 243
+5ee96 4 484 237
+5ee9a 6 101 205
+5eea0 2 485 237
+5eea2 6 489 237
+5eea8 4 307 237
+5eeac c 64 213
+5eeb8 8 67 213
+5eec0 2 107 243
+5eec2 4 107 243
+5eec6 2 107 243
+5eec8 c 106 243
+5eed4 2 107 243
+5eed6 8 106 243
+5eede 4 64 238
+5eee2 2 101 205
+5eee4 2 96 238
+5eee6 4 107 243
+5eeea 2 101 205
+5eeec 2 96 238
+5eeee 2 96 238
+5eef0 6 97 238
+5eef6 4 70 213
+5eefa 2 97 238
+5eefc 2 135 222
+5eefe 4 323 201
+5ef02 4 161 201
+5ef06 4 161 201
+5ef0a 4 479 237
+5ef0e 2 164 238
+5ef10 2 160 238
+5ef12 2 489 237
+5ef14 4 165 238
+5ef18 4 489 237
+5ef1c 6 135 222
+5ef22 c 74 238
+5ef2e e 600 236
+FUNC 5ef3c 950 0 std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > std::priv::__money_do_put<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >, std::priv::__basic_iostring<wchar_t> >(std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, bool, std::ios_base&, wchar_t, std::priv::__basic_iostring<wchar_t> const&, bool, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >*)
+5ef3c a 316 220
+5ef46 2 316 220
+5ef48 6 145 212
+5ef4e 4 316 220
+5ef52 6 145 212
+5ef58 6 316 220
+5ef5e 4 145 212
+5ef62 6 316 220
+5ef68 8 145 212
+5ef70 2a 351 218
+5ef9a 2 206 206
+5ef9c 2 351 218
+5ef9e 2c 206 206
+5efca 2 336 220
+5efcc 2 206 206
+5efce 6 336 220
+5efd4 a 173 221
+5efde 4 174 221
+5efe2 2 173 221
+5efe4 6 174 221
+5efea a 175 221
+5eff4 2 174 221
+5eff6 a 175 221
+5f000 a 179 221
+5f00a 6 176 221
+5f010 2 179 221
+5f012 6 176 221
+5f018 4 65 238
+5f01c 4 89 238
+5f020 6 354 220
+5f026 12 360 220
+5f038 2 361 220
+5f03a 2 362 220
+5f03c 8 368 220
+5f044 2 368 220
+5f046 8 217 221
+5f04e 6 368 220
+5f054 8 217 221
+5f05c 6 385 220
+5f062 8 387 220
+5f06a 8 184 206
+5f072 4 387 220
+5f076 4 184 206
+5f07a 6 387 220
+5f080 4 387 220
+5f084 4 481 201
+5f088 6 108 213
+5f08e 2 481 201
+5f090 2 108 213
+5f092 8 120 238
+5f09a 4 108 213
+5f09e a 41 213
+5f0a8 a 120 238
+5f0b2 4 41 213
+5f0b6 6 124 238
+5f0bc 4 481 201
+5f0c0 4 124 238
+5f0c4 2 397 220
+5f0c6 2 101 205
+5f0c8 4 90 238
+5f0cc 4 397 220
+5f0d0 2 101 205
+5f0d2 4 397 220
+5f0d6 2 579 237
+5f0d8 4 66 238
+5f0dc 4 579 237
+5f0e0 a 579 237
+5f0ea 4 764 186
+5f0ee 2 579 237
+5f0f0 4 267 246
+5f0f4 2 581 237
+5f0f6 2 582 237
+5f0f8 4 579 237
+5f0fc 4 579 237
+5f100 18 587 237
+5f118 2 400 237
+5f11a 20 399 220
+5f13a 4 66 238
+5f13e 4 90 238
+5f142 2 400 237
+5f144 8 413 220
+5f14c 4 400 237
+5f150 4 136 212
+5f154 2 400 237
+5f156 2 136 212
+5f158 4 416 220
+5f15c 4 418 220
+5f160 2 419 220
+5f162 c 421 220
+5f16e 2 422 220
+5f170 8 400 237
+5f178 4 423 220
+5f17c 8 427 220
+5f184 2 427 220
+5f186 4 181 221
+5f18a 6 427 220
+5f190 28 181 221
+5f1b8 2 427 220
+5f1ba a 437 220
+5f1c4 2 439 220
+5f1c6 6 444 220
+5f1cc 4 446 220
+5f1d0 4 444 220
+5f1d4 a 446 220
+5f1de a 212 221
+5f1e8 4 213 221
+5f1ec 2 212 221
+5f1ee 6 213 221
+5f1f4 a 214 221
+5f1fe 2 213 221
+5f200 a 214 221
+5f20a a 218 221
+5f214 6 215 221
+5f21a 2 218 221
+5f21c 6 215 221
+5f222 4 65 238
+5f226 4 89 238
+5f22a 6 354 220
+5f230 c 355 220
+5f23c 2 368 220
+5f23e 8 178 221
+5f246 6 368 220
+5f24c a 178 221
+5f256 a 389 220
+5f260 a 390 220
+5f26a 4 64 238
+5f26e 4 96 238
+5f272 2 96 238
+5f274 4 97 238
+5f278 4 323 201
+5f27c 6 161 201
+5f282 4 161 201
+5f286 4 64 238
+5f28a 4 96 238
+5f28e 2 96 238
+5f290 4 97 238
+5f294 4 323 201
+5f298 6 161 201
+5f29e 4 161 201
+5f2a2 6 156 238
+5f2a8 6 498 220
+5f2ae c 499 220
+5f2ba 2 427 220
+5f2bc 4 220 221
+5f2c0 6 427 220
+5f2c6 28 219 221
+5f2ee 2 427 220
+5f2f0 a 437 220
+5f2fa a 437 220
+5f304 6 444 220
+5f30a 4 446 220
+5f30e 4 448 220
+5f312 8 446 220
+5f31a 2 448 220
+5f31c 8 448 220
+5f324 2 480 220
+5f326 2 483 220
+5f328 2 477 220
+5f32a 2 483 220
+5f32c 8 480 220
+5f334 6 477 220
+5f33a 16 454 220
+5f350 a 216 221
+5f35a a 177 221
+5f364 4 462 220
+5f368 18 463 220
+5f380 c 483 220
+5f38c 2 452 220
+5f38e 4 452 220
+5f392 4 400 237
+5f396 2 65 238
+5f398 2 400 237
+5f39a 18 492 220
+5f3b2 2 493 220
+5f3b4 4 492 220
+5f3b8 2 213 200
+5f3ba 6 492 220
+5f3c0 2 213 200
+5f3c2 4 492 220
+5f3c6 2 213 200
+5f3c8 12 492 220
+5f3da 6 213 200
+5f3e0 8 62 229
+5f3e8 6 213 200
+5f3ee 4 214 200
+5f3f2 4 62 229
+5f3f6 6 200 235
+5f3fc 8 200 235
+5f404 2 200 235
+5f406 c 200 235
+5f412 6 62 229
+5f418 4 62 229
+5f41c a 200 235
+5f426 8 200 235
+5f42e 6 62 229
+5f434 4 62 229
+5f438 20 458 220
+5f458 4 480 200
+5f45c c 458 220
+5f468 4 480 200
+5f46c 2 62 229
+5f46e a 200 235
+5f478 a 200 235
+5f482 8 62 229
+5f48a 6 480 200
+5f490 10 482 200
+5f4a0 e 459 220
+5f4ae 8 470 220
+5f4b6 a 473 220
+5f4c0 4 62 229
+5f4c4 4 62 229
+5f4c8 6 62 229
+5f4ce a 200 235
+5f4d8 8 200 235
+5f4e0 6 62 229
+5f4e6 2 200 235
+5f4e8 2 62 229
+5f4ea 2 200 235
+5f4ec 4 62 229
+5f4f0 6 200 235
+5f4f6 8 200 235
+5f4fe 6 62 229
+5f504 4 477 220
+5f508 4 62 229
+5f50c a 477 220
+5f516 2 480 200
+5f518 4 477 220
+5f51c 2 480 200
+5f51e 2 62 229
+5f520 a 200 235
+5f52a 8 200 235
+5f532 8 62 229
+5f53a 6 480 200
+5f540 4 482 200
+5f544 4 478 220
+5f548 c 482 200
+5f554 a 477 220
+5f55e 6 478 220
+5f564 4 477 220
+5f568 a 478 220
+5f572 e 478 220
+5f580 4 65 238
+5f584 8 466 220
+5f58c 4 62 229
+5f590 2 467 220
+5f592 2 62 229
+5f594 4 62 229
+5f598 6 200 235
+5f59e 8 200 235
+5f5a6 4 200 235
+5f5aa 6 62 229
+5f5b0 6 62 229
+5f5b6 28 220 221
+5f5de 4 427 220
+5f5e2 28 180 221
+5f60a 4 427 220
+5f60e 10 218 200
+5f61e a 493 220
+5f628 6 494 220
+5f62e 8 494 220
+5f636 4 64 238
+5f63a 2 96 238
+5f63c 6 498 220
+5f642 2 96 238
+5f644 4 498 220
+5f648 4 96 238
+5f64c 6 96 238
+5f652 4 70 213
+5f656 4 97 238
+5f65a 6 70 213
+5f660 2 97 238
+5f662 2 135 222
+5f664 4 323 201
+5f668 6 161 201
+5f66e 6 161 201
+5f674 1a 200 235
+5f68e c 135 222
+5f69a 16 480 220
+5f6b0 4 480 220
+5f6b4 2 62 229
+5f6b6 8 480 220
+5f6be 2 62 229
+5f6c0 2 200 235
+5f6c2 2 62 229
+5f6c4 8 200 235
+5f6cc 8 200 235
+5f6d4 6 62 229
+5f6da 4 62 229
+5f6de 14 483 220
+5f6f2 4 483 220
+5f6f6 8 494 220
+5f6fe 4 480 200
+5f702 c 494 220
+5f70e 2 480 200
+5f710 2 62 229
+5f712 8 200 235
+5f71a a 200 235
+5f724 8 62 229
+5f72c 6 480 200
+5f732 14 482 200
+5f746 c 496 220
+5f752 e 200 235
+5f760 18 471 220
+5f778 8 448 220
+5f780 4 480 200
+5f784 c 448 220
+5f790 4 480 200
+5f794 2 62 229
+5f796 8 200 235
+5f79e a 200 235
+5f7a8 8 62 229
+5f7b0 4 480 200
+5f7b4 12 482 200
+5f7c6 c 450 220
+5f7d2 e 200 235
+5f7e0 6 135 222
+5f7e6 c 200 235
+5f7f2 4 62 229
+5f7f6 34 200 235
+5f82a 6 156 238
+5f830 c 498 220
+5f83c 10 156 238
+5f84c 2 66 238
+5f84e 6 803 237
+5f854 6 249 246
+5f85a 2 806 237
+5f85c 4 249 246
+5f860 14 806 237
+5f874 18 498 220
+FUNC 5f88c 154 0 std::money_put<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_put(std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, bool, std::ios_base&, wchar_t, long double) const
+5f88c a 505 220
+5f896 2 108 213
+5f898 4 505 220
+5f89c 2 108 213
+5f89e 8 505 220
+5f8a6 8 120 238
+5f8ae 8 108 213
+5f8b6 6 41 213
+5f8bc 2 120 238
+5f8be 4 41 213
+5f8c2 2 120 238
+5f8c4 4 41 213
+5f8c8 6 124 238
+5f8ce 4 481 201
+5f8d2 4 124 238
+5f8d6 6 101 205
+5f8dc 8 108 213
+5f8e4 4 101 205
+5f8e8 4 108 213
+5f8ec 8 41 213
+5f8f4 2 120 238
+5f8f6 4 41 213
+5f8fa 6 124 238
+5f900 4 481 201
+5f904 4 124 238
+5f908 2 90 238
+5f90a 6 133 225
+5f910 2 101 205
+5f912 2 133 225
+5f914 2 101 205
+5f916 8 133 225
+5f91e c 145 212
+5f92a c 351 218
+5f936 6 135 225
+5f93c e 136 225
+5f94a 4 64 238
+5f94e 4 96 238
+5f952 2 96 238
+5f954 2 70 213
+5f956 2 97 238
+5f958 4 70 213
+5f95c 2 97 238
+5f95e 4 161 201
+5f962 4 161 201
+5f966 20 510 220
+5f986 4 64 238
+5f98a 4 96 238
+5f98e 2 96 238
+5f990 4 70 213
+5f994 2 97 238
+5f996 4 70 213
+5f99a 2 97 238
+5f99c 4 323 201
+5f9a0 4 161 201
+5f9a4 4 161 201
+5f9a8 e 511 220
+5f9b6 c 135 222
+5f9c2 a 510 220
+5f9cc 6 135 225
+5f9d2 e 156 238
+FUNC 5f9e0 948 0 std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > std::priv::__money_do_put<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >(std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, bool, std::ios_base&, wchar_t, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, bool, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >*)
+5f9e0 a 316 220
+5f9ea 2 316 220
+5f9ec 6 145 212
+5f9f2 4 316 220
+5f9f6 6 145 212
+5f9fc 6 316 220
+5fa02 4 145 212
+5fa06 6 316 220
+5fa0c 8 145 212
+5fa14 2a 351 218
+5fa3e 2 206 206
+5fa40 2 351 218
+5fa42 2c 206 206
+5fa6e 2 336 220
+5fa70 2 206 206
+5fa72 6 336 220
+5fa78 a 173 221
+5fa82 4 174 221
+5fa86 2 173 221
+5fa88 6 174 221
+5fa8e a 175 221
+5fa98 2 174 221
+5fa9a a 175 221
+5faa4 a 179 221
+5faae 6 176 221
+5fab4 2 179 221
+5fab6 6 176 221
+5fabc 2 65 238
+5fabe 4 89 238
+5fac2 6 354 220
+5fac8 e 360 220
+5fad6 2 361 220
+5fad8 2 362 220
+5fada 8 368 220
+5fae2 2 368 220
+5fae4 8 217 221
+5faec 6 368 220
+5faf2 8 217 221
+5fafa 6 385 220
+5fb00 8 387 220
+5fb08 8 184 206
+5fb10 4 387 220
+5fb14 4 184 206
+5fb18 6 387 220
+5fb1e 4 387 220
+5fb22 4 481 201
+5fb26 6 108 213
+5fb2c 2 481 201
+5fb2e 2 108 213
+5fb30 8 120 238
+5fb38 4 108 213
+5fb3c a 41 213
+5fb46 a 120 238
+5fb50 4 41 213
+5fb54 6 124 238
+5fb5a 4 481 201
+5fb5e 4 124 238
+5fb62 2 397 220
+5fb64 2 101 205
+5fb66 4 90 238
+5fb6a 4 397 220
+5fb6e 2 101 205
+5fb70 4 397 220
+5fb74 2 579 237
+5fb76 4 66 238
+5fb7a 4 579 237
+5fb7e a 579 237
+5fb88 4 764 186
+5fb8c 2 579 237
+5fb8e 4 267 246
+5fb92 2 581 237
+5fb94 2 582 237
+5fb96 4 579 237
+5fb9a 4 579 237
+5fb9e 18 587 237
+5fbb6 2 400 237
+5fbb8 20 399 220
+5fbd8 4 66 238
+5fbdc 4 90 238
+5fbe0 2 400 237
+5fbe2 8 413 220
+5fbea 4 400 237
+5fbee 4 136 212
+5fbf2 2 400 237
+5fbf4 2 136 212
+5fbf6 4 416 220
+5fbfa 4 418 220
+5fbfe 2 419 220
+5fc00 c 421 220
+5fc0c 2 422 220
+5fc0e 8 400 237
+5fc16 4 423 220
+5fc1a 8 427 220
+5fc22 2 427 220
+5fc24 4 181 221
+5fc28 6 427 220
+5fc2e 28 181 221
+5fc56 2 427 220
+5fc58 a 437 220
+5fc62 2 439 220
+5fc64 6 444 220
+5fc6a 4 446 220
+5fc6e 4 444 220
+5fc72 a 446 220
+5fc7c a 212 221
+5fc86 4 213 221
+5fc8a 2 212 221
+5fc8c 6 213 221
+5fc92 a 214 221
+5fc9c 2 213 221
+5fc9e a 214 221
+5fca8 a 218 221
+5fcb2 6 215 221
+5fcb8 2 218 221
+5fcba 6 215 221
+5fcc0 2 65 238
+5fcc2 4 89 238
+5fcc6 6 354 220
+5fccc c 355 220
+5fcd8 2 368 220
+5fcda 8 178 221
+5fce2 6 368 220
+5fce8 a 178 221
+5fcf2 a 389 220
+5fcfc a 390 220
+5fd06 4 64 238
+5fd0a 4 96 238
+5fd0e 2 96 238
+5fd10 4 97 238
+5fd14 4 323 201
+5fd18 6 161 201
+5fd1e 4 161 201
+5fd22 4 64 238
+5fd26 4 96 238
+5fd2a 2 96 238
+5fd2c 4 97 238
+5fd30 4 323 201
+5fd34 6 161 201
+5fd3a 4 161 201
+5fd3e 6 156 238
+5fd44 6 498 220
+5fd4a c 499 220
+5fd56 2 427 220
+5fd58 4 220 221
+5fd5c 6 427 220
+5fd62 28 219 221
+5fd8a 2 427 220
+5fd8c a 437 220
+5fd96 a 437 220
+5fda0 6 444 220
+5fda6 4 446 220
+5fdaa 4 448 220
+5fdae 8 446 220
+5fdb6 2 448 220
+5fdb8 8 448 220
+5fdc0 2 480 220
+5fdc2 2 483 220
+5fdc4 2 477 220
+5fdc6 2 483 220
+5fdc8 8 480 220
+5fdd0 6 477 220
+5fdd6 16 454 220
+5fdec a 216 221
+5fdf6 a 177 221
+5fe00 4 462 220
+5fe04 18 463 220
+5fe1c c 483 220
+5fe28 2 452 220
+5fe2a 4 452 220
+5fe2e 4 400 237
+5fe32 2 65 238
+5fe34 2 400 237
+5fe36 18 492 220
+5fe4e 2 493 220
+5fe50 4 492 220
+5fe54 2 213 200
+5fe56 6 492 220
+5fe5c 2 213 200
+5fe5e 4 492 220
+5fe62 2 213 200
+5fe64 12 492 220
+5fe76 6 213 200
+5fe7c 8 62 229
+5fe84 6 213 200
+5fe8a 4 214 200
+5fe8e 4 62 229
+5fe92 6 200 235
+5fe98 8 200 235
+5fea0 2 200 235
+5fea2 c 200 235
+5feae 6 62 229
+5feb4 4 62 229
+5feb8 a 200 235
+5fec2 8 200 235
+5feca 6 62 229
+5fed0 4 62 229
+5fed4 20 458 220
+5fef4 4 480 200
+5fef8 c 458 220
+5ff04 4 480 200
+5ff08 2 62 229
+5ff0a a 200 235
+5ff14 a 200 235
+5ff1e 8 62 229
+5ff26 6 480 200
+5ff2c 10 482 200
+5ff3c e 459 220
+5ff4a 8 470 220
+5ff52 a 473 220
+5ff5c 4 62 229
+5ff60 4 62 229
+5ff64 6 62 229
+5ff6a a 200 235
+5ff74 8 200 235
+5ff7c 6 62 229
+5ff82 2 200 235
+5ff84 2 62 229
+5ff86 2 200 235
+5ff88 4 62 229
+5ff8c 6 200 235
+5ff92 8 200 235
+5ff9a 6 62 229
+5ffa0 4 477 220
+5ffa4 4 62 229
+5ffa8 a 477 220
+5ffb2 2 480 200
+5ffb4 4 477 220
+5ffb8 2 480 200
+5ffba 2 62 229
+5ffbc a 200 235
+5ffc6 8 200 235
+5ffce 8 62 229
+5ffd6 6 480 200
+5ffdc 4 482 200
+5ffe0 4 478 220
+5ffe4 c 482 200
+5fff0 a 477 220
+5fffa 6 478 220
+60000 4 477 220
+60004 a 478 220
+6000e e 478 220
+6001c 4 65 238
+60020 8 466 220
+60028 4 62 229
+6002c 2 467 220
+6002e 2 62 229
+60030 4 62 229
+60034 6 200 235
+6003a 8 200 235
+60042 4 200 235
+60046 6 62 229
+6004c 6 62 229
+60052 28 220 221
+6007a 4 427 220
+6007e 28 180 221
+600a6 4 427 220
+600aa 10 218 200
+600ba a 493 220
+600c4 6 494 220
+600ca 8 494 220
+600d2 4 64 238
+600d6 2 96 238
+600d8 6 498 220
+600de 2 96 238
+600e0 4 498 220
+600e4 4 96 238
+600e8 6 96 238
+600ee 4 70 213
+600f2 4 97 238
+600f6 6 70 213
+600fc 2 97 238
+600fe 2 135 222
+60100 4 323 201
+60104 6 161 201
+6010a 6 161 201
+60110 1a 200 235
+6012a c 135 222
+60136 16 480 220
+6014c 4 480 220
+60150 2 62 229
+60152 8 480 220
+6015a 2 62 229
+6015c 2 200 235
+6015e 2 62 229
+60160 8 200 235
+60168 8 200 235
+60170 6 62 229
+60176 4 62 229
+6017a 14 483 220
+6018e 4 483 220
+60192 8 494 220
+6019a 4 480 200
+6019e c 494 220
+601aa 2 480 200
+601ac 2 62 229
+601ae 8 200 235
+601b6 a 200 235
+601c0 8 62 229
+601c8 6 480 200
+601ce 14 482 200
+601e2 c 496 220
+601ee e 200 235
+601fc 18 471 220
+60214 8 448 220
+6021c 4 480 200
+60220 c 448 220
+6022c 4 480 200
+60230 2 62 229
+60232 8 200 235
+6023a a 200 235
+60244 8 62 229
+6024c 4 480 200
+60250 12 482 200
+60262 c 450 220
+6026e e 200 235
+6027c 6 135 222
+60282 c 200 235
+6028e 4 62 229
+60292 34 200 235
+602c6 6 156 238
+602cc c 498 220
+602d8 10 156 238
+602e8 2 66 238
+602ea 6 803 237
+602f0 6 249 246
+602f6 2 806 237
+602f8 4 249 246
+602fc 14 806 237
+60310 18 498 220
+FUNC 60328 30 0 std::money_put<wchar_t, std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_put(std::ostreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, bool, std::ios_base&, wchar_t, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&) const
+60328 4 515 220
+6032c 8 515 220
+60334 1e 518 220
+60352 6 519 220
+FUNC 60358 14c 0 std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::_M_append(wchar_t const*, wchar_t const*)
+60358 2 197 236
+6035a 8 196 236
+60362 2 197 236
+60364 4 198 236
+60368 2 64 238
+6036a 4 198 236
+6036e 2 74 238
+60370 2 198 236
+60372 4 74 238
+60376 8 74 238
+6037e 4 199 236
+60382 2 210 236
+60384 4 86 243
+60388 8 86 243
+60390 4 764 186
+60394 2 86 243
+60396 4 146 205
+6039a 2 86 243
+6039c 6 101 205
+603a2 2 764 186
+603a4 4 212 236
+603a8 2 267 246
+603aa 2 214 236
+603ac 8 218 236
+603b4 2 400 237
+603b6 c 304 237
+603c2 4 400 237
+603c6 c 304 237
+603d2 c 306 237
+603de 4 307 237
+603e2 6 347 201
+603e8 c 134 222
+603f4 14 158 201
+60408 4 86 243
+6040c 4 84 243
+60410 6 86 243
+60416 2 84 243
+60418 4 764 186
+6041c 2 86 243
+6041e 4 146 205
+60422 e 86 243
+60430 4 764 186
+60434 4 86 243
+60438 4 146 205
+6043c 6 86 243
+60442 2 101 205
+60444 2 96 238
+60446 2 101 205
+60448 2 96 238
+6044a 2 96 238
+6044c 4 97 238
+60450 4 323 201
+60454 4 161 201
+60458 4 161 201
+6045c 2 160 238
+6045e 2 164 238
+60460 4 165 238
+60464 4 307 237
+60468 2 356 201
+6046a 6 346 201
+60470 2 347 201
+60472 4 158 201
+60476 e 158 201
+60484 c 74 238
+60490 6 135 222
+60496 e 600 236
+FUNC 604a4 60 0 std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::_M_assign(wchar_t const*, wchar_t const*)
+604a4 2 242 236
+604a6 4 242 236
+604aa 2 65 238
+604ac 2 400 237
+604ae 2 243 236
+604b0 2 242 236
+604b2 2 400 237
+604b4 2 243 236
+604b6 2 400 237
+604b8 4 244 236
+604bc 4 249 246
+604c0 4 400 237
+604c4 4 250 236
+604c8 2 400 237
+604ca a 250 236
+604d4 4 253 236
+604d8 6 249 246
+604de 2 246 236
+604e0 2 90 238
+604e2 4 246 236
+604e6 4 803 237
+604ea 6 249 246
+604f0 2 806 237
+604f2 4 249 246
+604f6 6 806 237
+604fc 2 253 236
+604fe 4 806 237
+60502 2 253 236
+FUNC 60504 44 0 std::basic_string<char, std::char_traits<char>, std::priv::__iostring_allocator<char> >::_M_compute_next_size(unsigned int)
+60504 2 302 237
+60506 4 304 237
+6050a 2 400 237
+6050c 4 304 237
+60510 6 400 237
+60516 6 304 237
+6051c a 306 237
+60526 8 307 237
+6052e 2 310 237
+60530 a 307 237
+6053a e 600 236
+FUNC 60548 360 0 bool std::priv::__read_float<std::istreambuf_iterator<char, std::char_traits<char> >, char>(std::priv::__basic_iostring<char>&, std::istreambuf_iterator<char, std::char_traits<char> >&, std::istreambuf_iterator<char, std::char_traits<char> >&, std::ctype<char> const&, std::numpunct<char> const&)
+60548 6 368 223
+6054e 6 368 223
+60554 2 58 227
+60556 2 368 223
+60558 8 58 227
+60560 2 56 227
+60562 2 378 223
+60564 2 56 227
+60566 4 378 223
+6056a 4 56 227
+6056e 2 57 227
+60570 2 56 227
+60572 6 57 227
+60578 6 393 223
+6057e 2 57 227
+60580 14 393 223
+60594 a 393 223
+6059e a 396 223
+605a8 1c 397 223
+605c4 2 400 223
+605c6 8 120 215
+605ce 2 403 223
+605d0 2 375 223
+605d2 2 410 223
+605d4 8 120 215
+605dc 4 413 223
+605e0 4 413 223
+605e4 4 410 223
+605e8 2 417 223
+605ea 6 156 238
+605f0 8 423 223
+605f8 6 90 215
+605fe 4 403 223
+60602 4 64 238
+60606 6 74 238
+6060c 6 74 238
+60612 8 535 237
+6061a 6 101 205
+60620 2 90 238
+60622 4 232 246
+60626 2 68 215
+60628 2 539 237
+6062a 2 229 235
+6062c 2 539 237
+6062e 2 229 235
+60630 2 539 237
+60632 4 229 235
+60636 4 229 235
+6063a 2 69 215
+6063c 2 406 223
+6063e 2 69 215
+60640 c 406 223
+6064c 2 92 215
+6064e 6 235 235
+60654 4 223 246
+60658 4 235 235
+6065c 4 191 246
+60660 2 220 246
+60662 2 191 246
+60664 2 93 215
+60666 4 191 246
+6066a 2 95 215
+6066c 2 191 246
+6066e 4 95 215
+60672 a 90 215
+6067c 4 413 223
+60680 8 90 215
+60688 4 413 223
+6068c 2 74 238
+6068e 4 64 238
+60692 4 74 238
+60696 2 74 238
+60698 8 74 238
+606a0 4 535 237
+606a4 4 101 205
+606a8 2 90 238
+606aa 4 232 246
+606ae 2 68 215
+606b0 2 539 237
+606b2 2 229 235
+606b4 2 539 237
+606b6 2 229 235
+606b8 2 539 237
+606ba 4 229 235
+606be 4 229 235
+606c2 4 69 215
+606c6 1a 416 223
+606e0 a 416 223
+606ea e 417 223
+606f8 e 400 223
+60706 8 229 235
+6070e 6 536 237
+60714 4 64 213
+60718 2 536 237
+6071a 6 67 213
+60720 2 64 213
+60722 4 66 238
+60726 6 86 243
+6072c 4 86 243
+60730 4 84 243
+60734 2 86 243
+60736 4 368 223
+6073a 2 84 243
+6073c 4 764 186
+60740 2 86 243
+60742 4 146 205
+60746 4 86 243
+6074a 6 101 205
+60750 4 64 238
+60754 4 96 238
+60758 2 96 238
+6075a 6 97 238
+60760 4 70 213
+60764 2 97 238
+60766 6 161 201
+6076c 4 161 201
+60770 4 175 236
+60774 4 164 238
+60778 2 160 238
+6077a 6 165 238
+60780 8 134 222
+60788 8 229 235
+60790 2 400 237
+60792 4 304 237
+60796 e 306 237
+607a4 6 307 237
+607aa 4 307 237
+607ae 4 64 213
+607b2 6 67 213
+607b8 2 64 213
+607ba 2 86 243
+607bc 4 84 243
+607c0 2 86 243
+607c2 4 368 223
+607c6 2 84 243
+607c8 4 764 186
+607cc 4 146 205
+607d0 4 86 243
+607d4 4 101 205
+607d8 4 64 238
+607dc 4 96 238
+607e0 2 96 238
+607e2 6 97 238
+607e8 4 70 213
+607ec 2 97 238
+607ee 4 161 201
+607f2 4 161 201
+607f6 4 175 236
+607fa 2 164 238
+607fc 2 160 238
+607fe 6 165 238
+60804 4 307 237
+60808 12 134 222
+6081a 8 74 238
+60822 2 92 215
+60824 6 235 235
+6082a 4 223 246
+6082e 2 235 235
+60830 4 191 246
+60834 2 220 246
+60836 4 191 246
+6083a 2 93 215
+6083c 4 191 246
+60840 2 95 215
+60842 2 191 246
+60844 4 95 215
+60848 8 235 235
+60850 6 135 222
+60856 2 92 215
+60858 6 235 235
+6085e 4 223 246
+60862 2 235 235
+60864 4 191 246
+60868 2 220 246
+6086a 4 191 246
+6086e 2 93 215
+60870 4 191 246
+60874 2 95 215
+60876 2 191 246
+60878 4 95 215
+6087c 6 135 222
+60882 10 235 235
+60892 8 600 236
+6089a e 156 238
+FUNC 608a8 100 0 std::istreambuf_iterator<char, std::char_traits<char> > std::priv::__do_get_float<std::istreambuf_iterator<char, std::char_traits<char> >, long double, char>(std::istreambuf_iterator<char, std::char_traits<char> >&, std::istreambuf_iterator<char, std::char_traits<char> >&, std::ios_base&, int&, long double&, char*)
+608a8 2 145 212
+608aa 8 427 223
+608b2 4 427 223
+608b6 4 145 212
+608ba 6 427 223
+608c0 6 145 212
+608c6 18 351 218
+608de 4 41 213
+608e2 2 120 238
+608e4 6 108 213
+608ea 2 351 218
+608ec 6 108 213
+608f2 8 41 213
+608fa 2 120 238
+608fc 4 41 213
+60900 6 124 238
+60906 4 481 201
+6090a 4 124 238
+6090e 2 90 238
+60910 2 101 205
+60912 4 434 223
+60916 2 101 205
+60918 c 434 223
+60924 4 435 223
+60928 6 440 223
+6092e 8 112 215
+60936 2 442 223
+60938 c 443 223
+60944 4 64 238
+60948 4 444 223
+6094c 2 96 238
+6094e 4 444 223
+60952 2 96 238
+60954 2 96 238
+60956 2 70 213
+60958 2 97 238
+6095a 2 70 213
+6095c 2 97 238
+6095e 2 135 222
+60960 4 161 201
+60964 4 161 201
+60968 6 444 223
+6096e a 445 223
+60978 8 436 223
+60980 8 437 223
+60988 6 135 222
+6098e a 444 223
+60998 10 156 238
+FUNC 609a8 26 0 std::num_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::do_get(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, int&, long double&) const
+609a8 4 579 223
+609ac 8 579 223
+609b4 1a 582 223
+FUNC 609d0 100 0 std::istreambuf_iterator<char, std::char_traits<char> > std::priv::__do_get_float<std::istreambuf_iterator<char, std::char_traits<char> >, double, char>(std::istreambuf_iterator<char, std::char_traits<char> >&, std::istreambuf_iterator<char, std::char_traits<char> >&, std::ios_base&, int&, double&, char*)
+609d0 2 145 212
+609d2 8 427 223
+609da 4 427 223
+609de 4 145 212
+609e2 6 427 223
+609e8 6 145 212
+609ee 18 351 218
+60a06 4 41 213
+60a0a 2 120 238
+60a0c 6 108 213
+60a12 2 351 218
+60a14 6 108 213
+60a1a 8 41 213
+60a22 2 120 238
+60a24 4 41 213
+60a28 6 124 238
+60a2e 4 481 201
+60a32 4 124 238
+60a36 2 90 238
+60a38 2 101 205
+60a3a 4 434 223
+60a3e 2 101 205
+60a40 c 434 223
+60a4c 4 435 223
+60a50 6 440 223
+60a56 8 112 215
+60a5e 2 442 223
+60a60 c 443 223
+60a6c 4 64 238
+60a70 4 444 223
+60a74 2 96 238
+60a76 4 444 223
+60a7a 2 96 238
+60a7c 2 96 238
+60a7e 2 70 213
+60a80 2 97 238
+60a82 2 70 213
+60a84 2 97 238
+60a86 2 135 222
+60a88 4 161 201
+60a8c 4 161 201
+60a90 6 444 223
+60a96 a 445 223
+60aa0 8 436 223
+60aa8 8 437 223
+60ab0 6 135 222
+60ab6 a 444 223
+60ac0 10 156 238
+FUNC 60ad0 26 0 std::num_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::do_get(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, int&, double&) const
+60ad0 4 571 223
+60ad4 8 571 223
+60adc 1a 574 223
+FUNC 60af8 100 0 std::istreambuf_iterator<char, std::char_traits<char> > std::priv::__do_get_float<std::istreambuf_iterator<char, std::char_traits<char> >, float, char>(std::istreambuf_iterator<char, std::char_traits<char> >&, std::istreambuf_iterator<char, std::char_traits<char> >&, std::ios_base&, int&, float&, char*)
+60af8 2 145 212
+60afa 8 427 223
+60b02 4 427 223
+60b06 4 145 212
+60b0a 6 427 223
+60b10 6 145 212
+60b16 18 351 218
+60b2e 4 41 213
+60b32 2 120 238
+60b34 6 108 213
+60b3a 2 351 218
+60b3c 6 108 213
+60b42 8 41 213
+60b4a 2 120 238
+60b4c 4 41 213
+60b50 6 124 238
+60b56 4 481 201
+60b5a 4 124 238
+60b5e 2 90 238
+60b60 2 101 205
+60b62 4 434 223
+60b66 2 101 205
+60b68 c 434 223
+60b74 4 435 223
+60b78 6 440 223
+60b7e 8 112 215
+60b86 2 442 223
+60b88 c 443 223
+60b94 4 64 238
+60b98 4 444 223
+60b9c 2 96 238
+60b9e 4 444 223
+60ba2 2 96 238
+60ba4 2 96 238
+60ba6 2 70 213
+60ba8 2 97 238
+60baa 2 70 213
+60bac 2 97 238
+60bae 2 135 222
+60bb0 4 161 201
+60bb4 4 161 201
+60bb8 6 444 223
+60bbe a 445 223
+60bc8 8 436 223
+60bd0 8 437 223
+60bd8 6 135 222
+60bde a 444 223
+60be8 10 156 238
+FUNC 60bf8 26 0 std::num_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::do_get(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, int&, float&) const
+60bf8 4 564 223
+60bfc 8 564 223
+60c04 1a 567 223
+FUNC 60c20 398 0 bool std::priv::__read_float<std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, wchar_t>(std::priv::__basic_iostring<char>&, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >&, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >&, std::ctype<wchar_t> const&, std::numpunct<wchar_t> const&)
+60c20 6 368 223
+60c26 6 368 223
+60c2c 2 87 227
+60c2e 4 368 223
+60c32 8 87 227
+60c3a 2 85 227
+60c3c 2 378 223
+60c3e 2 85 227
+60c40 4 378 223
+60c44 4 85 227
+60c48 2 86 227
+60c4a 2 85 227
+60c4c 6 86 227
+60c52 2 390 223
+60c54 2 86 227
+60c56 12 390 223
+60c68 1c 393 223
+60c84 a 393 223
+60c8e 4 396 223
+60c92 4 397 223
+60c96 6 396 223
+60c9c 18 397 223
+60cb4 2 400 223
+60cb6 8 120 215
+60cbe 2 403 223
+60cc0 2 375 223
+60cc2 6 410 223
+60cc8 8 120 215
+60cd0 4 413 223
+60cd4 4 413 223
+60cd8 4 410 223
+60cdc 2 417 223
+60cde 6 156 238
+60ce4 8 423 223
+60cec 8 90 215
+60cf4 4 403 223
+60cf8 4 64 238
+60cfc 6 74 238
+60d02 6 74 238
+60d08 a 535 237
+60d12 6 101 205
+60d18 2 90 238
+60d1a 4 232 246
+60d1e 2 68 215
+60d20 2 539 237
+60d22 2 229 235
+60d24 2 539 237
+60d26 2 229 235
+60d28 2 539 237
+60d2a 4 229 235
+60d2e 4 229 235
+60d32 2 406 223
+60d34 2 69 215
+60d36 2 406 223
+60d38 2 69 215
+60d3a c 406 223
+60d46 2 92 215
+60d48 6 235 235
+60d4e 4 764 186
+60d52 4 235 235
+60d56 4 191 246
+60d5a 2 93 215
+60d5c a 191 246
+60d66 6 95 215
+60d6c a 90 215
+60d76 6 413 223
+60d7c 8 90 215
+60d84 6 413 223
+60d8a 4 74 238
+60d8e 4 64 238
+60d92 6 74 238
+60d98 2 74 238
+60d9a 8 74 238
+60da2 4 535 237
+60da6 6 101 205
+60dac 2 90 238
+60dae 4 232 246
+60db2 2 68 215
+60db4 2 539 237
+60db6 2 229 235
+60db8 2 539 237
+60dba 2 229 235
+60dbc 2 539 237
+60dbe 4 229 235
+60dc2 4 229 235
+60dc6 4 69 215
+60dca 1c 416 223
+60de6 a 416 223
+60df0 10 417 223
+60e00 c 400 223
+60e0c 8 229 235
+60e14 6 536 237
+60e1a 4 64 213
+60e1e 2 536 237
+60e20 6 67 213
+60e26 2 64 213
+60e28 4 66 238
+60e2c 6 86 243
+60e32 4 86 243
+60e36 4 84 243
+60e3a 2 86 243
+60e3c 4 368 223
+60e40 2 84 243
+60e42 4 764 186
+60e46 2 86 243
+60e48 4 146 205
+60e4c 4 86 243
+60e50 6 101 205
+60e56 4 64 238
+60e5a 4 96 238
+60e5e 2 96 238
+60e60 6 97 238
+60e66 4 70 213
+60e6a 2 97 238
+60e6c 6 161 201
+60e72 4 161 201
+60e76 4 175 236
+60e7a 4 164 238
+60e7e 2 160 238
+60e80 6 165 238
+60e86 8 134 222
+60e8e 8 229 235
+60e96 4 400 237
+60e9a 6 304 237
+60ea0 10 306 237
+60eb0 6 307 237
+60eb6 4 307 237
+60eba 4 64 213
+60ebe 6 67 213
+60ec4 2 64 213
+60ec6 4 86 243
+60eca 4 84 243
+60ece 2 86 243
+60ed0 4 368 223
+60ed4 2 84 243
+60ed6 4 764 186
+60eda 4 146 205
+60ede 4 86 243
+60ee2 6 101 205
+60ee8 4 64 238
+60eec 4 96 238
+60ef0 2 96 238
+60ef2 6 97 238
+60ef8 4 70 213
+60efc 2 97 238
+60efe 4 161 201
+60f02 4 161 201
+60f06 4 175 236
+60f0a 4 164 238
+60f0e 2 160 238
+60f10 6 165 238
+60f16 4 307 237
+60f1a 14 134 222
+60f2e 8 74 238
+60f36 2 92 215
+60f38 6 235 235
+60f3e 4 764 186
+60f42 2 235 235
+60f44 4 191 246
+60f48 2 93 215
+60f4a a 191 246
+60f54 6 95 215
+60f5a 8 235 235
+60f62 6 135 222
+60f68 2 92 215
+60f6a 6 235 235
+60f70 4 764 186
+60f74 2 235 235
+60f76 4 191 246
+60f7a 2 93 215
+60f7c 8 191 246
+60f84 6 95 215
+60f8a 6 135 222
+60f90 10 235 235
+60fa0 8 600 236
+60fa8 10 156 238
+FUNC 60fb8 100 0 std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > std::priv::__do_get_float<std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, long double, wchar_t>(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >&, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >&, std::ios_base&, int&, long double&, wchar_t*)
+60fb8 2 145 212
+60fba 8 427 223
+60fc2 4 427 223
+60fc6 4 145 212
+60fca 6 427 223
+60fd0 6 145 212
+60fd6 18 351 218
+60fee 4 41 213
+60ff2 2 120 238
+60ff4 6 108 213
+60ffa 2 351 218
+60ffc 6 108 213
+61002 8 41 213
+6100a 2 120 238
+6100c 4 41 213
+61010 6 124 238
+61016 4 481 201
+6101a 4 124 238
+6101e 2 90 238
+61020 2 101 205
+61022 4 434 223
+61026 2 101 205
+61028 c 434 223
+61034 4 435 223
+61038 6 440 223
+6103e 8 112 215
+61046 2 442 223
+61048 c 443 223
+61054 4 444 223
+61058 4 64 238
+6105c 2 96 238
+6105e 4 444 223
+61062 2 96 238
+61064 2 96 238
+61066 2 70 213
+61068 2 97 238
+6106a 2 70 213
+6106c 2 97 238
+6106e 2 135 222
+61070 4 161 201
+61074 4 161 201
+61078 6 444 223
+6107e a 445 223
+61088 8 436 223
+61090 8 437 223
+61098 6 135 222
+6109e a 444 223
+610a8 10 156 238
+FUNC 610b8 2e 0 std::num_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_get(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&, int&, long double&) const
+610b8 6 579 223
+610be 8 579 223
+610c6 20 582 223
+FUNC 610e8 100 0 std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > std::priv::__do_get_float<std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, double, wchar_t>(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >&, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >&, std::ios_base&, int&, double&, wchar_t*)
+610e8 2 145 212
+610ea 8 427 223
+610f2 4 427 223
+610f6 4 145 212
+610fa 6 427 223
+61100 6 145 212
+61106 18 351 218
+6111e 4 41 213
+61122 2 120 238
+61124 6 108 213
+6112a 2 351 218
+6112c 6 108 213
+61132 8 41 213
+6113a 2 120 238
+6113c 4 41 213
+61140 6 124 238
+61146 4 481 201
+6114a 4 124 238
+6114e 2 90 238
+61150 2 101 205
+61152 4 434 223
+61156 2 101 205
+61158 c 434 223
+61164 4 435 223
+61168 6 440 223
+6116e 8 112 215
+61176 2 442 223
+61178 c 443 223
+61184 4 444 223
+61188 4 64 238
+6118c 2 96 238
+6118e 4 444 223
+61192 2 96 238
+61194 2 96 238
+61196 2 70 213
+61198 2 97 238
+6119a 2 70 213
+6119c 2 97 238
+6119e 2 135 222
+611a0 4 161 201
+611a4 4 161 201
+611a8 6 444 223
+611ae a 445 223
+611b8 8 436 223
+611c0 8 437 223
+611c8 6 135 222
+611ce a 444 223
+611d8 10 156 238
+FUNC 611e8 2e 0 std::num_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_get(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&, int&, double&) const
+611e8 6 571 223
+611ee 8 571 223
+611f6 20 574 223
+FUNC 61218 100 0 std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > std::priv::__do_get_float<std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, float, wchar_t>(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >&, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >&, std::ios_base&, int&, float&, wchar_t*)
+61218 2 145 212
+6121a 8 427 223
+61222 4 427 223
+61226 4 145 212
+6122a 6 427 223
+61230 6 145 212
+61236 18 351 218
+6124e 4 41 213
+61252 2 120 238
+61254 6 108 213
+6125a 2 351 218
+6125c 6 108 213
+61262 8 41 213
+6126a 2 120 238
+6126c 4 41 213
+61270 6 124 238
+61276 4 481 201
+6127a 4 124 238
+6127e 2 90 238
+61280 2 101 205
+61282 4 434 223
+61286 2 101 205
+61288 c 434 223
+61294 4 435 223
+61298 6 440 223
+6129e 8 112 215
+612a6 2 442 223
+612a8 c 443 223
+612b4 4 444 223
+612b8 4 64 238
+612bc 2 96 238
+612be 4 444 223
+612c2 2 96 238
+612c4 2 96 238
+612c6 2 70 213
+612c8 2 97 238
+612ca 2 70 213
+612cc 2 97 238
+612ce 2 135 222
+612d0 4 161 201
+612d4 4 161 201
+612d8 6 444 223
+612de a 445 223
+612e8 8 436 223
+612f0 8 437 223
+612f8 6 135 222
+612fe a 444 223
+61308 10 156 238
+FUNC 61318 2e 0 std::num_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_get(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&, int&, float&) const
+61318 6 564 223
+6131e 8 564 223
+61326 20 567 223
+FUNC 61348 8c 0 std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::_M_reserve(unsigned int)
+61348 4 342 201
+6134c 6 170 236
+61352 2 342 201
+61354 2 346 201
+61356 2 356 201
+61358 2 346 201
+6135a 4 347 201
+6135e 4 158 201
+61362 8 158 201
+6136a 2 352 201
+6136c 6 158 201
+61372 2 86 243
+61374 2 66 238
+61376 8 86 243
+6137e 4 86 243
+61382 4 84 243
+61386 6 86 243
+6138c 2 84 243
+6138e 4 764 186
+61392 2 86 243
+61394 4 146 205
+61398 6 86 243
+6139e 2 101 205
+613a0 2 96 238
+613a2 2 101 205
+613a4 2 96 238
+613a6 2 96 238
+613a8 4 97 238
+613ac 4 323 201
+613b0 4 161 201
+613b4 4 161 201
+613b8 2 160 238
+613ba 2 164 238
+613bc 2 165 238
+613be 4 176 236
+613c2 8 134 222
+613ca 6 135 222
+613d0 4 342 201
+FUNC 613d4 9c 0 std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::append(unsigned int, wchar_t)
+613d4 6 180 236
+613da 2 180 236
+613dc 2 181 236
+613de 2 89 238
+613e0 4 182 236
+613e4 2 65 238
+613e6 4 182 236
+613ea 4 400 237
+613ee 6 182 236
+613f4 2 74 238
+613f6 6 74 238
+613fc 8 74 238
+61404 4 184 236
+61408 a 249 243
+61412 8 249 243
+6141a 4 146 205
+6141e 2 249 243
+61420 4 187 236
+61424 6 101 205
+6142a 2 267 246
+6142c 2 189 236
+6142e 6 192 236
+61434 2 306 237
+61436 4 307 237
+6143a 8 306 237
+61442 c 307 237
+6144e 6 307 237
+61454 e 185 236
+61462 e 600 236
+FUNC 61470 1d6 0 std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::assign(unsigned int, wchar_t)
+61470 8 222 236
+61478 2 65 238
+6147a 4 400 237
+6147e 2 222 236
+61480 2 222 236
+61482 4 400 237
+61486 6 223 236
+6148c 6 72 238
+61492 8 72 238
+6149a 2 72 238
+6149c 6 228 236
+614a2 2 120 238
+614a4 2 247 237
+614a6 2 120 238
+614a8 2 124 238
+614aa 2 120 238
+614ac 2 481 201
+614ae 4 124 238
+614b2 4 249 243
+614b6 4 66 238
+614ba 2 249 243
+614bc 4 249 243
+614c0 6 249 243
+614c6 4 146 205
+614ca 2 249 243
+614cc 2 248 237
+614ce 2 101 205
+614d0 6 942 237
+614d6 2 101 205
+614d8 4 942 237
+614dc 8 171 238
+614e4 2 170 238
+614e6 2 171 238
+614e8 2 170 238
+614ea 4 171 238
+614ee 6 91 200
+614f4 2 93 200
+614f6 4 92 200
+614fa 2 93 200
+614fc 12 91 200
+6150e 14 92 200
+61522 20 93 200
+61542 4 174 238
+61546 4 173 238
+6154a 8 174 238
+61552 6 175 238
+61558 4 178 238
+6155c 2 174 238
+6155e 2 175 238
+61560 4 174 238
+61564 4 179 238
+61568 6 174 238
+6156e 4 175 238
+61572 2 64 238
+61574 6 96 238
+6157a 2 96 238
+6157c 4 97 238
+61580 4 323 201
+61584 4 161 201
+61588 4 161 201
+6158c 8 238 236
+61594 8 261 246
+6159c 4 225 236
+615a0 4 90 238
+615a4 4 225 236
+615a8 4 803 237
+615ac 6 249 246
+615b2 2 806 237
+615b4 4 249 246
+615b8 10 806 237
+615c8 6 261 246
+615ce 8 400 237
+615d6 4 230 236
+615da 2 400 237
+615dc a 230 236
+615e6 4 185 238
+615ea 2 91 200
+615ec 4 92 200
+615f0 2 93 200
+615f2 2 92 200
+615f4 2 91 200
+615f6 2 92 200
+615f8 2 93 200
+615fa 2 92 200
+615fc 2 91 200
+615fe 2 92 200
+61600 4 93 200
+61604 6 135 222
+6160a 6 189 238
+61610 4 188 238
+61614 4 187 238
+61618 12 189 238
+6162a 2 193 238
+6162c 2 192 238
+6162e 2 193 238
+61630 4 194 238
+61634 4 193 238
+61638 4 195 238
+6163c 4 193 238
+61640 6 196 238
+FUNC 61648 486 0 bool std::priv::__get_monetary_value<std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::back_insert_iterator<std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >, wchar_t>(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >&, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::back_insert_iterator<std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >, std::ctype<wchar_t> const&, wchar_t, int, wchar_t, std::string const&, bool&)
+61648 6 62 220
+6164e c 62 220
+6165a 2 112 215
+6165c 6 62 220
+61662 4 112 215
+61666 2 66 220
+61668 2 67 220
+6166a 6 118 220
+61670 a 90 215
+6167a a 184 206
+61684 4 66 220
+61688 2 70 220
+6168a 2 70 220
+6168c 8 70 220
+61694 2 70 220
+61696 4 81 220
+6169a 4 307 237
+6169e 2 69 215
+616a0 6 307 237
+616a6 8 120 215
+616ae 2 73 220
+616b0 8 90 215
+616b8 4 184 206
+616bc 2 90 215
+616be 6 184 206
+616c4 6 74 220
+616ca 2 78 220
+616cc a 90 215
+616d6 4 79 220
+616da 2 68 215
+616dc 4 80 220
+616e0 a 229 235
+616ea 4 229 235
+616ee 4 69 215
+616f2 4 120 215
+616f6 4 81 220
+616fa 4 120 215
+616fe 4 73 220
+61702 4 65 238
+61706 2 89 238
+61708 6 90 220
+6170e 4 93 220
+61712 4 94 220
+61716 2 93 220
+61718 4 94 220
+6171c 6 96 220
+61722 2 112 215
+61724 2 96 220
+61726 6 112 215
+6172c 6 99 220
+61732 8 100 220
+6173a 4 307 237
+6173e 2 100 220
+61740 4 307 237
+61744 8 101 205
+6174c 2 100 220
+6174e 2 267 246
+61750 2 100 220
+61752 2 101 205
+61754 4 267 246
+61758 2 539 237
+6175a 2 100 220
+6175c 2 64 238
+6175e 6 74 238
+61764 6 74 238
+6176a 4 535 237
+6176e 2 400 237
+61770 8 307 237
+61778 2 400 237
+6177a a 306 237
+61784 e 307 237
+61792 6 307 237
+61798 2 536 237
+6179a 2 100 220
+6179c 6 536 237
+617a2 2 267 246
+617a4 2 100 220
+617a6 2 101 205
+617a8 4 267 246
+617ac 2 539 237
+617ae 2 100 220
+617b0 4 102 220
+617b4 2 92 215
+617b6 6 235 235
+617bc 4 764 186
+617c0 4 235 235
+617c4 4 191 246
+617c8 2 93 215
+617ca 8 191 246
+617d2 6 95 215
+617d8 2 92 215
+617da 6 235 235
+617e0 4 764 186
+617e4 2 235 235
+617e6 4 191 246
+617ea 2 93 215
+617ec 2 191 246
+617ee 2 184 206
+617f0 6 191 246
+617f6 4 95 215
+617fa 8 184 206
+61802 6 74 220
+61808 8 76 220
+61810 4 90 215
+61814 2 76 220
+61816 4 90 215
+6181a 2 64 238
+6181c 2 74 238
+6181e 4 74 238
+61822 6 74 238
+61828 4 535 237
+6182c 4 75 220
+61830 2 267 246
+61832 4 101 205
+61836 4 75 220
+6183a 4 267 246
+6183e 4 539 237
+61842 2 92 215
+61844 6 235 235
+6184a 4 764 186
+6184e 2 235 235
+61850 4 191 246
+61854 2 93 215
+61856 a 191 246
+61860 6 95 215
+61866 8 229 235
+6186e a 235 235
+61878 2 92 215
+6187a 6 235 235
+61880 4 764 186
+61884 2 235 235
+61886 6 235 235
+6188c 2 64 238
+6188e 2 74 238
+61890 2 74 238
+61892 2 235 235
+61894 2 74 238
+61896 8 74 238
+6189e 4 535 237
+618a2 2 400 237
+618a4 2 307 237
+618a6 2 400 237
+618a8 a 306 237
+618b2 e 307 237
+618c0 e 307 237
+618ce e 536 237
+618dc 8 235 235
+618e4 a 74 238
+618ee a 90 215
+618f8 8 99 220
+61900 2 68 215
+61902 a 229 235
+6190c 4 229 235
+61910 8 307 237
+61918 4 95 215
+6191c 4 69 215
+61920 2 75 215
+61922 8 90 215
+6192a 4 77 215
+6192e a 90 215
+61938 6 110 220
+6193e 6 115 220
+61944 a 62 220
+6194e 2 115 220
+61950 2 117 220
+61952 2 115 220
+61954 2 117 220
+61956 6 235 235
+6195c 4 764 186
+61960 4 235 235
+61964 4 191 246
+61968 2 110 220
+6196a 4 191 246
+6196e 2 93 215
+61970 4 191 246
+61974 4 95 215
+61978 2 110 220
+6197a 4 94 215
+6197e 2 110 220
+61980 8 90 215
+61988 a 184 206
+61992 4 110 220
+61996 8 111 220
+6199e 4 90 215
+619a2 4 111 220
+619a6 2 90 215
+619a8 2 64 238
+619aa 2 74 238
+619ac 4 74 238
+619b0 6 74 238
+619b6 4 535 237
+619ba 2 267 246
+619bc 2 112 220
+619be 2 101 205
+619c0 2 112 220
+619c2 2 101 205
+619c4 4 267 246
+619c8 4 539 237
+619cc 2 92 215
+619ce 6 235 235
+619d4 6 764 186
+619da 2 235 235
+619dc 6 235 235
+619e2 2 64 238
+619e4 2 74 238
+619e6 2 74 238
+619e8 2 235 235
+619ea 2 74 238
+619ec 8 74 238
+619f4 4 535 237
+619f8 4 400 237
+619fc a 306 237
+61a06 e 307 237
+61a14 e 307 237
+61a22 a 536 237
+61a2c 6 235 235
+61a32 4 764 186
+61a36 2 235 235
+61a38 4 191 246
+61a3c 2 93 215
+61a3e 2 191 246
+61a40 4 95 215
+61a44 8 191 246
+61a4c 2 92 215
+61a4e 6 235 235
+61a54 4 764 186
+61a58 2 235 235
+61a5a 4 191 246
+61a5e 2 93 215
+61a60 2 191 246
+61a62 4 95 215
+61a66 8 191 246
+61a6e 1a 235 235
+61a88 a 229 235
+61a92 8 91 220
+61a9a 2 92 215
+61a9c 6 235 235
+61aa2 4 764 186
+61aa6 2 235 235
+61aa8 4 191 246
+61aac 2 93 215
+61aae 8 191 246
+61ab6 6 95 215
+61abc 12 235 235
+FUNC 61ad0 6bc 0 std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > std::priv::__money_do_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, bool, std::ios_base&, int&, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >&, bool&, wchar_t*)
+61ad0 6 122 220
+61ad6 c 122 220
+61ae2 4 112 215
+61ae6 4 122 220
+61aea 4 112 215
+61aee 2 125 220
+61af0 2 126 220
+61af2 4 127 220
+61af6 8 126 220
+61afe 4 127 220
+61b02 8 272 220
+61b0a e 145 212
+61b18 2a 351 218
+61b42 2 143 220
+61b44 2 351 218
+61b46 6 143 220
+61b4c 26 220 221
+61b72 2 143 220
+61b74 2 220 221
+61b76 2 217 221
+61b78 2 143 220
+61b7a 4 217 221
+61b7e 2 220 221
+61b80 2 143 220
+61b82 4 217 221
+61b86 2 220 221
+61b88 2 143 220
+61b8a 6 217 221
+61b90 10 216 221
+61ba0 2 120 238
+61ba2 2 149 220
+61ba4 2 124 238
+61ba6 2 120 238
+61ba8 2 124 238
+61baa 4 149 220
+61bae 2 120 238
+61bb0 2 149 220
+61bb2 2 481 201
+61bb4 4 124 238
+61bb8 4 101 205
+61bbc 4 95 215
+61bc0 2 153 220
+61bc2 2 69 215
+61bc4 2 101 205
+61bc6 1a 154 220
+61be0 a 90 215
+61bea a 184 206
+61bf4 6 156 220
+61bfa 2 68 215
+61bfc a 229 235
+61c06 4 229 235
+61c0a 2 69 215
+61c0c 8 120 215
+61c14 6 162 220
+61c1a 2 153 220
+61c1c 4 153 220
+61c20 a 244 220
+61c2a 2 89 238
+61c2c 2 65 238
+61c2e 2 400 237
+61c30 a 245 220
+61c3a 6 252 220
+61c40 8 112 215
+61c48 2 268 220
+61c4a a 269 220
+61c54 8 271 220
+61c5c 2 64 238
+61c5e 6 96 238
+61c64 2 96 238
+61c66 4 97 238
+61c6a 4 323 201
+61c6e 6 161 201
+61c74 4 161 201
+61c78 2 64 238
+61c7a 6 96 238
+61c80 2 96 238
+61c82 4 97 238
+61c86 4 323 201
+61c8a 6 161 201
+61c90 4 161 201
+61c94 4 64 238
+61c98 4 96 238
+61c9c 2 96 238
+61c9e 4 97 238
+61ca2 4 323 201
+61ca6 6 161 201
+61cac 4 161 201
+61cb0 8 271 220
+61cb8 8 215 220
+61cc0 a 173 221
+61cca 4 179 221
+61cce 2 173 221
+61cd0 6 179 221
+61cd6 6 175 221
+61cdc 2 179 221
+61cde a 175 221
+61ce8 2 225 220
+61cea 4 220 220
+61cee a 225 220
+61cf8 8 225 220
+61d00 a 174 221
+61d0a 28 227 220
+61d32 6 232 220
+61d38 a 233 220
+61d42 6 234 220
+61d48 8 156 238
+61d50 8 112 215
+61d58 6 176 220
+61d5e a 177 220
+61d68 c 179 220
+61d74 4 180 220
+61d78 2 181 220
+61d7a 8 167 220
+61d82 10 176 221
+61d92 24 169 220
+61db6 6 170 220
+61dbc 4 170 220
+61dc0 6 171 220
+61dc6 2 172 220
+61dc8 4 64 238
+61dcc 8 172 220
+61dd4 2 96 238
+61dd6 2 172 220
+61dd8 6 96 238
+61dde 8 96 238
+61de6 2 97 238
+61de8 2 135 222
+61dea 4 97 238
+61dee 4 323 201
+61df2 6 161 201
+61df8 6 161 201
+61dfe 26 181 221
+61e24 2 143 220
+61e26 2 181 221
+61e28 2 178 221
+61e2a 2 143 220
+61e2c 4 178 221
+61e30 2 181 221
+61e32 2 143 220
+61e34 4 178 221
+61e38 2 181 221
+61e3a 2 143 220
+61e3c 6 178 221
+61e42 12 177 221
+61e54 6 90 215
+61e5a a 184 206
+61e64 6 162 220
+61e6a 2 68 215
+61e6c a 229 235
+61e76 6 229 235
+61e7c 4 69 215
+61e80 2 92 215
+61e82 6 235 235
+61e88 4 764 186
+61e8c 2 235 235
+61e8e 4 191 246
+61e92 2 93 215
+61e94 2 191 246
+61e96 4 95 215
+61e9a 8 191 246
+61ea2 a 235 235
+61eac 4 89 238
+61eb0 2 65 238
+61eb2 2 400 237
+61eb4 8 256 220
+61ebc 6 263 220
+61ec2 c 206 206
+61ece 8 359 237
+61ed6 c 517 237
+61ee2 a 212 221
+61eec 4 218 221
+61ef0 2 212 221
+61ef2 6 218 221
+61ef8 8 214 221
+61f00 2 218 221
+61f02 e 214 221
+61f10 12 215 221
+61f22 2 65 238
+61f24 8 187 220
+61f2c a 90 215
+61f36 8 197 220
+61f3e 8 65 238
+61f46 a 201 220
+61f50 8 90 215
+61f58 8 203 220
+61f60 2 68 215
+61f62 a 229 235
+61f6c 4 229 235
+61f70 2 205 220
+61f72 2 69 215
+61f74 2 205 220
+61f76 2 206 220
+61f78 c 213 221
+61f84 20 258 220
+61fa4 6 259 220
+61faa 2 260 220
+61fac 2 261 220
+61fae 4 259 220
+61fb2 2 261 220
+61fb4 4 260 220
+61fb8 8 261 220
+61fc0 1e 247 220
+61fde 6 248 220
+61fe4 2 249 220
+61fe6 4 248 220
+61fea 8 249 220
+61ff2 2 92 215
+61ff4 6 235 235
+61ffa 4 764 186
+61ffe 2 235 235
+62000 4 191 246
+62004 2 93 215
+62006 2 191 246
+62008 4 95 215
+6200c 8 191 246
+62014 12 135 222
+62026 c 349 237
+62032 6 135 222
+62038 c 250 220
+62044 8 65 238
+6204c a 188 220
+62056 8 90 215
+6205e a 190 220
+62068 2 92 215
+6206a 6 235 235
+62070 4 764 186
+62074 2 235 235
+62076 4 191 246
+6207a 2 93 215
+6207c 4 191 246
+62080 4 95 215
+62084 8 191 246
+6208c a 235 235
+62096 2 68 215
+62098 8 229 235
+620a0 4 229 235
+620a4 4 69 215
+620a8 2 92 215
+620aa 6 235 235
+620b0 4 764 186
+620b4 2 235 235
+620b6 4 191 246
+620ba 2 93 215
+620bc 2 191 246
+620be 4 95 215
+620c2 8 191 246
+620ca 4 225 220
+620ce 8 229 235
+620d6 2 92 215
+620d8 6 235 235
+620de 4 764 186
+620e2 2 235 235
+620e4 4 191 246
+620e8 2 93 215
+620ea 4 191 246
+620ee 4 95 215
+620f2 8 191 246
+620fa a 235 235
+62104 6 229 235
+6210a 4 69 215
+6210e 4 211 220
+62112 4 208 220
+62116 4 211 220
+6211a 4 208 220
+6211e 4 236 220
+62122 4 235 220
+62126 4 236 220
+6212a 2 235 220
+6212c 8 156 238
+62134 18 235 235
+6214c 18 156 238
+62164 a 271 220
+6216e 1e 156 238
+FUNC 6218c 4e 0 std::money_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_get(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, bool, std::ios_base&, int&, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >&) const
+6218c 6 304 220
+62192 2 304 220
+62194 2 308 220
+62196 2 307 220
+62198 6 304 220
+6219e 2 308 220
+621a0 6 307 220
+621a6 28 308 220
+621ce c 309 220
+FUNC 621dc 12a 0 std::money_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::do_get(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, bool, std::ios_base&, int&, long double&) const
+621dc 2 279 220
+621de 2 124 238
+621e0 6 279 220
+621e6 2 120 238
+621e8 a 279 220
+621f2 2 284 220
+621f4 4 279 220
+621f8 2 124 238
+621fa 2 120 238
+621fc 2 481 201
+621fe 4 124 238
+62202 2 284 220
+62204 6 101 205
+6220a 2 284 220
+6220c 4 101 205
+62210 8 283 220
+62218 2a 284 220
+62242 6 284 220
+62248 6 286 220
+6224e 2 284 220
+62250 e 286 220
+6225e 2 284 220
+62260 2 286 220
+62262 2 66 238
+62264 2 287 220
+62266 4 289 220
+6226a 4 287 220
+6226e 4 289 220
+62272 2 120 238
+62274 2 124 238
+62276 2 120 238
+62278 2 124 238
+6227a 2 481 201
+6227c 4 124 238
+62280 4 101 205
+62284 4 242 223
+62288 2 101 205
+6228a 14 242 223
+6229e 6 156 238
+622a4 6 294 220
+622aa 6 299 220
+622b0 2 64 238
+622b2 2 96 238
+622b4 4 299 220
+622b8 2 96 238
+622ba 2 96 238
+622bc 2 97 238
+622be 2 135 222
+622c0 2 97 238
+622c2 4 323 201
+622c6 4 161 201
+622ca 4 161 201
+622ce c 300 220
+622da e 295 220
+622e8 6 289 220
+622ee 6 135 222
+622f4 12 156 238
+FUNC 62308 144 0 std::string::assign(unsigned int, char)
+62308 8 222 236
+62310 2 65 238
+62312 2 400 237
+62314 2 222 236
+62316 2 222 236
+62318 2 400 237
+6231a 4 223 236
+6231e 4 72 238
+62322 8 72 238
+6232a 2 72 238
+6232c 4 228 236
+62330 2 120 238
+62332 2 247 237
+62334 2 120 238
+62336 2 124 238
+62338 2 481 201
+6233a 4 124 238
+6233e 2 66 238
+62340 2 314 243
+62342 2 249 243
+62344 4 249 243
+62348 2 222 236
+6234a 4 146 205
+6234e 4 249 243
+62352 2 248 237
+62354 4 101 205
+62358 a 942 237
+62362 8 171 238
+6236a 2 170 238
+6236c 2 171 238
+6236e 2 170 238
+62370 4 171 238
+62374 8 91 200
+6237c 8 92 200
+62384 4 93 200
+62388 8 174 238
+62390 4 93 200
+62394 6 174 238
+6239a 2 173 238
+6239c 4 174 238
+623a0 2 178 238
+623a2 2 175 238
+623a4 2 174 238
+623a6 2 175 238
+623a8 2 179 238
+623aa 2 175 238
+623ac 6 156 238
+623b2 8 238 236
+623ba 8 235 246
+623c2 2 225 236
+623c4 2 90 238
+623c6 2 225 236
+623c8 4 803 237
+623cc 2 168 246
+623ce 2 806 237
+623d0 2 168 246
+623d2 8 806 237
+623da 6 235 246
+623e0 4 400 237
+623e4 4 230 236
+623e8 2 400 237
+623ea 8 230 236
+623f2 4 185 238
+623f6 4 91 200
+623fa 6 92 200
+62400 2 93 200
+62402 2 92 200
+62404 4 91 200
+62408 4 92 200
+6240c 2 93 200
+6240e 2 92 200
+62410 4 91 200
+62414 4 92 200
+62418 4 93 200
+6241c 4 189 238
+62420 4 193 238
+62424 4 187 238
+62428 4 188 238
+6242c 4 193 238
+62430 4 189 238
+62434 4 193 238
+62438 4 192 238
+6243c 4 193 238
+62440 4 194 238
+62444 2 195 238
+62446 6 196 238
+FUNC 6244c 408 0 bool std::priv::__get_monetary_value<std::istreambuf_iterator<char, std::char_traits<char> >, std::back_insert_iterator<std::string>, char>(std::istreambuf_iterator<char, std::char_traits<char> >&, std::istreambuf_iterator<char, std::char_traits<char> >, std::back_insert_iterator<std::string>, std::ctype<char> const&, char, int, char, std::string const&, bool&)
+6244c 6 62 220
+62452 c 62 220
+6245e 2 112 215
+62460 4 62 220
+62464 4 112 215
+62468 2 66 220
+6246a 2 67 220
+6246c 6 118 220
+62472 a 90 215
+6247c 6 79 206
+62482 6 66 220
+62488 8 70 220
+62490 6 70 220
+62496 2 70 220
+62498 4 70 220
+6249c 4 81 220
+624a0 2 69 215
+624a2 8 120 215
+624aa 2 73 220
+624ac a 90 215
+624b6 6 79 206
+624bc 6 74 220
+624c2 6 78 220
+624c8 8 90 215
+624d0 4 79 220
+624d4 2 68 215
+624d6 4 80 220
+624da a 229 235
+624e4 4 229 235
+624e8 4 69 215
+624ec 4 120 215
+624f0 4 81 220
+624f4 4 120 215
+624f8 4 73 220
+624fc 4 65 238
+62500 2 89 238
+62502 6 90 220
+62508 4 93 220
+6250c 4 94 220
+62510 2 93 220
+62512 4 94 220
+62516 6 96 220
+6251c 2 112 215
+6251e 2 96 220
+62520 6 112 215
+62526 6 99 220
+6252c a 100 220
+62536 6 232 246
+6253c 6 101 205
+62542 2 100 220
+62544 2 90 238
+62546 2 232 246
+62548 4 539 237
+6254c 2 100 220
+6254e 2 539 237
+62550 2 100 220
+62552 2 64 238
+62554 4 74 238
+62558 2 74 238
+6255a 8 74 238
+62562 4 535 237
+62566 2 400 237
+62568 6 304 237
+6256e a 306 237
+62578 a 307 237
+62582 8 307 237
+6258a 2 536 237
+6258c 2 100 220
+6258e 6 536 237
+62594 2 101 205
+62596 2 90 238
+62598 2 232 246
+6259a 4 539 237
+6259e 2 100 220
+625a0 2 539 237
+625a2 2 100 220
+625a4 4 102 220
+625a8 2 92 215
+625aa 6 235 235
+625b0 4 223 246
+625b4 4 235 235
+625b8 4 191 246
+625bc 2 220 246
+625be 4 191 246
+625c2 2 93 215
+625c4 4 191 246
+625c8 2 95 215
+625ca 2 191 246
+625cc 4 95 215
+625d0 2 92 215
+625d2 6 235 235
+625d8 4 223 246
+625dc 2 235 235
+625de 2 220 246
+625e0 2 93 215
+625e2 2 79 206
+625e4 c 191 246
+625f0 2 95 215
+625f2 4 79 206
+625f6 2 191 246
+625f8 2 74 220
+625fa 2 95 215
+625fc 4 74 220
+62600 8 76 220
+62608 4 90 215
+6260c 4 76 220
+62610 4 90 215
+62614 2 74 238
+62616 2 64 238
+62618 4 74 238
+6261c 2 74 238
+6261e 8 74 238
+62626 4 535 237
+6262a 4 101 205
+6262e 4 75 220
+62632 2 90 238
+62634 4 75 220
+62638 2 232 246
+6263a 8 539 237
+62642 2 92 215
+62644 6 235 235
+6264a 4 223 246
+6264e 2 235 235
+62650 4 191 246
+62654 2 220 246
+62656 4 191 246
+6265a 2 93 215
+6265c 4 191 246
+62660 2 95 215
+62662 2 191 246
+62664 4 95 215
+62668 8 229 235
+62670 8 235 235
+62678 2 92 215
+6267a 6 235 235
+62680 4 223 246
+62684 2 235 235
+62686 4 220 246
+6268a 6 235 235
+62690 4 220 246
+62694 8 235 235
+6269c 2 400 237
+6269e 6 304 237
+626a4 a 306 237
+626ae a 307 237
+626b8 8 307 237
+626c0 e 536 237
+626ce a 90 215
+626d8 a 99 220
+626e2 2 68 215
+626e4 8 229 235
+626ec 4 229 235
+626f0 4 95 215
+626f4 8 69 215
+626fc 8 120 215
+62704 2 110 220
+62706 6 115 220
+6270c c 62 220
+62718 2 115 220
+6271a 2 117 220
+6271c 2 115 220
+6271e 2 117 220
+62720 8 90 215
+62728 6 79 206
+6272e 4 110 220
+62732 8 111 220
+6273a 4 90 215
+6273e 4 111 220
+62742 2 90 215
+62744 2 74 238
+62746 2 64 238
+62748 4 74 238
+6274c 2 74 238
+6274e 8 74 238
+62756 4 535 237
+6275a 4 101 205
+6275e 2 90 238
+62760 4 112 220
+62764 4 232 246
+62768 8 539 237
+62770 2 92 215
+62772 6 235 235
+62778 4 223 246
+6277c 2 235 235
+6277e 6 220 246
+62784 6 235 235
+6278a 6 220 246
+62790 2 400 237
+62792 4 304 237
+62796 a 306 237
+627a0 a 307 237
+627aa 8 307 237
+627b2 a 536 237
+627bc 2 92 215
+627be 6 235 235
+627c4 4 223 246
+627c8 2 235 235
+627ca 4 191 246
+627ce 2 220 246
+627d0 4 191 246
+627d4 2 93 215
+627d6 4 191 246
+627da 4 95 215
+627de 4 191 246
+627e2 8 235 235
+627ea 8 229 235
+627f2 8 91 220
+627fa 2 92 215
+627fc 6 235 235
+62802 4 223 246
+62806 2 235 235
+62808 4 191 246
+6280c 2 220 246
+6280e 2 191 246
+62810 2 93 215
+62812 4 191 246
+62816 2 95 215
+62818 2 191 246
+6281a 4 95 215
+6281e 10 235 235
+6282e 26 600 236
+FUNC 62854 670 0 std::istreambuf_iterator<char, std::char_traits<char> > std::priv::__money_do_get<char, std::istreambuf_iterator<char, std::char_traits<char> >, std::string>(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char, std::char_traits<char> >, bool, std::ios_base&, int&, std::string&, bool&, char*)
+62854 8 122 220
+6285c 2 122 220
+6285e 2 112 215
+62860 8 122 220
+62868 2 112 215
+6286a 4 122 220
+6286e 2 112 215
+62870 4 122 220
+62874 4 112 215
+62878 2 125 220
+6287a 2 126 220
+6287c 4 127 220
+62880 2 126 220
+62882 4 127 220
+62886 6 126 220
+6288c c 272 220
+62898 e 145 212
+628a6 2a 351 218
+628d0 2 143 220
+628d2 2 351 218
+628d4 6 143 220
+628da 26 140 221
+62900 2 137 221
+62902 2 140 221
+62904 8 137 221
+6290c 4 140 221
+62910 2 143 220
+62912 6 137 221
+62918 10 136 221
+62928 2 120 238
+6292a 2 149 220
+6292c 2 124 238
+6292e 2 120 238
+62930 2 124 238
+62932 4 149 220
+62936 2 481 201
+62938 2 149 220
+6293a 4 124 238
+6293e 4 101 205
+62942 2 153 220
+62944 2 69 215
+62946 2 101 205
+62948 18 154 220
+62960 e 90 215
+6296e 6 79 206
+62974 6 156 220
+6297a 2 68 215
+6297c a 229 235
+62986 4 229 235
+6298a 4 69 215
+6298e 8 120 215
+62996 6 162 220
+6299c 4 153 220
+629a0 6 153 220
+629a6 a 244 220
+629b0 2 89 238
+629b2 2 65 238
+629b4 2 400 237
+629b6 a 245 220
+629c0 6 252 220
+629c6 8 112 215
+629ce 2 268 220
+629d0 a 269 220
+629da 8 271 220
+629e2 12 156 238
+629f4 8 271 220
+629fc 8 215 220
+62a04 a 92 221
+62a0e 4 98 221
+62a12 2 92 221
+62a14 6 98 221
+62a1a 6 94 221
+62a20 2 98 221
+62a22 a 94 221
+62a2c 2 220 220
+62a2e 2 225 220
+62a30 4 220 220
+62a34 8 225 220
+62a3c 8 225 220
+62a44 a 93 221
+62a4e 22 227 220
+62a70 6 232 220
+62a76 a 233 220
+62a80 6 234 220
+62a86 8 156 238
+62a8e 8 112 215
+62a96 6 176 220
+62a9c a 177 220
+62aa6 a 179 220
+62ab0 6 192 220
+62ab6 8 167 220
+62abe 10 95 221
+62ace 1c 169 220
+62aea 6 170 220
+62af0 4 170 220
+62af4 6 171 220
+62afa e 172 220
+62b08 2 156 238
+62b0a 4 172 220
+62b0e 6 156 238
+62b14 26 100 221
+62b3a 2 97 221
+62b3c 2 100 221
+62b3e a 97 221
+62b48 4 100 221
+62b4c 2 143 220
+62b4e 4 97 221
+62b52 12 96 221
+62b64 a 90 215
+62b6e 6 79 206
+62b74 6 162 220
+62b7a 2 68 215
+62b7c a 229 235
+62b86 6 229 235
+62b8c 6 69 215
+62b92 2 92 215
+62b94 6 235 235
+62b9a 4 223 246
+62b9e 2 235 235
+62ba0 4 191 246
+62ba4 2 220 246
+62ba6 2 191 246
+62ba8 4 93 215
+62bac 4 191 246
+62bb0 2 95 215
+62bb2 4 191 246
+62bb6 6 95 215
+62bbc 8 235 235
+62bc4 2 89 238
+62bc6 2 65 238
+62bc8 2 400 237
+62bca 4 256 220
+62bce 6 258 220
+62bd4 2 258 220
+62bd6 12 258 220
+62be8 2 259 220
+62bea 4 260 220
+62bee 10 259 220
+62bfe 2 260 220
+62c00 a 261 220
+62c0a 6 263 220
+62c10 c 101 206
+62c1c 8 359 237
+62c24 c 517 237
+62c30 6 260 220
+62c36 12 135 221
+62c48 a 132 221
+62c52 4 138 221
+62c56 2 132 221
+62c58 6 138 221
+62c5e 6 134 221
+62c64 2 138 221
+62c66 c 134 221
+62c72 2 65 238
+62c74 6 187 220
+62c7a c 90 215
+62c86 8 197 220
+62c8e 2 65 238
+62c90 8 201 220
+62c98 a 90 215
+62ca2 8 203 220
+62caa 2 68 215
+62cac a 229 235
+62cb6 4 229 235
+62cba 2 205 220
+62cbc 4 69 215
+62cc0 2 205 220
+62cc2 2 206 220
+62cc4 c 133 221
+62cd0 6 247 220
+62cd6 2 247 220
+62cd8 12 247 220
+62cea 2 248 220
+62cec 4 249 220
+62cf0 10 248 220
+62d00 8 249 220
+62d08 2 92 215
+62d0a 6 235 235
+62d10 4 223 246
+62d14 2 235 235
+62d16 4 191 246
+62d1a 2 220 246
+62d1c 4 191 246
+62d20 4 93 215
+62d24 4 191 246
+62d28 2 95 215
+62d2a 4 191 246
+62d2e 6 95 215
+62d34 c 349 237
+62d40 c 250 220
+62d4c 2 65 238
+62d4e 8 188 220
+62d56 c 90 215
+62d62 8 190 220
+62d6a 2 68 215
+62d6c 8 229 235
+62d74 2 229 235
+62d76 4 69 215
+62d7a 4 229 235
+62d7e 2 92 215
+62d80 6 235 235
+62d86 4 223 246
+62d8a 2 235 235
+62d8c 4 191 246
+62d90 2 220 246
+62d92 4 191 246
+62d96 4 93 215
+62d9a 4 191 246
+62d9e 2 95 215
+62da0 4 191 246
+62da4 6 95 215
+62daa 8 235 235
+62db2 2 68 215
+62db4 8 229 235
+62dbc 2 229 235
+62dbe 4 69 215
+62dc2 4 229 235
+62dc6 2 92 215
+62dc8 6 235 235
+62dce 4 223 246
+62dd2 2 235 235
+62dd4 4 191 246
+62dd8 2 220 246
+62dda 4 191 246
+62dde 4 93 215
+62de2 4 191 246
+62de6 2 95 215
+62de8 4 191 246
+62dec 6 95 215
+62df2 4 225 220
+62df6 8 229 235
+62dfe 2 92 215
+62e00 6 235 235
+62e06 4 223 246
+62e0a 2 235 235
+62e0c 4 191 246
+62e10 2 220 246
+62e12 2 191 246
+62e14 4 93 215
+62e18 4 191 246
+62e1c 2 95 215
+62e1e 4 191 246
+62e22 6 95 215
+62e28 a 235 235
+62e32 6 229 235
+62e38 6 69 215
+62e3e 4 211 220
+62e42 4 208 220
+62e46 4 211 220
+62e4a 4 208 220
+62e4e 4 236 220
+62e52 4 235 220
+62e56 4 236 220
+62e5a 2 235 220
+62e5c 8 156 238
+62e64 a 235 235
+62e6e 6 229 235
+62e74 6 69 215
+62e7a a 235 235
+62e84 18 156 238
+62e9c c 271 220
+62ea8 1c 156 238
+FUNC 62ec4 40 0 std::money_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::do_get(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char, std::char_traits<char> >, bool, std::ios_base&, int&, std::string&) const
+62ec4 4 304 220
+62ec8 4 304 220
+62ecc 2 307 220
+62ece 4 304 220
+62ed2 6 307 220
+62ed8 26 308 220
+62efe 6 309 220
+FUNC 62f04 104 0 std::money_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::do_get(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char, std::char_traits<char> >, bool, std::ios_base&, int&, long double&) const
+62f04 6 279 220
+62f0a 2 120 238
+62f0c 2 279 220
+62f0e 2 124 238
+62f10 2 279 220
+62f12 2 124 238
+62f14 8 279 220
+62f1c 2 284 220
+62f1e 4 279 220
+62f22 2 120 238
+62f24 2 481 201
+62f26 4 124 238
+62f2a 4 101 205
+62f2e 2 284 220
+62f30 2 101 205
+62f32 6 283 220
+62f38 26 284 220
+62f5e 4 286 220
+62f62 4 284 220
+62f66 12 286 220
+62f78 c 284 220
+62f84 2 286 220
+62f86 2 66 238
+62f88 2 287 220
+62f8a 4 289 220
+62f8e 2 287 220
+62f90 2 287 220
+62f92 4 289 220
+62f96 2 120 238
+62f98 2 124 238
+62f9a 2 120 238
+62f9c 2 124 238
+62f9e 2 481 201
+62fa0 4 124 238
+62fa4 4 101 205
+62fa8 4 242 223
+62fac 2 101 205
+62fae 14 242 223
+62fc2 6 156 238
+62fc8 6 294 220
+62fce c 295 220
+62fda 8 299 220
+62fe2 6 156 238
+62fe8 8 300 220
+62ff0 6 289 220
+62ff6 12 156 238
+FUNC 63008 28 0 std::priv::_String_base<wchar_t, std::allocator<wchar_t> >::~_String_base
+63008 2 156 238
+6300a 2 156 238
+6300c 2 64 238
+6300e 4 96 238
+63012 2 96 238
+63014 4 97 238
+63018 4 323 201
+6301c 4 161 201
+63020 4 161 201
+63024 4 156 238
+63028 4 135 222
+6302c 4 156 238
+FUNC 63030 c 0 std::_STLP_mutex::~_STLP_mutex
+63030 2 411 240
+63032 2 411 240
+63034 4 342 240
+63038 4 411 240
+FUNC 6303c 34 0 std::__node_alloc_impl::_M_deallocate(void*, unsigned int)
+6303c 2 340 175
+6303e 2 340 175
+63040 2 347 240
+63042 2 341 175
+63044 2 347 240
+63046 2 341 175
+63048 6 347 240
+6304e 2 346 175
+63050 2 349 240
+63052 8 346 175
+6305a 4 347 175
+6305e 4 353 175
+63062 e 349 240
+FUNC 63070 18c 0 std::__node_alloc_impl::_S_chunk_alloc(unsigned int, int&)
+63070 4 365 175
+63074 4 405 175
+63078 2 387 175
+6307a 2 365 175
+6307c 2 407 175
+6307e 2 365 175
+63080 4 406 175
+63084 4 405 175
+63088 6 407 175
+6308e 4 388 175
+63092 2 387 175
+63094 4 407 175
+63098 2 406 175
+6309a 4 365 175
+6309e 4 377 175
+630a2 2 386 175
+630a4 4 388 175
+630a8 2 389 175
+630aa 2 386 175
+630ac 2 389 175
+630ae 4 388 175
+630b2 2 389 175
+630b4 8 387 175
+630bc 4 388 175
+630c0 4 389 175
+630c4 c 248 175
+630d0 4 392 175
+630d4 6 134 222
+630da 2 395 175
+630dc 2 134 222
+630de 4 395 175
+630e2 2 421 175
+630e4 4 426 175
+630e8 2 421 175
+630ea 2 426 175
+630ec 2 421 175
+630ee 2 426 175
+630f0 6 421 175
+630f6 2 367 175
+630f8 2 370 175
+630fa 4 367 175
+630fe 2 370 175
+63100 4 371 175
+63104 8 373 175
+6310c 8 429 175
+63114 a 378 175
+6311e a 381 175
+63128 2 378 175
+6312a 2 381 175
+6312c 2 382 175
+6312e c 398 175
+6313a 6 404 175
+63140 8 406 175
+63148 6 407 175
+6314e 4 404 175
+63152 4 404 175
+63156 4 405 175
+6315a 4 406 175
+6315e 6 407 175
+63164 6 134 222
+6316a 2 417 175
+6316c 2 367 175
+6316e 4 417 175
+63172 c 398 175
+6317e 2 405 175
+63180 2 408 175
+63182 2 410 175
+63184 2 409 175
+63186 2 410 175
+63188 4 408 175
+6318c 2 409 175
+6318e 2 410 175
+63190 2 409 175
+63192 4 408 175
+63196 2 411 175
+63198 2 410 175
+6319a 6 411 175
+631a0 a 398 175
+631aa 4 407 175
+631ae 4e 398 175
+FUNC 631fc 48 0 std::__node_alloc_impl::_S_refill(unsigned int)
+631fc 4 434 175
+63200 4 435 175
+63204 2 434 175
+63206 4 435 175
+6320a 4 436 175
+6320e 6 438 175
+63214 2 440 175
+63216 4 447 175
+6321a 2 440 175
+6321c 2 447 175
+6321e 2 448 175
+63220 4 447 175
+63224 4 448 175
+63228 2 447 175
+6322a 2 450 175
+6322c 2 448 175
+6322e 2 451 175
+63230 2 450 175
+63232 6 448 175
+63238 4 453 175
+6323c 8 455 175
+FUNC 63244 5c 0 std::__node_alloc_impl::_M_allocate(unsigned int&)
+63244 2 318 175
+63246 2 318 175
+63248 2 248 175
+6324a 2 347 240
+6324c 6 248 175
+63252 2 347 240
+63254 2 319 175
+63256 2 320 175
+63258 4 347 240
+6325c 2 328 175
+6325e 2 320 175
+63260 8 328 175
+63268 6 329 175
+6326e 8 349 240
+63276 4 338 175
+6327a a 331 175
+63284 1c 349 240
+FUNC 632a0 4 0 std::__node_alloc::_M_allocate(unsigned int&)
+632a0 4 743 175
+FUNC 632a4 4 0 std::__node_alloc::_M_deallocate(void*, unsigned int)
+632a4 4 746 175
+FUNC 632a8 114 0 _Locale_init
+632a8 4 58 176
+632ac 2 58 176
+632ae 4 63 176
+632b2 4 64 176
+632b6 2 58 176
+632b8 2 65 176
+632ba 2 63 176
+632bc 2 66 176
+632be 2 64 176
+632c0 4 67 176
+632c4 2 65 176
+632c6 2 66 176
+632c8 8 63 176
+632d0 c 63 176
+632dc 8 64 176
+632e4 c 64 176
+632f0 4 65 176
+632f4 2 66 176
+632f6 2 65 176
+632f8 a 65 176
+63302 6 66 176
+63308 8 66 176
+63310 8 67 176
+63318 c 67 176
+63324 8 68 176
+6332c c 68 176
+63338 8 69 176
+63340 c 69 176
+6334c 8 70 176
+63354 c 70 176
+63360 8 71 176
+63368 10 71 176
+63378 4 72 176
+6337c e 76 176
+6338a 4 77 176
+6338e 2e 76 176
+FUNC 633cc 74 0 __cxxabiv1::__cxa_type_match
+633cc 4 87 157
+633d0 4 93 157
+633d4 4 92 157
+633d8 6 87 157
+633de 2 92 157
+633e0 6 93 157
+633e6 14 93 157
+633fa 2 94 157
+633fc 2 95 157
+633fe 2 94 157
+63400 12 101 157
+63412 2 102 157
+63414 6 111 157
+6341a e 105 157
+63428 4 106 157
+6342c 2 107 157
+6342e 4 90 157
+63432 e 110 157
+FUNC 63440 50 0 __cxxabiv1::__cxa_begin_cleanup
+63440 2 134 157
+63442 2 134 157
+63444 4 135 157
+63448 4 139 157
+6344c 4 136 157
+63450 e 139 157
+6345e 4 146 157
+63462 2 139 157
+63464 4 150 157
+63468 a 140 157
+63472 2 141 157
+63474 8 142 157
+6347c 2 143 157
+6347e 12 150 157
+FUNC 63490 50 0 __cxxabiv1::helper_end_cleanup
+63490 2 152 157
+63492 4 153 157
+63496 2 154 157
+63498 2 156 157
+6349a 14 160 157
+634ae 4 167 157
+634b2 4 170 157
+634b6 2 171 157
+634b8 6 161 157
+634be 4 162 157
+634c2 4 163 157
+634c6 4 170 157
+634ca 2 164 157
+634cc 2 171 157
+634ce 12 157 157
+FUNC 634e0 104 0 __cxxabiv1::__cxa_call_unexpected
+634e0 6 187 157
+634e6 6 192 157
+634ec 2 187 157
+634ee 4 192 157
+634f2 2 187 157
+634f4 8 192 157
+634fc 2 187 157
+634fe 2 193 157
+63500 2 192 157
+63502 4 193 157
+63506 4 195 157
+6350a 4 204 157
+6350e 2 205 157
+63510 2 207 157
+63512 4 209 157
+63516 6 126 157
+6351c 4 127 157
+63520 4 196 157
+63524 4 197 157
+63528 4 212 157
+6352c 4 216 157
+63530 4 217 157
+63534 2 214 157
+63536 4 216 157
+6353a 8 218 157
+63542 4 221 157
+63546 4 226 157
+6354a 2 221 157
+6354c 4 226 157
+63550 4 222 157
+63554 6 226 157
+6355a 2 223 157
+6355c 4 233 157
+63560 2 230 157
+63562 a 233 157
+6356c 4 216 157
+63570 8 234 157
+63578 4 216 157
+6357c 8 196 157
+63584 4 227 157
+63588 8 212 157
+63590 6 239 157
+63596 4 240 157
+6359a 4 241 157
+6359e 1a 242 157
+635b8 6 118 157
+635be 4 119 157
+635c2 4 120 157
+635c6 4 121 157
+635ca 1a 120 157
+FUNC 635e8 18 0 __cxxabiv1::__class_type_info::~__class_type_info
+635e8 4 34 158
+635ec 8 34 158
+635f4 c 36 158
+FUNC 63600 12 0 __cxxabiv1::__class_type_info::~__class_type_info
+63600 2 34 158
+63602 2 34 158
+63604 4 36 158
+63608 6 36 158
+6360e 4 36 158
+FUNC 63614 1e 0 __cxxabiv1::__class_type_info::self_class_type_match(__cxxabiv1::__class_type_info const*, void*&, __cxxabiv1::__UpcastInfo&) const
+63614 2 69 158
+63616 6 69 158
+6361c 6 70 158
+63622 2 71 158
+63624 2 72 158
+63626 2 73 158
+63628 2 75 158
+6362a 2 71 158
+6362c 2 74 158
+6362e 2 73 158
+63630 2 79 158
+FUNC 63634 4 0 __cxxabiv1::__class_type_info::walk_to(__cxxabiv1::__class_type_info const*, void*&, __cxxabiv1::__UpcastInfo&) const
+63634 4 64 158
+FUNC 63638 38 0 __cxxabiv1::__UpcastInfo::__UpcastInfo
+63638 2 82 158
+6363a 4 84 158
+6363e 2 82 158
+63640 a 84 158
+6364a 4 87 158
+6364e 2 87 158
+63650 4 87 158
+63654 a 87 158
+6365e 2 86 158
+63660 4 88 158
+63664 c 90 158
+FUNC 63670 68 0 __cxxabiv1::__class_type_info::can_catch(__cxxabiv1::__shim_type_info const*, void*&) const
+63670 6 39 158
+63676 6 39 158
+6367c 6 40 158
+63682 2 41 158
+63684 2 40 158
+63686 2 47 158
+63688 4 45 158
+6368c 2 45 158
+6368e 2 45 158
+63690 6 45 158
+63696 2 45 158
+63698 6 45 158
+6369e 6 46 158
+636a4 8 50 158
+636ac 10 51 158
+636bc 4 53 158
+636c0 4 57 158
+636c4 2 54 158
+636c6 2 57 158
+636c8 10 59 158
+FUNC 636d8 24 0 __cxxabiv1::readULEB128
+636d8 2 56 162
+636da 2 58 162
+636dc 4 57 162
+636e0 4 62 162
+636e4 6 63 162
+636ea 2 64 162
+636ec 2 61 162
+636ee 4 63 162
+636f2 2 61 162
+636f4 2 66 162
+636f6 6 68 162
+FUNC 636fc 3e 0 __cxxabiv1::readSLEB128(unsigned char const**)
+636fc 2 70 162
+636fe 2 72 162
+63700 2 77 162
+63702 2 71 162
+63704 4 76 162
+63708 6 77 162
+6370e 2 78 162
+63710 4 75 162
+63714 4 77 162
+63718 2 75 162
+6371a 2 81 162
+6371c 2 80 162
+6371e c 81 162
+6372a a 82 162
+63734 6 85 162
+FUNC 6373c 19a 0 __cxxabiv1::readEncodedPointer(unsigned char const**, unsigned char)
+6373c 2 146 162
+6373e 8 144 162
+63746 2 144 162
+63748 4 146 162
+6374c 2 149 162
+6374e 4 151 162
+63752 2 149 162
+63754 16 151 162
+6376a 2 102 162
+6376c 2 183 162
+6376e e 102 162
+6377c 2 183 162
+6377e 6 102 162
+63784 a 191 162
+6378e 4 193 162
+63792 2 198 162
+63794 4 208 162
+63798 6 210 162
+6379e 4 199 162
+637a2 10 205 162
+637b2 4 206 162
+637b6 58 120 162
+6380e 2 175 162
+63810 c 120 162
+6381c 2 174 162
+6381e 2 175 162
+63820 2 176 162
+63822 6 163 162
+63828 2 164 162
+6382a a 90 162
+63834 2 179 162
+63836 2 178 162
+63838 2 180 162
+6383a 4 151 162
+6383e 4 62 162
+63842 6 63 162
+63848 2 64 162
+6384a 2 61 162
+6384c 4 63 162
+63850 2 61 162
+63852 2 187 162
+63854 2 188 162
+63856 8 90 162
+6385e 4 166 162
+63862 2 167 162
+63864 2 168 162
+63866 58 120 162
+638be 2 187 162
+638c0 c 120 162
+638cc 2 186 162
+638ce 4 187 162
+638d2 4 147 162
+FUNC 638d8 dc 0 walk_object
+638d8 c 119 163
+638e4 a 120 163
+638ee 2 123 163
+638f0 4 120 163
+638f4 10 123 163
+63904 2 158 163
+63906 6 176 163
+6390c 6 173 163
+63912 2 175 163
+63914 c 173 163
+63920 6 176 163
+63926 2 146 163
+63928 4 57 163
+6392c 6 146 163
+63932 2 145 163
+63934 6 107 160
+6393a 4 148 163
+6393e 2 113 160
+63940 2 103 163
+63942 4 155 163
+63946 6 107 163
+6394c 2 155 163
+6394e 2 48 163
+63950 4 155 163
+63954 4 157 163
+63958 2 159 163
+6395a 6 161 163
+63960 6 165 163
+63966 4 146 163
+6396a 6 146 163
+63970 8 176 163
+63978 4 161 163
+6397c 4 135 163
+63980 6 166 163
+63986 12 121 163
+63998 a 121 163
+639a2 12 145 163
+FUNC 639b4 dc 0 base_to_derived_cast
+639b4 4 200 163
+639b8 4 200 163
+639bc 4 205 163
+639c0 2 200 163
+639c2 2 204 163
+639c4 4 205 163
+639c8 2 206 163
+639ca 4 207 163
+639ce 6 209 163
+639d4 12 221 163
+639e6 14 261 163
+639fa 6 263 163
+63a00 2 243 163
+63a02 4 57 163
+63a06 4 243 163
+63a0a 2 243 163
+63a0c 2 243 163
+63a0e 4 107 160
+63a12 2 243 163
+63a14 2 251 163
+63a16 2 107 160
+63a18 4 245 163
+63a1c 4 113 160
+63a20 2 245 163
+63a22 2 103 163
+63a24 4 251 163
+63a28 6 107 163
+63a2e 2 48 163
+63a30 4 251 163
+63a34 8 254 163
+63a3c 2 243 163
+63a3e 4 243 163
+63a42 4 243 163
+63a46 6 209 163
+63a4c 8 211 163
+63a54 4 209 163
+63a58 4 213 163
+63a5c 2 215 163
+63a5e 2 263 163
+63a60 2 215 163
+63a62 c 216 163
+63a6e 2 214 163
+63a70 2 263 163
+63a72 6 214 163
+63a78 18 232 163
+FUNC 63a90 96 0 __cxxabiv1::__dynamic_cast
+63a90 6 293 163
+63a96 2 77 163
+63a98 6 293 163
+63a9e 2 293 163
+63aa0 2 303 163
+63aa2 4 48 163
+63aa6 2 303 163
+63aa8 4 48 163
+63aac 2 66 163
+63aae 2 303 163
+63ab0 4 66 163
+63ab4 8 303 163
+63abc 4 304 163
+63ac0 4 318 163
+63ac4 2 322 163
+63ac6 4 48 163
+63aca 10 322 163
+63ada c 193 163
+63ae6 2 329 163
+63ae8 a 330 163
+63af2 8 335 163
+63afa 2 349 163
+63afc 4 348 163
+63b00 c 353 163
+63b0c 8 354 163
+63b14 6 355 163
+63b1a c 333 163
+FUNC 63b28 64 0 __cxa_guard_acquire
+63b28 2 60 168
+63b2a 2 60 168
+63b2c a 61 168
+63b36 2 66 168
+63b38 4 67 168
+63b3c 6 76 168
+63b42 4 88 168
+63b46 4 76 168
+63b4a 4 87 168
+63b4e 2 88 168
+63b50 2 87 168
+63b52 6 88 168
+63b58 2 66 168
+63b5a 4 67 168
+63b5e 8 69 168
+63b66 4 70 168
+63b6a 2 80 168
+63b6c 6 79 168
+63b72 6 80 168
+63b78 14 81 168
+FUNC 63b8c 38 0 __cxa_guard_release
+63b8c 2 94 168
+63b8e 2 93 168
+63b90 2 94 168
+63b92 2 93 168
+63b94 6 94 168
+63b9a 2 96 168
+63b9c 4 98 168
+63ba0 4 99 168
+63ba4 8 100 168
+63bac 4 102 168
+63bb0 4 103 168
+63bb4 10 102 168
+FUNC 63bc4 38 0 __cxa_guard_abort
+63bc4 2 107 168
+63bc6 2 106 168
+63bc8 2 107 168
+63bca 2 106 168
+63bcc 6 107 168
+63bd2 2 109 168
+63bd4 4 110 168
+63bd8 4 111 168
+63bdc 8 112 168
+63be4 4 114 168
+63be8 4 115 168
+63bec 10 114 168
+FUNC 63bfc 4 0 __cxxabiv1::__vmi_class_type_info::code() const
+63bfc 4 198 160
+FUNC 63c00 18 0 __cxxabiv1::__vmi_class_type_info::~__vmi_class_type_info
+63c00 4 35 173
+63c04 8 35 173
+63c0c c 37 173
+FUNC 63c18 12 0 __cxxabiv1::__vmi_class_type_info::~__vmi_class_type_info
+63c18 2 35 173
+63c1a 2 35 173
+63c1c 4 37 173
+63c20 6 37 173
+63c26 4 37 173
+FUNC 63c2c 1a8 0 __cxxabiv1::__vmi_class_type_info::walk_to(__cxxabiv1::__class_type_info const*, void*&, __cxxabiv1::__UpcastInfo&) const
+63c2c 6 41 173
+63c32 8 41 173
+63c3a a 42 173
+63c44 4 46 173
+63c48 4 46 173
+63c4c 2 143 173
+63c4e 2 46 173
+63c50 2 46 173
+63c52 1e 143 173
+63c70 8 47 173
+63c78 4 113 160
+63c7c 4 48 173
+63c80 2 113 160
+63c82 4 49 173
+63c86 2 48 173
+63c88 4 103 160
+63c8c 4 107 160
+63c90 2 55 173
+63c92 2 113 160
+63c94 6 56 173
+63c9a 4 59 173
+63c9e 4 61 173
+63ca2 6 65 173
+63ca8 6 65 173
+63cae 10 74 173
+63cbe 6 82 173
+63cc4 4 83 173
+63cc8 6 86 173
+63cce 6 92 173
+63cd4 6 111 173
+63cda 6 114 173
+63ce0 6 120 173
+63ce6 c 138 173
+63cf2 6 143 173
+63cf8 6 143 173
+63cfe 4 146 173
+63d02 2 148 173
+63d04 4 147 173
+63d08 6 157 173
+63d0e 6 92 173
+63d14 a 93 173
+63d1e 6 94 173
+63d24 2 46 173
+63d26 6 46 173
+63d2c 4 46 173
+63d30 a 156 173
+63d3a 8 88 173
+63d42 6 120 173
+63d48 6 121 173
+63d4e 8 121 173
+63d56 e 126 173
+63d64 4 43 173
+63d68 14 138 173
+63d7c 18 111 173
+63d94 12 143 173
+63da6 2e 94 173
+FUNC 63dd4 12 0 std::priv::stdio_streambuf_base::sync()
+63dd4 2 144 195
+63dd6 8 145 195
+63dde 6 145 195
+63de4 2 146 195
+FUNC 63de8 2c 0 std::priv::stdio_streambuf_base::~stdio_streambuf_base
+63de8 4 60 195
+63dec 6 60 195
+63df2 2 61 195
+63df4 2 60 195
+63df6 4 61 195
+63dfa 1a 62 195
+FUNC 63e14 18 0 std::priv::stdio_ostreambuf::~stdio_ostreambuf
+63e14 4 198 195
+63e18 14 198 195
+FUNC 63e2c 12 0 std::priv::stdio_ostreambuf::~stdio_ostreambuf
+63e2c 2 198 195
+63e2e 6 198 195
+63e34 6 198 195
+63e3a 4 198 195
+FUNC 63e40 18 0 std::priv::stdio_istreambuf::~stdio_istreambuf
+63e40 4 151 195
+63e44 14 151 195
+FUNC 63e58 12 0 std::priv::stdio_istreambuf::~stdio_istreambuf
+63e58 2 151 195
+63e5a 6 151 195
+63e60 6 151 195
+63e66 4 151 195
+FUNC 63e6c 12 0 std::priv::stdio_streambuf_base::~stdio_streambuf_base
+63e6c 2 60 195
+63e6e 2 60 195
+63e70 4 62 195
+63e74 6 62 195
+63e7a 4 62 195
+FUNC 63e80 6 0 std::priv::stdio_istreambuf::uflow()
+63e80 2 175 195
+63e82 4 175 195
+FUNC 63e88 1a 0 std::priv::stdio_istreambuf::underflow()
+63e88 2 157 195
+63e8a 2 157 195
+63e8c 6 161 195
+63e92 2 163 195
+63e94 2 161 195
+63e96 2 163 195
+63e98 6 164 195
+63e9e 4 169 195
+FUNC 63ea4 36 0 std::priv::stdio_streambuf_base::seekpos(std::fpos<mbstate_t>, int)
+63ea4 4 114 195
+63ea8 2 141 195
+63eaa 2 138 195
+63eac 4 114 195
+63eb0 4 138 195
+63eb4 2 141 195
+63eb6 4 114 195
+63eba 6 141 195
+63ec0 a 89 246
+63eca 6 142 195
+63ed0 a 141 195
+FUNC 63edc 1c 0 std::priv::stdio_streambuf_base::setbuf(char*, int)
+63edc 2 64 195
+63ede 4 64 195
+63ee2 8 70 195
+63eea 4 70 195
+63eee 2 70 195
+63ef0 4 70 195
+63ef4 4 73 195
+FUNC 63ef8 4c 0 std::priv::stdio_streambuf_base::seekoff(long, int, int)
+63ef8 2 79 195
+63efa 6 77 195
+63f00 4 77 195
+63f04 a 79 195
+63f0e a 89 246
+63f18 6 110 195
+63f1e 2 81 195
+63f20 c 93 195
+63f2c 8 95 195
+63f34 8 89 246
+63f3c 2 87 195
+63f3e 2 88 195
+63f40 4 84 195
+FUNC 63f44 40 0 std::priv::stdio_ostreambuf::overflow(int)
+63f44 2 203 195
+63f46 2 205 195
+63f48 2 203 195
+63f4a 2 205 195
+63f4c 6 227 195
+63f52 4 231 195
+63f56 4 227 195
+63f5a 4 207 195
+63f5e 2 208 195
+63f60 4 182 246
+63f64 2 208 195
+63f66 4 231 195
+63f6a 6 209 195
+63f70 6 211 195
+63f76 a 182 246
+63f80 4 231 195
+FUNC 63f84 24 0 std::priv::stdio_istreambuf::pbackfail(int)
+63f84 2 181 195
+63f86 2 180 195
+63f88 2 181 195
+63f8a 6 182 195
+63f90 4 182 195
+63f94 2 88 235
+63f96 6 186 195
+63f9c 8 91 235
+63fa4 2 191 195
+63fa6 2 193 195
+FUNC 63fa8 3c 0 std::priv::stdio_streambuf_base::stdio_streambuf_base
+63fa8 2 34 234
+63faa 2 55 195
+63fac 2 34 234
+63fae 2 55 195
+63fb0 e 34 234
+63fbe 2 55 195
+63fc0 c 34 234
+63fcc 4 57 195
+63fd0 2 58 195
+63fd2 6 57 195
+63fd8 c 58 195
+FUNC 63fe4 e 0 std::codecvt<char, char, mbstate_t>::do_length(mbstate_t&, char const*, char const*, unsigned int) const
+FUNC 63fe4 e 0 std::codecvt<wchar_t, char, mbstate_t>::do_length(mbstate_t&, char const*, char const*, unsigned int) const
+63fe4 e 132 177
+FUNC 63ff4 8 0 std::codecvt<char, char, mbstate_t>::do_unshift(mbstate_t&, char*, char*, char*&) const
+FUNC 63ff4 8 0 std::codecvt<wchar_t, char, mbstate_t>::do_unshift(mbstate_t&, char*, char*, char*&) const
+63ff4 2 118 177
+63ff6 6 52 177
+FUNC 63ffc e 0 std::codecvt<char, char, mbstate_t>::do_in(mbstate_t&, char const*, char const*, char const*&, char*, char*, char*&) const
+FUNC 63ffc e 0 std::codecvt<char, char, mbstate_t>::do_out(mbstate_t&, char const*, char const*, char const*&, char*, char*, char*&) const
+63ffc e 72 177
+FUNC 6400c 3e 0 std::codecvt<wchar_t, char, mbstate_t>::do_out(mbstate_t&, wchar_t const*, wchar_t const*, wchar_t const*&, char*, char*, char*&) const
+6400c 2 89 177
+6400e 2 90 177
+64010 2 89 177
+64012 6 90 177
+64018 6 91 177
+6401e 4 213 200
+64022 2 213 200
+64024 4 213 200
+64028 2 213 200
+6402a 4 83 177
+6402e 8 214 200
+64036 4 213 200
+6403a 2 92 177
+6403c 2 93 177
+6403e 2 95 177
+64040 2 92 177
+64042 4 93 177
+64046 4 95 177
+FUNC 6404c 3c 0 std::codecvt<wchar_t, char, mbstate_t>::do_in(mbstate_t&, char const*, char const*, char const*&, wchar_t*, wchar_t*, wchar_t*&) const
+6404c 2 104 177
+6404e 2 105 177
+64050 2 104 177
+64052 6 105 177
+64058 8 107 177
+64060 2 213 200
+64062 4 213 200
+64066 4 98 177
+6406a 4 214 200
+6406e 2 213 200
+64070 4 214 200
+64074 2 213 200
+64076 2 108 177
+64078 4 109 177
+6407c 2 111 177
+6407e 2 108 177
+64080 4 109 177
+64084 4 111 177
+FUNC 64088 1c 0 std::codecvt<wchar_t, char, mbstate_t>::~codecvt
+64088 4 79 177
+6408c 18 79 177
+FUNC 640a4 12 0 std::codecvt<wchar_t, char, mbstate_t>::~codecvt
+640a4 2 79 177
+640a6 6 79 177
+640ac 6 79 177
+640b2 4 79 177
+FUNC 640b8 1c 0 std::codecvt<char, char, mbstate_t>::~codecvt
+640b8 4 28 177
+640bc 18 28 177
+FUNC 640d4 12 0 std::codecvt<char, char, mbstate_t>::~codecvt
+640d4 2 28 177
+640d6 6 28 177
+640dc 6 28 177
+640e2 4 28 177
+FUNC 640e8 18 0 std::collate<char>::do_hash(char const*, char const*) const
+640e8 6 37 178
+640ee 8 38 178
+640f6 2 37 178
+640f8 2 38 178
+640fa 4 37 178
+640fe 2 40 178
+FUNC 64100 66 0 std::collate<wchar_t>::do_compare(wchar_t const*, wchar_t const*, wchar_t const*, wchar_t const*) const
+64100 2 50 178
+64102 2 80 199
+64104 2 50 178
+64106 10 80 199
+64116 8 81 199
+6411e a 85 199
+64128 c 81 199
+64134 2 85 199
+64136 2 87 199
+64138 2 88 199
+6413a 14 80 199
+6414e 4 90 199
+64152 6 91 199
+64158 4 50 178
+6415c 6 94 199
+64162 4 86 199
+FUNC 64168 18 0 std::collate<wchar_t>::do_hash(wchar_t const*, wchar_t const*) const
+64168 6 57 178
+6416e 8 58 178
+64176 2 57 178
+64178 2 58 178
+6417a 4 57 178
+6417e 2 60 178
+FUNC 64180 1c 0 std::collate<wchar_t>::~collate
+64180 4 45 178
+64184 18 45 178
+FUNC 6419c 12 0 std::collate<wchar_t>::~collate
+6419c 2 45 178
+6419e 6 45 178
+641a4 6 45 178
+641aa 4 45 178
+FUNC 641b0 1c 0 std::collate<char>::~collate
+641b0 4 26 178
+641b4 18 26 178
+FUNC 641cc 12 0 std::collate<char>::~collate
+641cc 2 26 178
+641ce 6 26 178
+641d4 6 26 178
+641da 4 26 178
+FUNC 641e0 2a 0 std::collate<char>::do_compare(char const*, char const*, char const*, char const*) const
+641e0 2 30 178
+641e2 2 625 200
+641e4 2 626 200
+641e6 4 627 200
+641ea 2 626 200
+641ec c 627 200
+641f8 2 629 200
+641fa 4 629 200
+641fe 2 629 200
+64200 2 629 200
+64202 2 30 178
+64204 6 629 200
+FUNC 6420c 4c 0 std::collate<char>::do_transform(char const*, char const*) const
+6420c 2 33 178
+6420e 2 33 178
+64210 2 355 216
+64212 2 112 238
+64214 2 324 237
+64216 2 481 201
+64218 4 33 178
+6421c 4 324 237
+64220 2 107 243
+64222 2 66 238
+64224 2 107 243
+64226 8 106 243
+6422e 2 107 243
+64230 2 325 237
+64232 4 101 205
+64236 4 33 178
+6423a 2 64 238
+6423c 4 96 238
+64240 2 96 238
+64242 4 97 238
+64246 4 161 201
+6424a 4 135 222
+6424e a 161 201
+FUNC 64258 52 0 std::collate<wchar_t>::do_transform(wchar_t const*, wchar_t const*) const
+64258 2 53 178
+6425a 2 355 216
+6425c 4 53 178
+64260 2 355 216
+64262 2 112 238
+64264 2 481 201
+64266 2 324 237
+64268 2 53 178
+6426a 4 324 237
+6426e 2 107 243
+64270 2 66 238
+64272 2 107 243
+64274 8 106 243
+6427c 2 107 243
+6427e 2 325 237
+64280 4 101 205
+64284 4 53 178
+64288 2 64 238
+6428a 4 96 238
+6428e 2 96 238
+64290 4 97 238
+64294 4 323 201
+64298 4 161 201
+6429c 4 135 222
+642a0 a 161 201
+FUNC 642ac c 0 std::ctype<char>::do_toupper(char) const
+642ac 4 342 179
+642b0 2 342 179
+642b2 6 342 179
+FUNC 642b8 c 0 std::ctype<char>::do_tolower(char) const
+642b8 4 344 179
+642bc 2 344 179
+642be 6 344 179
+FUNC 642c4 1c 0 std::ctype<char>::do_toupper(char*, char const*) const
+642c4 6 347 179
+642ca a 348 179
+642d4 4 347 179
+642d8 8 350 179
+FUNC 642e0 1c 0 std::ctype<char>::do_tolower(char*, char const*) const
+642e0 6 352 179
+642e6 a 353 179
+642f0 4 352 179
+642f4 8 355 179
+FUNC 642fc 4 0 std::ctype<char>::do_narrow(char, char) const
+FUNC 642fc 4 0 std::ctype<char>::do_widen(char) const
+642fc 4 456 179
+FUNC 642fc 4 0 std::ctype<wchar_t>::do_widen(char) const
+FUNC 64300 14 0 std::ctype<wchar_t>::do_toupper(wchar_t) const
+64300 4 426 179
+64304 6 425 179
+6430a a 427 179
+FUNC 64314 24 0 std::ctype<wchar_t>::do_toupper(wchar_t*, wchar_t const*) const
+64314 4 431 179
+64318 4 433 179
+6431c 4 432 179
+64320 2 434 179
+64322 4 433 179
+64326 2 431 179
+64328 4 434 179
+6432c 2 431 179
+6432e a 437 179
+FUNC 64338 14 0 std::ctype<wchar_t>::do_tolower(wchar_t) const
+64338 4 441 179
+6433c 6 440 179
+64342 a 442 179
+FUNC 6434c 24 0 std::ctype<wchar_t>::do_tolower(wchar_t*, wchar_t const*) const
+6434c 4 446 179
+64350 4 448 179
+64354 4 447 179
+64358 2 449 179
+6435a 4 448 179
+6435e 2 446 179
+64360 4 449 179
+64364 2 446 179
+64366 a 452 179
+FUNC 64370 12 0 std::ctype<wchar_t>::do_widen(char const*, char const*, wchar_t*) const
+64370 2 460 179
+64372 8 462 179
+6437a 4 461 179
+6437e 4 464 179
+FUNC 64384 c 0 std::ctype<wchar_t>::do_narrow(wchar_t, char) const
+64384 2 467 179
+64386 8 467 179
+6438e 2 467 179
+FUNC 64390 24 0 std::ctype<wchar_t>::do_narrow(wchar_t const*, wchar_t const*, char, char*) const
+64390 2 472 179
+64392 2 471 179
+64394 2 471 179
+64396 2 472 179
+64398 4 473 179
+6439c 2 474 179
+6439e 8 474 179
+643a6 2 472 179
+643a8 4 474 179
+643ac 2 472 179
+643ae 6 478 179
+FUNC 643b4 1c 0 std::ctype<wchar_t>::~ctype
+643b4 4 391 179
+643b8 18 391 179
+FUNC 643d0 12 0 std::ctype<wchar_t>::~ctype
+643d0 2 391 179
+643d2 6 391 179
+643d8 6 391 179
+643de 4 391 179
+FUNC 643e4 12 0 std::ctype<char>::do_narrow(char const*, char const*, char, char*) const
+643e4 2 370 179
+643e6 2 370 179
+643e8 4 224 200
+643ec 6 224 200
+643f2 4 373 179
+FUNC 643f8 12 0 std::ctype<char>::do_widen(char const*, char const*, char*) const
+643f8 2 362 179
+643fa 2 362 179
+643fc 4 224 200
+64400 6 224 200
+64406 4 365 179
+FUNC 6440c 28 0 std::ctype<char>::~ctype
+6440c 2 322 179
+6440e 2 323 179
+64410 6 322 179
+64416 6 322 179
+6441c 2 323 179
+6441e 4 324 179
+64422 4 324 179
+64426 e 325 179
+FUNC 64434 12 0 std::ctype<char>::~ctype
+64434 2 322 179
+64436 2 322 179
+64438 4 325 179
+6443c 6 325 179
+64442 4 325 179
+FUNC 64448 c 0 std::ctype<char>::classic_table()
+64448 4 192 179
+6444c 8 193 179
+FUNC 64454 2a 0 std::ctype<wchar_t>::do_is(wchar_t const*, wchar_t const*, std::ctype_base::mask*) const
+64454 2 400 179
+64456 6 400 179
+6445c 4 402 179
+64460 4 404 179
+64464 4 405 179
+64468 2 406 179
+6446a 2 406 179
+6446c 6 406 179
+64472 2 404 179
+64474 4 406 179
+64478 2 404 179
+6447a 4 409 179
+FUNC 64480 20 0 std::ctype<wchar_t>::do_is(std::ctype_base::mask, wchar_t) const
+64480 2 394 179
+64482 4 394 179
+64486 4 395 179
+6448a 4 396 179
+6448e 4 396 179
+64492 a 394 179
+6449c 2 396 179
+6449e 2 397 179
+FUNC 644a0 44 0 std::ctype<char>::ctype
+644a0 2 86 218
+644a2 2 316 179
+644a4 2 316 179
+644a6 4 86 218
+644aa 4 340 240
+644ae 2 457 240
+644b0 2 316 179
+644b2 2 340 240
+644b4 2 316 179
+644b6 4 340 240
+644ba 2 86 218
+644bc a 319 179
+644c6 2 319 179
+644c8 2 319 179
+644ca 2 319 179
+644cc 2 319 179
+644ce 4 320 179
+644d2 4 319 179
+644d6 2 319 179
+644d8 2 319 179
+644da 2 320 179
+644dc 2 319 179
+644de 6 320 179
+FUNC 644e4 aa 0 wchar_t const* std::find_if<wchar_t const*, std::_Ctype_w_is_mask>(wchar_t const*, wchar_t const*, std::_Ctype_w_is_mask)
+644e4 2 162 199
+644e6 2 214 199
+644e8 4 162 199
+644ec 2 164 199
+644ee 4 217 199
+644f2 2 164 199
+644f4 2 165 199
+644f6 4 385 179
+644fa 8 385 179
+64502 4 218 199
+64506 2 168 199
+64508 2 214 199
+6450a 4 385 179
+6450e 8 385 179
+64516 4 166 199
+6451a 2 171 199
+6451c 4 385 179
+64520 8 385 179
+64528 4 171 199
+6452c 2 174 199
+6452e 4 385 179
+64532 8 385 179
+6453a 4 174 199
+6453e 2 214 199
+64540 8 164 199
+64548 c 178 199
+64554 4 190 199
+64558 2 180 199
+6455a 4 385 179
+6455e 2 181 199
+64560 2 183 199
+64562 4 385 179
+64566 2 184 199
+64568 2 186 199
+6456a 4 385 179
+6456e 4 385 179
+64572 8 190 199
+6457a 14 385 179
+FUNC 64590 22 0 std::ctype<wchar_t>::do_scan_is(std::ctype_base::mask, wchar_t const*, wchar_t const*) const
+64590 4 413 179
+64594 6 413 179
+6459a c 414 179
+645a6 4 383 179
+645aa 4 414 179
+645ae 4 415 179
+FUNC 645b4 ce 0 wchar_t const* std::find_if<wchar_t const*, std::unary_negate<std::_Ctype_w_is_mask> >(wchar_t const*, wchar_t const*, std::unary_negate<std::_Ctype_w_is_mask>)
+645b4 2 162 199
+645b6 2 214 199
+645b8 4 162 199
+645bc 2 164 199
+645be 4 217 199
+645c2 2 164 199
+645c4 2 481 179
+645c6 4 385 179
+645ca 8 385 179
+645d2 2 481 179
+645d4 2 166 199
+645d6 6 385 179
+645dc 2 166 199
+645de 2 385 179
+645e0 8 385 179
+645e8 2 481 179
+645ea 4 385 179
+645ee 8 385 179
+645f6 2 481 179
+645f8 4 385 179
+645fc 4 385 179
+64600 4 214 199
+64604 4 385 179
+64608 4 164 199
+6460c 2 481 179
+6460e 4 385 179
+64612 4 385 179
+64616 4 214 199
+6461a 4 385 179
+6461e 2 481 179
+64620 2 385 179
+64622 2 166 199
+64624 4 385 179
+64628 2 166 199
+6462a 4 218 199
+6462e 4 164 199
+64632 a 178 199
+6463c 4 190 199
+64640 2 178 199
+64642 2 481 179
+64644 4 385 179
+64648 4 385 179
+6464c 8 190 199
+64654 6 171 199
+6465a 6 174 199
+64660 2 481 179
+64662 4 385 179
+64666 8 385 179
+6466e 2 181 199
+64670 2 481 179
+64672 4 385 179
+64676 8 385 179
+6467e 4 184 199
+FUNC 64684 22 0 std::ctype<wchar_t>::do_scan_not(std::ctype_base::mask, wchar_t const*, wchar_t const*) const
+64684 4 420 179
+64688 6 420 179
+6468e 4 421 179
+64692 4 421 179
+64696 2 146 209
+64698 2 421 179
+6469a 2 421 179
+6469c 2 146 209
+6469e 4 421 179
+646a2 4 422 179
+FUNC 646a8 4 0 std::moneypunct<char, false>::do_decimal_point() const
+FUNC 646a8 4 0 std::moneypunct<char, false>::do_thousands_sep() const
+FUNC 646a8 4 0 std::moneypunct<char, true>::do_decimal_point() const
+646a8 4 53 189
+FUNC 646a8 4 0 std::moneypunct<char, true>::do_thousands_sep() const
+FUNC 646a8 4 0 std::moneypunct<wchar_t, false>::do_decimal_point() const
+FUNC 646a8 4 0 std::moneypunct<wchar_t, false>::do_thousands_sep() const
+FUNC 646a8 4 0 std::moneypunct<wchar_t, true>::do_decimal_point() const
+FUNC 646a8 4 0 std::moneypunct<wchar_t, true>::do_thousands_sep() const
+FUNC 646ac 2c 0 std::moneypunct<char, false>::do_pos_format() const
+646ac 2 73 189
+646ae 2 114 189
+646b0 4 114 189
+646b4 1c 114 189
+646d0 8 94 189
+FUNC 646ac 2c 0 std::moneypunct<char, true>::do_pos_format() const
+FUNC 646ac 2c 0 std::moneypunct<wchar_t, false>::do_pos_format() const
+FUNC 646ac 2c 0 std::moneypunct<wchar_t, true>::do_pos_format() const
+FUNC 646d8 2c 0 std::moneypunct<char, false>::do_neg_format() const
+646d8 2 59 189
+646da 2 59 189
+646dc 4 96 189
+646e0 1c 116 189
+646fc 8 59 189
+FUNC 646d8 2c 0 std::moneypunct<char, true>::do_neg_format() const
+FUNC 646d8 2c 0 std::moneypunct<wchar_t, false>::do_neg_format() const
+FUNC 646d8 2c 0 std::moneypunct<wchar_t, true>::do_neg_format() const
+FUNC 64704 1c 0 std::moneypunct<wchar_t, false>::~moneypunct
+64704 4 100 189
+64708 18 100 189
+FUNC 64720 12 0 std::moneypunct<wchar_t, false>::~moneypunct
+64720 2 100 189
+64722 6 100 189
+64728 6 100 189
+6472e 4 100 189
+FUNC 64734 1c 0 std::moneypunct<wchar_t, true>::~moneypunct
+64734 4 80 189
+64738 18 80 189
+FUNC 64750 12 0 std::moneypunct<wchar_t, true>::~moneypunct
+64750 2 80 189
+64752 6 80 189
+64758 6 80 189
+6475e 4 80 189
+FUNC 64764 1c 0 std::moneypunct<char, false>::~moneypunct
+64764 4 64 189
+64768 18 64 189
+FUNC 64780 12 0 std::moneypunct<char, false>::~moneypunct
+64780 2 64 189
+64782 6 64 189
+64788 6 64 189
+6478e 4 64 189
+FUNC 64794 1c 0 std::moneypunct<char, true>::~moneypunct
+64794 4 50 189
+64798 18 50 189
+FUNC 647b0 12 0 std::moneypunct<char, true>::~moneypunct
+647b0 2 50 189
+647b2 6 50 189
+647b8 6 50 189
+647be 4 50 189
+FUNC 647c4 44 0 std::moneypunct<char, true>::moneypunct
+647c4 2 48 189
+647c6 2 48 189
+647c8 2 340 240
+647ca 2 48 189
+647cc 2 86 218
+647ce 4 340 240
+647d2 4 86 218
+647d6 2 457 240
+647d8 4 340 240
+647dc 2 86 218
+647de 2 28 189
+647e0 2 27 189
+647e2 4 48 189
+647e6 2 29 189
+647e8 2 30 189
+647ea 2 48 189
+647ec 2 28 189
+647ee 2 33 189
+647f0 2 49 189
+647f2 2 27 189
+647f4 2 48 189
+647f6 2 29 189
+647f8 2 30 189
+647fa 2 32 189
+647fc 2 34 189
+647fe 2 35 189
+64800 8 49 189
+FUNC 64808 44 0 std::moneypunct<char, false>::moneypunct
+64808 2 62 189
+6480a 2 62 189
+6480c 2 340 240
+6480e 2 62 189
+64810 2 86 218
+64812 4 340 240
+64816 4 86 218
+6481a 2 457 240
+6481c 4 340 240
+64820 2 86 218
+64822 2 28 189
+64824 2 27 189
+64826 4 62 189
+6482a 2 29 189
+6482c 2 30 189
+6482e 2 62 189
+64830 2 28 189
+64832 2 33 189
+64834 2 63 189
+64836 2 27 189
+64838 2 62 189
+6483a 2 29 189
+6483c 2 30 189
+6483e 2 32 189
+64840 2 34 189
+64842 2 35 189
+64844 8 63 189
+FUNC 6484c 44 0 std::moneypunct<wchar_t, true>::moneypunct
+6484c 2 78 189
+6484e 2 78 189
+64850 2 340 240
+64852 2 78 189
+64854 2 86 218
+64856 4 340 240
+6485a 4 86 218
+6485e 2 457 240
+64860 4 340 240
+64864 2 86 218
+64866 2 28 189
+64868 2 27 189
+6486a 4 78 189
+6486e 2 29 189
+64870 2 30 189
+64872 2 78 189
+64874 2 28 189
+64876 2 33 189
+64878 2 79 189
+6487a 2 27 189
+6487c 2 78 189
+6487e 2 29 189
+64880 2 30 189
+64882 2 32 189
+64884 2 34 189
+64886 2 35 189
+64888 8 79 189
+FUNC 64890 44 0 std::moneypunct<wchar_t, false>::moneypunct
+64890 2 98 189
+64892 2 98 189
+64894 2 340 240
+64896 2 98 189
+64898 2 86 218
+6489a 4 340 240
+6489e 4 86 218
+648a2 2 457 240
+648a4 4 340 240
+648a8 2 86 218
+648aa 2 28 189
+648ac 2 27 189
+648ae 4 98 189
+648b2 2 29 189
+648b4 2 30 189
+648b6 2 98 189
+648b8 2 28 189
+648ba 2 33 189
+648bc 2 99 189
+648be 2 27 189
+648c0 2 98 189
+648c2 2 29 189
+648c4 2 30 189
+648c6 2 32 189
+648c8 2 34 189
+648ca 2 35 189
+648cc 8 99 189
+FUNC 648d4 1c 0 std::moneypunct<char, false>::do_curr_symbol() const
+FUNC 648d4 1c 0 std::moneypunct<char, false>::do_grouping() const
+648d4 6 56 189
+648da 16 104 189
+FUNC 648d4 1c 0 std::moneypunct<char, false>::do_negative_sign() const
+FUNC 648d4 1c 0 std::moneypunct<char, false>::do_positive_sign() const
+FUNC 648d4 1c 0 std::moneypunct<char, true>::do_curr_symbol() const
+FUNC 648d4 1c 0 std::moneypunct<char, true>::do_grouping() const
+FUNC 648d4 1c 0 std::moneypunct<char, true>::do_negative_sign() const
+FUNC 648d4 1c 0 std::moneypunct<char, true>::do_positive_sign() const
+FUNC 648d4 1c 0 std::moneypunct<wchar_t, false>::do_grouping() const
+FUNC 648d4 1c 0 std::moneypunct<wchar_t, true>::do_grouping() const
+FUNC 648f0 5c 0 std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::basic_string
+648f0 2 639 236
+648f2 2 639 236
+648f4 2 112 238
+648f6 2 264 246
+648f8 2 481 201
+648fa 2 639 236
+648fc 4 264 246
+64900 4 643 236
+64904 2 379 237
+64906 4 378 237
+6490a 6 379 237
+64910 2 107 243
+64912 2 66 238
+64914 2 107 243
+64916 8 106 243
+6491e 2 107 243
+64920 2 380 237
+64922 4 101 205
+64926 4 644 236
+6492a 2 64 238
+6492c 4 96 238
+64930 2 96 238
+64932 4 97 238
+64936 4 323 201
+6493a 4 161 201
+6493e 4 135 222
+64942 a 161 201
+FUNC 6494c 1c 0 std::moneypunct<wchar_t, false>::do_curr_symbol() const
+FUNC 6494c 1c 0 std::moneypunct<wchar_t, false>::do_negative_sign() const
+6494c 6 110 189
+64952 16 110 189
+FUNC 6494c 1c 0 std::moneypunct<wchar_t, false>::do_positive_sign() const
+FUNC 6494c 1c 0 std::moneypunct<wchar_t, true>::do_curr_symbol() const
+FUNC 6494c 1c 0 std::moneypunct<wchar_t, true>::do_negative_sign() const
+FUNC 6494c 1c 0 std::moneypunct<wchar_t, true>::do_positive_sign() const
+FUNC 64968 64 0 std::priv::__valid_grouping(char const*, char const*, char const*, char const*)
+64968 4 40 190
+6496c 2 39 190
+6496e 14 40 190
+64982 4 42 190
+64986 4 44 190
+6498a 8 45 190
+64992 4 38 190
+64996 e 45 190
+649a4 2 47 190
+649a6 2 48 190
+649a8 4 48 190
+649ac 4 44 190
+649b0 c 51 190
+649bc 4 52 190
+649c0 4 40 190
+649c4 8 46 190
+FUNC 649cc c 0 std::priv::__digit_val_table(unsigned int)
+649cc 4 66 190
+649d0 2 66 190
+649d2 6 67 190
+FUNC 649d8 c 0 std::priv::__narrow_atoms()
+649d8 4 70 190
+649dc 8 70 190
+FUNC 649e4 9c 0 wchar_t const* std::find<wchar_t const*, wchar_t>(wchar_t const*, wchar_t const*, wchar_t const&)
+649e4 2 115 199
+649e6 2 221 199
+649e8 4 115 199
+649ec 4 117 199
+649f0 8 118 199
+649f8 6 121 199
+649fe 6 124 199
+64a04 4 127 199
+64a08 4 127 199
+64a0c 4 127 199
+64a10 6 118 199
+64a16 6 121 199
+64a1c 2 124 199
+64a1e 2 124 199
+64a20 4 124 199
+64a24 6 127 199
+64a2a 2 221 199
+64a2c 2 117 199
+64a2e 4 221 199
+64a32 6 117 199
+64a38 a 131 199
+64a42 4 143 199
+64a46 2 131 199
+64a48 4 224 199
+64a4c 2 131 199
+64a4e 6 136 199
+64a54 2 137 199
+64a56 2 139 199
+64a58 8 143 199
+64a60 4 131 199
+64a64 4 124 199
+64a68 4 127 199
+64a6c 4 119 199
+64a70 8 133 199
+64a78 4 134 199
+64a7c 4 119 199
+FUNC 64a80 2a 0 std::priv::__get_fdigit(wchar_t&, wchar_t const*)
+64a80 2 78 190
+64a82 4 79 190
+64a86 4 78 190
+64a8a a 79 190
+64a94 4 80 190
+64a98 2 81 190
+64a9a 2 82 190
+64a9c 8 81 190
+64aa4 2 82 190
+64aa6 2 85 190
+64aa8 2 86 190
+FUNC 64aac 14 0 std::priv::__get_fdigit_or_sep(wchar_t&, wchar_t, wchar_t const*)
+64aac 6 90 190
+64ab2 2 95 190
+64ab4 4 95 190
+64ab8 4 91 190
+64abc 4 96 190
+FUNC 64ac0 c 0 std::priv::__hex_char_table_lo()
+64ac0 4 119 192
+64ac4 8 119 192
+FUNC 64acc c 0 std::priv::__hex_char_table_hi()
+64acc 4 122 192
+64ad0 8 122 192
+FUNC 64ad8 9a 0 std::priv::__insert_grouping(char*, char*, std::string const&, char, char, char, int)
+64ad8 4 136 192
+64adc 2 36 192
+64ade 2 136 192
+64ae0 a 136 192
+64aea 2 36 192
+64aec a 41 192
+64af6 8 41 192
+64afe 4 39 192
+64b02 4 52 192
+64b06 6 46 192
+64b0c 2 49 192
+64b0e 2 65 238
+64b10 4 57 192
+64b14 4 400 237
+64b18 2 53 192
+64b1a a 54 192
+64b24 2 57 192
+64b26 4 62 192
+64b2a e 57 192
+64b38 2 57 192
+64b3a 2 57 192
+64b3c 2 63 192
+64b3e 2 255 200
+64b40 2 135 192
+64b42 2 256 200
+64b44 4 256 200
+64b48 2 256 200
+64b4a 6 256 200
+64b50 6 65 192
+64b56 2 42 192
+64b58 2 43 192
+64b5a 4 42 192
+64b5e a 68 192
+64b68 6 139 192
+64b6e 4 37 192
+FUNC 64b74 b4 0 std::priv::__insert_grouping(wchar_t*, wchar_t*, std::string const&, wchar_t, wchar_t, wchar_t, int)
+64b74 4 151 192
+64b78 2 36 192
+64b7a 2 151 192
+64b7c a 151 192
+64b86 2 36 192
+64b88 8 41 192
+64b90 6 41 192
+64b96 4 39 192
+64b9a 4 43 192
+64b9e 2 52 192
+64ba0 4 43 192
+64ba4 4 46 192
+64ba8 2 49 192
+64baa 6 46 192
+64bb0 4 57 192
+64bb4 2 53 192
+64bb6 6 54 192
+64bbc 2 57 192
+64bbe 4 57 192
+64bc2 4 62 192
+64bc6 10 57 192
+64bd6 2 63 192
+64bd8 2 256 200
+64bda 2 255 200
+64bdc 2 149 192
+64bde 2 256 200
+64be0 4 256 200
+64be4 2 256 200
+64be6 10 256 200
+64bf6 2 53 192
+64bf8 4 65 192
+64bfc 4 57 192
+64c00 6 54 192
+64c06 4 57 192
+64c0a c 68 192
+64c16 6 154 192
+64c1c 2 42 192
+64c1e 2 43 192
+64c20 4 42 192
+64c24 4 37 192
+FUNC 64c28 126 0 char* std::priv::__write_integer_backward<long>(char*, int, long)
+64c28 8 304 225
+64c30 2 304 225
+64c32 2 307 225
+64c34 4 309 225
+64c38 4 308 225
+64c3c 4 309 225
+64c40 4 308 225
+64c44 2 309 225
+64c46 8 368 225
+64c4e c 314 225
+64c5a 2 278 225
+64c5c 4 279 225
+64c60 2 278 225
+64c62 2 279 225
+64c64 2 304 225
+64c66 c 282 225
+64c72 6 281 225
+64c78 6 282 225
+64c7e 2 281 225
+64c80 4 282 225
+64c84 8 281 225
+64c8c 6 281 225
+64c92 2 282 225
+64c94 6 284 225
+64c9a a 285 225
+64ca4 4 333 225
+64ca8 2 333 225
+64caa 2 333 225
+64cac 6 333 225
+64cb2 4 339 225
+64cb6 2 304 225
+64cb8 2 339 225
+64cba 2 339 225
+64cbc 4 340 225
+64cc0 6 339 225
+64cc6 4 340 225
+64cca 4 339 225
+64cce 4 339 225
+64cd2 4 340 225
+64cd6 2 339 225
+64cd8 6 342 225
+64cde 2 343 225
+64ce0 6 344 225
+64ce6 4 343 225
+64cea 4 344 225
+64cee a 310 225
+64cf8 8 279 225
+64d00 4 322 225
+64d04 2 304 225
+64d06 2 322 225
+64d08 8 322 225
+64d10 8 323 225
+64d18 4 322 225
+64d1c 4 322 225
+64d20 4 323 225
+64d24 2 322 225
+64d26 6 326 225
+64d2c a 327 225
+64d36 6 286 225
+64d3c a 287 225
+64d46 8 333 225
+FUNC 64d50 24 0 std::priv::__write_integer(char*, int, long)
+64d50 4 125 192
+64d54 2 125 192
+64d56 6 128 192
+64d5c 4 224 200
+64d60 2 128 192
+64d62 2 224 200
+64d64 a 224 200
+64d6e 6 130 192
+FUNC 64d74 10c 0 std::basic_string<char, std::char_traits<char>, std::priv::__iostring_allocator<char> >::_M_insert_aux(char*, char)
+64d74 4 64 238
+64d78 4 256 236
+64d7c 2 74 238
+64d7e 6 256 236
+64d84 2 74 238
+64d86 6 74 238
+64d8c 4 259 236
+64d90 4 101 205
+64d94 2 261 236
+64d96 4 168 246
+64d9a 2 261 236
+64d9c 6 168 246
+64da2 2 232 246
+64da4 4 263 236
+64da8 2 277 236
+64daa 4 263 236
+64dae 4 277 236
+64db2 6 74 238
+64db8 4 259 236
+64dbc 2 400 237
+64dbe 4 304 237
+64dc2 e 306 237
+64dd0 6 307 237
+64dd6 4 307 237
+64dda 4 64 213
+64dde 6 67 213
+64de4 2 64 213
+64de6 2 86 243
+64de8 2 86 243
+64dea 4 84 243
+64dee 2 86 243
+64df0 2 256 236
+64df2 2 84 243
+64df4 4 179 192
+64df8 2 86 243
+64dfa 4 146 205
+64dfe 4 86 243
+64e02 6 232 246
+64e08 4 86 243
+64e0c 4 86 243
+64e10 2 256 236
+64e12 2 86 243
+64e14 4 179 192
+64e18 4 146 205
+64e1c 6 86 243
+64e22 6 101 205
+64e28 4 64 238
+64e2c 4 96 238
+64e30 2 96 238
+64e32 6 97 238
+64e38 4 70 213
+64e3c 2 97 238
+64e3e 4 161 201
+64e42 4 135 222
+64e46 4 274 236
+64e4a 4 164 238
+64e4e 2 160 238
+64e50 2 277 236
+64e52 4 165 238
+64e56 4 277 236
+64e5a 4 307 237
+64e5e e 134 222
+64e6c 6 161 201
+64e72 e 600 236
+FUNC 64e80 12a 0 std::basic_string<wchar_t, std::char_traits<wchar_t>, std::priv::__iostring_allocator<wchar_t> >::_M_insert_aux(wchar_t*, wchar_t)
+64e80 4 256 236
+64e84 2 256 236
+64e86 4 64 238
+64e8a 4 256 236
+64e8e 6 74 238
+64e94 a 74 238
+64e9e 4 259 236
+64ea2 2 261 236
+64ea4 2 101 205
+64ea6 2 261 236
+64ea8 2 101 205
+64eaa 2 249 246
+64eac 2 261 236
+64eae 4 249 246
+64eb2 4 263 236
+64eb6 2 267 246
+64eb8 2 263 236
+64eba 2 277 236
+64ebc 2 263 236
+64ebe 4 277 236
+64ec2 2 400 237
+64ec4 8 307 237
+64ecc 2 400 237
+64ece e 306 237
+64edc 4 307 237
+64ee0 4 307 237
+64ee4 c 64 213
+64ef0 8 67 213
+64ef8 8 86 243
+64f00 4 86 243
+64f04 4 84 243
+64f08 6 86 243
+64f0e 2 84 243
+64f10 4 179 192
+64f14 2 86 243
+64f16 4 146 205
+64f1a 6 86 243
+64f20 4 86 243
+64f24 6 267 246
+64f2a 4 86 243
+64f2e a 86 243
+64f38 4 179 192
+64f3c 2 86 243
+64f3e 4 146 205
+64f42 6 86 243
+64f48 2 101 205
+64f4a 2 96 238
+64f4c 4 101 205
+64f50 2 96 238
+64f52 2 96 238
+64f54 6 97 238
+64f5a 4 70 213
+64f5e 2 97 238
+64f60 4 323 201
+64f64 4 161 201
+64f68 4 161 201
+64f6c 4 274 236
+64f70 4 164 238
+64f74 2 160 238
+64f76 2 277 236
+64f78 4 165 238
+64f7c 4 277 236
+64f80 4 307 237
+64f84 12 134 222
+64f96 e 74 238
+64fa4 6 135 222
+FUNC 64fac 78 0 std::basic_string<char, std::char_traits<char>, std::priv::__iostring_allocator<char> >::_M_reserve(unsigned int)
+64fac 4 64 213
+64fb0 2 170 236
+64fb2 4 170 236
+64fb6 6 67 213
+64fbc 2 64 213
+64fbe 8 134 222
+64fc6 4 66 238
+64fca 4 86 243
+64fce 2 86 243
+64fd0 4 84 243
+64fd4 2 86 243
+64fd6 2 170 236
+64fd8 2 84 243
+64fda 4 179 192
+64fde 4 146 205
+64fe2 4 86 243
+64fe6 4 101 205
+64fea 4 64 238
+64fee 4 96 238
+64ff2 2 96 238
+64ff4 6 97 238
+64ffa 4 70 213
+64ffe 2 97 238
+65000 4 161 201
+65004 4 161 201
+65008 2 175 236
+6500a 2 164 238
+6500c 2 160 238
+6500e 4 165 238
+65012 2 176 236
+65014 4 135 222
+65018 2 175 236
+6501a 2 164 238
+6501c 2 160 238
+6501e 4 165 238
+65022 2 176 236
+FUNC 65024 e4 0 std::priv::__insert_grouping(std::priv::__basic_iostring<char>&, unsigned int, std::string const&, char, char, char, int)
+65024 4 143 192
+65028 4 143 192
+6502c 4 65 238
+65030 2 400 237
+65032 2 143 192
+65034 2 400 237
+65036 4 80 192
+6503a 2 84 192
+6503c 2 92 192
+6503e 4 86 192
+65042 2 97 192
+65044 4 83 192
+65048 2 86 192
+6504a 2 94 192
+6504c 2 86 192
+6504e 2 101 205
+65050 4 86 192
+65054 a 83 192
+6505e 6 90 192
+65064 2 65 238
+65066 4 400 237
+6506a 2 98 192
+6506c 6 99 192
+65072 2 102 192
+65074 4 66 238
+65078 e 102 192
+65086 4 102 192
+6508a 2 90 238
+6508c 2 108 192
+6508e 4 660 237
+65092 a 665 237
+6509c 4 74 238
+650a0 2 74 238
+650a2 8 74 238
+650aa 4 535 237
+650ae 4 101 205
+650b2 2 90 238
+650b4 4 232 246
+650b8 c 539 237
+650c4 2 400 237
+650c6 4 304 237
+650ca a 306 237
+650d4 a 307 237
+650de a 536 237
+650e8 2 307 237
+650ea 2 536 237
+650ec 6 307 237
+650f2 8 536 237
+650fa e 600 236
+FUNC 65108 b4 0 std::basic_string<wchar_t, std::char_traits<wchar_t>, std::priv::__iostring_allocator<wchar_t> >::_M_reserve(unsigned int)
+65108 2 170 236
+6510a 2 67 213
+6510c 4 64 213
+65110 2 170 236
+65112 4 67 213
+65116 2 64 213
+65118 6 302 201
+6511e 2 306 201
+65120 8 134 222
+65128 2 86 243
+6512a 4 66 238
+6512e 8 86 243
+65136 4 86 243
+6513a 4 84 243
+6513e 6 86 243
+65144 2 84 243
+65146 4 179 192
+6514a 2 86 243
+6514c 4 146 205
+65150 6 86 243
+65156 2 101 205
+65158 2 96 238
+6515a 2 101 205
+6515c 2 96 238
+6515e 2 96 238
+65160 6 97 238
+65166 4 70 213
+6516a 2 97 238
+6516c 4 323 201
+65170 4 161 201
+65174 4 161 201
+65178 2 175 236
+6517a 2 164 238
+6517c 2 160 238
+6517e 4 165 238
+65182 2 176 236
+65184 4 135 222
+65188 2 175 236
+6518a 2 164 238
+6518c 2 160 238
+6518e 4 165 238
+65192 2 176 236
+65194 28 303 201
+FUNC 651bc 10c 0 std::priv::__insert_grouping(std::priv::__basic_iostring<wchar_t>&, unsigned int, std::string const&, wchar_t, wchar_t, wchar_t, int)
+651bc 4 159 192
+651c0 4 159 192
+651c4 4 65 238
+651c8 2 400 237
+651ca 2 159 192
+651cc 2 400 237
+651ce 6 80 192
+651d4 2 84 192
+651d6 2 97 192
+651d8 2 86 192
+651da 4 92 192
+651de 4 83 192
+651e2 4 307 237
+651e6 4 86 192
+651ea 2 90 192
+651ec e 86 192
+651fa a 83 192
+65204 4 307 237
+65208 4 90 192
+6520c 2 94 192
+6520e 4 400 237
+65212 2 98 192
+65214 6 99 192
+6521a 2 102 192
+6521c 4 66 238
+65220 e 102 192
+6522e 4 102 192
+65232 4 90 238
+65236 4 108 192
+6523a 4 660 237
+6523e 12 665 237
+65250 4 74 238
+65254 6 74 238
+6525a 4 535 237
+6525e 2 267 246
+65260 4 101 205
+65264 4 267 246
+65268 8 539 237
+65270 8 74 238
+65278 4 535 237
+6527c 6 400 237
+65282 a 306 237
+6528c e 307 237
+6529a 10 536 237
+652aa e 307 237
+652b8 10 536 237
+FUNC 652c8 400 0 std::priv::_Stl_tenscale
+652c8 4 269 191
+652cc 2 280 191
+652ce 2 269 191
+652d0 6 269 191
+652d6 4 280 191
+652da 8 281 191
+652e2 4 282 191
+652e6 4 276 191
+652ea 2 285 191
+652ec 2 284 191
+652ee 6 283 191
+652f4 2 288 191
+652f6 4 289 191
+652fa 6 303 191
+65300 6 291 191
+65306 4 309 191
+6530a 2 291 191
+6530c 2 307 191
+6530e 2 309 191
+65310 2 291 191
+65312 2 307 191
+65314 2 291 191
+65316 4 309 191
+6531a 18 238 191
+65332 8 246 191
+6533a 6 248 191
+65340 a 246 191
+6534a 2 247 191
+6534c 6 254 191
+65352 10 246 191
+65362 2 254 191
+65364 14 309 191
+65378 8 303 191
+65380 2 307 191
+65382 4 122 191
+65386 2 291 191
+65388 4 122 191
+6538c 4 306 191
+65390 4 124 191
+65394 4 307 191
+65398 6 291 191
+6539e 2 306 191
+653a0 4 305 191
+653a4 4 122 191
+653a8 4 307 191
+653ac 4 122 191
+653b0 4 306 191
+653b4 4 307 191
+653b8 4 124 191
+653bc 4 307 191
+653c0 8 124 191
+653c8 2 125 191
+653ca 4 127 191
+653ce 4 130 191
+653d2 e 127 191
+653e0 4 130 191
+653e4 2 127 191
+653e6 6 130 191
+653ec 4 134 191
+653f0 4 130 191
+653f4 2 132 191
+653f6 8 130 191
+653fe 4 132 191
+65402 4 136 191
+65406 4 134 191
+6540a 4 136 191
+6540e 8 134 191
+65416 c 136 191
+65422 2 135 191
+65424 4 136 191
+65428 2 135 191
+6542a 2 136 191
+6542c 4 135 191
+65430 4 136 191
+65434 6 135 191
+6543a 2 136 191
+6543c 8 135 191
+65444 a 234 191
+6544e 4 251 191
+65452 6 254 191
+65458 2 233 191
+6545a 4 251 191
+6545e 2 254 191
+65460 1c 255 191
+6547c 18 255 191
+65494 c 258 191
+654a0 4 259 191
+654a4 4 258 191
+654a8 4 259 191
+654ac 2 309 191
+654ae 2 260 191
+654b0 2 309 191
+654b2 8 260 191
+654ba 10 309 191
+654ca e 303 191
+654d8 6 312 191
+654de 2 313 191
+654e0 2 314 191
+654e2 4 313 191
+654e6 4 314 191
+654ea 4 122 191
+654ee 8 314 191
+654f6 2 122 191
+654f8 4 314 191
+654fc 8 122 191
+65504 4 124 191
+65508 2 125 191
+6550a 4 127 191
+6550e 4 130 191
+65512 e 127 191
+65520 4 134 191
+65524 2 127 191
+65526 e 130 191
+65534 4 132 191
+65538 4 130 191
+6553c 2 136 191
+6553e 4 130 191
+65542 4 132 191
+65546 4 134 191
+6554a 4 136 191
+6554e 4 135 191
+65552 4 136 191
+65556 8 134 191
+6555e 6 136 191
+65564 6 135 191
+6556a 8 136 191
+65572 a 135 191
+6557c 8 234 191
+65584 12 238 191
+65596 a 246 191
+655a0 2 247 191
+655a2 4 248 191
+655a6 2 246 191
+655a8 4 248 191
+655ac 2 246 191
+655ae 8 254 191
+655b6 c 246 191
+655c2 2 254 191
+655c4 12 316 191
+655d6 8 320 191
+655de 2 289 191
+655e0 2 276 191
+655e2 2 289 191
+655e4 4 288 191
+655e8 28 238 191
+65610 8 243 191
+65618 2 233 191
+6561a 6 243 191
+65620 4 276 191
+65624 6 291 191
+6562a 2 292 191
+6562c 6 291 191
+65632 2 296 191
+65634 2 295 191
+65636 4 296 191
+6563a 2 251 191
+6563c 8 254 191
+65644 2 233 191
+65646 4 251 191
+6564a 2 254 191
+6564c 16 255 191
+65662 14 255 191
+65676 c 258 191
+65682 4 259 191
+65686 4 258 191
+6568a 2 259 191
+6568c 6 260 191
+65692 16 238 191
+656a8 8 243 191
+656b0 2 233 191
+656b2 16 243 191
+FUNC 656c8 4a8 0 std::priv::_Stl_string_to_double
+656c8 6 645 191
+656ce 2 655 191
+656d0 4 659 191
+656d4 2 655 191
+656d6 2 661 191
+656d8 4 658 191
+656dc 2 661 191
+656de 2 672 191
+656e0 2 669 191
+656e2 2 666 191
+656e4 2 673 191
+656e6 2 668 191
+656e8 4 674 191
+656ec 2 666 191
+656ee 4 685 191
+656f2 2 673 191
+656f4 2 674 191
+656f6 6 676 191
+656fc 2 674 191
+656fe 2 678 191
+65700 4 678 191
+65704 4 681 191
+65708 2 683 191
+6570a 4 690 191
+6570e 4 685 191
+65712 2 672 191
+65714 4 673 191
+65718 8 685 191
+65720 2 686 191
+65722 4 685 191
+65726 6 694 191
+6572c 18 698 191
+65744 2 701 191
+65746 18 702 191
+6575e 4 703 191
+65762 8 708 191
+6576a 4 710 191
+6576e 4 711 191
+65772 4 710 191
+65776 8 709 191
+6577e 2 714 191
+65780 2 715 191
+65782 2 717 191
+65784 2 722 191
+65786 8 723 191
+6578e 6 726 191
+65794 2 165 217
+65796 4 166 217
+6579a 4 165 217
+6579e 4 166 217
+657a2 4 167 217
+657a6 6 736 191
+657ac 4 737 191
+657b0 a 741 191
+657ba 4 724 191
+657be 8 736 191
+657c6 4 660 191
+657ca 6 658 191
+657d0 4 704 191
+657d4 2 701 191
+657d6 4 699 191
+657da 4 663 191
+657de 6 662 191
+657e4 2 706 191
+657e6 2 705 191
+657e8 4 706 191
+657ec 2 354 191
+657ee 8 357 191
+657f6 a 358 191
+65800 2 359 191
+65802 4 358 191
+65806 a 359 191
+65810 4 357 191
+65814 6 363 191
+6581a 14 372 191
+6582e 2c 373 191
+6585a 3c 374 191
+65896 3a 375 191
+658d0 3a 376 191
+6590a 3a 377 191
+65944 2c 378 191
+65970 4 381 191
+65974 2 270 191
+65976 26 381 191
+6599c 2 270 191
+6599e 4 272 191
+659a2 4 429 191
+659a6 8 430 191
+659ae 4 431 191
+659b2 c 432 191
+659be 2 441 191
+659c0 12 442 191
+659d2 a 429 191
+659dc 6 442 191
+659e2 c 443 191
+659ee 2 444 191
+659f0 4 443 191
+659f4 8 444 191
+659fc 2 446 191
+659fe a 445 191
+65a08 8 464 191
+65a10 4 469 191
+65a14 4 150 191
+65a18 2 469 191
+65a1a 14 150 191
+65a2e 4 167 217
+65a32 a 736 191
+65a3c 6 695 191
+65a42 4 377 191
+65a46 8 272 191
+65a4e 4 390 191
+65a52 8 392 191
+65a5a e 394 191
+65a68 a 398 191
+65a72 6 401 191
+65a78 4 406 191
+65a7c 16 412 191
+65a92 8 413 191
+65a9a c 412 191
+65aa6 e 413 191
+65ab4 e 412 191
+65ac2 2 413 191
+65ac4 8 412 191
+65acc 6 413 191
+65ad2 4 414 191
+65ad6 2 418 191
+65ad8 12 418 191
+65aea 8 418 191
+65af2 6 419 191
+65af8 4 420 191
+65afc 4 419 191
+65b00 18 420 191
+65b18 a 736 191
+65b22 2 165 217
+65b24 4 166 217
+65b28 4 165 217
+65b2c 4 166 217
+65b30 4 167 217
+65b34 a 736 191
+65b3e 4 418 191
+65b42 a 736 191
+65b4c 4 407 191
+65b50 8 409 191
+65b58 8 407 191
+65b60 2 408 191
+65b62 e 407 191
+FUNC 65b70 78 0 std::priv::_Initialize_get_float(std::ctype<wchar_t> const&, wchar_t&, wchar_t&, wchar_t&, wchar_t&, wchar_t*)
+65b70 6 86 191
+65b76 2 87 191
+65b78 2 86 191
+65b7a 4 206 206
+65b7e 2 86 191
+65b80 2 87 191
+65b82 2 86 191
+65b84 2 87 191
+65b86 2 86 191
+65b88 4 87 191
+65b8c 4 206 206
+65b90 4 87 191
+65b94 2 206 206
+65b96 4 87 191
+65b9a 2 206 206
+65b9c 2 87 191
+65b9e 8 206 206
+65ba6 2 88 191
+65ba8 a 206 206
+65bb2 4 89 191
+65bb6 a 206 206
+65bc0 4 90 191
+65bc4 4 206 206
+65bc8 2 209 206
+65bca 2 91 191
+65bcc 6 209 206
+65bd2 2 91 191
+65bd4 8 209 206
+65bdc c 93 191
+FUNC 65be8 16 0 std::priv::__string_to_float(std::priv::__basic_iostring<char> const&, float&)
+65be8 2 847 191
+65bea 2 847 191
+65bec 10 849 191
+65bfc 2 853 191
+FUNC 65c00 12 0 std::priv::__string_to_float(std::priv::__basic_iostring<char> const&, double&)
+65c00 2 857 191
+65c02 2 857 191
+65c04 c 859 191
+65c10 2 863 191
+FUNC 65c14 348 0 long double std::priv::_Stl_atodT<long double, ieee854_long_double, 16, 16383>(char*, int, int)
+65c14 2 488 191
+65c16 4 483 191
+65c1a 2 492 191
+65c1c 2 483 191
+65c1e 2 483 191
+65c20 8 492 191
+65c28 6 493 191
+65c2e 4 494 191
+65c32 4 493 191
+65c36 8 494 191
+65c3e 4 492 191
+65c42 8 497 191
+65c4a 4 507 191
+65c4e 2 508 191
+65c50 2 507 191
+65c52 2 508 191
+65c54 2 507 191
+65c56 4 511 191
+65c5a 12 507 191
+65c6c 2a 508 191
+65c96 30 509 191
+65cc6 2e 510 191
+65cf4 38 511 191
+65d2c 32 512 191
+65d5e 2a 513 191
+65d88 4 516 191
+65d8c 2 270 191
+65d8e 1c 517 191
+65daa 2 272 191
+65dac 8 517 191
+65db4 2 270 191
+65db6 4 272 191
+65dba 4 532 191
+65dbe 8 533 191
+65dc6 4 534 191
+65dca 8 535 191
+65dd2 2 545 191
+65dd4 12 546 191
+65de6 a 532 191
+65df0 6 546 191
+65df6 c 547 191
+65e02 4 571 191
+65e06 14 555 191
+65e1a 2 571 191
+65e1c 2 165 217
+65e1e 4 166 217
+65e22 4 165 217
+65e26 4 166 217
+65e2a 4 167 217
+65e2e 2 572 191
+65e30 4 512 191
+65e34 4 498 191
+65e38 6 641 191
+65e3e 4 579 191
+65e42 4 580 191
+65e46 6 584 191
+65e4c a 272 191
+65e56 4 527 191
+65e5a 8 529 191
+65e62 c 589 191
+65e6e 8 590 191
+65e76 4 635 191
+65e7a 4 636 191
+65e7e 6 640 191
+65e84 a 598 191
+65e8e 4 604 191
+65e92 a 607 191
+65e9c 2 608 191
+65e9e 16 613 191
+65eb4 8 614 191
+65ebc c 613 191
+65ec8 e 614 191
+65ed6 e 613 191
+65ee4 2 614 191
+65ee6 8 613 191
+65eee 6 614 191
+65ef4 4 615 191
+65ef8 4 619 191
+65efc 12 619 191
+65f0e 6 620 191
+65f14 4 621 191
+65f18 4 620 191
+65f1c 6 621 191
+65f22 4 620 191
+65f26 6 621 191
+65f2c 4 624 191
+65f30 2 625 191
+65f32 6 628 191
+65f38 8 619 191
+65f40 4 609 191
+65f44 8 611 191
+65f4c 8 609 191
+65f54 2 610 191
+65f56 6 609 191
+FUNC 65f5c 11c 0 long double std::priv::_Stl_string_to_doubleT<long double, ieee854_long_double, 16, 16383>(char const*)
+65f5c 6 749 191
+65f62 2 761 191
+65f64 4 765 191
+65f68 2 761 191
+65f6a 2 764 191
+65f6c 4 767 191
+65f70 2 778 191
+65f72 2 775 191
+65f74 2 779 191
+65f76 2 772 191
+65f78 2 774 191
+65f7a 4 780 191
+65f7e 2 772 191
+65f80 4 791 191
+65f84 2 779 191
+65f86 2 780 191
+65f88 6 782 191
+65f8e 2 780 191
+65f90 2 784 191
+65f92 4 784 191
+65f96 4 787 191
+65f9a 2 789 191
+65f9c 4 796 191
+65fa0 4 791 191
+65fa4 2 778 191
+65fa6 4 779 191
+65faa c 791 191
+65fb6 2 792 191
+65fb8 6 791 191
+65fbe 4 799 191
+65fc2 18 803 191
+65fda 2 806 191
+65fdc 18 807 191
+65ff4 4 808 191
+65ff8 8 813 191
+66000 4 815 191
+66004 4 816 191
+66008 4 815 191
+6600c 8 814 191
+66014 2 819 191
+66016 2 820 191
+66018 2 822 191
+6601a 2 826 191
+6601c 8 827 191
+66024 6 829 191
+6602a 6 165 217
+66030 8 166 217
+66038 4 167 217
+6603c 2 840 191
+6603e 4 840 191
+66042 6 841 191
+66048 6 828 191
+6604e 4 766 191
+66052 4 764 191
+66056 4 809 191
+6605a 2 806 191
+6605c 4 804 191
+66060 4 769 191
+66064 4 768 191
+66068 8 837 191
+66070 2 811 191
+66072 2 810 191
+66074 4 811 191
+FUNC 66078 12 0 std::priv::__string_to_float(std::priv::__basic_iostring<char> const&, long double&)
+66078 2 867 191
+6607a 2 867 191
+6607c c 874 191
+66088 2 876 191
+FUNC 6608c 88 0 std::priv::__fill_fmtbuf
+6608c 4 711 193
+66090 2 714 193
+66092 2 710 193
+66094 2 714 193
+66096 8 715 193
+6609e 2 712 193
+660a0 4 717 193
+660a4 2 715 193
+660a6 2 717 193
+660a8 a 718 193
+660b2 4 720 193
+660b6 6 721 193
+660bc 2 723 193
+660be 4 724 193
+660c2 c 726 193
+660ce 2 739 193
+660d0 4 739 193
+660d4 6 739 193
+660da 2 739 193
+660dc 4 743 193
+660e0 4 744 193
+660e4 4 714 193
+660e8 2 715 193
+660ea 2 714 193
+660ec 4 715 193
+660f0 4 735 193
+660f4 4 735 193
+660f8 6 735 193
+660fe 2 735 193
+66100 2 737 193
+66102 4 729 193
+66106 4 729 193
+6610a 6 729 193
+66110 2 729 193
+66112 2 730 193
+FUNC 66114 16a 0 char* std::find_if<char*, std::priv::GroupPos>(char*, char*, std::priv::GroupPos)
+66114 2 162 199
+66116 2 214 199
+66118 2 162 199
+6611a 4 164 199
+6611e 2 165 199
+66120 18 705 193
+66138 4 705 193
+6613c 2 168 199
+6613e 2 166 199
+66140 18 705 193
+66158 8 705 193
+66160 2 171 199
+66162 18 705 193
+6617a 4 705 193
+6617e 2 174 199
+66180 18 705 193
+66198 4 705 193
+6619c 2 214 199
+6619e 2 164 199
+661a0 2 214 199
+661a2 2 164 199
+661a4 2 165 199
+661a6 16 705 193
+661bc 4 705 193
+661c0 2 168 199
+661c2 2 214 199
+661c4 16 705 193
+661da 6 705 193
+661e0 2 171 199
+661e2 18 705 193
+661fa 2 171 199
+661fc 4 218 199
+66200 4 166 199
+66204 2 164 199
+66206 a 178 199
+66210 4 190 199
+66214 2 178 199
+66216 2 186 199
+66218 18 705 193
+66230 8 190 199
+66238 4 174 199
+6623c 2 180 199
+6623e 18 705 193
+66256 4 705 193
+6625a 2 181 199
+6625c 2 183 199
+6625e 18 705 193
+66276 4 705 193
+6627a 4 184 199
+FUNC 66280 11c 0 std::basic_string<char, std::char_traits<char>, std::priv::__iostring_allocator<char> >::_M_append(char const*, char const*)
+66280 2 197 236
+66282 8 196 236
+6628a 2 197 236
+6628c 4 64 238
+66290 4 198 236
+66294 4 74 238
+66298 6 74 238
+6629e 4 199 236
+662a2 2 210 236
+662a4 2 86 243
+662a6 4 86 243
+662aa 2 196 236
+662ac 4 86 243
+662b0 4 915 193
+662b4 2 86 243
+662b6 4 146 205
+662ba 4 86 243
+662be 6 101 205
+662c4 2 90 238
+662c6 2 915 193
+662c8 2 232 246
+662ca 6 214 236
+662d0 8 218 236
+662d8 2 400 237
+662da e 304 237
+662e8 a 306 237
+662f2 4 307 237
+662f6 4 307 237
+662fa 4 64 213
+662fe 6 67 213
+66304 2 64 213
+66306 2 86 243
+66308 4 84 243
+6630c 2 86 243
+6630e 2 196 236
+66310 2 84 243
+66312 4 915 193
+66316 4 146 205
+6631a a 86 243
+66324 6 196 236
+6632a 4 915 193
+6632e 2 86 243
+66330 4 146 205
+66334 4 86 243
+66338 4 101 205
+6633c 4 64 238
+66340 4 96 238
+66344 2 96 238
+66346 6 97 238
+6634c 4 70 213
+66350 2 97 238
+66352 4 161 201
+66356 4 135 222
+6635a 2 206 236
+6635c 2 164 238
+6635e 2 160 238
+66360 6 165 238
+66366 4 307 237
+6636a 16 134 222
+66380 8 74 238
+66388 6 161 201
+6638e e 600 236
+FUNC 6639c 138 0 std::priv::__get_floor_digits(std::priv::__basic_iostring<char>&, long double)
+6639c 6 844 193
+663a2 e 849 193
+663b0 2 844 193
+663b2 8 849 193
+663ba 8 853 193
+663c2 4 854 193
+663c6 4 470 237
+663ca 4 64 238
+663ce 2 355 216
+663d0 4 74 238
+663d4 6 74 238
+663da 4 472 237
+663de 2 400 237
+663e0 e 304 237
+663ee a 306 237
+663f8 4 307 237
+663fc 8 307 237
+66404 e 134 222
+66412 2 107 243
+66414 4 107 243
+66418 2 107 243
+6641a c 106 243
+66426 2 107 243
+66428 8 106 243
+66430 4 101 205
+66434 2 107 243
+66436 4 64 238
+6643a 4 96 238
+6643e 2 96 238
+66440 6 97 238
+66446 4 70 213
+6644a 2 97 238
+6644c 2 135 222
+6644e 4 161 201
+66452 4 135 222
+66456 2 479 237
+66458 2 164 238
+6645a 2 160 238
+6645c 4 165 238
+66460 6 870 193
+66466 6 915 193
+6646c 2 107 243
+6646e 2 232 246
+66470 2 90 238
+66472 2 107 243
+66474 2 483 237
+66476 a 106 243
+66480 4 101 205
+66484 8 485 237
+6648c 4 64 213
+66490 6 67 213
+66496 4 64 213
+6649a 4 161 201
+6649e 2 479 237
+664a0 2 164 238
+664a2 2 160 238
+664a4 6 165 238
+664aa 8 74 238
+664b2 6 229 246
+664b8 c 530 237
+664c4 10 600 236
+FUNC 664d4 220 0 std::priv::__convert_float_buffer(std::priv::__basic_iostring<char> const&, std::priv::__basic_iostring<wchar_t>&, std::ctype<wchar_t> const&, wchar_t, bool)
+664d4 6 875 193
+664da 6 875 193
+664e0 4 879 193
+664e4 4 65 238
+664e8 4 89 238
+664ec 4 879 193
+664f0 4 880 193
+664f4 c 881 193
+66500 4 307 237
+66504 2 874 193
+66506 4 307 237
+6650a 6 101 205
+66510 2 880 193
+66512 2 267 246
+66514 4 101 205
+66518 2 882 193
+6651a 4 267 246
+6651e 2 539 237
+66520 2 880 193
+66522 a 881 193
+6652c 8 206 206
+66534 4 64 238
+66538 2 74 238
+6653a 2 74 238
+6653c 2 206 206
+6653e 4 74 238
+66542 6 74 238
+66548 4 535 237
+6654c 2 400 237
+6654e 8 308 237
+66556 2 400 237
+66558 a 306 237
+66562 2 307 237
+66564 a 308 237
+6656e 2 307 237
+66570 6 308 237
+66576 2 536 237
+66578 2 882 193
+6657a 6 536 237
+66580 2 880 193
+66582 2 267 246
+66584 4 101 205
+66588 4 267 246
+6658c 2 539 237
+6658e 2 880 193
+66590 6 900 193
+66596 4 889 193
+6659a a 206 206
+665a4 4 64 238
+665a8 2 74 238
+665aa 2 206 206
+665ac 4 74 238
+665b0 8 74 238
+665b8 4 535 237
+665bc 2 267 246
+665be 4 101 205
+665c2 4 267 246
+665c6 2 539 237
+665c8 6 896 193
+665ce 4 307 237
+665d2 4 101 205
+665d6 6 307 237
+665dc 2 896 193
+665de 2 267 246
+665e0 2 896 193
+665e2 4 101 205
+665e6 2 896 193
+665e8 4 267 246
+665ec 2 896 193
+665ee 2 539 237
+665f0 2 896 193
+665f2 a 206 206
+665fc 4 64 238
+66600 2 74 238
+66602 2 74 238
+66604 2 206 206
+66606 2 74 238
+66608 6 74 238
+6660e 4 535 237
+66612 2 400 237
+66614 8 308 237
+6661c 2 400 237
+6661e a 306 237
+66628 2 307 237
+6662a a 308 237
+66634 2 307 237
+66636 6 308 237
+6663c a 536 237
+66646 14 74 238
+6665a 4 64 238
+6665e 4 74 238
+66662 6 74 238
+66668 4 535 237
+6666c 2 267 246
+6666e 4 101 205
+66672 2 894 193
+66674 6 267 246
+6667a 2 539 237
+6667c 4 894 193
+66680 2 400 237
+66682 8 307 237
+6668a 2 400 237
+6668c a 306 237
+66696 2 307 237
+66698 4 308 237
+6669c 2 307 237
+6669e a 536 237
+666a8 2 400 237
+666aa 8 307 237
+666b2 2 400 237
+666b4 a 306 237
+666be 2 307 237
+666c0 4 308 237
+666c4 2 307 237
+666c6 6 308 237
+666cc a 536 237
+666d6 c 74 238
+666e2 8 308 237
+666ea a 74 238
+FUNC 666f4 6a 0 std::basic_string<char, std::char_traits<char>, std::priv::__iostring_allocator<char> >::_M_assign(char const*, char const*)
+666f4 2 242 236
+666f6 2 242 236
+666f8 2 89 238
+666fa 2 243 236
+666fc 4 65 238
+66700 4 242 236
+66704 2 400 237
+66706 4 244 236
+6670a 2 168 246
+6670c 2 246 236
+6670e 4 803 237
+66712 2 168 246
+66714 2 806 237
+66716 2 168 246
+66718 6 806 237
+6671e 4 253 236
+66722 2 168 246
+66724 a 250 236
+6672e 4 253 236
+66732 c 168 246
+6673e 2 246 236
+66740 6 803 237
+66746 a 168 246
+66750 2 250 236
+66752 2 168 246
+66754 a 250 236
+FUNC 66760 54 0 std::priv::__write_floatT<long double>
+66760 c 749 193
+6676c 4 749 193
+66770 8 760 193
+66778 12 761 193
+6678a 6 229 246
+66790 c 355 237
+6679c 4 66 238
+667a0 c 763 193
+667ac 8 820 193
+FUNC 667b4 8 0 std::priv::__write_float(std::priv::__basic_iostring<char>&, int, int, long double)
+667b4 4 840 193
+667b8 4 840 193
+FUNC 667bc 54 0 std::priv::__write_floatT<double>
+667bc c 749 193
+667c8 4 749 193
+667cc 8 760 193
+667d4 12 761 193
+667e6 6 229 246
+667ec c 355 237
+667f8 4 66 238
+667fc c 763 193
+66808 8 820 193
+FUNC 66810 8 0 std::priv::__write_float(std::priv::__basic_iostring<char>&, int, int, double)
+66810 4 829 193
+66814 4 829 193
+FUNC 66818 4 0 std::numpunct<char>::do_decimal_point() const
+66818 4 34 194
+FUNC 66818 4 0 std::numpunct<wchar_t>::do_decimal_point() const
+FUNC 6681c 4 0 std::numpunct<char>::do_thousands_sep() const
+6681c 4 27 194
+FUNC 6681c 4 0 std::numpunct<wchar_t>::do_thousands_sep() const
+FUNC 66820 1c 0 std::numpunct<wchar_t>::~numpunct
+66820 4 39 194
+66824 18 39 194
+FUNC 6683c 12 0 std::numpunct<wchar_t>::~numpunct
+6683c 2 39 194
+6683e 6 39 194
+66844 6 39 194
+6684a 4 39 194
+FUNC 66850 1c 0 std::numpunct<char>::~numpunct
+66850 4 31 194
+66854 18 31 194
+FUNC 6686c 12 0 std::numpunct<char>::~numpunct
+6686c 2 31 194
+6686e 6 31 194
+66874 6 31 194
+6687a 4 31 194
+FUNC 66880 18 0 std::numpunct<char>::do_grouping() const
+FUNC 66880 18 0 std::numpunct<wchar_t>::do_grouping() const
+66880 2 28 194
+66882 2 28 194
+66884 2 120 238
+66886 2 124 238
+66888 2 481 201
+6688a 4 124 238
+6688e 2 90 238
+66890 2 101 205
+66892 2 36 194
+66894 2 101 205
+66896 2 28 194
+FUNC 66898 1c 0 std::numpunct<char>::do_falsename() const
+66898 6 30 194
+6689e 16 30 194
+FUNC 668b4 1c 0 std::numpunct<char>::do_truename() const
+668b4 6 29 194
+668ba 16 29 194
+FUNC 668d0 1c 0 std::numpunct<wchar_t>::do_falsename() const
+668d0 6 38 194
+668d6 16 38 194
+FUNC 668ec 1c 0 std::numpunct<wchar_t>::do_truename() const
+668ec 6 37 194
+668f2 16 37 194
+FUNC 66908 c8 0 std::basic_string<char, std::char_traits<char>, std::priv::__iostring_allocator<char> >::append(unsigned int, char)
+66908 4 180 236
+6690c 2 180 236
+6690e 2 89 238
+66910 2 180 236
+66912 4 65 238
+66916 2 400 237
+66918 4 182 236
+6691c 4 74 238
+66920 2 74 238
+66922 8 74 238
+6692a 4 184 236
+6692e 4 101 205
+66932 2 90 238
+66934 2 232 246
+66936 6 189 236
+6693c 4 192 236
+66940 a 306 237
+6694a 4 307 237
+6694e 4 307 237
+66952 10 134 222
+66962 2 86 243
+66964 4 84 243
+66968 2 86 243
+6696a 4 180 236
+6696e 2 84 243
+66970 4 565 197
+66974 4 146 205
+66978 4 86 243
+6697c 4 101 205
+66980 4 64 238
+66984 4 96 238
+66988 2 96 238
+6698a 6 97 238
+66990 4 70 213
+66994 2 97 238
+66996 4 161 201
+6699a 4 161 201
+6699e 2 175 236
+669a0 2 164 238
+669a2 2 160 238
+669a4 6 165 238
+669aa 4 307 237
+669ae 4 64 213
+669b2 6 67 213
+669b8 4 64 213
+669bc 6 135 222
+669c2 e 600 236
+FUNC 669d0 f0 0 std::basic_string<wchar_t, std::char_traits<wchar_t>, std::priv::__iostring_allocator<wchar_t> >::append(unsigned int, wchar_t)
+669d0 4 180 236
+669d4 2 180 236
+669d6 2 89 238
+669d8 2 180 236
+669da 4 65 238
+669de 2 74 238
+669e0 4 400 237
+669e4 4 74 238
+669e8 4 400 237
+669ec 6 74 238
+669f2 6 74 238
+669f8 4 184 236
+669fc 2 267 246
+669fe 4 101 205
+66a02 4 267 246
+66a06 2 189 236
+66a08 4 192 236
+66a0c 4 306 237
+66a10 4 307 237
+66a14 c 306 237
+66a20 8 307 237
+66a28 4 307 237
+66a2c c 64 213
+66a38 8 67 213
+66a40 4 86 243
+66a44 4 84 243
+66a48 6 86 243
+66a4e 2 84 243
+66a50 4 565 197
+66a54 2 86 243
+66a56 4 146 205
+66a5a 6 86 243
+66a60 2 101 205
+66a62 2 96 238
+66a64 2 101 205
+66a66 2 96 238
+66a68 2 96 238
+66a6a 6 97 238
+66a70 4 70 213
+66a74 2 97 238
+66a76 4 323 201
+66a7a 4 161 201
+66a7e 4 161 201
+66a82 4 175 236
+66a86 2 160 238
+66a88 2 267 246
+66a8a 2 164 238
+66a8c 4 165 238
+66a90 4 101 205
+66a94 4 267 246
+66a98 2 189 236
+66a9a 4 192 236
+66a9e 4 307 237
+66aa2 18 134 222
+66aba 6 135 222
+FUNC 66ac0 f4 0 std::priv::__append
+66ac0 2 470 237
+66ac2 4 171 197
+66ac6 4 171 197
+66aca 2 470 237
+66acc 4 64 238
+66ad0 2 355 216
+66ad2 4 74 238
+66ad6 6 74 238
+66adc 4 472 237
+66ae0 2 400 237
+66ae2 e 304 237
+66af0 a 306 237
+66afa 4 307 237
+66afe 8 307 237
+66b06 e 134 222
+66b14 2 107 243
+66b16 4 107 243
+66b1a 2 107 243
+66b1c c 106 243
+66b28 2 107 243
+66b2a 8 106 243
+66b32 4 101 205
+66b36 2 107 243
+66b38 4 64 238
+66b3c 4 96 238
+66b40 2 96 238
+66b42 6 97 238
+66b48 4 70 213
+66b4c 2 97 238
+66b4e 2 135 222
+66b50 4 161 201
+66b54 4 161 201
+66b58 2 479 237
+66b5a 2 164 238
+66b5c 2 160 238
+66b5e 8 165 238
+66b66 2 565 197
+66b68 2 482 237
+66b6a 2 107 243
+66b6c 2 232 246
+66b6e 2 90 238
+66b70 2 107 243
+66b72 2 483 237
+66b74 8 106 243
+66b7c 4 101 205
+66b80 a 485 237
+66b8a 4 64 213
+66b8e 6 67 213
+66b94 4 64 213
+66b98 6 135 222
+66b9e 8 74 238
+66ba6 e 600 236
+FUNC 66bb4 f4 0 std::priv::__append
+66bb4 4 166 197
+66bb8 2 166 197
+66bba 2 65 238
+66bbc 2 166 197
+66bbe 4 470 237
+66bc2 4 64 238
+66bc6 2 355 216
+66bc8 4 74 238
+66bcc 6 74 238
+66bd2 4 472 237
+66bd6 2 400 237
+66bd8 e 304 237
+66be6 a 306 237
+66bf0 4 307 237
+66bf4 8 307 237
+66bfc e 134 222
+66c0a 2 107 243
+66c0c 4 107 243
+66c10 2 107 243
+66c12 c 106 243
+66c1e 2 107 243
+66c20 8 106 243
+66c28 4 101 205
+66c2c 2 107 243
+66c2e 4 64 238
+66c32 4 96 238
+66c36 2 96 238
+66c38 6 97 238
+66c3e 4 70 213
+66c42 2 97 238
+66c44 2 135 222
+66c46 4 161 201
+66c4a 4 161 201
+66c4e 2 479 237
+66c50 2 164 238
+66c52 2 160 238
+66c54 8 165 238
+66c5c 2 565 197
+66c5e 2 482 237
+66c60 2 107 243
+66c62 2 232 246
+66c64 2 90 238
+66c66 2 107 243
+66c68 2 483 237
+66c6a 8 106 243
+66c72 4 101 205
+66c76 a 485 237
+66c80 4 64 213
+66c84 6 67 213
+66c8a 4 64 213
+66c8e 6 135 222
+66c94 8 74 238
+66c9c c 600 236
+FUNC 66ca8 12c 0 std::priv::__append
+66ca8 6 174 197
+66cae 2 209 206
+66cb0 2 174 197
+66cb2 4 209 206
+66cb6 4 174 197
+66cba 6 209 206
+66cc0 8 177 197
+66cc8 4 470 237
+66ccc 4 64 238
+66cd0 4 355 216
+66cd4 2 74 238
+66cd6 4 355 216
+66cda 2 74 238
+66cdc 8 74 238
+66ce4 4 472 237
+66ce8 2 565 197
+66cea 2 482 237
+66cec 2 107 243
+66cee 2 267 246
+66cf0 2 107 243
+66cf2 2 483 237
+66cf4 8 106 243
+66cfc 4 484 237
+66d00 6 101 205
+66d06 2 485 237
+66d08 6 178 197
+66d0e 2 400 237
+66d10 c 304 237
+66d1c 2 400 237
+66d1e a 304 237
+66d28 a 306 237
+66d32 4 307 237
+66d36 4 307 237
+66d3a 6 64 213
+66d40 6 67 213
+66d46 2 107 243
+66d48 4 107 243
+66d4c 2 107 243
+66d4e c 106 243
+66d5a 2 107 243
+66d5c 8 106 243
+66d64 4 64 238
+66d68 2 101 205
+66d6a 2 96 238
+66d6c 4 107 243
+66d70 4 101 205
+66d74 2 96 238
+66d76 2 96 238
+66d78 6 97 238
+66d7e 4 70 213
+66d82 2 97 238
+66d84 2 135 222
+66d86 4 323 201
+66d8a 4 161 201
+66d8e 4 161 201
+66d92 2 479 237
+66d94 2 164 238
+66d96 2 160 238
+66d98 6 165 238
+66d9e 4 307 237
+66da2 10 134 222
+66db2 6 135 222
+66db8 c 74 238
+66dc4 8 600 236
+66dcc 8 64 213
+FUNC 66dd4 120 0 std::priv::__append
+66dd4 4 169 197
+66dd8 2 169 197
+66dda 2 65 238
+66ddc 4 400 237
+66de0 6 169 197
+66de6 4 470 237
+66dea 2 355 216
+66dec 4 64 238
+66df0 2 355 216
+66df2 4 74 238
+66df6 8 74 238
+66dfe 4 472 237
+66e02 2 565 197
+66e04 2 482 237
+66e06 2 107 243
+66e08 2 267 246
+66e0a 2 107 243
+66e0c 2 483 237
+66e0e 8 106 243
+66e16 4 484 237
+66e1a 6 101 205
+66e20 6 485 237
+66e26 2 400 237
+66e28 c 304 237
+66e34 2 400 237
+66e36 a 304 237
+66e40 c 306 237
+66e4c 4 307 237
+66e50 4 307 237
+66e54 c 64 213
+66e60 8 67 213
+66e68 2 107 243
+66e6a 4 107 243
+66e6e 2 107 243
+66e70 c 106 243
+66e7c 2 107 243
+66e7e 8 106 243
+66e86 4 64 238
+66e8a 2 101 205
+66e8c 2 96 238
+66e8e 4 107 243
+66e92 2 101 205
+66e94 2 96 238
+66e96 2 96 238
+66e98 6 97 238
+66e9e 4 70 213
+66ea2 2 97 238
+66ea4 2 135 222
+66ea6 4 323 201
+66eaa 4 161 201
+66eae 4 161 201
+66eb2 4 479 237
+66eb6 2 164 238
+66eb8 2 160 238
+66eba 8 165 238
+66ec2 4 307 237
+66ec6 10 134 222
+66ed6 6 135 222
+66edc c 74 238
+66ee8 c 600 236
+FUNC 66ef4 1c2 0 std::priv::_Time_Info::~_Time_Info
+66ef4 4 72 242
+66ef8 4 72 242
+66efc 6 72 242
+66f02 8 72 242
+66f0a 2 72 242
+66f0c 4 72 242
+66f10 4 161 201
+66f14 4 72 242
+66f18 2 72 242
+66f1a 2 64 238
+66f1c 2 72 242
+66f1e 2 64 238
+66f20 4 96 238
+66f24 4 96 238
+66f28 4 97 238
+66f2c 4 161 201
+66f30 4 135 222
+66f34 4 72 242
+66f38 a 72 242
+66f42 2 72 242
+66f44 4 72 242
+66f48 4 161 201
+66f4c 4 72 242
+66f50 2 72 242
+66f52 2 64 238
+66f54 2 72 242
+66f56 2 64 238
+66f58 4 96 238
+66f5c 4 96 238
+66f60 4 97 238
+66f64 4 161 201
+66f68 4 135 222
+66f6c 4 72 242
+66f70 a 72 242
+66f7a 2 72 242
+66f7c 4 72 242
+66f80 4 161 201
+66f84 4 72 242
+66f88 2 72 242
+66f8a 2 64 238
+66f8c 2 72 242
+66f8e 2 64 238
+66f90 4 96 238
+66f94 4 96 238
+66f98 4 97 238
+66f9c 4 161 201
+66fa0 4 135 222
+66fa4 4 72 242
+66fa8 8 64 238
+66fb0 4 96 238
+66fb4 2 96 238
+66fb6 6 97 238
+66fbc 4 161 201
+66fc0 4 161 201
+66fc4 8 64 238
+66fcc 4 96 238
+66fd0 2 96 238
+66fd2 6 97 238
+66fd8 4 161 201
+66fdc 4 161 201
+66fe0 8 64 238
+66fe8 4 96 238
+66fec 2 96 238
+66fee 6 97 238
+66ff4 4 161 201
+66ff8 4 161 201
+66ffc 8 64 238
+67004 4 96 238
+67008 2 96 238
+6700a 6 97 238
+67010 4 161 201
+67014 4 161 201
+67018 4 64 238
+6701c 4 96 238
+67020 2 96 238
+67022 6 97 238
+67028 4 161 201
+6702c 4 161 201
+67030 6 72 242
+67036 10 135 222
+67046 6 72 242
+6704c c 135 222
+67058 28 121 237
+67080 10 72 242
+67090 2 72 242
+67092 8 121 237
+6709a 6 72 242
+670a0 6 72 242
+670a6 2 72 242
+670a8 8 121 237
+670b0 6 72 242
+FUNC 670b8 1ce 0 std::priv::_WTime_Info::~_WTime_Info
+670b8 4 80 242
+670bc a 80 242
+670c6 e 80 242
+670d4 4 161 201
+670d8 4 80 242
+670dc 2 80 242
+670de 2 64 238
+670e0 2 80 242
+670e2 2 64 238
+670e4 4 96 238
+670e8 4 96 238
+670ec 4 97 238
+670f0 4 323 201
+670f4 4 161 201
+670f8 4 135 222
+670fc 4 80 242
+67100 a 80 242
+6710a 2 80 242
+6710c 4 80 242
+67110 4 161 201
+67114 4 80 242
+67118 2 80 242
+6711a 2 64 238
+6711c 2 80 242
+6711e 2 64 238
+67120 4 96 238
+67124 4 96 238
+67128 4 97 238
+6712c 4 323 201
+67130 4 161 201
+67134 4 135 222
+67138 4 80 242
+6713c a 80 242
+67146 2 80 242
+67148 4 80 242
+6714c 4 161 201
+67150 4 80 242
+67154 2 80 242
+67156 2 64 238
+67158 2 80 242
+6715a 2 64 238
+6715c 4 96 238
+67160 4 96 238
+67164 4 97 238
+67168 4 323 201
+6716c 4 161 201
+67170 4 135 222
+67174 4 80 242
+67178 8 64 238
+67180 4 96 238
+67184 2 96 238
+67186 6 97 238
+6718c 4 161 201
+67190 4 161 201
+67194 8 64 238
+6719c 4 96 238
+671a0 2 96 238
+671a2 6 97 238
+671a8 4 161 201
+671ac 4 161 201
+671b0 8 64 238
+671b8 4 96 238
+671bc 2 96 238
+671be 6 97 238
+671c4 4 161 201
+671c8 4 161 201
+671cc 8 64 238
+671d4 4 96 238
+671d8 2 96 238
+671da 6 97 238
+671e0 4 161 201
+671e4 4 161 201
+671e8 4 64 238
+671ec 4 96 238
+671f0 2 96 238
+671f2 6 97 238
+671f8 4 161 201
+671fc 4 161 201
+67200 6 80 242
+67206 10 135 222
+67216 6 80 242
+6721c c 135 222
+67228 28 121 237
+67250 10 80 242
+67260 2 80 242
+67262 8 121 237
+6726a 6 80 242
+67270 6 80 242
+67276 2 80 242
+67278 8 121 237
+67280 6 80 242
+FUNC 67288 6f4 0 void std::priv::__write_formatted_timeT<wchar_t, std::priv::_WTime_Info>(std::priv::__basic_iostring<wchar_t>&, std::ctype<wchar_t> const&, char, char, std::priv::_WTime_Info const&, tm const*)
+67288 6 213 197
+6728e 4 220 197
+67292 a 213 197
+6729c b2 220 197
+6734e 12 206 206
+67360 24 381 197
+67384 4 420 197
+67388 4 421 197
+6738c 2 420 197
+6738e 6 421 197
+67394 6 452 197
+6739a 2 338 197
+6739c 12 234 197
+673ae 2 235 197
+673b0 2 304 197
+673b2 6 304 197
+673b8 2 304 197
+673ba 10 348 197
+673ca 2 349 197
+673cc 22 287 197
+673ee 8 248 197
+673f6 6 342 197
+673fc e 343 197
+6740a 2 344 197
+6740c 8 292 197
+67414 a 342 197
+6741e 6 234 197
+67424 14 226 197
+67438 2 227 197
+6743a 14 206 206
+6744e 6 386 197
+67454 2 387 197
+67456 2 386 197
+67458 4 387 197
+6745c e 370 197
+6746a e 370 197
+67478 2 64 238
+6747a 4 96 238
+6747e 4 96 238
+67482 4 97 238
+67486 6 161 201
+6748c 6 161 201
+67492 28 278 197
+674ba 2 279 197
+674bc 2 268 197
+674be 4 268 197
+674c2 4 268 197
+674c6 e 268 197
+674d4 4 283 197
+674d8 a 283 197
+674e2 2 284 197
+674e4 26 357 197
+6750a 8 206 206
+67512 c 352 197
+6751e 6 273 197
+67524 12 273 197
+67536 6 243 197
+6753c 12 243 197
+6754e 2 238 197
+67550 6 238 197
+67556 6 238 197
+6755c 26 313 197
+67582 4 222 197
+67586 e 318 197
+67594 e 309 197
+675a2 2 310 197
+675a4 8 297 197
+675ac 18 297 197
+675c4 6 420 197
+675ca 6 253 197
+675d0 10 253 197
+675e0 c 366 197
+675ec e 366 197
+675fa 2 64 238
+675fc 6 96 238
+67602 6 96 238
+67608 4 97 238
+6760c 6 161 201
+67612 6 135 222
+67618 c 374 197
+67624 e 374 197
+67632 2 64 238
+67634 6 96 238
+6763a 6 96 238
+67640 4 97 238
+67644 4 161 201
+67648 6 161 201
+6764e 6 258 197
+67654 4 258 197
+67658 c 258 197
+67664 4 258 197
+67668 8 258 197
+67670 2 258 197
+67672 8 258 197
+6767a 8 258 197
+67682 4 258 197
+67686 30 259 197
+676b6 6 259 197
+676bc 6 283 197
+676c2 6 282 197
+676c8 10 282 197
+676d8 2 394 197
+676da 4 195 197
+676de 2 394 197
+676e0 4 195 197
+676e4 2 393 197
+676e6 1c 195 197
+67702 6 395 197
+67708 8 393 197
+67710 a 401 197
+6771a 24 401 197
+6773e 1e 401 197
+6775c 2 401 197
+6775e 24 195 197
+67782 2 402 197
+67784 8 404 197
+6778c 2 409 197
+6778e 4 414 197
+67792 8 409 197
+6779a 16 417 197
+677b0 2 418 197
+677b2 a 263 197
+677bc 1c 297 197
+677d8 28 411 197
+67800 2 412 197
+67802 e 253 197
+67810 8 254 197
+67818 6 283 197
+6781e e 282 197
+6782c e 283 197
+6783a 6 258 197
+67840 c 268 197
+6784c 8 269 197
+67854 6 283 197
+6785a e 273 197
+67868 8 274 197
+67870 6 283 197
+67876 e 243 197
+67884 8 244 197
+6788c 6 283 197
+67892 6 397 197
+67898 a 398 197
+678a2 20 398 197
+678c2 18 398 197
+678da 2 398 197
+678dc 26 195 197
+67902 a 401 197
+6790c 6 398 197
+67912 6a 121 237
+FUNC 6797c a 0 std::priv::__write_formatted_time(std::priv::__basic_iostring<wchar_t>&, std::ctype<wchar_t> const&, char, char, std::priv::_WTime_Info const&, tm const*)
+6797c 2 462 197
+6797e 8 462 197
+FUNC 67988 52 0 void std::priv::__subformat<wchar_t, std::priv::_WTime_Info>(std::priv::__basic_iostring<wchar_t>&, std::ctype<wchar_t> const&, std::string const&, std::priv::_WTime_Info const&, tm const*)
+67988 6 148 197
+6798e 2 65 238
+67990 2 148 197
+67992 2 151 197
+67994 8 148 197
+6799c 4 152 197
+679a0 6 153 197
+679a6 2 156 197
+679a8 2 155 197
+679aa 2 154 197
+679ac 4 156 197
+679b0 e 159 197
+679be 4 152 197
+679c2 6 163 197
+679c8 a 161 197
+679d2 8 157 197
+FUNC 679dc 6e0 0 void std::priv::__write_formatted_timeT<char, std::priv::_Time_Info>(std::priv::__basic_iostring<char>&, std::ctype<char> const&, char, char, std::priv::_Time_Info const&, tm const*)
+679dc 6 213 197
+679e2 4 220 197
+679e6 a 213 197
+679f0 b2 220 197
+67aa2 12 101 206
+67ab4 24 381 197
+67ad8 4 420 197
+67adc 2 421 197
+67ade 2 420 197
+67ae0 6 421 197
+67ae6 6 452 197
+67aec 2 338 197
+67aee 12 234 197
+67b00 2 235 197
+67b02 2 304 197
+67b04 6 304 197
+67b0a 2 304 197
+67b0c 10 348 197
+67b1c 2 349 197
+67b1e 22 287 197
+67b40 8 248 197
+67b48 6 342 197
+67b4e c 343 197
+67b5a 2 344 197
+67b5c 8 292 197
+67b64 a 342 197
+67b6e 6 234 197
+67b74 14 226 197
+67b88 2 227 197
+67b8a 14 101 206
+67b9e 6 386 197
+67ba4 2 387 197
+67ba6 2 386 197
+67ba8 4 387 197
+67bac e 370 197
+67bba e 370 197
+67bc8 2 64 238
+67bca 4 96 238
+67bce 4 96 238
+67bd2 4 97 238
+67bd6 6 161 201
+67bdc 6 161 201
+67be2 26 278 197
+67c08 2 279 197
+67c0a 2 268 197
+67c0c 4 268 197
+67c10 4 268 197
+67c14 e 268 197
+67c22 4 283 197
+67c26 8 283 197
+67c2e 2 284 197
+67c30 26 357 197
+67c56 8 101 206
+67c5e c 352 197
+67c6a 6 273 197
+67c70 12 273 197
+67c82 6 243 197
+67c88 12 243 197
+67c9a 2 238 197
+67c9c 6 238 197
+67ca2 6 238 197
+67ca8 26 313 197
+67cce 4 222 197
+67cd2 e 318 197
+67ce0 e 309 197
+67cee 2 310 197
+67cf0 8 297 197
+67cf8 18 297 197
+67d10 6 420 197
+67d16 6 253 197
+67d1c 10 253 197
+67d2c c 366 197
+67d38 e 366 197
+67d46 2 64 238
+67d48 6 96 238
+67d4e 6 96 238
+67d54 4 97 238
+67d58 6 161 201
+67d5e 6 135 222
+67d64 c 374 197
+67d70 e 374 197
+67d7e 2 64 238
+67d80 6 96 238
+67d86 6 96 238
+67d8c 4 97 238
+67d90 4 161 201
+67d94 6 161 201
+67d9a 6 258 197
+67da0 4 258 197
+67da4 c 258 197
+67db0 4 258 197
+67db4 8 258 197
+67dbc 2 258 197
+67dbe 8 258 197
+67dc6 8 258 197
+67dce 4 258 197
+67dd2 2c 259 197
+67dfe 6 259 197
+67e04 6 283 197
+67e0a 6 282 197
+67e10 10 282 197
+67e20 2 394 197
+67e22 4 195 197
+67e26 2 394 197
+67e28 4 195 197
+67e2c 2 393 197
+67e2e 1c 195 197
+67e4a 6 395 197
+67e50 8 393 197
+67e58 a 401 197
+67e62 22 401 197
+67e84 1c 401 197
+67ea0 2 401 197
+67ea2 24 195 197
+67ec6 2 402 197
+67ec8 8 404 197
+67ed0 2 409 197
+67ed2 4 414 197
+67ed6 8 409 197
+67ede 16 417 197
+67ef4 2 418 197
+67ef6 a 263 197
+67f00 1c 297 197
+67f1c 28 411 197
+67f44 2 412 197
+67f46 e 253 197
+67f54 8 254 197
+67f5c 6 283 197
+67f62 e 282 197
+67f70 e 283 197
+67f7e 6 258 197
+67f84 c 268 197
+67f90 8 269 197
+67f98 6 283 197
+67f9e e 273 197
+67fac 8 274 197
+67fb4 6 283 197
+67fba e 243 197
+67fc8 8 244 197
+67fd0 6 283 197
+67fd6 6 397 197
+67fdc a 398 197
+67fe6 1c 398 197
+68002 18 398 197
+6801a 2 398 197
+6801c 26 195 197
+68042 a 401 197
+6804c 6 398 197
+68052 6a 121 237
+FUNC 680bc a 0 std::priv::__write_formatted_time(std::priv::__basic_iostring<char>&, std::ctype<char> const&, char, char, std::priv::_Time_Info const&, tm const*)
+680bc 2 457 197
+680be 8 457 197
+FUNC 680c8 52 0 void std::priv::__subformat<char, std::priv::_Time_Info>(std::priv::__basic_iostring<char>&, std::ctype<char> const&, std::string const&, std::priv::_Time_Info const&, tm const*)
+680c8 6 148 197
+680ce 2 65 238
+680d0 2 148 197
+680d2 2 151 197
+680d4 8 148 197
+680dc 4 152 197
+680e0 6 153 197
+680e6 2 156 197
+680e8 2 155 197
+680ea 2 154 197
+680ec 4 156 197
+680f0 e 159 197
+680fe 4 152 197
+68102 6 163 197
+68108 a 161 197
+68112 8 157 197
+FUNC 6811c 284 0 std::priv::time_init<char>::time_init
+6811c 8 502 197
+68124 2 124 238
+68126 2 120 238
+68128 4 165 237
+6812c 2 481 201
+6812e 2 165 237
+68130 4 124 238
+68134 2 90 238
+68136 2 101 205
+68138 2 124 238
+6813a 2 101 205
+6813c 4 120 238
+68140 2 124 238
+68142 2 481 201
+68144 4 124 238
+68148 2 90 238
+6814a 6 165 237
+68150 2 101 205
+68152 2 124 238
+68154 2 101 205
+68156 4 120 238
+6815a 2 124 238
+6815c 2 481 201
+6815e 4 124 238
+68162 2 90 238
+68164 4 165 237
+68168 2 101 205
+6816a 4 124 238
+6816e 2 101 205
+68170 2 120 238
+68172 2 481 201
+68174 4 124 238
+68178 2 90 238
+6817a 4 165 237
+6817e 2 101 205
+68180 2 124 238
+68182 2 101 205
+68184 2 120 238
+68186 2 481 201
+68188 4 124 238
+6818c 2 90 238
+6818e c 72 242
+6819a 8 101 205
+681a2 4 502 197
+681a6 2 120 238
+681a8 4 124 238
+681ac 2 481 201
+681ae 4 124 238
+681b2 2 90 238
+681b4 4 72 242
+681b8 2 72 242
+681ba 4 101 205
+681be 2 72 242
+681c0 4 72 242
+681c4 c 502 197
+681d0 4 101 205
+681d4 2 502 197
+681d6 2 120 238
+681d8 4 124 238
+681dc 4 481 201
+681e0 4 124 238
+681e4 2 90 238
+681e6 4 101 205
+681ea 2 72 242
+681ec 4 101 205
+681f0 2 72 242
+681f2 4 120 238
+681f6 2 124 238
+681f8 4 481 201
+681fc 6 124 238
+68202 4 90 238
+68206 4 120 238
+6820a 2 101 205
+6820c 4 124 238
+68210 2 101 205
+68212 4 120 238
+68216 4 481 201
+6821a 6 124 238
+68220 2 101 205
+68222 4 90 238
+68226 2 78 197
+68228 2 77 197
+6822a 2 101 205
+6822c 4 503 197
+68230 8 78 197
+68238 6 229 246
+6823e 4 78 197
+68242 4 355 237
+68246 6 78 197
+6824c 4 355 237
+68250 2 77 197
+68252 8 77 197
+6825a 12 80 197
+6826c 6 229 246
+68272 4 355 237
+68276 4 80 197
+6827a 4 355 237
+6827e 2 79 197
+68280 4 79 197
+68284 42 355 237
+682c6 8 504 197
+682ce a 121 237
+682d8 a 504 197
+682e2 2 124 238
+682e4 c 72 242
+682f0 4 72 242
+682f4 8 121 237
+682fc 4 72 242
+68300 2 72 242
+68302 8 121 237
+6830a 4 72 242
+6830e 2 72 242
+68310 8 121 237
+68318 4 72 242
+6831c a 72 242
+68326 4 124 238
+6832a 10 72 242
+6833a 4 72 242
+6833e 8 121 237
+68346 6 72 242
+6834c e 72 242
+6835a 4 72 242
+6835e 8 121 237
+68366 6 72 242
+6836c 34 121 237
+FUNC 683a0 2b0 0 std::priv::time_init<wchar_t>::time_init
+683a0 8 527 197
+683a8 2 124 238
+683aa 2 120 238
+683ac 4 165 237
+683b0 2 481 201
+683b2 2 165 237
+683b4 4 124 238
+683b8 2 90 238
+683ba 2 101 205
+683bc 2 124 238
+683be 2 101 205
+683c0 4 120 238
+683c4 2 124 238
+683c6 2 481 201
+683c8 4 124 238
+683cc 2 90 238
+683ce 6 165 237
+683d4 2 101 205
+683d6 2 124 238
+683d8 2 101 205
+683da 4 120 238
+683de 2 124 238
+683e0 2 481 201
+683e2 4 124 238
+683e6 2 90 238
+683e8 4 165 237
+683ec 2 101 205
+683ee 4 124 238
+683f2 2 101 205
+683f4 2 120 238
+683f6 2 481 201
+683f8 4 124 238
+683fc 2 90 238
+683fe 4 165 237
+68402 2 101 205
+68404 2 124 238
+68406 2 101 205
+68408 2 120 238
+6840a 2 481 201
+6840c 4 124 238
+68410 2 90 238
+68412 c 80 242
+6841e 8 101 205
+68426 4 527 197
+6842a 2 120 238
+6842c 4 124 238
+68430 2 481 201
+68432 4 124 238
+68436 2 90 238
+68438 4 80 242
+6843c 2 80 242
+6843e 4 101 205
+68442 2 80 242
+68444 4 80 242
+68448 c 527 197
+68454 4 101 205
+68458 2 527 197
+6845a 2 120 238
+6845c 4 124 238
+68460 4 481 201
+68464 4 124 238
+68468 2 90 238
+6846a 4 101 205
+6846e 2 80 242
+68470 4 101 205
+68474 2 80 242
+68476 4 120 238
+6847a 2 124 238
+6847c 8 120 238
+68484 4 481 201
+68488 6 124 238
+6848e 4 101 205
+68492 4 120 238
+68496 2 101 205
+68498 4 124 238
+6849c 2 101 205
+6849e 4 120 238
+684a2 4 481 201
+684a6 6 124 238
+684ac 6 101 205
+684b2 2 90 197
+684b4 2 89 197
+684b6 2 101 205
+684b8 4 528 197
+684bc 16 90 197
+684d2 6 264 246
+684d8 c 355 237
+684e4 2 89 197
+684e6 8 89 197
+684ee 16 92 197
+68504 6 264 246
+6850a c 355 237
+68516 2 91 197
+68518 4 91 197
+6851c a 264 246
+68526 c 355 237
+68532 a 264 246
+6853c 36 355 237
+68572 8 529 197
+6857a a 121 237
+68584 a 529 197
+6858e 2 124 238
+68590 e 80 242
+6859e 6 80 242
+685a4 8 121 237
+685ac 4 80 242
+685b0 2 80 242
+685b2 8 121 237
+685ba 4 80 242
+685be 2 80 242
+685c0 8 121 237
+685c8 4 80 242
+685cc a 80 242
+685d6 4 124 238
+685da 10 80 242
+685ea 4 80 242
+685ee 8 121 237
+685f6 6 80 242
+685fc e 80 242
+6860a 4 80 242
+6860e 8 121 237
+68616 6 80 242
+6861c 34 121 237
+FUNC 68650 1c 0 std::messages<wchar_t>::~messages
+68650 4 107 219
+68654 18 107 219
+FUNC 6866c 1c 0 std::messages<char>::~messages
+6866c 4 74 219
+68670 18 74 219
+FUNC 68688 20 0 std::messages<wchar_t>::~messages
+68688 4 107 219
+6868c e 107 219
+6869a 6 107 219
+686a0 8 107 219
+FUNC 686a8 20 0 std::messages<char>::~messages
+686a8 4 74 219
+686ac e 74 219
+686ba 6 74 219
+686c0 8 74 219
+FUNC 686c8 2c 0 std::messages<char>::messages
+686c8 2 188 188
+686ca 2 340 240
+686cc 2 86 218
+686ce 2 188 188
+686d0 2 188 188
+686d2 4 86 218
+686d6 4 340 240
+686da 2 457 240
+686dc 4 340 240
+686e0 2 86 218
+686e2 12 189 188
+FUNC 686f4 2c 0 std::messages<wchar_t>::messages
+686f4 2 217 188
+686f6 2 340 240
+686f8 2 86 218
+686fa 2 217 188
+686fc 2 217 188
+686fe 4 86 218
+68702 4 340 240
+68706 2 457 240
+68708 4 340 240
+6870c 2 86 218
+6870e 12 218 188
+FUNC 68720 e 0 std::messages<char>::do_get(int, int, int, std::string const&) const
+68720 2 78 219
+68722 2 78 219
+68724 a 80 219
+FUNC 68730 3a 0 std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::basic_string
+68730 2 647 236
+68732 2 647 236
+68734 2 112 238
+68736 2 481 201
+68738 2 89 238
+6873a 2 65 238
+6873c 4 378 237
+68740 6 379 237
+68746 2 107 243
+68748 2 66 238
+6874a 2 107 243
+6874c 8 106 243
+68754 2 107 243
+68756 2 380 237
+68758 4 101 205
+6875c e 649 236
+FUNC 6876c e 0 std::messages<wchar_t>::do_get(int, int, int, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&) const
+6876c 2 111 219
+6876e 2 111 219
+68770 a 113 219
+FUNC 68d20 34 0 __popcountsi2
+68d20 8 846 154
+68d28 c 847 154
+68d34 8 848 154
+68d3c a 849 154
+68d46 e 858 154
+FUNC 68d54 34 0 __gnu_ldivmod_helper
+68d54 2 38 151
+68d56 8 38 151
+68d5e 8 41 151
+68d66 16 42 151
+68d7c 2 44 151
+68d7e 4 42 151
+68d82 6 44 151
+FUNC 68d88 30 0 __gnu_uldivmod_helper
+68d88 2 50 151
+68d8a 8 50 151
+68d92 4 53 151
+68d96 4 54 151
+68d9a 4 53 151
+68d9e e 54 151
+68dac 2 56 151
+68dae 4 54 151
+68db2 6 56 151
+FUNC 68db8 16 0 selfrel_offset31
+68db8 2 458 153
+68dba 4 460 153
+68dbe 8 461 153
+68dc6 4 463 153
+68dca 2 465 153
+68dcc 2 466 153
+FUNC 68dce 6e 0 search_EIT_table
+68dce 2 158 155
+68dd0 2 164 155
+68dd2 2 158 155
+68dd4 4 163 155
+68dd8 2 167 155
+68dda 6 166 155
+68de0 4 167 155
+68de4 a 171 155
+68dee c 172 155
+68dfa 2 173 155
+68dfc 2 172 155
+68dfe 4 173 155
+68e02 a 174 155
+68e0c 8 178 155
+68e14 4 180 155
+68e18 6 182 155
+68e1e 2 184 155
+68e20 2 174 155
+68e22 4 184 155
+68e26 4 187 155
+68e2a 4 164 155
+68e2e 8 178 155
+68e36 6 189 155
+FUNC 68e3c 30 0 __gnu_unwind_get_pr_addr
+68e3c 1c 471 153
+68e58 4 480 153
+68e5c 2 483 153
+68e5e e 485 153
+FUNC 68e6c a4 0 get_eit_entry
+68e6c 2 206 155
+68e6e 2 197 155
+68e70 2 206 155
+68e72 2 208 155
+68e74 2 197 155
+68e76 2 206 155
+68e78 4 208 155
+68e7c 8 210 155
+68e84 4 212 155
+68e88 4 214 155
+68e8c 6 215 155
+68e92 a 221 155
+68e9c 2 220 155
+68e9e 6 221 155
+68ea4 a 224 155
+68eae 2 226 155
+68eb0 4 231 155
+68eb4 2 234 155
+68eb6 2 231 155
+68eb8 4 234 155
+68ebc 4 236 155
+68ec0 6 237 155
+68ec6 4 242 155
+68eca 2 245 155
+68ecc 4 246 155
+68ed0 4 253 155
+68ed4 2 254 155
+68ed6 2 252 155
+68ed8 2 258 155
+68eda 2 254 155
+68edc 6 258 155
+68ee2 4 261 155
+68ee6 4 262 155
+68eea 2 266 155
+68eec 2 262 155
+68eee a 274 155
+68ef8 4 272 155
+68efc 2 274 155
+68efe 2 272 155
+68f00 10 275 155
+FUNC 68f10 4a 0 restore_non_core_regs
+68f10 2 126 153
+68f12 2 125 153
+68f14 2 125 153
+68f16 6 126 153
+68f1c 4 128 153
+68f20 6 129 153
+68f26 4 131 153
+68f2a 6 134 153
+68f30 8 135 153
+68f38 6 137 153
+68f3e a 138 153
+68f48 6 139 153
+68f4e a 140 153
+68f58 2 141 153
+FUNC 68f5a e 0 _Unwind_decode_typeinfo_ptr
+68f5a 2 46 149
+68f5c 2 49 149
+68f5e 4 48 149
+68f62 2 55 149
+68f64 4 65 149
+FUNC 68f68 4 0 __gnu_unwind_24bit
+68f68 4 73 149
+FUNC 68f6c 2 0 _Unwind_DebugHook
+68f6c 2 134 155
+FUNC 68f6e 3a 0 unwind_phase2
+68f6e 6 282 155
+68f74 c 288 155
+68f80 4 289 155
+68f84 4 291 155
+68f88 a 294 155
+68f92 4 297 155
+68f96 4 299 155
+68f9a 8 302 155
+68fa2 2 302 155
+68fa4 4 302 155
+FUNC 68fa8 bc 0 unwind_phase2_forced
+68fa8 4 310 155
+68fac 2 311 155
+68fae 2 310 155
+68fb0 2 311 155
+68fb2 2 322 155
+68fb4 2 312 155
+68fb6 4 310 155
+68fba 6 319 155
+68fc0 2 312 155
+68fc2 4 319 155
+68fc6 2 322 155
+68fc8 2 313 155
+68fca a 332 155
+68fd4 a 336 155
+68fde 2 332 155
+68fe0 2 342 155
+68fe2 2 344 155
+68fe4 4 346 155
+68fe8 2 344 155
+68fea a 346 155
+68ff4 a 349 155
+68ffe 2 352 155
+69000 4 349 155
+69004 6 363 155
+6900a 2 365 155
+6900c 2 363 155
+6900e 2 365 155
+69010 14 368 155
+69024 4 370 155
+69028 4 373 155
+6902c c 376 155
+69038 8 378 155
+69040 4 380 155
+69044 2 387 155
+69046 2 387 155
+69048 4 387 155
+6904c 6 387 155
+69052 6 371 155
+69058 c 388 155
+FUNC 69064 4 0 _Unwind_GetCFA
+69064 2 400 155
+69066 2 401 155
+FUNC 69068 4e 0 __gnu_Unwind_RaiseException
+69068 2 412 155
+6906a 2 417 155
+6906c 2 412 155
+6906e 2 417 155
+69070 4 412 155
+69074 a 420 155
+6907e 6 422 155
+69084 8 428 155
+6908c 4 428 155
+69090 a 432 155
+6909a 4 435 155
+6909e 6 439 155
+690a4 4 440 155
+690a8 8 447 155
+690b0 6 448 155
+FUNC 690b6 14 0 __gnu_Unwind_ForcedUnwind
+690b6 2 461 155
+690b8 2 463 155
+690ba 2 466 155
+690bc 2 462 155
+690be 2 466 155
+690c0 8 468 155
+690c8 2 469 155
+FUNC 690ca 44 0 __gnu_Unwind_Resume
+690ca 2 476 155
+690cc 2 482 155
+690ce 2 480 155
+690d0 4 476 155
+690d4 2 480 155
+690d6 4 482 155
+690da 8 484 155
+690e2 a 491 155
+690ec 8 494 155
+690f4 8 502 155
+690fc 8 498 155
+69104 2 498 155
+69106 4 498 155
+6910a 4 505 155
+FUNC 6910e 1a 0 __gnu_Unwind_Resume_or_Rethrow
+6910e 2 515 155
+69110 6 516 155
+69116 6 517 155
+6911c 4 520 155
+69120 6 522 155
+69126 2 523 155
+FUNC 69128 2 0 _Unwind_Complete
+69128 2 529 155
+FUNC 6912a 10 0 _Unwind_DeleteException
+6912a 2 536 155
+6912c 8 537 155
+69134 4 538 155
+69138 2 539 155
+FUNC 6913a 34 0 _Unwind_VRS_Get
+6913a 2 160 153
+6913c 2 160 153
+6913e 10 163 153
+6914e 4 178 153
+69152 2 168 153
+69154 4 166 153
+69158 4 167 153
+6915c 8 169 153
+69164 2 170 153
+69166 2 169 153
+69168 2 170 153
+6916a 2 175 153
+6916c 2 180 153
+FUNC 6916e 16 0 _Unwind_GetGR
+6916e 2 221 150
+69170 2 221 150
+69172 c 223 150
+6917e 6 225 150
+FUNC 69184 34 0 _Unwind_VRS_Set
+69184 2 190 153
+69186 2 190 153
+69188 10 193 153
+69198 4 209 153
+6919c 2 198 153
+6919e 4 196 153
+691a2 4 197 153
+691a6 a 200 153
+691b0 4 201 153
+691b4 2 206 153
+691b6 2 211 153
+FUNC 691b8 18 0 _Unwind_SetGR
+691b8 2 232 150
+691ba 4 232 150
+691be e 233 150
+691cc 4 234 150
+FUNC 691d0 70 0 __gnu_Unwind_Backtrace
+691d0 4 549 155
+691d4 2 557 155
+691d6 2 549 155
+691d8 2 557 155
+691da 4 549 155
+691de a 560 155
+691e8 6 562 155
+691ee a 567 155
+691f8 4 567 155
+691fc 4 569 155
+69200 a 578 155
+6920a 6 581 155
+69210 4 581 155
+69214 c 589 155
+69220 4 594 155
+69224 6 594 155
+6922a 6 596 155
+69230 10 598 155
+FUNC 69240 280 0 __gnu_unwind_pr_common
+69240 4 610 155
+69244 4 610 155
+69248 8 620 155
+69250 2 622 155
+69252 2 610 155
+69254 2 625 155
+69256 2 610 155
+69258 8 623 155
+69260 2 624 155
+69262 4 625 155
+69266 4 627 155
+6926a 6 628 155
+69270 4 629 155
+69274 6 631 155
+6927a 4 633 155
+6927e 2 634 155
+69280 2 636 155
+69282 2 634 155
+69284 2 636 155
+69286 2 635 155
+69288 4 636 155
+6928c 2 635 155
+6928e 6 640 155
+69294 2 641 155
+69296 c 643 155
+692a2 8 646 155
+692aa 6 651 155
+692b0 4 654 155
+692b4 4 655 155
+692b8 2 660 155
+692ba 2 659 155
+692bc 2 661 155
+692be 2 660 155
+692c0 8 664 155
+692c8 2 665 155
+692ca 2 664 155
+692cc 2 665 155
+692ce 2 664 155
+692d0 4 665 155
+692d4 4 666 155
+692d8 2 666 155
+692da 4 666 155
+692de c 666 155
+692ea 18 668 155
+69302 8 672 155
+6930a 4 673 155
+6930e 6 679 155
+69314 2 682 155
+69316 2 679 155
+69318 6 683 155
+6931e 6 683 155
+69324 8 686 155
+6932c 2 690 155
+6932e 2 691 155
+69330 6 695 155
+69336 4 697 155
+6933a 4 701 155
+6933e 8 706 155
+69346 6 710 155
+6934c 4 711 155
+69350 2 715 155
+69352 4 714 155
+69356 4 716 155
+6935a 2 714 155
+6935c 8 716 155
+69364 4 724 155
+69368 2 722 155
+6936a a 727 155
+69374 2 726 155
+69376 6 732 155
+6937c 2 735 155
+6937e 6 737 155
+69384 a 747 155
+6938e 4 747 155
+69392 6 748 155
+69398 6 754 155
+6939e 2 755 155
+693a0 2 754 155
+693a2 6 755 155
+693a8 6 756 155
+693ae 2 760 155
+693b0 2 761 155
+693b2 8 764 155
+693ba 6 766 155
+693c0 4 768 155
+693c4 6 768 155
+693ca 8 768 155
+693d2 6 775 155
+693d8 2 779 155
+693da a 777 155
+693e4 4 778 155
+693e8 4 780 155
+693ec 2 778 155
+693ee 6 780 155
+693f4 6 780 155
+693fa a 797 155
+69404 4 797 155
+69408 6 798 155
+6940e 4 803 155
+69412 4 805 155
+69416 2 804 155
+69418 2 806 155
+6941a 2 804 155
+6941c 2 806 155
+6941e 6 808 155
+69424 8 810 155
+6942c 4 812 155
+69430 2 814 155
+69432 2 812 155
+69434 6 814 155
+6943a 8 815 155
+69442 4 819 155
+69446 6 821 155
+6944c 2 822 155
+6944e 8 823 155
+69456 2 824 155
+69458 4 616 155
+6945c 6 834 155
+69462 6 837 155
+69468 8 842 155
+69470 4 842 155
+69474 2 846 155
+69476 2 854 155
+69478 4 846 155
+6947c 8 849 155
+69484 2 849 155
+69486 2 849 155
+69488 8 849 155
+69490 2 850 155
+69492 2 849 155
+69494 8 850 155
+6949c 4 851 155
+694a0 4 828 155
+694a4 8 789 155
+694ac 2 790 155
+694ae 2 788 155
+694b0 2 792 155
+694b2 2 790 155
+694b4 2 791 155
+694b6 a 855 155
+FUNC 694c0 a 0 __aeabi_unwind_cpp_pr0
+694c0 2 493 153
+694c2 6 494 153
+694c8 2 495 153
+FUNC 694ca a 0 __aeabi_unwind_cpp_pr1
+694ca 2 501 153
+694cc 6 502 153
+694d2 2 503 153
+FUNC 694d4 a 0 __aeabi_unwind_cpp_pr2
+694d4 2 509 153
+694d6 6 510 153
+694dc 2 511 153
+FUNC 694de 24c 0 _Unwind_VRS_Pop
+694de 4 220 153
+694e2 18 223 153
+694fa 2 232 153
+694fc 6 231 153
+69502 2 234 153
+69504 2 235 153
+69506 4 234 153
+6950a a 239 153
+69514 6 240 153
+6951a 4 237 153
+6951e 4 237 153
+69522 2 246 153
+69524 6 243 153
+6952a 4 244 153
+6952e a 262 153
+69538 2 250 153
+6953a 4 251 153
+6953e 2 250 153
+69540 8 263 153
+69548 4 378 153
+6954c 2 373 153
+6954e 2 372 153
+69550 2 373 153
+69552 6 378 153
+69558 8 381 153
+69560 2 385 153
+69562 2 384 153
+69564 2 385 153
+69566 2 384 153
+69568 6 385 153
+6956e 4 391 153
+69572 2 396 153
+69574 4 391 153
+69578 2 397 153
+6957a 2 396 153
+6957c 2 395 153
+6957e 2 398 153
+69580 2 397 153
+69582 6 398 153
+69588 a 399 153
+69592 2 402 153
+69594 6 405 153
+6959a 4 407 153
+6959e 4 415 153
+695a2 4 415 153
+695a6 8 418 153
+695ae 2 422 153
+695b0 2 421 153
+695b2 2 422 153
+695b4 2 421 153
+695b6 6 422 153
+695bc 8 428 153
+695c4 2 430 153
+695c6 2 431 153
+695c8 a 432 153
+695d2 8 433 153
+695da 2 431 153
+695dc 4 431 153
+695e0 2 436 153
+695e2 8 439 153
+695ea 4 263 153
+695ee 8 264 153
+695f6 4 444 153
+695fa 4 263 153
+695fe 6 269 153
+69604 2 270 153
+69606 4 274 153
+6960a 6 271 153
+69610 4 274 153
+69614 2 272 153
+69616 8 278 153
+6961e 4 296 153
+69622 4 307 153
+69626 6 308 153
+6962c 2 321 153
+6962e 4 326 153
+69632 4 327 153
+69636 4 329 153
+6963a 8 330 153
+69642 2 331 153
+69644 2 329 153
+69646 6 331 153
+6964c c 332 153
+69658 4 336 153
+6965c 8 340 153
+69664 a 342 153
+6966e 6 343 153
+69674 a 344 153
+6967e 4 348 153
+69682 2 349 153
+69684 2 352 153
+69686 4 355 153
+6968a 8 356 153
+69692 6 360 153
+69698 6 361 153
+6969e 6 364 153
+696a4 8 365 153
+696ac 4 274 153
+696b0 8 297 153
+696b8 2 299 153
+696ba 2 300 153
+696bc 2 299 153
+696be 6 300 153
+696c4 4 307 153
+696c8 6 312 153
+696ce 6 313 153
+696d4 4 316 153
+696d8 6 317 153
+696de 8 321 153
+696e6 8 308 153
+696ee c 280 153
+696fa 4 282 153
+696fe 6 285 153
+69704 4 286 153
+69708 6 296 153
+6970e 6 291 153
+69714 6 292 153
+6971a 4 257 153
+6971e 8 312 153
+69726 4 446 153
+FUNC 698fc 30 0 next_unwind_byte
+698fc 2 84 152
+698fe 2 81 152
+69900 4 84 152
+69904 2 87 152
+69906 2 88 152
+69908 4 87 152
+6990c 4 89 152
+69910 a 90 152
+6991a 4 91 152
+6991e 2 94 152
+69920 2 97 152
+69922 2 94 152
+69924 2 98 152
+69926 2 99 152
+69928 2 98 152
+6992a 2 100 152
+FUNC 6992c 16 0 _Unwind_GetGR
+6992c 2 220 150
+6992e e 223 150
+6993c 6 225 150
+FUNC 69942 8 0 unwind_UCB_from_context
+69942 2 338 152
+69944 4 339 152
+69948 2 340 152
+FUNC 6994a 286 0 __gnu_unwind_execute
+6994a 2 105 152
+6994c 2 110 152
+6994e 2 105 152
+69950 4 105 152
+69954 2 110 152
+69956 8 113 152
+6995e 4 114 152
+69962 2 117 152
+69964 2 308 152
+69966 6 117 152
+6996c 10 119 152
+6997c 10 121 152
+6998c c 128 152
+69998 6 133 152
+6999e 12 134 152
+699b0 2 133 152
+699b2 2 138 152
+699b4 4 135 152
+699b8 4 136 152
+699bc 6 139 152
+699c2 e 143 152
+699d0 8 145 152
+699d8 4 146 152
+699dc 2 145 152
+699de 4 146 152
+699e2 4 149 152
+699e6 2 152 152
+699e8 2 153 152
+699ea 4 152 152
+699ee 8 153 152
+699f6 4 153 152
+699fa 4 156 152
+699fe 4 157 152
+69a02 4 160 152
+69a06 8 163 152
+69a0e 4 162 152
+69a12 e 167 152
+69a20 e 168 152
+69a2e 2 169 152
+69a30 4 171 152
+69a34 10 176 152
+69a44 4 177 152
+69a48 6 178 152
+69a4e 6 179 152
+69a54 4 184 152
+69a58 4 187 152
+69a5c 8 189 152
+69a64 2 190 152
+69a66 a 190 152
+69a70 6 194 152
+69a76 4 199 152
+69a7a 10 204 152
+69a8a 6 206 152
+69a90 2 207 152
+69a92 c 208 152
+69a9e 8 210 152
+69aa6 2 212 152
+69aa8 2 210 152
+69aaa 2 211 152
+69aac c 212 152
+69ab8 a 214 152
+69ac2 a 215 152
+69acc 4 219 152
+69ad0 6 222 152
+69ad6 12 223 152
+69ae8 a 229 152
+69af2 c 234 152
+69afe 6 235 152
+69b04 4 240 152
+69b08 4 242 152
+69b0c 6 245 152
+69b12 12 246 152
+69b24 4 252 152
+69b28 8 254 152
+69b30 4 255 152
+69b34 8 255 152
+69b3c 6 259 152
+69b42 8 264 152
+69b4a c 267 152
+69b56 8 268 152
+69b5e 4 273 152
+69b62 6 276 152
+69b68 16 277 152
+69b7e 6 283 152
+69b84 6 286 152
+69b8a 14 287 152
+69b9e 10 296 152
+69bae a 299 152
+69bb8 a 300 152
+69bc2 8 300 152
+69bca 6 309 152
+FUNC 69bd0 26 0 __gnu_unwind_frame
+69bd0 2 318 152
+69bd2 2 322 152
+69bd4 6 326 152
+69bda 6 327 152
+69be0 4 328 152
+69be4 2 331 152
+69be6 2 329 152
+69be8 2 331 152
+69bea 2 326 152
+69bec 2 329 152
+69bee 4 331 152
+69bf2 4 332 152
+FUNC 69bf6 a 0 _Unwind_GetRegionStart
+69bf6 2 346 152
+69bf8 4 349 152
+69bfc 2 350 152
+69bfe 2 351 152
+FUNC 69c00 12 0 _Unwind_GetLanguageSpecificData
+69c00 2 357 152
+69c02 4 362 152
+69c06 2 363 152
+69c08 8 367 152
+69c10 2 370 152
+FUNC 69c12 6 0 _Unwind_GetDataRelBase
+69c12 2 377 152
+69c14 4 378 152
+FUNC 69c18 6 0 _Unwind_GetTextRelBase
+69c18 2 383 152
+69c1a 4 384 152
+FUNC 69c34 4c 0 __muldi3
+69c34 2 548 154
+69c36 12 551 154
+69c48 2 548 154
+69c4a 14 551 154
+69c5e 6 551 154
+69c64 2 553 154
+69c66 2 554 154
+69c68 2 553 154
+69c6a c 551 154
+69c76 2 554 154
+69c78 2 553 154
+69c7a 6 557 154
+FUNC 69c80 12a 0 __divdi3
+69c80 2 1228 154
+69c82 2 1229 154
+69c84 2 1228 154
+69c86 4 1230 154
+69c8a 4 1231 154
+69c8e 2 1229 154
+69c90 4 1234 154
+69c94 6 1236 154
+69c9a 4 1235 154
+69c9e 4 1236 154
+69ca2 2 1235 154
+69ca4 4 1237 154
+69ca8 6 1238 154
+69cae a 1239 154
+69cb8 4 1241 154
+69cbc a 957 154
+69cc6 8 959 154
+69cce 2 960 154
+69cd0 2 959 154
+69cd2 6 960 154
+69cd8 2 962 154
+69cda 2 963 154
+69cdc 2 962 154
+69cde 4 963 154
+69ce2 2 962 154
+69ce4 a 963 154
+69cee c 970 154
+69cfa a 973 154
+69d04 4 972 154
+69d08 6 973 154
+69d0e 8 946 154
+69d16 6 976 154
+69d1c 8 978 154
+69d24 18 986 154
+69d3c 16 988 154
+69d52 a 989 154
+69d5c 4 990 154
+69d60 4 994 154
+69d64 2 995 154
+69d66 4 994 154
+69d6a 4 995 154
+69d6e 10 996 154
+69d7e 28 946 154
+69da6 4 1246 154
+FUNC 69daa f0 0 __udivdi3
+69daa 6 1287 154
+69db0 6 1287 154
+69db6 c 957 154
+69dc2 8 959 154
+69dca 2 960 154
+69dcc 2 959 154
+69dce 6 960 154
+69dd4 2 962 154
+69dd6 2 963 154
+69dd8 2 962 154
+69dda 4 963 154
+69dde 2 962 154
+69de0 a 963 154
+69dea c 970 154
+69df6 a 973 154
+69e00 4 972 154
+69e04 6 973 154
+69e0a 8 946 154
+69e12 6 976 154
+69e18 c 978 154
+69e24 1a 986 154
+69e3e 18 988 154
+69e56 a 989 154
+69e60 4 990 154
+69e64 a 994 154
+69e6e 2 995 154
+69e70 2 994 154
+69e72 4 995 154
+69e76 14 996 154
+69e8a 8 946 154
+69e92 8 1289 154
+PUBLIC 172dd 0 _ZN7testing8internal11CmpHelperEQISsSsEENS_15AssertionResultEPKcS4_RKT_RKT0_
+PUBLIC 17f2d 0 _ZN38ExceptionHandlerTest_SimpleWithFD_Test8TestBodyEv
+PUBLIC 17fb5 0 _ZN40ExceptionHandlerTest_SimpleWithPath_Test8TestBodyEv
+PUBLIC 181d9 0 _ZN7testing13PrintToStringIiEESsRKT_
+PUBLIC 18221 0 _ZN7testing8internal18CmpHelperOpFailureIiiEENS_15AssertionResultEPKcS4_RKT_RKT0_S4_
+PUBLIC 182f5 0 _ZN7testing8internal11CmpHelperNEIiiEENS_15AssertionResultEPKcS4_RKT_RKT0_
+PUBLIC 18321 0 _ZN7testing8internal11CmpHelperEQIiiEENS_15AssertionResultEPKcS4_RKT_RKT0_
+PUBLIC 187b9 0 _ZN7testing8internal18CmpHelperOpFailureIliEENS_15AssertionResultEPKcS4_RKT_RKT0_S4_
+PUBLIC 188a1 0 _ZN53ExceptionHandlerTest_GenerateMultipleDumpsWithFD_Test8TestBodyEv
+PUBLIC 18ae5 0 _ZN7testing13PrintToStringIPvEESsRKT_
+PUBLIC 18b51 0 _ZN7testing8internal18CmpHelperOpFailureIPvS2_EENS_15AssertionResultEPKcS5_RKT_RKT0_S5_
+PUBLIC 18c25 0 _ZN7testing13PrintToStringIjEESsRKT_
+PUBLIC 18cfd 0 _ZN7testing8internal11CmpHelperLTIjjEENS_15AssertionResultEPKcS4_RKT_RKT0_
+PUBLIC 18de5 0 _ZN7testing8internal11CmpHelperEQIjjEENS_15AssertionResultEPKcS4_RKT_RKT0_
+PUBLIC 18e59 0 _ZN7testing8internal11CmpHelperEQIjyEENS_15AssertionResultEPKcS4_RKT_RKT0_
+PUBLIC 1900d 0 _ZN7testing8internal11CmpHelperGTIxiEENS_15AssertionResultEPKcS4_RKT_RKT0_
+PUBLIC 1911d 0 _ZN7testing8internal11CmpHelperEQI20MDExceptionCodeLinuxjEENS_15AssertionResultEPKcS5_RKT_RKT0_
+PUBLIC 19419 0 _Z10ChildCrashb
+PUBLIC 1970d 0 _ZN44ExceptionHandlerTest_ChildCrashWithPath_Test8TestBodyEv
+PUBLIC 19779 0 _ZN42ExceptionHandlerTest_ChildCrashWithFD_Test8TestBodyEv
+PUBLIC 197e9 0 _ZN57ExceptionHandlerTest_RedeliveryOnFilterCallbackFalse_Test8TestBodyEv
+PUBLIC 19931 0 _ZN55ExceptionHandlerTest_RedeliveryOnDoneCallbackFalse_Test8TestBodyEv
+PUBLIC 19a79 0 _ZN56ExceptionHandlerTest_NoRedeliveryOnDoneCallbackTrue_Test8TestBodyEv
+PUBLIC 19bc1 0 _ZN58ExceptionHandlerTest_NoRedeliveryOnFilterCallbackTrue_Test8TestBodyEv
+PUBLIC 19d09 0 _ZN52ExceptionHandlerTest_RedeliveryToDefaultHandler_Test8TestBodyEv
+PUBLIC 19dcd 0 _ZN58ExceptionHandlerTest_RedeliveryOnBadSignalHandlerFlag_Test8TestBodyEv
+PUBLIC 1a03d 0 _ZN55ExceptionHandlerTest_StackedHandlersDeliveredToTop_Test8TestBodyEv
+PUBLIC 1a135 0 _ZN61ExceptionHandlerTest_StackedHandlersNotDeliveredToBottom_Test8TestBodyEv
+PUBLIC 1a22d 0 _ZN57ExceptionHandlerTest_StackedHandlersFilteredToBottom_Test8TestBodyEv
+PUBLIC 1a329 0 _ZN58ExceptionHandlerTest_StackedHandlersUnhandledToBottom_Test8TestBodyEv
+PUBLIC 1a425 0 _ZN40ExceptionHandlerTest_ExternalDumper_Test8TestBodyEv
+PUBLIC 1ab6d 0 _ZN50ExceptionHandlerTest_InstructionPointerMemory_Test8TestBodyEv
+PUBLIC 1b3f1 0 _ZN58ExceptionHandlerTest_InstructionPointerMemoryMinBound_Test8TestBodyEv
+PUBLIC 1bbe9 0 _ZN58ExceptionHandlerTest_InstructionPointerMemoryMaxBound_Test8TestBodyEv
+PUBLIC 1c3e1 0 _ZN61ExceptionHandlerTest_InstructionPointerMemoryNullPointer_Test8TestBodyEv
+PUBLIC 1c839 0 _ZN36ExceptionHandlerTest_ModuleInfo_Test8TestBodyEv
+PUBLIC 1cec9 0 _ZN54ExceptionHandlerTest_WriteMinidumpExceptionStream_Test8TestBodyEv
+PUBLIC 1d1a5 0 _ZN55ExceptionHandlerTest_GenerateMultipleDumpsWithPath_Test8TestBodyEv
+PUBLIC 1d60d 0 _ZN42ExceptionHandlerTest_AdditionalMemory_Test8TestBodyEv
+PUBLIC 1d97d 0 _ZN48ExceptionHandlerTest_AdditionalMemoryRemove_Test8TestBodyEv
+PUBLIC 1dba9 0 _ZN47ExceptionHandlerTest_WriteMinidumpForChild_Test8TestBodyEv
+PUBLIC 1e021 0 _ZN7testing13PrintToStringIPKvEESsRKT_
+PUBLIC 1e08d 0 _ZN7testing8internal11CmpHelperNEIPcS2_EENS_15AssertionResultEPKcS5_RKT_RKT0_
+PUBLIC 1ed81 0 _ZN7testing8internal18CmpHelperEQFailureIiiEENS_15AssertionResultEPKcS4_RKT_RKT0_
+PUBLIC 1ee5d 0 _ZN26CpuSetTest_EmptyCount_Test8TestBodyEv
+PUBLIC 1eedd 0 _ZN22CpuSetTest_OneCpu_Test8TestBodyEv
+PUBLIC 1f089 0 _ZN32CpuSetTest_OneCpuTerminated_Test8TestBodyEv
+PUBLIC 1f235 0 _ZN32CpuSetTest_TwoCpusWithComma_Test8TestBodyEv
+PUBLIC 1f3e5 0 _ZN32CpuSetTest_TwoCpusWithRange_Test8TestBodyEv
+PUBLIC 1f595 0 _ZN32CpuSetTest_TenCpusWithRange_Test8TestBodyEv
+PUBLIC 1f741 0 _ZN26CpuSetTest_MultiItems_Test8TestBodyEv
+PUBLIC 1f8ed 0 _ZN29CpuSetTest_IntersectWith_Test8TestBodyEv
+PUBLIC 1fcd5 0 _ZN32CpuSetTest_SelfIntersection_Test8TestBodyEv
+PUBLIC 1fed1 0 _ZN33CpuSetTest_EmptyIntersection_Test8TestBodyEv
+PUBLIC 203c9 0 _ZNSt4priv8_Rb_treeISsSt4lessISsESsNS_9_IdentityISsEENS_11_SetTraitsTISsEESaISsEE8_M_eraseEPNS_18_Rb_tree_node_baseE
+PUBLIC 2051b 0 _ZNSt4priv8_Rb_treeISsSt4lessISsESsNS_9_IdentityISsEENS_11_SetTraitsTISsEESaISsEE9_M_insertEPNS_18_Rb_tree_node_baseERKSsSA_SA_
+PUBLIC 20589 0 _ZN39DirectoryReaderTest_CompareResults_Test8TestBodyEv
+PUBLIC 20fc9 0 _ZN29LineReaderTest_EmptyFile_Test8TestBodyEv
+PUBLIC 21111 0 _ZN27LineReaderTest_TooLong_Test8TestBodyEv
+PUBLIC 2127d 0 _ZN7testing8internal18CmpHelperEQFailureIjjEENS_15AssertionResultEPKcS4_RKT_RKT0_
+PUBLIC 2131d 0 _ZN7testing8internal18CmpHelperEQFailureIccEENS_15AssertionResultEPKcS4_RKT_RKT0_
+PUBLIC 213bd 0 _ZN7testing8internal11CmpHelperEQIccEENS_15AssertionResultEPKcS4_RKT_RKT0_
+PUBLIC 213dd 0 _ZN37LineReaderTest_OneLineTerminated_Test8TestBodyEv
+PUBLIC 21665 0 _ZN27LineReaderTest_OneLine_Test8TestBodyEv
+PUBLIC 218ed 0 _ZN38LineReaderTest_TwoLinesTerminated_Test8TestBodyEv
+PUBLIC 21cb1 0 _ZN28LineReaderTest_TwoLines_Test8TestBodyEv
+PUBLIC 22075 0 _ZN29LineReaderTest_MaxLength_Test8TestBodyEv
+PUBLIC 22399 0 _ZN38LinuxCoreDumperTest_BuildProcPath_Test8TestBodyEv
+PUBLIC 22751 0 _ZN54LinuxCoreDumperTest_VerifyDumpWithMultipleThreads_Test8TestBodyEv
+PUBLIC 23179 0 _ZN29LinuxPtraceDumperMappingsTest5SetUpEv
+PUBLIC 2344d 0 _ZN37LinuxPtraceDumperChildTest_Setup_Test12RealTestBodyEv
+PUBLIC 23469 0 _ZN44LinuxPtraceDumperChildTest_FindMappings_Test12RealTestBodyEv
+PUBLIC 23639 0 _ZN45LinuxPtraceDumperChildTest_BuildProcPath_Test12RealTestBodyEv
+PUBLIC 23a39 0 _ZN44LinuxPtraceDumperChildTest_FileIDsMatch_Test12RealTestBodyEv
+PUBLIC 23ea5 0 _ZN42LinuxPtraceDumperChildTest_ThreadList_Test12RealTestBodyEv
+PUBLIC 24155 0 _ZN49LinuxPtraceDumperMappingsTest_MergedMappings_Test12RealTestBodyEv
+PUBLIC 243fd 0 _ZN61LinuxPtraceDumperTest_VerifyStackReadWithMultipleThreads_Test8TestBodyEv
+PUBLIC 25071 0 _ZN7testing8internal18CmpHelperEQFailureIPKcSsEENS_15AssertionResultES3_S3_RKT_RKT0_
+PUBLIC 25131 0 _ZN7testing8internal11CmpHelperEQIPKcSsEENS_15AssertionResultES3_S3_RKT_RKT0_
+PUBLIC 2517d 0 _ZN7testing8internal18CmpHelperEQFailureISsSsEENS_15AssertionResultEPKcS4_RKT_RKT0_
+PUBLIC 28ae5 0 _ZN15google_breakpad15GetHelperBinaryEv
+PUBLIC 291f1 0 _ZN36ProcCpuInfoReaderTest_EmptyFile_Test8TestBodyEv
+PUBLIC 29341 0 _ZN44ProcCpuInfoReaderTest_OneLineTerminated_Test8TestBodyEv
+PUBLIC 29571 0 _ZN45ProcCpuInfoReaderTest_TwoLinesTerminated_Test8TestBodyEv
+PUBLIC 2987d 0 _ZN44ProcCpuInfoReaderTest_SkipMalformedLine_Test8TestBodyEv
+PUBLIC 29aad 0 _ZN43ProcCpuInfoReaderTest_SkipOneEmptyLine_Test8TestBodyEv
+PUBLIC 29cdd 0 _ZN41ProcCpuInfoReaderTest_SkipEmptyField_Test8TestBodyEv
+PUBLIC 29f0d 0 _ZN44ProcCpuInfoReaderTest_SkipTwoEmptyLines_Test8TestBodyEv
+PUBLIC 2a20d 0 _ZN42ProcCpuInfoReaderTest_FieldWithSpaces_Test8TestBodyEv
+PUBLIC 2a43d 0 _ZN37ProcCpuInfoReaderTest_EmptyValue_Test8TestBodyEv
+PUBLIC 2a6d1 0 _ZN34ProcCpuInfoReaderTest_OneLine_Test8TestBodyEv
+PUBLIC 2ab19 0 _ZN7testing8internal18CmpHelperEQFailureIPK6elfhdrS4_EENS_15AssertionResultEPKcS7_RKT_RKT0_
+PUBLIC 2abb9 0 _ZN39ElfCoreDumpTest_DefaultConstructor_Test8TestBodyEv
+PUBLIC 2aeb5 0 _ZNSt4priv8_Rb_treeIiSt4lessIiEiNS_9_IdentityIiEENS_11_SetTraitsTIiEESaIiEE8_M_eraseEPNS_18_Rb_tree_node_baseE
+PUBLIC 2aef1 0 _ZN34ElfCoreDumpTest_TestElfHeader_Test8TestBodyEv
+PUBLIC 2be4d 0 _ZNSt4priv8_Rb_treeIiSt4lessIiEiNS_9_IdentityIiEENS_11_SetTraitsTIiEESaIiEE9_M_insertEPNS_18_Rb_tree_node_baseERKiSA_SA_
+PUBLIC 2bee5 0 _ZNSt4priv8_Rb_treeIiSt4lessIiEiNS_9_IdentityIiEENS_11_SetTraitsTIiEESaIiEE13insert_uniqueERKi
+PUBLIC 2bf75 0 _ZN34ElfCoreDumpTest_ValidCoreFile_Test8TestBodyEv
+PUBLIC 2cbfb 0 _ZNSt4priv8_Rb_treeISsSt4lessISsESt4pairIKSsN15google_breakpad14test_assembler5LabelEENS_10_Select1stIS8_EENS_11_MapTraitsTIS8_EESaIS8_EE8_M_eraseEPNS_18_Rb_tree_node_baseE
+PUBLIC 2da29 0 _ZN7testing8internal18CmpHelperOpFailureIjjEENS_15AssertionResultEPKcS4_RKT_RKT0_S4_
+PUBLIC 2dd21 0 _ZN24FileIDTest_ElfClass_TestIN15google_breakpad10ElfClass32EE8TestBodyEv
+PUBLIC 2dee5 0 _ZN23FileIDTest_BuildID_TestIN15google_breakpad10ElfClass32EE8TestBodyEv
+PUBLIC 2e159 0 _ZN25FileIDTest_BuildIDPH_TestIN15google_breakpad10ElfClass32EE8TestBodyEv
+PUBLIC 2e401 0 _ZN28FileIDTest_UniqueHashes_TestIN15google_breakpad10ElfClass32EE8TestBodyEv
+PUBLIC 2e791 0 _ZN24FileIDTest_ElfClass_TestIN15google_breakpad10ElfClass64EE8TestBodyEv
+PUBLIC 2e955 0 _ZN23FileIDTest_BuildID_TestIN15google_breakpad10ElfClass64EE8TestBodyEv
+PUBLIC 2ebc9 0 _ZN25FileIDTest_BuildIDPH_TestIN15google_breakpad10ElfClass64EE8TestBodyEv
+PUBLIC 2ee71 0 _ZN28FileIDTest_UniqueHashes_TestIN15google_breakpad10ElfClass64EE8TestBodyEv
+PUBLIC 2f4f9 0 _ZN32LinuxLibcSupportTest_strlen_Test8TestBodyEv
+PUBLIC 2f59d 0 _ZN34LinuxLibcSupportTest_uint_len_Test8TestBodyEv
+PUBLIC 2f8c5 0 _ZN32LinuxLibcSupportTest_strcmp_Test8TestBodyEv
+PUBLIC 2f989 0 _ZN33LinuxLibcSupportTest_strtoui_Test8TestBodyEv
+PUBLIC 2fee1 0 _ZN31LinuxLibcSupportTest_uitos_Test8TestBodyEv
+PUBLIC 30161 0 _ZN7testing8internal11CmpHelperEQIPKcS3_EENS_15AssertionResultES3_S3_RKT_RKT0_
+PUBLIC 301dd 0 _ZN33LinuxLibcSupportTest_strrchr_Test8TestBodyEv
+PUBLIC 30515 0 _ZN32LinuxLibcSupportTest_strchr_Test8TestBodyEv
+PUBLIC 30895 0 _ZN7testing8internal18CmpHelperEQFailureIPvS2_EENS_15AssertionResultEPKcS5_RKT_RKT0_
+PUBLIC 308f9 0 _ZN7testing8internal11CmpHelperEQIA10_cPvEENS_15AssertionResultEPKcS6_RKT_RKT0_
+PUBLIC 3096d 0 _ZN7testing8internal11CmpHelperEQIPKcPvEENS_15AssertionResultES3_S3_RKT_RKT0_
+PUBLIC 309e5 0 _ZN32LinuxLibcSupportTest_memchr_Test8TestBodyEv
+PUBLIC 30c75 0 _ZN7testing13PrintToStringIcEESsRKT_
+PUBLIC 30cbd 0 _ZN7testing8internal11CmpHelperEQIciEENS_15AssertionResultEPKcS4_RKT_RKT0_
+PUBLIC 30d31 0 _ZN38LinuxLibcSupportTest_read_hex_ptr_Test8TestBodyEv
+PUBLIC 3103d 0 _ZN42LinuxLibcSupportTest_read_decimal_ptr_Test8TestBodyEv
+PUBLIC 312d7 0 _ZN15google_breakpad9synth_elf3ELF13AppendSectionERNS1_10ElfSectionE
+PUBLIC 31315 0 _ZN15google_breakpad9synth_elf3ELF10AddSegmentEiijj
+PUBLIC 31453 0 _ZN15google_breakpad9synth_elf5Notes7AddNoteEiRKSsPKhj
+PUBLIC 315a1 0 _ZN15google_breakpad9synth_elf11SymbolTableC2ENS_14test_assembler10EndiannessEjRNS0_11StringTableE
+PUBLIC 3162d 0 _ZNSt4priv12_Impl_vectorIN15google_breakpad9synth_elf3ELF10ElfSectionESaIS4_EE22_M_insert_overflow_auxEPS4_RKS4_RKSt12__false_typejb
+PUBLIC 317cb 0 _ZNSt4priv8_Rb_treeISsSt4lessISsESt4pairIKSsN15google_breakpad14test_assembler5LabelEENS_10_Select1stIS8_EENS_11_MapTraitsTIS8_EESaIS8_EE9_M_insertEPNS_18_Rb_tree_node_baseERKS8_SG_SG_
+PUBLIC 31839 0 _ZNSt4priv8_Rb_treeISsSt4lessISsESt4pairIKSsN15google_breakpad14test_assembler5LabelEENS_10_Select1stIS8_EENS_11_MapTraitsTIS8_EESaIS8_EE13insert_uniqueERKS8_
+PUBLIC 318b1 0 _ZNSt4priv8_Rb_treeISsSt4lessISsESt4pairIKSsN15google_breakpad14test_assembler5LabelEENS_10_Select1stIS8_EENS_11_MapTraitsTIS8_EESaIS8_EE13insert_uniqueENS_17_Rb_tree_iteratorIS8_SC_EERKS8_
+PUBLIC 31b75 0 _ZN15google_breakpad9synth_elf11SymbolTable9AddSymbolERKSsjjjt
+PUBLIC 31bcd 0 _ZN15google_breakpad9synth_elf11SymbolTable9AddSymbolERKSsyyjt
+PUBLIC 31c29 0 _ZN15google_breakpad9synth_elf3ELF10AddSectionERKSsRKNS_14test_assembler7SectionEjjyjyy
+PUBLIC 31db5 0 _ZN15google_breakpad9synth_elf3ELF6FinishEv
+PUBLIC 31e91 0 _ZN15google_breakpad9synth_elf3ELFC1EthNS_14test_assembler10EndiannessE
+PUBLIC 32219 0 _ZNK15google_breakpad14CrashGenerator21HasDefaultCorePatternEv
+PUBLIC 32275 0 _ZNK15google_breakpad14CrashGenerator11GetThreadIdEj
+PUBLIC 3227d 0 _ZN15google_breakpad14CrashGenerator18GetThreadIdPointerEj
+PUBLIC 32285 0 _ZN15google_breakpad14CrashGenerator17UnmapSharedMemoryEv
+PUBLIC 322b1 0 _ZN15google_breakpad14CrashGenerator15MapSharedMemoryEj
+PUBLIC 32305 0 _ZNK15google_breakpad14CrashGenerator20SetCoreFileSizeLimitEm
+PUBLIC 32331 0 _ZNK15google_breakpad14CrashGenerator13CopyProcFilesEiPKc
+PUBLIC 323e5 0 _ZN15google_breakpad14CrashGenerator27CreateThreadsInChildProcessEj
+PUBLIC 3251b 0 _ZN15google_breakpad14CrashGeneratorC1Ev
+PUBLIC 3252d 0 _ZN15google_breakpad14CrashGeneratorD1Ev
+PUBLIC 32549 0 _ZNK15google_breakpad14CrashGenerator15GetCoreFilePathEv
+PUBLIC 3255d 0 _ZNK15google_breakpad14CrashGenerator27GetDirectoryOfProcFilesCopyEv
+PUBLIC 32571 0 _ZN15google_breakpad14CrashGenerator16CreateChildCrashEjjiPi
+PUBLIC 329d1 0 _ZN28PageAllocatorTest_Setup_Test8TestBodyEv
+PUBLIC 329f5 0 _ZN35PageAllocatorTest_SmallObjects_Test8TestBodyEv
+PUBLIC 32add 0 _ZN34PageAllocatorTest_LargeObject_Test8TestBodyEv
+PUBLIC 32cb9 0 _ZN29WastefulVectorTest_Setup_Test8TestBodyEv
+PUBLIC 32d65 0 _ZNSt4priv12_Impl_vectorIjN15google_breakpad16PageStdAllocatorIjEEE7reserveEj
+PUBLIC 32dc1 0 _ZN30WastefulVectorTest_Simple_Test8TestBodyEv
+PUBLIC 330ed 0 _ZN41WastefulVectorTest_UsesPageAllocator_Test8TestBodyEv
+PUBLIC 33749 0 _ZN15google_breakpad31NonAllocatingMapTest_Entry_Test8TestBodyEv
+PUBLIC 33be5 0 _ZN15google_breakpad39NonAllocatingMapTest_CopyAndAssign_Test8TestBodyEv
+PUBLIC 34385 0 _ZN15google_breakpad35NonAllocatingMapTest_AddRemove_Test8TestBodyEv
+PUBLIC 348c9 0 _ZN15google_breakpad35NonAllocatingMapTest_Serialize_Test8TestBodyEv
+PUBLIC 34d61 0 _ZN15google_breakpad36NonAllocatingMapTest_OutOfSpace_Test8TestBodyEv
+PUBLIC 34f05 0 _ZN7testing8internal11CmpHelperNEIPKcA7_cEENS_15AssertionResultES3_S3_RKT_RKT0_
+PUBLIC 35009 0 _ZN15google_breakpad48NonAllocatingMapTest_SimpleStringDictionary_Test8TestBodyEv
+PUBLIC 35481 0 _ZN15google_breakpad34NonAllocatingMapTest_Iterator_Test8TestBodyEv
+PUBLIC 35929 0 _ZN15google_breakpad14test_assembler5LabelC1Ev
+PUBLIC 35949 0 _ZN15google_breakpad14test_assembler5LabelC2Ey
+PUBLIC 35969 0 _ZN15google_breakpad14test_assembler5LabelC1ERKS1_
+PUBLIC 35975 0 _ZN15google_breakpad14test_assembler5Label7BindingC2Ev
+PUBLIC 35989 0 _ZN15google_breakpad14test_assembler5Label7BindingC2Ey
+PUBLIC 35999 0 _ZN15google_breakpad14test_assembler5Label7BindingD2Ev
+PUBLIC 359c1 0 _ZN15google_breakpad14test_assembler5LabelD1Ev
+PUBLIC 359e3 0 _ZN15google_breakpad14test_assembler5Label7Binding3GetEPPS2_Py
+PUBLIC 35a49 0 _ZNK15google_breakpad14test_assembler5Label15IsKnownConstantEPy
+PUBLIC 35a71 0 _ZNK15google_breakpad14test_assembler5Label5ValueEv
+PUBLIC 35a8b 0 _ZNK15google_breakpad14test_assembler5Label17IsKnownOffsetFromERKS1_Py
+PUBLIC 35acf 0 _ZNK15google_breakpad14test_assembler5LabelmiERKS1_
+PUBLIC 35ae1 0 _ZN15google_breakpad14test_assembler5Label7Binding3SetEPS2_y
+PUBLIC 35b61 0 _ZN15google_breakpad14test_assembler5LabelaSEy
+PUBLIC 35b71 0 _ZN15google_breakpad14test_assembler5LabelaSERKS1_
+PUBLIC 35b85 0 _ZNK15google_breakpad14test_assembler5LabelplEy
+PUBLIC 35ba3 0 _ZNK15google_breakpad14test_assembler5LabelmiEy
+PUBLIC 35bc3 0 _ZN15google_breakpad14test_assembler7Section5AlignEjh
+PUBLIC 35be3 0 _ZN15google_breakpad14test_assembler7Section6LEB128Ex
+PUBLIC 35c27 0 _ZN15google_breakpad14test_assembler7Section7ULEB128Ey
+PUBLIC 35cbb 0 _ZN15google_breakpad14test_assembler7Section6AppendENS0_10EndiannessEjy
+PUBLIC 35cd7 0 _ZN15google_breakpad14test_assembler7Section3L16Et
+PUBLIC 35cf1 0 _ZN15google_breakpad14test_assembler7Section3L32Ej
+PUBLIC 35d0d 0 _ZN15google_breakpad14test_assembler7Section3L64Ey
+PUBLIC 35d25 0 _ZN15google_breakpad14test_assembler7Section3B16Et
+PUBLIC 35d3f 0 _ZN15google_breakpad14test_assembler7Section3B32Ej
+PUBLIC 35d5b 0 _ZN15google_breakpad14test_assembler7Section3B64Ey
+PUBLIC 35d73 0 _ZN15google_breakpad14test_assembler7Section3D16Et
+PUBLIC 35d8d 0 _ZN15google_breakpad14test_assembler7Section3D32Ej
+PUBLIC 35da9 0 _ZN15google_breakpad14test_assembler7Section3D64Ey
+PUBLIC 35de1 0 _ZN15google_breakpad14test_assembler7Section5ClearEv
+PUBLIC 35eb1 0 _ZN15google_breakpad14test_assembler7Section11GetContentsEPSs
+PUBLIC 35f9d 0 _ZNSt4priv12_Impl_vectorIN15google_breakpad14test_assembler7Section9ReferenceESaIS4_EE22_M_insert_overflow_auxEPS4_RKS4_RKSt12__false_typejb
+PUBLIC 3619b 0 _ZN15google_breakpad14test_assembler7Section6AppendENS0_10EndiannessEjRKNS0_5LabelE
+PUBLIC 36205 0 _ZN15google_breakpad14test_assembler7Section2L8ERKNS0_5LabelE
+PUBLIC 3620f 0 _ZN15google_breakpad14test_assembler7Section2B8ERKNS0_5LabelE
+PUBLIC 36219 0 _ZN15google_breakpad14test_assembler7Section3L16ERKNS0_5LabelE
+PUBLIC 36223 0 _ZN15google_breakpad14test_assembler7Section3L32ERKNS0_5LabelE
+PUBLIC 3622d 0 _ZN15google_breakpad14test_assembler7Section3L64ERKNS0_5LabelE
+PUBLIC 36237 0 _ZN15google_breakpad14test_assembler7Section3B16ERKNS0_5LabelE
+PUBLIC 36241 0 _ZN15google_breakpad14test_assembler7Section3B32ERKNS0_5LabelE
+PUBLIC 3624b 0 _ZN15google_breakpad14test_assembler7Section3B64ERKNS0_5LabelE
+PUBLIC 36255 0 _ZN15google_breakpad14test_assembler7Section2D8ERKNS0_5LabelE
+PUBLIC 3625f 0 _ZN15google_breakpad14test_assembler7Section3D16ERKNS0_5LabelE
+PUBLIC 36269 0 _ZN15google_breakpad14test_assembler7Section3D32ERKNS0_5LabelE
+PUBLIC 36273 0 _ZN15google_breakpad14test_assembler7Section3D64ERKNS0_5LabelE
+PUBLIC 3627d 0 _ZN15google_breakpad14test_assembler7Section6AppendERKS1_
+PUBLIC 363ad 0 _ZN15google_breakpad8CopyFileEPKcS1_
+PUBLIC 36505 0 _ZN15google_breakpad8ReadFileEPKcPvPi
+PUBLIC 365a1 0 _ZN15google_breakpad9WriteFileEPKcPKvj
+PUBLIC 36b95 0 _ZN7testing8internal18CmpHelperEQFailureIPKiS3_EENS_15AssertionResultEPKcS6_RKT_RKT0_
+PUBLIC 36c5d 0 _ZN7testing8internal11CmpHelperEQIA1_cSsEENS_15AssertionResultEPKcS5_RKT_RKT0_
+PUBLIC 36cf5 0 _ZN45MinidumpMemoryRangeTest_GetAsciiMDString_Test8TestBodyEv
+PUBLIC 36ffd 0 _ZN7testing13PrintToStringIPKhEESsRKT_
+PUBLIC 37045 0 _ZN7testing8internal11CmpHelperEQIPKhS3_EENS_15AssertionResultEPKcS6_RKT_RKT0_
+PUBLIC 370b9 0 _ZN57MinidumpMemoryRangeTest_ConstructorWithDataAndLength_Test8TestBodyEv
+PUBLIC 37199 0 _ZN47MinidumpMemoryRangeTest_DefaultConstructor_Test8TestBodyEv
+PUBLIC 3726d 0 _ZN55MinidumpMemoryRangeTest_SubrangeOfEmptyMemoryRange_Test8TestBodyEv
+PUBLIC 37355 0 _ZN32MinidumpMemoryRangeTest_Set_Test8TestBodyEv
+PUBLIC 374f5 0 _ZN34MinidumpMemoryRangeTest_Reset_Test8TestBodyEv
+PUBLIC 37759 0 _ZN7testing8internal11CmpHelperEQIPKhPKvEENS_15AssertionResultEPKcS8_RKT_RKT0_
+PUBLIC 377cd 0 _ZN7testing8internal11CmpHelperEQIPKvS3_EENS_15AssertionResultEPKcS6_RKT_RKT0_
+PUBLIC 37841 0 _ZN44MinidumpMemoryRangeTest_GetArrayElement_Test8TestBodyEv
+PUBLIC 37989 0 _ZN61MinidumpMemoryRangeTest_SubrangeWithMDLocationDescriptor_Test8TestBodyEv
+PUBLIC 37e19 0 _ZN47MinidumpMemoryRangeTest_SubrangeAndGetData_Test8TestBodyEv
+PUBLIC 382a9 0 _ZN7testing8internal18CmpHelperEQFailureIPKcS3_EENS_15AssertionResultES3_S3_RKT_RKT0_
+PUBLIC 38315 0 _ZN59MinidumpMemoryRangeTest_GetArrayElmentWithTemplateType_Test8TestBodyEv
+PUBLIC 38439 0 _ZN52MinidumpMemoryRangeTest_GetDataWithTemplateType_Test8TestBodyEv
+PUBLIC 385f5 0 _ZN32AndroidUContext_GRegsOffset_Test8TestBodyEv
+PUBLIC 38655 0 _ZN33AndroidUContext_SigmakOffset_Test8TestBodyEv
+STACK CFI INIT 15dc4 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15dc6 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15dc8 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15dcc 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15dd0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15dd4 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15dd8 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15ddc 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15dc8 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de4 ac .cfa: sp 0 + .ra: lr
+STACK CFI 15de6 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 15e90 9e .cfa: sp 0 + .ra: lr
+STACK CFI 15e92 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 15e94 .cfa: sp 40 +
+STACK CFI 15f2c .cfa: sp 20 +
+STACK CFI INIT 15dc8 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f2e 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f3e 16 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f54 3e .cfa: sp 0 + .ra: lr
+STACK CFI 15f56 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f92 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f9e 1a .cfa: sp 0 + .ra: lr
+STACK CFI 15fa0 .cfa: sp 16 + .ra: .cfa -4 + ^
+STACK CFI 15fb4 .cfa: sp 4 +
+STACK CFI INIT 15ddc 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15fb8 18 .cfa: sp 0 + .ra: lr
+STACK CFI 15fba .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15ddc 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fdc 54 .cfa: sp 0 + .ra: lr
+STACK CFI 15fe0 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 16030 4c .cfa: sp 0 + .ra: lr
+STACK CFI 16034 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 1607c 1c .cfa: sp 0 + .ra: lr
+STACK CFI 16080 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16098 12 .cfa: sp 0 + .ra: lr
+STACK CFI 1609a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 160ac 1c .cfa: sp 0 + .ra: lr
+STACK CFI 160b0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 160c8 12 .cfa: sp 0 + .ra: lr
+STACK CFI 160ca .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 160dc 2c .cfa: sp 0 + .ra: lr
+STACK CFI 160de .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 16100 .cfa: sp 8 +
+STACK CFI INIT 16108 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 1610e c .cfa: sp 0 + .ra: lr
+STACK CFI 16110 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 1611c 18 .cfa: sp 0 + .ra: lr
+STACK CFI 1611e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16134 12 .cfa: sp 0 + .ra: lr
+STACK CFI 16136 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16148 18 .cfa: sp 0 + .ra: lr
+STACK CFI 1614a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16160 12 .cfa: sp 0 + .ra: lr
+STACK CFI 16162 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16174 18 .cfa: sp 0 + .ra: lr
+STACK CFI 16176 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1618c 12 .cfa: sp 0 + .ra: lr
+STACK CFI 1618e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 161a0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 161a2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 161b8 12 .cfa: sp 0 + .ra: lr
+STACK CFI 161ba .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 161cc 18 .cfa: sp 0 + .ra: lr
+STACK CFI 161ce .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 161e4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 161e6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 161f8 18 .cfa: sp 0 + .ra: lr
+STACK CFI 161fa .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16210 12 .cfa: sp 0 + .ra: lr
+STACK CFI 16212 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16224 18 .cfa: sp 0 + .ra: lr
+STACK CFI 16226 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1623c 12 .cfa: sp 0 + .ra: lr
+STACK CFI 1623e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16250 18 .cfa: sp 0 + .ra: lr
+STACK CFI 16252 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16268 12 .cfa: sp 0 + .ra: lr
+STACK CFI 1626a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1627c 18 .cfa: sp 0 + .ra: lr
+STACK CFI 1627e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16294 12 .cfa: sp 0 + .ra: lr
+STACK CFI 16296 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 162a8 18 .cfa: sp 0 + .ra: lr
+STACK CFI 162aa .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 162c0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 162c2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 162d4 18 .cfa: sp 0 + .ra: lr
+STACK CFI 162d6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 162ec 12 .cfa: sp 0 + .ra: lr
+STACK CFI 162ee .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16300 18 .cfa: sp 0 + .ra: lr
+STACK CFI 16302 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16318 12 .cfa: sp 0 + .ra: lr
+STACK CFI 1631a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1632c 18 .cfa: sp 0 + .ra: lr
+STACK CFI 1632e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16344 12 .cfa: sp 0 + .ra: lr
+STACK CFI 16346 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16358 18 .cfa: sp 0 + .ra: lr
+STACK CFI 1635a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16370 12 .cfa: sp 0 + .ra: lr
+STACK CFI 16372 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16384 18 .cfa: sp 0 + .ra: lr
+STACK CFI 16386 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1639c 12 .cfa: sp 0 + .ra: lr
+STACK CFI 1639e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 163b0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 163b2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 163c8 12 .cfa: sp 0 + .ra: lr
+STACK CFI 163ca .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 163dc 18 .cfa: sp 0 + .ra: lr
+STACK CFI 163de .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 163f4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 163f6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16408 18 .cfa: sp 0 + .ra: lr
+STACK CFI 1640a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16420 12 .cfa: sp 0 + .ra: lr
+STACK CFI 16422 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16434 18 .cfa: sp 0 + .ra: lr
+STACK CFI 16436 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1644c 12 .cfa: sp 0 + .ra: lr
+STACK CFI 1644e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16460 18 .cfa: sp 0 + .ra: lr
+STACK CFI 16462 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16478 12 .cfa: sp 0 + .ra: lr
+STACK CFI 1647a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1648c 18 .cfa: sp 0 + .ra: lr
+STACK CFI 1648e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 164a4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 164a6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 164b8 18 .cfa: sp 0 + .ra: lr
+STACK CFI 164ba .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 164d0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 164d2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 164e4 18 .cfa: sp 0 + .ra: lr
+STACK CFI 164e6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 164fc 12 .cfa: sp 0 + .ra: lr
+STACK CFI 164fe .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16510 18 .cfa: sp 0 + .ra: lr
+STACK CFI 16512 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16528 12 .cfa: sp 0 + .ra: lr
+STACK CFI 1652a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1653c 18 .cfa: sp 0 + .ra: lr
+STACK CFI 1653e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16554 12 .cfa: sp 0 + .ra: lr
+STACK CFI 16556 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16568 18 .cfa: sp 0 + .ra: lr
+STACK CFI 1656a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16580 12 .cfa: sp 0 + .ra: lr
+STACK CFI 16582 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16592 80 .cfa: sp 0 + .ra: lr
+STACK CFI 16594 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 16610 .cfa: sp 20 +
+STACK CFI INIT 16614 20 .cfa: sp 0 + .ra: lr
+STACK CFI 16616 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16634 20 .cfa: sp 0 + .ra: lr
+STACK CFI 16636 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16654 20 .cfa: sp 0 + .ra: lr
+STACK CFI 16656 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16674 20 .cfa: sp 0 + .ra: lr
+STACK CFI 16676 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16694 20 .cfa: sp 0 + .ra: lr
+STACK CFI 16696 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 166b4 20 .cfa: sp 0 + .ra: lr
+STACK CFI 166b6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 166d4 20 .cfa: sp 0 + .ra: lr
+STACK CFI 166d6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 166f4 20 .cfa: sp 0 + .ra: lr
+STACK CFI 166f6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16714 20 .cfa: sp 0 + .ra: lr
+STACK CFI 16716 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16734 20 .cfa: sp 0 + .ra: lr
+STACK CFI 16736 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16754 20 .cfa: sp 0 + .ra: lr
+STACK CFI 16756 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16774 20 .cfa: sp 0 + .ra: lr
+STACK CFI 16776 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16794 20 .cfa: sp 0 + .ra: lr
+STACK CFI 16796 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 167b4 20 .cfa: sp 0 + .ra: lr
+STACK CFI 167b6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 167d4 20 .cfa: sp 0 + .ra: lr
+STACK CFI 167d6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 167f4 20 .cfa: sp 0 + .ra: lr
+STACK CFI 167f6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16814 20 .cfa: sp 0 + .ra: lr
+STACK CFI 16816 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16834 20 .cfa: sp 0 + .ra: lr
+STACK CFI 16836 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16854 20 .cfa: sp 0 + .ra: lr
+STACK CFI 16856 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16874 20 .cfa: sp 0 + .ra: lr
+STACK CFI 16876 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16894 20 .cfa: sp 0 + .ra: lr
+STACK CFI 16896 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 168b4 20 .cfa: sp 0 + .ra: lr
+STACK CFI 168b6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 168d4 20 .cfa: sp 0 + .ra: lr
+STACK CFI 168d6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 168f4 20 .cfa: sp 0 + .ra: lr
+STACK CFI 168f6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16914 20 .cfa: sp 0 + .ra: lr
+STACK CFI 16916 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16934 20 .cfa: sp 0 + .ra: lr
+STACK CFI 16936 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16954 118 .cfa: sp 0 + .ra: lr
+STACK CFI 16958 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 1695c .cfa: sp 128 +
+STACK CFI 16a62 .cfa: sp 28 +
+STACK CFI INIT 16a6c 54 .cfa: sp 0 + .ra: lr
+STACK CFI 16a70 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 16ac0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 16ac6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16ad8 14 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16aec 1e .cfa: sp 0 + .ra: lr
+STACK CFI 16aee .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16b0a 1e .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16b28 16 .cfa: sp 0 + .ra: lr
+STACK CFI 16b2a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16b40 24 .cfa: sp 0 + .ra: lr
+STACK CFI 16b44 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16b64 12 .cfa: sp 0 + .ra: lr
+STACK CFI 16b66 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16b76 28 .cfa: sp 0 + .ra: lr
+STACK CFI 16b78 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 16b9e e .cfa: sp 0 + .ra: lr
+STACK CFI 16ba0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16bac 9c .cfa: sp 0 + .ra: lr
+STACK CFI 16bb0 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 16bbc .cfa: sp 48 +
+STACK CFI 16c3e .cfa: sp 28 +
+STACK CFI INIT 16c48 78 .cfa: sp 0 + .ra: lr
+STACK CFI 16c4a .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 16cc0 66 .cfa: sp 0 + .ra: lr
+STACK CFI 16cc2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 16d26 42 .cfa: sp 0 + .ra: lr
+STACK CFI 16d28 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 16d68 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16d6e 1c .cfa: sp 0 + .ra: lr
+STACK CFI 16d70 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 16d8a 28 .cfa: sp 0 + .ra: lr
+STACK CFI 16d8e .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 16db4 38 .cfa: sp 0 + .ra: lr
+STACK CFI 16db6 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 16de6 .cfa: sp 8 +
+STACK CFI INIT 16dec 18 .cfa: sp 0 + .ra: lr
+STACK CFI 16dee .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16e04 2e .cfa: sp 0 + .ra: lr
+STACK CFI 16e08 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 16e30 .cfa: sp 12 +
+STACK CFI INIT 16e34 ac .cfa: sp 0 + .ra: lr
+STACK CFI 16e38 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 16ec4 .cfa: sp 24 +
+STACK CFI INIT 16ee0 78 .cfa: sp 0 + .ra: lr
+STACK CFI 16ee2 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 16f4c .cfa: sp 16 +
+STACK CFI INIT 16f58 30 .cfa: sp 0 + .ra: lr
+STACK CFI 16f5a .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 16f88 28 .cfa: sp 0 + .ra: lr
+STACK CFI 16f8a .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 16fb0 2a .cfa: sp 0 + .ra: lr
+STACK CFI 16fb2 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 16fd8 .cfa: sp 12 +
+STACK CFI INIT 16fdc 68 .cfa: sp 0 + .ra: lr
+STACK CFI 16fe0 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 16fe4 .cfa: sp 224 +
+STACK CFI 17038 .cfa: sp 28 +
+STACK CFI INIT 17044 16 .cfa: sp 0 + .ra: lr
+STACK CFI 17046 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 17056 .cfa: sp 0 + .ra: .ra r4: r4
+STACK CFI INIT 1705c 54 .cfa: sp 0 + .ra: lr
+STACK CFI 1705e .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 170b0 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170b8 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170c4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 170c6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 170d6 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170e2 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170ec 54 .cfa: sp 0 + .ra: lr
+STACK CFI 170ee .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 17140 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17148 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17154 12 .cfa: sp 0 + .ra: lr
+STACK CFI 17156 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 17166 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17172 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 1717c 8c .cfa: sp 0 + .ra: lr
+STACK CFI 1717e .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 17208 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17210 80 .cfa: sp 0 + .ra: lr
+STACK CFI 17212 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 17290 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17298 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172a0 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172a8 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172b4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 172b6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 172c6 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172ce c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172dc c0 .cfa: sp 0 + .ra: lr
+STACK CFI 172e0 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 172e6 .cfa: sp 264 +
+STACK CFI 17392 .cfa: sp 36 +
+STACK CFI INIT 1739c 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173a4 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173ac c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173b8 12 .cfa: sp 0 + .ra: lr
+STACK CFI 173ba .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 173ca 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173d2 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173de 2c .cfa: sp 0 + .ra: lr
+STACK CFI 173e0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1740a 40 .cfa: sp 0 + .ra: lr
+STACK CFI 1740c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1744a 24 .cfa: sp 0 + .ra: lr
+STACK CFI 1744c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1746e b4 .cfa: sp 0 + .ra: lr
+STACK CFI 17470 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 17520 .cfa: sp 20 +
+STACK CFI INIT 17522 90 .cfa: sp 0 + .ra: lr
+STACK CFI 17524 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 17526 .cfa: sp 80 +
+STACK CFI 175b0 .cfa: sp 20 +
+STACK CFI INIT 175b2 98 .cfa: sp 0 + .ra: lr
+STACK CFI 175b6 .cfa: sp 40 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 17646 .cfa: sp 28 +
+STACK CFI INIT 1764a 90 .cfa: sp 0 + .ra: lr
+STACK CFI 1764c .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 1764e .cfa: sp 80 +
+STACK CFI 176d8 .cfa: sp 20 +
+STACK CFI INIT 176da 16 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 176f0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 176f2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 1772c d8 .cfa: sp 0 + .ra: lr
+STACK CFI 17732 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 17800 .cfa: sp 24 +
+STACK CFI INIT 17804 44 .cfa: sp 0 + .ra: lr
+STACK CFI 17806 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 17848 1a4 .cfa: sp 0 + .ra: lr
+STACK CFI 1784c .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 17850 .cfa: sp 216 +
+STACK CFI 179c4 .cfa: sp 36 +
+STACK CFI INIT 179ec 1a .cfa: sp 0 + .ra: lr
+STACK CFI 179ee .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 17a02 .cfa: sp 0 + .ra: .ra r3: r3 r4: r4 r5: r5
+STACK CFI INIT 17a06 10 .cfa: sp 0 + .ra: lr
+STACK CFI 17a08 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 17a18 6c .cfa: sp 0 + .ra: lr
+STACK CFI 17a1e .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 17a26 .cfa: sp 56 +
+STACK CFI 17a7a .cfa: sp 24 +
+STACK CFI INIT 17a84 2c .cfa: sp 0 + .ra: lr
+STACK CFI 17a86 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 17aae .cfa: sp 16 +
+STACK CFI INIT 17ab0 38 .cfa: sp 0 + .ra: lr
+STACK CFI 17ab2 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 17ae0 .cfa: sp 16 +
+STACK CFI INIT 17a84 2c .cfa: sp 0 + .ra: lr
+STACK CFI 17a86 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 17aae .cfa: sp 16 +
+STACK CFI INIT 17ae8 2c .cfa: sp 0 + .ra: lr
+STACK CFI 17aea .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 17b12 .cfa: sp 16 +
+STACK CFI INIT 17a84 2c .cfa: sp 0 + .ra: lr
+STACK CFI 17a86 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 17aae .cfa: sp 16 +
+STACK CFI INIT 17b14 90 .cfa: sp 0 + .ra: lr
+STACK CFI 17b1a .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 17ba0 .cfa: sp 24 +
+STACK CFI INIT 17ba4 46 .cfa: sp 0 + .ra: lr
+STACK CFI 17ba6 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 17be8 .cfa: sp 20 +
+STACK CFI INIT 17bec 2c8 .cfa: sp 0 + .ra: lr
+STACK CFI 17bf0 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 17bf4 .cfa: sp 256 +
+STACK CFI 17e60 .cfa: sp 36 +
+STACK CFI INIT 17eb4 14 .cfa: sp 0 + .ra: lr
+STACK CFI 17eb6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 17ec8 64 .cfa: sp 0 + .ra: lr
+STACK CFI 17ecc .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 17ed8 .cfa: sp 56 +
+STACK CFI 17f1e .cfa: sp 24 +
+STACK CFI INIT 17f2c 88 .cfa: sp 0 + .ra: lr
+STACK CFI 17f30 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 17f34 .cfa: sp 280 +
+STACK CFI 17faa .cfa: sp 28 +
+STACK CFI INIT 17fb4 180 .cfa: sp 0 + .ra: lr
+STACK CFI 17fb8 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 17fbc .cfa: sp 296 +
+STACK CFI 1810e .cfa: sp 36 +
+STACK CFI INIT 18134 a4 .cfa: sp 0 + .ra: lr
+STACK CFI 18138 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 181d4 .cfa: sp 24 +
+STACK CFI INIT 181d8 48 .cfa: sp 0 + .ra: lr
+STACK CFI 181da .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 181e6 .cfa: sp 184 +
+STACK CFI 1821a .cfa: sp 20 +
+STACK CFI INIT 18220 d4 .cfa: sp 0 + .ra: lr
+STACK CFI 18224 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 18228 .cfa: sp 112 +
+STACK CFI 182d6 .cfa: sp 28 +
+STACK CFI INIT 182f4 2c .cfa: sp 0 + .ra: lr
+STACK CFI 182f6 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 18318 .cfa: sp 20 +
+STACK CFI INIT 18320 74 .cfa: sp 0 + .ra: lr
+STACK CFI 18324 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 18328 .cfa: sp 96 +
+STACK CFI 1838c .cfa: sp 32 +
+STACK CFI INIT 18394 178 .cfa: sp 0 + .ra: lr
+STACK CFI 18398 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 183a4 .cfa: sp 96 +
+STACK CFI 184da .cfa: sp 28 +
+STACK CFI INIT 1850c 2ac .cfa: sp 0 + .ra: lr
+STACK CFI 18510 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 18516 .cfa: sp 112 +
+STACK CFI 1875c .cfa: sp 36 +
+STACK CFI 18760 .cfa: sp 0 + .ra: .ra r10: r10 r11: r11 r4: r4 r5: r5 r6: r6 r7: r7 r8: r8 r9: r9
+STACK CFI 18764 .cfa: sp 112 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 1876a .cfa: sp 36 +
+STACK CFI INIT 187b8 e8 .cfa: sp 0 + .ra: lr
+STACK CFI 187bc .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 187c0 .cfa: sp 240 +
+STACK CFI 18884 .cfa: sp 28 +
+STACK CFI INIT 188a0 244 .cfa: sp 0 + .ra: lr
+STACK CFI 188a4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 188aa .cfa: sp 312 +
+STACK CFI 18a9c .cfa: sp 36 +
+STACK CFI INIT 18ae4 6c .cfa: sp 0 + .ra: lr
+STACK CFI 18ae8 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 18af2 .cfa: sp 184 +
+STACK CFI 18b42 .cfa: sp 24 +
+STACK CFI INIT 18b50 d4 .cfa: sp 0 + .ra: lr
+STACK CFI 18b54 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 18b58 .cfa: sp 112 +
+STACK CFI 18c06 .cfa: sp 28 +
+STACK CFI INIT 18c24 d8 .cfa: sp 0 + .ra: lr
+STACK CFI 18c28 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 18c32 .cfa: sp 240 +
+STACK CFI 18cf4 .cfa: sp 28 +
+STACK CFI INIT 18cfc e8 .cfa: sp 0 + .ra: lr
+STACK CFI 18d00 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 18d0a .cfa: sp 104 +
+STACK CFI 18dc4 .cfa: sp 28 +
+STACK CFI INIT 18de4 74 .cfa: sp 0 + .ra: lr
+STACK CFI 18de8 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 18dec .cfa: sp 96 +
+STACK CFI 18e50 .cfa: sp 32 +
+STACK CFI INIT 18e58 11c .cfa: sp 0 + .ra: lr
+STACK CFI 18e5c .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 18e6a .cfa: sp 296 +
+STACK CFI 18f6a .cfa: sp 36 +
+STACK CFI INIT 18f74 96 .cfa: sp 0 + .ra: lr
+STACK CFI 18f76 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 18f78 .cfa: sp 80 +
+STACK CFI 19008 .cfa: sp 20 +
+STACK CFI INIT 1900c 110 .cfa: sp 0 + .ra: lr
+STACK CFI 19010 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 1901e .cfa: sp 232 +
+STACK CFI 190fa .cfa: sp 32 +
+STACK CFI INIT 1911c 94 .cfa: sp 0 + .ra: lr
+STACK CFI 19120 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 1912a .cfa: sp 232 +
+STACK CFI 191a6 .cfa: sp 36 +
+STACK CFI INIT 191b0 62 .cfa: sp 0 + .ra: lr
+STACK CFI 191b2 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 19210 .cfa: sp 20 +
+STACK CFI INIT 19212 30 .cfa: sp 0 + .ra: lr
+STACK CFI 19214 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 19242 5e .cfa: sp 0 + .ra: lr
+STACK CFI 19244 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 192a0 64 .cfa: sp 0 + .ra: lr
+STACK CFI 192a2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 19304 90 .cfa: sp 0 + .ra: lr
+STACK CFI 19308 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 19394 84 .cfa: sp 0 + .ra: lr
+STACK CFI 1939a .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 13b88 6ac .cfa: sp 0 + .ra: lr
+STACK CFI 13b8c .cfa: sp 40 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 140e6 .cfa: sp 24 +
+STACK CFI INIT 19418 2f4 .cfa: sp 0 + .ra: lr
+STACK CFI 1941c .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 19420 .cfa: sp 256 +
+STACK CFI 196cc .cfa: sp 36 +
+STACK CFI INIT 1970c 6c .cfa: sp 0 + .ra: lr
+STACK CFI 1970e .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 19710 .cfa: sp 40 +
+STACK CFI 1976e .cfa: sp 12 +
+STACK CFI INIT 19778 70 .cfa: sp 0 + .ra: lr
+STACK CFI 1977a .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 1977c .cfa: sp 40 +
+STACK CFI 197dc .cfa: sp 12 +
+STACK CFI INIT 197e8 148 .cfa: sp 0 + .ra: lr
+STACK CFI 197ec .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 197f0 .cfa: sp 112 +
+STACK CFI 1990a .cfa: sp 28 +
+STACK CFI INIT 19930 148 .cfa: sp 0 + .ra: lr
+STACK CFI 19934 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 19938 .cfa: sp 112 +
+STACK CFI 19a52 .cfa: sp 28 +
+STACK CFI INIT 19a78 148 .cfa: sp 0 + .ra: lr
+STACK CFI 19a7c .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 19a80 .cfa: sp 112 +
+STACK CFI 19b9a .cfa: sp 28 +
+STACK CFI INIT 19bc0 148 .cfa: sp 0 + .ra: lr
+STACK CFI 19bc4 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 19bc8 .cfa: sp 112 +
+STACK CFI 19ce2 .cfa: sp 28 +
+STACK CFI INIT 19d08 c4 .cfa: sp 0 + .ra: lr
+STACK CFI 19d0a .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 19d0e .cfa: sp 104 +
+STACK CFI 19db8 .cfa: sp 20 +
+STACK CFI INIT 19dcc 270 .cfa: sp 0 + .ra: lr
+STACK CFI 19dd0 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 19dd4 .cfa: sp 280 +
+STACK CFI 19ff2 .cfa: sp 36 +
+STACK CFI INIT 1a03c f8 .cfa: sp 0 + .ra: lr
+STACK CFI 1a040 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 1a044 .cfa: sp 256 +
+STACK CFI 1a11e .cfa: sp 24 +
+STACK CFI INIT 1a134 f8 .cfa: sp 0 + .ra: lr
+STACK CFI 1a138 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 1a13c .cfa: sp 256 +
+STACK CFI 1a216 .cfa: sp 24 +
+STACK CFI INIT 1a22c fc .cfa: sp 0 + .ra: lr
+STACK CFI 1a230 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 1a234 .cfa: sp 256 +
+STACK CFI 1a310 .cfa: sp 24 +
+STACK CFI INIT 1a328 fc .cfa: sp 0 + .ra: lr
+STACK CFI 1a32c .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 1a330 .cfa: sp 256 +
+STACK CFI 1a40c .cfa: sp 24 +
+STACK CFI INIT 1a424 748 .cfa: sp 0 + .ra: lr
+STACK CFI 1a428 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 1a430 .cfa: sp 1232 +
+STACK CFI 1aaa6 .cfa: sp 36 +
+STACK CFI INIT 1ab6c 884 .cfa: sp 0 + .ra: lr
+STACK CFI 1ab70 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 1ab78 .cfa: sp 624 +
+STACK CFI 1b2f4 .cfa: sp 36 +
+STACK CFI INIT 1b3f0 7f8 .cfa: sp 0 + .ra: lr
+STACK CFI 1b3f4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 1b3fa .cfa: sp 488 +
+STACK CFI 1bafa .cfa: sp 36 +
+STACK CFI INIT 1bbe8 7f8 .cfa: sp 0 + .ra: lr
+STACK CFI 1bbec .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 1bbf2 .cfa: sp 496 +
+STACK CFI 1c2f4 .cfa: sp 36 +
+STACK CFI INIT 1c3e0 458 .cfa: sp 0 + .ra: lr
+STACK CFI 1c3e4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 1c3ea .cfa: sp 360 +
+STACK CFI 1c7be .cfa: sp 36 +
+STACK CFI INIT 1c838 690 .cfa: sp 0 + .ra: lr
+STACK CFI 1c83c .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 1c844 .cfa: sp 616 +
+STACK CFI 1ce26 .cfa: sp 36 +
+STACK CFI INIT 1cec8 2dc .cfa: sp 0 + .ra: lr
+STACK CFI 1cecc .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 1ced0 .cfa: sp 344 +
+STACK CFI 1d150 .cfa: sp 36 +
+STACK CFI INIT 1d1a4 468 .cfa: sp 0 + .ra: lr
+STACK CFI 1d1a8 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 1d1ae .cfa: sp 568 +
+STACK CFI 1d598 .cfa: sp 36 +
+STACK CFI INIT 1d60c 370 .cfa: sp 0 + .ra: lr
+STACK CFI 1d610 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 1d614 .cfa: sp 344 +
+STACK CFI 1d920 .cfa: sp 36 +
+STACK CFI INIT 1d97c 22c .cfa: sp 0 + .ra: lr
+STACK CFI 1d980 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 1d986 .cfa: sp 320 +
+STACK CFI 1db6e .cfa: sp 36 +
+STACK CFI INIT 1dba8 41c .cfa: sp 0 + .ra: lr
+STACK CFI 1dbac .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 1dbb0 .cfa: sp 248 +
+STACK CFI 1df42 .cfa: sp 36 +
+STACK CFI INIT 15dc4 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15dc6 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15dc8 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15ddc 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de4 ac .cfa: sp 0 + .ra: lr
+STACK CFI 15de6 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 15e90 9e .cfa: sp 0 + .ra: lr
+STACK CFI 15e92 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 15e94 .cfa: sp 40 +
+STACK CFI 15f2c .cfa: sp 20 +
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f2e 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f3e 16 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f54 3e .cfa: sp 0 + .ra: lr
+STACK CFI 15f56 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f92 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f9e 1a .cfa: sp 0 + .ra: lr
+STACK CFI 15fa0 .cfa: sp 16 + .ra: .cfa -4 + ^
+STACK CFI 15fb4 .cfa: sp 4 +
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15fb8 18 .cfa: sp 0 + .ra: lr
+STACK CFI 15fba .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 1dfc4 20 .cfa: sp 0 + .ra: lr
+STACK CFI 1dfc6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16030 4c .cfa: sp 0 + .ra: lr
+STACK CFI 16034 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fdc 54 .cfa: sp 0 + .ra: lr
+STACK CFI 15fe0 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 1607c 1c .cfa: sp 0 + .ra: lr
+STACK CFI 16080 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16098 12 .cfa: sp 0 + .ra: lr
+STACK CFI 1609a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 160ac 1c .cfa: sp 0 + .ra: lr
+STACK CFI 160b0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 160c8 12 .cfa: sp 0 + .ra: lr
+STACK CFI 160ca .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1dfe4 18 .cfa: sp 0 + .ra: lr
+STACK CFI 1dfe6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1dffc 12 .cfa: sp 0 + .ra: lr
+STACK CFI 1dffe .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16a6c 54 .cfa: sp 0 + .ra: lr
+STACK CFI 16a70 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 1e00e 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16ac0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 16ac6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16aec 1e .cfa: sp 0 + .ra: lr
+STACK CFI 16aee .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16b0a 1e .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16b40 24 .cfa: sp 0 + .ra: lr
+STACK CFI 16b44 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16b64 12 .cfa: sp 0 + .ra: lr
+STACK CFI 16b66 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16b76 28 .cfa: sp 0 + .ra: lr
+STACK CFI 16b78 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 16b9e e .cfa: sp 0 + .ra: lr
+STACK CFI 16ba0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16bac 9c .cfa: sp 0 + .ra: lr
+STACK CFI 16bb0 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 16bbc .cfa: sp 48 +
+STACK CFI 16c3e .cfa: sp 28 +
+STACK CFI INIT 16c48 78 .cfa: sp 0 + .ra: lr
+STACK CFI 16c4a .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 16cc0 66 .cfa: sp 0 + .ra: lr
+STACK CFI 16cc2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 16d26 42 .cfa: sp 0 + .ra: lr
+STACK CFI 16d28 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 16d68 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16d6e 1c .cfa: sp 0 + .ra: lr
+STACK CFI 16d70 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 0 30 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 28 .cfa: sp 8 +
+STACK CFI INIT 16f88 28 .cfa: sp 0 + .ra: lr
+STACK CFI 16f8a .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 b4 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r3: .cfa -32 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI INIT 0 7c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 1705c 54 .cfa: sp 0 + .ra: lr
+STACK CFI 1705e .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 170b0 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170b8 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170c4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 170c6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 170d6 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170e2 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170ec 54 .cfa: sp 0 + .ra: lr
+STACK CFI 170ee .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 17140 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17148 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17154 12 .cfa: sp 0 + .ra: lr
+STACK CFI 17156 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 17166 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17172 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 1717c 8c .cfa: sp 0 + .ra: lr
+STACK CFI 1717e .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 17208 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17210 80 .cfa: sp 0 + .ra: lr
+STACK CFI 17212 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 17290 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17298 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172a0 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172a8 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172b4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 172b6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 172c6 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172ce c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 1739c 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173a4 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173ac c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173b8 12 .cfa: sp 0 + .ra: lr
+STACK CFI 173ba .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 173ca 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173d2 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173de 2c .cfa: sp 0 + .ra: lr
+STACK CFI 173e0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1740a 40 .cfa: sp 0 + .ra: lr
+STACK CFI 1740c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1744a 24 .cfa: sp 0 + .ra: lr
+STACK CFI 1744c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1746e b4 .cfa: sp 0 + .ra: lr
+STACK CFI 17470 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 17520 .cfa: sp 20 +
+STACK CFI INIT 175b2 98 .cfa: sp 0 + .ra: lr
+STACK CFI 175b6 .cfa: sp 40 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 17646 .cfa: sp 28 +
+STACK CFI INIT 0 98 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 4 .cfa: sp 80 +
+STACK CFI 96 .cfa: sp 20 +
+STACK CFI INIT 176da 16 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 176f0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 176f2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 0 d0 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI cc .cfa: sp 24 +
+STACK CFI INIT 0 1ec .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 16 .cfa: sp 208 +
+STACK CFI 1c2 .cfa: sp 32 +
+STACK CFI INIT 0 74 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 10 .cfa: sp 56 +
+STACK CFI 6a .cfa: sp 24 +
+STACK CFI INIT 17a84 2c .cfa: sp 0 + .ra: lr
+STACK CFI 17a86 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 17aae .cfa: sp 16 +
+STACK CFI INIT 17ab0 38 .cfa: sp 0 + .ra: lr
+STACK CFI 17ab2 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 17ae0 .cfa: sp 16 +
+STACK CFI INIT 0 2c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 2a .cfa: sp 16 +
+STACK CFI INIT 17ae8 2c .cfa: sp 0 + .ra: lr
+STACK CFI 17aea .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 17b12 .cfa: sp 16 +
+STACK CFI INIT 0 8a .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 86 .cfa: sp 24 +
+STACK CFI INIT 17ba4 46 .cfa: sp 0 + .ra: lr
+STACK CFI 17ba6 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 17be8 .cfa: sp 20 +
+STACK CFI INIT 17bec 2c8 .cfa: sp 0 + .ra: lr
+STACK CFI 17bf0 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 17bf4 .cfa: sp 256 +
+STACK CFI 17e60 .cfa: sp 36 +
+STACK CFI INIT 18134 a4 .cfa: sp 0 + .ra: lr
+STACK CFI 18138 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 181d4 .cfa: sp 24 +
+STACK CFI INIT 0 e0 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI e .cfa: sp 240 +
+STACK CFI d8 .cfa: sp 28 +
+STACK CFI INIT 0 ec .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 8 .cfa: sp 112 +
+STACK CFI d0 .cfa: sp 28 +
+STACK CFI INIT 182f4 2c .cfa: sp 0 + .ra: lr
+STACK CFI 182f6 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 18318 .cfa: sp 20 +
+STACK CFI INIT 1e020 6c .cfa: sp 0 + .ra: lr
+STACK CFI 1e024 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 1e02e .cfa: sp 184 +
+STACK CFI 1e07e .cfa: sp 24 +
+STACK CFI INIT 1e08c 108 .cfa: sp 0 + .ra: lr
+STACK CFI 1e090 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 1e09a .cfa: sp 112 +
+STACK CFI 1e174 .cfa: sp 28 +
+STACK CFI INIT 1e194 6e4 .cfa: sp 0 + .ra: lr
+STACK CFI 1e198 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 1e1a0 .cfa: sp 1640 +
+STACK CFI 1e7c4 .cfa: sp 36 +
+STACK CFI INIT 0 58 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 56 .cfa: sp 20 +
+STACK CFI INIT 19212 30 .cfa: sp 0 + .ra: lr
+STACK CFI 19214 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 19242 5e .cfa: sp 0 + .ra: lr
+STACK CFI 19244 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 192a0 64 .cfa: sp 0 + .ra: lr
+STACK CFI 192a2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 19304 90 .cfa: sp 0 + .ra: lr
+STACK CFI 19308 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 19394 84 .cfa: sp 0 + .ra: lr
+STACK CFI 1939a .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 14234 58 .cfa: sp 0 + .ra: lr
+STACK CFI 14236 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 14272 .cfa: sp 8 +
+STACK CFI INIT 15dc4 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15dc6 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15dc8 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15ddc 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de4 ac .cfa: sp 0 + .ra: lr
+STACK CFI 15de6 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 15e90 9e .cfa: sp 0 + .ra: lr
+STACK CFI 15e92 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 15e94 .cfa: sp 40 +
+STACK CFI 15f2c .cfa: sp 20 +
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f2e 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f3e 16 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f54 3e .cfa: sp 0 + .ra: lr
+STACK CFI 15f56 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f92 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f9e 1a .cfa: sp 0 + .ra: lr
+STACK CFI 15fa0 .cfa: sp 16 + .ra: .cfa -4 + ^
+STACK CFI 15fb4 .cfa: sp 4 +
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15fb8 18 .cfa: sp 0 + .ra: lr
+STACK CFI 15fba .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16030 4c .cfa: sp 0 + .ra: lr
+STACK CFI 16034 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 15fdc 54 .cfa: sp 0 + .ra: lr
+STACK CFI 15fe0 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 1607c 1c .cfa: sp 0 + .ra: lr
+STACK CFI 16080 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16098 12 .cfa: sp 0 + .ra: lr
+STACK CFI 1609a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 160ac 1c .cfa: sp 0 + .ra: lr
+STACK CFI 160b0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 160c8 12 .cfa: sp 0 + .ra: lr
+STACK CFI 160ca .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1e878 18 .cfa: sp 0 + .ra: lr
+STACK CFI 1e87a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1e890 12 .cfa: sp 0 + .ra: lr
+STACK CFI 1e892 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1e8a4 18 .cfa: sp 0 + .ra: lr
+STACK CFI 1e8a6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1e8bc 12 .cfa: sp 0 + .ra: lr
+STACK CFI 1e8be .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1e8d0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 1e8d2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1e8e8 12 .cfa: sp 0 + .ra: lr
+STACK CFI 1e8ea .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1e8fc 18 .cfa: sp 0 + .ra: lr
+STACK CFI 1e8fe .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1e914 12 .cfa: sp 0 + .ra: lr
+STACK CFI 1e916 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1e928 18 .cfa: sp 0 + .ra: lr
+STACK CFI 1e92a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1e940 12 .cfa: sp 0 + .ra: lr
+STACK CFI 1e942 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1e954 18 .cfa: sp 0 + .ra: lr
+STACK CFI 1e956 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1e96c 12 .cfa: sp 0 + .ra: lr
+STACK CFI 1e96e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1e980 18 .cfa: sp 0 + .ra: lr
+STACK CFI 1e982 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1e998 12 .cfa: sp 0 + .ra: lr
+STACK CFI 1e99a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1e9ac 18 .cfa: sp 0 + .ra: lr
+STACK CFI 1e9ae .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1e9c4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 1e9c6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1e9d8 18 .cfa: sp 0 + .ra: lr
+STACK CFI 1e9da .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1e9f0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 1e9f2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1ea04 18 .cfa: sp 0 + .ra: lr
+STACK CFI 1ea06 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1ea1c 12 .cfa: sp 0 + .ra: lr
+STACK CFI 1ea1e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1ea30 20 .cfa: sp 0 + .ra: lr
+STACK CFI 1ea32 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1ea50 20 .cfa: sp 0 + .ra: lr
+STACK CFI 1ea52 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1ea70 20 .cfa: sp 0 + .ra: lr
+STACK CFI 1ea72 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1ea90 20 .cfa: sp 0 + .ra: lr
+STACK CFI 1ea92 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1eab0 20 .cfa: sp 0 + .ra: lr
+STACK CFI 1eab2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1ead0 20 .cfa: sp 0 + .ra: lr
+STACK CFI 1ead2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1eaf0 20 .cfa: sp 0 + .ra: lr
+STACK CFI 1eaf2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1eb10 20 .cfa: sp 0 + .ra: lr
+STACK CFI 1eb12 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1eb30 20 .cfa: sp 0 + .ra: lr
+STACK CFI 1eb32 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1eb50 20 .cfa: sp 0 + .ra: lr
+STACK CFI 1eb52 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16a6c 54 .cfa: sp 0 + .ra: lr
+STACK CFI 16a70 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 1e00e 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16ac0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 16ac6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16ad8 14 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 1eb70 10 .cfa: sp 0 + .ra: lr
+STACK CFI 1eb72 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1eb80 108 .cfa: sp 0 + .ra: lr
+STACK CFI 1eb84 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 1eb8a .cfa: sp 568 +
+STACK CFI 1ec80 .cfa: sp 36 +
+STACK CFI INIT 1ec88 1c .cfa: sp 0 + .ra: lr
+STACK CFI 1ec8a .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 1eca4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 1eca6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1ecb8 6c .cfa: sp 0 + .ra: lr
+STACK CFI 1ecba .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 1ecc0 .cfa: sp 4112 +
+STACK CFI 1ecc6 .cfa: sp 4120 +
+STACK CFI 1ed1a .cfa: sp 16 +
+STACK CFI INIT 1ed24 5c .cfa: sp 0 + .ra: lr
+STACK CFI 1ed26 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 16aec 1e .cfa: sp 0 + .ra: lr
+STACK CFI 16aee .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16b0a 1e .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16b40 24 .cfa: sp 0 + .ra: lr
+STACK CFI 16b44 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16b64 12 .cfa: sp 0 + .ra: lr
+STACK CFI 16b66 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 24 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 16bac 9c .cfa: sp 0 + .ra: lr
+STACK CFI 16bb0 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 16bbc .cfa: sp 48 +
+STACK CFI 16c3e .cfa: sp 28 +
+STACK CFI INIT 16c48 78 .cfa: sp 0 + .ra: lr
+STACK CFI 16c4a .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 16cc0 66 .cfa: sp 0 + .ra: lr
+STACK CFI 16cc2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 30 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 28 .cfa: sp 8 +
+STACK CFI INIT 0 b4 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r3: .cfa -32 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI INIT 0 7c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 1705c 54 .cfa: sp 0 + .ra: lr
+STACK CFI 1705e .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 170b0 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170b8 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170c4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 170c6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 170d6 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170e2 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170ec 54 .cfa: sp 0 + .ra: lr
+STACK CFI 170ee .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 17140 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17148 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17154 12 .cfa: sp 0 + .ra: lr
+STACK CFI 17156 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 17166 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17172 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 1717c 8c .cfa: sp 0 + .ra: lr
+STACK CFI 1717e .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 17208 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17210 80 .cfa: sp 0 + .ra: lr
+STACK CFI 17212 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 17290 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17298 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172a0 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172a8 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172b4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 172b6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 172c6 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172ce c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 1739c 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173a4 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173ac c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173b8 12 .cfa: sp 0 + .ra: lr
+STACK CFI 173ba .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 173ca 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173d2 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 38 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 dc .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 8 .cfa: sp 72 +
+STACK CFI da .cfa: sp 20 +
+STACK CFI INIT 176f0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 176f2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 1ed80 dc .cfa: sp 0 + .ra: lr
+STACK CFI 1ed84 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 1ed8e .cfa: sp 264 +
+STACK CFI 1ee52 .cfa: sp 36 +
+STACK CFI INIT 0 20 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 1e .cfa: sp 20 +
+STACK CFI INIT 1ee5c 80 .cfa: sp 0 + .ra: lr
+STACK CFI 1ee5e .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 1ee60 .cfa: sp 176 +
+STACK CFI 1eecc .cfa: sp 20 +
+STACK CFI INIT 1eedc 1ac .cfa: sp 0 + .ra: lr
+STACK CFI 1eee0 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 1eee4 .cfa: sp 224 +
+STACK CFI 1f050 .cfa: sp 36 +
+STACK CFI INIT 1f088 1ac .cfa: sp 0 + .ra: lr
+STACK CFI 1f08c .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 1f090 .cfa: sp 224 +
+STACK CFI 1f1fc .cfa: sp 36 +
+STACK CFI INIT 1f234 1b0 .cfa: sp 0 + .ra: lr
+STACK CFI 1f238 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 1f23c .cfa: sp 224 +
+STACK CFI 1f3ac .cfa: sp 36 +
+STACK CFI INIT 1f3e4 1b0 .cfa: sp 0 + .ra: lr
+STACK CFI 1f3e8 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 1f3ec .cfa: sp 224 +
+STACK CFI 1f55c .cfa: sp 36 +
+STACK CFI INIT 1f594 1ac .cfa: sp 0 + .ra: lr
+STACK CFI 1f598 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 1f59c .cfa: sp 224 +
+STACK CFI 1f708 .cfa: sp 36 +
+STACK CFI INIT 1f740 1ac .cfa: sp 0 + .ra: lr
+STACK CFI 1f744 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 1f748 .cfa: sp 224 +
+STACK CFI 1f8b4 .cfa: sp 36 +
+STACK CFI INIT 1f8ec 3e8 .cfa: sp 0 + .ra: lr
+STACK CFI 1f8f0 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 1f8f4 .cfa: sp 368 +
+STACK CFI 1fc54 .cfa: sp 36 +
+STACK CFI INIT 1fcd4 1fc .cfa: sp 0 + .ra: lr
+STACK CFI 1fcd8 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 1fcdc .cfa: sp 232 +
+STACK CFI 1fe92 .cfa: sp 36 +
+STACK CFI INIT 1fed0 3ec .cfa: sp 0 + .ra: lr
+STACK CFI 1fed4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 1fed8 .cfa: sp 376 +
+STACK CFI 2023e .cfa: sp 36 +
+STACK CFI INIT 0 94 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 90 .cfa: sp 24 +
+STACK CFI INIT 18134 a4 .cfa: sp 0 + .ra: lr
+STACK CFI 18138 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 181d4 .cfa: sp 24 +
+STACK CFI INIT 0 58 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 56 .cfa: sp 20 +
+STACK CFI INIT 0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 19242 5e .cfa: sp 0 + .ra: lr
+STACK CFI 19244 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 6c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 19304 90 .cfa: sp 0 + .ra: lr
+STACK CFI 19308 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 19394 84 .cfa: sp 0 + .ra: lr
+STACK CFI 1939a .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 1428c 294 .cfa: sp 0 + .ra: lr
+STACK CFI 14290 .cfa: sp 40 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 14494 .cfa: sp 24 +
+STACK CFI INIT 15dc4 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15dc6 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15dc8 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15ddc 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de4 ac .cfa: sp 0 + .ra: lr
+STACK CFI 15de6 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 15e90 9e .cfa: sp 0 + .ra: lr
+STACK CFI 15e92 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 15e94 .cfa: sp 40 +
+STACK CFI 15f2c .cfa: sp 20 +
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f2e 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f3e 16 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f54 3e .cfa: sp 0 + .ra: lr
+STACK CFI 15f56 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f92 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f9e 1a .cfa: sp 0 + .ra: lr
+STACK CFI 15fa0 .cfa: sp 16 + .ra: .cfa -4 + ^
+STACK CFI 15fb4 .cfa: sp 4 +
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15fb8 18 .cfa: sp 0 + .ra: lr
+STACK CFI 15fba .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15fdc 54 .cfa: sp 0 + .ra: lr
+STACK CFI 15fe0 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 16030 4c .cfa: sp 0 + .ra: lr
+STACK CFI 16034 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1607c 1c .cfa: sp 0 + .ra: lr
+STACK CFI 16080 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16098 12 .cfa: sp 0 + .ra: lr
+STACK CFI 1609a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 160ac 1c .cfa: sp 0 + .ra: lr
+STACK CFI 160b0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 160c8 12 .cfa: sp 0 + .ra: lr
+STACK CFI 160ca .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 202bc 18 .cfa: sp 0 + .ra: lr
+STACK CFI 202be .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 202d4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 202d6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 202e8 20 .cfa: sp 0 + .ra: lr
+STACK CFI 202ea .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16a6c 54 .cfa: sp 0 + .ra: lr
+STACK CFI 16a70 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 1e00e 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16ac0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 16ac6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16aec 1e .cfa: sp 0 + .ra: lr
+STACK CFI 16aee .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16b0a 1e .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16b76 28 .cfa: sp 0 + .ra: lr
+STACK CFI 16b78 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 16b9e e .cfa: sp 0 + .ra: lr
+STACK CFI 16ba0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16b40 24 .cfa: sp 0 + .ra: lr
+STACK CFI 16b44 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16b64 12 .cfa: sp 0 + .ra: lr
+STACK CFI 16b66 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16bac 9c .cfa: sp 0 + .ra: lr
+STACK CFI 16bb0 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 16bbc .cfa: sp 48 +
+STACK CFI 16c3e .cfa: sp 28 +
+STACK CFI INIT 16c48 78 .cfa: sp 0 + .ra: lr
+STACK CFI 16c4a .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 16cc0 66 .cfa: sp 0 + .ra: lr
+STACK CFI 16cc2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 16d26 42 .cfa: sp 0 + .ra: lr
+STACK CFI 16d28 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 16d68 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16d6e 1c .cfa: sp 0 + .ra: lr
+STACK CFI 16d70 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 0 30 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 28 .cfa: sp 8 +
+STACK CFI INIT 16f58 30 .cfa: sp 0 + .ra: lr
+STACK CFI 16f5a .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 16f88 28 .cfa: sp 0 + .ra: lr
+STACK CFI 16f8a .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 20308 28 .cfa: sp 0 + .ra: lr
+STACK CFI 2030a .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 2032e .cfa: sp 12 +
+STACK CFI INIT 0 b4 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r3: .cfa -32 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI INIT 0 7c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 1705c 54 .cfa: sp 0 + .ra: lr
+STACK CFI 1705e .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 170b0 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170b8 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170c4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 170c6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 170d6 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170e2 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170ec 54 .cfa: sp 0 + .ra: lr
+STACK CFI 170ee .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 17140 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17148 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17154 12 .cfa: sp 0 + .ra: lr
+STACK CFI 17156 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 17166 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17172 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 1717c 8c .cfa: sp 0 + .ra: lr
+STACK CFI 1717e .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 17208 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17210 80 .cfa: sp 0 + .ra: lr
+STACK CFI 17212 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 17290 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17298 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172a0 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172a8 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172b4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 172b6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 172c6 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172ce c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 1739c 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173a4 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173ac c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173b8 12 .cfa: sp 0 + .ra: lr
+STACK CFI 173ba .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 173ca 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173d2 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173de 2c .cfa: sp 0 + .ra: lr
+STACK CFI 173e0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1740a 40 .cfa: sp 0 + .ra: lr
+STACK CFI 1740c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1744a 24 .cfa: sp 0 + .ra: lr
+STACK CFI 1744c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1746e b4 .cfa: sp 0 + .ra: lr
+STACK CFI 17470 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 17520 .cfa: sp 20 +
+STACK CFI INIT 0 98 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 4 .cfa: sp 80 +
+STACK CFI 96 .cfa: sp 20 +
+STACK CFI INIT 175b2 98 .cfa: sp 0 + .ra: lr
+STACK CFI 175b6 .cfa: sp 40 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 17646 .cfa: sp 28 +
+STACK CFI INIT 176da 16 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 176f0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 176f2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 0 134 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 16 .cfa: sp 64 +
+STACK CFI 12a .cfa: sp 32 +
+STACK CFI INIT 20330 98 .cfa: sp 0 + .ra: lr
+STACK CFI 20332 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 20334 .cfa: sp 80 +
+STACK CFI 203c6 .cfa: sp 20 +
+STACK CFI INIT 203c8 28 .cfa: sp 0 + .ra: lr
+STACK CFI 203ca .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 17ab0 38 .cfa: sp 0 + .ra: lr
+STACK CFI 17ab2 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 17ae0 .cfa: sp 16 +
+STACK CFI INIT 0 1bc .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 8 .cfa: sp 272 +
+STACK CFI 19e .cfa: sp 36 +
+STACK CFI INIT 203f0 34 .cfa: sp 0 + .ra: lr
+STACK CFI 203f2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 20424 2c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 20450 2c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 2047c 9e .cfa: sp 0 + .ra: lr
+STACK CFI 20480 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 2051a 6e .cfa: sp 0 + .ra: lr
+STACK CFI 2051e .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 20588 70c .cfa: sp 0 + .ra: lr
+STACK CFI 2058c .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 2059a .cfa: sp 888 +
+STACK CFI 20bf8 .cfa: sp 36 +
+STACK CFI INIT 0 58 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 56 .cfa: sp 20 +
+STACK CFI INIT 192a0 64 .cfa: sp 0 + .ra: lr
+STACK CFI 192a2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 19304 90 .cfa: sp 0 + .ra: lr
+STACK CFI 19308 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 19212 30 .cfa: sp 0 + .ra: lr
+STACK CFI 19214 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 19242 5e .cfa: sp 0 + .ra: lr
+STACK CFI 19244 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 19394 84 .cfa: sp 0 + .ra: lr
+STACK CFI 1939a .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 0 8a .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 86 .cfa: sp 24 +
+STACK CFI INIT 18134 a4 .cfa: sp 0 + .ra: lr
+STACK CFI 18138 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 181d4 .cfa: sp 24 +
+STACK CFI INIT 14520 5c .cfa: sp 0 + .ra: lr
+STACK CFI 14522 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 14560 .cfa: sp 8 +
+STACK CFI INIT 15dc4 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15dc6 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15dc8 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15ddc 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de4 ac .cfa: sp 0 + .ra: lr
+STACK CFI 15de6 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 15e90 9e .cfa: sp 0 + .ra: lr
+STACK CFI 15e92 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 15e94 .cfa: sp 40 +
+STACK CFI 15f2c .cfa: sp 20 +
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f2e 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f3e 16 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f54 3e .cfa: sp 0 + .ra: lr
+STACK CFI 15f56 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f92 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f9e 1a .cfa: sp 0 + .ra: lr
+STACK CFI 15fa0 .cfa: sp 16 + .ra: .cfa -4 + ^
+STACK CFI 15fb4 .cfa: sp 4 +
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15fb8 18 .cfa: sp 0 + .ra: lr
+STACK CFI 15fba .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16030 4c .cfa: sp 0 + .ra: lr
+STACK CFI 16034 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 15fdc 54 .cfa: sp 0 + .ra: lr
+STACK CFI 15fe0 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 1607c 1c .cfa: sp 0 + .ra: lr
+STACK CFI 16080 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16098 12 .cfa: sp 0 + .ra: lr
+STACK CFI 1609a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 160ac 1c .cfa: sp 0 + .ra: lr
+STACK CFI 160b0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 160c8 12 .cfa: sp 0 + .ra: lr
+STACK CFI 160ca .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 20c94 18 .cfa: sp 0 + .ra: lr
+STACK CFI 20c96 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 20cac 12 .cfa: sp 0 + .ra: lr
+STACK CFI 20cae .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 20cc0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 20cc2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 20cd8 12 .cfa: sp 0 + .ra: lr
+STACK CFI 20cda .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 20cec 18 .cfa: sp 0 + .ra: lr
+STACK CFI 20cee .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 20d04 12 .cfa: sp 0 + .ra: lr
+STACK CFI 20d06 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 20d18 18 .cfa: sp 0 + .ra: lr
+STACK CFI 20d1a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 20d30 12 .cfa: sp 0 + .ra: lr
+STACK CFI 20d32 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 20d44 18 .cfa: sp 0 + .ra: lr
+STACK CFI 20d46 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 20d5c 12 .cfa: sp 0 + .ra: lr
+STACK CFI 20d5e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 20d70 18 .cfa: sp 0 + .ra: lr
+STACK CFI 20d72 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 20d88 12 .cfa: sp 0 + .ra: lr
+STACK CFI 20d8a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 20d9c 18 .cfa: sp 0 + .ra: lr
+STACK CFI 20d9e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 20db4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 20db6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 20dc8 20 .cfa: sp 0 + .ra: lr
+STACK CFI 20dca .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 20de8 20 .cfa: sp 0 + .ra: lr
+STACK CFI 20dea .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 20e08 20 .cfa: sp 0 + .ra: lr
+STACK CFI 20e0a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 20e28 20 .cfa: sp 0 + .ra: lr
+STACK CFI 20e2a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 20e48 20 .cfa: sp 0 + .ra: lr
+STACK CFI 20e4a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 20e68 20 .cfa: sp 0 + .ra: lr
+STACK CFI 20e6a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 20e88 20 .cfa: sp 0 + .ra: lr
+STACK CFI 20e8a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16a6c 54 .cfa: sp 0 + .ra: lr
+STACK CFI 16a70 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 20ea8 9e .cfa: sp 0 + .ra: lr
+STACK CFI 20eaa .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 20f46 12 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 1e00e 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16ac0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 16ac6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16ad8 14 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 1eca4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 1eca6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1ecb8 6c .cfa: sp 0 + .ra: lr
+STACK CFI 1ecba .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 1ecc0 .cfa: sp 4112 +
+STACK CFI 1ecc6 .cfa: sp 4120 +
+STACK CFI 1ed1a .cfa: sp 16 +
+STACK CFI INIT 20f58 42 .cfa: sp 0 + .ra: lr
+STACK CFI 20f5a .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 20f94 .cfa: sp 0 + .ra: .ra r3: r3 r4: r4 r5: r5 r6: r6 r7: r7
+STACK CFI INIT 20f9c 2c .cfa: sp 0 + .ra: lr
+STACK CFI 20f9e .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 16aec 1e .cfa: sp 0 + .ra: lr
+STACK CFI 16aee .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16b0a 1e .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16b40 24 .cfa: sp 0 + .ra: lr
+STACK CFI 16b44 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16b64 12 .cfa: sp 0 + .ra: lr
+STACK CFI 16b66 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 24 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 20fc8 148 .cfa: sp 0 + .ra: lr
+STACK CFI 20fcc .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 20fd2 .cfa: sp 624 +
+STACK CFI 210e4 .cfa: sp 28 +
+STACK CFI INIT 21110 16c .cfa: sp 0 + .ra: lr
+STACK CFI 21114 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 2111a .cfa: sp 1136 +
+STACK CFI 21250 .cfa: sp 28 +
+STACK CFI INIT 16bac 9c .cfa: sp 0 + .ra: lr
+STACK CFI 16bb0 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 16bbc .cfa: sp 48 +
+STACK CFI 16c3e .cfa: sp 28 +
+STACK CFI INIT 16c48 78 .cfa: sp 0 + .ra: lr
+STACK CFI 16c4a .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 16cc0 66 .cfa: sp 0 + .ra: lr
+STACK CFI 16cc2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 30 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 28 .cfa: sp 8 +
+STACK CFI INIT 16f88 28 .cfa: sp 0 + .ra: lr
+STACK CFI 16f8a .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 7c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 0 b4 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r3: .cfa -32 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI INIT 1705c 54 .cfa: sp 0 + .ra: lr
+STACK CFI 1705e .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 170b0 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170b8 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170c4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 170c6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 170d6 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170e2 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170ec 54 .cfa: sp 0 + .ra: lr
+STACK CFI 170ee .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 17140 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17148 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17154 12 .cfa: sp 0 + .ra: lr
+STACK CFI 17156 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 17166 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17172 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 1717c 8c .cfa: sp 0 + .ra: lr
+STACK CFI 1717e .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 17208 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17210 80 .cfa: sp 0 + .ra: lr
+STACK CFI 17212 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 17290 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17298 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172a0 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172a8 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172b4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 172b6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 172c6 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172ce c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 1739c 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173a4 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173ac c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173b8 12 .cfa: sp 0 + .ra: lr
+STACK CFI 173ba .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 173ca 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173d2 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 38 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 176f0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 176f2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 0 dc .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 8 .cfa: sp 72 +
+STACK CFI da .cfa: sp 20 +
+STACK CFI INIT 2127c a0 .cfa: sp 0 + .ra: lr
+STACK CFI 21280 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 2128a .cfa: sp 264 +
+STACK CFI 21314 .cfa: sp 36 +
+STACK CFI INIT 0 20 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 1e .cfa: sp 20 +
+STACK CFI INIT 2131c a0 .cfa: sp 0 + .ra: lr
+STACK CFI 21320 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 2132a .cfa: sp 264 +
+STACK CFI 213b4 .cfa: sp 36 +
+STACK CFI INIT 213bc 20 .cfa: sp 0 + .ra: lr
+STACK CFI 213be .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 213da .cfa: sp 20 +
+STACK CFI INIT 213dc 288 .cfa: sp 0 + .ra: lr
+STACK CFI 213e0 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 213e6 .cfa: sp 640 +
+STACK CFI 21602 .cfa: sp 36 +
+STACK CFI INIT 21664 288 .cfa: sp 0 + .ra: lr
+STACK CFI 21668 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 2166e .cfa: sp 640 +
+STACK CFI 2188a .cfa: sp 36 +
+STACK CFI INIT 218ec 3c4 .cfa: sp 0 + .ra: lr
+STACK CFI 218f0 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 218f6 .cfa: sp 656 +
+STACK CFI 21c2e .cfa: sp 36 +
+STACK CFI INIT 21cb0 3c4 .cfa: sp 0 + .ra: lr
+STACK CFI 21cb4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 21cba .cfa: sp 656 +
+STACK CFI 21ff2 .cfa: sp 36 +
+STACK CFI INIT 22074 268 .cfa: sp 0 + .ra: lr
+STACK CFI 22078 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 2207e .cfa: sp 1152 +
+STACK CFI 22286 .cfa: sp 36 +
+STACK CFI INIT 0 94 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 90 .cfa: sp 24 +
+STACK CFI INIT 18134 a4 .cfa: sp 0 + .ra: lr
+STACK CFI 18138 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 181d4 .cfa: sp 24 +
+STACK CFI INIT 0 58 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 56 .cfa: sp 20 +
+STACK CFI INIT 0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 19242 5e .cfa: sp 0 + .ra: lr
+STACK CFI 19244 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 6c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 19304 90 .cfa: sp 0 + .ra: lr
+STACK CFI 19308 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 19394 84 .cfa: sp 0 + .ra: lr
+STACK CFI 1939a .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 1457c 1dc .cfa: sp 0 + .ra: lr
+STACK CFI 14580 .cfa: sp 40 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 146ee .cfa: sp 24 +
+STACK CFI INIT 15dc4 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15dc6 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15dc8 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15ddc 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de4 ac .cfa: sp 0 + .ra: lr
+STACK CFI 15de6 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 15e90 9e .cfa: sp 0 + .ra: lr
+STACK CFI 15e92 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 15e94 .cfa: sp 40 +
+STACK CFI 15f2c .cfa: sp 20 +
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f2e 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f3e 16 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f54 3e .cfa: sp 0 + .ra: lr
+STACK CFI 15f56 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f92 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f9e 1a .cfa: sp 0 + .ra: lr
+STACK CFI 15fa0 .cfa: sp 16 + .ra: .cfa -4 + ^
+STACK CFI 15fb4 .cfa: sp 4 +
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15fb8 18 .cfa: sp 0 + .ra: lr
+STACK CFI 15fba .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16030 4c .cfa: sp 0 + .ra: lr
+STACK CFI 16034 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fdc 54 .cfa: sp 0 + .ra: lr
+STACK CFI 15fe0 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 1607c 1c .cfa: sp 0 + .ra: lr
+STACK CFI 16080 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16098 12 .cfa: sp 0 + .ra: lr
+STACK CFI 1609a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 160ac 1c .cfa: sp 0 + .ra: lr
+STACK CFI 160b0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 160c8 12 .cfa: sp 0 + .ra: lr
+STACK CFI 160ca .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 222dc 18 .cfa: sp 0 + .ra: lr
+STACK CFI 222de .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 222f4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 222f6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 22308 18 .cfa: sp 0 + .ra: lr
+STACK CFI 2230a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 22320 12 .cfa: sp 0 + .ra: lr
+STACK CFI 22322 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 22334 20 .cfa: sp 0 + .ra: lr
+STACK CFI 22336 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 22354 20 .cfa: sp 0 + .ra: lr
+STACK CFI 22356 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16a6c 54 .cfa: sp 0 + .ra: lr
+STACK CFI 16a70 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 1e00e 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16ac0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 16ac6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 10 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 16aec 1e .cfa: sp 0 + .ra: lr
+STACK CFI 16aee .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16b0a 1e .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16b40 24 .cfa: sp 0 + .ra: lr
+STACK CFI 16b44 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16b64 12 .cfa: sp 0 + .ra: lr
+STACK CFI 16b66 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 24 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 0 94 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI c .cfa: sp 48 +
+STACK CFI 8c .cfa: sp 28 +
+STACK CFI INIT 16c48 78 .cfa: sp 0 + .ra: lr
+STACK CFI 16c4a .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 16cc0 66 .cfa: sp 0 + .ra: lr
+STACK CFI 16cc2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 30 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 28 .cfa: sp 8 +
+STACK CFI INIT 16f88 28 .cfa: sp 0 + .ra: lr
+STACK CFI 16f8a .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 b4 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r3: .cfa -32 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI INIT 0 7c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 1705c 54 .cfa: sp 0 + .ra: lr
+STACK CFI 1705e .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 170b0 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170b8 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170c4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 170c6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 170d6 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170e2 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170ec 54 .cfa: sp 0 + .ra: lr
+STACK CFI 170ee .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 17140 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17148 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17154 12 .cfa: sp 0 + .ra: lr
+STACK CFI 17156 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 17166 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17172 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 1717c 8c .cfa: sp 0 + .ra: lr
+STACK CFI 1717e .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 17208 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17210 80 .cfa: sp 0 + .ra: lr
+STACK CFI 17212 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 17290 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17298 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172a0 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172a8 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172b4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 172b6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 172c6 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172ce c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 1739c 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173a4 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173ac c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173b8 12 .cfa: sp 0 + .ra: lr
+STACK CFI 173ba .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 173ca 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173d2 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 32 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 42 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1744a 24 .cfa: sp 0 + .ra: lr
+STACK CFI 1744c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 9e .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 4 .cfa: sp 80 +
+STACK CFI 9c .cfa: sp 20 +
+STACK CFI INIT 176f0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 176f2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 0 9e .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 4 .cfa: sp 80 +
+STACK CFI 9c .cfa: sp 20 +
+STACK CFI INIT 2127c a0 .cfa: sp 0 + .ra: lr
+STACK CFI 21280 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 2128a .cfa: sp 264 +
+STACK CFI 21314 .cfa: sp 36 +
+STACK CFI INIT 0 a0 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI e .cfa: sp 264 +
+STACK CFI 98 .cfa: sp 36 +
+STACK CFI INIT 0 94 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 90 .cfa: sp 24 +
+STACK CFI INIT 18134 a4 .cfa: sp 0 + .ra: lr
+STACK CFI 18138 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 181d4 .cfa: sp 24 +
+STACK CFI INIT 22374 24 .cfa: sp 0 + .ra: lr
+STACK CFI 22378 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 22398 3b8 .cfa: sp 0 + .ra: lr
+STACK CFI 2239c .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 223a2 .cfa: sp 1008 +
+STACK CFI 226d0 .cfa: sp 36 +
+STACK CFI INIT 22750 70c .cfa: sp 0 + .ra: lr
+STACK CFI 22754 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 22764 .cfa: sp 656 +
+STACK CFI 22d84 .cfa: sp 36 +
+STACK CFI INIT 22e5c 12 .cfa: sp 0 + .ra: lr
+STACK CFI 22e5e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 58 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 56 .cfa: sp 20 +
+STACK CFI INIT 0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 19242 5e .cfa: sp 0 + .ra: lr
+STACK CFI 19244 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 6c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 19304 90 .cfa: sp 0 + .ra: lr
+STACK CFI 19308 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 19394 84 .cfa: sp 0 + .ra: lr
+STACK CFI 1939a .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 14758 9c .cfa: sp 0 + .ra: lr
+STACK CFI 1475a .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 1475c .cfa: sp 40 +
+STACK CFI 147ce .cfa: sp 20 +
+STACK CFI INIT 15dc4 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15dc6 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15dc8 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15ddc 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de4 ac .cfa: sp 0 + .ra: lr
+STACK CFI 15de6 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 15e90 9e .cfa: sp 0 + .ra: lr
+STACK CFI 15e92 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 15e94 .cfa: sp 40 +
+STACK CFI 15f2c .cfa: sp 20 +
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f2e 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f3e 16 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f54 3e .cfa: sp 0 + .ra: lr
+STACK CFI 15f56 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f92 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f9e 1a .cfa: sp 0 + .ra: lr
+STACK CFI 15fa0 .cfa: sp 16 + .ra: .cfa -4 + ^
+STACK CFI 15fb4 .cfa: sp 4 +
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15fb8 18 .cfa: sp 0 + .ra: lr
+STACK CFI 15fba .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16030 4c .cfa: sp 0 + .ra: lr
+STACK CFI 16034 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 15fdc 54 .cfa: sp 0 + .ra: lr
+STACK CFI 15fe0 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 1607c 1c .cfa: sp 0 + .ra: lr
+STACK CFI 16080 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16098 12 .cfa: sp 0 + .ra: lr
+STACK CFI 1609a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 160ac 1c .cfa: sp 0 + .ra: lr
+STACK CFI 160b0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 160c8 12 .cfa: sp 0 + .ra: lr
+STACK CFI 160ca .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 22e6e c .cfa: sp 0 + .ra: lr
+STACK CFI 22e70 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 22e7c 18 .cfa: sp 0 + .ra: lr
+STACK CFI 22e7e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 22e94 12 .cfa: sp 0 + .ra: lr
+STACK CFI 22e96 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 22ea8 18 .cfa: sp 0 + .ra: lr
+STACK CFI 22eaa .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 22ec0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 22ec2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 22ea8 18 .cfa: sp 0 + .ra: lr
+STACK CFI 22eaa .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 22ec0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 22ec2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 22ea8 18 .cfa: sp 0 + .ra: lr
+STACK CFI 22eaa .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 22ec0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 22ec2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 22ea8 18 .cfa: sp 0 + .ra: lr
+STACK CFI 22eaa .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 22ec0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 22ec2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 22ea8 18 .cfa: sp 0 + .ra: lr
+STACK CFI 22eaa .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 22ec0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 22ec2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 22ed4 20 .cfa: sp 0 + .ra: lr
+STACK CFI 22ed6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 22ef4 20 .cfa: sp 0 + .ra: lr
+STACK CFI 22ef6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 22f14 20 .cfa: sp 0 + .ra: lr
+STACK CFI 22f16 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 22f34 20 .cfa: sp 0 + .ra: lr
+STACK CFI 22f36 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 22f54 20 .cfa: sp 0 + .ra: lr
+STACK CFI 22f56 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 22f74 20 .cfa: sp 0 + .ra: lr
+STACK CFI 22f76 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16a6c 54 .cfa: sp 0 + .ra: lr
+STACK CFI 16a70 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 16ac0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 16ac6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16ad8 14 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16aec 1e .cfa: sp 0 + .ra: lr
+STACK CFI 16aee .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16b0a 1e .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16b40 24 .cfa: sp 0 + .ra: lr
+STACK CFI 16b44 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16b64 12 .cfa: sp 0 + .ra: lr
+STACK CFI 16b66 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16b76 28 .cfa: sp 0 + .ra: lr
+STACK CFI 16b78 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 16b9e e .cfa: sp 0 + .ra: lr
+STACK CFI 16ba0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 22f94 144 .cfa: sp 0 + .ra: lr
+STACK CFI 22f9a .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 22fa2 .cfa: sp 88 +
+STACK CFI 230ae .cfa: sp 28 +
+STACK CFI INIT 230d8 44 .cfa: sp 0 + .ra: lr
+STACK CFI 230da .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2311c 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2311e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16bac 9c .cfa: sp 0 + .ra: lr
+STACK CFI 16bb0 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 16bbc .cfa: sp 48 +
+STACK CFI 16c3e .cfa: sp 28 +
+STACK CFI INIT 16c48 78 .cfa: sp 0 + .ra: lr
+STACK CFI 16c4a .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 16cc0 66 .cfa: sp 0 + .ra: lr
+STACK CFI 16cc2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 16d26 42 .cfa: sp 0 + .ra: lr
+STACK CFI 16d28 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 16d68 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16d6e 1c .cfa: sp 0 + .ra: lr
+STACK CFI 16d70 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 16db4 38 .cfa: sp 0 + .ra: lr
+STACK CFI 16db6 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 16de6 .cfa: sp 8 +
+STACK CFI INIT 16f88 28 .cfa: sp 0 + .ra: lr
+STACK CFI 16f8a .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 23130 48 .cfa: sp 0 + .ra: lr
+STACK CFI 23132 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 7c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 0 b4 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r3: .cfa -32 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI INIT 1705c 54 .cfa: sp 0 + .ra: lr
+STACK CFI 1705e .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 170b0 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170b8 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170c4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 170c6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 170d6 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170e2 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170ec 54 .cfa: sp 0 + .ra: lr
+STACK CFI 170ee .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 17140 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17148 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17154 12 .cfa: sp 0 + .ra: lr
+STACK CFI 17156 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 17166 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17172 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 1717c 8c .cfa: sp 0 + .ra: lr
+STACK CFI 1717e .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 17208 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17210 80 .cfa: sp 0 + .ra: lr
+STACK CFI 17212 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 17290 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17298 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172a0 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172a8 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172b4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 172b6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 172c6 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172ce c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 1739c 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173a4 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173ac c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173b8 12 .cfa: sp 0 + .ra: lr
+STACK CFI 173ba .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 173ca 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173d2 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173de 2c .cfa: sp 0 + .ra: lr
+STACK CFI 173e0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1740a 40 .cfa: sp 0 + .ra: lr
+STACK CFI 1740c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1744a 24 .cfa: sp 0 + .ra: lr
+STACK CFI 1744c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1746e b4 .cfa: sp 0 + .ra: lr
+STACK CFI 17470 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 17520 .cfa: sp 20 +
+STACK CFI INIT 175b2 98 .cfa: sp 0 + .ra: lr
+STACK CFI 175b6 .cfa: sp 40 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 17646 .cfa: sp 28 +
+STACK CFI INIT 176da 16 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 176f0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 176f2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 1772c d8 .cfa: sp 0 + .ra: lr
+STACK CFI 17732 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 17800 .cfa: sp 24 +
+STACK CFI INIT 0 74 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 10 .cfa: sp 56 +
+STACK CFI 6a .cfa: sp 24 +
+STACK CFI INIT 17a84 2c .cfa: sp 0 + .ra: lr
+STACK CFI 17a86 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 17aae .cfa: sp 16 +
+STACK CFI INIT 17ab0 38 .cfa: sp 0 + .ra: lr
+STACK CFI 17ab2 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 17ae0 .cfa: sp 16 +
+STACK CFI INIT 0 2c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 2a .cfa: sp 16 +
+STACK CFI INIT 17ae8 2c .cfa: sp 0 + .ra: lr
+STACK CFI 17aea .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 17b12 .cfa: sp 16 +
+STACK CFI INIT 0 e0 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI e .cfa: sp 240 +
+STACK CFI d8 .cfa: sp 28 +
+STACK CFI INIT 18de4 74 .cfa: sp 0 + .ra: lr
+STACK CFI 18de8 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 18dec .cfa: sp 96 +
+STACK CFI 18e50 .cfa: sp 32 +
+STACK CFI INIT 0 e0 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI e .cfa: sp 240 +
+STACK CFI d8 .cfa: sp 28 +
+STACK CFI INIT 0 104 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI e .cfa: sp 112 +
+STACK CFI e2 .cfa: sp 28 +
+STACK CFI INIT 23178 2b8 .cfa: sp 0 + .ra: lr
+STACK CFI 2317c .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 23180 .cfa: sp 104 +
+STACK CFI 233e2 .cfa: sp 36 +
+STACK CFI INIT 18320 74 .cfa: sp 0 + .ra: lr
+STACK CFI 18324 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 18328 .cfa: sp 96 +
+STACK CFI 1838c .cfa: sp 32 +
+STACK CFI INIT 23430 1c .cfa: sp 0 + .ra: lr
+STACK CFI 23434 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2344c 1a .cfa: sp 0 + .ra: lr
+STACK CFI 2344e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 23450 .cfa: sp 96 +
+STACK CFI 23464 .cfa: sp 8 +
+STACK CFI INIT 23468 1d0 .cfa: sp 0 + .ra: lr
+STACK CFI 2346c .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 23470 .cfa: sp 176 +
+STACK CFI 235e8 .cfa: sp 28 +
+STACK CFI INIT 23638 400 .cfa: sp 0 + .ra: lr
+STACK CFI 2363c .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 23642 .cfa: sp 960 +
+STACK CFI 239b0 .cfa: sp 36 +
+STACK CFI INIT 23a38 46c .cfa: sp 0 + .ra: lr
+STACK CFI 23a3c .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 23a44 .cfa: sp 4388 +
+STACK CFI 23a4a .cfa: sp 4408 +
+STACK CFI 23e3c .cfa: sp 36 +
+STACK CFI INIT 23ea4 2b0 .cfa: sp 0 + .ra: lr
+STACK CFI 23ea8 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 23eac .cfa: sp 232 +
+STACK CFI 240f8 .cfa: sp 36 +
+STACK CFI INIT 24154 2a8 .cfa: sp 0 + .ra: lr
+STACK CFI 24158 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 2415c .cfa: sp 216 +
+STACK CFI 243b4 .cfa: sp 36 +
+STACK CFI INIT 243fc 8b4 .cfa: sp 0 + .ra: lr
+STACK CFI 24400 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 24410 .cfa: sp 440 +
+STACK CFI 24c74 .cfa: sp 36 +
+STACK CFI INIT 24cb0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 24cb2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 191b0 62 .cfa: sp 0 + .ra: lr
+STACK CFI 191b2 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 19210 .cfa: sp 20 +
+STACK CFI INIT 19212 30 .cfa: sp 0 + .ra: lr
+STACK CFI 19214 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 19242 5e .cfa: sp 0 + .ra: lr
+STACK CFI 19244 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 192a0 64 .cfa: sp 0 + .ra: lr
+STACK CFI 192a2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 19304 90 .cfa: sp 0 + .ra: lr
+STACK CFI 19308 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 19394 84 .cfa: sp 0 + .ra: lr
+STACK CFI 1939a .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 17b14 90 .cfa: sp 0 + .ra: lr
+STACK CFI 17b1a .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 17ba0 .cfa: sp 24 +
+STACK CFI INIT 18134 a4 .cfa: sp 0 + .ra: lr
+STACK CFI 18138 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 181d4 .cfa: sp 24 +
+STACK CFI INIT 147f4 1d4 .cfa: sp 0 + .ra: lr
+STACK CFI 147f8 .cfa: sp 40 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 1494e .cfa: sp 24 +
+STACK CFI INIT 15dc4 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15dc6 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15dc8 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15ddc 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de4 ac .cfa: sp 0 + .ra: lr
+STACK CFI 15de6 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 15e90 9e .cfa: sp 0 + .ra: lr
+STACK CFI 15e92 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 15e94 .cfa: sp 40 +
+STACK CFI 15f2c .cfa: sp 20 +
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f2e 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f3e 16 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f54 3e .cfa: sp 0 + .ra: lr
+STACK CFI 15f56 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f92 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f9e 1a .cfa: sp 0 + .ra: lr
+STACK CFI 15fa0 .cfa: sp 16 + .ra: .cfa -4 + ^
+STACK CFI 15fb4 .cfa: sp 4 +
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15fb8 18 .cfa: sp 0 + .ra: lr
+STACK CFI 15fba .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 24cc4 20 .cfa: sp 0 + .ra: lr
+STACK CFI 24cc6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 24ce4 20 .cfa: sp 0 + .ra: lr
+STACK CFI 24ce6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 24d04 20 .cfa: sp 0 + .ra: lr
+STACK CFI 24d06 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 24d24 20 .cfa: sp 0 + .ra: lr
+STACK CFI 24d26 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 24d44 20 .cfa: sp 0 + .ra: lr
+STACK CFI 24d46 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 24d64 20 .cfa: sp 0 + .ra: lr
+STACK CFI 24d66 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 24d84 20 .cfa: sp 0 + .ra: lr
+STACK CFI 24d86 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 24da4 20 .cfa: sp 0 + .ra: lr
+STACK CFI 24da6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16030 4c .cfa: sp 0 + .ra: lr
+STACK CFI 16034 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fdc 54 .cfa: sp 0 + .ra: lr
+STACK CFI 15fe0 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 1607c 1c .cfa: sp 0 + .ra: lr
+STACK CFI 16080 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16098 12 .cfa: sp 0 + .ra: lr
+STACK CFI 1609a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 160ac 1c .cfa: sp 0 + .ra: lr
+STACK CFI 160b0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 160c8 12 .cfa: sp 0 + .ra: lr
+STACK CFI 160ca .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 24dc4 18 .cfa: sp 0 + .ra: lr
+STACK CFI 24dc6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 24ddc 12 .cfa: sp 0 + .ra: lr
+STACK CFI 24dde .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 24df0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 24df2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 24e08 12 .cfa: sp 0 + .ra: lr
+STACK CFI 24e0a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 24e1c 18 .cfa: sp 0 + .ra: lr
+STACK CFI 24e1e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 24e34 12 .cfa: sp 0 + .ra: lr
+STACK CFI 24e36 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 24e48 18 .cfa: sp 0 + .ra: lr
+STACK CFI 24e4a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 24e60 12 .cfa: sp 0 + .ra: lr
+STACK CFI 24e62 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 24e74 18 .cfa: sp 0 + .ra: lr
+STACK CFI 24e76 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 24e8c 12 .cfa: sp 0 + .ra: lr
+STACK CFI 24e8e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 24ea0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 24ea2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 24eb8 12 .cfa: sp 0 + .ra: lr
+STACK CFI 24eba .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 24ecc 18 .cfa: sp 0 + .ra: lr
+STACK CFI 24ece .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 24ee4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 24ee6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 24ef8 18 .cfa: sp 0 + .ra: lr
+STACK CFI 24efa .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 24f10 12 .cfa: sp 0 + .ra: lr
+STACK CFI 24f12 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16a6c 54 .cfa: sp 0 + .ra: lr
+STACK CFI 16a70 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 1e00e 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16ac0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 16ac6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16ad8 14 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16aec 1e .cfa: sp 0 + .ra: lr
+STACK CFI 16aee .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16b0a 1e .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16b76 28 .cfa: sp 0 + .ra: lr
+STACK CFI 16b78 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 16b9e e .cfa: sp 0 + .ra: lr
+STACK CFI 16ba0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16b40 24 .cfa: sp 0 + .ra: lr
+STACK CFI 16b44 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16b64 12 .cfa: sp 0 + .ra: lr
+STACK CFI 16b66 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16bac 9c .cfa: sp 0 + .ra: lr
+STACK CFI 16bb0 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 16bbc .cfa: sp 48 +
+STACK CFI 16c3e .cfa: sp 28 +
+STACK CFI INIT 16c48 78 .cfa: sp 0 + .ra: lr
+STACK CFI 16c4a .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 16cc0 66 .cfa: sp 0 + .ra: lr
+STACK CFI 16cc2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 16d26 42 .cfa: sp 0 + .ra: lr
+STACK CFI 16d28 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 16d68 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16d6e 1c .cfa: sp 0 + .ra: lr
+STACK CFI 16d70 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 24f22 7a .cfa: sp 0 + .ra: lr
+STACK CFI 24f24 .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 16d8a 28 .cfa: sp 0 + .ra: lr
+STACK CFI 16d8e .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 24f9c 30 .cfa: sp 0 + .ra: lr
+STACK CFI 24f9e .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 24fcc 32 .cfa: sp 0 + .ra: lr
+STACK CFI 24fd2 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 24ffc .cfa: sp 16 +
+STACK CFI INIT 0 30 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 28 .cfa: sp 8 +
+STACK CFI INIT 16f58 30 .cfa: sp 0 + .ra: lr
+STACK CFI 16f5a .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 16f88 28 .cfa: sp 0 + .ra: lr
+STACK CFI 16f8a .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 b4 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r3: .cfa -32 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI INIT 0 7c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 17044 16 .cfa: sp 0 + .ra: lr
+STACK CFI 17046 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 17056 .cfa: sp 0 + .ra: .ra r4: r4
+STACK CFI INIT 1705c 54 .cfa: sp 0 + .ra: lr
+STACK CFI 1705e .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 170b0 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170b8 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170c4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 170c6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 170d6 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170e2 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170ec 54 .cfa: sp 0 + .ra: lr
+STACK CFI 170ee .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 17140 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17148 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17154 12 .cfa: sp 0 + .ra: lr
+STACK CFI 17156 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 17166 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17172 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 1717c 8c .cfa: sp 0 + .ra: lr
+STACK CFI 1717e .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 17208 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17210 80 .cfa: sp 0 + .ra: lr
+STACK CFI 17212 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 17290 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17298 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172a0 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172a8 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172b4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 172b6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 172c6 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172ce c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 1739c 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173a4 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173ac c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173b8 12 .cfa: sp 0 + .ra: lr
+STACK CFI 173ba .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 173ca 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173d2 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173de 2c .cfa: sp 0 + .ra: lr
+STACK CFI 173e0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1740a 40 .cfa: sp 0 + .ra: lr
+STACK CFI 1740c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1744a 24 .cfa: sp 0 + .ra: lr
+STACK CFI 1744c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1746e b4 .cfa: sp 0 + .ra: lr
+STACK CFI 17470 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 17520 .cfa: sp 20 +
+STACK CFI INIT 17522 90 .cfa: sp 0 + .ra: lr
+STACK CFI 17524 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 17526 .cfa: sp 80 +
+STACK CFI 175b0 .cfa: sp 20 +
+STACK CFI INIT 175b2 98 .cfa: sp 0 + .ra: lr
+STACK CFI 175b6 .cfa: sp 40 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 17646 .cfa: sp 28 +
+STACK CFI INIT 176da 16 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 176f0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 176f2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 0 d0 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI cc .cfa: sp 24 +
+STACK CFI INIT 24ffe 1a .cfa: sp 0 + .ra: lr
+STACK CFI 25000 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 25014 .cfa: sp 0 + .ra: .ra r3: r3 r4: r4 r5: r5
+STACK CFI INIT 0 1e8 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 16 .cfa: sp 208 +
+STACK CFI 1be .cfa: sp 32 +
+STACK CFI INIT 0 74 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 10 .cfa: sp 56 +
+STACK CFI 6a .cfa: sp 24 +
+STACK CFI INIT 17a84 2c .cfa: sp 0 + .ra: lr
+STACK CFI 17a86 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 17aae .cfa: sp 16 +
+STACK CFI INIT 17ab0 38 .cfa: sp 0 + .ra: lr
+STACK CFI 17ab2 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 17ae0 .cfa: sp 16 +
+STACK CFI INIT 0 2c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 2a .cfa: sp 16 +
+STACK CFI INIT 17ae8 2c .cfa: sp 0 + .ra: lr
+STACK CFI 17aea .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 17b12 .cfa: sp 16 +
+STACK CFI INIT 0 2c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 2a .cfa: sp 16 +
+STACK CFI INIT 25018 22 .cfa: sp 0 + .ra: lr
+STACK CFI 2501e .cfa: sp 16 +
+STACK CFI 25038 .cfa: sp 0 +
+STACK CFI INIT 2503a 1a .cfa: sp 0 + .ra: lr
+STACK CFI 2503c .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 25018 22 .cfa: sp 0 + .ra: lr
+STACK CFI 2501e .cfa: sp 16 +
+STACK CFI 25038 .cfa: sp 0 +
+STACK CFI INIT 25054 1c .cfa: sp 0 + .ra: lr
+STACK CFI 25056 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 25070 c0 .cfa: sp 0 + .ra: lr
+STACK CFI 25074 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 25078 .cfa: sp 264 +
+STACK CFI 25124 .cfa: sp 36 +
+STACK CFI INIT 25130 4a .cfa: sp 0 + .ra: lr
+STACK CFI 25134 .cfa: sp 40 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 25176 .cfa: sp 32 +
+STACK CFI INIT 2517c a0 .cfa: sp 0 + .ra: lr
+STACK CFI 25180 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 2518a .cfa: sp 264 +
+STACK CFI 25212 .cfa: sp 36 +
+STACK CFI INIT 0 42 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 40 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 3e .cfa: sp 28 +
+STACK CFI INIT 0 8a .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 86 .cfa: sp 24 +
+STACK CFI INIT 17ba4 46 .cfa: sp 0 + .ra: lr
+STACK CFI 17ba6 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 17be8 .cfa: sp 20 +
+STACK CFI INIT 17bec 2c8 .cfa: sp 0 + .ra: lr
+STACK CFI 17bf0 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 17bf4 .cfa: sp 256 +
+STACK CFI 17e60 .cfa: sp 36 +
+STACK CFI INIT 17eb4 14 .cfa: sp 0 + .ra: lr
+STACK CFI 17eb6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 18134 a4 .cfa: sp 0 + .ra: lr
+STACK CFI 18138 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 181d4 .cfa: sp 24 +
+STACK CFI INIT 181d8 48 .cfa: sp 0 + .ra: lr
+STACK CFI 181da .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 181e6 .cfa: sp 184 +
+STACK CFI 1821a .cfa: sp 20 +
+STACK CFI INIT 18220 d4 .cfa: sp 0 + .ra: lr
+STACK CFI 18224 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 18228 .cfa: sp 112 +
+STACK CFI 182d6 .cfa: sp 28 +
+STACK CFI INIT 182f4 2c .cfa: sp 0 + .ra: lr
+STACK CFI 182f6 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 18318 .cfa: sp 20 +
+STACK CFI INIT 18320 74 .cfa: sp 0 + .ra: lr
+STACK CFI 18324 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 18328 .cfa: sp 96 +
+STACK CFI 1838c .cfa: sp 32 +
+STACK CFI INIT 2521c d8 .cfa: sp 0 + .ra: lr
+STACK CFI 25220 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 2522a .cfa: sp 240 +
+STACK CFI 252ec .cfa: sp 32 +
+STACK CFI INIT 0 f4 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 12 .cfa: sp 104 +
+STACK CFI d4 .cfa: sp 32 +
+STACK CFI INIT 252f4 26c .cfa: sp 0 + .ra: lr
+STACK CFI 252f8 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 25300 .cfa: sp 1120 +
+STACK CFI 25522 .cfa: sp 36 +
+STACK CFI INIT 25560 274 .cfa: sp 0 + .ra: lr
+STACK CFI 25564 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 2556c .cfa: sp 1120 +
+STACK CFI 25798 .cfa: sp 36 +
+STACK CFI INIT 18c24 d8 .cfa: sp 0 + .ra: lr
+STACK CFI 18c28 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 18c32 .cfa: sp 240 +
+STACK CFI 18cf4 .cfa: sp 28 +
+STACK CFI INIT 18e58 11c .cfa: sp 0 + .ra: lr
+STACK CFI 18e5c .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 18e6a .cfa: sp 296 +
+STACK CFI 18f6a .cfa: sp 36 +
+STACK CFI INIT 0 58 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 56 .cfa: sp 20 +
+STACK CFI INIT 192a0 64 .cfa: sp 0 + .ra: lr
+STACK CFI 192a2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 19304 90 .cfa: sp 0 + .ra: lr
+STACK CFI 19308 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 19212 30 .cfa: sp 0 + .ra: lr
+STACK CFI 19214 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 19242 5e .cfa: sp 0 + .ra: lr
+STACK CFI 19244 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 19394 84 .cfa: sp 0 + .ra: lr
+STACK CFI 1939a .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 149c8 200 .cfa: sp 0 + .ra: lr
+STACK CFI 149ca .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 149cc .cfa: sp 40 +
+STACK CFI 14b5a .cfa: sp 20 +
+STACK CFI INIT 257d4 c70 .cfa: sp 0 + .ra: lr
+STACK CFI 257d8 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 257e0 .cfa: sp 1808 +
+STACK CFI 262c6 .cfa: sp 36 +
+STACK CFI INIT 26444 7d0 .cfa: sp 0 + .ra: lr
+STACK CFI 26448 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 26450 .cfa: sp 1824 +
+STACK CFI 26b54 .cfa: sp 36 +
+STACK CFI INIT 26c14 8a8 .cfa: sp 0 + .ra: lr
+STACK CFI 26c18 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 26c20 .cfa: sp 1424 +
+STACK CFI 273ce .cfa: sp 36 +
+STACK CFI INIT 274bc 298 .cfa: sp 0 + .ra: lr
+STACK CFI 274c0 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 274c8 .cfa: sp 1120 +
+STACK CFI 27710 .cfa: sp 36 +
+STACK CFI INIT 27754 5a4 .cfa: sp 0 + .ra: lr
+STACK CFI 27758 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 27760 .cfa: sp 1192 +
+STACK CFI 27c70 .cfa: sp 36 +
+STACK CFI INIT 27cf8 dec .cfa: sp 0 + .ra: lr
+STACK CFI 27cfc .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 27d0a .cfa: sp 536 +
+STACK CFI 28a1e .cfa: sp 36 +
+STACK CFI INIT 1e00e 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16ac0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 16ac6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16b0a 1e .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16d8a 28 .cfa: sp 0 + .ra: lr
+STACK CFI 16d8e .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 30 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 28 .cfa: sp 8 +
+STACK CFI INIT 16f58 30 .cfa: sp 0 + .ra: lr
+STACK CFI 16f5a .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 176f0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 176f2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 1772c d8 .cfa: sp 0 + .ra: lr
+STACK CFI 17732 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 17800 .cfa: sp 24 +
+STACK CFI INIT 17804 44 .cfa: sp 0 + .ra: lr
+STACK CFI 17806 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 28ae4 2a0 .cfa: sp 0 + .ra: lr
+STACK CFI 28ae8 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 28af6 .cfa: sp 4196 +
+STACK CFI 28af8 .cfa: sp 4208 +
+STACK CFI 28d5c .cfa: sp 36 +
+STACK CFI INIT 15dc4 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15dc6 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15dc8 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15ddc 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de4 ac .cfa: sp 0 + .ra: lr
+STACK CFI 15de6 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 15e90 9e .cfa: sp 0 + .ra: lr
+STACK CFI 15e92 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 15e94 .cfa: sp 40 +
+STACK CFI 15f2c .cfa: sp 20 +
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f2e 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f3e 16 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f54 3e .cfa: sp 0 + .ra: lr
+STACK CFI 15f56 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f92 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f9e 1a .cfa: sp 0 + .ra: lr
+STACK CFI 15fa0 .cfa: sp 16 + .ra: .cfa -4 + ^
+STACK CFI 15fb4 .cfa: sp 4 +
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15fb8 18 .cfa: sp 0 + .ra: lr
+STACK CFI 15fba .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16030 4c .cfa: sp 0 + .ra: lr
+STACK CFI 16034 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 15fdc 54 .cfa: sp 0 + .ra: lr
+STACK CFI 15fe0 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 1607c 1c .cfa: sp 0 + .ra: lr
+STACK CFI 16080 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16098 12 .cfa: sp 0 + .ra: lr
+STACK CFI 1609a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 160ac 1c .cfa: sp 0 + .ra: lr
+STACK CFI 160b0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 160c8 12 .cfa: sp 0 + .ra: lr
+STACK CFI 160ca .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 28d84 18 .cfa: sp 0 + .ra: lr
+STACK CFI 28d86 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 28d9c 12 .cfa: sp 0 + .ra: lr
+STACK CFI 28d9e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 28db0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 28db2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 28dc8 12 .cfa: sp 0 + .ra: lr
+STACK CFI 28dca .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 28ddc 18 .cfa: sp 0 + .ra: lr
+STACK CFI 28dde .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 28df4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 28df6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 28e08 18 .cfa: sp 0 + .ra: lr
+STACK CFI 28e0a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 28e20 12 .cfa: sp 0 + .ra: lr
+STACK CFI 28e22 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 28e34 18 .cfa: sp 0 + .ra: lr
+STACK CFI 28e36 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 28e4c 12 .cfa: sp 0 + .ra: lr
+STACK CFI 28e4e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 28e60 18 .cfa: sp 0 + .ra: lr
+STACK CFI 28e62 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 28e78 12 .cfa: sp 0 + .ra: lr
+STACK CFI 28e7a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 28e8c 18 .cfa: sp 0 + .ra: lr
+STACK CFI 28e8e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 28ea4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 28ea6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 28eb8 18 .cfa: sp 0 + .ra: lr
+STACK CFI 28eba .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 28ed0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 28ed2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 28ee4 18 .cfa: sp 0 + .ra: lr
+STACK CFI 28ee6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 28efc 12 .cfa: sp 0 + .ra: lr
+STACK CFI 28efe .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 28f10 18 .cfa: sp 0 + .ra: lr
+STACK CFI 28f12 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 28f28 12 .cfa: sp 0 + .ra: lr
+STACK CFI 28f2a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 28f3c 20 .cfa: sp 0 + .ra: lr
+STACK CFI 28f3e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 28f5c 20 .cfa: sp 0 + .ra: lr
+STACK CFI 28f5e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 28f7c 20 .cfa: sp 0 + .ra: lr
+STACK CFI 28f7e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 28f9c 20 .cfa: sp 0 + .ra: lr
+STACK CFI 28f9e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 28fbc 20 .cfa: sp 0 + .ra: lr
+STACK CFI 28fbe .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 28fdc 20 .cfa: sp 0 + .ra: lr
+STACK CFI 28fde .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 28ffc 20 .cfa: sp 0 + .ra: lr
+STACK CFI 28ffe .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2901c 20 .cfa: sp 0 + .ra: lr
+STACK CFI 2901e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2903c 20 .cfa: sp 0 + .ra: lr
+STACK CFI 2903e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2905c 20 .cfa: sp 0 + .ra: lr
+STACK CFI 2905e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16a6c 54 .cfa: sp 0 + .ra: lr
+STACK CFI 16a70 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 2907c 116 .cfa: sp 0 + .ra: lr
+STACK CFI 29080 .cfa: sp 40 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r3: .cfa -40 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI INIT 1e00e 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16ac0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 16ac6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16ad8 14 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 1eca4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 1eca6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1ecb8 6c .cfa: sp 0 + .ra: lr
+STACK CFI 1ecba .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 1ecc0 .cfa: sp 4112 +
+STACK CFI 1ecc6 .cfa: sp 4120 +
+STACK CFI 1ed1a .cfa: sp 16 +
+STACK CFI INIT 29194 5c .cfa: sp 0 + .ra: lr
+STACK CFI 29196 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 16aec 1e .cfa: sp 0 + .ra: lr
+STACK CFI 16aee .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16b0a 1e .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16b40 24 .cfa: sp 0 + .ra: lr
+STACK CFI 16b44 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16b64 12 .cfa: sp 0 + .ra: lr
+STACK CFI 16b66 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 24 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 291f0 150 .cfa: sp 0 + .ra: lr
+STACK CFI 291f4 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 291fa .cfa: sp 632 +
+STACK CFI 29312 .cfa: sp 28 +
+STACK CFI INIT 29340 230 .cfa: sp 0 + .ra: lr
+STACK CFI 29344 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 2934a .cfa: sp 632 +
+STACK CFI 29514 .cfa: sp 32 +
+STACK CFI INIT 29570 30c .cfa: sp 0 + .ra: lr
+STACK CFI 29574 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 2957a .cfa: sp 648 +
+STACK CFI 297f6 .cfa: sp 36 +
+STACK CFI INIT 2987c 230 .cfa: sp 0 + .ra: lr
+STACK CFI 29880 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 29886 .cfa: sp 632 +
+STACK CFI 29a50 .cfa: sp 32 +
+STACK CFI INIT 29aac 230 .cfa: sp 0 + .ra: lr
+STACK CFI 29ab0 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 29ab6 .cfa: sp 632 +
+STACK CFI 29c80 .cfa: sp 32 +
+STACK CFI INIT 29cdc 230 .cfa: sp 0 + .ra: lr
+STACK CFI 29ce0 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 29ce6 .cfa: sp 632 +
+STACK CFI 29eb0 .cfa: sp 32 +
+STACK CFI INIT 29f0c 300 .cfa: sp 0 + .ra: lr
+STACK CFI 29f10 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 29f16 .cfa: sp 664 +
+STACK CFI 2a196 .cfa: sp 36 +
+STACK CFI INIT 2a20c 230 .cfa: sp 0 + .ra: lr
+STACK CFI 2a210 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 2a216 .cfa: sp 632 +
+STACK CFI 2a3e0 .cfa: sp 32 +
+STACK CFI INIT 16bac 9c .cfa: sp 0 + .ra: lr
+STACK CFI 16bb0 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 16bbc .cfa: sp 48 +
+STACK CFI 16c3e .cfa: sp 28 +
+STACK CFI INIT 16c48 78 .cfa: sp 0 + .ra: lr
+STACK CFI 16c4a .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 16cc0 66 .cfa: sp 0 + .ra: lr
+STACK CFI 16cc2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 30 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 28 .cfa: sp 8 +
+STACK CFI INIT 0 b4 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r3: .cfa -32 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI INIT 0 7c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 1705c 54 .cfa: sp 0 + .ra: lr
+STACK CFI 1705e .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 170b0 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170b8 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170c4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 170c6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 170d6 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170e2 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170ec 54 .cfa: sp 0 + .ra: lr
+STACK CFI 170ee .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 17140 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17148 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17154 12 .cfa: sp 0 + .ra: lr
+STACK CFI 17156 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 17166 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17172 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 1717c 8c .cfa: sp 0 + .ra: lr
+STACK CFI 1717e .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 17208 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17210 80 .cfa: sp 0 + .ra: lr
+STACK CFI 17212 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 17290 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17298 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172a0 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172a8 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172b4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 172b6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 172c6 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172ce c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 1739c 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173a4 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173ac c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173b8 12 .cfa: sp 0 + .ra: lr
+STACK CFI 173ba .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 173ca 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173d2 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 38 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 176f0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 176f2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 0 dc .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 8 .cfa: sp 72 +
+STACK CFI da .cfa: sp 20 +
+STACK CFI INIT 0 dc .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI e .cfa: sp 264 +
+STACK CFI d2 .cfa: sp 36 +
+STACK CFI INIT 2a43c 294 .cfa: sp 0 + .ra: lr
+STACK CFI 2a440 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 2a448 .cfa: sp 640 +
+STACK CFI 2a668 .cfa: sp 36 +
+STACK CFI INIT 2a6d0 294 .cfa: sp 0 + .ra: lr
+STACK CFI 2a6d4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 2a6dc .cfa: sp 640 +
+STACK CFI 2a8fc .cfa: sp 36 +
+STACK CFI INIT 0 94 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 90 .cfa: sp 24 +
+STACK CFI INIT 18134 a4 .cfa: sp 0 + .ra: lr
+STACK CFI 18138 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 181d4 .cfa: sp 24 +
+STACK CFI INIT 0 58 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 56 .cfa: sp 20 +
+STACK CFI INIT 0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 19242 5e .cfa: sp 0 + .ra: lr
+STACK CFI 19244 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 6c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 19304 90 .cfa: sp 0 + .ra: lr
+STACK CFI 19308 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 19394 84 .cfa: sp 0 + .ra: lr
+STACK CFI 1939a .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 14bc8 294 .cfa: sp 0 + .ra: lr
+STACK CFI 14bcc .cfa: sp 40 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 14dd0 .cfa: sp 24 +
+STACK CFI INIT 15dc4 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15dc6 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15dc8 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15ddc 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de4 ac .cfa: sp 0 + .ra: lr
+STACK CFI 15de6 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 15e90 9e .cfa: sp 0 + .ra: lr
+STACK CFI 15e92 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 15e94 .cfa: sp 40 +
+STACK CFI 15f2c .cfa: sp 20 +
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f2e 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f3e 16 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f54 3e .cfa: sp 0 + .ra: lr
+STACK CFI 15f56 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f92 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f9e 1a .cfa: sp 0 + .ra: lr
+STACK CFI 15fa0 .cfa: sp 16 + .ra: .cfa -4 + ^
+STACK CFI 15fb4 .cfa: sp 4 +
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15fb8 18 .cfa: sp 0 + .ra: lr
+STACK CFI 15fba .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16030 4c .cfa: sp 0 + .ra: lr
+STACK CFI 16034 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 15fdc 54 .cfa: sp 0 + .ra: lr
+STACK CFI 15fe0 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 1607c 1c .cfa: sp 0 + .ra: lr
+STACK CFI 16080 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16098 12 .cfa: sp 0 + .ra: lr
+STACK CFI 1609a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 160ac 1c .cfa: sp 0 + .ra: lr
+STACK CFI 160b0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 160c8 12 .cfa: sp 0 + .ra: lr
+STACK CFI 160ca .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2a964 18 .cfa: sp 0 + .ra: lr
+STACK CFI 2a966 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2a97c 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2a97e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2a990 18 .cfa: sp 0 + .ra: lr
+STACK CFI 2a992 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2a9a8 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2a9aa .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2a9bc 18 .cfa: sp 0 + .ra: lr
+STACK CFI 2a9be .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2a9d4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2a9d6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2a9e8 20 .cfa: sp 0 + .ra: lr
+STACK CFI 2a9ea .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2aa08 20 .cfa: sp 0 + .ra: lr
+STACK CFI 2aa0a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2aa28 20 .cfa: sp 0 + .ra: lr
+STACK CFI 2aa2a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16a6c 54 .cfa: sp 0 + .ra: lr
+STACK CFI 16a70 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 1e00e 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16ac0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 16ac6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16ad8 14 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16aec 1e .cfa: sp 0 + .ra: lr
+STACK CFI 16aee .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2aa48 30 .cfa: sp 0 + .ra: lr
+STACK CFI 2aa4a .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 2aa4e .cfa: sp 48 +
+STACK CFI 2aa76 .cfa: sp 12 +
+STACK CFI INIT 2aa78 74 .cfa: sp 0 + .ra: lr
+STACK CFI 2aa7a .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 16b0a 1e .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16b40 24 .cfa: sp 0 + .ra: lr
+STACK CFI 16b44 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16b64 12 .cfa: sp 0 + .ra: lr
+STACK CFI 16b66 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 24 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 16bac 9c .cfa: sp 0 + .ra: lr
+STACK CFI 16bb0 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 16bbc .cfa: sp 48 +
+STACK CFI 16c3e .cfa: sp 28 +
+STACK CFI INIT 16c48 78 .cfa: sp 0 + .ra: lr
+STACK CFI 16c4a .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 16cc0 66 .cfa: sp 0 + .ra: lr
+STACK CFI 16cc2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 16d6e 1c .cfa: sp 0 + .ra: lr
+STACK CFI 16d70 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 0 30 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 28 .cfa: sp 8 +
+STACK CFI INIT 16f88 28 .cfa: sp 0 + .ra: lr
+STACK CFI 16f8a .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 7c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 0 b4 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r3: .cfa -32 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI INIT 1705c 54 .cfa: sp 0 + .ra: lr
+STACK CFI 1705e .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 170b0 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170b8 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170c4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 170c6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 170d6 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170e2 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170ec 54 .cfa: sp 0 + .ra: lr
+STACK CFI 170ee .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 17140 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17148 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17154 12 .cfa: sp 0 + .ra: lr
+STACK CFI 17156 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 17166 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17172 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 1717c 8c .cfa: sp 0 + .ra: lr
+STACK CFI 1717e .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 17208 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17210 80 .cfa: sp 0 + .ra: lr
+STACK CFI 17212 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 17290 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17298 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172a0 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172a8 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172b4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 172b6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 172c6 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172ce c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 1739c 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173a4 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173ac c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173b8 12 .cfa: sp 0 + .ra: lr
+STACK CFI 173ba .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 173ca 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173d2 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173de 2c .cfa: sp 0 + .ra: lr
+STACK CFI 173e0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1740a 40 .cfa: sp 0 + .ra: lr
+STACK CFI 1740c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1744a 24 .cfa: sp 0 + .ra: lr
+STACK CFI 1744c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 b8 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI b6 .cfa: sp 20 +
+STACK CFI INIT 0 98 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 4 .cfa: sp 80 +
+STACK CFI 96 .cfa: sp 20 +
+STACK CFI INIT 2aaec 2c .cfa: sp 0 + .ra: lr
+STACK CFI 2aaee .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 2aaf8 .cfa: sp 0 + .ra: .ra r3: r3 r4: r4 r5: r5
+STACK CFI 2ab02 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 2ab10 .cfa: sp 0 + .ra: .ra r3: r3 r4: r4 r5: r5
+STACK CFI INIT 2aaec 2c .cfa: sp 0 + .ra: lr
+STACK CFI 2aaee .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 2aaf8 .cfa: sp 0 + .ra: .ra r3: r3 r4: r4 r5: r5
+STACK CFI 2ab02 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 2ab10 .cfa: sp 0 + .ra: .ra r3: r3 r4: r4 r5: r5
+STACK CFI INIT 0 98 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 4 .cfa: sp 80 +
+STACK CFI 96 .cfa: sp 20 +
+STACK CFI INIT 176da 16 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 176f0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 176f2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 0 d0 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI cc .cfa: sp 24 +
+STACK CFI INIT 0 1ec .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 16 .cfa: sp 208 +
+STACK CFI 1c2 .cfa: sp 32 +
+STACK CFI INIT 20330 98 .cfa: sp 0 + .ra: lr
+STACK CFI 20332 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 20334 .cfa: sp 80 +
+STACK CFI 203c6 .cfa: sp 20 +
+STACK CFI INIT 2ab18 a0 .cfa: sp 0 + .ra: lr
+STACK CFI 2ab1c .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 2ab26 .cfa: sp 264 +
+STACK CFI 2abb0 .cfa: sp 36 +
+STACK CFI INIT 2127c a0 .cfa: sp 0 + .ra: lr
+STACK CFI 21280 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 2128a .cfa: sp 264 +
+STACK CFI 21314 .cfa: sp 36 +
+STACK CFI INIT 0 20 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 1e .cfa: sp 20 +
+STACK CFI INIT 2ab18 a0 .cfa: sp 0 + .ra: lr
+STACK CFI 2ab1c .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 2ab26 .cfa: sp 264 +
+STACK CFI 2abb0 .cfa: sp 36 +
+STACK CFI INIT 2abb8 2fc .cfa: sp 0 + .ra: lr
+STACK CFI 2abbc .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 2abc2 .cfa: sp 112 +
+STACK CFI 2ae5a .cfa: sp 28 +
+STACK CFI INIT 2aeb4 20 .cfa: sp 0 + .ra: lr
+STACK CFI 2aeb6 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 2aed4 1a .cfa: sp 0 + .ra: lr
+STACK CFI 2aed8 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 a0 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI e .cfa: sp 264 +
+STACK CFI 98 .cfa: sp 36 +
+STACK CFI INIT 0 8a .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 86 .cfa: sp 24 +
+STACK CFI INIT 17ba4 46 .cfa: sp 0 + .ra: lr
+STACK CFI 17ba6 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 17be8 .cfa: sp 20 +
+STACK CFI INIT 17bec 2c8 .cfa: sp 0 + .ra: lr
+STACK CFI 17bf0 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 17bf4 .cfa: sp 256 +
+STACK CFI 17e60 .cfa: sp 36 +
+STACK CFI INIT 2aef0 f5c .cfa: sp 0 + .ra: lr
+STACK CFI 2aef4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 2aefa .cfa: sp 240 +
+STACK CFI 2be36 .cfa: sp 36 +
+STACK CFI INIT 18134 a4 .cfa: sp 0 + .ra: lr
+STACK CFI 18138 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 181d4 .cfa: sp 24 +
+STACK CFI INIT 20424 2c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 20450 2c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 2047c 9e .cfa: sp 0 + .ra: lr
+STACK CFI 20480 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 2be4c 98 .cfa: sp 0 + .ra: lr
+STACK CFI 2be50 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 2bee0 .cfa: sp 24 +
+STACK CFI INIT 2bee4 8e .cfa: sp 0 + .ra: lr
+STACK CFI 2bee6 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 2bf70 .cfa: sp 16 +
+STACK CFI INIT 2bf74 858 .cfa: sp 0 + .ra: lr
+STACK CFI 2bf78 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 2bf88 .cfa: sp 384 +
+STACK CFI 2c6ec .cfa: sp 36 +
+STACK CFI INIT 0 58 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 56 .cfa: sp 20 +
+STACK CFI INIT 19212 30 .cfa: sp 0 + .ra: lr
+STACK CFI 19214 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 19242 5e .cfa: sp 0 + .ra: lr
+STACK CFI 19244 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 192a0 64 .cfa: sp 0 + .ra: lr
+STACK CFI 192a2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 19304 90 .cfa: sp 0 + .ra: lr
+STACK CFI 19308 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 19394 84 .cfa: sp 0 + .ra: lr
+STACK CFI 1939a .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 14e5c dc .cfa: sp 0 + .ra: lr
+STACK CFI 14e5e .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 14e60 .cfa: sp 40 +
+STACK CFI 14f04 .cfa: sp 20 +
+STACK CFI INIT 15dc4 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15dc6 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15dc8 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15ddc 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de4 ac .cfa: sp 0 + .ra: lr
+STACK CFI 15de6 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 15e90 9e .cfa: sp 0 + .ra: lr
+STACK CFI 15e92 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 15e94 .cfa: sp 40 +
+STACK CFI 15f2c .cfa: sp 20 +
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f2e 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f3e 16 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f54 3e .cfa: sp 0 + .ra: lr
+STACK CFI 15f56 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f92 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f9e 1a .cfa: sp 0 + .ra: lr
+STACK CFI 15fa0 .cfa: sp 16 + .ra: .cfa -4 + ^
+STACK CFI 15fb4 .cfa: sp 4 +
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15fb8 18 .cfa: sp 0 + .ra: lr
+STACK CFI 15fba .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15fdc 54 .cfa: sp 0 + .ra: lr
+STACK CFI 15fe0 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1607c 1c .cfa: sp 0 + .ra: lr
+STACK CFI 16080 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16098 12 .cfa: sp 0 + .ra: lr
+STACK CFI 1609a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16030 4c .cfa: sp 0 + .ra: lr
+STACK CFI 16034 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 160ac 1c .cfa: sp 0 + .ra: lr
+STACK CFI 160b0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 160c8 12 .cfa: sp 0 + .ra: lr
+STACK CFI 160ca .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2c7cc 28 .cfa: sp 0 + .ra: lr
+STACK CFI 2c7ce .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2c7f4 28 .cfa: sp 0 + .ra: lr
+STACK CFI 2c7f6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2c81c 28 .cfa: sp 0 + .ra: lr
+STACK CFI 2c81e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2c844 28 .cfa: sp 0 + .ra: lr
+STACK CFI 2c846 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2c86c 28 .cfa: sp 0 + .ra: lr
+STACK CFI 2c86e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2c894 28 .cfa: sp 0 + .ra: lr
+STACK CFI 2c896 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2c8bc 28 .cfa: sp 0 + .ra: lr
+STACK CFI 2c8be .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2c8e4 28 .cfa: sp 0 + .ra: lr
+STACK CFI 2c8e6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16a6c 54 .cfa: sp 0 + .ra: lr
+STACK CFI 16a70 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 2c90c 18 .cfa: sp 0 + .ra: lr
+STACK CFI 2c910 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1e00e 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 2c924 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16ac0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 16ac6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2c930 f8 .cfa: sp 0 + .ra: lr
+STACK CFI 2c936 .cfa: sp 48 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 2ca1e .cfa: sp 36 +
+STACK CFI INIT 16aec 1e .cfa: sp 0 + .ra: lr
+STACK CFI 16aee .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 14 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16b40 24 .cfa: sp 0 + .ra: lr
+STACK CFI 16b44 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16b64 12 .cfa: sp 0 + .ra: lr
+STACK CFI 16b66 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16b76 28 .cfa: sp 0 + .ra: lr
+STACK CFI 16b78 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 16b9e e .cfa: sp 0 + .ra: lr
+STACK CFI 16ba0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2ca28 4c .cfa: sp 0 + .ra: lr
+STACK CFI 2ca2c .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 2ca6e .cfa: sp 16 +
+STACK CFI INIT 2ca74 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2ca76 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2ca88 1c .cfa: sp 0 + .ra: lr
+STACK CFI 2ca8c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2caa4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2caa6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 176da 16 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 58 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 56 .cfa: sp 20 +
+STACK CFI INIT 19394 84 .cfa: sp 0 + .ra: lr
+STACK CFI 1939a .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 176f0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 176f2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 0 d0 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI cc .cfa: sp 24 +
+STACK CFI INIT 192a0 64 .cfa: sp 0 + .ra: lr
+STACK CFI 192a2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 2cab8 40 .cfa: sp 0 + .ra: lr
+STACK CFI 2caba .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 19304 90 .cfa: sp 0 + .ra: lr
+STACK CFI 19308 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 19212 30 .cfa: sp 0 + .ra: lr
+STACK CFI 19214 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 19242 5e .cfa: sp 0 + .ra: lr
+STACK CFI 19244 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 16bac 9c .cfa: sp 0 + .ra: lr
+STACK CFI 16bb0 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 16bbc .cfa: sp 48 +
+STACK CFI 16c3e .cfa: sp 28 +
+STACK CFI INIT 16d26 42 .cfa: sp 0 + .ra: lr
+STACK CFI 16d28 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 16d68 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16d6e 1c .cfa: sp 0 + .ra: lr
+STACK CFI 16d70 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 0 30 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 28 .cfa: sp 8 +
+STACK CFI INIT 16f58 30 .cfa: sp 0 + .ra: lr
+STACK CFI 16f5a .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 16dec 18 .cfa: sp 0 + .ra: lr
+STACK CFI 16dee .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2caf8 34 .cfa: sp 0 + .ra: lr
+STACK CFI 2cafc .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 2cb24 .cfa: sp 8 +
+STACK CFI INIT 17a18 6c .cfa: sp 0 + .ra: lr
+STACK CFI 17a1e .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 17a26 .cfa: sp 56 +
+STACK CFI 17a7a .cfa: sp 24 +
+STACK CFI INIT 2cb2c 42 .cfa: sp 0 + .ra: lr
+STACK CFI 2cb2e .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 2cb6c .cfa: sp 16 +
+STACK CFI INIT 16f88 28 .cfa: sp 0 + .ra: lr
+STACK CFI 16f8a .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 2cb70 4c .cfa: sp 0 + .ra: lr
+STACK CFI 2cb72 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 2cbbc 3e .cfa: sp 0 + .ra: lr
+STACK CFI 2cbbe .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 2cbfa 32 .cfa: sp 0 + .ra: lr
+STACK CFI 2cbfc .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 2cc2c 30 .cfa: sp 0 + .ra: lr
+STACK CFI 2cc30 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2cc5c 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2cc5e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2cc70 90 .cfa: sp 0 + .ra: lr
+STACK CFI 2cc74 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 2ccfa .cfa: sp 16 +
+STACK CFI INIT 2cd00 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2cd02 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1705c 54 .cfa: sp 0 + .ra: lr
+STACK CFI 1705e .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 170b0 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170b8 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170c4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 170c6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 170d6 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170e2 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170ec 54 .cfa: sp 0 + .ra: lr
+STACK CFI 170ee .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 17140 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17148 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17154 12 .cfa: sp 0 + .ra: lr
+STACK CFI 17156 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 17166 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17172 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 1717c 8c .cfa: sp 0 + .ra: lr
+STACK CFI 1717e .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 17208 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17210 80 .cfa: sp 0 + .ra: lr
+STACK CFI 17212 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 17290 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17298 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172a0 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172a8 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172b4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 172b6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 172c6 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172ce c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 1739c 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173a4 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173ac c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173b8 12 .cfa: sp 0 + .ra: lr
+STACK CFI 173ba .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 173ca 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173d2 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173de 2c .cfa: sp 0 + .ra: lr
+STACK CFI 173e0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1740a 40 .cfa: sp 0 + .ra: lr
+STACK CFI 1740c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1744a 24 .cfa: sp 0 + .ra: lr
+STACK CFI 1744c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2cd12 c6 .cfa: sp 0 + .ra: lr
+STACK CFI 2cd16 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 2cd1a .cfa: sp 88 +
+STACK CFI 2cdd4 .cfa: sp 28 +
+STACK CFI INIT 1746e b4 .cfa: sp 0 + .ra: lr
+STACK CFI 17470 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 17520 .cfa: sp 20 +
+STACK CFI INIT 175b2 98 .cfa: sp 0 + .ra: lr
+STACK CFI 175b6 .cfa: sp 40 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 17646 .cfa: sp 28 +
+STACK CFI INIT 0 8a .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 86 .cfa: sp 24 +
+STACK CFI INIT 17ba4 46 .cfa: sp 0 + .ra: lr
+STACK CFI 17ba6 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 17be8 .cfa: sp 20 +
+STACK CFI INIT 2cdd8 148 .cfa: sp 0 + .ra: lr
+STACK CFI 2cddc .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 2cde6 .cfa: sp 312 +
+STACK CFI 2cef8 .cfa: sp 36 +
+STACK CFI INIT 2cf20 158 .cfa: sp 0 + .ra: lr
+STACK CFI 2cf24 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 2cf2e .cfa: sp 328 +
+STACK CFI 2d04e .cfa: sp 36 +
+STACK CFI INIT 2d078 148 .cfa: sp 0 + .ra: lr
+STACK CFI 2d07c .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 2d086 .cfa: sp 312 +
+STACK CFI 2d198 .cfa: sp 36 +
+STACK CFI INIT 2d1c0 158 .cfa: sp 0 + .ra: lr
+STACK CFI 2d1c4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 2d1ce .cfa: sp 328 +
+STACK CFI 2d2ee .cfa: sp 36 +
+STACK CFI INIT 2d318 148 .cfa: sp 0 + .ra: lr
+STACK CFI 2d31c .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 2d326 .cfa: sp 312 +
+STACK CFI 2d438 .cfa: sp 36 +
+STACK CFI INIT 2d460 158 .cfa: sp 0 + .ra: lr
+STACK CFI 2d464 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 2d46e .cfa: sp 328 +
+STACK CFI 2d58e .cfa: sp 36 +
+STACK CFI INIT 2d5b8 148 .cfa: sp 0 + .ra: lr
+STACK CFI 2d5bc .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 2d5c6 .cfa: sp 312 +
+STACK CFI 2d6d8 .cfa: sp 36 +
+STACK CFI INIT 2d700 158 .cfa: sp 0 + .ra: lr
+STACK CFI 2d704 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 2d70e .cfa: sp 328 +
+STACK CFI 2d82e .cfa: sp 36 +
+STACK CFI INIT 18134 a4 .cfa: sp 0 + .ra: lr
+STACK CFI 18138 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 181d4 .cfa: sp 24 +
+STACK CFI INIT 2d858 28 .cfa: sp 0 + .ra: lr
+STACK CFI 2d85c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2d880 1c .cfa: sp 0 + .ra: lr
+STACK CFI 2d884 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2d89c 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2d89e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2d8b0 1c .cfa: sp 0 + .ra: lr
+STACK CFI 2d8b4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2d8cc 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2d8ce .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2d8e0 1c .cfa: sp 0 + .ra: lr
+STACK CFI 2d8e4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2d8fc 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2d8fe .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2d910 1c .cfa: sp 0 + .ra: lr
+STACK CFI 2d914 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2d92c 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2d92e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2d940 28 .cfa: sp 0 + .ra: lr
+STACK CFI 2d944 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2d968 1c .cfa: sp 0 + .ra: lr
+STACK CFI 2d96c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2d984 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2d986 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2d998 1c .cfa: sp 0 + .ra: lr
+STACK CFI 2d99c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2d9b4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2d9b6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2d9c8 1c .cfa: sp 0 + .ra: lr
+STACK CFI 2d9cc .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2d9e4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2d9e6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2d9f8 1c .cfa: sp 0 + .ra: lr
+STACK CFI 2d9fc .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2da14 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2da16 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 17ab0 38 .cfa: sp 0 + .ra: lr
+STACK CFI 17ab2 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 17ae0 .cfa: sp 16 +
+STACK CFI INIT 0 1a0 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI e .cfa: sp 248 +
+STACK CFI 17e .cfa: sp 36 +
+STACK CFI INIT 2da28 180 .cfa: sp 0 + .ra: lr
+STACK CFI 2da2c .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 2da30 .cfa: sp 112 +
+STACK CFI 2db8c .cfa: sp 32 +
+STACK CFI INIT 2dba8 178 .cfa: sp 0 + .ra: lr
+STACK CFI 2dbac .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 2dbb6 .cfa: sp 112 +
+STACK CFI 2dcf4 .cfa: sp 28 +
+STACK CFI INIT 2dd20 1c4 .cfa: sp 0 + .ra: lr
+STACK CFI 2dd26 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 2dd2c .cfa: sp 520 +
+STACK CFI 2deb4 .cfa: sp 36 +
+STACK CFI INIT 2dee4 274 .cfa: sp 0 + .ra: lr
+STACK CFI 2deea .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 2def6 .cfa: sp 584 +
+STACK CFI 2e116 .cfa: sp 36 +
+STACK CFI INIT 2e158 2a8 .cfa: sp 0 + .ra: lr
+STACK CFI 2e15e .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 2e168 .cfa: sp 584 +
+STACK CFI 2e3b6 .cfa: sp 36 +
+STACK CFI INIT 2e400 390 .cfa: sp 0 + .ra: lr
+STACK CFI 2e406 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 2e410 .cfa: sp 592 +
+STACK CFI 2e73e .cfa: sp 36 +
+STACK CFI INIT 2dba8 178 .cfa: sp 0 + .ra: lr
+STACK CFI 2dbac .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 2dbb6 .cfa: sp 112 +
+STACK CFI 2dcf4 .cfa: sp 28 +
+STACK CFI INIT 2e790 1c4 .cfa: sp 0 + .ra: lr
+STACK CFI 2e796 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 2e79c .cfa: sp 520 +
+STACK CFI 2e924 .cfa: sp 36 +
+STACK CFI INIT 2e954 274 .cfa: sp 0 + .ra: lr
+STACK CFI 2e95a .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 2e966 .cfa: sp 584 +
+STACK CFI 2eb86 .cfa: sp 36 +
+STACK CFI INIT 2ebc8 2a8 .cfa: sp 0 + .ra: lr
+STACK CFI 2ebce .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 2ebd8 .cfa: sp 584 +
+STACK CFI 2ee26 .cfa: sp 36 +
+STACK CFI INIT 2ee70 390 .cfa: sp 0 + .ra: lr
+STACK CFI 2ee76 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 2ee80 .cfa: sp 592 +
+STACK CFI 2f1ae .cfa: sp 36 +
+STACK CFI INIT 14f38 84 .cfa: sp 0 + .ra: lr
+STACK CFI 14f3a .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 15dc4 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15dc6 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15dc8 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15ddc 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de4 ac .cfa: sp 0 + .ra: lr
+STACK CFI 15de6 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 15e90 9e .cfa: sp 0 + .ra: lr
+STACK CFI 15e92 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 15e94 .cfa: sp 40 +
+STACK CFI 15f2c .cfa: sp 20 +
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f2e 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f3e 16 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f54 3e .cfa: sp 0 + .ra: lr
+STACK CFI 15f56 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f92 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f9e 1a .cfa: sp 0 + .ra: lr
+STACK CFI 15fa0 .cfa: sp 16 + .ra: .cfa -4 + ^
+STACK CFI 15fb4 .cfa: sp 4 +
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15fb8 18 .cfa: sp 0 + .ra: lr
+STACK CFI 15fba .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16030 4c .cfa: sp 0 + .ra: lr
+STACK CFI 16034 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 15fdc 54 .cfa: sp 0 + .ra: lr
+STACK CFI 15fe0 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 1607c 1c .cfa: sp 0 + .ra: lr
+STACK CFI 16080 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16098 12 .cfa: sp 0 + .ra: lr
+STACK CFI 1609a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 160ac 1c .cfa: sp 0 + .ra: lr
+STACK CFI 160b0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 160c8 12 .cfa: sp 0 + .ra: lr
+STACK CFI 160ca .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2f200 18 .cfa: sp 0 + .ra: lr
+STACK CFI 2f202 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2f218 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2f21a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2f22c 18 .cfa: sp 0 + .ra: lr
+STACK CFI 2f22e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2f244 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2f246 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2f258 18 .cfa: sp 0 + .ra: lr
+STACK CFI 2f25a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2f270 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2f272 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2f284 18 .cfa: sp 0 + .ra: lr
+STACK CFI 2f286 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2f29c 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2f29e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2f2b0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 2f2b2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2f2c8 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2f2ca .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2f2dc 18 .cfa: sp 0 + .ra: lr
+STACK CFI 2f2de .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2f2f4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2f2f6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2f308 18 .cfa: sp 0 + .ra: lr
+STACK CFI 2f30a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2f320 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2f322 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2f334 18 .cfa: sp 0 + .ra: lr
+STACK CFI 2f336 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2f34c 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2f34e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2f360 18 .cfa: sp 0 + .ra: lr
+STACK CFI 2f362 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2f378 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2f37a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2f38c 18 .cfa: sp 0 + .ra: lr
+STACK CFI 2f38e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2f3a4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2f3a6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2f3b8 20 .cfa: sp 0 + .ra: lr
+STACK CFI 2f3ba .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2f3d8 20 .cfa: sp 0 + .ra: lr
+STACK CFI 2f3da .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2f3f8 20 .cfa: sp 0 + .ra: lr
+STACK CFI 2f3fa .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2f418 20 .cfa: sp 0 + .ra: lr
+STACK CFI 2f41a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2f438 20 .cfa: sp 0 + .ra: lr
+STACK CFI 2f43a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2f458 20 .cfa: sp 0 + .ra: lr
+STACK CFI 2f45a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2f478 20 .cfa: sp 0 + .ra: lr
+STACK CFI 2f47a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2f498 20 .cfa: sp 0 + .ra: lr
+STACK CFI 2f49a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2f4b8 20 .cfa: sp 0 + .ra: lr
+STACK CFI 2f4ba .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2f4d8 20 .cfa: sp 0 + .ra: lr
+STACK CFI 2f4da .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16a6c 54 .cfa: sp 0 + .ra: lr
+STACK CFI 16a70 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 1e00e 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16ac0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 16ac6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16ad8 14 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16aec 1e .cfa: sp 0 + .ra: lr
+STACK CFI 16aee .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16b0a 1e .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16b40 24 .cfa: sp 0 + .ra: lr
+STACK CFI 16b44 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16b64 12 .cfa: sp 0 + .ra: lr
+STACK CFI 16b66 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 24 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 16bac 9c .cfa: sp 0 + .ra: lr
+STACK CFI 16bb0 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 16bbc .cfa: sp 48 +
+STACK CFI 16c3e .cfa: sp 28 +
+STACK CFI INIT 16c48 78 .cfa: sp 0 + .ra: lr
+STACK CFI 16c4a .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 16cc0 66 .cfa: sp 0 + .ra: lr
+STACK CFI 16cc2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 16d6e 1c .cfa: sp 0 + .ra: lr
+STACK CFI 16d70 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 0 30 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 28 .cfa: sp 8 +
+STACK CFI INIT 16f88 28 .cfa: sp 0 + .ra: lr
+STACK CFI 16f8a .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 b4 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r3: .cfa -32 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI INIT 0 7c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 1705c 54 .cfa: sp 0 + .ra: lr
+STACK CFI 1705e .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 170b0 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170b8 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170c4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 170c6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 170d6 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170e2 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170ec 54 .cfa: sp 0 + .ra: lr
+STACK CFI 170ee .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 17140 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17148 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17154 12 .cfa: sp 0 + .ra: lr
+STACK CFI 17156 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 17166 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17172 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 1717c 8c .cfa: sp 0 + .ra: lr
+STACK CFI 1717e .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 17208 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17210 80 .cfa: sp 0 + .ra: lr
+STACK CFI 17212 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 17290 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17298 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172a0 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172a8 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172b4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 172b6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 172c6 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172ce c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 1739c 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173a4 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173ac c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173b8 12 .cfa: sp 0 + .ra: lr
+STACK CFI 173ba .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 173ca 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173d2 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173de 2c .cfa: sp 0 + .ra: lr
+STACK CFI 173e0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1740a 40 .cfa: sp 0 + .ra: lr
+STACK CFI 1740c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1744a 24 .cfa: sp 0 + .ra: lr
+STACK CFI 1744c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 b8 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI b6 .cfa: sp 20 +
+STACK CFI INIT 0 98 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 4 .cfa: sp 80 +
+STACK CFI 96 .cfa: sp 20 +
+STACK CFI INIT 176f0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 176f2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 20330 98 .cfa: sp 0 + .ra: lr
+STACK CFI 20332 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 20334 .cfa: sp 80 +
+STACK CFI 203c6 .cfa: sp 20 +
+STACK CFI INIT 2127c a0 .cfa: sp 0 + .ra: lr
+STACK CFI 21280 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 2128a .cfa: sp 264 +
+STACK CFI 21314 .cfa: sp 36 +
+STACK CFI INIT 0 20 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 1e .cfa: sp 20 +
+STACK CFI INIT 2f4f8 a4 .cfa: sp 0 + .ra: lr
+STACK CFI 2f4fc .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 2f508 .cfa: sp 56 +
+STACK CFI 2f586 .cfa: sp 32 +
+STACK CFI INIT 2f59c 328 .cfa: sp 0 + .ra: lr
+STACK CFI 2f5a0 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 2f5a4 .cfa: sp 56 +
+STACK CFI 2f85c .cfa: sp 32 +
+STACK CFI INIT 0 e0 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI e .cfa: sp 240 +
+STACK CFI d8 .cfa: sp 28 +
+STACK CFI INIT 18320 74 .cfa: sp 0 + .ra: lr
+STACK CFI 18324 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 18328 .cfa: sp 96 +
+STACK CFI 1838c .cfa: sp 32 +
+STACK CFI INIT 2f8c4 c4 .cfa: sp 0 + .ra: lr
+STACK CFI 2f8c8 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 2f8d8 .cfa: sp 64 +
+STACK CFI 2f974 .cfa: sp 32 +
+STACK CFI INIT 2f988 558 .cfa: sp 0 + .ra: lr
+STACK CFI 2f98c .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 2f992 .cfa: sp 104 +
+STACK CFI 2fdf0 .cfa: sp 36 +
+STACK CFI INIT 2fee0 280 .cfa: sp 0 + .ra: lr
+STACK CFI 2fee4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 2fef4 .cfa: sp 112 +
+STACK CFI 30114 .cfa: sp 36 +
+STACK CFI INIT 1e020 6c .cfa: sp 0 + .ra: lr
+STACK CFI 1e024 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 1e02e .cfa: sp 184 +
+STACK CFI 1e07e .cfa: sp 24 +
+STACK CFI INIT 30160 7c .cfa: sp 0 + .ra: lr
+STACK CFI 30164 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 30168 .cfa: sp 96 +
+STACK CFI 301d2 .cfa: sp 32 +
+STACK CFI INIT 301dc 338 .cfa: sp 0 + .ra: lr
+STACK CFI 301e0 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 301f6 .cfa: sp 104 +
+STACK CFI 30486 .cfa: sp 36 +
+STACK CFI INIT 30514 380 .cfa: sp 0 + .ra: lr
+STACK CFI 30518 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 3052e .cfa: sp 128 +
+STACK CFI 30806 .cfa: sp 36 +
+STACK CFI INIT 18ae4 6c .cfa: sp 0 + .ra: lr
+STACK CFI 18ae8 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 18af2 .cfa: sp 184 +
+STACK CFI 18b42 .cfa: sp 24 +
+STACK CFI INIT 30894 64 .cfa: sp 0 + .ra: lr
+STACK CFI 30898 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 3089c .cfa: sp 96 +
+STACK CFI 308f0 .cfa: sp 32 +
+STACK CFI INIT 308f8 74 .cfa: sp 0 + .ra: lr
+STACK CFI 308fc .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 30900 .cfa: sp 96 +
+STACK CFI 30964 .cfa: sp 32 +
+STACK CFI INIT 3096c 78 .cfa: sp 0 + .ra: lr
+STACK CFI 30970 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 30974 .cfa: sp 96 +
+STACK CFI 309da .cfa: sp 32 +
+STACK CFI INIT 309e4 290 .cfa: sp 0 + .ra: lr
+STACK CFI 309e8 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 309ec .cfa: sp 72 +
+STACK CFI 30c10 .cfa: sp 28 +
+STACK CFI INIT 30c74 48 .cfa: sp 0 + .ra: lr
+STACK CFI 30c76 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 30c82 .cfa: sp 184 +
+STACK CFI 30cb6 .cfa: sp 20 +
+STACK CFI INIT 0 74 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 8 .cfa: sp 96 +
+STACK CFI 6c .cfa: sp 32 +
+STACK CFI INIT 30cbc 74 .cfa: sp 0 + .ra: lr
+STACK CFI 30cc0 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 30cc4 .cfa: sp 96 +
+STACK CFI 30d28 .cfa: sp 32 +
+STACK CFI INIT 30d30 30c .cfa: sp 0 + .ra: lr
+STACK CFI 30d34 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 30d38 .cfa: sp 80 +
+STACK CFI 30fe4 .cfa: sp 36 +
+STACK CFI INIT 3103c 26c .cfa: sp 0 + .ra: lr
+STACK CFI 31040 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 31046 .cfa: sp 80 +
+STACK CFI 3125a .cfa: sp 36 +
+STACK CFI INIT 0 58 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 56 .cfa: sp 20 +
+STACK CFI INIT 0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 19242 5e .cfa: sp 0 + .ra: lr
+STACK CFI 19244 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 6c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 19304 90 .cfa: sp 0 + .ra: lr
+STACK CFI 19308 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 19394 84 .cfa: sp 0 + .ra: lr
+STACK CFI 1939a .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 0 94 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 90 .cfa: sp 24 +
+STACK CFI INIT 18134 a4 .cfa: sp 0 + .ra: lr
+STACK CFI 18138 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 181d4 .cfa: sp 24 +
+STACK CFI INIT 14fbc 294 .cfa: sp 0 + .ra: lr
+STACK CFI 14fc0 .cfa: sp 40 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 151c4 .cfa: sp 24 +
+STACK CFI INIT 1e00e 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 2c924 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 312a8 2e .cfa: sp 0 + .ra: lr
+STACK CFI 312aa .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 312d4 .cfa: sp 16 +
+STACK CFI INIT 312d6 3e .cfa: sp 0 + .ra: lr
+STACK CFI 312d8 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 312f6 .cfa: sp 0 + .ra: .ra r4: r4 r5: r5 r6: r6
+STACK CFI 312fa .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 3130c .cfa: sp 0 + .ra: .ra r4: r4 r5: r5 r6: r6
+STACK CFI INIT 31314 d6 .cfa: sp 0 + .ra: lr
+STACK CFI 31318 .cfa: sp 40 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 313e6 .cfa: sp 32 +
+STACK CFI INIT 0 14 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 2ca28 4c .cfa: sp 0 + .ra: lr
+STACK CFI 2ca2c .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 2ca6e .cfa: sp 16 +
+STACK CFI INIT 2ca74 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2ca76 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 313ec 24 .cfa: sp 0 + .ra: lr
+STACK CFI 313f0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 31410 12 .cfa: sp 0 + .ra: lr
+STACK CFI 31412 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 31424 1c .cfa: sp 0 + .ra: lr
+STACK CFI 31428 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 31440 12 .cfa: sp 0 + .ra: lr
+STACK CFI 31442 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 58 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 56 .cfa: sp 20 +
+STACK CFI INIT 176f0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 176f2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 1772c d8 .cfa: sp 0 + .ra: lr
+STACK CFI 17732 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 17800 .cfa: sp 24 +
+STACK CFI INIT 0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 31452 70 .cfa: sp 0 + .ra: lr
+STACK CFI 31456 .cfa: sp 48 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 314be .cfa: sp 32 +
+STACK CFI INIT 314c4 a8 .cfa: sp 0 + .ra: lr
+STACK CFI 314c8 .cfa: sp 40 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 31562 .cfa: sp 28 +
+STACK CFI INIT 0 30 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 28 .cfa: sp 8 +
+STACK CFI INIT 0 32 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 2e .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 3156c 34 .cfa: sp 0 + .ra: lr
+STACK CFI 3156e .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 3159e .cfa: sp 12 +
+STACK CFI INIT 0 38 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 315a0 24 .cfa: sp 0 + .ra: lr
+STACK CFI 315a2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 2cbfa 32 .cfa: sp 0 + .ra: lr
+STACK CFI 2cbfc .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 2cc2c 30 .cfa: sp 0 + .ra: lr
+STACK CFI 2cc30 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2cc5c 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2cc5e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 2cc70 90 .cfa: sp 0 + .ra: lr
+STACK CFI 2cc74 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 2ccfa .cfa: sp 16 +
+STACK CFI INIT 2cd00 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2cd02 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 203f0 34 .cfa: sp 0 + .ra: lr
+STACK CFI 203f2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 315c4 68 .cfa: sp 0 + .ra: lr
+STACK CFI 315c6 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 3162c 170 .cfa: sp 0 + .ra: lr
+STACK CFI 31630 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 31632 .cfa: sp 56 +
+STACK CFI 31782 .cfa: sp 36 +
+STACK CFI 31786 .cfa: sp 56 +
+STACK CFI INIT 3179c 2e .cfa: sp 0 + .ra: lr
+STACK CFI INIT 20424 2c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 20450 2c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 2047c 9e .cfa: sp 0 + .ra: lr
+STACK CFI 20480 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 317ca 6e .cfa: sp 0 + .ra: lr
+STACK CFI 317ce .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 31838 78 .cfa: sp 0 + .ra: lr
+STACK CFI 3183c .cfa: sp 40 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 318ac .cfa: sp 24 +
+STACK CFI INIT 318b0 174 .cfa: sp 0 + .ra: lr
+STACK CFI 318b4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 318bc .cfa: sp 56 +
+STACK CFI 31a20 .cfa: sp 36 +
+STACK CFI INIT 31a24 ac .cfa: sp 0 + .ra: lr
+STACK CFI 31a2a .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 31a3a .cfa: sp 80 +
+STACK CFI 31ac6 .cfa: sp 28 +
+STACK CFI INIT 31ad0 a4 .cfa: sp 0 + .ra: lr
+STACK CFI 31ad4 .cfa: sp 40 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 31b70 .cfa: sp 28 +
+STACK CFI INIT 31b74 58 .cfa: sp 0 + .ra: lr
+STACK CFI 31b76 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 31bca .cfa: sp 20 +
+STACK CFI INIT 31bcc 5c .cfa: sp 0 + .ra: lr
+STACK CFI 31bce .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 31c26 .cfa: sp 20 +
+STACK CFI INIT 31c28 18c .cfa: sp 0 + .ra: lr
+STACK CFI 31c2c .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 31c3a .cfa: sp 152 +
+STACK CFI 31da2 .cfa: sp 36 +
+STACK CFI INIT 31db4 dc .cfa: sp 0 + .ra: lr
+STACK CFI 31db8 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 31dc4 .cfa: sp 96 +
+STACK CFI 31e84 .cfa: sp 24 +
+STACK CFI INIT 31e90 30c .cfa: sp 0 + .ra: lr
+STACK CFI 31e94 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 31e9e .cfa: sp 232 +
+STACK CFI 3217e .cfa: sp 36 +
+STACK CFI INIT 3219c 40 .cfa: sp 0 + .ra: lr
+STACK CFI 3219e .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 321dc 3c .cfa: sp 0 + .ra: lr
+STACK CFI 321de .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1e00e 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 32218 5c .cfa: sp 0 + .ra: lr
+STACK CFI 3221a .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 3221e .cfa: sp 32 +
+STACK CFI 32264 .cfa: sp 12 +
+STACK CFI INIT 32274 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 3227c 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 32284 2c .cfa: sp 0 + .ra: lr
+STACK CFI 32286 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 322b0 54 .cfa: sp 0 + .ra: lr
+STACK CFI 322b4 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 322fc .cfa: sp 24 +
+STACK CFI INIT 32304 2c .cfa: sp 0 + .ra: lr
+STACK CFI 32306 .cfa: sp 16 + .ra: .cfa -4 + ^
+STACK CFI 32326 .cfa: sp 4 +
+STACK CFI INIT 32330 b4 .cfa: sp 0 + .ra: lr
+STACK CFI 32336 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 32340 .cfa: sp 8228 +
+STACK CFI 32342 .cfa: sp 8256 +
+STACK CFI 323ce .cfa: sp 36 +
+STACK CFI INIT 323e4 114 .cfa: sp 0 + .ra: lr
+STACK CFI 323e8 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 323ec .cfa: sp 88 +
+STACK CFI 324d6 .cfa: sp 36 +
+STACK CFI INIT 16b0a 1e .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 24 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 324f8 22 .cfa: sp 0 + .ra: lr
+STACK CFI 324fa .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 0 30 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 28 .cfa: sp 8 +
+STACK CFI INIT 176f0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 176f2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 1772c d8 .cfa: sp 0 + .ra: lr
+STACK CFI 17732 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 17800 .cfa: sp 24 +
+STACK CFI INIT 0 1f0 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 16 .cfa: sp 208 +
+STACK CFI 1c6 .cfa: sp 32 +
+STACK CFI INIT 3251a 12 .cfa: sp 0 + .ra: lr
+STACK CFI 3251c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 d8 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 40 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI d4 .cfa: sp 28 +
+STACK CFI INIT 0 2d4 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 8 .cfa: sp 256 +
+STACK CFI 27e .cfa: sp 36 +
+STACK CFI INIT 3252c 1a .cfa: sp 0 + .ra: lr
+STACK CFI 3252e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 32548 14 .cfa: sp 0 + .ra: lr
+STACK CFI 3254a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 3255c 14 .cfa: sp 0 + .ra: lr
+STACK CFI 3255e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 32570 1c4 .cfa: sp 0 + .ra: lr
+STACK CFI 32574 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 32584 .cfa: sp 96 +
+STACK CFI 326f2 .cfa: sp 36 +
+STACK CFI INIT 15dc4 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15dc6 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15dc8 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15ddc 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de4 ac .cfa: sp 0 + .ra: lr
+STACK CFI 15de6 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 15e90 9e .cfa: sp 0 + .ra: lr
+STACK CFI 15e92 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 15e94 .cfa: sp 40 +
+STACK CFI 15f2c .cfa: sp 20 +
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f2e 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f3e 16 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f54 3e .cfa: sp 0 + .ra: lr
+STACK CFI 15f56 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f92 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f9e 1a .cfa: sp 0 + .ra: lr
+STACK CFI 15fa0 .cfa: sp 16 + .ra: .cfa -4 + ^
+STACK CFI 15fb4 .cfa: sp 4 +
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15fb8 18 .cfa: sp 0 + .ra: lr
+STACK CFI 15fba .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16030 4c .cfa: sp 0 + .ra: lr
+STACK CFI 16034 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fdc 54 .cfa: sp 0 + .ra: lr
+STACK CFI 15fe0 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 1607c 1c .cfa: sp 0 + .ra: lr
+STACK CFI 16080 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16098 12 .cfa: sp 0 + .ra: lr
+STACK CFI 1609a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 160ac 1c .cfa: sp 0 + .ra: lr
+STACK CFI 160b0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 160c8 12 .cfa: sp 0 + .ra: lr
+STACK CFI 160ca .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 32734 18 .cfa: sp 0 + .ra: lr
+STACK CFI 32736 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 3274c 12 .cfa: sp 0 + .ra: lr
+STACK CFI 3274e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 32760 18 .cfa: sp 0 + .ra: lr
+STACK CFI 32762 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 32778 12 .cfa: sp 0 + .ra: lr
+STACK CFI 3277a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 3278c 18 .cfa: sp 0 + .ra: lr
+STACK CFI 3278e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 327a4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 327a6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 327b8 18 .cfa: sp 0 + .ra: lr
+STACK CFI 327ba .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 327d0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 327d2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 327e4 18 .cfa: sp 0 + .ra: lr
+STACK CFI 327e6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 327fc 12 .cfa: sp 0 + .ra: lr
+STACK CFI 327fe .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 32810 18 .cfa: sp 0 + .ra: lr
+STACK CFI 32812 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 32828 12 .cfa: sp 0 + .ra: lr
+STACK CFI 3282a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 3283c 20 .cfa: sp 0 + .ra: lr
+STACK CFI 3283e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 3285c 20 .cfa: sp 0 + .ra: lr
+STACK CFI 3285e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 3287c 20 .cfa: sp 0 + .ra: lr
+STACK CFI 3287e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 3289c 20 .cfa: sp 0 + .ra: lr
+STACK CFI 3289e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 328bc 20 .cfa: sp 0 + .ra: lr
+STACK CFI 328be .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 328dc 20 .cfa: sp 0 + .ra: lr
+STACK CFI 328de .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16a6c 54 .cfa: sp 0 + .ra: lr
+STACK CFI 16a70 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 1e00e 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16ac0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 16ac6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 328fc a2 .cfa: sp 0 + .ra: lr
+STACK CFI 32900 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 3299e 30 .cfa: sp 0 + .ra: lr
+STACK CFI 329a0 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 329d0 24 .cfa: sp 0 + .ra: lr
+STACK CFI 329d2 .cfa: sp 24 + .ra: .cfa -4 + ^
+STACK CFI 329ec .cfa: sp 4 +
+STACK CFI INIT 16aec 1e .cfa: sp 0 + .ra: lr
+STACK CFI 16aee .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16b0a 1e .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16b40 24 .cfa: sp 0 + .ra: lr
+STACK CFI 16b44 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16b64 12 .cfa: sp 0 + .ra: lr
+STACK CFI 16b66 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 24 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 329f4 e8 .cfa: sp 0 + .ra: lr
+STACK CFI 329fa .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 32a02 .cfa: sp 104 +
+STACK CFI 32abe .cfa: sp 28 +
+STACK CFI INIT 32adc 13c .cfa: sp 0 + .ra: lr
+STACK CFI 32ae0 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 32ae4 .cfa: sp 104 +
+STACK CFI 32bea .cfa: sp 28 +
+STACK CFI INIT 16bac 9c .cfa: sp 0 + .ra: lr
+STACK CFI 16bb0 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 16bbc .cfa: sp 48 +
+STACK CFI 16c3e .cfa: sp 28 +
+STACK CFI INIT 16c48 78 .cfa: sp 0 + .ra: lr
+STACK CFI 16c4a .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 16cc0 66 .cfa: sp 0 + .ra: lr
+STACK CFI 16cc2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 16d6e 1c .cfa: sp 0 + .ra: lr
+STACK CFI 16d70 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 32c18 72 .cfa: sp 0 + .ra: lr
+STACK CFI 32c1c .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 0 30 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 28 .cfa: sp 8 +
+STACK CFI INIT 16f88 28 .cfa: sp 0 + .ra: lr
+STACK CFI 16f8a .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 7c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 0 b4 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r3: .cfa -32 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI INIT 1705c 54 .cfa: sp 0 + .ra: lr
+STACK CFI 1705e .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 170b0 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170b8 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170c4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 170c6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 170d6 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170e2 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170ec 54 .cfa: sp 0 + .ra: lr
+STACK CFI 170ee .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 17140 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17148 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17154 12 .cfa: sp 0 + .ra: lr
+STACK CFI 17156 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 17166 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17172 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 1717c 8c .cfa: sp 0 + .ra: lr
+STACK CFI 1717e .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 17208 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17210 80 .cfa: sp 0 + .ra: lr
+STACK CFI 17212 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 17290 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17298 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172a0 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172a8 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172b4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 172b6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 172c6 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172ce c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 1739c 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173a4 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173ac c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173b8 12 .cfa: sp 0 + .ra: lr
+STACK CFI 173ba .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 173ca 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173d2 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173de 2c .cfa: sp 0 + .ra: lr
+STACK CFI 173e0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1740a 40 .cfa: sp 0 + .ra: lr
+STACK CFI 1740c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1744a 24 .cfa: sp 0 + .ra: lr
+STACK CFI 1744c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 b8 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI b6 .cfa: sp 20 +
+STACK CFI INIT 0 98 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 4 .cfa: sp 80 +
+STACK CFI 96 .cfa: sp 20 +
+STACK CFI INIT 32c8c 2c .cfa: sp 0 + .ra: lr
+STACK CFI 32c8e .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 32c98 .cfa: sp 0 + .ra: .ra r3: r3 r4: r4 r5: r5
+STACK CFI 32ca2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 32cb0 .cfa: sp 0 + .ra: .ra r3: r3 r4: r4 r5: r5
+STACK CFI INIT 176f0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 176f2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 20330 98 .cfa: sp 0 + .ra: lr
+STACK CFI 20332 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 20334 .cfa: sp 80 +
+STACK CFI 203c6 .cfa: sp 20 +
+STACK CFI INIT 2127c a0 .cfa: sp 0 + .ra: lr
+STACK CFI 21280 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 2128a .cfa: sp 264 +
+STACK CFI 21314 .cfa: sp 36 +
+STACK CFI INIT 0 20 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 1e .cfa: sp 20 +
+STACK CFI INIT 32cb8 ac .cfa: sp 0 + .ra: lr
+STACK CFI 32cbc .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 32cc4 .cfa: sp 64 +
+STACK CFI 32d4c .cfa: sp 20 +
+STACK CFI INIT 32d64 5c .cfa: sp 0 + .ra: lr
+STACK CFI 32d68 .cfa: sp 32 + .ra: .cfa -4 + ^ r3: .cfa -32 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI INIT 32dc0 32c .cfa: sp 0 + .ra: lr
+STACK CFI 32dc4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 32dc8 .cfa: sp 336 +
+STACK CFI 3308e .cfa: sp 36 +
+STACK CFI INIT 330ec fc .cfa: sp 0 + .ra: lr
+STACK CFI 330f0 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 330f4 .cfa: sp 120 +
+STACK CFI 331ca .cfa: sp 28 +
+STACK CFI INIT 0 58 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 56 .cfa: sp 20 +
+STACK CFI INIT 0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 19242 5e .cfa: sp 0 + .ra: lr
+STACK CFI 19244 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 6c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 19304 90 .cfa: sp 0 + .ra: lr
+STACK CFI 19308 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 19394 84 .cfa: sp 0 + .ra: lr
+STACK CFI 1939a .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 0 94 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 90 .cfa: sp 24 +
+STACK CFI INIT 18134 a4 .cfa: sp 0 + .ra: lr
+STACK CFI 18138 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 181d4 .cfa: sp 24 +
+STACK CFI INIT 15250 1a4 .cfa: sp 0 + .ra: lr
+STACK CFI 15254 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 15256 .cfa: sp 48 +
+STACK CFI 15398 .cfa: sp 28 +
+STACK CFI INIT 15dc4 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15dc6 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15dc8 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15ddc 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de4 ac .cfa: sp 0 + .ra: lr
+STACK CFI 15de6 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 15e90 9e .cfa: sp 0 + .ra: lr
+STACK CFI 15e92 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 15e94 .cfa: sp 40 +
+STACK CFI 15f2c .cfa: sp 20 +
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f2e 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f3e 16 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f54 3e .cfa: sp 0 + .ra: lr
+STACK CFI 15f56 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f92 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f9e 1a .cfa: sp 0 + .ra: lr
+STACK CFI 15fa0 .cfa: sp 16 + .ra: .cfa -4 + ^
+STACK CFI 15fb4 .cfa: sp 4 +
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15fb8 18 .cfa: sp 0 + .ra: lr
+STACK CFI 15fba .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16030 4c .cfa: sp 0 + .ra: lr
+STACK CFI 16034 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 15fdc 54 .cfa: sp 0 + .ra: lr
+STACK CFI 15fe0 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 1607c 1c .cfa: sp 0 + .ra: lr
+STACK CFI 16080 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16098 12 .cfa: sp 0 + .ra: lr
+STACK CFI 1609a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 160ac 1c .cfa: sp 0 + .ra: lr
+STACK CFI 160b0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 160c8 12 .cfa: sp 0 + .ra: lr
+STACK CFI 160ca .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 331e8 18 .cfa: sp 0 + .ra: lr
+STACK CFI 331ea .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 33200 12 .cfa: sp 0 + .ra: lr
+STACK CFI 33202 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 33214 18 .cfa: sp 0 + .ra: lr
+STACK CFI 33216 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 3322c 12 .cfa: sp 0 + .ra: lr
+STACK CFI 3322e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 33240 18 .cfa: sp 0 + .ra: lr
+STACK CFI 33242 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 33258 12 .cfa: sp 0 + .ra: lr
+STACK CFI 3325a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 3326c 18 .cfa: sp 0 + .ra: lr
+STACK CFI 3326e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 33284 12 .cfa: sp 0 + .ra: lr
+STACK CFI 33286 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 33298 18 .cfa: sp 0 + .ra: lr
+STACK CFI 3329a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 332b0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 332b2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 332c4 18 .cfa: sp 0 + .ra: lr
+STACK CFI 332c6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 332dc 12 .cfa: sp 0 + .ra: lr
+STACK CFI 332de .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 332f0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 332f2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 33308 12 .cfa: sp 0 + .ra: lr
+STACK CFI 3330a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 3331a 66 .cfa: sp 0 + .ra: lr
+STACK CFI 3331e .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 33380 5e .cfa: sp 0 + .ra: lr
+STACK CFI 33384 .cfa: sp 32 + .ra: .cfa -4 + ^ r3: .cfa -32 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI INIT 333e0 20 .cfa: sp 0 + .ra: lr
+STACK CFI 333e2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 33400 20 .cfa: sp 0 + .ra: lr
+STACK CFI 33402 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 33420 20 .cfa: sp 0 + .ra: lr
+STACK CFI 33422 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 33440 20 .cfa: sp 0 + .ra: lr
+STACK CFI 33442 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 33460 20 .cfa: sp 0 + .ra: lr
+STACK CFI 33462 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 33480 20 .cfa: sp 0 + .ra: lr
+STACK CFI 33482 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 334a0 20 .cfa: sp 0 + .ra: lr
+STACK CFI 334a2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16a6c 54 .cfa: sp 0 + .ra: lr
+STACK CFI 16a70 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 16ac0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 16ac6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16ad8 14 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16aec 1e .cfa: sp 0 + .ra: lr
+STACK CFI 16aee .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 334c0 16 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16b0a 1e .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16b40 24 .cfa: sp 0 + .ra: lr
+STACK CFI 16b44 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16b64 12 .cfa: sp 0 + .ra: lr
+STACK CFI 16b66 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16b76 28 .cfa: sp 0 + .ra: lr
+STACK CFI 16b78 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 16b9e e .cfa: sp 0 + .ra: lr
+STACK CFI 16ba0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16bac 9c .cfa: sp 0 + .ra: lr
+STACK CFI 16bb0 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 16bbc .cfa: sp 48 +
+STACK CFI 16c3e .cfa: sp 28 +
+STACK CFI INIT 16c48 78 .cfa: sp 0 + .ra: lr
+STACK CFI 16c4a .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 16cc0 66 .cfa: sp 0 + .ra: lr
+STACK CFI 16cc2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 16d26 42 .cfa: sp 0 + .ra: lr
+STACK CFI 16d28 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 16d68 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16d6e 1c .cfa: sp 0 + .ra: lr
+STACK CFI 16d70 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 334d6 2a .cfa: sp 0 + .ra: lr
+STACK CFI 334d8 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 33500 14 .cfa: sp 0 + .ra: lr
+STACK CFI 33502 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 33514 6e .cfa: sp 0 + .ra: lr
+STACK CFI 33518 .cfa: sp 32 + .ra: .cfa -4 + ^ r3: .cfa -32 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 33524 .cfa: sp 0 + .ra: .ra r3: r3 r4: r4 r5: r5 r6: r6 r7: r7 r8: r8 r9: r9
+STACK CFI 33528 .cfa: sp 32 + .ra: .cfa -4 + ^ r3: .cfa -32 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI INIT 33582 24 .cfa: sp 0 + .ra: lr
+STACK CFI 33584 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 335a6 12 .cfa: sp 0 + .ra: lr
+STACK CFI 335a8 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 335b8 6a .cfa: sp 0 + .ra: lr
+STACK CFI 335bc .cfa: sp 32 + .ra: .cfa -4 + ^ r3: .cfa -32 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 335c8 .cfa: sp 0 + .ra: .ra r3: r3 r4: r4 r5: r5 r6: r6 r7: r7 r8: r8 r9: r9
+STACK CFI 335cc .cfa: sp 32 + .ra: .cfa -4 + ^ r3: .cfa -32 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI INIT 33622 12 .cfa: sp 0 + .ra: lr
+STACK CFI 33624 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 33634 24 .cfa: sp 0 + .ra: lr
+STACK CFI 33636 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 33658 12 .cfa: sp 0 + .ra: lr
+STACK CFI 3365a .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 3366a 68 .cfa: sp 0 + .ra: lr
+STACK CFI 3366e .cfa: sp 32 + .ra: .cfa -4 + ^ r3: .cfa -32 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 3367a .cfa: sp 0 + .ra: .ra r3: r3 r4: r4 r5: r5 r6: r6 r7: r7 r8: r8 r9: r9
+STACK CFI 3367e .cfa: sp 32 + .ra: .cfa -4 + ^ r3: .cfa -32 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI INIT 336d2 24 .cfa: sp 0 + .ra: lr
+STACK CFI 336d4 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 336f6 50 .cfa: sp 0 + .ra: lr
+STACK CFI 336fa .cfa: sp 32 + .ra: .cfa -4 + ^ r3: .cfa -32 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI INIT 16db4 38 .cfa: sp 0 + .ra: lr
+STACK CFI 16db6 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 16de6 .cfa: sp 8 +
+STACK CFI INIT 16f88 28 .cfa: sp 0 + .ra: lr
+STACK CFI 16f8a .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 7c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 0 b4 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r3: .cfa -32 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI INIT 1705c 54 .cfa: sp 0 + .ra: lr
+STACK CFI 1705e .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 170b0 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170b8 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170c4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 170c6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 170d6 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170e2 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170ec 54 .cfa: sp 0 + .ra: lr
+STACK CFI 170ee .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 17140 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17148 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17154 12 .cfa: sp 0 + .ra: lr
+STACK CFI 17156 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 17166 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17172 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 1717c 8c .cfa: sp 0 + .ra: lr
+STACK CFI 1717e .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 17208 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17210 80 .cfa: sp 0 + .ra: lr
+STACK CFI 17212 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 17290 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17298 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172a0 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172a8 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172b4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 172b6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 172c6 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172ce c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 1739c 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173a4 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173ac c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173b8 12 .cfa: sp 0 + .ra: lr
+STACK CFI 173ba .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 173ca 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173d2 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173de 2c .cfa: sp 0 + .ra: lr
+STACK CFI 173e0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1740a 40 .cfa: sp 0 + .ra: lr
+STACK CFI 1740c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1744a 24 .cfa: sp 0 + .ra: lr
+STACK CFI 1744c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1746e b4 .cfa: sp 0 + .ra: lr
+STACK CFI 17470 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 17520 .cfa: sp 20 +
+STACK CFI INIT 0 98 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 4 .cfa: sp 80 +
+STACK CFI 96 .cfa: sp 20 +
+STACK CFI INIT 175b2 98 .cfa: sp 0 + .ra: lr
+STACK CFI 175b6 .cfa: sp 40 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 17646 .cfa: sp 28 +
+STACK CFI INIT 176da 16 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 176f0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 176f2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 0 13c .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 16 .cfa: sp 64 +
+STACK CFI 132 .cfa: sp 32 +
+STACK CFI INIT 20330 98 .cfa: sp 0 + .ra: lr
+STACK CFI 20332 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 20334 .cfa: sp 80 +
+STACK CFI 203c6 .cfa: sp 20 +
+STACK CFI INIT 2127c a0 .cfa: sp 0 + .ra: lr
+STACK CFI 21280 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 2128a .cfa: sp 264 +
+STACK CFI 21314 .cfa: sp 36 +
+STACK CFI INIT 0 20 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 1e .cfa: sp 20 +
+STACK CFI INIT 33748 49c .cfa: sp 0 + .ra: lr
+STACK CFI 3374e .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 33758 .cfa: sp 312 +
+STACK CFI 33b42 .cfa: sp 36 +
+STACK CFI INIT 33be4 7a0 .cfa: sp 0 + .ra: lr
+STACK CFI 33bec .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 33bf8 .cfa: sp 704 +
+STACK CFI 34262 .cfa: sp 36 +
+STACK CFI INIT 34384 544 .cfa: sp 0 + .ra: lr
+STACK CFI 34388 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 3439a .cfa: sp 160 +
+STACK CFI 347ee .cfa: sp 32 +
+STACK CFI INIT 348c8 498 .cfa: sp 0 + .ra: lr
+STACK CFI 348cc .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 348de .cfa: sp 216 +
+STACK CFI 34cae .cfa: sp 28 +
+STACK CFI INIT 34d60 1a4 .cfa: sp 0 + .ra: lr
+STACK CFI 34d64 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 34d6e .cfa: sp 104 +
+STACK CFI 34ec4 .cfa: sp 36 +
+STACK CFI INIT 17a84 2c .cfa: sp 0 + .ra: lr
+STACK CFI 17a86 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 17aae .cfa: sp 16 +
+STACK CFI INIT 17ab0 38 .cfa: sp 0 + .ra: lr
+STACK CFI 17ab2 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 17ae0 .cfa: sp 16 +
+STACK CFI INIT 0 2c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 2a .cfa: sp 16 +
+STACK CFI INIT 17ae8 2c .cfa: sp 0 + .ra: lr
+STACK CFI 17aea .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 17b12 .cfa: sp 16 +
+STACK CFI INIT 1e020 6c .cfa: sp 0 + .ra: lr
+STACK CFI 1e024 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 1e02e .cfa: sp 184 +
+STACK CFI 1e07e .cfa: sp 24 +
+STACK CFI INIT 34f04 104 .cfa: sp 0 + .ra: lr
+STACK CFI 34f08 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 34f14 .cfa: sp 112 +
+STACK CFI 34fe8 .cfa: sp 28 +
+STACK CFI INIT 35008 478 .cfa: sp 0 + .ra: lr
+STACK CFI 3500c .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 3501c .cfa: sp 32800 +
+STACK CFI 3501e .cfa: sp 32856 +
+STACK CFI 353e0 .cfa: sp 32 +
+STACK CFI INIT 0 e0 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI e .cfa: sp 240 +
+STACK CFI d8 .cfa: sp 28 +
+STACK CFI INIT 18320 74 .cfa: sp 0 + .ra: lr
+STACK CFI 18324 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 18328 .cfa: sp 96 +
+STACK CFI 1838c .cfa: sp 32 +
+STACK CFI INIT 35480 4a8 .cfa: sp 0 + .ra: lr
+STACK CFI 35484 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 3548c .cfa: sp 928 +
+STACK CFI 3589e .cfa: sp 36 +
+STACK CFI INIT 191b0 62 .cfa: sp 0 + .ra: lr
+STACK CFI 191b2 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 19210 .cfa: sp 20 +
+STACK CFI INIT 19212 30 .cfa: sp 0 + .ra: lr
+STACK CFI 19214 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 19242 5e .cfa: sp 0 + .ra: lr
+STACK CFI 19244 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 192a0 64 .cfa: sp 0 + .ra: lr
+STACK CFI 192a2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 19304 90 .cfa: sp 0 + .ra: lr
+STACK CFI 19308 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 19394 84 .cfa: sp 0 + .ra: lr
+STACK CFI 1939a .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 17b14 90 .cfa: sp 0 + .ra: lr
+STACK CFI 17b1a .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 17ba0 .cfa: sp 24 +
+STACK CFI INIT 18134 a4 .cfa: sp 0 + .ra: lr
+STACK CFI 18138 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 181d4 .cfa: sp 24 +
+STACK CFI INIT 153f4 1dc .cfa: sp 0 + .ra: lr
+STACK CFI 153f8 .cfa: sp 40 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 15566 .cfa: sp 24 +
+STACK CFI INIT 1e00e 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 35928 20 .cfa: sp 0 + .ra: lr
+STACK CFI 3592a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 35948 20 .cfa: sp 0 + .ra: lr
+STACK CFI 3594a .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 35968 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 35974 14 .cfa: sp 0 + .ra: lr
+STACK CFI 35976 .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 35988 10 .cfa: sp 0 + .ra: lr
+STACK CFI 3598a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 35998 28 .cfa: sp 0 + .ra: lr
+STACK CFI 3599a .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 359c0 22 .cfa: sp 0 + .ra: lr
+STACK CFI 359c2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 359e2 66 .cfa: sp 0 + .ra: lr
+STACK CFI 359e6 .cfa: sp 40 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 35a44 .cfa: sp 24 +
+STACK CFI INIT 35a48 28 .cfa: sp 0 + .ra: lr
+STACK CFI 35a4a .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 35a6e .cfa: sp 8 +
+STACK CFI INIT 35a70 1a .cfa: sp 0 + .ra: lr
+STACK CFI 35a72 .cfa: sp 16 + .ra: .cfa -4 + ^
+STACK CFI 35a86 .cfa: sp 4 +
+STACK CFI INIT 35a8a 44 .cfa: sp 0 + .ra: lr
+STACK CFI 35a8c .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 35a90 .cfa: sp 40 +
+STACK CFI 35acc .cfa: sp 12 +
+STACK CFI INIT 35ace 12 .cfa: sp 0 + .ra: lr
+STACK CFI 35ad0 .cfa: sp 16 + .ra: .cfa -4 + ^
+STACK CFI 35adc .cfa: sp 4 +
+STACK CFI INIT 35ae0 80 .cfa: sp 0 + .ra: lr
+STACK CFI 35ae2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 35ae8 .cfa: sp 40 +
+STACK CFI 35b5e .cfa: sp 20 +
+STACK CFI INIT 35b60 10 .cfa: sp 0 + .ra: lr
+STACK CFI 35b62 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 35b70 14 .cfa: sp 0 + .ra: lr
+STACK CFI 35b72 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 35b84 1e .cfa: sp 0 + .ra: lr
+STACK CFI 35b86 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 35ba2 20 .cfa: sp 0 + .ra: lr
+STACK CFI 35ba4 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 16b0a 1e .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 58 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 56 .cfa: sp 20 +
+STACK CFI INIT 176f0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 176f2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 0 6c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 35bc2 20 .cfa: sp 0 + .ra: lr
+STACK CFI 35bc4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 35be2 44 .cfa: sp 0 + .ra: lr
+STACK CFI 35be4 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 35c26 3a .cfa: sp 0 + .ra: lr
+STACK CFI 35c28 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 35c60 5a .cfa: sp 0 + .ra: lr
+STACK CFI 35c66 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 35cba 1c .cfa: sp 0 + .ra: lr
+STACK CFI 35cbc .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 35cd4 .cfa: sp 8 +
+STACK CFI INIT 35cd6 1a .cfa: sp 0 + .ra: lr
+STACK CFI 35cd8 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 35cee .cfa: sp 8 +
+STACK CFI INIT 35cf0 1c .cfa: sp 0 + .ra: lr
+STACK CFI 35cf2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 35d0a .cfa: sp 8 +
+STACK CFI INIT 35d0c 18 .cfa: sp 0 + .ra: lr
+STACK CFI 35d0e .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 35d22 .cfa: sp 8 +
+STACK CFI INIT 35d24 1a .cfa: sp 0 + .ra: lr
+STACK CFI 35d26 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 35d3c .cfa: sp 8 +
+STACK CFI INIT 35d3e 1c .cfa: sp 0 + .ra: lr
+STACK CFI 35d40 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 35d58 .cfa: sp 8 +
+STACK CFI INIT 35d5a 18 .cfa: sp 0 + .ra: lr
+STACK CFI 35d5c .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 35d70 .cfa: sp 8 +
+STACK CFI INIT 35d72 1a .cfa: sp 0 + .ra: lr
+STACK CFI 35d74 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 35d8a .cfa: sp 8 +
+STACK CFI INIT 35d8c 1c .cfa: sp 0 + .ra: lr
+STACK CFI 35d8e .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 35da6 .cfa: sp 8 +
+STACK CFI INIT 35da8 18 .cfa: sp 0 + .ra: lr
+STACK CFI 35daa .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 35dbe .cfa: sp 8 +
+STACK CFI INIT 35dc0 20 .cfa: sp 0 + .ra: lr
+STACK CFI 35dc2 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 35de0 1a .cfa: sp 0 + .ra: lr
+STACK CFI INIT 35dfc b4 .cfa: sp 0 + .ra: lr
+STACK CFI 35dfe .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 35e0c .cfa: sp 48 +
+STACK CFI 35ea8 .cfa: sp 20 +
+STACK CFI INIT 35eb0 ec .cfa: sp 0 + .ra: lr
+STACK CFI 35eb4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 35ebe .cfa: sp 56 +
+STACK CFI 35f90 .cfa: sp 36 +
+STACK CFI INIT 35f9c 1bc .cfa: sp 0 + .ra: lr
+STACK CFI 35fa0 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 35fae .cfa: sp 56 +
+STACK CFI 36144 .cfa: sp 36 +
+STACK CFI 36148 .cfa: sp 56 +
+STACK CFI INIT 36158 42 .cfa: sp 0 + .ra: lr
+STACK CFI 3615a .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 36198 .cfa: sp 8 +
+STACK CFI INIT 3619a 6a .cfa: sp 0 + .ra: lr
+STACK CFI 3619e .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 361a0 .cfa: sp 64 +
+STACK CFI 36200 .cfa: sp 32 +
+STACK CFI INIT 36204 a .cfa: sp 0 + .ra: lr
+STACK CFI INIT 3620e a .cfa: sp 0 + .ra: lr
+STACK CFI INIT 36218 a .cfa: sp 0 + .ra: lr
+STACK CFI INIT 36222 a .cfa: sp 0 + .ra: lr
+STACK CFI INIT 3622c a .cfa: sp 0 + .ra: lr
+STACK CFI INIT 36236 a .cfa: sp 0 + .ra: lr
+STACK CFI INIT 36240 a .cfa: sp 0 + .ra: lr
+STACK CFI INIT 3624a a .cfa: sp 0 + .ra: lr
+STACK CFI INIT 36254 a .cfa: sp 0 + .ra: lr
+STACK CFI INIT 3625e a .cfa: sp 0 + .ra: lr
+STACK CFI INIT 36268 a .cfa: sp 0 + .ra: lr
+STACK CFI INIT 36272 a .cfa: sp 0 + .ra: lr
+STACK CFI INIT 3627c 130 .cfa: sp 0 + .ra: lr
+STACK CFI 36280 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 3628e .cfa: sp 56 +
+STACK CFI 363a8 .cfa: sp 36 +
+STACK CFI INIT 363ac 158 .cfa: sp 0 + .ra: lr
+STACK CFI 363b2 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 363c2 .cfa: sp 1064 +
+STACK CFI 364e4 .cfa: sp 28 +
+STACK CFI INIT 36504 9c .cfa: sp 0 + .ra: lr
+STACK CFI 36506 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 365a0 a0 .cfa: sp 0 + .ra: lr
+STACK CFI 365a4 .cfa: sp 32 + .ra: .cfa -4 + ^ r3: .cfa -32 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI INIT 15dc4 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15dc6 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15dc8 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15ddc 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de4 ac .cfa: sp 0 + .ra: lr
+STACK CFI 15de6 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 15e90 9e .cfa: sp 0 + .ra: lr
+STACK CFI 15e92 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 15e94 .cfa: sp 40 +
+STACK CFI 15f2c .cfa: sp 20 +
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f2e 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f3e 16 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f54 3e .cfa: sp 0 + .ra: lr
+STACK CFI 15f56 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f92 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f9e 1a .cfa: sp 0 + .ra: lr
+STACK CFI 15fa0 .cfa: sp 16 + .ra: .cfa -4 + ^
+STACK CFI 15fb4 .cfa: sp 4 +
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15fb8 18 .cfa: sp 0 + .ra: lr
+STACK CFI 15fba .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16030 4c .cfa: sp 0 + .ra: lr
+STACK CFI 16034 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 15fdc 54 .cfa: sp 0 + .ra: lr
+STACK CFI 15fe0 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 1607c 1c .cfa: sp 0 + .ra: lr
+STACK CFI 16080 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16098 12 .cfa: sp 0 + .ra: lr
+STACK CFI 1609a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 160ac 1c .cfa: sp 0 + .ra: lr
+STACK CFI 160b0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 160c8 12 .cfa: sp 0 + .ra: lr
+STACK CFI 160ca .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 36640 18 .cfa: sp 0 + .ra: lr
+STACK CFI 36642 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 36658 12 .cfa: sp 0 + .ra: lr
+STACK CFI 3665a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 3666c 18 .cfa: sp 0 + .ra: lr
+STACK CFI 3666e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 36684 12 .cfa: sp 0 + .ra: lr
+STACK CFI 36686 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 36698 18 .cfa: sp 0 + .ra: lr
+STACK CFI 3669a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 366b0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 366b2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 366c4 18 .cfa: sp 0 + .ra: lr
+STACK CFI 366c6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 366dc 12 .cfa: sp 0 + .ra: lr
+STACK CFI 366de .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 366f0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 366f2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 36708 12 .cfa: sp 0 + .ra: lr
+STACK CFI 3670a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 3671c 18 .cfa: sp 0 + .ra: lr
+STACK CFI 3671e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 36734 12 .cfa: sp 0 + .ra: lr
+STACK CFI 36736 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 36748 18 .cfa: sp 0 + .ra: lr
+STACK CFI 3674a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 36760 12 .cfa: sp 0 + .ra: lr
+STACK CFI 36762 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 36774 18 .cfa: sp 0 + .ra: lr
+STACK CFI 36776 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 3678c 12 .cfa: sp 0 + .ra: lr
+STACK CFI 3678e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 367a0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 367a2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 367b8 12 .cfa: sp 0 + .ra: lr
+STACK CFI 367ba .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 367cc 18 .cfa: sp 0 + .ra: lr
+STACK CFI 367ce .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 367e4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 367e6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 367f8 18 .cfa: sp 0 + .ra: lr
+STACK CFI 367fa .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 36810 12 .cfa: sp 0 + .ra: lr
+STACK CFI 36812 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 36824 20 .cfa: sp 0 + .ra: lr
+STACK CFI 36826 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 36844 20 .cfa: sp 0 + .ra: lr
+STACK CFI 36846 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 36864 20 .cfa: sp 0 + .ra: lr
+STACK CFI 36866 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 36884 20 .cfa: sp 0 + .ra: lr
+STACK CFI 36886 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 368a4 20 .cfa: sp 0 + .ra: lr
+STACK CFI 368a6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 368c4 20 .cfa: sp 0 + .ra: lr
+STACK CFI 368c6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 368e4 20 .cfa: sp 0 + .ra: lr
+STACK CFI 368e6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 36904 20 .cfa: sp 0 + .ra: lr
+STACK CFI 36906 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 36924 20 .cfa: sp 0 + .ra: lr
+STACK CFI 36926 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 36944 20 .cfa: sp 0 + .ra: lr
+STACK CFI 36946 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 36964 20 .cfa: sp 0 + .ra: lr
+STACK CFI 36966 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16a6c 54 .cfa: sp 0 + .ra: lr
+STACK CFI 16a70 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 1e00e 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16ac0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 16ac6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16ad8 14 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 36984 18 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 3699c 26 .cfa: sp 0 + .ra: lr
+STACK CFI 3699e .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 16aec 1e .cfa: sp 0 + .ra: lr
+STACK CFI 16aee .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16b0a 1e .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16b40 24 .cfa: sp 0 + .ra: lr
+STACK CFI 16b44 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16b64 12 .cfa: sp 0 + .ra: lr
+STACK CFI 16b66 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 24 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 16bac 9c .cfa: sp 0 + .ra: lr
+STACK CFI 16bb0 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 16bbc .cfa: sp 48 +
+STACK CFI 16c3e .cfa: sp 28 +
+STACK CFI INIT 16c48 78 .cfa: sp 0 + .ra: lr
+STACK CFI 16c4a .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 16cc0 66 .cfa: sp 0 + .ra: lr
+STACK CFI 16cc2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 16d26 42 .cfa: sp 0 + .ra: lr
+STACK CFI 16d28 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 16d68 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16d6e 1c .cfa: sp 0 + .ra: lr
+STACK CFI 16d70 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 0 58 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 56 .cfa: sp 20 +
+STACK CFI INIT 19394 84 .cfa: sp 0 + .ra: lr
+STACK CFI 1939a .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 176f0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 176f2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 19242 5e .cfa: sp 0 + .ra: lr
+STACK CFI 19244 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 30 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 28 .cfa: sp 8 +
+STACK CFI INIT 16f88 28 .cfa: sp 0 + .ra: lr
+STACK CFI 16f8a .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 369c2 44 .cfa: sp 0 + .ra: lr
+STACK CFI 369c4 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 0 b4 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r3: .cfa -32 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI INIT 0 7c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 1705c 54 .cfa: sp 0 + .ra: lr
+STACK CFI 1705e .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 170b0 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170b8 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170c4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 170c6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 170d6 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170e2 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170ec 54 .cfa: sp 0 + .ra: lr
+STACK CFI 170ee .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 17140 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17148 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17154 12 .cfa: sp 0 + .ra: lr
+STACK CFI 17156 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 17166 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17172 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 1717c 8c .cfa: sp 0 + .ra: lr
+STACK CFI 1717e .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 17208 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17210 80 .cfa: sp 0 + .ra: lr
+STACK CFI 17212 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 17290 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17298 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172a0 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172a8 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172b4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 172b6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 172c6 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172ce c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 1739c 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173a4 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173ac c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173b8 12 .cfa: sp 0 + .ra: lr
+STACK CFI 173ba .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 173ca 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173d2 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173de 2c .cfa: sp 0 + .ra: lr
+STACK CFI 173e0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1740a 40 .cfa: sp 0 + .ra: lr
+STACK CFI 1740c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1744a 24 .cfa: sp 0 + .ra: lr
+STACK CFI 1744c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1746e b4 .cfa: sp 0 + .ra: lr
+STACK CFI 17470 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 17520 .cfa: sp 20 +
+STACK CFI INIT 36a08 98 .cfa: sp 0 + .ra: lr
+STACK CFI 36a0c .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 36a16 .cfa: sp 216 +
+STACK CFI 36a94 .cfa: sp 32 +
+STACK CFI INIT 0 98 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 4 .cfa: sp 80 +
+STACK CFI 96 .cfa: sp 20 +
+STACK CFI INIT 36aa0 2c .cfa: sp 0 + .ra: lr
+STACK CFI 36aa2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 36aac .cfa: sp 0 + .ra: .ra r3: r3 r4: r4 r5: r5
+STACK CFI 36ab6 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 36ac4 .cfa: sp 0 + .ra: .ra r3: r3 r4: r4 r5: r5
+STACK CFI INIT 36aa0 2c .cfa: sp 0 + .ra: lr
+STACK CFI 36aa2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 36aac .cfa: sp 0 + .ra: .ra r3: r3 r4: r4 r5: r5
+STACK CFI 36ab6 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 36ac4 .cfa: sp 0 + .ra: .ra r3: r3 r4: r4 r5: r5
+STACK CFI INIT 36acc c8 .cfa: sp 0 + .ra: lr
+STACK CFI 36ad0 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 36ada .cfa: sp 72 +
+STACK CFI 36b8a .cfa: sp 32 +
+STACK CFI INIT 20330 98 .cfa: sp 0 + .ra: lr
+STACK CFI 20332 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 20334 .cfa: sp 80 +
+STACK CFI 203c6 .cfa: sp 20 +
+STACK CFI INIT 2127c a0 .cfa: sp 0 + .ra: lr
+STACK CFI 21280 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 2128a .cfa: sp 264 +
+STACK CFI 21314 .cfa: sp 36 +
+STACK CFI INIT 0 20 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 1e .cfa: sp 20 +
+STACK CFI INIT 36b94 a0 .cfa: sp 0 + .ra: lr
+STACK CFI 36b98 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 36ba2 .cfa: sp 264 +
+STACK CFI 36c2c .cfa: sp 36 +
+STACK CFI INIT 36c34 28 .cfa: sp 0 + .ra: lr
+STACK CFI 36c36 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 36c5c 98 .cfa: sp 0 + .ra: lr
+STACK CFI 36c60 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 36c6a .cfa: sp 256 +
+STACK CFI 36cec .cfa: sp 36 +
+STACK CFI INIT 36cf4 308 .cfa: sp 0 + .ra: lr
+STACK CFI 36cf8 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 36d02 .cfa: sp 416 +
+STACK CFI 36fb4 .cfa: sp 36 +
+STACK CFI INIT 36ffc 48 .cfa: sp 0 + .ra: lr
+STACK CFI 36ffe .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 3700a .cfa: sp 184 +
+STACK CFI 3703e .cfa: sp 20 +
+STACK CFI INIT 37044 74 .cfa: sp 0 + .ra: lr
+STACK CFI 37048 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 3704c .cfa: sp 96 +
+STACK CFI 370b0 .cfa: sp 32 +
+STACK CFI INIT 370b8 e0 .cfa: sp 0 + .ra: lr
+STACK CFI 370ba .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 370be .cfa: sp 48 +
+STACK CFI 37172 .cfa: sp 20 +
+STACK CFI INIT 37198 d4 .cfa: sp 0 + .ra: lr
+STACK CFI 3719c .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 371a0 .cfa: sp 56 +
+STACK CFI 37250 .cfa: sp 20 +
+STACK CFI INIT 3726c e8 .cfa: sp 0 + .ra: lr
+STACK CFI 3726e .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 37272 .cfa: sp 72 +
+STACK CFI 37338 .cfa: sp 20 +
+STACK CFI INIT 37354 1a0 .cfa: sp 0 + .ra: lr
+STACK CFI 37356 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 3735a .cfa: sp 56 +
+STACK CFI 374b6 .cfa: sp 20 +
+STACK CFI INIT 374f4 264 .cfa: sp 0 + .ra: lr
+STACK CFI 374f8 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 374fc .cfa: sp 56 +
+STACK CFI 37700 .cfa: sp 20 +
+STACK CFI INIT 0 48 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI e .cfa: sp 184 +
+STACK CFI 42 .cfa: sp 20 +
+STACK CFI INIT 37758 74 .cfa: sp 0 + .ra: lr
+STACK CFI 3775c .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 37760 .cfa: sp 96 +
+STACK CFI 377c4 .cfa: sp 32 +
+STACK CFI INIT 377cc 74 .cfa: sp 0 + .ra: lr
+STACK CFI 377d0 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 377d4 .cfa: sp 96 +
+STACK CFI 37838 .cfa: sp 32 +
+STACK CFI INIT 37840 148 .cfa: sp 0 + .ra: lr
+STACK CFI 37844 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 37848 .cfa: sp 104 +
+STACK CFI 37964 .cfa: sp 36 +
+STACK CFI INIT 37988 490 .cfa: sp 0 + .ra: lr
+STACK CFI 37990 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 37998 .cfa: sp 160 +
+STACK CFI 37d8c .cfa: sp 36 +
+STACK CFI INIT 37e18 490 .cfa: sp 0 + .ra: lr
+STACK CFI 37e20 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 37e28 .cfa: sp 160 +
+STACK CFI 3821c .cfa: sp 36 +
+STACK CFI INIT 382a8 6c .cfa: sp 0 + .ra: lr
+STACK CFI 382ac .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 382b0 .cfa: sp 96 +
+STACK CFI 3830c .cfa: sp 32 +
+STACK CFI INIT 38314 124 .cfa: sp 0 + .ra: lr
+STACK CFI 38316 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 3831a .cfa: sp 64 +
+STACK CFI 38412 .cfa: sp 20 +
+STACK CFI INIT 38438 124 .cfa: sp 0 + .ra: lr
+STACK CFI 3843a .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 3843e .cfa: sp 64 +
+STACK CFI 38536 .cfa: sp 20 +
+STACK CFI INIT 0 6c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 19304 90 .cfa: sp 0 + .ra: lr
+STACK CFI 19308 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 0 94 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 90 .cfa: sp 24 +
+STACK CFI INIT 18134 a4 .cfa: sp 0 + .ra: lr
+STACK CFI 18138 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 181d4 .cfa: sp 24 +
+STACK CFI INIT 155d0 300 .cfa: sp 0 + .ra: lr
+STACK CFI 155d4 .cfa: sp 40 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 15830 .cfa: sp 24 +
+STACK CFI INIT 15dc4 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15dc6 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15dc8 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15ddc 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de4 ac .cfa: sp 0 + .ra: lr
+STACK CFI 15de6 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 15e90 9e .cfa: sp 0 + .ra: lr
+STACK CFI 15e92 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 15e94 .cfa: sp 40 +
+STACK CFI 15f2c .cfa: sp 20 +
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f2e 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f3e 16 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f54 3e .cfa: sp 0 + .ra: lr
+STACK CFI 15f56 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f92 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f9e 1a .cfa: sp 0 + .ra: lr
+STACK CFI 15fa0 .cfa: sp 16 + .ra: .cfa -4 + ^
+STACK CFI 15fb4 .cfa: sp 4 +
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15fb8 18 .cfa: sp 0 + .ra: lr
+STACK CFI 15fba .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16030 4c .cfa: sp 0 + .ra: lr
+STACK CFI 16034 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 15fdc 54 .cfa: sp 0 + .ra: lr
+STACK CFI 15fe0 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 1607c 1c .cfa: sp 0 + .ra: lr
+STACK CFI 16080 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16098 12 .cfa: sp 0 + .ra: lr
+STACK CFI 1609a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 160ac 1c .cfa: sp 0 + .ra: lr
+STACK CFI 160b0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 160c8 12 .cfa: sp 0 + .ra: lr
+STACK CFI 160ca .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 3855c 18 .cfa: sp 0 + .ra: lr
+STACK CFI 3855e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 38574 12 .cfa: sp 0 + .ra: lr
+STACK CFI 38576 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 38588 18 .cfa: sp 0 + .ra: lr
+STACK CFI 3858a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 385a0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 385a2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 385b4 20 .cfa: sp 0 + .ra: lr
+STACK CFI 385b6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 385d4 20 .cfa: sp 0 + .ra: lr
+STACK CFI 385d6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16a6c 54 .cfa: sp 0 + .ra: lr
+STACK CFI 16a70 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 1e00e 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16ac0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 16ac6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16aec 1e .cfa: sp 0 + .ra: lr
+STACK CFI 16aee .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16b0a 1e .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16b40 24 .cfa: sp 0 + .ra: lr
+STACK CFI 16b44 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16b64 12 .cfa: sp 0 + .ra: lr
+STACK CFI 16b66 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 24 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 16bac 9c .cfa: sp 0 + .ra: lr
+STACK CFI 16bb0 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 16bbc .cfa: sp 48 +
+STACK CFI 16c3e .cfa: sp 28 +
+STACK CFI INIT 16c48 78 .cfa: sp 0 + .ra: lr
+STACK CFI 16c4a .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 16cc0 66 .cfa: sp 0 + .ra: lr
+STACK CFI 16cc2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 30 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 28 .cfa: sp 8 +
+STACK CFI INIT 0 7c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 0 b4 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r3: .cfa -32 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI INIT 1705c 54 .cfa: sp 0 + .ra: lr
+STACK CFI 1705e .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 170b0 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170b8 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170c4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 170c6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 170d6 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170e2 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170ec 54 .cfa: sp 0 + .ra: lr
+STACK CFI 170ee .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 17140 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17148 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17154 12 .cfa: sp 0 + .ra: lr
+STACK CFI 17156 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 17166 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17172 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 1717c 8c .cfa: sp 0 + .ra: lr
+STACK CFI 1717e .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 17208 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17210 80 .cfa: sp 0 + .ra: lr
+STACK CFI 17212 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 17290 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17298 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172a0 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172a8 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172b4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 172b6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 172c6 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172ce c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 1739c 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173a4 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173ac c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173b8 12 .cfa: sp 0 + .ra: lr
+STACK CFI 173ba .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 173ca 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173d2 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 38 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 176f0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 176f2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 0 dc .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 8 .cfa: sp 72 +
+STACK CFI da .cfa: sp 20 +
+STACK CFI INIT 0 dc .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI e .cfa: sp 264 +
+STACK CFI d2 .cfa: sp 36 +
+STACK CFI INIT 385f4 60 .cfa: sp 0 + .ra: lr
+STACK CFI 385f6 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 385f8 .cfa: sp 40 +
+STACK CFI 38648 .cfa: sp 16 +
+STACK CFI INIT 38654 60 .cfa: sp 0 + .ra: lr
+STACK CFI 38656 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 38658 .cfa: sp 40 +
+STACK CFI 386a8 .cfa: sp 16 +
+STACK CFI INIT 0 58 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 56 .cfa: sp 20 +
+STACK CFI INIT 0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 19242 5e .cfa: sp 0 + .ra: lr
+STACK CFI 19244 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 6c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 19304 90 .cfa: sp 0 + .ra: lr
+STACK CFI 19308 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 19394 84 .cfa: sp 0 + .ra: lr
+STACK CFI 1939a .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 0 94 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 90 .cfa: sp 24 +
+STACK CFI INIT 18134 a4 .cfa: sp 0 + .ra: lr
+STACK CFI 18138 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 181d4 .cfa: sp 24 +
+STACK CFI INIT 158d0 9c .cfa: sp 0 + .ra: lr
+STACK CFI 158d2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 158d4 .cfa: sp 40 +
+STACK CFI 15946 .cfa: sp 20 +
+STACK CFI INIT 1e00e 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16b0a 1e .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16d68 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16d6e 1c .cfa: sp 0 + .ra: lr
+STACK CFI 16d70 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 386b4 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173de 2c .cfa: sp 0 + .ra: lr
+STACK CFI 173e0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1740a 40 .cfa: sp 0 + .ra: lr
+STACK CFI 1740c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1744a 24 .cfa: sp 0 + .ra: lr
+STACK CFI 1744c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 ae .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI ac .cfa: sp 20 +
+STACK CFI INIT 0 98 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 4 .cfa: sp 80 +
+STACK CFI 96 .cfa: sp 20 +
+STACK CFI INIT 0 98 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 4 .cfa: sp 80 +
+STACK CFI 96 .cfa: sp 20 +
+STACK CFI INIT 386ba 20 .cfa: sp 0 + .ra: lr
+STACK CFI 386bc .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 386ca .cfa: sp 0 + .ra: .ra r4: r4 r5: r5
+STACK CFI 386d0 .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 386da a6 .cfa: sp 0 + .ra: lr
+STACK CFI 386dc .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 3877e .cfa: sp 16 +
+STACK CFI INIT 0 78 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 1c .cfa: sp 56 +
+STACK CFI 6a .cfa: sp 36 +
+STACK CFI INIT 0 f8 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 8 .cfa: sp 80 +
+STACK CFI e6 .cfa: sp 24 +
+STACK CFI INIT 0 b6 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI b2 .cfa: sp 36 +
+STACK CFI INIT 176f0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 176f2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 38780 1bc .cfa: sp 0 + .ra: lr
+STACK CFI 38784 .cfa: sp 40 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 38934 .cfa: sp 32 +
+STACK CFI INIT 3893c 194 .cfa: sp 0 + .ra: lr
+STACK CFI 38940 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 38952 .cfa: sp 80 +
+STACK CFI 38a86 .cfa: sp 24 +
+STACK CFI INIT 38ad0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 194 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 16 .cfa: sp 80 +
+STACK CFI 14a .cfa: sp 24 +
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 38ad4 11c .cfa: sp 0 + .ra: lr
+STACK CFI 38ad8 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 38ae2 .cfa: sp 80 +
+STACK CFI 38bbc .cfa: sp 20 +
+STACK CFI INIT 0 a4 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 14 .cfa: sp 56 +
+STACK CFI 88 .cfa: sp 20 +
+STACK CFI INIT 38bf0 bc .cfa: sp 0 + .ra: lr
+STACK CFI 38bf4 .cfa: sp 40 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r3: .cfa -40 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 38c76 .cfa: sp 0 + .ra: .ra r10: r10 r11: r11 r3: r3 r4: r4 r5: r5 r6: r6 r7: r7 r8: r8 r9: r9
+STACK CFI 38c7c .cfa: sp 40 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r3: .cfa -40 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI INIT 0 34 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 14 .cfa: sp 0 + .ra: .ra r4: r4 r5: r5 r6: r6
+STACK CFI 18 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 28 .cfa: sp 0 + .ra: .ra r4: r4 r5: r5 r6: r6
+STACK CFI INIT 0 40 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI e .cfa: sp 0 + .ra: .ra r3: r3 r4: r4 r5: r5
+STACK CFI 16 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 34 .cfa: sp 0 + .ra: .ra r3: r3 r4: r4 r5: r5
+STACK CFI INIT 38cac e .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c0 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 9c .cfa: sp 36 +
+STACK CFI a0 .cfa: sp 0 + .ra: .ra r10: r10 r11: r11 r4: r4 r5: r5 r6: r6 r7: r7 r8: r8 r9: r9
+STACK CFI INIT 0 38 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 18 .cfa: sp 0 + .ra: .ra r3: r3 r4: r4 r5: r5
+STACK CFI 1e .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 2e .cfa: sp 0 + .ra: .ra r3: r3 r4: r4 r5: r5
+STACK CFI INIT 0 40 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI e .cfa: sp 0 + .ra: .ra r3: r3 r4: r4 r5: r5
+STACK CFI 16 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 34 .cfa: sp 0 + .ra: .ra r3: r3 r4: r4 r5: r5
+STACK CFI INIT 38cba 12 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 38ccc 20 .cfa: sp 0 + .ra: lr
+STACK CFI 38cd0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 38cec 12 .cfa: sp 0 + .ra: lr
+STACK CFI 38cee .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 34 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 38d00 30 .cfa: sp 0 + .ra: lr
+STACK CFI 38d04 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16b0a 1e .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16d6e 1c .cfa: sp 0 + .ra: lr
+STACK CFI 16d70 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 173de 2c .cfa: sp 0 + .ra: lr
+STACK CFI 173e0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1744a 24 .cfa: sp 0 + .ra: lr
+STACK CFI 1744c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16db4 38 .cfa: sp 0 + .ra: lr
+STACK CFI 16db6 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 16de6 .cfa: sp 8 +
+STACK CFI INIT 0 2e .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 38d30 58 .cfa: sp 0 + .ra: lr
+STACK CFI 38d32 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 1740a 40 .cfa: sp 0 + .ra: lr
+STACK CFI 1740c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 b8 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI b6 .cfa: sp 20 +
+STACK CFI INIT 0 168 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI e .cfa: sp 80 +
+STACK CFI 14c .cfa: sp 24 +
+STACK CFI INIT 38d88 32 .cfa: sp 0 + .ra: lr
+STACK CFI 38d8a .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 38dbc 190 .cfa: sp 0 + .ra: lr
+STACK CFI 38dc0 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 38dc2 .cfa: sp 56 +
+STACK CFI 38f30 .cfa: sp 36 +
+STACK CFI 38f34 .cfa: sp 56 +
+STACK CFI INIT 0 32 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 8 .cfa: sp 32 +
+STACK CFI 30 .cfa: sp 12 +
+STACK CFI INIT 38f4c 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 38f54 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 38f5c a .cfa: sp 0 + .ra: lr
+STACK CFI INIT 38f66 a .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15dc8 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 38f70 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 38f74 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 38f78 e .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 38f86 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 38f8c 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 38f92 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 38f94 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 38f96 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 38f98 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 38f9a 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 38f9c 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 38f9e 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 38fa0 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 38fa2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 38fa4 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 38fa6 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 38fa8 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 38faa 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 a .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 38fb0 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 38fb2 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 38fb8 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 38fbe a .cfa: sp 0 + .ra: lr
+STACK CFI INIT 38fbe a .cfa: sp 0 + .ra: lr
+STACK CFI INIT 38fbe a .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15ddc 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de4 ac .cfa: sp 0 + .ra: lr
+STACK CFI 15de6 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 15e90 9e .cfa: sp 0 + .ra: lr
+STACK CFI 15e92 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 15e94 .cfa: sp 40 +
+STACK CFI 15f2c .cfa: sp 20 +
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f2e 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f3e 16 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f54 3e .cfa: sp 0 + .ra: lr
+STACK CFI 15f56 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f92 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f9e 1a .cfa: sp 0 + .ra: lr
+STACK CFI 15fa0 .cfa: sp 16 + .ra: .cfa -4 + ^
+STACK CFI 15fb4 .cfa: sp 4 +
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15fb8 18 .cfa: sp 0 + .ra: lr
+STACK CFI 15fba .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 1607c 1c .cfa: sp 0 + .ra: lr
+STACK CFI 1607e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16098 12 .cfa: sp 0 + .ra: lr
+STACK CFI 1609a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16030 4c .cfa: sp 0 + .ra: lr
+STACK CFI 16034 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 15fdc 54 .cfa: sp 0 + .ra: lr
+STACK CFI 15fe0 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 160c8 12 .cfa: sp 0 + .ra: lr
+STACK CFI 160ca .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 38fc8 2c .cfa: sp 0 + .ra: lr
+STACK CFI 38fca .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 38ff4 2c .cfa: sp 0 + .ra: lr
+STACK CFI 38ff6 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 39020 2c .cfa: sp 0 + .ra: lr
+STACK CFI 39022 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 3904c 2c .cfa: sp 0 + .ra: lr
+STACK CFI 3904e .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 39078 2c .cfa: sp 0 + .ra: lr
+STACK CFI 3907a .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 390a4 2c .cfa: sp 0 + .ra: lr
+STACK CFI 390a6 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 390d0 2e .cfa: sp 0 + .ra: lr
+STACK CFI 390d2 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 390fe 2e .cfa: sp 0 + .ra: lr
+STACK CFI 39100 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 3912c 2e .cfa: sp 0 + .ra: lr
+STACK CFI 3912e .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 3915a 2e .cfa: sp 0 + .ra: lr
+STACK CFI 3915c .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 39188 2e .cfa: sp 0 + .ra: lr
+STACK CFI 3918a .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 391b6 30 .cfa: sp 0 + .ra: lr
+STACK CFI 391b8 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 391e6 36 .cfa: sp 0 + .ra: lr
+STACK CFI 391ea .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 3921c 44 .cfa: sp 0 + .ra: lr
+STACK CFI 3921e .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 39238 .cfa: sp 0 + .ra: .ra r4: r4 r5: r5 r6: r6
+STACK CFI 3923e .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 39260 2e .cfa: sp 0 + .ra: lr
+STACK CFI 39262 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 3928c .cfa: sp 16 +
+STACK CFI INIT 39290 20 .cfa: sp 0 + .ra: lr
+STACK CFI 39292 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 392b0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 392b2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16a6c 54 .cfa: sp 0 + .ra: lr
+STACK CFI 16a70 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 2c90c 18 .cfa: sp 0 + .ra: lr
+STACK CFI 2c910 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1e00e 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 392c4 34 .cfa: sp 0 + .ra: lr
+STACK CFI 392ca .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 392f0 .cfa: sp 8 +
+STACK CFI INIT 2c924 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16ac0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 16ac6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 392f8 2c .cfa: sp 0 + .ra: lr
+STACK CFI 392fa .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 3931c .cfa: sp 8 +
+STACK CFI INIT 0 2a .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 39324 54 .cfa: sp 0 + .ra: lr
+STACK CFI 39326 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 39378 24 .cfa: sp 0 + .ra: lr
+STACK CFI 3937a .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 3939c c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 a .cfa: sp 0 + .ra: lr
+STACK CFI INIT 393a8 24 .cfa: sp 0 + .ra: lr
+STACK CFI 393aa .cfa: sp 16 + .ra: .cfa -4 + ^
+STACK CFI 393c2 .cfa: sp 4 +
+STACK CFI INIT 393cc 24 .cfa: sp 0 + .ra: lr
+STACK CFI 393ce .cfa: sp 16 + .ra: .cfa -4 + ^
+STACK CFI 393e6 .cfa: sp 4 +
+STACK CFI INIT 393f0 24 .cfa: sp 0 + .ra: lr
+STACK CFI 393f2 .cfa: sp 16 + .ra: .cfa -4 + ^
+STACK CFI 3940a .cfa: sp 4 +
+STACK CFI INIT 0 24 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^
+STACK CFI 1a .cfa: sp 4 +
+STACK CFI INIT 39414 24 .cfa: sp 0 + .ra: lr
+STACK CFI 39416 .cfa: sp 16 + .ra: .cfa -4 + ^
+STACK CFI 3942e .cfa: sp 4 +
+STACK CFI INIT 0 24 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^
+STACK CFI 1a .cfa: sp 4 +
+STACK CFI INIT 39438 24 .cfa: sp 0 + .ra: lr
+STACK CFI 3943a .cfa: sp 16 + .ra: .cfa -4 + ^
+STACK CFI 39452 .cfa: sp 4 +
+STACK CFI INIT 3945c 24 .cfa: sp 0 + .ra: lr
+STACK CFI 3945e .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 3947e .cfa: sp 8 +
+STACK CFI INIT 39480 1c .cfa: sp 0 + .ra: lr
+STACK CFI 39482 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 0 12 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 3949c a .cfa: sp 0 + .ra: lr
+STACK CFI INIT 394a6 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 1c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 394ae 1c .cfa: sp 0 + .ra: lr
+STACK CFI 394b0 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 0 36 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 24 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 1c .cfa: sp 0 + .ra: .ra r4: r4
+STACK CFI 20 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 394cc 34 .cfa: sp 0 + .ra: lr
+STACK CFI 394d0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 39500 34 .cfa: sp 0 + .ra: lr
+STACK CFI 39504 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 39534 34 .cfa: sp 0 + .ra: lr
+STACK CFI 39536 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 39568 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 39578 18 .cfa: sp 0 + .ra: lr
+STACK CFI 3957a .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 39590 20 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 395b0 20 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 14 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 14 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 395d0 26 .cfa: sp 0 + .ra: lr
+STACK CFI 395d2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 395f6 18 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 39610 30 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 39640 f8 .cfa: sp 0 + .ra: lr
+STACK CFI 39642 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 396f0 .cfa: sp 0 + .ra: .ra r3: r3 r4: r4 r5: r5
+STACK CFI 396f6 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 39738 90 .cfa: sp 0 + .ra: lr
+STACK CFI 3973a .cfa: sp 12 + r1: .cfa -12 + ^ r2: .cfa -8 + ^ r3: .cfa -4 + ^
+STACK CFI 3973c .cfa: sp 40 + .ra: .cfa -16 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^
+STACK CFI 397a8 .cfa: sp 28 +
+STACK CFI 397ac .cfa: sp 12 + .ra: .ra r4: r4 r5: r5 r6: r6
+STACK CFI 397ae .cfa: sp 0 + r1: r1 r2: r2 r3: r3
+STACK CFI INIT 397c8 30 .cfa: sp 0 + .ra: lr
+STACK CFI 397cc .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI 397e0 .cfa: sp 0 + .ra: .ra r3: r3
+STACK CFI INIT 397f8 3c .cfa: sp 0 + .ra: lr
+STACK CFI 397fa .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 3981c .cfa: sp 0 + .ra: .ra r4: r4
+STACK CFI INIT 39834 30 .cfa: sp 0 + .ra: lr
+STACK CFI 39838 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI 3984c .cfa: sp 0 + .ra: .ra r3: r3
+STACK CFI INIT 39864 68 .cfa: sp 0 + .ra: lr
+STACK CFI 39866 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 398a6 .cfa: sp 0 + .ra: .ra r3: r3 r4: r4 r5: r5
+STACK CFI 398ae .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 398cc 3a .cfa: sp 0 + .ra: lr
+STACK CFI 398ce .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 39908 2c .cfa: sp 0 + .ra: lr
+STACK CFI 3990a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 39934 12 .cfa: sp 0 + .ra: lr
+STACK CFI 39936 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 39946 1c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 39962 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 3996a c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 39976 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 3997c 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 39982 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 39988 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 3998e 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 39994 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 3999a 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 399aa 1a .cfa: sp 0 + .ra: lr
+STACK CFI 399ac .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 399c4 54 .cfa: sp 0 + .ra: lr
+STACK CFI 399c6 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 39a02 .cfa: sp 0 + .ra: .ra r3: r3 r4: r4 r5: r5
+STACK CFI 39a06 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 0 16 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 39a18 f0 .cfa: sp 0 + .ra: lr
+STACK CFI 39a1c .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 39a24 .cfa: sp 56 +
+STACK CFI 39ae4 .cfa: sp 36 +
+STACK CFI 39ae8 .cfa: sp 0 + .ra: .ra r10: r10 r11: r11 r4: r4 r5: r5 r6: r6 r7: r7 r8: r8 r9: r9
+STACK CFI INIT 0 1c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 0 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 39b08 26 .cfa: sp 0 + .ra: lr
+STACK CFI 39b0a .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 39b2e 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 39b32 26 .cfa: sp 0 + .ra: lr
+STACK CFI 39b34 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 39b58 74 .cfa: sp 0 + .ra: lr
+STACK CFI 39b5a .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 39bb2 .cfa: sp 8 +
+STACK CFI INIT 0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 39bcc 1c .cfa: sp 0 + .ra: lr
+STACK CFI 39bd0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 39be8 1c .cfa: sp 0 + .ra: lr
+STACK CFI 39bea .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 39be8 1c .cfa: sp 0 + .ra: lr
+STACK CFI 39bea .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 39c04 20 .cfa: sp 0 + .ra: lr
+STACK CFI 39c06 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 0 1e .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 39c24 24 .cfa: sp 0 + .ra: lr
+STACK CFI 39c26 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 0 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 39c48 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 39c58 1c .cfa: sp 0 + .ra: lr
+STACK CFI 39c5a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 39c6c .cfa: sp 0 + .ra: .ra r4: r4
+STACK CFI 39c70 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 39c74 10 .cfa: sp 0 + .ra: lr
+STACK CFI 39c76 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 39c84 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 39c94 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 39c9a 2a .cfa: sp 0 + .ra: lr
+STACK CFI 39c9c .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 39cc4 14 .cfa: sp 0 + .ra: lr
+STACK CFI 39cc6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 39cd8 2a .cfa: sp 0 + .ra: lr
+STACK CFI 39cda .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 39c24 24 .cfa: sp 0 + .ra: lr
+STACK CFI 39c26 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 39d04 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 39d14 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 39d24 18 .cfa: sp 0 + .ra: lr
+STACK CFI 39d26 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 39d3c 98 .cfa: sp 0 + .ra: lr
+STACK CFI 39d40 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI INIT 0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 39dd4 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 39de4 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 39df4 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 14 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 39e04 c .cfa: sp 0 + .ra: lr
+STACK CFI 39e06 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 39e10 18 .cfa: sp 0 + .ra: lr
+STACK CFI 39e12 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 20 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16b64 12 .cfa: sp 0 + .ra: lr
+STACK CFI 16b66 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 39e28 1c .cfa: sp 0 + .ra: lr
+STACK CFI 39e2a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 39e44 1c .cfa: sp 0 + .ra: lr
+STACK CFI 39e46 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 39e60 12 .cfa: sp 0 + .ra: lr
+STACK CFI 39e62 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 39e72 2e .cfa: sp 0 + .ra: lr
+STACK CFI 39e74 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 39e9e .cfa: sp 16 +
+STACK CFI INIT 39ea0 28 .cfa: sp 0 + .ra: lr
+STACK CFI 39ea2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 16bac 9c .cfa: sp 0 + .ra: lr
+STACK CFI 16bb0 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 16bbc .cfa: sp 48 +
+STACK CFI 16c3e .cfa: sp 28 +
+STACK CFI INIT 0 74 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 16cc0 66 .cfa: sp 0 + .ra: lr
+STACK CFI 16cc2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 16d68 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16d6e 1c .cfa: sp 0 + .ra: lr
+STACK CFI 16d70 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 39cc4 14 .cfa: sp 0 + .ra: lr
+STACK CFI 39cc6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 39ec8 30 .cfa: sp 0 + .ra: lr
+STACK CFI 39eca .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 39ef8 12 .cfa: sp 0 + .ra: lr
+STACK CFI 39efa .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 39cc4 14 .cfa: sp 0 + .ra: lr
+STACK CFI 39cc6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 39cc4 14 .cfa: sp 0 + .ra: lr
+STACK CFI 39cc6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 39f0a 84 .cfa: sp 0 + .ra: lr
+STACK CFI 39f0e .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 39f8a .cfa: sp 24 +
+STACK CFI INIT 0 58 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 56 .cfa: sp 20 +
+STACK CFI INIT 39f90 3c .cfa: sp 0 + .ra: lr
+STACK CFI 39f92 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI 39fc2 .cfa: sp 0 + .ra: .ra r3: r3
+STACK CFI 39fc6 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 0 62 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 39f0a 84 .cfa: sp 0 + .ra: lr
+STACK CFI 39f0e .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 39f8a .cfa: sp 24 +
+STACK CFI INIT 176da 16 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 176f0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 176f2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 19212 30 .cfa: sp 0 + .ra: lr
+STACK CFI 19214 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 19242 5e .cfa: sp 0 + .ra: lr
+STACK CFI 19244 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 d0 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI cc .cfa: sp 24 +
+STACK CFI INIT 0 4e .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 39fcc 16 .cfa: sp 0 + .ra: lr
+STACK CFI 39fd0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 39fe2 1e .cfa: sp 0 + .ra: lr
+STACK CFI 39fe4 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 3a000 38 .cfa: sp 0 + .ra: lr
+STACK CFI 3a002 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 3a038 22 .cfa: sp 0 + .ra: lr
+STACK CFI 3a03a .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 3a05c 14c .cfa: sp 0 + .ra: lr
+STACK CFI 3a060 .cfa: sp 40 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r3: .cfa -40 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI INIT 0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 179ec 1a .cfa: sp 0 + .ra: lr
+STACK CFI 179ee .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 17a02 .cfa: sp 0 + .ra: .ra r3: r3 r4: r4 r5: r5
+STACK CFI INIT 3a1a8 a .cfa: sp 0 + .ra: lr
+STACK CFI INIT 3a1b2 ac .cfa: sp 0 + .ra: lr
+STACK CFI 3a1b6 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 0 30 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 28 .cfa: sp 8 +
+STACK CFI INIT 3a25e 22 .cfa: sp 0 + .ra: lr
+STACK CFI 3a260 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 1e .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 3a280 30 .cfa: sp 0 + .ra: lr
+STACK CFI 3a284 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 3a2ac .cfa: sp 24 +
+STACK CFI INIT 3a2b0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 3a2b2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 3a2c2 .cfa: sp 8 +
+STACK CFI INIT 3a2c8 50 .cfa: sp 0 + .ra: lr
+STACK CFI 3a2ca .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 3a30a .cfa: sp 8 +
+STACK CFI INIT 3a318 18 .cfa: sp 0 + .ra: lr
+STACK CFI 3a31a .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 3a32a .cfa: sp 8 +
+STACK CFI INIT 3a330 88 .cfa: sp 0 + .ra: lr
+STACK CFI 3a334 .cfa: sp 40 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 3a3a8 .cfa: sp 32 +
+STACK CFI INIT 0 16 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 3a3b8 12 .cfa: sp 0 + .ra: lr
+STACK CFI 3a3ba .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 3a3cc 64 .cfa: sp 0 + .ra: lr
+STACK CFI 3a3ce .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 3a3d8 .cfa: sp 80 +
+STACK CFI 3a422 .cfa: sp 20 +
+STACK CFI INIT 0 14 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 3a430 22 .cfa: sp 0 + .ra: lr
+STACK CFI 3a432 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 3a452 2c .cfa: sp 0 + .ra: lr
+STACK CFI 3a454 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 3a47c .cfa: sp 12 +
+STACK CFI INIT 3a480 34 .cfa: sp 0 + .ra: lr
+STACK CFI 3a482 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 3a4b4 44 .cfa: sp 0 + .ra: lr
+STACK CFI 3a4b6 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 3a4ee .cfa: sp 12 +
+STACK CFI INIT 16dec 18 .cfa: sp 0 + .ra: lr
+STACK CFI 16dee .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 3a4f8 44 .cfa: sp 0 + .ra: lr
+STACK CFI 3a4fa .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 3a53a .cfa: sp 16 +
+STACK CFI INIT 3a53c 80 .cfa: sp 0 + .ra: lr
+STACK CFI 3a540 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 3a54a .cfa: sp 64 +
+STACK CFI 3a5b0 .cfa: sp 32 +
+STACK CFI INIT 3a5bc e .cfa: sp 0 + .ra: lr
+STACK CFI 3a5be .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 78 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI e .cfa: sp 56 +
+STACK CFI 70 .cfa: sp 24 +
+STACK CFI INIT 0 a0 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 88 .cfa: sp 20 +
+STACK CFI INIT 3a5ca 2e .cfa: sp 0 + .ra: lr
+STACK CFI 3a5cc .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 3a5f6 .cfa: sp 16 +
+STACK CFI INIT 0 74 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 68 .cfa: sp 16 +
+STACK CFI INIT 3a5f8 160 .cfa: sp 0 + .ra: lr
+STACK CFI 3a5fc .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 3a600 .cfa: sp 56 +
+STACK CFI 3a70c .cfa: sp 36 +
+STACK CFI INIT 3a758 d0 .cfa: sp 0 + .ra: lr
+STACK CFI 3a75c .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 3a772 .cfa: sp 72 +
+STACK CFI 3a810 .cfa: sp 36 +
+STACK CFI INIT 0 3a .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 386b4 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17044 16 .cfa: sp 0 + .ra: lr
+STACK CFI 17046 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 17056 .cfa: sp 0 + .ra: .ra r4: r4
+STACK CFI INIT 0 50 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 170b0 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170b8 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170c4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 170c6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 170d6 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170e2 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 50 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 17140 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17148 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17154 12 .cfa: sp 0 + .ra: lr
+STACK CFI 17156 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 17166 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17172 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 90 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 17208 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17210 80 .cfa: sp 0 + .ra: lr
+STACK CFI 17212 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 17290 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 17298 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172a0 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172a8 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172b4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 172b6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 172c6 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 172ce c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 48 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI e .cfa: sp 184 +
+STACK CFI 42 .cfa: sp 20 +
+STACK CFI INIT 1739c 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173a4 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173ac c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173b8 12 .cfa: sp 0 + .ra: lr
+STACK CFI 173ba .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 173ca 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173d2 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 173de 2c .cfa: sp 0 + .ra: lr
+STACK CFI 173e0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1740a 40 .cfa: sp 0 + .ra: lr
+STACK CFI 1740c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1744a 24 .cfa: sp 0 + .ra: lr
+STACK CFI 1744c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 90 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 4 .cfa: sp 80 +
+STACK CFI 8e .cfa: sp 20 +
+STACK CFI INIT 3a828 a4 .cfa: sp 0 + .ra: lr
+STACK CFI 3a82a .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 3a82e .cfa: sp 208 +
+STACK CFI 3a8c2 .cfa: sp 20 +
+STACK CFI INIT 0 ae .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI ac .cfa: sp 20 +
+STACK CFI INIT 3a8cc e8 .cfa: sp 0 + .ra: lr
+STACK CFI 3a8ce .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 3a982 .cfa: sp 20 +
+STACK CFI INIT 3a9b4 1c .cfa: sp 0 + .ra: lr
+STACK CFI 3a9b6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 2a .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 28 .cfa: sp 16 +
+STACK CFI INIT 3a9d0 5c .cfa: sp 0 + .ra: lr
+STACK CFI 3a9d2 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 3aa1a .cfa: sp 16 +
+STACK CFI INIT 3aa2c 30 .cfa: sp 0 + .ra: lr
+STACK CFI 3aa2e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 3aa5c 12 .cfa: sp 0 + .ra: lr
+STACK CFI 3aa5e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 3aa70 38 .cfa: sp 0 + .ra: lr
+STACK CFI 3aa72 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 3aaa0 .cfa: sp 16 +
+STACK CFI INIT 0 74 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI e .cfa: sp 208 +
+STACK CFI 68 .cfa: sp 24 +
+STACK CFI INIT 3aaa8 50 .cfa: sp 0 + .ra: lr
+STACK CFI 3aaaa .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 3aaf2 .cfa: sp 16 +
+STACK CFI INIT 17a84 2c .cfa: sp 0 + .ra: lr
+STACK CFI 17a86 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 17aae .cfa: sp 16 +
+STACK CFI INIT 0 2c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 2a .cfa: sp 16 +
+STACK CFI INIT 0 2c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 2a .cfa: sp 16 +
+STACK CFI INIT 0 2c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 2a .cfa: sp 16 +
+STACK CFI INIT 0 2c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 2a .cfa: sp 16 +
+STACK CFI INIT 17a84 2c .cfa: sp 0 + .ra: lr
+STACK CFI 17a86 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 17aae .cfa: sp 16 +
+STACK CFI INIT 0 2c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 2a .cfa: sp 16 +
+STACK CFI INIT 17a84 2c .cfa: sp 0 + .ra: lr
+STACK CFI 17a86 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 17aae .cfa: sp 16 +
+STACK CFI INIT 3aaf8 b0 .cfa: sp 0 + .ra: lr
+STACK CFI 3aafa .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 3aafc .cfa: sp 48 +
+STACK CFI 3ab90 .cfa: sp 16 +
+STACK CFI INIT 0 b0 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 4 .cfa: sp 48 +
+STACK CFI 98 .cfa: sp 16 +
+STACK CFI INIT 0 2c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 2a .cfa: sp 16 +
+STACK CFI INIT 0 118 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 6 .cfa: sp 48 +
+STACK CFI e2 .cfa: sp 24 +
+STACK CFI INIT 0 26 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI a .cfa: sp 40 +
+STACK CFI 24 .cfa: sp 20 +
+STACK CFI INIT 0 26 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI a .cfa: sp 40 +
+STACK CFI 24 .cfa: sp 20 +
+STACK CFI INIT 0 130 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI e .cfa: sp 88 +
+STACK CFI f6 .cfa: sp 28 +
+STACK CFI INIT 3aba8 b0 .cfa: sp 0 + .ra: lr
+STACK CFI 3abac .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 3ac3a .cfa: sp 24 +
+STACK CFI INIT 17522 90 .cfa: sp 0 + .ra: lr
+STACK CFI 17524 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 17526 .cfa: sp 80 +
+STACK CFI 175b0 .cfa: sp 20 +
+STACK CFI INIT 3ac58 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 3ac5c 64 .cfa: sp 0 + .ra: lr
+STACK CFI 3ac5e .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 3acae .cfa: sp 20 +
+STACK CFI INIT 3acc0 64 .cfa: sp 0 + .ra: lr
+STACK CFI 3acc4 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 3ad10 .cfa: sp 20 +
+STACK CFI INIT 3ad24 1e .cfa: sp 0 + .ra: lr
+STACK CFI 3ad26 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 3ad40 .cfa: sp 12 +
+STACK CFI INIT 3ad42 16 .cfa: sp 0 + .ra: lr
+STACK CFI 3ad44 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 3ad54 .cfa: sp 0 + .ra: .ra r4: r4
+STACK CFI INIT 0 1e .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 1c .cfa: sp 16 +
+STACK CFI INIT 0 22 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 20 .cfa: sp 12 +
+STACK CFI INIT 0 22 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 20 .cfa: sp 12 +
+STACK CFI INIT 3ad58 64 .cfa: sp 0 + .ra: lr
+STACK CFI 3ad5a .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 3ada8 .cfa: sp 20 +
+STACK CFI INIT 3adbc 24 .cfa: sp 0 + .ra: lr
+STACK CFI 3adbe .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 3ade0 68 .cfa: sp 0 + .ra: lr
+STACK CFI 3ade2 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 3ae46 .cfa: sp 20 +
+STACK CFI INIT 3ae48 68 .cfa: sp 0 + .ra: lr
+STACK CFI 3ae4c .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 3aea6 .cfa: sp 24 +
+STACK CFI INIT 3aeb0 30 .cfa: sp 0 + .ra: lr
+STACK CFI 3aeb2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 3aee0 5c .cfa: sp 0 + .ra: lr
+STACK CFI 3aee2 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 3af2a .cfa: sp 20 +
+STACK CFI INIT 3af3c 24 .cfa: sp 0 + .ra: lr
+STACK CFI 3af3e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 3af60 12 .cfa: sp 0 + .ra: lr
+STACK CFI 3af62 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 3af74 1c .cfa: sp 0 + .ra: lr
+STACK CFI 3af76 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 3af90 12 .cfa: sp 0 + .ra: lr
+STACK CFI 3af92 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 3afa2 60 .cfa: sp 0 + .ra: lr
+STACK CFI 3afa4 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 3b000 .cfa: sp 16 +
+STACK CFI INIT 3b002 48 .cfa: sp 0 + .ra: lr
+STACK CFI 3b004 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 3b04a 16 .cfa: sp 0 + .ra: lr
+STACK CFI 3b04c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 3b05a .cfa: sp 0 + .ra: .ra r4: r4
+STACK CFI 3b05e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 3b060 58 .cfa: sp 0 + .ra: lr
+STACK CFI 3b062 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 3b0b8 12 .cfa: sp 0 + .ra: lr
+STACK CFI 3b0ba .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 3b0cc 80 .cfa: sp 0 + .ra: lr
+STACK CFI 3b0ce .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 3b0d2 .cfa: sp 208 +
+STACK CFI 3b142 .cfa: sp 20 +
+STACK CFI INIT 3b14c 6c .cfa: sp 0 + .ra: lr
+STACK CFI 3b14e .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 3b15a .cfa: sp 184 +
+STACK CFI 3b1b2 .cfa: sp 20 +
+STACK CFI INIT 0 2c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 2a .cfa: sp 16 +
+STACK CFI INIT 3b1b8 118 .cfa: sp 0 + .ra: lr
+STACK CFI 3b1bc .cfa: sp 40 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 3b2b4 .cfa: sp 32 +
+STACK CFI INIT 3b2d0 32 .cfa: sp 0 + .ra: lr
+STACK CFI 3b2d2 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 3b300 .cfa: sp 12 +
+STACK CFI INIT 3b304 150 .cfa: sp 0 + .ra: lr
+STACK CFI 3b308 .cfa: sp 40 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 3b41a .cfa: sp 32 +
+STACK CFI INIT 3b454 58 .cfa: sp 0 + .ra: lr
+STACK CFI 3b456 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 14 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 3b4ac 96 .cfa: sp 0 + .ra: lr
+STACK CFI 3b4ae .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 3b4b0 .cfa: sp 80 +
+STACK CFI 3b540 .cfa: sp 20 +
+STACK CFI INIT 0 2e .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 2c .cfa: sp 16 +
+STACK CFI INIT 0 16c .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 6 .cfa: sp 72 +
+STACK CFI 144 .cfa: sp 28 +
+STACK CFI INIT 3b548 74 .cfa: sp 0 + .ra: lr
+STACK CFI 3b54c .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 3b558 .cfa: sp 184 +
+STACK CFI 3b5a6 .cfa: sp 24 +
+STACK CFI INIT 3b5c0 94 .cfa: sp 0 + .ra: lr
+STACK CFI 3b5c4 .cfa: sp 40 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 3b642 .cfa: sp 28 +
+STACK CFI INIT 386ba 20 .cfa: sp 0 + .ra: lr
+STACK CFI 386bc .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 386ca .cfa: sp 0 + .ra: .ra r4: r4 r5: r5
+STACK CFI 386d0 .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 386da a6 .cfa: sp 0 + .ra: lr
+STACK CFI 386dc .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 3877e .cfa: sp 16 +
+STACK CFI INIT 0 b6 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI b2 .cfa: sp 36 +
+STACK CFI INIT 3b654 bc .cfa: sp 0 + .ra: lr
+STACK CFI 3b656 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 3b6ec .cfa: sp 20 +
+STACK CFI INIT 3b710 154 .cfa: sp 0 + .ra: lr
+STACK CFI 3b714 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 3b71a .cfa: sp 72 +
+STACK CFI 3b838 .cfa: sp 24 +
+STACK CFI INIT 3b864 5c .cfa: sp 0 + .ra: lr
+STACK CFI 3b868 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 3b874 .cfa: sp 64 +
+STACK CFI 3b8b8 .cfa: sp 28 +
+STACK CFI INIT 0 26 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 24 .cfa: sp 8 +
+STACK CFI INIT 17ae8 2c .cfa: sp 0 + .ra: lr
+STACK CFI 17aea .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 17b12 .cfa: sp 16 +
+STACK CFI INIT 0 1c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 cc .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 8 .cfa: sp 104 +
+STACK CFI b4 .cfa: sp 24 +
+STACK CFI INIT 0 19c .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 8 .cfa: sp 40 + s16: .cfa -40 + ^ s17: .cfa -36 + ^
+STACK CFI a .cfa: sp 416 +
+STACK CFI 17c .cfa: sp 40 +
+STACK CFI 180 .cfa: sp 32 + s16: s16 s17: s17
+STACK CFI INIT 0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 10 .cfa: sp 12 +
+STACK CFI INIT 0 1f8 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 6 .cfa: sp 440 +
+STACK CFI 1d2 .cfa: sp 36 +
+STACK CFI INIT 0 1e .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 1c .cfa: sp 16 +
+STACK CFI INIT 0 194 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 6 .cfa: sp 64 +
+STACK CFI 15e .cfa: sp 36 +
+STACK CFI INIT 0 1e .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 1c .cfa: sp 16 +
+STACK CFI INIT 0 1e .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 1c .cfa: sp 16 +
+STACK CFI INIT 0 224 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 8 .cfa: sp 88 +
+STACK CFI 1e2 .cfa: sp 36 +
+STACK CFI INIT 3b8c0 d4 .cfa: sp 0 + .ra: lr
+STACK CFI 3b8c6 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 3b8ce .cfa: sp 80 +
+STACK CFI 3b978 .cfa: sp 24 +
+STACK CFI INIT 3b994 138 .cfa: sp 0 + .ra: lr
+STACK CFI 3b998 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 3b9a2 .cfa: sp 96 +
+STACK CFI 3baa6 .cfa: sp 36 +
+STACK CFI INIT 3bacc f0 .cfa: sp 0 + .ra: lr
+STACK CFI 3bad0 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 3bada .cfa: sp 120 +
+STACK CFI 3bba4 .cfa: sp 36 +
+STACK CFI INIT 3bbbc 58 .cfa: sp 0 + .ra: lr
+STACK CFI 3bbc0 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 3bbc4 .cfa: sp 56 +
+STACK CFI 3bc0a .cfa: sp 24 +
+STACK CFI INIT 3bc14 270 .cfa: sp 0 + .ra: lr
+STACK CFI 3bc18 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 3bc22 .cfa: sp 72 +
+STACK CFI 3be24 .cfa: sp 28 +
+STACK CFI INIT 3be84 a .cfa: sp 0 + .ra: lr
+STACK CFI INIT 3be90 dc .cfa: sp 0 + .ra: lr
+STACK CFI 3be94 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 3bf40 .cfa: sp 24 +
+STACK CFI INIT 3bf6c 84 .cfa: sp 0 + .ra: lr
+STACK CFI 3bf6e .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 3bfda .cfa: sp 20 +
+STACK CFI INIT 3bff0 c .cfa: sp 0 + .ra: lr
+STACK CFI 3bff2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 3bffc 1d4 .cfa: sp 0 + .ra: lr
+STACK CFI 3c000 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 3c00a .cfa: sp 184 +
+STACK CFI 3c1a2 .cfa: sp 36 +
+STACK CFI INIT 3c1d0 e .cfa: sp 0 + .ra: lr
+STACK CFI 3c1d2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 203f0 34 .cfa: sp 0 + .ra: lr
+STACK CFI 203f2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 3c1de 42 .cfa: sp 0 + .ra: lr
+STACK CFI 3c1e2 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 3c220 28 .cfa: sp 0 + .ra: lr
+STACK CFI 3c222 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 25018 22 .cfa: sp 0 + .ra: lr
+STACK CFI 2501e .cfa: sp 16 +
+STACK CFI 25038 .cfa: sp 0 +
+STACK CFI INIT 25054 1c .cfa: sp 0 + .ra: lr
+STACK CFI 25056 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 3c248 20 .cfa: sp 0 + .ra: lr
+STACK CFI 3c24c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 3c268 56 .cfa: sp 0 + .ra: lr
+STACK CFI 3c26c .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 3c2bc .cfa: sp 16 +
+STACK CFI INIT 3c2be 26 .cfa: sp 0 + .ra: lr
+STACK CFI 3c2c0 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 3c2e4 a8 .cfa: sp 0 + .ra: lr
+STACK CFI 3c2e8 .cfa: sp 32 + .ra: .cfa -4 + ^ r3: .cfa -32 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI INIT 3c38c 10c .cfa: sp 0 + .ra: lr
+STACK CFI 3c390 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 3c39a .cfa: sp 88 +
+STACK CFI 3c46a .cfa: sp 36 +
+STACK CFI INIT 3c498 ac .cfa: sp 0 + .ra: lr
+STACK CFI 3c49c .cfa: sp 40 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 3c532 .cfa: sp 28 +
+STACK CFI 3c536 .cfa: sp 40 +
+STACK CFI INIT 3c544 28 .cfa: sp 0 + .ra: lr
+STACK CFI 3c546 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 3c56a .cfa: sp 8 +
+STACK CFI INIT 0 16 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^
+STACK CFI 12 .cfa: sp 4 +
+STACK CFI INIT 3c56c 18 .cfa: sp 0 + .ra: lr
+STACK CFI 3c56e .cfa: sp 16 + .ra: .cfa -4 + ^
+STACK CFI 3c580 .cfa: sp 4 +
+STACK CFI INIT 3c584 2a .cfa: sp 0 + .ra: lr
+STACK CFI 3c586 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 3c5a8 .cfa: sp 0 + .ra: .ra r3: r3 r4: r4 r5: r5
+STACK CFI 3c5ac .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 3c5b0 1c8 .cfa: sp 0 + .ra: lr
+STACK CFI 3c5b4 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 3c5ba .cfa: sp 48 +
+STACK CFI 3c734 .cfa: sp 28 +
+STACK CFI INIT 3c778 2c .cfa: sp 0 + .ra: lr
+STACK CFI 3c77a .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 3c7a4 44 .cfa: sp 0 + .ra: lr
+STACK CFI 3c7a6 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 3c7e8 194 .cfa: sp 0 + .ra: lr
+STACK CFI 3c7ee .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 3c7f6 .cfa: sp 208 +
+STACK CFI 3c966 .cfa: sp 36 +
+STACK CFI INIT 3c97c a .cfa: sp 0 + .ra: lr
+STACK CFI 3c97e .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 0 34 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 1e .cfa: sp 0 + .ra: .ra r3: r3 r4: r4 r5: r5
+STACK CFI 22 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 0 20 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 1c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 30 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 3c986 46 .cfa: sp 0 + .ra: lr
+STACK CFI 3c988 .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 3c98a .cfa: sp 32 +
+STACK CFI 3c9c6 .cfa: sp 12 +
+STACK CFI 3c9ca .cfa: sp 0 + .ra: .ra r4: r4 r5: r5
+STACK CFI INIT 3c9cc 1c .cfa: sp 0 + .ra: lr
+STACK CFI 3c9ce .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI 3c9e4 .cfa: sp 0 + .ra: .ra r3: r3
+STACK CFI INIT 3c9e8 1c .cfa: sp 0 + .ra: lr
+STACK CFI 3c9ea .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI 3ca00 .cfa: sp 0 + .ra: .ra r3: r3
+STACK CFI INIT 3c986 46 .cfa: sp 0 + .ra: lr
+STACK CFI 3c988 .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 3c98a .cfa: sp 32 +
+STACK CFI 3c9c6 .cfa: sp 12 +
+STACK CFI 3c9ca .cfa: sp 0 + .ra: .ra r4: r4 r5: r5
+STACK CFI INIT 3ca04 88 .cfa: sp 0 + .ra: lr
+STACK CFI 3ca08 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 0 5c .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 8 .cfa: sp 64 +
+STACK CFI 50 .cfa: sp 24 +
+STACK CFI INIT 3ca8c 10 .cfa: sp 0 + .ra: lr
+STACK CFI 3ca8e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 3ca9c 2a .cfa: sp 0 + .ra: lr
+STACK CFI 3ca9e .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 3cac0 .cfa: sp 0 + .ra: .ra r3: r3 r4: r4 r5: r5
+STACK CFI 3cac4 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 3cac8 a0 .cfa: sp 0 + .ra: lr
+STACK CFI 3cacc .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 3cad0 .cfa: sp 88 +
+STACK CFI 3cb50 .cfa: sp 28 +
+STACK CFI INIT 0 1a .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^
+STACK CFI 16 .cfa: sp 4 +
+STACK CFI INIT 3cb68 2c .cfa: sp 0 + .ra: lr
+STACK CFI 3cb6a .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 3cb92 .cfa: sp 8 +
+STACK CFI INIT 3cb94 20 .cfa: sp 0 + .ra: lr
+STACK CFI 3cb96 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 3cbb2 .cfa: sp 12 +
+STACK CFI INIT 3cbb4 34 .cfa: sp 0 + .ra: lr
+STACK CFI 3cbb6 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 3cbe0 .cfa: sp 8 +
+STACK CFI INIT 3cbe8 12 .cfa: sp 0 + .ra: lr
+STACK CFI 3cbea .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 3cbfc 19c .cfa: sp 0 + .ra: lr
+STACK CFI 3cbfe .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 3cd72 .cfa: sp 20 +
+STACK CFI INIT 3cd98 12 .cfa: sp 0 + .ra: lr
+STACK CFI 3cd9a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 3179c 2e .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 8a .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 86 .cfa: sp 24 +
+STACK CFI INIT 0 44 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 42 .cfa: sp 20 +
+STACK CFI INIT 3cdac 98 .cfa: sp 0 + .ra: lr
+STACK CFI 3cdb0 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 3cdba .cfa: sp 88 +
+STACK CFI 3ce36 .cfa: sp 28 +
+STACK CFI INIT 18134 a4 .cfa: sp 0 + .ra: lr
+STACK CFI 18138 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 181d4 .cfa: sp 24 +
+STACK CFI INIT 0 44 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 42 .cfa: sp 20 +
+STACK CFI INIT 3ce44 130 .cfa: sp 0 + .ra: lr
+STACK CFI 3ce48 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 3ce5c .cfa: sp 152 +
+STACK CFI 3cf5a .cfa: sp 36 +
+STACK CFI INIT 3cf74 148 .cfa: sp 0 + .ra: lr
+STACK CFI 3cf7a .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 3cf82 .cfa: sp 128 +
+STACK CFI 3d0a4 .cfa: sp 36 +
+STACK CFI INIT 3d0bc 44 .cfa: sp 0 + .ra: lr
+STACK CFI 3d0be .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 3d0ca .cfa: sp 56 +
+STACK CFI 3d0f6 .cfa: sp 20 +
+STACK CFI INIT 3d100 44 .cfa: sp 0 + .ra: lr
+STACK CFI 3d102 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 3d10c .cfa: sp 48 +
+STACK CFI 3d13a .cfa: sp 16 +
+STACK CFI INIT 3d144 78 .cfa: sp 0 + .ra: lr
+STACK CFI 3d146 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 3d14a .cfa: sp 80 +
+STACK CFI 3d1a8 .cfa: sp 20 +
+STACK CFI INIT 3d1bc 58 .cfa: sp 0 + .ra: lr
+STACK CFI 3d1be .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 3d1c8 .cfa: sp 88 +
+STACK CFI 3d208 .cfa: sp 20 +
+STACK CFI INIT 3d214 180 .cfa: sp 0 + .ra: lr
+STACK CFI 3d218 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 3d21c .cfa: sp 120 +
+STACK CFI 3d36e .cfa: sp 32 +
+STACK CFI INIT 3d394 3c .cfa: sp 0 + .ra: lr
+STACK CFI 3d396 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 3d3ca .cfa: sp 0 + .ra: .ra r4: r4
+STACK CFI 3d3ce .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 3d3d0 70 .cfa: sp 0 + .ra: lr
+STACK CFI 3d3d4 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 3d3d8 .cfa: sp 80 +
+STACK CFI 3d434 .cfa: sp 24 +
+STACK CFI INIT 3d440 78 .cfa: sp 0 + .ra: lr
+STACK CFI 3d444 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 3d450 .cfa: sp 104 +
+STACK CFI 3d4ae .cfa: sp 36 +
+STACK CFI INIT 0 90 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 6 .cfa: sp 56 +
+STACK CFI 78 .cfa: sp 20 +
+STACK CFI INIT 0 194 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI e .cfa: sp 96 +
+STACK CFI 160 .cfa: sp 36 +
+STACK CFI INIT 0 54 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI c .cfa: sp 72 +
+STACK CFI 4c .cfa: sp 20 +
+STACK CFI INIT 3d4b8 224 .cfa: sp 0 + .ra: lr
+STACK CFI 3d4bc .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 3d4be .cfa: sp 48 +
+STACK CFI 3d676 .cfa: sp 28 +
+STACK CFI INIT 3d6dc a8 .cfa: sp 0 + .ra: lr
+STACK CFI 3d6de .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 3d6e0 .cfa: sp 40 +
+STACK CFI 3d76c .cfa: sp 16 +
+STACK CFI INIT 3d784 104 .cfa: sp 0 + .ra: lr
+STACK CFI 3d788 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 3d78e .cfa: sp 64 +
+STACK CFI 3d878 .cfa: sp 32 +
+STACK CFI INIT 3d888 d4 .cfa: sp 0 + .ra: lr
+STACK CFI 3d88c .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 3d892 .cfa: sp 48 +
+STACK CFI 3d946 .cfa: sp 28 +
+STACK CFI INIT 3d95c 2d4 .cfa: sp 0 + .ra: lr
+STACK CFI 3d960 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 3d964 .cfa: sp 88 +
+STACK CFI 3dbe0 .cfa: sp 36 +
+STACK CFI INIT 3dc30 60 .cfa: sp 0 + .ra: lr
+STACK CFI 3dc34 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 3dc40 .cfa: sp 80 +
+STACK CFI 3dc82 .cfa: sp 24 +
+STACK CFI INIT 3dc90 60 .cfa: sp 0 + .ra: lr
+STACK CFI 3dc94 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 3dca0 .cfa: sp 80 +
+STACK CFI 3dce2 .cfa: sp 24 +
+STACK CFI INIT 3dcf0 6c .cfa: sp 0 + .ra: lr
+STACK CFI 3dcf4 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 3dd02 .cfa: sp 96 +
+STACK CFI 3dd4e .cfa: sp 28 +
+STACK CFI INIT 3dd5c 9c .cfa: sp 0 + .ra: lr
+STACK CFI 3dd5e .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 3dd62 .cfa: sp 48 +
+STACK CFI 3ddd6 .cfa: sp 16 +
+STACK CFI INIT 3ddf8 150 .cfa: sp 0 + .ra: lr
+STACK CFI 3ddfc .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 3de06 .cfa: sp 80 +
+STACK CFI 3def8 .cfa: sp 20 +
+STACK CFI INIT 3df48 1a4 .cfa: sp 0 + .ra: lr
+STACK CFI 3df4c .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 3df50 .cfa: sp 496 +
+STACK CFI 3e0d4 .cfa: sp 36 +
+STACK CFI INIT 3e0ec a4 .cfa: sp 0 + .ra: lr
+STACK CFI 3e0f0 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 3e0f4 .cfa: sp 112 +
+STACK CFI 3e17e .cfa: sp 32 +
+STACK CFI INIT 3e190 26 .cfa: sp 0 + .ra: lr
+STACK CFI 3e192 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 3e1b8 48 .cfa: sp 0 + .ra: lr
+STACK CFI 3e1ba .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 3e1f8 .cfa: sp 20 +
+STACK CFI INIT 3e200 1a .cfa: sp 0 + .ra: lr
+STACK CFI 3e202 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 3e21c 2b8 .cfa: sp 0 + .ra: lr
+STACK CFI 3e222 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 3e22e .cfa: sp 96 +
+STACK CFI 3e42c .cfa: sp 36 +
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 fc .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 6 .cfa: sp 80 +
+STACK CFI ee .cfa: sp 20 +
+STACK CFI INIT 0 80 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 10 .cfa: sp 224 +
+STACK CFI 78 .cfa: sp 36 +
+STACK CFI INIT 0 24 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 1e .cfa: sp 8 +
+STACK CFI INIT 0 40 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI c .cfa: sp 48 +
+STACK CFI 38 .cfa: sp 16 +
+STACK CFI INIT 0 154 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 6 .cfa: sp 64 +
+STACK CFI 11e .cfa: sp 32 +
+STACK CFI INIT 0 26 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI a .cfa: sp 40 +
+STACK CFI 24 .cfa: sp 20 +
+STACK CFI INIT 0 26 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI a .cfa: sp 40 +
+STACK CFI 24 .cfa: sp 20 +
+STACK CFI INIT 0 40 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI c .cfa: sp 48 +
+STACK CFI 38 .cfa: sp 16 +
+STACK CFI INIT 0 2a .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 28 .cfa: sp 16 +
+STACK CFI INIT 0 2b8 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 12 .cfa: sp 96 +
+STACK CFI 210 .cfa: sp 36 +
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 3e4d4 f8 .cfa: sp 0 + .ra: lr
+STACK CFI 3e4da .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 3e4e4 .cfa: sp 248 +
+STACK CFI 3e5b0 .cfa: sp 36 +
+STACK CFI INIT 3e5cc 348 .cfa: sp 0 + .ra: lr
+STACK CFI 3e5d0 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 3e5e0 .cfa: sp 208 +
+STACK CFI 3e8c4 .cfa: sp 36 +
+STACK CFI INIT 3e914 228 .cfa: sp 0 + .ra: lr
+STACK CFI 3e918 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 3e928 .cfa: sp 128 +
+STACK CFI 3eb04 .cfa: sp 36 +
+STACK CFI INIT 3eb3c 2c0 .cfa: sp 0 + .ra: lr
+STACK CFI 3eb40 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 3eb50 .cfa: sp 128 +
+STACK CFI 3edb0 .cfa: sp 36 +
+STACK CFI INIT 3edfc c8 .cfa: sp 0 + .ra: lr
+STACK CFI 3ee00 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 3ee0a .cfa: sp 264 +
+STACK CFI 3eeb0 .cfa: sp 28 +
+STACK CFI INIT 18f74 96 .cfa: sp 0 + .ra: lr
+STACK CFI 18f76 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 18f78 .cfa: sp 80 +
+STACK CFI 19008 .cfa: sp 20 +
+STACK CFI INIT 3eec4 2e .cfa: sp 0 + .ra: lr
+STACK CFI 3eec6 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 3eef0 .cfa: sp 16 +
+STACK CFI INIT 3eef4 b4 .cfa: sp 0 + .ra: lr
+STACK CFI 3eef6 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 3ef04 .cfa: sp 56 +
+STACK CFI 3ef88 .cfa: sp 16 +
+STACK CFI INIT 3efa8 1dc .cfa: sp 0 + .ra: lr
+STACK CFI 3efac .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 3efba .cfa: sp 96 +
+STACK CFI 3f122 .cfa: sp 32 +
+STACK CFI INIT 3f184 ac .cfa: sp 0 + .ra: lr
+STACK CFI 3f18a .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 3f192 .cfa: sp 88 +
+STACK CFI 3f20e .cfa: sp 24 +
+STACK CFI INIT 3f230 d8 .cfa: sp 0 + .ra: lr
+STACK CFI 3f234 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 3f238 .cfa: sp 200 +
+STACK CFI 3f2ec .cfa: sp 36 +
+STACK CFI INIT 3f308 d8 .cfa: sp 0 + .ra: lr
+STACK CFI 3f30c .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 3f310 .cfa: sp 200 +
+STACK CFI 3f3c4 .cfa: sp 36 +
+STACK CFI INIT 3f3e0 dc .cfa: sp 0 + .ra: lr
+STACK CFI 3f3e4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 3f3e8 .cfa: sp 200 +
+STACK CFI 3f49e .cfa: sp 36 +
+STACK CFI INIT 0 4c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI e .cfa: sp 184 +
+STACK CFI 44 .cfa: sp 20 +
+STACK CFI INIT 0 d4 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI c .cfa: sp 96 +
+STACK CFI ba .cfa: sp 24 +
+STACK CFI INIT 0 d4 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI c .cfa: sp 96 +
+STACK CFI ba .cfa: sp 24 +
+STACK CFI INIT 0 d4 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI c .cfa: sp 96 +
+STACK CFI ba .cfa: sp 24 +
+STACK CFI INIT 0 d4 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI c .cfa: sp 96 +
+STACK CFI ba .cfa: sp 24 +
+STACK CFI INIT 0 d4 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI c .cfa: sp 96 +
+STACK CFI ba .cfa: sp 24 +
+STACK CFI INIT 3f4bc f0 .cfa: sp 0 + .ra: lr
+STACK CFI 3f4c0 .cfa: sp 40 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 3f5a4 .cfa: sp 28 +
+STACK CFI INIT 3f5b0 48e .cfa: sp 0 + .ra: lr
+STACK CFI 3f5b4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 3f5ba .cfa: sp 120 +
+STACK CFI 3fa3a .cfa: sp 36 +
+STACK CFI INIT 38d88 32 .cfa: sp 0 + .ra: lr
+STACK CFI 38d8a .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 0 16c .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 6 .cfa: sp 56 +
+STACK CFI 150 .cfa: sp 36 +
+STACK CFI 154 .cfa: sp 56 +
+STACK CFI INIT 3fa40 32 .cfa: sp 0 + .ra: lr
+STACK CFI 3fa42 .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 3fa48 .cfa: sp 32 +
+STACK CFI 3fa70 .cfa: sp 12 +
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 3fa72 30 .cfa: sp 0 + .ra: lr
+STACK CFI 3fa74 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 3fa98 .cfa: sp 0 + .ra: .ra r4: r4 r5: r5 r6: r6
+STACK CFI INIT 0 1a .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 0 174 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 6 .cfa: sp 56 +
+STACK CFI 158 .cfa: sp 36 +
+STACK CFI 15c .cfa: sp 56 +
+STACK CFI INIT 0 17c .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 8 .cfa: sp 160 +
+STACK CFI 16e .cfa: sp 36 +
+STACK CFI INIT 0 8c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI c .cfa: sp 56 +
+STACK CFI 78 .cfa: sp 20 +
+STACK CFI INIT 0 50 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI e .cfa: sp 80 +
+STACK CFI 48 .cfa: sp 24 +
+STACK CFI INIT 0 16 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 12 .cfa: sp 0 + .ra: .ra r3: r3 r4: r4 r5: r5
+STACK CFI INIT 0 6c .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 10 .cfa: sp 88 +
+STACK CFI 64 .cfa: sp 24 +
+STACK CFI INIT 3faa4 194 .cfa: sp 0 + .ra: lr
+STACK CFI 3faa8 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 3fab6 .cfa: sp 56 +
+STACK CFI 3fc24 .cfa: sp 36 +
+STACK CFI 3fc28 .cfa: sp 56 +
+STACK CFI INIT 3fc38 58 .cfa: sp 0 + .ra: lr
+STACK CFI 3fc3a .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 3fc3e .cfa: sp 32 +
+STACK CFI 3fc8e .cfa: sp 12 +
+STACK CFI INIT 3fc90 68 .cfa: sp 0 + .ra: lr
+STACK CFI 3fc94 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 3fca4 .cfa: sp 96 +
+STACK CFI 3fcf0 .cfa: sp 28 +
+STACK CFI INIT 3fcf8 b4 .cfa: sp 0 + .ra: lr
+STACK CFI 3fcfc .cfa: sp 48 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 3fda8 .cfa: sp 32 +
+STACK CFI INIT 3fdac 120 .cfa: sp 0 + .ra: lr
+STACK CFI 3fdb0 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 3fdb4 .cfa: sp 160 +
+STACK CFI 3fec0 .cfa: sp 36 +
+STACK CFI INIT 3fecc 110 .cfa: sp 0 + .ra: lr
+STACK CFI 3fed0 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 3fedc .cfa: sp 136 +
+STACK CFI 3ffc4 .cfa: sp 36 +
+STACK CFI INIT 20424 2c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 20450 2c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 2047c 9e .cfa: sp 0 + .ra: lr
+STACK CFI 20480 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 3ffdc 6e .cfa: sp 0 + .ra: lr
+STACK CFI 3ffe0 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 4004a 78 .cfa: sp 0 + .ra: lr
+STACK CFI 4004e .cfa: sp 40 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 400be .cfa: sp 24 +
+STACK CFI INIT 400c2 174 .cfa: sp 0 + .ra: lr
+STACK CFI 400c6 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 400ce .cfa: sp 56 +
+STACK CFI 40232 .cfa: sp 36 +
+STACK CFI INIT 40238 8c .cfa: sp 0 + .ra: lr
+STACK CFI 4023e .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 4024e .cfa: sp 72 +
+STACK CFI 402bc .cfa: sp 24 +
+STACK CFI INIT 402c4 104 .cfa: sp 0 + .ra: lr
+STACK CFI 402c8 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 402d0 .cfa: sp 128 +
+STACK CFI 403be .cfa: sp 36 +
+STACK CFI INIT 403c8 36c .cfa: sp 0 + .ra: lr
+STACK CFI 403cc .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 403da .cfa: sp 296 +
+STACK CFI 4070a .cfa: sp 36 +
+STACK CFI INIT 40734 36 .cfa: sp 0 + .ra: lr
+STACK CFI 40736 .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 4076a 5a .cfa: sp 0 + .ra: lr
+STACK CFI 4076e .cfa: sp 32 + .ra: .cfa -4 + ^ r3: .cfa -32 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI INIT 407c4 14c .cfa: sp 0 + .ra: lr
+STACK CFI 407c8 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 407ca .cfa: sp 56 +
+STACK CFI 408f8 .cfa: sp 36 +
+STACK CFI 408fc .cfa: sp 56 +
+STACK CFI INIT 40910 84 .cfa: sp 0 + .ra: lr
+STACK CFI 40916 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 40920 .cfa: sp 64 +
+STACK CFI 4098c .cfa: sp 24 +
+STACK CFI INIT 40994 c4 .cfa: sp 0 + .ra: lr
+STACK CFI 40998 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 409aa .cfa: sp 72 +
+STACK CFI 40a50 .cfa: sp 32 +
+STACK CFI INIT 40a58 180 .cfa: sp 0 + .ra: lr
+STACK CFI 40a5c .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 40a66 .cfa: sp 88 +
+STACK CFI 40bb2 .cfa: sp 32 +
+STACK CFI INIT 40bd8 78 .cfa: sp 0 + .ra: lr
+STACK CFI 40bdc .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 40be0 .cfa: sp 104 +
+STACK CFI 40c48 .cfa: sp 32 +
+STACK CFI INIT 0 78 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 8 .cfa: sp 104 +
+STACK CFI 70 .cfa: sp 28 +
+STACK CFI INIT 0 78 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 8 .cfa: sp 104 +
+STACK CFI 70 .cfa: sp 32 +
+STACK CFI INIT 0 7c .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI c .cfa: sp 96 +
+STACK CFI 74 .cfa: sp 32 +
+STACK CFI INIT 40c50 b4 .cfa: sp 0 + .ra: lr
+STACK CFI 40c56 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 40c64 .cfa: sp 64 +
+STACK CFI 40cf0 .cfa: sp 28 +
+STACK CFI INIT 0 b4 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 14 .cfa: sp 64 +
+STACK CFI a0 .cfa: sp 28 +
+STACK CFI INIT 192a0 64 .cfa: sp 0 + .ra: lr
+STACK CFI 192a2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 19304 90 .cfa: sp 0 + .ra: lr
+STACK CFI 19308 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 1596c 1e0 .cfa: sp 0 + .ra: lr
+STACK CFI 15970 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 15abe .cfa: sp 24 +
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 64 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 16ac0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 16ac6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1e00e 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 2c924 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 40d04 e .cfa: sp 0 + .ra: lr
+STACK CFI 40d06 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 16 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 1c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 1c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^
+STACK CFI 18 .cfa: sp 4 +
+STACK CFI INIT 40d14 5c .cfa: sp 0 + .ra: lr
+STACK CFI 40d16 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 0 2a .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 28 .cfa: sp 20 +
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 40d70 12 .cfa: sp 0 + .ra: lr
+STACK CFI 40d72 .cfa: sp 8 +
+STACK CFI 40d80 .cfa: sp 0 +
+STACK CFI INIT 40d82 16 .cfa: sp 0 + .ra: lr
+STACK CFI 40d84 .cfa: sp 16 + .ra: .cfa -4 + ^
+STACK CFI 40d94 .cfa: sp 4 +
+STACK CFI INIT 39cd8 2a .cfa: sp 0 + .ra: lr
+STACK CFI 39cda .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 0 38 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 24f22 7a .cfa: sp 0 + .ra: lr
+STACK CFI 24f24 .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 0 14 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 39e04 c .cfa: sp 0 + .ra: lr
+STACK CFI 39e06 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 39e72 2e .cfa: sp 0 + .ra: lr
+STACK CFI 39e74 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 39e9e .cfa: sp 16 +
+STACK CFI INIT 324f8 22 .cfa: sp 0 + .ra: lr
+STACK CFI 324fa .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 16d26 42 .cfa: sp 0 + .ra: lr
+STACK CFI 16d28 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 16d68 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16d6e 1c .cfa: sp 0 + .ra: lr
+STACK CFI 16d70 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 0 30 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 28 .cfa: sp 8 +
+STACK CFI INIT 3a25e 22 .cfa: sp 0 + .ra: lr
+STACK CFI 3a260 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 1e .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 40d98 30 .cfa: sp 0 + .ra: lr
+STACK CFI 40d9a .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 40dc2 .cfa: sp 8 +
+STACK CFI INIT 40dc8 58 .cfa: sp 0 + .ra: lr
+STACK CFI 40dca .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 40dce .cfa: sp 48 +
+STACK CFI 40e10 .cfa: sp 12 +
+STACK CFI INIT 40e20 34 .cfa: sp 0 + .ra: lr
+STACK CFI 40e22 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 3a480 34 .cfa: sp 0 + .ra: lr
+STACK CFI 3a482 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 16 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 173de 2c .cfa: sp 0 + .ra: lr
+STACK CFI 173e0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1740a 40 .cfa: sp 0 + .ra: lr
+STACK CFI 1740c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1744a 24 .cfa: sp 0 + .ra: lr
+STACK CFI 1744c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 98 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 4 .cfa: sp 80 +
+STACK CFI 96 .cfa: sp 20 +
+STACK CFI INIT 0 2e .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 2c .cfa: sp 16 +
+STACK CFI INIT 20330 98 .cfa: sp 0 + .ra: lr
+STACK CFI 20332 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 20334 .cfa: sp 80 +
+STACK CFI 203c6 .cfa: sp 20 +
+STACK CFI INIT 1746e b4 .cfa: sp 0 + .ra: lr
+STACK CFI 17470 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 17520 .cfa: sp 20 +
+STACK CFI INIT 40e54 98 .cfa: sp 0 + .ra: lr
+STACK CFI 40e58 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 40eda .cfa: sp 24 +
+STACK CFI INIT 175b2 98 .cfa: sp 0 + .ra: lr
+STACK CFI 175b6 .cfa: sp 40 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 17646 .cfa: sp 28 +
+STACK CFI INIT 176f0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 176f2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 1772c d8 .cfa: sp 0 + .ra: lr
+STACK CFI 17732 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 17800 .cfa: sp 24 +
+STACK CFI INIT 40eec 6c .cfa: sp 0 + .ra: lr
+STACK CFI 40ef0 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 40f46 .cfa: sp 0 + .ra: .ra r4: r4 r5: r5 r6: r6
+STACK CFI 40f4a .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 3a1a8 a .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 3a .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 40f58 a8 .cfa: sp 0 + .ra: lr
+STACK CFI 40f5c .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 40f6a .cfa: sp 80 +
+STACK CFI 40ff4 .cfa: sp 36 +
+STACK CFI INIT 41000 2ac .cfa: sp 0 + .ra: lr
+STACK CFI 41004 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 41010 .cfa: sp 120 +
+STACK CFI 41244 .cfa: sp 32 +
+STACK CFI INIT 0 bc .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 40 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI ac .cfa: sp 32 +
+STACK CFI b0 .cfa: sp 40 +
+STACK CFI INIT 0 94 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 90 .cfa: sp 24 +
+STACK CFI INIT 0 44 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 42 .cfa: sp 20 +
+STACK CFI INIT 0 44 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 42 .cfa: sp 20 +
+STACK CFI INIT 412ac 2c8 .cfa: sp 0 + .ra: lr
+STACK CFI 412b0 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 412bc .cfa: sp 480 +
+STACK CFI 41520 .cfa: sp 32 +
+STACK CFI INIT 41574 e0 .cfa: sp 0 + .ra: lr
+STACK CFI 41578 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 41580 .cfa: sp 224 +
+STACK CFI INIT 41654 e8 .cfa: sp 0 + .ra: lr
+STACK CFI 41658 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 41660 .cfa: sp 224 +
+STACK CFI 4171e .cfa: sp 16 +
+STACK CFI INIT 4173c 3bc .cfa: sp 0 + .ra: lr
+STACK CFI 41740 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 41744 .cfa: sp 240 +
+STACK CFI 41a6a .cfa: sp 24 +
+STACK CFI INIT 41af8 184 .cfa: sp 0 + .ra: lr
+STACK CFI 41afe .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 41b08 .cfa: sp 256 +
+STACK CFI INIT 41c7c c8 .cfa: sp 0 + .ra: lr
+STACK CFI 41c80 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 41c8c .cfa: sp 200 +
+STACK CFI 41d26 .cfa: sp 16 +
+STACK CFI INIT 0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 41d44 18 .cfa: sp 0 + .ra: lr
+STACK CFI 41d46 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 41d5c 12 .cfa: sp 0 + .ra: lr
+STACK CFI 41d5e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 41d44 18 .cfa: sp 0 + .ra: lr
+STACK CFI 41d46 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 41d5c 12 .cfa: sp 0 + .ra: lr
+STACK CFI 41d5e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 41d70 1a8 .cfa: sp 0 + .ra: lr
+STACK CFI 41d74 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 41d80 .cfa: sp 200 +
+STACK CFI 41ee8 .cfa: sp 36 +
+STACK CFI INIT 3fcf8 b4 .cfa: sp 0 + .ra: lr
+STACK CFI 3fcfc .cfa: sp 48 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 3fda8 .cfa: sp 32 +
+STACK CFI INIT 41f18 30 .cfa: sp 0 + .ra: lr
+STACK CFI 41f1a .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 41f1e .cfa: sp 40 +
+STACK CFI 41f46 .cfa: sp 20 +
+STACK CFI INIT 41f48 22 .cfa: sp 0 + .ra: lr
+STACK CFI 41f4a .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 41f68 .cfa: sp 12 +
+STACK CFI INIT 41f6c 98c .cfa: sp 0 + .ra: lr
+STACK CFI 41f70 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 41f76 .cfa: sp 528 +
+STACK CFI 42896 .cfa: sp 36 +
+STACK CFI INIT 0 dc .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI c4 .cfa: sp 36 +
+STACK CFI c8 .cfa: sp 48 +
+STACK CFI INIT 40910 84 .cfa: sp 0 + .ra: lr
+STACK CFI 40916 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 40920 .cfa: sp 64 +
+STACK CFI 4098c .cfa: sp 24 +
+STACK CFI INIT 428f8 16c .cfa: sp 0 + .ra: lr
+STACK CFI 428fc .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 4290c .cfa: sp 136 +
+STACK CFI 42a46 .cfa: sp 28 +
+STACK CFI INIT 15b4c a8 .cfa: sp 0 + .ra: lr
+STACK CFI 15b4e .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 15bc8 .cfa: sp 20 +
+STACK CFI INIT 16ac0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 16ac6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 42a64 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 42a6c 30 .cfa: sp 0 + .ra: lr
+STACK CFI 42a6e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 42a72 .cfa: sp 120 +
+STACK CFI 42a96 .cfa: sp 8 +
+STACK CFI INIT 42a9c 40 .cfa: sp 0 + .ra: lr
+STACK CFI 42a9e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 42aa2 .cfa: sp 120 +
+STACK CFI 42ad4 .cfa: sp 8 +
+STACK CFI INIT 0 1a .cfa: sp 0 + .ra: lr
+STACK CFI INIT 42adc e .cfa: sp 0 + .ra: lr
+STACK CFI INIT 42aea 1a .cfa: sp 0 + .ra: lr
+STACK CFI INIT 42b04 20 .cfa: sp 0 + .ra: lr
+STACK CFI 42b06 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 42b1c .cfa: sp 0 + .ra: .ra r4: r4
+STACK CFI 42b20 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16b0a 1e .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16db4 38 .cfa: sp 0 + .ra: lr
+STACK CFI 16db6 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 16de6 .cfa: sp 8 +
+STACK CFI INIT 3a25e 22 .cfa: sp 0 + .ra: lr
+STACK CFI 3a260 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 1e .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 0 16 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 3a480 34 .cfa: sp 0 + .ra: lr
+STACK CFI 3a482 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 38 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 dc .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 8 .cfa: sp 72 +
+STACK CFI da .cfa: sp 20 +
+STACK CFI INIT 176f0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 176f2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 0 e0 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI dc .cfa: sp 24 +
+STACK CFI INIT 3a1a8 a .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4e .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 179ec 1a .cfa: sp 0 + .ra: lr
+STACK CFI 179ee .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 17a02 .cfa: sp 0 + .ra: .ra r3: r3 r4: r4 r5: r5
+STACK CFI INIT 42b24 6c .cfa: sp 0 + .ra: lr
+STACK CFI 42b26 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 42b30 .cfa: sp 0 + .ra: .ra r4: r4 r5: r5 r6: r6
+STACK CFI 42b38 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 42b86 .cfa: sp 0 + .ra: .ra r4: r4 r5: r5 r6: r6
+STACK CFI INIT 3a3b8 12 .cfa: sp 0 + .ra: lr
+STACK CFI 3a3ba .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 42b90 78 .cfa: sp 0 + .ra: lr
+STACK CFI 42b92 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 42b98 .cfa: sp 4144 +
+STACK CFI 42b9e .cfa: sp 4152 +
+STACK CFI 42bfe .cfa: sp 16 +
+STACK CFI INIT 42c08 58 .cfa: sp 0 + .ra: lr
+STACK CFI 42c0a .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 42c0e .cfa: sp 48 +
+STACK CFI 42c58 .cfa: sp 16 +
+STACK CFI INIT 42c60 64 .cfa: sp 0 + .ra: lr
+STACK CFI 42c62 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 42c66 .cfa: sp 64 +
+STACK CFI 42cbc .cfa: sp 20 +
+STACK CFI INIT 42cc4 14c .cfa: sp 0 + .ra: lr
+STACK CFI 42cc8 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 42cd4 .cfa: sp 120 +
+STACK CFI 42e08 .cfa: sp 36 +
+STACK CFI INIT 42e10 90 .cfa: sp 0 + .ra: lr
+STACK CFI 42e14 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 42e18 .cfa: sp 80 +
+STACK CFI 42e92 .cfa: sp 24 +
+STACK CFI INIT 42ea0 70 .cfa: sp 0 + .ra: lr
+STACK CFI 42ea2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 42ea6 .cfa: sp 80 +
+STACK CFI 42f0a .cfa: sp 20 +
+STACK CFI INIT 0 ca .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI c6 .cfa: sp 24 +
+STACK CFI INIT 0 a0 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 10 .cfa: sp 96 +
+STACK CFI 94 .cfa: sp 32 +
+STACK CFI INIT 42f10 160 .cfa: sp 0 + .ra: lr
+STACK CFI 42f14 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 42f18 .cfa: sp 200 +
+STACK CFI 4305a .cfa: sp 36 +
+STACK CFI INIT 43070 74 .cfa: sp 0 + .ra: lr
+STACK CFI 43074 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 43080 .cfa: sp 72 +
+STACK CFI 430d8 .cfa: sp 32 +
+STACK CFI INIT 16ac0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 16ac6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15dc8 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 430e4 18 .cfa: sp 0 + .ra: lr
+STACK CFI 430e6 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 430fc c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 43108 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 43114 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 43120 20 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 20 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 12 .cfa: sp 0 + .ra: .ra r4: r4
+STACK CFI 18 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 43140 b8 .cfa: sp 0 + .ra: lr
+STACK CFI 43142 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 43184 .cfa: sp 0 + .ra: .ra r3: r3 r4: r4 r5: r5
+STACK CFI 4318a .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 43196 .cfa: sp 0 + .ra: .ra r3: r3 r4: r4 r5: r5
+STACK CFI 4319c .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 431f8 5a .cfa: sp 0 + .ra: lr
+STACK CFI 431fa .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 43250 .cfa: sp 20 +
+STACK CFI INIT 43252 60 .cfa: sp 0 + .ra: lr
+STACK CFI 43258 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI INIT 432b2 34 .cfa: sp 0 + .ra: lr
+STACK CFI 432b4 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 432c8 .cfa: sp 0 + .ra: .ra r3: r3 r4: r4 r5: r5
+STACK CFI 432cc .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 0 14 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 16 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 10 .cfa: sp 0 + .ra: .ra r4: r4
+STACK CFI 14 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 432e6 16 .cfa: sp 0 + .ra: lr
+STACK CFI 432e8 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 432f6 .cfa: sp 0 + .ra: .ra r4: r4
+STACK CFI 432fa .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 432fc 16 .cfa: sp 0 + .ra: lr
+STACK CFI 432fe .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 4330e .cfa: sp 0 + .ra: .ra r4: r4
+STACK CFI INIT 43314 18 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16aec 1e .cfa: sp 0 + .ra: lr
+STACK CFI 16aee .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16b0a 1e .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16d68 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16d6e 1c .cfa: sp 0 + .ra: lr
+STACK CFI 16d70 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 173de 2c .cfa: sp 0 + .ra: lr
+STACK CFI 173e0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1744a 24 .cfa: sp 0 + .ra: lr
+STACK CFI 1744c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 4332c 1e .cfa: sp 0 + .ra: lr
+STACK CFI 4332e .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 43348 .cfa: sp 12 +
+STACK CFI INIT 4334a 30 .cfa: sp 0 + .ra: lr
+STACK CFI 4334c .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 43378 .cfa: sp 8 +
+STACK CFI INIT 0 50 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 44 .cfa: sp 12 +
+STACK CFI INIT 16db4 38 .cfa: sp 0 + .ra: lr
+STACK CFI 16db6 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 16de6 .cfa: sp 8 +
+STACK CFI INIT 3a25e 22 .cfa: sp 0 + .ra: lr
+STACK CFI 3a260 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 4337a 52 .cfa: sp 0 + .ra: lr
+STACK CFI 4337e .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 433cc 68 .cfa: sp 0 + .ra: lr
+STACK CFI 433ce .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 14 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 43434 14 .cfa: sp 0 + .ra: lr
+STACK CFI 43436 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 386b4 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 1740a 40 .cfa: sp 0 + .ra: lr
+STACK CFI 1740c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 98 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 4 .cfa: sp 80 +
+STACK CFI 96 .cfa: sp 20 +
+STACK CFI INIT 0 2c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 2a .cfa: sp 16 +
+STACK CFI INIT 0 ae .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI ac .cfa: sp 20 +
+STACK CFI INIT 43448 1c .cfa: sp 0 + .ra: lr
+STACK CFI 4344a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 68 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 5a .cfa: sp 20 +
+STACK CFI INIT 386ba 20 .cfa: sp 0 + .ra: lr
+STACK CFI 386bc .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 386ca .cfa: sp 0 + .ra: .ra r4: r4 r5: r5
+STACK CFI 386d0 .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 43464 46 .cfa: sp 0 + .ra: lr
+STACK CFI 43466 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 434a8 .cfa: sp 8 +
+STACK CFI INIT 434ac 30 .cfa: sp 0 + .ra: lr
+STACK CFI 434ae .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 b6 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI b2 .cfa: sp 36 +
+STACK CFI INIT 0 40 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI c .cfa: sp 48 +
+STACK CFI 38 .cfa: sp 16 +
+STACK CFI INIT 434dc 17c .cfa: sp 0 + .ra: lr
+STACK CFI 434e0 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 434ee .cfa: sp 72 +
+STACK CFI 4361e .cfa: sp 32 +
+STACK CFI INIT 176f0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 176f2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 0 e0 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI dc .cfa: sp 24 +
+STACK CFI INIT 3a1a8 a .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 ca .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI c6 .cfa: sp 24 +
+STACK CFI INIT 43658 e0 .cfa: sp 0 + .ra: lr
+STACK CFI 4365c .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 43660 .cfa: sp 144 +
+STACK CFI 43722 .cfa: sp 32 +
+STACK CFI INIT 43738 b0 .cfa: sp 0 + .ra: lr
+STACK CFI 4373c .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 43748 .cfa: sp 64 +
+STACK CFI 437c2 .cfa: sp 28 +
+STACK CFI INIT 437e8 140 .cfa: sp 0 + .ra: lr
+STACK CFI 437ec .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 437f0 .cfa: sp 88 +
+STACK CFI 4390a .cfa: sp 36 +
+STACK CFI INIT 0 18 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 43928 18 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 43940 c8 .cfa: sp 0 + .ra: lr
+STACK CFI 43946 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 4394c .cfa: sp 112 +
+STACK CFI 439f8 .cfa: sp 24 +
+STACK CFI INIT 386da a6 .cfa: sp 0 + .ra: lr
+STACK CFI 386dc .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 3877e .cfa: sp 16 +
+STACK CFI INIT 43a08 a4 .cfa: sp 0 + .ra: lr
+STACK CFI 43a0c .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 43a16 .cfa: sp 56 +
+STACK CFI 43a9c .cfa: sp 24 +
+STACK CFI INIT 43aac 54 .cfa: sp 0 + .ra: lr
+STACK CFI 43aae .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 43ab8 .cfa: sp 48 +
+STACK CFI 43af4 .cfa: sp 16 +
+STACK CFI INIT 43b00 d0 .cfa: sp 0 + .ra: lr
+STACK CFI 43b04 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 43b0e .cfa: sp 88 +
+STACK CFI 43bbc .cfa: sp 24 +
+STACK CFI INIT 43bd0 44 .cfa: sp 0 + .ra: lr
+STACK CFI 43bd2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 43bdc .cfa: sp 48 +
+STACK CFI 43c0e .cfa: sp 16 +
+STACK CFI INIT 0 3bc .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI e .cfa: sp 120 +
+STACK CFI 34a .cfa: sp 36 +
+STACK CFI INIT 0 64 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 15bf4 24 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15c18 2c .cfa: sp 0 + .ra: lr
+STACK CFI 15c1a .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 15c3c .cfa: sp 12 +
+STACK CFI INIT 43c14 24 .cfa: sp 0 + .ra: lr
+STACK CFI 43c16 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 43c38 24 .cfa: sp 0 + .ra: lr
+STACK CFI 43c3a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 43c5c 2a .cfa: sp 0 + .ra: lr
+STACK CFI 43c60 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1e00e 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 43c88 d0 .cfa: sp 0 + .ra: lr
+STACK CFI 43c8a .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 43c8e .cfa: sp 40 +
+STACK CFI 43d32 .cfa: sp 20 +
+STACK CFI INIT 43d58 214 .cfa: sp 0 + .ra: lr
+STACK CFI 43d5c .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 43d62 .cfa: sp 64 +
+STACK CFI 43f2e .cfa: sp 24 +
+STACK CFI INIT 43f6c 50 .cfa: sp 0 + .ra: lr
+STACK CFI 43f6e .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 43fbc 7c .cfa: sp 0 + .ra: lr
+STACK CFI 43fbe .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 4401e .cfa: sp 0 + .ra: .ra r4: r4 r5: r5 r6: r6
+STACK CFI 44028 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 44038 268 .cfa: sp 0 + .ra: lr
+STACK CFI 4403c .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 44040 .cfa: sp 72 +
+STACK CFI 4427c .cfa: sp 28 +
+STACK CFI INIT 442a0 a0 .cfa: sp 0 + .ra: lr
+STACK CFI 442a6 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 442b6 .cfa: sp 912 +
+STACK CFI 44336 .cfa: sp 24 +
+STACK CFI INIT 44340 22 .cfa: sp 0 + .ra: lr
+STACK CFI 44342 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 4435c .cfa: sp 0 + .ra: .ra r3: r3 r4: r4 r5: r5 r6: r6 r7: r7
+STACK CFI 44360 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 0 54 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI a .cfa: sp 904 +
+STACK CFI 4a .cfa: sp 24 +
+STACK CFI INIT 44364 134 .cfa: sp 0 + .ra: lr
+STACK CFI 44368 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 4436e .cfa: sp 48 +
+STACK CFI 44474 .cfa: sp 28 +
+STACK CFI INIT 44498 74 .cfa: sp 0 + .ra: lr
+STACK CFI 4449a .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 44502 .cfa: sp 16 +
+STACK CFI INIT 4450c 4e .cfa: sp 0 + .ra: lr
+STACK CFI 4450e .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 44526 .cfa: sp 16 +
+STACK CFI 4452a .cfa: sp 0 + .ra: .ra r4: r4 r5: r5 r6: r6
+STACK CFI 4452e .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 44558 .cfa: sp 16 +
+STACK CFI INIT 4455a 1e .cfa: sp 0 + .ra: lr
+STACK CFI 4455c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 44578 c0 .cfa: sp 0 + .ra: lr
+STACK CFI 4457c .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 44586 .cfa: sp 912 +
+STACK CFI 44632 .cfa: sp 20 +
+STACK CFI INIT 44638 a4 .cfa: sp 0 + .ra: lr
+STACK CFI 4463c .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 44644 .cfa: sp 584 +
+STACK CFI 446d4 .cfa: sp 24 +
+STACK CFI INIT 446dc 50 .cfa: sp 0 + .ra: lr
+STACK CFI 446de .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 4472a .cfa: sp 8 +
+STACK CFI INIT 4472c 34 .cfa: sp 0 + .ra: lr
+STACK CFI 44730 .cfa: sp 8 +
+STACK CFI 44758 .cfa: sp 0 +
+STACK CFI 4475c .cfa: sp 8 +
+STACK CFI 4475e .cfa: sp 0 +
+STACK CFI INIT 16b0a 1e .cfa: sp 0 + .ra: lr
+STACK CFI INIT 44760 184 .cfa: sp 0 + .ra: lr
+STACK CFI 44762 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 44768 .cfa: sp 40 +
+STACK CFI 448be .cfa: sp 16 +
+STACK CFI INIT 0 30 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 28 .cfa: sp 8 +
+STACK CFI INIT 0 2e .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 448e4 98 .cfa: sp 0 + .ra: lr
+STACK CFI 448e8 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 448f8 .cfa: sp 120 +
+STACK CFI 44972 .cfa: sp 36 +
+STACK CFI INIT 0 88 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 10 .cfa: sp 224 +
+STACK CFI 80 .cfa: sp 28 +
+STACK CFI INIT 1e00e 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16ac0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 16ac6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16b0a 1e .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 30 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 28 .cfa: sp 8 +
+STACK CFI INIT 4497c 50 .cfa: sp 0 + .ra: lr
+STACK CFI 4497e .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 176f0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 176f2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 1772c d8 .cfa: sp 0 + .ra: lr
+STACK CFI 17732 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 17800 .cfa: sp 24 +
+STACK CFI INIT 0 4e .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 0 c2 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI be .cfa: sp 24 +
+STACK CFI INIT 449cc b0 .cfa: sp 0 + .ra: lr
+STACK CFI 449d0 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 449d4 .cfa: sp 168 +
+STACK CFI 44a6a .cfa: sp 28 +
+STACK CFI INIT 44a7c 48 .cfa: sp 0 + .ra: lr
+STACK CFI 44a7e .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 44ac4 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 44ad4 a .cfa: sp 0 + .ra: lr
+STACK CFI INIT 44ae0 30 .cfa: sp 0 + .ra: lr
+STACK CFI 44ae2 .cfa: sp 16 + .ra: .cfa -4 + ^
+STACK CFI 44b06 .cfa: sp 4 +
+STACK CFI INIT 44b10 4c .cfa: sp 0 + .ra: lr
+STACK CFI 44b12 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 44b50 .cfa: sp 16 +
+STACK CFI INIT 44b5c 2c .cfa: sp 0 + .ra: lr
+STACK CFI 44b5e .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 44b78 .cfa: sp 0 + .ra: .ra r3: r3 r4: r4 r5: r5
+STACK CFI INIT 44b88 16c .cfa: sp 0 + .ra: lr
+STACK CFI 44b8c .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 44b92 .cfa: sp 584 +
+STACK CFI 44cd6 .cfa: sp 28 +
+STACK CFI INIT 44cf4 444 .cfa: sp 0 + .ra: lr
+STACK CFI 44cf8 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 44d06 .cfa: sp 1016 +
+STACK CFI 4512c .cfa: sp 36 +
+STACK CFI INIT 39b2e 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 39b2e 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 39b2e 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 45138 5a .cfa: sp 0 + .ra: lr
+STACK CFI 4513c .cfa: sp 32 + .ra: .cfa -4 + ^ r3: .cfa -32 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI INIT 45194 38 .cfa: sp 0 + .ra: lr
+STACK CFI 45196 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 451c4 .cfa: sp 12 +
+STACK CFI INIT 451cc 22 .cfa: sp 0 + .ra: lr
+STACK CFI 451ce .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 451e6 .cfa: sp 0 + .ra: .ra r3: r3 r4: r4 r5: r5
+STACK CFI 451ec .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 451f0 40 .cfa: sp 0 + .ra: lr
+STACK CFI 451f8 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 0 20 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 22e5c 12 .cfa: sp 0 + .ra: lr
+STACK CFI 22e5e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 328fc a2 .cfa: sp 0 + .ra: lr
+STACK CFI 32900 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 45230 50 .cfa: sp 0 + .ra: lr
+STACK CFI 45232 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 45280 d0 .cfa: sp 0 + .ra: lr
+STACK CFI 45284 .cfa: sp 48 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 4533e .cfa: sp 36 +
+STACK CFI INIT 45350 1f4 .cfa: sp 0 + .ra: lr
+STACK CFI 45354 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 4536a .cfa: sp 304 +
+STACK CFI 45520 .cfa: sp 36 +
+STACK CFI INIT 43c38 24 .cfa: sp 0 + .ra: lr
+STACK CFI 43c3a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 45544 114 .cfa: sp 0 + .ra: lr
+STACK CFI 45548 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 4554c .cfa: sp 344 +
+STACK CFI 45644 .cfa: sp 36 +
+STACK CFI INIT 45658 c4 .cfa: sp 0 + .ra: lr
+STACK CFI 4565c .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 45662 .cfa: sp 680 +
+STACK CFI 4570e .cfa: sp 28 +
+STACK CFI INIT 2c90c 18 .cfa: sp 0 + .ra: lr
+STACK CFI 2c910 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16ac0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 16ac6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 328fc a2 .cfa: sp 0 + .ra: lr
+STACK CFI 32900 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 20f46 12 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 4571c 40 .cfa: sp 0 + .ra: lr
+STACK CFI 4571e .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 4575c 80 .cfa: sp 0 + .ra: lr
+STACK CFI 45760 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 457b6 .cfa: sp 0 + .ra: .ra r4: r4 r5: r5 r6: r6 r7: r7 r8: r8
+STACK CFI 457ba .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 457d0 .cfa: sp 0 + .ra: .ra r4: r4 r5: r5 r6: r6 r7: r7 r8: r8
+STACK CFI 457d4 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 457dc b8 .cfa: sp 0 + .ra: lr
+STACK CFI 457e0 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 457e4 .cfa: sp 296 +
+STACK CFI 45886 .cfa: sp 24 +
+STACK CFI INIT 45894 24 .cfa: sp 0 + .ra: lr
+STACK CFI 45896 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 458b0 .cfa: sp 0 + .ra: .ra r4: r4
+STACK CFI 458b4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 458b8 2a .cfa: sp 0 + .ra: lr
+STACK CFI 458bc .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 458e4 38 .cfa: sp 0 + .ra: lr
+STACK CFI 458e6 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 4591c 34 .cfa: sp 0 + .ra: lr
+STACK CFI 4591e .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 45944 .cfa: sp 0 + .ra: .ra r3: r3 r4: r4 r5: r5
+STACK CFI 45948 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 45950 130 .cfa: sp 0 + .ra: lr
+STACK CFI 45954 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 4595e .cfa: sp 336 +
+STACK CFI 45a70 .cfa: sp 36 +
+STACK CFI INIT 45a80 94 .cfa: sp 0 + .ra: lr
+STACK CFI 45a84 .cfa: sp 32 + .ra: .cfa -4 + ^ r3: .cfa -32 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI INIT 3fcf8 b4 .cfa: sp 0 + .ra: lr
+STACK CFI 3fcfc .cfa: sp 48 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 3fda8 .cfa: sp 32 +
+STACK CFI INIT 45b14 98 .cfa: sp 0 + .ra: lr
+STACK CFI 45b16 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 45ba2 .cfa: sp 16 +
+STACK CFI INIT 3fcf8 b4 .cfa: sp 0 + .ra: lr
+STACK CFI 3fcfc .cfa: sp 48 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 3fda8 .cfa: sp 32 +
+STACK CFI INIT 45bac 374 .cfa: sp 0 + .ra: lr
+STACK CFI 45bb0 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 45bb4 .cfa: sp 368 +
+STACK CFI 45f0a .cfa: sp 36 +
+STACK CFI INIT 15dc8 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 45f20 24 .cfa: sp 0 + .ra: lr
+STACK CFI 45f22 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 45f44 52 .cfa: sp 0 + .ra: lr
+STACK CFI 45f48 .cfa: sp 48 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 45f92 .cfa: sp 36 +
+STACK CFI INIT 43c38 24 .cfa: sp 0 + .ra: lr
+STACK CFI 43c3a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 24cb0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 24cb2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 45f98 78 .cfa: sp 0 + .ra: lr
+STACK CFI 45f9c .cfa: sp 40 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 46008 .cfa: sp 32 +
+STACK CFI INIT 46010 42 .cfa: sp 0 + .ra: lr
+STACK CFI 46012 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 328fc a2 .cfa: sp 0 + .ra: lr
+STACK CFI 32900 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 46054 1b0 .cfa: sp 0 + .ra: lr
+STACK CFI 4605a .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 46064 .cfa: sp 320 +
+STACK CFI 461f0 .cfa: sp 36 +
+STACK CFI INIT 46204 20 .cfa: sp 0 + .ra: lr
+STACK CFI 46206 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 46224 a0 .cfa: sp 0 + .ra: lr
+STACK CFI 46228 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI INIT 462c4 164 .cfa: sp 0 + .ra: lr
+STACK CFI 462c8 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 462cc .cfa: sp 336 +
+STACK CFI 46412 .cfa: sp 36 +
+STACK CFI INIT 46428 be .cfa: sp 0 + .ra: lr
+STACK CFI 4642c .cfa: sp 48 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 464e2 .cfa: sp 32 +
+STACK CFI INIT 464e6 fe .cfa: sp 0 + .ra: lr
+STACK CFI 464ea .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 464f2 .cfa: sp 48 +
+STACK CFI 465e0 .cfa: sp 28 +
+STACK CFI INIT 465e4 24 .cfa: sp 0 + .ra: lr
+STACK CFI 465e6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 43c38 24 .cfa: sp 0 + .ra: lr
+STACK CFI 43c3a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 46608 e4 .cfa: sp 0 + .ra: lr
+STACK CFI 4660c .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 46612 .cfa: sp 984 +
+STACK CFI 466e0 .cfa: sp 36 +
+STACK CFI INIT 466ec 36 .cfa: sp 0 + .ra: lr
+STACK CFI 466ee .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 46718 .cfa: sp 0 + .ra: .ra r4: r4
+STACK CFI 4671e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 46722 2a .cfa: sp 0 + .ra: lr
+STACK CFI 46724 .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 4674c 36 .cfa: sp 0 + .ra: lr
+STACK CFI 46750 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 46782 28 .cfa: sp 0 + .ra: lr
+STACK CFI 46786 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 467ac 128 .cfa: sp 0 + .ra: lr
+STACK CFI 467b0 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 467c0 .cfa: sp 880 +
+STACK CFI 468c6 .cfa: sp 36 +
+STACK CFI INIT 468d4 26 .cfa: sp 0 + .ra: lr
+STACK CFI 468d6 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 328fc a2 .cfa: sp 0 + .ra: lr
+STACK CFI 32900 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 13a40 e0 .cfa: sp 0 + .ra: lr
+STACK CFI 13a44 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 13a48 .cfa: sp 56 +
+STACK CFI 13b1c .cfa: sp 32 +
+STACK CFI INIT 13b20 40 .cfa: sp 0 + .ra: lr
+STACK CFI 13b22 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 13b32 .cfa: sp 288 +
+STACK CFI 13b5a .cfa: sp 20 +
+STACK CFI INIT 0 f0 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI a .cfa: sp 568 +
+STACK CFI e6 .cfa: sp 36 +
+STACK CFI INIT 0 100 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 40 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r3: .cfa -40 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI INIT 468fc 340 .cfa: sp 0 + .ra: lr
+STACK CFI 46900 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 4690a .cfa: sp 616 +
+STACK CFI 46c1c .cfa: sp 36 +
+STACK CFI INIT 46c3c 12 .cfa: sp 0 + .ra: lr
+STACK CFI 46c40 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 46c4a .cfa: sp 0 + .ra: .ra r4: r4
+STACK CFI INIT 46c4e 1e .cfa: sp 0 + .ra: lr
+STACK CFI 46c50 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 46c6c 14 .cfa: sp 0 + .ra: lr
+STACK CFI 46c6e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 46c7c .cfa: sp 0 + .ra: .ra r4: r4
+STACK CFI INIT 46c80 1a .cfa: sp 0 + .ra: lr
+STACK CFI 46c82 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 46c9c 5c .cfa: sp 0 + .ra: lr
+STACK CFI 46ca0 .cfa: sp 32 + .ra: .cfa -4 + ^ r3: .cfa -32 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI INIT 25018 22 .cfa: sp 0 + .ra: lr
+STACK CFI 2501e .cfa: sp 16 +
+STACK CFI 25038 .cfa: sp 0 +
+STACK CFI INIT 2503a 1a .cfa: sp 0 + .ra: lr
+STACK CFI 2503c .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 0 22 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 16 +
+STACK CFI 20 .cfa: sp 0 +
+STACK CFI INIT 25054 1c .cfa: sp 0 + .ra: lr
+STACK CFI 25056 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 46cf8 ac .cfa: sp 0 + .ra: lr
+STACK CFI 46cfc .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI INIT 46da4 32 .cfa: sp 0 + .ra: lr
+STACK CFI 46da6 .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 46dac .cfa: sp 32 +
+STACK CFI 46dd4 .cfa: sp 12 +
+STACK CFI INIT 46dd6 c2 .cfa: sp 0 + .ra: lr
+STACK CFI 46dda .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 46de2 .cfa: sp 72 +
+STACK CFI 46e94 .cfa: sp 28 +
+STACK CFI INIT 46e98 388 .cfa: sp 0 + .ra: lr
+STACK CFI 46e9c .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 46eb0 .cfa: sp 816 +
+STACK CFI 47216 .cfa: sp 36 +
+STACK CFI INIT 47220 8a .cfa: sp 0 + .ra: lr
+STACK CFI 47224 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 4722c .cfa: sp 80 +
+STACK CFI 472a6 .cfa: sp 28 +
+STACK CFI INIT 472aa b0 .cfa: sp 0 + .ra: lr
+STACK CFI 472ae .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 472b4 .cfa: sp 48 +
+STACK CFI 4733a .cfa: sp 28 +
+STACK CFI 4733e .cfa: sp 0 + .ra: .ra r4: r4 r5: r5 r6: r6 r7: r7 r8: r8 r9: r9
+STACK CFI 47342 .cfa: sp 48 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 47356 .cfa: sp 28 +
+STACK CFI INIT 4735c ac .cfa: sp 0 + .ra: lr
+STACK CFI 47360 .cfa: sp 48 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 473fe .cfa: sp 32 +
+STACK CFI INIT 47408 800 .cfa: sp 0 + .ra: lr
+STACK CFI 4740c .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 4741a .cfa: sp 712 +
+STACK CFI 47c04 .cfa: sp 36 +
+STACK CFI INIT 47c08 a8 .cfa: sp 0 + .ra: lr
+STACK CFI 47c0c .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 47c0e .cfa: sp 184 +
+STACK CFI 47ca6 .cfa: sp 24 +
+STACK CFI INIT 47cb0 52 .cfa: sp 0 + .ra: lr
+STACK CFI 47cb4 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 47cb6 .cfa: sp 72 +
+STACK CFI 47cfe .cfa: sp 28 +
+STACK CFI INIT 47d02 52 .cfa: sp 0 + .ra: lr
+STACK CFI 47d06 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 47d10 .cfa: sp 72 +
+STACK CFI 47d50 .cfa: sp 28 +
+STACK CFI INIT 47d54 20 .cfa: sp 0 + .ra: lr
+STACK CFI 47d56 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 47d72 .cfa: sp 8 +
+STACK CFI INIT 0 26 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 8 .cfa: sp 32 +
+STACK CFI 24 .cfa: sp 12 +
+STACK CFI INIT 47d74 26 .cfa: sp 0 + .ra: lr
+STACK CFI 47d76 .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 47d7c .cfa: sp 32 +
+STACK CFI 47d98 .cfa: sp 12 +
+STACK CFI INIT 47d9a 26 .cfa: sp 0 + .ra: lr
+STACK CFI 47d9c .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 47dbe .cfa: sp 16 +
+STACK CFI INIT 47dc0 a4 .cfa: sp 0 + .ra: lr
+STACK CFI 47dc4 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 47dce .cfa: sp 216 +
+STACK CFI 47e5c .cfa: sp 28 +
+STACK CFI INIT 0 5c .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 10 .cfa: sp 96 +
+STACK CFI 58 .cfa: sp 24 +
+STACK CFI INIT 47e64 12 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 47e76 34 .cfa: sp 0 + .ra: lr
+STACK CFI 47e78 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 47eaa 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 47eb2 4a .cfa: sp 0 + .ra: lr
+STACK CFI 47eb4 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 47efc 10 .cfa: sp 0 + .ra: lr
+STACK CFI 47efe .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 47f0c 44 .cfa: sp 0 + .ra: lr
+STACK CFI 47f0e .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 47f50 6e .cfa: sp 0 + .ra: lr
+STACK CFI 47f54 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 47fbe 16 .cfa: sp 0 + .ra: lr
+STACK CFI 47fc0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 47fd4 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 52 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 8 .cfa: sp 48 +
+STACK CFI 50 .cfa: sp 20 +
+STACK CFI INIT 46c6c 14 .cfa: sp 0 + .ra: lr
+STACK CFI 46c6e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 46c7c .cfa: sp 0 + .ra: .ra r4: r4
+STACK CFI INIT 0 4e .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 40 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 4a .cfa: sp 28 +
+STACK CFI INIT 47fda 4c .cfa: sp 0 + .ra: lr
+STACK CFI 47fde .cfa: sp 40 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 48022 .cfa: sp 28 +
+STACK CFI INIT 0 aa .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 16 .cfa: sp 72 +
+STACK CFI a6 .cfa: sp 32 +
+STACK CFI INIT 48026 aa .cfa: sp 0 + .ra: lr
+STACK CFI 4802a .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 4803c .cfa: sp 72 +
+STACK CFI 480cc .cfa: sp 32 +
+STACK CFI INIT 36984 18 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 3699c 26 .cfa: sp 0 + .ra: lr
+STACK CFI 3699e .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 0 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 480d0 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 480d8 e .cfa: sp 0 + .ra: lr
+STACK CFI 480da .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 480e6 c .cfa: sp 0 + .ra: lr
+STACK CFI 480e8 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 480f2 26 .cfa: sp 0 + .ra: lr
+STACK CFI 480f4 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 48118 2c .cfa: sp 0 + .ra: lr
+STACK CFI 4811a .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 48144 42 .cfa: sp 0 + .ra: lr
+STACK CFI 48148 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 48184 .cfa: sp 16 +
+STACK CFI INIT 0 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 48186 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 4818e a .cfa: sp 0 + .ra: lr
+STACK CFI INIT 48198 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 481a0 30 .cfa: sp 0 + .ra: lr
+STACK CFI 481a2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 481d0 20 .cfa: sp 0 + .ra: lr
+STACK CFI 481d2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 481ea .cfa: sp 0 + .ra: .ra r3: r3 r4: r4 r5: r5
+STACK CFI 481ee .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 481f0 c .cfa: sp 0 + .ra: lr
+STACK CFI 481f2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 481fc 28 .cfa: sp 0 + .ra: lr
+STACK CFI 481fe .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 48224 5e .cfa: sp 0 + .ra: lr
+STACK CFI 48228 .cfa: sp 40 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r3: .cfa -40 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI INIT 48282 34 .cfa: sp 0 + .ra: lr
+STACK CFI 48286 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 482b4 .cfa: sp 16 +
+STACK CFI INIT 482b8 18 .cfa: sp 0 + .ra: lr
+STACK CFI 482bc .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 482d0 104 .cfa: sp 0 + .ra: lr
+STACK CFI 482d4 .cfa: sp 48 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 483d0 .cfa: sp 36 +
+STACK CFI INIT 483d4 8a .cfa: sp 0 + .ra: lr
+STACK CFI 483d8 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 48460 5c .cfa: sp 0 + .ra: lr
+STACK CFI 48462 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 484b6 .cfa: sp 16 +
+STACK CFI INIT 484bc 138 .cfa: sp 0 + .ra: lr
+STACK CFI 484c0 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 484c2 .cfa: sp 48 +
+STACK CFI 485e6 .cfa: sp 24 +
+STACK CFI INIT 485f4 2a .cfa: sp 0 + .ra: lr
+STACK CFI 485f8 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 4861c .cfa: sp 12 +
+STACK CFI INIT 48620 b4 .cfa: sp 0 + .ra: lr
+STACK CFI 48624 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 48628 .cfa: sp 48 +
+STACK CFI 486cc .cfa: sp 24 +
+STACK CFI INIT 486d4 10 .cfa: sp 0 + .ra: lr
+STACK CFI 486d6 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI 486e0 .cfa: sp 0 + .ra: .ra r3: r3
+STACK CFI INIT 486e4 54 .cfa: sp 0 + .ra: lr
+STACK CFI 486e6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 48738 60 .cfa: sp 0 + .ra: lr
+STACK CFI 4873a .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 48790 .cfa: sp 16 +
+STACK CFI INIT 48798 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 487a8 22 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 487ca 26 .cfa: sp 0 + .ra: lr
+STACK CFI 487cc .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 487f0 32 .cfa: sp 0 + .ra: lr
+STACK CFI 487f2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 48822 24 .cfa: sp 0 + .ra: lr
+STACK CFI 48828 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 48846 36 .cfa: sp 0 + .ra: lr
+STACK CFI 48848 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 4887c 1a .cfa: sp 0 + .ra: lr
+STACK CFI INIT 48896 18 .cfa: sp 0 + .ra: lr
+STACK CFI 4889a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 488ae 1a .cfa: sp 0 + .ra: lr
+STACK CFI 488b2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 488c8 40 .cfa: sp 0 + .ra: lr
+STACK CFI 488ca .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 48908 22 .cfa: sp 0 + .ra: lr
+STACK CFI 4890a .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 4892a e .cfa: sp 0 + .ra: lr
+STACK CFI INIT 48938 22 .cfa: sp 0 + .ra: lr
+STACK CFI 4893a .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 4895a 20 .cfa: sp 0 + .ra: lr
+STACK CFI 4895c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 4897c 48 .cfa: sp 0 + .ra: lr
+STACK CFI 4897e .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 489ba .cfa: sp 8 +
+STACK CFI INIT 43c38 24 .cfa: sp 0 + .ra: lr
+STACK CFI 43c3a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 48186 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 489c4 2c .cfa: sp 0 + .ra: lr
+STACK CFI 489c6 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 489f0 c .cfa: sp 0 + .ra: lr
+STACK CFI 489f2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 489fc e4 .cfa: sp 0 + .ra: lr
+STACK CFI 48a00 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 48a04 .cfa: sp 152 +
+STACK CFI 48ad8 .cfa: sp 36 +
+STACK CFI INIT 48ae0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 48ae4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 48af2 32 .cfa: sp 0 + .ra: lr
+STACK CFI 48af4 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 48b24 48 .cfa: sp 0 + .ra: lr
+STACK CFI 48b28 .cfa: sp 48 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 48b68 .cfa: sp 32 +
+STACK CFI INIT 0 30 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 4 .cfa: sp 40 +
+STACK CFI 2e .cfa: sp 12 +
+STACK CFI INIT 0 5c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 56 .cfa: sp 16 +
+STACK CFI INIT 0 98 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI a .cfa: sp 48 +
+STACK CFI 90 .cfa: sp 20 +
+STACK CFI INIT 0 be .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI ba .cfa: sp 32 +
+STACK CFI INIT 0 f4 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI e8 .cfa: sp 32 +
+STACK CFI INIT 0 2a .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 24 .cfa: sp 0 + .ra: .ra r4: r4 r5: r5 r6: r6 r7: r7
+STACK CFI 28 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 0 68 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 6 .cfa: sp 48 +
+STACK CFI 66 .cfa: sp 20 +
+STACK CFI INIT 0 6a .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 6 .cfa: sp 48 +
+STACK CFI 68 .cfa: sp 20 +
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 43c38 24 .cfa: sp 0 + .ra: lr
+STACK CFI 43c3a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 48ba8 f8 .cfa: sp 0 + .ra: lr
+STACK CFI 48baa .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 48bae .cfa: sp 96 +
+STACK CFI 48c98 .cfa: sp 20 +
+STACK CFI INIT 48ca0 20 .cfa: sp 0 + .ra: lr
+STACK CFI 48ca2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 48cc0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 48cc4 24 .cfa: sp 0 + .ra: lr
+STACK CFI 48cc8 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 48ce8 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 48cec 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 48cf0 94 .cfa: sp 0 + .ra: lr
+STACK CFI 48cf2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 48d78 .cfa: sp 0 + .ra: .ra r4: r4
+STACK CFI INIT 48d84 7a .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 90 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI INIT 0 72 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI INIT 0 ec .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI INIT 0 28 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 18 .cfa: sp 0 + .ra: .ra r4: r4
+STACK CFI 1e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 48e00 118 .cfa: sp 0 + .ra: lr
+STACK CFI 48e04 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 48e0e .cfa: sp 56 +
+STACK CFI 48f08 .cfa: sp 36 +
+STACK CFI INIT 0 cc .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI INIT 0 fc .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 10 .cfa: sp 56 +
+STACK CFI ec .cfa: sp 36 +
+STACK CFI INIT 48f18 20 .cfa: sp 0 + .ra: lr
+STACK CFI 48f1a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 48f38 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 48f48 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 48f4c 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 48f50 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 48f50 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 48f50 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 48f50 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 48f50 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 48f50 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 48f50 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 48f50 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 48f54 4a .cfa: sp 0 + .ra: lr
+STACK CFI 48f56 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 48fa0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 48fa2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 48fb8 12 .cfa: sp 0 + .ra: lr
+STACK CFI 48fba .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 38 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 10e .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 100 .cfa: sp 24 +
+STACK CFI 104 .cfa: sp 0 + .ra: .ra r4: r4 r5: r5 r6: r6 r7: r7 r8: r8
+STACK CFI 108 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 10a .cfa: sp 24 +
+STACK CFI INIT 48fcc 4c .cfa: sp 0 + .ra: lr
+STACK CFI 48fce .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 4900a .cfa: sp 8 +
+STACK CFI INIT 49018 4c .cfa: sp 0 + .ra: lr
+STACK CFI 4901a .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 49056 .cfa: sp 8 +
+STACK CFI INIT 49064 4c .cfa: sp 0 + .ra: lr
+STACK CFI 49066 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 490a2 .cfa: sp 8 +
+STACK CFI INIT 490b0 4c .cfa: sp 0 + .ra: lr
+STACK CFI 490b2 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 490ee .cfa: sp 8 +
+STACK CFI INIT 490fc 4c .cfa: sp 0 + .ra: lr
+STACK CFI 490fe .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 4913a .cfa: sp 8 +
+STACK CFI INIT 49148 4c .cfa: sp 0 + .ra: lr
+STACK CFI 4914a .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 49186 .cfa: sp 8 +
+STACK CFI INIT 49194 4c .cfa: sp 0 + .ra: lr
+STACK CFI 49196 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 491d2 .cfa: sp 8 +
+STACK CFI INIT 491e0 4c .cfa: sp 0 + .ra: lr
+STACK CFI 491e2 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 4921e .cfa: sp 8 +
+STACK CFI INIT 4922c 170 .cfa: sp 0 + .ra: lr
+STACK CFI 4922e .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 49232 .cfa: sp 48 +
+STACK CFI 49378 .cfa: sp 20 +
+STACK CFI INIT 0 bb4 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 8 .cfa: sp 48 +
+STACK CFI 966 .cfa: sp 24 +
+STACK CFI INIT 4939c 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 5c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 56 .cfa: sp 16 +
+STACK CFI INIT 493a4 44 .cfa: sp 0 + .ra: lr
+STACK CFI 493a6 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 493b2 .cfa: sp 40 +
+STACK CFI 493de .cfa: sp 16 +
+STACK CFI INIT 493e8 48 .cfa: sp 0 + .ra: lr
+STACK CFI 493ea .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 493f4 .cfa: sp 56 +
+STACK CFI 49424 .cfa: sp 16 +
+STACK CFI INIT 49430 44 .cfa: sp 0 + .ra: lr
+STACK CFI 49432 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 4943e .cfa: sp 48 +
+STACK CFI 4946a .cfa: sp 16 +
+STACK CFI INIT 16b0a 1e .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16d68 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16d6e 1c .cfa: sp 0 + .ra: lr
+STACK CFI 16d70 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 173de 2c .cfa: sp 0 + .ra: lr
+STACK CFI 173e0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1744a 24 .cfa: sp 0 + .ra: lr
+STACK CFI 1744c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1740a 40 .cfa: sp 0 + .ra: lr
+STACK CFI 1740c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1746e b4 .cfa: sp 0 + .ra: lr
+STACK CFI 17470 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 17520 .cfa: sp 20 +
+STACK CFI INIT 386ba 20 .cfa: sp 0 + .ra: lr
+STACK CFI 386bc .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 386ca .cfa: sp 0 + .ra: .ra r4: r4 r5: r5
+STACK CFI 386d0 .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 49474 4a .cfa: sp 0 + .ra: lr
+STACK CFI 49476 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 494bc .cfa: sp 12 +
+STACK CFI INIT 0 b6 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 48 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI b2 .cfa: sp 36 +
+STACK CFI INIT 494c0 18c .cfa: sp 0 + .ra: lr
+STACK CFI 494c4 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 494ce .cfa: sp 208 +
+STACK CFI 49628 .cfa: sp 32 +
+STACK CFI INIT 0 110 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 108 .cfa: sp 24 +
+STACK CFI INIT 4964c 62 .cfa: sp 0 + .ra: lr
+STACK CFI 4964e .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 496ae c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 496ba 14 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 496ce 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 496d6 e .cfa: sp 0 + .ra: lr
+STACK CFI INIT 496e4 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 496ec c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 496f8 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 49700 e .cfa: sp 0 + .ra: lr
+STACK CFI INIT 4970e 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 49714 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 4971a e .cfa: sp 0 + .ra: lr
+STACK CFI INIT 49728 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 49730 18 .cfa: sp 0 + .ra: lr
+STACK CFI 49732 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 49748 12 .cfa: sp 0 + .ra: lr
+STACK CFI 4974a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 49756 .cfa: sp 0 + .ra: .ra r4: r4
+STACK CFI INIT 0 3e .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 3a .cfa: sp 0 + .ra: .ra r4: r4
+STACK CFI INIT 4975c 28 .cfa: sp 0 + .ra: lr
+STACK CFI 4975e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 49784 20 .cfa: sp 0 + .ra: lr
+STACK CFI 49786 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 1c0 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f92 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15ddc 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15fb8 18 .cfa: sp 0 + .ra: lr
+STACK CFI 15fba .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15de2 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 497a4 84 .cfa: sp 0 + .ra: lr
+STACK CFI 497a6 .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 0 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f9e 1a .cfa: sp 0 + .ra: lr
+STACK CFI 15fa0 .cfa: sp 16 + .ra: .cfa -4 + ^
+STACK CFI 15fb4 .cfa: sp 4 +
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15fd0 c .cfa: sp 0 + .ra: lr
+STACK CFI 15fd2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 49828 12 .cfa: sp 0 + .ra: lr
+STACK CFI 4982a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 4983a 12 .cfa: sp 0 + .ra: lr
+STACK CFI 4983c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 4984c 18 .cfa: sp 0 + .ra: lr
+STACK CFI 4984e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 49864 12 .cfa: sp 0 + .ra: lr
+STACK CFI 49866 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16030 4c .cfa: sp 0 + .ra: lr
+STACK CFI 16034 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 1607c 1c .cfa: sp 0 + .ra: lr
+STACK CFI 1607e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 16098 12 .cfa: sp 0 + .ra: lr
+STACK CFI 1609a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 28 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 49876 18 .cfa: sp 0 + .ra: lr
+STACK CFI 49878 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 4988e 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 49896 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 160c8 12 .cfa: sp 0 + .ra: lr
+STACK CFI 160ca .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 4989a 22 .cfa: sp 0 + .ra: lr
+STACK CFI 4989c .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 498bc 4a .cfa: sp 0 + .ra: lr
+STACK CFI 498be .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 49906 54 .cfa: sp 0 + .ra: lr
+STACK CFI 4990a .cfa: sp 40 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 49956 .cfa: sp 24 +
+STACK CFI INIT 4995c 4c .cfa: sp 0 + .ra: lr
+STACK CFI 4995e .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 16a6c 54 .cfa: sp 0 + .ra: lr
+STACK CFI 16a70 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 15fdc 54 .cfa: sp 0 + .ra: lr
+STACK CFI 15fe0 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 499a8 50 .cfa: sp 0 + .ra: lr
+STACK CFI 499aa .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 499d0 .cfa: sp 0 + .ra: .ra r4: r4 r5: r5 r6: r6
+STACK CFI 499d4 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 499ec .cfa: sp 0 + .ra: .ra r4: r4 r5: r5 r6: r6
+STACK CFI 499f0 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 1e00e 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 499f8 38 .cfa: sp 0 + .ra: lr
+STACK CFI 499fc .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 49a2e .cfa: sp 8 +
+STACK CFI INIT 49a30 38 .cfa: sp 0 + .ra: lr
+STACK CFI 49a34 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 49a66 .cfa: sp 12 +
+STACK CFI INIT 49a68 28 .cfa: sp 0 + .ra: lr
+STACK CFI 49a6c .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 49a8e .cfa: sp 8 +
+STACK CFI INIT 2c924 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 49a90 12 .cfa: sp 0 + .ra: lr
+STACK CFI 49a92 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 49aa4 6c .cfa: sp 0 + .ra: lr
+STACK CFI 49aa6 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 49b10 18 .cfa: sp 0 + .ra: lr
+STACK CFI 49b12 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 49b28 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 49b30 16 .cfa: sp 0 + .ra: lr
+STACK CFI 49b32 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 0 20 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 49b48 20 .cfa: sp 0 + .ra: lr
+STACK CFI 49b4a .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 0 1c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 49b68 2c .cfa: sp 0 + .ra: lr
+STACK CFI 49b6a .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 49b94 22 .cfa: sp 0 + .ra: lr
+STACK CFI 49b96 .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 49bb8 30 .cfa: sp 0 + .ra: lr
+STACK CFI 49bba .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 49be8 48 .cfa: sp 0 + .ra: lr
+STACK CFI 49bea .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 49bf0 .cfa: sp 48 +
+STACK CFI 49c2a .cfa: sp 16 +
+STACK CFI INIT 49c30 4c .cfa: sp 0 + .ra: lr
+STACK CFI 49c32 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 49c7c 2c .cfa: sp 0 + .ra: lr
+STACK CFI 49c7e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 49ca8 2c .cfa: sp 0 + .ra: lr
+STACK CFI 49caa .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 20 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 2c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 0 1a .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 1e .cfa: sp 0 + .ra: lr
+STACK CFI INIT 39934 12 .cfa: sp 0 + .ra: lr
+STACK CFI 39936 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 49cd4 34 .cfa: sp 0 + .ra: lr
+STACK CFI 49cd6 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 49d06 .cfa: sp 16 +
+STACK CFI INIT 49d08 34 .cfa: sp 0 + .ra: lr
+STACK CFI 49d0a .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 49d3a .cfa: sp 16 +
+STACK CFI INIT 39cc4 14 .cfa: sp 0 + .ra: lr
+STACK CFI 39cc6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 49d3c 34 .cfa: sp 0 + .ra: lr
+STACK CFI 49d3e .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 49d6e .cfa: sp 16 +
+STACK CFI INIT 0 34 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 32 .cfa: sp 16 +
+STACK CFI INIT 2aa48 30 .cfa: sp 0 + .ra: lr
+STACK CFI 2aa4a .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 2aa4e .cfa: sp 48 +
+STACK CFI 2aa76 .cfa: sp 12 +
+STACK CFI INIT 0 50 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 170b0 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170b8 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170c4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 170c6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 170d6 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 170e2 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 39cc4 14 .cfa: sp 0 + .ra: lr
+STACK CFI 39cc6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 14 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 49d70 18 .cfa: sp 0 + .ra: lr
+STACK CFI 49d72 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 49d88 3c .cfa: sp 0 + .ra: lr
+STACK CFI 49d8a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 49dc4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 49dc6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 2c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 49dd8 34 .cfa: sp 0 + .ra: lr
+STACK CFI 49dda .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 49e0c 12 .cfa: sp 0 + .ra: lr
+STACK CFI 49e0e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 34 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 58 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 56 .cfa: sp 20 +
+STACK CFI INIT 16d26 42 .cfa: sp 0 + .ra: lr
+STACK CFI 16d28 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 16d68 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16d6e 1c .cfa: sp 0 + .ra: lr
+STACK CFI 16d70 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 49e20 60 .cfa: sp 0 + .ra: lr
+STACK CFI 49e28 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 49e7a .cfa: sp 16 +
+STACK CFI INIT 39cc4 14 .cfa: sp 0 + .ra: lr
+STACK CFI 39cc6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 39cc4 14 .cfa: sp 0 + .ra: lr
+STACK CFI 39cc6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 49e80 2c .cfa: sp 0 + .ra: lr
+STACK CFI 49e82 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 49eac 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 49eb4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 49eb6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 49ec6 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 49ece 18 .cfa: sp 0 + .ra: lr
+STACK CFI 49ed0 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 0 1a .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 49ee8 50 .cfa: sp 0 + .ra: lr
+STACK CFI 49eea .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 49f38 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 49f40 12 .cfa: sp 0 + .ra: lr
+STACK CFI 49f42 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 49f52 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 49f5a 4a .cfa: sp 0 + .ra: lr
+STACK CFI 49f5e .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 49fa2 .cfa: sp 16 +
+STACK CFI INIT 2aa48 30 .cfa: sp 0 + .ra: lr
+STACK CFI 2aa4a .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 2aa4e .cfa: sp 48 +
+STACK CFI 2aa76 .cfa: sp 12 +
+STACK CFI INIT 49fa4 34 .cfa: sp 0 + .ra: lr
+STACK CFI 49fa6 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 49fd8 30 .cfa: sp 0 + .ra: lr
+STACK CFI 49fda .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 0 2c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 16bac 9c .cfa: sp 0 + .ra: lr
+STACK CFI 16bb0 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 16bbc .cfa: sp 48 +
+STACK CFI 16c3e .cfa: sp 28 +
+STACK CFI INIT 4a008 32 .cfa: sp 0 + .ra: lr
+STACK CFI 4a00a .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 4a03a 26 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 4a060 e6 .cfa: sp 0 + .ra: lr
+STACK CFI 4a064 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 4a070 .cfa: sp 56 +
+STACK CFI 4a142 .cfa: sp 36 +
+STACK CFI INIT 0 30 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 28 .cfa: sp 8 +
+STACK CFI INIT 16dec 18 .cfa: sp 0 + .ra: lr
+STACK CFI 16dee .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 48 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 42 .cfa: sp 12 +
+STACK CFI INIT 0 54 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 4c .cfa: sp 12 +
+STACK CFI INIT 0 48 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 42 .cfa: sp 20 +
+STACK CFI INIT 0 28 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 0 1e .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 0 5c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 6 .cfa: sp 104 +
+STACK CFI 52 .cfa: sp 20 +
+STACK CFI INIT 0 16 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 4a146 e .cfa: sp 0 + .ra: lr
+STACK CFI 4a148 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 4a154 e .cfa: sp 0 + .ra: lr
+STACK CFI 4a156 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 4a162 e .cfa: sp 0 + .ra: lr
+STACK CFI 4a164 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 4a170 e .cfa: sp 0 + .ra: lr
+STACK CFI 4a172 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 4a17e e .cfa: sp 0 + .ra: lr
+STACK CFI 4a180 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 4a18c e .cfa: sp 0 + .ra: lr
+STACK CFI 4a18e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 4a19c 48 .cfa: sp 0 + .ra: lr
+STACK CFI 4a19e .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 173de 2c .cfa: sp 0 + .ra: lr
+STACK CFI 173e0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1740a 40 .cfa: sp 0 + .ra: lr
+STACK CFI 1740c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1744a 24 .cfa: sp 0 + .ra: lr
+STACK CFI 1744c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1746e b4 .cfa: sp 0 + .ra: lr
+STACK CFI 17470 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 17520 .cfa: sp 20 +
+STACK CFI INIT 4a1e4 50 .cfa: sp 0 + .ra: lr
+STACK CFI 4a1e6 .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 4a1ea .cfa: sp 32 +
+STACK CFI 4a224 .cfa: sp 12 +
+STACK CFI INIT 4a234 c .cfa: sp 0 + .ra: lr
+STACK CFI 4a236 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 4a240 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 b8 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 8a .cfa: sp 8 +
+STACK CFI INIT 0 94 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 78 .cfa: sp 16 +
+STACK CFI INIT 0 98 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 7a .cfa: sp 8 +
+STACK CFI INIT 4a248 48 .cfa: sp 0 + .ra: lr
+STACK CFI 4a24a .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 4a24e .cfa: sp 32 +
+STACK CFI 4a282 .cfa: sp 12 +
+STACK CFI INIT 0 a8 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 80 .cfa: sp 8 +
+STACK CFI INIT 4a290 50 .cfa: sp 0 + .ra: lr
+STACK CFI 4a292 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 4a2d2 .cfa: sp 8 +
+STACK CFI INIT 4a2e0 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 4a2e8 4c .cfa: sp 0 + .ra: lr
+STACK CFI 4a2ea .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 4a2ee .cfa: sp 32 +
+STACK CFI 4a324 .cfa: sp 12 +
+STACK CFI INIT 4a334 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 144 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 6 .cfa: sp 32 +
+STACK CFI fc .cfa: sp 12 +
+STACK CFI INIT 0 90 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 6 .cfa: sp 40 +
+STACK CFI 76 .cfa: sp 20 +
+STACK CFI INIT 4a33c 4c .cfa: sp 0 + .ra: lr
+STACK CFI 4a33e .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 4a378 .cfa: sp 8 +
+STACK CFI INIT 4a388 8c .cfa: sp 0 + .ra: lr
+STACK CFI 4a38a .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 4a38e .cfa: sp 40 +
+STACK CFI 4a3f8 .cfa: sp 20 +
+STACK CFI INIT 4a414 8c .cfa: sp 0 + .ra: lr
+STACK CFI 4a416 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 4a41a .cfa: sp 40 +
+STACK CFI 4a484 .cfa: sp 20 +
+STACK CFI INIT 0 e0 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 8 .cfa: sp 48 +
+STACK CFI b8 .cfa: sp 24 +
+STACK CFI INIT 0 e0 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 8 .cfa: sp 48 +
+STACK CFI b8 .cfa: sp 24 +
+STACK CFI INIT 0 368 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI c .cfa: sp 80 +
+STACK CFI 2ca .cfa: sp 20 +
+STACK CFI INIT 0 1d0 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI e .cfa: sp 104 +
+STACK CFI 180 .cfa: sp 36 +
+STACK CFI INIT 0 d8 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI e .cfa: sp 96 +
+STACK CFI c0 .cfa: sp 20 +
+STACK CFI INIT 4a4a0 60 .cfa: sp 0 + .ra: lr
+STACK CFI 4a4a2 .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 4a4a6 .cfa: sp 32 +
+STACK CFI 4a4ee .cfa: sp 12 +
+STACK CFI INIT 4a500 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 4a508 b4 .cfa: sp 0 + .ra: lr
+STACK CFI 4a50c .cfa: sp 48 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^
+STACK CFI 4a5aa .cfa: sp 32 +
+STACK CFI INIT 175b2 98 .cfa: sp 0 + .ra: lr
+STACK CFI 175b6 .cfa: sp 40 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 17646 .cfa: sp 28 +
+STACK CFI INIT 4a5bc 19c .cfa: sp 0 + .ra: lr
+STACK CFI 4a5c0 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 4a5ce .cfa: sp 104 +
+STACK CFI 4a728 .cfa: sp 28 +
+STACK CFI INIT 4a758 d8 .cfa: sp 0 + .ra: lr
+STACK CFI 4a75c .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 4a75e .cfa: sp 80 +
+STACK CFI 4a810 .cfa: sp 24 +
+STACK CFI INIT 4a830 c .cfa: sp 0 + .ra: lr
+STACK CFI 4a832 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 4a83c 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 20330 98 .cfa: sp 0 + .ra: lr
+STACK CFI 20332 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 20334 .cfa: sp 80 +
+STACK CFI 203c6 .cfa: sp 20 +
+STACK CFI INIT 4a844 b0 .cfa: sp 0 + .ra: lr
+STACK CFI 4a846 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 4a84a .cfa: sp 40 +
+STACK CFI 4a8d4 .cfa: sp 20 +
+STACK CFI INIT 4a8f4 b0 .cfa: sp 0 + .ra: lr
+STACK CFI 4a8f6 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 4a8fa .cfa: sp 40 +
+STACK CFI 4a984 .cfa: sp 20 +
+STACK CFI INIT 4a9a4 c .cfa: sp 0 + .ra: lr
+STACK CFI 4a9a6 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 4a9b0 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 4a9b8 b0 .cfa: sp 0 + .ra: lr
+STACK CFI 4a9ba .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 4a9be .cfa: sp 40 +
+STACK CFI 4aa48 .cfa: sp 20 +
+STACK CFI INIT 0 110 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 8 .cfa: sp 64 +
+STACK CFI da .cfa: sp 36 +
+STACK CFI INIT 4aa68 d8 .cfa: sp 0 + .ra: lr
+STACK CFI 4aa6c .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 4aa6e .cfa: sp 80 +
+STACK CFI 4ab1e .cfa: sp 24 +
+STACK CFI INIT 0 ac .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 6 .cfa: sp 40 +
+STACK CFI 8e .cfa: sp 20 +
+STACK CFI INIT 0 d8 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 6 .cfa: sp 80 +
+STACK CFI b6 .cfa: sp 24 +
+STACK CFI INIT 0 b0 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 8 .cfa: sp 40 +
+STACK CFI 92 .cfa: sp 20 +
+STACK CFI INIT 0 98 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 4 .cfa: sp 80 +
+STACK CFI 96 .cfa: sp 20 +
+STACK CFI INIT 4ab40 16c .cfa: sp 0 + .ra: lr
+STACK CFI 4ab44 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 4ab4c .cfa: sp 48 +
+STACK CFI 4ac76 .cfa: sp 24 +
+STACK CFI INIT 4acac c .cfa: sp 0 + .ra: lr
+STACK CFI 4acae .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 4acb8 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 9e .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 4 .cfa: sp 80 +
+STACK CFI 9c .cfa: sp 20 +
+STACK CFI INIT 176f0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 176f2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 4acc0 29c .cfa: sp 0 + .ra: lr
+STACK CFI 4acc4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 4acca .cfa: sp 120 +
+STACK CFI 4af24 .cfa: sp 36 +
+STACK CFI INIT 0 118 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 114 .cfa: sp 24 +
+STACK CFI INIT 179ec 1a .cfa: sp 0 + .ra: lr
+STACK CFI 179ee .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 17a02 .cfa: sp 0 + .ra: .ra r3: r3 r4: r4 r5: r5
+STACK CFI INIT 4af5c 1dc .cfa: sp 0 + .ra: lr
+STACK CFI 4af60 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 4af6a .cfa: sp 104 +
+STACK CFI 4b0f0 .cfa: sp 32 +
+STACK CFI INIT 4b138 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 4b140 170 .cfa: sp 0 + .ra: lr
+STACK CFI 4b146 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 4b14e .cfa: sp 160 +
+STACK CFI 4b278 .cfa: sp 28 +
+STACK CFI INIT 4b2b0 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 4b2b8 11c .cfa: sp 0 + .ra: lr
+STACK CFI 4b2be .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 4b2c6 .cfa: sp 104 +
+STACK CFI 4b3a6 .cfa: sp 28 +
+STACK CFI INIT 4b3d4 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 168 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 10 .cfa: sp 80 +
+STACK CFI 126 .cfa: sp 28 +
+STACK CFI INIT 0 178 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI e .cfa: sp 104 +
+STACK CFI 136 .cfa: sp 32 +
+STACK CFI INIT 0 7e .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI e .cfa: sp 56 +
+STACK CFI 7a .cfa: sp 28 +
+STACK CFI INIT 4b3dc 1b4 .cfa: sp 0 + .ra: lr
+STACK CFI 4b3e2 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 4b3ea .cfa: sp 128 +
+STACK CFI 4b560 .cfa: sp 36 +
+STACK CFI INIT 4b590 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 4b598 20 .cfa: sp 0 + .ra: lr
+STACK CFI 4b59a .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 4b5b8 34 .cfa: sp 0 + .ra: lr
+STACK CFI 4b5ba .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 4b5ec 12 .cfa: sp 0 + .ra: lr
+STACK CFI 4b5ee .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 4b5fe 20 .cfa: sp 0 + .ra: lr
+STACK CFI 4b600 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 4b61e 1a .cfa: sp 0 + .ra: lr
+STACK CFI 4b622 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 4b638 3c .cfa: sp 0 + .ra: lr
+STACK CFI 4b63a .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 4b674 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 4b67c 12 .cfa: sp 0 + .ra: lr
+STACK CFI 4b67e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 4b68e 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 4b698 44 .cfa: sp 0 + .ra: lr
+STACK CFI 4b69a .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 4b6dc 12 .cfa: sp 0 + .ra: lr
+STACK CFI 4b6de .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 34 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 4b6ee 28 .cfa: sp 0 + .ra: lr
+STACK CFI 4b6f0 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 4b718 94 .cfa: sp 0 + .ra: lr
+STACK CFI 4b71a .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 4b71e .cfa: sp 32 +
+STACK CFI 4b798 .cfa: sp 12 +
+STACK CFI INIT 4b7ac 12 .cfa: sp 0 + .ra: lr
+STACK CFI 4b7ae .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 4b7be 40 .cfa: sp 0 + .ra: lr
+STACK CFI 4b7c0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 4b800 e4 .cfa: sp 0 + .ra: lr
+STACK CFI 4b806 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 4b810 .cfa: sp 72 +
+STACK CFI 4b8cc .cfa: sp 24 +
+STACK CFI INIT 4b8e4 1e4 .cfa: sp 0 + .ra: lr
+STACK CFI 4b8e8 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 4b8ec .cfa: sp 64 +
+STACK CFI 4ba82 .cfa: sp 28 +
+STACK CFI INIT 4bac8 1f4 .cfa: sp 0 + .ra: lr
+STACK CFI 4bacc .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 4bad2 .cfa: sp 72 +
+STACK CFI 4bc7a .cfa: sp 32 +
+STACK CFI INIT 4bcbc e .cfa: sp 0 + .ra: lr
+STACK CFI 4bcbe .cfa: sp 16 + .ra: .cfa -4 + ^
+STACK CFI 4bcc6 .cfa: sp 4 +
+STACK CFI INIT 0 1f8 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI a .cfa: sp 72 +
+STACK CFI 1b4 .cfa: sp 32 +
+STACK CFI INIT 0 e .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^
+STACK CFI a .cfa: sp 4 +
+STACK CFI INIT 4bccc 1f4 .cfa: sp 0 + .ra: lr
+STACK CFI 4bcd0 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 4bcd6 .cfa: sp 72 +
+STACK CFI 4be7e .cfa: sp 32 +
+STACK CFI INIT 4bec0 e .cfa: sp 0 + .ra: lr
+STACK CFI 4bec2 .cfa: sp 16 + .ra: .cfa -4 + ^
+STACK CFI 4beca .cfa: sp 4 +
+STACK CFI INIT 0 1f4 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI a .cfa: sp 72 +
+STACK CFI 1b4 .cfa: sp 32 +
+STACK CFI INIT 0 e .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^
+STACK CFI a .cfa: sp 4 +
+STACK CFI INIT 0 1f8 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI a .cfa: sp 72 +
+STACK CFI 1b2 .cfa: sp 32 +
+STACK CFI INIT 0 e .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^
+STACK CFI a .cfa: sp 4 +
+STACK CFI INIT 4bed0 1f4 .cfa: sp 0 + .ra: lr
+STACK CFI 4bed4 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 4beda .cfa: sp 72 +
+STACK CFI 4c082 .cfa: sp 32 +
+STACK CFI INIT 4c0c4 e .cfa: sp 0 + .ra: lr
+STACK CFI 4c0c6 .cfa: sp 16 + .ra: .cfa -4 + ^
+STACK CFI 4c0ce .cfa: sp 4 +
+STACK CFI INIT 4c0d4 1f4 .cfa: sp 0 + .ra: lr
+STACK CFI 4c0d8 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 4c0de .cfa: sp 72 +
+STACK CFI 4c286 .cfa: sp 32 +
+STACK CFI INIT 4c2c8 e .cfa: sp 0 + .ra: lr
+STACK CFI 4c2ca .cfa: sp 16 + .ra: .cfa -4 + ^
+STACK CFI 4c2d2 .cfa: sp 4 +
+STACK CFI INIT 4c2d8 1f4 .cfa: sp 0 + .ra: lr
+STACK CFI 4c2dc .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 4c2e2 .cfa: sp 72 +
+STACK CFI 4c48a .cfa: sp 32 +
+STACK CFI INIT 4c4cc e .cfa: sp 0 + .ra: lr
+STACK CFI 4c4ce .cfa: sp 16 + .ra: .cfa -4 + ^
+STACK CFI 4c4d6 .cfa: sp 4 +
+STACK CFI INIT 0 1f4 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI a .cfa: sp 72 +
+STACK CFI 1b2 .cfa: sp 32 +
+STACK CFI INIT 0 e .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^
+STACK CFI a .cfa: sp 4 +
+STACK CFI INIT 4c4dc 284 .cfa: sp 0 + .ra: lr
+STACK CFI 4c4e0 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 4c4ee .cfa: sp 96 +
+STACK CFI 4c716 .cfa: sp 36 +
+STACK CFI INIT 4c760 48 .cfa: sp 0 + .ra: lr
+STACK CFI 4c762 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 4c7a6 .cfa: sp 8 +
+STACK CFI INIT 4c7a8 bc .cfa: sp 0 + .ra: lr
+STACK CFI 4c7aa .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 4c85c .cfa: sp 0 + .ra: .ra r3: r3 r4: r4 r5: r5 r6: r6 r7: r7
+STACK CFI 4c860 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 4c864 116 .cfa: sp 0 + .ra: lr
+STACK CFI 4c868 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 4c86a .cfa: sp 64 +
+STACK CFI 4c976 .cfa: sp 36 +
+STACK CFI INIT 4c97c 114 .cfa: sp 0 + .ra: lr
+STACK CFI 4c980 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 4c990 .cfa: sp 72 +
+STACK CFI 4ca66 .cfa: sp 24 +
+STACK CFI INIT 4ca90 11a8 .cfa: sp 0 + .ra: lr
+STACK CFI 4ca94 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 4caa8 .cfa: sp 104 +
+STACK CFI 4dbe4 .cfa: sp 36 +
+STACK CFI INIT 4dc38 10c .cfa: sp 0 + .ra: lr
+STACK CFI 4dc3c .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 4dc44 .cfa: sp 48 +
+STACK CFI 4dd1c .cfa: sp 24 +
+STACK CFI INIT 4dd44 11c .cfa: sp 0 + .ra: lr
+STACK CFI 4dd48 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 4dd50 .cfa: sp 48 +
+STACK CFI 4de32 .cfa: sp 24 +
+STACK CFI INIT 0 118 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 6 .cfa: sp 40 +
+STACK CFI de .cfa: sp 20 +
+STACK CFI INIT 4de60 1c4 .cfa: sp 0 + .ra: lr
+STACK CFI 4de64 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 4de74 .cfa: sp 136 +
+STACK CFI 4dffc .cfa: sp 36 +
+STACK CFI INIT 4e024 220 .cfa: sp 0 + .ra: lr
+STACK CFI 4e028 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 4e038 .cfa: sp 104 +
+STACK CFI 4e21e .cfa: sp 28 +
+STACK CFI INIT 4e244 11c .cfa: sp 0 + .ra: lr
+STACK CFI 4e246 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 4e24e .cfa: sp 40 +
+STACK CFI 4e342 .cfa: sp 20 +
+STACK CFI INIT 4e360 17c .cfa: sp 0 + .ra: lr
+STACK CFI 4e362 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 4e366 .cfa: sp 40 +
+STACK CFI 4e4bc .cfa: sp 20 +
+STACK CFI INIT 0 dc .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 8 .cfa: sp 40 +
+STACK CFI bc .cfa: sp 20 +
+STACK CFI INIT 0 164 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI e .cfa: sp 104 +
+STACK CFI 13e .cfa: sp 28 +
+STACK CFI INIT 0 138 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI a .cfa: sp 40 +
+STACK CFI 118 .cfa: sp 20 +
+STACK CFI INIT 0 2b0 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI e .cfa: sp 48 +
+STACK CFI 27c .cfa: sp 24 +
+STACK CFI INIT 4e4dc 240 .cfa: sp 0 + .ra: lr
+STACK CFI 4e4e0 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 4e4e8 .cfa: sp 72 +
+STACK CFI 4e6cc .cfa: sp 32 +
+STACK CFI INIT 0 94 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 6 .cfa: sp 32 +
+STACK CFI 78 .cfa: sp 12 +
+STACK CFI INIT 0 1dc .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 6 .cfa: sp 40 +
+STACK CFI 16c .cfa: sp 20 +
+STACK CFI INIT 4e71c 1b0 .cfa: sp 0 + .ra: lr
+STACK CFI 4e720 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 4e728 .cfa: sp 64 +
+STACK CFI 4e88e .cfa: sp 28 +
+STACK CFI INIT 4e8cc 1d0 .cfa: sp 0 + .ra: lr
+STACK CFI 4e8d0 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 4e8dc .cfa: sp 128 +
+STACK CFI 4ea68 .cfa: sp 32 +
+STACK CFI INIT 4ea9c 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 4eaa0 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 4eaa8 1f0 .cfa: sp 0 + .ra: lr
+STACK CFI 4eaac .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 4eab8 .cfa: sp 128 +
+STACK CFI 4ec62 .cfa: sp 32 +
+STACK CFI INIT 4ec98 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 4ec9c 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 4eca4 1f0 .cfa: sp 0 + .ra: lr
+STACK CFI 4eca8 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 4ecb4 .cfa: sp 128 +
+STACK CFI 4ee5e .cfa: sp 32 +
+STACK CFI INIT 4ee94 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 4ee98 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 4eea0 1f8 .cfa: sp 0 + .ra: lr
+STACK CFI 4eea4 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 4eeb0 .cfa: sp 128 +
+STACK CFI 4f062 .cfa: sp 32 +
+STACK CFI INIT 4f098 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 4f09c 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 4f0a4 90 .cfa: sp 0 + .ra: lr
+STACK CFI 4f0a6 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 4f0aa .cfa: sp 40 +
+STACK CFI 4f118 .cfa: sp 20 +
+STACK CFI INIT 4f134 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 4f13c 358 .cfa: sp 0 + .ra: lr
+STACK CFI 4f140 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 4f148 .cfa: sp 64 +
+STACK CFI 4f430 .cfa: sp 32 +
+STACK CFI INIT 4f494 27c .cfa: sp 0 + .ra: lr
+STACK CFI 4f498 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 4f4a0 .cfa: sp 64 +
+STACK CFI 4f6c2 .cfa: sp 32 +
+STACK CFI INIT 4f710 124 .cfa: sp 0 + .ra: lr
+STACK CFI 4f714 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 4f71c .cfa: sp 48 +
+STACK CFI 4f806 .cfa: sp 24 +
+STACK CFI INIT 0 3ec .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI e .cfa: sp 80 +
+STACK CFI 320 .cfa: sp 32 +
+STACK CFI INIT 0 90 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 6 .cfa: sp 40 +
+STACK CFI 76 .cfa: sp 20 +
+STACK CFI INIT 3179c 2e .cfa: sp 0 + .ra: lr
+STACK CFI INIT 20424 2c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 20450 2c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 2047c 9e .cfa: sp 0 + .ra: lr
+STACK CFI 20480 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 4f834 64 .cfa: sp 0 + .ra: lr
+STACK CFI 4f838 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 4f898 70 .cfa: sp 0 + .ra: lr
+STACK CFI 4f89a .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 4f8a8 .cfa: sp 40 +
+STACK CFI 4f906 .cfa: sp 20 +
+STACK CFI INIT 4f908 f4 .cfa: sp 0 + .ra: lr
+STACK CFI 4f90c .cfa: sp 48 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 4f9f8 .cfa: sp 32 +
+STACK CFI INIT 4f9fc 4c .cfa: sp 0 + .ra: lr
+STACK CFI 4f9fe .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 4fa06 .cfa: sp 40 +
+STACK CFI 4fa46 .cfa: sp 12 +
+STACK CFI INIT 4fa48 18 .cfa: sp 0 + .ra: lr
+STACK CFI 4fa4a .cfa: sp 16 + .ra: .cfa -4 + ^
+STACK CFI 4fa5c .cfa: sp 4 +
+STACK CFI INIT 4fa60 50c .cfa: sp 0 + .ra: lr
+STACK CFI 4fa64 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 4fa6e .cfa: sp 176 +
+STACK CFI 4ff52 .cfa: sp 36 +
+STACK CFI INIT 4ff6c 80 .cfa: sp 0 + .ra: lr
+STACK CFI 4ff72 .cfa: sp 32 + .ra: .cfa -4 + ^ r3: .cfa -32 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI INIT 4ffec 1e8 .cfa: sp 0 + .ra: lr
+STACK CFI 4fff0 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 50006 .cfa: sp 184 +
+STACK CFI 501b8 .cfa: sp 36 +
+STACK CFI INIT 501d4 630 .cfa: sp 0 + .ra: lr
+STACK CFI 501d8 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 501e8 .cfa: sp 320 +
+STACK CFI 507ca .cfa: sp 36 +
+STACK CFI INIT 50804 61c .cfa: sp 0 + .ra: lr
+STACK CFI 50808 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 5081a .cfa: sp 176 +
+STACK CFI 50d82 .cfa: sp 36 +
+STACK CFI INIT 0 52a .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 18 .cfa: sp 224 +
+STACK CFI 526 .cfa: sp 36 +
+STACK CFI INIT 50e20 64 .cfa: sp 0 + .ra: lr
+STACK CFI 50e24 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 50e84 70 .cfa: sp 0 + .ra: lr
+STACK CFI 50e86 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 50e94 .cfa: sp 40 +
+STACK CFI 50ef2 .cfa: sp 20 +
+STACK CFI INIT 50ef4 f4 .cfa: sp 0 + .ra: lr
+STACK CFI 50ef8 .cfa: sp 48 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 50fe4 .cfa: sp 32 +
+STACK CFI INIT 50fe8 5a8 .cfa: sp 0 + .ra: lr
+STACK CFI 50fec .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 50ffe .cfa: sp 176 +
+STACK CFI 514fa .cfa: sp 36 +
+STACK CFI INIT 51590 66 .cfa: sp 0 + .ra: lr
+STACK CFI 51592 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 515f6 26 .cfa: sp 0 + .ra: lr
+STACK CFI 515f8 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 5161c 140 .cfa: sp 0 + .ra: lr
+STACK CFI 51620 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 51626 .cfa: sp 56 +
+STACK CFI 51752 .cfa: sp 32 +
+STACK CFI INIT 5175c c0 .cfa: sp 0 + .ra: lr
+STACK CFI 5175e .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 5181c 12 .cfa: sp 0 + .ra: lr
+STACK CFI 5181e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 51830 6c .cfa: sp 0 + .ra: lr
+STACK CFI 51832 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 5189c 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 518a4 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 518b0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 518b2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 518c2 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 518ce 70 .cfa: sp 0 + .ra: lr
+STACK CFI 518d0 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 5193e 4e .cfa: sp 0 + .ra: lr
+STACK CFI 51940 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 5198c 52 .cfa: sp 0 + .ra: lr
+STACK CFI 5198e .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 519dc .cfa: sp 16 +
+STACK CFI INIT 519de 12c .cfa: sp 0 + .ra: lr
+STACK CFI 519e2 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 519ea .cfa: sp 48 +
+STACK CFI 51b06 .cfa: sp 28 +
+STACK CFI INIT 51b0a a0 .cfa: sp 0 + .ra: lr
+STACK CFI 51b0c .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 51ba8 .cfa: sp 8 +
+STACK CFI INIT 51bac a8 .cfa: sp 0 + .ra: lr
+STACK CFI 51bae .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 51c48 .cfa: sp 20 +
+STACK CFI INIT 51c54 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 51c5a a .cfa: sp 0 + .ra: lr
+STACK CFI INIT 51c64 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16b0a 1e .cfa: sp 0 + .ra: lr
+STACK CFI INIT 2aa48 30 .cfa: sp 0 + .ra: lr
+STACK CFI 2aa4a .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 2aa4e .cfa: sp 48 +
+STACK CFI 2aa76 .cfa: sp 12 +
+STACK CFI INIT 0 2c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 51c6a 24 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16d26 42 .cfa: sp 0 + .ra: lr
+STACK CFI 16d28 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 16d68 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 16d6e 1c .cfa: sp 0 + .ra: lr
+STACK CFI 16d70 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 173de 2c .cfa: sp 0 + .ra: lr
+STACK CFI 173e0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1740a 40 .cfa: sp 0 + .ra: lr
+STACK CFI 1740c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1744a 24 .cfa: sp 0 + .ra: lr
+STACK CFI 1744c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 175b2 98 .cfa: sp 0 + .ra: lr
+STACK CFI 175b6 .cfa: sp 40 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 17646 .cfa: sp 28 +
+STACK CFI INIT 1746e b4 .cfa: sp 0 + .ra: lr
+STACK CFI 17470 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 17520 .cfa: sp 20 +
+STACK CFI INIT 51c8e 28 .cfa: sp 0 + .ra: lr
+STACK CFI 51c90 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 51cb8 2c .cfa: sp 0 + .ra: lr
+STACK CFI 51cba .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 51ce4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 51ce6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 51cf6 24 .cfa: sp 0 + .ra: lr
+STACK CFI 51cfa .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 51d1c e8 .cfa: sp 0 + .ra: lr
+STACK CFI 51d22 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 51d2c .cfa: sp 88 +
+STACK CFI 51df0 .cfa: sp 32 +
+STACK CFI INIT 51e04 3e .cfa: sp 0 + .ra: lr
+STACK CFI 51e08 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 51e40 .cfa: sp 12 +
+STACK CFI INIT 0 98 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 4 .cfa: sp 80 +
+STACK CFI 96 .cfa: sp 20 +
+STACK CFI INIT 51e44 194 .cfa: sp 0 + .ra: lr
+STACK CFI 51e48 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 51e4c .cfa: sp 96 +
+STACK CFI 51fba .cfa: sp 28 +
+STACK CFI INIT 20424 2c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 20450 2c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 2047c 9e .cfa: sp 0 + .ra: lr
+STACK CFI 20480 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 51fd8 80 .cfa: sp 0 + .ra: lr
+STACK CFI 51fde .cfa: sp 32 + .ra: .cfa -4 + ^ r3: .cfa -32 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI INIT 52058 218 .cfa: sp 0 + .ra: lr
+STACK CFI 5205c .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 52072 .cfa: sp 176 +
+STACK CFI 52252 .cfa: sp 36 +
+STACK CFI INIT 52270 174 .cfa: sp 0 + .ra: lr
+STACK CFI 52274 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 52282 .cfa: sp 128 +
+STACK CFI 523bc .cfa: sp 36 +
+STACK CFI INIT 523e4 16 .cfa: sp 0 + .ra: lr
+STACK CFI 523e6 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 523fc 2c .cfa: sp 0 + .ra: lr
+STACK CFI 523fe .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 52428 58 .cfa: sp 0 + .ra: lr
+STACK CFI 5242a .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 52480 18 .cfa: sp 0 + .ra: lr
+STACK CFI 52484 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 52498 12 .cfa: sp 0 + .ra: lr
+STACK CFI 5249a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 524ac 10 .cfa: sp 0 + .ra: lr
+STACK CFI 524b0 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 0 10 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 524bc f8 .cfa: sp 0 + .ra: lr
+STACK CFI 524c0 .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 524c6 .cfa: sp 24 +
+STACK CFI INIT 525b4 2c .cfa: sp 0 + .ra: lr
+STACK CFI 525b6 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 525e0 20 .cfa: sp 0 + .ra: lr
+STACK CFI 525e4 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 52600 34 .cfa: sp 0 + .ra: lr
+STACK CFI 52602 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 52634 40 .cfa: sp 0 + .ra: lr
+STACK CFI 52636 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 52674 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 52680 34 .cfa: sp 0 + .ra: lr
+STACK CFI 52682 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 526b8 44 .cfa: sp 0 + .ra: lr
+STACK CFI 526ba .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 52700 74 .cfa: sp 0 + .ra: lr
+STACK CFI 52702 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 52778 7c .cfa: sp 0 + .ra: lr
+STACK CFI 5277a .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 14 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 0 30 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 4 + r4: .cfa -4 + ^
+STACK CFI INIT 0 20 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15c44 70 .cfa: sp 0 + .ra: lr
+STACK CFI 15c4a .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 527f8 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 52800 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 52804 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 52814 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 52804 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 52820 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 5282c 18 .cfa: sp 0 + .ra: lr
+STACK CFI 52830 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 5282c 18 .cfa: sp 0 + .ra: lr
+STACK CFI 52830 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 52804 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 52844 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 52854 10 .cfa: sp 0 + .ra: lr
+STACK CFI 52856 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 52864 5c .cfa: sp 0 + .ra: lr
+STACK CFI 52866 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 528c0 a .cfa: sp 0 + .ra: lr
+STACK CFI 528c2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 528cc a .cfa: sp 0 + .ra: lr
+STACK CFI INIT 528d8 1a .cfa: sp 0 + .ra: lr
+STACK CFI 528da .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 528f4 3c .cfa: sp 0 + .ra: lr
+STACK CFI 528f8 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 528fa .cfa: sp 24 +
+STACK CFI INIT 52930 2b4 .cfa: sp 0 + .ra: lr
+STACK CFI 52934 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 52936 .cfa: sp 112 +
+STACK CFI INIT 52be4 5c .cfa: sp 0 + .ra: lr
+STACK CFI 52be6 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 52bea .cfa: sp 40 +
+STACK CFI INIT 52c40 10 .cfa: sp 0 + .ra: lr
+STACK CFI 52c42 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 52c50 2c .cfa: sp 0 + .ra: lr
+STACK CFI 52c52 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 52c5a .cfa: sp 32 +
+STACK CFI INIT 52c7c 16 .cfa: sp 0 + .ra: lr
+STACK CFI 52c82 .cfa: sp 4 + r4: .cfa -4 + ^
+STACK CFI INIT 52c94 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 52c98 6e .cfa: sp 0 + .ra: lr
+STACK CFI 52c9a .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 52c9e .cfa: sp 32 +
+STACK CFI INIT 52d08 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 52d14 18 .cfa: sp 0 + .ra: lr
+STACK CFI 52d18 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 52d2c 12 .cfa: sp 0 + .ra: lr
+STACK CFI 52d2e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 52d40 18 .cfa: sp 0 + .ra: lr
+STACK CFI 52d42 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 24 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 52d58 2c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 52d84 48 .cfa: sp 0 + .ra: lr
+STACK CFI 52d86 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 24 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 52dcc 14 .cfa: sp 0 + .ra: lr
+STACK CFI 52dce .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 52de0 168 .cfa: sp 0 + .ra: lr
+STACK CFI 52dea .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 52dee .cfa: sp 80 +
+STACK CFI INIT 0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 54 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 39b2e 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 52f48 18 .cfa: sp 0 + .ra: lr
+STACK CFI 52f4c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 52f60 12 .cfa: sp 0 + .ra: lr
+STACK CFI 52f62 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 52f74 24 .cfa: sp 0 + .ra: lr
+STACK CFI 52f76 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 52f98 12 .cfa: sp 0 + .ra: lr
+STACK CFI 52f9a .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 52fac 24 .cfa: sp 0 + .ra: lr
+STACK CFI 52fae .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 52fd0 2c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 30 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 52ffc a .cfa: sp 0 + .ra: lr
+STACK CFI 52ffe .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 53008 6 .cfa: sp 0 + .ra: lr
+STACK CFI 5300a .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 53010 2c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 30 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 5303c e .cfa: sp 0 + .ra: lr
+STACK CFI 5303e .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 5304c 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 5305c c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 53068 18 .cfa: sp 0 + .ra: lr
+STACK CFI 5306c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 53080 18 .cfa: sp 0 + .ra: lr
+STACK CFI 53084 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 53098 12 .cfa: sp 0 + .ra: lr
+STACK CFI 5309a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 530ac 14 .cfa: sp 0 + .ra: lr
+STACK CFI 530ae .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 530c0 e .cfa: sp 0 + .ra: lr
+STACK CFI 530c2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 0 e .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 530d0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 530d2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 530e8 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 530f0 2c .cfa: sp 0 + .ra: lr
+STACK CFI 530f4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 1c .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 1c .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 1c .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 1c .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 5311c 1c .cfa: sp 0 + .ra: lr
+STACK CFI 53120 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 53138 1c .cfa: sp 0 + .ra: lr
+STACK CFI 5313c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 53154 12 .cfa: sp 0 + .ra: lr
+STACK CFI 53156 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 53168 1c .cfa: sp 0 + .ra: lr
+STACK CFI 5316c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 53184 12 .cfa: sp 0 + .ra: lr
+STACK CFI 53186 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 1c .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 1c .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 53198 12 .cfa: sp 0 + .ra: lr
+STACK CFI 5319a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 531ac 12 .cfa: sp 0 + .ra: lr
+STACK CFI 531ae .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 531c0 74 .cfa: sp 0 + .ra: lr
+STACK CFI 531c4 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 0 68 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 0 78 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI INIT 53234 24 .cfa: sp 0 + .ra: lr
+STACK CFI 53236 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 6 .cfa: sp 16 +
+STACK CFI INIT 53258 40 .cfa: sp 0 + .ra: lr
+STACK CFI 5325a .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 0 60 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 6 .cfa: sp 40 +
+STACK CFI INIT 0 60 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 6 .cfa: sp 40 +
+STACK CFI INIT 53298 60 .cfa: sp 0 + .ra: lr
+STACK CFI 5329a .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 5329e .cfa: sp 40 +
+STACK CFI INIT 532f8 60 .cfa: sp 0 + .ra: lr
+STACK CFI 532fa .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 532fe .cfa: sp 40 +
+STACK CFI INIT 0 60 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 6 .cfa: sp 40 +
+STACK CFI INIT 0 60 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 6 .cfa: sp 40 +
+STACK CFI INIT 53358 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 53368 18 .cfa: sp 0 + .ra: lr
+STACK CFI 5336a .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 53380 32 .cfa: sp 0 + .ra: lr
+STACK CFI 53382 .cfa: sp 4 + .ra: .cfa -4 + ^
+STACK CFI 53384 .cfa: sp 112 +
+STACK CFI INIT 533b4 e0 .cfa: sp 0 + .ra: lr
+STACK CFI 533b6 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 533bc .cfa: sp 120 +
+STACK CFI INIT 53494 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 5349c 78 .cfa: sp 0 + .ra: lr
+STACK CFI 5349e .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 534a4 .cfa: sp 120 +
+STACK CFI INIT 53514 28 .cfa: sp 0 + .ra: lr
+STACK CFI 53516 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 5353c 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 53544 34 .cfa: sp 0 + .ra: lr
+STACK CFI 53546 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 53578 42 .cfa: sp 0 + .ra: lr
+STACK CFI 5357c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 53580 .cfa: sp 16 +
+STACK CFI INIT 535bc 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 535c4 48 .cfa: sp 0 + .ra: lr
+STACK CFI 535c6 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 535c8 .cfa: sp 32 +
+STACK CFI INIT 5360c 128 .cfa: sp 0 + .ra: lr
+STACK CFI 53612 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 53618 .cfa: sp 56 +
+STACK CFI INIT 0 72 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 53734 5c .cfa: sp 0 + .ra: lr
+STACK CFI 53736 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 53790 ec .cfa: sp 0 + .ra: lr
+STACK CFI 53794 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 5387c 1c .cfa: sp 0 + .ra: lr
+STACK CFI 53880 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 53898 12 .cfa: sp 0 + .ra: lr
+STACK CFI 5389a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 538ac 1c .cfa: sp 0 + .ra: lr
+STACK CFI 538ae .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 28 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 538c8 28 .cfa: sp 0 + .ra: lr
+STACK CFI 538ca .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 538f0 44 .cfa: sp 0 + .ra: lr
+STACK CFI 538f6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 53934 12 .cfa: sp 0 + .ra: lr
+STACK CFI 53936 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 53948 60 .cfa: sp 0 + .ra: lr
+STACK CFI 5394a .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 53954 .cfa: sp 32 +
+STACK CFI INIT 539a8 3c .cfa: sp 0 + .ra: lr
+STACK CFI 539aa .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 53234 24 .cfa: sp 0 + .ra: lr
+STACK CFI 53236 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 6 .cfa: sp 16 +
+STACK CFI INIT 539e4 78 .cfa: sp 0 + .ra: lr
+STACK CFI 539e6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 539ec .cfa: sp 32 +
+STACK CFI INIT 0 88 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r3: .cfa -32 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI INIT 0 78 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 0 f4 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 0 78 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 0 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 53a5c 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 53a5c 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 53a60 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 53a6c 16 .cfa: sp 0 + .ra: lr
+STACK CFI 53a6e .cfa: sp 8 +
+STACK CFI INIT 15dc8 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15dc8 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 53a84 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 53a84 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 53a84 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15fb8 18 .cfa: sp 0 + .ra: lr
+STACK CFI 15fbc .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 92 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^ r7: .cfa -4 + ^
+STACK CFI INIT 0 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 e .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 16 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 +
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 58 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 0 5e .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 0 5e .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 49896 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 53a8c 5c .cfa: sp 0 + .ra: lr
+STACK CFI 53a90 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 53ae8 62 .cfa: sp 0 + .ra: lr
+STACK CFI 53aec .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 53b4c 64 .cfa: sp 0 + .ra: lr
+STACK CFI 53b50 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 53bb0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 53bb4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 1607c 1c .cfa: sp 0 + .ra: lr
+STACK CFI 16080 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 53bc8 1c .cfa: sp 0 + .ra: lr
+STACK CFI 53bcc .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 53be4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 53be6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 53bf8 1e .cfa: sp 0 + .ra: lr
+STACK CFI 53bfa .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 53c18 6a .cfa: sp 0 + .ra: lr
+STACK CFI 53c1c .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 53c1e .cfa: sp 40 +
+STACK CFI INIT 0 1e .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 0 6a .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 6 .cfa: sp 40 +
+STACK CFI INIT 53c84 58 .cfa: sp 0 + .ra: lr
+STACK CFI 53c86 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 53cdc 18 .cfa: sp 0 + .ra: lr
+STACK CFI 53ce0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 53cf4 8a .cfa: sp 0 + .ra: lr
+STACK CFI 53cf6 .cfa: sp 12 + r4: .cfa -12 + ^ r5: .cfa -8 + ^ r6: .cfa -4 + ^
+STACK CFI INIT 0 56 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT c 28 .cfa: sp 0 + .ra: lr
+STACK CFI 12 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT c 12 .cfa: sp 0 + .ra: lr
+STACK CFI e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT c 28 .cfa: sp 0 + .ra: lr
+STACK CFI 12 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 20 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT c 2c .cfa: sp 0 + .ra: lr
+STACK CFI 12 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 53d80 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 53d8c 2c .cfa: sp 0 + .ra: lr
+STACK CFI 53d92 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 53db8 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 53dc4 28 .cfa: sp 0 + .ra: lr
+STACK CFI 53dca .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 53dec c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 53df8 12 .cfa: sp 0 + .ra: lr
+STACK CFI 53dfa .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 53e0c 20 .cfa: sp 0 + .ra: lr
+STACK CFI 53e10 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 53e2c c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 53e38 28 .cfa: sp 0 + .ra: lr
+STACK CFI 53e3e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 53e60 1e .cfa: sp 0 + .ra: lr
+STACK CFI 53e62 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 53e60 1e .cfa: sp 0 + .ra: lr
+STACK CFI 53e62 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 53e80 1e .cfa: sp 0 + .ra: lr
+STACK CFI 53e82 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 53ea0 1e .cfa: sp 0 + .ra: lr
+STACK CFI 53ea2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 53ec0 22c .cfa: sp 0 + .ra: lr
+STACK CFI 53ec4 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 540ec 28 .cfa: sp 0 + .ra: lr
+STACK CFI 540f0 .cfa: sp 4 + .ra: .cfa -4 + ^
+STACK CFI 540f6 .cfa: sp 16 +
+STACK CFI INIT 54114 90 .cfa: sp 0 + .ra: lr
+STACK CFI 54116 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 541a4 12 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 541b8 ac .cfa: sp 0 + .ra: lr
+STACK CFI 541be .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 541c8 .cfa: sp 24 +
+STACK CFI INIT 54264 56 .cfa: sp 0 + .ra: lr
+STACK CFI 54266 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 5426a .cfa: sp 24 +
+STACK CFI INIT 542bc 90 .cfa: sp 0 + .ra: lr
+STACK CFI 542be .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 0 12 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 5434c ac .cfa: sp 0 + .ra: lr
+STACK CFI 54352 .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 5435c .cfa: sp 24 +
+STACK CFI INIT 543f8 5a .cfa: sp 0 + .ra: lr
+STACK CFI 543fa .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 298 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI a .cfa: sp 48 +
+STACK CFI INIT 0 90 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 6 .cfa: sp 32 +
+STACK CFI INIT 0 5c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 4 .cfa: sp 24 +
+STACK CFI INIT 54454 40 .cfa: sp 0 + .ra: lr
+STACK CFI 54456 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 54494 90 .cfa: sp 0 + .ra: lr
+STACK CFI 54496 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 5449a .cfa: sp 32 +
+STACK CFI INIT 54524 5e .cfa: sp 0 + .ra: lr
+STACK CFI 54526 .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 54528 .cfa: sp 24 +
+STACK CFI INIT 54584 40 .cfa: sp 0 + .ra: lr
+STACK CFI 54586 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 545c4 388 .cfa: sp 0 + .ra: lr
+STACK CFI 545c8 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 545ca .cfa: sp 56 +
+STACK CFI INIT 5494c 2c .cfa: sp 0 + .ra: lr
+STACK CFI 54950 .cfa: sp 4 + .ra: .cfa -4 + ^
+STACK CFI 54956 .cfa: sp 16 +
+STACK CFI INIT 54978 20 .cfa: sp 0 + .ra: lr
+STACK CFI 5497c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 54998 9e .cfa: sp 0 + .ra: lr
+STACK CFI 5499a .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 54a38 48 .cfa: sp 0 + .ra: lr
+STACK CFI 54a3c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 54a80 12 .cfa: sp 0 + .ra: lr
+STACK CFI 54a82 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 be .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 0 48 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 54a94 74 .cfa: sp 0 + .ra: lr
+STACK CFI 54a96 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 54b08 2c .cfa: sp 0 + .ra: lr
+STACK CFI 54b0a .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 54b34 52 .cfa: sp 0 + .ra: lr
+STACK CFI 54b36 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 54b88 11c .cfa: sp 0 + .ra: lr
+STACK CFI 54b8c .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 54b8e .cfa: sp 72 +
+STACK CFI INIT 54ca4 52 .cfa: sp 0 + .ra: lr
+STACK CFI 54ca6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 72 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 52 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 70 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 136 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 6 .cfa: sp 72 +
+STACK CFI INIT 54cf8 86 .cfa: sp 0 + .ra: lr
+STACK CFI 54cfa .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 54d80 84 .cfa: sp 0 + .ra: lr
+STACK CFI 54d82 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 54d84 .cfa: sp 32 +
+STACK CFI INIT 54e04 1b4 .cfa: sp 0 + .ra: lr
+STACK CFI 54e08 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 54e10 .cfa: sp 40 +
+STACK CFI INIT 0 86 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 0 96 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 4 .cfa: sp 40 +
+STACK CFI INIT 0 220 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI c .cfa: sp 48 +
+STACK CFI INIT 54fb8 112 .cfa: sp 0 + .ra: lr
+STACK CFI 54fbe .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 54fc4 .cfa: sp 56 +
+STACK CFI INIT 550cc 76 .cfa: sp 0 + .ra: lr
+STACK CFI 550ce .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 55144 1c .cfa: sp 0 + .ra: lr
+STACK CFI 55148 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 55160 12 .cfa: sp 0 + .ra: lr
+STACK CFI 55162 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 55174 20 .cfa: sp 0 + .ra: lr
+STACK CFI 55176 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 55194 1c .cfa: sp 0 + .ra: lr
+STACK CFI 55196 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 4c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 6 .cfa: sp 24 +
+STACK CFI INIT 551b0 10 .cfa: sp 0 + .ra: lr
+STACK CFI 551b2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 551c0 1c .cfa: sp 0 + .ra: lr
+STACK CFI 551c4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 551dc 2e .cfa: sp 0 + .ra: lr
+STACK CFI 551de .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 5520c 18 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 55224 1e .cfa: sp 0 + .ra: lr
+STACK CFI 55226 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 1c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 6 .cfa: sp 16 +
+STACK CFI INIT 0 38 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 55244 10 .cfa: sp 0 + .ra: lr
+STACK CFI 55248 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 b8 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 4 .cfa: sp 72 +
+STACK CFI INIT 55254 ce .cfa: sp 0 + .ra: lr
+STACK CFI 5525a .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 5525e .cfa: sp 96 +
+STACK CFI INIT 55324 e .cfa: sp 0 + .ra: lr
+STACK CFI 55326 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 0 40 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 0 64 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 8 .cfa: sp 32 +
+STACK CFI INIT 0 118 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI a .cfa: sp 40 +
+STACK CFI INIT 0 64 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 0 1a .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 0 2f4 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI a .cfa: sp 96 +
+STACK CFI INIT 0 138 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 8 .cfa: sp 1576 +
+STACK CFI INIT 0 1a .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 0 16c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 4 .cfa: sp 72 +
+STACK CFI INIT 0 ac .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 4 .cfa: sp 56 +
+STACK CFI INIT 0 1104 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 8 .cfa: sp 720 +
+STACK CFI INIT 0 26c .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 8 .cfa: sp 1652 +
+STACK CFI c .cfa: sp 1664 +
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 55334 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 5533c 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 55344 18 .cfa: sp 0 + .ra: lr
+STACK CFI 55348 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 5535c 18 .cfa: sp 0 + .ra: lr
+STACK CFI 55360 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 55374 18 .cfa: sp 0 + .ra: lr
+STACK CFI 55378 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 5538c 18 .cfa: sp 0 + .ra: lr
+STACK CFI 55390 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 553a4 18 .cfa: sp 0 + .ra: lr
+STACK CFI 553a8 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 553bc 18 .cfa: sp 0 + .ra: lr
+STACK CFI 553c0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 553d4 18 .cfa: sp 0 + .ra: lr
+STACK CFI 553d8 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 553ec 18 .cfa: sp 0 + .ra: lr
+STACK CFI 553f0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 55404 e .cfa: sp 0 + .ra: lr
+STACK CFI 55406 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 28 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 13b60 28 .cfa: sp 0 + .ra: lr
+STACK CFI 13b62 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 55414 10a .cfa: sp 0 + .ra: lr
+STACK CFI 55418 .cfa: sp 32 + .ra: .cfa -4 + ^ r3: .cfa -32 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI INIT 55520 de .cfa: sp 0 + .ra: lr
+STACK CFI 5552a .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 55600 10c .cfa: sp 0 + .ra: lr
+STACK CFI 55604 .cfa: sp 32 + .ra: .cfa -4 + ^ r3: .cfa -32 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI INIT 5570c ee .cfa: sp 0 + .ra: lr
+STACK CFI 55710 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 557fc 20 .cfa: sp 0 + .ra: lr
+STACK CFI 55800 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 5581c 20 .cfa: sp 0 + .ra: lr
+STACK CFI 55820 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 5583c 20 .cfa: sp 0 + .ra: lr
+STACK CFI 55840 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 5585c 20 .cfa: sp 0 + .ra: lr
+STACK CFI 55860 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 5587c 20 .cfa: sp 0 + .ra: lr
+STACK CFI 55880 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 5589c 20 .cfa: sp 0 + .ra: lr
+STACK CFI 558a0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 558bc 20 .cfa: sp 0 + .ra: lr
+STACK CFI 558c0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 558dc 20 .cfa: sp 0 + .ra: lr
+STACK CFI 558e0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 558fc 6a .cfa: sp 0 + .ra: lr
+STACK CFI 558fe .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 55968 66 .cfa: sp 0 + .ra: lr
+STACK CFI 5596c .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 20 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 559d0 30 .cfa: sp 0 + .ra: lr
+STACK CFI 559d2 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 55a00 74 .cfa: sp 0 + .ra: lr
+STACK CFI 55a04 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 53a5c 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 55a74 28 .cfa: sp 0 + .ra: lr
+STACK CFI 55a76 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 55a9c 28 .cfa: sp 0 + .ra: lr
+STACK CFI 55a9e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 55ac4 1c .cfa: sp 0 + .ra: lr
+STACK CFI 55ac6 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 55ae0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 55aec 24 .cfa: sp 0 + .ra: lr
+STACK CFI 55aee .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 55b10 c4 .cfa: sp 0 + .ra: lr
+STACK CFI 55b14 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 55b1c .cfa: sp 40 +
+STACK CFI INIT 0 f0 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI a .cfa: sp 40 +
+STACK CFI INIT 0 1c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 55bd4 56 .cfa: sp 0 + .ra: lr
+STACK CFI 55bd6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 55c2c 74 .cfa: sp 0 + .ra: lr
+STACK CFI 55c30 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 55ca0 4c .cfa: sp 0 + .ra: lr
+STACK CFI 55ca2 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 55cec f0 .cfa: sp 0 + .ra: lr
+STACK CFI 55cf0 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 55ddc 2c .cfa: sp 0 + .ra: lr
+STACK CFI 55de0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 55e08 2c .cfa: sp 0 + .ra: lr
+STACK CFI 55e0c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 2c .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 55e34 30 .cfa: sp 0 + .ra: lr
+STACK CFI 55e38 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 30 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 55e64 30 .cfa: sp 0 + .ra: lr
+STACK CFI 55e68 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 2c .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 30 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 55e94 20 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 55eb4 14a .cfa: sp 0 + .ra: lr
+STACK CFI 55eb8 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 56000 2c .cfa: sp 0 + .ra: lr
+STACK CFI 56004 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 5602c 2c .cfa: sp 0 + .ra: lr
+STACK CFI 56030 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 30 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 30 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 2c .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 56058 30 .cfa: sp 0 + .ra: lr
+STACK CFI 5605c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 56088 30 .cfa: sp 0 + .ra: lr
+STACK CFI 5608c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 2c .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 560b8 24 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 6 .cfa: sp 16 +
+STACK CFI INIT 560dc 40 .cfa: sp 0 + .ra: lr
+STACK CFI 560de .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 5611c 68 .cfa: sp 0 + .ra: lr
+STACK CFI 5611e .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 56184 59c .cfa: sp 0 + .ra: lr
+STACK CFI 56188 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 5618a .cfa: sp 144 +
+STACK CFI INIT 56720 b8 .cfa: sp 0 + .ra: lr
+STACK CFI 56724 .cfa: sp 32 + r10: .cfa -8 + ^ r11: .cfa -4 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI INIT 567d8 2e .cfa: sp 0 + .ra: lr
+STACK CFI 567da .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 56808 70 .cfa: sp 0 + .ra: lr
+STACK CFI 5680c .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 0 70 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 0 b4 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 14 .cfa: sp 32 +
+STACK CFI INIT 0 38 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 0 84 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI INIT 56878 48 .cfa: sp 0 + .ra: lr
+STACK CFI 5687e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 56882 .cfa: sp 16 +
+STACK CFI INIT 0 104 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI a .cfa: sp 40 +
+STACK CFI INIT 0 64 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 0 34 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 568c0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 568c2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 568c6 .cfa: sp 16 +
+STACK CFI INIT 568fc 144 .cfa: sp 0 + .ra: lr
+STACK CFI 56900 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 56904 .cfa: sp 632 +
+STACK CFI INIT 0 c4 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI a .cfa: sp 48 +
+STACK CFI INIT 0 f4 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI a .cfa: sp 40 +
+STACK CFI INIT 0 9a .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 6 .cfa: sp 48 +
+STACK CFI INIT 0 20 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 4 + r4: .cfa -4 + ^
+STACK CFI INIT 0 184 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI e .cfa: sp 40 +
+STACK CFI INIT 0 314 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI e .cfa: sp 56 +
+STACK CFI INIT 0 19c .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI e .cfa: sp 40 +
+STACK CFI INIT 0 2c0 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI c .cfa: sp 48 +
+STACK CFI INIT 0 1c0 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI e .cfa: sp 40 +
+STACK CFI INIT 0 2a8 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI e .cfa: sp 56 +
+STACK CFI INIT 56a40 32 .cfa: sp 0 + .ra: lr
+STACK CFI 56a42 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 56a74 8e .cfa: sp 0 + .ra: lr
+STACK CFI 56a76 .cfa: sp 8 +
+STACK CFI 56a7a .cfa: sp 36 + .ra: .cfa -12 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 56a7c .cfa: sp 56 +
+STACK CFI INIT 56b04 8e .cfa: sp 0 + .ra: lr
+STACK CFI 56b06 .cfa: sp 8 +
+STACK CFI 56b0a .cfa: sp 36 + .ra: .cfa -12 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 56b0c .cfa: sp 56 +
+STACK CFI INIT 56b94 28c .cfa: sp 0 + .ra: lr
+STACK CFI 56b98 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 56b9a .cfa: sp 184 +
+STACK CFI INIT 56e20 44 .cfa: sp 0 + .ra: lr
+STACK CFI 56e22 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 56e24 .cfa: sp 40 +
+STACK CFI INIT 56e64 2dc .cfa: sp 0 + .ra: lr
+STACK CFI 56e68 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 56e6a .cfa: sp 128 +
+STACK CFI INIT 57140 46 .cfa: sp 0 + .ra: lr
+STACK CFI 57142 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 57144 .cfa: sp 40 +
+STACK CFI INIT 56a74 8e .cfa: sp 0 + .ra: lr
+STACK CFI 56a76 .cfa: sp 8 +
+STACK CFI 56a7a .cfa: sp 36 + .ra: .cfa -12 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 56a7c .cfa: sp 56 +
+STACK CFI INIT 57188 154 .cfa: sp 0 + .ra: lr
+STACK CFI 5718c .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 5718e .cfa: sp 80 +
+STACK CFI INIT 572e0 168 .cfa: sp 0 + .ra: lr
+STACK CFI 572e4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 572e8 .cfa: sp 60 + s16: .cfa -60 + ^ s18: .cfa -52 + ^ s20: .cfa -44 + ^
+STACK CFI 572ea .cfa: sp 144 +
+STACK CFI INIT 57448 134 .cfa: sp 0 + .ra: lr
+STACK CFI 5744c .cfa: sp 32 + .ra: .cfa -4 + ^ r3: .cfa -32 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI INIT 56b04 8e .cfa: sp 0 + .ra: lr
+STACK CFI 56b06 .cfa: sp 8 +
+STACK CFI 56b0a .cfa: sp 36 + .ra: .cfa -12 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 56b0c .cfa: sp 56 +
+STACK CFI INIT 5757c 8c4 .cfa: sp 0 + .ra: lr
+STACK CFI 57580 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 57584 .cfa: sp 904 +
+STACK CFI INIT 57e40 32 .cfa: sp 0 + .ra: lr
+STACK CFI 57e42 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 57e44 .cfa: sp 40 +
+STACK CFI INIT 57e74 8c4 .cfa: sp 0 + .ra: lr
+STACK CFI 57e78 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 57e7c .cfa: sp 904 +
+STACK CFI INIT 58738 9c .cfa: sp 0 + .ra: lr
+STACK CFI 5873a .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 5873e .cfa: sp 600 +
+STACK CFI INIT 587d8 168 .cfa: sp 0 + .ra: lr
+STACK CFI 587dc .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 587e0 .cfa: sp 60 + s16: .cfa -60 + ^ s18: .cfa -52 + ^ s20: .cfa -44 + ^
+STACK CFI 587e2 .cfa: sp 144 +
+STACK CFI INIT 58940 1e8 .cfa: sp 0 + .ra: lr
+STACK CFI 58944 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 58946 .cfa: sp 88 +
+STACK CFI INIT 58b28 84 .cfa: sp 0 + .ra: lr
+STACK CFI 58b2a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 58b30 .cfa: sp 16 +
+STACK CFI INIT 58bac 78 .cfa: sp 0 + .ra: lr
+STACK CFI 58bae .cfa: sp 8 +
+STACK CFI 58bb0 .cfa: sp 24 + .ra: .cfa -12 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^
+STACK CFI INIT 58c24 76 .cfa: sp 0 + .ra: lr
+STACK CFI 58c26 .cfa: sp 8 +
+STACK CFI 58c28 .cfa: sp 24 + .ra: .cfa -12 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^
+STACK CFI INIT 58c9c 284 .cfa: sp 0 + .ra: lr
+STACK CFI 58ca0 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 58ca4 .cfa: sp 208 +
+STACK CFI INIT 58f20 1ce .cfa: sp 0 + .ra: lr
+STACK CFI 58f24 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 58f26 .cfa: sp 128 +
+STACK CFI INIT 590f0 4e .cfa: sp 0 + .ra: lr
+STACK CFI 590f2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 590f4 .cfa: sp 80 +
+STACK CFI INIT 59140 350 .cfa: sp 0 + .ra: lr
+STACK CFI 59142 .cfa: sp 8 +
+STACK CFI 59146 .cfa: sp 44 + .ra: .cfa -12 + ^ r10: .cfa -20 + ^ r11: .cfa -16 + ^ r4: .cfa -44 + ^ r5: .cfa -40 + ^ r6: .cfa -36 + ^ r7: .cfa -32 + ^ r8: .cfa -28 + ^ r9: .cfa -24 + ^
+STACK CFI 59148 .cfa: sp 80 +
+STACK CFI INIT 59490 8a .cfa: sp 0 + .ra: lr
+STACK CFI 59492 .cfa: sp 8 +
+STACK CFI 59496 .cfa: sp 32 + .ra: .cfa -12 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^
+STACK CFI 59498 .cfa: sp 72 +
+STACK CFI INIT 5951c 78 .cfa: sp 0 + .ra: lr
+STACK CFI 5951e .cfa: sp 8 +
+STACK CFI 59520 .cfa: sp 28 + .ra: .cfa -12 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^
+STACK CFI 59522 .cfa: sp 72 +
+STACK CFI INIT 59594 6e .cfa: sp 0 + .ra: lr
+STACK CFI 59596 .cfa: sp 8 +
+STACK CFI 59598 .cfa: sp 24 + .ra: .cfa -12 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^
+STACK CFI INIT 59604 84 .cfa: sp 0 + .ra: lr
+STACK CFI 59606 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 5960c .cfa: sp 16 +
+STACK CFI INIT 59688 178 .cfa: sp 0 + .ra: lr
+STACK CFI 5968c .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 5968e .cfa: sp 88 +
+STACK CFI INIT 59800 6e .cfa: sp 0 + .ra: lr
+STACK CFI 59802 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 59808 .cfa: sp 32 +
+STACK CFI INIT 59870 70 .cfa: sp 0 + .ra: lr
+STACK CFI 59872 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 59878 .cfa: sp 32 +
+STACK CFI INIT 598e0 c0 .cfa: sp 0 + .ra: lr
+STACK CFI 598e2 .cfa: sp 8 +
+STACK CFI 598e6 .cfa: sp 40 + .ra: .cfa -12 + ^ r10: .cfa -16 + ^ r4: .cfa -40 + ^ r5: .cfa -36 + ^ r6: .cfa -32 + ^ r7: .cfa -28 + ^ r8: .cfa -24 + ^ r9: .cfa -20 + ^
+STACK CFI 598e8 .cfa: sp 56 +
+STACK CFI INIT 599a0 198 .cfa: sp 0 + .ra: lr
+STACK CFI 599a6 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 599a8 .cfa: sp 96 +
+STACK CFI INIT 59b38 158 .cfa: sp 0 + .ra: lr
+STACK CFI 59b3c .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 59b3e .cfa: sp 56 +
+STACK CFI INIT 59c90 17a .cfa: sp 0 + .ra: lr
+STACK CFI 59c94 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 59c96 .cfa: sp 128 +
+STACK CFI INIT 59e0c 4e .cfa: sp 0 + .ra: lr
+STACK CFI 59e0e .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 59e10 .cfa: sp 80 +
+STACK CFI INIT 59e5c 2d0 .cfa: sp 0 + .ra: lr
+STACK CFI 59e60 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 59e62 .cfa: sp 80 +
+STACK CFI INIT 5a12c 7c .cfa: sp 0 + .ra: lr
+STACK CFI 5a130 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 5a132 .cfa: sp 64 +
+STACK CFI INIT 5a1a8 74 .cfa: sp 0 + .ra: lr
+STACK CFI 5a1aa .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 5a1ac .cfa: sp 64 +
+STACK CFI INIT 5a21c 68 .cfa: sp 0 + .ra: lr
+STACK CFI 5a21e .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 5a220 .cfa: sp 32 +
+STACK CFI INIT 5a284 2b2 .cfa: sp 0 + .ra: lr
+STACK CFI 5a288 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 5a28a .cfa: sp 48 +
+STACK CFI INIT 5a538 1e8 .cfa: sp 0 + .ra: lr
+STACK CFI 5a53c .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 5a53e .cfa: sp 128 +
+STACK CFI INIT 5a720 f8 .cfa: sp 0 + .ra: lr
+STACK CFI 5a724 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 5a72c .cfa: sp 104 +
+STACK CFI INIT 5a818 2e .cfa: sp 0 + .ra: lr
+STACK CFI 5a81a .cfa: sp 8 +
+STACK CFI 5a81c .cfa: sp 16 + .ra: .cfa -12 + ^ r4: .cfa -16 + ^
+STACK CFI 5a81e .cfa: sp 32 +
+STACK CFI INIT 5a848 80 .cfa: sp 0 + .ra: lr
+STACK CFI 5a84a .cfa: sp 8 +
+STACK CFI 5a84c .cfa: sp 28 + .ra: .cfa -12 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^
+STACK CFI 5a84e .cfa: sp 64 +
+STACK CFI INIT 5a8c8 1d4 .cfa: sp 0 + .ra: lr
+STACK CFI 5a8cc .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 5a8ce .cfa: sp 128 +
+STACK CFI INIT 5aa9c f8 .cfa: sp 0 + .ra: lr
+STACK CFI 5aaa0 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 5aaa8 .cfa: sp 104 +
+STACK CFI INIT 5ab94 2e .cfa: sp 0 + .ra: lr
+STACK CFI 5ab96 .cfa: sp 8 +
+STACK CFI 5ab98 .cfa: sp 16 + .ra: .cfa -12 + ^ r4: .cfa -16 + ^
+STACK CFI 5ab9a .cfa: sp 32 +
+STACK CFI INIT 5abc4 1ce .cfa: sp 0 + .ra: lr
+STACK CFI 5abc8 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 5abca .cfa: sp 128 +
+STACK CFI INIT 5ad94 f8 .cfa: sp 0 + .ra: lr
+STACK CFI 5ad98 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 5ada0 .cfa: sp 104 +
+STACK CFI INIT 5ae8c 2e .cfa: sp 0 + .ra: lr
+STACK CFI 5ae8e .cfa: sp 8 +
+STACK CFI 5ae90 .cfa: sp 16 + .ra: .cfa -12 + ^ r4: .cfa -16 + ^
+STACK CFI 5ae92 .cfa: sp 32 +
+STACK CFI INIT 5abc4 1ce .cfa: sp 0 + .ra: lr
+STACK CFI 5abc8 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 5abca .cfa: sp 128 +
+STACK CFI INIT 5ad94 f8 .cfa: sp 0 + .ra: lr
+STACK CFI 5ad98 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 5ada0 .cfa: sp 104 +
+STACK CFI INIT 5ae8c 2e .cfa: sp 0 + .ra: lr
+STACK CFI 5ae8e .cfa: sp 8 +
+STACK CFI 5ae90 .cfa: sp 16 + .ra: .cfa -12 + ^ r4: .cfa -16 + ^
+STACK CFI 5ae92 .cfa: sp 32 +
+STACK CFI INIT 5aebc 246 .cfa: sp 0 + .ra: lr
+STACK CFI 5aec0 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 5aec2 .cfa: sp 152 +
+STACK CFI INIT 5b104 fc .cfa: sp 0 + .ra: lr
+STACK CFI 5b108 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 5b110 .cfa: sp 104 +
+STACK CFI INIT 5b200 2e .cfa: sp 0 + .ra: lr
+STACK CFI 5b202 .cfa: sp 8 +
+STACK CFI 5b204 .cfa: sp 16 + .ra: .cfa -12 + ^ r4: .cfa -16 + ^
+STACK CFI 5b206 .cfa: sp 32 +
+STACK CFI INIT 5b230 3a .cfa: sp 0 + .ra: lr
+STACK CFI 5b232 .cfa: sp 8 +
+STACK CFI 5b234 .cfa: sp 24 + .ra: .cfa -12 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^
+STACK CFI 5b236 .cfa: sp 48 +
+STACK CFI INIT 5b26c 202 .cfa: sp 0 + .ra: lr
+STACK CFI 5b270 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 5b272 .cfa: sp 152 +
+STACK CFI INIT 5b470 fc .cfa: sp 0 + .ra: lr
+STACK CFI 5b474 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 5b47c .cfa: sp 104 +
+STACK CFI INIT 5b56c 2e .cfa: sp 0 + .ra: lr
+STACK CFI 5b56e .cfa: sp 8 +
+STACK CFI 5b570 .cfa: sp 16 + .ra: .cfa -12 + ^ r4: .cfa -16 + ^
+STACK CFI 5b572 .cfa: sp 32 +
+STACK CFI INIT 5b59c 2d2 .cfa: sp 0 + .ra: lr
+STACK CFI 5b5a0 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 5b5a2 .cfa: sp 32 +
+STACK CFI INIT 5b870 192 .cfa: sp 0 + .ra: lr
+STACK CFI 5b874 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 5b876 .cfa: sp 136 +
+STACK CFI INIT 5ba04 f8 .cfa: sp 0 + .ra: lr
+STACK CFI 5ba08 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 5ba10 .cfa: sp 104 +
+STACK CFI INIT 5bafc 26 .cfa: sp 0 + .ra: lr
+STACK CFI 5bafe .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 5bb00 .cfa: sp 32 +
+STACK CFI INIT 5bb24 76 .cfa: sp 0 + .ra: lr
+STACK CFI 5bb26 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 5bb28 .cfa: sp 64 +
+STACK CFI INIT 5bb9c 17e .cfa: sp 0 + .ra: lr
+STACK CFI 5bba0 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 5bba2 .cfa: sp 128 +
+STACK CFI INIT 5bd1c f8 .cfa: sp 0 + .ra: lr
+STACK CFI 5bd20 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 5bd28 .cfa: sp 104 +
+STACK CFI INIT 5be14 26 .cfa: sp 0 + .ra: lr
+STACK CFI 5be16 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 5be18 .cfa: sp 32 +
+STACK CFI INIT 5be3c 17a .cfa: sp 0 + .ra: lr
+STACK CFI 5be40 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 5be42 .cfa: sp 128 +
+STACK CFI INIT 5bfb8 f8 .cfa: sp 0 + .ra: lr
+STACK CFI 5bfbc .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 5bfc4 .cfa: sp 104 +
+STACK CFI INIT 5c0b0 26 .cfa: sp 0 + .ra: lr
+STACK CFI 5c0b2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 5c0b4 .cfa: sp 32 +
+STACK CFI INIT 5c0d8 178 .cfa: sp 0 + .ra: lr
+STACK CFI 5c0dc .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 5c0de .cfa: sp 128 +
+STACK CFI INIT 5c250 f8 .cfa: sp 0 + .ra: lr
+STACK CFI 5c254 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 5c25c .cfa: sp 104 +
+STACK CFI INIT 5c348 26 .cfa: sp 0 + .ra: lr
+STACK CFI 5c34a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 5c34c .cfa: sp 32 +
+STACK CFI INIT 5c370 1f4 .cfa: sp 0 + .ra: lr
+STACK CFI 5c374 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 5c376 .cfa: sp 152 +
+STACK CFI INIT 5c564 fc .cfa: sp 0 + .ra: lr
+STACK CFI 5c568 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 5c570 .cfa: sp 104 +
+STACK CFI INIT 5c660 26 .cfa: sp 0 + .ra: lr
+STACK CFI 5c662 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 5c664 .cfa: sp 32 +
+STACK CFI INIT 5c688 32 .cfa: sp 0 + .ra: lr
+STACK CFI 5c68a .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 5c68c .cfa: sp 48 +
+STACK CFI INIT 5c6bc 210 .cfa: sp 0 + .ra: lr
+STACK CFI 5c6c0 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 5c6c2 .cfa: sp 160 +
+STACK CFI INIT 5c8cc fc .cfa: sp 0 + .ra: lr
+STACK CFI 5c8d0 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 5c8d8 .cfa: sp 104 +
+STACK CFI INIT 5c9c8 26 .cfa: sp 0 + .ra: lr
+STACK CFI 5c9ca .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 5c9cc .cfa: sp 32 +
+STACK CFI INIT 5c9f0 3b4 .cfa: sp 0 + .ra: lr
+STACK CFI 5c9f2 .cfa: sp 8 +
+STACK CFI 5c9f8 .cfa: sp 44 + .ra: .cfa -12 + ^ r10: .cfa -20 + ^ r11: .cfa -16 + ^ r4: .cfa -44 + ^ r5: .cfa -40 + ^ r6: .cfa -36 + ^ r7: .cfa -32 + ^ r8: .cfa -28 + ^ r9: .cfa -24 + ^
+STACK CFI 5c9fa .cfa: sp 120 +
+STACK CFI INIT 5cda4 114 .cfa: sp 0 + .ra: lr
+STACK CFI 5cda6 .cfa: sp 8 +
+STACK CFI 5cdaa .cfa: sp 44 + .ra: .cfa -12 + ^ r10: .cfa -20 + ^ r11: .cfa -16 + ^ r4: .cfa -44 + ^ r5: .cfa -40 + ^ r6: .cfa -36 + ^ r7: .cfa -32 + ^ r8: .cfa -28 + ^ r9: .cfa -24 + ^
+STACK CFI 5cdac .cfa: sp 360 +
+STACK CFI INIT 5ceb8 70 .cfa: sp 0 + .ra: lr
+STACK CFI 5ceba .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 5cebc .cfa: sp 64 +
+STACK CFI INIT 5cf28 13c .cfa: sp 0 + .ra: lr
+STACK CFI 5cf2c .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 5cf2e .cfa: sp 72 +
+STACK CFI INIT 5d064 22 .cfa: sp 0 + .ra: lr
+STACK CFI 5d066 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 5d068 .cfa: sp 24 +
+STACK CFI INIT 5d088 76 .cfa: sp 0 + .ra: lr
+STACK CFI 5d08a .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 5d08c .cfa: sp 88 +
+STACK CFI INIT 5d100 76 .cfa: sp 0 + .ra: lr
+STACK CFI 5d102 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 5d104 .cfa: sp 88 +
+STACK CFI INIT 5d178 72 .cfa: sp 0 + .ra: lr
+STACK CFI 5d17a .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 5d17c .cfa: sp 72 +
+STACK CFI INIT 5d1ec 29a .cfa: sp 0 + .ra: lr
+STACK CFI 5d1ee .cfa: sp 8 +
+STACK CFI 5d1f2 .cfa: sp 44 + .ra: .cfa -12 + ^ r10: .cfa -20 + ^ r11: .cfa -16 + ^ r4: .cfa -44 + ^ r5: .cfa -40 + ^ r6: .cfa -36 + ^ r7: .cfa -32 + ^ r8: .cfa -28 + ^ r9: .cfa -24 + ^
+STACK CFI 5d1f4 .cfa: sp 112 +
+STACK CFI INIT 5d488 1dc .cfa: sp 0 + .ra: lr
+STACK CFI 5d48c .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 5d48e .cfa: sp 144 +
+STACK CFI INIT 5d664 164 .cfa: sp 0 + .ra: lr
+STACK CFI 5d668 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 5d66a .cfa: sp 64 +
+STACK CFI INIT 5d7c8 c8 .cfa: sp 0 + .ra: lr
+STACK CFI 5d7d0 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 5d890 8e .cfa: sp 0 + .ra: lr
+STACK CFI 5d892 .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 5d894 .cfa: sp 32 +
+STACK CFI INIT 5d920 a0 .cfa: sp 0 + .ra: lr
+STACK CFI 5d922 .cfa: sp 8 +
+STACK CFI 5d924 .cfa: sp 20 + .ra: .cfa -12 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^
+STACK CFI 5d926 .cfa: sp 32 +
+STACK CFI INIT 5d9c0 1b4 .cfa: sp 0 + .ra: lr
+STACK CFI 5d9c4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 5d9c6 .cfa: sp 136 +
+STACK CFI INIT 5db74 3a2 .cfa: sp 0 + .ra: lr
+STACK CFI 5db76 .cfa: sp 8 +
+STACK CFI 5db7c .cfa: sp 44 + .ra: .cfa -12 + ^ r10: .cfa -20 + ^ r11: .cfa -16 + ^ r4: .cfa -44 + ^ r5: .cfa -40 + ^ r6: .cfa -36 + ^ r7: .cfa -32 + ^ r8: .cfa -28 + ^ r9: .cfa -24 + ^
+STACK CFI 5db7e .cfa: sp 120 +
+STACK CFI INIT 5df18 f8 .cfa: sp 0 + .ra: lr
+STACK CFI 5df1a .cfa: sp 8 +
+STACK CFI 5df1e .cfa: sp 40 + .ra: .cfa -12 + ^ r10: .cfa -16 + ^ r4: .cfa -40 + ^ r5: .cfa -36 + ^ r6: .cfa -32 + ^ r7: .cfa -28 + ^ r8: .cfa -24 + ^ r9: .cfa -20 + ^
+STACK CFI 5df20 .cfa: sp 160 +
+STACK CFI INIT 5e010 72 .cfa: sp 0 + .ra: lr
+STACK CFI 5e012 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 5e014 .cfa: sp 64 +
+STACK CFI INIT 5e084 134 .cfa: sp 0 + .ra: lr
+STACK CFI 5e088 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 5e08a .cfa: sp 72 +
+STACK CFI INIT 5e1b8 24 .cfa: sp 0 + .ra: lr
+STACK CFI 5e1ba .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 5e1bc .cfa: sp 24 +
+STACK CFI INIT 5e1dc 78 .cfa: sp 0 + .ra: lr
+STACK CFI 5e1de .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 5e1e0 .cfa: sp 88 +
+STACK CFI INIT 5e254 78 .cfa: sp 0 + .ra: lr
+STACK CFI 5e256 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 5e258 .cfa: sp 88 +
+STACK CFI INIT 5e2cc 74 .cfa: sp 0 + .ra: lr
+STACK CFI 5e2ce .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 5e2d0 .cfa: sp 72 +
+STACK CFI INIT 5e340 294 .cfa: sp 0 + .ra: lr
+STACK CFI 5e342 .cfa: sp 8 +
+STACK CFI 5e346 .cfa: sp 44 + .ra: .cfa -12 + ^ r10: .cfa -20 + ^ r11: .cfa -16 + ^ r4: .cfa -44 + ^ r5: .cfa -40 + ^ r6: .cfa -36 + ^ r7: .cfa -32 + ^ r8: .cfa -28 + ^ r9: .cfa -24 + ^
+STACK CFI 5e348 .cfa: sp 112 +
+STACK CFI INIT 5e5d4 7c .cfa: sp 0 + .ra: lr
+STACK CFI 5e5d6 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 5e5da .cfa: sp 56 +
+STACK CFI INIT 5e650 10c .cfa: sp 0 + .ra: lr
+STACK CFI 5e654 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 5e658 .cfa: sp 656 +
+STACK CFI INIT 5e75c 28 .cfa: sp 0 + .ra: lr
+STACK CFI 5e75e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 5e760 .cfa: sp 32 +
+STACK CFI INIT 5e784 10c .cfa: sp 0 + .ra: lr
+STACK CFI 5e788 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 5e78c .cfa: sp 656 +
+STACK CFI INIT 5e890 28 .cfa: sp 0 + .ra: lr
+STACK CFI 5e892 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 5e894 .cfa: sp 32 +
+STACK CFI INIT 5e8b8 40 .cfa: sp 0 + .ra: lr
+STACK CFI 5e8be .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 5e8f8 164 .cfa: sp 0 + .ra: lr
+STACK CFI 5e8fc .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 5e900 .cfa: sp 2212 +
+STACK CFI 5e902 .cfa: sp 2216 +
+STACK CFI INIT 5ea5c 10c .cfa: sp 0 + .ra: lr
+STACK CFI 5ea60 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 5ea64 .cfa: sp 656 +
+STACK CFI INIT 5eb68 26 .cfa: sp 0 + .ra: lr
+STACK CFI 5eb6a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 5eb6c .cfa: sp 32 +
+STACK CFI INIT 5eb90 10c .cfa: sp 0 + .ra: lr
+STACK CFI 5eb94 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 5eb98 .cfa: sp 656 +
+STACK CFI INIT 5ec9c 26 .cfa: sp 0 + .ra: lr
+STACK CFI 5ec9e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 5eca0 .cfa: sp 32 +
+STACK CFI INIT 5ecc4 15c .cfa: sp 0 + .ra: lr
+STACK CFI 5ecc8 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 5eccc .cfa: sp 2212 +
+STACK CFI 5ecce .cfa: sp 2216 +
+STACK CFI INIT 5ee20 11c .cfa: sp 0 + .ra: lr
+STACK CFI 5ee26 .cfa: sp 32 + .ra: .cfa -4 + ^ r3: .cfa -32 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI INIT 5ef3c 950 .cfa: sp 0 + .ra: lr
+STACK CFI 5ef40 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 5ef44 .cfa: sp 2564 +
+STACK CFI 5ef46 .cfa: sp 2568 +
+STACK CFI INIT 5f88c 154 .cfa: sp 0 + .ra: lr
+STACK CFI 5f890 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 5f894 .cfa: sp 2716 +
+STACK CFI 5f896 .cfa: sp 2744 +
+STACK CFI INIT 5f9e0 948 .cfa: sp 0 + .ra: lr
+STACK CFI 5f9e4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 5f9e8 .cfa: sp 2564 +
+STACK CFI 5f9ea .cfa: sp 2568 +
+STACK CFI INIT 60328 30 .cfa: sp 0 + .ra: lr
+STACK CFI 6032a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 6032c .cfa: sp 40 +
+STACK CFI INIT 60358 14c .cfa: sp 0 + .ra: lr
+STACK CFI 6035e .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 60362 .cfa: sp 48 +
+STACK CFI INIT 604a4 60 .cfa: sp 0 + .ra: lr
+STACK CFI 604a6 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 60504 44 .cfa: sp 0 + .ra: lr
+STACK CFI 60506 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 60548 360 .cfa: sp 0 + .ra: lr
+STACK CFI 6054c .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 6054e .cfa: sp 104 +
+STACK CFI INIT 608a8 100 .cfa: sp 0 + .ra: lr
+STACK CFI 608ae .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 608b2 .cfa: sp 600 +
+STACK CFI INIT 609a8 26 .cfa: sp 0 + .ra: lr
+STACK CFI 609aa .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 609ac .cfa: sp 32 +
+STACK CFI INIT 609d0 100 .cfa: sp 0 + .ra: lr
+STACK CFI 609d6 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 609da .cfa: sp 600 +
+STACK CFI INIT 60ad0 26 .cfa: sp 0 + .ra: lr
+STACK CFI 60ad2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 60ad4 .cfa: sp 32 +
+STACK CFI INIT 60af8 100 .cfa: sp 0 + .ra: lr
+STACK CFI 60afe .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 60b02 .cfa: sp 600 +
+STACK CFI INIT 60bf8 26 .cfa: sp 0 + .ra: lr
+STACK CFI 60bfa .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 60bfc .cfa: sp 32 +
+STACK CFI INIT 60c20 398 .cfa: sp 0 + .ra: lr
+STACK CFI 60c24 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 60c26 .cfa: sp 176 +
+STACK CFI INIT 60fb8 100 .cfa: sp 0 + .ra: lr
+STACK CFI 60fbe .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 60fc2 .cfa: sp 600 +
+STACK CFI INIT 610b8 2e .cfa: sp 0 + .ra: lr
+STACK CFI 610ba .cfa: sp 8 +
+STACK CFI 610bc .cfa: sp 16 + .ra: .cfa -12 + ^ r4: .cfa -16 + ^
+STACK CFI 610be .cfa: sp 32 +
+STACK CFI INIT 610e8 100 .cfa: sp 0 + .ra: lr
+STACK CFI 610ee .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 610f2 .cfa: sp 600 +
+STACK CFI INIT 611e8 2e .cfa: sp 0 + .ra: lr
+STACK CFI 611ea .cfa: sp 8 +
+STACK CFI 611ec .cfa: sp 16 + .ra: .cfa -12 + ^ r4: .cfa -16 + ^
+STACK CFI 611ee .cfa: sp 32 +
+STACK CFI INIT 61218 100 .cfa: sp 0 + .ra: lr
+STACK CFI 6121e .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 61222 .cfa: sp 600 +
+STACK CFI INIT 61318 2e .cfa: sp 0 + .ra: lr
+STACK CFI 6131a .cfa: sp 8 +
+STACK CFI 6131c .cfa: sp 16 + .ra: .cfa -12 + ^ r4: .cfa -16 + ^
+STACK CFI 6131e .cfa: sp 32 +
+STACK CFI INIT 61348 8c .cfa: sp 0 + .ra: lr
+STACK CFI 6134e .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 61352 .cfa: sp 32 +
+STACK CFI INIT 613d4 9c .cfa: sp 0 + .ra: lr
+STACK CFI 613d6 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 613da .cfa: sp 24 +
+STACK CFI INIT 61470 1d6 .cfa: sp 0 + .ra: lr
+STACK CFI 61474 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 61480 .cfa: sp 184 +
+STACK CFI INIT 61648 486 .cfa: sp 0 + .ra: lr
+STACK CFI 6164c .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 6164e .cfa: sp 216 +
+STACK CFI INIT 61ad0 6bc .cfa: sp 0 + .ra: lr
+STACK CFI 61ad4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 61ad6 .cfa: sp 488 +
+STACK CFI INIT 6218c 4e .cfa: sp 0 + .ra: lr
+STACK CFI 6218e .cfa: sp 8 +
+STACK CFI 62190 .cfa: sp 20 + .ra: .cfa -12 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^
+STACK CFI 62192 .cfa: sp 72 +
+STACK CFI INIT 621dc 12a .cfa: sp 0 + .ra: lr
+STACK CFI 621de .cfa: sp 8 +
+STACK CFI 621e4 .cfa: sp 32 + .ra: .cfa -12 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^
+STACK CFI 621e6 .cfa: sp 192 +
+STACK CFI INIT 0 5e .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 6 .cfa: sp 32 +
+STACK CFI INIT 0 90 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 6 .cfa: sp 24 +
+STACK CFI INIT 62308 144 .cfa: sp 0 + .ra: lr
+STACK CFI 6230c .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 62316 .cfa: sp 72 +
+STACK CFI INIT 6244c 408 .cfa: sp 0 + .ra: lr
+STACK CFI 62450 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 62452 .cfa: sp 200 +
+STACK CFI INIT 62854 670 .cfa: sp 0 + .ra: lr
+STACK CFI 62856 .cfa: sp 8 +
+STACK CFI 6285a .cfa: sp 44 + .ra: .cfa -12 + ^ r10: .cfa -20 + ^ r11: .cfa -16 + ^ r4: .cfa -44 + ^ r5: .cfa -40 + ^ r6: .cfa -36 + ^ r7: .cfa -32 + ^ r8: .cfa -28 + ^ r9: .cfa -24 + ^
+STACK CFI 6285c .cfa: sp 280 +
+STACK CFI INIT 62ec4 40 .cfa: sp 0 + .ra: lr
+STACK CFI 62ec6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 62ec8 .cfa: sp 56 +
+STACK CFI INIT 62f04 104 .cfa: sp 0 + .ra: lr
+STACK CFI 62f08 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 62f0a .cfa: sp 144 +
+STACK CFI INIT 15cb4 30 .cfa: sp 0 + .ra: lr
+STACK CFI 15cb6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 28 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 4e .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 53234 24 .cfa: sp 0 + .ra: lr
+STACK CFI 53236 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 6 .cfa: sp 16 +
+STACK CFI INIT 0 38 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 0 40 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 0 d6 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 14 .cfa: sp 48 +
+STACK CFI INIT 0 fc .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI c .cfa: sp 48 +
+STACK CFI INIT 0 c4 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI c .cfa: sp 40 +
+STACK CFI INIT 0 70 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^ r7: .cfa -4 + ^
+STACK CFI INIT 0 1b8 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 8 .cfa: sp 80 +
+STACK CFI INIT 0 e0 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 12 .cfa: sp 24 +
+STACK CFI INIT 0 128 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 8 .cfa: sp 32 +
+STACK CFI INIT 0 134 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 8 .cfa: sp 352 +
+STACK CFI INIT 0 20 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 20 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 20 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 20 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 20 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 20 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 20 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 e2 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 8 .cfa: sp 32 +
+STACK CFI INIT 0 1a4 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 6 .cfa: sp 112 +
+STACK CFI INIT 0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 4 .cfa: sp 40 +
+STACK CFI INIT 0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 4 .cfa: sp 40 +
+STACK CFI INIT 0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 4 .cfa: sp 40 +
+STACK CFI INIT 0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 4 .cfa: sp 40 +
+STACK CFI INIT 0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 4 .cfa: sp 40 +
+STACK CFI INIT 0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 4 .cfa: sp 40 +
+STACK CFI INIT 0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 4 .cfa: sp 40 +
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 a .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 0 a .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 0 a .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 0 a .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 a .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 0 a .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 2c .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 ea .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 212 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 a .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 0 a .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 0 2c .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 2c .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 2c .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 2c .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 2c .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 16 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 0 4a .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 8 .cfa: sp 48 +
+STACK CFI INIT 0 86 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 6 .cfa: sp 48 +
+STACK CFI INIT 0 34 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 0 32 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 4 .cfa: sp 24 +
+STACK CFI INIT 0 8c .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 6 .cfa: sp 48 +
+STACK CFI INIT 0 2c .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 1c .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 16 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 4 + r4: .cfa -4 + ^
+STACK CFI INIT 0 2c .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 4 + r4: .cfa -4 + ^
+STACK CFI INIT 0 2c .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 20 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 20 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 28 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 0 16 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 0 2c .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 22 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 e .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 0 22 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 e .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 0 30 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 cc .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r3: .cfa -32 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI INIT 0 26 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 60 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 6 .cfa: sp 280 +
+STACK CFI INIT 0 60 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 6 .cfa: sp 280 +
+STACK CFI INIT 0 60 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 6 .cfa: sp 280 +
+STACK CFI INIT 0 60 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 6 .cfa: sp 280 +
+STACK CFI INIT 0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 0 60 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 6 .cfa: sp 280 +
+STACK CFI INIT 0 60 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 6 .cfa: sp 280 +
+STACK CFI INIT 0 60 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 6 .cfa: sp 280 +
+STACK CFI INIT 0 64 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 4 .cfa: sp 280 +
+STACK CFI INIT 0 38 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 0 64 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 4 .cfa: sp 280 +
+STACK CFI INIT 0 38 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 0 64 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 4 .cfa: sp 280 +
+STACK CFI INIT 0 38 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 0 64 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 4 .cfa: sp 280 +
+STACK CFI INIT 0 38 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 53234 24 .cfa: sp 0 + .ra: lr
+STACK CFI 53236 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 63008 28 .cfa: sp 0 + .ra: lr
+STACK CFI 6300a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 c8 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r3: .cfa -32 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI INIT 0 1c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 4 .cfa: sp 32 +
+STACK CFI INIT 0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 6 .cfa: sp 16 +
+STACK CFI INIT 0 da .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI a .cfa: sp 64 +
+STACK CFI INIT 0 40 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 0 16 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 16 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 16 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 16 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 16 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 16 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 16 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 16 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 16 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 16 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 30 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 16 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 16 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 30 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 44 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI a .cfa: sp 16 +
+STACK CFI INIT 0 e6 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI a .cfa: sp 112 +
+STACK CFI INIT 0 44 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 0 20 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 8 .cfa: sp 72 +
+STACK CFI INIT 0 20 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 8 .cfa: sp 72 +
+STACK CFI INIT 0 20 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 8 .cfa: sp 72 +
+STACK CFI INIT 0 20 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 8 .cfa: sp 72 +
+STACK CFI INIT 0 20 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 8 .cfa: sp 72 +
+STACK CFI INIT 0 20 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 8 .cfa: sp 72 +
+STACK CFI INIT 0 20 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 8 .cfa: sp 72 +
+STACK CFI INIT 0 20 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 8 .cfa: sp 72 +
+STACK CFI INIT 63030 c .cfa: sp 0 + .ra: lr
+STACK CFI 63032 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 2c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 0 64 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 0 28 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 6303c 34 .cfa: sp 0 + .ra: lr
+STACK CFI 6303e .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 63070 18c .cfa: sp 0 + .ra: lr
+STACK CFI 63074 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 6307c .cfa: sp 48 +
+STACK CFI INIT 631fc 48 .cfa: sp 0 + .ra: lr
+STACK CFI 631fe .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 63200 .cfa: sp 24 +
+STACK CFI INIT 63244 5c .cfa: sp 0 + .ra: lr
+STACK CFI 63246 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 632a0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 632a4 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 44 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 e8 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 0 100 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 8 .cfa: sp 56 +
+STACK CFI INIT 0 52 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 4 .cfa: sp 24 +
+STACK CFI INIT 0 3e .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 28 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 0 58 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 38 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 0 4e .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15ce4 30 .cfa: sp 0 + .ra: lr
+STACK CFI 15ce6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 632a8 114 .cfa: sp 0 + .ra: lr
+STACK CFI 632ac .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI INIT 53a5c 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 16 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 16 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 16 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 16 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 16 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 16 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 16 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 16 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 28 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 28 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 28 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 28 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 28 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 28 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c4 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 7e .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 6 .cfa: sp 160 +
+STACK CFI INIT 0 7c .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 8 .cfa: sp 552 +
+STACK CFI INIT 0 1e .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 0 1c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 10 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 633cc 74 .cfa: sp 0 + .ra: lr
+STACK CFI 633ce .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 633d0 .cfa: sp 32 +
+STACK CFI INIT 63440 50 .cfa: sp 0 + .ra: lr
+STACK CFI 63442 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 63490 50 .cfa: sp 0 + .ra: lr
+STACK CFI 63492 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 634e0 104 .cfa: sp 0 + .ra: lr
+STACK CFI 634e4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 634ee .cfa: sp 48 +
+STACK CFI INIT 15dc8 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 635e8 18 .cfa: sp 0 + .ra: lr
+STACK CFI 635ec .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 63600 12 .cfa: sp 0 + .ra: lr
+STACK CFI 63602 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 63614 1e .cfa: sp 0 + .ra: lr
+STACK CFI 63616 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 63634 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 63638 38 .cfa: sp 0 + .ra: lr
+STACK CFI 6363a .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 63670 68 .cfa: sp 0 + .ra: lr
+STACK CFI 63674 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 63676 .cfa: sp 48 +
+STACK CFI INIT 636d8 24 .cfa: sp 0 + .ra: lr
+STACK CFI 636da .cfa: sp 8 + r4: .cfa -8 + ^ r5: .cfa -4 + ^
+STACK CFI INIT 636fc 3e .cfa: sp 0 + .ra: lr
+STACK CFI 636fe .cfa: sp 8 + r4: .cfa -8 + ^ r5: .cfa -4 + ^
+STACK CFI INIT 6373c 19a .cfa: sp 0 + .ra: lr
+STACK CFI 63742 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 63746 .cfa: sp 72 +
+STACK CFI INIT 638d8 dc .cfa: sp 0 + .ra: lr
+STACK CFI 638dc .cfa: sp 40 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r3: .cfa -40 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI INIT 639b4 dc .cfa: sp 0 + .ra: lr
+STACK CFI 639b8 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI INIT 63a90 96 .cfa: sp 0 + .ra: lr
+STACK CFI 63a94 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 63a9e .cfa: sp 56 +
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 63b28 64 .cfa: sp 0 + .ra: lr
+STACK CFI 63b2a .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 63b8c 38 .cfa: sp 0 + .ra: lr
+STACK CFI 63b90 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 63bc4 38 .cfa: sp 0 + .ra: lr
+STACK CFI 63bc8 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 18 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 28 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 0 64 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 6 .cfa: sp 40 +
+STACK CFI INIT 0 78 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 63bfc 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 63c00 18 .cfa: sp 0 + .ra: lr
+STACK CFI 63c04 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 63c18 12 .cfa: sp 0 + .ra: lr
+STACK CFI 63c1a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 63c2c 1a8 .cfa: sp 0 + .ra: lr
+STACK CFI 63c30 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 63c32 .cfa: sp 88 +
+STACK CFI INIT 15dc8 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 53a84 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15fb8 18 .cfa: sp 0 + .ra: lr
+STACK CFI 15fbc .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15f92 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 16 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 +
+STACK CFI INIT 0 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 58 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 0 5e .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 0 5e .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 1607c 1c .cfa: sp 0 + .ra: lr
+STACK CFI 16080 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 63dd4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 63dd6 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 63de8 2c .cfa: sp 0 + .ra: lr
+STACK CFI 63dec .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 63e14 18 .cfa: sp 0 + .ra: lr
+STACK CFI 63e18 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 63e2c 12 .cfa: sp 0 + .ra: lr
+STACK CFI 63e2e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 63e40 18 .cfa: sp 0 + .ra: lr
+STACK CFI 63e44 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 63e58 12 .cfa: sp 0 + .ra: lr
+STACK CFI 63e5a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 63e6c 12 .cfa: sp 0 + .ra: lr
+STACK CFI 63e6e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 63e80 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 63e88 1a .cfa: sp 0 + .ra: lr
+STACK CFI 63e8a .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 63ea4 36 .cfa: sp 0 + .ra: lr
+STACK CFI 63ea6 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 63ea8 .cfa: sp 32 +
+STACK CFI INIT 63edc 1c .cfa: sp 0 + .ra: lr
+STACK CFI 63ede .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 63ef8 4c .cfa: sp 0 + .ra: lr
+STACK CFI 63efc .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 63f00 .cfa: sp 24 +
+STACK CFI INIT 63f44 40 .cfa: sp 0 + .ra: lr
+STACK CFI 63f46 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 63f84 24 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 63fa8 3c .cfa: sp 0 + .ra: lr
+STACK CFI 63fac .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 63fe4 e .cfa: sp 0 + .ra: lr
+STACK CFI INIT 39b2e 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 39b2e 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 39b2e 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 63ff4 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 63ffc e .cfa: sp 0 + .ra: lr
+STACK CFI INIT 63ffc e .cfa: sp 0 + .ra: lr
+STACK CFI INIT 6400c 3e .cfa: sp 0 + .ra: lr
+STACK CFI 6400e .cfa: sp 12 + r4: .cfa -12 + ^ r5: .cfa -8 + ^ r6: .cfa -4 + ^
+STACK CFI INIT 6404c 3c .cfa: sp 0 + .ra: lr
+STACK CFI 6404e .cfa: sp 12 + r4: .cfa -12 + ^ r5: .cfa -8 + ^ r6: .cfa -4 + ^
+STACK CFI INIT 63ff4 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 39b2e 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 39b2e 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 63fe4 e .cfa: sp 0 + .ra: lr
+STACK CFI INIT 39b2e 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 64088 1c .cfa: sp 0 + .ra: lr
+STACK CFI 6408c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 640a4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 640a6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 640b8 1c .cfa: sp 0 + .ra: lr
+STACK CFI 640bc .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 640d4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 640d6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 640e8 18 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 64100 66 .cfa: sp 0 + .ra: lr
+STACK CFI 64102 .cfa: sp 16 + r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^ r7: .cfa -4 + ^
+STACK CFI INIT 64168 18 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 64180 1c .cfa: sp 0 + .ra: lr
+STACK CFI 64184 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 6419c 12 .cfa: sp 0 + .ra: lr
+STACK CFI 6419e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 641b0 1c .cfa: sp 0 + .ra: lr
+STACK CFI 641b4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 641cc 12 .cfa: sp 0 + .ra: lr
+STACK CFI 641ce .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 641e0 2a .cfa: sp 0 + .ra: lr
+STACK CFI 641e2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 6 .cfa: sp 16 +
+STACK CFI INIT 6420c 4c .cfa: sp 0 + .ra: lr
+STACK CFI 6420e .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 0 44 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI a .cfa: sp 16 +
+STACK CFI INIT 64258 52 .cfa: sp 0 + .ra: lr
+STACK CFI 6425a .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 642ac c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 642b8 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 642c4 1c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 642e0 1c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 642fc 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 642fc 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 64300 14 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 64314 24 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 64338 14 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 6434c 24 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 642fc 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 64370 12 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 64384 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 64390 24 .cfa: sp 0 + .ra: lr
+STACK CFI 64394 .cfa: sp 8 + r4: .cfa -8 + ^ r5: .cfa -4 + ^
+STACK CFI INIT 643b4 1c .cfa: sp 0 + .ra: lr
+STACK CFI 643b8 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 643d0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 643d2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 643e4 12 .cfa: sp 0 + .ra: lr
+STACK CFI 643e6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 643f8 12 .cfa: sp 0 + .ra: lr
+STACK CFI 643fa .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 6440c 28 .cfa: sp 0 + .ra: lr
+STACK CFI 64416 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 64434 12 .cfa: sp 0 + .ra: lr
+STACK CFI 64436 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 64448 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 64454 2a .cfa: sp 0 + .ra: lr
+STACK CFI 64456 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 64480 20 .cfa: sp 0 + .ra: lr
+STACK CFI 64482 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 644a0 44 .cfa: sp 0 + .ra: lr
+STACK CFI 644a4 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 a4 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 16 + r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^ r7: .cfa -4 + ^
+STACK CFI INIT 0 1a .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 4 .cfa: sp 24 +
+STACK CFI INIT 0 a4 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 16 + r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^ r7: .cfa -4 + ^
+STACK CFI INIT 0 1a .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 4 .cfa: sp 24 +
+STACK CFI INIT 644e4 aa .cfa: sp 0 + .ra: lr
+STACK CFI 644e8 .cfa: sp 12 + r4: .cfa -12 + ^ r5: .cfa -8 + ^ r6: .cfa -4 + ^
+STACK CFI INIT 64590 22 .cfa: sp 0 + .ra: lr
+STACK CFI 64592 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 64594 .cfa: sp 32 +
+STACK CFI INIT 645b4 ce .cfa: sp 0 + .ra: lr
+STACK CFI 645b8 .cfa: sp 16 + r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^ r7: .cfa -4 + ^
+STACK CFI INIT 64684 22 .cfa: sp 0 + .ra: lr
+STACK CFI 64686 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 64688 .cfa: sp 40 +
+STACK CFI INIT 646a8 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 646a8 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 646ac 2c .cfa: sp 0 + .ra: lr
+STACK CFI 646ae .cfa: sp 4 + r4: .cfa -4 + ^
+STACK CFI 646b4 .cfa: sp 16 +
+STACK CFI INIT 646d8 2c .cfa: sp 0 + .ra: lr
+STACK CFI 646da .cfa: sp 4 + r4: .cfa -4 + ^
+STACK CFI 646e0 .cfa: sp 16 +
+STACK CFI INIT 15dc8 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 646a8 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 646a8 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 646ac 2c .cfa: sp 0 + .ra: lr
+STACK CFI 646ae .cfa: sp 4 + r4: .cfa -4 + ^
+STACK CFI 646b4 .cfa: sp 16 +
+STACK CFI INIT 646d8 2c .cfa: sp 0 + .ra: lr
+STACK CFI 646da .cfa: sp 4 + r4: .cfa -4 + ^
+STACK CFI 646e0 .cfa: sp 16 +
+STACK CFI INIT 15dc8 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 646a8 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 646a8 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15dc8 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 646ac 2c .cfa: sp 0 + .ra: lr
+STACK CFI 646ae .cfa: sp 4 + r4: .cfa -4 + ^
+STACK CFI 646b4 .cfa: sp 16 +
+STACK CFI INIT 646d8 2c .cfa: sp 0 + .ra: lr
+STACK CFI 646da .cfa: sp 4 + r4: .cfa -4 + ^
+STACK CFI 646e0 .cfa: sp 16 +
+STACK CFI INIT 646a8 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 646a8 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 15dc8 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 646ac 2c .cfa: sp 0 + .ra: lr
+STACK CFI 646ae .cfa: sp 4 + r4: .cfa -4 + ^
+STACK CFI 646b4 .cfa: sp 16 +
+STACK CFI INIT 646d8 2c .cfa: sp 0 + .ra: lr
+STACK CFI 646da .cfa: sp 4 + r4: .cfa -4 + ^
+STACK CFI 646e0 .cfa: sp 16 +
+STACK CFI INIT 64704 1c .cfa: sp 0 + .ra: lr
+STACK CFI 64708 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 64720 12 .cfa: sp 0 + .ra: lr
+STACK CFI 64722 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 64734 1c .cfa: sp 0 + .ra: lr
+STACK CFI 64738 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 64750 12 .cfa: sp 0 + .ra: lr
+STACK CFI 64752 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 64764 1c .cfa: sp 0 + .ra: lr
+STACK CFI 64768 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 64780 12 .cfa: sp 0 + .ra: lr
+STACK CFI 64782 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 64794 1c .cfa: sp 0 + .ra: lr
+STACK CFI 64798 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 647b0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 647b2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 647c4 44 .cfa: sp 0 + .ra: lr
+STACK CFI 647c6 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 64808 44 .cfa: sp 0 + .ra: lr
+STACK CFI 6480a .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 6484c 44 .cfa: sp 0 + .ra: lr
+STACK CFI 6484e .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 64890 44 .cfa: sp 0 + .ra: lr
+STACK CFI 64892 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 6 .cfa: sp 16 +
+STACK CFI INIT 0 54 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 648d4 1c .cfa: sp 0 + .ra: lr
+STACK CFI 648d8 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 648da .cfa: sp 16 +
+STACK CFI INIT 648d4 1c .cfa: sp 0 + .ra: lr
+STACK CFI 648d8 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 648da .cfa: sp 16 +
+STACK CFI INIT 648d4 1c .cfa: sp 0 + .ra: lr
+STACK CFI 648d8 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 648da .cfa: sp 16 +
+STACK CFI INIT 648d4 1c .cfa: sp 0 + .ra: lr
+STACK CFI 648d8 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 648da .cfa: sp 16 +
+STACK CFI INIT 648d4 1c .cfa: sp 0 + .ra: lr
+STACK CFI 648d8 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 648da .cfa: sp 16 +
+STACK CFI INIT 648d4 1c .cfa: sp 0 + .ra: lr
+STACK CFI 648d8 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 648da .cfa: sp 16 +
+STACK CFI INIT 648d4 1c .cfa: sp 0 + .ra: lr
+STACK CFI 648d8 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 648da .cfa: sp 16 +
+STACK CFI INIT 648d4 1c .cfa: sp 0 + .ra: lr
+STACK CFI 648d8 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 648da .cfa: sp 16 +
+STACK CFI INIT 648d4 1c .cfa: sp 0 + .ra: lr
+STACK CFI 648d8 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 648da .cfa: sp 16 +
+STACK CFI INIT 648d4 1c .cfa: sp 0 + .ra: lr
+STACK CFI 648d8 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 648da .cfa: sp 16 +
+STACK CFI INIT 0 44 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI a .cfa: sp 16 +
+STACK CFI INIT 648f0 5c .cfa: sp 0 + .ra: lr
+STACK CFI 648f2 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 6494c 1c .cfa: sp 0 + .ra: lr
+STACK CFI 64950 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 64952 .cfa: sp 16 +
+STACK CFI INIT 6494c 1c .cfa: sp 0 + .ra: lr
+STACK CFI 64950 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 64952 .cfa: sp 16 +
+STACK CFI INIT 6494c 1c .cfa: sp 0 + .ra: lr
+STACK CFI 64950 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 64952 .cfa: sp 16 +
+STACK CFI INIT 6494c 1c .cfa: sp 0 + .ra: lr
+STACK CFI 64950 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 64952 .cfa: sp 16 +
+STACK CFI INIT 6494c 1c .cfa: sp 0 + .ra: lr
+STACK CFI 64950 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 64952 .cfa: sp 16 +
+STACK CFI INIT 6494c 1c .cfa: sp 0 + .ra: lr
+STACK CFI 64950 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 64952 .cfa: sp 16 +
+STACK CFI INIT 64968 64 .cfa: sp 0 + .ra: lr
+STACK CFI 6496e .cfa: sp 12 + r4: .cfa -12 + ^ r5: .cfa -8 + ^ r6: .cfa -4 + ^
+STACK CFI INIT 649cc c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 649d8 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 649e4 9c .cfa: sp 0 + .ra: lr
+STACK CFI 649e8 .cfa: sp 16 + r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^ r7: .cfa -4 + ^
+STACK CFI INIT 64a80 2a .cfa: sp 0 + .ra: lr
+STACK CFI 64a82 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 64aac 14 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 64ac0 c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 64acc c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 64ad8 9a .cfa: sp 0 + .ra: lr
+STACK CFI 64adc .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 64ae0 .cfa: sp 48 +
+STACK CFI INIT 64b74 b4 .cfa: sp 0 + .ra: lr
+STACK CFI 64b78 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 64b7c .cfa: sp 48 +
+STACK CFI INIT 64c28 126 .cfa: sp 0 + .ra: lr
+STACK CFI 64c2c .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 64c30 .cfa: sp 40 +
+STACK CFI INIT 64d50 24 .cfa: sp 0 + .ra: lr
+STACK CFI 64d52 .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 64d54 .cfa: sp 80 +
+STACK CFI INIT 64d74 10c .cfa: sp 0 + .ra: lr
+STACK CFI 64d7c .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI INIT 64e80 12a .cfa: sp 0 + .ra: lr
+STACK CFI 64e84 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI INIT 64fac 78 .cfa: sp 0 + .ra: lr
+STACK CFI 64fb2 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 65024 e4 .cfa: sp 0 + .ra: lr
+STACK CFI 65028 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI INIT 65108 b4 .cfa: sp 0 + .ra: lr
+STACK CFI 6510a .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 651bc 10c .cfa: sp 0 + .ra: lr
+STACK CFI 651c0 .cfa: sp 40 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r3: .cfa -40 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI INIT 652c8 400 .cfa: sp 0 + .ra: lr
+STACK CFI 652cc .cfa: sp 32 + r10: .cfa -8 + ^ r11: .cfa -4 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 652d0 .cfa: sp 128 +
+STACK CFI INIT 656c8 4a8 .cfa: sp 0 + .ra: lr
+STACK CFI 656cc .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^
+STACK CFI 656ce .cfa: sp 136 +
+STACK CFI INIT 65b70 78 .cfa: sp 0 + .ra: lr
+STACK CFI 65b74 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 65b84 .cfa: sp 48 +
+STACK CFI INIT 65be8 16 .cfa: sp 0 + .ra: lr
+STACK CFI 65bea .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 65c00 12 .cfa: sp 0 + .ra: lr
+STACK CFI 65c02 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 65c14 348 .cfa: sp 0 + .ra: lr
+STACK CFI 65c1a .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 65c1e .cfa: sp 144 +
+STACK CFI INIT 65f5c 11c .cfa: sp 0 + .ra: lr
+STACK CFI 65f60 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 65f62 .cfa: sp 56 +
+STACK CFI INIT 66078 12 .cfa: sp 0 + .ra: lr
+STACK CFI 6607a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 6608c 88 .cfa: sp 0 + .ra: lr
+STACK CFI 66094 .cfa: sp 16 + r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^ r7: .cfa -4 + ^
+STACK CFI INIT 66114 16a .cfa: sp 0 + .ra: lr
+STACK CFI 66118 .cfa: sp 12 + r4: .cfa -12 + ^ r5: .cfa -8 + ^ r6: .cfa -4 + ^
+STACK CFI INIT 66280 11c .cfa: sp 0 + .ra: lr
+STACK CFI 66286 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 6628a .cfa: sp 32 +
+STACK CFI INIT 6639c 138 .cfa: sp 0 + .ra: lr
+STACK CFI 663a0 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 663a2 .cfa: sp 360 +
+STACK CFI INIT 65108 b4 .cfa: sp 0 + .ra: lr
+STACK CFI 6510a .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 664d4 220 .cfa: sp 0 + .ra: lr
+STACK CFI 664d8 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 664da .cfa: sp 48 +
+STACK CFI INIT 0 8e .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 12 + r4: .cfa -12 + ^ r5: .cfa -8 + ^ r6: .cfa -4 + ^
+STACK CFI INIT 0 34 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 8 .cfa: sp 24 +
+STACK CFI INIT 666f4 6a .cfa: sp 0 + .ra: lr
+STACK CFI 666f6 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 66760 54 .cfa: sp 0 + .ra: lr
+STACK CFI 66762 .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 66766 .cfa: sp 20 + s16: .cfa -20 + ^
+STACK CFI 6676c .cfa: sp 384 +
+STACK CFI INIT 667b4 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 667bc 54 .cfa: sp 0 + .ra: lr
+STACK CFI 667be .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 667c2 .cfa: sp 20 + s16: .cfa -20 + ^
+STACK CFI 667c8 .cfa: sp 384 +
+STACK CFI INIT 66810 8 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 66818 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 6681c 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 66818 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 6681c 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 66820 1c .cfa: sp 0 + .ra: lr
+STACK CFI 66824 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 6683c 12 .cfa: sp 0 + .ra: lr
+STACK CFI 6683e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 66850 1c .cfa: sp 0 + .ra: lr
+STACK CFI 66854 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 6686c 12 .cfa: sp 0 + .ra: lr
+STACK CFI 6686e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 6 .cfa: sp 16 +
+STACK CFI INIT 66880 18 .cfa: sp 0 + .ra: lr
+STACK CFI 66882 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 66880 18 .cfa: sp 0 + .ra: lr
+STACK CFI 66882 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 54 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 66898 1c .cfa: sp 0 + .ra: lr
+STACK CFI 6689c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 6689e .cfa: sp 16 +
+STACK CFI INIT 668b4 1c .cfa: sp 0 + .ra: lr
+STACK CFI 668b8 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 668ba .cfa: sp 16 +
+STACK CFI INIT 0 44 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI a .cfa: sp 16 +
+STACK CFI INIT 648f0 5c .cfa: sp 0 + .ra: lr
+STACK CFI 648f2 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 668d0 1c .cfa: sp 0 + .ra: lr
+STACK CFI 668d4 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 668d6 .cfa: sp 16 +
+STACK CFI INIT 668ec 1c .cfa: sp 0 + .ra: lr
+STACK CFI 668f0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 668f2 .cfa: sp 16 +
+STACK CFI INIT 0 118 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 0 28 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 66908 c8 .cfa: sp 0 + .ra: lr
+STACK CFI 6690c .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 669d0 f0 .cfa: sp 0 + .ra: lr
+STACK CFI 669d4 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 66ac0 f4 .cfa: sp 0 + .ra: lr
+STACK CFI 66ac6 .cfa: sp 32 + .ra: .cfa -4 + ^ r3: .cfa -32 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI INIT 66bb4 f4 .cfa: sp 0 + .ra: lr
+STACK CFI 66bb8 .cfa: sp 32 + .ra: .cfa -4 + ^ r3: .cfa -32 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI INIT 66ca8 12c .cfa: sp 0 + .ra: lr
+STACK CFI 66cac .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 66cae .cfa: sp 288 +
+STACK CFI INIT 66dd4 120 .cfa: sp 0 + .ra: lr
+STACK CFI 66dd8 .cfa: sp 32 + .ra: .cfa -4 + ^ r3: .cfa -32 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI INIT 53234 24 .cfa: sp 0 + .ra: lr
+STACK CFI 53236 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 c4 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 66ef4 1c2 .cfa: sp 0 + .ra: lr
+STACK CFI 66ef8 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 63008 28 .cfa: sp 0 + .ra: lr
+STACK CFI 6300a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 670b8 1ce .cfa: sp 0 + .ra: lr
+STACK CFI 670bc .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 6 .cfa: sp 16 +
+STACK CFI INIT 53258 40 .cfa: sp 0 + .ra: lr
+STACK CFI 5325a .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 67288 6f4 .cfa: sp 0 + .ra: lr
+STACK CFI 6728c .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 6728e .cfa: sp 184 +
+STACK CFI INIT 6797c a .cfa: sp 0 + .ra: lr
+STACK CFI 6797e .cfa: sp 4 + r4: .cfa -4 + ^
+STACK CFI INIT 67988 52 .cfa: sp 0 + .ra: lr
+STACK CFI 6798c .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 6798e .cfa: sp 40 +
+STACK CFI INIT 679dc 6e0 .cfa: sp 0 + .ra: lr
+STACK CFI 679e0 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 679e2 .cfa: sp 176 +
+STACK CFI INIT 680bc a .cfa: sp 0 + .ra: lr
+STACK CFI 680be .cfa: sp 4 + r4: .cfa -4 + ^
+STACK CFI INIT 680c8 52 .cfa: sp 0 + .ra: lr
+STACK CFI 680cc .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI 680ce .cfa: sp 40 +
+STACK CFI INIT 0 44 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI a .cfa: sp 16 +
+STACK CFI INIT 0 124 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI a .cfa: sp 40 +
+STACK CFI INIT 0 64 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 6811c 284 .cfa: sp 0 + .ra: lr
+STACK CFI 68120 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 68124 .cfa: sp 48 +
+STACK CFI INIT 0 104 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 0 102 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI INIT 0 1d4 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 6 .cfa: sp 48 +
+STACK CFI INIT 0 204 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 6 .cfa: sp 312 +
+STACK CFI INIT 0 154 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI a .cfa: sp 48 +
+STACK CFI INIT 604a4 60 .cfa: sp 0 + .ra: lr
+STACK CFI 604a6 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 0 126 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI a .cfa: sp 536 +
+STACK CFI INIT 0 1da .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 6 .cfa: sp 48 +
+STACK CFI INIT 0 208 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 6 .cfa: sp 312 +
+STACK CFI INIT 683a0 2b0 .cfa: sp 0 + .ra: lr
+STACK CFI 683a4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI 683a8 .cfa: sp 48 +
+STACK CFI INIT 53a84 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 53a5c 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 53a84 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 53a5c 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 68650 1c .cfa: sp 0 + .ra: lr
+STACK CFI 68654 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 6866c 1c .cfa: sp 0 + .ra: lr
+STACK CFI 68670 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 28 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 68688 20 .cfa: sp 0 + .ra: lr
+STACK CFI 6868c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 686a8 20 .cfa: sp 0 + .ra: lr
+STACK CFI 686ac .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 28 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 54 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 48 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 4 .cfa: sp 288 +
+STACK CFI INIT 0 20 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 686c8 2c .cfa: sp 0 + .ra: lr
+STACK CFI 686d0 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 44 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 44 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 686f4 2c .cfa: sp 0 + .ra: lr
+STACK CFI 686fc .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 44 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 44 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 63008 28 .cfa: sp 0 + .ra: lr
+STACK CFI 6300a .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 24 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 3c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 6 .cfa: sp 16 +
+STACK CFI INIT 0 54 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 0 4c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 0 44 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI 8 .cfa: sp 32 +
+STACK CFI INIT 0 1c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 4 .cfa: sp 16 +
+STACK CFI INIT 68720 e .cfa: sp 0 + .ra: lr
+STACK CFI 68722 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 44 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI a .cfa: sp 16 +
+STACK CFI INIT 68730 3a .cfa: sp 0 + .ra: lr
+STACK CFI 68732 .cfa: sp 24 + .ra: .cfa -4 + ^ r3: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 6876c e .cfa: sp 0 + .ra: lr
+STACK CFI 6876e .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 10c .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 6 .cfa: sp 120 +
+STACK CFI INIT 0 1c .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI 4 .cfa: sp 16 +
+STACK CFI INIT 0 e2 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 8 .cfa: sp 32 +
+STACK CFI INIT 0 94 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 8 .cfa: sp 32 +
+STACK CFI INIT 0 44 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 44 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 0 12 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 c4 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI c .cfa: sp 40 +
+STACK CFI INIT 0 162 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI a .cfa: sp 56 +
+STACK CFI INIT 0 be .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
+STACK CFI 18 .cfa: sp 48 +
+STACK CFI INIT 0 a2 .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
+STACK CFI c .cfa: sp 40 +
+STACK CFI INIT 0 158 .cfa: sp 0 + .ra: lr
+STACK CFI 6 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
+STACK CFI 10 .cfa: sp 48 +
+STACK CFI INIT 0 2a .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 70 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^ r7: .cfa -4 + ^
+STACK CFI INIT 0 e0 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI 12 .cfa: sp 24 +
+STACK CFI INIT 0 13e .cfa: sp 0 + .ra: lr
+STACK CFI 4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
+STACK CFI c .cfa: sp 48 +
+STACK CFI INIT 0 14 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 4 + .ra: .cfa -4 + ^
+STACK CFI 4 .cfa: sp 16 +
+STACK CFI INIT 0 1e .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 6 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 0 28 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 0 28 .cfa: sp 0 + .ra: lr
+STACK CFI 2 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 6877d 80 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 68811 9c .cfa: sp 0 + .ra: lr
+STACK CFI INIT 68c90 44 .cfa: sp 0 + .ra: lr
+STACK CFI 68cc0 .cfa: sp 16 + .ra: .cfa -12 + ^
+STACK CFI INIT 68cd4 3c .cfa: sp 0 + .ra: lr
+STACK CFI 68cfc .cfa: sp 16 + .ra: .cfa -12 + ^
+STACK CFI INIT 68d20 34 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 68d54 34 .cfa: sp 0 + .ra: lr
+STACK CFI 68d56 .cfa: sp 32 + .ra: .cfa -4 + ^ r0: .cfa -32 + ^ r1: .cfa -28 + ^ r2: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 68d88 30 .cfa: sp 0 + .ra: lr
+STACK CFI 68d8a .cfa: sp 32 + .ra: .cfa -4 + ^ r0: .cfa -32 + ^ r1: .cfa -28 + ^ r2: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 68db8 16 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 68dce 6e .cfa: sp 0 + .ra: lr
+STACK CFI 68dd0 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 68dd4 .cfa: sp 48 +
+STACK CFI INIT 68e3c 30 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 68e6c a4 .cfa: sp 0 + .ra: lr
+STACK CFI 68e70 .cfa: sp 24 + .ra: .cfa -4 + ^ r0: .cfa -24 + ^ r1: .cfa -20 + ^ r2: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
+STACK CFI INIT 68f10 4a .cfa: sp 0 + .ra: lr
+STACK CFI 68f14 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 68f5a e .cfa: sp 0 + .ra: lr
+STACK CFI INIT 68f68 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 68f6c 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 68f6e 3a .cfa: sp 0 + .ra: lr
+STACK CFI 68f70 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 68fa8 bc .cfa: sp 0 + .ra: lr
+STACK CFI 68faa .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 68fb0 .cfa: sp 1008 +
+STACK CFI INIT 69064 4 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 69068 4e .cfa: sp 0 + .ra: lr
+STACK CFI 6906a .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 6906e .cfa: sp 504 +
+STACK CFI INIT 690b6 14 .cfa: sp 0 + .ra: lr
+STACK CFI 690b8 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 690ca 44 .cfa: sp 0 + .ra: lr
+STACK CFI 690cc .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
+STACK CFI INIT 6910e 1a .cfa: sp 0 + .ra: lr
+STACK CFI 69110 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 69128 2 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 6912a 10 .cfa: sp 0 + .ra: lr
+STACK CFI 6912c .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 6913a 34 .cfa: sp 0 + .ra: lr
+STACK CFI 6913c .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 6916e 16 .cfa: sp 0 + .ra: lr
+STACK CFI 69170 .cfa: sp 24 + .ra: .cfa -4 + ^ r0: .cfa -24 + ^ r1: .cfa -20 + ^ r2: .cfa -16 + ^ r3: .cfa -12 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 69184 34 .cfa: sp 0 + .ra: lr
+STACK CFI 69186 .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 691b8 18 .cfa: sp 0 + .ra: lr
+STACK CFI 691ba .cfa: sp 24 + .ra: .cfa -4 + ^ r0: .cfa -24 + ^ r1: .cfa -20 + ^ r2: .cfa -16 + ^ r3: .cfa -12 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 691d0 70 .cfa: sp 0 + .ra: lr
+STACK CFI 691d2 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 691d8 .cfa: sp 592 +
+STACK CFI INIT 69240 280 .cfa: sp 0 + .ra: lr
+STACK CFI 69242 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 69244 .cfa: sp 64 +
+STACK CFI INIT 694c0 a .cfa: sp 0 + .ra: lr
+STACK CFI 694c2 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 694ca a .cfa: sp 0 + .ra: lr
+STACK CFI 694cc .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 694d4 a .cfa: sp 0 + .ra: lr
+STACK CFI 694d6 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 694de 24c .cfa: sp 0 + .ra: lr
+STACK CFI 694e0 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 694e2 .cfa: sp 296 +
+STACK CFI INIT 698fc 30 .cfa: sp 0 + .ra: lr
+STACK CFI INIT 6992c 16 .cfa: sp 0 + .ra: lr
+STACK CFI 6992e .cfa: sp 24 + .ra: .cfa -4 + ^ r0: .cfa -24 + ^ r1: .cfa -20 + ^ r2: .cfa -16 + ^ r3: .cfa -12 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 69942 8 .cfa: sp 0 + .ra: lr
+STACK CFI 69944 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 6994a 286 .cfa: sp 0 + .ra: lr
+STACK CFI 6994c .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 69950 .cfa: sp 48 +
+STACK CFI INIT 69bd0 26 .cfa: sp 0 + .ra: lr
+STACK CFI 69bd2 .cfa: sp 24 + .ra: .cfa -4 + ^ r0: .cfa -24 + ^ r1: .cfa -20 + ^ r2: .cfa -16 + ^ r3: .cfa -12 + ^ r4: .cfa -8 + ^
+STACK CFI INIT 69bf6 a .cfa: sp 0 + .ra: lr
+STACK CFI 69bf8 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 69c00 12 .cfa: sp 0 + .ra: lr
+STACK CFI 69c02 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 69c12 6 .cfa: sp 0 + .ra: lr
+STACK CFI 69c14 .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 69c18 6 .cfa: sp 0 + .ra: lr
+STACK CFI 69c1a .cfa: sp 8 + .ra: .cfa -4 + ^ r3: .cfa -8 + ^
+STACK CFI INIT 69c34 4c .cfa: sp 0 + .ra: lr
+STACK CFI 69c36 .cfa: sp 32 + .ra: .cfa -4 + ^ r0: .cfa -32 + ^ r1: .cfa -28 + ^ r2: .cfa -24 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI INIT 69c80 12a .cfa: sp 0 + .ra: lr
+STACK CFI 69c82 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 69c86 .cfa: sp 48 +
+STACK CFI INIT 69daa f0 .cfa: sp 0 + .ra: lr
+STACK CFI 69dac .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
+STACK CFI 69db0 .cfa: sp 48 +
diff --git a/google-breakpad/src/processor/testdata/symbols/null_read_av/7B7D1968FF0D47AE4366E9C3A7E1B6750/null_read_av.sym b/google-breakpad/src/processor/testdata/symbols/null_read_av/7B7D1968FF0D47AE4366E9C3A7E1B6750/null_read_av.sym
new file mode 100644
index 0000000..eaf5888
--- /dev/null
+++ b/google-breakpad/src/processor/testdata/symbols/null_read_av/7B7D1968FF0D47AE4366E9C3A7E1B6750/null_read_av.sym
@@ -0,0 +1,6614 @@
+MODULE Linux x86_64 7B7D1968FF0D47AE4366E9C3A7E1B6750 null_read_av
+FILE 0 /home/mattdr/crashing-programs/null_read_av.cc
+FILE 1 /home/mattdr/google-breakpad/./src/client/linux/crash_generation/crash_generation_client.h
+FILE 2 /home/mattdr/google-breakpad/./src/client/linux/handler/minidump_descriptor.h
+FILE 3 /home/mattdr/google-breakpad/./src/client/linux/minidump_writer/directory_reader.h
+FILE 4 /home/mattdr/google-breakpad/./src/client/linux/minidump_writer/line_reader.h
+FILE 5 /home/mattdr/google-breakpad/./src/client/linux/minidump_writer/linux_dumper.h
+FILE 6 /home/mattdr/google-breakpad/./src/client/linux/minidump_writer/linux_ptrace_dumper.h
+FILE 7 /home/mattdr/google-breakpad/./src/client/linux/minidump_writer/proc_cpuinfo_reader.h
+FILE 8 /home/mattdr/google-breakpad/./src/client/minidump_file_writer-inl.h
+FILE 9 /home/mattdr/google-breakpad/./src/client/minidump_file_writer.h
+FILE 10 /home/mattdr/google-breakpad/./src/common/linux/elfutils-inl.h
+FILE 11 /home/mattdr/google-breakpad/./src/common/linux/safe_readlink.h
+FILE 12 /home/mattdr/google-breakpad/./src/common/memory.h
+FILE 13 /home/mattdr/google-breakpad/./src/common/memory_range.h
+FILE 14 /home/mattdr/google-breakpad/./src/common/scoped_ptr.h
+FILE 15 /home/mattdr/google-breakpad/./src/third_party/lss/linux_syscall_support.h
+FILE 16 /home/mattdr/google-breakpad/src/client/linux/crash_generation/crash_generation_client.cc
+FILE 17 /home/mattdr/google-breakpad/src/client/linux/handler/exception_handler.cc
+FILE 18 /home/mattdr/google-breakpad/src/client/linux/handler/minidump_descriptor.cc
+FILE 19 /home/mattdr/google-breakpad/src/client/linux/handler/minidump_descriptor.h
+FILE 20 /home/mattdr/google-breakpad/src/client/linux/log/log.cc
+FILE 21 /home/mattdr/google-breakpad/src/client/linux/minidump_writer/linux_dumper.cc
+FILE 22 /home/mattdr/google-breakpad/src/client/linux/minidump_writer/linux_ptrace_dumper.cc
+FILE 23 /home/mattdr/google-breakpad/src/client/linux/minidump_writer/minidump_writer.cc
+FILE 24 /home/mattdr/google-breakpad/src/client/minidump_file_writer.cc
+FILE 25 /home/mattdr/google-breakpad/src/common/convert_UTF.c
+FILE 26 /home/mattdr/google-breakpad/src/common/linux/elfutils.cc
+FILE 27 /home/mattdr/google-breakpad/src/common/linux/file_id.cc
+FILE 28 /home/mattdr/google-breakpad/src/common/linux/guid_creator.cc
+FILE 29 /home/mattdr/google-breakpad/src/common/linux/linux_libc_support.cc
+FILE 30 /home/mattdr/google-breakpad/src/common/linux/memory_mapped_file.cc
+FILE 31 /home/mattdr/google-breakpad/src/common/linux/safe_readlink.cc
+FILE 32 /home/mattdr/google-breakpad/src/common/string_conversion.cc
+FILE 33 /usr/include/c++/4.7/bits/basic_string.h
+FILE 34 /usr/include/c++/4.7/bits/char_traits.h
+FILE 35 /usr/include/c++/4.7/bits/list.tcc
+FILE 36 /usr/include/c++/4.7/bits/stl_algo.h
+FILE 37 /usr/include/c++/4.7/bits/stl_algobase.h
+FILE 38 /usr/include/c++/4.7/bits/stl_iterator.h
+FILE 39 /usr/include/c++/4.7/bits/stl_iterator_base_funcs.h
+FILE 40 /usr/include/c++/4.7/bits/stl_list.h
+FILE 41 /usr/include/c++/4.7/bits/stl_uninitialized.h
+FILE 42 /usr/include/c++/4.7/bits/stl_vector.h
+FILE 43 /usr/include/c++/4.7/bits/vector.tcc
+FILE 44 /usr/include/c++/4.7/ext/atomicity.h
+FILE 45 /usr/include/c++/4.7/ext/new_allocator.h
+FILE 46 /usr/include/x86_64-linux-gnu/bits/stdio2.h
+FUNC 1c10 1a 0 __gnu_cxx::__exchange_and_add_dispatch
+1c10 a 80 44
+1c1a 8 48 44
+1c22 2 66 44
+1c24 5 67 44
+1c29 1 87 44
+FUNC 1c2a 1a 0 __gnu_cxx::__exchange_and_add_dispatch
+1c2a a 80 44
+1c34 8 48 44
+1c3c 2 66 44
+1c3e 5 67 44
+1c43 1 87 44
+FUNC 1c44 27 0 sys_close
+1c44 1 2725 15
+1c45 15 2725 15
+1c5a d 2725 15
+1c67 4 2725 15
+FUNC 1c6c 20 0 google_breakpad::ProcCpuInfoReader::GetValueAndLen(unsigned long*)
+1c6c 7 116 7
+1c73 1 115 7
+1c74 18 116 7
+FUNC 1c8c 20 0 google_breakpad::TypedMDRVA<MDRawDirectory>::CopyIndex(unsigned int, MDRawDirectory*)
+1c8c 7 73 8
+1c93 1 72 8
+1c94 18 73 8
+FUNC 1cac 20 0 google_breakpad::TypedMDRVA<unsigned int>::AllocateObjectAndArray(unsigned long, unsigned long)
+1cac 7 66 8
+1cb3 1 64 8
+1cb4 18 66 8
+FUNC 1ccc 20 0 google_breakpad::TypedMDRVA<unsigned int>::CopyIndexAfterObject(unsigned int, void const*, unsigned long)
+1ccc 7 83 8
+1cd3 1 80 8
+1cd4 18 83 8
+FUNC 1cec 1ac 0 MinidumpWriter::WriteFile
+1cec 2 1584 23
+1cee 5 2822 15
+1cf3 12 1584 23
+1d05 5 1584 23
+1d0a 1f 2822 15
+1d29 2 1586 23
+1d2b 3 2822 15
+1d2e 2 1586 23
+1d30 7 1587 23
+1d37 a 1227 23
+1d41 2 1601 23
+1d43 3 2838 15
+1d46 c 1227 23
+1d52 7 1598 23
+1d59 b 1599 23
+1d64 9 1605 23
+1d6d 5 2838 15
+1d72 8 1605 23
+1d7a d 2838 15
+1d87 f 2838 15
+1d96 3 1604 23
+1d99 2 2838 15
+1d9b 4 1604 23
+1d9f 5 1608 23
+1da4 4 1612 23
+1da8 3 1611 23
+1dab 7 1613 23
+1db2 4 1612 23
+1db6 2 1613 23
+1db8 13 1227 23
+1dcb 3 1614 23
+1dce b 1617 23
+1dd9 9 1616 23
+1de2 8 1620 23
+1dea 9 1622 23
+1df3 5 1625 23
+1df8 3 1626 23
+1dfb 9 161 9
+1e04 5 1625 23
+1e09 5 161 9
+1e0e 8 1626 23
+1e16 4 161 9
+1e1a d 1626 23
+1e27 4 1628 23
+1e2b 9 1633 23
+1e34 26 1635 23
+1e5a e 1638 23
+1e68 3 1639 23
+1e6b 9 1628 23
+1e74 c 176 9
+1e80 7 1641 23
+1e87 2 1642 23
+1e89 f 1643 23
+FUNC 1e98 3f 0 MinidumpWriter::WriteProcFile
+1e98 f 1712 23
+1ea7 e 1715 23
+1eb5 2 1716 23
+1eb7 4 1715 23
+1ebb 10 1717 23
+1ecb c 1718 23
+FUNC 1ed8 20 0 google_breakpad::TypedMDRVA<MDString>::CopyIndexAfterObject(unsigned int, void const*, unsigned long)
+1ed8 7 83 8
+1edf 1 80 8
+1ee0 18 83 8
+FUNC 1ef8 20 0 google_breakpad::TypedMDRVA<MDString>::AllocateObjectAndArray(unsigned long, unsigned long)
+1ef8 7 66 8
+1eff 1 64 8
+1f00 18 66 8
+FUNC 1f18 20 0 google_breakpad::LineReader::PopLine(unsigned int)
+1f18 7 116 4
+1f1f 1 113 4
+1f20 18 116 4
+FUNC 1f40 f3 0 main
+1f40 1 21 0
+1f41 5 22 0
+1f46 7 21 0
+1f4d f 22 0
+1f5c 17 54 19
+1f73 5 713 33
+1f78 9 272 33
+1f81 12 54 19
+1f93 7 55 19
+1f9a a 22 0
+1fa4 26 25 0
+1fca 1b 27 0
+1fe5 b 28 0
+1ff0 19 55 19
+2009 15 22 0
+201e 15 27 0
+FUNC 2140 2c 0 MinidumpCallback(google_breakpad::MinidumpDescriptor const&, void*, bool)
+2140 1 8 0
+2141 2 8 0
+2143 4 28 0
+2147 10 11 0
+2157 11 105 46
+2168 4 13 0
+FUNC 2170 8 0 crash()
+2170 7 18 0
+2177 1 19 0
+FUNC 2180 90 0 google_breakpad::MinidumpDescriptor::~MinidumpDescriptor()
+2180 8 46 19
+2188 4 290 33
+218c 4 536 33
+2190 9 237 33
+2199 4 290 33
+219d 4 536 33
+21a1 9 237 33
+21aa 6 46 19
+21b0 5 80 44
+21b5 4 242 33
+21b9 5 80 44
+21be 7 48 44
+21c5 4 242 33
+21c9 c 246 33
+21d5 5 80 44
+21da 4 242 33
+21de 5 80 44
+21e3 7 48 44
+21ea 4 242 33
+21ee c 246 33
+21fa 3 66 44
+21fd 8 67 44
+2205 3 66 44
+2208 8 67 44
+FUNC 2210 f5 0 google_breakpad::ExceptionHandler::InstallHandlersLocked()
+2210 d 241 17
+221d 16 240 17
+2233 2 241 17
+2235 7 240 17
+223c 28 246 17
+2264 6 245 17
+226a c 252 17
+2276 a 251 17
+2280 7 240 17
+2287 3 251 17
+228a 3 240 17
+228d 8 252 17
+2295 f 256 17
+22a4 5 255 17
+22a9 7 258 17
+22b0 b 259 17
+22bb 4 258 17
+22bf 10 262 17
+22cf 5 261 17
+22d4 7 267 17
+22db 7 269 17
+22e2 5 268 17
+22e7 10 269 17
+22f7 2 242 17
+22f9 9 269 17
+2302 2 242 17
+2304 1 269 17
+FUNC 2310 8b 0 google_breakpad::ExceptionHandler::RestoreHandlersLocked()
+2310 9 275 17
+2319 22 274 17
+233b 2 275 17
+233d 4 274 17
+2341 26 279 17
+2367 6 278 17
+236d 7 283 17
+2374 1c 284 17
+2390 b 280 17
+FUNC 23a0 104 0 google_breakpad::ExceptionHandler::SendContinueSignalToChild()
+23a0 22 497 17
+23c2 a 2887 15
+23cc 18 2887 15
+23e4 5 501 17
+23e9 1f 508 17
+2408 8 497 17
+2410 11 504 17
+2421 28 505 17
+2449 a 508 17
+2453 7 506 17
+245a a 508 17
+2464 5 506 17
+2469 4 508 17
+246d b 506 17
+2478 10 2887 15
+2488 3 500 17
+248b 5 2887 15
+2490 14 500 17
+FUNC 24b0 477 0 google_breakpad::ExceptionHandler::GenerateDump(google_breakpad::ExceptionHandler::CrashContext*)
+24b0 2b 433 17
+24db 4 106 14
+24df 5 434 17
+24e4 d 435 17
+24f1 37 494 17
+2528 5 60 12
+252d d 2936 15
+253a 5 60 12
+253f 2 86 12
+2541 3 60 12
+2544 9 86 12
+254d 3 115 12
+2550 5 2936 15
+2555 3 86 12
+2558 5 2936 15
+255d 3 86 12
+2560 3 115 12
+2563 24 2936 15
+2587 9 441 17
+2590 6 120 12
+2596 4 440 17
+259a 7 124 12
+25a1 4 125 12
+25a5 6 440 17
+25ab e 444 17
+25b9 7 443 17
+25c0 5 444 17
+25c5 4 448 17
+25c9 5 447 17
+25ce a 448 17
+25d8 5 449 17
+25dd 5 450 17
+25e2 4 449 17
+25e6 4 457 17
+25ea 9 451 17
+25f3 21 3484 15
+2614 11 463 17
+2625 2e 464 17
+2653 11 465 17
+2664 57 2010 15
+26bb 6 2012 15
+26c1 3 2010 15
+26c4 18 2012 15
+26dc 2d 2829 15
+2709 8 475 17
+2711 5 477 17
+2716 3 2998 15
+2719 5 477 17
+271e 26 2998 15
+2744 c 2998 15
+2750 5 476 17
+2755 5 476 17
+275a 57 2725 15
+27b1 9 483 17
+27ba c 490 17
+27c6 b 490 17
+27d1 f 490 17
+27e0 9 491 17
+27e9 12 492 17
+27fb d 2812 15
+2808 3 136 12
+280b 3 135 12
+280e 3 2812 15
+2811 4 136 12
+2815 19 2812 15
+282e 12 134 12
+2840 3 476 17
+2843 2 2998 15
+2845 b 476 17
+2850 10 433 17
+2860 11 485 17
+2871 2e 486 17
+289f 11 487 17
+28b0 20 490 17
+28d0 10 457 17
+28e0 b 441 17
+28eb 6 2812 15
+28f1 3 136 12
+28f4 3 135 12
+28f7 3 2812 15
+28fa 4 136 12
+28fe 19 2812 15
+2917 10 134 12
+FUNC 2930 19c 0 google_breakpad::ExceptionHandler::HandleSignal(int, siginfo*, void*)
+2930 16 385 17
+2946 3 390 17
+2949 8 393 17
+2951 2f 2829 15
+2980 3 397 17
+2983 10 398 17
+2993 8b 397 17
+2a1e 3 398 17
+2a21 c 404 17
+2a2d 10 407 17
+2a3d 13 410 17
+2a50 a 411 17
+2a5a 13 412 17
+2a6d b 416 17
+2a78 1f 417 17
+2a97 5 413 17
+2a9c c 417 17
+2aa8 24 393 17
+FUNC 2ad0 68 0 google_breakpad::ExceptionHandler::HandleSignal(int, siginfo*, void*)
+2ad0 16 385 17
+2ae6 3 386 17
+2ae9 6 385 17
+2aef 5 386 17
+2af4 a 386 17
+2afe 3a 417 17
+FUNC 2b40 56 0 google_breakpad::ExceptionHandler::SimulateSignalDelivery(int)
+2b40 7 421 17
+2b47 7 422 17
+2b4e 4 421 17
+2b52 5 422 17
+2b57 4 421 17
+2b5b 3 422 17
+2b5e 5 426 17
+2b63 8 428 17
+2b6b 4 426 17
+2b6f 5 428 17
+2b74 1a 429 17
+2b8e 8 430 17
+FUNC 2ba0 18b 0 google_breakpad::ExceptionHandler::SignalHandler(int, siginfo*, void*)
+2ba0 19 293 17
+2bb9 c 295 17
+2bc5 10 308 17
+2bd5 e 308 17
+2be3 b 327 17
+2bee 3 693 17
+2bf1 b 626 42
+2bfc 9 327 17
+2c05 1a 293 17
+2c1f 15 328 17
+2c34 18 327 17
+2c4c 4 336 17
+2c50 9 337 17
+2c59 c 342 17
+2c65 7 344 17
+2c6c 14 359 17
+2c80 10 339 17
+2c90 d 311 17
+2c9d a 312 17
+2ca7 7 314 17
+2cae 7 317 17
+2cb5 b 315 17
+2cc0 4 314 17
+2cc4 a 317 17
+2cce 12 322 17
+2ce0 14 348 17
+2cf4 12 107 17
+2d06 8 348 17
+2d0e 12 352 17
+2d20 b 320 17
+FUNC 2d30 e0 0 google_breakpad::ExceptionHandler::WaitForContinueSignal()
+2d30 a 512 17
+2d3a 2 2838 15
+2d3c 13 512 17
+2d4f 3 512 17
+2d52 5 2838 15
+2d57 14 2838 15
+2d6b 5 516 17
+2d70 20 523 17
+2d90 8 512 17
+2d98 11 519 17
+2da9 28 520 17
+2dd1 17 521 17
+2de8 10 2838 15
+2df8 3 515 17
+2dfb 5 2838 15
+2e00 10 515 17
+FUNC 2e10 58 0 google_breakpad::ExceptionHandler::DoDump(int, void const*, unsigned long)
+2e10 4 528 17
+2e14 3 528 17
+2e17 3 693 17
+2e1a 6 528 17
+2e20 4 536 17
+2e24 5 529 17
+2e29 17 536 17
+2e40 8 545 17
+2e48 1b 544 17
+2e63 5 545 17
+FUNC 2e70 28 0 google_breakpad::ExceptionHandler::ThreadEntry(void*)
+2e70 1 372 17
+2e71 3 372 17
+2e74 9 377 17
+2e7d 19 380 17
+2e96 2 381 17
+FUNC 2ea0 163 0 google_breakpad::ExceptionHandler::WriteMinidump()
+2ea0 8 563 17
+2ea8 5 564 17
+2ead 5 563 17
+2eb2 2 564 17
+2eb4 8 693 17
+2ebc 5 570 17
+2ec1 2d 2829 15
+2eee f 581 17
+2efd 2 583 17
+2eff 4 582 17
+2f03 d 634 17
+2f10 3 693 17
+2f13 9 564 17
+2f1c 9 573 17
+2f25 1b 574 17
+2f40 18 610 17
+2f58 5 2776 15
+2f5d 3 610 17
+2f60 16 2776 15
+2f76 20 2763 15
+2f96 c 615 17
+2fa2 7 612 17
+2fa9 6 615 17
+2faf 8 622 17
+2fb7 5 633 17
+2fbc 8 616 17
+2fc4 5 622 17
+2fc9 5 633 17
+2fce 12 634 17
+2fe0 10 3512 15
+2ff0 13 569 17
+FUNC 3010 cf 0 google_breakpad::ExceptionHandler::AddMappingInfo(std::string const&, unsigned char const*, unsigned long, unsigned long, unsigned long)
+3010 1b 640 17
+302b 3 645 17
+302e 3 640 17
+3031 8 649 17
+3039 5 645 17
+303e 3 640 17
+3041 5 645 17
+3046 4 642 17
+304a 5 643 17
+304f 4 758 40
+3053 5 644 17
+3058 5 645 17
+305d 8 646 17
+3065 e 649 17
+3073 5 94 45
+3078 19 650 17
+3091 5 94 45
+3096 17 120 45
+30ad 3 1526 40
+30b0 20 652 17
+30d0 3 1526 40
+30d3 7 652 17
+30da 5 1526 40
+FUNC 30e0 5d 0 google_breakpad::ExceptionHandler::RegisterAppMemory(void*, unsigned long)
+30e0 6 654 17
+30e6 4 758 40
+30ea 1 654 17
+30eb 4 693 17
+30ef 3 654 17
+30f2 14 135 36
+3106 3 156 40
+3109 5 135 36
+310e a 94 45
+3118 e 120 45
+3126 1 666 17
+3127 6 1526 40
+312d 3 666 17
+3130 8 1526 40
+3138 5 666 17
+FUNC 3140 31 0 google_breakpad::ExceptionHandler::UnregisterAppMemory(void*)
+3140 1 668 17
+3141 4 693 17
+3145 4 758 40
+3149 d 135 36
+3156 3 156 40
+3159 5 135 36
+315e 2 674 17
+3160 8 1542 40
+3168 3 100 45
+316b 1 674 17
+316c 5 100 45
+FUNC 3180 179 0 google_breakpad::ExceptionHandler::WriteMinidumpForChild(int, int, std::string const&, bool (*)(google_breakpad::MinidumpDescriptor const&, void*, bool), void*)
+3180 28 681 17
+31a8 5 54 2
+31ad 3 681 17
+31b0 3 54 2
+31b3 6 681 17
+31b9 d 54 2
+31c6 7 272 33
+31cd 12 54 2
+31df 9 272 33
+31e8 4 713 33
+31ec b 55 2
+31f7 a 684 17
+3201 10 687 17
+3211 4 685 17
+3215 5 690 17
+321a 12 690 17
+322c 9 536 33
+3235 9 237 33
+323e 9 536 33
+3247 5 237 33
+324c 2c 691 17
+3278 8 690 17
+3280 4 688 17
+3284 1f 55 2
+32a3 e 242 33
+32b1 f 246 33
+32c0 12 242 33
+32d2 12 246 33
+32e4 15 690 17
+FUNC 3300 336 0 google_breakpad::ExceptionHandler::~ExceptionHandler()
+3300 d 226 17
+330d f 227 17
+331c b 229 17
+3327 8 728 38
+332f 9 900 38
+3338 4 158 36
+333c 4 900 38
+3340 9 160 36
+3349 9 162 36
+3352 a 166 36
+335c a 170 36
+3366 12 174 36
+3378 6 162 36
+337e a 166 36
+3388 a 170 36
+3392 a 174 36
+339c 3 750 38
+339f 4 226 17
+33a3 4 160 36
+33a7 3 226 17
+33aa c 160 36
+33b6 1e 179 36
+33d4 c 728 38
+33e0 4 781 38
+33e4 8 138 43
+33ec a 364 37
+33f6 5 365 37
+33fb 8 140 43
+3403 d 231 17
+3410 8 235 17
+3418 4 436 40
+341c 5 379 40
+3421 4 436 40
+3425 5 379 40
+342a 4 536 33
+342e 7 237 33
+3435 4 536 33
+3439 9 237 33
+3442 8 536 33
+344a 9 237 33
+3453 e 75 14
+3461 f 236 17
+3470 20 366 37
+3490 9 163 17
+3499 a 233 17
+34a3 8 2873 15
+34ab 5 167 17
+34b0 20 2873 15
+34d0 29 750 38
+34f9 9 182 36
+3502 4 750 38
+3506 9 186 36
+350f 4 750 38
+3513 c 728 38
+351f 9 167 17
+3528 e 172 17
+3536 5 184 17
+353b c 185 17
+3547 8 728 38
+354f 8 162 36
+3557 1b 750 38
+3572 8 173 17
+357a 7 2873 15
+3581 2 173 17
+3583 16 2873 15
+3599 12 179 17
+35ab 8 178 17
+35b3 7 179 17
+35ba 7 436 40
+35c1 5 379 40
+35c6 4 436 40
+35ca 5 379 40
+35cf 9 226 17
+35d8 16 75 14
+35ee 12 242 33
+3600 12 246 33
+3612 12 242 33
+3624 12 246 33
+FUNC 3640 31c 0 google_breakpad::ExceptionHandler::ExceptionHandler(google_breakpad::MinidumpDescriptor const&, bool (*)(void*), bool (*)(google_breakpad::MinidumpDescriptor const&, void*, bool), void*, bool, int)
+3640 5 197 17
+3645 4 207 17
+3649 20 197 17
+3669 7 207 17
+3670 3 197 17
+3673 4 207 17
+3677 8 71 14
+367f 3 207 17
+3682 4 197 17
+3686 5 207 17
+368b 8 387 40
+3693 2 208 17
+3695 8 207 17
+369d 4 387 40
+36a1 4 388 40
+36a5 4 387 40
+36a9 4 388 40
+36ad 6 208 17
+36b3 7 209 17
+36ba 4 81 14
+36be 3 209 17
+36c1 5 81 14
+36c6 a 82 14
+36d0 4 83 14
+36d4 9 211 17
+36dd c 214 17
+36e9 12 215 17
+36fb 5 217 17
+3700 d 135 17
+370d 5 219 17
+3712 9 221 17
+371b e 883 42
+3729 10 120 45
+3739 8 887 42
+3741 c 222 17
+374d 27 223 17
+3774 9 211 17
+377d a 211 17
+3787 11 212 17
+3798 7 144 17
+379f 21 138 17
+37c0 21 139 17
+37e1 6 144 17
+37e7 2d 2873 15
+3814 8 150 17
+381c 7 151 17
+3823 7 150 17
+382a 2a 2873 15
+3854 14 154 17
+3868 8 120 45
+3870 28 148 17
+3898 18 893 42
+38b0 a 216 17
+38ba 17 88 42
+38d1 f 216 17
+38e0 30 144 17
+3910 a 153 17
+391a f 157 17
+3929 16 75 14
+393f 13 379 40
+3952 a 207 17
+FUNC 3960 167 0 google_breakpad::ExceptionHandler::WriteMinidump(std::string const&, bool (*)(google_breakpad::MinidumpDescriptor const&, void*, bool), void*)
+3960 1e 550 17
+397e 5 54 2
+3983 3 550 17
+3986 3 54 2
+3989 3 550 17
+398c d 54 2
+3999 7 272 33
+39a0 12 54 2
+39b2 9 272 33
+39bb 4 713 33
+39bf 7 55 2
+39c6 21 552 17
+39e7 16 553 17
+39fd 9 536 33
+3a06 5 237 33
+3a0b 9 536 33
+3a14 5 237 33
+3a19 2a 554 17
+3a43 1f 55 2
+3a62 e 242 33
+3a70 f 246 33
+3a7f 12 242 33
+3a91 12 246 33
+3aa3 24 553 17
+FUNC 3ad0 2f 0 std::_List_base<google_breakpad::MappingEntry, std::allocator<google_breakpad::MappingEntry> >::_M_clear()
+3ad0 9 66 35
+3ad9 3 70 35
+3adc c 71 35
+3ae8 3 74 35
+3aeb 5 100 45
+3af0 3 71 35
+3af3 3 74 35
+3af6 2 71 35
+3af8 7 82 35
+FUNC 3b00 2f 0 std::_List_base<google_breakpad::AppMemory, std::allocator<google_breakpad::AppMemory> >::_M_clear()
+3b00 9 66 35
+3b09 3 70 35
+3b0c c 71 35
+3b18 3 74 35
+3b1b 5 100 45
+3b20 3 71 35
+3b23 3 74 35
+3b26 2 71 35
+3b28 7 82 35
+FUNC 3b30 1ba 0 std::vector<google_breakpad::ExceptionHandler*, std::allocator<google_breakpad::ExceptionHandler*> >::_M_insert_aux(__gnu_cxx::__normal_iterator<google_breakpad::ExceptionHandler**, std::vector<google_breakpad::ExceptionHandler*, std::allocator<google_breakpad::ExceptionHandler*> > >, google_breakpad::ExceptionHandler* const&)
+3b30 28 316 43
+3b58 a 320 43
+3b62 10 120 45
+3b72 8 325 43
+3b7a 3 327 43
+3b7d 4 329 43
+3b81 7 559 37
+3b88 5 560 37
+3b8d f 561 37
+3b9c 4 333 43
+3ba0 28 391 43
+3bc8 8 120 45
+3bd0 a 626 42
+3bda 9 215 37
+3be3 4 1308 42
+3be7 9 1309 42
+3bf0 3 900 38
+3bf3 7 342 43
+3bfa 3 900 38
+3bfd 4 342 43
+3c01 15 94 45
+3c16 4 351 43
+3c1a b 120 45
+3c25 3 360 43
+3c28 3 364 37
+3c2b 3 365 37
+3c2e 7 364 37
+3c35 5 365 37
+3c3a 13 366 37
+3c4d 4 364 37
+3c51 5 365 43
+3c56 3 365 37
+3c59 7 364 37
+3c60 5 365 37
+3c65 16 366 37
+3c7b 3 384 43
+3c7e 3 367 37
+3c81 5 174 42
+3c86 5 100 45
+3c8b 3 387 43
+3c8e 3 389 43
+3c91 4 388 43
+3c95 b 389 43
+3ca0 3 900 38
+3ca3 6 342 43
+3ca9 3 900 38
+3cac 9 342 43
+3cb5 13 1309 42
+3cc8 6 900 38
+3cce 3 169 42
+3cd1 7 900 38
+3cd8 4 342 43
+3cdc e 169 42
+FUNC 3cf0 7d 0 google_breakpad::MinidumpDescriptor::MinidumpDescriptor(google_breakpad::MinidumpDescriptor const&)
+3cf0 e 38 18
+3cfe 2 42 18
+3d00 6 38 18
+3d06 f 42 18
+3d15 7 272 33
+3d1c 8 42 18
+3d24 8 272 33
+3d2c 8 42 18
+3d34 4 713 33
+3d38 7 46 18
+3d3f f 47 18
+3d4e 1f 46 18
+FUNC 3d70 232 0 google_breakpad::MinidumpDescriptor::UpdatePath()
+3d70 b 65 18
+3d7b 9 66 18
+3d84 4 713 33
+3d88 b 66 18
+3d93 e 70 18
+3da1 1f 71 18
+3dc0 1b 70 18
+3ddb 4 713 33
+3ddf 4 74 18
+3de3 10 801 33
+3df3 4 75 18
+3df7 a 2402 33
+3e01 16 1006 33
+3e17 f 2402 33
+3e26 1c 261 34
+3e42 8 1006 33
+3e4a 1c 261 34
+3e66 5 1006 33
+3e6b f 2402 33
+3e7a 16 1006 33
+3e90 d 544 33
+3e9d 5 536 33
+3ea2 7 237 33
+3ea9 4 536 33
+3ead 9 237 33
+3eb6 9 536 33
+3ebf 5 237 33
+3ec4 9 536 33
+3ecd 5 237 33
+3ed2 8 76 18
+3eda 9 77 18
+3ee3 1f 66 18
+3f02 e 242 33
+3f10 f 246 33
+3f1f e 242 33
+3f2d f 246 33
+3f3c 12 242 33
+3f4e 12 246 33
+3f60 42 75 18
+FUNC 3fb0 85 0 google_breakpad::MinidumpDescriptor::operator=(google_breakpad::MinidumpDescriptor const&)
+3fb0 9 50 18
+3fb9 4 713 33
+3fbd 7 51 18
+3fc4 5 53 18
+3fc9 4 54 18
+3fcd 2 53 18
+3fcf 4 54 18
+3fd3 5 544 33
+3fd8 4 713 33
+3fdc 4 55 18
+3fe0 d 801 33
+3fed 7 56 18
+3ff4 8 58 18
+3ffc 8 59 18
+4004 8 61 18
+400c a 63 18
+4016 1f 51 18
+FUNC 4040 38 0 logger::write(char const*, unsigned long)
+4040 7 40 20
+4047 1a 2887 15
+4061 7 46 20
+4068 e 2887 15
+4076 2 46 20
+FUNC 4080 5d 0 MinidumpWriter::~MinidumpWriter
+4080 e 497 23
+408e 3 500 23
+4091 3 497 23
+4094 4 501 23
+4098 2 500 23
+409a a 502 23
+40a4 3 497 23
+40a7 e 503 23
+40b5 b 497 23
+40c0 d 501 23
+40cd 10 497 23
+FUNC 40e0 1e 0 google_breakpad::TypedMDRVA<MDRawDirectory>::CopyIndex(unsigned int, MDRawDirectory*)
+40e0 5 73 8
+40e5 13 76 8
+40f8 6 72 8
+FUNC 4100 15e5 0 MinidumpWriter::WriteThreadListStream
+4100 6 744 23
+4106 4 747 23
+410a e 744 23
+4118 4 745 23
+411c 5 747 23
+4121 14 161 9
+4135 b 212 9
+4140 8 626 42
+4148 3 161 9
+414b b 212 9
+4156 4 626 42
+415a 7 161 9
+4161 4 745 23
+4165 2 748 23
+4167 9 66 8
+4170 f 68 8
+417f b 67 8
+418a d 68 8
+4197 8 748 23
+419f 8 176 9
+41a7 5 754 23
+41ac 7 751 23
+41b3 3 176 9
+41b6 7 752 23
+41bd 8 754 23
+41c5 3 752 23
+41c8 9 762 23
+41d1 4 764 23
+41d5 3 766 23
+41d8 3 764 23
+41db 7 766 23
+41e2 9 767 23
+41eb 8 761 23
+41f3 e 771 23
+4201 10 223 9
+4211 5 771 23
+4216 a 223 9
+4220 14 773 23
+4234 4 774 23
+4238 8 766 42
+4240 7 774 23
+4247 3 780 23
+424a 7 774 23
+4251 6 780 23
+4257 19 841 23
+4270 5 846 23
+4275 6 845 23
+427b 2 846 23
+427d 9 847 23
+4286 8 849 23
+428e 1e 719 23
+42ac 8 161 9
+42b4 4 721 23
+42b8 20 161 9
+42d8 f 721 23
+42e7 8 723 23
+42ef 16 725 23
+4305 2 749 23
+4307 a 216 9
+4311 21 92 8
+4332 1e 875 23
+4350 5 727 23
+4355 4 42 6
+4359 3 71 12
+435c 3 727 23
+435f 4 42 6
+4363 6 71 12
+4369 20 74 12
+4389 3 75 12
+438c 2 76 12
+438e 4 78 12
+4392 3 75 12
+4395 8 77 12
+439d 3 76 12
+43a0 19 729 23
+43b9 19 186 9
+43d2 8 176 9
+43da 8 883 42
+43e2 5 732 23
+43e7 7 176 9
+43ee 7 733 23
+43f5 8 732 23
+43fd 7 733 23
+4404 6 883 42
+440a 14 120 45
+441e 12 887 42
+4430 b 780 23
+443b 6 782 23
+4441 17 780 23
+4458 4 738 23
+445c 8 736 23
+4464 3 716 23
+4467 b 737 23
+4472 8 738 23
+447a 8 212 9
+4482 5 161 9
+4487 7 212 9
+448e 5 47 8
+4493 8 161 9
+449b 3 212 9
+449e 8 47 8
+44a6 14 161 9
+44ba b 46 8
+44c5 5 47 8
+44ca 8 853 23
+44d2 11 855 23
+44e3 8 226 23
+44eb b 224 23
+44f6 3 857 23
+44f9 15 277 23
+450e 8 226 23
+4516 10 228 23
+4526 10 229 23
+4536 10 230 23
+4546 10 231 23
+4556 10 233 23
+4566 f 234 23
+4575 10 236 23
+4585 10 237 23
+4595 10 238 23
+45a5 10 239 23
+45b5 10 242 23
+45c5 10 243 23
+45d5 10 245 23
+45e5 10 246 23
+45f5 10 247 23
+4605 10 248 23
+4615 8 253 23
+461d 8 250 23
+4625 8 253 23
+462d 8 254 23
+4635 8 250 23
+463d 8 252 23
+4645 8 254 23
+464d 8 255 23
+4655 8 252 23
+465d 8 255 23
+4665 10 256 23
+4675 10 257 23
+4685 10 258 23
+4695 10 259 23
+46a5 10 260 23
+46b5 10 261 23
+46c5 10 262 23
+46d5 10 264 23
+46e5 10 266 23
+46f5 10 267 23
+4705 f 268 23
+4714 10 269 23
+4724 8 270 23
+472c a 271 23
+4736 a 273 23
+4740 7 270 23
+4747 f 272 23
+4756 e 274 23
+4764 e 275 23
+4772 100 276 23
+4872 3 277 23
+4875 2 857 23
+4877 8 42 6
+487f a 606 23
+4889 a 616 23
+4893 3 604 23
+4896 15 606 23
+48ab 9 614 23
+48b4 3 615 23
+48b7 9 616 23
+48c0 8 605 23
+48c8 3 615 23
+48cb 5 606 23
+48d0 4 860 23
+48d4 7 859 23
+48db 8 176 9
+48e3 4 860 23
+48e7 e 859 23
+48f5 e 860 23
+4903 a 216 9
+490d 1e 92 8
+492b 8 83 8
+4933 f 871 23
+4942 6 83 8
+4948 1f 87 8
+4967 a 771 23
+4971 f 874 23
+4980 3 861 23
+4983 3 862 23
+4986 3 861 23
+4989 b 862 23
+4994 1c 163 5
+49b0 4 1248 23
+49b4 e 719 23
+49c2 7 1248 23
+49c9 10 719 23
+49d9 8 161 9
+49e1 d 725 23
+49ee 1b 161 9
+4a09 d 725 23
+4a16 5 727 23
+4a1b 4 42 6
+4a1f 3 71 12
+4a22 3 727 23
+4a25 6 71 12
+4a2b 25 74 12
+4a50 3 75 12
+4a53 2 76 12
+4a55 3 75 12
+4a58 2 77 12
+4a5a 4 75 12
+4a5e 6 77 12
+4a64 5 76 12
+4a69 1a 729 23
+4a83 1d 186 9
+4aa0 8 176 9
+4aa8 8 883 42
+4ab0 5 732 23
+4ab5 7 176 9
+4abc 7 733 23
+4ac3 8 732 23
+4acb 7 733 23
+4ad2 6 883 42
+4ad8 14 120 45
+4aec e 887 42
+4afa 4 738 23
+4afe 8 736 23
+4b06 b 737 23
+4b11 8 716 23
+4b19 8 738 23
+4b21 4 1252 23
+4b25 6 795 23
+4b2b 7 1252 23
+4b32 4 795 23
+4b36 4 42 6
+4b3a 4 626 42
+4b3e 2 795 23
+4b40 7 626 42
+4b47 9 795 23
+4b50 4 796 23
+4b54 8 797 23
+4b5c 10 797 23
+4b6c e 795 23
+4b7a 8 212 9
+4b82 5 161 9
+4b87 7 212 9
+4b8e 5 47 8
+4b93 8 161 9
+4b9b 3 212 9
+4b9e 8 47 8
+4ba6 14 161 9
+4bba b 46 8
+4bc5 5 47 8
+4bca 8 831 23
+4bd2 11 833 23
+4be3 8 834 23
+4beb b 284 23
+4bf6 f 286 23
+4c05 3 288 23
+4c08 c 289 23
+4c14 7 291 23
+4c1b c 288 23
+4c27 7 291 23
+4c2e f 293 23
+4c3d f 294 23
+4c4c f 295 23
+4c5b f 296 23
+4c6a f 298 23
+4c79 c 299 23
+4c85 c 300 23
+4c91 c 301 23
+4c9d c 302 23
+4ca9 c 303 23
+4cb5 c 304 23
+4cc1 c 305 23
+4ccd c 306 23
+4cd9 c 307 23
+4ce5 c 308 23
+4cf1 c 309 23
+4cfd f 311 23
+4d0c b 313 23
+4d17 c 314 23
+4d23 b 315 23
+4d2e c 316 23
+4d3a b 317 23
+4d45 4 318 23
+4d49 a 319 23
+4d53 a 320 23
+4d5d 7 318 23
+4d64 a 321 23
+4d6e a 322 23
+4d78 4 323 23
+4d7c 8 324 23
+4d84 c0 323 23
+4e44 a 324 23
+4e4e 8 323 23
+4e56 8 324 23
+4e5e 7 835 23
+4e65 8 42 6
+4e6d a 606 23
+4e77 e 616 23
+4e85 3 604 23
+4e88 15 606 23
+4e9d 9 614 23
+4ea6 3 615 23
+4ea9 9 616 23
+4eb2 8 605 23
+4eba 3 615 23
+4ebd b 606 23
+4ec8 8 216 9
+4ed0 7 837 23
+4ed7 8 176 9
+4edf 7 837 23
+4ee6 3 838 23
+4ee9 7 837 23
+4ef0 3 838 23
+4ef3 6 216 9
+4ef9 1f 92 8
+4f18 4 804 23
+4f1c 5 161 9
+4f21 c 816 23
+4f2d 8 161 9
+4f35 3 804 23
+4f38 c 161 9
+4f44 5 816 23
+4f49 4 804 23
+4f4d 4 807 23
+4f51 8 161 9
+4f59 3 809 23
+4f5c 8 804 23
+4f64 6 809 23
+4f6a 2 816 23
+4f6c 7 809 23
+4f73 d 816 23
+4f80 8 819 23
+4f88 4 42 6
+4f8c 9 71 12
+4f95 25 74 12
+4fba 3 75 12
+4fbd 3 76 12
+4fc0 3 75 12
+4fc3 8 77 12
+4fcb 5 76 12
+4fd0 1c 824 23
+4fec 7 825 23
+4ff3 14 186 9
+5007 8 176 9
+500f 8 883 42
+5017 7 176 9
+501e e 826 23
+502c 6 883 42
+5032 1c 120 45
+504e 12 887 42
+5060 e 86 12
+506e f 2936 15
+507d 3 86 12
+5080 5 2936 15
+5085 9 86 12
+508e 3 115 12
+5091 31 2936 15
+50c2 1e 89 12
+50e0 1a 637 23
+50fa 8 645 23
+5102 6 652 23
+5108 48 645 23
+5150 8 652 23
+5158 8 656 23
+5160 5 658 23
+5165 5 657 23
+516a 8 651 23
+5172 8 653 23
+517a 8 646 23
+5182 8 647 23
+518a 8 648 23
+5192 8 649 23
+519a 8 650 23
+51a2 8 654 23
+51aa 8 655 23
+51b2 8 657 23
+51ba 8 658 23
+51c2 5 659 23
+51c7 5 660 23
+51cc 8 661 23
+51d4 8 659 23
+51dc 14 660 23
+51f0 1a 637 23
+520a 8 645 23
+5212 6 652 23
+5218 4d 645 23
+5265 8 654 23
+526d 8 655 23
+5275 5 656 23
+527a 5 657 23
+527f 8 651 23
+5287 8 652 23
+528f 8 653 23
+5297 8 646 23
+529f 8 647 23
+52a7 8 648 23
+52af 8 649 23
+52b7 8 650 23
+52bf 8 656 23
+52c7 8 657 23
+52cf 5 658 23
+52d4 5 659 23
+52d9 5 660 23
+52de 8 661 23
+52e6 8 658 23
+52ee 8 659 23
+52f6 d 660 23
+5303 11 86 12
+5314 f 2936 15
+5323 3 86 12
+5326 5 2936 15
+532b 9 86 12
+5334 3 115 12
+5337 37 2936 15
+536e 1d 89 12
+538b 11 86 12
+539c f 2936 15
+53ab 3 86 12
+53ae 5 2936 15
+53b3 9 86 12
+53bc 3 115 12
+53bf 35 2936 15
+53f4 14 89 12
+5408 d 768 23
+5415 c 120 12
+5421 a 124 12
+542b 4 125 12
+542f a 93 12
+5439 3 124 12
+543c 3 125 12
+543f 5 126 12
+5444 16 93 12
+545a 5 94 12
+545f 5 93 12
+5464 11 94 12
+5475 5 96 12
+547a 11 94 12
+548b 9 96 12
+5494 9 78 12
+549d e 79 12
+54ab 8 72 12
+54b3 4 827 23
+54b7 16 893 42
+54cd c 120 12
+54d9 9 124 12
+54e2 5 125 12
+54e7 4 93 12
+54eb 4 124 12
+54ef 3 93 12
+54f2 4 125 12
+54f6 4 124 12
+54fa 4 126 12
+54fe 17 93 12
+5515 5 94 12
+551a 3 93 12
+551d 15 94 12
+5532 a 96 12
+553c 8 94 12
+5544 d 96 12
+5551 a 120 12
+555b 5 124 12
+5560 e 93 12
+556e 3 124 12
+5571 4 125 12
+5575 5 93 12
+557a 3 125 12
+557d 5 93 12
+5582 5 126 12
+5587 8 93 12
+558f 5 94 12
+5594 5 93 12
+5599 f 94 12
+55a8 4 96 12
+55ac a 94 12
+55b6 d 96 12
+55c3 9 78 12
+55cc e 79 12
+55da 7 78 12
+55e1 d 79 12
+55ee e 216 9
+55fc 26 92 8
+5622 e 216 9
+5630 26 92 8
+5656 15 72 12
+566b c 734 23
+5677 e 893 42
+5685 c 734 23
+5691 13 893 42
+56a4 10 868 23
+56b4 1a 874 23
+56ce 17 838 23
+FUNC 56f0 1d12 0 MinidumpWriter::Dump
+56f0 2 505 23
+56f2 4 510 23
+56f6 5 47 8
+56fb 12 505 23
+570d 3 42 6
+5710 8 47 8
+5718 14 161 9
+572c 18 212 9
+5744 7 161 9
+574b 18 212 9
+5763 1b 161 9
+577e 2c 212 9
+57aa b 46 8
+57b5 5 47 8
+57ba 8 512 23
+57c2 d 60 8
+57cf b 59 8
+57da 5 60 8
+57df 2 515 23
+57e1 4 514 23
+57e5 a 216 9
+57ef 21 92 8
+5810 a 216 9
+581a 21 92 8
+583b 15 595 23
+5850 8 513 23
+5858 8 223 9
+5860 c 516 23
+586c 2 520 23
+586e b 518 23
+5879 b 519 23
+5884 c 520 23
+5890 7 522 23
+5897 b 527 23
+58a2 b 521 23
+58ad 7 522 23
+58b4 d 527 23
+58c1 8 73 8
+58c9 f 529 23
+58d8 6 73 8
+58de 12 76 8
+58f0 4 933 23
+58f4 4 934 23
+58f8 4 42 6
+58fc 4 626 42
+5900 3 42 6
+5903 7 626 42
+590a 16 80 39
+5920 3 236 40
+5923 4 83 39
+5927 5 80 39
+592c 14 936 23
+5940 9 919 23
+5949 c 936 23
+5955 4 937 23
+5959 11 902 23
+596a 9 938 23
+5973 b 914 23
+597e c 919 23
+598a 3 236 40
+598d 5 914 23
+5992 5 939 23
+5997 4 161 9
+599b 2 943 23
+599d 14 161 9
+59b1 b 212 9
+59bc 7 161 9
+59c3 6 943 23
+59c9 2 944 23
+59cb 8 68 8
+59d3 b 67 8
+59de 1a 68 8
+59f8 8 949 23
+5a00 c 176 9
+5a0c 2 959 23
+5a0e 4 933 23
+5a12 b 953 23
+5a1d 7 955 23
+5a24 7 176 9
+5a2b 11 954 23
+5a3c 6 959 23
+5a42 8 1015 23
+5a4a 3 959 23
+5a4d 8 958 23
+5a55 b 1015 23
+5a60 d 919 23
+5a6d b 959 23
+5a78 9 42 6
+5a81 8 960 23
+5a89 11 902 23
+5a9a 9 961 23
+5aa3 b 914 23
+5aae 13 919 23
+5ac1 3 236 40
+5ac4 5 914 23
+5ac9 14 990 23
+5add 3 992 23
+5ae0 7 994 23
+5ae7 8 992 23
+5aef b 993 23
+5afa 8 994 23
+5b02 5 997 23
+5b07 5 998 23
+5b0c 19 999 23
+5b25 4 1001 23
+5b29 5 998 23
+5b2e 4 1003 23
+5b32 14 161 9
+5b46 5 1003 23
+5b4b 12 1005 23
+5b5d 5 1010 23
+5b62 4 161 9
+5b66 14 1010 23
+5b7a 7 161 9
+5b81 d 1010 23
+5b8e 15 1023 23
+5ba3 b 1014 23
+5bae 5 1023 23
+5bb3 8 1017 23
+5bbb c 1025 23
+5bc7 a 1029 23
+5bd1 8 1026 23
+5bd9 9 1029 23
+5be2 21 186 9
+5c03 8 176 9
+5c0b e 1035 23
+5c19 7 176 9
+5c20 e 1032 23
+5c2e 9 1035 23
+5c37 4 967 23
+5c3b 4 1037 23
+5c3f b 967 23
+5c4a 8 83 8
+5c52 7 1037 23
+5c59 7 967 23
+5c60 6 83 8
+5c66 28 87 8
+5c8e 12 967 23
+5ca0 2 975 23
+5ca2 a 216 9
+5cac 22 92 8
+5cce 8 531 23
+5cd6 8 73 8
+5cde f 533 23
+5ced 6 73 8
+5cf3 15 76 8
+5d08 4 879 23
+5d0c 3 42 6
+5d0f 9 879 23
+5d18 18 895 23
+5d30 2 76 12
+5d32 6 75 12
+5d38 2 77 12
+5d3a 3 76 12
+5d3d 2 77 12
+5d3f 7 78 12
+5d46 a 79 12
+5d50 13 885 23
+5d63 4 161 9
+5d67 c 888 23
+5d73 1b 161 9
+5d8e d 888 23
+5d9b 1b 186 9
+5db6 8 176 9
+5dbe 8 883 42
+5dc6 4 893 23
+5dca 7 176 9
+5dd1 7 894 23
+5dd8 8 893 23
+5de0 7 894 23
+5de7 6 883 42
+5ded 14 120 45
+5e01 8 887 42
+5e09 4 236 40
+5e0d a 879 23
+5e17 8 883 23
+5e1f 3 71 12
+5e22 3 883 23
+5e25 6 71 12
+5e2b 1c 74 12
+5e47 11 86 12
+5e58 f 2936 15
+5e67 3 86 12
+5e6a 5 2936 15
+5e6f 3 115 12
+5e72 9 86 12
+5e7b 5 2936 15
+5e80 5 115 12
+5e85 2b 2936 15
+5eb0 15 89 12
+5ec5 8 120 12
+5ecd 9 124 12
+5ed6 4 125 12
+5eda 8 93 12
+5ee2 3 124 12
+5ee5 3 125 12
+5ee8 4 126 12
+5eec 16 93 12
+5f02 5 94 12
+5f07 3 93 12
+5f0a 11 94 12
+5f1b 5 96 12
+5f20 4 94 12
+5f24 6 96 12
+5f2a d 47 8
+5f37 b 46 8
+5f42 f 47 8
+5f51 8 958 23
+5f59 2a 970 23
+5f83 d 1017 23
+5f90 11 990 23
+5fa1 4 992 23
+5fa5 7 994 23
+5fac 8 992 23
+5fb4 b 993 23
+5fbf 5 994 23
+5fc4 4 997 23
+5fc8 3 994 23
+5fcb 5 997 23
+5fd0 5 998 23
+5fd5 10 999 23
+5fe5 4 1001 23
+5fe9 5 998 23
+5fee 5 1005 23
+5ff3 4 1003 23
+5ff7 8 1010 23
+5fff 5 1003 23
+6004 8 161 9
+600c 3 1005 23
+600f 10 161 9
+601f 7 1010 23
+6026 7 161 9
+602d 12 1010 23
+603f b 1014 23
+604a 7 1020 23
+6051 c 1025 23
+605d 17 1020 23
+6074 5 1025 23
+6079 5 1029 23
+607e 8 1026 23
+6086 9 1029 23
+608f 21 186 9
+60b0 8 176 9
+60b8 e 1035 23
+60c6 7 176 9
+60cd e 1032 23
+60db d 1035 23
+60e8 8 83 8
+60f0 4 1037 23
+60f4 8 976 23
+60fc 7 1037 23
+6103 7 976 23
+610a 6 83 8
+6110 1d 87 8
+612d 4 236 40
+6131 f 970 23
+6140 a 979 23
+614a 8 72 12
+6152 17 893 42
+6169 18 161 9
+6181 b 212 9
+618c 7 161 9
+6193 c 626 42
+619f 9 1043 23
+61a8 c 68 8
+61b4 b 67 8
+61bf c 68 8
+61cb 8 1050 23
+61d3 8 176 9
+61db 4 626 42
+61df 7 1055 23
+61e6 b 1054 23
+61f1 7 176 9
+61f8 4 42 6
+61fc 7 1055 23
+6203 7 626 42
+620a 3 1059 23
+620d 7 1057 23
+6214 2 1059 23
+6216 8 83 8
+621e 8 1061 23
+6226 12 83 8
+6238 3 505 23
+623b a 1061 23
+6245 4 505 23
+6249 3 751 42
+624c 8 83 8
+6254 7 1061 23
+625b 6 83 8
+6261 11 87 8
+6272 4 42 6
+6276 4 626 42
+627a 4 1059 23
+627e 7 626 42
+6285 5 1059 23
+628a 5 1063 23
+628f a 216 9
+6299 1d 92 8
+62b6 8 538 23
+62be 28 540 23
+62e6 4 161 9
+62ea d 212 9
+62f7 5 47 8
+62fc 14 161 9
+6310 b 46 8
+631b 7 161 9
+6322 5 212 9
+6327 d 47 8
+6334 8 1068 23
+633c 8 223 9
+6344 c 1070 23
+6350 8 176 9
+6358 b 1072 23
+6363 5 1080 23
+6368 7 176 9
+636f e 1073 23
+637d 4 42 6
+6381 a 1075 23
+638b 3 1076 23
+638e 4 1077 23
+6392 7 1076 23
+6399 8 1077 23
+63a1 c 1078 23
+63ad a 216 9
+63b7 21 92 8
+63d8 8 542 23
+63e0 28 544 23
+6408 4 161 9
+640c d 212 9
+6419 5 47 8
+641e 14 161 9
+6432 b 46 8
+643d 7 161 9
+6444 4 212 9
+6448 d 47 8
+6455 8 1085 23
+645d 8 223 9
+6465 c 1087 23
+6471 8 176 9
+6479 10 1294 23
+6489 e 1308 23
+6497 5 1294 23
+649c 7 1308 23
+64a3 b 1089 23
+64ae 7 176 9
+64b5 7 1090 23
+64bc 26 1308 23
+64e2 7 1090 23
+64e9 2 1294 23
+64eb 8 1308 23
+64f3 2 1294 23
+64f5 2a 1308 23
+651f 5 2822 15
+6524 13 1308 23
+6537 7 2822 15
+653e 8 1308 23
+6546 a 1317 23
+6550 3 1294 23
+6553 1d 2822 15
+6570 8 1653 23
+6578 b 1649 23
+6583 12 1653 23
+6595 f 1657 23
+65a4 8 1667 23
+65ac 5 1658 23
+65b1 8 1657 23
+65b9 a 1665 23
+65c3 5 1667 23
+65c8 6 1666 23
+65ce 3b 1665 23
+6609 9 1677 23
+6612 12 1683 23
+6624 3 1684 23
+6627 3 1682 23
+662a 14 1667 23
+663e 8 1670 23
+6646 3 1671 23
+6649 3 1670 23
+664c 2 1671 23
+664e 11 1674 23
+665f 18 1705 23
+6677 b 1707 23
+6682 e 1095 23
+6690 7 80 39
+6697 d 47 8
+66a4 b 46 8
+66af d 47 8
+66bc 7 1051 23
+66c3 12 1069 23
+66d5 2 1086 23
+66d7 a 216 9
+66e1 21 92 8
+6702 8 546 23
+670a 28 548 23
+6732 12 551 23
+6744 b 550 23
+674f 9 551 23
+6758 b 1287 23
+6763 b 1288 23
+676e b 1289 23
+6779 28 553 23
+67a1 4 42 6
+67a5 12 556 23
+67b7 b 555 23
+67c2 c 556 23
+67ce b 1287 23
+67d9 b 1288 23
+67e4 b 1289 23
+67ef 28 558 23
+6817 12 561 23
+6829 b 560 23
+6834 9 561 23
+683d b 1287 23
+6848 b 1288 23
+6853 b 1289 23
+685e 28 563 23
+6886 4 42 6
+688a 12 566 23
+689c b 565 23
+68a7 c 566 23
+68b3 b 1287 23
+68be b 1288 23
+68c9 b 1289 23
+68d4 28 568 23
+68fc 4 42 6
+6900 12 571 23
+6912 b 570 23
+691d c 571 23
+6929 b 1287 23
+6934 b 1288 23
+693f b 1289 23
+694a 28 573 23
+6972 4 42 6
+6976 12 576 23
+6988 b 575 23
+6993 c 576 23
+699f b 1287 23
+69aa b 1288 23
+69b5 b 1289 23
+69c0 28 578 23
+69e8 4 42 6
+69ec 12 581 23
+69fe b 580 23
+6a09 c 581 23
+6a15 b 1287 23
+6a20 b 1288 23
+6a2b b 1289 23
+6a36 28 583 23
+6a5e 4 42 6
+6a62 b 585 23
+6a6d 7 42 6
+6a74 4 1099 23
+6a78 4 1101 23
+6a7c 3 1102 23
+6a7f 5 1101 23
+6a84 e 1102 23
+6a92 6 1106 23
+6a98 2 1109 23
+6a9a 9 1106 23
+6aa3 1e 1112 23
+6ac1 10 1115 23
+6ad1 9 1118 23
+6ada f 1110 23
+6ae9 9 1122 23
+6af2 3 1125 23
+6af5 6 505 23
+6afb 3 1130 23
+6afe 3 1125 23
+6b01 5 505 23
+6b06 d 1141 23
+6b13 4 1137 23
+6b17 4 505 23
+6b1b 11 1137 23
+6b2c 4 505 23
+6b30 9 1137 23
+6b39 e 1138 23
+6b47 d 1139 23
+6b54 a 216 9
+6b5e 21 92 8
+6b7f a 216 9
+6b89 21 92 8
+6baa a 216 9
+6bb4 29 92 8
+6bdd d 1119 23
+6bea f 1115 23
+6bf9 d 1116 23
+6c06 d 1194 23
+6c13 b 1287 23
+6c1e b 1288 23
+6c29 b 1289 23
+6c34 28 588 23
+6c5c a 593 23
+6c66 a 594 23
+6c70 1e 1158 23
+6c8e 8 1159 23
+6c96 4 1155 23
+6c9a 1b 1161 23
+6cb5 8 1162 23
+6cbd 3 1163 23
+6cc0 5 1159 23
+6cc5 7 1166 23
+6ccc 2 1167 23
+6cce 6 1166 23
+6cd4 6 1167 23
+6cda 3 1171 23
+6cdd 4 161 9
+6ce1 c 60 8
+6ced 14 161 9
+6d01 17 212 9
+6d18 7 161 9
+6d1f c 212 9
+6d2b b 59 8
+6d36 5 60 8
+6d3b 8 1171 23
+6d43 8 1173 23
+6d4b 8 1181 23
+6d53 3 1177 23
+6d56 5 1181 23
+6d5b 5 1173 23
+6d60 d 1177 23
+6d6d 1e 1179 23
+6d8b c 1181 23
+6d97 8 1180 23
+6d9f 3 1181 23
+6da2 b 1182 23
+6dad 1 1181 23
+6dae 2 1182 23
+6db0 1b 1184 23
+6dcb 1f 1187 23
+6dea 4 1190 23
+6dee 8 73 8
+6df6 f 1193 23
+6e05 7 1190 23
+6e0c 10 1191 23
+6e1c 10 1192 23
+6e2c 6 73 8
+6e32 19 76 8
+6e4b 9 1177 23
+6e54 d 1194 23
+6e61 5 1199 23
+6e66 18 161 9
+6e7e 16 212 9
+6e94 7 161 9
+6e9b b 212 9
+6ea6 3 66 8
+6ea9 2f 212 9
+6ed8 6 66 8
+6ede d 68 8
+6eeb b 67 8
+6ef6 5 68 8
+6efb 8 1199 23
+6f03 8 223 9
+6f0b c 1201 23
+6f17 8 176 9
+6f1f 5 1206 23
+6f24 f 76 43
+6f33 b 1202 23
+6f3e 7 1207 23
+6f45 7 176 9
+6f4c 7 1203 23
+6f53 8 1206 23
+6f5b 8 1210 23
+6f63 18 92 42
+6f7b 7 1203 23
+6f82 7 1205 23
+6f89 c 92 42
+6f95 7 1205 23
+6f9c 10 1208 23
+6fac 10 1209 23
+6fbc 10 1212 23
+6fcc 5 76 43
+6fd1 4 84 43
+6fd5 13 1004 42
+6fe8 8 82 43
+6ff0 8 83 43
+6ff8 8 84 43
+7000 10 1004 42
+7010 1b 1217 23
+702b 8 83 8
+7033 17 1218 23
+704a 6 83 8
+7050 b 87 8
+705b 12 1220 23
+706d d 586 23
+707a 15 1194 23
+708f 1f 73 8
+70ae 16 1678 23
+70c4 9 1679 23
+70cd 2 1321 23
+70cf 4 2822 15
+70d3 6 1321 23
+70d9 5 60 12
+70de d 198 12
+70eb 2a 63 12
+7115 8 198 12
+711d d 49 4
+712a a 48 7
+7134 1a 1328 23
+714e 12 1332 23
+7160 b 1333 23
+716b 15 1337 23
+7180 8 42 6
+7188 9 116 7
+7191 b 1340 23
+719c a 1329 23
+71a6 1c 1353 23
+71c2 8 42 6
+71ca 5 116 7
+71cf f 1356 23
+71de 17 1357 23
+71f5 15 1344 23
+720a 8 1347 23
+7212 4 1348 23
+7216 a 1347 23
+7220 9 1360 23
+7229 8 42 6
+7231 5 134 12
+7236 5 2812 15
+723b 7 136 12
+7242 3 135 12
+7245 2 2812 15
+7247 4 136 12
+724b 16 2812 15
+7261 a 134 12
+726b 12 1367 23
+727d 6 1364 23
+7283 11 1374 23
+7294 7 1376 23
+729b f 1378 23
+72aa 11 1380 23
+72bb 8 1383 23
+72c3 8 1380 23
+72cb 6 1383 23
+72d1 23 1385 23
+72f4 b 42 6
+72ff 6 2812 15
+7305 9 134 12
+730e 7 136 12
+7315 3 135 12
+7318 3 2812 15
+731b 4 136 12
+731f 2b 2812 15
+734a 10 1063 23
+735a 11 216 9
+736b 2b 92 8
+7396 12 979 23
+73a8 1f 83 8
+73c7 7 1200 23
+73ce 15 1220 23
+73e3 1f 66 8
+FUNC 7410 1ac 0 google_breakpad::WriteMinidump(char const*, std::list<google_breakpad::MappingEntry, std::allocator<google_breakpad::MappingEntry> > const&, std::list<google_breakpad::AppMemory, std::allocator<google_breakpad::AppMemory> > const&, google_breakpad::LinuxDumper*)
+7410 11 1841 23
+7421 32 479 23
+7453 a 190 12
+745d 9 479 23
+7466 1b 92 42
+7481 9 479 23
+748a 5 190 12
+748f 4 481 23
+7493 a 479 23
+749d 6 481 23
+74a3 9 482 23
+74ac f 486 23
+74bb 3 489 23
+74be 5 490 23
+74c3 5 489 23
+74c8 5 490 23
+74cd b 494 23
+74d8 4 1843 23
+74dc 8 1845 23
+74e4 4 500 23
+74e8 2 1845 23
+74ea 2 500 23
+74ec b 502 23
+74f7 a 497 23
+7501 f 1846 23
+7510 10 491 23
+7520 2 1844 23
+7522 6 500 23
+7528 10 501 23
+7538 28 481 23
+7560 1f 482 23
+757f 15 497 23
+7594 18 479 23
+75ac 10 1845 23
+FUNC 75c0 2ce 0 WriteMinidumpImpl
+75c0 2b 1748 23
+75eb 8 1749 23
+75f3 3 1748 23
+75f6 2 1749 23
+75f8 6 1748 23
+75fe 5 1749 23
+7603 9 1751 23
+760c 2 1753 23
+760e 9 1752 23
+7617 20 42 6
+7637 41 1767 23
+7678 4 163 5
+767c 9 479 23
+7685 8 163 5
+768d 9 167 5
+7696 d 170 5
+76a3 34 479 23
+76d7 a 190 12
+76e1 9 479 23
+76ea 1b 92 42
+7705 9 479 23
+770e 5 190 12
+7713 8 479 23
+771b 4 481 23
+771f 12 479 23
+7731 6 481 23
+7737 9 482 23
+7740 5 486 23
+7745 5 1223 23
+774a a 486 23
+7754 3 489 23
+7757 5 490 23
+775c 5 489 23
+7761 5 490 23
+7766 b 494 23
+7771 4 1764 23
+7775 8 1766 23
+777d 4 500 23
+7781 2 1766 23
+7783 2 500 23
+7785 13 501 23
+7798 18 491 23
+77b0 2 1765 23
+77b2 6 500 23
+77b8 b 502 23
+77c3 15 497 23
+77d8 28 481 23
+7800 19 479 23
+7819 22 482 23
+783b 28 42 6
+7863 f 479 23
+7872 d 1766 23
+787f f 497 23
+FUNC 7890 2b 0 google_breakpad::WriteMinidump(int, long, int, void const*, unsigned long, std::list<google_breakpad::MappingEntry, std::allocator<google_breakpad::MappingEntry> > const&, std::list<google_breakpad::AppMemory, std::allocator<google_breakpad::AppMemory> > const&)
+7890 4 1832 23
+7894 22 1835 23
+78b6 5 1836 23
+FUNC 78c0 2c 0 google_breakpad::WriteMinidump(char const*, long, int, void const*, unsigned long, std::list<google_breakpad::MappingEntry, std::allocator<google_breakpad::MappingEntry> > const&, std::list<google_breakpad::AppMemory, std::allocator<google_breakpad::AppMemory> > const&)
+78c0 4 1822 23
+78c4 23 1825 23
+78e7 5 1826 23
+FUNC 78f0 2a 0 google_breakpad::WriteMinidump(int, int, void const*, unsigned long, std::list<google_breakpad::MappingEntry, std::allocator<google_breakpad::MappingEntry> > const&, std::list<google_breakpad::AppMemory, std::allocator<google_breakpad::AppMemory> > const&)
+78f0 4 1812 23
+78f4 21 1815 23
+7915 5 1816 23
+FUNC 7920 2b 0 google_breakpad::WriteMinidump(char const*, int, void const*, unsigned long, std::list<google_breakpad::MappingEntry, std::allocator<google_breakpad::MappingEntry> > const&, std::list<google_breakpad::AppMemory, std::allocator<google_breakpad::AppMemory> > const&)
+7920 4 1803 23
+7924 22 1806 23
+7946 5 1807 23
+FUNC 7950 9a 0 google_breakpad::WriteMinidump(int, int, void const*, unsigned long)
+7950 16 1781 23
+7966 3 1781 23
+7969 a 387 40
+7973 16 1784 23
+7989 5 387 40
+798e 5 388 40
+7993 5 387 40
+7998 5 388 40
+799d 5 1784 23
+79a2 19 379 40
+79bb 14 1785 23
+79cf 1b 379 40
+FUNC 79f0 9b 0 google_breakpad::WriteMinidump(char const*, int, void const*, unsigned long)
+79f0 16 1774 23
+7a06 3 1774 23
+7a09 a 387 40
+7a13 17 1777 23
+7a2a 5 387 40
+7a2f 5 388 40
+7a34 5 387 40
+7a39 5 388 40
+7a3e 5 1777 23
+7a43 19 379 40
+7a5c 14 1778 23
+7a70 1b 379 40
+FUNC 7a90 26a 0 google_breakpad::WriteMinidump(char const*, int, int)
+7a90 10 1788 23
+7aa0 10 1789 23
+7ab0 4 387 40
+7ab4 7 170 5
+7abb 5 479 23
+7ac0 5 387 40
+7ac5 b 167 5
+7ad0 8 479 23
+7ad8 4 387 40
+7adc 5 388 40
+7ae1 5 387 40
+7ae6 5 388 40
+7aeb 26 479 23
+7b11 a 190 12
+7b1b 9 479 23
+7b24 21 92 42
+7b45 9 479 23
+7b4e 5 190 12
+7b53 5 481 23
+7b58 14 479 23
+7b6c 6 481 23
+7b72 9 482 23
+7b7b 10 379 40
+7b8b 13 486 23
+7b9e 4 489 23
+7ba2 5 490 23
+7ba7 5 489 23
+7bac 5 490 23
+7bb1 b 494 23
+7bbc 4 1795 23
+7bc0 a 1797 23
+7bca 5 500 23
+7bcf 2 1797 23
+7bd1 2 500 23
+7bd3 b 502 23
+7bde a 497 23
+7be8 1b 42 6
+7c03 15 1798 23
+7c18 18 491 23
+7c30 2 1796 23
+7c32 7 500 23
+7c39 f 501 23
+7c48 28 481 23
+7c70 22 482 23
+7c92 23 42 6
+7cb5 f 1797 23
+7cc4 d 479 23
+7cd1 1a 379 40
+7ceb f 497 23
+FUNC 7d00 153 0 google_breakpad::PageAllocator::Alloc(unsigned int)
+7d00 8 71 12
+7d08 25 70 12
+7d2d b 74 12
+7d38 b 74 12
+7d43 2 75 12
+7d45 2 76 12
+7d47 3 75 12
+7d4a 8 77 12
+7d52 3 76 12
+7d55 2b 97 12
+7d80 c 86 12
+7d8c f 2936 15
+7d9b 3 86 12
+7d9e 5 2936 15
+7da3 6 86 12
+7da9 5 2936 15
+7dae 6 115 12
+7db4 1f 2936 15
+7dd3 d 89 12
+7de0 6 120 12
+7de6 2 93 12
+7de8 4 124 12
+7dec 3 93 12
+7def 4 125 12
+7df3 5 93 12
+7df8 4 124 12
+7dfc 5 93 12
+7e01 4 126 12
+7e05 8 93 12
+7e0d 5 94 12
+7e12 3 93 12
+7e15 13 94 12
+7e28 10 96 12
+7e38 7 78 12
+7e3f 11 79 12
+7e50 2 72 12
+7e52 1 97 12
+FUNC 7e60 248 0 google_breakpad::ProcCpuInfoReader::GetNextField(char const**)
+7e60 4 54 7
+7e64 4 118 4
+7e68 10 54 7
+7e78 b 60 7
+7e83 e 116 4
+7e91 2 117 4
+7e93 8 118 4
+7e9b 7 117 4
+7ea2 5 118 4
+7ea7 e 62 7
+7eb5 6 99 4
+7ebb f 66 4
+7eca 3 99 4
+7ecd 3 2838 15
+7ed0 5 98 4
+7ed5 3 99 4
+7ed8 13 2838 15
+7eeb a 100 4
+7ef5 a 102 4
+7eff 4 103 4
+7f03 5 66 4
+7f08 14 70 4
+7f1c c 54 7
+7f28 10 70 4
+7f38 8 69 4
+7f40 b 78 4
+7f4b a 86 4
+7f55 8 87 4
+7f5d 3 92 4
+7f60 7 90 4
+7f67 e 92 4
+7f75 5 71 4
+7f7a 6 68 7
+7f80 8 77 7
+7f88 4 70 7
+7f8c 5 77 7
+7f91 3 78 7
+7f94 3 77 7
+7f97 6 78 7
+7f9d 5 83 7
+7fa2 5 84 7
+7fa7 3 88 7
+7faa 7 87 7
+7fb1 3 88 7
+7fb4 3 92 7
+7fb7 7 88 7
+7fbe 2 92 7
+7fc0 9 95 7
+7fc9 5 99 7
+7fce 4 101 7
+7fd2 c 104 7
+7fde 5 102 7
+7fe3 d 104 7
+7ff0 e 84 7
+7ffe 4 85 7
+8002 e 84 7
+8010 f 92 7
+801f 4 93 7
+8023 d 92 7
+8030 10 105 4
+8040 e 2838 15
+804e 4 104 7
+8052 2 66 7
+8054 b 104 7
+805f b 70 4
+806a 1f 116 4
+8089 1f 87 4
+FUNC 80b0 22 0 google_breakpad::TypedMDRVA<unsigned int>::~TypedMDRVA()
+80b0 6 216 9
+80b6 1c 92 8
+FUNC 80e0 22 0 google_breakpad::TypedMDRVA<MDRawContextAMD64>::~TypedMDRVA()
+80e0 9 216 9
+80e9 19 92 8
+FUNC 8110 22 0 google_breakpad::TypedMDRVA<MDRawLinkMap>::~TypedMDRVA()
+8110 6 216 9
+8116 1c 92 8
+FUNC 8140 22 0 google_breakpad::TypedMDRVA<MDRawDebug>::~TypedMDRVA()
+8140 6 216 9
+8146 1c 92 8
+FUNC 8170 229 0 std::vector<MDMemoryDescriptor, google_breakpad::PageStdAllocator<MDMemoryDescriptor> >::reserve(unsigned long)
+8170 a 69 43
+817a 25 66 43
+819f 9 69 43
+81a8 4 42 6
+81ac e 707 42
+81ba 5 71 43
+81bf 29 86 43
+81e8 4 42 6
+81ec 2 169 42
+81ee 4 42 6
+81f2 7 626 42
+81f9 3 169 42
+81fc 5 626 42
+8201 2 169 42
+8203 8 162 12
+820b 4 71 12
+820f 1c 74 12
+822b 2 75 12
+822d 2 76 12
+822f 3 75 12
+8232 8 77 12
+823a 4 76 12
+823e 12 245 41
+8250 13 120 45
+8263 d 245 41
+8270 5 83 43
+8275 4 84 43
+8279 5 82 43
+827e 7 83 43
+8285 3 84 43
+8288 5 83 43
+828d 13 84 43
+82a0 e 86 12
+82ae e 2936 15
+82bc 3 86 12
+82bf 5 2936 15
+82c4 9 86 12
+82cd 3 115 12
+82d0 2d 2936 15
+82fd b 89 12
+8308 8 120 12
+8310 9 124 12
+8319 4 125 12
+831d 5 93 12
+8322 3 124 12
+8325 3 125 12
+8328 3 93 12
+832b 4 126 12
+832f 16 93 12
+8345 5 94 12
+834a 4 93 12
+834e 11 94 12
+835f 5 96 12
+8364 4 94 12
+8368 10 96 12
+8378 8 78 12
+8380 d 79 12
+838d c 70 43
+FUNC 83a0 357 0 std::vector<MDMemoryDescriptor, google_breakpad::PageStdAllocator<MDMemoryDescriptor> >::_M_insert_aux(__gnu_cxx::__normal_iterator<MDMemoryDescriptor*, std::vector<MDMemoryDescriptor, google_breakpad::PageStdAllocator<MDMemoryDescriptor> > >, MDMemoryDescriptor const&)
+83a0 28 316 43
+83c8 8 320 43
+83d0 3 316 43
+83d3 2 320 43
+83d5 14 120 45
+83e9 4 329 43
+83ed 4 325 43
+83f1 7 327 43
+83f8 3 559 37
+83fb 4 325 43
+83ff 4 327 43
+8403 4 559 37
+8407 5 560 37
+840c f 561 37
+841b a 333 43
+8425 2b 391 43
+8450 4 42 6
+8454 a 626 42
+845e 9 215 37
+8467 4 1308 42
+846b 9 1309 42
+8474 3 900 38
+8477 d 162 12
+8484 3 900 38
+8487 4 162 12
+848b 8 342 43
+8493 23 74 12
+84b6 3 75 12
+84b9 2 76 12
+84bb 3 75 12
+84be 8 77 12
+84c6 8 76 12
+84ce 8 351 43
+84d6 13 120 45
+84e9 f 245 41
+84f8 13 120 45
+850b d 245 41
+8518 13 316 43
+852b 15 245 41
+8540 13 120 45
+8553 d 245 41
+8560 10 316 43
+8570 4 387 43
+8574 5 389 43
+8579 4 388 43
+857d 13 389 43
+8590 3 900 38
+8593 d 162 12
+85a0 3 900 38
+85a3 5 162 12
+85a8 10 342 43
+85b8 7 86 12
+85bf 2 2936 15
+85c1 7 86 12
+85c8 d 2936 15
+85d5 3 86 12
+85d8 5 2936 15
+85dd 9 86 12
+85e6 3 115 12
+85e9 2d 2936 15
+8616 17 89 12
+862d 8 120 12
+8635 9 124 12
+863e 4 125 12
+8642 5 93 12
+8647 3 124 12
+864a 3 125 12
+864d 3 93 12
+8650 4 126 12
+8654 16 93 12
+866a 5 94 12
+866f 4 93 12
+8673 15 94 12
+8688 b 96 12
+8693 8 78 12
+869b d 79 12
+86a8 13 1309 42
+86bb 7 900 38
+86c2 6 169 42
+86c8 8 900 38
+86d0 2 169 42
+86d2 4 342 43
+86d6 3 169 42
+86d9 4 342 43
+86dd 6 169 42
+86e3 7 162 12
+86ea d 71 12
+FUNC 8700 17f 0 char* std::vector<char, google_breakpad::PageStdAllocator<char> >::_M_allocate_and_copy<char*>(unsigned long, char*, char*)
+8700 2 1106 42
+8702 2 169 42
+8704 12 1106 42
+8716 5 169 42
+871b 2 71 12
+871d 5 162 12
+8722 2 71 12
+8724 1e 74 12
+8742 2 75 12
+8744 2 76 12
+8746 3 75 12
+8749 8 77 12
+8751 5 76 12
+8756 a 245 41
+8760 a 120 45
+876a d 245 41
+8777 19 1121 42
+8790 c 86 12
+879c f 2936 15
+87ab 3 86 12
+87ae 5 2936 15
+87b3 3 115 12
+87b6 9 86 12
+87bf 5 2936 15
+87c4 5 115 12
+87c9 31 2936 15
+87fa e 89 12
+8808 6 120 12
+880e 5 124 12
+8813 8 93 12
+881b 3 124 12
+881e 4 125 12
+8822 5 93 12
+8827 3 125 12
+882a 5 93 12
+882f 5 126 12
+8834 8 93 12
+883c 5 94 12
+8841 5 93 12
+8846 14 94 12
+885a e 96 12
+8868 9 78 12
+8871 e 79 12
+FUNC 8880 3cd 0 std::vector<char, google_breakpad::PageStdAllocator<char> >::_M_fill_insert(__gnu_cxx::__normal_iterator<char*, std::vector<char, google_breakpad::PageStdAllocator<char> > >, unsigned long, char const&)
+8880 11 439 43
+8891 c 442 43
+889d 1b 444 43
+88b8 3 900 38
+88bb 4 447 43
+88bf 3 900 38
+88c2 9 450 43
+88cb 6 452 43
+88d1 f 245 41
+88e0 b 120 45
+88eb 12 245 41
+88fd 3 456 43
+8900 3 560 37
+8903 5 456 43
+8908 2 560 37
+890a b 561 37
+8915 b 697 37
+8920 9 86 12
+8929 9 2936 15
+8932 a 86 12
+893c 6 2936 15
+8942 3 86 12
+8945 5 2936 15
+894a 9 86 12
+8953 3 115 12
+8956 21 2936 15
+8977 c 120 12
+8983 9 124 12
+898c 4 93 12
+8990 4 124 12
+8994 3 93 12
+8997 3 124 12
+899a 4 125 12
+899e 5 93 12
+89a3 4 125 12
+89a7 4 126 12
+89ab 16 93 12
+89c1 5 94 12
+89c6 4 93 12
+89ca 15 94 12
+89df 5 96 12
+89e4 4 94 12
+89e8 4 96 12
+89ec 8 486 43
+89f4 c 439 43
+8a00 c 120 45
+8a0c 9 321 41
+8a15 5 491 43
+8a1a 16 245 41
+8a30 a 120 45
+8a3a d 245 41
+8a47 9 439 43
+8a50 5 498 43
+8a55 3 496 43
+8a58 10 245 41
+8a68 a 120 45
+8a72 d 245 41
+8a7f 6 439 43
+8a85 5 520 43
+8a8a 5 522 43
+8a8f 5 521 43
+8a94 5 522 43
+8a99 17 525 43
+8ab0 9 321 41
+8ab9 4 439 43
+8abd 3 444 43
+8ac0 8 120 45
+8ac8 e 321 41
+8ad6 3 468 43
+8ad9 3 245 41
+8adc 5 468 43
+8ae1 f 245 41
+8af0 b 120 45
+8afb 12 245 41
+8b0d 8 472 43
+8b15 4 525 43
+8b19 7 697 37
+8b20 a 525 43
+8b2a 6 697 37
+8b30 8 626 42
+8b38 f 1305 42
+8b47 a 1308 42
+8b51 5 1309 42
+8b56 3 900 38
+8b59 4 162 12
+8b5d 9 1309 42
+8b66 3 900 38
+8b69 4 162 12
+8b6d 5 900 38
+8b72 4 162 12
+8b76 28 74 12
+8b9e 3 75 12
+8ba1 2 76 12
+8ba3 3 75 12
+8ba6 4 77 12
+8baa e 76 12
+8bb8 3 900 38
+8bbb c 169 42
+8bc7 3 900 38
+8bca 3 169 42
+8bcd 5 900 38
+8bd2 6 169 42
+8bd8 4 162 12
+8bdc 2 71 12
+8bde 2 162 12
+8be0 5 71 12
+8be5 4 162 12
+8be9 f 71 12
+8bf8 10 2936 15
+8c08 8 89 12
+8c10 c 78 12
+8c1c d 79 12
+8c29 8 245 41
+8c31 8 444 43
+8c39 8 241 41
+8c41 c 1306 42
+FUNC 8c50 1a 0 google_breakpad::MinidumpFileWriter::MinidumpFileWriter()
+8c50 1a 55 24
+FUNC 8c70 87 0 google_breakpad::MinidumpFileWriter::Open(char const*)
+8c70 e 63 24
+8c7e 3 64 24
+8c81 3 63 24
+8c84 5 64 24
+8c89 2c 2822 15
+8cb5 2 66 24
+8cb7 21 72 24
+8cd8 1f 64 24
+FUNC 8d00 2c 0 google_breakpad::MinidumpFileWriter::SetFile(int)
+8d00 5 75 24
+8d05 2 76 24
+8d07 5 77 24
+8d0c 7 75 24
+8d13 1 74 24
+8d14 18 75 24
+FUNC 8d30 78 0 google_breakpad::MinidumpFileWriter::Close()
+8d30 16 80 24
+8d46 2 83 24
+8d48 5 81 24
+8d4d 5 83 24
+8d52 3 84 24
+8d55 2 85 24
+8d57 a 84 24
+8d61 20 2725 15
+8d81 6 92 24
+8d87 21 96 24
+FUNC 8db0 15 0 google_breakpad::MinidumpFileWriter::~MinidumpFileWriter()
+8db0 10 59 24
+8dc0 5 60 24
+FUNC 8dd0 d6 0 google_breakpad::MinidumpFileWriter::Allocate(unsigned long)
+8dd0 18 220 24
+8de8 5 221 24
+8ded 10 222 24
+8dfd 3 225 24
+8e00 4 223 24
+8e04 4 225 24
+8e08 4 223 24
+8e0c a 225 24
+8e16 5 241 24
+8e1b 1d 244 24
+8e38 7 227 24
+8e3f 3 234 24
+8e42 a 233 24
+8e4c a 234 24
+8e56 5 235 24
+8e5b 4 234 24
+8e5f 9 237 24
+8e68 1f 221 24
+8e87 1f 222 24
+FUNC 8eb0 fa 0 google_breakpad::MinidumpFileWriter::Copy(unsigned int, void const*, long)
+8eb0 9 246 24
+8eb9 9 247 24
+8ec2 f 248 24
+8ed1 8 249 24
+8ed9 c 252 24
+8ee5 2 267 24
+8ee7 9 268 24
+8ef0 14 2805 15
+8f04 5 257 24
+8f09 1b 2887 15
+8f24 c 258 24
+8f30 b 2805 15
+8f3b 12 2887 15
+8f4d 1f 249 24
+8f6c 1f 248 24
+8f8b 1f 247 24
+FUNC 8fb0 a8 0 google_breakpad::MinidumpFileWriter::CopyStringToMDString(wchar_t const*, unsigned int, google_breakpad::TypedMDRVA<MDString>*)
+8fb0 e 100 24
+8fbe 1a 110 24
+8fd8 3 116 24
+8fdb 4 117 24
+8fdf 6 122 24
+8fe5 8 284 24
+8fed 16 122 24
+9003 7 83 8
+900a 3 87 8
+900d 3 125 24
+9010 12 87 8
+9022 8 110 24
+902a c 111 24
+9036 7 112 24
+903d 2 113 24
+903f d 129 24
+904c 5 101 24
+9051 7 128 24
+FUNC 9060 aa 0 google_breakpad::MinidumpFileWriter::CopyStringToMDString(char const*, unsigned int, google_breakpad::TypedMDRVA<MDString>*)
+9060 e 133 24
+906e 1a 139 24
+9088 2 145 24
+908a 2 146 24
+908c 4 284 24
+9090 3 146 24
+9093 6 149 24
+9099 5 284 24
+909e 18 149 24
+90b6 8 83 8
+90be 3 87 8
+90c1 3 152 24
+90c4 12 87 8
+90d6 8 139 24
+90de d 140 24
+90eb 4 141 24
+90ef 2 142 24
+90f1 d 155 24
+90fe c 134 24
+FUNC 9110 41 0 google_breakpad::UntypedMDRVA::Allocate(unsigned long)
+9110 1 270 24
+9111 5 271 24
+9116 3 270 24
+9119 2 271 24
+911b 4 272 24
+911f 8 273 24
+9127 3 274 24
+912a 3 273 24
+912d 3 274 24
+9130 2 275 24
+9132 1f 271 24
+FUNC 9160 88 0 google_breakpad::UntypedMDRVA::Copy(unsigned int, void const*, unsigned long)
+9160 4 277 24
+9164 5 278 24
+9169 5 279 24
+916e 12 280 24
+9180 3 281 24
+9183 4 282 24
+9187 5 281 24
+918c 1e 278 24
+91aa 1f 280 24
+91c9 1f 279 24
+FUNC 91f0 c4 0 google_breakpad::MinidumpFileWriter::WriteMemory(void const*, unsigned long, MDMemoryDescriptor*)
+91f0 9 204 24
+91f9 9 205 24
+9202 8 206 24
+920a 7 161 9
+9211 6 209 24
+9217 d 161 9
+9224 9 209 24
+922d 4 218 24
+9231 2 210 24
+9233 d 218 24
+9240 14 186 9
+9254 4 211 24
+9258 5 176 9
+925d 3 214 24
+9260 3 176 9
+9263 7 215 24
+926a 4 218 24
+926e 5 217 24
+9273 3 218 24
+9276 1f 206 24
+9295 1f 205 24
+FUNC 92c0 5 0 google_breakpad::MinidumpFileWriter::WriteString(char const*, unsigned int, MDLocationDescriptor*)
+92c0 5 200 24
+FUNC 92d0 5 0 google_breakpad::MinidumpFileWriter::WriteString(wchar_t const*, unsigned int, MDLocationDescriptor*)
+92d0 5 195 24
+FUNC 92e0 22 0 google_breakpad::TypedMDRVA<MDString>::~TypedMDRVA()
+92e0 6 216 9
+92e6 1c 92 8
+FUNC 9310 1e8 0 bool google_breakpad::MinidumpFileWriter::WriteStringCore<char>(char const*, unsigned int, MDLocationDescriptor*)
+9310 f 158 24
+931f 9 161 24
+9328 c 162 24
+9334 d 167 24
+9341 9 168 24
+934a 8 161 9
+9352 5 212 9
+9357 9 161 9
+9360 11 212 9
+9371 4 161 9
+9375 5 68 8
+937a 8 67 8
+9382 5 68 8
+9387 4 173 24
+938b 4 177 24
+938f d 179 24
+939c 5 177 24
+93a1 5 179 24
+93a6 8 182 24
+93ae 2 174 24
+93b0 7 216 9
+93b7 18 92 8
+93cf 11 191 24
+93e0 10 158 24
+93f0 7 168 24
+93f7 11 161 9
+9408 17 212 9
+941f 4 161 9
+9423 3 173 24
+9426 1e 66 8
+9444 c 168 24
+9450 5 83 8
+9455 7 183 24
+945c 9 184 24
+9465 2 83 8
+9467 14 87 8
+947b 2 186 24
+947d 2 87 8
+947f 6 186 24
+9485 9 176 9
+948e 12 187 24
+94a0 15 190 24
+94b5 1f 162 24
+94d4 24 161 24
+FUNC 9500 1e8 0 bool google_breakpad::MinidumpFileWriter::WriteStringCore<wchar_t>(wchar_t const*, unsigned int, MDLocationDescriptor*)
+9500 f 158 24
+950f 9 161 24
+9518 f 162 24
+9527 2 168 24
+9529 a 167 24
+9533 8 168 24
+953b 8 161 9
+9543 5 212 9
+9548 9 161 9
+9551 11 212 9
+9562 4 161 9
+9566 5 68 8
+956b 8 67 8
+9573 5 68 8
+9578 4 173 24
+957c 4 177 24
+9580 d 179 24
+958d 5 177 24
+9592 5 179 24
+9597 8 182 24
+959f 2 174 24
+95a1 7 216 9
+95a8 18 92 8
+95c0 10 191 24
+95d0 10 158 24
+95e0 7 168 24
+95e7 11 161 9
+95f8 17 212 9
+960f 4 161 9
+9613 3 173 24
+9616 1e 66 8
+9634 c 168 24
+9640 5 83 8
+9645 7 183 24
+964c 9 184 24
+9655 2 83 8
+9657 14 87 8
+966b 2 186 24
+966d 2 87 8
+966f 6 186 24
+9675 9 176 9
+967e 12 187 24
+9690 15 190 24
+96a5 1f 162 24
+96c4 24 161 24
+FUNC 96f0 78 0 google_breakpad::UTF8ToUTF16Char(char const*, int, unsigned short*)
+96f0 2 58 32
+96f2 6 78 32
+96f8 2 58 32
+96fa 4 62 32
+96fe 5 58 32
+9703 4 60 32
+9707 4 58 32
+970b b 63 32
+9716 4 59 32
+971a 6 61 32
+9720 16 69 32
+9736 4 71 32
+973a 4 76 32
+973e 4 75 32
+9742 5 78 32
+9747 4 83 32
+974b 2 82 32
+974d b 83 32
+9758 3 72 32
+975b 5 83 32
+9760 2 72 32
+9762 6 83 32
+FUNC 9770 56 0 google_breakpad::UTF32ToUTF16Char(wchar_t, unsigned short*)
+9770 4 102 32
+9774 3 110 32
+9777 4 106 32
+977b 4 102 32
+977f b 107 32
+978a 5 103 32
+978f 4 102 32
+9793 a 110 32
+979d 5 105 32
+97a2 5 103 32
+97a7 5 104 32
+97ac 5 110 32
+97b1 4 112 32
+97b5 b 113 32
+97c0 6 115 32
+FUNC 97d0 147 0 google_breakpad::UTF16ToUTF8(std::vector<unsigned short, std::allocator<unsigned short> > const&, bool)
+97d0 12 121 32
+97e2 3 155 32
+97e5 2 126 32
+97e7 4 626 42
+97eb 5 122 32
+97f0 9 126 32
+97f9 2 71 14
+97fb 6 626 42
+9801 8 139 32
+9809 4 138 32
+980d 8 140 32
+9815 4 142 32
+9819 10 145 32
+9829 3 140 32
+982c 5 141 32
+9831 5 145 32
+9836 2 147 32
+9838 5 149 32
+983d 2 147 32
+983f b 149 32
+984a d 164 14
+9857 8 75 14
+985f 11 153 32
+9870 18 152 32
+9888 3 626 42
+988b 9 128 32
+9894 3 81 14
+9897 3 128 32
+989a 2 81 14
+989c 7 82 14
+98a3 c 155 32
+98af 11 130 32
+98c0 7 132 32
+98c7 f 118 32
+98d6 5 130 32
+98db 5 134 32
+98e0 3 155 32
+98e3 b 134 32
+98ee 2 71 14
+98f0 10 75 14
+9900 17 164 14
+FUNC 9920 e3 0 google_breakpad::UTF8ToUTF16(char const*, std::vector<unsigned short, std::allocator<unsigned short> >*)
+9920 c 41 32
+992c 5 42 32
+9931 3 1097 42
+9934 b 1004 42
+993f 5 43 32
+9944 7 47 32
+994b 3 44 32
+994e 4 1320 42
+9952 5 1004 42
+9957 3 155 32
+995a 4 707 42
+995e b 52 32
+9969 3 707 42
+996c 5 48 32
+9971 3 707 42
+9974 4 49 32
+9978 a 52 32
+9982 2 55 32
+9984 3 155 32
+9987 2 55 32
+9989 5 55 32
+998e b 155 32
+9999 3 55 32
+999c 3 626 42
+999f 3 55 32
+99a2 6 626 42
+99a8 4 55 32
+99ac 3 686 42
+99af 3 626 42
+99b2 2 686 42
+99b4 5 688 42
+99b9 8 689 42
+99c1 f 56 32
+99d0 3 687 42
+99d3 d 1004 42
+99e0 10 56 32
+99f0 4 626 42
+99f4 2 55 32
+99f6 6 626 42
+99fc 7 688 42
+FUNC 9a10 e3 0 google_breakpad::UTF32ToUTF16(wchar_t const*, std::vector<unsigned short, std::allocator<unsigned short> >*)
+9a10 c 85 32
+9a1c 5 86 32
+9a21 3 1097 42
+9a24 b 1004 42
+9a2f 5 87 32
+9a34 7 91 32
+9a3b 5 88 32
+9a40 4 1320 42
+9a44 5 1004 42
+9a49 3 155 32
+9a4c 4 707 42
+9a50 b 96 32
+9a5b 3 707 42
+9a5e 5 92 32
+9a63 3 707 42
+9a66 4 93 32
+9a6a a 96 32
+9a74 2 99 32
+9a76 3 155 32
+9a79 2 99 32
+9a7b 5 99 32
+9a80 b 155 32
+9a8b 3 99 32
+9a8e 3 626 42
+9a91 3 99 32
+9a94 6 626 42
+9a9a 4 99 32
+9a9e 3 686 42
+9aa1 3 626 42
+9aa4 2 686 42
+9aa6 5 688 42
+9aab 8 689 42
+9ab3 d 100 32
+9ac0 3 687 42
+9ac3 d 1004 42
+9ad0 10 100 32
+9ae0 4 626 42
+9ae4 2 99 32
+9ae6 6 626 42
+9aec 7 688 42
+FUNC 9b00 295 0 std::vector<unsigned short, std::allocator<unsigned short> >::_M_fill_insert(__gnu_cxx::__normal_iterator<unsigned short*, std::vector<unsigned short, std::allocator<unsigned short> > >, unsigned long, unsigned short const&)
+9b00 25 439 43
+9b25 9 442 43
+9b2e 1d 444 43
+9b4b 3 900 38
+9b4e 3 447 43
+9b51 6 900 38
+9b57 9 450 43
+9b60 3 464 43
+9b63 d 743 37
+9b70 3 745 37
+9b73 a 743 37
+9b7d 8 468 43
+9b85 3 365 37
+9b88 4 468 43
+9b8c 6 365 37
+9b92 3 472 43
+9b95 3 686 37
+9b98 4 472 43
+9b9c c 686 37
+9ba8 7 687 37
+9baf 5 686 37
+9bb4 2c 525 43
+9be0 3 155 32
+9be3 d 1305 42
+9bf0 6 626 42
+9bf6 c 1305 42
+9c02 6 1308 42
+9c08 3 900 38
+9c0b 4 1308 42
+9c0f 3 900 38
+9c12 3 480 43
+9c15 9 1309 42
+9c1e 7 480 43
+9c25 19 94 45
+9c3e 5 486 43
+9c43 d 155 32
+9c50 4 745 37
+9c54 a 743 37
+9c5e 3 364 37
+9c61 3 365 37
+9c64 3 364 37
+9c67 5 365 37
+9c6c f 366 37
+9c7b 4 364 37
+9c7f 3 367 37
+9c82 4 496 43
+9c86 3 365 37
+9c89 3 364 37
+9c8c 5 365 37
+9c91 12 366 37
+9ca3 4 517 43
+9ca7 3 367 37
+9caa 5 174 42
+9caf 5 100 45
+9cb4 3 522 43
+9cb7 4 520 43
+9cbb 4 521 43
+9cbf 11 522 43
+9cd0 20 366 37
+9cf0 3 452 43
+9cf3 3 364 37
+9cf6 3 444 43
+9cf9 3 365 37
+9cfc 3 364 37
+9cff 5 365 37
+9d04 12 366 37
+9d16 3 559 37
+9d19 3 456 43
+9d1c 3 559 37
+9d1f 4 456 43
+9d23 5 560 37
+9d28 12 561 37
+9d3a 3 459 43
+9d3d 13 686 37
+9d50 7 687 37
+9d57 11 686 37
+9d68 9 1309 42
+9d71 e 169 42
+9d7f 16 1306 42
+FUNC 9da0 73 0 CreateGUID(MDGUID*)
+9da0 1 87 28
+9da1 7 75 28
+9da8 3 87 28
+9dab c 75 28
+9db7 7 65 28
+9dbe 9 66 28
+9dc7 9 67 28
+9dd0 7 68 28
+9dd7 3 57 28
+9dda 6 58 28
+9de0 2 59 28
+9de2 3 60 28
+9de5 3 59 28
+9de8 3 60 28
+9deb 3 59 28
+9dee 7 69 28
+9df5 3 57 28
+9df8 6 58 28
+9dfe 2 59 28
+9e00 3 60 28
+9e03 3 59 28
+9e06 3 60 28
+9e09 3 59 28
+9e0c 7 89 28
+FUNC 9e20 ad 0 GUIDToString(MDGUID const*, char*, int)
+9e20 5 92 28
+9e25 9 94 28
+9e2e b 53 28
+9e39 3 98 28
+9e3c 4 53 28
+9e40 a 98 28
+9e4a 13 53 28
+9e5d 4 98 28
+9e61 1a 53 28
+9e7b 7 98 28
+9e82 5 53 28
+9e87 f 98 28
+9e96 2 100 28
+9e98 5 99 28
+9e9d 4 102 28
+9ea1 5 103 28
+9ea6 8 104 28
+9eae 1f 94 28
+FUNC 9ed0 16 0 GUIDGenerator::InitOnceImpl()
+9ed0 4 78 28
+9ed4 7 79 28
+9edb 4 80 28
+9edf 7 79 28
+FUNC 9ef0 1e 0 my_strlen
+9ef0 10 42 29
+9f00 c 42 29
+9f0c 2 44 29
+FUNC 9f10 33 0 my_strcmp
+9f10 8 46 29
+9f18 2 50 29
+9f1a 4 52 29
+9f1e 4 54 29
+9f22 4 55 29
+9f26 7 48 29
+9f2d b 49 29
+9f38 8 51 29
+9f40 2 53 29
+9f42 1 57 29
+FUNC 9f50 56 0 my_strncmp
+9f50 5 60 29
+9f55 7 61 29
+9f5c 2 63 29
+9f5e 12 65 29
+9f70 9 61 29
+9f79 2 63 29
+9f7b 4 65 29
+9f7f 9 60 29
+9f88 2 71 29
+9f8a 6 72 29
+9f90 10 62 29
+9fa0 6 64 29
+FUNC 9fb0 54 0 my_strtoui
+9fb0 3 79 29
+9fb3 2 80 29
+9fb5 4 79 29
+9fb9 8 87 29
+9fc1 f 89 29
+9fd0 7 86 29
+9fd7 8 87 29
+9fdf 5 89 29
+9fe4 4 90 29
+9fe8 2 89 29
+9fea 4 82 29
+9fee 7 83 29
+9ff5 2 94 29
+9ff7 9 95 29
+a000 2 80 29
+a002 2 96 29
+FUNC a010 36 0 my_uint_len
+a010 3 100 29
+a013 3 99 29
+a016 5 101 29
+a01b 4 100 29
+a01f 14 106 29
+a033 3 105 29
+a036 7 106 29
+a03d 5 104 29
+a042 2 109 29
+a044 2 110 29
+FUNC a050 43 0 my_uitos
+a050 5 119 29
+a055 a 120 29
+a05f 9 119 29
+a068 1d 120 29
+a085 3 119 29
+a088 4 120 29
+a08c 7 119 29
+FUNC a0a0 42 0 my_strchr
+a0a0 3 124 29
+a0a3 3 123 29
+a0a6 4 124 29
+a0aa 16 128 29
+a0c0 8 124 29
+a0c8 4 125 29
+a0cc 7 124 29
+a0d3 f 124 29
+FUNC a0f0 26 0 my_strrchr
+a0f0 10 133 29
+a100 7 134 29
+a107 4 136 29
+a10b 9 133 29
+a114 2 139 29
+FUNC a120 32 0 my_memchr
+a120 3 143 29
+a123 5 144 29
+a128 17 145 29
+a13f 9 144 29
+a148 8 148 29
+a150 2 149 29
+FUNC a160 64 0 my_read_hex_ptr
+a160 3 155 29
+a163 d 156 29
+a170 3 161 29
+a173 4 160 29
+a177 6 161 29
+a17d 4 158 29
+a181 b 159 29
+a18c 8 162 29
+a194 3 164 29
+a197 4 163 29
+a19b d 164 29
+a1a8 8 165 29
+a1b0 3 167 29
+a1b3 4 166 29
+a1b7 9 167 29
+a1c0 3 173 29
+a1c3 1 175 29
+FUNC a1d0 3a 0 my_read_decimal_ptr
+a1d0 3 181 29
+a1d3 3 177 29
+a1d6 12 181 29
+a1e8 3 183 29
+a1eb 4 182 29
+a1ef 4 180 29
+a1f3 7 183 29
+a1fa c 181 29
+a206 3 188 29
+a209 1 190 29
+FUNC a210 1e 0 my_memset
+a210 3 194 29
+a213 4 192 29
+a217 9 194 29
+a220 7 195 29
+a227 7 194 29
+FUNC a230 38 0 my_strlcpy
+a230 10 202 29
+a240 9 203 29
+a249 7 204 29
+a250 4 207 29
+a254 8 202 29
+a25c 5 209 29
+a261 5 210 29
+a266 2 213 29
+FUNC a270 3e 0 my_strlcat
+a270 1 215 29
+a271 2 216 29
+a273 d 218 29
+a280 4 219 29
+a284 5 218 29
+a289 7 225 29
+a290 6 218 29
+a296 5 221 29
+a29b e 224 29
+a2a9 5 225 29
+FUNC a2b0 4e 0 my_isspace
+a2b0 a 229 29
+a2ba a 227 29
+a2c4 a 229 29
+a2ce 19 227 29
+a2e7 4 231 29
+a2eb 5 230 29
+a2f0 2 234 29
+a2f2 6 235 29
+a2f8 6 232 29
+FUNC a300 1aa 0 google_breakpad::CrashGenerationClient::RequestDump(void const*, unsigned long)
+a300 5 46 16
+a305 a 2909 15
+a30f 5 46 16
+a314 3 2909 15
+a317 5 46 16
+a31c 2 2909 15
+a31e 9 46 16
+a327 1e 2909 15
+a345 c 52 16
+a351 5 60 16
+a356 8 52 16
+a35e 5 57 16
+a363 a 60 16
+a36d 5 54 16
+a372 5 55 16
+a377 5 57 16
+a37c 9 58 16
+a385 6 2899 15
+a38b 5 60 16
+a390 4 69 16
+a394 8 61 16
+a39c 3 2899 15
+a39f c 62 16
+a3ab 8 65 16
+a3b3 8 66 16
+a3bb 9 67 16
+a3c4 4 69 16
+a3c8 19 2899 15
+a3e1 9 2899 15
+a3ea 5 71 16
+a3ef 5 71 16
+a3f4 24 2725 15
+a418 9 73 16
+a421 7 2838 15
+a428 14 2838 15
+a43c 7 81 16
+a443 5 80 16
+a448 10 81 16
+a458 5 71 16
+a45d 13 45 16
+a470 10 2838 15
+a480 3 78 16
+a483 2 2838 15
+a485 13 78 16
+a498 7 81 16
+a49f 2 74 16
+a4a1 9 81 16
+FUNC a4b0 1c 0 google_breakpad::CrashGenerationClient::TryCreate(int)
+a4b0 2 87 16
+a4b2 1 86 16
+a4b3 2 86 16
+a4b5 2 87 16
+a4b7 a 89 16
+a4c1 2 56 1
+a4c3 5 90 16
+a4c8 2 88 16
+a4ca 2 90 16
+FUNC a4d0 67 0 google_breakpad::LinuxDumper::~LinuxDumper()
+a4d0 8 85 21
+a4d8 6 2812 15
+a4de 6 85 21
+a4e4 e 85 21
+a4f2 4 338 21
+a4f6 a 134 12
+a500 4 136 12
+a504 3 135 12
+a507 3 2812 15
+a50a 4 136 12
+a50e 16 2812 15
+a524 8 134 12
+a52c b 86 21
+FUNC a540 12 0 google_breakpad::LinuxDumper::~LinuxDumper()
+a540 1 85 21
+a541 3 85 21
+a544 e 86 21
+FUNC a560 105 0 google_breakpad::LinuxDumper::ReadAuxv()
+a560 2 139 21
+a562 7 141 21
+a569 c 139 21
+a575 15 141 21
+a58a 2 147 21
+a58c 14 163 21
+a5a0 28 2822 15
+a5c8 4 146 21
+a5cc 8 154 21
+a5d4 2 146 21
+a5d6 a 2838 15
+a5e0 10 2838 15
+a5f0 6 152 21
+a5f6 1b 2725 15
+a611 f 163 21
+a620 a 152 21
+a62a 6 156 21
+a630 d 157 21
+a63d 5 158 21
+a642 e 157 21
+a650 15 2838 15
+FUNC a670 32 0 google_breakpad::LinuxDumper::Init()
+a670 1 88 21
+a671 3 88 21
+a674 9 89 21
+a67d b 90 21
+a688 d 89 21
+a695 6 89 21
+a69b 1 90 21
+a69c 6 89 21
+FUNC a6b0 4c 0 google_breakpad::LinuxDumper::FindMapping(void const*) const
+a6b0 4 338 21
+a6b4 b 626 42
+a6bf 11 292 21
+a6d0 7 293 21
+a6d7 5 294 21
+a6dc 14 294 21
+a6f0 9 292 21
+a6f9 2 298 21
+a6fb 1 299 21
+FUNC a700 94 0 google_breakpad::LinuxDumper::GetStackInfo(void const**, unsigned long*, unsigned long)
+a700 23 265 21
+a723 6 265 21
+a729 8 267 21
+a731 3 275 21
+a734 6 270 21
+a73a 8 275 21
+a742 5 276 21
+a747 6 279 21
+a74d 4 281 21
+a751 5 283 21
+a756 3 281 21
+a759 a 283 21
+a763 5 285 21
+a768 4 283 21
+a76c 4 284 21
+a770 20 286 21
+a790 4 277 21
+FUNC a7a0 1fd 0 google_breakpad::LinuxDumper::HandleDeletedFileInMapping(char*) const
+a7a0 17 301 21
+a7b7 3 306 21
+a7ba 7 301 21
+a7c1 3 301 21
+a7c4 5 306 21
+a7c9 6 307 21
+a7cf 2 308 21
+a7d1 2f 336 21
+a800 5 309 21
+a805 11 310 21
+a816 4 309 21
+a81a 23 317 21
+a83d 8 319 21
+a845 10 60 11
+a855 8 319 21
+a85d 13 321 21
+a870 5 2878 15
+a875 3 327 21
+a878 1d 2878 15
+a895 5a 334 21
+a8ef a 335 21
+a8f9 4 327 21
+a8fd 8 328 21
+a905 20 2878 15
+a925 8 327 21
+a92d 12 327 21
+a93f 18 327 21
+a957 46 334 21
+FUNC a9a0 35d 0 google_breakpad::LinuxDumper::ElfFileIdentifierForMapping(google_breakpad::MappingInfo const&, bool, unsigned int, unsigned char*)
+a9a0 2b 96 21
+a9cb 2 97 21
+a9cd 9 96 21
+a9d6 2 97 21
+a9d8 8 626 42
+a9e0 3 97 21
+a9e3 4 626 42
+a9e7 9 97 21
+a9f0 a 98 21
+a9fa 4 64 21
+a9fe 5 98 21
+aa03 14 64 21
+aa17 2 100 21
+aa19 4 99 21
+aa1d 43 137 21
+aa60 1c 103 21
+aa7c 4 105 21
+aa80 20 2763 15
+aaa0 9 105 21
+aaa9 3 106 21
+aaac 14 113 21
+aac0 c 117 21
+aacc 6 118 21
+aad2 3 117 21
+aad5 b 118 21
+aae0 14 121 21
+aaf4 8 123 21
+aafc 6 122 21
+ab02 5 123 21
+ab07 a 125 21
+ab11 3 123 21
+ab14 5 125 21
+ab19 5 338 21
+ab1e a 126 21
+ab28 8 130 21
+ab30 2 131 21
+ab32 2 130 21
+ab34 2 131 21
+ab36 5 131 21
+ab3b 5 131 21
+ab40 10 133 21
+ab50 20 136 21
+ab70 4 108 21
+ab74 3 71 12
+ab77 3 108 21
+ab7a 6 71 12
+ab80 1c 74 12
+ab9c c 86 12
+aba8 f 2936 15
+abb7 3 86 12
+abba 5 2936 15
+abbf 9 86 12
+abc8 3 115 12
+abcb 33 2936 15
+abfe e 89 12
+ac0c 1c 111 21
+ac28 3 75 12
+ac2b 2 76 12
+ac2d 3 75 12
+ac30 4 77 12
+ac34 5 76 12
+ac39 6 120 12
+ac3f 4 124 12
+ac43 7 93 12
+ac4a 3 124 12
+ac4d 4 125 12
+ac51 5 93 12
+ac56 3 125 12
+ac59 5 93 12
+ac5e 4 126 12
+ac62 8 93 12
+ac6a 5 94 12
+ac6f 3 93 12
+ac72 13 94 12
+ac85 9 96 12
+ac8e 7 78 12
+ac95 d 79 12
+aca2 8 72 12
+acaa 1f 97 21
+acc9 1f 118 21
+ace8 15 136 21
+FUNC ad00 1a9 0 google_breakpad::LinuxDumper::LinuxDumper(int)
+ad00 17 72 21
+ad17 4 79 21
+ad1b 9 72 21
+ad24 23 79 21
+ad47 5 60 12
+ad4c 4 190 12
+ad50 1a 63 12
+ad6a 5 190 12
+ad6f 4 153 12
+ad73 18 92 42
+ad8b 5 190 12
+ad90 4 190 12
+ad94 4 153 12
+ad98 18 92 42
+adb0 a 190 12
+adba 7 190 12
+adc1 7 153 12
+adc8 21 92 42
+ade9 d 190 12
+adf6 17 338 21
+ae0d a 626 42
+ae17 6 686 42
+ae1d 6 688 42
+ae23 e 689 42
+ae31 1f 83 21
+ae50 5 687 42
+ae55 8 1004 42
+ae5d 3 687 42
+ae60 7 1004 42
+ae67 7 338 21
+ae6e 6 2812 15
+ae74 5 134 12
+ae79 3 136 12
+ae7c 3 135 12
+ae7f 3 2812 15
+ae82 4 136 12
+ae86 16 2812 15
+ae9c d 72 21
+FUNC aeb0 7b2 0 google_breakpad::LinuxDumper::EnumerateMappings()
+aeb0 2 165 21
+aeb2 7 167 21
+aeb9 12 165 21
+aecb 18 167 21
+aee3 2 186 21
+aee5 12 259 21
+aef7 7 338 21
+aefe 8 2822 15
+af06 7 178 21
+af0d 4 182 21
+af11 5 178 21
+af16 5 182 21
+af1b 1d 2822 15
+af38 2 185 21
+af3a 4 2822 15
+af3e 2 185 21
+af40 4 74 12
+af44 4 187 21
+af48 4 74 12
+af4c 5 187 21
+af51 1d 74 12
+af6e 2 75 12
+af70 5 76 12
+af75 3 75 12
+af78 8 77 12
+af80 4 76 12
+af84 3 82 12
+af87 9 49 4
+af90 2 191 21
+af92 16 49 4
+afa8 f 66 4
+afb7 5 99 4
+afbc 3 2838 15
+afbf 5 98 4
+afc4 3 99 4
+afc7 10 2838 15
+afd7 6 100 4
+afdd a 102 4
+afe7 5 103 4
+afec 4 66 4
+aff0 15 70 4
+b005 13 165 21
+b018 10 70 4
+b028 7 69 4
+b02f 16 78 4
+b045 20 2725 15
+b065 21 258 21
+b086 3 71 4
+b089 4 73 4
+b08d 6 71 4
+b093 d 194 21
+b0a0 5 195 21
+b0a5 e 116 4
+b0b3 2 117 4
+b0b5 8 118 4
+b0bd 7 117 4
+b0c4 14 118 4
+b0d8 18 105 4
+b0f0 e 196 21
+b0fe 5 197 21
+b103 e 198 21
+b111 5 199 21
+b116 1b 203 21
+b131 9 338 21
+b13a 6 211 21
+b140 4 212 21
+b144 12 213 21
+b156 28 74 12
+b17e 2 75 12
+b180 5 76 12
+b185 2 77 12
+b187 3 76 12
+b18a 4 82 12
+b18e 6 77 12
+b194 7 222 21
+b19b 8 221 21
+b1a3 5 222 21
+b1a8 5 223 21
+b1ad 5 224 21
+b1b2 8 223 21
+b1ba 3 224 21
+b1bd 6 226 21
+b1c3 4 224 21
+b1c7 5 225 21
+b1cc 3 223 21
+b1cf 4 225 21
+b1d3 2 226 21
+b1d5 a 227 21
+b1df b 228 21
+b1ea c 236 21
+b1f6 16 236 21
+b20c 4 236 21
+b210 5 338 21
+b215 5 236 21
+b21a 4 338 21
+b21e 6 236 21
+b224 4 338 21
+b228 9 236 21
+b231 3 626 42
+b234 11 243 21
+b245 7 626 42
+b24c 8 243 21
+b254 9 686 42
+b25d 2 688 42
+b25f 5 1320 42
+b264 4 689 42
+b268 b 1320 42
+b273 20 244 21
+b293 d 245 21
+b2a0 13 244 21
+b2b3 15 246 21
+b2c8 4 86 12
+b2cc 2 2936 15
+b2ce 7 86 12
+b2d5 c 2936 15
+b2e1 3 86 12
+b2e4 5 2936 15
+b2e9 3 86 12
+b2ec 3 115 12
+b2ef 24 2936 15
+b313 d 89 12
+b320 17 70 4
+b337 e 2838 15
+b345 6 120 12
+b34b 4 93 12
+b34f 4 124 12
+b353 3 93 12
+b356 4 125 12
+b35a 5 93 12
+b35f 4 124 12
+b363 7 93 12
+b36a 4 126 12
+b36e 8 93 12
+b376 5 94 12
+b37b 4 93 12
+b37f 10 94 12
+b38f 9 96 12
+b398 8 78 12
+b3a0 8 79 12
+b3a8 8 82 12
+b3b0 b 86 4
+b3bb 8 87 4
+b3c3 4 92 4
+b3c7 3 90 4
+b3ca 4 93 4
+b3ce 6 90 4
+b3d4 17 92 4
+b3eb f 883 42
+b3fa 1d 120 45
+b417 1a 887 42
+b431 4 86 12
+b435 2 2936 15
+b437 7 86 12
+b43e c 2936 15
+b44a 3 86 12
+b44d 5 2936 15
+b452 9 86 12
+b45b 3 115 12
+b45e 2e 2936 15
+b48c c 89 12
+b498 23 214 21
+b4bb 9 213 21
+b4c4 1a 215 21
+b4de d 213 21
+b4eb c 216 21
+b4f7 a 116 4
+b501 2 117 4
+b503 8 118 4
+b50b 6 117 4
+b511 c 118 4
+b51d c 203 21
+b529 10 203 21
+b539 7 206 21
+b540 9 207 21
+b549 a 206 21
+b553 1d 229 21
+b570 7 120 45
+b577 5 248 21
+b57c 8 893 42
+b584 4 248 21
+b588 a 893 42
+b592 2b 1004 42
+b5bd 1f 87 4
+b5dc 7 78 12
+b5e3 d 79 12
+b5f0 c 120 12
+b5fc a 124 12
+b606 4 93 12
+b60a 4 124 12
+b60e 3 93 12
+b611 3 124 12
+b614 4 125 12
+b618 5 93 12
+b61d 4 125 12
+b621 7 93 12
+b628 4 126 12
+b62c 8 93 12
+b634 5 94 12
+b639 3 93 12
+b63c 14 94 12
+b650 5 96 12
+b655 4 94 12
+b659 9 96 12
+FUNC b670 221 0 std::vector<int, google_breakpad::PageStdAllocator<int> >::reserve(unsigned long)
+b670 a 69 43
+b67a 25 66 43
+b69f 9 69 43
+b6a8 4 338 21
+b6ac e 707 42
+b6ba 5 71 43
+b6bf 29 86 43
+b6e8 4 338 21
+b6ec 2 169 42
+b6ee 5 338 21
+b6f3 7 626 42
+b6fa 3 169 42
+b6fd 5 626 42
+b702 2 169 42
+b704 a 162 12
+b70e 4 71 12
+b712 18 74 12
+b72a 2 75 12
+b72c 2 76 12
+b72e 3 75 12
+b731 8 77 12
+b739 4 76 12
+b73d 1b 245 41
+b758 9 120 45
+b761 12 245 41
+b773 5 83 43
+b778 5 82 43
+b77d 9 83 43
+b786 12 84 43
+b798 e 86 12
+b7a6 e 2936 15
+b7b4 3 86 12
+b7b7 5 2936 15
+b7bc 9 86 12
+b7c5 3 115 12
+b7c8 2d 2936 15
+b7f5 b 89 12
+b800 8 120 12
+b808 9 124 12
+b811 4 125 12
+b815 5 93 12
+b81a 3 124 12
+b81d 3 125 12
+b820 3 93 12
+b823 4 126 12
+b827 16 93 12
+b83d 5 94 12
+b842 4 93 12
+b846 11 94 12
+b857 5 96 12
+b85c 4 94 12
+b860 10 96 12
+b870 8 78 12
+b878 d 79 12
+b885 c 70 43
+FUNC b8a0 229 0 std::vector<google_breakpad::MappingInfo*, google_breakpad::PageStdAllocator<google_breakpad::MappingInfo*> >::reserve(unsigned long)
+b8a0 a 69 43
+b8aa 25 66 43
+b8cf 9 69 43
+b8d8 4 338 21
+b8dc e 707 42
+b8ea 5 71 43
+b8ef 29 86 43
+b918 4 338 21
+b91c 2 169 42
+b91e 5 338 21
+b923 7 626 42
+b92a 3 169 42
+b92d 5 626 42
+b932 2 169 42
+b934 a 162 12
+b93e 4 71 12
+b942 1c 74 12
+b95e 2 75 12
+b960 2 76 12
+b962 3 75 12
+b965 8 77 12
+b96d 4 76 12
+b971 17 245 41
+b988 b 120 45
+b993 12 245 41
+b9a5 5 83 43
+b9aa 5 82 43
+b9af 9 83 43
+b9b8 18 84 43
+b9d0 e 86 12
+b9de e 2936 15
+b9ec 3 86 12
+b9ef 5 2936 15
+b9f4 9 86 12
+b9fd 3 115 12
+ba00 2d 2936 15
+ba2d b 89 12
+ba38 8 120 12
+ba40 9 124 12
+ba49 4 125 12
+ba4d 5 93 12
+ba52 3 124 12
+ba55 3 125 12
+ba58 3 93 12
+ba5b 4 126 12
+ba5f 16 93 12
+ba75 5 94 12
+ba7a 4 93 12
+ba7e 11 94 12
+ba8f 5 96 12
+ba94 4 94 12
+ba98 10 96 12
+baa8 8 78 12
+bab0 d 79 12
+babd c 70 43
+FUNC bad0 229 0 std::vector<unsigned long, google_breakpad::PageStdAllocator<unsigned long> >::reserve(unsigned long)
+bad0 a 69 43
+bada 25 66 43
+baff 9 69 43
+bb08 4 338 21
+bb0c e 707 42
+bb1a 5 71 43
+bb1f 29 86 43
+bb48 4 338 21
+bb4c 2 169 42
+bb4e 5 338 21
+bb53 7 626 42
+bb5a 3 169 42
+bb5d 5 626 42
+bb62 2 169 42
+bb64 a 162 12
+bb6e 4 71 12
+bb72 1c 74 12
+bb8e 2 75 12
+bb90 2 76 12
+bb92 3 75 12
+bb95 8 77 12
+bb9d 4 76 12
+bba1 17 245 41
+bbb8 b 120 45
+bbc3 12 245 41
+bbd5 5 83 43
+bbda 5 82 43
+bbdf 9 83 43
+bbe8 18 84 43
+bc00 e 86 12
+bc0e e 2936 15
+bc1c 3 86 12
+bc1f 5 2936 15
+bc24 9 86 12
+bc2d 3 115 12
+bc30 2d 2936 15
+bc5d b 89 12
+bc68 8 120 12
+bc70 9 124 12
+bc79 4 125 12
+bc7d 5 93 12
+bc82 3 124 12
+bc85 3 125 12
+bc88 3 93 12
+bc8b 4 126 12
+bc8f 16 93 12
+bca5 5 94 12
+bcaa 4 93 12
+bcae 11 94 12
+bcbf 5 96 12
+bcc4 4 94 12
+bcc8 10 96 12
+bcd8 8 78 12
+bce0 d 79 12
+bced c 70 43
+FUNC bd00 320 0 std::vector<google_breakpad::MappingInfo*, google_breakpad::PageStdAllocator<google_breakpad::MappingInfo*> >::_M_insert_aux(__gnu_cxx::__normal_iterator<google_breakpad::MappingInfo**, std::vector<google_breakpad::MappingInfo*, google_breakpad::PageStdAllocator<google_breakpad::MappingInfo*> > >, google_breakpad::MappingInfo* const&)
+bd00 28 316 43
+bd28 8 320 43
+bd30 3 316 43
+bd33 2 320 43
+bd35 10 120 45
+bd45 4 329 43
+bd49 4 325 43
+bd4d 3 559 37
+bd50 4 325 43
+bd54 3 327 43
+bd57 4 559 37
+bd5b 5 560 37
+bd60 f 561 37
+bd6f 4 333 43
+bd73 2d 391 43
+bda0 8 120 45
+bda8 b 626 42
+bdb3 9 215 37
+bdbc 4 1308 42
+bdc0 9 1309 42
+bdc9 3 900 38
+bdcc c 162 12
+bdd8 3 900 38
+bddb 4 162 12
+bddf 8 342 43
+bde7 20 74 12
+be07 2 75 12
+be09 2 76 12
+be0b 3 75 12
+be0e 8 77 12
+be16 8 76 12
+be1e 8 351 43
+be26 b 120 45
+be31 4 360 43
+be35 b 245 41
+be40 b 120 45
+be4b d 245 41
+be58 13 316 43
+be6b 4 367 43
+be6f 11 245 41
+be80 b 120 45
+be8b d 245 41
+be98 10 316 43
+bea8 4 387 43
+beac 5 389 43
+beb1 4 388 43
+beb5 b 389 43
+bec0 3 900 38
+bec3 c 162 12
+becf 3 900 38
+bed2 5 162 12
+bed7 11 342 43
+bee8 7 86 12
+beef 2 2936 15
+bef1 7 86 12
+bef8 d 2936 15
+bf05 3 86 12
+bf08 5 2936 15
+bf0d 9 86 12
+bf16 3 115 12
+bf19 2d 2936 15
+bf46 a 89 12
+bf50 8 120 12
+bf58 9 124 12
+bf61 4 125 12
+bf65 8 93 12
+bf6d 3 124 12
+bf70 3 125 12
+bf73 4 126 12
+bf77 16 93 12
+bf8d 5 94 12
+bf92 4 93 12
+bf96 15 94 12
+bfab e 96 12
+bfb9 8 78 12
+bfc1 d 79 12
+bfce 13 1309 42
+bfe1 7 900 38
+bfe8 6 169 42
+bfee 8 900 38
+bff6 2 169 42
+bff8 4 342 43
+bffc 3 169 42
+bfff 4 342 43
+c003 6 169 42
+c009 a 162 12
+c013 d 71 12
+FUNC c020 460 0 std::vector<unsigned long, google_breakpad::PageStdAllocator<unsigned long> >::_M_fill_insert(__gnu_cxx::__normal_iterator<unsigned long*, std::vector<unsigned long, google_breakpad::PageStdAllocator<unsigned long> > >, unsigned long, unsigned long const&)
+c020 11 439 43
+c031 c 442 43
+c03d 1f 444 43
+c05c 3 900 38
+c05f 3 447 43
+c062 7 900 38
+c069 5 450 43
+c06e 7 452 43
+c075 3 245 41
+c078 3 452 43
+c07b d 245 41
+c088 b 120 45
+c093 d 245 41
+c0a0 3 559 37
+c0a3 4 456 43
+c0a7 7 559 37
+c0ae 5 456 43
+c0b3 9 560 37
+c0bc 3 459 43
+c0bf 9 686 37
+c0c8 7 687 37
+c0cf 5 686 37
+c0d4 14 525 43
+c0e8 3 464 43
+c0eb 15 321 41
+c100 8 120 45
+c108 a 321 41
+c112 4 468 43
+c116 6 245 41
+c11c 5 468 43
+c121 f 245 41
+c130 b 120 45
+c13b d 245 41
+c148 10 472 43
+c158 7 687 37
+c15f 5 686 37
+c164 14 525 43
+c178 5 338 21
+c17d 3 626 42
+c180 d 1305 42
+c18d 7 626 42
+c194 c 1305 42
+c1a0 6 1308 42
+c1a6 3 900 38
+c1a9 4 1308 42
+c1ad 3 900 38
+c1b0 4 480 43
+c1b4 3 1309 42
+c1b7 5 480 43
+c1bc 6 1309 42
+c1c2 15 162 12
+c1d7 23 74 12
+c1fa 3 75 12
+c1fd 2 76 12
+c1ff 3 75 12
+c202 8 77 12
+c20a e 76 12
+c218 18 561 37
+c230 e 86 12
+c23e 9 2936 15
+c247 5 86 12
+c24c 6 2936 15
+c252 3 86 12
+c255 5 2936 15
+c25a 9 86 12
+c263 3 115 12
+c266 31 2936 15
+c297 13 89 12
+c2aa 16 486 43
+c2c0 c 120 45
+c2cc a 321 41
+c2d6 12 245 41
+c2e8 b 120 45
+c2f3 d 245 41
+c300 13 439 43
+c313 3 245 41
+c316 4 496 43
+c31a e 245 41
+c328 b 120 45
+c333 d 245 41
+c340 10 439 43
+c350 5 520 43
+c355 5 522 43
+c35a 5 521 43
+c35f 5 522 43
+c364 14 525 43
+c378 9 1309 42
+c381 1f 169 42
+c3a0 c 120 12
+c3ac 9 124 12
+c3b5 4 93 12
+c3b9 4 124 12
+c3bd 3 93 12
+c3c0 3 124 12
+c3c3 4 125 12
+c3c7 5 93 12
+c3cc 4 125 12
+c3d0 4 126 12
+c3d4 16 93 12
+c3ea 5 94 12
+c3ef 4 93 12
+c3f3 15 94 12
+c408 5 96 12
+c40d 4 94 12
+c411 f 96 12
+c420 c 78 12
+c42c d 79 12
+c439 e 472 43
+c447 8 241 41
+c44f 14 162 12
+c463 2 71 12
+c465 4 162 12
+c469 b 71 12
+c474 c 1306 42
+FUNC c480 43f 0 std::vector<google_breakpad::MappingInfo*, google_breakpad::PageStdAllocator<google_breakpad::MappingInfo*> >::_M_fill_insert(__gnu_cxx::__normal_iterator<google_breakpad::MappingInfo**, std::vector<google_breakpad::MappingInfo*, google_breakpad::PageStdAllocator<google_breakpad::MappingInfo*> > >, unsigned long, google_breakpad::MappingInfo* const&)
+c480 11 439 43
+c491 c 442 43
+c49d 1e 444 43
+c4bb 3 900 38
+c4be 3 447 43
+c4c1 7 900 38
+c4c8 9 450 43
+c4d1 a 452 43
+c4db 15 245 41
+c4f0 b 120 45
+c4fb 11 245 41
+c50c 3 559 37
+c50f 3 456 43
+c512 3 559 37
+c515 4 456 43
+c519 4 559 37
+c51d 5 560 37
+c522 f 561 37
+c531 3 459 43
+c534 c 686 37
+c540 7 687 37
+c547 5 686 37
+c54c 14 525 43
+c560 10 321 41
+c570 8 120 45
+c578 e 321 41
+c586 4 468 43
+c58a 3 245 41
+c58d 4 468 43
+c591 f 245 41
+c5a0 b 120 45
+c5ab d 245 41
+c5b8 8 472 43
+c5c0 7 687 37
+c5c7 5 686 37
+c5cc 14 525 43
+c5e0 4 626 42
+c5e4 d 1305 42
+c5f1 7 626 42
+c5f8 c 1305 42
+c604 6 1308 42
+c60a 3 900 38
+c60d 4 1308 42
+c611 3 900 38
+c614 4 480 43
+c618 3 1309 42
+c61b 5 480 43
+c620 6 1309 42
+c626 15 162 12
+c63b 20 74 12
+c65b 2 75 12
+c65d 2 76 12
+c65f 3 75 12
+c662 8 77 12
+c66a e 76 12
+c678 7 86 12
+c67f 2 2936 15
+c681 7 86 12
+c688 d 2936 15
+c695 3 86 12
+c698 5 2936 15
+c69d 9 86 12
+c6a6 3 115 12
+c6a9 31 2936 15
+c6da 6 169 42
+c6e0 10 486 43
+c6f0 c 120 45
+c6fc a 321 41
+c706 4 491 43
+c70a 16 245 41
+c720 b 120 45
+c72b d 245 41
+c738 13 439 43
+c74b 4 498 43
+c74f 4 496 43
+c753 d 245 41
+c760 b 120 45
+c76b d 245 41
+c778 10 439 43
+c788 4 520 43
+c78c 5 522 43
+c791 4 521 43
+c795 4 522 43
+c799 17 525 43
+c7b0 9 1309 42
+c7b9 17 169 42
+c7d0 c 120 12
+c7dc 9 124 12
+c7e5 4 93 12
+c7e9 4 124 12
+c7ed 3 93 12
+c7f0 3 124 12
+c7f3 4 125 12
+c7f7 5 93 12
+c7fc 4 125 12
+c800 4 126 12
+c804 16 93 12
+c81a 5 94 12
+c81f 4 93 12
+c823 15 94 12
+c838 5 96 12
+c83d 4 94 12
+c841 f 96 12
+c850 c 78 12
+c85c d 79 12
+c869 8 245 41
+c871 8 444 43
+c879 d 472 43
+c886 8 241 41
+c88e c 1306 42
+c89a 14 162 12
+c8ae 2 71 12
+c8b0 4 162 12
+c8b4 b 71 12
+FUNC c8c0 3 0 google_breakpad::LinuxPtraceDumper::IsPostMortem() const
+c8c0 3 242 22
+FUNC c8d0 d8 0 google_breakpad::LinuxPtraceDumper::BuildProcPath(char*, int, char const*) const
+c8d0 a 107 22
+c8da 2 109 22
+c8dc 1b 107 22
+c8f7 3 108 22
+c8fa 3 107 22
+c8fd a 108 22
+c907 5 108 22
+c90c 8 111 22
+c914 3 112 22
+c917 3 111 22
+c91a 2 112 22
+c91c 2 113 22
+c91e 2a 126 22
+c948 b 115 22
+c953 7 116 22
+c95a 9 117 22
+c963 a 121 22
+c96d d 120 22
+c97a 5 121 22
+c97f 4 122 22
+c983 b 123 22
+c98e 5 122 22
+c993 5 123 22
+c998 6 124 22
+c99e a 125 22
+FUNC c9b0 ac 0 google_breakpad::LinuxPtraceDumper::CopyFromProcess(void*, int, void const*, unsigned long)
+c9b0 11 129 22
+c9c1 3 136 22
+c9c4 9 130 22
+c9cd 5 136 22
+c9d2 10 138 22
+c9e2 6 131 22
+c9e8 8 137 22
+c9f0 5 138 22
+c9f5 3 137 22
+c9f8 a 2831 15
+ca02 8 137 22
+ca0a f 2831 15
+ca19 a 141 22
+ca23 3 142 22
+ca26 5 141 22
+ca2b 5 136 22
+ca30 10 144 22
+ca40 d 2831 15
+ca4d 9 139 22
+ca56 6 2831 15
+FUNC ca60 c2 0 google_breakpad::LinuxPtraceDumper::ThreadsResume()
+ca60 2 262 22
+ca62 3 264 22
+ca65 b 262 22
+ca70 9 263 22
+ca79 4 305 22
+ca7d 4 626 42
+ca81 6 266 22
+ca87 7 626 42
+ca8e 7 266 22
+ca95 37 2831 15
+cacc 4 305 22
+cad0 4 626 42
+cad4 4 266 22
+cad8 7 626 42
+cadf 5 266 22
+cae4 7 268 22
+caeb 15 270 22
+cb00 22 2831 15
+FUNC cb30 49f 0 google_breakpad::LinuxPtraceDumper::GetThreadInfoByIndex(unsigned long, google_breakpad::ThreadInfo*)
+cb30 17 150 22
+cb47 4 305 22
+cb4b b 626 42
+cb56 5 151 22
+cb5b 3 154 22
+cb5e 3 156 22
+cb61 3 154 22
+cb64 6 156 22
+cb6a 1c 158 22
+cb86 2 206 22
+cb88 12 238 22
+cb9a 23 2822 15
+cbbd 4 163 22
+cbc1 2 162 22
+cbc3 4 2822 15
+cbc7 2 162 22
+cbc9 23 74 12
+cbec 3 75 12
+cbef 5 76 12
+cbf4 3 75 12
+cbf7 8 77 12
+cbff 3 76 12
+cc02 3 82 12
+cc05 4 49 4
+cc09 5 175 22
+cc0e d 49 4
+cc1b 5 175 22
+cc20 3 49 4
+cc23 19 169 22
+cc3c 6 99 4
+cc42 f 66 4
+cc51 5 99 4
+cc56 3 2838 15
+cc59 5 98 4
+cc5e 3 99 4
+cc61 10 2838 15
+cc71 6 100 4
+cc77 a 102 4
+cc81 5 103 4
+cc86 4 66 4
+cc8a 15 70 4
+cc9f 11 150 22
+ccb0 18 70 4
+ccc8 7 69 4
+cccf c 78 4
+ccdb 20 2725 15
+ccfb c 182 22
+cd07 b 182 22
+cd12 c 2831 15
+cd1e 5 185 22
+cd23 1c 2831 15
+cd3f 8 189 22
+cd47 2c 2831 15
+cd73 b 205 22
+cd7e 13 2831 15
+cd91 e 199 22
+cd9f d 235 22
+cdac a 237 22
+cdb6 4 86 12
+cdba 2 2936 15
+cdbc 7 86 12
+cdc3 c 2936 15
+cdcf 3 86 12
+cdd2 5 2936 15
+cdd7 3 86 12
+cdda 3 115 12
+cddd 28 2936 15
+ce05 f 89 12
+ce14 3 71 4
+ce17 4 73 4
+ce1b 6 71 4
+ce21 18 172 22
+ce39 c 173 22
+ce45 d 116 4
+ce52 2 117 4
+ce54 8 118 4
+ce5c 7 117 4
+ce63 d 118 4
+ce70 10 105 4
+ce80 18 174 22
+ce98 10 175 22
+cea8 10 70 4
+ceb8 10 2838 15
+cec8 7 78 12
+cecf 8 79 12
+ced7 8 82 12
+cedf b 86 4
+ceea 8 87 4
+cef2 4 92 4
+cef6 3 90 4
+cef9 4 93 4
+cefd 6 90 4
+cf03 9 92 4
+cf0c a 120 12
+cf16 3 93 12
+cf19 4 124 12
+cf1d 3 93 12
+cf20 4 125 12
+cf24 5 93 12
+cf29 4 124 12
+cf2d 7 93 12
+cf34 4 126 12
+cf38 8 93 12
+cf40 5 94 12
+cf45 3 93 12
+cf48 10 94 12
+cf58 c 96 12
+cf64 e 2831 15
+cf72 1f 87 4
+cf91 1f 116 4
+cfb0 1f 156 22
+FUNC cfd0 20 0 google_breakpad::LinuxPtraceDumper::LinuxPtraceDumper(int)
+cfd0 1 101 22
+cfd1 3 101 22
+cfd4 1a 103 22
+cfee 2 104 22
+FUNC cff0 36d 0 google_breakpad::LinuxPtraceDumper::EnumerateThreads()
+cff0 17 274 22
+d007 7 276 22
+d00e 11 274 22
+d01f 15 276 22
+d034 2 281 22
+d036 3a 303 22
+d070 30 2822 15
+d0a0 4 280 22
+d0a4 23 74 12
+d0c7 3 75 12
+d0ca 5 76 12
+d0cf 2 77 12
+d0d1 4 75 12
+d0d5 6 77 12
+d0db 3 76 12
+d0de 8 295 22
+d0e6 4 82 3
+d0ea b 51 3
+d0f5 2 288 22
+d0f7 8 286 22
+d0ff 5 295 22
+d104 4 65 3
+d108 17 289 22
+d11f 8 87 3
+d127 2d 2757 15
+d154 22 2725 15
+d176 a 302 22
+d180 5 93 3
+d185 3 94 3
+d188 3 93 3
+d18b 5 94 3
+d190 6 93 3
+d196 12 94 3
+d1a8 f 290 22
+d1b7 8 289 22
+d1bf 8 292 22
+d1c7 8 291 22
+d1cf d 292 22
+d1dc 10 292 22
+d1ec e 883 42
+d1fa 8 120 45
+d202 16 887 42
+d218 10 302 22
+d228 9 68 3
+d231 6 70 3
+d237 5 71 3
+d23c 13 77 3
+d24f 21 80 3
+d270 10 73 3
+d280 4 86 12
+d284 2 2936 15
+d286 7 86 12
+d28d d 2936 15
+d29a 3 86 12
+d29d 5 2936 15
+d2a2 3 86 12
+d2a5 3 115 12
+d2a8 24 2936 15
+d2cc c 89 12
+d2d8 6 120 12
+d2de 3 93 12
+d2e1 4 124 12
+d2e5 3 93 12
+d2e8 4 125 12
+d2ec 5 93 12
+d2f1 4 124 12
+d2f5 7 93 12
+d2fc 4 126 12
+d300 8 93 12
+d308 5 94 12
+d30d 3 93 12
+d310 10 94 12
+d320 10 96 12
+d330 7 78 12
+d337 d 79 12
+d344 19 893 42
+FUNC d360 235 0 google_breakpad::LinuxPtraceDumper::ThreadsSuspend()
+d360 2 244 22
+d362 5 246 22
+d367 12 244 22
+d379 d 245 22
+d386 4 305 22
+d38a b 626 42
+d395 9 247 22
+d39e 4 244 22
+d3a2 5 80 22
+d3a7 7 244 22
+d3ae 4 254 22
+d3b2 3 244 22
+d3b5 5 254 22
+d3ba 6 2831 15
+d3c0 8 254 22
+d3c8 4 248 22
+d3cc 8 751 42
+d3d4 7 60 22
+d3db 1e 2831 15
+d3f9 c 61 22
+d405 15 2998 15
+d41a 3 66 22
+d41d 3 2998 15
+d420 2 66 22
+d422 13 2998 15
+d435 b 65 22
+d440 5 66 22
+d445 1e 2831 15
+d463 5 305 22
+d468 8 626 42
+d470 8 751 42
+d478 4 626 42
+d47c 10 253 22
+d48c 12 305 22
+d49e a 626 42
+d4a8 4 254 22
+d4ac 3 626 42
+d4af 9 686 42
+d4b8 2 688 42
+d4ba 4 689 42
+d4be f 1320 42
+d4cd 4 255 22
+d4d1 d 247 22
+d4de 3 259 22
+d4e1 9 258 22
+d4ea 3 259 22
+d4ed 13 260 22
+d500 1a 2831 15
+d51a 26 80 22
+d540 30 1004 42
+d570 14 2831 15
+d584 7 247 22
+d58b a 2831 15
+FUNC d5a0 13 0 google_breakpad::LinuxPtraceDumper::~LinuxPtraceDumper()
+d5a0 13 42 6
+FUNC d5c0 20 0 google_breakpad::LinuxPtraceDumper::~LinuxPtraceDumper()
+d5c0 8 42 6
+d5c8 18 42 6
+FUNC d5e0 306 0 std::vector<int, google_breakpad::PageStdAllocator<int> >::_M_insert_aux(__gnu_cxx::__normal_iterator<int*, std::vector<int, google_breakpad::PageStdAllocator<int> > >, int const&)
+d5e0 28 316 43
+d608 8 320 43
+d610 3 316 43
+d613 2 320 43
+d615 a 120 45
+d61f 4 329 43
+d623 4 325 43
+d627 3 559 37
+d62a 4 325 43
+d62e 3 327 43
+d631 4 559 37
+d635 5 560 37
+d63a f 561 37
+d649 3 333 43
+d64c 24 391 43
+d670 4 305 22
+d674 a 626 42
+d67e 9 215 37
+d687 4 1308 42
+d68b 9 1309 42
+d694 3 900 38
+d697 d 162 12
+d6a4 3 900 38
+d6a7 3 162 12
+d6aa 8 342 43
+d6b2 23 74 12
+d6d5 3 75 12
+d6d8 2 76 12
+d6da 3 75 12
+d6dd 8 77 12
+d6e5 8 76 12
+d6ed 8 351 43
+d6f5 a 120 45
+d6ff 11 245 41
+d710 9 120 45
+d719 d 245 41
+d726 13 316 43
+d739 f 245 41
+d748 9 120 45
+d751 d 245 41
+d75e 10 316 43
+d76e 4 387 43
+d772 5 389 43
+d777 4 388 43
+d77b d 389 43
+d788 3 900 38
+d78b c 162 12
+d797 3 900 38
+d79a 5 162 12
+d79f 11 342 43
+d7b0 7 86 12
+d7b7 2 2936 15
+d7b9 7 86 12
+d7c0 d 2936 15
+d7cd 3 86 12
+d7d0 5 2936 15
+d7d5 9 86 12
+d7de 3 115 12
+d7e1 2d 2936 15
+d80e f 89 12
+d81d 8 120 12
+d825 9 124 12
+d82e 4 125 12
+d832 8 93 12
+d83a 3 124 12
+d83d 3 125 12
+d840 4 126 12
+d844 16 93 12
+d85a 5 94 12
+d85f 4 93 12
+d863 15 94 12
+d878 b 96 12
+d883 8 78 12
+d88b d 79 12
+d898 13 1309 42
+d8ab 7 900 38
+d8b2 6 169 42
+d8b8 8 900 38
+d8c0 2 169 42
+d8c2 4 342 43
+d8c6 3 169 42
+d8c9 4 342 43
+d8cd 6 169 42
+d8d3 6 162 12
+d8d9 d 71 12
+FUNC d8f0 458 0 std::vector<int, google_breakpad::PageStdAllocator<int> >::_M_fill_insert(__gnu_cxx::__normal_iterator<int*, std::vector<int, google_breakpad::PageStdAllocator<int> > >, unsigned long, int const&)
+d8f0 11 439 43
+d901 c 442 43
+d90d 1f 444 43
+d92c 3 900 38
+d92f 3 447 43
+d932 7 900 38
+d939 5 450 43
+d93e 7 452 43
+d945 3 245 41
+d948 3 452 43
+d94b d 245 41
+d958 9 120 45
+d961 d 245 41
+d96e 3 559 37
+d971 4 456 43
+d975 7 559 37
+d97c 5 456 43
+d981 9 560 37
+d98a 3 459 43
+d98d b 686 37
+d998 7 687 37
+d99f 5 686 37
+d9a4 14 525 43
+d9b8 3 464 43
+d9bb 15 321 41
+d9d0 8 120 45
+d9d8 a 321 41
+d9e2 4 468 43
+d9e6 6 245 41
+d9ec 5 468 43
+d9f1 f 245 41
+da00 9 120 45
+da09 d 245 41
+da16 a 472 43
+da20 7 687 37
+da27 5 686 37
+da2c 14 525 43
+da40 5 305 22
+da45 3 626 42
+da48 d 1305 42
+da55 7 626 42
+da5c c 1305 42
+da68 6 1308 42
+da6e 3 900 38
+da71 4 1308 42
+da75 3 900 38
+da78 4 480 43
+da7c 3 1309 42
+da7f 5 480 43
+da84 6 1309 42
+da8a 15 162 12
+da9f 23 74 12
+dac2 3 75 12
+dac5 2 76 12
+dac7 3 75 12
+daca 8 77 12
+dad2 e 76 12
+dae0 20 561 37
+db00 e 86 12
+db0e 9 2936 15
+db17 5 86 12
+db1c 6 2936 15
+db22 3 86 12
+db25 5 2936 15
+db2a 9 86 12
+db33 3 115 12
+db36 31 2936 15
+db67 13 89 12
+db7a 16 486 43
+db90 b 120 45
+db9b a 321 41
+dba5 13 245 41
+dbb8 9 120 45
+dbc1 d 245 41
+dbce 13 439 43
+dbe1 3 245 41
+dbe4 4 496 43
+dbe8 8 245 41
+dbf0 9 120 45
+dbf9 d 245 41
+dc06 10 439 43
+dc16 5 520 43
+dc1b 5 522 43
+dc20 5 521 43
+dc25 5 522 43
+dc2a 16 525 43
+dc40 9 1309 42
+dc49 1f 169 42
+dc68 c 120 12
+dc74 9 124 12
+dc7d 4 93 12
+dc81 4 124 12
+dc85 3 93 12
+dc88 3 124 12
+dc8b 4 125 12
+dc8f 5 93 12
+dc94 4 125 12
+dc98 4 126 12
+dc9c 16 93 12
+dcb2 5 94 12
+dcb7 4 93 12
+dcbb 15 94 12
+dcd0 5 96 12
+dcd5 4 94 12
+dcd9 f 96 12
+dce8 c 78 12
+dcf4 d 79 12
+dd01 e 472 43
+dd0f 8 241 41
+dd17 14 162 12
+dd2b 2 71 12
+dd2d 4 162 12
+dd31 b 71 12
+dd3c c 1306 42
+FUNC dd50 e3 0 isLegalUTF8
+dd50 3 294 25
+dd53 3 295 25
+dd56 4 294 25
+dd5a e 295 25
+dd68 2 296 25
+dd6a 6 315 25
+dd70 8 295 25
+dd78 3 311 25
+dd7b 2 298 25
+dd7d 5 311 25
+dd82 e 313 25
+dd90 a 298 25
+dd9a 5 298 25
+dd9f 4 298 25
+dda3 4 299 25
+dda7 2 298 25
+dda9 4 299 25
+ddad 5 299 25
+ddb2 e 299 25
+ddc0 4 300 25
+ddc4 2 298 25
+ddc6 5 300 25
+ddcb f 302 25
+ddda e 304 25
+dde8 a 302 25
+ddf2 2 298 25
+ddf4 4 308 25
+ddf8 8 315 25
+de00 18 306 25
+de18 10 305 25
+de28 b 307 25
+FUNC de40 fe 0 ConvertUTF32toUTF16
+de40 3 64 25
+de43 1 62 25
+de44 3 65 25
+de47 1 62 25
+de48 9 66 25
+de51 f 68 25
+de60 10 74 25
+de70 9 75 25
+de79 a 89 25
+de83 5 66 25
+de88 c 68 25
+de94 7 71 25
+de9b 9 72 25
+dea4 9 85 25
+dead 5 86 25
+deb2 3 66 25
+deb5 5 87 25
+deba 6 66 25
+dec0 3 102 25
+dec3 3 103 25
+dec6 a 105 25
+ded0 10 83 25
+dee0 9 93 25
+dee9 7 97 25
+def0 3 98 25
+def3 7 99 25
+defa 4 98 25
+defe 6 99 25
+df04 6 98 25
+df0a 5 99 25
+df0f 4 98 25
+df13 9 99 25
+df1c 3 93 25
+df1f 3 102 25
+df22 5 95 25
+df27 3 103 25
+df2a 3 105 25
+df2d 3 75 25
+df30 7 77 25
+df37 3 66 25
+df3a 4 63 25
+FUNC df40 e6 0 ConvertUTF16toUTF32
+df40 3 112 25
+df43 3 113 25
+df46 9 115 25
+df4f 9 110 25
+df58 9 121 25
+df61 5 122 25
+df66 10 124 25
+df76 4 125 25
+df7a 4 127 25
+df7e 8 125 25
+df86 5 146 25
+df8b 7 150 25
+df92 8 115 25
+df9a 8 117 25
+dfa2 10 119 25
+dfb2 5 138 25
+dfb7 10 140 25
+dfc7 2 161 25
+dfc9 5 142 25
+dfce 3 152 25
+dfd1 3 153 25
+dfd4 c 161 25
+dfe0 5 128 25
+dfe5 5 146 25
+dfea 2 161 25
+dfec 5 148 25
+dff1 3 152 25
+dff4 3 153 25
+dff7 b 161 25
+e002 2 111 25
+e004 3 152 25
+e007 3 153 25
+e00a 5 161 25
+e00f 5 135 25
+e014 3 152 25
+e017 3 153 25
+e01a 3 161 25
+e01d 3 152 25
+e020 2 111 25
+e022 3 153 25
+e025 1 161 25
+FUNC e030 216 0 ConvertUTF16toUTF8
+e030 2 213 25
+e032 3 215 25
+e035 2 213 25
+e037 3 217 25
+e03a 1 213 25
+e03b 3 216 25
+e03e 1 213 25
+e03f 9 217 25
+e048 8 223 25
+e050 10 225 25
+e060 9 227 25
+e069 5 228 25
+e06e 14 230 25
+e082 4 231 25
+e086 4 233 25
+e08a 8 231 25
+e092 6 253 25
+e098 4 261 25
+e09c 12 262 25
+e0ae 12 261 25
+e0c0 5 244 25
+e0c5 10 246 25
+e0d5 1 277 25
+e0d6 3 274 25
+e0d9 3 275 25
+e0dc 5 248 25
+e0e1 f 277 25
+e0f0 8 254 25
+e0f8 4 261 25
+e0fc 12 262 25
+e10e 12 261 25
+e120 5 234 25
+e125 8 255 25
+e12d 4 261 25
+e131 f 262 25
+e140 10 261 25
+e150 c 256 25
+e15c 4 261 25
+e160 9 262 25
+e169 15 267 25
+e17e 6 261 25
+e184 8 267 25
+e18c 1a 268 25
+e1a6 14 269 25
+e1ba e 270 25
+e1c8 3 217 25
+e1cb 5 272 25
+e1d0 4 270 25
+e1d4 6 217 25
+e1da 1 277 25
+e1db 3 274 25
+e1de 3 275 25
+e1e1 2 214 25
+e1e3 d 277 25
+e1f0 a 258 25
+e1fa 1 277 25
+e1fb 3 274 25
+e1fe 3 275 25
+e201 5 241 25
+e206 6 277 25
+e20c 7 262 25
+e213 1 277 25
+e214 3 264 25
+e217 3 274 25
+e21a 5 264 25
+e21f 3 275 25
+e222 6 277 25
+e228 9 262 25
+e231 3 261 25
+e234 12 262 25
+FUNC e250 2b 0 isLegalUTF8Sequence
+e250 11 324 25
+e261 b 325 25
+e26c c 328 25
+e278 3 329 25
+FUNC e280 265 0 ConvertUTF8toUTF16
+e280 e 334 25
+e28e 3 336 25
+e291 3 337 25
+e294 13 334 25
+e2a7 3 338 25
+e2aa 5 334 25
+e2af 6 338 25
+e2b5 14 340 25
+e2c9 17 341 25
+e2e0 17 345 25
+e2f7 2 339 25
+e2f9 17 352 25
+e310 2 339 25
+e312 f 354 25
+e321 f 355 25
+e330 f 356 25
+e33f f 357 25
+e34e b 358 25
+e359 e 360 25
+e367 b 362 25
+e372 c 366 25
+e37e 14 368 25
+e392 8 377 25
+e39a a 338 25
+e3a4 14 340 25
+e3b8 12 341 25
+e3ca 5 342 25
+e3cf 8 398 25
+e3d7 8 399 25
+e3df 11 401 25
+e3f0 30 339 25
+e420 10 353 25
+e430 10 339 25
+e440 c 380 25
+e44c a 385 25
+e456 a 338 25
+e460 10 335 25
+e470 8 379 25
+e478 b 389 25
+e483 6 393 25
+e489 3 394 25
+e48c 5 395 25
+e491 4 394 25
+e495 4 395 25
+e499 5 394 25
+e49e 5 395 25
+e4a3 4 394 25
+e4a7 9 395 25
+e4b0 3 390 25
+e4b3 5 391 25
+e4b8 6 390 25
+e4be a 391 25
+e4c8 a 346 25
+e4d2 3 382 25
+e4d5 5 381 25
+e4da 6 382 25
+e4e0 5 383 25
+FUNC e4f0 1c0 0 ConvertUTF32toUTF8
+e4f0 2 406 25
+e4f2 3 408 25
+e4f5 2 410 25
+e4f7 2 406 25
+e4f9 3 410 25
+e4fc 3 406 25
+e4ff 3 409 25
+e502 1 406 25
+e503 d 410 25
+e510 3 416 25
+e513 7 415 25
+e51a 2 416 25
+e51c 14 418 25
+e530 6 428 25
+e536 4 437 25
+e53a f 438 25
+e549 f 437 25
+e558 9 429 25
+e561 4 437 25
+e565 f 438 25
+e574 c 437 25
+e580 9 430 25
+e589 4 437 25
+e58d f 438 25
+e59c c 437 25
+e5a8 d 431 25
+e5b5 4 437 25
+e5b9 9 438 25
+e5c2 15 443 25
+e5d7 6 437 25
+e5dd 8 443 25
+e5e5 17 444 25
+e5fc 17 445 25
+e613 f 446 25
+e622 3 410 25
+e625 5 448 25
+e62a 3 415 25
+e62d 4 446 25
+e631 6 410 25
+e637 1 453 25
+e638 3 450 25
+e63b 3 451 25
+e63e 12 453 25
+e650 6 433 25
+e656 a 434 25
+e660 1 453 25
+e661 3 450 25
+e664 3 451 25
+e667 5 420 25
+e66c 8 453 25
+e674 7 438 25
+e67b 1 453 25
+e67c 3 440 25
+e67f 3 450 25
+e682 5 440 25
+e687 3 451 25
+e68a 8 453 25
+e692 9 438 25
+e69b 3 437 25
+e69e 12 438 25
+FUNC e6b0 29f 0 ConvertUTF8toUTF32
+e6b0 e 458 25
+e6be 3 460 25
+e6c1 3 461 25
+e6c4 14 458 25
+e6d8 3 462 25
+e6db 5 458 25
+e6e0 6 462 25
+e6e6 14 464 25
+e6fa 12 465 25
+e70c 4 457 25
+e710 18 459 25
+e728 7 469 25
+e72f 4 457 25
+e733 19 469 25
+e74c 2 463 25
+e74e 1a 476 25
+e768 2 463 25
+e76a 10 478 25
+e77a 10 479 25
+e78a 10 480 25
+e79a 10 481 25
+e7aa c 482 25
+e7b6 b 484 25
+e7c1 b 486 25
+e7cc c 490 25
+e7d8 14 495 25
+e7ec c 496 25
+e7f8 3 457 25
+e7fb 8 501 25
+e803 b 462 25
+e80e 19 464 25
+e827 17 465 25
+e83e 8 466 25
+e846 5 511 25
+e84b 5 512 25
+e850 3 511 25
+e853 3 512 25
+e856 1a 514 25
+e870 30 463 25
+e8a0 10 477 25
+e8b0 10 463 25
+e8c0 5 462 25
+e8c5 3 457 25
+e8c8 8 508 25
+e8d0 8 507 25
+e8d8 18 462 25
+e8f0 3 457 25
+e8f3 10 504 25
+e903 d 470 25
+e910 6 487 25
+e916 8 488 25
+e91e 6 487 25
+e924 5 488 25
+e929 6 497 25
+e92f 8 498 25
+e937 6 497 25
+e93d 5 499 25
+e942 d 459 25
+FUNC e950 a 0 google_breakpad::FileID::FileID(char const*)
+e950 a 52 27
+FUNC e960 1ee 0 google_breakpad::FileID::ElfFileIdentifierFromMappedFile(void const*, unsigned char*)
+e960 a 143 27
+e96a 5 99 27
+e96f 4 143 27
+e973 12 99 27
+e985 f 98 27
+e994 21 102 27
+e9b5 8 98 27
+e9bd 23 125 27
+e9e0 2 127 27
+e9e2 c 124 27
+e9ee f 130 27
+e9fd d 132 27
+ea0a 5 131 27
+ea0f b 132 27
+ea1a 6 133 27
+ea20 8 78 27
+ea28 b 135 27
+ea33 6 134 27
+ea39 4 136 27
+ea3d 5 133 27
+ea42 5 146 27
+ea47 9 150 27
+ea50 b 98 27
+ea5b d 107 27
+ea68 9 110 27
+ea71 4 66 27
+ea75 5 112 27
+ea7a 3 66 27
+ea7d 13 68 27
+ea90 1a 71 27
+eaaa 9 68 27
+eab3 6 69 27
+eab9 b 76 27
+eac4 3 82 27
+eac7 a 85 27
+ead1 b 82 27
+eadc 5 85 27
+eae1 3 87 27
+eae4 5 194 37
+eae9 6 87 27
+eaef 8 194 37
+eaf7 a 87 27
+eb01 4 66 27
+eb05 5 109 27
+eb0a 3 66 27
+eb0d 13 68 27
+eb20 1a 71 27
+eb3a 9 68 27
+eb43 b 69 27
+FUNC eb50 59 0 google_breakpad::FileID::ElfFileIdentifier(unsigned char*)
+eb50 4 152 27
+eb54 3 153 27
+eb57 4 152 27
+eb5b a 153 27
+eb65 5 192 27
+eb6a 5 154 27
+eb6f 1b 157 27
+eb8a 6 158 27
+eb90 4 155 27
+eb94 15 157 27
+FUNC ebb0 e5 0 google_breakpad::FileID::ConvertIdentifierToString(unsigned char const*, char*, int)
+ebb0 2 162 27
+ebb2 c 166 27
+ebbe 8 168 27
+ebc6 3 170 27
+ebc9 4 172 27
+ebcd 4 170 27
+ebd1 4 172 27
+ebd5 4 170 27
+ebd9 2 175 27
+ebdb 5 170 27
+ebe0 5 172 27
+ebe5 13 175 27
+ebf8 a 175 27
+ec02 6 178 27
+ec08 8 181 27
+ec10 3 178 27
+ec13 4 179 27
+ec17 3 178 27
+ec1a 3 181 27
+ec1d 4 179 27
+ec21 6 178 27
+ec27 2 181 27
+ec29 5 181 27
+ec2e a 182 27
+ec38 1a 184 27
+ec52 1a 185 27
+ec6c 2 175 27
+ec6e 4 185 27
+ec72 2 175 27
+ec74 7 189 27
+ec7b 1 190 27
+ec7c 4 189 27
+ec80 2 190 27
+ec82 6 174 27
+ec88 6 189 27
+ec8e 1 190 27
+ec8f 4 189 27
+ec93 2 190 27
+FUNC eca0 10 0 google_breakpad::MemoryMappedFile::MemoryMappedFile()
+eca0 10 50 13
+FUNC ecb0 56 0 google_breakpad::MemoryMappedFile::Unmap()
+ecb0 11 98 30
+ecc1 3 105 30
+ecc4 5 99 30
+ecc9 1f 2812 15
+ece8 7 70 13
+ecef 8 72 13
+ecf7 f 103 30
+FUNC ed10 193 0 google_breakpad::MemoryMappedFile::Map(char const*)
+ed10 a 57 30
+ed1a 2 2822 15
+ed1c 14 57 30
+ed30 3 57 30
+ed33 5 58 30
+ed38 1b 2822 15
+ed53 9 2725 15
+ed5c 34 96 30
+ed90 5 61 30
+ed95 3 2741 15
+ed98 3 67 30
+ed9b 20 2741 15
+edbb 1e 2725 15
+edd9 7 73 30
+ede0 5 67 30
+ede5 b 67 30
+edf0 6 79 30
+edf6 39 2936 15
+ee2f 1e 2725 15
+ee4d 6 90 30
+ee53 5 94 30
+ee58 8 72 13
+ee60 4 70 13
+ee64 5 95 30
+ee69 17 72 13
+ee80 13 2725 15
+ee93 5 81 30
+ee98 b 2725 15
+FUNC eeb0 14 0 google_breakpad::MemoryMappedFile::MemoryMappedFile(char const*)
+eeb0 f 50 13
+eebf 5 50 30
+FUNC eed0 5 0 google_breakpad::MemoryMappedFile::~MemoryMappedFile()
+eed0 5 54 30
+FUNC eee0 3a 0 google_breakpad::SafeReadLink(char const*, char*, unsigned long)
+eee0 1 39 31
+eee1 1b 2840 15
+eefc 2 50 31
+eefe 2 51 31
+ef00 b 46 31
+ef0b 4 47 31
+ef0f 5 48 31
+ef14 2 51 31
+ef16 2 50 31
+ef18 2 51 31
+FUNC ef20 1f 0 google_breakpad::IsValidElf(void const*)
+ef20 7 111 26
+ef27 4 109 26
+ef2b f 111 26
+ef3a 5 112 26
+FUNC ef40 5 0 google_breakpad::ElfClass(void const*)
+ef40 4 118 26
+ef44 1 119 26
+FUNC ef50 466 0 google_breakpad::FindElfSection(void const*, char const*, unsigned int, void const**, int*, int*)
+ef50 25 126 26
+ef75 3 127 26
+ef78 5 126 26
+ef7d 6 127 26
+ef83 c 128 26
+ef8f c 129 26
+ef9b 7 131 26
+efa2 d 132 26
+efaf 9 134 26
+efb8 2 135 26
+efba 26 156 26
+efe0 8 137 26
+efe8 5 138 26
+efed 3 139 26
+eff0 9 145 26
+eff9 5 149 26
+effe 1c 55 26
+f01a a 58 26
+f024 4 62 26
+f028 a 42 10
+f032 4 70 26
+f036 7 62 26
+f03d 4 42 10
+f041 7 65 26
+f048 6 53 10
+f04e 5 65 26
+f053 6 53 10
+f059 9 54 10
+f062 9 55 10
+f06b e 57 10
+f079 8 58 10
+f081 3 121 26
+f084 3 63 10
+f087 3 121 26
+f08a 3 63 10
+f08d 17 121 26
+f0a4 5 61 10
+f0a9 4 63 10
+f0ad 3 62 10
+f0b0 7 63 10
+f0b7 4 62 10
+f0bb 2a 63 10
+f0e5 9 72 26
+f0ee 8 73 26
+f0f6 e 74 26
+f104 b 152 26
+f10f 1c 55 26
+f12b a 58 26
+f135 4 62 26
+f139 3 42 10
+f13c 4 70 26
+f140 4 62 26
+f144 3 42 10
+f147 4 62 26
+f14b 4 42 10
+f14f 4 65 26
+f153 3 42 10
+f156 3 65 26
+f159 c 53 10
+f165 9 54 10
+f16e 9 55 10
+f177 13 57 10
+f18a 11 58 10
+f19b 3 121 26
+f19e 3 63 10
+f1a1 3 121 26
+f1a4 3 63 10
+f1a7 15 121 26
+f1bc 9 61 10
+f1c5 4 63 10
+f1c9 2 62 10
+f1cb 2 63 10
+f1cd 4 62 10
+f1d1 37 63 10
+f208 b 72 26
+f213 a 73 26
+f21d 9 74 26
+f226 1f 127 26
+f245 1f 129 26
+f264 1f 128 26
+f283 3e 55 10
+f2c1 1c 54 10
+f2dd 1f 53 10
+f2fc 1f 58 26
+f31b 1f 55 26
+f33a 1f 54 10
+f359 1f 53 10
+f378 1f 58 26
+f397 1f 55 26
+FUNC f3c0 29c 0 google_breakpad::FindElfSegment(void const*, unsigned int, void const**, int*, int*)
+f3c0 20 162 26
+f3e0 9 163 26
+f3e9 c 164 26
+f3f5 c 165 26
+f401 7 167 26
+f408 c 168 26
+f414 9 170 26
+f41d 2 171 26
+f41f 21 192 26
+f440 8 173 26
+f448 5 174 26
+f44d 3 175 26
+f450 9 181 26
+f459 5 185 26
+f45e 1c 90 26
+f47a a 93 26
+f484 4 98 26
+f488 7 42 10
+f48f 3 98 26
+f492 3 42 10
+f495 2 98 26
+f497 9 99 26
+f4a0 20 158 26
+f4c0 11 99 26
+f4d1 9 98 26
+f4da b 188 26
+f4e5 1c 90 26
+f501 a 93 26
+f50b 3 42 10
+f50e 4 98 26
+f512 3 42 10
+f515 3 98 26
+f518 3 42 10
+f51b 2 98 26
+f51d 5 99 26
+f522 1e 158 26
+f540 d 99 26
+f54d b 98 26
+f558 4 100 26
+f55c 4 101 26
+f560 4 100 26
+f564 9 101 26
+f56d 6 100 26
+f573 3 101 26
+f576 4 100 26
+f57a 9 101 26
+f583 1f 165 26
+f5a2 1f 164 26
+f5c1 1f 163 26
+f5e0 1f 93 26
+f5ff 1f 90 26
+f61e 1f 93 26
+f63d 1f 90 26
+STACK CFI INIT 18c0 350 .cfa: $rsp 16 + .ra: .cfa -8 + ^
+STACK CFI 18c6 .cfa: $rsp 24 +
+STACK CFI INIT 2140 2c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 2141 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 216b .cfa: $rsp 8 +
+STACK CFI INIT 2170 8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2180 90 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 2181 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 2188 .cfa: $rsp 32 +
+STACK CFI 21ae .cfa: $rsp 16 +
+STACK CFI 21af .cfa: $rsp 8 +
+STACK CFI 21b0 .cfa: $rsp 32 +
+STACK CFI INIT 1f40 f3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1f41 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 1f4d .cfa: $rsp 240 +
+STACK CFI 1fec .cfa: $rsp 16 +
+STACK CFI 1fef .cfa: $rsp 8 +
+STACK CFI 1ff0 .cfa: $rsp 240 +
+STACK CFI INIT 1c10 1a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2210 f5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 221f $r14: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 2221 $r13: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 2223 $r12: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 222b $rbp: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI 2233 $rbx: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI 223c .cfa: $rsp 208 +
+STACK CFI 22e2 .cfa: $rsp 48 +
+STACK CFI 22e8 $rbx: $rbx .cfa: $rsp 40 +
+STACK CFI 22e9 $rbp: $rbp .cfa: $rsp 32 +
+STACK CFI 22eb $r12: $r12 .cfa: $rsp 24 +
+STACK CFI 22ed $r13: $r13 .cfa: $rsp 16 +
+STACK CFI 22ef $r14: $r14 .cfa: $rsp 8 +
+STACK CFI 22f0 $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^ $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^ .cfa: $rsp 208 +
+STACK CFI 22f7 .cfa: $rsp 48 +
+STACK CFI 22fa $rbx: $rbx .cfa: $rsp 40 +
+STACK CFI 22fb $rbp: $rbp .cfa: $rsp 32 +
+STACK CFI 22fd $r12: $r12 .cfa: $rsp 24 +
+STACK CFI 22ff $r13: $r13 .cfa: $rsp 16 +
+STACK CFI 2301 $r14: $r14 .cfa: $rsp 8 +
+STACK CFI INIT 2310 8b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 2323 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI 233b $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI 2341 .cfa: $rsp 48 +
+STACK CFI 238c $r12: $r12 $r13: $r13 $rbp: $rbp $rbx: $rbx .cfa: $rsp 8 +
+STACK CFI 2390 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^ .cfa: $rsp 48 +
+STACK CFI INIT 23a0 104 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 23bb $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI 23c2 .cfa: $rsp 64 +
+STACK CFI 2401 .cfa: $rsp 8 +
+STACK CFI 2408 .cfa: $rsp 64 +
+STACK CFI 246d .cfa: $rsp 8 +
+STACK CFI 2478 .cfa: $rsp 64 +
+STACK CFI INIT 24b0 477 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 24ba $r13: .cfa -32 + ^ $rbp: .cfa -48 + ^
+STACK CFI 24db $r12: .cfa -40 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbx: .cfa -56 + ^ .cfa: $rsp 160 +
+STACK CFI 2522 .cfa: $rsp 8 +
+STACK CFI 2528 .cfa: $rsp 160 +
+STACK CFI INIT 2930 19c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 2932 $r13: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 2934 $r12: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 2938 $rbp: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 293c $rbx: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI 2946 .cfa: $rsp 1632 +
+STACK CFI 2a7f .cfa: $rsp 40 +
+STACK CFI 2a80 .cfa: $rsp 32 +
+STACK CFI 2a81 .cfa: $rsp 24 +
+STACK CFI 2a83 .cfa: $rsp 16 +
+STACK CFI 2a85 .cfa: $rsp 8 +
+STACK CFI 2a90 .cfa: $rsp 1632 +
+STACK CFI 2a97 .cfa: $rsp 40 +
+STACK CFI 2a9d .cfa: $rsp 32 +
+STACK CFI 2a9e .cfa: $rsp 24 +
+STACK CFI 2aa0 .cfa: $rsp 16 +
+STACK CFI 2aa2 .cfa: $rsp 8 +
+STACK CFI 2aa8 .cfa: $rsp 1632 +
+STACK CFI INIT 2ad0 68 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 2ada $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 2ae6 $r12: .cfa -16 + ^ .cfa: $rsp 32 +
+STACK CFI 2b12 .cfa: $rsp 8 +
+STACK CFI 2b18 .cfa: $rsp 32 +
+STACK CFI 2b33 .cfa: $rsp 8 +
+STACK CFI INIT 2b40 56 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 2b47 .cfa: $rsp 1104 +
+STACK CFI 2b95 .cfa: $rsp 8 +
+STACK CFI INIT 2ba0 18b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 2ba2 $r15: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 2ba4 $r14: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 2ba6 $r13: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 2ba8 $r12: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI 2bac $rbp: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI 2bb0 $rbx: .cfa -56 + ^ .cfa: $rsp 56 +
+STACK CFI 2bb9 .cfa: $rsp 224 +
+STACK CFI 2c73 .cfa: $rsp 56 +
+STACK CFI 2c74 .cfa: $rsp 48 +
+STACK CFI 2c75 .cfa: $rsp 40 +
+STACK CFI 2c77 .cfa: $rsp 32 +
+STACK CFI 2c79 .cfa: $rsp 24 +
+STACK CFI 2c7b .cfa: $rsp 16 +
+STACK CFI 2c7d .cfa: $rsp 8 +
+STACK CFI 2c80 .cfa: $rsp 224 +
+STACK CFI INIT 2d30 e0 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 2d3a $r12: .cfa -24 + ^ $rbp: .cfa -32 + ^
+STACK CFI 2d4a $r13: .cfa -16 + ^ $rbx: .cfa -40 + ^ .cfa: $rsp 80 +
+STACK CFI 2d88 .cfa: $rsp 8 +
+STACK CFI 2d90 .cfa: $rsp 80 +
+STACK CFI INIT 2e10 58 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 2e14 .cfa: $rsp 32 +
+STACK CFI 2e44 .cfa: $rsp 8 +
+STACK CFI 2e48 .cfa: $rsp 32 +
+STACK CFI 2e67 .cfa: $rsp 8 +
+STACK CFI INIT 2e70 28 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 2e71 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 2e97 .cfa: $rsp 8 +
+STACK CFI INIT 2ea0 163 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 2ea1 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 2ea8 .cfa: $rsp 1616 +
+STACK CFI 2f0a .cfa: $rsp 16 +
+STACK CFI 2f0b .cfa: $rsp 8 +
+STACK CFI 2f10 .cfa: $rsp 1616 +
+STACK CFI 2fd5 .cfa: $rsp 16 +
+STACK CFI 2fd6 .cfa: $rsp 8 +
+STACK CFI 2fe0 .cfa: $rsp 1616 +
+STACK CFI INIT 3010 cf .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 302b $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^ .cfa: $rsp 640 +
+STACK CFI 30da .cfa: $rsp 8 +
+STACK CFI INIT 30e0 5d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 30e2 $r12: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 30e6 $rbp: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 30eb $rbx: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 3127 .cfa: $rsp 24 +
+STACK CFI 312e .cfa: $rsp 16 +
+STACK CFI 3130 .cfa: $rsp 8 +
+STACK CFI 3138 .cfa: $rsp 32 +
+STACK CFI 3139 .cfa: $rsp 24 +
+STACK CFI 313a .cfa: $rsp 16 +
+STACK CFI 313c .cfa: $rsp 8 +
+STACK CFI INIT 3140 31 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 3141 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 315f .cfa: $rsp 8 +
+STACK CFI 3160 .cfa: $rsp 16 +
+STACK CFI 316c .cfa: $rsp 8 +
+STACK CFI INIT 3180 179 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 318a $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 3197 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^
+STACK CFI 31a8 $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ .cfa: $rsp 128 +
+STACK CFI 3270 .cfa: $rsp 8 +
+STACK CFI 3278 .cfa: $rsp 128 +
+STACK CFI INIT 3ad0 2f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 3ad1 $rbp: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 3ad5 $rbx: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 3ad9 .cfa: $rsp 32 +
+STACK CFI 3afc .cfa: $rsp 24 +
+STACK CFI 3afd .cfa: $rsp 16 +
+STACK CFI 3afe .cfa: $rsp 8 +
+STACK CFI INIT 3b00 2f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 3b01 $rbp: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 3b05 $rbx: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 3b09 .cfa: $rsp 32 +
+STACK CFI 3b2c .cfa: $rsp 24 +
+STACK CFI 3b2d .cfa: $rsp 16 +
+STACK CFI 3b2e .cfa: $rsp 8 +
+STACK CFI INIT 3300 336 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 3302 $r13: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 3304 $r12: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 3305 $rbp: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 3306 $rbx: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI 330d .cfa: $rsp 128 +
+STACK CFI 3465 .cfa: $rsp 40 +
+STACK CFI 3466 .cfa: $rsp 32 +
+STACK CFI 3467 .cfa: $rsp 24 +
+STACK CFI 3469 .cfa: $rsp 16 +
+STACK CFI 346b .cfa: $rsp 8 +
+STACK CFI 3470 .cfa: $rsp 128 +
+STACK CFI INIT 3b30 1ba .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 3b3a $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 3b58 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ .cfa: $rsp 80 +
+STACK CFI 3bc2 .cfa: $rsp 8 +
+STACK CFI 3bc8 .cfa: $rsp 80 +
+STACK CFI INIT 3640 31c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 3645 $r14: .cfa -24 + ^
+STACK CFI 3658 $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 3669 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ .cfa: $rsp 80 +
+STACK CFI 376f .cfa: $rsp 8 +
+STACK CFI 3770 .cfa: $rsp 80 +
+STACK CFI INIT 3960 167 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 396a $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI 397e $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ .cfa: $rsp 256 +
+STACK CFI 3a42 .cfa: $rsp 8 +
+STACK CFI 3a43 .cfa: $rsp 256 +
+STACK CFI INIT 1c2a 1a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 3cf0 7d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 3cfe $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^ .cfa: $rsp 32 +
+STACK CFI 3d4d .cfa: $rsp 8 +
+STACK CFI 3d4e .cfa: $rsp 32 +
+STACK CFI INIT 3d70 232 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 3d72 $r12: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 3d73 $rbp: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 3d74 $rbx: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 3d7b .cfa: $rsp 160 +
+STACK CFI 3ede .cfa: $rsp 32 +
+STACK CFI 3edf .cfa: $rsp 24 +
+STACK CFI 3ee0 .cfa: $rsp 16 +
+STACK CFI 3ee2 .cfa: $rsp 8 +
+STACK CFI 3ee3 .cfa: $rsp 160 +
+STACK CFI INIT 3fb0 85 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 3fb1 $rbp: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 3fb5 $rbx: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 3fb9 .cfa: $rsp 32 +
+STACK CFI 4010 .cfa: $rsp 24 +
+STACK CFI 4014 .cfa: $rsp 16 +
+STACK CFI 4015 .cfa: $rsp 8 +
+STACK CFI 4016 .cfa: $rsp 32 +
+STACK CFI INIT 4040 38 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 4047 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 4062 .cfa: $rsp 8 +
+STACK CFI 4068 .cfa: $rsp 16 +
+STACK CFI 4077 .cfa: $rsp 8 +
+STACK CFI INIT 1c44 27 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1c45 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 1c6a .cfa: $rsp 8 +
+STACK CFI INIT 4080 5d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 408e $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^ .cfa: $rsp 32 +
+STACK CFI 40b5 .cfa: $rsp 8 +
+STACK CFI 40c0 .cfa: $rsp 32 +
+STACK CFI INIT 1c6c 20 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1c74 .cfa: $rsp 16 +
+STACK CFI INIT 1c8c 20 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1c94 .cfa: $rsp 16 +
+STACK CFI INIT 40e0 1e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 40f9 .cfa: $rsp 16 +
+STACK CFI INIT 1cac 20 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1cb4 .cfa: $rsp 16 +
+STACK CFI INIT 1ccc 20 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1cd4 .cfa: $rsp 16 +
+STACK CFI INIT 7d00 153 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7d12 $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 7d2d $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ .cfa: $rsp 64 +
+STACK CFI 7d77 $r12: $r12 $r13: $r13 $r14: $r14 $r15: $r15 $rbp: $rbp $rbx: $rbx .cfa: $rsp 8 +
+STACK CFI 7d80 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^ .cfa: $rsp 64 +
+STACK CFI 7e50 $r12: $r12 $r13: $r13 $r14: $r14 $r15: $r15 $rbp: $rbp $rbx: $rbx .cfa: $rsp 8 +
+STACK CFI INIT 1cec 1ac .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1cee $r15: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 1cf5 $r14: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 1cf7 $r13: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 1cf9 $r12: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI 1d00 $rbp: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI 1d01 $rbx: .cfa -56 + ^ .cfa: $rsp 56 +
+STACK CFI 1d05 .cfa: $rsp 112 +
+STACK CFI 1e8d .cfa: $rsp 56 +
+STACK CFI 1e8e .cfa: $rsp 48 +
+STACK CFI 1e8f .cfa: $rsp 40 +
+STACK CFI 1e91 .cfa: $rsp 32 +
+STACK CFI 1e93 .cfa: $rsp 24 +
+STACK CFI 1e95 .cfa: $rsp 16 +
+STACK CFI 1e97 .cfa: $rsp 8 +
+STACK CFI INIT 1e98 3f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1e99 $rbp: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 1e9d $rbx: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 1ea7 .cfa: $rsp 288 +
+STACK CFI 1ed2 .cfa: $rsp 24 +
+STACK CFI 1ed5 .cfa: $rsp 16 +
+STACK CFI 1ed6 .cfa: $rsp 8 +
+STACK CFI INIT 7e60 248 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7e62 $r15: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 7e64 $r14: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 7e6a $r13: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 7e6c $r12: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI 7e6d $rbp: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI 7e71 $rbx: .cfa -56 + ^ .cfa: $rsp 56 +
+STACK CFI 7e78 .cfa: $rsp 64 +
+STACK CFI 7fd6 .cfa: $rsp 56 +
+STACK CFI 7fd7 .cfa: $rsp 48 +
+STACK CFI 7fd8 .cfa: $rsp 40 +
+STACK CFI 7fda .cfa: $rsp 32 +
+STACK CFI 7fdc .cfa: $rsp 24 +
+STACK CFI 7fde .cfa: $rsp 16 +
+STACK CFI 7fe5 .cfa: $rsp 8 +
+STACK CFI 7ff0 .cfa: $rsp 64 +
+STACK CFI 8052 .cfa: $rsp 56 +
+STACK CFI 8055 .cfa: $rsp 48 +
+STACK CFI 8056 .cfa: $rsp 40 +
+STACK CFI 8058 .cfa: $rsp 32 +
+STACK CFI 805a .cfa: $rsp 24 +
+STACK CFI 805c .cfa: $rsp 16 +
+STACK CFI 805e .cfa: $rsp 8 +
+STACK CFI 805f .cfa: $rsp 64 +
+STACK CFI INIT 80b0 22 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 80e0 22 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 8110 22 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 8140 22 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 8170 229 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 818e $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 819f $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ .cfa: $rsp 128 +
+STACK CFI 81e1 .cfa: $rsp 8 +
+STACK CFI 81e8 .cfa: $rsp 128 +
+STACK CFI INIT 83a0 357 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 83a5 $rbp: .cfa -48 + ^
+STACK CFI 83b7 $r12: .cfa -40 + ^ $r14: .cfa -24 + ^ $rbx: .cfa -56 + ^
+STACK CFI 83c8 $r13: .cfa -32 + ^ $r15: .cfa -16 + ^ .cfa: $rsp 128 +
+STACK CFI 8447 .cfa: $rsp 8 +
+STACK CFI 8450 .cfa: $rsp 128 +
+STACK CFI INIT 4100 15e5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 4102 $r15: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 4104 $r14: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 4106 $r13: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 410c $r12: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI 410d $rbp: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI 410e $rbx: .cfa -56 + ^ .cfa: $rsp 56 +
+STACK CFI 4118 .cfa: $rsp 3696 +
+STACK CFI 4339 .cfa: $rsp 56 +
+STACK CFI 433c .cfa: $rsp 48 +
+STACK CFI 433d .cfa: $rsp 40 +
+STACK CFI 433f .cfa: $rsp 32 +
+STACK CFI 4341 .cfa: $rsp 24 +
+STACK CFI 4343 .cfa: $rsp 16 +
+STACK CFI 4345 .cfa: $rsp 8 +
+STACK CFI 4350 .cfa: $rsp 3696 +
+STACK CFI INIT 8700 17f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8702 $r15: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 8706 $r14: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 8708 $r13: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 870a $r12: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI 870b $rbp: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI 870f $rbx: .cfa -56 + ^ .cfa: $rsp 56 +
+STACK CFI 8716 .cfa: $rsp 96 +
+STACK CFI 877b .cfa: $rsp 56 +
+STACK CFI 877c .cfa: $rsp 48 +
+STACK CFI 877d .cfa: $rsp 40 +
+STACK CFI 877f .cfa: $rsp 32 +
+STACK CFI 8781 .cfa: $rsp 24 +
+STACK CFI 8783 .cfa: $rsp 16 +
+STACK CFI 8785 .cfa: $rsp 8 +
+STACK CFI 8790 .cfa: $rsp 96 +
+STACK CFI INIT 8880 3cd .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8882 $r15: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 8884 $r14: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 8886 $r13: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 8888 $r12: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI 8889 $rbp: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI 888d $rbx: .cfa -56 + ^ .cfa: $rsp 56 +
+STACK CFI 8891 .cfa: $rsp 128 +
+STACK CFI 8a9d .cfa: $rsp 56 +
+STACK CFI 8a9e .cfa: $rsp 48 +
+STACK CFI 8a9f .cfa: $rsp 40 +
+STACK CFI 8aa1 .cfa: $rsp 32 +
+STACK CFI 8aa3 .cfa: $rsp 24 +
+STACK CFI 8aa5 .cfa: $rsp 16 +
+STACK CFI 8aa7 .cfa: $rsp 8 +
+STACK CFI 8ab0 .cfa: $rsp 128 +
+STACK CFI 8b19 .cfa: $rsp 56 +
+STACK CFI 8b21 .cfa: $rsp 48 +
+STACK CFI 8b22 .cfa: $rsp 40 +
+STACK CFI 8b24 .cfa: $rsp 32 +
+STACK CFI 8b26 .cfa: $rsp 24 +
+STACK CFI 8b28 .cfa: $rsp 16 +
+STACK CFI 8b2a .cfa: $rsp 8 +
+STACK CFI 8b30 .cfa: $rsp 128 +
+STACK CFI INIT 56f0 1d12 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 56f2 $r15: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 56fd $r14: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 5702 $r13: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 5704 $r12: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI 5705 $rbp: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI 5706 $rbx: .cfa -56 + ^ .cfa: $rsp 56 +
+STACK CFI 570d .cfa: $rsp 2832 +
+STACK CFI 5842 .cfa: $rsp 56 +
+STACK CFI 5845 .cfa: $rsp 48 +
+STACK CFI 5846 .cfa: $rsp 40 +
+STACK CFI 5848 .cfa: $rsp 32 +
+STACK CFI 584a .cfa: $rsp 24 +
+STACK CFI 584c .cfa: $rsp 16 +
+STACK CFI 584e .cfa: $rsp 8 +
+STACK CFI 5850 .cfa: $rsp 2832 +
+STACK CFI INIT 7410 1ac .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7412 $r12: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 7416 $rbp: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 741a $rbx: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 7421 .cfa: $rsp 160 +
+STACK CFI 7505 .cfa: $rsp 32 +
+STACK CFI 7508 .cfa: $rsp 24 +
+STACK CFI 7509 .cfa: $rsp 16 +
+STACK CFI 750b .cfa: $rsp 8 +
+STACK CFI 7510 .cfa: $rsp 160 +
+STACK CFI INIT 75c0 2ce .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 75ca $r12: .cfa -40 + ^ $rbx: .cfa -56 + ^
+STACK CFI 75eb $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ .cfa: $rsp 368 +
+STACK CFI 7670 .cfa: $rsp 8 +
+STACK CFI 7678 .cfa: $rsp 368 +
+STACK CFI INIT 7890 2b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7894 .cfa: $rsp 32 +
+STACK CFI 78ba .cfa: $rsp 8 +
+STACK CFI INIT 78c0 2c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 78c4 .cfa: $rsp 32 +
+STACK CFI 78eb .cfa: $rsp 8 +
+STACK CFI INIT 78f0 2a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 78f4 .cfa: $rsp 32 +
+STACK CFI 7919 .cfa: $rsp 8 +
+STACK CFI INIT 7920 2b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7924 .cfa: $rsp 32 +
+STACK CFI 794a .cfa: $rsp 8 +
+STACK CFI INIT 7950 9a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7966 $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^ .cfa: $rsp 96 +
+STACK CFI 79ce .cfa: $rsp 8 +
+STACK CFI 79cf .cfa: $rsp 96 +
+STACK CFI INIT 79f0 9b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7a06 $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^ .cfa: $rsp 96 +
+STACK CFI 7a6f .cfa: $rsp 8 +
+STACK CFI 7a70 .cfa: $rsp 96 +
+STACK CFI INIT 7a90 26a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7a92 $r12: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 7a96 $rbp: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 7a97 $rbx: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 7aa0 .cfa: $rsp 368 +
+STACK CFI 7c0a .cfa: $rsp 32 +
+STACK CFI 7c0d .cfa: $rsp 24 +
+STACK CFI 7c0e .cfa: $rsp 16 +
+STACK CFI 7c10 .cfa: $rsp 8 +
+STACK CFI 7c18 .cfa: $rsp 368 +
+STACK CFI INIT 1ed8 20 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1ee0 .cfa: $rsp 16 +
+STACK CFI INIT 1ef8 20 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1f00 .cfa: $rsp 16 +
+STACK CFI INIT 8c50 1a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 8c70 87 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8c7e $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^ .cfa: $rsp 32 +
+STACK CFI 8cc5 .cfa: $rsp 8 +
+STACK CFI 8cd0 .cfa: $rsp 32 +
+STACK CFI INIT 8d00 2c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8d14 .cfa: $rsp 16 +
+STACK CFI INIT 8d30 78 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8d3a $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 8d46 $r12: .cfa -16 + ^ .cfa: $rsp 32 +
+STACK CFI 8d9b .cfa: $rsp 8 +
+STACK CFI 8da0 .cfa: $rsp 32 +
+STACK CFI INIT 8db0 15 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 8dd0 d6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8de8 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^ .cfa: $rsp 48 +
+STACK CFI 8e33 .cfa: $rsp 8 +
+STACK CFI 8e38 .cfa: $rsp 48 +
+STACK CFI INIT 8eb0 fa .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8eb1 $rbp: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 8eb5 $rbx: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 8eb9 .cfa: $rsp 32 +
+STACK CFI 8eeb .cfa: $rsp 24 +
+STACK CFI 8eec .cfa: $rsp 16 +
+STACK CFI 8eed .cfa: $rsp 8 +
+STACK CFI 8ef0 .cfa: $rsp 32 +
+STACK CFI INIT 8fb0 a8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8fb2 $r14: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 8fb4 $r13: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 8fb6 $r12: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 8fb7 $rbp: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI 8fba $rbx: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI 8fbe .cfa: $rsp 64 +
+STACK CFI 9043 .cfa: $rsp 48 +
+STACK CFI 9044 .cfa: $rsp 40 +
+STACK CFI 9045 .cfa: $rsp 32 +
+STACK CFI 9047 .cfa: $rsp 24 +
+STACK CFI 9049 .cfa: $rsp 16 +
+STACK CFI 904b .cfa: $rsp 8 +
+STACK CFI 904c .cfa: $rsp 64 +
+STACK CFI INIT 9060 aa .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9062 $r14: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 9064 $r13: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 9066 $r12: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 9067 $rbp: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI 9068 $rbx: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI 906e .cfa: $rsp 64 +
+STACK CFI 90f5 .cfa: $rsp 48 +
+STACK CFI 90f6 .cfa: $rsp 40 +
+STACK CFI 90f7 .cfa: $rsp 32 +
+STACK CFI 90f9 .cfa: $rsp 24 +
+STACK CFI 90fb .cfa: $rsp 16 +
+STACK CFI 90fd .cfa: $rsp 8 +
+STACK CFI 90fe .cfa: $rsp 64 +
+STACK CFI INIT 9110 41 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9111 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 9131 .cfa: $rsp 8 +
+STACK CFI 9132 .cfa: $rsp 16 +
+STACK CFI INIT 9160 88 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9164 .cfa: $rsp 16 +
+STACK CFI 9187 .cfa: $rsp 8 +
+STACK CFI 918c .cfa: $rsp 16 +
+STACK CFI INIT 91f0 c4 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 91f1 $rbp: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 91f5 $rbx: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 91f9 .cfa: $rsp 64 +
+STACK CFI 9231 .cfa: $rsp 24 +
+STACK CFI 9234 .cfa: $rsp 16 +
+STACK CFI 9235 .cfa: $rsp 8 +
+STACK CFI 9240 .cfa: $rsp 64 +
+STACK CFI 926e .cfa: $rsp 24 +
+STACK CFI 9274 .cfa: $rsp 16 +
+STACK CFI 9275 .cfa: $rsp 8 +
+STACK CFI 9276 .cfa: $rsp 64 +
+STACK CFI INIT 92e0 22 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 9310 1e8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9312 $r14: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 9314 $r13: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 9316 $r12: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 931a $rbp: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI 931b $rbx: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI 931f .cfa: $rsp 112 +
+STACK CFI 93d3 .cfa: $rsp 48 +
+STACK CFI 93d6 .cfa: $rsp 40 +
+STACK CFI 93d7 .cfa: $rsp 32 +
+STACK CFI 93d9 .cfa: $rsp 24 +
+STACK CFI 93db .cfa: $rsp 16 +
+STACK CFI 93dd .cfa: $rsp 8 +
+STACK CFI 93e0 .cfa: $rsp 112 +
+STACK CFI INIT 92c0 5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 9500 1e8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9502 $r14: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 9504 $r13: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 9506 $r12: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 950a $rbp: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI 950b $rbx: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI 950f .cfa: $rsp 112 +
+STACK CFI 95c4 .cfa: $rsp 48 +
+STACK CFI 95c7 .cfa: $rsp 40 +
+STACK CFI 95c8 .cfa: $rsp 32 +
+STACK CFI 95ca .cfa: $rsp 24 +
+STACK CFI 95cc .cfa: $rsp 16 +
+STACK CFI 95ce .cfa: $rsp 8 +
+STACK CFI 95d0 .cfa: $rsp 112 +
+STACK CFI INIT 92d0 5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 96f0 78 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 96f2 $r13: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 96fa $r12: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 96ff $rbp: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 9703 $rbx: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI 970b .cfa: $rsp 64 +
+STACK CFI 974b .cfa: $rsp 40 +
+STACK CFI 974e .cfa: $rsp 32 +
+STACK CFI 974f .cfa: $rsp 24 +
+STACK CFI 9751 .cfa: $rsp 16 +
+STACK CFI 9753 .cfa: $rsp 8 +
+STACK CFI 9758 .cfa: $rsp 64 +
+STACK CFI 975f .cfa: $rsp 40 +
+STACK CFI 9760 .cfa: $rsp 32 +
+STACK CFI 9763 .cfa: $rsp 24 +
+STACK CFI 9765 .cfa: $rsp 16 +
+STACK CFI 9767 .cfa: $rsp 8 +
+STACK CFI INIT 9770 56 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9771 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 977f .cfa: $rsp 48 +
+STACK CFI 97c4 .cfa: $rsp 16 +
+STACK CFI 97c5 .cfa: $rsp 8 +
+STACK CFI INIT 97d0 147 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 97d2 $r14: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 97d4 $r13: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 97d6 $r12: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 97da $rbp: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI 97de $rbx: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI 97e2 .cfa: $rsp 80 +
+STACK CFI 9863 .cfa: $rsp 48 +
+STACK CFI 9867 .cfa: $rsp 40 +
+STACK CFI 9868 .cfa: $rsp 32 +
+STACK CFI 986a .cfa: $rsp 24 +
+STACK CFI 986c .cfa: $rsp 16 +
+STACK CFI 986e .cfa: $rsp 8 +
+STACK CFI 9870 .cfa: $rsp 80 +
+STACK CFI INIT 9b00 295 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9b0a $r12: .cfa -40 + ^ $rbx: .cfa -56 + ^
+STACK CFI 9b25 $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ .cfa: $rsp 80 +
+STACK CFI 9bd6 .cfa: $rsp 8 +
+STACK CFI 9be0 .cfa: $rsp 80 +
+STACK CFI INIT 9920 e3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9921 $rbp: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 9925 $rbx: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 992c .cfa: $rsp 64 +
+STACK CFI 99c5 .cfa: $rsp 24 +
+STACK CFI 99c6 .cfa: $rsp 16 +
+STACK CFI 99c7 .cfa: $rsp 8 +
+STACK CFI 99d0 .cfa: $rsp 64 +
+STACK CFI 99e4 .cfa: $rsp 24 +
+STACK CFI 99e5 .cfa: $rsp 16 +
+STACK CFI 99e6 .cfa: $rsp 8 +
+STACK CFI 99f0 .cfa: $rsp 64 +
+STACK CFI INIT 9a10 e3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9a11 $rbp: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 9a15 $rbx: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 9a1c .cfa: $rsp 64 +
+STACK CFI 9ab7 .cfa: $rsp 24 +
+STACK CFI 9ab8 .cfa: $rsp 16 +
+STACK CFI 9ab9 .cfa: $rsp 8 +
+STACK CFI 9ac0 .cfa: $rsp 64 +
+STACK CFI 9ad4 .cfa: $rsp 24 +
+STACK CFI 9ad5 .cfa: $rsp 16 +
+STACK CFI 9ad6 .cfa: $rsp 8 +
+STACK CFI 9ae0 .cfa: $rsp 64 +
+STACK CFI INIT 9ed0 16 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9ed4 .cfa: $rsp 16 +
+STACK CFI 9edf .cfa: $rsp 8 +
+STACK CFI INIT 9da0 73 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9da1 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 9e12 .cfa: $rsp 8 +
+STACK CFI INIT 9e20 ad .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9e21 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 9e25 .cfa: $rsp 32 +
+STACK CFI 9eaa .cfa: $rsp 16 +
+STACK CFI 9ead .cfa: $rsp 8 +
+STACK CFI 9eae .cfa: $rsp 32 +
+STACK CFI INIT 9ef0 1e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 9f10 33 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 9f50 56 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 9fb0 54 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT a010 36 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT a050 43 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT a0a0 42 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT a0f0 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT a120 32 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT a160 64 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT a1d0 3a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT a210 1e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT a230 38 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT a270 3e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a271 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI a28d .cfa: $rsp 8 +
+STACK CFI a290 .cfa: $rsp 16 +
+STACK CFI a2ad .cfa: $rsp 8 +
+STACK CFI INIT a2b0 4e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT a300 1aa .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a302 $r14: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI a311 $r13: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI a319 $r12: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI a31f $rbp: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI a320 $rbx: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI a327 .cfa: $rsp 208 +
+STACK CFI a443 .cfa: $rsp 48 +
+STACK CFI a449 .cfa: $rsp 40 +
+STACK CFI a44a .cfa: $rsp 32 +
+STACK CFI a44c .cfa: $rsp 24 +
+STACK CFI a44e .cfa: $rsp 16 +
+STACK CFI a450 .cfa: $rsp 8 +
+STACK CFI a458 .cfa: $rsp 208 +
+STACK CFI a49f .cfa: $rsp 48 +
+STACK CFI a4a2 .cfa: $rsp 40 +
+STACK CFI a4a3 .cfa: $rsp 32 +
+STACK CFI a4a5 .cfa: $rsp 24 +
+STACK CFI a4a7 .cfa: $rsp 16 +
+STACK CFI a4a9 .cfa: $rsp 8 +
+STACK CFI INIT a4b0 1c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a4b3 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI a4c4 .cfa: $rsp 8 +
+STACK CFI a4c8 .cfa: $rsp 16 +
+STACK CFI a4cb .cfa: $rsp 8 +
+STACK CFI INIT 1f18 20 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1f20 .cfa: $rsp 16 +
+STACK CFI INIT a4d0 67 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a4d2 $r13: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI a4d8 $r12: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI a4df $rbp: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI a4e0 $rbx: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI a4e4 .cfa: $rsp 48 +
+STACK CFI a530 .cfa: $rsp 40 +
+STACK CFI a531 .cfa: $rsp 32 +
+STACK CFI a532 .cfa: $rsp 24 +
+STACK CFI a534 .cfa: $rsp 16 +
+STACK CFI a536 .cfa: $rsp 8 +
+STACK CFI INIT a540 12 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a541 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI a54d .cfa: $rsp 8 +
+STACK CFI INIT a560 105 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a562 $r12: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI a56d $rbp: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI a56e $rbx: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI a575 .cfa: $rsp 320 +
+STACK CFI a593 .cfa: $rsp 32 +
+STACK CFI a596 .cfa: $rsp 24 +
+STACK CFI a597 .cfa: $rsp 16 +
+STACK CFI a599 .cfa: $rsp 8 +
+STACK CFI a5a0 .cfa: $rsp 320 +
+STACK CFI a618 .cfa: $rsp 32 +
+STACK CFI a61b .cfa: $rsp 24 +
+STACK CFI a61c .cfa: $rsp 16 +
+STACK CFI a61e .cfa: $rsp 8 +
+STACK CFI a620 .cfa: $rsp 320 +
+STACK CFI INIT a670 32 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a671 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI a680 .cfa: $rsp 8 +
+STACK CFI a688 .cfa: $rsp 16 +
+STACK CFI a69c .cfa: $rsp 8 +
+STACK CFI INIT a6b0 4c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT a700 94 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a70a $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI a717 $r12: .cfa -32 + ^ $r13: .cfa -24 + ^
+STACK CFI a723 $r14: .cfa -16 + ^ .cfa: $rsp 48 +
+STACK CFI a78c .cfa: $rsp 8 +
+STACK CFI a790 .cfa: $rsp 48 +
+STACK CFI INIT a7a0 1fd .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a7aa $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI a7c1 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ .cfa: $rsp 848 +
+STACK CFI a7f8 .cfa: $rsp 8 +
+STACK CFI a800 .cfa: $rsp 848 +
+STACK CFI INIT a9a0 35d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a9aa $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI a9cb $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ .cfa: $rsp 368 +
+STACK CFI aa56 .cfa: $rsp 8 +
+STACK CFI aa60 .cfa: $rsp 368 +
+STACK CFI INIT b670 221 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI b68e $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI b69f $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ .cfa: $rsp 128 +
+STACK CFI b6e1 .cfa: $rsp 8 +
+STACK CFI b6e8 .cfa: $rsp 128 +
+STACK CFI INIT b8a0 229 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI b8be $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI b8cf $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ .cfa: $rsp 128 +
+STACK CFI b911 .cfa: $rsp 8 +
+STACK CFI b918 .cfa: $rsp 128 +
+STACK CFI INIT bad0 229 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI baee $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI baff $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ .cfa: $rsp 128 +
+STACK CFI bb41 .cfa: $rsp 8 +
+STACK CFI bb48 .cfa: $rsp 128 +
+STACK CFI INIT bd00 320 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI bd0a $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI bd28 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ .cfa: $rsp 128 +
+STACK CFI bd95 .cfa: $rsp 8 +
+STACK CFI bda0 .cfa: $rsp 128 +
+STACK CFI INIT c020 460 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c022 $r15: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI c024 $r14: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI c026 $r13: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI c028 $r12: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI c029 $rbp: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI c02d $rbx: .cfa -56 + ^ .cfa: $rsp 56 +
+STACK CFI c031 .cfa: $rsp 128 +
+STACK CFI c0d8 .cfa: $rsp 56 +
+STACK CFI c0d9 .cfa: $rsp 48 +
+STACK CFI c0da .cfa: $rsp 40 +
+STACK CFI c0dc .cfa: $rsp 32 +
+STACK CFI c0de .cfa: $rsp 24 +
+STACK CFI c0e0 .cfa: $rsp 16 +
+STACK CFI c0e2 .cfa: $rsp 8 +
+STACK CFI c0e8 .cfa: $rsp 128 +
+STACK CFI c168 .cfa: $rsp 56 +
+STACK CFI c169 .cfa: $rsp 48 +
+STACK CFI c16a .cfa: $rsp 40 +
+STACK CFI c16c .cfa: $rsp 32 +
+STACK CFI c16e .cfa: $rsp 24 +
+STACK CFI c170 .cfa: $rsp 16 +
+STACK CFI c172 .cfa: $rsp 8 +
+STACK CFI c178 .cfa: $rsp 128 +
+STACK CFI c368 .cfa: $rsp 56 +
+STACK CFI c369 .cfa: $rsp 48 +
+STACK CFI c36a .cfa: $rsp 40 +
+STACK CFI c36c .cfa: $rsp 32 +
+STACK CFI c36e .cfa: $rsp 24 +
+STACK CFI c370 .cfa: $rsp 16 +
+STACK CFI c372 .cfa: $rsp 8 +
+STACK CFI c378 .cfa: $rsp 128 +
+STACK CFI INIT ad00 1a9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ad0a $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI ad24 $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^ .cfa: $rsp 64 +
+STACK CFI ae4e .cfa: $rsp 8 +
+STACK CFI ae50 .cfa: $rsp 64 +
+STACK CFI INIT c480 43f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c482 $r15: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI c484 $r14: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI c486 $r13: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI c488 $r12: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI c48c $rbp: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI c48d $rbx: .cfa -56 + ^ .cfa: $rsp 56 +
+STACK CFI c491 .cfa: $rsp 128 +
+STACK CFI c550 .cfa: $rsp 56 +
+STACK CFI c551 .cfa: $rsp 48 +
+STACK CFI c552 .cfa: $rsp 40 +
+STACK CFI c554 .cfa: $rsp 32 +
+STACK CFI c556 .cfa: $rsp 24 +
+STACK CFI c558 .cfa: $rsp 16 +
+STACK CFI c55a .cfa: $rsp 8 +
+STACK CFI c560 .cfa: $rsp 128 +
+STACK CFI c5d0 .cfa: $rsp 56 +
+STACK CFI c5d1 .cfa: $rsp 48 +
+STACK CFI c5d2 .cfa: $rsp 40 +
+STACK CFI c5d4 .cfa: $rsp 32 +
+STACK CFI c5d6 .cfa: $rsp 24 +
+STACK CFI c5d8 .cfa: $rsp 16 +
+STACK CFI c5da .cfa: $rsp 8 +
+STACK CFI c5e0 .cfa: $rsp 128 +
+STACK CFI c79d .cfa: $rsp 56 +
+STACK CFI c79e .cfa: $rsp 48 +
+STACK CFI c79f .cfa: $rsp 40 +
+STACK CFI c7a1 .cfa: $rsp 32 +
+STACK CFI c7a3 .cfa: $rsp 24 +
+STACK CFI c7a5 .cfa: $rsp 16 +
+STACK CFI c7a7 .cfa: $rsp 8 +
+STACK CFI c7b0 .cfa: $rsp 128 +
+STACK CFI INIT aeb0 7b2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI aeb2 $r15: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI aebe $r14: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI aec0 $r13: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI aec2 $r12: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI aec3 $rbp: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI aec4 $rbx: .cfa -56 + ^ .cfa: $rsp 56 +
+STACK CFI aecb .cfa: $rsp 464 +
+STACK CFI aeec .cfa: $rsp 56 +
+STACK CFI aeed .cfa: $rsp 48 +
+STACK CFI aeee .cfa: $rsp 40 +
+STACK CFI aef0 .cfa: $rsp 32 +
+STACK CFI aef2 .cfa: $rsp 24 +
+STACK CFI aef4 .cfa: $rsp 16 +
+STACK CFI aef6 .cfa: $rsp 8 +
+STACK CFI aef7 .cfa: $rsp 464 +
+STACK CFI INIT c8c0 3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT d5a0 13 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT c8d0 d8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c8e6 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI c8f7 $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ .cfa: $rsp 64 +
+STACK CFI c940 .cfa: $rsp 8 +
+STACK CFI c948 .cfa: $rsp 64 +
+STACK CFI INIT c9b0 ac .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c9b2 $r15: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI c9b7 $r14: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI c9b9 $r13: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI c9bb $r12: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI c9bc $rbp: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI c9bd $rbx: .cfa -56 + ^ .cfa: $rsp 56 +
+STACK CFI c9c1 .cfa: $rsp 96 +
+STACK CFI ca34 .cfa: $rsp 56 +
+STACK CFI ca35 .cfa: $rsp 48 +
+STACK CFI ca36 .cfa: $rsp 40 +
+STACK CFI ca38 .cfa: $rsp 32 +
+STACK CFI ca3a .cfa: $rsp 24 +
+STACK CFI ca3c .cfa: $rsp 16 +
+STACK CFI ca3e .cfa: $rsp 8 +
+STACK CFI ca40 .cfa: $rsp 96 +
+STACK CFI INIT ca60 c2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ca62 $r13: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI ca67 $r12: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI ca68 $rbp: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI ca6c $rbx: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI ca70 .cfa: $rsp 64 +
+STACK CFI caef .cfa: $rsp 40 +
+STACK CFI caf3 .cfa: $rsp 32 +
+STACK CFI caf4 .cfa: $rsp 24 +
+STACK CFI caf6 .cfa: $rsp 16 +
+STACK CFI caf8 .cfa: $rsp 8 +
+STACK CFI cb00 .cfa: $rsp 64 +
+STACK CFI INIT d5c0 20 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d5c8 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI d5db .cfa: $rsp 8 +
+STACK CFI INIT cb30 49f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI cb32 $r15: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI cb34 $r14: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI cb36 $r13: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI cb38 $r12: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI cb3c $rbp: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI cb3d $rbx: .cfa -56 + ^ .cfa: $rsp 56 +
+STACK CFI cb47 .cfa: $rsp 336 +
+STACK CFI cb8f .cfa: $rsp 56 +
+STACK CFI cb90 .cfa: $rsp 48 +
+STACK CFI cb91 .cfa: $rsp 40 +
+STACK CFI cb93 .cfa: $rsp 32 +
+STACK CFI cb95 .cfa: $rsp 24 +
+STACK CFI cb97 .cfa: $rsp 16 +
+STACK CFI cb99 .cfa: $rsp 8 +
+STACK CFI cb9a .cfa: $rsp 336 +
+STACK CFI INIT cfd0 20 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI cfd1 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI cfef .cfa: $rsp 8 +
+STACK CFI INIT d5e0 306 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d5e5 $rbx: .cfa -56 + ^
+STACK CFI d5f7 $r12: .cfa -40 + ^ $r14: .cfa -24 + ^ $rbp: .cfa -48 + ^
+STACK CFI d608 $r13: .cfa -32 + ^ $r15: .cfa -16 + ^ .cfa: $rsp 128 +
+STACK CFI d66e .cfa: $rsp 8 +
+STACK CFI d670 .cfa: $rsp 128 +
+STACK CFI INIT cff0 36d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI cffa $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI d01f $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ .cfa: $rsp 352 +
+STACK CFI d06d .cfa: $rsp 8 +
+STACK CFI d070 .cfa: $rsp 352 +
+STACK CFI INIT d8f0 458 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d8f2 $r15: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI d8f4 $r14: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI d8f6 $r13: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI d8f8 $r12: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI d8f9 $rbp: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI d8fd $rbx: .cfa -56 + ^ .cfa: $rsp 56 +
+STACK CFI d901 .cfa: $rsp 128 +
+STACK CFI d9a8 .cfa: $rsp 56 +
+STACK CFI d9a9 .cfa: $rsp 48 +
+STACK CFI d9aa .cfa: $rsp 40 +
+STACK CFI d9ac .cfa: $rsp 32 +
+STACK CFI d9ae .cfa: $rsp 24 +
+STACK CFI d9b0 .cfa: $rsp 16 +
+STACK CFI d9b2 .cfa: $rsp 8 +
+STACK CFI d9b8 .cfa: $rsp 128 +
+STACK CFI da30 .cfa: $rsp 56 +
+STACK CFI da31 .cfa: $rsp 48 +
+STACK CFI da32 .cfa: $rsp 40 +
+STACK CFI da34 .cfa: $rsp 32 +
+STACK CFI da36 .cfa: $rsp 24 +
+STACK CFI da38 .cfa: $rsp 16 +
+STACK CFI da3a .cfa: $rsp 8 +
+STACK CFI da40 .cfa: $rsp 128 +
+STACK CFI dc2e .cfa: $rsp 56 +
+STACK CFI dc2f .cfa: $rsp 48 +
+STACK CFI dc30 .cfa: $rsp 40 +
+STACK CFI dc32 .cfa: $rsp 32 +
+STACK CFI dc34 .cfa: $rsp 24 +
+STACK CFI dc36 .cfa: $rsp 16 +
+STACK CFI dc38 .cfa: $rsp 8 +
+STACK CFI dc40 .cfa: $rsp 128 +
+STACK CFI INIT d360 235 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d362 $r15: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI d369 $r14: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI d36b $r13: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI d36d $r12: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI d371 $rbp: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI d372 $rbx: .cfa -56 + ^ .cfa: $rsp 56 +
+STACK CFI d379 .cfa: $rsp 320 +
+STACK CFI d4f4 .cfa: $rsp 56 +
+STACK CFI d4f5 .cfa: $rsp 48 +
+STACK CFI d4f6 .cfa: $rsp 40 +
+STACK CFI d4f8 .cfa: $rsp 32 +
+STACK CFI d4fa .cfa: $rsp 24 +
+STACK CFI d4fc .cfa: $rsp 16 +
+STACK CFI d4fe .cfa: $rsp 8 +
+STACK CFI d500 .cfa: $rsp 320 +
+STACK CFI INIT dd50 e3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT de40 fe .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI de44 $rbp: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI de48 $rbx: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI dec7 .cfa: $rsp 16 +
+STACK CFI dec8 .cfa: $rsp 8 +
+STACK CFI ded0 .cfa: $rsp 24 +
+STACK CFI df2b .cfa: $rsp 16 +
+STACK CFI df2c .cfa: $rsp 8 +
+STACK CFI df2d .cfa: $rsp 24 +
+STACK CFI INIT df40 e6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI df51 $r12: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI df52 $rbp: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI df53 $rbx: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI dfc8 $rbx: $rbx .cfa: $rsp 24 +
+STACK CFI dfc9 $rbp: $rbp .cfa: $rsp 16 +
+STACK CFI dfd6 $r12: $r12 .cfa: $rsp 8 +
+STACK CFI dfe0 $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI dfeb $rbx: $rbx .cfa: $rsp 24 +
+STACK CFI dfec $rbp: $rbp .cfa: $rsp 16 +
+STACK CFI dff9 $r12: $r12 .cfa: $rsp 8 +
+STACK CFI e000 $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI e001 $rbx: $rbx .cfa: $rsp 24 +
+STACK CFI e002 $rbp: $rbp .cfa: $rsp 16 +
+STACK CFI e00c $r12: $r12 .cfa: $rsp 8 +
+STACK CFI e00d $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI e00e $rbx: $rbx .cfa: $rsp 24 +
+STACK CFI e00f $rbp: $rbp .cfa: $rsp 16 +
+STACK CFI e01c $r12: $r12 .cfa: $rsp 8 +
+STACK CFI INIT e030 216 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e032 $r13: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI e037 $r12: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI e03b $rbp: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI e03f $rbx: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI e0d6 .cfa: $rsp 32 +
+STACK CFI e0e2 .cfa: $rsp 24 +
+STACK CFI e0e4 .cfa: $rsp 16 +
+STACK CFI e0e6 .cfa: $rsp 8 +
+STACK CFI e0f0 .cfa: $rsp 40 +
+STACK CFI e1db .cfa: $rsp 32 +
+STACK CFI e1e4 .cfa: $rsp 24 +
+STACK CFI e1e6 .cfa: $rsp 16 +
+STACK CFI e1e8 .cfa: $rsp 8 +
+STACK CFI e1f0 .cfa: $rsp 40 +
+STACK CFI e1fb .cfa: $rsp 32 +
+STACK CFI e207 .cfa: $rsp 24 +
+STACK CFI e209 .cfa: $rsp 16 +
+STACK CFI e20b .cfa: $rsp 8 +
+STACK CFI e20c .cfa: $rsp 40 +
+STACK CFI e214 .cfa: $rsp 32 +
+STACK CFI e223 .cfa: $rsp 24 +
+STACK CFI e225 .cfa: $rsp 16 +
+STACK CFI e227 .cfa: $rsp 8 +
+STACK CFI e228 .cfa: $rsp 40 +
+STACK CFI INIT e250 2b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT e280 265 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e282 $r15: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI e284 $r14: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI e286 $r13: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI e288 $r12: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI e289 $rbp: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI e28a $rbx: .cfa -56 + ^ .cfa: $rsp 56 +
+STACK CFI e28e .cfa: $rsp 96 +
+STACK CFI e3e3 .cfa: $rsp 56 +
+STACK CFI e3e4 .cfa: $rsp 48 +
+STACK CFI e3e5 .cfa: $rsp 40 +
+STACK CFI e3e7 .cfa: $rsp 32 +
+STACK CFI e3e9 .cfa: $rsp 24 +
+STACK CFI e3eb .cfa: $rsp 16 +
+STACK CFI e3ed .cfa: $rsp 8 +
+STACK CFI e3f0 .cfa: $rsp 96 +
+STACK CFI INIT e4f0 1c0 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e4f2 $r14: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI e4f9 $r13: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI e4fe $r12: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI e4ff $rbp: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI e503 $rbx: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI e638 .cfa: $rsp 40 +
+STACK CFI e63f .cfa: $rsp 32 +
+STACK CFI e641 .cfa: $rsp 24 +
+STACK CFI e643 .cfa: $rsp 16 +
+STACK CFI e645 .cfa: $rsp 8 +
+STACK CFI e650 .cfa: $rsp 48 +
+STACK CFI e661 .cfa: $rsp 40 +
+STACK CFI e66d .cfa: $rsp 32 +
+STACK CFI e66f .cfa: $rsp 24 +
+STACK CFI e671 .cfa: $rsp 16 +
+STACK CFI e673 .cfa: $rsp 8 +
+STACK CFI e674 .cfa: $rsp 48 +
+STACK CFI e67c .cfa: $rsp 40 +
+STACK CFI e68b .cfa: $rsp 32 +
+STACK CFI e68d .cfa: $rsp 24 +
+STACK CFI e68f .cfa: $rsp 16 +
+STACK CFI e691 .cfa: $rsp 8 +
+STACK CFI e692 .cfa: $rsp 48 +
+STACK CFI INIT e6b0 29f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e6b2 $r15: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI e6b4 $r14: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI e6b6 $r13: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI e6b8 $r12: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI e6b9 $rbp: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI e6ba $rbx: .cfa -56 + ^ .cfa: $rsp 56 +
+STACK CFI e6be .cfa: $rsp 104 +
+STACK CFI e85e .cfa: $rsp 56 +
+STACK CFI e85f .cfa: $rsp 48 +
+STACK CFI e860 .cfa: $rsp 40 +
+STACK CFI e862 .cfa: $rsp 32 +
+STACK CFI e864 .cfa: $rsp 24 +
+STACK CFI e866 .cfa: $rsp 16 +
+STACK CFI e868 .cfa: $rsp 8 +
+STACK CFI e870 .cfa: $rsp 104 +
+STACK CFI INIT e950 a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT e960 1ee .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e962 $r12: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI e966 $rbp: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI e967 $rbx: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI e973 .cfa: $rsp 48 +
+STACK CFI ea4b .cfa: $rsp 32 +
+STACK CFI ea4c .cfa: $rsp 24 +
+STACK CFI ea4d .cfa: $rsp 16 +
+STACK CFI ea4f .cfa: $rsp 8 +
+STACK CFI ea50 .cfa: $rsp 48 +
+STACK CFI INIT eb50 59 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI eb51 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI eb5b .cfa: $rsp 48 +
+STACK CFI eb8e .cfa: $rsp 16 +
+STACK CFI eb8f .cfa: $rsp 8 +
+STACK CFI eb90 .cfa: $rsp 48 +
+STACK CFI INIT ebb0 e5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ebb1 $rbp: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI ebb2 $rbx: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI ec7c .cfa: $rsp 16 +
+STACK CFI ec81 .cfa: $rsp 8 +
+STACK CFI ec82 .cfa: $rsp 24 +
+STACK CFI ec8f .cfa: $rsp 16 +
+STACK CFI ec94 .cfa: $rsp 8 +
+STACK CFI INIT eca0 10 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ecb0 56 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ecba $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI ecc1 .cfa: $rsp 32 +
+STACK CFI ed05 .cfa: $rsp 8 +
+STACK CFI INIT ed10 193 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ed1a $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI ed26 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI ed30 .cfa: $rsp 192 +
+STACK CFI ed85 .cfa: $rsp 8 +
+STACK CFI ed90 .cfa: $rsp 192 +
+STACK CFI INIT eeb0 14 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT eed0 5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT eee0 3a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI eee1 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI eeff .cfa: $rsp 8 +
+STACK CFI ef00 .cfa: $rsp 16 +
+STACK CFI ef15 .cfa: $rsp 8 +
+STACK CFI ef16 .cfa: $rsp 16 +
+STACK CFI ef19 .cfa: $rsp 8 +
+STACK CFI INIT ef20 1f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ef2b .cfa: $rsp 16 +
+STACK CFI ef3e .cfa: $rsp 8 +
+STACK CFI INIT ef40 5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ef50 466 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ef5a $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI ef75 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ .cfa: $rsp 112 +
+STACK CFI efdc .cfa: $rsp 8 +
+STACK CFI efe0 .cfa: $rsp 112 +
+STACK CFI INIT f3c0 29c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f3ca $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI f3e0 $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^ .cfa: $rsp 48 +
+STACK CFI f43b .cfa: $rsp 8 +
+STACK CFI f440 .cfa: $rsp 48 +
+STACK CFI INIT f660 2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT f670 89 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f681 $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^
+STACK CFI f6a0 .cfa: $rsp 64 +
+STACK CFI f6a6 $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbx: .cfa -56 + ^
diff --git a/google-breakpad/src/processor/testdata/symbols/overflow/B0E1FC01EF48E39CAF5C881D2DF0C3840/overflow.sym b/google-breakpad/src/processor/testdata/symbols/overflow/B0E1FC01EF48E39CAF5C881D2DF0C3840/overflow.sym
new file mode 100644
index 0000000..8299b3f
--- /dev/null
+++ b/google-breakpad/src/processor/testdata/symbols/overflow/B0E1FC01EF48E39CAF5C881D2DF0C3840/overflow.sym
@@ -0,0 +1,6709 @@
+MODULE Linux x86_64 B0E1FC01EF48E39CAF5C881D2DF0C3840 overflow
+FILE 0 /home/mattdr/exploitable-crashes/overflow.cc
+FILE 1 /home/mattdr/google-breakpad-read-only/./src/client/linux/crash_generation/crash_generation_client.h
+FILE 2 /home/mattdr/google-breakpad-read-only/./src/client/linux/handler/minidump_descriptor.h
+FILE 3 /home/mattdr/google-breakpad-read-only/./src/client/linux/minidump_writer/directory_reader.h
+FILE 4 /home/mattdr/google-breakpad-read-only/./src/client/linux/minidump_writer/line_reader.h
+FILE 5 /home/mattdr/google-breakpad-read-only/./src/client/linux/minidump_writer/linux_dumper.h
+FILE 6 /home/mattdr/google-breakpad-read-only/./src/client/linux/minidump_writer/linux_ptrace_dumper.h
+FILE 7 /home/mattdr/google-breakpad-read-only/./src/client/linux/minidump_writer/proc_cpuinfo_reader.h
+FILE 8 /home/mattdr/google-breakpad-read-only/./src/client/minidump_file_writer-inl.h
+FILE 9 /home/mattdr/google-breakpad-read-only/./src/client/minidump_file_writer.h
+FILE 10 /home/mattdr/google-breakpad-read-only/./src/common/linux/elfutils-inl.h
+FILE 11 /home/mattdr/google-breakpad-read-only/./src/common/linux/safe_readlink.h
+FILE 12 /home/mattdr/google-breakpad-read-only/./src/common/memory.h
+FILE 13 /home/mattdr/google-breakpad-read-only/./src/common/memory_range.h
+FILE 14 /home/mattdr/google-breakpad-read-only/./src/common/scoped_ptr.h
+FILE 15 /home/mattdr/google-breakpad-read-only/./src/third_party/lss/linux_syscall_support.h
+FILE 16 /home/mattdr/google-breakpad-read-only/src/client/linux/crash_generation/crash_generation_client.cc
+FILE 17 /home/mattdr/google-breakpad-read-only/src/client/linux/handler/exception_handler.cc
+FILE 18 /home/mattdr/google-breakpad-read-only/src/client/linux/handler/minidump_descriptor.cc
+FILE 19 /home/mattdr/google-breakpad-read-only/src/client/linux/handler/minidump_descriptor.h
+FILE 20 /home/mattdr/google-breakpad-read-only/src/client/linux/log/log.cc
+FILE 21 /home/mattdr/google-breakpad-read-only/src/client/linux/minidump_writer/linux_dumper.cc
+FILE 22 /home/mattdr/google-breakpad-read-only/src/client/linux/minidump_writer/linux_ptrace_dumper.cc
+FILE 23 /home/mattdr/google-breakpad-read-only/src/client/linux/minidump_writer/minidump_writer.cc
+FILE 24 /home/mattdr/google-breakpad-read-only/src/client/minidump_file_writer.cc
+FILE 25 /home/mattdr/google-breakpad-read-only/src/common/convert_UTF.c
+FILE 26 /home/mattdr/google-breakpad-read-only/src/common/linux/elfutils.cc
+FILE 27 /home/mattdr/google-breakpad-read-only/src/common/linux/file_id.cc
+FILE 28 /home/mattdr/google-breakpad-read-only/src/common/linux/guid_creator.cc
+FILE 29 /home/mattdr/google-breakpad-read-only/src/common/linux/linux_libc_support.cc
+FILE 30 /home/mattdr/google-breakpad-read-only/src/common/linux/memory_mapped_file.cc
+FILE 31 /home/mattdr/google-breakpad-read-only/src/common/linux/safe_readlink.cc
+FILE 32 /home/mattdr/google-breakpad-read-only/src/common/string_conversion.cc
+FILE 33 /usr/include/c++/4.7/bits/basic_string.h
+FILE 34 /usr/include/c++/4.7/bits/char_traits.h
+FILE 35 /usr/include/c++/4.7/bits/list.tcc
+FILE 36 /usr/include/c++/4.7/bits/shared_ptr_base.h
+FILE 37 /usr/include/c++/4.7/bits/stl_algo.h
+FILE 38 /usr/include/c++/4.7/bits/stl_algobase.h
+FILE 39 /usr/include/c++/4.7/bits/stl_iterator.h
+FILE 40 /usr/include/c++/4.7/bits/stl_iterator_base_funcs.h
+FILE 41 /usr/include/c++/4.7/bits/stl_list.h
+FILE 42 /usr/include/c++/4.7/bits/stl_uninitialized.h
+FILE 43 /usr/include/c++/4.7/bits/stl_vector.h
+FILE 44 /usr/include/c++/4.7/bits/vector.tcc
+FILE 45 /usr/include/c++/4.7/ext/atomicity.h
+FILE 46 /usr/include/c++/4.7/ext/new_allocator.h
+FILE 47 /usr/include/c++/4.7/typeinfo
+FILE 48 /usr/include/x86_64-linux-gnu/bits/stdio2.h
+FILE 49 /usr/include/x86_64-linux-gnu/bits/string3.h
+FUNC 1e20 1a 0 __gnu_cxx::__exchange_and_add_dispatch
+1e20 a 80 45
+1e2a 8 48 45
+1e32 2 66 45
+1e34 5 67 45
+1e39 1 87 45
+FUNC 1e3a 1a 0 __gnu_cxx::__exchange_and_add_dispatch
+1e3a a 80 45
+1e44 8 48 45
+1e4c 2 66 45
+1e4e 5 67 45
+1e53 1 87 45
+FUNC 1e54 27 0 sys_close
+1e54 1 2629 15
+1e55 15 2629 15
+1e6a d 2629 15
+1e77 4 2629 15
+FUNC 1e7c 20 0 google_breakpad::ProcCpuInfoReader::GetValueAndLen(unsigned long*)
+1e7c 7 116 7
+1e83 1 115 7
+1e84 18 116 7
+FUNC 1e9c 20 0 google_breakpad::TypedMDRVA<MDRawDirectory>::CopyIndex(unsigned int, MDRawDirectory*)
+1e9c 7 73 8
+1ea3 1 72 8
+1ea4 18 73 8
+FUNC 1ebc 20 0 google_breakpad::TypedMDRVA<unsigned int>::AllocateObjectAndArray(unsigned long, unsigned long)
+1ebc 7 66 8
+1ec3 1 64 8
+1ec4 18 66 8
+FUNC 1edc 20 0 google_breakpad::TypedMDRVA<unsigned int>::CopyIndexAfterObject(unsigned int, void const*, unsigned long)
+1edc 7 83 8
+1ee3 1 80 8
+1ee4 18 83 8
+FUNC 1efc 1ac 0 MinidumpWriter::WriteFile
+1efc 2 1505 23
+1efe 5 2711 15
+1f03 12 1505 23
+1f15 5 1505 23
+1f1a 1f 2711 15
+1f39 2 1507 23
+1f3b 3 2711 15
+1f3e 2 1507 23
+1f40 7 1508 23
+1f47 a 1166 23
+1f51 2 1522 23
+1f53 3 2724 15
+1f56 c 1166 23
+1f62 7 1519 23
+1f69 b 1520 23
+1f74 9 1526 23
+1f7d 5 2724 15
+1f82 8 1526 23
+1f8a d 2724 15
+1f97 f 2724 15
+1fa6 3 1525 23
+1fa9 2 2724 15
+1fab 4 1525 23
+1faf 5 1529 23
+1fb4 4 1533 23
+1fb8 3 1532 23
+1fbb 7 1534 23
+1fc2 4 1533 23
+1fc6 2 1534 23
+1fc8 13 1166 23
+1fdb 3 1535 23
+1fde b 1538 23
+1fe9 9 1537 23
+1ff2 8 1541 23
+1ffa 9 1543 23
+2003 5 1546 23
+2008 3 1547 23
+200b 9 161 9
+2014 5 1546 23
+2019 5 161 9
+201e 8 1547 23
+2026 4 161 9
+202a d 1547 23
+2037 4 1549 23
+203b 9 1554 23
+2044 26 1556 23
+206a e 1559 23
+2078 3 1560 23
+207b 9 1549 23
+2084 c 176 9
+2090 7 1562 23
+2097 2 1563 23
+2099 f 1564 23
+FUNC 20a8 3f 0 MinidumpWriter::WriteProcFile
+20a8 f 1633 23
+20b7 e 1636 23
+20c5 2 1637 23
+20c7 4 1636 23
+20cb 10 1638 23
+20db c 1639 23
+FUNC 20e8 20 0 google_breakpad::TypedMDRVA<MDString>::CopyIndexAfterObject(unsigned int, void const*, unsigned long)
+20e8 7 83 8
+20ef 1 80 8
+20f0 18 83 8
+FUNC 2108 20 0 google_breakpad::TypedMDRVA<MDString>::AllocateObjectAndArray(unsigned long, unsigned long)
+2108 7 66 8
+210f 1 64 8
+2110 18 66 8
+FUNC 2128 20 0 google_breakpad::LineReader::PopLine(unsigned int)
+2128 7 116 4
+212f 1 113 4
+2130 18 116 4
+FUNC 2150 279 0 main
+2150 a 32 0
+215a 5 33 0
+215f 9 32 0
+2168 a 33 0
+2172 13 32 0
+2185 5 33 0
+218a 17 54 19
+21a1 5 713 33
+21a6 9 272 33
+21af 12 54 19
+21c1 b 55 19
+21cc a 33 0
+21d6 a 94 46
+21e0 3 110 46
+21e3 3 94 46
+21e6 2 110 46
+21e8 4 397 36
+21ec e 113 36
+21fa 11 397 36
+220b 4 399 36
+220f 15 110 46
+2224 4 399 36
+2228 c 110 46
+2234 e 601 36
+2242 f 42 0
+2251 4 44 0
+2255 a 42 0
+225f 2 44 0
+2261 13 45 0
+2274 11 46 0
+2285 15 105 48
+229a 5 557 36
+229f 5 80 45
+22a4 4 144 36
+22a8 9 80 45
+22b1 b 48 45
+22bc 5 144 36
+22c1 a 52 0
+22cb 23 53 0
+22ee a 45 0
+22f8 a 46 0
+2302 9 147 36
+230b 3 80 45
+230e 4 160 36
+2312 2 80 45
+2314 9 48 45
+231d 5 160 36
+2322 b 164 36
+232d 5 53 0
+2332 19 55 19
+234b 3 66 45
+234e b 67 45
+2359 3 66 45
+235c b 67 45
+2367 12 52 0
+2379 15 33 0
+238e 8 557 36
+2396 d 558 36
+23a3 7 117 36
+23aa 8 529 36
+23b2 8 100 46
+23ba 8 532 36
+23c2 7 529 36
+FUNC 24d0 2c 0 MinidumpCallback(google_breakpad::MinidumpDescriptor const&, void*, bool)
+24d0 1 8 0
+24d1 2 8 0
+24d3 4 53 0
+24d7 10 11 0
+24e7 11 105 48
+24f8 4 13 0
+FUNC 2500 3e 0 overflow(char const*)
+2500 4 17 0
+2504 3 17 0
+2507 8 105 49
+250f 10 17 0
+251f 5 105 49
+2524 1a 20 0
+FUNC 2540 49 0 stack_smash(char const*)
+2540 4 24 0
+2544 3 27 0
+2547 10 24 0
+2557 9 27 0
+2560 7 28 0
+2567 8 27 0
+256f 1a 30 0
+FUNC 2590 12 0 std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_destroy()
+2590 5 127 36
+2595 d 127 36
+FUNC 25b0 8 0 std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::~_Sp_counted_base()
+25b0 8 117 36
+FUNC 25c0 8 0 std::_Sp_counted_ptr_inplace<google_breakpad::ExceptionHandler, std::allocator<google_breakpad::ExceptionHandler>, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr_inplace()
+25c0 8 117 36
+FUNC 25d0 c 0 std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::~_Sp_counted_base()
+25d0 c 117 36
+FUNC 25e0 c 0 std::_Sp_counted_ptr_inplace<google_breakpad::ExceptionHandler, std::allocator<google_breakpad::ExceptionHandler>, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr_inplace()
+25e0 7 117 36
+25e7 5 406 36
+FUNC 25f0 c 0 std::_Sp_counted_ptr_inplace<google_breakpad::ExceptionHandler, std::allocator<google_breakpad::ExceptionHandler>, (__gnu_cxx::_Lock_policy)2>::_M_destroy()
+25f0 7 117 36
+25f7 5 100 46
+FUNC 2600 9 0 std::_Sp_counted_ptr_inplace<google_breakpad::ExceptionHandler, std::allocator<google_breakpad::ExceptionHandler>, (__gnu_cxx::_Lock_policy)2>::_M_dispose()
+2600 9 114 46
+FUNC 2610 35 0 std::_Sp_counted_ptr_inplace<google_breakpad::ExceptionHandler, std::allocator<google_breakpad::ExceptionHandler>, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&)
+2610 4 53 0
+2614 3 425 36
+2617 9 126 47
+2620 2 430 36
+2622 13 126 47
+2635 b 434 36
+2640 4 430 36
+2644 1 434 36
+FUNC 2650 90 0 google_breakpad::MinidumpDescriptor::~MinidumpDescriptor()
+2650 8 46 19
+2658 4 290 33
+265c 4 536 33
+2660 9 237 33
+2669 4 290 33
+266d 4 536 33
+2671 9 237 33
+267a 6 46 19
+2680 5 80 45
+2685 4 242 33
+2689 5 80 45
+268e 7 48 45
+2695 4 242 33
+2699 c 246 33
+26a5 5 80 45
+26aa 4 242 33
+26ae 5 80 45
+26b3 7 48 45
+26ba 4 242 33
+26be c 246 33
+26ca 3 66 45
+26cd 8 67 45
+26d5 3 66 45
+26d8 8 67 45
+FUNC 26e0 92 0 std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release()
+26e0 5 140 36
+26e5 5 80 45
+26ea 9 140 36
+26f3 3 80 45
+26f6 3 140 36
+26f9 4 144 36
+26fd 2 80 45
+26ff b 48 45
+270a 5 144 36
+270f 11 167 36
+2720 9 147 36
+2729 3 80 45
+272c 4 160 36
+2730 2 80 45
+2732 b 48 45
+273d 5 160 36
+2742 6 164 36
+2748 a 167 36
+2752 4 164 36
+2756 4 167 36
+275a 2 164 36
+275c 3 66 45
+275f 8 67 45
+2767 3 66 45
+276a 8 67 45
+FUNC 2780 f5 0 google_breakpad::ExceptionHandler::InstallHandlersLocked()
+2780 d 241 17
+278d 16 240 17
+27a3 2 241 17
+27a5 7 240 17
+27ac 28 246 17
+27d4 6 245 17
+27da c 252 17
+27e6 a 251 17
+27f0 7 240 17
+27f7 3 251 17
+27fa 3 240 17
+27fd 8 252 17
+2805 f 256 17
+2814 5 255 17
+2819 7 258 17
+2820 b 259 17
+282b 4 258 17
+282f 10 262 17
+283f 5 261 17
+2844 7 267 17
+284b 7 269 17
+2852 5 268 17
+2857 10 269 17
+2867 2 242 17
+2869 9 269 17
+2872 2 242 17
+2874 1 269 17
+FUNC 2880 8b 0 google_breakpad::ExceptionHandler::RestoreHandlersLocked()
+2880 9 275 17
+2889 22 274 17
+28ab 2 275 17
+28ad 4 274 17
+28b1 26 279 17
+28d7 6 278 17
+28dd 7 283 17
+28e4 1c 284 17
+2900 b 280 17
+FUNC 2910 104 0 google_breakpad::ExceptionHandler::SendContinueSignalToChild()
+2910 22 495 17
+2932 a 2773 15
+293c 18 2773 15
+2954 5 499 17
+2959 1f 506 17
+2978 8 495 17
+2980 11 502 17
+2991 28 503 17
+29b9 a 506 17
+29c3 7 504 17
+29ca a 506 17
+29d4 5 504 17
+29d9 4 506 17
+29dd b 504 17
+29e8 10 2773 15
+29f8 3 498 17
+29fb 5 2773 15
+2a00 14 498 17
+FUNC 2a20 467 0 google_breakpad::ExceptionHandler::GenerateDump(google_breakpad::ExceptionHandler::CrashContext*)
+2a20 2b 431 17
+2a4b 4 106 14
+2a4f 5 432 17
+2a54 d 433 17
+2a61 37 492 17
+2a98 5 60 12
+2a9d d 2816 15
+2aaa 5 60 12
+2aaf 2 86 12
+2ab1 3 60 12
+2ab4 9 86 12
+2abd 8 2816 15
+2ac5 3 86 12
+2ac8 5 2816 15
+2acd 3 86 12
+2ad0 27 2816 15
+2af7 9 439 17
+2b00 6 120 12
+2b06 4 438 17
+2b0a 7 124 12
+2b11 4 125 12
+2b15 6 438 17
+2b1b e 442 17
+2b29 7 441 17
+2b30 5 442 17
+2b35 4 446 17
+2b39 5 445 17
+2b3e a 446 17
+2b48 5 447 17
+2b4d 5 448 17
+2b52 4 447 17
+2b56 4 455 17
+2b5a 9 449 17
+2b63 21 3363 15
+2b84 11 461 17
+2b95 2e 462 17
+2bc3 11 463 17
+2bd4 57 1928 15
+2c2b 6 1930 15
+2c31 3 1928 15
+2c34 18 1930 15
+2c4c 25 2715 15
+2c71 8 473 17
+2c79 5 475 17
+2c7e 3 2877 15
+2c81 5 475 17
+2c86 26 2877 15
+2cac c 2877 15
+2cb8 5 474 17
+2cbd 5 474 17
+2cc2 57 2629 15
+2d19 9 481 17
+2d22 c 488 17
+2d2e b 488 17
+2d39 7 488 17
+2d40 9 489 17
+2d49 12 490 17
+2d5b 10 2701 15
+2d6b 3 135 12
+2d6e 20 2701 15
+2d8e 12 134 12
+2da0 3 474 17
+2da3 2 2877 15
+2da5 b 474 17
+2db0 10 431 17
+2dc0 11 483 17
+2dd1 2e 484 17
+2dff 11 485 17
+2e10 20 488 17
+2e30 10 455 17
+2e40 b 439 17
+2e4b 9 2701 15
+2e54 3 135 12
+2e57 20 2701 15
+2e77 10 134 12
+FUNC 2e90 1a6 0 google_breakpad::ExceptionHandler::HandleSignal(int, siginfo*, void*)
+2e90 11 385 17
+2ea1 3 390 17
+2ea4 8 393 17
+2eac 31 2715 15
+2edd 3 397 17
+2ee0 10 398 17
+2ef0 92 397 17
+2f82 3 398 17
+2f85 c 402 17
+2f91 10 405 17
+2fa1 13 408 17
+2fb4 9 409 17
+2fbd 14 410 17
+2fd1 d 414 17
+2fde 19 415 17
+2ff7 5 411 17
+2ffc c 415 17
+3008 2e 393 17
+FUNC 3040 68 0 google_breakpad::ExceptionHandler::HandleSignal(int, siginfo*, void*)
+3040 16 385 17
+3056 3 386 17
+3059 6 385 17
+305f 5 386 17
+3064 a 386 17
+306e 3a 415 17
+FUNC 30b0 56 0 google_breakpad::ExceptionHandler::SimulateSignalDelivery(int)
+30b0 7 419 17
+30b7 7 420 17
+30be 4 419 17
+30c2 5 420 17
+30c7 4 419 17
+30cb 3 420 17
+30ce 5 424 17
+30d3 8 426 17
+30db 4 424 17
+30df 5 426 17
+30e4 1a 427 17
+30fe 8 428 17
+FUNC 3110 18b 0 google_breakpad::ExceptionHandler::SignalHandler(int, siginfo*, void*)
+3110 19 293 17
+3129 c 295 17
+3135 10 308 17
+3145 e 308 17
+3153 b 327 17
+315e 3 688 17
+3161 b 626 43
+316c 9 327 17
+3175 1a 293 17
+318f 15 328 17
+31a4 18 327 17
+31bc 4 336 17
+31c0 9 337 17
+31c9 c 342 17
+31d5 7 344 17
+31dc 14 359 17
+31f0 10 339 17
+3200 d 311 17
+320d a 312 17
+3217 7 314 17
+321e 7 317 17
+3225 b 315 17
+3230 4 314 17
+3234 a 317 17
+323e 12 322 17
+3250 14 348 17
+3264 12 107 17
+3276 8 348 17
+327e 12 352 17
+3290 b 320 17
+FUNC 32a0 e0 0 google_breakpad::ExceptionHandler::WaitForContinueSignal()
+32a0 a 510 17
+32aa 2 2724 15
+32ac 13 510 17
+32bf 3 510 17
+32c2 5 2724 15
+32c7 14 2724 15
+32db 5 514 17
+32e0 20 521 17
+3300 8 510 17
+3308 11 517 17
+3319 28 518 17
+3341 17 519 17
+3358 10 2724 15
+3368 3 513 17
+336b 5 2724 15
+3370 10 513 17
+FUNC 3380 58 0 google_breakpad::ExceptionHandler::DoDump(int, void const*, unsigned long)
+3380 4 526 17
+3384 3 526 17
+3387 3 688 17
+338a 6 526 17
+3390 4 534 17
+3394 5 527 17
+3399 17 534 17
+33b0 8 543 17
+33b8 1b 542 17
+33d3 5 543 17
+FUNC 33e0 28 0 google_breakpad::ExceptionHandler::ThreadEntry(void*)
+33e0 1 372 17
+33e1 3 372 17
+33e4 9 377 17
+33ed 19 380 17
+3406 2 381 17
+FUNC 3410 153 0 google_breakpad::ExceptionHandler::WriteMinidump()
+3410 8 561 17
+3418 5 562 17
+341d 5 561 17
+3422 2 562 17
+3424 8 688 17
+342c 5 568 17
+3431 25 2715 15
+3456 f 579 17
+3465 2 581 17
+3467 4 580 17
+346b d 629 17
+3478 3 688 17
+347b 9 562 17
+3484 9 571 17
+348d 13 572 17
+34a0 18 608 17
+34b8 5 2673 15
+34bd 3 608 17
+34c0 16 2673 15
+34d6 20 2660 15
+34f6 c 613 17
+3502 7 610 17
+3509 6 613 17
+350f 8 620 17
+3517 5 628 17
+351c 8 614 17
+3524 5 620 17
+3529 5 628 17
+352e 12 629 17
+3540 10 3391 15
+3550 13 567 17
+FUNC 3570 cf 0 google_breakpad::ExceptionHandler::AddMappingInfo(std::string const&, unsigned char const*, unsigned long, unsigned long, unsigned long)
+3570 1b 635 17
+358b 3 640 17
+358e 3 635 17
+3591 8 644 17
+3599 5 640 17
+359e 3 635 17
+35a1 5 640 17
+35a6 4 637 17
+35aa 5 638 17
+35af 4 758 41
+35b3 5 639 17
+35b8 5 640 17
+35bd 8 641 17
+35c5 e 644 17
+35d3 5 94 46
+35d8 19 645 17
+35f1 5 94 46
+35f6 17 120 46
+360d 3 1526 41
+3610 20 647 17
+3630 3 1526 41
+3633 7 647 17
+363a 5 1526 41
+FUNC 3640 5d 0 google_breakpad::ExceptionHandler::RegisterAppMemory(void*, unsigned long)
+3640 6 649 17
+3646 4 758 41
+364a 1 649 17
+364b 4 688 17
+364f 3 649 17
+3652 14 135 37
+3666 3 156 41
+3669 5 135 37
+366e a 94 46
+3678 e 120 46
+3686 1 661 17
+3687 6 1526 41
+368d 3 661 17
+3690 8 1526 41
+3698 5 661 17
+FUNC 36a0 31 0 google_breakpad::ExceptionHandler::UnregisterAppMemory(void*)
+36a0 1 663 17
+36a1 4 688 17
+36a5 4 758 41
+36a9 d 135 37
+36b6 3 156 41
+36b9 5 135 37
+36be 2 669 17
+36c0 8 1542 41
+36c8 3 100 46
+36cb 1 669 17
+36cc 5 100 46
+FUNC 36e0 179 0 google_breakpad::ExceptionHandler::WriteMinidumpForChild(int, int, std::string const&, bool (*)(google_breakpad::MinidumpDescriptor const&, void*, bool), void*)
+36e0 28 676 17
+3708 5 54 2
+370d 3 676 17
+3710 3 54 2
+3713 6 676 17
+3719 d 54 2
+3726 7 272 33
+372d 12 54 2
+373f 9 272 33
+3748 4 713 33
+374c b 55 2
+3757 a 679 17
+3761 10 682 17
+3771 4 680 17
+3775 5 685 17
+377a 12 685 17
+378c 9 536 33
+3795 9 237 33
+379e 9 536 33
+37a7 5 237 33
+37ac 2c 686 17
+37d8 8 685 17
+37e0 4 683 17
+37e4 1f 55 2
+3803 e 242 33
+3811 f 246 33
+3820 12 242 33
+3832 12 246 33
+3844 15 685 17
+FUNC 3860 336 0 google_breakpad::ExceptionHandler::~ExceptionHandler()
+3860 d 226 17
+386d f 227 17
+387c b 229 17
+3887 8 728 39
+388f 9 900 39
+3898 4 158 37
+389c 4 900 39
+38a0 9 160 37
+38a9 9 162 37
+38b2 a 166 37
+38bc a 170 37
+38c6 12 174 37
+38d8 6 162 37
+38de a 166 37
+38e8 a 170 37
+38f2 a 174 37
+38fc 3 750 39
+38ff 4 226 17
+3903 4 160 37
+3907 3 226 17
+390a c 160 37
+3916 1e 179 37
+3934 c 728 39
+3940 4 781 39
+3944 8 138 44
+394c a 364 38
+3956 5 365 38
+395b 8 140 44
+3963 d 231 17
+3970 8 235 17
+3978 4 436 41
+397c 5 379 41
+3981 4 436 41
+3985 5 379 41
+398a 4 536 33
+398e 7 237 33
+3995 4 536 33
+3999 9 237 33
+39a2 8 536 33
+39aa 9 237 33
+39b3 e 75 14
+39c1 f 236 17
+39d0 20 366 38
+39f0 9 163 17
+39f9 a 233 17
+3a03 8 2759 15
+3a0b 5 167 17
+3a10 20 2759 15
+3a30 29 750 39
+3a59 9 182 37
+3a62 4 750 39
+3a66 9 186 37
+3a6f 4 750 39
+3a73 c 728 39
+3a7f 9 167 17
+3a88 e 172 17
+3a96 5 184 17
+3a9b c 185 17
+3aa7 8 728 39
+3aaf 8 162 37
+3ab7 1b 750 39
+3ad2 8 173 17
+3ada 7 2759 15
+3ae1 2 173 17
+3ae3 16 2759 15
+3af9 12 179 17
+3b0b 8 178 17
+3b13 7 179 17
+3b1a 7 436 41
+3b21 5 379 41
+3b26 4 436 41
+3b2a 5 379 41
+3b2f 9 226 17
+3b38 16 75 14
+3b4e 12 242 33
+3b60 12 246 33
+3b72 12 242 33
+3b84 12 246 33
+FUNC 3ba0 31c 0 google_breakpad::ExceptionHandler::ExceptionHandler(google_breakpad::MinidumpDescriptor const&, bool (*)(void*), bool (*)(google_breakpad::MinidumpDescriptor const&, void*, bool), void*, bool, int)
+3ba0 5 197 17
+3ba5 4 207 17
+3ba9 20 197 17
+3bc9 7 207 17
+3bd0 3 197 17
+3bd3 4 207 17
+3bd7 8 71 14
+3bdf 3 207 17
+3be2 4 197 17
+3be6 5 207 17
+3beb 8 387 41
+3bf3 2 208 17
+3bf5 8 207 17
+3bfd 4 387 41
+3c01 4 388 41
+3c05 4 387 41
+3c09 4 388 41
+3c0d 6 208 17
+3c13 7 209 17
+3c1a 4 81 14
+3c1e 3 209 17
+3c21 5 81 14
+3c26 a 82 14
+3c30 4 83 14
+3c34 9 211 17
+3c3d c 214 17
+3c49 12 215 17
+3c5b 5 217 17
+3c60 d 135 17
+3c6d 5 219 17
+3c72 9 221 17
+3c7b e 883 43
+3c89 10 120 46
+3c99 8 887 43
+3ca1 c 222 17
+3cad 27 223 17
+3cd4 9 211 17
+3cdd a 211 17
+3ce7 11 212 17
+3cf8 7 144 17
+3cff 21 138 17
+3d20 21 139 17
+3d41 6 144 17
+3d47 2d 2759 15
+3d74 8 150 17
+3d7c 7 151 17
+3d83 7 150 17
+3d8a 2a 2759 15
+3db4 14 154 17
+3dc8 8 120 46
+3dd0 28 148 17
+3df8 18 893 43
+3e10 a 216 17
+3e1a 17 88 43
+3e31 f 216 17
+3e40 30 144 17
+3e70 a 153 17
+3e7a f 157 17
+3e89 16 75 14
+3e9f 13 379 41
+3eb2 a 207 17
+FUNC 3ec0 167 0 google_breakpad::ExceptionHandler::WriteMinidump(std::string const&, bool (*)(google_breakpad::MinidumpDescriptor const&, void*, bool), void*)
+3ec0 1e 548 17
+3ede 5 54 2
+3ee3 3 548 17
+3ee6 3 54 2
+3ee9 3 548 17
+3eec d 54 2
+3ef9 7 272 33
+3f00 12 54 2
+3f12 9 272 33
+3f1b 4 713 33
+3f1f 7 55 2
+3f26 21 550 17
+3f47 16 551 17
+3f5d 9 536 33
+3f66 5 237 33
+3f6b 9 536 33
+3f74 5 237 33
+3f79 2a 552 17
+3fa3 1f 55 2
+3fc2 e 242 33
+3fd0 f 246 33
+3fdf 12 242 33
+3ff1 12 246 33
+4003 24 551 17
+FUNC 4030 2f 0 std::_List_base<google_breakpad::MappingEntry, std::allocator<google_breakpad::MappingEntry> >::_M_clear()
+4030 9 66 35
+4039 3 70 35
+403c c 71 35
+4048 3 74 35
+404b 5 100 46
+4050 3 71 35
+4053 3 74 35
+4056 2 71 35
+4058 7 82 35
+FUNC 4060 2f 0 std::_List_base<google_breakpad::AppMemory, std::allocator<google_breakpad::AppMemory> >::_M_clear()
+4060 9 66 35
+4069 3 70 35
+406c c 71 35
+4078 3 74 35
+407b 5 100 46
+4080 3 71 35
+4083 3 74 35
+4086 2 71 35
+4088 7 82 35
+FUNC 4090 1ba 0 std::vector<google_breakpad::ExceptionHandler*, std::allocator<google_breakpad::ExceptionHandler*> >::_M_insert_aux(__gnu_cxx::__normal_iterator<google_breakpad::ExceptionHandler**, std::vector<google_breakpad::ExceptionHandler*, std::allocator<google_breakpad::ExceptionHandler*> > >, google_breakpad::ExceptionHandler* const&)
+4090 28 316 44
+40b8 a 320 44
+40c2 10 120 46
+40d2 8 325 44
+40da 3 327 44
+40dd 4 329 44
+40e1 7 559 38
+40e8 5 560 38
+40ed f 561 38
+40fc 4 333 44
+4100 28 391 44
+4128 8 120 46
+4130 a 626 43
+413a 9 215 38
+4143 4 1308 43
+4147 9 1309 43
+4150 3 900 39
+4153 7 342 44
+415a 3 900 39
+415d 4 342 44
+4161 15 94 46
+4176 4 351 44
+417a b 120 46
+4185 3 360 44
+4188 3 364 38
+418b 3 365 38
+418e 7 364 38
+4195 5 365 38
+419a 13 366 38
+41ad 4 364 38
+41b1 5 365 44
+41b6 3 365 38
+41b9 7 364 38
+41c0 5 365 38
+41c5 16 366 38
+41db 3 384 44
+41de 3 367 38
+41e1 5 174 43
+41e6 5 100 46
+41eb 3 387 44
+41ee 3 389 44
+41f1 4 388 44
+41f5 b 389 44
+4200 3 900 39
+4203 6 342 44
+4209 3 900 39
+420c 9 342 44
+4215 13 1309 43
+4228 6 900 39
+422e 3 169 43
+4231 7 900 39
+4238 4 342 44
+423c e 169 43
+FUNC 4250 7d 0 google_breakpad::MinidumpDescriptor::MinidumpDescriptor(google_breakpad::MinidumpDescriptor const&)
+4250 e 38 18
+425e 2 42 18
+4260 6 38 18
+4266 f 42 18
+4275 7 272 33
+427c 8 42 18
+4284 8 272 33
+428c 8 42 18
+4294 4 713 33
+4298 7 46 18
+429f f 47 18
+42ae 1f 46 18
+FUNC 42d0 232 0 google_breakpad::MinidumpDescriptor::UpdatePath()
+42d0 b 65 18
+42db 9 66 18
+42e4 4 713 33
+42e8 b 66 18
+42f3 e 70 18
+4301 1f 71 18
+4320 1b 70 18
+433b 4 713 33
+433f 4 74 18
+4343 10 801 33
+4353 4 75 18
+4357 a 2402 33
+4361 16 1006 33
+4377 f 2402 33
+4386 1c 261 34
+43a2 8 1006 33
+43aa 1c 261 34
+43c6 5 1006 33
+43cb f 2402 33
+43da 16 1006 33
+43f0 d 544 33
+43fd 5 536 33
+4402 7 237 33
+4409 4 536 33
+440d 9 237 33
+4416 9 536 33
+441f 5 237 33
+4424 9 536 33
+442d 5 237 33
+4432 8 76 18
+443a 9 77 18
+4443 1f 66 18
+4462 e 242 33
+4470 f 246 33
+447f e 242 33
+448d f 246 33
+449c 12 242 33
+44ae 12 246 33
+44c0 42 75 18
+FUNC 4510 85 0 google_breakpad::MinidumpDescriptor::operator=(google_breakpad::MinidumpDescriptor const&)
+4510 9 50 18
+4519 4 713 33
+451d 7 51 18
+4524 5 53 18
+4529 4 54 18
+452d 2 53 18
+452f 4 54 18
+4533 5 544 33
+4538 4 713 33
+453c 4 55 18
+4540 d 801 33
+454d 7 56 18
+4554 8 58 18
+455c 8 59 18
+4564 8 61 18
+456c a 63 18
+4576 1f 51 18
+FUNC 45a0 38 0 logger::write(char const*, unsigned long)
+45a0 7 40 20
+45a7 1a 2773 15
+45c1 7 46 20
+45c8 e 2773 15
+45d6 2 46 20
+FUNC 45e0 5d 0 MinidumpWriter::~MinidumpWriter
+45e0 e 436 23
+45ee 3 439 23
+45f1 3 436 23
+45f4 4 440 23
+45f8 2 439 23
+45fa a 441 23
+4604 3 436 23
+4607 e 442 23
+4615 b 436 23
+4620 d 440 23
+462d 10 436 23
+FUNC 4640 1e 0 google_breakpad::TypedMDRVA<MDRawDirectory>::CopyIndex(unsigned int, MDRawDirectory*)
+4640 5 73 8
+4645 13 76 8
+4658 6 72 8
+FUNC 4660 15e5 0 MinidumpWriter::WriteThreadListStream
+4660 6 683 23
+4666 4 686 23
+466a e 683 23
+4678 4 684 23
+467c 5 686 23
+4681 14 161 9
+4695 b 212 9
+46a0 8 626 43
+46a8 3 161 9
+46ab b 212 9
+46b6 4 626 43
+46ba 7 161 9
+46c1 4 684 23
+46c5 2 687 23
+46c7 9 66 8
+46d0 f 68 8
+46df b 67 8
+46ea d 68 8
+46f7 8 687 23
+46ff 8 176 9
+4707 5 693 23
+470c 7 690 23
+4713 3 176 9
+4716 7 691 23
+471d 8 693 23
+4725 3 691 23
+4728 9 701 23
+4731 4 703 23
+4735 3 705 23
+4738 3 703 23
+473b 7 705 23
+4742 9 706 23
+474b 8 700 23
+4753 e 710 23
+4761 10 223 9
+4771 5 710 23
+4776 a 223 9
+4780 14 712 23
+4794 4 713 23
+4798 8 766 43
+47a0 7 713 23
+47a7 3 719 23
+47aa 7 713 23
+47b1 6 719 23
+47b7 19 780 23
+47d0 5 785 23
+47d5 6 784 23
+47db 2 785 23
+47dd 9 786 23
+47e6 8 788 23
+47ee 1e 658 23
+480c 8 161 9
+4814 4 660 23
+4818 20 161 9
+4838 f 660 23
+4847 8 662 23
+484f 16 664 23
+4865 2 688 23
+4867 a 216 9
+4871 21 92 8
+4892 1e 814 23
+48b0 5 666 23
+48b5 4 42 6
+48b9 3 71 12
+48bc 3 666 23
+48bf 4 42 6
+48c3 6 71 12
+48c9 20 74 12
+48e9 3 75 12
+48ec 2 76 12
+48ee 4 78 12
+48f2 3 75 12
+48f5 8 77 12
+48fd 3 76 12
+4900 19 668 23
+4919 19 186 9
+4932 8 176 9
+493a 8 883 43
+4942 5 671 23
+4947 7 176 9
+494e 7 672 23
+4955 8 671 23
+495d 7 672 23
+4964 6 883 43
+496a 14 120 46
+497e 12 887 43
+4990 b 719 23
+499b 6 721 23
+49a1 17 719 23
+49b8 4 677 23
+49bc 8 675 23
+49c4 3 655 23
+49c7 b 676 23
+49d2 8 677 23
+49da 8 212 9
+49e2 5 161 9
+49e7 7 212 9
+49ee 5 47 8
+49f3 8 161 9
+49fb 3 212 9
+49fe 8 47 8
+4a06 14 161 9
+4a1a b 46 8
+4a25 5 47 8
+4a2a 8 792 23
+4a32 11 794 23
+4a43 8 226 23
+4a4b b 224 23
+4a56 3 796 23
+4a59 15 277 23
+4a6e 8 226 23
+4a76 10 228 23
+4a86 10 229 23
+4a96 10 230 23
+4aa6 10 231 23
+4ab6 10 233 23
+4ac6 f 234 23
+4ad5 10 236 23
+4ae5 10 237 23
+4af5 10 238 23
+4b05 10 239 23
+4b15 10 242 23
+4b25 10 243 23
+4b35 10 245 23
+4b45 10 246 23
+4b55 10 247 23
+4b65 10 248 23
+4b75 8 253 23
+4b7d 8 250 23
+4b85 8 253 23
+4b8d 8 254 23
+4b95 8 250 23
+4b9d 8 252 23
+4ba5 8 254 23
+4bad 8 255 23
+4bb5 8 252 23
+4bbd 8 255 23
+4bc5 10 256 23
+4bd5 10 257 23
+4be5 10 258 23
+4bf5 10 259 23
+4c05 10 260 23
+4c15 10 261 23
+4c25 10 262 23
+4c35 10 264 23
+4c45 10 266 23
+4c55 10 267 23
+4c65 f 268 23
+4c74 10 269 23
+4c84 8 270 23
+4c8c a 271 23
+4c96 a 273 23
+4ca0 7 270 23
+4ca7 f 272 23
+4cb6 e 274 23
+4cc4 e 275 23
+4cd2 100 276 23
+4dd2 3 277 23
+4dd5 2 796 23
+4dd7 8 42 6
+4ddf a 545 23
+4de9 a 555 23
+4df3 3 543 23
+4df6 15 545 23
+4e0b 9 553 23
+4e14 3 554 23
+4e17 9 555 23
+4e20 8 544 23
+4e28 3 554 23
+4e2b 5 545 23
+4e30 4 799 23
+4e34 7 798 23
+4e3b 8 176 9
+4e43 4 799 23
+4e47 e 798 23
+4e55 e 799 23
+4e63 a 216 9
+4e6d 1e 92 8
+4e8b 8 83 8
+4e93 f 810 23
+4ea2 6 83 8
+4ea8 1f 87 8
+4ec7 a 710 23
+4ed1 f 813 23
+4ee0 3 800 23
+4ee3 3 801 23
+4ee6 3 800 23
+4ee9 b 801 23
+4ef4 1c 157 5
+4f10 4 1187 23
+4f14 e 658 23
+4f22 7 1187 23
+4f29 10 658 23
+4f39 8 161 9
+4f41 d 664 23
+4f4e 1b 161 9
+4f69 d 664 23
+4f76 5 666 23
+4f7b 4 42 6
+4f7f 3 71 12
+4f82 3 666 23
+4f85 6 71 12
+4f8b 25 74 12
+4fb0 3 75 12
+4fb3 2 76 12
+4fb5 3 75 12
+4fb8 2 77 12
+4fba 4 75 12
+4fbe 6 77 12
+4fc4 5 76 12
+4fc9 1a 668 23
+4fe3 1d 186 9
+5000 8 176 9
+5008 8 883 43
+5010 5 671 23
+5015 7 176 9
+501c 7 672 23
+5023 8 671 23
+502b 7 672 23
+5032 6 883 43
+5038 14 120 46
+504c e 887 43
+505a 4 677 23
+505e 8 675 23
+5066 b 676 23
+5071 8 655 23
+5079 8 677 23
+5081 4 1191 23
+5085 6 734 23
+508b 7 1191 23
+5092 4 734 23
+5096 4 42 6
+509a 4 626 43
+509e 2 734 23
+50a0 7 626 43
+50a7 9 734 23
+50b0 4 735 23
+50b4 8 736 23
+50bc 10 736 23
+50cc e 734 23
+50da 8 212 9
+50e2 5 161 9
+50e7 7 212 9
+50ee 5 47 8
+50f3 8 161 9
+50fb 3 212 9
+50fe 8 47 8
+5106 14 161 9
+511a b 46 8
+5125 5 47 8
+512a 8 770 23
+5132 11 772 23
+5143 8 773 23
+514b b 284 23
+5156 f 286 23
+5165 3 288 23
+5168 c 289 23
+5174 7 291 23
+517b c 288 23
+5187 7 291 23
+518e f 293 23
+519d f 294 23
+51ac f 295 23
+51bb f 296 23
+51ca f 298 23
+51d9 c 299 23
+51e5 c 300 23
+51f1 c 301 23
+51fd c 302 23
+5209 c 303 23
+5215 c 304 23
+5221 c 305 23
+522d c 306 23
+5239 c 307 23
+5245 c 308 23
+5251 c 309 23
+525d f 311 23
+526c b 313 23
+5277 c 314 23
+5283 b 315 23
+528e c 316 23
+529a b 317 23
+52a5 4 318 23
+52a9 a 319 23
+52b3 a 320 23
+52bd 7 318 23
+52c4 a 321 23
+52ce a 322 23
+52d8 4 323 23
+52dc 8 324 23
+52e4 c0 323 23
+53a4 a 324 23
+53ae 8 323 23
+53b6 8 324 23
+53be 7 774 23
+53c5 8 42 6
+53cd a 545 23
+53d7 e 555 23
+53e5 3 543 23
+53e8 15 545 23
+53fd 9 553 23
+5406 3 554 23
+5409 9 555 23
+5412 8 544 23
+541a 3 554 23
+541d b 545 23
+5428 8 216 9
+5430 7 776 23
+5437 8 176 9
+543f 7 776 23
+5446 3 777 23
+5449 7 776 23
+5450 3 777 23
+5453 6 216 9
+5459 1f 92 8
+5478 4 743 23
+547c 5 161 9
+5481 c 755 23
+548d 8 161 9
+5495 3 743 23
+5498 c 161 9
+54a4 5 755 23
+54a9 4 743 23
+54ad 4 746 23
+54b1 8 161 9
+54b9 3 748 23
+54bc 8 743 23
+54c4 6 748 23
+54ca 2 755 23
+54cc 7 748 23
+54d3 d 755 23
+54e0 8 758 23
+54e8 4 42 6
+54ec 9 71 12
+54f5 25 74 12
+551a 3 75 12
+551d 3 76 12
+5520 3 75 12
+5523 8 77 12
+552b 5 76 12
+5530 1c 763 23
+554c 7 764 23
+5553 14 186 9
+5567 8 176 9
+556f 8 883 43
+5577 7 176 9
+557e e 765 23
+558c 6 883 43
+5592 1c 120 46
+55ae 12 887 43
+55c0 e 86 12
+55ce f 2816 15
+55dd 3 86 12
+55e0 5 2816 15
+55e5 9 86 12
+55ee 34 2816 15
+5622 1e 89 12
+5640 1a 576 23
+565a 8 584 23
+5662 6 591 23
+5668 48 584 23
+56b0 8 591 23
+56b8 8 595 23
+56c0 5 597 23
+56c5 5 596 23
+56ca 8 590 23
+56d2 8 592 23
+56da 8 585 23
+56e2 8 586 23
+56ea 8 587 23
+56f2 8 588 23
+56fa 8 589 23
+5702 8 593 23
+570a 8 594 23
+5712 8 596 23
+571a 8 597 23
+5722 5 598 23
+5727 5 599 23
+572c 8 600 23
+5734 8 598 23
+573c 14 599 23
+5750 1a 576 23
+576a 8 584 23
+5772 6 591 23
+5778 4d 584 23
+57c5 8 593 23
+57cd 8 594 23
+57d5 5 595 23
+57da 5 596 23
+57df 8 590 23
+57e7 8 591 23
+57ef 8 592 23
+57f7 8 585 23
+57ff 8 586 23
+5807 8 587 23
+580f 8 588 23
+5817 8 589 23
+581f 8 595 23
+5827 8 596 23
+582f 5 597 23
+5834 5 598 23
+5839 5 599 23
+583e 8 600 23
+5846 8 597 23
+584e 8 598 23
+5856 d 599 23
+5863 11 86 12
+5874 f 2816 15
+5883 3 86 12
+5886 5 2816 15
+588b 9 86 12
+5894 3a 2816 15
+58ce 1d 89 12
+58eb 11 86 12
+58fc f 2816 15
+590b 3 86 12
+590e 5 2816 15
+5913 9 86 12
+591c 38 2816 15
+5954 14 89 12
+5968 d 707 23
+5975 c 120 12
+5981 a 124 12
+598b 4 125 12
+598f a 93 12
+5999 3 124 12
+599c 3 125 12
+599f 5 126 12
+59a4 16 93 12
+59ba 5 94 12
+59bf 5 93 12
+59c4 11 94 12
+59d5 5 96 12
+59da 11 94 12
+59eb 9 96 12
+59f4 9 78 12
+59fd e 79 12
+5a0b 8 72 12
+5a13 4 766 23
+5a17 16 893 43
+5a2d c 120 12
+5a39 9 124 12
+5a42 5 125 12
+5a47 4 93 12
+5a4b 4 124 12
+5a4f 3 93 12
+5a52 4 125 12
+5a56 4 124 12
+5a5a 4 126 12
+5a5e 17 93 12
+5a75 5 94 12
+5a7a 3 93 12
+5a7d 15 94 12
+5a92 a 96 12
+5a9c 8 94 12
+5aa4 d 96 12
+5ab1 a 120 12
+5abb 5 124 12
+5ac0 e 93 12
+5ace 3 124 12
+5ad1 4 125 12
+5ad5 5 93 12
+5ada 3 125 12
+5add 5 93 12
+5ae2 5 126 12
+5ae7 8 93 12
+5aef 5 94 12
+5af4 5 93 12
+5af9 f 94 12
+5b08 4 96 12
+5b0c a 94 12
+5b16 d 96 12
+5b23 9 78 12
+5b2c e 79 12
+5b3a 7 78 12
+5b41 d 79 12
+5b4e e 216 9
+5b5c 26 92 8
+5b82 e 216 9
+5b90 26 92 8
+5bb6 15 72 12
+5bcb c 673 23
+5bd7 e 893 43
+5be5 c 673 23
+5bf1 13 893 43
+5c04 10 807 23
+5c14 1a 813 23
+5c2e 17 777 23
+FUNC 5c50 1d12 0 MinidumpWriter::Dump
+5c50 2 444 23
+5c52 4 449 23
+5c56 5 47 8
+5c5b 12 444 23
+5c6d 3 42 6
+5c70 8 47 8
+5c78 14 161 9
+5c8c 18 212 9
+5ca4 7 161 9
+5cab 18 212 9
+5cc3 1b 161 9
+5cde 2c 212 9
+5d0a b 46 8
+5d15 5 47 8
+5d1a 8 451 23
+5d22 d 60 8
+5d2f b 59 8
+5d3a 5 60 8
+5d3f 2 454 23
+5d41 4 453 23
+5d45 a 216 9
+5d4f 21 92 8
+5d70 a 216 9
+5d7a 21 92 8
+5d9b 15 534 23
+5db0 8 452 23
+5db8 8 223 9
+5dc0 c 455 23
+5dcc 2 459 23
+5dce b 457 23
+5dd9 b 458 23
+5de4 c 459 23
+5df0 7 461 23
+5df7 b 466 23
+5e02 b 460 23
+5e0d 7 461 23
+5e14 d 466 23
+5e21 8 73 8
+5e29 f 468 23
+5e38 6 73 8
+5e3e 12 76 8
+5e50 4 872 23
+5e54 4 873 23
+5e58 4 42 6
+5e5c 4 626 43
+5e60 3 42 6
+5e63 7 626 43
+5e6a 16 80 40
+5e80 3 236 41
+5e83 4 83 40
+5e87 5 80 40
+5e8c 14 875 23
+5ea0 9 858 23
+5ea9 c 875 23
+5eb5 4 876 23
+5eb9 11 841 23
+5eca 9 877 23
+5ed3 b 853 23
+5ede c 858 23
+5eea 3 236 41
+5eed 5 853 23
+5ef2 5 878 23
+5ef7 4 161 9
+5efb 2 882 23
+5efd 14 161 9
+5f11 b 212 9
+5f1c 7 161 9
+5f23 6 882 23
+5f29 2 883 23
+5f2b 8 68 8
+5f33 b 67 8
+5f3e 1a 68 8
+5f58 8 888 23
+5f60 c 176 9
+5f6c 2 898 23
+5f6e 4 872 23
+5f72 b 892 23
+5f7d 7 894 23
+5f84 7 176 9
+5f8b 11 893 23
+5f9c 6 898 23
+5fa2 8 954 23
+5faa 3 898 23
+5fad 8 897 23
+5fb5 b 954 23
+5fc0 d 858 23
+5fcd b 898 23
+5fd8 9 42 6
+5fe1 8 899 23
+5fe9 11 841 23
+5ffa 9 900 23
+6003 b 853 23
+600e 13 858 23
+6021 3 236 41
+6024 5 853 23
+6029 14 929 23
+603d 3 931 23
+6040 7 933 23
+6047 8 931 23
+604f b 932 23
+605a 8 933 23
+6062 5 936 23
+6067 5 937 23
+606c 19 938 23
+6085 4 940 23
+6089 5 937 23
+608e 4 942 23
+6092 14 161 9
+60a6 5 942 23
+60ab 12 944 23
+60bd 5 949 23
+60c2 4 161 9
+60c6 14 949 23
+60da 7 161 9
+60e1 d 949 23
+60ee 15 962 23
+6103 b 953 23
+610e 5 962 23
+6113 8 956 23
+611b c 964 23
+6127 a 968 23
+6131 8 965 23
+6139 9 968 23
+6142 21 186 9
+6163 8 176 9
+616b e 974 23
+6179 7 176 9
+6180 e 971 23
+618e 9 974 23
+6197 4 906 23
+619b 4 976 23
+619f b 906 23
+61aa 8 83 8
+61b2 7 976 23
+61b9 7 906 23
+61c0 6 83 8
+61c6 28 87 8
+61ee 12 906 23
+6200 2 914 23
+6202 a 216 9
+620c 22 92 8
+622e 8 470 23
+6236 8 73 8
+623e f 472 23
+624d 6 73 8
+6253 15 76 8
+6268 4 818 23
+626c 3 42 6
+626f 9 818 23
+6278 18 834 23
+6290 2 76 12
+6292 6 75 12
+6298 2 77 12
+629a 3 76 12
+629d 2 77 12
+629f 7 78 12
+62a6 a 79 12
+62b0 13 824 23
+62c3 4 161 9
+62c7 c 827 23
+62d3 1b 161 9
+62ee d 827 23
+62fb 1b 186 9
+6316 8 176 9
+631e 8 883 43
+6326 4 832 23
+632a 7 176 9
+6331 7 833 23
+6338 8 832 23
+6340 7 833 23
+6347 6 883 43
+634d 14 120 46
+6361 8 887 43
+6369 4 236 41
+636d a 818 23
+6377 8 822 23
+637f 3 71 12
+6382 3 822 23
+6385 6 71 12
+638b 1c 74 12
+63a7 11 86 12
+63b8 f 2816 15
+63c7 3 86 12
+63ca 8 2816 15
+63d2 9 86 12
+63db 35 2816 15
+6410 15 89 12
+6425 8 120 12
+642d 9 124 12
+6436 4 125 12
+643a 8 93 12
+6442 3 124 12
+6445 3 125 12
+6448 4 126 12
+644c 16 93 12
+6462 5 94 12
+6467 3 93 12
+646a 11 94 12
+647b 5 96 12
+6480 4 94 12
+6484 6 96 12
+648a d 47 8
+6497 b 46 8
+64a2 f 47 8
+64b1 8 897 23
+64b9 2a 909 23
+64e3 d 956 23
+64f0 11 929 23
+6501 4 931 23
+6505 7 933 23
+650c 8 931 23
+6514 b 932 23
+651f 5 933 23
+6524 4 936 23
+6528 3 933 23
+652b 5 936 23
+6530 5 937 23
+6535 10 938 23
+6545 4 940 23
+6549 5 937 23
+654e 5 944 23
+6553 4 942 23
+6557 8 949 23
+655f 5 942 23
+6564 8 161 9
+656c 3 944 23
+656f 10 161 9
+657f 7 949 23
+6586 7 161 9
+658d 12 949 23
+659f b 953 23
+65aa 7 959 23
+65b1 c 964 23
+65bd 17 959 23
+65d4 5 964 23
+65d9 5 968 23
+65de 8 965 23
+65e6 9 968 23
+65ef 21 186 9
+6610 8 176 9
+6618 e 974 23
+6626 7 176 9
+662d e 971 23
+663b d 974 23
+6648 8 83 8
+6650 4 976 23
+6654 8 915 23
+665c 7 976 23
+6663 7 915 23
+666a 6 83 8
+6670 1d 87 8
+668d 4 236 41
+6691 f 909 23
+66a0 a 918 23
+66aa 8 72 12
+66b2 17 893 43
+66c9 18 161 9
+66e1 b 212 9
+66ec 7 161 9
+66f3 c 626 43
+66ff 9 982 23
+6708 c 68 8
+6714 b 67 8
+671f c 68 8
+672b 8 989 23
+6733 8 176 9
+673b 4 626 43
+673f 7 994 23
+6746 b 993 23
+6751 7 176 9
+6758 4 42 6
+675c 7 994 23
+6763 7 626 43
+676a 3 998 23
+676d 7 996 23
+6774 2 998 23
+6776 8 83 8
+677e 8 1000 23
+6786 12 83 8
+6798 3 444 23
+679b a 1000 23
+67a5 4 444 23
+67a9 3 751 43
+67ac 8 83 8
+67b4 7 1000 23
+67bb 6 83 8
+67c1 11 87 8
+67d2 4 42 6
+67d6 4 626 43
+67da 4 998 23
+67de 7 626 43
+67e5 5 998 23
+67ea 5 1002 23
+67ef a 216 9
+67f9 1d 92 8
+6816 8 477 23
+681e 28 479 23
+6846 4 161 9
+684a d 212 9
+6857 5 47 8
+685c 14 161 9
+6870 b 46 8
+687b 7 161 9
+6882 5 212 9
+6887 d 47 8
+6894 8 1007 23
+689c 8 223 9
+68a4 c 1009 23
+68b0 8 176 9
+68b8 b 1011 23
+68c3 5 1019 23
+68c8 7 176 9
+68cf e 1012 23
+68dd 4 42 6
+68e1 a 1014 23
+68eb 3 1015 23
+68ee 4 1016 23
+68f2 7 1015 23
+68f9 8 1016 23
+6901 c 1017 23
+690d a 216 9
+6917 21 92 8
+6938 8 481 23
+6940 28 483 23
+6968 4 161 9
+696c d 212 9
+6979 5 47 8
+697e 14 161 9
+6992 b 46 8
+699d 7 161 9
+69a4 4 212 9
+69a8 d 47 8
+69b5 8 1024 23
+69bd 8 223 9
+69c5 c 1026 23
+69d1 8 176 9
+69d9 10 1221 23
+69e9 e 1233 23
+69f7 5 1221 23
+69fc 7 1233 23
+6a03 b 1028 23
+6a0e 7 176 9
+6a15 7 1029 23
+6a1c 26 1233 23
+6a42 7 1029 23
+6a49 2 1221 23
+6a4b 8 1233 23
+6a53 2 1221 23
+6a55 2a 1233 23
+6a7f 5 2711 15
+6a84 13 1233 23
+6a97 7 2711 15
+6a9e 8 1233 23
+6aa6 a 1240 23
+6ab0 3 1221 23
+6ab3 1d 2711 15
+6ad0 8 1574 23
+6ad8 b 1570 23
+6ae3 12 1574 23
+6af5 f 1578 23
+6b04 8 1588 23
+6b0c 5 1579 23
+6b11 8 1578 23
+6b19 a 1586 23
+6b23 5 1588 23
+6b28 6 1587 23
+6b2e 3b 1586 23
+6b69 9 1598 23
+6b72 12 1604 23
+6b84 3 1605 23
+6b87 3 1603 23
+6b8a 14 1588 23
+6b9e 8 1591 23
+6ba6 3 1592 23
+6ba9 3 1591 23
+6bac 2 1592 23
+6bae 11 1595 23
+6bbf 18 1626 23
+6bd7 b 1628 23
+6be2 e 1034 23
+6bf0 7 80 40
+6bf7 d 47 8
+6c04 b 46 8
+6c0f d 47 8
+6c1c 7 990 23
+6c23 12 1008 23
+6c35 2 1025 23
+6c37 a 216 9
+6c41 21 92 8
+6c62 8 485 23
+6c6a 28 487 23
+6c92 12 490 23
+6ca4 b 489 23
+6caf 9 490 23
+6cb8 b 1214 23
+6cc3 b 1215 23
+6cce b 1216 23
+6cd9 28 492 23
+6d01 4 42 6
+6d05 12 495 23
+6d17 b 494 23
+6d22 c 495 23
+6d2e b 1214 23
+6d39 b 1215 23
+6d44 b 1216 23
+6d4f 28 497 23
+6d77 12 500 23
+6d89 b 499 23
+6d94 9 500 23
+6d9d b 1214 23
+6da8 b 1215 23
+6db3 b 1216 23
+6dbe 28 502 23
+6de6 4 42 6
+6dea 12 505 23
+6dfc b 504 23
+6e07 c 505 23
+6e13 b 1214 23
+6e1e b 1215 23
+6e29 b 1216 23
+6e34 28 507 23
+6e5c 4 42 6
+6e60 12 510 23
+6e72 b 509 23
+6e7d c 510 23
+6e89 b 1214 23
+6e94 b 1215 23
+6e9f b 1216 23
+6eaa 28 512 23
+6ed2 4 42 6
+6ed6 12 515 23
+6ee8 b 514 23
+6ef3 c 515 23
+6eff b 1214 23
+6f0a b 1215 23
+6f15 b 1216 23
+6f20 28 517 23
+6f48 4 42 6
+6f4c 12 520 23
+6f5e b 519 23
+6f69 c 520 23
+6f75 b 1214 23
+6f80 b 1215 23
+6f8b b 1216 23
+6f96 28 522 23
+6fbe 4 42 6
+6fc2 b 524 23
+6fcd 7 42 6
+6fd4 4 1038 23
+6fd8 4 1040 23
+6fdc 3 1041 23
+6fdf 5 1040 23
+6fe4 e 1041 23
+6ff2 6 1045 23
+6ff8 2 1048 23
+6ffa 9 1045 23
+7003 1e 1051 23
+7021 10 1054 23
+7031 9 1057 23
+703a f 1049 23
+7049 9 1061 23
+7052 3 1064 23
+7055 6 444 23
+705b 3 1069 23
+705e 3 1064 23
+7061 5 444 23
+7066 d 1080 23
+7073 4 1076 23
+7077 4 444 23
+707b 11 1076 23
+708c 4 444 23
+7090 9 1076 23
+7099 e 1077 23
+70a7 d 1078 23
+70b4 a 216 9
+70be 21 92 8
+70df a 216 9
+70e9 21 92 8
+710a a 216 9
+7114 29 92 8
+713d d 1058 23
+714a f 1054 23
+7159 d 1055 23
+7166 d 1133 23
+7173 b 1214 23
+717e b 1215 23
+7189 b 1216 23
+7194 28 527 23
+71bc a 532 23
+71c6 a 533 23
+71d0 1e 1097 23
+71ee 8 1098 23
+71f6 4 1094 23
+71fa 1b 1100 23
+7215 8 1101 23
+721d 3 1102 23
+7220 5 1098 23
+7225 7 1105 23
+722c 2 1106 23
+722e 6 1105 23
+7234 6 1106 23
+723a 3 1110 23
+723d 4 161 9
+7241 c 60 8
+724d 14 161 9
+7261 17 212 9
+7278 7 161 9
+727f c 212 9
+728b b 59 8
+7296 5 60 8
+729b 8 1110 23
+72a3 8 1112 23
+72ab 8 1120 23
+72b3 3 1116 23
+72b6 5 1120 23
+72bb 5 1112 23
+72c0 d 1116 23
+72cd 1e 1118 23
+72eb c 1120 23
+72f7 8 1119 23
+72ff 3 1120 23
+7302 b 1121 23
+730d 1 1120 23
+730e 2 1121 23
+7310 1b 1123 23
+732b 1f 1126 23
+734a 4 1129 23
+734e 8 73 8
+7356 f 1132 23
+7365 7 1129 23
+736c 10 1130 23
+737c 10 1131 23
+738c 6 73 8
+7392 19 76 8
+73ab 9 1116 23
+73b4 d 1133 23
+73c1 5 1138 23
+73c6 18 161 9
+73de 16 212 9
+73f4 7 161 9
+73fb b 212 9
+7406 3 66 8
+7409 2f 212 9
+7438 6 66 8
+743e d 68 8
+744b b 67 8
+7456 5 68 8
+745b 8 1138 23
+7463 8 223 9
+746b c 1140 23
+7477 8 176 9
+747f 5 1145 23
+7484 f 76 44
+7493 b 1141 23
+749e 7 1146 23
+74a5 7 176 9
+74ac 7 1142 23
+74b3 8 1145 23
+74bb 8 1149 23
+74c3 18 92 43
+74db 7 1142 23
+74e2 7 1144 23
+74e9 c 92 43
+74f5 7 1144 23
+74fc 10 1147 23
+750c 10 1148 23
+751c 10 1151 23
+752c 5 76 44
+7531 4 84 44
+7535 13 1004 43
+7548 8 82 44
+7550 8 83 44
+7558 8 84 44
+7560 10 1004 43
+7570 1b 1156 23
+758b 8 83 8
+7593 17 1157 23
+75aa 6 83 8
+75b0 b 87 8
+75bb 12 1159 23
+75cd d 525 23
+75da 15 1133 23
+75ef 1f 73 8
+760e 16 1599 23
+7624 9 1600 23
+762d 2 1244 23
+762f 4 2711 15
+7633 6 1244 23
+7639 5 60 12
+763e d 198 12
+764b 2a 63 12
+7675 8 198 12
+767d d 49 4
+768a a 48 7
+7694 1a 1251 23
+76ae 12 1255 23
+76c0 b 1256 23
+76cb 15 1260 23
+76e0 8 42 6
+76e8 9 116 7
+76f1 b 1263 23
+76fc a 1252 23
+7706 1c 1276 23
+7722 8 42 6
+772a 5 116 7
+772f f 1279 23
+773e 17 1280 23
+7755 15 1267 23
+776a 8 1270 23
+7772 4 1271 23
+7776 a 1270 23
+7780 9 1283 23
+7789 8 42 6
+7791 5 134 12
+7796 c 2701 15
+77a2 3 135 12
+77a5 1c 2701 15
+77c1 a 134 12
+77cb 12 1290 23
+77dd 6 1287 23
+77e3 11 1297 23
+77f4 7 1299 23
+77fb f 1300 23
+780a 11 1302 23
+781b 8 1304 23
+7823 8 1302 23
+782b 6 1304 23
+7831 23 1306 23
+7854 b 42 6
+785f 6 2701 15
+7865 9 134 12
+786e 7 2701 15
+7875 3 135 12
+7878 32 2701 15
+78aa 10 1002 23
+78ba 11 216 9
+78cb 2b 92 8
+78f6 12 918 23
+7908 1f 83 8
+7927 7 1139 23
+792e 15 1159 23
+7943 1f 66 8
+FUNC 7970 1ac 0 google_breakpad::WriteMinidump(char const*, std::list<google_breakpad::MappingEntry, std::allocator<google_breakpad::MappingEntry> > const&, std::list<google_breakpad::AppMemory, std::allocator<google_breakpad::AppMemory> > const&, google_breakpad::LinuxDumper*)
+7970 11 1762 23
+7981 32 418 23
+79b3 a 190 12
+79bd 9 418 23
+79c6 1b 92 43
+79e1 9 418 23
+79ea 5 190 12
+79ef 4 420 23
+79f3 a 418 23
+79fd 6 420 23
+7a03 9 421 23
+7a0c f 425 23
+7a1b 3 428 23
+7a1e 5 429 23
+7a23 5 428 23
+7a28 5 429 23
+7a2d b 433 23
+7a38 4 1764 23
+7a3c 8 1766 23
+7a44 4 439 23
+7a48 2 1766 23
+7a4a 2 439 23
+7a4c b 441 23
+7a57 a 436 23
+7a61 f 1767 23
+7a70 10 430 23
+7a80 2 1765 23
+7a82 6 439 23
+7a88 10 440 23
+7a98 28 420 23
+7ac0 1f 421 23
+7adf 15 436 23
+7af4 18 418 23
+7b0c 10 1766 23
+FUNC 7b20 2ce 0 WriteMinidumpImpl
+7b20 2b 1669 23
+7b4b 8 1670 23
+7b53 3 1669 23
+7b56 2 1670 23
+7b58 6 1669 23
+7b5e 5 1670 23
+7b63 9 1672 23
+7b6c 2 1674 23
+7b6e 9 1673 23
+7b77 20 42 6
+7b97 41 1688 23
+7bd8 4 157 5
+7bdc 9 418 23
+7be5 8 157 5
+7bed 9 161 5
+7bf6 d 164 5
+7c03 34 418 23
+7c37 a 190 12
+7c41 9 418 23
+7c4a 1b 92 43
+7c65 9 418 23
+7c6e 5 190 12
+7c73 8 418 23
+7c7b 4 420 23
+7c7f 12 418 23
+7c91 6 420 23
+7c97 9 421 23
+7ca0 5 425 23
+7ca5 5 1162 23
+7caa a 425 23
+7cb4 3 428 23
+7cb7 5 429 23
+7cbc 5 428 23
+7cc1 5 429 23
+7cc6 b 433 23
+7cd1 4 1685 23
+7cd5 8 1687 23
+7cdd 4 439 23
+7ce1 2 1687 23
+7ce3 2 439 23
+7ce5 13 440 23
+7cf8 18 430 23
+7d10 2 1686 23
+7d12 6 439 23
+7d18 b 441 23
+7d23 15 436 23
+7d38 28 420 23
+7d60 19 418 23
+7d79 22 421 23
+7d9b 28 42 6
+7dc3 f 418 23
+7dd2 d 1687 23
+7ddf f 436 23
+FUNC 7df0 2b 0 google_breakpad::WriteMinidump(int, long, int, void const*, unsigned long, std::list<google_breakpad::MappingEntry, std::allocator<google_breakpad::MappingEntry> > const&, std::list<google_breakpad::AppMemory, std::allocator<google_breakpad::AppMemory> > const&)
+7df0 4 1753 23
+7df4 22 1756 23
+7e16 5 1757 23
+FUNC 7e20 2c 0 google_breakpad::WriteMinidump(char const*, long, int, void const*, unsigned long, std::list<google_breakpad::MappingEntry, std::allocator<google_breakpad::MappingEntry> > const&, std::list<google_breakpad::AppMemory, std::allocator<google_breakpad::AppMemory> > const&)
+7e20 4 1743 23
+7e24 23 1746 23
+7e47 5 1747 23
+FUNC 7e50 2a 0 google_breakpad::WriteMinidump(int, int, void const*, unsigned long, std::list<google_breakpad::MappingEntry, std::allocator<google_breakpad::MappingEntry> > const&, std::list<google_breakpad::AppMemory, std::allocator<google_breakpad::AppMemory> > const&)
+7e50 4 1733 23
+7e54 21 1736 23
+7e75 5 1737 23
+FUNC 7e80 2b 0 google_breakpad::WriteMinidump(char const*, int, void const*, unsigned long, std::list<google_breakpad::MappingEntry, std::allocator<google_breakpad::MappingEntry> > const&, std::list<google_breakpad::AppMemory, std::allocator<google_breakpad::AppMemory> > const&)
+7e80 4 1724 23
+7e84 22 1727 23
+7ea6 5 1728 23
+FUNC 7eb0 9a 0 google_breakpad::WriteMinidump(int, int, void const*, unsigned long)
+7eb0 16 1702 23
+7ec6 3 1702 23
+7ec9 a 387 41
+7ed3 16 1705 23
+7ee9 5 387 41
+7eee 5 388 41
+7ef3 5 387 41
+7ef8 5 388 41
+7efd 5 1705 23
+7f02 19 379 41
+7f1b 14 1706 23
+7f2f 1b 379 41
+FUNC 7f50 9b 0 google_breakpad::WriteMinidump(char const*, int, void const*, unsigned long)
+7f50 16 1695 23
+7f66 3 1695 23
+7f69 a 387 41
+7f73 17 1698 23
+7f8a 5 387 41
+7f8f 5 388 41
+7f94 5 387 41
+7f99 5 388 41
+7f9e 5 1698 23
+7fa3 19 379 41
+7fbc 14 1699 23
+7fd0 1b 379 41
+FUNC 7ff0 26a 0 google_breakpad::WriteMinidump(char const*, int, int)
+7ff0 10 1709 23
+8000 10 1710 23
+8010 4 387 41
+8014 7 164 5
+801b 5 418 23
+8020 5 387 41
+8025 b 161 5
+8030 8 418 23
+8038 4 387 41
+803c 5 388 41
+8041 5 387 41
+8046 5 388 41
+804b 26 418 23
+8071 a 190 12
+807b 9 418 23
+8084 21 92 43
+80a5 9 418 23
+80ae 5 190 12
+80b3 5 420 23
+80b8 14 418 23
+80cc 6 420 23
+80d2 9 421 23
+80db 10 379 41
+80eb 13 425 23
+80fe 4 428 23
+8102 5 429 23
+8107 5 428 23
+810c 5 429 23
+8111 b 433 23
+811c 4 1716 23
+8120 a 1718 23
+812a 5 439 23
+812f 2 1718 23
+8131 2 439 23
+8133 b 441 23
+813e a 436 23
+8148 1b 42 6
+8163 15 1719 23
+8178 18 430 23
+8190 2 1717 23
+8192 7 439 23
+8199 f 440 23
+81a8 28 420 23
+81d0 22 421 23
+81f2 23 42 6
+8215 f 1718 23
+8224 d 418 23
+8231 1a 379 41
+824b f 436 23
+FUNC 8260 153 0 google_breakpad::PageAllocator::Alloc(unsigned int)
+8260 8 71 12
+8268 25 70 12
+828d b 74 12
+8298 b 74 12
+82a3 2 75 12
+82a5 2 76 12
+82a7 3 75 12
+82aa 8 77 12
+82b2 3 76 12
+82b5 2b 97 12
+82e0 c 86 12
+82ec f 2816 15
+82fb 3 86 12
+82fe 5 2816 15
+8303 6 86 12
+8309 2a 2816 15
+8333 d 89 12
+8340 6 120 12
+8346 2 93 12
+8348 4 124 12
+834c 3 93 12
+834f 4 125 12
+8353 5 93 12
+8358 4 124 12
+835c 5 93 12
+8361 4 126 12
+8365 8 93 12
+836d 5 94 12
+8372 3 93 12
+8375 13 94 12
+8388 10 96 12
+8398 7 78 12
+839f 11 79 12
+83b0 2 72 12
+83b2 1 97 12
+FUNC 83c0 248 0 google_breakpad::ProcCpuInfoReader::GetNextField(char const**)
+83c0 4 54 7
+83c4 4 118 4
+83c8 10 54 7
+83d8 b 60 7
+83e3 e 116 4
+83f1 2 117 4
+83f3 8 118 4
+83fb 7 117 4
+8402 5 118 4
+8407 e 62 7
+8415 6 99 4
+841b f 66 4
+842a 3 99 4
+842d 3 2724 15
+8430 5 98 4
+8435 3 99 4
+8438 13 2724 15
+844b a 100 4
+8455 a 102 4
+845f 4 103 4
+8463 5 66 4
+8468 14 70 4
+847c c 54 7
+8488 10 70 4
+8498 8 69 4
+84a0 b 78 4
+84ab a 86 4
+84b5 8 87 4
+84bd 3 92 4
+84c0 7 90 4
+84c7 e 92 4
+84d5 5 71 4
+84da 6 68 7
+84e0 8 77 7
+84e8 4 70 7
+84ec 5 77 7
+84f1 3 78 7
+84f4 3 77 7
+84f7 6 78 7
+84fd 5 83 7
+8502 5 84 7
+8507 3 88 7
+850a 7 87 7
+8511 3 88 7
+8514 3 92 7
+8517 7 88 7
+851e 2 92 7
+8520 9 95 7
+8529 5 99 7
+852e 4 101 7
+8532 c 104 7
+853e 5 102 7
+8543 d 104 7
+8550 e 84 7
+855e 4 85 7
+8562 e 84 7
+8570 f 92 7
+857f 4 93 7
+8583 d 92 7
+8590 10 105 4
+85a0 e 2724 15
+85ae 4 104 7
+85b2 2 66 7
+85b4 b 104 7
+85bf b 70 4
+85ca 1f 116 4
+85e9 1f 87 4
+FUNC 8610 22 0 google_breakpad::TypedMDRVA<unsigned int>::~TypedMDRVA()
+8610 6 216 9
+8616 1c 92 8
+FUNC 8640 22 0 google_breakpad::TypedMDRVA<MDRawContextAMD64>::~TypedMDRVA()
+8640 9 216 9
+8649 19 92 8
+FUNC 8670 22 0 google_breakpad::TypedMDRVA<MDRawLinkMap>::~TypedMDRVA()
+8670 6 216 9
+8676 1c 92 8
+FUNC 86a0 22 0 google_breakpad::TypedMDRVA<MDRawDebug>::~TypedMDRVA()
+86a0 6 216 9
+86a6 1c 92 8
+FUNC 86d0 229 0 std::vector<MDMemoryDescriptor, google_breakpad::PageStdAllocator<MDMemoryDescriptor> >::reserve(unsigned long)
+86d0 a 69 44
+86da 25 66 44
+86ff 9 69 44
+8708 4 42 6
+870c e 707 43
+871a 5 71 44
+871f 29 86 44
+8748 4 42 6
+874c 2 169 43
+874e 4 42 6
+8752 7 626 43
+8759 3 169 43
+875c 5 626 43
+8761 2 169 43
+8763 8 162 12
+876b 4 71 12
+876f 1c 74 12
+878b 2 75 12
+878d 2 76 12
+878f 3 75 12
+8792 8 77 12
+879a 4 76 12
+879e 12 245 42
+87b0 13 120 46
+87c3 d 245 42
+87d0 5 83 44
+87d5 4 84 44
+87d9 5 82 44
+87de 7 83 44
+87e5 3 84 44
+87e8 5 83 44
+87ed 13 84 44
+8800 e 86 12
+880e e 2816 15
+881c 3 86 12
+881f 5 2816 15
+8824 9 86 12
+882d 30 2816 15
+885d b 89 12
+8868 8 120 12
+8870 9 124 12
+8879 4 125 12
+887d 5 93 12
+8882 3 124 12
+8885 3 125 12
+8888 3 93 12
+888b 4 126 12
+888f 16 93 12
+88a5 5 94 12
+88aa 4 93 12
+88ae 11 94 12
+88bf 5 96 12
+88c4 4 94 12
+88c8 10 96 12
+88d8 8 78 12
+88e0 d 79 12
+88ed c 70 44
+FUNC 8900 357 0 std::vector<MDMemoryDescriptor, google_breakpad::PageStdAllocator<MDMemoryDescriptor> >::_M_insert_aux(__gnu_cxx::__normal_iterator<MDMemoryDescriptor*, std::vector<MDMemoryDescriptor, google_breakpad::PageStdAllocator<MDMemoryDescriptor> > >, MDMemoryDescriptor const&)
+8900 28 316 44
+8928 8 320 44
+8930 3 316 44
+8933 2 320 44
+8935 14 120 46
+8949 4 329 44
+894d 4 325 44
+8951 7 327 44
+8958 3 559 38
+895b 4 325 44
+895f 4 327 44
+8963 4 559 38
+8967 5 560 38
+896c f 561 38
+897b a 333 44
+8985 2b 391 44
+89b0 4 42 6
+89b4 a 626 43
+89be 9 215 38
+89c7 4 1308 43
+89cb 9 1309 43
+89d4 3 900 39
+89d7 d 162 12
+89e4 3 900 39
+89e7 4 162 12
+89eb 8 342 44
+89f3 23 74 12
+8a16 3 75 12
+8a19 2 76 12
+8a1b 3 75 12
+8a1e 8 77 12
+8a26 8 76 12
+8a2e 8 351 44
+8a36 13 120 46
+8a49 f 245 42
+8a58 13 120 46
+8a6b d 245 42
+8a78 13 316 44
+8a8b 15 245 42
+8aa0 13 120 46
+8ab3 d 245 42
+8ac0 10 316 44
+8ad0 4 387 44
+8ad4 5 389 44
+8ad9 4 388 44
+8add 13 389 44
+8af0 3 900 39
+8af3 d 162 12
+8b00 3 900 39
+8b03 5 162 12
+8b08 10 342 44
+8b18 7 86 12
+8b1f 2 2816 15
+8b21 7 86 12
+8b28 d 2816 15
+8b35 3 86 12
+8b38 5 2816 15
+8b3d 9 86 12
+8b46 30 2816 15
+8b76 17 89 12
+8b8d 8 120 12
+8b95 9 124 12
+8b9e 4 125 12
+8ba2 5 93 12
+8ba7 3 124 12
+8baa 3 125 12
+8bad 3 93 12
+8bb0 4 126 12
+8bb4 16 93 12
+8bca 5 94 12
+8bcf 4 93 12
+8bd3 15 94 12
+8be8 b 96 12
+8bf3 8 78 12
+8bfb d 79 12
+8c08 13 1309 43
+8c1b 7 900 39
+8c22 6 169 43
+8c28 8 900 39
+8c30 2 169 43
+8c32 4 342 44
+8c36 3 169 43
+8c39 4 342 44
+8c3d 6 169 43
+8c43 7 162 12
+8c4a d 71 12
+FUNC 8c60 17f 0 char* std::vector<char, google_breakpad::PageStdAllocator<char> >::_M_allocate_and_copy<char*>(unsigned long, char*, char*)
+8c60 2 1106 43
+8c62 2 169 43
+8c64 12 1106 43
+8c76 5 169 43
+8c7b 2 71 12
+8c7d 5 162 12
+8c82 2 71 12
+8c84 1e 74 12
+8ca2 2 75 12
+8ca4 2 76 12
+8ca6 3 75 12
+8ca9 8 77 12
+8cb1 5 76 12
+8cb6 a 245 42
+8cc0 a 120 46
+8cca d 245 42
+8cd7 19 1121 43
+8cf0 c 86 12
+8cfc f 2816 15
+8d0b 3 86 12
+8d0e 8 2816 15
+8d16 9 86 12
+8d1f 3b 2816 15
+8d5a e 89 12
+8d68 6 120 12
+8d6e 5 124 12
+8d73 8 93 12
+8d7b 3 124 12
+8d7e 4 125 12
+8d82 5 93 12
+8d87 3 125 12
+8d8a 5 93 12
+8d8f 5 126 12
+8d94 8 93 12
+8d9c 5 94 12
+8da1 5 93 12
+8da6 14 94 12
+8dba e 96 12
+8dc8 9 78 12
+8dd1 e 79 12
+FUNC 8de0 3cd 0 std::vector<char, google_breakpad::PageStdAllocator<char> >::_M_fill_insert(__gnu_cxx::__normal_iterator<char*, std::vector<char, google_breakpad::PageStdAllocator<char> > >, unsigned long, char const&)
+8de0 11 439 44
+8df1 c 442 44
+8dfd 1b 444 44
+8e18 3 900 39
+8e1b 4 447 44
+8e1f 3 900 39
+8e22 9 450 44
+8e2b 6 452 44
+8e31 f 245 42
+8e40 b 120 46
+8e4b 12 245 42
+8e5d 3 456 44
+8e60 3 560 38
+8e63 5 456 44
+8e68 2 560 38
+8e6a b 561 38
+8e75 b 697 38
+8e80 9 86 12
+8e89 9 2816 15
+8e92 a 86 12
+8e9c 6 2816 15
+8ea2 3 86 12
+8ea5 5 2816 15
+8eaa 9 86 12
+8eb3 24 2816 15
+8ed7 c 120 12
+8ee3 9 124 12
+8eec 4 93 12
+8ef0 4 124 12
+8ef4 3 93 12
+8ef7 3 124 12
+8efa 4 125 12
+8efe 5 93 12
+8f03 4 125 12
+8f07 4 126 12
+8f0b 16 93 12
+8f21 5 94 12
+8f26 4 93 12
+8f2a 15 94 12
+8f3f 5 96 12
+8f44 4 94 12
+8f48 4 96 12
+8f4c 8 486 44
+8f54 c 439 44
+8f60 c 120 46
+8f6c 9 321 42
+8f75 5 491 44
+8f7a 16 245 42
+8f90 a 120 46
+8f9a d 245 42
+8fa7 9 439 44
+8fb0 5 498 44
+8fb5 3 496 44
+8fb8 10 245 42
+8fc8 a 120 46
+8fd2 d 245 42
+8fdf 6 439 44
+8fe5 5 520 44
+8fea 5 522 44
+8fef 5 521 44
+8ff4 5 522 44
+8ff9 17 525 44
+9010 9 321 42
+9019 4 439 44
+901d 3 444 44
+9020 8 120 46
+9028 e 321 42
+9036 3 468 44
+9039 3 245 42
+903c 5 468 44
+9041 f 245 42
+9050 b 120 46
+905b 12 245 42
+906d 8 472 44
+9075 4 525 44
+9079 7 697 38
+9080 a 525 44
+908a 6 697 38
+9090 8 626 43
+9098 f 1305 43
+90a7 a 1308 43
+90b1 5 1309 43
+90b6 3 900 39
+90b9 4 162 12
+90bd 9 1309 43
+90c6 3 900 39
+90c9 4 162 12
+90cd 5 900 39
+90d2 4 162 12
+90d6 28 74 12
+90fe 3 75 12
+9101 2 76 12
+9103 3 75 12
+9106 4 77 12
+910a e 76 12
+9118 3 900 39
+911b c 169 43
+9127 3 900 39
+912a 3 169 43
+912d 5 900 39
+9132 6 169 43
+9138 4 162 12
+913c 2 71 12
+913e 2 162 12
+9140 5 71 12
+9145 4 162 12
+9149 f 71 12
+9158 10 2816 15
+9168 8 89 12
+9170 c 78 12
+917c d 79 12
+9189 8 245 42
+9191 8 444 44
+9199 8 241 42
+91a1 c 1306 43
+FUNC 91b0 1a 0 google_breakpad::MinidumpFileWriter::MinidumpFileWriter()
+91b0 1a 55 24
+FUNC 91d0 87 0 google_breakpad::MinidumpFileWriter::Open(char const*)
+91d0 e 63 24
+91de 3 64 24
+91e1 3 63 24
+91e4 5 64 24
+91e9 2c 2711 15
+9215 2 66 24
+9217 21 72 24
+9238 1f 64 24
+FUNC 9260 2c 0 google_breakpad::MinidumpFileWriter::SetFile(int)
+9260 5 75 24
+9265 2 76 24
+9267 5 77 24
+926c 7 75 24
+9273 1 74 24
+9274 18 75 24
+FUNC 9290 78 0 google_breakpad::MinidumpFileWriter::Close()
+9290 16 80 24
+92a6 2 83 24
+92a8 5 81 24
+92ad 5 83 24
+92b2 3 84 24
+92b5 2 85 24
+92b7 a 84 24
+92c1 20 2629 15
+92e1 6 92 24
+92e7 21 96 24
+FUNC 9310 15 0 google_breakpad::MinidumpFileWriter::~MinidumpFileWriter()
+9310 10 59 24
+9320 5 60 24
+FUNC 9330 d6 0 google_breakpad::MinidumpFileWriter::Allocate(unsigned long)
+9330 18 220 24
+9348 5 221 24
+934d 10 222 24
+935d 3 225 24
+9360 4 223 24
+9364 4 225 24
+9368 4 223 24
+936c a 225 24
+9376 5 241 24
+937b 1d 244 24
+9398 7 227 24
+939f 3 234 24
+93a2 a 233 24
+93ac a 234 24
+93b6 5 235 24
+93bb 4 234 24
+93bf 9 237 24
+93c8 1f 221 24
+93e7 1f 222 24
+FUNC 9410 fa 0 google_breakpad::MinidumpFileWriter::Copy(unsigned int, void const*, long)
+9410 9 246 24
+9419 9 247 24
+9422 f 248 24
+9431 8 249 24
+9439 c 252 24
+9445 2 267 24
+9447 9 268 24
+9450 14 2699 15
+9464 5 257 24
+9469 1b 2773 15
+9484 c 258 24
+9490 b 2699 15
+949b 12 2773 15
+94ad 1f 249 24
+94cc 1f 248 24
+94eb 1f 247 24
+FUNC 9510 a8 0 google_breakpad::MinidumpFileWriter::CopyStringToMDString(wchar_t const*, unsigned int, google_breakpad::TypedMDRVA<MDString>*)
+9510 e 100 24
+951e 1a 110 24
+9538 3 116 24
+953b 4 117 24
+953f 6 122 24
+9545 8 284 24
+954d 16 122 24
+9563 7 83 8
+956a 3 87 8
+956d 3 125 24
+9570 12 87 8
+9582 8 110 24
+958a c 111 24
+9596 7 112 24
+959d 2 113 24
+959f d 129 24
+95ac 5 101 24
+95b1 7 128 24
+FUNC 95c0 aa 0 google_breakpad::MinidumpFileWriter::CopyStringToMDString(char const*, unsigned int, google_breakpad::TypedMDRVA<MDString>*)
+95c0 e 133 24
+95ce 1a 139 24
+95e8 2 145 24
+95ea 2 146 24
+95ec 4 284 24
+95f0 3 146 24
+95f3 6 149 24
+95f9 5 284 24
+95fe 18 149 24
+9616 8 83 8
+961e 3 87 8
+9621 3 152 24
+9624 12 87 8
+9636 8 139 24
+963e d 140 24
+964b 4 141 24
+964f 2 142 24
+9651 d 155 24
+965e c 134 24
+FUNC 9670 41 0 google_breakpad::UntypedMDRVA::Allocate(unsigned long)
+9670 1 270 24
+9671 5 271 24
+9676 3 270 24
+9679 2 271 24
+967b 4 272 24
+967f 8 273 24
+9687 3 274 24
+968a 3 273 24
+968d 3 274 24
+9690 2 275 24
+9692 1f 271 24
+FUNC 96c0 88 0 google_breakpad::UntypedMDRVA::Copy(unsigned int, void const*, unsigned long)
+96c0 4 277 24
+96c4 5 278 24
+96c9 5 279 24
+96ce 12 280 24
+96e0 3 281 24
+96e3 4 282 24
+96e7 5 281 24
+96ec 1e 278 24
+970a 1f 280 24
+9729 1f 279 24
+FUNC 9750 c4 0 google_breakpad::MinidumpFileWriter::WriteMemory(void const*, unsigned long, MDMemoryDescriptor*)
+9750 9 204 24
+9759 9 205 24
+9762 8 206 24
+976a 7 161 9
+9771 6 209 24
+9777 d 161 9
+9784 9 209 24
+978d 4 218 24
+9791 2 210 24
+9793 d 218 24
+97a0 14 186 9
+97b4 4 211 24
+97b8 5 176 9
+97bd 3 214 24
+97c0 3 176 9
+97c3 7 215 24
+97ca 4 218 24
+97ce 5 217 24
+97d3 3 218 24
+97d6 1f 206 24
+97f5 1f 205 24
+FUNC 9820 5 0 google_breakpad::MinidumpFileWriter::WriteString(char const*, unsigned int, MDLocationDescriptor*)
+9820 5 200 24
+FUNC 9830 5 0 google_breakpad::MinidumpFileWriter::WriteString(wchar_t const*, unsigned int, MDLocationDescriptor*)
+9830 5 195 24
+FUNC 9840 22 0 google_breakpad::TypedMDRVA<MDString>::~TypedMDRVA()
+9840 6 216 9
+9846 1c 92 8
+FUNC 9870 1e8 0 bool google_breakpad::MinidumpFileWriter::WriteStringCore<char>(char const*, unsigned int, MDLocationDescriptor*)
+9870 f 158 24
+987f 9 161 24
+9888 c 162 24
+9894 d 167 24
+98a1 9 168 24
+98aa 8 161 9
+98b2 5 212 9
+98b7 9 161 9
+98c0 11 212 9
+98d1 4 161 9
+98d5 5 68 8
+98da 8 67 8
+98e2 5 68 8
+98e7 4 173 24
+98eb 4 177 24
+98ef d 179 24
+98fc 5 177 24
+9901 5 179 24
+9906 8 182 24
+990e 2 174 24
+9910 7 216 9
+9917 18 92 8
+992f 11 191 24
+9940 10 158 24
+9950 7 168 24
+9957 11 161 9
+9968 17 212 9
+997f 4 161 9
+9983 3 173 24
+9986 1e 66 8
+99a4 c 168 24
+99b0 5 83 8
+99b5 7 183 24
+99bc 9 184 24
+99c5 2 83 8
+99c7 14 87 8
+99db 2 186 24
+99dd 2 87 8
+99df 6 186 24
+99e5 9 176 9
+99ee 12 187 24
+9a00 15 190 24
+9a15 1f 162 24
+9a34 24 161 24
+FUNC 9a60 1e8 0 bool google_breakpad::MinidumpFileWriter::WriteStringCore<wchar_t>(wchar_t const*, unsigned int, MDLocationDescriptor*)
+9a60 f 158 24
+9a6f 9 161 24
+9a78 f 162 24
+9a87 2 168 24
+9a89 a 167 24
+9a93 8 168 24
+9a9b 8 161 9
+9aa3 5 212 9
+9aa8 9 161 9
+9ab1 11 212 9
+9ac2 4 161 9
+9ac6 5 68 8
+9acb 8 67 8
+9ad3 5 68 8
+9ad8 4 173 24
+9adc 4 177 24
+9ae0 d 179 24
+9aed 5 177 24
+9af2 5 179 24
+9af7 8 182 24
+9aff 2 174 24
+9b01 7 216 9
+9b08 18 92 8
+9b20 10 191 24
+9b30 10 158 24
+9b40 7 168 24
+9b47 11 161 9
+9b58 17 212 9
+9b6f 4 161 9
+9b73 3 173 24
+9b76 1e 66 8
+9b94 c 168 24
+9ba0 5 83 8
+9ba5 7 183 24
+9bac 9 184 24
+9bb5 2 83 8
+9bb7 14 87 8
+9bcb 2 186 24
+9bcd 2 87 8
+9bcf 6 186 24
+9bd5 9 176 9
+9bde 12 187 24
+9bf0 15 190 24
+9c05 1f 162 24
+9c24 24 161 24
+FUNC 9c50 78 0 google_breakpad::UTF8ToUTF16Char(char const*, int, unsigned short*)
+9c50 2 58 32
+9c52 6 78 32
+9c58 2 58 32
+9c5a 4 62 32
+9c5e 5 58 32
+9c63 4 60 32
+9c67 4 58 32
+9c6b b 63 32
+9c76 4 59 32
+9c7a 6 61 32
+9c80 16 69 32
+9c96 4 71 32
+9c9a 4 76 32
+9c9e 4 75 32
+9ca2 5 78 32
+9ca7 4 83 32
+9cab 2 82 32
+9cad b 83 32
+9cb8 3 72 32
+9cbb 5 83 32
+9cc0 2 72 32
+9cc2 6 83 32
+FUNC 9cd0 56 0 google_breakpad::UTF32ToUTF16Char(wchar_t, unsigned short*)
+9cd0 4 102 32
+9cd4 3 110 32
+9cd7 4 106 32
+9cdb 4 102 32
+9cdf b 107 32
+9cea 5 103 32
+9cef 4 102 32
+9cf3 a 110 32
+9cfd 5 105 32
+9d02 5 103 32
+9d07 5 104 32
+9d0c 5 110 32
+9d11 4 112 32
+9d15 b 113 32
+9d20 6 115 32
+FUNC 9d30 147 0 google_breakpad::UTF16ToUTF8(std::vector<unsigned short, std::allocator<unsigned short> > const&, bool)
+9d30 12 121 32
+9d42 3 155 32
+9d45 2 126 32
+9d47 4 626 43
+9d4b 5 122 32
+9d50 9 126 32
+9d59 2 71 14
+9d5b 6 626 43
+9d61 8 139 32
+9d69 4 138 32
+9d6d 8 140 32
+9d75 4 142 32
+9d79 10 145 32
+9d89 3 140 32
+9d8c 5 141 32
+9d91 5 145 32
+9d96 2 147 32
+9d98 5 149 32
+9d9d 2 147 32
+9d9f b 149 32
+9daa d 164 14
+9db7 8 75 14
+9dbf 11 153 32
+9dd0 18 152 32
+9de8 3 626 43
+9deb 9 128 32
+9df4 3 81 14
+9df7 3 128 32
+9dfa 2 81 14
+9dfc 7 82 14
+9e03 c 155 32
+9e0f 11 130 32
+9e20 7 132 32
+9e27 f 118 32
+9e36 5 130 32
+9e3b 5 134 32
+9e40 3 155 32
+9e43 b 134 32
+9e4e 2 71 14
+9e50 10 75 14
+9e60 17 164 14
+FUNC 9e80 e3 0 google_breakpad::UTF8ToUTF16(char const*, std::vector<unsigned short, std::allocator<unsigned short> >*)
+9e80 c 41 32
+9e8c 5 42 32
+9e91 3 1097 43
+9e94 b 1004 43
+9e9f 5 43 32
+9ea4 7 47 32
+9eab 3 44 32
+9eae 4 1320 43
+9eb2 5 1004 43
+9eb7 3 155 32
+9eba 4 707 43
+9ebe b 52 32
+9ec9 3 707 43
+9ecc 5 48 32
+9ed1 3 707 43
+9ed4 4 49 32
+9ed8 a 52 32
+9ee2 2 55 32
+9ee4 3 155 32
+9ee7 2 55 32
+9ee9 5 55 32
+9eee b 155 32
+9ef9 3 55 32
+9efc 3 626 43
+9eff 3 55 32
+9f02 6 626 43
+9f08 4 55 32
+9f0c 3 686 43
+9f0f 3 626 43
+9f12 2 686 43
+9f14 5 688 43
+9f19 8 689 43
+9f21 f 56 32
+9f30 3 687 43
+9f33 d 1004 43
+9f40 10 56 32
+9f50 4 626 43
+9f54 2 55 32
+9f56 6 626 43
+9f5c 7 688 43
+FUNC 9f70 e3 0 google_breakpad::UTF32ToUTF16(wchar_t const*, std::vector<unsigned short, std::allocator<unsigned short> >*)
+9f70 c 85 32
+9f7c 5 86 32
+9f81 3 1097 43
+9f84 b 1004 43
+9f8f 5 87 32
+9f94 7 91 32
+9f9b 5 88 32
+9fa0 4 1320 43
+9fa4 5 1004 43
+9fa9 3 155 32
+9fac 4 707 43
+9fb0 b 96 32
+9fbb 3 707 43
+9fbe 5 92 32
+9fc3 3 707 43
+9fc6 4 93 32
+9fca a 96 32
+9fd4 2 99 32
+9fd6 3 155 32
+9fd9 2 99 32
+9fdb 5 99 32
+9fe0 b 155 32
+9feb 3 99 32
+9fee 3 626 43
+9ff1 3 99 32
+9ff4 6 626 43
+9ffa 4 99 32
+9ffe 3 686 43
+a001 3 626 43
+a004 2 686 43
+a006 5 688 43
+a00b 8 689 43
+a013 d 100 32
+a020 3 687 43
+a023 d 1004 43
+a030 10 100 32
+a040 4 626 43
+a044 2 99 32
+a046 6 626 43
+a04c 7 688 43
+FUNC a060 295 0 std::vector<unsigned short, std::allocator<unsigned short> >::_M_fill_insert(__gnu_cxx::__normal_iterator<unsigned short*, std::vector<unsigned short, std::allocator<unsigned short> > >, unsigned long, unsigned short const&)
+a060 25 439 44
+a085 9 442 44
+a08e 1d 444 44
+a0ab 3 900 39
+a0ae 3 447 44
+a0b1 6 900 39
+a0b7 9 450 44
+a0c0 3 464 44
+a0c3 d 743 38
+a0d0 3 745 38
+a0d3 a 743 38
+a0dd 8 468 44
+a0e5 3 365 38
+a0e8 4 468 44
+a0ec 6 365 38
+a0f2 3 472 44
+a0f5 3 686 38
+a0f8 4 472 44
+a0fc c 686 38
+a108 7 687 38
+a10f 5 686 38
+a114 2c 525 44
+a140 3 155 32
+a143 d 1305 43
+a150 6 626 43
+a156 c 1305 43
+a162 6 1308 43
+a168 3 900 39
+a16b 4 1308 43
+a16f 3 900 39
+a172 3 480 44
+a175 9 1309 43
+a17e 7 480 44
+a185 19 94 46
+a19e 5 486 44
+a1a3 d 155 32
+a1b0 4 745 38
+a1b4 a 743 38
+a1be 3 364 38
+a1c1 3 365 38
+a1c4 3 364 38
+a1c7 5 365 38
+a1cc f 366 38
+a1db 4 364 38
+a1df 3 367 38
+a1e2 4 496 44
+a1e6 3 365 38
+a1e9 3 364 38
+a1ec 5 365 38
+a1f1 12 366 38
+a203 4 517 44
+a207 3 367 38
+a20a 5 174 43
+a20f 5 100 46
+a214 3 522 44
+a217 4 520 44
+a21b 4 521 44
+a21f 11 522 44
+a230 20 366 38
+a250 3 452 44
+a253 3 364 38
+a256 3 444 44
+a259 3 365 38
+a25c 3 364 38
+a25f 5 365 38
+a264 12 366 38
+a276 3 559 38
+a279 3 456 44
+a27c 3 559 38
+a27f 4 456 44
+a283 5 560 38
+a288 12 561 38
+a29a 3 459 44
+a29d 13 686 38
+a2b0 7 687 38
+a2b7 11 686 38
+a2c8 9 1309 43
+a2d1 e 169 43
+a2df 16 1306 43
+FUNC a300 73 0 CreateGUID(MDGUID*)
+a300 1 87 28
+a301 7 75 28
+a308 3 87 28
+a30b c 75 28
+a317 7 65 28
+a31e 9 66 28
+a327 9 67 28
+a330 7 68 28
+a337 3 57 28
+a33a 6 58 28
+a340 2 59 28
+a342 3 60 28
+a345 3 59 28
+a348 3 60 28
+a34b 3 59 28
+a34e 7 69 28
+a355 3 57 28
+a358 6 58 28
+a35e 2 59 28
+a360 3 60 28
+a363 3 59 28
+a366 3 60 28
+a369 3 59 28
+a36c 7 89 28
+FUNC a380 ad 0 GUIDToString(MDGUID const*, char*, int)
+a380 5 92 28
+a385 9 94 28
+a38e b 53 28
+a399 3 98 28
+a39c 4 53 28
+a3a0 a 98 28
+a3aa 13 53 28
+a3bd 4 98 28
+a3c1 1a 53 28
+a3db 7 98 28
+a3e2 5 53 28
+a3e7 f 98 28
+a3f6 2 100 28
+a3f8 5 99 28
+a3fd 4 102 28
+a401 5 103 28
+a406 8 104 28
+a40e 1f 94 28
+FUNC a430 16 0 GUIDGenerator::InitOnceImpl()
+a430 4 78 28
+a434 7 79 28
+a43b 4 80 28
+a43f 7 79 28
+FUNC a450 1e 0 my_strlen
+a450 10 42 29
+a460 c 42 29
+a46c 2 44 29
+FUNC a470 33 0 my_strcmp
+a470 8 46 29
+a478 2 50 29
+a47a 4 52 29
+a47e 4 54 29
+a482 4 55 29
+a486 7 48 29
+a48d b 49 29
+a498 8 51 29
+a4a0 2 53 29
+a4a2 1 57 29
+FUNC a4b0 56 0 my_strncmp
+a4b0 5 60 29
+a4b5 7 61 29
+a4bc 2 63 29
+a4be 12 65 29
+a4d0 9 61 29
+a4d9 2 63 29
+a4db 4 65 29
+a4df 9 60 29
+a4e8 2 71 29
+a4ea 6 72 29
+a4f0 10 62 29
+a500 6 64 29
+FUNC a510 54 0 my_strtoui
+a510 3 79 29
+a513 2 80 29
+a515 4 79 29
+a519 8 87 29
+a521 f 89 29
+a530 7 86 29
+a537 8 87 29
+a53f 5 89 29
+a544 4 90 29
+a548 2 89 29
+a54a 4 82 29
+a54e 7 83 29
+a555 2 94 29
+a557 9 95 29
+a560 2 80 29
+a562 2 96 29
+FUNC a570 36 0 my_uint_len
+a570 3 100 29
+a573 3 99 29
+a576 5 101 29
+a57b 4 100 29
+a57f 14 106 29
+a593 3 105 29
+a596 7 106 29
+a59d 5 104 29
+a5a2 2 109 29
+a5a4 2 110 29
+FUNC a5b0 43 0 my_uitos
+a5b0 5 119 29
+a5b5 a 120 29
+a5bf 9 119 29
+a5c8 1d 120 29
+a5e5 3 119 29
+a5e8 4 120 29
+a5ec 7 119 29
+FUNC a600 42 0 my_strchr
+a600 3 124 29
+a603 3 123 29
+a606 4 124 29
+a60a 16 128 29
+a620 8 124 29
+a628 4 125 29
+a62c 7 124 29
+a633 f 124 29
+FUNC a650 26 0 my_strrchr
+a650 10 133 29
+a660 7 134 29
+a667 4 136 29
+a66b 9 133 29
+a674 2 139 29
+FUNC a680 32 0 my_memchr
+a680 3 143 29
+a683 5 144 29
+a688 17 145 29
+a69f 9 144 29
+a6a8 8 148 29
+a6b0 2 149 29
+FUNC a6c0 64 0 my_read_hex_ptr
+a6c0 3 155 29
+a6c3 d 156 29
+a6d0 3 161 29
+a6d3 4 160 29
+a6d7 6 161 29
+a6dd 4 158 29
+a6e1 b 159 29
+a6ec 8 162 29
+a6f4 3 164 29
+a6f7 4 163 29
+a6fb d 164 29
+a708 8 165 29
+a710 3 167 29
+a713 4 166 29
+a717 9 167 29
+a720 3 173 29
+a723 1 175 29
+FUNC a730 3a 0 my_read_decimal_ptr
+a730 3 181 29
+a733 3 177 29
+a736 12 181 29
+a748 3 183 29
+a74b 4 182 29
+a74f 4 180 29
+a753 7 183 29
+a75a c 181 29
+a766 3 188 29
+a769 1 190 29
+FUNC a770 1e 0 my_memset
+a770 3 194 29
+a773 4 192 29
+a777 9 194 29
+a780 7 195 29
+a787 7 194 29
+FUNC a790 38 0 my_strlcpy
+a790 10 202 29
+a7a0 9 203 29
+a7a9 7 204 29
+a7b0 4 207 29
+a7b4 8 202 29
+a7bc 5 209 29
+a7c1 5 210 29
+a7c6 2 213 29
+FUNC a7d0 3e 0 my_strlcat
+a7d0 1 215 29
+a7d1 2 216 29
+a7d3 d 218 29
+a7e0 4 219 29
+a7e4 5 218 29
+a7e9 7 225 29
+a7f0 6 218 29
+a7f6 5 221 29
+a7fb e 224 29
+a809 5 225 29
+FUNC a810 4e 0 my_isspace
+a810 a 229 29
+a81a a 227 29
+a824 a 229 29
+a82e 19 227 29
+a847 4 231 29
+a84b 5 230 29
+a850 2 234 29
+a852 6 235 29
+a858 6 232 29
+FUNC a860 1aa 0 google_breakpad::CrashGenerationClient::RequestDump(void const*, unsigned long)
+a860 5 46 16
+a865 a 2795 15
+a86f 5 46 16
+a874 3 2795 15
+a877 5 46 16
+a87c 2 2795 15
+a87e 9 46 16
+a887 1e 2795 15
+a8a5 c 52 16
+a8b1 5 60 16
+a8b6 8 52 16
+a8be 5 57 16
+a8c3 a 60 16
+a8cd 5 54 16
+a8d2 5 55 16
+a8d7 5 57 16
+a8dc 9 58 16
+a8e5 6 2785 15
+a8eb 5 60 16
+a8f0 4 69 16
+a8f4 8 61 16
+a8fc 3 2785 15
+a8ff c 62 16
+a90b 8 65 16
+a913 8 66 16
+a91b 9 67 16
+a924 4 69 16
+a928 19 2785 15
+a941 9 2785 15
+a94a 5 71 16
+a94f 5 71 16
+a954 24 2629 15
+a978 9 73 16
+a981 7 2724 15
+a988 14 2724 15
+a99c 7 81 16
+a9a3 5 80 16
+a9a8 10 81 16
+a9b8 5 71 16
+a9bd 13 45 16
+a9d0 10 2724 15
+a9e0 3 78 16
+a9e3 2 2724 15
+a9e5 13 78 16
+a9f8 7 81 16
+a9ff 2 74 16
+aa01 9 81 16
+FUNC aa10 1c 0 google_breakpad::CrashGenerationClient::TryCreate(int)
+aa10 2 87 16
+aa12 1 86 16
+aa13 2 86 16
+aa15 2 87 16
+aa17 a 89 16
+aa21 2 56 1
+aa23 5 90 16
+aa28 2 88 16
+aa2a 2 90 16
+FUNC aa30 67 0 google_breakpad::LinuxDumper::~LinuxDumper()
+aa30 8 85 21
+aa38 6 2701 15
+aa3e 6 85 21
+aa44 e 85 21
+aa52 4 338 21
+aa56 a 134 12
+aa60 4 136 12
+aa64 3 135 12
+aa67 1d 2701 15
+aa84 8 134 12
+aa8c b 86 21
+FUNC aaa0 12 0 google_breakpad::LinuxDumper::~LinuxDumper()
+aaa0 1 85 21
+aaa1 3 85 21
+aaa4 e 86 21
+FUNC aac0 105 0 google_breakpad::LinuxDumper::ReadAuxv()
+aac0 2 139 21
+aac2 7 141 21
+aac9 c 139 21
+aad5 15 141 21
+aaea 2 147 21
+aaec 14 163 21
+ab00 28 2711 15
+ab28 4 146 21
+ab2c 8 154 21
+ab34 2 146 21
+ab36 a 2724 15
+ab40 10 2724 15
+ab50 6 152 21
+ab56 1b 2629 15
+ab71 f 163 21
+ab80 a 152 21
+ab8a 6 156 21
+ab90 d 157 21
+ab9d 5 158 21
+aba2 e 157 21
+abb0 15 2724 15
+FUNC abd0 32 0 google_breakpad::LinuxDumper::Init()
+abd0 1 88 21
+abd1 3 88 21
+abd4 9 89 21
+abdd b 90 21
+abe8 d 89 21
+abf5 6 89 21
+abfb 1 90 21
+abfc 6 89 21
+FUNC ac10 4c 0 google_breakpad::LinuxDumper::FindMapping(void const*) const
+ac10 4 338 21
+ac14 b 626 43
+ac1f 11 292 21
+ac30 7 293 21
+ac37 5 294 21
+ac3c 14 294 21
+ac50 9 292 21
+ac59 2 298 21
+ac5b 1 299 21
+FUNC ac60 94 0 google_breakpad::LinuxDumper::GetStackInfo(void const**, unsigned long*, unsigned long)
+ac60 23 265 21
+ac83 6 265 21
+ac89 8 267 21
+ac91 3 275 21
+ac94 6 270 21
+ac9a 8 275 21
+aca2 5 276 21
+aca7 6 279 21
+acad 4 281 21
+acb1 5 283 21
+acb6 3 281 21
+acb9 a 283 21
+acc3 5 285 21
+acc8 4 283 21
+accc 4 284 21
+acd0 20 286 21
+acf0 4 277 21
+FUNC ad00 1fd 0 google_breakpad::LinuxDumper::HandleDeletedFileInMapping(char*) const
+ad00 17 301 21
+ad17 3 306 21
+ad1a 7 301 21
+ad21 3 301 21
+ad24 5 306 21
+ad29 6 307 21
+ad2f 2 308 21
+ad31 2f 336 21
+ad60 5 309 21
+ad65 11 310 21
+ad76 4 309 21
+ad7a 23 317 21
+ad9d 8 319 21
+ada5 10 60 11
+adb5 8 319 21
+adbd 13 321 21
+add0 5 2764 15
+add5 3 327 21
+add8 1d 2764 15
+adf5 5a 334 21
+ae4f a 335 21
+ae59 4 327 21
+ae5d 8 328 21
+ae65 20 2764 15
+ae85 8 327 21
+ae8d 12 327 21
+ae9f 18 327 21
+aeb7 46 334 21
+FUNC af00 35d 0 google_breakpad::LinuxDumper::ElfFileIdentifierForMapping(google_breakpad::MappingInfo const&, bool, unsigned int, unsigned char*)
+af00 2b 96 21
+af2b 2 97 21
+af2d 9 96 21
+af36 2 97 21
+af38 8 626 43
+af40 3 97 21
+af43 4 626 43
+af47 9 97 21
+af50 a 98 21
+af5a 4 64 21
+af5e 5 98 21
+af63 14 64 21
+af77 2 100 21
+af79 4 99 21
+af7d 43 137 21
+afc0 1c 103 21
+afdc 4 105 21
+afe0 20 2660 15
+b000 9 105 21
+b009 3 106 21
+b00c 14 113 21
+b020 c 117 21
+b02c 6 118 21
+b032 3 117 21
+b035 b 118 21
+b040 14 121 21
+b054 8 123 21
+b05c 6 122 21
+b062 5 123 21
+b067 a 125 21
+b071 3 123 21
+b074 5 125 21
+b079 5 338 21
+b07e a 126 21
+b088 8 130 21
+b090 2 131 21
+b092 2 130 21
+b094 2 131 21
+b096 5 131 21
+b09b 5 131 21
+b0a0 10 133 21
+b0b0 20 136 21
+b0d0 4 108 21
+b0d4 3 71 12
+b0d7 3 108 21
+b0da 6 71 12
+b0e0 1c 74 12
+b0fc c 86 12
+b108 f 2816 15
+b117 3 86 12
+b11a 5 2816 15
+b11f 9 86 12
+b128 36 2816 15
+b15e e 89 12
+b16c 1c 111 21
+b188 3 75 12
+b18b 2 76 12
+b18d 3 75 12
+b190 4 77 12
+b194 5 76 12
+b199 6 120 12
+b19f 4 124 12
+b1a3 7 93 12
+b1aa 3 124 12
+b1ad 4 125 12
+b1b1 5 93 12
+b1b6 3 125 12
+b1b9 5 93 12
+b1be 4 126 12
+b1c2 8 93 12
+b1ca 5 94 12
+b1cf 3 93 12
+b1d2 13 94 12
+b1e5 9 96 12
+b1ee 7 78 12
+b1f5 d 79 12
+b202 8 72 12
+b20a 1f 97 21
+b229 1f 118 21
+b248 15 136 21
+FUNC b260 1a9 0 google_breakpad::LinuxDumper::LinuxDumper(int)
+b260 17 72 21
+b277 4 79 21
+b27b 9 72 21
+b284 23 79 21
+b2a7 5 60 12
+b2ac 4 190 12
+b2b0 1a 63 12
+b2ca 5 190 12
+b2cf 4 153 12
+b2d3 18 92 43
+b2eb 5 190 12
+b2f0 4 190 12
+b2f4 4 153 12
+b2f8 18 92 43
+b310 a 190 12
+b31a 7 190 12
+b321 7 153 12
+b328 21 92 43
+b349 d 190 12
+b356 17 338 21
+b36d a 626 43
+b377 6 686 43
+b37d 6 688 43
+b383 e 689 43
+b391 1f 83 21
+b3b0 5 687 43
+b3b5 8 1004 43
+b3bd 3 687 43
+b3c0 7 1004 43
+b3c7 7 338 21
+b3ce 6 2701 15
+b3d4 5 134 12
+b3d9 3 136 12
+b3dc 3 135 12
+b3df 1d 2701 15
+b3fc d 72 21
+FUNC b410 7b2 0 google_breakpad::LinuxDumper::EnumerateMappings()
+b410 2 165 21
+b412 7 167 21
+b419 12 165 21
+b42b 18 167 21
+b443 2 186 21
+b445 12 259 21
+b457 7 338 21
+b45e 8 2711 15
+b466 7 178 21
+b46d 4 182 21
+b471 5 178 21
+b476 5 182 21
+b47b 1d 2711 15
+b498 2 185 21
+b49a 4 2711 15
+b49e 2 185 21
+b4a0 4 74 12
+b4a4 4 187 21
+b4a8 4 74 12
+b4ac 5 187 21
+b4b1 1d 74 12
+b4ce 2 75 12
+b4d0 5 76 12
+b4d5 3 75 12
+b4d8 8 77 12
+b4e0 4 76 12
+b4e4 3 82 12
+b4e7 9 49 4
+b4f0 2 191 21
+b4f2 16 49 4
+b508 f 66 4
+b517 5 99 4
+b51c 3 2724 15
+b51f 5 98 4
+b524 3 99 4
+b527 10 2724 15
+b537 6 100 4
+b53d a 102 4
+b547 5 103 4
+b54c 4 66 4
+b550 15 70 4
+b565 13 165 21
+b578 10 70 4
+b588 7 69 4
+b58f 16 78 4
+b5a5 20 2629 15
+b5c5 21 258 21
+b5e6 3 71 4
+b5e9 4 73 4
+b5ed 6 71 4
+b5f3 d 194 21
+b600 5 195 21
+b605 e 116 4
+b613 2 117 4
+b615 8 118 4
+b61d 7 117 4
+b624 14 118 4
+b638 18 105 4
+b650 e 196 21
+b65e 5 197 21
+b663 e 198 21
+b671 5 199 21
+b676 1b 203 21
+b691 9 338 21
+b69a 6 211 21
+b6a0 4 212 21
+b6a4 12 213 21
+b6b6 28 74 12
+b6de 2 75 12
+b6e0 5 76 12
+b6e5 2 77 12
+b6e7 3 76 12
+b6ea 4 82 12
+b6ee 6 77 12
+b6f4 7 222 21
+b6fb 8 221 21
+b703 5 222 21
+b708 5 223 21
+b70d 5 224 21
+b712 8 223 21
+b71a 3 224 21
+b71d 6 226 21
+b723 4 224 21
+b727 5 225 21
+b72c 3 223 21
+b72f 4 225 21
+b733 2 226 21
+b735 a 227 21
+b73f b 228 21
+b74a c 236 21
+b756 16 236 21
+b76c 4 236 21
+b770 5 338 21
+b775 5 236 21
+b77a 4 338 21
+b77e 6 236 21
+b784 4 338 21
+b788 9 236 21
+b791 3 626 43
+b794 11 243 21
+b7a5 7 626 43
+b7ac 8 243 21
+b7b4 9 686 43
+b7bd 2 688 43
+b7bf 5 1320 43
+b7c4 4 689 43
+b7c8 b 1320 43
+b7d3 20 244 21
+b7f3 d 245 21
+b800 13 244 21
+b813 15 246 21
+b828 4 86 12
+b82c 2 2816 15
+b82e 7 86 12
+b835 c 2816 15
+b841 3 86 12
+b844 5 2816 15
+b849 3 86 12
+b84c 27 2816 15
+b873 d 89 12
+b880 17 70 4
+b897 e 2724 15
+b8a5 6 120 12
+b8ab 4 93 12
+b8af 4 124 12
+b8b3 3 93 12
+b8b6 4 125 12
+b8ba 5 93 12
+b8bf 4 124 12
+b8c3 7 93 12
+b8ca 4 126 12
+b8ce 8 93 12
+b8d6 5 94 12
+b8db 4 93 12
+b8df 10 94 12
+b8ef 9 96 12
+b8f8 8 78 12
+b900 8 79 12
+b908 8 82 12
+b910 b 86 4
+b91b 8 87 4
+b923 4 92 4
+b927 3 90 4
+b92a 4 93 4
+b92e 6 90 4
+b934 17 92 4
+b94b f 883 43
+b95a 1d 120 46
+b977 1a 887 43
+b991 4 86 12
+b995 2 2816 15
+b997 7 86 12
+b99e c 2816 15
+b9aa 3 86 12
+b9ad 5 2816 15
+b9b2 9 86 12
+b9bb 31 2816 15
+b9ec c 89 12
+b9f8 23 214 21
+ba1b 9 213 21
+ba24 1a 215 21
+ba3e d 213 21
+ba4b c 216 21
+ba57 a 116 4
+ba61 2 117 4
+ba63 8 118 4
+ba6b 6 117 4
+ba71 c 118 4
+ba7d c 203 21
+ba89 10 203 21
+ba99 7 206 21
+baa0 9 207 21
+baa9 a 206 21
+bab3 1d 229 21
+bad0 7 120 46
+bad7 5 248 21
+badc 8 893 43
+bae4 4 248 21
+bae8 a 893 43
+baf2 2b 1004 43
+bb1d 1f 87 4
+bb3c 7 78 12
+bb43 d 79 12
+bb50 c 120 12
+bb5c a 124 12
+bb66 4 93 12
+bb6a 4 124 12
+bb6e 3 93 12
+bb71 3 124 12
+bb74 4 125 12
+bb78 5 93 12
+bb7d 4 125 12
+bb81 7 93 12
+bb88 4 126 12
+bb8c 8 93 12
+bb94 5 94 12
+bb99 3 93 12
+bb9c 14 94 12
+bbb0 5 96 12
+bbb5 4 94 12
+bbb9 9 96 12
+FUNC bbd0 221 0 std::vector<int, google_breakpad::PageStdAllocator<int> >::reserve(unsigned long)
+bbd0 a 69 44
+bbda 25 66 44
+bbff 9 69 44
+bc08 4 338 21
+bc0c e 707 43
+bc1a 5 71 44
+bc1f 29 86 44
+bc48 4 338 21
+bc4c 2 169 43
+bc4e 5 338 21
+bc53 7 626 43
+bc5a 3 169 43
+bc5d 5 626 43
+bc62 2 169 43
+bc64 a 162 12
+bc6e 4 71 12
+bc72 18 74 12
+bc8a 2 75 12
+bc8c 2 76 12
+bc8e 3 75 12
+bc91 8 77 12
+bc99 4 76 12
+bc9d 1b 245 42
+bcb8 9 120 46
+bcc1 12 245 42
+bcd3 5 83 44
+bcd8 5 82 44
+bcdd 9 83 44
+bce6 12 84 44
+bcf8 e 86 12
+bd06 e 2816 15
+bd14 3 86 12
+bd17 5 2816 15
+bd1c 9 86 12
+bd25 30 2816 15
+bd55 b 89 12
+bd60 8 120 12
+bd68 9 124 12
+bd71 4 125 12
+bd75 5 93 12
+bd7a 3 124 12
+bd7d 3 125 12
+bd80 3 93 12
+bd83 4 126 12
+bd87 16 93 12
+bd9d 5 94 12
+bda2 4 93 12
+bda6 11 94 12
+bdb7 5 96 12
+bdbc 4 94 12
+bdc0 10 96 12
+bdd0 8 78 12
+bdd8 d 79 12
+bde5 c 70 44
+FUNC be00 229 0 std::vector<google_breakpad::MappingInfo*, google_breakpad::PageStdAllocator<google_breakpad::MappingInfo*> >::reserve(unsigned long)
+be00 a 69 44
+be0a 25 66 44
+be2f 9 69 44
+be38 4 338 21
+be3c e 707 43
+be4a 5 71 44
+be4f 29 86 44
+be78 4 338 21
+be7c 2 169 43
+be7e 5 338 21
+be83 7 626 43
+be8a 3 169 43
+be8d 5 626 43
+be92 2 169 43
+be94 a 162 12
+be9e 4 71 12
+bea2 1c 74 12
+bebe 2 75 12
+bec0 2 76 12
+bec2 3 75 12
+bec5 8 77 12
+becd 4 76 12
+bed1 17 245 42
+bee8 b 120 46
+bef3 12 245 42
+bf05 5 83 44
+bf0a 5 82 44
+bf0f 9 83 44
+bf18 18 84 44
+bf30 e 86 12
+bf3e e 2816 15
+bf4c 3 86 12
+bf4f 5 2816 15
+bf54 9 86 12
+bf5d 30 2816 15
+bf8d b 89 12
+bf98 8 120 12
+bfa0 9 124 12
+bfa9 4 125 12
+bfad 5 93 12
+bfb2 3 124 12
+bfb5 3 125 12
+bfb8 3 93 12
+bfbb 4 126 12
+bfbf 16 93 12
+bfd5 5 94 12
+bfda 4 93 12
+bfde 11 94 12
+bfef 5 96 12
+bff4 4 94 12
+bff8 10 96 12
+c008 8 78 12
+c010 d 79 12
+c01d c 70 44
+FUNC c030 229 0 std::vector<unsigned long, google_breakpad::PageStdAllocator<unsigned long> >::reserve(unsigned long)
+c030 a 69 44
+c03a 25 66 44
+c05f 9 69 44
+c068 4 338 21
+c06c e 707 43
+c07a 5 71 44
+c07f 29 86 44
+c0a8 4 338 21
+c0ac 2 169 43
+c0ae 5 338 21
+c0b3 7 626 43
+c0ba 3 169 43
+c0bd 5 626 43
+c0c2 2 169 43
+c0c4 a 162 12
+c0ce 4 71 12
+c0d2 1c 74 12
+c0ee 2 75 12
+c0f0 2 76 12
+c0f2 3 75 12
+c0f5 8 77 12
+c0fd 4 76 12
+c101 17 245 42
+c118 b 120 46
+c123 12 245 42
+c135 5 83 44
+c13a 5 82 44
+c13f 9 83 44
+c148 18 84 44
+c160 e 86 12
+c16e e 2816 15
+c17c 3 86 12
+c17f 5 2816 15
+c184 9 86 12
+c18d 30 2816 15
+c1bd b 89 12
+c1c8 8 120 12
+c1d0 9 124 12
+c1d9 4 125 12
+c1dd 5 93 12
+c1e2 3 124 12
+c1e5 3 125 12
+c1e8 3 93 12
+c1eb 4 126 12
+c1ef 16 93 12
+c205 5 94 12
+c20a 4 93 12
+c20e 11 94 12
+c21f 5 96 12
+c224 4 94 12
+c228 10 96 12
+c238 8 78 12
+c240 d 79 12
+c24d c 70 44
+FUNC c260 320 0 std::vector<google_breakpad::MappingInfo*, google_breakpad::PageStdAllocator<google_breakpad::MappingInfo*> >::_M_insert_aux(__gnu_cxx::__normal_iterator<google_breakpad::MappingInfo**, std::vector<google_breakpad::MappingInfo*, google_breakpad::PageStdAllocator<google_breakpad::MappingInfo*> > >, google_breakpad::MappingInfo* const&)
+c260 28 316 44
+c288 8 320 44
+c290 3 316 44
+c293 2 320 44
+c295 10 120 46
+c2a5 4 329 44
+c2a9 4 325 44
+c2ad 3 559 38
+c2b0 4 325 44
+c2b4 3 327 44
+c2b7 4 559 38
+c2bb 5 560 38
+c2c0 f 561 38
+c2cf 4 333 44
+c2d3 2d 391 44
+c300 8 120 46
+c308 b 626 43
+c313 9 215 38
+c31c 4 1308 43
+c320 9 1309 43
+c329 3 900 39
+c32c c 162 12
+c338 3 900 39
+c33b 4 162 12
+c33f 8 342 44
+c347 20 74 12
+c367 2 75 12
+c369 2 76 12
+c36b 3 75 12
+c36e 8 77 12
+c376 8 76 12
+c37e 8 351 44
+c386 b 120 46
+c391 4 360 44
+c395 b 245 42
+c3a0 b 120 46
+c3ab d 245 42
+c3b8 13 316 44
+c3cb 4 367 44
+c3cf 11 245 42
+c3e0 b 120 46
+c3eb d 245 42
+c3f8 10 316 44
+c408 4 387 44
+c40c 5 389 44
+c411 4 388 44
+c415 b 389 44
+c420 3 900 39
+c423 c 162 12
+c42f 3 900 39
+c432 5 162 12
+c437 11 342 44
+c448 7 86 12
+c44f 2 2816 15
+c451 7 86 12
+c458 d 2816 15
+c465 3 86 12
+c468 5 2816 15
+c46d 9 86 12
+c476 30 2816 15
+c4a6 a 89 12
+c4b0 8 120 12
+c4b8 9 124 12
+c4c1 4 125 12
+c4c5 8 93 12
+c4cd 3 124 12
+c4d0 3 125 12
+c4d3 4 126 12
+c4d7 16 93 12
+c4ed 5 94 12
+c4f2 4 93 12
+c4f6 15 94 12
+c50b e 96 12
+c519 8 78 12
+c521 d 79 12
+c52e 13 1309 43
+c541 7 900 39
+c548 6 169 43
+c54e 8 900 39
+c556 2 169 43
+c558 4 342 44
+c55c 3 169 43
+c55f 4 342 44
+c563 6 169 43
+c569 a 162 12
+c573 d 71 12
+FUNC c580 460 0 std::vector<unsigned long, google_breakpad::PageStdAllocator<unsigned long> >::_M_fill_insert(__gnu_cxx::__normal_iterator<unsigned long*, std::vector<unsigned long, google_breakpad::PageStdAllocator<unsigned long> > >, unsigned long, unsigned long const&)
+c580 11 439 44
+c591 c 442 44
+c59d 1f 444 44
+c5bc 3 900 39
+c5bf 3 447 44
+c5c2 7 900 39
+c5c9 5 450 44
+c5ce 7 452 44
+c5d5 3 245 42
+c5d8 3 452 44
+c5db d 245 42
+c5e8 b 120 46
+c5f3 d 245 42
+c600 3 559 38
+c603 4 456 44
+c607 7 559 38
+c60e 5 456 44
+c613 9 560 38
+c61c 3 459 44
+c61f 9 686 38
+c628 7 687 38
+c62f 5 686 38
+c634 14 525 44
+c648 3 464 44
+c64b 15 321 42
+c660 8 120 46
+c668 a 321 42
+c672 4 468 44
+c676 6 245 42
+c67c 5 468 44
+c681 f 245 42
+c690 b 120 46
+c69b d 245 42
+c6a8 10 472 44
+c6b8 7 687 38
+c6bf 5 686 38
+c6c4 14 525 44
+c6d8 5 338 21
+c6dd 3 626 43
+c6e0 d 1305 43
+c6ed 7 626 43
+c6f4 c 1305 43
+c700 6 1308 43
+c706 3 900 39
+c709 4 1308 43
+c70d 3 900 39
+c710 4 480 44
+c714 3 1309 43
+c717 5 480 44
+c71c 6 1309 43
+c722 15 162 12
+c737 23 74 12
+c75a 3 75 12
+c75d 2 76 12
+c75f 3 75 12
+c762 8 77 12
+c76a e 76 12
+c778 18 561 38
+c790 e 86 12
+c79e 9 2816 15
+c7a7 5 86 12
+c7ac 6 2816 15
+c7b2 3 86 12
+c7b5 5 2816 15
+c7ba 9 86 12
+c7c3 34 2816 15
+c7f7 13 89 12
+c80a 16 486 44
+c820 c 120 46
+c82c a 321 42
+c836 12 245 42
+c848 b 120 46
+c853 d 245 42
+c860 13 439 44
+c873 3 245 42
+c876 4 496 44
+c87a e 245 42
+c888 b 120 46
+c893 d 245 42
+c8a0 10 439 44
+c8b0 5 520 44
+c8b5 5 522 44
+c8ba 5 521 44
+c8bf 5 522 44
+c8c4 14 525 44
+c8d8 9 1309 43
+c8e1 1f 169 43
+c900 c 120 12
+c90c 9 124 12
+c915 4 93 12
+c919 4 124 12
+c91d 3 93 12
+c920 3 124 12
+c923 4 125 12
+c927 5 93 12
+c92c 4 125 12
+c930 4 126 12
+c934 16 93 12
+c94a 5 94 12
+c94f 4 93 12
+c953 15 94 12
+c968 5 96 12
+c96d 4 94 12
+c971 f 96 12
+c980 c 78 12
+c98c d 79 12
+c999 e 472 44
+c9a7 8 241 42
+c9af 14 162 12
+c9c3 2 71 12
+c9c5 4 162 12
+c9c9 b 71 12
+c9d4 c 1306 43
+FUNC c9e0 43f 0 std::vector<google_breakpad::MappingInfo*, google_breakpad::PageStdAllocator<google_breakpad::MappingInfo*> >::_M_fill_insert(__gnu_cxx::__normal_iterator<google_breakpad::MappingInfo**, std::vector<google_breakpad::MappingInfo*, google_breakpad::PageStdAllocator<google_breakpad::MappingInfo*> > >, unsigned long, google_breakpad::MappingInfo* const&)
+c9e0 11 439 44
+c9f1 c 442 44
+c9fd 1e 444 44
+ca1b 3 900 39
+ca1e 3 447 44
+ca21 7 900 39
+ca28 9 450 44
+ca31 a 452 44
+ca3b 15 245 42
+ca50 b 120 46
+ca5b 11 245 42
+ca6c 3 559 38
+ca6f 3 456 44
+ca72 3 559 38
+ca75 4 456 44
+ca79 4 559 38
+ca7d 5 560 38
+ca82 f 561 38
+ca91 3 459 44
+ca94 c 686 38
+caa0 7 687 38
+caa7 5 686 38
+caac 14 525 44
+cac0 10 321 42
+cad0 8 120 46
+cad8 e 321 42
+cae6 4 468 44
+caea 3 245 42
+caed 4 468 44
+caf1 f 245 42
+cb00 b 120 46
+cb0b d 245 42
+cb18 8 472 44
+cb20 7 687 38
+cb27 5 686 38
+cb2c 14 525 44
+cb40 4 626 43
+cb44 d 1305 43
+cb51 7 626 43
+cb58 c 1305 43
+cb64 6 1308 43
+cb6a 3 900 39
+cb6d 4 1308 43
+cb71 3 900 39
+cb74 4 480 44
+cb78 3 1309 43
+cb7b 5 480 44
+cb80 6 1309 43
+cb86 15 162 12
+cb9b 20 74 12
+cbbb 2 75 12
+cbbd 2 76 12
+cbbf 3 75 12
+cbc2 8 77 12
+cbca e 76 12
+cbd8 7 86 12
+cbdf 2 2816 15
+cbe1 7 86 12
+cbe8 d 2816 15
+cbf5 3 86 12
+cbf8 5 2816 15
+cbfd 9 86 12
+cc06 34 2816 15
+cc3a 6 169 43
+cc40 10 486 44
+cc50 c 120 46
+cc5c a 321 42
+cc66 4 491 44
+cc6a 16 245 42
+cc80 b 120 46
+cc8b d 245 42
+cc98 13 439 44
+ccab 4 498 44
+ccaf 4 496 44
+ccb3 d 245 42
+ccc0 b 120 46
+cccb d 245 42
+ccd8 10 439 44
+cce8 4 520 44
+ccec 5 522 44
+ccf1 4 521 44
+ccf5 4 522 44
+ccf9 17 525 44
+cd10 9 1309 43
+cd19 17 169 43
+cd30 c 120 12
+cd3c 9 124 12
+cd45 4 93 12
+cd49 4 124 12
+cd4d 3 93 12
+cd50 3 124 12
+cd53 4 125 12
+cd57 5 93 12
+cd5c 4 125 12
+cd60 4 126 12
+cd64 16 93 12
+cd7a 5 94 12
+cd7f 4 93 12
+cd83 15 94 12
+cd98 5 96 12
+cd9d 4 94 12
+cda1 f 96 12
+cdb0 c 78 12
+cdbc d 79 12
+cdc9 8 245 42
+cdd1 8 444 44
+cdd9 d 472 44
+cde6 8 241 42
+cdee c 1306 43
+cdfa 14 162 12
+ce0e 2 71 12
+ce10 4 162 12
+ce14 b 71 12
+FUNC ce20 3 0 google_breakpad::LinuxPtraceDumper::IsPostMortem() const
+ce20 3 228 22
+FUNC ce30 d8 0 google_breakpad::LinuxPtraceDumper::BuildProcPath(char*, int, char const*) const
+ce30 a 107 22
+ce3a 2 109 22
+ce3c 1b 107 22
+ce57 3 108 22
+ce5a 3 107 22
+ce5d a 108 22
+ce67 5 108 22
+ce6c 8 111 22
+ce74 3 112 22
+ce77 3 111 22
+ce7a 2 112 22
+ce7c 2 113 22
+ce7e 2a 126 22
+cea8 b 115 22
+ceb3 7 116 22
+ceba 9 117 22
+cec3 a 121 22
+cecd d 120 22
+ceda 5 121 22
+cedf 4 122 22
+cee3 b 123 22
+ceee 5 122 22
+cef3 5 123 22
+cef8 6 124 22
+cefe a 125 22
+FUNC cf10 ac 0 google_breakpad::LinuxPtraceDumper::CopyFromProcess(void*, int, void const*, unsigned long)
+cf10 11 129 22
+cf21 3 136 22
+cf24 9 130 22
+cf2d 5 136 22
+cf32 10 138 22
+cf42 6 131 22
+cf48 8 137 22
+cf50 5 138 22
+cf55 3 137 22
+cf58 a 2717 15
+cf62 8 137 22
+cf6a f 2717 15
+cf79 a 141 22
+cf83 3 142 22
+cf86 5 141 22
+cf8b 5 136 22
+cf90 10 144 22
+cfa0 d 2717 15
+cfad 9 139 22
+cfb6 6 2717 15
+FUNC cfc0 c2 0 google_breakpad::LinuxPtraceDumper::ThreadsResume()
+cfc0 2 248 22
+cfc2 3 250 22
+cfc5 b 248 22
+cfd0 9 249 22
+cfd9 4 291 22
+cfdd 4 626 43
+cfe1 6 252 22
+cfe7 7 626 43
+cfee 7 252 22
+cff5 37 2717 15
+d02c 4 291 22
+d030 4 626 43
+d034 4 252 22
+d038 7 626 43
+d03f 5 252 22
+d044 7 254 22
+d04b 15 256 22
+d060 22 2717 15
+FUNC d090 49f 0 google_breakpad::LinuxPtraceDumper::GetThreadInfoByIndex(unsigned long, google_breakpad::ThreadInfo*)
+d090 17 150 22
+d0a7 4 291 22
+d0ab b 626 43
+d0b6 5 151 22
+d0bb 3 154 22
+d0be 3 156 22
+d0c1 3 154 22
+d0c4 6 156 22
+d0ca 1c 158 22
+d0e6 2 206 22
+d0e8 12 224 22
+d0fa 23 2711 15
+d11d 4 163 22
+d121 2 162 22
+d123 4 2711 15
+d127 2 162 22
+d129 23 74 12
+d14c 3 75 12
+d14f 5 76 12
+d154 3 75 12
+d157 8 77 12
+d15f 3 76 12
+d162 3 82 12
+d165 4 49 4
+d169 5 175 22
+d16e d 49 4
+d17b 5 175 22
+d180 3 49 4
+d183 19 169 22
+d19c 6 99 4
+d1a2 f 66 4
+d1b1 5 99 4
+d1b6 3 2724 15
+d1b9 5 98 4
+d1be 3 99 4
+d1c1 10 2724 15
+d1d1 6 100 4
+d1d7 a 102 4
+d1e1 5 103 4
+d1e6 4 66 4
+d1ea 15 70 4
+d1ff 11 150 22
+d210 18 70 4
+d228 7 69 4
+d22f c 78 4
+d23b 20 2629 15
+d25b c 182 22
+d267 b 182 22
+d272 c 2717 15
+d27e 5 185 22
+d283 1c 2717 15
+d29f 8 189 22
+d2a7 2c 2717 15
+d2d3 b 205 22
+d2de 13 2717 15
+d2f1 e 199 22
+d2ff d 221 22
+d30c a 223 22
+d316 4 86 12
+d31a 2 2816 15
+d31c 7 86 12
+d323 c 2816 15
+d32f 3 86 12
+d332 5 2816 15
+d337 3 86 12
+d33a 2b 2816 15
+d365 f 89 12
+d374 3 71 4
+d377 4 73 4
+d37b 6 71 4
+d381 18 172 22
+d399 c 173 22
+d3a5 d 116 4
+d3b2 2 117 4
+d3b4 8 118 4
+d3bc 7 117 4
+d3c3 d 118 4
+d3d0 10 105 4
+d3e0 18 174 22
+d3f8 10 175 22
+d408 10 70 4
+d418 10 2724 15
+d428 7 78 12
+d42f 8 79 12
+d437 8 82 12
+d43f b 86 4
+d44a 8 87 4
+d452 4 92 4
+d456 3 90 4
+d459 4 93 4
+d45d 6 90 4
+d463 9 92 4
+d46c a 120 12
+d476 3 93 12
+d479 4 124 12
+d47d 3 93 12
+d480 4 125 12
+d484 5 93 12
+d489 4 124 12
+d48d 7 93 12
+d494 4 126 12
+d498 8 93 12
+d4a0 5 94 12
+d4a5 3 93 12
+d4a8 10 94 12
+d4b8 c 96 12
+d4c4 e 2717 15
+d4d2 1f 87 4
+d4f1 1f 116 4
+d510 1f 156 22
+FUNC d530 20 0 google_breakpad::LinuxPtraceDumper::LinuxPtraceDumper(int)
+d530 1 101 22
+d531 3 101 22
+d534 1a 103 22
+d54e 2 104 22
+FUNC d550 36d 0 google_breakpad::LinuxPtraceDumper::EnumerateThreads()
+d550 17 260 22
+d567 7 262 22
+d56e 11 260 22
+d57f 15 262 22
+d594 2 267 22
+d596 3a 289 22
+d5d0 30 2711 15
+d600 4 266 22
+d604 23 74 12
+d627 3 75 12
+d62a 5 76 12
+d62f 2 77 12
+d631 4 75 12
+d635 6 77 12
+d63b 3 76 12
+d63e 8 281 22
+d646 4 82 3
+d64a b 51 3
+d655 2 274 22
+d657 8 272 22
+d65f 5 281 22
+d664 4 65 3
+d668 17 275 22
+d67f 8 87 3
+d687 2d 2654 15
+d6b4 22 2629 15
+d6d6 a 288 22
+d6e0 5 93 3
+d6e5 3 94 3
+d6e8 3 93 3
+d6eb 5 94 3
+d6f0 6 93 3
+d6f6 12 94 3
+d708 f 276 22
+d717 8 275 22
+d71f 8 278 22
+d727 8 277 22
+d72f d 278 22
+d73c 10 278 22
+d74c e 883 43
+d75a 8 120 46
+d762 16 887 43
+d778 10 288 22
+d788 9 68 3
+d791 6 70 3
+d797 5 71 3
+d79c 13 77 3
+d7af 21 80 3
+d7d0 10 73 3
+d7e0 4 86 12
+d7e4 2 2816 15
+d7e6 7 86 12
+d7ed d 2816 15
+d7fa 3 86 12
+d7fd 5 2816 15
+d802 3 86 12
+d805 27 2816 15
+d82c c 89 12
+d838 6 120 12
+d83e 3 93 12
+d841 4 124 12
+d845 3 93 12
+d848 4 125 12
+d84c 5 93 12
+d851 4 124 12
+d855 7 93 12
+d85c 4 126 12
+d860 8 93 12
+d868 5 94 12
+d86d 3 93 12
+d870 10 94 12
+d880 10 96 12
+d890 7 78 12
+d897 d 79 12
+d8a4 19 893 43
+FUNC d8c0 235 0 google_breakpad::LinuxPtraceDumper::ThreadsSuspend()
+d8c0 2 230 22
+d8c2 5 232 22
+d8c7 12 230 22
+d8d9 d 231 22
+d8e6 4 291 22
+d8ea b 626 43
+d8f5 9 233 22
+d8fe 4 230 22
+d902 5 80 22
+d907 7 230 22
+d90e 4 240 22
+d912 3 230 22
+d915 5 240 22
+d91a 6 2717 15
+d920 8 240 22
+d928 4 234 22
+d92c 8 751 43
+d934 7 60 22
+d93b 1e 2717 15
+d959 c 61 22
+d965 15 2877 15
+d97a 3 66 22
+d97d 3 2877 15
+d980 2 66 22
+d982 13 2877 15
+d995 b 65 22
+d9a0 5 66 22
+d9a5 1e 2717 15
+d9c3 5 291 22
+d9c8 8 626 43
+d9d0 8 751 43
+d9d8 4 626 43
+d9dc 10 239 22
+d9ec 12 291 22
+d9fe a 626 43
+da08 4 240 22
+da0c 3 626 43
+da0f 9 686 43
+da18 2 688 43
+da1a 4 689 43
+da1e f 1320 43
+da2d 4 241 22
+da31 d 233 22
+da3e 3 245 22
+da41 9 244 22
+da4a 3 245 22
+da4d 13 246 22
+da60 1a 2717 15
+da7a 26 80 22
+daa0 30 1004 43
+dad0 14 2717 15
+dae4 7 233 22
+daeb a 2717 15
+FUNC db00 13 0 google_breakpad::LinuxPtraceDumper::~LinuxPtraceDumper()
+db00 13 42 6
+FUNC db20 20 0 google_breakpad::LinuxPtraceDumper::~LinuxPtraceDumper()
+db20 8 42 6
+db28 18 42 6
+FUNC db40 306 0 std::vector<int, google_breakpad::PageStdAllocator<int> >::_M_insert_aux(__gnu_cxx::__normal_iterator<int*, std::vector<int, google_breakpad::PageStdAllocator<int> > >, int const&)
+db40 28 316 44
+db68 8 320 44
+db70 3 316 44
+db73 2 320 44
+db75 a 120 46
+db7f 4 329 44
+db83 4 325 44
+db87 3 559 38
+db8a 4 325 44
+db8e 3 327 44
+db91 4 559 38
+db95 5 560 38
+db9a f 561 38
+dba9 3 333 44
+dbac 24 391 44
+dbd0 4 291 22
+dbd4 a 626 43
+dbde 9 215 38
+dbe7 4 1308 43
+dbeb 9 1309 43
+dbf4 3 900 39
+dbf7 d 162 12
+dc04 3 900 39
+dc07 3 162 12
+dc0a 8 342 44
+dc12 23 74 12
+dc35 3 75 12
+dc38 2 76 12
+dc3a 3 75 12
+dc3d 8 77 12
+dc45 8 76 12
+dc4d 8 351 44
+dc55 a 120 46
+dc5f 11 245 42
+dc70 9 120 46
+dc79 d 245 42
+dc86 13 316 44
+dc99 f 245 42
+dca8 9 120 46
+dcb1 d 245 42
+dcbe 10 316 44
+dcce 4 387 44
+dcd2 5 389 44
+dcd7 4 388 44
+dcdb d 389 44
+dce8 3 900 39
+dceb c 162 12
+dcf7 3 900 39
+dcfa 5 162 12
+dcff 11 342 44
+dd10 7 86 12
+dd17 2 2816 15
+dd19 7 86 12
+dd20 d 2816 15
+dd2d 3 86 12
+dd30 5 2816 15
+dd35 9 86 12
+dd3e 30 2816 15
+dd6e f 89 12
+dd7d 8 120 12
+dd85 9 124 12
+dd8e 4 125 12
+dd92 8 93 12
+dd9a 3 124 12
+dd9d 3 125 12
+dda0 4 126 12
+dda4 16 93 12
+ddba 5 94 12
+ddbf 4 93 12
+ddc3 15 94 12
+ddd8 b 96 12
+dde3 8 78 12
+ddeb d 79 12
+ddf8 13 1309 43
+de0b 7 900 39
+de12 6 169 43
+de18 8 900 39
+de20 2 169 43
+de22 4 342 44
+de26 3 169 43
+de29 4 342 44
+de2d 6 169 43
+de33 6 162 12
+de39 d 71 12
+FUNC de50 458 0 std::vector<int, google_breakpad::PageStdAllocator<int> >::_M_fill_insert(__gnu_cxx::__normal_iterator<int*, std::vector<int, google_breakpad::PageStdAllocator<int> > >, unsigned long, int const&)
+de50 11 439 44
+de61 c 442 44
+de6d 1f 444 44
+de8c 3 900 39
+de8f 3 447 44
+de92 7 900 39
+de99 5 450 44
+de9e 7 452 44
+dea5 3 245 42
+dea8 3 452 44
+deab d 245 42
+deb8 9 120 46
+dec1 d 245 42
+dece 3 559 38
+ded1 4 456 44
+ded5 7 559 38
+dedc 5 456 44
+dee1 9 560 38
+deea 3 459 44
+deed b 686 38
+def8 7 687 38
+deff 5 686 38
+df04 14 525 44
+df18 3 464 44
+df1b 15 321 42
+df30 8 120 46
+df38 a 321 42
+df42 4 468 44
+df46 6 245 42
+df4c 5 468 44
+df51 f 245 42
+df60 9 120 46
+df69 d 245 42
+df76 a 472 44
+df80 7 687 38
+df87 5 686 38
+df8c 14 525 44
+dfa0 5 291 22
+dfa5 3 626 43
+dfa8 d 1305 43
+dfb5 7 626 43
+dfbc c 1305 43
+dfc8 6 1308 43
+dfce 3 900 39
+dfd1 4 1308 43
+dfd5 3 900 39
+dfd8 4 480 44
+dfdc 3 1309 43
+dfdf 5 480 44
+dfe4 6 1309 43
+dfea 15 162 12
+dfff 23 74 12
+e022 3 75 12
+e025 2 76 12
+e027 3 75 12
+e02a 8 77 12
+e032 e 76 12
+e040 20 561 38
+e060 e 86 12
+e06e 9 2816 15
+e077 5 86 12
+e07c 6 2816 15
+e082 3 86 12
+e085 5 2816 15
+e08a 9 86 12
+e093 34 2816 15
+e0c7 13 89 12
+e0da 16 486 44
+e0f0 b 120 46
+e0fb a 321 42
+e105 13 245 42
+e118 9 120 46
+e121 d 245 42
+e12e 13 439 44
+e141 3 245 42
+e144 4 496 44
+e148 8 245 42
+e150 9 120 46
+e159 d 245 42
+e166 10 439 44
+e176 5 520 44
+e17b 5 522 44
+e180 5 521 44
+e185 5 522 44
+e18a 16 525 44
+e1a0 9 1309 43
+e1a9 1f 169 43
+e1c8 c 120 12
+e1d4 9 124 12
+e1dd 4 93 12
+e1e1 4 124 12
+e1e5 3 93 12
+e1e8 3 124 12
+e1eb 4 125 12
+e1ef 5 93 12
+e1f4 4 125 12
+e1f8 4 126 12
+e1fc 16 93 12
+e212 5 94 12
+e217 4 93 12
+e21b 15 94 12
+e230 5 96 12
+e235 4 94 12
+e239 f 96 12
+e248 c 78 12
+e254 d 79 12
+e261 e 472 44
+e26f 8 241 42
+e277 14 162 12
+e28b 2 71 12
+e28d 4 162 12
+e291 b 71 12
+e29c c 1306 43
+FUNC e2b0 e3 0 isLegalUTF8
+e2b0 3 294 25
+e2b3 3 295 25
+e2b6 4 294 25
+e2ba e 295 25
+e2c8 2 296 25
+e2ca 6 315 25
+e2d0 8 295 25
+e2d8 3 311 25
+e2db 2 298 25
+e2dd 5 311 25
+e2e2 e 313 25
+e2f0 a 298 25
+e2fa 5 298 25
+e2ff 4 298 25
+e303 4 299 25
+e307 2 298 25
+e309 4 299 25
+e30d 5 299 25
+e312 e 299 25
+e320 4 300 25
+e324 2 298 25
+e326 5 300 25
+e32b f 302 25
+e33a e 304 25
+e348 a 302 25
+e352 2 298 25
+e354 4 308 25
+e358 8 315 25
+e360 18 306 25
+e378 10 305 25
+e388 b 307 25
+FUNC e3a0 fe 0 ConvertUTF32toUTF16
+e3a0 3 64 25
+e3a3 1 62 25
+e3a4 3 65 25
+e3a7 1 62 25
+e3a8 9 66 25
+e3b1 f 68 25
+e3c0 10 74 25
+e3d0 9 75 25
+e3d9 a 89 25
+e3e3 5 66 25
+e3e8 c 68 25
+e3f4 7 71 25
+e3fb 9 72 25
+e404 9 85 25
+e40d 5 86 25
+e412 3 66 25
+e415 5 87 25
+e41a 6 66 25
+e420 3 102 25
+e423 3 103 25
+e426 a 105 25
+e430 10 83 25
+e440 9 93 25
+e449 7 97 25
+e450 3 98 25
+e453 7 99 25
+e45a 4 98 25
+e45e 6 99 25
+e464 6 98 25
+e46a 5 99 25
+e46f 4 98 25
+e473 9 99 25
+e47c 3 93 25
+e47f 3 102 25
+e482 5 95 25
+e487 3 103 25
+e48a 3 105 25
+e48d 3 75 25
+e490 7 77 25
+e497 3 66 25
+e49a 4 63 25
+FUNC e4a0 e6 0 ConvertUTF16toUTF32
+e4a0 3 112 25
+e4a3 3 113 25
+e4a6 9 115 25
+e4af 9 110 25
+e4b8 9 121 25
+e4c1 5 122 25
+e4c6 10 124 25
+e4d6 4 125 25
+e4da 4 127 25
+e4de 8 125 25
+e4e6 5 146 25
+e4eb 7 150 25
+e4f2 8 115 25
+e4fa 8 117 25
+e502 10 119 25
+e512 5 138 25
+e517 10 140 25
+e527 2 161 25
+e529 5 142 25
+e52e 3 152 25
+e531 3 153 25
+e534 c 161 25
+e540 5 128 25
+e545 5 146 25
+e54a 2 161 25
+e54c 5 148 25
+e551 3 152 25
+e554 3 153 25
+e557 b 161 25
+e562 2 111 25
+e564 3 152 25
+e567 3 153 25
+e56a 5 161 25
+e56f 5 135 25
+e574 3 152 25
+e577 3 153 25
+e57a 3 161 25
+e57d 3 152 25
+e580 2 111 25
+e582 3 153 25
+e585 1 161 25
+FUNC e590 216 0 ConvertUTF16toUTF8
+e590 2 213 25
+e592 3 215 25
+e595 2 213 25
+e597 3 217 25
+e59a 1 213 25
+e59b 3 216 25
+e59e 1 213 25
+e59f 9 217 25
+e5a8 8 223 25
+e5b0 10 225 25
+e5c0 9 227 25
+e5c9 5 228 25
+e5ce 14 230 25
+e5e2 4 231 25
+e5e6 4 233 25
+e5ea 8 231 25
+e5f2 6 253 25
+e5f8 4 261 25
+e5fc 12 262 25
+e60e 12 261 25
+e620 5 244 25
+e625 10 246 25
+e635 1 277 25
+e636 3 274 25
+e639 3 275 25
+e63c 5 248 25
+e641 f 277 25
+e650 8 254 25
+e658 4 261 25
+e65c 12 262 25
+e66e 12 261 25
+e680 5 234 25
+e685 8 255 25
+e68d 4 261 25
+e691 f 262 25
+e6a0 10 261 25
+e6b0 c 256 25
+e6bc 4 261 25
+e6c0 9 262 25
+e6c9 15 267 25
+e6de 6 261 25
+e6e4 8 267 25
+e6ec 1a 268 25
+e706 14 269 25
+e71a e 270 25
+e728 3 217 25
+e72b 5 272 25
+e730 4 270 25
+e734 6 217 25
+e73a 1 277 25
+e73b 3 274 25
+e73e 3 275 25
+e741 2 214 25
+e743 d 277 25
+e750 a 258 25
+e75a 1 277 25
+e75b 3 274 25
+e75e 3 275 25
+e761 5 241 25
+e766 6 277 25
+e76c 7 262 25
+e773 1 277 25
+e774 3 264 25
+e777 3 274 25
+e77a 5 264 25
+e77f 3 275 25
+e782 6 277 25
+e788 9 262 25
+e791 3 261 25
+e794 12 262 25
+FUNC e7b0 2b 0 isLegalUTF8Sequence
+e7b0 11 324 25
+e7c1 b 325 25
+e7cc c 328 25
+e7d8 3 329 25
+FUNC e7e0 265 0 ConvertUTF8toUTF16
+e7e0 e 334 25
+e7ee 3 336 25
+e7f1 3 337 25
+e7f4 13 334 25
+e807 3 338 25
+e80a 5 334 25
+e80f 6 338 25
+e815 14 340 25
+e829 17 341 25
+e840 17 345 25
+e857 2 339 25
+e859 17 352 25
+e870 2 339 25
+e872 f 354 25
+e881 f 355 25
+e890 f 356 25
+e89f f 357 25
+e8ae b 358 25
+e8b9 e 360 25
+e8c7 b 362 25
+e8d2 c 366 25
+e8de 14 368 25
+e8f2 8 377 25
+e8fa a 338 25
+e904 14 340 25
+e918 12 341 25
+e92a 5 342 25
+e92f 8 398 25
+e937 8 399 25
+e93f 11 401 25
+e950 30 339 25
+e980 10 353 25
+e990 10 339 25
+e9a0 c 380 25
+e9ac a 385 25
+e9b6 a 338 25
+e9c0 10 335 25
+e9d0 8 379 25
+e9d8 b 389 25
+e9e3 6 393 25
+e9e9 3 394 25
+e9ec 5 395 25
+e9f1 4 394 25
+e9f5 4 395 25
+e9f9 5 394 25
+e9fe 5 395 25
+ea03 4 394 25
+ea07 9 395 25
+ea10 3 390 25
+ea13 5 391 25
+ea18 6 390 25
+ea1e a 391 25
+ea28 a 346 25
+ea32 3 382 25
+ea35 5 381 25
+ea3a 6 382 25
+ea40 5 383 25
+FUNC ea50 1c0 0 ConvertUTF32toUTF8
+ea50 2 406 25
+ea52 3 408 25
+ea55 2 410 25
+ea57 2 406 25
+ea59 3 410 25
+ea5c 3 406 25
+ea5f 3 409 25
+ea62 1 406 25
+ea63 d 410 25
+ea70 3 416 25
+ea73 7 415 25
+ea7a 2 416 25
+ea7c 14 418 25
+ea90 6 428 25
+ea96 4 437 25
+ea9a f 438 25
+eaa9 f 437 25
+eab8 9 429 25
+eac1 4 437 25
+eac5 f 438 25
+ead4 c 437 25
+eae0 9 430 25
+eae9 4 437 25
+eaed f 438 25
+eafc c 437 25
+eb08 d 431 25
+eb15 4 437 25
+eb19 9 438 25
+eb22 15 443 25
+eb37 6 437 25
+eb3d 8 443 25
+eb45 17 444 25
+eb5c 17 445 25
+eb73 f 446 25
+eb82 3 410 25
+eb85 5 448 25
+eb8a 3 415 25
+eb8d 4 446 25
+eb91 6 410 25
+eb97 1 453 25
+eb98 3 450 25
+eb9b 3 451 25
+eb9e 12 453 25
+ebb0 6 433 25
+ebb6 a 434 25
+ebc0 1 453 25
+ebc1 3 450 25
+ebc4 3 451 25
+ebc7 5 420 25
+ebcc 8 453 25
+ebd4 7 438 25
+ebdb 1 453 25
+ebdc 3 440 25
+ebdf 3 450 25
+ebe2 5 440 25
+ebe7 3 451 25
+ebea 8 453 25
+ebf2 9 438 25
+ebfb 3 437 25
+ebfe 12 438 25
+FUNC ec10 29f 0 ConvertUTF8toUTF32
+ec10 e 458 25
+ec1e 3 460 25
+ec21 3 461 25
+ec24 14 458 25
+ec38 3 462 25
+ec3b 5 458 25
+ec40 6 462 25
+ec46 14 464 25
+ec5a 12 465 25
+ec6c 4 457 25
+ec70 18 459 25
+ec88 7 469 25
+ec8f 4 457 25
+ec93 19 469 25
+ecac 2 463 25
+ecae 1a 476 25
+ecc8 2 463 25
+ecca 10 478 25
+ecda 10 479 25
+ecea 10 480 25
+ecfa 10 481 25
+ed0a c 482 25
+ed16 b 484 25
+ed21 b 486 25
+ed2c c 490 25
+ed38 14 495 25
+ed4c c 496 25
+ed58 3 457 25
+ed5b 8 501 25
+ed63 b 462 25
+ed6e 19 464 25
+ed87 17 465 25
+ed9e 8 466 25
+eda6 5 511 25
+edab 5 512 25
+edb0 3 511 25
+edb3 3 512 25
+edb6 1a 514 25
+edd0 30 463 25
+ee00 10 477 25
+ee10 10 463 25
+ee20 5 462 25
+ee25 3 457 25
+ee28 8 508 25
+ee30 8 507 25
+ee38 18 462 25
+ee50 3 457 25
+ee53 10 504 25
+ee63 d 470 25
+ee70 6 487 25
+ee76 8 488 25
+ee7e 6 487 25
+ee84 5 488 25
+ee89 6 497 25
+ee8f 8 498 25
+ee97 6 497 25
+ee9d 5 499 25
+eea2 d 459 25
+FUNC eeb0 a 0 google_breakpad::FileID::FileID(char const*)
+eeb0 a 52 27
+FUNC eec0 1ee 0 google_breakpad::FileID::ElfFileIdentifierFromMappedFile(void const*, unsigned char*)
+eec0 a 143 27
+eeca 5 99 27
+eecf 4 143 27
+eed3 12 99 27
+eee5 f 98 27
+eef4 21 102 27
+ef15 8 98 27
+ef1d 23 125 27
+ef40 2 127 27
+ef42 c 124 27
+ef4e f 130 27
+ef5d d 132 27
+ef6a 5 131 27
+ef6f b 132 27
+ef7a 6 133 27
+ef80 8 78 27
+ef88 b 135 27
+ef93 6 134 27
+ef99 4 136 27
+ef9d 5 133 27
+efa2 5 146 27
+efa7 9 150 27
+efb0 b 98 27
+efbb d 107 27
+efc8 9 110 27
+efd1 4 66 27
+efd5 5 112 27
+efda 3 66 27
+efdd 13 68 27
+eff0 1a 71 27
+f00a 9 68 27
+f013 6 69 27
+f019 b 76 27
+f024 3 82 27
+f027 a 85 27
+f031 b 82 27
+f03c 5 85 27
+f041 3 87 27
+f044 5 194 38
+f049 6 87 27
+f04f 8 194 38
+f057 a 87 27
+f061 4 66 27
+f065 5 109 27
+f06a 3 66 27
+f06d 13 68 27
+f080 1a 71 27
+f09a 9 68 27
+f0a3 b 69 27
+FUNC f0b0 59 0 google_breakpad::FileID::ElfFileIdentifier(unsigned char*)
+f0b0 4 152 27
+f0b4 3 153 27
+f0b7 4 152 27
+f0bb a 153 27
+f0c5 5 192 27
+f0ca 5 154 27
+f0cf 1b 157 27
+f0ea 6 158 27
+f0f0 4 155 27
+f0f4 15 157 27
+FUNC f110 e5 0 google_breakpad::FileID::ConvertIdentifierToString(unsigned char const*, char*, int)
+f110 2 162 27
+f112 c 166 27
+f11e 8 168 27
+f126 3 170 27
+f129 4 172 27
+f12d 4 170 27
+f131 4 172 27
+f135 4 170 27
+f139 2 175 27
+f13b 5 170 27
+f140 5 172 27
+f145 13 175 27
+f158 a 175 27
+f162 6 178 27
+f168 8 181 27
+f170 3 178 27
+f173 4 179 27
+f177 3 178 27
+f17a 3 181 27
+f17d 4 179 27
+f181 6 178 27
+f187 2 181 27
+f189 5 181 27
+f18e a 182 27
+f198 1a 184 27
+f1b2 1a 185 27
+f1cc 2 175 27
+f1ce 4 185 27
+f1d2 2 175 27
+f1d4 7 189 27
+f1db 1 190 27
+f1dc 4 189 27
+f1e0 2 190 27
+f1e2 6 174 27
+f1e8 6 189 27
+f1ee 1 190 27
+f1ef 4 189 27
+f1f3 2 190 27
+FUNC f200 10 0 google_breakpad::MemoryMappedFile::MemoryMappedFile()
+f200 10 50 13
+FUNC f210 56 0 google_breakpad::MemoryMappedFile::Unmap()
+f210 11 98 30
+f221 3 105 30
+f224 5 99 30
+f229 1f 2701 15
+f248 7 70 13
+f24f 8 72 13
+f257 f 103 30
+FUNC f270 193 0 google_breakpad::MemoryMappedFile::Map(char const*)
+f270 a 57 30
+f27a 2 2711 15
+f27c 14 57 30
+f290 3 57 30
+f293 5 58 30
+f298 1b 2711 15
+f2b3 9 2629 15
+f2bc 34 96 30
+f2f0 5 61 30
+f2f5 3 2645 15
+f2f8 3 67 30
+f2fb 20 2645 15
+f31b 1e 2629 15
+f339 7 73 30
+f340 5 67 30
+f345 b 67 30
+f350 6 79 30
+f356 39 2816 15
+f38f 1e 2629 15
+f3ad 6 90 30
+f3b3 5 94 30
+f3b8 8 72 13
+f3c0 4 70 13
+f3c4 5 95 30
+f3c9 17 72 13
+f3e0 13 2629 15
+f3f3 5 81 30
+f3f8 b 2629 15
+FUNC f410 14 0 google_breakpad::MemoryMappedFile::MemoryMappedFile(char const*)
+f410 f 50 13
+f41f 5 50 30
+FUNC f430 5 0 google_breakpad::MemoryMappedFile::~MemoryMappedFile()
+f430 5 54 30
+FUNC f440 3a 0 google_breakpad::SafeReadLink(char const*, char*, unsigned long)
+f440 1 39 31
+f441 1b 2726 15
+f45c 2 50 31
+f45e 2 51 31
+f460 b 46 31
+f46b 4 47 31
+f46f 5 48 31
+f474 2 51 31
+f476 2 50 31
+f478 2 51 31
+FUNC f480 1f 0 google_breakpad::IsValidElf(void const*)
+f480 7 111 26
+f487 4 109 26
+f48b f 111 26
+f49a 5 112 26
+FUNC f4a0 5 0 google_breakpad::ElfClass(void const*)
+f4a0 4 118 26
+f4a4 1 119 26
+FUNC f4b0 466 0 google_breakpad::FindElfSection(void const*, char const*, unsigned int, void const**, int*, int*)
+f4b0 25 126 26
+f4d5 3 127 26
+f4d8 5 126 26
+f4dd 6 127 26
+f4e3 c 128 26
+f4ef c 129 26
+f4fb 7 131 26
+f502 d 132 26
+f50f 9 134 26
+f518 2 135 26
+f51a 26 156 26
+f540 8 137 26
+f548 5 138 26
+f54d 3 139 26
+f550 9 145 26
+f559 5 149 26
+f55e 1c 55 26
+f57a a 58 26
+f584 4 62 26
+f588 a 42 10
+f592 4 70 26
+f596 7 62 26
+f59d 4 42 10
+f5a1 7 65 26
+f5a8 6 53 10
+f5ae 5 65 26
+f5b3 6 53 10
+f5b9 9 54 10
+f5c2 9 55 10
+f5cb e 57 10
+f5d9 8 58 10
+f5e1 3 121 26
+f5e4 3 63 10
+f5e7 3 121 26
+f5ea 3 63 10
+f5ed 17 121 26
+f604 5 61 10
+f609 4 63 10
+f60d 3 62 10
+f610 7 63 10
+f617 4 62 10
+f61b 2a 63 10
+f645 9 72 26
+f64e 8 73 26
+f656 e 74 26
+f664 b 152 26
+f66f 1c 55 26
+f68b a 58 26
+f695 4 62 26
+f699 3 42 10
+f69c 4 70 26
+f6a0 4 62 26
+f6a4 3 42 10
+f6a7 4 62 26
+f6ab 4 42 10
+f6af 4 65 26
+f6b3 3 42 10
+f6b6 3 65 26
+f6b9 c 53 10
+f6c5 9 54 10
+f6ce 9 55 10
+f6d7 13 57 10
+f6ea 11 58 10
+f6fb 3 121 26
+f6fe 3 63 10
+f701 3 121 26
+f704 3 63 10
+f707 15 121 26
+f71c 9 61 10
+f725 4 63 10
+f729 2 62 10
+f72b 2 63 10
+f72d 4 62 10
+f731 37 63 10
+f768 b 72 26
+f773 a 73 26
+f77d 9 74 26
+f786 1f 127 26
+f7a5 1f 129 26
+f7c4 1f 128 26
+f7e3 3e 55 10
+f821 1c 54 10
+f83d 1f 53 10
+f85c 1f 58 26
+f87b 1f 55 26
+f89a 1f 54 10
+f8b9 1f 53 10
+f8d8 1f 58 26
+f8f7 1f 55 26
+FUNC f920 29c 0 google_breakpad::FindElfSegment(void const*, unsigned int, void const**, int*, int*)
+f920 20 162 26
+f940 9 163 26
+f949 c 164 26
+f955 c 165 26
+f961 7 167 26
+f968 c 168 26
+f974 9 170 26
+f97d 2 171 26
+f97f 21 192 26
+f9a0 8 173 26
+f9a8 5 174 26
+f9ad 3 175 26
+f9b0 9 181 26
+f9b9 5 185 26
+f9be 1c 90 26
+f9da a 93 26
+f9e4 4 98 26
+f9e8 7 42 10
+f9ef 3 98 26
+f9f2 3 42 10
+f9f5 2 98 26
+f9f7 9 99 26
+fa00 20 158 26
+fa20 11 99 26
+fa31 9 98 26
+fa3a b 188 26
+fa45 1c 90 26
+fa61 a 93 26
+fa6b 3 42 10
+fa6e 4 98 26
+fa72 3 42 10
+fa75 3 98 26
+fa78 3 42 10
+fa7b 2 98 26
+fa7d 5 99 26
+fa82 1e 158 26
+faa0 d 99 26
+faad b 98 26
+fab8 4 100 26
+fabc 4 101 26
+fac0 4 100 26
+fac4 9 101 26
+facd 6 100 26
+fad3 3 101 26
+fad6 4 100 26
+fada 9 101 26
+fae3 1f 165 26
+fb02 1f 164 26
+fb21 1f 163 26
+fb40 1f 93 26
+fb5f 1f 90 26
+fb7e 1f 93 26
+fb9d 1f 90 26
+STACK CFI INIT 1a70 3b0 .cfa: $rsp 16 + .ra: .cfa -8 + ^
+STACK CFI 1a76 .cfa: $rsp 24 +
+STACK CFI INIT 2590 12 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 25b0 8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 25c0 8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 25d0 c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 25e0 c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 25f0 c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2600 9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 24d0 2c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 24d1 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 24fb .cfa: $rsp 8 +
+STACK CFI INIT 2610 35 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2500 3e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 2504 .cfa: $rsp 32 +
+STACK CFI 2538 .cfa: $rsp 8 +
+STACK CFI 2539 .cfa: $rsp 32 +
+STACK CFI INIT 2540 49 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 2544 .cfa: $rsp 32 +
+STACK CFI 2583 .cfa: $rsp 8 +
+STACK CFI 2584 .cfa: $rsp 32 +
+STACK CFI INIT 2650 90 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 2651 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 2658 .cfa: $rsp 32 +
+STACK CFI 267e .cfa: $rsp 16 +
+STACK CFI 267f .cfa: $rsp 8 +
+STACK CFI 2680 .cfa: $rsp 32 +
+STACK CFI INIT 26e0 92 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 26e5 $rbp: .cfa -16 + ^
+STACK CFI 26f3 $rbx: .cfa -24 + ^ .cfa: $rsp 32 +
+STACK CFI 271d .cfa: $rsp 8 +
+STACK CFI 2720 .cfa: $rsp 32 +
+STACK CFI 275a .cfa: $rsp 8 +
+STACK CFI 275c .cfa: $rsp 32 +
+STACK CFI INIT 2150 279 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 2152 $r13: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 2157 $r12: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 2160 $rbp: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 2161 $rbx: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI 2168 .cfa: $rsp 336 +
+STACK CFI 22e7 .cfa: $rsp 40 +
+STACK CFI 22e8 .cfa: $rsp 32 +
+STACK CFI 22e9 .cfa: $rsp 24 +
+STACK CFI 22eb .cfa: $rsp 16 +
+STACK CFI 22ed .cfa: $rsp 8 +
+STACK CFI 22ee .cfa: $rsp 336 +
+STACK CFI INIT 1e20 1a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 2780 f5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 278f $r14: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 2791 $r13: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 2793 $r12: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 279b $rbp: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI 27a3 $rbx: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI 27ac .cfa: $rsp 208 +
+STACK CFI 2852 .cfa: $rsp 48 +
+STACK CFI 2858 $rbx: $rbx .cfa: $rsp 40 +
+STACK CFI 2859 $rbp: $rbp .cfa: $rsp 32 +
+STACK CFI 285b $r12: $r12 .cfa: $rsp 24 +
+STACK CFI 285d $r13: $r13 .cfa: $rsp 16 +
+STACK CFI 285f $r14: $r14 .cfa: $rsp 8 +
+STACK CFI 2860 $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^ $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^ .cfa: $rsp 208 +
+STACK CFI 2867 .cfa: $rsp 48 +
+STACK CFI 286a $rbx: $rbx .cfa: $rsp 40 +
+STACK CFI 286b $rbp: $rbp .cfa: $rsp 32 +
+STACK CFI 286d $r12: $r12 .cfa: $rsp 24 +
+STACK CFI 286f $r13: $r13 .cfa: $rsp 16 +
+STACK CFI 2871 $r14: $r14 .cfa: $rsp 8 +
+STACK CFI INIT 2880 8b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 2893 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI 28ab $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI 28b1 .cfa: $rsp 48 +
+STACK CFI 28fc $r12: $r12 $r13: $r13 $rbp: $rbp $rbx: $rbx .cfa: $rsp 8 +
+STACK CFI 2900 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^ .cfa: $rsp 48 +
+STACK CFI INIT 2910 104 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 292b $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI 2932 .cfa: $rsp 64 +
+STACK CFI 2971 .cfa: $rsp 8 +
+STACK CFI 2978 .cfa: $rsp 64 +
+STACK CFI 29dd .cfa: $rsp 8 +
+STACK CFI 29e8 .cfa: $rsp 64 +
+STACK CFI INIT 2a20 467 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 2a2a $r13: .cfa -32 + ^ $rbp: .cfa -48 + ^
+STACK CFI 2a4b $r12: .cfa -40 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbx: .cfa -56 + ^ .cfa: $rsp 160 +
+STACK CFI 2a92 .cfa: $rsp 8 +
+STACK CFI 2a98 .cfa: $rsp 160 +
+STACK CFI INIT 2e90 1a6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 2e92 $r12: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 2e93 $rbp: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 2e97 $rbx: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 2ea1 .cfa: $rsp 1632 +
+STACK CFI 2fe5 .cfa: $rsp 32 +
+STACK CFI 2fe6 .cfa: $rsp 24 +
+STACK CFI 2fe7 .cfa: $rsp 16 +
+STACK CFI 2fe9 .cfa: $rsp 8 +
+STACK CFI 2ff0 .cfa: $rsp 1632 +
+STACK CFI 2ff7 .cfa: $rsp 32 +
+STACK CFI 2ffd .cfa: $rsp 24 +
+STACK CFI 2ffe .cfa: $rsp 16 +
+STACK CFI 3000 .cfa: $rsp 8 +
+STACK CFI 3008 .cfa: $rsp 1632 +
+STACK CFI INIT 3040 68 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 304a $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 3056 $r12: .cfa -16 + ^ .cfa: $rsp 32 +
+STACK CFI 3082 .cfa: $rsp 8 +
+STACK CFI 3088 .cfa: $rsp 32 +
+STACK CFI 30a3 .cfa: $rsp 8 +
+STACK CFI INIT 30b0 56 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 30b7 .cfa: $rsp 1104 +
+STACK CFI 3105 .cfa: $rsp 8 +
+STACK CFI INIT 3110 18b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 3112 $r15: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 3114 $r14: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 3116 $r13: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 3118 $r12: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI 311c $rbp: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI 3120 $rbx: .cfa -56 + ^ .cfa: $rsp 56 +
+STACK CFI 3129 .cfa: $rsp 224 +
+STACK CFI 31e3 .cfa: $rsp 56 +
+STACK CFI 31e4 .cfa: $rsp 48 +
+STACK CFI 31e5 .cfa: $rsp 40 +
+STACK CFI 31e7 .cfa: $rsp 32 +
+STACK CFI 31e9 .cfa: $rsp 24 +
+STACK CFI 31eb .cfa: $rsp 16 +
+STACK CFI 31ed .cfa: $rsp 8 +
+STACK CFI 31f0 .cfa: $rsp 224 +
+STACK CFI INIT 32a0 e0 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 32aa $r12: .cfa -24 + ^ $rbp: .cfa -32 + ^
+STACK CFI 32ba $r13: .cfa -16 + ^ $rbx: .cfa -40 + ^ .cfa: $rsp 80 +
+STACK CFI 32f8 .cfa: $rsp 8 +
+STACK CFI 3300 .cfa: $rsp 80 +
+STACK CFI INIT 3380 58 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 3384 .cfa: $rsp 32 +
+STACK CFI 33b4 .cfa: $rsp 8 +
+STACK CFI 33b8 .cfa: $rsp 32 +
+STACK CFI 33d7 .cfa: $rsp 8 +
+STACK CFI INIT 33e0 28 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 33e1 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 3407 .cfa: $rsp 8 +
+STACK CFI INIT 3410 153 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 3411 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 3418 .cfa: $rsp 1616 +
+STACK CFI 3472 .cfa: $rsp 16 +
+STACK CFI 3473 .cfa: $rsp 8 +
+STACK CFI 3478 .cfa: $rsp 1616 +
+STACK CFI 3535 .cfa: $rsp 16 +
+STACK CFI 3536 .cfa: $rsp 8 +
+STACK CFI 3540 .cfa: $rsp 1616 +
+STACK CFI INIT 3570 cf .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 358b $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^ .cfa: $rsp 640 +
+STACK CFI 363a .cfa: $rsp 8 +
+STACK CFI INIT 3640 5d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 3642 $r12: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 3646 $rbp: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 364b $rbx: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 3687 .cfa: $rsp 24 +
+STACK CFI 368e .cfa: $rsp 16 +
+STACK CFI 3690 .cfa: $rsp 8 +
+STACK CFI 3698 .cfa: $rsp 32 +
+STACK CFI 3699 .cfa: $rsp 24 +
+STACK CFI 369a .cfa: $rsp 16 +
+STACK CFI 369c .cfa: $rsp 8 +
+STACK CFI INIT 36a0 31 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 36a1 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 36bf .cfa: $rsp 8 +
+STACK CFI 36c0 .cfa: $rsp 16 +
+STACK CFI 36cc .cfa: $rsp 8 +
+STACK CFI INIT 36e0 179 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 36ea $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 36f7 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^
+STACK CFI 3708 $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ .cfa: $rsp 128 +
+STACK CFI 37d0 .cfa: $rsp 8 +
+STACK CFI 37d8 .cfa: $rsp 128 +
+STACK CFI INIT 4030 2f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 4031 $rbp: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 4035 $rbx: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 4039 .cfa: $rsp 32 +
+STACK CFI 405c .cfa: $rsp 24 +
+STACK CFI 405d .cfa: $rsp 16 +
+STACK CFI 405e .cfa: $rsp 8 +
+STACK CFI INIT 4060 2f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 4061 $rbp: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 4065 $rbx: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 4069 .cfa: $rsp 32 +
+STACK CFI 408c .cfa: $rsp 24 +
+STACK CFI 408d .cfa: $rsp 16 +
+STACK CFI 408e .cfa: $rsp 8 +
+STACK CFI INIT 3860 336 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 3862 $r13: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 3864 $r12: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 3865 $rbp: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 3866 $rbx: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI 386d .cfa: $rsp 128 +
+STACK CFI 39c5 .cfa: $rsp 40 +
+STACK CFI 39c6 .cfa: $rsp 32 +
+STACK CFI 39c7 .cfa: $rsp 24 +
+STACK CFI 39c9 .cfa: $rsp 16 +
+STACK CFI 39cb .cfa: $rsp 8 +
+STACK CFI 39d0 .cfa: $rsp 128 +
+STACK CFI INIT 4090 1ba .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 409a $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 40b8 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ .cfa: $rsp 80 +
+STACK CFI 4122 .cfa: $rsp 8 +
+STACK CFI 4128 .cfa: $rsp 80 +
+STACK CFI INIT 3ba0 31c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 3ba5 $r14: .cfa -24 + ^
+STACK CFI 3bb8 $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 3bc9 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ .cfa: $rsp 80 +
+STACK CFI 3ccf .cfa: $rsp 8 +
+STACK CFI 3cd0 .cfa: $rsp 80 +
+STACK CFI INIT 3ec0 167 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 3eca $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI 3ede $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ .cfa: $rsp 256 +
+STACK CFI 3fa2 .cfa: $rsp 8 +
+STACK CFI 3fa3 .cfa: $rsp 256 +
+STACK CFI INIT 1e3a 1a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 4250 7d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 425e $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^ .cfa: $rsp 32 +
+STACK CFI 42ad .cfa: $rsp 8 +
+STACK CFI 42ae .cfa: $rsp 32 +
+STACK CFI INIT 42d0 232 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 42d2 $r12: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 42d3 $rbp: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 42d4 $rbx: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 42db .cfa: $rsp 160 +
+STACK CFI 443e .cfa: $rsp 32 +
+STACK CFI 443f .cfa: $rsp 24 +
+STACK CFI 4440 .cfa: $rsp 16 +
+STACK CFI 4442 .cfa: $rsp 8 +
+STACK CFI 4443 .cfa: $rsp 160 +
+STACK CFI INIT 4510 85 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 4511 $rbp: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 4515 $rbx: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 4519 .cfa: $rsp 32 +
+STACK CFI 4570 .cfa: $rsp 24 +
+STACK CFI 4574 .cfa: $rsp 16 +
+STACK CFI 4575 .cfa: $rsp 8 +
+STACK CFI 4576 .cfa: $rsp 32 +
+STACK CFI INIT 45a0 38 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 45a7 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 45c2 .cfa: $rsp 8 +
+STACK CFI 45c8 .cfa: $rsp 16 +
+STACK CFI 45d7 .cfa: $rsp 8 +
+STACK CFI INIT 1e54 27 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1e55 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 1e7a .cfa: $rsp 8 +
+STACK CFI INIT 45e0 5d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 45ee $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^ .cfa: $rsp 32 +
+STACK CFI 4615 .cfa: $rsp 8 +
+STACK CFI 4620 .cfa: $rsp 32 +
+STACK CFI INIT 1e7c 20 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1e84 .cfa: $rsp 16 +
+STACK CFI INIT 1e9c 20 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1ea4 .cfa: $rsp 16 +
+STACK CFI INIT 4640 1e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 4659 .cfa: $rsp 16 +
+STACK CFI INIT 1ebc 20 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1ec4 .cfa: $rsp 16 +
+STACK CFI INIT 1edc 20 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1ee4 .cfa: $rsp 16 +
+STACK CFI INIT 8260 153 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8272 $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 828d $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ .cfa: $rsp 64 +
+STACK CFI 82d7 $r12: $r12 $r13: $r13 $r14: $r14 $r15: $r15 $rbp: $rbp $rbx: $rbx .cfa: $rsp 8 +
+STACK CFI 82e0 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^ .cfa: $rsp 64 +
+STACK CFI 83b0 $r12: $r12 $r13: $r13 $r14: $r14 $r15: $r15 $rbp: $rbp $rbx: $rbx .cfa: $rsp 8 +
+STACK CFI INIT 1efc 1ac .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1efe $r15: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 1f05 $r14: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 1f07 $r13: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 1f09 $r12: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI 1f10 $rbp: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI 1f11 $rbx: .cfa -56 + ^ .cfa: $rsp 56 +
+STACK CFI 1f15 .cfa: $rsp 112 +
+STACK CFI 209d .cfa: $rsp 56 +
+STACK CFI 209e .cfa: $rsp 48 +
+STACK CFI 209f .cfa: $rsp 40 +
+STACK CFI 20a1 .cfa: $rsp 32 +
+STACK CFI 20a3 .cfa: $rsp 24 +
+STACK CFI 20a5 .cfa: $rsp 16 +
+STACK CFI 20a7 .cfa: $rsp 8 +
+STACK CFI INIT 20a8 3f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 20a9 $rbp: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 20ad $rbx: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 20b7 .cfa: $rsp 288 +
+STACK CFI 20e2 .cfa: $rsp 24 +
+STACK CFI 20e5 .cfa: $rsp 16 +
+STACK CFI 20e6 .cfa: $rsp 8 +
+STACK CFI INIT 83c0 248 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 83c2 $r15: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 83c4 $r14: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 83ca $r13: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 83cc $r12: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI 83cd $rbp: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI 83d1 $rbx: .cfa -56 + ^ .cfa: $rsp 56 +
+STACK CFI 83d8 .cfa: $rsp 64 +
+STACK CFI 8536 .cfa: $rsp 56 +
+STACK CFI 8537 .cfa: $rsp 48 +
+STACK CFI 8538 .cfa: $rsp 40 +
+STACK CFI 853a .cfa: $rsp 32 +
+STACK CFI 853c .cfa: $rsp 24 +
+STACK CFI 853e .cfa: $rsp 16 +
+STACK CFI 8545 .cfa: $rsp 8 +
+STACK CFI 8550 .cfa: $rsp 64 +
+STACK CFI 85b2 .cfa: $rsp 56 +
+STACK CFI 85b5 .cfa: $rsp 48 +
+STACK CFI 85b6 .cfa: $rsp 40 +
+STACK CFI 85b8 .cfa: $rsp 32 +
+STACK CFI 85ba .cfa: $rsp 24 +
+STACK CFI 85bc .cfa: $rsp 16 +
+STACK CFI 85be .cfa: $rsp 8 +
+STACK CFI 85bf .cfa: $rsp 64 +
+STACK CFI INIT 8610 22 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 8640 22 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 8670 22 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 86a0 22 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 86d0 229 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 86ee $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI 86ff $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ .cfa: $rsp 128 +
+STACK CFI 8741 .cfa: $rsp 8 +
+STACK CFI 8748 .cfa: $rsp 128 +
+STACK CFI INIT 8900 357 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8905 $rbp: .cfa -48 + ^
+STACK CFI 8917 $r12: .cfa -40 + ^ $r14: .cfa -24 + ^ $rbx: .cfa -56 + ^
+STACK CFI 8928 $r13: .cfa -32 + ^ $r15: .cfa -16 + ^ .cfa: $rsp 128 +
+STACK CFI 89a7 .cfa: $rsp 8 +
+STACK CFI 89b0 .cfa: $rsp 128 +
+STACK CFI INIT 4660 15e5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 4662 $r15: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 4664 $r14: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 4666 $r13: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 466c $r12: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI 466d $rbp: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI 466e $rbx: .cfa -56 + ^ .cfa: $rsp 56 +
+STACK CFI 4678 .cfa: $rsp 3696 +
+STACK CFI 4899 .cfa: $rsp 56 +
+STACK CFI 489c .cfa: $rsp 48 +
+STACK CFI 489d .cfa: $rsp 40 +
+STACK CFI 489f .cfa: $rsp 32 +
+STACK CFI 48a1 .cfa: $rsp 24 +
+STACK CFI 48a3 .cfa: $rsp 16 +
+STACK CFI 48a5 .cfa: $rsp 8 +
+STACK CFI 48b0 .cfa: $rsp 3696 +
+STACK CFI INIT 8c60 17f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8c62 $r15: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 8c66 $r14: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 8c68 $r13: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 8c6a $r12: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI 8c6b $rbp: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI 8c6f $rbx: .cfa -56 + ^ .cfa: $rsp 56 +
+STACK CFI 8c76 .cfa: $rsp 96 +
+STACK CFI 8cdb .cfa: $rsp 56 +
+STACK CFI 8cdc .cfa: $rsp 48 +
+STACK CFI 8cdd .cfa: $rsp 40 +
+STACK CFI 8cdf .cfa: $rsp 32 +
+STACK CFI 8ce1 .cfa: $rsp 24 +
+STACK CFI 8ce3 .cfa: $rsp 16 +
+STACK CFI 8ce5 .cfa: $rsp 8 +
+STACK CFI 8cf0 .cfa: $rsp 96 +
+STACK CFI INIT 8de0 3cd .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 8de2 $r15: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 8de4 $r14: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 8de6 $r13: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 8de8 $r12: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI 8de9 $rbp: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI 8ded $rbx: .cfa -56 + ^ .cfa: $rsp 56 +
+STACK CFI 8df1 .cfa: $rsp 128 +
+STACK CFI 8ffd .cfa: $rsp 56 +
+STACK CFI 8ffe .cfa: $rsp 48 +
+STACK CFI 8fff .cfa: $rsp 40 +
+STACK CFI 9001 .cfa: $rsp 32 +
+STACK CFI 9003 .cfa: $rsp 24 +
+STACK CFI 9005 .cfa: $rsp 16 +
+STACK CFI 9007 .cfa: $rsp 8 +
+STACK CFI 9010 .cfa: $rsp 128 +
+STACK CFI 9079 .cfa: $rsp 56 +
+STACK CFI 9081 .cfa: $rsp 48 +
+STACK CFI 9082 .cfa: $rsp 40 +
+STACK CFI 9084 .cfa: $rsp 32 +
+STACK CFI 9086 .cfa: $rsp 24 +
+STACK CFI 9088 .cfa: $rsp 16 +
+STACK CFI 908a .cfa: $rsp 8 +
+STACK CFI 9090 .cfa: $rsp 128 +
+STACK CFI INIT 5c50 1d12 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 5c52 $r15: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 5c5d $r14: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 5c62 $r13: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 5c64 $r12: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI 5c65 $rbp: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI 5c66 $rbx: .cfa -56 + ^ .cfa: $rsp 56 +
+STACK CFI 5c6d .cfa: $rsp 2832 +
+STACK CFI 5da2 .cfa: $rsp 56 +
+STACK CFI 5da5 .cfa: $rsp 48 +
+STACK CFI 5da6 .cfa: $rsp 40 +
+STACK CFI 5da8 .cfa: $rsp 32 +
+STACK CFI 5daa .cfa: $rsp 24 +
+STACK CFI 5dac .cfa: $rsp 16 +
+STACK CFI 5dae .cfa: $rsp 8 +
+STACK CFI 5db0 .cfa: $rsp 2832 +
+STACK CFI INIT 7970 1ac .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7972 $r12: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 7976 $rbp: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 797a $rbx: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 7981 .cfa: $rsp 160 +
+STACK CFI 7a65 .cfa: $rsp 32 +
+STACK CFI 7a68 .cfa: $rsp 24 +
+STACK CFI 7a69 .cfa: $rsp 16 +
+STACK CFI 7a6b .cfa: $rsp 8 +
+STACK CFI 7a70 .cfa: $rsp 160 +
+STACK CFI INIT 7b20 2ce .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7b2a $r12: .cfa -40 + ^ $rbx: .cfa -56 + ^
+STACK CFI 7b4b $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ .cfa: $rsp 368 +
+STACK CFI 7bd0 .cfa: $rsp 8 +
+STACK CFI 7bd8 .cfa: $rsp 368 +
+STACK CFI INIT 7df0 2b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7df4 .cfa: $rsp 32 +
+STACK CFI 7e1a .cfa: $rsp 8 +
+STACK CFI INIT 7e20 2c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7e24 .cfa: $rsp 32 +
+STACK CFI 7e4b .cfa: $rsp 8 +
+STACK CFI INIT 7e50 2a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7e54 .cfa: $rsp 32 +
+STACK CFI 7e79 .cfa: $rsp 8 +
+STACK CFI INIT 7e80 2b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7e84 .cfa: $rsp 32 +
+STACK CFI 7eaa .cfa: $rsp 8 +
+STACK CFI INIT 7eb0 9a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7ec6 $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^ .cfa: $rsp 96 +
+STACK CFI 7f2e .cfa: $rsp 8 +
+STACK CFI 7f2f .cfa: $rsp 96 +
+STACK CFI INIT 7f50 9b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7f66 $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^ .cfa: $rsp 96 +
+STACK CFI 7fcf .cfa: $rsp 8 +
+STACK CFI 7fd0 .cfa: $rsp 96 +
+STACK CFI INIT 7ff0 26a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 7ff2 $r12: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 7ff6 $rbp: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 7ff7 $rbx: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 8000 .cfa: $rsp 368 +
+STACK CFI 816a .cfa: $rsp 32 +
+STACK CFI 816d .cfa: $rsp 24 +
+STACK CFI 816e .cfa: $rsp 16 +
+STACK CFI 8170 .cfa: $rsp 8 +
+STACK CFI 8178 .cfa: $rsp 368 +
+STACK CFI INIT 20e8 20 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 20f0 .cfa: $rsp 16 +
+STACK CFI INIT 2108 20 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 2110 .cfa: $rsp 16 +
+STACK CFI INIT 91b0 1a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 91d0 87 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 91de $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^ .cfa: $rsp 32 +
+STACK CFI 9225 .cfa: $rsp 8 +
+STACK CFI 9230 .cfa: $rsp 32 +
+STACK CFI INIT 9260 2c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9274 .cfa: $rsp 16 +
+STACK CFI INIT 9290 78 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 929a $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^
+STACK CFI 92a6 $r12: .cfa -16 + ^ .cfa: $rsp 32 +
+STACK CFI 92fb .cfa: $rsp 8 +
+STACK CFI 9300 .cfa: $rsp 32 +
+STACK CFI INIT 9310 15 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 9330 d6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9348 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^ .cfa: $rsp 48 +
+STACK CFI 9393 .cfa: $rsp 8 +
+STACK CFI 9398 .cfa: $rsp 48 +
+STACK CFI INIT 9410 fa .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9411 $rbp: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 9415 $rbx: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 9419 .cfa: $rsp 32 +
+STACK CFI 944b .cfa: $rsp 24 +
+STACK CFI 944c .cfa: $rsp 16 +
+STACK CFI 944d .cfa: $rsp 8 +
+STACK CFI 9450 .cfa: $rsp 32 +
+STACK CFI INIT 9510 a8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9512 $r14: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 9514 $r13: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 9516 $r12: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 9517 $rbp: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI 951a $rbx: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI 951e .cfa: $rsp 64 +
+STACK CFI 95a3 .cfa: $rsp 48 +
+STACK CFI 95a4 .cfa: $rsp 40 +
+STACK CFI 95a5 .cfa: $rsp 32 +
+STACK CFI 95a7 .cfa: $rsp 24 +
+STACK CFI 95a9 .cfa: $rsp 16 +
+STACK CFI 95ab .cfa: $rsp 8 +
+STACK CFI 95ac .cfa: $rsp 64 +
+STACK CFI INIT 95c0 aa .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 95c2 $r14: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 95c4 $r13: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 95c6 $r12: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 95c7 $rbp: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI 95c8 $rbx: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI 95ce .cfa: $rsp 64 +
+STACK CFI 9655 .cfa: $rsp 48 +
+STACK CFI 9656 .cfa: $rsp 40 +
+STACK CFI 9657 .cfa: $rsp 32 +
+STACK CFI 9659 .cfa: $rsp 24 +
+STACK CFI 965b .cfa: $rsp 16 +
+STACK CFI 965d .cfa: $rsp 8 +
+STACK CFI 965e .cfa: $rsp 64 +
+STACK CFI INIT 9670 41 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9671 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 9691 .cfa: $rsp 8 +
+STACK CFI 9692 .cfa: $rsp 16 +
+STACK CFI INIT 96c0 88 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 96c4 .cfa: $rsp 16 +
+STACK CFI 96e7 .cfa: $rsp 8 +
+STACK CFI 96ec .cfa: $rsp 16 +
+STACK CFI INIT 9750 c4 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9751 $rbp: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 9755 $rbx: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 9759 .cfa: $rsp 64 +
+STACK CFI 9791 .cfa: $rsp 24 +
+STACK CFI 9794 .cfa: $rsp 16 +
+STACK CFI 9795 .cfa: $rsp 8 +
+STACK CFI 97a0 .cfa: $rsp 64 +
+STACK CFI 97ce .cfa: $rsp 24 +
+STACK CFI 97d4 .cfa: $rsp 16 +
+STACK CFI 97d5 .cfa: $rsp 8 +
+STACK CFI 97d6 .cfa: $rsp 64 +
+STACK CFI INIT 9840 22 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 9870 1e8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9872 $r14: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 9874 $r13: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 9876 $r12: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 987a $rbp: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI 987b $rbx: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI 987f .cfa: $rsp 112 +
+STACK CFI 9933 .cfa: $rsp 48 +
+STACK CFI 9936 .cfa: $rsp 40 +
+STACK CFI 9937 .cfa: $rsp 32 +
+STACK CFI 9939 .cfa: $rsp 24 +
+STACK CFI 993b .cfa: $rsp 16 +
+STACK CFI 993d .cfa: $rsp 8 +
+STACK CFI 9940 .cfa: $rsp 112 +
+STACK CFI INIT 9820 5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 9a60 1e8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9a62 $r14: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 9a64 $r13: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 9a66 $r12: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 9a6a $rbp: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI 9a6b $rbx: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI 9a6f .cfa: $rsp 112 +
+STACK CFI 9b24 .cfa: $rsp 48 +
+STACK CFI 9b27 .cfa: $rsp 40 +
+STACK CFI 9b28 .cfa: $rsp 32 +
+STACK CFI 9b2a .cfa: $rsp 24 +
+STACK CFI 9b2c .cfa: $rsp 16 +
+STACK CFI 9b2e .cfa: $rsp 8 +
+STACK CFI 9b30 .cfa: $rsp 112 +
+STACK CFI INIT 9830 5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT 9c50 78 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9c52 $r13: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 9c5a $r12: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 9c5f $rbp: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 9c63 $rbx: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI 9c6b .cfa: $rsp 64 +
+STACK CFI 9cab .cfa: $rsp 40 +
+STACK CFI 9cae .cfa: $rsp 32 +
+STACK CFI 9caf .cfa: $rsp 24 +
+STACK CFI 9cb1 .cfa: $rsp 16 +
+STACK CFI 9cb3 .cfa: $rsp 8 +
+STACK CFI 9cb8 .cfa: $rsp 64 +
+STACK CFI 9cbf .cfa: $rsp 40 +
+STACK CFI 9cc0 .cfa: $rsp 32 +
+STACK CFI 9cc3 .cfa: $rsp 24 +
+STACK CFI 9cc5 .cfa: $rsp 16 +
+STACK CFI 9cc7 .cfa: $rsp 8 +
+STACK CFI INIT 9cd0 56 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9cd1 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 9cdf .cfa: $rsp 48 +
+STACK CFI 9d24 .cfa: $rsp 16 +
+STACK CFI 9d25 .cfa: $rsp 8 +
+STACK CFI INIT 9d30 147 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9d32 $r14: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 9d34 $r13: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 9d36 $r12: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI 9d3a $rbp: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI 9d3e $rbx: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI 9d42 .cfa: $rsp 80 +
+STACK CFI 9dc3 .cfa: $rsp 48 +
+STACK CFI 9dc7 .cfa: $rsp 40 +
+STACK CFI 9dc8 .cfa: $rsp 32 +
+STACK CFI 9dca .cfa: $rsp 24 +
+STACK CFI 9dcc .cfa: $rsp 16 +
+STACK CFI 9dce .cfa: $rsp 8 +
+STACK CFI 9dd0 .cfa: $rsp 80 +
+STACK CFI INIT a060 295 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a06a $r12: .cfa -40 + ^ $rbx: .cfa -56 + ^
+STACK CFI a085 $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbp: .cfa -48 + ^ .cfa: $rsp 80 +
+STACK CFI a136 .cfa: $rsp 8 +
+STACK CFI a140 .cfa: $rsp 80 +
+STACK CFI INIT 9e80 e3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9e81 $rbp: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 9e85 $rbx: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 9e8c .cfa: $rsp 64 +
+STACK CFI 9f25 .cfa: $rsp 24 +
+STACK CFI 9f26 .cfa: $rsp 16 +
+STACK CFI 9f27 .cfa: $rsp 8 +
+STACK CFI 9f30 .cfa: $rsp 64 +
+STACK CFI 9f44 .cfa: $rsp 24 +
+STACK CFI 9f45 .cfa: $rsp 16 +
+STACK CFI 9f46 .cfa: $rsp 8 +
+STACK CFI 9f50 .cfa: $rsp 64 +
+STACK CFI INIT 9f70 e3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 9f71 $rbp: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 9f75 $rbx: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI 9f7c .cfa: $rsp 64 +
+STACK CFI a017 .cfa: $rsp 24 +
+STACK CFI a018 .cfa: $rsp 16 +
+STACK CFI a019 .cfa: $rsp 8 +
+STACK CFI a020 .cfa: $rsp 64 +
+STACK CFI a034 .cfa: $rsp 24 +
+STACK CFI a035 .cfa: $rsp 16 +
+STACK CFI a036 .cfa: $rsp 8 +
+STACK CFI a040 .cfa: $rsp 64 +
+STACK CFI INIT a430 16 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a434 .cfa: $rsp 16 +
+STACK CFI a43f .cfa: $rsp 8 +
+STACK CFI INIT a300 73 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a301 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI a372 .cfa: $rsp 8 +
+STACK CFI INIT a380 ad .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a381 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI a385 .cfa: $rsp 32 +
+STACK CFI a40a .cfa: $rsp 16 +
+STACK CFI a40d .cfa: $rsp 8 +
+STACK CFI a40e .cfa: $rsp 32 +
+STACK CFI INIT a450 1e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT a470 33 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT a4b0 56 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT a510 54 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT a570 36 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT a5b0 43 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT a600 42 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT a650 26 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT a680 32 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT a6c0 64 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT a730 3a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT a770 1e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT a790 38 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT a7d0 3e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a7d1 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI a7ed .cfa: $rsp 8 +
+STACK CFI a7f0 .cfa: $rsp 16 +
+STACK CFI a80d .cfa: $rsp 8 +
+STACK CFI INIT a810 4e .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT a860 1aa .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI a862 $r14: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI a871 $r13: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI a879 $r12: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI a87f $rbp: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI a880 $rbx: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI a887 .cfa: $rsp 208 +
+STACK CFI a9a3 .cfa: $rsp 48 +
+STACK CFI a9a9 .cfa: $rsp 40 +
+STACK CFI a9aa .cfa: $rsp 32 +
+STACK CFI a9ac .cfa: $rsp 24 +
+STACK CFI a9ae .cfa: $rsp 16 +
+STACK CFI a9b0 .cfa: $rsp 8 +
+STACK CFI a9b8 .cfa: $rsp 208 +
+STACK CFI a9ff .cfa: $rsp 48 +
+STACK CFI aa02 .cfa: $rsp 40 +
+STACK CFI aa03 .cfa: $rsp 32 +
+STACK CFI aa05 .cfa: $rsp 24 +
+STACK CFI aa07 .cfa: $rsp 16 +
+STACK CFI aa09 .cfa: $rsp 8 +
+STACK CFI INIT aa10 1c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI aa13 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI aa24 .cfa: $rsp 8 +
+STACK CFI aa28 .cfa: $rsp 16 +
+STACK CFI aa2b .cfa: $rsp 8 +
+STACK CFI INIT 2128 20 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 2130 .cfa: $rsp 16 +
+STACK CFI INIT aa30 67 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI aa32 $r13: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI aa38 $r12: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI aa3f $rbp: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI aa40 $rbx: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI aa44 .cfa: $rsp 48 +
+STACK CFI aa90 .cfa: $rsp 40 +
+STACK CFI aa91 .cfa: $rsp 32 +
+STACK CFI aa92 .cfa: $rsp 24 +
+STACK CFI aa94 .cfa: $rsp 16 +
+STACK CFI aa96 .cfa: $rsp 8 +
+STACK CFI INIT aaa0 12 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI aaa1 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI aaad .cfa: $rsp 8 +
+STACK CFI INIT aac0 105 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI aac2 $r12: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI aacd $rbp: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI aace $rbx: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI aad5 .cfa: $rsp 320 +
+STACK CFI aaf3 .cfa: $rsp 32 +
+STACK CFI aaf6 .cfa: $rsp 24 +
+STACK CFI aaf7 .cfa: $rsp 16 +
+STACK CFI aaf9 .cfa: $rsp 8 +
+STACK CFI ab00 .cfa: $rsp 320 +
+STACK CFI ab78 .cfa: $rsp 32 +
+STACK CFI ab7b .cfa: $rsp 24 +
+STACK CFI ab7c .cfa: $rsp 16 +
+STACK CFI ab7e .cfa: $rsp 8 +
+STACK CFI ab80 .cfa: $rsp 320 +
+STACK CFI INIT abd0 32 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI abd1 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI abe0 .cfa: $rsp 8 +
+STACK CFI abe8 .cfa: $rsp 16 +
+STACK CFI abfc .cfa: $rsp 8 +
+STACK CFI INIT ac10 4c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ac60 94 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ac6a $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI ac77 $r12: .cfa -32 + ^ $r13: .cfa -24 + ^
+STACK CFI ac83 $r14: .cfa -16 + ^ .cfa: $rsp 48 +
+STACK CFI acec .cfa: $rsp 8 +
+STACK CFI acf0 .cfa: $rsp 48 +
+STACK CFI INIT ad00 1fd .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ad0a $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI ad21 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^ .cfa: $rsp 848 +
+STACK CFI ad58 .cfa: $rsp 8 +
+STACK CFI ad60 .cfa: $rsp 848 +
+STACK CFI INIT af00 35d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI af0a $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI af2b $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ .cfa: $rsp 368 +
+STACK CFI afb6 .cfa: $rsp 8 +
+STACK CFI afc0 .cfa: $rsp 368 +
+STACK CFI INIT bbd0 221 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI bbee $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI bbff $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ .cfa: $rsp 128 +
+STACK CFI bc41 .cfa: $rsp 8 +
+STACK CFI bc48 .cfa: $rsp 128 +
+STACK CFI INIT be00 229 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI be1e $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI be2f $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ .cfa: $rsp 128 +
+STACK CFI be71 .cfa: $rsp 8 +
+STACK CFI be78 .cfa: $rsp 128 +
+STACK CFI INIT c030 229 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c04e $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI c05f $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ .cfa: $rsp 128 +
+STACK CFI c0a1 .cfa: $rsp 8 +
+STACK CFI c0a8 .cfa: $rsp 128 +
+STACK CFI INIT c260 320 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c26a $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI c288 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ .cfa: $rsp 128 +
+STACK CFI c2f5 .cfa: $rsp 8 +
+STACK CFI c300 .cfa: $rsp 128 +
+STACK CFI INIT c580 460 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c582 $r15: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI c584 $r14: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI c586 $r13: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI c588 $r12: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI c589 $rbp: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI c58d $rbx: .cfa -56 + ^ .cfa: $rsp 56 +
+STACK CFI c591 .cfa: $rsp 128 +
+STACK CFI c638 .cfa: $rsp 56 +
+STACK CFI c639 .cfa: $rsp 48 +
+STACK CFI c63a .cfa: $rsp 40 +
+STACK CFI c63c .cfa: $rsp 32 +
+STACK CFI c63e .cfa: $rsp 24 +
+STACK CFI c640 .cfa: $rsp 16 +
+STACK CFI c642 .cfa: $rsp 8 +
+STACK CFI c648 .cfa: $rsp 128 +
+STACK CFI c6c8 .cfa: $rsp 56 +
+STACK CFI c6c9 .cfa: $rsp 48 +
+STACK CFI c6ca .cfa: $rsp 40 +
+STACK CFI c6cc .cfa: $rsp 32 +
+STACK CFI c6ce .cfa: $rsp 24 +
+STACK CFI c6d0 .cfa: $rsp 16 +
+STACK CFI c6d2 .cfa: $rsp 8 +
+STACK CFI c6d8 .cfa: $rsp 128 +
+STACK CFI c8c8 .cfa: $rsp 56 +
+STACK CFI c8c9 .cfa: $rsp 48 +
+STACK CFI c8ca .cfa: $rsp 40 +
+STACK CFI c8cc .cfa: $rsp 32 +
+STACK CFI c8ce .cfa: $rsp 24 +
+STACK CFI c8d0 .cfa: $rsp 16 +
+STACK CFI c8d2 .cfa: $rsp 8 +
+STACK CFI c8d8 .cfa: $rsp 128 +
+STACK CFI INIT b260 1a9 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI b26a $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI b284 $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^ .cfa: $rsp 64 +
+STACK CFI b3ae .cfa: $rsp 8 +
+STACK CFI b3b0 .cfa: $rsp 64 +
+STACK CFI INIT c9e0 43f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI c9e2 $r15: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI c9e4 $r14: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI c9e6 $r13: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI c9e8 $r12: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI c9ec $rbp: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI c9ed $rbx: .cfa -56 + ^ .cfa: $rsp 56 +
+STACK CFI c9f1 .cfa: $rsp 128 +
+STACK CFI cab0 .cfa: $rsp 56 +
+STACK CFI cab1 .cfa: $rsp 48 +
+STACK CFI cab2 .cfa: $rsp 40 +
+STACK CFI cab4 .cfa: $rsp 32 +
+STACK CFI cab6 .cfa: $rsp 24 +
+STACK CFI cab8 .cfa: $rsp 16 +
+STACK CFI caba .cfa: $rsp 8 +
+STACK CFI cac0 .cfa: $rsp 128 +
+STACK CFI cb30 .cfa: $rsp 56 +
+STACK CFI cb31 .cfa: $rsp 48 +
+STACK CFI cb32 .cfa: $rsp 40 +
+STACK CFI cb34 .cfa: $rsp 32 +
+STACK CFI cb36 .cfa: $rsp 24 +
+STACK CFI cb38 .cfa: $rsp 16 +
+STACK CFI cb3a .cfa: $rsp 8 +
+STACK CFI cb40 .cfa: $rsp 128 +
+STACK CFI ccfd .cfa: $rsp 56 +
+STACK CFI ccfe .cfa: $rsp 48 +
+STACK CFI ccff .cfa: $rsp 40 +
+STACK CFI cd01 .cfa: $rsp 32 +
+STACK CFI cd03 .cfa: $rsp 24 +
+STACK CFI cd05 .cfa: $rsp 16 +
+STACK CFI cd07 .cfa: $rsp 8 +
+STACK CFI cd10 .cfa: $rsp 128 +
+STACK CFI INIT b410 7b2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI b412 $r15: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI b41e $r14: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI b420 $r13: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI b422 $r12: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI b423 $rbp: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI b424 $rbx: .cfa -56 + ^ .cfa: $rsp 56 +
+STACK CFI b42b .cfa: $rsp 464 +
+STACK CFI b44c .cfa: $rsp 56 +
+STACK CFI b44d .cfa: $rsp 48 +
+STACK CFI b44e .cfa: $rsp 40 +
+STACK CFI b450 .cfa: $rsp 32 +
+STACK CFI b452 .cfa: $rsp 24 +
+STACK CFI b454 .cfa: $rsp 16 +
+STACK CFI b456 .cfa: $rsp 8 +
+STACK CFI b457 .cfa: $rsp 464 +
+STACK CFI INIT ce20 3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT db00 13 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT ce30 d8 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ce46 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI ce57 $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ .cfa: $rsp 64 +
+STACK CFI cea0 .cfa: $rsp 8 +
+STACK CFI cea8 .cfa: $rsp 64 +
+STACK CFI INIT cf10 ac .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI cf12 $r15: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI cf17 $r14: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI cf19 $r13: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI cf1b $r12: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI cf1c $rbp: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI cf1d $rbx: .cfa -56 + ^ .cfa: $rsp 56 +
+STACK CFI cf21 .cfa: $rsp 96 +
+STACK CFI cf94 .cfa: $rsp 56 +
+STACK CFI cf95 .cfa: $rsp 48 +
+STACK CFI cf96 .cfa: $rsp 40 +
+STACK CFI cf98 .cfa: $rsp 32 +
+STACK CFI cf9a .cfa: $rsp 24 +
+STACK CFI cf9c .cfa: $rsp 16 +
+STACK CFI cf9e .cfa: $rsp 8 +
+STACK CFI cfa0 .cfa: $rsp 96 +
+STACK CFI INIT cfc0 c2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI cfc2 $r13: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI cfc7 $r12: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI cfc8 $rbp: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI cfcc $rbx: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI cfd0 .cfa: $rsp 64 +
+STACK CFI d04f .cfa: $rsp 40 +
+STACK CFI d053 .cfa: $rsp 32 +
+STACK CFI d054 .cfa: $rsp 24 +
+STACK CFI d056 .cfa: $rsp 16 +
+STACK CFI d058 .cfa: $rsp 8 +
+STACK CFI d060 .cfa: $rsp 64 +
+STACK CFI INIT db20 20 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI db28 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI db3b .cfa: $rsp 8 +
+STACK CFI INIT d090 49f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d092 $r15: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI d094 $r14: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI d096 $r13: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI d098 $r12: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI d09c $rbp: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI d09d $rbx: .cfa -56 + ^ .cfa: $rsp 56 +
+STACK CFI d0a7 .cfa: $rsp 336 +
+STACK CFI d0ef .cfa: $rsp 56 +
+STACK CFI d0f0 .cfa: $rsp 48 +
+STACK CFI d0f1 .cfa: $rsp 40 +
+STACK CFI d0f3 .cfa: $rsp 32 +
+STACK CFI d0f5 .cfa: $rsp 24 +
+STACK CFI d0f7 .cfa: $rsp 16 +
+STACK CFI d0f9 .cfa: $rsp 8 +
+STACK CFI d0fa .cfa: $rsp 336 +
+STACK CFI INIT d530 20 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d531 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI d54f .cfa: $rsp 8 +
+STACK CFI INIT db40 306 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI db45 $rbx: .cfa -56 + ^
+STACK CFI db57 $r12: .cfa -40 + ^ $r14: .cfa -24 + ^ $rbp: .cfa -48 + ^
+STACK CFI db68 $r13: .cfa -32 + ^ $r15: .cfa -16 + ^ .cfa: $rsp 128 +
+STACK CFI dbce .cfa: $rsp 8 +
+STACK CFI dbd0 .cfa: $rsp 128 +
+STACK CFI INIT d550 36d .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d55a $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI d57f $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ .cfa: $rsp 352 +
+STACK CFI d5cd .cfa: $rsp 8 +
+STACK CFI d5d0 .cfa: $rsp 352 +
+STACK CFI INIT de50 458 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI de52 $r15: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI de54 $r14: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI de56 $r13: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI de58 $r12: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI de59 $rbp: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI de5d $rbx: .cfa -56 + ^ .cfa: $rsp 56 +
+STACK CFI de61 .cfa: $rsp 128 +
+STACK CFI df08 .cfa: $rsp 56 +
+STACK CFI df09 .cfa: $rsp 48 +
+STACK CFI df0a .cfa: $rsp 40 +
+STACK CFI df0c .cfa: $rsp 32 +
+STACK CFI df0e .cfa: $rsp 24 +
+STACK CFI df10 .cfa: $rsp 16 +
+STACK CFI df12 .cfa: $rsp 8 +
+STACK CFI df18 .cfa: $rsp 128 +
+STACK CFI df90 .cfa: $rsp 56 +
+STACK CFI df91 .cfa: $rsp 48 +
+STACK CFI df92 .cfa: $rsp 40 +
+STACK CFI df94 .cfa: $rsp 32 +
+STACK CFI df96 .cfa: $rsp 24 +
+STACK CFI df98 .cfa: $rsp 16 +
+STACK CFI df9a .cfa: $rsp 8 +
+STACK CFI dfa0 .cfa: $rsp 128 +
+STACK CFI e18e .cfa: $rsp 56 +
+STACK CFI e18f .cfa: $rsp 48 +
+STACK CFI e190 .cfa: $rsp 40 +
+STACK CFI e192 .cfa: $rsp 32 +
+STACK CFI e194 .cfa: $rsp 24 +
+STACK CFI e196 .cfa: $rsp 16 +
+STACK CFI e198 .cfa: $rsp 8 +
+STACK CFI e1a0 .cfa: $rsp 128 +
+STACK CFI INIT d8c0 235 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI d8c2 $r15: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI d8c9 $r14: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI d8cb $r13: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI d8cd $r12: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI d8d1 $rbp: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI d8d2 $rbx: .cfa -56 + ^ .cfa: $rsp 56 +
+STACK CFI d8d9 .cfa: $rsp 320 +
+STACK CFI da54 .cfa: $rsp 56 +
+STACK CFI da55 .cfa: $rsp 48 +
+STACK CFI da56 .cfa: $rsp 40 +
+STACK CFI da58 .cfa: $rsp 32 +
+STACK CFI da5a .cfa: $rsp 24 +
+STACK CFI da5c .cfa: $rsp 16 +
+STACK CFI da5e .cfa: $rsp 8 +
+STACK CFI da60 .cfa: $rsp 320 +
+STACK CFI INIT e2b0 e3 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT e3a0 fe .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e3a4 $rbp: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI e3a8 $rbx: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI e427 .cfa: $rsp 16 +
+STACK CFI e428 .cfa: $rsp 8 +
+STACK CFI e430 .cfa: $rsp 24 +
+STACK CFI e48b .cfa: $rsp 16 +
+STACK CFI e48c .cfa: $rsp 8 +
+STACK CFI e48d .cfa: $rsp 24 +
+STACK CFI INIT e4a0 e6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e4b1 $r12: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI e4b2 $rbp: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI e4b3 $rbx: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI e528 $rbx: $rbx .cfa: $rsp 24 +
+STACK CFI e529 $rbp: $rbp .cfa: $rsp 16 +
+STACK CFI e536 $r12: $r12 .cfa: $rsp 8 +
+STACK CFI e540 $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI e54b $rbx: $rbx .cfa: $rsp 24 +
+STACK CFI e54c $rbp: $rbp .cfa: $rsp 16 +
+STACK CFI e559 $r12: $r12 .cfa: $rsp 8 +
+STACK CFI e560 $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI e561 $rbx: $rbx .cfa: $rsp 24 +
+STACK CFI e562 $rbp: $rbp .cfa: $rsp 16 +
+STACK CFI e56c $r12: $r12 .cfa: $rsp 8 +
+STACK CFI e56d $r12: .cfa -16 + ^ $rbp: .cfa -24 + ^ $rbx: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI e56e $rbx: $rbx .cfa: $rsp 24 +
+STACK CFI e56f $rbp: $rbp .cfa: $rsp 16 +
+STACK CFI e57c $r12: $r12 .cfa: $rsp 8 +
+STACK CFI INIT e590 216 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e592 $r13: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI e597 $r12: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI e59b $rbp: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI e59f $rbx: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI e636 .cfa: $rsp 32 +
+STACK CFI e642 .cfa: $rsp 24 +
+STACK CFI e644 .cfa: $rsp 16 +
+STACK CFI e646 .cfa: $rsp 8 +
+STACK CFI e650 .cfa: $rsp 40 +
+STACK CFI e73b .cfa: $rsp 32 +
+STACK CFI e744 .cfa: $rsp 24 +
+STACK CFI e746 .cfa: $rsp 16 +
+STACK CFI e748 .cfa: $rsp 8 +
+STACK CFI e750 .cfa: $rsp 40 +
+STACK CFI e75b .cfa: $rsp 32 +
+STACK CFI e767 .cfa: $rsp 24 +
+STACK CFI e769 .cfa: $rsp 16 +
+STACK CFI e76b .cfa: $rsp 8 +
+STACK CFI e76c .cfa: $rsp 40 +
+STACK CFI e774 .cfa: $rsp 32 +
+STACK CFI e783 .cfa: $rsp 24 +
+STACK CFI e785 .cfa: $rsp 16 +
+STACK CFI e787 .cfa: $rsp 8 +
+STACK CFI e788 .cfa: $rsp 40 +
+STACK CFI INIT e7b0 2b .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT e7e0 265 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI e7e2 $r15: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI e7e4 $r14: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI e7e6 $r13: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI e7e8 $r12: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI e7e9 $rbp: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI e7ea $rbx: .cfa -56 + ^ .cfa: $rsp 56 +
+STACK CFI e7ee .cfa: $rsp 96 +
+STACK CFI e943 .cfa: $rsp 56 +
+STACK CFI e944 .cfa: $rsp 48 +
+STACK CFI e945 .cfa: $rsp 40 +
+STACK CFI e947 .cfa: $rsp 32 +
+STACK CFI e949 .cfa: $rsp 24 +
+STACK CFI e94b .cfa: $rsp 16 +
+STACK CFI e94d .cfa: $rsp 8 +
+STACK CFI e950 .cfa: $rsp 96 +
+STACK CFI INIT ea50 1c0 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ea52 $r14: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI ea59 $r13: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI ea5e $r12: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI ea5f $rbp: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI ea63 $rbx: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI eb98 .cfa: $rsp 40 +
+STACK CFI eb9f .cfa: $rsp 32 +
+STACK CFI eba1 .cfa: $rsp 24 +
+STACK CFI eba3 .cfa: $rsp 16 +
+STACK CFI eba5 .cfa: $rsp 8 +
+STACK CFI ebb0 .cfa: $rsp 48 +
+STACK CFI ebc1 .cfa: $rsp 40 +
+STACK CFI ebcd .cfa: $rsp 32 +
+STACK CFI ebcf .cfa: $rsp 24 +
+STACK CFI ebd1 .cfa: $rsp 16 +
+STACK CFI ebd3 .cfa: $rsp 8 +
+STACK CFI ebd4 .cfa: $rsp 48 +
+STACK CFI ebdc .cfa: $rsp 40 +
+STACK CFI ebeb .cfa: $rsp 32 +
+STACK CFI ebed .cfa: $rsp 24 +
+STACK CFI ebef .cfa: $rsp 16 +
+STACK CFI ebf1 .cfa: $rsp 8 +
+STACK CFI ebf2 .cfa: $rsp 48 +
+STACK CFI INIT ec10 29f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI ec12 $r15: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI ec14 $r14: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI ec16 $r13: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI ec18 $r12: .cfa -40 + ^ .cfa: $rsp 40 +
+STACK CFI ec19 $rbp: .cfa -48 + ^ .cfa: $rsp 48 +
+STACK CFI ec1a $rbx: .cfa -56 + ^ .cfa: $rsp 56 +
+STACK CFI ec1e .cfa: $rsp 104 +
+STACK CFI edbe .cfa: $rsp 56 +
+STACK CFI edbf .cfa: $rsp 48 +
+STACK CFI edc0 .cfa: $rsp 40 +
+STACK CFI edc2 .cfa: $rsp 32 +
+STACK CFI edc4 .cfa: $rsp 24 +
+STACK CFI edc6 .cfa: $rsp 16 +
+STACK CFI edc8 .cfa: $rsp 8 +
+STACK CFI edd0 .cfa: $rsp 104 +
+STACK CFI INIT eeb0 a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT eec0 1ee .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI eec2 $r12: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI eec6 $rbp: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI eec7 $rbx: .cfa -32 + ^ .cfa: $rsp 32 +
+STACK CFI eed3 .cfa: $rsp 48 +
+STACK CFI efab .cfa: $rsp 32 +
+STACK CFI efac .cfa: $rsp 24 +
+STACK CFI efad .cfa: $rsp 16 +
+STACK CFI efaf .cfa: $rsp 8 +
+STACK CFI efb0 .cfa: $rsp 48 +
+STACK CFI INIT f0b0 59 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f0b1 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI f0bb .cfa: $rsp 48 +
+STACK CFI f0ee .cfa: $rsp 16 +
+STACK CFI f0ef .cfa: $rsp 8 +
+STACK CFI f0f0 .cfa: $rsp 48 +
+STACK CFI INIT f110 e5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f111 $rbp: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI f112 $rbx: .cfa -24 + ^ .cfa: $rsp 24 +
+STACK CFI f1dc .cfa: $rsp 16 +
+STACK CFI f1e1 .cfa: $rsp 8 +
+STACK CFI f1e2 .cfa: $rsp 24 +
+STACK CFI f1ef .cfa: $rsp 16 +
+STACK CFI f1f4 .cfa: $rsp 8 +
+STACK CFI INIT f200 10 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT f210 56 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f21a $rbp: .cfa -16 + ^ $rbx: .cfa -24 + ^
+STACK CFI f221 .cfa: $rsp 32 +
+STACK CFI f265 .cfa: $rsp 8 +
+STACK CFI INIT f270 193 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f27a $rbp: .cfa -32 + ^ $rbx: .cfa -40 + ^
+STACK CFI f286 $r12: .cfa -24 + ^ $r13: .cfa -16 + ^
+STACK CFI f290 .cfa: $rsp 192 +
+STACK CFI f2e5 .cfa: $rsp 8 +
+STACK CFI f2f0 .cfa: $rsp 192 +
+STACK CFI INIT f410 14 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT f430 5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT f440 3a .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f441 $rbx: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI f45f .cfa: $rsp 8 +
+STACK CFI f460 .cfa: $rsp 16 +
+STACK CFI f475 .cfa: $rsp 8 +
+STACK CFI f476 .cfa: $rsp 16 +
+STACK CFI f479 .cfa: $rsp 8 +
+STACK CFI INIT f480 1f .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f48b .cfa: $rsp 16 +
+STACK CFI f49e .cfa: $rsp 8 +
+STACK CFI INIT f4a0 5 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT f4b0 466 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f4ba $rbp: .cfa -48 + ^ $rbx: .cfa -56 + ^
+STACK CFI f4d5 $r12: .cfa -40 + ^ $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ .cfa: $rsp 112 +
+STACK CFI f53c .cfa: $rsp 8 +
+STACK CFI f540 .cfa: $rsp 112 +
+STACK CFI INIT f920 29c .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f92a $rbp: .cfa -40 + ^ $rbx: .cfa -48 + ^
+STACK CFI f940 $r12: .cfa -32 + ^ $r13: .cfa -24 + ^ $r14: .cfa -16 + ^ .cfa: $rsp 48 +
+STACK CFI f99b .cfa: $rsp 8 +
+STACK CFI f9a0 .cfa: $rsp 48 +
+STACK CFI INIT fbc0 2 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI INIT fbd0 89 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI fbe1 $r12: .cfa -40 + ^ $rbp: .cfa -48 + ^
+STACK CFI fc00 .cfa: $rsp 64 +
+STACK CFI fc06 $r13: .cfa -32 + ^ $r14: .cfa -24 + ^ $r15: .cfa -16 + ^ $rbx: .cfa -56 + ^
diff --git a/google-breakpad/src/processor/testdata/symbols/test_app.pdb/5A9832E5287241C1838ED98914E9B7FF1/test_app.sym b/google-breakpad/src/processor/testdata/symbols/test_app.pdb/5A9832E5287241C1838ED98914E9B7FF1/test_app.sym
new file mode 100644
index 0000000..72fb4da
--- /dev/null
+++ b/google-breakpad/src/processor/testdata/symbols/test_app.pdb/5A9832E5287241C1838ED98914E9B7FF1/test_app.sym
@@ -0,0 +1,22151 @@
+MODULE windows x86 5A9832E5287241C1838ED98914E9B7FF1 test_app.pdb
+FILE 1 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winbase.h
+FILE 2 c:\program files\microsoft visual studio 8\vc\include\typeinfo
+FILE 3 c:\breakpad\trunk\src\common\windows\guid_string.h
+FILE 4 c:\program files\microsoft visual studio 8\vc\platformsdk\include\rpcdce.h
+FILE 5 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winreg.h
+FILE 6 c:\program files\microsoft visual studio 8\vc\platformsdk\include\objidl.h
+FILE 7 c:\program files\microsoft visual studio 8\vc\platformsdk\include\wtypes.h
+FILE 8 c:\program files\microsoft visual studio 8\vc\platformsdk\include\tvout.h
+FILE 9 c:\program files\microsoft visual studio 8\vc\include\malloc.h
+FILE 10 c:\program files\microsoft visual studio 8\vc\platformsdk\include\pshpack2.h
+FILE 11 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winuser.h
+FILE 12 c:\breakpad\trunk\src\client\windows\handler\exception_handler.cc
+FILE 13 c:\program files\microsoft visual studio 8\vc\platformsdk\include\urlmon.h
+FILE 14 c:\program files\microsoft visual studio 8\vc\platformsdk\include\wincon.h
+FILE 15 c:\program files\microsoft visual studio 8\vc\platformsdk\include\imm.h
+FILE 16 c:\program files\microsoft visual studio 8\vc\platformsdk\include\rpcdcep.h
+FILE 17 c:\program files\microsoft visual studio 8\vc\include\xstring
+FILE 18 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winver.h
+FILE 19 c:\program files\microsoft visual studio 8\vc\include\xmemory
+FILE 20 c:\program files\microsoft visual studio 8\vc\include\new
+FILE 21 c:\program files\microsoft visual studio 8\vc\platformsdk\include\pshpack4.h
+FILE 22 c:\program files\microsoft visual studio 8\vc\platformsdk\include\reason.h
+FILE 23 c:\program files\microsoft visual studio 8\vc\include\vector
+FILE 24 c:\program files\microsoft visual studio 8\vc\include\memory
+FILE 25 c:\program files\microsoft visual studio 8\vc\include\wtime.inl
+FILE 26 c:\program files\microsoft visual studio 8\vc\include\iterator
+FILE 27 c:\program files\microsoft visual studio 8\vc\platformsdk\include\propidl.h
+FILE 28 c:\program files\microsoft visual studio 8\vc\platformsdk\include\pshpack1.h
+FILE 29 c:\program files\microsoft visual studio 8\vc\platformsdk\include\specstrings.h
+FILE 30 c:\program files\microsoft visual studio 8\vc\platformsdk\include\basetsd.h
+FILE 31 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winerror.h
+FILE 32 c:\program files\microsoft visual studio 8\vc\include\assert.h
+FILE 33 c:\program files\microsoft visual studio 8\vc\platformsdk\include\poppack.h
+FILE 34 c:\program files\microsoft visual studio 8\vc\include\cstdio
+FILE 35 c:\program files\microsoft visual studio 8\vc\include\stdio.h
+FILE 36 c:\program files\microsoft visual studio 8\vc\platformsdk\include\rpcnterr.h
+FILE 37 c:\program files\microsoft visual studio 8\vc\platformsdk\include\rpcasync.h
+FILE 38 c:\program files\microsoft visual studio 8\vc\platformsdk\include\rpcnsi.h
+FILE 39 c:\program files\microsoft visual studio 8\vc\include\stdlib.h
+FILE 40 c:\program files\microsoft visual studio 8\vc\platformsdk\include\servprov.h
+FILE 41 c:\program files\microsoft visual studio 8\vc\include\limits.h
+FILE 42 c:\program files\microsoft visual studio 8\vc\platformsdk\include\rpcndr.h
+FILE 43 c:\breakpad\trunk\src\client\windows\handler\exception_handler.h
+FILE 44 c:\program files\microsoft visual studio 8\vc\platformsdk\include\rpcnsip.h
+FILE 45 c:\program files\microsoft visual studio 8\vc\platformsdk\include\dbghelp.h
+FILE 46 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winnetwk.h
+FILE 47 c:\program files\microsoft visual studio 8\vc\include\share.h
+FILE 48 c:\program files\microsoft visual studio 8\vc\platformsdk\include\pshpack8.h
+FILE 49 c:\program files\microsoft visual studio 8\vc\platformsdk\include\stralign.h
+FILE 50 c:\breakpad\trunk\src\google_breakpad\common\minidump_format.h
+FILE 51 c:\breakpad\trunk\src\google_breakpad\common\breakpad_types.h
+FILE 52 c:\program files\microsoft visual studio 8\vc\include\xdebug
+FILE 53 c:\program files\microsoft visual studio 8\vc\include\stdarg.h
+FILE 54 c:\program files\microsoft visual studio 8\vc\platformsdk\include\windef.h
+FILE 55 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winsvc.h
+FILE 56 c:\program files\microsoft visual studio 8\vc\platformsdk\include\wingdi.h
+FILE 57 c:\program files\microsoft visual studio 8\vc\include\xlocinfo
+FILE 58 c:\program files\microsoft visual studio 8\vc\include\xlocinfo.h
+FILE 59 c:\program files\microsoft visual studio 8\vc\platformsdk\include\oleidl.h
+FILE 60 c:\program files\microsoft visual studio 8\vc\include\locale.h
+FILE 61 c:\program files\microsoft visual studio 8\vc\include\string
+FILE 62 c:\program files\microsoft visual studio 8\vc\include\istream
+FILE 63 c:\breakpad\trunk\src\common\windows\string_utils-inl.h
+FILE 64 c:\program files\microsoft visual studio 8\vc\include\ostream
+FILE 65 c:\program files\microsoft visual studio 8\vc\include\xutility
+FILE 66 c:\program files\microsoft visual studio 8\vc\include\wchar.h
+FILE 67 c:\program files\microsoft visual studio 8\vc\include\utility
+FILE 68 c:\program files\microsoft visual studio 8\vc\include\ios
+FILE 69 c:\program files\microsoft visual studio 8\vc\include\xlocnum
+FILE 70 c:\program files\microsoft visual studio 8\vc\include\iosfwd
+FILE 71 c:\program files\microsoft visual studio 8\vc\include\swprintf.inl
+FILE 72 c:\program files\microsoft visual studio 8\vc\platformsdk\include\guiddef.h
+FILE 73 c:\program files\microsoft visual studio 8\vc\include\cwchar
+FILE 74 c:\program files\microsoft visual studio 8\vc\include\climits
+FILE 75 c:\program files\microsoft visual studio 8\vc\include\crtdbg.h
+FILE 76 c:\program files\microsoft visual studio 8\vc\include\cstdlib
+FILE 77 c:\program files\microsoft visual studio 8\vc\include\streambuf
+FILE 78 c:\program files\microsoft visual studio 8\vc\include\xiosbase
+FILE 79 c:\program files\microsoft visual studio 8\vc\include\xlocale
+FILE 80 c:\program files\microsoft visual studio 8\vc\include\cstring
+FILE 81 c:\program files\microsoft visual studio 8\vc\platformsdk\include\mcx.h
+FILE 82 c:\program files\microsoft visual studio 8\vc\include\stdexcept
+FILE 83 c:\program files\microsoft visual studio 8\vc\include\exception
+FILE 84 c:\program files\microsoft visual studio 8\vc\include\xstddef
+FILE 85 c:\program files\microsoft visual studio 8\vc\platformsdk\include\objbase.h
+FILE 86 c:\program files\microsoft visual studio 8\vc\include\cstddef
+FILE 87 c:\program files\microsoft visual studio 8\vc\platformsdk\include\unknwn.h
+FILE 88 c:\program files\microsoft visual studio 8\vc\platformsdk\include\rpc.h
+FILE 89 c:\program files\microsoft visual studio 8\vc\include\stddef.h
+FILE 90 c:\program files\microsoft visual studio 8\vc\include\cassert
+FILE 91 c:\program files\microsoft visual studio 8\vc\platformsdk\include\ole2.h
+FILE 92 c:\program files\microsoft visual studio 8\vc\platformsdk\include\windows.h
+FILE 93 c:\program files\microsoft visual studio 8\vc\include\yvals.h
+FILE 94 c:\program files\microsoft visual studio 8\vc\platformsdk\include\oleauto.h
+FILE 95 c:\program files\microsoft visual studio 8\vc\include\excpt.h
+FILE 96 c:\program files\microsoft visual studio 8\vc\include\use_ansi.h
+FILE 97 c:\program files\microsoft visual studio 8\vc\platformsdk\include\cguid.h
+FILE 98 c:\program files\microsoft visual studio 8\vc\include\crtdefs.h
+FILE 99 c:\program files\microsoft visual studio 8\vc\platformsdk\include\msxml.h
+FILE 100 c:\program files\microsoft visual studio 8\vc\platformsdk\include\oaidl.h
+FILE 101 c:\program files\microsoft visual studio 8\vc\include\sal.h
+FILE 102 c:\program files\microsoft visual studio 8\vc\include\vadefs.h
+FILE 103 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winnt.h
+FILE 104 c:\program files\microsoft visual studio 8\vc\include\ctype.h
+FILE 105 c:\program files\microsoft visual studio 8\vc\include\eh.h
+FILE 106 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winnls.h
+FILE 107 c:\program files\microsoft visual studio 8\vc\include\string.h
+FILE 108 c:\program files\microsoft visual studio 8\vc\include\ctype.h
+FILE 109 c:\program files\microsoft visual studio 8\vc\include\xutility
+FILE 110 c:\program files\microsoft visual studio 8\vc\include\utility
+FILE 111 c:\program files\microsoft visual studio 8\vc\include\iosfwd
+FILE 112 c:\program files\microsoft visual studio 8\vc\include\cwchar
+FILE 113 c:\program files\microsoft visual studio 8\vc\include\crtdbg.h
+FILE 114 c:\program files\microsoft visual studio 8\vc\include\stdexcept
+FILE 115 c:\program files\microsoft visual studio 8\vc\include\exception
+FILE 116 c:\program files\microsoft visual studio 8\vc\include\xstddef
+FILE 117 c:\program files\microsoft visual studio 8\vc\include\cstddef
+FILE 118 c:\program files\microsoft visual studio 8\vc\include\stddef.h
+FILE 119 c:\program files\microsoft visual studio 8\vc\include\eh.h
+FILE 120 c:\program files\microsoft visual studio 8\vc\include\streambuf
+FILE 121 c:\program files\microsoft visual studio 8\vc\include\xiosbase
+FILE 122 c:\program files\microsoft visual studio 8\vc\include\xlocale
+FILE 123 c:\program files\microsoft visual studio 8\vc\include\cstring
+FILE 124 c:\program files\microsoft visual studio 8\vc\include\string.h
+FILE 125 c:\program files\microsoft visual studio 8\vc\include\typeinfo
+FILE 126 c:\breakpad\trunk\src\common\windows\guid_string.cc
+FILE 127 c:\breakpad\trunk\src\common\windows\string_utils-inl.h
+FILE 128 c:\program files\microsoft visual studio 8\vc\include\stdarg.h
+FILE 129 c:\program files\microsoft visual studio 8\vc\include\string
+FILE 130 c:\program files\microsoft visual studio 8\vc\include\istream
+FILE 131 c:\program files\microsoft visual studio 8\vc\include\ostream
+FILE 132 c:\program files\microsoft visual studio 8\vc\include\ios
+FILE 133 c:\program files\microsoft visual studio 8\vc\include\xlocnum
+FILE 134 c:\program files\microsoft visual studio 8\vc\include\climits
+FILE 135 c:\program files\microsoft visual studio 8\vc\include\yvals.h
+FILE 136 c:\program files\microsoft visual studio 8\vc\include\use_ansi.h
+FILE 137 c:\program files\microsoft visual studio 8\vc\include\cstdlib
+FILE 138 c:\program files\microsoft visual studio 8\vc\include\stdlib.h
+FILE 139 c:\program files\microsoft visual studio 8\vc\include\malloc.h
+FILE 140 c:\breakpad\trunk\src\common\windows\guid_string.h
+FILE 141 c:\program files\microsoft visual studio 8\vc\platformsdk\include\guiddef.h
+FILE 142 c:\program files\microsoft visual studio 8\vc\include\share.h
+FILE 143 c:\program files\microsoft visual studio 8\vc\include\xstring
+FILE 144 c:\program files\microsoft visual studio 8\vc\include\xmemory
+FILE 145 c:\program files\microsoft visual studio 8\vc\include\new
+FILE 146 c:\program files\microsoft visual studio 8\vc\include\locale.h
+FILE 147 c:\program files\microsoft visual studio 8\vc\include\swprintf.inl
+FILE 148 c:\program files\microsoft visual studio 8\vc\include\limits.h
+FILE 149 c:\program files\microsoft visual studio 8\vc\include\wchar.h
+FILE 150 c:\program files\microsoft visual studio 8\vc\include\cstdio
+FILE 151 c:\program files\microsoft visual studio 8\vc\include\crtdefs.h
+FILE 152 c:\program files\microsoft visual studio 8\vc\include\stdio.h
+FILE 153 c:\program files\microsoft visual studio 8\vc\include\wtime.inl
+FILE 154 c:\program files\microsoft visual studio 8\vc\include\sal.h
+FILE 155 c:\program files\microsoft visual studio 8\vc\include\xdebug
+FILE 156 c:\program files\microsoft visual studio 8\vc\include\vadefs.h
+FILE 157 c:\program files\microsoft visual studio 8\vc\include\xlocinfo
+FILE 158 c:\program files\microsoft visual studio 8\vc\include\xlocinfo.h
+FILE 159 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winnetwk.h
+FILE 160 c:\program files\microsoft visual studio 8\vc\platformsdk\include\urlmon.h
+FILE 161 c:\program files\microsoft visual studio 8\vc\platformsdk\include\pshpack8.h
+FILE 162 c:\program files\microsoft visual studio 8\vc\platformsdk\include\cderr.h
+FILE 163 c:\program files\microsoft visual studio 8\vc\platformsdk\include\shellapi.h
+FILE 164 c:\program files\microsoft visual studio 8\vc\platformsdk\include\dde.h
+FILE 165 c:\program files\microsoft visual studio 8\vc\include\vector
+FILE 166 c:\program files\microsoft visual studio 8\vc\include\stdio.h
+FILE 167 c:\program files\microsoft visual studio 8\vc\include\memory
+FILE 168 c:\program files\microsoft visual studio 8\vc\include\iterator
+FILE 169 c:\program files\microsoft visual studio 8\vc\include\malloc.h
+FILE 170 c:\program files\microsoft visual studio 8\vc\include\stdarg.h
+FILE 171 c:\program files\microsoft visual studio 8\vc\platformsdk\include\windef.h
+FILE 172 c:\program files\microsoft visual studio 8\vc\platformsdk\include\wingdi.h
+FILE 173 c:\program files\microsoft visual studio 8\vc\platformsdk\include\imm.h
+FILE 174 c:\program files\microsoft visual studio 8\vc\platformsdk\include\mmsystem.h
+FILE 175 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winioctl.h
+FILE 176 c:\program files\microsoft visual studio 8\vc\platformsdk\include\guiddef.h
+FILE 177 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winsmcrd.h
+FILE 178 c:\test_app.cc
+FILE 179 c:\program files\microsoft visual studio 8\vc\platformsdk\include\oaidl.h
+FILE 180 c:\program files\microsoft visual studio 8\vc\platformsdk\include\nb30.h
+FILE 181 c:\program files\microsoft visual studio 8\vc\include\xstring
+FILE 182 c:\program files\microsoft visual studio 8\vc\include\xmemory
+FILE 183 c:\program files\microsoft visual studio 8\vc\include\new
+FILE 184 c:\program files\microsoft visual studio 8\vc\platformsdk\include\oleidl.h
+FILE 185 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winnls.h
+FILE 186 c:\breakpad\trunk\src\google_breakpad\common\minidump_format.h
+FILE 187 c:\program files\microsoft visual studio 8\vc\include\string.h
+FILE 188 c:\breakpad\trunk\src\google_breakpad\common\breakpad_types.h
+FILE 189 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winnt.h
+FILE 190 c:\program files\microsoft visual studio 8\vc\include\ctype.h
+FILE 191 c:\program files\microsoft visual studio 8\vc\include\wtime.inl
+FILE 192 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winbase.h
+FILE 193 c:\program files\microsoft visual studio 8\vc\platformsdk\include\propidl.h
+FILE 194 c:\breakpad\trunk\src\client\windows\handler\exception_handler.h
+FILE 195 c:\program files\microsoft visual studio 8\vc\include\stdlib.h
+FILE 196 c:\program files\microsoft visual studio 8\vc\include\swprintf.inl
+FILE 197 c:\program files\microsoft visual studio 8\vc\include\limits.h
+FILE 198 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winreg.h
+FILE 199 c:\program files\microsoft visual studio 8\vc\platformsdk\include\rpc.h
+FILE 200 c:\program files\microsoft visual studio 8\vc\platformsdk\include\ole2.h
+FILE 201 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winscard.h
+FILE 202 c:\program files\microsoft visual studio 8\vc\platformsdk\include\objbase.h
+FILE 203 c:\program files\microsoft visual studio 8\vc\platformsdk\include\wtypes.h
+FILE 204 c:\program files\microsoft visual studio 8\vc\platformsdk\include\rpcndr.h
+FILE 205 c:\program files\microsoft visual studio 8\vc\platformsdk\include\rpcdce.h
+FILE 206 c:\program files\microsoft visual studio 8\vc\platformsdk\include\rpcnsip.h
+FILE 207 c:\program files\microsoft visual studio 8\vc\include\share.h
+FILE 208 c:\program files\microsoft visual studio 8\vc\platformsdk\include\tvout.h
+FILE 209 c:\program files\microsoft visual studio 8\vc\include\use_ansi.h
+FILE 210 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winefs.h
+FILE 211 c:\program files\microsoft visual studio 8\vc\platformsdk\include\pshpack2.h
+FILE 212 c:\program files\microsoft visual studio 8\vc\platformsdk\include\commdlg.h
+FILE 213 c:\program files\microsoft visual studio 8\vc\platformsdk\include\unknwn.h
+FILE 214 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winsock.h
+FILE 215 c:\program files\microsoft visual studio 8\vc\platformsdk\include\stralign.h
+FILE 216 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winuser.h
+FILE 217 c:\program files\microsoft visual studio 8\vc\platformsdk\include\servprov.h
+FILE 218 c:\program files\microsoft visual studio 8\vc\include\xdebug
+FILE 219 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winsvc.h
+FILE 220 c:\program files\microsoft visual studio 8\vc\platformsdk\include\wincon.h
+FILE 221 c:\program files\microsoft visual studio 8\vc\include\xlocinfo
+FILE 222 c:\program files\microsoft visual studio 8\vc\include\xlocinfo.h
+FILE 223 c:\program files\microsoft visual studio 8\vc\include\locale.h
+FILE 224 c:\program files\microsoft visual studio 8\vc\platformsdk\include\cguid.h
+FILE 225 c:\program files\microsoft visual studio 8\vc\include\string
+FILE 226 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winver.h
+FILE 227 c:\program files\microsoft visual studio 8\vc\include\istream
+FILE 228 c:\program files\microsoft visual studio 8\vc\include\ostream
+FILE 229 c:\program files\microsoft visual studio 8\vc\include\xutility
+FILE 230 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winperf.h
+FILE 231 c:\program files\microsoft visual studio 8\vc\platformsdk\include\pshpack4.h
+FILE 232 c:\program files\microsoft visual studio 8\vc\include\utility
+FILE 233 c:\program files\microsoft visual studio 8\vc\include\ios
+FILE 234 c:\program files\microsoft visual studio 8\vc\include\xlocnum
+FILE 235 c:\program files\microsoft visual studio 8\vc\include\crtdbg.h
+FILE 236 c:\program files\microsoft visual studio 8\vc\include\iosfwd
+FILE 237 c:\program files\microsoft visual studio 8\vc\platformsdk\include\rpcdcep.h
+FILE 238 c:\program files\microsoft visual studio 8\vc\include\cwchar
+FILE 239 c:\program files\microsoft visual studio 8\vc\include\climits
+FILE 240 c:\program files\microsoft visual studio 8\vc\include\wchar.h
+FILE 241 c:\program files\microsoft visual studio 8\vc\include\cstdlib
+FILE 242 c:\program files\microsoft visual studio 8\vc\platformsdk\include\mcx.h
+FILE 243 c:\program files\microsoft visual studio 8\vc\include\streambuf
+FILE 244 c:\program files\microsoft visual studio 8\vc\include\xiosbase
+FILE 245 c:\program files\microsoft visual studio 8\vc\platformsdk\include\reason.h
+FILE 246 c:\program files\microsoft visual studio 8\vc\include\xlocale
+FILE 247 c:\program files\microsoft visual studio 8\vc\platformsdk\include\dlgs.h
+FILE 248 c:\program files\microsoft visual studio 8\vc\include\cstring
+FILE 249 c:\program files\microsoft visual studio 8\vc\include\stdexcept
+FILE 250 c:\program files\microsoft visual studio 8\vc\platformsdk\include\pshpack1.h
+FILE 251 c:\program files\microsoft visual studio 8\vc\include\exception
+FILE 252 c:\program files\microsoft visual studio 8\vc\include\xstddef
+FILE 253 c:\program files\microsoft visual studio 8\vc\platformsdk\include\specstrings.h
+FILE 254 c:\program files\microsoft visual studio 8\vc\include\cstddef
+FILE 255 c:\program files\microsoft visual studio 8\vc\platformsdk\include\basetsd.h
+FILE 256 c:\program files\microsoft visual studio 8\vc\include\stddef.h
+FILE 257 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winerror.h
+FILE 258 c:\program files\microsoft visual studio 8\vc\platformsdk\include\wincrypt.h
+FILE 259 c:\program files\microsoft visual studio 8\vc\platformsdk\include\poppack.h
+FILE 260 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winspool.h
+FILE 261 c:\program files\microsoft visual studio 8\vc\platformsdk\include\oleauto.h
+FILE 262 c:\program files\microsoft visual studio 8\vc\platformsdk\include\prsht.h
+FILE 263 c:\program files\microsoft visual studio 8\vc\platformsdk\include\objidl.h
+FILE 264 c:\program files\microsoft visual studio 8\vc\include\cstdio
+FILE 265 c:\program files\microsoft visual studio 8\vc\include\yvals.h
+FILE 266 c:\program files\microsoft visual studio 8\vc\include\eh.h
+FILE 267 c:\program files\microsoft visual studio 8\vc\platformsdk\include\lzexpand.h
+FILE 268 c:\program files\microsoft visual studio 8\vc\platformsdk\include\ddeml.h
+FILE 269 c:\program files\microsoft visual studio 8\vc\include\crtdefs.h
+FILE 270 c:\program files\microsoft visual studio 8\vc\include\sal.h
+FILE 271 c:\program files\microsoft visual studio 8\vc\include\vadefs.h
+FILE 272 c:\program files\microsoft visual studio 8\vc\platformsdk\include\dbghelp.h
+FILE 273 c:\program files\microsoft visual studio 8\vc\platformsdk\include\rpcnterr.h
+FILE 274 c:\program files\microsoft visual studio 8\vc\platformsdk\include\rpcasync.h
+FILE 275 c:\program files\microsoft visual studio 8\vc\platformsdk\include\rpcnsi.h
+FILE 276 c:\program files\microsoft visual studio 8\vc\include\typeinfo
+FILE 277 c:\program files\microsoft visual studio 8\vc\platformsdk\include\windows.h
+FILE 278 c:\program files\microsoft visual studio 8\vc\include\excpt.h
+FILE 279 c:\program files\microsoft visual studio 8\vc\platformsdk\include\msxml.h
+FILE 280 f:\sp\vctools\crt_bld\self_x86\crt\src\xdebug
+FILE 281 f:\sp\vctools\crt_bld\self_x86\crt\src\streambuf
+FILE 282 f:\sp\vctools\crt_bld\self_x86\crt\src\xiosbase
+FILE 283 f:\sp\vctools\crt_bld\self_x86\crt\src\xlocale
+FILE 284 f:\sp\vctools\crt_bld\self_x86\crt\src\cstring
+FILE 285 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 286 f:\sp\vctools\crt_bld\self_x86\crt\src\xlocinfo
+FILE 287 f:\sp\vctools\crt_bld\self_x86\crt\src\xlocinfo.h
+FILE 288 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 289 f:\sp\vctools\crt_bld\self_x86\crt\src\share.h
+FILE 290 f:\sp\vctools\crt_bld\self_x86\crt\src\use_ansi.h
+FILE 291 f:\sp\vctools\crt_bld\self_x86\crt\src\string.cpp
+FILE 292 f:\sp\vctools\crt_bld\self_x86\crt\src\typeinfo
+FILE 293 f:\sp\vctools\crt_bld\self_x86\crt\src\xutility
+FILE 294 f:\sp\vctools\crt_bld\self_x86\crt\src\utility
+FILE 295 f:\sp\vctools\crt_bld\self_x86\crt\src\iosfwd
+FILE 296 f:\sp\vctools\crt_bld\self_x86\crt\src\cwchar
+FILE 297 f:\sp\vctools\crt_bld\self_x86\crt\src\wchar.h
+FILE 298 f:\sp\vctools\crt_bld\self_x86\crt\src\stdexcept
+FILE 299 f:\sp\vctools\crt_bld\self_x86\crt\src\exception
+FILE 300 f:\sp\vctools\crt_bld\self_x86\crt\src\xstddef
+FILE 301 f:\sp\vctools\crt_bld\self_x86\crt\src\cstddef
+FILE 302 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 303 f:\sp\vctools\crt_bld\self_x86\crt\src\istream
+FILE 304 f:\sp\vctools\crt_bld\self_x86\crt\src\ostream
+FILE 305 f:\sp\vctools\crt_bld\self_x86\crt\src\ios
+FILE 306 f:\sp\vctools\crt_bld\self_x86\crt\src\xlocnum
+FILE 307 f:\sp\vctools\crt_bld\self_x86\crt\src\eh.h
+FILE 308 f:\sp\vctools\crt_bld\self_x86\crt\src\cstdlib
+FILE 309 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 310 f:\sp\vctools\crt_bld\self_x86\crt\src\climits
+FILE 311 f:\sp\vctools\crt_bld\self_x86\crt\src\yvals.h
+FILE 312 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 313 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 314 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl
+FILE 315 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 316 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 317 f:\sp\vctools\crt_bld\self_x86\crt\src\cstdio
+FILE 318 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 319 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 320 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 321 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 322 f:\sp\public\sdk\inc\ddbanned.h
+FILE 323 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 324 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 325 f:\sp\vctools\crt_bld\self_x86\crt\src\xstring
+FILE 326 f:\sp\vctools\crt_bld\self_x86\crt\src\xmemory
+FILE 327 f:\sp\vctools\crt_bld\self_x86\crt\src\new
+FILE 328 f:\sp\public\sdk\inc\reason.h
+FILE 329 f:\sp\public\sdk\inc\wincon.h
+FILE 330 f:\sp\public\sdk\inc\pshpack2.h
+FILE 331 f:\sp\public\sdk\inc\mcx.h
+FILE 332 f:\sp\public\sdk\inc\winuser.h
+FILE 333 f:\sp\public\sdk\inc\winnls.h
+FILE 334 f:\sp\public\sdk\inc\guiddef.h
+FILE 335 f:\sp\public\sdk\inc\specstrings.h
+FILE 336 f:\sp\public\sdk\inc\basetsd.h
+FILE 337 f:\sp\public\sdk\inc\stralign.h
+FILE 338 f:\sp\public\sdk\inc\tvout.h
+FILE 339 f:\sp\public\sdk\inc\winsvc.h
+FILE 340 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\string.h
+FILE 341 f:\sp\public\sdk\inc\wingdi.h
+FILE 342 f:\sp\public\sdk\inc\pshpack4.h
+FILE 343 f:\sp\public\sdk\inc\poppack.h
+FILE 344 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sect_attribs.h
+FILE 345 f:\sp\public\sdk\inc\winnetwk.h
+FILE 346 f:\sp\public\sdk\inc\imm.h
+FILE 347 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h
+FILE 348 f:\sp\public\sdk\inc\windef.h
+FILE 349 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdbg.h
+FILE 350 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\tran\i386\cpu_disp.c
+FILE 351 f:\sp\public\sdk\inc\pshpack1.h
+FILE 352 f:\sp\public\sdk\inc\winver.h
+FILE 353 f:\sp\public\sdk\inc\windows.h
+FILE 354 f:\sp\public\sdk\inc\winnt.h
+FILE 355 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h
+FILE 356 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h
+FILE 357 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h
+FILE 358 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h
+FILE 359 f:\sp\public\sdk\inc\ddbanned.h
+FILE 360 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h
+FILE 361 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h
+FILE 362 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\errno.h
+FILE 363 f:\sp\public\sdk\inc\winreg.h
+FILE 364 f:\sp\public\sdk\inc\winbase.h
+FILE 365 f:\sp\public\sdk\inc\winerror.h
+FILE 366 f:\sp\public\sdk\inc\pshpack8.h
+FILE 367 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\internal.h
+FILE 368 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\limits.h
+FILE 369 f:\sp\public\sdk\inc\reason.h
+FILE 370 f:\sp\public\sdk\inc\wincon.h
+FILE 371 f:\sp\public\sdk\inc\pshpack2.h
+FILE 372 f:\sp\public\sdk\inc\mcx.h
+FILE 373 f:\sp\public\sdk\inc\winuser.h
+FILE 374 f:\sp\public\sdk\inc\winnls.h
+FILE 375 f:\sp\public\sdk\inc\guiddef.h
+FILE 376 f:\sp\public\sdk\inc\specstrings.h
+FILE 377 f:\sp\public\sdk\inc\basetsd.h
+FILE 378 f:\sp\public\sdk\inc\stralign.h
+FILE 379 f:\sp\public\sdk\inc\tvout.h
+FILE 380 f:\sp\public\sdk\inc\winsvc.h
+FILE 381 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\string.h
+FILE 382 f:\sp\public\sdk\inc\wingdi.h
+FILE 383 f:\sp\public\sdk\inc\pshpack4.h
+FILE 384 f:\sp\public\sdk\inc\poppack.h
+FILE 385 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sect_attribs.h
+FILE 386 f:\sp\public\sdk\inc\winnetwk.h
+FILE 387 f:\sp\public\sdk\inc\imm.h
+FILE 388 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h
+FILE 389 f:\sp\public\sdk\inc\windef.h
+FILE 390 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdbg.h
+FILE 391 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\tran\i386\mathfcns.c
+FILE 392 f:\sp\public\sdk\inc\pshpack1.h
+FILE 393 f:\sp\public\sdk\inc\winver.h
+FILE 394 f:\sp\public\sdk\inc\windows.h
+FILE 395 f:\sp\public\sdk\inc\winnt.h
+FILE 396 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h
+FILE 397 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h
+FILE 398 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h
+FILE 399 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h
+FILE 400 f:\sp\public\sdk\inc\ddbanned.h
+FILE 401 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h
+FILE 402 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h
+FILE 403 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\errno.h
+FILE 404 f:\sp\public\sdk\inc\winreg.h
+FILE 405 f:\sp\public\sdk\inc\winbase.h
+FILE 406 f:\sp\public\sdk\inc\winerror.h
+FILE 407 f:\sp\public\sdk\inc\pshpack8.h
+FILE 408 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\internal.h
+FILE 409 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\limits.h
+FILE 410 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 411 f:\sp\public\sdk\inc\winreg.h
+FILE 412 f:\sp\public\sdk\inc\winbase.h
+FILE 413 f:\sp\public\sdk\inc\winerror.h
+FILE 414 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 415 f:\sp\public\sdk\inc\windef.h
+FILE 416 f:\sp\vctools\crt_bld\self_x86\crt\src\ctime.h
+FILE 417 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl
+FILE 418 f:\sp\vctools\crt_bld\self_x86\crt\src\time.h
+FILE 419 f:\sp\public\sdk\inc\pshpack8.h
+FILE 420 f:\sp\public\sdk\inc\reason.h
+FILE 421 f:\sp\public\sdk\inc\wincon.h
+FILE 422 f:\sp\vctools\crt_bld\self_x86\crt\src\time.inl
+FILE 423 f:\sp\public\sdk\inc\pshpack2.h
+FILE 424 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 425 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 426 f:\sp\public\sdk\inc\mcx.h
+FILE 427 f:\sp\public\sdk\inc\winuser.h
+FILE 428 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 429 f:\sp\public\sdk\inc\winnls.h
+FILE 430 f:\sp\public\sdk\inc\guiddef.h
+FILE 431 f:\sp\public\sdk\inc\stralign.h
+FILE 432 f:\sp\public\sdk\inc\winnt.h
+FILE 433 f:\sp\public\sdk\inc\specstrings.h
+FILE 434 f:\sp\public\sdk\inc\basetsd.h
+FILE 435 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 436 f:\sp\public\sdk\inc\tvout.h
+FILE 437 f:\sp\public\sdk\inc\winsvc.h
+FILE 438 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 439 f:\sp\public\sdk\inc\wingdi.h
+FILE 440 f:\sp\vctools\crt_bld\self_x86\crt\src\tzset.c
+FILE 441 f:\sp\public\sdk\inc\pshpack4.h
+FILE 442 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 443 f:\sp\public\sdk\inc\poppack.h
+FILE 444 f:\sp\public\sdk\inc\winnetwk.h
+FILE 445 f:\sp\public\sdk\inc\imm.h
+FILE 446 f:\sp\public\sdk\inc\ddbanned.h
+FILE 447 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 448 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 449 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 450 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 451 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 452 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 453 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 454 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 455 f:\sp\public\sdk\inc\windows.h
+FILE 456 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 457 f:\sp\public\sdk\inc\pshpack1.h
+FILE 458 f:\sp\public\sdk\inc\winver.h
+FILE 459 f:\sp\vctools\crt_bld\self_x86\crt\src\time.inl
+FILE 460 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 461 f:\sp\public\sdk\inc\winnt.h
+FILE 462 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 463 f:\sp\public\sdk\inc\winreg.h
+FILE 464 f:\sp\public\sdk\inc\winbase.h
+FILE 465 f:\sp\public\sdk\inc\winerror.h
+FILE 466 f:\sp\public\sdk\inc\pshpack8.h
+FILE 467 f:\sp\public\sdk\inc\reason.h
+FILE 468 f:\sp\public\sdk\inc\wincon.h
+FILE 469 f:\sp\public\sdk\inc\pshpack2.h
+FILE 470 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 471 f:\sp\public\sdk\inc\mcx.h
+FILE 472 f:\sp\public\sdk\inc\winuser.h
+FILE 473 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 474 f:\sp\public\sdk\inc\winnls.h
+FILE 475 f:\sp\public\sdk\inc\guiddef.h
+FILE 476 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 477 f:\sp\public\sdk\inc\stralign.h
+FILE 478 f:\sp\public\sdk\inc\specstrings.h
+FILE 479 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 480 f:\sp\public\sdk\inc\basetsd.h
+FILE 481 f:\sp\public\sdk\inc\windows.h
+FILE 482 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 483 f:\sp\public\sdk\inc\tvout.h
+FILE 484 f:\sp\public\sdk\inc\winsvc.h
+FILE 485 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 486 f:\sp\public\sdk\inc\wingdi.h
+FILE 487 f:\sp\vctools\crt_bld\self_x86\crt\src\timeset.c
+FILE 488 f:\sp\public\sdk\inc\pshpack4.h
+FILE 489 f:\sp\public\sdk\inc\poppack.h
+FILE 490 f:\sp\public\sdk\inc\winnetwk.h
+FILE 491 f:\sp\public\sdk\inc\imm.h
+FILE 492 f:\sp\public\sdk\inc\ddbanned.h
+FILE 493 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 494 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 495 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 496 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 497 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 498 f:\sp\public\sdk\inc\windef.h
+FILE 499 f:\sp\public\sdk\inc\pshpack1.h
+FILE 500 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl
+FILE 501 f:\sp\vctools\crt_bld\self_x86\crt\src\time.h
+FILE 502 f:\sp\public\sdk\inc\winver.h
+FILE 503 f:\sp\public\sdk\inc\wincon.h
+FILE 504 f:\sp\vctools\crt_bld\self_x86\crt\src\time.h
+FILE 505 f:\sp\public\sdk\inc\imm.h
+FILE 506 f:\sp\public\sdk\inc\winbase.h
+FILE 507 f:\sp\public\sdk\inc\wingdi.h
+FILE 508 f:\sp\public\sdk\inc\winver.h
+FILE 509 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 510 f:\sp\public\sdk\inc\windows.h
+FILE 511 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 512 f:\sp\public\sdk\inc\pshpack2.h
+FILE 513 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 514 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 515 f:\sp\public\sdk\inc\reason.h
+FILE 516 f:\sp\vctools\crt_bld\self_x86\crt\src\strftime.c
+FILE 517 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 518 f:\sp\public\sdk\inc\specstrings.h
+FILE 519 f:\sp\public\sdk\inc\basetsd.h
+FILE 520 f:\sp\public\sdk\inc\pshpack4.h
+FILE 521 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl
+FILE 522 f:\sp\public\sdk\inc\winnetwk.h
+FILE 523 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 524 f:\sp\public\sdk\inc\stralign.h
+FILE 525 f:\sp\vctools\crt_bld\self_x86\crt\src\time.inl
+FILE 526 f:\sp\public\sdk\inc\poppack.h
+FILE 527 f:\sp\public\sdk\inc\winsvc.h
+FILE 528 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 529 f:\sp\public\sdk\inc\windef.h
+FILE 530 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 531 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 532 f:\sp\public\sdk\inc\winuser.h
+FILE 533 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 534 f:\sp\public\sdk\inc\mcx.h
+FILE 535 f:\sp\public\sdk\inc\pshpack8.h
+FILE 536 f:\sp\public\sdk\inc\guiddef.h
+FILE 537 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 538 f:\sp\public\sdk\inc\winnt.h
+FILE 539 f:\sp\public\sdk\inc\winnls.h
+FILE 540 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 541 f:\sp\public\sdk\inc\pshpack1.h
+FILE 542 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 543 f:\sp\public\sdk\inc\winerror.h
+FILE 544 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 545 f:\sp\public\sdk\inc\winreg.h
+FILE 546 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 547 f:\sp\public\sdk\inc\ddbanned.h
+FILE 548 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 549 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 550 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 551 f:\sp\public\sdk\inc\tvout.h
+FILE 552 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 553 f:\sp\public\sdk\inc\poppack.h
+FILE 554 f:\sp\public\sdk\inc\winnetwk.h
+FILE 555 f:\sp\public\sdk\inc\imm.h
+FILE 556 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 557 f:\sp\public\sdk\inc\windef.h
+FILE 558 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 559 f:\sp\public\sdk\inc\pshpack1.h
+FILE 560 f:\sp\public\sdk\inc\winver.h
+FILE 561 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 562 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 563 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 564 f:\sp\public\sdk\inc\winnt.h
+FILE 565 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 566 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 567 f:\sp\public\sdk\inc\winreg.h
+FILE 568 f:\sp\vctools\crt_bld\self_x86\crt\src\days.c
+FILE 569 f:\sp\public\sdk\inc\winbase.h
+FILE 570 f:\sp\public\sdk\inc\winerror.h
+FILE 571 f:\sp\public\sdk\inc\pshpack8.h
+FILE 572 f:\sp\public\sdk\inc\reason.h
+FILE 573 f:\sp\public\sdk\inc\wincon.h
+FILE 574 f:\sp\public\sdk\inc\ddbanned.h
+FILE 575 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 576 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 577 f:\sp\public\sdk\inc\pshpack2.h
+FILE 578 f:\sp\public\sdk\inc\mcx.h
+FILE 579 f:\sp\public\sdk\inc\winuser.h
+FILE 580 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 581 f:\sp\public\sdk\inc\winnls.h
+FILE 582 f:\sp\public\sdk\inc\guiddef.h
+FILE 583 f:\sp\public\sdk\inc\windows.h
+FILE 584 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 585 f:\sp\public\sdk\inc\specstrings.h
+FILE 586 f:\sp\public\sdk\inc\basetsd.h
+FILE 587 f:\sp\public\sdk\inc\stralign.h
+FILE 588 f:\sp\public\sdk\inc\tvout.h
+FILE 589 f:\sp\public\sdk\inc\winsvc.h
+FILE 590 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 591 f:\sp\public\sdk\inc\wingdi.h
+FILE 592 f:\sp\public\sdk\inc\pshpack4.h
+FILE 593 f:\sp\public\sdk\inc\wincon.h
+FILE 594 f:\sp\public\sdk\inc\imm.h
+FILE 595 f:\sp\public\sdk\inc\winbase.h
+FILE 596 f:\sp\public\sdk\inc\wingdi.h
+FILE 597 f:\sp\public\sdk\inc\winver.h
+FILE 598 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 599 f:\sp\public\sdk\inc\windows.h
+FILE 600 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 601 f:\sp\public\sdk\inc\pshpack2.h
+FILE 602 f:\sp\public\sdk\inc\reason.h
+FILE 603 f:\sp\vctools\crt_bld\self_x86\crt\src\strnicol.c
+FILE 604 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h
+FILE 605 f:\sp\public\sdk\inc\specstrings.h
+FILE 606 f:\sp\public\sdk\inc\basetsd.h
+FILE 607 f:\sp\public\sdk\inc\pshpack4.h
+FILE 608 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 609 f:\sp\public\sdk\inc\winnetwk.h
+FILE 610 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 611 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 612 f:\sp\public\sdk\inc\stralign.h
+FILE 613 f:\sp\public\sdk\inc\poppack.h
+FILE 614 f:\sp\public\sdk\inc\winsvc.h
+FILE 615 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 616 f:\sp\public\sdk\inc\windef.h
+FILE 617 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 618 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 619 f:\sp\public\sdk\inc\winuser.h
+FILE 620 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 621 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 622 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 623 f:\sp\public\sdk\inc\mcx.h
+FILE 624 f:\sp\public\sdk\inc\pshpack8.h
+FILE 625 f:\sp\public\sdk\inc\guiddef.h
+FILE 626 f:\sp\public\sdk\inc\winnt.h
+FILE 627 f:\sp\public\sdk\inc\winnls.h
+FILE 628 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 629 f:\sp\public\sdk\inc\pshpack1.h
+FILE 630 f:\sp\public\sdk\inc\winerror.h
+FILE 631 f:\sp\public\sdk\inc\winreg.h
+FILE 632 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 633 f:\sp\public\sdk\inc\ddbanned.h
+FILE 634 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 635 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 636 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 637 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 638 f:\sp\public\sdk\inc\tvout.h
+FILE 639 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 640 f:\sp\public\sdk\inc\mcx.h
+FILE 641 f:\sp\public\sdk\inc\pshpack8.h
+FILE 642 f:\sp\public\sdk\inc\winnt.h
+FILE 643 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 644 f:\sp\public\sdk\inc\specstrings.h
+FILE 645 f:\sp\public\sdk\inc\basetsd.h
+FILE 646 f:\sp\public\sdk\inc\winnls.h
+FILE 647 f:\sp\public\sdk\inc\pshpack1.h
+FILE 648 f:\sp\public\sdk\inc\winerror.h
+FILE 649 f:\sp\public\sdk\inc\winreg.h
+FILE 650 f:\sp\vctools\crt_bld\self_x86\crt\src\strnicmp.c
+FILE 651 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 652 f:\sp\public\sdk\inc\tvout.h
+FILE 653 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 654 f:\sp\public\sdk\inc\wincon.h
+FILE 655 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 656 f:\sp\public\sdk\inc\imm.h
+FILE 657 f:\sp\public\sdk\inc\guiddef.h
+FILE 658 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 659 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 660 f:\sp\public\sdk\inc\winbase.h
+FILE 661 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 662 f:\sp\public\sdk\inc\wingdi.h
+FILE 663 f:\sp\public\sdk\inc\windows.h
+FILE 664 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 665 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 666 f:\sp\public\sdk\inc\winver.h
+FILE 667 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 668 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 669 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 670 f:\sp\public\sdk\inc\pshpack2.h
+FILE 671 f:\sp\public\sdk\inc\reason.h
+FILE 672 f:\sp\public\sdk\inc\pshpack4.h
+FILE 673 f:\sp\public\sdk\inc\winnetwk.h
+FILE 674 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 675 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 676 f:\sp\public\sdk\inc\stralign.h
+FILE 677 f:\sp\public\sdk\inc\windef.h
+FILE 678 f:\sp\public\sdk\inc\poppack.h
+FILE 679 f:\sp\public\sdk\inc\winsvc.h
+FILE 680 f:\sp\public\sdk\inc\ddbanned.h
+FILE 681 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 682 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 683 f:\sp\public\sdk\inc\winuser.h
+FILE 684 f:\sp\public\sdk\inc\mcx.h
+FILE 685 f:\sp\public\sdk\inc\pshpack8.h
+FILE 686 f:\sp\public\sdk\inc\winnt.h
+FILE 687 f:\sp\public\sdk\inc\specstrings.h
+FILE 688 f:\sp\public\sdk\inc\basetsd.h
+FILE 689 f:\sp\public\sdk\inc\winnls.h
+FILE 690 f:\sp\public\sdk\inc\pshpack1.h
+FILE 691 f:\sp\public\sdk\inc\winerror.h
+FILE 692 f:\sp\public\sdk\inc\winreg.h
+FILE 693 f:\sp\vctools\crt_bld\self_x86\crt\src\stricmp.c
+FILE 694 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 695 f:\sp\public\sdk\inc\tvout.h
+FILE 696 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 697 f:\sp\public\sdk\inc\wincon.h
+FILE 698 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 699 f:\sp\public\sdk\inc\imm.h
+FILE 700 f:\sp\public\sdk\inc\guiddef.h
+FILE 701 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 702 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 703 f:\sp\public\sdk\inc\winbase.h
+FILE 704 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 705 f:\sp\public\sdk\inc\wingdi.h
+FILE 706 f:\sp\public\sdk\inc\windows.h
+FILE 707 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 708 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 709 f:\sp\public\sdk\inc\winver.h
+FILE 710 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 711 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 712 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 713 f:\sp\public\sdk\inc\pshpack2.h
+FILE 714 f:\sp\public\sdk\inc\reason.h
+FILE 715 f:\sp\public\sdk\inc\pshpack4.h
+FILE 716 f:\sp\public\sdk\inc\winnetwk.h
+FILE 717 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 718 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 719 f:\sp\public\sdk\inc\stralign.h
+FILE 720 f:\sp\public\sdk\inc\windef.h
+FILE 721 f:\sp\public\sdk\inc\poppack.h
+FILE 722 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 723 f:\sp\public\sdk\inc\winsvc.h
+FILE 724 f:\sp\public\sdk\inc\ddbanned.h
+FILE 725 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 726 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 727 f:\sp\public\sdk\inc\winuser.h
+FILE 728 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 729 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 730 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 731 f:\sp\vctools\crt_bld\self_x86\crt\src\wcslen.c
+FILE 732 f:\sp\public\sdk\inc\ddbanned.h
+FILE 733 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 734 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 735 f:\sp\public\sdk\inc\winnt.h
+FILE 736 f:\sp\public\sdk\inc\pshpack4.h
+FILE 737 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 738 f:\sp\public\sdk\inc\poppack.h
+FILE 739 f:\sp\vctools\crt_bld\self_x86\crt\src\tcsncpy_s.inl
+FILE 740 f:\sp\public\sdk\inc\winnetwk.h
+FILE 741 f:\sp\public\sdk\inc\imm.h
+FILE 742 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 743 f:\sp\public\sdk\inc\pshpack1.h
+FILE 744 f:\sp\public\sdk\inc\winver.h
+FILE 745 f:\sp\vctools\crt_bld\self_x86\crt\src\internal_securecrt.h
+FILE 746 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 747 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 748 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 749 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 750 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 751 f:\sp\public\sdk\inc\guiddef.h
+FILE 752 f:\sp\public\sdk\inc\windows.h
+FILE 753 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 754 f:\sp\public\sdk\inc\specstrings.h
+FILE 755 f:\sp\public\sdk\inc\basetsd.h
+FILE 756 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 757 f:\sp\public\sdk\inc\winreg.h
+FILE 758 f:\sp\vctools\crt_bld\self_x86\crt\src\strncpy_s.c
+FILE 759 f:\sp\public\sdk\inc\winbase.h
+FILE 760 f:\sp\public\sdk\inc\winerror.h
+FILE 761 f:\sp\public\sdk\inc\pshpack8.h
+FILE 762 f:\sp\public\sdk\inc\reason.h
+FILE 763 f:\sp\public\sdk\inc\wincon.h
+FILE 764 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 765 f:\sp\public\sdk\inc\ddbanned.h
+FILE 766 f:\sp\public\sdk\inc\windef.h
+FILE 767 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 768 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 769 f:\sp\public\sdk\inc\pshpack2.h
+FILE 770 f:\sp\public\sdk\inc\mcx.h
+FILE 771 f:\sp\public\sdk\inc\winuser.h
+FILE 772 f:\sp\public\sdk\inc\winnls.h
+FILE 773 f:\sp\public\sdk\inc\stralign.h
+FILE 774 f:\sp\public\sdk\inc\tvout.h
+FILE 775 f:\sp\public\sdk\inc\winsvc.h
+FILE 776 f:\sp\public\sdk\inc\wingdi.h
+FILE 777 f:\sp\public\sdk\inc\winnt.h
+FILE 778 f:\sp\public\sdk\inc\pshpack4.h
+FILE 779 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 780 f:\sp\public\sdk\inc\poppack.h
+FILE 781 f:\sp\vctools\crt_bld\self_x86\crt\src\tcscpy_s.inl
+FILE 782 f:\sp\public\sdk\inc\winnetwk.h
+FILE 783 f:\sp\public\sdk\inc\imm.h
+FILE 784 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 785 f:\sp\public\sdk\inc\pshpack1.h
+FILE 786 f:\sp\public\sdk\inc\winver.h
+FILE 787 f:\sp\vctools\crt_bld\self_x86\crt\src\internal_securecrt.h
+FILE 788 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 789 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 790 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 791 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 792 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 793 f:\sp\public\sdk\inc\guiddef.h
+FILE 794 f:\sp\public\sdk\inc\windows.h
+FILE 795 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 796 f:\sp\public\sdk\inc\specstrings.h
+FILE 797 f:\sp\public\sdk\inc\basetsd.h
+FILE 798 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 799 f:\sp\public\sdk\inc\winreg.h
+FILE 800 f:\sp\vctools\crt_bld\self_x86\crt\src\strcpy_s.c
+FILE 801 f:\sp\public\sdk\inc\winbase.h
+FILE 802 f:\sp\public\sdk\inc\winerror.h
+FILE 803 f:\sp\public\sdk\inc\pshpack8.h
+FILE 804 f:\sp\public\sdk\inc\reason.h
+FILE 805 f:\sp\public\sdk\inc\wincon.h
+FILE 806 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 807 f:\sp\public\sdk\inc\ddbanned.h
+FILE 808 f:\sp\public\sdk\inc\windef.h
+FILE 809 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 810 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 811 f:\sp\public\sdk\inc\pshpack2.h
+FILE 812 f:\sp\public\sdk\inc\mcx.h
+FILE 813 f:\sp\public\sdk\inc\winuser.h
+FILE 814 f:\sp\public\sdk\inc\winnls.h
+FILE 815 f:\sp\public\sdk\inc\stralign.h
+FILE 816 f:\sp\public\sdk\inc\tvout.h
+FILE 817 f:\sp\public\sdk\inc\winsvc.h
+FILE 818 f:\sp\public\sdk\inc\wingdi.h
+FILE 819 f:\sp\public\sdk\inc\winnt.h
+FILE 820 f:\sp\public\sdk\inc\pshpack4.h
+FILE 821 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 822 f:\sp\public\sdk\inc\poppack.h
+FILE 823 f:\sp\vctools\crt_bld\self_x86\crt\src\tcscat_s.inl
+FILE 824 f:\sp\public\sdk\inc\winnetwk.h
+FILE 825 f:\sp\public\sdk\inc\imm.h
+FILE 826 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 827 f:\sp\public\sdk\inc\pshpack1.h
+FILE 828 f:\sp\public\sdk\inc\winver.h
+FILE 829 f:\sp\vctools\crt_bld\self_x86\crt\src\internal_securecrt.h
+FILE 830 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 831 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 832 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 833 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 834 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 835 f:\sp\public\sdk\inc\guiddef.h
+FILE 836 f:\sp\public\sdk\inc\windows.h
+FILE 837 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 838 f:\sp\public\sdk\inc\specstrings.h
+FILE 839 f:\sp\public\sdk\inc\basetsd.h
+FILE 840 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 841 f:\sp\public\sdk\inc\winreg.h
+FILE 842 f:\sp\vctools\crt_bld\self_x86\crt\src\strcat_s.c
+FILE 843 f:\sp\public\sdk\inc\winbase.h
+FILE 844 f:\sp\public\sdk\inc\winerror.h
+FILE 845 f:\sp\public\sdk\inc\pshpack8.h
+FILE 846 f:\sp\public\sdk\inc\reason.h
+FILE 847 f:\sp\public\sdk\inc\wincon.h
+FILE 848 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 849 f:\sp\public\sdk\inc\ddbanned.h
+FILE 850 f:\sp\public\sdk\inc\windef.h
+FILE 851 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 852 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 853 f:\sp\public\sdk\inc\pshpack2.h
+FILE 854 f:\sp\public\sdk\inc\mcx.h
+FILE 855 f:\sp\public\sdk\inc\winuser.h
+FILE 856 f:\sp\public\sdk\inc\winnls.h
+FILE 857 f:\sp\public\sdk\inc\stralign.h
+FILE 858 f:\sp\public\sdk\inc\tvout.h
+FILE 859 f:\sp\public\sdk\inc\winsvc.h
+FILE 860 f:\sp\public\sdk\inc\wingdi.h
+FILE 861 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 862 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 863 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 864 f:\sp\vctools\crt_bld\self_x86\crt\src\strlen_s.c
+FILE 865 f:\sp\public\sdk\inc\ddbanned.h
+FILE 866 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 867 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 868 F:\SP\vctools\crt_bld\SELF_X86\crt\src\intel\strpbrk.asm
+FILE 869 F:\SP\vctools\crt_bld\SELF_X86\crt\src\Intel\STRSPN.ASM
+FILE 870 F:\SP\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc
+FILE 871 F:\SP\vctools\crt_bld\SELF_X86\crt\src\intel\_strnicm.asm
+FILE 872 F:\SP\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc
+FILE 873 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 874 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 875 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 876 f:\sp\vctools\crt_bld\self_x86\crt\src\intel\strncmp.c
+FILE 877 f:\sp\public\sdk\inc\ddbanned.h
+FILE 878 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 879 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 880 F:\SP\vctools\crt_bld\SELF_X86\crt\src\intel\strlen.asm
+FILE 881 F:\SP\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc
+FILE 882 f:\sp\public\sdk\inc\pshpack2.h
+FILE 883 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 884 f:\sp\public\sdk\inc\mcx.h
+FILE 885 f:\sp\public\sdk\inc\winuser.h
+FILE 886 f:\sp\public\sdk\inc\winnls.h
+FILE 887 f:\sp\public\sdk\inc\stralign.h
+FILE 888 f:\sp\public\sdk\inc\tvout.h
+FILE 889 f:\sp\public\sdk\inc\winsvc.h
+FILE 890 f:\sp\public\sdk\inc\wingdi.h
+FILE 891 f:\sp\public\sdk\inc\winnt.h
+FILE 892 f:\sp\public\sdk\inc\pshpack4.h
+FILE 893 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 894 f:\sp\public\sdk\inc\poppack.h
+FILE 895 f:\sp\public\sdk\inc\winnetwk.h
+FILE 896 f:\sp\public\sdk\inc\imm.h
+FILE 897 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 898 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 899 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 900 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 901 f:\sp\vctools\crt_bld\self_x86\crt\src\strdup.c
+FILE 902 f:\sp\public\sdk\inc\pshpack1.h
+FILE 903 f:\sp\public\sdk\inc\winver.h
+FILE 904 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 905 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 906 f:\sp\public\sdk\inc\guiddef.h
+FILE 907 f:\sp\public\sdk\inc\windows.h
+FILE 908 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 909 f:\sp\public\sdk\inc\specstrings.h
+FILE 910 f:\sp\public\sdk\inc\basetsd.h
+FILE 911 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 912 f:\sp\public\sdk\inc\winreg.h
+FILE 913 f:\sp\public\sdk\inc\ddbanned.h
+FILE 914 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 915 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 916 f:\sp\public\sdk\inc\winbase.h
+FILE 917 f:\sp\public\sdk\inc\winerror.h
+FILE 918 f:\sp\public\sdk\inc\pshpack8.h
+FILE 919 f:\sp\public\sdk\inc\reason.h
+FILE 920 f:\sp\public\sdk\inc\wincon.h
+FILE 921 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 922 f:\sp\public\sdk\inc\windef.h
+FILE 923 F:\SP\vctools\crt_bld\SELF_X86\crt\src\intel\strcspn.asm
+FILE 924 F:\SP\vctools\crt_bld\SELF_X86\crt\src\Intel\STRSPN.ASM
+FILE 925 F:\SP\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc
+FILE 926 F:\SP\vctools\crt_bld\SELF_X86\crt\src\intel\strcmp.asm
+FILE 927 F:\SP\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc
+FILE 928 F:\SP\vctools\crt_bld\SELF_X86\crt\src\intel\strchr.asm
+FILE 929 F:\SP\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc
+FILE 930 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\string\i386\p4_memset.c
+FILE 931 f:\sp\public\sdk\inc\ddbanned.h
+FILE 932 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h
+FILE 933 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h
+FILE 934 F:\SP\vctools\crt_bld\SELF_X86\crt\src\intel\memset.asm
+FILE 935 F:\SP\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc
+FILE 936 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 937 f:\sp\public\sdk\inc\poppack.h
+FILE 938 f:\sp\public\sdk\inc\winnetwk.h
+FILE 939 f:\sp\public\sdk\inc\imm.h
+FILE 940 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 941 f:\sp\public\sdk\inc\pshpack1.h
+FILE 942 f:\sp\public\sdk\inc\winver.h
+FILE 943 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 944 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 945 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 946 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 947 f:\sp\public\sdk\inc\guiddef.h
+FILE 948 f:\sp\public\sdk\inc\windows.h
+FILE 949 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 950 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 951 f:\sp\public\sdk\inc\specstrings.h
+FILE 952 f:\sp\public\sdk\inc\basetsd.h
+FILE 953 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 954 f:\sp\public\sdk\inc\winreg.h
+FILE 955 f:\sp\vctools\crt_bld\self_x86\crt\src\memmove_s.c
+FILE 956 f:\sp\public\sdk\inc\winbase.h
+FILE 957 f:\sp\public\sdk\inc\winerror.h
+FILE 958 f:\sp\public\sdk\inc\pshpack8.h
+FILE 959 f:\sp\public\sdk\inc\reason.h
+FILE 960 f:\sp\public\sdk\inc\wincon.h
+FILE 961 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 962 f:\sp\public\sdk\inc\windef.h
+FILE 963 f:\sp\public\sdk\inc\ddbanned.h
+FILE 964 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 965 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 966 f:\sp\public\sdk\inc\pshpack2.h
+FILE 967 f:\sp\public\sdk\inc\mcx.h
+FILE 968 f:\sp\public\sdk\inc\winuser.h
+FILE 969 f:\sp\public\sdk\inc\winnls.h
+FILE 970 f:\sp\public\sdk\inc\stralign.h
+FILE 971 f:\sp\public\sdk\inc\tvout.h
+FILE 972 f:\sp\public\sdk\inc\winsvc.h
+FILE 973 f:\sp\public\sdk\inc\wingdi.h
+FILE 974 f:\sp\public\sdk\inc\winnt.h
+FILE 975 f:\sp\public\sdk\inc\pshpack4.h
+FILE 976 F:\SP\vctools\crt_bld\SELF_X86\crt\src\intel\memmove.asm
+FILE 977 F:\SP\vctools\crt_bld\SELF_X86\crt\src\Intel\MEMCPY.ASM
+FILE 978 F:\SP\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc
+FILE 979 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\string\i386\memcmp.c
+FILE 980 f:\sp\public\sdk\inc\ddbanned.h
+FILE 981 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h
+FILE 982 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h
+FILE 983 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 984 f:\sp\public\sdk\inc\poppack.h
+FILE 985 f:\sp\public\sdk\inc\winnetwk.h
+FILE 986 f:\sp\public\sdk\inc\imm.h
+FILE 987 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 988 f:\sp\public\sdk\inc\pshpack1.h
+FILE 989 f:\sp\public\sdk\inc\winver.h
+FILE 990 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 991 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 992 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 993 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 994 f:\sp\public\sdk\inc\guiddef.h
+FILE 995 f:\sp\public\sdk\inc\windows.h
+FILE 996 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 997 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 998 f:\sp\public\sdk\inc\specstrings.h
+FILE 999 f:\sp\public\sdk\inc\basetsd.h
+FILE 1000 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 1001 f:\sp\public\sdk\inc\winreg.h
+FILE 1002 f:\sp\vctools\crt_bld\self_x86\crt\src\memcpy_s.c
+FILE 1003 f:\sp\public\sdk\inc\winbase.h
+FILE 1004 f:\sp\public\sdk\inc\winerror.h
+FILE 1005 f:\sp\public\sdk\inc\pshpack8.h
+FILE 1006 f:\sp\public\sdk\inc\reason.h
+FILE 1007 f:\sp\public\sdk\inc\wincon.h
+FILE 1008 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 1009 f:\sp\public\sdk\inc\windef.h
+FILE 1010 f:\sp\public\sdk\inc\ddbanned.h
+FILE 1011 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 1012 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 1013 f:\sp\public\sdk\inc\pshpack2.h
+FILE 1014 f:\sp\public\sdk\inc\mcx.h
+FILE 1015 f:\sp\public\sdk\inc\winuser.h
+FILE 1016 f:\sp\public\sdk\inc\winnls.h
+FILE 1017 f:\sp\public\sdk\inc\stralign.h
+FILE 1018 f:\sp\public\sdk\inc\tvout.h
+FILE 1019 f:\sp\public\sdk\inc\winsvc.h
+FILE 1020 f:\sp\public\sdk\inc\wingdi.h
+FILE 1021 f:\sp\public\sdk\inc\winnt.h
+FILE 1022 f:\sp\public\sdk\inc\pshpack4.h
+FILE 1023 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\string\i386\p4_memcpy.c
+FILE 1024 f:\sp\public\sdk\inc\ddbanned.h
+FILE 1025 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h
+FILE 1026 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h
+FILE 1027 F:\SP\vctools\crt_bld\SELF_X86\crt\src\intel\memcpy.asm
+FILE 1028 F:\SP\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc
+FILE 1029 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 1030 f:\sp\public\sdk\inc\wincon.h
+FILE 1031 f:\sp\public\sdk\inc\imm.h
+FILE 1032 f:\sp\public\sdk\inc\winbase.h
+FILE 1033 f:\sp\public\sdk\inc\wingdi.h
+FILE 1034 f:\sp\public\sdk\inc\winver.h
+FILE 1035 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 1036 f:\sp\public\sdk\inc\windows.h
+FILE 1037 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 1038 f:\sp\public\sdk\inc\pshpack2.h
+FILE 1039 f:\sp\public\sdk\inc\reason.h
+FILE 1040 f:\sp\vctools\crt_bld\self_x86\crt\src\woutputs.c
+FILE 1041 f:\sp\vctools\crt_bld\self_x86\crt\src\fltintrn.h
+FILE 1042 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 1043 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 1044 f:\sp\public\sdk\inc\specstrings.h
+FILE 1045 f:\sp\public\sdk\inc\basetsd.h
+FILE 1046 f:\sp\public\sdk\inc\pshpack4.h
+FILE 1047 f:\sp\public\sdk\inc\winnetwk.h
+FILE 1048 f:\sp\public\sdk\inc\stralign.h
+FILE 1049 f:\sp\public\sdk\inc\poppack.h
+FILE 1050 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 1051 f:\sp\public\sdk\inc\winsvc.h
+FILE 1052 f:\sp\public\sdk\inc\windef.h
+FILE 1053 f:\sp\vctools\crt_bld\self_x86\crt\src\output.c
+FILE 1054 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 1055 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 1056 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 1057 f:\sp\public\sdk\inc\winuser.h
+FILE 1058 f:\sp\public\sdk\inc\mcx.h
+FILE 1059 f:\sp\public\sdk\inc\pshpack8.h
+FILE 1060 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 1061 f:\sp\public\sdk\inc\guiddef.h
+FILE 1062 f:\sp\public\sdk\inc\winnt.h
+FILE 1063 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 1064 f:\sp\public\sdk\inc\winnls.h
+FILE 1065 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 1066 f:\sp\public\sdk\inc\pshpack1.h
+FILE 1067 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl
+FILE 1068 f:\sp\public\sdk\inc\winerror.h
+FILE 1069 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 1070 f:\sp\vctools\crt_bld\self_x86\crt\src\cvt.h
+FILE 1071 f:\sp\vctools\crt_bld\self_x86\crt\src\conio.h
+FILE 1072 f:\sp\public\sdk\inc\winreg.h
+FILE 1073 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 1074 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 1075 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 1076 f:\sp\public\sdk\inc\ddbanned.h
+FILE 1077 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 1078 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 1079 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 1080 f:\sp\public\sdk\inc\tvout.h
+FILE 1081 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 1082 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h
+FILE 1083 f:\sp\vctools\crt_bld\self_x86\crt\src\wchar.h
+FILE 1084 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 1085 f:\sp\public\sdk\inc\wincon.h
+FILE 1086 f:\sp\public\sdk\inc\imm.h
+FILE 1087 f:\sp\public\sdk\inc\winbase.h
+FILE 1088 f:\sp\public\sdk\inc\wingdi.h
+FILE 1089 f:\sp\public\sdk\inc\winver.h
+FILE 1090 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 1091 f:\sp\public\sdk\inc\windows.h
+FILE 1092 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 1093 f:\sp\public\sdk\inc\pshpack2.h
+FILE 1094 f:\sp\public\sdk\inc\reason.h
+FILE 1095 f:\sp\vctools\crt_bld\self_x86\crt\src\woutputp.c
+FILE 1096 f:\sp\vctools\crt_bld\self_x86\crt\src\fltintrn.h
+FILE 1097 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 1098 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 1099 f:\sp\public\sdk\inc\specstrings.h
+FILE 1100 f:\sp\public\sdk\inc\basetsd.h
+FILE 1101 f:\sp\public\sdk\inc\pshpack4.h
+FILE 1102 f:\sp\public\sdk\inc\winnetwk.h
+FILE 1103 f:\sp\public\sdk\inc\stralign.h
+FILE 1104 f:\sp\public\sdk\inc\poppack.h
+FILE 1105 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 1106 f:\sp\public\sdk\inc\winsvc.h
+FILE 1107 f:\sp\public\sdk\inc\windef.h
+FILE 1108 f:\sp\vctools\crt_bld\self_x86\crt\src\output.c
+FILE 1109 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 1110 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 1111 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 1112 f:\sp\public\sdk\inc\winuser.h
+FILE 1113 f:\sp\public\sdk\inc\mcx.h
+FILE 1114 f:\sp\public\sdk\inc\pshpack8.h
+FILE 1115 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 1116 f:\sp\public\sdk\inc\guiddef.h
+FILE 1117 f:\sp\public\sdk\inc\winnt.h
+FILE 1118 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 1119 f:\sp\public\sdk\inc\winnls.h
+FILE 1120 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 1121 f:\sp\public\sdk\inc\pshpack1.h
+FILE 1122 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl
+FILE 1123 f:\sp\public\sdk\inc\winerror.h
+FILE 1124 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 1125 f:\sp\vctools\crt_bld\self_x86\crt\src\cvt.h
+FILE 1126 f:\sp\vctools\crt_bld\self_x86\crt\src\conio.h
+FILE 1127 f:\sp\public\sdk\inc\winreg.h
+FILE 1128 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 1129 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 1130 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 1131 f:\sp\public\sdk\inc\ddbanned.h
+FILE 1132 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 1133 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 1134 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 1135 f:\sp\public\sdk\inc\tvout.h
+FILE 1136 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 1137 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h
+FILE 1138 f:\sp\vctools\crt_bld\self_x86\crt\src\wchar.h
+FILE 1139 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 1140 f:\sp\public\sdk\inc\wincon.h
+FILE 1141 f:\sp\public\sdk\inc\imm.h
+FILE 1142 f:\sp\public\sdk\inc\winbase.h
+FILE 1143 f:\sp\public\sdk\inc\wingdi.h
+FILE 1144 f:\sp\public\sdk\inc\winver.h
+FILE 1145 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 1146 f:\sp\public\sdk\inc\windows.h
+FILE 1147 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 1148 f:\sp\public\sdk\inc\pshpack2.h
+FILE 1149 f:\sp\public\sdk\inc\reason.h
+FILE 1150 f:\sp\vctools\crt_bld\self_x86\crt\src\woutput.c
+FILE 1151 f:\sp\vctools\crt_bld\self_x86\crt\src\fltintrn.h
+FILE 1152 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 1153 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 1154 f:\sp\public\sdk\inc\specstrings.h
+FILE 1155 f:\sp\public\sdk\inc\basetsd.h
+FILE 1156 f:\sp\public\sdk\inc\pshpack4.h
+FILE 1157 f:\sp\public\sdk\inc\winnetwk.h
+FILE 1158 f:\sp\public\sdk\inc\stralign.h
+FILE 1159 f:\sp\public\sdk\inc\poppack.h
+FILE 1160 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 1161 f:\sp\public\sdk\inc\winsvc.h
+FILE 1162 f:\sp\public\sdk\inc\windef.h
+FILE 1163 f:\sp\vctools\crt_bld\self_x86\crt\src\output.c
+FILE 1164 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 1165 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 1166 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 1167 f:\sp\public\sdk\inc\winuser.h
+FILE 1168 f:\sp\public\sdk\inc\mcx.h
+FILE 1169 f:\sp\public\sdk\inc\pshpack8.h
+FILE 1170 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 1171 f:\sp\public\sdk\inc\guiddef.h
+FILE 1172 f:\sp\public\sdk\inc\winnt.h
+FILE 1173 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 1174 f:\sp\public\sdk\inc\winnls.h
+FILE 1175 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 1176 f:\sp\public\sdk\inc\pshpack1.h
+FILE 1177 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl
+FILE 1178 f:\sp\public\sdk\inc\winerror.h
+FILE 1179 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 1180 f:\sp\vctools\crt_bld\self_x86\crt\src\cvt.h
+FILE 1181 f:\sp\vctools\crt_bld\self_x86\crt\src\conio.h
+FILE 1182 f:\sp\public\sdk\inc\winreg.h
+FILE 1183 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 1184 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 1185 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 1186 f:\sp\public\sdk\inc\ddbanned.h
+FILE 1187 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 1188 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 1189 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 1190 f:\sp\public\sdk\inc\tvout.h
+FILE 1191 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 1192 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h
+FILE 1193 f:\sp\vctools\crt_bld\self_x86\crt\src\wchar.h
+FILE 1194 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 1195 f:\sp\public\sdk\inc\wincon.h
+FILE 1196 f:\sp\public\sdk\inc\imm.h
+FILE 1197 f:\sp\public\sdk\inc\winbase.h
+FILE 1198 f:\sp\public\sdk\inc\wingdi.h
+FILE 1199 f:\sp\public\sdk\inc\winver.h
+FILE 1200 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 1201 f:\sp\public\sdk\inc\windows.h
+FILE 1202 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 1203 f:\sp\public\sdk\inc\pshpack2.h
+FILE 1204 f:\sp\public\sdk\inc\reason.h
+FILE 1205 f:\sp\vctools\crt_bld\self_x86\crt\src\fltintrn.h
+FILE 1206 f:\sp\vctools\crt_bld\self_x86\crt\src\outputs.c
+FILE 1207 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 1208 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 1209 f:\sp\public\sdk\inc\specstrings.h
+FILE 1210 f:\sp\public\sdk\inc\basetsd.h
+FILE 1211 f:\sp\public\sdk\inc\pshpack4.h
+FILE 1212 f:\sp\public\sdk\inc\winnetwk.h
+FILE 1213 f:\sp\public\sdk\inc\stralign.h
+FILE 1214 f:\sp\public\sdk\inc\poppack.h
+FILE 1215 f:\sp\public\sdk\inc\winsvc.h
+FILE 1216 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 1217 f:\sp\public\sdk\inc\windef.h
+FILE 1218 f:\sp\vctools\crt_bld\self_x86\crt\src\output.c
+FILE 1219 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 1220 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 1221 f:\sp\public\sdk\inc\winuser.h
+FILE 1222 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 1223 f:\sp\public\sdk\inc\mcx.h
+FILE 1224 f:\sp\public\sdk\inc\pshpack8.h
+FILE 1225 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 1226 f:\sp\public\sdk\inc\guiddef.h
+FILE 1227 f:\sp\public\sdk\inc\winnt.h
+FILE 1228 f:\sp\public\sdk\inc\winnls.h
+FILE 1229 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 1230 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 1231 f:\sp\public\sdk\inc\pshpack1.h
+FILE 1232 f:\sp\public\sdk\inc\winerror.h
+FILE 1233 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 1234 f:\sp\vctools\crt_bld\self_x86\crt\src\cvt.h
+FILE 1235 f:\sp\vctools\crt_bld\self_x86\crt\src\conio.h
+FILE 1236 f:\sp\public\sdk\inc\winreg.h
+FILE 1237 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 1238 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 1239 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 1240 f:\sp\public\sdk\inc\ddbanned.h
+FILE 1241 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 1242 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 1243 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 1244 f:\sp\public\sdk\inc\tvout.h
+FILE 1245 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 1246 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h
+FILE 1247 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 1248 f:\sp\public\sdk\inc\wincon.h
+FILE 1249 f:\sp\public\sdk\inc\imm.h
+FILE 1250 f:\sp\public\sdk\inc\winbase.h
+FILE 1251 f:\sp\public\sdk\inc\wingdi.h
+FILE 1252 f:\sp\public\sdk\inc\winver.h
+FILE 1253 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 1254 f:\sp\public\sdk\inc\windows.h
+FILE 1255 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 1256 f:\sp\public\sdk\inc\pshpack2.h
+FILE 1257 f:\sp\public\sdk\inc\reason.h
+FILE 1258 f:\sp\vctools\crt_bld\self_x86\crt\src\fltintrn.h
+FILE 1259 f:\sp\vctools\crt_bld\self_x86\crt\src\outputp.c
+FILE 1260 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 1261 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 1262 f:\sp\public\sdk\inc\specstrings.h
+FILE 1263 f:\sp\public\sdk\inc\basetsd.h
+FILE 1264 f:\sp\public\sdk\inc\pshpack4.h
+FILE 1265 f:\sp\public\sdk\inc\winnetwk.h
+FILE 1266 f:\sp\public\sdk\inc\stralign.h
+FILE 1267 f:\sp\public\sdk\inc\poppack.h
+FILE 1268 f:\sp\public\sdk\inc\winsvc.h
+FILE 1269 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 1270 f:\sp\public\sdk\inc\windef.h
+FILE 1271 f:\sp\vctools\crt_bld\self_x86\crt\src\output.c
+FILE 1272 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 1273 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 1274 f:\sp\public\sdk\inc\winuser.h
+FILE 1275 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 1276 f:\sp\public\sdk\inc\mcx.h
+FILE 1277 f:\sp\public\sdk\inc\pshpack8.h
+FILE 1278 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 1279 f:\sp\public\sdk\inc\guiddef.h
+FILE 1280 f:\sp\public\sdk\inc\winnt.h
+FILE 1281 f:\sp\public\sdk\inc\winnls.h
+FILE 1282 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 1283 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 1284 f:\sp\public\sdk\inc\pshpack1.h
+FILE 1285 f:\sp\public\sdk\inc\winerror.h
+FILE 1286 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 1287 f:\sp\vctools\crt_bld\self_x86\crt\src\cvt.h
+FILE 1288 f:\sp\vctools\crt_bld\self_x86\crt\src\conio.h
+FILE 1289 f:\sp\public\sdk\inc\winreg.h
+FILE 1290 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 1291 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 1292 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 1293 f:\sp\public\sdk\inc\ddbanned.h
+FILE 1294 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 1295 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 1296 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 1297 f:\sp\public\sdk\inc\tvout.h
+FILE 1298 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 1299 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h
+FILE 1300 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 1301 f:\sp\public\sdk\inc\wincon.h
+FILE 1302 f:\sp\public\sdk\inc\imm.h
+FILE 1303 f:\sp\public\sdk\inc\winbase.h
+FILE 1304 f:\sp\public\sdk\inc\wingdi.h
+FILE 1305 f:\sp\public\sdk\inc\winver.h
+FILE 1306 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 1307 f:\sp\public\sdk\inc\windows.h
+FILE 1308 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 1309 f:\sp\public\sdk\inc\pshpack2.h
+FILE 1310 f:\sp\public\sdk\inc\reason.h
+FILE 1311 f:\sp\vctools\crt_bld\self_x86\crt\src\fltintrn.h
+FILE 1312 f:\sp\vctools\crt_bld\self_x86\crt\src\output.c
+FILE 1313 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 1314 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 1315 f:\sp\public\sdk\inc\specstrings.h
+FILE 1316 f:\sp\public\sdk\inc\basetsd.h
+FILE 1317 f:\sp\public\sdk\inc\pshpack4.h
+FILE 1318 f:\sp\public\sdk\inc\winnetwk.h
+FILE 1319 f:\sp\public\sdk\inc\stralign.h
+FILE 1320 f:\sp\public\sdk\inc\poppack.h
+FILE 1321 f:\sp\public\sdk\inc\winsvc.h
+FILE 1322 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 1323 f:\sp\public\sdk\inc\windef.h
+FILE 1324 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 1325 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 1326 f:\sp\public\sdk\inc\winuser.h
+FILE 1327 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 1328 f:\sp\public\sdk\inc\mcx.h
+FILE 1329 f:\sp\public\sdk\inc\pshpack8.h
+FILE 1330 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 1331 f:\sp\public\sdk\inc\guiddef.h
+FILE 1332 f:\sp\public\sdk\inc\winnt.h
+FILE 1333 f:\sp\public\sdk\inc\winnls.h
+FILE 1334 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 1335 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 1336 f:\sp\public\sdk\inc\pshpack1.h
+FILE 1337 f:\sp\public\sdk\inc\winerror.h
+FILE 1338 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 1339 f:\sp\vctools\crt_bld\self_x86\crt\src\cvt.h
+FILE 1340 f:\sp\vctools\crt_bld\self_x86\crt\src\conio.h
+FILE 1341 f:\sp\public\sdk\inc\winreg.h
+FILE 1342 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 1343 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 1344 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 1345 f:\sp\public\sdk\inc\ddbanned.h
+FILE 1346 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 1347 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 1348 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 1349 f:\sp\public\sdk\inc\tvout.h
+FILE 1350 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 1351 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h
+FILE 1352 f:\sp\public\sdk\inc\stralign.h
+FILE 1353 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 1354 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 1355 f:\sp\public\sdk\inc\tvout.h
+FILE 1356 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 1357 f:\sp\public\sdk\inc\windows.h
+FILE 1358 f:\sp\public\sdk\inc\winsvc.h
+FILE 1359 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 1360 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 1361 f:\sp\public\sdk\inc\wingdi.h
+FILE 1362 f:\sp\public\sdk\inc\pshpack4.h
+FILE 1363 f:\sp\public\sdk\inc\poppack.h
+FILE 1364 f:\sp\public\sdk\inc\winnetwk.h
+FILE 1365 f:\sp\public\sdk\inc\imm.h
+FILE 1366 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 1367 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 1368 f:\sp\vctools\crt_bld\self_x86\crt\src\wchar.h
+FILE 1369 f:\sp\public\sdk\inc\windef.h
+FILE 1370 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 1371 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 1372 f:\sp\public\sdk\inc\pshpack1.h
+FILE 1373 f:\sp\public\sdk\inc\winver.h
+FILE 1374 f:\sp\vctools\crt_bld\self_x86\crt\src\vswprnc.c
+FILE 1375 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 1376 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 1377 f:\sp\public\sdk\inc\winnt.h
+FILE 1378 f:\sp\public\sdk\inc\winreg.h
+FILE 1379 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 1380 f:\sp\vctools\crt_bld\self_x86\crt\src\vswprint.c
+FILE 1381 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 1382 f:\sp\public\sdk\inc\winbase.h
+FILE 1383 f:\sp\public\sdk\inc\winerror.h
+FILE 1384 f:\sp\public\sdk\inc\ddbanned.h
+FILE 1385 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 1386 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 1387 f:\sp\public\sdk\inc\pshpack8.h
+FILE 1388 f:\sp\public\sdk\inc\guiddef.h
+FILE 1389 f:\sp\public\sdk\inc\specstrings.h
+FILE 1390 f:\sp\public\sdk\inc\basetsd.h
+FILE 1391 f:\sp\public\sdk\inc\reason.h
+FILE 1392 f:\sp\public\sdk\inc\wincon.h
+FILE 1393 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl
+FILE 1394 f:\sp\public\sdk\inc\pshpack2.h
+FILE 1395 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 1396 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 1397 f:\sp\public\sdk\inc\mcx.h
+FILE 1398 f:\sp\public\sdk\inc\winuser.h
+FILE 1399 f:\sp\public\sdk\inc\winnls.h
+FILE 1400 f:\sp\public\sdk\inc\pshpack1.h
+FILE 1401 f:\sp\public\sdk\inc\winver.h
+FILE 1402 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 1403 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 1404 f:\sp\public\sdk\inc\winnt.h
+FILE 1405 f:\sp\public\sdk\inc\winreg.h
+FILE 1406 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 1407 f:\sp\public\sdk\inc\winbase.h
+FILE 1408 f:\sp\public\sdk\inc\winerror.h
+FILE 1409 f:\sp\public\sdk\inc\pshpack8.h
+FILE 1410 f:\sp\public\sdk\inc\guiddef.h
+FILE 1411 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 1412 f:\sp\public\sdk\inc\specstrings.h
+FILE 1413 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 1414 f:\sp\public\sdk\inc\basetsd.h
+FILE 1415 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 1416 f:\sp\public\sdk\inc\reason.h
+FILE 1417 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl
+FILE 1418 f:\sp\public\sdk\inc\wincon.h
+FILE 1419 f:\sp\public\sdk\inc\pshpack2.h
+FILE 1420 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 1421 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 1422 f:\sp\public\sdk\inc\mcx.h
+FILE 1423 f:\sp\public\sdk\inc\winuser.h
+FILE 1424 f:\sp\public\sdk\inc\winnls.h
+FILE 1425 f:\sp\vctools\crt_bld\self_x86\crt\src\vswprint.c
+FILE 1426 f:\sp\public\sdk\inc\stralign.h
+FILE 1427 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 1428 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 1429 f:\sp\public\sdk\inc\tvout.h
+FILE 1430 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 1431 f:\sp\public\sdk\inc\windows.h
+FILE 1432 f:\sp\public\sdk\inc\winsvc.h
+FILE 1433 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 1434 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 1435 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 1436 f:\sp\public\sdk\inc\wingdi.h
+FILE 1437 f:\sp\public\sdk\inc\pshpack4.h
+FILE 1438 f:\sp\public\sdk\inc\poppack.h
+FILE 1439 f:\sp\public\sdk\inc\ddbanned.h
+FILE 1440 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 1441 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 1442 f:\sp\vctools\crt_bld\self_x86\crt\src\wchar.h
+FILE 1443 f:\sp\public\sdk\inc\winnetwk.h
+FILE 1444 f:\sp\public\sdk\inc\imm.h
+FILE 1445 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 1446 f:\sp\public\sdk\inc\windef.h
+FILE 1447 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 1448 f:\sp\public\sdk\inc\windef.h
+FILE 1449 f:\sp\public\sdk\inc\pshpack1.h
+FILE 1450 f:\sp\public\sdk\inc\winver.h
+FILE 1451 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 1452 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 1453 f:\sp\public\sdk\inc\winnt.h
+FILE 1454 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 1455 f:\sp\public\sdk\inc\winreg.h
+FILE 1456 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 1457 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 1458 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 1459 f:\sp\public\sdk\inc\winbase.h
+FILE 1460 f:\sp\public\sdk\inc\winerror.h
+FILE 1461 f:\sp\public\sdk\inc\pshpack8.h
+FILE 1462 f:\sp\vctools\crt_bld\self_x86\crt\src\vfprintf.c
+FILE 1463 f:\sp\public\sdk\inc\reason.h
+FILE 1464 f:\sp\public\sdk\inc\wincon.h
+FILE 1465 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 1466 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 1467 f:\sp\public\sdk\inc\pshpack2.h
+FILE 1468 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 1469 f:\sp\vctools\crt_bld\self_x86\crt\src\file2.h
+FILE 1470 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 1471 f:\sp\public\sdk\inc\mcx.h
+FILE 1472 f:\sp\public\sdk\inc\winuser.h
+FILE 1473 f:\sp\public\sdk\inc\winnls.h
+FILE 1474 f:\sp\public\sdk\inc\guiddef.h
+FILE 1475 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 1476 f:\sp\public\sdk\inc\windows.h
+FILE 1477 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 1478 f:\sp\public\sdk\inc\specstrings.h
+FILE 1479 f:\sp\public\sdk\inc\basetsd.h
+FILE 1480 f:\sp\public\sdk\inc\stralign.h
+FILE 1481 f:\sp\public\sdk\inc\tvout.h
+FILE 1482 f:\sp\public\sdk\inc\ddbanned.h
+FILE 1483 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 1484 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 1485 f:\sp\public\sdk\inc\winsvc.h
+FILE 1486 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 1487 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 1488 f:\sp\public\sdk\inc\wingdi.h
+FILE 1489 f:\sp\public\sdk\inc\pshpack4.h
+FILE 1490 f:\sp\public\sdk\inc\poppack.h
+FILE 1491 f:\sp\public\sdk\inc\winnetwk.h
+FILE 1492 f:\sp\public\sdk\inc\imm.h
+FILE 1493 f:\sp\public\sdk\inc\windef.h
+FILE 1494 f:\sp\public\sdk\inc\pshpack1.h
+FILE 1495 f:\sp\public\sdk\inc\winver.h
+FILE 1496 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 1497 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 1498 f:\sp\public\sdk\inc\winnt.h
+FILE 1499 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 1500 f:\sp\public\sdk\inc\winreg.h
+FILE 1501 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 1502 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 1503 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 1504 f:\sp\public\sdk\inc\winbase.h
+FILE 1505 f:\sp\public\sdk\inc\winerror.h
+FILE 1506 f:\sp\public\sdk\inc\pshpack8.h
+FILE 1507 f:\sp\vctools\crt_bld\self_x86\crt\src\vprintf.c
+FILE 1508 f:\sp\public\sdk\inc\reason.h
+FILE 1509 f:\sp\public\sdk\inc\wincon.h
+FILE 1510 f:\sp\vctools\crt_bld\self_x86\crt\src\file2.h
+FILE 1511 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 1512 f:\sp\public\sdk\inc\pshpack2.h
+FILE 1513 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 1514 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 1515 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 1516 f:\sp\public\sdk\inc\mcx.h
+FILE 1517 f:\sp\public\sdk\inc\winuser.h
+FILE 1518 f:\sp\public\sdk\inc\winnls.h
+FILE 1519 f:\sp\public\sdk\inc\guiddef.h
+FILE 1520 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 1521 f:\sp\public\sdk\inc\windows.h
+FILE 1522 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 1523 f:\sp\public\sdk\inc\specstrings.h
+FILE 1524 f:\sp\public\sdk\inc\basetsd.h
+FILE 1525 f:\sp\public\sdk\inc\stralign.h
+FILE 1526 f:\sp\public\sdk\inc\tvout.h
+FILE 1527 f:\sp\public\sdk\inc\ddbanned.h
+FILE 1528 f:\sp\public\sdk\inc\winsvc.h
+FILE 1529 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 1530 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 1531 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 1532 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 1533 f:\sp\public\sdk\inc\wingdi.h
+FILE 1534 f:\sp\public\sdk\inc\pshpack4.h
+FILE 1535 f:\sp\public\sdk\inc\poppack.h
+FILE 1536 f:\sp\public\sdk\inc\winnetwk.h
+FILE 1537 f:\sp\public\sdk\inc\imm.h
+FILE 1538 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 1539 f:\sp\public\sdk\inc\pshpack1.h
+FILE 1540 f:\sp\public\sdk\inc\winver.h
+FILE 1541 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 1542 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 1543 f:\sp\public\sdk\inc\winnt.h
+FILE 1544 f:\sp\public\sdk\inc\winreg.h
+FILE 1545 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 1546 f:\sp\public\sdk\inc\winbase.h
+FILE 1547 f:\sp\public\sdk\inc\winerror.h
+FILE 1548 f:\sp\public\sdk\inc\pshpack8.h
+FILE 1549 f:\sp\public\sdk\inc\guiddef.h
+FILE 1550 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 1551 f:\sp\public\sdk\inc\specstrings.h
+FILE 1552 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 1553 f:\sp\public\sdk\inc\basetsd.h
+FILE 1554 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 1555 f:\sp\public\sdk\inc\reason.h
+FILE 1556 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl
+FILE 1557 f:\sp\public\sdk\inc\wincon.h
+FILE 1558 f:\sp\public\sdk\inc\pshpack2.h
+FILE 1559 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 1560 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 1561 f:\sp\public\sdk\inc\mcx.h
+FILE 1562 f:\sp\public\sdk\inc\winuser.h
+FILE 1563 f:\sp\public\sdk\inc\winnls.h
+FILE 1564 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.c
+FILE 1565 f:\sp\public\sdk\inc\stralign.h
+FILE 1566 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 1567 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 1568 f:\sp\public\sdk\inc\tvout.h
+FILE 1569 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 1570 f:\sp\public\sdk\inc\windows.h
+FILE 1571 f:\sp\public\sdk\inc\winsvc.h
+FILE 1572 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 1573 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 1574 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 1575 f:\sp\public\sdk\inc\wingdi.h
+FILE 1576 f:\sp\public\sdk\inc\pshpack4.h
+FILE 1577 f:\sp\public\sdk\inc\poppack.h
+FILE 1578 f:\sp\public\sdk\inc\ddbanned.h
+FILE 1579 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 1580 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 1581 f:\sp\vctools\crt_bld\self_x86\crt\src\wchar.h
+FILE 1582 f:\sp\public\sdk\inc\winnetwk.h
+FILE 1583 f:\sp\public\sdk\inc\imm.h
+FILE 1584 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 1585 f:\sp\public\sdk\inc\windef.h
+FILE 1586 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 1587 f:\sp\public\sdk\inc\windef.h
+FILE 1588 f:\sp\public\sdk\inc\pshpack1.h
+FILE 1589 f:\sp\public\sdk\inc\winver.h
+FILE 1590 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 1591 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 1592 f:\sp\public\sdk\inc\winnt.h
+FILE 1593 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 1594 f:\sp\public\sdk\inc\winreg.h
+FILE 1595 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 1596 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 1597 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 1598 f:\sp\public\sdk\inc\winbase.h
+FILE 1599 f:\sp\public\sdk\inc\winerror.h
+FILE 1600 f:\sp\public\sdk\inc\pshpack8.h
+FILE 1601 f:\sp\vctools\crt_bld\self_x86\crt\src\printf.c
+FILE 1602 f:\sp\public\sdk\inc\reason.h
+FILE 1603 f:\sp\public\sdk\inc\wincon.h
+FILE 1604 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 1605 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 1606 f:\sp\public\sdk\inc\pshpack2.h
+FILE 1607 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 1608 f:\sp\vctools\crt_bld\self_x86\crt\src\file2.h
+FILE 1609 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 1610 f:\sp\public\sdk\inc\mcx.h
+FILE 1611 f:\sp\public\sdk\inc\winuser.h
+FILE 1612 f:\sp\public\sdk\inc\winnls.h
+FILE 1613 f:\sp\public\sdk\inc\guiddef.h
+FILE 1614 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 1615 f:\sp\public\sdk\inc\windows.h
+FILE 1616 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 1617 f:\sp\public\sdk\inc\specstrings.h
+FILE 1618 f:\sp\public\sdk\inc\basetsd.h
+FILE 1619 f:\sp\public\sdk\inc\stralign.h
+FILE 1620 f:\sp\public\sdk\inc\tvout.h
+FILE 1621 f:\sp\public\sdk\inc\ddbanned.h
+FILE 1622 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 1623 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 1624 f:\sp\public\sdk\inc\winsvc.h
+FILE 1625 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 1626 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 1627 f:\sp\vctools\crt_bld\self_x86\crt\src\process.h
+FILE 1628 f:\sp\public\sdk\inc\wingdi.h
+FILE 1629 f:\sp\public\sdk\inc\pshpack4.h
+FILE 1630 f:\sp\public\sdk\inc\poppack.h
+FILE 1631 f:\sp\public\sdk\inc\winnetwk.h
+FILE 1632 f:\sp\public\sdk\inc\imm.h
+FILE 1633 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 1634 f:\sp\public\sdk\inc\windef.h
+FILE 1635 f:\sp\public\sdk\inc\pshpack1.h
+FILE 1636 f:\sp\public\sdk\inc\winver.h
+FILE 1637 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 1638 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 1639 f:\sp\public\sdk\inc\winnt.h
+FILE 1640 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 1641 f:\sp\public\sdk\inc\winreg.h
+FILE 1642 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 1643 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 1644 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 1645 f:\sp\public\sdk\inc\winbase.h
+FILE 1646 f:\sp\public\sdk\inc\winerror.h
+FILE 1647 f:\sp\public\sdk\inc\pshpack8.h
+FILE 1648 f:\sp\vctools\crt_bld\self_x86\crt\src\fprintf.c
+FILE 1649 f:\sp\public\sdk\inc\reason.h
+FILE 1650 f:\sp\public\sdk\inc\wincon.h
+FILE 1651 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 1652 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 1653 f:\sp\public\sdk\inc\pshpack2.h
+FILE 1654 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 1655 f:\sp\vctools\crt_bld\self_x86\crt\src\file2.h
+FILE 1656 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 1657 f:\sp\public\sdk\inc\mcx.h
+FILE 1658 f:\sp\public\sdk\inc\winuser.h
+FILE 1659 f:\sp\public\sdk\inc\winnls.h
+FILE 1660 f:\sp\public\sdk\inc\guiddef.h
+FILE 1661 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 1662 f:\sp\public\sdk\inc\windows.h
+FILE 1663 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 1664 f:\sp\public\sdk\inc\specstrings.h
+FILE 1665 f:\sp\public\sdk\inc\basetsd.h
+FILE 1666 f:\sp\public\sdk\inc\stralign.h
+FILE 1667 f:\sp\public\sdk\inc\tvout.h
+FILE 1668 f:\sp\public\sdk\inc\ddbanned.h
+FILE 1669 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 1670 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 1671 f:\sp\public\sdk\inc\winsvc.h
+FILE 1672 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 1673 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 1674 f:\sp\public\sdk\inc\wingdi.h
+FILE 1675 f:\sp\public\sdk\inc\pshpack4.h
+FILE 1676 f:\sp\public\sdk\inc\poppack.h
+FILE 1677 f:\sp\public\sdk\inc\winnetwk.h
+FILE 1678 f:\sp\public\sdk\inc\imm.h
+FILE 1679 f:\sp\public\sdk\inc\pshpack1.h
+FILE 1680 f:\sp\public\sdk\inc\winver.h
+FILE 1681 f:\sp\public\sdk\inc\winnt.h
+FILE 1682 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 1683 f:\sp\public\sdk\inc\winreg.h
+FILE 1684 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 1685 f:\sp\public\sdk\inc\winbase.h
+FILE 1686 f:\sp\public\sdk\inc\winerror.h
+FILE 1687 f:\sp\public\sdk\inc\pshpack8.h
+FILE 1688 f:\sp\vctools\crt_bld\self_x86\crt\src\sect_attribs.h
+FILE 1689 f:\sp\public\sdk\inc\reason.h
+FILE 1690 f:\sp\public\sdk\inc\wincon.h
+FILE 1691 f:\sp\public\sdk\inc\pshpack2.h
+FILE 1692 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 1693 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 1694 f:\sp\public\sdk\inc\mcx.h
+FILE 1695 f:\sp\public\sdk\inc\winuser.h
+FILE 1696 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 1697 f:\sp\public\sdk\inc\winnls.h
+FILE 1698 f:\sp\public\sdk\inc\guiddef.h
+FILE 1699 f:\sp\public\sdk\inc\windows.h
+FILE 1700 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 1701 f:\sp\public\sdk\inc\specstrings.h
+FILE 1702 f:\sp\public\sdk\inc\basetsd.h
+FILE 1703 f:\sp\public\sdk\inc\stralign.h
+FILE 1704 f:\sp\vctools\crt_bld\self_x86\crt\src\fflush.c
+FILE 1705 f:\sp\vctools\crt_bld\self_x86\crt\src\file2.h
+FILE 1706 f:\sp\vctools\crt_bld\self_x86\crt\src\io.h
+FILE 1707 f:\sp\public\sdk\inc\tvout.h
+FILE 1708 f:\sp\public\sdk\inc\winsvc.h
+FILE 1709 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 1710 f:\sp\public\sdk\inc\wingdi.h
+FILE 1711 f:\sp\public\sdk\inc\pshpack4.h
+FILE 1712 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 1713 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 1714 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 1715 f:\sp\public\sdk\inc\poppack.h
+FILE 1716 f:\sp\public\sdk\inc\ddbanned.h
+FILE 1717 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 1718 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 1719 f:\sp\public\sdk\inc\winnetwk.h
+FILE 1720 f:\sp\public\sdk\inc\imm.h
+FILE 1721 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 1722 f:\sp\public\sdk\inc\windef.h
+FILE 1723 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 1724 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 1725 f:\sp\public\sdk\inc\pshpack8.h
+FILE 1726 f:\sp\public\sdk\inc\reason.h
+FILE 1727 f:\sp\public\sdk\inc\wincon.h
+FILE 1728 f:\sp\public\sdk\inc\pshpack2.h
+FILE 1729 f:\sp\public\sdk\inc\mcx.h
+FILE 1730 f:\sp\public\sdk\inc\winuser.h
+FILE 1731 f:\sp\public\sdk\inc\winnls.h
+FILE 1732 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 1733 f:\sp\public\sdk\inc\windef.h
+FILE 1734 f:\sp\public\sdk\inc\stralign.h
+FILE 1735 f:\sp\vctools\crt_bld\self_x86\crt\src\file2.h
+FILE 1736 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 1737 f:\sp\public\sdk\inc\tvout.h
+FILE 1738 f:\sp\public\sdk\inc\winsvc.h
+FILE 1739 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 1740 f:\sp\public\sdk\inc\wingdi.h
+FILE 1741 f:\sp\public\sdk\inc\pshpack4.h
+FILE 1742 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 1743 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 1744 f:\sp\public\sdk\inc\poppack.h
+FILE 1745 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 1746 f:\sp\public\sdk\inc\winnt.h
+FILE 1747 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 1748 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 1749 f:\sp\public\sdk\inc\winnetwk.h
+FILE 1750 f:\sp\public\sdk\inc\imm.h
+FILE 1751 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 1752 f:\sp\vctools\crt_bld\self_x86\crt\src\fclose.c
+FILE 1753 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 1754 f:\sp\public\sdk\inc\pshpack1.h
+FILE 1755 f:\sp\public\sdk\inc\winver.h
+FILE 1756 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 1757 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 1758 f:\sp\public\sdk\inc\guiddef.h
+FILE 1759 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 1760 f:\sp\public\sdk\inc\ddbanned.h
+FILE 1761 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 1762 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 1763 f:\sp\public\sdk\inc\specstrings.h
+FILE 1764 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 1765 f:\sp\public\sdk\inc\basetsd.h
+FILE 1766 f:\sp\public\sdk\inc\windows.h
+FILE 1767 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 1768 f:\sp\vctools\crt_bld\self_x86\crt\src\io.h
+FILE 1769 f:\sp\public\sdk\inc\winreg.h
+FILE 1770 f:\sp\public\sdk\inc\winbase.h
+FILE 1771 f:\sp\public\sdk\inc\winerror.h
+FILE 1772 f:\sp\public\sdk\inc\poppack.h
+FILE 1773 f:\sp\vctools\crt_bld\self_x86\crt\src\file2.h
+FILE 1774 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 1775 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 1776 f:\sp\public\sdk\inc\winnetwk.h
+FILE 1777 f:\sp\public\sdk\inc\imm.h
+FILE 1778 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 1779 f:\sp\public\sdk\inc\windef.h
+FILE 1780 f:\sp\public\sdk\inc\pshpack1.h
+FILE 1781 f:\sp\public\sdk\inc\winver.h
+FILE 1782 f:\sp\public\sdk\inc\windows.h
+FILE 1783 f:\sp\public\sdk\inc\winnt.h
+FILE 1784 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 1785 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 1786 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 1787 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 1788 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 1789 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 1790 f:\sp\public\sdk\inc\winreg.h
+FILE 1791 f:\sp\public\sdk\inc\winbase.h
+FILE 1792 f:\sp\vctools\crt_bld\self_x86\crt\src\closeall.c
+FILE 1793 f:\sp\public\sdk\inc\winerror.h
+FILE 1794 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 1795 f:\sp\public\sdk\inc\pshpack8.h
+FILE 1796 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 1797 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 1798 f:\sp\public\sdk\inc\reason.h
+FILE 1799 f:\sp\public\sdk\inc\wincon.h
+FILE 1800 f:\sp\public\sdk\inc\ddbanned.h
+FILE 1801 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 1802 f:\sp\public\sdk\inc\pshpack2.h
+FILE 1803 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 1804 f:\sp\public\sdk\inc\mcx.h
+FILE 1805 f:\sp\public\sdk\inc\winuser.h
+FILE 1806 f:\sp\public\sdk\inc\winnls.h
+FILE 1807 f:\sp\public\sdk\inc\guiddef.h
+FILE 1808 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 1809 f:\sp\public\sdk\inc\specstrings.h
+FILE 1810 f:\sp\public\sdk\inc\basetsd.h
+FILE 1811 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 1812 f:\sp\public\sdk\inc\stralign.h
+FILE 1813 f:\sp\public\sdk\inc\tvout.h
+FILE 1814 f:\sp\public\sdk\inc\winsvc.h
+FILE 1815 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 1816 f:\sp\public\sdk\inc\wingdi.h
+FILE 1817 f:\sp\public\sdk\inc\pshpack4.h
+FILE 1818 f:\sp\public\sdk\inc\pshpack8.h
+FILE 1819 f:\sp\public\sdk\inc\reason.h
+FILE 1820 f:\sp\public\sdk\inc\wincon.h
+FILE 1821 f:\sp\public\sdk\inc\pshpack2.h
+FILE 1822 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 1823 f:\sp\public\sdk\inc\mcx.h
+FILE 1824 f:\sp\public\sdk\inc\winuser.h
+FILE 1825 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 1826 f:\sp\public\sdk\inc\winnls.h
+FILE 1827 f:\sp\public\sdk\inc\guiddef.h
+FILE 1828 f:\sp\public\sdk\inc\windows.h
+FILE 1829 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 1830 f:\sp\public\sdk\inc\specstrings.h
+FILE 1831 f:\sp\public\sdk\inc\basetsd.h
+FILE 1832 f:\sp\public\sdk\inc\stralign.h
+FILE 1833 f:\sp\vctools\crt_bld\self_x86\crt\src\file2.h
+FILE 1834 f:\sp\vctools\crt_bld\self_x86\crt\src\io.h
+FILE 1835 f:\sp\public\sdk\inc\tvout.h
+FILE 1836 f:\sp\public\sdk\inc\winsvc.h
+FILE 1837 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 1838 f:\sp\public\sdk\inc\wingdi.h
+FILE 1839 f:\sp\public\sdk\inc\pshpack4.h
+FILE 1840 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 1841 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 1842 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 1843 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 1844 f:\sp\public\sdk\inc\poppack.h
+FILE 1845 f:\sp\public\sdk\inc\winnetwk.h
+FILE 1846 f:\sp\public\sdk\inc\imm.h
+FILE 1847 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 1848 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 1849 f:\sp\public\sdk\inc\windef.h
+FILE 1850 f:\sp\vctools\crt_bld\self_x86\crt\src\_sftbuf.c
+FILE 1851 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 1852 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 1853 f:\sp\public\sdk\inc\pshpack1.h
+FILE 1854 f:\sp\public\sdk\inc\winver.h
+FILE 1855 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 1856 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 1857 f:\sp\public\sdk\inc\ddbanned.h
+FILE 1858 f:\sp\public\sdk\inc\winnt.h
+FILE 1859 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 1860 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 1861 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 1862 f:\sp\public\sdk\inc\winreg.h
+FILE 1863 f:\sp\public\sdk\inc\winbase.h
+FILE 1864 f:\sp\public\sdk\inc\winerror.h
+FILE 1865 f:\sp\public\sdk\inc\pshpack1.h
+FILE 1866 f:\sp\public\sdk\inc\winver.h
+FILE 1867 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 1868 f:\sp\public\sdk\inc\winnt.h
+FILE 1869 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 1870 f:\sp\public\sdk\inc\winreg.h
+FILE 1871 f:\sp\public\sdk\inc\winbase.h
+FILE 1872 f:\sp\vctools\crt_bld\self_x86\crt\src\file2.h
+FILE 1873 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 1874 f:\sp\public\sdk\inc\winerror.h
+FILE 1875 f:\sp\public\sdk\inc\pshpack8.h
+FILE 1876 f:\sp\public\sdk\inc\reason.h
+FILE 1877 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 1878 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 1879 f:\sp\public\sdk\inc\wincon.h
+FILE 1880 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 1881 f:\sp\public\sdk\inc\pshpack2.h
+FILE 1882 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 1883 f:\sp\public\sdk\inc\mcx.h
+FILE 1884 f:\sp\public\sdk\inc\winuser.h
+FILE 1885 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 1886 f:\sp\public\sdk\inc\winnls.h
+FILE 1887 f:\sp\public\sdk\inc\guiddef.h
+FILE 1888 f:\sp\public\sdk\inc\windows.h
+FILE 1889 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 1890 f:\sp\public\sdk\inc\specstrings.h
+FILE 1891 f:\sp\public\sdk\inc\basetsd.h
+FILE 1892 f:\sp\public\sdk\inc\stralign.h
+FILE 1893 f:\sp\vctools\crt_bld\self_x86\crt\src\_getbuf.c
+FILE 1894 f:\sp\public\sdk\inc\tvout.h
+FILE 1895 f:\sp\public\sdk\inc\winsvc.h
+FILE 1896 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 1897 f:\sp\public\sdk\inc\wingdi.h
+FILE 1898 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 1899 f:\sp\public\sdk\inc\pshpack4.h
+FILE 1900 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 1901 f:\sp\public\sdk\inc\poppack.h
+FILE 1902 f:\sp\public\sdk\inc\ddbanned.h
+FILE 1903 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 1904 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 1905 f:\sp\public\sdk\inc\winnetwk.h
+FILE 1906 f:\sp\public\sdk\inc\imm.h
+FILE 1907 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 1908 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 1909 f:\sp\public\sdk\inc\windef.h
+FILE 1910 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 1911 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 1912 f:\sp\public\sdk\inc\windef.h
+FILE 1913 f:\sp\public\sdk\inc\pshpack1.h
+FILE 1914 f:\sp\public\sdk\inc\winver.h
+FILE 1915 f:\sp\vctools\crt_bld\self_x86\crt\src\file2.h
+FILE 1916 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 1917 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 1918 f:\sp\public\sdk\inc\winnt.h
+FILE 1919 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 1920 f:\sp\public\sdk\inc\winreg.h
+FILE 1921 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 1922 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 1923 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 1924 f:\sp\public\sdk\inc\winbase.h
+FILE 1925 f:\sp\public\sdk\inc\winerror.h
+FILE 1926 f:\sp\public\sdk\inc\pshpack8.h
+FILE 1927 f:\sp\vctools\crt_bld\self_x86\crt\src\_freebuf.c
+FILE 1928 f:\sp\public\sdk\inc\reason.h
+FILE 1929 f:\sp\public\sdk\inc\wincon.h
+FILE 1930 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 1931 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 1932 f:\sp\public\sdk\inc\pshpack2.h
+FILE 1933 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 1934 f:\sp\public\sdk\inc\mcx.h
+FILE 1935 f:\sp\public\sdk\inc\winuser.h
+FILE 1936 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 1937 f:\sp\public\sdk\inc\winnls.h
+FILE 1938 f:\sp\public\sdk\inc\guiddef.h
+FILE 1939 f:\sp\public\sdk\inc\windows.h
+FILE 1940 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 1941 f:\sp\public\sdk\inc\specstrings.h
+FILE 1942 f:\sp\public\sdk\inc\basetsd.h
+FILE 1943 f:\sp\public\sdk\inc\stralign.h
+FILE 1944 f:\sp\public\sdk\inc\tvout.h
+FILE 1945 f:\sp\public\sdk\inc\ddbanned.h
+FILE 1946 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 1947 f:\sp\public\sdk\inc\winsvc.h
+FILE 1948 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 1949 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 1950 f:\sp\public\sdk\inc\wingdi.h
+FILE 1951 f:\sp\public\sdk\inc\pshpack4.h
+FILE 1952 f:\sp\public\sdk\inc\poppack.h
+FILE 1953 f:\sp\public\sdk\inc\winnetwk.h
+FILE 1954 f:\sp\public\sdk\inc\imm.h
+FILE 1955 f:\sp\public\sdk\inc\specstrings.h
+FILE 1956 f:\sp\public\sdk\inc\basetsd.h
+FILE 1957 f:\sp\public\sdk\inc\reason.h
+FILE 1958 f:\sp\public\sdk\inc\wincon.h
+FILE 1959 f:\sp\public\sdk\inc\pshpack2.h
+FILE 1960 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 1961 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 1962 f:\sp\public\sdk\inc\mcx.h
+FILE 1963 f:\sp\public\sdk\inc\winuser.h
+FILE 1964 f:\sp\public\sdk\inc\winnls.h
+FILE 1965 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 1966 f:\sp\public\sdk\inc\stralign.h
+FILE 1967 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 1968 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 1969 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 1970 f:\sp\public\sdk\inc\windows.h
+FILE 1971 f:\sp\public\sdk\inc\tvout.h
+FILE 1972 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 1973 f:\sp\public\sdk\inc\winsvc.h
+FILE 1974 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h
+FILE 1975 f:\sp\vctools\crt_bld\self_x86\crt\src\file2.h
+FILE 1976 f:\sp\public\sdk\inc\wingdi.h
+FILE 1977 f:\sp\vctools\crt_bld\self_x86\crt\src\io.h
+FILE 1978 f:\sp\public\sdk\inc\pshpack4.h
+FILE 1979 f:\sp\public\sdk\inc\poppack.h
+FILE 1980 f:\sp\vctools\crt_bld\self_x86\crt\src\_flsbuf.c
+FILE 1981 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 1982 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 1983 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 1984 f:\sp\public\sdk\inc\winnetwk.h
+FILE 1985 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl
+FILE 1986 f:\sp\public\sdk\inc\imm.h
+FILE 1987 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 1988 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 1989 f:\sp\vctools\crt_bld\self_x86\crt\src\_flswbuf.c
+FILE 1990 f:\sp\public\sdk\inc\windef.h
+FILE 1991 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 1992 f:\sp\public\sdk\inc\pshpack1.h
+FILE 1993 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 1994 f:\sp\public\sdk\inc\winver.h
+FILE 1995 f:\sp\public\sdk\inc\ddbanned.h
+FILE 1996 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 1997 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 1998 f:\sp\public\sdk\inc\winnt.h
+FILE 1999 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 2000 f:\sp\public\sdk\inc\winreg.h
+FILE 2001 f:\sp\vctools\crt_bld\self_x86\crt\src\msdos.h
+FILE 2002 f:\sp\vctools\crt_bld\self_x86\crt\src\wchar.h
+FILE 2003 f:\sp\public\sdk\inc\winbase.h
+FILE 2004 f:\sp\public\sdk\inc\winerror.h
+FILE 2005 f:\sp\public\sdk\inc\pshpack8.h
+FILE 2006 f:\sp\public\sdk\inc\guiddef.h
+FILE 2007 f:\sp\public\sdk\inc\basetsd.h
+FILE 2008 f:\sp\public\sdk\inc\reason.h
+FILE 2009 f:\sp\public\sdk\inc\wincon.h
+FILE 2010 f:\sp\public\sdk\inc\pshpack2.h
+FILE 2011 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 2012 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 2013 f:\sp\public\sdk\inc\mcx.h
+FILE 2014 f:\sp\public\sdk\inc\winuser.h
+FILE 2015 f:\sp\public\sdk\inc\winnls.h
+FILE 2016 f:\sp\public\sdk\inc\stralign.h
+FILE 2017 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 2018 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 2019 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 2020 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 2021 f:\sp\public\sdk\inc\tvout.h
+FILE 2022 f:\sp\public\sdk\inc\windows.h
+FILE 2023 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 2024 f:\sp\public\sdk\inc\winsvc.h
+FILE 2025 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h
+FILE 2026 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h
+FILE 2027 f:\sp\public\sdk\inc\wingdi.h
+FILE 2028 f:\sp\vctools\crt_bld\self_x86\crt\src\file2.h
+FILE 2029 f:\sp\vctools\crt_bld\self_x86\crt\src\io.h
+FILE 2030 f:\sp\public\sdk\inc\pshpack4.h
+FILE 2031 f:\sp\public\sdk\inc\poppack.h
+FILE 2032 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 2033 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 2034 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 2035 f:\sp\public\sdk\inc\winnetwk.h
+FILE 2036 f:\sp\public\sdk\inc\imm.h
+FILE 2037 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl
+FILE 2038 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 2039 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 2040 f:\sp\public\sdk\inc\windef.h
+FILE 2041 f:\sp\vctools\crt_bld\self_x86\crt\src\_flsbuf.c
+FILE 2042 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 2043 f:\sp\public\sdk\inc\pshpack1.h
+FILE 2044 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 2045 f:\sp\public\sdk\inc\winver.h
+FILE 2046 f:\sp\public\sdk\inc\ddbanned.h
+FILE 2047 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 2048 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 2049 f:\sp\public\sdk\inc\winnt.h
+FILE 2050 f:\sp\public\sdk\inc\winreg.h
+FILE 2051 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 2052 f:\sp\vctools\crt_bld\self_x86\crt\src\msdos.h
+FILE 2053 f:\sp\vctools\crt_bld\self_x86\crt\src\wchar.h
+FILE 2054 f:\sp\public\sdk\inc\winbase.h
+FILE 2055 f:\sp\public\sdk\inc\winerror.h
+FILE 2056 f:\sp\public\sdk\inc\pshpack8.h
+FILE 2057 f:\sp\public\sdk\inc\guiddef.h
+FILE 2058 f:\sp\public\sdk\inc\specstrings.h
+FILE 2059 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h
+FILE 2060 f:\sp\public\sdk\inc\reason.h
+FILE 2061 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 2062 f:\sp\public\sdk\inc\wincon.h
+FILE 2063 f:\sp\public\sdk\inc\pshpack2.h
+FILE 2064 f:\sp\public\sdk\inc\mcx.h
+FILE 2065 f:\sp\public\sdk\inc\winuser.h
+FILE 2066 f:\sp\public\sdk\inc\winnls.h
+FILE 2067 f:\sp\public\sdk\inc\guiddef.h
+FILE 2068 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 2069 f:\sp\public\sdk\inc\specstrings.h
+FILE 2070 f:\sp\public\sdk\inc\basetsd.h
+FILE 2071 f:\sp\public\sdk\inc\stralign.h
+FILE 2072 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 2073 f:\sp\public\sdk\inc\tvout.h
+FILE 2074 f:\sp\public\sdk\inc\winsvc.h
+FILE 2075 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 2076 f:\sp\public\sdk\inc\wingdi.h
+FILE 2077 f:\sp\public\sdk\inc\pshpack4.h
+FILE 2078 f:\sp\public\sdk\inc\poppack.h
+FILE 2079 f:\sp\vctools\crt_bld\self_x86\crt\src\sect_attribs.h
+FILE 2080 f:\sp\vctools\crt_bld\self_x86\crt\src\file2.h
+FILE 2081 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 2082 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 2083 f:\sp\public\sdk\inc\winnetwk.h
+FILE 2084 f:\sp\public\sdk\inc\imm.h
+FILE 2085 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 2086 f:\sp\public\sdk\inc\windef.h
+FILE 2087 f:\sp\vctools\crt_bld\self_x86\crt\src\_file.c
+FILE 2088 f:\sp\public\sdk\inc\pshpack1.h
+FILE 2089 f:\sp\public\sdk\inc\winver.h
+FILE 2090 f:\sp\public\sdk\inc\windows.h
+FILE 2091 f:\sp\public\sdk\inc\winnt.h
+FILE 2092 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 2093 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 2094 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 2095 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 2096 f:\sp\public\sdk\inc\ddbanned.h
+FILE 2097 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 2098 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 2099 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 2100 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 2101 f:\sp\public\sdk\inc\winreg.h
+FILE 2102 f:\sp\public\sdk\inc\winbase.h
+FILE 2103 f:\sp\public\sdk\inc\winerror.h
+FILE 2104 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 2105 f:\sp\public\sdk\inc\pshpack8.h
+FILE 2106 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 2107 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 2108 f:\sp\public\sdk\inc\windef.h
+FILE 2109 f:\sp\public\sdk\inc\pshpack1.h
+FILE 2110 f:\sp\public\sdk\inc\winver.h
+FILE 2111 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 2112 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 2113 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 2114 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 2115 f:\sp\public\sdk\inc\winnt.h
+FILE 2116 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 2117 f:\sp\public\sdk\inc\winreg.h
+FILE 2118 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 2119 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 2120 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 2121 f:\sp\public\sdk\inc\winbase.h
+FILE 2122 f:\sp\public\sdk\inc\winerror.h
+FILE 2123 f:\sp\public\sdk\inc\pshpack8.h
+FILE 2124 f:\sp\vctools\crt_bld\self_x86\crt\src\fputwc.c
+FILE 2125 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 2126 f:\sp\public\sdk\inc\reason.h
+FILE 2127 f:\sp\public\sdk\inc\wincon.h
+FILE 2128 f:\sp\public\sdk\inc\pshpack2.h
+FILE 2129 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 2130 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h
+FILE 2131 f:\sp\public\sdk\inc\mcx.h
+FILE 2132 f:\sp\public\sdk\inc\winuser.h
+FILE 2133 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h
+FILE 2134 f:\sp\public\sdk\inc\winnls.h
+FILE 2135 f:\sp\public\sdk\inc\guiddef.h
+FILE 2136 f:\sp\vctools\crt_bld\self_x86\crt\src\msdos.h
+FILE 2137 f:\sp\vctools\crt_bld\self_x86\crt\src\wchar.h
+FILE 2138 f:\sp\public\sdk\inc\stralign.h
+FILE 2139 f:\sp\public\sdk\inc\specstrings.h
+FILE 2140 f:\sp\vctools\crt_bld\self_x86\crt\src\file2.h
+FILE 2141 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 2142 f:\sp\public\sdk\inc\basetsd.h
+FILE 2143 f:\sp\public\sdk\inc\windows.h
+FILE 2144 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 2145 f:\sp\public\sdk\inc\tvout.h
+FILE 2146 f:\sp\public\sdk\inc\ddbanned.h
+FILE 2147 f:\sp\public\sdk\inc\winsvc.h
+FILE 2148 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 2149 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 2150 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 2151 f:\sp\public\sdk\inc\wingdi.h
+FILE 2152 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 2153 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 2154 f:\sp\public\sdk\inc\pshpack4.h
+FILE 2155 f:\sp\public\sdk\inc\poppack.h
+FILE 2156 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl
+FILE 2157 f:\sp\public\sdk\inc\winnetwk.h
+FILE 2158 f:\sp\public\sdk\inc\imm.h
+FILE 2159 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 2160 f:\sp\public\sdk\inc\poppack.h
+FILE 2161 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 2162 f:\sp\public\sdk\inc\winnetwk.h
+FILE 2163 f:\sp\public\sdk\inc\imm.h
+FILE 2164 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 2165 f:\sp\public\sdk\inc\windef.h
+FILE 2166 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 2167 f:\sp\public\sdk\inc\pshpack1.h
+FILE 2168 f:\sp\public\sdk\inc\winver.h
+FILE 2169 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 2170 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 2171 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 2172 f:\sp\public\sdk\inc\winnt.h
+FILE 2173 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 2174 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 2175 f:\sp\public\sdk\inc\winreg.h
+FILE 2176 f:\sp\vctools\crt_bld\self_x86\crt\src\fileno.c
+FILE 2177 f:\sp\public\sdk\inc\winbase.h
+FILE 2178 f:\sp\public\sdk\inc\winerror.h
+FILE 2179 f:\sp\public\sdk\inc\pshpack8.h
+FILE 2180 f:\sp\public\sdk\inc\reason.h
+FILE 2181 f:\sp\public\sdk\inc\wincon.h
+FILE 2182 f:\sp\public\sdk\inc\ddbanned.h
+FILE 2183 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 2184 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 2185 f:\sp\public\sdk\inc\pshpack2.h
+FILE 2186 f:\sp\public\sdk\inc\mcx.h
+FILE 2187 f:\sp\public\sdk\inc\winuser.h
+FILE 2188 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 2189 f:\sp\public\sdk\inc\winnls.h
+FILE 2190 f:\sp\public\sdk\inc\guiddef.h
+FILE 2191 f:\sp\public\sdk\inc\windows.h
+FILE 2192 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 2193 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 2194 f:\sp\public\sdk\inc\specstrings.h
+FILE 2195 f:\sp\public\sdk\inc\basetsd.h
+FILE 2196 f:\sp\public\sdk\inc\stralign.h
+FILE 2197 f:\sp\public\sdk\inc\tvout.h
+FILE 2198 f:\sp\public\sdk\inc\winsvc.h
+FILE 2199 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 2200 f:\sp\public\sdk\inc\wingdi.h
+FILE 2201 f:\sp\public\sdk\inc\pshpack4.h
+FILE 2202 f:\sp\public\sdk\inc\pshpack2.h
+FILE 2203 f:\sp\public\sdk\inc\winreg.h
+FILE 2204 f:\sp\public\sdk\inc\guiddef.h
+FILE 2205 f:\sp\public\sdk\inc\windows.h
+FILE 2206 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 2207 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 2208 f:\sp\public\sdk\inc\specstrings.h
+FILE 2209 f:\sp\public\sdk\inc\basetsd.h
+FILE 2210 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 2211 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 2212 f:\sp\public\sdk\inc\pshpack4.h
+FILE 2213 f:\sp\public\sdk\inc\reason.h
+FILE 2214 f:\sp\public\sdk\inc\wincon.h
+FILE 2215 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 2216 f:\sp\public\sdk\inc\poppack.h
+FILE 2217 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 2218 f:\sp\vctools\crt_bld\self_x86\crt\src\sect_attribs.h
+FILE 2219 f:\sp\public\sdk\inc\mcx.h
+FILE 2220 f:\sp\public\sdk\inc\winuser.h
+FILE 2221 f:\sp\public\sdk\inc\winnls.h
+FILE 2222 f:\sp\public\sdk\inc\stralign.h
+FILE 2223 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 2224 f:\sp\public\sdk\inc\windef.h
+FILE 2225 f:\sp\public\sdk\inc\tvout.h
+FILE 2226 f:\sp\public\sdk\inc\winsvc.h
+FILE 2227 f:\sp\vctools\crt_bld\self_x86\crt\src\tidtable.c
+FILE 2228 f:\sp\public\sdk\inc\wingdi.h
+FILE 2229 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 2230 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 2231 f:\sp\public\sdk\inc\winnt.h
+FILE 2232 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 2233 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 2234 f:\sp\public\sdk\inc\winnetwk.h
+FILE 2235 f:\sp\public\sdk\inc\imm.h
+FILE 2236 f:\sp\public\sdk\inc\ddbanned.h
+FILE 2237 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 2238 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 2239 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h
+FILE 2240 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 2241 f:\sp\public\sdk\inc\winbase.h
+FILE 2242 f:\sp\public\sdk\inc\winerror.h
+FILE 2243 f:\sp\public\sdk\inc\pshpack1.h
+FILE 2244 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 2245 f:\sp\vctools\crt_bld\self_x86\crt\src\memory.h
+FILE 2246 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 2247 f:\sp\vctools\crt_bld\self_x86\crt\src\msdos.h
+FILE 2248 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h
+FILE 2249 f:\sp\public\sdk\inc\pshpack8.h
+FILE 2250 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 2251 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 2252 f:\sp\public\sdk\inc\winver.h
+FILE 2253 f:\sp\public\sdk\inc\pshpack4.h
+FILE 2254 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h
+FILE 2255 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 2256 f:\sp\public\sdk\inc\poppack.h
+FILE 2257 f:\sp\public\sdk\inc\winnt.h
+FILE 2258 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 2259 f:\sp\public\sdk\inc\winnetwk.h
+FILE 2260 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h
+FILE 2261 f:\sp\public\sdk\inc\imm.h
+FILE 2262 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h
+FILE 2263 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 2264 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 2265 f:\sp\public\sdk\inc\pshpack1.h
+FILE 2266 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 2267 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 2268 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 2269 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 2270 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 2271 f:\sp\public\sdk\inc\winver.h
+FILE 2272 f:\sp\public\sdk\inc\guiddef.h
+FILE 2273 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 2274 f:\sp\public\sdk\inc\specstrings.h
+FILE 2275 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 2276 f:\sp\public\sdk\inc\basetsd.h
+FILE 2277 f:\sp\public\sdk\inc\windows.h
+FILE 2278 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 2279 f:\sp\public\sdk\inc\winreg.h
+FILE 2280 f:\sp\vctools\crt_bld\self_x86\crt\src\stdenvp.c
+FILE 2281 f:\sp\public\sdk\inc\winbase.h
+FILE 2282 f:\sp\public\sdk\inc\winerror.h
+FILE 2283 f:\sp\public\sdk\inc\pshpack8.h
+FILE 2284 f:\sp\public\sdk\inc\reason.h
+FILE 2285 f:\sp\public\sdk\inc\ddbanned.h
+FILE 2286 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 2287 f:\sp\public\sdk\inc\wincon.h
+FILE 2288 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 2289 f:\sp\public\sdk\inc\pshpack2.h
+FILE 2290 f:\sp\public\sdk\inc\mcx.h
+FILE 2291 f:\sp\public\sdk\inc\winuser.h
+FILE 2292 f:\sp\public\sdk\inc\winnls.h
+FILE 2293 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 2294 f:\sp\public\sdk\inc\windef.h
+FILE 2295 f:\sp\public\sdk\inc\stralign.h
+FILE 2296 f:\sp\public\sdk\inc\tvout.h
+FILE 2297 f:\sp\public\sdk\inc\winsvc.h
+FILE 2298 f:\sp\public\sdk\inc\wingdi.h
+FILE 2299 f:\sp\public\sdk\inc\poppack.h
+FILE 2300 f:\sp\vctools\crt_bld\self_x86\crt\src\dos.h
+FILE 2301 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 2302 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h
+FILE 2303 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 2304 f:\sp\public\sdk\inc\winnetwk.h
+FILE 2305 f:\sp\public\sdk\inc\imm.h
+FILE 2306 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 2307 f:\sp\public\sdk\inc\windef.h
+FILE 2308 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 2309 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 2310 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h
+FILE 2311 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h
+FILE 2312 f:\sp\vctools\crt_bld\self_x86\crt\src\mbctype.h
+FILE 2313 f:\sp\public\sdk\inc\pshpack1.h
+FILE 2314 f:\sp\public\sdk\inc\winver.h
+FILE 2315 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 2316 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 2317 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 2318 f:\sp\public\sdk\inc\winnt.h
+FILE 2319 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 2320 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 2321 f:\sp\public\sdk\inc\winreg.h
+FILE 2322 f:\sp\vctools\crt_bld\self_x86\crt\src\stdargv.c
+FILE 2323 f:\sp\public\sdk\inc\winbase.h
+FILE 2324 f:\sp\public\sdk\inc\winerror.h
+FILE 2325 f:\sp\public\sdk\inc\pshpack8.h
+FILE 2326 f:\sp\public\sdk\inc\reason.h
+FILE 2327 f:\sp\public\sdk\inc\wincon.h
+FILE 2328 f:\sp\public\sdk\inc\ddbanned.h
+FILE 2329 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 2330 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 2331 f:\sp\public\sdk\inc\pshpack2.h
+FILE 2332 f:\sp\public\sdk\inc\mcx.h
+FILE 2333 f:\sp\public\sdk\inc\winuser.h
+FILE 2334 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 2335 f:\sp\public\sdk\inc\winnls.h
+FILE 2336 f:\sp\public\sdk\inc\guiddef.h
+FILE 2337 f:\sp\public\sdk\inc\windows.h
+FILE 2338 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 2339 f:\sp\public\sdk\inc\specstrings.h
+FILE 2340 f:\sp\public\sdk\inc\basetsd.h
+FILE 2341 f:\sp\public\sdk\inc\stralign.h
+FILE 2342 f:\sp\public\sdk\inc\tvout.h
+FILE 2343 f:\sp\public\sdk\inc\winsvc.h
+FILE 2344 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 2345 f:\sp\public\sdk\inc\wingdi.h
+FILE 2346 f:\sp\public\sdk\inc\pshpack4.h
+FILE 2347 f:\sp\public\sdk\inc\reason.h
+FILE 2348 f:\sp\public\sdk\inc\wincon.h
+FILE 2349 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 2350 f:\sp\public\sdk\inc\poppack.h
+FILE 2351 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 2352 f:\sp\public\sdk\inc\mcx.h
+FILE 2353 f:\sp\public\sdk\inc\winuser.h
+FILE 2354 f:\sp\public\sdk\inc\winnls.h
+FILE 2355 f:\sp\public\sdk\inc\stralign.h
+FILE 2356 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 2357 f:\sp\public\sdk\inc\windef.h
+FILE 2358 f:\sp\public\sdk\inc\tvout.h
+FILE 2359 f:\sp\public\sdk\inc\winsvc.h
+FILE 2360 f:\sp\public\sdk\inc\wingdi.h
+FILE 2361 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 2362 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 2363 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 2364 f:\sp\public\sdk\inc\winnt.h
+FILE 2365 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 2366 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 2367 f:\sp\public\sdk\inc\winnetwk.h
+FILE 2368 f:\sp\public\sdk\inc\imm.h
+FILE 2369 f:\sp\vctools\crt_bld\self_x86\crt\src\winheap.h
+FILE 2370 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 2371 f:\sp\vctools\crt_bld\self_x86\crt\src\mlock.c
+FILE 2372 f:\sp\public\sdk\inc\winbase.h
+FILE 2373 f:\sp\public\sdk\inc\winerror.h
+FILE 2374 f:\sp\public\sdk\inc\pshpack1.h
+FILE 2375 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h
+FILE 2376 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 2377 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 2378 f:\sp\public\sdk\inc\pshpack8.h
+FILE 2379 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 2380 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 2381 f:\sp\public\sdk\inc\winver.h
+FILE 2382 f:\sp\public\sdk\inc\ddbanned.h
+FILE 2383 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 2384 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 2385 f:\sp\public\sdk\inc\pshpack2.h
+FILE 2386 f:\sp\public\sdk\inc\winreg.h
+FILE 2387 f:\sp\public\sdk\inc\guiddef.h
+FILE 2388 f:\sp\public\sdk\inc\windows.h
+FILE 2389 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 2390 f:\sp\public\sdk\inc\specstrings.h
+FILE 2391 f:\sp\public\sdk\inc\basetsd.h
+FILE 2392 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 2393 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 2394 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 2395 f:\sp\public\sdk\inc\pshpack4.h
+FILE 2396 f:\sp\public\sdk\inc\poppack.h
+FILE 2397 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 2398 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 2399 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 2400 f:\sp\public\sdk\inc\winnetwk.h
+FILE 2401 f:\sp\public\sdk\inc\imm.h
+FILE 2402 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 2403 f:\sp\public\sdk\inc\windef.h
+FILE 2404 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 2405 f:\sp\public\sdk\inc\pshpack1.h
+FILE 2406 f:\sp\public\sdk\inc\winver.h
+FILE 2407 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 2408 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 2409 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 2410 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h
+FILE 2411 f:\sp\public\sdk\inc\winnt.h
+FILE 2412 f:\sp\vctools\crt_bld\self_x86\crt\src\cmsgs.h
+FILE 2413 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 2414 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h
+FILE 2415 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 2416 f:\sp\public\sdk\inc\winreg.h
+FILE 2417 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 2418 f:\sp\vctools\crt_bld\self_x86\crt\src\crt0msg.c
+FILE 2419 f:\sp\public\sdk\inc\winbase.h
+FILE 2420 f:\sp\public\sdk\inc\winerror.h
+FILE 2421 f:\sp\public\sdk\inc\pshpack8.h
+FILE 2422 f:\sp\public\sdk\inc\reason.h
+FILE 2423 f:\sp\public\sdk\inc\wincon.h
+FILE 2424 f:\sp\public\sdk\inc\ddbanned.h
+FILE 2425 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 2426 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 2427 f:\sp\public\sdk\inc\pshpack2.h
+FILE 2428 f:\sp\public\sdk\inc\mcx.h
+FILE 2429 f:\sp\public\sdk\inc\winuser.h
+FILE 2430 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 2431 f:\sp\public\sdk\inc\winnls.h
+FILE 2432 f:\sp\public\sdk\inc\guiddef.h
+FILE 2433 f:\sp\public\sdk\inc\windows.h
+FILE 2434 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 2435 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 2436 f:\sp\public\sdk\inc\specstrings.h
+FILE 2437 f:\sp\public\sdk\inc\basetsd.h
+FILE 2438 f:\sp\public\sdk\inc\stralign.h
+FILE 2439 f:\sp\public\sdk\inc\tvout.h
+FILE 2440 f:\sp\public\sdk\inc\winsvc.h
+FILE 2441 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 2442 f:\sp\public\sdk\inc\wingdi.h
+FILE 2443 f:\sp\public\sdk\inc\pshpack4.h
+FILE 2444 f:\sp\public\sdk\inc\pshpack1.h
+FILE 2445 f:\sp\public\sdk\inc\winver.h
+FILE 2446 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 2447 f:\sp\public\sdk\inc\winnt.h
+FILE 2448 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 2449 f:\sp\public\sdk\inc\winreg.h
+FILE 2450 f:\sp\public\sdk\inc\winbase.h
+FILE 2451 f:\sp\public\sdk\inc\winerror.h
+FILE 2452 f:\sp\vctools\crt_bld\self_x86\crt\src\sect_attribs.h
+FILE 2453 f:\sp\public\sdk\inc\pshpack8.h
+FILE 2454 f:\sp\public\sdk\inc\reason.h
+FILE 2455 f:\sp\public\sdk\inc\wincon.h
+FILE 2456 f:\sp\public\sdk\inc\pshpack2.h
+FILE 2457 f:\sp\vctools\crt_bld\self_x86\crt\src\crt0init.c
+FILE 2458 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 2459 f:\sp\public\sdk\inc\mcx.h
+FILE 2460 f:\sp\public\sdk\inc\winuser.h
+FILE 2461 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 2462 f:\sp\public\sdk\inc\winnls.h
+FILE 2463 f:\sp\public\sdk\inc\guiddef.h
+FILE 2464 f:\sp\public\sdk\inc\windows.h
+FILE 2465 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 2466 f:\sp\public\sdk\inc\specstrings.h
+FILE 2467 f:\sp\public\sdk\inc\basetsd.h
+FILE 2468 f:\sp\public\sdk\inc\stralign.h
+FILE 2469 f:\sp\public\sdk\inc\tvout.h
+FILE 2470 f:\sp\public\sdk\inc\winsvc.h
+FILE 2471 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 2472 f:\sp\public\sdk\inc\wingdi.h
+FILE 2473 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 2474 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 2475 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 2476 f:\sp\public\sdk\inc\pshpack4.h
+FILE 2477 f:\sp\public\sdk\inc\ddbanned.h
+FILE 2478 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 2479 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 2480 f:\sp\public\sdk\inc\poppack.h
+FILE 2481 f:\sp\public\sdk\inc\winnetwk.h
+FILE 2482 f:\sp\public\sdk\inc\imm.h
+FILE 2483 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 2484 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 2485 f:\sp\public\sdk\inc\windef.h
+FILE 2486 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 2487 f:\sp\public\sdk\inc\poppack.h
+FILE 2488 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h
+FILE 2489 f:\sp\public\sdk\inc\winnetwk.h
+FILE 2490 f:\sp\public\sdk\inc\imm.h
+FILE 2491 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 2492 f:\sp\public\sdk\inc\windef.h
+FILE 2493 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 2494 f:\sp\public\sdk\inc\pshpack1.h
+FILE 2495 f:\sp\public\sdk\inc\winver.h
+FILE 2496 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 2497 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 2498 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 2499 f:\sp\public\sdk\inc\winnt.h
+FILE 2500 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 2501 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 2502 f:\sp\public\sdk\inc\winreg.h
+FILE 2503 f:\sp\vctools\crt_bld\self_x86\crt\src\crt0fp.c
+FILE 2504 f:\sp\public\sdk\inc\winbase.h
+FILE 2505 f:\sp\public\sdk\inc\winerror.h
+FILE 2506 f:\sp\public\sdk\inc\pshpack8.h
+FILE 2507 f:\sp\public\sdk\inc\reason.h
+FILE 2508 f:\sp\public\sdk\inc\wincon.h
+FILE 2509 f:\sp\public\sdk\inc\ddbanned.h
+FILE 2510 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 2511 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 2512 f:\sp\public\sdk\inc\pshpack2.h
+FILE 2513 f:\sp\public\sdk\inc\mcx.h
+FILE 2514 f:\sp\public\sdk\inc\winuser.h
+FILE 2515 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 2516 f:\sp\public\sdk\inc\winnls.h
+FILE 2517 f:\sp\public\sdk\inc\guiddef.h
+FILE 2518 f:\sp\public\sdk\inc\windows.h
+FILE 2519 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 2520 f:\sp\public\sdk\inc\specstrings.h
+FILE 2521 f:\sp\public\sdk\inc\basetsd.h
+FILE 2522 f:\sp\public\sdk\inc\stralign.h
+FILE 2523 f:\sp\public\sdk\inc\tvout.h
+FILE 2524 f:\sp\public\sdk\inc\winsvc.h
+FILE 2525 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 2526 f:\sp\public\sdk\inc\wingdi.h
+FILE 2527 f:\sp\public\sdk\inc\pshpack4.h
+FILE 2528 f:\sp\vctools\crt_bld\self_x86\crt\src\process.h
+FILE 2529 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 2530 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 2531 f:\sp\public\sdk\inc\pshpack4.h
+FILE 2532 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 2533 f:\sp\public\sdk\inc\reason.h
+FILE 2534 f:\sp\public\sdk\inc\wincon.h
+FILE 2535 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 2536 f:\sp\public\sdk\inc\poppack.h
+FILE 2537 f:\sp\vctools\crt_bld\self_x86\crt\src\sect_attribs.h
+FILE 2538 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 2539 f:\sp\public\sdk\inc\mcx.h
+FILE 2540 f:\sp\public\sdk\inc\winuser.h
+FILE 2541 f:\sp\public\sdk\inc\winnls.h
+FILE 2542 f:\sp\public\sdk\inc\stralign.h
+FILE 2543 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 2544 f:\sp\public\sdk\inc\windef.h
+FILE 2545 f:\sp\public\sdk\inc\tvout.h
+FILE 2546 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 2547 f:\sp\public\sdk\inc\winsvc.h
+FILE 2548 f:\sp\public\sdk\inc\wingdi.h
+FILE 2549 f:\sp\vctools\crt_bld\self_x86\crt\src\msdos.h
+FILE 2550 f:\sp\vctools\crt_bld\self_x86\crt\src\rtcapi.h
+FILE 2551 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 2552 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 2553 f:\sp\vctools\crt_bld\self_x86\crt\src\mbdata.h
+FILE 2554 f:\sp\vctools\crt_bld\self_x86\crt\src\mbctype.h
+FILE 2555 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 2556 f:\sp\public\sdk\inc\winnt.h
+FILE 2557 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 2558 f:\sp\public\sdk\inc\winnetwk.h
+FILE 2559 f:\sp\public\sdk\inc\imm.h
+FILE 2560 f:\sp\vctools\crt_bld\self_x86\crt\src\crt0dat.c
+FILE 2561 f:\sp\public\sdk\inc\winbase.h
+FILE 2562 f:\sp\public\sdk\inc\winerror.h
+FILE 2563 f:\sp\public\sdk\inc\pshpack1.h
+FILE 2564 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 2565 f:\sp\public\sdk\inc\pshpack8.h
+FILE 2566 f:\sp\public\sdk\inc\winver.h
+FILE 2567 f:\sp\public\sdk\inc\ddbanned.h
+FILE 2568 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 2569 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 2570 f:\sp\vctools\crt_bld\self_x86\crt\src\dos.h
+FILE 2571 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 2572 f:\sp\public\sdk\inc\pshpack2.h
+FILE 2573 f:\sp\public\sdk\inc\winreg.h
+FILE 2574 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 2575 f:\sp\public\sdk\inc\guiddef.h
+FILE 2576 f:\sp\public\sdk\inc\windows.h
+FILE 2577 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 2578 f:\sp\public\sdk\inc\specstrings.h
+FILE 2579 f:\sp\public\sdk\inc\basetsd.h
+FILE 2580 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 2581 f:\sp\public\sdk\inc\tvout.h
+FILE 2582 f:\sp\public\sdk\inc\winsvc.h
+FILE 2583 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 2584 f:\sp\public\sdk\inc\wingdi.h
+FILE 2585 f:\sp\public\sdk\inc\pshpack4.h
+FILE 2586 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h
+FILE 2587 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h
+FILE 2588 f:\sp\vctools\crt_bld\self_x86\crt\src\rtcapi.h
+FILE 2589 f:\sp\public\sdk\inc\poppack.h
+FILE 2590 f:\sp\vctools\crt_bld\self_x86\crt\src\process.h
+FILE 2591 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h
+FILE 2592 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h
+FILE 2593 f:\sp\public\sdk\inc\winnetwk.h
+FILE 2594 f:\sp\public\sdk\inc\imm.h
+FILE 2595 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 2596 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 2597 f:\sp\public\sdk\inc\windef.h
+FILE 2598 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 2599 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 2600 f:\sp\vctools\crt_bld\self_x86\crt\src\dos.h
+FILE 2601 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 2602 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 2603 f:\sp\public\sdk\inc\pshpack1.h
+FILE 2604 f:\sp\public\sdk\inc\winver.h
+FILE 2605 f:\sp\public\sdk\inc\winnt.h
+FILE 2606 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 2607 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 2608 f:\sp\vctools\crt_bld\self_x86\crt\src\crt0.c
+FILE 2609 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 2610 f:\sp\public\sdk\inc\winreg.h
+FILE 2611 f:\sp\public\sdk\inc\winbase.h
+FILE 2612 f:\sp\public\sdk\inc\winerror.h
+FILE 2613 f:\sp\public\sdk\inc\ddbanned.h
+FILE 2614 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 2615 f:\sp\public\sdk\inc\pshpack8.h
+FILE 2616 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 2617 f:\sp\public\sdk\inc\reason.h
+FILE 2618 f:\sp\public\sdk\inc\wincon.h
+FILE 2619 f:\sp\public\sdk\inc\pshpack2.h
+FILE 2620 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 2621 f:\sp\public\sdk\inc\mcx.h
+FILE 2622 f:\sp\public\sdk\inc\winuser.h
+FILE 2623 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 2624 f:\sp\public\sdk\inc\winnls.h
+FILE 2625 f:\sp\public\sdk\inc\guiddef.h
+FILE 2626 f:\sp\public\sdk\inc\windows.h
+FILE 2627 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 2628 f:\sp\public\sdk\inc\specstrings.h
+FILE 2629 f:\sp\public\sdk\inc\basetsd.h
+FILE 2630 f:\sp\vctools\crt_bld\self_x86\crt\src\sect_attribs.h
+FILE 2631 f:\sp\public\sdk\inc\stralign.h
+FILE 2632 F:\SP\vctools\crt_bld\SELF_X86\crt\src\intel\alloca16.asm
+FILE 2633 F:\SP\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc
+FILE 2634 F:\SP\vctools\crt_bld\SELF_X86\crt\src\intel\chkstk.asm
+FILE 2635 F:\SP\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc
+FILE 2636 f:\sp\public\sdk\inc\wincon.h
+FILE 2637 f:\sp\public\sdk\inc\imm.h
+FILE 2638 f:\sp\public\sdk\inc\winbase.h
+FILE 2639 f:\sp\public\sdk\inc\wingdi.h
+FILE 2640 f:\sp\public\sdk\inc\winver.h
+FILE 2641 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\limits.h
+FILE 2642 f:\sp\public\sdk\inc\windows.h
+FILE 2643 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h
+FILE 2644 f:\sp\public\sdk\inc\pshpack2.h
+FILE 2645 f:\sp\public\sdk\inc\reason.h
+FILE 2646 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\rtc\initsect.cpp
+FILE 2647 f:\sp\public\sdk\inc\specstrings.h
+FILE 2648 f:\sp\public\sdk\inc\basetsd.h
+FILE 2649 f:\sp\public\sdk\inc\pshpack4.h
+FILE 2650 f:\sp\public\sdk\inc\winnetwk.h
+FILE 2651 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\errno.h
+FILE 2652 f:\sp\public\sdk\inc\stralign.h
+FILE 2653 f:\sp\public\sdk\inc\poppack.h
+FILE 2654 f:\sp\public\sdk\inc\winsvc.h
+FILE 2655 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h
+FILE 2656 f:\sp\public\sdk\inc\windef.h
+FILE 2657 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\internal.h
+FILE 2658 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h
+FILE 2659 f:\sp\public\sdk\inc\winuser.h
+FILE 2660 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h
+FILE 2661 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sect_attribs.h
+FILE 2662 f:\sp\public\sdk\inc\mcx.h
+FILE 2663 f:\sp\public\sdk\inc\pshpack8.h
+FILE 2664 f:\sp\public\sdk\inc\guiddef.h
+FILE 2665 f:\sp\public\sdk\inc\winnt.h
+FILE 2666 f:\sp\public\sdk\inc\winnls.h
+FILE 2667 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h
+FILE 2668 f:\sp\public\sdk\inc\pshpack1.h
+FILE 2669 f:\sp\public\sdk\inc\winerror.h
+FILE 2670 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\rtcapi.h
+FILE 2671 f:\sp\public\sdk\inc\winreg.h
+FILE 2672 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\string.h
+FILE 2673 f:\sp\public\sdk\inc\ddbanned.h
+FILE 2674 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h
+FILE 2675 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h
+FILE 2676 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\rtcpriv.h
+FILE 2677 f:\sp\public\sdk\inc\tvout.h
+FILE 2678 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\malloc.h
+FILE 2679 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdbg.h
+FILE 2680 f:\sp\public\sdk\inc\poppack.h
+FILE 2681 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 2682 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 2683 f:\sp\public\sdk\inc\winnetwk.h
+FILE 2684 f:\sp\public\sdk\inc\imm.h
+FILE 2685 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 2686 f:\sp\public\sdk\inc\windef.h
+FILE 2687 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 2688 f:\sp\public\sdk\inc\pshpack1.h
+FILE 2689 f:\sp\public\sdk\inc\winver.h
+FILE 2690 f:\sp\public\sdk\inc\windows.h
+FILE 2691 f:\sp\public\sdk\inc\winnt.h
+FILE 2692 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 2693 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 2694 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 2695 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 2696 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 2697 f:\sp\public\sdk\inc\winreg.h
+FILE 2698 f:\sp\public\sdk\inc\winbase.h
+FILE 2699 f:\sp\vctools\crt_bld\self_x86\crt\src\wtombenv.c
+FILE 2700 f:\sp\public\sdk\inc\winerror.h
+FILE 2701 f:\sp\public\sdk\inc\pshpack8.h
+FILE 2702 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 2703 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 2704 f:\sp\public\sdk\inc\reason.h
+FILE 2705 f:\sp\public\sdk\inc\wincon.h
+FILE 2706 f:\sp\public\sdk\inc\ddbanned.h
+FILE 2707 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 2708 f:\sp\public\sdk\inc\pshpack2.h
+FILE 2709 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 2710 f:\sp\public\sdk\inc\mcx.h
+FILE 2711 f:\sp\public\sdk\inc\winuser.h
+FILE 2712 f:\sp\public\sdk\inc\winnls.h
+FILE 2713 f:\sp\public\sdk\inc\guiddef.h
+FILE 2714 f:\sp\public\sdk\inc\specstrings.h
+FILE 2715 f:\sp\public\sdk\inc\basetsd.h
+FILE 2716 f:\sp\public\sdk\inc\stralign.h
+FILE 2717 f:\sp\public\sdk\inc\tvout.h
+FILE 2718 f:\sp\public\sdk\inc\winsvc.h
+FILE 2719 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 2720 f:\sp\public\sdk\inc\wingdi.h
+FILE 2721 f:\sp\public\sdk\inc\pshpack4.h
+FILE 2722 f:\sp\public\sdk\inc\winnt.h
+FILE 2723 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 2724 f:\sp\public\sdk\inc\winreg.h
+FILE 2725 f:\sp\public\sdk\inc\winbase.h
+FILE 2726 f:\sp\public\sdk\inc\winerror.h
+FILE 2727 f:\sp\public\sdk\inc\pshpack8.h
+FILE 2728 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 2729 f:\sp\public\sdk\inc\reason.h
+FILE 2730 f:\sp\public\sdk\inc\wincon.h
+FILE 2731 f:\sp\vctools\crt_bld\self_x86\crt\src\float.h
+FILE 2732 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 2733 f:\sp\public\sdk\inc\pshpack2.h
+FILE 2734 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 2735 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 2736 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 2737 f:\sp\public\sdk\inc\mcx.h
+FILE 2738 f:\sp\public\sdk\inc\winuser.h
+FILE 2739 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 2740 f:\sp\public\sdk\inc\winnls.h
+FILE 2741 f:\sp\public\sdk\inc\guiddef.h
+FILE 2742 f:\sp\public\sdk\inc\windows.h
+FILE 2743 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 2744 f:\sp\public\sdk\inc\specstrings.h
+FILE 2745 f:\sp\public\sdk\inc\basetsd.h
+FILE 2746 f:\sp\public\sdk\inc\stralign.h
+FILE 2747 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 2748 f:\sp\vctools\crt_bld\self_x86\crt\src\signal.h
+FILE 2749 f:\sp\public\sdk\inc\tvout.h
+FILE 2750 f:\sp\public\sdk\inc\winsvc.h
+FILE 2751 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 2752 f:\sp\vctools\crt_bld\self_x86\crt\src\winxfltr.c
+FILE 2753 f:\sp\public\sdk\inc\wingdi.h
+FILE 2754 f:\sp\public\sdk\inc\pshpack4.h
+FILE 2755 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 2756 f:\sp\public\sdk\inc\poppack.h
+FILE 2757 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 2758 f:\sp\public\sdk\inc\winnetwk.h
+FILE 2759 f:\sp\public\sdk\inc\imm.h
+FILE 2760 f:\sp\public\sdk\inc\ddbanned.h
+FILE 2761 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 2762 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 2763 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 2764 f:\sp\public\sdk\inc\windef.h
+FILE 2765 f:\sp\vctools\crt_bld\self_x86\crt\src\crtwrn.h
+FILE 2766 f:\sp\public\sdk\inc\pshpack1.h
+FILE 2767 f:\sp\public\sdk\inc\winver.h
+FILE 2768 f:\sp\public\sdk\inc\winnetwk.h
+FILE 2769 f:\sp\public\sdk\inc\imm.h
+FILE 2770 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 2771 f:\sp\public\sdk\inc\windef.h
+FILE 2772 f:\sp\public\sdk\inc\pshpack1.h
+FILE 2773 f:\sp\public\sdk\inc\winver.h
+FILE 2774 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 2775 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 2776 f:\sp\public\sdk\inc\winnt.h
+FILE 2777 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 2778 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 2779 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 2780 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 2781 f:\sp\public\sdk\inc\winreg.h
+FILE 2782 f:\sp\public\sdk\inc\winbase.h
+FILE 2783 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 2784 f:\sp\public\sdk\inc\winerror.h
+FILE 2785 f:\sp\vctools\crt_bld\self_x86\crt\src\winsig.c
+FILE 2786 f:\sp\public\sdk\inc\pshpack8.h
+FILE 2787 f:\sp\public\sdk\inc\reason.h
+FILE 2788 f:\sp\public\sdk\inc\wincon.h
+FILE 2789 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 2790 f:\sp\public\sdk\inc\pshpack2.h
+FILE 2791 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 2792 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 2793 f:\sp\public\sdk\inc\mcx.h
+FILE 2794 f:\sp\public\sdk\inc\winuser.h
+FILE 2795 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 2796 f:\sp\public\sdk\inc\winnls.h
+FILE 2797 f:\sp\public\sdk\inc\guiddef.h
+FILE 2798 f:\sp\public\sdk\inc\windows.h
+FILE 2799 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 2800 f:\sp\public\sdk\inc\specstrings.h
+FILE 2801 f:\sp\public\sdk\inc\ddbanned.h
+FILE 2802 f:\sp\public\sdk\inc\basetsd.h
+FILE 2803 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 2804 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 2805 f:\sp\public\sdk\inc\stralign.h
+FILE 2806 f:\sp\vctools\crt_bld\self_x86\crt\src\signal.h
+FILE 2807 f:\sp\public\sdk\inc\tvout.h
+FILE 2808 f:\sp\public\sdk\inc\winsvc.h
+FILE 2809 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 2810 f:\sp\public\sdk\inc\wingdi.h
+FILE 2811 f:\sp\vctools\crt_bld\self_x86\crt\src\float.h
+FILE 2812 f:\sp\vctools\crt_bld\self_x86\crt\src\crtwrn.h
+FILE 2813 f:\sp\public\sdk\inc\pshpack4.h
+FILE 2814 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 2815 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 2816 f:\sp\public\sdk\inc\poppack.h
+FILE 2817 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 2818 f:\sp\public\sdk\inc\wincon.h
+FILE 2819 f:\sp\public\sdk\inc\imm.h
+FILE 2820 f:\sp\public\sdk\inc\winbase.h
+FILE 2821 f:\sp\public\sdk\inc\wingdi.h
+FILE 2822 f:\sp\public\sdk\inc\winver.h
+FILE 2823 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 2824 f:\sp\public\sdk\inc\windows.h
+FILE 2825 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 2826 f:\sp\public\sdk\inc\pshpack2.h
+FILE 2827 f:\sp\public\sdk\inc\reason.h
+FILE 2828 f:\sp\vctools\crt_bld\self_x86\crt\src\w_str.c
+FILE 2829 f:\sp\public\sdk\inc\specstrings.h
+FILE 2830 f:\sp\public\sdk\inc\basetsd.h
+FILE 2831 f:\sp\public\sdk\inc\pshpack4.h
+FILE 2832 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 2833 f:\sp\public\sdk\inc\winnetwk.h
+FILE 2834 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 2835 f:\sp\public\sdk\inc\stralign.h
+FILE 2836 f:\sp\public\sdk\inc\poppack.h
+FILE 2837 f:\sp\public\sdk\inc\winsvc.h
+FILE 2838 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 2839 f:\sp\public\sdk\inc\windef.h
+FILE 2840 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 2841 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 2842 f:\sp\public\sdk\inc\winuser.h
+FILE 2843 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 2844 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 2845 f:\sp\public\sdk\inc\mcx.h
+FILE 2846 f:\sp\public\sdk\inc\pshpack8.h
+FILE 2847 f:\sp\public\sdk\inc\guiddef.h
+FILE 2848 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 2849 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 2850 f:\sp\public\sdk\inc\winnt.h
+FILE 2851 f:\sp\public\sdk\inc\winnls.h
+FILE 2852 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 2853 f:\sp\public\sdk\inc\pshpack1.h
+FILE 2854 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h
+FILE 2855 f:\sp\public\sdk\inc\winerror.h
+FILE 2856 f:\sp\public\sdk\inc\winreg.h
+FILE 2857 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 2858 f:\sp\public\sdk\inc\ddbanned.h
+FILE 2859 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 2860 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 2861 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 2862 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 2863 f:\sp\public\sdk\inc\tvout.h
+FILE 2864 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 2865 f:\sp\public\sdk\inc\wincon.h
+FILE 2866 f:\sp\public\sdk\inc\imm.h
+FILE 2867 f:\sp\public\sdk\inc\winbase.h
+FILE 2868 f:\sp\public\sdk\inc\wingdi.h
+FILE 2869 f:\sp\public\sdk\inc\winver.h
+FILE 2870 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 2871 f:\sp\public\sdk\inc\windows.h
+FILE 2872 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 2873 f:\sp\public\sdk\inc\pshpack2.h
+FILE 2874 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 2875 f:\sp\public\sdk\inc\reason.h
+FILE 2876 f:\sp\vctools\crt_bld\self_x86\crt\src\w_loc.c
+FILE 2877 f:\sp\public\sdk\inc\specstrings.h
+FILE 2878 f:\sp\public\sdk\inc\basetsd.h
+FILE 2879 f:\sp\public\sdk\inc\pshpack4.h
+FILE 2880 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h
+FILE 2881 f:\sp\public\sdk\inc\winnetwk.h
+FILE 2882 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 2883 f:\sp\public\sdk\inc\stralign.h
+FILE 2884 f:\sp\public\sdk\inc\poppack.h
+FILE 2885 f:\sp\public\sdk\inc\winsvc.h
+FILE 2886 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 2887 f:\sp\public\sdk\inc\windef.h
+FILE 2888 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 2889 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 2890 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 2891 f:\sp\public\sdk\inc\winuser.h
+FILE 2892 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 2893 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 2894 f:\sp\public\sdk\inc\mcx.h
+FILE 2895 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 2896 f:\sp\public\sdk\inc\pshpack8.h
+FILE 2897 f:\sp\public\sdk\inc\guiddef.h
+FILE 2898 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 2899 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 2900 f:\sp\public\sdk\inc\winnt.h
+FILE 2901 f:\sp\public\sdk\inc\winnls.h
+FILE 2902 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 2903 f:\sp\public\sdk\inc\pshpack1.h
+FILE 2904 f:\sp\public\sdk\inc\winerror.h
+FILE 2905 f:\sp\public\sdk\inc\winreg.h
+FILE 2906 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 2907 f:\sp\public\sdk\inc\ddbanned.h
+FILE 2908 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 2909 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 2910 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 2911 f:\sp\public\sdk\inc\tvout.h
+FILE 2912 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 2913 f:\sp\public\sdk\inc\poppack.h
+FILE 2914 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 2915 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 2916 f:\sp\public\sdk\inc\winnetwk.h
+FILE 2917 f:\sp\public\sdk\inc\imm.h
+FILE 2918 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 2919 f:\sp\public\sdk\inc\windef.h
+FILE 2920 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 2921 f:\sp\vctools\crt_bld\self_x86\crt\src\wchar.h
+FILE 2922 f:\sp\public\sdk\inc\pshpack1.h
+FILE 2923 f:\sp\public\sdk\inc\winver.h
+FILE 2924 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 2925 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h
+FILE 2926 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 2927 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 2928 f:\sp\public\sdk\inc\winnt.h
+FILE 2929 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 2930 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 2931 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 2932 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 2933 f:\sp\public\sdk\inc\winreg.h
+FILE 2934 f:\sp\vctools\crt_bld\self_x86\crt\src\convrtcp.c
+FILE 2935 f:\sp\public\sdk\inc\winbase.h
+FILE 2936 f:\sp\public\sdk\inc\winerror.h
+FILE 2937 f:\sp\public\sdk\inc\pshpack8.h
+FILE 2938 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 2939 f:\sp\public\sdk\inc\reason.h
+FILE 2940 f:\sp\public\sdk\inc\wincon.h
+FILE 2941 f:\sp\public\sdk\inc\ddbanned.h
+FILE 2942 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 2943 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 2944 f:\sp\public\sdk\inc\pshpack2.h
+FILE 2945 f:\sp\public\sdk\inc\mcx.h
+FILE 2946 f:\sp\public\sdk\inc\winuser.h
+FILE 2947 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 2948 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl
+FILE 2949 f:\sp\public\sdk\inc\winnls.h
+FILE 2950 f:\sp\public\sdk\inc\guiddef.h
+FILE 2951 f:\sp\public\sdk\inc\windows.h
+FILE 2952 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 2953 f:\sp\public\sdk\inc\specstrings.h
+FILE 2954 f:\sp\public\sdk\inc\basetsd.h
+FILE 2955 f:\sp\public\sdk\inc\stralign.h
+FILE 2956 f:\sp\public\sdk\inc\tvout.h
+FILE 2957 f:\sp\public\sdk\inc\winsvc.h
+FILE 2958 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 2959 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 2960 f:\sp\public\sdk\inc\wingdi.h
+FILE 2961 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 2962 f:\sp\public\sdk\inc\pshpack4.h
+FILE 2963 f:\sp\public\sdk\inc\winerror.h
+FILE 2964 f:\sp\public\sdk\inc\pshpack8.h
+FILE 2965 f:\sp\public\sdk\inc\reason.h
+FILE 2966 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h
+FILE 2967 f:\sp\public\sdk\inc\wincon.h
+FILE 2968 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h
+FILE 2969 f:\sp\public\sdk\inc\pshpack2.h
+FILE 2970 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 2971 f:\sp\public\sdk\inc\mcx.h
+FILE 2972 f:\sp\public\sdk\inc\winuser.h
+FILE 2973 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 2974 f:\sp\public\sdk\inc\winnls.h
+FILE 2975 f:\sp\public\sdk\inc\guiddef.h
+FILE 2976 f:\sp\public\sdk\inc\windows.h
+FILE 2977 f:\sp\vctools\crt_bld\self_x86\crt\src\mbctype.h
+FILE 2978 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 2979 f:\sp\public\sdk\inc\specstrings.h
+FILE 2980 f:\sp\public\sdk\inc\basetsd.h
+FILE 2981 f:\sp\public\sdk\inc\stralign.h
+FILE 2982 f:\sp\public\sdk\inc\tvout.h
+FILE 2983 f:\sp\public\sdk\inc\winsvc.h
+FILE 2984 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 2985 f:\sp\public\sdk\inc\wingdi.h
+FILE 2986 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 2987 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 2988 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 2989 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 2990 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 2991 f:\sp\public\sdk\inc\pshpack4.h
+FILE 2992 f:\sp\public\sdk\inc\poppack.h
+FILE 2993 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 2994 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 2995 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.c
+FILE 2996 f:\sp\public\sdk\inc\winnetwk.h
+FILE 2997 f:\sp\public\sdk\inc\imm.h
+FILE 2998 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 2999 f:\sp\public\sdk\inc\windef.h
+FILE 3000 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 3001 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 3002 f:\sp\public\sdk\inc\pshpack1.h
+FILE 3003 f:\sp\public\sdk\inc\ddbanned.h
+FILE 3004 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 3005 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 3006 f:\sp\public\sdk\inc\winver.h
+FILE 3007 f:\sp\public\sdk\inc\winnt.h
+FILE 3008 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 3009 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 3010 f:\sp\public\sdk\inc\winreg.h
+FILE 3011 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 3012 f:\sp\public\sdk\inc\winbase.h
+FILE 3013 f:\sp\public\sdk\inc\poppack.h
+FILE 3014 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h
+FILE 3015 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h
+FILE 3016 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 3017 f:\sp\public\sdk\inc\winnetwk.h
+FILE 3018 f:\sp\public\sdk\inc\imm.h
+FILE 3019 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 3020 f:\sp\public\sdk\inc\windef.h
+FILE 3021 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h
+FILE 3022 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 3023 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 3024 f:\sp\public\sdk\inc\pshpack1.h
+FILE 3025 f:\sp\public\sdk\inc\winver.h
+FILE 3026 f:\sp\public\sdk\inc\windows.h
+FILE 3027 f:\sp\public\sdk\inc\winnt.h
+FILE 3028 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 3029 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h
+FILE 3030 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 3031 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 3032 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 3033 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 3034 f:\sp\public\sdk\inc\winreg.h
+FILE 3035 f:\sp\public\sdk\inc\winbase.h
+FILE 3036 f:\sp\vctools\crt_bld\self_x86\crt\src\setenv.c
+FILE 3037 f:\sp\public\sdk\inc\winerror.h
+FILE 3038 f:\sp\public\sdk\inc\pshpack8.h
+FILE 3039 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 3040 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 3041 f:\sp\public\sdk\inc\reason.h
+FILE 3042 f:\sp\public\sdk\inc\wincon.h
+FILE 3043 f:\sp\public\sdk\inc\ddbanned.h
+FILE 3044 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 3045 f:\sp\public\sdk\inc\pshpack2.h
+FILE 3046 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 3047 f:\sp\public\sdk\inc\mcx.h
+FILE 3048 f:\sp\public\sdk\inc\winuser.h
+FILE 3049 f:\sp\public\sdk\inc\winnls.h
+FILE 3050 f:\sp\public\sdk\inc\guiddef.h
+FILE 3051 f:\sp\public\sdk\inc\specstrings.h
+FILE 3052 f:\sp\public\sdk\inc\basetsd.h
+FILE 3053 f:\sp\public\sdk\inc\stralign.h
+FILE 3054 f:\sp\public\sdk\inc\tvout.h
+FILE 3055 f:\sp\public\sdk\inc\winsvc.h
+FILE 3056 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 3057 f:\sp\public\sdk\inc\wingdi.h
+FILE 3058 f:\sp\public\sdk\inc\pshpack4.h
+FILE 3059 f:\sp\public\sdk\inc\poppack.h
+FILE 3060 f:\sp\public\sdk\inc\winnetwk.h
+FILE 3061 f:\sp\public\sdk\inc\imm.h
+FILE 3062 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 3063 f:\sp\public\sdk\inc\windef.h
+FILE 3064 f:\sp\public\sdk\inc\pshpack1.h
+FILE 3065 f:\sp\public\sdk\inc\winver.h
+FILE 3066 f:\sp\public\sdk\inc\windows.h
+FILE 3067 f:\sp\public\sdk\inc\winnt.h
+FILE 3068 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 3069 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 3070 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 3071 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 3072 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 3073 f:\sp\public\sdk\inc\winreg.h
+FILE 3074 f:\sp\public\sdk\inc\winbase.h
+FILE 3075 f:\sp\vctools\crt_bld\self_x86\crt\src\rand_s.c
+FILE 3076 f:\sp\public\sdk\inc\winerror.h
+FILE 3077 f:\sp\public\sdk\inc\pshpack8.h
+FILE 3078 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 3079 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 3080 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 3081 f:\sp\public\sdk\inc\reason.h
+FILE 3082 f:\sp\public\sdk\inc\wincon.h
+FILE 3083 f:\sp\public\sdk\inc\ddbanned.h
+FILE 3084 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 3085 f:\sp\public\sdk\inc\pshpack2.h
+FILE 3086 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 3087 f:\sp\public\sdk\inc\mcx.h
+FILE 3088 f:\sp\public\sdk\inc\winuser.h
+FILE 3089 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 3090 f:\sp\public\sdk\inc\winnls.h
+FILE 3091 f:\sp\public\sdk\inc\guiddef.h
+FILE 3092 f:\sp\public\sdk\inc\specstrings.h
+FILE 3093 f:\sp\public\sdk\inc\basetsd.h
+FILE 3094 f:\sp\public\sdk\inc\stralign.h
+FILE 3095 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 3096 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 3097 f:\sp\public\sdk\inc\tvout.h
+FILE 3098 f:\sp\public\sdk\inc\winsvc.h
+FILE 3099 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 3100 f:\sp\public\sdk\inc\wingdi.h
+FILE 3101 f:\sp\public\sdk\inc\pshpack4.h
+FILE 3102 f:\sp\public\sdk\inc\poppack.h
+FILE 3103 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h
+FILE 3104 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 3105 f:\sp\public\sdk\inc\winnetwk.h
+FILE 3106 f:\sp\public\sdk\inc\imm.h
+FILE 3107 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 3108 f:\sp\public\sdk\inc\windef.h
+FILE 3109 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 3110 f:\sp\public\sdk\inc\pshpack1.h
+FILE 3111 f:\sp\public\sdk\inc\winver.h
+FILE 3112 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 3113 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 3114 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 3115 f:\sp\public\sdk\inc\winnt.h
+FILE 3116 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 3117 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 3118 f:\sp\public\sdk\inc\winreg.h
+FILE 3119 f:\sp\vctools\crt_bld\self_x86\crt\src\purevirt.c
+FILE 3120 f:\sp\public\sdk\inc\winbase.h
+FILE 3121 f:\sp\public\sdk\inc\winerror.h
+FILE 3122 f:\sp\public\sdk\inc\pshpack8.h
+FILE 3123 f:\sp\public\sdk\inc\reason.h
+FILE 3124 f:\sp\public\sdk\inc\wincon.h
+FILE 3125 f:\sp\public\sdk\inc\ddbanned.h
+FILE 3126 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 3127 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 3128 f:\sp\public\sdk\inc\pshpack2.h
+FILE 3129 f:\sp\public\sdk\inc\mcx.h
+FILE 3130 f:\sp\public\sdk\inc\winuser.h
+FILE 3131 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 3132 f:\sp\public\sdk\inc\winnls.h
+FILE 3133 f:\sp\public\sdk\inc\guiddef.h
+FILE 3134 f:\sp\public\sdk\inc\windows.h
+FILE 3135 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 3136 f:\sp\public\sdk\inc\specstrings.h
+FILE 3137 f:\sp\public\sdk\inc\basetsd.h
+FILE 3138 f:\sp\public\sdk\inc\stralign.h
+FILE 3139 f:\sp\public\sdk\inc\tvout.h
+FILE 3140 f:\sp\public\sdk\inc\winsvc.h
+FILE 3141 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 3142 f:\sp\public\sdk\inc\wingdi.h
+FILE 3143 f:\sp\public\sdk\inc\pshpack4.h
+FILE 3144 f:\sp\public\sdk\inc\poppack.h
+FILE 3145 f:\sp\public\sdk\inc\winnetwk.h
+FILE 3146 f:\sp\public\sdk\inc\imm.h
+FILE 3147 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 3148 f:\sp\public\sdk\inc\windef.h
+FILE 3149 f:\sp\public\sdk\inc\pshpack1.h
+FILE 3150 f:\sp\public\sdk\inc\winver.h
+FILE 3151 f:\sp\public\sdk\inc\windows.h
+FILE 3152 f:\sp\public\sdk\inc\winnt.h
+FILE 3153 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 3154 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 3155 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 3156 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 3157 f:\sp\public\sdk\inc\winreg.h
+FILE 3158 f:\sp\public\sdk\inc\winbase.h
+FILE 3159 f:\sp\vctools\crt_bld\self_x86\crt\src\pesect.c
+FILE 3160 f:\sp\public\sdk\inc\winerror.h
+FILE 3161 f:\sp\public\sdk\inc\pshpack8.h
+FILE 3162 f:\sp\public\sdk\inc\reason.h
+FILE 3163 f:\sp\public\sdk\inc\wincon.h
+FILE 3164 f:\sp\public\sdk\inc\ddbanned.h
+FILE 3165 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 3166 f:\sp\public\sdk\inc\pshpack2.h
+FILE 3167 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 3168 f:\sp\public\sdk\inc\mcx.h
+FILE 3169 f:\sp\public\sdk\inc\winuser.h
+FILE 3170 f:\sp\public\sdk\inc\winnls.h
+FILE 3171 f:\sp\public\sdk\inc\guiddef.h
+FILE 3172 f:\sp\public\sdk\inc\specstrings.h
+FILE 3173 f:\sp\public\sdk\inc\basetsd.h
+FILE 3174 f:\sp\public\sdk\inc\stralign.h
+FILE 3175 f:\sp\public\sdk\inc\tvout.h
+FILE 3176 f:\sp\public\sdk\inc\winsvc.h
+FILE 3177 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 3178 f:\sp\public\sdk\inc\wingdi.h
+FILE 3179 f:\sp\public\sdk\inc\pshpack4.h
+FILE 3180 f:\sp\public\sdk\inc\winerror.h
+FILE 3181 f:\sp\public\sdk\inc\pshpack1.h
+FILE 3182 f:\sp\public\sdk\inc\pshpack8.h
+FILE 3183 f:\sp\public\sdk\inc\winver.h
+FILE 3184 f:\sp\public\sdk\inc\pshpack2.h
+FILE 3185 f:\sp\public\sdk\inc\winreg.h
+FILE 3186 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 3187 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 3188 f:\sp\public\sdk\inc\guiddef.h
+FILE 3189 f:\sp\public\sdk\inc\windows.h
+FILE 3190 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 3191 f:\sp\vctools\crt_bld\self_x86\crt\src\mbctype.h
+FILE 3192 f:\sp\public\sdk\inc\specstrings.h
+FILE 3193 f:\sp\public\sdk\inc\basetsd.h
+FILE 3194 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 3195 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 3196 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 3197 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 3198 f:\sp\public\sdk\inc\pshpack4.h
+FILE 3199 f:\sp\public\sdk\inc\reason.h
+FILE 3200 f:\sp\public\sdk\inc\wincon.h
+FILE 3201 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 3202 f:\sp\public\sdk\inc\poppack.h
+FILE 3203 f:\sp\public\sdk\inc\mcx.h
+FILE 3204 f:\sp\public\sdk\inc\winuser.h
+FILE 3205 f:\sp\public\sdk\inc\winnls.h
+FILE 3206 f:\sp\vctools\crt_bld\self_x86\crt\src\nlsdata2.c
+FILE 3207 f:\sp\public\sdk\inc\stralign.h
+FILE 3208 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 3209 f:\sp\public\sdk\inc\windef.h
+FILE 3210 f:\sp\public\sdk\inc\tvout.h
+FILE 3211 f:\sp\public\sdk\inc\winsvc.h
+FILE 3212 f:\sp\public\sdk\inc\wingdi.h
+FILE 3213 f:\sp\public\sdk\inc\ddbanned.h
+FILE 3214 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 3215 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 3216 f:\sp\public\sdk\inc\winnt.h
+FILE 3217 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 3218 f:\sp\public\sdk\inc\winnetwk.h
+FILE 3219 f:\sp\public\sdk\inc\imm.h
+FILE 3220 f:\sp\public\sdk\inc\winbase.h
+FILE 3221 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 3222 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 3223 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 3224 f:\sp\vctools\crt_bld\self_x86\crt\src\nlsdata1.c
+FILE 3225 f:\sp\public\sdk\inc\ddbanned.h
+FILE 3226 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 3227 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 3228 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 3229 f:\sp\vctools\crt_bld\self_x86\crt\src\nlsint.h
+FILE 3230 f:\sp\public\sdk\inc\reason.h
+FILE 3231 f:\sp\public\sdk\inc\wincon.h
+FILE 3232 f:\sp\public\sdk\inc\pshpack2.h
+FILE 3233 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 3234 f:\sp\public\sdk\inc\mcx.h
+FILE 3235 f:\sp\public\sdk\inc\winuser.h
+FILE 3236 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 3237 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h
+FILE 3238 f:\sp\public\sdk\inc\winnls.h
+FILE 3239 f:\sp\public\sdk\inc\guiddef.h
+FILE 3240 f:\sp\public\sdk\inc\windows.h
+FILE 3241 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 3242 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 3243 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 3244 f:\sp\public\sdk\inc\specstrings.h
+FILE 3245 f:\sp\public\sdk\inc\basetsd.h
+FILE 3246 f:\sp\public\sdk\inc\stralign.h
+FILE 3247 f:\sp\public\sdk\inc\tvout.h
+FILE 3248 f:\sp\public\sdk\inc\winsvc.h
+FILE 3249 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 3250 f:\sp\public\sdk\inc\wingdi.h
+FILE 3251 f:\sp\public\sdk\inc\pshpack4.h
+FILE 3252 f:\sp\public\sdk\inc\poppack.h
+FILE 3253 f:\sp\vctools\crt_bld\self_x86\crt\src\sect_attribs.h
+FILE 3254 f:\sp\public\sdk\inc\winnetwk.h
+FILE 3255 f:\sp\public\sdk\inc\imm.h
+FILE 3256 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 3257 f:\sp\public\sdk\inc\windef.h
+FILE 3258 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 3259 f:\sp\vctools\crt_bld\self_x86\crt\src\onexit.c
+FILE 3260 f:\sp\public\sdk\inc\pshpack1.h
+FILE 3261 f:\sp\public\sdk\inc\winver.h
+FILE 3262 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 3263 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 3264 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 3265 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 3266 f:\sp\public\sdk\inc\winnt.h
+FILE 3267 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 3268 f:\sp\public\sdk\inc\ddbanned.h
+FILE 3269 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 3270 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 3271 f:\sp\public\sdk\inc\winreg.h
+FILE 3272 f:\sp\public\sdk\inc\winbase.h
+FILE 3273 f:\sp\public\sdk\inc\winerror.h
+FILE 3274 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 3275 f:\sp\public\sdk\inc\pshpack8.h
+FILE 3276 f:\sp\public\sdk\inc\winbase.h
+FILE 3277 f:\sp\public\sdk\inc\winerror.h
+FILE 3278 f:\sp\public\sdk\inc\pshpack1.h
+FILE 3279 f:\sp\public\sdk\inc\pshpack8.h
+FILE 3280 f:\sp\public\sdk\inc\winver.h
+FILE 3281 f:\sp\public\sdk\inc\pshpack2.h
+FILE 3282 f:\sp\public\sdk\inc\winreg.h
+FILE 3283 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 3284 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 3285 f:\sp\public\sdk\inc\guiddef.h
+FILE 3286 f:\sp\public\sdk\inc\windows.h
+FILE 3287 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 3288 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 3289 f:\sp\public\sdk\inc\specstrings.h
+FILE 3290 f:\sp\public\sdk\inc\basetsd.h
+FILE 3291 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 3292 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 3293 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 3294 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 3295 f:\sp\public\sdk\inc\pshpack4.h
+FILE 3296 f:\sp\public\sdk\inc\reason.h
+FILE 3297 f:\sp\public\sdk\inc\wincon.h
+FILE 3298 f:\sp\public\sdk\inc\poppack.h
+FILE 3299 f:\sp\public\sdk\inc\mcx.h
+FILE 3300 f:\sp\public\sdk\inc\winuser.h
+FILE 3301 f:\sp\public\sdk\inc\winnls.h
+FILE 3302 f:\sp\vctools\crt_bld\self_x86\crt\src\lconv.c
+FILE 3303 f:\sp\public\sdk\inc\stralign.h
+FILE 3304 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 3305 f:\sp\public\sdk\inc\windef.h
+FILE 3306 f:\sp\public\sdk\inc\tvout.h
+FILE 3307 f:\sp\public\sdk\inc\winsvc.h
+FILE 3308 f:\sp\public\sdk\inc\wingdi.h
+FILE 3309 f:\sp\public\sdk\inc\ddbanned.h
+FILE 3310 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 3311 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 3312 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 3313 f:\sp\public\sdk\inc\winnt.h
+FILE 3314 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 3315 f:\sp\public\sdk\inc\winnetwk.h
+FILE 3316 f:\sp\public\sdk\inc\imm.h
+FILE 3317 f:\sp\public\sdk\inc\guiddef.h
+FILE 3318 f:\sp\public\sdk\inc\winnt.h
+FILE 3319 f:\sp\public\sdk\inc\winnls.h
+FILE 3320 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 3321 f:\sp\public\sdk\inc\pshpack1.h
+FILE 3322 f:\sp\public\sdk\inc\winerror.h
+FILE 3323 f:\sp\public\sdk\inc\winreg.h
+FILE 3324 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 3325 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h
+FILE 3326 f:\sp\public\sdk\inc\tvout.h
+FILE 3327 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 3328 f:\sp\vctools\crt_bld\self_x86\crt\src\invarg.c
+FILE 3329 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 3330 f:\sp\public\sdk\inc\wincon.h
+FILE 3331 f:\sp\public\sdk\inc\imm.h
+FILE 3332 f:\sp\public\sdk\inc\winbase.h
+FILE 3333 f:\sp\public\sdk\inc\wingdi.h
+FILE 3334 f:\sp\public\sdk\inc\winver.h
+FILE 3335 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 3336 f:\sp\public\sdk\inc\windows.h
+FILE 3337 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 3338 f:\sp\public\sdk\inc\pshpack2.h
+FILE 3339 f:\sp\public\sdk\inc\reason.h
+FILE 3340 f:\sp\vctools\crt_bld\self_x86\crt\src\sect_attribs.h
+FILE 3341 f:\sp\public\sdk\inc\specstrings.h
+FILE 3342 f:\sp\public\sdk\inc\basetsd.h
+FILE 3343 f:\sp\public\sdk\inc\pshpack4.h
+FILE 3344 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 3345 f:\sp\public\sdk\inc\winnetwk.h
+FILE 3346 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 3347 f:\sp\public\sdk\inc\stralign.h
+FILE 3348 f:\sp\public\sdk\inc\poppack.h
+FILE 3349 f:\sp\public\sdk\inc\winsvc.h
+FILE 3350 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 3351 f:\sp\public\sdk\inc\windef.h
+FILE 3352 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 3353 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 3354 f:\sp\public\sdk\inc\winuser.h
+FILE 3355 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 3356 f:\sp\public\sdk\inc\ddbanned.h
+FILE 3357 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 3358 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 3359 f:\sp\public\sdk\inc\mcx.h
+FILE 3360 f:\sp\public\sdk\inc\pshpack8.h
+FILE 3361 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 3362 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 3363 f:\sp\public\sdk\inc\pshpack4.h
+FILE 3364 f:\sp\public\sdk\inc\poppack.h
+FILE 3365 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 3366 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 3367 f:\sp\public\sdk\inc\winnetwk.h
+FILE 3368 f:\sp\public\sdk\inc\imm.h
+FILE 3369 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 3370 f:\sp\public\sdk\inc\windef.h
+FILE 3371 f:\sp\public\sdk\inc\pshpack1.h
+FILE 3372 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 3373 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 3374 f:\sp\public\sdk\inc\winver.h
+FILE 3375 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 3376 f:\sp\public\sdk\inc\winnt.h
+FILE 3377 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 3378 f:\sp\public\sdk\inc\winreg.h
+FILE 3379 f:\sp\vctools\crt_bld\self_x86\crt\src\inittime.c
+FILE 3380 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 3381 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 3382 f:\sp\public\sdk\inc\winbase.h
+FILE 3383 f:\sp\public\sdk\inc\winerror.h
+FILE 3384 f:\sp\public\sdk\inc\pshpack8.h
+FILE 3385 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 3386 f:\sp\public\sdk\inc\reason.h
+FILE 3387 f:\sp\public\sdk\inc\ddbanned.h
+FILE 3388 f:\sp\public\sdk\inc\wincon.h
+FILE 3389 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 3390 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 3391 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 3392 f:\sp\public\sdk\inc\pshpack2.h
+FILE 3393 f:\sp\public\sdk\inc\mcx.h
+FILE 3394 f:\sp\public\sdk\inc\winuser.h
+FILE 3395 f:\sp\public\sdk\inc\winnls.h
+FILE 3396 f:\sp\public\sdk\inc\guiddef.h
+FILE 3397 f:\sp\public\sdk\inc\stralign.h
+FILE 3398 f:\sp\public\sdk\inc\specstrings.h
+FILE 3399 f:\sp\public\sdk\inc\basetsd.h
+FILE 3400 f:\sp\public\sdk\inc\windows.h
+FILE 3401 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 3402 f:\sp\public\sdk\inc\tvout.h
+FILE 3403 f:\sp\public\sdk\inc\winsvc.h
+FILE 3404 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 3405 f:\sp\public\sdk\inc\wingdi.h
+FILE 3406 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 3407 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 3408 f:\sp\public\sdk\inc\pshpack4.h
+FILE 3409 f:\sp\public\sdk\inc\poppack.h
+FILE 3410 f:\sp\public\sdk\inc\winnt.h
+FILE 3411 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 3412 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 3413 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 3414 f:\sp\public\sdk\inc\winnetwk.h
+FILE 3415 f:\sp\public\sdk\inc\imm.h
+FILE 3416 f:\sp\public\sdk\inc\pshpack1.h
+FILE 3417 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 3418 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 3419 f:\sp\public\sdk\inc\winver.h
+FILE 3420 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 3421 f:\sp\public\sdk\inc\guiddef.h
+FILE 3422 f:\sp\public\sdk\inc\specstrings.h
+FILE 3423 f:\sp\public\sdk\inc\basetsd.h
+FILE 3424 f:\sp\public\sdk\inc\windows.h
+FILE 3425 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 3426 f:\sp\public\sdk\inc\winreg.h
+FILE 3427 f:\sp\vctools\crt_bld\self_x86\crt\src\initnum.c
+FILE 3428 f:\sp\vctools\crt_bld\self_x86\crt\src\nlsint.h
+FILE 3429 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 3430 f:\sp\public\sdk\inc\winbase.h
+FILE 3431 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 3432 f:\sp\public\sdk\inc\winerror.h
+FILE 3433 f:\sp\public\sdk\inc\pshpack8.h
+FILE 3434 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 3435 f:\sp\public\sdk\inc\reason.h
+FILE 3436 f:\sp\public\sdk\inc\ddbanned.h
+FILE 3437 f:\sp\public\sdk\inc\wincon.h
+FILE 3438 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 3439 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 3440 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 3441 f:\sp\public\sdk\inc\pshpack2.h
+FILE 3442 f:\sp\public\sdk\inc\mcx.h
+FILE 3443 f:\sp\public\sdk\inc\winuser.h
+FILE 3444 f:\sp\public\sdk\inc\winnls.h
+FILE 3445 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 3446 f:\sp\public\sdk\inc\windef.h
+FILE 3447 f:\sp\public\sdk\inc\stralign.h
+FILE 3448 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 3449 f:\sp\public\sdk\inc\tvout.h
+FILE 3450 f:\sp\public\sdk\inc\winsvc.h
+FILE 3451 f:\sp\public\sdk\inc\wingdi.h
+FILE 3452 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 3453 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 3454 f:\sp\public\sdk\inc\pshpack4.h
+FILE 3455 f:\sp\public\sdk\inc\poppack.h
+FILE 3456 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 3457 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 3458 f:\sp\public\sdk\inc\winnetwk.h
+FILE 3459 f:\sp\public\sdk\inc\imm.h
+FILE 3460 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 3461 f:\sp\public\sdk\inc\windef.h
+FILE 3462 f:\sp\public\sdk\inc\pshpack1.h
+FILE 3463 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 3464 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 3465 f:\sp\public\sdk\inc\winver.h
+FILE 3466 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 3467 f:\sp\public\sdk\inc\winnt.h
+FILE 3468 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 3469 f:\sp\public\sdk\inc\winreg.h
+FILE 3470 f:\sp\vctools\crt_bld\self_x86\crt\src\initmon.c
+FILE 3471 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 3472 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 3473 f:\sp\public\sdk\inc\winbase.h
+FILE 3474 f:\sp\public\sdk\inc\winerror.h
+FILE 3475 f:\sp\public\sdk\inc\pshpack8.h
+FILE 3476 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 3477 f:\sp\public\sdk\inc\reason.h
+FILE 3478 f:\sp\public\sdk\inc\ddbanned.h
+FILE 3479 f:\sp\public\sdk\inc\wincon.h
+FILE 3480 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 3481 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 3482 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 3483 f:\sp\public\sdk\inc\pshpack2.h
+FILE 3484 f:\sp\public\sdk\inc\mcx.h
+FILE 3485 f:\sp\public\sdk\inc\winuser.h
+FILE 3486 f:\sp\public\sdk\inc\winnls.h
+FILE 3487 f:\sp\public\sdk\inc\guiddef.h
+FILE 3488 f:\sp\public\sdk\inc\stralign.h
+FILE 3489 f:\sp\public\sdk\inc\specstrings.h
+FILE 3490 f:\sp\public\sdk\inc\basetsd.h
+FILE 3491 f:\sp\public\sdk\inc\windows.h
+FILE 3492 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 3493 f:\sp\public\sdk\inc\tvout.h
+FILE 3494 f:\sp\public\sdk\inc\winsvc.h
+FILE 3495 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 3496 f:\sp\public\sdk\inc\wingdi.h
+FILE 3497 f:\sp\public\sdk\inc\winbase.h
+FILE 3498 f:\sp\public\sdk\inc\winerror.h
+FILE 3499 f:\sp\public\sdk\inc\pshpack1.h
+FILE 3500 f:\sp\public\sdk\inc\pshpack8.h
+FILE 3501 f:\sp\public\sdk\inc\winver.h
+FILE 3502 f:\sp\public\sdk\inc\pshpack2.h
+FILE 3503 f:\sp\public\sdk\inc\winreg.h
+FILE 3504 f:\sp\public\sdk\inc\guiddef.h
+FILE 3505 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h
+FILE 3506 f:\sp\public\sdk\inc\specstrings.h
+FILE 3507 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 3508 f:\sp\public\sdk\inc\basetsd.h
+FILE 3509 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 3510 f:\sp\public\sdk\inc\windows.h
+FILE 3511 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 3512 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 3513 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 3514 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 3515 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 3516 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 3517 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 3518 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 3519 f:\sp\public\sdk\inc\pshpack4.h
+FILE 3520 f:\sp\public\sdk\inc\reason.h
+FILE 3521 f:\sp\public\sdk\inc\wincon.h
+FILE 3522 f:\sp\public\sdk\inc\poppack.h
+FILE 3523 f:\sp\vctools\crt_bld\self_x86\crt\src\inithelp.c
+FILE 3524 f:\sp\public\sdk\inc\mcx.h
+FILE 3525 f:\sp\public\sdk\inc\winuser.h
+FILE 3526 f:\sp\public\sdk\inc\winnls.h
+FILE 3527 f:\sp\public\sdk\inc\stralign.h
+FILE 3528 f:\sp\public\sdk\inc\tvout.h
+FILE 3529 f:\sp\public\sdk\inc\winsvc.h
+FILE 3530 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 3531 f:\sp\public\sdk\inc\wingdi.h
+FILE 3532 f:\sp\public\sdk\inc\windef.h
+FILE 3533 f:\sp\public\sdk\inc\ddbanned.h
+FILE 3534 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 3535 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 3536 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 3537 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 3538 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 3539 f:\sp\public\sdk\inc\winnetwk.h
+FILE 3540 f:\sp\public\sdk\inc\imm.h
+FILE 3541 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 3542 f:\sp\public\sdk\inc\winnt.h
+FILE 3543 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 3544 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 3545 f:\sp\public\sdk\inc\pshpack4.h
+FILE 3546 f:\sp\public\sdk\inc\poppack.h
+FILE 3547 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 3548 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 3549 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 3550 f:\sp\public\sdk\inc\winnetwk.h
+FILE 3551 f:\sp\public\sdk\inc\imm.h
+FILE 3552 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 3553 f:\sp\public\sdk\inc\windef.h
+FILE 3554 f:\sp\public\sdk\inc\pshpack1.h
+FILE 3555 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 3556 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 3557 f:\sp\public\sdk\inc\winver.h
+FILE 3558 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 3559 f:\sp\public\sdk\inc\winnt.h
+FILE 3560 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 3561 f:\sp\public\sdk\inc\winreg.h
+FILE 3562 f:\sp\vctools\crt_bld\self_x86\crt\src\initctyp.c
+FILE 3563 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h
+FILE 3564 f:\sp\public\sdk\inc\winbase.h
+FILE 3565 f:\sp\public\sdk\inc\winerror.h
+FILE 3566 f:\sp\public\sdk\inc\pshpack8.h
+FILE 3567 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 3568 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 3569 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 3570 f:\sp\public\sdk\inc\reason.h
+FILE 3571 f:\sp\public\sdk\inc\ddbanned.h
+FILE 3572 f:\sp\public\sdk\inc\wincon.h
+FILE 3573 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 3574 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 3575 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 3576 f:\sp\public\sdk\inc\pshpack2.h
+FILE 3577 f:\sp\public\sdk\inc\mcx.h
+FILE 3578 f:\sp\public\sdk\inc\winuser.h
+FILE 3579 f:\sp\public\sdk\inc\winnls.h
+FILE 3580 f:\sp\public\sdk\inc\guiddef.h
+FILE 3581 f:\sp\public\sdk\inc\stralign.h
+FILE 3582 f:\sp\public\sdk\inc\specstrings.h
+FILE 3583 f:\sp\public\sdk\inc\basetsd.h
+FILE 3584 f:\sp\public\sdk\inc\windows.h
+FILE 3585 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 3586 f:\sp\public\sdk\inc\tvout.h
+FILE 3587 f:\sp\public\sdk\inc\winsvc.h
+FILE 3588 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 3589 f:\sp\public\sdk\inc\wingdi.h
+FILE 3590 f:\sp\public\sdk\inc\poppack.h
+FILE 3591 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h
+FILE 3592 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 3593 f:\sp\public\sdk\inc\winnetwk.h
+FILE 3594 f:\sp\public\sdk\inc\imm.h
+FILE 3595 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 3596 f:\sp\public\sdk\inc\windef.h
+FILE 3597 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 3598 f:\sp\public\sdk\inc\pshpack1.h
+FILE 3599 f:\sp\public\sdk\inc\winver.h
+FILE 3600 f:\sp\public\sdk\inc\windows.h
+FILE 3601 f:\sp\public\sdk\inc\winnt.h
+FILE 3602 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 3603 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 3604 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 3605 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 3606 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 3607 f:\sp\public\sdk\inc\winreg.h
+FILE 3608 f:\sp\public\sdk\inc\winbase.h
+FILE 3609 f:\sp\vctools\crt_bld\self_x86\crt\src\initcrit.c
+FILE 3610 f:\sp\public\sdk\inc\winerror.h
+FILE 3611 f:\sp\public\sdk\inc\pshpack8.h
+FILE 3612 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 3613 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 3614 f:\sp\public\sdk\inc\reason.h
+FILE 3615 f:\sp\public\sdk\inc\wincon.h
+FILE 3616 f:\sp\public\sdk\inc\ddbanned.h
+FILE 3617 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 3618 f:\sp\public\sdk\inc\pshpack2.h
+FILE 3619 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 3620 f:\sp\public\sdk\inc\mcx.h
+FILE 3621 f:\sp\public\sdk\inc\winuser.h
+FILE 3622 f:\sp\public\sdk\inc\winnls.h
+FILE 3623 f:\sp\public\sdk\inc\guiddef.h
+FILE 3624 f:\sp\public\sdk\inc\specstrings.h
+FILE 3625 f:\sp\public\sdk\inc\basetsd.h
+FILE 3626 f:\sp\public\sdk\inc\stralign.h
+FILE 3627 f:\sp\public\sdk\inc\tvout.h
+FILE 3628 f:\sp\public\sdk\inc\winsvc.h
+FILE 3629 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 3630 f:\sp\public\sdk\inc\wingdi.h
+FILE 3631 f:\sp\public\sdk\inc\pshpack4.h
+FILE 3632 f:\sp\public\sdk\inc\poppack.h
+FILE 3633 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 3634 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 3635 f:\sp\public\sdk\inc\winnetwk.h
+FILE 3636 f:\sp\public\sdk\inc\imm.h
+FILE 3637 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 3638 f:\sp\public\sdk\inc\windef.h
+FILE 3639 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 3640 f:\sp\public\sdk\inc\pshpack1.h
+FILE 3641 f:\sp\public\sdk\inc\winver.h
+FILE 3642 f:\sp\public\sdk\inc\windows.h
+FILE 3643 f:\sp\public\sdk\inc\winnt.h
+FILE 3644 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 3645 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 3646 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 3647 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 3648 f:\sp\public\sdk\inc\winreg.h
+FILE 3649 f:\sp\public\sdk\inc\winbase.h
+FILE 3650 f:\sp\vctools\crt_bld\self_x86\crt\src\initcoll.c
+FILE 3651 f:\sp\public\sdk\inc\winerror.h
+FILE 3652 f:\sp\public\sdk\inc\pshpack8.h
+FILE 3653 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 3654 f:\sp\public\sdk\inc\reason.h
+FILE 3655 f:\sp\public\sdk\inc\wincon.h
+FILE 3656 f:\sp\public\sdk\inc\ddbanned.h
+FILE 3657 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 3658 f:\sp\public\sdk\inc\pshpack2.h
+FILE 3659 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 3660 f:\sp\public\sdk\inc\mcx.h
+FILE 3661 f:\sp\public\sdk\inc\winuser.h
+FILE 3662 f:\sp\public\sdk\inc\winnls.h
+FILE 3663 f:\sp\public\sdk\inc\guiddef.h
+FILE 3664 f:\sp\public\sdk\inc\specstrings.h
+FILE 3665 f:\sp\public\sdk\inc\basetsd.h
+FILE 3666 f:\sp\public\sdk\inc\stralign.h
+FILE 3667 f:\sp\public\sdk\inc\tvout.h
+FILE 3668 f:\sp\public\sdk\inc\winsvc.h
+FILE 3669 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 3670 f:\sp\public\sdk\inc\wingdi.h
+FILE 3671 f:\sp\public\sdk\inc\pshpack4.h
+FILE 3672 f:\sp\public\sdk\inc\poppack.h
+FILE 3673 f:\sp\public\sdk\inc\winnetwk.h
+FILE 3674 f:\sp\public\sdk\inc\imm.h
+FILE 3675 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 3676 f:\sp\public\sdk\inc\windef.h
+FILE 3677 f:\binaries.x86ret\vcboot\inc\mm3dnow.h
+FILE 3678 f:\sp\public\sdk\inc\pshpack1.h
+FILE 3679 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 3680 f:\sp\public\sdk\inc\winver.h
+FILE 3681 f:\sp\public\sdk\inc\windows.h
+FILE 3682 f:\sp\public\sdk\inc\winnt.h
+FILE 3683 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 3684 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 3685 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 3686 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 3687 f:\sp\public\sdk\inc\winreg.h
+FILE 3688 f:\sp\public\sdk\inc\winbase.h
+FILE 3689 f:\sp\vctools\crt_bld\self_x86\crt\src\gs_support.c
+FILE 3690 f:\sp\public\sdk\inc\winerror.h
+FILE 3691 f:\sp\public\sdk\inc\pshpack8.h
+FILE 3692 f:\sp\vctools\crt_bld\self_x86\crt\src\intrin.h
+FILE 3693 f:\sp\vctools\crt_bld\self_x86\crt\src\setjmp.h
+FILE 3694 f:\sp\public\sdk\inc\reason.h
+FILE 3695 f:\sp\public\sdk\inc\wincon.h
+FILE 3696 f:\sp\public\sdk\inc\ddbanned.h
+FILE 3697 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 3698 f:\sp\public\sdk\inc\pshpack2.h
+FILE 3699 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 3700 f:\sp\public\sdk\inc\mcx.h
+FILE 3701 f:\sp\public\sdk\inc\winuser.h
+FILE 3702 f:\sp\public\sdk\inc\winnls.h
+FILE 3703 f:\sp\public\sdk\inc\guiddef.h
+FILE 3704 f:\sp\public\sdk\inc\specstrings.h
+FILE 3705 f:\sp\public\sdk\inc\basetsd.h
+FILE 3706 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 3707 f:\sp\public\sdk\inc\stralign.h
+FILE 3708 f:\sp\public\sdk\inc\tvout.h
+FILE 3709 f:\sp\public\sdk\inc\winsvc.h
+FILE 3710 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 3711 f:\sp\public\sdk\inc\wingdi.h
+FILE 3712 f:\binaries.x86ret\vcboot\inc\emmintrin.h
+FILE 3713 f:\binaries.x86ret\vcboot\inc\xmmintrin.h
+FILE 3714 f:\binaries.x86ret\vcboot\inc\mmintrin.h
+FILE 3715 f:\sp\public\sdk\inc\pshpack4.h
+FILE 3716 f:\sp\public\sdk\inc\poppack.h
+FILE 3717 f:\sp\public\sdk\inc\winnetwk.h
+FILE 3718 f:\sp\public\sdk\inc\imm.h
+FILE 3719 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 3720 f:\sp\public\sdk\inc\windef.h
+FILE 3721 f:\sp\public\sdk\inc\pshpack1.h
+FILE 3722 f:\sp\public\sdk\inc\winver.h
+FILE 3723 f:\sp\public\sdk\inc\windows.h
+FILE 3724 f:\sp\public\sdk\inc\winnt.h
+FILE 3725 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 3726 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 3727 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 3728 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 3729 f:\sp\public\sdk\inc\winreg.h
+FILE 3730 f:\sp\public\sdk\inc\winbase.h
+FILE 3731 f:\sp\vctools\crt_bld\self_x86\crt\src\gs_report.c
+FILE 3732 f:\sp\public\sdk\inc\winerror.h
+FILE 3733 f:\sp\public\sdk\inc\pshpack8.h
+FILE 3734 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 3735 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 3736 f:\sp\public\sdk\inc\reason.h
+FILE 3737 f:\sp\public\sdk\inc\wincon.h
+FILE 3738 f:\sp\public\sdk\inc\ddbanned.h
+FILE 3739 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 3740 f:\sp\public\sdk\inc\pshpack2.h
+FILE 3741 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 3742 f:\sp\public\sdk\inc\mcx.h
+FILE 3743 f:\sp\public\sdk\inc\winuser.h
+FILE 3744 f:\sp\public\sdk\inc\winnls.h
+FILE 3745 f:\sp\public\sdk\inc\guiddef.h
+FILE 3746 f:\sp\public\sdk\inc\specstrings.h
+FILE 3747 f:\sp\public\sdk\inc\basetsd.h
+FILE 3748 f:\sp\public\sdk\inc\stralign.h
+FILE 3749 f:\sp\public\sdk\inc\tvout.h
+FILE 3750 f:\sp\public\sdk\inc\winsvc.h
+FILE 3751 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 3752 f:\sp\public\sdk\inc\wingdi.h
+FILE 3753 f:\sp\public\sdk\inc\pshpack4.h
+FILE 3754 f:\sp\public\sdk\inc\poppack.h
+FILE 3755 f:\sp\public\sdk\inc\winnetwk.h
+FILE 3756 f:\sp\public\sdk\inc\imm.h
+FILE 3757 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 3758 f:\sp\public\sdk\inc\windef.h
+FILE 3759 f:\sp\public\sdk\inc\pshpack1.h
+FILE 3760 f:\sp\public\sdk\inc\winver.h
+FILE 3761 f:\sp\public\sdk\inc\windows.h
+FILE 3762 f:\sp\public\sdk\inc\winnt.h
+FILE 3763 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 3764 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 3765 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 3766 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 3767 f:\sp\public\sdk\inc\winreg.h
+FILE 3768 f:\sp\public\sdk\inc\winbase.h
+FILE 3769 f:\sp\vctools\crt_bld\self_x86\crt\src\gs_cookie.c
+FILE 3770 f:\sp\public\sdk\inc\winerror.h
+FILE 3771 f:\sp\public\sdk\inc\pshpack8.h
+FILE 3772 f:\sp\public\sdk\inc\reason.h
+FILE 3773 f:\sp\public\sdk\inc\wincon.h
+FILE 3774 f:\sp\public\sdk\inc\ddbanned.h
+FILE 3775 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 3776 f:\sp\public\sdk\inc\pshpack2.h
+FILE 3777 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 3778 f:\sp\public\sdk\inc\mcx.h
+FILE 3779 f:\sp\public\sdk\inc\winuser.h
+FILE 3780 f:\sp\public\sdk\inc\winnls.h
+FILE 3781 f:\sp\public\sdk\inc\guiddef.h
+FILE 3782 f:\sp\public\sdk\inc\specstrings.h
+FILE 3783 f:\sp\public\sdk\inc\basetsd.h
+FILE 3784 f:\sp\public\sdk\inc\stralign.h
+FILE 3785 f:\sp\public\sdk\inc\tvout.h
+FILE 3786 f:\sp\public\sdk\inc\winsvc.h
+FILE 3787 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 3788 f:\sp\public\sdk\inc\wingdi.h
+FILE 3789 f:\sp\public\sdk\inc\pshpack4.h
+FILE 3790 f:\sp\public\sdk\inc\winerror.h
+FILE 3791 f:\sp\public\sdk\inc\pshpack1.h
+FILE 3792 f:\sp\public\sdk\inc\pshpack8.h
+FILE 3793 f:\sp\public\sdk\inc\winver.h
+FILE 3794 f:\sp\public\sdk\inc\pshpack2.h
+FILE 3795 f:\sp\public\sdk\inc\winreg.h
+FILE 3796 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 3797 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 3798 f:\sp\public\sdk\inc\guiddef.h
+FILE 3799 f:\sp\public\sdk\inc\windows.h
+FILE 3800 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 3801 f:\sp\public\sdk\inc\specstrings.h
+FILE 3802 f:\sp\public\sdk\inc\basetsd.h
+FILE 3803 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 3804 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 3805 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 3806 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 3807 f:\sp\public\sdk\inc\pshpack4.h
+FILE 3808 f:\sp\public\sdk\inc\reason.h
+FILE 3809 f:\sp\public\sdk\inc\wincon.h
+FILE 3810 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 3811 f:\sp\public\sdk\inc\poppack.h
+FILE 3812 f:\sp\public\sdk\inc\mcx.h
+FILE 3813 f:\sp\public\sdk\inc\winuser.h
+FILE 3814 f:\sp\public\sdk\inc\winnls.h
+FILE 3815 f:\sp\vctools\crt_bld\self_x86\crt\src\glstatus.c
+FILE 3816 f:\sp\public\sdk\inc\stralign.h
+FILE 3817 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 3818 f:\sp\public\sdk\inc\windef.h
+FILE 3819 f:\sp\public\sdk\inc\tvout.h
+FILE 3820 f:\sp\public\sdk\inc\winsvc.h
+FILE 3821 f:\sp\public\sdk\inc\wingdi.h
+FILE 3822 f:\sp\public\sdk\inc\ddbanned.h
+FILE 3823 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 3824 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 3825 f:\sp\public\sdk\inc\winnt.h
+FILE 3826 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 3827 f:\sp\public\sdk\inc\winnetwk.h
+FILE 3828 f:\sp\public\sdk\inc\imm.h
+FILE 3829 f:\sp\public\sdk\inc\winbase.h
+FILE 3830 f:\sp\public\sdk\inc\pshpack4.h
+FILE 3831 f:\sp\public\sdk\inc\poppack.h
+FILE 3832 f:\sp\public\sdk\inc\winnt.h
+FILE 3833 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 3834 f:\sp\public\sdk\inc\winnetwk.h
+FILE 3835 f:\sp\public\sdk\inc\imm.h
+FILE 3836 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 3837 f:\sp\public\sdk\inc\pshpack1.h
+FILE 3838 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 3839 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 3840 f:\sp\public\sdk\inc\winver.h
+FILE 3841 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 3842 f:\sp\public\sdk\inc\guiddef.h
+FILE 3843 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 3844 f:\sp\public\sdk\inc\specstrings.h
+FILE 3845 f:\sp\public\sdk\inc\basetsd.h
+FILE 3846 f:\sp\public\sdk\inc\windows.h
+FILE 3847 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 3848 f:\sp\public\sdk\inc\winreg.h
+FILE 3849 f:\sp\vctools\crt_bld\self_x86\crt\src\getqloc.c
+FILE 3850 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h
+FILE 3851 f:\sp\public\sdk\inc\winbase.h
+FILE 3852 f:\sp\public\sdk\inc\winerror.h
+FILE 3853 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 3854 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 3855 f:\sp\public\sdk\inc\pshpack8.h
+FILE 3856 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 3857 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 3858 f:\sp\public\sdk\inc\reason.h
+FILE 3859 f:\sp\public\sdk\inc\ddbanned.h
+FILE 3860 f:\sp\public\sdk\inc\wincon.h
+FILE 3861 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 3862 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 3863 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 3864 f:\sp\public\sdk\inc\pshpack2.h
+FILE 3865 f:\sp\public\sdk\inc\mcx.h
+FILE 3866 f:\sp\public\sdk\inc\winuser.h
+FILE 3867 f:\sp\public\sdk\inc\winnls.h
+FILE 3868 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 3869 f:\sp\public\sdk\inc\windef.h
+FILE 3870 f:\sp\public\sdk\inc\stralign.h
+FILE 3871 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 3872 f:\sp\public\sdk\inc\tvout.h
+FILE 3873 f:\sp\public\sdk\inc\winsvc.h
+FILE 3874 f:\sp\public\sdk\inc\wingdi.h
+FILE 3875 f:\sp\public\sdk\inc\reason.h
+FILE 3876 f:\sp\public\sdk\inc\wincon.h
+FILE 3877 f:\sp\public\sdk\inc\pshpack2.h
+FILE 3878 f:\sp\public\sdk\inc\mcx.h
+FILE 3879 f:\sp\public\sdk\inc\winuser.h
+FILE 3880 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 3881 f:\sp\public\sdk\inc\winnls.h
+FILE 3882 f:\sp\public\sdk\inc\guiddef.h
+FILE 3883 f:\sp\public\sdk\inc\windows.h
+FILE 3884 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 3885 f:\sp\public\sdk\inc\specstrings.h
+FILE 3886 f:\sp\public\sdk\inc\basetsd.h
+FILE 3887 f:\sp\public\sdk\inc\stralign.h
+FILE 3888 f:\sp\public\sdk\inc\tvout.h
+FILE 3889 f:\sp\public\sdk\inc\winsvc.h
+FILE 3890 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 3891 f:\sp\public\sdk\inc\wingdi.h
+FILE 3892 f:\sp\public\sdk\inc\pshpack4.h
+FILE 3893 f:\sp\public\sdk\inc\poppack.h
+FILE 3894 f:\sp\vctools\crt_bld\self_x86\crt\src\sect_attribs.h
+FILE 3895 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 3896 f:\sp\public\sdk\inc\winnetwk.h
+FILE 3897 f:\sp\public\sdk\inc\imm.h
+FILE 3898 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 3899 f:\sp\public\sdk\inc\windef.h
+FILE 3900 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h
+FILE 3901 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h
+FILE 3902 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 3903 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 3904 f:\sp\vctools\crt_bld\self_x86\crt\src\getenv.c
+FILE 3905 f:\sp\public\sdk\inc\pshpack1.h
+FILE 3906 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h
+FILE 3907 f:\sp\public\sdk\inc\winver.h
+FILE 3908 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 3909 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 3910 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 3911 f:\sp\public\sdk\inc\winnt.h
+FILE 3912 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 3913 f:\sp\public\sdk\inc\ddbanned.h
+FILE 3914 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 3915 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 3916 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 3917 f:\sp\public\sdk\inc\winreg.h
+FILE 3918 f:\sp\public\sdk\inc\winbase.h
+FILE 3919 f:\sp\public\sdk\inc\winerror.h
+FILE 3920 f:\sp\public\sdk\inc\pshpack8.h
+FILE 3921 f:\sp\public\sdk\inc\poppack.h
+FILE 3922 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 3923 f:\sp\public\sdk\inc\winnetwk.h
+FILE 3924 f:\sp\public\sdk\inc\imm.h
+FILE 3925 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 3926 f:\sp\public\sdk\inc\windef.h
+FILE 3927 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 3928 f:\sp\public\sdk\inc\pshpack1.h
+FILE 3929 f:\sp\public\sdk\inc\winver.h
+FILE 3930 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 3931 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 3932 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 3933 f:\sp\public\sdk\inc\winnt.h
+FILE 3934 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 3935 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 3936 f:\sp\public\sdk\inc\winreg.h
+FILE 3937 f:\sp\vctools\crt_bld\self_x86\crt\src\errmode.c
+FILE 3938 f:\sp\public\sdk\inc\winbase.h
+FILE 3939 f:\sp\public\sdk\inc\winerror.h
+FILE 3940 f:\sp\public\sdk\inc\pshpack8.h
+FILE 3941 f:\sp\public\sdk\inc\reason.h
+FILE 3942 f:\sp\public\sdk\inc\wincon.h
+FILE 3943 f:\sp\public\sdk\inc\ddbanned.h
+FILE 3944 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 3945 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 3946 f:\sp\public\sdk\inc\pshpack2.h
+FILE 3947 f:\sp\public\sdk\inc\mcx.h
+FILE 3948 f:\sp\public\sdk\inc\winuser.h
+FILE 3949 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 3950 f:\sp\public\sdk\inc\winnls.h
+FILE 3951 f:\sp\public\sdk\inc\guiddef.h
+FILE 3952 f:\sp\public\sdk\inc\windows.h
+FILE 3953 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 3954 f:\sp\public\sdk\inc\specstrings.h
+FILE 3955 f:\sp\public\sdk\inc\basetsd.h
+FILE 3956 f:\sp\public\sdk\inc\stralign.h
+FILE 3957 f:\sp\public\sdk\inc\tvout.h
+FILE 3958 f:\sp\public\sdk\inc\winsvc.h
+FILE 3959 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 3960 f:\sp\public\sdk\inc\wingdi.h
+FILE 3961 f:\sp\public\sdk\inc\pshpack4.h
+FILE 3962 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 3963 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 3964 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 3965 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 3966 f:\sp\vctools\crt_bld\self_x86\crt\src\dbghook.c
+FILE 3967 f:\sp\public\sdk\inc\ddbanned.h
+FILE 3968 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 3969 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 3970 f:\sp\public\sdk\inc\poppack.h
+FILE 3971 f:\sp\public\sdk\inc\winnetwk.h
+FILE 3972 f:\sp\public\sdk\inc\imm.h
+FILE 3973 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 3974 f:\sp\public\sdk\inc\windef.h
+FILE 3975 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 3976 f:\sp\public\sdk\inc\pshpack1.h
+FILE 3977 f:\sp\public\sdk\inc\winver.h
+FILE 3978 f:\sp\public\sdk\inc\windows.h
+FILE 3979 f:\sp\public\sdk\inc\winnt.h
+FILE 3980 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 3981 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 3982 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 3983 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 3984 f:\sp\public\sdk\inc\winreg.h
+FILE 3985 f:\sp\vctools\crt_bld\self_x86\crt\src\wchar.h
+FILE 3986 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.c
+FILE 3987 f:\sp\public\sdk\inc\winbase.h
+FILE 3988 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl
+FILE 3989 f:\sp\public\sdk\inc\winerror.h
+FILE 3990 f:\sp\public\sdk\inc\pshpack8.h
+FILE 3991 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 3992 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 3993 f:\sp\public\sdk\inc\reason.h
+FILE 3994 f:\sp\public\sdk\inc\wincon.h
+FILE 3995 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 3996 f:\sp\public\sdk\inc\ddbanned.h
+FILE 3997 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 3998 f:\sp\public\sdk\inc\pshpack2.h
+FILE 3999 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 4000 f:\sp\public\sdk\inc\mcx.h
+FILE 4001 f:\sp\public\sdk\inc\winuser.h
+FILE 4002 f:\sp\public\sdk\inc\winnls.h
+FILE 4003 f:\sp\public\sdk\inc\guiddef.h
+FILE 4004 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 4005 f:\sp\public\sdk\inc\specstrings.h
+FILE 4006 f:\sp\public\sdk\inc\basetsd.h
+FILE 4007 f:\sp\public\sdk\inc\stralign.h
+FILE 4008 f:\sp\public\sdk\inc\tvout.h
+FILE 4009 f:\sp\public\sdk\inc\winsvc.h
+FILE 4010 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 4011 f:\sp\public\sdk\inc\wingdi.h
+FILE 4012 f:\sp\public\sdk\inc\pshpack4.h
+FILE 4013 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 4014 f:\sp\public\sdk\inc\mcx.h
+FILE 4015 f:\sp\public\sdk\inc\winuser.h
+FILE 4016 f:\sp\public\sdk\inc\winnls.h
+FILE 4017 f:\sp\public\sdk\inc\stralign.h
+FILE 4018 f:\sp\public\sdk\inc\tvout.h
+FILE 4019 f:\sp\public\sdk\inc\winsvc.h
+FILE 4020 f:\sp\public\sdk\inc\wingdi.h
+FILE 4021 f:\sp\public\sdk\inc\pshpack4.h
+FILE 4022 f:\sp\public\sdk\inc\winnt.h
+FILE 4023 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 4024 f:\sp\public\sdk\inc\poppack.h
+FILE 4025 f:\sp\public\sdk\inc\winnetwk.h
+FILE 4026 f:\sp\public\sdk\inc\imm.h
+FILE 4027 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h
+FILE 4028 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h
+FILE 4029 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 4030 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 4031 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 4032 f:\sp\public\sdk\inc\pshpack1.h
+FILE 4033 f:\sp\vctools\crt_bld\self_x86\crt\src\crtmbox.c
+FILE 4034 f:\sp\public\sdk\inc\winver.h
+FILE 4035 f:\sp\public\sdk\inc\guiddef.h
+FILE 4036 f:\sp\public\sdk\inc\windows.h
+FILE 4037 f:\sp\public\sdk\inc\specstrings.h
+FILE 4038 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 4039 f:\sp\public\sdk\inc\basetsd.h
+FILE 4040 f:\sp\public\sdk\inc\winreg.h
+FILE 4041 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 4042 f:\sp\public\sdk\inc\winbase.h
+FILE 4043 f:\sp\public\sdk\inc\ddbanned.h
+FILE 4044 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 4045 f:\sp\public\sdk\inc\winerror.h
+FILE 4046 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 4047 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 4048 f:\sp\public\sdk\inc\pshpack8.h
+FILE 4049 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 4050 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 4051 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h
+FILE 4052 f:\sp\public\sdk\inc\reason.h
+FILE 4053 f:\sp\public\sdk\inc\wincon.h
+FILE 4054 f:\sp\public\sdk\inc\pshpack2.h
+FILE 4055 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 4056 f:\sp\public\sdk\inc\windef.h
+FILE 4057 f:\sp\public\sdk\inc\poppack.h
+FILE 4058 f:\sp\vctools\crt_bld\self_x86\crt\src\fltintrn.h
+FILE 4059 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 4060 f:\sp\public\sdk\inc\winnetwk.h
+FILE 4061 f:\sp\public\sdk\inc\imm.h
+FILE 4062 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 4063 f:\sp\public\sdk\inc\windef.h
+FILE 4064 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 4065 f:\sp\public\sdk\inc\pshpack1.h
+FILE 4066 f:\sp\public\sdk\inc\winver.h
+FILE 4067 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 4068 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 4069 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 4070 f:\sp\public\sdk\inc\winnt.h
+FILE 4071 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 4072 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 4073 f:\sp\public\sdk\inc\winreg.h
+FILE 4074 f:\sp\vctools\crt_bld\self_x86\crt\src\cmiscdat.c
+FILE 4075 f:\sp\public\sdk\inc\winbase.h
+FILE 4076 f:\sp\public\sdk\inc\winerror.h
+FILE 4077 f:\sp\public\sdk\inc\pshpack8.h
+FILE 4078 f:\sp\public\sdk\inc\reason.h
+FILE 4079 f:\sp\public\sdk\inc\wincon.h
+FILE 4080 f:\sp\public\sdk\inc\ddbanned.h
+FILE 4081 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 4082 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 4083 f:\sp\public\sdk\inc\pshpack2.h
+FILE 4084 f:\sp\public\sdk\inc\mcx.h
+FILE 4085 f:\sp\public\sdk\inc\winuser.h
+FILE 4086 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 4087 f:\sp\public\sdk\inc\winnls.h
+FILE 4088 f:\sp\public\sdk\inc\guiddef.h
+FILE 4089 f:\sp\public\sdk\inc\windows.h
+FILE 4090 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 4091 f:\sp\public\sdk\inc\specstrings.h
+FILE 4092 f:\sp\public\sdk\inc\basetsd.h
+FILE 4093 f:\sp\public\sdk\inc\stralign.h
+FILE 4094 f:\sp\public\sdk\inc\tvout.h
+FILE 4095 f:\sp\public\sdk\inc\winsvc.h
+FILE 4096 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 4097 f:\sp\public\sdk\inc\wingdi.h
+FILE 4098 f:\sp\public\sdk\inc\pshpack4.h
+FILE 4099 f:\sp\public\sdk\inc\pshpack4.h
+FILE 4100 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h
+FILE 4101 f:\sp\vctools\crt_bld\self_x86\crt\src\signal.h
+FILE 4102 f:\sp\public\sdk\inc\poppack.h
+FILE 4103 f:\sp\public\sdk\inc\winnetwk.h
+FILE 4104 f:\sp\public\sdk\inc\imm.h
+FILE 4105 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 4106 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 4107 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 4108 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 4109 f:\sp\public\sdk\inc\windef.h
+FILE 4110 f:\sp\public\sdk\inc\pshpack1.h
+FILE 4111 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 4112 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 4113 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 4114 f:\sp\public\sdk\inc\winver.h
+FILE 4115 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 4116 f:\sp\public\sdk\inc\winnt.h
+FILE 4117 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 4118 f:\sp\public\sdk\inc\winreg.h
+FILE 4119 f:\sp\vctools\crt_bld\self_x86\crt\src\abort.c
+FILE 4120 f:\sp\public\sdk\inc\winbase.h
+FILE 4121 f:\sp\public\sdk\inc\winerror.h
+FILE 4122 f:\sp\public\sdk\inc\pshpack8.h
+FILE 4123 f:\sp\public\sdk\inc\reason.h
+FILE 4124 f:\sp\public\sdk\inc\ddbanned.h
+FILE 4125 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 4126 f:\sp\public\sdk\inc\wincon.h
+FILE 4127 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 4128 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 4129 f:\sp\public\sdk\inc\pshpack2.h
+FILE 4130 f:\sp\public\sdk\inc\mcx.h
+FILE 4131 f:\sp\public\sdk\inc\winuser.h
+FILE 4132 f:\sp\public\sdk\inc\winnls.h
+FILE 4133 f:\sp\public\sdk\inc\guiddef.h
+FILE 4134 f:\sp\public\sdk\inc\stralign.h
+FILE 4135 f:\sp\public\sdk\inc\specstrings.h
+FILE 4136 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 4137 f:\sp\public\sdk\inc\basetsd.h
+FILE 4138 f:\sp\public\sdk\inc\windows.h
+FILE 4139 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 4140 f:\sp\public\sdk\inc\tvout.h
+FILE 4141 f:\sp\public\sdk\inc\winsvc.h
+FILE 4142 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 4143 f:\sp\public\sdk\inc\wingdi.h
+FILE 4144 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 4145 f:\sp\public\sdk\inc\wincon.h
+FILE 4146 f:\sp\public\sdk\inc\imm.h
+FILE 4147 f:\sp\public\sdk\inc\winbase.h
+FILE 4148 f:\sp\public\sdk\inc\wingdi.h
+FILE 4149 f:\sp\public\sdk\inc\winver.h
+FILE 4150 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 4151 f:\sp\public\sdk\inc\windows.h
+FILE 4152 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 4153 f:\sp\public\sdk\inc\pshpack2.h
+FILE 4154 f:\sp\public\sdk\inc\reason.h
+FILE 4155 f:\sp\vctools\crt_bld\self_x86\crt\src\a_str.c
+FILE 4156 f:\sp\public\sdk\inc\specstrings.h
+FILE 4157 f:\sp\public\sdk\inc\basetsd.h
+FILE 4158 f:\sp\public\sdk\inc\pshpack4.h
+FILE 4159 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 4160 f:\sp\public\sdk\inc\winnetwk.h
+FILE 4161 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 4162 f:\sp\public\sdk\inc\stralign.h
+FILE 4163 f:\sp\public\sdk\inc\poppack.h
+FILE 4164 f:\sp\public\sdk\inc\winsvc.h
+FILE 4165 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 4166 f:\sp\public\sdk\inc\windef.h
+FILE 4167 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 4168 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 4169 f:\sp\public\sdk\inc\winuser.h
+FILE 4170 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 4171 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 4172 f:\sp\public\sdk\inc\mcx.h
+FILE 4173 f:\sp\public\sdk\inc\pshpack8.h
+FILE 4174 f:\sp\public\sdk\inc\guiddef.h
+FILE 4175 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 4176 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 4177 f:\sp\public\sdk\inc\winnt.h
+FILE 4178 f:\sp\public\sdk\inc\winnls.h
+FILE 4179 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 4180 f:\sp\public\sdk\inc\pshpack1.h
+FILE 4181 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h
+FILE 4182 f:\sp\public\sdk\inc\winerror.h
+FILE 4183 f:\sp\public\sdk\inc\winreg.h
+FILE 4184 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 4185 f:\sp\public\sdk\inc\ddbanned.h
+FILE 4186 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 4187 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 4188 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 4189 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 4190 f:\sp\public\sdk\inc\tvout.h
+FILE 4191 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 4192 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 4193 f:\sp\public\sdk\inc\wincon.h
+FILE 4194 f:\sp\public\sdk\inc\imm.h
+FILE 4195 f:\sp\public\sdk\inc\winbase.h
+FILE 4196 f:\sp\public\sdk\inc\wingdi.h
+FILE 4197 f:\sp\public\sdk\inc\winver.h
+FILE 4198 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 4199 f:\sp\public\sdk\inc\windows.h
+FILE 4200 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 4201 f:\sp\public\sdk\inc\pshpack2.h
+FILE 4202 f:\sp\public\sdk\inc\reason.h
+FILE 4203 f:\sp\vctools\crt_bld\self_x86\crt\src\a_map.c
+FILE 4204 f:\sp\public\sdk\inc\specstrings.h
+FILE 4205 f:\sp\public\sdk\inc\basetsd.h
+FILE 4206 f:\sp\public\sdk\inc\pshpack4.h
+FILE 4207 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 4208 f:\sp\public\sdk\inc\winnetwk.h
+FILE 4209 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 4210 f:\sp\public\sdk\inc\stralign.h
+FILE 4211 f:\sp\public\sdk\inc\poppack.h
+FILE 4212 f:\sp\public\sdk\inc\winsvc.h
+FILE 4213 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 4214 f:\sp\public\sdk\inc\windef.h
+FILE 4215 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 4216 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 4217 f:\sp\public\sdk\inc\winuser.h
+FILE 4218 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 4219 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 4220 f:\sp\public\sdk\inc\mcx.h
+FILE 4221 f:\sp\public\sdk\inc\pshpack8.h
+FILE 4222 f:\sp\public\sdk\inc\guiddef.h
+FILE 4223 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 4224 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 4225 f:\sp\public\sdk\inc\winnt.h
+FILE 4226 f:\sp\public\sdk\inc\winnls.h
+FILE 4227 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 4228 f:\sp\public\sdk\inc\pshpack1.h
+FILE 4229 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h
+FILE 4230 f:\sp\public\sdk\inc\winerror.h
+FILE 4231 f:\sp\public\sdk\inc\winreg.h
+FILE 4232 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 4233 f:\sp\public\sdk\inc\ddbanned.h
+FILE 4234 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 4235 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 4236 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 4237 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 4238 f:\sp\public\sdk\inc\tvout.h
+FILE 4239 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 4240 f:\sp\public\sdk\inc\wincon.h
+FILE 4241 f:\sp\public\sdk\inc\imm.h
+FILE 4242 f:\sp\public\sdk\inc\winbase.h
+FILE 4243 f:\sp\public\sdk\inc\wingdi.h
+FILE 4244 f:\sp\public\sdk\inc\winver.h
+FILE 4245 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 4246 f:\sp\public\sdk\inc\windows.h
+FILE 4247 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 4248 f:\sp\public\sdk\inc\pshpack2.h
+FILE 4249 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 4250 f:\sp\public\sdk\inc\reason.h
+FILE 4251 f:\sp\vctools\crt_bld\self_x86\crt\src\a_loc.c
+FILE 4252 f:\sp\public\sdk\inc\specstrings.h
+FILE 4253 f:\sp\public\sdk\inc\basetsd.h
+FILE 4254 f:\sp\public\sdk\inc\pshpack4.h
+FILE 4255 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h
+FILE 4256 f:\sp\public\sdk\inc\winnetwk.h
+FILE 4257 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 4258 f:\sp\public\sdk\inc\stralign.h
+FILE 4259 f:\sp\public\sdk\inc\poppack.h
+FILE 4260 f:\sp\public\sdk\inc\winsvc.h
+FILE 4261 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 4262 f:\sp\public\sdk\inc\windef.h
+FILE 4263 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 4264 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 4265 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 4266 f:\sp\public\sdk\inc\winuser.h
+FILE 4267 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 4268 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 4269 f:\sp\public\sdk\inc\mcx.h
+FILE 4270 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 4271 f:\sp\public\sdk\inc\pshpack8.h
+FILE 4272 f:\sp\public\sdk\inc\guiddef.h
+FILE 4273 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 4274 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 4275 f:\sp\public\sdk\inc\winnt.h
+FILE 4276 f:\sp\public\sdk\inc\winnls.h
+FILE 4277 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 4278 f:\sp\public\sdk\inc\pshpack1.h
+FILE 4279 f:\sp\public\sdk\inc\winerror.h
+FILE 4280 f:\sp\public\sdk\inc\winreg.h
+FILE 4281 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 4282 f:\sp\public\sdk\inc\ddbanned.h
+FILE 4283 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 4284 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 4285 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 4286 f:\sp\public\sdk\inc\tvout.h
+FILE 4287 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 4288 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 4289 f:\sp\public\sdk\inc\poppack.h
+FILE 4290 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 4291 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 4292 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 4293 f:\sp\public\sdk\inc\winnetwk.h
+FILE 4294 f:\sp\public\sdk\inc\imm.h
+FILE 4295 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 4296 f:\sp\public\sdk\inc\windef.h
+FILE 4297 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 4298 f:\sp\public\sdk\inc\pshpack1.h
+FILE 4299 f:\sp\public\sdk\inc\winver.h
+FILE 4300 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 4301 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 4302 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 4303 f:\sp\public\sdk\inc\winnt.h
+FILE 4304 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 4305 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 4306 f:\sp\public\sdk\inc\winreg.h
+FILE 4307 f:\sp\vctools\crt_bld\self_x86\crt\src\a_env.c
+FILE 4308 f:\sp\public\sdk\inc\winbase.h
+FILE 4309 f:\sp\public\sdk\inc\winerror.h
+FILE 4310 f:\sp\public\sdk\inc\pshpack8.h
+FILE 4311 f:\sp\public\sdk\inc\reason.h
+FILE 4312 f:\sp\public\sdk\inc\wincon.h
+FILE 4313 f:\sp\public\sdk\inc\ddbanned.h
+FILE 4314 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 4315 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 4316 f:\sp\public\sdk\inc\pshpack2.h
+FILE 4317 f:\sp\public\sdk\inc\mcx.h
+FILE 4318 f:\sp\public\sdk\inc\winuser.h
+FILE 4319 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 4320 f:\sp\public\sdk\inc\winnls.h
+FILE 4321 f:\sp\public\sdk\inc\guiddef.h
+FILE 4322 f:\sp\public\sdk\inc\windows.h
+FILE 4323 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 4324 f:\sp\public\sdk\inc\specstrings.h
+FILE 4325 f:\sp\public\sdk\inc\basetsd.h
+FILE 4326 f:\sp\public\sdk\inc\stralign.h
+FILE 4327 f:\sp\public\sdk\inc\tvout.h
+FILE 4328 f:\sp\public\sdk\inc\winsvc.h
+FILE 4329 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 4330 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h
+FILE 4331 f:\sp\public\sdk\inc\wingdi.h
+FILE 4332 f:\sp\public\sdk\inc\pshpack4.h
+FILE 4333 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 4334 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 4335 f:\sp\public\sdk\inc\wincon.h
+FILE 4336 f:\sp\public\sdk\inc\imm.h
+FILE 4337 f:\sp\public\sdk\inc\winbase.h
+FILE 4338 f:\sp\public\sdk\inc\wingdi.h
+FILE 4339 f:\sp\public\sdk\inc\winver.h
+FILE 4340 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 4341 f:\sp\public\sdk\inc\windows.h
+FILE 4342 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 4343 f:\sp\public\sdk\inc\pshpack2.h
+FILE 4344 f:\sp\public\sdk\inc\reason.h
+FILE 4345 f:\sp\vctools\crt_bld\self_x86\crt\src\a_cmp.c
+FILE 4346 f:\sp\public\sdk\inc\specstrings.h
+FILE 4347 f:\sp\public\sdk\inc\basetsd.h
+FILE 4348 f:\sp\public\sdk\inc\pshpack4.h
+FILE 4349 f:\sp\public\sdk\inc\winnetwk.h
+FILE 4350 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 4351 f:\sp\public\sdk\inc\stralign.h
+FILE 4352 f:\sp\public\sdk\inc\poppack.h
+FILE 4353 f:\sp\public\sdk\inc\winsvc.h
+FILE 4354 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 4355 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 4356 f:\sp\public\sdk\inc\windef.h
+FILE 4357 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 4358 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 4359 f:\sp\public\sdk\inc\winuser.h
+FILE 4360 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 4361 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 4362 f:\sp\public\sdk\inc\mcx.h
+FILE 4363 f:\sp\public\sdk\inc\pshpack8.h
+FILE 4364 f:\sp\public\sdk\inc\guiddef.h
+FILE 4365 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 4366 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 4367 f:\sp\public\sdk\inc\winnt.h
+FILE 4368 f:\sp\public\sdk\inc\winnls.h
+FILE 4369 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 4370 f:\sp\public\sdk\inc\pshpack1.h
+FILE 4371 f:\sp\public\sdk\inc\winerror.h
+FILE 4372 f:\sp\public\sdk\inc\winreg.h
+FILE 4373 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 4374 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h
+FILE 4375 f:\sp\public\sdk\inc\ddbanned.h
+FILE 4376 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 4377 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 4378 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 4379 f:\sp\public\sdk\inc\tvout.h
+FILE 4380 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 4381 F:\SP\vctools\crt_bld\SELF_X86\crt\prebuild\misc\i386\sehprolg4.asm
+FILE 4382 f:\sp\public\sdk\inc\poppack.h
+FILE 4383 f:\sp\public\sdk\inc\winnetwk.h
+FILE 4384 f:\sp\public\sdk\inc\imm.h
+FILE 4385 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 4386 f:\sp\public\sdk\inc\windef.h
+FILE 4387 f:\sp\public\sdk\inc\pshpack1.h
+FILE 4388 f:\sp\public\sdk\inc\winver.h
+FILE 4389 f:\sp\public\sdk\inc\windows.h
+FILE 4390 f:\sp\public\sdk\inc\winnt.h
+FILE 4391 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 4392 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 4393 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 4394 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 4395 f:\sp\public\sdk\inc\winreg.h
+FILE 4396 f:\sp\public\sdk\inc\winbase.h
+FILE 4397 f:\sp\vctools\crt_bld\self_x86\crt\src\intel\secchk.c
+FILE 4398 f:\sp\public\sdk\inc\winerror.h
+FILE 4399 f:\sp\public\sdk\inc\pshpack8.h
+FILE 4400 f:\sp\vctools\crt_bld\self_x86\crt\src\process.h
+FILE 4401 f:\sp\public\sdk\inc\reason.h
+FILE 4402 f:\sp\public\sdk\inc\wincon.h
+FILE 4403 f:\sp\public\sdk\inc\ddbanned.h
+FILE 4404 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 4405 f:\sp\public\sdk\inc\pshpack2.h
+FILE 4406 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 4407 f:\sp\public\sdk\inc\mcx.h
+FILE 4408 f:\sp\public\sdk\inc\winuser.h
+FILE 4409 f:\sp\public\sdk\inc\winnls.h
+FILE 4410 f:\sp\public\sdk\inc\guiddef.h
+FILE 4411 f:\sp\public\sdk\inc\specstrings.h
+FILE 4412 f:\sp\public\sdk\inc\basetsd.h
+FILE 4413 f:\sp\public\sdk\inc\stralign.h
+FILE 4414 f:\sp\public\sdk\inc\tvout.h
+FILE 4415 f:\sp\public\sdk\inc\winsvc.h
+FILE 4416 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 4417 f:\sp\public\sdk\inc\wingdi.h
+FILE 4418 f:\sp\public\sdk\inc\pshpack4.h
+FILE 4419 f:\sp\public\sdk\inc\poppack.h
+FILE 4420 f:\sp\public\sdk\inc\winnetwk.h
+FILE 4421 f:\sp\public\sdk\inc\imm.h
+FILE 4422 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 4423 f:\sp\public\sdk\inc\windef.h
+FILE 4424 f:\sp\public\sdk\inc\pshpack1.h
+FILE 4425 f:\sp\public\sdk\inc\winver.h
+FILE 4426 f:\sp\public\sdk\inc\windows.h
+FILE 4427 f:\sp\public\sdk\inc\winnt.h
+FILE 4428 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 4429 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 4430 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 4431 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 4432 f:\sp\public\sdk\inc\winreg.h
+FILE 4433 f:\sp\public\sdk\inc\winbase.h
+FILE 4434 f:\sp\vctools\crt_bld\self_x86\crt\src\intel\loadcfg.c
+FILE 4435 f:\sp\public\sdk\inc\winerror.h
+FILE 4436 f:\sp\public\sdk\inc\pshpack8.h
+FILE 4437 f:\sp\public\sdk\inc\reason.h
+FILE 4438 f:\sp\public\sdk\inc\wincon.h
+FILE 4439 f:\sp\public\sdk\inc\ddbanned.h
+FILE 4440 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 4441 f:\sp\public\sdk\inc\pshpack2.h
+FILE 4442 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 4443 f:\sp\public\sdk\inc\mcx.h
+FILE 4444 f:\sp\public\sdk\inc\winuser.h
+FILE 4445 f:\sp\public\sdk\inc\winnls.h
+FILE 4446 f:\sp\public\sdk\inc\guiddef.h
+FILE 4447 f:\sp\public\sdk\inc\specstrings.h
+FILE 4448 f:\sp\public\sdk\inc\basetsd.h
+FILE 4449 f:\sp\public\sdk\inc\stralign.h
+FILE 4450 f:\sp\public\sdk\inc\tvout.h
+FILE 4451 f:\sp\public\sdk\inc\winsvc.h
+FILE 4452 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 4453 f:\sp\public\sdk\inc\wingdi.h
+FILE 4454 f:\sp\public\sdk\inc\pshpack4.h
+FILE 4455 F:\SP\vctools\crt_bld\SELF_X86\crt\prebuild\misc\i386\exsup4.asm
+FILE 4456 F:\SP\vctools\crt_bld\SELF_X86\crt\prebuild\h\exsup.inc
+FILE 4457 F:\SP\vctools\crt_bld\SELF_X86\crt\prebuild\misc\i386\exsup.asm
+FILE 4458 F:\SP\vctools\crt_bld\SELF_X86\crt\prebuild\h\pversion.inc
+FILE 4459 F:\SP\vctools\crt_bld\SELF_X86\crt\prebuild\h\cmacros.inc
+FILE 4460 F:\SP\vctools\crt_bld\SELF_X86\crt\prebuild\h\exsup.inc
+FILE 4461 F:\SP\vctools\crt_bld\SELF_X86\crt\prebuild\misc\i386\nlgsupp.asm
+FILE 4462 f:\sp\public\sdk\inc\ntldr.h
+FILE 4463 f:\sp\public\sdk\inc\ntpoapi.h
+FILE 4464 f:\sp\public\sdk\inc\ntexapi.h
+FILE 4465 f:\sp\public\sdk\inc\pshpack1.h
+FILE 4466 f:\sp\public\sdk\inc\pshpack8.h
+FILE 4467 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h
+FILE 4468 f:\sp\public\sdk\inc\ntdef.h
+FILE 4469 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h
+FILE 4470 f:\sp\public\sdk\inc\mce.h
+FILE 4471 f:\sp\public\sdk\inc\poppack.h
+FILE 4472 f:\sp\public\sdk\inc\ntimage.h
+FILE 4473 f:\sp\public\sdk\inc\pshpack2.h
+FILE 4474 f:\sp\public\sdk\inc\ntpsapi.h
+FILE 4475 f:\sp\public\sdk\inc\nti386.h
+FILE 4476 f:\sp\public\sdk\inc\nt.h
+FILE 4477 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h
+FILE 4478 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h
+FILE 4479 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h
+FILE 4480 f:\sp\public\sdk\inc\specstrings.h
+FILE 4481 f:\sp\public\sdk\inc\basetsd.h
+FILE 4482 f:\sp\public\sdk\inc\ntxcapi.h
+FILE 4483 f:\sp\public\sdk\inc\guiddef.h
+FILE 4484 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\misc\i386\chandler4.c
+FILE 4485 f:\sp\public\sdk\inc\ntstatus.h
+FILE 4486 f:\sp\public\sdk\inc\ntkeapi.h
+FILE 4487 f:\sp\public\sdk\inc\ntconfig.h
+FILE 4488 f:\sp\public\sdk\inc\ntregapi.h
+FILE 4489 f:\sp\public\sdk\inc\ntmmapi.h
+FILE 4490 f:\sp\public\sdk\inc\ntobapi.h
+FILE 4491 f:\sp\public\sdk\inc\nxi386.h
+FILE 4492 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\process.h
+FILE 4493 f:\sp\public\sdk\inc\ntioapi.h
+FILE 4494 f:\sp\public\sdk\inc\devioctl.h
+FILE 4495 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\string.h
+FILE 4496 f:\sp\public\sdk\inc\ntseapi.h
+FILE 4497 f:\sp\public\sdk\inc\ddbanned.h
+FILE 4498 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h
+FILE 4499 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h
+FILE 4500 f:\sp\public\sdk\inc\ntnls.h
+FILE 4501 f:\sp\public\sdk\inc\ntelfapi.h
+FILE 4502 f:\sp\public\sdk\inc\pshpack4.h
+FILE 4503 f:\sp\public\sdk\inc\ntiolog.h
+FILE 4504 f:\sp\public\sdk\inc\ntlpcapi.h
+FILE 4505 f:\sp\public\sdk\inc\ntpnpapi.h
+FILE 4506 f:\sp\public\sdk\inc\cfg.h
+FILE 4507 f:\sp\public\sdk\inc\pebteb.h
+FILE 4508 f:\sp\public\sdk\inc\wincon.h
+FILE 4509 f:\sp\public\sdk\inc\imm.h
+FILE 4510 f:\sp\public\sdk\inc\winbase.h
+FILE 4511 f:\sp\public\sdk\inc\wingdi.h
+FILE 4512 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 4513 f:\sp\public\sdk\inc\winver.h
+FILE 4514 f:\sp\public\sdk\inc\pshpack2.h
+FILE 4515 f:\sp\public\sdk\inc\reason.h
+FILE 4516 f:\sp\vctools\crt_bld\self_x86\crt\src\mbdata.h
+FILE 4517 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 4518 f:\sp\vctools\crt_bld\self_x86\crt\src\mbsnbico.c
+FILE 4519 f:\sp\public\sdk\inc\specstrings.h
+FILE 4520 f:\sp\public\sdk\inc\basetsd.h
+FILE 4521 f:\sp\public\sdk\inc\pshpack4.h
+FILE 4522 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 4523 f:\sp\vctools\crt_bld\self_x86\crt\src\mbctype.h
+FILE 4524 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 4525 f:\sp\public\sdk\inc\winnetwk.h
+FILE 4526 f:\sp\public\sdk\inc\stralign.h
+FILE 4527 f:\sp\public\sdk\inc\poppack.h
+FILE 4528 f:\sp\public\sdk\inc\winsvc.h
+FILE 4529 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 4530 f:\sp\public\sdk\inc\windef.h
+FILE 4531 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h
+FILE 4532 f:\sp\public\sdk\inc\winuser.h
+FILE 4533 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 4534 f:\sp\public\sdk\inc\windows.h
+FILE 4535 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 4536 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 4537 f:\sp\public\sdk\inc\mcx.h
+FILE 4538 f:\sp\public\sdk\inc\pshpack8.h
+FILE 4539 f:\sp\public\sdk\inc\guiddef.h
+FILE 4540 f:\sp\public\sdk\inc\winnt.h
+FILE 4541 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 4542 f:\sp\public\sdk\inc\winnls.h
+FILE 4543 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 4544 f:\sp\public\sdk\inc\pshpack1.h
+FILE 4545 f:\sp\public\sdk\inc\winerror.h
+FILE 4546 f:\sp\public\sdk\inc\winreg.h
+FILE 4547 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 4548 f:\sp\public\sdk\inc\ddbanned.h
+FILE 4549 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 4550 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 4551 f:\sp\public\sdk\inc\tvout.h
+FILE 4552 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 4553 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 4554 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 4555 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h
+FILE 4556 f:\sp\public\sdk\inc\wincon.h
+FILE 4557 f:\sp\public\sdk\inc\imm.h
+FILE 4558 f:\sp\public\sdk\inc\winbase.h
+FILE 4559 f:\sp\public\sdk\inc\wingdi.h
+FILE 4560 f:\sp\vctools\crt_bld\self_x86\crt\src\mbctype.h
+FILE 4561 f:\sp\public\sdk\inc\winver.h
+FILE 4562 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 4563 f:\sp\public\sdk\inc\windows.h
+FILE 4564 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 4565 f:\sp\public\sdk\inc\pshpack2.h
+FILE 4566 f:\sp\public\sdk\inc\reason.h
+FILE 4567 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 4568 f:\sp\vctools\crt_bld\self_x86\crt\src\mbschr.c
+FILE 4569 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 4570 f:\sp\public\sdk\inc\specstrings.h
+FILE 4571 f:\sp\public\sdk\inc\basetsd.h
+FILE 4572 f:\sp\public\sdk\inc\pshpack4.h
+FILE 4573 f:\sp\public\sdk\inc\winnetwk.h
+FILE 4574 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 4575 f:\sp\public\sdk\inc\stralign.h
+FILE 4576 f:\sp\public\sdk\inc\poppack.h
+FILE 4577 f:\sp\public\sdk\inc\winsvc.h
+FILE 4578 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 4579 f:\sp\public\sdk\inc\windef.h
+FILE 4580 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 4581 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 4582 f:\sp\public\sdk\inc\winuser.h
+FILE 4583 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 4584 f:\sp\public\sdk\inc\mcx.h
+FILE 4585 f:\sp\public\sdk\inc\pshpack8.h
+FILE 4586 f:\sp\public\sdk\inc\guiddef.h
+FILE 4587 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h
+FILE 4588 f:\sp\public\sdk\inc\winnt.h
+FILE 4589 f:\sp\public\sdk\inc\winnls.h
+FILE 4590 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 4591 f:\sp\public\sdk\inc\pshpack1.h
+FILE 4592 f:\sp\public\sdk\inc\winerror.h
+FILE 4593 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 4594 f:\sp\public\sdk\inc\winreg.h
+FILE 4595 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 4596 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 4597 f:\sp\public\sdk\inc\ddbanned.h
+FILE 4598 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 4599 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 4600 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 4601 f:\sp\public\sdk\inc\tvout.h
+FILE 4602 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 4603 f:\sp\vctools\crt_bld\self_x86\crt\src\mbdata.h
+FILE 4604 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 4605 f:\sp\public\sdk\inc\wincon.h
+FILE 4606 f:\sp\public\sdk\inc\imm.h
+FILE 4607 f:\sp\public\sdk\inc\winbase.h
+FILE 4608 f:\sp\public\sdk\inc\wingdi.h
+FILE 4609 f:\sp\public\sdk\inc\winver.h
+FILE 4610 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 4611 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 4612 f:\sp\public\sdk\inc\pshpack2.h
+FILE 4613 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 4614 f:\sp\public\sdk\inc\reason.h
+FILE 4615 f:\sp\vctools\crt_bld\self_x86\crt\src\mbctype.c
+FILE 4616 f:\sp\public\sdk\inc\specstrings.h
+FILE 4617 f:\sp\public\sdk\inc\basetsd.h
+FILE 4618 f:\sp\public\sdk\inc\pshpack4.h
+FILE 4619 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 4620 f:\sp\public\sdk\inc\winnetwk.h
+FILE 4621 f:\sp\public\sdk\inc\stralign.h
+FILE 4622 f:\sp\public\sdk\inc\poppack.h
+FILE 4623 f:\sp\public\sdk\inc\winsvc.h
+FILE 4624 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 4625 f:\sp\public\sdk\inc\windef.h
+FILE 4626 f:\sp\public\sdk\inc\winuser.h
+FILE 4627 f:\sp\public\sdk\inc\windows.h
+FILE 4628 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 4629 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 4630 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 4631 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 4632 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 4633 f:\sp\public\sdk\inc\mcx.h
+FILE 4634 f:\sp\public\sdk\inc\pshpack8.h
+FILE 4635 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 4636 f:\sp\public\sdk\inc\guiddef.h
+FILE 4637 f:\sp\public\sdk\inc\winnt.h
+FILE 4638 f:\sp\public\sdk\inc\winnls.h
+FILE 4639 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 4640 f:\sp\vctools\crt_bld\self_x86\crt\src\mbdata.h
+FILE 4641 f:\sp\public\sdk\inc\pshpack1.h
+FILE 4642 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h
+FILE 4643 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 4644 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 4645 f:\sp\public\sdk\inc\winerror.h
+FILE 4646 f:\sp\vctools\crt_bld\self_x86\crt\src\sect_attribs.h
+FILE 4647 f:\sp\public\sdk\inc\winreg.h
+FILE 4648 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 4649 f:\sp\public\sdk\inc\ddbanned.h
+FILE 4650 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h
+FILE 4651 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 4652 f:\sp\vctools\crt_bld\self_x86\crt\src\mbctype.h
+FILE 4653 f:\sp\public\sdk\inc\tvout.h
+FILE 4654 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 4655 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 4656 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 4657 f:\sp\public\sdk\inc\wincon.h
+FILE 4658 f:\sp\public\sdk\inc\imm.h
+FILE 4659 f:\sp\public\sdk\inc\winbase.h
+FILE 4660 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 4661 f:\sp\public\sdk\inc\wingdi.h
+FILE 4662 f:\sp\public\sdk\inc\windef.h
+FILE 4663 f:\sp\vctools\crt_bld\self_x86\crt\src\mbctype.h
+FILE 4664 f:\sp\public\sdk\inc\winver.h
+FILE 4665 f:\sp\public\sdk\inc\pshpack2.h
+FILE 4666 f:\sp\public\sdk\inc\reason.h
+FILE 4667 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 4668 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 4669 f:\sp\vctools\crt_bld\self_x86\crt\src\ismbbyte.c
+FILE 4670 f:\sp\public\sdk\inc\winnt.h
+FILE 4671 f:\sp\public\sdk\inc\specstrings.h
+FILE 4672 f:\sp\public\sdk\inc\basetsd.h
+FILE 4673 f:\sp\public\sdk\inc\pshpack4.h
+FILE 4674 f:\sp\public\sdk\inc\winnetwk.h
+FILE 4675 f:\sp\public\sdk\inc\stralign.h
+FILE 4676 f:\sp\public\sdk\inc\poppack.h
+FILE 4677 f:\sp\public\sdk\inc\winsvc.h
+FILE 4678 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 4679 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 4680 f:\sp\public\sdk\inc\winuser.h
+FILE 4681 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 4682 f:\sp\public\sdk\inc\mcx.h
+FILE 4683 f:\sp\public\sdk\inc\pshpack8.h
+FILE 4684 f:\sp\public\sdk\inc\guiddef.h
+FILE 4685 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 4686 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h
+FILE 4687 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 4688 f:\sp\public\sdk\inc\windows.h
+FILE 4689 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 4690 f:\sp\public\sdk\inc\winnls.h
+FILE 4691 f:\sp\public\sdk\inc\pshpack1.h
+FILE 4692 f:\sp\public\sdk\inc\winerror.h
+FILE 4693 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 4694 f:\sp\public\sdk\inc\winreg.h
+FILE 4695 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 4696 f:\sp\public\sdk\inc\ddbanned.h
+FILE 4697 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 4698 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 4699 f:\sp\public\sdk\inc\tvout.h
+FILE 4700 f:\sp\vctools\crt_bld\self_x86\crt\src\mbdata.h
+FILE 4701 f:\sp\public\sdk\inc\winnetwk.h
+FILE 4702 f:\sp\public\sdk\inc\imm.h
+FILE 4703 f:\sp\vctools\crt_bld\self_x86\crt\src\io.h
+FILE 4704 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 4705 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 4706 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 4707 f:\sp\public\sdk\inc\windef.h
+FILE 4708 f:\sp\public\sdk\inc\pshpack1.h
+FILE 4709 f:\sp\public\sdk\inc\winver.h
+FILE 4710 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 4711 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 4712 f:\sp\public\sdk\inc\winnt.h
+FILE 4713 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 4714 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 4715 f:\sp\public\sdk\inc\winreg.h
+FILE 4716 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 4717 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 4718 f:\sp\public\sdk\inc\winbase.h
+FILE 4719 f:\sp\public\sdk\inc\winerror.h
+FILE 4720 f:\sp\public\sdk\inc\pshpack8.h
+FILE 4721 f:\sp\vctools\crt_bld\self_x86\crt\src\putwch.c
+FILE 4722 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 4723 f:\sp\public\sdk\inc\reason.h
+FILE 4724 f:\sp\public\sdk\inc\wincon.h
+FILE 4725 f:\sp\public\sdk\inc\pshpack2.h
+FILE 4726 f:\sp\public\sdk\inc\mcx.h
+FILE 4727 f:\sp\public\sdk\inc\winuser.h
+FILE 4728 f:\sp\public\sdk\inc\winnls.h
+FILE 4729 f:\sp\public\sdk\inc\guiddef.h
+FILE 4730 f:\sp\public\sdk\inc\stralign.h
+FILE 4731 f:\sp\public\sdk\inc\ddbanned.h
+FILE 4732 f:\sp\public\sdk\inc\specstrings.h
+FILE 4733 f:\sp\vctools\crt_bld\self_x86\crt\src\file2.h
+FILE 4734 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 4735 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 4736 f:\sp\public\sdk\inc\basetsd.h
+FILE 4737 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 4738 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 4739 f:\sp\public\sdk\inc\windows.h
+FILE 4740 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 4741 f:\sp\public\sdk\inc\tvout.h
+FILE 4742 f:\sp\public\sdk\inc\winsvc.h
+FILE 4743 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 4744 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 4745 f:\sp\public\sdk\inc\wingdi.h
+FILE 4746 f:\sp\public\sdk\inc\pshpack4.h
+FILE 4747 f:\sp\vctools\crt_bld\self_x86\crt\src\conio.h
+FILE 4748 f:\sp\public\sdk\inc\poppack.h
+FILE 4749 f:\sp\public\sdk\inc\reason.h
+FILE 4750 f:\sp\public\sdk\inc\wincon.h
+FILE 4751 f:\sp\vctools\crt_bld\self_x86\crt\src\io.h
+FILE 4752 f:\sp\public\sdk\inc\poppack.h
+FILE 4753 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 4754 f:\sp\public\sdk\inc\mcx.h
+FILE 4755 f:\sp\public\sdk\inc\winuser.h
+FILE 4756 f:\sp\public\sdk\inc\winnls.h
+FILE 4757 f:\sp\vctools\crt_bld\self_x86\crt\src\msdos.h
+FILE 4758 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 4759 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 4760 f:\sp\public\sdk\inc\stralign.h
+FILE 4761 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 4762 f:\sp\public\sdk\inc\windef.h
+FILE 4763 f:\sp\public\sdk\inc\tvout.h
+FILE 4764 f:\sp\public\sdk\inc\winsvc.h
+FILE 4765 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl
+FILE 4766 f:\sp\public\sdk\inc\wingdi.h
+FILE 4767 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 4768 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 4769 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 4770 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 4771 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 4772 f:\sp\public\sdk\inc\winnt.h
+FILE 4773 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 4774 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 4775 f:\sp\public\sdk\inc\winnetwk.h
+FILE 4776 f:\sp\public\sdk\inc\imm.h
+FILE 4777 f:\sp\vctools\crt_bld\self_x86\crt\src\write.c
+FILE 4778 f:\sp\public\sdk\inc\winbase.h
+FILE 4779 f:\sp\public\sdk\inc\winerror.h
+FILE 4780 f:\sp\public\sdk\inc\pshpack1.h
+FILE 4781 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 4782 f:\sp\public\sdk\inc\pshpack8.h
+FILE 4783 f:\sp\public\sdk\inc\winver.h
+FILE 4784 f:\sp\vctools\crt_bld\self_x86\crt\src\wchar.h
+FILE 4785 f:\sp\public\sdk\inc\ddbanned.h
+FILE 4786 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 4787 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 4788 f:\sp\public\sdk\inc\pshpack2.h
+FILE 4789 f:\sp\public\sdk\inc\winreg.h
+FILE 4790 f:\sp\public\sdk\inc\guiddef.h
+FILE 4791 f:\sp\public\sdk\inc\windows.h
+FILE 4792 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 4793 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 4794 f:\sp\public\sdk\inc\specstrings.h
+FILE 4795 f:\sp\public\sdk\inc\basetsd.h
+FILE 4796 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 4797 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 4798 f:\sp\public\sdk\inc\pshpack4.h
+FILE 4799 f:\sp\public\sdk\inc\reason.h
+FILE 4800 f:\sp\public\sdk\inc\wincon.h
+FILE 4801 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 4802 f:\sp\public\sdk\inc\poppack.h
+FILE 4803 f:\sp\public\sdk\inc\mcx.h
+FILE 4804 f:\sp\public\sdk\inc\winuser.h
+FILE 4805 f:\sp\public\sdk\inc\winnls.h
+FILE 4806 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 4807 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 4808 f:\sp\public\sdk\inc\stralign.h
+FILE 4809 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 4810 f:\sp\public\sdk\inc\windef.h
+FILE 4811 f:\sp\public\sdk\inc\tvout.h
+FILE 4812 f:\sp\public\sdk\inc\winsvc.h
+FILE 4813 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 4814 f:\sp\public\sdk\inc\wingdi.h
+FILE 4815 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 4816 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 4817 f:\sp\public\sdk\inc\winnt.h
+FILE 4818 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 4819 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 4820 f:\sp\vctools\crt_bld\self_x86\crt\src\io.h
+FILE 4821 f:\sp\public\sdk\inc\winnetwk.h
+FILE 4822 f:\sp\public\sdk\inc\imm.h
+FILE 4823 f:\sp\vctools\crt_bld\self_x86\crt\src\fcntl.h
+FILE 4824 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 4825 f:\sp\vctools\crt_bld\self_x86\crt\src\osfinfo.c
+FILE 4826 f:\sp\public\sdk\inc\winbase.h
+FILE 4827 f:\sp\public\sdk\inc\winerror.h
+FILE 4828 f:\sp\public\sdk\inc\pshpack1.h
+FILE 4829 f:\sp\public\sdk\inc\pshpack8.h
+FILE 4830 f:\sp\public\sdk\inc\winver.h
+FILE 4831 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 4832 f:\sp\vctools\crt_bld\self_x86\crt\src\msdos.h
+FILE 4833 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 4834 f:\sp\public\sdk\inc\ddbanned.h
+FILE 4835 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 4836 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 4837 f:\sp\public\sdk\inc\pshpack2.h
+FILE 4838 f:\sp\public\sdk\inc\winreg.h
+FILE 4839 f:\sp\public\sdk\inc\guiddef.h
+FILE 4840 f:\sp\public\sdk\inc\windows.h
+FILE 4841 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 4842 f:\sp\public\sdk\inc\specstrings.h
+FILE 4843 f:\sp\public\sdk\inc\basetsd.h
+FILE 4844 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 4845 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 4846 f:\sp\public\sdk\inc\pshpack4.h
+FILE 4847 f:\sp\public\sdk\inc\reason.h
+FILE 4848 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 4849 f:\sp\public\sdk\inc\wincon.h
+FILE 4850 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 4851 f:\sp\public\sdk\inc\poppack.h
+FILE 4852 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 4853 f:\sp\public\sdk\inc\mcx.h
+FILE 4854 f:\sp\public\sdk\inc\winuser.h
+FILE 4855 f:\sp\public\sdk\inc\winnls.h
+FILE 4856 f:\sp\public\sdk\inc\stralign.h
+FILE 4857 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 4858 f:\sp\public\sdk\inc\windef.h
+FILE 4859 f:\sp\public\sdk\inc\tvout.h
+FILE 4860 f:\sp\vctools\crt_bld\self_x86\crt\src\io.h
+FILE 4861 f:\sp\public\sdk\inc\winsvc.h
+FILE 4862 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 4863 f:\sp\public\sdk\inc\wingdi.h
+FILE 4864 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 4865 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 4866 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 4867 f:\sp\public\sdk\inc\winnt.h
+FILE 4868 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 4869 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 4870 f:\sp\public\sdk\inc\winnetwk.h
+FILE 4871 f:\sp\public\sdk\inc\imm.h
+FILE 4872 f:\sp\vctools\crt_bld\self_x86\crt\src\lseeki64.c
+FILE 4873 f:\sp\public\sdk\inc\winbase.h
+FILE 4874 f:\sp\public\sdk\inc\winerror.h
+FILE 4875 f:\sp\public\sdk\inc\pshpack1.h
+FILE 4876 f:\sp\vctools\crt_bld\self_x86\crt\src\msdos.h
+FILE 4877 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 4878 f:\sp\public\sdk\inc\pshpack8.h
+FILE 4879 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 4880 f:\sp\public\sdk\inc\winver.h
+FILE 4881 f:\sp\public\sdk\inc\ddbanned.h
+FILE 4882 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 4883 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 4884 f:\sp\public\sdk\inc\pshpack2.h
+FILE 4885 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 4886 f:\sp\public\sdk\inc\winreg.h
+FILE 4887 f:\sp\public\sdk\inc\guiddef.h
+FILE 4888 f:\sp\public\sdk\inc\windows.h
+FILE 4889 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 4890 f:\sp\public\sdk\inc\specstrings.h
+FILE 4891 f:\sp\public\sdk\inc\basetsd.h
+FILE 4892 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 4893 f:\sp\public\sdk\inc\pshpack4.h
+FILE 4894 f:\sp\public\sdk\inc\pshpack4.h
+FILE 4895 f:\sp\public\sdk\inc\poppack.h
+FILE 4896 f:\sp\vctools\crt_bld\self_x86\crt\src\io.h
+FILE 4897 f:\sp\public\sdk\inc\winnetwk.h
+FILE 4898 f:\sp\public\sdk\inc\imm.h
+FILE 4899 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 4900 f:\sp\public\sdk\inc\windef.h
+FILE 4901 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 4902 f:\sp\public\sdk\inc\pshpack1.h
+FILE 4903 f:\sp\public\sdk\inc\winver.h
+FILE 4904 f:\sp\vctools\crt_bld\self_x86\crt\src\msdos.h
+FILE 4905 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 4906 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 4907 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 4908 f:\sp\public\sdk\inc\winnt.h
+FILE 4909 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 4910 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 4911 f:\sp\public\sdk\inc\winreg.h
+FILE 4912 f:\sp\vctools\crt_bld\self_x86\crt\src\isatty.c
+FILE 4913 f:\sp\public\sdk\inc\winbase.h
+FILE 4914 f:\sp\public\sdk\inc\winerror.h
+FILE 4915 f:\sp\public\sdk\inc\pshpack8.h
+FILE 4916 f:\sp\public\sdk\inc\reason.h
+FILE 4917 f:\sp\public\sdk\inc\wincon.h
+FILE 4918 f:\sp\public\sdk\inc\ddbanned.h
+FILE 4919 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 4920 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 4921 f:\sp\public\sdk\inc\pshpack2.h
+FILE 4922 f:\sp\public\sdk\inc\mcx.h
+FILE 4923 f:\sp\public\sdk\inc\winuser.h
+FILE 4924 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 4925 f:\sp\public\sdk\inc\winnls.h
+FILE 4926 f:\sp\public\sdk\inc\guiddef.h
+FILE 4927 f:\sp\public\sdk\inc\windows.h
+FILE 4928 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 4929 f:\sp\public\sdk\inc\specstrings.h
+FILE 4930 f:\sp\public\sdk\inc\basetsd.h
+FILE 4931 f:\sp\public\sdk\inc\stralign.h
+FILE 4932 f:\sp\public\sdk\inc\tvout.h
+FILE 4933 f:\sp\public\sdk\inc\winsvc.h
+FILE 4934 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 4935 f:\sp\public\sdk\inc\wingdi.h
+FILE 4936 f:\sp\public\sdk\inc\poppack.h
+FILE 4937 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 4938 f:\sp\public\sdk\inc\winnetwk.h
+FILE 4939 f:\sp\public\sdk\inc\imm.h
+FILE 4940 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 4941 f:\sp\public\sdk\inc\windef.h
+FILE 4942 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 4943 f:\sp\public\sdk\inc\pshpack1.h
+FILE 4944 f:\sp\vctools\crt_bld\self_x86\crt\src\msdos.h
+FILE 4945 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h
+FILE 4946 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 4947 f:\sp\public\sdk\inc\winver.h
+FILE 4948 f:\sp\public\sdk\inc\windows.h
+FILE 4949 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 4950 f:\sp\public\sdk\inc\winnt.h
+FILE 4951 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 4952 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 4953 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 4954 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 4955 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 4956 f:\sp\public\sdk\inc\winreg.h
+FILE 4957 f:\sp\public\sdk\inc\winbase.h
+FILE 4958 f:\sp\vctools\crt_bld\self_x86\crt\src\ioinit.c
+FILE 4959 f:\sp\public\sdk\inc\winerror.h
+FILE 4960 f:\sp\public\sdk\inc\pshpack8.h
+FILE 4961 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 4962 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 4963 f:\sp\public\sdk\inc\reason.h
+FILE 4964 f:\sp\public\sdk\inc\wincon.h
+FILE 4965 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 4966 f:\sp\public\sdk\inc\ddbanned.h
+FILE 4967 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 4968 f:\sp\public\sdk\inc\pshpack2.h
+FILE 4969 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 4970 f:\sp\public\sdk\inc\mcx.h
+FILE 4971 f:\sp\public\sdk\inc\winuser.h
+FILE 4972 f:\sp\public\sdk\inc\winnls.h
+FILE 4973 f:\sp\public\sdk\inc\guiddef.h
+FILE 4974 f:\sp\public\sdk\inc\specstrings.h
+FILE 4975 f:\sp\public\sdk\inc\basetsd.h
+FILE 4976 f:\sp\public\sdk\inc\stralign.h
+FILE 4977 f:\sp\public\sdk\inc\tvout.h
+FILE 4978 f:\sp\public\sdk\inc\winsvc.h
+FILE 4979 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 4980 f:\sp\public\sdk\inc\wingdi.h
+FILE 4981 f:\sp\public\sdk\inc\pshpack4.h
+FILE 4982 f:\sp\public\sdk\inc\reason.h
+FILE 4983 f:\sp\public\sdk\inc\wincon.h
+FILE 4984 f:\sp\public\sdk\inc\pshpack2.h
+FILE 4985 f:\sp\public\sdk\inc\mcx.h
+FILE 4986 f:\sp\public\sdk\inc\winuser.h
+FILE 4987 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 4988 f:\sp\public\sdk\inc\winnls.h
+FILE 4989 f:\sp\public\sdk\inc\guiddef.h
+FILE 4990 f:\sp\public\sdk\inc\windows.h
+FILE 4991 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 4992 f:\sp\public\sdk\inc\specstrings.h
+FILE 4993 f:\sp\public\sdk\inc\basetsd.h
+FILE 4994 f:\sp\public\sdk\inc\stralign.h
+FILE 4995 f:\sp\public\sdk\inc\tvout.h
+FILE 4996 f:\sp\public\sdk\inc\winsvc.h
+FILE 4997 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 4998 f:\sp\public\sdk\inc\wingdi.h
+FILE 4999 f:\sp\public\sdk\inc\pshpack4.h
+FILE 5000 f:\sp\public\sdk\inc\poppack.h
+FILE 5001 f:\sp\vctools\crt_bld\self_x86\crt\src\sect_attribs.h
+FILE 5002 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 5003 f:\sp\public\sdk\inc\winnetwk.h
+FILE 5004 f:\sp\public\sdk\inc\imm.h
+FILE 5005 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 5006 f:\sp\public\sdk\inc\windef.h
+FILE 5007 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 5008 f:\sp\vctools\crt_bld\self_x86\crt\src\initcon.c
+FILE 5009 f:\sp\public\sdk\inc\pshpack1.h
+FILE 5010 f:\sp\public\sdk\inc\winver.h
+FILE 5011 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 5012 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 5013 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 5014 f:\sp\public\sdk\inc\winnt.h
+FILE 5015 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 5016 f:\sp\public\sdk\inc\ddbanned.h
+FILE 5017 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 5018 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 5019 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 5020 f:\sp\public\sdk\inc\winreg.h
+FILE 5021 f:\sp\public\sdk\inc\winbase.h
+FILE 5022 f:\sp\public\sdk\inc\winerror.h
+FILE 5023 f:\sp\public\sdk\inc\pshpack8.h
+FILE 5024 f:\sp\public\sdk\inc\poppack.h
+FILE 5025 f:\sp\vctools\crt_bld\self_x86\crt\src\msdos.h
+FILE 5026 f:\sp\public\sdk\inc\winnetwk.h
+FILE 5027 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 5028 f:\sp\public\sdk\inc\imm.h
+FILE 5029 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 5030 f:\sp\public\sdk\inc\windef.h
+FILE 5031 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 5032 f:\sp\public\sdk\inc\pshpack1.h
+FILE 5033 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 5034 f:\sp\public\sdk\inc\winver.h
+FILE 5035 f:\sp\public\sdk\inc\windows.h
+FILE 5036 f:\sp\public\sdk\inc\winnt.h
+FILE 5037 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 5038 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 5039 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 5040 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 5041 f:\sp\public\sdk\inc\winreg.h
+FILE 5042 f:\sp\public\sdk\inc\winbase.h
+FILE 5043 f:\sp\vctools\crt_bld\self_x86\crt\src\commit.c
+FILE 5044 f:\sp\public\sdk\inc\winerror.h
+FILE 5045 f:\sp\public\sdk\inc\pshpack8.h
+FILE 5046 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 5047 f:\sp\public\sdk\inc\reason.h
+FILE 5048 f:\sp\vctools\crt_bld\self_x86\crt\src\io.h
+FILE 5049 f:\sp\public\sdk\inc\wincon.h
+FILE 5050 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 5051 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 5052 f:\sp\public\sdk\inc\ddbanned.h
+FILE 5053 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 5054 f:\sp\public\sdk\inc\pshpack2.h
+FILE 5055 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 5056 f:\sp\public\sdk\inc\mcx.h
+FILE 5057 f:\sp\public\sdk\inc\winuser.h
+FILE 5058 f:\sp\public\sdk\inc\winnls.h
+FILE 5059 f:\sp\public\sdk\inc\guiddef.h
+FILE 5060 f:\sp\public\sdk\inc\specstrings.h
+FILE 5061 f:\sp\public\sdk\inc\basetsd.h
+FILE 5062 f:\sp\public\sdk\inc\stralign.h
+FILE 5063 f:\sp\public\sdk\inc\tvout.h
+FILE 5064 f:\sp\public\sdk\inc\winsvc.h
+FILE 5065 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 5066 f:\sp\public\sdk\inc\wingdi.h
+FILE 5067 f:\sp\public\sdk\inc\pshpack4.h
+FILE 5068 f:\sp\public\sdk\inc\reason.h
+FILE 5069 f:\sp\public\sdk\inc\wincon.h
+FILE 5070 f:\sp\vctools\crt_bld\self_x86\crt\src\io.h
+FILE 5071 f:\sp\public\sdk\inc\poppack.h
+FILE 5072 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 5073 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 5074 f:\sp\public\sdk\inc\mcx.h
+FILE 5075 f:\sp\public\sdk\inc\winuser.h
+FILE 5076 f:\sp\public\sdk\inc\winnls.h
+FILE 5077 f:\sp\public\sdk\inc\stralign.h
+FILE 5078 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 5079 f:\sp\public\sdk\inc\windef.h
+FILE 5080 f:\sp\public\sdk\inc\tvout.h
+FILE 5081 f:\sp\public\sdk\inc\winsvc.h
+FILE 5082 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 5083 f:\sp\public\sdk\inc\wingdi.h
+FILE 5084 f:\sp\vctools\crt_bld\self_x86\crt\src\msdos.h
+FILE 5085 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 5086 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 5087 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 5088 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 5089 f:\sp\public\sdk\inc\winnt.h
+FILE 5090 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 5091 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 5092 f:\sp\public\sdk\inc\winnetwk.h
+FILE 5093 f:\sp\public\sdk\inc\imm.h
+FILE 5094 f:\sp\vctools\crt_bld\self_x86\crt\src\close.c
+FILE 5095 f:\sp\public\sdk\inc\winbase.h
+FILE 5096 f:\sp\public\sdk\inc\winerror.h
+FILE 5097 f:\sp\public\sdk\inc\pshpack1.h
+FILE 5098 f:\sp\public\sdk\inc\pshpack8.h
+FILE 5099 f:\sp\public\sdk\inc\winver.h
+FILE 5100 f:\sp\public\sdk\inc\ddbanned.h
+FILE 5101 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 5102 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 5103 f:\sp\public\sdk\inc\pshpack2.h
+FILE 5104 f:\sp\public\sdk\inc\winreg.h
+FILE 5105 f:\sp\public\sdk\inc\guiddef.h
+FILE 5106 f:\sp\public\sdk\inc\windows.h
+FILE 5107 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 5108 f:\sp\public\sdk\inc\specstrings.h
+FILE 5109 f:\sp\public\sdk\inc\basetsd.h
+FILE 5110 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 5111 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 5112 f:\sp\public\sdk\inc\pshpack4.h
+FILE 5113 F:\SP\vctools\crt_bld\SELF_X86\crt\src\intel\ulldvrm.asm
+FILE 5114 F:\SP\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc
+FILE 5115 F:\SP\vctools\crt_bld\SELF_X86\crt\src\mm.inc
+FILE 5116 F:\SP\vctools\crt_bld\SELF_X86\crt\src\intel\llmul.asm
+FILE 5117 F:\SP\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc
+FILE 5118 F:\SP\vctools\crt_bld\SELF_X86\crt\src\mm.inc
+FILE 5119 f:\sp\vctools\crt_bld\self_x86\crt\src\use_ansi.h
+FILE 5120 f:\sp\vctools\crt_bld\self_x86\crt\src\new
+FILE 5121 f:\sp\vctools\crt_bld\self_x86\crt\src\exception
+FILE 5122 f:\sp\vctools\crt_bld\self_x86\crt\src\xstddef
+FILE 5123 f:\sp\vctools\crt_bld\self_x86\crt\src\new.cpp
+FILE 5124 f:\sp\vctools\crt_bld\self_x86\crt\src\cstddef
+FILE 5125 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 5126 f:\sp\vctools\crt_bld\self_x86\crt\src\eh.h
+FILE 5127 f:\sp\vctools\crt_bld\self_x86\crt\src\cstdlib
+FILE 5128 f:\sp\vctools\crt_bld\self_x86\crt\src\yvals.h
+FILE 5129 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 5130 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 5131 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 5132 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 5133 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 5134 f:\sp\public\sdk\inc\ddbanned.h
+FILE 5135 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 5136 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 5137 f:\sp\public\sdk\inc\poppack.h
+FILE 5138 f:\sp\public\sdk\inc\winnetwk.h
+FILE 5139 f:\sp\public\sdk\inc\imm.h
+FILE 5140 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 5141 f:\sp\public\sdk\inc\windef.h
+FILE 5142 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 5143 f:\sp\public\sdk\inc\pshpack1.h
+FILE 5144 f:\sp\public\sdk\inc\winver.h
+FILE 5145 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 5146 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 5147 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 5148 f:\sp\public\sdk\inc\winnt.h
+FILE 5149 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 5150 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 5151 f:\sp\public\sdk\inc\winreg.h
+FILE 5152 f:\sp\vctools\crt_bld\self_x86\crt\src\_newmode.c
+FILE 5153 f:\sp\public\sdk\inc\winbase.h
+FILE 5154 f:\sp\public\sdk\inc\winerror.h
+FILE 5155 f:\sp\public\sdk\inc\pshpack8.h
+FILE 5156 f:\sp\public\sdk\inc\reason.h
+FILE 5157 f:\sp\public\sdk\inc\wincon.h
+FILE 5158 f:\sp\public\sdk\inc\ddbanned.h
+FILE 5159 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 5160 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 5161 f:\sp\public\sdk\inc\pshpack2.h
+FILE 5162 f:\sp\public\sdk\inc\mcx.h
+FILE 5163 f:\sp\public\sdk\inc\winuser.h
+FILE 5164 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 5165 f:\sp\public\sdk\inc\winnls.h
+FILE 5166 f:\sp\public\sdk\inc\guiddef.h
+FILE 5167 f:\sp\public\sdk\inc\windows.h
+FILE 5168 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 5169 f:\sp\public\sdk\inc\specstrings.h
+FILE 5170 f:\sp\public\sdk\inc\basetsd.h
+FILE 5171 f:\sp\public\sdk\inc\stralign.h
+FILE 5172 f:\sp\public\sdk\inc\tvout.h
+FILE 5173 f:\sp\public\sdk\inc\winsvc.h
+FILE 5174 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 5175 f:\sp\public\sdk\inc\wingdi.h
+FILE 5176 f:\sp\public\sdk\inc\pshpack4.h
+FILE 5177 f:\sp\vctools\crt_bld\self_x86\crt\src\new.h
+FILE 5178 f:\sp\public\sdk\inc\winerror.h
+FILE 5179 f:\sp\vctools\crt_bld\self_x86\crt\src\rtcsup.h
+FILE 5180 f:\sp\vctools\crt_bld\self_x86\crt\src\rtcapi.h
+FILE 5181 f:\sp\public\sdk\inc\winreg.h
+FILE 5182 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 5183 f:\sp\public\sdk\inc\tvout.h
+FILE 5184 f:\sp\vctools\crt_bld\self_x86\crt\src\delete.cpp
+FILE 5185 f:\sp\public\sdk\inc\wincon.h
+FILE 5186 f:\sp\public\sdk\inc\imm.h
+FILE 5187 f:\sp\public\sdk\inc\winbase.h
+FILE 5188 f:\sp\public\sdk\inc\wingdi.h
+FILE 5189 f:\sp\public\sdk\inc\winver.h
+FILE 5190 f:\sp\public\sdk\inc\windows.h
+FILE 5191 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 5192 f:\sp\public\sdk\inc\pshpack2.h
+FILE 5193 f:\sp\public\sdk\inc\reason.h
+FILE 5194 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 5195 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 5196 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 5197 f:\sp\public\sdk\inc\specstrings.h
+FILE 5198 f:\sp\public\sdk\inc\basetsd.h
+FILE 5199 f:\sp\public\sdk\inc\pshpack4.h
+FILE 5200 f:\sp\public\sdk\inc\winnetwk.h
+FILE 5201 f:\sp\public\sdk\inc\stralign.h
+FILE 5202 f:\sp\public\sdk\inc\poppack.h
+FILE 5203 f:\sp\public\sdk\inc\winsvc.h
+FILE 5204 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 5205 f:\sp\public\sdk\inc\windef.h
+FILE 5206 f:\sp\public\sdk\inc\winuser.h
+FILE 5207 f:\sp\public\sdk\inc\mcx.h
+FILE 5208 f:\sp\public\sdk\inc\pshpack8.h
+FILE 5209 f:\sp\public\sdk\inc\ddbanned.h
+FILE 5210 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 5211 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 5212 f:\sp\public\sdk\inc\guiddef.h
+FILE 5213 f:\sp\public\sdk\inc\winnt.h
+FILE 5214 f:\sp\public\sdk\inc\winnls.h
+FILE 5215 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 5216 f:\sp\public\sdk\inc\pshpack1.h
+FILE 5217 f:\sp\public\sdk\inc\tvout.h
+FILE 5218 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 5219 f:\sp\vctools\crt_bld\self_x86\crt\src\process.h
+FILE 5220 f:\sp\public\sdk\inc\wincon.h
+FILE 5221 f:\sp\public\sdk\inc\imm.h
+FILE 5222 f:\sp\public\sdk\inc\winbase.h
+FILE 5223 f:\sp\public\sdk\inc\wingdi.h
+FILE 5224 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 5225 f:\sp\public\sdk\inc\winver.h
+FILE 5226 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 5227 f:\sp\public\sdk\inc\windows.h
+FILE 5228 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 5229 f:\sp\public\sdk\inc\pshpack2.h
+FILE 5230 f:\sp\vctools\crt_bld\self_x86\crt\src\handler.cpp
+FILE 5231 f:\sp\public\sdk\inc\reason.h
+FILE 5232 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 5233 f:\sp\public\sdk\inc\specstrings.h
+FILE 5234 f:\sp\public\sdk\inc\basetsd.h
+FILE 5235 f:\sp\public\sdk\inc\pshpack4.h
+FILE 5236 f:\sp\public\sdk\inc\winnetwk.h
+FILE 5237 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 5238 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 5239 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 5240 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 5241 f:\sp\public\sdk\inc\stralign.h
+FILE 5242 f:\sp\public\sdk\inc\poppack.h
+FILE 5243 f:\sp\public\sdk\inc\winsvc.h
+FILE 5244 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 5245 f:\sp\public\sdk\inc\windef.h
+FILE 5246 f:\sp\public\sdk\inc\winuser.h
+FILE 5247 f:\sp\public\sdk\inc\mcx.h
+FILE 5248 f:\sp\public\sdk\inc\pshpack8.h
+FILE 5249 f:\sp\public\sdk\inc\guiddef.h
+FILE 5250 f:\sp\public\sdk\inc\winnt.h
+FILE 5251 f:\sp\public\sdk\inc\winnls.h
+FILE 5252 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 5253 f:\sp\public\sdk\inc\pshpack1.h
+FILE 5254 f:\sp\public\sdk\inc\winerror.h
+FILE 5255 f:\sp\public\sdk\inc\ddbanned.h
+FILE 5256 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 5257 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 5258 f:\sp\public\sdk\inc\winreg.h
+FILE 5259 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 5260 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 5261 f:\sp\vctools\crt_bld\self_x86\crt\src\new.h
+FILE 5262 f:\sp\public\sdk\inc\winsvc.h
+FILE 5263 f:\sp\public\sdk\inc\wingdi.h
+FILE 5264 f:\sp\public\sdk\inc\pshpack4.h
+FILE 5265 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 5266 f:\sp\public\sdk\inc\poppack.h
+FILE 5267 f:\sp\public\sdk\inc\winnt.h
+FILE 5268 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 5269 f:\sp\public\sdk\inc\winnetwk.h
+FILE 5270 f:\sp\public\sdk\inc\imm.h
+FILE 5271 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 5272 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 5273 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 5274 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 5275 f:\sp\public\sdk\inc\pshpack1.h
+FILE 5276 f:\sp\public\sdk\inc\winver.h
+FILE 5277 f:\sp\public\sdk\inc\guiddef.h
+FILE 5278 f:\sp\public\sdk\inc\specstrings.h
+FILE 5279 f:\sp\public\sdk\inc\basetsd.h
+FILE 5280 f:\sp\vctools\crt_bld\self_x86\crt\src\winheap.h
+FILE 5281 f:\sp\vctools\crt_bld\self_x86\crt\src\sbheap.c
+FILE 5282 f:\sp\public\sdk\inc\windows.h
+FILE 5283 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 5284 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 5285 f:\sp\public\sdk\inc\winreg.h
+FILE 5286 f:\sp\public\sdk\inc\winbase.h
+FILE 5287 f:\sp\public\sdk\inc\winerror.h
+FILE 5288 f:\sp\public\sdk\inc\pshpack8.h
+FILE 5289 f:\sp\public\sdk\inc\ddbanned.h
+FILE 5290 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 5291 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 5292 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 5293 f:\sp\public\sdk\inc\reason.h
+FILE 5294 f:\sp\public\sdk\inc\wincon.h
+FILE 5295 f:\sp\public\sdk\inc\pshpack2.h
+FILE 5296 f:\sp\public\sdk\inc\mcx.h
+FILE 5297 f:\sp\public\sdk\inc\winuser.h
+FILE 5298 f:\sp\public\sdk\inc\winnls.h
+FILE 5299 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 5300 f:\sp\public\sdk\inc\windef.h
+FILE 5301 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 5302 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 5303 f:\sp\public\sdk\inc\stralign.h
+FILE 5304 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 5305 f:\sp\public\sdk\inc\tvout.h
+FILE 5306 f:\sp\public\sdk\inc\winver.h
+FILE 5307 f:\sp\vctools\crt_bld\self_x86\crt\src\rtcsup.h
+FILE 5308 f:\sp\vctools\crt_bld\self_x86\crt\src\rtcapi.h
+FILE 5309 f:\sp\public\sdk\inc\guiddef.h
+FILE 5310 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 5311 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 5312 f:\sp\public\sdk\inc\specstrings.h
+FILE 5313 f:\sp\public\sdk\inc\basetsd.h
+FILE 5314 f:\sp\vctools\crt_bld\self_x86\crt\src\winheap.h
+FILE 5315 f:\sp\public\sdk\inc\windows.h
+FILE 5316 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 5317 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 5318 f:\sp\public\sdk\inc\winreg.h
+FILE 5319 f:\sp\public\sdk\inc\winbase.h
+FILE 5320 f:\sp\public\sdk\inc\winerror.h
+FILE 5321 f:\sp\public\sdk\inc\pshpack8.h
+FILE 5322 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 5323 f:\sp\public\sdk\inc\reason.h
+FILE 5324 f:\sp\public\sdk\inc\wincon.h
+FILE 5325 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 5326 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 5327 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 5328 f:\sp\public\sdk\inc\pshpack2.h
+FILE 5329 f:\sp\public\sdk\inc\mcx.h
+FILE 5330 f:\sp\public\sdk\inc\winuser.h
+FILE 5331 f:\sp\public\sdk\inc\winnls.h
+FILE 5332 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 5333 f:\sp\public\sdk\inc\windef.h
+FILE 5334 f:\sp\public\sdk\inc\stralign.h
+FILE 5335 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 5336 f:\sp\public\sdk\inc\tvout.h
+FILE 5337 f:\sp\public\sdk\inc\winsvc.h
+FILE 5338 f:\sp\vctools\crt_bld\self_x86\crt\src\realloc.c
+FILE 5339 f:\sp\public\sdk\inc\wingdi.h
+FILE 5340 f:\sp\public\sdk\inc\pshpack4.h
+FILE 5341 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 5342 f:\sp\public\sdk\inc\poppack.h
+FILE 5343 f:\sp\public\sdk\inc\winnt.h
+FILE 5344 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 5345 f:\sp\public\sdk\inc\winnetwk.h
+FILE 5346 f:\sp\public\sdk\inc\ddbanned.h
+FILE 5347 f:\sp\public\sdk\inc\imm.h
+FILE 5348 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 5349 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 5350 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 5351 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 5352 f:\sp\public\sdk\inc\pshpack1.h
+FILE 5353 f:\sp\public\sdk\inc\pshpack2.h
+FILE 5354 f:\sp\vctools\crt_bld\self_x86\crt\src\winheap.h
+FILE 5355 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 5356 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 5357 f:\sp\public\sdk\inc\mcx.h
+FILE 5358 f:\sp\public\sdk\inc\winuser.h
+FILE 5359 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 5360 f:\sp\public\sdk\inc\winnls.h
+FILE 5361 f:\sp\public\sdk\inc\guiddef.h
+FILE 5362 f:\sp\public\sdk\inc\windows.h
+FILE 5363 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 5364 f:\sp\public\sdk\inc\specstrings.h
+FILE 5365 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 5366 f:\sp\public\sdk\inc\basetsd.h
+FILE 5367 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 5368 f:\sp\public\sdk\inc\stralign.h
+FILE 5369 f:\sp\public\sdk\inc\tvout.h
+FILE 5370 f:\sp\public\sdk\inc\winsvc.h
+FILE 5371 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 5372 f:\sp\public\sdk\inc\wingdi.h
+FILE 5373 f:\sp\public\sdk\inc\pshpack4.h
+FILE 5374 f:\sp\public\sdk\inc\poppack.h
+FILE 5375 f:\sp\public\sdk\inc\winnetwk.h
+FILE 5376 f:\sp\public\sdk\inc\imm.h
+FILE 5377 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 5378 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 5379 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 5380 f:\sp\public\sdk\inc\windef.h
+FILE 5381 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 5382 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 5383 f:\sp\vctools\crt_bld\self_x86\crt\src\msize.c
+FILE 5384 f:\sp\public\sdk\inc\pshpack1.h
+FILE 5385 f:\sp\public\sdk\inc\winver.h
+FILE 5386 f:\sp\public\sdk\inc\winnt.h
+FILE 5387 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 5388 f:\sp\public\sdk\inc\winreg.h
+FILE 5389 f:\sp\public\sdk\inc\ddbanned.h
+FILE 5390 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 5391 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 5392 f:\sp\public\sdk\inc\winbase.h
+FILE 5393 f:\sp\public\sdk\inc\winerror.h
+FILE 5394 f:\sp\public\sdk\inc\pshpack8.h
+FILE 5395 f:\sp\public\sdk\inc\reason.h
+FILE 5396 f:\sp\public\sdk\inc\wincon.h
+FILE 5397 f:\sp\public\sdk\inc\pshpack2.h
+FILE 5398 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 5399 f:\sp\public\sdk\inc\mcx.h
+FILE 5400 f:\sp\public\sdk\inc\winuser.h
+FILE 5401 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 5402 f:\sp\public\sdk\inc\winnls.h
+FILE 5403 f:\sp\public\sdk\inc\guiddef.h
+FILE 5404 f:\sp\public\sdk\inc\windows.h
+FILE 5405 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 5406 f:\sp\public\sdk\inc\specstrings.h
+FILE 5407 f:\sp\public\sdk\inc\basetsd.h
+FILE 5408 f:\sp\public\sdk\inc\stralign.h
+FILE 5409 f:\sp\public\sdk\inc\tvout.h
+FILE 5410 f:\sp\public\sdk\inc\winsvc.h
+FILE 5411 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 5412 f:\sp\public\sdk\inc\wingdi.h
+FILE 5413 f:\sp\public\sdk\inc\pshpack4.h
+FILE 5414 f:\sp\public\sdk\inc\poppack.h
+FILE 5415 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 5416 f:\sp\public\sdk\inc\winnetwk.h
+FILE 5417 f:\sp\public\sdk\inc\imm.h
+FILE 5418 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 5419 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 5420 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 5421 f:\sp\public\sdk\inc\windef.h
+FILE 5422 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 5423 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 5424 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 5425 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.c
+FILE 5426 f:\sp\public\sdk\inc\pshpack1.h
+FILE 5427 f:\sp\public\sdk\inc\winver.h
+FILE 5428 f:\sp\vctools\crt_bld\self_x86\crt\src\rtcsup.h
+FILE 5429 f:\sp\vctools\crt_bld\self_x86\crt\src\rtcapi.h
+FILE 5430 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h
+FILE 5431 f:\sp\public\sdk\inc\winnt.h
+FILE 5432 f:\sp\vctools\crt_bld\self_x86\crt\src\winheap.h
+FILE 5433 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 5434 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 5435 f:\sp\public\sdk\inc\winreg.h
+FILE 5436 f:\sp\public\sdk\inc\ddbanned.h
+FILE 5437 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 5438 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 5439 f:\sp\public\sdk\inc\winbase.h
+FILE 5440 f:\sp\public\sdk\inc\winerror.h
+FILE 5441 f:\sp\public\sdk\inc\pshpack8.h
+FILE 5442 f:\sp\public\sdk\inc\reason.h
+FILE 5443 f:\sp\public\sdk\inc\wincon.h
+FILE 5444 f:\sp\public\sdk\inc\winver.h
+FILE 5445 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 5446 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 5447 f:\sp\public\sdk\inc\winnt.h
+FILE 5448 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 5449 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 5450 f:\sp\public\sdk\inc\winreg.h
+FILE 5451 f:\sp\public\sdk\inc\winbase.h
+FILE 5452 f:\sp\public\sdk\inc\winerror.h
+FILE 5453 f:\sp\public\sdk\inc\pshpack8.h
+FILE 5454 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 5455 f:\sp\public\sdk\inc\reason.h
+FILE 5456 f:\sp\public\sdk\inc\wincon.h
+FILE 5457 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 5458 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 5459 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 5460 f:\sp\public\sdk\inc\pshpack2.h
+FILE 5461 f:\sp\public\sdk\inc\mcx.h
+FILE 5462 f:\sp\public\sdk\inc\winuser.h
+FILE 5463 f:\sp\public\sdk\inc\winnls.h
+FILE 5464 f:\sp\public\sdk\inc\guiddef.h
+FILE 5465 f:\sp\public\sdk\inc\stralign.h
+FILE 5466 f:\sp\public\sdk\inc\specstrings.h
+FILE 5467 f:\sp\public\sdk\inc\basetsd.h
+FILE 5468 f:\sp\vctools\crt_bld\self_x86\crt\src\winheap.h
+FILE 5469 f:\sp\public\sdk\inc\windows.h
+FILE 5470 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 5471 f:\sp\public\sdk\inc\tvout.h
+FILE 5472 f:\sp\public\sdk\inc\winsvc.h
+FILE 5473 f:\sp\vctools\crt_bld\self_x86\crt\src\heapinit.c
+FILE 5474 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 5475 f:\sp\public\sdk\inc\wingdi.h
+FILE 5476 f:\sp\public\sdk\inc\pshpack4.h
+FILE 5477 f:\sp\public\sdk\inc\poppack.h
+FILE 5478 f:\sp\public\sdk\inc\winnetwk.h
+FILE 5479 f:\sp\public\sdk\inc\ddbanned.h
+FILE 5480 f:\sp\public\sdk\inc\imm.h
+FILE 5481 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 5482 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 5483 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 5484 f:\sp\public\sdk\inc\windef.h
+FILE 5485 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 5486 f:\sp\public\sdk\inc\pshpack1.h
+FILE 5487 f:\sp\public\sdk\inc\pshpack2.h
+FILE 5488 f:\sp\public\sdk\inc\mcx.h
+FILE 5489 f:\sp\public\sdk\inc\winuser.h
+FILE 5490 f:\sp\vctools\crt_bld\self_x86\crt\src\winheap.h
+FILE 5491 f:\sp\public\sdk\inc\winnls.h
+FILE 5492 f:\sp\public\sdk\inc\guiddef.h
+FILE 5493 f:\sp\public\sdk\inc\windows.h
+FILE 5494 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 5495 f:\sp\public\sdk\inc\specstrings.h
+FILE 5496 f:\sp\public\sdk\inc\basetsd.h
+FILE 5497 f:\sp\public\sdk\inc\stralign.h
+FILE 5498 f:\sp\public\sdk\inc\tvout.h
+FILE 5499 f:\sp\public\sdk\inc\winsvc.h
+FILE 5500 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 5501 f:\sp\public\sdk\inc\wingdi.h
+FILE 5502 f:\sp\public\sdk\inc\pshpack4.h
+FILE 5503 f:\sp\public\sdk\inc\poppack.h
+FILE 5504 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 5505 f:\sp\public\sdk\inc\winnetwk.h
+FILE 5506 f:\sp\public\sdk\inc\imm.h
+FILE 5507 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 5508 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 5509 f:\sp\public\sdk\inc\windef.h
+FILE 5510 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 5511 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 5512 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 5513 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 5514 f:\sp\public\sdk\inc\pshpack1.h
+FILE 5515 f:\sp\vctools\crt_bld\self_x86\crt\src\free.c
+FILE 5516 f:\sp\public\sdk\inc\winver.h
+FILE 5517 f:\sp\public\sdk\inc\winnt.h
+FILE 5518 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 5519 f:\sp\vctools\crt_bld\self_x86\crt\src\rtcsup.h
+FILE 5520 f:\sp\vctools\crt_bld\self_x86\crt\src\rtcapi.h
+FILE 5521 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 5522 f:\sp\public\sdk\inc\winreg.h
+FILE 5523 f:\sp\public\sdk\inc\ddbanned.h
+FILE 5524 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 5525 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 5526 f:\sp\public\sdk\inc\winbase.h
+FILE 5527 f:\sp\public\sdk\inc\winerror.h
+FILE 5528 f:\sp\public\sdk\inc\pshpack8.h
+FILE 5529 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 5530 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 5531 f:\sp\public\sdk\inc\reason.h
+FILE 5532 f:\sp\public\sdk\inc\wincon.h
+FILE 5533 f:\sp\public\sdk\inc\pshpack2.h
+FILE 5534 f:\sp\public\sdk\inc\mcx.h
+FILE 5535 f:\sp\public\sdk\inc\winuser.h
+FILE 5536 f:\sp\public\sdk\inc\winnls.h
+FILE 5537 f:\sp\public\sdk\inc\guiddef.h
+FILE 5538 f:\sp\public\sdk\inc\windows.h
+FILE 5539 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 5540 f:\sp\public\sdk\inc\specstrings.h
+FILE 5541 f:\sp\public\sdk\inc\basetsd.h
+FILE 5542 f:\sp\public\sdk\inc\stralign.h
+FILE 5543 f:\sp\public\sdk\inc\tvout.h
+FILE 5544 f:\sp\public\sdk\inc\winsvc.h
+FILE 5545 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 5546 f:\sp\public\sdk\inc\wingdi.h
+FILE 5547 f:\sp\public\sdk\inc\pshpack4.h
+FILE 5548 f:\sp\public\sdk\inc\poppack.h
+FILE 5549 f:\sp\public\sdk\inc\winnetwk.h
+FILE 5550 f:\sp\public\sdk\inc\imm.h
+FILE 5551 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 5552 f:\sp\public\sdk\inc\windef.h
+FILE 5553 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 5554 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 5555 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 5556 f:\sp\public\sdk\inc\pshpack1.h
+FILE 5557 f:\sp\vctools\crt_bld\self_x86\crt\src\crtheap.c
+FILE 5558 f:\sp\public\sdk\inc\winver.h
+FILE 5559 f:\sp\public\sdk\inc\winnt.h
+FILE 5560 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 5561 f:\sp\public\sdk\inc\winreg.h
+FILE 5562 f:\sp\public\sdk\inc\ddbanned.h
+FILE 5563 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 5564 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 5565 f:\sp\public\sdk\inc\winbase.h
+FILE 5566 f:\sp\public\sdk\inc\winerror.h
+FILE 5567 f:\sp\public\sdk\inc\pshpack8.h
+FILE 5568 f:\sp\public\sdk\inc\reason.h
+FILE 5569 f:\sp\public\sdk\inc\wincon.h
+FILE 5570 f:\sp\public\sdk\inc\pshpack2.h
+FILE 5571 f:\sp\public\sdk\inc\mcx.h
+FILE 5572 f:\sp\public\sdk\inc\winuser.h
+FILE 5573 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 5574 f:\sp\public\sdk\inc\winnls.h
+FILE 5575 f:\sp\public\sdk\inc\stralign.h
+FILE 5576 f:\sp\public\sdk\inc\tvout.h
+FILE 5577 f:\sp\public\sdk\inc\winsvc.h
+FILE 5578 f:\sp\public\sdk\inc\wingdi.h
+FILE 5579 f:\sp\public\sdk\inc\winnt.h
+FILE 5580 f:\sp\public\sdk\inc\pshpack4.h
+FILE 5581 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 5582 f:\sp\public\sdk\inc\poppack.h
+FILE 5583 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 5584 f:\sp\public\sdk\inc\winnetwk.h
+FILE 5585 f:\sp\public\sdk\inc\imm.h
+FILE 5586 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 5587 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 5588 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 5589 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 5590 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 5591 f:\sp\public\sdk\inc\pshpack1.h
+FILE 5592 f:\sp\vctools\crt_bld\self_x86\crt\src\calloc.c
+FILE 5593 f:\sp\public\sdk\inc\winver.h
+FILE 5594 f:\sp\vctools\crt_bld\self_x86\crt\src\winheap.h
+FILE 5595 f:\sp\public\sdk\inc\guiddef.h
+FILE 5596 f:\sp\public\sdk\inc\windows.h
+FILE 5597 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 5598 f:\sp\public\sdk\inc\specstrings.h
+FILE 5599 f:\sp\public\sdk\inc\basetsd.h
+FILE 5600 f:\sp\vctools\crt_bld\self_x86\crt\src\rtcsup.h
+FILE 5601 f:\sp\vctools\crt_bld\self_x86\crt\src\rtcapi.h
+FILE 5602 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 5603 f:\sp\public\sdk\inc\winreg.h
+FILE 5604 f:\sp\public\sdk\inc\ddbanned.h
+FILE 5605 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 5606 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 5607 f:\sp\public\sdk\inc\winbase.h
+FILE 5608 f:\sp\public\sdk\inc\winerror.h
+FILE 5609 f:\sp\public\sdk\inc\pshpack8.h
+FILE 5610 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 5611 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 5612 f:\sp\public\sdk\inc\reason.h
+FILE 5613 f:\sp\public\sdk\inc\wincon.h
+FILE 5614 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 5615 f:\sp\public\sdk\inc\windef.h
+FILE 5616 f:\sp\public\sdk\inc\wincon.h
+FILE 5617 f:\sp\public\sdk\inc\imm.h
+FILE 5618 f:\sp\public\sdk\inc\winbase.h
+FILE 5619 f:\sp\public\sdk\inc\wingdi.h
+FILE 5620 f:\sp\public\sdk\inc\winver.h
+FILE 5621 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ehhooks.h
+FILE 5622 f:\sp\public\sdk\inc\pshpack2.h
+FILE 5623 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\internal.h
+FILE 5624 f:\sp\public\sdk\inc\reason.h
+FILE 5625 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ehassert.h
+FILE 5626 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\setjmp.h
+FILE 5627 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\eh\i386\trnsctrl.cpp
+FILE 5628 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\process.h
+FILE 5629 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdbg.h
+FILE 5630 f:\sp\public\sdk\inc\specstrings.h
+FILE 5631 f:\sp\public\sdk\inc\basetsd.h
+FILE 5632 f:\sp\public\sdk\inc\pshpack4.h
+FILE 5633 f:\sp\public\sdk\inc\winnetwk.h
+FILE 5634 f:\sp\public\sdk\inc\stralign.h
+FILE 5635 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\trnsctrl.h
+FILE 5636 f:\sp\public\sdk\inc\poppack.h
+FILE 5637 f:\sp\public\sdk\inc\winsvc.h
+FILE 5638 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h
+FILE 5639 f:\sp\public\sdk\inc\windef.h
+FILE 5640 f:\sp\public\sdk\inc\winuser.h
+FILE 5641 f:\sp\public\sdk\inc\windows.h
+FILE 5642 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h
+FILE 5643 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h
+FILE 5644 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h
+FILE 5645 f:\sp\public\sdk\inc\mcx.h
+FILE 5646 f:\sp\public\sdk\inc\pshpack8.h
+FILE 5647 f:\sp\public\sdk\inc\guiddef.h
+FILE 5648 f:\sp\public\sdk\inc\winnt.h
+FILE 5649 f:\sp\public\sdk\inc\winnls.h
+FILE 5650 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h
+FILE 5651 f:\sp\public\sdk\inc\pshpack1.h
+FILE 5652 f:\sp\public\sdk\inc\winerror.h
+FILE 5653 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\mtdll.h
+FILE 5654 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\limits.h
+FILE 5655 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\errno.h
+FILE 5656 f:\sp\public\sdk\inc\winreg.h
+FILE 5657 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\string.h
+FILE 5658 f:\sp\public\sdk\inc\ddbanned.h
+FILE 5659 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h
+FILE 5660 f:\sp\public\sdk\inc\tvout.h
+FILE 5661 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h
+FILE 5662 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\eh.h
+FILE 5663 f:\sp\vctools\langapi\include\ehdata.h
+FILE 5664 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stddef.h
+FILE 5665 F:\SP\vctools\crt_bld\SELF_X86\crt\prebuild\eh\i386\lowhelpr.asm
+FILE 5666 F:\SP\vctools\crt_bld\SELF_X86\crt\prebuild\h\cruntime.inc
+FILE 5667 F:\SP\vctools\crt_bld\SELF_X86\crt\prebuild\h\exsup.inc
+FILE 5668 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\process.h
+FILE 5669 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h
+FILE 5670 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h
+FILE 5671 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\eh\i386\ehprolg3.c
+FILE 5672 f:\sp\public\sdk\inc\ddbanned.h
+FILE 5673 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h
+FILE 5674 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h
+FILE 5675 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ehassert.h
+FILE 5676 f:\sp\public\sdk\inc\wincon.h
+FILE 5677 f:\sp\public\sdk\inc\imm.h
+FILE 5678 f:\sp\public\sdk\inc\winbase.h
+FILE 5679 f:\sp\public\sdk\inc\wingdi.h
+FILE 5680 f:\sp\public\sdk\inc\winver.h
+FILE 5681 f:\sp\public\sdk\inc\pshpack2.h
+FILE 5682 f:\sp\public\sdk\inc\reason.h
+FILE 5683 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\eh\validate.cpp
+FILE 5684 f:\sp\public\sdk\inc\specstrings.h
+FILE 5685 f:\sp\public\sdk\inc\basetsd.h
+FILE 5686 f:\sp\public\sdk\inc\pshpack4.h
+FILE 5687 f:\sp\public\sdk\inc\winnetwk.h
+FILE 5688 f:\sp\public\sdk\inc\stralign.h
+FILE 5689 f:\sp\public\sdk\inc\poppack.h
+FILE 5690 f:\sp\public\sdk\inc\winsvc.h
+FILE 5691 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h
+FILE 5692 f:\sp\public\sdk\inc\windef.h
+FILE 5693 f:\sp\public\sdk\inc\winuser.h
+FILE 5694 f:\sp\public\sdk\inc\windows.h
+FILE 5695 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h
+FILE 5696 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h
+FILE 5697 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h
+FILE 5698 f:\sp\public\sdk\inc\mcx.h
+FILE 5699 f:\sp\public\sdk\inc\pshpack8.h
+FILE 5700 f:\sp\public\sdk\inc\guiddef.h
+FILE 5701 f:\sp\public\sdk\inc\winnt.h
+FILE 5702 f:\sp\public\sdk\inc\winnls.h
+FILE 5703 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h
+FILE 5704 f:\sp\public\sdk\inc\pshpack1.h
+FILE 5705 f:\sp\public\sdk\inc\winerror.h
+FILE 5706 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\eh.h
+FILE 5707 f:\sp\public\sdk\inc\winreg.h
+FILE 5708 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\string.h
+FILE 5709 f:\sp\public\sdk\inc\ddbanned.h
+FILE 5710 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h
+FILE 5711 f:\sp\public\sdk\inc\tvout.h
+FILE 5712 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h
+FILE 5713 f:\sp\public\sdk\inc\wincon.h
+FILE 5714 f:\sp\public\sdk\inc\imm.h
+FILE 5715 f:\sp\public\sdk\inc\winbase.h
+FILE 5716 f:\sp\public\sdk\inc\wingdi.h
+FILE 5717 f:\sp\public\sdk\inc\winver.h
+FILE 5718 f:\sp\public\sdk\inc\pshpack2.h
+FILE 5719 f:\sp\public\sdk\inc\reason.h
+FILE 5720 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sect_attribs.h
+FILE 5721 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\eh\unhandld.cpp
+FILE 5722 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\eh.h
+FILE 5723 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\errno.h
+FILE 5724 f:\sp\public\sdk\inc\specstrings.h
+FILE 5725 f:\sp\public\sdk\inc\basetsd.h
+FILE 5726 f:\sp\public\sdk\inc\pshpack4.h
+FILE 5727 f:\sp\public\sdk\inc\winnetwk.h
+FILE 5728 f:\sp\public\sdk\inc\stralign.h
+FILE 5729 f:\sp\public\sdk\inc\poppack.h
+FILE 5730 f:\sp\public\sdk\inc\winsvc.h
+FILE 5731 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h
+FILE 5732 f:\sp\public\sdk\inc\windef.h
+FILE 5733 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ehhooks.h
+FILE 5734 f:\sp\public\sdk\inc\winuser.h
+FILE 5735 f:\sp\public\sdk\inc\windows.h
+FILE 5736 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h
+FILE 5737 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h
+FILE 5738 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h
+FILE 5739 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ehassert.h
+FILE 5740 f:\sp\public\sdk\inc\mcx.h
+FILE 5741 f:\sp\public\sdk\inc\pshpack8.h
+FILE 5742 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\internal.h
+FILE 5743 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\limits.h
+FILE 5744 f:\sp\public\sdk\inc\guiddef.h
+FILE 5745 f:\sp\public\sdk\inc\winnt.h
+FILE 5746 f:\sp\public\sdk\inc\winnls.h
+FILE 5747 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h
+FILE 5748 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdlib.h
+FILE 5749 f:\sp\public\sdk\inc\pshpack1.h
+FILE 5750 f:\sp\public\sdk\inc\winerror.h
+FILE 5751 f:\sp\vctools\langapi\include\ehdata.h
+FILE 5752 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stddef.h
+FILE 5753 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdbg.h
+FILE 5754 f:\sp\public\sdk\inc\winreg.h
+FILE 5755 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\string.h
+FILE 5756 f:\sp\public\sdk\inc\ddbanned.h
+FILE 5757 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h
+FILE 5758 f:\sp\public\sdk\inc\tvout.h
+FILE 5759 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h
+FILE 5760 f:\sp\public\sdk\inc\specstrings.h
+FILE 5761 f:\sp\public\sdk\inc\basetsd.h
+FILE 5762 f:\sp\public\sdk\inc\pshpack4.h
+FILE 5763 f:\sp\public\sdk\inc\winnetwk.h
+FILE 5764 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\limits.h
+FILE 5765 f:\sp\public\sdk\inc\stralign.h
+FILE 5766 f:\sp\public\sdk\inc\poppack.h
+FILE 5767 f:\sp\public\sdk\inc\winsvc.h
+FILE 5768 f:\sp\public\sdk\inc\winuser.h
+FILE 5769 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h
+FILE 5770 f:\sp\public\sdk\inc\windef.h
+FILE 5771 f:\sp\vctools\langapi\undname\undname.cxx
+FILE 5772 f:\sp\public\sdk\inc\mcx.h
+FILE 5773 f:\sp\public\sdk\inc\pshpack8.h
+FILE 5774 f:\sp\public\sdk\inc\guiddef.h
+FILE 5775 f:\sp\vctools\langapi\undname\utf8.h
+FILE 5776 f:\sp\public\sdk\inc\winnls.h
+FILE 5777 f:\sp\public\sdk\inc\pshpack1.h
+FILE 5778 f:\sp\public\sdk\inc\winnt.h
+FILE 5779 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h
+FILE 5780 f:\sp\public\sdk\inc\winerror.h
+FILE 5781 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\swprintf.inl
+FILE 5782 f:\sp\vctools\langapi\undname\undname.hxx
+FILE 5783 f:\sp\vctools\langapi\undname\undname.h
+FILE 5784 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdlib.h
+FILE 5785 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h
+FILE 5786 f:\sp\public\sdk\inc\winreg.h
+FILE 5787 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h
+FILE 5788 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\string.h
+FILE 5789 f:\sp\public\sdk\inc\tvout.h
+FILE 5790 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdio.h
+FILE 5791 f:\sp\public\sdk\inc\wincon.h
+FILE 5792 f:\sp\public\sdk\inc\imm.h
+FILE 5793 f:\sp\public\sdk\inc\winbase.h
+FILE 5794 f:\sp\public\sdk\inc\wingdi.h
+FILE 5795 f:\sp\public\sdk\inc\winver.h
+FILE 5796 f:\sp\public\sdk\inc\pshpack2.h
+FILE 5797 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\mtdll.h
+FILE 5798 f:\sp\public\sdk\inc\windows.h
+FILE 5799 f:\sp\public\sdk\inc\reason.h
+FILE 5800 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h
+FILE 5801 f:\sp\public\sdk\inc\ddbanned.h
+FILE 5802 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h
+FILE 5803 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h
+FILE 5804 f:\sp\vctools\langapi\undname\undname.inl
+FILE 5805 f:\sp\public\sdk\inc\guiddef.h
+FILE 5806 f:\sp\public\sdk\inc\winnt.h
+FILE 5807 f:\sp\public\sdk\inc\winnls.h
+FILE 5808 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h
+FILE 5809 f:\sp\public\sdk\inc\pshpack1.h
+FILE 5810 f:\sp\public\sdk\inc\winerror.h
+FILE 5811 f:\sp\public\sdk\inc\winreg.h
+FILE 5812 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\string.h
+FILE 5813 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdlib.h
+FILE 5814 f:\sp\public\sdk\inc\tvout.h
+FILE 5815 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\eh\typname.cpp
+FILE 5816 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdbg.h
+FILE 5817 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\cstddef
+FILE 5818 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stddef.h
+FILE 5819 f:\sp\public\sdk\inc\wincon.h
+FILE 5820 f:\sp\public\sdk\inc\imm.h
+FILE 5821 f:\sp\public\sdk\inc\winbase.h
+FILE 5822 f:\sp\public\sdk\inc\wingdi.h
+FILE 5823 f:\sp\public\sdk\inc\winver.h
+FILE 5824 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\limits.h
+FILE 5825 f:\sp\public\sdk\inc\windows.h
+FILE 5826 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h
+FILE 5827 f:\sp\public\sdk\inc\pshpack2.h
+FILE 5828 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\mtdll.h
+FILE 5829 f:\sp\public\sdk\inc\reason.h
+FILE 5830 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sect_attribs.h
+FILE 5831 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\dbgint.h
+FILE 5832 f:\sp\public\sdk\inc\specstrings.h
+FILE 5833 f:\sp\public\sdk\inc\basetsd.h
+FILE 5834 f:\sp\public\sdk\inc\pshpack4.h
+FILE 5835 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\typeinfo.h
+FILE 5836 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\typeinfo
+FILE 5837 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\exception
+FILE 5838 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\xstddef
+FILE 5839 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\eh.h
+FILE 5840 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\yvals.h
+FILE 5841 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\use_ansi.h
+FILE 5842 f:\sp\public\sdk\inc\winnetwk.h
+FILE 5843 f:\sp\vctools\langapi\undname\undname.h
+FILE 5844 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\errno.h
+FILE 5845 f:\sp\public\sdk\inc\stralign.h
+FILE 5846 f:\sp\public\sdk\inc\poppack.h
+FILE 5847 f:\sp\public\sdk\inc\winsvc.h
+FILE 5848 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h
+FILE 5849 f:\sp\public\sdk\inc\windef.h
+FILE 5850 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\internal.h
+FILE 5851 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h
+FILE 5852 f:\sp\public\sdk\inc\winuser.h
+FILE 5853 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h
+FILE 5854 f:\sp\public\sdk\inc\ddbanned.h
+FILE 5855 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h
+FILE 5856 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h
+FILE 5857 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\malloc.h
+FILE 5858 f:\sp\public\sdk\inc\mcx.h
+FILE 5859 f:\sp\public\sdk\inc\pshpack8.h
+FILE 5860 f:\sp\public\sdk\inc\winnls.h
+FILE 5861 f:\sp\public\sdk\inc\pshpack1.h
+FILE 5862 f:\sp\public\sdk\inc\winnt.h
+FILE 5863 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h
+FILE 5864 f:\sp\public\sdk\inc\winerror.h
+FILE 5865 f:\sp\public\sdk\inc\winreg.h
+FILE 5866 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\string.h
+FILE 5867 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\limits.h
+FILE 5868 f:\sp\public\sdk\inc\tvout.h
+FILE 5869 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\dbgint.h
+FILE 5870 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdbg.h
+FILE 5871 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\cstddef
+FILE 5872 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stddef.h
+FILE 5873 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\eh\typinfo.cpp
+FILE 5874 f:\sp\public\sdk\inc\wincon.h
+FILE 5875 f:\sp\public\sdk\inc\imm.h
+FILE 5876 f:\sp\public\sdk\inc\winbase.h
+FILE 5877 f:\sp\public\sdk\inc\wingdi.h
+FILE 5878 f:\sp\public\sdk\inc\winver.h
+FILE 5879 f:\sp\public\sdk\inc\pshpack2.h
+FILE 5880 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\mtdll.h
+FILE 5881 f:\sp\public\sdk\inc\reason.h
+FILE 5882 f:\sp\public\sdk\inc\windows.h
+FILE 5883 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h
+FILE 5884 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdlib.h
+FILE 5885 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h
+FILE 5886 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h
+FILE 5887 f:\sp\public\sdk\inc\specstrings.h
+FILE 5888 f:\sp\public\sdk\inc\basetsd.h
+FILE 5889 f:\sp\public\sdk\inc\pshpack4.h
+FILE 5890 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\typeinfo
+FILE 5891 f:\sp\public\sdk\inc\winnetwk.h
+FILE 5892 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\exception
+FILE 5893 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\xstddef
+FILE 5894 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\eh.h
+FILE 5895 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\yvals.h
+FILE 5896 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\use_ansi.h
+FILE 5897 f:\sp\public\sdk\inc\stralign.h
+FILE 5898 f:\sp\public\sdk\inc\poppack.h
+FILE 5899 f:\sp\public\sdk\inc\winsvc.h
+FILE 5900 f:\sp\public\sdk\inc\winuser.h
+FILE 5901 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h
+FILE 5902 f:\sp\public\sdk\inc\windef.h
+FILE 5903 f:\sp\vctools\langapi\undname\undname.h
+FILE 5904 f:\sp\public\sdk\inc\ddbanned.h
+FILE 5905 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\malloc.h
+FILE 5906 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h
+FILE 5907 f:\sp\public\sdk\inc\mcx.h
+FILE 5908 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h
+FILE 5909 f:\sp\public\sdk\inc\pshpack8.h
+FILE 5910 f:\sp\public\sdk\inc\guiddef.h
+FILE 5911 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\eh.h
+FILE 5912 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\typeinfo
+FILE 5913 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\limits.h
+FILE 5914 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\exception
+FILE 5915 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\xstddef
+FILE 5916 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\eh\stdexcpt.cpp
+FILE 5917 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\yvals.h
+FILE 5918 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\use_ansi.h
+FILE 5919 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdlib.h
+FILE 5920 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h
+FILE 5921 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h
+FILE 5922 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\string.h
+FILE 5923 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\cstddef
+FILE 5924 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stddef.h
+FILE 5925 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\malloc.h
+FILE 5926 f:\sp\public\sdk\inc\ddbanned.h
+FILE 5927 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h
+FILE 5928 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h
+FILE 5929 f:\sp\vctools\langapi\include\ehdata.h
+FILE 5930 f:\sp\public\sdk\inc\wincon.h
+FILE 5931 f:\sp\public\sdk\inc\imm.h
+FILE 5932 f:\sp\public\sdk\inc\winbase.h
+FILE 5933 f:\sp\public\sdk\inc\wingdi.h
+FILE 5934 f:\sp\public\sdk\inc\winver.h
+FILE 5935 f:\sp\public\sdk\inc\windows.h
+FILE 5936 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h
+FILE 5937 f:\sp\public\sdk\inc\pshpack2.h
+FILE 5938 f:\sp\public\sdk\inc\reason.h
+FILE 5939 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\eh\throw.cpp
+FILE 5940 f:\sp\public\sdk\inc\specstrings.h
+FILE 5941 f:\sp\public\sdk\inc\basetsd.h
+FILE 5942 f:\sp\public\sdk\inc\pshpack4.h
+FILE 5943 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\eh.h
+FILE 5944 f:\sp\public\sdk\inc\winnetwk.h
+FILE 5945 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stddef.h
+FILE 5946 f:\sp\public\sdk\inc\stralign.h
+FILE 5947 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h
+FILE 5948 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h
+FILE 5949 f:\sp\public\sdk\inc\poppack.h
+FILE 5950 f:\sp\public\sdk\inc\winsvc.h
+FILE 5951 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h
+FILE 5952 f:\sp\public\sdk\inc\windef.h
+FILE 5953 f:\sp\public\sdk\inc\winuser.h
+FILE 5954 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ehhooks.h
+FILE 5955 f:\sp\public\sdk\inc\mcx.h
+FILE 5956 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ehassert.h
+FILE 5957 f:\sp\public\sdk\inc\pshpack8.h
+FILE 5958 f:\sp\public\sdk\inc\guiddef.h
+FILE 5959 f:\sp\public\sdk\inc\winnt.h
+FILE 5960 f:\sp\public\sdk\inc\winnls.h
+FILE 5961 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h
+FILE 5962 f:\sp\public\sdk\inc\pshpack1.h
+FILE 5963 f:\sp\public\sdk\inc\winerror.h
+FILE 5964 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\mtdll.h
+FILE 5965 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\limits.h
+FILE 5966 f:\sp\public\sdk\inc\ddbanned.h
+FILE 5967 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h
+FILE 5968 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h
+FILE 5969 f:\sp\public\sdk\inc\winreg.h
+FILE 5970 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\string.h
+FILE 5971 f:\sp\public\sdk\inc\tvout.h
+FILE 5972 f:\sp\public\sdk\inc\poppack.h
+FILE 5973 f:\sp\public\sdk\inc\winsvc.h
+FILE 5974 f:\sp\public\sdk\inc\windows.h
+FILE 5975 f:\sp\public\sdk\inc\winuser.h
+FILE 5976 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h
+FILE 5977 f:\sp\public\sdk\inc\windef.h
+FILE 5978 f:\sp\public\sdk\inc\mcx.h
+FILE 5979 f:\sp\public\sdk\inc\pshpack8.h
+FILE 5980 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdlib.h
+FILE 5981 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\limits.h
+FILE 5982 f:\sp\public\sdk\inc\guiddef.h
+FILE 5983 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\eh\hooks.cpp
+FILE 5984 f:\sp\public\sdk\inc\winnls.h
+FILE 5985 f:\sp\public\sdk\inc\pshpack1.h
+FILE 5986 f:\sp\public\sdk\inc\winnt.h
+FILE 5987 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h
+FILE 5988 f:\sp\public\sdk\inc\winerror.h
+FILE 5989 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\mtdll.h
+FILE 5990 f:\sp\public\sdk\inc\winreg.h
+FILE 5991 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\string.h
+FILE 5992 f:\sp\public\sdk\inc\tvout.h
+FILE 5993 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\eh.h
+FILE 5994 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\errno.h
+FILE 5995 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stddef.h
+FILE 5996 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h
+FILE 5997 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h
+FILE 5998 f:\sp\public\sdk\inc\wincon.h
+FILE 5999 f:\sp\public\sdk\inc\imm.h
+FILE 6000 f:\sp\public\sdk\inc\winbase.h
+FILE 6001 f:\sp\public\sdk\inc\wingdi.h
+FILE 6002 f:\sp\public\sdk\inc\winver.h
+FILE 6003 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ehhooks.h
+FILE 6004 f:\sp\public\sdk\inc\pshpack2.h
+FILE 6005 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h
+FILE 6006 f:\sp\public\sdk\inc\reason.h
+FILE 6007 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ehassert.h
+FILE 6008 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\internal.h
+FILE 6009 f:\sp\public\sdk\inc\specstrings.h
+FILE 6010 f:\sp\public\sdk\inc\basetsd.h
+FILE 6011 f:\sp\public\sdk\inc\pshpack4.h
+FILE 6012 f:\sp\public\sdk\inc\ddbanned.h
+FILE 6013 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h
+FILE 6014 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h
+FILE 6015 f:\sp\public\sdk\inc\winnetwk.h
+FILE 6016 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdbg.h
+FILE 6017 f:\sp\public\sdk\inc\stralign.h
+FILE 6018 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdbg.h
+FILE 6019 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ehassert.h
+FILE 6020 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\malloc.h
+FILE 6021 f:\sp\public\sdk\inc\wincon.h
+FILE 6022 f:\sp\public\sdk\inc\imm.h
+FILE 6023 f:\sp\public\sdk\inc\guiddef.h
+FILE 6024 f:\sp\public\sdk\inc\winbase.h
+FILE 6025 f:\sp\public\sdk\inc\wingdi.h
+FILE 6026 f:\sp\vctools\langapi\include\ehdata.h
+FILE 6027 f:\sp\public\sdk\inc\winver.h
+FILE 6028 f:\sp\public\sdk\inc\winnt.h
+FILE 6029 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h
+FILE 6030 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdlib.h
+FILE 6031 f:\sp\public\sdk\inc\pshpack2.h
+FILE 6032 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\limits.h
+FILE 6033 f:\sp\public\sdk\inc\reason.h
+FILE 6034 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\eh\frame.cpp
+FILE 6035 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\exception
+FILE 6036 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\typeinfo.h
+FILE 6037 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\typeinfo
+FILE 6038 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\xstddef
+FILE 6039 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\yvals.h
+FILE 6040 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\use_ansi.h
+FILE 6041 f:\sp\public\sdk\inc\pshpack4.h
+FILE 6042 f:\sp\public\sdk\inc\winnetwk.h
+FILE 6043 f:\sp\public\sdk\inc\stralign.h
+FILE 6044 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\errno.h
+FILE 6045 f:\sp\public\sdk\inc\poppack.h
+FILE 6046 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stddef.h
+FILE 6047 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h
+FILE 6048 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h
+FILE 6049 f:\sp\public\sdk\inc\winsvc.h
+FILE 6050 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ehstate.h
+FILE 6051 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\eh.h
+FILE 6052 f:\sp\public\sdk\inc\winuser.h
+FILE 6053 f:\sp\public\sdk\inc\windows.h
+FILE 6054 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h
+FILE 6055 f:\sp\public\sdk\inc\mcx.h
+FILE 6056 f:\sp\public\sdk\inc\pshpack8.h
+FILE 6057 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\string.h
+FILE 6058 f:\sp\public\sdk\inc\specstrings.h
+FILE 6059 f:\sp\public\sdk\inc\basetsd.h
+FILE 6060 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ehhooks.h
+FILE 6061 f:\sp\public\sdk\inc\winnls.h
+FILE 6062 f:\sp\public\sdk\inc\pshpack1.h
+FILE 6063 f:\sp\public\sdk\inc\winerror.h
+FILE 6064 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\trnsctrl.h
+FILE 6065 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\internal.h
+FILE 6066 f:\sp\public\sdk\inc\winreg.h
+FILE 6067 f:\sp\public\sdk\inc\ddbanned.h
+FILE 6068 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h
+FILE 6069 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\cstddef
+FILE 6070 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h
+FILE 6071 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\mtdll.h
+FILE 6072 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h
+FILE 6073 f:\sp\public\sdk\inc\windef.h
+FILE 6074 f:\sp\public\sdk\inc\tvout.h
+FILE 6075 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 6076 f:\sp\public\sdk\inc\pshpack4.h
+FILE 6077 f:\sp\public\sdk\inc\reason.h
+FILE 6078 f:\sp\public\sdk\inc\wincon.h
+FILE 6079 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 6080 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 6081 f:\sp\public\sdk\inc\poppack.h
+FILE 6082 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 6083 f:\sp\public\sdk\inc\mcx.h
+FILE 6084 f:\sp\public\sdk\inc\winuser.h
+FILE 6085 f:\sp\public\sdk\inc\winnls.h
+FILE 6086 f:\sp\public\sdk\inc\stralign.h
+FILE 6087 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 6088 f:\sp\public\sdk\inc\windef.h
+FILE 6089 f:\sp\public\sdk\inc\tvout.h
+FILE 6090 f:\sp\public\sdk\inc\winsvc.h
+FILE 6091 f:\sp\public\sdk\inc\wingdi.h
+FILE 6092 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 6093 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 6094 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 6095 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 6096 f:\sp\public\sdk\inc\winnt.h
+FILE 6097 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 6098 f:\sp\public\sdk\inc\winnetwk.h
+FILE 6099 f:\sp\public\sdk\inc\imm.h
+FILE 6100 f:\sp\vctools\crt_bld\self_x86\crt\src\dosmap.c
+FILE 6101 f:\sp\public\sdk\inc\winbase.h
+FILE 6102 f:\sp\public\sdk\inc\winerror.h
+FILE 6103 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 6104 f:\sp\public\sdk\inc\pshpack1.h
+FILE 6105 f:\sp\public\sdk\inc\pshpack8.h
+FILE 6106 f:\sp\public\sdk\inc\winver.h
+FILE 6107 f:\sp\public\sdk\inc\ddbanned.h
+FILE 6108 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 6109 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 6110 f:\sp\public\sdk\inc\pshpack2.h
+FILE 6111 f:\sp\public\sdk\inc\winreg.h
+FILE 6112 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 6113 f:\sp\public\sdk\inc\guiddef.h
+FILE 6114 f:\sp\public\sdk\inc\windows.h
+FILE 6115 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 6116 f:\sp\public\sdk\inc\specstrings.h
+FILE 6117 f:\sp\public\sdk\inc\basetsd.h
+FILE 6118 f:\sp\public\sdk\inc\winver.h
+FILE 6119 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 6120 f:\sp\public\sdk\inc\pshpack2.h
+FILE 6121 f:\sp\public\sdk\inc\windows.h
+FILE 6122 f:\sp\public\sdk\inc\reason.h
+FILE 6123 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 6124 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 6125 f:\sp\public\sdk\inc\specstrings.h
+FILE 6126 f:\sp\public\sdk\inc\basetsd.h
+FILE 6127 f:\sp\public\sdk\inc\pshpack4.h
+FILE 6128 f:\sp\vctools\crt_bld\self_x86\crt\src\wctomb.c
+FILE 6129 f:\sp\public\sdk\inc\winnetwk.h
+FILE 6130 f:\sp\public\sdk\inc\stralign.h
+FILE 6131 f:\sp\public\sdk\inc\poppack.h
+FILE 6132 f:\sp\public\sdk\inc\winsvc.h
+FILE 6133 f:\sp\public\sdk\inc\winuser.h
+FILE 6134 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 6135 f:\sp\public\sdk\inc\windef.h
+FILE 6136 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 6137 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 6138 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 6139 f:\sp\public\sdk\inc\mcx.h
+FILE 6140 f:\sp\public\sdk\inc\pshpack8.h
+FILE 6141 f:\sp\public\sdk\inc\guiddef.h
+FILE 6142 f:\sp\public\sdk\inc\winnls.h
+FILE 6143 f:\sp\public\sdk\inc\pshpack1.h
+FILE 6144 f:\sp\public\sdk\inc\winnt.h
+FILE 6145 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 6146 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 6147 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 6148 f:\sp\public\sdk\inc\winerror.h
+FILE 6149 f:\sp\public\sdk\inc\winreg.h
+FILE 6150 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 6151 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 6152 f:\sp\public\sdk\inc\tvout.h
+FILE 6153 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 6154 f:\sp\public\sdk\inc\ddbanned.h
+FILE 6155 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 6156 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 6157 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 6158 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 6159 f:\sp\public\sdk\inc\wincon.h
+FILE 6160 f:\sp\public\sdk\inc\imm.h
+FILE 6161 f:\sp\public\sdk\inc\winbase.h
+FILE 6162 f:\sp\public\sdk\inc\wingdi.h
+FILE 6163 f:\sp\public\sdk\inc\winsvc.h
+FILE 6164 f:\sp\public\sdk\inc\winuser.h
+FILE 6165 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 6166 f:\sp\public\sdk\inc\mcx.h
+FILE 6167 f:\sp\public\sdk\inc\pshpack8.h
+FILE 6168 f:\sp\public\sdk\inc\guiddef.h
+FILE 6169 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 6170 f:\sp\public\sdk\inc\windows.h
+FILE 6171 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 6172 f:\sp\public\sdk\inc\winnls.h
+FILE 6173 f:\sp\vctools\crt_bld\self_x86\crt\src\wcstol.c
+FILE 6174 f:\sp\public\sdk\inc\pshpack1.h
+FILE 6175 f:\sp\public\sdk\inc\winerror.h
+FILE 6176 f:\sp\public\sdk\inc\winreg.h
+FILE 6177 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 6178 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 6179 f:\sp\public\sdk\inc\tvout.h
+FILE 6180 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 6181 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 6182 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 6183 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 6184 f:\sp\public\sdk\inc\wincon.h
+FILE 6185 f:\sp\public\sdk\inc\imm.h
+FILE 6186 f:\sp\public\sdk\inc\winbase.h
+FILE 6187 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 6188 f:\sp\public\sdk\inc\wingdi.h
+FILE 6189 f:\sp\public\sdk\inc\windef.h
+FILE 6190 f:\sp\public\sdk\inc\winver.h
+FILE 6191 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 6192 f:\sp\public\sdk\inc\pshpack2.h
+FILE 6193 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 6194 f:\sp\public\sdk\inc\reason.h
+FILE 6195 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 6196 f:\sp\public\sdk\inc\winnt.h
+FILE 6197 f:\sp\public\sdk\inc\specstrings.h
+FILE 6198 f:\sp\public\sdk\inc\basetsd.h
+FILE 6199 f:\sp\public\sdk\inc\pshpack4.h
+FILE 6200 f:\sp\public\sdk\inc\ddbanned.h
+FILE 6201 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 6202 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 6203 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 6204 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 6205 f:\sp\public\sdk\inc\winnetwk.h
+FILE 6206 f:\sp\public\sdk\inc\stralign.h
+FILE 6207 f:\sp\public\sdk\inc\poppack.h
+FILE 6208 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 6209 f:\sp\public\sdk\inc\mcx.h
+FILE 6210 f:\sp\public\sdk\inc\pshpack8.h
+FILE 6211 f:\sp\public\sdk\inc\guiddef.h
+FILE 6212 f:\sp\public\sdk\inc\winnt.h
+FILE 6213 f:\sp\public\sdk\inc\winnls.h
+FILE 6214 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 6215 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 6216 f:\sp\public\sdk\inc\pshpack1.h
+FILE 6217 f:\sp\public\sdk\inc\winerror.h
+FILE 6218 f:\sp\vctools\crt_bld\self_x86\crt\src\tolower.c
+FILE 6219 f:\sp\public\sdk\inc\winreg.h
+FILE 6220 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 6221 f:\sp\public\sdk\inc\tvout.h
+FILE 6222 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 6223 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 6224 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 6225 f:\sp\public\sdk\inc\wincon.h
+FILE 6226 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 6227 f:\sp\public\sdk\inc\imm.h
+FILE 6228 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 6229 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 6230 f:\sp\public\sdk\inc\winbase.h
+FILE 6231 f:\sp\public\sdk\inc\wingdi.h
+FILE 6232 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 6233 f:\sp\public\sdk\inc\winver.h
+FILE 6234 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h
+FILE 6235 f:\sp\public\sdk\inc\windows.h
+FILE 6236 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 6237 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 6238 f:\sp\public\sdk\inc\pshpack2.h
+FILE 6239 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 6240 f:\sp\public\sdk\inc\reason.h
+FILE 6241 f:\sp\public\sdk\inc\specstrings.h
+FILE 6242 f:\sp\public\sdk\inc\basetsd.h
+FILE 6243 f:\sp\public\sdk\inc\pshpack4.h
+FILE 6244 f:\sp\public\sdk\inc\winnetwk.h
+FILE 6245 f:\sp\public\sdk\inc\ddbanned.h
+FILE 6246 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 6247 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 6248 f:\sp\public\sdk\inc\stralign.h
+FILE 6249 f:\sp\public\sdk\inc\poppack.h
+FILE 6250 f:\sp\public\sdk\inc\winsvc.h
+FILE 6251 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 6252 f:\sp\public\sdk\inc\windef.h
+FILE 6253 f:\sp\public\sdk\inc\winuser.h
+FILE 6254 f:\sp\public\sdk\inc\winsvc.h
+FILE 6255 f:\sp\public\sdk\inc\winuser.h
+FILE 6256 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 6257 f:\sp\public\sdk\inc\mcx.h
+FILE 6258 f:\sp\public\sdk\inc\pshpack8.h
+FILE 6259 f:\sp\public\sdk\inc\guiddef.h
+FILE 6260 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 6261 f:\sp\public\sdk\inc\windows.h
+FILE 6262 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 6263 f:\sp\public\sdk\inc\winnls.h
+FILE 6264 f:\sp\vctools\crt_bld\self_x86\crt\src\strtoq.c
+FILE 6265 f:\sp\public\sdk\inc\pshpack1.h
+FILE 6266 f:\sp\public\sdk\inc\winerror.h
+FILE 6267 f:\sp\public\sdk\inc\winreg.h
+FILE 6268 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 6269 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 6270 f:\sp\public\sdk\inc\tvout.h
+FILE 6271 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 6272 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 6273 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 6274 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 6275 f:\sp\public\sdk\inc\wincon.h
+FILE 6276 f:\sp\public\sdk\inc\imm.h
+FILE 6277 f:\sp\public\sdk\inc\winbase.h
+FILE 6278 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 6279 f:\sp\public\sdk\inc\wingdi.h
+FILE 6280 f:\sp\public\sdk\inc\windef.h
+FILE 6281 f:\sp\public\sdk\inc\winver.h
+FILE 6282 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 6283 f:\sp\public\sdk\inc\pshpack2.h
+FILE 6284 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 6285 f:\sp\public\sdk\inc\reason.h
+FILE 6286 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 6287 f:\sp\public\sdk\inc\winnt.h
+FILE 6288 f:\sp\public\sdk\inc\specstrings.h
+FILE 6289 f:\sp\public\sdk\inc\basetsd.h
+FILE 6290 f:\sp\public\sdk\inc\pshpack4.h
+FILE 6291 f:\sp\public\sdk\inc\ddbanned.h
+FILE 6292 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 6293 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 6294 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 6295 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 6296 f:\sp\public\sdk\inc\winnetwk.h
+FILE 6297 f:\sp\public\sdk\inc\stralign.h
+FILE 6298 f:\sp\public\sdk\inc\poppack.h
+FILE 6299 f:\sp\public\sdk\inc\winsvc.h
+FILE 6300 f:\sp\public\sdk\inc\winuser.h
+FILE 6301 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 6302 f:\sp\public\sdk\inc\mcx.h
+FILE 6303 f:\sp\public\sdk\inc\pshpack8.h
+FILE 6304 f:\sp\public\sdk\inc\guiddef.h
+FILE 6305 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 6306 f:\sp\public\sdk\inc\windows.h
+FILE 6307 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 6308 f:\sp\public\sdk\inc\winnls.h
+FILE 6309 f:\sp\vctools\crt_bld\self_x86\crt\src\strtol.c
+FILE 6310 f:\sp\public\sdk\inc\pshpack1.h
+FILE 6311 f:\sp\public\sdk\inc\winerror.h
+FILE 6312 f:\sp\public\sdk\inc\winreg.h
+FILE 6313 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 6314 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 6315 f:\sp\public\sdk\inc\tvout.h
+FILE 6316 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 6317 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 6318 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 6319 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 6320 f:\sp\public\sdk\inc\wincon.h
+FILE 6321 f:\sp\public\sdk\inc\imm.h
+FILE 6322 f:\sp\public\sdk\inc\winbase.h
+FILE 6323 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 6324 f:\sp\public\sdk\inc\wingdi.h
+FILE 6325 f:\sp\public\sdk\inc\windef.h
+FILE 6326 f:\sp\public\sdk\inc\winver.h
+FILE 6327 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 6328 f:\sp\public\sdk\inc\pshpack2.h
+FILE 6329 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 6330 f:\sp\public\sdk\inc\reason.h
+FILE 6331 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 6332 f:\sp\public\sdk\inc\winnt.h
+FILE 6333 f:\sp\public\sdk\inc\specstrings.h
+FILE 6334 f:\sp\public\sdk\inc\basetsd.h
+FILE 6335 f:\sp\public\sdk\inc\pshpack4.h
+FILE 6336 f:\sp\public\sdk\inc\ddbanned.h
+FILE 6337 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 6338 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 6339 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 6340 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 6341 f:\sp\public\sdk\inc\winnetwk.h
+FILE 6342 f:\sp\public\sdk\inc\stralign.h
+FILE 6343 f:\sp\public\sdk\inc\poppack.h
+FILE 6344 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 6345 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 6346 f:\sp\public\sdk\inc\tvout.h
+FILE 6347 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 6348 f:\sp\public\sdk\inc\wincon.h
+FILE 6349 f:\sp\public\sdk\inc\imm.h
+FILE 6350 f:\sp\public\sdk\inc\winbase.h
+FILE 6351 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 6352 f:\sp\public\sdk\inc\wingdi.h
+FILE 6353 f:\sp\public\sdk\inc\windef.h
+FILE 6354 f:\sp\public\sdk\inc\winver.h
+FILE 6355 f:\sp\vctools\crt_bld\self_x86\crt\src\mbtowc.c
+FILE 6356 f:\sp\public\sdk\inc\pshpack2.h
+FILE 6357 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 6358 f:\sp\public\sdk\inc\reason.h
+FILE 6359 f:\sp\public\sdk\inc\winnt.h
+FILE 6360 f:\sp\public\sdk\inc\specstrings.h
+FILE 6361 f:\sp\public\sdk\inc\basetsd.h
+FILE 6362 f:\sp\public\sdk\inc\pshpack4.h
+FILE 6363 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 6364 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 6365 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 6366 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 6367 f:\sp\public\sdk\inc\winnetwk.h
+FILE 6368 f:\sp\public\sdk\inc\stralign.h
+FILE 6369 f:\sp\public\sdk\inc\poppack.h
+FILE 6370 f:\sp\public\sdk\inc\winsvc.h
+FILE 6371 f:\sp\public\sdk\inc\winuser.h
+FILE 6372 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 6373 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 6374 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 6375 f:\sp\public\sdk\inc\mcx.h
+FILE 6376 f:\sp\public\sdk\inc\pshpack8.h
+FILE 6377 f:\sp\public\sdk\inc\guiddef.h
+FILE 6378 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 6379 f:\sp\public\sdk\inc\windows.h
+FILE 6380 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 6381 f:\sp\public\sdk\inc\winnls.h
+FILE 6382 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 6383 f:\sp\public\sdk\inc\pshpack1.h
+FILE 6384 f:\sp\public\sdk\inc\ddbanned.h
+FILE 6385 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 6386 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 6387 f:\sp\public\sdk\inc\winerror.h
+FILE 6388 f:\sp\public\sdk\inc\winreg.h
+FILE 6389 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 6390 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 6391 f:\sp\public\sdk\inc\winreg.h
+FILE 6392 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 6393 f:\sp\public\sdk\inc\tvout.h
+FILE 6394 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 6395 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 6396 f:\sp\public\sdk\inc\wincon.h
+FILE 6397 f:\sp\public\sdk\inc\imm.h
+FILE 6398 f:\sp\public\sdk\inc\winbase.h
+FILE 6399 f:\sp\vctools\crt_bld\self_x86\crt\src\isctype.c
+FILE 6400 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 6401 f:\sp\public\sdk\inc\wingdi.h
+FILE 6402 f:\sp\public\sdk\inc\windef.h
+FILE 6403 f:\sp\public\sdk\inc\winver.h
+FILE 6404 f:\sp\public\sdk\inc\pshpack2.h
+FILE 6405 f:\sp\public\sdk\inc\reason.h
+FILE 6406 f:\sp\public\sdk\inc\winnt.h
+FILE 6407 f:\sp\public\sdk\inc\specstrings.h
+FILE 6408 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 6409 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 6410 f:\sp\public\sdk\inc\basetsd.h
+FILE 6411 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 6412 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 6413 f:\sp\public\sdk\inc\pshpack4.h
+FILE 6414 f:\sp\public\sdk\inc\winnetwk.h
+FILE 6415 f:\sp\public\sdk\inc\stralign.h
+FILE 6416 f:\sp\public\sdk\inc\poppack.h
+FILE 6417 f:\sp\public\sdk\inc\winsvc.h
+FILE 6418 f:\sp\public\sdk\inc\winuser.h
+FILE 6419 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 6420 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 6421 f:\sp\public\sdk\inc\mcx.h
+FILE 6422 f:\sp\public\sdk\inc\pshpack8.h
+FILE 6423 f:\sp\public\sdk\inc\guiddef.h
+FILE 6424 f:\sp\public\sdk\inc\ddbanned.h
+FILE 6425 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 6426 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h
+FILE 6427 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 6428 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 6429 f:\sp\public\sdk\inc\windows.h
+FILE 6430 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 6431 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 6432 f:\sp\public\sdk\inc\winnls.h
+FILE 6433 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 6434 f:\sp\public\sdk\inc\pshpack1.h
+FILE 6435 f:\sp\public\sdk\inc\winerror.h
+FILE 6436 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 6437 f:\sp\public\sdk\inc\winreg.h
+FILE 6438 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 6439 f:\sp\public\sdk\inc\tvout.h
+FILE 6440 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 6441 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 6442 f:\sp\public\sdk\inc\wincon.h
+FILE 6443 f:\sp\public\sdk\inc\imm.h
+FILE 6444 f:\sp\public\sdk\inc\winbase.h
+FILE 6445 f:\sp\vctools\crt_bld\self_x86\crt\src\iswctype.c
+FILE 6446 f:\sp\public\sdk\inc\wingdi.h
+FILE 6447 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 6448 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 6449 f:\sp\public\sdk\inc\winver.h
+FILE 6450 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h
+FILE 6451 f:\sp\public\sdk\inc\windows.h
+FILE 6452 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 6453 f:\sp\public\sdk\inc\pshpack2.h
+FILE 6454 f:\sp\public\sdk\inc\reason.h
+FILE 6455 f:\sp\public\sdk\inc\specstrings.h
+FILE 6456 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 6457 f:\sp\public\sdk\inc\basetsd.h
+FILE 6458 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 6459 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 6460 f:\sp\public\sdk\inc\pshpack4.h
+FILE 6461 f:\sp\public\sdk\inc\winnetwk.h
+FILE 6462 f:\sp\public\sdk\inc\stralign.h
+FILE 6463 f:\sp\public\sdk\inc\poppack.h
+FILE 6464 f:\sp\public\sdk\inc\winsvc.h
+FILE 6465 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 6466 f:\sp\public\sdk\inc\windef.h
+FILE 6467 f:\sp\public\sdk\inc\winuser.h
+FILE 6468 f:\sp\public\sdk\inc\mcx.h
+FILE 6469 f:\sp\public\sdk\inc\pshpack8.h
+FILE 6470 f:\sp\public\sdk\inc\guiddef.h
+FILE 6471 f:\sp\public\sdk\inc\ddbanned.h
+FILE 6472 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 6473 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 6474 f:\sp\public\sdk\inc\winnt.h
+FILE 6475 f:\sp\public\sdk\inc\winnls.h
+FILE 6476 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 6477 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 6478 f:\sp\public\sdk\inc\pshpack1.h
+FILE 6479 f:\sp\public\sdk\inc\winerror.h
+FILE 6480 f:\sp\public\sdk\inc\winsvc.h
+FILE 6481 f:\sp\public\sdk\inc\winuser.h
+FILE 6482 f:\sp\public\sdk\inc\mcx.h
+FILE 6483 f:\sp\public\sdk\inc\pshpack8.h
+FILE 6484 f:\sp\public\sdk\inc\guiddef.h
+FILE 6485 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 6486 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 6487 f:\sp\public\sdk\inc\windows.h
+FILE 6488 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 6489 f:\sp\public\sdk\inc\winnls.h
+FILE 6490 f:\sp\vctools\crt_bld\self_x86\crt\src\_wctype.c
+FILE 6491 f:\sp\public\sdk\inc\pshpack1.h
+FILE 6492 f:\sp\public\sdk\inc\winerror.h
+FILE 6493 f:\sp\public\sdk\inc\winreg.h
+FILE 6494 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 6495 f:\sp\public\sdk\inc\tvout.h
+FILE 6496 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 6497 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 6498 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 6499 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 6500 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 6501 f:\sp\public\sdk\inc\wincon.h
+FILE 6502 f:\sp\public\sdk\inc\imm.h
+FILE 6503 f:\sp\public\sdk\inc\winbase.h
+FILE 6504 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 6505 f:\sp\public\sdk\inc\wingdi.h
+FILE 6506 f:\sp\public\sdk\inc\windef.h
+FILE 6507 f:\sp\vctools\crt_bld\self_x86\crt\src\mbctype.h
+FILE 6508 f:\sp\public\sdk\inc\winver.h
+FILE 6509 f:\sp\public\sdk\inc\pshpack2.h
+FILE 6510 f:\sp\public\sdk\inc\reason.h
+FILE 6511 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 6512 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 6513 f:\sp\public\sdk\inc\winnt.h
+FILE 6514 f:\sp\public\sdk\inc\specstrings.h
+FILE 6515 f:\sp\public\sdk\inc\basetsd.h
+FILE 6516 f:\sp\public\sdk\inc\pshpack4.h
+FILE 6517 f:\sp\public\sdk\inc\ddbanned.h
+FILE 6518 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 6519 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 6520 f:\sp\public\sdk\inc\winnetwk.h
+FILE 6521 f:\sp\public\sdk\inc\stralign.h
+FILE 6522 f:\sp\public\sdk\inc\poppack.h
+FILE 6523 f:\sp\public\sdk\inc\mcx.h
+FILE 6524 f:\sp\public\sdk\inc\pshpack8.h
+FILE 6525 f:\sp\public\sdk\inc\guiddef.h
+FILE 6526 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 6527 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 6528 f:\sp\public\sdk\inc\windows.h
+FILE 6529 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 6530 f:\sp\public\sdk\inc\winnls.h
+FILE 6531 f:\sp\public\sdk\inc\pshpack1.h
+FILE 6532 f:\sp\public\sdk\inc\winerror.h
+FILE 6533 f:\sp\public\sdk\inc\winreg.h
+FILE 6534 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 6535 f:\sp\vctools\crt_bld\self_x86\crt\src\_ctype.c
+FILE 6536 f:\sp\public\sdk\inc\tvout.h
+FILE 6537 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 6538 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 6539 f:\sp\public\sdk\inc\wincon.h
+FILE 6540 f:\sp\public\sdk\inc\imm.h
+FILE 6541 f:\sp\public\sdk\inc\winbase.h
+FILE 6542 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 6543 f:\sp\public\sdk\inc\wingdi.h
+FILE 6544 f:\sp\public\sdk\inc\windef.h
+FILE 6545 f:\sp\public\sdk\inc\winver.h
+FILE 6546 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 6547 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 6548 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 6549 f:\sp\public\sdk\inc\pshpack2.h
+FILE 6550 f:\sp\public\sdk\inc\reason.h
+FILE 6551 f:\sp\public\sdk\inc\winnt.h
+FILE 6552 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 6553 f:\sp\public\sdk\inc\specstrings.h
+FILE 6554 f:\sp\public\sdk\inc\basetsd.h
+FILE 6555 f:\sp\public\sdk\inc\pshpack4.h
+FILE 6556 f:\sp\public\sdk\inc\winnetwk.h
+FILE 6557 f:\sp\public\sdk\inc\stralign.h
+FILE 6558 f:\sp\public\sdk\inc\poppack.h
+FILE 6559 f:\sp\public\sdk\inc\winsvc.h
+FILE 6560 f:\sp\public\sdk\inc\ddbanned.h
+FILE 6561 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 6562 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 6563 f:\sp\public\sdk\inc\winuser.h
+FILE 6564 f:\sp\public\sdk\inc\pshpack2.h
+FILE 6565 f:\sp\public\sdk\inc\mcx.h
+FILE 6566 f:\sp\public\sdk\inc\winuser.h
+FILE 6567 f:\sp\public\sdk\inc\winnls.h
+FILE 6568 f:\sp\public\sdk\inc\stralign.h
+FILE 6569 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 6570 f:\sp\public\sdk\inc\windef.h
+FILE 6571 f:\sp\public\sdk\inc\tvout.h
+FILE 6572 f:\sp\public\sdk\inc\winsvc.h
+FILE 6573 f:\sp\vctools\crt_bld\self_x86\crt\src\internal_securecrt.h
+FILE 6574 f:\sp\public\sdk\inc\wingdi.h
+FILE 6575 f:\sp\public\sdk\inc\pshpack4.h
+FILE 6576 f:\sp\public\sdk\inc\poppack.h
+FILE 6577 f:\sp\public\sdk\inc\winnt.h
+FILE 6578 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 6579 f:\sp\public\sdk\inc\winnetwk.h
+FILE 6580 f:\sp\public\sdk\inc\imm.h
+FILE 6581 f:\sp\vctools\crt_bld\self_x86\crt\src\xtoa.c
+FILE 6582 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 6583 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 6584 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 6585 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 6586 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h
+FILE 6587 f:\sp\vctools\crt_bld\self_x86\crt\src\xtoas.c
+FILE 6588 f:\sp\public\sdk\inc\pshpack1.h
+FILE 6589 f:\sp\public\sdk\inc\winver.h
+FILE 6590 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 6591 f:\sp\public\sdk\inc\guiddef.h
+FILE 6592 f:\sp\public\sdk\inc\specstrings.h
+FILE 6593 f:\sp\public\sdk\inc\basetsd.h
+FILE 6594 f:\sp\public\sdk\inc\winreg.h
+FILE 6595 f:\sp\public\sdk\inc\ddbanned.h
+FILE 6596 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 6597 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 6598 f:\sp\public\sdk\inc\windows.h
+FILE 6599 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 6600 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 6601 f:\sp\public\sdk\inc\winbase.h
+FILE 6602 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 6603 f:\sp\public\sdk\inc\winerror.h
+FILE 6604 f:\sp\public\sdk\inc\pshpack8.h
+FILE 6605 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h
+FILE 6606 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 6607 f:\sp\public\sdk\inc\reason.h
+FILE 6608 f:\sp\public\sdk\inc\wincon.h
+FILE 6609 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 6610 f:\sp\vctools\crt_bld\self_x86\crt\src\wchar.h
+FILE 6611 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 6612 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 6613 f:\sp\vctools\crt_bld\self_x86\crt\src\wchtodig.c
+FILE 6614 f:\sp\public\sdk\inc\ddbanned.h
+FILE 6615 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 6616 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 6617 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl
+FILE 6618 f:\sp\public\sdk\inc\poppack.h
+FILE 6619 f:\sp\public\sdk\inc\winnetwk.h
+FILE 6620 f:\sp\public\sdk\inc\imm.h
+FILE 6621 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 6622 f:\sp\public\sdk\inc\windef.h
+FILE 6623 f:\sp\public\sdk\inc\pshpack1.h
+FILE 6624 f:\sp\public\sdk\inc\winver.h
+FILE 6625 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 6626 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 6627 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 6628 f:\sp\public\sdk\inc\winnt.h
+FILE 6629 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 6630 f:\sp\public\sdk\inc\winreg.h
+FILE 6631 f:\sp\vctools\crt_bld\self_x86\crt\src\atox.c
+FILE 6632 f:\sp\public\sdk\inc\winbase.h
+FILE 6633 f:\sp\public\sdk\inc\winerror.h
+FILE 6634 f:\sp\public\sdk\inc\pshpack8.h
+FILE 6635 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 6636 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 6637 f:\sp\public\sdk\inc\reason.h
+FILE 6638 f:\sp\public\sdk\inc\wincon.h
+FILE 6639 f:\sp\public\sdk\inc\ddbanned.h
+FILE 6640 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 6641 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 6642 f:\sp\public\sdk\inc\pshpack2.h
+FILE 6643 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h
+FILE 6644 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 6645 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h
+FILE 6646 f:\sp\public\sdk\inc\mcx.h
+FILE 6647 f:\sp\public\sdk\inc\winuser.h
+FILE 6648 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 6649 f:\sp\public\sdk\inc\winnls.h
+FILE 6650 f:\sp\public\sdk\inc\guiddef.h
+FILE 6651 f:\sp\public\sdk\inc\windows.h
+FILE 6652 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 6653 f:\sp\vctools\crt_bld\self_x86\crt\src\mbctype.h
+FILE 6654 f:\sp\public\sdk\inc\specstrings.h
+FILE 6655 f:\sp\public\sdk\inc\basetsd.h
+FILE 6656 f:\sp\public\sdk\inc\stralign.h
+FILE 6657 f:\sp\public\sdk\inc\tvout.h
+FILE 6658 f:\sp\public\sdk\inc\winsvc.h
+FILE 6659 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 6660 f:\sp\public\sdk\inc\wingdi.h
+FILE 6661 f:\sp\public\sdk\inc\pshpack4.h
+FUNC 1000 13 4 vswprintf
+1000 0 50 71
+1000 12 51 71
+1012 1 52 71
+FUNC 1020 1b 10 wmemcpy_s
+1020 0 1230 66
+1020 1b 1233 66
+FUNC 1040 1b 10 wmemmove_s
+1040 0 1250 66
+1040 1b 1253 66
+FUNC 1060 19 4 std::bad_alloc::bad_alloc(char const *)
+1060 13 371 83
+1073 6 372 83
+FUNC 1080 b 0 std::bad_alloc::~bad_alloc()
+1080 6 380 83
+1086 5 381 83
+FUNC 1090 24 0 std::bad_alloc::`vector deleting destructor'(unsigned int)
+FUNC 10c0 f 8 std::char_traits<wchar_t>::assign(wchar_t &,wchar_t const &)
+10c0 0 302 70
+10c0 e 303 70
+10ce 1 304 70
+FUNC 10d0 17 4 std::char_traits<wchar_t>::length(wchar_t const *)
+10d0 0 325 70
+10d0 16 327 70
+10e6 1 328 70
+FUNC 10f0 27 10 std::char_traits<wchar_t>::_Copy_s(wchar_t *,unsigned int,wchar_t const *,unsigned int)
+10f0 0 340 70
+10f0 23 343 70
+1113 3 344 70
+1116 1 345 70
+FUNC 1120 27 10 std::char_traits<wchar_t>::_Move_s(wchar_t *,unsigned int,wchar_t const *,unsigned int)
+1120 0 364 70
+1120 23 367 70
+1143 3 368 70
+1146 1 369 70
+FUNC 1150 d 8 std::char_traits<char>::assign(char &,char const &)
+1150 0 417 70
+1150 c 418 70
+115c 1 419 70
+FUNC 1160 13 4 std::char_traits<char>::length(char const *)
+1160 0 440 70
+1160 12 442 70
+1172 1 443 70
+FUNC 1180 21 10 std::char_traits<char>::_Copy_s(char *,unsigned int,char const *,unsigned int)
+1180 0 455 70
+1180 1d 458 70
+119d 3 459 70
+11a0 1 460 70
+FUNC 11b0 21 10 std::char_traits<char>::_Move_s(char *,unsigned int,char const *,unsigned int)
+11b0 0 479 70
+11b0 1d 482 70
+11cd 3 483 70
+11d0 1 484 70
+FUNC 11e0 7 0 std::_Iterator_base::_Iterator_base()
+11e0 6 441 65
+11e6 1 442 65
+FUNC 11f0 6b 4 std::logic_error::logic_error(std::basic_string<char,std::char_traits<char>,std::allocator<char> > const &)
+11f0 56 27 82
+1246 15 28 82
+FUNC 1260 32 0 std::logic_error::~logic_error()
+1260 9 31 82
+1269 29 32 82
+FUNC 12a0 e 0 std::logic_error::what()
+12a0 0 35 82
+12a0 9 36 82
+12a9 1 37 82
+12aa 3 36 82
+12ad 1 37 82
+FUNC 12b0 47 0 std::logic_error::`scalar deleting destructor'(unsigned int)
+FUNC 1300 19 4 std::length_error::length_error(std::basic_string<char,std::char_traits<char>,std::allocator<char> > const &)
+1300 13 106 82
+1313 6 107 82
+FUNC 1320 32 0 std::length_error::~length_error()
+1320 3 110 82
+1323 2f 111 82
+FUNC 1360 47 0 std::length_error::`vector deleting destructor'(unsigned int)
+FUNC 13b0 19 4 std::out_of_range::out_of_range(std::basic_string<char,std::char_traits<char>,std::allocator<char> > const &)
+13b0 13 130 82
+13c3 6 131 82
+FUNC 13d0 32 0 std::out_of_range::~out_of_range()
+13d0 3 134 82
+13d3 2f 135 82
+FUNC 1410 47 0 std::out_of_range::`vector deleting destructor'(unsigned int)
+FUNC 1460 19 4 std::out_of_range::out_of_range(std::out_of_range const &)
+FUNC 1480 71 4 std::logic_error::logic_error(std::logic_error const &)
+FUNC 1500 1b 8 google_breakpad::WindowsStringUtils::safe_swprintf(wchar_t *,unsigned int,wchar_t const *,...)
+1500 0 94 63
+1500 1a 97 63
+151a 1 105 63
+FUNC 1520 35 0 google_breakpad::ExceptionHandler::set_dump_path(std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > const &)
+1520 4 137 43
+1524 f 138 43
+1533 c 139 43
+153f 7 140 43
+1546 1 141 43
+1547 6 139 43
+154d 7 140 43
+1554 1 141 43
+FUNC 1560 20b 14 google_breakpad::ExceptionHandler::ExceptionHandler(std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > const &,bool (*)(void *,_EXCEPTION_POINTERS *,MDRawAssertionInfo *),bool (*)(wchar_t const *,wchar_t const *,void *,_EXCEPTION_POINTERS *,MDRawAssertionInfo *,bool),void *,bool)
+1560 6d 75 12
+15cd 90 78 12
+165d 9 86 12
+1666 d 87 12
+1673 d 88 12
+1680 1e 96 12
+169e 11 98 12
+16af 7 99 12
+16b6 f 101 12
+16c5 a 104 12
+16cf 8 105 12
+16d7 7 106 12
+16de 7 107 12
+16e5 b 110 12
+16f0 8 114 12
+16f8 25 115 12
+171d d 117 12
+172a b 118 12
+1735 10 121 12
+1745 e 124 12
+1753 18 126 12
+FUNC 1770 274 0 google_breakpad::ExceptionHandler::~ExceptionHandler()
+1770 e 128 12
+177e a 129 12
+1788 7 130 12
+178f a 133 12
+1799 b 134 12
+17a4 a 136 12
+17ae 9 139 12
+17b7 63 142 12
+181a 23 143 12
+183d 5 144 12
+1842 13 147 12
+1855 2b 149 12
+1880 2a 151 12
+18aa 17 152 12
+18c1 2c 153 12
+18ed 19 151 12
+1906 11 158 12
+1917 23 161 12
+193a 6 162 12
+1940 d 165 12
+194d f 169 12
+195c d 170 12
+1969 f 171 12
+1978 9 172 12
+1981 63 173 12
+FUNC 19f0 31 0 std::vector<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::`scalar deleting destructor'(unsigned int)
+FUNC 1a30 51 4 google_breakpad::ExceptionHandler::ExceptionHandlerThreadMain(void *)
+1a30 13 176 12
+1a43 f 182 12
+1a52 1a 185 12
+1a6c 13 188 12
+1a7f 2 190 12
+FUNC 1a90 c7 4 google_breakpad::AutoExceptionHandler::AutoExceptionHandler()
+1a90 7 204 12
+1a97 b 221 12
+1aa2 82 224 12
+1b24 d 225 12
+1b31 c 229 12
+1b3d e 231 12
+1b4b c 233 12
+FUNC 1b60 36 0 google_breakpad::AutoExceptionHandler::~AutoExceptionHandler()
+1b60 0 235 12
+1b60 b 237 12
+1b6b d 239 12
+1b78 b 242 12
+1b83 7 243 12
+1b8a b 244 12
+1b95 1 245 12
+FUNC 1ba0 3 0 google_breakpad::AutoExceptionHandler::get_handler()
+1ba0 3 247 12
+FUNC 1bb0 c4 4 google_breakpad::ExceptionHandler::HandleException(_EXCEPTION_POINTERS *)
+1bb0 2b 254 12
+1bdb a 255 12
+1be5 f 262 12
+1bf4 1e 265 12
+1c12 5 273 12
+1c17 2 274 12
+1c19 7 283 12
+1c20 5 284 12
+1c25 2 285 12
+1c27 2 286 12
+1c29 37 290 12
+1c60 14 291 12
+FUNC 1c80 121 14 google_breakpad::ExceptionHandler::HandleInvalidParameter(wchar_t const *,wchar_t const *,wchar_t const *,unsigned int,unsigned int)
+1c80 40 299 12
+1cc0 b7 319 12
+1d77 7 320 12
+1d7e 14 323 12
+1d92 2 324 12
+1d94 5 337 12
+1d99 8 345 12
+FUNC 1db0 81 8 google_breakpad::ExceptionHandler::WriteMinidumpOnHandlerThread(_EXCEPTION_POINTERS *,MDRawAssertionInfo *)
+1db0 2 350 12
+1db2 d 351 12
+1dbf 6 354 12
+1dc5 2b 359 12
+1df0 f 362 12
+1dff 6 363 12
+1e05 26 370 12
+1e2b 3 372 12
+1e2e 3 373 12
+FUNC 1e40 1d 0 google_breakpad::ExceptionHandler::WriteMinidump()
+1e40 3 375 12
+1e43 b 376 12
+1e4e b 377 12
+1e59 3 378 12
+1e5c 1 379 12
+FUNC 1e60 a2 4 google_breakpad::ExceptionHandler::WriteMinidump(std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > const &,bool (*)(wchar_t const *,wchar_t const *,void *,_EXCEPTION_POINTERS *,MDRawAssertionInfo *,bool),void *)
+1e60 41 384 12
+1ea1 10 385 12
+1eb1 2a 386 12
+1edb 27 387 12
+FUNC 1f10 142 c google_breakpad::ExceptionHandler::WriteMinidumpWithException(unsigned long,_EXCEPTION_POINTERS *,MDRawAssertionInfo *)
+1f10 0 392 12
+1f10 22 399 12
+1f32 7 466 12
+1f39 2 403 12
+1f3b e 404 12
+1f49 1f 411 12
+1f68 9 412 12
+1f71 8 414 12
+1f79 4 415 12
+1f7d 8 416 12
+1f85 8 426 12
+1f8d a 427 12
+1f97 34 440 12
+1fcb 8 441 12
+1fd3 8 442 12
+1fdb 4 443 12
+1fdf 8 444 12
+1fe7 30 454 12
+2017 c 456 12
+2023 7 460 12
+202a 1e 462 12
+2048 4 465 12
+204c 6 466 12
+FUNC 2060 138 0 google_breakpad::ExceptionHandler::UpdateNextID()
+2060 38 468 12
+2098 b 470 12
+20a3 4a 471 12
+20ed 25 472 12
+2112 1c 477 12
+212e 31 478 12
+215f 14 479 12
+2173 25 480 12
+FUNC 21a0 3b 4 std::basic_string<char,std::char_traits<char>,std::allocator<char> >::basic_string<char,std::char_traits<char>,std::allocator<char> >(char const *)
+21a0 0 650 17
+21a0 35 652 17
+21d5 6 653 17
+FUNC 21e0 25 4 std::basic_string<char,std::char_traits<char>,std::allocator<char> >::basic_string<char,std::char_traits<char>,std::allocator<char> >(std::basic_string<char,std::char_traits<char>,std::allocator<char> > const &)
+21e0 1 720 17
+21e1 4 721 17
+21e5 1a 722 17
+21ff 6 723 17
+FUNC 2210 26 0 std::basic_string<char,std::char_traits<char>,std::allocator<char> >::~basic_string<char,std::char_traits<char>,std::allocator<char> >()
+2210 3 904 17
+2213 22 905 17
+2235 1 906 17
+FUNC 2240 e 0 std::basic_string<char,std::char_traits<char>,std::allocator<char> >::c_str()
+2240 0 1621 17
+2240 9 1622 17
+2249 1 1623 17
+224a 3 1622 17
+224d 1 1623 17
+FUNC 2250 4 0 std::basic_string<char,std::char_traits<char>,std::allocator<char> >::size()
+2250 0 1636 17
+2250 3 1637 17
+2253 1 1638 17
+FUNC 2260 11 0 std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >()
+2260 0 564 17
+2260 10 565 17
+2270 1 566 17
+FUNC 2280 27 0 std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::~basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >()
+2280 3 904 17
+2283 23 905 17
+22a6 1 906 17
+FUNC 22b0 b 0 std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::operator=(std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > const &)
+22b0 0 914 17
+22b0 a 915 17
+22ba 1 916 17
+FUNC 22c0 24 4 std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::operator=(wchar_t const *)
+22c0 0 919 17
+22c0 21 920 17
+22e1 3 921 17
+FUNC 22f0 e 0 std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::c_str()
+22f0 0 1621 17
+22f0 9 1622 17
+22f9 1 1623 17
+22fa 3 1622 17
+22fd 1 1623 17
+FUNC 2300 c 0 std::vector<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::vector<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >()
+2300 0 457 23
+2300 b 458 23
+230b 1 459 23
+FUNC 2310 26 0 std::vector<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::~vector<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >()
+2310 0 545 23
+2310 25 546 23
+2335 1 547 23
+FUNC 2340 1d 0 std::vector<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::begin()
+2340 1 627 23
+2341 1b 628 23
+235c 1 629 23
+FUNC 2360 1d 0 std::vector<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::end()
+2360 1 637 23
+2361 1b 638 23
+237c 1 639 23
+FUNC 2380 13 0 std::vector<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::size()
+2380 0 702 23
+2380 9 703 23
+2389 1 704 23
+238a 8 703 23
+2392 1 704 23
+FUNC 23a0 23 0 std::vector<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::empty()
+23a0 0 712 23
+23a0 10 713 23
+23b0 1 714 23
+23b1 11 713 23
+23c2 1 714 23
+FUNC 23d0 56 0 std::vector<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::at(unsigned int)
+23d0 b 729 23
+23db 15 730 23
+23f0 5 731 23
+23f5 29 732 23
+241e 8 733 23
+FUNC 2430 47 0 std::vector<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::back()
+2430 c 776 23
+243c 32 777 23
+246e 9 778 23
+FUNC 2480 68 0 std::vector<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::push_back(google_breakpad::ExceptionHandler * const &)
+2480 10 786 23
+2490 24 787 23
+24b4 d 796 23
+24c1 6 801 23
+24c7 1b 800 23
+24e2 6 801 23
+FUNC 24f0 23 0 std::vector<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::pop_back()
+24f0 6 818 23
+24f6 15 819 23
+250b 6 822 23
+2511 2 824 23
+FUNC 2520 3f 8 std::vector<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::erase(std::_Vector_iterator<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >)
+2520 7 996 23
+2527 24 998 23
+254b 11 1001 23
+255c 3 1002 23
+FUNC 2560 20 0 std::_Vector_iterator<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::operator*()
+2560 0 325 23
+2560 1c 326 23
+257c 1 327 23
+257d 2 326 23
+257f 1 327 23
+FUNC 2580 20 0 std::_Vector_iterator<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::operator++()
+2580 0 335 23
+2580 1d 336 23
+259d 2 337 23
+259f 1 338 23
+FUNC 25a0 1d 0 std::_Vector_const_iterator<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::operator!=(std::_Vector_const_iterator<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> > const &)
+25a0 0 202 23
+25a0 1c 203 23
+25bc 1 204 23
+FUNC 25c0 da c std::basic_string<char,std::char_traits<char>,std::allocator<char> >::assign(std::basic_string<char,std::char_traits<char>,std::allocator<char> > const &,unsigned int,unsigned int)
+25c0 1 1038 17
+25c1 12 1039 17
+25d3 5 1040 17
+25d8 3 1041 17
+25db a 1042 17
+25e5 2 1043 17
+25e7 4 1045 17
+25eb 17 1046 17
+2602 5 1052 17
+2607 3 1053 17
+260a 21 1047 17
+262b b 1049 17
+2636 13 1047 17
+2649 5 1052 17
+264e 3 1053 17
+2651 7 1047 17
+2658 5 1052 17
+265d 3 1053 17
+2660 22 1049 17
+2682 10 1050 17
+2692 5 1052 17
+2697 3 1053 17
+FUNC 26a0 27 4 std::basic_string<char,std::char_traits<char>,std::allocator<char> >::assign(char const *)
+26a0 1 1069 17
+26a1 23 1070 17
+26c4 3 1071 17
+FUNC 26d0 4a 8 std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Tidy(bool,unsigned int)
+26d0 0 2066 17
+26d0 f 2067 17
+26df 6 2069 17
+26e5 a 2072 17
+26ef d 2073 17
+26fc a 2074 17
+2706 11 2077 17
+2717 3 2078 17
+FUNC 2720 e 0 std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Myptr()
+2720 0 2092 17
+2720 9 2093 17
+2729 1 2094 17
+272a 3 2093 17
+272d 1 2094 17
+FUNC 2730 5 4 std::_String_val<char,std::allocator<char> >::_String_val<char,std::allocator<char> >(std::allocator<char>)
+2730 2 471 17
+2732 3 472 17
+FUNC 2740 5 4 std::_String_val<char,std::allocator<char> >::_String_val<char,std::allocator<char> >(std::_String_val<char,std::allocator<char> > const &)
+2740 2 477 17
+2742 3 484 17
+FUNC 2750 3 0 std::allocator<char>::allocator<char>()
+2750 2 120 19
+2752 1 122 19
+FUNC 2760 b 0 std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::assign(std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > const &)
+2760 0 1032 17
+2760 a 1033 17
+276a 1 1034 17
+FUNC 2770 ef c std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::assign(std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > const &,unsigned int,unsigned int)
+2770 1 1038 17
+2771 12 1039 17
+2783 5 1040 17
+2788 3 1041 17
+278b a 1042 17
+2795 2 1043 17
+2797 4 1045 17
+279b 17 1046 17
+27b2 5 1052 17
+27b7 3 1053 17
+27ba 24 1047 17
+27de b 1049 17
+27e9 13 1047 17
+27fc 5 1052 17
+2801 3 1053 17
+2804 9 1047 17
+280d 5 1052 17
+2812 3 1053 17
+2815 2f 1049 17
+2844 13 1050 17
+2857 5 1052 17
+285c 3 1053 17
+FUNC 2860 2b 4 std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::assign(wchar_t const *)
+2860 1 1069 17
+2861 27 1070 17
+2888 3 1071 17
+FUNC 2890 4f 8 std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Tidy(bool,unsigned int)
+2890 0 2066 17
+2890 f 2067 17
+289f 6 2069 17
+28a5 a 2072 17
+28af 10 2073 17
+28bf a 2074 17
+28c9 13 2077 17
+28dc 3 2078 17
+FUNC 28e0 e 0 std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Myptr()
+28e0 0 2092 17
+28e0 9 2093 17
+28e9 1 2094 17
+28ea 3 2093 17
+28ed 1 2094 17
+FUNC 28f0 5 4 std::_String_val<wchar_t,std::allocator<wchar_t> >::_String_val<wchar_t,std::allocator<wchar_t> >(std::allocator<wchar_t>)
+28f0 2 471 17
+28f2 3 472 17
+FUNC 2900 3 0 std::allocator<wchar_t>::allocator<wchar_t>()
+2900 2 120 19
+2902 1 122 19
+FUNC 2910 13 0 std::vector<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::capacity()
+2910 0 621 23
+2910 9 622 23
+2919 1 623 23
+291a 8 622 23
+2922 1 623 23
+FUNC 2930 86 c std::vector<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::insert(std::_Vector_iterator<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >,google_breakpad::ExceptionHandler * const &)
+2930 3 852 23
+2933 3e 853 23
+2971 11 854 23
+2982 2a 855 23
+29ac a 856 23
+FUNC 29c0 23 0 std::vector<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::_Buy(unsigned int)
+29c0 0 1066 23
+29c0 8 1070 23
+29c8 5 1071 23
+29cd a 1074 23
+29d7 3 1075 23
+29da 6 1076 23
+29e0 2 1078 23
+29e2 1 1079 23
+FUNC 29f0 1 0 std::vector<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::_Destroy(google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *)
+29f0 0 1082 23
+29f0 1 1084 23
+FUNC 2a00 26 0 std::vector<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::_Tidy()
+2a00 0 1087 23
+2a00 7 1088 23
+2a07 9 1096 23
+2a10 15 1098 23
+2a25 1 1099 23
+FUNC 2a30 23 0 std::vector<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::_Ufill(google_breakpad::ExceptionHandler * *,unsigned int,google_breakpad::ExceptionHandler * const &)
+2a30 0 1207 23
+2a30 1f 1208 23
+2a4f 3 1209 23
+2a52 1 1210 23
+FUNC 2a60 76 0 std::vector<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::_Xran()
+2a60 23 1218 23
+2a83 53 1219 23
+FUNC 2ae0 3 4 std::_Vector_val<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::_Vector_val<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >(std::allocator<google_breakpad::ExceptionHandler *>)
+2ae0 0 412 23
+2ae0 3 413 23
+FUNC 2af0 1 0 std::allocator<google_breakpad::ExceptionHandler *>::allocator<google_breakpad::ExceptionHandler *>()
+2af0 0 120 19
+2af0 1 122 19
+FUNC 2b00 21 0 std::_Vector_iterator<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::_Vector_iterator<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >(google_breakpad::ExceptionHandler * *,std::_Container_base const *)
+2b00 1e 314 23
+2b1e 3 315 23
+FUNC 2b30 32 4 std::_Vector_iterator<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::operator+(int)
+2b30 1 367 23
+2b31 2 368 23
+2b33 26 369 23
+2b59 9 370 23
+FUNC 2b70 2f 0 std::_Vector_iterator<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::operator-(int)
+2b70 1 378 23
+2b71 2 379 23
+2b73 25 380 23
+2b98 7 381 23
+FUNC 2ba0 20 0 std::_Vector_const_iterator<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::operator*()
+2ba0 0 92 23
+2ba0 a 103 23
+2baa f 104 23
+2bb9 3 107 23
+2bbc 1 108 23
+2bbd 2 107 23
+2bbf 1 108 23
+FUNC 2bc0 20 0 std::_Vector_const_iterator<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::operator++()
+2bc0 0 116 23
+2bc0 a 117 23
+2bca f 118 23
+2bd9 4 119 23
+2bdd 2 120 23
+2bdf 1 121 23
+FUNC 2be0 1d 0 std::_Vector_const_iterator<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::operator==(std::_Vector_const_iterator<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> > const &)
+2be0 0 190 23
+2be0 f 195 23
+2bef d 198 23
+2bfc 1 199 23
+FUNC 2c00 c1 8 std::basic_string<char,std::char_traits<char>,std::allocator<char> >::assign(char const *,unsigned int)
+2c00 5 1056 17
+2c05 2d 1057 17
+2c32 1a 1058 17
+2c4c 4 1066 17
+2c50 25 1060 17
+2c75 c 1062 17
+2c81 f 1060 17
+2c90 8 1065 17
+2c98 3 1066 17
+2c9b e 1062 17
+2ca9 10 1063 17
+2cb9 5 1065 17
+2cbe 3 1066 17
+FUNC 2cd0 83 8 std::basic_string<char,std::char_traits<char>,std::allocator<char> >::erase(unsigned int,unsigned int)
+2cd0 1 1240 17
+2cd1 d 1241 17
+2cde 5 1242 17
+2ce3 d 1243 17
+2cf0 2 1244 17
+2cf2 4 1245 17
+2cf6 3c 1248 17
+2d32 8 1249 17
+2d3a 12 1250 17
+2d4c 4 1252 17
+2d50 3 1253 17
+FUNC 2d60 1f 4 std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Eos(unsigned int)
+2d60 0 2030 17
+2d60 14 2031 17
+2d74 3 2032 17
+2d77 5 2031 17
+2d7c 3 2032 17
+FUNC 2d80 bc 8 std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Grow(unsigned int,bool)
+2d80 1 2036 17
+2d81 c 2037 17
+2d8d 5 2038 17
+2d92 7 2039 17
+2d99 c 2040 17
+2da5 a 2046 17
+2daf 3 2047 17
+2db2 d 2041 17
+2dbf 39 2043 17
+2df8 10 2046 17
+2e08 3 2047 17
+2e0b 4 2044 17
+2e0f b 2045 17
+2e1a c 2046 17
+2e26 3 2047 17
+2e29 6 2045 17
+2e2f a 2046 17
+2e39 3 2047 17
+FUNC 2e40 e 0 std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Myptr()
+2e40 0 2087 17
+2e40 9 2088 17
+2e49 1 2089 17
+2e4a 3 2088 17
+2e4d 1 2089 17
+FUNC 2e50 5 4 std::allocator<char>::allocator<char>(std::allocator<char> const &)
+2e50 2 124 19
+2e52 3 126 19
+FUNC 2e60 e 8 std::allocator<char>::deallocate(char *,unsigned int)
+2e60 0 140 19
+2e60 b 141 19
+2e6b 3 142 19
+FUNC 2e70 da 8 std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::assign(wchar_t const *,unsigned int)
+2e70 4 1056 17
+2e74 31 1057 17
+2ea5 1d 1058 17
+2ec2 3 1066 17
+2ec5 28 1060 17
+2eed d 1062 17
+2efa 10 1060 17
+2f0a a 1065 17
+2f14 3 1066 17
+2f17 18 1062 17
+2f2f 14 1063 17
+2f43 4 1065 17
+2f47 3 1066 17
+FUNC 2f50 97 8 std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::erase(unsigned int,unsigned int)
+2f50 1 1240 17
+2f51 d 1241 17
+2f5e 5 1242 17
+2f63 d 1243 17
+2f70 2 1244 17
+2f72 4 1245 17
+2f76 4d 1248 17
+2fc3 8 1249 17
+2fcb 15 1250 17
+2fe0 4 1252 17
+2fe4 3 1253 17
+FUNC 2ff0 4 0 std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::size()
+2ff0 0 1636 17
+2ff0 3 1637 17
+2ff3 1 1638 17
+FUNC 3000 23 4 std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Eos(unsigned int)
+3000 0 2030 17
+3000 16 2031 17
+3016 3 2032 17
+3019 7 2031 17
+3020 3 2032 17
+FUNC 3030 c7 8 std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Grow(unsigned int,bool)
+3030 1 2036 17
+3031 f 2037 17
+3040 5 2038 17
+3045 7 2039 17
+304c c 2040 17
+3058 a 2046 17
+3062 3 2047 17
+3065 d 2041 17
+3072 3c 2043 17
+30ae 12 2046 17
+30c0 3 2047 17
+30c3 4 2044 17
+30c7 b 2045 17
+30d2 d 2046 17
+30df 3 2047 17
+30e2 8 2045 17
+30ea a 2046 17
+30f4 3 2047 17
+FUNC 3100 e 0 std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Myptr()
+3100 0 2087 17
+3100 9 2088 17
+3109 1 2089 17
+310a 3 2088 17
+310d 1 2089 17
+FUNC 3110 5 4 std::allocator<wchar_t>::allocator<wchar_t>(std::allocator<wchar_t> const &)
+3110 2 124 19
+3112 3 126 19
+FUNC 3120 e 8 std::allocator<wchar_t>::deallocate(wchar_t *,unsigned int)
+3120 0 140 19
+3120 b 141 19
+312b 3 142 19
+FUNC 3130 6 0 std::vector<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::max_size()
+3130 0 707 23
+3130 5 708 23
+3135 1 709 23
+FUNC 3140 208 8 std::vector<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::_Insert_n(std::_Vector_iterator<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >,unsigned int,google_breakpad::ExceptionHandler * const &)
+3140 6 1117 23
+3146 2 1125 23
+3148 1c 1126 23
+3164 1c 1130 23
+3180 5 1131 23
+3185 1b 1132 23
+31a0 23 1135 23
+31c3 17 1136 23
+31da 19 1137 23
+31f3 7 1138 23
+31fa 25 1143 23
+321f 7 1144 23
+3226 1e 1145 23
+3244 13 1152 23
+3257 4 1153 23
+325b 9 1156 23
+3264 7 1163 23
+326b a 1164 23
+3275 3 1165 23
+3278 a 1204 23
+3282 13 1167 23
+3295 17 1170 23
+32ac 1a 1174 23
+32c6 7 1180 23
+32cd 16 1187 23
+32e3 a 1204 23
+32ed 2a 1193 23
+3317 e 1200 23
+3325 19 1202 23
+333e a 1204 23
+FUNC 3350 7c 0 std::vector<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::_Xlen()
+3350 29 1213 23
+3379 53 1214 23
+FUNC 33d0 1 0 std::allocator<google_breakpad::ExceptionHandler *>::allocator<google_breakpad::ExceptionHandler *>(std::allocator<google_breakpad::ExceptionHandler *> const &)
+33d0 0 124 19
+33d0 1 126 19
+FUNC 33e0 8 0 std::allocator<google_breakpad::ExceptionHandler *>::deallocate(google_breakpad::ExceptionHandler * *,unsigned int)
+33e0 0 140 19
+33e0 7 141 19
+33e7 1 142 19
+FUNC 33f0 56 0 std::allocator<google_breakpad::ExceptionHandler *>::allocate(unsigned int)
+33f0 3 145 19
+33f3 16 146 19
+3409 4 147 19
+340d 39 146 19
+FUNC 3450 32 4 std::_Vector_iterator<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::operator+=(int)
+3450 0 361 23
+3450 2c 362 23
+347c 3 363 23
+347f 3 364 23
+FUNC 3490 28 0 std::_Vector_iterator<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::operator-=(int)
+3490 0 373 23
+3490 27 374 23
+34b7 1 375 23
+FUNC 34c0 19 0 std::_Vector_iterator<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::operator-(std::_Vector_const_iterator<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> > const &)
+34c0 0 384 23
+34c0 18 385 23
+34d8 1 386 23
+FUNC 34e0 21 0 std::_Vector_const_iterator<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::_Vector_const_iterator<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >(google_breakpad::ExceptionHandler * *,std::_Container_base const *)
+34e0 0 77 23
+34e0 19 79 23
+34f9 2 80 23
+34fb 3 81 23
+34fe 3 82 23
+FUNC 3510 19 4 std::length_error::length_error(std::length_error const &)
+FUNC 3530 7 0 std::_Ranit<google_breakpad::ExceptionHandler *,int,google_breakpad::ExceptionHandler * const *,google_breakpad::ExceptionHandler * const &>::_Ranit<google_breakpad::ExceptionHandler *,int,google_breakpad::ExceptionHandler * const *,google_breakpad::ExceptionHandler * const &>()
+FUNC 3540 6 0 std::basic_string<char,std::char_traits<char>,std::allocator<char> >::max_size()
+3540 0 1641 17
+3540 5 1643 17
+3545 1 1644 17
+FUNC 3550 171 8 std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Copy(unsigned int,unsigned int)
+3550 30 2000 17
+3580 8 2001 17
+3588 5 2002 17
+358d 2 2003 17
+358f 2 2004 17
+3591 1f 2005 17
+35b0 3 2006 17
+35b3 2 2009 17
+35b5 18 2010 17
+35cd 2 2019 17
+35cf 30 2010 17
+35ff 3 2012 17
+3602 19 2014 17
+361b c 2019 17
+3627 7 2021 17
+362e 20 2022 17
+364e 12 2023 17
+3660 1c 2026 17
+367c 14 2027 17
+3690 15 2016 17
+36a5 1c 2017 17
+FUNC 36d0 39 4 std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Inside(char const *)
+36d0 1 2050 17
+36d1 2b 2052 17
+36fc 3 2055 17
+36ff 4 2056 17
+3703 3 2053 17
+3706 3 2056 17
+FUNC 3710 6 0 std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::max_size()
+3710 0 1641 17
+3710 5 1643 17
+3715 1 1644 17
+FUNC 3720 17b 8 std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Copy(unsigned int,unsigned int)
+3720 30 2000 17
+3750 8 2001 17
+3758 8 2002 17
+3760 2 2003 17
+3762 2 2004 17
+3764 1f 2005 17
+3783 3 2006 17
+3786 2 2009 17
+3788 1b 2010 17
+37a3 2 2019 17
+37a5 30 2010 17
+37d5 3 2012 17
+37d8 19 2014 17
+37f1 c 2019 17
+37fd 7 2021 17
+3804 24 2022 17
+3828 12 2023 17
+383a 20 2026 17
+385a 14 2027 17
+386e 17 2016 17
+3885 16 2017 17
+FUNC 38a0 3a 4 std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Inside(wchar_t const *)
+38a0 1 2050 17
+38a1 2c 2052 17
+38cd 3 2055 17
+38d0 4 2056 17
+38d4 3 2053 17
+38d7 3 2056 17
+FUNC 38e0 6 0 std::allocator<google_breakpad::ExceptionHandler *>::max_size()
+38e0 0 165 19
+38e0 5 167 19
+38e5 1 168 19
+FUNC 38f0 32 4 std::_Vector_const_iterator<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::operator+=(int)
+38f0 0 146 23
+38f0 a 147 23
+38fa 1a 148 23
+3914 5 150 23
+3919 3 151 23
+391c 3 152 23
+391f 3 153 23
+FUNC 3930 19 0 std::_Vector_const_iterator<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::operator-(std::_Vector_const_iterator<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> > const &)
+3930 0 173 23
+3930 f 178 23
+393f 9 181 23
+3948 1 182 23
+FUNC 3950 56 4 std::allocator<char>::allocate(unsigned int)
+3950 0 145 19
+3950 16 146 19
+3966 6 147 19
+396c 3a 146 19
+FUNC 39b0 4 0 std::allocator<char>::max_size()
+39b0 0 165 19
+39b0 3 167 19
+39b3 1 168 19
+FUNC 39c0 59 4 std::allocator<wchar_t>::allocate(unsigned int)
+39c0 0 145 19
+39c0 19 146 19
+39d9 6 147 19
+39df 3a 146 19
+FUNC 3a20 6 0 std::allocator<wchar_t>::max_size()
+3a20 0 165 19
+3a20 5 167 19
+3a25 1 168 19
+FUNC 3a30 21 10 std::_Traits_helper::copy_s<std::char_traits<char> >(char *,unsigned int,char const *,unsigned int)
+3a30 0 581 70
+3a30 20 582 70
+3a50 1 583 70
+FUNC 3a60 27 10 std::_Traits_helper::copy_s<std::char_traits<wchar_t> >(wchar_t *,unsigned int,wchar_t const *,unsigned int)
+3a60 0 581 70
+3a60 26 582 70
+3a86 1 583 70
+FUNC 3a90 24 0 stdext::unchecked_copy<google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *>(google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *)
+3a90 0 3407 65
+3a90 23 3409 65
+3ab3 1 3410 65
+FUNC 3ac0 1 0 std::_Destroy_range<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >(google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,std::allocator<google_breakpad::ExceptionHandler *> &)
+3ac0 0 225 19
+3ac0 1 227 19
+FUNC 3ad0 15 0 stdext::unchecked_uninitialized_fill_n<google_breakpad::ExceptionHandler * *,unsigned int,google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >(google_breakpad::ExceptionHandler * *,unsigned int,google_breakpad::ExceptionHandler * const &,std::allocator<google_breakpad::ExceptionHandler *> &)
+3ad0 0 914 24
+3ad0 14 916 24
+3ae4 1 917 24
+FUNC 3af0 21 10 std::_Traits_helper::move_s<std::char_traits<char> >(char *,unsigned int,char const *,unsigned int)
+3af0 0 608 70
+3af0 20 609 70
+3b10 1 610 70
+FUNC 3b20 27 10 std::_Traits_helper::move_s<std::char_traits<wchar_t> >(wchar_t *,unsigned int,wchar_t const *,unsigned int)
+3b20 0 608 70
+3b20 26 609 70
+3b46 1 610 70
+FUNC 3b50 22 0 std::vector<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >::_Umove<google_breakpad::ExceptionHandler * *>(google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *)
+3b50 0 1109 23
+3b50 21 1112 23
+3b71 1 1113 23
+FUNC 3b80 10 0 std::fill<google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler *>(google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * const &)
+3b80 0 2976 65
+3b80 f 2977 65
+3b8f 1 2978 65
+FUNC 3b90 25 0 stdext::_Unchecked_move_backward<google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *>(google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *)
+3b90 0 3497 65
+3b90 24 3499 65
+3bb4 1 3500 65
+FUNC 3bc0 4f 0 std::_Allocate<google_breakpad::ExceptionHandler *>(unsigned int,google_breakpad::ExceptionHandler * *)
+3bc0 0 37 19
+3bc0 f 40 19
+3bcf 2c 41 19
+3bfb 10 44 19
+3c0b 4 45 19
+FUNC 3c10 54 8 std::_Allocate<char>(unsigned int,char *)
+3c10 0 37 19
+3c10 b 38 19
+3c1b 2 39 19
+3c1d 9 44 19
+3c26 4 45 19
+3c2a c 40 19
+3c36 2e 41 19
+FUNC 3c70 57 8 std::_Allocate<wchar_t>(unsigned int,wchar_t *)
+3c70 0 37 19
+3c70 b 38 19
+3c7b 2 39 19
+3c7d c 44 19
+3c89 4 45 19
+3c8d c 40 19
+3c99 2e 41 19
+FUNC 3cd0 19 4 std::bad_alloc::bad_alloc(std::bad_alloc const &)
+FUNC 3cf0 7 0 std::_Char_traits_cat<std::char_traits<char> >()
+3cf0 1 568 70
+3cf1 4 570 70
+3cf5 2 571 70
+FUNC 3d00 21 14 std::_Traits_helper::copy_s<std::char_traits<char> >(char *,unsigned int,char const *,unsigned int,std::_Secure_char_traits_tag)
+3d00 0 589 70
+3d00 20 590 70
+3d20 1 591 70
+FUNC 3d30 7 0 std::_Char_traits_cat<std::char_traits<wchar_t> >()
+3d30 1 568 70
+3d31 4 570 70
+3d35 2 571 70
+FUNC 3d40 27 14 std::_Traits_helper::copy_s<std::char_traits<wchar_t> >(wchar_t *,unsigned int,wchar_t const *,unsigned int,std::_Secure_char_traits_tag)
+3d40 0 589 70
+3d40 26 590 70
+3d66 1 591 70
+FUNC 3d70 3 0 std::_Checked_base<google_breakpad::ExceptionHandler * *>(google_breakpad::ExceptionHandler * * &)
+3d70 0 1009 65
+3d70 2 1011 65
+3d72 1 1012 65
+FUNC 3d80 1 0 std::_Iter_random<google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *>(google_breakpad::ExceptionHandler * * const &,google_breakpad::ExceptionHandler * * const &)
+3d80 0 839 65
+3d80 1 844 65
+FUNC 3d90 7 0 std::_Ptr_cat<google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *>(google_breakpad::ExceptionHandler * * &,google_breakpad::ExceptionHandler * * &)
+3d90 1 1329 65
+3d91 4 1331 65
+3d95 2 1332 65
+FUNC 3da0 15 4 std::_Copy_opt<google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,std::random_access_iterator_tag>(google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,std::random_access_iterator_tag,std::_Scalar_ptr_iterator_tag,std::_Range_checked_iterator_tag)
+3da0 0 2288 65
+3da0 d 2300 65
+3dad 7 2301 65
+3db4 1 2302 65
+FUNC 3dc0 1 4 std::_Destroy_range<google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >(google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,std::allocator<google_breakpad::ExceptionHandler *> &,std::_Scalar_ptr_iterator_tag)
+3dc0 0 242 19
+3dc0 1 243 19
+FUNC 3dd0 15 8 std::_Uninit_fill_n<google_breakpad::ExceptionHandler * *,unsigned int,google_breakpad::ExceptionHandler *,std::allocator<google_breakpad::ExceptionHandler *> >(google_breakpad::ExceptionHandler * *,unsigned int,google_breakpad::ExceptionHandler * const &,std::allocator<google_breakpad::ExceptionHandler *> &,std::_Scalar_ptr_iterator_tag,std::_Range_checked_iterator_tag)
+3dd0 0 415 24
+3dd0 14 416 24
+3de4 1 417 24
+FUNC 3df0 21 14 std::_Traits_helper::move_s<std::char_traits<char> >(char *,unsigned int,char const *,unsigned int,std::_Secure_char_traits_tag)
+3df0 0 616 70
+3df0 20 617 70
+3e10 1 618 70
+FUNC 3e20 27 14 std::_Traits_helper::move_s<std::char_traits<wchar_t> >(wchar_t *,unsigned int,wchar_t const *,unsigned int,std::_Secure_char_traits_tag)
+3e20 0 616 70
+3e20 26 617 70
+3e46 1 618 70
+FUNC 3e50 22 0 stdext::_Unchecked_uninitialized_move<google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,std::allocator<google_breakpad::ExceptionHandler *> >(google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,std::allocator<google_breakpad::ExceptionHandler *> &)
+3e50 0 843 24
+3e50 21 845 24
+3e71 1 846 24
+FUNC 3e80 10 0 std::_Fill<google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler *>(google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * const &)
+3e80 0 2946 65
+3e80 6 2948 65
+3e86 9 2949 65
+3e8f 1 2950 65
+FUNC 3e90 7 0 std::_Move_cat<google_breakpad::ExceptionHandler * *>(google_breakpad::ExceptionHandler * * const &)
+3e90 1 1046 65
+3e91 4 1048 65
+3e95 2 1049 65
+FUNC 3ea0 25 c std::_Move_backward_opt<google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,std::random_access_iterator_tag,std::_Undefined_move_tag>(google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,std::random_access_iterator_tag,std::_Undefined_move_tag,std::_Range_checked_iterator_tag)
+3ea0 0 2546 65
+3ea0 24 2548 65
+3ec4 1 2549 65
+FUNC 3ed0 3 4 std::_Checked_base<google_breakpad::ExceptionHandler * *>(google_breakpad::ExceptionHandler * * &,std::_Unchanged_checked_iterator_base_type_tag)
+3ed0 0 992 65
+3ed0 2 993 65
+3ed2 1 994 65
+FUNC 3ee0 15 0 stdext::unchecked_fill_n<google_breakpad::ExceptionHandler * *,unsigned int,google_breakpad::ExceptionHandler *>(google_breakpad::ExceptionHandler * *,unsigned int,google_breakpad::ExceptionHandler * const &)
+3ee0 0 3523 65
+3ee0 14 3524 65
+3ef4 1 3525 65
+FUNC 3f00 22 8 std::_Uninit_move<google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,std::allocator<google_breakpad::ExceptionHandler *>,std::_Undefined_move_tag>(google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,std::allocator<google_breakpad::ExceptionHandler *> &,std::_Undefined_move_tag,std::_Range_checked_iterator_tag)
+3f00 0 205 24
+3f00 21 206 24
+3f21 1 207 24
+FUNC 3f30 13 0 std::_Copy_backward_opt<google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,std::random_access_iterator_tag>(google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,std::random_access_iterator_tag,std::_Scalar_ptr_iterator_tag,std::_Range_checked_iterator_tag)
+3f30 0 2492 65
+3f30 10 2506 65
+3f40 2 2507 65
+3f42 1 2508 65
+FUNC 3f50 1 0 std::_Iter_cat<google_breakpad::ExceptionHandler * *>(google_breakpad::ExceptionHandler * * const &)
+3f50 0 798 65
+3f50 1 801 65
+FUNC 3f60 15 8 std::_Fill_n<google_breakpad::ExceptionHandler * *,unsigned int,google_breakpad::ExceptionHandler *>(google_breakpad::ExceptionHandler * *,unsigned int,google_breakpad::ExceptionHandler * const &,std::random_access_iterator_tag,std::_Range_checked_iterator_tag)
+3f60 0 3040 65
+3f60 14 3044 65
+3f74 1 3045 65
+FUNC 3f80 22 0 stdext::unchecked_uninitialized_copy<google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,std::allocator<google_breakpad::ExceptionHandler *> >(google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,std::allocator<google_breakpad::ExceptionHandler *> &)
+3f80 0 803 24
+3f80 21 805 24
+3fa1 1 806 24
+FUNC 3fb0 15 4 std::_Fill_n<google_breakpad::ExceptionHandler * *,unsigned int,google_breakpad::ExceptionHandler *>(google_breakpad::ExceptionHandler * *,unsigned int,google_breakpad::ExceptionHandler * const &,std::_Range_checked_iterator_tag)
+3fb0 0 2986 65
+3fb0 5 2987 65
+3fb5 f 2988 65
+3fc4 1 2989 65
+FUNC 3fd0 15 4 std::_Uninit_copy<google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,std::allocator<google_breakpad::ExceptionHandler *> >(google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,std::allocator<google_breakpad::ExceptionHandler *> &,std::_Scalar_ptr_iterator_tag,std::_Range_checked_iterator_tag)
+3fd0 0 144 24
+3fd0 d 150 24
+3fdd 7 151 24
+3fe4 1 152 24
+FUNC 3ff0 13 4 vswprintf
+3ff0 0 50 147
+3ff0 12 51 147
+4002 1 52 147
+FUNC 4010 ae 4 google_breakpad::GUIDString::GUIDToWString(_GUID *)
+4010 12 43 126
+4022 51 51 126
+4073 3a 52 126
+40ad 11 53 126
+FUNC 40c0 ae 4 google_breakpad::GUIDString::GUIDToSymbolServerWString(_GUID *)
+40c0 12 56 126
+40d2 51 64 126
+4123 3a 65 126
+415d 11 66 126
+FUNC 4170 40 4 std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >(wchar_t const *)
+4170 0 650 143
+4170 3a 652 143
+41aa 6 653 143
+FUNC 41b0 86 8 main
+41b0 13 63 178
+41c3 38 64 178
+41fb 5 65 178
+4200 d 66 178
+420d 1b 67 178
+4228 e 68 178
+FUNC 4240 41 18 `anonymous namespace'::callback
+4240 3 45 178
+4243 8 46 178
+424b 11 47 178
+425c 2 48 178
+425e d 49 178
+426b 11 51 178
+427c 3 53 178
+427f 2 54 178
+FUNC 4290 18 0 `anonymous namespace'::CrashFunction
+4290 4 56 178
+4294 7 57 178
+429b 9 58 178
+42a4 4 59 178
+FUNC 42ae 18 4 std::invalid_argument::invalid_argument(std::basic_string<char,std::char_traits<char>,std::allocator<char> > const &)
+42ae 12 82 298
+42c0 6 83 298
+FUNC 42c6 b 0 std::invalid_argument::~invalid_argument()
+42c6 6 86 298
+42cc 5 87 298
+FUNC 42d1 22 0 std::invalid_argument::`vector deleting destructor'(unsigned int)
+FUNC 42f3 3f 0 std::_String_base::_Xlen()
+42f3 c 12 291
+42ff 33 13 291
+FUNC 4332 3f 0 std::_String_base::_Xran()
+4332 c 17 291
+433e 33 18 291
+FUNC 4371 3f 0 std::_String_base::_Xinvarg()
+4371 c 22 291
+437d 33 23 291
+FUNC 43b0 18 4 std::invalid_argument::invalid_argument(std::invalid_argument const &)
+FUNC 43c8 af 4 printf
+43c8 c 49 1601
+43d4 2b 54 1601
+43ff 14 58 1601
+4413 3 59 1601
+4416 10 61 1601
+4426 18 63 1601
+443e 11 65 1601
+444f c 68 1601
+445b 3 72 1601
+445e 6 73 1601
+4464 13 69 1601
+FUNC 4477 16 8 _printf_l
+4477 0 80 1601
+4477 15 85 1601
+448c 1 86 1601
+FUNC 448d 16 8 _printf_s_l
+448d 0 94 1601
+448d 15 99 1601
+44a2 1 100 1601
+FUNC 44a3 14 4 printf_s
+44a3 0 106 1601
+44a3 13 111 1601
+44b6 1 112 1601
+FUNC 44b7 16 8 _printf_p_l
+44b7 0 119 1601
+44b7 15 124 1601
+44cc 1 125 1601
+FUNC 44cd 14 4 _printf_p
+44cd 0 131 1601
+44cd 13 136 1601
+44e0 1 137 1601
+FUNC 44e1 25 4 _set_printf_count_output
+44e1 0 154 1601
+44e1 6 155 1601
+44e7 1e 156 1601
+4505 1 158 1601
+FUNC 4506 16 0 _get_printf_count_output
+4506 0 167 1601
+4506 15 168 1601
+451b 1 169 1601
+FUNC 451c f 0 __security_check_cookie
+451c 0 52 4397
+451c 6 55 4397
+4522 2 56 4397
+4524 2 57 4397
+4526 5 59 4397
+FUNC 452b 62 4 _flush
+452b 2 142 1704
+452d 25 152 1704
+4552 16 154 1704
+4568 7 158 1704
+456f 6 159 1704
+4575 2 161 1704
+4577 4 162 1704
+457b 4 163 1704
+457f 3 167 1704
+4582 7 168 1704
+4589 3 170 1704
+458c 1 171 1704
+FUNC 458d 42 4 _fflush_nolock
+458d 1 98 1704
+458e 8 102 1704
+4596 8 103 1704
+459e 1 116 1704
+459f b 106 1704
+45aa 4 108 1704
+45ae 1 116 1704
+45af 8 112 1704
+45b7 13 113 1704
+45ca 1 116 1704
+45cb 3 115 1704
+45ce 1 116 1704
+FUNC 45cf da 4 flsall
+45cf c 228 1704
+45db 5 230 1704
+45e0 3 231 1704
+45e3 8 233 1704
+45eb 3 234 1704
+45ee 11 236 1704
+45ff 14 238 1704
+4613 9 246 1704
+461c 6 248 1704
+4622 10 254 1704
+4632 5 256 1704
+4637 c 262 1704
+4643 3 266 1704
+4646 2 268 1704
+4648 a 269 1704
+4652 c 275 1704
+465e 3 276 1704
+4661 8 281 1704
+4669 3 236 1704
+466c 5 281 1704
+4671 11 282 1704
+4682 c 288 1704
+468e 4 292 1704
+4692 3 293 1704
+4695 2 292 1704
+4697 3 295 1704
+469a 6 296 1704
+46a0 9 289 1704
+FUNC 46a9 53 4 fflush
+46a9 c 57 1704
+46b5 7 62 1704
+46bc 9 63 1704
+46c5 9 65 1704
+46ce 3 67 1704
+46d1 c 68 1704
+46dd c 70 1704
+46e9 3 74 1704
+46ec 6 75 1704
+46f2 a 71 1704
+FUNC 46fc 9 0 _flushall
+46fc 0 193 1704
+46fc 8 194 1704
+4704 1 195 1704
+FUNC 4705 6 0 __iob_func
+4705 0 53 2087
+4705 5 54 2087
+470a 1 55 2087
+FUNC 470b b1 0 __initstdio
+470b 0 113 2087
+470b d 122 2087
+4718 7 123 2087
+471f 4 124 2087
+4723 7 125 2087
+472a 13 134 2087
+473d 19 137 2087
+4756 4 138 2087
+475a 1 163 2087
+475b e 145 2087
+4769 11 146 2087
+477a b 148 2087
+4785 24 151 2087
+47a9 2 158 2087
+47ab d 148 2087
+47b8 3 162 2087
+47bb 1 163 2087
+FUNC 47bc 20 0 __endstdio
+47bc 0 191 2087
+47bc 5 193 2087
+47c1 9 196 2087
+47ca 5 197 2087
+47cf c 198 2087
+47db 1 199 2087
+FUNC 47dc 3c 4 _lock_file
+47dc 1 221 2087
+47dd 15 226 2087
+47f2 10 231 2087
+4802 9 233 2087
+480b 1 242 2087
+480c b 241 2087
+4817 1 242 2087
+FUNC 4818 2e 8 _lock_file2
+4818 0 264 2087
+4818 9 269 2087
+4821 9 274 2087
+482a c 276 2087
+4836 1 285 2087
+4837 e 284 2087
+4845 1 285 2087
+FUNC 4846 36 4 _unlock_file
+4846 0 306 2087
+4846 14 311 2087
+485a 7 317 2087
+4861 f 318 2087
+4870 1 327 2087
+4871 a 326 2087
+487b 1 327 2087
+FUNC 487c 2a 8 _unlock_file2
+487c 0 349 2087
+487c 7 354 2087
+4883 d 360 2087
+4890 a 361 2087
+489a 1 370 2087
+489b a 369 2087
+48a5 1 370 2087
+FUNC 48a6 16 4 wcslen
+48a6 0 41 731
+48a6 4 42 731
+48aa a 44 731
+48b4 7 46 731
+48bb 1 47 731
+FUNC 48bc 5 4 operator delete(void *)
+48bc 0 20 5184
+48bc 5 23 5184
+FUNC 48c1 30 8 _JumpToContinuation(void *,EHRegistrationNode *)
+48c1 5 77 5627
+48c6 9 84 5627
+48cf 7 93 5627
+48d6 2 94 5627
+48d8 6 95 5627
+48de 3 100 5627
+48e1 3 101 5627
+48e4 3 102 5627
+48e7 3 103 5627
+48ea 2 104 5627
+48ec 5 106 5627
+FUNC 48f1 7 8 _CallMemberFunction0(void *,void *)
+48f1 0 118 5627
+48f1 1 120 5627
+48f2 1 121 5627
+48f3 3 122 5627
+48f6 2 123 5627
+FUNC 48f8 7 c _CallMemberFunction1(void *,void *,void *)
+48f8 0 139 5627
+48f8 1 141 5627
+48f9 1 142 5627
+48fa 3 143 5627
+48fd 2 144 5627
+FUNC 48ff 7 10 _CallMemberFunction2(void *,void *,void *,int)
+48ff 0 161 5627
+48ff 1 163 5627
+4900 1 164 5627
+4901 3 165 5627
+4904 2 166 5627
+FUNC 4906 52 8 _UnwindNestedFrames(EHRegistrationNode *,EHExceptionRecord *)
+4906 8 218 5627
+490e 7 232 5627
+4915 3 233 5627
+4918 7 236 5627
+491f 10 237 5627
+492f f 241 5627
+493e 7 247 5627
+4945 3 248 5627
+4948 2 249 5627
+494a 7 250 5627
+4951 7 256 5627
+FUNC 4958 36 10 __CxxFrameHandler
+4958 0 287 5627
+4958 1 295 5627
+4959 2 296 5627
+495b 3 297 5627
+495e 1 298 5627
+495f 1 299 5627
+4960 1 300 5627
+4961 1 301 5627
+4962 3 306 5627
+4965 1f 311 5627
+4984 1 316 5627
+4985 1 317 5627
+4986 1 318 5627
+4987 3 319 5627
+498a 2 320 5627
+498c 1 321 5627
+498d 1 322 5627
+FUNC 498e 36 10 __CxxFrameHandler3
+498e 0 341 5627
+498e 1 349 5627
+498f 2 350 5627
+4991 3 351 5627
+4994 1 352 5627
+4995 1 353 5627
+4996 1 354 5627
+4997 1 355 5627
+4998 3 360 5627
+499b 1f 365 5627
+49ba 1 370 5627
+49bb 1 371 5627
+49bc 1 372 5627
+49bd 3 373 5627
+49c0 2 374 5627
+49c2 1 375 5627
+49c3 1 376 5627
+FUNC 49c4 36 10 __CxxFrameHandler2
+49c4 0 391 5627
+49c4 1 399 5627
+49c5 2 400 5627
+49c7 3 401 5627
+49ca 1 402 5627
+49cb 1 403 5627
+49cc 1 404 5627
+49cd 1 405 5627
+49ce 3 410 5627
+49d1 1f 415 5627
+49f0 1 420 5627
+49f1 1 421 5627
+49f2 1 422 5627
+49f3 3 423 5627
+49f6 2 424 5627
+49f8 1 425 5627
+49f9 1 426 5627
+FUNC 49fa 1a 4 __CxxLongjmpUnwind
+49fa 0 443 5627
+49fa 17 449 5627
+4a11 3 452 5627
+FUNC 4a14 30 10 CatchGuardHandler
+4a14 1 545 5627
+4a15 1 551 5627
+4a16 e 557 5627
+4a24 1f 567 5627
+4a43 1 572 5627
+FUNC 4a44 d5 1c _CallSETranslator(EHExceptionRecord *,EHRegistrationNode *,void *,void *,_s_FuncInfo const *,int,EHRegistrationNode *)
+4a44 7 637 5627
+4a4b 9 642 5627
+4a54 5 644 5627
+4a59 3 645 5627
+4a5c 2 646 5627
+4a5e 8 648 5627
+4a66 4 656 5627
+4a6a 7 657 5627
+4a71 d 658 5627
+4a7e 6 659 5627
+4a84 6 660 5627
+4a8a 6 661 5627
+4a90 6 662 5627
+4a96 4 663 5627
+4a9a 4 664 5627
+4a9e 4 669 5627
+4aa2 3 675 5627
+4aa5 3 676 5627
+4aa8 6 681 5627
+4aae 3 682 5627
+4ab1 3 683 5627
+4ab4 6 684 5627
+4aba 7 690 5627
+4ac1 6 692 5627
+4ac7 6 693 5627
+4acd e 697 5627
+4adb e 701 5627
+4ae9 4 707 5627
+4aed 6 715 5627
+4af3 7 724 5627
+4afa 2 725 5627
+4afc 3 726 5627
+4aff 2 727 5627
+4b01 7 728 5627
+4b08 2 731 5627
+4b0a 3 737 5627
+4b0d 6 738 5627
+4b13 3 744 5627
+4b16 3 745 5627
+FUNC 4b19 9d 10 TranslatorGuardHandler
+4b19 5 770 5627
+4b1e 1 776 5627
+4b1f e 782 5627
+4b2d b 784 5627
+4b38 a 786 5627
+4b42 5 790 5627
+4b47 2 792 5627
+4b49 2a 796 5627
+4b73 9 798 5627
+4b7c b 802 5627
+4b87 1b 811 5627
+4ba2 3 818 5627
+4ba5 3 819 5627
+4ba8 3 820 5627
+4bab 3 821 5627
+4bae 2 822 5627
+4bb0 3 826 5627
+4bb3 3 828 5627
+FUNC 4bb6 73 14 _GetRangeOfTrysToCheck(_s_FuncInfo const *,int,int,unsigned int *,unsigned int *)
+4bb6 7 848 5627
+4bbd 6 849 5627
+4bc3 6 850 5627
+4bc9 2 851 5627
+4bcb 2 852 5627
+4bcd a 855 5627
+4bd7 1d 859 5627
+4bf4 3 860 5627
+4bf7 3 861 5627
+4bfa 3 862 5627
+4bfd 6 854 5627
+4c03 6 866 5627
+4c09 5 867 5627
+4c0e e 869 5627
+4c1c b 871 5627
+4c27 2 872 5627
+FUNC 4c29 28 8 _CreateFrameInfo
+4c29 0 889 5627
+4c29 b 890 5627
+4c34 e 891 5627
+4c42 b 892 5627
+4c4d 3 893 5627
+4c50 1 894 5627
+FUNC 4c51 21 4 _IsExceptionObjectToBeDestroyed
+4c51 0 907 5627
+4c51 d 910 5627
+4c5e 8 911 5627
+4c66 7 910 5627
+4c6d 1 915 5627
+4c6e 1 916 5627
+4c6f 2 912 5627
+4c71 1 916 5627
+FUNC 4c72 4c 4 _FindAndUnlinkFrame
+4c72 1 926 5627
+4c73 11 927 5627
+4c84 f 928 5627
+4c93 1 944 5627
+4c94 d 931 5627
+4ca1 7 935 5627
+4ca8 9 933 5627
+4cb1 5 943 5627
+4cb6 7 936 5627
+4cbd 1 944 5627
+FUNC 4cbe 5e 14 _CallCatchBlock2(EHRegistrationNode *,_s_FuncInfo const *,void *,int,unsigned long)
+4cbe 6 485 5627
+4cc4 e 493 5627
+4cd2 c 495 5627
+4cde 11 500 5627
+4cef 6 503 5627
+4cf5 3 504 5627
+4cf8 3 505 5627
+4cfb 6 506 5627
+4d01 e 512 5627
+4d0f 3 518 5627
+4d12 6 519 5627
+4d18 2 524 5627
+4d1a 2 525 5627
+FUNC 4d1c 4a 8 _CxxThrowException
+4d1c 6 95 5939
+4d22 15 117 5939
+4d37 3 118 5939
+4d3a 9 134 5939
+4d43 5 136 5939
+4d48 7 138 5939
+4d4f 13 159 5939
+4d62 4 161 5939
+FUNC 4d66 19 0 std::bad_alloc::bad_alloc()
+4d66 15 382 5121
+4d7b 4 383 5121
+FUNC 4d7f 6a 4 operator new(unsigned int)
+4d7f 6 57 5123
+4d85 2 59 5123
+4d87 d 60 5123
+4d94 d 59 5123
+4da1 2 67 5123
+4da3 27 62 5123
+4dca 1f 63 5123
+FUNC 4de9 f 4 type_info::name(__type_info_node *)
+4de9 0 44 5873
+4de9 c 45 5873
+4df5 3 46 5873
+FUNC 4df8 e 0 type_info::~type_info()
+4df8 0 49 5873
+4df8 d 50 5873
+4e05 1 51 5873
+FUNC 4e06 1c 0 type_info::`scalar deleting destructor'(unsigned int)
+FUNC 4e22 f 4 type_info::_name_internal_method(__type_info_node *)
+4e22 0 54 5873
+4e22 c 55 5873
+4e2e 3 56 5873
+FUNC 4e31 8 0 type_info::_type_info_dtor_internal_method()
+4e31 0 59 5873
+4e31 7 60 5873
+4e38 1 61 5873
+FUNC 4e39 1b 4 type_info::operator==(type_info const &)
+4e39 0 89 5873
+4e39 18 90 5873
+4e51 3 91 5873
+FUNC 4e54 1c 4 type_info::operator!=(type_info const &)
+4e54 0 98 5873
+4e54 19 99 5873
+4e6d 3 100 5873
+FUNC 4e70 1f 4 type_info::before(type_info const &)
+4e70 0 103 5873
+4e70 1c 104 5873
+4e8c 3 105 5873
+FUNC 4e8f 4 0 type_info::raw_name()
+4e8f 0 108 5873
+4e8f 3 109 5873
+4e92 1 110 5873
+FUNC 4e93 b 4 type_info::type_info(type_info const &)
+4e93 8 113 5873
+4e9b 3 123 5873
+FUNC 4e9e 5 4 type_info::operator=(type_info const &)
+4e9e 2 127 5873
+4ea0 3 135 5873
+FUNC 4ea3 11 0 std::exception::exception()
+4ea3 2 68 5916
+4ea5 4 69 5916
+4ea9 a 70 5916
+4eb3 1 71 5916
+FUNC 4eb4 4e 4 std::exception::exception(char const * const &)
+4eb4 1 77 5916
+4eb5 14 78 5916
+4ec9 9 80 5916
+4ed2 6 81 5916
+4ed8 9 82 5916
+4ee1 c 84 5916
+4eed 2 87 5916
+4eef 4 89 5916
+4ef3 7 91 5916
+4efa 8 92 5916
+FUNC 4f02 18 8 std::exception::exception(char const * const &,int)
+4f02 2 98 5916
+4f04 c 99 5916
+4f10 7 100 5916
+4f17 3 101 5916
+FUNC 4f1a 58 4 std::exception::exception(std::exception const &)
+4f1a 1 107 5916
+4f1b 13 108 5916
+4f2e 2 109 5916
+4f30 a 111 5916
+4f3a 9 113 5916
+4f43 6 114 5916
+4f49 9 115 5916
+4f52 d 117 5916
+4f5f 2 120 5916
+4f61 4 122 5916
+4f65 2 125 5916
+4f67 4 126 5916
+4f6b 7 127 5916
+FUNC 4f72 56 4 std::exception::operator=(std::exception const &)
+4f72 1 133 5916
+4f73 c 134 5916
+4f7f 6 136 5916
+4f85 2 137 5916
+4f87 9 139 5916
+4f90 9 141 5916
+4f99 6 144 5916
+4f9f 9 146 5916
+4fa8 d 148 5916
+4fb5 2 151 5916
+4fb7 4 153 5916
+4fbb 2 156 5916
+4fbd 3 157 5916
+4fc0 5 159 5916
+4fc5 3 160 5916
+FUNC 4fc8 16 0 std::exception::~exception()
+4fc8 0 167 5916
+4fc8 c 168 5916
+4fd4 9 169 5916
+4fdd 1 170 5916
+FUNC 4fde d 0 std::exception::what()
+4fde 0 180 5916
+4fde 5 181 5916
+4fe3 2 182 5916
+4fe5 5 184 5916
+4fea 1 185 5916
+FUNC 4feb 19 4 std::bad_cast::bad_cast(char const *)
+4feb 13 194 5916
+4ffe 6 195 5916
+FUNC 5004 18 4 std::bad_cast::bad_cast(std::bad_cast const &)
+5004 12 199 5916
+5016 6 200 5916
+FUNC 501c b 0 std::bad_cast::~bad_cast()
+501c 6 203 5916
+5022 5 204 5916
+FUNC 5027 19 4 std::bad_typeid::bad_typeid(char const *)
+5027 13 229 5916
+503a 6 230 5916
+FUNC 5040 18 4 std::bad_typeid::bad_typeid(std::bad_typeid const &)
+5040 12 234 5916
+5052 6 235 5916
+FUNC 5058 b 0 std::bad_typeid::~bad_typeid()
+5058 6 238 5916
+505e 5 239 5916
+FUNC 5063 18 4 std::__non_rtti_object::__non_rtti_object(char const *)
+5063 12 248 5916
+5075 6 249 5916
+FUNC 507b 18 4 std::__non_rtti_object::__non_rtti_object(std::__non_rtti_object const &)
+507b 12 253 5916
+508d 6 254 5916
+FUNC 5093 b 0 std::__non_rtti_object::~__non_rtti_object()
+5093 0 257 5916
+5093 b 258 5916
+FUNC 509e 1c 0 std::exception::`vector deleting destructor'(unsigned int)
+FUNC 50ba 22 0 std::bad_cast::`vector deleting destructor'(unsigned int)
+FUNC 50dc 22 0 std::bad_typeid::`scalar deleting destructor'(unsigned int)
+FUNC 50fe 22 0 std::__non_rtti_object::`scalar deleting destructor'(unsigned int)
+FUNC 5120 7b 10 memcpy_s
+5120 4 47 1002
+5124 a 48 1002
+512e 4 51 1002
+5132 20 55 1002
+5152 a 56 1002
+515c f 67 1002
+516b 2 68 1002
+516d f 59 1002
+517c 5 61 1002
+5181 13 62 1002
+5194 5 64 1002
+5199 2 69 1002
+FUNC 519b 5b 10 memmove_s
+519b 3 46 955
+519e 9 47 955
+51a7 2 50 955
+51a9 20 54 955
+51c9 5 55 955
+51ce 13 56 955
+51e1 f 58 955
+51f0 4 59 955
+51f4 2 60 955
+FUNC 51f6 a 4 _set_osplatform
+51f6 a 385 2595
+FUNC 5200 a 4 _set_osver
+5200 a 386 2595
+FUNC 520a a 4 _set_winver
+520a a 387 2595
+FUNC 5214 a 4 _set_winmajor
+5214 a 388 2595
+FUNC 521e a 4 _set_winminor
+521e a 389 2595
+FUNC 5228 24 4 fast_error_exit
+5228 0 375 2608
+5228 9 384 2608
+5231 5 386 2608
+5236 9 388 2608
+523f c 389 2608
+524b 1 390 2608
+FUNC 524c 41 0 check_managed_app
+524c 0 413 2608
+524c b 418 2608
+5257 5 422 2608
+525c a 424 2608
+5266 2 425 2608
+5268 9 427 2608
+5271 2 428 2608
+5273 7 433 2608
+527a 2 434 2608
+527c d 437 2608
+5289 1 438 2608
+528a 2 419 2608
+528c 1 438 2608
+FUNC 528d 1b6 0 __tmainCRTStartup
+528d c 203 2608
+5299 19 233 2608
+52b2 4 234 2608
+52b6 8 235 2608
+52be a 236 2608
+52c8 2 242 2608
+52ca 7 243 2608
+52d1 3 244 2608
+52d4 4 243 2608
+52d8 9 244 2608
+52e1 2 245 2608
+52e3 6 248 2608
+52e9 6 249 2608
+52ef 6 250 2608
+52f5 9 256 2608
+52fe 9 257 2608
+5307 8 258 2608
+530f 6 259 2608
+5315 d 260 2608
+5322 6 262 2608
+5328 5 263 2608
+532d 6 264 2608
+5333 6 265 2608
+5339 6 266 2608
+533f 8 271 2608
+5347 c 273 2608
+5353 8 274 2608
+535b 9 276 2608
+5364 8 277 2608
+536c 5 286 2608
+5371 4 294 2608
+5375 9 296 2608
+537e 8 297 2608
+5386 b 300 2608
+5391 a 303 2608
+539b 9 305 2608
+53a4 8 306 2608
+53ac 9 307 2608
+53b5 8 308 2608
+53bd 8 310 2608
+53c5 4 311 2608
+53c9 7 312 2608
+53d0 a 326 2608
+53da 18 327 2608
+53f2 6 330 2608
+53f8 6 331 2608
+53fe 5 333 2608
+5403 2 335 2608
+5405 17 336 2608
+541c 6 342 2608
+5422 6 344 2608
+5428 6 345 2608
+542e 5 347 2608
+5433 7 349 2608
+543a 3 351 2608
+543d 6 352 2608
+FUNC 5443 a 0 mainCRTStartup
+5443 0 186 2608
+5443 5 193 2608
+5448 5 195 2608
+FUNC 544d a 4 _initp_misc_invarg
+544d 0 38 3328
+544d 9 39 3328
+5456 1 40 3328
+FUNC 5457 fc 14 _invoke_watson
+5457 1c 111 3328
+5473 6 128 3328
+5479 6 129 3328
+547f 6 130 3328
+5485 3 131 3328
+5488 3 132 3328
+548b 3 133 3328
+548e 7 134 3328
+5495 7 135 3328
+549c 4 136 3328
+54a0 4 137 3328
+54a4 4 138 3328
+54a8 4 139 3328
+54ac 1 140 3328
+54ad 6 141 3328
+54b3 6 147 3328
+54b9 19 148 3328
+54d2 3 150 3328
+54d5 13 163 3328
+54e8 6 168 3328
+54ee 13 169 3328
+5501 6 171 3328
+5507 a 174 3328
+5511 a 176 3328
+551b 8 180 3328
+5523 8 181 3328
+552b 12 184 3328
+553d 16 185 3328
+FUNC 5553 22 4 _set_invalid_parameter_handler
+5553 1 207 3328
+5554 b 211 3328
+555f d 212 3328
+556c 5 214 3328
+5571 3 216 3328
+5574 1 217 3328
+FUNC 5575 d 0 _get_invalid_parameter_handler
+5575 0 221 3328
+5575 c 225 3328
+5581 1 228 3328
+FUNC 5582 9 14 _invoke_watson(unsigned short const *,unsigned short const *,unsigned short const *,unsigned int,unsigned int)
+5582 3 266 3328
+5585 1 274 3328
+5586 5 273 3328
+FUNC 558b 24 14 _invalid_parameter
+558b 3 70 3328
+558e b 77 3328
+5599 5 78 3328
+559e 1 89 3328
+559f 2 80 3328
+55a1 8 86 3328
+55a9 1 89 3328
+55aa 5 88 3328
+FUNC 55af 10 0 _invalid_parameter_noinfo
+55af 0 98 3328
+55af f 99 3328
+55be 1 100 3328
+FUNC 55bf 9 14 _invalid_parameter(unsigned short const *,unsigned short const *,unsigned short const *,unsigned int,unsigned int)
+55bf 3 249 3328
+55c2 1 257 3328
+55c3 5 256 3328
+FUNC 55c8 96 8 _swprintf
+55c8 7 122 1564
+55cf 24 128 1564
+55f3 8 133 1564
+55fb 6 138 1564
+5601 22 153 1564
+5623 1d 160 1564
+5640 18 161 1564
+5658 4 163 1564
+565c 2 171 1564
+FUNC 565e 1a c __swprintf_l
+565e 0 181 1564
+565e 19 186 1564
+5677 1 188 1564
+FUNC 5678 1c c swprintf_s
+5678 0 238 1564
+5678 1b 243 1564
+5693 1 244 1564
+FUNC 5694 1f 10 _snwprintf_s
+5694 3 253 1564
+5697 1a 258 1564
+56b1 2 259 1564
+FUNC 56b3 1c c _swprintf_p
+56b3 0 267 1564
+56b3 1b 272 1564
+56ce 1 273 1564
+FUNC 56cf 1d 10 _swprintf_s_l
+56cf 3 282 1564
+56d2 18 287 1564
+56ea 2 288 1564
+FUNC 56ec 20 14 _snwprintf_s_l
+56ec 3 298 1564
+56ef 1b 303 1564
+570a 2 304 1564
+FUNC 570c 1d 10 _swprintf_p_l
+570c 3 313 1564
+570f 18 318 1564
+5727 2 319 1564
+FUNC 5729 11 4 _scwprintf
+5729 0 347 1564
+5729 10 352 1564
+5739 1 353 1564
+FUNC 573a 11 4 _scwprintf_p
+573a 0 359 1564
+573a 10 364 1564
+574a 1 365 1564
+FUNC 574b 16 8 _scwprintf_l
+574b 0 372 1564
+574b 15 376 1564
+5760 1 377 1564
+FUNC 5761 16 8 _scwprintf_p_l
+5761 0 384 1564
+5761 15 389 1564
+5776 1 390 1564
+FUNC 5777 14f 8 fprintf
+5777 c 49 1648
+5783 5 53 1648
+5788 2e 55 1648
+57b6 c 56 1648
+57c2 3 61 1648
+57c5 7 63 1648
+57cc 3 64 1648
+57cf b0 66 1648
+587f 5 67 1648
+5884 8 69 1648
+588c 11 70 1648
+589d a 71 1648
+58a7 c 75 1648
+58b3 3 79 1648
+58b6 6 80 1648
+58bc a 76 1648
+FUNC 58c6 1a c _fprintf_l
+58c6 0 88 1648
+58c6 19 93 1648
+58df 1 94 1648
+FUNC 58e0 1a c _fprintf_s_l
+58e0 0 102 1648
+58e0 19 107 1648
+58f9 1 108 1648
+FUNC 58fa 18 8 fprintf_s
+58fa 0 115 1648
+58fa 17 120 1648
+5911 1 121 1648
+FUNC 5912 1a c _fprintf_p_l
+5912 0 129 1648
+5912 19 134 1648
+592b 1 135 1648
+FUNC 592c 18 8 _fprintf_p
+592c 0 142 1648
+592c 17 147 1648
+5943 1 148 1648
+FUNC 5944 f6 18 _vswprintf_helper
+5944 7 125 1380
+594b 28 130 1380
+5973 2f 133 1380
+59a2 15 143 1380
+59b7 7 146 1380
+59be 2 148 1380
+59c0 6 150 1380
+59c6 13 157 1380
+59d9 5 160 1380
+59de 2 162 1380
+59e0 41 171 1380
+5a21 5 172 1380
+5a26 12 175 1380
+5a38 2 183 1380
+FUNC 5a3a 27 10 _vswprintf_c
+5a3a 0 241 1380
+5a3a 1f 242 1380
+5a59 7 243 1380
+5a60 1 244 1380
+FUNC 5a61 28 14 _vswprintf_c_l
+5a61 3 253 1380
+5a64 1c 254 1380
+5a80 7 255 1380
+5a87 2 256 1380
+FUNC 5a89 87 14 _vswprintf_s_l
+5a89 4 265 1380
+5a8d 25 269 1380
+5ab2 19 270 1380
+5acb 1a 272 1380
+5ae5 4 273 1380
+5ae9 3 275 1380
+5aec 5 278 1380
+5af1 1d 280 1380
+5b0e 2 288 1380
+FUNC 5b10 1b 10 vswprintf_s
+5b10 0 296 1380
+5b10 1a 297 1380
+5b2a 1 298 1380
+FUNC 5b2b 107 18 _vsnwprintf_s_l
+5b2b 5 308 1380
+5b30 27 313 1380
+5b57 13 314 1380
+5b6a 7 317 1380
+5b71 1b 319 1380
+5b8c 8 323 1380
+5b94 20 324 1380
+5bb4 5 325 1380
+5bb9 a 329 1380
+5bc3 7 331 1380
+5bca 2 333 1380
+5bcc 2 338 1380
+5bce 12 339 1380
+5be0 10 342 1380
+5bf0 a 344 1380
+5bfa a 346 1380
+5c04 2 348 1380
+5c06 4 352 1380
+5c0a 8 356 1380
+5c12 18 358 1380
+5c2a 6 360 1380
+5c30 2 366 1380
+FUNC 5c32 1e 14 _vsnwprintf_s
+5c32 3 375 1380
+5c35 19 376 1380
+5c4e 2 377 1380
+FUNC 5c50 27 10 _vswprintf_p
+5c50 0 385 1380
+5c50 1f 386 1380
+5c6f 7 387 1380
+5c76 1 388 1380
+FUNC 5c77 28 14 _vswprintf_p_l
+5c77 3 397 1380
+5c7a 1c 398 1380
+5c96 7 399 1380
+5c9d 2 400 1380
+FUNC 5c9f 24 4 _amsg_exit
+5c9f 0 446 2560
+5c9f 5 449 2560
+5ca4 9 450 2560
+5cad b 451 2560
+5cb8 a 452 2560
+5cc2 1 453 2560
+FUNC 5cc3 26 4 __crtCorExitProcess
+5cc3 0 650 2560
+5cc3 b 654 2560
+5cce 4 655 2560
+5cd2 c 656 2560
+5cde 4 657 2560
+5ce2 6 658 2560
+5ce8 1 668 2560
+FUNC 5ce9 15 4 __crtExitProcess
+5ce9 0 673 2560
+5ce9 a 674 2560
+5cf3 b 683 2560
+FUNC 5cfe 9 0 _lockexit
+5cfe 0 733 2560
+5cfe 8 734 2560
+5d06 1 735 2560
+FUNC 5d07 9 0 _unlockexit
+5d07 0 759 2560
+5d07 8 760 2560
+5d0f 1 761 2560
+FUNC 5d10 18 4 _initterm
+5d10 3 841 2560
+5d13 2 855 2560
+5d15 6 853 2560
+5d1b 2 854 2560
+5d1d 3 855 2560
+5d20 7 848 2560
+5d27 1 857 2560
+FUNC 5d28 20 8 _initterm_e
+5d28 1 890 2560
+5d29 c 899 2560
+5d35 6 904 2560
+5d3b 2 905 2560
+5d3d 3 906 2560
+5d40 7 899 2560
+5d47 1 910 2560
+FUNC 5d48 37 4 _get_osplatform
+5d48 0 929 2560
+5d48 27 931 2560
+5d6f 1 939 2560
+5d70 9 934 2560
+5d79 2 936 2560
+5d7b 3 938 2560
+5d7e 1 939 2560
+FUNC 5d7f 3c 4 _get_osver
+5d7f 0 958 2560
+5d7f 27 960 2560
+5da6 1 968 2560
+5da7 8 963 2560
+5daf 8 965 2560
+5db7 3 967 2560
+5dba 1 968 2560
+FUNC 5dbb 3c 4 _get_winver
+5dbb 0 987 2560
+5dbb 27 989 2560
+5de2 1 997 2560
+5de3 8 992 2560
+5deb 8 994 2560
+5df3 3 996 2560
+5df6 1 997 2560
+FUNC 5df7 3c 4 _get_winmajor
+5df7 0 1016 2560
+5df7 27 1018 2560
+5e1e 1 1026 2560
+5e1f 8 1021 2560
+5e27 8 1023 2560
+5e2f 3 1025 2560
+5e32 1 1026 2560
+FUNC 5e33 3c 4 _get_winminor
+5e33 0 1045 2560
+5e33 27 1047 2560
+5e5a 1 1055 2560
+5e5b 8 1050 2560
+5e63 8 1052 2560
+5e6b 3 1054 2560
+5e6e 1 1055 2560
+FUNC 5e6f 37 4 _get_wpgmptr
+5e6f 0 1074 2560
+5e6f 27 1076 2560
+5e96 1 1085 2560
+5e97 9 1080 2560
+5ea0 2 1082 2560
+5ea2 3 1084 2560
+5ea5 1 1085 2560
+FUNC 5ea6 37 4 _get_pgmptr
+5ea6 0 1104 2560
+5ea6 27 1106 2560
+5ecd 1 1115 2560
+5ece 9 1110 2560
+5ed7 2 1112 2560
+5ed9 3 1114 2560
+5edc 1 1115 2560
+FUNC 5edd 92 4 _cinit
+5edd 0 263 2560
+5edd 18 273 2560
+5ef5 b 275 2560
+5f00 5 277 2560
+5f05 f 283 2560
+5f14 4 284 2560
+5f18 4 285 2560
+5f1c a 288 2560
+5f26 20 293 2560
+5f46 1a 306 2560
+5f60 c 308 2560
+5f6c 2 312 2560
+5f6e 1 313 2560
+FUNC 5f6f e2 c doexit
+5f6f c 499 2560
+5f7b 8 517 2560
+5f83 5 518 2560
+5f88 b 520 2560
+5f93 6 521 2560
+5f99 8 524 2560
+5fa1 5 526 2560
+5fa6 e 542 2560
+5fb4 12 543 2560
+5fc6 5 545 2560
+5fcb b 546 2560
+5fd6 10 551 2560
+5fe6 9 552 2560
+5fef 2 553 2560
+5ff1 10 558 2560
+6001 10 566 2560
+6011 c 584 2560
+601d 6 588 2560
+6023 6 592 2560
+6029 8 594 2560
+6031 8 596 2560
+6039 3 584 2560
+603c 6 585 2560
+6042 9 586 2560
+604b 6 597 2560
+FUNC 6051 11 4 exit
+6051 0 397 2560
+6051 10 398 2560
+6061 1 399 2560
+FUNC 6062 11 4 _exit
+6062 0 405 2560
+6062 10 406 2560
+6072 1 407 2560
+FUNC 6073 f 0 _cexit
+6073 0 412 2560
+6073 e 413 2560
+6081 1 414 2560
+FUNC 6082 f 0 _c_exit
+6082 0 419 2560
+6082 e 420 2560
+6090 1 421 2560
+FUNC 6091 4c 0 _init_pointers
+6091 1 786 2560
+6092 7 787 2560
+6099 6 789 2560
+609f 6 790 2560
+60a5 6 791 2560
+60ab 6 792 2560
+60b1 6 793 2560
+60b7 6 794 2560
+60bd 6 795 2560
+60c3 6 796 2560
+60c9 13 799 2560
+60dc 1 800 2560
+FUNC 60e0 8b 4 strlen
+60e0 0 54 880
+60e0 4 63 880
+60e4 6 64 880
+60ea 2 65 880
+60ec 2 69 880
+60ee 3 70 880
+60f1 2 71 880
+60f3 2 72 880
+60f5 6 73 880
+60fb 2 74 880
+60fd 13 76 880
+6110 2 81 880
+6112 5 82 880
+6117 2 83 880
+6119 3 84 880
+611c 2 85 880
+611e 3 86 880
+6121 5 87 880
+6126 2 88 880
+6128 3 90 880
+612b 2 91 880
+612d 2 92 880
+612f 2 93 880
+6131 2 94 880
+6133 5 95 880
+6138 2 96 880
+613a 5 97 880
+613f 2 98 880
+6141 2 99 880
+6143 3 103 880
+6146 4 104 880
+614a 2 105 880
+614c 1 106 880
+614d 3 108 880
+6150 4 109 880
+6154 2 110 880
+6156 1 111 880
+6157 3 113 880
+615a 4 114 880
+615e 2 115 880
+6160 1 116 880
+6161 3 118 880
+6164 4 119 880
+6168 2 120 880
+616a 1 121 880
+FUNC 616b 33 4 _EH_prolog3
+616b 0 93 5671
+616b 1 101 5671
+616c 7 103 5671
+6173 4 112 5671
+6177 4 113 5671
+617b 1 114 5671
+617c 1 115 5671
+617d 1 116 5671
+617e 2 117 5671
+6180 2 118 5671
+6182 5 131 5671
+6187 2 132 5671
+6189 1 133 5671
+618a 3 134 5671
+618d 7 135 5671
+6194 3 150 5671
+6197 6 151 5671
+619d 1 153 5671
+FUNC 619e 36 4 _EH_prolog3_catch
+619e 0 206 5671
+619e 1 214 5671
+619f 7 216 5671
+61a6 4 225 5671
+61aa 4 226 5671
+61ae 1 228 5671
+61af 1 229 5671
+61b0 1 230 5671
+61b1 2 231 5671
+61b3 2 232 5671
+61b5 5 246 5671
+61ba 2 247 5671
+61bc 1 248 5671
+61bd 3 249 5671
+61c0 3 250 5671
+61c3 7 251 5671
+61ca 3 267 5671
+61cd 6 268 5671
+61d3 1 270 5671
+FUNC 61d4 36 4 _EH_prolog3_GS
+61d4 0 322 5671
+61d4 1 330 5671
+61d5 7 332 5671
+61dc 4 341 5671
+61e0 4 342 5671
+61e4 1 344 5671
+61e5 1 345 5671
+61e6 1 346 5671
+61e7 2 347 5671
+61e9 2 348 5671
+61eb 5 362 5671
+61f0 2 363 5671
+61f2 1 364 5671
+61f3 3 365 5671
+61f6 3 366 5671
+61f9 7 367 5671
+6200 3 384 5671
+6203 6 385 5671
+6209 1 387 5671
+FUNC 620a 39 4 _EH_prolog3_catch_GS
+620a 0 441 5671
+620a 1 449 5671
+620b 7 451 5671
+6212 4 460 5671
+6216 4 461 5671
+621a 1 463 5671
+621b 1 464 5671
+621c 1 465 5671
+621d 2 466 5671
+621f 2 467 5671
+6221 5 482 5671
+6226 2 483 5671
+6228 1 484 5671
+6229 3 485 5671
+622c 3 486 5671
+622f 3 487 5671
+6232 7 488 5671
+6239 3 505 5671
+623c 6 506 5671
+6242 1 508 5671
+FUNC 6243 14 0 _EH_epilog3
+6243 0 534 5671
+6243 3 537 5671
+6246 7 538 5671
+624d 1 539 5671
+624e 1 540 5671
+624f 1 541 5671
+6250 1 542 5671
+6251 1 543 5671
+6252 2 544 5671
+6254 1 545 5671
+6255 1 546 5671
+6256 1 547 5671
+FUNC 6257 f 0 _EH_epilog3_GS
+6257 0 575 5671
+6257 3 578 5671
+625a 2 579 5671
+625c 5 580 5671
+6261 5 581 5671
+FUNC 6266 f 0 _EH_epilog3_catch_GS
+6266 0 609 5671
+6266 3 612 5671
+6269 2 613 5671
+626b 5 614 5671
+6270 5 615 5671
+FUNC 6275 96 4 _stbuf
+6275 1 59 1850
+6276 14 69 1850
+628a 2 70 1850
+628c c 73 1850
+6298 4 74 1850
+629c c 75 1850
+62a8 3 76 1850
+62ab 6 82 1850
+62b1 6 86 1850
+62b7 4 87 1850
+62bb 1e 91 1850
+62d9 3 93 1850
+62dc e 94 1850
+62ea 2 96 1850
+62ec 7 98 1850
+62f3 6 99 1850
+62f9 8 102 1850
+6301 5 104 1850
+6306 1 105 1850
+6307 3 78 1850
+630a 1 105 1850
+FUNC 630b 2f 8 _ftbuf
+630b 0 138 1850
+630b 8 146 1850
+6313 c 148 1850
+631f 6 151 1850
+6325 7 152 1850
+632c 4 153 1850
+6330 9 154 1850
+6339 1 166 1850
+FUNC 633a 82 4 _LocaleUpdate::_LocaleUpdate(localeinfo_struct *)
+633a 0 261 1343
+633a f 262 1343
+6349 8 264 1343
+6351 5 265 1343
+6356 6 266 1343
+635c 1c 268 1343
+6378 21 269 1343
+6399 9 270 1343
+63a2 4 272 1343
+63a6 4 273 1343
+63aa 2 276 1343
+63ac a 278 1343
+63b6 6 280 1343
+FUNC 63bc e 0 _LocaleUpdate::~_LocaleUpdate()
+63bc 0 282 1343
+63bc 6 283 1343
+63c2 7 284 1343
+63c9 1 285 1343
+FUNC 63ca 3 0 _LocaleUpdate::GetLocaleT()
+63ca 2 287 1343
+63cc 1 289 1343
+FUNC 63cd 33 0 write_char
+63cd 0 2433 1312
+63cd a 2434 1312
+63d7 2 2437 1312
+63d9 21 2442 1312
+63fa 2 2444 1312
+63fc 1 2447 1312
+63fd 2 2446 1312
+63ff 1 2447 1312
+FUNC 6400 24 c write_multi_char
+6400 6 2498 1312
+6406 2 2501 1312
+6408 e 2500 1312
+6416 5 2501 1312
+641b 7 2499 1312
+6422 2 2504 1312
+FUNC 6424 4a 4 write_string
+6424 0 2563 1312
+6424 12 2564 1312
+6436 6 2566 1312
+643c 2 2567 1312
+643e e 2570 1312
+644c 5 2571 1312
+6451 a 2573 1312
+645b 9 2574 1312
+6464 9 2569 1312
+646d 1 2579 1312
+FUNC 646e d 4 get_int_arg
+646e 0 2602 1312
+646e c 2603 1312
+647a 1 2604 1312
+FUNC 647b 10 4 get_int64_arg
+647b 0 2644 1312
+647b f 2645 1312
+648a 1 2646 1312
+FUNC 648b e 4 get_short_arg
+648b 0 2671 1312
+648b d 2672 1312
+6498 1 2673 1312
+FUNC 6499 994 10 _output_l
+6499 1b 975 1312
+64b4 45 1036 1312
+64f9 2d 1031 1312
+6526 b1 1033 1312
+65d7 8 1036 1312
+65df 26 1073 1312
+6605 1d 1075 1312
+6622 8 1076 1312
+662a 18 1131 1312
+6642 13 1173 1312
+6655 3 1174 1312
+6658 5 1175 1312
+665d 1f 1179 1312
+667c 4 1193 1312
+6680 5 1194 1312
+6685 4 1181 1312
+6689 5 1182 1312
+668e 4 1184 1312
+6692 5 1185 1312
+6697 7 1190 1312
+669e 5 1191 1312
+66a3 4 1187 1312
+66a7 5 1196 1312
+66ac 5 1200 1312
+66b1 9 1206 1312
+66ba b 1233 1312
+66c5 4 1235 1312
+66c9 3 1236 1312
+66cc 5 1239 1312
+66d1 10 1241 1312
+66e1 5 1243 1312
+66e6 3 1248 1312
+66e9 5 1249 1312
+66ee 5 1253 1312
+66f3 9 1259 1312
+66fc b 1284 1312
+6707 4 1285 1312
+670b 5 1287 1312
+6710 10 1289 1312
+6720 5 1291 1312
+6725 18 1295 1312
+673d 7 1362 1312
+6744 5 1363 1312
+6749 5 1301 1312
+674e 1 1303 1312
+674f a 1304 1312
+6759 5 1306 1312
+675e 4 1308 1312
+6762 5 1310 1312
+6767 4 1358 1312
+676b 5 1359 1312
+6770 c 1322 1312
+677c 2 1324 1312
+677e f 1325 1312
+678d a 1327 1312
+6797 2 1329 1312
+6799 a 1330 1312
+67a3 5 1332 1312
+67a8 30 1337 1312
+67d8 3 1352 1312
+67db 13 1158 1312
+67ee 11 1160 1312
+67ff 3 1161 1312
+6802 b 1163 1312
+680d b 1166 1312
+6818 5 1167 1312
+681d 32 1378 1312
+684f d 1716 1312
+685c 4 1724 1312
+6860 17 1749 1312
+6877 c 1750 1312
+6883 8 1381 1312
+688b 9 1385 1312
+6894 8 1561 1312
+689c 7 1562 1312
+68a3 d 1584 1312
+68b0 3 1589 1312
+68b3 15 1635 1312
+68c8 4 1636 1312
+68cc 8 1637 1312
+68d4 f 1639 1312
+68e3 1d 1378 1312
+6900 12 1448 1312
+6912 16 1467 1312
+6928 4 1470 1312
+692c 7 1471 1312
+6933 2 1472 1312
+6935 6 1499 1312
+693b 7 1500 1312
+6942 6 1503 1312
+6948 5 1506 1312
+694d 5 1523 1312
+6952 e 1541 1312
+6960 6 1546 1312
+6966 d 1548 1312
+6973 7 1549 1312
+697a 5 1550 1312
+697f 3 1551 1312
+6982 5 1553 1312
+6987 8 1543 1312
+698f 7 1544 1312
+6996 5 1557 1312
+699b 34 1378 1312
+69cf d 1908 1312
+69dc 9 1910 1312
+69e5 8 1668 1312
+69ed d 1688 1312
+69fa 6 1702 1312
+6a00 7 1703 1312
+6a07 2 1704 1312
+6a09 5 1706 1312
+6a0e 7 1708 1312
+6a15 5 1710 1312
+6a1a 4 1864 1312
+6a1e 7 1869 1312
+6a25 c 1933 1312
+6a31 8 1939 1312
+6a39 5 1958 1312
+6a3e 7 1751 1312
+6a45 9 1752 1312
+6a4e 5 1753 1312
+6a53 3 1754 1312
+6a56 9 1756 1312
+6a5f f 1759 1312
+6a6e 2 1760 1312
+6a70 13 1765 1312
+6a83 9 1767 1312
+6a8c e 1809 1312
+6a9a 27 1828 1312
+6ac1 13 1838 1312
+6ad4 15 1840 1312
+6ae9 a 1844 1312
+6af3 15 1846 1312
+6b08 5 1852 1312
+6b0d 7 1853 1312
+6b14 4 1854 1312
+6b18 1 1857 1312
+6b19 5 1859 1312
+6b1e 7 1877 1312
+6b25 3 1887 1312
+6b28 2 1888 1312
+6b2a 1a 1378 1312
+6b44 7 1892 1312
+6b4b 11 1897 1312
+6b5c c 1900 1312
+6b68 7 1901 1312
+6b6f 5 1903 1312
+6b74 5 1961 1312
+6b79 6 1987 1312
+6b7f 14 2026 1312
+6b93 2 2045 1312
+6b95 5 2051 1312
+6b9a 2 2071 1312
+6b9c 3 2074 1312
+6b9f 6 2080 1312
+6ba5 2 2099 1312
+6ba7 5 2105 1312
+6bac f 2128 1312
+6bbb 7 2129 1312
+6bc2 7 2130 1312
+6bc9 c 2136 1312
+6bd5 2 2142 1312
+6bd7 6 2148 1312
+6bdd 7 2149 1312
+6be4 2 2150 1312
+6be6 4 2151 1312
+6bea a 2152 1312
+6bf4 3 2153 1312
+6bf7 6 2157 1312
+6bfd 3 2158 1312
+6c00 6 2163 1312
+6c06 10 2165 1312
+6c16 10 2166 1312
+6c26 c 2168 1312
+6c32 3 2170 1312
+6c35 3 2172 1312
+6c38 2 2173 1312
+6c3a 8 2175 1312
+6c42 1 2176 1312
+6c43 19 2180 1312
+6c5c 9 2181 1312
+6c65 1 2182 1312
+6c66 2 2185 1312
+6c68 6 1640 1312
+6c6e 2 1641 1312
+6c70 4 1640 1312
+6c74 5 1642 1312
+6c79 2 1644 1312
+6c7b 4 1645 1312
+6c7f 8 1646 1312
+6c87 5 1647 1312
+6c8c 6 1648 1312
+6c92 1 1649 1312
+6c93 4 1648 1312
+6c97 6 1650 1312
+6c9d a 2201 1312
+6ca7 7 2204 1312
+6cae 6 2205 1312
+6cb4 4 2207 1312
+6cb8 2 2208 1312
+6cba 4 2210 1312
+6cbe 4 2212 1312
+6cc2 2 2213 1312
+6cc4 4 2215 1312
+6cc8 4 2217 1312
+6ccc 7 2218 1312
+6cd3 9 2224 1312
+6cdc 6 2228 1312
+6ce2 11 2230 1312
+6cf3 11 2234 1312
+6d04 d 2236 1312
+6d11 f 2238 1312
+6d20 d 2243 1312
+6d2d 3 2249 1312
+6d30 3 2250 1312
+6d33 1e 2252 1312
+6d51 9 2253 1312
+6d5a 18 2257 1312
+6d72 2 1690 1312
+6d74 4 2254 1312
+6d78 2 2259 1312
+6d7a d 2260 1312
+6d87 c 2290 1312
+6d93 f 2292 1312
+6da2 6 2297 1312
+6da8 8 2298 1312
+6db0 1e 2299 1312
+6dce 17 1163 1312
+6de5 10 2376 1312
+6df5 38 2377 1312
+FUNC 6e2d 3b 4 _get_errno_from_oserr
+6e2d 0 119 6100
+6e2d 6 123 6100
+6e33 f 124 6100
+6e42 8 133 6100
+6e4a 3 134 6100
+6e4d 1 139 6100
+6e4e 7 125 6100
+6e55 1 139 6100
+6e56 11 135 6100
+6e67 1 139 6100
+FUNC 6e68 13 0 _errno
+6e68 0 280 6100
+6e68 5 281 6100
+6e6d 4 282 6100
+6e71 5 283 6100
+6e76 1 288 6100
+6e77 3 285 6100
+6e7a 1 288 6100
+FUNC 6e7b 13 0 __doserrno
+6e7b 0 293 6100
+6e7b 5 294 6100
+6e80 4 295 6100
+6e84 5 296 6100
+6e89 1 300 6100
+6e8a 3 298 6100
+6e8d 1 300 6100
+FUNC 6e8e 1e 4 _dosmaperr
+6e8e 1 110 6100
+6e8f 9 111 6100
+6e98 13 113 6100
+6eab 1 114 6100
+FUNC 6eac 1b 4 _set_errno
+6eac 0 157 6100
+6eac 5 158 6100
+6eb1 4 159 6100
+6eb5 3 161 6100
+6eb8 1 168 6100
+6eb9 b 165 6100
+6ec4 2 166 6100
+6ec6 1 168 6100
+FUNC 6ec7 2a 4 _get_errno
+6ec7 1 187 6100
+6ec8 1b 189 6100
+6ee3 1 195 6100
+6ee4 9 193 6100
+6eed 3 194 6100
+6ef0 1 195 6100
+FUNC 6ef1 1b 4 _set_doserrno
+6ef1 0 213 6100
+6ef1 5 214 6100
+6ef6 4 215 6100
+6efa 3 217 6100
+6efd 1 224 6100
+6efe b 221 6100
+6f09 2 222 6100
+6f0b 1 224 6100
+FUNC 6f0c 2a 4 _get_doserrno
+6f0c 1 243 6100
+6f0d 1b 245 6100
+6f28 1 251 6100
+6f29 9 249 6100
+6f32 3 250 6100
+6f35 1 251 6100
+FUNC 6f38 45 0 _SEH_prolog4
+FUNC 6f7d 14 0 _SEH_epilog4
+FUNC 6fa0 24 0 ValidateLocalCookies
+FUNC 6fd0 196 10 _except_handler4
+FUNC 7166 90 10 vprintf_helper
+7166 c 47 1507
+7172 d 48 1507
+717f 2b 52 1507
+71aa 7 55 1507
+71b1 3 56 1507
+71b4 8 58 1507
+71bc 10 59 1507
+71cc a 60 1507
+71d6 c 63 1507
+71e2 3 67 1507
+71e5 6 68 1507
+71eb 3 63 1507
+71ee 8 64 1507
+FUNC 71f6 1a c _vprintf_l
+71f6 0 75 1507
+71f6 19 76 1507
+720f 1 77 1507
+FUNC 7210 1a c _vprintf_s_l
+7210 0 84 1507
+7210 19 85 1507
+7229 1 86 1507
+FUNC 722a 1a c _vprintf_p_l
+722a 0 93 1507
+722a 19 94 1507
+7243 1 95 1507
+FUNC 7244 18 8 vprintf
+7244 0 101 1507
+7244 17 102 1507
+725b 1 103 1507
+FUNC 725c 18 8 vprintf_s
+725c 0 109 1507
+725c 17 110 1507
+7273 1 111 1507
+FUNC 7274 18 8 _vprintf_p
+7274 0 117 1507
+7274 17 118 1507
+728b 1 119 1507
+FUNC 728c 104 0 __report_gsfailure
+728c 9 140 3731
+7295 5 170 3731
+729a 6 171 3731
+72a0 6 172 3731
+72a6 6 173 3731
+72ac 6 174 3731
+72b2 6 175 3731
+72b8 7 176 3731
+72bf 7 177 3731
+72c6 7 178 3731
+72cd 7 179 3731
+72d4 7 180 3731
+72db 7 181 3731
+72e2 1 182 3731
+72e3 6 183 3731
+72e9 3 190 3731
+72ec 5 191 3731
+72f1 3 192 3731
+72f4 5 193 3731
+72f9 3 194 3731
+72fc 5 195 3731
+7301 6 201 3731
+7307 a 204 3731
+7311 a 206 3731
+731b a 285 3731
+7325 a 286 3731
+732f b 293 3731
+733a b 294 3731
+7345 b 297 3731
+7350 8 298 3731
+7358 8 302 3731
+7360 b 304 3731
+736b 9 313 3731
+7374 8 315 3731
+737c 12 319 3731
+738e 2 320 3731
+FUNC 7390 5c6 c _write_nolock
+7390 22 95 4777
+73b2 2 106 4777
+73b4 11 108 4777
+73c5 7 109 4777
+73cc 2b 111 4777
+73f7 27 113 4777
+741e 10 116 4777
+742e 33 119 4777
+7461 6 122 4777
+7467 f 126 4777
+7476 1c 143 4777
+7492 5 146 4777
+7497 8 147 4777
+749f 14 148 4777
+74b3 16 152 4777
+74c9 6 153 4777
+74cf 4 157 4777
+74d3 16 160 4777
+74e9 9 153 4777
+74f2 b 163 4777
+74fd 9 164 4777
+7506 11 170 4777
+7517 18 171 4777
+752f 2 173 4777
+7531 14 174 4777
+7545 18 175 4777
+755d 4 181 4777
+7561 2e 205 4777
+758f 21 212 4777
+75b0 6 213 4777
+75b6 8 214 4777
+75be a 222 4777
+75c8 29 229 4777
+75f1 a 230 4777
+75fb 3 232 4777
+75fe 3 233 4777
+7601 2 238 4777
+7603 8 186 4777
+760b 3 191 4777
+760e 9 192 4777
+7617 f 193 4777
+7626 8 240 4777
+762e 13 242 4777
+7641 3 244 4777
+7644 6 251 4777
+764a 3 254 4777
+764d 14 255 4777
+7661 3 257 4777
+7664 12 258 4777
+7676 5 236 4777
+767b e 268 4777
+7689 12 277 4777
+769b f 278 4777
+76aa d 279 4777
+76b7 8 283 4777
+76bf 9 284 4777
+76c8 5 285 4777
+76cd 3 286 4777
+76d0 7 287 4777
+76d7 f 289 4777
+76e6 25 297 4777
+770b 6 299 4777
+7711 16 300 4777
+7727 f 308 4777
+7736 f 314 4777
+7745 b 315 4777
+7750 8 319 4777
+7758 c 320 4777
+7764 6 321 4777
+776a 4 322 4777
+776e c 323 4777
+777a f 325 4777
+7789 25 333 4777
+77ae 6 335 4777
+77b4 1a 336 4777
+77ce 5 344 4777
+77d3 f 359 4777
+77e2 13 361 4777
+77f5 8 365 4777
+77fd b 366 4777
+7808 6 367 4777
+780e a 369 4777
+7818 11 371 4777
+7829 2f 382 4777
+7858 4 384 4777
+785c 25 406 4777
+7881 3 407 4777
+7884 6 412 4777
+788a 9 409 4777
+7893 4 419 4777
+7897 15 423 4777
+78ac 2 428 4777
+78ae 1b 434 4777
+78c9 a 437 4777
+78d3 2 439 4777
+78d5 9 440 4777
+78de a 443 4777
+78e8 7 447 4777
+78ef 8 449 4777
+78f7 b 452 4777
+7902 2 455 4777
+7904 9 456 4777
+790d 2 457 4777
+790f 11 459 4777
+7920 4 460 4777
+7924 b 462 4777
+792f 7 463 4777
+7936 5 464 4777
+793b 5 469 4777
+7940 16 470 4777
+FUNC 7956 dc c _write
+7956 c 61 4777
+7962 23 66 4777
+7985 2f 67 4777
+79b4 20 68 4777
+79d4 7 70 4777
+79db 3 72 4777
+79de 9 73 4777
+79e7 14 74 4777
+79fb 2 75 4777
+79fd b 76 4777
+7a08 7 77 4777
+7a0f 4 78 4777
+7a13 c 82 4777
+7a1f 3 86 4777
+7a22 6 87 4777
+7a28 a 83 4777
+FUNC 7a32 2d 4 _fileno
+7a32 0 40 2176
+7a32 27 41 2176
+7a59 1 43 2176
+7a5a 4 42 2176
+7a5e 1 43 2176
+FUNC 7a5f e1 4 _commit
+7a5f c 39 5043
+7a6b 1b 43 5043
+7a86 28 44 5043
+7aae 20 45 5043
+7ace 7 47 5043
+7ad5 3 48 5043
+7ad8 9 49 5043
+7ae1 14 51 5043
+7af5 9 52 5043
+7afe 2 54 5043
+7b00 3 55 5043
+7b03 5 59 5043
+7b08 a 62 5043
+7b12 b 66 5043
+7b1d 4 67 5043
+7b21 c 72 5043
+7b2d 3 75 5043
+7b30 6 76 5043
+7b36 a 73 5043
+FUNC 7b40 49 0 _mtinitlocks
+7b40 2 137 2371
+7b42 7 144 2371
+7b49 11 145 2371
+7b5a 2 146 2371
+7b5c 15 148 2371
+7b71 6 144 2371
+7b77 5 157 2371
+7b7c d 158 2371
+FUNC 7b89 55 0 _mtdeletelocks
+7b89 1 188 2371
+7b8a d 194 2371
+7b97 c 196 2371
+7ba3 3 200 2371
+7ba6 6 206 2371
+7bac f 207 2371
+7bbb 6 215 2371
+7bc1 c 217 2371
+7bcd 10 221 2371
+7bdd 1 224 2371
+FUNC 7bde 15 4 _unlock
+7bde 3 371 2371
+7be1 10 375 2371
+7bf1 2 376 2371
+FUNC 7bf3 18 4 _lockerr_exit
+7bf3 0 403 2371
+7bf3 c 404 2371
+7bff b 405 2371
+7c0a 1 406 2371
+FUNC 7c0b c3 4 _mtinitlocknum
+7c0b c 259 2371
+7c17 6 261 2371
+7c1d a 269 2371
+7c27 5 270 2371
+7c2c 7 271 2371
+7c33 c 272 2371
+7c3f e 276 2371
+7c4d 4 277 2371
+7c51 e 279 2371
+7c5f b 280 2371
+7c6a 4 281 2371
+7c6e 8 284 2371
+7c76 3 285 2371
+7c79 4 287 2371
+7c7d 11 288 2371
+7c8e 7 289 2371
+7c95 b 290 2371
+7ca0 3 291 2371
+7ca3 2 292 2371
+7ca5 2 293 2371
+7ca7 2 296 2371
+7ca9 7 297 2371
+7cb0 c 300 2371
+7cbc 3 304 2371
+7cbf 6 305 2371
+7cc5 9 301 2371
+FUNC 7cce 31 4 _lock
+7cce 3 333 2371
+7cd1 10 338 2371
+7ce1 b 340 2371
+7cec 8 341 2371
+7cf4 9 348 2371
+7cfd 2 349 2371
+FUNC 7cff 240 0 _ioinit
+7cff c 111 4958
+7d0b 5 122 4958
+7d10 a 127 4958
+7d1a 7 128 4958
+7d21 f 137 4958
+7d30 6 139 4958
+7d36 5 142 4958
+7d3b 6 143 4958
+7d41 8 145 4958
+7d49 4 146 4958
+7d4d 3 147 4958
+7d50 4 148 4958
+7d54 3 149 4958
+7d57 4 151 4958
+7d5b 4 152 4958
+7d5f 4 153 4958
+7d63 13 145 4958
+7d76 15 161 4958
+7d8b 2 166 4958
+7d8d 3 172 4958
+7d90 6 173 4958
+7d96 b 179 4958
+7da1 5 185 4958
+7da6 f 191 4958
+7db5 9 204 4958
+7dbe 7 205 4958
+7dc5 8 207 4958
+7dcd 4 208 4958
+7dd1 3 209 4958
+7dd4 4 210 4958
+7dd8 4 211 4958
+7ddc 4 212 4958
+7de0 4 213 4958
+7de4 4 214 4958
+7de8 f 207 4958
+7df7 9 185 4958
+7e00 2 284 4958
+7e02 6 197 4958
+7e08 8 221 4958
+7e10 24 234 4958
+7e34 15 236 4958
+7e49 7 237 4958
+7e50 5 238 4958
+7e55 18 241 4958
+7e6d 3 243 4958
+7e70 d 221 4958
+7e7d 2 253 4958
+7e7f b 255 4958
+7e8a c 258 4958
+7e96 6 306 4958
+7e9c 4 262 4958
+7ea0 30 266 4958
+7ed0 2 271 4958
+7ed2 a 277 4958
+7edc 6 278 4958
+7ee2 5 279 4958
+7ee7 4 280 4958
+7eeb 14 284 4958
+7eff 3 286 4958
+7f02 2 288 4958
+7f04 4 297 4958
+7f08 6 298 4958
+7f0e a 253 4958
+7f18 c 313 4958
+7f24 4 315 4958
+7f28 7 128 4958
+7f2f a 129 4958
+7f39 6 316 4958
+FUNC 7f3f 4c 0 _ioterm
+7f3f 2 341 4958
+7f41 5 345 4958
+7f46 6 347 4958
+7f4c 8 353 4958
+7f54 9 355 4958
+7f5d 11 356 4958
+7f6e 4 353 4958
+7f72 7 361 4958
+7f79 11 362 4958
+7f8a 1 365 4958
+FUNC 7f8b 21 4 wait_a_bit
+7f8b 1 18 5557
+7f8c b 19 5557
+7f97 6 20 5557
+7f9d 8 21 5557
+7fa5 3 22 5557
+7fa8 3 23 5557
+7fab 1 24 5557
+FUNC 7fac 10 4 _set_malloc_crt_max_wait
+7fac 0 32 5557
+7fac f 34 5557
+7fbb 1 36 5557
+FUNC 7fbc 40 4 _malloc_crt
+7fbc 2 39 5557
+7fbe 2 40 5557
+7fc0 b 44 5557
+7fcb d 45 5557
+7fd8 18 46 5557
+7ff0 7 47 5557
+7ff7 4 50 5557
+7ffb 1 51 5557
+FUNC 7ffc 48 8 _calloc_crt
+7ffc 2 54 5557
+7ffe 2 55 5557
+8000 14 61 5557
+8014 c 62 5557
+8020 18 63 5557
+8038 7 64 5557
+803f 4 67 5557
+8043 1 68 5557
+FUNC 8044 4b 8 _realloc_crt
+8044 2 71 5557
+8046 2 72 5557
+8048 f 76 5557
+8057 14 77 5557
+806b 18 78 5557
+8083 7 79 5557
+808a 4 82 5557
+808e 1 83 5557
+FUNC 808f 50 c _recalloc_crt
+808f 2 86 5557
+8091 2 87 5557
+8093 16 91 5557
+80a9 12 92 5557
+80bb 18 94 5557
+80d3 7 95 5557
+80da 4 100 5557
+80de 1 101 5557
+FUNC 80df 8 0 _malloc_crt_fastcall
+80df 0 105 5557
+80df 7 106 5557
+80e6 1 107 5557
+FUNC 80e7 a 0 _calloc_crt_fastcall
+80e7 0 110 5557
+80e7 9 111 5557
+80f0 1 112 5557
+FUNC 80f1 a 0 _realloc_crt_fastcall
+80f1 0 115 5557
+80f1 9 116 5557
+80fa 1 117 5557
+FUNC 80fb 8e 4 free
+80fb c 42 5515
+8107 7 47 5515
+810e 9 53 5515
+8117 8 57 5515
+811f 4 58 5515
+8123 e 60 5515
+8131 9 61 5515
+813a c 64 5515
+8146 6 68 5515
+814c 3 70 5515
+814f 2 106 5515
+8151 9 65 5515
+815a f 109 5515
+8169 4 110 5515
+816d 16 112 5515
+8183 6 115 5515
+FUNC 8189 9f 0 _fcloseall
+8189 c 43 1792
+8195 5 44 1792
+819a 8 47 1792
+81a2 3 48 1792
+81a5 e 50 1792
+81b3 10 52 1792
+81c3 14 57 1792
+81d7 3 58 1792
+81da 5 63 1792
+81df 12 65 1792
+81f1 e 66 1792
+81ff 8 67 1792
+8207 3 50 1792
+820a c 73 1792
+8216 3 77 1792
+8219 6 78 1792
+821f 9 74 1792
+FUNC 8228 19 4 std::bad_exception::bad_exception(char const *)
+8228 13 351 6035
+823b 6 352 6035
+FUNC 8241 b 0 std::bad_exception::~bad_exception()
+8241 6 355 6035
+8247 5 356 6035
+FUNC 824c 22 0 std::bad_exception::`vector deleting destructor'(unsigned int)
+FUNC 826e 5c c __TypeMatch
+826e 2 999 6034
+8270 13 1001 6034
+8283 1b 1008 6034
+829e 4 1009 6034
+82a2 22 1023 6034
+82c4 5 1002 6034
+82c9 1 1024 6034
+FUNC 82ca 44 4 __FrameUnwindFilter
+82ca 0 1035 6034
+82ca 6 1038 6034
+82d0 e 1040 6034
+82de 13 1076 6034
+82f1 e 1068 6034
+82ff c 1070 6034
+830b 2 1072 6034
+830d 1 1078 6034
+FUNC 830e e1 10 __FrameUnwindToState
+830e c 1105 6034
+831a 1b 1112 6034
+8335 c 1114 6034
+8341 4 1115 6034
+8345 5 1119 6034
+834a f 1123 6034
+8359 f 1126 6034
+8368 7 1128 6034
+836f 6 1131 6034
+8375 3 1138 6034
+8378 12 1145 6034
+838a 6 1149 6034
+8390 d 1151 6034
+839d d 1153 6034
+83aa 3 1155 6034
+83ad 2 1156 6034
+83af c 1157 6034
+83bb a 1169 6034
+83c5 3 1176 6034
+83c8 6 1180 6034
+83ce 6 1157 6034
+83d4 e 1158 6034
+83e2 d 1159 6034
+FUNC 83ef 45 0 ExFilterRethrow
+83ef 0 1533 6034
+83ef 2 1535 6034
+83f1 2f 1538 6034
+8420 e 1542 6034
+842e 2 1543 6034
+8430 1 1547 6034
+8431 2 1545 6034
+8433 1 1547 6034
+FUNC 8434 54 8 __DestructExceptionObject
+8434 c 1791 6034
+8440 f 1794 6034
+844f e 1801 6034
+845d 4 1803 6034
+8461 9 1810 6034
+846a 7 1814 6034
+8471 6 1824 6034
+8477 c 1815 6034
+8483 5 1819 6034
+FUNC 8488 25 8 __AdjustPointer
+8488 0 1842 6034
+8488 d 1843 6034
+8495 6 1845 6034
+849b 3 1850 6034
+849e e 1852 6034
+84ac 1 1856 6034
+FUNC 84ad 13 0 __uncaught_exception()
+84ad 0 1867 6034
+84ad 12 1868 6034
+84bf 1 1869 6034
+FUNC 84c0 b3 8 __CxxRegisterExceptionObject
+84c0 0 2077 6034
+84c0 14 2085 6034
+84d4 26 2087 6034
+84fa 6 2088 6034
+8500 b 2090 6034
+850b b 2093 6034
+8516 e 2094 6034
+8524 e 2095 6034
+8532 b 2096 6034
+853d 2 2097 6034
+853f 4 2098 6034
+8543 4 2099 6034
+8547 c 2101 6034
+8553 10 2102 6034
+8563 c 2103 6034
+856f 3 2104 6034
+8572 1 2105 6034
+FUNC 8573 4c 4 __CxxDetectRethrow
+8573 0 2117 6034
+8573 6 2119 6034
+8579 2 2120 6034
+857b 2 2121 6034
+857d 2f 2122 6034
+85ac c 2123 6034
+85b8 3 2124 6034
+85bb 1 2127 6034
+85bc 2 2126 6034
+85be 1 2127 6034
+FUNC 85bf 139 8 __CxxUnregisterExceptionObject
+85bf 1 2139 6034
+85c0 4 2143 6034
+85c4 d 2145 6034
+85d1 6 2146 6034
+85d7 85 2149 6034
+865c 14 2150 6034
+8670 5b 2152 6034
+86cb c 2153 6034
+86d7 e 2154 6034
+86e5 12 2155 6034
+86f7 1 2157 6034
+FUNC 86f8 4 0 __CxxQueryExceptionSize
+86f8 0 2167 6034
+86f8 3 2168 6034
+86fb 1 2169 6034
+FUNC 86fc 32 8 __CxxCallUnwindDtor
+86fc c 2189 6034
+8708 4 2190 6034
+870c 6 2192 6034
+8712 2 2193 6034
+8714 d 2194 6034
+8721 7 2197 6034
+8728 6 2198 6034
+FUNC 872e 33 8 __CxxCallUnwindDelDtor
+872e c 2218 6034
+873a 4 2219 6034
+873e 7 2221 6034
+8745 2 2222 6034
+8747 d 2223 6034
+8754 7 2226 6034
+875b 6 2227 6034
+FUNC 8761 32 8 __CxxCallUnwindStdDelDtor
+8761 c 2247 6034
+876d 4 2248 6034
+8771 6 2250 6034
+8777 2 2251 6034
+8779 d 2252 6034
+8786 7 2255 6034
+878d 6 2256 6034
+FUNC 8793 3b 14 __CxxCallUnwindVecDtor
+8793 c 2282 6034
+879f 4 2283 6034
+87a3 f 2285 6034
+87b2 2 2286 6034
+87b4 d 2287 6034
+87c1 7 2290 6034
+87c8 6 2291 6034
+FUNC 87ce 79 4 IsInExceptionSpec
+87ce 6 2302 6034
+87d4 9 2303 6034
+87dd 5 2307 6034
+87e2 f 2323 6034
+87f1 9 2326 6034
+87fa 2 2327 6034
+87fc 10 2328 6034
+880c 26 2335 6034
+8832 4 2337 6034
+8836 c 2323 6034
+8842 3 2343 6034
+8845 2 2344 6034
+FUNC 8847 49 4 CallUnexpected
+8847 c 2379 6034
+8853 13 2380 6034
+8866 4 2383 6034
+886a 5 2384 6034
+886f 4 2391 6034
+8873 5 2392 6034
+8878 8 2388 6034
+8880 10 2390 6034
+FUNC 8890 30 0 Is_bad_exception_allowed
+8890 2 2399 6034
+8892 8 2400 6034
+889a 1d 2402 6034
+88b7 4 2408 6034
+88bb 1 2409 6034
+88bc 4 2404 6034
+FUNC 88c0 82 8 _is_exception_typeof(type_info const &,_EXCEPTION_POINTERS *)
+88c0 1 2416 6034
+88c1 e 2417 6034
+88cf 2 2419 6034
+88d1 9 2422 6034
+88da 2b 2423 6034
+8905 6 2432 6034
+890b 7 2433 6034
+8912 2 2445 6034
+8914 20 2446 6034
+8934 4 2439 6034
+8938 4 2454 6034
+893c 6 2455 6034
+FUNC 8942 19c 18 CallCatchBlock
+8942 14 1431 6034
+8956 3 1437 6034
+8959 4 1439 6034
+895d 6 1443 6034
+8963 11 1447 6034
+8974 e 1451 6034
+8982 e 1452 6034
+8990 b 1454 6034
+899b e 1455 6034
+89a9 a 1457 6034
+89b3 3 1458 6034
+89b6 16 1463 6034
+89cc 12 1464 6034
+89de c 1465 6034
+89ea 3 1470 6034
+89ed 15 1471 6034
+8a02 3 1472 6034
+8a05 c 1474 6034
+8a11 11 1476 6034
+8a22 7 1478 6034
+8a29 d 1482 6034
+8a36 b 1486 6034
+8a41 13 1488 6034
+8a54 3 1517 6034
+8a57 6 1518 6034
+8a5d 5 1474 6034
+8a62 6 1488 6034
+8a68 6 1494 6034
+8a6e 9 1497 6034
+8a77 e 1500 6034
+8a85 e 1501 6034
+8a93 3f 1510 6034
+8ad2 c 1511 6034
+FUNC 8ade 17f 10 __BuildCatchObjectHelper
+8ade c 1575 6034
+8aea 5 1576 6034
+8aef 2a 1582 6034
+8b19 2 1588 6034
+8b1b 3 1590 6034
+8b1e 2 1588 6034
+8b20 2 1592 6034
+8b22 4 1611 6034
+8b26 3 1614 6034
+8b29 4 1622 6034
+8b2d 4 1615 6034
+8b31 26 1622 6034
+8b57 5 1623 6034
+8b5c 11 1625 6034
+8b6d 5 1628 6034
+8b72 3 1629 6034
+8b75 6 1636 6034
+8b7b 4 1629 6034
+8b7f 20 1636 6034
+8b9f 12 1637 6034
+8bb1 10 1639 6034
+8bc1 4 1641 6034
+8bc5 2 1646 6034
+8bc7 5 1649 6034
+8bcc 18 1654 6034
+8be4 1e 1656 6034
+8c02 2 1660 6034
+8c04 25 1668 6034
+8c29 d 1672 6034
+8c36 2 1677 6034
+8c38 5 1678 6034
+8c3d 7 1681 6034
+8c44 5 1688 6034
+8c49 7 1682 6034
+8c50 5 1684 6034
+8c55 2 1584 6034
+8c57 6 1689 6034
+FUNC 8c5d 91 10 __BuildCatchObject
+8c5d c 1712 6034
+8c69 b 1716 6034
+8c74 3 1718 6034
+8c77 2 1720 6034
+8c79 a 1739 6034
+8c83 4 1743 6034
+8c87 1a 1744 6034
+8ca1 1a 1756 6034
+8cbb 2 1757 6034
+8cbd 18 1750 6034
+8cd5 7 1762 6034
+8cdc 6 1769 6034
+8ce2 7 1763 6034
+8ce9 5 1765 6034
+FUNC 8cee 143 10 __CxxExceptionFilter
+8cee 3 1973 6034
+8cf1 a 1985 6034
+8cfb 3 2065 6034
+8cfe 2a 1993 6034
+8d28 32 2008 6034
+8d5a 6 2010 6034
+8d60 c 2011 6034
+8d6c 6 2012 6034
+8d72 b 2013 6034
+8d7d f 2040 6034
+8d8c a 2041 6034
+8d96 2 2047 6034
+8d98 1b 2050 6034
+8db3 4 2042 6034
+8db7 2 2050 6034
+8db9 c 2052 6034
+8dc5 6 2053 6034
+8dcb 13 2054 6034
+8dde 2 2055 6034
+8de0 25 1995 6034
+8e05 6 1997 6034
+8e0b e 1999 6034
+8e19 4 2000 6034
+8e1d c 2004 6034
+8e29 6 2005 6034
+8e2f 2 2065 6034
+FUNC 8e31 6c 20 CatchIt
+8e31 3 1217 6034
+8e34 6 1233 6034
+8e3a 10 1234 6034
+8e4a 4 1253 6034
+8e4e 6 1254 6034
+8e54 2 1255 6034
+8e56 8 1256 6034
+8e5e e 1259 6034
+8e6c 3 1265 6034
+8e6f 21 1273 6034
+8e90 4 1278 6034
+8e94 7 1280 6034
+8e9b 2 1286 6034
+FUNC 8e9d f2 20 FindHandlerForForeignException
+8e9d 6 913 6034
+8ea3 10 920 6034
+8eb3 2a 926 6034
+8edd 23 934 6034
+8f00 e 940 6034
+8f0e 17 945 6034
+8f25 c 948 6034
+8f31 29 954 6034
+8f5a 33 974 6034
+8f8d 2 984 6034
+FUNC 8f8f 356 20 FindHandler
+8f8f 6 569 6034
+8f95 20 632 6034
+8fb5 11 634 6034
+8fc6 42 637 6034
+9008 12 639 6034
+901a e 645 6034
+9028 b 646 6034
+9033 16 652 6034
+9049 2a 653 6034
+9073 12 659 6034
+9085 b 661 6034
+9090 5 662 6034
+9095 15 666 6034
+90aa 23 676 6034
+90cd 5 692 6034
+90d2 c 686 6034
+90de 30 688 6034
+910e 2b 698 6034
+9139 d 707 6034
+9146 19 715 6034
+915f c 718 6034
+916b 10 729 6034
+917b 6 735 6034
+9181 3 736 6034
+9184 7 737 6034
+918b 9 740 6034
+9194 2 741 6034
+9196 7 742 6034
+919d 23 750 6034
+91c0 d 737 6034
+91cd 2 676 6034
+91cf 33 774 6034
+9202 3 718 6034
+9205 6 795 6034
+920b a 804 6034
+9215 27 812 6034
+923c f 814 6034
+924b 5 840 6034
+9250 5 841 6034
+9255 b 843 6034
+9260 5 844 6034
+9265 d 846 6034
+9272 6 847 6034
+9278 2 848 6034
+927a 8 849 6034
+9282 14 851 6034
+9296 b 853 6034
+92a1 6 863 6034
+92a7 a 864 6034
+92b1 1c 866 6034
+92cd 16 877 6034
+92e3 2 880 6034
+FUNC 92e5 18 4 std::bad_exception::bad_exception(std::bad_exception const &)
+FUNC 92fd e4 20 __InternalCxxFrameHandler
+92fd 6 412 6034
+9303 3d 426 6034
+9340 6 432 6034
+9346 6 435 6034
+934c 10 440 6034
+935c 11 479 6034
+936d 2 482 6034
+936f 18 489 6034
+9387 19 499 6034
+93a0 1d 513 6034
+93bd 1c 524 6034
+93d9 6 533 6034
+93df 2 535 6034
+FUNC 93e1 6c 0 _use_encode_pointer
+93e1 7 66 2227
+93e8 2 72 2227
+93ea 12 75 2227
+93fc 7 76 2227
+9403 5 78 2227
+9408 7 82 2227
+940f 5 85 2227
+9414 e 91 2227
+9422 1f 93 2227
+9441 4 95 2227
+9445 6 100 2227
+944b 2 101 2227
+FUNC 944d 6e 4 _encode_pointer
+944d 1 120 2227
+944e 2b 129 2227
+9479 8 145 2227
+9481 d 133 2227
+948e d 135 2227
+949b c 138 2227
+94a7 4 148 2227
+94ab a 150 2227
+94b5 5 153 2227
+94ba 1 154 2227
+FUNC 94bb 9 0 _encoded_null
+94bb 0 173 2227
+94bb 8 174 2227
+94c3 1 175 2227
+FUNC 94c4 6e 4 _decode_pointer
+94c4 1 194 2227
+94c5 2b 203 2227
+94f0 8 219 2227
+94f8 d 207 2227
+9505 d 209 2227
+9512 c 212 2227
+951e 4 222 2227
+9522 a 224 2227
+952c 5 227 2227
+9531 1 228 2227
+FUNC 9532 9 4 __crtTlsAlloc
+9532 0 240 2227
+9532 6 241 2227
+9538 3 242 2227
+FUNC 953b 15 4 __fls_getvalue
+953b 0 258 2227
+953b 12 259 2227
+954d 3 260 2227
+FUNC 9550 6 0 __get_flsindex
+9550 0 272 2227
+9550 5 273 2227
+9555 1 274 2227
+FUNC 9556 32 0 __set_flsgetvalue
+9556 1 286 2227
+9557 e 288 2227
+9565 4 289 2227
+9569 e 291 2227
+9577 d 292 2227
+9584 3 294 2227
+9587 1 298 2227
+FUNC 9588 19 8 __fls_setvalue
+9588 0 315 2227
+9588 16 316 2227
+959e 3 317 2227
+FUNC 95a1 3d 0 _mtterm
+95a1 0 473 2227
+95a1 a 480 2227
+95ab f 481 2227
+95ba 7 482 2227
+95c1 a 485 2227
+95cb 7 486 2227
+95d2 7 487 2227
+95d9 5 494 2227
+FUNC 95de bf 8 _initptd
+95de c 521 2227
+95ea e 522 2227
+95f8 a 524 2227
+9602 6 525 2227
+9608 4 527 2227
+960c 9 529 2227
+9615 16 532 2227
+962b 10 533 2227
+963b 3 540 2227
+963e 7 544 2227
+9645 7 545 2227
+964c 8 546 2227
+9654 7 547 2227
+965b 8 551 2227
+9663 4 552 2227
+9667 6 553 2227
+966d 4 561 2227
+9671 8 562 2227
+9679 9 563 2227
+9682 c 565 2227
+968e 6 568 2227
+9694 9 566 2227
+FUNC 969d 77 0 _getptd_noexit
+969d 2 588 2227
+969f 6 592 2227
+96a5 15 600 2227
+96ba 14 608 2227
+96ce 19 610 2227
+96e7 a 616 2227
+96f1 6 618 2227
+96f7 6 619 2227
+96fd 2 621 2227
+96ff 7 627 2227
+9706 2 628 2227
+9708 8 633 2227
+9710 3 635 2227
+9713 1 636 2227
+FUNC 9714 18 0 _getptd
+9714 1 657 2227
+9715 7 658 2227
+971c 4 659 2227
+9720 8 660 2227
+9728 3 662 2227
+972b 1 663 2227
+FUNC 972c 121 4 _freefls
+972c c 691 2227
+9738 b 702 2227
+9743 7 703 2227
+974a 7 704 2227
+9751 7 706 2227
+9758 7 707 2227
+975f 7 709 2227
+9766 7 710 2227
+976d 7 712 2227
+9774 7 713 2227
+977b 7 715 2227
+9782 7 716 2227
+9789 7 718 2227
+9790 7 719 2227
+9797 a 721 2227
+97a1 7 722 2227
+97a8 8 724 2227
+97b0 4 725 2227
+97b4 1a 728 2227
+97ce 7 729 2227
+97d5 c 731 2227
+97e1 8 735 2227
+97e9 7 737 2227
+97f0 7 738 2227
+97f7 7 740 2227
+97fe 15 743 2227
+9813 7 744 2227
+981a c 747 2227
+9826 7 751 2227
+982d 8 754 2227
+9835 3 731 2227
+9838 9 732 2227
+9841 3 747 2227
+9844 9 748 2227
+FUNC 984d 69 4 _freeptd
+984d 0 778 2227
+984d a 783 2227
+9857 1b 795 2227
+9872 13 796 2227
+9885 16 802 2227
+989b 7 804 2227
+98a2 a 807 2227
+98ac 9 811 2227
+98b5 1 813 2227
+FUNC 98b6 6 0 __threadid
+98b6 0 837 2227
+98b6 6 838 2227
+FUNC 98bc 6 0 __threadhandle
+98bc 0 844 2227
+98bc 6 845 2227
+FUNC 98c2 184 0 _mtinit
+98c2 1 346 2227
+98c3 d 355 2227
+98d0 4 356 2227
+98d4 5 357 2227
+98d9 3 358 2227
+98dc 2 444 2227
+98de e 362 2227
+98ec d 365 2227
+98f9 d 368 2227
+9906 d 371 2227
+9913 2a 372 2227
+993d a 375 2227
+9947 1a 379 2227
+9961 25 388 2227
+9986 5 393 2227
+998b b 400 2227
+9996 10 401 2227
+99a6 10 402 2227
+99b6 18 403 2227
+99ce 7 410 2227
+99d5 2 412 2227
+99d7 1b 418 2227
+99f2 2 420 2227
+99f4 2d 428 2227
+9a21 a 438 2227
+9a2b 6 440 2227
+9a31 6 441 2227
+9a37 5 443 2227
+9a3c 5 430 2227
+9a41 4 389 2227
+9a45 1 444 2227
+FUNC 9a46 39 0 terminate()
+9a46 c 94 5983
+9a52 8 107 5983
+9a5a 4 111 5983
+9a5e 4 116 5983
+9a62 2 120 5983
+9a64 2 121 5983
+9a66 7 122 5983
+9a6d 7 127 5983
+9a74 5 135 5983
+9a79 6 136 5983
+FUNC 9a7f 13 0 unexpected()
+9a7f 0 149 5983
+9a7f 8 159 5983
+9a87 4 163 5983
+9a8b 2 167 5983
+9a8d 5 173 5983
+FUNC 9a92 37 0 _inconsistency()
+9a92 c 187 5983
+9a9e c 196 5983
+9aaa 4 197 5983
+9aae 4 202 5983
+9ab2 2 203 5983
+9ab4 2 204 5983
+9ab6 7 205 5983
+9abd 7 211 5983
+9ac4 5 217 5983
+FUNC 9ac9 11 4 _initp_eh_hooks
+9ac9 0 74 5983
+9ac9 10 80 5983
+9ad9 1 81 5983
+FUNC 9ae0 4c c _CallSettingFrame
+9ae0 3 48 5665
+9ae3 3 57 5665
+9ae6 1 58 5665
+9ae7 1 59 5665
+9ae8 3 60 5665
+9aeb 3 61 5665
+9aee 3 62 5665
+9af1 3 63 5665
+9af4 1 64 5665
+9af5 3 65 5665
+9af8 3 66 5665
+9afb 3 67 5665
+9afe 5 68 5665
+9b03 1 69 5665
+9b04 1 70 5665
+9b05 2 71 5665
+9b07 1 73 5665
+9b08 1 74 5665
+9b09 2 75 5665
+9b0b 1 76 5665
+9b0c 3 77 5665
+9b0f 1 78 5665
+9b10 2 79 5665
+9b12 6 80 5665
+9b18 2 81 5665
+9b1a 5 82 5665
+9b1f 1 84 5665
+9b20 5 85 5665
+9b25 1 86 5665
+9b26 1 87 5665
+9b27 1 88 5665
+9b28 4 89 5665
+PUBLIC 9b07 0 _NLG_Return
+FUNC 9b2c b9 4 _onexit_nolock
+9b2c 5 104 3259
+9b31 b 107 3259
+9b3c 13 108 3259
+9b4f 16 112 3259
+9b65 d 122 3259
+9b72 d 127 3259
+9b7f 14 129 3259
+9b93 3 134 3259
+9b96 14 136 3259
+9baa 3 147 3259
+9bad f 149 3259
+9bbc e 156 3259
+9bca c 157 3259
+9bd6 7 159 3259
+9bdd 6 114 3259
+9be3 2 160 3259
+FUNC 9be5 2f 0 __onexitinit
+9be5 1 205 3259
+9be6 b 208 3259
+9bf1 9 209 3259
+9bfa e 211 3259
+9c08 4 216 3259
+9c0c 1 221 3259
+9c0d 3 218 3259
+9c10 3 220 3259
+9c13 1 221 3259
+FUNC 9c14 3c 4 _onexit
+9c14 c 85 3259
+9c20 5 88 3259
+9c25 4 90 3259
+9c29 c 91 3259
+9c35 c 93 3259
+9c41 3 97 3259
+9c44 6 98 3259
+9c4a 6 94 3259
+FUNC 9c50 12 4 atexit
+9c50 0 165 3259
+9c50 11 166 3259
+9c61 1 167 3259
+FUNC 9c62 4f 4 V6_HeapAlloc
+9c62 c 27 5425
+9c6e 4 28 5425
+9c72 b 29 5425
+9c7d 8 31 5425
+9c85 4 32 5425
+9c89 a 33 5425
+9c93 c 35 5425
+9c9f 3 39 5425
+9ca2 6 40 5425
+9ca8 9 36 5425
+FUNC 9cb1 75 4 _heap_alloc
+9cb1 0 90 5425
+9cb1 9 95 5425
+9cba 5 96 5425
+9cbf 7 97 5425
+9cc6 c 98 5425
+9cd2 a 104 5425
+9cdc 18 105 5425
+9cf4 1 129 5425
+9cf5 a 107 5425
+9cff 9 108 5425
+9d08 2 109 5425
+9d0a 4 121 5425
+9d0e 1 122 5425
+9d0f 6 124 5425
+9d15 10 126 5425
+9d25 1 129 5425
+FUNC 9d26 c3 4 malloc
+9d26 1 155 5425
+9d27 16 159 5425
+9d3d 65 163 5425
+9da2 4 168 5425
+9da6 b 172 5425
+9db1 b 179 5425
+9dbc 2 183 5425
+9dbe 7 174 5425
+9dc5 8 193 5425
+9dcd 5 195 5425
+9dd2 1 196 5425
+9dd3 7 185 5425
+9dda b 186 5425
+9de5 3 187 5425
+9de8 1 196 5425
+FUNC 9de9 a 4 _initp_heap_handler
+9de9 0 31 5230
+9de9 9 32 5230
+9df2 1 33 5230
+FUNC 9df3 31 4 _set_new_handler(int (*)(unsigned int))
+9df3 1 53 5230
+9df4 7 57 5230
+9dfb b 59 5230
+9e06 b 60 5230
+9e11 f 63 5230
+9e20 3 65 5230
+9e23 1 66 5230
+FUNC 9e24 9 4 _set_new_handler(int)
+9e24 0 86 5230
+9e24 8 89 5230
+9e2c 1 90 5230
+FUNC 9e2d d 0 _query_new_handler()
+9e2d 0 110 5230
+9e2d c 111 5230
+9e39 1 112 5230
+FUNC 9e3a 22 4 _callnewh
+9e3a 0 131 5230
+9e3a b 133 5230
+9e45 10 135 5230
+9e55 3 138 5230
+9e58 1 139 5230
+9e59 2 136 5230
+9e5b 1 139 5230
+FUNC 9e5c 22 18 _invoke_watson_if_error
+9e5c 3 754 5850
+9e5f 6 755 5850
+9e65 17 759 5850
+9e7c 2 760 5850
+FUNC 9e7e 70 4 type_info::_Type_info_dtor(type_info *)
+9e7e c 62 5815
+9e8a 8 63 5815
+9e92 4 64 5815
+9e96 a 65 5815
+9ea0 d 70 5815
+9ead 4 72 5815
+9eb1 4 74 5815
+9eb5 6 79 5815
+9ebb 7 80 5815
+9ec2 9 94 5815
+9ecb 4 101 5815
+9ecf c 103 5815
+9edb 6 107 5815
+9ee1 2 83 5815
+9ee3 2 72 5815
+9ee5 9 104 5815
+FUNC 9eee f5 8 type_info::_Name_base(type_info const *,__type_info_node *)
+9eee c 109 5815
+9efa e 113 5815
+9f08 24 124 5815
+9f2c 7 125 5815
+9f33 16 132 5815
+9f49 2 133 5815
+9f4b 5 132 5815
+9f50 b 136 5815
+9f5b 5 142 5815
+9f60 a 149 5815
+9f6a 4 150 5815
+9f6e 11 157 5815
+9f7f 20 158 5815
+9f9f 5 159 5815
+9fa4 9 165 5815
+9fad 3 166 5815
+9fb0 2 167 5815
+9fb2 7 173 5815
+9fb9 9 180 5815
+9fc2 c 181 5815
+9fce 3 188 5815
+9fd1 6 189 5815
+9fd7 3 181 5815
+9fda 9 182 5815
+FUNC 9fe3 70 4 type_info::_Type_info_dtor_internal(type_info *)
+9fe3 c 197 5815
+9fef 8 198 5815
+9ff7 4 199 5815
+9ffb a 200 5815
+a005 d 205 5815
+a012 4 207 5815
+a016 4 209 5815
+a01a 6 214 5815
+a020 7 215 5815
+a027 9 229 5815
+a030 4 236 5815
+a034 c 238 5815
+a040 6 242 5815
+a046 2 218 5815
+a048 2 207 5815
+a04a 9 239 5815
+FUNC a053 31 10 __unDNameHelper
+a053 3 249 5815
+a056 7 250 5815
+a05d 7 252 5815
+a064 1e 260 5815
+a082 2 261 5815
+FUNC a084 eb 8 type_info::_Name_base_internal(type_info const *,__type_info_node *)
+a084 c 265 5815
+a090 e 269 5815
+a09e 1a 273 5815
+a0b8 7 274 5815
+a0bf 16 281 5815
+a0d5 2 282 5815
+a0d7 5 281 5815
+a0dc b 285 5815
+a0e7 5 291 5815
+a0ec a 298 5815
+a0f6 4 299 5815
+a0fa 11 306 5815
+a10b 20 307 5815
+a12b 5 308 5815
+a130 9 314 5815
+a139 3 315 5815
+a13c 2 316 5815
+a13e 7 322 5815
+a145 9 329 5815
+a14e c 330 5815
+a15a 3 337 5815
+a15d 6 338 5815
+a163 3 330 5815
+a166 9 331 5815
+FUNC a16f 53 4 __clean_type_info_names_internal
+a16f c 346 5815
+a17b 8 347 5815
+a183 4 348 5815
+a187 6 352 5815
+a18d 4 354 5815
+a191 3 356 5815
+a194 7 357 5815
+a19b 8 358 5815
+a1a3 4 354 5815
+a1a7 c 359 5815
+a1b3 6 363 5815
+a1b9 9 361 5815
+FUNC a1d0 88 8 strcmp
+a1d0 0 65 926
+a1d0 4 73 926
+a1d4 4 74 926
+a1d8 6 76 926
+a1de 2 77 926
+a1e0 2 81 926
+a1e2 2 83 926
+a1e4 2 84 926
+a1e6 2 85 926
+a1e8 2 86 926
+a1ea 3 87 926
+a1ed 2 88 926
+a1ef 2 89 926
+a1f1 2 90 926
+a1f3 3 92 926
+a1f6 3 94 926
+a1f9 2 95 926
+a1fb 2 96 926
+a1fd 2 97 926
+a1ff 3 98 926
+a202 2 99 926
+a204 3 100 926
+a207 3 101 926
+a20a 2 102 926
+a20c 4 103 926
+a210 2 107 926
+a212 2 108 926
+a214 2 115 926
+a216 2 116 926
+a218 3 117 926
+a21b 1 118 926
+a21c 6 122 926
+a222 2 123 926
+a224 2 125 926
+a226 3 126 926
+a229 2 127 926
+a22b 2 128 926
+a22d 3 129 926
+a230 2 130 926
+a232 2 131 926
+a234 6 133 926
+a23a 2 134 926
+a23c 3 139 926
+a23f 3 140 926
+a242 2 141 926
+a244 2 142 926
+a246 2 143 926
+a248 2 144 926
+a24a 3 145 926
+a24d 2 146 926
+a24f 2 147 926
+a251 2 148 926
+a253 3 149 926
+a256 2 150 926
+FUNC a258 65 c strcpy_s
+a258 0 13 781
+a258 30 18 781
+a288 c 19 781
+a294 2 21 781
+a296 d 23 781
+a2a3 4 27 781
+a2a7 2 29 781
+a2a9 e 30 781
+a2b7 5 33 781
+a2bc 1 34 781
+FUNC a2c0 7a c memset
+a2c0 0 59 934
+a2c0 4 68 934
+a2c4 4 69 934
+a2c8 2 71 934
+a2ca 2 72 934
+a2cc 2 74 934
+a2ce 4 75 934
+a2d2 2 78 934
+a2d4 2 79 934
+a2d6 6 80 934
+a2dc 2 81 934
+a2de 7 82 934
+a2e5 2 83 934
+a2e7 5 85 934
+a2ec 1 91 934
+a2ed 2 92 934
+a2ef 3 94 934
+a2f2 2 95 934
+a2f4 2 97 934
+a2f6 3 98 934
+a2f9 2 99 934
+a2fb 2 101 934
+a2fd 2 103 934
+a2ff 3 104 934
+a302 3 105 934
+a305 2 106 934
+a307 2 110 934
+a309 3 111 934
+a30c 2 113 934
+a30e 2 115 934
+a310 3 117 934
+a313 2 119 934
+a315 2 122 934
+a317 3 123 934
+a31a 3 124 934
+a31d 2 125 934
+a31f 2 127 934
+a321 2 129 934
+a323 2 130 934
+a325 2 134 934
+a327 3 135 934
+a32a 3 137 934
+a32d 2 138 934
+a32f 4 142 934
+a333 1 143 934
+a334 1 145 934
+a335 4 148 934
+a339 1 150 934
+FUNC a340 365 c memcpy
+a340 3 101 1027
+a343 1 113 1027
+a344 1 114 1027
+a345 3 116 1027
+a348 3 117 1027
+a34b 3 119 1027
+a34e 2 129 1027
+a350 2 131 1027
+a352 2 132 1027
+a354 2 134 1027
+a356 2 135 1027
+a358 2 137 1027
+a35a 6 138 1027
+a360 6 147 1027
+a366 2 148 1027
+a368 7 150 1027
+a36f 2 151 1027
+a371 1 153 1027
+a372 1 154 1027
+a373 3 155 1027
+a376 3 156 1027
+a379 2 157 1027
+a37b 1 158 1027
+a37c 1 159 1027
+a37d 2 160 1027
+a37f 1 163 1027
+a380 1 164 1027
+a381 1 165 1027
+a382 5 166 1027
+a387 6 179 1027
+a38d 2 180 1027
+a38f 3 182 1027
+a392 3 183 1027
+a395 3 185 1027
+a398 2 186 1027
+a39a 2 188 1027
+a39c 8 190 1027
+a3a4 2 208 1027
+a3a6 5 209 1027
+a3ab 3 211 1027
+a3ae 2 212 1027
+a3b0 3 214 1027
+a3b3 2 215 1027
+a3b5 7 217 1027
+a3bc 8 221 1027
+a3c4 14 225 1027
+a3d8 2 232 1027
+a3da 2 233 1027
+a3dc 2 235 1027
+a3de 3 236 1027
+a3e1 3 238 1027
+a3e4 3 239 1027
+a3e7 3 241 1027
+a3ea 3 242 1027
+a3ed 3 244 1027
+a3f0 3 245 1027
+a3f3 3 247 1027
+a3f6 2 248 1027
+a3f8 2 250 1027
+a3fa a 252 1027
+a404 2 256 1027
+a406 2 257 1027
+a408 2 259 1027
+a40a 3 260 1027
+a40d 3 262 1027
+a410 3 263 1027
+a413 3 265 1027
+a416 3 266 1027
+a419 3 268 1027
+a41c 2 269 1027
+a41e 2 271 1027
+a420 8 273 1027
+a428 2 277 1027
+a42a 2 278 1027
+a42c 2 280 1027
+a42e 3 281 1027
+a431 3 283 1027
+a434 3 284 1027
+a437 3 286 1027
+a43a 2 287 1027
+a43c 2 289 1027
+a43e 2a 291 1027
+a468 4 298 1027
+a46c 4 300 1027
+a470 4 302 1027
+a474 4 304 1027
+a478 4 306 1027
+a47c 4 308 1027
+a480 4 310 1027
+a484 4 312 1027
+a488 4 314 1027
+a48c 4 316 1027
+a490 4 318 1027
+a494 4 320 1027
+a498 4 322 1027
+a49c 4 324 1027
+a4a0 7 326 1027
+a4a7 2 328 1027
+a4a9 2 329 1027
+a4ab 19 331 1027
+a4c4 3 340 1027
+a4c7 1 341 1027
+a4c8 1 342 1027
+a4c9 3 344 1027
+a4cc 2 348 1027
+a4ce 2 350 1027
+a4d0 3 351 1027
+a4d3 1 352 1027
+a4d4 1 353 1027
+a4d5 3 354 1027
+a4d8 2 358 1027
+a4da 2 360 1027
+a4dc 3 361 1027
+a4df 3 362 1027
+a4e2 3 363 1027
+a4e5 1 364 1027
+a4e6 1 365 1027
+a4e7 5 366 1027
+a4ec 2 370 1027
+a4ee 2 372 1027
+a4f0 3 373 1027
+a4f3 3 374 1027
+a4f6 3 375 1027
+a4f9 3 376 1027
+a4fc 3 377 1027
+a4ff 1 378 1027
+a500 1 379 1027
+a501 3 380 1027
+a504 4 391 1027
+a508 4 392 1027
+a50c 6 397 1027
+a512 2 398 1027
+a514 3 400 1027
+a517 3 401 1027
+a51a 3 403 1027
+a51d 2 404 1027
+a51f 1 406 1027
+a520 2 407 1027
+a522 1 408 1027
+a523 9 410 1027
+a52c 2 414 1027
+a52e a 417 1027
+a538 2 422 1027
+a53a 5 423 1027
+a53f 3 425 1027
+a542 2 426 1027
+a544 3 428 1027
+a547 2 429 1027
+a549 7 431 1027
+a550 14 435 1027
+a564 3 442 1027
+a567 2 443 1027
+a569 3 445 1027
+a56c 3 446 1027
+a56f 3 448 1027
+a572 3 449 1027
+a575 3 451 1027
+a578 2 452 1027
+a57a 1 454 1027
+a57b 2 455 1027
+a57d 1 456 1027
+a57e a 458 1027
+a588 3 462 1027
+a58b 2 463 1027
+a58d 3 465 1027
+a590 3 466 1027
+a593 3 468 1027
+a596 3 469 1027
+a599 3 471 1027
+a59c 3 472 1027
+a59f 3 474 1027
+a5a2 2 475 1027
+a5a4 1 477 1027
+a5a5 2 478 1027
+a5a7 1 479 1027
+a5a8 8 481 1027
+a5b0 3 485 1027
+a5b3 2 486 1027
+a5b5 3 488 1027
+a5b8 3 489 1027
+a5bb 3 491 1027
+a5be 3 492 1027
+a5c1 3 494 1027
+a5c4 3 495 1027
+a5c7 3 497 1027
+a5ca 3 498 1027
+a5cd 3 500 1027
+a5d0 6 501 1027
+a5d6 1 503 1027
+a5d7 2 504 1027
+a5d9 1 505 1027
+a5da 2a 507 1027
+a604 4 516 1027
+a608 4 518 1027
+a60c 4 520 1027
+a610 4 522 1027
+a614 4 524 1027
+a618 4 526 1027
+a61c 4 528 1027
+a620 4 530 1027
+a624 4 532 1027
+a628 4 534 1027
+a62c 4 536 1027
+a630 4 538 1027
+a634 4 540 1027
+a638 4 542 1027
+a63c 7 544 1027
+a643 2 546 1027
+a645 2 547 1027
+a647 19 549 1027
+a660 3 558 1027
+a663 1 560 1027
+a664 1 561 1027
+a665 3 562 1027
+a668 3 566 1027
+a66b 3 568 1027
+a66e 3 569 1027
+a671 1 570 1027
+a672 1 571 1027
+a673 5 572 1027
+a678 3 576 1027
+a67b 3 578 1027
+a67e 3 579 1027
+a681 3 580 1027
+a684 3 581 1027
+a687 1 582 1027
+a688 1 583 1027
+a689 3 584 1027
+a68c 3 588 1027
+a68f 3 590 1027
+a692 3 591 1027
+a695 3 592 1027
+a698 3 593 1027
+a69b 3 594 1027
+a69e 3 595 1027
+a6a1 1 596 1027
+a6a2 1 597 1027
+a6a3 2 598 1027
+FUNC a6b0 365 c memmove
+a6b0 3 101 977
+a6b3 1 113 977
+a6b4 1 114 977
+a6b5 3 116 977
+a6b8 3 117 977
+a6bb 3 119 977
+a6be 2 129 977
+a6c0 2 131 977
+a6c2 2 132 977
+a6c4 2 134 977
+a6c6 2 135 977
+a6c8 2 137 977
+a6ca 6 138 977
+a6d0 6 147 977
+a6d6 2 148 977
+a6d8 7 150 977
+a6df 2 151 977
+a6e1 1 153 977
+a6e2 1 154 977
+a6e3 3 155 977
+a6e6 3 156 977
+a6e9 2 157 977
+a6eb 1 158 977
+a6ec 1 159 977
+a6ed 2 160 977
+a6ef 1 163 977
+a6f0 1 164 977
+a6f1 1 165 977
+a6f2 5 166 977
+a6f7 6 179 977
+a6fd 2 180 977
+a6ff 3 182 977
+a702 3 183 977
+a705 3 185 977
+a708 2 186 977
+a70a 2 188 977
+a70c 8 190 977
+a714 2 208 977
+a716 5 209 977
+a71b 3 211 977
+a71e 2 212 977
+a720 3 214 977
+a723 2 215 977
+a725 7 217 977
+a72c 8 221 977
+a734 14 225 977
+a748 2 232 977
+a74a 2 233 977
+a74c 2 235 977
+a74e 3 236 977
+a751 3 238 977
+a754 3 239 977
+a757 3 241 977
+a75a 3 242 977
+a75d 3 244 977
+a760 3 245 977
+a763 3 247 977
+a766 2 248 977
+a768 2 250 977
+a76a a 252 977
+a774 2 256 977
+a776 2 257 977
+a778 2 259 977
+a77a 3 260 977
+a77d 3 262 977
+a780 3 263 977
+a783 3 265 977
+a786 3 266 977
+a789 3 268 977
+a78c 2 269 977
+a78e 2 271 977
+a790 8 273 977
+a798 2 277 977
+a79a 2 278 977
+a79c 2 280 977
+a79e 3 281 977
+a7a1 3 283 977
+a7a4 3 284 977
+a7a7 3 286 977
+a7aa 2 287 977
+a7ac 2 289 977
+a7ae 2a 291 977
+a7d8 4 298 977
+a7dc 4 300 977
+a7e0 4 302 977
+a7e4 4 304 977
+a7e8 4 306 977
+a7ec 4 308 977
+a7f0 4 310 977
+a7f4 4 312 977
+a7f8 4 314 977
+a7fc 4 316 977
+a800 4 318 977
+a804 4 320 977
+a808 4 322 977
+a80c 4 324 977
+a810 7 326 977
+a817 2 328 977
+a819 2 329 977
+a81b 19 331 977
+a834 3 340 977
+a837 1 341 977
+a838 1 342 977
+a839 3 344 977
+a83c 2 348 977
+a83e 2 350 977
+a840 3 351 977
+a843 1 352 977
+a844 1 353 977
+a845 3 354 977
+a848 2 358 977
+a84a 2 360 977
+a84c 3 361 977
+a84f 3 362 977
+a852 3 363 977
+a855 1 364 977
+a856 1 365 977
+a857 5 366 977
+a85c 2 370 977
+a85e 2 372 977
+a860 3 373 977
+a863 3 374 977
+a866 3 375 977
+a869 3 376 977
+a86c 3 377 977
+a86f 1 378 977
+a870 1 379 977
+a871 3 380 977
+a874 4 391 977
+a878 4 392 977
+a87c 6 397 977
+a882 2 398 977
+a884 3 400 977
+a887 3 401 977
+a88a 3 403 977
+a88d 2 404 977
+a88f 1 406 977
+a890 2 407 977
+a892 1 408 977
+a893 9 410 977
+a89c 2 414 977
+a89e a 417 977
+a8a8 2 422 977
+a8aa 5 423 977
+a8af 3 425 977
+a8b2 2 426 977
+a8b4 3 428 977
+a8b7 2 429 977
+a8b9 7 431 977
+a8c0 14 435 977
+a8d4 3 442 977
+a8d7 2 443 977
+a8d9 3 445 977
+a8dc 3 446 977
+a8df 3 448 977
+a8e2 3 449 977
+a8e5 3 451 977
+a8e8 2 452 977
+a8ea 1 454 977
+a8eb 2 455 977
+a8ed 1 456 977
+a8ee a 458 977
+a8f8 3 462 977
+a8fb 2 463 977
+a8fd 3 465 977
+a900 3 466 977
+a903 3 468 977
+a906 3 469 977
+a909 3 471 977
+a90c 3 472 977
+a90f 3 474 977
+a912 2 475 977
+a914 1 477 977
+a915 2 478 977
+a917 1 479 977
+a918 8 481 977
+a920 3 485 977
+a923 2 486 977
+a925 3 488 977
+a928 3 489 977
+a92b 3 491 977
+a92e 3 492 977
+a931 3 494 977
+a934 3 495 977
+a937 3 497 977
+a93a 3 498 977
+a93d 3 500 977
+a940 6 501 977
+a946 1 503 977
+a947 2 504 977
+a949 1 505 977
+a94a 2a 507 977
+a974 4 516 977
+a978 4 518 977
+a97c 4 520 977
+a980 4 522 977
+a984 4 524 977
+a988 4 526 977
+a98c 4 528 977
+a990 4 530 977
+a994 4 532 977
+a998 4 534 977
+a99c 4 536 977
+a9a0 4 538 977
+a9a4 4 540 977
+a9a8 4 542 977
+a9ac 7 544 977
+a9b3 2 546 977
+a9b5 2 547 977
+a9b7 19 549 977
+a9d0 3 558 977
+a9d3 1 560 977
+a9d4 1 561 977
+a9d5 3 562 977
+a9d8 3 566 977
+a9db 3 568 977
+a9de 3 569 977
+a9e1 1 570 977
+a9e2 1 571 977
+a9e3 5 572 977
+a9e8 3 576 977
+a9eb 3 578 977
+a9ee 3 579 977
+a9f1 3 580 977
+a9f4 3 581 977
+a9f7 1 582 977
+a9f8 1 583 977
+a9f9 3 584 977
+a9fc 3 588 977
+a9ff 3 590 977
+aa02 3 591 977
+aa05 3 592 977
+aa08 3 593 977
+aa0b 3 594 977
+aa0e 3 595 977
+aa11 1 596 977
+aa12 1 597 977
+aa13 2 598 977
+FUNC aa15 3d 4 __CxxUnhandledExceptionFilter(_EXCEPTION_POINTERS *)
+aa15 0 67 5721
+aa15 33 68 5721
+aa48 5 69 5721
+aa4d 2 72 5721
+aa4f 3 73 5721
+FUNC aa52 e 0 __CxxSetUnhandledExceptionFilter
+aa52 0 86 5721
+aa52 b 89 5721
+aa5d 2 90 5721
+aa5f 1 91 5721
+FUNC aa60 1a0 4 _NMSG_WRITE
+aa60 2 174 2418
+aa62 a 178 2418
+aa6c f 179 2418
+aa7b a 182 2418
+aa85 2a 203 2418
+aaaf c 215 2418
+aabb 2a 224 2418
+aae5 1e 227 2418
+ab03 26 228 2418
+ab29 d 231 2418
+ab36 b 233 2418
+ab41 2f 234 2418
+ab70 20 237 2418
+ab90 22 238 2418
+abb2 15 242 2418
+abc7 a 205 2418
+abd1 9 206 2418
+abda 24 212 2418
+abfe 2 245 2418
+FUNC ac00 20 4 _GET_RTERRMSG
+ac00 0 268 2418
+ac00 2 271 2418
+ac02 13 272 2418
+ac15 2 275 2418
+ac17 1 276 2418
+ac18 7 273 2418
+ac1f 1 276 2418
+FUNC ac20 39 0 _FF_MSGBANNER
+ac20 0 141 2418
+ac20 22 145 2418
+ac42 a 147 2418
+ac4c c 148 2418
+ac58 1 150 2418
+FUNC ac59 1 4 _initp_misc_winxfltr
+ac59 0 105 2752
+ac59 1 106 2752
+FUNC ac5a 32 4 xcptlookup
+ac5a 0 410 2752
+ac5a b 411 2752
+ac65 14 418 2752
+ac79 e 425 2752
+ac87 2 428 2752
+ac89 2 426 2752
+ac8b 1 429 2752
+FUNC ac8c 15e 8 _XcptFilter
+ac8c 6 206 2752
+ac92 7 213 2752
+ac99 8 214 2752
+aca1 34 219 2752
+acd5 2 221 2752
+acd7 2 225 2752
+acd9 3 227 2752
+acdc 7 234 2752
+ace3 7 235 2752
+acea 5 243 2752
+acef 4 248 2752
+acf3 8 249 2752
+acfb 3 255 2752
+acfe 6 259 2752
+ad04 6 273 2752
+ad0a 6 274 2752
+ad10 c 283 2752
+ad1c 17 291 2752
+ad33 1e 294 2752
+ad51 3 291 2752
+ad54 c 321 2752
+ad60 9 323 2752
+ad69 7 325 2752
+ad70 9 327 2752
+ad79 7 329 2752
+ad80 9 331 2752
+ad89 7 333 2752
+ad90 9 335 2752
+ad99 7 337 2752
+ada0 9 339 2752
+ada9 7 341 2752
+adb0 9 343 2752
+adb9 7 345 2752
+adc0 7 347 2752
+adc7 8 356 2752
+adcf 3 361 2752
+add2 2 363 2752
+add4 4 368 2752
+add8 3 369 2752
+addb 7 375 2752
+ade2 6 377 2752
+ade8 2 379 2752
+FUNC adea 1b 8 __CppXcptFilter
+adea 0 145 2752
+adea b 146 2752
+adf5 c 147 2752
+ae01 1 151 2752
+ae02 2 149 2752
+ae04 1 151 2752
+FUNC ae05 db 0 _setenvp
+ae05 1 77 2280
+ae06 c 85 2280
+ae12 5 86 2280
+ae17 8 91 2280
+ae1f 4 98 2280
+ae23 8 99 2280
+ae2b 4 110 2280
+ae2f 1 111 2280
+ae30 11 112 2280
+ae41 15 117 2280
+ae56 2 118 2280
+ae58 9 121 2280
+ae61 9 123 2280
+ae6a 6 125 2280
+ae70 10 127 2280
+ae80 1c 133 2280
+ae9c 3 134 2280
+ae9f 6 121 2280
+aea5 b 138 2280
+aeb0 6 139 2280
+aeb6 2 142 2280
+aeb8 a 149 2280
+aec2 7 152 2280
+aec9 17 153 2280
+FUNC aee0 a 4 _set_pgmptr
+aee0 a 334 2303
+FUNC aeea 198 c parse_cmdline
+aeea 4 218 2322
+aeee 6 226 2322
+aef4 8 230 2322
+aefc 14 231 2322
+af10 3 250 2322
+af13 5 252 2322
+af18 5 254 2322
+af1d 9 255 2322
+af26 2 256 2322
+af28 2 258 2322
+af2a 4 259 2322
+af2e 8 260 2322
+af36 2 262 2322
+af38 f 264 2322
+af47 2 265 2322
+af49 6 266 2322
+af4f a 267 2322
+af59 1 268 2322
+af5a 1a 272 2322
+af74 4 277 2322
+af78 4 278 2322
+af7c 4 281 2322
+af80 9 286 2322
+af89 a 287 2322
+af93 3 288 2322
+af96 1 275 2322
+af97 2 276 2322
+af99 9 291 2322
+afa2 6 295 2322
+afa8 9 296 2322
+afb1 2 297 2322
+afb3 3 311 2322
+afb6 4 315 2322
+afba 1 318 2322
+afbb 1 319 2322
+afbc 5 316 2322
+afc1 5 321 2322
+afc6 5 324 2322
+afcb e 325 2322
+afd9 2 326 2322
+afdb 2 327 2322
+afdd d 329 2322
+afea 2 332 2322
+afec 5 336 2322
+aff1 4 337 2322
+aff5 4 338 2322
+aff9 6 339 2322
+afff 3 338 2322
+b002 14 343 2322
+b016 4 348 2322
+b01a 2 349 2322
+b01c 10 350 2322
+b02c b 351 2322
+b037 2 352 2322
+b039 a 354 2322
+b043 2 355 2322
+b045 a 356 2322
+b04f 1 357 2322
+b050 2 358 2322
+b052 5 361 2322
+b057 1 363 2322
+b058 5 372 2322
+b05d 4 376 2322
+b061 7 377 2322
+b068 2 378 2322
+b06a 8 379 2322
+b072 9 382 2322
+b07b 3 383 2322
+b07e 2 384 2322
+b080 2 385 2322
+FUNC b082 b9 0 _setargv
+b082 7 88 2322
+b089 c 97 2322
+b095 5 98 2322
+b09a 18 104 2322
+b0b2 19 120 2322
+b0cb 11 127 2322
+b0dc 15 132 2322
+b0f1 a 136 2322
+b0fb 2 138 2322
+b0fd 8 140 2322
+b105 3 141 2322
+b108 2 142 2322
+b10a 13 149 2322
+b11d c 153 2322
+b129 6 157 2322
+b12f 4 172 2322
+b133 6 134 2322
+b139 2 173 2322
+FUNC b13b 135 0 __crtGetEnvironmentStringsA
+b13b 2 43 4307
+b13d 1a 57 4307
+b157 8 59 4307
+b15f c 60 4307
+b16b b 62 4307
+b176 e 63 4307
+b184 9 68 4307
+b18d 4 71 4307
+b191 8 72 4307
+b199 7 73 4307
+b1a0 7 77 4307
+b1a7 7 78 4307
+b1ae 7 79 4307
+b1b5 1b 93 4307
+b1d0 13 97 4307
+b1e3 11 111 4307
+b1f4 a 113 4307
+b1fe 8 114 4307
+b206 7 99 4307
+b20d 4 100 4307
+b211 6 123 4307
+b217 2 152 4307
+b219 a 126 4307
+b223 6 127 4307
+b229 4 133 4307
+b22d 5 134 4307
+b232 5 135 4307
+b237 5 138 4307
+b23c d 140 4307
+b249 7 141 4307
+b250 5 142 4307
+b255 b 145 4307
+b260 7 147 4307
+b267 6 149 4307
+b26d 3 153 4307
+FUNC b270 24 0 _RTC_Initialize
+FUNC b294 24 0 _RTC_Terminate
+FUNC b2b8 5b 0 __heap_select
+b2b8 6 70 5473
+b2be 23 143 5473
+b2e1 1b 144 5473
+b2fc d 145 5473
+b309 3 146 5473
+b30c 2 164 5473
+b30e 3 161 5473
+b311 2 164 5473
+FUNC b313 5a 4 _heap_init
+b313 0 192 5473
+b313 20 199 5473
+b333 2 200 5473
+b335 1 240 5473
+b336 5 204 5473
+b33b a 206 5473
+b345 f 209 5473
+b354 c 211 5473
+b360 7 212 5473
+b367 2 213 5473
+b369 3 239 5473
+b36c 1 240 5473
+FUNC b36d 74 0 _heap_term
+b36d 1 261 5473
+b36e c 264 5473
+b37a 1b 270 5473
+b395 f 273 5473
+b3a4 b 276 5473
+b3af d 278 5473
+b3bc 11 281 5473
+b3cd c 300 5473
+b3d9 7 301 5473
+b3e0 1 302 5473
+FUNC b3e1 6 0 _get_heap_handle
+b3e1 0 320 5473
+b3e1 5 322 5473
+b3e6 1 323 5473
+FUNC b3e7 94 0 __security_init_cookie
+b3e7 6 97 3689
+b3ed 21 114 3689
+b40e 7 116 3689
+b415 3 117 3689
+b418 a 127 3689
+b422 6 132 3689
+b428 8 135 3689
+b430 8 136 3689
+b438 8 137 3689
+b440 10 139 3689
+b450 2 144 3689
+b452 4 161 3689
+b456 7 163 3689
+b45d 4 166 3689
+b461 7 168 3689
+b468 6 172 3689
+b46e b 173 3689
+b479 2 175 3689
+FUNC b47b 8 4 _crt_debugger_hook
+b47b 0 62 3966
+b47b 7 65 3966
+b482 1 66 3966
+FUNC b483 160 8 _flsbuf
+b483 5 93 2041
+b488 c 104 2041
+b494 8 106 2041
+b49c b 107 2041
+b4a7 4 108 2041
+b4ab 8 109 2041
+b4b3 4 110 2041
+b4b7 b 111 2041
+b4c2 3 113 2041
+b4c5 6 124 2041
+b4cb b 126 2041
+b4d6 3 127 2041
+b4d9 8 128 2041
+b4e1 9 137 2041
+b4ea f 141 2041
+b4f9 25 151 2041
+b51e 7 153 2041
+b525 d 158 2041
+b532 5 162 2041
+b537 5 163 2041
+b53c 6 164 2041
+b542 7 166 2041
+b549 10 167 2041
+b559 2 168 2041
+b55b 6 131 2041
+b561 5 132 2041
+b566 2e 169 2041
+b594 12 171 2041
+b5a6 2 174 2041
+b5a8 8 179 2041
+b5b0 2 186 2041
+b5b2 3 187 2041
+b5b5 13 189 2041
+b5c8 5 201 2041
+b5cd 4 202 2041
+b5d1 5 203 2041
+b5d6 b 207 2041
+b5e1 2 212 2041
+FUNC b5e3 25 4 write_char
+b5e3 0 2433 1163
+b5e3 a 2434 1163
+b5ed 2 2437 1163
+b5ef 12 2440 1163
+b601 3 2444 1163
+b604 1 2447 1163
+b605 2 2446 1163
+b607 1 2447 1163
+FUNC b608 25 c write_multi_char
+b608 6 2498 1163
+b60e 2 2501 1163
+b610 e 2500 1163
+b61e 6 2501 1163
+b624 7 2499 1163
+b62b 2 2504 1163
+FUNC b62d 4f 4 write_string
+b62d 0 2563 1163
+b62d 12 2564 1163
+b63f 6 2566 1163
+b645 2 2567 1163
+b647 11 2570 1163
+b658 6 2571 1163
+b65e a 2573 1163
+b668 a 2574 1163
+b672 9 2569 1163
+b67b 1 2579 1163
+FUNC b67c 910 10 _woutput_l
+b67c 1b 975 1163
+b697 72 1031 1163
+b709 4 1036 1163
+b70d 2c 1073 1163
+b739 1a 1075 1163
+b753 8 1076 1163
+b75b 18 1131 1163
+b773 2 1171 1163
+b775 13 1173 1163
+b788 3 1174 1163
+b78b 5 1175 1163
+b790 1f 1179 1163
+b7af 4 1193 1163
+b7b3 5 1194 1163
+b7b8 4 1181 1163
+b7bc 5 1182 1163
+b7c1 4 1184 1163
+b7c5 5 1185 1163
+b7ca 7 1190 1163
+b7d1 5 1191 1163
+b7d6 3 1187 1163
+b7d9 5 1196 1163
+b7de 6 1200 1163
+b7e4 9 1206 1163
+b7ed b 1233 1163
+b7f8 4 1235 1163
+b7fc 3 1236 1163
+b7ff 5 1239 1163
+b804 10 1241 1163
+b814 5 1243 1163
+b819 4 1248 1163
+b81d 5 1249 1163
+b822 6 1253 1163
+b828 9 1259 1163
+b831 b 1284 1163
+b83c 4 1285 1163
+b840 5 1287 1163
+b845 10 1289 1163
+b855 5 1291 1163
+b85a 1b 1295 1163
+b875 7 1362 1163
+b87c 5 1363 1163
+b881 6 1301 1163
+b887 2 1303 1163
+b889 a 1304 1163
+b893 5 1306 1163
+b898 4 1308 1163
+b89c 5 1310 1163
+b8a1 4 1358 1163
+b8a5 5 1359 1163
+b8aa 10 1322 1163
+b8ba 3 1324 1163
+b8bd f 1325 1163
+b8cc d 1327 1163
+b8d9 3 1329 1163
+b8dc a 1330 1163
+b8e6 5 1332 1163
+b8eb 3c 1337 1163
+b927 4 1352 1163
+b92b 13 1166 1163
+b93e 5 1167 1163
+b943 32 1378 1163
+b975 d 1716 1163
+b982 4 1724 1163
+b986 18 1749 1163
+b99e c 1750 1163
+b9aa c 1381 1163
+b9b6 9 1383 1163
+b9bf 8 1564 1163
+b9c7 4 1565 1163
+b9cb d 1584 1163
+b9d8 3 1589 1163
+b9db 13 1610 1163
+b9ee 4 1611 1163
+b9f2 8 1612 1163
+b9fa 19 1614 1163
+ba13 13 1618 1163
+ba26 1 1620 1163
+ba27 9 1621 1163
+ba30 5 1622 1163
+ba35 1d 1378 1163
+ba52 9 1397 1163
+ba5b f 1415 1163
+ba6a 3 1420 1163
+ba6d 25 1430 1163
+ba92 3 1434 1163
+ba95 2 1436 1163
+ba97 4 1437 1163
+ba9b 6 1439 1163
+baa1 3 1440 1163
+baa4 5 1506 1163
+baa9 5 1523 1163
+baae e 1541 1163
+babc 6 1546 1163
+bac2 b 1548 1163
+bacd 7 1549 1163
+bad4 5 1550 1163
+bad9 4 1551 1163
+badd 5 1553 1163
+bae2 8 1543 1163
+baea 7 1544 1163
+baf1 5 1557 1163
+baf6 34 1378 1163
+bb2a d 1908 1163
+bb37 9 1910 1163
+bb40 8 1668 1163
+bb48 d 1688 1163
+bb55 6 1702 1163
+bb5b 7 1703 1163
+bb62 2 1704 1163
+bb64 5 1706 1163
+bb69 7 1708 1163
+bb70 5 1710 1163
+bb75 4 1864 1163
+bb79 7 1869 1163
+bb80 c 1933 1163
+bb8c 8 1939 1163
+bb94 5 1958 1163
+bb99 8 1751 1163
+bba1 9 1752 1163
+bbaa 5 1753 1163
+bbaf 3 1754 1163
+bbb2 9 1756 1163
+bbbb f 1759 1163
+bbca 2 1760 1163
+bbcc 13 1765 1163
+bbdf 7 1767 1163
+bbe6 e 1809 1163
+bbf4 27 1828 1163
+bc1b 14 1838 1163
+bc2f 15 1840 1163
+bc44 b 1844 1163
+bc4f 15 1846 1163
+bc64 5 1852 1163
+bc69 7 1853 1163
+bc70 4 1854 1163
+bc74 1 1857 1163
+bc75 5 1859 1163
+bc7a 7 1877 1163
+bc81 3 1887 1163
+bc84 2 1888 1163
+bc86 1a 1378 1163
+bca0 7 1892 1163
+bca7 11 1897 1163
+bcb8 10 1900 1163
+bcc8 3 1901 1163
+bccb 5 1903 1163
+bcd0 6 1961 1163
+bcd6 6 1987 1163
+bcdc 16 2026 1163
+bcf2 2 2045 1163
+bcf4 5 2051 1163
+bcf9 2 2071 1163
+bcfb 4 2074 1163
+bcff 6 2080 1163
+bd05 2 2099 1163
+bd07 5 2105 1163
+bd0c 10 2128 1163
+bd1c 7 2129 1163
+bd23 7 2130 1163
+bd2a c 2136 1163
+bd36 2 2142 1163
+bd38 6 2148 1163
+bd3e 7 2149 1163
+bd45 2 2150 1163
+bd47 4 2151 1163
+bd4b a 2152 1163
+bd55 3 2153 1163
+bd58 6 2157 1163
+bd5e 3 2158 1163
+bd61 6 2163 1163
+bd67 10 2165 1163
+bd77 10 2166 1163
+bd87 c 2168 1163
+bd93 3 2170 1163
+bd96 3 2172 1163
+bd99 2 2173 1163
+bd9b 8 2175 1163
+bda3 1 2176 1163
+bda4 19 2180 1163
+bdbd 9 2181 1163
+bdc6 1 2182 1163
+bdc7 2 2185 1163
+bdc9 4 1625 1163
+bdcd 8 1626 1163
+bdd5 c 1628 1163
+bde1 7 1629 1163
+bde8 2 1630 1163
+bdea 4 1629 1163
+bdee 8 1631 1163
+bdf6 a 2201 1163
+be00 7 2204 1163
+be07 6 2205 1163
+be0d 6 2207 1163
+be13 2 2208 1163
+be15 4 2210 1163
+be19 6 2212 1163
+be1f 2 2213 1163
+be21 4 2215 1163
+be25 6 2217 1163
+be2b 7 2218 1163
+be32 b 2224 1163
+be3d 6 2228 1163
+be43 11 2230 1163
+be54 11 2234 1163
+be65 d 2236 1163
+be72 f 2238 1163
+be81 a 2263 1163
+be8b 3 2267 1163
+be8e 3 2268 1163
+be91 3 2269 1163
+be94 1a 2276 1163
+beae 7 2278 1163
+beb5 e 2282 1163
+bec3 a 2283 1163
+becd 2 1690 1163
+becf 4 2279 1163
+bed3 2 2285 1163
+bed5 d 2286 1163
+bee2 c 2290 1163
+beee 11 2292 1163
+beff 6 2297 1163
+bf05 8 2298 1163
+bf0d 4 2299 1163
+bf11 1 2298 1163
+bf12 1b 1073 1163
+bf2d 17 1690 1163
+bf44 10 2376 1163
+bf54 38 2377 1163
+FUNC bf8c 97 10 _vswprintf_l
+bf8c 7 125 1425
+bf93 24 130 1425
+bfb7 8 135 1425
+bfbf 29 155 1425
+bfe8 1d 166 1425
+c005 18 167 1425
+c01d 4 169 1425
+c021 2 183 1425
+FUNC c023 17 c _vswprintf
+c023 0 192 1425
+c023 16 195 1425
+c039 1 197 1425
+FUNC c03a 5 10 __vswprintf_l
+c03a 0 205 1425
+c03a 5 208 1425
+FUNC c03f 55 10 _vscwprintf_helper
+c03f 7 430 1425
+c046 24 435 1425
+c06a 28 441 1425
+c092 2 443 1425
+FUNC c094 18 8 _vscwprintf
+c094 0 449 1425
+c094 17 450 1425
+c0ab 1 451 1425
+FUNC c0ac 1a c _vscwprintf_l
+c0ac 0 458 1425
+c0ac 19 459 1425
+c0c5 1 460 1425
+FUNC c0c6 18 8 _vscwprintf_p
+c0c6 0 466 1425
+c0c6 17 467 1425
+c0dd 1 468 1425
+FUNC c0de 1a c _vscwprintf_p_l
+c0de 0 475 1425
+c0de 19 476 1425
+c0f7 1 477 1425
+FUNC c0f8 14e 14 vfprintf_helper
+c0f8 c 51 1462
+c104 5 54 1462
+c109 2e 56 1462
+c137 c 57 1462
+c143 3 60 1462
+c146 7 62 1462
+c14d 3 63 1462
+c150 b0 65 1462
+c200 5 66 1462
+c205 8 68 1462
+c20d 10 69 1462
+c21d a 70 1462
+c227 c 74 1462
+c233 3 78 1462
+c236 6 79 1462
+c23c a 75 1462
+FUNC c246 1e 10 _vfprintf_l
+c246 0 87 1462
+c246 1d 88 1462
+c263 1 89 1462
+FUNC c264 1e 10 _vfprintf_s_l
+c264 0 97 1462
+c264 1d 98 1462
+c281 1 99 1462
+FUNC c282 1e 10 _vfprintf_p_l
+c282 0 107 1462
+c282 1d 108 1462
+c29f 1 109 1462
+FUNC c2a0 1c c vfprintf
+c2a0 0 116 1462
+c2a0 1b 117 1462
+c2bb 1 118 1462
+FUNC c2bc 1c c vfprintf_s
+c2bc 0 125 1462
+c2bc 1b 126 1462
+c2d7 1 127 1462
+FUNC c2d8 1c c _vfprintf_p
+c2d8 0 134 1462
+c2d8 1b 135 1462
+c2f3 1 136 1462
+FUNC c2f4 25 4 write_char
+c2f4 0 2433 1053
+c2f4 a 2434 1053
+c2fe 2 2437 1053
+c300 12 2440 1053
+c312 3 2444 1053
+c315 1 2447 1053
+c316 2 2446 1053
+c318 1 2447 1053
+FUNC c319 25 c write_multi_char
+c319 6 2498 1053
+c31f 2 2501 1053
+c321 e 2500 1053
+c32f 6 2501 1053
+c335 7 2499 1053
+c33c 2 2504 1053
+FUNC c33e 4f 4 write_string
+c33e 0 2563 1053
+c33e 12 2564 1053
+c350 6 2566 1053
+c356 2 2567 1053
+c358 11 2570 1053
+c369 6 2571 1053
+c36f a 2573 1053
+c379 a 2574 1053
+c383 9 2569 1053
+c38c 1 2579 1053
+FUNC c38d 91c 10 _woutput_s_l
+c38d 29 975 1053
+c3b6 3 976 1053
+c3b9 f 1007 1053
+c3c8 24 2172 1053
+c3ec 2f 1031 1053
+c41b 18 1036 1053
+c433 2e 1073 1053
+c461 16 1078 1053
+c477 e 1079 1053
+c485 11 1124 1053
+c496 10 1131 1053
+c4a6 2 1171 1053
+c4a8 13 1173 1053
+c4bb 3 1174 1053
+c4be 5 1175 1053
+c4c3 1e 1179 1053
+c4e1 3 1193 1053
+c4e4 5 1194 1053
+c4e9 4 1181 1053
+c4ed 5 1182 1053
+c4f2 4 1184 1053
+c4f6 5 1185 1053
+c4fb 7 1190 1053
+c502 5 1191 1053
+c507 3 1187 1053
+c50a 5 1196 1053
+c50f 6 1200 1053
+c515 5 1206 1053
+c51a e 1233 1053
+c528 4 1235 1053
+c52c 3 1236 1053
+c52f 5 1239 1053
+c534 10 1241 1053
+c544 5 1243 1053
+c549 4 1248 1053
+c54d 5 1249 1053
+c552 6 1253 1053
+c558 5 1259 1053
+c55d e 1284 1053
+c56b 4 1285 1053
+c56f 5 1287 1053
+c574 10 1289 1053
+c584 5 1291 1053
+c589 1b 1295 1053
+c5a4 7 1362 1053
+c5ab 5 1363 1053
+c5b0 6 1301 1053
+c5b6 2 1303 1053
+c5b8 7 1304 1053
+c5bf 5 1306 1053
+c5c4 4 1308 1053
+c5c8 5 1310 1053
+c5cd 4 1358 1053
+c5d1 5 1359 1053
+c5d6 10 1322 1053
+c5e6 3 1324 1053
+c5e9 c 1325 1053
+c5f5 d 1327 1053
+c602 3 1329 1053
+c605 7 1330 1053
+c60c 5 1332 1053
+c611 3c 1337 1053
+c64d 4 1352 1053
+c651 14 1166 1053
+c665 5 1167 1053
+c66a 32 1378 1053
+c69c d 1716 1053
+c6a9 4 1724 1053
+c6ad 18 1749 1053
+c6c5 c 1750 1053
+c6d1 c 1381 1053
+c6dd 9 1383 1053
+c6e6 8 1564 1053
+c6ee 4 1565 1053
+c6f2 d 1584 1053
+c6ff 3 1589 1053
+c702 13 1610 1053
+c715 4 1611 1053
+c719 8 1612 1053
+c721 19 1614 1053
+c73a 13 1618 1053
+c74d 1 1620 1053
+c74e 9 1621 1053
+c757 5 1622 1053
+c75c 1e 1378 1053
+c77a 9 1397 1053
+c783 f 1415 1053
+c792 3 1420 1053
+c795 25 1430 1053
+c7ba 3 1434 1053
+c7bd 2 1436 1053
+c7bf 4 1437 1053
+c7c3 6 1439 1053
+c7c9 3 1440 1053
+c7cc 5 1506 1053
+c7d1 5 1523 1053
+c7d6 e 1541 1053
+c7e4 6 1546 1053
+c7ea b 1548 1053
+c7f5 7 1549 1053
+c7fc 5 1550 1053
+c801 4 1551 1053
+c805 5 1553 1053
+c80a 8 1543 1053
+c812 7 1544 1053
+c819 5 1557 1053
+c81e 34 1378 1053
+c852 9 1908 1053
+c85b 9 1910 1053
+c864 8 1668 1053
+c86c d 1688 1053
+c879 6 1702 1053
+c87f 7 1703 1053
+c886 2 1704 1053
+c888 5 1706 1053
+c88d 7 1708 1053
+c894 5 1710 1053
+c899 4 1864 1053
+c89d 7 1869 1053
+c8a4 c 1933 1053
+c8b0 8 1939 1053
+c8b8 5 1958 1053
+c8bd 8 1751 1053
+c8c5 9 1752 1053
+c8ce 5 1753 1053
+c8d3 3 1754 1053
+c8d6 9 1756 1053
+c8df f 1759 1053
+c8ee 3 1760 1053
+c8f1 15 1765 1053
+c906 7 1767 1053
+c90d e 1809 1053
+c91b 27 1828 1053
+c942 14 1838 1053
+c956 15 1840 1053
+c96b b 1844 1053
+c976 15 1846 1053
+c98b 5 1852 1053
+c990 7 1853 1053
+c997 4 1854 1053
+c99b 1 1857 1053
+c99c 5 1859 1053
+c9a1 3 1877 1053
+c9a4 7 1887 1053
+c9ab 2 1888 1053
+c9ad 1a 1378 1053
+c9c7 7 1892 1053
+c9ce 11 1897 1053
+c9df 10 1900 1053
+c9ef 3 1901 1053
+c9f2 5 1903 1053
+c9f7 6 1961 1053
+c9fd 6 1987 1053
+ca03 16 2026 1053
+ca19 2 2045 1053
+ca1b 5 2051 1053
+ca20 2 2071 1053
+ca22 4 2074 1053
+ca26 6 2080 1053
+ca2c 2 2099 1053
+ca2e 5 2105 1053
+ca33 10 2128 1053
+ca43 7 2129 1053
+ca4a 7 2130 1053
+ca51 c 2136 1053
+ca5d 2 2142 1053
+ca5f 6 2148 1053
+ca65 7 2149 1053
+ca6c 2 2150 1053
+ca6e 4 2151 1053
+ca72 a 2152 1053
+ca7c 3 2153 1053
+ca7f 6 2157 1053
+ca85 3 2158 1053
+ca88 6 2163 1053
+ca8e 10 2165 1053
+ca9e 10 2166 1053
+caae c 2168 1053
+caba 3 2170 1053
+cabd 3 2172 1053
+cac0 2 2173 1053
+cac2 8 2175 1053
+caca 1 2176 1053
+cacb 19 2180 1053
+cae4 9 2181 1053
+caed 1 2182 1053
+caee 2 2185 1053
+caf0 4 1625 1053
+caf4 8 1626 1053
+cafc c 1628 1053
+cb08 7 1629 1053
+cb0f 2 1630 1053
+cb11 4 1629 1053
+cb15 8 1631 1053
+cb1d a 2201 1053
+cb27 7 2204 1053
+cb2e 6 2205 1053
+cb34 6 2207 1053
+cb3a 2 2208 1053
+cb3c 4 2210 1053
+cb40 6 2212 1053
+cb46 2 2213 1053
+cb48 4 2215 1053
+cb4c 6 2217 1053
+cb52 7 2218 1053
+cb59 b 2224 1053
+cb64 6 2228 1053
+cb6a 11 2230 1053
+cb7b 11 2234 1053
+cb8c d 2236 1053
+cb99 f 2238 1053
+cba8 a 2263 1053
+cbb2 3 2267 1053
+cbb5 3 2268 1053
+cbb8 3 2269 1053
+cbbb 1a 2276 1053
+cbd5 7 2278 1053
+cbdc e 2282 1053
+cbea a 2283 1053
+cbf4 2 1690 1053
+cbf6 4 2279 1053
+cbfa 2 2285 1053
+cbfc d 2286 1053
+cc09 c 2290 1053
+cc15 11 2292 1053
+cc26 6 2297 1053
+cc2c 8 2298 1053
+cc34 16 2299 1053
+cc4a 7 1073 1053
+cc51 10 2310 1053
+cc61 10 2376 1053
+cc71 38 2377 1053
+FUNC cca9 154 10 _validate_param_reuseW
+cca9 3 606 1108
+ccac 21 610 1108
+cccd 13 617 1108
+cce0 13 618 1108
+ccf3 10 620 1108
+cd03 4a 629 1108
+cd4d 54 632 1108
+cda1 2 633 1108
+cda3 1a 639 1108
+cdbd f 645 1108
+cdcc 23 626 1108
+cdef c 614 1108
+cdfb 2 646 1108
+FUNC cdfd 25 4 write_char
+cdfd 0 2433 1108
+cdfd a 2434 1108
+ce07 2 2437 1108
+ce09 12 2440 1108
+ce1b 3 2444 1108
+ce1e 1 2447 1108
+ce1f 2 2446 1108
+ce21 1 2447 1108
+FUNC ce22 25 c write_multi_char
+ce22 6 2498 1108
+ce28 2 2501 1108
+ce2a e 2500 1108
+ce38 6 2501 1108
+ce3e 7 2499 1108
+ce45 2 2504 1108
+FUNC ce47 4f 4 write_string
+ce47 0 2563 1108
+ce47 12 2564 1108
+ce59 6 2566 1108
+ce5f 2 2567 1108
+ce61 11 2570 1108
+ce72 6 2571 1108
+ce78 a 2573 1108
+ce82 a 2574 1108
+ce8c 9 2569 1108
+ce95 1 2579 1108
+FUNC ce96 f60 10 _woutput_p_l
+ce96 1b 975 1108
+ceb1 20 1013 1108
+ced1 28 2172 1108
+cef9 2c 1031 1108
+cf25 4 1036 1108
+cf29 3 1038 1108
+cf2c 3 1041 1108
+cf2f 3 1043 1108
+cf32 f 1046 1108
+cf41 44 1073 1108
+cf85 1a 1078 1108
+cf9f 11 1079 1108
+cfb0 16 1082 1108
+cfc6 6 1084 1108
+cfcc 1c 1087 1108
+cfe8 6 1089 1108
+cfee 16 1091 1108
+d004 7 1093 1108
+d00b 2 1095 1108
+d00d 7 1097 1108
+d014 6 1101 1108
+d01a c 1103 1108
+d026 7 1104 1108
+d02d f 1106 1108
+d03c 1d 1109 1108
+d059 8 1112 1108
+d061 5 1131 1108
+d066 3 1117 1108
+d069 7 1131 1108
+d070 9 1120 1108
+d079 b 1131 1108
+d084 24 1137 1108
+d0a8 5 1145 1108
+d0ad 2 1171 1108
+d0af 16 1173 1108
+d0c5 3 1174 1108
+d0c8 5 1175 1108
+d0cd 1f 1179 1108
+d0ec 7 1193 1108
+d0f3 5 1194 1108
+d0f8 7 1181 1108
+d0ff 5 1182 1108
+d104 7 1184 1108
+d10b 5 1185 1108
+d110 a 1190 1108
+d11a 5 1191 1108
+d11f 6 1187 1108
+d125 5 1196 1108
+d12a a 1200 1108
+d134 6 1203 1108
+d13a a 1206 1108
+d144 2 1209 1108
+d146 c 1211 1108
+d152 6 1212 1108
+d158 e 1214 1108
+d166 1c 1216 1108
+d182 8 1219 1108
+d18a 12 1221 1108
+d19c a 1274 1108
+d1a6 5 1275 1108
+d1ab c 1228 1108
+d1b7 b 1233 1108
+d1c2 7 1235 1108
+d1c9 3 1236 1108
+d1cc 5 1239 1108
+d1d1 10 1241 1108
+d1e1 5 1243 1108
+d1e6 4 1248 1108
+d1ea 5 1249 1108
+d1ef 6 1253 1108
+d1f5 6 1256 1108
+d1fb a 1259 1108
+d205 2 1262 1108
+d207 c 1264 1108
+d213 6 1265 1108
+d219 12 1267 1108
+d22b c 1280 1108
+d237 b 1284 1108
+d242 4 1285 1108
+d246 5 1287 1108
+d24b 22 1274 1108
+d26d 10 1289 1108
+d27d 5 1291 1108
+d282 1b 1295 1108
+d29d a 1362 1108
+d2a7 5 1363 1108
+d2ac 6 1301 1108
+d2b2 2 1303 1108
+d2b4 d 1304 1108
+d2c1 5 1306 1108
+d2c6 7 1308 1108
+d2cd 5 1310 1108
+d2d2 7 1358 1108
+d2d9 5 1359 1108
+d2de 10 1322 1108
+d2ee 3 1324 1108
+d2f1 12 1325 1108
+d303 d 1327 1108
+d310 3 1329 1108
+d313 d 1330 1108
+d320 5 1332 1108
+d325 24 1337 1108
+d349 4 1352 1108
+d34d 13 1166 1108
+d360 5 1167 1108
+d365 a 1342 1108
+d36f 5 1366 1108
+d374 36 1378 1108
+d3aa d 1716 1108
+d3b7 7 1724 1108
+d3be 14 1726 1108
+d3d2 9 1728 1108
+d3db 2a 1739 1108
+d405 b 1381 1108
+d410 9 1383 1108
+d419 b 1564 1108
+d424 7 1565 1108
+d42b d 1584 1108
+d438 b 1586 1108
+d443 a 1589 1108
+d44d 5 1592 1108
+d452 22 1378 1108
+d474 d 1394 1108
+d481 b 1397 1108
+d48c 2 1400 1108
+d48e 9 1402 1108
+d497 6 1404 1108
+d49d 24 1406 1108
+d4c1 5 1407 1108
+d4c6 d 1411 1108
+d4d3 c 1415 1108
+d4df 3 1420 1108
+d4e2 28 1430 1108
+d50a 7 1434 1108
+d511 2 1436 1108
+d513 7 1437 1108
+d51a 9 1439 1108
+d523 7 1440 1108
+d52a 5 1506 1108
+d52f 6 1520 1108
+d535 a 1523 1108
+d53f 2 1526 1108
+d541 9 1528 1108
+d54a 4 1530 1108
+d54e 6 1533 1108
+d554 c 1537 1108
+d560 b 1541 1108
+d56b 9 1546 1108
+d574 b 1548 1108
+d57f 7 1549 1108
+d586 5 1550 1108
+d58b 4 1551 1108
+d58f 5 1553 1108
+d594 8 1543 1108
+d59c 7 1544 1108
+d5a3 5 1557 1108
+d5a8 38 1378 1108
+d5e0 15 1908 1108
+d5f5 11 1910 1108
+d606 6 1665 1108
+d60c a 1668 1108
+d616 2 1671 1108
+d618 9 1673 1108
+d621 6 1675 1108
+d627 1f 1677 1108
+d646 5 1678 1108
+d64b c 1682 1108
+d657 d 1688 1108
+d664 9 1702 1108
+d66d 7 1703 1108
+d674 2 1704 1108
+d676 5 1706 1108
+d67b 7 1708 1108
+d682 5 1710 1108
+d687 7 1864 1108
+d68e 7 1869 1108
+d695 6 1910 1108
+d69b 9 1933 1108
+d6a4 a 1936 1108
+d6ae f 1939 1108
+d6bd 5 1942 1108
+d6c2 1a 1739 1108
+d6dc 21 1109 1108
+d6fd 17 1749 1108
+d714 9 1750 1108
+d71d 8 1751 1108
+d725 9 1752 1108
+d72e 5 1753 1108
+d733 3 1754 1108
+d736 a 1756 1108
+d740 f 1759 1108
+d74f 2 1760 1108
+d751 13 1765 1108
+d764 3 1767 1108
+d767 7 1806 1108
+d76e 9 1809 1108
+d777 2 1812 1108
+d779 a 1818 1108
+d783 6 1821 1108
+d789 16 1822 1108
+d79f 24 1828 1108
+d7c3 16 1838 1108
+d7d9 15 1840 1108
+d7ee b 1844 1108
+d7f9 15 1846 1108
+d80e 5 1852 1108
+d813 a 1853 1108
+d81d 4 1854 1108
+d821 1 1857 1108
+d822 5 1859 1108
+d827 7 1877 1108
+d82e 7 1887 1108
+d835 2 1888 1108
+d837 1a 1378 1108
+d851 7 1892 1108
+d858 14 1897 1108
+d86c 10 1900 1108
+d87c 3 1901 1108
+d87f 5 1903 1108
+d884 9 1944 1108
+d88d 28 1948 1108
+d8b5 5 1949 1108
+d8ba 7 1961 1108
+d8c1 4 1964 1108
+d8c5 6 1970 1108
+d8cb 9 1972 1108
+d8d4 28 1976 1108
+d8fc 5 1977 1108
+d901 c 1981 1108
+d90d 5 1987 1108
+d912 5 2019 1108
+d917 5 2020 1108
+d91c 6 2023 1108
+d922 b 2026 1108
+d92d 5 2029 1108
+d932 9 2031 1108
+d93b 4 2033 1108
+d93f 2 2036 1108
+d941 d 2040 1108
+d94e 5 2045 1108
+d953 6 2048 1108
+d959 b 2051 1108
+d964 5 2054 1108
+d969 9 2056 1108
+d972 4 2058 1108
+d976 2 2061 1108
+d978 d 2065 1108
+d985 2 2071 1108
+d987 5 2074 1108
+d98c 6 2077 1108
+d992 a 2080 1108
+d99c 2 2083 1108
+d99e 9 2085 1108
+d9a7 6 2087 1108
+d9ad 17 2089 1108
+d9c4 15 2114 1108
+d9d9 5 2115 1108
+d9de d 2094 1108
+d9eb 2 2099 1108
+d9ed 6 2102 1108
+d9f3 a 2105 1108
+d9fd 2 2108 1108
+d9ff 9 2110 1108
+da08 6 2112 1108
+da0e e 2119 1108
+da1c f 2128 1108
+da2b 7 2129 1108
+da32 c 2130 1108
+da3e c 2136 1108
+da4a 4 2142 1108
+da4e 6 2148 1108
+da54 7 2149 1108
+da5b 2 2150 1108
+da5d 1a 2114 1108
+da77 3 2151 1108
+da7a 10 2152 1108
+da8a 3 2153 1108
+da8d 7 2157 1108
+da94 3 2158 1108
+da97 6 2163 1108
+da9d 11 2165 1108
+daae 12 2166 1108
+dac0 d 2168 1108
+dacd 3 2170 1108
+dad0 b 2173 1108
+dadb 8 2175 1108
+dae3 1 2176 1108
+dae4 20 2180 1108
+db04 9 2181 1108
+db0d 1 2182 1108
+db0e 5 2185 1108
+db13 9 1594 1108
+db1c 9 1596 1108
+db25 c 1603 1108
+db31 c 1610 1108
+db3d 4 1611 1108
+db41 8 1612 1108
+db49 11 1614 1108
+db5a 13 1618 1108
+db6d 1 1620 1108
+db6e 9 1621 1108
+db77 2 1622 1108
+db79 19 1598 1108
+db92 5 1625 1108
+db97 8 1626 1108
+db9f c 1628 1108
+dbab 6 1629 1108
+dbb1 2 1630 1108
+dbb3 4 1629 1108
+dbb7 8 1631 1108
+dbbf 10 2189 1108
+dbcf a 2201 1108
+dbd9 a 2204 1108
+dbe3 6 2205 1108
+dbe9 6 2207 1108
+dbef 2 2208 1108
+dbf1 4 2210 1108
+dbf5 6 2212 1108
+dbfb 2 2213 1108
+dbfd 4 2215 1108
+dc01 6 2217 1108
+dc07 7 2218 1108
+dc0e b 2224 1108
+dc19 9 2228 1108
+dc22 11 2230 1108
+dc33 11 2234 1108
+dc44 13 2236 1108
+dc57 f 2238 1108
+dc66 a 2263 1108
+dc70 3 2267 1108
+dc73 3 2268 1108
+dc76 3 2269 1108
+dc79 1a 2276 1108
+dc93 7 2278 1108
+dc9a e 2282 1108
+dca8 a 2283 1108
+dcb2 2 2310 1108
+dcb4 4 2279 1108
+dcb8 2 2285 1108
+dcba d 2286 1108
+dcc7 f 2290 1108
+dcd6 11 2292 1108
+dce7 6 2297 1108
+dced 8 2298 1108
+dcf5 4 2299 1108
+dcf9 1 2298 1108
+dcfa 12 1073 1108
+dd0c c 2310 1108
+dd18 c 2314 1108
+dd24 10 2319 1108
+dd34 16 2321 1108
+dd4a 2 2360 1108
+dd4c 9 2361 1108
+dd55 6 2362 1108
+dd5b 2 2344 1108
+dd5d 3 2345 1108
+dd60 2 2346 1108
+dd62 2 2324 1108
+dd64 6 2325 1108
+dd6a 9 2319 1108
+dd73 13 1043 1108
+dd86 17 1121 1108
+dd9d f 1818 1108
+ddac 10 2376 1108
+ddbc 3a 2377 1108
+FUNC ddf6 1f 0 _initp_misc_cfltcvt_tab
+ddf6 2 54 4074
+ddf8 8 56 4074
+de00 14 58 4074
+de14 1 60 4074
+FUNC de20 29 4 _ValidateImageBase
+de20 0 44 3159
+de20 b 50 3159
+de2b 2 52 3159
+de2d 1 68 3159
+de2e 5 55 3159
+de33 6 56 3159
+de39 2 58 3159
+de3b d 62 3159
+de48 1 68 3159
+FUNC de50 42 8 _FindPESection
+de50 0 92 3159
+de50 9 99 3159
+de59 19 108 3159
+de72 10 111 3159
+de82 a 108 3159
+de8c 5 123 3159
+de91 1 124 3159
+FUNC dea0 bb 4 _IsNonwritableInCurrentImage
+dea0 33 149 3159
+ded3 7 156 3159
+deda f 164 3159
+dee9 2 166 3159
+deeb 8 174 3159
+def3 e 175 3159
+df01 2 176 3159
+df03 2 178 3159
+df05 12 185 3159
+df17 12 195 3159
+df29 17 187 3159
+df40 9 193 3159
+df49 12 195 3159
+FUNC df5b 19 4 _initp_misc_winsig
+df5b 0 57 2785
+df5b 9 58 2785
+df64 5 59 2785
+df69 5 60 2785
+df6e 5 61 2785
+df73 1 62 2785
+FUNC df74 9b 4 ctrlevent_capture
+df74 c 89 2785
+df80 9 94 2785
+df89 3 95 2785
+df8c 5 102 2785
+df91 5 103 2785
+df96 e 104 2785
+dfa4 7 105 2785
+dfab 2 107 2785
+dfad 5 108 2785
+dfb2 e 109 2785
+dfc0 7 110 2785
+dfc7 1 109 2785
+dfc8 9 113 2785
+dfd1 7 117 2785
+dfd8 c 120 2785
+dfe4 5 124 2785
+dfe9 4 128 2785
+dfed 2 120 2785
+dfef 8 121 2785
+dff7 6 130 2785
+dffd 7 131 2785
+e004 3 138 2785
+e007 8 139 2785
+FUNC e00f 34 4 siglookup
+e00f 0 634 2785
+e00f b 635 2785
+e01a 15 645 2785
+e02f f 649 2785
+e03e 2 653 2785
+e040 2 658 2785
+e042 1 659 2785
+FUNC e043 d 0 __get_sigabrt
+e043 0 676 2785
+e043 c 677 2785
+e04f 1 678 2785
+FUNC e050 9 0 __fpecode
+e050 0 699 2785
+e050 8 700 2785
+e058 1 701 2785
+FUNC e059 9 0 __pxcptinfoptrs
+e059 0 721 2785
+e059 8 722 2785
+e061 1 723 2785
+FUNC e062 23d 8 signal
+e062 c 219 2785
+e06e 4 224 2785
+e072 3 230 2785
+e075 3 244 2785
+e078 12 230 2785
+e08a 2f 244 2785
+e0b9 13 327 2785
+e0cc 7 334 2785
+e0d3 8 335 2785
+e0db a 342 2785
+e0e5 17 346 2785
+e0fc 10 352 2785
+e10c 13 367 2785
+e11f 3 380 2785
+e122 e 382 2785
+e130 3 395 2785
+e133 17 401 2785
+e14a 5 390 2785
+e14f 5 401 2785
+e154 8 246 2785
+e15c 4 247 2785
+e160 12 254 2785
+e172 14 257 2785
+e186 6 259 2785
+e18c 2 261 2785
+e18e f 263 2785
+e19d a 264 2785
+e1a7 18 268 2785
+e1bf f 288 2785
+e1ce 4 289 2785
+e1d2 b 291 2785
+e1dd 2 293 2785
+e1df f 279 2785
+e1ee 4 280 2785
+e1f2 b 282 2785
+e1fd 2 284 2785
+e1ff f 296 2785
+e20e 4 297 2785
+e212 b 299 2785
+e21d 2 301 2785
+e21f f 271 2785
+e22e 4 272 2785
+e232 c 274 2785
+e23e c 305 2785
+e24a 9 309 2785
+e253 4 407 2785
+e257 3 305 2785
+e25a 9 306 2785
+e263 19 410 2785
+e27c 1a 419 2785
+e296 3 417 2785
+e299 6 423 2785
+FUNC e29f 1b0 4 raise
+e29f c 452 2785
+e2ab 5 459 2785
+e2b0 3 460 2785
+e2b3 1f 462 2785
+e2d2 a 488 2785
+e2dc 4 489 2785
+e2e0 8 490 2785
+e2e8 a 465 2785
+e2f2 2 467 2785
+e2f4 11 492 2785
+e305 2 493 2785
+e307 f 462 2785
+e316 1c 500 2785
+e332 a 476 2785
+e33c 2 478 2785
+e33e a 470 2785
+e348 2 472 2785
+e34a a 481 2785
+e354 7 482 2785
+e35b a 502 2785
+e365 2 510 2785
+e367 4 509 2785
+e36b 6 510 2785
+e371 5 515 2785
+e376 7 520 2785
+e37d 5 527 2785
+e382 7 528 2785
+e389 5 530 2785
+e38e f 543 2785
+e39d 6 544 2785
+e3a3 3 545 2785
+e3a6 5 551 2785
+e3ab 6 552 2785
+e3b1 7 553 2785
+e3b8 5 561 2785
+e3bd 1c 568 2785
+e3d9 d 571 2785
+e3e6 5 568 2785
+e3eb 7 574 2785
+e3f2 c 577 2785
+e3fe 5 582 2785
+e403 8 588 2785
+e40b 2 589 2785
+e40d 6 577 2785
+e413 6 578 2785
+e419 9 579 2785
+e422 5 590 2785
+e427 f 597 2785
+e436 6 598 2785
+e43c 5 603 2785
+e441 6 604 2785
+e447 2 607 2785
+e449 6 608 2785
+FUNC e44f a 4 _initp_misc_rand_s
+e44f 0 58 3075
+e44f 9 59 3075
+e458 1 60 3075
+FUNC e459 104 4 rand_s
+e459 3 66 3075
+e45c b 67 3075
+e467 2b 68 3075
+e492 c 71 3075
+e49e d 77 3075
+e4ab 4 78 3075
+e4af 1e 80 3075
+e4cd e 83 3075
+e4db 4 84 3075
+e4df 2f 86 3075
+e50e 9 88 3075
+e517 5 89 3075
+e51c 16 94 3075
+e532 7 103 3075
+e539 9 107 3075
+e542 b 109 3075
+e54d 9 110 3075
+e556 6 112 3075
+e55c 1 113 3075
+FUNC e55d 15a 14 __getlocaleinfo
+e55d 1d 70 3523
+e57a 7 76 3523
+e581 87 109 3523
+e608 13 103 3523
+e61b 5 114 3523
+e620 7 115 3523
+e627 3 141 3523
+e62a 12 142 3523
+e63c 20 106 3523
+e65c 5 108 3523
+e661 7 109 3523
+e668 4 111 3523
+e66c 5 118 3523
+e671 1a 126 3523
+e68b 2 127 3523
+e68d 2 129 3523
+e68f 10 134 3523
+e69f 16 135 3523
+e6b5 2 139 3523
+FUNC e6b7 a 4 _initp_misc_purevirt
+e6b7 0 166 3523
+e6b7 9 167 3523
+e6c0 1 168 3523
+FUNC e6c1 a 4 _initp_misc_initcrit
+e6c1 0 47 3609
+e6c1 9 48 3609
+e6ca 1 49 3609
+FUNC e6cb 10 8 __crtInitCritSecNoSpinCount
+e6cb 0 76 3609
+e6cb a 77 3609
+e6d5 3 78 3609
+e6d8 3 79 3609
+FUNC e6db c5 8 __crtInitCritSecAndSpinCount
+e6db c 109 3609
+e6e7 5 111 3609
+e6ec e 112 3609
+e6fa 4 114 3609
+e6fe 1b 120 3609
+e719 4 121 3609
+e71d 2 129 3609
+e71f b 130 3609
+e72a 4 131 3609
+e72e e 134 3609
+e73c 4 136 3609
+e740 5 149 3609
+e745 c 152 3609
+e751 3 155 3609
+e754 b 161 3609
+e75f 2 162 3609
+e761 1a 163 3609
+e77b 9 170 3609
+e784 8 171 3609
+e78c 4 173 3609
+e790 7 174 3609
+e797 3 176 3609
+e79a 6 177 3609
+FUNC e7a0 5e 4 _isatty
+e7a0 0 37 4912
+e7a0 16 44 4912
+e7b6 2 59 4912
+e7b8 29 45 4912
+e7e1 1 59 4912
+e7e2 1b 58 4912
+e7fd 1 59 4912
+FUNC e7fe 2f 0 CPtoLCID
+e7fe 0 329 4615
+e7fe 14 330 4615
+e812 2 345 4615
+e814 1 346 4615
+e815 5 342 4615
+e81a 1 346 4615
+e81b 5 339 4615
+e820 1 346 4615
+e821 5 336 4615
+e826 1 346 4615
+e827 5 333 4615
+e82c 1 346 4615
+FUNC e82d 55 0 setSBCS
+e82d 4 363 4615
+e831 14 368 4615
+e845 3 371 4615
+e848 3 374 4615
+e84b 3 376 4615
+e84e 8 379 4615
+e856 a 381 4615
+e860 9 382 4615
+e869 b 384 4615
+e874 d 385 4615
+e881 1 386 4615
+FUNC e882 18a 0 setSBUpLow
+e882 1d 402 4615
+e89f f 412 4615
+e8ae d 415 4615
+e8bb c 416 4615
+e8c7 e 420 4615
+e8d5 3 419 4615
+e8d8 28 421 4615
+e900 1d 427 4615
+e91d 23 432 4615
+e940 25 437 4615
+e965 2 442 4615
+e967 a 443 4615
+e971 5 445 4615
+e976 9 446 4615
+e97f 5 448 4615
+e984 5 450 4615
+e989 e 451 4615
+e997 2 453 4615
+e999 8 454 4615
+e9a1 5 442 4615
+e9a6 8 456 4615
+e9ae 2c 472 4615
+e9da 5 466 4615
+e9df 5 468 4615
+e9e4 7 469 4615
+e9eb 2 471 4615
+e9ed 3 472 4615
+e9f0 5 460 4615
+e9f5 17 474 4615
+FUNC ea0c a4 0 __updatetmbcinfo
+ea0c c 496 4615
+ea18 7 499 4615
+ea1f 10 500 4615
+ea2f 3 533 4615
+ea32 4 536 4615
+ea36 8 538 4615
+ea3e 2 541 4615
+ea40 6 542 4615
+ea46 8 501 4615
+ea4e 4 503 4615
+ea52 e 506 4615
+ea60 17 512 4615
+ea77 7 517 4615
+ea7e 11 524 4615
+ea8f 7 525 4615
+ea96 11 528 4615
+eaa7 9 530 4615
+FUNC eab0 7a 0 getSystemCP
+eab0 7 282 4615
+eab7 b 284 4615
+eac2 b 289 4615
+eacd a 291 4615
+ead7 14 292 4615
+eaeb 5 295 4615
+eaf0 a 297 4615
+eafa 8 298 4615
+eb02 5 302 4615
+eb07 12 305 4615
+eb19 f 308 4615
+eb28 2 309 4615
+FUNC eb2a 1d9 8 _setmbcp_nolock
+eb2a 15 686 4615
+eb3f b 693 4615
+eb4a 9 696 4615
+eb53 7 698 4615
+eb5a 7 699 4615
+eb61 3 703 4615
+eb64 2 705 4615
+eb66 19 708 4615
+eb7f 2a 743 4615
+eba9 13 751 4615
+ebbc f 756 4615
+ebcb 15 761 4615
+ebe0 17 764 4615
+ebf7 c 766 4615
+ec03 f 712 4615
+ec12 15 715 4615
+ec27 9 720 4615
+ec30 8 723 4615
+ec38 12 724 4615
+ec4a 9 723 4615
+ec53 5 720 4615
+ec58 12 715 4615
+ec6a 20 731 4615
+ec8a d 733 4615
+ec97 7 736 4615
+ec9e 5 737 4615
+eca3 6 767 4615
+eca9 10 766 4615
+ecb9 8 771 4615
+ecc1 7 772 4615
+ecc8 b 775 4615
+ecd3 3 778 4615
+ecd6 2 780 4615
+ecd8 3 782 4615
+ecdb 8 785 4615
+ece3 2 789 4615
+ece5 6 794 4615
+eceb 6 797 4615
+ecf1 3 746 4615
+ecf4 f 802 4615
+FUNC ed03 3c 0 _getmbcp
+ed03 6 819 4615
+ed09 a 821 4615
+ed13 9 822 4615
+ed1c 10 823 4615
+ed2c 2 826 4615
+ed2e f 825 4615
+ed3d 2 826 4615
+FUNC ed3f 19a 4 _setmbcp
+ed3f c 574 4615
+ed4b 4 575 4615
+ed4f a 579 4615
+ed59 5 581 4615
+ed5e 3 582 4615
+ed61 b 585 4615
+ed6c 9 587 4615
+ed75 d 593 4615
+ed82 8 595 4615
+ed8a c 597 4615
+ed96 3 607 4615
+ed99 16 612 4615
+edaf 1a 614 4615
+edc9 7 615 4615
+edd0 3 619 4615
+edd3 9 620 4615
+eddc 17 622 4615
+edf3 8 624 4615
+edfb 4 625 4615
+edff 8 630 4615
+ee07 8 631 4615
+ee0f 8 632 4615
+ee17 a 633 4615
+ee21 d 634 4615
+ee2e 3 633 4615
+ee31 c 635 4615
+ee3d a 636 4615
+ee47 3 635 4615
+ee4a c 637 4615
+ee56 d 638 4615
+ee63 3 637 4615
+ee66 1c 640 4615
+ee82 7 641 4615
+ee89 6 645 4615
+ee8f 3 646 4615
+ee92 e 648 4615
+eea0 9 650 4615
+eea9 2 653 4615
+eeab 5 654 4615
+eeb0 8 660 4615
+eeb8 7 661 4615
+eebf b 662 4615
+eeca 2 668 4615
+eecc 4 673 4615
+eed0 3 682 4615
+eed3 6 683 4615
+FUNC eed9 1e 0 __initmbctable
+eed9 0 843 4615
+eed9 9 853 4615
+eee2 8 854 4615
+eeea a 855 4615
+eef4 2 860 4615
+eef6 1 861 4615
+FUNC eef7 6 0 ___setlc_active_func
+eef7 0 90 2995
+eef7 5 91 2995
+eefc 1 92 2995
+FUNC eefd 6 0 ___unguarded_readlc_active_add_func
+eefd 0 104 2995
+eefd 5 105 2995
+ef02 1 106 2995
+FUNC ef03 140 4 __freetlocinfo
+ef03 3 144 2995
+ef06 26 152 2995
+ef2c e 155 2995
+ef3a 6 157 2995
+ef40 d 158 2995
+ef4d e 162 2995
+ef5b 6 164 2995
+ef61 d 165 2995
+ef6e b 168 2995
+ef79 d 169 2995
+ef86 e 176 2995
+ef94 11 178 2995
+efa5 13 179 2995
+efb8 e 180 2995
+efc6 e 181 2995
+efd4 17 188 2995
+efeb 6 190 2995
+eff1 9 191 2995
+effa 6 194 2995
+f000 13 197 2995
+f013 7 199 2995
+f01a 10 205 2995
+f02a d 207 2995
+f037 b 214 2995
+f042 1 215 2995
+FUNC f043 86 4 __addlocaleref
+f043 3 225 2995
+f046 e 227 2995
+f054 a 228 2995
+f05e 3 229 2995
+f061 a 231 2995
+f06b 3 232 2995
+f06e a 234 2995
+f078 3 235 2995
+f07b a 237 2995
+f085 3 238 2995
+f088 6 240 2995
+f08e f 242 2995
+f09d 3 243 2995
+f0a0 d 245 2995
+f0ad 9 246 2995
+f0b6 12 248 2995
+f0c8 1 249 2995
+FUNC f0c9 8c 4 __removelocaleref
+f0c9 1 259 2995
+f0ca b 261 2995
+f0d5 9 263 2995
+f0de a 265 2995
+f0e8 3 266 2995
+f0eb a 268 2995
+f0f5 3 269 2995
+f0f8 a 271 2995
+f102 3 272 2995
+f105 a 274 2995
+f10f 3 275 2995
+f112 6 277 2995
+f118 f 279 2995
+f127 3 280 2995
+f12a d 282 2995
+f137 9 283 2995
+f140 11 285 2995
+f151 3 287 2995
+f154 1 288 2995
+FUNC f155 24 0 _copytlocinfo_nolock
+f155 3 302 2995
+f158 d 303 2995
+f165 7 304 2995
+f16c 3 305 2995
+f16f 9 306 2995
+f178 1 308 2995
+FUNC f179 3e 0 _updatetlocinfoEx_nolock
+f179 0 321 2995
+f179 9 324 2995
+f182 2 326 2995
+f184 4 327 2995
+f188 8 334 2995
+f190 5 339 2995
+f195 6 341 2995
+f19b e 350 2995
+f1a9 7 351 2995
+f1b0 3 355 2995
+f1b3 1 356 2995
+f1b4 2 325 2995
+f1b6 1 356 2995
+FUNC f1b7 76 0 __updatetlocinfo
+f1b7 c 382 2995
+f1c3 7 384 2995
+f1ca 10 386 2995
+f1da 8 397 2995
+f1e2 4 399 2995
+f1e6 8 401 2995
+f1ee 2 404 2995
+f1f0 6 405 2995
+f1f6 8 387 2995
+f1fe 4 388 2995
+f202 11 390 2995
+f213 e 392 2995
+f221 8 394 2995
+f229 4 395 2995
+FUNC f22d 66 4 _configthreadlocale
+f22d 2 420 2995
+f22f 5 434 2995
+f234 10 435 2995
+f244 19 437 2995
+f25d 1d 456 2995
+f27a 3 444 2995
+f27d 2 445 2995
+f27f 6 440 2995
+f285 2 441 2995
+f287 7 452 2995
+f28e 4 460 2995
+f292 1 462 2995
+FUNC f293 53 0 sync_legacy_variables_lk
+f293 0 489 2995
+f293 e 490 2995
+f2a1 9 491 2995
+f2aa c 492 2995
+f2b6 c 493 2995
+f2c2 c 494 2995
+f2ce c 495 2995
+f2da b 496 2995
+f2e5 1 497 2995
+FUNC f2e6 96 4 _free_locale
+f2e6 c 517 2995
+f2f2 9 518 2995
+f2fb 1c 522 2995
+f317 7 524 2995
+f31e 4 526 2995
+f322 8 534 2995
+f32a 3 535 2995
+f32d 8 537 2995
+f335 11 540 2995
+f346 7 541 2995
+f34d c 543 2995
+f359 7 552 2995
+f360 3 553 2995
+f363 7 554 2995
+f36a 6 556 2995
+f370 3 543 2995
+f373 9 545 2995
+FUNC f37c 5 4 __free_locale
+f37c 0 562 2995
+f37c 5 563 2995
+FUNC f381 88 0 _get_current_locale
+f381 c 687 2995
+f38d 7 689 2995
+f394 14 691 2995
+f3a8 b 693 2995
+f3b3 4 694 2995
+f3b7 5 697 2995
+f3bc 5 698 2995
+f3c1 5 706 2995
+f3c6 6 707 2995
+f3cc 8 708 2995
+f3d4 4 709 2995
+f3d8 8 710 2995
+f3e0 c 712 2995
+f3ec 9 715 2995
+f3f5 2 717 2995
+f3f7 6 718 2995
+f3fd 3 712 2995
+f400 9 713 2995
+FUNC f409 5 0 __get_current_locale
+f409 0 722 2995
+f409 5 723 2995
+FUNC f40e 3 4 __init_dummy
+f40e 0 1283 2995
+f40e 2 1284 2995
+f410 1 1285 2995
+FUNC f411 3e c _strcats
+f411 2 1288 2995
+f413 f 1294 2995
+f422 26 1296 2995
+f448 6 1294 2995
+f44e 1 1299 2995
+FUNC f44f 129 8 __lc_strtolc
+f44f 6 1302 2995
+f455 11 1307 2995
+f466 c 1309 2995
+f472 7 1310 2995
+f479 b 1313 2995
+f484 25 1315 2995
+f4a9 6 1317 2995
+f4af 2 1318 2995
+f4b1 15 1323 2995
+f4c6 1d 1328 2995
+f4e3 9 1329 2995
+f4ec 10 1331 2995
+f4fc c 1332 2995
+f508 14 1334 2995
+f51c 28 1335 2995
+f544 9 1340 2995
+f54d b 1348 2995
+f558 18 1350 2995
+f570 6 1338 2995
+f576 2 1353 2995
+FUNC f578 6b c __lc_lctostr
+f578 5 1356 2995
+f57d 25 1357 2995
+f5a2 7 1358 2995
+f5a9 16 1359 2995
+f5bf c 1360 2995
+f5cb 16 1361 2995
+f5e1 2 1362 2995
+FUNC f5e3 171 0 _setlocale_get_all
+f5e3 4 1124 2995
+f5e7 3 1126 2995
+f5ea 1d 1134 2995
+f607 3 1137 2995
+f60a 3 1139 2995
+f60d 2 1140 2995
+f60f 2f 1143 2995
+f63e 26 1146 2995
+f664 10 1147 2995
+f674 5 1148 2995
+f679 4 1141 2995
+f67d 2f 1143 2995
+f6ac a 1144 2995
+f6b6 8 1152 2995
+f6be 14 1154 2995
+f6d2 9 1156 2995
+f6db e 1159 2995
+f6e9 9 1161 2995
+f6f2 7 1165 2995
+f6f9 7 1166 2995
+f700 9 1168 2995
+f709 15 1170 2995
+f71e 9 1172 2995
+f727 e 1175 2995
+f735 9 1177 2995
+f73e 12 1183 2995
+f750 4 1187 2995
+FUNC f754 1d4 18 _expandlocale
+f754 15 1198 2995
+f769 41 1230 2995
+f7aa 14 1211 2995
+f7be b 1216 2995
+f7c9 26 1219 2995
+f7ef 4 1220 2995
+f7f3 3 1222 2995
+f7f6 4 1223 2995
+f7fa 4 1224 2995
+f7fe 7 1226 2995
+f805 2 1228 2995
+f807 8 1230 2995
+f80f 6 1234 2995
+f815 2f 1236 2995
+f844 4 1241 2995
+f848 e 1243 2995
+f856 6 1244 2995
+f85c 10 1246 2995
+f86c 6 1247 2995
+f872 9 1251 2995
+f87b 10 1253 2995
+f88b a 1255 2995
+f895 2 1260 2995
+f897 8 1263 2995
+f89f 26 1267 2995
+f8c5 5 1271 2995
+f8ca e 1272 2995
+f8d8 5 1273 2995
+f8dd 10 1274 2995
+f8ed 22 1276 2995
+f90f 5 1277 2995
+f914 2 1212 2995
+f916 12 1278 2995
+FUNC f928 2f6 4 _setlocale_set_cat
+f928 19 980 2995
+f941 5 993 2995
+f946 2f 998 2995
+f975 7 1000 2995
+f97c 19 1002 2995
+f995 6 1004 2995
+f99b c 1007 2995
+f9a7 16 1008 2995
+f9bd 2 1010 2995
+f9bf 3 1013 2995
+f9c2 d 1014 2995
+f9cf 2c 1015 2995
+f9fb 3 1016 2995
+f9fe 39 1019 2995
+fa37 6 1020 2995
+fa3d 15 1021 2995
+fa52 17 1022 2995
+fa69 a 1029 2995
+fa73 6 1031 2995
+fa79 18 1037 2995
+fa91 7 1039 2995
+fa98 8 1053 2995
+faa0 14 1054 2995
+fab4 18 1055 2995
+facc 2 1039 2995
+face a 1044 2995
+fad8 d 1046 2995
+fae5 b 1047 2995
+faf0 9 1058 2995
+faf9 26 1066 2995
+fb1f 2 1069 2995
+fb21 10 1071 2995
+fb31 22 1072 2995
+fb53 2 1081 2995
+fb55 4 1082 2995
+fb59 5 1083 2995
+fb5e 9 1085 2995
+fb67 6 1088 2995
+fb6d 9 1089 2995
+fb76 12 1091 2995
+fb88 6 1094 2995
+fb8e e 1095 2995
+fb9c f 1096 2995
+fbab 9 1097 2995
+fbb4 5 1099 2995
+fbb9 24 1106 2995
+fbdd 7 1109 2995
+fbe4 8 1110 2995
+fbec 6 1111 2995
+fbf2 18 1116 2995
+fc0a 3 1118 2995
+fc0d 11 1119 2995
+FUNC fc1e 1ce 4 _setlocale_nolock
+fc1e 1a 873 2995
+fc38 7 877 2995
+fc3f 5 904 2995
+fc44 17 880 2995
+fc5b 5 882 2995
+fc60 12 888 2995
+fc72 1d 890 2995
+fc8f 2 894 2995
+fc91 d 898 2995
+fc9e 1e 900 2995
+fcbc 11 904 2995
+fccd 1d 907 2995
+fcea e 904 2995
+fcf8 1b 913 2995
+fd13 6 916 2995
+fd19 24 918 2995
+fd3d 18 922 2995
+fd55 3 923 2995
+fd58 7 925 2995
+fd5f 1 926 2995
+fd60 9 928 2995
+fd69 c 930 2995
+fd75 4 901 2995
+fd79 19 935 2995
+fd92 3 937 2995
+fd95 4 939 2995
+fd99 11 941 2995
+fdaa c 943 2995
+fdb6 2 947 2995
+fdb8 3 949 2995
+fdbb 2 952 2995
+fdbd 3 953 2995
+fdc0 9 937 2995
+fdc9 5 956 2995
+fdce 2 961 2995
+fdd0 3 962 2995
+fdd3 2 965 2995
+fdd5 5 966 2995
+fdda 12 972 2995
+FUNC fdec f3 8 _create_locale
+fdec 0 605 2995
+fdec 10 609 2995
+fdfc 13 612 2995
+fe0f b 614 2995
+fe1a 4 610 2995
+fe1e c 658 2995
+fe2a 8 617 2995
+fe32 7 619 2995
+fe39 2 621 2995
+fe3b 14 623 2995
+fe4f 7 625 2995
+fe56 7 626 2995
+fe5d 2 628 2995
+fe5f c 630 2995
+fe6b 14 632 2995
+fe7f 7 634 2995
+fe86 7 635 2995
+fe8d 9 637 2995
+fe96 2 640 2995
+fe98 13 642 2995
+feab 8 644 2995
+feb3 7 645 2995
+feba 7 646 2995
+fec1 9 647 2995
+feca 2 648 2995
+fecc 2 650 2995
+fece 5 652 2995
+fed3 5 653 2995
+fed8 7 657 2995
+FUNC fedf 5 8 __create_locale
+fedf 0 665 2995
+fedf 5 666 2995
+FUNC fee4 170 8 setlocale
+fee4 c 791 2995
+fef0 5 792 2995
+fef5 25 797 2995
+ff1a a 799 2995
+ff24 5 801 2995
+ff29 4 806 2995
+ff2d 3 807 2995
+ff30 1b 808 2995
+ff4b 8 818 2995
+ff53 7 819 2995
+ff5a a 820 2995
+ff64 8 822 2995
+ff6c 19 826 2995
+ff85 18 834 2995
+ff9d a 836 2995
+ffa7 8 839 2995
+ffaf 7 840 2995
+ffb6 a 841 2995
+ffc0 7 842 2995
+ffc7 f 846 2995
+ffd6 c 847 2995
+ffe2 18 849 2995
+fffa 5 850 2995
+ffff b 852 2995
+1000a 8 822 2995
+10012 9 823 2995
+1001b 3 852 2995
+1001e 9 853 2995
+10027 2 855 2995
+10029 6 856 2995
+1002f 8 857 2995
+10037 c 860 2995
+10043 3 865 2995
+10046 6 866 2995
+1004c 3 860 2995
+1004f 5 862 2995
+FUNC 10054 15f 14 _wctomb_s_l
+10054 8 56 6128
+1005c 11 57 6128
+1006d 7 60 6128
+10074 2 62 6128
+10076 4 64 6128
+1007a 7 67 6128
+10081 3 69 6128
+10084 23 74 6128
+100a7 b 77 6128
+100b2 c 79 6128
+100be a 81 6128
+100c8 8 83 6128
+100d0 b 85 6128
+100db b 125 6128
+100e6 13 126 6128
+100f9 5 136 6128
+100fe 4 91 6128
+10102 2c 93 6128
+1012e 2 94 6128
+10130 7 96 6128
+10137 6 98 6128
+1013d 15 100 6128
+10152 27 115 6128
+10179 7 129 6128
+10180 2 131 6128
+10182 2 133 6128
+10184 f 117 6128
+10193 10 119 6128
+101a3 b 121 6128
+101ae 5 123 6128
+FUNC 101b3 1b 10 wctomb_s
+101b3 0 144 6128
+101b3 1a 145 6128
+101cd 1 146 6128
+FUNC 101ce 4f c _wctomb_l
+101ce 6 178 6128
+101d4 f 181 6128
+101e3 1f 183 6128
+10202 19 184 6128
+1021b 2 185 6128
+FUNC 1021d 30 8 wctomb
+1021d 4 191 6128
+10221 4 192 6128
+10225 1a 195 6128
+1023f 7 196 6128
+10246 2 197 6128
+10248 3 196 6128
+1024b 2 197 6128
+FUNC 1024d 36 8 _isleadbyte_l
+1024d 6 55 6490
+10253 b 56 6490
+1025e 23 57 6490
+10281 2 58 6490
+FUNC 10283 e 4 isleadbyte
+10283 0 63 6490
+10283 d 64 6490
+10290 1 65 6490
+FUNC 10291 16 8 _iswalpha_l
+10291 0 71 6490
+10291 15 72 6490
+102a6 1 73 6490
+FUNC 102a7 11 4 iswalpha
+102a7 0 78 6490
+102a7 10 79 6490
+102b7 1 80 6490
+FUNC 102b8 13 8 _iswupper_l
+102b8 0 86 6490
+102b8 12 87 6490
+102ca 1 88 6490
+FUNC 102cb e 4 iswupper
+102cb 0 93 6490
+102cb d 94 6490
+102d8 1 95 6490
+FUNC 102d9 13 8 _iswlower_l
+102d9 0 101 6490
+102d9 12 102 6490
+102eb 1 103 6490
+FUNC 102ec e 4 iswlower
+102ec 0 108 6490
+102ec d 109 6490
+102f9 1 110 6490
+FUNC 102fa 13 8 _iswdigit_l
+102fa 0 116 6490
+102fa 12 117 6490
+1030c 1 118 6490
+FUNC 1030d e 4 iswdigit
+1030d 0 123 6490
+1030d d 124 6490
+1031a 1 125 6490
+FUNC 1031b 16 8 _iswxdigit_l
+1031b 0 131 6490
+1031b 15 132 6490
+10330 1 133 6490
+FUNC 10331 11 4 iswxdigit
+10331 0 138 6490
+10331 10 139 6490
+10341 1 140 6490
+FUNC 10342 13 8 _iswspace_l
+10342 0 146 6490
+10342 12 147 6490
+10354 1 148 6490
+FUNC 10355 e 4 iswspace
+10355 0 153 6490
+10355 d 154 6490
+10362 1 155 6490
+FUNC 10363 13 8 _iswpunct_l
+10363 0 161 6490
+10363 12 162 6490
+10375 1 163 6490
+FUNC 10376 e 4 iswpunct
+10376 0 168 6490
+10376 d 169 6490
+10383 1 170 6490
+FUNC 10384 16 8 _iswalnum_l
+10384 0 176 6490
+10384 15 177 6490
+10399 1 178 6490
+FUNC 1039a 11 4 iswalnum
+1039a 0 183 6490
+1039a 10 184 6490
+103aa 1 185 6490
+FUNC 103ab 16 8 _iswprint_l
+103ab 0 191 6490
+103ab 15 192 6490
+103c0 1 193 6490
+FUNC 103c1 11 4 iswprint
+103c1 0 198 6490
+103c1 10 199 6490
+103d1 1 200 6490
+FUNC 103d2 16 8 _iswgraph_l
+103d2 0 206 6490
+103d2 15 207 6490
+103e7 1 208 6490
+FUNC 103e8 11 4 iswgraph
+103e8 0 213 6490
+103e8 10 214 6490
+103f8 1 215 6490
+FUNC 103f9 13 8 _iswcntrl_l
+103f9 0 221 6490
+103f9 12 222 6490
+1040b 1 223 6490
+FUNC 1040c e 4 iswcntrl
+1040c 0 228 6490
+1040c d 229 6490
+10419 1 230 6490
+FUNC 1041a c 4 iswascii
+1041a 0 235 6490
+1041a b 236 6490
+10425 1 237 6490
+FUNC 10426 26 8 _iswcsym_l
+10426 0 243 6490
+10426 21 244 6490
+10447 1 245 6490
+10448 3 244 6490
+1044b 1 245 6490
+FUNC 1044c 21 4 __iswcsym
+1044c 0 250 6490
+1044c 1c 251 6490
+10468 1 252 6490
+10469 3 251 6490
+1046c 1 252 6490
+FUNC 1046d 26 8 _iswcsymf_l
+1046d 0 258 6490
+1046d 21 259 6490
+1048e 1 260 6490
+1048f 3 259 6490
+10492 1 260 6490
+FUNC 10493 21 4 __iswcsymf
+10493 0 265 6490
+10493 1c 266 6490
+104af 1 267 6490
+104b0 3 266 6490
+104b3 1 267 6490
+FUNC 104c0 95 0 _aulldvrm
+104c0 0 45 5113
+104c0 1 47 5113
+104c1 4 79 5113
+104c5 2 80 5113
+104c7 2 81 5113
+104c9 4 82 5113
+104cd 4 83 5113
+104d1 2 84 5113
+104d3 2 85 5113
+104d5 2 86 5113
+104d7 4 87 5113
+104db 2 88 5113
+104dd 2 89 5113
+104df 2 94 5113
+104e1 4 95 5113
+104e5 2 96 5113
+104e7 2 97 5113
+104e9 4 98 5113
+104ed 2 99 5113
+104ef 2 100 5113
+104f1 2 107 5113
+104f3 4 108 5113
+104f7 4 109 5113
+104fb 4 110 5113
+104ff 2 112 5113
+10501 2 113 5113
+10503 2 114 5113
+10505 2 115 5113
+10507 2 116 5113
+10509 2 117 5113
+1050b 2 118 5113
+1050d 2 119 5113
+1050f 4 128 5113
+10513 2 129 5113
+10515 4 130 5113
+10519 2 131 5113
+1051b 2 132 5113
+1051d 2 133 5113
+1051f 4 141 5113
+10523 2 142 5113
+10525 2 143 5113
+10527 4 144 5113
+1052b 2 145 5113
+1052d 1 147 5113
+1052e 4 148 5113
+10532 4 149 5113
+10536 2 151 5113
+10538 4 160 5113
+1053c 4 161 5113
+10540 2 162 5113
+10542 2 163 5113
+10544 3 164 5113
+10547 2 169 5113
+10549 2 170 5113
+1054b 2 171 5113
+1054d 2 172 5113
+1054f 2 173 5113
+10551 1 179 5113
+10552 3 181 5113
+FUNC 10558 90 0 _local_unwind4
+FUNC 105e8 46 0 _unwind_handler4
+FUNC 1062e 1c 4 _seh_longjmp_unwind4
+FUNC 1064a 17 0 _EH4_CallFilterFunc
+FUNC 10661 19 0 _EH4_TransferToHandler
+FUNC 1067a 1a 0 _EH4_GlobalUnwind
+FUNC 10694 17 8 _EH4_LocalUnwind
+FUNC 106ab 33 0 write_char
+106ab 0 2433 1218
+106ab a 2434 1218
+106b5 2 2437 1218
+106b7 21 2442 1218
+106d8 2 2444 1218
+106da 1 2447 1218
+106db 2 2446 1218
+106dd 1 2447 1218
+FUNC 106de 24 c write_multi_char
+106de 6 2498 1218
+106e4 2 2501 1218
+106e6 e 2500 1218
+106f4 5 2501 1218
+106f9 7 2499 1218
+10700 2 2504 1218
+FUNC 10702 4a 4 write_string
+10702 0 2563 1218
+10702 12 2564 1218
+10714 6 2566 1218
+1071a 2 2567 1218
+1071c e 2570 1218
+1072a 5 2571 1218
+1072f a 2573 1218
+10739 9 2574 1218
+10742 9 2569 1218
+1074b 1 2579 1218
+FUNC 1074c 9b0 10 _output_s_l
+1074c 1b 975 1218
+10767 45 1036 1218
+107ac 2d 1031 1218
+107d9 b1 1033 1218
+1088a 8 1036 1218
+10892 28 1073 1218
+108ba 17 1078 1218
+108d1 e 1079 1218
+108df 11 1124 1218
+108f0 12 1131 1218
+10902 2 1171 1218
+10904 13 1173 1218
+10917 3 1174 1218
+1091a 5 1175 1218
+1091f 1e 1179 1218
+1093d 3 1193 1218
+10940 5 1194 1218
+10945 4 1181 1218
+10949 5 1182 1218
+1094e 4 1184 1218
+10952 5 1185 1218
+10957 7 1190 1218
+1095e 5 1191 1218
+10963 4 1187 1218
+10967 5 1196 1218
+1096c 5 1200 1218
+10971 9 1206 1218
+1097a b 1233 1218
+10985 4 1235 1218
+10989 3 1236 1218
+1098c 5 1239 1218
+10991 10 1241 1218
+109a1 5 1243 1218
+109a6 4 1248 1218
+109aa 5 1249 1218
+109af 5 1253 1218
+109b4 9 1259 1218
+109bd b 1284 1218
+109c8 4 1285 1218
+109cc 5 1287 1218
+109d1 10 1289 1218
+109e1 5 1291 1218
+109e6 18 1295 1218
+109fe 7 1362 1218
+10a05 5 1363 1218
+10a0a 5 1301 1218
+10a0f 1 1303 1218
+10a10 a 1304 1218
+10a1a 5 1306 1218
+10a1f 4 1308 1218
+10a23 5 1310 1218
+10a28 4 1358 1218
+10a2c 5 1359 1218
+10a31 c 1322 1218
+10a3d 2 1324 1218
+10a3f f 1325 1218
+10a4e a 1327 1218
+10a58 2 1329 1218
+10a5a a 1330 1218
+10a64 5 1332 1218
+10a69 30 1337 1218
+10a99 4 1352 1218
+10a9d 4 1154 1218
+10aa1 10 1158 1218
+10ab1 11 1160 1218
+10ac2 3 1161 1218
+10ac5 b 1163 1218
+10ad0 b 1166 1218
+10adb 5 1167 1218
+10ae0 32 1378 1218
+10b12 d 1716 1218
+10b1f 4 1724 1218
+10b23 18 1749 1218
+10b3b c 1750 1218
+10b47 8 1381 1218
+10b4f 9 1385 1218
+10b58 8 1561 1218
+10b60 7 1562 1218
+10b67 d 1584 1218
+10b74 3 1589 1218
+10b77 15 1635 1218
+10b8c 4 1636 1218
+10b90 8 1637 1218
+10b98 f 1639 1218
+10ba7 1d 1378 1218
+10bc4 12 1448 1218
+10bd6 16 1467 1218
+10bec 4 1470 1218
+10bf0 7 1471 1218
+10bf7 2 1472 1218
+10bf9 6 1499 1218
+10bff 7 1500 1218
+10c06 6 1503 1218
+10c0c 5 1506 1218
+10c11 5 1523 1218
+10c16 e 1541 1218
+10c24 6 1546 1218
+10c2a d 1548 1218
+10c37 7 1549 1218
+10c3e 5 1550 1218
+10c43 4 1551 1218
+10c47 5 1553 1218
+10c4c 8 1543 1218
+10c54 7 1544 1218
+10c5b 5 1557 1218
+10c60 34 1378 1218
+10c94 9 1908 1218
+10c9d 9 1910 1218
+10ca6 8 1668 1218
+10cae d 1688 1218
+10cbb 6 1702 1218
+10cc1 7 1703 1218
+10cc8 2 1704 1218
+10cca 5 1706 1218
+10ccf 7 1708 1218
+10cd6 5 1710 1218
+10cdb 4 1864 1218
+10cdf 7 1869 1218
+10ce6 c 1933 1218
+10cf2 8 1939 1218
+10cfa 5 1958 1218
+10cff 7 1751 1218
+10d06 9 1752 1218
+10d0f 5 1753 1218
+10d14 3 1754 1218
+10d17 9 1756 1218
+10d20 f 1759 1218
+10d2f 2 1760 1218
+10d31 15 1765 1218
+10d46 8 1767 1218
+10d4e e 1809 1218
+10d5c 27 1828 1218
+10d83 14 1838 1218
+10d97 15 1840 1218
+10dac a 1844 1218
+10db6 15 1846 1218
+10dcb 5 1852 1218
+10dd0 7 1853 1218
+10dd7 4 1854 1218
+10ddb 1 1857 1218
+10ddc 5 1859 1218
+10de1 3 1877 1218
+10de4 3 1887 1218
+10de7 2 1888 1218
+10de9 1a 1378 1218
+10e03 7 1892 1218
+10e0a 11 1897 1218
+10e1b c 1900 1218
+10e27 7 1901 1218
+10e2e 5 1903 1218
+10e33 5 1961 1218
+10e38 6 1987 1218
+10e3e 14 2026 1218
+10e52 2 2045 1218
+10e54 5 2051 1218
+10e59 2 2071 1218
+10e5b 3 2074 1218
+10e5e 6 2080 1218
+10e64 2 2099 1218
+10e66 5 2105 1218
+10e6b f 2128 1218
+10e7a 7 2129 1218
+10e81 7 2130 1218
+10e88 c 2136 1218
+10e94 2 2142 1218
+10e96 6 2148 1218
+10e9c 7 2149 1218
+10ea3 2 2150 1218
+10ea5 4 2151 1218
+10ea9 a 2152 1218
+10eb3 3 2153 1218
+10eb6 6 2157 1218
+10ebc 3 2158 1218
+10ebf 6 2163 1218
+10ec5 10 2165 1218
+10ed5 10 2166 1218
+10ee5 c 2168 1218
+10ef1 3 2170 1218
+10ef4 3 2172 1218
+10ef7 2 2173 1218
+10ef9 8 2175 1218
+10f01 1 2176 1218
+10f02 19 2180 1218
+10f1b 9 2181 1218
+10f24 1 2182 1218
+10f25 2 2185 1218
+10f27 7 1640 1218
+10f2e 2 1641 1218
+10f30 4 1640 1218
+10f34 5 1642 1218
+10f39 2 1644 1218
+10f3b 4 1645 1218
+10f3f 8 1646 1218
+10f47 5 1647 1218
+10f4c 6 1648 1218
+10f52 1 1649 1218
+10f53 4 1648 1218
+10f57 6 1650 1218
+10f5d a 2201 1218
+10f67 7 2204 1218
+10f6e 6 2205 1218
+10f74 4 2207 1218
+10f78 2 2208 1218
+10f7a 4 2210 1218
+10f7e 4 2212 1218
+10f82 2 2213 1218
+10f84 4 2215 1218
+10f88 4 2217 1218
+10f8c 7 2218 1218
+10f93 9 2224 1218
+10f9c 6 2228 1218
+10fa2 11 2230 1218
+10fb3 11 2234 1218
+10fc4 d 2236 1218
+10fd1 f 2238 1218
+10fe0 d 2243 1218
+10fed 3 2249 1218
+10ff0 3 2250 1218
+10ff3 1e 2252 1218
+11011 9 2253 1218
+1101a 18 2257 1218
+11032 2 1690 1218
+11034 4 2254 1218
+11038 2 2259 1218
+1103a d 2260 1218
+11047 c 2290 1218
+11053 f 2292 1218
+11062 6 2297 1218
+11068 8 2298 1218
+11070 1b 2299 1218
+1108b 17 1125 1218
+110a2 2 1690 1218
+110a4 f 2310 1218
+110b3 10 2376 1218
+110c3 39 2377 1218
+FUNC 110fc 129 10 _validate_param_reuseA
+110fc 3 606 1271
+110ff 1c 610 1271
+1111b f 617 1271
+1112a 11 618 1271
+1113b 10 620 1271
+1114b 36 629 1271
+11181 46 632 1271
+111c7 2 633 1271
+111c9 17 639 1271
+111e0 c 645 1271
+111ec 2c 626 1271
+11218 b 614 1271
+11223 2 646 1271
+FUNC 11225 33 0 write_char
+11225 0 2433 1271
+11225 a 2434 1271
+1122f 2 2437 1271
+11231 21 2442 1271
+11252 2 2444 1271
+11254 1 2447 1271
+11255 2 2446 1271
+11257 1 2447 1271
+FUNC 11258 24 c write_multi_char
+11258 6 2498 1271
+1125e 2 2501 1271
+11260 e 2500 1271
+1126e 5 2501 1271
+11273 7 2499 1271
+1127a 2 2504 1271
+FUNC 1127c 4a 4 write_string
+1127c 0 2563 1271
+1127c 12 2564 1271
+1128e 6 2566 1271
+11294 2 2567 1271
+11296 e 2570 1271
+112a4 5 2571 1271
+112a9 a 2573 1271
+112b3 9 2574 1271
+112bc 9 2569 1271
+112c5 1 2579 1271
+FUNC 112c6 10 4 get_crtdouble_arg
+112c6 0 2684 1271
+112c6 f 2685 1271
+112d5 1 2686 1271
+FUNC 112d6 f88 10 _output_p_l
+112d6 1b 975 1271
+112f1 15 986 1271
+11306 b 1007 1271
+11311 2b 2172 1271
+1133c 2c 1031 1271
+11368 9b 1033 1271
+11403 8 1036 1271
+1140b 3 1038 1271
+1140e 3 1041 1271
+11411 3 1043 1271
+11414 11 1046 1271
+11425 7 1061 1271
+1142c 4 1062 1271
+11430 7 1069 1271
+11437 32 1073 1271
+11469 19 1078 1271
+11482 e 1079 1271
+11490 1a 1082 1271
+114aa 6 1084 1271
+114b0 1b 1087 1271
+114cb 5 1089 1271
+114d0 15 1091 1271
+114e5 3 1093 1271
+114e8 2 1095 1271
+114ea 6 1097 1271
+114f0 5 1101 1271
+114f5 c 1103 1271
+11501 7 1104 1271
+11508 e 1106 1271
+11516 1a 1109 1271
+11530 8 1112 1271
+11538 f 1131 1271
+11547 9 1120 1271
+11550 b 1131 1271
+1155b 21 1137 1271
+1157c 5 1145 1271
+11581 16 1173 1271
+11597 3 1174 1271
+1159a 5 1175 1271
+1159f 1f 1179 1271
+115be 7 1193 1271
+115c5 5 1194 1271
+115ca 7 1181 1271
+115d1 5 1182 1271
+115d6 6 1184 1271
+115dc 5 1185 1271
+115e1 a 1190 1271
+115eb 5 1191 1271
+115f0 7 1187 1271
+115f7 5 1196 1271
+115fc 9 1200 1271
+11605 5 1203 1271
+1160a a 1206 1271
+11614 2 1209 1271
+11616 c 1211 1271
+11622 7 1212 1271
+11629 b 1214 1271
+11634 1b 1216 1271
+1164f 8 1219 1271
+11657 12 1221 1271
+11669 9 1274 1271
+11672 5 1275 1271
+11677 c 1228 1271
+11683 b 1233 1271
+1168e 7 1235 1271
+11695 3 1236 1271
+11698 5 1239 1271
+1169d 10 1241 1271
+116ad 5 1243 1271
+116b2 3 1248 1271
+116b5 5 1249 1271
+116ba 5 1253 1271
+116bf 5 1256 1271
+116c4 a 1259 1271
+116ce 2 1262 1271
+116d0 c 1264 1271
+116dc 7 1265 1271
+116e3 f 1267 1271
+116f2 c 1280 1271
+116fe b 1284 1271
+11709 4 1285 1271
+1170d 5 1287 1271
+11712 1c 1274 1271
+1172e 10 1289 1271
+1173e 5 1291 1271
+11743 18 1295 1271
+1175b a 1362 1271
+11765 5 1363 1271
+1176a 5 1301 1271
+1176f 1 1303 1271
+11770 d 1304 1271
+1177d 5 1306 1271
+11782 7 1308 1271
+11789 5 1310 1271
+1178e 7 1358 1271
+11795 5 1359 1271
+1179a c 1322 1271
+117a6 2 1324 1271
+117a8 12 1325 1271
+117ba a 1327 1271
+117c4 2 1329 1271
+117c6 d 1330 1271
+117d3 5 1332 1271
+117d8 18 1337 1271
+117f0 3 1352 1271
+117f3 13 1158 1271
+11806 11 1160 1271
+11817 8 1161 1271
+1181f 8 1163 1271
+11827 b 1166 1271
+11832 5 1167 1271
+11837 a 1342 1271
+11841 5 1366 1271
+11846 39 1378 1271
+1187f 9 1716 1271
+11888 7 1724 1271
+1188f 12 1726 1271
+118a1 a 1728 1271
+118ab 27 1739 1271
+118d2 b 1381 1271
+118dd c 1385 1271
+118e9 b 1561 1271
+118f4 a 1562 1271
+118fe d 1584 1271
+1190b 9 1586 1271
+11914 a 1589 1271
+1191e 5 1592 1271
+11923 25 1378 1271
+11948 b 1442 1271
+11953 5 1445 1271
+11958 b 1448 1271
+11963 2 1451 1271
+11965 a 1453 1271
+1196f 27 1457 1271
+11996 5 1458 1271
+1199b a 1462 1271
+119a5 19 1467 1271
+119be 4 1470 1271
+119c2 3 1471 1271
+119c5 2 1472 1271
+119c7 5 1477 1271
+119cc b 1480 1271
+119d7 2 1483 1271
+119d9 a 1485 1271
+119e3 f 1489 1271
+119f2 a 1494 1271
+119fc 6 1499 1271
+11a02 3 1500 1271
+11a05 9 1503 1271
+11a0e 5 1506 1271
+11a13 5 1520 1271
+11a18 a 1523 1271
+11a22 2 1526 1271
+11a24 a 1528 1271
+11a2e 9 1532 1271
+11a37 6 1533 1271
+11a3d 9 1537 1271
+11a46 b 1541 1271
+11a51 9 1546 1271
+11a5a d 1548 1271
+11a67 3 1549 1271
+11a6a 5 1550 1271
+11a6f 3 1551 1271
+11a72 5 1553 1271
+11a77 8 1543 1271
+11a7f 7 1544 1271
+11a86 5 1557 1271
+11a8b 38 1378 1271
+11ac3 14 1908 1271
+11ad7 f 1910 1271
+11ae6 5 1665 1271
+11aeb a 1668 1271
+11af5 2 1671 1271
+11af7 a 1673 1271
+11b01 25 1677 1271
+11b26 5 1678 1271
+11b2b 9 1682 1271
+11b34 9 1688 1271
+11b3d 9 1702 1271
+11b46 7 1703 1271
+11b4d 2 1704 1271
+11b4f 5 1706 1271
+11b54 3 1708 1271
+11b57 5 1710 1271
+11b5c 7 1864 1271
+11b63 7 1869 1271
+11b6a f 1933 1271
+11b79 9 1936 1271
+11b82 e 1939 1271
+11b90 5 1942 1271
+11b95 1c 1739 1271
+11bb1 21 1109 1271
+11bd2 16 1749 1271
+11be8 9 1750 1271
+11bf1 7 1751 1271
+11bf8 3 1767 1271
+11bfb 5 1806 1271
+11c00 9 1809 1271
+11c09 2 1812 1271
+11c0b 5 1753 1271
+11c10 3 1754 1271
+11c13 a 1756 1271
+11c1d f 1759 1271
+11c2c 2 1760 1271
+11c2e 11 1765 1271
+11c3f a 1818 1271
+11c49 6 1821 1271
+11c4f 16 1822 1271
+11c65 26 1828 1271
+11c8b 16 1838 1271
+11ca1 17 1840 1271
+11cb8 a 1844 1271
+11cc2 17 1846 1271
+11cd9 8 1852 1271
+11ce1 a 1853 1271
+11ceb 3 1854 1271
+11cee 3 1857 1271
+11cf1 5 1859 1271
+11cf6 7 1877 1271
+11cfd 7 1887 1271
+11d04 2 1888 1271
+11d06 1a 1378 1271
+11d20 7 1892 1271
+11d27 14 1897 1271
+11d3b c 1900 1271
+11d47 7 1901 1271
+11d4e 5 1903 1271
+11d53 a 1944 1271
+11d5d 2c 1948 1271
+11d89 5 1949 1271
+11d8e 6 1961 1271
+11d94 3 1964 1271
+11d97 6 1970 1271
+11d9d a 1972 1271
+11da7 2c 1976 1271
+11dd3 5 1977 1271
+11dd8 c 1981 1271
+11de4 5 1987 1271
+11de9 4 2019 1271
+11ded 4 2020 1271
+11df1 5 2023 1271
+11df6 b 2026 1271
+11e01 5 2029 1271
+11e06 a 2031 1271
+11e10 f 2035 1271
+11e1f a 2040 1271
+11e29 2 2045 1271
+11e2b 5 2048 1271
+11e30 b 2051 1271
+11e3b 2 2054 1271
+11e3d a 2056 1271
+11e47 b 2060 1271
+11e52 a 2065 1271
+11e5c 2 2071 1271
+11e5e 4 2074 1271
+11e62 5 2077 1271
+11e67 a 2080 1271
+11e71 2 2083 1271
+11e73 a 2085 1271
+11e7d b 2089 1271
+11e88 a 2094 1271
+11e92 2 2099 1271
+11e94 5 2102 1271
+11e99 a 2105 1271
+11ea3 2 2108 1271
+11ea5 a 2110 1271
+11eaf 38 2114 1271
+11ee7 5 2115 1271
+11eec b 2119 1271
+11ef7 13 2128 1271
+11f0a 7 2129 1271
+11f11 a 2130 1271
+11f1b f 2136 1271
+11f2a 2 2142 1271
+11f2c 6 2148 1271
+11f32 7 2149 1271
+11f39 2 2150 1271
+11f3b 7 2151 1271
+11f42 a 2152 1271
+11f4c 3 2153 1271
+11f4f 6 2157 1271
+11f55 3 2158 1271
+11f58 6 2163 1271
+11f5e 10 2165 1271
+11f6e 10 2166 1271
+11f7e c 2168 1271
+11f8a 3 2170 1271
+11f8d 3 2172 1271
+11f90 2 2173 1271
+11f92 8 2175 1271
+11f9a 1 2176 1271
+11f9b 24 2180 1271
+11fbf 9 2181 1271
+11fc8 1 2182 1271
+11fc9 5 2185 1271
+11fce c 1594 1271
+11fda c 1598 1271
+11fe6 9 1603 1271
+11fef e 1635 1271
+11ffd 4 1636 1271
+12001 8 1637 1271
+12009 8 1639 1271
+12011 1c 1598 1271
+1202d 6 1640 1271
+12033 2 1641 1271
+12035 4 1640 1271
+12039 5 1642 1271
+1203e 2 1644 1271
+12040 5 1645 1271
+12045 8 1646 1271
+1204d 5 1647 1271
+12052 6 1648 1271
+12058 1 1649 1271
+12059 4 1648 1271
+1205d 6 1650 1271
+12063 10 2189 1271
+12073 a 2201 1271
+1207d a 2204 1271
+12087 6 2205 1271
+1208d 4 2207 1271
+12091 2 2208 1271
+12093 4 2210 1271
+12097 4 2212 1271
+1209b 2 2213 1271
+1209d 4 2215 1271
+120a1 4 2217 1271
+120a5 7 2218 1271
+120ac 9 2224 1271
+120b5 4 2228 1271
+120b9 11 2230 1271
+120ca 11 2234 1271
+120db 13 2236 1271
+120ee f 2238 1271
+120fd d 2243 1271
+1210a 3 2249 1271
+1210d 3 2250 1271
+12110 1e 2252 1271
+1212e 9 2253 1271
+12137 18 2257 1271
+1214f 2 2310 1271
+12151 4 2254 1271
+12155 2 2259 1271
+12157 d 2260 1271
+12164 f 2290 1271
+12173 f 2292 1271
+12182 6 2297 1271
+12188 8 2298 1271
+12190 15 2299 1271
+121a5 2 1073 1271
+121a7 f 2310 1271
+121b6 b 2314 1271
+121c1 10 2319 1271
+121d1 1d 2321 1271
+121ee 2 2360 1271
+121f0 3 2361 1271
+121f3 2 2362 1271
+121f5 2 2324 1271
+121f7 f 2325 1271
+12206 10 1043 1271
+12216 10 2376 1271
+12226 38 2377 1271
+FUNC 1225e c2 4 _putwch_nolock
+1225e 11 84 4721
+1226f a 89 4721
+12279 9 91 4721
+12282 5 92 4721
+12287 a 96 4721
+12291 6 97 4721
+12297 16 103 4721
+122ad 14 105 4721
+122c1 6 106 4721
+122c7 1c 123 4721
+122e3 1e 129 4721
+12301 2 131 4721
+12303 4 133 4721
+12307 d 134 4721
+12314 a 110 4721
+1231e 2 113 4721
+FUNC 12320 9b 4 _cputws
+12320 c 151 4721
+1232c 5 153 4721
+12331 30 155 4721
+12361 b 157 4721
+1236c 9 158 4721
+12375 3 159 4721
+12378 a 160 4721
+12382 17 162 4721
+12399 4 164 4721
+1239d c 169 4721
+123a9 3 172 4721
+123ac 6 173 4721
+123b2 9 170 4721
+FUNC 123bb 46 4 _putwch
+123bb c 49 4721
+123c7 8 52 4721
+123cf 4 53 4721
+123d3 f 55 4721
+123e2 c 58 4721
+123ee 4 62 4721
+123f2 6 63 4721
+123f8 9 59 4721
+FUNC 12401 113 10 _mbtowc_l
+12401 8 55 6355
+12409 e 56 6355
+12417 4 61 6355
+1241b 7 64 6355
+12422 3 65 6355
+12425 4 59 6355
+12429 2 116 6355
+1242b b 70 6355
+12436 8 73 6355
+1243e 7 75 6355
+12445 7 76 6355
+1244c 11 77 6355
+1245d 13 80 6355
+12470 33 90 6355
+124a3 10 93 6355
+124b3 1b 99 6355
+124ce b 95 6355
+124d9 14 96 6355
+124ed 25 108 6355
+12512 2 111 6355
+FUNC 12514 17 c mbtowc
+12514 0 123 6355
+12514 16 124 6355
+1252a 1 125 6355
+FUNC 1252b 83 10 _lseeki64_nolock
+1252b 5 120 4872
+12530 4 126 4872
+12534 1b 134 4872
+1254f b 136 4872
+1255a 6 138 4872
+12560 22 146 4872
+12582 7 148 4872
+12589 2 149 4872
+1258b 19 152 4872
+125a4 8 153 4872
+125ac 2 154 4872
+FUNC 125ae 119 10 _lseeki64
+125ae c 73 4872
+125ba 9 74 4872
+125c3 24 77 4872
+125e7 2f 78 4872
+12616 46 79 4872
+1265c 7 81 4872
+12663 3 82 4872
+12666 9 84 4872
+1266f 1a 85 4872
+12689 2 86 4872
+1268b b 87 4872
+12696 7 88 4872
+1269d 8 89 4872
+126a5 c 93 4872
+126b1 6 97 4872
+126b7 6 98 4872
+126bd a 94 4872
+FUNC 126c7 7d 8 _set_osfhnd
+126c7 0 213 4825
+126c7 2e 216 4825
+126f5 e 217 4825
+12703 b 218 4825
+1270e 3 226 4825
+12711 2 227 4825
+12713 3 223 4825
+12716 2 224 4825
+12718 9 220 4825
+12721 5 231 4825
+12726 5 232 4825
+1272b b 234 4825
+12736 8 235 4825
+1273e 5 236 4825
+12743 1 238 4825
+FUNC 12744 81 4 _free_osfhnd
+12744 0 263 4825
+12744 38 266 4825
+1277c 9 268 4825
+12785 a 269 4825
+1278f 3 277 4825
+12792 2 278 4825
+12794 3 274 4825
+12797 2 275 4825
+12799 9 271 4825
+127a2 6 282 4825
+127a8 4 283 4825
+127ac b 285 4825
+127b7 7 286 4825
+127be 6 287 4825
+127c4 1 289 4825
+FUNC 127c5 71 4 _get_osfhandle
+127c5 0 312 4825
+127c5 1f 313 4825
+127e4 2 318 4825
+127e6 e 314 4825
+127f4 3d 315 4825
+12831 1 318 4825
+12832 3 317 4825
+12835 1 318 4825
+FUNC 12836 a0 4 __lock_fhandle
+12836 c 437 4825
+12842 17 438 4825
+12859 7 439 4825
+12860 7 444 4825
+12867 8 446 4825
+1286f 3 447 4825
+12872 5 448 4825
+12877 14 449 4825
+1288b 3 453 4825
+1288e 3 455 4825
+12891 c 457 4825
+1289d 5 462 4825
+128a2 1d 464 4825
+128bf 3 467 4825
+128c2 6 468 4825
+128c8 5 457 4825
+128cd 9 458 4825
+FUNC 128d6 22 4 _unlock_fhandle
+128d6 0 489 4825
+128d6 21 490 4825
+128f7 1 491 4825
+FUNC 128f8 19f 0 _alloc_osfhnd
+128f8 c 52 4825
+12904 4 53 4825
+12908 5 56 4825
+1290d c 58 4825
+12919 8 59 4825
+12921 8 61 4825
+12929 3 62 4825
+1292c c 71 4825
+12938 f 77 4825
+12947 17 83 4825
+1295e 6 85 4825
+12964 6 89 4825
+1296a 8 90 4825
+12972 6 91 4825
+12978 6 92 4825
+1297e 14 93 4825
+12992 3 99 4825
+12995 2 101 4825
+12997 3 103 4825
+1299a 9 106 4825
+129a3 6 111 4825
+129a9 a 113 4825
+129b3 6 119 4825
+129b9 7 120 4825
+129c0 5 83 4825
+129c5 6 106 4825
+129cb 9 107 4825
+129d4 6 124 4825
+129da 4 126 4825
+129de 3 127 4825
+129e1 19 128 4825
+129fa 6 137 4825
+12a00 6 71 4825
+12a06 12 145 4825
+12a18 9 151 4825
+12a21 7 152 4825
+12a28 c 154 4825
+12a34 4 155 4825
+12a38 3 156 4825
+12a3b 4 157 4825
+12a3f 4 158 4825
+12a43 8 154 4825
+12a4b 6 165 4825
+12a51 19 166 4825
+12a6a b 167 4825
+12a75 4 171 4825
+12a79 c 178 4825
+12a85 3 186 4825
+12a88 6 187 4825
+12a8e 9 179 4825
+FUNC 12a97 115 8 _open_osfhandle
+12a97 c 343 4825
+12aa3 5 347 4825
+12aa8 2 351 4825
+12aaa 6 353 4825
+12ab0 3 354 4825
+12ab3 8 356 4825
+12abb 3 357 4825
+12abe 6 359 4825
+12ac4 3 360 4825
+12ac7 9 364 4825
+12ad0 4 365 4825
+12ad4 d 367 4825
+12ae1 3 409 4825
+12ae4 6 410 4825
+12aea 5 372 4825
+12aef 5 373 4825
+12af4 5 374 4825
+12af9 3 375 4825
+12afc f 380 4825
+12b0b b 381 4825
+12b16 7 382 4825
+12b1d 2 383 4825
+12b1f 3 385 4825
+12b22 b 391 4825
+12b2d 3 393 4825
+12b30 1a 395 4825
+12b4a 9 396 4825
+12b53 9 397 4825
+12b5c 7 399 4825
+12b63 c 401 4825
+12b6f 10 409 4825
+12b7f 5 401 4825
+12b84 5 402 4825
+12b89 1b 404 4825
+12ba4 8 406 4825
+FUNC 12bac 11e c _calloc_impl
+12bac c 23 5592
+12bb8 9 28 5592
+12bc1 2e 30 5592
+12bef 9 32 5592
+12bf8 4 36 5592
+12bfc 3 37 5592
+12bff 5 41 5592
+12c04 5 43 5592
+12c09 9 46 5592
+12c12 9 50 5592
+12c1b b 52 5592
+12c26 8 56 5592
+12c2e 3 57 5592
+12c31 c 58 5592
+12c3d c 60 5592
+12c49 7 64 5592
+12c50 d 65 5592
+12c5d 4 93 5592
+12c61 11 94 5592
+12c72 c 97 5592
+12c7e f 109 5592
+12c8d b 111 5592
+12c98 6 112 5592
+12c9e 5 113 5592
+12ca3 5 60 5592
+12ca8 9 61 5592
+12cb1 4 100 5592
+12cb5 7 102 5592
+12cbc 6 103 5592
+12cc2 2 105 5592
+12cc4 6 119 5592
+FUNC 12cca 3f 8 calloc
+12cca 4 145 5592
+12cce 5 146 5592
+12cd3 14 147 5592
+12ce7 15 149 5592
+12cfc 8 151 5592
+12d04 3 153 5592
+12d07 2 154 5592
+FUNC 12d09 21b 8 realloc
+12d09 c 64 5338
+12d15 7 69 5338
+12d1c e 70 5338
+12d2a 7 73 5338
+12d31 7 75 5338
+12d38 5 76 5338
+12d3d d 81 5338
+12d4a 5 88 5338
+12d4f 9 89 5338
+12d58 8 91 5338
+12d60 3 92 5338
+12d63 12 96 5338
+12d75 8 100 5338
+12d7d f 102 5338
+12d8c 5 103 5338
+12d91 e 104 5338
+12d9f 4 107 5338
+12da3 10 108 5338
+12db3 9 110 5338
+12dbc a 111 5338
+12dc6 5 118 5338
+12dcb 4 120 5338
+12dcf 6 121 5338
+12dd5 9 123 5338
+12dde 15 124 5338
+12df3 4 127 5338
+12df7 10 128 5338
+12e07 c 129 5338
+12e13 c 135 5338
+12e1f 6 142 5338
+12e25 4 144 5338
+12e29 1 145 5338
+12e2a 9 147 5338
+12e33 14 148 5338
+12e47 6 135 5338
+12e4d 9 137 5338
+12e56 3 148 5338
+12e59 10 158 5338
+12e69 f 181 5338
+12e78 5 186 5338
+12e7d 5 183 5338
+12e82 11 186 5338
+12e93 2 188 5338
+12e95 8 160 5338
+12e9d 5 170 5338
+12ea2 3 167 5338
+12ea5 2 172 5338
+12ea7 6 174 5338
+12ead 2 155 5338
+12eaf 4 321 5338
+12eb3 1 322 5338
+12eb4 12 323 5338
+12ec6 c 332 5338
+12ed2 b 347 5338
+12edd 5 319 5338
+12ee2 7 327 5338
+12ee9 b 328 5338
+12ef4 2 329 5338
+12ef6 6 356 5338
+12efc 5 349 5338
+12f01 5 350 5338
+12f06 4 334 5338
+12f0a 16 341 5338
+12f20 4 343 5338
+FUNC 12f24 79 c _recalloc
+12f24 3 744 5338
+12f27 a 749 5338
+12f31 28 751 5338
+12f59 4 753 5338
+12f5d 9 754 5338
+12f66 b 755 5338
+12f71 b 756 5338
+12f7c a 757 5338
+12f86 10 759 5338
+12f96 5 761 5338
+12f9b 2 762 5338
+FUNC 12f9d 21 0 _get_sbh_threshold
+12f9d 0 61 5281
+12f9d 9 64 5281
+12fa6 2 66 5281
+12fa8 1 81 5281
+12fa9 14 69 5281
+12fbd 1 81 5281
+FUNC 12fbe 46 4 _set_amblksiz
+12fbe 0 214 5281
+12fbe 2b 216 5281
+12fe9 1 224 5281
+12fea 11 217 5281
+12ffb 5 220 5281
+13000 3 223 5281
+13003 1 224 5281
+FUNC 13004 3c 4 _get_amblksiz
+13004 0 243 5281
+13004 27 245 5281
+1302b 1 253 5281
+1302c 8 246 5281
+13034 8 249 5281
+1303c 3 252 5281
+1303f 1 253 5281
+FUNC 13040 48 4 __sbh_heap_init
+13040 0 274 5281
+13040 1c 275 5281
+1305c 1 285 5281
+1305d 4 278 5281
+13061 7 280 5281
+13068 c 281 5281
+13074 13 284 5281
+13087 1 285 5281
+FUNC 13088 2b 4 __sbh_find_block
+13088 0 306 5281
+13088 12 307 5281
+1309a 7 316 5281
+130a1 8 317 5281
+130a9 3 319 5281
+130ac 4 314 5281
+130b0 2 321 5281
+130b2 1 322 5281
+FUNC 130b3 314 8 __sbh_free_block
+130b3 6 381 5281
+130b9 7 399 5281
+130c0 9 402 5281
+130c9 18 407 5281
+130e1 3 408 5281
+130e4 d 412 5281
+130f1 3 416 5281
+130f4 5 417 5281
+130f9 6 420 5281
+130ff b 424 5281
+1310a 4 429 5281
+1310e 5 430 5281
+13113 3 431 5281
+13116 8 434 5281
+1311e 3 439 5281
+13121 b 441 5281
+1312c e 442 5281
+1313a 5 443 5281
+1313f 2 445 5281
+13141 5 448 5281
+13146 11 449 5281
+13157 9 450 5281
+13160 9 455 5281
+13169 15 459 5281
+1317e 6 463 5281
+13184 5 464 5281
+13189 3 465 5281
+1318c f 468 5281
+1319b 3 474 5281
+1319e 6 477 5281
+131a4 b 478 5281
+131af 2 479 5281
+131b1 3 483 5281
+131b4 6 484 5281
+131ba 7 485 5281
+131c1 2 486 5281
+131c3 4 489 5281
+131c7 b 493 5281
+131d2 3 498 5281
+131d5 11 501 5281
+131e6 6 502 5281
+131ec 5 503 5281
+131f1 2 505 5281
+131f3 e 508 5281
+13201 6 509 5281
+13207 6 511 5281
+1320d c 516 5281
+13219 c 517 5281
+13225 8 520 5281
+1322d e 524 5281
+1323b 6 528 5281
+13241 3 529 5281
+13244 6 530 5281
+1324a 3 531 5281
+1324d 6 532 5281
+13253 8 535 5281
+1325b 18 541 5281
+13273 e 542 5281
+13281 f 543 5281
+13290 2 545 5281
+13292 6 547 5281
+13298 10 548 5281
+132a8 13 550 5281
+132bb 5 556 5281
+132c0 4 558 5281
+132c4 b 561 5281
+132cf d 564 5281
+132dc 6 568 5281
+132e2 1a 569 5281
+132fc 15 573 5281
+13311 16 577 5281
+13327 19 578 5281
+13340 9 579 5281
+13349 6 583 5281
+1334f 8 586 5281
+13357 16 589 5281
+1336d 25 595 5281
+13392 14 599 5281
+133a6 4 600 5281
+133aa a 603 5281
+133b4 8 608 5281
+133bc 9 609 5281
+133c5 2 611 5281
+FUNC 133c7 b0 0 __sbh_alloc_new_region
+133c7 0 891 5281
+133c7 13 897 5281
+133da 1e 900 5281
+133f8 4 901 5281
+133fc 12 905 5281
+1340e 9 909 5281
+13417 18 913 5281
+1342f 2 914 5281
+13431 1a 918 5281
+1344b 10 920 5281
+1345b 2 921 5281
+1345d 9 927 5281
+13466 6 930 5281
+1346c 6 933 5281
+13472 4 935 5281
+13476 1 936 5281
+FUNC 13477 106 4 __sbh_alloc_new_group
+13477 5 958 5281
+1347c 3 959 5281
+1347f 9 972 5281
+13488 4 973 5281
+1348c 2 976 5281
+1348e 1 977 5281
+1348f 4 974 5281
+13493 15 981 5281
+134a8 c 986 5281
+134b4 1f 993 5281
+134d3 8 994 5281
+134db 6 998 5281
+134e1 12 1001 5281
+134f3 4 1004 5281
+134f7 7 1005 5281
+134fe 8 1011 5281
+13506 10 1013 5281
+13516 12 1016 5281
+13528 3 1001 5281
+1352b 8 1021 5281
+13533 6 1023 5281
+13539 3 1024 5281
+1353c 6 1027 5281
+13542 3 1028 5281
+13545 5 1030 5281
+1354a a 1031 5281
+13554 9 1032 5281
+1355d b 1033 5281
+13568 e 1036 5281
+13576 5 1038 5281
+1357b 2 1039 5281
+FUNC 1357d 2df c __sbh_resize_block
+1357d 6 1061 5281
+13583 c 1080 5281
+1358f b 1083 5281
+1359a 3 1084 5281
+1359d 12 1085 5281
+135af 7 1089 5281
+135b6 14 1096 5281
+135ca 13 1099 5281
+135dd 7 1105 5281
+135e4 8 1106 5281
+135ec 6 1107 5281
+135f2 8 1110 5281
+135fa 3 1115 5281
+135fd 9 1117 5281
+13606 11 1118 5281
+13617 5 1119 5281
+1361c 2 1121 5281
+1361e 5 1124 5281
+13623 14 1125 5281
+13637 6 1126 5281
+1363d 9 1131 5281
+13646 9 1132 5281
+1364f 12 1135 5281
+13661 a 1141 5281
+1366b 9 1142 5281
+13674 3 1143 5281
+13677 9 1147 5281
+13680 6 1148 5281
+13686 6 1149 5281
+1368c 3 1150 5281
+1368f 6 1151 5281
+13695 8 1154 5281
+1369d 18 1160 5281
+136b5 e 1161 5281
+136c3 6 1162 5281
+136c9 2 1164 5281
+136cb 6 1166 5281
+136d1 10 1167 5281
+136e1 13 1169 5281
+136f4 c 1174 5281
+13700 9 1176 5281
+13709 6 1180 5281
+1370f 9 1182 5281
+13718 7 1100 5281
+1371f 6 1186 5281
+13725 3 1189 5281
+13728 d 1195 5281
+13735 7 1198 5281
+1373c b 1199 5281
+13747 3 1200 5281
+1374a a 1203 5281
+13754 7 1208 5281
+1375b 5 1209 5281
+13760 3 1210 5281
+13763 8 1213 5281
+1376b 3 1218 5281
+1376e b 1221 5281
+13779 e 1222 5281
+13787 5 1223 5281
+1378c 2 1225 5281
+1378e 5 1228 5281
+13793 11 1229 5281
+137a4 9 1231 5281
+137ad 9 1236 5281
+137b6 9 1237 5281
+137bf 9 1240 5281
+137c8 4 1241 5281
+137cc 5 1242 5281
+137d1 3 1243 5281
+137d4 6 1249 5281
+137da 3 1250 5281
+137dd 6 1251 5281
+137e3 3 1252 5281
+137e6 6 1253 5281
+137ec 8 1256 5281
+137f4 18 1262 5281
+1380c e 1263 5281
+1381a 6 1264 5281
+13820 2 1266 5281
+13822 6 1268 5281
+13828 10 1269 5281
+13838 13 1271 5281
+1384b 5 1276 5281
+13850 4 1278 5281
+13854 6 1281 5281
+1385a 2 1282 5281
+FUNC 1385c cd 0 __sbh_heapmin
+1385c 0 1302 5281
+1385c d 1306 5281
+13869 6 1310 5281
+1386f 17 1311 5281
+13886 15 1314 5281
+1389b 16 1318 5281
+138b1 19 1319 5281
+138ca 9 1320 5281
+138d3 f 1325 5281
+138e2 11 1328 5281
+138f3 28 1333 5281
+1391b 6 1334 5281
+13921 7 1338 5281
+13928 1 1340 5281
+FUNC 13929 2e2 0 __sbh_heap_check
+13929 3 1361 5281
+1392c 12 1391 5281
+1393e 8 1393 5281
+13946 16 1398 5281
+1395c 3 1401 5281
+1395f 8 1402 5281
+13967 6 1406 5281
+1396d 9 1407 5281
+13976 c 1408 5281
+13982 3 1409 5281
+13985 3 1410 5281
+13988 6 1411 5281
+1398e 4 1418 5281
+13992 1b 1421 5281
+139ad 9 1424 5281
+139b6 9 1428 5281
+139bf 1c 1438 5281
+139db 2 1445 5281
+139dd 7 1446 5281
+139e4 1 1449 5281
+139e5 c 1452 5281
+139f1 3 1456 5281
+139f4 2 1458 5281
+139f6 6 1462 5281
+139fc 5 1463 5281
+13a01 3 1464 5281
+13a04 9 1465 5281
+13a0d 1e 1470 5281
+13a2b c 1475 5281
+13a37 2 1479 5281
+13a39 4 1481 5281
+13a3d 6 1484 5281
+13a43 10 1488 5281
+13a53 e 1492 5281
+13a61 2 1498 5281
+13a63 4 1502 5281
+13a67 20 1505 5281
+13a87 19 1509 5281
+13aa0 8 1514 5281
+13aa8 3 1518 5281
+13aab 6 1520 5281
+13ab1 8 1524 5281
+13ab9 4 1527 5281
+13abd e 1532 5281
+13acb 8 1536 5281
+13ad3 6 1541 5281
+13ad9 5 1542 5281
+13ade 3 1543 5281
+13ae1 8 1544 5281
+13ae9 c 1549 5281
+13af5 11 1554 5281
+13b06 6 1559 5281
+13b0c 3 1561 5281
+13b0f e 1563 5281
+13b1d 3 1564 5281
+13b20 2 1566 5281
+13b22 8 1568 5281
+13b2a 3 1569 5281
+13b2d 1c 1575 5281
+13b49 c 1580 5281
+13b55 10 1585 5281
+13b65 17 1591 5281
+13b7c 7 1595 5281
+13b83 7 1596 5281
+13b8a 16 1597 5281
+13ba0 f 1602 5281
+13baf 18 1606 5281
+13bc7 5 1608 5281
+13bcc 2 1609 5281
+13bce 4 1403 5281
+13bd2 4 1425 5281
+13bd6 4 1453 5281
+13bda 4 1485 5281
+13bde 4 1471 5281
+13be2 4 1439 5281
+13be6 4 1493 5281
+13bea 4 1537 5281
+13bee 4 1545 5281
+13bf2 4 1550 5281
+13bf6 4 1510 5281
+13bfa 4 1581 5281
+13bfe 4 1576 5281
+13c02 4 1592 5281
+13c06 5 1603 5281
+FUNC 13c0b a8 4 _set_sbh_threshold
+13c0b 1 102 5281
+13c0c a 104 5281
+13c16 3 106 5281
+13c19 1 195 5281
+13c1a a 109 5281
+13c24 25 112 5281
+13c49 5 113 5281
+13c4e 4 114 5281
+13c52 2 195 5281
+13c54 6 173 5281
+13c5a 2 175 5281
+13c5c 5 179 5281
+13c61 2d 185 5281
+13c8e 6 186 5281
+13c94 a 187 5281
+13c9e 5 188 5281
+13ca3 b 193 5281
+13cae 4 194 5281
+13cb2 1 195 5281
+FUNC 13cb3 2e3 4 __sbh_alloc_block
+13cb3 6 632 5281
+13cb9 5 633 5281
+13cbe 15 650 5281
+13cd3 5 668 5281
+13cd8 7 669 5281
+13cdf 5 671 5281
+13ce4 4 672 5281
+13ce8 2 674 5281
+13cea d 677 5281
+13cf7 a 682 5281
+13d01 e 686 5281
+13d0f 3 688 5281
+13d12 2 683 5281
+13d14 5 688 5281
+13d19 4 692 5281
+13d1d 8 694 5281
+13d25 e 698 5281
+13d33 3 700 5281
+13d36 2 695 5281
+13d38 5 700 5281
+13d3d 6 705 5281
+13d43 6 709 5281
+13d49 6 711 5281
+13d4f 4 707 5281
+13d53 4 715 5281
+13d57 8 717 5281
+13d5f 6 720 5281
+13d65 3 722 5281
+13d68 2 718 5281
+13d6a 5 722 5281
+13d6f 4 726 5281
+13d73 e 727 5281
+13d81 7 728 5281
+13d88 12 733 5281
+13d9a 2 734 5281
+13d9c 6 737 5281
+13da2 3 739 5281
+13da5 2 740 5281
+13da7 1c 745 5281
+13dc3 4 749 5281
+13dc7 14 751 5281
+13ddb e 752 5281
+13de9 3 751 5281
+13dec 12 754 5281
+13dfe a 760 5281
+13e08 d 763 5281
+13e15 2 768 5281
+13e17 2 767 5281
+13e19 1 768 5281
+13e1a 4 765 5281
+13e1e 7 770 5281
+13e25 5 775 5281
+13e2a 6 776 5281
+13e30 8 777 5281
+13e38 3 778 5281
+13e3b 8 781 5281
+13e43 8 784 5281
+13e4b 3 788 5281
+13e4e e 791 5281
+13e5c 15 792 5281
+13e71 8 793 5281
+13e79 2 795 5281
+13e7b f 798 5281
+13e8a f 799 5281
+13e99 e 800 5281
+13ea7 1c 809 5281
+13ec3 6 813 5281
+13ec9 3 814 5281
+13ecc 6 815 5281
+13ed2 3 816 5281
+13ed5 6 817 5281
+13edb 8 820 5281
+13ee3 18 826 5281
+13efb b 827 5281
+13f06 10 829 5281
+13f16 2 831 5281
+13f18 6 833 5281
+13f1e d 835 5281
+13f2b 16 837 5281
+13f41 3 831 5281
+13f44 4 844 5281
+13f48 2 846 5281
+13f4a 9 848 5281
+13f53 a 853 5281
+13f5d 4 855 5281
+13f61 e 858 5281
+13f6f 13 862 5281
+13f82 7 863 5281
+13f89 5 866 5281
+13f8e 6 868 5281
+13f94 2 869 5281
+FUNC 13f96 72 4 _fclose_nolock
+13f96 2 86 1752
+13f98 2a 90 1752
+13fc2 6 96 1752
+13fc8 6 105 1752
+13fce 8 106 1752
+13fd6 13 108 1752
+13fe9 5 109 1752
+13fee 7 111 1752
+13ff5 7 120 1752
+13ffc 3 121 1752
+13fff 3 126 1752
+14002 5 127 1752
+14007 1 128 1752
+FUNC 14008 7c 4 fclose
+14008 c 44 1752
+14014 4 45 1752
+14018 2d 47 1752
+14045 6 50 1752
+1404b 3 51 1752
+1404e 3 64 1752
+14051 6 65 1752
+14057 7 55 1752
+1405e 3 56 1752
+14061 a 57 1752
+1406b 11 59 1752
+1407c 8 60 1752
+FUNC 14084 d 8 _ValidateRead(void const *,unsigned int)
+14084 0 63 5683
+14084 3 64 5683
+14087 7 65 5683
+1408e 2 68 5683
+14090 1 71 5683
+FUNC 14091 d 8 _ValidateWrite(void *,unsigned int)
+14091 0 74 5683
+14091 3 75 5683
+14094 7 76 5683
+1409b 2 79 5683
+1409d 1 82 5683
+FUNC 1409e d 4 _ValidateExecute(int (*)(void))
+1409e 0 85 5683
+1409e 3 86 5683
+140a1 7 87 5683
+140a8 2 90 5683
+140aa 1 93 5683
+FUNC 140ab f3 0 abort
+140ab 1b 53 4119
+140c6 a 56 4119
+140d0 8 59 4119
+140d8 5 68 4119
+140dd 4 69 4119
+140e1 8 71 4119
+140e9 d 78 4119
+140f6 6 87 4119
+140fc 6 88 4119
+14102 6 89 4119
+14108 3 90 4119
+1410b 3 91 4119
+1410e 3 92 4119
+14111 7 93 4119
+14118 7 94 4119
+1411f 4 95 4119
+14123 4 96 4119
+14127 4 97 4119
+1412b 4 98 4119
+1412f 1 99 4119
+14130 6 100 4119
+14136 6 106 4119
+1413c 19 107 4119
+14155 3 109 4119
+14158 13 117 4119
+1416b 9 122 4119
+14174 3 123 4119
+14177 15 126 4119
+1418c a 128 4119
+14196 8 137 4119
+FUNC 1419e 1e 8 _set_abort_behavior
+1419e 0 158 4119
+1419e 1d 160 4119
+141bb 1 162 4119
+FUNC 141bc 20 0 _global_unwind2
+FUNC 141dc 45 0 __unwind_handler
+FUNC 14221 84 0 _local_unwind2
+FUNC 142a5 23 0 _abnormal_termination
+FUNC 142c8 9 0 _NLG_Notify1
+FUNC 142d1 1f 0 _NLG_Notify
+PUBLIC 142e8 0 _NLG_Dispatch2
+FUNC 142f0 3 0 _NLG_Call
+PUBLIC 142f2 0 _NLG_Return2
+FUNC 142f3 a3 4 _msize
+142f3 c 43 5383
+142ff 2d 47 5383
+1432c 9 51 5383
+14335 8 55 5383
+1433d 3 56 5383
+14340 e 57 5383
+1434e e 59 5383
+1435c c 61 5383
+14368 5 64 5383
+1436d 10 88 5383
+1437d 2 91 5383
+1437f 6 93 5383
+14385 8 61 5383
+1438d 9 62 5383
+FUNC 14396 6 0 HeapManager::Block::Block()
+14396 6 90 5771
+FUNC 1439c 1b 8 HeapManager::Constructor(void * (*)(unsigned int),void (*)(void *))
+1439c 6 100 5771
+143a2 7 101 5771
+143a9 5 102 5771
+143ae 3 103 5771
+143b1 3 104 5771
+143b4 3 105 5771
+FUNC 143b7 26 0 HeapManager::Destructor()
+143b7 9 110 5771
+143c0 2 111 5771
+143c2 5 113 5771
+143c7 15 115 5771
+143dc 1 118 5771
+FUNC 143dd 63 0 UnDecorator::getNumberOfDimensions()
+143dd 0 1663 5771
+143dd c 1664 5771
+143e9 2 1665 5771
+143eb 1 1696 5771
+143ec a 1666 5771
+143f6 d 1667 5771
+14403 1 1696 5771
+14404 4 1670 5771
+14408 4 1677 5771
+1440c a 1679 5771
+14416 6 1680 5771
+1441c d 1684 5771
+14429 5 1675 5771
+1442e e 1690 5771
+1443c 3 1691 5771
+1443f 1 1696 5771
+FUNC 14440 474 0 UnDecorator::getTypeEncoding()
+14440 f 2335 5771
+1444f 2 2336 5771
+14451 5 2341 5771
+14456 9 2345 5771
+1445f c 2351 5771
+1446b 9 2423 5771
+14474 2 2426 5771
+14476 2a 2427 5771
+144a0 8 2450 5771
+144a8 2 2451 5771
+144aa 24 2454 5771
+144ce 7 2462 5771
+144d5 5 2463 5771
+144da 6 2353 5771
+144e0 8 2358 5771
+144e8 b 2362 5771
+144f3 5 2363 5771
+144f8 2 2364 5771
+144fa 5 2365 5771
+144ff 9 2369 5771
+14508 1b 2373 5771
+14523 11 2377 5771
+14534 a 2393 5771
+1453e 10 2388 5771
+1454e 2 2389 5771
+14550 18 2384 5771
+14568 2 2385 5771
+1456a 12 2380 5771
+1457c 16 2399 5771
+14592 11 2418 5771
+145a3 a 2406 5771
+145ad 5 2407 5771
+145b2 15 2410 5771
+145c7 5 2422 5771
+145cc 1b 2427 5771
+145e7 a 2430 5771
+145f1 5 2431 5771
+145f6 7 2472 5771
+145fd a 2478 5771
+14607 c 2483 5771
+14613 5 2485 5771
+14618 5 2486 5771
+1461d 5 2487 5771
+14622 5 2490 5771
+14627 5 2505 5771
+1462c 5 2508 5771
+14631 5 2509 5771
+14636 5 2434 5771
+1463b 5 2435 5771
+14640 1a 2427 5771
+1465a 30 2568 5771
+1468a 5 2529 5771
+1468f 4 2530 5771
+14693 a 2531 5771
+1469d 2 2532 5771
+1469f a 2533 5771
+146a9 5 2537 5771
+146ae 5 2538 5771
+146b3 2 2539 5771
+146b5 5 2540 5771
+146ba e 2544 5771
+146c8 6 2560 5771
+146ce 10 2555 5771
+146de 2 2556 5771
+146e0 18 2551 5771
+146f8 2 2552 5771
+146fa 12 2547 5771
+1470c 2 2564 5771
+1470e a 2442 5771
+14718 2 2443 5771
+1471a a 2438 5771
+14724 2 2439 5771
+14726 5 2445 5771
+1472b c 2574 5771
+14737 14 2577 5771
+1474b a 2579 5771
+14755 18 2586 5771
+1476d 1a 2589 5771
+14787 1b 2590 5771
+147a2 5 2591 5771
+147a7 1a 2594 5771
+147c1 1b 2595 5771
+147dc 5 2596 5771
+147e1 1a 2599 5771
+147fb 10 2600 5771
+1480b 2 2601 5771
+1480d 7 2604 5771
+14814 2 2605 5771
+14816 a 2608 5771
+14820 2 2609 5771
+14822 a 2612 5771
+1482c 2 2613 5771
+1482e a 2616 5771
+14838 2 2617 5771
+1483a a 2620 5771
+14844 2 2621 5771
+14846 a 2624 5771
+14850 7 2634 5771
+14857 7 2635 5771
+1485e 7 2637 5771
+14865 10 2639 5771
+14875 3f 2648 5771
+FUNC 148b4 b 0 UnDecorator::doUnderScore()
+148b4 b 4259 5771
+FUNC 148bf d 0 UnDecorator::doMSKeywords()
+148bf d 4260 5771
+FUNC 148cc e 0 UnDecorator::doPtr64()
+148cc e 4261 5771
+FUNC 148da e 0 UnDecorator::doFunctionReturns()
+148da e 4262 5771
+FUNC 148e8 e 0 UnDecorator::doAllocationModel()
+148e8 e 4263 5771
+FUNC 148f6 e 0 UnDecorator::doAllocationLanguage()
+148f6 e 4264 5771
+FUNC 14904 12 0 UnDecorator::doThisTypes()
+14904 12 4271 5771
+FUNC 14916 e 0 UnDecorator::doAccessSpecifiers()
+14916 e 4272 5771
+FUNC 14924 e 0 UnDecorator::doThrowTypes()
+14924 e 4273 5771
+FUNC 14932 e 0 UnDecorator::doMemberTypes()
+14932 e 4274 5771
+FUNC 14940 b 0 UnDecorator::doNameOnly()
+14940 b 4279 5771
+FUNC 1494b b 0 UnDecorator::doTypeOnly()
+1494b b 4280 5771
+FUNC 14956 b 0 UnDecorator::haveTemplateParameters()
+14956 b 4281 5771
+FUNC 14961 e 0 UnDecorator::doEcsu()
+14961 e 4282 5771
+FUNC 1496f b 0 UnDecorator::doNoIdentCharCheck()
+1496f b 4283 5771
+FUNC 1497a e 0 UnDecorator::doEllipsis()
+1497a e 4284 5771
+FUNC 14988 19 4 UnDecorator::UScore(Tokens)
+14988 0 4288 5771
+14988 9 4293 5771
+14991 d 4294 5771
+1499e 2 4296 5771
+149a0 1 4298 5771
+FUNC 149a1 84 8 HeapManager::getMemory(unsigned int,int)
+149a1 2 134 5804
+149a3 a 137 5804
+149ad 9 139 5804
+149b6 6 140 5804
+149bc 4 146 5804
+149c0 3 147 5804
+149c3 8 149 5804
+149cb 7 153 5804
+149d2 2 154 5804
+149d4 1c 159 5804
+149f0 4 164 5804
+149f4 7 168 5804
+149fb 2 169 5804
+149fd 2 170 5804
+149ff 3 171 5804
+14a02 8 175 5804
+14a0a 2 182 5804
+14a0c 4 179 5804
+14a10 5 183 5804
+14a15 d 187 5804
+14a22 3 190 5804
+FUNC 14a25 d 0 DName::DName()
+14a25 2 210 5804
+14a27 3 211 5804
+14a2a 7 220 5804
+14a31 1 221 5804
+FUNC 14a32 12 4 DName::DName(DNameNode *)
+14a32 2 224 5804
+14a34 4 225 5804
+14a38 9 234 5804
+14a41 3 235 5804
+FUNC 14a44 9c 4 DName::DName(DName const &)
+14a44 2 259 5804
+14a46 17 260 5804
+14a5d 10 261 5804
+14a6d d 262 5804
+14a7a d 263 5804
+14a87 10 264 5804
+14a97 4 265 5804
+14a9b e 266 5804
+14aa9 13 267 5804
+14abc 10 268 5804
+14acc 11 269 5804
+14add 3 270 5804
+FUNC 14ae0 a 0 DName::status()
+14ae0 a 481 5804
+FUNC 14aea 5 0 DName::clearStatus()
+14aea 5 482 5804
+FUNC 14aef 7 0 DName::setPtrRef()
+14aef 7 484 5804
+FUNC 14af6 a 0 DName::isPtrRef()
+14af6 a 485 5804
+FUNC 14b00 8 0 DName::setIsArray()
+14b00 8 490 5804
+FUNC 14b08 a 0 DName::isArray()
+14b08 a 491 5804
+FUNC 14b12 a 0 DName::isNoTE()
+14b12 a 492 5804
+FUNC 14b1c 8 0 DName::setIsNoTE()
+14b1c 8 493 5804
+FUNC 14b24 a 0 DName::isPinPtr()
+14b24 a 494 5804
+FUNC 14b2e 8 0 DName::setIsPinPtr()
+14b2e 8 495 5804
+FUNC 14b36 a 0 DName::isComArray()
+14b36 a 496 5804
+FUNC 14b40 8 0 DName::setIsComArray()
+14b40 8 497 5804
+FUNC 14b48 a 0 DName::isVCallThunk()
+14b48 a 498 5804
+FUNC 14b52 8 0 DName::setIsVCallThunk()
+14b52 8 499 5804
+FUNC 14b5a 7b 4 DName::operator=(DName const &)
+14b5a 3 879 5804
+14b5d 12 880 5804
+14b6f 17 882 5804
+14b86 d 883 5804
+14b93 d 884 5804
+14ba0 d 885 5804
+14bad 10 886 5804
+14bbd 10 887 5804
+14bcd 5 889 5804
+14bd2 3 897 5804
+FUNC 14bd5 9 0 Replicator::isFull()
+14bd5 9 1001 5804
+FUNC 14bde 25 4 Replicator::operator[](int)
+14bde 0 1028 5804
+14bde 9 1029 5804
+14be7 b 1031 5804
+14bf2 6 1034 5804
+14bf8 5 1032 5804
+14bfd 3 1030 5804
+14c00 3 1036 5804
+FUNC 14c03 d 0 DNameNode::DNameNode()
+14c03 d 1048 5804
+FUNC 14c10 4 0 DNameNode::nextNode()
+14c10 4 1052 5804
+FUNC 14c14 29 4 DNameNode::operator+=(DNameNode *)
+14c14 2 1131 5804
+14c16 8 1132 5804
+14c1e 8 1134 5804
+14c26 b 1139 5804
+14c31 4 1144 5804
+14c35 2 1147 5804
+14c37 3 1148 5804
+14c3a 3 1156 5804
+FUNC 14c3d 16 4 charNode::charNode(char)
+14c3d 16 1166 5804
+FUNC 14c53 4 0 charNode::length()
+14c53 4 1168 5804
+FUNC 14c57 4 0 charNode::getLastChar()
+14c57 4 1170 5804
+FUNC 14c5b 1b 8 charNode::getString(char *,int)
+14c5b 0 1173 5804
+14c5b f 1174 5804
+14c6a 5 1175 5804
+14c6f 2 1176 5804
+14c71 2 1177 5804
+14c73 3 1183 5804
+FUNC 14c76 4 0 pcharNode::length()
+14c76 4 1189 5804
+FUNC 14c7a 2f 4 pDNameNode::pDNameNode(DName *)
+14c7a 2f 1244 5804
+FUNC 14ca9 25 4 DNameStatusNode::DNameStatusNode(DNameStatus)
+14ca9 25 1261 5804
+FUNC 14cce 4 0 DNameStatusNode::length()
+14cce 4 1263 5804
+FUNC 14cd2 d 0 DNameStatusNode::getLastChar()
+14cd2 d 1266 5804
+FUNC 14cdf e 0 und_strlen
+14cdf 0 1283 5804
+14cdf 6 1286 5804
+14ce5 7 1287 5804
+14cec 1 1291 5804
+FUNC 14ced 20 8 und_strncpy
+14ced 0 1295 5804
+14ced 1b 1296 5804
+14d08 4 1299 5804
+14d0c 1 1301 5804
+FUNC 14d0d 25 4 und_strncmp
+14d0d 0 1304 5804
+14d0d 7 1305 5804
+14d14 2 1306 5804
+14d16 1 1315 5804
+14d17 a 1308 5804
+14d21 1 1310 5804
+14d22 1 1311 5804
+14d23 6 1308 5804
+14d29 8 1314 5804
+14d31 1 1315 5804
+FUNC 14d32 33 0 UnDecorator::getDataIndirectType()
+14d32 33 4033 5771
+FUNC 14d65 34 0 UnDecorator::getThisType()
+14d65 34 4034 5771
+FUNC 14d99 13 c operator new(unsigned int,HeapManager &,int)
+14d99 13 131 5804
+FUNC 14dac 56 4 DName::DName(DName *)
+14dac 0 274 5804
+14dac a 275 5804
+14db6 23 277 5804
+14dd9 13 278 5804
+14dec 2 281 5804
+14dee 4 283 5804
+14df2 3 284 5804
+14df5 7 295 5804
+14dfc 6 296 5804
+FUNC 14e02 61 4 DName::DName(DNameStatus)
+14e02 2 457 5804
+14e04 21 458 5804
+14e25 1e 459 5804
+14e43 7 467 5804
+14e4a 9 469 5804
+14e53 a 470 5804
+14e5d 6 472 5804
+FUNC 14e63 17 0 DName::isValid()
+14e63 17 478 5804
+FUNC 14e7a 15 0 DName::isEmpty()
+14e7a 15 479 5804
+FUNC 14e8f 14 0 DName::isUDC()
+14e8f 14 486 5804
+FUNC 14ea3 e 0 DName::setIsUDC()
+14ea3 e 487 5804
+FUNC 14eb1 14 0 DName::isUDTThunk()
+14eb1 14 488 5804
+FUNC 14ec5 25 0 DName::length()
+14ec5 1 502 5804
+14ec6 2 503 5804
+14ec8 a 506 5804
+14ed2 4 507 5804
+14ed6 b 508 5804
+14ee1 5 507 5804
+14ee6 3 510 5804
+14ee9 1 512 5804
+FUNC 14eea 38 0 DName::getLastChar()
+14eea 2 516 5804
+14eec 2 517 5804
+14eee 9 519 5804
+14ef7 6 520 5804
+14efd a 521 5804
+14f07 2 522 5804
+14f09 7 520 5804
+14f10 11 524 5804
+14f21 1 526 5804
+FUNC 14f22 91 8 DName::getString(char *,int)
+14f22 7 530 5804
+14f29 9 531 5804
+14f32 5 535 5804
+14f37 7 537 5804
+14f3e e 538 5804
+14f4c c 544 5804
+14f58 d 550 5804
+14f65 4 553 5804
+14f69 8 555 5804
+14f71 4 561 5804
+14f75 6 565 5804
+14f7b 2 566 5804
+14f7d b 570 5804
+14f88 4 574 5804
+14f8c 2 578 5804
+14f8e 3 579 5804
+14f91 3 586 5804
+14f94 4 553 5804
+14f98 4 590 5804
+14f9c 2 593 5804
+14f9e 6 594 5804
+14fa4 6 595 5804
+14faa 5 599 5804
+14faf 4 601 5804
+FUNC 14fb3 35 4 DName::operator|=(DName const &)
+14fb3 3 832 5804
+14fb6 19 835 5804
+14fcf 13 836 5804
+14fe2 3 840 5804
+14fe5 3 842 5804
+FUNC 14fe8 81 4 DName::operator=(DNameStatus)
+14fe8 2 928 5804
+14fea 10 929 5804
+14ffa 12 937 5804
+1500c 26 945 5804
+15032 6 947 5804
+15038 e 948 5804
+15046 10 933 5804
+15056 d 934 5804
+15063 3 954 5804
+15066 3 956 5804
+FUNC 15069 1e 0 Replicator::Replicator()
+15069 1e 1004 5804
+FUNC 15087 47 4 Replicator::operator+=(DName const &)
+15087 3 1009 5804
+1508a 12 1010 5804
+1509c 20 1012 5804
+150bc 4 1017 5804
+150c0 8 1018 5804
+150c8 3 1022 5804
+150cb 3 1024 5804
+FUNC 150ce 47 0 DNameNode::clone()
+150ce 3 1055 5804
+150d1 43 1056 5804
+15114 1 1057 5804
+FUNC 15115 65 8 pcharNode::pcharNode(char const *,int)
+15115 1 1197 5804
+15116 1f 1200 5804
+15135 c 1201 5804
+15141 8 1205 5804
+15149 c 1207 5804
+15155 a 1210 5804
+1515f b 1211 5804
+1516a 2 1214 5804
+1516c 3 1216 5804
+1516f 4 1217 5804
+15173 7 1220 5804
+FUNC 1517a 12 0 pcharNode::getLastChar()
+1517a 12 1191 5804
+FUNC 1518c 31 8 pcharNode::getString(char *,int)
+1518c 0 1224 5804
+1518c b 1227 5804
+15197 2 1228 5804
+15199 21 1232 5804
+151ba 3 1234 5804
+FUNC 151bd f 0 pDNameNode::length()
+151bd f 1246 5804
+FUNC 151cc f 0 pDNameNode::getLastChar()
+151cc f 1248 5804
+FUNC 151db 1d 8 pDNameNode::getString(char *,int)
+151db 1d 1251 5804
+FUNC 151f8 33 8 DNameStatusNode::getString(char *,int)
+151f8 0 1269 5804
+151f8 b 1272 5804
+15203 2 1273 5804
+15205 23 1277 5804
+15228 3 1279 5804
+FUNC 1522b 73 14 UnDecorator::UnDecorator(char *,char const *,int,char * (*)(long),unsigned long)
+1522b 16 736 5771
+15241 8 737 5771
+15249 5 738 5771
+1524e 9 740 5771
+15257 a 741 5771
+15261 5 745 5771
+15266 2 747 5771
+15268 6 748 5771
+1526e 6 749 5771
+15274 8 754 5771
+1527c 15 755 5771
+15291 d 758 5771
+FUNC 1529e 2f 4 UnDecorator::getReturnType(DName *)
+1529e 3 2906 5771
+152a1 8 2907 5771
+152a9 15 2911 5771
+152be d 2915 5771
+152cb 2 2917 5771
+FUNC 152cd f 0 UnDecorator::getStorageConvention()
+152cd f 4032 5771
+FUNC 152dc 79 4 DName::operator+=(DNameStatus)
+152dc 4 799 5804
+152e0 17 800 5804
+152f7 20 804 5804
+15317 4 807 5804
+1531b 7 809 5804
+15322 6 811 5804
+15328 8 812 5804
+15330 2 815 5804
+15332 3 816 5804
+15335 5 818 5804
+1533a e 819 5804
+15348 7 801 5804
+1534f 3 825 5804
+15352 3 827 5804
+FUNC 15355 68 4 DName::operator=(DName *)
+15355 3 901 5804
+15358 12 902 5804
+1536a 7 903 5804
+15371 29 911 5804
+1539a 6 913 5804
+153a0 c 914 5804
+153ac 2 917 5804
+153ae 9 918 5804
+153b7 3 922 5804
+153ba 3 924 5804
+FUNC 153bd a6 8 DName::doPchar(char const *,int)
+153bd 3 962 5804
+153c0 1e 963 5804
+153de 6 964 5804
+153e4 c 965 5804
+153f0 10 966 5804
+15400 5 970 5804
+15405 23 984 5804
+15428 6 986 5804
+1542e 9 987 5804
+15437 2 988 5804
+15439 1b 977 5804
+15454 c 993 5804
+15460 3 995 5804
+FUNC 15463 26 4 DName::DName(char)
+15463 3 238 5804
+15466 3 244 5804
+15469 7 248 5804
+15470 7 252 5804
+15477 c 253 5804
+15483 6 255 5804
+FUNC 15489 31 4 DName::DName(char const *)
+15489 0 300 5804
+15489 16 312 5804
+1549f 15 313 5804
+154b4 6 315 5804
+FUNC 154ba d0 8 DName::DName(char const * &,char)
+154ba 7 319 5804
+154c1 d 329 5804
+154ce f 333 5804
+154dd 8 334 5804
+154e5 9 342 5804
+154ee 40 343 5804
+1552e b 344 5804
+15539 9 355 5804
+15542 8 359 5804
+1554a 8 361 5804
+15552 9 363 5804
+1555b 3 364 5804
+1555e 2 367 5804
+15560 3 347 5804
+15563 a 378 5804
+1556d 8 380 5804
+15575 6 368 5804
+1557b 7 371 5804
+15582 6 372 5804
+15588 2 375 5804
+FUNC 1558a 69 8 DName::DName(unsigned __int64)
+1558a 15 384 5804
+1559f 3 390 5804
+155a2 a 398 5804
+155ac 4 402 5804
+155b0 13 406 5804
+155c3 3 407 5804
+155c6 c 409 5804
+155d2 e 411 5804
+155e0 13 413 5804
+FUNC 155f3 96 8 DName::DName(__int64)
+155f3 10 416 5804
+15603 26 436 5804
+15629 15 438 5804
+1563e 10 443 5804
+1564e 5 444 5804
+15653 c 446 5804
+1565f 6 448 5804
+15665 4 449 5804
+15669 e 452 5804
+15677 12 453 5804
+FUNC 15689 2e 4 DName::operator+(DNameStatus)
+15689 1 675 5804
+1568a c 676 5804
+15696 9 679 5804
+1569f b 680 5804
+156aa 2 681 5804
+156ac 5 682 5804
+156b1 3 686 5804
+156b4 3 688 5804
+FUNC 156b7 62 4 DName::operator+=(DName const &)
+156b7 2 739 5804
+156b9 f 740 5804
+156c8 13 741 5804
+156db 2 742 5804
+156dd 9 743 5804
+156e6 6 744 5804
+156ec 2 745 5804
+156ee 7 747 5804
+156f5 6 749 5804
+156fb 9 750 5804
+15704 2 751 5804
+15706 d 752 5804
+15713 3 758 5804
+15716 3 760 5804
+FUNC 15719 8b 4 DName::operator+=(DName *)
+15719 2 764 5804
+1571b a 765 5804
+15725 9 766 5804
+1572e 8 767 5804
+15736 10 768 5804
+15746 8 789 5804
+1574e 20 770 5804
+1576e 4 773 5804
+15772 7 775 5804
+15779 6 777 5804
+1577f 8 778 5804
+15787 2 781 5804
+15789 3 782 5804
+1578c 5 784 5804
+15791 d 785 5804
+1579e 3 793 5804
+157a1 3 795 5804
+FUNC 157a4 1c 4 DName::operator=(char)
+157a4 1 847 5804
+157a5 15 854 5804
+157ba 3 856 5804
+157bd 3 858 5804
+FUNC 157c0 2a 4 DName::operator=(char const *)
+157c0 0 862 5804
+157c0 24 869 5804
+157e4 3 873 5804
+157e7 3 875 5804
+FUNC 157ea a6 0 UnDecorator::getCallingConvention()
+157ea 5 2825 5771
+157ef f 2826 5771
+157fe c 2828 5771
+1580a 5 2835 5771
+1580f 1a 2845 5771
+15829 20 2852 5771
+15849 2 2875 5771
+1584b 2 2876 5771
+1584d 2 2871 5771
+1584f 2 2872 5771
+15851 2 2867 5771
+15853 2 2868 5771
+15855 2 2863 5771
+15857 2 2864 5771
+15859 1 2859 5771
+1585a 2 2860 5771
+1585c 13 2855 5771
+1586f e 2891 5771
+1587d 4 2895 5771
+15881 d 2899 5771
+1588e 2 2901 5771
+FUNC 15890 37 0 UnDecorator::getVCallThunkType()
+15890 3 4057 5771
+15893 9 4059 5771
+1589c 5 4066 5771
+158a1 4 4059 5771
+158a5 4 4066 5771
+158a9 6 4061 5771
+158af c 4062 5771
+158bb a 4064 5771
+158c5 2 4170 5771
+FUNC 158c7 51 4 DName::operator+(DName const &)
+158c7 1 639 5804
+158c8 c 640 5804
+158d4 b 643 5804
+158df b 644 5804
+158ea d 645 5804
+158f7 11 646 5804
+15908 2 647 5804
+1590a 8 648 5804
+15912 3 652 5804
+15915 3 654 5804
+FUNC 15918 2e 4 DName::operator+(DName *)
+15918 1 658 5804
+15919 c 659 5804
+15925 9 662 5804
+1592e b 663 5804
+15939 2 664 5804
+1593b 5 665 5804
+15940 3 669 5804
+15943 3 671 5804
+FUNC 15946 6a 4 DName::operator+=(char)
+15946 1 693 5804
+15947 b 694 5804
+15952 9 695 5804
+1595b 6 696 5804
+15961 2 697 5804
+15963 7 699 5804
+1596a 6 701 5804
+15970 2b 702 5804
+1599b 2 703 5804
+1599d c 704 5804
+159a9 4 710 5804
+159ad 3 712 5804
+FUNC 159b0 6c 4 DName::operator+=(char const *)
+159b0 2 716 5804
+159b2 f 717 5804
+159c1 9 718 5804
+159ca 6 719 5804
+159d0 2 720 5804
+159d2 7 722 5804
+159d9 6 724 5804
+159df 28 725 5804
+15a07 2 726 5804
+15a09 d 727 5804
+15a16 3 733 5804
+15a19 3 735 5804
+FUNC 15a1c e0 0 UnDecorator::getArgumentList()
+15a1c 7 3076 5771
+15a23 12 3078 5771
+15a35 29 3081 5771
+15a5e 6 3085 5771
+15a64 4 3086 5771
+15a68 2 3087 5771
+15a6a e 3088 5771
+15a78 6 3093 5771
+15a7e 6 3095 5771
+15a84 5 3100 5771
+15a89 1 3102 5771
+15a8a 11 3106 5771
+15a9b 2 3109 5771
+15a9d 16 3116 5771
+15ab3 19 3121 5771
+15acc 9 3122 5771
+15ad5 17 3126 5771
+15aec b 3132 5771
+15af7 3 3141 5771
+15afa 2 3143 5771
+FUNC 15afc 4f 4 UnDecorator::getVdispMapType(DName const &)
+15afc 6 4230 5771
+15b02 d 4231 5771
+15b0f c 4232 5771
+15b1b 12 4233 5771
+15b2d 9 4234 5771
+15b36 a 4236 5771
+15b40 6 4237 5771
+15b46 3 4238 5771
+15b49 2 4239 5771
+FUNC 15b4b 22 8 operator+(char,DName const &)
+15b4b 22 198 5804
+FUNC 15b6d 22 8 operator+(DNameStatus,DName const &)
+15b6d 22 201 5804
+FUNC 15b8f 22 8 operator+(char const *,DName const &)
+15b8f 22 204 5804
+FUNC 15bb1 2e 4 DName::operator+(char)
+15bb1 1 605 5804
+15bb2 c 606 5804
+15bbe 9 609 5804
+15bc7 b 610 5804
+15bd2 2 611 5804
+15bd4 5 612 5804
+15bd9 3 616 5804
+15bdc 3 618 5804
+FUNC 15bdf 2e 4 DName::operator+(char const *)
+15bdf 1 622 5804
+15be0 c 623 5804
+15bec 9 626 5804
+15bf5 b 627 5804
+15c00 2 628 5804
+15c02 5 629 5804
+15c07 3 633 5804
+15c0a 3 635 5804
+FUNC 15c0d 141 4 UnDecorator::getDimension(bool)
+15c0d 7 1616 5771
+15c14 10 1618 5771
+15c24 e 1620 5771
+15c32 6 1623 5771
+15c38 f 1624 5771
+15c47 8 1625 5771
+15c4f 47 1626 5771
+15c96 4 1629 5771
+15c9a 4 1636 5771
+15c9e 8 1638 5771
+15ca6 20 1639 5771
+15cc6 d 1643 5771
+15cd3 4 1634 5771
+15cd7 b 1649 5771
+15ce2 2 1650 5771
+15ce4 5 1652 5771
+15ce9 13 1653 5771
+15cfc c 1637 5771
+15d08 4 1641 5771
+15d0c a 1653 5771
+15d16 36 1655 5771
+15d4c 2 1659 5771
+FUNC 15d4e d4 0 UnDecorator::getEnumType()
+15d4e 6 2762 5771
+15d54 1a 2766 5771
+15d6e 12 2770 5771
+15d80 5 2774 5771
+15d85 2 2775 5771
+15d87 5 2779 5771
+15d8c 2 2780 5771
+15d8e 5 2786 5771
+15d93 2 2787 5771
+15d95 d 2791 5771
+15da2 1f 2801 5771
+15dc1 1e 2807 5771
+15ddf e 2814 5771
+15ded 4 2795 5771
+15df1 d 2818 5771
+15dfe 24 2820 5771
+FUNC 15e22 c4 0 UnDecorator::getArgumentTypes()
+15e22 3 3035 5771
+15e25 18 3036 5771
+15e3d 9 3046 5771
+15e46 7 3051 5771
+15e4d 13 3052 5771
+15e60 c 3064 5771
+15e6c 36 3058 5771
+15ea2 b 3061 5771
+15ead 21 3039 5771
+15ece 16 3042 5771
+15ee4 2 3072 5771
+FUNC 15ee6 7e 0 UnDecorator::getThrowTypes()
+15ee6 3 3148 5771
+15ee9 e 3149 5771
+15ef7 2 3150 5771
+15ef9 21 3151 5771
+15f1a 1f 3153 5771
+15f39 29 3155 5771
+15f62 2 3157 5771
+FUNC 15f64 125 c UnDecorator::getExtendedDataIndirectType(char &,bool &,int)
+15f64 6 3636 5771
+15f6a 1a 3641 5771
+15f84 1c 3643 5771
+15fa0 a 3669 5771
+15faa 6 3670 5771
+15fb0 b 3672 5771
+15fbb a 3674 5771
+15fc5 21 3675 5771
+15fe6 17 3678 5771
+15ffd a 3680 5771
+16007 6 3689 5771
+1600d 2 3691 5771
+1600f 17 3693 5771
+16026 1e 3700 5771
+16044 6 3663 5771
+1604a 2 3665 5771
+1604c 3 3656 5771
+1604f d 3657 5771
+1605c 2 3659 5771
+1605e 6 3647 5771
+16064 13 3649 5771
+16077 10 3703 5771
+16087 2 3704 5771
+FUNC 16089 15f 4 UnDecorator::getArrayType(DName const &)
+16089 3 3986 5771
+1608c 12 3987 5771
+1609e 7 3989 5771
+160a5 4 3991 5771
+160a9 2 3992 5771
+160ab 4 3994 5771
+160af 9 3995 5771
+160b8 2a 4026 5771
+160e2 2 4028 5771
+160e4 c 3998 5771
+160f0 9 4000 5771
+160f9 d 4001 5771
+16106 35 4005 5771
+1613b b 4009 5771
+16146 4 4010 5771
+1614a 8 4011 5771
+16152 2 4012 5771
+16154 2c 4013 5771
+16180 d 4017 5771
+1618d 9 4018 5771
+16196 12 4019 5771
+161a8 a 4023 5771
+161b2 36 4024 5771
+FUNC 161e8 31 0 UnDecorator::getLexicalFrame()
+161e8 31 4031 5771
+FUNC 16219 12 0 UnDecorator::getDisplacement()
+16219 12 4048 5771
+FUNC 1622b 12 0 UnDecorator::getCallIndex()
+1622b 12 4049 5771
+FUNC 1623d 12 0 UnDecorator::getGuardNumber()
+1623d 12 4050 5771
+FUNC 1624f 150 4 UnDecorator::getVfTableType(DName const &)
+1624f 7 4174 5771
+16256 d 4175 5771
+16263 1d 4178 5771
+16280 2c 4180 5771
+162ac f 4182 5771
+162bb e 4184 5771
+162c9 5 4186 5771
+162ce 11 4188 5771
+162df 2d 4190 5771
+1630c b 4194 5771
+16317 7 4195 5771
+1631e 10 4199 5771
+1632e a 4200 5771
+16338 b 4188 5771
+16343 b 4204 5771
+1634e a 4206 5771
+16358 7 4207 5771
+1635f 9 4209 5771
+16368 a 4216 5771
+16372 6 4217 5771
+16378 2 4220 5771
+1637a 9 4221 5771
+16383 17 4222 5771
+1639a 3 4224 5771
+1639d 2 4226 5771
+FUNC 1639f a0 8 UnDecorator::getStringEncoding(char *,int)
+1639f 6 1447 5771
+163a5 b 1448 5771
+163b0 22 1451 5771
+163d2 6 1456 5771
+163d8 b 1459 5771
+163e3 b 1462 5771
+163ee 13 1464 5771
+16401 c 1466 5771
+1640d 5 1469 5771
+16412 6 1470 5771
+16418 4 1471 5771
+1641c 14 1477 5771
+16430 d 1452 5771
+1643d 2 1478 5771
+FUNC 1643f 50 0 UnDecorator::getSignedDimension()
+1643f 5 1603 5771
+16444 b 1604 5771
+1644f c 1605 5771
+1645b 2 1606 5771
+1645d 23 1608 5771
+16480 d 1611 5771
+1648d 2 1612 5771
+FUNC 1648f 2bb 0 UnDecorator::getTemplateConstant()
+1648f 15 1877 5771
+164a4 f 1884 5771
+164b3 32 1885 5771
+164e5 9 1921 5771
+164ee b 1922 5771
+164f9 20 1924 5771
+16519 12 1931 5771
+1652b e 1932 5771
+16539 3 1937 5771
+1653c 7 1939 5771
+16543 6 1941 5771
+16549 4 1942 5771
+1654d 2 1944 5771
+1654f 4 1945 5771
+16553 2a 1950 5771
+1657d a 1900 5771
+16587 6 1902 5771
+1658d 11 1903 5771
+1659e 1b 1906 5771
+165b9 b 1892 5771
+165c4 6 2034 5771
+165ca 7 1954 5771
+165d1 26 1885 5771
+165f7 b 1990 5771
+16602 c 1991 5771
+1660e 10 1992 5771
+1661e 9 1966 5771
+16627 c 1968 5771
+16633 e 1971 5771
+16641 10 1973 5771
+16651 6 1975 5771
+16657 6 1976 5771
+1665d 3 1980 5771
+16660 29 1981 5771
+16689 a 1983 5771
+16693 a 2001 5771
+1669d a 2003 5771
+166a7 13 2007 5771
+166ba a 2008 5771
+166c4 11 2012 5771
+166d5 13 2015 5771
+166e8 a 2016 5771
+166f2 13 2021 5771
+16705 a 2022 5771
+1670f 13 2026 5771
+16722 d 2029 5771
+1672f 7 1913 5771
+16736 14 2041 5771
+FUNC 1674a d9 8 UnDecorator::getPtrRefDataType(DName const &,int)
+1674a 3 3937 5771
+1674d 11 3940 5771
+1675e b 3944 5771
+16769 12 3948 5771
+1677b 12 3949 5771
+1678d 10 3951 5771
+1679d 5 3957 5771
+167a2 16 3961 5771
+167b8 d 3967 5771
+167c5 c 3968 5771
+167d1 b 3970 5771
+167dc 6 3972 5771
+167e2 1e 3974 5771
+16800 e 3976 5771
+1680e 13 3980 5771
+16821 2 3982 5771
+FUNC 16823 14 4 UnDecorator::getVbTableType(DName const &)
+16823 14 4053 5771
+FUNC 16837 1b8 0 UnDecorator::getTemplateArgumentList()
+16837 14 1775 5771
+1684b c 1777 5771
+16857 7 1778 5771
+1685e 2a 1781 5771
+16888 6 1785 5771
+1688e 4 1786 5771
+16892 2 1787 5771
+16894 e 1788 5771
+168a2 8 1793 5771
+168aa 5 1798 5771
+168af 1 1800 5771
+168b0 11 1804 5771
+168c1 5 1807 5771
+168c6 7 1810 5771
+168cd 7 1816 5771
+168d4 6 1817 5771
+168da 12 1818 5771
+168ec a 1820 5771
+168f6 5 1821 5771
+168fb e 1822 5771
+16909 5 1824 5771
+1690e 9 1830 5771
+16917 c 1832 5771
+16923 e 1835 5771
+16931 10 1837 5771
+16941 6 1839 5771
+16947 1 1840 5771
+16948 2 1842 5771
+1694a 25 1843 5771
+1696f 2 1846 5771
+16971 10 1847 5771
+16981 2 1850 5771
+16983 1f 1851 5771
+169a2 17 1857 5771
+169b9 9 1858 5771
+169c2 16 1862 5771
+169d8 17 1873 5771
+FUNC 169ef 56f 8 UnDecorator::getOperatorName(bool,bool *)
+169ef b 1095 5771
+169fa 53 1103 5771
+16a4d 13 1183 5771
+16a60 c 1439 5771
+16a6c 1d 1440 5771
+16a89 11 1442 5771
+16a9a 5 1444 5771
+16a9f 3 1124 5771
+16aa2 8 1126 5771
+16aaa 21 1127 5771
+16acb c 1129 5771
+16ad7 a 1130 5771
+16ae1 a 1133 5771
+16aeb 7 1135 5771
+16af2 3 1136 5771
+16af5 9 1144 5771
+16afe 5 1145 5771
+16b03 6 1148 5771
+16b09 2 1154 5771
+16b0b 15 1156 5771
+16b20 18 1160 5771
+16b38 1a 1161 5771
+16b52 10 1166 5771
+16b62 b 1167 5771
+16b6d 5 1170 5771
+16b72 6 1106 5771
+16b78 f 1108 5771
+16b87 21 1103 5771
+16ba8 3d 1220 5771
+16be5 18 1240 5771
+16bfd b 1234 5771
+16c08 5 1235 5771
+16c0d 13 1245 5771
+16c20 7 1247 5771
+16c27 8 1249 5771
+16c2f 18 1220 5771
+16c47 13 1255 5771
+16c5a 7 1256 5771
+16c61 2 1257 5771
+16c63 16 1335 5771
+16c79 7 1356 5771
+16c80 6 1350 5771
+16c86 2 1352 5771
+16c88 25 1220 5771
+16cad 13 1290 5771
+16cc0 17 1291 5771
+16cd7 24 1292 5771
+16cfb 14 1313 5771
+16d0f 6 1316 5771
+16d15 5 1317 5771
+16d1a 10 1302 5771
+16d2a 20 1303 5771
+16d4a 20 1304 5771
+16d6a 20 1305 5771
+16d8a 22 1306 5771
+16dac 12 1307 5771
+16dbe c 1296 5771
+16dca 2b 1297 5771
+16df5 13 1281 5771
+16e08 17 1282 5771
+16e1f 1a 1283 5771
+16e39 5 1284 5771
+16e3e 2d 1220 5771
+16e6b 25 1364 5771
+16e90 10 1373 5771
+16ea0 13 1378 5771
+16eb3 a 1397 5771
+16ebd 13 1399 5771
+16ed0 a 1403 5771
+16eda 6 1405 5771
+16ee0 2 1408 5771
+16ee2 13 1410 5771
+16ef5 d 1413 5771
+16f02 5 1415 5771
+16f07 10 1278 5771
+16f17 b 1330 5771
+16f22 5 1428 5771
+16f27 3 1187 5771
+16f2a 13 1216 5771
+16f3d 8 1437 5771
+16f45 19 1438 5771
+FUNC 16f5e 153 4 UnDecorator::getTemplateName(bool)
+16f5e 5 1700 5771
+16f63 1f 1704 5771
+16f82 16 1714 5771
+16f98 1d 1716 5771
+16fb5 23 1725 5771
+16fd8 e 1729 5771
+16fe6 6 1730 5771
+16fec 12 1732 5771
+16ffe 2 1734 5771
+17000 16 1735 5771
+17016 c 1738 5771
+17022 7 1739 5771
+17029 6 1746 5771
+1702f 21 1747 5771
+17050 c 1749 5771
+1705c a 1750 5771
+17066 a 1753 5771
+17070 6 1755 5771
+17076 6 1756 5771
+1707c 23 1769 5771
+1709f d 1705 5771
+170ac 5 1771 5771
+FUNC 170b1 1ea 4 UnDecorator::getZName(bool)
+170b1 10 1007 5771
+170c1 11 1008 5771
+170d2 3 1013 5771
+170d5 26 1043 5771
+170fb b 1024 5771
+17106 5 1026 5771
+1710b 16 1028 5771
+17121 16 1030 5771
+17137 17 1031 5771
+1714e 7 1033 5771
+17155 25 1040 5771
+1717a 5 1042 5771
+1717f 29 1043 5771
+171a8 8 1045 5771
+171b0 b 1051 5771
+171bb c 1053 5771
+171c7 e 1056 5771
+171d5 10 1058 5771
+171e5 4 1060 5771
+171e9 b 1061 5771
+171f4 2 1063 5771
+171f6 a 1064 5771
+17200 10 1065 5771
+17210 2 1068 5771
+17212 d 1069 5771
+1721f 2a 1070 5771
+17249 2 1073 5771
+1724b 1a 1076 5771
+17265 11 1083 5771
+17276 9 1084 5771
+1727f f 1087 5771
+1728e d 1090 5771
+FUNC 1729b e4 0 UnDecorator::getScopedName()
+1729b 7 2727 5771
+172a2 e 2728 5771
+172b0 15 2733 5771
+172c5 1a 2737 5771
+172df 2a 2738 5771
+17309 b 2742 5771
+17314 8 2743 5771
+1731c 4 2744 5771
+17320 1b 2745 5771
+1733b b 2746 5771
+17346 7 2747 5771
+1734d 2 2748 5771
+1734f 2b 2749 5771
+1737a 3 2753 5771
+1737d 2 2755 5771
+FUNC 1737f f 0 UnDecorator::getECSUName()
+1737f f 2758 5771
+FUNC 1738e 100 0 UnDecorator::getECSUDataType()
+1738e 3 3392 5771
+17391 20 3395 5771
+173b1 37 3399 5771
+173e8 5 3424 5771
+173ed 2 3425 5771
+173ef 5 3420 5771
+173f4 2 3421 5771
+173f6 26 3431 5771
+1741c 2 3432 5771
+1741e 5 3415 5771
+17423 2 3416 5771
+17425 5 3411 5771
+1742a 2 3412 5771
+1742c d 3407 5771
+17439 7 3439 5771
+17440 4 3441 5771
+17444 c 3442 5771
+17450 16 3446 5771
+17466 e 3450 5771
+17474 18 3404 5771
+1748c 2 3452 5771
+FUNC 1748e 46 0 UnDecorator::getSymbolName()
+1748e 3 989 5771
+17491 a 990 5771
+1749b 6 991 5771
+174a1 c 992 5771
+174ad 16 997 5771
+174c3 f 1001 5771
+174d2 2 1003 5771
+FUNC 174d4 92 0 UnDecorator::getBasedType()
+174d4 6 2653 5771
+174da 13 2654 5771
+174ed a 2659 5771
+174f7 17 2661 5771
+1750e c 2707 5771
+1751a 13 2699 5771
+1752d 2 2700 5771
+1752f d 2674 5771
+1753c 2 2711 5771
+1753e a 2712 5771
+17548 d 2716 5771
+17555 f 2720 5771
+17564 2 2722 5771
+FUNC 17566 b42 4 UnDecorator::composeDeclaration(DName const &)
+17566 6 2045 5771
+1756c e 2046 5771
+1757a 5 2047 5771
+1757f a 2048 5771
+17589 b 2053 5771
+17594 f 2054 5771
+175a3 8 2055 5771
+175ab 15 2056 5771
+175c0 8 2057 5771
+175c8 10 2058 5771
+175d8 83 2075 5771
+1765b 7 2081 5771
+17662 19 2082 5771
+1767b 21 2083 5771
+1769c 2 2084 5771
+1769e 15 2085 5771
+176b3 27 2090 5771
+176da 33 2092 5771
+1770d 9 2094 5771
+17716 9 2096 5771
+1771f 2b 2098 5771
+1774a d 2101 5771
+17757 9 2103 5771
+17760 2d 2105 5771
+1778d 2e 2107 5771
+177bb 5 2111 5771
+177c0 3 2114 5771
+177c3 3 2115 5771
+177c6 3 2116 5771
+177c9 3 2117 5771
+177cc 3 2118 5771
+177cf 26 2121 5771
+177f5 12 2123 5771
+17807 19 2125 5771
+17820 19 2126 5771
+17839 2 2127 5771
+1783b 12 2129 5771
+1784d 19 2131 5771
+17866 1b 2134 5771
+17881 13 2141 5771
+17894 a 2142 5771
+1789e 15 2143 5771
+178b3 2 2144 5771
+178b5 f 2145 5771
+178c4 10 2147 5771
+178d4 9 2151 5771
+178dd 22 2152 5771
+178ff 2 2153 5771
+17901 13 2168 5771
+17914 c 2172 5771
+17920 14 2173 5771
+17934 1a 2174 5771
+1794e 2 2175 5771
+17950 b 2176 5771
+1795b 5 2182 5771
+17960 6 2185 5771
+17966 27 2187 5771
+1798d b 2189 5771
+17998 5 2190 5771
+1799d 1b 2194 5771
+179b8 15 2195 5771
+179cd 1d 2202 5771
+179ea 16 2204 5771
+17a00 55 2205 5771
+17a55 12 2206 5771
+17a67 2b 2207 5771
+17a92 2 2208 5771
+17a94 d 2209 5771
+17aa1 1a 2211 5771
+17abb 2e 2218 5771
+17ae9 12 2222 5771
+17afb c 2223 5771
+17b07 c 2227 5771
+17b13 15 2228 5771
+17b28 2 2229 5771
+17b2a f 2230 5771
+17b39 1a 2235 5771
+17b53 b 2237 5771
+17b5e 3 2238 5771
+17b61 5 2243 5771
+17b66 b 2245 5771
+17b71 1c 2250 5771
+17b8d 13 2251 5771
+17ba0 e 2252 5771
+17bae 2 2253 5771
+17bb0 10 2254 5771
+17bc0 3d 2255 5771
+17bfd c 2256 5771
+17c09 e 2257 5771
+17c17 4c 2258 5771
+17c63 a 2259 5771
+17c6d 4b 2260 5771
+17cb8 7 2261 5771
+17cbf 4b 2262 5771
+17d0a f 2263 5771
+17d19 f 2264 5771
+17d28 6 2268 5771
+17d2e 61 2277 5771
+17d8f 15 2281 5771
+17da4 2 2283 5771
+17da6 18 2285 5771
+17dbe 2d 2292 5771
+17deb 12 2294 5771
+17dfd 37 2296 5771
+17e34 23 2297 5771
+17e57 b7 2299 5771
+17f0e 23 2300 5771
+17f31 12 2306 5771
+17f43 37 2307 5771
+17f7a b 2308 5771
+17f85 37 2309 5771
+17fbc b 2310 5771
+17fc7 30 2311 5771
+17ff7 23 2312 5771
+1801a 36 2319 5771
+18050 1e 2320 5771
+1806e 8 2325 5771
+18076 1e 2326 5771
+18094 12 2329 5771
+180a6 2 2331 5771
+FUNC 180a8 211 0 UnDecorator::getDecoratedName()
+180a8 7 861 5771
+180af e 864 5771
+180bd a 868 5771
+180c7 b 873 5771
+180d2 8 874 5771
+180da 11 876 5771
+180eb 10 878 5771
+180fb 6 882 5771
+18101 9 903 5771
+1810a 9 906 5771
+18113 8 910 5771
+1811b 6 912 5771
+18121 5 910 5771
+18126 2 915 5771
+18128 a 918 5771
+18132 19 919 5771
+1814b 6 920 5771
+18151 f 924 5771
+18160 8 925 5771
+18168 17 929 5771
+1817f a 930 5771
+18189 c 932 5771
+18195 8 933 5771
+1819d 5 934 5771
+181a2 18 935 5771
+181ba a 936 5771
+181c4 13 937 5771
+181d7 b 938 5771
+181e2 2 940 5771
+181e4 29 941 5771
+1820d 4 945 5771
+18211 10 946 5771
+18221 9 948 5771
+1822a 3 950 5771
+1822d 1c 955 5771
+18249 f 959 5771
+18258 4 976 5771
+1825c 6 962 5771
+18262 14 964 5771
+18276 19 967 5771
+1828f 5 968 5771
+18294 10 971 5771
+182a4 2 979 5771
+182a6 2 980 5771
+182a8 f 982 5771
+182b7 2 984 5771
+FUNC 182b9 28b 0 UnDecorator::getScope()
+182b9 d 1482 5771
+182c6 f 1483 5771
+182d5 2a 1489 5771
+182ff 14 1492 5771
+18313 b 1495 5771
+1831e 16 1496 5771
+18334 5 1498 5771
+18339 17 1499 5771
+18350 3 1500 5771
+18353 f 1506 5771
+18362 2a 1507 5771
+1838c 10 1566 5771
+1839c 5 1567 5771
+183a1 34 1561 5771
+183d5 4 1562 5771
+183d9 5 1563 5771
+183de e 1510 5771
+183ec 5 1514 5771
+183f1 22 1515 5771
+18413 e 1518 5771
+18421 6 1519 5771
+18427 5 1522 5771
+1842c 2a 1523 5771
+18456 2 1524 5771
+18458 f 1546 5771
+18467 1a 1548 5771
+18481 b 1550 5771
+1848c 9 1551 5771
+18495 2 1554 5771
+18497 f 1530 5771
+184a6 2 1570 5771
+184a8 21 1571 5771
+184c9 a 1489 5771
+184d3 f 1577 5771
+184e2 18 1590 5771
+184fa 2 1591 5771
+184fc b 1580 5771
+18507 7 1581 5771
+1850e 2 1582 5771
+18510 2b 1583 5771
+1853b 4 1597 5771
+1853f 5 1599 5771
+FUNC 18544 341 4 UnDecorator::getFunctionIndirectType(DName const &)
+18544 3 3461 5771
+18547 e 3462 5771
+18555 15 3463 5771
+1856a f 3465 5771
+18579 10 3466 5771
+18589 7 3469 5771
+18590 a 3471 5771
+1859a 6 3473 5771
+185a0 7 3475 5771
+185a7 d 3477 5771
+185b4 17 3482 5771
+185cb 9 3485 5771
+185d4 3 3486 5771
+185d7 5 3490 5771
+185dc f 3491 5771
+185eb 6 3496 5771
+185f1 13 3497 5771
+18604 b 3501 5771
+1860f 1e 3503 5771
+1862d 8 3505 5771
+18635 29 3506 5771
+1865e 2 3507 5771
+18660 17 3508 5771
+18677 f 3510 5771
+18686 4 3511 5771
+1868a 10 3518 5771
+1869a 15 3519 5771
+186af 9 3527 5771
+186b8 d 3528 5771
+186c5 30 3529 5771
+186f5 2 3530 5771
+186f7 11 3521 5771
+18708 7 3514 5771
+1870f 16 3516 5771
+18725 13 3531 5771
+18738 d 3535 5771
+18745 22 3537 5771
+18767 2 3546 5771
+18769 13 3547 5771
+1877c c 3551 5771
+18788 28 3552 5771
+187b0 1e 3557 5771
+187ce c 3558 5771
+187da 2e 3561 5771
+18808 10 3563 5771
+18818 c 3564 5771
+18824 c 3566 5771
+18830 15 3567 5771
+18845 2 3568 5771
+18847 f 3569 5771
+18856 4 3573 5771
+1885a b 3574 5771
+18865 e 3580 5771
+18873 10 3576 5771
+18883 2 3581 5771
+FUNC 18885 4e4 10 UnDecorator::getDataIndirectType(DName const &,char,DName const &,int)
+18885 6 3707 5771
+1888b 23 3711 5771
+188ae 4 3713 5771
+188b2 17 3715 5771
+188c9 c 3717 5771
+188d5 10 3719 5771
+188e5 e 3723 5771
+188f3 6 3725 5771
+188f9 15 3726 5771
+1890e 17 3732 5771
+18925 11 3751 5771
+18936 a 3752 5771
+18940 32 3753 5771
+18972 5 3754 5771
+18977 11 3743 5771
+18988 a 3744 5771
+18992 25 3745 5771
+189b7 2 3746 5771
+189b9 8 3747 5771
+189c1 2 3749 5771
+189c3 19 3735 5771
+189dc a 3736 5771
+189e6 14 3737 5771
+189fa 5 3738 5771
+189ff 11 3739 5771
+18a10 6 3766 5771
+18a16 a 3768 5771
+18a20 17 3770 5771
+18a37 10 3772 5771
+18a47 1a 3778 5771
+18a61 5 3780 5771
+18a66 6 3782 5771
+18a6c 9 3787 5771
+18a75 b 3789 5771
+18a80 19 3791 5771
+18a99 c 3793 5771
+18aa5 24 3794 5771
+18ac9 c 3796 5771
+18ad5 22 3797 5771
+18af7 9 3801 5771
+18b00 5 3805 5771
+18b05 7 3806 5771
+18b0c 6 3810 5771
+18b12 1e 3812 5771
+18b30 8 3814 5771
+18b38 1b 3815 5771
+18b53 2 3816 5771
+18b55 16 3817 5771
+18b6b a 3819 5771
+18b75 13 3828 5771
+18b88 b 3833 5771
+18b93 c 3834 5771
+18b9f 8 3835 5771
+18ba7 6 3836 5771
+18bad b 3842 5771
+18bb8 b 3843 5771
+18bc3 3 3863 5771
+18bc6 6 3864 5771
+18bcc 22 3866 5771
+18bee 9 3871 5771
+18bf7 13 3872 5771
+18c0a 5 3876 5771
+18c0f 1e 3877 5771
+18c2d 5 3879 5771
+18c32 1e 3880 5771
+18c50 5 3884 5771
+18c55 e 3885 5771
+18c63 14 3889 5771
+18c77 28 3895 5771
+18c9f 2 3890 5771
+18ca1 b 3891 5771
+18cac 2 3892 5771
+18cae c 3898 5771
+18cba 17 3899 5771
+18cd1 4 3902 5771
+18cd5 6 3904 5771
+18cdb 7 3906 5771
+18ce2 8 3774 5771
+18cea 13 3918 5771
+18cfd 12 3922 5771
+18d0f 29 3925 5771
+18d38 10 3923 5771
+18d48 c 3928 5771
+18d54 3 3929 5771
+18d57 10 3931 5771
+18d67 2 3933 5771
+FUNC 18d69 14c 0 UnDecorator::operator char *()
+18d69 6 762 5771
+18d6f 4 763 5771
+18d73 f 764 5771
+18d82 9 770 5771
+18d8b c 772 5771
+18d97 7 775 5771
+18d9e 1d 776 5771
+18dbb 4 782 5771
+18dbf 16 783 5771
+18dd5 9 785 5771
+18dde 5 794 5771
+18de3 9 795 5771
+18dec 13 799 5771
+18dff e 808 5771
+18e0d 2 809 5771
+18e0f 2 848 5771
+18e11 1a 810 5771
+18e2b e 813 5771
+18e39 e 811 5771
+18e47 9 817 5771
+18e50 e 819 5771
+18e5e d 820 5771
+18e6b a 824 5771
+18e75 f 825 5771
+18e84 5 828 5771
+18e89 2 829 5771
+18e8b 2 830 5771
+18e8d 5 831 5771
+18e92 1 832 5771
+18e93 5 833 5771
+18e98 1 835 5771
+18e99 5 834 5771
+18e9e 2 838 5771
+18ea0 a 839 5771
+18eaa 9 841 5771
+18eb3 2 848 5771
+FUNC 18eb5 116 c UnDecorator::getPtrRefType(DName const &,DName const &,char)
+18eb5 5 3585 5771
+18eba f 3588 5771
+18ec9 d 3589 5771
+18ed6 b 3591 5771
+18ee1 20 3594 5771
+18f01 b 3595 5771
+18f0c b 3597 5771
+18f17 9 3598 5771
+18f20 14 3600 5771
+18f34 14 3606 5771
+18f48 1b 3608 5771
+18f63 a 3612 5771
+18f6d b 3615 5771
+18f78 c 3617 5771
+18f84 9 3618 5771
+18f8d c 3620 5771
+18f99 c 3622 5771
+18fa5 a 3623 5771
+18faf b 3625 5771
+18fba f 3629 5771
+18fc9 2 3632 5771
+FUNC 18fcb 1b 8 UnDecorator::getPointerType(DName const &,DName const &)
+18fcb 1b 4037 5771
+FUNC 18fe6 1b 8 UnDecorator::getPointerTypeArray(DName const &,DName const &)
+18fe6 1b 4040 5771
+FUNC 19001 1b 8 UnDecorator::getReferenceType(DName const &,DName const &)
+19001 1b 4043 5771
+FUNC 1901c a3 18 __unDName
+1901c f 604 5771
+1902b 9 606 5771
+19034 4 607 5771
+19038 a 612 5771
+19042 2 613 5771
+19044 8 614 5771
+1904c 3 615 5771
+1904f 20 618 5771
+1906f 1a 627 5771
+19089 e 628 5771
+19097 a 633 5771
+190a1 c 636 5771
+190ad 3 643 5771
+190b0 6 645 5771
+190b6 9 637 5771
+FUNC 190bf a3 1c __unDNameEx
+190bf f 684 5771
+190ce 9 687 5771
+190d7 4 688 5771
+190db a 693 5771
+190e5 2 694 5771
+190e7 8 695 5771
+190ef 3 696 5771
+190f2 20 699 5771
+19112 1a 708 5771
+1912c e 709 5771
+1913a a 714 5771
+19144 c 717 5771
+19150 3 724 5771
+19153 6 726 5771
+19159 9 718 5771
+FUNC 19162 387 4 UnDecorator::getBasicDataType(DName const &)
+19162 3 3162 5771
+19165 15 3163 5771
+1917a 6 3165 5771
+19180 4 3168 5771
+19184 35 3173 5771
+191b9 5 3178 5771
+191be 5 3179 5771
+191c3 5 3183 5771
+191c8 5 3184 5771
+191cd 5 3188 5771
+191d2 5 3189 5771
+191d7 5 3193 5771
+191dc 5 3194 5771
+191e1 5 3203 5771
+191e6 5 3204 5771
+191eb 2a 3173 5771
+19215 3c 3222 5771
+19251 5 3231 5771
+19256 5 3232 5771
+1925b 22 3273 5771
+1927d 5 3235 5771
+19282 5 3236 5771
+19287 f 3222 5771
+19296 5 3243 5771
+1929b 5 3244 5771
+192a0 5 3239 5771
+192a5 5 3240 5771
+192aa 5 3247 5771
+192af 5 3248 5771
+192b4 1b 3222 5771
+192cf 3 3264 5771
+192d2 6 3262 5771
+192d8 10 3264 5771
+192e8 10 3266 5771
+192f8 11 3267 5771
+19309 5 3275 5771
+1930e 2 3276 5771
+19310 5 3255 5771
+19315 2 3257 5771
+19317 3 3224 5771
+1931a 12 3343 5771
+1932c 9 3345 5771
+19335 7 3347 5771
+1933c 16 3348 5771
+19352 6 3352 5771
+19358 d 3353 5771
+19365 5 3355 5771
+1936a 5 3227 5771
+1936f 2 3278 5771
+19371 d 3281 5771
+1937e 2 3282 5771
+19380 5 3219 5771
+19385 2 3220 5771
+19387 3 3287 5771
+1938a 5 3290 5771
+1938f d 3207 5771
+1939c d 3212 5771
+193a9 9 3297 5771
+193b2 1f 3301 5771
+193d1 19 3314 5771
+193ea c 3322 5771
+193f6 2 3326 5771
+193f8 c 3307 5771
+19404 2 3308 5771
+19406 1e 3311 5771
+19424 10 3332 5771
+19434 18 3333 5771
+1944c 5 3337 5771
+19451 c 3360 5771
+1945d 5 3367 5771
+19462 d 3369 5771
+1946f 5 3371 5771
+19474 d 3372 5771
+19481 2 3373 5771
+19483 5 3374 5771
+19488 d 3375 5771
+19495 17 3380 5771
+194ac 16 3385 5771
+194c2 27 3387 5771
+FUNC 194e9 13e 4 UnDecorator::getPrimaryDataType(DName const &)
+194e9 7 2962 5771
+194f0 2b 2966 5771
+1951b 12 3027 5771
+1952d d 2972 5771
+1953a c 2974 5771
+19546 a 2975 5771
+19550 b 2981 5771
+1955b 6 2984 5771
+19561 1e 2986 5771
+1957f 7 2996 5771
+19586 2 2997 5771
+19588 6 2998 5771
+1958e f 3000 5771
+1959d 8 3002 5771
+195a5 10 3004 5771
+195b5 2f 3022 5771
+195e4 16 3012 5771
+195fa 17 3008 5771
+19611 14 2969 5771
+19625 2 3030 5771
+FUNC 19627 b1 4 UnDecorator::getDataType(DName *)
+19627 6 2922 5771
+1962d b 2923 5771
+19638 15 2928 5771
+1964d 10 2954 5771
+1965d 6 2934 5771
+19663 c 2936 5771
+1966f f 2937 5771
+1967e 13 2939 5771
+19691 6 2944 5771
+19697 29 2946 5771
+196c0 2 2947 5771
+196c2 14 2931 5771
+196d6 2 2957 5771
+FUNC 196d8 64 4 UnDecorator::getExternalDataType(DName const &)
+196d8 7 4244 5771
+196df 1e 4247 5771
+196fd 9 4248 5771
+19706 30 4253 5771
+19736 4 4255 5771
+1973a 2 4257 5771
+FUNC 1973c 57 8 fastzero_I
+FUNC 19793 8f c _VEC_memzero
+FUNC 19822 14 0 _sse2_mathfcns_init
+FUNC 19836 14 4 _set_SSE2_enable
+FUNC 1984a 87 c fastcopy_I
+FUNC 198d1 e3 c _VEC_memcpy
+FUNC 199b4 1bd c __crtMessageBoxA
+199b4 9 41 4033
+199bd 5 49 4033
+199c2 2 56 4033
+199c4 18 64 4033
+199dc d 66 4033
+199e9 2 67 4033
+199eb 6 69 4033
+199f1 10 76 4033
+19a01 6 78 4033
+19a07 6 80 4033
+19a0d 15 83 4033
+19a22 1a 86 4033
+19a3c 1c 88 4033
+19a58 6 89 4033
+19a5e 8 95 4033
+19a66 6 98 4033
+19a6c a 100 4033
+19a76 14 102 4033
+19a8a 14 116 4033
+19a9e 6 119 4033
+19aa4 d 120 4033
+19ab1 c 122 4033
+19abd 1f 127 4033
+19adc 1b 136 4033
+19af7 6 137 4033
+19afd 7 138 4033
+19b04 2 139 4033
+19b06 7 140 4033
+19b0d 2 142 4033
+19b0f a 144 4033
+19b19 6 146 4033
+19b1f 5 147 4033
+19b24 2 149 4033
+19b26 11 153 4033
+19b37 6 155 4033
+19b3d 5 156 4033
+19b42 8 158 4033
+19b4a b 165 4033
+19b55 5 166 4033
+19b5a 10 168 4033
+19b6a 5 173 4033
+19b6f 2 176 4033
+FUNC 19b71 71 c strcat_s
+19b71 0 13 823
+19b71 30 18 823
+19ba1 c 19 823
+19bad 2 21 823
+19baf 4 23 823
+19bb3 1 25 823
+19bb4 3 26 823
+19bb7 2 29 823
+19bb9 2 32 823
+19bbb d 35 823
+19bc8 4 39 823
+19bcc 2 41 823
+19bce e 42 823
+19bdc 5 45 823
+19be1 1 46 823
+FUNC 19be2 b3 10 strncpy_s
+19be2 5 13 739
+19be7 14 17 739
+19bfb 5 65 739
+19c00 2 66 739
+19c02 26 24 739
+19c28 5 25 739
+19c2d 2 28 739
+19c2f 2 29 739
+19c31 b 31 739
+19c3c 8 35 739
+19c44 d 37 739
+19c51 2 41 739
+19c53 12 45 739
+19c65 5 48 739
+19c6a 2 50 739
+19c6c 4 54 739
+19c70 6 56 739
+19c76 3 58 739
+19c79 c 59 739
+19c85 2 61 739
+19c87 e 62 739
+FUNC 19c95 46 4 _set_error_mode
+19c95 0 43 3937
+19c95 15 50 3937
+19caa 6 58 3937
+19cb0 1 65 3937
+19cb1 5 54 3937
+19cb6 7 55 3937
+19cbd 1 65 3937
+19cbe 1c 61 3937
+19cda 1 65 3937
+FUNC 19cdb a 4 __set_app_type
+19cdb 0 91 3937
+19cdb 9 96 3937
+19ce4 1 97 3937
+FUNC 19ce5 6 0 __get_app_type
+19ce5 0 120 3937
+19ce5 5 125 3937
+19cea 1 126 3937
+FUNC 19ceb 51 10 x_ismbbtype_l
+19ceb 6 213 4669
+19cf1 b 214 4669
+19cfc 4 219 4669
+19d00 3a 222 4669
+19d3a 2 223 4669
+FUNC 19d3c 15 8 _ismbbkalnum_l
+19d3c 0 80 4669
+19d3c 14 81 4669
+19d50 1 82 4669
+FUNC 19d51 13 4 _ismbbkalnum
+19d51 0 85 4669
+19d51 12 86 4669
+19d63 1 87 4669
+FUNC 19d64 15 8 _ismbbkprint_l
+19d64 0 90 4669
+19d64 14 91 4669
+19d78 1 92 4669
+FUNC 19d79 13 4 _ismbbkprint
+19d79 0 95 4669
+19d79 12 96 4669
+19d8b 1 97 4669
+FUNC 19d8c 15 8 _ismbbkpunct_l
+19d8c 0 100 4669
+19d8c 14 101 4669
+19da0 1 102 4669
+FUNC 19da1 13 4 _ismbbkpunct
+19da1 0 105 4669
+19da1 12 106 4669
+19db3 1 107 4669
+FUNC 19db4 18 8 _ismbbalnum_l
+19db4 0 113 4669
+19db4 17 114 4669
+19dcb 1 115 4669
+FUNC 19dcc 16 4 _ismbbalnum
+19dcc 0 118 4669
+19dcc 15 119 4669
+19de1 1 120 4669
+FUNC 19de2 18 8 _ismbbalpha_l
+19de2 0 123 4669
+19de2 17 124 4669
+19df9 1 125 4669
+FUNC 19dfa 16 4 _ismbbalpha
+19dfa 0 128 4669
+19dfa 15 129 4669
+19e0f 1 130 4669
+FUNC 19e10 18 8 _ismbbgraph_l
+19e10 0 133 4669
+19e10 17 134 4669
+19e27 1 135 4669
+FUNC 19e28 16 4 _ismbbgraph
+19e28 0 138 4669
+19e28 15 139 4669
+19e3d 1 140 4669
+FUNC 19e3e 18 8 _ismbbprint_l
+19e3e 0 143 4669
+19e3e 17 144 4669
+19e55 1 145 4669
+FUNC 19e56 16 4 _ismbbprint
+19e56 0 148 4669
+19e56 15 149 4669
+19e6b 1 150 4669
+FUNC 19e6c 15 8 _ismbbpunct_l
+19e6c 0 153 4669
+19e6c 14 154 4669
+19e80 1 155 4669
+FUNC 19e81 13 4 _ismbbpunct
+19e81 0 158 4669
+19e81 12 159 4669
+19e93 1 160 4669
+FUNC 19e94 15 8 _ismbblead_l
+19e94 0 166 4669
+19e94 14 167 4669
+19ea8 1 168 4669
+FUNC 19ea9 13 4 _ismbblead
+19ea9 0 171 4669
+19ea9 12 172 4669
+19ebb 1 173 4669
+FUNC 19ebc 15 8 _ismbbtrail_l
+19ebc 0 176 4669
+19ebc 14 177 4669
+19ed0 1 178 4669
+FUNC 19ed1 13 4 _ismbbtrail
+19ed1 0 181 4669
+19ed1 12 182 4669
+19ee3 1 183 4669
+FUNC 19ee4 53 8 _ismbbkana_l
+19ee4 6 189 4669
+19eea b 190 4669
+19ef5 10 192 4669
+19f05 1f 194 4669
+19f24 2 197 4669
+19f26 f 196 4669
+19f35 2 197 4669
+FUNC 19f37 e 4 _ismbbkana
+19f37 0 200 4669
+19f37 d 201 4669
+19f44 1 202 4669
+FUNC 19f45 44 4 _getbuf
+19f45 0 43 1893
+19f45 6 50 1893
+19f4b 16 58 1893
+19f61 4 61 1893
+19f65 7 62 1893
+19f6c 2 65 1893
+19f6e 4 69 1893
+19f72 6 70 1893
+19f78 7 71 1893
+19f7f 3 75 1893
+19f82 6 76 1893
+19f88 1 79 1893
+FUNC 19f89 1de 8 _fputwc_nolock
+19f89 15 90 2124
+19f9e b 93 2124
+19fa9 48 95 2124
+19ff1 6 101 2124
+19ff7 45 104 2124
+1a03c 27 115 2124
+1a063 9 116 2124
+1a06c 22 120 2124
+1a08e 2 121 2124
+1a090 8 124 2124
+1a098 42 127 2124
+1a0da 17 133 2124
+1a0f1 6 139 2124
+1a0f7 7 141 2124
+1a0fe 34 143 2124
+1a132 6 146 2124
+1a138 6 150 2124
+1a13e d 151 2124
+1a14b d 153 2124
+1a158 f 154 2124
+FUNC 1a167 78 8 fputwc
+1a167 c 48 2124
+1a173 2e 52 2124
+1a1a1 3 55 2124
+1a1a4 7 57 2124
+1a1ab 3 58 2124
+1a1ae 11 60 2124
+1a1bf c 63 2124
+1a1cb 4 67 2124
+1a1cf 6 68 2124
+1a1d5 a 64 2124
+FUNC 1a1df 5 8 putwc
+1a1df 0 162 2124
+1a1df 5 163 2124
+FUNC 1a1e4 1f7 14 wcstoxl
+1a1e4 8 82 6173
+1a1ec b 88 6173
+1a1f7 3 92 6173
+1a1fa b 95 6173
+1a205 2f 97 6173
+1a234 12 98 6173
+1a246 9 103 6173
+1a24f 2 105 6173
+1a251 18 106 6173
+1a269 6 108 6173
+1a26f 4 109 6173
+1a273 2 110 6173
+1a275 6 112 6173
+1a27b 5 113 6173
+1a280 5 115 6173
+1a285 b 118 6173
+1a290 9 119 6173
+1a299 f 120 6173
+1a2a8 9 123 6173
+1a2b1 7 121 6173
+1a2b8 6 126 6173
+1a2be 1a 128 6173
+1a2d8 2 129 6173
+1a2da 5 130 6173
+1a2df d 135 6173
+1a2ec c 141 6173
+1a2f8 15 143 6173
+1a30d 12 144 6173
+1a31f 5 148 6173
+1a324 4 152 6173
+1a328 c 159 6173
+1a334 4 165 6173
+1a338 6 166 6173
+1a33e 9 178 6173
+1a347 6 181 6173
+1a34d 3 183 6173
+1a350 4 184 6173
+1a354 2 186 6173
+1a356 c 161 6173
+1a362 5 173 6173
+1a367 2 174 6173
+1a369 24 189 6173
+1a38d 5 192 6173
+1a392 c 193 6173
+1a39e 6 194 6173
+1a3a4 10 195 6173
+1a3b4 8 201 6173
+1a3bc 2 203 6173
+1a3be 6 205 6173
+1a3c4 3 207 6173
+1a3c7 12 209 6173
+1a3d9 2 210 6173
+FUNC 1a3db 29 c wcstol
+1a3db 3 217 6173
+1a3de 8 218 6173
+1a3e6 13 220 6173
+1a3f9 9 224 6173
+1a402 2 226 6173
+FUNC 1a404 1b 10 _wcstol_l
+1a404 0 234 6173
+1a404 1a 235 6173
+1a41e 1 236 6173
+FUNC 1a41f 2a c wcstoul
+1a41f 3 243 6173
+1a422 7 244 6173
+1a429 14 246 6173
+1a43d a 250 6173
+1a447 2 252 6173
+FUNC 1a449 1b 10 _wcstoul_l
+1a449 0 260 6173
+1a449 1a 261 6173
+1a463 1 262 6173
+FUNC 1a464 9 0 _fptrap
+1a464 0 46 2503
+1a464 8 47 2503
+1a46c 1 48 2503
+FUNC 1a46d 54 8 _isalpha_l
+1a46d 6 57 6535
+1a473 b 58 6535
+1a47e 41 60 6535
+1a4bf 2 61 6535
+FUNC 1a4c1 2b 4 isalpha
+1a4c1 0 66 6535
+1a4c1 9 67 6535
+1a4ca 13 69 6535
+1a4dd 1 75 6535
+1a4de d 73 6535
+1a4eb 1 75 6535
+FUNC 1a4ec 4f 8 _isupper_l
+1a4ec 6 81 6535
+1a4f2 b 82 6535
+1a4fd 3c 84 6535
+1a539 2 85 6535
+FUNC 1a53b 29 4 isupper
+1a53b 0 90 6535
+1a53b 9 91 6535
+1a544 11 93 6535
+1a555 1 99 6535
+1a556 d 97 6535
+1a563 1 99 6535
+FUNC 1a564 4f 8 _islower_l
+1a564 6 105 6535
+1a56a b 106 6535
+1a575 3c 108 6535
+1a5b1 2 109 6535
+FUNC 1a5b3 29 4 islower
+1a5b3 0 114 6535
+1a5b3 9 115 6535
+1a5bc 11 117 6535
+1a5cd 1 123 6535
+1a5ce d 121 6535
+1a5db 1 123 6535
+FUNC 1a5dc 4f 8 _isdigit_l
+1a5dc 6 129 6535
+1a5e2 b 130 6535
+1a5ed 3c 132 6535
+1a629 2 133 6535
+FUNC 1a62b 29 4 isdigit
+1a62b 0 138 6535
+1a62b 9 139 6535
+1a634 11 141 6535
+1a645 1 147 6535
+1a646 d 145 6535
+1a653 1 147 6535
+FUNC 1a654 54 8 _isxdigit_l
+1a654 6 153 6535
+1a65a b 154 6535
+1a665 41 156 6535
+1a6a6 2 157 6535
+FUNC 1a6a8 2b 4 isxdigit
+1a6a8 0 162 6535
+1a6a8 9 163 6535
+1a6b1 13 165 6535
+1a6c4 1 171 6535
+1a6c5 d 169 6535
+1a6d2 1 171 6535
+FUNC 1a6d3 4f 8 _isspace_l
+1a6d3 6 177 6535
+1a6d9 b 178 6535
+1a6e4 3c 180 6535
+1a720 2 181 6535
+FUNC 1a722 29 4 isspace
+1a722 0 186 6535
+1a722 9 187 6535
+1a72b 11 189 6535
+1a73c 1 195 6535
+1a73d d 193 6535
+1a74a 1 195 6535
+FUNC 1a74b 4f 8 _ispunct_l
+1a74b 6 201 6535
+1a751 b 202 6535
+1a75c 3c 204 6535
+1a798 2 205 6535
+FUNC 1a79a 29 4 ispunct
+1a79a 0 210 6535
+1a79a 9 211 6535
+1a7a3 11 213 6535
+1a7b4 1 219 6535
+1a7b5 d 217 6535
+1a7c2 1 219 6535
+FUNC 1a7c3 54 8 _isalnum_l
+1a7c3 6 225 6535
+1a7c9 b 226 6535
+1a7d4 41 228 6535
+1a815 2 229 6535
+FUNC 1a817 2b 4 isalnum
+1a817 0 234 6535
+1a817 9 235 6535
+1a820 13 237 6535
+1a833 1 243 6535
+1a834 d 241 6535
+1a841 1 243 6535
+FUNC 1a842 54 8 _isprint_l
+1a842 6 249 6535
+1a848 b 250 6535
+1a853 41 252 6535
+1a894 2 253 6535
+FUNC 1a896 2b 4 isprint
+1a896 0 258 6535
+1a896 9 259 6535
+1a89f 13 261 6535
+1a8b2 1 267 6535
+1a8b3 d 265 6535
+1a8c0 1 267 6535
+FUNC 1a8c1 54 8 _isgraph_l
+1a8c1 6 273 6535
+1a8c7 b 274 6535
+1a8d2 41 276 6535
+1a913 2 277 6535
+FUNC 1a915 2b 4 isgraph
+1a915 0 282 6535
+1a915 9 283 6535
+1a91e 13 285 6535
+1a931 1 291 6535
+1a932 d 289 6535
+1a93f 1 291 6535
+FUNC 1a940 4f 8 _iscntrl_l
+1a940 6 297 6535
+1a946 b 298 6535
+1a951 3c 300 6535
+1a98d 2 301 6535
+FUNC 1a98f 29 4 iscntrl
+1a98f 0 306 6535
+1a98f 9 307 6535
+1a998 11 309 6535
+1a9a9 1 315 6535
+1a9aa d 313 6535
+1a9b7 1 315 6535
+FUNC 1a9b8 d 4 __isascii
+1a9b8 0 320 6535
+1a9b8 c 321 6535
+1a9c4 1 322 6535
+FUNC 1a9c5 8 4 __toascii
+1a9c5 0 327 6535
+1a9c5 7 328 6535
+1a9cc 1 329 6535
+FUNC 1a9cd 1f 8 _iscsymf_l
+1a9cd 0 335 6535
+1a9cd 1a 336 6535
+1a9e7 1 337 6535
+1a9e8 3 336 6535
+1a9eb 1 337 6535
+FUNC 1a9ec 1a 4 __iscsymf
+1a9ec 0 341 6535
+1a9ec 15 342 6535
+1aa01 1 343 6535
+1aa02 3 342 6535
+1aa05 1 343 6535
+FUNC 1aa06 1f 8 _iscsym_l
+1aa06 0 349 6535
+1aa06 1a 350 6535
+1aa20 1 351 6535
+1aa21 3 350 6535
+1aa24 1 351 6535
+FUNC 1aa25 1c 4 __iscsym
+1aa25 0 356 6535
+1aa25 17 357 6535
+1aa3c 1 358 6535
+1aa3d 3 357 6535
+1aa40 1 358 6535
+FUNC 1aa41 12 8 _MarkAllocaS
+1aa41 0 207 2895
+1aa41 8 208 2895
+1aa49 6 210 2895
+1aa4f 3 211 2895
+1aa52 1 214 2895
+FUNC 1aa53 1b 4 _freea
+1aa53 0 249 2895
+1aa53 8 251 2895
+1aa5b 3 253 2895
+1aa5e 8 255 2895
+1aa66 7 257 2895
+1aa6d 1 266 2895
+FUNC 1aa6e 13b 18 __crtGetLocaleInfoW_stat
+1aa6e f 60 2876
+1aa7d 14 68 2876
+1aa91 d 70 2876
+1aa9e 8 71 2876
+1aaa6 b 73 2876
+1aab1 f 74 2876
+1aac0 5 79 2876
+1aac5 13 81 2876
+1aad8 7 86 2876
+1aadf 2 140 2876
+1aae1 8 96 2876
+1aae9 b 97 2876
+1aaf4 16 100 2876
+1ab0a 7 101 2876
+1ab11 48 104 2876
+1ab59 2 105 2876
+1ab5b 2 106 2876
+1ab5d e 110 2876
+1ab6b 7 113 2876
+1ab72 2 121 2876
+1ab74 2 123 2876
+1ab76 17 130 2876
+1ab8d 6 134 2876
+1ab93 4 136 2876
+1ab97 12 141 2876
+FUNC 1aba9 3b 18 __crtGetLocaleInfoW
+1aba9 6 151 2876
+1abaf b 152 2876
+1abba 28 161 2876
+1abe2 2 162 2876
+FUNC 1abe4 13d 18 __crtGetLocaleInfoA_stat
+1abe4 f 60 4251
+1abf3 17 68 4251
+1ac0a a 70 4251
+1ac14 8 71 4251
+1ac1c b 73 4251
+1ac27 f 74 4251
+1ac36 11 79 4251
+1ac47 4 86 4251
+1ac4b 5 96 4251
+1ac50 b 97 4251
+1ac5b 13 100 4251
+1ac6e 7 101 4251
+1ac75 49 104 4251
+1acbe 2 105 4251
+1acc0 2 106 4251
+1acc2 10 110 4251
+1acd2 3 114 4251
+1acd5 6 124 4251
+1acdb 2 126 4251
+1acdd 15 135 4251
+1acf2 7 139 4251
+1acf9 4 141 4251
+1acfd 12 81 4251
+1ad0f 12 145 4251
+FUNC 1ad21 3b 18 __crtGetLocaleInfoA
+1ad21 6 155 4251
+1ad27 b 156 4251
+1ad32 28 165 4251
+1ad5a 2 166 4251
+FUNC 1ad5c 1a 4 strncnt
+1ad5c 0 48 4203
+1ad5c 6 49 4203
+1ad62 6 52 4203
+1ad68 1 53 4203
+1ad69 5 52 4203
+1ad6e 7 55 4203
+1ad75 1 56 4203
+FUNC 1ad76 3a2 20 __crtLCMapStringA_stat
+1ad76 12 99 4203
+1ad88 d 108 4203
+1ad95 1b 109 4203
+1adb0 8 110 4203
+1adb8 b 111 4203
+1adc3 a 112 4203
+1adcd 5 119 4203
+1add2 19 120 4203
+1adeb 5 124 4203
+1adf0 1 125 4203
+1adf1 3 127 4203
+1adf4 16 133 4203
+1ae0a 9 213 4203
+1ae13 8 235 4203
+1ae1b 8 236 4203
+1ae23 27 247 4203
+1ae4a 6 248 4203
+1ae50 48 251 4203
+1ae98 3 252 4203
+1ae9b 6 253 4203
+1aea1 19 262 4203
+1aeba 21 271 4203
+1aedb 8 274 4203
+1aee3 9 277 4203
+1aeec 9 279 4203
+1aef5 12 288 4203
+1af07 5 292 4203
+1af0c 4b 298 4203
+1af57 4 299 4203
+1af5b 18 309 4203
+1af73 3 312 4203
+1af76 6 322 4203
+1af7c 2 325 4203
+1af7e 17 335 4203
+1af95 7 342 4203
+1af9c 8 344 4203
+1afa4 9 346 4203
+1afad b 141 4203
+1afb8 8 142 4203
+1afc0 5 143 4203
+1afc5 8 144 4203
+1afcd 11 146 4203
+1afde 7 147 4203
+1afe5 9 153 4203
+1afee 15 155 4203
+1b003 5 156 4203
+1b008 2 157 4203
+1b00a 1b 164 4203
+1b025 7 166 4203
+1b02c 41 169 4203
+1b06d 2 170 4203
+1b06f 28 196 4203
+1b097 2 183 4203
+1b099 2 184 4203
+1b09b 25 190 4203
+1b0c0 7 198 4203
+1b0c7 2 199 4203
+1b0c9 1a 202 4203
+1b0e3 5 204 4203
+1b0e8 9 205 4203
+1b0f1 c 206 4203
+1b0fd 7 207 4203
+1b104 2 208 4203
+1b106 12 350 4203
+FUNC 1b118 43 24 __crtLCMapStringA
+1b118 6 363 4203
+1b11e b 364 4203
+1b129 30 376 4203
+1b159 2 377 4203
+FUNC 1b15b 1b8 1c __crtGetStringTypeA_stat
+1b15b f 66 4155
+1b16a 10 75 4155
+1b17a 18 79 4155
+1b192 8 80 4155
+1b19a b 82 4155
+1b1a5 f 83 4155
+1b1b4 11 88 4155
+1b1c5 9 120 4155
+1b1ce 8 141 4155
+1b1d6 8 142 4155
+1b1de 27 153 4155
+1b205 6 154 4155
+1b20b 3e 157 4155
+1b249 2 158 4155
+1b24b 2 159 4155
+1b24d f 161 4155
+1b25c 13 169 4155
+1b26f 11 174 4155
+1b280 6 176 4155
+1b286 6 178 4155
+1b28c 2 90 4155
+1b28e 5 94 4155
+1b293 8 95 4155
+1b29b 5 96 4155
+1b2a0 8 97 4155
+1b2a8 e 99 4155
+1b2b6 4 100 4155
+1b2ba 5 104 4155
+1b2bf 17 106 4155
+1b2d6 2 107 4155
+1b2d8 2 108 4155
+1b2da 3 109 4155
+1b2dd 15 112 4155
+1b2f2 6 113 4155
+1b2f8 7 114 4155
+1b2ff 2 115 4155
+1b301 12 182 4155
+FUNC 1b313 40 20 __crtGetStringTypeA
+1b313 6 194 4155
+1b319 b 195 4155
+1b324 2d 206 4155
+1b351 2 207 4155
+FUNC 1b353 6 0 __pwctype_func
+1b353 0 24 3986
+1b353 5 25 3986
+1b358 1 26 3986
+FUNC 1b359 29 0 __pctype_func
+1b359 0 29 3986
+1b359 7 35 3986
+1b360 3 36 3986
+1b363 18 38 3986
+1b37b 6 39 3986
+1b381 1 40 3986
+FUNC 1b382 419 0 _get_lc_time
+1b382 6 94 3379
+1b388 12 104 3379
+1b39a 3 105 3379
+1b39d 2 170 3379
+1b39f 9 108 3379
+1b3a8 16 112 3379
+1b3be 15 113 3379
+1b3d3 15 114 3379
+1b3e8 18 115 3379
+1b400 15 116 3379
+1b415 13 117 3379
+1b428 14 118 3379
+1b43c 18 120 3379
+1b454 15 121 3379
+1b469 15 122 3379
+1b47e 15 123 3379
+1b493 18 124 3379
+1b4ab 15 125 3379
+1b4c0 15 126 3379
+1b4d5 15 128 3379
+1b4ea 18 129 3379
+1b502 15 130 3379
+1b517 15 131 3379
+1b52c 15 132 3379
+1b541 18 133 3379
+1b559 15 134 3379
+1b56e 15 135 3379
+1b583 15 136 3379
+1b598 18 137 3379
+1b5b0 15 138 3379
+1b5c5 15 139 3379
+1b5da 15 141 3379
+1b5ef 18 142 3379
+1b607 15 143 3379
+1b61c 15 144 3379
+1b631 15 145 3379
+1b646 18 146 3379
+1b65e 18 147 3379
+1b676 18 148 3379
+1b68e 18 149 3379
+1b6a6 1b 150 3379
+1b6c1 18 151 3379
+1b6d9 18 152 3379
+1b6f1 18 154 3379
+1b709 1b 155 3379
+1b724 18 160 3379
+1b73c 18 161 3379
+1b754 1b 163 3379
+1b76f 20 165 3379
+1b78f a 169 3379
+1b799 2 170 3379
+FUNC 1b79b 190 4 __free_lc_time
+1b79b 1 179 3379
+1b79c c 180 3379
+1b7a8 8 183 3379
+1b7b0 8 184 3379
+1b7b8 8 185 3379
+1b7c0 8 186 3379
+1b7c8 8 187 3379
+1b7d0 8 188 3379
+1b7d8 7 189 3379
+1b7df 8 191 3379
+1b7e7 8 192 3379
+1b7ef 8 193 3379
+1b7f7 8 194 3379
+1b7ff 8 195 3379
+1b807 8 196 3379
+1b80f 8 197 3379
+1b817 8 199 3379
+1b81f b 200 3379
+1b82a 8 201 3379
+1b832 8 202 3379
+1b83a 8 203 3379
+1b842 8 204 3379
+1b84a 8 205 3379
+1b852 8 206 3379
+1b85a 8 207 3379
+1b862 8 208 3379
+1b86a 8 209 3379
+1b872 8 210 3379
+1b87a 8 212 3379
+1b882 8 213 3379
+1b88a 8 214 3379
+1b892 8 215 3379
+1b89a 8 216 3379
+1b8a2 b 217 3379
+1b8ad b 218 3379
+1b8b8 b 219 3379
+1b8c3 b 220 3379
+1b8ce b 221 3379
+1b8d9 b 222 3379
+1b8e4 b 223 3379
+1b8ef b 225 3379
+1b8fa b 226 3379
+1b905 b 228 3379
+1b910 b 229 3379
+1b91b f 230 3379
+1b92a 1 232 3379
+FUNC 1b92b 73 4 __init_time
+1b92b 4 56 3379
+1b92f f 60 3379
+1b93e 16 64 3379
+1b954 4 65 3379
+1b958 b 67 3379
+1b963 6 69 3379
+1b969 8 70 3379
+1b971 2 71 3379
+1b973 6 73 3379
+1b979 2 74 3379
+1b97b 2 75 3379
+1b97d 18 78 3379
+1b995 2 82 3379
+1b997 6 83 3379
+1b99d 1 84 3379
+FUNC 1b99e 33 0 fix_grouping
+1b99e 0 32 3427
+1b99e 8 40 3427
+1b9a6 a 43 3427
+1b9b0 4 45 3427
+1b9b4 1 61 3427
+1b9b5 6 40 3427
+1b9bb 1 63 3427
+1b9bc 4 50 3427
+1b9c0 2 52 3427
+1b9c2 7 55 3427
+1b9c9 6 56 3427
+1b9cf 2 60 3427
+FUNC 1b9d1 40 4 __free_lconv_num
+1b9d1 1 211 3427
+1b9d2 8 212 3427
+1b9da a 215 3427
+1b9e4 7 216 3427
+1b9eb b 218 3427
+1b9f6 7 219 3427
+1b9fd b 221 3427
+1ba08 8 222 3427
+1ba10 1 223 3427
+FUNC 1ba11 1c8 4 __init_numeric
+1ba11 7 84 3427
+1ba18 4 92 3427
+1ba1c 2 93 3427
+1ba1e 11 96 3427
+1ba2f 3 177 3427
+1ba32 3 178 3427
+1ba35 c 179 3427
+1ba41 14 102 3427
+1ba55 8 103 3427
+1ba5d 9 108 3427
+1ba66 13 113 3427
+1ba79 9 115 3427
+1ba82 2 116 3427
+1ba84 2 118 3427
+1ba86 9 120 3427
+1ba8f 12 125 3427
+1baa1 8 127 3427
+1baa9 a 128 3427
+1bab3 7 129 3427
+1baba 2 131 3427
+1babc 19 140 3427
+1bad5 15 142 3427
+1baea 1b 144 3427
+1bb05 2 146 3427
+1bb07 c 148 3427
+1bb13 1e 154 3427
+1bb31 2 156 3427
+1bb33 17 154 3427
+1bb4a b 164 3427
+1bb55 9 165 3427
+1bb5e c 166 3427
+1bb6a 8 168 3427
+1bb72 7 169 3427
+1bb79 2 170 3427
+1bb7b 13 186 3427
+1bb8e 11 191 3427
+1bb9f b 193 3427
+1bbaa d 194 3427
+1bbb7 9 197 3427
+1bbc0 9 198 3427
+1bbc9 9 200 3427
+1bbd2 5 201 3427
+1bbd7 2 202 3427
+FUNC 1bbd9 33 0 fix_grouping
+1bbd9 0 214 3470
+1bbd9 8 222 3470
+1bbe1 a 225 3470
+1bbeb 4 227 3470
+1bbef 1 243 3470
+1bbf0 6 222 3470
+1bbf6 1 245 3470
+1bbf7 4 232 3470
+1bbfb 2 234 3470
+1bbfd 7 237 3470
+1bc04 6 238 3470
+1bc0a 2 242 3470
+FUNC 1bc0c 89 4 __free_lconv_mon
+1bc0c 1 255 3470
+1bc0d 8 256 3470
+1bc15 b 259 3470
+1bc20 7 260 3470
+1bc27 b 262 3470
+1bc32 7 263 3470
+1bc39 b 265 3470
+1bc44 7 266 3470
+1bc4b b 268 3470
+1bc56 7 269 3470
+1bc5d b 271 3470
+1bc68 7 272 3470
+1bc6f b 274 3470
+1bc7a 7 275 3470
+1bc81 b 277 3470
+1bc8c 8 278 3470
+1bc94 1 279 3470
+FUNC 1bc95 2c4 4 __init_monetary
+1bc95 8 65 3470
+1bc9d 6 73 3470
+1bca3 13 77 3470
+1bcb6 3 187 3470
+1bcb9 3 188 3470
+1bcbc a 189 3470
+1bcc6 11 83 3470
+1bcd7 8 84 3470
+1bcdf f 89 3470
+1bcee 7 91 3470
+1bcf5 2 92 3470
+1bcf7 2 94 3470
+1bcf9 9 96 3470
+1bd02 f 101 3470
+1bd11 6 103 3470
+1bd17 9 104 3470
+1bd20 2 105 3470
+1bd22 2 107 3470
+1bd24 4 112 3470
+1bd28 14 117 3470
+1bd3c 14 119 3470
+1bd50 14 121 3470
+1bd64 17 123 3470
+1bd7b 14 125 3470
+1bd8f 14 128 3470
+1bda3 14 130 3470
+1bdb7 17 133 3470
+1bdce 14 135 3470
+1bde2 14 137 3470
+1bdf6 14 139 3470
+1be0a 17 141 3470
+1be21 14 143 3470
+1be35 14 145 3470
+1be49 17 147 3470
+1be60 2 149 3470
+1be62 6 150 3470
+1be68 6 151 3470
+1be6e 8 152 3470
+1be76 b 153 3470
+1be81 5 154 3470
+1be86 1c 157 3470
+1bea2 2 159 3470
+1bea4 17 157 3470
+1bebb c 169 3470
+1bec7 3 175 3470
+1beca 32 181 3470
+1befc 11 194 3470
+1bf0d 15 199 3470
+1bf22 b 201 3470
+1bf2d d 202 3470
+1bf3a 9 204 3470
+1bf43 9 205 3470
+1bf4c 6 206 3470
+1bf52 5 208 3470
+1bf57 2 209 3470
+FUNC 1bf59 395 4 __init_ctype
+1bf59 11 59 3562
+1bf6a 6 60 3562
+1bf70 1f 82 3562
+1bf8f 7 84 3562
+1bf96 20 89 3562
+1bfb6 7 94 3562
+1bfbd 10 98 3562
+1bfcd b 100 3562
+1bfd8 b 102 3562
+1bfe3 12 104 3562
+1bff5 2f 106 3562
+1c024 5 109 3562
+1c029 2 112 3562
+1c02b e 113 3562
+1c039 15 115 3562
+1c04e a 118 3562
+1c058 4 121 3562
+1c05c 8 124 3562
+1c064 e 126 3562
+1c072 9 128 3562
+1c07b b 129 3562
+1c086 b 128 3562
+1c091 2c 140 3562
+1c0bd 33 155 3562
+1c0f0 2d 166 3562
+1c11d 37 178 3562
+1c154 11 180 3562
+1c165 17 182 3562
+1c17c 15 183 3562
+1c191 d 180 3562
+1c19e 12 189 3562
+1c1b0 f 190 3562
+1c1bf 12 191 3562
+1c1d1 18 195 3562
+1c1e9 11 198 3562
+1c1fa 13 199 3562
+1c20d e 200 3562
+1c21b e 201 3562
+1c229 9 203 3562
+1c232 6 204 3562
+1c238 9 206 3562
+1c241 9 207 3562
+1c24a 9 208 3562
+1c253 9 209 3562
+1c25c 9 210 3562
+1c265 9 213 3562
+1c26e 4 214 3562
+1c272 8 217 3562
+1c27a 8 218 3562
+1c282 8 219 3562
+1c28a 10 220 3562
+1c29a 13 227 3562
+1c2ad 2 231 3562
+1c2af 6 232 3562
+1c2b5 a 233 3562
+1c2bf a 234 3562
+1c2c9 a 235 3562
+1c2d3 a 236 3562
+1c2dd 2 238 3562
+1c2df f 240 3562
+FUNC 1c2ee 29 0 ___mb_cur_max_func
+1c2ee 0 248 3562
+1c2ee 7 254 3562
+1c2f5 3 255 3562
+1c2f8 18 257 3562
+1c310 6 259 3562
+1c316 1 260 3562
+FUNC 1c317 16 4 ___mb_cur_max_l_func
+1c317 0 263 3562
+1c317 15 264 3562
+1c32c 1 265 3562
+FUNC 1c32d 26 0 ___lc_codepage_func
+1c32d 0 268 3562
+1c32d 7 274 3562
+1c334 3 275 3562
+1c337 18 277 3562
+1c34f 3 279 3562
+1c352 1 280 3562
+FUNC 1c353 26 0 ___lc_collate_cp_func
+1c353 0 284 3562
+1c353 7 290 3562
+1c35a 3 291 3562
+1c35d 18 293 3562
+1c375 3 295 3562
+1c378 1 296 3562
+FUNC 1c379 26 0 ___lc_handle_func
+1c379 0 300 3562
+1c379 7 306 3562
+1c380 3 307 3562
+1c383 18 309 3562
+1c39b 3 311 3562
+1c39e 1 312 3562
+FUNC 1c39f 3 4 __init_collate
+1c39f 0 41 3650
+1c39f 2 42 3650
+1c3a1 1 43 3650
+FUNC 1c3a2 fe 4 _Getdays_l
+1c3a2 9 111 516
+1c3ab d 115 516
+1c3b8 9 117 516
+1c3c1 9 119 516
+1c3ca 28 120 516
+1c3f2 b 121 516
+1c3fd c 123 516
+1c409 4 126 516
+1c40d 30 128 516
+1c43d 8 129 516
+1c445 31 131 516
+1c476 12 132 516
+1c488 3 134 516
+1c48b 13 137 516
+1c49e 2 138 516
+FUNC 1c4a0 9 0 _Getdays
+1c4a0 0 142 516
+1c4a0 8 143 516
+1c4a8 1 144 516
+FUNC 1c4a9 fe 4 _Getmonths_l
+1c4a9 9 150 516
+1c4b2 d 154 516
+1c4bf 16 156 516
+1c4d5 2b 159 516
+1c500 b 160 516
+1c50b 8 162 516
+1c513 a 163 516
+1c51d 2d 167 516
+1c54a 8 168 516
+1c552 2c 170 516
+1c57e 11 171 516
+1c58f 3 173 516
+1c592 13 176 516
+1c5a5 2 177 516
+FUNC 1c5a7 9 0 _Getmonths
+1c5a7 0 181 516
+1c5a7 8 182 516
+1c5af 1 183 516
+FUNC 1c5b0 355 4 _Gettnames_l
+1c5b0 9 189 516
+1c5b9 d 193 516
+1c5c6 9 195 516
+1c5cf 9 197 516
+1c5d8 28 198 516
+1c600 d 199 516
+1c60d 29 200 516
+1c636 18 201 516
+1c64e 11 202 516
+1c65f f 203 516
+1c66e f 204 516
+1c67d 7 205 516
+1c684 e 206 516
+1c692 8 208 516
+1c69a 12 212 516
+1c6ac 13 213 516
+1c6bf 6 214 516
+1c6c5 2a 215 516
+1c6ef 6 216 516
+1c6f5 d 217 516
+1c702 26 218 516
+1c728 1c 219 516
+1c744 18 221 516
+1c75c 6 222 516
+1c762 26 223 516
+1c788 a 224 516
+1c792 5 225 516
+1c797 2a 226 516
+1c7c1 18 227 516
+1c7d9 30 230 516
+1c809 a 231 516
+1c813 30 233 516
+1c843 a 234 516
+1c84d 30 236 516
+1c87d a 237 516
+1c887 30 239 516
+1c8b7 a 240 516
+1c8c1 30 242 516
+1c8f1 12 245 516
+1c903 2 246 516
+FUNC 1c905 9 0 _Gettnames
+1c905 0 250 516
+1c905 8 251 516
+1c90d 1 252 516
+FUNC 1c90e 20 0 _store_str
+1c90e 0 869 516
+1c90e f 871 516
+1c91d 7 872 516
+1c924 9 873 516
+1c92d 1 875 516
+FUNC 1c92e 36 0 _store_number
+1c92e 0 965 516
+1c92e 8 973 516
+1c936 c 976 516
+1c942 2 977 516
+1c944 b 978 516
+1c94f 2 981 516
+1c951 2 982 516
+1c953 1 983 516
+1c954 7 988 516
+1c95b 3 989 516
+1c95e 5 990 516
+1c963 1 991 516
+FUNC 1c964 79 4 _store_num
+1c964 8 909 516
+1c96c 2 910 516
+1c96e 8 912 516
+1c976 33 913 516
+1c9a9 2 914 516
+1c9ab 4 917 516
+1c9af 8 918 516
+1c9b7 b 919 516
+1c9c2 c 921 516
+1c9ce 5 923 516
+1c9d3 2 924 516
+1c9d5 2 926 516
+1c9d7 4 927 516
+1c9db 2 928 516
+FUNC 1c9dd 3e6 10 _expandtime
+1c9dd 5 548 516
+1c9e2 4f 558 516
+1ca31 16 659 516
+1ca47 5 662 516
+1ca4c 16 587 516
+1ca62 7 589 516
+1ca69 5 590 516
+1ca6e 16 571 516
+1ca84 7 573 516
+1ca8b 5 574 516
+1ca90 5 822 516
+1ca95 7 823 516
+1ca9c 5 824 516
+1caa1 16 667 516
+1cab7 10 668 516
+1cac7 2 669 516
+1cac9 5 672 516
+1cace 23 558 516
+1caf1 6 787 516
+1caf7 5 789 516
+1cafc 15 736 516
+1cb11 2 737 516
+1cb13 2 739 516
+1cb15 5 740 516
+1cb1a 15 722 516
+1cb2f 2 723 516
+1cb31 16 742 516
+1cb47 4 743 516
+1cb4b 2 744 516
+1cb4d 5 745 516
+1cb52 6 746 516
+1cb58 8 747 516
+1cb60 1 748 516
+1cb61 5 752 516
+1cb66 f 715 516
+1cb75 5 718 516
+1cb7a 3 696 516
+1cb7d 2 699 516
+1cb7f 1d 804 516
+1cb9c 6 806 516
+1cba2 d 808 516
+1cbaf 2 809 516
+1cbb1 37 558 516
+1cbe8 19 678 516
+1cc01 8 680 516
+1cc09 2 681 516
+1cc0b 15 650 516
+1cc20 13 652 516
+1cc33 5 653 516
+1cc38 1e 601 516
+1cc56 2 603 516
+1cc58 5 606 516
+1cc5d 2 607 516
+1cc5f 2 608 516
+1cc61 25 615 516
+1cc86 2 617 516
+1cc88 1 627 516
+1cc89 2 642 516
+1cc8b e 579 516
+1cc99 7 581 516
+1cca0 5 582 516
+1cca5 2d 562 516
+1ccd2 6 564 516
+1ccd8 5 565 516
+1ccdd e 687 516
+1cceb 3 689 516
+1ccee 5 690 516
+1ccf3 15 558 516
+1cd08 2 834 516
+1cd0a 5 814 516
+1cd0f 19 817 516
+1cd28 5 819 516
+1cd2d d 795 516
+1cd3a b 798 516
+1cd45 5 799 516
+1cd4a 11 762 516
+1cd5b 5 764 516
+1cd60 1 774 516
+1cd61 5 776 516
+1cd66 16 729 516
+1cd7c 6 731 516
+1cd82 5 732 516
+1cd87 16 704 516
+1cd9d 3 705 516
+1cda0 b 706 516
+1cdab 2 707 516
+1cdad e 708 516
+1cdbb 6 839 516
+1cdc1 2 840 516
+FUNC 1cdc3 45d 18 _store_winword
+1cdc3 10 1035 516
+1cdd3 5 1043 516
+1cdd8 a 1053 516
+1cde2 3 1043 516
+1cde5 6 1053 516
+1cdeb 2 1054 516
+1cded 6 1049 516
+1cdf3 2 1050 516
+1cdf5 6 1046 516
+1cdfb 10 1057 516
+1ce0b 4 1066 516
+1ce0f 8 1067 516
+1ce17 6 1069 516
+1ce1d d 1075 516
+1ce2a a 1076 516
+1ce34 8 1077 516
+1ce3c 4 1078 516
+1ce40 2a 1085 516
+1ce6a b 1087 516
+1ce75 31 1092 516
+1cea6 7 1093 516
+1cead 3 1097 516
+1ceb0 13 1100 516
+1cec3 10 1101 516
+1ced3 b 1102 516
+1cede b 1103 516
+1cee9 9 1106 516
+1cef2 3 1291 516
+1cef5 12 1292 516
+1cf07 11 1114 516
+1cf18 5 1117 516
+1cf1d b 1120 516
+1cf28 37 1125 516
+1cf5f 14 1274 516
+1cf73 c 1277 516
+1cf7f 8 1283 516
+1cf87 4 1284 516
+1cf8b 9 1286 516
+1cf94 c 1287 516
+1cfa0 5 1277 516
+1cfa5 e 1128 516
+1cfb3 7 1133 516
+1cfba 7 1132 516
+1cfc1 7 1130 516
+1cfc8 2 1131 516
+1cfca 5 1134 516
+1cfcf a 1156 516
+1cfd9 7 1158 516
+1cfe0 2 1159 516
+1cfe2 5 1160 516
+1cfe7 11 1175 516
+1cff8 5 1176 516
+1cffd 11 1177 516
+1d00e 6 1178 516
+1d014 2 1179 516
+1d016 5 1180 516
+1d01b b 1225 516
+1d026 13 1226 516
+1d039 4 1228 516
+1d03d 1a 1233 516
+1d057 9 1236 516
+1d060 8 1242 516
+1d068 4 1243 516
+1d06c 9 1246 516
+1d075 8 1247 516
+1d07d 5 1277 516
+1d082 1 1230 516
+1d083 5 1250 516
+1d088 12 1136 516
+1d09a 7 1141 516
+1d0a1 7 1140 516
+1d0a8 7 1138 516
+1d0af 2 1139 516
+1d0b1 5 1142 516
+1d0b6 29 1125 516
+1d0df e 1144 516
+1d0ed 7 1147 516
+1d0f4 2 1146 516
+1d0f6 5 1148 516
+1d0fb 7 1182 516
+1d102 b 1183 516
+1d10d 2 1184 516
+1d10f 6 1185 516
+1d115 12 1187 516
+1d127 17 1188 516
+1d13e c 1191 516
+1d14a 8 1197 516
+1d152 4 1198 516
+1d156 8 1201 516
+1d15e 2 1202 516
+1d160 5 1203 516
+1d165 9 1204 516
+1d16e 1a 1205 516
+1d188 9 1207 516
+1d191 8 1212 516
+1d199 4 1213 516
+1d19d 9 1215 516
+1d1a6 8 1216 516
+1d1ae 2 1220 516
+1d1b0 d 1168 516
+1d1bd 7 1170 516
+1d1c4 2 1171 516
+1d1c6 2 1172 516
+1d1c8 d 1162 516
+1d1d5 7 1164 516
+1d1dc 2 1165 516
+1d1de 2 1166 516
+1d1e0 d 1150 516
+1d1ed 7 1152 516
+1d1f4 2 1153 516
+1d1f6 1b 1268 516
+1d211 3 1272 516
+1d214 5 1273 516
+1d219 7 1194 516
+FUNC 1d220 1af 18 _Strftime_l
+1d220 6 356 516
+1d226 4 361 516
+1d22a 13 362 516
+1d23d 33 364 516
+1d270 33 365 516
+1d2a3 d 368 516
+1d2b0 10 375 516
+1d2c0 e 385 516
+1d2ce a 387 516
+1d2d8 1e 435 516
+1d2f6 4 438 516
+1d2fa a 446 516
+1d304 5 447 516
+1d309 b 452 516
+1d314 3 453 516
+1d317 2 454 516
+1d319 7 400 516
+1d320 1 405 516
+1d321 2 408 516
+1d323 5 409 516
+1d328 1 411 516
+1d329 1 412 516
+1d32a 1d 415 516
+1d347 1 428 516
+1d348 5 385 516
+1d34d 5 464 516
+1d352 5 469 516
+1d357 13 470 516
+1d36a 3 441 516
+1d36d f 478 516
+1d37c b 481 516
+1d387 2 483 516
+1d389 b 402 516
+1d394 2 403 516
+1d396 5 421 516
+1d39b 7 423 516
+1d3a2 2 464 516
+1d3a4 18 485 516
+1d3bc 11 488 516
+1d3cd 2 490 516
+FUNC 1d3cf 1e 14 _strftime_l
+1d3cf 3 291 516
+1d3d2 19 292 516
+1d3eb 2 293 516
+FUNC 1d3ed 1d 10 strftime
+1d3ed 0 300 516
+1d3ed 1c 301 516
+1d409 1 302 516
+FUNC 1d40a 1e 14 _Strftime
+1d40a 3 343 516
+1d40d 19 345 516
+1d426 2 346 516
+FUNC 1d428 26 0 localeconv
+1d428 0 69 3302
+1d428 5 75 3302
+1d42d 1b 78 3302
+1d448 5 79 3302
+1d44d 1 80 3302
+FUNC 1d450 46 8 strcspn
+1d450 4 191 924
+1d454 2 198 924
+1d456 1 199 924
+1d457 1 200 924
+1d458 1 201 924
+1d459 1 202 924
+1d45a 1 203 924
+1d45b 1 204 924
+1d45c 1 205 924
+1d45d 1 206 924
+1d45e 6 212 924
+1d464 2 216 924
+1d466 2 217 924
+1d468 2 218 924
+1d46a 3 219 924
+1d46d 4 220 924
+1d471 2 221 924
+1d473 3 227 924
+1d476 6 229 924
+1d47c 3 234 924
+1d47f 2 236 924
+1d481 2 237 924
+1d483 2 238 924
+1d485 3 239 924
+1d488 4 240 924
+1d48c 2 245 924
+1d48e 2 255 924
+1d490 3 257 924
+1d493 3 259 924
+FUNC 1d496 60 c TranslateName
+1d496 3 340 3849
+1d499 3 342 3849
+1d49c 3 343 3849
+1d49f b 346 3849
+1d4aa a 348 3849
+1d4b4 14 349 3849
+1d4c8 6 351 3849
+1d4ce a 352 3849
+1d4d8 2 353 3849
+1d4da 4 354 3849
+1d4de 2 355 3849
+1d4e0 3 356 3849
+1d4e3 7 346 3849
+1d4ea a 359 3849
+1d4f4 2 360 3849
+FUNC 1d4f6 14 0 GetLcidFromDefault
+1d4f6 0 761 3849
+1d4f6 7 762 3849
+1d4fd c 763 3849
+1d509 1 764 3849
+FUNC 1d50a 77 0 ProcessCodePage
+1d50a 13 784 3849
+1d51d 1a 787 3849
+1d537 11 795 3849
+1d548 8 799 3849
+1d550 2 801 3849
+1d552 18 791 3849
+1d56a 3 793 3849
+1d56d 7 805 3849
+1d574 d 806 3849
+FUNC 1d581 1e 4 TestDefaultCountry
+1d581 0 826 3849
+1d581 2 830 3849
+1d583 15 832 3849
+1d598 3 835 3849
+1d59b 1 836 3849
+1d59c 2 833 3849
+1d59e 1 836 3849
+FUNC 1d59f 32 0 LcidFromHexString
+1d59f 1 893 3849
+1d5a0 2 895 3849
+1d5a2 2 897 3849
+1d5a4 9 899 3849
+1d5ad 5 900 3849
+1d5b2 8 901 3849
+1d5ba 3 902 3849
+1d5bd 10 903 3849
+1d5cd 3 906 3849
+1d5d0 1 907 3849
+FUNC 1d5d1 1b 0 GetPrimaryLen
+1d5d1 0 926 3849
+1d5d1 2 927 3849
+1d5d3 3 930 3849
+1d5d6 12 931 3849
+1d5e8 1 933 3849
+1d5e9 2 935 3849
+1d5eb 1 938 3849
+FUNC 1d5ec 96 4 CountryEnumProc
+1d5ec 15 717 3849
+1d601 7 718 3849
+1d608 f 719 3849
+1d617 23 725 3849
+1d63a 3 728 3849
+1d63d 3 729 3849
+1d640 12 731 3849
+1d652 b 734 3849
+1d65d a 738 3849
+1d667 b 741 3849
+1d672 10 742 3849
+FUNC 1d682 72 8 TestDefaultLanguage
+1d682 11 858 3849
+1d693 22 864 3849
+1d6b5 4 865 3849
+1d6b9 d 867 3849
+1d6c6 1c 871 3849
+1d6e2 2 872 3849
+1d6e4 3 874 3849
+1d6e7 d 875 3849
+FUNC 1d6f4 1d0 4 LangCountryEnumProc
+1d6f4 16 435 3849
+1d70a 7 436 3849
+1d711 d 437 3849
+1d71e 27 444 3849
+1d745 4 447 3849
+1d749 8 448 3849
+1d751 16 450 3849
+1d767 1d 456 3849
+1d784 2 460 3849
+1d786 11 462 3849
+1d797 7 467 3849
+1d79e 5 468 3849
+1d7a3 6 472 3849
+1d7a9 1a 475 3849
+1d7c3 14 482 3849
+1d7d7 3 483 3849
+1d7da a 487 3849
+1d7e4 b 490 3849
+1d7ef 6 493 3849
+1d7f5 3 494 3849
+1d7f8 12 501 3849
+1d80a 1d 506 3849
+1d827 6 510 3849
+1d82d c 513 3849
+1d839 16 518 3849
+1d84f 8 522 3849
+1d857 14 528 3849
+1d86b 2 531 3849
+1d86d 2 540 3849
+1d86f 1b 550 3849
+1d88a f 553 3849
+1d899 7 557 3849
+1d8a0 5 558 3849
+1d8a5 3 559 3849
+1d8a8 b 566 3849
+1d8b3 11 567 3849
+FUNC 1d8c4 bf 4 LanguageEnumProc
+1d8c4 15 624 3849
+1d8d9 7 625 3849
+1d8e0 f 626 3849
+1d8ef 23 632 3849
+1d912 3 635 3849
+1d915 3 636 3849
+1d918 11 639 3849
+1d929 7 643 3849
+1d930 2 650 3849
+1d932 1d 651 3849
+1d94f f 654 3849
+1d95e a 658 3849
+1d968 b 662 3849
+1d973 10 663 3849
+FUNC 1d983 2c 0 GetLcidFromCountry
+1d983 0 686 3849
+1d983 10 687 3849
+1d993 11 689 3849
+1d9a4 6 693 3849
+1d9aa 4 694 3849
+1d9ae 1 695 3849
+FUNC 1d9af 65 0 GetLcidFromLangCountry
+1d9af 0 386 3849
+1d9af 7 388 3849
+1d9b6 1a 389 3849
+1d9d0 5 390 3849
+1d9d5 17 392 3849
+1d9ec 10 394 3849
+1d9fc 13 402 3849
+1da0f 4 403 3849
+1da13 1 404 3849
+FUNC 1da14 3c 0 GetLcidFromLanguage
+1da14 0 591 3849
+1da14 13 593 3849
+1da27 e 594 3849
+1da35 10 596 3849
+1da45 6 600 3849
+1da4b 4 601 3849
+1da4f 1 602 3849
+FUNC 1da50 1e3 c __get_qualified_locale
+1da50 4 205 3849
+1da54 5 208 3849
+1da59 12 212 3849
+1da6b 7 215 3849
+1da72 5 217 3849
+1da77 3 222 3849
+1da7a f 223 3849
+1da89 10 226 3849
+1da99 d 230 3849
+1daa6 a 232 3849
+1dab0 5 235 3849
+1dab5 2 237 3849
+1dab7 5 240 3849
+1dabc 5 243 3849
+1dac1 14 248 3849
+1dad5 a 250 3849
+1dadf 5 252 3849
+1dae4 2 254 3849
+1dae6 5 256 3849
+1daeb 2 261 3849
+1daed a 263 3849
+1daf7 28 266 3849
+1db1f 2 268 3849
+1db21 13 271 3849
+1db34 3 277 3849
+1db37 6 278 3849
+1db3d 17 281 3849
+1db54 32 285 3849
+1db86 d 289 3849
+1db93 6 290 3849
+1db99 8 293 3849
+1dba1 7 295 3849
+1dba8 8 296 3849
+1dbb0 4 297 3849
+1dbb4 8 301 3849
+1dbbc d 305 3849
+1dbc9 23 306 3849
+1dbec 2 307 3849
+1dbee f 308 3849
+1dbfd 2 309 3849
+1dbff 12 311 3849
+1dc11 2 312 3849
+1dc13 14 313 3849
+1dc27 5 315 3849
+1dc2c 6 286 3849
+1dc32 1 316 3849
+FUNC 1dc33 12 0 cmpResult
+FUNC 1dc45 18 0 cmpBYTE
+FUNC 1dc5d 40 0 cmpWORD
+FUNC 1dc9d 78 0 cmpDWORD
+FUNC 1dd15 1490 0 unaligned_memcmp
+FUNC 1f1a5 1680 c memcmp
+FUNC 20825 be c strncmp
+20825 4 42 876
+20829 5 43 876
+2082e 7 45 876
+20835 7 46 876
+2083c 6 48 876
+20842 d 51 876
+2084f 11 56 876
+20860 c 61 876
+2086c c 66 876
+20878 15 71 876
+2088d 2 81 876
+2088f a 73 876
+20899 a 68 876
+208a3 a 63 876
+208ad 10 58 876
+208bd 2 79 876
+208bf a 81 876
+208c9 1 85 876
+208ca 4 86 876
+208ce 5 79 876
+208d3 4 89 876
+208d7 2 90 876
+208d9 a 83 876
+FUNC 208f0 40 8 strpbrk
+208f0 4 191 869
+208f4 2 198 869
+208f6 1 199 869
+208f7 1 200 869
+208f8 1 201 869
+208f9 1 202 869
+208fa 1 203 869
+208fb 1 204 869
+208fc 1 205 869
+208fd 1 206 869
+208fe 6 212 869
+20904 2 216 869
+20906 2 217 869
+20908 2 218 869
+2090a 3 219 869
+2090d 4 220 869
+20911 2 221 869
+20913 5 227 869
+20918 2 236 869
+2091a 2 237 869
+2091c 2 238 869
+2091e 3 239 869
+20921 4 240 869
+20925 2 247 869
+20927 3 248 869
+2092a 3 257 869
+2092d 3 259 869
+FUNC 20930 82 c _iswctype_l
+20930 6 66 6445
+20936 8 69 6445
+2093e 6 70 6445
+20944 8 71 6445
+2094c 18 72 6445
+20964 2 73 6445
+20966 b 75 6445
+20971 25 85 6445
+20996 3 86 6445
+20999 d 87 6445
+209a6 a 89 6445
+209b0 2 90 6445
+FUNC 209b2 6e 8 iswctype
+209b2 4 96 6445
+209b6 8 97 6445
+209be 2 99 6445
+209c0 2 122 6445
+209c2 8 101 6445
+209ca 14 103 6445
+209de 2 122 6445
+209e0 9 106 6445
+209e9 25 117 6445
+20a0e 10 121 6445
+20a1e 2 122 6445
+FUNC 20a20 5 8 is_wctype
+20a20 0 148 6445
+20a20 5 149 6445
+FUNC 20a25 22b 14 strtoxl
+20a25 8 80 6309
+20a2d b 86 6309
+20a38 3 89 6309
+20a3b b 92 6309
+20a46 30 94 6309
+20a76 11 95 6309
+20a87 c 100 6309
+20a93 34 101 6309
+20ac7 5 102 6309
+20acc 5 104 6309
+20ad1 4 105 6309
+20ad5 2 106 6309
+20ad7 5 108 6309
+20adc 3 109 6309
+20adf 1d 111 6309
+20afc 4 118 6309
+20b00 5 121 6309
+20b05 9 122 6309
+20b0e a 123 6309
+20b18 9 126 6309
+20b21 7 124 6309
+20b28 2 129 6309
+20b2a 5 140 6309
+20b2f f 142 6309
+20b3e 1 143 6309
+20b3f 9 144 6309
+20b48 8 149 6309
+20b50 c 154 6309
+20b5c 8 155 6309
+20b64 7 156 6309
+20b6b 13 157 6309
+20b7e 5 160 6309
+20b83 4 164 6309
+20b87 b 171 6309
+20b92 4 177 6309
+20b96 6 178 6309
+20b9c 8 190 6309
+20ba4 6 193 6309
+20baa 3 195 6309
+20bad 4 196 6309
+20bb1 2 198 6309
+20bb3 c 173 6309
+20bbf 3 185 6309
+20bc2 2 186 6309
+20bc4 24 201 6309
+20be8 5 204 6309
+20bed c 205 6309
+20bf9 6 206 6309
+20bff 10 207 6309
+20c0f 7 213 6309
+20c16 2 215 6309
+20c18 6 217 6309
+20c1e 3 219 6309
+20c21 12 221 6309
+20c33 7 113 6309
+20c3a 2 115 6309
+20c3c 12 116 6309
+20c4e 2 222 6309
+FUNC 20c50 29 c strtol
+20c50 3 229 6309
+20c53 8 230 6309
+20c5b 13 232 6309
+20c6e 9 236 6309
+20c77 2 238 6309
+FUNC 20c79 1b 10 _strtol_l
+20c79 0 246 6309
+20c79 1a 247 6309
+20c93 1 248 6309
+FUNC 20c94 2a c strtoul
+20c94 3 255 6309
+20c97 7 256 6309
+20c9e 14 258 6309
+20cb2 a 262 6309
+20cbc 2 264 6309
+FUNC 20cbe 1b 10 _strtoul_l
+20cbe 0 272 6309
+20cbe 1a 273 6309
+20cd8 1 274 6309
+FUNC 20cd9 1f 0 __initconin
+20cd9 0 58 5008
+20cd9 1e 65 5008
+20cf7 1 67 5008
+FUNC 20cf8 1f 0 __initconout
+20cf8 0 90 5008
+20cf8 1e 97 5008
+20d16 1 98 5008
+FUNC 20d17 2d 0 __termcon
+20d17 0 120 5008
+20d17 16 121 5008
+20d2d 3 122 5008
+20d30 f 125 5008
+20d3f 4 126 5008
+20d43 1 128 5008
+FUNC 20d44 94 4 _close_nolock
+20d44 1 72 5094
+20d45 54 93 5094
+20d99 a 99 5094
+20da3 2 96 5094
+20da5 6 101 5094
+20dab b 103 5094
+20db6 11 105 5094
+20dc7 7 107 5094
+20dce 5 108 5094
+20dd3 4 111 5094
+20dd7 1 112 5094
+FUNC 20dd8 cd 4 _close
+20dd8 c 42 5094
+20de4 23 46 5094
+20e07 2f 47 5094
+20e36 20 48 5094
+20e56 7 50 5094
+20e5d 3 52 5094
+20e60 9 53 5094
+20e69 c 54 5094
+20e75 2 55 5094
+20e77 b 56 5094
+20e82 4 57 5094
+20e86 c 61 5094
+20e92 3 65 5094
+20e95 6 66 5094
+20e9b a 62 5094
+FUNC 20ea5 2c 4 _freebuf
+20ea5 1 47 1927
+20ea6 f 50 1927
+20eb5 8 52 1927
+20ebd 7 54 1927
+20ec4 8 55 1927
+20ecc 4 56 1927
+20ed0 1 58 1927
+FUNC 20ed1 2a 0 _purecall
+20ed1 0 43 3119
+20ed1 b 44 3119
+20edc 5 45 3119
+20ee1 2 47 3119
+20ee3 7 54 3119
+20eea c 56 3119
+20ef6 5 57 3119
+FUNC 20efb 22 4 _set_purecall_handler
+20efb 1 82 3119
+20efc b 85 3119
+20f07 12 86 3119
+20f19 3 88 3119
+20f1c 1 89 3119
+FUNC 20f1d d 0 _get_purecall_handler
+20f1d 0 92 3119
+20f1d c 93 3119
+20f29 1 94 3119
+FUNC 20f30 34 0 _allmul
+20f30 0 47 5116
+20f30 4 62 5116
+20f34 4 63 5116
+20f38 2 64 5116
+20f3a 4 65 5116
+20f3e 2 66 5116
+20f40 4 68 5116
+20f44 2 69 5116
+20f46 3 71 5116
+20f49 1 74 5116
+20f4a 2 81 5116
+20f4c 2 82 5116
+20f4e 4 84 5116
+20f52 4 85 5116
+20f56 2 86 5116
+20f58 4 88 5116
+20f5c 2 89 5116
+20f5e 2 90 5116
+20f60 1 92 5116
+20f61 3 94 5116
+FUNC 20f64 11 4 atol
+20f64 0 55 6631
+20f64 10 56 6631
+20f74 1 57 6631
+FUNC 20f75 15 8 _atol_l
+20f75 0 64 6631
+20f75 14 65 6631
+20f89 1 66 6631
+FUNC 20f8a 5 4 atoi
+20f8a 0 99 6631
+20f8a 5 100 6631
+FUNC 20f8f 5 8 _atoi_l
+20f8f 0 107 6631
+20f8f 5 108 6631
+FUNC 20f94 11 4 _atoi64
+20f94 0 143 6631
+20f94 10 144 6631
+20fa4 1 145 6631
+FUNC 20fa5 15 8 _atoi64_l
+20fa5 0 151 6631
+20fa5 14 152 6631
+20fb9 1 153 6631
+FUNC 20fba 50 0 has_osfxsr_set
+FUNC 2100a 60 0 _get_sse2_info
+FUNC 2106a d 0 __sse2_available_init
+FUNC 21077 170 8 _flswbuf
+21077 5 93 1980
+2107c c 104 1980
+21088 8 106 1980
+21090 b 107 1980
+2109b 4 108 1980
+2109f a 109 1980
+210a9 4 110 1980
+210ad b 111 1980
+210b8 2 113 1980
+210ba 4 124 1980
+210be 4 125 1980
+210c2 8 126 1980
+210ca 3 127 1980
+210cd 8 128 1980
+210d5 3 137 1980
+210d8 11 138 1980
+210e9 9 141 1980
+210f2 25 151 1980
+21117 7 153 1980
+2111e d 158 1980
+2112b 5 162 1980
+21130 5 163 1980
+21135 7 164 1980
+2113c 7 166 1980
+21143 10 167 1980
+21153 2 168 1980
+21155 6 131 1980
+2115b 5 132 1980
+21160 2e 169 1980
+2118e 13 171 1980
+211a1 2 174 1980
+211a3 9 181 1980
+211ac 2 186 1980
+211ae 1d 195 1980
+211cb 5 201 1980
+211d0 4 202 1980
+211d4 7 203 1980
+211db a 209 1980
+211e5 2 212 1980
+FUNC 211e7 182 4 _wchartodigit
+211e7 0 32 6613
+211e7 1b 41 6613
+21202 1 73 6613
+21203 e 42 6613
+21211 19 44 6613
+2122a 1 73 6613
+2122b 14 45 6613
+2123f 14 46 6613
+21253 14 47 6613
+21267 14 48 6613
+2127b 14 49 6613
+2128f 14 50 6613
+212a3 18 51 6613
+212bb 18 52 6613
+212d3 18 53 6613
+212eb 14 54 6613
+212ff 14 55 6613
+21313 12 56 6613
+21325 14 57 6613
+21339 14 58 6613
+2134d c 59 6613
+21359 2 62 6613
+2135b 4 67 6613
+2135f 6 69 6613
+21365 3 71 6613
+21368 1 73 6613
+FUNC 21369 b6 c _isctype_l
+21369 7 114 6399
+21370 b 118 6399
+2137b d 121 6399
+21388 f 122 6399
+21397 1f 124 6399
+213b6 3 126 6399
+213b9 d 129 6399
+213c6 2 130 6399
+213c8 a 133 6399
+213d2 26 144 6399
+213f8 10 146 6399
+21408 15 149 6399
+2141d 2 150 6399
+FUNC 2141f 2f 8 _isctype
+2141f 0 156 6399
+2141f 9 157 6399
+21428 12 159 6399
+2143a 1 165 6399
+2143b 12 163 6399
+2144d 1 165 6399
+FUNC 21450 2c 0 _alloca_probe_16
+21450 0 44 2632
+21450 1 46 2632
+21451 4 47 2632
+21455 2 48 2632
+21457 3 49 2632
+2145a 2 50 2632
+2145c 2 51 2632
+2145e 2 52 2632
+21460 1 53 2632
+21461 5 54 2632
+21466 1 59 2632
+21467 4 60 2632
+2146b 2 61 2632
+2146d 3 62 2632
+21470 2 63 2632
+21472 2 64 2632
+21474 2 65 2632
+21476 1 66 2632
+21477 5 67 2632
+PUBLIC 21466 0 _alloca_probe_8
+FUNC 2147c 47 4 __ansicp
+2147c 10 39 2934
+2148c 1c 44 2934
+214a8 3 45 2934
+214ab 2 46 2934
+214ad a 47 2934
+214b7 c 49 2934
+FUNC 214c3 1b2 18 __convertcp
+214c3 16 79 2934
+214d9 10 83 2934
+214e9 18 85 2934
+21501 17 90 2934
+21518 13 92 2934
+2152b 6 93 2934
+21531 d 99 2934
+2153e 2 101 2934
+21540 c 103 2934
+2154c 2a 115 2934
+21576 15 111 2934
+2158b 7 112 2934
+21592 1c 115 2934
+215ae 3 116 2934
+215b1 2 117 2934
+215b3 10 119 2934
+215c3 15 127 2934
+215d8 7 129 2934
+215df 18 138 2934
+215f7 3 139 2934
+215fa 2 140 2934
+215fc 1f 149 2934
+2161b 11 151 2934
+2162c 12 160 2934
+2163e 9 162 2934
+21647 3 163 2934
+2164a 2 164 2934
+2164c 6 165 2934
+21652 5 166 2934
+21657 9 174 2934
+21660 3 177 2934
+21663 12 178 2934
+FUNC 21675 34 4 _get_daylight
+21675 0 35 487
+21675 27 36 487
+2169c 1 41 487
+2169d 8 39 487
+216a5 3 40 487
+216a8 1 41 487
+FUNC 216a9 34 4 _get_dstbias
+216a9 0 44 487
+216a9 27 45 487
+216d0 1 50 487
+216d1 8 48 487
+216d9 3 49 487
+216dc 1 50 487
+FUNC 216dd 34 4 _get_timezone
+216dd 0 53 487
+216dd 27 54 487
+21704 1 59 487
+21705 8 57 487
+2170d 3 58 487
+21710 1 59 487
+FUNC 21711 a2 10 _get_tzname
+21711 3 62 487
+21714 10 63 487
+21724 4 64 487
+21728 3 66 487
+2172b 7 68 487
+21732 27 69 487
+21759 20 63 487
+21779 f 72 487
+21788 8 73 487
+21790 4 76 487
+21794 5 78 487
+21799 5 80 487
+2179e 13 82 487
+217b1 2 83 487
+FUNC 217b3 6 0 __daylight
+217b3 0 118 487
+217b3 5 119 487
+217b8 1 120 487
+FUNC 217b9 6 0 __dstbias
+217b9 0 123 487
+217b9 5 124 487
+217be 1 125 487
+FUNC 217bf 6 0 __timezone
+217bf 0 128 487
+217bf 5 129 487
+217c4 1 130 487
+FUNC 217c5 6 0 __tzname
+217c5 0 133 487
+217c5 5 134 487
+217ca 1 135 487
+FUNC 217cb c 4 _set_daylight
+217cb c 189 418
+FUNC 217d7 c 4 _set_dstbias
+217d7 c 190 418
+FUNC 217e3 c 4 _set_timezone
+217e3 c 191 418
+FUNC 217ef 349 0 _tzset_nolock
+217ef c 124 440
+217fb 5 127 440
+21800 3 129 440
+21803 3 130 440
+21806 3 131 440
+21809 3 132 440
+2180c 3 133 440
+2180f 8 135 440
+21817 3 136 440
+2181a 8 139 440
+21822 1b 142 440
+2183d 1b 143 440
+21858 1b 144 440
+21873 8 149 440
+2187b 6 154 440
+21881 f 160 440
+21890 18 165 440
+218a8 14 260 440
+218bc b 268 440
+218c7 4 274 440
+218cb 7 275 440
+218d2 16 277 440
+218e8 6 281 440
+218ee 32 283 440
+21920 9 174 440
+21929 7 175 440
+21930 6 176 440
+21936 13 179 440
+21949 9 183 440
+21952 b 188 440
+2195d 9 190 440
+21966 e 191 440
+21974 12 199 440
+21986 3 201 440
+21989 c 203 440
+21995 2 205 440
+21997 3 206 440
+2199a 3 214 440
+2199d 27 234 440
+219c4 8 235 440
+219cc 2 236 440
+219ce 7 237 440
+219d5 23 247 440
+219f8 9 248 440
+21a01 2 249 440
+21a03 8 250 440
+21a0b 7 256 440
+21a12 a 288 440
+21a1c a 289 440
+21a26 a 290 440
+21a30 c 292 440
+21a3c 9 296 440
+21a45 23 301 440
+21a68 8 310 440
+21a70 7 311 440
+21a77 1 312 440
+21a78 10 318 440
+21a88 11 320 440
+21a99 5 292 440
+21a9e 9 293 440
+21aa7 5 325 440
+21aac e 329 440
+21aba d 330 440
+21ac7 5 335 440
+21acc b 339 440
+21ad7 d 340 440
+21ae4 5 344 440
+21ae9 3 345 440
+21aec 6 350 440
+21af2 4 351 440
+21af6 21 352 440
+21b17 2 354 440
+21b19 5 355 440
+21b1e a 357 440
+21b28 a 358 440
+21b32 6 360 440
+FUNC 21b38 1f5 24 cvtdate
+21b38 6 409 440
+21b3e 4 412 440
+21b42 c 414 440
+21b4e 52 424 440
+21ba0 4c 430 440
+21bec 14 436 440
+21c00 2 437 440
+21c02 2 438 440
+21c04 46 447 440
+21c4a 3 449 440
+21c4d 2 452 440
+21c4f 3c 457 440
+21c8b 3 459 440
+21c8e 27 467 440
+21cb5 6 472 440
+21cbb 2 474 440
+21cbd 29 485 440
+21ce6 11 486 440
+21cf7 a 487 440
+21d01 8 488 440
+21d09 d 490 440
+21d16 6 491 440
+21d1c 6 492 440
+21d22 9 499 440
+21d2b 2 503 440
+FUNC 21d2d 1ae 0 _isindst_nolock
+21d2d 5 554 440
+21d32 20 558 440
+21d52 5 560 440
+21d57 7 561 440
+21d5e 1b 568 440
+21d79 c 569 440
+21d85 7 573 440
+21d8c 34 584 440
+21dc0 2 585 440
+21dc2 19 596 440
+21ddb 40 611 440
+21e1b 2 612 440
+21e1d 1e 623 440
+21e3b 2 626 440
+21e3d 14 641 440
+21e51 1a 653 440
+21e6b d 660 440
+21e78 d 664 440
+21e85 8 666 440
+21e8d 4 674 440
+21e91 2 697 440
+21e93 8 673 440
+21e9b 8 675 440
+21ea3 4 676 440
+21ea7 14 679 440
+21ebb 4 681 440
+21ebf b 682 440
+21eca 2 685 440
+21ecc d 691 440
+21ed9 2 694 440
+FUNC 21edb 4f 0 __tzset
+21edb c 85 440
+21ee7 a 88 440
+21ef1 8 90 440
+21ef9 3 91 440
+21efc 8 93 440
+21f04 5 94 440
+21f09 6 95 440
+21f0f c 98 440
+21f1b 6 103 440
+21f21 9 99 440
+FUNC 21f2a 38 0 _tzset
+21f2a c 109 440
+21f36 8 110 440
+21f3e 4 111 440
+21f42 5 113 440
+21f47 c 115 440
+21f53 6 118 440
+21f59 9 116 440
+FUNC 21f62 41 4 _isindst
+21f62 c 538 440
+21f6e 8 541 440
+21f76 4 542 440
+21f7a b 543 440
+21f85 c 544 440
+21f91 3 548 440
+21f94 6 549 440
+21f9a 9 545 440
+FUNC 21fa3 35 8 __ascii_stricmp
+21fa3 a 75 693
+21fad c 80 693
+21fb9 3 81 693
+21fbc c 82 693
+21fc8 3 83 693
+21fcb 9 85 693
+21fd4 3 87 693
+21fd7 1 88 693
+FUNC 21fd8 d3 c _stricmp_l
+21fd8 7 47 693
+21fdf b 49 693
+21fea 36 52 693
+22020 32 53 693
+22052 8 55 693
+2205a e 57 693
+22068 15 63 693
+2207d 11 64 693
+2208e 8 65 693
+22096 13 68 693
+220a9 2 69 693
+FUNC 220ab 50 8 _stricmp
+220ab 4 94 693
+220af a 95 693
+220b9 24 98 693
+220dd 6 99 693
+220e3 1 107 693
+220e4 5 101 693
+220e9 10 105 693
+220f9 2 107 693
+FUNC 220fb f0 10 _strnicmp_l
+220fb 7 51 650
+22102 d 54 650
+2210f b 56 650
+2211a 33 59 650
+2214d 7 60 650
+22154 32 61 650
+22186 8 63 650
+2218e 1d 65 650
+221ab 15 71 650
+221c0 11 72 650
+221d1 d 74 650
+221de 6 76 650
+221e4 5 79 650
+221e9 2 80 650
+FUNC 221eb 5c c _strnicmp
+221eb 4 125 650
+221ef a 127 650
+221f9 24 130 650
+2221d 5 131 650
+22222 a 132 650
+2222c 1 141 650
+2222d 5 134 650
+22232 13 138 650
+22245 2 141 650
+FUNC 22247 db c xtoa_s
+22247 8 93 6581
+2224f 24 102 6581
+22273 24 103 6581
+22297 19 105 6581
+222b0 b 106 6581
+222bb a 112 6581
+222c5 6 114 6581
+222cb 7 116 6581
+222d2 2 118 6581
+222d4 2 121 6581
+222d6 5 124 6581
+222db 5 128 6581
+222e0 3 129 6581
+222e3 2 130 6581
+222e5 6 131 6581
+222eb 3 135 6581
+222ee e 136 6581
+222fc 8 139 6581
+22304 2 141 6581
+22306 2 142 6581
+22308 3 148 6581
+2230b 6 152 6581
+22311 3 154 6581
+22314 1 155 6581
+22315 4 156 6581
+22319 5 158 6581
+2231e 4 160 6581
+FUNC 22322 28 10 _itoa_s
+22322 3 172 6581
+22325 d 175 6581
+22332 4 176 6581
+22336 2 177 6581
+22338 10 178 6581
+22348 2 181 6581
+FUNC 2234a 25 10 _ltoa_s
+2234a 3 189 6581
+2234d 20 190 6581
+2236d 2 191 6581
+FUNC 2236f 18 10 _ultoa_s
+2236f 0 199 6581
+2236f 17 200 6581
+22386 1 201 6581
+FUNC 22387 f6 14 x64toa_s
+22387 7 309 6581
+2238e 25 318 6581
+223b3 5 319 6581
+223b8 19 321 6581
+223d1 b 322 6581
+223dc 3 327 6581
+223df 20 333 6581
+223ff 3 336 6581
+22402 1e 352 6581
+22420 3 344 6581
+22423 2 345 6581
+22425 5 346 6581
+2242a 5 351 6581
+2242f 13 352 6581
+22442 5 355 6581
+22447 3 357 6581
+2244a 13 358 6581
+2245d 4 364 6581
+22461 9 368 6581
+2246a 3 370 6581
+2246d 1 371 6581
+2246e 7 372 6581
+22475 4 375 6581
+22479 4 377 6581
+FUNC 2247d 33 14 _i64toa_s
+2247d 3 390 6581
+22480 2e 391 6581
+224ae 2 392 6581
+FUNC 224b0 1d 14 _ui64toa_s
+224b0 4 400 6581
+224b4 17 401 6581
+224cb 2 402 6581
+FUNC 224cd 224 1c __crtGetStringTypeW_stat
+224cd 10 64 2828
+224dd 9 72 2828
+224e6 7 73 2828
+224ed 14 75 2828
+22501 11 79 2828
+22512 8 80 2828
+2251a b 82 2828
+22525 f 83 2828
+22534 4 88 2828
+22538 13 90 2828
+2254b 7 95 2828
+22552 2 199 2828
+22554 8 119 2828
+2255c b 120 2828
+22567 5 121 2828
+2256c b 122 2828
+22577 e 128 2828
+22585 5 130 2828
+2258a 3 131 2828
+2258d 1d 142 2828
+225aa 6 143 2828
+225b0 40 146 2828
+225f0 3 147 2828
+225f3 6 148 2828
+225f9 d 150 2828
+22606 1a 160 2828
+22620 4d 164 2828
+2266d 4 165 2828
+22671 5 170 2828
+22676 b 171 2828
+22681 3 174 2828
+22684 23 178 2828
+226a7 12 186 2828
+226b9 f 189 2828
+226c8 4 187 2828
+226cc 7 191 2828
+226d3 8 194 2828
+226db 4 196 2828
+226df 12 200 2828
+FUNC 226f1 3e 1c __crtGetStringTypeW
+226f1 6 211 2828
+226f7 b 212 2828
+22702 2b 222 2828
+2272d 2 223 2828
+FUNC 2272f 294 14 strtoxq
+2272f 8 80 6264
+22737 b 86 6264
+22742 3 89 6264
+22745 b 92 6264
+22750 31 94 6264
+22781 12 95 6264
+22793 c 100 6264
+2279f 37 102 6264
+227d6 2 103 6264
+227d8 9 105 6264
+227e1 4 106 6264
+227e5 2 107 6264
+227e7 6 109 6264
+227ed 9 110 6264
+227f6 8 112 6264
+227fe 6 115 6264
+22804 9 116 6264
+2280d a 117 6264
+22817 9 120 6264
+22820 3 118 6264
+22823 5 123 6264
+22828 10 125 6264
+22838 1 126 6264
+22839 9 127 6264
+22842 26 132 6264
+22868 e 137 6264
+22876 8 138 6264
+2287e 6 139 6264
+22884 11 140 6264
+22895 5 143 6264
+2289a 31 154 6264
+228cb 4 160 6264
+228cf 6 161 6264
+228d5 a 173 6264
+228df 7 176 6264
+228e6 6 178 6264
+228ec 6 179 6264
+228f2 5 181 6264
+228f7 19 156 6264
+22910 b 168 6264
+2291b 5 169 6264
+22920 35 184 6264
+22955 5 187 6264
+2295a c 188 6264
+22966 a 189 6264
+22970 6 190 6264
+22976 7 191 6264
+2297d 2 192 6264
+2297f 7 193 6264
+22986 8 195 6264
+2298e 5 197 6264
+22993 6 199 6264
+22999 13 201 6264
+229ac 15 203 6264
+229c1 2 204 6264
+FUNC 229c3 29 c _strtoi64
+229c3 3 211 6264
+229c6 8 212 6264
+229ce 13 214 6264
+229e1 9 218 6264
+229ea 2 220 6264
+FUNC 229ec 1b 10 _strtoi64_l
+229ec 0 227 6264
+229ec 1a 228 6264
+22a06 1 229 6264
+FUNC 22a07 2a c _strtoui64
+22a07 3 236 6264
+22a0a 7 237 6264
+22a11 14 239 6264
+22a25 a 243 6264
+22a2f 2 245 6264
+FUNC 22a31 1b 10 _strtoui64_l
+22a31 0 253 6264
+22a31 1a 254 6264
+22a4b 1 255 6264
+FUNC 22a50 2b 0 _chkstk
+22a50 0 65 2634
+22a50 1 69 2634
+22a51 4 73 2634
+22a55 2 74 2634
+22a57 2 79 2634
+22a59 2 80 2634
+22a5b 2 81 2634
+22a5d 2 83 2634
+22a5f 5 84 2634
+22a64 2 87 2634
+22a66 2 88 2634
+22a68 2 89 2634
+22a6a 1 90 2634
+22a6b 1 91 2634
+22a6c 2 92 2634
+22a6e 3 93 2634
+22a71 1 94 2634
+22a72 5 98 2634
+22a77 2 99 2634
+22a79 2 100 2634
+FUNC 22a7b 81 4 _getenv_helper_nolock
+22a7b 0 95 3904
+22a7b 10 103 3904
+22a8b 3 104 3904
+22a8e 1 169 3904
+22a8f e 128 3904
+22a9d 7 131 3904
+22aa4 2 132 3904
+22aa6 6 135 3904
+22aac c 140 3904
+22ab8 9 142 3904
+22ac1 2 150 3904
+22ac3 22 154 3904
+22ae5 3 164 3904
+22ae8 6 150 3904
+22aee 5 168 3904
+22af3 9 169 3904
+FUNC 22afc 93 c _getenv_s_helper
+22afc 7 220 3904
+22b03 21 224 3904
+22b24 15 226 3904
+22b39 4 227 3904
+22b3d 3 229 3904
+22b40 a 233 3904
+22b4a 3 234 3904
+22b4d 2 236 3904
+22b4f 7 239 3904
+22b56 6 240 3904
+22b5c 2 243 3904
+22b5e 5 246 3904
+22b63 5 251 3904
+22b68 20 254 3904
+22b88 5 256 3904
+22b8d 2 257 3904
+FUNC 22b8f a2 8 _dupenv_s_helper
+22b8f 6 339 3904
+22b95 21 344 3904
+22bb6 9 346 3904
+22bbf 2 348 3904
+22bc1 5 350 3904
+22bc6 8 352 3904
+22bce 6 353 3904
+22bd4 2 355 3904
+22bd6 9 358 3904
+22bdf b 362 3904
+22bea 6 364 3904
+22bf0 b 366 3904
+22bfb 9 367 3904
+22c04 1e 370 3904
+22c22 7 371 3904
+22c29 2 373 3904
+22c2b 4 375 3904
+22c2f 2 376 3904
+FUNC 22c31 83 4 getenv
+22c31 c 75 3904
+22c3d 2a 78 3904
+22c67 18 79 3904
+22c7f 8 81 3904
+22c87 3 82 3904
+22c8a c 83 3904
+22c96 c 85 3904
+22ca2 3 89 3904
+22ca5 6 90 3904
+22cab 9 86 3904
+FUNC 22cb4 d8 10 getenv_s
+22cb4 c 198 3904
+22cc0 8 201 3904
+22cc8 5 202 3904
+22ccd a1 203 3904
+22d6e c 205 3904
+22d7a 3 209 3904
+22d7d 6 210 3904
+22d83 9 206 3904
+FUNC 22d8c e6 c _dupenv_s
+22d8c c 303 3904
+22d98 8 306 3904
+22da0 5 307 3904
+22da5 af 311 3904
+22e54 c 314 3904
+22e60 3 318 3904
+22e63 6 319 3904
+22e69 9 315 3904
+FUNC 22e72 8 4 _tolower
+22e72 0 48 6218
+22e72 7 49 6218
+22e79 1 50 6218
+FUNC 22e7a 117 8 _tolower_l
+22e7a 8 70 6218
+22e82 b 74 6218
+22e8d c 77 6218
+22e99 31 79 6218
+22eca f 80 6218
+22ed9 14 82 6218
+22eed 2b 86 6218
+22f18 3 88 6218
+22f1b d 91 6218
+22f28 2 92 6218
+22f2a b 94 6218
+22f35 a 97 6218
+22f3f 25 110 6218
+22f64 6 112 6218
+22f6a 5 116 6218
+22f6f 6 117 6218
+22f75 1a 119 6218
+22f8f 2 120 6218
+FUNC 22f91 27 4 tolower
+22f91 0 143 6218
+22f91 9 145 6218
+22f9a f 147 6218
+22fa9 1 153 6218
+22faa d 151 6218
+22fb7 1 153 6218
+FUNC 22fc0 61 c __ascii_strnicmp
+22fc0 6 69 871
+22fc6 3 75 871
+22fc9 2 76 871
+22fcb 2 77 871
+22fcd 3 79 871
+22fd0 3 80 871
+22fd3 2 82 871
+22fd5 2 83 871
+22fd7 5 84 871
+22fdc 2 89 871
+22fde 2 91 871
+22fe0 2 93 871
+22fe2 2 95 871
+22fe4 2 97 871
+22fe6 2 98 871
+22fe8 3 100 871
+22feb 3 101 871
+22fee 2 103 871
+22ff0 2 104 871
+22ff2 2 106 871
+22ff4 2 107 871
+22ff6 2 109 871
+22ff8 2 112 871
+22ffa 2 113 871
+22ffc 2 115 871
+22ffe 2 116 871
+23000 2 118 871
+23002 2 121 871
+23004 2 122 871
+23006 3 124 871
+23009 2 125 871
+2300b 2 128 871
+2300d 2 129 871
+2300f 2 130 871
+23011 5 133 871
+23016 2 134 871
+23018 2 135 871
+2301a 2 138 871
+2301c 5 140 871
+FUNC 23021 ec 10 _mbsnbicoll_l
+23021 7 53 4518
+23028 b 55 4518
+23033 9 57 4518
+2303c 13 58 4518
+2304f 33 61 4518
+23082 6 62 4518
+23088 23 63 4518
+230ab 8 65 4518
+230b3 14 66 4518
+230c7 23 74 4518
+230ea 10 75 4518
+230fa 11 77 4518
+2310b 2 79 4518
+FUNC 2310d 17 c _mbsnbicoll
+2310d 0 85 4518
+2310d 16 86 4518
+23123 1 87 4518
+FUNC 23124 95 0 __wtomb_environ
+23124 7 43 2699
+2312b 3 44 2699
+2312e 9 45 2699
+23137 c 52 2699
+23143 12 57 2699
+23155 11 61 2699
+23166 12 65 2699
+23178 10 72 2699
+23188 5 74 2699
+2318d 9 76 2699
+23196 3 77 2699
+23199 9 81 2699
+231a2 5 84 2699
+231a7 2 85 2699
+231a9 5 58 2699
+231ae 9 67 2699
+231b7 2 68 2699
+FUNC 231b9 1a 8 strnlen
+231b9 0 38 864
+231b9 19 45 864
+231d2 1 49 864
+FUNC 231d3 1a 4 strncnt
+231d3 0 50 4345
+231d3 6 51 4345
+231d9 6 54 4345
+231df 1 55 4345
+231e0 5 54 4345
+231e5 7 57 4345
+231ec 1 58 4345
+FUNC 231ed 389 18 __crtCompareStringA_stat
+231ed 10 96 4345
+231fd 31 280 4345
+2322e c 107 4345
+2323a b 109 4345
+23245 a 110 4345
+2324f 5 118 4345
+23254 1b 119 4345
+2326f 7 122 4345
+23276 1f 123 4345
+23295 6 120 4345
+2329b 7 121 4345
+232a2 3 124 4345
+232a5 2 125 4345
+232a7 17 130 4345
+232be 7 189 4345
+232c5 8 201 4345
+232cd 8 202 4345
+232d5 d 208 4345
+232e2 5 214 4345
+232e7 8 215 4345
+232ef 2 218 4345
+232f1 6 219 4345
+232f7 5 222 4345
+232fc 4 223 4345
+23300 f 231 4345
+2330f 2 232 4345
+23311 5 237 4345
+23316 4 239 4345
+2331a 2 240 4345
+2331c 10 244 4345
+2332c a 246 4345
+23336 7 244 4345
+2333d 2 262 4345
+2333f 5 253 4345
+23344 6 255 4345
+2334a 8 256 4345
+23352 10 260 4345
+23362 11 262 4345
+23373 7 260 4345
+2337a 2 262 4345
+2337c 1a 280 4345
+23396 6 281 4345
+2339c 4d 284 4345
+233e9 4 285 4345
+233ed 6 286 4345
+233f3 19 295 4345
+2340c 17 305 4345
+23423 46 309 4345
+23469 4 310 4345
+2346d 13 320 4345
+23480 17 326 4345
+23497 7 328 4345
+2349e 8 331 4345
+234a6 9 333 4345
+234af 4 132 4345
+234b3 5 137 4345
+234b8 8 138 4345
+234c0 5 139 4345
+234c5 8 140 4345
+234cd e 142 4345
+234db 6 143 4345
+234e1 5 148 4345
+234e6 19 155 4345
+234ff 2 156 4345
+23501 6 157 4345
+23507 19 163 4345
+23520 4 164 4345
+23524 7 166 4345
+2352b 5 167 4345
+23530 3 169 4345
+23533 3 170 4345
+23536 18 178 4345
+2354e 6 179 4345
+23554 6 181 4345
+2355a 8 182 4345
+23562 2 184 4345
+23564 12 337 4345
+FUNC 23576 40 20 __crtCompareStringA
+23576 6 349 4345
+2357c b 350 4345
+23587 2d 361 4345
+235b4 2 362 4345
+FUNC 235b6 f8 10 _strnicoll_l
+235b6 7 55 603
+235bd b 57 603
+235c8 9 59 603
+235d1 13 60 603
+235e4 33 63 603
+23617 6 64 603
+2361d 23 65 603
+23640 a 67 603
+2364a 15 68 603
+2365f 21 78 603
+23680 b 80 603
+2368b 10 81 603
+2369b 11 84 603
+236ac 2 85 603
+FUNC 236ae 27 c _strnicoll
+236ae 3 92 603
+236b1 9 93 603
+236ba 1 101 603
+236bb 5 95 603
+236c0 13 99 603
+236d3 2 101 603
+FUNC 236d5 4d 4 findenv
+236d5 1 387 3036
+236d6 8 390 3036
+236de 12 394 3036
+236f0 d 399 3036
+236fd 9 390 3036
+23706 e 407 3036
+23714 1 408 3036
+23715 c 400 3036
+23721 1 408 3036
+FUNC 23722 5d 0 copy_environ
+23722 4 428 3036
+23726 2 429 3036
+23728 6 434 3036
+2372e 2 464 3036
+23730 7 438 3036
+23737 8 439 3036
+2373f 14 443 3036
+23753 8 444 3036
+2375b 6 448 3036
+23761 11 458 3036
+23772 4 448 3036
+23776 2 461 3036
+23778 5 463 3036
+2377d 2 464 3036
+FUNC 2377f 24c 8 __crtsetenv
+2377f 6 76 3036
+23785 2c 89 3036
+237b1 2 91 3036
+237b3 1c 98 3036
+237cf 5 114 3036
+237d4 13 125 3036
+237e7 c 126 3036
+237f3 4 130 3036
+237f7 d 153 3036
+23804 9 155 3036
+2380d b 100 3036
+23818 6 101 3036
+2381e 2 356 3036
+23820 3 164 3036
+23823 6 165 3036
+23829 f 171 3036
+23838 2 172 3036
+2383a 2 173 3036
+2383c 8 176 3036
+23844 f 178 3036
+23853 2 179 3036
+23855 2 180 3036
+23857 6 196 3036
+2385d 5 197 3036
+23862 2 200 3036
+23864 10 207 3036
+23874 9 210 3036
+2387d a 216 3036
+23887 6 218 3036
+2388d 5 235 3036
+23892 5 238 3036
+23897 5 241 3036
+2389c c 222 3036
+238a8 4 221 3036
+238ac 1d 230 3036
+238c9 2 233 3036
+238cb 9 245 3036
+238d4 4 250 3036
+238d8 2 251 3036
+238da 2f 255 3036
+23909 8 258 3036
+23911 3 259 3036
+23914 5 262 3036
+23919 5 264 3036
+2391e 21 287 3036
+2393f 25 289 3036
+23964 21 338 3036
+23985 4 339 3036
+23989 b 343 3036
+23994 7 346 3036
+2399b 5 349 3036
+239a0 8 351 3036
+239a8 6 352 3036
+239ae 8 355 3036
+239b6 8 271 3036
+239be 6 274 3036
+239c4 7 276 3036
+FUNC 239cb 50 4 _strdup
+239cb 1 66 901
+239cc b 70 901
+239d7 6 71 901
+239dd 9 73 901
+239e6 e 77 901
+239f4 1c 80 901
+23a10 4 81 901
+23a14 6 84 901
+23a1a 1 85 901
+FUNC 23a1b ba c _mbschr_l
+23a1b 7 53 4568
+23a22 b 55 4568
+23a2d 32 58 4568
+23a5f 8 60 4568
+23a67 d 61 4568
+23a74 a 65 4568
+23a7e 7 67 4568
+23a85 10 69 4568
+23a95 3 70 4568
+23a98 8 72 4568
+23aa0 d 63 4568
+23aad 8 76 4568
+23ab5 e 77 4568
+23ac3 10 79 4568
+23ad3 2 80 4568
+FUNC 23ad5 13 8 _mbschr
+23ad5 0 86 4568
+23ad5 12 87 4568
+23ae7 1 88 4568
+FUNC 23b00 be 8 strchr
+23b00 0 60 928
+23b00 2 68 928
+23b02 4 69 928
+23b06 1 73 928
+23b07 2 74 928
+23b09 3 75 928
+23b0c 4 76 928
+23b10 6 77 928
+23b16 2 78 928
+23b18 2 81 928
+23b1a 3 82 928
+23b1d 2 83 928
+23b1f 2 84 928
+23b21 2 85 928
+23b23 2 86 928
+23b25 6 87 928
+23b2b 2 88 928
+23b2d 2 91 928
+23b2f 1 92 928
+23b30 2 93 928
+23b32 3 94 928
+23b35 1 95 928
+23b36 2 96 928
+23b38 2 101 928
+23b3a 5 102 928
+23b3f 2 104 928
+23b41 2 105 928
+23b43 2 107 928
+23b45 2 108 928
+23b47 2 110 928
+23b49 3 111 928
+23b4c 3 113 928
+23b4f 2 114 928
+23b51 2 116 928
+23b53 3 117 928
+23b56 6 119 928
+23b5c 2 120 928
+23b5e 5 124 928
+23b63 2 125 928
+23b65 5 127 928
+23b6a 2 128 928
+23b6c 6 130 928
+23b72 2 131 928
+23b74 1 134 928
+23b75 1 135 928
+23b76 1 137 928
+23b77 2 138 928
+23b79 1 139 928
+23b7a 3 142 928
+23b7d 2 143 928
+23b7f 2 144 928
+23b81 2 145 928
+23b83 2 146 928
+23b85 2 147 928
+23b87 2 148 928
+23b89 2 149 928
+23b8b 2 150 928
+23b8d 3 151 928
+23b90 2 152 928
+23b92 2 153 928
+23b94 2 154 928
+23b96 2 155 928
+23b98 2 156 928
+23b9a 2 157 928
+23b9c 2 158 928
+23b9e 2 159 928
+23ba0 2 160 928
+23ba2 1 163 928
+23ba3 1 164 928
+23ba4 3 165 928
+23ba7 1 166 928
+23ba8 1 167 928
+23ba9 3 170 928
+23bac 1 171 928
+23bad 1 172 928
+23bae 1 173 928
+23baf 1 174 928
+23bb0 3 177 928
+23bb3 1 178 928
+23bb4 1 179 928
+23bb5 1 180 928
+23bb6 1 181 928
+23bb7 3 184 928
+23bba 1 185 928
+23bbb 1 186 928
+23bbc 1 187 928
+23bbd 1 188 928
+PUBLIC 23b06 0 __from_strstr_to_strchr
+FUNC 240b9 14 0 `operator new'::`6'::`dynamic atexit destructor for 'nomem''
+STACK WIN 4 41b0 86 13 0 8 0 e0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 4240 41 3 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 4290 18 4 0 0 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 42ae 18 7 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 42af 14 6 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 42c6 b 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 42d1 22 3 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 42d2 1e 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 42f3 3f c 0 0 c 50 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 4332 3f c 0 0 c 50 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 4371 3f c 0 0 c 50 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 43b0 18 7 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 43b1 14 6 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 43c8 af c 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 4464 12 0 0 4 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 4477 16 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 448d 16 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 44a3 14 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 44b7 16 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 44cd 14 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 44e1 25 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4506 16 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 451c f 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 452b 62 2 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 452c 60 1 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 452d 5c 0 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 454a 35 0 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 458d 42 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 458e 40 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 45cf da c 0 4 c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 466c 15 0 0 4 c 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 46a0 8 0 0 4 c 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 46a9 53 c 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 46f2 9 0 0 4 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 46fc 9 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4705 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 470b b1 8 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4713 a8 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4785 33 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 47bc 20 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 47dc 3c 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 47dd 3a 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4818 2e 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4846 36 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 487c 2a 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 48a6 16 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 48bc 5 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 48c1 30 5 0 8 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 48c6 2b 0 0 8 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 48f1 7 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 48f8 7 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 48ff 7 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4906 52 8 0 8 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 490c 4c 2 0 8 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 4958 36 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 498e 36 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 49c4 36 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 49fa 1a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4a14 30 1 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4a15 2e 0 0 10 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4a44 d5 7 0 1c 0 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 4a4b ce 0 0 1c 4 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 60 - ^ =
+STACK WIN 4 4b19 9d 5 0 10 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 4b1e 98 0 0 10 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 4bb6 73 7 0 14 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 4bbb 6c 2 0 14 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 4bbc 6a 1 0 14 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 4bbd 68 0 0 14 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 4c29 28 5 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4c2e 22 0 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4c51 21 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4c72 4c 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4c73 4a 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4cbe 5e 6 0 14 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 4d1c 4a b 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 4d26 1b 1 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 4d27 16 0 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 4d66 19 a 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4d67 17 9 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4d7f 6a 6 0 4 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 4de9 f 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4df8 e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4e06 1c 3 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4e07 18 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4e22 f 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4e31 8 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4e39 1b 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4e54 1c 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4e70 1f 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4e8f 4 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4e93 b 2 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4e9e 5 2 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4ea3 11 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4eb4 4e 9 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4eb5 4a 8 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 4eba 44 3 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 4ebb 42 2 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 4f02 18 2 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4f1a 58 8 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4f1b 54 7 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 4f20 4e 2 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 4f34 37 0 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 4f72 56 9 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4f73 52 8 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 4f78 4c 3 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 4f79 4a 2 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 4fc8 16 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4fde d 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4feb 19 8 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 4fec 15 7 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5004 18 7 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5005 14 6 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 501c b 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5027 19 8 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5028 15 7 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5040 18 7 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5041 14 6 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5058 b 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5063 18 7 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5064 14 6 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 507b 18 7 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 507c 14 6 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5093 b 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 509e 1c 3 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 509f 18 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 50ba 22 3 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 50bb 1e 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 50dc 22 3 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 50dd 1e 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 50fe 22 3 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 50ff 1e 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5120 7b 8 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 5124 75 4 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 5128 70 0 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 519b 5b 8 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 51a2 52 1 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 51a3 50 0 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 51f6 a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5200 a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 520a a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5214 a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 521e a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5228 24 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 524c 41 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 528d 1b6 c 0 0 c 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 5405 14 0 0 0 c 2c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 5443 a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 544d a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5457 fc 1c 0 14 4 328 0 1 $T0 $ebp 680 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 5553 22 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5554 20 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5575 d 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5582 9 3 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 558b 24 3 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 55af 10 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 55bf 9 3 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 55c8 96 7 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 55cf 8d 0 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 55fb 60 0 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 565e 1a 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5678 1c 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5694 1f 3 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 56b3 1c 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 56cf 1d 3 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 56ec 20 3 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 570c 1d 3 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 5729 11 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 573a 11 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 574b 16 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5761 16 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5777 14f c 0 8 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 58bc 9 0 0 8 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 58c6 1a 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 58e0 1a 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 58fa 18 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5912 1a 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 592c 18 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5944 f6 7 0 18 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 594b ed 0 0 18 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 5973 c4 0 0 18 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 5977 bf 0 0 18 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 5a3a 27 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5a61 28 3 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 5a89 87 4 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 5a8d 81 0 0 14 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 5ab2 5b 0 0 14 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 5b10 1b 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5b2b 107 5 0 18 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 5b30 100 0 0 18 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 5b5b d4 0 0 18 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 5b5f cf 0 0 18 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 5c32 1e 3 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 5c50 27 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5c77 28 3 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 5c9f 24 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5cc3 26 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5ce9 15 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5cfe 9 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5d07 9 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5d10 18 3 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5d11 16 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5d28 20 1 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5d29 1e 0 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5d48 37 5 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5d4d 31 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5d7f 3c 5 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5d84 36 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5dbb 3c 5 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5dc0 36 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5df7 3c 5 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5dfc 36 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5e33 3c 5 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5e38 36 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5e6f 37 5 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5e74 31 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5ea6 37 5 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5eab 31 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5edd 92 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5f1b 34 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5f1c 32 0 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 5f6f e2 c 0 c c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 6039 11 0 0 c c 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 6051 11 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6062 11 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6073 f 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6082 f 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6091 4c 1 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6092 4a 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 616b 33 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 619e 36 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 61d4 36 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 620a 39 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6243 14 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6257 f 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6266 f 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6275 96 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6276 94 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 62ba 4a 0 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 8 - ^ =
+STACK WIN 4 62bb 46 0 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 8 - ^ =
+STACK WIN 4 630b 2f 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6313 26 0 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 633a 82 9 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6341 78 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 63bc e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 63ca 3 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 63cd 33 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6400 24 6 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 6404 1e 2 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 6424 4a a 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6429 44 5 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 642a 42 4 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 646e d 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 647b 10 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 648b e 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6499 994 2c 0 10 0 278 0 1 $T0 $ebp 504 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 64bb 945 a 0 10 4 278 0 1 $T0 $ebp 504 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 636 - ^ =
+STACK WIN 4 64c2 93b 3 0 10 8 278 0 1 $T0 $ebp 504 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 636 - ^ =
+STACK WIN 4 64c5 937 0 0 10 c 278 0 1 $T0 $ebp 504 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 636 - ^ =
+STACK WIN 4 6e2d 3b 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6e68 13 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6e7b 13 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6e8e 1e 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6e8f 1c 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6eac 1b 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6ec7 2a 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6ec8 28 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6ef1 1b 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6f0c 2a 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6f0d 28 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6fa0 24 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6fd0 196 14 0 10 0 14 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 6fd4 d3 10 0 10 4 14 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 24 - ^ =
+STACK WIN 4 6fd9 cd b 0 10 8 14 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 28 - ^ = $ebx $T0 24 - ^ =
+STACK WIN 4 6fda cb a 0 10 c 14 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 28 - ^ = $ebx $T0 24 - ^ =
+STACK WIN 4 6fe4 c0 0 0 10 10 14 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 28 - ^ = $ebx $T0 24 - ^ =
+STACK WIN 4 7166 90 c 0 10 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 71eb a 0 0 10 c 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 71f6 1a 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7210 1a 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 722a 1a 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7244 18 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 725c 18 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7274 18 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 728c 104 9 0 0 0 328 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 7390 5c6 22 0 c 0 594 0 1 $T0 $ebp 1304 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 73b2 597 0 0 c 4 594 0 1 $T0 $ebp 1304 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 73fe 542 0 0 c 8 594 0 1 $T0 $ebp 1304 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 1436 - ^ =
+STACK WIN 4 740c 533 0 0 c c 594 0 1 $T0 $ebp 1304 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 1436 - ^ =
+STACK WIN 4 7956 dc c 0 c c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 7a28 9 0 0 c c 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 7a32 2d 5 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7a37 27 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7a5f e1 c 0 4 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 7b36 9 0 0 4 c 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 7b40 49 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7b41 3b 1 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7b42 39 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7b89 55 8 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7b8a 53 7 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 7b91 4b 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 7b97 2a 0 0 0 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 7bde 15 3 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 7bf3 18 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7c0b c3 c 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 7cc5 8 0 0 4 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 7cce 31 7 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 7cd5 28 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 7cff 240 c 0 0 c 64 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 7f28 4 0 0 0 c 64 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 7f3f 4c 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f40 4a 1 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f41 48 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f8b 21 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7f8c 1f 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7fac 10 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7fbc 40 2 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7fbd 3e 1 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7fbe 3c 0 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7ffc 48 2 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7ffd 46 1 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 7ffe 44 0 0 8 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 8044 4b 2 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 8045 49 1 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 8046 47 0 0 8 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 808f 50 2 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 8090 4e 1 0 c 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 8091 4c 0 0 c 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 80df 8 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 80e7 a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 80f1 a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 80fb 8e c 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 8151 8 0 0 4 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 8189 9f c 0 0 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 821f 8 0 0 0 c 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 8228 19 8 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 8229 15 7 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 8241 b 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 824c 22 3 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 824d 1e 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 826e 5c 2 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 826f 5a 1 0 c 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 8270 58 0 0 c 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 82ca 44 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 830e e1 c 0 10 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 8390 a 0 0 10 c 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 83ce 20 0 0 10 c 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 83ef 45 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 8434 54 c 0 8 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 8477 9 0 0 8 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 8488 25 7 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 848f 1d 0 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 84ad 13 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 84c0 b3 8 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 84c7 9a 1 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 84c8 98 0 0 8 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 8573 4c 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 85bf 139 1 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 85c0 137 0 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 85cf 127 0 0 8 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 8 - ^ =
+STACK WIN 4 85d0 11f 0 0 8 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 12 - ^ = $ebx $T0 8 - ^ =
+STACK WIN 4 85d1 11d 0 0 8 10 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 12 - ^ = $ebx $T0 8 - ^ =
+STACK WIN 4 86f8 4 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 86fc 32 c 0 8 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 8714 a 0 0 8 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 872e 33 c 0 8 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 8747 a 0 0 8 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 8761 32 c 0 8 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 8779 a 0 0 8 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 8793 3b c 0 14 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 87b4 a 0 0 14 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 87ce 79 6 0 4 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 87f0 52 0 0 4 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 87f1 50 0 0 4 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 8847 49 c 0 4 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 8890 30 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 8891 2a 1 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 8892 28 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 88c0 82 8 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 88c1 7b 7 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 88c8 73 0 0 8 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 8942 19c 14 0 18 c 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 89d2 9 0 0 18 c 3c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 8a62 7b 0 0 18 c 3c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 8ade 17f c 0 10 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 8c49 4 0 0 10 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 8c5d 91 c 0 10 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 8ce2 4 0 0 10 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 8cee 143 9 0 10 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 8cfe 131 0 0 10 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 8d02 12c 0 0 10 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 8d05 128 0 0 10 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 8e31 6c 3 0 1c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 8e9d f2 6 0 20 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 8ea3 ea 0 0 20 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 8eb3 d9 0 0 20 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 8f31 5a 0 0 20 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 40 - ^ =
+STACK WIN 4 8f8f 356 17 0 20 0 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 8f99 34a d 0 20 4 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 48 - ^ =
+STACK WIN 4 8fa5 33d 1 0 20 8 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 48 - ^ =
+STACK WIN 4 8fa6 33b 0 0 20 c 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 48 - ^ =
+STACK WIN 4 92e5 18 7 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 92e6 14 6 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 92fd e4 6 0 20 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 9301 de 2 0 20 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ =
+STACK WIN 4 9302 dc 1 0 20 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ =
+STACK WIN 4 9303 da 0 0 20 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ =
+STACK WIN 4 93e1 6c 7 0 0 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 93e7 64 1 0 0 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 93e8 62 0 0 0 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 9408 41 0 0 0 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 944d 6e 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 944e 6c 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 94bb 9 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 94c4 6e 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 94c5 6c 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 9532 9 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 953b 15 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 9550 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 9556 32 1 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 9557 30 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 9588 19 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 95a1 3d 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 95de bf c 0 8 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 9694 8 0 0 8 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 969d 77 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 969e 75 1 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 969f 71 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 9714 18 1 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 9715 16 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 972c 121 c 0 4 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 9835 b 0 0 4 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 9841 b 0 0 4 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 984d 69 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 9857 4b 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 9860 25 0 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 98b6 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 98bc 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 98c2 184 1 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 98c3 182 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 98de 166 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 9a46 39 c 0 0 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 9a66 4 0 0 0 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 9a7f 13 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 9a92 37 c 0 0 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 9ab6 4 0 0 0 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 9ac9 11 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 9b2c b9 5 0 4 0 4 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 9b2e b5 3 0 4 4 4 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 8 - ^ =
+STACK WIN 4 9b2f b3 2 0 4 8 4 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 12 - ^ = $ebx $T0 8 - ^ =
+STACK WIN 4 9b30 b1 1 0 4 c 4 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 12 - ^ = $ebx $T0 8 - ^ =
+STACK WIN 4 9b31 af 0 0 4 10 4 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 12 - ^ = $ebx $T0 8 - ^ =
+STACK WIN 4 9be5 2f 1 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 9be6 2d 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 9c14 3c c 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 9c4a 5 0 0 4 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 9c50 12 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 9c62 4f c 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 9ca8 8 0 0 4 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 9cb1 75 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 9cf9 2c 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 9d26 c3 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 9d27 c1 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ =
+STACK WIN 4 9d35 9c 0 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = $ebx $T0 8 - ^ =
+STACK WIN 4 9d3c 94 0 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = $ebx $T0 8 - ^ =
+STACK WIN 4 9d3d 90 0 0 4 10 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = $ebx $T0 8 - ^ =
+STACK WIN 4 9de9 a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 9df3 31 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 9df4 2f 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 9e24 9 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 9e2d d 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 9e3a 22 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 9e5c 22 3 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 9e7e 70 c 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 9ee5 8 0 0 4 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 9eee f5 c 0 8 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 9fd7 b 0 0 8 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 9fe3 70 c 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 a04a 8 0 0 4 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 a053 31 3 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 a084 eb c 0 8 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 a163 b 0 0 8 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 a16f 53 c 0 4 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 a1b9 8 0 0 4 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 a258 65 b 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 a25d 5f 6 0 c 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 a262 59 1 0 c 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 a263 57 0 0 c c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 aa15 3d 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 aa52 e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 aa60 1a0 8 0 4 0 4 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 aa62 19c 6 0 4 4 4 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 8 - ^ =
+STACK WIN 4 aa67 196 1 0 4 8 4 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 8 - ^ =
+STACK WIN 4 aa68 194 0 0 4 c 4 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 8 - ^ =
+STACK WIN 4 aa85 176 0 0 4 10 4 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 20 - ^ = $ebx $T0 8 - ^ =
+STACK WIN 4 ac00 20 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 ac20 39 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 ac59 1 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 ac5a 32 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 ac65 1c 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 ac8c 15e 6 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 ac92 156 0 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 acaa 13d 0 0 8 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 acb0 136 0 0 8 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 adea 1b 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 ae05 db b 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 ae06 c3 a 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 ae0f b9 1 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 ae10 b7 0 0 0 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 ae5f 67 0 0 0 10 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 16 - ^ = $ebx $T0 4 - ^ =
+STACK WIN 4 aee0 a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 aeea 198 e 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 aef2 187 6 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 aef8 180 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 b082 b9 11 0 0 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 b089 b0 a 0 0 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 b092 a6 1 0 0 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 b093 a4 0 0 0 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 b13b 135 b 0 0 0 8 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 b143 12a 3 0 0 4 8 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 12 - ^ =
+STACK WIN 4 b144 128 2 0 0 8 8 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 16 - ^ = $ebx $T0 12 - ^ =
+STACK WIN 4 b145 126 1 0 0 c 8 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 16 - ^ = $ebx $T0 12 - ^ =
+STACK WIN 4 b146 124 0 0 0 10 8 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 16 - ^ = $ebx $T0 12 - ^ =
+STACK WIN 4 b270 24 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 b271 22 1 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 b272 20 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 b294 24 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 b295 22 1 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 b296 20 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 b2b8 5b 6 0 0 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 b2be 43 0 0 0 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 b313 5a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 b36d 74 1 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 b36e 72 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ =
+STACK WIN 4 b37a 53 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = $ebx $T0 8 - ^ =
+STACK WIN 4 b381 4b 0 0 0 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = $ebx $T0 8 - ^ =
+STACK WIN 4 b38c 30 0 0 0 10 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = $ebx $T0 8 - ^ =
+STACK WIN 4 b3e1 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 b3e7 94 15 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 b3fb 7e 1 0 0 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 b3fc 7c 0 0 0 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 b418 5f 0 0 0 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 b47b 8 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 b483 160 5 0 8 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 b488 159 0 0 8 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 b4c5 11b 0 0 8 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 b52c b3 0 0 8 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 b5e3 25 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 b608 25 6 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 b60c 1f 2 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 b62d 4f a 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 b632 49 5 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 b633 47 4 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 b67c 910 30 0 10 0 474 0 1 $T0 $ebp 1012 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 b69e 8c1 e 0 10 4 474 0 1 $T0 $ebp 1012 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 1144 - ^ =
+STACK WIN 4 b6a5 8b7 7 0 10 8 474 0 1 $T0 $ebp 1012 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 1144 - ^ =
+STACK WIN 4 b6ac 8af 0 0 10 c 474 0 1 $T0 $ebp 1012 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 1144 - ^ =
+STACK WIN 4 bf8c 97 7 0 10 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 bf93 8e 0 0 10 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 bfbf 61 0 0 10 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 c023 17 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 c03a 5 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 c03f 55 7 0 10 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 c046 4c 0 0 10 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 c094 18 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 c0ac 1a 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 c0c6 18 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 c0de 1a 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 c0f8 14e c 0 14 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 c23c 9 0 0 14 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 c246 1e 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 c264 1e 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 c282 1e 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 c2a0 1c 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 c2bc 1c 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 c2d8 1c 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 c2f4 25 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 c319 25 6 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 c31d 1f 2 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 c33e 4f a 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 c343 49 5 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 c344 47 4 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 c38d 91c 2c 0 10 0 474 0 1 $T0 $ebp 1012 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 c3a9 8d3 10 0 10 4 474 0 1 $T0 $ebp 1012 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 1144 - ^ =
+STACK WIN 4 c3b0 8c9 9 0 10 8 474 0 1 $T0 $ebp 1012 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 1144 - ^ =
+STACK WIN 4 c3b9 8bf 0 0 10 c 474 0 1 $T0 $ebp 1012 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 1144 - ^ =
+STACK WIN 4 cca9 154 9 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 ccb1 14a 1 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 ccb2 148 0 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 cdfd 25 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 ce22 25 6 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 ce26 1f 2 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 ce47 4f a 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 ce4c 49 5 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 ce4d 47 4 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 ce96 f60 2a 0 10 0 ad4 0 1 $T0 $ebp 1160 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 ceb8 f0f 8 0 10 4 ad4 0 1 $T0 $ebp 1160 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 2776 - ^ =
+STACK WIN 4 ceb9 f0b 7 0 10 8 ad4 0 1 $T0 $ebp 1160 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 2776 - ^ =
+STACK WIN 4 cec0 f03 0 0 10 c ad4 0 1 $T0 $ebp 1160 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 2776 - ^ =
+STACK WIN 4 ddf6 1f 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 ddf7 1d 1 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 ddf8 1b 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 de20 29 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 de50 42 18 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 de5e 33 a 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 de5f 31 9 0 8 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 de68 27 0 0 8 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 dea0 bb 33 0 4 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 deba a1 19 0 4 10 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 df29 14 0 0 4 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 df5b 19 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 df74 9b c 0 4 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 dfed 9 0 0 4 c 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 e00f 34 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 e01a 1d 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 e043 d 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 e050 9 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 e059 9 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 e062 23d c 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 e257 b 0 0 8 c 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 e29f 1b0 c 0 4 c 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 e40d 14 0 0 4 c 30 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 e44f a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 e459 104 3 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 e45a 102 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ =
+STACK WIN 4 e45b 100 1 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ =
+STACK WIN 4 e45c fe 0 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ =
+STACK WIN 4 e495 c4 0 0 4 10 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = $ebx $T0 16 - ^ =
+STACK WIN 4 e55d 15a 24 0 14 0 94 0 1 $T0 $ebp 100 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 e576 bc b 0 14 4 94 0 1 $T0 $ebp 100 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 152 - ^ =
+STACK WIN 4 e577 b8 a 0 14 8 94 0 1 $T0 $ebp 100 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 152 - ^ =
+STACK WIN 4 e581 ad 0 0 14 c 94 0 1 $T0 $ebp 100 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 152 - ^ =
+STACK WIN 4 e6b7 a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 e6c1 a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 e6cb 10 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 e6db c5 c 0 8 c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 e761 17 0 0 8 c 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 e7a0 5e 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 e7b8 45 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 e7fe 2f 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 e82d 55 b 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 e82e 53 a 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 e82f 51 9 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ =
+STACK WIN 4 e830 4f 8 0 0 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ =
+STACK WIN 4 e831 4d 7 0 0 10 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ =
+STACK WIN 4 e882 18a 1d 0 0 0 51c 0 1 $T0 $ebp 1180 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 e89e 161 1 0 0 4 51c 0 1 $T0 $ebp 1180 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 1312 - ^ =
+STACK WIN 4 e89f 15d 0 0 0 8 51c 0 1 $T0 $ebp 1180 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 1312 - ^ =
+STACK WIN 4 ea0c a4 c 0 0 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 eaa4 b 0 0 0 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 eab0 7a 7 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 eab7 71 0 0 0 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 eb2a 1d9 19 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 eb3b 1c1 8 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 eb3f 1ba 4 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 eb43 1b5 0 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 ed03 3c 6 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 ed3f 19a c 0 4 c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 eea0 8 0 0 4 c 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 eed9 1e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 eef7 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 eefd 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 ef03 140 12 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 ef04 13e 11 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 ef05 13c 10 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ =
+STACK WIN 4 ef06 13a f 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ =
+STACK WIN 4 ef15 12a 0 0 4 10 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ =
+STACK WIN 4 f043 86 8 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 f044 84 7 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 f045 82 6 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ =
+STACK WIN 4 f046 80 5 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ =
+STACK WIN 4 f04b 7a 0 0 4 10 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ =
+STACK WIN 4 f0c9 8c 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 f0ca 8a 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 f0d3 7e 0 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 8 - ^ =
+STACK WIN 4 f0d4 7c 0 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 12 - ^ = $ebx $T0 8 - ^ =
+STACK WIN 4 f0d5 7a 0 0 4 10 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 12 - ^ = $ebx $T0 8 - ^ =
+STACK WIN 4 f155 24 3 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 f156 22 2 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 f165 12 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 f179 3e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 f182 31 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 f1b7 76 c 0 0 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 f221 8 0 0 0 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 f22d 66 2 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 f22e 64 1 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 f22f 62 0 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 f293 53 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 f2e6 96 c 0 4 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 f370 b 0 0 4 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 f37c 5 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 f381 88 c 0 0 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 f3fd b 0 0 0 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 f409 5 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 f40e 3 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 f411 3e 2 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 f412 3c 1 0 c 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 f413 3a 0 0 c 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 f41e 2e 0 0 c c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 f44f 129 6 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 f453 123 2 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ =
+STACK WIN 4 f454 121 1 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ =
+STACK WIN 4 f455 11f 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ =
+STACK WIN 4 f578 6b 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 f57c 4d 1 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ =
+STACK WIN 4 f57d 4b 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ =
+STACK WIN 4 f5e3 171 4 0 0 0 10 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 f5e7 169 0 0 0 4 10 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 20 - ^ =
+STACK WIN 4 f606 149 0 0 0 8 10 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 24 - ^ = $ebx $T0 20 - ^ =
+STACK WIN 4 f607 141 0 0 0 c 10 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 24 - ^ = $ebx $T0 20 - ^ =
+STACK WIN 4 f754 1d4 1e 0 18 0 b4 0 1 $T0 $ebp 96 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 f76d 1b1 5 0 18 4 b4 0 1 $T0 $ebp 96 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 184 - ^ =
+STACK WIN 4 f76e 1ad 4 0 18 8 b4 0 1 $T0 $ebp 96 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 184 - ^ =
+STACK WIN 4 f772 1a8 0 0 18 c b4 0 1 $T0 $ebp 96 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 184 - ^ =
+STACK WIN 4 f928 2f6 17 0 4 0 1c4 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 f93e 2d6 1 0 4 4 1c4 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 456 - ^ =
+STACK WIN 4 f93f 2d2 0 0 4 8 1c4 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 456 - ^ =
+STACK WIN 4 fc1e 1ce 18 0 4 0 98 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 fc37 1ab 0 0 4 4 98 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 156 - ^ =
+STACK WIN 4 fc38 1a7 0 0 4 8 98 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 156 - ^ =
+STACK WIN 4 fc3f 19f 0 0 4 c 98 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 156 - ^ =
+STACK WIN 4 fdec f3 7 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 fdf2 2c 1 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 fdf3 2a 0 0 8 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 fedf 5 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 fee4 170 c 0 8 c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1000a 10 0 0 8 c 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 1001b b 0 0 8 c 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 1004c 7 0 0 8 c 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 10054 15f 10 0 14 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1005b a1 9 0 14 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 1005c b2 8 0 14 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 10064 96 0 0 14 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 101b3 1b 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 101ce 4f 6 0 c 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1021d 30 4 0 8 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1024d 36 6 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 10283 e 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 10291 16 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 102a7 11 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 102b8 13 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 102cb e 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 102d9 13 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 102ec e 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 102fa 13 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1030d e 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1031b 16 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 10331 11 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 10342 13 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 10355 e 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 10363 13 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 10376 e 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 10384 16 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1039a 11 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 103ab 16 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 103c1 11 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 103d2 16 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 103e8 11 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 103f9 13 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1040c e 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1041a c 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 10426 26 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1044c 21 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1046d 26 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 10493 21 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 106ab 33 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 106de 24 6 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 106e2 1e 2 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 10702 4a a 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 10707 44 5 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 10708 42 4 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 1074c 9b0 2c 0 10 0 278 0 1 $T0 $ebp 504 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1076e 960 a 0 10 4 278 0 1 $T0 $ebp 504 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 636 - ^ =
+STACK WIN 4 10775 956 3 0 10 8 278 0 1 $T0 $ebp 504 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 636 - ^ =
+STACK WIN 4 10778 952 0 0 10 c 278 0 1 $T0 $ebp 504 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 636 - ^ =
+STACK WIN 4 110fc 129 8 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 11103 120 1 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 11104 11e 0 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 11225 33 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 11258 24 6 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1125c 1e 2 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1127c 4a a 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 11281 44 5 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 11282 42 4 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 112c6 10 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 112d6 f88 2a 0 10 0 8d0 0 1 $T0 $ebp 656 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 112f8 f39 8 0 10 4 8d0 0 1 $T0 $ebp 656 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 2260 - ^ =
+STACK WIN 4 112f9 f35 7 0 10 8 8d0 0 1 $T0 $ebp 656 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 2260 - ^ =
+STACK WIN 4 11300 f2d 0 0 10 c 8d0 0 1 $T0 $ebp 656 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 2260 - ^ =
+STACK WIN 4 1225e c2 11 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1226f 9e 0 0 4 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 12320 9b c 0 4 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 123b2 8 0 0 4 c 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 123bb 46 c 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 123f8 8 0 0 4 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 12401 113 8 0 10 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 12408 21 1 0 10 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 12409 1f 0 0 10 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 12514 17 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1252b 83 13 0 10 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 12534 78 a 0 10 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1253e 6d 0 0 10 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 125ae 119 c 0 10 c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 126bd 9 0 0 10 c 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 126c7 7d 8 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 126ce 75 1 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 126cf 73 0 0 8 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 126fd 2c 0 0 8 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 12 - ^ =
+STACK WIN 4 12744 81 b 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 12749 7b 6 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 1274e 75 1 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 1274f 73 0 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 127c5 71 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 127e6 4f 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 12836 a0 c 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 128c8 d 0 0 4 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 128d6 22 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 128f8 19f c 0 0 c 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 129c5 e 0 0 0 c 28 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 12a8e 8 0 0 0 c 28 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 12a97 115 c 0 8 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 12b7f 2c 0 0 8 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 12bac 11e c 0 c c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 12ca3 d 0 0 c c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 12cca 3f 9 0 8 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 12cd3 34 0 0 8 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 12cec 18 0 0 8 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 12d09 21b c 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 12e47 e 0 0 8 c 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 12f24 79 7 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 12f2b 70 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ =
+STACK WIN 4 12f61 39 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ =
+STACK WIN 4 12f62 37 0 0 c c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ =
+STACK WIN 4 12f9d 21 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 12fbe 46 b 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 12fc9 3a 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 13004 3c 5 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 13009 36 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 13040 48 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 13088 2b 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 130b3 314 11 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 130c0 305 4 0 8 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 130c4 300 0 0 8 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 130f1 2d2 0 0 8 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 133c7 b0 d 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 133cd a9 7 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 133d4 a1 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 13477 106 11 0 4 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 13483 f8 5 0 4 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 13484 f6 4 0 4 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 13488 f1 0 0 4 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 1357d 2df 12 0 c 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1358a 2d0 5 0 c 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 1358b 2ce 4 0 c 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 1358f 2c9 0 0 c c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 1385c cd 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 13929 2e2 f 0 0 0 138 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 13938 294 0 0 0 4 138 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 316 - ^ =
+STACK WIN 4 1394d 27e 0 0 0 8 138 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 316 - ^ =
+STACK WIN 4 13950 27a 0 0 0 c 138 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 316 - ^ =
+STACK WIN 4 13c0b a8 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 13c0c a6 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 13c54 5d 0 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 13cb3 2e3 2a 0 4 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 13cd7 2bd 6 0 4 4 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 13cdc 2b7 1 0 4 8 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 13cdd 2b5 0 0 4 c 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 13f96 72 7 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 13f97 70 6 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 13f98 6e 5 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 13f9d 68 0 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 14008 7c c 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 14079 a 0 0 4 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 14084 d 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14091 d 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1409e d 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 140ab f3 23 0 0 4 328 0 1 $T0 $ebp 680 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1419e 1e 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 142f3 a3 c 0 4 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 14385 10 0 0 4 c 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 14396 6 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1439c 1b 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 143b7 26 3 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 143b8 24 2 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 143dd 63 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14440 474 a 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14447 42e 3 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 14448 42c 2 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ =
+STACK WIN 4 14449 42a 1 0 0 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ =
+STACK WIN 4 1444a 428 0 0 0 10 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ =
+STACK WIN 4 148b4 b 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 148bf d 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 148cc e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 148da e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 148e8 e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 148f6 e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14904 12 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14916 e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14924 e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14932 e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14940 b 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1494b b 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14956 b 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14961 e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1496f b 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1497a e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14988 19 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 149a1 84 13 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 149a2 80 12 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 149a3 7e 11 0 8 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 149c9 57 0 0 8 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 12 - ^ =
+STACK WIN 4 14a25 d 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14a32 12 2 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14a44 9c 2 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14a57 86 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14ae0 a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14aea 5 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14aef 7 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14af6 a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14b00 8 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14b08 a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14b12 a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14b1c 8 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14b24 a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14b2e 8 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14b36 a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14b40 8 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14b48 a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14b52 8 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14b5a 7b 2 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14b5d 75 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14bd5 9 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14bde 25 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14c03 d 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14c10 4 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14c14 29 2 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14c26 f 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14c3d 16 2 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14c53 4 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14c57 4 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14c5b 1b 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14c76 4 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14c7a 2f 6 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14ca9 25 2 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14cce 4 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14cd2 d 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14cdf e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14ced 20 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14d0d 25 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14d32 33 6 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 14d65 34 6 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 14d99 13 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14dac 56 8 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14db2 4d 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14e02 61 b 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14e03 5d a 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14e04 59 9 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14e63 17 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14e7a 15 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14e8f 14 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14ea3 e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14eb1 14 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14ec5 25 1 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14ec6 23 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14ed2 14 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14eea 38 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14eeb 36 1 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14eec 32 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14f22 91 7 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 14f26 89 3 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 14f27 87 2 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 14f5c 40 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 14fb3 35 2 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14fb6 2f 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14fe8 81 b 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14fe9 7d a 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 14fea 79 9 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 15069 1e 3 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1506a 1c 2 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 15087 47 3 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 15088 43 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 150ce 47 7 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 150cf 45 6 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 150d0 43 5 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 150d1 41 4 0 0 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 15115 65 11 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 15116 61 10 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 1511b 5b b 0 8 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 1511c 57 a 0 8 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 1517a 12 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1518c 31 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 151bd f 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 151cc f 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 151db 1d 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 151f8 33 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1522b 73 7 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1522f 6b 3 0 14 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 15230 5b 2 0 14 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1529e 2f 3 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 152cd f 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 152dc 79 4 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 152dd 75 3 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 152de 71 2 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 15355 68 3 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 15356 64 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 153bd a6 3 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 153be a2 2 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 153de 81 0 0 8 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 8 - ^ =
+STACK WIN 4 153f0 6e 0 0 8 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 8 - ^ =
+STACK WIN 4 15463 26 3 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 15464 22 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 15489 31 7 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1548e 29 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 154ba d0 7 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 154be b3 3 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ =
+STACK WIN 4 154bf b1 2 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ =
+STACK WIN 4 154ce 9f 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ =
+STACK WIN 4 1558a 69 13 0 8 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1559b 4f 2 0 8 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 40 - ^ =
+STACK WIN 4 1559c 4b 1 0 8 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 40 - ^ =
+STACK WIN 4 1559d 49 0 0 8 c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 40 - ^ =
+STACK WIN 4 155f3 96 22 0 8 0 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 15607 79 e 0 8 4 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 15615 66 0 0 8 8 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1563a 29 0 0 8 c 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 52 - ^ =
+STACK WIN 4 15689 2e 1 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1568a 2a 0 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 156b7 62 8 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 156b8 5e 7 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 156b9 5a 6 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 15719 8b a 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1571a 87 9 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1571b 83 8 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 157a4 1c 9 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 157a5 18 8 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 157c0 2a 7 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 157c5 22 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 157ea a6 5 0 4 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 15890 37 3 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 158c7 51 1 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 158c8 4d 0 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 15918 2e 1 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 15919 2a 0 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 15946 6a a 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 15947 66 9 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 1594e 5e 2 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 159b0 6c a 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 159b1 68 9 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 159b2 64 8 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 15a1c e0 e 0 4 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 15a23 d7 7 0 4 4 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 15a2a cd 0 0 4 8 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 15a45 b1 0 0 4 c 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 32 - ^ =
+STACK WIN 4 15afc 4f 6 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 15b02 47 0 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 15b4b 22 5 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 15b6d 22 5 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 15b8f 22 5 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 15bb1 2e 1 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 15bb2 2a 0 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 15bdf 2e 1 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 15be0 2a 0 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 15c0d 141 7 0 8 0 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 15c14 138 0 0 8 4 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 15c95 b3 0 0 8 8 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 15c96 b1 0 0 8 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 15d4e d4 6 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 15e22 c4 e 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 15ee6 7e d 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 15f64 125 11 0 10 0 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 15f75 112 0 0 10 4 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 16089 15f f 0 8 0 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 16098 4a 0 0 8 4 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 160f0 b3 0 0 8 8 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 161e8 31 6 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 16219 12 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1622b 12 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1623d 12 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1624f 150 7 0 8 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 16256 147 0 0 8 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1639f a0 6 0 c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1643f 50 5 0 4 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1648f 2bb 2b 0 4 0 d0 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 164aa 296 10 0 4 4 d0 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 212 - ^ =
+STACK WIN 4 164b3 28a 7 0 4 8 d0 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 212 - ^ =
+STACK WIN 4 164ba 282 0 0 4 c d0 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 212 - ^ =
+STACK WIN 4 1674a d9 b 0 c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 167b8 17 0 0 c 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 16823 14 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 16837 1b8 18 0 4 0 60 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 16848 1a0 7 0 4 4 60 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1684f 18d 0 0 4 8 60 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 16870 168 0 0 4 c 60 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 108 - ^ =
+STACK WIN 4 169ef 56f 22 0 c 0 a0 0 1 $T0 $ebp 108 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 16a03 97 e 0 c 4 a0 0 1 $T0 $ebp 108 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 164 - ^ =
+STACK WIN 4 16a11 88 0 0 c 8 a0 0 1 $T0 $ebp 108 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 164 - ^ =
+STACK WIN 4 16f5e 153 10 0 8 0 d0 0 1 $T0 $ebp 112 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 16f82 11b 0 0 8 4 d0 0 1 $T0 $ebp 112 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 212 - ^ =
+STACK WIN 4 16f89 113 0 0 8 8 d0 0 1 $T0 $ebp 112 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 212 - ^ =
+STACK WIN 4 16f92 109 0 0 8 c d0 0 1 $T0 $ebp 112 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 212 - ^ =
+STACK WIN 4 170b1 1ea 1b 0 8 0 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 170cc 1c8 0 0 8 4 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 17154 111 0 0 8 8 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 64 - ^ =
+STACK WIN 4 17155 10f 0 0 8 c 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 64 - ^ =
+STACK WIN 4 1729b e4 15 0 4 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 172a2 db e 0 4 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 172b0 ca 0 0 4 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1737f f 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1738e 100 19 0 4 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1739a f2 d 0 4 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 173a7 e4 0 0 4 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 1748e 46 3 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 174d4 92 6 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 17566 b42 14 0 8 0 6c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 17571 b35 9 0 8 4 6c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1757a b2b 0 0 8 8 6c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 175e3 abe 0 0 8 c 6c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 120 - ^ =
+STACK WIN 4 180a8 211 13 0 4 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 180af 208 c 0 4 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 180bb 1fb 0 0 4 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 182b9 28b 1f 0 4 0 98 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 182c5 27a 13 0 4 4 98 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 156 - ^ =
+STACK WIN 4 182c6 278 12 0 4 8 98 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 156 - ^ =
+STACK WIN 4 182d8 263 0 0 4 c 98 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 156 - ^ =
+STACK WIN 4 18544 341 d 0 8 0 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 18589 2f7 0 0 8 4 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 52 - ^ =
+STACK WIN 4 185f0 28f 0 0 8 8 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 52 - ^ =
+STACK WIN 4 185f1 28d 0 0 8 c 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 52 - ^ =
+STACK WIN 4 18885 4e4 18 0 14 0 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 18893 4d4 a 0 14 4 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 88 - ^ =
+STACK WIN 4 18894 4d2 9 0 14 8 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 88 - ^ =
+STACK WIN 4 1889d 4c8 0 0 14 c 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 88 - ^ =
+STACK WIN 4 18d69 14c 6 0 0 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 18eb5 116 5 0 10 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 18ed6 59 0 0 10 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 18fcb 1b 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 18fe6 1b 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19001 1b 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1901c a3 f 0 18 c 94 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 190b6 8 0 0 18 c 94 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 190bf a3 f 0 1c c 94 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 19159 8 0 0 1c c 94 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 19162 387 12 0 8 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 19172 350 2 0 8 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 40 - ^ =
+STACK WIN 4 19173 34e 1 0 8 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 40 - ^ =
+STACK WIN 4 19174 34c 0 0 8 c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 40 - ^ =
+STACK WIN 4 194e9 13e 7 0 8 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 194f0 135 0 0 8 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 19627 b1 6 0 8 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 196d8 64 7 0 8 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 196df 5b 0 0 8 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1973c 57 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19793 8f 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19822 14 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19836 14 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1984a 87 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 198d1 e3 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 199b4 1bd 9 0 c 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 199bb 1b4 2 0 c 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 199bc 1b2 1 0 c 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 199bd 1b0 0 0 c c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 19b71 71 b 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19b76 6b 6 0 c 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 19b7b 65 1 0 c 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 19b7c 63 0 0 c c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 19be2 b3 e 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 19be6 1a a 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ =
+STACK WIN 4 19be7 2e 9 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ =
+STACK WIN 4 19bf0 e 0 0 10 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ =
+STACK WIN 4 19c95 46 5 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19c9a 40 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19cdb a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19ce5 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19ceb 51 6 0 10 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 19d3c 15 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19d51 13 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19d64 15 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19d79 13 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19d8c 15 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19da1 13 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19db4 18 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19dcc 16 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19de2 18 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19dfa 16 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19e10 18 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19e28 16 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19e3e 18 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19e56 16 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19e6c 15 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19e81 13 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19e94 15 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19ea9 13 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19ebc 15 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19ed1 13 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19ee4 53 6 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 19f37 e 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19f45 44 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 19f89 1de 1a 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 19f9a 1c6 9 0 8 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 19f9b 1c2 8 0 8 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 19fa3 1b9 0 0 8 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 1a167 78 c 0 8 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1a1d5 9 0 0 8 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 1a1df 5 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1a1e4 1f7 8 0 14 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1a1eb 1ee 1 0 14 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 1a1ec 1ec 0 0 14 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 1a246 174 0 0 14 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 1a3db 29 3 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1a404 1b 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1a41f 2a 3 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1a449 1b 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1a464 9 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1a46d 54 6 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1a4c1 2b 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1a4ec 4f 6 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1a53b 29 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1a564 4f 6 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1a5b3 29 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1a5dc 4f 6 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1a62b 29 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1a654 54 6 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1a6a8 2b 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1a6d3 4f 6 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1a722 29 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1a74b 4f 6 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1a79a 29 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1a7c3 54 6 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1a817 2b 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1a842 54 6 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1a896 2b 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1a8c1 54 6 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1a915 2b 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1a940 4f 6 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1a98f 29 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1a9b8 d 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1a9c5 8 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1a9cd 1f 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1a9ec 1a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1aa06 1f 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1aa25 1c 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1aa41 12 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1aa53 1b 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1aa6e 13b 1d 0 18 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1aa83 126 8 0 18 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 1aba9 3b 6 0 18 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1abe4 13d 1d 0 18 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1abf9 128 8 0 18 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 1ad21 3b 6 0 18 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1ad5c 1a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1ad76 3a2 1d 0 20 8 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1ad87 391 c 0 20 c 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 1b118 43 6 0 24 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1b15b 1b8 1d 0 1c 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1b170 1a3 8 0 1c c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 1b313 40 6 0 20 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1b353 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1b359 29 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1b382 419 6 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1b3a4 3f5 0 0 0 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 1b3a5 3ed 0 0 0 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 1b79b 190 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1b79c 18e 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1b92b 73 4 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1b92c 71 3 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 1b92d 6f 2 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ =
+STACK WIN 4 1b92e 6d 1 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ =
+STACK WIN 4 1b92f 6b 0 0 4 10 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ =
+STACK WIN 4 1b99e 33 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1b9a5 16 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 1b9a6 14 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 1b9d1 40 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1b9d2 3e 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1ba11 1c8 11 0 4 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1ba18 1bf a 0 4 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 1ba1c 1ba 6 0 4 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 1ba22 1b3 0 0 4 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 1bbd9 33 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1bbe0 16 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 1bbe1 14 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 1bc0c 89 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1bc0d 87 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1bc95 2c4 c 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1bc9c 2bb 5 0 4 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 1bc9d 2b9 4 0 4 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 1bca1 2b4 0 0 4 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 1bf59 395 1b 0 4 0 48 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1bf6a 37d a 0 4 4 48 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 76 - ^ =
+STACK WIN 4 1bf6d 377 7 0 4 8 48 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 76 - ^ =
+STACK WIN 4 1bf74 36f 0 0 4 c 48 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 76 - ^ =
+STACK WIN 4 1c2ee 29 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1c317 16 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1c32d 26 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1c353 26 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1c379 26 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1c39f 3 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1c3a2 fe 9 0 4 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1c3a9 e9 2 0 4 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 1c3aa e7 1 0 4 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 1c3ab e5 0 0 4 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 1c4a0 9 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1c4a9 fe 9 0 4 0 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1c4b0 e9 2 0 4 4 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 32 - ^ =
+STACK WIN 4 1c4b1 e7 1 0 4 8 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 32 - ^ =
+STACK WIN 4 1c4b2 e5 0 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 32 - ^ =
+STACK WIN 4 1c5a7 9 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1c5b0 355 9 0 4 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1c5b7 34c 2 0 4 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 40 - ^ =
+STACK WIN 4 1c5b8 348 1 0 4 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 40 - ^ =
+STACK WIN 4 1c5b9 346 0 0 4 c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 40 - ^ =
+STACK WIN 4 1c905 9 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1c90e 20 6 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1c912 1b 2 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1c917 15 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1c92e 36 6 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1c934 2f 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 1c964 79 8 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1c969 72 3 0 4 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 1c96a 70 2 0 4 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 1c9dd 3e6 11 0 10 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1c9e2 3df c 0 10 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 1c9e9 3d7 5 0 10 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 1c9ea 3d5 4 0 10 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 1cdc3 45d 1d 0 18 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1cdd7 449 9 0 18 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 1d220 1af a 0 18 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1d22a 1a3 0 0 18 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 1d270 15c 0 0 18 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 1d2a3 128 0 0 18 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ =
+STACK WIN 4 1d3cf 1e 3 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1d3ed 1d 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1d40a 1e 3 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1d428 26 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1d496 60 6 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1d49c 56 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ =
+STACK WIN 4 1d4a5 45 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ =
+STACK WIN 4 1d4a6 43 0 0 c c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ =
+STACK WIN 4 1d4f6 14 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1d50a 77 11 0 0 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1d51b 5f 0 0 0 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1d581 1e 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1d59f 32 1 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1d5a0 30 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1d5d1 1b 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1d5ec 96 12 0 4 0 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1d5fd 7c 1 0 4 4 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1d5fe 78 0 0 4 8 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1d682 72 11 0 8 0 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1d693 5a 0 0 8 4 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1d6cf 13 0 0 8 8 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1d6f4 1d0 13 0 4 0 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1d705 1b6 2 0 4 4 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 128 - ^ =
+STACK WIN 4 1d706 1b2 1 0 4 8 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 128 - ^ =
+STACK WIN 4 1d707 1b0 0 0 4 c 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 128 - ^ =
+STACK WIN 4 1d8c4 bf 12 0 4 0 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1d8d5 a5 1 0 4 4 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1d8d6 a1 0 0 4 8 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1d983 2c 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1d9af 65 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1da14 3c 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1da50 1e3 4 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1da51 1e1 3 0 c 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 1da52 1df 2 0 c 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ =
+STACK WIN 4 1da53 1dd 1 0 c c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ =
+STACK WIN 4 1da54 1db 0 0 c 10 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ =
+STACK WIN 4 1dc33 12 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1dc45 18 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1dc5d 40 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1dc9d 78 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1dd15 1490 4 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1dd16 83f 3 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1dd17 83d 2 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 1f1a5 1680 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1f1a9 15f8 1 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1f1aa 15f6 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 1f1db 86c 0 0 c c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 20825 be 9 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 2082e a9 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 20840 96 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 20930 82 6 0 c 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 209b2 6e 4 0 8 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 20a20 5 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 20a25 22b 8 0 14 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 20a2c 222 1 0 14 4 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 20a2d 220 0 0 14 8 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 20a8b 1c1 0 0 14 c 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 32 - ^ =
+STACK WIN 4 20c50 29 3 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 20c79 1b 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 20c94 2a 3 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 20cbe 1b 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 20cd9 1f 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 20cf8 1f 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 20d17 2d 9 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 20d20 23 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 20d44 94 6 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 20d45 92 5 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 20d4a 8c 0 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 20dd8 cd c 0 4 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 20e9b 9 0 0 4 c 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 20ea5 2c 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 20ea6 2a 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 20ed1 2a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 20efb 22 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 20efc 20 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 20f1d d 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 20f64 11 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 20f75 15 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 20f8a 5 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 20f8f 5 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 20f94 11 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 20fa5 15 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 20fba 50 c 0 0 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 20fd7 1c 0 0 0 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 2100a 60 9 0 0 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 21013 57 0 0 0 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 2106a d 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 21077 170 5 0 8 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 2107c 169 0 0 8 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 210e1 103 0 0 8 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 21125 be 0 0 8 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 211e7 182 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 21369 b6 7 0 c 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 21370 ad 0 0 c 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 2141f 2f 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 2147c 47 10 0 4 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 214c3 1b2 2a 0 18 8 34 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 214e0 195 d 0 18 c 34 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 56 - ^ =
+STACK WIN 4 21675 34 5 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 2167a 2e 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 216a9 34 5 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 216ae 2e 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 216dd 34 5 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 216e2 2e 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 21711 a2 c 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 21718 99 5 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ =
+STACK WIN 4 2171d 93 0 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ =
+STACK WIN 4 2172b 84 0 0 10 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ =
+STACK WIN 4 217b3 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 217b9 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 217bf 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 217c5 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 217cb c 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 217d7 c 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 217e3 c 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 217ef 349 c 0 0 c 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 21a99 d 0 0 0 c 3c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 21b38 1f5 14 0 24 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 21b47 1e4 5 0 24 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 21b48 1e2 4 0 24 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 21b49 1e0 3 0 24 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 21d2d 1ae 5 0 0 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 21d32 15f 0 0 0 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 21d62 12e 0 0 0 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 21edb 4f c 0 0 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 21f21 8 0 0 0 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 21f2a 38 c 0 0 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 21f59 8 0 0 0 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 21f62 41 c 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 21f9a 8 0 0 4 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 21fa3 35 a 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 21fa8 2f 5 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 21fad 27 0 0 8 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 21fd8 d3 7 0 c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 21fdf ca 0 0 c 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 22020 88 0 0 c 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 22068 33 0 0 c c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 220ab 50 4 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 220af 4a 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 220fb f0 e 0 10 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 22102 e7 7 0 10 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 22108 e0 1 0 10 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 22109 de 0 0 10 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 221eb 5c 4 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 221ef 56 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 22247 db 8 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 2224c d2 3 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 2224d d0 2 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 22277 a5 0 0 c c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 22322 28 3 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 2234a 25 3 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 2236f 18 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 22387 f6 c 0 14 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 2238e eb 5 0 14 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 22393 e5 0 0 14 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 16 - ^ =
+STACK WIN 4 2247d 33 3 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 22498 16 0 0 14 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 224b0 1d 4 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 224b4 17 0 0 14 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 224cd 224 17 0 1c 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 224e2 20f 2 0 1c c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 226f1 3e 6 0 1c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 2272f 294 8 0 14 0 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 22736 28b 1 0 14 4 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 60 - ^ =
+STACK WIN 4 22737 289 0 0 14 8 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 60 - ^ =
+STACK WIN 4 22793 1f9 0 0 14 c 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 60 - ^ =
+STACK WIN 4 229c3 29 3 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 229ec 1b 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 22a07 2a 3 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 22a31 1b 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 22a7b 81 8 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 22a83 70 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 22a92 60 0 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 8 - ^ =
+STACK WIN 4 22a93 5e 0 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 8 - ^ =
+STACK WIN 4 22afc 93 7 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 22b00 8d 3 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ =
+STACK WIN 4 22b01 8b 2 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ =
+STACK WIN 4 22b40 4b 0 0 c c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ =
+STACK WIN 4 22b8f a2 6 0 8 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 22b94 9b 1 0 8 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 22b95 99 0 0 8 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 22c31 83 c 0 4 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 22cab 8 0 0 4 c 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 22cb4 d8 c 0 10 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 22d83 8 0 0 10 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 22d8c e6 c 0 c c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 22e69 8 0 0 c c 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + =
+STACK WIN 4 22e72 8 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 22e7a 117 8 0 8 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 22e81 10e 1 0 8 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 22e82 10c 0 0 8 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ =
+STACK WIN 4 22f91 27 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 23021 ec 7 0 10 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 23028 e3 0 0 10 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 23088 82 0 0 10 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 2310d 17 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 23124 95 a 0 0 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 2312a 7d 4 0 0 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 2312b 7b 3 0 0 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 2312e 77 0 0 0 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ =
+STACK WIN 4 231b9 1a 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 231d3 1a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 231ed 389 16 0 18 8 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 23201 375 2 0 18 c 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 48 - ^ =
+STACK WIN 4 23576 40 6 0 20 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 235b6 f8 7 0 10 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 235bd ef 0 0 10 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 2361d 8e 0 0 10 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 236ae 27 3 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 236d5 4d 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 236d6 48 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 23722 5d 4 0 0 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 2373e 3f 0 0 0 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 2373f 3d 0 0 0 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ =
+STACK WIN 4 2377f 24c f 0 8 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 23789 95 5 0 8 4 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 2378e 8f 0 0 8 8 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 237b1 6b 0 0 8 c 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 24 - ^ =
+STACK WIN 4 239cb 50 6 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 239cc 4e 5 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ =
+STACK WIN 4 239d1 48 0 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ =
+STACK WIN 4 239dc 3c 0 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ =
+STACK WIN 4 239dd 3a 0 0 4 10 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ =
+STACK WIN 4 23a1b ba 7 0 c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =
+STACK WIN 4 23a22 b1 0 0 c 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 23a5f 73 0 0 c 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ =
+STACK WIN 4 23ad5 13 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 240b9 14 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 0 1000 13 0 0 4 0 0 0 0 0
+STACK WIN 0 1020 1b 0 0 10 0 0 0 0 0
+STACK WIN 0 1040 1b 0 0 10 0 0 0 0 0
+STACK WIN 0 1060 19 8 0 4 0 0 0 0 0
+STACK WIN 0 1080 b 0 0 0 0 0 0 0 0
+STACK WIN 0 1090 24 3 0 4 0 0 0 0 0
+STACK WIN 0 10c0 f 0 0 8 0 0 0 0 0
+STACK WIN 0 10d0 17 0 0 4 0 0 0 0 0
+STACK WIN 0 10f0 27 9 0 10 0 0 0 0 0
+STACK WIN 0 1120 27 9 0 10 0 0 0 0 0
+STACK WIN 0 1150 d 0 0 8 0 0 0 0 0
+STACK WIN 0 1160 13 0 0 4 0 0 0 0 0
+STACK WIN 0 1180 21 d 0 10 0 0 0 0 0
+STACK WIN 0 11b0 21 d 0 10 0 0 0 0 0
+STACK WIN 0 11e0 7 0 0 0 0 0 0 0 0
+STACK WIN 0 11f0 6b 28 0 4 8 10 0 0 0
+STACK WIN 0 1260 32 3 0 0 0 0 0 0 0
+STACK WIN 0 12a0 e 0 0 0 0 0 0 0 0
+STACK WIN 0 12b0 47 3 0 4 0 0 0 0 0
+STACK WIN 0 1300 19 8 0 4 0 0 0 0 0
+STACK WIN 0 1320 32 3 0 0 0 0 0 0 0
+STACK WIN 0 1360 47 3 0 4 0 0 0 0 0
+STACK WIN 0 13b0 19 8 0 4 0 0 0 0 0
+STACK WIN 0 13d0 32 3 0 0 0 0 0 0 0
+STACK WIN 0 1410 47 3 0 4 0 0 0 0 0
+STACK WIN 0 1460 19 8 0 4 0 0 0 0 0
+STACK WIN 0 1480 71 29 0 4 c 10 0 0 0
+STACK WIN 0 1500 1b 0 0 8 0 0 0 0 0
+STACK WIN 0 1520 35 4 0 0 0 0 0 0 0
+STACK WIN 0 1560 20b 2d 0 14 14 14 0 0 1
+STACK WIN 0 19f0 31 0 0 0 0 0 0 0 0
+STACK WIN 0 1a30 51 d 0 4 c 0 0 0 0
+STACK WIN 0 1a90 c7 7 0 4 10 8 0 0 1
+STACK WIN 0 1b60 36 0 0 0 0 0 0 0 0
+STACK WIN 0 1ba0 3 0 0 0 0 0 0 0 0
+STACK WIN 0 1db0 81 2 0 8 0 0 0 0 0
+STACK WIN 0 1e40 1d 7 0 0 0 0 0 0 0
+STACK WIN 0 1e60 a2 3a 0 4 10 c4 0 0 0
+STACK WIN 0 1f10 142 c 0 c 0 38 0 0 1
+STACK WIN 0 2060 138 38 0 0 8 244 0 0 0
+STACK WIN 0 21a0 3b 7 0 4 0 0 0 0 0
+STACK WIN 0 21e0 25 5 0 4 0 0 0 0 0
+STACK WIN 0 2210 26 3 0 0 0 0 0 0 0
+STACK WIN 0 2240 e 0 0 0 0 0 0 0 0
+STACK WIN 0 2250 4 0 0 0 0 0 0 0 0
+STACK WIN 0 2260 11 0 0 0 0 0 0 0 0
+STACK WIN 0 2280 27 3 0 0 0 0 0 0 0
+STACK WIN 0 22b0 b 0 0 0 0 0 0 0 0
+STACK WIN 0 22c0 24 3 0 4 0 0 0 0 0
+STACK WIN 0 22f0 e 0 0 0 0 0 0 0 0
+STACK WIN 0 2300 c 0 0 0 0 0 0 0 0
+STACK WIN 0 2310 26 0 0 0 0 0 0 0 0
+STACK WIN 0 2340 1d 1 0 0 0 0 0 0 0
+STACK WIN 0 2360 1d 1 0 0 0 0 0 0 0
+STACK WIN 0 2380 13 0 0 0 0 0 0 0 0
+STACK WIN 0 23a0 23 0 0 0 0 0 0 0 0
+STACK WIN 0 23d0 56 5 0 0 8 c 0 0 0
+STACK WIN 0 2430 47 c 0 0 c 8 0 0 0
+STACK WIN 0 24f0 23 1 0 0 0 4 0 0 0
+STACK WIN 0 2520 3f b 0 8 0 0 0 0 0
+STACK WIN 0 2560 20 0 0 0 0 0 0 0 0
+STACK WIN 0 2580 20 0 0 0 0 0 0 0 0
+STACK WIN 0 25a0 1d 0 0 0 0 0 0 0 0
+STACK WIN 0 25c0 da 11 0 c 0 0 0 0 1
+STACK WIN 0 26a0 27 8 0 4 0 0 0 0 0
+STACK WIN 0 26d0 4a d 0 8 0 0 0 0 0
+STACK WIN 0 2720 e 0 0 0 0 0 0 0 0
+STACK WIN 0 2730 5 2 0 4 0 0 0 0 0
+STACK WIN 0 2740 5 2 0 4 0 0 0 0 0
+STACK WIN 0 2750 3 2 0 0 0 0 0 0 0
+STACK WIN 0 2760 b 0 0 0 0 0 0 0 0
+STACK WIN 0 2770 ef 11 0 c 0 0 0 0 1
+STACK WIN 0 2860 2b 8 0 4 0 0 0 0 0
+STACK WIN 0 2890 4f d 0 8 0 0 0 0 0
+STACK WIN 0 28e0 e 0 0 0 0 0 0 0 0
+STACK WIN 0 28f0 5 2 0 4 0 0 0 0 0
+STACK WIN 0 2900 3 2 0 0 0 0 0 0 0
+STACK WIN 0 2910 13 0 0 0 0 0 0 0 0
+STACK WIN 0 2930 86 a 0 10 10 4 0 0 1
+STACK WIN 0 29c0 23 0 0 0 0 0 0 0 0
+STACK WIN 0 29f0 1 0 0 0 0 0 0 0 0
+STACK WIN 0 2a00 26 0 0 0 0 0 0 0 0
+STACK WIN 0 2a30 23 0 0 0 0 0 0 0 0
+STACK WIN 0 2a60 76 23 0 0 4 50 0 0 0
+STACK WIN 0 2ae0 3 0 0 4 0 0 0 0 0
+STACK WIN 0 2af0 1 0 0 0 0 0 0 0 0
+STACK WIN 0 2b00 21 0 0 0 0 0 0 0 0
+STACK WIN 0 2b30 32 6 0 4 8 0 0 0 0
+STACK WIN 0 2b70 2f 6 0 0 8 0 0 0 0
+STACK WIN 0 2ba0 20 0 0 0 0 0 0 0 0
+STACK WIN 0 2bc0 20 0 0 0 0 0 0 0 0
+STACK WIN 0 2be0 1d 0 0 0 0 0 0 0 0
+STACK WIN 0 2c00 c1 5 0 8 0 0 0 0 1
+STACK WIN 0 2cd0 83 8 0 8 0 0 0 0 1
+STACK WIN 0 2d60 1f 0 0 4 0 0 0 0 0
+STACK WIN 0 2d80 bc b 0 8 0 0 0 0 1
+STACK WIN 0 2e40 e 0 0 0 0 0 0 0 0
+STACK WIN 0 2e50 5 2 0 4 0 0 0 0 0
+STACK WIN 0 2e60 e 0 0 8 0 0 0 0 0
+STACK WIN 0 2e70 da 4 0 8 0 0 0 0 1
+STACK WIN 0 2f50 97 8 0 8 0 0 0 0 1
+STACK WIN 0 2ff0 4 0 0 0 0 0 0 0 0
+STACK WIN 0 3000 23 0 0 4 0 0 0 0 0
+STACK WIN 0 3030 c7 e 0 8 0 0 0 0 1
+STACK WIN 0 3100 e 0 0 0 0 0 0 0 0
+STACK WIN 0 3110 5 2 0 4 0 0 0 0 0
+STACK WIN 0 3120 e 0 0 8 0 0 0 0 0
+STACK WIN 0 3130 6 0 0 0 0 0 0 0 0
+STACK WIN 0 3140 208 6 0 8 10 8 0 0 1
+STACK WIN 0 33d0 1 0 0 0 0 0 0 0 0
+STACK WIN 0 33e0 8 0 0 0 0 0 0 0 0
+STACK WIN 0 33f0 56 3 0 0 0 10 0 0 0
+STACK WIN 0 3450 32 0 0 4 0 0 0 0 0
+STACK WIN 0 3490 28 0 0 0 0 0 0 0 0
+STACK WIN 0 34c0 19 0 0 0 0 0 0 0 0
+STACK WIN 0 34e0 21 0 0 0 0 0 0 0 0
+STACK WIN 0 3510 19 8 0 4 0 0 0 0 0
+STACK WIN 0 3530 7 0 0 0 0 0 0 0 0
+STACK WIN 0 3540 6 0 0 0 0 0 0 0 0
+STACK WIN 0 36d0 39 8 0 4 0 0 0 0 0
+STACK WIN 0 3710 6 0 0 0 0 0 0 0 0
+STACK WIN 0 38a0 3a 8 0 4 0 0 0 0 0
+STACK WIN 0 38e0 6 0 0 0 0 0 0 0 0
+STACK WIN 0 38f0 32 0 0 4 0 0 0 0 0
+STACK WIN 0 3930 19 0 0 0 0 0 0 0 0
+STACK WIN 0 3950 56 7 0 4 0 c 0 0 0
+STACK WIN 0 39b0 4 0 0 0 0 0 0 0 0
+STACK WIN 0 39c0 59 7 0 4 0 c 0 0 0
+STACK WIN 0 3a20 6 0 0 0 0 0 0 0 0
+STACK WIN 0 3a30 21 d 0 10 0 0 0 0 0
+STACK WIN 0 3a60 27 9 0 10 0 0 0 0 0
+STACK WIN 0 3a90 24 f 0 0 0 0 0 0 0
+STACK WIN 0 3ac0 1 0 0 0 0 0 0 0 0
+STACK WIN 0 3ad0 15 0 0 0 0 0 0 0 0
+STACK WIN 0 3af0 21 d 0 10 0 0 0 0 0
+STACK WIN 0 3b20 27 9 0 10 0 0 0 0 0
+STACK WIN 0 3b50 22 d 0 0 0 0 0 0 0
+STACK WIN 0 3b80 10 0 0 0 0 0 0 0 0
+STACK WIN 0 3b90 25 11 0 0 0 0 0 0 0
+STACK WIN 0 3bc0 4f a 0 0 0 10 0 0 0
+STACK WIN 0 3c10 54 7 0 8 0 c 0 0 0
+STACK WIN 0 3c70 57 7 0 8 0 c 0 0 0
+STACK WIN 0 3cd0 19 8 0 4 0 0 0 0 0
+STACK WIN 0 3cf0 7 1 0 0 0 4 0 0 0
+STACK WIN 0 3d00 21 d 0 14 0 0 0 0 0
+STACK WIN 0 3d30 7 1 0 0 0 4 0 0 0
+STACK WIN 0 3d40 27 9 0 14 0 0 0 0 0
+STACK WIN 0 3d70 3 0 0 0 0 0 0 0 0
+STACK WIN 0 3d80 1 0 0 0 0 0 0 0 0
+STACK WIN 0 3d90 7 1 0 0 0 4 0 0 0
+STACK WIN 0 3da0 15 0 0 4 0 0 0 0 0
+STACK WIN 0 3dc0 1 0 0 4 0 0 0 0 0
+STACK WIN 0 3dd0 15 0 0 8 0 0 0 0 0
+STACK WIN 0 3df0 21 d 0 14 0 0 0 0 0
+STACK WIN 0 3e20 27 9 0 14 0 0 0 0 0
+STACK WIN 0 3e50 22 d 0 0 0 0 0 0 0
+STACK WIN 0 3e80 10 0 0 0 0 0 0 0 0
+STACK WIN 0 3e90 7 1 0 0 0 4 0 0 0
+STACK WIN 0 3ea0 25 11 0 c 0 0 0 0 0
+STACK WIN 0 3ed0 3 0 0 4 0 0 0 0 0
+STACK WIN 0 3ee0 15 0 0 0 0 0 0 0 0
+STACK WIN 0 3f00 22 d 0 8 0 0 0 0 0
+STACK WIN 0 3f30 13 0 0 0 0 0 0 0 0
+STACK WIN 0 3f50 1 0 0 0 0 0 0 0 0
+STACK WIN 0 3f60 15 0 0 8 0 0 0 0 0
+STACK WIN 0 3f80 22 d 0 0 0 0 0 0 0
+STACK WIN 0 3fb0 15 0 0 4 0 0 0 0 0
+STACK WIN 0 3fd0 15 0 0 4 0 0 0 0 0
+STACK WIN 0 3ff0 13 0 0 4 0 0 0 0 0
+STACK WIN 0 4010 ae e 0 4 0 54 0 0 0
+STACK WIN 0 40c0 ae e 0 4 0 4c 0 0 0
+STACK WIN 0 4170 40 7 0 4 0 0 0 0 0
+STACK WIN 0 4464 13 0 0 0 0 0 0 0 0
+STACK WIN 0 466c 16 0 0 0 0 0 0 0 0
+STACK WIN 0 46a0 9 0 0 0 0 0 0 0 0
+STACK WIN 0 46f2 a 0 0 0 0 0 0 0 0
+STACK WIN 0 5405 14 0 0 0 0 0 0 0 0
+STACK WIN 0 58bc a 0 0 0 0 0 0 0 0
+STACK WIN 0 6039 12 0 0 0 0 0 0 0 0
+STACK WIN 0 60e0 8b 0 0 4 0 0 0 0 0
+STACK WIN 0 71eb b 0 0 0 0 0 0 0 0
+STACK WIN 0 7a28 a 0 0 0 0 0 0 0 0
+STACK WIN 0 7b36 a 0 0 0 0 0 0 0 0
+STACK WIN 0 7cc5 9 0 0 0 0 0 0 0 0
+STACK WIN 0 7f28 4 0 0 0 0 0 0 0 0
+STACK WIN 0 8151 9 0 0 0 0 0 0 0 0
+STACK WIN 0 821f 9 0 0 0 0 0 0 0 0
+STACK WIN 0 8390 a 0 0 0 0 0 0 0 0
+STACK WIN 0 83ce 21 0 0 0 0 0 0 0 0
+STACK WIN 0 8477 9 0 0 0 0 0 0 0 0
+STACK WIN 0 8714 a 0 0 0 0 0 0 0 0
+STACK WIN 0 8747 a 0 0 0 0 0 0 0 0
+STACK WIN 0 8779 a 0 0 0 0 0 0 0 0
+STACK WIN 0 87b4 a 0 0 0 0 0 0 0 0
+STACK WIN 0 89d2 9 0 0 0 0 0 0 0 0
+STACK WIN 0 8a62 7c 0 0 0 0 0 0 0 0
+STACK WIN 0 8c49 4 0 0 0 0 0 0 0 0
+STACK WIN 0 8ce2 4 0 0 0 0 0 0 0 0
+STACK WIN 0 9694 9 0 0 0 0 0 0 0 0
+STACK WIN 0 9835 c 0 0 0 0 0 0 0 0
+STACK WIN 0 9841 c 0 0 0 0 0 0 0 0
+STACK WIN 0 9a66 4 0 0 0 0 0 0 0 0
+STACK WIN 0 9ab6 4 0 0 0 0 0 0 0 0
+STACK WIN 0 9ae0 4c 8 0 c 10 0 0 0 1
+STACK WIN 0 9c4a 6 0 0 0 0 0 0 0 0
+STACK WIN 0 9ca8 9 0 0 0 0 0 0 0 0
+STACK WIN 0 9ee5 9 0 0 0 0 0 0 0 0
+STACK WIN 0 9fd7 c 0 0 0 0 0 0 0 0
+STACK WIN 0 a04a 9 0 0 0 0 0 0 0 0
+STACK WIN 0 a163 c 0 0 0 0 0 0 0 0
+STACK WIN 0 a1b9 9 0 0 0 0 0 0 0 0
+STACK WIN 0 a1d0 88 0 0 8 0 0 0 0 0
+STACK WIN 0 a2c0 7a 0 0 c 0 0 0 0 0
+STACK WIN 0 c23c a 0 0 0 0 0 0 0 0
+STACK WIN 0 df29 14 0 0 0 0 0 0 0 0
+STACK WIN 0 dfed a 0 0 0 0 0 0 0 0
+STACK WIN 0 e257 c 0 0 0 0 0 0 0 0
+STACK WIN 0 e40d 15 0 0 0 0 0 0 0 0
+STACK WIN 0 e761 17 0 0 0 0 0 0 0 0
+STACK WIN 0 eaa4 c 0 0 0 0 0 0 0 0
+STACK WIN 0 eea0 9 0 0 0 0 0 0 0 0
+STACK WIN 0 f221 9 0 0 0 0 0 0 0 0
+STACK WIN 0 f370 c 0 0 0 0 0 0 0 0
+STACK WIN 0 f3fd c 0 0 0 0 0 0 0 0
+STACK WIN 0 1000a 11 0 0 0 0 0 0 0 0
+STACK WIN 0 1001b c 0 0 0 0 0 0 0 0
+STACK WIN 0 1004c 8 0 0 0 0 0 0 0 0
+STACK WIN 0 10558 90 3 0 c c 0 0 0 0
+STACK WIN 0 105e8 46 0 0 10 4 0 0 0 1
+STACK WIN 0 1064a 17 4 0 0 10 0 0 0 1
+STACK WIN 0 10661 19 0 0 0 0 0 0 0 0
+STACK WIN 0 10694 17 1 0 8 4 0 0 0 1
+STACK WIN 0 123b2 9 0 0 0 0 0 0 0 0
+STACK WIN 0 123f8 9 0 0 0 0 0 0 0 0
+STACK WIN 0 126bd a 0 0 0 0 0 0 0 0
+STACK WIN 0 128c8 e 0 0 0 0 0 0 0 0
+STACK WIN 0 129c5 f 0 0 0 0 0 0 0 0
+STACK WIN 0 12a8e 9 0 0 0 0 0 0 0 0
+STACK WIN 0 12b7f 2d 0 0 0 0 0 0 0 0
+STACK WIN 0 12ca3 e 0 0 0 0 0 0 0 0
+STACK WIN 0 12e47 f 0 0 0 0 0 0 0 0
+STACK WIN 0 14079 b 0 0 0 0 0 0 0 0
+STACK WIN 0 14221 84 3 0 8 c 0 0 0 0
+STACK WIN 0 142a5 23 0 0 0 0 0 0 0 0
+STACK WIN 0 142f0 3 0 0 0 0 0 0 0 0
+STACK WIN 0 14385 11 0 0 0 0 0 0 0 0
+STACK WIN 0 190b6 9 0 0 0 0 0 0 0 0
+STACK WIN 0 19159 9 0 0 0 0 0 0 0 0
+STACK WIN 0 1a1d5 a 0 0 0 0 0 0 0 0
+STACK WIN 0 20e9b a 0 0 0 0 0 0 0 0
+STACK WIN 0 20fd7 1c 0 0 0 0 0 0 0 0
+STACK WIN 0 21a99 e 0 0 0 0 0 0 0 0
+STACK WIN 0 21f21 9 0 0 0 0 0 0 0 0
+STACK WIN 0 21f59 9 0 0 0 0 0 0 0 0
+STACK WIN 0 21f9a 9 0 0 0 0 0 0 0 0
+STACK WIN 0 22cab 9 0 0 0 0 0 0 0 0
+STACK WIN 0 22d83 9 0 0 0 0 0 0 0 0
+STACK WIN 0 22e69 9 0 0 0 0 0 0 0 0
+STACK WIN 0 23b00 be 0 0 8 0 0 0 0 0
diff --git a/google-breakpad/src/processor/testdata/test_app.cc b/google-breakpad/src/processor/testdata/test_app.cc
new file mode 100644
index 0000000..7882a8b
--- /dev/null
+++ b/google-breakpad/src/processor/testdata/test_app.cc
@@ -0,0 +1,69 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// This file is used to generate minidump2.dmp and minidump2.sym.
+// cl /Zi test_app.cc /Fetest_app.exe /I google_breakpad/src \
+//   google_breakpad/src/client/windows/releasestaticcrt/exception_handler.lib
+// Then run test_app to generate a dump, and dump_syms to create the .sym file.
+
+#include <stdio.h>
+
+#include "client/windows/handler/exception_handler.h"
+
+namespace {
+
+static bool callback(const wchar_t *dump_path, const wchar_t *id,
+                     void *context, EXCEPTION_POINTERS *exinfo,
+                     MDRawAssertionInfo *assertion,
+                     bool succeeded) {
+  if (succeeded) {
+    printf("dump guid is %ws\n", id);
+  } else {
+    printf("dump failed\n");
+  }
+  fflush(stdout);
+
+  return succeeded;
+}
+
+static void CrashFunction() {
+  int *i = reinterpret_cast<int*>(0x45);
+  *i = 5;  // crash!
+}
+
+}  // namespace
+
+int main(int argc, char **argv) {
+  google_breakpad::ExceptionHandler eh(
+      L".", NULL, callback, NULL,
+      google_breakpad::ExceptionHandler::HANDLER_ALL);
+  CrashFunction();
+  printf("did not crash?\n");
+  return 0;
+}
diff --git a/google-breakpad/src/processor/testdata/write_av_non_null.dmp b/google-breakpad/src/processor/testdata/write_av_non_null.dmp
new file mode 100755
index 0000000..1ec80ea
--- /dev/null
+++ b/google-breakpad/src/processor/testdata/write_av_non_null.dmp
Binary files differ
diff --git a/google-breakpad/src/processor/tokenize.cc b/google-breakpad/src/processor/tokenize.cc
new file mode 100644
index 0000000..f468120
--- /dev/null
+++ b/google-breakpad/src/processor/tokenize.cc
@@ -0,0 +1,79 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include <string.h>
+
+#include <string>
+#include <vector>
+
+#include "common/using_std_string.h"
+
+namespace google_breakpad {
+
+#ifdef _WIN32
+#define strtok_r strtok_s
+#endif
+
+using std::vector;
+
+bool Tokenize(char *line,
+	      const char *separators,
+	      int max_tokens,
+	      vector<char*> *tokens) {
+  tokens->clear();
+  tokens->reserve(max_tokens);
+
+  int remaining = max_tokens;
+
+  // Split tokens on the separator character.
+  // strip them out before exhausting max_tokens.
+  char *save_ptr;
+  char *token = strtok_r(line, separators, &save_ptr);
+  while (token && --remaining > 0) {
+    tokens->push_back(token);
+    if (remaining > 1)
+      token = strtok_r(NULL, separators, &save_ptr);
+  }
+
+  // If there's anything left, just add it as a single token.
+  if (remaining == 0 && (token = strtok_r(NULL, "\r\n", &save_ptr))) {
+    tokens->push_back(token);
+  }
+
+  return tokens->size() == static_cast<unsigned int>(max_tokens);
+}
+
+void StringToVector(const string &str, vector<char> &vec) {
+  vec.resize(str.length() + 1);
+  std::copy(str.begin(), str.end(),
+	    vec.begin());
+  vec[str.length()] = '\0';
+}
+
+} // namespace google_breakpad
diff --git a/google-breakpad/src/processor/tokenize.h b/google-breakpad/src/processor/tokenize.h
new file mode 100644
index 0000000..9ff571d
--- /dev/null
+++ b/google-breakpad/src/processor/tokenize.h
@@ -0,0 +1,63 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Implements a Tokenize function for splitting up strings.
+
+#ifndef GOOGLE_BREAKPAD_PROCESSOR_TOKENIZE_H_
+#define GOOGLE_BREAKPAD_PROCESSOR_TOKENIZE_H_
+
+#include <string>
+#include <vector>
+
+#include "common/using_std_string.h"
+
+namespace google_breakpad {
+
+// Splits line into at most max_tokens tokens, separated by any of the
+// characters in separators and placing them in the tokens vector.
+// line is a 0-terminated string that optionally ends with a newline
+// character or combination, which will be removed. 
+// If more tokens than max_tokens are present, the final token is placed
+// into the vector without splitting it up at all.  This modifies line as
+// a side effect.  Returns true if exactly max_tokens tokens are returned,
+// and false if fewer are returned.  This is not considered a failure of
+// Tokenize, but may be treated as a failure if the caller expects an
+// exact, as opposed to maximum, number of tokens.
+
+bool Tokenize(char *line,
+              const char *separators,
+              int max_tokens,
+              std::vector<char*> *tokens);
+// For convenience, since you need a char* to pass to Tokenize.
+// You can call StringToVector on a string, and use &vec[0].
+void StringToVector(const string &str, std::vector<char> &vec);
+
+}  // namespace google_breakpad
+
+#endif  // GOOGLE_BREAKPAD_PROCESSOR_TOKENIZE_H_
diff --git a/google-breakpad/src/processor/windows_frame_info.h b/google-breakpad/src/processor/windows_frame_info.h
new file mode 100644
index 0000000..c92c610
--- /dev/null
+++ b/google-breakpad/src/processor/windows_frame_info.h
@@ -0,0 +1,209 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// windows_frame_info.h: Holds debugging information about a stack frame.
+//
+// This structure is specific to Windows debugging information obtained
+// from pdb files using the DIA API.
+//
+// Author: Mark Mentovai
+
+
+#ifndef PROCESSOR_WINDOWS_FRAME_INFO_H__
+#define PROCESSOR_WINDOWS_FRAME_INFO_H__
+
+#include <string.h>
+#include <stdlib.h>
+
+#include <string>
+#include <vector>
+
+#include "common/using_std_string.h"
+#include "google_breakpad/common/breakpad_types.h"
+#include "processor/logging.h"
+#include "processor/tokenize.h"
+
+namespace google_breakpad {
+
+#ifdef _WIN32
+#define strtoull _strtoui64
+#endif
+
+struct WindowsFrameInfo {
+ public:
+  enum Validity {
+    VALID_NONE           = 0,
+    VALID_PARAMETER_SIZE = 1,
+    VALID_ALL            = -1
+  };
+
+  // The types for stack_info_.  This is equivalent to MS DIA's
+  // StackFrameTypeEnum.  Each identifies a different type of frame
+  // information, although all are represented in the symbol file in the
+  // same format.  These are used as indices to the stack_info_ array.
+  enum StackInfoTypes {
+    STACK_INFO_FPO = 0,
+    STACK_INFO_TRAP,  // not used here
+    STACK_INFO_TSS,   // not used here
+    STACK_INFO_STANDARD,
+    STACK_INFO_FRAME_DATA,
+    STACK_INFO_LAST,  // must be the last sequentially-numbered item
+    STACK_INFO_UNKNOWN = -1
+  };
+
+  WindowsFrameInfo() : type_(STACK_INFO_UNKNOWN),
+                     valid(VALID_NONE),
+                     prolog_size(0),
+                     epilog_size(0),
+                     parameter_size(0),
+                     saved_register_size(0),
+                     local_size(0),
+                     max_stack_size(0),
+                     allocates_base_pointer(0),
+                     program_string() {}
+
+  WindowsFrameInfo(StackInfoTypes type,
+                 uint32_t set_prolog_size,
+                 uint32_t set_epilog_size,
+                 uint32_t set_parameter_size,
+                 uint32_t set_saved_register_size,
+                 uint32_t set_local_size,
+                 uint32_t set_max_stack_size,
+                 int set_allocates_base_pointer,
+                 const string set_program_string)
+      : type_(type),
+        valid(VALID_ALL),
+        prolog_size(set_prolog_size),
+        epilog_size(set_epilog_size),
+        parameter_size(set_parameter_size),
+        saved_register_size(set_saved_register_size),
+        local_size(set_local_size),
+        max_stack_size(set_max_stack_size),
+        allocates_base_pointer(set_allocates_base_pointer),
+        program_string(set_program_string) {}
+
+  // Parse a textual serialization of a WindowsFrameInfo object from
+  // a string. Returns NULL if parsing fails, or a new object
+  // otherwise. type, rva and code_size are present in the STACK line,
+  // but not the StackFrameInfo structure, so return them as outparams.
+  static WindowsFrameInfo *ParseFromString(const string string,
+                                           int &type,
+                                           uint64_t &rva,
+                                           uint64_t &code_size) {
+    // The format of a STACK WIN record is documented at:
+    //
+    // http://code.google.com/p/google-breakpad/wiki/SymbolFiles
+
+    std::vector<char>  buffer;
+    StringToVector(string, buffer);
+    std::vector<char*> tokens;
+    if (!Tokenize(&buffer[0], " \r\n", 11, &tokens))
+      return NULL;
+
+    type = strtol(tokens[0], NULL, 16);
+    if (type < 0 || type > STACK_INFO_LAST - 1)
+      return NULL;
+
+    rva                           = strtoull(tokens[1],  NULL, 16);
+    code_size                     = strtoull(tokens[2],  NULL, 16);
+    uint32_t prolog_size          =  strtoul(tokens[3],  NULL, 16);
+    uint32_t epilog_size          =  strtoul(tokens[4],  NULL, 16);
+    uint32_t parameter_size       =  strtoul(tokens[5],  NULL, 16);
+    uint32_t saved_register_size  =  strtoul(tokens[6],  NULL, 16);
+    uint32_t local_size           =  strtoul(tokens[7],  NULL, 16);
+    uint32_t max_stack_size       =  strtoul(tokens[8],  NULL, 16);
+    int has_program_string        =  strtoul(tokens[9], NULL, 16);
+
+    const char *program_string = "";
+    int allocates_base_pointer = 0;
+    if (has_program_string) {
+      program_string = tokens[10];
+    } else {
+      allocates_base_pointer = strtoul(tokens[10], NULL, 16);
+    }
+
+    return new WindowsFrameInfo(static_cast<StackInfoTypes>(type),
+                                prolog_size,
+                                epilog_size,
+                                parameter_size,
+                                saved_register_size,
+                                local_size,
+                                max_stack_size,
+                                allocates_base_pointer,
+                                program_string);
+  }
+
+  // CopyFrom makes "this" WindowsFrameInfo object identical to "that".
+  void CopyFrom(const WindowsFrameInfo &that) {
+    type_ = that.type_;
+    valid = that.valid;
+    prolog_size = that.prolog_size;
+    epilog_size = that.epilog_size;
+    parameter_size = that.parameter_size;
+    saved_register_size = that.saved_register_size;
+    local_size = that.local_size;
+    max_stack_size = that.max_stack_size;
+    allocates_base_pointer = that.allocates_base_pointer;
+    program_string = that.program_string;
+  }
+
+  // Clears the WindowsFrameInfo object so that users will see it as though
+  // it contains no information.
+  void Clear() {
+    type_ = STACK_INFO_UNKNOWN;
+    valid = VALID_NONE;
+    program_string.erase();
+  }
+
+  StackInfoTypes type_;
+
+  // Identifies which fields in the structure are valid.  This is of
+  // type Validity, but it is defined as an int because it's not
+  // possible to OR values into an enumerated type.  Users must check
+  // this field before using any other.
+  int valid;
+
+  // These values come from IDiaFrameData.
+  uint32_t prolog_size;
+  uint32_t epilog_size;
+  uint32_t parameter_size;
+  uint32_t saved_register_size;
+  uint32_t local_size;
+  uint32_t max_stack_size;
+
+  // Only one of allocates_base_pointer or program_string will be valid.
+  // If program_string is empty, use allocates_base_pointer.
+  bool allocates_base_pointer;
+  string program_string;
+};
+
+}  // namespace google_breakpad
+
+
+#endif  // PROCESSOR_WINDOWS_FRAME_INFO_H__
diff --git a/google-breakpad/src/testing/CHANGES b/google-breakpad/src/testing/CHANGES
new file mode 100644
index 0000000..90f88a5
--- /dev/null
+++ b/google-breakpad/src/testing/CHANGES
@@ -0,0 +1,92 @@
+Changes for 1.6.0:
+
+* Compilation is much faster and uses much less memory, especially
+  when the constructor and destructor of a mock class are moved out of
+  the class body.
+* New matchers: Pointwise(), Each().
+* New actions: ReturnPointee() and ReturnRefOfCopy().
+* CMake support.
+* Project files for Visual Studio 2010.
+* AllOf() and AnyOf() can handle up-to 10 arguments now.
+* Google Mock doctor understands Clang error messages now.
+* SetArgPointee<> now accepts string literals.
+* gmock_gen.py handles storage specifier macros and template return
+  types now.
+* Compatibility fixes.
+* Bug fixes and implementation clean-ups.
+* Potentially incompatible changes: disables the harmful 'make install'
+  command in autotools.
+
+Potentially breaking changes:
+
+* The description string for MATCHER*() changes from Python-style
+  interpolation to an ordinary C++ string expression.
+* SetArgumentPointee is deprecated in favor of SetArgPointee.
+* Some non-essential project files for Visual Studio 2005 are removed.
+
+Changes for 1.5.0:
+
+ * New feature: Google Mock can be safely used in multi-threaded tests
+   on platforms having pthreads.
+ * New feature: function for printing a value of arbitrary type.
+ * New feature: function ExplainMatchResult() for easy definition of
+   composite matchers.
+ * The new matcher API lets user-defined matchers generate custom
+   explanations more directly and efficiently.
+ * Better failure messages all around.
+ * NotNull() and IsNull() now work with smart pointers.
+ * Field() and Property() now work when the matcher argument is a pointer
+   passed by reference.
+ * Regular expression matchers on all platforms.
+ * Added GCC 4.0 support for Google Mock Doctor.
+ * Added gmock_all_test.cc for compiling most Google Mock tests
+   in a single file.
+ * Significantly cleaned up compiler warnings.
+ * Bug fixes, better test coverage, and implementation clean-ups.
+
+ Potentially breaking changes:
+
+ * Custom matchers defined using MatcherInterface or MakePolymorphicMatcher()
+   need to be updated after upgrading to Google Mock 1.5.0; matchers defined
+   using MATCHER or MATCHER_P* aren't affected.
+ * Dropped support for 'make install'.
+
+Changes for 1.4.0 (we skipped 1.2.* and 1.3.* to match the version of
+Google Test):
+
+ * Works in more environments: Symbian and minGW, Visual C++ 7.1.
+ * Lighter weight: comes with our own implementation of TR1 tuple (no
+   more dependency on Boost!).
+ * New feature: --gmock_catch_leaked_mocks for detecting leaked mocks.
+ * New feature: ACTION_TEMPLATE for defining templatized actions.
+ * New feature: the .After() clause for specifying expectation order.
+ * New feature: the .With() clause for for specifying inter-argument
+   constraints.
+ * New feature: actions ReturnArg<k>(), ReturnNew<T>(...), and
+   DeleteArg<k>().
+ * New feature: matchers Key(), Pair(), Args<...>(), AllArgs(), IsNull(),
+   and Contains().
+ * New feature: utility class MockFunction<F>, useful for checkpoints, etc.
+ * New feature: functions Value(x, m) and SafeMatcherCast<T>(m).
+ * New feature: copying a mock object is rejected at compile time.
+ * New feature: a script for fusing all Google Mock and Google Test
+   source files for easy deployment.
+ * Improved the Google Mock doctor to diagnose more diseases.
+ * Improved the Google Mock generator script.
+ * Compatibility fixes for Mac OS X and gcc.
+ * Bug fixes and implementation clean-ups.
+
+Changes for 1.1.0:
+
+ * New feature: ability to use Google Mock with any testing framework.
+ * New feature: macros for easily defining new matchers
+ * New feature: macros for easily defining new actions.
+ * New feature: more container matchers.
+ * New feature: actions for accessing function arguments and throwing
+   exceptions.
+ * Improved the Google Mock doctor script for diagnosing compiler errors.
+ * Bug fixes and implementation clean-ups.
+
+Changes for 1.0.0:
+
+ * Initial Open Source release of Google Mock
diff --git a/google-breakpad/src/testing/CMakeLists.txt b/google-breakpad/src/testing/CMakeLists.txt
new file mode 100644
index 0000000..ded9ca9
--- /dev/null
+++ b/google-breakpad/src/testing/CMakeLists.txt
@@ -0,0 +1,170 @@
+########################################################################
+# CMake build script for Google Mock.
+#
+# To run the tests for Google Mock itself on Linux, use 'make test' or
+# ctest.  You can select which tests to run using 'ctest -R regex'.
+# For more options, run 'ctest --help'.
+
+# BUILD_SHARED_LIBS is a standard CMake variable, but we declare it here to
+# make it prominent in the GUI.
+option(BUILD_SHARED_LIBS "Build shared libraries (DLLs)." OFF)
+
+option(gmock_build_tests "Build all of Google Mock's own tests." OFF)
+
+# A directory to find Google Test sources.
+if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/gtest/CMakeLists.txt")
+  set(gtest_dir gtest)
+else()
+  set(gtest_dir ../gtest)
+endif()
+
+# Defines pre_project_set_up_hermetic_build() and set_up_hermetic_build().
+include("${gtest_dir}/cmake/hermetic_build.cmake" OPTIONAL)
+
+if (COMMAND pre_project_set_up_hermetic_build)
+  # Google Test also calls hermetic setup functions from add_subdirectory,
+  # although its changes will not affect things at the current scope.
+  pre_project_set_up_hermetic_build()
+endif()
+
+########################################################################
+#
+# Project-wide settings
+
+# Name of the project.
+#
+# CMake files in this project can refer to the root source directory
+# as ${gmock_SOURCE_DIR} and to the root binary directory as
+# ${gmock_BINARY_DIR}.
+# Language "C" is required for find_package(Threads).
+project(gmock CXX C)
+cmake_minimum_required(VERSION 2.6.2)
+
+if (COMMAND set_up_hermetic_build)
+  set_up_hermetic_build()
+endif()
+
+# Instructs CMake to process Google Test's CMakeLists.txt and add its
+# targets to the current scope.  We are placing Google Test's binary
+# directory in a subdirectory of our own as VC compilation may break
+# if they are the same (the default).
+add_subdirectory("${gtest_dir}" "${gmock_BINARY_DIR}/gtest")
+
+# Although Google Test's CMakeLists.txt calls this function, the
+# changes there don't affect the current scope.  Therefore we have to
+# call it again here.
+config_compiler_and_linker()  # from ${gtest_dir}/cmake/internal_utils.cmake
+
+# Adds Google Mock's and Google Test's header directories to the search path.
+include_directories("${gmock_SOURCE_DIR}/include"
+                    "${gmock_SOURCE_DIR}"
+                    "${gtest_SOURCE_DIR}/include"
+                    # This directory is needed to build directly from Google
+                    # Test sources.
+                    "${gtest_SOURCE_DIR}")
+
+########################################################################
+#
+# Defines the gmock & gmock_main libraries.  User tests should link
+# with one of them.
+
+# Google Mock libraries.  We build them using more strict warnings than what
+# are used for other targets, to ensure that Google Mock can be compiled by
+# a user aggressive about warnings.
+cxx_library(gmock
+            "${cxx_strict}"
+            "${gtest_dir}/src/gtest-all.cc"
+            src/gmock-all.cc)
+
+cxx_library(gmock_main
+            "${cxx_strict}"
+            "${gtest_dir}/src/gtest-all.cc"
+            src/gmock-all.cc
+            src/gmock_main.cc)
+
+########################################################################
+#
+# Google Mock's own tests.
+#
+# You can skip this section if you aren't interested in testing
+# Google Mock itself.
+#
+# The tests are not built by default.  To build them, set the
+# gmock_build_tests option to ON.  You can do it by running ccmake
+# or specifying the -Dgmock_build_tests=ON flag when running cmake.
+
+if (gmock_build_tests)
+  # This must be set in the root directory for the tests to be run by
+  # 'make test' or ctest.
+  enable_testing()
+
+  ############################################################
+  # C++ tests built with standard compiler flags.
+
+  cxx_test(gmock-actions_test gmock_main)
+  cxx_test(gmock-cardinalities_test gmock_main)
+  cxx_test(gmock-generated-actions_test gmock_main)
+  cxx_test(gmock-generated-function-mockers_test gmock_main)
+  cxx_test(gmock-generated-internal-utils_test gmock_main)
+  cxx_test(gmock-generated-matchers_test gmock_main)
+  cxx_test(gmock-internal-utils_test gmock_main)
+  cxx_test(gmock-matchers_test gmock_main)
+  cxx_test(gmock-more-actions_test gmock_main)
+  cxx_test(gmock-nice-strict_test gmock_main)
+  cxx_test(gmock-port_test gmock_main)
+  cxx_test(gmock-spec-builders_test gmock_main)
+  cxx_test(gmock_link_test gmock_main test/gmock_link2_test.cc)
+  cxx_test(gmock_test gmock_main)
+
+  if (CMAKE_USE_PTHREADS_INIT)
+    cxx_test(gmock_stress_test gmock)
+  endif()
+
+  # gmock_all_test is commented to save time building and running tests.
+  # Uncomment if necessary.
+  # cxx_test(gmock_all_test gmock_main)
+
+  ############################################################
+  # C++ tests built with non-standard compiler flags.
+
+  cxx_library(gmock_main_no_exception "${cxx_no_exception}"
+    "${gtest_dir}/src/gtest-all.cc" src/gmock-all.cc src/gmock_main.cc)
+
+  cxx_library(gmock_main_no_rtti "${cxx_no_rtti}"
+    "${gtest_dir}/src/gtest-all.cc" src/gmock-all.cc src/gmock_main.cc)
+
+  cxx_library(gmock_main_use_own_tuple "${cxx_use_own_tuple}"
+    "${gtest_dir}/src/gtest-all.cc" src/gmock-all.cc src/gmock_main.cc)
+
+  cxx_test_with_flags(gmock-more-actions_no_exception_test "${cxx_no_exception}"
+    gmock_main_no_exception test/gmock-more-actions_test.cc)
+
+  cxx_test_with_flags(gmock_no_rtti_test "${cxx_no_rtti}"
+    gmock_main_no_rtti test/gmock-spec-builders_test.cc)
+
+  cxx_test_with_flags(gmock_use_own_tuple_test "${cxx_use_own_tuple}"
+    gmock_main_use_own_tuple test/gmock-spec-builders_test.cc)
+
+  cxx_shared_library(shared_gmock_main "${cxx_default}"
+    "${gtest_dir}/src/gtest-all.cc" src/gmock-all.cc src/gmock_main.cc)
+
+  # Tests that a binary can be built with Google Mock as a shared library.  On
+  # some system configurations, it may not possible to run the binary without
+  # knowing more details about the system configurations. We do not try to run
+  # this binary. To get a more robust shared library coverage, configure with
+  # -DBUILD_SHARED_LIBS=ON.
+  cxx_executable_with_flags(shared_gmock_test_ "${cxx_default}"
+    shared_gmock_main test/gmock-spec-builders_test.cc)
+  set_target_properties(shared_gmock_test_
+    PROPERTIES
+    COMPILE_DEFINITIONS "GTEST_LINKED_AS_SHARED_LIBRARY=1")
+
+  ############################################################
+  # Python tests.
+
+  cxx_executable(gmock_leak_test_ test gmock_main)
+  py_test(gmock_leak_test)
+
+  cxx_executable(gmock_output_test_ test gmock)
+  py_test(gmock_output_test)
+endif()
diff --git a/google-breakpad/src/testing/CONTRIBUTORS b/google-breakpad/src/testing/CONTRIBUTORS
new file mode 100644
index 0000000..6e9ae36
--- /dev/null
+++ b/google-breakpad/src/testing/CONTRIBUTORS
@@ -0,0 +1,40 @@
+# This file contains a list of people who've made non-trivial
+# contribution to the Google C++ Mocking Framework project.  People
+# who commit code to the project are encouraged to add their names
+# here.  Please keep the list sorted by first names.
+
+Benoit Sigoure <tsuna@google.com>
+Bogdan Piloca <boo@google.com>
+Chandler Carruth <chandlerc@google.com>
+Dave MacLachlan <dmaclach@gmail.com>
+David Anderson <danderson@google.com>
+Dean Sturtevant
+Gene Volovich <gv@cite.com>
+Hal Burch <gmock@hburch.com>
+Jeffrey Yasskin <jyasskin@google.com>
+Jim Keller <jimkeller@google.com>
+Joe Walnes <joe@truemesh.com>
+Jon Wray <jwray@google.com>
+Keir Mierle <mierle@gmail.com>
+Keith Ray <keith.ray@gmail.com>
+Kostya Serebryany <kcc@google.com>
+Lev Makhlis
+Manuel Klimek <klimek@google.com>
+Mario Tanev <radix@google.com>
+Mark Paskin
+Markus Heule <markus.heule@gmail.com>
+Matthew Simmons <simmonmt@acm.org>
+Mike Bland <mbland@google.com>
+Neal Norwitz <nnorwitz@gmail.com>
+Nermin Ozkiranartli <nermin@google.com>
+Owen Carlsen <ocarlsen@google.com>
+Paneendra Ba <paneendra@google.com>
+Paul Menage <menage@google.com>
+Piotr Kaminski <piotrk@google.com>
+Russ Rufer <russ@pentad.com>
+Sverre Sundsdal <sundsdal@gmail.com>
+Takeshi Yoshino <tyoshino@google.com>
+Vadim Berman <vadimb@google.com>
+Vlad Losev <vladl@google.com>
+Wolfgang Klier <wklier@google.com>
+Zhanyong Wan <wan@google.com>
diff --git a/google-breakpad/src/testing/LICENSE b/google-breakpad/src/testing/LICENSE
new file mode 100644
index 0000000..1941a11
--- /dev/null
+++ b/google-breakpad/src/testing/LICENSE
@@ -0,0 +1,28 @@
+Copyright 2008, Google Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+    * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+    * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/google-breakpad/src/testing/Makefile.am b/google-breakpad/src/testing/Makefile.am
new file mode 100644
index 0000000..0afce2f
--- /dev/null
+++ b/google-breakpad/src/testing/Makefile.am
@@ -0,0 +1,213 @@
+# Automake file
+
+# Nonstandard package files for distribution.
+EXTRA_DIST =
+
+# We may need to build our internally packaged gtest. If so, it will be
+# included in the 'subdirs' variable.
+SUBDIRS = $(subdirs)
+
+# This is generated by the configure script, so clean it for distribution.
+DISTCLEANFILES = scripts/gmock-config
+
+# We define the global AM_CPPFLAGS as everything we compile includes from these
+# directories.
+AM_CPPFLAGS = $(GTEST_CPPFLAGS) -I$(srcdir)/include
+
+# Modifies compiler and linker flags for pthreads compatibility.
+if HAVE_PTHREADS
+  AM_CXXFLAGS = @PTHREAD_CFLAGS@ -DGTEST_HAS_PTHREAD=1
+  AM_LIBS = @PTHREAD_LIBS@
+endif
+
+# Build rules for libraries.
+lib_LTLIBRARIES = lib/libgmock.la lib/libgmock_main.la
+
+lib_libgmock_la_SOURCES = src/gmock-all.cc
+
+pkginclude_HEADERS = \
+  include/gmock/gmock-actions.h \
+  include/gmock/gmock-cardinalities.h \
+  include/gmock/gmock-generated-actions.h \
+  include/gmock/gmock-generated-function-mockers.h \
+  include/gmock/gmock-generated-matchers.h \
+  include/gmock/gmock-generated-nice-strict.h \
+  include/gmock/gmock-matchers.h \
+  include/gmock/gmock-more-actions.h \
+  include/gmock/gmock-spec-builders.h \
+  include/gmock/gmock.h
+
+pkginclude_internaldir = $(pkgincludedir)/internal
+pkginclude_internal_HEADERS = \
+  include/gmock/internal/gmock-generated-internal-utils.h \
+  include/gmock/internal/gmock-internal-utils.h \
+  include/gmock/internal/gmock-port.h
+
+lib_libgmock_main_la_SOURCES = src/gmock_main.cc
+lib_libgmock_main_la_LIBADD = lib/libgmock.la
+
+# Build rules for tests. Automake's naming for some of these variables isn't
+# terribly obvious, so this is a brief reference:
+#
+# TESTS -- Programs run automatically by "make check"
+# check_PROGRAMS -- Programs built by "make check" but not necessarily run
+
+TESTS=
+check_PROGRAMS=
+AM_LDFLAGS = $(GTEST_LDFLAGS)
+
+# This exercises all major components of Google Mock.  It also
+# verifies that libgmock works.
+TESTS += test/gmock-spec-builders_test
+check_PROGRAMS += test/gmock-spec-builders_test
+test_gmock_spec_builders_test_SOURCES = test/gmock-spec-builders_test.cc
+test_gmock_spec_builders_test_LDADD = $(GTEST_LIBS) lib/libgmock.la
+
+# This tests using Google Mock in multiple translation units.  It also
+# verifies that libgmock_main and libgmock work.
+TESTS += test/gmock_link_test
+check_PROGRAMS += test/gmock_link_test
+test_gmock_link_test_SOURCES = \
+  test/gmock_link2_test.cc \
+  test/gmock_link_test.cc \
+  test/gmock_link_test.h
+test_gmock_link_test_LDADD = $(GTEST_LIBS) lib/libgmock_main.la  lib/libgmock.la
+
+if HAVE_PYTHON
+  # Tests that fused gmock files compile and work.
+  TESTS += test/gmock_fused_test
+  check_PROGRAMS += test/gmock_fused_test
+  test_gmock_fused_test_SOURCES = \
+    fused-src/gmock-gtest-all.cc \
+    fused-src/gmock/gmock.h \
+    fused-src/gmock_main.cc \
+    fused-src/gtest/gtest.h \
+    test/gmock_test.cc
+  test_gmock_fused_test_CPPFLAGS = -I"$(srcdir)/fused-src"
+endif
+
+# Google Mock source files that we don't compile directly.
+GMOCK_SOURCE_INGLUDES = \
+  src/gmock-cardinalities.cc \
+  src/gmock-internal-utils.cc \
+  src/gmock-matchers.cc \
+  src/gmock-spec-builders.cc \
+  src/gmock.cc
+
+EXTRA_DIST += $(GMOCK_SOURCE_INGLUDES)
+
+# C++ tests that we don't compile using autotools.
+EXTRA_DIST += \
+  test/gmock-actions_test.cc \
+  test/gmock-cardinalities_test.cc \
+  test/gmock-generated-actions_test.cc \
+  test/gmock-generated-function-mockers_test.cc \
+  test/gmock-generated-internal-utils_test.cc \
+  test/gmock-generated-matchers_test.cc \
+  test/gmock-internal-utils_test.cc \
+  test/gmock-matchers_test.cc \
+  test/gmock-more-actions_test.cc \
+  test/gmock-nice-strict_test.cc \
+  test/gmock-port_test.cc \
+  test/gmock_all_test.cc
+
+# Python tests, which we don't run using autotools.
+EXTRA_DIST += \
+  test/gmock_leak_test.py \
+  test/gmock_leak_test_.cc \
+  test/gmock_output_test.py \
+  test/gmock_output_test_.cc \
+  test/gmock_output_test_golden.txt \
+  test/gmock_test_utils.py
+
+# Nonstandard package files for distribution.
+EXTRA_DIST += \
+  CHANGES \
+  CONTRIBUTORS \
+  make/Makefile
+
+# Pump scripts for generating Google Mock headers.
+# TODO(chandlerc@google.com): automate the generation of *.h from *.h.pump.
+EXTRA_DIST += \
+  include/gmock/gmock-generated-actions.h.pump \
+  include/gmock/gmock-generated-function-mockers.h.pump \
+  include/gmock/gmock-generated-matchers.h.pump \
+  include/gmock/gmock-generated-nice-strict.h.pump \
+  include/gmock/internal/gmock-generated-internal-utils.h.pump
+
+# Script for fusing Google Mock and Google Test source files.
+EXTRA_DIST += scripts/fuse_gmock_files.py
+
+# The Google Mock Generator tool from the cppclean project.
+EXTRA_DIST += \
+  scripts/generator/LICENSE \
+  scripts/generator/README \
+  scripts/generator/README.cppclean \
+  scripts/generator/cpp/__init__.py \
+  scripts/generator/cpp/ast.py \
+  scripts/generator/cpp/gmock_class.py \
+  scripts/generator/cpp/keywords.py \
+  scripts/generator/cpp/tokenize.py \
+  scripts/generator/cpp/utils.py \
+  scripts/generator/gmock_gen.py
+
+# CMake scripts.
+EXTRA_DIST += \
+  CMakeLists.txt
+
+# Microsoft Visual Studio 2005 projects.
+EXTRA_DIST += \
+  msvc/2005/gmock.sln \
+  msvc/2005/gmock.vcproj \
+  msvc/2005/gmock_config.vsprops \
+  msvc/2005/gmock_main.vcproj \
+  msvc/2005/gmock_test.vcproj
+
+# Microsoft Visual Studio 2010 projects.
+EXTRA_DIST += \
+  msvc/2010/gmock.sln \
+  msvc/2010/gmock.vcxproj \
+  msvc/2010/gmock_config.props \
+  msvc/2010/gmock_main.vcxproj \
+  msvc/2010/gmock_test.vcxproj
+
+if HAVE_PYTHON
+# gmock_test.cc does not really depend on files generated by the
+# fused-gmock-internal rule.  However, gmock_test.o does, and it is
+# important to include test/gmock_test.cc as part of this rule in order to
+# prevent compiling gmock_test.o until all dependent files have been
+# generated.
+$(test_gmock_fused_test_SOURCES): fused-gmock-internal
+
+# TODO(vladl@google.com): Find a way to add Google Tests's sources here.
+fused-gmock-internal: $(pkginclude_HEADERS) $(pkginclude_internal_HEADERS) \
+                      $(lib_libgmock_la_SOURCES) $(GMOCK_SOURCE_INGLUDES) \
+                      $(lib_libgmock_main_la_SOURCES) \
+                      scripts/fuse_gmock_files.py
+	mkdir -p "$(srcdir)/fused-src"
+	chmod -R u+w "$(srcdir)/fused-src"
+	rm -f "$(srcdir)/fused-src/gtest/gtest.h"
+	rm -f "$(srcdir)/fused-src/gmock/gmock.h"
+	rm -f "$(srcdir)/fused-src/gmock-gtest-all.cc"
+	"$(srcdir)/scripts/fuse_gmock_files.py" "$(srcdir)/fused-src"
+	cp -f "$(srcdir)/src/gmock_main.cc" "$(srcdir)/fused-src"
+
+maintainer-clean-local:
+	rm -rf "$(srcdir)/fused-src"
+endif
+
+# Death tests may produce core dumps in the build directory. In case
+# this happens, clean them to keep distcleancheck happy.
+CLEANFILES = core
+
+# Disables 'make install' as installing a compiled version of Google
+# Mock can lead to undefined behavior due to violation of the
+# One-Definition Rule.
+
+install-exec-local:
+	echo "'make install' is dangerous and not supported. Instead, see README for how to integrate Google Mock into your build system."
+	false
+
+install-data-local:
+	echo "'make install' is dangerous and not supported. Instead, see README for how to integrate Google Mock into your build system."
+	false
diff --git a/google-breakpad/src/testing/README b/google-breakpad/src/testing/README
new file mode 100644
index 0000000..e414f3a
--- /dev/null
+++ b/google-breakpad/src/testing/README
@@ -0,0 +1,361 @@
+Google C++ Mocking Framework
+============================
+
+http://code.google.com/p/googlemock/
+
+Overview
+--------
+
+Google's framework for writing and using C++ mock classes on a variety
+of platforms (Linux, Mac OS X, Windows, Windows CE, Symbian, etc).
+Inspired by jMock, EasyMock, and Hamcrest, and designed with C++'s
+specifics in mind, it can help you derive better designs of your
+system and write better tests.
+
+Google Mock:
+
+- provides a declarative syntax for defining mocks,
+- can easily define partial (hybrid) mocks, which are a cross of real
+  and mock objects,
+- handles functions of arbitrary types and overloaded functions,
+- comes with a rich set of matchers for validating function arguments,
+- uses an intuitive syntax for controlling the behavior of a mock,
+- does automatic verification of expectations (no record-and-replay
+  needed),
+- allows arbitrary (partial) ordering constraints on
+  function calls to be expressed,
+- lets a user extend it by defining new matchers and actions.
+- does not use exceptions, and
+- is easy to learn and use.
+
+Please see the project page above for more information as well as the
+mailing list for questions, discussions, and development.  There is
+also an IRC channel on OFTC (irc.oftc.net) #gtest available.  Please
+join us!
+
+Please note that code under scripts/generator/ is from the cppclean
+project (http://code.google.com/p/cppclean/) and under the Apache
+License, which is different from Google Mock's license.
+
+Requirements for End Users
+--------------------------
+
+Google Mock is implemented on top of the Google Test C++ testing
+framework (http://code.google.com/p/googletest/), and includes the
+latter as part of the SVN repositary and distribution package.  You
+must use the bundled version of Google Test when using Google Mock, or
+you may get compiler/linker errors.
+
+You can also easily configure Google Mock to work with another testing
+framework of your choice; although it will still need Google Test as
+an internal dependency.  Please read
+http://code.google.com/p/googlemock/wiki/ForDummies#Using_Google_Mock_with_Any_Testing_Framework
+for how to do it.
+
+Google Mock depends on advanced C++ features and thus requires a more
+modern compiler.  The following are needed to use Google Mock:
+
+### Linux Requirements ###
+
+These are the base requirements to build and use Google Mock from a source
+package (as described below):
+
+  * GNU-compatible Make or "gmake"
+  * POSIX-standard shell
+  * POSIX(-2) Regular Expressions (regex.h)
+  * C++98-standard-compliant compiler (e.g. GCC 3.4 or newer)
+
+### Windows Requirements ###
+
+  * Microsoft Visual C++ 8.0 SP1 or newer
+
+### Mac OS X Requirements ###
+
+  * Mac OS X 10.4 Tiger or newer
+  * Developer Tools Installed
+
+Requirements for Contributors
+-----------------------------
+
+We welcome patches.  If you plan to contribute a patch, you need to
+build Google Mock and its own tests from an SVN checkout (described
+below), which has further requirements:
+
+  * Automake version 1.9 or newer
+  * Autoconf version 2.59 or newer
+  * Libtool / Libtoolize
+  * Python version 2.3 or newer (for running some of the tests and
+    re-generating certain source files from templates)
+
+Getting the Source
+------------------
+
+There are two primary ways of getting Google Mock's source code: you
+can download a stable source release in your preferred archive format,
+or directly check out the source from our Subversion (SVN) repositary.
+The SVN checkout requires a few extra steps and some extra software
+packages on your system, but lets you track development and make
+patches much more easily, so we highly encourage it.
+
+### Source Package ###
+
+Google Mock is released in versioned source packages which can be
+downloaded from the download page [1].  Several different archive
+formats are provided, but the only difference is the tools needed to
+extract their contents, and the size of the resulting file.  Download
+whichever you are most comfortable with.
+
+  [1] http://code.google.com/p/googlemock/downloads/list
+
+Once downloaded expand the archive using whichever tools you prefer
+for that type.  This will always result in a new directory with the
+name "gmock-X.Y.Z" which contains all of the source code.  Here are
+some examples on Linux:
+
+  tar -xvzf gmock-X.Y.Z.tar.gz
+  tar -xvjf gmock-X.Y.Z.tar.bz2
+  unzip gmock-X.Y.Z.zip
+
+### SVN Checkout ###
+
+To check out the main branch (also known as the "trunk") of Google
+Mock, run the following Subversion command:
+
+  svn checkout http://googlemock.googlecode.com/svn/trunk/ gmock-svn
+
+If you are using a *nix system and plan to use the GNU Autotools build
+system to build Google Mock (described below), you'll need to
+configure it now.  Otherwise you are done with getting the source
+files.
+
+To prepare the Autotools build system, enter the target directory of
+the checkout command you used ('gmock-svn') and proceed with the
+following command:
+
+  autoreconf -fvi
+
+Once you have completed this step, you are ready to build the library.
+Note that you should only need to complete this step once.  The
+subsequent 'make' invocations will automatically re-generate the bits
+of the build system that need to be changed.
+
+If your system uses older versions of the autotools, the above command
+will fail.  You may need to explicitly specify a version to use.  For
+instance, if you have both GNU Automake 1.4 and 1.9 installed and
+'automake' would invoke the 1.4, use instead:
+
+  AUTOMAKE=automake-1.9 ACLOCAL=aclocal-1.9 autoreconf -fvi
+
+Make sure you're using the same version of automake and aclocal.
+
+Setting up the Build
+--------------------
+
+To build Google Mock and your tests that use it, you need to tell your
+build system where to find its headers and source files.  The exact
+way to do it depends on which build system you use, and is usually
+straightforward.
+
+### Generic Build Instructions ###
+
+This section shows how you can integrate Google Mock into your
+existing build system.
+
+Suppose you put Google Mock in directory ${GMOCK_DIR} and Google Test
+in ${GTEST_DIR} (the latter is ${GMOCK_DIR}/gtest by default).  To
+build Google Mock, create a library build target (or a project as
+called by Visual Studio and Xcode) to compile
+
+  ${GTEST_DIR}/src/gtest-all.cc and ${GMOCK_DIR}/src/gmock-all.cc
+
+with
+
+  ${GTEST_DIR}/include, ${GTEST_DIR}, ${GMOCK_DIR}/include, and ${GMOCK_DIR}
+
+in the header search path.  Assuming a Linux-like system and gcc,
+something like the following will do:
+
+  g++ -I${GTEST_DIR}/include -I${GTEST_DIR} -I${GMOCK_DIR}/include \
+      -I${GMOCK_DIR} -c ${GTEST_DIR}/src/gtest-all.cc
+  g++ -I${GTEST_DIR}/include -I${GTEST_DIR} -I${GMOCK_DIR}/include \
+      -I${GMOCK_DIR} -c ${GMOCK_DIR}/src/gmock-all.cc
+  ar -rv libgmock.a gtest-all.o gmock-all.o
+
+Next, you should compile your test source file with
+${GTEST_DIR}/include and ${GMOCK_DIR}/include in the header search
+path, and link it with gmock and any other necessary libraries:
+
+  g++ -I${GTEST_DIR}/include -I${GMOCK_DIR}/include \
+      path/to/your_test.cc libgmock.a -o your_test
+
+As an example, the make/ directory contains a Makefile that you can
+use to build Google Mock on systems where GNU make is available
+(e.g. Linux, Mac OS X, and Cygwin).  It doesn't try to build Google
+Mock's own tests.  Instead, it just builds the Google Mock library and
+a sample test.  You can use it as a starting point for your own build
+script.
+
+If the default settings are correct for your environment, the
+following commands should succeed:
+
+  cd ${GMOCK_DIR}/make
+  make
+  ./gmock_test
+
+If you see errors, try to tweak the contents of make/Makefile to make
+them go away.  There are instructions in make/Makefile on how to do
+it.
+
+### Windows ###
+
+The msvc/2005 directory contains VC++ 2005 projects and the msvc/2010
+directory contains VC++ 2010 projects for building Google Mock and
+selected tests.
+
+Change to the appropriate directory and run "msbuild gmock.sln" to
+build the library and tests (or open the gmock.sln in the MSVC IDE).
+If you want to create your own project to use with Google Mock, you'll
+have to configure it to use the gmock_config propety sheet.  For that:
+
+ * Open the Property Manager window (View | Other Windows | Property Manager)
+ * Right-click on your project and select "Add Existing Property Sheet..."
+ * Navigate to gmock_config.vsprops or gmock_config.props and select it.
+ * In Project Properties | Configuration Properties | General | Additional
+   Include Directories, type <path to Google Mock>/include.
+
+Tweaking Google Mock
+--------------------
+
+Google Mock can be used in diverse environments.  The default
+configuration may not work (or may not work well) out of the box in
+some environments.  However, you can easily tweak Google Mock by
+defining control macros on the compiler command line.  Generally,
+these macros are named like GTEST_XYZ and you define them to either 1
+or 0 to enable or disable a certain feature.
+
+We list the most frequently used macros below.  For a complete list,
+see file ${GTEST_DIR}/include/gtest/internal/gtest-port.h.
+
+### Choosing a TR1 Tuple Library ###
+
+Google Mock uses the C++ Technical Report 1 (TR1) tuple library
+heavily.  Unfortunately TR1 tuple is not yet widely available with all
+compilers.  The good news is that Google Test 1.4.0+ implements a
+subset of TR1 tuple that's enough for Google Mock's need.  Google Mock
+will automatically use that implementation when the compiler doesn't
+provide TR1 tuple.
+
+Usually you don't need to care about which tuple library Google Test
+and Google Mock use.  However, if your project already uses TR1 tuple,
+you need to tell Google Test and Google Mock to use the same TR1 tuple
+library the rest of your project uses, or the two tuple
+implementations will clash.  To do that, add
+
+  -DGTEST_USE_OWN_TR1_TUPLE=0
+
+to the compiler flags while compiling Google Test, Google Mock, and
+your tests.  If you want to force Google Test and Google Mock to use
+their own tuple library, just add
+
+  -DGTEST_USE_OWN_TR1_TUPLE=1
+
+to the compiler flags instead.
+
+If you want to use Boost's TR1 tuple library with Google Mock, please
+refer to the Boost website (http://www.boost.org/) for how to obtain
+it and set it up.
+
+### As a Shared Library (DLL) ###
+
+Google Mock is compact, so most users can build and link it as a static
+library for the simplicity.  Google Mock can be used as a DLL, but the
+same DLL must contain Google Test as well.  See Google Test's README
+file for instructions on how to set up necessary compiler settings.
+
+### Tweaking Google Mock ###
+
+Most of Google Test's control macros apply to Google Mock as well.
+Please see file ${GTEST_DIR}/README for how to tweak them.
+
+Upgrading from an Earlier Version
+---------------------------------
+
+We strive to keep Google Mock releases backward compatible.
+Sometimes, though, we have to make some breaking changes for the
+users' long-term benefits.  This section describes what you'll need to
+do if you are upgrading from an earlier version of Google Mock.
+
+### Upgrading from 1.1.0 or Earlier ###
+
+You may need to explicitly enable or disable Google Test's own TR1
+tuple library.  See the instructions in section "Choosing a TR1 Tuple
+Library".
+
+### Upgrading from 1.4.0 or Earlier ###
+
+On platforms where the pthread library is available, Google Test and
+Google Mock use it in order to be thread-safe.  For this to work, you
+may need to tweak your compiler and/or linker flags.  Please see the
+"Multi-threaded Tests" section in file ${GTEST_DIR}/README for what
+you may need to do.
+
+If you have custom matchers defined using MatcherInterface or
+MakePolymorphicMatcher(), you'll need to update their definitions to
+use the new matcher API [2].  Matchers defined using MATCHER() or
+MATCHER_P*() aren't affected.
+
+  [2] http://code.google.com/p/googlemock/wiki/CookBook#Writing_New_Monomorphic_Matchers,
+      http://code.google.com/p/googlemock/wiki/CookBook#Writing_New_Polymorphic_Matchers
+
+Developing Google Mock
+----------------------
+
+This section discusses how to make your own changes to Google Mock.
+
+### Testing Google Mock Itself ###
+
+To make sure your changes work as intended and don't break existing
+functionality, you'll want to compile and run Google Test's own tests.
+For that you'll need Autotools.  First, make sure you have followed
+the instructions in section "SVN Checkout" to configure Google Mock.
+Then, create a build output directory and enter it.  Next,
+
+  ${GMOCK_DIR}/configure  # Standard GNU configure script, --help for more info
+
+Once you have successfully configured Google Mock, the build steps are
+standard for GNU-style OSS packages.
+
+  make        # Standard makefile following GNU conventions
+  make check  # Builds and runs all tests - all should pass.
+
+Note that when building your project against Google Mock, you are building
+against Google Test as well.  There is no need to configure Google Test
+separately.
+
+### Regenerating Source Files ###
+
+Some of Google Mock's source files are generated from templates (not
+in the C++ sense) using a script.  A template file is named FOO.pump,
+where FOO is the name of the file it will generate.  For example, the
+file include/gmock/gmock-generated-actions.h.pump is used to generate
+gmock-generated-actions.h in the same directory.
+
+Normally you don't need to worry about regenerating the source files,
+unless you need to modify them.  In that case, you should modify the
+corresponding .pump files instead and run the 'pump' script (for Pump
+is Useful for Meta Programming) to regenerate them.  You can find
+pump.py in the ${GTEST_DIR}/scripts/ directory.  Read the Pump manual
+[3] for how to use it.
+
+  [3] http://code.google.com/p/googletest/wiki/PumpManual.
+
+### Contributing a Patch ###
+
+We welcome patches.  Please read the Google Mock developer's guide [4]
+for how you can contribute.  In particular, make sure you have signed
+the Contributor License Agreement, or we won't be able to accept the
+patch.
+
+  [4] http://code.google.com/p/googlemock/wiki/DevGuide
+
+Happy testing!
diff --git a/google-breakpad/src/testing/build-aux/.keep b/google-breakpad/src/testing/build-aux/.keep
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/google-breakpad/src/testing/build-aux/.keep
diff --git a/google-breakpad/src/testing/configure.ac b/google-breakpad/src/testing/configure.ac
new file mode 100644
index 0000000..05b90c4
--- /dev/null
+++ b/google-breakpad/src/testing/configure.ac
@@ -0,0 +1,146 @@
+m4_include(gtest/m4/acx_pthread.m4)
+
+AC_INIT([Google C++ Mocking Framework],
+        [1.6.0],
+        [googlemock@googlegroups.com],
+        [gmock])
+
+# Provide various options to initialize the Autoconf and configure processes.
+AC_PREREQ([2.59])
+AC_CONFIG_SRCDIR([./LICENSE])
+AC_CONFIG_AUX_DIR([build-aux])
+AC_CONFIG_HEADERS([build-aux/config.h])
+AC_CONFIG_FILES([Makefile])
+AC_CONFIG_FILES([scripts/gmock-config], [chmod +x scripts/gmock-config])
+
+# Initialize Automake with various options. We require at least v1.9, prevent
+# pedantic complaints about package files, and enable various distribution
+# targets.
+AM_INIT_AUTOMAKE([1.9 dist-bzip2 dist-zip foreign subdir-objects])
+
+# Check for programs used in building Google Test.
+AC_PROG_CC
+AC_PROG_CXX
+AC_LANG([C++])
+AC_PROG_LIBTOOL
+
+# TODO(chandlerc@google.com): Currently we aren't running the Python tests
+# against the interpreter detected by AM_PATH_PYTHON, and so we condition
+# HAVE_PYTHON by requiring "python" to be in the PATH, and that interpreter's
+# version to be >= 2.3. This will allow the scripts to use a "/usr/bin/env"
+# hashbang.
+PYTHON=  # We *do not* allow the user to specify a python interpreter
+AC_PATH_PROG([PYTHON],[python],[:])
+AS_IF([test "$PYTHON" != ":"],
+      [AM_PYTHON_CHECK_VERSION([$PYTHON],[2.3],[:],[PYTHON=":"])])
+AM_CONDITIONAL([HAVE_PYTHON],[test "$PYTHON" != ":"])
+
+# TODO(chandlerc@google.com) Check for the necessary system headers.
+
+# Configure pthreads.
+AC_ARG_WITH([pthreads],
+            [AS_HELP_STRING([--with-pthreads],
+               [use pthreads (default is yes)])],
+            [with_pthreads=$withval],
+            [with_pthreads=check])
+
+have_pthreads=no
+AS_IF([test "x$with_pthreads" != "xno"],
+      [ACX_PTHREAD(
+        [],
+        [AS_IF([test "x$with_pthreads" != "xcheck"],
+               [AC_MSG_FAILURE(
+                 [--with-pthreads was specified, but unable to be used])])])
+       have_pthreads="$acx_pthread_ok"])
+AM_CONDITIONAL([HAVE_PTHREADS],[test "x$have_pthreads" == "xyes"])
+AC_SUBST(PTHREAD_CFLAGS)
+AC_SUBST(PTHREAD_LIBS)
+
+# GoogleMock currently has hard dependencies upon GoogleTest above and beyond
+# running its own test suite, so we both provide our own version in
+# a subdirectory and provide some logic to use a custom version or a system
+# installed version.
+AC_ARG_WITH([gtest],
+            [AS_HELP_STRING([--with-gtest],
+                            [Specifies how to find the gtest package. If no
+                            arguments are given, the default behavior, a
+                            system installed gtest will be used if present,
+                            and an internal version built otherwise. If a
+                            path is provided, the gtest built or installed at
+                            that prefix will be used.])],
+            [],
+            [with_gtest=yes])
+AC_ARG_ENABLE([external-gtest],
+              [AS_HELP_STRING([--disable-external-gtest],
+                              [Disables any detection or use of a system
+                              installed or user provided gtest. Any option to
+                              '--with-gtest' is ignored. (Default is enabled.)])
+              ], [], [enable_external_gtest=yes])
+AS_IF([test "x$with_gtest" == "xno"],
+      [AC_MSG_ERROR([dnl
+Support for GoogleTest was explicitly disabled. Currently GoogleMock has a hard
+dependency upon GoogleTest to build, please provide a version, or allow
+GoogleMock to use any installed version and fall back upon its internal
+version.])])
+
+# Setup various GTEST variables. TODO(chandlerc@google.com): When these are
+# used below, they should be used such that any pre-existing values always
+# trump values we set them to, so that they can be used to selectively override
+# details of the detection process.
+AC_ARG_VAR([GTEST_CONFIG],
+           [The exact path of Google Test's 'gtest-config' script.])
+AC_ARG_VAR([GTEST_CPPFLAGS],
+           [C-like preprocessor flags for Google Test.])
+AC_ARG_VAR([GTEST_CXXFLAGS],
+           [C++ compile flags for Google Test.])
+AC_ARG_VAR([GTEST_LDFLAGS],
+           [Linker path and option flags for Google Test.])
+AC_ARG_VAR([GTEST_LIBS],
+           [Library linking flags for Google Test.])
+AC_ARG_VAR([GTEST_VERSION],
+           [The version of Google Test available.])
+HAVE_BUILT_GTEST="no"
+
+GTEST_MIN_VERSION="1.6.0"
+
+AS_IF([test "x${enable_external_gtest}" = "xyes"],
+      [# Begin filling in variables as we are able.
+      AS_IF([test "x${with_gtest}" != "xyes"],
+            [AS_IF([test -x "${with_gtest}/scripts/gtest-config"],
+                   [GTEST_CONFIG="${with_gtest}/scripts/gtest-config"],
+                   [GTEST_CONFIG="${with_gtest}/bin/gtest-config"])
+            AS_IF([test -x "${GTEST_CONFIG}"], [],
+                  [AC_MSG_ERROR([dnl
+Unable to locate either a built or installed Google Test at '${with_gtest}'.])
+                  ])])
+
+      AS_IF([test -x "${GTEST_CONFIG}"], [],
+            [AC_PATH_PROG([GTEST_CONFIG], [gtest-config])])
+      AS_IF([test -x "${GTEST_CONFIG}"],
+            [AC_MSG_CHECKING([for Google Test version >= ${GTEST_MIN_VERSION}])
+            AS_IF([${GTEST_CONFIG} --min-version=${GTEST_MIN_VERSION}],
+                  [AC_MSG_RESULT([yes])
+                  HAVE_BUILT_GTEST="yes"],
+                  [AC_MSG_RESULT([no])])])])
+
+AS_IF([test "x${HAVE_BUILT_GTEST}" = "xyes"],
+      [GTEST_CPPFLAGS=`${GTEST_CONFIG} --cppflags`
+      GTEST_CXXFLAGS=`${GTEST_CONFIG} --cxxflags`
+      GTEST_LDFLAGS=`${GTEST_CONFIG} --ldflags`
+      GTEST_LIBS=`${GTEST_CONFIG} --libs`
+      GTEST_VERSION=`${GTEST_CONFIG} --version`],
+      [AC_CONFIG_SUBDIRS([gtest])
+      # GTEST_CONFIG needs to be executable both in a Makefile environmont and
+      # in a shell script environment, so resolve an absolute path for it here.
+      GTEST_CONFIG="`pwd -P`/gtest/scripts/gtest-config"
+      GTEST_CPPFLAGS='-I$(top_srcdir)/gtest/include'
+      GTEST_CXXFLAGS='-g'
+      GTEST_LDFLAGS=''
+      GTEST_LIBS='$(top_builddir)/gtest/lib/libgtest.la'
+      GTEST_VERSION="${GTEST_MIN_VERSION}"])
+
+# TODO(chandlerc@google.com) Check the types, structures, and other compiler
+# and architecture characteristics.
+
+# Output the generated files. No further autoconf macros may be used.
+AC_OUTPUT
diff --git a/google-breakpad/src/testing/gtest/CHANGES b/google-breakpad/src/testing/gtest/CHANGES
new file mode 100644
index 0000000..5919245
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/CHANGES
@@ -0,0 +1,130 @@
+Changes for 1.6.0:
+
+* New feature: ADD_FAILURE_AT() for reporting a test failure at the
+  given source location -- useful for writing testing utilities.
+* New feature: the universal value printer is moved from Google Mock
+  to Google Test.
+* New feature: type parameters and value parameters are reported in
+  the XML report now.
+* A gtest_disable_pthreads CMake option.
+* Colored output works in GNU Screen sessions now.
+* Parameters of value-parameterized tests are now printed in the
+  textual output.
+* Failures from ad hoc test assertions run before RUN_ALL_TESTS() are
+  now correctly reported.
+* Arguments of ASSERT_XY and EXPECT_XY no longer need to support << to
+  ostream.
+* More complete handling of exceptions.
+* GTEST_ASSERT_XY can be used instead of ASSERT_XY in case the latter
+  name is already used by another library.
+* --gtest_catch_exceptions is now true by default, allowing a test
+  program to continue after an exception is thrown.
+* Value-parameterized test fixtures can now derive from Test and
+  WithParamInterface<T> separately, easing conversion of legacy tests.
+* Death test messages are clearly marked to make them more
+  distinguishable from other messages.
+* Compatibility fixes for Android, Google Native Client, MinGW, HP UX,
+  PowerPC, Lucid autotools, libCStd, Sun C++, Borland C++ Builder (Code Gear),
+  IBM XL C++ (Visual Age C++), and C++0x.
+* Bug fixes and implementation clean-ups.
+* Potentially incompatible changes: disables the harmful 'make install'
+  command in autotools.
+
+Changes for 1.5.0:
+
+ * New feature: assertions can be safely called in multiple threads
+   where the pthreads library is available.
+ * New feature: predicates used inside EXPECT_TRUE() and friends
+   can now generate custom failure messages.
+ * New feature: Google Test can now be compiled as a DLL.
+ * New feature: fused source files are included.
+ * New feature: prints help when encountering unrecognized Google Test flags.
+ * Experimental feature: CMake build script (requires CMake 2.6.4+).
+ * Experimental feature: the Pump script for meta programming.
+ * double values streamed to an assertion are printed with enough precision
+   to differentiate any two different values.
+ * Google Test now works on Solaris and AIX.
+ * Build and test script improvements.
+ * Bug fixes and implementation clean-ups.
+
+ Potentially breaking changes:
+
+ * Stopped supporting VC++ 7.1 with exceptions disabled.
+ * Dropped support for 'make install'.
+
+Changes for 1.4.0:
+
+ * New feature: the event listener API
+ * New feature: test shuffling
+ * New feature: the XML report format is closer to junitreport and can
+   be parsed by Hudson now.
+ * New feature: when a test runs under Visual Studio, its failures are
+   integrated in the IDE.
+ * New feature: /MD(d) versions of VC++ projects.
+ * New feature: elapsed time for the tests is printed by default.
+ * New feature: comes with a TR1 tuple implementation such that Boost
+   is no longer needed for Combine().
+ * New feature: EXPECT_DEATH_IF_SUPPORTED macro and friends.
+ * New feature: the Xcode project can now produce static gtest
+   libraries in addition to a framework.
+ * Compatibility fixes for Solaris, Cygwin, minGW, Windows Mobile,
+   Symbian, gcc, and C++Builder.
+ * Bug fixes and implementation clean-ups.
+
+Changes for 1.3.0:
+
+ * New feature: death tests on Windows, Cygwin, and Mac.
+ * New feature: ability to use Google Test assertions in other testing
+   frameworks.
+ * New feature: ability to run disabled test via
+   --gtest_also_run_disabled_tests.
+ * New feature: the --help flag for printing the usage.
+ * New feature: access to Google Test flag values in user code.
+ * New feature: a script that packs Google Test into one .h and one
+   .cc file for easy deployment.
+ * New feature: support for distributing test functions to multiple
+   machines (requires support from the test runner).
+ * Bug fixes and implementation clean-ups.
+
+Changes for 1.2.1:
+
+ * Compatibility fixes for Linux IA-64 and IBM z/OS.
+ * Added support for using Boost and other TR1 implementations.
+ * Changes to the build scripts to support upcoming release of Google C++
+   Mocking Framework.
+ * Added Makefile to the distribution package.
+ * Improved build instructions in README.
+
+Changes for 1.2.0:
+
+ * New feature: value-parameterized tests.
+ * New feature: the ASSERT/EXPECT_(NON)FATAL_FAILURE(_ON_ALL_THREADS)
+   macros.
+ * Changed the XML report format to match JUnit/Ant's.
+ * Added tests to the Xcode project.
+ * Added scons/SConscript for building with SCons.
+ * Added src/gtest-all.cc for building Google Test from a single file.
+ * Fixed compatibility with Solaris and z/OS.
+ * Enabled running Python tests on systems with python 2.3 installed,
+   e.g. Mac OS X 10.4.
+ * Bug fixes.
+
+Changes for 1.1.0:
+
+ * New feature: type-parameterized tests.
+ * New feature: exception assertions.
+ * New feature: printing elapsed time of tests.
+ * Improved the robustness of death tests.
+ * Added an Xcode project and samples.
+ * Adjusted the output format on Windows to be understandable by Visual Studio.
+ * Minor bug fixes.
+
+Changes for 1.0.1:
+
+ * Added project files for Visual Studio 7.1.
+ * Fixed issues with compiling on Mac OS X.
+ * Fixed issues with compiling on Cygwin.
+
+Changes for 1.0.0:
+
+ * Initial Open Source release of Google Test
diff --git a/google-breakpad/src/testing/gtest/CMakeLists.txt b/google-breakpad/src/testing/gtest/CMakeLists.txt
new file mode 100644
index 0000000..64527f7
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/CMakeLists.txt
@@ -0,0 +1,250 @@
+########################################################################
+# CMake build script for Google Test.
+#
+# To run the tests for Google Test itself on Linux, use 'make test' or
+# ctest.  You can select which tests to run using 'ctest -R regex'.
+# For more options, run 'ctest --help'.
+
+# BUILD_SHARED_LIBS is a standard CMake variable, but we declare it here to
+# make it prominent in the GUI.
+option(BUILD_SHARED_LIBS "Build shared libraries (DLLs)." OFF)
+
+# When other libraries are using a shared version of runtime libraries,
+# Google Test also has to use one.
+option(
+  gtest_force_shared_crt
+  "Use shared (DLL) run-time lib even when Google Test is built as static lib."
+  OFF)
+
+option(gtest_build_tests "Build all of gtest's own tests." OFF)
+
+option(gtest_build_samples "Build gtest's sample programs." OFF)
+
+option(gtest_disable_pthreads "Disable uses of pthreads in gtest." OFF)
+
+# Defines pre_project_set_up_hermetic_build() and set_up_hermetic_build().
+include(cmake/hermetic_build.cmake OPTIONAL)
+
+if (COMMAND pre_project_set_up_hermetic_build)
+  pre_project_set_up_hermetic_build()
+endif()
+
+########################################################################
+#
+# Project-wide settings
+
+# Name of the project.
+#
+# CMake files in this project can refer to the root source directory
+# as ${gtest_SOURCE_DIR} and to the root binary directory as
+# ${gtest_BINARY_DIR}.
+# Language "C" is required for find_package(Threads).
+project(gtest CXX C)
+cmake_minimum_required(VERSION 2.6.2)
+
+if (COMMAND set_up_hermetic_build)
+  set_up_hermetic_build()
+endif()
+
+# Define helper functions and macros used by Google Test.
+include(cmake/internal_utils.cmake)
+
+config_compiler_and_linker()  # Defined in internal_utils.cmake.
+
+# Where Google Test's .h files can be found.
+include_directories(
+  ${gtest_SOURCE_DIR}/include
+  ${gtest_SOURCE_DIR})
+
+# Where Google Test's libraries can be found.
+link_directories(${gtest_BINARY_DIR}/src)
+
+########################################################################
+#
+# Defines the gtest & gtest_main libraries.  User tests should link
+# with one of them.
+
+# Google Test libraries.  We build them using more strict warnings than what
+# are used for other targets, to ensure that gtest can be compiled by a user
+# aggressive about warnings.
+cxx_library(gtest "${cxx_strict}" src/gtest-all.cc)
+cxx_library(gtest_main "${cxx_strict}" src/gtest_main.cc)
+target_link_libraries(gtest_main gtest)
+
+########################################################################
+#
+# Samples on how to link user tests with gtest or gtest_main.
+#
+# They are not built by default.  To build them, set the
+# gtest_build_samples option to ON.  You can do it by running ccmake
+# or specifying the -Dbuild_gtest_samples=ON flag when running cmake.
+
+if (gtest_build_samples)
+  cxx_executable(sample1_unittest samples gtest_main samples/sample1.cc)
+  cxx_executable(sample2_unittest samples gtest_main samples/sample2.cc)
+  cxx_executable(sample3_unittest samples gtest_main)
+  cxx_executable(sample4_unittest samples gtest_main samples/sample4.cc)
+  cxx_executable(sample5_unittest samples gtest_main samples/sample1.cc)
+  cxx_executable(sample6_unittest samples gtest_main)
+  cxx_executable(sample7_unittest samples gtest_main)
+  cxx_executable(sample8_unittest samples gtest_main)
+  cxx_executable(sample9_unittest samples gtest)
+  cxx_executable(sample10_unittest samples gtest)
+endif()
+
+########################################################################
+#
+# Google Test's own tests.
+#
+# You can skip this section if you aren't interested in testing
+# Google Test itself.
+#
+# The tests are not built by default.  To build them, set the
+# gtest_build_tests option to ON.  You can do it by running ccmake
+# or specifying the -Dgtest_build_tests=ON flag when running cmake.
+
+if (gtest_build_tests)
+  # This must be set in the root directory for the tests to be run by
+  # 'make test' or ctest.
+  enable_testing()
+
+  ############################################################
+  # C++ tests built with standard compiler flags.
+
+  cxx_test(gtest-death-test_test gtest_main)
+  cxx_test(gtest_environment_test gtest)
+  cxx_test(gtest-filepath_test gtest_main)
+  cxx_test(gtest-linked_ptr_test gtest_main)
+  cxx_test(gtest-listener_test gtest_main)
+  cxx_test(gtest_main_unittest gtest_main)
+  cxx_test(gtest-message_test gtest_main)
+  cxx_test(gtest_no_test_unittest gtest)
+  cxx_test(gtest-options_test gtest_main)
+  cxx_test(gtest-param-test_test gtest
+    test/gtest-param-test2_test.cc)
+  cxx_test(gtest-port_test gtest_main)
+  cxx_test(gtest_pred_impl_unittest gtest_main)
+  cxx_test(gtest-printers_test gtest_main)
+  cxx_test(gtest_prod_test gtest_main
+    test/production.cc)
+  cxx_test(gtest_repeat_test gtest)
+  cxx_test(gtest_sole_header_test gtest_main)
+  cxx_test(gtest_stress_test gtest)
+  cxx_test(gtest-test-part_test gtest_main)
+  cxx_test(gtest_throw_on_failure_ex_test gtest)
+  cxx_test(gtest-typed-test_test gtest_main
+    test/gtest-typed-test2_test.cc)
+  cxx_test(gtest_unittest gtest_main)
+  cxx_test(gtest-unittest-api_test gtest)
+
+  ############################################################
+  # C++ tests built with non-standard compiler flags.
+
+  # MSVC 7.1 does not support STL with exceptions disabled.
+  if (NOT MSVC OR MSVC_VERSION GREATER 1310)
+    cxx_library(gtest_no_exception "${cxx_no_exception}"
+      src/gtest-all.cc)
+    cxx_library(gtest_main_no_exception "${cxx_no_exception}"
+      src/gtest-all.cc src/gtest_main.cc)
+  endif()
+  cxx_library(gtest_main_no_rtti "${cxx_no_rtti}"
+    src/gtest-all.cc src/gtest_main.cc)
+
+  cxx_test_with_flags(gtest-death-test_ex_nocatch_test
+    "${cxx_exception} -DGTEST_ENABLE_CATCH_EXCEPTIONS_=0"
+    gtest test/gtest-death-test_ex_test.cc)
+  cxx_test_with_flags(gtest-death-test_ex_catch_test
+    "${cxx_exception} -DGTEST_ENABLE_CATCH_EXCEPTIONS_=1"
+    gtest test/gtest-death-test_ex_test.cc)
+
+  cxx_test_with_flags(gtest_no_rtti_unittest "${cxx_no_rtti}"
+    gtest_main_no_rtti test/gtest_unittest.cc)
+
+  cxx_shared_library(gtest_dll "${cxx_default}"
+    src/gtest-all.cc src/gtest_main.cc)
+
+  cxx_executable_with_flags(gtest_dll_test_ "${cxx_default}"
+    gtest_dll test/gtest_all_test.cc)
+  set_target_properties(gtest_dll_test_
+                        PROPERTIES
+                        COMPILE_DEFINITIONS "GTEST_LINKED_AS_SHARED_LIBRARY=1")
+
+  if (NOT MSVC OR NOT MSVC_VERSION EQUAL 1600)
+    # The C++ Standard specifies tuple_element<int, class>.
+    # Yet MSVC 10's <utility> declares tuple_element<size_t, class>.
+    # That declaration conflicts with our own standard-conforming
+    # tuple implementation.  Therefore using our own tuple with
+    # MSVC 10 doesn't compile.
+    cxx_library(gtest_main_use_own_tuple "${cxx_use_own_tuple}"
+      src/gtest-all.cc src/gtest_main.cc)
+
+    cxx_test_with_flags(gtest-tuple_test "${cxx_use_own_tuple}"
+      gtest_main_use_own_tuple test/gtest-tuple_test.cc)
+
+    cxx_test_with_flags(gtest_use_own_tuple_test "${cxx_use_own_tuple}"
+      gtest_main_use_own_tuple
+      test/gtest-param-test_test.cc test/gtest-param-test2_test.cc)
+  endif()
+
+  ############################################################
+  # Python tests.
+
+  cxx_executable(gtest_break_on_failure_unittest_ test gtest)
+  py_test(gtest_break_on_failure_unittest)
+
+  # MSVC 7.1 does not support STL with exceptions disabled.
+  if (NOT MSVC OR MSVC_VERSION GREATER 1310)
+    cxx_executable_with_flags(
+      gtest_catch_exceptions_no_ex_test_
+      "${cxx_no_exception}"
+      gtest_main_no_exception
+      test/gtest_catch_exceptions_test_.cc)
+  endif()
+
+  cxx_executable_with_flags(
+    gtest_catch_exceptions_ex_test_
+    "${cxx_exception}"
+    gtest_main
+    test/gtest_catch_exceptions_test_.cc)
+  py_test(gtest_catch_exceptions_test)
+
+  cxx_executable(gtest_color_test_ test gtest)
+  py_test(gtest_color_test)
+
+  cxx_executable(gtest_env_var_test_ test gtest)
+  py_test(gtest_env_var_test)
+
+  cxx_executable(gtest_filter_unittest_ test gtest)
+  py_test(gtest_filter_unittest)
+
+  cxx_executable(gtest_help_test_ test gtest_main)
+  py_test(gtest_help_test)
+
+  cxx_executable(gtest_list_tests_unittest_ test gtest)
+  py_test(gtest_list_tests_unittest)
+
+  cxx_executable(gtest_output_test_ test gtest)
+  py_test(gtest_output_test)
+
+  cxx_executable(gtest_shuffle_test_ test gtest)
+  py_test(gtest_shuffle_test)
+
+  # MSVC 7.1 does not support STL with exceptions disabled.
+  if (NOT MSVC OR MSVC_VERSION GREATER 1310)
+    cxx_executable(gtest_throw_on_failure_test_ test gtest_no_exception)
+    set_target_properties(gtest_throw_on_failure_test_
+      PROPERTIES
+      COMPILE_FLAGS "${cxx_no_exception}")
+    py_test(gtest_throw_on_failure_test)
+  endif()
+
+  cxx_executable(gtest_uninitialized_test_ test gtest)
+  py_test(gtest_uninitialized_test)
+
+  cxx_executable(gtest_xml_outfile1_test_ test gtest_main)
+  cxx_executable(gtest_xml_outfile2_test_ test gtest_main)
+  py_test(gtest_xml_outfiles_test)
+
+  cxx_executable(gtest_xml_output_unittest_ test gtest)
+  py_test(gtest_xml_output_unittest)
+endif()
diff --git a/google-breakpad/src/testing/gtest/CONTRIBUTORS b/google-breakpad/src/testing/gtest/CONTRIBUTORS
new file mode 100644
index 0000000..feae2fc
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/CONTRIBUTORS
@@ -0,0 +1,37 @@
+# This file contains a list of people who've made non-trivial
+# contribution to the Google C++ Testing Framework project.  People
+# who commit code to the project are encouraged to add their names
+# here.  Please keep the list sorted by first names.
+
+Ajay Joshi <jaj@google.com>
+Balázs Dán <balazs.dan@gmail.com>
+Bharat Mediratta <bharat@menalto.com>
+Chandler Carruth <chandlerc@google.com>
+Chris Prince <cprince@google.com>
+Chris Taylor <taylorc@google.com>
+Dan Egnor <egnor@google.com>
+Eric Roman <eroman@chromium.org>
+Hady Zalek <hady.zalek@gmail.com>
+Jeffrey Yasskin <jyasskin@google.com>
+Jói Sigurðsson <joi@google.com>
+Keir Mierle <mierle@gmail.com>
+Keith Ray <keith.ray@gmail.com>
+Kenton Varda <kenton@google.com>
+Manuel Klimek <klimek@google.com>
+Markus Heule <markus.heule@gmail.com>
+Mika Raento <mikie@iki.fi>
+Miklós Fazekas <mfazekas@szemafor.com>
+Pasi Valminen <pasi.valminen@gmail.com>
+Patrick Hanna <phanna@google.com>
+Patrick Riley <pfr@google.com>
+Peter Kaminski <piotrk@google.com>
+Preston Jackson <preston.a.jackson@gmail.com>
+Rainer Klaffenboeck <rainer.klaffenboeck@dynatrace.com>
+Russ Cox <rsc@google.com>
+Russ Rufer <russ@pentad.com>
+Sean Mcafee <eefacm@gmail.com>
+Sigurður Ásgeirsson <siggi@google.com>
+Tracy Bialik <tracy@pentad.com>
+Vadim Berman <vadimb@google.com>
+Vlad Losev <vladl@google.com>
+Zhanyong Wan <wan@google.com>
diff --git a/google-breakpad/src/testing/gtest/LICENSE b/google-breakpad/src/testing/gtest/LICENSE
new file mode 100644
index 0000000..1941a11
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/LICENSE
@@ -0,0 +1,28 @@
+Copyright 2008, Google Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+    * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+    * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/google-breakpad/src/testing/gtest/Makefile.am b/google-breakpad/src/testing/gtest/Makefile.am
new file mode 100644
index 0000000..104c54e
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/Makefile.am
@@ -0,0 +1,304 @@
+# Automake file
+
+ACLOCAL_AMFLAGS = -I m4
+
+# Nonstandard package files for distribution
+EXTRA_DIST = \
+  CHANGES \
+  CONTRIBUTORS \
+  include/gtest/gtest-param-test.h.pump \
+  include/gtest/internal/gtest-param-util-generated.h.pump \
+  include/gtest/internal/gtest-tuple.h.pump \
+  include/gtest/internal/gtest-type-util.h.pump \
+  make/Makefile \
+  scripts/fuse_gtest_files.py \
+  scripts/gen_gtest_pred_impl.py \
+  scripts/pump.py \
+  scripts/test/Makefile
+
+# gtest source files that we don't compile directly.  They are
+# #included by gtest-all.cc.
+GTEST_SRC = \
+  src/gtest-death-test.cc \
+  src/gtest-filepath.cc \
+  src/gtest-internal-inl.h \
+  src/gtest-port.cc \
+  src/gtest-printers.cc \
+  src/gtest-test-part.cc \
+  src/gtest-typed-test.cc \
+  src/gtest.cc
+
+EXTRA_DIST += $(GTEST_SRC)
+
+# Sample files that we don't compile.
+EXTRA_DIST += \
+  samples/prime_tables.h \
+  samples/sample2_unittest.cc \
+  samples/sample3_unittest.cc \
+  samples/sample4_unittest.cc \
+  samples/sample5_unittest.cc \
+  samples/sample6_unittest.cc \
+  samples/sample7_unittest.cc \
+  samples/sample8_unittest.cc \
+  samples/sample9_unittest.cc
+
+# C++ test files that we don't compile directly.
+EXTRA_DIST += \
+  test/gtest-death-test_ex_test.cc \
+  test/gtest-death-test_test.cc \
+  test/gtest-filepath_test.cc \
+  test/gtest-linked_ptr_test.cc \
+  test/gtest-listener_test.cc \
+  test/gtest-message_test.cc \
+  test/gtest-options_test.cc \
+  test/gtest-param-test2_test.cc \
+  test/gtest-param-test2_test.cc \
+  test/gtest-param-test_test.cc \
+  test/gtest-param-test_test.cc \
+  test/gtest-param-test_test.h \
+  test/gtest-port_test.cc \
+  test/gtest-printers_test.cc \
+  test/gtest-test-part_test.cc \
+  test/gtest-tuple_test.cc \
+  test/gtest-typed-test2_test.cc \
+  test/gtest-typed-test_test.cc \
+  test/gtest-typed-test_test.h \
+  test/gtest-unittest-api_test.cc \
+  test/gtest_break_on_failure_unittest_.cc \
+  test/gtest_catch_exceptions_test_.cc \
+  test/gtest_color_test_.cc \
+  test/gtest_env_var_test_.cc \
+  test/gtest_environment_test.cc \
+  test/gtest_filter_unittest_.cc \
+  test/gtest_help_test_.cc \
+  test/gtest_list_tests_unittest_.cc \
+  test/gtest_main_unittest.cc \
+  test/gtest_no_test_unittest.cc \
+  test/gtest_output_test_.cc \
+  test/gtest_pred_impl_unittest.cc \
+  test/gtest_prod_test.cc \
+  test/gtest_repeat_test.cc \
+  test/gtest_shuffle_test_.cc \
+  test/gtest_sole_header_test.cc \
+  test/gtest_stress_test.cc \
+  test/gtest_throw_on_failure_ex_test.cc \
+  test/gtest_throw_on_failure_test_.cc \
+  test/gtest_uninitialized_test_.cc \
+  test/gtest_unittest.cc \
+  test/gtest_unittest.cc \
+  test/gtest_xml_outfile1_test_.cc \
+  test/gtest_xml_outfile2_test_.cc \
+  test/gtest_xml_output_unittest_.cc \
+  test/production.cc \
+  test/production.h
+
+# Python tests that we don't run.
+EXTRA_DIST += \
+  test/gtest_break_on_failure_unittest.py \
+  test/gtest_catch_exceptions_test.py \
+  test/gtest_color_test.py \
+  test/gtest_env_var_test.py \
+  test/gtest_filter_unittest.py \
+  test/gtest_help_test.py \
+  test/gtest_list_tests_unittest.py \
+  test/gtest_output_test.py \
+  test/gtest_output_test_golden_lin.txt \
+  test/gtest_shuffle_test.py \
+  test/gtest_test_utils.py \
+  test/gtest_throw_on_failure_test.py \
+  test/gtest_uninitialized_test.py \
+  test/gtest_xml_outfiles_test.py \
+  test/gtest_xml_output_unittest.py \
+  test/gtest_xml_test_utils.py
+
+# CMake script
+EXTRA_DIST += \
+  CMakeLists.txt \
+  cmake/internal_utils.cmake
+
+# MSVC project files
+EXTRA_DIST += \
+  msvc/gtest-md.sln \
+  msvc/gtest-md.vcproj \
+  msvc/gtest.sln \
+  msvc/gtest.vcproj \
+  msvc/gtest_main-md.vcproj \
+  msvc/gtest_main.vcproj \
+  msvc/gtest_prod_test-md.vcproj \
+  msvc/gtest_prod_test.vcproj \
+  msvc/gtest_unittest-md.vcproj \
+  msvc/gtest_unittest.vcproj
+
+# xcode project files
+EXTRA_DIST += \
+  xcode/Config/DebugProject.xcconfig \
+  xcode/Config/FrameworkTarget.xcconfig \
+  xcode/Config/General.xcconfig \
+  xcode/Config/ReleaseProject.xcconfig \
+  xcode/Config/StaticLibraryTarget.xcconfig \
+  xcode/Config/TestTarget.xcconfig \
+  xcode/Resources/Info.plist \
+  xcode/Scripts/runtests.sh \
+  xcode/Scripts/versiongenerate.py \
+  xcode/gtest.xcodeproj/project.pbxproj
+
+# xcode sample files
+EXTRA_DIST += \
+  xcode/Samples/FrameworkSample/Info.plist \
+  xcode/Samples/FrameworkSample/WidgetFramework.xcodeproj/project.pbxproj \
+  xcode/Samples/FrameworkSample/runtests.sh \
+  xcode/Samples/FrameworkSample/widget.cc \
+  xcode/Samples/FrameworkSample/widget.h \
+  xcode/Samples/FrameworkSample/widget_test.cc
+
+# C++Builder project files
+EXTRA_DIST += \
+  codegear/gtest.cbproj \
+  codegear/gtest.groupproj \
+  codegear/gtest_all.cc \
+  codegear/gtest_link.cc \
+  codegear/gtest_main.cbproj \
+  codegear/gtest_unittest.cbproj
+
+# Distribute and install M4 macro
+m4datadir = $(datadir)/aclocal
+m4data_DATA = m4/gtest.m4
+EXTRA_DIST += $(m4data_DATA)
+
+# We define the global AM_CPPFLAGS as everything we compile includes from these
+# directories.
+AM_CPPFLAGS = -I$(srcdir) -I$(srcdir)/include
+
+# Modifies compiler and linker flags for pthreads compatibility.
+if HAVE_PTHREADS
+  AM_CXXFLAGS = @PTHREAD_CFLAGS@ -DGTEST_HAS_PTHREAD=1
+  AM_LIBS = @PTHREAD_LIBS@
+else
+  AM_CXXFLAGS = -DGTEST_HAS_PTHREAD=0
+endif
+
+# Build rules for libraries.
+lib_LTLIBRARIES = lib/libgtest.la lib/libgtest_main.la
+
+lib_libgtest_la_SOURCES = src/gtest-all.cc
+
+pkginclude_HEADERS = \
+  include/gtest/gtest-death-test.h \
+  include/gtest/gtest-message.h \
+  include/gtest/gtest-param-test.h \
+  include/gtest/gtest-printers.h \
+  include/gtest/gtest-spi.h \
+  include/gtest/gtest-test-part.h \
+  include/gtest/gtest-typed-test.h \
+  include/gtest/gtest.h \
+  include/gtest/gtest_pred_impl.h \
+  include/gtest/gtest_prod.h
+
+pkginclude_internaldir = $(pkgincludedir)/internal
+pkginclude_internal_HEADERS = \
+  include/gtest/internal/gtest-death-test-internal.h \
+  include/gtest/internal/gtest-filepath.h \
+  include/gtest/internal/gtest-internal.h \
+  include/gtest/internal/gtest-linked_ptr.h \
+  include/gtest/internal/gtest-param-util-generated.h \
+  include/gtest/internal/gtest-param-util.h \
+  include/gtest/internal/gtest-port.h \
+  include/gtest/internal/gtest-string.h \
+  include/gtest/internal/gtest-tuple.h \
+  include/gtest/internal/gtest-type-util.h
+
+lib_libgtest_main_la_SOURCES = src/gtest_main.cc
+lib_libgtest_main_la_LIBADD = lib/libgtest.la
+
+# Bulid rules for samples and tests. Automake's naming for some of
+# these variables isn't terribly obvious, so this is a brief
+# reference:
+#
+# TESTS -- Programs run automatically by "make check"
+# check_PROGRAMS -- Programs built by "make check" but not necessarily run
+
+noinst_LTLIBRARIES = samples/libsamples.la
+
+samples_libsamples_la_SOURCES = \
+  samples/sample1.cc \
+  samples/sample1.h \
+  samples/sample2.cc \
+  samples/sample2.h \
+  samples/sample3-inl.h \
+  samples/sample4.cc \
+  samples/sample4.h
+
+TESTS=
+TESTS_ENVIRONMENT = GTEST_SOURCE_DIR="$(srcdir)/test" \
+                    GTEST_BUILD_DIR="$(top_builddir)/test"
+check_PROGRAMS=
+
+# A simple sample on using gtest.
+TESTS += samples/sample1_unittest
+check_PROGRAMS += samples/sample1_unittest
+samples_sample1_unittest_SOURCES = samples/sample1_unittest.cc
+samples_sample1_unittest_LDADD = lib/libgtest_main.la \
+                                 lib/libgtest.la \
+                                 samples/libsamples.la
+
+# Another sample.  It also verifies that libgtest works.
+TESTS += samples/sample10_unittest
+check_PROGRAMS += samples/sample10_unittest
+samples_sample10_unittest_SOURCES = samples/sample10_unittest.cc
+samples_sample10_unittest_LDADD = lib/libgtest.la
+
+# This tests most constructs of gtest and verifies that libgtest_main
+# and libgtest work.
+TESTS += test/gtest_all_test
+check_PROGRAMS += test/gtest_all_test
+test_gtest_all_test_SOURCES = test/gtest_all_test.cc
+test_gtest_all_test_LDADD = lib/libgtest_main.la \
+                            lib/libgtest.la
+
+# Tests that fused gtest files compile and work.
+FUSED_GTEST_SRC = \
+  fused-src/gtest/gtest-all.cc \
+  fused-src/gtest/gtest.h \
+  fused-src/gtest/gtest_main.cc
+
+if HAVE_PYTHON
+TESTS += test/fused_gtest_test
+check_PROGRAMS += test/fused_gtest_test
+test_fused_gtest_test_SOURCES = $(FUSED_GTEST_SRC) \
+                                samples/sample1.cc samples/sample1_unittest.cc
+test_fused_gtest_test_CPPFLAGS = -I"$(srcdir)/fused-src"
+
+# Build rules for putting fused Google Test files into the distribution
+# package. The user can also create those files by manually running
+# scripts/fuse_gtest_files.py.
+$(test_fused_gtest_test_SOURCES): fused-gtest
+
+fused-gtest: $(pkginclude_HEADERS) $(pkginclude_internal_HEADERS) \
+             $(GTEST_SRC) src/gtest-all.cc src/gtest_main.cc \
+             scripts/fuse_gtest_files.py
+	mkdir -p "$(srcdir)/fused-src"
+	chmod -R u+w "$(srcdir)/fused-src"
+	rm -f "$(srcdir)/fused-src/gtest/gtest-all.cc"
+	rm -f "$(srcdir)/fused-src/gtest/gtest.h"
+	"$(srcdir)/scripts/fuse_gtest_files.py" "$(srcdir)/fused-src"
+	cp -f "$(srcdir)/src/gtest_main.cc" "$(srcdir)/fused-src/gtest/"
+
+maintainer-clean-local:
+	rm -rf "$(srcdir)/fused-src"
+endif
+
+# Death tests may produce core dumps in the build directory. In case
+# this happens, clean them to keep distcleancheck happy.
+CLEANFILES = core
+
+# Disables 'make install' as installing a compiled version of Google
+# Test can lead to undefined behavior due to violation of the
+# One-Definition Rule.
+
+install-exec-local:
+	echo "'make install' is dangerous and not supported. Instead, see README for how to integrate Google Test into your build system."
+	false
+
+install-data-local:
+	echo "'make install' is dangerous and not supported. Instead, see README for how to integrate Google Test into your build system."
+	false
diff --git a/google-breakpad/src/testing/gtest/README b/google-breakpad/src/testing/gtest/README
new file mode 100644
index 0000000..17bf72f
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/README
@@ -0,0 +1,434 @@
+Google C++ Testing Framework
+============================
+
+http://code.google.com/p/googletest/
+
+Overview
+--------
+
+Google's framework for writing C++ tests on a variety of platforms
+(Linux, Mac OS X, Windows, Windows CE, Symbian, etc).  Based on the
+xUnit architecture.  Supports automatic test discovery, a rich set of
+assertions, user-defined assertions, death tests, fatal and non-fatal
+failures, various options for running the tests, and XML test report
+generation.
+
+Please see the project page above for more information as well as the
+mailing list for questions, discussions, and development.  There is
+also an IRC channel on OFTC (irc.oftc.net) #gtest available.  Please
+join us!
+
+Requirements for End Users
+--------------------------
+
+Google Test is designed to have fairly minimal requirements to build
+and use with your projects, but there are some.  Currently, we support
+Linux, Windows, Mac OS X, and Cygwin.  We will also make our best
+effort to support other platforms (e.g. Solaris, AIX, and z/OS).
+However, since core members of the Google Test project have no access
+to these platforms, Google Test may have outstanding issues there.  If
+you notice any problems on your platform, please notify
+googletestframework@googlegroups.com.  Patches for fixing them are
+even more welcome!
+
+### Linux Requirements ###
+
+These are the base requirements to build and use Google Test from a source
+package (as described below):
+  * GNU-compatible Make or gmake
+  * POSIX-standard shell
+  * POSIX(-2) Regular Expressions (regex.h)
+  * A C++98-standard-compliant compiler
+
+### Windows Requirements ###
+
+  * Microsoft Visual C++ 7.1 or newer
+
+### Cygwin Requirements ###
+
+  * Cygwin 1.5.25-14 or newer
+
+### Mac OS X Requirements ###
+
+  * Mac OS X 10.4 Tiger or newer
+  * Developer Tools Installed
+
+Also, you'll need CMake 2.6.4 or higher if you want to build the
+samples using the provided CMake script, regardless of the platform.
+
+Requirements for Contributors
+-----------------------------
+
+We welcome patches.  If you plan to contribute a patch, you need to
+build Google Test and its own tests from an SVN checkout (described
+below), which has further requirements:
+
+  * Python version 2.3 or newer (for running some of the tests and
+    re-generating certain source files from templates)
+  * CMake 2.6.4 or newer
+
+Getting the Source
+------------------
+
+There are two primary ways of getting Google Test's source code: you
+can download a stable source release in your preferred archive format,
+or directly check out the source from our Subversion (SVN) repositary.
+The SVN checkout requires a few extra steps and some extra software
+packages on your system, but lets you track the latest development and
+make patches much more easily, so we highly encourage it.
+
+### Source Package ###
+
+Google Test is released in versioned source packages which can be
+downloaded from the download page [1].  Several different archive
+formats are provided, but the only difference is the tools used to
+manipulate them, and the size of the resulting file.  Download
+whichever you are most comfortable with.
+
+  [1] http://code.google.com/p/googletest/downloads/list
+
+Once the package is downloaded, expand it using whichever tools you
+prefer for that type.  This will result in a new directory with the
+name "gtest-X.Y.Z" which contains all of the source code.  Here are
+some examples on Linux:
+
+  tar -xvzf gtest-X.Y.Z.tar.gz
+  tar -xvjf gtest-X.Y.Z.tar.bz2
+  unzip gtest-X.Y.Z.zip
+
+### SVN Checkout ###
+
+To check out the main branch (also known as the "trunk") of Google
+Test, run the following Subversion command:
+
+  svn checkout http://googletest.googlecode.com/svn/trunk/ gtest-svn
+
+Setting up the Build
+--------------------
+
+To build Google Test and your tests that use it, you need to tell your
+build system where to find its headers and source files.  The exact
+way to do it depends on which build system you use, and is usually
+straightforward.
+
+### Generic Build Instructions ###
+
+Suppose you put Google Test in directory ${GTEST_DIR}.  To build it,
+create a library build target (or a project as called by Visual Studio
+and Xcode) to compile
+
+  ${GTEST_DIR}/src/gtest-all.cc
+
+with
+
+  ${GTEST_DIR}/include and ${GTEST_DIR}
+
+in the header search path.  Assuming a Linux-like system and gcc,
+something like the following will do:
+
+  g++ -I${GTEST_DIR}/include -I${GTEST_DIR} -c ${GTEST_DIR}/src/gtest-all.cc
+  ar -rv libgtest.a gtest-all.o
+
+Next, you should compile your test source file with
+${GTEST_DIR}/include in the header search path, and link it with gtest
+and any other necessary libraries:
+
+  g++ -I${GTEST_DIR}/include path/to/your_test.cc libgtest.a -o your_test
+
+As an example, the make/ directory contains a Makefile that you can
+use to build Google Test on systems where GNU make is available
+(e.g. Linux, Mac OS X, and Cygwin).  It doesn't try to build Google
+Test's own tests.  Instead, it just builds the Google Test library and
+a sample test.  You can use it as a starting point for your own build
+script.
+
+If the default settings are correct for your environment, the
+following commands should succeed:
+
+  cd ${GTEST_DIR}/make
+  make
+  ./sample1_unittest
+
+If you see errors, try to tweak the contents of make/Makefile to make
+them go away.  There are instructions in make/Makefile on how to do
+it.
+
+### Using CMake ###
+
+Google Test comes with a CMake build script (CMakeLists.txt) that can
+be used on a wide range of platforms ("C" stands for cross-platofrm.).
+If you don't have CMake installed already, you can download it for
+free from http://www.cmake.org/.
+
+CMake works by generating native makefiles or build projects that can
+be used in the compiler environment of your choice.  The typical
+workflow starts with:
+
+  mkdir mybuild       # Create a directory to hold the build output.
+  cd mybuild
+  cmake ${GTEST_DIR}  # Generate native build scripts.
+
+If you want to build Google Test's samples, you should replace the
+last command with
+
+  cmake -Dgtest_build_samples=ON ${GTEST_DIR}
+
+If you are on a *nix system, you should now see a Makefile in the
+current directory.  Just type 'make' to build gtest.
+
+If you use Windows and have Vistual Studio installed, a gtest.sln file
+and several .vcproj files will be created.  You can then build them
+using Visual Studio.
+
+On Mac OS X with Xcode installed, a .xcodeproj file will be generated.
+
+### Legacy Build Scripts ###
+
+Before settling on CMake, we have been providing hand-maintained build
+projects/scripts for Visual Studio, Xcode, and Autotools.  While we
+continue to provide them for convenience, they are not actively
+maintained any more.  We highly recommend that you follow the
+instructions in the previous two sections to integrate Google Test
+with your existing build system.
+
+If you still need to use the legacy build scripts, here's how:
+
+The msvc\ folder contains two solutions with Visual C++ projects.
+Open the gtest.sln or gtest-md.sln file using Visual Studio, and you
+are ready to build Google Test the same way you build any Visual
+Studio project.  Files that have names ending with -md use DLL
+versions of Microsoft runtime libraries (the /MD or the /MDd compiler
+option).  Files without that suffix use static versions of the runtime
+libraries (the /MT or the /MTd option).  Please note that one must use
+the same option to compile both gtest and the test code.  If you use
+Visual Studio 2005 or above, we recommend the -md version as /MD is
+the default for new projects in these versions of Visual Studio.
+
+On Mac OS X, open the gtest.xcodeproj in the xcode/ folder using
+Xcode.  Build the "gtest" target.  The universal binary framework will
+end up in your selected build directory (selected in the Xcode
+"Preferences..." -> "Building" pane and defaults to xcode/build).
+Alternatively, at the command line, enter:
+
+  xcodebuild
+
+This will build the "Release" configuration of gtest.framework in your
+default build location.  See the "xcodebuild" man page for more
+information about building different configurations and building in
+different locations.
+
+If you wish to use the Google Test Xcode project with Xcode 4.x and
+above, you need to either:
+ * update the SDK configuration options in xcode/Config/General.xconfig.
+   Comment options SDKROOT, MACOS_DEPLOYMENT_TARGET, and GCC_VERSION. If
+   you choose this route you lose the ability to target earlier versions
+   of MacOS X.
+ * Install an SDK for an earlier version. This doesn't appear to be
+   supported by Apple, but has been reported to work
+   (http://stackoverflow.com/questions/5378518).
+
+Tweaking Google Test
+--------------------
+
+Google Test can be used in diverse environments.  The default
+configuration may not work (or may not work well) out of the box in
+some environments.  However, you can easily tweak Google Test by
+defining control macros on the compiler command line.  Generally,
+these macros are named like GTEST_XYZ and you define them to either 1
+or 0 to enable or disable a certain feature.
+
+We list the most frequently used macros below.  For a complete list,
+see file include/gtest/internal/gtest-port.h.
+
+### Choosing a TR1 Tuple Library ###
+
+Some Google Test features require the C++ Technical Report 1 (TR1)
+tuple library, which is not yet available with all compilers.  The
+good news is that Google Test implements a subset of TR1 tuple that's
+enough for its own need, and will automatically use this when the
+compiler doesn't provide TR1 tuple.
+
+Usually you don't need to care about which tuple library Google Test
+uses.  However, if your project already uses TR1 tuple, you need to
+tell Google Test to use the same TR1 tuple library the rest of your
+project uses, or the two tuple implementations will clash.  To do
+that, add
+
+  -DGTEST_USE_OWN_TR1_TUPLE=0
+
+to the compiler flags while compiling Google Test and your tests.  If
+you want to force Google Test to use its own tuple library, just add
+
+  -DGTEST_USE_OWN_TR1_TUPLE=1
+
+to the compiler flags instead.
+
+If you don't want Google Test to use tuple at all, add
+
+  -DGTEST_HAS_TR1_TUPLE=0
+
+and all features using tuple will be disabled.
+
+### Multi-threaded Tests ###
+
+Google Test is thread-safe where the pthread library is available.
+After #include "gtest/gtest.h", you can check the GTEST_IS_THREADSAFE
+macro to see whether this is the case (yes if the macro is #defined to
+1, no if it's undefined.).
+
+If Google Test doesn't correctly detect whether pthread is available
+in your environment, you can force it with
+
+  -DGTEST_HAS_PTHREAD=1
+
+or
+
+  -DGTEST_HAS_PTHREAD=0
+
+When Google Test uses pthread, you may need to add flags to your
+compiler and/or linker to select the pthread library, or you'll get
+link errors.  If you use the CMake script or the deprecated Autotools
+script, this is taken care of for you.  If you use your own build
+script, you'll need to read your compiler and linker's manual to
+figure out what flags to add.
+
+### As a Shared Library (DLL) ###
+
+Google Test is compact, so most users can build and link it as a
+static library for the simplicity.  You can choose to use Google Test
+as a shared library (known as a DLL on Windows) if you prefer.
+
+To compile *gtest* as a shared library, add
+
+  -DGTEST_CREATE_SHARED_LIBRARY=1
+
+to the compiler flags.  You'll also need to tell the linker to produce
+a shared library instead - consult your linker's manual for how to do
+it.
+
+To compile your *tests* that use the gtest shared library, add
+
+  -DGTEST_LINKED_AS_SHARED_LIBRARY=1
+
+to the compiler flags.
+
+Note: while the above steps aren't technically necessary today when
+using some compilers (e.g. GCC), they may become necessary in the
+future, if we decide to improve the speed of loading the library (see
+http://gcc.gnu.org/wiki/Visibility for details).  Therefore you are
+recommended to always add the above flags when using Google Test as a
+shared library.  Otherwise a future release of Google Test may break
+your build script.
+
+### Avoiding Macro Name Clashes ###
+
+In C++, macros don't obey namespaces.  Therefore two libraries that
+both define a macro of the same name will clash if you #include both
+definitions.  In case a Google Test macro clashes with another
+library, you can force Google Test to rename its macro to avoid the
+conflict.
+
+Specifically, if both Google Test and some other code define macro
+FOO, you can add
+
+  -DGTEST_DONT_DEFINE_FOO=1
+
+to the compiler flags to tell Google Test to change the macro's name
+from FOO to GTEST_FOO.  Currently FOO can be FAIL, SUCCEED, or TEST.
+For example, with -DGTEST_DONT_DEFINE_TEST=1, you'll need to write
+
+  GTEST_TEST(SomeTest, DoesThis) { ... }
+
+instead of
+
+  TEST(SomeTest, DoesThis) { ... }
+
+in order to define a test.
+
+Upgrating from an Earlier Version
+---------------------------------
+
+We strive to keep Google Test releases backward compatible.
+Sometimes, though, we have to make some breaking changes for the
+users' long-term benefits.  This section describes what you'll need to
+do if you are upgrading from an earlier version of Google Test.
+
+### Upgrading from 1.3.0 or Earlier ###
+
+You may need to explicitly enable or disable Google Test's own TR1
+tuple library.  See the instructions in section "Choosing a TR1 Tuple
+Library".
+
+### Upgrading from 1.4.0 or Earlier ###
+
+The Autotools build script (configure + make) is no longer officially
+supportted.  You are encouraged to migrate to your own build system or
+use CMake.  If you still need to use Autotools, you can find
+instructions in the README file from Google Test 1.4.0.
+
+On platforms where the pthread library is available, Google Test uses
+it in order to be thread-safe.  See the "Multi-threaded Tests" section
+for what this means to your build script.
+
+If you use Microsoft Visual C++ 7.1 with exceptions disabled, Google
+Test will no longer compile.  This should affect very few people, as a
+large portion of STL (including <string>) doesn't compile in this mode
+anyway.  We decided to stop supporting it in order to greatly simplify
+Google Test's implementation.
+
+Developing Google Test
+----------------------
+
+This section discusses how to make your own changes to Google Test.
+
+### Testing Google Test Itself ###
+
+To make sure your changes work as intended and don't break existing
+functionality, you'll want to compile and run Google Test's own tests.
+For that you can use CMake:
+
+  mkdir mybuild
+  cd mybuild
+  cmake -Dgtest_build_tests=ON ${GTEST_DIR}
+
+Make sure you have Python installed, as some of Google Test's tests
+are written in Python.  If the cmake command complains about not being
+able to find Python ("Could NOT find PythonInterp (missing:
+PYTHON_EXECUTABLE)"), try telling it explicitly where your Python
+executable can be found:
+
+  cmake -DPYTHON_EXECUTABLE=path/to/python -Dgtest_build_tests=ON ${GTEST_DIR}
+
+Next, you can build Google Test and all of its own tests.  On *nix,
+this is usually done by 'make'.  To run the tests, do
+
+  make test
+
+All tests should pass.
+
+### Regenerating Source Files ###
+
+Some of Google Test's source files are generated from templates (not
+in the C++ sense) using a script.  A template file is named FOO.pump,
+where FOO is the name of the file it will generate.  For example, the
+file include/gtest/internal/gtest-type-util.h.pump is used to generate
+gtest-type-util.h in the same directory.
+
+Normally you don't need to worry about regenerating the source files,
+unless you need to modify them.  In that case, you should modify the
+corresponding .pump files instead and run the pump.py Python script to
+regenerate them.  You can find pump.py in the scripts/ directory.
+Read the Pump manual [2] for how to use it.
+
+  [2] http://code.google.com/p/googletest/wiki/PumpManual
+
+### Contributing a Patch ###
+
+We welcome patches.  Please read the Google Test developer's guide [3]
+for how you can contribute.  In particular, make sure you have signed
+the Contributor License Agreement, or we won't be able to accept the
+patch.
+
+  [3] http://code.google.com/p/googletest/wiki/GoogleTestDevGuide
+
+Happy testing!
diff --git a/google-breakpad/src/testing/gtest/build-aux/.keep b/google-breakpad/src/testing/gtest/build-aux/.keep
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/build-aux/.keep
diff --git a/google-breakpad/src/testing/gtest/cmake/internal_utils.cmake b/google-breakpad/src/testing/gtest/cmake/internal_utils.cmake
new file mode 100644
index 0000000..8cb2189
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/cmake/internal_utils.cmake
@@ -0,0 +1,227 @@
+# Defines functions and macros useful for building Google Test and
+# Google Mock.
+#
+# Note:
+#
+# - This file will be run twice when building Google Mock (once via
+#   Google Test's CMakeLists.txt, and once via Google Mock's).
+#   Therefore it shouldn't have any side effects other than defining
+#   the functions and macros.
+#
+# - The functions/macros defined in this file may depend on Google
+#   Test and Google Mock's option() definitions, and thus must be
+#   called *after* the options have been defined.
+
+# Tweaks CMake's default compiler/linker settings to suit Google Test's needs.
+#
+# This must be a macro(), as inside a function string() can only
+# update variables in the function scope.
+macro(fix_default_compiler_settings_)
+  if (MSVC)
+    # For MSVC, CMake sets certain flags to defaults we want to override.
+    # This replacement code is taken from sample in the CMake Wiki at
+    # http://www.cmake.org/Wiki/CMake_FAQ#Dynamic_Replace.
+    foreach (flag_var
+             CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
+             CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
+      if (NOT BUILD_SHARED_LIBS AND NOT gtest_force_shared_crt)
+        # When Google Test is built as a shared library, it should also use
+        # shared runtime libraries.  Otherwise, it may end up with multiple
+        # copies of runtime library data in different modules, resulting in
+        # hard-to-find crashes. When it is built as a static library, it is
+        # preferable to use CRT as static libraries, as we don't have to rely
+        # on CRT DLLs being available. CMake always defaults to using shared
+        # CRT libraries, so we override that default here.
+        string(REPLACE "/MD" "-MT" ${flag_var} "${${flag_var}}")
+      endif()
+
+      # We prefer more strict warning checking for building Google Test.
+      # Replaces /W3 with /W4 in defaults.
+      string(REPLACE "/W3" "-W4" ${flag_var} "${${flag_var}}")
+    endforeach()
+  endif()
+endmacro()
+
+# Defines the compiler/linker flags used to build Google Test and
+# Google Mock.  You can tweak these definitions to suit your need.  A
+# variable's value is empty before it's explicitly assigned to.
+macro(config_compiler_and_linker)
+  if (NOT gtest_disable_pthreads)
+    # Defines CMAKE_USE_PTHREADS_INIT and CMAKE_THREAD_LIBS_INIT.
+    find_package(Threads)
+  endif()
+
+  fix_default_compiler_settings_()
+  if (MSVC)
+    # Newlines inside flags variables break CMake's NMake generator.
+    # TODO(vladl@google.com): Add -RTCs and -RTCu to debug builds.
+    set(cxx_base_flags "-GS -W4 -WX -wd4127 -wd4251 -wd4275 -nologo -J -Zi")
+    if (MSVC_VERSION LESS 1400)
+      # Suppress spurious warnings MSVC 7.1 sometimes issues.
+      # Forcing value to bool.
+      set(cxx_base_flags "${cxx_base_flags} -wd4800")
+      # Copy constructor and assignment operator could not be generated.
+      set(cxx_base_flags "${cxx_base_flags} -wd4511 -wd4512")
+      # Compatibility warnings not applicable to Google Test.
+      # Resolved overload was found by argument-dependent lookup.
+      set(cxx_base_flags "${cxx_base_flags} -wd4675")
+    endif()
+    set(cxx_base_flags "${cxx_base_flags} -D_UNICODE -DUNICODE -DWIN32 -D_WIN32")
+    set(cxx_base_flags "${cxx_base_flags} -DSTRICT -DWIN32_LEAN_AND_MEAN")
+    set(cxx_exception_flags "-EHsc -D_HAS_EXCEPTIONS=1")
+    set(cxx_no_exception_flags "-D_HAS_EXCEPTIONS=0")
+    set(cxx_no_rtti_flags "-GR-")
+  elseif (CMAKE_COMPILER_IS_GNUCXX)
+    set(cxx_base_flags "-Wall -Wshadow")
+    set(cxx_exception_flags "-fexceptions")
+    set(cxx_no_exception_flags "-fno-exceptions")
+    # Until version 4.3.2, GCC doesn't define a macro to indicate
+    # whether RTTI is enabled.  Therefore we define GTEST_HAS_RTTI
+    # explicitly.
+    set(cxx_no_rtti_flags "-fno-rtti -DGTEST_HAS_RTTI=0")
+    set(cxx_strict_flags
+      "-Wextra -Wno-unused-parameter -Wno-missing-field-initializers")
+  elseif (CMAKE_CXX_COMPILER_ID STREQUAL "SunPro")
+    set(cxx_exception_flags "-features=except")
+    # Sun Pro doesn't provide macros to indicate whether exceptions and
+    # RTTI are enabled, so we define GTEST_HAS_* explicitly.
+    set(cxx_no_exception_flags "-features=no%except -DGTEST_HAS_EXCEPTIONS=0")
+    set(cxx_no_rtti_flags "-features=no%rtti -DGTEST_HAS_RTTI=0")
+  elseif (CMAKE_CXX_COMPILER_ID STREQUAL "VisualAge" OR
+      CMAKE_CXX_COMPILER_ID STREQUAL "XL")
+    # CMake 2.8 changes Visual Age's compiler ID to "XL".
+    set(cxx_exception_flags "-qeh")
+    set(cxx_no_exception_flags "-qnoeh")
+    # Until version 9.0, Visual Age doesn't define a macro to indicate
+    # whether RTTI is enabled.  Therefore we define GTEST_HAS_RTTI
+    # explicitly.
+    set(cxx_no_rtti_flags "-qnortti -DGTEST_HAS_RTTI=0")
+  elseif (CMAKE_CXX_COMPILER_ID STREQUAL "HP")
+    set(cxx_base_flags "-AA -mt")
+    set(cxx_exception_flags "-DGTEST_HAS_EXCEPTIONS=1")
+    set(cxx_no_exception_flags "+noeh -DGTEST_HAS_EXCEPTIONS=0")
+    # RTTI can not be disabled in HP aCC compiler.
+    set(cxx_no_rtti_flags "")
+  endif()
+
+  if (CMAKE_USE_PTHREADS_INIT)  # The pthreads library is available and allowed.
+    set(cxx_base_flags "${cxx_base_flags} -DGTEST_HAS_PTHREAD=1")
+  else()
+    set(cxx_base_flags "${cxx_base_flags} -DGTEST_HAS_PTHREAD=0")
+  endif()
+
+  # For building gtest's own tests and samples.
+  set(cxx_exception "${CMAKE_CXX_FLAGS} ${cxx_base_flags} ${cxx_exception_flags}")
+  set(cxx_no_exception
+    "${CMAKE_CXX_FLAGS} ${cxx_base_flags} ${cxx_no_exception_flags}")
+  set(cxx_default "${cxx_exception}")
+  set(cxx_no_rtti "${cxx_default} ${cxx_no_rtti_flags}")
+  set(cxx_use_own_tuple "${cxx_default} -DGTEST_USE_OWN_TR1_TUPLE=1")
+
+  # For building the gtest libraries.
+  set(cxx_strict "${cxx_default} ${cxx_strict_flags}")
+endmacro()
+
+# Defines the gtest & gtest_main libraries.  User tests should link
+# with one of them.
+function(cxx_library_with_type name type cxx_flags)
+  # type can be either STATIC or SHARED to denote a static or shared library.
+  # ARGN refers to additional arguments after 'cxx_flags'.
+  add_library(${name} ${type} ${ARGN})
+  set_target_properties(${name}
+    PROPERTIES
+    COMPILE_FLAGS "${cxx_flags}")
+  if (BUILD_SHARED_LIBS OR type STREQUAL "SHARED")
+    set_target_properties(${name}
+      PROPERTIES
+      COMPILE_DEFINITIONS "GTEST_CREATE_SHARED_LIBRARY=1")
+  endif()
+  if (CMAKE_USE_PTHREADS_INIT)
+    target_link_libraries(${name} ${CMAKE_THREAD_LIBS_INIT})
+  endif()
+endfunction()
+
+########################################################################
+#
+# Helper functions for creating build targets.
+
+function(cxx_shared_library name cxx_flags)
+  cxx_library_with_type(${name} SHARED "${cxx_flags}" ${ARGN})
+endfunction()
+
+function(cxx_library name cxx_flags)
+  cxx_library_with_type(${name} "" "${cxx_flags}" ${ARGN})
+endfunction()
+
+# cxx_executable_with_flags(name cxx_flags libs srcs...)
+#
+# creates a named C++ executable that depends on the given libraries and
+# is built from the given source files with the given compiler flags.
+function(cxx_executable_with_flags name cxx_flags libs)
+  add_executable(${name} ${ARGN})
+  if (cxx_flags)
+    set_target_properties(${name}
+      PROPERTIES
+      COMPILE_FLAGS "${cxx_flags}")
+  endif()
+  if (BUILD_SHARED_LIBS)
+    set_target_properties(${name}
+      PROPERTIES
+      COMPILE_DEFINITIONS "GTEST_LINKED_AS_SHARED_LIBRARY=1")
+  endif()
+  # To support mixing linking in static and dynamic libraries, link each
+  # library in with an extra call to target_link_libraries.
+  foreach (lib "${libs}")
+    target_link_libraries(${name} ${lib})
+  endforeach()
+endfunction()
+
+# cxx_executable(name dir lib srcs...)
+#
+# creates a named target that depends on the given libs and is built
+# from the given source files.  dir/name.cc is implicitly included in
+# the source file list.
+function(cxx_executable name dir libs)
+  cxx_executable_with_flags(
+    ${name} "${cxx_default}" "${libs}" "${dir}/${name}.cc" ${ARGN})
+endfunction()
+
+# Sets PYTHONINTERP_FOUND and PYTHON_EXECUTABLE.
+find_package(PythonInterp)
+
+# cxx_test_with_flags(name cxx_flags libs srcs...)
+#
+# creates a named C++ test that depends on the given libs and is built
+# from the given source files with the given compiler flags.
+function(cxx_test_with_flags name cxx_flags libs)
+  cxx_executable_with_flags(${name} "${cxx_flags}" "${libs}" ${ARGN})
+  add_test(${name} ${name})
+endfunction()
+
+# cxx_test(name libs srcs...)
+#
+# creates a named test target that depends on the given libs and is
+# built from the given source files.  Unlike cxx_test_with_flags,
+# test/name.cc is already implicitly included in the source file list.
+function(cxx_test name libs)
+  cxx_test_with_flags("${name}" "${cxx_default}" "${libs}"
+    "test/${name}.cc" ${ARGN})
+endfunction()
+
+# py_test(name)
+#
+# creates a Python test with the given name whose main module is in
+# test/name.py.  It does nothing if Python is not installed.
+function(py_test name)
+  # We are not supporting Python tests on Linux yet as they consider
+  # all Linux environments to be google3 and try to use google3 features.
+  if (PYTHONINTERP_FOUND)
+    # ${CMAKE_BINARY_DIR} is known at configuration time, so we can
+    # directly bind it from cmake. ${CTEST_CONFIGURATION_TYPE} is known
+    # only at ctest runtime (by calling ctest -c <Configuration>), so
+    # we have to escape $ to delay variable substitution here.
+    add_test(${name}
+      ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test/${name}.py
+          --build_dir=${CMAKE_CURRENT_BINARY_DIR}/\${CTEST_CONFIGURATION_TYPE})
+  endif()
+endfunction()
diff --git a/google-breakpad/src/testing/gtest/codegear/gtest.cbproj b/google-breakpad/src/testing/gtest/codegear/gtest.cbproj
new file mode 100644
index 0000000..95c3054
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/codegear/gtest.cbproj
@@ -0,0 +1,138 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <ProjectGuid>{bca37a72-5b07-46cf-b44e-89f8e06451a2}</ProjectGuid>
+    <Config Condition="'$(Config)'==''">Release</Config>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
+    <Base>true</Base>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_1)'!=''">
+    <Base>true</Base>
+    <Cfg_1>true</Cfg_1>
+    <CfgParent>Base</CfgParent>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_2)'!=''">
+    <Base>true</Base>
+    <Cfg_2>true</Cfg_2>
+    <CfgParent>Base</CfgParent>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Base)'!=''">
+    <BCC_OptimizeForSpeed>true</BCC_OptimizeForSpeed>
+    <OutputExt>lib</OutputExt>
+    <DCC_CBuilderOutput>JPHNE</DCC_CBuilderOutput>
+    <Defines>NO_STRICT</Defines>
+    <DynamicRTL>true</DynamicRTL>
+    <UsePackages>true</UsePackages>
+    <ProjectType>CppStaticLibrary</ProjectType>
+    <BCC_CPPCompileAlways>true</BCC_CPPCompileAlways>
+    <PackageImports>rtl.bpi;vcl.bpi;bcbie.bpi;vclx.bpi;vclactnband.bpi;xmlrtl.bpi;bcbsmp.bpi;dbrtl.bpi;vcldb.bpi;bdertl.bpi;vcldbx.bpi;dsnap.bpi;dsnapcon.bpi;vclib.bpi;ibxpress.bpi;adortl.bpi;dbxcds.bpi;dbexpress.bpi;DbxCommonDriver.bpi;websnap.bpi;vclie.bpi;webdsnap.bpi;inet.bpi;inetdbbde.bpi;inetdbxpress.bpi;soaprtl.bpi;Rave75VCL.bpi;teeUI.bpi;tee.bpi;teedb.bpi;IndyCore.bpi;IndySystem.bpi;IndyProtocols.bpi;IntrawebDB_90_100.bpi;Intraweb_90_100.bpi;dclZipForged11.bpi;vclZipForged11.bpi;GR32_BDS2006.bpi;GR32_DSGN_BDS2006.bpi;Jcl.bpi;JclVcl.bpi;JvCoreD11R.bpi;JvSystemD11R.bpi;JvStdCtrlsD11R.bpi;JvAppFrmD11R.bpi;JvBandsD11R.bpi;JvDBD11R.bpi;JvDlgsD11R.bpi;JvBDED11R.bpi;JvCmpD11R.bpi;JvCryptD11R.bpi;JvCtrlsD11R.bpi;JvCustomD11R.bpi;JvDockingD11R.bpi;JvDotNetCtrlsD11R.bpi;JvEDID11R.bpi;JvGlobusD11R.bpi;JvHMID11R.bpi;JvInterpreterD11R.bpi;JvJansD11R.bpi;JvManagedThreadsD11R.bpi;JvMMD11R.bpi;JvNetD11R.bpi;JvPageCompsD11R.bpi;JvPluginD11R.bpi;JvPrintPreviewD11R.bpi;JvRuntimeDesignD11R.bpi;JvTimeFrameworkD11R.bpi;JvValidatorsD11R.bpi;JvWizardD11R.bpi;JvXPCtrlsD11R.bpi;VclSmp.bpi;CExceptionExpert11.bpi</PackageImports>
+    <BCC_wpar>false</BCC_wpar>
+    <IncludePath>$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\src;..\include;..</IncludePath>
+    <AllPackageLibs>rtl.lib;vcl.lib</AllPackageLibs>
+    <TLIB_PageSize>32</TLIB_PageSize>
+    <ILINK_LibraryPath>$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk</ILINK_LibraryPath>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Cfg_1)'!=''">
+    <BCC_OptimizeForSpeed>false</BCC_OptimizeForSpeed>
+    <DCC_Optimize>false</DCC_Optimize>
+    <DCC_DebugInfoInExe>true</DCC_DebugInfoInExe>
+    <Defines>_DEBUG;$(Defines)</Defines>
+    <ILINK_FullDebugInfo>true</ILINK_FullDebugInfo>
+    <BCC_InlineFunctionExpansion>false</BCC_InlineFunctionExpansion>
+    <ILINK_DisableIncrementalLinking>true</ILINK_DisableIncrementalLinking>
+    <BCC_UseRegisterVariables>None</BCC_UseRegisterVariables>
+    <DCC_Define>DEBUG</DCC_Define>
+    <BCC_DebugLineNumbers>true</BCC_DebugLineNumbers>
+    <IntermediateOutputDir>Debug</IntermediateOutputDir>
+    <TASM_DisplaySourceLines>true</TASM_DisplaySourceLines>
+    <BCC_StackFrames>true</BCC_StackFrames>
+    <BCC_DisableOptimizations>true</BCC_DisableOptimizations>
+    <ILINK_LibraryPath>$(BDS)\lib\debug;$(ILINK_LibraryPath)</ILINK_LibraryPath>
+    <TASM_Debugging>Full</TASM_Debugging>
+    <BCC_SourceDebuggingOn>true</BCC_SourceDebuggingOn>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Cfg_2)'!=''">
+    <Defines>NDEBUG;$(Defines)</Defines>
+    <IntermediateOutputDir>Release</IntermediateOutputDir>
+    <ILINK_LibraryPath>$(BDS)\lib\release;$(ILINK_LibraryPath)</ILINK_LibraryPath>
+    <TASM_Debugging>None</TASM_Debugging>
+  </PropertyGroup>
+  <ProjectExtensions>
+    <Borland.Personality>CPlusPlusBuilder.Personality</Borland.Personality>
+    <Borland.ProjectType>CppStaticLibrary</Borland.ProjectType>
+    <BorlandProject>
+<BorlandProject><CPlusPlusBuilder.Personality><VersionInfo><VersionInfo Name="IncludeVerInfo">False</VersionInfo><VersionInfo Name="AutoIncBuild">False</VersionInfo><VersionInfo Name="MajorVer">1</VersionInfo><VersionInfo Name="MinorVer">0</VersionInfo><VersionInfo Name="Release">0</VersionInfo><VersionInfo Name="Build">0</VersionInfo><VersionInfo Name="Debug">False</VersionInfo><VersionInfo Name="PreRelease">False</VersionInfo><VersionInfo Name="Special">False</VersionInfo><VersionInfo Name="Private">False</VersionInfo><VersionInfo Name="DLL">False</VersionInfo><VersionInfo Name="Locale">1033</VersionInfo><VersionInfo Name="CodePage">1252</VersionInfo></VersionInfo><VersionInfoKeys><VersionInfoKeys Name="CompanyName"></VersionInfoKeys><VersionInfoKeys Name="FileDescription"></VersionInfoKeys><VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys><VersionInfoKeys Name="InternalName"></VersionInfoKeys><VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys><VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys><VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys><VersionInfoKeys Name="ProductName"></VersionInfoKeys><VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys><VersionInfoKeys Name="Comments"></VersionInfoKeys></VersionInfoKeys><Debugging><Debugging Name="DebugSourceDirs"></Debugging></Debugging><Parameters><Parameters Name="RunParams"></Parameters><Parameters Name="Launcher"></Parameters><Parameters Name="UseLauncher">False</Parameters><Parameters Name="DebugCWD"></Parameters><Parameters Name="HostApplication"></Parameters><Parameters Name="RemoteHost"></Parameters><Parameters Name="RemotePath"></Parameters><Parameters Name="RemoteParams"></Parameters><Parameters Name="RemoteLauncher"></Parameters><Parameters Name="UseRemoteLauncher">False</Parameters><Parameters Name="RemoteCWD"></Parameters><Parameters Name="RemoteDebug">False</Parameters><Parameters Name="Debug Symbols Search Path"></Parameters><Parameters Name="LoadAllSymbols">True</Parameters><Parameters Name="LoadUnspecifiedSymbols">False</Parameters></Parameters><Excluded_Packages>
+      
+      
+      <Excluded_Packages Name="$(BDS)\bin\bcboffice2k100.bpl">CodeGear C++Builder Office 2000 Servers Package</Excluded_Packages>
+      <Excluded_Packages Name="$(BDS)\bin\bcbofficexp100.bpl">CodeGear C++Builder Office XP Servers Package</Excluded_Packages>
+    </Excluded_Packages><Linker><Linker Name="LibPrefix"></Linker><Linker Name="LibSuffix"></Linker><Linker Name="LibVersion"></Linker></Linker><ProjectProperties><ProjectProperties Name="AutoShowDeps">False</ProjectProperties><ProjectProperties Name="ManagePaths">True</ProjectProperties><ProjectProperties Name="VerifyPackages">True</ProjectProperties></ProjectProperties><HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Count">3</HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Item0">$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\src;..\include;..</HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Item1">$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\src;..\include;..</HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Item2">$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\src;..\src;..\include</HistoryLists_hlIncludePath></HistoryLists_hlIncludePath><HistoryLists_hlILINK_LibraryPath><HistoryLists_hlILINK_LibraryPath Name="Count">1</HistoryLists_hlILINK_LibraryPath><HistoryLists_hlILINK_LibraryPath Name="Item0">$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk</HistoryLists_hlILINK_LibraryPath></HistoryLists_hlILINK_LibraryPath><HistoryLists_hlDefines><HistoryLists_hlDefines Name="Count">1</HistoryLists_hlDefines><HistoryLists_hlDefines Name="Item0">NO_STRICT</HistoryLists_hlDefines></HistoryLists_hlDefines><HistoryLists_hlTLIB_PageSize><HistoryLists_hlTLIB_PageSize Name="Count">1</HistoryLists_hlTLIB_PageSize><HistoryLists_hlTLIB_PageSize Name="Item0">32</HistoryLists_hlTLIB_PageSize><HistoryLists_hlTLIB_PageSize Name="Item1">16</HistoryLists_hlTLIB_PageSize></HistoryLists_hlTLIB_PageSize></CPlusPlusBuilder.Personality></BorlandProject></BorlandProject>
+  </ProjectExtensions>
+  <Import Project="$(MSBuildBinPath)\Borland.Cpp.Targets" />
+  <ItemGroup>
+    <None Include="..\include\gtest\gtest-death-test.h">
+      <BuildOrder>3</BuildOrder>
+    </None>
+    <None Include="..\include\gtest\gtest-message.h">
+      <BuildOrder>4</BuildOrder>
+    </None>
+    <None Include="..\include\gtest\gtest-param-test.h">
+      <BuildOrder>5</BuildOrder>
+    </None>
+    <None Include="..\include\gtest\gtest-spi.h">
+      <BuildOrder>6</BuildOrder>
+    </None>
+    <None Include="..\include\gtest\gtest-test-part.h">
+      <BuildOrder>7</BuildOrder>
+    </None>
+    <None Include="..\include\gtest\gtest-typed-test.h">
+      <BuildOrder>8</BuildOrder>
+    </None>
+    <None Include="..\include\gtest\gtest.h">
+      <BuildOrder>0</BuildOrder>
+    </None>
+    <None Include="..\include\gtest\gtest_pred_impl.h">
+      <BuildOrder>1</BuildOrder>
+    </None>
+    <None Include="..\include\gtest\gtest_prod.h">
+      <BuildOrder>2</BuildOrder>
+    </None>
+    <None Include="..\include\gtest\internal\gtest-death-test-internal.h">
+      <BuildOrder>9</BuildOrder>
+    </None>
+    <None Include="..\include\gtest\internal\gtest-filepath.h">
+      <BuildOrder>10</BuildOrder>
+    </None>
+    <None Include="..\include\gtest\internal\gtest-internal.h">
+      <BuildOrder>11</BuildOrder>
+    </None>
+    <None Include="..\include\gtest\internal\gtest-linked_ptr.h">
+      <BuildOrder>12</BuildOrder>
+    </None>
+    <None Include="..\include\gtest\internal\gtest-param-util-generated.h">
+      <BuildOrder>14</BuildOrder>
+    </None>
+    <None Include="..\include\gtest\internal\gtest-param-util.h">
+      <BuildOrder>13</BuildOrder>
+    </None>
+    <None Include="..\include\gtest\internal\gtest-port.h">
+      <BuildOrder>15</BuildOrder>
+    </None>
+    <None Include="..\include\gtest\internal\gtest-string.h">
+      <BuildOrder>16</BuildOrder>
+    </None>
+    <None Include="..\include\gtest\internal\gtest-type-util.h">
+      <BuildOrder>17</BuildOrder>
+    </None>
+    <CppCompile Include="gtest_all.cc">
+      <BuildOrder>18</BuildOrder>
+    </CppCompile>
+    <BuildConfiguration Include="Debug">
+      <Key>Cfg_1</Key>
+    </BuildConfiguration>
+    <BuildConfiguration Include="Release">
+      <Key>Cfg_2</Key>
+    </BuildConfiguration>
+  </ItemGroup>
+</Project>
\ No newline at end of file
diff --git a/google-breakpad/src/testing/gtest/codegear/gtest.groupproj b/google-breakpad/src/testing/gtest/codegear/gtest.groupproj
new file mode 100644
index 0000000..faf31ca
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/codegear/gtest.groupproj
@@ -0,0 +1,54 @@
+﻿<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <ProjectGuid>{c1d923e0-6cba-4332-9b6f-3420acbf5091}</ProjectGuid>
+  </PropertyGroup>
+  <ItemGroup />
+  <ItemGroup>
+    <Projects Include="gtest.cbproj" />
+    <Projects Include="gtest_main.cbproj" />
+    <Projects Include="gtest_unittest.cbproj" />
+  </ItemGroup>
+  <ProjectExtensions>
+    <Borland.Personality>Default.Personality</Borland.Personality>
+    <Borland.ProjectType />
+    <BorlandProject>
+<BorlandProject xmlns=""><Default.Personality></Default.Personality></BorlandProject></BorlandProject>
+  </ProjectExtensions>
+  <Target Name="gtest">
+    <MSBuild Projects="gtest.cbproj" Targets="" />
+  </Target>
+  <Target Name="gtest:Clean">
+    <MSBuild Projects="gtest.cbproj" Targets="Clean" />
+  </Target>
+  <Target Name="gtest:Make">
+    <MSBuild Projects="gtest.cbproj" Targets="Make" />
+  </Target>
+  <Target Name="gtest_main">
+    <MSBuild Projects="gtest_main.cbproj" Targets="" />
+  </Target>
+  <Target Name="gtest_main:Clean">
+    <MSBuild Projects="gtest_main.cbproj" Targets="Clean" />
+  </Target>
+  <Target Name="gtest_main:Make">
+    <MSBuild Projects="gtest_main.cbproj" Targets="Make" />
+  </Target>
+  <Target Name="gtest_unittest">
+    <MSBuild Projects="gtest_unittest.cbproj" Targets="" />
+  </Target>
+  <Target Name="gtest_unittest:Clean">
+    <MSBuild Projects="gtest_unittest.cbproj" Targets="Clean" />
+  </Target>
+  <Target Name="gtest_unittest:Make">
+    <MSBuild Projects="gtest_unittest.cbproj" Targets="Make" />
+  </Target>
+  <Target Name="Build">
+    <CallTarget Targets="gtest;gtest_main;gtest_unittest" />
+  </Target>
+  <Target Name="Clean">
+    <CallTarget Targets="gtest:Clean;gtest_main:Clean;gtest_unittest:Clean" />
+  </Target>
+  <Target Name="Make">
+    <CallTarget Targets="gtest:Make;gtest_main:Make;gtest_unittest:Make" />
+  </Target>
+  <Import Condition="Exists('$(MSBuildBinPath)\Borland.Group.Targets')" Project="$(MSBuildBinPath)\Borland.Group.Targets" />
+</Project>
\ No newline at end of file
diff --git a/google-breakpad/src/testing/gtest/codegear/gtest_all.cc b/google-breakpad/src/testing/gtest/codegear/gtest_all.cc
new file mode 100644
index 0000000..121b2d8
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/codegear/gtest_all.cc
@@ -0,0 +1,38 @@
+// Copyright 2009, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: Josh Kelley (joshkel@gmail.com)
+//
+// Google C++ Testing Framework (Google Test)
+//
+// C++Builder's IDE cannot build a static library from files with hyphens
+// in their name.  See http://qc.codegear.com/wc/qcmain.aspx?d=70977 .
+// This file serves as a workaround.
+
+#include "src/gtest-all.cc"
diff --git a/google-breakpad/src/testing/gtest/codegear/gtest_link.cc b/google-breakpad/src/testing/gtest/codegear/gtest_link.cc
new file mode 100644
index 0000000..918eccd
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/codegear/gtest_link.cc
@@ -0,0 +1,40 @@
+// Copyright 2009, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: Josh Kelley (joshkel@gmail.com)
+//
+// Google C++ Testing Framework (Google Test)
+//
+// Links gtest.lib and gtest_main.lib into the current project in C++Builder.
+// This means that these libraries can't be renamed, but it's the only way to
+// ensure that Debug versus Release test builds are linked against the
+// appropriate Debug or Release build of the libraries.
+
+#pragma link "gtest.lib"
+#pragma link "gtest_main.lib"
diff --git a/google-breakpad/src/testing/gtest/codegear/gtest_main.cbproj b/google-breakpad/src/testing/gtest/codegear/gtest_main.cbproj
new file mode 100644
index 0000000..d76ce13
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/codegear/gtest_main.cbproj
@@ -0,0 +1,82 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <ProjectGuid>{bca37a72-5b07-46cf-b44e-89f8e06451a2}</ProjectGuid>
+    <Config Condition="'$(Config)'==''">Release</Config>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
+    <Base>true</Base>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_1)'!=''">
+    <Base>true</Base>
+    <Cfg_1>true</Cfg_1>
+    <CfgParent>Base</CfgParent>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_2)'!=''">
+    <Base>true</Base>
+    <Cfg_2>true</Cfg_2>
+    <CfgParent>Base</CfgParent>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Base)'!=''">
+    <BCC_OptimizeForSpeed>true</BCC_OptimizeForSpeed>
+    <OutputExt>lib</OutputExt>
+    <DCC_CBuilderOutput>JPHNE</DCC_CBuilderOutput>
+    <Defines>NO_STRICT</Defines>
+    <DynamicRTL>true</DynamicRTL>
+    <UsePackages>true</UsePackages>
+    <ProjectType>CppStaticLibrary</ProjectType>
+    <BCC_CPPCompileAlways>true</BCC_CPPCompileAlways>
+    <PackageImports>rtl.bpi;vcl.bpi;bcbie.bpi;vclx.bpi;vclactnband.bpi;xmlrtl.bpi;bcbsmp.bpi;dbrtl.bpi;vcldb.bpi;bdertl.bpi;vcldbx.bpi;dsnap.bpi;dsnapcon.bpi;vclib.bpi;ibxpress.bpi;adortl.bpi;dbxcds.bpi;dbexpress.bpi;DbxCommonDriver.bpi;websnap.bpi;vclie.bpi;webdsnap.bpi;inet.bpi;inetdbbde.bpi;inetdbxpress.bpi;soaprtl.bpi;Rave75VCL.bpi;teeUI.bpi;tee.bpi;teedb.bpi;IndyCore.bpi;IndySystem.bpi;IndyProtocols.bpi;IntrawebDB_90_100.bpi;Intraweb_90_100.bpi;dclZipForged11.bpi;vclZipForged11.bpi;GR32_BDS2006.bpi;GR32_DSGN_BDS2006.bpi;Jcl.bpi;JclVcl.bpi;JvCoreD11R.bpi;JvSystemD11R.bpi;JvStdCtrlsD11R.bpi;JvAppFrmD11R.bpi;JvBandsD11R.bpi;JvDBD11R.bpi;JvDlgsD11R.bpi;JvBDED11R.bpi;JvCmpD11R.bpi;JvCryptD11R.bpi;JvCtrlsD11R.bpi;JvCustomD11R.bpi;JvDockingD11R.bpi;JvDotNetCtrlsD11R.bpi;JvEDID11R.bpi;JvGlobusD11R.bpi;JvHMID11R.bpi;JvInterpreterD11R.bpi;JvJansD11R.bpi;JvManagedThreadsD11R.bpi;JvMMD11R.bpi;JvNetD11R.bpi;JvPageCompsD11R.bpi;JvPluginD11R.bpi;JvPrintPreviewD11R.bpi;JvRuntimeDesignD11R.bpi;JvTimeFrameworkD11R.bpi;JvValidatorsD11R.bpi;JvWizardD11R.bpi;JvXPCtrlsD11R.bpi;VclSmp.bpi;CExceptionExpert11.bpi</PackageImports>
+    <BCC_wpar>false</BCC_wpar>
+    <IncludePath>$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\src;..\include;..</IncludePath>
+    <AllPackageLibs>rtl.lib;vcl.lib</AllPackageLibs>
+    <TLIB_PageSize>32</TLIB_PageSize>
+    <ILINK_LibraryPath>$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk</ILINK_LibraryPath>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Cfg_1)'!=''">
+    <BCC_OptimizeForSpeed>false</BCC_OptimizeForSpeed>
+    <DCC_Optimize>false</DCC_Optimize>
+    <DCC_DebugInfoInExe>true</DCC_DebugInfoInExe>
+    <Defines>_DEBUG;$(Defines)</Defines>
+    <ILINK_FullDebugInfo>true</ILINK_FullDebugInfo>
+    <BCC_InlineFunctionExpansion>false</BCC_InlineFunctionExpansion>
+    <ILINK_DisableIncrementalLinking>true</ILINK_DisableIncrementalLinking>
+    <BCC_UseRegisterVariables>None</BCC_UseRegisterVariables>
+    <DCC_Define>DEBUG</DCC_Define>
+    <BCC_DebugLineNumbers>true</BCC_DebugLineNumbers>
+    <IntermediateOutputDir>Debug</IntermediateOutputDir>
+    <TASM_DisplaySourceLines>true</TASM_DisplaySourceLines>
+    <BCC_StackFrames>true</BCC_StackFrames>
+    <BCC_DisableOptimizations>true</BCC_DisableOptimizations>
+    <ILINK_LibraryPath>$(BDS)\lib\debug;$(ILINK_LibraryPath)</ILINK_LibraryPath>
+    <TASM_Debugging>Full</TASM_Debugging>
+    <BCC_SourceDebuggingOn>true</BCC_SourceDebuggingOn>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Cfg_2)'!=''">
+    <Defines>NDEBUG;$(Defines)</Defines>
+    <IntermediateOutputDir>Release</IntermediateOutputDir>
+    <ILINK_LibraryPath>$(BDS)\lib\release;$(ILINK_LibraryPath)</ILINK_LibraryPath>
+    <TASM_Debugging>None</TASM_Debugging>
+  </PropertyGroup>
+  <ProjectExtensions>
+    <Borland.Personality>CPlusPlusBuilder.Personality</Borland.Personality>
+    <Borland.ProjectType>CppStaticLibrary</Borland.ProjectType>
+    <BorlandProject>
+<BorlandProject><CPlusPlusBuilder.Personality><VersionInfo><VersionInfo Name="IncludeVerInfo">False</VersionInfo><VersionInfo Name="AutoIncBuild">False</VersionInfo><VersionInfo Name="MajorVer">1</VersionInfo><VersionInfo Name="MinorVer">0</VersionInfo><VersionInfo Name="Release">0</VersionInfo><VersionInfo Name="Build">0</VersionInfo><VersionInfo Name="Debug">False</VersionInfo><VersionInfo Name="PreRelease">False</VersionInfo><VersionInfo Name="Special">False</VersionInfo><VersionInfo Name="Private">False</VersionInfo><VersionInfo Name="DLL">False</VersionInfo><VersionInfo Name="Locale">1033</VersionInfo><VersionInfo Name="CodePage">1252</VersionInfo></VersionInfo><VersionInfoKeys><VersionInfoKeys Name="CompanyName"></VersionInfoKeys><VersionInfoKeys Name="FileDescription"></VersionInfoKeys><VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys><VersionInfoKeys Name="InternalName"></VersionInfoKeys><VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys><VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys><VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys><VersionInfoKeys Name="ProductName"></VersionInfoKeys><VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys><VersionInfoKeys Name="Comments"></VersionInfoKeys></VersionInfoKeys><Debugging><Debugging Name="DebugSourceDirs"></Debugging></Debugging><Parameters><Parameters Name="RunParams"></Parameters><Parameters Name="Launcher"></Parameters><Parameters Name="UseLauncher">False</Parameters><Parameters Name="DebugCWD"></Parameters><Parameters Name="HostApplication"></Parameters><Parameters Name="RemoteHost"></Parameters><Parameters Name="RemotePath"></Parameters><Parameters Name="RemoteParams"></Parameters><Parameters Name="RemoteLauncher"></Parameters><Parameters Name="UseRemoteLauncher">False</Parameters><Parameters Name="RemoteCWD"></Parameters><Parameters Name="RemoteDebug">False</Parameters><Parameters Name="Debug Symbols Search Path"></Parameters><Parameters Name="LoadAllSymbols">True</Parameters><Parameters Name="LoadUnspecifiedSymbols">False</Parameters></Parameters><Excluded_Packages>
+      <Excluded_Packages Name="$(BDS)\bin\bcboffice2k100.bpl">CodeGear C++Builder Office 2000 Servers Package</Excluded_Packages>
+      <Excluded_Packages Name="$(BDS)\bin\bcbofficexp100.bpl">CodeGear C++Builder Office XP Servers Package</Excluded_Packages>
+    </Excluded_Packages><Linker><Linker Name="LibPrefix"></Linker><Linker Name="LibSuffix"></Linker><Linker Name="LibVersion"></Linker></Linker><ProjectProperties><ProjectProperties Name="AutoShowDeps">False</ProjectProperties><ProjectProperties Name="ManagePaths">True</ProjectProperties><ProjectProperties Name="VerifyPackages">True</ProjectProperties></ProjectProperties><HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Count">3</HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Item0">$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\src;..\include;..</HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Item1">$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\src;..\include;..</HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Item2">$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\src;..\src;..\include</HistoryLists_hlIncludePath></HistoryLists_hlIncludePath><HistoryLists_hlILINK_LibraryPath><HistoryLists_hlILINK_LibraryPath Name="Count">1</HistoryLists_hlILINK_LibraryPath><HistoryLists_hlILINK_LibraryPath Name="Item0">$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk</HistoryLists_hlILINK_LibraryPath></HistoryLists_hlILINK_LibraryPath><HistoryLists_hlDefines><HistoryLists_hlDefines Name="Count">1</HistoryLists_hlDefines><HistoryLists_hlDefines Name="Item0">NO_STRICT</HistoryLists_hlDefines></HistoryLists_hlDefines><HistoryLists_hlTLIB_PageSize><HistoryLists_hlTLIB_PageSize Name="Count">1</HistoryLists_hlTLIB_PageSize><HistoryLists_hlTLIB_PageSize Name="Item0">32</HistoryLists_hlTLIB_PageSize><HistoryLists_hlTLIB_PageSize Name="Item1">16</HistoryLists_hlTLIB_PageSize></HistoryLists_hlTLIB_PageSize></CPlusPlusBuilder.Personality></BorlandProject></BorlandProject>
+  </ProjectExtensions>
+  <Import Project="$(MSBuildBinPath)\Borland.Cpp.Targets" />
+  <ItemGroup>
+    <CppCompile Include="..\src\gtest_main.cc">
+      <BuildOrder>0</BuildOrder>
+    </CppCompile>
+    <BuildConfiguration Include="Debug">
+      <Key>Cfg_1</Key>
+    </BuildConfiguration>
+    <BuildConfiguration Include="Release">
+      <Key>Cfg_2</Key>
+    </BuildConfiguration>
+  </ItemGroup>
+</Project>
diff --git a/google-breakpad/src/testing/gtest/codegear/gtest_unittest.cbproj b/google-breakpad/src/testing/gtest/codegear/gtest_unittest.cbproj
new file mode 100644
index 0000000..dc5db8e
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/codegear/gtest_unittest.cbproj
@@ -0,0 +1,88 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <ProjectGuid>{eea63393-5ac5-4b9c-8909-d75fef2daa41}</ProjectGuid>
+    <Config Condition="'$(Config)'==''">Release</Config>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
+    <Base>true</Base>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_1)'!=''">
+    <Base>true</Base>
+    <Cfg_1>true</Cfg_1>
+    <CfgParent>Base</CfgParent>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_2)'!=''">
+    <Base>true</Base>
+    <Cfg_2>true</Cfg_2>
+    <CfgParent>Base</CfgParent>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Base)'!=''">
+    <OutputExt>exe</OutputExt>
+    <BCC_OptimizeForSpeed>true</BCC_OptimizeForSpeed>
+    <Defines>NO_STRICT</Defines>
+    <DCC_CBuilderOutput>JPHNE</DCC_CBuilderOutput>
+    <DynamicRTL>true</DynamicRTL>
+    <ILINK_ObjectSearchPath>..\test</ILINK_ObjectSearchPath>
+    <UsePackages>true</UsePackages>
+    <ProjectType>CppConsoleApplication</ProjectType>
+    <NoVCL>true</NoVCL>
+    <BCC_CPPCompileAlways>true</BCC_CPPCompileAlways>
+    <PackageImports>rtl.bpi;vcl.bpi;bcbie.bpi;vclx.bpi;vclactnband.bpi;xmlrtl.bpi;bcbsmp.bpi;dbrtl.bpi;vcldb.bpi;bdertl.bpi;vcldbx.bpi;dsnap.bpi;dsnapcon.bpi;vclib.bpi;ibxpress.bpi;adortl.bpi;dbxcds.bpi;dbexpress.bpi;DbxCommonDriver.bpi;websnap.bpi;vclie.bpi;webdsnap.bpi;inet.bpi;inetdbbde.bpi;inetdbxpress.bpi;soaprtl.bpi;Rave75VCL.bpi;teeUI.bpi;tee.bpi;teedb.bpi;IndyCore.bpi;IndySystem.bpi;IndyProtocols.bpi;IntrawebDB_90_100.bpi;Intraweb_90_100.bpi;Jcl.bpi;JclVcl.bpi;JvCoreD11R.bpi;JvSystemD11R.bpi;JvStdCtrlsD11R.bpi;JvAppFrmD11R.bpi;JvBandsD11R.bpi;JvDBD11R.bpi;JvDlgsD11R.bpi;JvBDED11R.bpi;JvCmpD11R.bpi;JvCryptD11R.bpi;JvCtrlsD11R.bpi;JvCustomD11R.bpi;JvDockingD11R.bpi;JvDotNetCtrlsD11R.bpi;JvEDID11R.bpi;JvGlobusD11R.bpi;JvHMID11R.bpi;JvInterpreterD11R.bpi;JvJansD11R.bpi;JvManagedThreadsD11R.bpi;JvMMD11R.bpi;JvNetD11R.bpi;JvPageCompsD11R.bpi;JvPluginD11R.bpi;JvPrintPreviewD11R.bpi;JvRuntimeDesignD11R.bpi;JvTimeFrameworkD11R.bpi;JvValidatorsD11R.bpi;JvWizardD11R.bpi;JvXPCtrlsD11R.bpi;VclSmp.bpi</PackageImports>
+    <BCC_wpar>false</BCC_wpar>
+    <IncludePath>$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\include;..\test;..</IncludePath>
+    <ILINK_LibraryPath>$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk;..\test</ILINK_LibraryPath>
+    <Multithreaded>true</Multithreaded>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Cfg_1)'!=''">
+    <BCC_OptimizeForSpeed>false</BCC_OptimizeForSpeed>
+    <DCC_Optimize>false</DCC_Optimize>
+    <DCC_DebugInfoInExe>true</DCC_DebugInfoInExe>
+    <Defines>_DEBUG;$(Defines)</Defines>
+    <ILINK_FullDebugInfo>true</ILINK_FullDebugInfo>
+    <BCC_InlineFunctionExpansion>false</BCC_InlineFunctionExpansion>
+    <ILINK_DisableIncrementalLinking>true</ILINK_DisableIncrementalLinking>
+    <BCC_UseRegisterVariables>None</BCC_UseRegisterVariables>
+    <DCC_Define>DEBUG</DCC_Define>
+    <BCC_DebugLineNumbers>true</BCC_DebugLineNumbers>
+    <IntermediateOutputDir>Debug</IntermediateOutputDir>
+    <TASM_DisplaySourceLines>true</TASM_DisplaySourceLines>
+    <BCC_StackFrames>true</BCC_StackFrames>
+    <BCC_DisableOptimizations>true</BCC_DisableOptimizations>
+    <ILINK_LibraryPath>$(BDS)\lib\debug;$(ILINK_LibraryPath)</ILINK_LibraryPath>
+    <TASM_Debugging>Full</TASM_Debugging>
+    <BCC_SourceDebuggingOn>true</BCC_SourceDebuggingOn>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Cfg_2)'!=''">
+    <Defines>NDEBUG;$(Defines)</Defines>
+    <IntermediateOutputDir>Release</IntermediateOutputDir>
+    <ILINK_LibraryPath>$(BDS)\lib\release;$(ILINK_LibraryPath)</ILINK_LibraryPath>
+    <TASM_Debugging>None</TASM_Debugging>
+  </PropertyGroup>
+  <ProjectExtensions>
+    <Borland.Personality>CPlusPlusBuilder.Personality</Borland.Personality>
+    <Borland.ProjectType>CppConsoleApplication</Borland.ProjectType>
+    <BorlandProject>
+<BorlandProject><CPlusPlusBuilder.Personality><VersionInfo><VersionInfo Name="IncludeVerInfo">False</VersionInfo><VersionInfo Name="AutoIncBuild">False</VersionInfo><VersionInfo Name="MajorVer">1</VersionInfo><VersionInfo Name="MinorVer">0</VersionInfo><VersionInfo Name="Release">0</VersionInfo><VersionInfo Name="Build">0</VersionInfo><VersionInfo Name="Debug">False</VersionInfo><VersionInfo Name="PreRelease">False</VersionInfo><VersionInfo Name="Special">False</VersionInfo><VersionInfo Name="Private">False</VersionInfo><VersionInfo Name="DLL">False</VersionInfo><VersionInfo Name="Locale">1033</VersionInfo><VersionInfo Name="CodePage">1252</VersionInfo></VersionInfo><VersionInfoKeys><VersionInfoKeys Name="CompanyName"></VersionInfoKeys><VersionInfoKeys Name="FileDescription"></VersionInfoKeys><VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys><VersionInfoKeys Name="InternalName"></VersionInfoKeys><VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys><VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys><VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys><VersionInfoKeys Name="ProductName"></VersionInfoKeys><VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys><VersionInfoKeys Name="Comments"></VersionInfoKeys></VersionInfoKeys><Debugging><Debugging Name="DebugSourceDirs"></Debugging></Debugging><Parameters><Parameters Name="RunParams"></Parameters><Parameters Name="Launcher"></Parameters><Parameters Name="UseLauncher">False</Parameters><Parameters Name="DebugCWD"></Parameters><Parameters Name="HostApplication"></Parameters><Parameters Name="RemoteHost"></Parameters><Parameters Name="RemotePath"></Parameters><Parameters Name="RemoteParams"></Parameters><Parameters Name="RemoteLauncher"></Parameters><Parameters Name="UseRemoteLauncher">False</Parameters><Parameters Name="RemoteCWD"></Parameters><Parameters Name="RemoteDebug">False</Parameters><Parameters Name="Debug Symbols Search Path"></Parameters><Parameters Name="LoadAllSymbols">True</Parameters><Parameters Name="LoadUnspecifiedSymbols">False</Parameters></Parameters><Excluded_Packages>
+      
+      
+      <Excluded_Packages Name="$(BDS)\bin\bcboffice2k100.bpl">CodeGear C++Builder Office 2000 Servers Package</Excluded_Packages>
+      <Excluded_Packages Name="$(BDS)\bin\bcbofficexp100.bpl">CodeGear C++Builder Office XP Servers Package</Excluded_Packages>
+    </Excluded_Packages><Linker><Linker Name="LibPrefix"></Linker><Linker Name="LibSuffix"></Linker><Linker Name="LibVersion"></Linker></Linker><ProjectProperties><ProjectProperties Name="AutoShowDeps">False</ProjectProperties><ProjectProperties Name="ManagePaths">True</ProjectProperties><ProjectProperties Name="VerifyPackages">True</ProjectProperties></ProjectProperties><HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Count">3</HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Item0">$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\include;..\test;..</HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Item1">$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\include;..\test</HistoryLists_hlIncludePath><HistoryLists_hlIncludePath Name="Item2">$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\include</HistoryLists_hlIncludePath></HistoryLists_hlIncludePath><HistoryLists_hlILINK_LibraryPath><HistoryLists_hlILINK_LibraryPath Name="Count">1</HistoryLists_hlILINK_LibraryPath><HistoryLists_hlILINK_LibraryPath Name="Item0">$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk;..\test</HistoryLists_hlILINK_LibraryPath><HistoryLists_hlILINK_LibraryPath Name="Item1">$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk;..\test</HistoryLists_hlILINK_LibraryPath><HistoryLists_hlILINK_LibraryPath Name="Item2">$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk;$(OUTPUTDIR);..\test</HistoryLists_hlILINK_LibraryPath></HistoryLists_hlILINK_LibraryPath><HistoryLists_hlDefines><HistoryLists_hlDefines Name="Count">2</HistoryLists_hlDefines><HistoryLists_hlDefines Name="Item0">NO_STRICT</HistoryLists_hlDefines><HistoryLists_hlDefines Name="Item1">STRICT</HistoryLists_hlDefines></HistoryLists_hlDefines></CPlusPlusBuilder.Personality></BorlandProject></BorlandProject>
+  </ProjectExtensions>
+  <Import Project="$(MSBuildBinPath)\Borland.Cpp.Targets" />
+  <ItemGroup>
+    <CppCompile Include="..\test\gtest_unittest.cc">
+      <BuildOrder>0</BuildOrder>
+    </CppCompile>
+    <CppCompile Include="gtest_link.cc">
+      <BuildOrder>1</BuildOrder>
+    </CppCompile>
+    <BuildConfiguration Include="Debug">
+      <Key>Cfg_1</Key>
+    </BuildConfiguration>
+    <BuildConfiguration Include="Release">
+      <Key>Cfg_2</Key>
+    </BuildConfiguration>
+  </ItemGroup>
+</Project>
\ No newline at end of file
diff --git a/google-breakpad/src/testing/gtest/configure.ac b/google-breakpad/src/testing/gtest/configure.ac
new file mode 100644
index 0000000..37b298e
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/configure.ac
@@ -0,0 +1,68 @@
+m4_include(m4/acx_pthread.m4)
+
+# At this point, the Xcode project assumes the version string will be three
+# integers separated by periods and surrounded by square brackets (e.g.
+# "[1.0.1]"). It also asumes that there won't be any closing parenthesis
+# between "AC_INIT(" and the closing ")" including comments and strings.
+AC_INIT([Google C++ Testing Framework],
+        [1.6.0],
+        [googletestframework@googlegroups.com],
+        [gtest])
+
+# Provide various options to initialize the Autoconf and configure processes.
+AC_PREREQ([2.59])
+AC_CONFIG_SRCDIR([./LICENSE])
+AC_CONFIG_MACRO_DIR([m4])
+AC_CONFIG_AUX_DIR([build-aux])
+AC_CONFIG_HEADERS([build-aux/config.h])
+AC_CONFIG_FILES([Makefile])
+AC_CONFIG_FILES([scripts/gtest-config], [chmod +x scripts/gtest-config])
+
+# Initialize Automake with various options. We require at least v1.9, prevent
+# pedantic complaints about package files, and enable various distribution
+# targets.
+AM_INIT_AUTOMAKE([1.9 dist-bzip2 dist-zip foreign subdir-objects])
+
+# Check for programs used in building Google Test.
+AC_PROG_CC
+AC_PROG_CXX
+AC_LANG([C++])
+AC_PROG_LIBTOOL
+
+# TODO(chandlerc@google.com): Currently we aren't running the Python tests
+# against the interpreter detected by AM_PATH_PYTHON, and so we condition
+# HAVE_PYTHON by requiring "python" to be in the PATH, and that interpreter's
+# version to be >= 2.3. This will allow the scripts to use a "/usr/bin/env"
+# hashbang.
+PYTHON=  # We *do not* allow the user to specify a python interpreter
+AC_PATH_PROG([PYTHON],[python],[:])
+AS_IF([test "$PYTHON" != ":"],
+      [AM_PYTHON_CHECK_VERSION([$PYTHON],[2.3],[:],[PYTHON=":"])])
+AM_CONDITIONAL([HAVE_PYTHON],[test "$PYTHON" != ":"])
+
+# Configure pthreads.
+AC_ARG_WITH([pthreads],
+            [AS_HELP_STRING([--with-pthreads],
+               [use pthreads (default is yes)])],
+            [with_pthreads=$withval],
+            [with_pthreads=check])
+
+have_pthreads=no
+AS_IF([test "x$with_pthreads" != "xno"],
+      [ACX_PTHREAD(
+        [],
+        [AS_IF([test "x$with_pthreads" != "xcheck"],
+               [AC_MSG_FAILURE(
+                 [--with-pthreads was specified, but unable to be used])])])
+       have_pthreads="$acx_pthread_ok"])
+AM_CONDITIONAL([HAVE_PTHREADS],[test "x$have_pthreads" == "xyes"])
+AC_SUBST(PTHREAD_CFLAGS)
+AC_SUBST(PTHREAD_LIBS)
+
+# TODO(chandlerc@google.com) Check for the necessary system headers.
+
+# TODO(chandlerc@google.com) Check the types, structures, and other compiler
+# and architecture characteristics.
+
+# Output the generated files. No further autoconf macros may be used.
+AC_OUTPUT
diff --git a/google-breakpad/src/testing/gtest/include/gtest/gtest-death-test.h b/google-breakpad/src/testing/gtest/include/gtest/gtest-death-test.h
new file mode 100644
index 0000000..957a69c
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/include/gtest/gtest-death-test.h
@@ -0,0 +1,294 @@
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+//
+// The Google C++ Testing Framework (Google Test)
+//
+// This header file defines the public API for death tests.  It is
+// #included by gtest.h so a user doesn't need to include this
+// directly.
+
+#ifndef GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_
+#define GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_
+
+#include "gtest/internal/gtest-death-test-internal.h"
+
+namespace testing {
+
+// This flag controls the style of death tests.  Valid values are "threadsafe",
+// meaning that the death test child process will re-execute the test binary
+// from the start, running only a single death test, or "fast",
+// meaning that the child process will execute the test logic immediately
+// after forking.
+GTEST_DECLARE_string_(death_test_style);
+
+#if GTEST_HAS_DEATH_TEST
+
+namespace internal {
+
+// Returns a Boolean value indicating whether the caller is currently
+// executing in the context of the death test child process.  Tools such as
+// Valgrind heap checkers may need this to modify their behavior in death
+// tests.  IMPORTANT: This is an internal utility.  Using it may break the
+// implementation of death tests.  User code MUST NOT use it.
+GTEST_API_ bool InDeathTestChild();
+
+}  // namespace internal
+
+// The following macros are useful for writing death tests.
+
+// Here's what happens when an ASSERT_DEATH* or EXPECT_DEATH* is
+// executed:
+//
+//   1. It generates a warning if there is more than one active
+//   thread.  This is because it's safe to fork() or clone() only
+//   when there is a single thread.
+//
+//   2. The parent process clone()s a sub-process and runs the death
+//   test in it; the sub-process exits with code 0 at the end of the
+//   death test, if it hasn't exited already.
+//
+//   3. The parent process waits for the sub-process to terminate.
+//
+//   4. The parent process checks the exit code and error message of
+//   the sub-process.
+//
+// Examples:
+//
+//   ASSERT_DEATH(server.SendMessage(56, "Hello"), "Invalid port number");
+//   for (int i = 0; i < 5; i++) {
+//     EXPECT_DEATH(server.ProcessRequest(i),
+//                  "Invalid request .* in ProcessRequest()")
+//                  << "Failed to die on request " << i;
+//   }
+//
+//   ASSERT_EXIT(server.ExitNow(), ::testing::ExitedWithCode(0), "Exiting");
+//
+//   bool KilledBySIGHUP(int exit_code) {
+//     return WIFSIGNALED(exit_code) && WTERMSIG(exit_code) == SIGHUP;
+//   }
+//
+//   ASSERT_EXIT(client.HangUpServer(), KilledBySIGHUP, "Hanging up!");
+//
+// On the regular expressions used in death tests:
+//
+//   On POSIX-compliant systems (*nix), we use the <regex.h> library,
+//   which uses the POSIX extended regex syntax.
+//
+//   On other platforms (e.g. Windows), we only support a simple regex
+//   syntax implemented as part of Google Test.  This limited
+//   implementation should be enough most of the time when writing
+//   death tests; though it lacks many features you can find in PCRE
+//   or POSIX extended regex syntax.  For example, we don't support
+//   union ("x|y"), grouping ("(xy)"), brackets ("[xy]"), and
+//   repetition count ("x{5,7}"), among others.
+//
+//   Below is the syntax that we do support.  We chose it to be a
+//   subset of both PCRE and POSIX extended regex, so it's easy to
+//   learn wherever you come from.  In the following: 'A' denotes a
+//   literal character, period (.), or a single \\ escape sequence;
+//   'x' and 'y' denote regular expressions; 'm' and 'n' are for
+//   natural numbers.
+//
+//     c     matches any literal character c
+//     \\d   matches any decimal digit
+//     \\D   matches any character that's not a decimal digit
+//     \\f   matches \f
+//     \\n   matches \n
+//     \\r   matches \r
+//     \\s   matches any ASCII whitespace, including \n
+//     \\S   matches any character that's not a whitespace
+//     \\t   matches \t
+//     \\v   matches \v
+//     \\w   matches any letter, _, or decimal digit
+//     \\W   matches any character that \\w doesn't match
+//     \\c   matches any literal character c, which must be a punctuation
+//     .     matches any single character except \n
+//     A?    matches 0 or 1 occurrences of A
+//     A*    matches 0 or many occurrences of A
+//     A+    matches 1 or many occurrences of A
+//     ^     matches the beginning of a string (not that of each line)
+//     $     matches the end of a string (not that of each line)
+//     xy    matches x followed by y
+//
+//   If you accidentally use PCRE or POSIX extended regex features
+//   not implemented by us, you will get a run-time failure.  In that
+//   case, please try to rewrite your regular expression within the
+//   above syntax.
+//
+//   This implementation is *not* meant to be as highly tuned or robust
+//   as a compiled regex library, but should perform well enough for a
+//   death test, which already incurs significant overhead by launching
+//   a child process.
+//
+// Known caveats:
+//
+//   A "threadsafe" style death test obtains the path to the test
+//   program from argv[0] and re-executes it in the sub-process.  For
+//   simplicity, the current implementation doesn't search the PATH
+//   when launching the sub-process.  This means that the user must
+//   invoke the test program via a path that contains at least one
+//   path separator (e.g. path/to/foo_test and
+//   /absolute/path/to/bar_test are fine, but foo_test is not).  This
+//   is rarely a problem as people usually don't put the test binary
+//   directory in PATH.
+//
+// TODO(wan@google.com): make thread-safe death tests search the PATH.
+
+// Asserts that a given statement causes the program to exit, with an
+// integer exit status that satisfies predicate, and emitting error output
+// that matches regex.
+# define ASSERT_EXIT(statement, predicate, regex) \
+    GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_)
+
+// Like ASSERT_EXIT, but continues on to successive tests in the
+// test case, if any:
+# define EXPECT_EXIT(statement, predicate, regex) \
+    GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_)
+
+// Asserts that a given statement causes the program to exit, either by
+// explicitly exiting with a nonzero exit code or being killed by a
+// signal, and emitting error output that matches regex.
+# define ASSERT_DEATH(statement, regex) \
+    ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
+
+// Like ASSERT_DEATH, but continues on to successive tests in the
+// test case, if any:
+# define EXPECT_DEATH(statement, regex) \
+    EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
+
+// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*:
+
+// Tests that an exit code describes a normal exit with a given exit code.
+class GTEST_API_ ExitedWithCode {
+ public:
+  explicit ExitedWithCode(int exit_code);
+  bool operator()(int exit_status) const;
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ExitedWithCode& other);
+
+  const int exit_code_;
+};
+
+# if !GTEST_OS_WINDOWS
+// Tests that an exit code describes an exit due to termination by a
+// given signal.
+class GTEST_API_ KilledBySignal {
+ public:
+  explicit KilledBySignal(int signum);
+  bool operator()(int exit_status) const;
+ private:
+  const int signum_;
+};
+# endif  // !GTEST_OS_WINDOWS
+
+// EXPECT_DEBUG_DEATH asserts that the given statements die in debug mode.
+// The death testing framework causes this to have interesting semantics,
+// since the sideeffects of the call are only visible in opt mode, and not
+// in debug mode.
+//
+// In practice, this can be used to test functions that utilize the
+// LOG(DFATAL) macro using the following style:
+//
+// int DieInDebugOr12(int* sideeffect) {
+//   if (sideeffect) {
+//     *sideeffect = 12;
+//   }
+//   LOG(DFATAL) << "death";
+//   return 12;
+// }
+//
+// TEST(TestCase, TestDieOr12WorksInDgbAndOpt) {
+//   int sideeffect = 0;
+//   // Only asserts in dbg.
+//   EXPECT_DEBUG_DEATH(DieInDebugOr12(&sideeffect), "death");
+//
+// #ifdef NDEBUG
+//   // opt-mode has sideeffect visible.
+//   EXPECT_EQ(12, sideeffect);
+// #else
+//   // dbg-mode no visible sideeffect.
+//   EXPECT_EQ(0, sideeffect);
+// #endif
+// }
+//
+// This will assert that DieInDebugReturn12InOpt() crashes in debug
+// mode, usually due to a DCHECK or LOG(DFATAL), but returns the
+// appropriate fallback value (12 in this case) in opt mode. If you
+// need to test that a function has appropriate side-effects in opt
+// mode, include assertions against the side-effects.  A general
+// pattern for this is:
+//
+// EXPECT_DEBUG_DEATH({
+//   // Side-effects here will have an effect after this statement in
+//   // opt mode, but none in debug mode.
+//   EXPECT_EQ(12, DieInDebugOr12(&sideeffect));
+// }, "death");
+//
+# ifdef NDEBUG
+
+#  define EXPECT_DEBUG_DEATH(statement, regex) \
+  GTEST_EXECUTE_STATEMENT_(statement, regex)
+
+#  define ASSERT_DEBUG_DEATH(statement, regex) \
+  GTEST_EXECUTE_STATEMENT_(statement, regex)
+
+# else
+
+#  define EXPECT_DEBUG_DEATH(statement, regex) \
+  EXPECT_DEATH(statement, regex)
+
+#  define ASSERT_DEBUG_DEATH(statement, regex) \
+  ASSERT_DEATH(statement, regex)
+
+# endif  // NDEBUG for EXPECT_DEBUG_DEATH
+#endif  // GTEST_HAS_DEATH_TEST
+
+// EXPECT_DEATH_IF_SUPPORTED(statement, regex) and
+// ASSERT_DEATH_IF_SUPPORTED(statement, regex) expand to real death tests if
+// death tests are supported; otherwise they just issue a warning.  This is
+// useful when you are combining death test assertions with normal test
+// assertions in one test.
+#if GTEST_HAS_DEATH_TEST
+# define EXPECT_DEATH_IF_SUPPORTED(statement, regex) \
+    EXPECT_DEATH(statement, regex)
+# define ASSERT_DEATH_IF_SUPPORTED(statement, regex) \
+    ASSERT_DEATH(statement, regex)
+#else
+# define EXPECT_DEATH_IF_SUPPORTED(statement, regex) \
+    GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, )
+# define ASSERT_DEATH_IF_SUPPORTED(statement, regex) \
+    GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, return)
+#endif
+
+}  // namespace testing
+
+#endif  // GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_
diff --git a/google-breakpad/src/testing/gtest/include/gtest/gtest-message.h b/google-breakpad/src/testing/gtest/include/gtest/gtest-message.h
new file mode 100644
index 0000000..9b7142f
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/include/gtest/gtest-message.h
@@ -0,0 +1,230 @@
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+//
+// The Google C++ Testing Framework (Google Test)
+//
+// This header file defines the Message class.
+//
+// IMPORTANT NOTE: Due to limitation of the C++ language, we have to
+// leave some internal implementation details in this header file.
+// They are clearly marked by comments like this:
+//
+//   // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+//
+// Such code is NOT meant to be used by a user directly, and is subject
+// to CHANGE WITHOUT NOTICE.  Therefore DO NOT DEPEND ON IT in a user
+// program!
+
+#ifndef GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_
+#define GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_
+
+#include <limits>
+
+#include "gtest/internal/gtest-string.h"
+#include "gtest/internal/gtest-internal.h"
+
+namespace testing {
+
+// The Message class works like an ostream repeater.
+//
+// Typical usage:
+//
+//   1. You stream a bunch of values to a Message object.
+//      It will remember the text in a stringstream.
+//   2. Then you stream the Message object to an ostream.
+//      This causes the text in the Message to be streamed
+//      to the ostream.
+//
+// For example;
+//
+//   testing::Message foo;
+//   foo << 1 << " != " << 2;
+//   std::cout << foo;
+//
+// will print "1 != 2".
+//
+// Message is not intended to be inherited from.  In particular, its
+// destructor is not virtual.
+//
+// Note that stringstream behaves differently in gcc and in MSVC.  You
+// can stream a NULL char pointer to it in the former, but not in the
+// latter (it causes an access violation if you do).  The Message
+// class hides this difference by treating a NULL char pointer as
+// "(null)".
+class GTEST_API_ Message {
+ private:
+  // The type of basic IO manipulators (endl, ends, and flush) for
+  // narrow streams.
+  typedef std::ostream& (*BasicNarrowIoManip)(std::ostream&);
+
+ public:
+  // Constructs an empty Message.
+  // We allocate the stringstream separately because otherwise each use of
+  // ASSERT/EXPECT in a procedure adds over 200 bytes to the procedure's
+  // stack frame leading to huge stack frames in some cases; gcc does not reuse
+  // the stack space.
+  Message() : ss_(new ::std::stringstream) {
+    // By default, we want there to be enough precision when printing
+    // a double to a Message.
+    *ss_ << std::setprecision(std::numeric_limits<double>::digits10 + 2);
+  }
+
+  // Copy constructor.
+  Message(const Message& msg) : ss_(new ::std::stringstream) {  // NOLINT
+    *ss_ << msg.GetString();
+  }
+
+  // Constructs a Message from a C-string.
+  explicit Message(const char* str) : ss_(new ::std::stringstream) {
+    *ss_ << str;
+  }
+
+#if GTEST_OS_SYMBIAN
+  // Streams a value (either a pointer or not) to this object.
+  template <typename T>
+  inline Message& operator <<(const T& value) {
+    StreamHelper(typename internal::is_pointer<T>::type(), value);
+    return *this;
+  }
+#else
+  // Streams a non-pointer value to this object.
+  template <typename T>
+  inline Message& operator <<(const T& val) {
+    ::GTestStreamToHelper(ss_.get(), val);
+    return *this;
+  }
+
+  // Streams a pointer value to this object.
+  //
+  // This function is an overload of the previous one.  When you
+  // stream a pointer to a Message, this definition will be used as it
+  // is more specialized.  (The C++ Standard, section
+  // [temp.func.order].)  If you stream a non-pointer, then the
+  // previous definition will be used.
+  //
+  // The reason for this overload is that streaming a NULL pointer to
+  // ostream is undefined behavior.  Depending on the compiler, you
+  // may get "0", "(nil)", "(null)", or an access violation.  To
+  // ensure consistent result across compilers, we always treat NULL
+  // as "(null)".
+  template <typename T>
+  inline Message& operator <<(T* const& pointer) {  // NOLINT
+    if (pointer == NULL) {
+      *ss_ << "(null)";
+    } else {
+      ::GTestStreamToHelper(ss_.get(), pointer);
+    }
+    return *this;
+  }
+#endif  // GTEST_OS_SYMBIAN
+
+  // Since the basic IO manipulators are overloaded for both narrow
+  // and wide streams, we have to provide this specialized definition
+  // of operator <<, even though its body is the same as the
+  // templatized version above.  Without this definition, streaming
+  // endl or other basic IO manipulators to Message will confuse the
+  // compiler.
+  Message& operator <<(BasicNarrowIoManip val) {
+    *ss_ << val;
+    return *this;
+  }
+
+  // Instead of 1/0, we want to see true/false for bool values.
+  Message& operator <<(bool b) {
+    return *this << (b ? "true" : "false");
+  }
+
+  // These two overloads allow streaming a wide C string to a Message
+  // using the UTF-8 encoding.
+  Message& operator <<(const wchar_t* wide_c_str) {
+    return *this << internal::String::ShowWideCString(wide_c_str);
+  }
+  Message& operator <<(wchar_t* wide_c_str) {
+    return *this << internal::String::ShowWideCString(wide_c_str);
+  }
+
+#if GTEST_HAS_STD_WSTRING
+  // Converts the given wide string to a narrow string using the UTF-8
+  // encoding, and streams the result to this Message object.
+  Message& operator <<(const ::std::wstring& wstr);
+#endif  // GTEST_HAS_STD_WSTRING
+
+#if GTEST_HAS_GLOBAL_WSTRING
+  // Converts the given wide string to a narrow string using the UTF-8
+  // encoding, and streams the result to this Message object.
+  Message& operator <<(const ::wstring& wstr);
+#endif  // GTEST_HAS_GLOBAL_WSTRING
+
+  // Gets the text streamed to this object so far as a String.
+  // Each '\0' character in the buffer is replaced with "\\0".
+  //
+  // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+  internal::String GetString() const {
+    return internal::StringStreamToString(ss_.get());
+  }
+
+ private:
+
+#if GTEST_OS_SYMBIAN
+  // These are needed as the Nokia Symbian Compiler cannot decide between
+  // const T& and const T* in a function template. The Nokia compiler _can_
+  // decide between class template specializations for T and T*, so a
+  // tr1::type_traits-like is_pointer works, and we can overload on that.
+  template <typename T>
+  inline void StreamHelper(internal::true_type /*dummy*/, T* pointer) {
+    if (pointer == NULL) {
+      *ss_ << "(null)";
+    } else {
+      ::GTestStreamToHelper(ss_.get(), pointer);
+    }
+  }
+  template <typename T>
+  inline void StreamHelper(internal::false_type /*dummy*/, const T& value) {
+    ::GTestStreamToHelper(ss_.get(), value);
+  }
+#endif  // GTEST_OS_SYMBIAN
+
+  // We'll hold the text streamed to this object here.
+  const internal::scoped_ptr< ::std::stringstream> ss_;
+
+  // We declare (but don't implement) this to prevent the compiler
+  // from implementing the assignment operator.
+  void operator=(const Message&);
+};
+
+// Streams a Message to an ostream.
+inline std::ostream& operator <<(std::ostream& os, const Message& sb) {
+  return os << sb.GetString();
+}
+
+}  // namespace testing
+
+#endif  // GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_
diff --git a/google-breakpad/src/testing/gtest/include/gtest/gtest-param-test.h b/google-breakpad/src/testing/gtest/include/gtest/gtest-param-test.h
new file mode 100644
index 0000000..d6702c8
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/include/gtest/gtest-param-test.h
@@ -0,0 +1,1421 @@
+// This file was GENERATED by command:
+//     pump.py gtest-param-test.h.pump
+// DO NOT EDIT BY HAND!!!
+
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Authors: vladl@google.com (Vlad Losev)
+//
+// Macros and functions for implementing parameterized tests
+// in Google C++ Testing Framework (Google Test)
+//
+// This file is generated by a SCRIPT.  DO NOT EDIT BY HAND!
+//
+#ifndef GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
+#define GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
+
+
+// Value-parameterized tests allow you to test your code with different
+// parameters without writing multiple copies of the same test.
+//
+// Here is how you use value-parameterized tests:
+
+#if 0
+
+// To write value-parameterized tests, first you should define a fixture
+// class. It is usually derived from testing::TestWithParam<T> (see below for
+// another inheritance scheme that's sometimes useful in more complicated
+// class hierarchies), where the type of your parameter values.
+// TestWithParam<T> is itself derived from testing::Test. T can be any
+// copyable type. If it's a raw pointer, you are responsible for managing the
+// lifespan of the pointed values.
+
+class FooTest : public ::testing::TestWithParam<const char*> {
+  // You can implement all the usual class fixture members here.
+};
+
+// Then, use the TEST_P macro to define as many parameterized tests
+// for this fixture as you want. The _P suffix is for "parameterized"
+// or "pattern", whichever you prefer to think.
+
+TEST_P(FooTest, DoesBlah) {
+  // Inside a test, access the test parameter with the GetParam() method
+  // of the TestWithParam<T> class:
+  EXPECT_TRUE(foo.Blah(GetParam()));
+  ...
+}
+
+TEST_P(FooTest, HasBlahBlah) {
+  ...
+}
+
+// Finally, you can use INSTANTIATE_TEST_CASE_P to instantiate the test
+// case with any set of parameters you want. Google Test defines a number
+// of functions for generating test parameters. They return what we call
+// (surprise!) parameter generators. Here is a  summary of them, which
+// are all in the testing namespace:
+//
+//
+//  Range(begin, end [, step]) - Yields values {begin, begin+step,
+//                               begin+step+step, ...}. The values do not
+//                               include end. step defaults to 1.
+//  Values(v1, v2, ..., vN)    - Yields values {v1, v2, ..., vN}.
+//  ValuesIn(container)        - Yields values from a C-style array, an STL
+//  ValuesIn(begin,end)          container, or an iterator range [begin, end).
+//  Bool()                     - Yields sequence {false, true}.
+//  Combine(g1, g2, ..., gN)   - Yields all combinations (the Cartesian product
+//                               for the math savvy) of the values generated
+//                               by the N generators.
+//
+// For more details, see comments at the definitions of these functions below
+// in this file.
+//
+// The following statement will instantiate tests from the FooTest test case
+// each with parameter values "meeny", "miny", and "moe".
+
+INSTANTIATE_TEST_CASE_P(InstantiationName,
+                        FooTest,
+                        Values("meeny", "miny", "moe"));
+
+// To distinguish different instances of the pattern, (yes, you
+// can instantiate it more then once) the first argument to the
+// INSTANTIATE_TEST_CASE_P macro is a prefix that will be added to the
+// actual test case name. Remember to pick unique prefixes for different
+// instantiations. The tests from the instantiation above will have
+// these names:
+//
+//    * InstantiationName/FooTest.DoesBlah/0 for "meeny"
+//    * InstantiationName/FooTest.DoesBlah/1 for "miny"
+//    * InstantiationName/FooTest.DoesBlah/2 for "moe"
+//    * InstantiationName/FooTest.HasBlahBlah/0 for "meeny"
+//    * InstantiationName/FooTest.HasBlahBlah/1 for "miny"
+//    * InstantiationName/FooTest.HasBlahBlah/2 for "moe"
+//
+// You can use these names in --gtest_filter.
+//
+// This statement will instantiate all tests from FooTest again, each
+// with parameter values "cat" and "dog":
+
+const char* pets[] = {"cat", "dog"};
+INSTANTIATE_TEST_CASE_P(AnotherInstantiationName, FooTest, ValuesIn(pets));
+
+// The tests from the instantiation above will have these names:
+//
+//    * AnotherInstantiationName/FooTest.DoesBlah/0 for "cat"
+//    * AnotherInstantiationName/FooTest.DoesBlah/1 for "dog"
+//    * AnotherInstantiationName/FooTest.HasBlahBlah/0 for "cat"
+//    * AnotherInstantiationName/FooTest.HasBlahBlah/1 for "dog"
+//
+// Please note that INSTANTIATE_TEST_CASE_P will instantiate all tests
+// in the given test case, whether their definitions come before or
+// AFTER the INSTANTIATE_TEST_CASE_P statement.
+//
+// Please also note that generator expressions (including parameters to the
+// generators) are evaluated in InitGoogleTest(), after main() has started.
+// This allows the user on one hand, to adjust generator parameters in order
+// to dynamically determine a set of tests to run and on the other hand,
+// give the user a chance to inspect the generated tests with Google Test
+// reflection API before RUN_ALL_TESTS() is executed.
+//
+// You can see samples/sample7_unittest.cc and samples/sample8_unittest.cc
+// for more examples.
+//
+// In the future, we plan to publish the API for defining new parameter
+// generators. But for now this interface remains part of the internal
+// implementation and is subject to change.
+//
+//
+// A parameterized test fixture must be derived from testing::Test and from
+// testing::WithParamInterface<T>, where T is the type of the parameter
+// values. Inheriting from TestWithParam<T> satisfies that requirement because
+// TestWithParam<T> inherits from both Test and WithParamInterface. In more
+// complicated hierarchies, however, it is occasionally useful to inherit
+// separately from Test and WithParamInterface. For example:
+
+class BaseTest : public ::testing::Test {
+  // You can inherit all the usual members for a non-parameterized test
+  // fixture here.
+};
+
+class DerivedTest : public BaseTest, public ::testing::WithParamInterface<int> {
+  // The usual test fixture members go here too.
+};
+
+TEST_F(BaseTest, HasFoo) {
+  // This is an ordinary non-parameterized test.
+}
+
+TEST_P(DerivedTest, DoesBlah) {
+  // GetParam works just the same here as if you inherit from TestWithParam.
+  EXPECT_TRUE(foo.Blah(GetParam()));
+}
+
+#endif  // 0
+
+#include "gtest/internal/gtest-port.h"
+
+#if !GTEST_OS_SYMBIAN
+# include <utility>
+#endif
+
+// scripts/fuse_gtest.py depends on gtest's own header being #included
+// *unconditionally*.  Therefore these #includes cannot be moved
+// inside #if GTEST_HAS_PARAM_TEST.
+#include "gtest/internal/gtest-internal.h"
+#include "gtest/internal/gtest-param-util.h"
+#include "gtest/internal/gtest-param-util-generated.h"
+
+#if GTEST_HAS_PARAM_TEST
+
+namespace testing {
+
+// Functions producing parameter generators.
+//
+// Google Test uses these generators to produce parameters for value-
+// parameterized tests. When a parameterized test case is instantiated
+// with a particular generator, Google Test creates and runs tests
+// for each element in the sequence produced by the generator.
+//
+// In the following sample, tests from test case FooTest are instantiated
+// each three times with parameter values 3, 5, and 8:
+//
+// class FooTest : public TestWithParam<int> { ... };
+//
+// TEST_P(FooTest, TestThis) {
+// }
+// TEST_P(FooTest, TestThat) {
+// }
+// INSTANTIATE_TEST_CASE_P(TestSequence, FooTest, Values(3, 5, 8));
+//
+
+// Range() returns generators providing sequences of values in a range.
+//
+// Synopsis:
+// Range(start, end)
+//   - returns a generator producing a sequence of values {start, start+1,
+//     start+2, ..., }.
+// Range(start, end, step)
+//   - returns a generator producing a sequence of values {start, start+step,
+//     start+step+step, ..., }.
+// Notes:
+//   * The generated sequences never include end. For example, Range(1, 5)
+//     returns a generator producing a sequence {1, 2, 3, 4}. Range(1, 9, 2)
+//     returns a generator producing {1, 3, 5, 7}.
+//   * start and end must have the same type. That type may be any integral or
+//     floating-point type or a user defined type satisfying these conditions:
+//     * It must be assignable (have operator=() defined).
+//     * It must have operator+() (operator+(int-compatible type) for
+//       two-operand version).
+//     * It must have operator<() defined.
+//     Elements in the resulting sequences will also have that type.
+//   * Condition start < end must be satisfied in order for resulting sequences
+//     to contain any elements.
+//
+template <typename T, typename IncrementT>
+internal::ParamGenerator<T> Range(T start, T end, IncrementT step) {
+  return internal::ParamGenerator<T>(
+      new internal::RangeGenerator<T, IncrementT>(start, end, step));
+}
+
+template <typename T>
+internal::ParamGenerator<T> Range(T start, T end) {
+  return Range(start, end, 1);
+}
+
+// ValuesIn() function allows generation of tests with parameters coming from
+// a container.
+//
+// Synopsis:
+// ValuesIn(const T (&array)[N])
+//   - returns a generator producing sequences with elements from
+//     a C-style array.
+// ValuesIn(const Container& container)
+//   - returns a generator producing sequences with elements from
+//     an STL-style container.
+// ValuesIn(Iterator begin, Iterator end)
+//   - returns a generator producing sequences with elements from
+//     a range [begin, end) defined by a pair of STL-style iterators. These
+//     iterators can also be plain C pointers.
+//
+// Please note that ValuesIn copies the values from the containers
+// passed in and keeps them to generate tests in RUN_ALL_TESTS().
+//
+// Examples:
+//
+// This instantiates tests from test case StringTest
+// each with C-string values of "foo", "bar", and "baz":
+//
+// const char* strings[] = {"foo", "bar", "baz"};
+// INSTANTIATE_TEST_CASE_P(StringSequence, SrtingTest, ValuesIn(strings));
+//
+// This instantiates tests from test case StlStringTest
+// each with STL strings with values "a" and "b":
+//
+// ::std::vector< ::std::string> GetParameterStrings() {
+//   ::std::vector< ::std::string> v;
+//   v.push_back("a");
+//   v.push_back("b");
+//   return v;
+// }
+//
+// INSTANTIATE_TEST_CASE_P(CharSequence,
+//                         StlStringTest,
+//                         ValuesIn(GetParameterStrings()));
+//
+//
+// This will also instantiate tests from CharTest
+// each with parameter values 'a' and 'b':
+//
+// ::std::list<char> GetParameterChars() {
+//   ::std::list<char> list;
+//   list.push_back('a');
+//   list.push_back('b');
+//   return list;
+// }
+// ::std::list<char> l = GetParameterChars();
+// INSTANTIATE_TEST_CASE_P(CharSequence2,
+//                         CharTest,
+//                         ValuesIn(l.begin(), l.end()));
+//
+template <typename ForwardIterator>
+internal::ParamGenerator<
+  typename ::testing::internal::IteratorTraits<ForwardIterator>::value_type>
+ValuesIn(ForwardIterator begin, ForwardIterator end) {
+  typedef typename ::testing::internal::IteratorTraits<ForwardIterator>
+      ::value_type ParamType;
+  return internal::ParamGenerator<ParamType>(
+      new internal::ValuesInIteratorRangeGenerator<ParamType>(begin, end));
+}
+
+template <typename T, size_t N>
+internal::ParamGenerator<T> ValuesIn(const T (&array)[N]) {
+  return ValuesIn(array, array + N);
+}
+
+template <class Container>
+internal::ParamGenerator<typename Container::value_type> ValuesIn(
+    const Container& container) {
+  return ValuesIn(container.begin(), container.end());
+}
+
+// Values() allows generating tests from explicitly specified list of
+// parameters.
+//
+// Synopsis:
+// Values(T v1, T v2, ..., T vN)
+//   - returns a generator producing sequences with elements v1, v2, ..., vN.
+//
+// For example, this instantiates tests from test case BarTest each
+// with values "one", "two", and "three":
+//
+// INSTANTIATE_TEST_CASE_P(NumSequence, BarTest, Values("one", "two", "three"));
+//
+// This instantiates tests from test case BazTest each with values 1, 2, 3.5.
+// The exact type of values will depend on the type of parameter in BazTest.
+//
+// INSTANTIATE_TEST_CASE_P(FloatingNumbers, BazTest, Values(1, 2, 3.5));
+//
+// Currently, Values() supports from 1 to 50 parameters.
+//
+template <typename T1>
+internal::ValueArray1<T1> Values(T1 v1) {
+  return internal::ValueArray1<T1>(v1);
+}
+
+template <typename T1, typename T2>
+internal::ValueArray2<T1, T2> Values(T1 v1, T2 v2) {
+  return internal::ValueArray2<T1, T2>(v1, v2);
+}
+
+template <typename T1, typename T2, typename T3>
+internal::ValueArray3<T1, T2, T3> Values(T1 v1, T2 v2, T3 v3) {
+  return internal::ValueArray3<T1, T2, T3>(v1, v2, v3);
+}
+
+template <typename T1, typename T2, typename T3, typename T4>
+internal::ValueArray4<T1, T2, T3, T4> Values(T1 v1, T2 v2, T3 v3, T4 v4) {
+  return internal::ValueArray4<T1, T2, T3, T4>(v1, v2, v3, v4);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5>
+internal::ValueArray5<T1, T2, T3, T4, T5> Values(T1 v1, T2 v2, T3 v3, T4 v4,
+    T5 v5) {
+  return internal::ValueArray5<T1, T2, T3, T4, T5>(v1, v2, v3, v4, v5);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6>
+internal::ValueArray6<T1, T2, T3, T4, T5, T6> Values(T1 v1, T2 v2, T3 v3,
+    T4 v4, T5 v5, T6 v6) {
+  return internal::ValueArray6<T1, T2, T3, T4, T5, T6>(v1, v2, v3, v4, v5, v6);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7>
+internal::ValueArray7<T1, T2, T3, T4, T5, T6, T7> Values(T1 v1, T2 v2, T3 v3,
+    T4 v4, T5 v5, T6 v6, T7 v7) {
+  return internal::ValueArray7<T1, T2, T3, T4, T5, T6, T7>(v1, v2, v3, v4, v5,
+      v6, v7);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8>
+internal::ValueArray8<T1, T2, T3, T4, T5, T6, T7, T8> Values(T1 v1, T2 v2,
+    T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8) {
+  return internal::ValueArray8<T1, T2, T3, T4, T5, T6, T7, T8>(v1, v2, v3, v4,
+      v5, v6, v7, v8);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9>
+internal::ValueArray9<T1, T2, T3, T4, T5, T6, T7, T8, T9> Values(T1 v1, T2 v2,
+    T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9) {
+  return internal::ValueArray9<T1, T2, T3, T4, T5, T6, T7, T8, T9>(v1, v2, v3,
+      v4, v5, v6, v7, v8, v9);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10>
+internal::ValueArray10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> Values(T1 v1,
+    T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10) {
+  return internal::ValueArray10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(v1,
+      v2, v3, v4, v5, v6, v7, v8, v9, v10);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11>
+internal::ValueArray11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10,
+    T11> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+    T10 v10, T11 v11) {
+  return internal::ValueArray11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10,
+      T11>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12>
+internal::ValueArray12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+    T12> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+    T10 v10, T11 v11, T12 v12) {
+  return internal::ValueArray12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+      T12>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13>
+internal::ValueArray13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+    T13> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+    T10 v10, T11 v11, T12 v12, T13 v13) {
+  return internal::ValueArray13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+      T12, T13>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14>
+internal::ValueArray14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+    T14> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+    T10 v10, T11 v11, T12 v12, T13 v13, T14 v14) {
+  return internal::ValueArray14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+      T12, T13, T14>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13,
+      v14);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15>
+internal::ValueArray15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+    T14, T15> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8,
+    T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15) {
+  return internal::ValueArray15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+      T12, T13, T14, T15>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12,
+      v13, v14, v15);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16>
+internal::ValueArray16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+    T14, T15, T16> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
+    T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
+    T16 v16) {
+  return internal::ValueArray16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+      T12, T13, T14, T15, T16>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11,
+      v12, v13, v14, v15, v16);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17>
+internal::ValueArray17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+    T14, T15, T16, T17> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
+    T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
+    T16 v16, T17 v17) {
+  return internal::ValueArray17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+      T12, T13, T14, T15, T16, T17>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10,
+      v11, v12, v13, v14, v15, v16, v17);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18>
+internal::ValueArray18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+    T14, T15, T16, T17, T18> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6,
+    T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
+    T16 v16, T17 v17, T18 v18) {
+  return internal::ValueArray18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+      T12, T13, T14, T15, T16, T17, T18>(v1, v2, v3, v4, v5, v6, v7, v8, v9,
+      v10, v11, v12, v13, v14, v15, v16, v17, v18);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19>
+internal::ValueArray19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+    T14, T15, T16, T17, T18, T19> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5,
+    T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14,
+    T15 v15, T16 v16, T17 v17, T18 v18, T19 v19) {
+  return internal::ValueArray19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+      T12, T13, T14, T15, T16, T17, T18, T19>(v1, v2, v3, v4, v5, v6, v7, v8,
+      v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20>
+internal::ValueArray20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+    T14, T15, T16, T17, T18, T19, T20> Values(T1 v1, T2 v2, T3 v3, T4 v4,
+    T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13,
+    T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20) {
+  return internal::ValueArray20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+      T12, T13, T14, T15, T16, T17, T18, T19, T20>(v1, v2, v3, v4, v5, v6, v7,
+      v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21>
+internal::ValueArray21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+    T14, T15, T16, T17, T18, T19, T20, T21> Values(T1 v1, T2 v2, T3 v3, T4 v4,
+    T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13,
+    T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21) {
+  return internal::ValueArray21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>(v1, v2, v3, v4, v5, v6,
+      v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22>
+internal::ValueArray22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+    T14, T15, T16, T17, T18, T19, T20, T21, T22> Values(T1 v1, T2 v2, T3 v3,
+    T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
+    T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
+    T21 v21, T22 v22) {
+  return internal::ValueArray22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>(v1, v2, v3, v4,
+      v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
+      v20, v21, v22);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23>
+internal::ValueArray23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23> Values(T1 v1, T2 v2,
+    T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
+    T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
+    T21 v21, T22 v22, T23 v23) {
+  return internal::ValueArray23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23>(v1, v2, v3,
+      v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
+      v20, v21, v22, v23);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24>
+internal::ValueArray24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> Values(T1 v1, T2 v2,
+    T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
+    T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
+    T21 v21, T22 v22, T23 v23, T24 v24) {
+  return internal::ValueArray24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24>(v1, v2,
+      v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18,
+      v19, v20, v21, v22, v23, v24);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25>
+internal::ValueArray25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> Values(T1 v1,
+    T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11,
+    T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19,
+    T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25) {
+  return internal::ValueArray25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25>(v1,
+      v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17,
+      v18, v19, v20, v21, v22, v23, v24, v25);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26>
+internal::ValueArray26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+    T26> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+    T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+    T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+    T26 v26) {
+  return internal::ValueArray26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+      T26>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15,
+      v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27>
+internal::ValueArray27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+    T27> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+    T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+    T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+    T26 v26, T27 v27) {
+  return internal::ValueArray27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+      T26, T27>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14,
+      v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28>
+internal::ValueArray28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+    T28> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+    T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+    T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+    T26 v26, T27 v27, T28 v28) {
+  return internal::ValueArray28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+      T26, T27, T28>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13,
+      v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27,
+      v28);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29>
+internal::ValueArray29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+    T29> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+    T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+    T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+    T26 v26, T27 v27, T28 v28, T29 v29) {
+  return internal::ValueArray29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+      T26, T27, T28, T29>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12,
+      v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26,
+      v27, v28, v29);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30>
+internal::ValueArray30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+    T29, T30> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8,
+    T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16,
+    T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24,
+    T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30) {
+  return internal::ValueArray30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+      T26, T27, T28, T29, T30>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11,
+      v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25,
+      v26, v27, v28, v29, v30);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31>
+internal::ValueArray31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+    T29, T30, T31> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
+    T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
+    T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,
+    T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31) {
+  return internal::ValueArray31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+      T26, T27, T28, T29, T30, T31>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10,
+      v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24,
+      v25, v26, v27, v28, v29, v30, v31);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32>
+internal::ValueArray32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+    T29, T30, T31, T32> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
+    T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
+    T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,
+    T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31,
+    T32 v32) {
+  return internal::ValueArray32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+      T26, T27, T28, T29, T30, T31, T32>(v1, v2, v3, v4, v5, v6, v7, v8, v9,
+      v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23,
+      v24, v25, v26, v27, v28, v29, v30, v31, v32);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33>
+internal::ValueArray33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+    T29, T30, T31, T32, T33> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6,
+    T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
+    T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,
+    T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31,
+    T32 v32, T33 v33) {
+  return internal::ValueArray33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+      T26, T27, T28, T29, T30, T31, T32, T33>(v1, v2, v3, v4, v5, v6, v7, v8,
+      v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23,
+      v24, v25, v26, v27, v28, v29, v30, v31, v32, v33);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34>
+internal::ValueArray34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+    T29, T30, T31, T32, T33, T34> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5,
+    T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14,
+    T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22,
+    T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30,
+    T31 v31, T32 v32, T33 v33, T34 v34) {
+  return internal::ValueArray34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+      T26, T27, T28, T29, T30, T31, T32, T33, T34>(v1, v2, v3, v4, v5, v6, v7,
+      v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22,
+      v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35>
+internal::ValueArray35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+    T29, T30, T31, T32, T33, T34, T35> Values(T1 v1, T2 v2, T3 v3, T4 v4,
+    T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13,
+    T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21,
+    T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29,
+    T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35) {
+  return internal::ValueArray35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+      T26, T27, T28, T29, T30, T31, T32, T33, T34, T35>(v1, v2, v3, v4, v5, v6,
+      v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21,
+      v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36>
+internal::ValueArray36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+    T29, T30, T31, T32, T33, T34, T35, T36> Values(T1 v1, T2 v2, T3 v3, T4 v4,
+    T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13,
+    T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21,
+    T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29,
+    T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36) {
+  return internal::ValueArray36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+      T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36>(v1, v2, v3, v4,
+      v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
+      v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33,
+      v34, v35, v36);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37>
+internal::ValueArray37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+    T29, T30, T31, T32, T33, T34, T35, T36, T37> Values(T1 v1, T2 v2, T3 v3,
+    T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
+    T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
+    T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28,
+    T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36,
+    T37 v37) {
+  return internal::ValueArray37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+      T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37>(v1, v2, v3,
+      v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
+      v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33,
+      v34, v35, v36, v37);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37, typename T38>
+internal::ValueArray38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+    T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> Values(T1 v1, T2 v2,
+    T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
+    T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
+    T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28,
+    T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36,
+    T37 v37, T38 v38) {
+  return internal::ValueArray38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+      T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38>(v1, v2,
+      v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18,
+      v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32,
+      v33, v34, v35, v36, v37, v38);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37, typename T38, typename T39>
+internal::ValueArray39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+    T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> Values(T1 v1, T2 v2,
+    T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
+    T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
+    T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28,
+    T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36,
+    T37 v37, T38 v38, T39 v39) {
+  return internal::ValueArray39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+      T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39>(v1,
+      v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17,
+      v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31,
+      v32, v33, v34, v35, v36, v37, v38, v39);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37, typename T38, typename T39, typename T40>
+internal::ValueArray40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+    T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> Values(T1 v1,
+    T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11,
+    T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19,
+    T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27,
+    T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35,
+    T36 v36, T37 v37, T38 v38, T39 v39, T40 v40) {
+  return internal::ValueArray40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+      T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
+      T40>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15,
+      v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29,
+      v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37, typename T38, typename T39, typename T40,
+    typename T41>
+internal::ValueArray41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+    T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
+    T41> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+    T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+    T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+    T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+    T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41) {
+  return internal::ValueArray41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+      T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
+      T40, T41>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14,
+      v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28,
+      v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37, typename T38, typename T39, typename T40,
+    typename T41, typename T42>
+internal::ValueArray42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+    T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
+    T42> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+    T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+    T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+    T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+    T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
+    T42 v42) {
+  return internal::ValueArray42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+      T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
+      T40, T41, T42>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13,
+      v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27,
+      v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41,
+      v42);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37, typename T38, typename T39, typename T40,
+    typename T41, typename T42, typename T43>
+internal::ValueArray43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+    T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
+    T43> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+    T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+    T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+    T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+    T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
+    T42 v42, T43 v43) {
+  return internal::ValueArray43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+      T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
+      T40, T41, T42, T43>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12,
+      v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26,
+      v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40,
+      v41, v42, v43);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37, typename T38, typename T39, typename T40,
+    typename T41, typename T42, typename T43, typename T44>
+internal::ValueArray44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+    T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
+    T44> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+    T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+    T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+    T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+    T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
+    T42 v42, T43 v43, T44 v44) {
+  return internal::ValueArray44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+      T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
+      T40, T41, T42, T43, T44>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11,
+      v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25,
+      v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39,
+      v40, v41, v42, v43, v44);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37, typename T38, typename T39, typename T40,
+    typename T41, typename T42, typename T43, typename T44, typename T45>
+internal::ValueArray45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+    T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
+    T44, T45> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8,
+    T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16,
+    T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24,
+    T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32,
+    T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40,
+    T41 v41, T42 v42, T43 v43, T44 v44, T45 v45) {
+  return internal::ValueArray45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+      T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
+      T40, T41, T42, T43, T44, T45>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10,
+      v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24,
+      v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38,
+      v39, v40, v41, v42, v43, v44, v45);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37, typename T38, typename T39, typename T40,
+    typename T41, typename T42, typename T43, typename T44, typename T45,
+    typename T46>
+internal::ValueArray46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+    T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
+    T44, T45, T46> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
+    T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
+    T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,
+    T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31,
+    T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39,
+    T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46) {
+  return internal::ValueArray46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+      T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
+      T40, T41, T42, T43, T44, T45, T46>(v1, v2, v3, v4, v5, v6, v7, v8, v9,
+      v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23,
+      v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37,
+      v38, v39, v40, v41, v42, v43, v44, v45, v46);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37, typename T38, typename T39, typename T40,
+    typename T41, typename T42, typename T43, typename T44, typename T45,
+    typename T46, typename T47>
+internal::ValueArray47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+    T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
+    T44, T45, T46, T47> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
+    T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
+    T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,
+    T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31,
+    T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39,
+    T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47) {
+  return internal::ValueArray47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+      T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
+      T40, T41, T42, T43, T44, T45, T46, T47>(v1, v2, v3, v4, v5, v6, v7, v8,
+      v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23,
+      v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37,
+      v38, v39, v40, v41, v42, v43, v44, v45, v46, v47);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37, typename T38, typename T39, typename T40,
+    typename T41, typename T42, typename T43, typename T44, typename T45,
+    typename T46, typename T47, typename T48>
+internal::ValueArray48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+    T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
+    T44, T45, T46, T47, T48> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6,
+    T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
+    T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,
+    T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31,
+    T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39,
+    T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47,
+    T48 v48) {
+  return internal::ValueArray48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+      T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
+      T40, T41, T42, T43, T44, T45, T46, T47, T48>(v1, v2, v3, v4, v5, v6, v7,
+      v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22,
+      v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36,
+      v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37, typename T38, typename T39, typename T40,
+    typename T41, typename T42, typename T43, typename T44, typename T45,
+    typename T46, typename T47, typename T48, typename T49>
+internal::ValueArray49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+    T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
+    T44, T45, T46, T47, T48, T49> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5,
+    T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14,
+    T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22,
+    T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30,
+    T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38,
+    T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46,
+    T47 v47, T48 v48, T49 v49) {
+  return internal::ValueArray49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+      T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
+      T40, T41, T42, T43, T44, T45, T46, T47, T48, T49>(v1, v2, v3, v4, v5, v6,
+      v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21,
+      v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35,
+      v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37, typename T38, typename T39, typename T40,
+    typename T41, typename T42, typename T43, typename T44, typename T45,
+    typename T46, typename T47, typename T48, typename T49, typename T50>
+internal::ValueArray50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+    T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
+    T44, T45, T46, T47, T48, T49, T50> Values(T1 v1, T2 v2, T3 v3, T4 v4,
+    T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13,
+    T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21,
+    T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29,
+    T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37,
+    T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45,
+    T46 v46, T47 v47, T48 v48, T49 v49, T50 v50) {
+  return internal::ValueArray50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+      T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+      T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
+      T40, T41, T42, T43, T44, T45, T46, T47, T48, T49, T50>(v1, v2, v3, v4,
+      v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
+      v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33,
+      v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47,
+      v48, v49, v50);
+}
+
+// Bool() allows generating tests with parameters in a set of (false, true).
+//
+// Synopsis:
+// Bool()
+//   - returns a generator producing sequences with elements {false, true}.
+//
+// It is useful when testing code that depends on Boolean flags. Combinations
+// of multiple flags can be tested when several Bool()'s are combined using
+// Combine() function.
+//
+// In the following example all tests in the test case FlagDependentTest
+// will be instantiated twice with parameters false and true.
+//
+// class FlagDependentTest : public testing::TestWithParam<bool> {
+//   virtual void SetUp() {
+//     external_flag = GetParam();
+//   }
+// }
+// INSTANTIATE_TEST_CASE_P(BoolSequence, FlagDependentTest, Bool());
+//
+inline internal::ParamGenerator<bool> Bool() {
+  return Values(false, true);
+}
+
+# if GTEST_HAS_COMBINE
+// Combine() allows the user to combine two or more sequences to produce
+// values of a Cartesian product of those sequences' elements.
+//
+// Synopsis:
+// Combine(gen1, gen2, ..., genN)
+//   - returns a generator producing sequences with elements coming from
+//     the Cartesian product of elements from the sequences generated by
+//     gen1, gen2, ..., genN. The sequence elements will have a type of
+//     tuple<T1, T2, ..., TN> where T1, T2, ..., TN are the types
+//     of elements from sequences produces by gen1, gen2, ..., genN.
+//
+// Combine can have up to 10 arguments. This number is currently limited
+// by the maximum number of elements in the tuple implementation used by Google
+// Test.
+//
+// Example:
+//
+// This will instantiate tests in test case AnimalTest each one with
+// the parameter values tuple("cat", BLACK), tuple("cat", WHITE),
+// tuple("dog", BLACK), and tuple("dog", WHITE):
+//
+// enum Color { BLACK, GRAY, WHITE };
+// class AnimalTest
+//     : public testing::TestWithParam<tuple<const char*, Color> > {...};
+//
+// TEST_P(AnimalTest, AnimalLooksNice) {...}
+//
+// INSTANTIATE_TEST_CASE_P(AnimalVariations, AnimalTest,
+//                         Combine(Values("cat", "dog"),
+//                                 Values(BLACK, WHITE)));
+//
+// This will instantiate tests in FlagDependentTest with all variations of two
+// Boolean flags:
+//
+// class FlagDependentTest
+//     : public testing::TestWithParam<tuple<bool, bool> > {
+//   virtual void SetUp() {
+//     // Assigns external_flag_1 and external_flag_2 values from the tuple.
+//     tie(external_flag_1, external_flag_2) = GetParam();
+//   }
+// };
+//
+// TEST_P(FlagDependentTest, TestFeature1) {
+//   // Test your code using external_flag_1 and external_flag_2 here.
+// }
+// INSTANTIATE_TEST_CASE_P(TwoBoolSequence, FlagDependentTest,
+//                         Combine(Bool(), Bool()));
+//
+template <typename Generator1, typename Generator2>
+internal::CartesianProductHolder2<Generator1, Generator2> Combine(
+    const Generator1& g1, const Generator2& g2) {
+  return internal::CartesianProductHolder2<Generator1, Generator2>(
+      g1, g2);
+}
+
+template <typename Generator1, typename Generator2, typename Generator3>
+internal::CartesianProductHolder3<Generator1, Generator2, Generator3> Combine(
+    const Generator1& g1, const Generator2& g2, const Generator3& g3) {
+  return internal::CartesianProductHolder3<Generator1, Generator2, Generator3>(
+      g1, g2, g3);
+}
+
+template <typename Generator1, typename Generator2, typename Generator3,
+    typename Generator4>
+internal::CartesianProductHolder4<Generator1, Generator2, Generator3,
+    Generator4> Combine(
+    const Generator1& g1, const Generator2& g2, const Generator3& g3,
+        const Generator4& g4) {
+  return internal::CartesianProductHolder4<Generator1, Generator2, Generator3,
+      Generator4>(
+      g1, g2, g3, g4);
+}
+
+template <typename Generator1, typename Generator2, typename Generator3,
+    typename Generator4, typename Generator5>
+internal::CartesianProductHolder5<Generator1, Generator2, Generator3,
+    Generator4, Generator5> Combine(
+    const Generator1& g1, const Generator2& g2, const Generator3& g3,
+        const Generator4& g4, const Generator5& g5) {
+  return internal::CartesianProductHolder5<Generator1, Generator2, Generator3,
+      Generator4, Generator5>(
+      g1, g2, g3, g4, g5);
+}
+
+template <typename Generator1, typename Generator2, typename Generator3,
+    typename Generator4, typename Generator5, typename Generator6>
+internal::CartesianProductHolder6<Generator1, Generator2, Generator3,
+    Generator4, Generator5, Generator6> Combine(
+    const Generator1& g1, const Generator2& g2, const Generator3& g3,
+        const Generator4& g4, const Generator5& g5, const Generator6& g6) {
+  return internal::CartesianProductHolder6<Generator1, Generator2, Generator3,
+      Generator4, Generator5, Generator6>(
+      g1, g2, g3, g4, g5, g6);
+}
+
+template <typename Generator1, typename Generator2, typename Generator3,
+    typename Generator4, typename Generator5, typename Generator6,
+    typename Generator7>
+internal::CartesianProductHolder7<Generator1, Generator2, Generator3,
+    Generator4, Generator5, Generator6, Generator7> Combine(
+    const Generator1& g1, const Generator2& g2, const Generator3& g3,
+        const Generator4& g4, const Generator5& g5, const Generator6& g6,
+        const Generator7& g7) {
+  return internal::CartesianProductHolder7<Generator1, Generator2, Generator3,
+      Generator4, Generator5, Generator6, Generator7>(
+      g1, g2, g3, g4, g5, g6, g7);
+}
+
+template <typename Generator1, typename Generator2, typename Generator3,
+    typename Generator4, typename Generator5, typename Generator6,
+    typename Generator7, typename Generator8>
+internal::CartesianProductHolder8<Generator1, Generator2, Generator3,
+    Generator4, Generator5, Generator6, Generator7, Generator8> Combine(
+    const Generator1& g1, const Generator2& g2, const Generator3& g3,
+        const Generator4& g4, const Generator5& g5, const Generator6& g6,
+        const Generator7& g7, const Generator8& g8) {
+  return internal::CartesianProductHolder8<Generator1, Generator2, Generator3,
+      Generator4, Generator5, Generator6, Generator7, Generator8>(
+      g1, g2, g3, g4, g5, g6, g7, g8);
+}
+
+template <typename Generator1, typename Generator2, typename Generator3,
+    typename Generator4, typename Generator5, typename Generator6,
+    typename Generator7, typename Generator8, typename Generator9>
+internal::CartesianProductHolder9<Generator1, Generator2, Generator3,
+    Generator4, Generator5, Generator6, Generator7, Generator8,
+    Generator9> Combine(
+    const Generator1& g1, const Generator2& g2, const Generator3& g3,
+        const Generator4& g4, const Generator5& g5, const Generator6& g6,
+        const Generator7& g7, const Generator8& g8, const Generator9& g9) {
+  return internal::CartesianProductHolder9<Generator1, Generator2, Generator3,
+      Generator4, Generator5, Generator6, Generator7, Generator8, Generator9>(
+      g1, g2, g3, g4, g5, g6, g7, g8, g9);
+}
+
+template <typename Generator1, typename Generator2, typename Generator3,
+    typename Generator4, typename Generator5, typename Generator6,
+    typename Generator7, typename Generator8, typename Generator9,
+    typename Generator10>
+internal::CartesianProductHolder10<Generator1, Generator2, Generator3,
+    Generator4, Generator5, Generator6, Generator7, Generator8, Generator9,
+    Generator10> Combine(
+    const Generator1& g1, const Generator2& g2, const Generator3& g3,
+        const Generator4& g4, const Generator5& g5, const Generator6& g6,
+        const Generator7& g7, const Generator8& g8, const Generator9& g9,
+        const Generator10& g10) {
+  return internal::CartesianProductHolder10<Generator1, Generator2, Generator3,
+      Generator4, Generator5, Generator6, Generator7, Generator8, Generator9,
+      Generator10>(
+      g1, g2, g3, g4, g5, g6, g7, g8, g9, g10);
+}
+# endif  // GTEST_HAS_COMBINE
+
+
+
+# define TEST_P(test_case_name, test_name) \
+  class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \
+      : public test_case_name { \
+   public: \
+    GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {} \
+    virtual void TestBody(); \
+   private: \
+    static int AddToRegistry() { \
+      ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \
+          GetTestCasePatternHolder<test_case_name>(\
+              #test_case_name, __FILE__, __LINE__)->AddTestPattern(\
+                  #test_case_name, \
+                  #test_name, \
+                  new ::testing::internal::TestMetaFactory< \
+                      GTEST_TEST_CLASS_NAME_(test_case_name, test_name)>()); \
+      return 0; \
+    } \
+    static int gtest_registering_dummy_; \
+    GTEST_DISALLOW_COPY_AND_ASSIGN_(\
+        GTEST_TEST_CLASS_NAME_(test_case_name, test_name)); \
+  }; \
+  int GTEST_TEST_CLASS_NAME_(test_case_name, \
+                             test_name)::gtest_registering_dummy_ = \
+      GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::AddToRegistry(); \
+  void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestBody()
+
+# define INSTANTIATE_TEST_CASE_P(prefix, test_case_name, generator) \
+  ::testing::internal::ParamGenerator<test_case_name::ParamType> \
+      gtest_##prefix##test_case_name##_EvalGenerator_() { return generator; } \
+  int gtest_##prefix##test_case_name##_dummy_ = \
+      ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \
+          GetTestCasePatternHolder<test_case_name>(\
+              #test_case_name, __FILE__, __LINE__)->AddTestCaseInstantiation(\
+                  #prefix, \
+                  &gtest_##prefix##test_case_name##_EvalGenerator_, \
+                  __FILE__, __LINE__)
+
+}  // namespace testing
+
+#endif  // GTEST_HAS_PARAM_TEST
+
+#endif  // GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
diff --git a/google-breakpad/src/testing/gtest/include/gtest/gtest-param-test.h.pump b/google-breakpad/src/testing/gtest/include/gtest/gtest-param-test.h.pump
new file mode 100644
index 0000000..2dc9303
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/include/gtest/gtest-param-test.h.pump
@@ -0,0 +1,487 @@
+$$ -*- mode: c++; -*-
+$var n = 50  $$ Maximum length of Values arguments we want to support.
+$var maxtuple = 10  $$ Maximum number of Combine arguments we want to support.
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Authors: vladl@google.com (Vlad Losev)
+//
+// Macros and functions for implementing parameterized tests
+// in Google C++ Testing Framework (Google Test)
+//
+// This file is generated by a SCRIPT.  DO NOT EDIT BY HAND!
+//
+#ifndef GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
+#define GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
+
+
+// Value-parameterized tests allow you to test your code with different
+// parameters without writing multiple copies of the same test.
+//
+// Here is how you use value-parameterized tests:
+
+#if 0
+
+// To write value-parameterized tests, first you should define a fixture
+// class. It is usually derived from testing::TestWithParam<T> (see below for
+// another inheritance scheme that's sometimes useful in more complicated
+// class hierarchies), where the type of your parameter values.
+// TestWithParam<T> is itself derived from testing::Test. T can be any
+// copyable type. If it's a raw pointer, you are responsible for managing the
+// lifespan of the pointed values.
+
+class FooTest : public ::testing::TestWithParam<const char*> {
+  // You can implement all the usual class fixture members here.
+};
+
+// Then, use the TEST_P macro to define as many parameterized tests
+// for this fixture as you want. The _P suffix is for "parameterized"
+// or "pattern", whichever you prefer to think.
+
+TEST_P(FooTest, DoesBlah) {
+  // Inside a test, access the test parameter with the GetParam() method
+  // of the TestWithParam<T> class:
+  EXPECT_TRUE(foo.Blah(GetParam()));
+  ...
+}
+
+TEST_P(FooTest, HasBlahBlah) {
+  ...
+}
+
+// Finally, you can use INSTANTIATE_TEST_CASE_P to instantiate the test
+// case with any set of parameters you want. Google Test defines a number
+// of functions for generating test parameters. They return what we call
+// (surprise!) parameter generators. Here is a  summary of them, which
+// are all in the testing namespace:
+//
+//
+//  Range(begin, end [, step]) - Yields values {begin, begin+step,
+//                               begin+step+step, ...}. The values do not
+//                               include end. step defaults to 1.
+//  Values(v1, v2, ..., vN)    - Yields values {v1, v2, ..., vN}.
+//  ValuesIn(container)        - Yields values from a C-style array, an STL
+//  ValuesIn(begin,end)          container, or an iterator range [begin, end).
+//  Bool()                     - Yields sequence {false, true}.
+//  Combine(g1, g2, ..., gN)   - Yields all combinations (the Cartesian product
+//                               for the math savvy) of the values generated
+//                               by the N generators.
+//
+// For more details, see comments at the definitions of these functions below
+// in this file.
+//
+// The following statement will instantiate tests from the FooTest test case
+// each with parameter values "meeny", "miny", and "moe".
+
+INSTANTIATE_TEST_CASE_P(InstantiationName,
+                        FooTest,
+                        Values("meeny", "miny", "moe"));
+
+// To distinguish different instances of the pattern, (yes, you
+// can instantiate it more then once) the first argument to the
+// INSTANTIATE_TEST_CASE_P macro is a prefix that will be added to the
+// actual test case name. Remember to pick unique prefixes for different
+// instantiations. The tests from the instantiation above will have
+// these names:
+//
+//    * InstantiationName/FooTest.DoesBlah/0 for "meeny"
+//    * InstantiationName/FooTest.DoesBlah/1 for "miny"
+//    * InstantiationName/FooTest.DoesBlah/2 for "moe"
+//    * InstantiationName/FooTest.HasBlahBlah/0 for "meeny"
+//    * InstantiationName/FooTest.HasBlahBlah/1 for "miny"
+//    * InstantiationName/FooTest.HasBlahBlah/2 for "moe"
+//
+// You can use these names in --gtest_filter.
+//
+// This statement will instantiate all tests from FooTest again, each
+// with parameter values "cat" and "dog":
+
+const char* pets[] = {"cat", "dog"};
+INSTANTIATE_TEST_CASE_P(AnotherInstantiationName, FooTest, ValuesIn(pets));
+
+// The tests from the instantiation above will have these names:
+//
+//    * AnotherInstantiationName/FooTest.DoesBlah/0 for "cat"
+//    * AnotherInstantiationName/FooTest.DoesBlah/1 for "dog"
+//    * AnotherInstantiationName/FooTest.HasBlahBlah/0 for "cat"
+//    * AnotherInstantiationName/FooTest.HasBlahBlah/1 for "dog"
+//
+// Please note that INSTANTIATE_TEST_CASE_P will instantiate all tests
+// in the given test case, whether their definitions come before or
+// AFTER the INSTANTIATE_TEST_CASE_P statement.
+//
+// Please also note that generator expressions (including parameters to the
+// generators) are evaluated in InitGoogleTest(), after main() has started.
+// This allows the user on one hand, to adjust generator parameters in order
+// to dynamically determine a set of tests to run and on the other hand,
+// give the user a chance to inspect the generated tests with Google Test
+// reflection API before RUN_ALL_TESTS() is executed.
+//
+// You can see samples/sample7_unittest.cc and samples/sample8_unittest.cc
+// for more examples.
+//
+// In the future, we plan to publish the API for defining new parameter
+// generators. But for now this interface remains part of the internal
+// implementation and is subject to change.
+//
+//
+// A parameterized test fixture must be derived from testing::Test and from
+// testing::WithParamInterface<T>, where T is the type of the parameter
+// values. Inheriting from TestWithParam<T> satisfies that requirement because
+// TestWithParam<T> inherits from both Test and WithParamInterface. In more
+// complicated hierarchies, however, it is occasionally useful to inherit
+// separately from Test and WithParamInterface. For example:
+
+class BaseTest : public ::testing::Test {
+  // You can inherit all the usual members for a non-parameterized test
+  // fixture here.
+};
+
+class DerivedTest : public BaseTest, public ::testing::WithParamInterface<int> {
+  // The usual test fixture members go here too.
+};
+
+TEST_F(BaseTest, HasFoo) {
+  // This is an ordinary non-parameterized test.
+}
+
+TEST_P(DerivedTest, DoesBlah) {
+  // GetParam works just the same here as if you inherit from TestWithParam.
+  EXPECT_TRUE(foo.Blah(GetParam()));
+}
+
+#endif  // 0
+
+#include "gtest/internal/gtest-port.h"
+
+#if !GTEST_OS_SYMBIAN
+# include <utility>
+#endif
+
+// scripts/fuse_gtest.py depends on gtest's own header being #included
+// *unconditionally*.  Therefore these #includes cannot be moved
+// inside #if GTEST_HAS_PARAM_TEST.
+#include "gtest/internal/gtest-internal.h"
+#include "gtest/internal/gtest-param-util.h"
+#include "gtest/internal/gtest-param-util-generated.h"
+
+#if GTEST_HAS_PARAM_TEST
+
+namespace testing {
+
+// Functions producing parameter generators.
+//
+// Google Test uses these generators to produce parameters for value-
+// parameterized tests. When a parameterized test case is instantiated
+// with a particular generator, Google Test creates and runs tests
+// for each element in the sequence produced by the generator.
+//
+// In the following sample, tests from test case FooTest are instantiated
+// each three times with parameter values 3, 5, and 8:
+//
+// class FooTest : public TestWithParam<int> { ... };
+//
+// TEST_P(FooTest, TestThis) {
+// }
+// TEST_P(FooTest, TestThat) {
+// }
+// INSTANTIATE_TEST_CASE_P(TestSequence, FooTest, Values(3, 5, 8));
+//
+
+// Range() returns generators providing sequences of values in a range.
+//
+// Synopsis:
+// Range(start, end)
+//   - returns a generator producing a sequence of values {start, start+1,
+//     start+2, ..., }.
+// Range(start, end, step)
+//   - returns a generator producing a sequence of values {start, start+step,
+//     start+step+step, ..., }.
+// Notes:
+//   * The generated sequences never include end. For example, Range(1, 5)
+//     returns a generator producing a sequence {1, 2, 3, 4}. Range(1, 9, 2)
+//     returns a generator producing {1, 3, 5, 7}.
+//   * start and end must have the same type. That type may be any integral or
+//     floating-point type or a user defined type satisfying these conditions:
+//     * It must be assignable (have operator=() defined).
+//     * It must have operator+() (operator+(int-compatible type) for
+//       two-operand version).
+//     * It must have operator<() defined.
+//     Elements in the resulting sequences will also have that type.
+//   * Condition start < end must be satisfied in order for resulting sequences
+//     to contain any elements.
+//
+template <typename T, typename IncrementT>
+internal::ParamGenerator<T> Range(T start, T end, IncrementT step) {
+  return internal::ParamGenerator<T>(
+      new internal::RangeGenerator<T, IncrementT>(start, end, step));
+}
+
+template <typename T>
+internal::ParamGenerator<T> Range(T start, T end) {
+  return Range(start, end, 1);
+}
+
+// ValuesIn() function allows generation of tests with parameters coming from
+// a container.
+//
+// Synopsis:
+// ValuesIn(const T (&array)[N])
+//   - returns a generator producing sequences with elements from
+//     a C-style array.
+// ValuesIn(const Container& container)
+//   - returns a generator producing sequences with elements from
+//     an STL-style container.
+// ValuesIn(Iterator begin, Iterator end)
+//   - returns a generator producing sequences with elements from
+//     a range [begin, end) defined by a pair of STL-style iterators. These
+//     iterators can also be plain C pointers.
+//
+// Please note that ValuesIn copies the values from the containers
+// passed in and keeps them to generate tests in RUN_ALL_TESTS().
+//
+// Examples:
+//
+// This instantiates tests from test case StringTest
+// each with C-string values of "foo", "bar", and "baz":
+//
+// const char* strings[] = {"foo", "bar", "baz"};
+// INSTANTIATE_TEST_CASE_P(StringSequence, SrtingTest, ValuesIn(strings));
+//
+// This instantiates tests from test case StlStringTest
+// each with STL strings with values "a" and "b":
+//
+// ::std::vector< ::std::string> GetParameterStrings() {
+//   ::std::vector< ::std::string> v;
+//   v.push_back("a");
+//   v.push_back("b");
+//   return v;
+// }
+//
+// INSTANTIATE_TEST_CASE_P(CharSequence,
+//                         StlStringTest,
+//                         ValuesIn(GetParameterStrings()));
+//
+//
+// This will also instantiate tests from CharTest
+// each with parameter values 'a' and 'b':
+//
+// ::std::list<char> GetParameterChars() {
+//   ::std::list<char> list;
+//   list.push_back('a');
+//   list.push_back('b');
+//   return list;
+// }
+// ::std::list<char> l = GetParameterChars();
+// INSTANTIATE_TEST_CASE_P(CharSequence2,
+//                         CharTest,
+//                         ValuesIn(l.begin(), l.end()));
+//
+template <typename ForwardIterator>
+internal::ParamGenerator<
+  typename ::testing::internal::IteratorTraits<ForwardIterator>::value_type>
+ValuesIn(ForwardIterator begin, ForwardIterator end) {
+  typedef typename ::testing::internal::IteratorTraits<ForwardIterator>
+      ::value_type ParamType;
+  return internal::ParamGenerator<ParamType>(
+      new internal::ValuesInIteratorRangeGenerator<ParamType>(begin, end));
+}
+
+template <typename T, size_t N>
+internal::ParamGenerator<T> ValuesIn(const T (&array)[N]) {
+  return ValuesIn(array, array + N);
+}
+
+template <class Container>
+internal::ParamGenerator<typename Container::value_type> ValuesIn(
+    const Container& container) {
+  return ValuesIn(container.begin(), container.end());
+}
+
+// Values() allows generating tests from explicitly specified list of
+// parameters.
+//
+// Synopsis:
+// Values(T v1, T v2, ..., T vN)
+//   - returns a generator producing sequences with elements v1, v2, ..., vN.
+//
+// For example, this instantiates tests from test case BarTest each
+// with values "one", "two", and "three":
+//
+// INSTANTIATE_TEST_CASE_P(NumSequence, BarTest, Values("one", "two", "three"));
+//
+// This instantiates tests from test case BazTest each with values 1, 2, 3.5.
+// The exact type of values will depend on the type of parameter in BazTest.
+//
+// INSTANTIATE_TEST_CASE_P(FloatingNumbers, BazTest, Values(1, 2, 3.5));
+//
+// Currently, Values() supports from 1 to $n parameters.
+//
+$range i 1..n
+$for i [[
+$range j 1..i
+
+template <$for j, [[typename T$j]]>
+internal::ValueArray$i<$for j, [[T$j]]> Values($for j, [[T$j v$j]]) {
+  return internal::ValueArray$i<$for j, [[T$j]]>($for j, [[v$j]]);
+}
+
+]]
+
+// Bool() allows generating tests with parameters in a set of (false, true).
+//
+// Synopsis:
+// Bool()
+//   - returns a generator producing sequences with elements {false, true}.
+//
+// It is useful when testing code that depends on Boolean flags. Combinations
+// of multiple flags can be tested when several Bool()'s are combined using
+// Combine() function.
+//
+// In the following example all tests in the test case FlagDependentTest
+// will be instantiated twice with parameters false and true.
+//
+// class FlagDependentTest : public testing::TestWithParam<bool> {
+//   virtual void SetUp() {
+//     external_flag = GetParam();
+//   }
+// }
+// INSTANTIATE_TEST_CASE_P(BoolSequence, FlagDependentTest, Bool());
+//
+inline internal::ParamGenerator<bool> Bool() {
+  return Values(false, true);
+}
+
+# if GTEST_HAS_COMBINE
+// Combine() allows the user to combine two or more sequences to produce
+// values of a Cartesian product of those sequences' elements.
+//
+// Synopsis:
+// Combine(gen1, gen2, ..., genN)
+//   - returns a generator producing sequences with elements coming from
+//     the Cartesian product of elements from the sequences generated by
+//     gen1, gen2, ..., genN. The sequence elements will have a type of
+//     tuple<T1, T2, ..., TN> where T1, T2, ..., TN are the types
+//     of elements from sequences produces by gen1, gen2, ..., genN.
+//
+// Combine can have up to $maxtuple arguments. This number is currently limited
+// by the maximum number of elements in the tuple implementation used by Google
+// Test.
+//
+// Example:
+//
+// This will instantiate tests in test case AnimalTest each one with
+// the parameter values tuple("cat", BLACK), tuple("cat", WHITE),
+// tuple("dog", BLACK), and tuple("dog", WHITE):
+//
+// enum Color { BLACK, GRAY, WHITE };
+// class AnimalTest
+//     : public testing::TestWithParam<tuple<const char*, Color> > {...};
+//
+// TEST_P(AnimalTest, AnimalLooksNice) {...}
+//
+// INSTANTIATE_TEST_CASE_P(AnimalVariations, AnimalTest,
+//                         Combine(Values("cat", "dog"),
+//                                 Values(BLACK, WHITE)));
+//
+// This will instantiate tests in FlagDependentTest with all variations of two
+// Boolean flags:
+//
+// class FlagDependentTest
+//     : public testing::TestWithParam<tuple<bool, bool> > {
+//   virtual void SetUp() {
+//     // Assigns external_flag_1 and external_flag_2 values from the tuple.
+//     tie(external_flag_1, external_flag_2) = GetParam();
+//   }
+// };
+//
+// TEST_P(FlagDependentTest, TestFeature1) {
+//   // Test your code using external_flag_1 and external_flag_2 here.
+// }
+// INSTANTIATE_TEST_CASE_P(TwoBoolSequence, FlagDependentTest,
+//                         Combine(Bool(), Bool()));
+//
+$range i 2..maxtuple
+$for i [[
+$range j 1..i
+
+template <$for j, [[typename Generator$j]]>
+internal::CartesianProductHolder$i<$for j, [[Generator$j]]> Combine(
+    $for j, [[const Generator$j& g$j]]) {
+  return internal::CartesianProductHolder$i<$for j, [[Generator$j]]>(
+      $for j, [[g$j]]);
+}
+
+]]
+# endif  // GTEST_HAS_COMBINE
+
+
+
+# define TEST_P(test_case_name, test_name) \
+  class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \
+      : public test_case_name { \
+   public: \
+    GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {} \
+    virtual void TestBody(); \
+   private: \
+    static int AddToRegistry() { \
+      ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \
+          GetTestCasePatternHolder<test_case_name>(\
+              #test_case_name, __FILE__, __LINE__)->AddTestPattern(\
+                  #test_case_name, \
+                  #test_name, \
+                  new ::testing::internal::TestMetaFactory< \
+                      GTEST_TEST_CLASS_NAME_(test_case_name, test_name)>()); \
+      return 0; \
+    } \
+    static int gtest_registering_dummy_; \
+    GTEST_DISALLOW_COPY_AND_ASSIGN_(\
+        GTEST_TEST_CLASS_NAME_(test_case_name, test_name)); \
+  }; \
+  int GTEST_TEST_CLASS_NAME_(test_case_name, \
+                             test_name)::gtest_registering_dummy_ = \
+      GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::AddToRegistry(); \
+  void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestBody()
+
+# define INSTANTIATE_TEST_CASE_P(prefix, test_case_name, generator) \
+  ::testing::internal::ParamGenerator<test_case_name::ParamType> \
+      gtest_##prefix##test_case_name##_EvalGenerator_() { return generator; } \
+  int gtest_##prefix##test_case_name##_dummy_ = \
+      ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \
+          GetTestCasePatternHolder<test_case_name>(\
+              #test_case_name, __FILE__, __LINE__)->AddTestCaseInstantiation(\
+                  #prefix, \
+                  &gtest_##prefix##test_case_name##_EvalGenerator_, \
+                  __FILE__, __LINE__)
+
+}  // namespace testing
+
+#endif  // GTEST_HAS_PARAM_TEST
+
+#endif  // GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
diff --git a/google-breakpad/src/testing/gtest/include/gtest/gtest-printers.h b/google-breakpad/src/testing/gtest/include/gtest/gtest-printers.h
new file mode 100644
index 0000000..55d44fa
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/include/gtest/gtest-printers.h
@@ -0,0 +1,799 @@
+// Copyright 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Google Test - The Google C++ Testing Framework
+//
+// This file implements a universal value printer that can print a
+// value of any type T:
+//
+//   void ::testing::internal::UniversalPrinter<T>::Print(value, ostream_ptr);
+//
+// A user can teach this function how to print a class type T by
+// defining either operator<<() or PrintTo() in the namespace that
+// defines T.  More specifically, the FIRST defined function in the
+// following list will be used (assuming T is defined in namespace
+// foo):
+//
+//   1. foo::PrintTo(const T&, ostream*)
+//   2. operator<<(ostream&, const T&) defined in either foo or the
+//      global namespace.
+//
+// If none of the above is defined, it will print the debug string of
+// the value if it is a protocol buffer, or print the raw bytes in the
+// value otherwise.
+//
+// To aid debugging: when T is a reference type, the address of the
+// value is also printed; when T is a (const) char pointer, both the
+// pointer value and the NUL-terminated string it points to are
+// printed.
+//
+// We also provide some convenient wrappers:
+//
+//   // Prints a value to a string.  For a (const or not) char
+//   // pointer, the NUL-terminated string (but not the pointer) is
+//   // printed.
+//   std::string ::testing::PrintToString(const T& value);
+//
+//   // Prints a value tersely: for a reference type, the referenced
+//   // value (but not the address) is printed; for a (const or not) char
+//   // pointer, the NUL-terminated string (but not the pointer) is
+//   // printed.
+//   void ::testing::internal::UniversalTersePrint(const T& value, ostream*);
+//
+//   // Prints value using the type inferred by the compiler.  The difference
+//   // from UniversalTersePrint() is that this function prints both the
+//   // pointer and the NUL-terminated string for a (const or not) char pointer.
+//   void ::testing::internal::UniversalPrint(const T& value, ostream*);
+//
+//   // Prints the fields of a tuple tersely to a string vector, one
+//   // element for each field. Tuple support must be enabled in
+//   // gtest-port.h.
+//   std::vector<string> UniversalTersePrintTupleFieldsToStrings(
+//       const Tuple& value);
+//
+// Known limitation:
+//
+// The print primitives print the elements of an STL-style container
+// using the compiler-inferred type of *iter where iter is a
+// const_iterator of the container.  When const_iterator is an input
+// iterator but not a forward iterator, this inferred type may not
+// match value_type, and the print output may be incorrect.  In
+// practice, this is rarely a problem as for most containers
+// const_iterator is a forward iterator.  We'll fix this if there's an
+// actual need for it.  Note that this fix cannot rely on value_type
+// being defined as many user-defined container types don't have
+// value_type.
+
+#ifndef GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_
+#define GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_
+
+#include <ostream>  // NOLINT
+#include <sstream>
+#include <string>
+#include <utility>
+#include <vector>
+#include "gtest/internal/gtest-port.h"
+#include "gtest/internal/gtest-internal.h"
+
+namespace testing {
+
+// Definitions in the 'internal' and 'internal2' name spaces are
+// subject to change without notice.  DO NOT USE THEM IN USER CODE!
+namespace internal2 {
+
+// Prints the given number of bytes in the given object to the given
+// ostream.
+GTEST_API_ void PrintBytesInObjectTo(const unsigned char* obj_bytes,
+                                     size_t count,
+                                     ::std::ostream* os);
+
+// For selecting which printer to use when a given type has neither <<
+// nor PrintTo().
+enum TypeKind {
+  kProtobuf,              // a protobuf type
+  kConvertibleToInteger,  // a type implicitly convertible to BiggestInt
+                          // (e.g. a named or unnamed enum type)
+  kOtherType              // anything else
+};
+
+// TypeWithoutFormatter<T, kTypeKind>::PrintValue(value, os) is called
+// by the universal printer to print a value of type T when neither
+// operator<< nor PrintTo() is defined for T, where kTypeKind is the
+// "kind" of T as defined by enum TypeKind.
+template <typename T, TypeKind kTypeKind>
+class TypeWithoutFormatter {
+ public:
+  // This default version is called when kTypeKind is kOtherType.
+  static void PrintValue(const T& value, ::std::ostream* os) {
+    PrintBytesInObjectTo(reinterpret_cast<const unsigned char*>(&value),
+                         sizeof(value), os);
+  }
+};
+
+// We print a protobuf using its ShortDebugString() when the string
+// doesn't exceed this many characters; otherwise we print it using
+// DebugString() for better readability.
+const size_t kProtobufOneLinerMaxLength = 50;
+
+template <typename T>
+class TypeWithoutFormatter<T, kProtobuf> {
+ public:
+  static void PrintValue(const T& value, ::std::ostream* os) {
+    const ::testing::internal::string short_str = value.ShortDebugString();
+    const ::testing::internal::string pretty_str =
+        short_str.length() <= kProtobufOneLinerMaxLength ?
+        short_str : ("\n" + value.DebugString());
+    *os << ("<" + pretty_str + ">");
+  }
+};
+
+template <typename T>
+class TypeWithoutFormatter<T, kConvertibleToInteger> {
+ public:
+  // Since T has no << operator or PrintTo() but can be implicitly
+  // converted to BiggestInt, we print it as a BiggestInt.
+  //
+  // Most likely T is an enum type (either named or unnamed), in which
+  // case printing it as an integer is the desired behavior.  In case
+  // T is not an enum, printing it as an integer is the best we can do
+  // given that it has no user-defined printer.
+  static void PrintValue(const T& value, ::std::ostream* os) {
+    const internal::BiggestInt kBigInt = value;
+    *os << kBigInt;
+  }
+};
+
+// Prints the given value to the given ostream.  If the value is a
+// protocol message, its debug string is printed; if it's an enum or
+// of a type implicitly convertible to BiggestInt, it's printed as an
+// integer; otherwise the bytes in the value are printed.  This is
+// what UniversalPrinter<T>::Print() does when it knows nothing about
+// type T and T has neither << operator nor PrintTo().
+//
+// A user can override this behavior for a class type Foo by defining
+// a << operator in the namespace where Foo is defined.
+//
+// We put this operator in namespace 'internal2' instead of 'internal'
+// to simplify the implementation, as much code in 'internal' needs to
+// use << in STL, which would conflict with our own << were it defined
+// in 'internal'.
+//
+// Note that this operator<< takes a generic std::basic_ostream<Char,
+// CharTraits> type instead of the more restricted std::ostream.  If
+// we define it to take an std::ostream instead, we'll get an
+// "ambiguous overloads" compiler error when trying to print a type
+// Foo that supports streaming to std::basic_ostream<Char,
+// CharTraits>, as the compiler cannot tell whether
+// operator<<(std::ostream&, const T&) or
+// operator<<(std::basic_stream<Char, CharTraits>, const Foo&) is more
+// specific.
+template <typename Char, typename CharTraits, typename T>
+::std::basic_ostream<Char, CharTraits>& operator<<(
+    ::std::basic_ostream<Char, CharTraits>& os, const T& x) {
+  TypeWithoutFormatter<T,
+      (internal::IsAProtocolMessage<T>::value ? kProtobuf :
+       internal::ImplicitlyConvertible<const T&, internal::BiggestInt>::value ?
+       kConvertibleToInteger : kOtherType)>::PrintValue(x, &os);
+  return os;
+}
+
+}  // namespace internal2
+}  // namespace testing
+
+// This namespace MUST NOT BE NESTED IN ::testing, or the name look-up
+// magic needed for implementing UniversalPrinter won't work.
+namespace testing_internal {
+
+// Used to print a value that is not an STL-style container when the
+// user doesn't define PrintTo() for it.
+template <typename T>
+void DefaultPrintNonContainerTo(const T& value, ::std::ostream* os) {
+  // With the following statement, during unqualified name lookup,
+  // testing::internal2::operator<< appears as if it was declared in
+  // the nearest enclosing namespace that contains both
+  // ::testing_internal and ::testing::internal2, i.e. the global
+  // namespace.  For more details, refer to the C++ Standard section
+  // 7.3.4-1 [namespace.udir].  This allows us to fall back onto
+  // testing::internal2::operator<< in case T doesn't come with a <<
+  // operator.
+  //
+  // We cannot write 'using ::testing::internal2::operator<<;', which
+  // gcc 3.3 fails to compile due to a compiler bug.
+  using namespace ::testing::internal2;  // NOLINT
+
+  // Assuming T is defined in namespace foo, in the next statement,
+  // the compiler will consider all of:
+  //
+  //   1. foo::operator<< (thanks to Koenig look-up),
+  //   2. ::operator<< (as the current namespace is enclosed in ::),
+  //   3. testing::internal2::operator<< (thanks to the using statement above).
+  //
+  // The operator<< whose type matches T best will be picked.
+  //
+  // We deliberately allow #2 to be a candidate, as sometimes it's
+  // impossible to define #1 (e.g. when foo is ::std, defining
+  // anything in it is undefined behavior unless you are a compiler
+  // vendor.).
+  *os << value;
+}
+
+}  // namespace testing_internal
+
+namespace testing {
+namespace internal {
+
+// UniversalPrinter<T>::Print(value, ostream_ptr) prints the given
+// value to the given ostream.  The caller must ensure that
+// 'ostream_ptr' is not NULL, or the behavior is undefined.
+//
+// We define UniversalPrinter as a class template (as opposed to a
+// function template), as we need to partially specialize it for
+// reference types, which cannot be done with function templates.
+template <typename T>
+class UniversalPrinter;
+
+template <typename T>
+void UniversalPrint(const T& value, ::std::ostream* os);
+
+// Used to print an STL-style container when the user doesn't define
+// a PrintTo() for it.
+template <typename C>
+void DefaultPrintTo(IsContainer /* dummy */,
+                    false_type /* is not a pointer */,
+                    const C& container, ::std::ostream* os) {
+  const size_t kMaxCount = 32;  // The maximum number of elements to print.
+  *os << '{';
+  size_t count = 0;
+  for (typename C::const_iterator it = container.begin();
+       it != container.end(); ++it, ++count) {
+    if (count > 0) {
+      *os << ',';
+      if (count == kMaxCount) {  // Enough has been printed.
+        *os << " ...";
+        break;
+      }
+    }
+    *os << ' ';
+    // We cannot call PrintTo(*it, os) here as PrintTo() doesn't
+    // handle *it being a native array.
+    internal::UniversalPrint(*it, os);
+  }
+
+  if (count > 0) {
+    *os << ' ';
+  }
+  *os << '}';
+}
+
+// Used to print a pointer that is neither a char pointer nor a member
+// pointer, when the user doesn't define PrintTo() for it.  (A member
+// variable pointer or member function pointer doesn't really point to
+// a location in the address space.  Their representation is
+// implementation-defined.  Therefore they will be printed as raw
+// bytes.)
+template <typename T>
+void DefaultPrintTo(IsNotContainer /* dummy */,
+                    true_type /* is a pointer */,
+                    T* p, ::std::ostream* os) {
+  if (p == NULL) {
+    *os << "NULL";
+  } else {
+    // C++ doesn't allow casting from a function pointer to any object
+    // pointer.
+    //
+    // IsTrue() silences warnings: "Condition is always true",
+    // "unreachable code".
+    if (IsTrue(ImplicitlyConvertible<T*, const void*>::value)) {
+      // T is not a function type.  We just call << to print p,
+      // relying on ADL to pick up user-defined << for their pointer
+      // types, if any.
+      *os << p;
+    } else {
+      // T is a function type, so '*os << p' doesn't do what we want
+      // (it just prints p as bool).  We want to print p as a const
+      // void*.  However, we cannot cast it to const void* directly,
+      // even using reinterpret_cast, as earlier versions of gcc
+      // (e.g. 3.4.5) cannot compile the cast when p is a function
+      // pointer.  Casting to UInt64 first solves the problem.
+      *os << reinterpret_cast<const void*>(
+          reinterpret_cast<internal::UInt64>(p));
+    }
+  }
+}
+
+// Used to print a non-container, non-pointer value when the user
+// doesn't define PrintTo() for it.
+template <typename T>
+void DefaultPrintTo(IsNotContainer /* dummy */,
+                    false_type /* is not a pointer */,
+                    const T& value, ::std::ostream* os) {
+  ::testing_internal::DefaultPrintNonContainerTo(value, os);
+}
+
+// Prints the given value using the << operator if it has one;
+// otherwise prints the bytes in it.  This is what
+// UniversalPrinter<T>::Print() does when PrintTo() is not specialized
+// or overloaded for type T.
+//
+// A user can override this behavior for a class type Foo by defining
+// an overload of PrintTo() in the namespace where Foo is defined.  We
+// give the user this option as sometimes defining a << operator for
+// Foo is not desirable (e.g. the coding style may prevent doing it,
+// or there is already a << operator but it doesn't do what the user
+// wants).
+template <typename T>
+void PrintTo(const T& value, ::std::ostream* os) {
+  // DefaultPrintTo() is overloaded.  The type of its first two
+  // arguments determine which version will be picked.  If T is an
+  // STL-style container, the version for container will be called; if
+  // T is a pointer, the pointer version will be called; otherwise the
+  // generic version will be called.
+  //
+  // Note that we check for container types here, prior to we check
+  // for protocol message types in our operator<<.  The rationale is:
+  //
+  // For protocol messages, we want to give people a chance to
+  // override Google Mock's format by defining a PrintTo() or
+  // operator<<.  For STL containers, other formats can be
+  // incompatible with Google Mock's format for the container
+  // elements; therefore we check for container types here to ensure
+  // that our format is used.
+  //
+  // The second argument of DefaultPrintTo() is needed to bypass a bug
+  // in Symbian's C++ compiler that prevents it from picking the right
+  // overload between:
+  //
+  //   PrintTo(const T& x, ...);
+  //   PrintTo(T* x, ...);
+  DefaultPrintTo(IsContainerTest<T>(0), is_pointer<T>(), value, os);
+}
+
+// The following list of PrintTo() overloads tells
+// UniversalPrinter<T>::Print() how to print standard types (built-in
+// types, strings, plain arrays, and pointers).
+
+// Overloads for various char types.
+GTEST_API_ void PrintTo(unsigned char c, ::std::ostream* os);
+GTEST_API_ void PrintTo(signed char c, ::std::ostream* os);
+inline void PrintTo(char c, ::std::ostream* os) {
+  // When printing a plain char, we always treat it as unsigned.  This
+  // way, the output won't be affected by whether the compiler thinks
+  // char is signed or not.
+  PrintTo(static_cast<unsigned char>(c), os);
+}
+
+// Overloads for other simple built-in types.
+inline void PrintTo(bool x, ::std::ostream* os) {
+  *os << (x ? "true" : "false");
+}
+
+// Overload for wchar_t type.
+// Prints a wchar_t as a symbol if it is printable or as its internal
+// code otherwise and also as its decimal code (except for L'\0').
+// The L'\0' char is printed as "L'\\0'". The decimal code is printed
+// as signed integer when wchar_t is implemented by the compiler
+// as a signed type and is printed as an unsigned integer when wchar_t
+// is implemented as an unsigned type.
+GTEST_API_ void PrintTo(wchar_t wc, ::std::ostream* os);
+
+// Overloads for C strings.
+GTEST_API_ void PrintTo(const char* s, ::std::ostream* os);
+inline void PrintTo(char* s, ::std::ostream* os) {
+  PrintTo(ImplicitCast_<const char*>(s), os);
+}
+
+// signed/unsigned char is often used for representing binary data, so
+// we print pointers to it as void* to be safe.
+inline void PrintTo(const signed char* s, ::std::ostream* os) {
+  PrintTo(ImplicitCast_<const void*>(s), os);
+}
+inline void PrintTo(signed char* s, ::std::ostream* os) {
+  PrintTo(ImplicitCast_<const void*>(s), os);
+}
+inline void PrintTo(const unsigned char* s, ::std::ostream* os) {
+  PrintTo(ImplicitCast_<const void*>(s), os);
+}
+inline void PrintTo(unsigned char* s, ::std::ostream* os) {
+  PrintTo(ImplicitCast_<const void*>(s), os);
+}
+
+// MSVC can be configured to define wchar_t as a typedef of unsigned
+// short.  It defines _NATIVE_WCHAR_T_DEFINED when wchar_t is a native
+// type.  When wchar_t is a typedef, defining an overload for const
+// wchar_t* would cause unsigned short* be printed as a wide string,
+// possibly causing invalid memory accesses.
+#if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED)
+// Overloads for wide C strings
+GTEST_API_ void PrintTo(const wchar_t* s, ::std::ostream* os);
+inline void PrintTo(wchar_t* s, ::std::ostream* os) {
+  PrintTo(ImplicitCast_<const wchar_t*>(s), os);
+}
+#endif
+
+// Overload for C arrays.  Multi-dimensional arrays are printed
+// properly.
+
+// Prints the given number of elements in an array, without printing
+// the curly braces.
+template <typename T>
+void PrintRawArrayTo(const T a[], size_t count, ::std::ostream* os) {
+  UniversalPrint(a[0], os);
+  for (size_t i = 1; i != count; i++) {
+    *os << ", ";
+    UniversalPrint(a[i], os);
+  }
+}
+
+// Overloads for ::string and ::std::string.
+#if GTEST_HAS_GLOBAL_STRING
+GTEST_API_ void PrintStringTo(const ::string&s, ::std::ostream* os);
+inline void PrintTo(const ::string& s, ::std::ostream* os) {
+  PrintStringTo(s, os);
+}
+#endif  // GTEST_HAS_GLOBAL_STRING
+
+GTEST_API_ void PrintStringTo(const ::std::string&s, ::std::ostream* os);
+inline void PrintTo(const ::std::string& s, ::std::ostream* os) {
+  PrintStringTo(s, os);
+}
+
+// Overloads for ::wstring and ::std::wstring.
+#if GTEST_HAS_GLOBAL_WSTRING
+GTEST_API_ void PrintWideStringTo(const ::wstring&s, ::std::ostream* os);
+inline void PrintTo(const ::wstring& s, ::std::ostream* os) {
+  PrintWideStringTo(s, os);
+}
+#endif  // GTEST_HAS_GLOBAL_WSTRING
+
+#if GTEST_HAS_STD_WSTRING
+GTEST_API_ void PrintWideStringTo(const ::std::wstring&s, ::std::ostream* os);
+inline void PrintTo(const ::std::wstring& s, ::std::ostream* os) {
+  PrintWideStringTo(s, os);
+}
+#endif  // GTEST_HAS_STD_WSTRING
+
+#if GTEST_HAS_TR1_TUPLE
+// Overload for ::std::tr1::tuple.  Needed for printing function arguments,
+// which are packed as tuples.
+
+// Helper function for printing a tuple.  T must be instantiated with
+// a tuple type.
+template <typename T>
+void PrintTupleTo(const T& t, ::std::ostream* os);
+
+// Overloaded PrintTo() for tuples of various arities.  We support
+// tuples of up-to 10 fields.  The following implementation works
+// regardless of whether tr1::tuple is implemented using the
+// non-standard variadic template feature or not.
+
+inline void PrintTo(const ::std::tr1::tuple<>& t, ::std::ostream* os) {
+  PrintTupleTo(t, os);
+}
+
+template <typename T1>
+void PrintTo(const ::std::tr1::tuple<T1>& t, ::std::ostream* os) {
+  PrintTupleTo(t, os);
+}
+
+template <typename T1, typename T2>
+void PrintTo(const ::std::tr1::tuple<T1, T2>& t, ::std::ostream* os) {
+  PrintTupleTo(t, os);
+}
+
+template <typename T1, typename T2, typename T3>
+void PrintTo(const ::std::tr1::tuple<T1, T2, T3>& t, ::std::ostream* os) {
+  PrintTupleTo(t, os);
+}
+
+template <typename T1, typename T2, typename T3, typename T4>
+void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4>& t, ::std::ostream* os) {
+  PrintTupleTo(t, os);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5>
+void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4, T5>& t,
+             ::std::ostream* os) {
+  PrintTupleTo(t, os);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+          typename T6>
+void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4, T5, T6>& t,
+             ::std::ostream* os) {
+  PrintTupleTo(t, os);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+          typename T6, typename T7>
+void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7>& t,
+             ::std::ostream* os) {
+  PrintTupleTo(t, os);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+          typename T6, typename T7, typename T8>
+void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8>& t,
+             ::std::ostream* os) {
+  PrintTupleTo(t, os);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+          typename T6, typename T7, typename T8, typename T9>
+void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9>& t,
+             ::std::ostream* os) {
+  PrintTupleTo(t, os);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+          typename T6, typename T7, typename T8, typename T9, typename T10>
+void PrintTo(
+    const ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>& t,
+    ::std::ostream* os) {
+  PrintTupleTo(t, os);
+}
+#endif  // GTEST_HAS_TR1_TUPLE
+
+// Overload for std::pair.
+template <typename T1, typename T2>
+void PrintTo(const ::std::pair<T1, T2>& value, ::std::ostream* os) {
+  *os << '(';
+  // We cannot use UniversalPrint(value.first, os) here, as T1 may be
+  // a reference type.  The same for printing value.second.
+  UniversalPrinter<T1>::Print(value.first, os);
+  *os << ", ";
+  UniversalPrinter<T2>::Print(value.second, os);
+  *os << ')';
+}
+
+// Implements printing a non-reference type T by letting the compiler
+// pick the right overload of PrintTo() for T.
+template <typename T>
+class UniversalPrinter {
+ public:
+  // MSVC warns about adding const to a function type, so we want to
+  // disable the warning.
+#ifdef _MSC_VER
+# pragma warning(push)          // Saves the current warning state.
+# pragma warning(disable:4180)  // Temporarily disables warning 4180.
+#endif  // _MSC_VER
+
+  // Note: we deliberately don't call this PrintTo(), as that name
+  // conflicts with ::testing::internal::PrintTo in the body of the
+  // function.
+  static void Print(const T& value, ::std::ostream* os) {
+    // By default, ::testing::internal::PrintTo() is used for printing
+    // the value.
+    //
+    // Thanks to Koenig look-up, if T is a class and has its own
+    // PrintTo() function defined in its namespace, that function will
+    // be visible here.  Since it is more specific than the generic ones
+    // in ::testing::internal, it will be picked by the compiler in the
+    // following statement - exactly what we want.
+    PrintTo(value, os);
+  }
+
+#ifdef _MSC_VER
+# pragma warning(pop)           // Restores the warning state.
+#endif  // _MSC_VER
+};
+
+// UniversalPrintArray(begin, len, os) prints an array of 'len'
+// elements, starting at address 'begin'.
+template <typename T>
+void UniversalPrintArray(const T* begin, size_t len, ::std::ostream* os) {
+  if (len == 0) {
+    *os << "{}";
+  } else {
+    *os << "{ ";
+    const size_t kThreshold = 18;
+    const size_t kChunkSize = 8;
+    // If the array has more than kThreshold elements, we'll have to
+    // omit some details by printing only the first and the last
+    // kChunkSize elements.
+    // TODO(wan@google.com): let the user control the threshold using a flag.
+    if (len <= kThreshold) {
+      PrintRawArrayTo(begin, len, os);
+    } else {
+      PrintRawArrayTo(begin, kChunkSize, os);
+      *os << ", ..., ";
+      PrintRawArrayTo(begin + len - kChunkSize, kChunkSize, os);
+    }
+    *os << " }";
+  }
+}
+// This overload prints a (const) char array compactly.
+GTEST_API_ void UniversalPrintArray(const char* begin,
+                                    size_t len,
+                                    ::std::ostream* os);
+
+// Implements printing an array type T[N].
+template <typename T, size_t N>
+class UniversalPrinter<T[N]> {
+ public:
+  // Prints the given array, omitting some elements when there are too
+  // many.
+  static void Print(const T (&a)[N], ::std::ostream* os) {
+    UniversalPrintArray(a, N, os);
+  }
+};
+
+// Implements printing a reference type T&.
+template <typename T>
+class UniversalPrinter<T&> {
+ public:
+  // MSVC warns about adding const to a function type, so we want to
+  // disable the warning.
+#ifdef _MSC_VER
+# pragma warning(push)          // Saves the current warning state.
+# pragma warning(disable:4180)  // Temporarily disables warning 4180.
+#endif  // _MSC_VER
+
+  static void Print(const T& value, ::std::ostream* os) {
+    // Prints the address of the value.  We use reinterpret_cast here
+    // as static_cast doesn't compile when T is a function type.
+    *os << "@" << reinterpret_cast<const void*>(&value) << " ";
+
+    // Then prints the value itself.
+    UniversalPrint(value, os);
+  }
+
+#ifdef _MSC_VER
+# pragma warning(pop)           // Restores the warning state.
+#endif  // _MSC_VER
+};
+
+// Prints a value tersely: for a reference type, the referenced value
+// (but not the address) is printed; for a (const) char pointer, the
+// NUL-terminated string (but not the pointer) is printed.
+template <typename T>
+void UniversalTersePrint(const T& value, ::std::ostream* os) {
+  UniversalPrint(value, os);
+}
+inline void UniversalTersePrint(const char* str, ::std::ostream* os) {
+  if (str == NULL) {
+    *os << "NULL";
+  } else {
+    UniversalPrint(string(str), os);
+  }
+}
+inline void UniversalTersePrint(char* str, ::std::ostream* os) {
+  UniversalTersePrint(static_cast<const char*>(str), os);
+}
+
+// Prints a value using the type inferred by the compiler.  The
+// difference between this and UniversalTersePrint() is that for a
+// (const) char pointer, this prints both the pointer and the
+// NUL-terminated string.
+template <typename T>
+void UniversalPrint(const T& value, ::std::ostream* os) {
+  // A workarond for the bug in VC++ 7.1 that prevents us from instantiating
+  // UniversalPrinter with T directly.
+  typedef T T1;
+  UniversalPrinter<T1>::Print(value, os);
+}
+
+#if GTEST_HAS_TR1_TUPLE
+typedef ::std::vector<string> Strings;
+
+// This helper template allows PrintTo() for tuples and
+// UniversalTersePrintTupleFieldsToStrings() to be defined by
+// induction on the number of tuple fields.  The idea is that
+// TuplePrefixPrinter<N>::PrintPrefixTo(t, os) prints the first N
+// fields in tuple t, and can be defined in terms of
+// TuplePrefixPrinter<N - 1>.
+
+// The inductive case.
+template <size_t N>
+struct TuplePrefixPrinter {
+  // Prints the first N fields of a tuple.
+  template <typename Tuple>
+  static void PrintPrefixTo(const Tuple& t, ::std::ostream* os) {
+    TuplePrefixPrinter<N - 1>::PrintPrefixTo(t, os);
+    *os << ", ";
+    UniversalPrinter<typename ::std::tr1::tuple_element<N - 1, Tuple>::type>
+        ::Print(::std::tr1::get<N - 1>(t), os);
+  }
+
+  // Tersely prints the first N fields of a tuple to a string vector,
+  // one element for each field.
+  template <typename Tuple>
+  static void TersePrintPrefixToStrings(const Tuple& t, Strings* strings) {
+    TuplePrefixPrinter<N - 1>::TersePrintPrefixToStrings(t, strings);
+    ::std::stringstream ss;
+    UniversalTersePrint(::std::tr1::get<N - 1>(t), &ss);
+    strings->push_back(ss.str());
+  }
+};
+
+// Base cases.
+template <>
+struct TuplePrefixPrinter<0> {
+  template <typename Tuple>
+  static void PrintPrefixTo(const Tuple&, ::std::ostream*) {}
+
+  template <typename Tuple>
+  static void TersePrintPrefixToStrings(const Tuple&, Strings*) {}
+};
+// We have to specialize the entire TuplePrefixPrinter<> class
+// template here, even though the definition of
+// TersePrintPrefixToStrings() is the same as the generic version, as
+// Embarcadero (formerly CodeGear, formerly Borland) C++ doesn't
+// support specializing a method template of a class template.
+template <>
+struct TuplePrefixPrinter<1> {
+  template <typename Tuple>
+  static void PrintPrefixTo(const Tuple& t, ::std::ostream* os) {
+    UniversalPrinter<typename ::std::tr1::tuple_element<0, Tuple>::type>::
+        Print(::std::tr1::get<0>(t), os);
+  }
+
+  template <typename Tuple>
+  static void TersePrintPrefixToStrings(const Tuple& t, Strings* strings) {
+    ::std::stringstream ss;
+    UniversalTersePrint(::std::tr1::get<0>(t), &ss);
+    strings->push_back(ss.str());
+  }
+};
+
+// Helper function for printing a tuple.  T must be instantiated with
+// a tuple type.
+template <typename T>
+void PrintTupleTo(const T& t, ::std::ostream* os) {
+  *os << "(";
+  TuplePrefixPrinter< ::std::tr1::tuple_size<T>::value>::
+      PrintPrefixTo(t, os);
+  *os << ")";
+}
+
+// Prints the fields of a tuple tersely to a string vector, one
+// element for each field.  See the comment before
+// UniversalTersePrint() for how we define "tersely".
+template <typename Tuple>
+Strings UniversalTersePrintTupleFieldsToStrings(const Tuple& value) {
+  Strings result;
+  TuplePrefixPrinter< ::std::tr1::tuple_size<Tuple>::value>::
+      TersePrintPrefixToStrings(value, &result);
+  return result;
+}
+#endif  // GTEST_HAS_TR1_TUPLE
+
+}  // namespace internal
+
+template <typename T>
+::std::string PrintToString(const T& value) {
+  ::std::stringstream ss;
+  internal::UniversalTersePrint(value, &ss);
+  return ss.str();
+}
+
+}  // namespace testing
+
+#endif  // GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_
diff --git a/google-breakpad/src/testing/gtest/include/gtest/gtest-spi.h b/google-breakpad/src/testing/gtest/include/gtest/gtest-spi.h
new file mode 100644
index 0000000..f63fa9a
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/include/gtest/gtest-spi.h
@@ -0,0 +1,232 @@
+// Copyright 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+//
+// Utilities for testing Google Test itself and code that uses Google Test
+// (e.g. frameworks built on top of Google Test).
+
+#ifndef GTEST_INCLUDE_GTEST_GTEST_SPI_H_
+#define GTEST_INCLUDE_GTEST_GTEST_SPI_H_
+
+#include "gtest/gtest.h"
+
+namespace testing {
+
+// This helper class can be used to mock out Google Test failure reporting
+// so that we can test Google Test or code that builds on Google Test.
+//
+// An object of this class appends a TestPartResult object to the
+// TestPartResultArray object given in the constructor whenever a Google Test
+// failure is reported. It can either intercept only failures that are
+// generated in the same thread that created this object or it can intercept
+// all generated failures. The scope of this mock object can be controlled with
+// the second argument to the two arguments constructor.
+class GTEST_API_ ScopedFakeTestPartResultReporter
+    : public TestPartResultReporterInterface {
+ public:
+  // The two possible mocking modes of this object.
+  enum InterceptMode {
+    INTERCEPT_ONLY_CURRENT_THREAD,  // Intercepts only thread local failures.
+    INTERCEPT_ALL_THREADS           // Intercepts all failures.
+  };
+
+  // The c'tor sets this object as the test part result reporter used
+  // by Google Test.  The 'result' parameter specifies where to report the
+  // results. This reporter will only catch failures generated in the current
+  // thread. DEPRECATED
+  explicit ScopedFakeTestPartResultReporter(TestPartResultArray* result);
+
+  // Same as above, but you can choose the interception scope of this object.
+  ScopedFakeTestPartResultReporter(InterceptMode intercept_mode,
+                                   TestPartResultArray* result);
+
+  // The d'tor restores the previous test part result reporter.
+  virtual ~ScopedFakeTestPartResultReporter();
+
+  // Appends the TestPartResult object to the TestPartResultArray
+  // received in the constructor.
+  //
+  // This method is from the TestPartResultReporterInterface
+  // interface.
+  virtual void ReportTestPartResult(const TestPartResult& result);
+ private:
+  void Init();
+
+  const InterceptMode intercept_mode_;
+  TestPartResultReporterInterface* old_reporter_;
+  TestPartResultArray* const result_;
+
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(ScopedFakeTestPartResultReporter);
+};
+
+namespace internal {
+
+// A helper class for implementing EXPECT_FATAL_FAILURE() and
+// EXPECT_NONFATAL_FAILURE().  Its destructor verifies that the given
+// TestPartResultArray contains exactly one failure that has the given
+// type and contains the given substring.  If that's not the case, a
+// non-fatal failure will be generated.
+class GTEST_API_ SingleFailureChecker {
+ public:
+  // The constructor remembers the arguments.
+  SingleFailureChecker(const TestPartResultArray* results,
+                       TestPartResult::Type type,
+                       const string& substr);
+  ~SingleFailureChecker();
+ private:
+  const TestPartResultArray* const results_;
+  const TestPartResult::Type type_;
+  const string substr_;
+
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(SingleFailureChecker);
+};
+
+}  // namespace internal
+
+}  // namespace testing
+
+// A set of macros for testing Google Test assertions or code that's expected
+// to generate Google Test fatal failures.  It verifies that the given
+// statement will cause exactly one fatal Google Test failure with 'substr'
+// being part of the failure message.
+//
+// There are two different versions of this macro. EXPECT_FATAL_FAILURE only
+// affects and considers failures generated in the current thread and
+// EXPECT_FATAL_FAILURE_ON_ALL_THREADS does the same but for all threads.
+//
+// The verification of the assertion is done correctly even when the statement
+// throws an exception or aborts the current function.
+//
+// Known restrictions:
+//   - 'statement' cannot reference local non-static variables or
+//     non-static members of the current object.
+//   - 'statement' cannot return a value.
+//   - You cannot stream a failure message to this macro.
+//
+// Note that even though the implementations of the following two
+// macros are much alike, we cannot refactor them to use a common
+// helper macro, due to some peculiarity in how the preprocessor
+// works.  The AcceptsMacroThatExpandsToUnprotectedComma test in
+// gtest_unittest.cc will fail to compile if we do that.
+#define EXPECT_FATAL_FAILURE(statement, substr) \
+  do { \
+    class GTestExpectFatalFailureHelper {\
+     public:\
+      static void Execute() { statement; }\
+    };\
+    ::testing::TestPartResultArray gtest_failures;\
+    ::testing::internal::SingleFailureChecker gtest_checker(\
+        &gtest_failures, ::testing::TestPartResult::kFatalFailure, (substr));\
+    {\
+      ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\
+          ::testing::ScopedFakeTestPartResultReporter:: \
+          INTERCEPT_ONLY_CURRENT_THREAD, &gtest_failures);\
+      GTestExpectFatalFailureHelper::Execute();\
+    }\
+  } while (::testing::internal::AlwaysFalse())
+
+#define EXPECT_FATAL_FAILURE_ON_ALL_THREADS(statement, substr) \
+  do { \
+    class GTestExpectFatalFailureHelper {\
+     public:\
+      static void Execute() { statement; }\
+    };\
+    ::testing::TestPartResultArray gtest_failures;\
+    ::testing::internal::SingleFailureChecker gtest_checker(\
+        &gtest_failures, ::testing::TestPartResult::kFatalFailure, (substr));\
+    {\
+      ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\
+          ::testing::ScopedFakeTestPartResultReporter:: \
+          INTERCEPT_ALL_THREADS, &gtest_failures);\
+      GTestExpectFatalFailureHelper::Execute();\
+    }\
+  } while (::testing::internal::AlwaysFalse())
+
+// A macro for testing Google Test assertions or code that's expected to
+// generate Google Test non-fatal failures.  It asserts that the given
+// statement will cause exactly one non-fatal Google Test failure with 'substr'
+// being part of the failure message.
+//
+// There are two different versions of this macro. EXPECT_NONFATAL_FAILURE only
+// affects and considers failures generated in the current thread and
+// EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS does the same but for all threads.
+//
+// 'statement' is allowed to reference local variables and members of
+// the current object.
+//
+// The verification of the assertion is done correctly even when the statement
+// throws an exception or aborts the current function.
+//
+// Known restrictions:
+//   - You cannot stream a failure message to this macro.
+//
+// Note that even though the implementations of the following two
+// macros are much alike, we cannot refactor them to use a common
+// helper macro, due to some peculiarity in how the preprocessor
+// works.  If we do that, the code won't compile when the user gives
+// EXPECT_NONFATAL_FAILURE() a statement that contains a macro that
+// expands to code containing an unprotected comma.  The
+// AcceptsMacroThatExpandsToUnprotectedComma test in gtest_unittest.cc
+// catches that.
+//
+// For the same reason, we have to write
+//   if (::testing::internal::AlwaysTrue()) { statement; }
+// instead of
+//   GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement)
+// to avoid an MSVC warning on unreachable code.
+#define EXPECT_NONFATAL_FAILURE(statement, substr) \
+  do {\
+    ::testing::TestPartResultArray gtest_failures;\
+    ::testing::internal::SingleFailureChecker gtest_checker(\
+        &gtest_failures, ::testing::TestPartResult::kNonFatalFailure, \
+        (substr));\
+    {\
+      ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\
+          ::testing::ScopedFakeTestPartResultReporter:: \
+          INTERCEPT_ONLY_CURRENT_THREAD, &gtest_failures);\
+      if (::testing::internal::AlwaysTrue()) { statement; }\
+    }\
+  } while (::testing::internal::AlwaysFalse())
+
+#define EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS(statement, substr) \
+  do {\
+    ::testing::TestPartResultArray gtest_failures;\
+    ::testing::internal::SingleFailureChecker gtest_checker(\
+        &gtest_failures, ::testing::TestPartResult::kNonFatalFailure, \
+        (substr));\
+    {\
+      ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\
+          ::testing::ScopedFakeTestPartResultReporter::INTERCEPT_ALL_THREADS, \
+          &gtest_failures);\
+      if (::testing::internal::AlwaysTrue()) { statement; }\
+    }\
+  } while (::testing::internal::AlwaysFalse())
+
+#endif  // GTEST_INCLUDE_GTEST_GTEST_SPI_H_
diff --git a/google-breakpad/src/testing/gtest/include/gtest/gtest-test-part.h b/google-breakpad/src/testing/gtest/include/gtest/gtest-test-part.h
new file mode 100644
index 0000000..4615147
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/include/gtest/gtest-test-part.h
@@ -0,0 +1,177 @@
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: mheule@google.com (Markus Heule)
+//
+
+#ifndef GTEST_INCLUDE_GTEST_GTEST_TEST_PART_H_
+#define GTEST_INCLUDE_GTEST_GTEST_TEST_PART_H_
+
+#include <iosfwd>
+#include <vector>
+#include "gtest/internal/gtest-internal.h"
+#include "gtest/internal/gtest-string.h"
+
+namespace testing {
+
+// A copyable object representing the result of a test part (i.e. an
+// assertion or an explicit FAIL(), ADD_FAILURE(), or SUCCESS()).
+//
+// Don't inherit from TestPartResult as its destructor is not virtual.
+class GTEST_API_ TestPartResult {
+ public:
+  // The possible outcomes of a test part (i.e. an assertion or an
+  // explicit SUCCEED(), FAIL(), or ADD_FAILURE()).
+  enum Type {
+    kSuccess,          // Succeeded.
+    kNonFatalFailure,  // Failed but the test can continue.
+    kFatalFailure      // Failed and the test should be terminated.
+  };
+
+  // C'tor.  TestPartResult does NOT have a default constructor.
+  // Always use this constructor (with parameters) to create a
+  // TestPartResult object.
+  TestPartResult(Type a_type,
+                 const char* a_file_name,
+                 int a_line_number,
+                 const char* a_message)
+      : type_(a_type),
+        file_name_(a_file_name),
+        line_number_(a_line_number),
+        summary_(ExtractSummary(a_message)),
+        message_(a_message) {
+  }
+
+  // Gets the outcome of the test part.
+  Type type() const { return type_; }
+
+  // Gets the name of the source file where the test part took place, or
+  // NULL if it's unknown.
+  const char* file_name() const { return file_name_.c_str(); }
+
+  // Gets the line in the source file where the test part took place,
+  // or -1 if it's unknown.
+  int line_number() const { return line_number_; }
+
+  // Gets the summary of the failure message.
+  const char* summary() const { return summary_.c_str(); }
+
+  // Gets the message associated with the test part.
+  const char* message() const { return message_.c_str(); }
+
+  // Returns true iff the test part passed.
+  bool passed() const { return type_ == kSuccess; }
+
+  // Returns true iff the test part failed.
+  bool failed() const { return type_ != kSuccess; }
+
+  // Returns true iff the test part non-fatally failed.
+  bool nonfatally_failed() const { return type_ == kNonFatalFailure; }
+
+  // Returns true iff the test part fatally failed.
+  bool fatally_failed() const { return type_ == kFatalFailure; }
+
+ private:
+  Type type_;
+
+  // Gets the summary of the failure message by omitting the stack
+  // trace in it.
+  static internal::String ExtractSummary(const char* message);
+
+  // The name of the source file where the test part took place, or
+  // NULL if the source file is unknown.
+  internal::String file_name_;
+  // The line in the source file where the test part took place, or -1
+  // if the line number is unknown.
+  int line_number_;
+  internal::String summary_;  // The test failure summary.
+  internal::String message_;  // The test failure message.
+};
+
+// Prints a TestPartResult object.
+std::ostream& operator<<(std::ostream& os, const TestPartResult& result);
+
+// An array of TestPartResult objects.
+//
+// Don't inherit from TestPartResultArray as its destructor is not
+// virtual.
+class GTEST_API_ TestPartResultArray {
+ public:
+  TestPartResultArray() {}
+
+  // Appends the given TestPartResult to the array.
+  void Append(const TestPartResult& result);
+
+  // Returns the TestPartResult at the given index (0-based).
+  const TestPartResult& GetTestPartResult(int index) const;
+
+  // Returns the number of TestPartResult objects in the array.
+  int size() const;
+
+ private:
+  std::vector<TestPartResult> array_;
+
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(TestPartResultArray);
+};
+
+// This interface knows how to report a test part result.
+class TestPartResultReporterInterface {
+ public:
+  virtual ~TestPartResultReporterInterface() {}
+
+  virtual void ReportTestPartResult(const TestPartResult& result) = 0;
+};
+
+namespace internal {
+
+// This helper class is used by {ASSERT|EXPECT}_NO_FATAL_FAILURE to check if a
+// statement generates new fatal failures. To do so it registers itself as the
+// current test part result reporter. Besides checking if fatal failures were
+// reported, it only delegates the reporting to the former result reporter.
+// The original result reporter is restored in the destructor.
+// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+class GTEST_API_ HasNewFatalFailureHelper
+    : public TestPartResultReporterInterface {
+ public:
+  HasNewFatalFailureHelper();
+  virtual ~HasNewFatalFailureHelper();
+  virtual void ReportTestPartResult(const TestPartResult& result);
+  bool has_new_fatal_failure() const { return has_new_fatal_failure_; }
+ private:
+  bool has_new_fatal_failure_;
+  TestPartResultReporterInterface* original_reporter_;
+
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(HasNewFatalFailureHelper);
+};
+
+}  // namespace internal
+
+}  // namespace testing
+
+#endif  // GTEST_INCLUDE_GTEST_GTEST_TEST_PART_H_
diff --git a/google-breakpad/src/testing/gtest/include/gtest/gtest-typed-test.h b/google-breakpad/src/testing/gtest/include/gtest/gtest-typed-test.h
new file mode 100644
index 0000000..fe1e83b
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/include/gtest/gtest-typed-test.h
@@ -0,0 +1,259 @@
+// Copyright 2008 Google Inc.
+// All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+#ifndef GTEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_
+#define GTEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_
+
+// This header implements typed tests and type-parameterized tests.
+
+// Typed (aka type-driven) tests repeat the same test for types in a
+// list.  You must know which types you want to test with when writing
+// typed tests. Here's how you do it:
+
+#if 0
+
+// First, define a fixture class template.  It should be parameterized
+// by a type.  Remember to derive it from testing::Test.
+template <typename T>
+class FooTest : public testing::Test {
+ public:
+  ...
+  typedef std::list<T> List;
+  static T shared_;
+  T value_;
+};
+
+// Next, associate a list of types with the test case, which will be
+// repeated for each type in the list.  The typedef is necessary for
+// the macro to parse correctly.
+typedef testing::Types<char, int, unsigned int> MyTypes;
+TYPED_TEST_CASE(FooTest, MyTypes);
+
+// If the type list contains only one type, you can write that type
+// directly without Types<...>:
+//   TYPED_TEST_CASE(FooTest, int);
+
+// Then, use TYPED_TEST() instead of TEST_F() to define as many typed
+// tests for this test case as you want.
+TYPED_TEST(FooTest, DoesBlah) {
+  // Inside a test, refer to TypeParam to get the type parameter.
+  // Since we are inside a derived class template, C++ requires use to
+  // visit the members of FooTest via 'this'.
+  TypeParam n = this->value_;
+
+  // To visit static members of the fixture, add the TestFixture::
+  // prefix.
+  n += TestFixture::shared_;
+
+  // To refer to typedefs in the fixture, add the "typename
+  // TestFixture::" prefix.
+  typename TestFixture::List values;
+  values.push_back(n);
+  ...
+}
+
+TYPED_TEST(FooTest, HasPropertyA) { ... }
+
+#endif  // 0
+
+// Type-parameterized tests are abstract test patterns parameterized
+// by a type.  Compared with typed tests, type-parameterized tests
+// allow you to define the test pattern without knowing what the type
+// parameters are.  The defined pattern can be instantiated with
+// different types any number of times, in any number of translation
+// units.
+//
+// If you are designing an interface or concept, you can define a
+// suite of type-parameterized tests to verify properties that any
+// valid implementation of the interface/concept should have.  Then,
+// each implementation can easily instantiate the test suite to verify
+// that it conforms to the requirements, without having to write
+// similar tests repeatedly.  Here's an example:
+
+#if 0
+
+// First, define a fixture class template.  It should be parameterized
+// by a type.  Remember to derive it from testing::Test.
+template <typename T>
+class FooTest : public testing::Test {
+  ...
+};
+
+// Next, declare that you will define a type-parameterized test case
+// (the _P suffix is for "parameterized" or "pattern", whichever you
+// prefer):
+TYPED_TEST_CASE_P(FooTest);
+
+// Then, use TYPED_TEST_P() to define as many type-parameterized tests
+// for this type-parameterized test case as you want.
+TYPED_TEST_P(FooTest, DoesBlah) {
+  // Inside a test, refer to TypeParam to get the type parameter.
+  TypeParam n = 0;
+  ...
+}
+
+TYPED_TEST_P(FooTest, HasPropertyA) { ... }
+
+// Now the tricky part: you need to register all test patterns before
+// you can instantiate them.  The first argument of the macro is the
+// test case name; the rest are the names of the tests in this test
+// case.
+REGISTER_TYPED_TEST_CASE_P(FooTest,
+                           DoesBlah, HasPropertyA);
+
+// Finally, you are free to instantiate the pattern with the types you
+// want.  If you put the above code in a header file, you can #include
+// it in multiple C++ source files and instantiate it multiple times.
+//
+// To distinguish different instances of the pattern, the first
+// argument to the INSTANTIATE_* macro is a prefix that will be added
+// to the actual test case name.  Remember to pick unique prefixes for
+// different instances.
+typedef testing::Types<char, int, unsigned int> MyTypes;
+INSTANTIATE_TYPED_TEST_CASE_P(My, FooTest, MyTypes);
+
+// If the type list contains only one type, you can write that type
+// directly without Types<...>:
+//   INSTANTIATE_TYPED_TEST_CASE_P(My, FooTest, int);
+
+#endif  // 0
+
+#include "gtest/internal/gtest-port.h"
+#include "gtest/internal/gtest-type-util.h"
+
+// Implements typed tests.
+
+#if GTEST_HAS_TYPED_TEST
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
+// Expands to the name of the typedef for the type parameters of the
+// given test case.
+# define GTEST_TYPE_PARAMS_(TestCaseName) gtest_type_params_##TestCaseName##_
+
+// The 'Types' template argument below must have spaces around it
+// since some compilers may choke on '>>' when passing a template
+// instance (e.g. Types<int>)
+# define TYPED_TEST_CASE(CaseName, Types) \
+  typedef ::testing::internal::TypeList< Types >::type \
+      GTEST_TYPE_PARAMS_(CaseName)
+
+# define TYPED_TEST(CaseName, TestName) \
+  template <typename gtest_TypeParam_> \
+  class GTEST_TEST_CLASS_NAME_(CaseName, TestName) \
+      : public CaseName<gtest_TypeParam_> { \
+   private: \
+    typedef CaseName<gtest_TypeParam_> TestFixture; \
+    typedef gtest_TypeParam_ TypeParam; \
+    virtual void TestBody(); \
+  }; \
+  bool gtest_##CaseName##_##TestName##_registered_ GTEST_ATTRIBUTE_UNUSED_ = \
+      ::testing::internal::TypeParameterizedTest< \
+          CaseName, \
+          ::testing::internal::TemplateSel< \
+              GTEST_TEST_CLASS_NAME_(CaseName, TestName)>, \
+          GTEST_TYPE_PARAMS_(CaseName)>::Register(\
+              "", #CaseName, #TestName, 0); \
+  template <typename gtest_TypeParam_> \
+  void GTEST_TEST_CLASS_NAME_(CaseName, TestName)<gtest_TypeParam_>::TestBody()
+
+#endif  // GTEST_HAS_TYPED_TEST
+
+// Implements type-parameterized tests.
+
+#if GTEST_HAS_TYPED_TEST_P
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
+// Expands to the namespace name that the type-parameterized tests for
+// the given type-parameterized test case are defined in.  The exact
+// name of the namespace is subject to change without notice.
+# define GTEST_CASE_NAMESPACE_(TestCaseName) \
+  gtest_case_##TestCaseName##_
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
+// Expands to the name of the variable used to remember the names of
+// the defined tests in the given test case.
+# define GTEST_TYPED_TEST_CASE_P_STATE_(TestCaseName) \
+  gtest_typed_test_case_p_state_##TestCaseName##_
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE DIRECTLY.
+//
+// Expands to the name of the variable used to remember the names of
+// the registered tests in the given test case.
+# define GTEST_REGISTERED_TEST_NAMES_(TestCaseName) \
+  gtest_registered_test_names_##TestCaseName##_
+
+// The variables defined in the type-parameterized test macros are
+// static as typically these macros are used in a .h file that can be
+// #included in multiple translation units linked together.
+# define TYPED_TEST_CASE_P(CaseName) \
+  static ::testing::internal::TypedTestCasePState \
+      GTEST_TYPED_TEST_CASE_P_STATE_(CaseName)
+
+# define TYPED_TEST_P(CaseName, TestName) \
+  namespace GTEST_CASE_NAMESPACE_(CaseName) { \
+  template <typename gtest_TypeParam_> \
+  class TestName : public CaseName<gtest_TypeParam_> { \
+   private: \
+    typedef CaseName<gtest_TypeParam_> TestFixture; \
+    typedef gtest_TypeParam_ TypeParam; \
+    virtual void TestBody(); \
+  }; \
+  static bool gtest_##TestName##_defined_ GTEST_ATTRIBUTE_UNUSED_ = \
+      GTEST_TYPED_TEST_CASE_P_STATE_(CaseName).AddTestName(\
+          __FILE__, __LINE__, #CaseName, #TestName); \
+  } \
+  template <typename gtest_TypeParam_> \
+  void GTEST_CASE_NAMESPACE_(CaseName)::TestName<gtest_TypeParam_>::TestBody()
+
+# define REGISTER_TYPED_TEST_CASE_P(CaseName, ...) \
+  namespace GTEST_CASE_NAMESPACE_(CaseName) { \
+  typedef ::testing::internal::Templates<__VA_ARGS__>::type gtest_AllTests_; \
+  } \
+  static const char* const GTEST_REGISTERED_TEST_NAMES_(CaseName) = \
+      GTEST_TYPED_TEST_CASE_P_STATE_(CaseName).VerifyRegisteredTestNames(\
+          __FILE__, __LINE__, #__VA_ARGS__)
+
+// The 'Types' template argument below must have spaces around it
+// since some compilers may choke on '>>' when passing a template
+// instance (e.g. Types<int>)
+# define INSTANTIATE_TYPED_TEST_CASE_P(Prefix, CaseName, Types) \
+  bool gtest_##Prefix##_##CaseName GTEST_ATTRIBUTE_UNUSED_ = \
+      ::testing::internal::TypeParameterizedTestCase<CaseName, \
+          GTEST_CASE_NAMESPACE_(CaseName)::gtest_AllTests_, \
+          ::testing::internal::TypeList< Types >::type>::Register(\
+              #Prefix, #CaseName, GTEST_REGISTERED_TEST_NAMES_(CaseName))
+
+#endif  // GTEST_HAS_TYPED_TEST_P
+
+#endif  // GTEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_
diff --git a/google-breakpad/src/testing/gtest/include/gtest/gtest.h b/google-breakpad/src/testing/gtest/include/gtest/gtest.h
new file mode 100644
index 0000000..226307e
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/include/gtest/gtest.h
@@ -0,0 +1,2159 @@
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+//
+// The Google C++ Testing Framework (Google Test)
+//
+// This header file defines the public API for Google Test.  It should be
+// included by any test program that uses Google Test.
+//
+// IMPORTANT NOTE: Due to limitation of the C++ language, we have to
+// leave some internal implementation details in this header file.
+// They are clearly marked by comments like this:
+//
+//   // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+//
+// Such code is NOT meant to be used by a user directly, and is subject
+// to CHANGE WITHOUT NOTICE.  Therefore DO NOT DEPEND ON IT in a user
+// program!
+//
+// Acknowledgment: Google Test borrowed the idea of automatic test
+// registration from Barthelemy Dagenais' (barthelemy@prologique.com)
+// easyUnit framework.
+
+#ifndef GTEST_INCLUDE_GTEST_GTEST_H_
+#define GTEST_INCLUDE_GTEST_GTEST_H_
+
+#include <limits>
+#include <ostream>
+#include <vector>
+
+#include "gtest/internal/gtest-internal.h"
+#include "gtest/internal/gtest-string.h"
+#include "gtest/gtest-death-test.h"
+#include "gtest/gtest-message.h"
+#include "gtest/gtest-param-test.h"
+#include "gtest/gtest-printers.h"
+#include "gtest/gtest_prod.h"
+#include "gtest/gtest-test-part.h"
+#include "gtest/gtest-typed-test.h"
+
+// Depending on the platform, different string classes are available.
+// On Linux, in addition to ::std::string, Google also makes use of
+// class ::string, which has the same interface as ::std::string, but
+// has a different implementation.
+//
+// The user can define GTEST_HAS_GLOBAL_STRING to 1 to indicate that
+// ::string is available AND is a distinct type to ::std::string, or
+// define it to 0 to indicate otherwise.
+//
+// If the user's ::std::string and ::string are the same class due to
+// aliasing, he should define GTEST_HAS_GLOBAL_STRING to 0.
+//
+// If the user doesn't define GTEST_HAS_GLOBAL_STRING, it is defined
+// heuristically.
+
+namespace testing {
+
+// Declares the flags.
+
+// This flag temporary enables the disabled tests.
+GTEST_DECLARE_bool_(also_run_disabled_tests);
+
+// This flag brings the debugger on an assertion failure.
+GTEST_DECLARE_bool_(break_on_failure);
+
+// This flag controls whether Google Test catches all test-thrown exceptions
+// and logs them as failures.
+GTEST_DECLARE_bool_(catch_exceptions);
+
+// This flag enables using colors in terminal output. Available values are
+// "yes" to enable colors, "no" (disable colors), or "auto" (the default)
+// to let Google Test decide.
+GTEST_DECLARE_string_(color);
+
+// This flag sets up the filter to select by name using a glob pattern
+// the tests to run. If the filter is not given all tests are executed.
+GTEST_DECLARE_string_(filter);
+
+// This flag causes the Google Test to list tests. None of the tests listed
+// are actually run if the flag is provided.
+GTEST_DECLARE_bool_(list_tests);
+
+// This flag controls whether Google Test emits a detailed XML report to a file
+// in addition to its normal textual output.
+GTEST_DECLARE_string_(output);
+
+// This flags control whether Google Test prints the elapsed time for each
+// test.
+GTEST_DECLARE_bool_(print_time);
+
+// This flag specifies the random number seed.
+GTEST_DECLARE_int32_(random_seed);
+
+// This flag sets how many times the tests are repeated. The default value
+// is 1. If the value is -1 the tests are repeating forever.
+GTEST_DECLARE_int32_(repeat);
+
+// This flag controls whether Google Test includes Google Test internal
+// stack frames in failure stack traces.
+GTEST_DECLARE_bool_(show_internal_stack_frames);
+
+// When this flag is specified, tests' order is randomized on every iteration.
+GTEST_DECLARE_bool_(shuffle);
+
+// This flag specifies the maximum number of stack frames to be
+// printed in a failure message.
+GTEST_DECLARE_int32_(stack_trace_depth);
+
+// When this flag is specified, a failed assertion will throw an
+// exception if exceptions are enabled, or exit the program with a
+// non-zero code otherwise.
+GTEST_DECLARE_bool_(throw_on_failure);
+
+// When this flag is set with a "host:port" string, on supported
+// platforms test results are streamed to the specified port on
+// the specified host machine.
+GTEST_DECLARE_string_(stream_result_to);
+
+// The upper limit for valid stack trace depths.
+const int kMaxStackTraceDepth = 100;
+
+namespace internal {
+
+class AssertHelper;
+class DefaultGlobalTestPartResultReporter;
+class ExecDeathTest;
+class NoExecDeathTest;
+class FinalSuccessChecker;
+class GTestFlagSaver;
+class TestResultAccessor;
+class TestEventListenersAccessor;
+class TestEventRepeater;
+class WindowsDeathTest;
+class UnitTestImpl* GetUnitTestImpl();
+void ReportFailureInUnknownLocation(TestPartResult::Type result_type,
+                                    const String& message);
+
+// Converts a streamable value to a String.  A NULL pointer is
+// converted to "(null)".  When the input value is a ::string,
+// ::std::string, ::wstring, or ::std::wstring object, each NUL
+// character in it is replaced with "\\0".
+// Declared in gtest-internal.h but defined here, so that it has access
+// to the definition of the Message class, required by the ARM
+// compiler.
+template <typename T>
+String StreamableToString(const T& streamable) {
+  return (Message() << streamable).GetString();
+}
+
+}  // namespace internal
+
+// The friend relationship of some of these classes is cyclic.
+// If we don't forward declare them the compiler might confuse the classes
+// in friendship clauses with same named classes on the scope.
+class Test;
+class TestCase;
+class TestInfo;
+class UnitTest;
+
+// A class for indicating whether an assertion was successful.  When
+// the assertion wasn't successful, the AssertionResult object
+// remembers a non-empty message that describes how it failed.
+//
+// To create an instance of this class, use one of the factory functions
+// (AssertionSuccess() and AssertionFailure()).
+//
+// This class is useful for two purposes:
+//   1. Defining predicate functions to be used with Boolean test assertions
+//      EXPECT_TRUE/EXPECT_FALSE and their ASSERT_ counterparts
+//   2. Defining predicate-format functions to be
+//      used with predicate assertions (ASSERT_PRED_FORMAT*, etc).
+//
+// For example, if you define IsEven predicate:
+//
+//   testing::AssertionResult IsEven(int n) {
+//     if ((n % 2) == 0)
+//       return testing::AssertionSuccess();
+//     else
+//       return testing::AssertionFailure() << n << " is odd";
+//   }
+//
+// Then the failed expectation EXPECT_TRUE(IsEven(Fib(5)))
+// will print the message
+//
+//   Value of: IsEven(Fib(5))
+//     Actual: false (5 is odd)
+//   Expected: true
+//
+// instead of a more opaque
+//
+//   Value of: IsEven(Fib(5))
+//     Actual: false
+//   Expected: true
+//
+// in case IsEven is a simple Boolean predicate.
+//
+// If you expect your predicate to be reused and want to support informative
+// messages in EXPECT_FALSE and ASSERT_FALSE (negative assertions show up
+// about half as often as positive ones in our tests), supply messages for
+// both success and failure cases:
+//
+//   testing::AssertionResult IsEven(int n) {
+//     if ((n % 2) == 0)
+//       return testing::AssertionSuccess() << n << " is even";
+//     else
+//       return testing::AssertionFailure() << n << " is odd";
+//   }
+//
+// Then a statement EXPECT_FALSE(IsEven(Fib(6))) will print
+//
+//   Value of: IsEven(Fib(6))
+//     Actual: true (8 is even)
+//   Expected: false
+//
+// NB: Predicates that support negative Boolean assertions have reduced
+// performance in positive ones so be careful not to use them in tests
+// that have lots (tens of thousands) of positive Boolean assertions.
+//
+// To use this class with EXPECT_PRED_FORMAT assertions such as:
+//
+//   // Verifies that Foo() returns an even number.
+//   EXPECT_PRED_FORMAT1(IsEven, Foo());
+//
+// you need to define:
+//
+//   testing::AssertionResult IsEven(const char* expr, int n) {
+//     if ((n % 2) == 0)
+//       return testing::AssertionSuccess();
+//     else
+//       return testing::AssertionFailure()
+//         << "Expected: " << expr << " is even\n  Actual: it's " << n;
+//   }
+//
+// If Foo() returns 5, you will see the following message:
+//
+//   Expected: Foo() is even
+//     Actual: it's 5
+//
+class GTEST_API_ AssertionResult {
+ public:
+  // Copy constructor.
+  // Used in EXPECT_TRUE/FALSE(assertion_result).
+  AssertionResult(const AssertionResult& other);
+  // Used in the EXPECT_TRUE/FALSE(bool_expression).
+  explicit AssertionResult(bool success) : success_(success) {}
+
+  // Returns true iff the assertion succeeded.
+  operator bool() const { return success_; }  // NOLINT
+
+  // Returns the assertion's negation. Used with EXPECT/ASSERT_FALSE.
+  AssertionResult operator!() const;
+
+  // Returns the text streamed into this AssertionResult. Test assertions
+  // use it when they fail (i.e., the predicate's outcome doesn't match the
+  // assertion's expectation). When nothing has been streamed into the
+  // object, returns an empty string.
+  const char* message() const {
+    return message_.get() != NULL ?  message_->c_str() : "";
+  }
+  // TODO(vladl@google.com): Remove this after making sure no clients use it.
+  // Deprecated; please use message() instead.
+  const char* failure_message() const { return message(); }
+
+  // Streams a custom failure message into this object.
+  template <typename T> AssertionResult& operator<<(const T& value) {
+    AppendMessage(Message() << value);
+    return *this;
+  }
+
+  // Allows streaming basic output manipulators such as endl or flush into
+  // this object.
+  AssertionResult& operator<<(
+      ::std::ostream& (*basic_manipulator)(::std::ostream& stream)) {
+    AppendMessage(Message() << basic_manipulator);
+    return *this;
+  }
+
+ private:
+  // Appends the contents of message to message_.
+  void AppendMessage(const Message& a_message) {
+    if (message_.get() == NULL)
+      message_.reset(new ::std::string);
+    message_->append(a_message.GetString().c_str());
+  }
+
+  // Stores result of the assertion predicate.
+  bool success_;
+  // Stores the message describing the condition in case the expectation
+  // construct is not satisfied with the predicate's outcome.
+  // Referenced via a pointer to avoid taking too much stack frame space
+  // with test assertions.
+  internal::scoped_ptr< ::std::string> message_;
+
+  GTEST_DISALLOW_ASSIGN_(AssertionResult);
+};
+
+// Makes a successful assertion result.
+GTEST_API_ AssertionResult AssertionSuccess();
+
+// Makes a failed assertion result.
+GTEST_API_ AssertionResult AssertionFailure();
+
+// Makes a failed assertion result with the given failure message.
+// Deprecated; use AssertionFailure() << msg.
+GTEST_API_ AssertionResult AssertionFailure(const Message& msg);
+
+// The abstract class that all tests inherit from.
+//
+// In Google Test, a unit test program contains one or many TestCases, and
+// each TestCase contains one or many Tests.
+//
+// When you define a test using the TEST macro, you don't need to
+// explicitly derive from Test - the TEST macro automatically does
+// this for you.
+//
+// The only time you derive from Test is when defining a test fixture
+// to be used a TEST_F.  For example:
+//
+//   class FooTest : public testing::Test {
+//    protected:
+//     virtual void SetUp() { ... }
+//     virtual void TearDown() { ... }
+//     ...
+//   };
+//
+//   TEST_F(FooTest, Bar) { ... }
+//   TEST_F(FooTest, Baz) { ... }
+//
+// Test is not copyable.
+class GTEST_API_ Test {
+ public:
+  friend class TestInfo;
+
+  // Defines types for pointers to functions that set up and tear down
+  // a test case.
+  typedef internal::SetUpTestCaseFunc SetUpTestCaseFunc;
+  typedef internal::TearDownTestCaseFunc TearDownTestCaseFunc;
+
+  // The d'tor is virtual as we intend to inherit from Test.
+  virtual ~Test();
+
+  // Sets up the stuff shared by all tests in this test case.
+  //
+  // Google Test will call Foo::SetUpTestCase() before running the first
+  // test in test case Foo.  Hence a sub-class can define its own
+  // SetUpTestCase() method to shadow the one defined in the super
+  // class.
+  static void SetUpTestCase() {}
+
+  // Tears down the stuff shared by all tests in this test case.
+  //
+  // Google Test will call Foo::TearDownTestCase() after running the last
+  // test in test case Foo.  Hence a sub-class can define its own
+  // TearDownTestCase() method to shadow the one defined in the super
+  // class.
+  static void TearDownTestCase() {}
+
+  // Returns true iff the current test has a fatal failure.
+  static bool HasFatalFailure();
+
+  // Returns true iff the current test has a non-fatal failure.
+  static bool HasNonfatalFailure();
+
+  // Returns true iff the current test has a (either fatal or
+  // non-fatal) failure.
+  static bool HasFailure() { return HasFatalFailure() || HasNonfatalFailure(); }
+
+  // Logs a property for the current test.  Only the last value for a given
+  // key is remembered.
+  // These are public static so they can be called from utility functions
+  // that are not members of the test fixture.
+  // The arguments are const char* instead strings, as Google Test is used
+  // on platforms where string doesn't compile.
+  //
+  // Note that a driving consideration for these RecordProperty methods
+  // was to produce xml output suited to the Greenspan charting utility,
+  // which at present will only chart values that fit in a 32-bit int. It
+  // is the user's responsibility to restrict their values to 32-bit ints
+  // if they intend them to be used with Greenspan.
+  static void RecordProperty(const char* key, const char* value);
+  static void RecordProperty(const char* key, int value);
+
+ protected:
+  // Creates a Test object.
+  Test();
+
+  // Sets up the test fixture.
+  virtual void SetUp();
+
+  // Tears down the test fixture.
+  virtual void TearDown();
+
+ private:
+  // Returns true iff the current test has the same fixture class as
+  // the first test in the current test case.
+  static bool HasSameFixtureClass();
+
+  // Runs the test after the test fixture has been set up.
+  //
+  // A sub-class must implement this to define the test logic.
+  //
+  // DO NOT OVERRIDE THIS FUNCTION DIRECTLY IN A USER PROGRAM.
+  // Instead, use the TEST or TEST_F macro.
+  virtual void TestBody() = 0;
+
+  // Sets up, executes, and tears down the test.
+  void Run();
+
+  // Deletes self.  We deliberately pick an unusual name for this
+  // internal method to avoid clashing with names used in user TESTs.
+  void DeleteSelf_() { delete this; }
+
+  // Uses a GTestFlagSaver to save and restore all Google Test flags.
+  const internal::GTestFlagSaver* const gtest_flag_saver_;
+
+  // Often a user mis-spells SetUp() as Setup() and spends a long time
+  // wondering why it is never called by Google Test.  The declaration of
+  // the following method is solely for catching such an error at
+  // compile time:
+  //
+  //   - The return type is deliberately chosen to be not void, so it
+  //   will be a conflict if a user declares void Setup() in his test
+  //   fixture.
+  //
+  //   - This method is private, so it will be another compiler error
+  //   if a user calls it from his test fixture.
+  //
+  // DO NOT OVERRIDE THIS FUNCTION.
+  //
+  // If you see an error about overriding the following function or
+  // about it being private, you have mis-spelled SetUp() as Setup().
+  struct Setup_should_be_spelled_SetUp {};
+  virtual Setup_should_be_spelled_SetUp* Setup() { return NULL; }
+
+  // We disallow copying Tests.
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(Test);
+};
+
+typedef internal::TimeInMillis TimeInMillis;
+
+// A copyable object representing a user specified test property which can be
+// output as a key/value string pair.
+//
+// Don't inherit from TestProperty as its destructor is not virtual.
+class TestProperty {
+ public:
+  // C'tor.  TestProperty does NOT have a default constructor.
+  // Always use this constructor (with parameters) to create a
+  // TestProperty object.
+  TestProperty(const char* a_key, const char* a_value) :
+    key_(a_key), value_(a_value) {
+  }
+
+  // Gets the user supplied key.
+  const char* key() const {
+    return key_.c_str();
+  }
+
+  // Gets the user supplied value.
+  const char* value() const {
+    return value_.c_str();
+  }
+
+  // Sets a new value, overriding the one supplied in the constructor.
+  void SetValue(const char* new_value) {
+    value_ = new_value;
+  }
+
+ private:
+  // The key supplied by the user.
+  internal::String key_;
+  // The value supplied by the user.
+  internal::String value_;
+};
+
+// The result of a single Test.  This includes a list of
+// TestPartResults, a list of TestProperties, a count of how many
+// death tests there are in the Test, and how much time it took to run
+// the Test.
+//
+// TestResult is not copyable.
+class GTEST_API_ TestResult {
+ public:
+  // Creates an empty TestResult.
+  TestResult();
+
+  // D'tor.  Do not inherit from TestResult.
+  ~TestResult();
+
+  // Gets the number of all test parts.  This is the sum of the number
+  // of successful test parts and the number of failed test parts.
+  int total_part_count() const;
+
+  // Returns the number of the test properties.
+  int test_property_count() const;
+
+  // Returns true iff the test passed (i.e. no test part failed).
+  bool Passed() const { return !Failed(); }
+
+  // Returns true iff the test failed.
+  bool Failed() const;
+
+  // Returns true iff the test fatally failed.
+  bool HasFatalFailure() const;
+
+  // Returns true iff the test has a non-fatal failure.
+  bool HasNonfatalFailure() const;
+
+  // Returns the elapsed time, in milliseconds.
+  TimeInMillis elapsed_time() const { return elapsed_time_; }
+
+  // Returns the i-th test part result among all the results. i can range
+  // from 0 to test_property_count() - 1. If i is not in that range, aborts
+  // the program.
+  const TestPartResult& GetTestPartResult(int i) const;
+
+  // Returns the i-th test property. i can range from 0 to
+  // test_property_count() - 1. If i is not in that range, aborts the
+  // program.
+  const TestProperty& GetTestProperty(int i) const;
+
+ private:
+  friend class TestInfo;
+  friend class UnitTest;
+  friend class internal::DefaultGlobalTestPartResultReporter;
+  friend class internal::ExecDeathTest;
+  friend class internal::TestResultAccessor;
+  friend class internal::UnitTestImpl;
+  friend class internal::WindowsDeathTest;
+
+  // Gets the vector of TestPartResults.
+  const std::vector<TestPartResult>& test_part_results() const {
+    return test_part_results_;
+  }
+
+  // Gets the vector of TestProperties.
+  const std::vector<TestProperty>& test_properties() const {
+    return test_properties_;
+  }
+
+  // Sets the elapsed time.
+  void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; }
+
+  // Adds a test property to the list. The property is validated and may add
+  // a non-fatal failure if invalid (e.g., if it conflicts with reserved
+  // key names). If a property is already recorded for the same key, the
+  // value will be updated, rather than storing multiple values for the same
+  // key.
+  void RecordProperty(const TestProperty& test_property);
+
+  // Adds a failure if the key is a reserved attribute of Google Test
+  // testcase tags.  Returns true if the property is valid.
+  // TODO(russr): Validate attribute names are legal and human readable.
+  static bool ValidateTestProperty(const TestProperty& test_property);
+
+  // Adds a test part result to the list.
+  void AddTestPartResult(const TestPartResult& test_part_result);
+
+  // Returns the death test count.
+  int death_test_count() const { return death_test_count_; }
+
+  // Increments the death test count, returning the new count.
+  int increment_death_test_count() { return ++death_test_count_; }
+
+  // Clears the test part results.
+  void ClearTestPartResults();
+
+  // Clears the object.
+  void Clear();
+
+  // Protects mutable state of the property vector and of owned
+  // properties, whose values may be updated.
+  internal::Mutex test_properites_mutex_;
+
+  // The vector of TestPartResults
+  std::vector<TestPartResult> test_part_results_;
+  // The vector of TestProperties
+  std::vector<TestProperty> test_properties_;
+  // Running count of death tests.
+  int death_test_count_;
+  // The elapsed time, in milliseconds.
+  TimeInMillis elapsed_time_;
+
+  // We disallow copying TestResult.
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(TestResult);
+};  // class TestResult
+
+// A TestInfo object stores the following information about a test:
+//
+//   Test case name
+//   Test name
+//   Whether the test should be run
+//   A function pointer that creates the test object when invoked
+//   Test result
+//
+// The constructor of TestInfo registers itself with the UnitTest
+// singleton such that the RUN_ALL_TESTS() macro knows which tests to
+// run.
+class GTEST_API_ TestInfo {
+ public:
+  // Destructs a TestInfo object.  This function is not virtual, so
+  // don't inherit from TestInfo.
+  ~TestInfo();
+
+  // Returns the test case name.
+  const char* test_case_name() const { return test_case_name_.c_str(); }
+
+  // Returns the test name.
+  const char* name() const { return name_.c_str(); }
+
+  // Returns the name of the parameter type, or NULL if this is not a typed
+  // or a type-parameterized test.
+  const char* type_param() const {
+    if (type_param_.get() != NULL)
+      return type_param_->c_str();
+    return NULL;
+  }
+
+  // Returns the text representation of the value parameter, or NULL if this
+  // is not a value-parameterized test.
+  const char* value_param() const {
+    if (value_param_.get() != NULL)
+      return value_param_->c_str();
+    return NULL;
+  }
+
+  // Returns true if this test should run, that is if the test is not disabled
+  // (or it is disabled but the also_run_disabled_tests flag has been specified)
+  // and its full name matches the user-specified filter.
+  //
+  // Google Test allows the user to filter the tests by their full names.
+  // The full name of a test Bar in test case Foo is defined as
+  // "Foo.Bar".  Only the tests that match the filter will run.
+  //
+  // A filter is a colon-separated list of glob (not regex) patterns,
+  // optionally followed by a '-' and a colon-separated list of
+  // negative patterns (tests to exclude).  A test is run if it
+  // matches one of the positive patterns and does not match any of
+  // the negative patterns.
+  //
+  // For example, *A*:Foo.* is a filter that matches any string that
+  // contains the character 'A' or starts with "Foo.".
+  bool should_run() const { return should_run_; }
+
+  // Returns the result of the test.
+  const TestResult* result() const { return &result_; }
+
+ private:
+#if GTEST_HAS_DEATH_TEST
+  friend class internal::DefaultDeathTestFactory;
+#endif  // GTEST_HAS_DEATH_TEST
+  friend class Test;
+  friend class TestCase;
+  friend class internal::UnitTestImpl;
+  friend TestInfo* internal::MakeAndRegisterTestInfo(
+      const char* test_case_name, const char* name,
+      const char* type_param,
+      const char* value_param,
+      internal::TypeId fixture_class_id,
+      Test::SetUpTestCaseFunc set_up_tc,
+      Test::TearDownTestCaseFunc tear_down_tc,
+      internal::TestFactoryBase* factory);
+
+  // Constructs a TestInfo object. The newly constructed instance assumes
+  // ownership of the factory object.
+  TestInfo(const char* test_case_name, const char* name,
+           const char* a_type_param,
+           const char* a_value_param,
+           internal::TypeId fixture_class_id,
+           internal::TestFactoryBase* factory);
+
+  // Increments the number of death tests encountered in this test so
+  // far.
+  int increment_death_test_count() {
+    return result_.increment_death_test_count();
+  }
+
+  // Creates the test object, runs it, records its result, and then
+  // deletes it.
+  void Run();
+
+  static void ClearTestResult(TestInfo* test_info) {
+    test_info->result_.Clear();
+  }
+
+  // These fields are immutable properties of the test.
+  const std::string test_case_name_;     // Test case name
+  const std::string name_;               // Test name
+  // Name of the parameter type, or NULL if this is not a typed or a
+  // type-parameterized test.
+  const internal::scoped_ptr<const ::std::string> type_param_;
+  // Text representation of the value parameter, or NULL if this is not a
+  // value-parameterized test.
+  const internal::scoped_ptr<const ::std::string> value_param_;
+  const internal::TypeId fixture_class_id_;   // ID of the test fixture class
+  bool should_run_;                 // True iff this test should run
+  bool is_disabled_;                // True iff this test is disabled
+  bool matches_filter_;             // True if this test matches the
+                                    // user-specified filter.
+  internal::TestFactoryBase* const factory_;  // The factory that creates
+                                              // the test object
+
+  // This field is mutable and needs to be reset before running the
+  // test for the second time.
+  TestResult result_;
+
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(TestInfo);
+};
+
+// A test case, which consists of a vector of TestInfos.
+//
+// TestCase is not copyable.
+class GTEST_API_ TestCase {
+ public:
+  // Creates a TestCase with the given name.
+  //
+  // TestCase does NOT have a default constructor.  Always use this
+  // constructor to create a TestCase object.
+  //
+  // Arguments:
+  //
+  //   name:         name of the test case
+  //   a_type_param: the name of the test's type parameter, or NULL if
+  //                 this is not a type-parameterized test.
+  //   set_up_tc:    pointer to the function that sets up the test case
+  //   tear_down_tc: pointer to the function that tears down the test case
+  TestCase(const char* name, const char* a_type_param,
+           Test::SetUpTestCaseFunc set_up_tc,
+           Test::TearDownTestCaseFunc tear_down_tc);
+
+  // Destructor of TestCase.
+  virtual ~TestCase();
+
+  // Gets the name of the TestCase.
+  const char* name() const { return name_.c_str(); }
+
+  // Returns the name of the parameter type, or NULL if this is not a
+  // type-parameterized test case.
+  const char* type_param() const {
+    if (type_param_.get() != NULL)
+      return type_param_->c_str();
+    return NULL;
+  }
+
+  // Returns true if any test in this test case should run.
+  bool should_run() const { return should_run_; }
+
+  // Gets the number of successful tests in this test case.
+  int successful_test_count() const;
+
+  // Gets the number of failed tests in this test case.
+  int failed_test_count() const;
+
+  // Gets the number of disabled tests in this test case.
+  int disabled_test_count() const;
+
+  // Get the number of tests in this test case that should run.
+  int test_to_run_count() const;
+
+  // Gets the number of all tests in this test case.
+  int total_test_count() const;
+
+  // Returns true iff the test case passed.
+  bool Passed() const { return !Failed(); }
+
+  // Returns true iff the test case failed.
+  bool Failed() const { return failed_test_count() > 0; }
+
+  // Returns the elapsed time, in milliseconds.
+  TimeInMillis elapsed_time() const { return elapsed_time_; }
+
+  // Returns the i-th test among all the tests. i can range from 0 to
+  // total_test_count() - 1. If i is not in that range, returns NULL.
+  const TestInfo* GetTestInfo(int i) const;
+
+ private:
+  friend class Test;
+  friend class internal::UnitTestImpl;
+
+  // Gets the (mutable) vector of TestInfos in this TestCase.
+  std::vector<TestInfo*>& test_info_list() { return test_info_list_; }
+
+  // Gets the (immutable) vector of TestInfos in this TestCase.
+  const std::vector<TestInfo*>& test_info_list() const {
+    return test_info_list_;
+  }
+
+  // Returns the i-th test among all the tests. i can range from 0 to
+  // total_test_count() - 1. If i is not in that range, returns NULL.
+  TestInfo* GetMutableTestInfo(int i);
+
+  // Sets the should_run member.
+  void set_should_run(bool should) { should_run_ = should; }
+
+  // Adds a TestInfo to this test case.  Will delete the TestInfo upon
+  // destruction of the TestCase object.
+  void AddTestInfo(TestInfo * test_info);
+
+  // Clears the results of all tests in this test case.
+  void ClearResult();
+
+  // Clears the results of all tests in the given test case.
+  static void ClearTestCaseResult(TestCase* test_case) {
+    test_case->ClearResult();
+  }
+
+  // Runs every test in this TestCase.
+  void Run();
+
+  // Runs SetUpTestCase() for this TestCase.  This wrapper is needed
+  // for catching exceptions thrown from SetUpTestCase().
+  void RunSetUpTestCase() { (*set_up_tc_)(); }
+
+  // Runs TearDownTestCase() for this TestCase.  This wrapper is
+  // needed for catching exceptions thrown from TearDownTestCase().
+  void RunTearDownTestCase() { (*tear_down_tc_)(); }
+
+  // Returns true iff test passed.
+  static bool TestPassed(const TestInfo* test_info) {
+    return test_info->should_run() && test_info->result()->Passed();
+  }
+
+  // Returns true iff test failed.
+  static bool TestFailed(const TestInfo* test_info) {
+    return test_info->should_run() && test_info->result()->Failed();
+  }
+
+  // Returns true iff test is disabled.
+  static bool TestDisabled(const TestInfo* test_info) {
+    return test_info->is_disabled_;
+  }
+
+  // Returns true if the given test should run.
+  static bool ShouldRunTest(const TestInfo* test_info) {
+    return test_info->should_run();
+  }
+
+  // Shuffles the tests in this test case.
+  void ShuffleTests(internal::Random* random);
+
+  // Restores the test order to before the first shuffle.
+  void UnshuffleTests();
+
+  // Name of the test case.
+  internal::String name_;
+  // Name of the parameter type, or NULL if this is not a typed or a
+  // type-parameterized test.
+  const internal::scoped_ptr<const ::std::string> type_param_;
+  // The vector of TestInfos in their original order.  It owns the
+  // elements in the vector.
+  std::vector<TestInfo*> test_info_list_;
+  // Provides a level of indirection for the test list to allow easy
+  // shuffling and restoring the test order.  The i-th element in this
+  // vector is the index of the i-th test in the shuffled test list.
+  std::vector<int> test_indices_;
+  // Pointer to the function that sets up the test case.
+  Test::SetUpTestCaseFunc set_up_tc_;
+  // Pointer to the function that tears down the test case.
+  Test::TearDownTestCaseFunc tear_down_tc_;
+  // True iff any test in this test case should run.
+  bool should_run_;
+  // Elapsed time, in milliseconds.
+  TimeInMillis elapsed_time_;
+
+  // We disallow copying TestCases.
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(TestCase);
+};
+
+// An Environment object is capable of setting up and tearing down an
+// environment.  The user should subclass this to define his own
+// environment(s).
+//
+// An Environment object does the set-up and tear-down in virtual
+// methods SetUp() and TearDown() instead of the constructor and the
+// destructor, as:
+//
+//   1. You cannot safely throw from a destructor.  This is a problem
+//      as in some cases Google Test is used where exceptions are enabled, and
+//      we may want to implement ASSERT_* using exceptions where they are
+//      available.
+//   2. You cannot use ASSERT_* directly in a constructor or
+//      destructor.
+class Environment {
+ public:
+  // The d'tor is virtual as we need to subclass Environment.
+  virtual ~Environment() {}
+
+  // Override this to define how to set up the environment.
+  virtual void SetUp() {}
+
+  // Override this to define how to tear down the environment.
+  virtual void TearDown() {}
+ private:
+  // If you see an error about overriding the following function or
+  // about it being private, you have mis-spelled SetUp() as Setup().
+  struct Setup_should_be_spelled_SetUp {};
+  virtual Setup_should_be_spelled_SetUp* Setup() { return NULL; }
+};
+
+// The interface for tracing execution of tests. The methods are organized in
+// the order the corresponding events are fired.
+class TestEventListener {
+ public:
+  virtual ~TestEventListener() {}
+
+  // Fired before any test activity starts.
+  virtual void OnTestProgramStart(const UnitTest& unit_test) = 0;
+
+  // Fired before each iteration of tests starts.  There may be more than
+  // one iteration if GTEST_FLAG(repeat) is set. iteration is the iteration
+  // index, starting from 0.
+  virtual void OnTestIterationStart(const UnitTest& unit_test,
+                                    int iteration) = 0;
+
+  // Fired before environment set-up for each iteration of tests starts.
+  virtual void OnEnvironmentsSetUpStart(const UnitTest& unit_test) = 0;
+
+  // Fired after environment set-up for each iteration of tests ends.
+  virtual void OnEnvironmentsSetUpEnd(const UnitTest& unit_test) = 0;
+
+  // Fired before the test case starts.
+  virtual void OnTestCaseStart(const TestCase& test_case) = 0;
+
+  // Fired before the test starts.
+  virtual void OnTestStart(const TestInfo& test_info) = 0;
+
+  // Fired after a failed assertion or a SUCCEED() invocation.
+  virtual void OnTestPartResult(const TestPartResult& test_part_result) = 0;
+
+  // Fired after the test ends.
+  virtual void OnTestEnd(const TestInfo& test_info) = 0;
+
+  // Fired after the test case ends.
+  virtual void OnTestCaseEnd(const TestCase& test_case) = 0;
+
+  // Fired before environment tear-down for each iteration of tests starts.
+  virtual void OnEnvironmentsTearDownStart(const UnitTest& unit_test) = 0;
+
+  // Fired after environment tear-down for each iteration of tests ends.
+  virtual void OnEnvironmentsTearDownEnd(const UnitTest& unit_test) = 0;
+
+  // Fired after each iteration of tests finishes.
+  virtual void OnTestIterationEnd(const UnitTest& unit_test,
+                                  int iteration) = 0;
+
+  // Fired after all test activities have ended.
+  virtual void OnTestProgramEnd(const UnitTest& unit_test) = 0;
+};
+
+// The convenience class for users who need to override just one or two
+// methods and are not concerned that a possible change to a signature of
+// the methods they override will not be caught during the build.  For
+// comments about each method please see the definition of TestEventListener
+// above.
+class EmptyTestEventListener : public TestEventListener {
+ public:
+  virtual void OnTestProgramStart(const UnitTest& /*unit_test*/) {}
+  virtual void OnTestIterationStart(const UnitTest& /*unit_test*/,
+                                    int /*iteration*/) {}
+  virtual void OnEnvironmentsSetUpStart(const UnitTest& /*unit_test*/) {}
+  virtual void OnEnvironmentsSetUpEnd(const UnitTest& /*unit_test*/) {}
+  virtual void OnTestCaseStart(const TestCase& /*test_case*/) {}
+  virtual void OnTestStart(const TestInfo& /*test_info*/) {}
+  virtual void OnTestPartResult(const TestPartResult& /*test_part_result*/) {}
+  virtual void OnTestEnd(const TestInfo& /*test_info*/) {}
+  virtual void OnTestCaseEnd(const TestCase& /*test_case*/) {}
+  virtual void OnEnvironmentsTearDownStart(const UnitTest& /*unit_test*/) {}
+  virtual void OnEnvironmentsTearDownEnd(const UnitTest& /*unit_test*/) {}
+  virtual void OnTestIterationEnd(const UnitTest& /*unit_test*/,
+                                  int /*iteration*/) {}
+  virtual void OnTestProgramEnd(const UnitTest& /*unit_test*/) {}
+};
+
+// TestEventListeners lets users add listeners to track events in Google Test.
+class GTEST_API_ TestEventListeners {
+ public:
+  TestEventListeners();
+  ~TestEventListeners();
+
+  // Appends an event listener to the end of the list. Google Test assumes
+  // the ownership of the listener (i.e. it will delete the listener when
+  // the test program finishes).
+  void Append(TestEventListener* listener);
+
+  // Removes the given event listener from the list and returns it.  It then
+  // becomes the caller's responsibility to delete the listener. Returns
+  // NULL if the listener is not found in the list.
+  TestEventListener* Release(TestEventListener* listener);
+
+  // Returns the standard listener responsible for the default console
+  // output.  Can be removed from the listeners list to shut down default
+  // console output.  Note that removing this object from the listener list
+  // with Release transfers its ownership to the caller and makes this
+  // function return NULL the next time.
+  TestEventListener* default_result_printer() const {
+    return default_result_printer_;
+  }
+
+  // Returns the standard listener responsible for the default XML output
+  // controlled by the --gtest_output=xml flag.  Can be removed from the
+  // listeners list by users who want to shut down the default XML output
+  // controlled by this flag and substitute it with custom one.  Note that
+  // removing this object from the listener list with Release transfers its
+  // ownership to the caller and makes this function return NULL the next
+  // time.
+  TestEventListener* default_xml_generator() const {
+    return default_xml_generator_;
+  }
+
+ private:
+  friend class TestCase;
+  friend class TestInfo;
+  friend class internal::DefaultGlobalTestPartResultReporter;
+  friend class internal::NoExecDeathTest;
+  friend class internal::TestEventListenersAccessor;
+  friend class internal::UnitTestImpl;
+
+  // Returns repeater that broadcasts the TestEventListener events to all
+  // subscribers.
+  TestEventListener* repeater();
+
+  // Sets the default_result_printer attribute to the provided listener.
+  // The listener is also added to the listener list and previous
+  // default_result_printer is removed from it and deleted. The listener can
+  // also be NULL in which case it will not be added to the list. Does
+  // nothing if the previous and the current listener objects are the same.
+  void SetDefaultResultPrinter(TestEventListener* listener);
+
+  // Sets the default_xml_generator attribute to the provided listener.  The
+  // listener is also added to the listener list and previous
+  // default_xml_generator is removed from it and deleted. The listener can
+  // also be NULL in which case it will not be added to the list. Does
+  // nothing if the previous and the current listener objects are the same.
+  void SetDefaultXmlGenerator(TestEventListener* listener);
+
+  // Controls whether events will be forwarded by the repeater to the
+  // listeners in the list.
+  bool EventForwardingEnabled() const;
+  void SuppressEventForwarding();
+
+  // The actual list of listeners.
+  internal::TestEventRepeater* repeater_;
+  // Listener responsible for the standard result output.
+  TestEventListener* default_result_printer_;
+  // Listener responsible for the creation of the XML output file.
+  TestEventListener* default_xml_generator_;
+
+  // We disallow copying TestEventListeners.
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(TestEventListeners);
+};
+
+// A UnitTest consists of a vector of TestCases.
+//
+// This is a singleton class.  The only instance of UnitTest is
+// created when UnitTest::GetInstance() is first called.  This
+// instance is never deleted.
+//
+// UnitTest is not copyable.
+//
+// This class is thread-safe as long as the methods are called
+// according to their specification.
+class GTEST_API_ UnitTest {
+ public:
+  // Gets the singleton UnitTest object.  The first time this method
+  // is called, a UnitTest object is constructed and returned.
+  // Consecutive calls will return the same object.
+  static UnitTest* GetInstance();
+
+  // Runs all tests in this UnitTest object and prints the result.
+  // Returns 0 if successful, or 1 otherwise.
+  //
+  // This method can only be called from the main thread.
+  //
+  // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+  int Run() GTEST_MUST_USE_RESULT_;
+
+  // Returns the working directory when the first TEST() or TEST_F()
+  // was executed.  The UnitTest object owns the string.
+  const char* original_working_dir() const;
+
+  // Returns the TestCase object for the test that's currently running,
+  // or NULL if no test is running.
+  const TestCase* current_test_case() const
+      GTEST_LOCK_EXCLUDED_(mutex_);
+
+  // Returns the TestInfo object for the test that's currently running,
+  // or NULL if no test is running.
+  const TestInfo* current_test_info() const
+      GTEST_LOCK_EXCLUDED_(mutex_);
+
+  // Returns the random seed used at the start of the current test run.
+  int random_seed() const;
+
+#if GTEST_HAS_PARAM_TEST
+  // Returns the ParameterizedTestCaseRegistry object used to keep track of
+  // value-parameterized tests and instantiate and register them.
+  //
+  // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+  internal::ParameterizedTestCaseRegistry& parameterized_test_registry()
+      GTEST_LOCK_EXCLUDED_(mutex_);
+#endif  // GTEST_HAS_PARAM_TEST
+
+  // Gets the number of successful test cases.
+  int successful_test_case_count() const;
+
+  // Gets the number of failed test cases.
+  int failed_test_case_count() const;
+
+  // Gets the number of all test cases.
+  int total_test_case_count() const;
+
+  // Gets the number of all test cases that contain at least one test
+  // that should run.
+  int test_case_to_run_count() const;
+
+  // Gets the number of successful tests.
+  int successful_test_count() const;
+
+  // Gets the number of failed tests.
+  int failed_test_count() const;
+
+  // Gets the number of disabled tests.
+  int disabled_test_count() const;
+
+  // Gets the number of all tests.
+  int total_test_count() const;
+
+  // Gets the number of tests that should run.
+  int test_to_run_count() const;
+
+  // Gets the time of the test program start, in ms from the start of the
+  // UNIX epoch.
+  TimeInMillis start_timestamp() const;
+
+  // Gets the elapsed time, in milliseconds.
+  TimeInMillis elapsed_time() const;
+
+  // Returns true iff the unit test passed (i.e. all test cases passed).
+  bool Passed() const;
+
+  // Returns true iff the unit test failed (i.e. some test case failed
+  // or something outside of all tests failed).
+  bool Failed() const;
+
+  // Gets the i-th test case among all the test cases. i can range from 0 to
+  // total_test_case_count() - 1. If i is not in that range, returns NULL.
+  const TestCase* GetTestCase(int i) const;
+
+  // Returns the list of event listeners that can be used to track events
+  // inside Google Test.
+  TestEventListeners& listeners();
+
+ private:
+  // Registers and returns a global test environment.  When a test
+  // program is run, all global test environments will be set-up in
+  // the order they were registered.  After all tests in the program
+  // have finished, all global test environments will be torn-down in
+  // the *reverse* order they were registered.
+  //
+  // The UnitTest object takes ownership of the given environment.
+  //
+  // This method can only be called from the main thread.
+  Environment* AddEnvironment(Environment* env);
+
+  // Adds a TestPartResult to the current TestResult object.  All
+  // Google Test assertion macros (e.g. ASSERT_TRUE, EXPECT_EQ, etc)
+  // eventually call this to report their results.  The user code
+  // should use the assertion macros instead of calling this directly.
+  void AddTestPartResult(TestPartResult::Type result_type,
+                         const char* file_name,
+                         int line_number,
+                         const internal::String& message,
+                         const internal::String& os_stack_trace)
+      GTEST_LOCK_EXCLUDED_(mutex_);
+
+  // Adds a TestProperty to the current TestResult object. If the result already
+  // contains a property with the same key, the value will be updated.
+  void RecordPropertyForCurrentTest(const char* key, const char* value);
+
+  // Gets the i-th test case among all the test cases. i can range from 0 to
+  // total_test_case_count() - 1. If i is not in that range, returns NULL.
+  TestCase* GetMutableTestCase(int i);
+
+  // Accessors for the implementation object.
+  internal::UnitTestImpl* impl() { return impl_; }
+  const internal::UnitTestImpl* impl() const { return impl_; }
+
+  // These classes and funcions are friends as they need to access private
+  // members of UnitTest.
+  friend class Test;
+  friend class internal::AssertHelper;
+  friend class internal::ScopedTrace;
+  friend Environment* AddGlobalTestEnvironment(Environment* env);
+  friend internal::UnitTestImpl* internal::GetUnitTestImpl();
+  friend void internal::ReportFailureInUnknownLocation(
+      TestPartResult::Type result_type,
+      const internal::String& message);
+
+  // Creates an empty UnitTest.
+  UnitTest();
+
+  // D'tor
+  virtual ~UnitTest();
+
+  // Pushes a trace defined by SCOPED_TRACE() on to the per-thread
+  // Google Test trace stack.
+  void PushGTestTrace(const internal::TraceInfo& trace)
+      GTEST_LOCK_EXCLUDED_(mutex_);
+
+  // Pops a trace from the per-thread Google Test trace stack.
+  void PopGTestTrace()
+      GTEST_LOCK_EXCLUDED_(mutex_);
+
+  // Protects mutable state in *impl_.  This is mutable as some const
+  // methods need to lock it too.
+  mutable internal::Mutex mutex_;
+
+  // Opaque implementation object.  This field is never changed once
+  // the object is constructed.  We don't mark it as const here, as
+  // doing so will cause a warning in the constructor of UnitTest.
+  // Mutable state in *impl_ is protected by mutex_.
+  internal::UnitTestImpl* impl_;
+
+  // We disallow copying UnitTest.
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(UnitTest);
+};
+
+// A convenient wrapper for adding an environment for the test
+// program.
+//
+// You should call this before RUN_ALL_TESTS() is called, probably in
+// main().  If you use gtest_main, you need to call this before main()
+// starts for it to take effect.  For example, you can define a global
+// variable like this:
+//
+//   testing::Environment* const foo_env =
+//       testing::AddGlobalTestEnvironment(new FooEnvironment);
+//
+// However, we strongly recommend you to write your own main() and
+// call AddGlobalTestEnvironment() there, as relying on initialization
+// of global variables makes the code harder to read and may cause
+// problems when you register multiple environments from different
+// translation units and the environments have dependencies among them
+// (remember that the compiler doesn't guarantee the order in which
+// global variables from different translation units are initialized).
+inline Environment* AddGlobalTestEnvironment(Environment* env) {
+  return UnitTest::GetInstance()->AddEnvironment(env);
+}
+
+// Initializes Google Test.  This must be called before calling
+// RUN_ALL_TESTS().  In particular, it parses a command line for the
+// flags that Google Test recognizes.  Whenever a Google Test flag is
+// seen, it is removed from argv, and *argc is decremented.
+//
+// No value is returned.  Instead, the Google Test flag variables are
+// updated.
+//
+// Calling the function for the second time has no user-visible effect.
+GTEST_API_ void InitGoogleTest(int* argc, char** argv);
+
+// This overloaded version can be used in Windows programs compiled in
+// UNICODE mode.
+GTEST_API_ void InitGoogleTest(int* argc, wchar_t** argv);
+
+namespace internal {
+
+// Formats a comparison assertion (e.g. ASSERT_EQ, EXPECT_LT, and etc)
+// operand to be used in a failure message.  The type (but not value)
+// of the other operand may affect the format.  This allows us to
+// print a char* as a raw pointer when it is compared against another
+// char*, and print it as a C string when it is compared against an
+// std::string object, for example.
+//
+// The default implementation ignores the type of the other operand.
+// Some specialized versions are used to handle formatting wide or
+// narrow C strings.
+//
+// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+template <typename T1, typename T2>
+String FormatForComparisonFailureMessage(const T1& value,
+                                         const T2& /* other_operand */) {
+  // C++Builder compiles this incorrectly if the namespace isn't explicitly
+  // given.
+  return ::testing::PrintToString(value);
+}
+
+// The helper function for {ASSERT|EXPECT}_EQ.
+template <typename T1, typename T2>
+AssertionResult CmpHelperEQ(const char* expected_expression,
+                            const char* actual_expression,
+                            const T1& expected,
+                            const T2& actual) {
+#ifdef _MSC_VER
+# pragma warning(push)          // Saves the current warning state.
+# pragma warning(disable:4389)  // Temporarily disables warning on
+                               // signed/unsigned mismatch.
+#endif
+
+  if (expected == actual) {
+    return AssertionSuccess();
+  }
+
+#ifdef _MSC_VER
+# pragma warning(pop)          // Restores the warning state.
+#endif
+
+  return EqFailure(expected_expression,
+                   actual_expression,
+                   FormatForComparisonFailureMessage(expected, actual),
+                   FormatForComparisonFailureMessage(actual, expected),
+                   false);
+}
+
+// With this overloaded version, we allow anonymous enums to be used
+// in {ASSERT|EXPECT}_EQ when compiled with gcc 4, as anonymous enums
+// can be implicitly cast to BiggestInt.
+GTEST_API_ AssertionResult CmpHelperEQ(const char* expected_expression,
+                                       const char* actual_expression,
+                                       BiggestInt expected,
+                                       BiggestInt actual);
+
+// The helper class for {ASSERT|EXPECT}_EQ.  The template argument
+// lhs_is_null_literal is true iff the first argument to ASSERT_EQ()
+// is a null pointer literal.  The following default implementation is
+// for lhs_is_null_literal being false.
+template <bool lhs_is_null_literal>
+class EqHelper {
+ public:
+  // This templatized version is for the general case.
+  template <typename T1, typename T2>
+  static AssertionResult Compare(const char* expected_expression,
+                                 const char* actual_expression,
+                                 const T1& expected,
+                                 const T2& actual) {
+    return CmpHelperEQ(expected_expression, actual_expression, expected,
+                       actual);
+  }
+
+  // With this overloaded version, we allow anonymous enums to be used
+  // in {ASSERT|EXPECT}_EQ when compiled with gcc 4, as anonymous
+  // enums can be implicitly cast to BiggestInt.
+  //
+  // Even though its body looks the same as the above version, we
+  // cannot merge the two, as it will make anonymous enums unhappy.
+  static AssertionResult Compare(const char* expected_expression,
+                                 const char* actual_expression,
+                                 BiggestInt expected,
+                                 BiggestInt actual) {
+    return CmpHelperEQ(expected_expression, actual_expression, expected,
+                       actual);
+  }
+};
+
+// This specialization is used when the first argument to ASSERT_EQ()
+// is a null pointer literal, like NULL, false, or 0.
+template <>
+class EqHelper<true> {
+ public:
+  // We define two overloaded versions of Compare().  The first
+  // version will be picked when the second argument to ASSERT_EQ() is
+  // NOT a pointer, e.g. ASSERT_EQ(0, AnIntFunction()) or
+  // EXPECT_EQ(false, a_bool).
+  template <typename T1, typename T2>
+  static AssertionResult Compare(
+      const char* expected_expression,
+      const char* actual_expression,
+      const T1& expected,
+      const T2& actual,
+      // The following line prevents this overload from being considered if T2
+      // is not a pointer type.  We need this because ASSERT_EQ(NULL, my_ptr)
+      // expands to Compare("", "", NULL, my_ptr), which requires a conversion
+      // to match the Secret* in the other overload, which would otherwise make
+      // this template match better.
+      typename EnableIf<!is_pointer<T2>::value>::type* = 0) {
+    return CmpHelperEQ(expected_expression, actual_expression, expected,
+                       actual);
+  }
+
+  // This version will be picked when the second argument to ASSERT_EQ() is a
+  // pointer, e.g. ASSERT_EQ(NULL, a_pointer).
+  template <typename T>
+  static AssertionResult Compare(
+      const char* expected_expression,
+      const char* actual_expression,
+      // We used to have a second template parameter instead of Secret*.  That
+      // template parameter would deduce to 'long', making this a better match
+      // than the first overload even without the first overload's EnableIf.
+      // Unfortunately, gcc with -Wconversion-null warns when "passing NULL to
+      // non-pointer argument" (even a deduced integral argument), so the old
+      // implementation caused warnings in user code.
+      Secret* /* expected (NULL) */,
+      T* actual) {
+    // We already know that 'expected' is a null pointer.
+    return CmpHelperEQ(expected_expression, actual_expression,
+                       static_cast<T*>(NULL), actual);
+  }
+};
+
+// A macro for implementing the helper functions needed to implement
+// ASSERT_?? and EXPECT_??.  It is here just to avoid copy-and-paste
+// of similar code.
+//
+// For each templatized helper function, we also define an overloaded
+// version for BiggestInt in order to reduce code bloat and allow
+// anonymous enums to be used with {ASSERT|EXPECT}_?? when compiled
+// with gcc 4.
+//
+// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+#define GTEST_IMPL_CMP_HELPER_(op_name, op)\
+template <typename T1, typename T2>\
+AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \
+                                   const T1& val1, const T2& val2) {\
+  if (val1 op val2) {\
+    return AssertionSuccess();\
+  } else {\
+    return AssertionFailure() \
+        << "Expected: (" << expr1 << ") " #op " (" << expr2\
+        << "), actual: " << FormatForComparisonFailureMessage(val1, val2)\
+        << " vs " << FormatForComparisonFailureMessage(val2, val1);\
+  }\
+}\
+GTEST_API_ AssertionResult CmpHelper##op_name(\
+    const char* expr1, const char* expr2, BiggestInt val1, BiggestInt val2)
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+
+// Implements the helper function for {ASSERT|EXPECT}_NE
+GTEST_IMPL_CMP_HELPER_(NE, !=);
+// Implements the helper function for {ASSERT|EXPECT}_LE
+GTEST_IMPL_CMP_HELPER_(LE, <=);
+// Implements the helper function for {ASSERT|EXPECT}_LT
+GTEST_IMPL_CMP_HELPER_(LT, <);
+// Implements the helper function for {ASSERT|EXPECT}_GE
+GTEST_IMPL_CMP_HELPER_(GE, >=);
+// Implements the helper function for {ASSERT|EXPECT}_GT
+GTEST_IMPL_CMP_HELPER_(GT, >);
+
+#undef GTEST_IMPL_CMP_HELPER_
+
+// The helper function for {ASSERT|EXPECT}_STREQ.
+//
+// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+GTEST_API_ AssertionResult CmpHelperSTREQ(const char* expected_expression,
+                                          const char* actual_expression,
+                                          const char* expected,
+                                          const char* actual);
+
+// The helper function for {ASSERT|EXPECT}_STRCASEEQ.
+//
+// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* expected_expression,
+                                              const char* actual_expression,
+                                              const char* expected,
+                                              const char* actual);
+
+// The helper function for {ASSERT|EXPECT}_STRNE.
+//
+// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression,
+                                          const char* s2_expression,
+                                          const char* s1,
+                                          const char* s2);
+
+// The helper function for {ASSERT|EXPECT}_STRCASENE.
+//
+// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression,
+                                              const char* s2_expression,
+                                              const char* s1,
+                                              const char* s2);
+
+
+// Helper function for *_STREQ on wide strings.
+//
+// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+GTEST_API_ AssertionResult CmpHelperSTREQ(const char* expected_expression,
+                                          const char* actual_expression,
+                                          const wchar_t* expected,
+                                          const wchar_t* actual);
+
+// Helper function for *_STRNE on wide strings.
+//
+// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression,
+                                          const char* s2_expression,
+                                          const wchar_t* s1,
+                                          const wchar_t* s2);
+
+}  // namespace internal
+
+// IsSubstring() and IsNotSubstring() are intended to be used as the
+// first argument to {EXPECT,ASSERT}_PRED_FORMAT2(), not by
+// themselves.  They check whether needle is a substring of haystack
+// (NULL is considered a substring of itself only), and return an
+// appropriate error message when they fail.
+//
+// The {needle,haystack}_expr arguments are the stringified
+// expressions that generated the two real arguments.
+GTEST_API_ AssertionResult IsSubstring(
+    const char* needle_expr, const char* haystack_expr,
+    const char* needle, const char* haystack);
+GTEST_API_ AssertionResult IsSubstring(
+    const char* needle_expr, const char* haystack_expr,
+    const wchar_t* needle, const wchar_t* haystack);
+GTEST_API_ AssertionResult IsNotSubstring(
+    const char* needle_expr, const char* haystack_expr,
+    const char* needle, const char* haystack);
+GTEST_API_ AssertionResult IsNotSubstring(
+    const char* needle_expr, const char* haystack_expr,
+    const wchar_t* needle, const wchar_t* haystack);
+GTEST_API_ AssertionResult IsSubstring(
+    const char* needle_expr, const char* haystack_expr,
+    const ::std::string& needle, const ::std::string& haystack);
+GTEST_API_ AssertionResult IsNotSubstring(
+    const char* needle_expr, const char* haystack_expr,
+    const ::std::string& needle, const ::std::string& haystack);
+
+#if GTEST_HAS_STD_WSTRING
+GTEST_API_ AssertionResult IsSubstring(
+    const char* needle_expr, const char* haystack_expr,
+    const ::std::wstring& needle, const ::std::wstring& haystack);
+GTEST_API_ AssertionResult IsNotSubstring(
+    const char* needle_expr, const char* haystack_expr,
+    const ::std::wstring& needle, const ::std::wstring& haystack);
+#endif  // GTEST_HAS_STD_WSTRING
+
+namespace internal {
+
+// Helper template function for comparing floating-points.
+//
+// Template parameter:
+//
+//   RawType: the raw floating-point type (either float or double)
+//
+// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+template <typename RawType>
+AssertionResult CmpHelperFloatingPointEQ(const char* expected_expression,
+                                         const char* actual_expression,
+                                         RawType expected,
+                                         RawType actual) {
+  const FloatingPoint<RawType> lhs(expected), rhs(actual);
+
+  if (lhs.AlmostEquals(rhs)) {
+    return AssertionSuccess();
+  }
+
+  ::std::stringstream expected_ss;
+  expected_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2)
+              << expected;
+
+  ::std::stringstream actual_ss;
+  actual_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2)
+            << actual;
+
+  return EqFailure(expected_expression,
+                   actual_expression,
+                   StringStreamToString(&expected_ss),
+                   StringStreamToString(&actual_ss),
+                   false);
+}
+
+// Helper function for implementing ASSERT_NEAR.
+//
+// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+GTEST_API_ AssertionResult DoubleNearPredFormat(const char* expr1,
+                                                const char* expr2,
+                                                const char* abs_error_expr,
+                                                double val1,
+                                                double val2,
+                                                double abs_error);
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+// A class that enables one to stream messages to assertion macros
+class GTEST_API_ AssertHelper {
+ public:
+  // Constructor.
+  AssertHelper(TestPartResult::Type type,
+               const char* file,
+               int line,
+               const char* message);
+  ~AssertHelper();
+
+  // Message assignment is a semantic trick to enable assertion
+  // streaming; see the GTEST_MESSAGE_ macro below.
+  void operator=(const Message& message) const;
+
+ private:
+  // We put our data in a struct so that the size of the AssertHelper class can
+  // be as small as possible.  This is important because gcc is incapable of
+  // re-using stack space even for temporary variables, so every EXPECT_EQ
+  // reserves stack space for another AssertHelper.
+  struct AssertHelperData {
+    AssertHelperData(TestPartResult::Type t,
+                     const char* srcfile,
+                     int line_num,
+                     const char* msg)
+        : type(t), file(srcfile), line(line_num), message(msg) { }
+
+    TestPartResult::Type const type;
+    const char*        const file;
+    int                const line;
+    String             const message;
+
+   private:
+    GTEST_DISALLOW_COPY_AND_ASSIGN_(AssertHelperData);
+  };
+
+  AssertHelperData* const data_;
+
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(AssertHelper);
+};
+
+}  // namespace internal
+
+#if GTEST_HAS_PARAM_TEST
+// The pure interface class that all value-parameterized tests inherit from.
+// A value-parameterized class must inherit from both ::testing::Test and
+// ::testing::WithParamInterface. In most cases that just means inheriting
+// from ::testing::TestWithParam, but more complicated test hierarchies
+// may need to inherit from Test and WithParamInterface at different levels.
+//
+// This interface has support for accessing the test parameter value via
+// the GetParam() method.
+//
+// Use it with one of the parameter generator defining functions, like Range(),
+// Values(), ValuesIn(), Bool(), and Combine().
+//
+// class FooTest : public ::testing::TestWithParam<int> {
+//  protected:
+//   FooTest() {
+//     // Can use GetParam() here.
+//   }
+//   virtual ~FooTest() {
+//     // Can use GetParam() here.
+//   }
+//   virtual void SetUp() {
+//     // Can use GetParam() here.
+//   }
+//   virtual void TearDown {
+//     // Can use GetParam() here.
+//   }
+// };
+// TEST_P(FooTest, DoesBar) {
+//   // Can use GetParam() method here.
+//   Foo foo;
+//   ASSERT_TRUE(foo.DoesBar(GetParam()));
+// }
+// INSTANTIATE_TEST_CASE_P(OneToTenRange, FooTest, ::testing::Range(1, 10));
+
+template <typename T>
+class WithParamInterface {
+ public:
+  typedef T ParamType;
+  virtual ~WithParamInterface() {}
+
+  // The current parameter value. Is also available in the test fixture's
+  // constructor. This member function is non-static, even though it only
+  // references static data, to reduce the opportunity for incorrect uses
+  // like writing 'WithParamInterface<bool>::GetParam()' for a test that
+  // uses a fixture whose parameter type is int.
+  const ParamType& GetParam() const { return *parameter_; }
+
+ private:
+  // Sets parameter value. The caller is responsible for making sure the value
+  // remains alive and unchanged throughout the current test.
+  static void SetParam(const ParamType* parameter) {
+    parameter_ = parameter;
+  }
+
+  // Static value used for accessing parameter during a test lifetime.
+  static const ParamType* parameter_;
+
+  // TestClass must be a subclass of WithParamInterface<T> and Test.
+  template <class TestClass> friend class internal::ParameterizedTestFactory;
+};
+
+template <typename T>
+const T* WithParamInterface<T>::parameter_ = NULL;
+
+// Most value-parameterized classes can ignore the existence of
+// WithParamInterface, and can just inherit from ::testing::TestWithParam.
+
+template <typename T>
+class TestWithParam : public Test, public WithParamInterface<T> {
+};
+
+#endif  // GTEST_HAS_PARAM_TEST
+
+// Macros for indicating success/failure in test code.
+
+// ADD_FAILURE unconditionally adds a failure to the current test.
+// SUCCEED generates a success - it doesn't automatically make the
+// current test successful, as a test is only successful when it has
+// no failure.
+//
+// EXPECT_* verifies that a certain condition is satisfied.  If not,
+// it behaves like ADD_FAILURE.  In particular:
+//
+//   EXPECT_TRUE  verifies that a Boolean condition is true.
+//   EXPECT_FALSE verifies that a Boolean condition is false.
+//
+// FAIL and ASSERT_* are similar to ADD_FAILURE and EXPECT_*, except
+// that they will also abort the current function on failure.  People
+// usually want the fail-fast behavior of FAIL and ASSERT_*, but those
+// writing data-driven tests often find themselves using ADD_FAILURE
+// and EXPECT_* more.
+
+// Generates a nonfatal failure with a generic message.
+#define ADD_FAILURE() GTEST_NONFATAL_FAILURE_("Failed")
+
+// Generates a nonfatal failure at the given source file location with
+// a generic message.
+#define ADD_FAILURE_AT(file, line) \
+  GTEST_MESSAGE_AT_(file, line, "Failed", \
+                    ::testing::TestPartResult::kNonFatalFailure)
+
+// Generates a fatal failure with a generic message.
+#define GTEST_FAIL() GTEST_FATAL_FAILURE_("Failed")
+
+// Define this macro to 1 to omit the definition of FAIL(), which is a
+// generic name and clashes with some other libraries.
+#if !GTEST_DONT_DEFINE_FAIL
+# define FAIL() GTEST_FAIL()
+#endif
+
+// Generates a success with a generic message.
+#define GTEST_SUCCEED() GTEST_SUCCESS_("Succeeded")
+
+// Define this macro to 1 to omit the definition of SUCCEED(), which
+// is a generic name and clashes with some other libraries.
+#if !GTEST_DONT_DEFINE_SUCCEED
+# define SUCCEED() GTEST_SUCCEED()
+#endif
+
+// Macros for testing exceptions.
+//
+//    * {ASSERT|EXPECT}_THROW(statement, expected_exception):
+//         Tests that the statement throws the expected exception.
+//    * {ASSERT|EXPECT}_NO_THROW(statement):
+//         Tests that the statement doesn't throw any exception.
+//    * {ASSERT|EXPECT}_ANY_THROW(statement):
+//         Tests that the statement throws an exception.
+
+#define EXPECT_THROW(statement, expected_exception) \
+  GTEST_TEST_THROW_(statement, expected_exception, GTEST_NONFATAL_FAILURE_)
+#define EXPECT_NO_THROW(statement) \
+  GTEST_TEST_NO_THROW_(statement, GTEST_NONFATAL_FAILURE_)
+#define EXPECT_ANY_THROW(statement) \
+  GTEST_TEST_ANY_THROW_(statement, GTEST_NONFATAL_FAILURE_)
+#define ASSERT_THROW(statement, expected_exception) \
+  GTEST_TEST_THROW_(statement, expected_exception, GTEST_FATAL_FAILURE_)
+#define ASSERT_NO_THROW(statement) \
+  GTEST_TEST_NO_THROW_(statement, GTEST_FATAL_FAILURE_)
+#define ASSERT_ANY_THROW(statement) \
+  GTEST_TEST_ANY_THROW_(statement, GTEST_FATAL_FAILURE_)
+
+// Boolean assertions. Condition can be either a Boolean expression or an
+// AssertionResult. For more information on how to use AssertionResult with
+// these macros see comments on that class.
+#define EXPECT_TRUE(condition) \
+  GTEST_TEST_BOOLEAN_(condition, #condition, false, true, \
+                      GTEST_NONFATAL_FAILURE_)
+#define EXPECT_FALSE(condition) \
+  GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, \
+                      GTEST_NONFATAL_FAILURE_)
+#define ASSERT_TRUE(condition) \
+  GTEST_TEST_BOOLEAN_(condition, #condition, false, true, \
+                      GTEST_FATAL_FAILURE_)
+#define ASSERT_FALSE(condition) \
+  GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, \
+                      GTEST_FATAL_FAILURE_)
+
+// Includes the auto-generated header that implements a family of
+// generic predicate assertion macros.
+#include "gtest/gtest_pred_impl.h"
+
+// Macros for testing equalities and inequalities.
+//
+//    * {ASSERT|EXPECT}_EQ(expected, actual): Tests that expected == actual
+//    * {ASSERT|EXPECT}_NE(v1, v2):           Tests that v1 != v2
+//    * {ASSERT|EXPECT}_LT(v1, v2):           Tests that v1 < v2
+//    * {ASSERT|EXPECT}_LE(v1, v2):           Tests that v1 <= v2
+//    * {ASSERT|EXPECT}_GT(v1, v2):           Tests that v1 > v2
+//    * {ASSERT|EXPECT}_GE(v1, v2):           Tests that v1 >= v2
+//
+// When they are not, Google Test prints both the tested expressions and
+// their actual values.  The values must be compatible built-in types,
+// or you will get a compiler error.  By "compatible" we mean that the
+// values can be compared by the respective operator.
+//
+// Note:
+//
+//   1. It is possible to make a user-defined type work with
+//   {ASSERT|EXPECT}_??(), but that requires overloading the
+//   comparison operators and is thus discouraged by the Google C++
+//   Usage Guide.  Therefore, you are advised to use the
+//   {ASSERT|EXPECT}_TRUE() macro to assert that two objects are
+//   equal.
+//
+//   2. The {ASSERT|EXPECT}_??() macros do pointer comparisons on
+//   pointers (in particular, C strings).  Therefore, if you use it
+//   with two C strings, you are testing how their locations in memory
+//   are related, not how their content is related.  To compare two C
+//   strings by content, use {ASSERT|EXPECT}_STR*().
+//
+//   3. {ASSERT|EXPECT}_EQ(expected, actual) is preferred to
+//   {ASSERT|EXPECT}_TRUE(expected == actual), as the former tells you
+//   what the actual value is when it fails, and similarly for the
+//   other comparisons.
+//
+//   4. Do not depend on the order in which {ASSERT|EXPECT}_??()
+//   evaluate their arguments, which is undefined.
+//
+//   5. These macros evaluate their arguments exactly once.
+//
+// Examples:
+//
+//   EXPECT_NE(5, Foo());
+//   EXPECT_EQ(NULL, a_pointer);
+//   ASSERT_LT(i, array_size);
+//   ASSERT_GT(records.size(), 0) << "There is no record left.";
+
+#define EXPECT_EQ(expected, actual) \
+  EXPECT_PRED_FORMAT2(::testing::internal:: \
+                      EqHelper<GTEST_IS_NULL_LITERAL_(expected)>::Compare, \
+                      expected, actual)
+#define EXPECT_NE(expected, actual) \
+  EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperNE, expected, actual)
+#define EXPECT_LE(val1, val2) \
+  EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperLE, val1, val2)
+#define EXPECT_LT(val1, val2) \
+  EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperLT, val1, val2)
+#define EXPECT_GE(val1, val2) \
+  EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperGE, val1, val2)
+#define EXPECT_GT(val1, val2) \
+  EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2)
+
+#define GTEST_ASSERT_EQ(expected, actual) \
+  ASSERT_PRED_FORMAT2(::testing::internal:: \
+                      EqHelper<GTEST_IS_NULL_LITERAL_(expected)>::Compare, \
+                      expected, actual)
+#define GTEST_ASSERT_NE(val1, val2) \
+  ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperNE, val1, val2)
+#define GTEST_ASSERT_LE(val1, val2) \
+  ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperLE, val1, val2)
+#define GTEST_ASSERT_LT(val1, val2) \
+  ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperLT, val1, val2)
+#define GTEST_ASSERT_GE(val1, val2) \
+  ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperGE, val1, val2)
+#define GTEST_ASSERT_GT(val1, val2) \
+  ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2)
+
+// Define macro GTEST_DONT_DEFINE_ASSERT_XY to 1 to omit the definition of
+// ASSERT_XY(), which clashes with some users' own code.
+
+#if !GTEST_DONT_DEFINE_ASSERT_EQ
+# define ASSERT_EQ(val1, val2) GTEST_ASSERT_EQ(val1, val2)
+#endif
+
+#if !GTEST_DONT_DEFINE_ASSERT_NE
+# define ASSERT_NE(val1, val2) GTEST_ASSERT_NE(val1, val2)
+#endif
+
+#if !GTEST_DONT_DEFINE_ASSERT_LE
+# define ASSERT_LE(val1, val2) GTEST_ASSERT_LE(val1, val2)
+#endif
+
+#if !GTEST_DONT_DEFINE_ASSERT_LT
+# define ASSERT_LT(val1, val2) GTEST_ASSERT_LT(val1, val2)
+#endif
+
+#if !GTEST_DONT_DEFINE_ASSERT_GE
+# define ASSERT_GE(val1, val2) GTEST_ASSERT_GE(val1, val2)
+#endif
+
+#if !GTEST_DONT_DEFINE_ASSERT_GT
+# define ASSERT_GT(val1, val2) GTEST_ASSERT_GT(val1, val2)
+#endif
+
+// C String Comparisons.  All tests treat NULL and any non-NULL string
+// as different.  Two NULLs are equal.
+//
+//    * {ASSERT|EXPECT}_STREQ(s1, s2):     Tests that s1 == s2
+//    * {ASSERT|EXPECT}_STRNE(s1, s2):     Tests that s1 != s2
+//    * {ASSERT|EXPECT}_STRCASEEQ(s1, s2): Tests that s1 == s2, ignoring case
+//    * {ASSERT|EXPECT}_STRCASENE(s1, s2): Tests that s1 != s2, ignoring case
+//
+// For wide or narrow string objects, you can use the
+// {ASSERT|EXPECT}_??() macros.
+//
+// Don't depend on the order in which the arguments are evaluated,
+// which is undefined.
+//
+// These macros evaluate their arguments exactly once.
+
+#define EXPECT_STREQ(expected, actual) \
+  EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTREQ, expected, actual)
+#define EXPECT_STRNE(s1, s2) \
+  EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRNE, s1, s2)
+#define EXPECT_STRCASEEQ(expected, actual) \
+  EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASEEQ, expected, actual)
+#define EXPECT_STRCASENE(s1, s2)\
+  EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASENE, s1, s2)
+
+#define ASSERT_STREQ(expected, actual) \
+  ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTREQ, expected, actual)
+#define ASSERT_STRNE(s1, s2) \
+  ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRNE, s1, s2)
+#define ASSERT_STRCASEEQ(expected, actual) \
+  ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASEEQ, expected, actual)
+#define ASSERT_STRCASENE(s1, s2)\
+  ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASENE, s1, s2)
+
+// Macros for comparing floating-point numbers.
+//
+//    * {ASSERT|EXPECT}_FLOAT_EQ(expected, actual):
+//         Tests that two float values are almost equal.
+//    * {ASSERT|EXPECT}_DOUBLE_EQ(expected, actual):
+//         Tests that two double values are almost equal.
+//    * {ASSERT|EXPECT}_NEAR(v1, v2, abs_error):
+//         Tests that v1 and v2 are within the given distance to each other.
+//
+// Google Test uses ULP-based comparison to automatically pick a default
+// error bound that is appropriate for the operands.  See the
+// FloatingPoint template class in gtest-internal.h if you are
+// interested in the implementation details.
+
+#define EXPECT_FLOAT_EQ(expected, actual)\
+  EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<float>, \
+                      expected, actual)
+
+#define EXPECT_DOUBLE_EQ(expected, actual)\
+  EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<double>, \
+                      expected, actual)
+
+#define ASSERT_FLOAT_EQ(expected, actual)\
+  ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<float>, \
+                      expected, actual)
+
+#define ASSERT_DOUBLE_EQ(expected, actual)\
+  ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<double>, \
+                      expected, actual)
+
+#define EXPECT_NEAR(val1, val2, abs_error)\
+  EXPECT_PRED_FORMAT3(::testing::internal::DoubleNearPredFormat, \
+                      val1, val2, abs_error)
+
+#define ASSERT_NEAR(val1, val2, abs_error)\
+  ASSERT_PRED_FORMAT3(::testing::internal::DoubleNearPredFormat, \
+                      val1, val2, abs_error)
+
+// These predicate format functions work on floating-point values, and
+// can be used in {ASSERT|EXPECT}_PRED_FORMAT2*(), e.g.
+//
+//   EXPECT_PRED_FORMAT2(testing::DoubleLE, Foo(), 5.0);
+
+// Asserts that val1 is less than, or almost equal to, val2.  Fails
+// otherwise.  In particular, it fails if either val1 or val2 is NaN.
+GTEST_API_ AssertionResult FloatLE(const char* expr1, const char* expr2,
+                                   float val1, float val2);
+GTEST_API_ AssertionResult DoubleLE(const char* expr1, const char* expr2,
+                                    double val1, double val2);
+
+
+#if GTEST_OS_WINDOWS
+
+// Macros that test for HRESULT failure and success, these are only useful
+// on Windows, and rely on Windows SDK macros and APIs to compile.
+//
+//    * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr)
+//
+// When expr unexpectedly fails or succeeds, Google Test prints the
+// expected result and the actual result with both a human-readable
+// string representation of the error, if available, as well as the
+// hex result code.
+# define EXPECT_HRESULT_SUCCEEDED(expr) \
+    EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr))
+
+# define ASSERT_HRESULT_SUCCEEDED(expr) \
+    ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr))
+
+# define EXPECT_HRESULT_FAILED(expr) \
+    EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
+
+# define ASSERT_HRESULT_FAILED(expr) \
+    ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
+
+#endif  // GTEST_OS_WINDOWS
+
+// Macros that execute statement and check that it doesn't generate new fatal
+// failures in the current thread.
+//
+//   * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement);
+//
+// Examples:
+//
+//   EXPECT_NO_FATAL_FAILURE(Process());
+//   ASSERT_NO_FATAL_FAILURE(Process()) << "Process() failed";
+//
+#define ASSERT_NO_FATAL_FAILURE(statement) \
+    GTEST_TEST_NO_FATAL_FAILURE_(statement, GTEST_FATAL_FAILURE_)
+#define EXPECT_NO_FATAL_FAILURE(statement) \
+    GTEST_TEST_NO_FATAL_FAILURE_(statement, GTEST_NONFATAL_FAILURE_)
+
+// Causes a trace (including the source file path, the current line
+// number, and the given message) to be included in every test failure
+// message generated by code in the current scope.  The effect is
+// undone when the control leaves the current scope.
+//
+// The message argument can be anything streamable to std::ostream.
+//
+// In the implementation, we include the current line number as part
+// of the dummy variable name, thus allowing multiple SCOPED_TRACE()s
+// to appear in the same block - as long as they are on different
+// lines.
+#define SCOPED_TRACE(message) \
+  ::testing::internal::ScopedTrace GTEST_CONCAT_TOKEN_(gtest_trace_, __LINE__)(\
+    __FILE__, __LINE__, ::testing::Message() << (message))
+
+// Compile-time assertion for type equality.
+// StaticAssertTypeEq<type1, type2>() compiles iff type1 and type2 are
+// the same type.  The value it returns is not interesting.
+//
+// Instead of making StaticAssertTypeEq a class template, we make it a
+// function template that invokes a helper class template.  This
+// prevents a user from misusing StaticAssertTypeEq<T1, T2> by
+// defining objects of that type.
+//
+// CAVEAT:
+//
+// When used inside a method of a class template,
+// StaticAssertTypeEq<T1, T2>() is effective ONLY IF the method is
+// instantiated.  For example, given:
+//
+//   template <typename T> class Foo {
+//    public:
+//     void Bar() { testing::StaticAssertTypeEq<int, T>(); }
+//   };
+//
+// the code:
+//
+//   void Test1() { Foo<bool> foo; }
+//
+// will NOT generate a compiler error, as Foo<bool>::Bar() is never
+// actually instantiated.  Instead, you need:
+//
+//   void Test2() { Foo<bool> foo; foo.Bar(); }
+//
+// to cause a compiler error.
+template <typename T1, typename T2>
+bool StaticAssertTypeEq() {
+  (void)internal::StaticAssertTypeEqHelper<T1, T2>();
+  return true;
+}
+
+// Defines a test.
+//
+// The first parameter is the name of the test case, and the second
+// parameter is the name of the test within the test case.
+//
+// The convention is to end the test case name with "Test".  For
+// example, a test case for the Foo class can be named FooTest.
+//
+// The user should put his test code between braces after using this
+// macro.  Example:
+//
+//   TEST(FooTest, InitializesCorrectly) {
+//     Foo foo;
+//     EXPECT_TRUE(foo.StatusIsOK());
+//   }
+
+// Note that we call GetTestTypeId() instead of GetTypeId<
+// ::testing::Test>() here to get the type ID of testing::Test.  This
+// is to work around a suspected linker bug when using Google Test as
+// a framework on Mac OS X.  The bug causes GetTypeId<
+// ::testing::Test>() to return different values depending on whether
+// the call is from the Google Test framework itself or from user test
+// code.  GetTestTypeId() is guaranteed to always return the same
+// value, as it always calls GetTypeId<>() from the Google Test
+// framework.
+#define GTEST_TEST(test_case_name, test_name)\
+  GTEST_TEST_(test_case_name, test_name, \
+              ::testing::Test, ::testing::internal::GetTestTypeId())
+
+// Define this macro to 1 to omit the definition of TEST(), which
+// is a generic name and clashes with some other libraries.
+#if !GTEST_DONT_DEFINE_TEST
+# define TEST(test_case_name, test_name) GTEST_TEST(test_case_name, test_name)
+#endif
+
+// Defines a test that uses a test fixture.
+//
+// The first parameter is the name of the test fixture class, which
+// also doubles as the test case name.  The second parameter is the
+// name of the test within the test case.
+//
+// A test fixture class must be declared earlier.  The user should put
+// his test code between braces after using this macro.  Example:
+//
+//   class FooTest : public testing::Test {
+//    protected:
+//     virtual void SetUp() { b_.AddElement(3); }
+//
+//     Foo a_;
+//     Foo b_;
+//   };
+//
+//   TEST_F(FooTest, InitializesCorrectly) {
+//     EXPECT_TRUE(a_.StatusIsOK());
+//   }
+//
+//   TEST_F(FooTest, ReturnsElementCountCorrectly) {
+//     EXPECT_EQ(0, a_.size());
+//     EXPECT_EQ(1, b_.size());
+//   }
+
+#define TEST_F(test_fixture, test_name)\
+  GTEST_TEST_(test_fixture, test_name, test_fixture, \
+              ::testing::internal::GetTypeId<test_fixture>())
+
+// Use this macro in main() to run all tests.  It returns 0 if all
+// tests are successful, or 1 otherwise.
+//
+// RUN_ALL_TESTS() should be invoked after the command line has been
+// parsed by InitGoogleTest().
+
+#define RUN_ALL_TESTS()\
+  (::testing::UnitTest::GetInstance()->Run())
+
+}  // namespace testing
+
+#endif  // GTEST_INCLUDE_GTEST_GTEST_H_
diff --git a/google-breakpad/src/testing/gtest/include/gtest/gtest_pred_impl.h b/google-breakpad/src/testing/gtest/include/gtest/gtest_pred_impl.h
new file mode 100644
index 0000000..30ae712
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/include/gtest/gtest_pred_impl.h
@@ -0,0 +1,358 @@
+// Copyright 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// This file is AUTOMATICALLY GENERATED on 10/31/2011 by command
+// 'gen_gtest_pred_impl.py 5'.  DO NOT EDIT BY HAND!
+//
+// Implements a family of generic predicate assertion macros.
+
+#ifndef GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_
+#define GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_
+
+// Makes sure this header is not included before gtest.h.
+#ifndef GTEST_INCLUDE_GTEST_GTEST_H_
+# error Do not include gtest_pred_impl.h directly.  Include gtest.h instead.
+#endif  // GTEST_INCLUDE_GTEST_GTEST_H_
+
+// This header implements a family of generic predicate assertion
+// macros:
+//
+//   ASSERT_PRED_FORMAT1(pred_format, v1)
+//   ASSERT_PRED_FORMAT2(pred_format, v1, v2)
+//   ...
+//
+// where pred_format is a function or functor that takes n (in the
+// case of ASSERT_PRED_FORMATn) values and their source expression
+// text, and returns a testing::AssertionResult.  See the definition
+// of ASSERT_EQ in gtest.h for an example.
+//
+// If you don't care about formatting, you can use the more
+// restrictive version:
+//
+//   ASSERT_PRED1(pred, v1)
+//   ASSERT_PRED2(pred, v1, v2)
+//   ...
+//
+// where pred is an n-ary function or functor that returns bool,
+// and the values v1, v2, ..., must support the << operator for
+// streaming to std::ostream.
+//
+// We also define the EXPECT_* variations.
+//
+// For now we only support predicates whose arity is at most 5.
+// Please email googletestframework@googlegroups.com if you need
+// support for higher arities.
+
+// GTEST_ASSERT_ is the basic statement to which all of the assertions
+// in this file reduce.  Don't use this in your code.
+
+#define GTEST_ASSERT_(expression, on_failure) \
+  GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
+  if (const ::testing::AssertionResult gtest_ar = (expression)) \
+    ; \
+  else \
+    on_failure(gtest_ar.failure_message())
+
+
+// Helper function for implementing {EXPECT|ASSERT}_PRED1.  Don't use
+// this in your code.
+template <typename Pred,
+          typename T1>
+AssertionResult AssertPred1Helper(const char* pred_text,
+                                  const char* e1,
+                                  Pred pred,
+                                  const T1& v1) {
+  if (pred(v1)) return AssertionSuccess();
+
+  return AssertionFailure() << pred_text << "("
+                            << e1 << ") evaluates to false, where"
+                            << "\n" << e1 << " evaluates to " << v1;
+}
+
+// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT1.
+// Don't use this in your code.
+#define GTEST_PRED_FORMAT1_(pred_format, v1, on_failure)\
+  GTEST_ASSERT_(pred_format(#v1, v1), \
+                on_failure)
+
+// Internal macro for implementing {EXPECT|ASSERT}_PRED1.  Don't use
+// this in your code.
+#define GTEST_PRED1_(pred, v1, on_failure)\
+  GTEST_ASSERT_(::testing::AssertPred1Helper(#pred, \
+                                             #v1, \
+                                             pred, \
+                                             v1), on_failure)
+
+// Unary predicate assertion macros.
+#define EXPECT_PRED_FORMAT1(pred_format, v1) \
+  GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_NONFATAL_FAILURE_)
+#define EXPECT_PRED1(pred, v1) \
+  GTEST_PRED1_(pred, v1, GTEST_NONFATAL_FAILURE_)
+#define ASSERT_PRED_FORMAT1(pred_format, v1) \
+  GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_FATAL_FAILURE_)
+#define ASSERT_PRED1(pred, v1) \
+  GTEST_PRED1_(pred, v1, GTEST_FATAL_FAILURE_)
+
+
+
+// Helper function for implementing {EXPECT|ASSERT}_PRED2.  Don't use
+// this in your code.
+template <typename Pred,
+          typename T1,
+          typename T2>
+AssertionResult AssertPred2Helper(const char* pred_text,
+                                  const char* e1,
+                                  const char* e2,
+                                  Pred pred,
+                                  const T1& v1,
+                                  const T2& v2) {
+  if (pred(v1, v2)) return AssertionSuccess();
+
+  return AssertionFailure() << pred_text << "("
+                            << e1 << ", "
+                            << e2 << ") evaluates to false, where"
+                            << "\n" << e1 << " evaluates to " << v1
+                            << "\n" << e2 << " evaluates to " << v2;
+}
+
+// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT2.
+// Don't use this in your code.
+#define GTEST_PRED_FORMAT2_(pred_format, v1, v2, on_failure)\
+  GTEST_ASSERT_(pred_format(#v1, #v2, v1, v2), \
+                on_failure)
+
+// Internal macro for implementing {EXPECT|ASSERT}_PRED2.  Don't use
+// this in your code.
+#define GTEST_PRED2_(pred, v1, v2, on_failure)\
+  GTEST_ASSERT_(::testing::AssertPred2Helper(#pred, \
+                                             #v1, \
+                                             #v2, \
+                                             pred, \
+                                             v1, \
+                                             v2), on_failure)
+
+// Binary predicate assertion macros.
+#define EXPECT_PRED_FORMAT2(pred_format, v1, v2) \
+  GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_NONFATAL_FAILURE_)
+#define EXPECT_PRED2(pred, v1, v2) \
+  GTEST_PRED2_(pred, v1, v2, GTEST_NONFATAL_FAILURE_)
+#define ASSERT_PRED_FORMAT2(pred_format, v1, v2) \
+  GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_FATAL_FAILURE_)
+#define ASSERT_PRED2(pred, v1, v2) \
+  GTEST_PRED2_(pred, v1, v2, GTEST_FATAL_FAILURE_)
+
+
+
+// Helper function for implementing {EXPECT|ASSERT}_PRED3.  Don't use
+// this in your code.
+template <typename Pred,
+          typename T1,
+          typename T2,
+          typename T3>
+AssertionResult AssertPred3Helper(const char* pred_text,
+                                  const char* e1,
+                                  const char* e2,
+                                  const char* e3,
+                                  Pred pred,
+                                  const T1& v1,
+                                  const T2& v2,
+                                  const T3& v3) {
+  if (pred(v1, v2, v3)) return AssertionSuccess();
+
+  return AssertionFailure() << pred_text << "("
+                            << e1 << ", "
+                            << e2 << ", "
+                            << e3 << ") evaluates to false, where"
+                            << "\n" << e1 << " evaluates to " << v1
+                            << "\n" << e2 << " evaluates to " << v2
+                            << "\n" << e3 << " evaluates to " << v3;
+}
+
+// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT3.
+// Don't use this in your code.
+#define GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, on_failure)\
+  GTEST_ASSERT_(pred_format(#v1, #v2, #v3, v1, v2, v3), \
+                on_failure)
+
+// Internal macro for implementing {EXPECT|ASSERT}_PRED3.  Don't use
+// this in your code.
+#define GTEST_PRED3_(pred, v1, v2, v3, on_failure)\
+  GTEST_ASSERT_(::testing::AssertPred3Helper(#pred, \
+                                             #v1, \
+                                             #v2, \
+                                             #v3, \
+                                             pred, \
+                                             v1, \
+                                             v2, \
+                                             v3), on_failure)
+
+// Ternary predicate assertion macros.
+#define EXPECT_PRED_FORMAT3(pred_format, v1, v2, v3) \
+  GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, GTEST_NONFATAL_FAILURE_)
+#define EXPECT_PRED3(pred, v1, v2, v3) \
+  GTEST_PRED3_(pred, v1, v2, v3, GTEST_NONFATAL_FAILURE_)
+#define ASSERT_PRED_FORMAT3(pred_format, v1, v2, v3) \
+  GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, GTEST_FATAL_FAILURE_)
+#define ASSERT_PRED3(pred, v1, v2, v3) \
+  GTEST_PRED3_(pred, v1, v2, v3, GTEST_FATAL_FAILURE_)
+
+
+
+// Helper function for implementing {EXPECT|ASSERT}_PRED4.  Don't use
+// this in your code.
+template <typename Pred,
+          typename T1,
+          typename T2,
+          typename T3,
+          typename T4>
+AssertionResult AssertPred4Helper(const char* pred_text,
+                                  const char* e1,
+                                  const char* e2,
+                                  const char* e3,
+                                  const char* e4,
+                                  Pred pred,
+                                  const T1& v1,
+                                  const T2& v2,
+                                  const T3& v3,
+                                  const T4& v4) {
+  if (pred(v1, v2, v3, v4)) return AssertionSuccess();
+
+  return AssertionFailure() << pred_text << "("
+                            << e1 << ", "
+                            << e2 << ", "
+                            << e3 << ", "
+                            << e4 << ") evaluates to false, where"
+                            << "\n" << e1 << " evaluates to " << v1
+                            << "\n" << e2 << " evaluates to " << v2
+                            << "\n" << e3 << " evaluates to " << v3
+                            << "\n" << e4 << " evaluates to " << v4;
+}
+
+// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT4.
+// Don't use this in your code.
+#define GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, on_failure)\
+  GTEST_ASSERT_(pred_format(#v1, #v2, #v3, #v4, v1, v2, v3, v4), \
+                on_failure)
+
+// Internal macro for implementing {EXPECT|ASSERT}_PRED4.  Don't use
+// this in your code.
+#define GTEST_PRED4_(pred, v1, v2, v3, v4, on_failure)\
+  GTEST_ASSERT_(::testing::AssertPred4Helper(#pred, \
+                                             #v1, \
+                                             #v2, \
+                                             #v3, \
+                                             #v4, \
+                                             pred, \
+                                             v1, \
+                                             v2, \
+                                             v3, \
+                                             v4), on_failure)
+
+// 4-ary predicate assertion macros.
+#define EXPECT_PRED_FORMAT4(pred_format, v1, v2, v3, v4) \
+  GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, GTEST_NONFATAL_FAILURE_)
+#define EXPECT_PRED4(pred, v1, v2, v3, v4) \
+  GTEST_PRED4_(pred, v1, v2, v3, v4, GTEST_NONFATAL_FAILURE_)
+#define ASSERT_PRED_FORMAT4(pred_format, v1, v2, v3, v4) \
+  GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, GTEST_FATAL_FAILURE_)
+#define ASSERT_PRED4(pred, v1, v2, v3, v4) \
+  GTEST_PRED4_(pred, v1, v2, v3, v4, GTEST_FATAL_FAILURE_)
+
+
+
+// Helper function for implementing {EXPECT|ASSERT}_PRED5.  Don't use
+// this in your code.
+template <typename Pred,
+          typename T1,
+          typename T2,
+          typename T3,
+          typename T4,
+          typename T5>
+AssertionResult AssertPred5Helper(const char* pred_text,
+                                  const char* e1,
+                                  const char* e2,
+                                  const char* e3,
+                                  const char* e4,
+                                  const char* e5,
+                                  Pred pred,
+                                  const T1& v1,
+                                  const T2& v2,
+                                  const T3& v3,
+                                  const T4& v4,
+                                  const T5& v5) {
+  if (pred(v1, v2, v3, v4, v5)) return AssertionSuccess();
+
+  return AssertionFailure() << pred_text << "("
+                            << e1 << ", "
+                            << e2 << ", "
+                            << e3 << ", "
+                            << e4 << ", "
+                            << e5 << ") evaluates to false, where"
+                            << "\n" << e1 << " evaluates to " << v1
+                            << "\n" << e2 << " evaluates to " << v2
+                            << "\n" << e3 << " evaluates to " << v3
+                            << "\n" << e4 << " evaluates to " << v4
+                            << "\n" << e5 << " evaluates to " << v5;
+}
+
+// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT5.
+// Don't use this in your code.
+#define GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, on_failure)\
+  GTEST_ASSERT_(pred_format(#v1, #v2, #v3, #v4, #v5, v1, v2, v3, v4, v5), \
+                on_failure)
+
+// Internal macro for implementing {EXPECT|ASSERT}_PRED5.  Don't use
+// this in your code.
+#define GTEST_PRED5_(pred, v1, v2, v3, v4, v5, on_failure)\
+  GTEST_ASSERT_(::testing::AssertPred5Helper(#pred, \
+                                             #v1, \
+                                             #v2, \
+                                             #v3, \
+                                             #v4, \
+                                             #v5, \
+                                             pred, \
+                                             v1, \
+                                             v2, \
+                                             v3, \
+                                             v4, \
+                                             v5), on_failure)
+
+// 5-ary predicate assertion macros.
+#define EXPECT_PRED_FORMAT5(pred_format, v1, v2, v3, v4, v5) \
+  GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, GTEST_NONFATAL_FAILURE_)
+#define EXPECT_PRED5(pred, v1, v2, v3, v4, v5) \
+  GTEST_PRED5_(pred, v1, v2, v3, v4, v5, GTEST_NONFATAL_FAILURE_)
+#define ASSERT_PRED_FORMAT5(pred_format, v1, v2, v3, v4, v5) \
+  GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, GTEST_FATAL_FAILURE_)
+#define ASSERT_PRED5(pred, v1, v2, v3, v4, v5) \
+  GTEST_PRED5_(pred, v1, v2, v3, v4, v5, GTEST_FATAL_FAILURE_)
+
+
+
+#endif  // GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_
diff --git a/google-breakpad/src/testing/gtest/include/gtest/gtest_prod.h b/google-breakpad/src/testing/gtest/include/gtest/gtest_prod.h
new file mode 100644
index 0000000..da80ddc
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/include/gtest/gtest_prod.h
@@ -0,0 +1,58 @@
+// Copyright 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+//
+// Google C++ Testing Framework definitions useful in production code.
+
+#ifndef GTEST_INCLUDE_GTEST_GTEST_PROD_H_
+#define GTEST_INCLUDE_GTEST_GTEST_PROD_H_
+
+// When you need to test the private or protected members of a class,
+// use the FRIEND_TEST macro to declare your tests as friends of the
+// class.  For example:
+//
+// class MyClass {
+//  private:
+//   void MyMethod();
+//   FRIEND_TEST(MyClassTest, MyMethod);
+// };
+//
+// class MyClassTest : public testing::Test {
+//   // ...
+// };
+//
+// TEST_F(MyClassTest, MyMethod) {
+//   // Can call MyClass::MyMethod() here.
+// }
+
+#define FRIEND_TEST(test_case_name, test_name)\
+friend class test_case_name##_##test_name##_Test
+
+#endif  // GTEST_INCLUDE_GTEST_GTEST_PROD_H_
diff --git a/google-breakpad/src/testing/gtest/include/gtest/internal/gtest-death-test-internal.h b/google-breakpad/src/testing/gtest/include/gtest/internal/gtest-death-test-internal.h
new file mode 100644
index 0000000..22bb97f
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/include/gtest/internal/gtest-death-test-internal.h
@@ -0,0 +1,319 @@
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Authors: wan@google.com (Zhanyong Wan), eefacm@gmail.com (Sean Mcafee)
+//
+// The Google C++ Testing Framework (Google Test)
+//
+// This header file defines internal utilities needed for implementing
+// death tests.  They are subject to change without notice.
+
+#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_
+#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_
+
+#include "gtest/internal/gtest-internal.h"
+
+#include <stdio.h>
+
+namespace testing {
+namespace internal {
+
+GTEST_DECLARE_string_(internal_run_death_test);
+
+// Names of the flags (needed for parsing Google Test flags).
+const char kDeathTestStyleFlag[] = "death_test_style";
+const char kDeathTestUseFork[] = "death_test_use_fork";
+const char kInternalRunDeathTestFlag[] = "internal_run_death_test";
+
+#if GTEST_HAS_DEATH_TEST
+
+// DeathTest is a class that hides much of the complexity of the
+// GTEST_DEATH_TEST_ macro.  It is abstract; its static Create method
+// returns a concrete class that depends on the prevailing death test
+// style, as defined by the --gtest_death_test_style and/or
+// --gtest_internal_run_death_test flags.
+
+// In describing the results of death tests, these terms are used with
+// the corresponding definitions:
+//
+// exit status:  The integer exit information in the format specified
+//               by wait(2)
+// exit code:    The integer code passed to exit(3), _exit(2), or
+//               returned from main()
+class GTEST_API_ DeathTest {
+ public:
+  // Create returns false if there was an error determining the
+  // appropriate action to take for the current death test; for example,
+  // if the gtest_death_test_style flag is set to an invalid value.
+  // The LastMessage method will return a more detailed message in that
+  // case.  Otherwise, the DeathTest pointer pointed to by the "test"
+  // argument is set.  If the death test should be skipped, the pointer
+  // is set to NULL; otherwise, it is set to the address of a new concrete
+  // DeathTest object that controls the execution of the current test.
+  static bool Create(const char* statement, const RE* regex,
+                     const char* file, int line, DeathTest** test);
+  DeathTest();
+  virtual ~DeathTest() { }
+
+  // A helper class that aborts a death test when it's deleted.
+  class ReturnSentinel {
+   public:
+    explicit ReturnSentinel(DeathTest* test) : test_(test) { }
+    ~ReturnSentinel() { test_->Abort(TEST_ENCOUNTERED_RETURN_STATEMENT); }
+   private:
+    DeathTest* const test_;
+    GTEST_DISALLOW_COPY_AND_ASSIGN_(ReturnSentinel);
+  } GTEST_ATTRIBUTE_UNUSED_;
+
+  // An enumeration of possible roles that may be taken when a death
+  // test is encountered.  EXECUTE means that the death test logic should
+  // be executed immediately.  OVERSEE means that the program should prepare
+  // the appropriate environment for a child process to execute the death
+  // test, then wait for it to complete.
+  enum TestRole { OVERSEE_TEST, EXECUTE_TEST };
+
+  // An enumeration of the three reasons that a test might be aborted.
+  enum AbortReason {
+    TEST_ENCOUNTERED_RETURN_STATEMENT,
+    TEST_THREW_EXCEPTION,
+    TEST_DID_NOT_DIE
+  };
+
+  // Assumes one of the above roles.
+  virtual TestRole AssumeRole() = 0;
+
+  // Waits for the death test to finish and returns its status.
+  virtual int Wait() = 0;
+
+  // Returns true if the death test passed; that is, the test process
+  // exited during the test, its exit status matches a user-supplied
+  // predicate, and its stderr output matches a user-supplied regular
+  // expression.
+  // The user-supplied predicate may be a macro expression rather
+  // than a function pointer or functor, or else Wait and Passed could
+  // be combined.
+  virtual bool Passed(bool exit_status_ok) = 0;
+
+  // Signals that the death test did not die as expected.
+  virtual void Abort(AbortReason reason) = 0;
+
+  // Returns a human-readable outcome message regarding the outcome of
+  // the last death test.
+  static const char* LastMessage();
+
+  static void set_last_death_test_message(const String& message);
+
+ private:
+  // A string containing a description of the outcome of the last death test.
+  static String last_death_test_message_;
+
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(DeathTest);
+};
+
+// Factory interface for death tests.  May be mocked out for testing.
+class DeathTestFactory {
+ public:
+  virtual ~DeathTestFactory() { }
+  virtual bool Create(const char* statement, const RE* regex,
+                      const char* file, int line, DeathTest** test) = 0;
+};
+
+// A concrete DeathTestFactory implementation for normal use.
+class DefaultDeathTestFactory : public DeathTestFactory {
+ public:
+  virtual bool Create(const char* statement, const RE* regex,
+                      const char* file, int line, DeathTest** test);
+};
+
+// Returns true if exit_status describes a process that was terminated
+// by a signal, or exited normally with a nonzero exit code.
+GTEST_API_ bool ExitedUnsuccessfully(int exit_status);
+
+// Traps C++ exceptions escaping statement and reports them as test
+// failures. Note that trapping SEH exceptions is not implemented here.
+# if GTEST_HAS_EXCEPTIONS
+#  define GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, death_test) \
+  try { \
+    GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
+  } catch (const ::std::exception& gtest_exception) { \
+    fprintf(\
+        stderr, \
+        "\n%s: Caught std::exception-derived exception escaping the " \
+        "death test statement. Exception message: %s\n", \
+        ::testing::internal::FormatFileLocation(__FILE__, __LINE__).c_str(), \
+        gtest_exception.what()); \
+    fflush(stderr); \
+    death_test->Abort(::testing::internal::DeathTest::TEST_THREW_EXCEPTION); \
+  } catch (...) { \
+    death_test->Abort(::testing::internal::DeathTest::TEST_THREW_EXCEPTION); \
+  }
+
+# else
+#  define GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, death_test) \
+  GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement)
+
+# endif
+
+// This macro is for implementing ASSERT_DEATH*, EXPECT_DEATH*,
+// ASSERT_EXIT*, and EXPECT_EXIT*.
+# define GTEST_DEATH_TEST_(statement, predicate, regex, fail) \
+  GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
+  if (::testing::internal::AlwaysTrue()) { \
+    const ::testing::internal::RE& gtest_regex = (regex); \
+    ::testing::internal::DeathTest* gtest_dt; \
+    if (!::testing::internal::DeathTest::Create(#statement, &gtest_regex, \
+        __FILE__, __LINE__, &gtest_dt)) { \
+      goto GTEST_CONCAT_TOKEN_(gtest_label_, __LINE__); \
+    } \
+    if (gtest_dt != NULL) { \
+      ::testing::internal::scoped_ptr< ::testing::internal::DeathTest> \
+          gtest_dt_ptr(gtest_dt); \
+      switch (gtest_dt->AssumeRole()) { \
+        case ::testing::internal::DeathTest::OVERSEE_TEST: \
+          if (!gtest_dt->Passed(predicate(gtest_dt->Wait()))) { \
+            goto GTEST_CONCAT_TOKEN_(gtest_label_, __LINE__); \
+          } \
+          break; \
+        case ::testing::internal::DeathTest::EXECUTE_TEST: { \
+          ::testing::internal::DeathTest::ReturnSentinel \
+              gtest_sentinel(gtest_dt); \
+          GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, gtest_dt); \
+          gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE); \
+          break; \
+        } \
+        default: \
+          break; \
+      } \
+    } \
+  } else \
+    GTEST_CONCAT_TOKEN_(gtest_label_, __LINE__): \
+      fail(::testing::internal::DeathTest::LastMessage())
+// The symbol "fail" here expands to something into which a message
+// can be streamed.
+
+// This macro is for implementing ASSERT/EXPECT_DEBUG_DEATH when compiled in
+// NDEBUG mode. In this case we need the statements to be executed, the regex is
+// ignored, and the macro must accept a streamed message even though the message
+// is never printed.
+# define GTEST_EXECUTE_STATEMENT_(statement, regex) \
+  GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
+  if (::testing::internal::AlwaysTrue()) { \
+     GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
+  } else \
+    ::testing::Message()
+
+// A class representing the parsed contents of the
+// --gtest_internal_run_death_test flag, as it existed when
+// RUN_ALL_TESTS was called.
+class InternalRunDeathTestFlag {
+ public:
+  InternalRunDeathTestFlag(const String& a_file,
+                           int a_line,
+                           int an_index,
+                           int a_write_fd)
+      : file_(a_file), line_(a_line), index_(an_index),
+        write_fd_(a_write_fd) {}
+
+  ~InternalRunDeathTestFlag() {
+    if (write_fd_ >= 0)
+      posix::Close(write_fd_);
+  }
+
+  String file() const { return file_; }
+  int line() const { return line_; }
+  int index() const { return index_; }
+  int write_fd() const { return write_fd_; }
+
+ private:
+  String file_;
+  int line_;
+  int index_;
+  int write_fd_;
+
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(InternalRunDeathTestFlag);
+};
+
+// Returns a newly created InternalRunDeathTestFlag object with fields
+// initialized from the GTEST_FLAG(internal_run_death_test) flag if
+// the flag is specified; otherwise returns NULL.
+InternalRunDeathTestFlag* ParseInternalRunDeathTestFlag();
+
+#else  // GTEST_HAS_DEATH_TEST
+
+// This macro is used for implementing macros such as
+// EXPECT_DEATH_IF_SUPPORTED and ASSERT_DEATH_IF_SUPPORTED on systems where
+// death tests are not supported. Those macros must compile on such systems
+// iff EXPECT_DEATH and ASSERT_DEATH compile with the same parameters on
+// systems that support death tests. This allows one to write such a macro
+// on a system that does not support death tests and be sure that it will
+// compile on a death-test supporting system.
+//
+// Parameters:
+//   statement -  A statement that a macro such as EXPECT_DEATH would test
+//                for program termination. This macro has to make sure this
+//                statement is compiled but not executed, to ensure that
+//                EXPECT_DEATH_IF_SUPPORTED compiles with a certain
+//                parameter iff EXPECT_DEATH compiles with it.
+//   regex     -  A regex that a macro such as EXPECT_DEATH would use to test
+//                the output of statement.  This parameter has to be
+//                compiled but not evaluated by this macro, to ensure that
+//                this macro only accepts expressions that a macro such as
+//                EXPECT_DEATH would accept.
+//   terminator - Must be an empty statement for EXPECT_DEATH_IF_SUPPORTED
+//                and a return statement for ASSERT_DEATH_IF_SUPPORTED.
+//                This ensures that ASSERT_DEATH_IF_SUPPORTED will not
+//                compile inside functions where ASSERT_DEATH doesn't
+//                compile.
+//
+//  The branch that has an always false condition is used to ensure that
+//  statement and regex are compiled (and thus syntactically correct) but
+//  never executed. The unreachable code macro protects the terminator
+//  statement from generating an 'unreachable code' warning in case
+//  statement unconditionally returns or throws. The Message constructor at
+//  the end allows the syntax of streaming additional messages into the
+//  macro, for compilational compatibility with EXPECT_DEATH/ASSERT_DEATH.
+# define GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, terminator) \
+    GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
+    if (::testing::internal::AlwaysTrue()) { \
+      GTEST_LOG_(WARNING) \
+          << "Death tests are not supported on this platform.\n" \
+          << "Statement '" #statement "' cannot be verified."; \
+    } else if (::testing::internal::AlwaysFalse()) { \
+      ::testing::internal::RE::PartialMatch(".*", (regex)); \
+      GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
+      terminator; \
+    } else \
+      ::testing::Message()
+
+#endif  // GTEST_HAS_DEATH_TEST
+
+}  // namespace internal
+}  // namespace testing
+
+#endif  // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_
diff --git a/google-breakpad/src/testing/gtest/include/gtest/internal/gtest-filepath.h b/google-breakpad/src/testing/gtest/include/gtest/internal/gtest-filepath.h
new file mode 100644
index 0000000..b36b3cf
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/include/gtest/internal/gtest-filepath.h
@@ -0,0 +1,210 @@
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: keith.ray@gmail.com (Keith Ray)
+//
+// Google Test filepath utilities
+//
+// This header file declares classes and functions used internally by
+// Google Test.  They are subject to change without notice.
+//
+// This file is #included in <gtest/internal/gtest-internal.h>.
+// Do not include this header file separately!
+
+#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_
+#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_
+
+#include "gtest/internal/gtest-string.h"
+
+namespace testing {
+namespace internal {
+
+// FilePath - a class for file and directory pathname manipulation which
+// handles platform-specific conventions (like the pathname separator).
+// Used for helper functions for naming files in a directory for xml output.
+// Except for Set methods, all methods are const or static, which provides an
+// "immutable value object" -- useful for peace of mind.
+// A FilePath with a value ending in a path separator ("like/this/") represents
+// a directory, otherwise it is assumed to represent a file. In either case,
+// it may or may not represent an actual file or directory in the file system.
+// Names are NOT checked for syntax correctness -- no checking for illegal
+// characters, malformed paths, etc.
+
+class GTEST_API_ FilePath {
+ public:
+  FilePath() : pathname_("") { }
+  FilePath(const FilePath& rhs) : pathname_(rhs.pathname_) { }
+
+  explicit FilePath(const char* pathname) : pathname_(pathname) {
+    Normalize();
+  }
+
+  explicit FilePath(const String& pathname) : pathname_(pathname) {
+    Normalize();
+  }
+
+  FilePath& operator=(const FilePath& rhs) {
+    Set(rhs);
+    return *this;
+  }
+
+  void Set(const FilePath& rhs) {
+    pathname_ = rhs.pathname_;
+  }
+
+  String ToString() const { return pathname_; }
+  const char* c_str() const { return pathname_.c_str(); }
+
+  // Returns the current working directory, or "" if unsuccessful.
+  static FilePath GetCurrentDir();
+
+  // Given directory = "dir", base_name = "test", number = 0,
+  // extension = "xml", returns "dir/test.xml". If number is greater
+  // than zero (e.g., 12), returns "dir/test_12.xml".
+  // On Windows platform, uses \ as the separator rather than /.
+  static FilePath MakeFileName(const FilePath& directory,
+                               const FilePath& base_name,
+                               int number,
+                               const char* extension);
+
+  // Given directory = "dir", relative_path = "test.xml",
+  // returns "dir/test.xml".
+  // On Windows, uses \ as the separator rather than /.
+  static FilePath ConcatPaths(const FilePath& directory,
+                              const FilePath& relative_path);
+
+  // Returns a pathname for a file that does not currently exist. The pathname
+  // will be directory/base_name.extension or
+  // directory/base_name_<number>.extension if directory/base_name.extension
+  // already exists. The number will be incremented until a pathname is found
+  // that does not already exist.
+  // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'.
+  // There could be a race condition if two or more processes are calling this
+  // function at the same time -- they could both pick the same filename.
+  static FilePath GenerateUniqueFileName(const FilePath& directory,
+                                         const FilePath& base_name,
+                                         const char* extension);
+
+  // Returns true iff the path is NULL or "".
+  bool IsEmpty() const { return c_str() == NULL || *c_str() == '\0'; }
+
+  // If input name has a trailing separator character, removes it and returns
+  // the name, otherwise return the name string unmodified.
+  // On Windows platform, uses \ as the separator, other platforms use /.
+  FilePath RemoveTrailingPathSeparator() const;
+
+  // Returns a copy of the FilePath with the directory part removed.
+  // Example: FilePath("path/to/file").RemoveDirectoryName() returns
+  // FilePath("file"). If there is no directory part ("just_a_file"), it returns
+  // the FilePath unmodified. If there is no file part ("just_a_dir/") it
+  // returns an empty FilePath ("").
+  // On Windows platform, '\' is the path separator, otherwise it is '/'.
+  FilePath RemoveDirectoryName() const;
+
+  // RemoveFileName returns the directory path with the filename removed.
+  // Example: FilePath("path/to/file").RemoveFileName() returns "path/to/".
+  // If the FilePath is "a_file" or "/a_file", RemoveFileName returns
+  // FilePath("./") or, on Windows, FilePath(".\\"). If the filepath does
+  // not have a file, like "just/a/dir/", it returns the FilePath unmodified.
+  // On Windows platform, '\' is the path separator, otherwise it is '/'.
+  FilePath RemoveFileName() const;
+
+  // Returns a copy of the FilePath with the case-insensitive extension removed.
+  // Example: FilePath("dir/file.exe").RemoveExtension("EXE") returns
+  // FilePath("dir/file"). If a case-insensitive extension is not
+  // found, returns a copy of the original FilePath.
+  FilePath RemoveExtension(const char* extension) const;
+
+  // Creates directories so that path exists. Returns true if successful or if
+  // the directories already exist; returns false if unable to create
+  // directories for any reason. Will also return false if the FilePath does
+  // not represent a directory (that is, it doesn't end with a path separator).
+  bool CreateDirectoriesRecursively() const;
+
+  // Create the directory so that path exists. Returns true if successful or
+  // if the directory already exists; returns false if unable to create the
+  // directory for any reason, including if the parent directory does not
+  // exist. Not named "CreateDirectory" because that's a macro on Windows.
+  bool CreateFolder() const;
+
+  // Returns true if FilePath describes something in the file-system,
+  // either a file, directory, or whatever, and that something exists.
+  bool FileOrDirectoryExists() const;
+
+  // Returns true if pathname describes a directory in the file-system
+  // that exists.
+  bool DirectoryExists() const;
+
+  // Returns true if FilePath ends with a path separator, which indicates that
+  // it is intended to represent a directory. Returns false otherwise.
+  // This does NOT check that a directory (or file) actually exists.
+  bool IsDirectory() const;
+
+  // Returns true if pathname describes a root directory. (Windows has one
+  // root directory per disk drive.)
+  bool IsRootDirectory() const;
+
+  // Returns true if pathname describes an absolute path.
+  bool IsAbsolutePath() const;
+
+ private:
+  // Replaces multiple consecutive separators with a single separator.
+  // For example, "bar///foo" becomes "bar/foo". Does not eliminate other
+  // redundancies that might be in a pathname involving "." or "..".
+  //
+  // A pathname with multiple consecutive separators may occur either through
+  // user error or as a result of some scripts or APIs that generate a pathname
+  // with a trailing separator. On other platforms the same API or script
+  // may NOT generate a pathname with a trailing "/". Then elsewhere that
+  // pathname may have another "/" and pathname components added to it,
+  // without checking for the separator already being there.
+  // The script language and operating system may allow paths like "foo//bar"
+  // but some of the functions in FilePath will not handle that correctly. In
+  // particular, RemoveTrailingPathSeparator() only removes one separator, and
+  // it is called in CreateDirectoriesRecursively() assuming that it will change
+  // a pathname from directory syntax (trailing separator) to filename syntax.
+  //
+  // On Windows this method also replaces the alternate path separator '/' with
+  // the primary path separator '\\', so that for example "bar\\/\\foo" becomes
+  // "bar\\foo".
+
+  void Normalize();
+
+  // Returns a pointer to the last occurence of a valid path separator in
+  // the FilePath. On Windows, for example, both '/' and '\' are valid path
+  // separators. Returns NULL if no path separator was found.
+  const char* FindLastPathSeparator() const;
+
+  String pathname_;
+};  // class FilePath
+
+}  // namespace internal
+}  // namespace testing
+
+#endif  // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_
diff --git a/google-breakpad/src/testing/gtest/include/gtest/internal/gtest-internal.h b/google-breakpad/src/testing/gtest/include/gtest/internal/gtest-internal.h
new file mode 100644
index 0000000..d883450
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/include/gtest/internal/gtest-internal.h
@@ -0,0 +1,1232 @@
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Authors: wan@google.com (Zhanyong Wan), eefacm@gmail.com (Sean Mcafee)
+//
+// The Google C++ Testing Framework (Google Test)
+//
+// This header file declares functions and macros used internally by
+// Google Test.  They are subject to change without notice.
+
+#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_
+#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_
+
+#include "gtest/internal/gtest-port.h"
+
+#if GTEST_OS_LINUX
+# include <stdlib.h>
+# include <sys/types.h>
+# include <sys/wait.h>
+# include <unistd.h>
+#endif  // GTEST_OS_LINUX
+
+#include <ctype.h>
+#include <string.h>
+#include <iomanip>
+#include <limits>
+#include <set>
+
+#include "gtest/internal/gtest-string.h"
+#include "gtest/internal/gtest-filepath.h"
+#include "gtest/internal/gtest-type-util.h"
+
+// Due to C++ preprocessor weirdness, we need double indirection to
+// concatenate two tokens when one of them is __LINE__.  Writing
+//
+//   foo ## __LINE__
+//
+// will result in the token foo__LINE__, instead of foo followed by
+// the current line number.  For more details, see
+// http://www.parashift.com/c++-faq-lite/misc-technical-issues.html#faq-39.6
+#define GTEST_CONCAT_TOKEN_(foo, bar) GTEST_CONCAT_TOKEN_IMPL_(foo, bar)
+#define GTEST_CONCAT_TOKEN_IMPL_(foo, bar) foo ## bar
+
+// Google Test defines the testing::Message class to allow construction of
+// test messages via the << operator.  The idea is that anything
+// streamable to std::ostream can be streamed to a testing::Message.
+// This allows a user to use his own types in Google Test assertions by
+// overloading the << operator.
+//
+// util/gtl/stl_logging-inl.h overloads << for STL containers.  These
+// overloads cannot be defined in the std namespace, as that will be
+// undefined behavior.  Therefore, they are defined in the global
+// namespace instead.
+//
+// C++'s symbol lookup rule (i.e. Koenig lookup) says that these
+// overloads are visible in either the std namespace or the global
+// namespace, but not other namespaces, including the testing
+// namespace which Google Test's Message class is in.
+//
+// To allow STL containers (and other types that has a << operator
+// defined in the global namespace) to be used in Google Test assertions,
+// testing::Message must access the custom << operator from the global
+// namespace.  Hence this helper function.
+//
+// Note: Jeffrey Yasskin suggested an alternative fix by "using
+// ::operator<<;" in the definition of Message's operator<<.  That fix
+// doesn't require a helper function, but unfortunately doesn't
+// compile with MSVC.
+template <typename T>
+inline void GTestStreamToHelper(std::ostream* os, const T& val) {
+  *os << val;
+}
+
+class ProtocolMessage;
+namespace proto2 { class Message; }
+
+namespace testing {
+
+// Forward declarations.
+
+class AssertionResult;                 // Result of an assertion.
+class Message;                         // Represents a failure message.
+class Test;                            // Represents a test.
+class TestInfo;                        // Information about a test.
+class TestPartResult;                  // Result of a test part.
+class UnitTest;                        // A collection of test cases.
+
+template <typename T>
+::std::string PrintToString(const T& value);
+
+namespace internal {
+
+struct TraceInfo;                      // Information about a trace point.
+class ScopedTrace;                     // Implements scoped trace.
+class TestInfoImpl;                    // Opaque implementation of TestInfo
+class UnitTestImpl;                    // Opaque implementation of UnitTest
+
+// How many times InitGoogleTest() has been called.
+GTEST_API_ extern int g_init_gtest_count;
+
+// The text used in failure messages to indicate the start of the
+// stack trace.
+GTEST_API_ extern const char kStackTraceMarker[];
+
+// A secret type that Google Test users don't know about.  It has no
+// definition on purpose.  Therefore it's impossible to create a
+// Secret object, which is what we want.
+class Secret;
+
+// Two overloaded helpers for checking at compile time whether an
+// expression is a null pointer literal (i.e. NULL or any 0-valued
+// compile-time integral constant).  Their return values have
+// different sizes, so we can use sizeof() to test which version is
+// picked by the compiler.  These helpers have no implementations, as
+// we only need their signatures.
+//
+// Given IsNullLiteralHelper(x), the compiler will pick the first
+// version if x can be implicitly converted to Secret*, and pick the
+// second version otherwise.  Since Secret is a secret and incomplete
+// type, the only expression a user can write that has type Secret* is
+// a null pointer literal.  Therefore, we know that x is a null
+// pointer literal if and only if the first version is picked by the
+// compiler.
+char IsNullLiteralHelper(Secret* p);
+char (&IsNullLiteralHelper(...))[2];  // NOLINT
+
+// A compile-time bool constant that is true if and only if x is a
+// null pointer literal (i.e. NULL or any 0-valued compile-time
+// integral constant).
+#ifdef GTEST_ELLIPSIS_NEEDS_POD_
+// We lose support for NULL detection where the compiler doesn't like
+// passing non-POD classes through ellipsis (...).
+# define GTEST_IS_NULL_LITERAL_(x) false
+#else
+# define GTEST_IS_NULL_LITERAL_(x) \
+    (sizeof(::testing::internal::IsNullLiteralHelper(x)) == 1)
+#endif  // GTEST_ELLIPSIS_NEEDS_POD_
+
+// Appends the user-supplied message to the Google-Test-generated message.
+GTEST_API_ String AppendUserMessage(const String& gtest_msg,
+                                    const Message& user_msg);
+
+// A helper class for creating scoped traces in user programs.
+class GTEST_API_ ScopedTrace {
+ public:
+  // The c'tor pushes the given source file location and message onto
+  // a trace stack maintained by Google Test.
+  ScopedTrace(const char* file, int line, const Message& message);
+
+  // The d'tor pops the info pushed by the c'tor.
+  //
+  // Note that the d'tor is not virtual in order to be efficient.
+  // Don't inherit from ScopedTrace!
+  ~ScopedTrace();
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(ScopedTrace);
+} GTEST_ATTRIBUTE_UNUSED_;  // A ScopedTrace object does its job in its
+                            // c'tor and d'tor.  Therefore it doesn't
+                            // need to be used otherwise.
+
+// Converts a streamable value to a String.  A NULL pointer is
+// converted to "(null)".  When the input value is a ::string,
+// ::std::string, ::wstring, or ::std::wstring object, each NUL
+// character in it is replaced with "\\0".
+// Declared here but defined in gtest.h, so that it has access
+// to the definition of the Message class, required by the ARM
+// compiler.
+template <typename T>
+String StreamableToString(const T& streamable);
+
+// The Symbian compiler has a bug that prevents it from selecting the
+// correct overload of FormatForComparisonFailureMessage (see below)
+// unless we pass the first argument by reference.  If we do that,
+// however, Visual Age C++ 10.1 generates a compiler error.  Therefore
+// we only apply the work-around for Symbian.
+#if defined(__SYMBIAN32__)
+# define GTEST_CREF_WORKAROUND_ const&
+#else
+# define GTEST_CREF_WORKAROUND_
+#endif
+
+// When this operand is a const char* or char*, if the other operand
+// is a ::std::string or ::string, we print this operand as a C string
+// rather than a pointer (we do the same for wide strings); otherwise
+// we print it as a pointer to be safe.
+
+// This internal macro is used to avoid duplicated code.
+#define GTEST_FORMAT_IMPL_(operand2_type, operand1_printer)\
+inline String FormatForComparisonFailureMessage(\
+    operand2_type::value_type* GTEST_CREF_WORKAROUND_ str, \
+    const operand2_type& /*operand2*/) {\
+  return operand1_printer(str);\
+}\
+inline String FormatForComparisonFailureMessage(\
+    const operand2_type::value_type* GTEST_CREF_WORKAROUND_ str, \
+    const operand2_type& /*operand2*/) {\
+  return operand1_printer(str);\
+}
+
+GTEST_FORMAT_IMPL_(::std::string, String::ShowCStringQuoted)
+#if GTEST_HAS_STD_WSTRING
+GTEST_FORMAT_IMPL_(::std::wstring, String::ShowWideCStringQuoted)
+#endif  // GTEST_HAS_STD_WSTRING
+
+#if GTEST_HAS_GLOBAL_STRING
+GTEST_FORMAT_IMPL_(::string, String::ShowCStringQuoted)
+#endif  // GTEST_HAS_GLOBAL_STRING
+#if GTEST_HAS_GLOBAL_WSTRING
+GTEST_FORMAT_IMPL_(::wstring, String::ShowWideCStringQuoted)
+#endif  // GTEST_HAS_GLOBAL_WSTRING
+
+#undef GTEST_FORMAT_IMPL_
+
+// The next four overloads handle the case where the operand being
+// printed is a char/wchar_t pointer and the other operand is not a
+// string/wstring object.  In such cases, we just print the operand as
+// a pointer to be safe.
+#define GTEST_FORMAT_CHAR_PTR_IMPL_(CharType)                       \
+  template <typename T>                                             \
+  String FormatForComparisonFailureMessage(CharType* GTEST_CREF_WORKAROUND_ p, \
+                                           const T&) { \
+    return PrintToString(static_cast<const void*>(p));              \
+  }
+
+GTEST_FORMAT_CHAR_PTR_IMPL_(char)
+GTEST_FORMAT_CHAR_PTR_IMPL_(const char)
+GTEST_FORMAT_CHAR_PTR_IMPL_(wchar_t)
+GTEST_FORMAT_CHAR_PTR_IMPL_(const wchar_t)
+
+#undef GTEST_FORMAT_CHAR_PTR_IMPL_
+
+// Constructs and returns the message for an equality assertion
+// (e.g. ASSERT_EQ, EXPECT_STREQ, etc) failure.
+//
+// The first four parameters are the expressions used in the assertion
+// and their values, as strings.  For example, for ASSERT_EQ(foo, bar)
+// where foo is 5 and bar is 6, we have:
+//
+//   expected_expression: "foo"
+//   actual_expression:   "bar"
+//   expected_value:      "5"
+//   actual_value:        "6"
+//
+// The ignoring_case parameter is true iff the assertion is a
+// *_STRCASEEQ*.  When it's true, the string " (ignoring case)" will
+// be inserted into the message.
+GTEST_API_ AssertionResult EqFailure(const char* expected_expression,
+                                     const char* actual_expression,
+                                     const String& expected_value,
+                                     const String& actual_value,
+                                     bool ignoring_case);
+
+// Constructs a failure message for Boolean assertions such as EXPECT_TRUE.
+GTEST_API_ String GetBoolAssertionFailureMessage(
+    const AssertionResult& assertion_result,
+    const char* expression_text,
+    const char* actual_predicate_value,
+    const char* expected_predicate_value);
+
+// This template class represents an IEEE floating-point number
+// (either single-precision or double-precision, depending on the
+// template parameters).
+//
+// The purpose of this class is to do more sophisticated number
+// comparison.  (Due to round-off error, etc, it's very unlikely that
+// two floating-points will be equal exactly.  Hence a naive
+// comparison by the == operation often doesn't work.)
+//
+// Format of IEEE floating-point:
+//
+//   The most-significant bit being the leftmost, an IEEE
+//   floating-point looks like
+//
+//     sign_bit exponent_bits fraction_bits
+//
+//   Here, sign_bit is a single bit that designates the sign of the
+//   number.
+//
+//   For float, there are 8 exponent bits and 23 fraction bits.
+//
+//   For double, there are 11 exponent bits and 52 fraction bits.
+//
+//   More details can be found at
+//   http://en.wikipedia.org/wiki/IEEE_floating-point_standard.
+//
+// Template parameter:
+//
+//   RawType: the raw floating-point type (either float or double)
+template <typename RawType>
+class FloatingPoint {
+ public:
+  // Defines the unsigned integer type that has the same size as the
+  // floating point number.
+  typedef typename TypeWithSize<sizeof(RawType)>::UInt Bits;
+
+  // Constants.
+
+  // # of bits in a number.
+  static const size_t kBitCount = 8*sizeof(RawType);
+
+  // # of fraction bits in a number.
+  static const size_t kFractionBitCount =
+    std::numeric_limits<RawType>::digits - 1;
+
+  // # of exponent bits in a number.
+  static const size_t kExponentBitCount = kBitCount - 1 - kFractionBitCount;
+
+  // The mask for the sign bit.
+  static const Bits kSignBitMask = static_cast<Bits>(1) << (kBitCount - 1);
+
+  // The mask for the fraction bits.
+  static const Bits kFractionBitMask =
+    ~static_cast<Bits>(0) >> (kExponentBitCount + 1);
+
+  // The mask for the exponent bits.
+  static const Bits kExponentBitMask = ~(kSignBitMask | kFractionBitMask);
+
+  // How many ULP's (Units in the Last Place) we want to tolerate when
+  // comparing two numbers.  The larger the value, the more error we
+  // allow.  A 0 value means that two numbers must be exactly the same
+  // to be considered equal.
+  //
+  // The maximum error of a single floating-point operation is 0.5
+  // units in the last place.  On Intel CPU's, all floating-point
+  // calculations are done with 80-bit precision, while double has 64
+  // bits.  Therefore, 4 should be enough for ordinary use.
+  //
+  // See the following article for more details on ULP:
+  // http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm.
+  static const size_t kMaxUlps = 4;
+
+  // Constructs a FloatingPoint from a raw floating-point number.
+  //
+  // On an Intel CPU, passing a non-normalized NAN (Not a Number)
+  // around may change its bits, although the new value is guaranteed
+  // to be also a NAN.  Therefore, don't expect this constructor to
+  // preserve the bits in x when x is a NAN.
+  explicit FloatingPoint(const RawType& x) { u_.value_ = x; }
+
+  // Static methods
+
+  // Reinterprets a bit pattern as a floating-point number.
+  //
+  // This function is needed to test the AlmostEquals() method.
+  static RawType ReinterpretBits(const Bits bits) {
+    FloatingPoint fp(0);
+    fp.u_.bits_ = bits;
+    return fp.u_.value_;
+  }
+
+  // Returns the floating-point number that represent positive infinity.
+  static RawType Infinity() {
+    return ReinterpretBits(kExponentBitMask);
+  }
+
+  // Non-static methods
+
+  // Returns the bits that represents this number.
+  const Bits &bits() const { return u_.bits_; }
+
+  // Returns the exponent bits of this number.
+  Bits exponent_bits() const { return kExponentBitMask & u_.bits_; }
+
+  // Returns the fraction bits of this number.
+  Bits fraction_bits() const { return kFractionBitMask & u_.bits_; }
+
+  // Returns the sign bit of this number.
+  Bits sign_bit() const { return kSignBitMask & u_.bits_; }
+
+  // Returns true iff this is NAN (not a number).
+  bool is_nan() const {
+    // It's a NAN if the exponent bits are all ones and the fraction
+    // bits are not entirely zeros.
+    return (exponent_bits() == kExponentBitMask) && (fraction_bits() != 0);
+  }
+
+  // Returns true iff this number is at most kMaxUlps ULP's away from
+  // rhs.  In particular, this function:
+  //
+  //   - returns false if either number is (or both are) NAN.
+  //   - treats really large numbers as almost equal to infinity.
+  //   - thinks +0.0 and -0.0 are 0 DLP's apart.
+  bool AlmostEquals(const FloatingPoint& rhs) const {
+    // The IEEE standard says that any comparison operation involving
+    // a NAN must return false.
+    if (is_nan() || rhs.is_nan()) return false;
+
+    return DistanceBetweenSignAndMagnitudeNumbers(u_.bits_, rhs.u_.bits_)
+        <= kMaxUlps;
+  }
+
+ private:
+  // The data type used to store the actual floating-point number.
+  union FloatingPointUnion {
+    RawType value_;  // The raw floating-point number.
+    Bits bits_;      // The bits that represent the number.
+  };
+
+  // Converts an integer from the sign-and-magnitude representation to
+  // the biased representation.  More precisely, let N be 2 to the
+  // power of (kBitCount - 1), an integer x is represented by the
+  // unsigned number x + N.
+  //
+  // For instance,
+  //
+  //   -N + 1 (the most negative number representable using
+  //          sign-and-magnitude) is represented by 1;
+  //   0      is represented by N; and
+  //   N - 1  (the biggest number representable using
+  //          sign-and-magnitude) is represented by 2N - 1.
+  //
+  // Read http://en.wikipedia.org/wiki/Signed_number_representations
+  // for more details on signed number representations.
+  static Bits SignAndMagnitudeToBiased(const Bits &sam) {
+    if (kSignBitMask & sam) {
+      // sam represents a negative number.
+      return ~sam + 1;
+    } else {
+      // sam represents a positive number.
+      return kSignBitMask | sam;
+    }
+  }
+
+  // Given two numbers in the sign-and-magnitude representation,
+  // returns the distance between them as an unsigned number.
+  static Bits DistanceBetweenSignAndMagnitudeNumbers(const Bits &sam1,
+                                                     const Bits &sam2) {
+    const Bits biased1 = SignAndMagnitudeToBiased(sam1);
+    const Bits biased2 = SignAndMagnitudeToBiased(sam2);
+    return (biased1 >= biased2) ? (biased1 - biased2) : (biased2 - biased1);
+  }
+
+  FloatingPointUnion u_;
+};
+
+// Typedefs the instances of the FloatingPoint template class that we
+// care to use.
+typedef FloatingPoint<float> Float;
+typedef FloatingPoint<double> Double;
+
+// In order to catch the mistake of putting tests that use different
+// test fixture classes in the same test case, we need to assign
+// unique IDs to fixture classes and compare them.  The TypeId type is
+// used to hold such IDs.  The user should treat TypeId as an opaque
+// type: the only operation allowed on TypeId values is to compare
+// them for equality using the == operator.
+typedef const void* TypeId;
+
+template <typename T>
+class TypeIdHelper {
+ public:
+  // dummy_ must not have a const type.  Otherwise an overly eager
+  // compiler (e.g. MSVC 7.1 & 8.0) may try to merge
+  // TypeIdHelper<T>::dummy_ for different Ts as an "optimization".
+  static bool dummy_;
+};
+
+template <typename T>
+bool TypeIdHelper<T>::dummy_ = false;
+
+// GetTypeId<T>() returns the ID of type T.  Different values will be
+// returned for different types.  Calling the function twice with the
+// same type argument is guaranteed to return the same ID.
+template <typename T>
+TypeId GetTypeId() {
+  // The compiler is required to allocate a different
+  // TypeIdHelper<T>::dummy_ variable for each T used to instantiate
+  // the template.  Therefore, the address of dummy_ is guaranteed to
+  // be unique.
+  return &(TypeIdHelper<T>::dummy_);
+}
+
+// Returns the type ID of ::testing::Test.  Always call this instead
+// of GetTypeId< ::testing::Test>() to get the type ID of
+// ::testing::Test, as the latter may give the wrong result due to a
+// suspected linker bug when compiling Google Test as a Mac OS X
+// framework.
+GTEST_API_ TypeId GetTestTypeId();
+
+// Defines the abstract factory interface that creates instances
+// of a Test object.
+class TestFactoryBase {
+ public:
+  virtual ~TestFactoryBase() {}
+
+  // Creates a test instance to run. The instance is both created and destroyed
+  // within TestInfoImpl::Run()
+  virtual Test* CreateTest() = 0;
+
+ protected:
+  TestFactoryBase() {}
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(TestFactoryBase);
+};
+
+// This class provides implementation of TeastFactoryBase interface.
+// It is used in TEST and TEST_F macros.
+template <class TestClass>
+class TestFactoryImpl : public TestFactoryBase {
+ public:
+  virtual Test* CreateTest() { return new TestClass; }
+};
+
+#if GTEST_OS_WINDOWS
+
+// Predicate-formatters for implementing the HRESULT checking macros
+// {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}
+// We pass a long instead of HRESULT to avoid causing an
+// include dependency for the HRESULT type.
+GTEST_API_ AssertionResult IsHRESULTSuccess(const char* expr,
+                                            long hr);  // NOLINT
+GTEST_API_ AssertionResult IsHRESULTFailure(const char* expr,
+                                            long hr);  // NOLINT
+
+#endif  // GTEST_OS_WINDOWS
+
+// Types of SetUpTestCase() and TearDownTestCase() functions.
+typedef void (*SetUpTestCaseFunc)();
+typedef void (*TearDownTestCaseFunc)();
+
+// Creates a new TestInfo object and registers it with Google Test;
+// returns the created object.
+//
+// Arguments:
+//
+//   test_case_name:   name of the test case
+//   name:             name of the test
+//   type_param        the name of the test's type parameter, or NULL if
+//                     this is not  a typed or a type-parameterized test.
+//   value_param       text representation of the test's value parameter,
+//                     or NULL if this is not a type-parameterized test.
+//   fixture_class_id: ID of the test fixture class
+//   set_up_tc:        pointer to the function that sets up the test case
+//   tear_down_tc:     pointer to the function that tears down the test case
+//   factory:          pointer to the factory that creates a test object.
+//                     The newly created TestInfo instance will assume
+//                     ownership of the factory object.
+GTEST_API_ TestInfo* MakeAndRegisterTestInfo(
+    const char* test_case_name, const char* name,
+    const char* type_param,
+    const char* value_param,
+    TypeId fixture_class_id,
+    SetUpTestCaseFunc set_up_tc,
+    TearDownTestCaseFunc tear_down_tc,
+    TestFactoryBase* factory);
+
+// If *pstr starts with the given prefix, modifies *pstr to be right
+// past the prefix and returns true; otherwise leaves *pstr unchanged
+// and returns false.  None of pstr, *pstr, and prefix can be NULL.
+GTEST_API_ bool SkipPrefix(const char* prefix, const char** pstr);
+
+#if GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P
+
+// State of the definition of a type-parameterized test case.
+class GTEST_API_ TypedTestCasePState {
+ public:
+  TypedTestCasePState() : registered_(false) {}
+
+  // Adds the given test name to defined_test_names_ and return true
+  // if the test case hasn't been registered; otherwise aborts the
+  // program.
+  bool AddTestName(const char* file, int line, const char* case_name,
+                   const char* test_name) {
+    if (registered_) {
+      fprintf(stderr, "%s Test %s must be defined before "
+              "REGISTER_TYPED_TEST_CASE_P(%s, ...).\n",
+              FormatFileLocation(file, line).c_str(), test_name, case_name);
+      fflush(stderr);
+      posix::Abort();
+    }
+    defined_test_names_.insert(test_name);
+    return true;
+  }
+
+  // Verifies that registered_tests match the test names in
+  // defined_test_names_; returns registered_tests if successful, or
+  // aborts the program otherwise.
+  const char* VerifyRegisteredTestNames(
+      const char* file, int line, const char* registered_tests);
+
+ private:
+  bool registered_;
+  ::std::set<const char*> defined_test_names_;
+};
+
+// Skips to the first non-space char after the first comma in 'str';
+// returns NULL if no comma is found in 'str'.
+inline const char* SkipComma(const char* str) {
+  const char* comma = strchr(str, ',');
+  if (comma == NULL) {
+    return NULL;
+  }
+  while (IsSpace(*(++comma))) {}
+  return comma;
+}
+
+// Returns the prefix of 'str' before the first comma in it; returns
+// the entire string if it contains no comma.
+inline String GetPrefixUntilComma(const char* str) {
+  const char* comma = strchr(str, ',');
+  return comma == NULL ? String(str) : String(str, comma - str);
+}
+
+// TypeParameterizedTest<Fixture, TestSel, Types>::Register()
+// registers a list of type-parameterized tests with Google Test.  The
+// return value is insignificant - we just need to return something
+// such that we can call this function in a namespace scope.
+//
+// Implementation note: The GTEST_TEMPLATE_ macro declares a template
+// template parameter.  It's defined in gtest-type-util.h.
+template <GTEST_TEMPLATE_ Fixture, class TestSel, typename Types>
+class TypeParameterizedTest {
+ public:
+  // 'index' is the index of the test in the type list 'Types'
+  // specified in INSTANTIATE_TYPED_TEST_CASE_P(Prefix, TestCase,
+  // Types).  Valid values for 'index' are [0, N - 1] where N is the
+  // length of Types.
+  static bool Register(const char* prefix, const char* case_name,
+                       const char* test_names, int index) {
+    typedef typename Types::Head Type;
+    typedef Fixture<Type> FixtureClass;
+    typedef typename GTEST_BIND_(TestSel, Type) TestClass;
+
+    // First, registers the first type-parameterized test in the type
+    // list.
+    MakeAndRegisterTestInfo(
+        String::Format("%s%s%s/%d", prefix, prefix[0] == '\0' ? "" : "/",
+                       case_name, index).c_str(),
+        GetPrefixUntilComma(test_names).c_str(),
+        GetTypeName<Type>().c_str(),
+        NULL,  // No value parameter.
+        GetTypeId<FixtureClass>(),
+        TestClass::SetUpTestCase,
+        TestClass::TearDownTestCase,
+        new TestFactoryImpl<TestClass>);
+
+    // Next, recurses (at compile time) with the tail of the type list.
+    return TypeParameterizedTest<Fixture, TestSel, typename Types::Tail>
+        ::Register(prefix, case_name, test_names, index + 1);
+  }
+};
+
+// The base case for the compile time recursion.
+template <GTEST_TEMPLATE_ Fixture, class TestSel>
+class TypeParameterizedTest<Fixture, TestSel, Types0> {
+ public:
+  static bool Register(const char* /*prefix*/, const char* /*case_name*/,
+                       const char* /*test_names*/, int /*index*/) {
+    return true;
+  }
+};
+
+// TypeParameterizedTestCase<Fixture, Tests, Types>::Register()
+// registers *all combinations* of 'Tests' and 'Types' with Google
+// Test.  The return value is insignificant - we just need to return
+// something such that we can call this function in a namespace scope.
+template <GTEST_TEMPLATE_ Fixture, typename Tests, typename Types>
+class TypeParameterizedTestCase {
+ public:
+  static bool Register(const char* prefix, const char* case_name,
+                       const char* test_names) {
+    typedef typename Tests::Head Head;
+
+    // First, register the first test in 'Test' for each type in 'Types'.
+    TypeParameterizedTest<Fixture, Head, Types>::Register(
+        prefix, case_name, test_names, 0);
+
+    // Next, recurses (at compile time) with the tail of the test list.
+    return TypeParameterizedTestCase<Fixture, typename Tests::Tail, Types>
+        ::Register(prefix, case_name, SkipComma(test_names));
+  }
+};
+
+// The base case for the compile time recursion.
+template <GTEST_TEMPLATE_ Fixture, typename Types>
+class TypeParameterizedTestCase<Fixture, Templates0, Types> {
+ public:
+  static bool Register(const char* /*prefix*/, const char* /*case_name*/,
+                       const char* /*test_names*/) {
+    return true;
+  }
+};
+
+#endif  // GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P
+
+// Returns the current OS stack trace as a String.
+//
+// The maximum number of stack frames to be included is specified by
+// the gtest_stack_trace_depth flag.  The skip_count parameter
+// specifies the number of top frames to be skipped, which doesn't
+// count against the number of frames to be included.
+//
+// For example, if Foo() calls Bar(), which in turn calls
+// GetCurrentOsStackTraceExceptTop(..., 1), Foo() will be included in
+// the trace but Bar() and GetCurrentOsStackTraceExceptTop() won't.
+GTEST_API_ String GetCurrentOsStackTraceExceptTop(UnitTest* unit_test,
+                                                  int skip_count);
+
+// Helpers for suppressing warnings on unreachable code or constant
+// condition.
+
+// Always returns true.
+GTEST_API_ bool AlwaysTrue();
+
+// Always returns false.
+inline bool AlwaysFalse() { return !AlwaysTrue(); }
+
+// Helper for suppressing false warning from Clang on a const char*
+// variable declared in a conditional expression always being NULL in
+// the else branch.
+struct GTEST_API_ ConstCharPtr {
+  ConstCharPtr(const char* str) : value(str) {}
+  operator bool() const { return true; }
+  const char* value;
+};
+
+// A simple Linear Congruential Generator for generating random
+// numbers with a uniform distribution.  Unlike rand() and srand(), it
+// doesn't use global state (and therefore can't interfere with user
+// code).  Unlike rand_r(), it's portable.  An LCG isn't very random,
+// but it's good enough for our purposes.
+class GTEST_API_ Random {
+ public:
+  static const UInt32 kMaxRange = 1u << 31;
+
+  explicit Random(UInt32 seed) : state_(seed) {}
+
+  void Reseed(UInt32 seed) { state_ = seed; }
+
+  // Generates a random number from [0, range).  Crashes if 'range' is
+  // 0 or greater than kMaxRange.
+  UInt32 Generate(UInt32 range);
+
+ private:
+  UInt32 state_;
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(Random);
+};
+
+// Defining a variable of type CompileAssertTypesEqual<T1, T2> will cause a
+// compiler error iff T1 and T2 are different types.
+template <typename T1, typename T2>
+struct CompileAssertTypesEqual;
+
+template <typename T>
+struct CompileAssertTypesEqual<T, T> {
+};
+
+// Removes the reference from a type if it is a reference type,
+// otherwise leaves it unchanged.  This is the same as
+// tr1::remove_reference, which is not widely available yet.
+template <typename T>
+struct RemoveReference { typedef T type; };  // NOLINT
+template <typename T>
+struct RemoveReference<T&> { typedef T type; };  // NOLINT
+
+// A handy wrapper around RemoveReference that works when the argument
+// T depends on template parameters.
+#define GTEST_REMOVE_REFERENCE_(T) \
+    typename ::testing::internal::RemoveReference<T>::type
+
+// Removes const from a type if it is a const type, otherwise leaves
+// it unchanged.  This is the same as tr1::remove_const, which is not
+// widely available yet.
+template <typename T>
+struct RemoveConst { typedef T type; };  // NOLINT
+template <typename T>
+struct RemoveConst<const T> { typedef T type; };  // NOLINT
+
+// MSVC 8.0, Sun C++, and IBM XL C++ have a bug which causes the above
+// definition to fail to remove the const in 'const int[3]' and 'const
+// char[3][4]'.  The following specialization works around the bug.
+template <typename T, size_t N>
+struct RemoveConst<const T[N]> {
+  typedef typename RemoveConst<T>::type type[N];
+};
+
+#if defined(_MSC_VER) && _MSC_VER < 1400
+// This is the only specialization that allows VC++ 7.1 to remove const in
+// 'const int[3] and 'const int[3][4]'.  However, it causes trouble with GCC
+// and thus needs to be conditionally compiled.
+template <typename T, size_t N>
+struct RemoveConst<T[N]> {
+  typedef typename RemoveConst<T>::type type[N];
+};
+#endif
+
+// A handy wrapper around RemoveConst that works when the argument
+// T depends on template parameters.
+#define GTEST_REMOVE_CONST_(T) \
+    typename ::testing::internal::RemoveConst<T>::type
+
+// Turns const U&, U&, const U, and U all into U.
+#define GTEST_REMOVE_REFERENCE_AND_CONST_(T) \
+    GTEST_REMOVE_CONST_(GTEST_REMOVE_REFERENCE_(T))
+
+// Adds reference to a type if it is not a reference type,
+// otherwise leaves it unchanged.  This is the same as
+// tr1::add_reference, which is not widely available yet.
+template <typename T>
+struct AddReference { typedef T& type; };  // NOLINT
+template <typename T>
+struct AddReference<T&> { typedef T& type; };  // NOLINT
+
+// A handy wrapper around AddReference that works when the argument T
+// depends on template parameters.
+#define GTEST_ADD_REFERENCE_(T) \
+    typename ::testing::internal::AddReference<T>::type
+
+// Adds a reference to const on top of T as necessary.  For example,
+// it transforms
+//
+//   char         ==> const char&
+//   const char   ==> const char&
+//   char&        ==> const char&
+//   const char&  ==> const char&
+//
+// The argument T must depend on some template parameters.
+#define GTEST_REFERENCE_TO_CONST_(T) \
+    GTEST_ADD_REFERENCE_(const GTEST_REMOVE_REFERENCE_(T))
+
+// ImplicitlyConvertible<From, To>::value is a compile-time bool
+// constant that's true iff type From can be implicitly converted to
+// type To.
+template <typename From, typename To>
+class ImplicitlyConvertible {
+ private:
+  // We need the following helper functions only for their types.
+  // They have no implementations.
+
+  // MakeFrom() is an expression whose type is From.  We cannot simply
+  // use From(), as the type From may not have a public default
+  // constructor.
+  static From MakeFrom();
+
+  // These two functions are overloaded.  Given an expression
+  // Helper(x), the compiler will pick the first version if x can be
+  // implicitly converted to type To; otherwise it will pick the
+  // second version.
+  //
+  // The first version returns a value of size 1, and the second
+  // version returns a value of size 2.  Therefore, by checking the
+  // size of Helper(x), which can be done at compile time, we can tell
+  // which version of Helper() is used, and hence whether x can be
+  // implicitly converted to type To.
+  static char Helper(To);
+  static char (&Helper(...))[2];  // NOLINT
+
+  // We have to put the 'public' section after the 'private' section,
+  // or MSVC refuses to compile the code.
+ public:
+  // MSVC warns about implicitly converting from double to int for
+  // possible loss of data, so we need to temporarily disable the
+  // warning.
+#ifdef _MSC_VER
+# pragma warning(push)          // Saves the current warning state.
+# pragma warning(disable:4244)  // Temporarily disables warning 4244.
+
+  static const bool value =
+      sizeof(Helper(ImplicitlyConvertible::MakeFrom())) == 1;
+# pragma warning(pop)           // Restores the warning state.
+#elif defined(__BORLANDC__)
+  // C++Builder cannot use member overload resolution during template
+  // instantiation.  The simplest workaround is to use its C++0x type traits
+  // functions (C++Builder 2009 and above only).
+  static const bool value = __is_convertible(From, To);
+#else
+  static const bool value =
+      sizeof(Helper(ImplicitlyConvertible::MakeFrom())) == 1;
+#endif  // _MSV_VER
+};
+template <typename From, typename To>
+const bool ImplicitlyConvertible<From, To>::value;
+
+// IsAProtocolMessage<T>::value is a compile-time bool constant that's
+// true iff T is type ProtocolMessage, proto2::Message, or a subclass
+// of those.
+template <typename T>
+struct IsAProtocolMessage
+    : public bool_constant<
+  ImplicitlyConvertible<const T*, const ::ProtocolMessage*>::value ||
+  ImplicitlyConvertible<const T*, const ::proto2::Message*>::value> {
+};
+
+// When the compiler sees expression IsContainerTest<C>(0), if C is an
+// STL-style container class, the first overload of IsContainerTest
+// will be viable (since both C::iterator* and C::const_iterator* are
+// valid types and NULL can be implicitly converted to them).  It will
+// be picked over the second overload as 'int' is a perfect match for
+// the type of argument 0.  If C::iterator or C::const_iterator is not
+// a valid type, the first overload is not viable, and the second
+// overload will be picked.  Therefore, we can determine whether C is
+// a container class by checking the type of IsContainerTest<C>(0).
+// The value of the expression is insignificant.
+//
+// Note that we look for both C::iterator and C::const_iterator.  The
+// reason is that C++ injects the name of a class as a member of the
+// class itself (e.g. you can refer to class iterator as either
+// 'iterator' or 'iterator::iterator').  If we look for C::iterator
+// only, for example, we would mistakenly think that a class named
+// iterator is an STL container.
+//
+// Also note that the simpler approach of overloading
+// IsContainerTest(typename C::const_iterator*) and
+// IsContainerTest(...) doesn't work with Visual Age C++ and Sun C++.
+typedef int IsContainer;
+template <class C>
+IsContainer IsContainerTest(int /* dummy */,
+                            typename C::iterator* /* it */ = NULL,
+                            typename C::const_iterator* /* const_it */ = NULL) {
+  return 0;
+}
+
+typedef char IsNotContainer;
+template <class C>
+IsNotContainer IsContainerTest(long /* dummy */) { return '\0'; }
+
+// EnableIf<condition>::type is void when 'Cond' is true, and
+// undefined when 'Cond' is false.  To use SFINAE to make a function
+// overload only apply when a particular expression is true, add
+// "typename EnableIf<expression>::type* = 0" as the last parameter.
+template<bool> struct EnableIf;
+template<> struct EnableIf<true> { typedef void type; };  // NOLINT
+
+// Utilities for native arrays.
+
+// ArrayEq() compares two k-dimensional native arrays using the
+// elements' operator==, where k can be any integer >= 0.  When k is
+// 0, ArrayEq() degenerates into comparing a single pair of values.
+
+template <typename T, typename U>
+bool ArrayEq(const T* lhs, size_t size, const U* rhs);
+
+// This generic version is used when k is 0.
+template <typename T, typename U>
+inline bool ArrayEq(const T& lhs, const U& rhs) { return lhs == rhs; }
+
+// This overload is used when k >= 1.
+template <typename T, typename U, size_t N>
+inline bool ArrayEq(const T(&lhs)[N], const U(&rhs)[N]) {
+  return internal::ArrayEq(lhs, N, rhs);
+}
+
+// This helper reduces code bloat.  If we instead put its logic inside
+// the previous ArrayEq() function, arrays with different sizes would
+// lead to different copies of the template code.
+template <typename T, typename U>
+bool ArrayEq(const T* lhs, size_t size, const U* rhs) {
+  for (size_t i = 0; i != size; i++) {
+    if (!internal::ArrayEq(lhs[i], rhs[i]))
+      return false;
+  }
+  return true;
+}
+
+// Finds the first element in the iterator range [begin, end) that
+// equals elem.  Element may be a native array type itself.
+template <typename Iter, typename Element>
+Iter ArrayAwareFind(Iter begin, Iter end, const Element& elem) {
+  for (Iter it = begin; it != end; ++it) {
+    if (internal::ArrayEq(*it, elem))
+      return it;
+  }
+  return end;
+}
+
+// CopyArray() copies a k-dimensional native array using the elements'
+// operator=, where k can be any integer >= 0.  When k is 0,
+// CopyArray() degenerates into copying a single value.
+
+template <typename T, typename U>
+void CopyArray(const T* from, size_t size, U* to);
+
+// This generic version is used when k is 0.
+template <typename T, typename U>
+inline void CopyArray(const T& from, U* to) { *to = from; }
+
+// This overload is used when k >= 1.
+template <typename T, typename U, size_t N>
+inline void CopyArray(const T(&from)[N], U(*to)[N]) {
+  internal::CopyArray(from, N, *to);
+}
+
+// This helper reduces code bloat.  If we instead put its logic inside
+// the previous CopyArray() function, arrays with different sizes
+// would lead to different copies of the template code.
+template <typename T, typename U>
+void CopyArray(const T* from, size_t size, U* to) {
+  for (size_t i = 0; i != size; i++) {
+    internal::CopyArray(from[i], to + i);
+  }
+}
+
+// The relation between an NativeArray object (see below) and the
+// native array it represents.
+enum RelationToSource {
+  kReference,  // The NativeArray references the native array.
+  kCopy        // The NativeArray makes a copy of the native array and
+               // owns the copy.
+};
+
+// Adapts a native array to a read-only STL-style container.  Instead
+// of the complete STL container concept, this adaptor only implements
+// members useful for Google Mock's container matchers.  New members
+// should be added as needed.  To simplify the implementation, we only
+// support Element being a raw type (i.e. having no top-level const or
+// reference modifier).  It's the client's responsibility to satisfy
+// this requirement.  Element can be an array type itself (hence
+// multi-dimensional arrays are supported).
+template <typename Element>
+class NativeArray {
+ public:
+  // STL-style container typedefs.
+  typedef Element value_type;
+  typedef Element* iterator;
+  typedef const Element* const_iterator;
+
+  // Constructs from a native array.
+  NativeArray(const Element* array, size_t count, RelationToSource relation) {
+    Init(array, count, relation);
+  }
+
+  // Copy constructor.
+  NativeArray(const NativeArray& rhs) {
+    Init(rhs.array_, rhs.size_, rhs.relation_to_source_);
+  }
+
+  ~NativeArray() {
+    // Ensures that the user doesn't instantiate NativeArray with a
+    // const or reference type.
+    static_cast<void>(StaticAssertTypeEqHelper<Element,
+        GTEST_REMOVE_REFERENCE_AND_CONST_(Element)>());
+    if (relation_to_source_ == kCopy)
+      delete[] array_;
+  }
+
+  // STL-style container methods.
+  size_t size() const { return size_; }
+  const_iterator begin() const { return array_; }
+  const_iterator end() const { return array_ + size_; }
+  bool operator==(const NativeArray& rhs) const {
+    return size() == rhs.size() &&
+        ArrayEq(begin(), size(), rhs.begin());
+  }
+
+ private:
+  // Initializes this object; makes a copy of the input array if
+  // 'relation' is kCopy.
+  void Init(const Element* array, size_t a_size, RelationToSource relation) {
+    if (relation == kReference) {
+      array_ = array;
+    } else {
+      Element* const copy = new Element[a_size];
+      CopyArray(array, a_size, copy);
+      array_ = copy;
+    }
+    size_ = a_size;
+    relation_to_source_ = relation;
+  }
+
+  const Element* array_;
+  size_t size_;
+  RelationToSource relation_to_source_;
+
+  GTEST_DISALLOW_ASSIGN_(NativeArray);
+};
+
+}  // namespace internal
+}  // namespace testing
+
+#define GTEST_MESSAGE_AT_(file, line, message, result_type) \
+  ::testing::internal::AssertHelper(result_type, file, line, message) \
+    = ::testing::Message()
+
+#define GTEST_MESSAGE_(message, result_type) \
+  GTEST_MESSAGE_AT_(__FILE__, __LINE__, message, result_type)
+
+#define GTEST_FATAL_FAILURE_(message) \
+  return GTEST_MESSAGE_(message, ::testing::TestPartResult::kFatalFailure)
+
+#define GTEST_NONFATAL_FAILURE_(message) \
+  GTEST_MESSAGE_(message, ::testing::TestPartResult::kNonFatalFailure)
+
+#define GTEST_SUCCESS_(message) \
+  GTEST_MESSAGE_(message, ::testing::TestPartResult::kSuccess)
+
+// Suppresses MSVC warnings 4072 (unreachable code) for the code following
+// statement if it returns or throws (or doesn't return or throw in some
+// situations).
+#define GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement) \
+  if (::testing::internal::AlwaysTrue()) { statement; }
+
+#define GTEST_TEST_THROW_(statement, expected_exception, fail) \
+  GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
+  if (::testing::internal::ConstCharPtr gtest_msg = "") { \
+    bool gtest_caught_expected = false; \
+    try { \
+      GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
+    } \
+    catch (expected_exception const&) { \
+      gtest_caught_expected = true; \
+    } \
+    catch (...) { \
+      gtest_msg.value = \
+          "Expected: " #statement " throws an exception of type " \
+          #expected_exception ".\n  Actual: it throws a different type."; \
+      goto GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__); \
+    } \
+    if (!gtest_caught_expected) { \
+      gtest_msg.value = \
+          "Expected: " #statement " throws an exception of type " \
+          #expected_exception ".\n  Actual: it throws nothing."; \
+      goto GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__); \
+    } \
+  } else \
+    GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__): \
+      fail(gtest_msg.value)
+
+#define GTEST_TEST_NO_THROW_(statement, fail) \
+  GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
+  if (::testing::internal::AlwaysTrue()) { \
+    try { \
+      GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
+    } \
+    catch (...) { \
+      goto GTEST_CONCAT_TOKEN_(gtest_label_testnothrow_, __LINE__); \
+    } \
+  } else \
+    GTEST_CONCAT_TOKEN_(gtest_label_testnothrow_, __LINE__): \
+      fail("Expected: " #statement " doesn't throw an exception.\n" \
+           "  Actual: it throws.")
+
+#define GTEST_TEST_ANY_THROW_(statement, fail) \
+  GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
+  if (::testing::internal::AlwaysTrue()) { \
+    bool gtest_caught_any = false; \
+    try { \
+      GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
+    } \
+    catch (...) { \
+      gtest_caught_any = true; \
+    } \
+    if (!gtest_caught_any) { \
+      goto GTEST_CONCAT_TOKEN_(gtest_label_testanythrow_, __LINE__); \
+    } \
+  } else \
+    GTEST_CONCAT_TOKEN_(gtest_label_testanythrow_, __LINE__): \
+      fail("Expected: " #statement " throws an exception.\n" \
+           "  Actual: it doesn't.")
+
+
+// Implements Boolean test assertions such as EXPECT_TRUE. expression can be
+// either a boolean expression or an AssertionResult. text is a textual
+// represenation of expression as it was passed into the EXPECT_TRUE.
+#define GTEST_TEST_BOOLEAN_(expression, text, actual, expected, fail) \
+  GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
+  if (const ::testing::AssertionResult gtest_ar_ = \
+      ::testing::AssertionResult(expression)) \
+    ; \
+  else \
+    fail(::testing::internal::GetBoolAssertionFailureMessage(\
+        gtest_ar_, text, #actual, #expected).c_str())
+
+#define GTEST_TEST_NO_FATAL_FAILURE_(statement, fail) \
+  GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
+  if (::testing::internal::AlwaysTrue()) { \
+    ::testing::internal::HasNewFatalFailureHelper gtest_fatal_failure_checker; \
+    GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
+    if (gtest_fatal_failure_checker.has_new_fatal_failure()) { \
+      goto GTEST_CONCAT_TOKEN_(gtest_label_testnofatal_, __LINE__); \
+    } \
+  } else \
+    GTEST_CONCAT_TOKEN_(gtest_label_testnofatal_, __LINE__): \
+      fail("Expected: " #statement " doesn't generate new fatal " \
+           "failures in the current thread.\n" \
+           "  Actual: it does.")
+
+// Expands to the name of the class that implements the given test.
+#define GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \
+  test_case_name##_##test_name##_Test
+
+// Helper macro for defining tests.
+#define GTEST_TEST_(test_case_name, test_name, parent_class, parent_id)\
+class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) : public parent_class {\
+ public:\
+  GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {}\
+ private:\
+  virtual void TestBody();\
+  static ::testing::TestInfo* const test_info_ GTEST_ATTRIBUTE_UNUSED_;\
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(\
+      GTEST_TEST_CLASS_NAME_(test_case_name, test_name));\
+};\
+\
+::testing::TestInfo* const GTEST_TEST_CLASS_NAME_(test_case_name, test_name)\
+  ::test_info_ =\
+    ::testing::internal::MakeAndRegisterTestInfo(\
+        #test_case_name, #test_name, NULL, NULL, \
+        (parent_id), \
+        parent_class::SetUpTestCase, \
+        parent_class::TearDownTestCase, \
+        new ::testing::internal::TestFactoryImpl<\
+            GTEST_TEST_CLASS_NAME_(test_case_name, test_name)>);\
+void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestBody()
+
+#endif  // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_
diff --git a/google-breakpad/src/testing/gtest/include/gtest/internal/gtest-linked_ptr.h b/google-breakpad/src/testing/gtest/include/gtest/internal/gtest-linked_ptr.h
new file mode 100644
index 0000000..b1362cd
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/include/gtest/internal/gtest-linked_ptr.h
@@ -0,0 +1,233 @@
+// Copyright 2003 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Authors: Dan Egnor (egnor@google.com)
+//
+// A "smart" pointer type with reference tracking.  Every pointer to a
+// particular object is kept on a circular linked list.  When the last pointer
+// to an object is destroyed or reassigned, the object is deleted.
+//
+// Used properly, this deletes the object when the last reference goes away.
+// There are several caveats:
+// - Like all reference counting schemes, cycles lead to leaks.
+// - Each smart pointer is actually two pointers (8 bytes instead of 4).
+// - Every time a pointer is assigned, the entire list of pointers to that
+//   object is traversed.  This class is therefore NOT SUITABLE when there
+//   will often be more than two or three pointers to a particular object.
+// - References are only tracked as long as linked_ptr<> objects are copied.
+//   If a linked_ptr<> is converted to a raw pointer and back, BAD THINGS
+//   will happen (double deletion).
+//
+// A good use of this class is storing object references in STL containers.
+// You can safely put linked_ptr<> in a vector<>.
+// Other uses may not be as good.
+//
+// Note: If you use an incomplete type with linked_ptr<>, the class
+// *containing* linked_ptr<> must have a constructor and destructor (even
+// if they do nothing!).
+//
+// Bill Gibbons suggested we use something like this.
+//
+// Thread Safety:
+//   Unlike other linked_ptr implementations, in this implementation
+//   a linked_ptr object is thread-safe in the sense that:
+//     - it's safe to copy linked_ptr objects concurrently,
+//     - it's safe to copy *from* a linked_ptr and read its underlying
+//       raw pointer (e.g. via get()) concurrently, and
+//     - it's safe to write to two linked_ptrs that point to the same
+//       shared object concurrently.
+// TODO(wan@google.com): rename this to safe_linked_ptr to avoid
+// confusion with normal linked_ptr.
+
+#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_LINKED_PTR_H_
+#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_LINKED_PTR_H_
+
+#include <stdlib.h>
+#include <assert.h>
+
+#include "gtest/internal/gtest-port.h"
+
+namespace testing {
+namespace internal {
+
+// Protects copying of all linked_ptr objects.
+GTEST_API_ GTEST_DECLARE_STATIC_MUTEX_(g_linked_ptr_mutex);
+
+// This is used internally by all instances of linked_ptr<>.  It needs to be
+// a non-template class because different types of linked_ptr<> can refer to
+// the same object (linked_ptr<Superclass>(obj) vs linked_ptr<Subclass>(obj)).
+// So, it needs to be possible for different types of linked_ptr to participate
+// in the same circular linked list, so we need a single class type here.
+//
+// DO NOT USE THIS CLASS DIRECTLY YOURSELF.  Use linked_ptr<T>.
+class linked_ptr_internal {
+ public:
+  // Create a new circle that includes only this instance.
+  void join_new() {
+    next_ = this;
+  }
+
+  // Many linked_ptr operations may change p.link_ for some linked_ptr
+  // variable p in the same circle as this object.  Therefore we need
+  // to prevent two such operations from occurring concurrently.
+  //
+  // Note that different types of linked_ptr objects can coexist in a
+  // circle (e.g. linked_ptr<Base>, linked_ptr<Derived1>, and
+  // linked_ptr<Derived2>).  Therefore we must use a single mutex to
+  // protect all linked_ptr objects.  This can create serious
+  // contention in production code, but is acceptable in a testing
+  // framework.
+
+  // Join an existing circle.
+  void join(linked_ptr_internal const* ptr)
+      GTEST_LOCK_EXCLUDED_(g_linked_ptr_mutex) {
+    MutexLock lock(&g_linked_ptr_mutex);
+
+    linked_ptr_internal const* p = ptr;
+    while (p->next_ != ptr) p = p->next_;
+    p->next_ = this;
+    next_ = ptr;
+  }
+
+  // Leave whatever circle we're part of.  Returns true if we were the
+  // last member of the circle.  Once this is done, you can join() another.
+  bool depart()
+      GTEST_LOCK_EXCLUDED_(g_linked_ptr_mutex) {
+    MutexLock lock(&g_linked_ptr_mutex);
+
+    if (next_ == this) return true;
+    linked_ptr_internal const* p = next_;
+    while (p->next_ != this) p = p->next_;
+    p->next_ = next_;
+    return false;
+  }
+
+ private:
+  mutable linked_ptr_internal const* next_;
+};
+
+template <typename T>
+class linked_ptr {
+ public:
+  typedef T element_type;
+
+  // Take over ownership of a raw pointer.  This should happen as soon as
+  // possible after the object is created.
+  explicit linked_ptr(T* ptr = NULL) { capture(ptr); }
+  ~linked_ptr() { depart(); }
+
+  // Copy an existing linked_ptr<>, adding ourselves to the list of references.
+  template <typename U> linked_ptr(linked_ptr<U> const& ptr) { copy(&ptr); }
+  linked_ptr(linked_ptr const& ptr) {  // NOLINT
+    assert(&ptr != this);
+    copy(&ptr);
+  }
+
+  // Assignment releases the old value and acquires the new.
+  template <typename U> linked_ptr& operator=(linked_ptr<U> const& ptr) {
+    depart();
+    copy(&ptr);
+    return *this;
+  }
+
+  linked_ptr& operator=(linked_ptr const& ptr) {
+    if (&ptr != this) {
+      depart();
+      copy(&ptr);
+    }
+    return *this;
+  }
+
+  // Smart pointer members.
+  void reset(T* ptr = NULL) {
+    depart();
+    capture(ptr);
+  }
+  T* get() const { return value_; }
+  T* operator->() const { return value_; }
+  T& operator*() const { return *value_; }
+
+  bool operator==(T* p) const { return value_ == p; }
+  bool operator!=(T* p) const { return value_ != p; }
+  template <typename U>
+  bool operator==(linked_ptr<U> const& ptr) const {
+    return value_ == ptr.get();
+  }
+  template <typename U>
+  bool operator!=(linked_ptr<U> const& ptr) const {
+    return value_ != ptr.get();
+  }
+
+ private:
+  template <typename U>
+  friend class linked_ptr;
+
+  T* value_;
+  linked_ptr_internal link_;
+
+  void depart() {
+    if (link_.depart()) delete value_;
+  }
+
+  void capture(T* ptr) {
+    value_ = ptr;
+    link_.join_new();
+  }
+
+  template <typename U> void copy(linked_ptr<U> const* ptr) {
+    value_ = ptr->get();
+    if (value_)
+      link_.join(&ptr->link_);
+    else
+      link_.join_new();
+  }
+};
+
+template<typename T> inline
+bool operator==(T* ptr, const linked_ptr<T>& x) {
+  return ptr == x.get();
+}
+
+template<typename T> inline
+bool operator!=(T* ptr, const linked_ptr<T>& x) {
+  return ptr != x.get();
+}
+
+// A function to convert T* into linked_ptr<T>
+// Doing e.g. make_linked_ptr(new FooBarBaz<type>(arg)) is a shorter notation
+// for linked_ptr<FooBarBaz<type> >(new FooBarBaz<type>(arg))
+template <typename T>
+linked_ptr<T> make_linked_ptr(T* ptr) {
+  return linked_ptr<T>(ptr);
+}
+
+}  // namespace internal
+}  // namespace testing
+
+#endif  // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_LINKED_PTR_H_
diff --git a/google-breakpad/src/testing/gtest/include/gtest/internal/gtest-param-util-generated.h b/google-breakpad/src/testing/gtest/include/gtest/internal/gtest-param-util-generated.h
new file mode 100644
index 0000000..e805485
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/include/gtest/internal/gtest-param-util-generated.h
@@ -0,0 +1,5143 @@
+// This file was GENERATED by command:
+//     pump.py gtest-param-util-generated.h.pump
+// DO NOT EDIT BY HAND!!!
+
+// Copyright 2008 Google Inc.
+// All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: vladl@google.com (Vlad Losev)
+
+// Type and function utilities for implementing parameterized tests.
+// This file is generated by a SCRIPT.  DO NOT EDIT BY HAND!
+//
+// Currently Google Test supports at most 50 arguments in Values,
+// and at most 10 arguments in Combine. Please contact
+// googletestframework@googlegroups.com if you need more.
+// Please note that the number of arguments to Combine is limited
+// by the maximum arity of the implementation of tr1::tuple which is
+// currently set at 10.
+
+#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_
+#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_
+
+// scripts/fuse_gtest.py depends on gtest's own header being #included
+// *unconditionally*.  Therefore these #includes cannot be moved
+// inside #if GTEST_HAS_PARAM_TEST.
+#include "gtest/internal/gtest-param-util.h"
+#include "gtest/internal/gtest-port.h"
+
+#if GTEST_HAS_PARAM_TEST
+
+namespace testing {
+
+// Forward declarations of ValuesIn(), which is implemented in
+// include/gtest/gtest-param-test.h.
+template <typename ForwardIterator>
+internal::ParamGenerator<
+  typename ::testing::internal::IteratorTraits<ForwardIterator>::value_type>
+ValuesIn(ForwardIterator begin, ForwardIterator end);
+
+template <typename T, size_t N>
+internal::ParamGenerator<T> ValuesIn(const T (&array)[N]);
+
+template <class Container>
+internal::ParamGenerator<typename Container::value_type> ValuesIn(
+    const Container& container);
+
+namespace internal {
+
+// Used in the Values() function to provide polymorphic capabilities.
+template <typename T1>
+class ValueArray1 {
+ public:
+  explicit ValueArray1(T1 v1) : v1_(v1) {}
+
+  template <typename T>
+  operator ParamGenerator<T>() const { return ValuesIn(&v1_, &v1_ + 1); }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ValueArray1& other);
+
+  const T1 v1_;
+};
+
+template <typename T1, typename T2>
+class ValueArray2 {
+ public:
+  ValueArray2(T1 v1, T2 v2) : v1_(v1), v2_(v2) {}
+
+  template <typename T>
+  operator ParamGenerator<T>() const {
+    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_)};
+    return ValuesIn(array);
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ValueArray2& other);
+
+  const T1 v1_;
+  const T2 v2_;
+};
+
+template <typename T1, typename T2, typename T3>
+class ValueArray3 {
+ public:
+  ValueArray3(T1 v1, T2 v2, T3 v3) : v1_(v1), v2_(v2), v3_(v3) {}
+
+  template <typename T>
+  operator ParamGenerator<T>() const {
+    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+        static_cast<T>(v3_)};
+    return ValuesIn(array);
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ValueArray3& other);
+
+  const T1 v1_;
+  const T2 v2_;
+  const T3 v3_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4>
+class ValueArray4 {
+ public:
+  ValueArray4(T1 v1, T2 v2, T3 v3, T4 v4) : v1_(v1), v2_(v2), v3_(v3),
+      v4_(v4) {}
+
+  template <typename T>
+  operator ParamGenerator<T>() const {
+    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+        static_cast<T>(v3_), static_cast<T>(v4_)};
+    return ValuesIn(array);
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ValueArray4& other);
+
+  const T1 v1_;
+  const T2 v2_;
+  const T3 v3_;
+  const T4 v4_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5>
+class ValueArray5 {
+ public:
+  ValueArray5(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5) : v1_(v1), v2_(v2), v3_(v3),
+      v4_(v4), v5_(v5) {}
+
+  template <typename T>
+  operator ParamGenerator<T>() const {
+    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_)};
+    return ValuesIn(array);
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ValueArray5& other);
+
+  const T1 v1_;
+  const T2 v2_;
+  const T3 v3_;
+  const T4 v4_;
+  const T5 v5_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6>
+class ValueArray6 {
+ public:
+  ValueArray6(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6) : v1_(v1), v2_(v2),
+      v3_(v3), v4_(v4), v5_(v5), v6_(v6) {}
+
+  template <typename T>
+  operator ParamGenerator<T>() const {
+    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+        static_cast<T>(v6_)};
+    return ValuesIn(array);
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ValueArray6& other);
+
+  const T1 v1_;
+  const T2 v2_;
+  const T3 v3_;
+  const T4 v4_;
+  const T5 v5_;
+  const T6 v6_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7>
+class ValueArray7 {
+ public:
+  ValueArray7(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7) : v1_(v1),
+      v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7) {}
+
+  template <typename T>
+  operator ParamGenerator<T>() const {
+    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+        static_cast<T>(v6_), static_cast<T>(v7_)};
+    return ValuesIn(array);
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ValueArray7& other);
+
+  const T1 v1_;
+  const T2 v2_;
+  const T3 v3_;
+  const T4 v4_;
+  const T5 v5_;
+  const T6 v6_;
+  const T7 v7_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8>
+class ValueArray8 {
+ public:
+  ValueArray8(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
+      T8 v8) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
+      v8_(v8) {}
+
+  template <typename T>
+  operator ParamGenerator<T>() const {
+    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_)};
+    return ValuesIn(array);
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ValueArray8& other);
+
+  const T1 v1_;
+  const T2 v2_;
+  const T3 v3_;
+  const T4 v4_;
+  const T5 v5_;
+  const T6 v6_;
+  const T7 v7_;
+  const T8 v8_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9>
+class ValueArray9 {
+ public:
+  ValueArray9(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8,
+      T9 v9) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
+      v8_(v8), v9_(v9) {}
+
+  template <typename T>
+  operator ParamGenerator<T>() const {
+    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+        static_cast<T>(v9_)};
+    return ValuesIn(array);
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ValueArray9& other);
+
+  const T1 v1_;
+  const T2 v2_;
+  const T3 v3_;
+  const T4 v4_;
+  const T5 v5_;
+  const T6 v6_;
+  const T7 v7_;
+  const T8 v8_;
+  const T9 v9_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10>
+class ValueArray10 {
+ public:
+  ValueArray10(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+      T10 v10) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
+      v8_(v8), v9_(v9), v10_(v10) {}
+
+  template <typename T>
+  operator ParamGenerator<T>() const {
+    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+        static_cast<T>(v9_), static_cast<T>(v10_)};
+    return ValuesIn(array);
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ValueArray10& other);
+
+  const T1 v1_;
+  const T2 v2_;
+  const T3 v3_;
+  const T4 v4_;
+  const T5 v5_;
+  const T6 v6_;
+  const T7 v7_;
+  const T8 v8_;
+  const T9 v9_;
+  const T10 v10_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11>
+class ValueArray11 {
+ public:
+  ValueArray11(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+      T10 v10, T11 v11) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6),
+      v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11) {}
+
+  template <typename T>
+  operator ParamGenerator<T>() const {
+    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_)};
+    return ValuesIn(array);
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ValueArray11& other);
+
+  const T1 v1_;
+  const T2 v2_;
+  const T3 v3_;
+  const T4 v4_;
+  const T5 v5_;
+  const T6 v6_;
+  const T7 v7_;
+  const T8 v8_;
+  const T9 v9_;
+  const T10 v10_;
+  const T11 v11_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12>
+class ValueArray12 {
+ public:
+  ValueArray12(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+      T10 v10, T11 v11, T12 v12) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5),
+      v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12) {}
+
+  template <typename T>
+  operator ParamGenerator<T>() const {
+    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+        static_cast<T>(v12_)};
+    return ValuesIn(array);
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ValueArray12& other);
+
+  const T1 v1_;
+  const T2 v2_;
+  const T3 v3_;
+  const T4 v4_;
+  const T5 v5_;
+  const T6 v6_;
+  const T7 v7_;
+  const T8 v8_;
+  const T9 v9_;
+  const T10 v10_;
+  const T11 v11_;
+  const T12 v12_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13>
+class ValueArray13 {
+ public:
+  ValueArray13(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+      T10 v10, T11 v11, T12 v12, T13 v13) : v1_(v1), v2_(v2), v3_(v3), v4_(v4),
+      v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11),
+      v12_(v12), v13_(v13) {}
+
+  template <typename T>
+  operator ParamGenerator<T>() const {
+    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+        static_cast<T>(v12_), static_cast<T>(v13_)};
+    return ValuesIn(array);
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ValueArray13& other);
+
+  const T1 v1_;
+  const T2 v2_;
+  const T3 v3_;
+  const T4 v4_;
+  const T5 v5_;
+  const T6 v6_;
+  const T7 v7_;
+  const T8 v8_;
+  const T9 v9_;
+  const T10 v10_;
+  const T11 v11_;
+  const T12 v12_;
+  const T13 v13_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14>
+class ValueArray14 {
+ public:
+  ValueArray14(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14) : v1_(v1), v2_(v2), v3_(v3),
+      v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
+      v11_(v11), v12_(v12), v13_(v13), v14_(v14) {}
+
+  template <typename T>
+  operator ParamGenerator<T>() const {
+    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_)};
+    return ValuesIn(array);
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ValueArray14& other);
+
+  const T1 v1_;
+  const T2 v2_;
+  const T3 v3_;
+  const T4 v4_;
+  const T5 v5_;
+  const T6 v6_;
+  const T7 v7_;
+  const T8 v8_;
+  const T9 v9_;
+  const T10 v10_;
+  const T11 v11_;
+  const T12 v12_;
+  const T13 v13_;
+  const T14 v14_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15>
+class ValueArray15 {
+ public:
+  ValueArray15(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15) : v1_(v1), v2_(v2),
+      v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
+      v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15) {}
+
+  template <typename T>
+  operator ParamGenerator<T>() const {
+    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+        static_cast<T>(v15_)};
+    return ValuesIn(array);
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ValueArray15& other);
+
+  const T1 v1_;
+  const T2 v2_;
+  const T3 v3_;
+  const T4 v4_;
+  const T5 v5_;
+  const T6 v6_;
+  const T7 v7_;
+  const T8 v8_;
+  const T9 v9_;
+  const T10 v10_;
+  const T11 v11_;
+  const T12 v12_;
+  const T13 v13_;
+  const T14 v14_;
+  const T15 v15_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16>
+class ValueArray16 {
+ public:
+  ValueArray16(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16) : v1_(v1),
+      v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9),
+      v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15),
+      v16_(v16) {}
+
+  template <typename T>
+  operator ParamGenerator<T>() const {
+    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+        static_cast<T>(v15_), static_cast<T>(v16_)};
+    return ValuesIn(array);
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ValueArray16& other);
+
+  const T1 v1_;
+  const T2 v2_;
+  const T3 v3_;
+  const T4 v4_;
+  const T5 v5_;
+  const T6 v6_;
+  const T7 v7_;
+  const T8 v8_;
+  const T9 v9_;
+  const T10 v10_;
+  const T11 v11_;
+  const T12 v12_;
+  const T13 v13_;
+  const T14 v14_;
+  const T15 v15_;
+  const T16 v16_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17>
+class ValueArray17 {
+ public:
+  ValueArray17(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16,
+      T17 v17) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
+      v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
+      v15_(v15), v16_(v16), v17_(v17) {}
+
+  template <typename T>
+  operator ParamGenerator<T>() const {
+    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_)};
+    return ValuesIn(array);
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ValueArray17& other);
+
+  const T1 v1_;
+  const T2 v2_;
+  const T3 v3_;
+  const T4 v4_;
+  const T5 v5_;
+  const T6 v6_;
+  const T7 v7_;
+  const T8 v8_;
+  const T9 v9_;
+  const T10 v10_;
+  const T11 v11_;
+  const T12 v12_;
+  const T13 v13_;
+  const T14 v14_;
+  const T15 v15_;
+  const T16 v16_;
+  const T17 v17_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18>
+class ValueArray18 {
+ public:
+  ValueArray18(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+      T18 v18) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
+      v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
+      v15_(v15), v16_(v16), v17_(v17), v18_(v18) {}
+
+  template <typename T>
+  operator ParamGenerator<T>() const {
+    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+        static_cast<T>(v18_)};
+    return ValuesIn(array);
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ValueArray18& other);
+
+  const T1 v1_;
+  const T2 v2_;
+  const T3 v3_;
+  const T4 v4_;
+  const T5 v5_;
+  const T6 v6_;
+  const T7 v7_;
+  const T8 v8_;
+  const T9 v9_;
+  const T10 v10_;
+  const T11 v11_;
+  const T12 v12_;
+  const T13 v13_;
+  const T14 v14_;
+  const T15 v15_;
+  const T16 v16_;
+  const T17 v17_;
+  const T18 v18_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19>
+class ValueArray19 {
+ public:
+  ValueArray19(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+      T18 v18, T19 v19) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6),
+      v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13),
+      v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19) {}
+
+  template <typename T>
+  operator ParamGenerator<T>() const {
+    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+        static_cast<T>(v18_), static_cast<T>(v19_)};
+    return ValuesIn(array);
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ValueArray19& other);
+
+  const T1 v1_;
+  const T2 v2_;
+  const T3 v3_;
+  const T4 v4_;
+  const T5 v5_;
+  const T6 v6_;
+  const T7 v7_;
+  const T8 v8_;
+  const T9 v9_;
+  const T10 v10_;
+  const T11 v11_;
+  const T12 v12_;
+  const T13 v13_;
+  const T14 v14_;
+  const T15 v15_;
+  const T16 v16_;
+  const T17 v17_;
+  const T18 v18_;
+  const T19 v19_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20>
+class ValueArray20 {
+ public:
+  ValueArray20(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+      T18 v18, T19 v19, T20 v20) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5),
+      v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12),
+      v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18),
+      v19_(v19), v20_(v20) {}
+
+  template <typename T>
+  operator ParamGenerator<T>() const {
+    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_)};
+    return ValuesIn(array);
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ValueArray20& other);
+
+  const T1 v1_;
+  const T2 v2_;
+  const T3 v3_;
+  const T4 v4_;
+  const T5 v5_;
+  const T6 v6_;
+  const T7 v7_;
+  const T8 v8_;
+  const T9 v9_;
+  const T10 v10_;
+  const T11 v11_;
+  const T12 v12_;
+  const T13 v13_;
+  const T14 v14_;
+  const T15 v15_;
+  const T16 v16_;
+  const T17 v17_;
+  const T18 v18_;
+  const T19 v19_;
+  const T20 v20_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21>
+class ValueArray21 {
+ public:
+  ValueArray21(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+      T18 v18, T19 v19, T20 v20, T21 v21) : v1_(v1), v2_(v2), v3_(v3), v4_(v4),
+      v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11),
+      v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17),
+      v18_(v18), v19_(v19), v20_(v20), v21_(v21) {}
+
+  template <typename T>
+  operator ParamGenerator<T>() const {
+    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+        static_cast<T>(v21_)};
+    return ValuesIn(array);
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ValueArray21& other);
+
+  const T1 v1_;
+  const T2 v2_;
+  const T3 v3_;
+  const T4 v4_;
+  const T5 v5_;
+  const T6 v6_;
+  const T7 v7_;
+  const T8 v8_;
+  const T9 v9_;
+  const T10 v10_;
+  const T11 v11_;
+  const T12 v12_;
+  const T13 v13_;
+  const T14 v14_;
+  const T15 v15_;
+  const T16 v16_;
+  const T17 v17_;
+  const T18 v18_;
+  const T19 v19_;
+  const T20 v20_;
+  const T21 v21_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22>
+class ValueArray22 {
+ public:
+  ValueArray22(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22) : v1_(v1), v2_(v2), v3_(v3),
+      v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
+      v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
+      v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22) {}
+
+  template <typename T>
+  operator ParamGenerator<T>() const {
+    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+        static_cast<T>(v21_), static_cast<T>(v22_)};
+    return ValuesIn(array);
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ValueArray22& other);
+
+  const T1 v1_;
+  const T2 v2_;
+  const T3 v3_;
+  const T4 v4_;
+  const T5 v5_;
+  const T6 v6_;
+  const T7 v7_;
+  const T8 v8_;
+  const T9 v9_;
+  const T10 v10_;
+  const T11 v11_;
+  const T12 v12_;
+  const T13 v13_;
+  const T14 v14_;
+  const T15 v15_;
+  const T16 v16_;
+  const T17 v17_;
+  const T18 v18_;
+  const T19 v19_;
+  const T20 v20_;
+  const T21 v21_;
+  const T22 v22_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23>
+class ValueArray23 {
+ public:
+  ValueArray23(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23) : v1_(v1), v2_(v2),
+      v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
+      v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
+      v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
+      v23_(v23) {}
+
+  template <typename T>
+  operator ParamGenerator<T>() const {
+    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_)};
+    return ValuesIn(array);
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ValueArray23& other);
+
+  const T1 v1_;
+  const T2 v2_;
+  const T3 v3_;
+  const T4 v4_;
+  const T5 v5_;
+  const T6 v6_;
+  const T7 v7_;
+  const T8 v8_;
+  const T9 v9_;
+  const T10 v10_;
+  const T11 v11_;
+  const T12 v12_;
+  const T13 v13_;
+  const T14 v14_;
+  const T15 v15_;
+  const T16 v16_;
+  const T17 v17_;
+  const T18 v18_;
+  const T19 v19_;
+  const T20 v20_;
+  const T21 v21_;
+  const T22 v22_;
+  const T23 v23_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24>
+class ValueArray24 {
+ public:
+  ValueArray24(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24) : v1_(v1),
+      v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9),
+      v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15),
+      v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21),
+      v22_(v22), v23_(v23), v24_(v24) {}
+
+  template <typename T>
+  operator ParamGenerator<T>() const {
+    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+        static_cast<T>(v24_)};
+    return ValuesIn(array);
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ValueArray24& other);
+
+  const T1 v1_;
+  const T2 v2_;
+  const T3 v3_;
+  const T4 v4_;
+  const T5 v5_;
+  const T6 v6_;
+  const T7 v7_;
+  const T8 v8_;
+  const T9 v9_;
+  const T10 v10_;
+  const T11 v11_;
+  const T12 v12_;
+  const T13 v13_;
+  const T14 v14_;
+  const T15 v15_;
+  const T16 v16_;
+  const T17 v17_;
+  const T18 v18_;
+  const T19 v19_;
+  const T20 v20_;
+  const T21 v21_;
+  const T22 v22_;
+  const T23 v23_;
+  const T24 v24_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25>
+class ValueArray25 {
+ public:
+  ValueArray25(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24,
+      T25 v25) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
+      v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
+      v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
+      v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25) {}
+
+  template <typename T>
+  operator ParamGenerator<T>() const {
+    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+        static_cast<T>(v24_), static_cast<T>(v25_)};
+    return ValuesIn(array);
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ValueArray25& other);
+
+  const T1 v1_;
+  const T2 v2_;
+  const T3 v3_;
+  const T4 v4_;
+  const T5 v5_;
+  const T6 v6_;
+  const T7 v7_;
+  const T8 v8_;
+  const T9 v9_;
+  const T10 v10_;
+  const T11 v11_;
+  const T12 v12_;
+  const T13 v13_;
+  const T14 v14_;
+  const T15 v15_;
+  const T16 v16_;
+  const T17 v17_;
+  const T18 v18_;
+  const T19 v19_;
+  const T20 v20_;
+  const T21 v21_;
+  const T22 v22_;
+  const T23 v23_;
+  const T24 v24_;
+  const T25 v25_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26>
+class ValueArray26 {
+ public:
+  ValueArray26(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+      T26 v26) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
+      v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
+      v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
+      v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26) {}
+
+  template <typename T>
+  operator ParamGenerator<T>() const {
+    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_)};
+    return ValuesIn(array);
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ValueArray26& other);
+
+  const T1 v1_;
+  const T2 v2_;
+  const T3 v3_;
+  const T4 v4_;
+  const T5 v5_;
+  const T6 v6_;
+  const T7 v7_;
+  const T8 v8_;
+  const T9 v9_;
+  const T10 v10_;
+  const T11 v11_;
+  const T12 v12_;
+  const T13 v13_;
+  const T14 v14_;
+  const T15 v15_;
+  const T16 v16_;
+  const T17 v17_;
+  const T18 v18_;
+  const T19 v19_;
+  const T20 v20_;
+  const T21 v21_;
+  const T22 v22_;
+  const T23 v23_;
+  const T24 v24_;
+  const T25 v25_;
+  const T26 v26_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27>
+class ValueArray27 {
+ public:
+  ValueArray27(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+      T26 v26, T27 v27) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6),
+      v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13),
+      v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19),
+      v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25),
+      v26_(v26), v27_(v27) {}
+
+  template <typename T>
+  operator ParamGenerator<T>() const {
+    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+        static_cast<T>(v27_)};
+    return ValuesIn(array);
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ValueArray27& other);
+
+  const T1 v1_;
+  const T2 v2_;
+  const T3 v3_;
+  const T4 v4_;
+  const T5 v5_;
+  const T6 v6_;
+  const T7 v7_;
+  const T8 v8_;
+  const T9 v9_;
+  const T10 v10_;
+  const T11 v11_;
+  const T12 v12_;
+  const T13 v13_;
+  const T14 v14_;
+  const T15 v15_;
+  const T16 v16_;
+  const T17 v17_;
+  const T18 v18_;
+  const T19 v19_;
+  const T20 v20_;
+  const T21 v21_;
+  const T22 v22_;
+  const T23 v23_;
+  const T24 v24_;
+  const T25 v25_;
+  const T26 v26_;
+  const T27 v27_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28>
+class ValueArray28 {
+ public:
+  ValueArray28(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+      T26 v26, T27 v27, T28 v28) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5),
+      v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12),
+      v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18),
+      v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24),
+      v25_(v25), v26_(v26), v27_(v27), v28_(v28) {}
+
+  template <typename T>
+  operator ParamGenerator<T>() const {
+    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+        static_cast<T>(v27_), static_cast<T>(v28_)};
+    return ValuesIn(array);
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ValueArray28& other);
+
+  const T1 v1_;
+  const T2 v2_;
+  const T3 v3_;
+  const T4 v4_;
+  const T5 v5_;
+  const T6 v6_;
+  const T7 v7_;
+  const T8 v8_;
+  const T9 v9_;
+  const T10 v10_;
+  const T11 v11_;
+  const T12 v12_;
+  const T13 v13_;
+  const T14 v14_;
+  const T15 v15_;
+  const T16 v16_;
+  const T17 v17_;
+  const T18 v18_;
+  const T19 v19_;
+  const T20 v20_;
+  const T21 v21_;
+  const T22 v22_;
+  const T23 v23_;
+  const T24 v24_;
+  const T25 v25_;
+  const T26 v26_;
+  const T27 v27_;
+  const T28 v28_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29>
+class ValueArray29 {
+ public:
+  ValueArray29(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+      T26 v26, T27 v27, T28 v28, T29 v29) : v1_(v1), v2_(v2), v3_(v3), v4_(v4),
+      v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11),
+      v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17),
+      v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23),
+      v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29) {}
+
+  template <typename T>
+  operator ParamGenerator<T>() const {
+    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_)};
+    return ValuesIn(array);
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ValueArray29& other);
+
+  const T1 v1_;
+  const T2 v2_;
+  const T3 v3_;
+  const T4 v4_;
+  const T5 v5_;
+  const T6 v6_;
+  const T7 v7_;
+  const T8 v8_;
+  const T9 v9_;
+  const T10 v10_;
+  const T11 v11_;
+  const T12 v12_;
+  const T13 v13_;
+  const T14 v14_;
+  const T15 v15_;
+  const T16 v16_;
+  const T17 v17_;
+  const T18 v18_;
+  const T19 v19_;
+  const T20 v20_;
+  const T21 v21_;
+  const T22 v22_;
+  const T23 v23_;
+  const T24 v24_;
+  const T25 v25_;
+  const T26 v26_;
+  const T27 v27_;
+  const T28 v28_;
+  const T29 v29_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30>
+class ValueArray30 {
+ public:
+  ValueArray30(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30) : v1_(v1), v2_(v2), v3_(v3),
+      v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
+      v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
+      v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
+      v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
+      v29_(v29), v30_(v30) {}
+
+  template <typename T>
+  operator ParamGenerator<T>() const {
+    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+        static_cast<T>(v30_)};
+    return ValuesIn(array);
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ValueArray30& other);
+
+  const T1 v1_;
+  const T2 v2_;
+  const T3 v3_;
+  const T4 v4_;
+  const T5 v5_;
+  const T6 v6_;
+  const T7 v7_;
+  const T8 v8_;
+  const T9 v9_;
+  const T10 v10_;
+  const T11 v11_;
+  const T12 v12_;
+  const T13 v13_;
+  const T14 v14_;
+  const T15 v15_;
+  const T16 v16_;
+  const T17 v17_;
+  const T18 v18_;
+  const T19 v19_;
+  const T20 v20_;
+  const T21 v21_;
+  const T22 v22_;
+  const T23 v23_;
+  const T24 v24_;
+  const T25 v25_;
+  const T26 v26_;
+  const T27 v27_;
+  const T28 v28_;
+  const T29 v29_;
+  const T30 v30_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31>
+class ValueArray31 {
+ public:
+  ValueArray31(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31) : v1_(v1), v2_(v2),
+      v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
+      v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
+      v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
+      v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
+      v29_(v29), v30_(v30), v31_(v31) {}
+
+  template <typename T>
+  operator ParamGenerator<T>() const {
+    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+        static_cast<T>(v30_), static_cast<T>(v31_)};
+    return ValuesIn(array);
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ValueArray31& other);
+
+  const T1 v1_;
+  const T2 v2_;
+  const T3 v3_;
+  const T4 v4_;
+  const T5 v5_;
+  const T6 v6_;
+  const T7 v7_;
+  const T8 v8_;
+  const T9 v9_;
+  const T10 v10_;
+  const T11 v11_;
+  const T12 v12_;
+  const T13 v13_;
+  const T14 v14_;
+  const T15 v15_;
+  const T16 v16_;
+  const T17 v17_;
+  const T18 v18_;
+  const T19 v19_;
+  const T20 v20_;
+  const T21 v21_;
+  const T22 v22_;
+  const T23 v23_;
+  const T24 v24_;
+  const T25 v25_;
+  const T26 v26_;
+  const T27 v27_;
+  const T28 v28_;
+  const T29 v29_;
+  const T30 v30_;
+  const T31 v31_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32>
+class ValueArray32 {
+ public:
+  ValueArray32(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32) : v1_(v1),
+      v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9),
+      v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15),
+      v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21),
+      v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27),
+      v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32) {}
+
+  template <typename T>
+  operator ParamGenerator<T>() const {
+    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_)};
+    return ValuesIn(array);
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ValueArray32& other);
+
+  const T1 v1_;
+  const T2 v2_;
+  const T3 v3_;
+  const T4 v4_;
+  const T5 v5_;
+  const T6 v6_;
+  const T7 v7_;
+  const T8 v8_;
+  const T9 v9_;
+  const T10 v10_;
+  const T11 v11_;
+  const T12 v12_;
+  const T13 v13_;
+  const T14 v14_;
+  const T15 v15_;
+  const T16 v16_;
+  const T17 v17_;
+  const T18 v18_;
+  const T19 v19_;
+  const T20 v20_;
+  const T21 v21_;
+  const T22 v22_;
+  const T23 v23_;
+  const T24 v24_;
+  const T25 v25_;
+  const T26 v26_;
+  const T27 v27_;
+  const T28 v28_;
+  const T29 v29_;
+  const T30 v30_;
+  const T31 v31_;
+  const T32 v32_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33>
+class ValueArray33 {
+ public:
+  ValueArray33(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32,
+      T33 v33) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
+      v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
+      v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
+      v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),
+      v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),
+      v33_(v33) {}
+
+  template <typename T>
+  operator ParamGenerator<T>() const {
+    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+        static_cast<T>(v33_)};
+    return ValuesIn(array);
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ValueArray33& other);
+
+  const T1 v1_;
+  const T2 v2_;
+  const T3 v3_;
+  const T4 v4_;
+  const T5 v5_;
+  const T6 v6_;
+  const T7 v7_;
+  const T8 v8_;
+  const T9 v9_;
+  const T10 v10_;
+  const T11 v11_;
+  const T12 v12_;
+  const T13 v13_;
+  const T14 v14_;
+  const T15 v15_;
+  const T16 v16_;
+  const T17 v17_;
+  const T18 v18_;
+  const T19 v19_;
+  const T20 v20_;
+  const T21 v21_;
+  const T22 v22_;
+  const T23 v23_;
+  const T24 v24_;
+  const T25 v25_;
+  const T26 v26_;
+  const T27 v27_;
+  const T28 v28_;
+  const T29 v29_;
+  const T30 v30_;
+  const T31 v31_;
+  const T32 v32_;
+  const T33 v33_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34>
+class ValueArray34 {
+ public:
+  ValueArray34(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+      T34 v34) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
+      v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
+      v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
+      v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),
+      v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),
+      v33_(v33), v34_(v34) {}
+
+  template <typename T>
+  operator ParamGenerator<T>() const {
+    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+        static_cast<T>(v33_), static_cast<T>(v34_)};
+    return ValuesIn(array);
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ValueArray34& other);
+
+  const T1 v1_;
+  const T2 v2_;
+  const T3 v3_;
+  const T4 v4_;
+  const T5 v5_;
+  const T6 v6_;
+  const T7 v7_;
+  const T8 v8_;
+  const T9 v9_;
+  const T10 v10_;
+  const T11 v11_;
+  const T12 v12_;
+  const T13 v13_;
+  const T14 v14_;
+  const T15 v15_;
+  const T16 v16_;
+  const T17 v17_;
+  const T18 v18_;
+  const T19 v19_;
+  const T20 v20_;
+  const T21 v21_;
+  const T22 v22_;
+  const T23 v23_;
+  const T24 v24_;
+  const T25 v25_;
+  const T26 v26_;
+  const T27 v27_;
+  const T28 v28_;
+  const T29 v29_;
+  const T30 v30_;
+  const T31 v31_;
+  const T32 v32_;
+  const T33 v33_;
+  const T34 v34_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35>
+class ValueArray35 {
+ public:
+  ValueArray35(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+      T34 v34, T35 v35) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6),
+      v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13),
+      v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19),
+      v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25),
+      v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31),
+      v32_(v32), v33_(v33), v34_(v34), v35_(v35) {}
+
+  template <typename T>
+  operator ParamGenerator<T>() const {
+    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+        static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_)};
+    return ValuesIn(array);
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ValueArray35& other);
+
+  const T1 v1_;
+  const T2 v2_;
+  const T3 v3_;
+  const T4 v4_;
+  const T5 v5_;
+  const T6 v6_;
+  const T7 v7_;
+  const T8 v8_;
+  const T9 v9_;
+  const T10 v10_;
+  const T11 v11_;
+  const T12 v12_;
+  const T13 v13_;
+  const T14 v14_;
+  const T15 v15_;
+  const T16 v16_;
+  const T17 v17_;
+  const T18 v18_;
+  const T19 v19_;
+  const T20 v20_;
+  const T21 v21_;
+  const T22 v22_;
+  const T23 v23_;
+  const T24 v24_;
+  const T25 v25_;
+  const T26 v26_;
+  const T27 v27_;
+  const T28 v28_;
+  const T29 v29_;
+  const T30 v30_;
+  const T31 v31_;
+  const T32 v32_;
+  const T33 v33_;
+  const T34 v34_;
+  const T35 v35_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36>
+class ValueArray36 {
+ public:
+  ValueArray36(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+      T34 v34, T35 v35, T36 v36) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5),
+      v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12),
+      v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18),
+      v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24),
+      v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30),
+      v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36) {}
+
+  template <typename T>
+  operator ParamGenerator<T>() const {
+    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+        static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
+        static_cast<T>(v36_)};
+    return ValuesIn(array);
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ValueArray36& other);
+
+  const T1 v1_;
+  const T2 v2_;
+  const T3 v3_;
+  const T4 v4_;
+  const T5 v5_;
+  const T6 v6_;
+  const T7 v7_;
+  const T8 v8_;
+  const T9 v9_;
+  const T10 v10_;
+  const T11 v11_;
+  const T12 v12_;
+  const T13 v13_;
+  const T14 v14_;
+  const T15 v15_;
+  const T16 v16_;
+  const T17 v17_;
+  const T18 v18_;
+  const T19 v19_;
+  const T20 v20_;
+  const T21 v21_;
+  const T22 v22_;
+  const T23 v23_;
+  const T24 v24_;
+  const T25 v25_;
+  const T26 v26_;
+  const T27 v27_;
+  const T28 v28_;
+  const T29 v29_;
+  const T30 v30_;
+  const T31 v31_;
+  const T32 v32_;
+  const T33 v33_;
+  const T34 v34_;
+  const T35 v35_;
+  const T36 v36_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37>
+class ValueArray37 {
+ public:
+  ValueArray37(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+      T34 v34, T35 v35, T36 v36, T37 v37) : v1_(v1), v2_(v2), v3_(v3), v4_(v4),
+      v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11),
+      v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17),
+      v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23),
+      v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29),
+      v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35),
+      v36_(v36), v37_(v37) {}
+
+  template <typename T>
+  operator ParamGenerator<T>() const {
+    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+        static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
+        static_cast<T>(v36_), static_cast<T>(v37_)};
+    return ValuesIn(array);
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ValueArray37& other);
+
+  const T1 v1_;
+  const T2 v2_;
+  const T3 v3_;
+  const T4 v4_;
+  const T5 v5_;
+  const T6 v6_;
+  const T7 v7_;
+  const T8 v8_;
+  const T9 v9_;
+  const T10 v10_;
+  const T11 v11_;
+  const T12 v12_;
+  const T13 v13_;
+  const T14 v14_;
+  const T15 v15_;
+  const T16 v16_;
+  const T17 v17_;
+  const T18 v18_;
+  const T19 v19_;
+  const T20 v20_;
+  const T21 v21_;
+  const T22 v22_;
+  const T23 v23_;
+  const T24 v24_;
+  const T25 v25_;
+  const T26 v26_;
+  const T27 v27_;
+  const T28 v28_;
+  const T29 v29_;
+  const T30 v30_;
+  const T31 v31_;
+  const T32 v32_;
+  const T33 v33_;
+  const T34 v34_;
+  const T35 v35_;
+  const T36 v36_;
+  const T37 v37_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37, typename T38>
+class ValueArray38 {
+ public:
+  ValueArray38(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+      T34 v34, T35 v35, T36 v36, T37 v37, T38 v38) : v1_(v1), v2_(v2), v3_(v3),
+      v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
+      v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
+      v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
+      v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
+      v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34),
+      v35_(v35), v36_(v36), v37_(v37), v38_(v38) {}
+
+  template <typename T>
+  operator ParamGenerator<T>() const {
+    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+        static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
+        static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_)};
+    return ValuesIn(array);
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ValueArray38& other);
+
+  const T1 v1_;
+  const T2 v2_;
+  const T3 v3_;
+  const T4 v4_;
+  const T5 v5_;
+  const T6 v6_;
+  const T7 v7_;
+  const T8 v8_;
+  const T9 v9_;
+  const T10 v10_;
+  const T11 v11_;
+  const T12 v12_;
+  const T13 v13_;
+  const T14 v14_;
+  const T15 v15_;
+  const T16 v16_;
+  const T17 v17_;
+  const T18 v18_;
+  const T19 v19_;
+  const T20 v20_;
+  const T21 v21_;
+  const T22 v22_;
+  const T23 v23_;
+  const T24 v24_;
+  const T25 v25_;
+  const T26 v26_;
+  const T27 v27_;
+  const T28 v28_;
+  const T29 v29_;
+  const T30 v30_;
+  const T31 v31_;
+  const T32 v32_;
+  const T33 v33_;
+  const T34 v34_;
+  const T35 v35_;
+  const T36 v36_;
+  const T37 v37_;
+  const T38 v38_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37, typename T38, typename T39>
+class ValueArray39 {
+ public:
+  ValueArray39(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+      T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39) : v1_(v1), v2_(v2),
+      v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
+      v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
+      v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
+      v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
+      v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34),
+      v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39) {}
+
+  template <typename T>
+  operator ParamGenerator<T>() const {
+    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+        static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
+        static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
+        static_cast<T>(v39_)};
+    return ValuesIn(array);
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ValueArray39& other);
+
+  const T1 v1_;
+  const T2 v2_;
+  const T3 v3_;
+  const T4 v4_;
+  const T5 v5_;
+  const T6 v6_;
+  const T7 v7_;
+  const T8 v8_;
+  const T9 v9_;
+  const T10 v10_;
+  const T11 v11_;
+  const T12 v12_;
+  const T13 v13_;
+  const T14 v14_;
+  const T15 v15_;
+  const T16 v16_;
+  const T17 v17_;
+  const T18 v18_;
+  const T19 v19_;
+  const T20 v20_;
+  const T21 v21_;
+  const T22 v22_;
+  const T23 v23_;
+  const T24 v24_;
+  const T25 v25_;
+  const T26 v26_;
+  const T27 v27_;
+  const T28 v28_;
+  const T29 v29_;
+  const T30 v30_;
+  const T31 v31_;
+  const T32 v32_;
+  const T33 v33_;
+  const T34 v34_;
+  const T35 v35_;
+  const T36 v36_;
+  const T37 v37_;
+  const T38 v38_;
+  const T39 v39_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37, typename T38, typename T39, typename T40>
+class ValueArray40 {
+ public:
+  ValueArray40(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+      T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40) : v1_(v1),
+      v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9),
+      v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15),
+      v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21),
+      v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27),
+      v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33),
+      v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39),
+      v40_(v40) {}
+
+  template <typename T>
+  operator ParamGenerator<T>() const {
+    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+        static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
+        static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
+        static_cast<T>(v39_), static_cast<T>(v40_)};
+    return ValuesIn(array);
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ValueArray40& other);
+
+  const T1 v1_;
+  const T2 v2_;
+  const T3 v3_;
+  const T4 v4_;
+  const T5 v5_;
+  const T6 v6_;
+  const T7 v7_;
+  const T8 v8_;
+  const T9 v9_;
+  const T10 v10_;
+  const T11 v11_;
+  const T12 v12_;
+  const T13 v13_;
+  const T14 v14_;
+  const T15 v15_;
+  const T16 v16_;
+  const T17 v17_;
+  const T18 v18_;
+  const T19 v19_;
+  const T20 v20_;
+  const T21 v21_;
+  const T22 v22_;
+  const T23 v23_;
+  const T24 v24_;
+  const T25 v25_;
+  const T26 v26_;
+  const T27 v27_;
+  const T28 v28_;
+  const T29 v29_;
+  const T30 v30_;
+  const T31 v31_;
+  const T32 v32_;
+  const T33 v33_;
+  const T34 v34_;
+  const T35 v35_;
+  const T36 v36_;
+  const T37 v37_;
+  const T38 v38_;
+  const T39 v39_;
+  const T40 v40_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37, typename T38, typename T39, typename T40,
+    typename T41>
+class ValueArray41 {
+ public:
+  ValueArray41(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+      T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40,
+      T41 v41) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
+      v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
+      v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
+      v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),
+      v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),
+      v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38),
+      v39_(v39), v40_(v40), v41_(v41) {}
+
+  template <typename T>
+  operator ParamGenerator<T>() const {
+    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+        static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
+        static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
+        static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_)};
+    return ValuesIn(array);
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ValueArray41& other);
+
+  const T1 v1_;
+  const T2 v2_;
+  const T3 v3_;
+  const T4 v4_;
+  const T5 v5_;
+  const T6 v6_;
+  const T7 v7_;
+  const T8 v8_;
+  const T9 v9_;
+  const T10 v10_;
+  const T11 v11_;
+  const T12 v12_;
+  const T13 v13_;
+  const T14 v14_;
+  const T15 v15_;
+  const T16 v16_;
+  const T17 v17_;
+  const T18 v18_;
+  const T19 v19_;
+  const T20 v20_;
+  const T21 v21_;
+  const T22 v22_;
+  const T23 v23_;
+  const T24 v24_;
+  const T25 v25_;
+  const T26 v26_;
+  const T27 v27_;
+  const T28 v28_;
+  const T29 v29_;
+  const T30 v30_;
+  const T31 v31_;
+  const T32 v32_;
+  const T33 v33_;
+  const T34 v34_;
+  const T35 v35_;
+  const T36 v36_;
+  const T37 v37_;
+  const T38 v38_;
+  const T39 v39_;
+  const T40 v40_;
+  const T41 v41_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37, typename T38, typename T39, typename T40,
+    typename T41, typename T42>
+class ValueArray42 {
+ public:
+  ValueArray42(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+      T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
+      T42 v42) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
+      v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
+      v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
+      v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),
+      v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),
+      v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38),
+      v39_(v39), v40_(v40), v41_(v41), v42_(v42) {}
+
+  template <typename T>
+  operator ParamGenerator<T>() const {
+    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+        static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
+        static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
+        static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),
+        static_cast<T>(v42_)};
+    return ValuesIn(array);
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ValueArray42& other);
+
+  const T1 v1_;
+  const T2 v2_;
+  const T3 v3_;
+  const T4 v4_;
+  const T5 v5_;
+  const T6 v6_;
+  const T7 v7_;
+  const T8 v8_;
+  const T9 v9_;
+  const T10 v10_;
+  const T11 v11_;
+  const T12 v12_;
+  const T13 v13_;
+  const T14 v14_;
+  const T15 v15_;
+  const T16 v16_;
+  const T17 v17_;
+  const T18 v18_;
+  const T19 v19_;
+  const T20 v20_;
+  const T21 v21_;
+  const T22 v22_;
+  const T23 v23_;
+  const T24 v24_;
+  const T25 v25_;
+  const T26 v26_;
+  const T27 v27_;
+  const T28 v28_;
+  const T29 v29_;
+  const T30 v30_;
+  const T31 v31_;
+  const T32 v32_;
+  const T33 v33_;
+  const T34 v34_;
+  const T35 v35_;
+  const T36 v36_;
+  const T37 v37_;
+  const T38 v38_;
+  const T39 v39_;
+  const T40 v40_;
+  const T41 v41_;
+  const T42 v42_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37, typename T38, typename T39, typename T40,
+    typename T41, typename T42, typename T43>
+class ValueArray43 {
+ public:
+  ValueArray43(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+      T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
+      T42 v42, T43 v43) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6),
+      v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13),
+      v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19),
+      v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25),
+      v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31),
+      v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37),
+      v38_(v38), v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43) {}
+
+  template <typename T>
+  operator ParamGenerator<T>() const {
+    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+        static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
+        static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
+        static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),
+        static_cast<T>(v42_), static_cast<T>(v43_)};
+    return ValuesIn(array);
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ValueArray43& other);
+
+  const T1 v1_;
+  const T2 v2_;
+  const T3 v3_;
+  const T4 v4_;
+  const T5 v5_;
+  const T6 v6_;
+  const T7 v7_;
+  const T8 v8_;
+  const T9 v9_;
+  const T10 v10_;
+  const T11 v11_;
+  const T12 v12_;
+  const T13 v13_;
+  const T14 v14_;
+  const T15 v15_;
+  const T16 v16_;
+  const T17 v17_;
+  const T18 v18_;
+  const T19 v19_;
+  const T20 v20_;
+  const T21 v21_;
+  const T22 v22_;
+  const T23 v23_;
+  const T24 v24_;
+  const T25 v25_;
+  const T26 v26_;
+  const T27 v27_;
+  const T28 v28_;
+  const T29 v29_;
+  const T30 v30_;
+  const T31 v31_;
+  const T32 v32_;
+  const T33 v33_;
+  const T34 v34_;
+  const T35 v35_;
+  const T36 v36_;
+  const T37 v37_;
+  const T38 v38_;
+  const T39 v39_;
+  const T40 v40_;
+  const T41 v41_;
+  const T42 v42_;
+  const T43 v43_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37, typename T38, typename T39, typename T40,
+    typename T41, typename T42, typename T43, typename T44>
+class ValueArray44 {
+ public:
+  ValueArray44(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+      T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
+      T42 v42, T43 v43, T44 v44) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5),
+      v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12),
+      v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18),
+      v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24),
+      v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30),
+      v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36),
+      v37_(v37), v38_(v38), v39_(v39), v40_(v40), v41_(v41), v42_(v42),
+      v43_(v43), v44_(v44) {}
+
+  template <typename T>
+  operator ParamGenerator<T>() const {
+    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+        static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
+        static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
+        static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),
+        static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_)};
+    return ValuesIn(array);
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ValueArray44& other);
+
+  const T1 v1_;
+  const T2 v2_;
+  const T3 v3_;
+  const T4 v4_;
+  const T5 v5_;
+  const T6 v6_;
+  const T7 v7_;
+  const T8 v8_;
+  const T9 v9_;
+  const T10 v10_;
+  const T11 v11_;
+  const T12 v12_;
+  const T13 v13_;
+  const T14 v14_;
+  const T15 v15_;
+  const T16 v16_;
+  const T17 v17_;
+  const T18 v18_;
+  const T19 v19_;
+  const T20 v20_;
+  const T21 v21_;
+  const T22 v22_;
+  const T23 v23_;
+  const T24 v24_;
+  const T25 v25_;
+  const T26 v26_;
+  const T27 v27_;
+  const T28 v28_;
+  const T29 v29_;
+  const T30 v30_;
+  const T31 v31_;
+  const T32 v32_;
+  const T33 v33_;
+  const T34 v34_;
+  const T35 v35_;
+  const T36 v36_;
+  const T37 v37_;
+  const T38 v38_;
+  const T39 v39_;
+  const T40 v40_;
+  const T41 v41_;
+  const T42 v42_;
+  const T43 v43_;
+  const T44 v44_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37, typename T38, typename T39, typename T40,
+    typename T41, typename T42, typename T43, typename T44, typename T45>
+class ValueArray45 {
+ public:
+  ValueArray45(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+      T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
+      T42 v42, T43 v43, T44 v44, T45 v45) : v1_(v1), v2_(v2), v3_(v3), v4_(v4),
+      v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11),
+      v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17),
+      v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23),
+      v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29),
+      v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35),
+      v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40), v41_(v41),
+      v42_(v42), v43_(v43), v44_(v44), v45_(v45) {}
+
+  template <typename T>
+  operator ParamGenerator<T>() const {
+    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+        static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
+        static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
+        static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),
+        static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_),
+        static_cast<T>(v45_)};
+    return ValuesIn(array);
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ValueArray45& other);
+
+  const T1 v1_;
+  const T2 v2_;
+  const T3 v3_;
+  const T4 v4_;
+  const T5 v5_;
+  const T6 v6_;
+  const T7 v7_;
+  const T8 v8_;
+  const T9 v9_;
+  const T10 v10_;
+  const T11 v11_;
+  const T12 v12_;
+  const T13 v13_;
+  const T14 v14_;
+  const T15 v15_;
+  const T16 v16_;
+  const T17 v17_;
+  const T18 v18_;
+  const T19 v19_;
+  const T20 v20_;
+  const T21 v21_;
+  const T22 v22_;
+  const T23 v23_;
+  const T24 v24_;
+  const T25 v25_;
+  const T26 v26_;
+  const T27 v27_;
+  const T28 v28_;
+  const T29 v29_;
+  const T30 v30_;
+  const T31 v31_;
+  const T32 v32_;
+  const T33 v33_;
+  const T34 v34_;
+  const T35 v35_;
+  const T36 v36_;
+  const T37 v37_;
+  const T38 v38_;
+  const T39 v39_;
+  const T40 v40_;
+  const T41 v41_;
+  const T42 v42_;
+  const T43 v43_;
+  const T44 v44_;
+  const T45 v45_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37, typename T38, typename T39, typename T40,
+    typename T41, typename T42, typename T43, typename T44, typename T45,
+    typename T46>
+class ValueArray46 {
+ public:
+  ValueArray46(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+      T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
+      T42 v42, T43 v43, T44 v44, T45 v45, T46 v46) : v1_(v1), v2_(v2), v3_(v3),
+      v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
+      v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
+      v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
+      v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
+      v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34),
+      v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40),
+      v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45), v46_(v46) {}
+
+  template <typename T>
+  operator ParamGenerator<T>() const {
+    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+        static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
+        static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
+        static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),
+        static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_),
+        static_cast<T>(v45_), static_cast<T>(v46_)};
+    return ValuesIn(array);
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ValueArray46& other);
+
+  const T1 v1_;
+  const T2 v2_;
+  const T3 v3_;
+  const T4 v4_;
+  const T5 v5_;
+  const T6 v6_;
+  const T7 v7_;
+  const T8 v8_;
+  const T9 v9_;
+  const T10 v10_;
+  const T11 v11_;
+  const T12 v12_;
+  const T13 v13_;
+  const T14 v14_;
+  const T15 v15_;
+  const T16 v16_;
+  const T17 v17_;
+  const T18 v18_;
+  const T19 v19_;
+  const T20 v20_;
+  const T21 v21_;
+  const T22 v22_;
+  const T23 v23_;
+  const T24 v24_;
+  const T25 v25_;
+  const T26 v26_;
+  const T27 v27_;
+  const T28 v28_;
+  const T29 v29_;
+  const T30 v30_;
+  const T31 v31_;
+  const T32 v32_;
+  const T33 v33_;
+  const T34 v34_;
+  const T35 v35_;
+  const T36 v36_;
+  const T37 v37_;
+  const T38 v38_;
+  const T39 v39_;
+  const T40 v40_;
+  const T41 v41_;
+  const T42 v42_;
+  const T43 v43_;
+  const T44 v44_;
+  const T45 v45_;
+  const T46 v46_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37, typename T38, typename T39, typename T40,
+    typename T41, typename T42, typename T43, typename T44, typename T45,
+    typename T46, typename T47>
+class ValueArray47 {
+ public:
+  ValueArray47(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+      T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
+      T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47) : v1_(v1), v2_(v2),
+      v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
+      v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
+      v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
+      v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
+      v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34),
+      v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40),
+      v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45), v46_(v46),
+      v47_(v47) {}
+
+  template <typename T>
+  operator ParamGenerator<T>() const {
+    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+        static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
+        static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
+        static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),
+        static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_),
+        static_cast<T>(v45_), static_cast<T>(v46_), static_cast<T>(v47_)};
+    return ValuesIn(array);
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ValueArray47& other);
+
+  const T1 v1_;
+  const T2 v2_;
+  const T3 v3_;
+  const T4 v4_;
+  const T5 v5_;
+  const T6 v6_;
+  const T7 v7_;
+  const T8 v8_;
+  const T9 v9_;
+  const T10 v10_;
+  const T11 v11_;
+  const T12 v12_;
+  const T13 v13_;
+  const T14 v14_;
+  const T15 v15_;
+  const T16 v16_;
+  const T17 v17_;
+  const T18 v18_;
+  const T19 v19_;
+  const T20 v20_;
+  const T21 v21_;
+  const T22 v22_;
+  const T23 v23_;
+  const T24 v24_;
+  const T25 v25_;
+  const T26 v26_;
+  const T27 v27_;
+  const T28 v28_;
+  const T29 v29_;
+  const T30 v30_;
+  const T31 v31_;
+  const T32 v32_;
+  const T33 v33_;
+  const T34 v34_;
+  const T35 v35_;
+  const T36 v36_;
+  const T37 v37_;
+  const T38 v38_;
+  const T39 v39_;
+  const T40 v40_;
+  const T41 v41_;
+  const T42 v42_;
+  const T43 v43_;
+  const T44 v44_;
+  const T45 v45_;
+  const T46 v46_;
+  const T47 v47_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37, typename T38, typename T39, typename T40,
+    typename T41, typename T42, typename T43, typename T44, typename T45,
+    typename T46, typename T47, typename T48>
+class ValueArray48 {
+ public:
+  ValueArray48(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+      T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
+      T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48) : v1_(v1),
+      v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9),
+      v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15),
+      v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21),
+      v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27),
+      v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33),
+      v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39),
+      v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45),
+      v46_(v46), v47_(v47), v48_(v48) {}
+
+  template <typename T>
+  operator ParamGenerator<T>() const {
+    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+        static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
+        static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
+        static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),
+        static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_),
+        static_cast<T>(v45_), static_cast<T>(v46_), static_cast<T>(v47_),
+        static_cast<T>(v48_)};
+    return ValuesIn(array);
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ValueArray48& other);
+
+  const T1 v1_;
+  const T2 v2_;
+  const T3 v3_;
+  const T4 v4_;
+  const T5 v5_;
+  const T6 v6_;
+  const T7 v7_;
+  const T8 v8_;
+  const T9 v9_;
+  const T10 v10_;
+  const T11 v11_;
+  const T12 v12_;
+  const T13 v13_;
+  const T14 v14_;
+  const T15 v15_;
+  const T16 v16_;
+  const T17 v17_;
+  const T18 v18_;
+  const T19 v19_;
+  const T20 v20_;
+  const T21 v21_;
+  const T22 v22_;
+  const T23 v23_;
+  const T24 v24_;
+  const T25 v25_;
+  const T26 v26_;
+  const T27 v27_;
+  const T28 v28_;
+  const T29 v29_;
+  const T30 v30_;
+  const T31 v31_;
+  const T32 v32_;
+  const T33 v33_;
+  const T34 v34_;
+  const T35 v35_;
+  const T36 v36_;
+  const T37 v37_;
+  const T38 v38_;
+  const T39 v39_;
+  const T40 v40_;
+  const T41 v41_;
+  const T42 v42_;
+  const T43 v43_;
+  const T44 v44_;
+  const T45 v45_;
+  const T46 v46_;
+  const T47 v47_;
+  const T48 v48_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37, typename T38, typename T39, typename T40,
+    typename T41, typename T42, typename T43, typename T44, typename T45,
+    typename T46, typename T47, typename T48, typename T49>
+class ValueArray49 {
+ public:
+  ValueArray49(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+      T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
+      T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48,
+      T49 v49) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
+      v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
+      v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
+      v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),
+      v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),
+      v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38),
+      v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44),
+      v45_(v45), v46_(v46), v47_(v47), v48_(v48), v49_(v49) {}
+
+  template <typename T>
+  operator ParamGenerator<T>() const {
+    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+        static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
+        static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
+        static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),
+        static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_),
+        static_cast<T>(v45_), static_cast<T>(v46_), static_cast<T>(v47_),
+        static_cast<T>(v48_), static_cast<T>(v49_)};
+    return ValuesIn(array);
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ValueArray49& other);
+
+  const T1 v1_;
+  const T2 v2_;
+  const T3 v3_;
+  const T4 v4_;
+  const T5 v5_;
+  const T6 v6_;
+  const T7 v7_;
+  const T8 v8_;
+  const T9 v9_;
+  const T10 v10_;
+  const T11 v11_;
+  const T12 v12_;
+  const T13 v13_;
+  const T14 v14_;
+  const T15 v15_;
+  const T16 v16_;
+  const T17 v17_;
+  const T18 v18_;
+  const T19 v19_;
+  const T20 v20_;
+  const T21 v21_;
+  const T22 v22_;
+  const T23 v23_;
+  const T24 v24_;
+  const T25 v25_;
+  const T26 v26_;
+  const T27 v27_;
+  const T28 v28_;
+  const T29 v29_;
+  const T30 v30_;
+  const T31 v31_;
+  const T32 v32_;
+  const T33 v33_;
+  const T34 v34_;
+  const T35 v35_;
+  const T36 v36_;
+  const T37 v37_;
+  const T38 v38_;
+  const T39 v39_;
+  const T40 v40_;
+  const T41 v41_;
+  const T42 v42_;
+  const T43 v43_;
+  const T44 v44_;
+  const T45 v45_;
+  const T46 v46_;
+  const T47 v47_;
+  const T48 v48_;
+  const T49 v49_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37, typename T38, typename T39, typename T40,
+    typename T41, typename T42, typename T43, typename T44, typename T45,
+    typename T46, typename T47, typename T48, typename T49, typename T50>
+class ValueArray50 {
+ public:
+  ValueArray50(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+      T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+      T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+      T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+      T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
+      T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48, T49 v49,
+      T50 v50) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
+      v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
+      v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
+      v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),
+      v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),
+      v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38),
+      v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44),
+      v45_(v45), v46_(v46), v47_(v47), v48_(v48), v49_(v49), v50_(v50) {}
+
+  template <typename T>
+  operator ParamGenerator<T>() const {
+    const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+        static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+        static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+        static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+        static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+        static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+        static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+        static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+        static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+        static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+        static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+        static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
+        static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
+        static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),
+        static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_),
+        static_cast<T>(v45_), static_cast<T>(v46_), static_cast<T>(v47_),
+        static_cast<T>(v48_), static_cast<T>(v49_), static_cast<T>(v50_)};
+    return ValuesIn(array);
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ValueArray50& other);
+
+  const T1 v1_;
+  const T2 v2_;
+  const T3 v3_;
+  const T4 v4_;
+  const T5 v5_;
+  const T6 v6_;
+  const T7 v7_;
+  const T8 v8_;
+  const T9 v9_;
+  const T10 v10_;
+  const T11 v11_;
+  const T12 v12_;
+  const T13 v13_;
+  const T14 v14_;
+  const T15 v15_;
+  const T16 v16_;
+  const T17 v17_;
+  const T18 v18_;
+  const T19 v19_;
+  const T20 v20_;
+  const T21 v21_;
+  const T22 v22_;
+  const T23 v23_;
+  const T24 v24_;
+  const T25 v25_;
+  const T26 v26_;
+  const T27 v27_;
+  const T28 v28_;
+  const T29 v29_;
+  const T30 v30_;
+  const T31 v31_;
+  const T32 v32_;
+  const T33 v33_;
+  const T34 v34_;
+  const T35 v35_;
+  const T36 v36_;
+  const T37 v37_;
+  const T38 v38_;
+  const T39 v39_;
+  const T40 v40_;
+  const T41 v41_;
+  const T42 v42_;
+  const T43 v43_;
+  const T44 v44_;
+  const T45 v45_;
+  const T46 v46_;
+  const T47 v47_;
+  const T48 v48_;
+  const T49 v49_;
+  const T50 v50_;
+};
+
+# if GTEST_HAS_COMBINE
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
+// Generates values from the Cartesian product of values produced
+// by the argument generators.
+//
+template <typename T1, typename T2>
+class CartesianProductGenerator2
+    : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2> > {
+ public:
+  typedef ::std::tr1::tuple<T1, T2> ParamType;
+
+  CartesianProductGenerator2(const ParamGenerator<T1>& g1,
+      const ParamGenerator<T2>& g2)
+      : g1_(g1), g2_(g2) {}
+  virtual ~CartesianProductGenerator2() {}
+
+  virtual ParamIteratorInterface<ParamType>* Begin() const {
+    return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin());
+  }
+  virtual ParamIteratorInterface<ParamType>* End() const {
+    return new Iterator(this, g1_, g1_.end(), g2_, g2_.end());
+  }
+
+ private:
+  class Iterator : public ParamIteratorInterface<ParamType> {
+   public:
+    Iterator(const ParamGeneratorInterface<ParamType>* base,
+      const ParamGenerator<T1>& g1,
+      const typename ParamGenerator<T1>::iterator& current1,
+      const ParamGenerator<T2>& g2,
+      const typename ParamGenerator<T2>::iterator& current2)
+        : base_(base),
+          begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
+          begin2_(g2.begin()), end2_(g2.end()), current2_(current2)    {
+      ComputeCurrentValue();
+    }
+    virtual ~Iterator() {}
+
+    virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {
+      return base_;
+    }
+    // Advance should not be called on beyond-of-range iterators
+    // so no component iterators must be beyond end of range, either.
+    virtual void Advance() {
+      assert(!AtEnd());
+      ++current2_;
+      if (current2_ == end2_) {
+        current2_ = begin2_;
+        ++current1_;
+      }
+      ComputeCurrentValue();
+    }
+    virtual ParamIteratorInterface<ParamType>* Clone() const {
+      return new Iterator(*this);
+    }
+    virtual const ParamType* Current() const { return &current_value_; }
+    virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {
+      // Having the same base generator guarantees that the other
+      // iterator is of the same type and we can downcast.
+      GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
+          << "The program attempted to compare iterators "
+          << "from different generators." << std::endl;
+      const Iterator* typed_other =
+          CheckedDowncastToActualType<const Iterator>(&other);
+      // We must report iterators equal if they both point beyond their
+      // respective ranges. That can happen in a variety of fashions,
+      // so we have to consult AtEnd().
+      return (AtEnd() && typed_other->AtEnd()) ||
+         (
+          current1_ == typed_other->current1_ &&
+          current2_ == typed_other->current2_);
+    }
+
+   private:
+    Iterator(const Iterator& other)
+        : base_(other.base_),
+        begin1_(other.begin1_),
+        end1_(other.end1_),
+        current1_(other.current1_),
+        begin2_(other.begin2_),
+        end2_(other.end2_),
+        current2_(other.current2_) {
+      ComputeCurrentValue();
+    }
+
+    void ComputeCurrentValue() {
+      if (!AtEnd())
+        current_value_ = ParamType(*current1_, *current2_);
+    }
+    bool AtEnd() const {
+      // We must report iterator past the end of the range when either of the
+      // component iterators has reached the end of its range.
+      return
+          current1_ == end1_ ||
+          current2_ == end2_;
+    }
+
+    // No implementation - assignment is unsupported.
+    void operator=(const Iterator& other);
+
+    const ParamGeneratorInterface<ParamType>* const base_;
+    // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
+    // current[i]_ is the actual traversing iterator.
+    const typename ParamGenerator<T1>::iterator begin1_;
+    const typename ParamGenerator<T1>::iterator end1_;
+    typename ParamGenerator<T1>::iterator current1_;
+    const typename ParamGenerator<T2>::iterator begin2_;
+    const typename ParamGenerator<T2>::iterator end2_;
+    typename ParamGenerator<T2>::iterator current2_;
+    ParamType current_value_;
+  };  // class CartesianProductGenerator2::Iterator
+
+  // No implementation - assignment is unsupported.
+  void operator=(const CartesianProductGenerator2& other);
+
+  const ParamGenerator<T1> g1_;
+  const ParamGenerator<T2> g2_;
+};  // class CartesianProductGenerator2
+
+
+template <typename T1, typename T2, typename T3>
+class CartesianProductGenerator3
+    : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3> > {
+ public:
+  typedef ::std::tr1::tuple<T1, T2, T3> ParamType;
+
+  CartesianProductGenerator3(const ParamGenerator<T1>& g1,
+      const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3)
+      : g1_(g1), g2_(g2), g3_(g3) {}
+  virtual ~CartesianProductGenerator3() {}
+
+  virtual ParamIteratorInterface<ParamType>* Begin() const {
+    return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
+        g3_.begin());
+  }
+  virtual ParamIteratorInterface<ParamType>* End() const {
+    return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end());
+  }
+
+ private:
+  class Iterator : public ParamIteratorInterface<ParamType> {
+   public:
+    Iterator(const ParamGeneratorInterface<ParamType>* base,
+      const ParamGenerator<T1>& g1,
+      const typename ParamGenerator<T1>::iterator& current1,
+      const ParamGenerator<T2>& g2,
+      const typename ParamGenerator<T2>::iterator& current2,
+      const ParamGenerator<T3>& g3,
+      const typename ParamGenerator<T3>::iterator& current3)
+        : base_(base),
+          begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
+          begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
+          begin3_(g3.begin()), end3_(g3.end()), current3_(current3)    {
+      ComputeCurrentValue();
+    }
+    virtual ~Iterator() {}
+
+    virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {
+      return base_;
+    }
+    // Advance should not be called on beyond-of-range iterators
+    // so no component iterators must be beyond end of range, either.
+    virtual void Advance() {
+      assert(!AtEnd());
+      ++current3_;
+      if (current3_ == end3_) {
+        current3_ = begin3_;
+        ++current2_;
+      }
+      if (current2_ == end2_) {
+        current2_ = begin2_;
+        ++current1_;
+      }
+      ComputeCurrentValue();
+    }
+    virtual ParamIteratorInterface<ParamType>* Clone() const {
+      return new Iterator(*this);
+    }
+    virtual const ParamType* Current() const { return &current_value_; }
+    virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {
+      // Having the same base generator guarantees that the other
+      // iterator is of the same type and we can downcast.
+      GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
+          << "The program attempted to compare iterators "
+          << "from different generators." << std::endl;
+      const Iterator* typed_other =
+          CheckedDowncastToActualType<const Iterator>(&other);
+      // We must report iterators equal if they both point beyond their
+      // respective ranges. That can happen in a variety of fashions,
+      // so we have to consult AtEnd().
+      return (AtEnd() && typed_other->AtEnd()) ||
+         (
+          current1_ == typed_other->current1_ &&
+          current2_ == typed_other->current2_ &&
+          current3_ == typed_other->current3_);
+    }
+
+   private:
+    Iterator(const Iterator& other)
+        : base_(other.base_),
+        begin1_(other.begin1_),
+        end1_(other.end1_),
+        current1_(other.current1_),
+        begin2_(other.begin2_),
+        end2_(other.end2_),
+        current2_(other.current2_),
+        begin3_(other.begin3_),
+        end3_(other.end3_),
+        current3_(other.current3_) {
+      ComputeCurrentValue();
+    }
+
+    void ComputeCurrentValue() {
+      if (!AtEnd())
+        current_value_ = ParamType(*current1_, *current2_, *current3_);
+    }
+    bool AtEnd() const {
+      // We must report iterator past the end of the range when either of the
+      // component iterators has reached the end of its range.
+      return
+          current1_ == end1_ ||
+          current2_ == end2_ ||
+          current3_ == end3_;
+    }
+
+    // No implementation - assignment is unsupported.
+    void operator=(const Iterator& other);
+
+    const ParamGeneratorInterface<ParamType>* const base_;
+    // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
+    // current[i]_ is the actual traversing iterator.
+    const typename ParamGenerator<T1>::iterator begin1_;
+    const typename ParamGenerator<T1>::iterator end1_;
+    typename ParamGenerator<T1>::iterator current1_;
+    const typename ParamGenerator<T2>::iterator begin2_;
+    const typename ParamGenerator<T2>::iterator end2_;
+    typename ParamGenerator<T2>::iterator current2_;
+    const typename ParamGenerator<T3>::iterator begin3_;
+    const typename ParamGenerator<T3>::iterator end3_;
+    typename ParamGenerator<T3>::iterator current3_;
+    ParamType current_value_;
+  };  // class CartesianProductGenerator3::Iterator
+
+  // No implementation - assignment is unsupported.
+  void operator=(const CartesianProductGenerator3& other);
+
+  const ParamGenerator<T1> g1_;
+  const ParamGenerator<T2> g2_;
+  const ParamGenerator<T3> g3_;
+};  // class CartesianProductGenerator3
+
+
+template <typename T1, typename T2, typename T3, typename T4>
+class CartesianProductGenerator4
+    : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4> > {
+ public:
+  typedef ::std::tr1::tuple<T1, T2, T3, T4> ParamType;
+
+  CartesianProductGenerator4(const ParamGenerator<T1>& g1,
+      const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,
+      const ParamGenerator<T4>& g4)
+      : g1_(g1), g2_(g2), g3_(g3), g4_(g4) {}
+  virtual ~CartesianProductGenerator4() {}
+
+  virtual ParamIteratorInterface<ParamType>* Begin() const {
+    return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
+        g3_.begin(), g4_, g4_.begin());
+  }
+  virtual ParamIteratorInterface<ParamType>* End() const {
+    return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
+        g4_, g4_.end());
+  }
+
+ private:
+  class Iterator : public ParamIteratorInterface<ParamType> {
+   public:
+    Iterator(const ParamGeneratorInterface<ParamType>* base,
+      const ParamGenerator<T1>& g1,
+      const typename ParamGenerator<T1>::iterator& current1,
+      const ParamGenerator<T2>& g2,
+      const typename ParamGenerator<T2>::iterator& current2,
+      const ParamGenerator<T3>& g3,
+      const typename ParamGenerator<T3>::iterator& current3,
+      const ParamGenerator<T4>& g4,
+      const typename ParamGenerator<T4>::iterator& current4)
+        : base_(base),
+          begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
+          begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
+          begin3_(g3.begin()), end3_(g3.end()), current3_(current3),
+          begin4_(g4.begin()), end4_(g4.end()), current4_(current4)    {
+      ComputeCurrentValue();
+    }
+    virtual ~Iterator() {}
+
+    virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {
+      return base_;
+    }
+    // Advance should not be called on beyond-of-range iterators
+    // so no component iterators must be beyond end of range, either.
+    virtual void Advance() {
+      assert(!AtEnd());
+      ++current4_;
+      if (current4_ == end4_) {
+        current4_ = begin4_;
+        ++current3_;
+      }
+      if (current3_ == end3_) {
+        current3_ = begin3_;
+        ++current2_;
+      }
+      if (current2_ == end2_) {
+        current2_ = begin2_;
+        ++current1_;
+      }
+      ComputeCurrentValue();
+    }
+    virtual ParamIteratorInterface<ParamType>* Clone() const {
+      return new Iterator(*this);
+    }
+    virtual const ParamType* Current() const { return &current_value_; }
+    virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {
+      // Having the same base generator guarantees that the other
+      // iterator is of the same type and we can downcast.
+      GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
+          << "The program attempted to compare iterators "
+          << "from different generators." << std::endl;
+      const Iterator* typed_other =
+          CheckedDowncastToActualType<const Iterator>(&other);
+      // We must report iterators equal if they both point beyond their
+      // respective ranges. That can happen in a variety of fashions,
+      // so we have to consult AtEnd().
+      return (AtEnd() && typed_other->AtEnd()) ||
+         (
+          current1_ == typed_other->current1_ &&
+          current2_ == typed_other->current2_ &&
+          current3_ == typed_other->current3_ &&
+          current4_ == typed_other->current4_);
+    }
+
+   private:
+    Iterator(const Iterator& other)
+        : base_(other.base_),
+        begin1_(other.begin1_),
+        end1_(other.end1_),
+        current1_(other.current1_),
+        begin2_(other.begin2_),
+        end2_(other.end2_),
+        current2_(other.current2_),
+        begin3_(other.begin3_),
+        end3_(other.end3_),
+        current3_(other.current3_),
+        begin4_(other.begin4_),
+        end4_(other.end4_),
+        current4_(other.current4_) {
+      ComputeCurrentValue();
+    }
+
+    void ComputeCurrentValue() {
+      if (!AtEnd())
+        current_value_ = ParamType(*current1_, *current2_, *current3_,
+            *current4_);
+    }
+    bool AtEnd() const {
+      // We must report iterator past the end of the range when either of the
+      // component iterators has reached the end of its range.
+      return
+          current1_ == end1_ ||
+          current2_ == end2_ ||
+          current3_ == end3_ ||
+          current4_ == end4_;
+    }
+
+    // No implementation - assignment is unsupported.
+    void operator=(const Iterator& other);
+
+    const ParamGeneratorInterface<ParamType>* const base_;
+    // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
+    // current[i]_ is the actual traversing iterator.
+    const typename ParamGenerator<T1>::iterator begin1_;
+    const typename ParamGenerator<T1>::iterator end1_;
+    typename ParamGenerator<T1>::iterator current1_;
+    const typename ParamGenerator<T2>::iterator begin2_;
+    const typename ParamGenerator<T2>::iterator end2_;
+    typename ParamGenerator<T2>::iterator current2_;
+    const typename ParamGenerator<T3>::iterator begin3_;
+    const typename ParamGenerator<T3>::iterator end3_;
+    typename ParamGenerator<T3>::iterator current3_;
+    const typename ParamGenerator<T4>::iterator begin4_;
+    const typename ParamGenerator<T4>::iterator end4_;
+    typename ParamGenerator<T4>::iterator current4_;
+    ParamType current_value_;
+  };  // class CartesianProductGenerator4::Iterator
+
+  // No implementation - assignment is unsupported.
+  void operator=(const CartesianProductGenerator4& other);
+
+  const ParamGenerator<T1> g1_;
+  const ParamGenerator<T2> g2_;
+  const ParamGenerator<T3> g3_;
+  const ParamGenerator<T4> g4_;
+};  // class CartesianProductGenerator4
+
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5>
+class CartesianProductGenerator5
+    : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4, T5> > {
+ public:
+  typedef ::std::tr1::tuple<T1, T2, T3, T4, T5> ParamType;
+
+  CartesianProductGenerator5(const ParamGenerator<T1>& g1,
+      const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,
+      const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5)
+      : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5) {}
+  virtual ~CartesianProductGenerator5() {}
+
+  virtual ParamIteratorInterface<ParamType>* Begin() const {
+    return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
+        g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin());
+  }
+  virtual ParamIteratorInterface<ParamType>* End() const {
+    return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
+        g4_, g4_.end(), g5_, g5_.end());
+  }
+
+ private:
+  class Iterator : public ParamIteratorInterface<ParamType> {
+   public:
+    Iterator(const ParamGeneratorInterface<ParamType>* base,
+      const ParamGenerator<T1>& g1,
+      const typename ParamGenerator<T1>::iterator& current1,
+      const ParamGenerator<T2>& g2,
+      const typename ParamGenerator<T2>::iterator& current2,
+      const ParamGenerator<T3>& g3,
+      const typename ParamGenerator<T3>::iterator& current3,
+      const ParamGenerator<T4>& g4,
+      const typename ParamGenerator<T4>::iterator& current4,
+      const ParamGenerator<T5>& g5,
+      const typename ParamGenerator<T5>::iterator& current5)
+        : base_(base),
+          begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
+          begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
+          begin3_(g3.begin()), end3_(g3.end()), current3_(current3),
+          begin4_(g4.begin()), end4_(g4.end()), current4_(current4),
+          begin5_(g5.begin()), end5_(g5.end()), current5_(current5)    {
+      ComputeCurrentValue();
+    }
+    virtual ~Iterator() {}
+
+    virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {
+      return base_;
+    }
+    // Advance should not be called on beyond-of-range iterators
+    // so no component iterators must be beyond end of range, either.
+    virtual void Advance() {
+      assert(!AtEnd());
+      ++current5_;
+      if (current5_ == end5_) {
+        current5_ = begin5_;
+        ++current4_;
+      }
+      if (current4_ == end4_) {
+        current4_ = begin4_;
+        ++current3_;
+      }
+      if (current3_ == end3_) {
+        current3_ = begin3_;
+        ++current2_;
+      }
+      if (current2_ == end2_) {
+        current2_ = begin2_;
+        ++current1_;
+      }
+      ComputeCurrentValue();
+    }
+    virtual ParamIteratorInterface<ParamType>* Clone() const {
+      return new Iterator(*this);
+    }
+    virtual const ParamType* Current() const { return &current_value_; }
+    virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {
+      // Having the same base generator guarantees that the other
+      // iterator is of the same type and we can downcast.
+      GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
+          << "The program attempted to compare iterators "
+          << "from different generators." << std::endl;
+      const Iterator* typed_other =
+          CheckedDowncastToActualType<const Iterator>(&other);
+      // We must report iterators equal if they both point beyond their
+      // respective ranges. That can happen in a variety of fashions,
+      // so we have to consult AtEnd().
+      return (AtEnd() && typed_other->AtEnd()) ||
+         (
+          current1_ == typed_other->current1_ &&
+          current2_ == typed_other->current2_ &&
+          current3_ == typed_other->current3_ &&
+          current4_ == typed_other->current4_ &&
+          current5_ == typed_other->current5_);
+    }
+
+   private:
+    Iterator(const Iterator& other)
+        : base_(other.base_),
+        begin1_(other.begin1_),
+        end1_(other.end1_),
+        current1_(other.current1_),
+        begin2_(other.begin2_),
+        end2_(other.end2_),
+        current2_(other.current2_),
+        begin3_(other.begin3_),
+        end3_(other.end3_),
+        current3_(other.current3_),
+        begin4_(other.begin4_),
+        end4_(other.end4_),
+        current4_(other.current4_),
+        begin5_(other.begin5_),
+        end5_(other.end5_),
+        current5_(other.current5_) {
+      ComputeCurrentValue();
+    }
+
+    void ComputeCurrentValue() {
+      if (!AtEnd())
+        current_value_ = ParamType(*current1_, *current2_, *current3_,
+            *current4_, *current5_);
+    }
+    bool AtEnd() const {
+      // We must report iterator past the end of the range when either of the
+      // component iterators has reached the end of its range.
+      return
+          current1_ == end1_ ||
+          current2_ == end2_ ||
+          current3_ == end3_ ||
+          current4_ == end4_ ||
+          current5_ == end5_;
+    }
+
+    // No implementation - assignment is unsupported.
+    void operator=(const Iterator& other);
+
+    const ParamGeneratorInterface<ParamType>* const base_;
+    // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
+    // current[i]_ is the actual traversing iterator.
+    const typename ParamGenerator<T1>::iterator begin1_;
+    const typename ParamGenerator<T1>::iterator end1_;
+    typename ParamGenerator<T1>::iterator current1_;
+    const typename ParamGenerator<T2>::iterator begin2_;
+    const typename ParamGenerator<T2>::iterator end2_;
+    typename ParamGenerator<T2>::iterator current2_;
+    const typename ParamGenerator<T3>::iterator begin3_;
+    const typename ParamGenerator<T3>::iterator end3_;
+    typename ParamGenerator<T3>::iterator current3_;
+    const typename ParamGenerator<T4>::iterator begin4_;
+    const typename ParamGenerator<T4>::iterator end4_;
+    typename ParamGenerator<T4>::iterator current4_;
+    const typename ParamGenerator<T5>::iterator begin5_;
+    const typename ParamGenerator<T5>::iterator end5_;
+    typename ParamGenerator<T5>::iterator current5_;
+    ParamType current_value_;
+  };  // class CartesianProductGenerator5::Iterator
+
+  // No implementation - assignment is unsupported.
+  void operator=(const CartesianProductGenerator5& other);
+
+  const ParamGenerator<T1> g1_;
+  const ParamGenerator<T2> g2_;
+  const ParamGenerator<T3> g3_;
+  const ParamGenerator<T4> g4_;
+  const ParamGenerator<T5> g5_;
+};  // class CartesianProductGenerator5
+
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6>
+class CartesianProductGenerator6
+    : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4, T5,
+        T6> > {
+ public:
+  typedef ::std::tr1::tuple<T1, T2, T3, T4, T5, T6> ParamType;
+
+  CartesianProductGenerator6(const ParamGenerator<T1>& g1,
+      const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,
+      const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5,
+      const ParamGenerator<T6>& g6)
+      : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6) {}
+  virtual ~CartesianProductGenerator6() {}
+
+  virtual ParamIteratorInterface<ParamType>* Begin() const {
+    return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
+        g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin());
+  }
+  virtual ParamIteratorInterface<ParamType>* End() const {
+    return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
+        g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end());
+  }
+
+ private:
+  class Iterator : public ParamIteratorInterface<ParamType> {
+   public:
+    Iterator(const ParamGeneratorInterface<ParamType>* base,
+      const ParamGenerator<T1>& g1,
+      const typename ParamGenerator<T1>::iterator& current1,
+      const ParamGenerator<T2>& g2,
+      const typename ParamGenerator<T2>::iterator& current2,
+      const ParamGenerator<T3>& g3,
+      const typename ParamGenerator<T3>::iterator& current3,
+      const ParamGenerator<T4>& g4,
+      const typename ParamGenerator<T4>::iterator& current4,
+      const ParamGenerator<T5>& g5,
+      const typename ParamGenerator<T5>::iterator& current5,
+      const ParamGenerator<T6>& g6,
+      const typename ParamGenerator<T6>::iterator& current6)
+        : base_(base),
+          begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
+          begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
+          begin3_(g3.begin()), end3_(g3.end()), current3_(current3),
+          begin4_(g4.begin()), end4_(g4.end()), current4_(current4),
+          begin5_(g5.begin()), end5_(g5.end()), current5_(current5),
+          begin6_(g6.begin()), end6_(g6.end()), current6_(current6)    {
+      ComputeCurrentValue();
+    }
+    virtual ~Iterator() {}
+
+    virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {
+      return base_;
+    }
+    // Advance should not be called on beyond-of-range iterators
+    // so no component iterators must be beyond end of range, either.
+    virtual void Advance() {
+      assert(!AtEnd());
+      ++current6_;
+      if (current6_ == end6_) {
+        current6_ = begin6_;
+        ++current5_;
+      }
+      if (current5_ == end5_) {
+        current5_ = begin5_;
+        ++current4_;
+      }
+      if (current4_ == end4_) {
+        current4_ = begin4_;
+        ++current3_;
+      }
+      if (current3_ == end3_) {
+        current3_ = begin3_;
+        ++current2_;
+      }
+      if (current2_ == end2_) {
+        current2_ = begin2_;
+        ++current1_;
+      }
+      ComputeCurrentValue();
+    }
+    virtual ParamIteratorInterface<ParamType>* Clone() const {
+      return new Iterator(*this);
+    }
+    virtual const ParamType* Current() const { return &current_value_; }
+    virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {
+      // Having the same base generator guarantees that the other
+      // iterator is of the same type and we can downcast.
+      GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
+          << "The program attempted to compare iterators "
+          << "from different generators." << std::endl;
+      const Iterator* typed_other =
+          CheckedDowncastToActualType<const Iterator>(&other);
+      // We must report iterators equal if they both point beyond their
+      // respective ranges. That can happen in a variety of fashions,
+      // so we have to consult AtEnd().
+      return (AtEnd() && typed_other->AtEnd()) ||
+         (
+          current1_ == typed_other->current1_ &&
+          current2_ == typed_other->current2_ &&
+          current3_ == typed_other->current3_ &&
+          current4_ == typed_other->current4_ &&
+          current5_ == typed_other->current5_ &&
+          current6_ == typed_other->current6_);
+    }
+
+   private:
+    Iterator(const Iterator& other)
+        : base_(other.base_),
+        begin1_(other.begin1_),
+        end1_(other.end1_),
+        current1_(other.current1_),
+        begin2_(other.begin2_),
+        end2_(other.end2_),
+        current2_(other.current2_),
+        begin3_(other.begin3_),
+        end3_(other.end3_),
+        current3_(other.current3_),
+        begin4_(other.begin4_),
+        end4_(other.end4_),
+        current4_(other.current4_),
+        begin5_(other.begin5_),
+        end5_(other.end5_),
+        current5_(other.current5_),
+        begin6_(other.begin6_),
+        end6_(other.end6_),
+        current6_(other.current6_) {
+      ComputeCurrentValue();
+    }
+
+    void ComputeCurrentValue() {
+      if (!AtEnd())
+        current_value_ = ParamType(*current1_, *current2_, *current3_,
+            *current4_, *current5_, *current6_);
+    }
+    bool AtEnd() const {
+      // We must report iterator past the end of the range when either of the
+      // component iterators has reached the end of its range.
+      return
+          current1_ == end1_ ||
+          current2_ == end2_ ||
+          current3_ == end3_ ||
+          current4_ == end4_ ||
+          current5_ == end5_ ||
+          current6_ == end6_;
+    }
+
+    // No implementation - assignment is unsupported.
+    void operator=(const Iterator& other);
+
+    const ParamGeneratorInterface<ParamType>* const base_;
+    // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
+    // current[i]_ is the actual traversing iterator.
+    const typename ParamGenerator<T1>::iterator begin1_;
+    const typename ParamGenerator<T1>::iterator end1_;
+    typename ParamGenerator<T1>::iterator current1_;
+    const typename ParamGenerator<T2>::iterator begin2_;
+    const typename ParamGenerator<T2>::iterator end2_;
+    typename ParamGenerator<T2>::iterator current2_;
+    const typename ParamGenerator<T3>::iterator begin3_;
+    const typename ParamGenerator<T3>::iterator end3_;
+    typename ParamGenerator<T3>::iterator current3_;
+    const typename ParamGenerator<T4>::iterator begin4_;
+    const typename ParamGenerator<T4>::iterator end4_;
+    typename ParamGenerator<T4>::iterator current4_;
+    const typename ParamGenerator<T5>::iterator begin5_;
+    const typename ParamGenerator<T5>::iterator end5_;
+    typename ParamGenerator<T5>::iterator current5_;
+    const typename ParamGenerator<T6>::iterator begin6_;
+    const typename ParamGenerator<T6>::iterator end6_;
+    typename ParamGenerator<T6>::iterator current6_;
+    ParamType current_value_;
+  };  // class CartesianProductGenerator6::Iterator
+
+  // No implementation - assignment is unsupported.
+  void operator=(const CartesianProductGenerator6& other);
+
+  const ParamGenerator<T1> g1_;
+  const ParamGenerator<T2> g2_;
+  const ParamGenerator<T3> g3_;
+  const ParamGenerator<T4> g4_;
+  const ParamGenerator<T5> g5_;
+  const ParamGenerator<T6> g6_;
+};  // class CartesianProductGenerator6
+
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7>
+class CartesianProductGenerator7
+    : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6,
+        T7> > {
+ public:
+  typedef ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7> ParamType;
+
+  CartesianProductGenerator7(const ParamGenerator<T1>& g1,
+      const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,
+      const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5,
+      const ParamGenerator<T6>& g6, const ParamGenerator<T7>& g7)
+      : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7) {}
+  virtual ~CartesianProductGenerator7() {}
+
+  virtual ParamIteratorInterface<ParamType>* Begin() const {
+    return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
+        g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_,
+        g7_.begin());
+  }
+  virtual ParamIteratorInterface<ParamType>* End() const {
+    return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
+        g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end());
+  }
+
+ private:
+  class Iterator : public ParamIteratorInterface<ParamType> {
+   public:
+    Iterator(const ParamGeneratorInterface<ParamType>* base,
+      const ParamGenerator<T1>& g1,
+      const typename ParamGenerator<T1>::iterator& current1,
+      const ParamGenerator<T2>& g2,
+      const typename ParamGenerator<T2>::iterator& current2,
+      const ParamGenerator<T3>& g3,
+      const typename ParamGenerator<T3>::iterator& current3,
+      const ParamGenerator<T4>& g4,
+      const typename ParamGenerator<T4>::iterator& current4,
+      const ParamGenerator<T5>& g5,
+      const typename ParamGenerator<T5>::iterator& current5,
+      const ParamGenerator<T6>& g6,
+      const typename ParamGenerator<T6>::iterator& current6,
+      const ParamGenerator<T7>& g7,
+      const typename ParamGenerator<T7>::iterator& current7)
+        : base_(base),
+          begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
+          begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
+          begin3_(g3.begin()), end3_(g3.end()), current3_(current3),
+          begin4_(g4.begin()), end4_(g4.end()), current4_(current4),
+          begin5_(g5.begin()), end5_(g5.end()), current5_(current5),
+          begin6_(g6.begin()), end6_(g6.end()), current6_(current6),
+          begin7_(g7.begin()), end7_(g7.end()), current7_(current7)    {
+      ComputeCurrentValue();
+    }
+    virtual ~Iterator() {}
+
+    virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {
+      return base_;
+    }
+    // Advance should not be called on beyond-of-range iterators
+    // so no component iterators must be beyond end of range, either.
+    virtual void Advance() {
+      assert(!AtEnd());
+      ++current7_;
+      if (current7_ == end7_) {
+        current7_ = begin7_;
+        ++current6_;
+      }
+      if (current6_ == end6_) {
+        current6_ = begin6_;
+        ++current5_;
+      }
+      if (current5_ == end5_) {
+        current5_ = begin5_;
+        ++current4_;
+      }
+      if (current4_ == end4_) {
+        current4_ = begin4_;
+        ++current3_;
+      }
+      if (current3_ == end3_) {
+        current3_ = begin3_;
+        ++current2_;
+      }
+      if (current2_ == end2_) {
+        current2_ = begin2_;
+        ++current1_;
+      }
+      ComputeCurrentValue();
+    }
+    virtual ParamIteratorInterface<ParamType>* Clone() const {
+      return new Iterator(*this);
+    }
+    virtual const ParamType* Current() const { return &current_value_; }
+    virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {
+      // Having the same base generator guarantees that the other
+      // iterator is of the same type and we can downcast.
+      GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
+          << "The program attempted to compare iterators "
+          << "from different generators." << std::endl;
+      const Iterator* typed_other =
+          CheckedDowncastToActualType<const Iterator>(&other);
+      // We must report iterators equal if they both point beyond their
+      // respective ranges. That can happen in a variety of fashions,
+      // so we have to consult AtEnd().
+      return (AtEnd() && typed_other->AtEnd()) ||
+         (
+          current1_ == typed_other->current1_ &&
+          current2_ == typed_other->current2_ &&
+          current3_ == typed_other->current3_ &&
+          current4_ == typed_other->current4_ &&
+          current5_ == typed_other->current5_ &&
+          current6_ == typed_other->current6_ &&
+          current7_ == typed_other->current7_);
+    }
+
+   private:
+    Iterator(const Iterator& other)
+        : base_(other.base_),
+        begin1_(other.begin1_),
+        end1_(other.end1_),
+        current1_(other.current1_),
+        begin2_(other.begin2_),
+        end2_(other.end2_),
+        current2_(other.current2_),
+        begin3_(other.begin3_),
+        end3_(other.end3_),
+        current3_(other.current3_),
+        begin4_(other.begin4_),
+        end4_(other.end4_),
+        current4_(other.current4_),
+        begin5_(other.begin5_),
+        end5_(other.end5_),
+        current5_(other.current5_),
+        begin6_(other.begin6_),
+        end6_(other.end6_),
+        current6_(other.current6_),
+        begin7_(other.begin7_),
+        end7_(other.end7_),
+        current7_(other.current7_) {
+      ComputeCurrentValue();
+    }
+
+    void ComputeCurrentValue() {
+      if (!AtEnd())
+        current_value_ = ParamType(*current1_, *current2_, *current3_,
+            *current4_, *current5_, *current6_, *current7_);
+    }
+    bool AtEnd() const {
+      // We must report iterator past the end of the range when either of the
+      // component iterators has reached the end of its range.
+      return
+          current1_ == end1_ ||
+          current2_ == end2_ ||
+          current3_ == end3_ ||
+          current4_ == end4_ ||
+          current5_ == end5_ ||
+          current6_ == end6_ ||
+          current7_ == end7_;
+    }
+
+    // No implementation - assignment is unsupported.
+    void operator=(const Iterator& other);
+
+    const ParamGeneratorInterface<ParamType>* const base_;
+    // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
+    // current[i]_ is the actual traversing iterator.
+    const typename ParamGenerator<T1>::iterator begin1_;
+    const typename ParamGenerator<T1>::iterator end1_;
+    typename ParamGenerator<T1>::iterator current1_;
+    const typename ParamGenerator<T2>::iterator begin2_;
+    const typename ParamGenerator<T2>::iterator end2_;
+    typename ParamGenerator<T2>::iterator current2_;
+    const typename ParamGenerator<T3>::iterator begin3_;
+    const typename ParamGenerator<T3>::iterator end3_;
+    typename ParamGenerator<T3>::iterator current3_;
+    const typename ParamGenerator<T4>::iterator begin4_;
+    const typename ParamGenerator<T4>::iterator end4_;
+    typename ParamGenerator<T4>::iterator current4_;
+    const typename ParamGenerator<T5>::iterator begin5_;
+    const typename ParamGenerator<T5>::iterator end5_;
+    typename ParamGenerator<T5>::iterator current5_;
+    const typename ParamGenerator<T6>::iterator begin6_;
+    const typename ParamGenerator<T6>::iterator end6_;
+    typename ParamGenerator<T6>::iterator current6_;
+    const typename ParamGenerator<T7>::iterator begin7_;
+    const typename ParamGenerator<T7>::iterator end7_;
+    typename ParamGenerator<T7>::iterator current7_;
+    ParamType current_value_;
+  };  // class CartesianProductGenerator7::Iterator
+
+  // No implementation - assignment is unsupported.
+  void operator=(const CartesianProductGenerator7& other);
+
+  const ParamGenerator<T1> g1_;
+  const ParamGenerator<T2> g2_;
+  const ParamGenerator<T3> g3_;
+  const ParamGenerator<T4> g4_;
+  const ParamGenerator<T5> g5_;
+  const ParamGenerator<T6> g6_;
+  const ParamGenerator<T7> g7_;
+};  // class CartesianProductGenerator7
+
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8>
+class CartesianProductGenerator8
+    : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6,
+        T7, T8> > {
+ public:
+  typedef ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8> ParamType;
+
+  CartesianProductGenerator8(const ParamGenerator<T1>& g1,
+      const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,
+      const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5,
+      const ParamGenerator<T6>& g6, const ParamGenerator<T7>& g7,
+      const ParamGenerator<T8>& g8)
+      : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7),
+          g8_(g8) {}
+  virtual ~CartesianProductGenerator8() {}
+
+  virtual ParamIteratorInterface<ParamType>* Begin() const {
+    return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
+        g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_,
+        g7_.begin(), g8_, g8_.begin());
+  }
+  virtual ParamIteratorInterface<ParamType>* End() const {
+    return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
+        g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_,
+        g8_.end());
+  }
+
+ private:
+  class Iterator : public ParamIteratorInterface<ParamType> {
+   public:
+    Iterator(const ParamGeneratorInterface<ParamType>* base,
+      const ParamGenerator<T1>& g1,
+      const typename ParamGenerator<T1>::iterator& current1,
+      const ParamGenerator<T2>& g2,
+      const typename ParamGenerator<T2>::iterator& current2,
+      const ParamGenerator<T3>& g3,
+      const typename ParamGenerator<T3>::iterator& current3,
+      const ParamGenerator<T4>& g4,
+      const typename ParamGenerator<T4>::iterator& current4,
+      const ParamGenerator<T5>& g5,
+      const typename ParamGenerator<T5>::iterator& current5,
+      const ParamGenerator<T6>& g6,
+      const typename ParamGenerator<T6>::iterator& current6,
+      const ParamGenerator<T7>& g7,
+      const typename ParamGenerator<T7>::iterator& current7,
+      const ParamGenerator<T8>& g8,
+      const typename ParamGenerator<T8>::iterator& current8)
+        : base_(base),
+          begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
+          begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
+          begin3_(g3.begin()), end3_(g3.end()), current3_(current3),
+          begin4_(g4.begin()), end4_(g4.end()), current4_(current4),
+          begin5_(g5.begin()), end5_(g5.end()), current5_(current5),
+          begin6_(g6.begin()), end6_(g6.end()), current6_(current6),
+          begin7_(g7.begin()), end7_(g7.end()), current7_(current7),
+          begin8_(g8.begin()), end8_(g8.end()), current8_(current8)    {
+      ComputeCurrentValue();
+    }
+    virtual ~Iterator() {}
+
+    virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {
+      return base_;
+    }
+    // Advance should not be called on beyond-of-range iterators
+    // so no component iterators must be beyond end of range, either.
+    virtual void Advance() {
+      assert(!AtEnd());
+      ++current8_;
+      if (current8_ == end8_) {
+        current8_ = begin8_;
+        ++current7_;
+      }
+      if (current7_ == end7_) {
+        current7_ = begin7_;
+        ++current6_;
+      }
+      if (current6_ == end6_) {
+        current6_ = begin6_;
+        ++current5_;
+      }
+      if (current5_ == end5_) {
+        current5_ = begin5_;
+        ++current4_;
+      }
+      if (current4_ == end4_) {
+        current4_ = begin4_;
+        ++current3_;
+      }
+      if (current3_ == end3_) {
+        current3_ = begin3_;
+        ++current2_;
+      }
+      if (current2_ == end2_) {
+        current2_ = begin2_;
+        ++current1_;
+      }
+      ComputeCurrentValue();
+    }
+    virtual ParamIteratorInterface<ParamType>* Clone() const {
+      return new Iterator(*this);
+    }
+    virtual const ParamType* Current() const { return &current_value_; }
+    virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {
+      // Having the same base generator guarantees that the other
+      // iterator is of the same type and we can downcast.
+      GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
+          << "The program attempted to compare iterators "
+          << "from different generators." << std::endl;
+      const Iterator* typed_other =
+          CheckedDowncastToActualType<const Iterator>(&other);
+      // We must report iterators equal if they both point beyond their
+      // respective ranges. That can happen in a variety of fashions,
+      // so we have to consult AtEnd().
+      return (AtEnd() && typed_other->AtEnd()) ||
+         (
+          current1_ == typed_other->current1_ &&
+          current2_ == typed_other->current2_ &&
+          current3_ == typed_other->current3_ &&
+          current4_ == typed_other->current4_ &&
+          current5_ == typed_other->current5_ &&
+          current6_ == typed_other->current6_ &&
+          current7_ == typed_other->current7_ &&
+          current8_ == typed_other->current8_);
+    }
+
+   private:
+    Iterator(const Iterator& other)
+        : base_(other.base_),
+        begin1_(other.begin1_),
+        end1_(other.end1_),
+        current1_(other.current1_),
+        begin2_(other.begin2_),
+        end2_(other.end2_),
+        current2_(other.current2_),
+        begin3_(other.begin3_),
+        end3_(other.end3_),
+        current3_(other.current3_),
+        begin4_(other.begin4_),
+        end4_(other.end4_),
+        current4_(other.current4_),
+        begin5_(other.begin5_),
+        end5_(other.end5_),
+        current5_(other.current5_),
+        begin6_(other.begin6_),
+        end6_(other.end6_),
+        current6_(other.current6_),
+        begin7_(other.begin7_),
+        end7_(other.end7_),
+        current7_(other.current7_),
+        begin8_(other.begin8_),
+        end8_(other.end8_),
+        current8_(other.current8_) {
+      ComputeCurrentValue();
+    }
+
+    void ComputeCurrentValue() {
+      if (!AtEnd())
+        current_value_ = ParamType(*current1_, *current2_, *current3_,
+            *current4_, *current5_, *current6_, *current7_, *current8_);
+    }
+    bool AtEnd() const {
+      // We must report iterator past the end of the range when either of the
+      // component iterators has reached the end of its range.
+      return
+          current1_ == end1_ ||
+          current2_ == end2_ ||
+          current3_ == end3_ ||
+          current4_ == end4_ ||
+          current5_ == end5_ ||
+          current6_ == end6_ ||
+          current7_ == end7_ ||
+          current8_ == end8_;
+    }
+
+    // No implementation - assignment is unsupported.
+    void operator=(const Iterator& other);
+
+    const ParamGeneratorInterface<ParamType>* const base_;
+    // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
+    // current[i]_ is the actual traversing iterator.
+    const typename ParamGenerator<T1>::iterator begin1_;
+    const typename ParamGenerator<T1>::iterator end1_;
+    typename ParamGenerator<T1>::iterator current1_;
+    const typename ParamGenerator<T2>::iterator begin2_;
+    const typename ParamGenerator<T2>::iterator end2_;
+    typename ParamGenerator<T2>::iterator current2_;
+    const typename ParamGenerator<T3>::iterator begin3_;
+    const typename ParamGenerator<T3>::iterator end3_;
+    typename ParamGenerator<T3>::iterator current3_;
+    const typename ParamGenerator<T4>::iterator begin4_;
+    const typename ParamGenerator<T4>::iterator end4_;
+    typename ParamGenerator<T4>::iterator current4_;
+    const typename ParamGenerator<T5>::iterator begin5_;
+    const typename ParamGenerator<T5>::iterator end5_;
+    typename ParamGenerator<T5>::iterator current5_;
+    const typename ParamGenerator<T6>::iterator begin6_;
+    const typename ParamGenerator<T6>::iterator end6_;
+    typename ParamGenerator<T6>::iterator current6_;
+    const typename ParamGenerator<T7>::iterator begin7_;
+    const typename ParamGenerator<T7>::iterator end7_;
+    typename ParamGenerator<T7>::iterator current7_;
+    const typename ParamGenerator<T8>::iterator begin8_;
+    const typename ParamGenerator<T8>::iterator end8_;
+    typename ParamGenerator<T8>::iterator current8_;
+    ParamType current_value_;
+  };  // class CartesianProductGenerator8::Iterator
+
+  // No implementation - assignment is unsupported.
+  void operator=(const CartesianProductGenerator8& other);
+
+  const ParamGenerator<T1> g1_;
+  const ParamGenerator<T2> g2_;
+  const ParamGenerator<T3> g3_;
+  const ParamGenerator<T4> g4_;
+  const ParamGenerator<T5> g5_;
+  const ParamGenerator<T6> g6_;
+  const ParamGenerator<T7> g7_;
+  const ParamGenerator<T8> g8_;
+};  // class CartesianProductGenerator8
+
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9>
+class CartesianProductGenerator9
+    : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6,
+        T7, T8, T9> > {
+ public:
+  typedef ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9> ParamType;
+
+  CartesianProductGenerator9(const ParamGenerator<T1>& g1,
+      const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,
+      const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5,
+      const ParamGenerator<T6>& g6, const ParamGenerator<T7>& g7,
+      const ParamGenerator<T8>& g8, const ParamGenerator<T9>& g9)
+      : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8),
+          g9_(g9) {}
+  virtual ~CartesianProductGenerator9() {}
+
+  virtual ParamIteratorInterface<ParamType>* Begin() const {
+    return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
+        g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_,
+        g7_.begin(), g8_, g8_.begin(), g9_, g9_.begin());
+  }
+  virtual ParamIteratorInterface<ParamType>* End() const {
+    return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
+        g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_,
+        g8_.end(), g9_, g9_.end());
+  }
+
+ private:
+  class Iterator : public ParamIteratorInterface<ParamType> {
+   public:
+    Iterator(const ParamGeneratorInterface<ParamType>* base,
+      const ParamGenerator<T1>& g1,
+      const typename ParamGenerator<T1>::iterator& current1,
+      const ParamGenerator<T2>& g2,
+      const typename ParamGenerator<T2>::iterator& current2,
+      const ParamGenerator<T3>& g3,
+      const typename ParamGenerator<T3>::iterator& current3,
+      const ParamGenerator<T4>& g4,
+      const typename ParamGenerator<T4>::iterator& current4,
+      const ParamGenerator<T5>& g5,
+      const typename ParamGenerator<T5>::iterator& current5,
+      const ParamGenerator<T6>& g6,
+      const typename ParamGenerator<T6>::iterator& current6,
+      const ParamGenerator<T7>& g7,
+      const typename ParamGenerator<T7>::iterator& current7,
+      const ParamGenerator<T8>& g8,
+      const typename ParamGenerator<T8>::iterator& current8,
+      const ParamGenerator<T9>& g9,
+      const typename ParamGenerator<T9>::iterator& current9)
+        : base_(base),
+          begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
+          begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
+          begin3_(g3.begin()), end3_(g3.end()), current3_(current3),
+          begin4_(g4.begin()), end4_(g4.end()), current4_(current4),
+          begin5_(g5.begin()), end5_(g5.end()), current5_(current5),
+          begin6_(g6.begin()), end6_(g6.end()), current6_(current6),
+          begin7_(g7.begin()), end7_(g7.end()), current7_(current7),
+          begin8_(g8.begin()), end8_(g8.end()), current8_(current8),
+          begin9_(g9.begin()), end9_(g9.end()), current9_(current9)    {
+      ComputeCurrentValue();
+    }
+    virtual ~Iterator() {}
+
+    virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {
+      return base_;
+    }
+    // Advance should not be called on beyond-of-range iterators
+    // so no component iterators must be beyond end of range, either.
+    virtual void Advance() {
+      assert(!AtEnd());
+      ++current9_;
+      if (current9_ == end9_) {
+        current9_ = begin9_;
+        ++current8_;
+      }
+      if (current8_ == end8_) {
+        current8_ = begin8_;
+        ++current7_;
+      }
+      if (current7_ == end7_) {
+        current7_ = begin7_;
+        ++current6_;
+      }
+      if (current6_ == end6_) {
+        current6_ = begin6_;
+        ++current5_;
+      }
+      if (current5_ == end5_) {
+        current5_ = begin5_;
+        ++current4_;
+      }
+      if (current4_ == end4_) {
+        current4_ = begin4_;
+        ++current3_;
+      }
+      if (current3_ == end3_) {
+        current3_ = begin3_;
+        ++current2_;
+      }
+      if (current2_ == end2_) {
+        current2_ = begin2_;
+        ++current1_;
+      }
+      ComputeCurrentValue();
+    }
+    virtual ParamIteratorInterface<ParamType>* Clone() const {
+      return new Iterator(*this);
+    }
+    virtual const ParamType* Current() const { return &current_value_; }
+    virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {
+      // Having the same base generator guarantees that the other
+      // iterator is of the same type and we can downcast.
+      GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
+          << "The program attempted to compare iterators "
+          << "from different generators." << std::endl;
+      const Iterator* typed_other =
+          CheckedDowncastToActualType<const Iterator>(&other);
+      // We must report iterators equal if they both point beyond their
+      // respective ranges. That can happen in a variety of fashions,
+      // so we have to consult AtEnd().
+      return (AtEnd() && typed_other->AtEnd()) ||
+         (
+          current1_ == typed_other->current1_ &&
+          current2_ == typed_other->current2_ &&
+          current3_ == typed_other->current3_ &&
+          current4_ == typed_other->current4_ &&
+          current5_ == typed_other->current5_ &&
+          current6_ == typed_other->current6_ &&
+          current7_ == typed_other->current7_ &&
+          current8_ == typed_other->current8_ &&
+          current9_ == typed_other->current9_);
+    }
+
+   private:
+    Iterator(const Iterator& other)
+        : base_(other.base_),
+        begin1_(other.begin1_),
+        end1_(other.end1_),
+        current1_(other.current1_),
+        begin2_(other.begin2_),
+        end2_(other.end2_),
+        current2_(other.current2_),
+        begin3_(other.begin3_),
+        end3_(other.end3_),
+        current3_(other.current3_),
+        begin4_(other.begin4_),
+        end4_(other.end4_),
+        current4_(other.current4_),
+        begin5_(other.begin5_),
+        end5_(other.end5_),
+        current5_(other.current5_),
+        begin6_(other.begin6_),
+        end6_(other.end6_),
+        current6_(other.current6_),
+        begin7_(other.begin7_),
+        end7_(other.end7_),
+        current7_(other.current7_),
+        begin8_(other.begin8_),
+        end8_(other.end8_),
+        current8_(other.current8_),
+        begin9_(other.begin9_),
+        end9_(other.end9_),
+        current9_(other.current9_) {
+      ComputeCurrentValue();
+    }
+
+    void ComputeCurrentValue() {
+      if (!AtEnd())
+        current_value_ = ParamType(*current1_, *current2_, *current3_,
+            *current4_, *current5_, *current6_, *current7_, *current8_,
+            *current9_);
+    }
+    bool AtEnd() const {
+      // We must report iterator past the end of the range when either of the
+      // component iterators has reached the end of its range.
+      return
+          current1_ == end1_ ||
+          current2_ == end2_ ||
+          current3_ == end3_ ||
+          current4_ == end4_ ||
+          current5_ == end5_ ||
+          current6_ == end6_ ||
+          current7_ == end7_ ||
+          current8_ == end8_ ||
+          current9_ == end9_;
+    }
+
+    // No implementation - assignment is unsupported.
+    void operator=(const Iterator& other);
+
+    const ParamGeneratorInterface<ParamType>* const base_;
+    // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
+    // current[i]_ is the actual traversing iterator.
+    const typename ParamGenerator<T1>::iterator begin1_;
+    const typename ParamGenerator<T1>::iterator end1_;
+    typename ParamGenerator<T1>::iterator current1_;
+    const typename ParamGenerator<T2>::iterator begin2_;
+    const typename ParamGenerator<T2>::iterator end2_;
+    typename ParamGenerator<T2>::iterator current2_;
+    const typename ParamGenerator<T3>::iterator begin3_;
+    const typename ParamGenerator<T3>::iterator end3_;
+    typename ParamGenerator<T3>::iterator current3_;
+    const typename ParamGenerator<T4>::iterator begin4_;
+    const typename ParamGenerator<T4>::iterator end4_;
+    typename ParamGenerator<T4>::iterator current4_;
+    const typename ParamGenerator<T5>::iterator begin5_;
+    const typename ParamGenerator<T5>::iterator end5_;
+    typename ParamGenerator<T5>::iterator current5_;
+    const typename ParamGenerator<T6>::iterator begin6_;
+    const typename ParamGenerator<T6>::iterator end6_;
+    typename ParamGenerator<T6>::iterator current6_;
+    const typename ParamGenerator<T7>::iterator begin7_;
+    const typename ParamGenerator<T7>::iterator end7_;
+    typename ParamGenerator<T7>::iterator current7_;
+    const typename ParamGenerator<T8>::iterator begin8_;
+    const typename ParamGenerator<T8>::iterator end8_;
+    typename ParamGenerator<T8>::iterator current8_;
+    const typename ParamGenerator<T9>::iterator begin9_;
+    const typename ParamGenerator<T9>::iterator end9_;
+    typename ParamGenerator<T9>::iterator current9_;
+    ParamType current_value_;
+  };  // class CartesianProductGenerator9::Iterator
+
+  // No implementation - assignment is unsupported.
+  void operator=(const CartesianProductGenerator9& other);
+
+  const ParamGenerator<T1> g1_;
+  const ParamGenerator<T2> g2_;
+  const ParamGenerator<T3> g3_;
+  const ParamGenerator<T4> g4_;
+  const ParamGenerator<T5> g5_;
+  const ParamGenerator<T6> g6_;
+  const ParamGenerator<T7> g7_;
+  const ParamGenerator<T8> g8_;
+  const ParamGenerator<T9> g9_;
+};  // class CartesianProductGenerator9
+
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10>
+class CartesianProductGenerator10
+    : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6,
+        T7, T8, T9, T10> > {
+ public:
+  typedef ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> ParamType;
+
+  CartesianProductGenerator10(const ParamGenerator<T1>& g1,
+      const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,
+      const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5,
+      const ParamGenerator<T6>& g6, const ParamGenerator<T7>& g7,
+      const ParamGenerator<T8>& g8, const ParamGenerator<T9>& g9,
+      const ParamGenerator<T10>& g10)
+      : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8),
+          g9_(g9), g10_(g10) {}
+  virtual ~CartesianProductGenerator10() {}
+
+  virtual ParamIteratorInterface<ParamType>* Begin() const {
+    return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
+        g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_,
+        g7_.begin(), g8_, g8_.begin(), g9_, g9_.begin(), g10_, g10_.begin());
+  }
+  virtual ParamIteratorInterface<ParamType>* End() const {
+    return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
+        g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_,
+        g8_.end(), g9_, g9_.end(), g10_, g10_.end());
+  }
+
+ private:
+  class Iterator : public ParamIteratorInterface<ParamType> {
+   public:
+    Iterator(const ParamGeneratorInterface<ParamType>* base,
+      const ParamGenerator<T1>& g1,
+      const typename ParamGenerator<T1>::iterator& current1,
+      const ParamGenerator<T2>& g2,
+      const typename ParamGenerator<T2>::iterator& current2,
+      const ParamGenerator<T3>& g3,
+      const typename ParamGenerator<T3>::iterator& current3,
+      const ParamGenerator<T4>& g4,
+      const typename ParamGenerator<T4>::iterator& current4,
+      const ParamGenerator<T5>& g5,
+      const typename ParamGenerator<T5>::iterator& current5,
+      const ParamGenerator<T6>& g6,
+      const typename ParamGenerator<T6>::iterator& current6,
+      const ParamGenerator<T7>& g7,
+      const typename ParamGenerator<T7>::iterator& current7,
+      const ParamGenerator<T8>& g8,
+      const typename ParamGenerator<T8>::iterator& current8,
+      const ParamGenerator<T9>& g9,
+      const typename ParamGenerator<T9>::iterator& current9,
+      const ParamGenerator<T10>& g10,
+      const typename ParamGenerator<T10>::iterator& current10)
+        : base_(base),
+          begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
+          begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
+          begin3_(g3.begin()), end3_(g3.end()), current3_(current3),
+          begin4_(g4.begin()), end4_(g4.end()), current4_(current4),
+          begin5_(g5.begin()), end5_(g5.end()), current5_(current5),
+          begin6_(g6.begin()), end6_(g6.end()), current6_(current6),
+          begin7_(g7.begin()), end7_(g7.end()), current7_(current7),
+          begin8_(g8.begin()), end8_(g8.end()), current8_(current8),
+          begin9_(g9.begin()), end9_(g9.end()), current9_(current9),
+          begin10_(g10.begin()), end10_(g10.end()), current10_(current10)    {
+      ComputeCurrentValue();
+    }
+    virtual ~Iterator() {}
+
+    virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {
+      return base_;
+    }
+    // Advance should not be called on beyond-of-range iterators
+    // so no component iterators must be beyond end of range, either.
+    virtual void Advance() {
+      assert(!AtEnd());
+      ++current10_;
+      if (current10_ == end10_) {
+        current10_ = begin10_;
+        ++current9_;
+      }
+      if (current9_ == end9_) {
+        current9_ = begin9_;
+        ++current8_;
+      }
+      if (current8_ == end8_) {
+        current8_ = begin8_;
+        ++current7_;
+      }
+      if (current7_ == end7_) {
+        current7_ = begin7_;
+        ++current6_;
+      }
+      if (current6_ == end6_) {
+        current6_ = begin6_;
+        ++current5_;
+      }
+      if (current5_ == end5_) {
+        current5_ = begin5_;
+        ++current4_;
+      }
+      if (current4_ == end4_) {
+        current4_ = begin4_;
+        ++current3_;
+      }
+      if (current3_ == end3_) {
+        current3_ = begin3_;
+        ++current2_;
+      }
+      if (current2_ == end2_) {
+        current2_ = begin2_;
+        ++current1_;
+      }
+      ComputeCurrentValue();
+    }
+    virtual ParamIteratorInterface<ParamType>* Clone() const {
+      return new Iterator(*this);
+    }
+    virtual const ParamType* Current() const { return &current_value_; }
+    virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {
+      // Having the same base generator guarantees that the other
+      // iterator is of the same type and we can downcast.
+      GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
+          << "The program attempted to compare iterators "
+          << "from different generators." << std::endl;
+      const Iterator* typed_other =
+          CheckedDowncastToActualType<const Iterator>(&other);
+      // We must report iterators equal if they both point beyond their
+      // respective ranges. That can happen in a variety of fashions,
+      // so we have to consult AtEnd().
+      return (AtEnd() && typed_other->AtEnd()) ||
+         (
+          current1_ == typed_other->current1_ &&
+          current2_ == typed_other->current2_ &&
+          current3_ == typed_other->current3_ &&
+          current4_ == typed_other->current4_ &&
+          current5_ == typed_other->current5_ &&
+          current6_ == typed_other->current6_ &&
+          current7_ == typed_other->current7_ &&
+          current8_ == typed_other->current8_ &&
+          current9_ == typed_other->current9_ &&
+          current10_ == typed_other->current10_);
+    }
+
+   private:
+    Iterator(const Iterator& other)
+        : base_(other.base_),
+        begin1_(other.begin1_),
+        end1_(other.end1_),
+        current1_(other.current1_),
+        begin2_(other.begin2_),
+        end2_(other.end2_),
+        current2_(other.current2_),
+        begin3_(other.begin3_),
+        end3_(other.end3_),
+        current3_(other.current3_),
+        begin4_(other.begin4_),
+        end4_(other.end4_),
+        current4_(other.current4_),
+        begin5_(other.begin5_),
+        end5_(other.end5_),
+        current5_(other.current5_),
+        begin6_(other.begin6_),
+        end6_(other.end6_),
+        current6_(other.current6_),
+        begin7_(other.begin7_),
+        end7_(other.end7_),
+        current7_(other.current7_),
+        begin8_(other.begin8_),
+        end8_(other.end8_),
+        current8_(other.current8_),
+        begin9_(other.begin9_),
+        end9_(other.end9_),
+        current9_(other.current9_),
+        begin10_(other.begin10_),
+        end10_(other.end10_),
+        current10_(other.current10_) {
+      ComputeCurrentValue();
+    }
+
+    void ComputeCurrentValue() {
+      if (!AtEnd())
+        current_value_ = ParamType(*current1_, *current2_, *current3_,
+            *current4_, *current5_, *current6_, *current7_, *current8_,
+            *current9_, *current10_);
+    }
+    bool AtEnd() const {
+      // We must report iterator past the end of the range when either of the
+      // component iterators has reached the end of its range.
+      return
+          current1_ == end1_ ||
+          current2_ == end2_ ||
+          current3_ == end3_ ||
+          current4_ == end4_ ||
+          current5_ == end5_ ||
+          current6_ == end6_ ||
+          current7_ == end7_ ||
+          current8_ == end8_ ||
+          current9_ == end9_ ||
+          current10_ == end10_;
+    }
+
+    // No implementation - assignment is unsupported.
+    void operator=(const Iterator& other);
+
+    const ParamGeneratorInterface<ParamType>* const base_;
+    // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
+    // current[i]_ is the actual traversing iterator.
+    const typename ParamGenerator<T1>::iterator begin1_;
+    const typename ParamGenerator<T1>::iterator end1_;
+    typename ParamGenerator<T1>::iterator current1_;
+    const typename ParamGenerator<T2>::iterator begin2_;
+    const typename ParamGenerator<T2>::iterator end2_;
+    typename ParamGenerator<T2>::iterator current2_;
+    const typename ParamGenerator<T3>::iterator begin3_;
+    const typename ParamGenerator<T3>::iterator end3_;
+    typename ParamGenerator<T3>::iterator current3_;
+    const typename ParamGenerator<T4>::iterator begin4_;
+    const typename ParamGenerator<T4>::iterator end4_;
+    typename ParamGenerator<T4>::iterator current4_;
+    const typename ParamGenerator<T5>::iterator begin5_;
+    const typename ParamGenerator<T5>::iterator end5_;
+    typename ParamGenerator<T5>::iterator current5_;
+    const typename ParamGenerator<T6>::iterator begin6_;
+    const typename ParamGenerator<T6>::iterator end6_;
+    typename ParamGenerator<T6>::iterator current6_;
+    const typename ParamGenerator<T7>::iterator begin7_;
+    const typename ParamGenerator<T7>::iterator end7_;
+    typename ParamGenerator<T7>::iterator current7_;
+    const typename ParamGenerator<T8>::iterator begin8_;
+    const typename ParamGenerator<T8>::iterator end8_;
+    typename ParamGenerator<T8>::iterator current8_;
+    const typename ParamGenerator<T9>::iterator begin9_;
+    const typename ParamGenerator<T9>::iterator end9_;
+    typename ParamGenerator<T9>::iterator current9_;
+    const typename ParamGenerator<T10>::iterator begin10_;
+    const typename ParamGenerator<T10>::iterator end10_;
+    typename ParamGenerator<T10>::iterator current10_;
+    ParamType current_value_;
+  };  // class CartesianProductGenerator10::Iterator
+
+  // No implementation - assignment is unsupported.
+  void operator=(const CartesianProductGenerator10& other);
+
+  const ParamGenerator<T1> g1_;
+  const ParamGenerator<T2> g2_;
+  const ParamGenerator<T3> g3_;
+  const ParamGenerator<T4> g4_;
+  const ParamGenerator<T5> g5_;
+  const ParamGenerator<T6> g6_;
+  const ParamGenerator<T7> g7_;
+  const ParamGenerator<T8> g8_;
+  const ParamGenerator<T9> g9_;
+  const ParamGenerator<T10> g10_;
+};  // class CartesianProductGenerator10
+
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
+// Helper classes providing Combine() with polymorphic features. They allow
+// casting CartesianProductGeneratorN<T> to ParamGenerator<U> if T is
+// convertible to U.
+//
+template <class Generator1, class Generator2>
+class CartesianProductHolder2 {
+ public:
+CartesianProductHolder2(const Generator1& g1, const Generator2& g2)
+      : g1_(g1), g2_(g2) {}
+  template <typename T1, typename T2>
+  operator ParamGenerator< ::std::tr1::tuple<T1, T2> >() const {
+    return ParamGenerator< ::std::tr1::tuple<T1, T2> >(
+        new CartesianProductGenerator2<T1, T2>(
+        static_cast<ParamGenerator<T1> >(g1_),
+        static_cast<ParamGenerator<T2> >(g2_)));
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const CartesianProductHolder2& other);
+
+  const Generator1 g1_;
+  const Generator2 g2_;
+};  // class CartesianProductHolder2
+
+template <class Generator1, class Generator2, class Generator3>
+class CartesianProductHolder3 {
+ public:
+CartesianProductHolder3(const Generator1& g1, const Generator2& g2,
+    const Generator3& g3)
+      : g1_(g1), g2_(g2), g3_(g3) {}
+  template <typename T1, typename T2, typename T3>
+  operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3> >() const {
+    return ParamGenerator< ::std::tr1::tuple<T1, T2, T3> >(
+        new CartesianProductGenerator3<T1, T2, T3>(
+        static_cast<ParamGenerator<T1> >(g1_),
+        static_cast<ParamGenerator<T2> >(g2_),
+        static_cast<ParamGenerator<T3> >(g3_)));
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const CartesianProductHolder3& other);
+
+  const Generator1 g1_;
+  const Generator2 g2_;
+  const Generator3 g3_;
+};  // class CartesianProductHolder3
+
+template <class Generator1, class Generator2, class Generator3,
+    class Generator4>
+class CartesianProductHolder4 {
+ public:
+CartesianProductHolder4(const Generator1& g1, const Generator2& g2,
+    const Generator3& g3, const Generator4& g4)
+      : g1_(g1), g2_(g2), g3_(g3), g4_(g4) {}
+  template <typename T1, typename T2, typename T3, typename T4>
+  operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4> >() const {
+    return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4> >(
+        new CartesianProductGenerator4<T1, T2, T3, T4>(
+        static_cast<ParamGenerator<T1> >(g1_),
+        static_cast<ParamGenerator<T2> >(g2_),
+        static_cast<ParamGenerator<T3> >(g3_),
+        static_cast<ParamGenerator<T4> >(g4_)));
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const CartesianProductHolder4& other);
+
+  const Generator1 g1_;
+  const Generator2 g2_;
+  const Generator3 g3_;
+  const Generator4 g4_;
+};  // class CartesianProductHolder4
+
+template <class Generator1, class Generator2, class Generator3,
+    class Generator4, class Generator5>
+class CartesianProductHolder5 {
+ public:
+CartesianProductHolder5(const Generator1& g1, const Generator2& g2,
+    const Generator3& g3, const Generator4& g4, const Generator5& g5)
+      : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5) {}
+  template <typename T1, typename T2, typename T3, typename T4, typename T5>
+  operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5> >() const {
+    return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5> >(
+        new CartesianProductGenerator5<T1, T2, T3, T4, T5>(
+        static_cast<ParamGenerator<T1> >(g1_),
+        static_cast<ParamGenerator<T2> >(g2_),
+        static_cast<ParamGenerator<T3> >(g3_),
+        static_cast<ParamGenerator<T4> >(g4_),
+        static_cast<ParamGenerator<T5> >(g5_)));
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const CartesianProductHolder5& other);
+
+  const Generator1 g1_;
+  const Generator2 g2_;
+  const Generator3 g3_;
+  const Generator4 g4_;
+  const Generator5 g5_;
+};  // class CartesianProductHolder5
+
+template <class Generator1, class Generator2, class Generator3,
+    class Generator4, class Generator5, class Generator6>
+class CartesianProductHolder6 {
+ public:
+CartesianProductHolder6(const Generator1& g1, const Generator2& g2,
+    const Generator3& g3, const Generator4& g4, const Generator5& g5,
+    const Generator6& g6)
+      : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6) {}
+  template <typename T1, typename T2, typename T3, typename T4, typename T5,
+      typename T6>
+  operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6> >() const {
+    return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6> >(
+        new CartesianProductGenerator6<T1, T2, T3, T4, T5, T6>(
+        static_cast<ParamGenerator<T1> >(g1_),
+        static_cast<ParamGenerator<T2> >(g2_),
+        static_cast<ParamGenerator<T3> >(g3_),
+        static_cast<ParamGenerator<T4> >(g4_),
+        static_cast<ParamGenerator<T5> >(g5_),
+        static_cast<ParamGenerator<T6> >(g6_)));
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const CartesianProductHolder6& other);
+
+  const Generator1 g1_;
+  const Generator2 g2_;
+  const Generator3 g3_;
+  const Generator4 g4_;
+  const Generator5 g5_;
+  const Generator6 g6_;
+};  // class CartesianProductHolder6
+
+template <class Generator1, class Generator2, class Generator3,
+    class Generator4, class Generator5, class Generator6, class Generator7>
+class CartesianProductHolder7 {
+ public:
+CartesianProductHolder7(const Generator1& g1, const Generator2& g2,
+    const Generator3& g3, const Generator4& g4, const Generator5& g5,
+    const Generator6& g6, const Generator7& g7)
+      : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7) {}
+  template <typename T1, typename T2, typename T3, typename T4, typename T5,
+      typename T6, typename T7>
+  operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6,
+      T7> >() const {
+    return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7> >(
+        new CartesianProductGenerator7<T1, T2, T3, T4, T5, T6, T7>(
+        static_cast<ParamGenerator<T1> >(g1_),
+        static_cast<ParamGenerator<T2> >(g2_),
+        static_cast<ParamGenerator<T3> >(g3_),
+        static_cast<ParamGenerator<T4> >(g4_),
+        static_cast<ParamGenerator<T5> >(g5_),
+        static_cast<ParamGenerator<T6> >(g6_),
+        static_cast<ParamGenerator<T7> >(g7_)));
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const CartesianProductHolder7& other);
+
+  const Generator1 g1_;
+  const Generator2 g2_;
+  const Generator3 g3_;
+  const Generator4 g4_;
+  const Generator5 g5_;
+  const Generator6 g6_;
+  const Generator7 g7_;
+};  // class CartesianProductHolder7
+
+template <class Generator1, class Generator2, class Generator3,
+    class Generator4, class Generator5, class Generator6, class Generator7,
+    class Generator8>
+class CartesianProductHolder8 {
+ public:
+CartesianProductHolder8(const Generator1& g1, const Generator2& g2,
+    const Generator3& g3, const Generator4& g4, const Generator5& g5,
+    const Generator6& g6, const Generator7& g7, const Generator8& g8)
+      : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7),
+          g8_(g8) {}
+  template <typename T1, typename T2, typename T3, typename T4, typename T5,
+      typename T6, typename T7, typename T8>
+  operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7,
+      T8> >() const {
+    return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8> >(
+        new CartesianProductGenerator8<T1, T2, T3, T4, T5, T6, T7, T8>(
+        static_cast<ParamGenerator<T1> >(g1_),
+        static_cast<ParamGenerator<T2> >(g2_),
+        static_cast<ParamGenerator<T3> >(g3_),
+        static_cast<ParamGenerator<T4> >(g4_),
+        static_cast<ParamGenerator<T5> >(g5_),
+        static_cast<ParamGenerator<T6> >(g6_),
+        static_cast<ParamGenerator<T7> >(g7_),
+        static_cast<ParamGenerator<T8> >(g8_)));
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const CartesianProductHolder8& other);
+
+  const Generator1 g1_;
+  const Generator2 g2_;
+  const Generator3 g3_;
+  const Generator4 g4_;
+  const Generator5 g5_;
+  const Generator6 g6_;
+  const Generator7 g7_;
+  const Generator8 g8_;
+};  // class CartesianProductHolder8
+
+template <class Generator1, class Generator2, class Generator3,
+    class Generator4, class Generator5, class Generator6, class Generator7,
+    class Generator8, class Generator9>
+class CartesianProductHolder9 {
+ public:
+CartesianProductHolder9(const Generator1& g1, const Generator2& g2,
+    const Generator3& g3, const Generator4& g4, const Generator5& g5,
+    const Generator6& g6, const Generator7& g7, const Generator8& g8,
+    const Generator9& g9)
+      : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8),
+          g9_(g9) {}
+  template <typename T1, typename T2, typename T3, typename T4, typename T5,
+      typename T6, typename T7, typename T8, typename T9>
+  operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8,
+      T9> >() const {
+    return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8,
+        T9> >(
+        new CartesianProductGenerator9<T1, T2, T3, T4, T5, T6, T7, T8, T9>(
+        static_cast<ParamGenerator<T1> >(g1_),
+        static_cast<ParamGenerator<T2> >(g2_),
+        static_cast<ParamGenerator<T3> >(g3_),
+        static_cast<ParamGenerator<T4> >(g4_),
+        static_cast<ParamGenerator<T5> >(g5_),
+        static_cast<ParamGenerator<T6> >(g6_),
+        static_cast<ParamGenerator<T7> >(g7_),
+        static_cast<ParamGenerator<T8> >(g8_),
+        static_cast<ParamGenerator<T9> >(g9_)));
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const CartesianProductHolder9& other);
+
+  const Generator1 g1_;
+  const Generator2 g2_;
+  const Generator3 g3_;
+  const Generator4 g4_;
+  const Generator5 g5_;
+  const Generator6 g6_;
+  const Generator7 g7_;
+  const Generator8 g8_;
+  const Generator9 g9_;
+};  // class CartesianProductHolder9
+
+template <class Generator1, class Generator2, class Generator3,
+    class Generator4, class Generator5, class Generator6, class Generator7,
+    class Generator8, class Generator9, class Generator10>
+class CartesianProductHolder10 {
+ public:
+CartesianProductHolder10(const Generator1& g1, const Generator2& g2,
+    const Generator3& g3, const Generator4& g4, const Generator5& g5,
+    const Generator6& g6, const Generator7& g7, const Generator8& g8,
+    const Generator9& g9, const Generator10& g10)
+      : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8),
+          g9_(g9), g10_(g10) {}
+  template <typename T1, typename T2, typename T3, typename T4, typename T5,
+      typename T6, typename T7, typename T8, typename T9, typename T10>
+  operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8,
+      T9, T10> >() const {
+    return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8,
+        T9, T10> >(
+        new CartesianProductGenerator10<T1, T2, T3, T4, T5, T6, T7, T8, T9,
+            T10>(
+        static_cast<ParamGenerator<T1> >(g1_),
+        static_cast<ParamGenerator<T2> >(g2_),
+        static_cast<ParamGenerator<T3> >(g3_),
+        static_cast<ParamGenerator<T4> >(g4_),
+        static_cast<ParamGenerator<T5> >(g5_),
+        static_cast<ParamGenerator<T6> >(g6_),
+        static_cast<ParamGenerator<T7> >(g7_),
+        static_cast<ParamGenerator<T8> >(g8_),
+        static_cast<ParamGenerator<T9> >(g9_),
+        static_cast<ParamGenerator<T10> >(g10_)));
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const CartesianProductHolder10& other);
+
+  const Generator1 g1_;
+  const Generator2 g2_;
+  const Generator3 g3_;
+  const Generator4 g4_;
+  const Generator5 g5_;
+  const Generator6 g6_;
+  const Generator7 g7_;
+  const Generator8 g8_;
+  const Generator9 g9_;
+  const Generator10 g10_;
+};  // class CartesianProductHolder10
+
+# endif  // GTEST_HAS_COMBINE
+
+}  // namespace internal
+}  // namespace testing
+
+#endif  //  GTEST_HAS_PARAM_TEST
+
+#endif  // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_
diff --git a/google-breakpad/src/testing/gtest/include/gtest/internal/gtest-param-util-generated.h.pump b/google-breakpad/src/testing/gtest/include/gtest/internal/gtest-param-util-generated.h.pump
new file mode 100644
index 0000000..009206f
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/include/gtest/internal/gtest-param-util-generated.h.pump
@@ -0,0 +1,301 @@
+$$ -*- mode: c++; -*-
+$var n = 50  $$ Maximum length of Values arguments we want to support.
+$var maxtuple = 10  $$ Maximum number of Combine arguments we want to support.
+// Copyright 2008 Google Inc.
+// All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: vladl@google.com (Vlad Losev)
+
+// Type and function utilities for implementing parameterized tests.
+// This file is generated by a SCRIPT.  DO NOT EDIT BY HAND!
+//
+// Currently Google Test supports at most $n arguments in Values,
+// and at most $maxtuple arguments in Combine. Please contact
+// googletestframework@googlegroups.com if you need more.
+// Please note that the number of arguments to Combine is limited
+// by the maximum arity of the implementation of tr1::tuple which is
+// currently set at $maxtuple.
+
+#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_
+#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_
+
+// scripts/fuse_gtest.py depends on gtest's own header being #included
+// *unconditionally*.  Therefore these #includes cannot be moved
+// inside #if GTEST_HAS_PARAM_TEST.
+#include "gtest/internal/gtest-param-util.h"
+#include "gtest/internal/gtest-port.h"
+
+#if GTEST_HAS_PARAM_TEST
+
+namespace testing {
+
+// Forward declarations of ValuesIn(), which is implemented in
+// include/gtest/gtest-param-test.h.
+template <typename ForwardIterator>
+internal::ParamGenerator<
+  typename ::testing::internal::IteratorTraits<ForwardIterator>::value_type>
+ValuesIn(ForwardIterator begin, ForwardIterator end);
+
+template <typename T, size_t N>
+internal::ParamGenerator<T> ValuesIn(const T (&array)[N]);
+
+template <class Container>
+internal::ParamGenerator<typename Container::value_type> ValuesIn(
+    const Container& container);
+
+namespace internal {
+
+// Used in the Values() function to provide polymorphic capabilities.
+template <typename T1>
+class ValueArray1 {
+ public:
+  explicit ValueArray1(T1 v1) : v1_(v1) {}
+
+  template <typename T>
+  operator ParamGenerator<T>() const { return ValuesIn(&v1_, &v1_ + 1); }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ValueArray1& other);
+
+  const T1 v1_;
+};
+
+$range i 2..n
+$for i [[
+$range j 1..i
+
+template <$for j, [[typename T$j]]>
+class ValueArray$i {
+ public:
+  ValueArray$i($for j, [[T$j v$j]]) : $for j, [[v$(j)_(v$j)]] {}
+
+  template <typename T>
+  operator ParamGenerator<T>() const {
+    const T array[] = {$for j, [[static_cast<T>(v$(j)_)]]};
+    return ValuesIn(array);
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const ValueArray$i& other);
+
+$for j [[
+
+  const T$j v$(j)_;
+]]
+
+};
+
+]]
+
+# if GTEST_HAS_COMBINE
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
+// Generates values from the Cartesian product of values produced
+// by the argument generators.
+//
+$range i 2..maxtuple
+$for i [[
+$range j 1..i
+$range k 2..i
+
+template <$for j, [[typename T$j]]>
+class CartesianProductGenerator$i
+    : public ParamGeneratorInterface< ::std::tr1::tuple<$for j, [[T$j]]> > {
+ public:
+  typedef ::std::tr1::tuple<$for j, [[T$j]]> ParamType;
+
+  CartesianProductGenerator$i($for j, [[const ParamGenerator<T$j>& g$j]])
+      : $for j, [[g$(j)_(g$j)]] {}
+  virtual ~CartesianProductGenerator$i() {}
+
+  virtual ParamIteratorInterface<ParamType>* Begin() const {
+    return new Iterator(this, $for j, [[g$(j)_, g$(j)_.begin()]]);
+  }
+  virtual ParamIteratorInterface<ParamType>* End() const {
+    return new Iterator(this, $for j, [[g$(j)_, g$(j)_.end()]]);
+  }
+
+ private:
+  class Iterator : public ParamIteratorInterface<ParamType> {
+   public:
+    Iterator(const ParamGeneratorInterface<ParamType>* base, $for j, [[
+
+      const ParamGenerator<T$j>& g$j,
+      const typename ParamGenerator<T$j>::iterator& current$(j)]])
+        : base_(base),
+$for j, [[
+
+          begin$(j)_(g$j.begin()), end$(j)_(g$j.end()), current$(j)_(current$j)
+]]    {
+      ComputeCurrentValue();
+    }
+    virtual ~Iterator() {}
+
+    virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {
+      return base_;
+    }
+    // Advance should not be called on beyond-of-range iterators
+    // so no component iterators must be beyond end of range, either.
+    virtual void Advance() {
+      assert(!AtEnd());
+      ++current$(i)_;
+
+$for k [[
+      if (current$(i+2-k)_ == end$(i+2-k)_) {
+        current$(i+2-k)_ = begin$(i+2-k)_;
+        ++current$(i+2-k-1)_;
+      }
+
+]]
+      ComputeCurrentValue();
+    }
+    virtual ParamIteratorInterface<ParamType>* Clone() const {
+      return new Iterator(*this);
+    }
+    virtual const ParamType* Current() const { return &current_value_; }
+    virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {
+      // Having the same base generator guarantees that the other
+      // iterator is of the same type and we can downcast.
+      GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
+          << "The program attempted to compare iterators "
+          << "from different generators." << std::endl;
+      const Iterator* typed_other =
+          CheckedDowncastToActualType<const Iterator>(&other);
+      // We must report iterators equal if they both point beyond their
+      // respective ranges. That can happen in a variety of fashions,
+      // so we have to consult AtEnd().
+      return (AtEnd() && typed_other->AtEnd()) ||
+         ($for j  && [[
+
+          current$(j)_ == typed_other->current$(j)_
+]]);
+    }
+
+   private:
+    Iterator(const Iterator& other)
+        : base_(other.base_), $for j, [[
+
+        begin$(j)_(other.begin$(j)_),
+        end$(j)_(other.end$(j)_),
+        current$(j)_(other.current$(j)_)
+]] {
+      ComputeCurrentValue();
+    }
+
+    void ComputeCurrentValue() {
+      if (!AtEnd())
+        current_value_ = ParamType($for j, [[*current$(j)_]]);
+    }
+    bool AtEnd() const {
+      // We must report iterator past the end of the range when either of the
+      // component iterators has reached the end of its range.
+      return
+$for j  || [[
+
+          current$(j)_ == end$(j)_
+]];
+    }
+
+    // No implementation - assignment is unsupported.
+    void operator=(const Iterator& other);
+
+    const ParamGeneratorInterface<ParamType>* const base_;
+    // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
+    // current[i]_ is the actual traversing iterator.
+$for j [[
+
+    const typename ParamGenerator<T$j>::iterator begin$(j)_;
+    const typename ParamGenerator<T$j>::iterator end$(j)_;
+    typename ParamGenerator<T$j>::iterator current$(j)_;
+]]
+
+    ParamType current_value_;
+  };  // class CartesianProductGenerator$i::Iterator
+
+  // No implementation - assignment is unsupported.
+  void operator=(const CartesianProductGenerator$i& other);
+
+
+$for j [[
+  const ParamGenerator<T$j> g$(j)_;
+
+]]
+};  // class CartesianProductGenerator$i
+
+
+]]
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
+// Helper classes providing Combine() with polymorphic features. They allow
+// casting CartesianProductGeneratorN<T> to ParamGenerator<U> if T is
+// convertible to U.
+//
+$range i 2..maxtuple
+$for i [[
+$range j 1..i
+
+template <$for j, [[class Generator$j]]>
+class CartesianProductHolder$i {
+ public:
+CartesianProductHolder$i($for j, [[const Generator$j& g$j]])
+      : $for j, [[g$(j)_(g$j)]] {}
+  template <$for j, [[typename T$j]]>
+  operator ParamGenerator< ::std::tr1::tuple<$for j, [[T$j]]> >() const {
+    return ParamGenerator< ::std::tr1::tuple<$for j, [[T$j]]> >(
+        new CartesianProductGenerator$i<$for j, [[T$j]]>(
+$for j,[[
+
+        static_cast<ParamGenerator<T$j> >(g$(j)_)
+]]));
+  }
+
+ private:
+  // No implementation - assignment is unsupported.
+  void operator=(const CartesianProductHolder$i& other);
+
+
+$for j [[
+  const Generator$j g$(j)_;
+
+]]
+};  // class CartesianProductHolder$i
+
+]]
+
+# endif  // GTEST_HAS_COMBINE
+
+}  // namespace internal
+}  // namespace testing
+
+#endif  //  GTEST_HAS_PARAM_TEST
+
+#endif  // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_
diff --git a/google-breakpad/src/testing/gtest/include/gtest/internal/gtest-param-util.h b/google-breakpad/src/testing/gtest/include/gtest/internal/gtest-param-util.h
new file mode 100644
index 0000000..0ef9718
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/include/gtest/internal/gtest-param-util.h
@@ -0,0 +1,619 @@
+// Copyright 2008 Google Inc.
+// All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: vladl@google.com (Vlad Losev)
+
+// Type and function utilities for implementing parameterized tests.
+
+#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_
+#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_
+
+#include <iterator>
+#include <utility>
+#include <vector>
+
+// scripts/fuse_gtest.py depends on gtest's own header being #included
+// *unconditionally*.  Therefore these #includes cannot be moved
+// inside #if GTEST_HAS_PARAM_TEST.
+#include "gtest/internal/gtest-internal.h"
+#include "gtest/internal/gtest-linked_ptr.h"
+#include "gtest/internal/gtest-port.h"
+#include "gtest/gtest-printers.h"
+
+#if GTEST_HAS_PARAM_TEST
+
+namespace testing {
+namespace internal {
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
+// Outputs a message explaining invalid registration of different
+// fixture class for the same test case. This may happen when
+// TEST_P macro is used to define two tests with the same name
+// but in different namespaces.
+GTEST_API_ void ReportInvalidTestCaseType(const char* test_case_name,
+                                          const char* file, int line);
+
+template <typename> class ParamGeneratorInterface;
+template <typename> class ParamGenerator;
+
+// Interface for iterating over elements provided by an implementation
+// of ParamGeneratorInterface<T>.
+template <typename T>
+class ParamIteratorInterface {
+ public:
+  virtual ~ParamIteratorInterface() {}
+  // A pointer to the base generator instance.
+  // Used only for the purposes of iterator comparison
+  // to make sure that two iterators belong to the same generator.
+  virtual const ParamGeneratorInterface<T>* BaseGenerator() const = 0;
+  // Advances iterator to point to the next element
+  // provided by the generator. The caller is responsible
+  // for not calling Advance() on an iterator equal to
+  // BaseGenerator()->End().
+  virtual void Advance() = 0;
+  // Clones the iterator object. Used for implementing copy semantics
+  // of ParamIterator<T>.
+  virtual ParamIteratorInterface* Clone() const = 0;
+  // Dereferences the current iterator and provides (read-only) access
+  // to the pointed value. It is the caller's responsibility not to call
+  // Current() on an iterator equal to BaseGenerator()->End().
+  // Used for implementing ParamGenerator<T>::operator*().
+  virtual const T* Current() const = 0;
+  // Determines whether the given iterator and other point to the same
+  // element in the sequence generated by the generator.
+  // Used for implementing ParamGenerator<T>::operator==().
+  virtual bool Equals(const ParamIteratorInterface& other) const = 0;
+};
+
+// Class iterating over elements provided by an implementation of
+// ParamGeneratorInterface<T>. It wraps ParamIteratorInterface<T>
+// and implements the const forward iterator concept.
+template <typename T>
+class ParamIterator {
+ public:
+  typedef T value_type;
+  typedef const T& reference;
+  typedef ptrdiff_t difference_type;
+
+  // ParamIterator assumes ownership of the impl_ pointer.
+  ParamIterator(const ParamIterator& other) : impl_(other.impl_->Clone()) {}
+  ParamIterator& operator=(const ParamIterator& other) {
+    if (this != &other)
+      impl_.reset(other.impl_->Clone());
+    return *this;
+  }
+
+  const T& operator*() const { return *impl_->Current(); }
+  const T* operator->() const { return impl_->Current(); }
+  // Prefix version of operator++.
+  ParamIterator& operator++() {
+    impl_->Advance();
+    return *this;
+  }
+  // Postfix version of operator++.
+  ParamIterator operator++(int /*unused*/) {
+    ParamIteratorInterface<T>* clone = impl_->Clone();
+    impl_->Advance();
+    return ParamIterator(clone);
+  }
+  bool operator==(const ParamIterator& other) const {
+    return impl_.get() == other.impl_.get() || impl_->Equals(*other.impl_);
+  }
+  bool operator!=(const ParamIterator& other) const {
+    return !(*this == other);
+  }
+
+ private:
+  friend class ParamGenerator<T>;
+  explicit ParamIterator(ParamIteratorInterface<T>* impl) : impl_(impl) {}
+  scoped_ptr<ParamIteratorInterface<T> > impl_;
+};
+
+// ParamGeneratorInterface<T> is the binary interface to access generators
+// defined in other translation units.
+template <typename T>
+class ParamGeneratorInterface {
+ public:
+  typedef T ParamType;
+
+  virtual ~ParamGeneratorInterface() {}
+
+  // Generator interface definition
+  virtual ParamIteratorInterface<T>* Begin() const = 0;
+  virtual ParamIteratorInterface<T>* End() const = 0;
+};
+
+// Wraps ParamGeneratorInterface<T> and provides general generator syntax
+// compatible with the STL Container concept.
+// This class implements copy initialization semantics and the contained
+// ParamGeneratorInterface<T> instance is shared among all copies
+// of the original object. This is possible because that instance is immutable.
+template<typename T>
+class ParamGenerator {
+ public:
+  typedef ParamIterator<T> iterator;
+
+  explicit ParamGenerator(ParamGeneratorInterface<T>* impl) : impl_(impl) {}
+  ParamGenerator(const ParamGenerator& other) : impl_(other.impl_) {}
+
+  ParamGenerator& operator=(const ParamGenerator& other) {
+    impl_ = other.impl_;
+    return *this;
+  }
+
+  iterator begin() const { return iterator(impl_->Begin()); }
+  iterator end() const { return iterator(impl_->End()); }
+
+ private:
+  linked_ptr<const ParamGeneratorInterface<T> > impl_;
+};
+
+// Generates values from a range of two comparable values. Can be used to
+// generate sequences of user-defined types that implement operator+() and
+// operator<().
+// This class is used in the Range() function.
+template <typename T, typename IncrementT>
+class RangeGenerator : public ParamGeneratorInterface<T> {
+ public:
+  RangeGenerator(T begin, T end, IncrementT step)
+      : begin_(begin), end_(end),
+        step_(step), end_index_(CalculateEndIndex(begin, end, step)) {}
+  virtual ~RangeGenerator() {}
+
+  virtual ParamIteratorInterface<T>* Begin() const {
+    return new Iterator(this, begin_, 0, step_);
+  }
+  virtual ParamIteratorInterface<T>* End() const {
+    return new Iterator(this, end_, end_index_, step_);
+  }
+
+ private:
+  class Iterator : public ParamIteratorInterface<T> {
+   public:
+    Iterator(const ParamGeneratorInterface<T>* base, T value, int index,
+             IncrementT step)
+        : base_(base), value_(value), index_(index), step_(step) {}
+    virtual ~Iterator() {}
+
+    virtual const ParamGeneratorInterface<T>* BaseGenerator() const {
+      return base_;
+    }
+    virtual void Advance() {
+      value_ = value_ + step_;
+      index_++;
+    }
+    virtual ParamIteratorInterface<T>* Clone() const {
+      return new Iterator(*this);
+    }
+    virtual const T* Current() const { return &value_; }
+    virtual bool Equals(const ParamIteratorInterface<T>& other) const {
+      // Having the same base generator guarantees that the other
+      // iterator is of the same type and we can downcast.
+      GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
+          << "The program attempted to compare iterators "
+          << "from different generators." << std::endl;
+      const int other_index =
+          CheckedDowncastToActualType<const Iterator>(&other)->index_;
+      return index_ == other_index;
+    }
+
+   private:
+    Iterator(const Iterator& other)
+        : ParamIteratorInterface<T>(),
+          base_(other.base_), value_(other.value_), index_(other.index_),
+          step_(other.step_) {}
+
+    // No implementation - assignment is unsupported.
+    void operator=(const Iterator& other);
+
+    const ParamGeneratorInterface<T>* const base_;
+    T value_;
+    int index_;
+    const IncrementT step_;
+  };  // class RangeGenerator::Iterator
+
+  static int CalculateEndIndex(const T& begin,
+                               const T& end,
+                               const IncrementT& step) {
+    int end_index = 0;
+    for (T i = begin; i < end; i = i + step)
+      end_index++;
+    return end_index;
+  }
+
+  // No implementation - assignment is unsupported.
+  void operator=(const RangeGenerator& other);
+
+  const T begin_;
+  const T end_;
+  const IncrementT step_;
+  // The index for the end() iterator. All the elements in the generated
+  // sequence are indexed (0-based) to aid iterator comparison.
+  const int end_index_;
+};  // class RangeGenerator
+
+
+// Generates values from a pair of STL-style iterators. Used in the
+// ValuesIn() function. The elements are copied from the source range
+// since the source can be located on the stack, and the generator
+// is likely to persist beyond that stack frame.
+template <typename T>
+class ValuesInIteratorRangeGenerator : public ParamGeneratorInterface<T> {
+ public:
+  template <typename ForwardIterator>
+  ValuesInIteratorRangeGenerator(ForwardIterator begin, ForwardIterator end)
+      : container_(begin, end) {}
+  virtual ~ValuesInIteratorRangeGenerator() {}
+
+  virtual ParamIteratorInterface<T>* Begin() const {
+    return new Iterator(this, container_.begin());
+  }
+  virtual ParamIteratorInterface<T>* End() const {
+    return new Iterator(this, container_.end());
+  }
+
+ private:
+  typedef typename ::std::vector<T> ContainerType;
+
+  class Iterator : public ParamIteratorInterface<T> {
+   public:
+    Iterator(const ParamGeneratorInterface<T>* base,
+             typename ContainerType::const_iterator iterator)
+        : base_(base), iterator_(iterator) {}
+    virtual ~Iterator() {}
+
+    virtual const ParamGeneratorInterface<T>* BaseGenerator() const {
+      return base_;
+    }
+    virtual void Advance() {
+      ++iterator_;
+      value_.reset();
+    }
+    virtual ParamIteratorInterface<T>* Clone() const {
+      return new Iterator(*this);
+    }
+    // We need to use cached value referenced by iterator_ because *iterator_
+    // can return a temporary object (and of type other then T), so just
+    // having "return &*iterator_;" doesn't work.
+    // value_ is updated here and not in Advance() because Advance()
+    // can advance iterator_ beyond the end of the range, and we cannot
+    // detect that fact. The client code, on the other hand, is
+    // responsible for not calling Current() on an out-of-range iterator.
+    virtual const T* Current() const {
+      if (value_.get() == NULL)
+        value_.reset(new T(*iterator_));
+      return value_.get();
+    }
+    virtual bool Equals(const ParamIteratorInterface<T>& other) const {
+      // Having the same base generator guarantees that the other
+      // iterator is of the same type and we can downcast.
+      GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
+          << "The program attempted to compare iterators "
+          << "from different generators." << std::endl;
+      return iterator_ ==
+          CheckedDowncastToActualType<const Iterator>(&other)->iterator_;
+    }
+
+   private:
+    Iterator(const Iterator& other)
+          // The explicit constructor call suppresses a false warning
+          // emitted by gcc when supplied with the -Wextra option.
+        : ParamIteratorInterface<T>(),
+          base_(other.base_),
+          iterator_(other.iterator_) {}
+
+    const ParamGeneratorInterface<T>* const base_;
+    typename ContainerType::const_iterator iterator_;
+    // A cached value of *iterator_. We keep it here to allow access by
+    // pointer in the wrapping iterator's operator->().
+    // value_ needs to be mutable to be accessed in Current().
+    // Use of scoped_ptr helps manage cached value's lifetime,
+    // which is bound by the lifespan of the iterator itself.
+    mutable scoped_ptr<const T> value_;
+  };  // class ValuesInIteratorRangeGenerator::Iterator
+
+  // No implementation - assignment is unsupported.
+  void operator=(const ValuesInIteratorRangeGenerator& other);
+
+  const ContainerType container_;
+};  // class ValuesInIteratorRangeGenerator
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
+// Stores a parameter value and later creates tests parameterized with that
+// value.
+template <class TestClass>
+class ParameterizedTestFactory : public TestFactoryBase {
+ public:
+  typedef typename TestClass::ParamType ParamType;
+  explicit ParameterizedTestFactory(ParamType parameter) :
+      parameter_(parameter) {}
+  virtual Test* CreateTest() {
+    TestClass::SetParam(&parameter_);
+    return new TestClass();
+  }
+
+ private:
+  const ParamType parameter_;
+
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestFactory);
+};
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
+// TestMetaFactoryBase is a base class for meta-factories that create
+// test factories for passing into MakeAndRegisterTestInfo function.
+template <class ParamType>
+class TestMetaFactoryBase {
+ public:
+  virtual ~TestMetaFactoryBase() {}
+
+  virtual TestFactoryBase* CreateTestFactory(ParamType parameter) = 0;
+};
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
+// TestMetaFactory creates test factories for passing into
+// MakeAndRegisterTestInfo function. Since MakeAndRegisterTestInfo receives
+// ownership of test factory pointer, same factory object cannot be passed
+// into that method twice. But ParameterizedTestCaseInfo is going to call
+// it for each Test/Parameter value combination. Thus it needs meta factory
+// creator class.
+template <class TestCase>
+class TestMetaFactory
+    : public TestMetaFactoryBase<typename TestCase::ParamType> {
+ public:
+  typedef typename TestCase::ParamType ParamType;
+
+  TestMetaFactory() {}
+
+  virtual TestFactoryBase* CreateTestFactory(ParamType parameter) {
+    return new ParameterizedTestFactory<TestCase>(parameter);
+  }
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(TestMetaFactory);
+};
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
+// ParameterizedTestCaseInfoBase is a generic interface
+// to ParameterizedTestCaseInfo classes. ParameterizedTestCaseInfoBase
+// accumulates test information provided by TEST_P macro invocations
+// and generators provided by INSTANTIATE_TEST_CASE_P macro invocations
+// and uses that information to register all resulting test instances
+// in RegisterTests method. The ParameterizeTestCaseRegistry class holds
+// a collection of pointers to the ParameterizedTestCaseInfo objects
+// and calls RegisterTests() on each of them when asked.
+class ParameterizedTestCaseInfoBase {
+ public:
+  virtual ~ParameterizedTestCaseInfoBase() {}
+
+  // Base part of test case name for display purposes.
+  virtual const string& GetTestCaseName() const = 0;
+  // Test case id to verify identity.
+  virtual TypeId GetTestCaseTypeId() const = 0;
+  // UnitTest class invokes this method to register tests in this
+  // test case right before running them in RUN_ALL_TESTS macro.
+  // This method should not be called more then once on any single
+  // instance of a ParameterizedTestCaseInfoBase derived class.
+  virtual void RegisterTests() = 0;
+
+ protected:
+  ParameterizedTestCaseInfoBase() {}
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestCaseInfoBase);
+};
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
+// ParameterizedTestCaseInfo accumulates tests obtained from TEST_P
+// macro invocations for a particular test case and generators
+// obtained from INSTANTIATE_TEST_CASE_P macro invocations for that
+// test case. It registers tests with all values generated by all
+// generators when asked.
+template <class TestCase>
+class ParameterizedTestCaseInfo : public ParameterizedTestCaseInfoBase {
+ public:
+  // ParamType and GeneratorCreationFunc are private types but are required
+  // for declarations of public methods AddTestPattern() and
+  // AddTestCaseInstantiation().
+  typedef typename TestCase::ParamType ParamType;
+  // A function that returns an instance of appropriate generator type.
+  typedef ParamGenerator<ParamType>(GeneratorCreationFunc)();
+
+  explicit ParameterizedTestCaseInfo(const char* name)
+      : test_case_name_(name) {}
+
+  // Test case base name for display purposes.
+  virtual const string& GetTestCaseName() const { return test_case_name_; }
+  // Test case id to verify identity.
+  virtual TypeId GetTestCaseTypeId() const { return GetTypeId<TestCase>(); }
+  // TEST_P macro uses AddTestPattern() to record information
+  // about a single test in a LocalTestInfo structure.
+  // test_case_name is the base name of the test case (without invocation
+  // prefix). test_base_name is the name of an individual test without
+  // parameter index. For the test SequenceA/FooTest.DoBar/1 FooTest is
+  // test case base name and DoBar is test base name.
+  void AddTestPattern(const char* test_case_name,
+                      const char* test_base_name,
+                      TestMetaFactoryBase<ParamType>* meta_factory) {
+    tests_.push_back(linked_ptr<TestInfo>(new TestInfo(test_case_name,
+                                                       test_base_name,
+                                                       meta_factory)));
+  }
+  // INSTANTIATE_TEST_CASE_P macro uses AddGenerator() to record information
+  // about a generator.
+  int AddTestCaseInstantiation(const string& instantiation_name,
+                               GeneratorCreationFunc* func,
+                               const char* /* file */,
+                               int /* line */) {
+    instantiations_.push_back(::std::make_pair(instantiation_name, func));
+    return 0;  // Return value used only to run this method in namespace scope.
+  }
+  // UnitTest class invokes this method to register tests in this test case
+  // test cases right before running tests in RUN_ALL_TESTS macro.
+  // This method should not be called more then once on any single
+  // instance of a ParameterizedTestCaseInfoBase derived class.
+  // UnitTest has a guard to prevent from calling this method more then once.
+  virtual void RegisterTests() {
+    for (typename TestInfoContainer::iterator test_it = tests_.begin();
+         test_it != tests_.end(); ++test_it) {
+      linked_ptr<TestInfo> test_info = *test_it;
+      for (typename InstantiationContainer::iterator gen_it =
+               instantiations_.begin(); gen_it != instantiations_.end();
+               ++gen_it) {
+        const string& instantiation_name = gen_it->first;
+        ParamGenerator<ParamType> generator((*gen_it->second)());
+
+        Message test_case_name_stream;
+        if ( !instantiation_name.empty() )
+          test_case_name_stream << instantiation_name << "/";
+        test_case_name_stream << test_info->test_case_base_name;
+
+        int i = 0;
+        for (typename ParamGenerator<ParamType>::iterator param_it =
+                 generator.begin();
+             param_it != generator.end(); ++param_it, ++i) {
+          Message test_name_stream;
+          test_name_stream << test_info->test_base_name << "/" << i;
+          MakeAndRegisterTestInfo(
+              test_case_name_stream.GetString().c_str(),
+              test_name_stream.GetString().c_str(),
+              NULL,  // No type parameter.
+              PrintToString(*param_it).c_str(),
+              GetTestCaseTypeId(),
+              TestCase::SetUpTestCase,
+              TestCase::TearDownTestCase,
+              test_info->test_meta_factory->CreateTestFactory(*param_it));
+        }  // for param_it
+      }  // for gen_it
+    }  // for test_it
+  }  // RegisterTests
+
+ private:
+  // LocalTestInfo structure keeps information about a single test registered
+  // with TEST_P macro.
+  struct TestInfo {
+    TestInfo(const char* a_test_case_base_name,
+             const char* a_test_base_name,
+             TestMetaFactoryBase<ParamType>* a_test_meta_factory) :
+        test_case_base_name(a_test_case_base_name),
+        test_base_name(a_test_base_name),
+        test_meta_factory(a_test_meta_factory) {}
+
+    const string test_case_base_name;
+    const string test_base_name;
+    const scoped_ptr<TestMetaFactoryBase<ParamType> > test_meta_factory;
+  };
+  typedef ::std::vector<linked_ptr<TestInfo> > TestInfoContainer;
+  // Keeps pairs of <Instantiation name, Sequence generator creation function>
+  // received from INSTANTIATE_TEST_CASE_P macros.
+  typedef ::std::vector<std::pair<string, GeneratorCreationFunc*> >
+      InstantiationContainer;
+
+  const string test_case_name_;
+  TestInfoContainer tests_;
+  InstantiationContainer instantiations_;
+
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestCaseInfo);
+};  // class ParameterizedTestCaseInfo
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
+// ParameterizedTestCaseRegistry contains a map of ParameterizedTestCaseInfoBase
+// classes accessed by test case names. TEST_P and INSTANTIATE_TEST_CASE_P
+// macros use it to locate their corresponding ParameterizedTestCaseInfo
+// descriptors.
+class ParameterizedTestCaseRegistry {
+ public:
+  ParameterizedTestCaseRegistry() {}
+  ~ParameterizedTestCaseRegistry() {
+    for (TestCaseInfoContainer::iterator it = test_case_infos_.begin();
+         it != test_case_infos_.end(); ++it) {
+      delete *it;
+    }
+  }
+
+  // Looks up or creates and returns a structure containing information about
+  // tests and instantiations of a particular test case.
+  template <class TestCase>
+  ParameterizedTestCaseInfo<TestCase>* GetTestCasePatternHolder(
+      const char* test_case_name,
+      const char* file,
+      int line) {
+    ParameterizedTestCaseInfo<TestCase>* typed_test_info = NULL;
+    for (TestCaseInfoContainer::iterator it = test_case_infos_.begin();
+         it != test_case_infos_.end(); ++it) {
+      if ((*it)->GetTestCaseName() == test_case_name) {
+        if ((*it)->GetTestCaseTypeId() != GetTypeId<TestCase>()) {
+          // Complain about incorrect usage of Google Test facilities
+          // and terminate the program since we cannot guaranty correct
+          // test case setup and tear-down in this case.
+          ReportInvalidTestCaseType(test_case_name,  file, line);
+          posix::Abort();
+        } else {
+          // At this point we are sure that the object we found is of the same
+          // type we are looking for, so we downcast it to that type
+          // without further checks.
+          typed_test_info = CheckedDowncastToActualType<
+              ParameterizedTestCaseInfo<TestCase> >(*it);
+        }
+        break;
+      }
+    }
+    if (typed_test_info == NULL) {
+      typed_test_info = new ParameterizedTestCaseInfo<TestCase>(test_case_name);
+      test_case_infos_.push_back(typed_test_info);
+    }
+    return typed_test_info;
+  }
+  void RegisterTests() {
+    for (TestCaseInfoContainer::iterator it = test_case_infos_.begin();
+         it != test_case_infos_.end(); ++it) {
+      (*it)->RegisterTests();
+    }
+  }
+
+ private:
+  typedef ::std::vector<ParameterizedTestCaseInfoBase*> TestCaseInfoContainer;
+
+  TestCaseInfoContainer test_case_infos_;
+
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestCaseRegistry);
+};
+
+}  // namespace internal
+}  // namespace testing
+
+#endif  //  GTEST_HAS_PARAM_TEST
+
+#endif  // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_
diff --git a/google-breakpad/src/testing/gtest/include/gtest/internal/gtest-port.h b/google-breakpad/src/testing/gtest/include/gtest/internal/gtest-port.h
new file mode 100644
index 0000000..08703e3
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/include/gtest/internal/gtest-port.h
@@ -0,0 +1,1851 @@
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Authors: wan@google.com (Zhanyong Wan)
+//
+// Low-level types and utilities for porting Google Test to various
+// platforms.  They are subject to change without notice.  DO NOT USE
+// THEM IN USER CODE.
+
+#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_
+#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_
+
+// The user can define the following macros in the build script to
+// control Google Test's behavior.  If the user doesn't define a macro
+// in this list, Google Test will define it.
+//
+//   GTEST_HAS_CLONE          - Define it to 1/0 to indicate that clone(2)
+//                              is/isn't available.
+//   GTEST_HAS_EXCEPTIONS     - Define it to 1/0 to indicate that exceptions
+//                              are enabled.
+//   GTEST_HAS_GLOBAL_STRING  - Define it to 1/0 to indicate that ::string
+//                              is/isn't available (some systems define
+//                              ::string, which is different to std::string).
+//   GTEST_HAS_GLOBAL_WSTRING - Define it to 1/0 to indicate that ::string
+//                              is/isn't available (some systems define
+//                              ::wstring, which is different to std::wstring).
+//   GTEST_HAS_POSIX_RE       - Define it to 1/0 to indicate that POSIX regular
+//                              expressions are/aren't available.
+//   GTEST_HAS_PTHREAD        - Define it to 1/0 to indicate that <pthread.h>
+//                              is/isn't available.
+//   GTEST_HAS_RTTI           - Define it to 1/0 to indicate that RTTI is/isn't
+//                              enabled.
+//   GTEST_HAS_STD_WSTRING    - Define it to 1/0 to indicate that
+//                              std::wstring does/doesn't work (Google Test can
+//                              be used where std::wstring is unavailable).
+//   GTEST_HAS_TR1_TUPLE      - Define it to 1/0 to indicate tr1::tuple
+//                              is/isn't available.
+//   GTEST_HAS_SEH            - Define it to 1/0 to indicate whether the
+//                              compiler supports Microsoft's "Structured
+//                              Exception Handling".
+//   GTEST_HAS_STREAM_REDIRECTION
+//                            - Define it to 1/0 to indicate whether the
+//                              platform supports I/O stream redirection using
+//                              dup() and dup2().
+//   GTEST_USE_OWN_TR1_TUPLE  - Define it to 1/0 to indicate whether Google
+//                              Test's own tr1 tuple implementation should be
+//                              used.  Unused when the user sets
+//                              GTEST_HAS_TR1_TUPLE to 0.
+//   GTEST_LINKED_AS_SHARED_LIBRARY
+//                            - Define to 1 when compiling tests that use
+//                              Google Test as a shared library (known as
+//                              DLL on Windows).
+//   GTEST_CREATE_SHARED_LIBRARY
+//                            - Define to 1 when compiling Google Test itself
+//                              as a shared library.
+
+// This header defines the following utilities:
+//
+// Macros indicating the current platform (defined to 1 if compiled on
+// the given platform; otherwise undefined):
+//   GTEST_OS_AIX      - IBM AIX
+//   GTEST_OS_CYGWIN   - Cygwin
+//   GTEST_OS_HPUX     - HP-UX
+//   GTEST_OS_LINUX    - Linux
+//     GTEST_OS_LINUX_ANDROID - Google Android
+//   GTEST_OS_MAC      - Mac OS X
+//   GTEST_OS_NACL     - Google Native Client (NaCl)
+//   GTEST_OS_OPENBSD  - OpenBSD
+//   GTEST_OS_QNX      - QNX
+//   GTEST_OS_SOLARIS  - Sun Solaris
+//   GTEST_OS_SYMBIAN  - Symbian
+//   GTEST_OS_WINDOWS  - Windows (Desktop, MinGW, or Mobile)
+//     GTEST_OS_WINDOWS_DESKTOP  - Windows Desktop
+//     GTEST_OS_WINDOWS_MINGW    - MinGW
+//     GTEST_OS_WINDOWS_MOBILE   - Windows Mobile
+//   GTEST_OS_ZOS      - z/OS
+//
+// Among the platforms, Cygwin, Linux, Max OS X, and Windows have the
+// most stable support.  Since core members of the Google Test project
+// don't have access to other platforms, support for them may be less
+// stable.  If you notice any problems on your platform, please notify
+// googletestframework@googlegroups.com (patches for fixing them are
+// even more welcome!).
+//
+// Note that it is possible that none of the GTEST_OS_* macros are defined.
+//
+// Macros indicating available Google Test features (defined to 1 if
+// the corresponding feature is supported; otherwise undefined):
+//   GTEST_HAS_COMBINE      - the Combine() function (for value-parameterized
+//                            tests)
+//   GTEST_HAS_DEATH_TEST   - death tests
+//   GTEST_HAS_PARAM_TEST   - value-parameterized tests
+//   GTEST_HAS_TYPED_TEST   - typed tests
+//   GTEST_HAS_TYPED_TEST_P - type-parameterized tests
+//   GTEST_USES_POSIX_RE    - enhanced POSIX regex is used. Do not confuse with
+//                            GTEST_HAS_POSIX_RE (see above) which users can
+//                            define themselves.
+//   GTEST_USES_SIMPLE_RE   - our own simple regex is used;
+//                            the above two are mutually exclusive.
+//   GTEST_CAN_COMPARE_NULL - accepts untyped NULL in EXPECT_EQ().
+//
+// Macros for basic C++ coding:
+//   GTEST_AMBIGUOUS_ELSE_BLOCKER_ - for disabling a gcc warning.
+//   GTEST_ATTRIBUTE_UNUSED_  - declares that a class' instances or a
+//                              variable don't have to be used.
+//   GTEST_DISALLOW_ASSIGN_   - disables operator=.
+//   GTEST_DISALLOW_COPY_AND_ASSIGN_ - disables copy ctor and operator=.
+//   GTEST_MUST_USE_RESULT_   - declares that a function's result must be used.
+//
+// Synchronization:
+//   Mutex, MutexLock, ThreadLocal, GetThreadCount()
+//                  - synchronization primitives.
+//   GTEST_IS_THREADSAFE - defined to 1 to indicate that the above
+//                         synchronization primitives have real implementations
+//                         and Google Test is thread-safe; or 0 otherwise.
+//
+// Template meta programming:
+//   is_pointer     - as in TR1; needed on Symbian and IBM XL C/C++ only.
+//   IteratorTraits - partial implementation of std::iterator_traits, which
+//                    is not available in libCstd when compiled with Sun C++.
+//
+// Smart pointers:
+//   scoped_ptr     - as in TR2.
+//
+// Regular expressions:
+//   RE             - a simple regular expression class using the POSIX
+//                    Extended Regular Expression syntax on UNIX-like
+//                    platforms, or a reduced regular exception syntax on
+//                    other platforms, including Windows.
+//
+// Logging:
+//   GTEST_LOG_()   - logs messages at the specified severity level.
+//   LogToStderr()  - directs all log messages to stderr.
+//   FlushInfoLog() - flushes informational log messages.
+//
+// Stdout and stderr capturing:
+//   CaptureStdout()     - starts capturing stdout.
+//   GetCapturedStdout() - stops capturing stdout and returns the captured
+//                         string.
+//   CaptureStderr()     - starts capturing stderr.
+//   GetCapturedStderr() - stops capturing stderr and returns the captured
+//                         string.
+//
+// Integer types:
+//   TypeWithSize   - maps an integer to a int type.
+//   Int32, UInt32, Int64, UInt64, TimeInMillis
+//                  - integers of known sizes.
+//   BiggestInt     - the biggest signed integer type.
+//
+// Command-line utilities:
+//   GTEST_FLAG()       - references a flag.
+//   GTEST_DECLARE_*()  - declares a flag.
+//   GTEST_DEFINE_*()   - defines a flag.
+//   GetInjectableArgvs() - returns the command line as a vector of strings.
+//
+// Environment variable utilities:
+//   GetEnv()             - gets the value of an environment variable.
+//   BoolFromGTestEnv()   - parses a bool environment variable.
+//   Int32FromGTestEnv()  - parses an Int32 environment variable.
+//   StringFromGTestEnv() - parses a string environment variable.
+
+#include <ctype.h>   // for isspace, etc
+#include <stddef.h>  // for ptrdiff_t
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#ifndef _WIN32_WCE
+# include <sys/types.h>
+# include <sys/stat.h>
+#endif  // !_WIN32_WCE
+
+#include <iostream>  // NOLINT
+#include <sstream>  // NOLINT
+#include <string>  // NOLINT
+
+#define GTEST_DEV_EMAIL_ "googletestframework@@googlegroups.com"
+#define GTEST_FLAG_PREFIX_ "gtest_"
+#define GTEST_FLAG_PREFIX_DASH_ "gtest-"
+#define GTEST_FLAG_PREFIX_UPPER_ "GTEST_"
+#define GTEST_NAME_ "Google Test"
+#define GTEST_PROJECT_URL_ "http://code.google.com/p/googletest/"
+
+// Determines the version of gcc that is used to compile this.
+#ifdef __GNUC__
+// 40302 means version 4.3.2.
+# define GTEST_GCC_VER_ \
+    (__GNUC__*10000 + __GNUC_MINOR__*100 + __GNUC_PATCHLEVEL__)
+#endif  // __GNUC__
+
+// Determines the platform on which Google Test is compiled.
+#ifdef __CYGWIN__
+# define GTEST_OS_CYGWIN 1
+#elif defined __SYMBIAN32__
+# define GTEST_OS_SYMBIAN 1
+#elif defined _WIN32
+# define GTEST_OS_WINDOWS 1
+# ifdef _WIN32_WCE
+#  define GTEST_OS_WINDOWS_MOBILE 1
+# elif defined(__MINGW__) || defined(__MINGW32__)
+#  define GTEST_OS_WINDOWS_MINGW 1
+# else
+#  define GTEST_OS_WINDOWS_DESKTOP 1
+# endif  // _WIN32_WCE
+#elif defined __APPLE__
+# define GTEST_OS_MAC 1
+#elif defined __linux__
+# define GTEST_OS_LINUX 1
+# ifdef ANDROID
+#  define GTEST_OS_LINUX_ANDROID 1
+# endif  // ANDROID
+#elif defined __MVS__
+# define GTEST_OS_ZOS 1
+#elif defined(__sun) && defined(__SVR4)
+# define GTEST_OS_SOLARIS 1
+#elif defined(_AIX)
+# define GTEST_OS_AIX 1
+#elif defined(__hpux)
+# define GTEST_OS_HPUX 1
+#elif defined __native_client__
+# define GTEST_OS_NACL 1
+#elif defined __OpenBSD__
+# define GTEST_OS_OPENBSD 1
+#elif defined __QNX__
+# define GTEST_OS_QNX 1
+#endif  // __CYGWIN__
+
+// Brings in definitions for functions used in the testing::internal::posix
+// namespace (read, write, close, chdir, isatty, stat). We do not currently
+// use them on Windows Mobile.
+#if !GTEST_OS_WINDOWS
+// This assumes that non-Windows OSes provide unistd.h. For OSes where this
+// is not the case, we need to include headers that provide the functions
+// mentioned above.
+# include <unistd.h>
+# if !GTEST_OS_NACL
+// TODO(vladl@google.com): Remove this condition when Native Client SDK adds
+// strings.h (tracked in
+// http://code.google.com/p/nativeclient/issues/detail?id=1175).
+#  include <strings.h>  // Native Client doesn't provide strings.h.
+# endif
+#elif !GTEST_OS_WINDOWS_MOBILE
+# include <direct.h>
+# include <io.h>
+#endif
+
+// Defines this to true iff Google Test can use POSIX regular expressions.
+#ifndef GTEST_HAS_POSIX_RE
+# define GTEST_HAS_POSIX_RE (!GTEST_OS_WINDOWS)
+#endif
+
+#if GTEST_HAS_POSIX_RE
+
+// On some platforms, <regex.h> needs someone to define size_t, and
+// won't compile otherwise.  We can #include it here as we already
+// included <stdlib.h>, which is guaranteed to define size_t through
+// <stddef.h>.
+# include <regex.h>  // NOLINT
+
+# define GTEST_USES_POSIX_RE 1
+
+#elif GTEST_OS_WINDOWS
+
+// <regex.h> is not available on Windows.  Use our own simple regex
+// implementation instead.
+# define GTEST_USES_SIMPLE_RE 1
+
+#else
+
+// <regex.h> may not be available on this platform.  Use our own
+// simple regex implementation instead.
+# define GTEST_USES_SIMPLE_RE 1
+
+#endif  // GTEST_HAS_POSIX_RE
+
+#ifndef GTEST_HAS_EXCEPTIONS
+// The user didn't tell us whether exceptions are enabled, so we need
+// to figure it out.
+# if defined(_MSC_VER) || defined(__BORLANDC__)
+// MSVC's and C++Builder's implementations of the STL use the _HAS_EXCEPTIONS
+// macro to enable exceptions, so we'll do the same.
+// Assumes that exceptions are enabled by default.
+#  ifndef _HAS_EXCEPTIONS
+#   define _HAS_EXCEPTIONS 1
+#  endif  // _HAS_EXCEPTIONS
+#  define GTEST_HAS_EXCEPTIONS _HAS_EXCEPTIONS
+# elif defined(__GNUC__) && __EXCEPTIONS
+// gcc defines __EXCEPTIONS to 1 iff exceptions are enabled.
+#  define GTEST_HAS_EXCEPTIONS 1
+# elif defined(__SUNPRO_CC)
+// Sun Pro CC supports exceptions.  However, there is no compile-time way of
+// detecting whether they are enabled or not.  Therefore, we assume that
+// they are enabled unless the user tells us otherwise.
+#  define GTEST_HAS_EXCEPTIONS 1
+# elif defined(__IBMCPP__) && __EXCEPTIONS
+// xlC defines __EXCEPTIONS to 1 iff exceptions are enabled.
+#  define GTEST_HAS_EXCEPTIONS 1
+# elif defined(__HP_aCC)
+// Exception handling is in effect by default in HP aCC compiler. It has to
+// be turned of by +noeh compiler option if desired.
+#  define GTEST_HAS_EXCEPTIONS 1
+# else
+// For other compilers, we assume exceptions are disabled to be
+// conservative.
+#  define GTEST_HAS_EXCEPTIONS 0
+# endif  // defined(_MSC_VER) || defined(__BORLANDC__)
+#endif  // GTEST_HAS_EXCEPTIONS
+
+#if !defined(GTEST_HAS_STD_STRING)
+// Even though we don't use this macro any longer, we keep it in case
+// some clients still depend on it.
+# define GTEST_HAS_STD_STRING 1
+#elif !GTEST_HAS_STD_STRING
+// The user told us that ::std::string isn't available.
+# error "Google Test cannot be used where ::std::string isn't available."
+#endif  // !defined(GTEST_HAS_STD_STRING)
+
+#ifndef GTEST_HAS_GLOBAL_STRING
+// The user didn't tell us whether ::string is available, so we need
+// to figure it out.
+
+# define GTEST_HAS_GLOBAL_STRING 0
+
+#endif  // GTEST_HAS_GLOBAL_STRING
+
+#ifndef GTEST_HAS_STD_WSTRING
+// The user didn't tell us whether ::std::wstring is available, so we need
+// to figure it out.
+// TODO(wan@google.com): uses autoconf to detect whether ::std::wstring
+//   is available.
+
+// Cygwin 1.7 and below doesn't support ::std::wstring.
+// Solaris' libc++ doesn't support it either.  Android has
+// no support for it at least as recent as Froyo (2.2).
+# define GTEST_HAS_STD_WSTRING \
+    (!(GTEST_OS_LINUX_ANDROID || GTEST_OS_CYGWIN || GTEST_OS_SOLARIS))
+
+#endif  // GTEST_HAS_STD_WSTRING
+
+#ifndef GTEST_HAS_GLOBAL_WSTRING
+// The user didn't tell us whether ::wstring is available, so we need
+// to figure it out.
+# define GTEST_HAS_GLOBAL_WSTRING \
+    (GTEST_HAS_STD_WSTRING && GTEST_HAS_GLOBAL_STRING)
+#endif  // GTEST_HAS_GLOBAL_WSTRING
+
+// Determines whether RTTI is available.
+#ifndef GTEST_HAS_RTTI
+// The user didn't tell us whether RTTI is enabled, so we need to
+// figure it out.
+
+# ifdef _MSC_VER
+
+#  ifdef _CPPRTTI  // MSVC defines this macro iff RTTI is enabled.
+#   define GTEST_HAS_RTTI 1
+#  else
+#   define GTEST_HAS_RTTI 0
+#  endif
+
+// Starting with version 4.3.2, gcc defines __GXX_RTTI iff RTTI is enabled.
+# elif defined(__GNUC__) && (GTEST_GCC_VER_ >= 40302)
+
+#  ifdef __GXX_RTTI
+#   define GTEST_HAS_RTTI 1
+#  else
+#   define GTEST_HAS_RTTI 0
+#  endif  // __GXX_RTTI
+
+// Clang defines __GXX_RTTI starting with version 3.0, but its manual recommends
+// using has_feature instead. has_feature(cxx_rtti) is supported since 2.7, the
+// first version with C++ support.
+# elif defined(__clang__)
+
+#  define GTEST_HAS_RTTI __has_feature(cxx_rtti)
+
+// Starting with version 9.0 IBM Visual Age defines __RTTI_ALL__ to 1 if
+// both the typeid and dynamic_cast features are present.
+# elif defined(__IBMCPP__) && (__IBMCPP__ >= 900)
+
+#  ifdef __RTTI_ALL__
+#   define GTEST_HAS_RTTI 1
+#  else
+#   define GTEST_HAS_RTTI 0
+#  endif
+
+# else
+
+// For all other compilers, we assume RTTI is enabled.
+#  define GTEST_HAS_RTTI 1
+
+# endif  // _MSC_VER
+
+#endif  // GTEST_HAS_RTTI
+
+// It's this header's responsibility to #include <typeinfo> when RTTI
+// is enabled.
+#if GTEST_HAS_RTTI
+# include <typeinfo>
+#endif
+
+// Determines whether Google Test can use the pthreads library.
+#ifndef GTEST_HAS_PTHREAD
+// The user didn't tell us explicitly, so we assume pthreads support is
+// available on Linux and Mac.
+//
+// To disable threading support in Google Test, add -DGTEST_HAS_PTHREAD=0
+// to your compiler flags.
+# define GTEST_HAS_PTHREAD (GTEST_OS_LINUX || GTEST_OS_MAC || GTEST_OS_HPUX \
+    || GTEST_OS_QNX)
+#endif  // GTEST_HAS_PTHREAD
+
+#if GTEST_HAS_PTHREAD
+// gtest-port.h guarantees to #include <pthread.h> when GTEST_HAS_PTHREAD is
+// true.
+# include <pthread.h>  // NOLINT
+
+// For timespec and nanosleep, used below.
+# include <time.h>  // NOLINT
+#endif
+
+// Determines whether Google Test can use tr1/tuple.  You can define
+// this macro to 0 to prevent Google Test from using tuple (any
+// feature depending on tuple with be disabled in this mode).
+#ifndef GTEST_HAS_TR1_TUPLE
+// The user didn't tell us not to do it, so we assume it's OK.
+# define GTEST_HAS_TR1_TUPLE 1
+#endif  // GTEST_HAS_TR1_TUPLE
+
+// Determines whether Google Test's own tr1 tuple implementation
+// should be used.
+#ifndef GTEST_USE_OWN_TR1_TUPLE
+// The user didn't tell us, so we need to figure it out.
+
+// We use our own TR1 tuple if we aren't sure the user has an
+// implementation of it already.  At this time, GCC 4.0.0+ and MSVC
+// 2010 are the only mainstream compilers that come with a TR1 tuple
+// implementation.  NVIDIA's CUDA NVCC compiler pretends to be GCC by
+// defining __GNUC__ and friends, but cannot compile GCC's tuple
+// implementation.  MSVC 2008 (9.0) provides TR1 tuple in a 323 MB
+// Feature Pack download, which we cannot assume the user has.
+// QNX's QCC compiler is a modified GCC but it doesn't support TR1 tuple.
+# if (defined(__GNUC__) && !defined(__CUDACC__) && (GTEST_GCC_VER_ >= 40000) \
+      && !GTEST_OS_QNX) || _MSC_VER >= 1600
+#  define GTEST_USE_OWN_TR1_TUPLE 0
+# else
+#  define GTEST_USE_OWN_TR1_TUPLE 1
+# endif
+
+#endif  // GTEST_USE_OWN_TR1_TUPLE
+
+// To avoid conditional compilation everywhere, we make it
+// gtest-port.h's responsibility to #include the header implementing
+// tr1/tuple.
+#if GTEST_HAS_TR1_TUPLE
+
+# if GTEST_USE_OWN_TR1_TUPLE
+#  include "gtest/internal/gtest-tuple.h"
+# elif GTEST_OS_SYMBIAN
+
+// On Symbian, BOOST_HAS_TR1_TUPLE causes Boost's TR1 tuple library to
+// use STLport's tuple implementation, which unfortunately doesn't
+// work as the copy of STLport distributed with Symbian is incomplete.
+// By making sure BOOST_HAS_TR1_TUPLE is undefined, we force Boost to
+// use its own tuple implementation.
+#  ifdef BOOST_HAS_TR1_TUPLE
+#   undef BOOST_HAS_TR1_TUPLE
+#  endif  // BOOST_HAS_TR1_TUPLE
+
+// This prevents <boost/tr1/detail/config.hpp>, which defines
+// BOOST_HAS_TR1_TUPLE, from being #included by Boost's <tuple>.
+#  define BOOST_TR1_DETAIL_CONFIG_HPP_INCLUDED
+#  include <tuple>
+
+# elif defined(__GNUC__) && (GTEST_GCC_VER_ >= 40000)
+// GCC 4.0+ implements tr1/tuple in the <tr1/tuple> header.  This does
+// not conform to the TR1 spec, which requires the header to be <tuple>.
+
+#  if !GTEST_HAS_RTTI && GTEST_GCC_VER_ < 40302
+// Until version 4.3.2, gcc has a bug that causes <tr1/functional>,
+// which is #included by <tr1/tuple>, to not compile when RTTI is
+// disabled.  _TR1_FUNCTIONAL is the header guard for
+// <tr1/functional>.  Hence the following #define is a hack to prevent
+// <tr1/functional> from being included.
+#   define _TR1_FUNCTIONAL 1
+#   include <tr1/tuple>
+#   undef _TR1_FUNCTIONAL  // Allows the user to #include
+                        // <tr1/functional> if he chooses to.
+#  else
+#   include <tr1/tuple>  // NOLINT
+#  endif  // !GTEST_HAS_RTTI && GTEST_GCC_VER_ < 40302
+
+# else
+// If the compiler is not GCC 4.0+, we assume the user is using a
+// spec-conforming TR1 implementation.
+#  include <tuple>  // NOLINT
+# endif  // GTEST_USE_OWN_TR1_TUPLE
+
+#endif  // GTEST_HAS_TR1_TUPLE
+
+// Determines whether clone(2) is supported.
+// Usually it will only be available on Linux, excluding
+// Linux on the Itanium architecture.
+// Also see http://linux.die.net/man/2/clone.
+#ifndef GTEST_HAS_CLONE
+// The user didn't tell us, so we need to figure it out.
+
+# if GTEST_OS_LINUX && !defined(__ia64__)
+#  define GTEST_HAS_CLONE 1
+# else
+#  define GTEST_HAS_CLONE 0
+# endif  // GTEST_OS_LINUX && !defined(__ia64__)
+
+#endif  // GTEST_HAS_CLONE
+
+// Determines whether to support stream redirection. This is used to test
+// output correctness and to implement death tests.
+#ifndef GTEST_HAS_STREAM_REDIRECTION
+// By default, we assume that stream redirection is supported on all
+// platforms except known mobile ones.
+# if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_SYMBIAN
+#  define GTEST_HAS_STREAM_REDIRECTION 0
+# else
+#  define GTEST_HAS_STREAM_REDIRECTION 1
+# endif  // !GTEST_OS_WINDOWS_MOBILE && !GTEST_OS_SYMBIAN
+#endif  // GTEST_HAS_STREAM_REDIRECTION
+
+// Determines whether to support death tests.
+// Google Test does not support death tests for VC 7.1 and earlier as
+// abort() in a VC 7.1 application compiled as GUI in debug config
+// pops up a dialog window that cannot be suppressed programmatically.
+#if (GTEST_OS_LINUX || GTEST_OS_MAC || GTEST_OS_CYGWIN || GTEST_OS_SOLARIS || \
+     (GTEST_OS_WINDOWS_DESKTOP && _MSC_VER >= 1400) || \
+     GTEST_OS_WINDOWS_MINGW || GTEST_OS_AIX || GTEST_OS_HPUX || \
+     GTEST_OS_OPENBSD || GTEST_OS_QNX)
+# define GTEST_HAS_DEATH_TEST 1
+# include <vector>  // NOLINT
+#endif
+
+// We don't support MSVC 7.1 with exceptions disabled now.  Therefore
+// all the compilers we care about are adequate for supporting
+// value-parameterized tests.
+#define GTEST_HAS_PARAM_TEST 1
+
+// Determines whether to support type-driven tests.
+
+// Typed tests need <typeinfo> and variadic macros, which GCC, VC++ 8.0,
+// Sun Pro CC, IBM Visual Age, and HP aCC support.
+#if defined(__GNUC__) || (_MSC_VER >= 1400) || defined(__SUNPRO_CC) || \
+    defined(__IBMCPP__) || defined(__HP_aCC)
+# define GTEST_HAS_TYPED_TEST 1
+# define GTEST_HAS_TYPED_TEST_P 1
+#endif
+
+// Determines whether to support Combine(). This only makes sense when
+// value-parameterized tests are enabled.  The implementation doesn't
+// work on Sun Studio since it doesn't understand templated conversion
+// operators.
+#if GTEST_HAS_PARAM_TEST && GTEST_HAS_TR1_TUPLE && !defined(__SUNPRO_CC)
+# define GTEST_HAS_COMBINE 1
+#endif
+
+// Determines whether the system compiler uses UTF-16 for encoding wide strings.
+#define GTEST_WIDE_STRING_USES_UTF16_ \
+    (GTEST_OS_WINDOWS || GTEST_OS_CYGWIN || GTEST_OS_SYMBIAN || GTEST_OS_AIX)
+
+// Determines whether test results can be streamed to a socket.
+#if GTEST_OS_LINUX
+# define GTEST_CAN_STREAM_RESULTS_ 1
+#endif
+
+// Defines some utility macros.
+
+// The GNU compiler emits a warning if nested "if" statements are followed by
+// an "else" statement and braces are not used to explicitly disambiguate the
+// "else" binding.  This leads to problems with code like:
+//
+//   if (gate)
+//     ASSERT_*(condition) << "Some message";
+//
+// The "switch (0) case 0:" idiom is used to suppress this.
+#ifdef __INTEL_COMPILER
+# define GTEST_AMBIGUOUS_ELSE_BLOCKER_
+#else
+# define GTEST_AMBIGUOUS_ELSE_BLOCKER_ switch (0) case 0: default:  // NOLINT
+#endif
+
+// Use this annotation at the end of a struct/class definition to
+// prevent the compiler from optimizing away instances that are never
+// used.  This is useful when all interesting logic happens inside the
+// c'tor and / or d'tor.  Example:
+//
+//   struct Foo {
+//     Foo() { ... }
+//   } GTEST_ATTRIBUTE_UNUSED_;
+//
+// Also use it after a variable or parameter declaration to tell the
+// compiler the variable/parameter does not have to be used.
+#if defined(__GNUC__) && !defined(COMPILER_ICC)
+# define GTEST_ATTRIBUTE_UNUSED_ __attribute__ ((unused))
+#else
+# define GTEST_ATTRIBUTE_UNUSED_
+#endif
+
+// A macro to disallow operator=
+// This should be used in the private: declarations for a class.
+#define GTEST_DISALLOW_ASSIGN_(type)\
+  void operator=(type const &)
+
+// A macro to disallow copy constructor and operator=
+// This should be used in the private: declarations for a class.
+#define GTEST_DISALLOW_COPY_AND_ASSIGN_(type)\
+  type(type const &);\
+  GTEST_DISALLOW_ASSIGN_(type)
+
+// Tell the compiler to warn about unused return values for functions declared
+// with this macro.  The macro should be used on function declarations
+// following the argument list:
+//
+//   Sprocket* AllocateSprocket() GTEST_MUST_USE_RESULT_;
+#if defined(__GNUC__) && (GTEST_GCC_VER_ >= 30400) && !defined(COMPILER_ICC)
+# define GTEST_MUST_USE_RESULT_ __attribute__ ((warn_unused_result))
+#else
+# define GTEST_MUST_USE_RESULT_
+#endif  // __GNUC__ && (GTEST_GCC_VER_ >= 30400) && !COMPILER_ICC
+
+// Determine whether the compiler supports Microsoft's Structured Exception
+// Handling.  This is supported by several Windows compilers but generally
+// does not exist on any other system.
+#ifndef GTEST_HAS_SEH
+// The user didn't tell us, so we need to figure it out.
+
+# if defined(_MSC_VER) || defined(__BORLANDC__)
+// These two compilers are known to support SEH.
+#  define GTEST_HAS_SEH 1
+# else
+// Assume no SEH.
+#  define GTEST_HAS_SEH 0
+# endif
+
+#endif  // GTEST_HAS_SEH
+
+#ifdef _MSC_VER
+
+# if GTEST_LINKED_AS_SHARED_LIBRARY
+#  define GTEST_API_ __declspec(dllimport)
+# elif GTEST_CREATE_SHARED_LIBRARY
+#  define GTEST_API_ __declspec(dllexport)
+# endif
+
+#endif  // _MSC_VER
+
+#ifndef GTEST_API_
+# define GTEST_API_
+#endif
+
+#ifdef __GNUC__
+// Ask the compiler to never inline a given function.
+# define GTEST_NO_INLINE_ __attribute__((noinline))
+#else
+# define GTEST_NO_INLINE_
+#endif
+
+// _LIBCPP_VERSION is defined by the libc++ library from the LLVM project.
+#if defined(__GLIBCXX__) || defined(_LIBCPP_VERSION)
+# define GTEST_HAS_CXXABI_H_ 1
+#else
+# define GTEST_HAS_CXXABI_H_ 0
+#endif
+
+namespace testing {
+
+class Message;
+
+namespace internal {
+
+class String;
+
+// The GTEST_COMPILE_ASSERT_ macro can be used to verify that a compile time
+// expression is true. For example, you could use it to verify the
+// size of a static array:
+//
+//   GTEST_COMPILE_ASSERT_(ARRAYSIZE(content_type_names) == CONTENT_NUM_TYPES,
+//                         content_type_names_incorrect_size);
+//
+// or to make sure a struct is smaller than a certain size:
+//
+//   GTEST_COMPILE_ASSERT_(sizeof(foo) < 128, foo_too_large);
+//
+// The second argument to the macro is the name of the variable. If
+// the expression is false, most compilers will issue a warning/error
+// containing the name of the variable.
+
+template <bool>
+struct CompileAssert {
+};
+
+#define GTEST_COMPILE_ASSERT_(expr, msg) \
+  typedef ::testing::internal::CompileAssert<(bool(expr))> \
+      msg[bool(expr) ? 1 : -1]
+
+// Implementation details of GTEST_COMPILE_ASSERT_:
+//
+// - GTEST_COMPILE_ASSERT_ works by defining an array type that has -1
+//   elements (and thus is invalid) when the expression is false.
+//
+// - The simpler definition
+//
+//    #define GTEST_COMPILE_ASSERT_(expr, msg) typedef char msg[(expr) ? 1 : -1]
+//
+//   does not work, as gcc supports variable-length arrays whose sizes
+//   are determined at run-time (this is gcc's extension and not part
+//   of the C++ standard).  As a result, gcc fails to reject the
+//   following code with the simple definition:
+//
+//     int foo;
+//     GTEST_COMPILE_ASSERT_(foo, msg); // not supposed to compile as foo is
+//                                      // not a compile-time constant.
+//
+// - By using the type CompileAssert<(bool(expr))>, we ensures that
+//   expr is a compile-time constant.  (Template arguments must be
+//   determined at compile-time.)
+//
+// - The outter parentheses in CompileAssert<(bool(expr))> are necessary
+//   to work around a bug in gcc 3.4.4 and 4.0.1.  If we had written
+//
+//     CompileAssert<bool(expr)>
+//
+//   instead, these compilers will refuse to compile
+//
+//     GTEST_COMPILE_ASSERT_(5 > 0, some_message);
+//
+//   (They seem to think the ">" in "5 > 0" marks the end of the
+//   template argument list.)
+//
+// - The array size is (bool(expr) ? 1 : -1), instead of simply
+//
+//     ((expr) ? 1 : -1).
+//
+//   This is to avoid running into a bug in MS VC 7.1, which
+//   causes ((0.0) ? 1 : -1) to incorrectly evaluate to 1.
+
+// StaticAssertTypeEqHelper is used by StaticAssertTypeEq defined in gtest.h.
+//
+// This template is declared, but intentionally undefined.
+template <typename T1, typename T2>
+struct StaticAssertTypeEqHelper;
+
+template <typename T>
+struct StaticAssertTypeEqHelper<T, T> {};
+
+#if GTEST_HAS_GLOBAL_STRING
+typedef ::string string;
+#else
+typedef ::std::string string;
+#endif  // GTEST_HAS_GLOBAL_STRING
+
+#if GTEST_HAS_GLOBAL_WSTRING
+typedef ::wstring wstring;
+#elif GTEST_HAS_STD_WSTRING
+typedef ::std::wstring wstring;
+#endif  // GTEST_HAS_GLOBAL_WSTRING
+
+// A helper for suppressing warnings on constant condition.  It just
+// returns 'condition'.
+GTEST_API_ bool IsTrue(bool condition);
+
+// Defines scoped_ptr.
+
+// This implementation of scoped_ptr is PARTIAL - it only contains
+// enough stuff to satisfy Google Test's need.
+template <typename T>
+class scoped_ptr {
+ public:
+  typedef T element_type;
+
+  explicit scoped_ptr(T* p = NULL) : ptr_(p) {}
+  ~scoped_ptr() { reset(); }
+
+  T& operator*() const { return *ptr_; }
+  T* operator->() const { return ptr_; }
+  T* get() const { return ptr_; }
+
+  T* release() {
+    T* const ptr = ptr_;
+    ptr_ = NULL;
+    return ptr;
+  }
+
+  void reset(T* p = NULL) {
+    if (p != ptr_) {
+      if (IsTrue(sizeof(T) > 0)) {  // Makes sure T is a complete type.
+        delete ptr_;
+      }
+      ptr_ = p;
+    }
+  }
+
+ private:
+  T* ptr_;
+
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(scoped_ptr);
+};
+
+// Defines RE.
+
+// A simple C++ wrapper for <regex.h>.  It uses the POSIX Extended
+// Regular Expression syntax.
+class GTEST_API_ RE {
+ public:
+  // A copy constructor is required by the Standard to initialize object
+  // references from r-values.
+  RE(const RE& other) { Init(other.pattern()); }
+
+  // Constructs an RE from a string.
+  RE(const ::std::string& regex) { Init(regex.c_str()); }  // NOLINT
+
+#if GTEST_HAS_GLOBAL_STRING
+
+  RE(const ::string& regex) { Init(regex.c_str()); }  // NOLINT
+
+#endif  // GTEST_HAS_GLOBAL_STRING
+
+  RE(const char* regex) { Init(regex); }  // NOLINT
+  ~RE();
+
+  // Returns the string representation of the regex.
+  const char* pattern() const { return pattern_; }
+
+  // FullMatch(str, re) returns true iff regular expression re matches
+  // the entire str.
+  // PartialMatch(str, re) returns true iff regular expression re
+  // matches a substring of str (including str itself).
+  //
+  // TODO(wan@google.com): make FullMatch() and PartialMatch() work
+  // when str contains NUL characters.
+  static bool FullMatch(const ::std::string& str, const RE& re) {
+    return FullMatch(str.c_str(), re);
+  }
+  static bool PartialMatch(const ::std::string& str, const RE& re) {
+    return PartialMatch(str.c_str(), re);
+  }
+
+#if GTEST_HAS_GLOBAL_STRING
+
+  static bool FullMatch(const ::string& str, const RE& re) {
+    return FullMatch(str.c_str(), re);
+  }
+  static bool PartialMatch(const ::string& str, const RE& re) {
+    return PartialMatch(str.c_str(), re);
+  }
+
+#endif  // GTEST_HAS_GLOBAL_STRING
+
+  static bool FullMatch(const char* str, const RE& re);
+  static bool PartialMatch(const char* str, const RE& re);
+
+ private:
+  void Init(const char* regex);
+
+  // We use a const char* instead of a string, as Google Test may be used
+  // where string is not available.  We also do not use Google Test's own
+  // String type here, in order to simplify dependencies between the
+  // files.
+  const char* pattern_;
+  bool is_valid_;
+
+#if GTEST_USES_POSIX_RE
+
+  regex_t full_regex_;     // For FullMatch().
+  regex_t partial_regex_;  // For PartialMatch().
+
+#else  // GTEST_USES_SIMPLE_RE
+
+  const char* full_pattern_;  // For FullMatch();
+
+#endif
+
+  GTEST_DISALLOW_ASSIGN_(RE);
+};
+
+// Formats a source file path and a line number as they would appear
+// in an error message from the compiler used to compile this code.
+GTEST_API_ ::std::string FormatFileLocation(const char* file, int line);
+
+// Formats a file location for compiler-independent XML output.
+// Although this function is not platform dependent, we put it next to
+// FormatFileLocation in order to contrast the two functions.
+GTEST_API_ ::std::string FormatCompilerIndependentFileLocation(const char* file,
+                                                               int line);
+
+// Defines logging utilities:
+//   GTEST_LOG_(severity) - logs messages at the specified severity level. The
+//                          message itself is streamed into the macro.
+//   LogToStderr()  - directs all log messages to stderr.
+//   FlushInfoLog() - flushes informational log messages.
+
+enum GTestLogSeverity {
+  GTEST_INFO,
+  GTEST_WARNING,
+  GTEST_ERROR,
+  GTEST_FATAL
+};
+
+// Formats log entry severity, provides a stream object for streaming the
+// log message, and terminates the message with a newline when going out of
+// scope.
+class GTEST_API_ GTestLog {
+ public:
+  GTestLog(GTestLogSeverity severity, const char* file, int line);
+
+  // Flushes the buffers and, if severity is GTEST_FATAL, aborts the program.
+  ~GTestLog();
+
+  ::std::ostream& GetStream() { return ::std::cerr; }
+
+ private:
+  const GTestLogSeverity severity_;
+
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(GTestLog);
+};
+
+#define GTEST_LOG_(severity) \
+    ::testing::internal::GTestLog(::testing::internal::GTEST_##severity, \
+                                  __FILE__, __LINE__).GetStream()
+
+inline void LogToStderr() {}
+inline void FlushInfoLog() { fflush(NULL); }
+
+// INTERNAL IMPLEMENTATION - DO NOT USE.
+//
+// GTEST_CHECK_ is an all-mode assert. It aborts the program if the condition
+// is not satisfied.
+//  Synopsys:
+//    GTEST_CHECK_(boolean_condition);
+//     or
+//    GTEST_CHECK_(boolean_condition) << "Additional message";
+//
+//    This checks the condition and if the condition is not satisfied
+//    it prints message about the condition violation, including the
+//    condition itself, plus additional message streamed into it, if any,
+//    and then it aborts the program. It aborts the program irrespective of
+//    whether it is built in the debug mode or not.
+#define GTEST_CHECK_(condition) \
+    GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
+    if (::testing::internal::IsTrue(condition)) \
+      ; \
+    else \
+      GTEST_LOG_(FATAL) << "Condition " #condition " failed. "
+
+// An all-mode assert to verify that the given POSIX-style function
+// call returns 0 (indicating success).  Known limitation: this
+// doesn't expand to a balanced 'if' statement, so enclose the macro
+// in {} if you need to use it as the only statement in an 'if'
+// branch.
+#define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \
+  if (const int gtest_error = (posix_call)) \
+    GTEST_LOG_(FATAL) << #posix_call << "failed with error " \
+                      << gtest_error
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
+// Use ImplicitCast_ as a safe version of static_cast for upcasting in
+// the type hierarchy (e.g. casting a Foo* to a SuperclassOfFoo* or a
+// const Foo*).  When you use ImplicitCast_, the compiler checks that
+// the cast is safe.  Such explicit ImplicitCast_s are necessary in
+// surprisingly many situations where C++ demands an exact type match
+// instead of an argument type convertable to a target type.
+//
+// The syntax for using ImplicitCast_ is the same as for static_cast:
+//
+//   ImplicitCast_<ToType>(expr)
+//
+// ImplicitCast_ would have been part of the C++ standard library,
+// but the proposal was submitted too late.  It will probably make
+// its way into the language in the future.
+//
+// This relatively ugly name is intentional. It prevents clashes with
+// similar functions users may have (e.g., implicit_cast). The internal
+// namespace alone is not enough because the function can be found by ADL.
+template<typename To>
+inline To ImplicitCast_(To x) { return x; }
+
+// When you upcast (that is, cast a pointer from type Foo to type
+// SuperclassOfFoo), it's fine to use ImplicitCast_<>, since upcasts
+// always succeed.  When you downcast (that is, cast a pointer from
+// type Foo to type SubclassOfFoo), static_cast<> isn't safe, because
+// how do you know the pointer is really of type SubclassOfFoo?  It
+// could be a bare Foo, or of type DifferentSubclassOfFoo.  Thus,
+// when you downcast, you should use this macro.  In debug mode, we
+// use dynamic_cast<> to double-check the downcast is legal (we die
+// if it's not).  In normal mode, we do the efficient static_cast<>
+// instead.  Thus, it's important to test in debug mode to make sure
+// the cast is legal!
+//    This is the only place in the code we should use dynamic_cast<>.
+// In particular, you SHOULDN'T be using dynamic_cast<> in order to
+// do RTTI (eg code like this:
+//    if (dynamic_cast<Subclass1>(foo)) HandleASubclass1Object(foo);
+//    if (dynamic_cast<Subclass2>(foo)) HandleASubclass2Object(foo);
+// You should design the code some other way not to need this.
+//
+// This relatively ugly name is intentional. It prevents clashes with
+// similar functions users may have (e.g., down_cast). The internal
+// namespace alone is not enough because the function can be found by ADL.
+template<typename To, typename From>  // use like this: DownCast_<T*>(foo);
+inline To DownCast_(From* f) {  // so we only accept pointers
+  // Ensures that To is a sub-type of From *.  This test is here only
+  // for compile-time type checking, and has no overhead in an
+  // optimized build at run-time, as it will be optimized away
+  // completely.
+  if (false) {
+    const To to = NULL;
+    ::testing::internal::ImplicitCast_<From*>(to);
+  }
+
+#if GTEST_HAS_RTTI
+  // RTTI: debug mode only!
+  GTEST_CHECK_(f == NULL || dynamic_cast<To>(f) != NULL);
+#endif
+  return static_cast<To>(f);
+}
+
+// Downcasts the pointer of type Base to Derived.
+// Derived must be a subclass of Base. The parameter MUST
+// point to a class of type Derived, not any subclass of it.
+// When RTTI is available, the function performs a runtime
+// check to enforce this.
+template <class Derived, class Base>
+Derived* CheckedDowncastToActualType(Base* base) {
+#if GTEST_HAS_RTTI
+  GTEST_CHECK_(typeid(*base) == typeid(Derived));
+  return dynamic_cast<Derived*>(base);  // NOLINT
+#else
+  return static_cast<Derived*>(base);  // Poor man's downcast.
+#endif
+}
+
+#if GTEST_HAS_STREAM_REDIRECTION
+
+// Defines the stderr capturer:
+//   CaptureStdout     - starts capturing stdout.
+//   GetCapturedStdout - stops capturing stdout and returns the captured string.
+//   CaptureStderr     - starts capturing stderr.
+//   GetCapturedStderr - stops capturing stderr and returns the captured string.
+//
+GTEST_API_ void CaptureStdout();
+GTEST_API_ String GetCapturedStdout();
+GTEST_API_ void CaptureStderr();
+GTEST_API_ String GetCapturedStderr();
+
+#endif  // GTEST_HAS_STREAM_REDIRECTION
+
+
+#if GTEST_HAS_DEATH_TEST
+
+const ::std::vector<testing::internal::string>& GetInjectableArgvs();
+void SetInjectableArgvs(const ::std::vector<testing::internal::string>*
+                             new_argvs);
+
+// A copy of all command line arguments.  Set by InitGoogleTest().
+extern ::std::vector<testing::internal::string> g_argvs;
+
+#endif  // GTEST_HAS_DEATH_TEST
+
+// Defines synchronization primitives.
+
+#if GTEST_HAS_PTHREAD
+
+// Sleeps for (roughly) n milli-seconds.  This function is only for
+// testing Google Test's own constructs.  Don't use it in user tests,
+// either directly or indirectly.
+inline void SleepMilliseconds(int n) {
+  const timespec time = {
+    0,                  // 0 seconds.
+    n * 1000L * 1000L,  // And n ms.
+  };
+  nanosleep(&time, NULL);
+}
+
+// Allows a controller thread to pause execution of newly created
+// threads until notified.  Instances of this class must be created
+// and destroyed in the controller thread.
+//
+// This class is only for testing Google Test's own constructs. Do not
+// use it in user tests, either directly or indirectly.
+class Notification {
+ public:
+  Notification() : notified_(false) {
+    GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_init(&mutex_, NULL));
+  }
+  ~Notification() {
+    pthread_mutex_destroy(&mutex_);
+  }
+
+  // Notifies all threads created with this notification to start. Must
+  // be called from the controller thread.
+  void Notify() {
+    pthread_mutex_lock(&mutex_);
+    notified_ = true;
+    pthread_mutex_unlock(&mutex_);
+  }
+
+  // Blocks until the controller thread notifies. Must be called from a test
+  // thread.
+  void WaitForNotification() {
+    for (;;) {
+      pthread_mutex_lock(&mutex_);
+      const bool notified = notified_;
+      pthread_mutex_unlock(&mutex_);
+      if (notified)
+        break;
+      SleepMilliseconds(10);
+    }
+  }
+
+ private:
+  pthread_mutex_t mutex_;
+  bool notified_;
+
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(Notification);
+};
+
+// As a C-function, ThreadFuncWithCLinkage cannot be templated itself.
+// Consequently, it cannot select a correct instantiation of ThreadWithParam
+// in order to call its Run(). Introducing ThreadWithParamBase as a
+// non-templated base class for ThreadWithParam allows us to bypass this
+// problem.
+class ThreadWithParamBase {
+ public:
+  virtual ~ThreadWithParamBase() {}
+  virtual void Run() = 0;
+};
+
+// pthread_create() accepts a pointer to a function type with the C linkage.
+// According to the Standard (7.5/1), function types with different linkages
+// are different even if they are otherwise identical.  Some compilers (for
+// example, SunStudio) treat them as different types.  Since class methods
+// cannot be defined with C-linkage we need to define a free C-function to
+// pass into pthread_create().
+extern "C" inline void* ThreadFuncWithCLinkage(void* thread) {
+  static_cast<ThreadWithParamBase*>(thread)->Run();
+  return NULL;
+}
+
+// Helper class for testing Google Test's multi-threading constructs.
+// To use it, write:
+//
+//   void ThreadFunc(int param) { /* Do things with param */ }
+//   Notification thread_can_start;
+//   ...
+//   // The thread_can_start parameter is optional; you can supply NULL.
+//   ThreadWithParam<int> thread(&ThreadFunc, 5, &thread_can_start);
+//   thread_can_start.Notify();
+//
+// These classes are only for testing Google Test's own constructs. Do
+// not use them in user tests, either directly or indirectly.
+template <typename T>
+class ThreadWithParam : public ThreadWithParamBase {
+ public:
+  typedef void (*UserThreadFunc)(T);
+
+  ThreadWithParam(
+      UserThreadFunc func, T param, Notification* thread_can_start)
+      : func_(func),
+        param_(param),
+        thread_can_start_(thread_can_start),
+        finished_(false) {
+    ThreadWithParamBase* const base = this;
+    // The thread can be created only after all fields except thread_
+    // have been initialized.
+    GTEST_CHECK_POSIX_SUCCESS_(
+        pthread_create(&thread_, 0, &ThreadFuncWithCLinkage, base));
+  }
+  ~ThreadWithParam() { Join(); }
+
+  void Join() {
+    if (!finished_) {
+      GTEST_CHECK_POSIX_SUCCESS_(pthread_join(thread_, 0));
+      finished_ = true;
+    }
+  }
+
+  virtual void Run() {
+    if (thread_can_start_ != NULL)
+      thread_can_start_->WaitForNotification();
+    func_(param_);
+  }
+
+ private:
+  const UserThreadFunc func_;  // User-supplied thread function.
+  const T param_;  // User-supplied parameter to the thread function.
+  // When non-NULL, used to block execution until the controller thread
+  // notifies.
+  Notification* const thread_can_start_;
+  bool finished_;  // true iff we know that the thread function has finished.
+  pthread_t thread_;  // The native thread object.
+
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadWithParam);
+};
+
+// MutexBase and Mutex implement mutex on pthreads-based platforms. They
+// are used in conjunction with class MutexLock:
+//
+//   Mutex mutex;
+//   ...
+//   MutexLock lock(&mutex);  // Acquires the mutex and releases it at the end
+//                            // of the current scope.
+//
+// MutexBase implements behavior for both statically and dynamically
+// allocated mutexes.  Do not use MutexBase directly.  Instead, write
+// the following to define a static mutex:
+//
+//   GTEST_DEFINE_STATIC_MUTEX_(g_some_mutex);
+//
+// You can forward declare a static mutex like this:
+//
+//   GTEST_DECLARE_STATIC_MUTEX_(g_some_mutex);
+//
+// To create a dynamic mutex, just define an object of type Mutex.
+class MutexBase {
+ public:
+  // Acquires this mutex.
+  void Lock() {
+    GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_lock(&mutex_));
+    owner_ = pthread_self();
+    has_owner_ = true;
+  }
+
+  // Releases this mutex.
+  void Unlock() {
+    // Since the lock is being released the owner_ field should no longer be
+    // considered valid. We don't protect writing to has_owner_ here, as it's
+    // the caller's responsibility to ensure that the current thread holds the
+    // mutex when this is called.
+    has_owner_ = false;
+    GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_unlock(&mutex_));
+  }
+
+  // Does nothing if the current thread holds the mutex. Otherwise, crashes
+  // with high probability.
+  void AssertHeld() const {
+    GTEST_CHECK_(has_owner_ && pthread_equal(owner_, pthread_self()))
+        << "The current thread is not holding the mutex @" << this;
+  }
+
+  // A static mutex may be used before main() is entered.  It may even
+  // be used before the dynamic initialization stage.  Therefore we
+  // must be able to initialize a static mutex object at link time.
+  // This means MutexBase has to be a POD and its member variables
+  // have to be public.
+ public:
+  pthread_mutex_t mutex_;  // The underlying pthread mutex.
+  // has_owner_ indicates whether the owner_ field below contains a valid thread
+  // ID and is therefore safe to inspect (e.g., to use in pthread_equal()). All
+  // accesses to the owner_ field should be protected by a check of this field.
+  // An alternative might be to memset() owner_ to all zeros, but there's no
+  // guarantee that a zero'd pthread_t is necessarily invalid or even different
+  // from pthread_self().
+  bool has_owner_;
+  pthread_t owner_;  // The thread holding the mutex.
+};
+
+// Forward-declares a static mutex.
+# define GTEST_DECLARE_STATIC_MUTEX_(mutex) \
+    extern ::testing::internal::MutexBase mutex
+
+// Defines and statically (i.e. at link time) initializes a static mutex.
+// The initialization list here does not explicitly initialize each field,
+// instead relying on default initialization for the unspecified fields. In
+// particular, the owner_ field (a pthread_t) is not explicitly initialized.
+// This allows initialization to work whether pthread_t is a scalar or struct.
+// The flag -Wmissing-field-initializers must not be specified for this to work.
+# define GTEST_DEFINE_STATIC_MUTEX_(mutex) \
+    ::testing::internal::MutexBase mutex = { PTHREAD_MUTEX_INITIALIZER, false }
+
+// The Mutex class can only be used for mutexes created at runtime. It
+// shares its API with MutexBase otherwise.
+class Mutex : public MutexBase {
+ public:
+  Mutex() {
+    GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_init(&mutex_, NULL));
+    has_owner_ = false;
+  }
+  ~Mutex() {
+    GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_destroy(&mutex_));
+  }
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(Mutex);
+};
+
+// We cannot name this class MutexLock as the ctor declaration would
+// conflict with a macro named MutexLock, which is defined on some
+// platforms.  Hence the typedef trick below.
+class GTestMutexLock {
+ public:
+  explicit GTestMutexLock(MutexBase* mutex)
+      : mutex_(mutex) { mutex_->Lock(); }
+
+  ~GTestMutexLock() { mutex_->Unlock(); }
+
+ private:
+  MutexBase* const mutex_;
+
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(GTestMutexLock);
+};
+
+typedef GTestMutexLock MutexLock;
+
+// Helpers for ThreadLocal.
+
+// pthread_key_create() requires DeleteThreadLocalValue() to have
+// C-linkage.  Therefore it cannot be templatized to access
+// ThreadLocal<T>.  Hence the need for class
+// ThreadLocalValueHolderBase.
+class ThreadLocalValueHolderBase {
+ public:
+  virtual ~ThreadLocalValueHolderBase() {}
+};
+
+// Called by pthread to delete thread-local data stored by
+// pthread_setspecific().
+extern "C" inline void DeleteThreadLocalValue(void* value_holder) {
+  delete static_cast<ThreadLocalValueHolderBase*>(value_holder);
+}
+
+// Implements thread-local storage on pthreads-based systems.
+//
+//   // Thread 1
+//   ThreadLocal<int> tl(100);  // 100 is the default value for each thread.
+//
+//   // Thread 2
+//   tl.set(150);  // Changes the value for thread 2 only.
+//   EXPECT_EQ(150, tl.get());
+//
+//   // Thread 1
+//   EXPECT_EQ(100, tl.get());  // In thread 1, tl has the original value.
+//   tl.set(200);
+//   EXPECT_EQ(200, tl.get());
+//
+// The template type argument T must have a public copy constructor.
+// In addition, the default ThreadLocal constructor requires T to have
+// a public default constructor.
+//
+// An object managed for a thread by a ThreadLocal instance is deleted
+// when the thread exits.  Or, if the ThreadLocal instance dies in
+// that thread, when the ThreadLocal dies.  It's the user's
+// responsibility to ensure that all other threads using a ThreadLocal
+// have exited when it dies, or the per-thread objects for those
+// threads will not be deleted.
+//
+// Google Test only uses global ThreadLocal objects.  That means they
+// will die after main() has returned.  Therefore, no per-thread
+// object managed by Google Test will be leaked as long as all threads
+// using Google Test have exited when main() returns.
+template <typename T>
+class ThreadLocal {
+ public:
+  ThreadLocal() : key_(CreateKey()),
+                  default_() {}
+  explicit ThreadLocal(const T& value) : key_(CreateKey()),
+                                         default_(value) {}
+
+  ~ThreadLocal() {
+    // Destroys the managed object for the current thread, if any.
+    DeleteThreadLocalValue(pthread_getspecific(key_));
+
+    // Releases resources associated with the key.  This will *not*
+    // delete managed objects for other threads.
+    GTEST_CHECK_POSIX_SUCCESS_(pthread_key_delete(key_));
+  }
+
+  T* pointer() { return GetOrCreateValue(); }
+  const T* pointer() const { return GetOrCreateValue(); }
+  const T& get() const { return *pointer(); }
+  void set(const T& value) { *pointer() = value; }
+
+ private:
+  // Holds a value of type T.
+  class ValueHolder : public ThreadLocalValueHolderBase {
+   public:
+    explicit ValueHolder(const T& value) : value_(value) {}
+
+    T* pointer() { return &value_; }
+
+   private:
+    T value_;
+    GTEST_DISALLOW_COPY_AND_ASSIGN_(ValueHolder);
+  };
+
+  static pthread_key_t CreateKey() {
+    pthread_key_t key;
+    // When a thread exits, DeleteThreadLocalValue() will be called on
+    // the object managed for that thread.
+    GTEST_CHECK_POSIX_SUCCESS_(
+        pthread_key_create(&key, &DeleteThreadLocalValue));
+    return key;
+  }
+
+  T* GetOrCreateValue() const {
+    ThreadLocalValueHolderBase* const holder =
+        static_cast<ThreadLocalValueHolderBase*>(pthread_getspecific(key_));
+    if (holder != NULL) {
+      return CheckedDowncastToActualType<ValueHolder>(holder)->pointer();
+    }
+
+    ValueHolder* const new_holder = new ValueHolder(default_);
+    ThreadLocalValueHolderBase* const holder_base = new_holder;
+    GTEST_CHECK_POSIX_SUCCESS_(pthread_setspecific(key_, holder_base));
+    return new_holder->pointer();
+  }
+
+  // A key pthreads uses for looking up per-thread values.
+  const pthread_key_t key_;
+  const T default_;  // The default value for each thread.
+
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadLocal);
+};
+
+# define GTEST_IS_THREADSAFE 1
+
+#else  // GTEST_HAS_PTHREAD
+
+// A dummy implementation of synchronization primitives (mutex, lock,
+// and thread-local variable).  Necessary for compiling Google Test where
+// mutex is not supported - using Google Test in multiple threads is not
+// supported on such platforms.
+
+class Mutex {
+ public:
+  Mutex() {}
+  void Lock() {}
+  void Unlock() {}
+  void AssertHeld() const {}
+};
+
+# define GTEST_DECLARE_STATIC_MUTEX_(mutex) \
+  extern ::testing::internal::Mutex mutex
+
+# define GTEST_DEFINE_STATIC_MUTEX_(mutex) ::testing::internal::Mutex mutex
+
+class GTestMutexLock {
+ public:
+  explicit GTestMutexLock(Mutex*) {}  // NOLINT
+};
+
+typedef GTestMutexLock MutexLock;
+
+template <typename T>
+class ThreadLocal {
+ public:
+  ThreadLocal() : value_() {}
+  explicit ThreadLocal(const T& value) : value_(value) {}
+  T* pointer() { return &value_; }
+  const T* pointer() const { return &value_; }
+  const T& get() const { return value_; }
+  void set(const T& value) { value_ = value; }
+ private:
+  T value_;
+};
+
+// The above synchronization primitives have dummy implementations.
+// Therefore Google Test is not thread-safe.
+# define GTEST_IS_THREADSAFE 0
+
+#endif  // GTEST_HAS_PTHREAD
+
+// Returns the number of threads running in the process, or 0 to indicate that
+// we cannot detect it.
+GTEST_API_ size_t GetThreadCount();
+
+// Passing non-POD classes through ellipsis (...) crashes the ARM
+// compiler and generates a warning in Sun Studio.  The Nokia Symbian
+// and the IBM XL C/C++ compiler try to instantiate a copy constructor
+// for objects passed through ellipsis (...), failing for uncopyable
+// objects.  We define this to ensure that only POD is passed through
+// ellipsis on these systems.
+#if defined(__SYMBIAN32__) || defined(__IBMCPP__) || defined(__SUNPRO_CC)
+// We lose support for NULL detection where the compiler doesn't like
+// passing non-POD classes through ellipsis (...).
+# define GTEST_ELLIPSIS_NEEDS_POD_ 1
+#else
+# define GTEST_CAN_COMPARE_NULL 1
+#endif
+
+// The Nokia Symbian and IBM XL C/C++ compilers cannot decide between
+// const T& and const T* in a function template.  These compilers
+// _can_ decide between class template specializations for T and T*,
+// so a tr1::type_traits-like is_pointer works.
+#if defined(__SYMBIAN32__) || defined(__IBMCPP__)
+# define GTEST_NEEDS_IS_POINTER_ 1
+#endif
+
+template <bool bool_value>
+struct bool_constant {
+  typedef bool_constant<bool_value> type;
+  static const bool value = bool_value;
+};
+template <bool bool_value> const bool bool_constant<bool_value>::value;
+
+typedef bool_constant<false> false_type;
+typedef bool_constant<true> true_type;
+
+template <typename T>
+struct is_pointer : public false_type {};
+
+template <typename T>
+struct is_pointer<T*> : public true_type {};
+
+template <typename Iterator>
+struct IteratorTraits {
+  typedef typename Iterator::value_type value_type;
+};
+
+template <typename T>
+struct IteratorTraits<T*> {
+  typedef T value_type;
+};
+
+template <typename T>
+struct IteratorTraits<const T*> {
+  typedef T value_type;
+};
+
+#if GTEST_OS_WINDOWS
+# define GTEST_PATH_SEP_ "\\"
+# define GTEST_HAS_ALT_PATH_SEP_ 1
+// The biggest signed integer type the compiler supports.
+typedef __int64 BiggestInt;
+#else
+# define GTEST_PATH_SEP_ "/"
+# define GTEST_HAS_ALT_PATH_SEP_ 0
+typedef long long BiggestInt;  // NOLINT
+#endif  // GTEST_OS_WINDOWS
+
+// Utilities for char.
+
+// isspace(int ch) and friends accept an unsigned char or EOF.  char
+// may be signed, depending on the compiler (or compiler flags).
+// Therefore we need to cast a char to unsigned char before calling
+// isspace(), etc.
+
+inline bool IsAlpha(char ch) {
+  return isalpha(static_cast<unsigned char>(ch)) != 0;
+}
+inline bool IsAlNum(char ch) {
+  return isalnum(static_cast<unsigned char>(ch)) != 0;
+}
+inline bool IsDigit(char ch) {
+  return isdigit(static_cast<unsigned char>(ch)) != 0;
+}
+inline bool IsLower(char ch) {
+  return islower(static_cast<unsigned char>(ch)) != 0;
+}
+inline bool IsSpace(char ch) {
+  return isspace(static_cast<unsigned char>(ch)) != 0;
+}
+inline bool IsUpper(char ch) {
+  return isupper(static_cast<unsigned char>(ch)) != 0;
+}
+inline bool IsXDigit(char ch) {
+  return isxdigit(static_cast<unsigned char>(ch)) != 0;
+}
+
+inline char ToLower(char ch) {
+  return static_cast<char>(tolower(static_cast<unsigned char>(ch)));
+}
+inline char ToUpper(char ch) {
+  return static_cast<char>(toupper(static_cast<unsigned char>(ch)));
+}
+
+// The testing::internal::posix namespace holds wrappers for common
+// POSIX functions.  These wrappers hide the differences between
+// Windows/MSVC and POSIX systems.  Since some compilers define these
+// standard functions as macros, the wrapper cannot have the same name
+// as the wrapped function.
+
+namespace posix {
+
+// Functions with a different name on Windows.
+
+#if GTEST_OS_WINDOWS
+
+typedef struct _stat StatStruct;
+
+# ifdef __BORLANDC__
+inline int IsATTY(int fd) { return isatty(fd); }
+inline int StrCaseCmp(const char* s1, const char* s2) {
+  return stricmp(s1, s2);
+}
+inline char* StrDup(const char* src) { return strdup(src); }
+# else  // !__BORLANDC__
+#  if GTEST_OS_WINDOWS_MOBILE
+inline int IsATTY(int /* fd */) { return 0; }
+#  else
+inline int IsATTY(int fd) { return _isatty(fd); }
+#  endif  // GTEST_OS_WINDOWS_MOBILE
+inline int StrCaseCmp(const char* s1, const char* s2) {
+  return _stricmp(s1, s2);
+}
+inline char* StrDup(const char* src) { return _strdup(src); }
+# endif  // __BORLANDC__
+
+# if GTEST_OS_WINDOWS_MOBILE
+inline int FileNo(FILE* file) { return reinterpret_cast<int>(_fileno(file)); }
+// Stat(), RmDir(), and IsDir() are not needed on Windows CE at this
+// time and thus not defined there.
+# else
+inline int FileNo(FILE* file) { return _fileno(file); }
+inline int Stat(const char* path, StatStruct* buf) { return _stat(path, buf); }
+inline int RmDir(const char* dir) { return _rmdir(dir); }
+inline bool IsDir(const StatStruct& st) {
+  return (_S_IFDIR & st.st_mode) != 0;
+}
+# endif  // GTEST_OS_WINDOWS_MOBILE
+
+#else
+
+typedef struct stat StatStruct;
+
+inline int FileNo(FILE* file) { return fileno(file); }
+inline int IsATTY(int fd) { return isatty(fd); }
+inline int Stat(const char* path, StatStruct* buf) { return stat(path, buf); }
+inline int StrCaseCmp(const char* s1, const char* s2) {
+  return strcasecmp(s1, s2);
+}
+inline char* StrDup(const char* src) { return strdup(src); }
+inline int RmDir(const char* dir) { return rmdir(dir); }
+inline bool IsDir(const StatStruct& st) { return S_ISDIR(st.st_mode); }
+
+#endif  // GTEST_OS_WINDOWS
+
+// Functions deprecated by MSVC 8.0.
+
+#ifdef _MSC_VER
+// Temporarily disable warning 4996 (deprecated function).
+# pragma warning(push)
+# pragma warning(disable:4996)
+#endif
+
+inline const char* StrNCpy(char* dest, const char* src, size_t n) {
+  return strncpy(dest, src, n);
+}
+
+// ChDir(), FReopen(), FDOpen(), Read(), Write(), Close(), and
+// StrError() aren't needed on Windows CE at this time and thus not
+// defined there.
+
+#if !GTEST_OS_WINDOWS_MOBILE
+inline int ChDir(const char* dir) { return chdir(dir); }
+#endif
+inline FILE* FOpen(const char* path, const char* mode) {
+  return fopen(path, mode);
+}
+#if !GTEST_OS_WINDOWS_MOBILE
+inline FILE *FReopen(const char* path, const char* mode, FILE* stream) {
+  return freopen(path, mode, stream);
+}
+inline FILE* FDOpen(int fd, const char* mode) { return fdopen(fd, mode); }
+#endif
+inline int FClose(FILE* fp) { return fclose(fp); }
+#if !GTEST_OS_WINDOWS_MOBILE
+inline int Read(int fd, void* buf, unsigned int count) {
+  return static_cast<int>(read(fd, buf, count));
+}
+inline int Write(int fd, const void* buf, unsigned int count) {
+  return static_cast<int>(write(fd, buf, count));
+}
+inline int Close(int fd) { return close(fd); }
+inline const char* StrError(int errnum) { return strerror(errnum); }
+#endif
+inline const char* GetEnv(const char* name) {
+#if GTEST_OS_WINDOWS_MOBILE
+  // We are on Windows CE, which has no environment variables.
+  return NULL;
+#elif defined(__BORLANDC__) || defined(__SunOS_5_8) || defined(__SunOS_5_9)
+  // Environment variables which we programmatically clear will be set to the
+  // empty string rather than unset (NULL).  Handle that case.
+  const char* const env = getenv(name);
+  return (env != NULL && env[0] != '\0') ? env : NULL;
+#else
+  return getenv(name);
+#endif
+}
+
+#ifdef _MSC_VER
+# pragma warning(pop)  // Restores the warning state.
+#endif
+
+#if GTEST_OS_WINDOWS_MOBILE
+// Windows CE has no C library. The abort() function is used in
+// several places in Google Test. This implementation provides a reasonable
+// imitation of standard behaviour.
+void Abort();
+#else
+inline void Abort() { abort(); }
+#endif  // GTEST_OS_WINDOWS_MOBILE
+
+}  // namespace posix
+
+// MSVC "deprecates" snprintf and issues warnings wherever it is used.  In
+// order to avoid these warnings, we need to use _snprintf or _snprintf_s on
+// MSVC-based platforms.  We map the GTEST_SNPRINTF_ macro to the appropriate
+// function in order to achieve that.  We use macro definition here because
+// snprintf is a variadic function.
+#if _MSC_VER >= 1400 && !GTEST_OS_WINDOWS_MOBILE
+// MSVC 2005 and above support variadic macros.
+# define GTEST_SNPRINTF_(buffer, size, format, ...) \
+     _snprintf_s(buffer, size, size, format, __VA_ARGS__)
+#elif defined(_MSC_VER)
+// Windows CE does not define _snprintf_s and MSVC prior to 2005 doesn't
+// complain about _snprintf.
+# define GTEST_SNPRINTF_ _snprintf
+#else
+# define GTEST_SNPRINTF_ snprintf
+#endif
+
+// The maximum number a BiggestInt can represent.  This definition
+// works no matter BiggestInt is represented in one's complement or
+// two's complement.
+//
+// We cannot rely on numeric_limits in STL, as __int64 and long long
+// are not part of standard C++ and numeric_limits doesn't need to be
+// defined for them.
+const BiggestInt kMaxBiggestInt =
+    ~(static_cast<BiggestInt>(1) << (8*sizeof(BiggestInt) - 1));
+
+// This template class serves as a compile-time function from size to
+// type.  It maps a size in bytes to a primitive type with that
+// size. e.g.
+//
+//   TypeWithSize<4>::UInt
+//
+// is typedef-ed to be unsigned int (unsigned integer made up of 4
+// bytes).
+//
+// Such functionality should belong to STL, but I cannot find it
+// there.
+//
+// Google Test uses this class in the implementation of floating-point
+// comparison.
+//
+// For now it only handles UInt (unsigned int) as that's all Google Test
+// needs.  Other types can be easily added in the future if need
+// arises.
+template <size_t size>
+class TypeWithSize {
+ public:
+  // This prevents the user from using TypeWithSize<N> with incorrect
+  // values of N.
+  typedef void UInt;
+};
+
+// The specialization for size 4.
+template <>
+class TypeWithSize<4> {
+ public:
+  // unsigned int has size 4 in both gcc and MSVC.
+  //
+  // As base/basictypes.h doesn't compile on Windows, we cannot use
+  // uint32, uint64, and etc here.
+  typedef int Int;
+  typedef unsigned int UInt;
+};
+
+// The specialization for size 8.
+template <>
+class TypeWithSize<8> {
+ public:
+#if GTEST_OS_WINDOWS
+  typedef __int64 Int;
+  typedef unsigned __int64 UInt;
+#else
+  typedef long long Int;  // NOLINT
+  typedef unsigned long long UInt;  // NOLINT
+#endif  // GTEST_OS_WINDOWS
+};
+
+// Integer types of known sizes.
+typedef TypeWithSize<4>::Int Int32;
+typedef TypeWithSize<4>::UInt UInt32;
+typedef TypeWithSize<8>::Int Int64;
+typedef TypeWithSize<8>::UInt UInt64;
+typedef TypeWithSize<8>::Int TimeInMillis;  // Represents time in milliseconds.
+
+// Utilities for command line flags and environment variables.
+
+// Macro for referencing flags.
+#define GTEST_FLAG(name) FLAGS_gtest_##name
+
+// Macros for declaring flags.
+#define GTEST_DECLARE_bool_(name) GTEST_API_ extern bool GTEST_FLAG(name)
+#define GTEST_DECLARE_int32_(name) \
+    GTEST_API_ extern ::testing::internal::Int32 GTEST_FLAG(name)
+#define GTEST_DECLARE_string_(name) \
+    GTEST_API_ extern ::testing::internal::String GTEST_FLAG(name)
+
+// Macros for defining flags.
+#define GTEST_DEFINE_bool_(name, default_val, doc) \
+    GTEST_API_ bool GTEST_FLAG(name) = (default_val)
+#define GTEST_DEFINE_int32_(name, default_val, doc) \
+    GTEST_API_ ::testing::internal::Int32 GTEST_FLAG(name) = (default_val)
+#define GTEST_DEFINE_string_(name, default_val, doc) \
+    GTEST_API_ ::testing::internal::String GTEST_FLAG(name) = (default_val)
+
+// Thread annotations
+#define GTEST_EXCLUSIVE_LOCK_REQUIRED_(locks)
+#define GTEST_LOCK_EXCLUDED_(locks)
+
+// Parses 'str' for a 32-bit signed integer.  If successful, writes the result
+// to *value and returns true; otherwise leaves *value unchanged and returns
+// false.
+// TODO(chandlerc): Find a better way to refactor flag and environment parsing
+// out of both gtest-port.cc and gtest.cc to avoid exporting this utility
+// function.
+bool ParseInt32(const Message& src_text, const char* str, Int32* value);
+
+// Parses a bool/Int32/string from the environment variable
+// corresponding to the given Google Test flag.
+bool BoolFromGTestEnv(const char* flag, bool default_val);
+GTEST_API_ Int32 Int32FromGTestEnv(const char* flag, Int32 default_val);
+const char* StringFromGTestEnv(const char* flag, const char* default_val);
+
+}  // namespace internal
+}  // namespace testing
+
+#endif  // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_
diff --git a/google-breakpad/src/testing/gtest/include/gtest/internal/gtest-string.h b/google-breakpad/src/testing/gtest/include/gtest/internal/gtest-string.h
new file mode 100644
index 0000000..a902450
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/include/gtest/internal/gtest-string.h
@@ -0,0 +1,350 @@
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Authors: wan@google.com (Zhanyong Wan), eefacm@gmail.com (Sean Mcafee)
+//
+// The Google C++ Testing Framework (Google Test)
+//
+// This header file declares the String class and functions used internally by
+// Google Test.  They are subject to change without notice. They should not used
+// by code external to Google Test.
+//
+// This header file is #included by <gtest/internal/gtest-internal.h>.
+// It should not be #included by other files.
+
+#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_
+#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_
+
+#ifdef __BORLANDC__
+// string.h is not guaranteed to provide strcpy on C++ Builder.
+# include <mem.h>
+#endif
+
+#include <string.h>
+#include <string>
+
+#include "gtest/internal/gtest-port.h"
+
+namespace testing {
+namespace internal {
+
+// String - a UTF-8 string class.
+//
+// For historic reasons, we don't use std::string.
+//
+// TODO(wan@google.com): replace this class with std::string or
+// implement it in terms of the latter.
+//
+// Note that String can represent both NULL and the empty string,
+// while std::string cannot represent NULL.
+//
+// NULL and the empty string are considered different.  NULL is less
+// than anything (including the empty string) except itself.
+//
+// This class only provides minimum functionality necessary for
+// implementing Google Test.  We do not intend to implement a full-fledged
+// string class here.
+//
+// Since the purpose of this class is to provide a substitute for
+// std::string on platforms where it cannot be used, we define a copy
+// constructor and assignment operators such that we don't need
+// conditional compilation in a lot of places.
+//
+// In order to make the representation efficient, the d'tor of String
+// is not virtual.  Therefore DO NOT INHERIT FROM String.
+class GTEST_API_ String {
+ public:
+  // Static utility methods
+
+  // Returns the input enclosed in double quotes if it's not NULL;
+  // otherwise returns "(null)".  For example, "\"Hello\"" is returned
+  // for input "Hello".
+  //
+  // This is useful for printing a C string in the syntax of a literal.
+  //
+  // Known issue: escape sequences are not handled yet.
+  static String ShowCStringQuoted(const char* c_str);
+
+  // Clones a 0-terminated C string, allocating memory using new.  The
+  // caller is responsible for deleting the return value using
+  // delete[].  Returns the cloned string, or NULL if the input is
+  // NULL.
+  //
+  // This is different from strdup() in string.h, which allocates
+  // memory using malloc().
+  static const char* CloneCString(const char* c_str);
+
+#if GTEST_OS_WINDOWS_MOBILE
+  // Windows CE does not have the 'ANSI' versions of Win32 APIs. To be
+  // able to pass strings to Win32 APIs on CE we need to convert them
+  // to 'Unicode', UTF-16.
+
+  // Creates a UTF-16 wide string from the given ANSI string, allocating
+  // memory using new. The caller is responsible for deleting the return
+  // value using delete[]. Returns the wide string, or NULL if the
+  // input is NULL.
+  //
+  // The wide string is created using the ANSI codepage (CP_ACP) to
+  // match the behaviour of the ANSI versions of Win32 calls and the
+  // C runtime.
+  static LPCWSTR AnsiToUtf16(const char* c_str);
+
+  // Creates an ANSI string from the given wide string, allocating
+  // memory using new. The caller is responsible for deleting the return
+  // value using delete[]. Returns the ANSI string, or NULL if the
+  // input is NULL.
+  //
+  // The returned string is created using the ANSI codepage (CP_ACP) to
+  // match the behaviour of the ANSI versions of Win32 calls and the
+  // C runtime.
+  static const char* Utf16ToAnsi(LPCWSTR utf16_str);
+#endif
+
+  // Compares two C strings.  Returns true iff they have the same content.
+  //
+  // Unlike strcmp(), this function can handle NULL argument(s).  A
+  // NULL C string is considered different to any non-NULL C string,
+  // including the empty string.
+  static bool CStringEquals(const char* lhs, const char* rhs);
+
+  // Converts a wide C string to a String using the UTF-8 encoding.
+  // NULL will be converted to "(null)".  If an error occurred during
+  // the conversion, "(failed to convert from wide string)" is
+  // returned.
+  static String ShowWideCString(const wchar_t* wide_c_str);
+
+  // Similar to ShowWideCString(), except that this function encloses
+  // the converted string in double quotes.
+  static String ShowWideCStringQuoted(const wchar_t* wide_c_str);
+
+  // Compares two wide C strings.  Returns true iff they have the same
+  // content.
+  //
+  // Unlike wcscmp(), this function can handle NULL argument(s).  A
+  // NULL C string is considered different to any non-NULL C string,
+  // including the empty string.
+  static bool WideCStringEquals(const wchar_t* lhs, const wchar_t* rhs);
+
+  // Compares two C strings, ignoring case.  Returns true iff they
+  // have the same content.
+  //
+  // Unlike strcasecmp(), this function can handle NULL argument(s).
+  // A NULL C string is considered different to any non-NULL C string,
+  // including the empty string.
+  static bool CaseInsensitiveCStringEquals(const char* lhs,
+                                           const char* rhs);
+
+  // Compares two wide C strings, ignoring case.  Returns true iff they
+  // have the same content.
+  //
+  // Unlike wcscasecmp(), this function can handle NULL argument(s).
+  // A NULL C string is considered different to any non-NULL wide C string,
+  // including the empty string.
+  // NB: The implementations on different platforms slightly differ.
+  // On windows, this method uses _wcsicmp which compares according to LC_CTYPE
+  // environment variable. On GNU platform this method uses wcscasecmp
+  // which compares according to LC_CTYPE category of the current locale.
+  // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the
+  // current locale.
+  static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs,
+                                               const wchar_t* rhs);
+
+  // Formats a list of arguments to a String, using the same format
+  // spec string as for printf.
+  //
+  // We do not use the StringPrintf class as it is not universally
+  // available.
+  //
+  // The result is limited to 4096 characters (including the tailing
+  // 0).  If 4096 characters are not enough to format the input,
+  // "<buffer exceeded>" is returned.
+  static String Format(const char* format, ...);
+
+  // C'tors
+
+  // The default c'tor constructs a NULL string.
+  String() : c_str_(NULL), length_(0) {}
+
+  // Constructs a String by cloning a 0-terminated C string.
+  String(const char* a_c_str) {  // NOLINT
+    if (a_c_str == NULL) {
+      c_str_ = NULL;
+      length_ = 0;
+    } else {
+      ConstructNonNull(a_c_str, strlen(a_c_str));
+    }
+  }
+
+  // Constructs a String by copying a given number of chars from a
+  // buffer.  E.g. String("hello", 3) creates the string "hel",
+  // String("a\0bcd", 4) creates "a\0bc", String(NULL, 0) creates "",
+  // and String(NULL, 1) results in access violation.
+  String(const char* buffer, size_t a_length) {
+    ConstructNonNull(buffer, a_length);
+  }
+
+  // The copy c'tor creates a new copy of the string.  The two
+  // String objects do not share content.
+  String(const String& str) : c_str_(NULL), length_(0) { *this = str; }
+
+  // D'tor.  String is intended to be a final class, so the d'tor
+  // doesn't need to be virtual.
+  ~String() { delete[] c_str_; }
+
+  // Allows a String to be implicitly converted to an ::std::string or
+  // ::string, and vice versa.  Converting a String containing a NULL
+  // pointer to ::std::string or ::string is undefined behavior.
+  // Converting a ::std::string or ::string containing an embedded NUL
+  // character to a String will result in the prefix up to the first
+  // NUL character.
+  String(const ::std::string& str) {  // NOLINT
+    ConstructNonNull(str.c_str(), str.length());
+  }
+
+  operator ::std::string() const { return ::std::string(c_str(), length()); }
+
+#if GTEST_HAS_GLOBAL_STRING
+  String(const ::string& str) {  // NOLINT
+    ConstructNonNull(str.c_str(), str.length());
+  }
+
+  operator ::string() const { return ::string(c_str(), length()); }
+#endif  // GTEST_HAS_GLOBAL_STRING
+
+  // Returns true iff this is an empty string (i.e. "").
+  bool empty() const { return (c_str() != NULL) && (length() == 0); }
+
+  // Compares this with another String.
+  // Returns < 0 if this is less than rhs, 0 if this is equal to rhs, or > 0
+  // if this is greater than rhs.
+  int Compare(const String& rhs) const;
+
+  // Returns true iff this String equals the given C string.  A NULL
+  // string and a non-NULL string are considered not equal.
+  bool operator==(const char* a_c_str) const { return Compare(a_c_str) == 0; }
+
+  // Returns true iff this String is less than the given String.  A
+  // NULL string is considered less than "".
+  bool operator<(const String& rhs) const { return Compare(rhs) < 0; }
+
+  // Returns true iff this String doesn't equal the given C string.  A NULL
+  // string and a non-NULL string are considered not equal.
+  bool operator!=(const char* a_c_str) const { return !(*this == a_c_str); }
+
+  // Returns true iff this String ends with the given suffix.  *Any*
+  // String is considered to end with a NULL or empty suffix.
+  bool EndsWith(const char* suffix) const;
+
+  // Returns true iff this String ends with the given suffix, not considering
+  // case. Any String is considered to end with a NULL or empty suffix.
+  bool EndsWithCaseInsensitive(const char* suffix) const;
+
+  // Returns the length of the encapsulated string, or 0 if the
+  // string is NULL.
+  size_t length() const { return length_; }
+
+  // Gets the 0-terminated C string this String object represents.
+  // The String object still owns the string.  Therefore the caller
+  // should NOT delete the return value.
+  const char* c_str() const { return c_str_; }
+
+  // Assigns a C string to this object.  Self-assignment works.
+  const String& operator=(const char* a_c_str) {
+    return *this = String(a_c_str);
+  }
+
+  // Assigns a String object to this object.  Self-assignment works.
+  const String& operator=(const String& rhs) {
+    if (this != &rhs) {
+      delete[] c_str_;
+      if (rhs.c_str() == NULL) {
+        c_str_ = NULL;
+        length_ = 0;
+      } else {
+        ConstructNonNull(rhs.c_str(), rhs.length());
+      }
+    }
+
+    return *this;
+  }
+
+ private:
+  // Constructs a non-NULL String from the given content.  This
+  // function can only be called when c_str_ has not been allocated.
+  // ConstructNonNull(NULL, 0) results in an empty string ("").
+  // ConstructNonNull(NULL, non_zero) is undefined behavior.
+  void ConstructNonNull(const char* buffer, size_t a_length) {
+    char* const str = new char[a_length + 1];
+    memcpy(str, buffer, a_length);
+    str[a_length] = '\0';
+    c_str_ = str;
+    length_ = a_length;
+  }
+
+  const char* c_str_;
+  size_t length_;
+};  // class String
+
+// Streams a String to an ostream.  Each '\0' character in the String
+// is replaced with "\\0".
+inline ::std::ostream& operator<<(::std::ostream& os, const String& str) {
+  if (str.c_str() == NULL) {
+    os << "(null)";
+  } else {
+    const char* const c_str = str.c_str();
+    for (size_t i = 0; i != str.length(); i++) {
+      if (c_str[i] == '\0') {
+        os << "\\0";
+      } else {
+        os << c_str[i];
+      }
+    }
+  }
+  return os;
+}
+
+// Gets the content of the stringstream's buffer as a String.  Each '\0'
+// character in the buffer is replaced with "\\0".
+GTEST_API_ String StringStreamToString(::std::stringstream* stream);
+
+// Converts a streamable value to a String.  A NULL pointer is
+// converted to "(null)".  When the input value is a ::string,
+// ::std::string, ::wstring, or ::std::wstring object, each NUL
+// character in it is replaced with "\\0".
+
+// Declared here but defined in gtest.h, so that it has access
+// to the definition of the Message class, required by the ARM
+// compiler.
+template <typename T>
+String StreamableToString(const T& streamable);
+
+}  // namespace internal
+}  // namespace testing
+
+#endif  // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_
diff --git a/google-breakpad/src/testing/gtest/include/gtest/internal/gtest-tuple.h b/google-breakpad/src/testing/gtest/include/gtest/internal/gtest-tuple.h
new file mode 100644
index 0000000..399e84d
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/include/gtest/internal/gtest-tuple.h
@@ -0,0 +1,1012 @@
+// This file was GENERATED by command:
+//     pump.py gtest-tuple.h.pump
+// DO NOT EDIT BY HAND!!!
+
+// Copyright 2009 Google Inc.
+// All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Implements a subset of TR1 tuple needed by Google Test and Google Mock.
+
+#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_
+#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_
+
+#include <utility>  // For ::std::pair.
+
+// The compiler used in Symbian has a bug that prevents us from declaring the
+// tuple template as a friend (it complains that tuple is redefined).  This
+// hack bypasses the bug by declaring the members that should otherwise be
+// private as public.
+// Sun Studio versions < 12 also have the above bug.
+#if defined(__SYMBIAN32__) || (defined(__SUNPRO_CC) && __SUNPRO_CC < 0x590)
+# define GTEST_DECLARE_TUPLE_AS_FRIEND_ public:
+#else
+# define GTEST_DECLARE_TUPLE_AS_FRIEND_ \
+    template <GTEST_10_TYPENAMES_(U)> friend class tuple; \
+   private:
+#endif
+
+// GTEST_n_TUPLE_(T) is the type of an n-tuple.
+#define GTEST_0_TUPLE_(T) tuple<>
+#define GTEST_1_TUPLE_(T) tuple<T##0, void, void, void, void, void, void, \
+    void, void, void>
+#define GTEST_2_TUPLE_(T) tuple<T##0, T##1, void, void, void, void, void, \
+    void, void, void>
+#define GTEST_3_TUPLE_(T) tuple<T##0, T##1, T##2, void, void, void, void, \
+    void, void, void>
+#define GTEST_4_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, void, void, void, \
+    void, void, void>
+#define GTEST_5_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, void, void, \
+    void, void, void>
+#define GTEST_6_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, void, \
+    void, void, void>
+#define GTEST_7_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, T##6, \
+    void, void, void>
+#define GTEST_8_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, T##6, \
+    T##7, void, void>
+#define GTEST_9_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, T##6, \
+    T##7, T##8, void>
+#define GTEST_10_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, T##6, \
+    T##7, T##8, T##9>
+
+// GTEST_n_TYPENAMES_(T) declares a list of n typenames.
+#define GTEST_0_TYPENAMES_(T)
+#define GTEST_1_TYPENAMES_(T) typename T##0
+#define GTEST_2_TYPENAMES_(T) typename T##0, typename T##1
+#define GTEST_3_TYPENAMES_(T) typename T##0, typename T##1, typename T##2
+#define GTEST_4_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \
+    typename T##3
+#define GTEST_5_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \
+    typename T##3, typename T##4
+#define GTEST_6_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \
+    typename T##3, typename T##4, typename T##5
+#define GTEST_7_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \
+    typename T##3, typename T##4, typename T##5, typename T##6
+#define GTEST_8_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \
+    typename T##3, typename T##4, typename T##5, typename T##6, typename T##7
+#define GTEST_9_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \
+    typename T##3, typename T##4, typename T##5, typename T##6, \
+    typename T##7, typename T##8
+#define GTEST_10_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \
+    typename T##3, typename T##4, typename T##5, typename T##6, \
+    typename T##7, typename T##8, typename T##9
+
+// In theory, defining stuff in the ::std namespace is undefined
+// behavior.  We can do this as we are playing the role of a standard
+// library vendor.
+namespace std {
+namespace tr1 {
+
+template <typename T0 = void, typename T1 = void, typename T2 = void,
+    typename T3 = void, typename T4 = void, typename T5 = void,
+    typename T6 = void, typename T7 = void, typename T8 = void,
+    typename T9 = void>
+class tuple;
+
+// Anything in namespace gtest_internal is Google Test's INTERNAL
+// IMPLEMENTATION DETAIL and MUST NOT BE USED DIRECTLY in user code.
+namespace gtest_internal {
+
+// ByRef<T>::type is T if T is a reference; otherwise it's const T&.
+template <typename T>
+struct ByRef { typedef const T& type; };  // NOLINT
+template <typename T>
+struct ByRef<T&> { typedef T& type; };  // NOLINT
+
+// A handy wrapper for ByRef.
+#define GTEST_BY_REF_(T) typename ::std::tr1::gtest_internal::ByRef<T>::type
+
+// AddRef<T>::type is T if T is a reference; otherwise it's T&.  This
+// is the same as tr1::add_reference<T>::type.
+template <typename T>
+struct AddRef { typedef T& type; };  // NOLINT
+template <typename T>
+struct AddRef<T&> { typedef T& type; };  // NOLINT
+
+// A handy wrapper for AddRef.
+#define GTEST_ADD_REF_(T) typename ::std::tr1::gtest_internal::AddRef<T>::type
+
+// A helper for implementing get<k>().
+template <int k> class Get;
+
+// A helper for implementing tuple_element<k, T>.  kIndexValid is true
+// iff k < the number of fields in tuple type T.
+template <bool kIndexValid, int kIndex, class Tuple>
+struct TupleElement;
+
+template <GTEST_10_TYPENAMES_(T)>
+struct TupleElement<true, 0, GTEST_10_TUPLE_(T)> {
+  typedef T0 type;
+};
+
+template <GTEST_10_TYPENAMES_(T)>
+struct TupleElement<true, 1, GTEST_10_TUPLE_(T)> {
+  typedef T1 type;
+};
+
+template <GTEST_10_TYPENAMES_(T)>
+struct TupleElement<true, 2, GTEST_10_TUPLE_(T)> {
+  typedef T2 type;
+};
+
+template <GTEST_10_TYPENAMES_(T)>
+struct TupleElement<true, 3, GTEST_10_TUPLE_(T)> {
+  typedef T3 type;
+};
+
+template <GTEST_10_TYPENAMES_(T)>
+struct TupleElement<true, 4, GTEST_10_TUPLE_(T)> {
+  typedef T4 type;
+};
+
+template <GTEST_10_TYPENAMES_(T)>
+struct TupleElement<true, 5, GTEST_10_TUPLE_(T)> {
+  typedef T5 type;
+};
+
+template <GTEST_10_TYPENAMES_(T)>
+struct TupleElement<true, 6, GTEST_10_TUPLE_(T)> {
+  typedef T6 type;
+};
+
+template <GTEST_10_TYPENAMES_(T)>
+struct TupleElement<true, 7, GTEST_10_TUPLE_(T)> {
+  typedef T7 type;
+};
+
+template <GTEST_10_TYPENAMES_(T)>
+struct TupleElement<true, 8, GTEST_10_TUPLE_(T)> {
+  typedef T8 type;
+};
+
+template <GTEST_10_TYPENAMES_(T)>
+struct TupleElement<true, 9, GTEST_10_TUPLE_(T)> {
+  typedef T9 type;
+};
+
+}  // namespace gtest_internal
+
+template <>
+class tuple<> {
+ public:
+  tuple() {}
+  tuple(const tuple& /* t */)  {}
+  tuple& operator=(const tuple& /* t */) { return *this; }
+};
+
+template <GTEST_1_TYPENAMES_(T)>
+class GTEST_1_TUPLE_(T) {
+ public:
+  template <int k> friend class gtest_internal::Get;
+
+  tuple() : f0_() {}
+
+  explicit tuple(GTEST_BY_REF_(T0) f0) : f0_(f0) {}
+
+  tuple(const tuple& t) : f0_(t.f0_) {}
+
+  template <GTEST_1_TYPENAMES_(U)>
+  tuple(const GTEST_1_TUPLE_(U)& t) : f0_(t.f0_) {}
+
+  tuple& operator=(const tuple& t) { return CopyFrom(t); }
+
+  template <GTEST_1_TYPENAMES_(U)>
+  tuple& operator=(const GTEST_1_TUPLE_(U)& t) {
+    return CopyFrom(t);
+  }
+
+  GTEST_DECLARE_TUPLE_AS_FRIEND_
+
+  template <GTEST_1_TYPENAMES_(U)>
+  tuple& CopyFrom(const GTEST_1_TUPLE_(U)& t) {
+    f0_ = t.f0_;
+    return *this;
+  }
+
+  T0 f0_;
+};
+
+template <GTEST_2_TYPENAMES_(T)>
+class GTEST_2_TUPLE_(T) {
+ public:
+  template <int k> friend class gtest_internal::Get;
+
+  tuple() : f0_(), f1_() {}
+
+  explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1) : f0_(f0),
+      f1_(f1) {}
+
+  tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_) {}
+
+  template <GTEST_2_TYPENAMES_(U)>
+  tuple(const GTEST_2_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_) {}
+  template <typename U0, typename U1>
+  tuple(const ::std::pair<U0, U1>& p) : f0_(p.first), f1_(p.second) {}
+
+  tuple& operator=(const tuple& t) { return CopyFrom(t); }
+
+  template <GTEST_2_TYPENAMES_(U)>
+  tuple& operator=(const GTEST_2_TUPLE_(U)& t) {
+    return CopyFrom(t);
+  }
+  template <typename U0, typename U1>
+  tuple& operator=(const ::std::pair<U0, U1>& p) {
+    f0_ = p.first;
+    f1_ = p.second;
+    return *this;
+  }
+
+  GTEST_DECLARE_TUPLE_AS_FRIEND_
+
+  template <GTEST_2_TYPENAMES_(U)>
+  tuple& CopyFrom(const GTEST_2_TUPLE_(U)& t) {
+    f0_ = t.f0_;
+    f1_ = t.f1_;
+    return *this;
+  }
+
+  T0 f0_;
+  T1 f1_;
+};
+
+template <GTEST_3_TYPENAMES_(T)>
+class GTEST_3_TUPLE_(T) {
+ public:
+  template <int k> friend class gtest_internal::Get;
+
+  tuple() : f0_(), f1_(), f2_() {}
+
+  explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1,
+      GTEST_BY_REF_(T2) f2) : f0_(f0), f1_(f1), f2_(f2) {}
+
+  tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_) {}
+
+  template <GTEST_3_TYPENAMES_(U)>
+  tuple(const GTEST_3_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_) {}
+
+  tuple& operator=(const tuple& t) { return CopyFrom(t); }
+
+  template <GTEST_3_TYPENAMES_(U)>
+  tuple& operator=(const GTEST_3_TUPLE_(U)& t) {
+    return CopyFrom(t);
+  }
+
+  GTEST_DECLARE_TUPLE_AS_FRIEND_
+
+  template <GTEST_3_TYPENAMES_(U)>
+  tuple& CopyFrom(const GTEST_3_TUPLE_(U)& t) {
+    f0_ = t.f0_;
+    f1_ = t.f1_;
+    f2_ = t.f2_;
+    return *this;
+  }
+
+  T0 f0_;
+  T1 f1_;
+  T2 f2_;
+};
+
+template <GTEST_4_TYPENAMES_(T)>
+class GTEST_4_TUPLE_(T) {
+ public:
+  template <int k> friend class gtest_internal::Get;
+
+  tuple() : f0_(), f1_(), f2_(), f3_() {}
+
+  explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1,
+      GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3) : f0_(f0), f1_(f1), f2_(f2),
+      f3_(f3) {}
+
+  tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_) {}
+
+  template <GTEST_4_TYPENAMES_(U)>
+  tuple(const GTEST_4_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),
+      f3_(t.f3_) {}
+
+  tuple& operator=(const tuple& t) { return CopyFrom(t); }
+
+  template <GTEST_4_TYPENAMES_(U)>
+  tuple& operator=(const GTEST_4_TUPLE_(U)& t) {
+    return CopyFrom(t);
+  }
+
+  GTEST_DECLARE_TUPLE_AS_FRIEND_
+
+  template <GTEST_4_TYPENAMES_(U)>
+  tuple& CopyFrom(const GTEST_4_TUPLE_(U)& t) {
+    f0_ = t.f0_;
+    f1_ = t.f1_;
+    f2_ = t.f2_;
+    f3_ = t.f3_;
+    return *this;
+  }
+
+  T0 f0_;
+  T1 f1_;
+  T2 f2_;
+  T3 f3_;
+};
+
+template <GTEST_5_TYPENAMES_(T)>
+class GTEST_5_TUPLE_(T) {
+ public:
+  template <int k> friend class gtest_internal::Get;
+
+  tuple() : f0_(), f1_(), f2_(), f3_(), f4_() {}
+
+  explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1,
+      GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3,
+      GTEST_BY_REF_(T4) f4) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4) {}
+
+  tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_),
+      f4_(t.f4_) {}
+
+  template <GTEST_5_TYPENAMES_(U)>
+  tuple(const GTEST_5_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),
+      f3_(t.f3_), f4_(t.f4_) {}
+
+  tuple& operator=(const tuple& t) { return CopyFrom(t); }
+
+  template <GTEST_5_TYPENAMES_(U)>
+  tuple& operator=(const GTEST_5_TUPLE_(U)& t) {
+    return CopyFrom(t);
+  }
+
+  GTEST_DECLARE_TUPLE_AS_FRIEND_
+
+  template <GTEST_5_TYPENAMES_(U)>
+  tuple& CopyFrom(const GTEST_5_TUPLE_(U)& t) {
+    f0_ = t.f0_;
+    f1_ = t.f1_;
+    f2_ = t.f2_;
+    f3_ = t.f3_;
+    f4_ = t.f4_;
+    return *this;
+  }
+
+  T0 f0_;
+  T1 f1_;
+  T2 f2_;
+  T3 f3_;
+  T4 f4_;
+};
+
+template <GTEST_6_TYPENAMES_(T)>
+class GTEST_6_TUPLE_(T) {
+ public:
+  template <int k> friend class gtest_internal::Get;
+
+  tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_() {}
+
+  explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1,
+      GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4,
+      GTEST_BY_REF_(T5) f5) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4),
+      f5_(f5) {}
+
+  tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_),
+      f4_(t.f4_), f5_(t.f5_) {}
+
+  template <GTEST_6_TYPENAMES_(U)>
+  tuple(const GTEST_6_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),
+      f3_(t.f3_), f4_(t.f4_), f5_(t.f5_) {}
+
+  tuple& operator=(const tuple& t) { return CopyFrom(t); }
+
+  template <GTEST_6_TYPENAMES_(U)>
+  tuple& operator=(const GTEST_6_TUPLE_(U)& t) {
+    return CopyFrom(t);
+  }
+
+  GTEST_DECLARE_TUPLE_AS_FRIEND_
+
+  template <GTEST_6_TYPENAMES_(U)>
+  tuple& CopyFrom(const GTEST_6_TUPLE_(U)& t) {
+    f0_ = t.f0_;
+    f1_ = t.f1_;
+    f2_ = t.f2_;
+    f3_ = t.f3_;
+    f4_ = t.f4_;
+    f5_ = t.f5_;
+    return *this;
+  }
+
+  T0 f0_;
+  T1 f1_;
+  T2 f2_;
+  T3 f3_;
+  T4 f4_;
+  T5 f5_;
+};
+
+template <GTEST_7_TYPENAMES_(T)>
+class GTEST_7_TUPLE_(T) {
+ public:
+  template <int k> friend class gtest_internal::Get;
+
+  tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_() {}
+
+  explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1,
+      GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4,
+      GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6) : f0_(f0), f1_(f1), f2_(f2),
+      f3_(f3), f4_(f4), f5_(f5), f6_(f6) {}
+
+  tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_),
+      f4_(t.f4_), f5_(t.f5_), f6_(t.f6_) {}
+
+  template <GTEST_7_TYPENAMES_(U)>
+  tuple(const GTEST_7_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),
+      f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_) {}
+
+  tuple& operator=(const tuple& t) { return CopyFrom(t); }
+
+  template <GTEST_7_TYPENAMES_(U)>
+  tuple& operator=(const GTEST_7_TUPLE_(U)& t) {
+    return CopyFrom(t);
+  }
+
+  GTEST_DECLARE_TUPLE_AS_FRIEND_
+
+  template <GTEST_7_TYPENAMES_(U)>
+  tuple& CopyFrom(const GTEST_7_TUPLE_(U)& t) {
+    f0_ = t.f0_;
+    f1_ = t.f1_;
+    f2_ = t.f2_;
+    f3_ = t.f3_;
+    f4_ = t.f4_;
+    f5_ = t.f5_;
+    f6_ = t.f6_;
+    return *this;
+  }
+
+  T0 f0_;
+  T1 f1_;
+  T2 f2_;
+  T3 f3_;
+  T4 f4_;
+  T5 f5_;
+  T6 f6_;
+};
+
+template <GTEST_8_TYPENAMES_(T)>
+class GTEST_8_TUPLE_(T) {
+ public:
+  template <int k> friend class gtest_internal::Get;
+
+  tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_() {}
+
+  explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1,
+      GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4,
+      GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6,
+      GTEST_BY_REF_(T7) f7) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4),
+      f5_(f5), f6_(f6), f7_(f7) {}
+
+  tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_),
+      f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_) {}
+
+  template <GTEST_8_TYPENAMES_(U)>
+  tuple(const GTEST_8_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),
+      f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_) {}
+
+  tuple& operator=(const tuple& t) { return CopyFrom(t); }
+
+  template <GTEST_8_TYPENAMES_(U)>
+  tuple& operator=(const GTEST_8_TUPLE_(U)& t) {
+    return CopyFrom(t);
+  }
+
+  GTEST_DECLARE_TUPLE_AS_FRIEND_
+
+  template <GTEST_8_TYPENAMES_(U)>
+  tuple& CopyFrom(const GTEST_8_TUPLE_(U)& t) {
+    f0_ = t.f0_;
+    f1_ = t.f1_;
+    f2_ = t.f2_;
+    f3_ = t.f3_;
+    f4_ = t.f4_;
+    f5_ = t.f5_;
+    f6_ = t.f6_;
+    f7_ = t.f7_;
+    return *this;
+  }
+
+  T0 f0_;
+  T1 f1_;
+  T2 f2_;
+  T3 f3_;
+  T4 f4_;
+  T5 f5_;
+  T6 f6_;
+  T7 f7_;
+};
+
+template <GTEST_9_TYPENAMES_(T)>
+class GTEST_9_TUPLE_(T) {
+ public:
+  template <int k> friend class gtest_internal::Get;
+
+  tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_(), f8_() {}
+
+  explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1,
+      GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4,
+      GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6, GTEST_BY_REF_(T7) f7,
+      GTEST_BY_REF_(T8) f8) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4),
+      f5_(f5), f6_(f6), f7_(f7), f8_(f8) {}
+
+  tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_),
+      f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_) {}
+
+  template <GTEST_9_TYPENAMES_(U)>
+  tuple(const GTEST_9_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),
+      f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_) {}
+
+  tuple& operator=(const tuple& t) { return CopyFrom(t); }
+
+  template <GTEST_9_TYPENAMES_(U)>
+  tuple& operator=(const GTEST_9_TUPLE_(U)& t) {
+    return CopyFrom(t);
+  }
+
+  GTEST_DECLARE_TUPLE_AS_FRIEND_
+
+  template <GTEST_9_TYPENAMES_(U)>
+  tuple& CopyFrom(const GTEST_9_TUPLE_(U)& t) {
+    f0_ = t.f0_;
+    f1_ = t.f1_;
+    f2_ = t.f2_;
+    f3_ = t.f3_;
+    f4_ = t.f4_;
+    f5_ = t.f5_;
+    f6_ = t.f6_;
+    f7_ = t.f7_;
+    f8_ = t.f8_;
+    return *this;
+  }
+
+  T0 f0_;
+  T1 f1_;
+  T2 f2_;
+  T3 f3_;
+  T4 f4_;
+  T5 f5_;
+  T6 f6_;
+  T7 f7_;
+  T8 f8_;
+};
+
+template <GTEST_10_TYPENAMES_(T)>
+class tuple {
+ public:
+  template <int k> friend class gtest_internal::Get;
+
+  tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_(), f8_(),
+      f9_() {}
+
+  explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1,
+      GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4,
+      GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6, GTEST_BY_REF_(T7) f7,
+      GTEST_BY_REF_(T8) f8, GTEST_BY_REF_(T9) f9) : f0_(f0), f1_(f1), f2_(f2),
+      f3_(f3), f4_(f4), f5_(f5), f6_(f6), f7_(f7), f8_(f8), f9_(f9) {}
+
+  tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_),
+      f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_), f9_(t.f9_) {}
+
+  template <GTEST_10_TYPENAMES_(U)>
+  tuple(const GTEST_10_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),
+      f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_),
+      f9_(t.f9_) {}
+
+  tuple& operator=(const tuple& t) { return CopyFrom(t); }
+
+  template <GTEST_10_TYPENAMES_(U)>
+  tuple& operator=(const GTEST_10_TUPLE_(U)& t) {
+    return CopyFrom(t);
+  }
+
+  GTEST_DECLARE_TUPLE_AS_FRIEND_
+
+  template <GTEST_10_TYPENAMES_(U)>
+  tuple& CopyFrom(const GTEST_10_TUPLE_(U)& t) {
+    f0_ = t.f0_;
+    f1_ = t.f1_;
+    f2_ = t.f2_;
+    f3_ = t.f3_;
+    f4_ = t.f4_;
+    f5_ = t.f5_;
+    f6_ = t.f6_;
+    f7_ = t.f7_;
+    f8_ = t.f8_;
+    f9_ = t.f9_;
+    return *this;
+  }
+
+  T0 f0_;
+  T1 f1_;
+  T2 f2_;
+  T3 f3_;
+  T4 f4_;
+  T5 f5_;
+  T6 f6_;
+  T7 f7_;
+  T8 f8_;
+  T9 f9_;
+};
+
+// 6.1.3.2 Tuple creation functions.
+
+// Known limitations: we don't support passing an
+// std::tr1::reference_wrapper<T> to make_tuple().  And we don't
+// implement tie().
+
+inline tuple<> make_tuple() { return tuple<>(); }
+
+template <GTEST_1_TYPENAMES_(T)>
+inline GTEST_1_TUPLE_(T) make_tuple(const T0& f0) {
+  return GTEST_1_TUPLE_(T)(f0);
+}
+
+template <GTEST_2_TYPENAMES_(T)>
+inline GTEST_2_TUPLE_(T) make_tuple(const T0& f0, const T1& f1) {
+  return GTEST_2_TUPLE_(T)(f0, f1);
+}
+
+template <GTEST_3_TYPENAMES_(T)>
+inline GTEST_3_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2) {
+  return GTEST_3_TUPLE_(T)(f0, f1, f2);
+}
+
+template <GTEST_4_TYPENAMES_(T)>
+inline GTEST_4_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2,
+    const T3& f3) {
+  return GTEST_4_TUPLE_(T)(f0, f1, f2, f3);
+}
+
+template <GTEST_5_TYPENAMES_(T)>
+inline GTEST_5_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2,
+    const T3& f3, const T4& f4) {
+  return GTEST_5_TUPLE_(T)(f0, f1, f2, f3, f4);
+}
+
+template <GTEST_6_TYPENAMES_(T)>
+inline GTEST_6_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2,
+    const T3& f3, const T4& f4, const T5& f5) {
+  return GTEST_6_TUPLE_(T)(f0, f1, f2, f3, f4, f5);
+}
+
+template <GTEST_7_TYPENAMES_(T)>
+inline GTEST_7_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2,
+    const T3& f3, const T4& f4, const T5& f5, const T6& f6) {
+  return GTEST_7_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6);
+}
+
+template <GTEST_8_TYPENAMES_(T)>
+inline GTEST_8_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2,
+    const T3& f3, const T4& f4, const T5& f5, const T6& f6, const T7& f7) {
+  return GTEST_8_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6, f7);
+}
+
+template <GTEST_9_TYPENAMES_(T)>
+inline GTEST_9_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2,
+    const T3& f3, const T4& f4, const T5& f5, const T6& f6, const T7& f7,
+    const T8& f8) {
+  return GTEST_9_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6, f7, f8);
+}
+
+template <GTEST_10_TYPENAMES_(T)>
+inline GTEST_10_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2,
+    const T3& f3, const T4& f4, const T5& f5, const T6& f6, const T7& f7,
+    const T8& f8, const T9& f9) {
+  return GTEST_10_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6, f7, f8, f9);
+}
+
+// 6.1.3.3 Tuple helper classes.
+
+template <typename Tuple> struct tuple_size;
+
+template <GTEST_0_TYPENAMES_(T)>
+struct tuple_size<GTEST_0_TUPLE_(T)> {
+  static const int value = 0;
+};
+
+template <GTEST_1_TYPENAMES_(T)>
+struct tuple_size<GTEST_1_TUPLE_(T)> {
+  static const int value = 1;
+};
+
+template <GTEST_2_TYPENAMES_(T)>
+struct tuple_size<GTEST_2_TUPLE_(T)> {
+  static const int value = 2;
+};
+
+template <GTEST_3_TYPENAMES_(T)>
+struct tuple_size<GTEST_3_TUPLE_(T)> {
+  static const int value = 3;
+};
+
+template <GTEST_4_TYPENAMES_(T)>
+struct tuple_size<GTEST_4_TUPLE_(T)> {
+  static const int value = 4;
+};
+
+template <GTEST_5_TYPENAMES_(T)>
+struct tuple_size<GTEST_5_TUPLE_(T)> {
+  static const int value = 5;
+};
+
+template <GTEST_6_TYPENAMES_(T)>
+struct tuple_size<GTEST_6_TUPLE_(T)> {
+  static const int value = 6;
+};
+
+template <GTEST_7_TYPENAMES_(T)>
+struct tuple_size<GTEST_7_TUPLE_(T)> {
+  static const int value = 7;
+};
+
+template <GTEST_8_TYPENAMES_(T)>
+struct tuple_size<GTEST_8_TUPLE_(T)> {
+  static const int value = 8;
+};
+
+template <GTEST_9_TYPENAMES_(T)>
+struct tuple_size<GTEST_9_TUPLE_(T)> {
+  static const int value = 9;
+};
+
+template <GTEST_10_TYPENAMES_(T)>
+struct tuple_size<GTEST_10_TUPLE_(T)> {
+  static const int value = 10;
+};
+
+template <int k, class Tuple>
+struct tuple_element {
+  typedef typename gtest_internal::TupleElement<
+      k < (tuple_size<Tuple>::value), k, Tuple>::type type;
+};
+
+#define GTEST_TUPLE_ELEMENT_(k, Tuple) typename tuple_element<k, Tuple >::type
+
+// 6.1.3.4 Element access.
+
+namespace gtest_internal {
+
+template <>
+class Get<0> {
+ public:
+  template <class Tuple>
+  static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(0, Tuple))
+  Field(Tuple& t) { return t.f0_; }  // NOLINT
+
+  template <class Tuple>
+  static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(0, Tuple))
+  ConstField(const Tuple& t) { return t.f0_; }
+};
+
+template <>
+class Get<1> {
+ public:
+  template <class Tuple>
+  static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(1, Tuple))
+  Field(Tuple& t) { return t.f1_; }  // NOLINT
+
+  template <class Tuple>
+  static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(1, Tuple))
+  ConstField(const Tuple& t) { return t.f1_; }
+};
+
+template <>
+class Get<2> {
+ public:
+  template <class Tuple>
+  static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(2, Tuple))
+  Field(Tuple& t) { return t.f2_; }  // NOLINT
+
+  template <class Tuple>
+  static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(2, Tuple))
+  ConstField(const Tuple& t) { return t.f2_; }
+};
+
+template <>
+class Get<3> {
+ public:
+  template <class Tuple>
+  static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(3, Tuple))
+  Field(Tuple& t) { return t.f3_; }  // NOLINT
+
+  template <class Tuple>
+  static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(3, Tuple))
+  ConstField(const Tuple& t) { return t.f3_; }
+};
+
+template <>
+class Get<4> {
+ public:
+  template <class Tuple>
+  static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(4, Tuple))
+  Field(Tuple& t) { return t.f4_; }  // NOLINT
+
+  template <class Tuple>
+  static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(4, Tuple))
+  ConstField(const Tuple& t) { return t.f4_; }
+};
+
+template <>
+class Get<5> {
+ public:
+  template <class Tuple>
+  static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(5, Tuple))
+  Field(Tuple& t) { return t.f5_; }  // NOLINT
+
+  template <class Tuple>
+  static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(5, Tuple))
+  ConstField(const Tuple& t) { return t.f5_; }
+};
+
+template <>
+class Get<6> {
+ public:
+  template <class Tuple>
+  static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(6, Tuple))
+  Field(Tuple& t) { return t.f6_; }  // NOLINT
+
+  template <class Tuple>
+  static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(6, Tuple))
+  ConstField(const Tuple& t) { return t.f6_; }
+};
+
+template <>
+class Get<7> {
+ public:
+  template <class Tuple>
+  static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(7, Tuple))
+  Field(Tuple& t) { return t.f7_; }  // NOLINT
+
+  template <class Tuple>
+  static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(7, Tuple))
+  ConstField(const Tuple& t) { return t.f7_; }
+};
+
+template <>
+class Get<8> {
+ public:
+  template <class Tuple>
+  static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(8, Tuple))
+  Field(Tuple& t) { return t.f8_; }  // NOLINT
+
+  template <class Tuple>
+  static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(8, Tuple))
+  ConstField(const Tuple& t) { return t.f8_; }
+};
+
+template <>
+class Get<9> {
+ public:
+  template <class Tuple>
+  static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(9, Tuple))
+  Field(Tuple& t) { return t.f9_; }  // NOLINT
+
+  template <class Tuple>
+  static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(9, Tuple))
+  ConstField(const Tuple& t) { return t.f9_; }
+};
+
+}  // namespace gtest_internal
+
+template <int k, GTEST_10_TYPENAMES_(T)>
+GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(k, GTEST_10_TUPLE_(T)))
+get(GTEST_10_TUPLE_(T)& t) {
+  return gtest_internal::Get<k>::Field(t);
+}
+
+template <int k, GTEST_10_TYPENAMES_(T)>
+GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(k,  GTEST_10_TUPLE_(T)))
+get(const GTEST_10_TUPLE_(T)& t) {
+  return gtest_internal::Get<k>::ConstField(t);
+}
+
+// 6.1.3.5 Relational operators
+
+// We only implement == and !=, as we don't have a need for the rest yet.
+
+namespace gtest_internal {
+
+// SameSizeTuplePrefixComparator<k, k>::Eq(t1, t2) returns true if the
+// first k fields of t1 equals the first k fields of t2.
+// SameSizeTuplePrefixComparator(k1, k2) would be a compiler error if
+// k1 != k2.
+template <int kSize1, int kSize2>
+struct SameSizeTuplePrefixComparator;
+
+template <>
+struct SameSizeTuplePrefixComparator<0, 0> {
+  template <class Tuple1, class Tuple2>
+  static bool Eq(const Tuple1& /* t1 */, const Tuple2& /* t2 */) {
+    return true;
+  }
+};
+
+template <int k>
+struct SameSizeTuplePrefixComparator<k, k> {
+  template <class Tuple1, class Tuple2>
+  static bool Eq(const Tuple1& t1, const Tuple2& t2) {
+    return SameSizeTuplePrefixComparator<k - 1, k - 1>::Eq(t1, t2) &&
+        ::std::tr1::get<k - 1>(t1) == ::std::tr1::get<k - 1>(t2);
+  }
+};
+
+}  // namespace gtest_internal
+
+template <GTEST_10_TYPENAMES_(T), GTEST_10_TYPENAMES_(U)>
+inline bool operator==(const GTEST_10_TUPLE_(T)& t,
+                       const GTEST_10_TUPLE_(U)& u) {
+  return gtest_internal::SameSizeTuplePrefixComparator<
+      tuple_size<GTEST_10_TUPLE_(T)>::value,
+      tuple_size<GTEST_10_TUPLE_(U)>::value>::Eq(t, u);
+}
+
+template <GTEST_10_TYPENAMES_(T), GTEST_10_TYPENAMES_(U)>
+inline bool operator!=(const GTEST_10_TUPLE_(T)& t,
+                       const GTEST_10_TUPLE_(U)& u) { return !(t == u); }
+
+// 6.1.4 Pairs.
+// Unimplemented.
+
+}  // namespace tr1
+}  // namespace std
+
+#undef GTEST_0_TUPLE_
+#undef GTEST_1_TUPLE_
+#undef GTEST_2_TUPLE_
+#undef GTEST_3_TUPLE_
+#undef GTEST_4_TUPLE_
+#undef GTEST_5_TUPLE_
+#undef GTEST_6_TUPLE_
+#undef GTEST_7_TUPLE_
+#undef GTEST_8_TUPLE_
+#undef GTEST_9_TUPLE_
+#undef GTEST_10_TUPLE_
+
+#undef GTEST_0_TYPENAMES_
+#undef GTEST_1_TYPENAMES_
+#undef GTEST_2_TYPENAMES_
+#undef GTEST_3_TYPENAMES_
+#undef GTEST_4_TYPENAMES_
+#undef GTEST_5_TYPENAMES_
+#undef GTEST_6_TYPENAMES_
+#undef GTEST_7_TYPENAMES_
+#undef GTEST_8_TYPENAMES_
+#undef GTEST_9_TYPENAMES_
+#undef GTEST_10_TYPENAMES_
+
+#undef GTEST_DECLARE_TUPLE_AS_FRIEND_
+#undef GTEST_BY_REF_
+#undef GTEST_ADD_REF_
+#undef GTEST_TUPLE_ELEMENT_
+
+#endif  // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_
diff --git a/google-breakpad/src/testing/gtest/include/gtest/internal/gtest-tuple.h.pump b/google-breakpad/src/testing/gtest/include/gtest/internal/gtest-tuple.h.pump
new file mode 100644
index 0000000..238e8fc
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/include/gtest/internal/gtest-tuple.h.pump
@@ -0,0 +1,339 @@
+$$ -*- mode: c++; -*-
+$var n = 10  $$ Maximum number of tuple fields we want to support.
+$$ This meta comment fixes auto-indentation in Emacs. }}
+// Copyright 2009 Google Inc.
+// All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Implements a subset of TR1 tuple needed by Google Test and Google Mock.
+
+#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_
+#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_
+
+#include <utility>  // For ::std::pair.
+
+// The compiler used in Symbian has a bug that prevents us from declaring the
+// tuple template as a friend (it complains that tuple is redefined).  This
+// hack bypasses the bug by declaring the members that should otherwise be
+// private as public.
+// Sun Studio versions < 12 also have the above bug.
+#if defined(__SYMBIAN32__) || (defined(__SUNPRO_CC) && __SUNPRO_CC < 0x590)
+# define GTEST_DECLARE_TUPLE_AS_FRIEND_ public:
+#else
+# define GTEST_DECLARE_TUPLE_AS_FRIEND_ \
+    template <GTEST_$(n)_TYPENAMES_(U)> friend class tuple; \
+   private:
+#endif
+
+
+$range i 0..n-1
+$range j 0..n
+$range k 1..n
+// GTEST_n_TUPLE_(T) is the type of an n-tuple.
+#define GTEST_0_TUPLE_(T) tuple<>
+
+$for k [[
+$range m 0..k-1
+$range m2 k..n-1
+#define GTEST_$(k)_TUPLE_(T) tuple<$for m, [[T##$m]]$for m2 [[, void]]>
+
+]]
+
+// GTEST_n_TYPENAMES_(T) declares a list of n typenames.
+
+$for j [[
+$range m 0..j-1
+#define GTEST_$(j)_TYPENAMES_(T) $for m, [[typename T##$m]]
+
+
+]]
+
+// In theory, defining stuff in the ::std namespace is undefined
+// behavior.  We can do this as we are playing the role of a standard
+// library vendor.
+namespace std {
+namespace tr1 {
+
+template <$for i, [[typename T$i = void]]>
+class tuple;
+
+// Anything in namespace gtest_internal is Google Test's INTERNAL
+// IMPLEMENTATION DETAIL and MUST NOT BE USED DIRECTLY in user code.
+namespace gtest_internal {
+
+// ByRef<T>::type is T if T is a reference; otherwise it's const T&.
+template <typename T>
+struct ByRef { typedef const T& type; };  // NOLINT
+template <typename T>
+struct ByRef<T&> { typedef T& type; };  // NOLINT
+
+// A handy wrapper for ByRef.
+#define GTEST_BY_REF_(T) typename ::std::tr1::gtest_internal::ByRef<T>::type
+
+// AddRef<T>::type is T if T is a reference; otherwise it's T&.  This
+// is the same as tr1::add_reference<T>::type.
+template <typename T>
+struct AddRef { typedef T& type; };  // NOLINT
+template <typename T>
+struct AddRef<T&> { typedef T& type; };  // NOLINT
+
+// A handy wrapper for AddRef.
+#define GTEST_ADD_REF_(T) typename ::std::tr1::gtest_internal::AddRef<T>::type
+
+// A helper for implementing get<k>().
+template <int k> class Get;
+
+// A helper for implementing tuple_element<k, T>.  kIndexValid is true
+// iff k < the number of fields in tuple type T.
+template <bool kIndexValid, int kIndex, class Tuple>
+struct TupleElement;
+
+
+$for i [[
+template <GTEST_$(n)_TYPENAMES_(T)>
+struct TupleElement<true, $i, GTEST_$(n)_TUPLE_(T)> {
+  typedef T$i type;
+};
+
+
+]]
+}  // namespace gtest_internal
+
+template <>
+class tuple<> {
+ public:
+  tuple() {}
+  tuple(const tuple& /* t */)  {}
+  tuple& operator=(const tuple& /* t */) { return *this; }
+};
+
+
+$for k [[
+$range m 0..k-1
+template <GTEST_$(k)_TYPENAMES_(T)>
+class $if k < n [[GTEST_$(k)_TUPLE_(T)]] $else [[tuple]] {
+ public:
+  template <int k> friend class gtest_internal::Get;
+
+  tuple() : $for m, [[f$(m)_()]] {}
+
+  explicit tuple($for m, [[GTEST_BY_REF_(T$m) f$m]]) : [[]]
+$for m, [[f$(m)_(f$m)]] {}
+
+  tuple(const tuple& t) : $for m, [[f$(m)_(t.f$(m)_)]] {}
+
+  template <GTEST_$(k)_TYPENAMES_(U)>
+  tuple(const GTEST_$(k)_TUPLE_(U)& t) : $for m, [[f$(m)_(t.f$(m)_)]] {}
+
+$if k == 2 [[
+  template <typename U0, typename U1>
+  tuple(const ::std::pair<U0, U1>& p) : f0_(p.first), f1_(p.second) {}
+
+]]
+
+  tuple& operator=(const tuple& t) { return CopyFrom(t); }
+
+  template <GTEST_$(k)_TYPENAMES_(U)>
+  tuple& operator=(const GTEST_$(k)_TUPLE_(U)& t) {
+    return CopyFrom(t);
+  }
+
+$if k == 2 [[
+  template <typename U0, typename U1>
+  tuple& operator=(const ::std::pair<U0, U1>& p) {
+    f0_ = p.first;
+    f1_ = p.second;
+    return *this;
+  }
+
+]]
+
+  GTEST_DECLARE_TUPLE_AS_FRIEND_
+
+  template <GTEST_$(k)_TYPENAMES_(U)>
+  tuple& CopyFrom(const GTEST_$(k)_TUPLE_(U)& t) {
+
+$for m [[
+    f$(m)_ = t.f$(m)_;
+
+]]
+    return *this;
+  }
+
+
+$for m [[
+  T$m f$(m)_;
+
+]]
+};
+
+
+]]
+// 6.1.3.2 Tuple creation functions.
+
+// Known limitations: we don't support passing an
+// std::tr1::reference_wrapper<T> to make_tuple().  And we don't
+// implement tie().
+
+inline tuple<> make_tuple() { return tuple<>(); }
+
+$for k [[
+$range m 0..k-1
+
+template <GTEST_$(k)_TYPENAMES_(T)>
+inline GTEST_$(k)_TUPLE_(T) make_tuple($for m, [[const T$m& f$m]]) {
+  return GTEST_$(k)_TUPLE_(T)($for m, [[f$m]]);
+}
+
+]]
+
+// 6.1.3.3 Tuple helper classes.
+
+template <typename Tuple> struct tuple_size;
+
+
+$for j [[
+template <GTEST_$(j)_TYPENAMES_(T)>
+struct tuple_size<GTEST_$(j)_TUPLE_(T)> {
+  static const int value = $j;
+};
+
+
+]]
+template <int k, class Tuple>
+struct tuple_element {
+  typedef typename gtest_internal::TupleElement<
+      k < (tuple_size<Tuple>::value), k, Tuple>::type type;
+};
+
+#define GTEST_TUPLE_ELEMENT_(k, Tuple) typename tuple_element<k, Tuple >::type
+
+// 6.1.3.4 Element access.
+
+namespace gtest_internal {
+
+
+$for i [[
+template <>
+class Get<$i> {
+ public:
+  template <class Tuple>
+  static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_($i, Tuple))
+  Field(Tuple& t) { return t.f$(i)_; }  // NOLINT
+
+  template <class Tuple>
+  static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_($i, Tuple))
+  ConstField(const Tuple& t) { return t.f$(i)_; }
+};
+
+
+]]
+}  // namespace gtest_internal
+
+template <int k, GTEST_$(n)_TYPENAMES_(T)>
+GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(k, GTEST_$(n)_TUPLE_(T)))
+get(GTEST_$(n)_TUPLE_(T)& t) {
+  return gtest_internal::Get<k>::Field(t);
+}
+
+template <int k, GTEST_$(n)_TYPENAMES_(T)>
+GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(k,  GTEST_$(n)_TUPLE_(T)))
+get(const GTEST_$(n)_TUPLE_(T)& t) {
+  return gtest_internal::Get<k>::ConstField(t);
+}
+
+// 6.1.3.5 Relational operators
+
+// We only implement == and !=, as we don't have a need for the rest yet.
+
+namespace gtest_internal {
+
+// SameSizeTuplePrefixComparator<k, k>::Eq(t1, t2) returns true if the
+// first k fields of t1 equals the first k fields of t2.
+// SameSizeTuplePrefixComparator(k1, k2) would be a compiler error if
+// k1 != k2.
+template <int kSize1, int kSize2>
+struct SameSizeTuplePrefixComparator;
+
+template <>
+struct SameSizeTuplePrefixComparator<0, 0> {
+  template <class Tuple1, class Tuple2>
+  static bool Eq(const Tuple1& /* t1 */, const Tuple2& /* t2 */) {
+    return true;
+  }
+};
+
+template <int k>
+struct SameSizeTuplePrefixComparator<k, k> {
+  template <class Tuple1, class Tuple2>
+  static bool Eq(const Tuple1& t1, const Tuple2& t2) {
+    return SameSizeTuplePrefixComparator<k - 1, k - 1>::Eq(t1, t2) &&
+        ::std::tr1::get<k - 1>(t1) == ::std::tr1::get<k - 1>(t2);
+  }
+};
+
+}  // namespace gtest_internal
+
+template <GTEST_$(n)_TYPENAMES_(T), GTEST_$(n)_TYPENAMES_(U)>
+inline bool operator==(const GTEST_$(n)_TUPLE_(T)& t,
+                       const GTEST_$(n)_TUPLE_(U)& u) {
+  return gtest_internal::SameSizeTuplePrefixComparator<
+      tuple_size<GTEST_$(n)_TUPLE_(T)>::value,
+      tuple_size<GTEST_$(n)_TUPLE_(U)>::value>::Eq(t, u);
+}
+
+template <GTEST_$(n)_TYPENAMES_(T), GTEST_$(n)_TYPENAMES_(U)>
+inline bool operator!=(const GTEST_$(n)_TUPLE_(T)& t,
+                       const GTEST_$(n)_TUPLE_(U)& u) { return !(t == u); }
+
+// 6.1.4 Pairs.
+// Unimplemented.
+
+}  // namespace tr1
+}  // namespace std
+
+
+$for j [[
+#undef GTEST_$(j)_TUPLE_
+
+]]
+
+
+$for j [[
+#undef GTEST_$(j)_TYPENAMES_
+
+]]
+
+#undef GTEST_DECLARE_TUPLE_AS_FRIEND_
+#undef GTEST_BY_REF_
+#undef GTEST_ADD_REF_
+#undef GTEST_TUPLE_ELEMENT_
+
+#endif  // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_
diff --git a/google-breakpad/src/testing/gtest/include/gtest/internal/gtest-type-util.h b/google-breakpad/src/testing/gtest/include/gtest/internal/gtest-type-util.h
new file mode 100644
index 0000000..ed58fce
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/include/gtest/internal/gtest-type-util.h
@@ -0,0 +1,3332 @@
+// This file was GENERATED by command:
+//     pump.py gtest-type-util.h.pump
+// DO NOT EDIT BY HAND!!!
+
+// Copyright 2008 Google Inc.
+// All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Type utilities needed for implementing typed and type-parameterized
+// tests.  This file is generated by a SCRIPT.  DO NOT EDIT BY HAND!
+//
+// Currently we support at most 50 types in a list, and at most 50
+// type-parameterized tests in one type-parameterized test case.
+// Please contact googletestframework@googlegroups.com if you need
+// more.
+
+#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
+#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
+
+#include "gtest/internal/gtest-port.h"
+#include "gtest/internal/gtest-string.h"
+
+// #ifdef __GNUC__ is too general here.  It is possible to use gcc without using
+// libstdc++ (which is where cxxabi.h comes from).
+# if GTEST_HAS_CXXABI_H_
+#  include <cxxabi.h>
+# elif defined(__HP_aCC)
+#  include <acxx_demangle.h>
+# endif  // GTEST_HASH_CXXABI_H_
+
+namespace testing {
+namespace internal {
+
+// GetTypeName<T>() returns a human-readable name of type T.
+// NB: This function is also used in Google Mock, so don't move it inside of
+// the typed-test-only section below.
+template <typename T>
+String GetTypeName() {
+# if GTEST_HAS_RTTI
+
+  const char* const name = typeid(T).name();
+#  if GTEST_HAS_CXXABI_H_ || defined(__HP_aCC)
+  int status = 0;
+  // gcc's implementation of typeid(T).name() mangles the type name,
+  // so we have to demangle it.
+#   if GTEST_HAS_CXXABI_H_
+  using abi::__cxa_demangle;
+#   endif  // GTEST_HAS_CXXABI_H_
+  char* const readable_name = __cxa_demangle(name, 0, 0, &status);
+  const String name_str(status == 0 ? readable_name : name);
+  free(readable_name);
+  return name_str;
+#  else
+  return name;
+#  endif  // GTEST_HAS_CXXABI_H_ || __HP_aCC
+
+# else
+
+  return "<type>";
+
+# endif  // GTEST_HAS_RTTI
+}
+
+#if GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P
+
+// AssertyTypeEq<T1, T2>::type is defined iff T1 and T2 are the same
+// type.  This can be used as a compile-time assertion to ensure that
+// two types are equal.
+
+template <typename T1, typename T2>
+struct AssertTypeEq;
+
+template <typename T>
+struct AssertTypeEq<T, T> {
+  typedef bool type;
+};
+
+// A unique type used as the default value for the arguments of class
+// template Types.  This allows us to simulate variadic templates
+// (e.g. Types<int>, Type<int, double>, and etc), which C++ doesn't
+// support directly.
+struct None {};
+
+// The following family of struct and struct templates are used to
+// represent type lists.  In particular, TypesN<T1, T2, ..., TN>
+// represents a type list with N types (T1, T2, ..., and TN) in it.
+// Except for Types0, every struct in the family has two member types:
+// Head for the first type in the list, and Tail for the rest of the
+// list.
+
+// The empty type list.
+struct Types0 {};
+
+// Type lists of length 1, 2, 3, and so on.
+
+template <typename T1>
+struct Types1 {
+  typedef T1 Head;
+  typedef Types0 Tail;
+};
+template <typename T1, typename T2>
+struct Types2 {
+  typedef T1 Head;
+  typedef Types1<T2> Tail;
+};
+
+template <typename T1, typename T2, typename T3>
+struct Types3 {
+  typedef T1 Head;
+  typedef Types2<T2, T3> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4>
+struct Types4 {
+  typedef T1 Head;
+  typedef Types3<T2, T3, T4> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5>
+struct Types5 {
+  typedef T1 Head;
+  typedef Types4<T2, T3, T4, T5> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6>
+struct Types6 {
+  typedef T1 Head;
+  typedef Types5<T2, T3, T4, T5, T6> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7>
+struct Types7 {
+  typedef T1 Head;
+  typedef Types6<T2, T3, T4, T5, T6, T7> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8>
+struct Types8 {
+  typedef T1 Head;
+  typedef Types7<T2, T3, T4, T5, T6, T7, T8> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9>
+struct Types9 {
+  typedef T1 Head;
+  typedef Types8<T2, T3, T4, T5, T6, T7, T8, T9> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10>
+struct Types10 {
+  typedef T1 Head;
+  typedef Types9<T2, T3, T4, T5, T6, T7, T8, T9, T10> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11>
+struct Types11 {
+  typedef T1 Head;
+  typedef Types10<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12>
+struct Types12 {
+  typedef T1 Head;
+  typedef Types11<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13>
+struct Types13 {
+  typedef T1 Head;
+  typedef Types12<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14>
+struct Types14 {
+  typedef T1 Head;
+  typedef Types13<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15>
+struct Types15 {
+  typedef T1 Head;
+  typedef Types14<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+      T15> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16>
+struct Types16 {
+  typedef T1 Head;
+  typedef Types15<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+      T16> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17>
+struct Types17 {
+  typedef T1 Head;
+  typedef Types16<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+      T16, T17> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18>
+struct Types18 {
+  typedef T1 Head;
+  typedef Types17<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+      T16, T17, T18> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19>
+struct Types19 {
+  typedef T1 Head;
+  typedef Types18<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+      T16, T17, T18, T19> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20>
+struct Types20 {
+  typedef T1 Head;
+  typedef Types19<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+      T16, T17, T18, T19, T20> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21>
+struct Types21 {
+  typedef T1 Head;
+  typedef Types20<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+      T16, T17, T18, T19, T20, T21> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22>
+struct Types22 {
+  typedef T1 Head;
+  typedef Types21<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+      T16, T17, T18, T19, T20, T21, T22> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23>
+struct Types23 {
+  typedef T1 Head;
+  typedef Types22<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+      T16, T17, T18, T19, T20, T21, T22, T23> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24>
+struct Types24 {
+  typedef T1 Head;
+  typedef Types23<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+      T16, T17, T18, T19, T20, T21, T22, T23, T24> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25>
+struct Types25 {
+  typedef T1 Head;
+  typedef Types24<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26>
+struct Types26 {
+  typedef T1 Head;
+  typedef Types25<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27>
+struct Types27 {
+  typedef T1 Head;
+  typedef Types26<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28>
+struct Types28 {
+  typedef T1 Head;
+  typedef Types27<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29>
+struct Types29 {
+  typedef T1 Head;
+  typedef Types28<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+      T29> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30>
+struct Types30 {
+  typedef T1 Head;
+  typedef Types29<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+      T30> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31>
+struct Types31 {
+  typedef T1 Head;
+  typedef Types30<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+      T30, T31> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32>
+struct Types32 {
+  typedef T1 Head;
+  typedef Types31<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+      T30, T31, T32> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33>
+struct Types33 {
+  typedef T1 Head;
+  typedef Types32<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+      T30, T31, T32, T33> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34>
+struct Types34 {
+  typedef T1 Head;
+  typedef Types33<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+      T30, T31, T32, T33, T34> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35>
+struct Types35 {
+  typedef T1 Head;
+  typedef Types34<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+      T30, T31, T32, T33, T34, T35> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36>
+struct Types36 {
+  typedef T1 Head;
+  typedef Types35<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+      T30, T31, T32, T33, T34, T35, T36> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37>
+struct Types37 {
+  typedef T1 Head;
+  typedef Types36<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+      T30, T31, T32, T33, T34, T35, T36, T37> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37, typename T38>
+struct Types38 {
+  typedef T1 Head;
+  typedef Types37<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+      T30, T31, T32, T33, T34, T35, T36, T37, T38> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37, typename T38, typename T39>
+struct Types39 {
+  typedef T1 Head;
+  typedef Types38<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+      T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37, typename T38, typename T39, typename T40>
+struct Types40 {
+  typedef T1 Head;
+  typedef Types39<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+      T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37, typename T38, typename T39, typename T40,
+    typename T41>
+struct Types41 {
+  typedef T1 Head;
+  typedef Types40<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+      T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37, typename T38, typename T39, typename T40,
+    typename T41, typename T42>
+struct Types42 {
+  typedef T1 Head;
+  typedef Types41<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+      T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37, typename T38, typename T39, typename T40,
+    typename T41, typename T42, typename T43>
+struct Types43 {
+  typedef T1 Head;
+  typedef Types42<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+      T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
+      T43> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37, typename T38, typename T39, typename T40,
+    typename T41, typename T42, typename T43, typename T44>
+struct Types44 {
+  typedef T1 Head;
+  typedef Types43<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+      T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
+      T44> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37, typename T38, typename T39, typename T40,
+    typename T41, typename T42, typename T43, typename T44, typename T45>
+struct Types45 {
+  typedef T1 Head;
+  typedef Types44<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+      T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
+      T44, T45> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37, typename T38, typename T39, typename T40,
+    typename T41, typename T42, typename T43, typename T44, typename T45,
+    typename T46>
+struct Types46 {
+  typedef T1 Head;
+  typedef Types45<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+      T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
+      T44, T45, T46> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37, typename T38, typename T39, typename T40,
+    typename T41, typename T42, typename T43, typename T44, typename T45,
+    typename T46, typename T47>
+struct Types47 {
+  typedef T1 Head;
+  typedef Types46<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+      T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
+      T44, T45, T46, T47> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37, typename T38, typename T39, typename T40,
+    typename T41, typename T42, typename T43, typename T44, typename T45,
+    typename T46, typename T47, typename T48>
+struct Types48 {
+  typedef T1 Head;
+  typedef Types47<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+      T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
+      T44, T45, T46, T47, T48> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37, typename T38, typename T39, typename T40,
+    typename T41, typename T42, typename T43, typename T44, typename T45,
+    typename T46, typename T47, typename T48, typename T49>
+struct Types49 {
+  typedef T1 Head;
+  typedef Types48<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+      T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
+      T44, T45, T46, T47, T48, T49> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37, typename T38, typename T39, typename T40,
+    typename T41, typename T42, typename T43, typename T44, typename T45,
+    typename T46, typename T47, typename T48, typename T49, typename T50>
+struct Types50 {
+  typedef T1 Head;
+  typedef Types49<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+      T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+      T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
+      T44, T45, T46, T47, T48, T49, T50> Tail;
+};
+
+
+}  // namespace internal
+
+// We don't want to require the users to write TypesN<...> directly,
+// as that would require them to count the length.  Types<...> is much
+// easier to write, but generates horrible messages when there is a
+// compiler error, as gcc insists on printing out each template
+// argument, even if it has the default value (this means Types<int>
+// will appear as Types<int, None, None, ..., None> in the compiler
+// errors).
+//
+// Our solution is to combine the best part of the two approaches: a
+// user would write Types<T1, ..., TN>, and Google Test will translate
+// that to TypesN<T1, ..., TN> internally to make error messages
+// readable.  The translation is done by the 'type' member of the
+// Types template.
+template <typename T1 = internal::None, typename T2 = internal::None,
+    typename T3 = internal::None, typename T4 = internal::None,
+    typename T5 = internal::None, typename T6 = internal::None,
+    typename T7 = internal::None, typename T8 = internal::None,
+    typename T9 = internal::None, typename T10 = internal::None,
+    typename T11 = internal::None, typename T12 = internal::None,
+    typename T13 = internal::None, typename T14 = internal::None,
+    typename T15 = internal::None, typename T16 = internal::None,
+    typename T17 = internal::None, typename T18 = internal::None,
+    typename T19 = internal::None, typename T20 = internal::None,
+    typename T21 = internal::None, typename T22 = internal::None,
+    typename T23 = internal::None, typename T24 = internal::None,
+    typename T25 = internal::None, typename T26 = internal::None,
+    typename T27 = internal::None, typename T28 = internal::None,
+    typename T29 = internal::None, typename T30 = internal::None,
+    typename T31 = internal::None, typename T32 = internal::None,
+    typename T33 = internal::None, typename T34 = internal::None,
+    typename T35 = internal::None, typename T36 = internal::None,
+    typename T37 = internal::None, typename T38 = internal::None,
+    typename T39 = internal::None, typename T40 = internal::None,
+    typename T41 = internal::None, typename T42 = internal::None,
+    typename T43 = internal::None, typename T44 = internal::None,
+    typename T45 = internal::None, typename T46 = internal::None,
+    typename T47 = internal::None, typename T48 = internal::None,
+    typename T49 = internal::None, typename T50 = internal::None>
+struct Types {
+  typedef internal::Types50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
+      T41, T42, T43, T44, T45, T46, T47, T48, T49, T50> type;
+};
+
+template <>
+struct Types<internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None> {
+  typedef internal::Types0 type;
+};
+template <typename T1>
+struct Types<T1, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None> {
+  typedef internal::Types1<T1> type;
+};
+template <typename T1, typename T2>
+struct Types<T1, T2, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None> {
+  typedef internal::Types2<T1, T2> type;
+};
+template <typename T1, typename T2, typename T3>
+struct Types<T1, T2, T3, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None> {
+  typedef internal::Types3<T1, T2, T3> type;
+};
+template <typename T1, typename T2, typename T3, typename T4>
+struct Types<T1, T2, T3, T4, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None> {
+  typedef internal::Types4<T1, T2, T3, T4> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5>
+struct Types<T1, T2, T3, T4, T5, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None> {
+  typedef internal::Types5<T1, T2, T3, T4, T5> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6>
+struct Types<T1, T2, T3, T4, T5, T6, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None> {
+  typedef internal::Types6<T1, T2, T3, T4, T5, T6> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7>
+struct Types<T1, T2, T3, T4, T5, T6, T7, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None> {
+  typedef internal::Types7<T1, T2, T3, T4, T5, T6, T7> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None> {
+  typedef internal::Types8<T1, T2, T3, T4, T5, T6, T7, T8> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None> {
+  typedef internal::Types9<T1, T2, T3, T4, T5, T6, T7, T8, T9> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None> {
+  typedef internal::Types10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None> {
+  typedef internal::Types11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None> {
+  typedef internal::Types12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+      T12> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None> {
+  typedef internal::Types13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+      T13> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None> {
+  typedef internal::Types14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+      T13, T14> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None> {
+  typedef internal::Types15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+      T13, T14, T15> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+    T16, internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None> {
+  typedef internal::Types16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+      T13, T14, T15, T16> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+    T16, T17, internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None> {
+  typedef internal::Types17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+      T13, T14, T15, T16, T17> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+    T16, T17, T18, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None> {
+  typedef internal::Types18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+      T13, T14, T15, T16, T17, T18> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+    T16, T17, T18, T19, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None> {
+  typedef internal::Types19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+      T13, T14, T15, T16, T17, T18, T19> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+    T16, T17, T18, T19, T20, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None> {
+  typedef internal::Types20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+      T13, T14, T15, T16, T17, T18, T19, T20> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+    T16, T17, T18, T19, T20, T21, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None> {
+  typedef internal::Types21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+      T13, T14, T15, T16, T17, T18, T19, T20, T21> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+    T16, T17, T18, T19, T20, T21, T22, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None> {
+  typedef internal::Types22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+    T16, T17, T18, T19, T20, T21, T22, T23, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None> {
+  typedef internal::Types23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+    T16, T17, T18, T19, T20, T21, T22, T23, T24, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None> {
+  typedef internal::Types24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None> {
+  typedef internal::Types25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None> {
+  typedef internal::Types26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+      T26> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None> {
+  typedef internal::Types27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+      T27> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None> {
+  typedef internal::Types28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+      T27, T28> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None> {
+  typedef internal::Types29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+      T27, T28, T29> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None> {
+  typedef internal::Types30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+      T27, T28, T29, T30> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+    T31, internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None> {
+  typedef internal::Types31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+      T27, T28, T29, T30, T31> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+    T31, T32, internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None> {
+  typedef internal::Types32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+      T27, T28, T29, T30, T31, T32> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+    T31, T32, T33, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None> {
+  typedef internal::Types33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+      T27, T28, T29, T30, T31, T32, T33> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+    T31, T32, T33, T34, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None> {
+  typedef internal::Types34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+      T27, T28, T29, T30, T31, T32, T33, T34> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+    T31, T32, T33, T34, T35, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None> {
+  typedef internal::Types35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+      T27, T28, T29, T30, T31, T32, T33, T34, T35> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+    T31, T32, T33, T34, T35, T36, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None> {
+  typedef internal::Types36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+    T31, T32, T33, T34, T35, T36, T37, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None> {
+  typedef internal::Types37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37, typename T38>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+    T31, T32, T33, T34, T35, T36, T37, T38, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None> {
+  typedef internal::Types38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37, typename T38, typename T39>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+    T31, T32, T33, T34, T35, T36, T37, T38, T39, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None> {
+  typedef internal::Types39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37, typename T38, typename T39, typename T40>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+    T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None> {
+  typedef internal::Types40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
+      T40> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37, typename T38, typename T39, typename T40,
+    typename T41>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+    T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None, internal::None> {
+  typedef internal::Types41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
+      T41> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37, typename T38, typename T39, typename T40,
+    typename T41, typename T42>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+    T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, internal::None,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None> {
+  typedef internal::Types42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
+      T41, T42> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37, typename T38, typename T39, typename T40,
+    typename T41, typename T42, typename T43>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+    T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None, internal::None> {
+  typedef internal::Types43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
+      T41, T42, T43> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37, typename T38, typename T39, typename T40,
+    typename T41, typename T42, typename T43, typename T44>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+    T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None, internal::None> {
+  typedef internal::Types44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
+      T41, T42, T43, T44> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37, typename T38, typename T39, typename T40,
+    typename T41, typename T42, typename T43, typename T44, typename T45>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+    T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,
+    internal::None, internal::None, internal::None, internal::None,
+    internal::None> {
+  typedef internal::Types45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
+      T41, T42, T43, T44, T45> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37, typename T38, typename T39, typename T40,
+    typename T41, typename T42, typename T43, typename T44, typename T45,
+    typename T46>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+    T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,
+    T46, internal::None, internal::None, internal::None, internal::None> {
+  typedef internal::Types46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
+      T41, T42, T43, T44, T45, T46> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37, typename T38, typename T39, typename T40,
+    typename T41, typename T42, typename T43, typename T44, typename T45,
+    typename T46, typename T47>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+    T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,
+    T46, T47, internal::None, internal::None, internal::None> {
+  typedef internal::Types47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
+      T41, T42, T43, T44, T45, T46, T47> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37, typename T38, typename T39, typename T40,
+    typename T41, typename T42, typename T43, typename T44, typename T45,
+    typename T46, typename T47, typename T48>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+    T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,
+    T46, T47, T48, internal::None, internal::None> {
+  typedef internal::Types48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
+      T41, T42, T43, T44, T45, T46, T47, T48> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37, typename T38, typename T39, typename T40,
+    typename T41, typename T42, typename T43, typename T44, typename T45,
+    typename T46, typename T47, typename T48, typename T49>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+    T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+    T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,
+    T46, T47, T48, T49, internal::None> {
+  typedef internal::Types49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
+      T41, T42, T43, T44, T45, T46, T47, T48, T49> type;
+};
+
+namespace internal {
+
+# define GTEST_TEMPLATE_ template <typename T> class
+
+// The template "selector" struct TemplateSel<Tmpl> is used to
+// represent Tmpl, which must be a class template with one type
+// parameter, as a type.  TemplateSel<Tmpl>::Bind<T>::type is defined
+// as the type Tmpl<T>.  This allows us to actually instantiate the
+// template "selected" by TemplateSel<Tmpl>.
+//
+// This trick is necessary for simulating typedef for class templates,
+// which C++ doesn't support directly.
+template <GTEST_TEMPLATE_ Tmpl>
+struct TemplateSel {
+  template <typename T>
+  struct Bind {
+    typedef Tmpl<T> type;
+  };
+};
+
+# define GTEST_BIND_(TmplSel, T) \
+  TmplSel::template Bind<T>::type
+
+// A unique struct template used as the default value for the
+// arguments of class template Templates.  This allows us to simulate
+// variadic templates (e.g. Templates<int>, Templates<int, double>,
+// and etc), which C++ doesn't support directly.
+template <typename T>
+struct NoneT {};
+
+// The following family of struct and struct templates are used to
+// represent template lists.  In particular, TemplatesN<T1, T2, ...,
+// TN> represents a list of N templates (T1, T2, ..., and TN).  Except
+// for Templates0, every struct in the family has two member types:
+// Head for the selector of the first template in the list, and Tail
+// for the rest of the list.
+
+// The empty template list.
+struct Templates0 {};
+
+// Template lists of length 1, 2, 3, and so on.
+
+template <GTEST_TEMPLATE_ T1>
+struct Templates1 {
+  typedef TemplateSel<T1> Head;
+  typedef Templates0 Tail;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2>
+struct Templates2 {
+  typedef TemplateSel<T1> Head;
+  typedef Templates1<T2> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3>
+struct Templates3 {
+  typedef TemplateSel<T1> Head;
+  typedef Templates2<T2, T3> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4>
+struct Templates4 {
+  typedef TemplateSel<T1> Head;
+  typedef Templates3<T2, T3, T4> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5>
+struct Templates5 {
+  typedef TemplateSel<T1> Head;
+  typedef Templates4<T2, T3, T4, T5> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6>
+struct Templates6 {
+  typedef TemplateSel<T1> Head;
+  typedef Templates5<T2, T3, T4, T5, T6> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7>
+struct Templates7 {
+  typedef TemplateSel<T1> Head;
+  typedef Templates6<T2, T3, T4, T5, T6, T7> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8>
+struct Templates8 {
+  typedef TemplateSel<T1> Head;
+  typedef Templates7<T2, T3, T4, T5, T6, T7, T8> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9>
+struct Templates9 {
+  typedef TemplateSel<T1> Head;
+  typedef Templates8<T2, T3, T4, T5, T6, T7, T8, T9> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10>
+struct Templates10 {
+  typedef TemplateSel<T1> Head;
+  typedef Templates9<T2, T3, T4, T5, T6, T7, T8, T9, T10> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11>
+struct Templates11 {
+  typedef TemplateSel<T1> Head;
+  typedef Templates10<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12>
+struct Templates12 {
+  typedef TemplateSel<T1> Head;
+  typedef Templates11<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13>
+struct Templates13 {
+  typedef TemplateSel<T1> Head;
+  typedef Templates12<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14>
+struct Templates14 {
+  typedef TemplateSel<T1> Head;
+  typedef Templates13<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+      T14> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15>
+struct Templates15 {
+  typedef TemplateSel<T1> Head;
+  typedef Templates14<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+      T15> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16>
+struct Templates16 {
+  typedef TemplateSel<T1> Head;
+  typedef Templates15<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+      T15, T16> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17>
+struct Templates17 {
+  typedef TemplateSel<T1> Head;
+  typedef Templates16<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+      T15, T16, T17> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18>
+struct Templates18 {
+  typedef TemplateSel<T1> Head;
+  typedef Templates17<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+      T15, T16, T17, T18> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19>
+struct Templates19 {
+  typedef TemplateSel<T1> Head;
+  typedef Templates18<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+      T15, T16, T17, T18, T19> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20>
+struct Templates20 {
+  typedef TemplateSel<T1> Head;
+  typedef Templates19<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+      T15, T16, T17, T18, T19, T20> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21>
+struct Templates21 {
+  typedef TemplateSel<T1> Head;
+  typedef Templates20<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+      T15, T16, T17, T18, T19, T20, T21> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22>
+struct Templates22 {
+  typedef TemplateSel<T1> Head;
+  typedef Templates21<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+      T15, T16, T17, T18, T19, T20, T21, T22> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23>
+struct Templates23 {
+  typedef TemplateSel<T1> Head;
+  typedef Templates22<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+      T15, T16, T17, T18, T19, T20, T21, T22, T23> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24>
+struct Templates24 {
+  typedef TemplateSel<T1> Head;
+  typedef Templates23<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+    GTEST_TEMPLATE_ T25>
+struct Templates25 {
+  typedef TemplateSel<T1> Head;
+  typedef Templates24<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26>
+struct Templates26 {
+  typedef TemplateSel<T1> Head;
+  typedef Templates25<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27>
+struct Templates27 {
+  typedef TemplateSel<T1> Head;
+  typedef Templates26<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+    GTEST_TEMPLATE_ T28>
+struct Templates28 {
+  typedef TemplateSel<T1> Head;
+  typedef Templates27<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+      T28> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29>
+struct Templates29 {
+  typedef TemplateSel<T1> Head;
+  typedef Templates28<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+      T29> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30>
+struct Templates30 {
+  typedef TemplateSel<T1> Head;
+  typedef Templates29<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+      T29, T30> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+    GTEST_TEMPLATE_ T31>
+struct Templates31 {
+  typedef TemplateSel<T1> Head;
+  typedef Templates30<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+      T29, T30, T31> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32>
+struct Templates32 {
+  typedef TemplateSel<T1> Head;
+  typedef Templates31<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+      T29, T30, T31, T32> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33>
+struct Templates33 {
+  typedef TemplateSel<T1> Head;
+  typedef Templates32<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+      T29, T30, T31, T32, T33> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+    GTEST_TEMPLATE_ T34>
+struct Templates34 {
+  typedef TemplateSel<T1> Head;
+  typedef Templates33<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+      T29, T30, T31, T32, T33, T34> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35>
+struct Templates35 {
+  typedef TemplateSel<T1> Head;
+  typedef Templates34<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+      T29, T30, T31, T32, T33, T34, T35> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36>
+struct Templates36 {
+  typedef TemplateSel<T1> Head;
+  typedef Templates35<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+      T29, T30, T31, T32, T33, T34, T35, T36> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+    GTEST_TEMPLATE_ T37>
+struct Templates37 {
+  typedef TemplateSel<T1> Head;
+  typedef Templates36<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+      T29, T30, T31, T32, T33, T34, T35, T36, T37> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38>
+struct Templates38 {
+  typedef TemplateSel<T1> Head;
+  typedef Templates37<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+      T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39>
+struct Templates39 {
+  typedef TemplateSel<T1> Head;
+  typedef Templates38<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+      T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+    GTEST_TEMPLATE_ T40>
+struct Templates40 {
+  typedef TemplateSel<T1> Head;
+  typedef Templates39<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+      T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41>
+struct Templates41 {
+  typedef TemplateSel<T1> Head;
+  typedef Templates40<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+      T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42>
+struct Templates42 {
+  typedef TemplateSel<T1> Head;
+  typedef Templates41<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+      T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
+      T42> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
+    GTEST_TEMPLATE_ T43>
+struct Templates43 {
+  typedef TemplateSel<T1> Head;
+  typedef Templates42<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+      T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
+      T43> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
+    GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44>
+struct Templates44 {
+  typedef TemplateSel<T1> Head;
+  typedef Templates43<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+      T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
+      T43, T44> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
+    GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45>
+struct Templates45 {
+  typedef TemplateSel<T1> Head;
+  typedef Templates44<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+      T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
+      T43, T44, T45> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
+    GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
+    GTEST_TEMPLATE_ T46>
+struct Templates46 {
+  typedef TemplateSel<T1> Head;
+  typedef Templates45<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+      T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
+      T43, T44, T45, T46> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
+    GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
+    GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47>
+struct Templates47 {
+  typedef TemplateSel<T1> Head;
+  typedef Templates46<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+      T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
+      T43, T44, T45, T46, T47> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
+    GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
+    GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48>
+struct Templates48 {
+  typedef TemplateSel<T1> Head;
+  typedef Templates47<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+      T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
+      T43, T44, T45, T46, T47, T48> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
+    GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
+    GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48,
+    GTEST_TEMPLATE_ T49>
+struct Templates49 {
+  typedef TemplateSel<T1> Head;
+  typedef Templates48<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+      T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
+      T43, T44, T45, T46, T47, T48, T49> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
+    GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
+    GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48,
+    GTEST_TEMPLATE_ T49, GTEST_TEMPLATE_ T50>
+struct Templates50 {
+  typedef TemplateSel<T1> Head;
+  typedef Templates49<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+      T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+      T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
+      T43, T44, T45, T46, T47, T48, T49, T50> Tail;
+};
+
+
+// We don't want to require the users to write TemplatesN<...> directly,
+// as that would require them to count the length.  Templates<...> is much
+// easier to write, but generates horrible messages when there is a
+// compiler error, as gcc insists on printing out each template
+// argument, even if it has the default value (this means Templates<list>
+// will appear as Templates<list, NoneT, NoneT, ..., NoneT> in the compiler
+// errors).
+//
+// Our solution is to combine the best part of the two approaches: a
+// user would write Templates<T1, ..., TN>, and Google Test will translate
+// that to TemplatesN<T1, ..., TN> internally to make error messages
+// readable.  The translation is done by the 'type' member of the
+// Templates template.
+template <GTEST_TEMPLATE_ T1 = NoneT, GTEST_TEMPLATE_ T2 = NoneT,
+    GTEST_TEMPLATE_ T3 = NoneT, GTEST_TEMPLATE_ T4 = NoneT,
+    GTEST_TEMPLATE_ T5 = NoneT, GTEST_TEMPLATE_ T6 = NoneT,
+    GTEST_TEMPLATE_ T7 = NoneT, GTEST_TEMPLATE_ T8 = NoneT,
+    GTEST_TEMPLATE_ T9 = NoneT, GTEST_TEMPLATE_ T10 = NoneT,
+    GTEST_TEMPLATE_ T11 = NoneT, GTEST_TEMPLATE_ T12 = NoneT,
+    GTEST_TEMPLATE_ T13 = NoneT, GTEST_TEMPLATE_ T14 = NoneT,
+    GTEST_TEMPLATE_ T15 = NoneT, GTEST_TEMPLATE_ T16 = NoneT,
+    GTEST_TEMPLATE_ T17 = NoneT, GTEST_TEMPLATE_ T18 = NoneT,
+    GTEST_TEMPLATE_ T19 = NoneT, GTEST_TEMPLATE_ T20 = NoneT,
+    GTEST_TEMPLATE_ T21 = NoneT, GTEST_TEMPLATE_ T22 = NoneT,
+    GTEST_TEMPLATE_ T23 = NoneT, GTEST_TEMPLATE_ T24 = NoneT,
+    GTEST_TEMPLATE_ T25 = NoneT, GTEST_TEMPLATE_ T26 = NoneT,
+    GTEST_TEMPLATE_ T27 = NoneT, GTEST_TEMPLATE_ T28 = NoneT,
+    GTEST_TEMPLATE_ T29 = NoneT, GTEST_TEMPLATE_ T30 = NoneT,
+    GTEST_TEMPLATE_ T31 = NoneT, GTEST_TEMPLATE_ T32 = NoneT,
+    GTEST_TEMPLATE_ T33 = NoneT, GTEST_TEMPLATE_ T34 = NoneT,
+    GTEST_TEMPLATE_ T35 = NoneT, GTEST_TEMPLATE_ T36 = NoneT,
+    GTEST_TEMPLATE_ T37 = NoneT, GTEST_TEMPLATE_ T38 = NoneT,
+    GTEST_TEMPLATE_ T39 = NoneT, GTEST_TEMPLATE_ T40 = NoneT,
+    GTEST_TEMPLATE_ T41 = NoneT, GTEST_TEMPLATE_ T42 = NoneT,
+    GTEST_TEMPLATE_ T43 = NoneT, GTEST_TEMPLATE_ T44 = NoneT,
+    GTEST_TEMPLATE_ T45 = NoneT, GTEST_TEMPLATE_ T46 = NoneT,
+    GTEST_TEMPLATE_ T47 = NoneT, GTEST_TEMPLATE_ T48 = NoneT,
+    GTEST_TEMPLATE_ T49 = NoneT, GTEST_TEMPLATE_ T50 = NoneT>
+struct Templates {
+  typedef Templates50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
+      T42, T43, T44, T45, T46, T47, T48, T49, T50> type;
+};
+
+template <>
+struct Templates<NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT> {
+  typedef Templates0 type;
+};
+template <GTEST_TEMPLATE_ T1>
+struct Templates<T1, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT> {
+  typedef Templates1<T1> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2>
+struct Templates<T1, T2, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT> {
+  typedef Templates2<T1, T2> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3>
+struct Templates<T1, T2, T3, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+  typedef Templates3<T1, T2, T3> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4>
+struct Templates<T1, T2, T3, T4, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+  typedef Templates4<T1, T2, T3, T4> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5>
+struct Templates<T1, T2, T3, T4, T5, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+  typedef Templates5<T1, T2, T3, T4, T5> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6>
+struct Templates<T1, T2, T3, T4, T5, T6, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+  typedef Templates6<T1, T2, T3, T4, T5, T6> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+  typedef Templates7<T1, T2, T3, T4, T5, T6, T7> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+  typedef Templates8<T1, T2, T3, T4, T5, T6, T7, T8> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+  typedef Templates9<T1, T2, T3, T4, T5, T6, T7, T8, T9> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+  typedef Templates10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+  typedef Templates11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+  typedef Templates12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+  typedef Templates13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+      T13> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+  typedef Templates14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+      T14> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+    T15, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT> {
+  typedef Templates15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+      T14, T15> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+    T15, T16, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT> {
+  typedef Templates16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+      T14, T15, T16> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+    T15, T16, T17, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT> {
+  typedef Templates17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+      T14, T15, T16, T17> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+    T15, T16, T17, T18, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT> {
+  typedef Templates18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+      T14, T15, T16, T17, T18> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+    T15, T16, T17, T18, T19, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT> {
+  typedef Templates19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+      T14, T15, T16, T17, T18, T19> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+    T15, T16, T17, T18, T19, T20, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT> {
+  typedef Templates20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+      T14, T15, T16, T17, T18, T19, T20> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+    T15, T16, T17, T18, T19, T20, T21, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT> {
+  typedef Templates21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+      T14, T15, T16, T17, T18, T19, T20, T21> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+    T15, T16, T17, T18, T19, T20, T21, T22, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT> {
+  typedef Templates22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+      T14, T15, T16, T17, T18, T19, T20, T21, T22> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+    T15, T16, T17, T18, T19, T20, T21, T22, T23, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT> {
+  typedef Templates23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT> {
+  typedef Templates24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+    GTEST_TEMPLATE_ T25>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT> {
+  typedef Templates25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT> {
+  typedef Templates26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT> {
+  typedef Templates27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+      T27> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+    GTEST_TEMPLATE_ T28>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT> {
+  typedef Templates28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+      T28> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT> {
+  typedef Templates29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+      T28, T29> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+    T30, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+  typedef Templates30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+      T28, T29, T30> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+    GTEST_TEMPLATE_ T31>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+    T30, T31, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+  typedef Templates31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+      T28, T29, T30, T31> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+    T30, T31, T32, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+  typedef Templates32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+      T28, T29, T30, T31, T32> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+    T30, T31, T32, T33, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+  typedef Templates33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+      T28, T29, T30, T31, T32, T33> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+    GTEST_TEMPLATE_ T34>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+    T30, T31, T32, T33, T34, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+  typedef Templates34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+      T28, T29, T30, T31, T32, T33, T34> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+    T30, T31, T32, T33, T34, T35, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+  typedef Templates35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+      T28, T29, T30, T31, T32, T33, T34, T35> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+    T30, T31, T32, T33, T34, T35, T36, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+  typedef Templates36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+      T28, T29, T30, T31, T32, T33, T34, T35, T36> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+    GTEST_TEMPLATE_ T37>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+    T30, T31, T32, T33, T34, T35, T36, T37, NoneT, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+  typedef Templates37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+    T30, T31, T32, T33, T34, T35, T36, T37, T38, NoneT, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+  typedef Templates38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+    T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+  typedef Templates39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+    GTEST_TEMPLATE_ T40>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+    T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, NoneT, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+  typedef Templates40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+    T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, NoneT, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+  typedef Templates41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
+      T41> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+    T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, NoneT,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+  typedef Templates42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
+      T42> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
+    GTEST_TEMPLATE_ T43>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+    T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+  typedef Templates43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
+      T42, T43> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
+    GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+    T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
+    NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+  typedef Templates44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
+      T42, T43, T44> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
+    GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+    T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
+    T45, NoneT, NoneT, NoneT, NoneT, NoneT> {
+  typedef Templates45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
+      T42, T43, T44, T45> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
+    GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
+    GTEST_TEMPLATE_ T46>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+    T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
+    T45, T46, NoneT, NoneT, NoneT, NoneT> {
+  typedef Templates46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
+      T42, T43, T44, T45, T46> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
+    GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
+    GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+    T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
+    T45, T46, T47, NoneT, NoneT, NoneT> {
+  typedef Templates47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
+      T42, T43, T44, T45, T46, T47> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
+    GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
+    GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+    T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
+    T45, T46, T47, T48, NoneT, NoneT> {
+  typedef Templates48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
+      T42, T43, T44, T45, T46, T47, T48> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+    GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+    GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+    GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+    GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+    GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+    GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+    GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+    GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+    GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+    GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+    GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+    GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+    GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
+    GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
+    GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48,
+    GTEST_TEMPLATE_ T49>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+    T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+    T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
+    T45, T46, T47, T48, T49, NoneT> {
+  typedef Templates49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+      T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+      T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
+      T42, T43, T44, T45, T46, T47, T48, T49> type;
+};
+
+// The TypeList template makes it possible to use either a single type
+// or a Types<...> list in TYPED_TEST_CASE() and
+// INSTANTIATE_TYPED_TEST_CASE_P().
+
+template <typename T>
+struct TypeList {
+  typedef Types1<T> type;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10,
+    typename T11, typename T12, typename T13, typename T14, typename T15,
+    typename T16, typename T17, typename T18, typename T19, typename T20,
+    typename T21, typename T22, typename T23, typename T24, typename T25,
+    typename T26, typename T27, typename T28, typename T29, typename T30,
+    typename T31, typename T32, typename T33, typename T34, typename T35,
+    typename T36, typename T37, typename T38, typename T39, typename T40,
+    typename T41, typename T42, typename T43, typename T44, typename T45,
+    typename T46, typename T47, typename T48, typename T49, typename T50>
+struct TypeList<Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+    T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+    T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
+    T44, T45, T46, T47, T48, T49, T50> > {
+  typedef typename Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+      T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+      T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
+      T41, T42, T43, T44, T45, T46, T47, T48, T49, T50>::type type;
+};
+
+#endif  // GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P
+
+}  // namespace internal
+}  // namespace testing
+
+#endif  // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
diff --git a/google-breakpad/src/testing/gtest/include/gtest/internal/gtest-type-util.h.pump b/google-breakpad/src/testing/gtest/include/gtest/internal/gtest-type-util.h.pump
new file mode 100644
index 0000000..cdeb7a4
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/include/gtest/internal/gtest-type-util.h.pump
@@ -0,0 +1,298 @@
+$$ -*- mode: c++; -*-
+$var n = 50  $$ Maximum length of type lists we want to support.
+// Copyright 2008 Google Inc.
+// All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Type utilities needed for implementing typed and type-parameterized
+// tests.  This file is generated by a SCRIPT.  DO NOT EDIT BY HAND!
+//
+// Currently we support at most $n types in a list, and at most $n
+// type-parameterized tests in one type-parameterized test case.
+// Please contact googletestframework@googlegroups.com if you need
+// more.
+
+#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
+#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
+
+#include "gtest/internal/gtest-port.h"
+#include "gtest/internal/gtest-string.h"
+
+// #ifdef __GNUC__ is too general here.  It is possible to use gcc without using
+// libstdc++ (which is where cxxabi.h comes from).
+# if GTEST_HAS_CXXABI_H_
+#  include <cxxabi.h>
+# elif defined(__HP_aCC)
+#  include <acxx_demangle.h>
+# endif  // GTEST_HASH_CXXABI_H_
+
+namespace testing {
+namespace internal {
+
+// GetTypeName<T>() returns a human-readable name of type T.
+// NB: This function is also used in Google Mock, so don't move it inside of
+// the typed-test-only section below.
+template <typename T>
+String GetTypeName() {
+# if GTEST_HAS_RTTI
+
+  const char* const name = typeid(T).name();
+#  if GTEST_HAS_CXXABI_H_ || defined(__HP_aCC)
+  int status = 0;
+  // gcc's implementation of typeid(T).name() mangles the type name,
+  // so we have to demangle it.
+#   if GTEST_HAS_CXXABI_H_
+  using abi::__cxa_demangle;
+#   endif  // GTEST_HAS_CXXABI_H_
+  char* const readable_name = __cxa_demangle(name, 0, 0, &status);
+  const String name_str(status == 0 ? readable_name : name);
+  free(readable_name);
+  return name_str;
+#  else
+  return name;
+#  endif  // GTEST_HAS_CXXABI_H_ || __HP_aCC
+
+# else
+
+  return "<type>";
+
+# endif  // GTEST_HAS_RTTI
+}
+
+#if GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P
+
+// AssertyTypeEq<T1, T2>::type is defined iff T1 and T2 are the same
+// type.  This can be used as a compile-time assertion to ensure that
+// two types are equal.
+
+template <typename T1, typename T2>
+struct AssertTypeEq;
+
+template <typename T>
+struct AssertTypeEq<T, T> {
+  typedef bool type;
+};
+
+// A unique type used as the default value for the arguments of class
+// template Types.  This allows us to simulate variadic templates
+// (e.g. Types<int>, Type<int, double>, and etc), which C++ doesn't
+// support directly.
+struct None {};
+
+// The following family of struct and struct templates are used to
+// represent type lists.  In particular, TypesN<T1, T2, ..., TN>
+// represents a type list with N types (T1, T2, ..., and TN) in it.
+// Except for Types0, every struct in the family has two member types:
+// Head for the first type in the list, and Tail for the rest of the
+// list.
+
+// The empty type list.
+struct Types0 {};
+
+// Type lists of length 1, 2, 3, and so on.
+
+template <typename T1>
+struct Types1 {
+  typedef T1 Head;
+  typedef Types0 Tail;
+};
+
+$range i 2..n
+
+$for i [[
+$range j 1..i
+$range k 2..i
+template <$for j, [[typename T$j]]>
+struct Types$i {
+  typedef T1 Head;
+  typedef Types$(i-1)<$for k, [[T$k]]> Tail;
+};
+
+
+]]
+
+}  // namespace internal
+
+// We don't want to require the users to write TypesN<...> directly,
+// as that would require them to count the length.  Types<...> is much
+// easier to write, but generates horrible messages when there is a
+// compiler error, as gcc insists on printing out each template
+// argument, even if it has the default value (this means Types<int>
+// will appear as Types<int, None, None, ..., None> in the compiler
+// errors).
+//
+// Our solution is to combine the best part of the two approaches: a
+// user would write Types<T1, ..., TN>, and Google Test will translate
+// that to TypesN<T1, ..., TN> internally to make error messages
+// readable.  The translation is done by the 'type' member of the
+// Types template.
+
+$range i 1..n
+template <$for i, [[typename T$i = internal::None]]>
+struct Types {
+  typedef internal::Types$n<$for i, [[T$i]]> type;
+};
+
+template <>
+struct Types<$for i, [[internal::None]]> {
+  typedef internal::Types0 type;
+};
+
+$range i 1..n-1
+$for i [[
+$range j 1..i
+$range k i+1..n
+template <$for j, [[typename T$j]]>
+struct Types<$for j, [[T$j]]$for k[[, internal::None]]> {
+  typedef internal::Types$i<$for j, [[T$j]]> type;
+};
+
+]]
+
+namespace internal {
+
+# define GTEST_TEMPLATE_ template <typename T> class
+
+// The template "selector" struct TemplateSel<Tmpl> is used to
+// represent Tmpl, which must be a class template with one type
+// parameter, as a type.  TemplateSel<Tmpl>::Bind<T>::type is defined
+// as the type Tmpl<T>.  This allows us to actually instantiate the
+// template "selected" by TemplateSel<Tmpl>.
+//
+// This trick is necessary for simulating typedef for class templates,
+// which C++ doesn't support directly.
+template <GTEST_TEMPLATE_ Tmpl>
+struct TemplateSel {
+  template <typename T>
+  struct Bind {
+    typedef Tmpl<T> type;
+  };
+};
+
+# define GTEST_BIND_(TmplSel, T) \
+  TmplSel::template Bind<T>::type
+
+// A unique struct template used as the default value for the
+// arguments of class template Templates.  This allows us to simulate
+// variadic templates (e.g. Templates<int>, Templates<int, double>,
+// and etc), which C++ doesn't support directly.
+template <typename T>
+struct NoneT {};
+
+// The following family of struct and struct templates are used to
+// represent template lists.  In particular, TemplatesN<T1, T2, ...,
+// TN> represents a list of N templates (T1, T2, ..., and TN).  Except
+// for Templates0, every struct in the family has two member types:
+// Head for the selector of the first template in the list, and Tail
+// for the rest of the list.
+
+// The empty template list.
+struct Templates0 {};
+
+// Template lists of length 1, 2, 3, and so on.
+
+template <GTEST_TEMPLATE_ T1>
+struct Templates1 {
+  typedef TemplateSel<T1> Head;
+  typedef Templates0 Tail;
+};
+
+$range i 2..n
+
+$for i [[
+$range j 1..i
+$range k 2..i
+template <$for j, [[GTEST_TEMPLATE_ T$j]]>
+struct Templates$i {
+  typedef TemplateSel<T1> Head;
+  typedef Templates$(i-1)<$for k, [[T$k]]> Tail;
+};
+
+
+]]
+
+// We don't want to require the users to write TemplatesN<...> directly,
+// as that would require them to count the length.  Templates<...> is much
+// easier to write, but generates horrible messages when there is a
+// compiler error, as gcc insists on printing out each template
+// argument, even if it has the default value (this means Templates<list>
+// will appear as Templates<list, NoneT, NoneT, ..., NoneT> in the compiler
+// errors).
+//
+// Our solution is to combine the best part of the two approaches: a
+// user would write Templates<T1, ..., TN>, and Google Test will translate
+// that to TemplatesN<T1, ..., TN> internally to make error messages
+// readable.  The translation is done by the 'type' member of the
+// Templates template.
+
+$range i 1..n
+template <$for i, [[GTEST_TEMPLATE_ T$i = NoneT]]>
+struct Templates {
+  typedef Templates$n<$for i, [[T$i]]> type;
+};
+
+template <>
+struct Templates<$for i, [[NoneT]]> {
+  typedef Templates0 type;
+};
+
+$range i 1..n-1
+$for i [[
+$range j 1..i
+$range k i+1..n
+template <$for j, [[GTEST_TEMPLATE_ T$j]]>
+struct Templates<$for j, [[T$j]]$for k[[, NoneT]]> {
+  typedef Templates$i<$for j, [[T$j]]> type;
+};
+
+]]
+
+// The TypeList template makes it possible to use either a single type
+// or a Types<...> list in TYPED_TEST_CASE() and
+// INSTANTIATE_TYPED_TEST_CASE_P().
+
+template <typename T>
+struct TypeList {
+  typedef Types1<T> type;
+};
+
+
+$range i 1..n
+template <$for i, [[typename T$i]]>
+struct TypeList<Types<$for i, [[T$i]]> > {
+  typedef typename Types<$for i, [[T$i]]>::type type;
+};
+
+#endif  // GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P
+
+}  // namespace internal
+}  // namespace testing
+
+#endif  // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
diff --git a/google-breakpad/src/testing/gtest/m4/acx_pthread.m4 b/google-breakpad/src/testing/gtest/m4/acx_pthread.m4
new file mode 100644
index 0000000..2cf20de
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/m4/acx_pthread.m4
@@ -0,0 +1,363 @@
+# This was retrieved from
+#    http://svn.0pointer.de/viewvc/trunk/common/acx_pthread.m4?revision=1277&root=avahi
+# See also (perhaps for new versions?)
+#    http://svn.0pointer.de/viewvc/trunk/common/acx_pthread.m4?root=avahi
+#
+# We've rewritten the inconsistency check code (from avahi), to work
+# more broadly.  In particular, it no longer assumes ld accepts -zdefs.
+# This caused a restructing of the code, but the functionality has only
+# changed a little.
+
+dnl @synopsis ACX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+dnl
+dnl @summary figure out how to build C programs using POSIX threads
+dnl
+dnl This macro figures out how to build C programs using POSIX threads.
+dnl It sets the PTHREAD_LIBS output variable to the threads library and
+dnl linker flags, and the PTHREAD_CFLAGS output variable to any special
+dnl C compiler flags that are needed. (The user can also force certain
+dnl compiler flags/libs to be tested by setting these environment
+dnl variables.)
+dnl
+dnl Also sets PTHREAD_CC to any special C compiler that is needed for
+dnl multi-threaded programs (defaults to the value of CC otherwise).
+dnl (This is necessary on AIX to use the special cc_r compiler alias.)
+dnl
+dnl NOTE: You are assumed to not only compile your program with these
+dnl flags, but also link it with them as well. e.g. you should link
+dnl with $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS
+dnl $LIBS
+dnl
+dnl If you are only building threads programs, you may wish to use
+dnl these variables in your default LIBS, CFLAGS, and CC:
+dnl
+dnl        LIBS="$PTHREAD_LIBS $LIBS"
+dnl        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+dnl        CC="$PTHREAD_CC"
+dnl
+dnl In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute
+dnl constant has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to
+dnl that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
+dnl
+dnl ACTION-IF-FOUND is a list of shell commands to run if a threads
+dnl library is found, and ACTION-IF-NOT-FOUND is a list of commands to
+dnl run it if it is not found. If ACTION-IF-FOUND is not specified, the
+dnl default action will define HAVE_PTHREAD.
+dnl
+dnl Please let the authors know if this macro fails on any platform, or
+dnl if you have any other suggestions or comments. This macro was based
+dnl on work by SGJ on autoconf scripts for FFTW (www.fftw.org) (with
+dnl help from M. Frigo), as well as ac_pthread and hb_pthread macros
+dnl posted by Alejandro Forero Cuervo to the autoconf macro repository.
+dnl We are also grateful for the helpful feedback of numerous users.
+dnl
+dnl @category InstalledPackages
+dnl @author Steven G. Johnson <stevenj@alum.mit.edu>
+dnl @version 2006-05-29
+dnl @license GPLWithACException
+dnl 
+dnl Checks for GCC shared/pthread inconsistency based on work by
+dnl Marcin Owsiany <marcin@owsiany.pl>
+
+
+AC_DEFUN([ACX_PTHREAD], [
+AC_REQUIRE([AC_CANONICAL_HOST])
+AC_LANG_SAVE
+AC_LANG_C
+acx_pthread_ok=no
+
+# We used to check for pthread.h first, but this fails if pthread.h
+# requires special compiler flags (e.g. on True64 or Sequent).
+# It gets checked for in the link test anyway.
+
+# First of all, check if the user has set any of the PTHREAD_LIBS,
+# etcetera environment variables, and if threads linking works using
+# them:
+if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
+        save_CFLAGS="$CFLAGS"
+        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+        save_LIBS="$LIBS"
+        LIBS="$PTHREAD_LIBS $LIBS"
+        AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS])
+        AC_TRY_LINK_FUNC(pthread_join, acx_pthread_ok=yes)
+        AC_MSG_RESULT($acx_pthread_ok)
+        if test x"$acx_pthread_ok" = xno; then
+                PTHREAD_LIBS=""
+                PTHREAD_CFLAGS=""
+        fi
+        LIBS="$save_LIBS"
+        CFLAGS="$save_CFLAGS"
+fi
+
+# We must check for the threads library under a number of different
+# names; the ordering is very important because some systems
+# (e.g. DEC) have both -lpthread and -lpthreads, where one of the
+# libraries is broken (non-POSIX).
+
+# Create a list of thread flags to try.  Items starting with a "-" are
+# C compiler flags, and other items are library names, except for "none"
+# which indicates that we try without any flags at all, and "pthread-config"
+# which is a program returning the flags for the Pth emulation library.
+
+acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
+
+# The ordering *is* (sometimes) important.  Some notes on the
+# individual items follow:
+
+# pthreads: AIX (must check this before -lpthread)
+# none: in case threads are in libc; should be tried before -Kthread and
+#       other compiler flags to prevent continual compiler warnings
+# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
+# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
+# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
+# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
+# -pthreads: Solaris/gcc
+# -mthreads: Mingw32/gcc, Lynx/gcc
+# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
+#      doesn't hurt to check since this sometimes defines pthreads too;
+#      also defines -D_REENTRANT)
+#      ... -mt is also the pthreads flag for HP/aCC
+# pthread: Linux, etcetera
+# --thread-safe: KAI C++
+# pthread-config: use pthread-config program (for GNU Pth library)
+
+case "${host_cpu}-${host_os}" in
+        *solaris*)
+
+        # On Solaris (at least, for some versions), libc contains stubbed
+        # (non-functional) versions of the pthreads routines, so link-based
+        # tests will erroneously succeed.  (We need to link with -pthreads/-mt/
+        # -lpthread.)  (The stubs are missing pthread_cleanup_push, or rather
+        # a function called by this macro, so we could check for that, but
+        # who knows whether they'll stub that too in a future libc.)  So,
+        # we'll just look for -pthreads and -lpthread first:
+
+        acx_pthread_flags="-pthreads pthread -mt -pthread $acx_pthread_flags"
+        ;;
+esac
+
+if test x"$acx_pthread_ok" = xno; then
+for flag in $acx_pthread_flags; do
+
+        case $flag in
+                none)
+                AC_MSG_CHECKING([whether pthreads work without any flags])
+                ;;
+
+                -*)
+                AC_MSG_CHECKING([whether pthreads work with $flag])
+                PTHREAD_CFLAGS="$flag"
+                ;;
+
+		pthread-config)
+		AC_CHECK_PROG(acx_pthread_config, pthread-config, yes, no)
+		if test x"$acx_pthread_config" = xno; then continue; fi
+		PTHREAD_CFLAGS="`pthread-config --cflags`"
+		PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
+		;;
+
+                *)
+                AC_MSG_CHECKING([for the pthreads library -l$flag])
+                PTHREAD_LIBS="-l$flag"
+                ;;
+        esac
+
+        save_LIBS="$LIBS"
+        save_CFLAGS="$CFLAGS"
+        LIBS="$PTHREAD_LIBS $LIBS"
+        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+
+        # Check for various functions.  We must include pthread.h,
+        # since some functions may be macros.  (On the Sequent, we
+        # need a special flag -Kthread to make this header compile.)
+        # We check for pthread_join because it is in -lpthread on IRIX
+        # while pthread_create is in libc.  We check for pthread_attr_init
+        # due to DEC craziness with -lpthreads.  We check for
+        # pthread_cleanup_push because it is one of the few pthread
+        # functions on Solaris that doesn't have a non-functional libc stub.
+        # We try pthread_create on general principles.
+        AC_TRY_LINK([#include <pthread.h>],
+                    [pthread_t th; pthread_join(th, 0);
+                     pthread_attr_init(0); pthread_cleanup_push(0, 0);
+                     pthread_create(0,0,0,0); pthread_cleanup_pop(0); ],
+                    [acx_pthread_ok=yes])
+
+        LIBS="$save_LIBS"
+        CFLAGS="$save_CFLAGS"
+
+        AC_MSG_RESULT($acx_pthread_ok)
+        if test "x$acx_pthread_ok" = xyes; then
+                break;
+        fi
+
+        PTHREAD_LIBS=""
+        PTHREAD_CFLAGS=""
+done
+fi
+
+# Various other checks:
+if test "x$acx_pthread_ok" = xyes; then
+        save_LIBS="$LIBS"
+        LIBS="$PTHREAD_LIBS $LIBS"
+        save_CFLAGS="$CFLAGS"
+        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+
+        # Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
+	AC_MSG_CHECKING([for joinable pthread attribute])
+	attr_name=unknown
+	for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
+	    AC_TRY_LINK([#include <pthread.h>], [int attr=$attr; return attr;],
+                        [attr_name=$attr; break])
+	done
+        AC_MSG_RESULT($attr_name)
+        if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then
+            AC_DEFINE_UNQUOTED(PTHREAD_CREATE_JOINABLE, $attr_name,
+                               [Define to necessary symbol if this constant
+                                uses a non-standard name on your system.])
+        fi
+
+        AC_MSG_CHECKING([if more special flags are required for pthreads])
+        flag=no
+        case "${host_cpu}-${host_os}" in
+            *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";;
+            *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";;
+        esac
+        AC_MSG_RESULT(${flag})
+        if test "x$flag" != xno; then
+            PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
+        fi
+
+        LIBS="$save_LIBS"
+        CFLAGS="$save_CFLAGS"
+        # More AIX lossage: must compile with xlc_r or cc_r
+	if test x"$GCC" != xyes; then
+          AC_CHECK_PROGS(PTHREAD_CC, xlc_r cc_r, ${CC})
+        else
+          PTHREAD_CC=$CC
+	fi
+
+	# The next part tries to detect GCC inconsistency with -shared on some
+	# architectures and systems. The problem is that in certain
+	# configurations, when -shared is specified, GCC "forgets" to
+	# internally use various flags which are still necessary.
+	
+	#
+	# Prepare the flags
+	#
+	save_CFLAGS="$CFLAGS"
+	save_LIBS="$LIBS"
+	save_CC="$CC"
+	
+	# Try with the flags determined by the earlier checks.
+	#
+	# -Wl,-z,defs forces link-time symbol resolution, so that the
+	# linking checks with -shared actually have any value
+	#
+	# FIXME: -fPIC is required for -shared on many architectures,
+	# so we specify it here, but the right way would probably be to
+	# properly detect whether it is actually required.
+	CFLAGS="-shared -fPIC -Wl,-z,defs $CFLAGS $PTHREAD_CFLAGS"
+	LIBS="$PTHREAD_LIBS $LIBS"
+	CC="$PTHREAD_CC"
+	
+	# In order not to create several levels of indentation, we test
+	# the value of "$done" until we find the cure or run out of ideas.
+	done="no"
+	
+	# First, make sure the CFLAGS we added are actually accepted by our
+	# compiler.  If not (and OS X's ld, for instance, does not accept -z),
+	# then we can't do this test.
+	if test x"$done" = xno; then
+	   AC_MSG_CHECKING([whether to check for GCC pthread/shared inconsistencies])
+	   AC_TRY_LINK(,, , [done=yes])
+	
+	   if test "x$done" = xyes ; then
+	      AC_MSG_RESULT([no])
+	   else
+	      AC_MSG_RESULT([yes])
+	   fi
+	fi
+	
+	if test x"$done" = xno; then
+	   AC_MSG_CHECKING([whether -pthread is sufficient with -shared])
+	   AC_TRY_LINK([#include <pthread.h>],
+	      [pthread_t th; pthread_join(th, 0);
+	      pthread_attr_init(0); pthread_cleanup_push(0, 0);
+	      pthread_create(0,0,0,0); pthread_cleanup_pop(0); ],
+	      [done=yes])
+	   
+	   if test "x$done" = xyes; then
+	      AC_MSG_RESULT([yes])
+	   else
+	      AC_MSG_RESULT([no])
+	   fi
+	fi
+	
+	#
+	# Linux gcc on some architectures such as mips/mipsel forgets
+	# about -lpthread
+	#
+	if test x"$done" = xno; then
+	   AC_MSG_CHECKING([whether -lpthread fixes that])
+	   LIBS="-lpthread $PTHREAD_LIBS $save_LIBS"
+	   AC_TRY_LINK([#include <pthread.h>],
+	      [pthread_t th; pthread_join(th, 0);
+	      pthread_attr_init(0); pthread_cleanup_push(0, 0);
+	      pthread_create(0,0,0,0); pthread_cleanup_pop(0); ],
+	      [done=yes])
+	
+	   if test "x$done" = xyes; then
+	      AC_MSG_RESULT([yes])
+	      PTHREAD_LIBS="-lpthread $PTHREAD_LIBS"
+	   else
+	      AC_MSG_RESULT([no])
+	   fi
+	fi
+	#
+	# FreeBSD 4.10 gcc forgets to use -lc_r instead of -lc
+	#
+	if test x"$done" = xno; then
+	   AC_MSG_CHECKING([whether -lc_r fixes that])
+	   LIBS="-lc_r $PTHREAD_LIBS $save_LIBS"
+	   AC_TRY_LINK([#include <pthread.h>],
+	       [pthread_t th; pthread_join(th, 0);
+	        pthread_attr_init(0); pthread_cleanup_push(0, 0);
+	        pthread_create(0,0,0,0); pthread_cleanup_pop(0); ],
+	       [done=yes])
+	
+	   if test "x$done" = xyes; then
+	      AC_MSG_RESULT([yes])
+	      PTHREAD_LIBS="-lc_r $PTHREAD_LIBS"
+	   else
+	      AC_MSG_RESULT([no])
+	   fi
+	fi
+	if test x"$done" = xno; then
+	   # OK, we have run out of ideas
+	   AC_MSG_WARN([Impossible to determine how to use pthreads with shared libraries])
+	
+	   # so it's not safe to assume that we may use pthreads
+	   acx_pthread_ok=no
+	fi
+	
+	CFLAGS="$save_CFLAGS"
+	LIBS="$save_LIBS"
+	CC="$save_CC"
+else
+        PTHREAD_CC="$CC"
+fi
+
+AC_SUBST(PTHREAD_LIBS)
+AC_SUBST(PTHREAD_CFLAGS)
+AC_SUBST(PTHREAD_CC)
+
+# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
+if test x"$acx_pthread_ok" = xyes; then
+        ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1])
+        :
+else
+        acx_pthread_ok=no
+        $2
+fi
+AC_LANG_RESTORE
+])dnl ACX_PTHREAD
diff --git a/google-breakpad/src/testing/gtest/m4/gtest.m4 b/google-breakpad/src/testing/gtest/m4/gtest.m4
new file mode 100644
index 0000000..6598ba7
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/m4/gtest.m4
@@ -0,0 +1,74 @@
+dnl GTEST_LIB_CHECK([minimum version [,
+dnl                  action if found [,action if not found]]])
+dnl
+dnl Check for the presence of the Google Test library, optionally at a minimum
+dnl version, and indicate a viable version with the HAVE_GTEST flag. It defines
+dnl standard variables for substitution including GTEST_CPPFLAGS,
+dnl GTEST_CXXFLAGS, GTEST_LDFLAGS, and GTEST_LIBS. It also defines
+dnl GTEST_VERSION as the version of Google Test found. Finally, it provides
+dnl optional custom action slots in the event GTEST is found or not.
+AC_DEFUN([GTEST_LIB_CHECK],
+[
+dnl Provide a flag to enable or disable Google Test usage.
+AC_ARG_ENABLE([gtest],
+  [AS_HELP_STRING([--enable-gtest],
+                  [Enable tests using the Google C++ Testing Framework.
+                  (Default is enabled.)])],
+  [],
+  [enable_gtest=])
+AC_ARG_VAR([GTEST_CONFIG],
+           [The exact path of Google Test's 'gtest-config' script.])
+AC_ARG_VAR([GTEST_CPPFLAGS],
+           [C-like preprocessor flags for Google Test.])
+AC_ARG_VAR([GTEST_CXXFLAGS],
+           [C++ compile flags for Google Test.])
+AC_ARG_VAR([GTEST_LDFLAGS],
+           [Linker path and option flags for Google Test.])
+AC_ARG_VAR([GTEST_LIBS],
+           [Library linking flags for Google Test.])
+AC_ARG_VAR([GTEST_VERSION],
+           [The version of Google Test available.])
+HAVE_GTEST="no"
+AS_IF([test "x${enable_gtest}" != "xno"],
+  [AC_MSG_CHECKING([for 'gtest-config'])
+   AS_IF([test "x${enable_gtest}" != "xyes"],
+     [AS_IF([test -x "${enable_gtest}/scripts/gtest-config"],
+        [GTEST_CONFIG="${enable_gtest}/scripts/gtest-config"],
+        [GTEST_CONFIG="${enable_gtest}/bin/gtest-config"])
+      AS_IF([test -x "${GTEST_CONFIG}"], [],
+        [AC_MSG_RESULT([no])
+         AC_MSG_ERROR([dnl
+Unable to locate either a built or installed Google Test.
+The specific location '${enable_gtest}' was provided for a built or installed
+Google Test, but no 'gtest-config' script could be found at this location.])
+         ])],
+     [AC_PATH_PROG([GTEST_CONFIG], [gtest-config])])
+   AS_IF([test -x "${GTEST_CONFIG}"],
+     [AC_MSG_RESULT([${GTEST_CONFIG}])
+      m4_ifval([$1],
+        [_gtest_min_version="--min-version=$1"
+         AC_MSG_CHECKING([for Google Test at least version >= $1])],
+        [_gtest_min_version="--min-version=0"
+         AC_MSG_CHECKING([for Google Test])])
+      AS_IF([${GTEST_CONFIG} ${_gtest_min_version}],
+        [AC_MSG_RESULT([yes])
+         HAVE_GTEST='yes'],
+        [AC_MSG_RESULT([no])])],
+     [AC_MSG_RESULT([no])])
+   AS_IF([test "x${HAVE_GTEST}" = "xyes"],
+     [GTEST_CPPFLAGS=`${GTEST_CONFIG} --cppflags`
+      GTEST_CXXFLAGS=`${GTEST_CONFIG} --cxxflags`
+      GTEST_LDFLAGS=`${GTEST_CONFIG} --ldflags`
+      GTEST_LIBS=`${GTEST_CONFIG} --libs`
+      GTEST_VERSION=`${GTEST_CONFIG} --version`
+      AC_DEFINE([HAVE_GTEST],[1],[Defined when Google Test is available.])],
+     [AS_IF([test "x${enable_gtest}" = "xyes"],
+        [AC_MSG_ERROR([dnl
+Google Test was enabled, but no viable version could be found.])
+         ])])])
+AC_SUBST([HAVE_GTEST])
+AM_CONDITIONAL([HAVE_GTEST],[test "x$HAVE_GTEST" = "xyes"])
+AS_IF([test "x$HAVE_GTEST" = "xyes"],
+  [m4_ifval([$2], [$2])],
+  [m4_ifval([$3], [$3])])
+])
diff --git a/google-breakpad/src/testing/gtest/make/Makefile b/google-breakpad/src/testing/gtest/make/Makefile
new file mode 100644
index 0000000..5b27b6a
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/make/Makefile
@@ -0,0 +1,80 @@
+# A sample Makefile for building Google Test and using it in user
+# tests.  Please tweak it to suit your environment and project.  You
+# may want to move it to your project's root directory.
+#
+# SYNOPSIS:
+#
+#   make [all]  - makes everything.
+#   make TARGET - makes the given target.
+#   make clean  - removes all files generated by make.
+
+# Please tweak the following variable definitions as needed by your
+# project, except GTEST_HEADERS, which you can use in your own targets
+# but shouldn't modify.
+
+# Points to the root of Google Test, relative to where this file is.
+# Remember to tweak this if you move this file.
+GTEST_DIR = ..
+
+# Where to find user code.
+USER_DIR = ../samples
+
+# Flags passed to the preprocessor.
+CPPFLAGS += -I$(GTEST_DIR)/include
+
+# Flags passed to the C++ compiler.
+CXXFLAGS += -g -Wall -Wextra
+
+# All tests produced by this Makefile.  Remember to add new tests you
+# created to the list.
+TESTS = sample1_unittest
+
+# All Google Test headers.  Usually you shouldn't change this
+# definition.
+GTEST_HEADERS = $(GTEST_DIR)/include/gtest/*.h \
+                $(GTEST_DIR)/include/gtest/internal/*.h
+
+# House-keeping build targets.
+
+all : $(TESTS)
+
+clean :
+	rm -f $(TESTS) gtest.a gtest_main.a *.o
+
+# Builds gtest.a and gtest_main.a.
+
+# Usually you shouldn't tweak such internal variables, indicated by a
+# trailing _.
+GTEST_SRCS_ = $(GTEST_DIR)/src/*.cc $(GTEST_DIR)/src/*.h $(GTEST_HEADERS)
+
+# For simplicity and to avoid depending on Google Test's
+# implementation details, the dependencies specified below are
+# conservative and not optimized.  This is fine as Google Test
+# compiles fast and for ordinary users its source rarely changes.
+gtest-all.o : $(GTEST_SRCS_)
+	$(CXX) $(CPPFLAGS) -I$(GTEST_DIR) $(CXXFLAGS) -c \
+            $(GTEST_DIR)/src/gtest-all.cc
+
+gtest_main.o : $(GTEST_SRCS_)
+	$(CXX) $(CPPFLAGS) -I$(GTEST_DIR) $(CXXFLAGS) -c \
+            $(GTEST_DIR)/src/gtest_main.cc
+
+gtest.a : gtest-all.o
+	$(AR) $(ARFLAGS) $@ $^
+
+gtest_main.a : gtest-all.o gtest_main.o
+	$(AR) $(ARFLAGS) $@ $^
+
+# Builds a sample test.  A test should link with either gtest.a or
+# gtest_main.a, depending on whether it defines its own main()
+# function.
+
+sample1.o : $(USER_DIR)/sample1.cc $(USER_DIR)/sample1.h $(GTEST_HEADERS)
+	$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/sample1.cc
+
+sample1_unittest.o : $(USER_DIR)/sample1_unittest.cc \
+                     $(USER_DIR)/sample1.h $(GTEST_HEADERS)
+	$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/sample1_unittest.cc
+
+sample1_unittest : sample1.o sample1_unittest.o gtest_main.a
+	$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
diff --git a/google-breakpad/src/testing/gtest/msvc/gtest-md.sln b/google-breakpad/src/testing/gtest/msvc/gtest-md.sln
new file mode 100644
index 0000000..f7908da
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/msvc/gtest-md.sln
@@ -0,0 +1,45 @@
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtest-md", "gtest-md.vcproj", "{C8F6C172-56F2-4E76-B5FA-C3B423B31BE8}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtest_main-md", "gtest_main-md.vcproj", "{3AF54C8A-10BF-4332-9147-F68ED9862033}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtest_prod_test-md", "gtest_prod_test-md.vcproj", "{24848551-EF4F-47E8-9A9D-EA4D49BC3ECB}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtest_unittest-md", "gtest_unittest-md.vcproj", "{4D9FDFB5-986A-4139-823C-F4EE0ED481A2}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Global
+	GlobalSection(SolutionConfiguration) = preSolution
+		Debug = Debug
+		Release = Release
+	EndGlobalSection
+	GlobalSection(ProjectConfiguration) = postSolution
+		{C8F6C172-56F2-4E76-B5FA-C3B423B31BE8}.Debug.ActiveCfg = Debug|Win32
+		{C8F6C172-56F2-4E76-B5FA-C3B423B31BE8}.Debug.Build.0 = Debug|Win32
+		{C8F6C172-56F2-4E76-B5FA-C3B423B31BE8}.Release.ActiveCfg = Release|Win32
+		{C8F6C172-56F2-4E76-B5FA-C3B423B31BE8}.Release.Build.0 = Release|Win32
+		{3AF54C8A-10BF-4332-9147-F68ED9862033}.Debug.ActiveCfg = Debug|Win32
+		{3AF54C8A-10BF-4332-9147-F68ED9862033}.Debug.Build.0 = Debug|Win32
+		{3AF54C8A-10BF-4332-9147-F68ED9862033}.Release.ActiveCfg = Release|Win32
+		{3AF54C8A-10BF-4332-9147-F68ED9862033}.Release.Build.0 = Release|Win32
+		{24848551-EF4F-47E8-9A9D-EA4D49BC3ECB}.Debug.ActiveCfg = Debug|Win32
+		{24848551-EF4F-47E8-9A9D-EA4D49BC3ECB}.Debug.Build.0 = Debug|Win32
+		{24848551-EF4F-47E8-9A9D-EA4D49BC3ECB}.Release.ActiveCfg = Release|Win32
+		{24848551-EF4F-47E8-9A9D-EA4D49BC3ECB}.Release.Build.0 = Release|Win32
+		{4D9FDFB5-986A-4139-823C-F4EE0ED481A2}.Debug.ActiveCfg = Debug|Win32
+		{4D9FDFB5-986A-4139-823C-F4EE0ED481A2}.Debug.Build.0 = Debug|Win32
+		{4D9FDFB5-986A-4139-823C-F4EE0ED481A2}.Release.ActiveCfg = Release|Win32
+		{4D9FDFB5-986A-4139-823C-F4EE0ED481A2}.Release.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+	EndGlobalSection
+	GlobalSection(ExtensibilityAddIns) = postSolution
+	EndGlobalSection
+EndGlobal
diff --git a/google-breakpad/src/testing/gtest/msvc/gtest-md.vcproj b/google-breakpad/src/testing/gtest/msvc/gtest-md.vcproj
new file mode 100644
index 0000000..1c35c3a
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/msvc/gtest-md.vcproj
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="gtest-md"
+	ProjectGUID="{C8F6C172-56F2-4E76-B5FA-C3B423B31BE8}"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionName)/$(ConfigurationName)"
+			IntermediateDirectory="$(OutDir)/$(ProjectName)"
+			ConfigurationType="4"
+			CharacterSet="2"
+			ReferencesPath="">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="FALSE"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLibrarianTool"
+				OutputFile="$(OutDir)/gtestd.lib"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionName)/$(ConfigurationName)"
+			IntermediateDirectory="$(OutDir)/$(ProjectName)"
+			ConfigurationType="4"
+			CharacterSet="2"
+			ReferencesPath="&quot;..\include&quot;;&quot;..&quot;">
+			<Tool
+				Name="VCCLCompilerTool"
+				PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="FALSE"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLibrarianTool"
+				OutputFile="$(OutDir)/gtest.lib"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+			<File
+				RelativePath="..\src\gtest-all.cc">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						AdditionalIncludeDirectories="&quot;..&quot;;&quot;..\include&quot;"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						AdditionalIncludeDirectories="&quot;..&quot;;&quot;..\include&quot;"/>
+				</FileConfiguration>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/google-breakpad/src/testing/gtest/msvc/gtest.sln b/google-breakpad/src/testing/gtest/msvc/gtest.sln
new file mode 100644
index 0000000..ef4b057
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/msvc/gtest.sln
@@ -0,0 +1,45 @@
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtest", "gtest.vcproj", "{C8F6C172-56F2-4E76-B5FA-C3B423B31BE7}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtest_main", "gtest_main.vcproj", "{3AF54C8A-10BF-4332-9147-F68ED9862032}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtest_unittest", "gtest_unittest.vcproj", "{4D9FDFB5-986A-4139-823C-F4EE0ED481A1}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtest_prod_test", "gtest_prod_test.vcproj", "{24848551-EF4F-47E8-9A9D-EA4D49BC3ECA}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Global
+	GlobalSection(SolutionConfiguration) = preSolution
+		Debug = Debug
+		Release = Release
+	EndGlobalSection
+	GlobalSection(ProjectConfiguration) = postSolution
+		{C8F6C172-56F2-4E76-B5FA-C3B423B31BE7}.Debug.ActiveCfg = Debug|Win32
+		{C8F6C172-56F2-4E76-B5FA-C3B423B31BE7}.Debug.Build.0 = Debug|Win32
+		{C8F6C172-56F2-4E76-B5FA-C3B423B31BE7}.Release.ActiveCfg = Release|Win32
+		{C8F6C172-56F2-4E76-B5FA-C3B423B31BE7}.Release.Build.0 = Release|Win32
+		{3AF54C8A-10BF-4332-9147-F68ED9862032}.Debug.ActiveCfg = Debug|Win32
+		{3AF54C8A-10BF-4332-9147-F68ED9862032}.Debug.Build.0 = Debug|Win32
+		{3AF54C8A-10BF-4332-9147-F68ED9862032}.Release.ActiveCfg = Release|Win32
+		{3AF54C8A-10BF-4332-9147-F68ED9862032}.Release.Build.0 = Release|Win32
+		{4D9FDFB5-986A-4139-823C-F4EE0ED481A1}.Debug.ActiveCfg = Debug|Win32
+		{4D9FDFB5-986A-4139-823C-F4EE0ED481A1}.Debug.Build.0 = Debug|Win32
+		{4D9FDFB5-986A-4139-823C-F4EE0ED481A1}.Release.ActiveCfg = Release|Win32
+		{4D9FDFB5-986A-4139-823C-F4EE0ED481A1}.Release.Build.0 = Release|Win32
+		{24848551-EF4F-47E8-9A9D-EA4D49BC3ECA}.Debug.ActiveCfg = Debug|Win32
+		{24848551-EF4F-47E8-9A9D-EA4D49BC3ECA}.Debug.Build.0 = Debug|Win32
+		{24848551-EF4F-47E8-9A9D-EA4D49BC3ECA}.Release.ActiveCfg = Release|Win32
+		{24848551-EF4F-47E8-9A9D-EA4D49BC3ECA}.Release.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+	EndGlobalSection
+	GlobalSection(ExtensibilityAddIns) = postSolution
+	EndGlobalSection
+EndGlobal
diff --git a/google-breakpad/src/testing/gtest/msvc/gtest.vcproj b/google-breakpad/src/testing/gtest/msvc/gtest.vcproj
new file mode 100644
index 0000000..a8373ce
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/msvc/gtest.vcproj
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="gtest"
+	ProjectGUID="{C8F6C172-56F2-4E76-B5FA-C3B423B31BE7}"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionName)/$(ConfigurationName)"
+			IntermediateDirectory="$(OutDir)/$(ProjectName)"
+			ConfigurationType="4"
+			CharacterSet="2"
+			ReferencesPath="">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="5"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="FALSE"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLibrarianTool"
+				OutputFile="$(OutDir)/gtestd.lib"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionName)/$(ConfigurationName)"
+			IntermediateDirectory="$(OutDir)/$(ProjectName)"
+			ConfigurationType="4"
+			CharacterSet="2"
+			ReferencesPath="&quot;..\include&quot;;&quot;..&quot;">
+			<Tool
+				Name="VCCLCompilerTool"
+				PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
+				RuntimeLibrary="4"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="FALSE"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLibrarianTool"
+				OutputFile="$(OutDir)/gtest.lib"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+			<File
+				RelativePath="..\src\gtest-all.cc">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						AdditionalIncludeDirectories="&quot;..&quot;;&quot;..\include&quot;"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						AdditionalIncludeDirectories="&quot;..&quot;;&quot;..\include&quot;"/>
+				</FileConfiguration>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/google-breakpad/src/testing/gtest/msvc/gtest_main-md.vcproj b/google-breakpad/src/testing/gtest/msvc/gtest_main-md.vcproj
new file mode 100644
index 0000000..b5379fe
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/msvc/gtest_main-md.vcproj
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="gtest_main-md"
+	ProjectGUID="{3AF54C8A-10BF-4332-9147-F68ED9862033}"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionName)/$(ConfigurationName)"
+			IntermediateDirectory="$(OutDir)/$(ProjectName)"
+			ConfigurationType="4"
+			CharacterSet="2"
+			ReferencesPath="">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="FALSE"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLibrarianTool"
+				OutputFile="$(OutDir)/$(ProjectName)d.lib"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionName)/$(ConfigurationName)"
+			IntermediateDirectory="$(OutDir)/$(ProjectName)"
+			ConfigurationType="4"
+			CharacterSet="2"
+			ReferencesPath="&quot;..\include&quot;;&quot;..&quot;">
+			<Tool
+				Name="VCCLCompilerTool"
+				PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="FALSE"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLibrarianTool"
+				OutputFile="$(OutDir)/$(ProjectName).lib"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+		<ProjectReference
+			ReferencedProjectIdentifier="{C8F6C172-56F2-4E76-B5FA-C3B423B31BE8}"
+			Name="gtest-md"/>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+			<File
+				RelativePath="..\src\gtest_main.cc">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						AdditionalIncludeDirectories="&quot;..&quot;;&quot;..\include&quot;"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						AdditionalIncludeDirectories="&quot;..&quot;;&quot;..\include&quot;"/>
+				</FileConfiguration>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/google-breakpad/src/testing/gtest/msvc/gtest_main.vcproj b/google-breakpad/src/testing/gtest/msvc/gtest_main.vcproj
new file mode 100644
index 0000000..e8b763c
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/msvc/gtest_main.vcproj
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="gtest_main"
+	ProjectGUID="{3AF54C8A-10BF-4332-9147-F68ED9862032}"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionName)/$(ConfigurationName)"
+			IntermediateDirectory="$(OutDir)/$(ProjectName)"
+			ConfigurationType="4"
+			CharacterSet="2"
+			ReferencesPath="">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="5"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="FALSE"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLibrarianTool"
+				OutputFile="$(OutDir)/$(ProjectName)d.lib"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionName)/$(ConfigurationName)"
+			IntermediateDirectory="$(OutDir)/$(ProjectName)"
+			ConfigurationType="4"
+			CharacterSet="2"
+			ReferencesPath="&quot;..\include&quot;;&quot;..&quot;">
+			<Tool
+				Name="VCCLCompilerTool"
+				PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
+				RuntimeLibrary="4"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="FALSE"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLibrarianTool"
+				OutputFile="$(OutDir)/$(ProjectName).lib"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+		<ProjectReference
+			ReferencedProjectIdentifier="{C8F6C172-56F2-4E76-B5FA-C3B423B31BE7}"
+			Name="gtest"/>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+			<File
+				RelativePath="..\src\gtest_main.cc">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						AdditionalIncludeDirectories="&quot;..&quot;;&quot;..\include&quot;"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						AdditionalIncludeDirectories="&quot;..&quot;;&quot;..\include&quot;"/>
+				</FileConfiguration>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/google-breakpad/src/testing/gtest/msvc/gtest_prod_test-md.vcproj b/google-breakpad/src/testing/gtest/msvc/gtest_prod_test-md.vcproj
new file mode 100644
index 0000000..05b05d9
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/msvc/gtest_prod_test-md.vcproj
@@ -0,0 +1,164 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="gtest_prod_test-md"
+	ProjectGUID="{24848551-EF4F-47E8-9A9D-EA4D49BC3ECB}"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionName)/$(ConfigurationName)"
+			IntermediateDirectory="$(OutDir)/$(ProjectName)"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="3"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="FALSE"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="$(OutDir)/gtest_prod_test.exe"
+				LinkIncremental="2"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)/gtest_prod_test.pdb"
+				SubSystem="1"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionName)/$(ConfigurationName)"
+			IntermediateDirectory="$(OutDir)/$(ProjectName)"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="3"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="FALSE"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="$(OutDir)/gtest_prod_test.exe"
+				LinkIncremental="1"
+				GenerateDebugInformation="TRUE"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+		<ProjectReference
+			ReferencedProjectIdentifier="{3AF54C8A-10BF-4332-9147-F68ED9862033}"
+			Name="gtest_main-md"/>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+			<File
+				RelativePath="..\test\gtest_prod_test.cc">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						AdditionalIncludeDirectories="&quot;..&quot;;&quot;..\include&quot;"
+						UsePrecompiledHeader="0"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						AdditionalIncludeDirectories="&quot;..&quot;;&quot;..\include&quot;"
+						UsePrecompiledHeader="0"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\test\production.cc">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						AdditionalIncludeDirectories="&quot;..&quot;;&quot;..\include&quot;"
+						UsePrecompiledHeader="0"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						AdditionalIncludeDirectories="&quot;..&quot;;&quot;..\include&quot;"
+						UsePrecompiledHeader="0"/>
+				</FileConfiguration>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+			<File
+				RelativePath="..\test\production.h">
+			</File>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/google-breakpad/src/testing/gtest/msvc/gtest_prod_test.vcproj b/google-breakpad/src/testing/gtest/msvc/gtest_prod_test.vcproj
new file mode 100644
index 0000000..6d7a2f0
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/msvc/gtest_prod_test.vcproj
@@ -0,0 +1,164 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="gtest_prod_test"
+	ProjectGUID="{24848551-EF4F-47E8-9A9D-EA4D49BC3ECA}"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionName)/$(ConfigurationName)"
+			IntermediateDirectory="$(OutDir)/$(ProjectName)"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="5"
+				UsePrecompiledHeader="3"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="FALSE"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="$(OutDir)/gtest_prod_test.exe"
+				LinkIncremental="2"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)/gtest_prod_test.pdb"
+				SubSystem="1"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionName)/$(ConfigurationName)"
+			IntermediateDirectory="$(OutDir)/$(ProjectName)"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="4"
+				UsePrecompiledHeader="3"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="FALSE"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="$(OutDir)/gtest_prod_test.exe"
+				LinkIncremental="1"
+				GenerateDebugInformation="TRUE"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+		<ProjectReference
+			ReferencedProjectIdentifier="{3AF54C8A-10BF-4332-9147-F68ED9862032}"
+			Name="gtest_main"/>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+			<File
+				RelativePath="..\test\gtest_prod_test.cc">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						AdditionalIncludeDirectories="&quot;..&quot;;&quot;..\include&quot;"
+						UsePrecompiledHeader="0"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						AdditionalIncludeDirectories="&quot;..&quot;;&quot;..\include&quot;"
+						UsePrecompiledHeader="0"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\test\production.cc">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						AdditionalIncludeDirectories="&quot;..&quot;;&quot;..\include&quot;"
+						UsePrecompiledHeader="0"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						AdditionalIncludeDirectories="&quot;..&quot;;&quot;..\include&quot;"
+						UsePrecompiledHeader="0"/>
+				</FileConfiguration>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+			<File
+				RelativePath="..\test\production.h">
+			</File>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/google-breakpad/src/testing/gtest/msvc/gtest_unittest-md.vcproj b/google-breakpad/src/testing/gtest/msvc/gtest_unittest-md.vcproj
new file mode 100644
index 0000000..38a5e56
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/msvc/gtest_unittest-md.vcproj
@@ -0,0 +1,147 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="gtest_unittest-md"
+	ProjectGUID="{4D9FDFB5-986A-4139-823C-F4EE0ED481A2}"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionName)/$(ConfigurationName)"
+			IntermediateDirectory="$(OutDir)/$(ProjectName)"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="3"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="FALSE"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="$(OutDir)/gtest_unittest.exe"
+				LinkIncremental="2"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)/gtest_unittest.pdb"
+				SubSystem="1"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionName)/$(ConfigurationName)"
+			IntermediateDirectory="$(OutDir)/$(ProjectName)"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="3"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="FALSE"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="$(OutDir)/gtest_unittest.exe"
+				LinkIncremental="1"
+				GenerateDebugInformation="TRUE"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+		<ProjectReference
+			ReferencedProjectIdentifier="{3AF54C8A-10BF-4332-9147-F68ED9862033}"
+			Name="gtest_main-md"/>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+			<File
+				RelativePath="..\test\gtest_unittest.cc">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="1"
+						AdditionalIncludeDirectories="&quot;..&quot;;&quot;..\include&quot;"
+						BasicRuntimeChecks="0"
+						UsePrecompiledHeader="0"
+						DebugInformationFormat="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						AdditionalIncludeDirectories="&quot;..&quot;;&quot;..\include&quot;"
+						UsePrecompiledHeader="0"/>
+				</FileConfiguration>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/google-breakpad/src/testing/gtest/msvc/gtest_unittest.vcproj b/google-breakpad/src/testing/gtest/msvc/gtest_unittest.vcproj
new file mode 100644
index 0000000..cb1f52b
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/msvc/gtest_unittest.vcproj
@@ -0,0 +1,147 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="gtest_unittest"
+	ProjectGUID="{4D9FDFB5-986A-4139-823C-F4EE0ED481A1}"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionName)/$(ConfigurationName)"
+			IntermediateDirectory="$(OutDir)/$(ProjectName)"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="5"
+				UsePrecompiledHeader="3"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="FALSE"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="$(OutDir)/gtest_unittest.exe"
+				LinkIncremental="2"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)/gtest_unittest.pdb"
+				SubSystem="1"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionName)/$(ConfigurationName)"
+			IntermediateDirectory="$(OutDir)/$(ProjectName)"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="4"
+				UsePrecompiledHeader="3"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="FALSE"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="$(OutDir)/gtest_unittest.exe"
+				LinkIncremental="1"
+				GenerateDebugInformation="TRUE"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+		<ProjectReference
+			ReferencedProjectIdentifier="{3AF54C8A-10BF-4332-9147-F68ED9862032}"
+			Name="gtest_main"/>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+			<File
+				RelativePath="..\test\gtest_unittest.cc">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="1"
+						AdditionalIncludeDirectories="&quot;..&quot;;&quot;..\include&quot;"
+						BasicRuntimeChecks="0"
+						UsePrecompiledHeader="0"
+						DebugInformationFormat="3"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						AdditionalIncludeDirectories="&quot;..&quot;;&quot;..\include&quot;"
+						UsePrecompiledHeader="0"/>
+				</FileConfiguration>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/google-breakpad/src/testing/gtest/samples/prime_tables.h b/google-breakpad/src/testing/gtest/samples/prime_tables.h
new file mode 100644
index 0000000..92ce16a
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/samples/prime_tables.h
@@ -0,0 +1,123 @@
+// Copyright 2008 Google Inc.
+// All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+// Author: vladl@google.com (Vlad Losev)
+
+// This provides interface PrimeTable that determines whether a number is a
+// prime and determines a next prime number. This interface is used
+// in Google Test samples demonstrating use of parameterized tests.
+
+#ifndef GTEST_SAMPLES_PRIME_TABLES_H_
+#define GTEST_SAMPLES_PRIME_TABLES_H_
+
+#include <algorithm>
+
+// The prime table interface.
+class PrimeTable {
+ public:
+  virtual ~PrimeTable() {}
+
+  // Returns true iff n is a prime number.
+  virtual bool IsPrime(int n) const = 0;
+
+  // Returns the smallest prime number greater than p; or returns -1
+  // if the next prime is beyond the capacity of the table.
+  virtual int GetNextPrime(int p) const = 0;
+};
+
+// Implementation #1 calculates the primes on-the-fly.
+class OnTheFlyPrimeTable : public PrimeTable {
+ public:
+  virtual bool IsPrime(int n) const {
+    if (n <= 1) return false;
+
+    for (int i = 2; i*i <= n; i++) {
+      // n is divisible by an integer other than 1 and itself.
+      if ((n % i) == 0) return false;
+    }
+
+    return true;
+  }
+
+  virtual int GetNextPrime(int p) const {
+    for (int n = p + 1; n > 0; n++) {
+      if (IsPrime(n)) return n;
+    }
+
+    return -1;
+  }
+};
+
+// Implementation #2 pre-calculates the primes and stores the result
+// in an array.
+class PreCalculatedPrimeTable : public PrimeTable {
+ public:
+  // 'max' specifies the maximum number the prime table holds.
+  explicit PreCalculatedPrimeTable(int max)
+      : is_prime_size_(max + 1), is_prime_(new bool[max + 1]) {
+    CalculatePrimesUpTo(max);
+  }
+  virtual ~PreCalculatedPrimeTable() { delete[] is_prime_; }
+
+  virtual bool IsPrime(int n) const {
+    return 0 <= n && n < is_prime_size_ && is_prime_[n];
+  }
+
+  virtual int GetNextPrime(int p) const {
+    for (int n = p + 1; n < is_prime_size_; n++) {
+      if (is_prime_[n]) return n;
+    }
+
+    return -1;
+  }
+
+ private:
+  void CalculatePrimesUpTo(int max) {
+    ::std::fill(is_prime_, is_prime_ + is_prime_size_, true);
+    is_prime_[0] = is_prime_[1] = false;
+
+    for (int i = 2; i <= max; i++) {
+      if (!is_prime_[i]) continue;
+
+      // Marks all multiples of i (except i itself) as non-prime.
+      for (int j = 2*i; j <= max; j += i) {
+        is_prime_[j] = false;
+      }
+    }
+  }
+
+  const int is_prime_size_;
+  bool* const is_prime_;
+
+  // Disables compiler warning "assignment operator could not be generated."
+  void operator=(const PreCalculatedPrimeTable& rhs);
+};
+
+#endif  // GTEST_SAMPLES_PRIME_TABLES_H_
diff --git a/google-breakpad/src/testing/gtest/samples/sample1.cc b/google-breakpad/src/testing/gtest/samples/sample1.cc
new file mode 100644
index 0000000..f171e26
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/samples/sample1.cc
@@ -0,0 +1,68 @@
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// A sample program demonstrating using Google C++ testing framework.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+#include "sample1.h"
+
+// Returns n! (the factorial of n).  For negative n, n! is defined to be 1.
+int Factorial(int n) {
+  int result = 1;
+  for (int i = 1; i <= n; i++) {
+    result *= i;
+  }
+
+  return result;
+}
+
+// Returns true iff n is a prime number.
+bool IsPrime(int n) {
+  // Trivial case 1: small numbers
+  if (n <= 1) return false;
+
+  // Trivial case 2: even numbers
+  if (n % 2 == 0) return n == 2;
+
+  // Now, we have that n is odd and n >= 3.
+
+  // Try to divide n by every odd number i, starting from 3
+  for (int i = 3; ; i += 2) {
+    // We only have to try i up to the squre root of n
+    if (i > n/i) break;
+
+    // Now, we have i <= n/i < n.
+    // If n is divisible by i, n is not prime.
+    if (n % i == 0) return false;
+  }
+
+  // n has no integer factor in the range (1, n), and thus is prime.
+  return true;
+}
diff --git a/google-breakpad/src/testing/gtest/samples/sample1.h b/google-breakpad/src/testing/gtest/samples/sample1.h
new file mode 100644
index 0000000..3dfeb98
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/samples/sample1.h
@@ -0,0 +1,43 @@
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// A sample program demonstrating using Google C++ testing framework.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+#ifndef GTEST_SAMPLES_SAMPLE1_H_
+#define GTEST_SAMPLES_SAMPLE1_H_
+
+// Returns n! (the factorial of n).  For negative n, n! is defined to be 1.
+int Factorial(int n);
+
+// Returns true iff n is a prime number.
+bool IsPrime(int n);
+
+#endif  // GTEST_SAMPLES_SAMPLE1_H_
diff --git a/google-breakpad/src/testing/gtest/samples/sample10_unittest.cc b/google-breakpad/src/testing/gtest/samples/sample10_unittest.cc
new file mode 100644
index 0000000..0051cd5
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/samples/sample10_unittest.cc
@@ -0,0 +1,144 @@
+// Copyright 2009 Google Inc. All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: vladl@google.com (Vlad Losev)
+
+// This sample shows how to use Google Test listener API to implement
+// a primitive leak checker.
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "gtest/gtest.h"
+
+using ::testing::EmptyTestEventListener;
+using ::testing::InitGoogleTest;
+using ::testing::Test;
+using ::testing::TestCase;
+using ::testing::TestEventListeners;
+using ::testing::TestInfo;
+using ::testing::TestPartResult;
+using ::testing::UnitTest;
+
+namespace {
+
+// We will track memory used by this class.
+class Water {
+ public:
+  // Normal Water declarations go here.
+
+  // operator new and operator delete help us control water allocation.
+  void* operator new(size_t allocation_size) {
+    allocated_++;
+    return malloc(allocation_size);
+  }
+
+  void operator delete(void* block, size_t /* allocation_size */) {
+    allocated_--;
+    free(block);
+  }
+
+  static int allocated() { return allocated_; }
+
+ private:
+  static int allocated_;
+};
+
+int Water::allocated_ = 0;
+
+// This event listener monitors how many Water objects are created and
+// destroyed by each test, and reports a failure if a test leaks some Water
+// objects. It does this by comparing the number of live Water objects at
+// the beginning of a test and at the end of a test.
+class LeakChecker : public EmptyTestEventListener {
+ private:
+  // Called before a test starts.
+  virtual void OnTestStart(const TestInfo& /* test_info */) {
+    initially_allocated_ = Water::allocated();
+  }
+
+  // Called after a test ends.
+  virtual void OnTestEnd(const TestInfo& /* test_info */) {
+    int difference = Water::allocated() - initially_allocated_;
+
+    // You can generate a failure in any event handler except
+    // OnTestPartResult. Just use an appropriate Google Test assertion to do
+    // it.
+    EXPECT_LE(difference, 0) << "Leaked " << difference << " unit(s) of Water!";
+  }
+
+  int initially_allocated_;
+};
+
+TEST(ListenersTest, DoesNotLeak) {
+  Water* water = new Water;
+  delete water;
+}
+
+// This should fail when the --check_for_leaks command line flag is
+// specified.
+TEST(ListenersTest, LeaksWater) {
+  Water* water = new Water;
+  EXPECT_TRUE(water != NULL);
+}
+
+}  // namespace
+
+int main(int argc, char **argv) {
+  InitGoogleTest(&argc, argv);
+
+  bool check_for_leaks = false;
+  if (argc > 1 && strcmp(argv[1], "--check_for_leaks") == 0 )
+    check_for_leaks = true;
+  else
+    printf("%s\n", "Run this program with --check_for_leaks to enable "
+           "custom leak checking in the tests.");
+
+  // If we are given the --check_for_leaks command line flag, installs the
+  // leak checker.
+  if (check_for_leaks) {
+    TestEventListeners& listeners = UnitTest::GetInstance()->listeners();
+
+    // Adds the leak checker to the end of the test event listener list,
+    // after the default text output printer and the default XML report
+    // generator.
+    //
+    // The order is important - it ensures that failures generated in the
+    // leak checker's OnTestEnd() method are processed by the text and XML
+    // printers *before* their OnTestEnd() methods are called, such that
+    // they are attributed to the right test. Remember that a listener
+    // receives an OnXyzStart event *after* listeners preceding it in the
+    // list received that event, and receives an OnXyzEnd event *before*
+    // listeners preceding it.
+    //
+    // We don't need to worry about deleting the new listener later, as
+    // Google Test will do it.
+    listeners.Append(new LeakChecker);
+  }
+  return RUN_ALL_TESTS();
+}
diff --git a/google-breakpad/src/testing/gtest/samples/sample1_unittest.cc b/google-breakpad/src/testing/gtest/samples/sample1_unittest.cc
new file mode 100644
index 0000000..aefc4f1
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/samples/sample1_unittest.cc
@@ -0,0 +1,153 @@
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// A sample program demonstrating using Google C++ testing framework.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+
+// This sample shows how to write a simple unit test for a function,
+// using Google C++ testing framework.
+//
+// Writing a unit test using Google C++ testing framework is easy as 1-2-3:
+
+
+// Step 1. Include necessary header files such that the stuff your
+// test logic needs is declared.
+//
+// Don't forget gtest.h, which declares the testing framework.
+
+#include <limits.h>
+#include "sample1.h"
+#include "gtest/gtest.h"
+
+
+// Step 2. Use the TEST macro to define your tests.
+//
+// TEST has two parameters: the test case name and the test name.
+// After using the macro, you should define your test logic between a
+// pair of braces.  You can use a bunch of macros to indicate the
+// success or failure of a test.  EXPECT_TRUE and EXPECT_EQ are
+// examples of such macros.  For a complete list, see gtest.h.
+//
+// <TechnicalDetails>
+//
+// In Google Test, tests are grouped into test cases.  This is how we
+// keep test code organized.  You should put logically related tests
+// into the same test case.
+//
+// The test case name and the test name should both be valid C++
+// identifiers.  And you should not use underscore (_) in the names.
+//
+// Google Test guarantees that each test you define is run exactly
+// once, but it makes no guarantee on the order the tests are
+// executed.  Therefore, you should write your tests in such a way
+// that their results don't depend on their order.
+//
+// </TechnicalDetails>
+
+
+// Tests Factorial().
+
+// Tests factorial of negative numbers.
+TEST(FactorialTest, Negative) {
+  // This test is named "Negative", and belongs to the "FactorialTest"
+  // test case.
+  EXPECT_EQ(1, Factorial(-5));
+  EXPECT_EQ(1, Factorial(-1));
+  EXPECT_GT(Factorial(-10), 0);
+
+  // <TechnicalDetails>
+  //
+  // EXPECT_EQ(expected, actual) is the same as
+  //
+  //   EXPECT_TRUE((expected) == (actual))
+  //
+  // except that it will print both the expected value and the actual
+  // value when the assertion fails.  This is very helpful for
+  // debugging.  Therefore in this case EXPECT_EQ is preferred.
+  //
+  // On the other hand, EXPECT_TRUE accepts any Boolean expression,
+  // and is thus more general.
+  //
+  // </TechnicalDetails>
+}
+
+// Tests factorial of 0.
+TEST(FactorialTest, Zero) {
+  EXPECT_EQ(1, Factorial(0));
+}
+
+// Tests factorial of positive numbers.
+TEST(FactorialTest, Positive) {
+  EXPECT_EQ(1, Factorial(1));
+  EXPECT_EQ(2, Factorial(2));
+  EXPECT_EQ(6, Factorial(3));
+  EXPECT_EQ(40320, Factorial(8));
+}
+
+
+// Tests IsPrime()
+
+// Tests negative input.
+TEST(IsPrimeTest, Negative) {
+  // This test belongs to the IsPrimeTest test case.
+
+  EXPECT_FALSE(IsPrime(-1));
+  EXPECT_FALSE(IsPrime(-2));
+  EXPECT_FALSE(IsPrime(INT_MIN));
+}
+
+// Tests some trivial cases.
+TEST(IsPrimeTest, Trivial) {
+  EXPECT_FALSE(IsPrime(0));
+  EXPECT_FALSE(IsPrime(1));
+  EXPECT_TRUE(IsPrime(2));
+  EXPECT_TRUE(IsPrime(3));
+}
+
+// Tests positive input.
+TEST(IsPrimeTest, Positive) {
+  EXPECT_FALSE(IsPrime(4));
+  EXPECT_TRUE(IsPrime(5));
+  EXPECT_FALSE(IsPrime(6));
+  EXPECT_TRUE(IsPrime(23));
+}
+
+// Step 3. Call RUN_ALL_TESTS() in main().
+//
+// We do this by linking in src/gtest_main.cc file, which consists of
+// a main() function which calls RUN_ALL_TESTS() for us.
+//
+// This runs all the tests you've defined, prints the result, and
+// returns 0 if successful, or 1 otherwise.
+//
+// Did you notice that we didn't register the tests?  The
+// RUN_ALL_TESTS() macro magically knows about all the tests we
+// defined.  Isn't this convenient?
diff --git a/google-breakpad/src/testing/gtest/samples/sample2.cc b/google-breakpad/src/testing/gtest/samples/sample2.cc
new file mode 100644
index 0000000..5f763b9
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/samples/sample2.cc
@@ -0,0 +1,56 @@
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// A sample program demonstrating using Google C++ testing framework.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+#include "sample2.h"
+
+#include <string.h>
+
+// Clones a 0-terminated C string, allocating memory using new.
+const char* MyString::CloneCString(const char* a_c_string) {
+  if (a_c_string == NULL) return NULL;
+
+  const size_t len = strlen(a_c_string);
+  char* const clone = new char[ len + 1 ];
+  memcpy(clone, a_c_string, len + 1);
+
+  return clone;
+}
+
+// Sets the 0-terminated C string this MyString object
+// represents.
+void MyString::Set(const char* a_c_string) {
+  // Makes sure this works when c_string == c_string_
+  const char* const temp = MyString::CloneCString(a_c_string);
+  delete[] c_string_;
+  c_string_ = temp;
+}
diff --git a/google-breakpad/src/testing/gtest/samples/sample2.h b/google-breakpad/src/testing/gtest/samples/sample2.h
new file mode 100644
index 0000000..cb485c7
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/samples/sample2.h
@@ -0,0 +1,85 @@
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// A sample program demonstrating using Google C++ testing framework.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+#ifndef GTEST_SAMPLES_SAMPLE2_H_
+#define GTEST_SAMPLES_SAMPLE2_H_
+
+#include <string.h>
+
+
+// A simple string class.
+class MyString {
+ private:
+  const char* c_string_;
+  const MyString& operator=(const MyString& rhs);
+
+ public:
+  // Clones a 0-terminated C string, allocating memory using new.
+  static const char* CloneCString(const char* a_c_string);
+
+  ////////////////////////////////////////////////////////////
+  //
+  // C'tors
+
+  // The default c'tor constructs a NULL string.
+  MyString() : c_string_(NULL) {}
+
+  // Constructs a MyString by cloning a 0-terminated C string.
+  explicit MyString(const char* a_c_string) : c_string_(NULL) {
+    Set(a_c_string);
+  }
+
+  // Copy c'tor
+  MyString(const MyString& string) : c_string_(NULL) {
+    Set(string.c_string_);
+  }
+
+  ////////////////////////////////////////////////////////////
+  //
+  // D'tor.  MyString is intended to be a final class, so the d'tor
+  // doesn't need to be virtual.
+  ~MyString() { delete[] c_string_; }
+
+  // Gets the 0-terminated C string this MyString object represents.
+  const char* c_string() const { return c_string_; }
+
+  size_t Length() const {
+    return c_string_ == NULL ? 0 : strlen(c_string_);
+  }
+
+  // Sets the 0-terminated C string this MyString object represents.
+  void Set(const char* c_string);
+};
+
+
+#endif  // GTEST_SAMPLES_SAMPLE2_H_
diff --git a/google-breakpad/src/testing/gtest/samples/sample2_unittest.cc b/google-breakpad/src/testing/gtest/samples/sample2_unittest.cc
new file mode 100644
index 0000000..4fa19b7
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/samples/sample2_unittest.cc
@@ -0,0 +1,109 @@
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// A sample program demonstrating using Google C++ testing framework.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+
+// This sample shows how to write a more complex unit test for a class
+// that has multiple member functions.
+//
+// Usually, it's a good idea to have one test for each method in your
+// class.  You don't have to do that exactly, but it helps to keep
+// your tests organized.  You may also throw in additional tests as
+// needed.
+
+#include "sample2.h"
+#include "gtest/gtest.h"
+
+// In this example, we test the MyString class (a simple string).
+
+// Tests the default c'tor.
+TEST(MyString, DefaultConstructor) {
+  const MyString s;
+
+  // Asserts that s.c_string() returns NULL.
+  //
+  // <TechnicalDetails>
+  //
+  // If we write NULL instead of
+  //
+  //   static_cast<const char *>(NULL)
+  //
+  // in this assertion, it will generate a warning on gcc 3.4.  The
+  // reason is that EXPECT_EQ needs to know the types of its
+  // arguments in order to print them when it fails.  Since NULL is
+  // #defined as 0, the compiler will use the formatter function for
+  // int to print it.  However, gcc thinks that NULL should be used as
+  // a pointer, not an int, and therefore complains.
+  //
+  // The root of the problem is C++'s lack of distinction between the
+  // integer number 0 and the null pointer constant.  Unfortunately,
+  // we have to live with this fact.
+  //
+  // </TechnicalDetails>
+  EXPECT_STREQ(NULL, s.c_string());
+
+  EXPECT_EQ(0u, s.Length());
+}
+
+const char kHelloString[] = "Hello, world!";
+
+// Tests the c'tor that accepts a C string.
+TEST(MyString, ConstructorFromCString) {
+  const MyString s(kHelloString);
+  EXPECT_EQ(0, strcmp(s.c_string(), kHelloString));
+  EXPECT_EQ(sizeof(kHelloString)/sizeof(kHelloString[0]) - 1,
+            s.Length());
+}
+
+// Tests the copy c'tor.
+TEST(MyString, CopyConstructor) {
+  const MyString s1(kHelloString);
+  const MyString s2 = s1;
+  EXPECT_EQ(0, strcmp(s2.c_string(), kHelloString));
+}
+
+// Tests the Set method.
+TEST(MyString, Set) {
+  MyString s;
+
+  s.Set(kHelloString);
+  EXPECT_EQ(0, strcmp(s.c_string(), kHelloString));
+
+  // Set should work when the input pointer is the same as the one
+  // already in the MyString object.
+  s.Set(s.c_string());
+  EXPECT_EQ(0, strcmp(s.c_string(), kHelloString));
+
+  // Can we set the MyString to NULL?
+  s.Set(NULL);
+  EXPECT_STREQ(NULL, s.c_string());
+}
diff --git a/google-breakpad/src/testing/gtest/samples/sample3-inl.h b/google-breakpad/src/testing/gtest/samples/sample3-inl.h
new file mode 100644
index 0000000..7e3084d
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/samples/sample3-inl.h
@@ -0,0 +1,172 @@
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// A sample program demonstrating using Google C++ testing framework.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+#ifndef GTEST_SAMPLES_SAMPLE3_INL_H_
+#define GTEST_SAMPLES_SAMPLE3_INL_H_
+
+#include <stddef.h>
+
+
+// Queue is a simple queue implemented as a singled-linked list.
+//
+// The element type must support copy constructor.
+template <typename E>  // E is the element type
+class Queue;
+
+// QueueNode is a node in a Queue, which consists of an element of
+// type E and a pointer to the next node.
+template <typename E>  // E is the element type
+class QueueNode {
+  friend class Queue<E>;
+
+ public:
+  // Gets the element in this node.
+  const E& element() const { return element_; }
+
+  // Gets the next node in the queue.
+  QueueNode* next() { return next_; }
+  const QueueNode* next() const { return next_; }
+
+ private:
+  // Creates a node with a given element value.  The next pointer is
+  // set to NULL.
+  explicit QueueNode(const E& an_element) : element_(an_element), next_(NULL) {}
+
+  // We disable the default assignment operator and copy c'tor.
+  const QueueNode& operator = (const QueueNode&);
+  QueueNode(const QueueNode&);
+
+  E element_;
+  QueueNode* next_;
+};
+
+template <typename E>  // E is the element type.
+class Queue {
+ public:
+  // Creates an empty queue.
+  Queue() : head_(NULL), last_(NULL), size_(0) {}
+
+  // D'tor.  Clears the queue.
+  ~Queue() { Clear(); }
+
+  // Clears the queue.
+  void Clear() {
+    if (size_ > 0) {
+      // 1. Deletes every node.
+      QueueNode<E>* node = head_;
+      QueueNode<E>* next = node->next();
+      for (; ;) {
+        delete node;
+        node = next;
+        if (node == NULL) break;
+        next = node->next();
+      }
+
+      // 2. Resets the member variables.
+      head_ = last_ = NULL;
+      size_ = 0;
+    }
+  }
+
+  // Gets the number of elements.
+  size_t Size() const { return size_; }
+
+  // Gets the first element of the queue, or NULL if the queue is empty.
+  QueueNode<E>* Head() { return head_; }
+  const QueueNode<E>* Head() const { return head_; }
+
+  // Gets the last element of the queue, or NULL if the queue is empty.
+  QueueNode<E>* Last() { return last_; }
+  const QueueNode<E>* Last() const { return last_; }
+
+  // Adds an element to the end of the queue.  A copy of the element is
+  // created using the copy constructor, and then stored in the queue.
+  // Changes made to the element in the queue doesn't affect the source
+  // object, and vice versa.
+  void Enqueue(const E& element) {
+    QueueNode<E>* new_node = new QueueNode<E>(element);
+
+    if (size_ == 0) {
+      head_ = last_ = new_node;
+      size_ = 1;
+    } else {
+      last_->next_ = new_node;
+      last_ = new_node;
+      size_++;
+    }
+  }
+
+  // Removes the head of the queue and returns it.  Returns NULL if
+  // the queue is empty.
+  E* Dequeue() {
+    if (size_ == 0) {
+      return NULL;
+    }
+
+    const QueueNode<E>* const old_head = head_;
+    head_ = head_->next_;
+    size_--;
+    if (size_ == 0) {
+      last_ = NULL;
+    }
+
+    E* element = new E(old_head->element());
+    delete old_head;
+
+    return element;
+  }
+
+  // Applies a function/functor on each element of the queue, and
+  // returns the result in a new queue.  The original queue is not
+  // affected.
+  template <typename F>
+  Queue* Map(F function) const {
+    Queue* new_queue = new Queue();
+    for (const QueueNode<E>* node = head_; node != NULL; node = node->next_) {
+      new_queue->Enqueue(function(node->element()));
+    }
+
+    return new_queue;
+  }
+
+ private:
+  QueueNode<E>* head_;  // The first node of the queue.
+  QueueNode<E>* last_;  // The last node of the queue.
+  size_t size_;  // The number of elements in the queue.
+
+  // We disallow copying a queue.
+  Queue(const Queue&);
+  const Queue& operator = (const Queue&);
+};
+
+#endif  // GTEST_SAMPLES_SAMPLE3_INL_H_
diff --git a/google-breakpad/src/testing/gtest/samples/sample3_unittest.cc b/google-breakpad/src/testing/gtest/samples/sample3_unittest.cc
new file mode 100644
index 0000000..bf3877d
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/samples/sample3_unittest.cc
@@ -0,0 +1,151 @@
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// A sample program demonstrating using Google C++ testing framework.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+
+// In this example, we use a more advanced feature of Google Test called
+// test fixture.
+//
+// A test fixture is a place to hold objects and functions shared by
+// all tests in a test case.  Using a test fixture avoids duplicating
+// the test code necessary to initialize and cleanup those common
+// objects for each test.  It is also useful for defining sub-routines
+// that your tests need to invoke a lot.
+//
+// <TechnicalDetails>
+//
+// The tests share the test fixture in the sense of code sharing, not
+// data sharing.  Each test is given its own fresh copy of the
+// fixture.  You cannot expect the data modified by one test to be
+// passed on to another test, which is a bad idea.
+//
+// The reason for this design is that tests should be independent and
+// repeatable.  In particular, a test should not fail as the result of
+// another test's failure.  If one test depends on info produced by
+// another test, then the two tests should really be one big test.
+//
+// The macros for indicating the success/failure of a test
+// (EXPECT_TRUE, FAIL, etc) need to know what the current test is
+// (when Google Test prints the test result, it tells you which test
+// each failure belongs to).  Technically, these macros invoke a
+// member function of the Test class.  Therefore, you cannot use them
+// in a global function.  That's why you should put test sub-routines
+// in a test fixture.
+//
+// </TechnicalDetails>
+
+#include "sample3-inl.h"
+#include "gtest/gtest.h"
+
+// To use a test fixture, derive a class from testing::Test.
+class QueueTest : public testing::Test {
+ protected:  // You should make the members protected s.t. they can be
+             // accessed from sub-classes.
+
+  // virtual void SetUp() will be called before each test is run.  You
+  // should define it if you need to initialize the varaibles.
+  // Otherwise, this can be skipped.
+  virtual void SetUp() {
+    q1_.Enqueue(1);
+    q2_.Enqueue(2);
+    q2_.Enqueue(3);
+  }
+
+  // virtual void TearDown() will be called after each test is run.
+  // You should define it if there is cleanup work to do.  Otherwise,
+  // you don't have to provide it.
+  //
+  // virtual void TearDown() {
+  // }
+
+  // A helper function that some test uses.
+  static int Double(int n) {
+    return 2*n;
+  }
+
+  // A helper function for testing Queue::Map().
+  void MapTester(const Queue<int> * q) {
+    // Creates a new queue, where each element is twice as big as the
+    // corresponding one in q.
+    const Queue<int> * const new_q = q->Map(Double);
+
+    // Verifies that the new queue has the same size as q.
+    ASSERT_EQ(q->Size(), new_q->Size());
+
+    // Verifies the relationship between the elements of the two queues.
+    for ( const QueueNode<int> * n1 = q->Head(), * n2 = new_q->Head();
+          n1 != NULL; n1 = n1->next(), n2 = n2->next() ) {
+      EXPECT_EQ(2 * n1->element(), n2->element());
+    }
+
+    delete new_q;
+  }
+
+  // Declares the variables your tests want to use.
+  Queue<int> q0_;
+  Queue<int> q1_;
+  Queue<int> q2_;
+};
+
+// When you have a test fixture, you define a test using TEST_F
+// instead of TEST.
+
+// Tests the default c'tor.
+TEST_F(QueueTest, DefaultConstructor) {
+  // You can access data in the test fixture here.
+  EXPECT_EQ(0u, q0_.Size());
+}
+
+// Tests Dequeue().
+TEST_F(QueueTest, Dequeue) {
+  int * n = q0_.Dequeue();
+  EXPECT_TRUE(n == NULL);
+
+  n = q1_.Dequeue();
+  ASSERT_TRUE(n != NULL);
+  EXPECT_EQ(1, *n);
+  EXPECT_EQ(0u, q1_.Size());
+  delete n;
+
+  n = q2_.Dequeue();
+  ASSERT_TRUE(n != NULL);
+  EXPECT_EQ(2, *n);
+  EXPECT_EQ(1u, q2_.Size());
+  delete n;
+}
+
+// Tests the Queue::Map() function.
+TEST_F(QueueTest, Map) {
+  MapTester(&q0_);
+  MapTester(&q1_);
+  MapTester(&q2_);
+}
diff --git a/google-breakpad/src/testing/gtest/samples/sample4.cc b/google-breakpad/src/testing/gtest/samples/sample4.cc
new file mode 100644
index 0000000..ae44bda
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/samples/sample4.cc
@@ -0,0 +1,46 @@
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// A sample program demonstrating using Google C++ testing framework.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+#include <stdio.h>
+
+#include "sample4.h"
+
+// Returns the current counter value, and increments it.
+int Counter::Increment() {
+  return counter_++;
+}
+
+// Prints the current counter value to STDOUT.
+void Counter::Print() const {
+  printf("%d", counter_);
+}
diff --git a/google-breakpad/src/testing/gtest/samples/sample4.h b/google-breakpad/src/testing/gtest/samples/sample4.h
new file mode 100644
index 0000000..cd60f0d
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/samples/sample4.h
@@ -0,0 +1,53 @@
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// A sample program demonstrating using Google C++ testing framework.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+#ifndef GTEST_SAMPLES_SAMPLE4_H_
+#define GTEST_SAMPLES_SAMPLE4_H_
+
+// A simple monotonic counter.
+class Counter {
+ private:
+  int counter_;
+
+ public:
+  // Creates a counter that starts at 0.
+  Counter() : counter_(0) {}
+
+  // Returns the current counter value, and increments it.
+  int Increment();
+
+  // Prints the current counter value to STDOUT.
+  void Print() const;
+};
+
+#endif  // GTEST_SAMPLES_SAMPLE4_H_
diff --git a/google-breakpad/src/testing/gtest/samples/sample4_unittest.cc b/google-breakpad/src/testing/gtest/samples/sample4_unittest.cc
new file mode 100644
index 0000000..fa5afc7
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/samples/sample4_unittest.cc
@@ -0,0 +1,45 @@
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+#include "gtest/gtest.h"
+#include "sample4.h"
+
+// Tests the Increment() method.
+TEST(Counter, Increment) {
+  Counter c;
+
+  // EXPECT_EQ() evaluates its arguments exactly once, so they
+  // can have side effects.
+
+  EXPECT_EQ(0, c.Increment());
+  EXPECT_EQ(1, c.Increment());
+  EXPECT_EQ(2, c.Increment());
+}
diff --git a/google-breakpad/src/testing/gtest/samples/sample5_unittest.cc b/google-breakpad/src/testing/gtest/samples/sample5_unittest.cc
new file mode 100644
index 0000000..43d8e57
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/samples/sample5_unittest.cc
@@ -0,0 +1,199 @@
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// This sample teaches how to reuse a test fixture in multiple test
+// cases by deriving sub-fixtures from it.
+//
+// When you define a test fixture, you specify the name of the test
+// case that will use this fixture.  Therefore, a test fixture can
+// be used by only one test case.
+//
+// Sometimes, more than one test cases may want to use the same or
+// slightly different test fixtures.  For example, you may want to
+// make sure that all tests for a GUI library don't leak important
+// system resources like fonts and brushes.  In Google Test, you do
+// this by putting the shared logic in a super (as in "super class")
+// test fixture, and then have each test case use a fixture derived
+// from this super fixture.
+
+#include <limits.h>
+#include <time.h>
+#include "sample3-inl.h"
+#include "gtest/gtest.h"
+#include "sample1.h"
+
+// In this sample, we want to ensure that every test finishes within
+// ~5 seconds.  If a test takes longer to run, we consider it a
+// failure.
+//
+// We put the code for timing a test in a test fixture called
+// "QuickTest".  QuickTest is intended to be the super fixture that
+// other fixtures derive from, therefore there is no test case with
+// the name "QuickTest".  This is OK.
+//
+// Later, we will derive multiple test fixtures from QuickTest.
+class QuickTest : public testing::Test {
+ protected:
+  // Remember that SetUp() is run immediately before a test starts.
+  // This is a good place to record the start time.
+  virtual void SetUp() {
+    start_time_ = time(NULL);
+  }
+
+  // TearDown() is invoked immediately after a test finishes.  Here we
+  // check if the test was too slow.
+  virtual void TearDown() {
+    // Gets the time when the test finishes
+    const time_t end_time = time(NULL);
+
+    // Asserts that the test took no more than ~5 seconds.  Did you
+    // know that you can use assertions in SetUp() and TearDown() as
+    // well?
+    EXPECT_TRUE(end_time - start_time_ <= 5) << "The test took too long.";
+  }
+
+  // The UTC time (in seconds) when the test starts
+  time_t start_time_;
+};
+
+
+// We derive a fixture named IntegerFunctionTest from the QuickTest
+// fixture.  All tests using this fixture will be automatically
+// required to be quick.
+class IntegerFunctionTest : public QuickTest {
+  // We don't need any more logic than already in the QuickTest fixture.
+  // Therefore the body is empty.
+};
+
+
+// Now we can write tests in the IntegerFunctionTest test case.
+
+// Tests Factorial()
+TEST_F(IntegerFunctionTest, Factorial) {
+  // Tests factorial of negative numbers.
+  EXPECT_EQ(1, Factorial(-5));
+  EXPECT_EQ(1, Factorial(-1));
+  EXPECT_GT(Factorial(-10), 0);
+
+  // Tests factorial of 0.
+  EXPECT_EQ(1, Factorial(0));
+
+  // Tests factorial of positive numbers.
+  EXPECT_EQ(1, Factorial(1));
+  EXPECT_EQ(2, Factorial(2));
+  EXPECT_EQ(6, Factorial(3));
+  EXPECT_EQ(40320, Factorial(8));
+}
+
+
+// Tests IsPrime()
+TEST_F(IntegerFunctionTest, IsPrime) {
+  // Tests negative input.
+  EXPECT_FALSE(IsPrime(-1));
+  EXPECT_FALSE(IsPrime(-2));
+  EXPECT_FALSE(IsPrime(INT_MIN));
+
+  // Tests some trivial cases.
+  EXPECT_FALSE(IsPrime(0));
+  EXPECT_FALSE(IsPrime(1));
+  EXPECT_TRUE(IsPrime(2));
+  EXPECT_TRUE(IsPrime(3));
+
+  // Tests positive input.
+  EXPECT_FALSE(IsPrime(4));
+  EXPECT_TRUE(IsPrime(5));
+  EXPECT_FALSE(IsPrime(6));
+  EXPECT_TRUE(IsPrime(23));
+}
+
+
+// The next test case (named "QueueTest") also needs to be quick, so
+// we derive another fixture from QuickTest.
+//
+// The QueueTest test fixture has some logic and shared objects in
+// addition to what's in QuickTest already.  We define the additional
+// stuff inside the body of the test fixture, as usual.
+class QueueTest : public QuickTest {
+ protected:
+  virtual void SetUp() {
+    // First, we need to set up the super fixture (QuickTest).
+    QuickTest::SetUp();
+
+    // Second, some additional setup for this fixture.
+    q1_.Enqueue(1);
+    q2_.Enqueue(2);
+    q2_.Enqueue(3);
+  }
+
+  // By default, TearDown() inherits the behavior of
+  // QuickTest::TearDown().  As we have no additional cleaning work
+  // for QueueTest, we omit it here.
+  //
+  // virtual void TearDown() {
+  //   QuickTest::TearDown();
+  // }
+
+  Queue<int> q0_;
+  Queue<int> q1_;
+  Queue<int> q2_;
+};
+
+
+// Now, let's write tests using the QueueTest fixture.
+
+// Tests the default constructor.
+TEST_F(QueueTest, DefaultConstructor) {
+  EXPECT_EQ(0u, q0_.Size());
+}
+
+// Tests Dequeue().
+TEST_F(QueueTest, Dequeue) {
+  int* n = q0_.Dequeue();
+  EXPECT_TRUE(n == NULL);
+
+  n = q1_.Dequeue();
+  EXPECT_TRUE(n != NULL);
+  EXPECT_EQ(1, *n);
+  EXPECT_EQ(0u, q1_.Size());
+  delete n;
+
+  n = q2_.Dequeue();
+  EXPECT_TRUE(n != NULL);
+  EXPECT_EQ(2, *n);
+  EXPECT_EQ(1u, q2_.Size());
+  delete n;
+}
+
+// If necessary, you can derive further test fixtures from a derived
+// fixture itself.  For example, you can derive another fixture from
+// QueueTest.  Google Test imposes no limit on how deep the hierarchy
+// can be.  In practice, however, you probably don't want it to be too
+// deep as to be confusing.
diff --git a/google-breakpad/src/testing/gtest/samples/sample6_unittest.cc b/google-breakpad/src/testing/gtest/samples/sample6_unittest.cc
new file mode 100644
index 0000000..8f2036a
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/samples/sample6_unittest.cc
@@ -0,0 +1,224 @@
+// Copyright 2008 Google Inc.
+// All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// This sample shows how to test common properties of multiple
+// implementations of the same interface (aka interface tests).
+
+// The interface and its implementations are in this header.
+#include "prime_tables.h"
+
+#include "gtest/gtest.h"
+
+// First, we define some factory functions for creating instances of
+// the implementations.  You may be able to skip this step if all your
+// implementations can be constructed the same way.
+
+template <class T>
+PrimeTable* CreatePrimeTable();
+
+template <>
+PrimeTable* CreatePrimeTable<OnTheFlyPrimeTable>() {
+  return new OnTheFlyPrimeTable;
+}
+
+template <>
+PrimeTable* CreatePrimeTable<PreCalculatedPrimeTable>() {
+  return new PreCalculatedPrimeTable(10000);
+}
+
+// Then we define a test fixture class template.
+template <class T>
+class PrimeTableTest : public testing::Test {
+ protected:
+  // The ctor calls the factory function to create a prime table
+  // implemented by T.
+  PrimeTableTest() : table_(CreatePrimeTable<T>()) {}
+
+  virtual ~PrimeTableTest() { delete table_; }
+
+  // Note that we test an implementation via the base interface
+  // instead of the actual implementation class.  This is important
+  // for keeping the tests close to the real world scenario, where the
+  // implementation is invoked via the base interface.  It avoids
+  // got-yas where the implementation class has a method that shadows
+  // a method with the same name (but slightly different argument
+  // types) in the base interface, for example.
+  PrimeTable* const table_;
+};
+
+#if GTEST_HAS_TYPED_TEST
+
+using testing::Types;
+
+// Google Test offers two ways for reusing tests for different types.
+// The first is called "typed tests".  You should use it if you
+// already know *all* the types you are gonna exercise when you write
+// the tests.
+
+// To write a typed test case, first use
+//
+//   TYPED_TEST_CASE(TestCaseName, TypeList);
+//
+// to declare it and specify the type parameters.  As with TEST_F,
+// TestCaseName must match the test fixture name.
+
+// The list of types we want to test.
+typedef Types<OnTheFlyPrimeTable, PreCalculatedPrimeTable> Implementations;
+
+TYPED_TEST_CASE(PrimeTableTest, Implementations);
+
+// Then use TYPED_TEST(TestCaseName, TestName) to define a typed test,
+// similar to TEST_F.
+TYPED_TEST(PrimeTableTest, ReturnsFalseForNonPrimes) {
+  // Inside the test body, you can refer to the type parameter by
+  // TypeParam, and refer to the fixture class by TestFixture.  We
+  // don't need them in this example.
+
+  // Since we are in the template world, C++ requires explicitly
+  // writing 'this->' when referring to members of the fixture class.
+  // This is something you have to learn to live with.
+  EXPECT_FALSE(this->table_->IsPrime(-5));
+  EXPECT_FALSE(this->table_->IsPrime(0));
+  EXPECT_FALSE(this->table_->IsPrime(1));
+  EXPECT_FALSE(this->table_->IsPrime(4));
+  EXPECT_FALSE(this->table_->IsPrime(6));
+  EXPECT_FALSE(this->table_->IsPrime(100));
+}
+
+TYPED_TEST(PrimeTableTest, ReturnsTrueForPrimes) {
+  EXPECT_TRUE(this->table_->IsPrime(2));
+  EXPECT_TRUE(this->table_->IsPrime(3));
+  EXPECT_TRUE(this->table_->IsPrime(5));
+  EXPECT_TRUE(this->table_->IsPrime(7));
+  EXPECT_TRUE(this->table_->IsPrime(11));
+  EXPECT_TRUE(this->table_->IsPrime(131));
+}
+
+TYPED_TEST(PrimeTableTest, CanGetNextPrime) {
+  EXPECT_EQ(2, this->table_->GetNextPrime(0));
+  EXPECT_EQ(3, this->table_->GetNextPrime(2));
+  EXPECT_EQ(5, this->table_->GetNextPrime(3));
+  EXPECT_EQ(7, this->table_->GetNextPrime(5));
+  EXPECT_EQ(11, this->table_->GetNextPrime(7));
+  EXPECT_EQ(131, this->table_->GetNextPrime(128));
+}
+
+// That's it!  Google Test will repeat each TYPED_TEST for each type
+// in the type list specified in TYPED_TEST_CASE.  Sit back and be
+// happy that you don't have to define them multiple times.
+
+#endif  // GTEST_HAS_TYPED_TEST
+
+#if GTEST_HAS_TYPED_TEST_P
+
+using testing::Types;
+
+// Sometimes, however, you don't yet know all the types that you want
+// to test when you write the tests.  For example, if you are the
+// author of an interface and expect other people to implement it, you
+// might want to write a set of tests to make sure each implementation
+// conforms to some basic requirements, but you don't know what
+// implementations will be written in the future.
+//
+// How can you write the tests without committing to the type
+// parameters?  That's what "type-parameterized tests" can do for you.
+// It is a bit more involved than typed tests, but in return you get a
+// test pattern that can be reused in many contexts, which is a big
+// win.  Here's how you do it:
+
+// First, define a test fixture class template.  Here we just reuse
+// the PrimeTableTest fixture defined earlier:
+
+template <class T>
+class PrimeTableTest2 : public PrimeTableTest<T> {
+};
+
+// Then, declare the test case.  The argument is the name of the test
+// fixture, and also the name of the test case (as usual).  The _P
+// suffix is for "parameterized" or "pattern".
+TYPED_TEST_CASE_P(PrimeTableTest2);
+
+// Next, use TYPED_TEST_P(TestCaseName, TestName) to define a test,
+// similar to what you do with TEST_F.
+TYPED_TEST_P(PrimeTableTest2, ReturnsFalseForNonPrimes) {
+  EXPECT_FALSE(this->table_->IsPrime(-5));
+  EXPECT_FALSE(this->table_->IsPrime(0));
+  EXPECT_FALSE(this->table_->IsPrime(1));
+  EXPECT_FALSE(this->table_->IsPrime(4));
+  EXPECT_FALSE(this->table_->IsPrime(6));
+  EXPECT_FALSE(this->table_->IsPrime(100));
+}
+
+TYPED_TEST_P(PrimeTableTest2, ReturnsTrueForPrimes) {
+  EXPECT_TRUE(this->table_->IsPrime(2));
+  EXPECT_TRUE(this->table_->IsPrime(3));
+  EXPECT_TRUE(this->table_->IsPrime(5));
+  EXPECT_TRUE(this->table_->IsPrime(7));
+  EXPECT_TRUE(this->table_->IsPrime(11));
+  EXPECT_TRUE(this->table_->IsPrime(131));
+}
+
+TYPED_TEST_P(PrimeTableTest2, CanGetNextPrime) {
+  EXPECT_EQ(2, this->table_->GetNextPrime(0));
+  EXPECT_EQ(3, this->table_->GetNextPrime(2));
+  EXPECT_EQ(5, this->table_->GetNextPrime(3));
+  EXPECT_EQ(7, this->table_->GetNextPrime(5));
+  EXPECT_EQ(11, this->table_->GetNextPrime(7));
+  EXPECT_EQ(131, this->table_->GetNextPrime(128));
+}
+
+// Type-parameterized tests involve one extra step: you have to
+// enumerate the tests you defined:
+REGISTER_TYPED_TEST_CASE_P(
+    PrimeTableTest2,  // The first argument is the test case name.
+    // The rest of the arguments are the test names.
+    ReturnsFalseForNonPrimes, ReturnsTrueForPrimes, CanGetNextPrime);
+
+// At this point the test pattern is done.  However, you don't have
+// any real test yet as you haven't said which types you want to run
+// the tests with.
+
+// To turn the abstract test pattern into real tests, you instantiate
+// it with a list of types.  Usually the test pattern will be defined
+// in a .h file, and anyone can #include and instantiate it.  You can
+// even instantiate it more than once in the same program.  To tell
+// different instances apart, you give each of them a name, which will
+// become part of the test case name and can be used in test filters.
+
+// The list of types we want to test.  Note that it doesn't have to be
+// defined at the time we write the TYPED_TEST_P()s.
+typedef Types<OnTheFlyPrimeTable, PreCalculatedPrimeTable>
+    PrimeTableImplementations;
+INSTANTIATE_TYPED_TEST_CASE_P(OnTheFlyAndPreCalculated,    // Instance name
+                              PrimeTableTest2,             // Test case name
+                              PrimeTableImplementations);  // Type list
+
+#endif  // GTEST_HAS_TYPED_TEST_P
diff --git a/google-breakpad/src/testing/gtest/samples/sample7_unittest.cc b/google-breakpad/src/testing/gtest/samples/sample7_unittest.cc
new file mode 100644
index 0000000..1b651a2
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/samples/sample7_unittest.cc
@@ -0,0 +1,130 @@
+// Copyright 2008 Google Inc.
+// All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: vladl@google.com (Vlad Losev)
+
+// This sample shows how to test common properties of multiple
+// implementations of an interface (aka interface tests) using
+// value-parameterized tests. Each test in the test case has
+// a parameter that is an interface pointer to an implementation
+// tested.
+
+// The interface and its implementations are in this header.
+#include "prime_tables.h"
+
+#include "gtest/gtest.h"
+
+#if GTEST_HAS_PARAM_TEST
+
+using ::testing::TestWithParam;
+using ::testing::Values;
+
+// As a general rule, to prevent a test from affecting the tests that come
+// after it, you should create and destroy the tested objects for each test
+// instead of reusing them.  In this sample we will define a simple factory
+// function for PrimeTable objects.  We will instantiate objects in test's
+// SetUp() method and delete them in TearDown() method.
+typedef PrimeTable* CreatePrimeTableFunc();
+
+PrimeTable* CreateOnTheFlyPrimeTable() {
+  return new OnTheFlyPrimeTable();
+}
+
+template <size_t max_precalculated>
+PrimeTable* CreatePreCalculatedPrimeTable() {
+  return new PreCalculatedPrimeTable(max_precalculated);
+}
+
+// Inside the test body, fixture constructor, SetUp(), and TearDown() you
+// can refer to the test parameter by GetParam().  In this case, the test
+// parameter is a factory function which we call in fixture's SetUp() to
+// create and store an instance of PrimeTable.
+class PrimeTableTest : public TestWithParam<CreatePrimeTableFunc*> {
+ public:
+  virtual ~PrimeTableTest() { delete table_; }
+  virtual void SetUp() { table_ = (*GetParam())(); }
+  virtual void TearDown() {
+    delete table_;
+    table_ = NULL;
+  }
+
+ protected:
+  PrimeTable* table_;
+};
+
+TEST_P(PrimeTableTest, ReturnsFalseForNonPrimes) {
+  EXPECT_FALSE(table_->IsPrime(-5));
+  EXPECT_FALSE(table_->IsPrime(0));
+  EXPECT_FALSE(table_->IsPrime(1));
+  EXPECT_FALSE(table_->IsPrime(4));
+  EXPECT_FALSE(table_->IsPrime(6));
+  EXPECT_FALSE(table_->IsPrime(100));
+}
+
+TEST_P(PrimeTableTest, ReturnsTrueForPrimes) {
+  EXPECT_TRUE(table_->IsPrime(2));
+  EXPECT_TRUE(table_->IsPrime(3));
+  EXPECT_TRUE(table_->IsPrime(5));
+  EXPECT_TRUE(table_->IsPrime(7));
+  EXPECT_TRUE(table_->IsPrime(11));
+  EXPECT_TRUE(table_->IsPrime(131));
+}
+
+TEST_P(PrimeTableTest, CanGetNextPrime) {
+  EXPECT_EQ(2, table_->GetNextPrime(0));
+  EXPECT_EQ(3, table_->GetNextPrime(2));
+  EXPECT_EQ(5, table_->GetNextPrime(3));
+  EXPECT_EQ(7, table_->GetNextPrime(5));
+  EXPECT_EQ(11, table_->GetNextPrime(7));
+  EXPECT_EQ(131, table_->GetNextPrime(128));
+}
+
+// In order to run value-parameterized tests, you need to instantiate them,
+// or bind them to a list of values which will be used as test parameters.
+// You can instantiate them in a different translation module, or even
+// instantiate them several times.
+//
+// Here, we instantiate our tests with a list of two PrimeTable object
+// factory functions:
+INSTANTIATE_TEST_CASE_P(
+    OnTheFlyAndPreCalculated,
+    PrimeTableTest,
+    Values(&CreateOnTheFlyPrimeTable, &CreatePreCalculatedPrimeTable<1000>));
+
+#else
+
+// Google Test may not support value-parameterized tests with some
+// compilers. If we use conditional compilation to compile out all
+// code referring to the gtest_main library, MSVC linker will not link
+// that library at all and consequently complain about missing entry
+// point defined in that library (fatal error LNK1561: entry point
+// must be defined). This dummy test keeps gtest_main linked in.
+TEST(DummyTest, ValueParameterizedTestsAreNotSupportedOnThisPlatform) {}
+
+#endif  // GTEST_HAS_PARAM_TEST
diff --git a/google-breakpad/src/testing/gtest/samples/sample8_unittest.cc b/google-breakpad/src/testing/gtest/samples/sample8_unittest.cc
new file mode 100644
index 0000000..5ad2e2c
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/samples/sample8_unittest.cc
@@ -0,0 +1,173 @@
+// Copyright 2008 Google Inc.
+// All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: vladl@google.com (Vlad Losev)
+
+// This sample shows how to test code relying on some global flag variables.
+// Combine() helps with generating all possible combinations of such flags,
+// and each test is given one combination as a parameter.
+
+// Use class definitions to test from this header.
+#include "prime_tables.h"
+
+#include "gtest/gtest.h"
+
+#if GTEST_HAS_COMBINE
+
+// Suppose we want to introduce a new, improved implementation of PrimeTable
+// which combines speed of PrecalcPrimeTable and versatility of
+// OnTheFlyPrimeTable (see prime_tables.h). Inside it instantiates both
+// PrecalcPrimeTable and OnTheFlyPrimeTable and uses the one that is more
+// appropriate under the circumstances. But in low memory conditions, it can be
+// told to instantiate without PrecalcPrimeTable instance at all and use only
+// OnTheFlyPrimeTable.
+class HybridPrimeTable : public PrimeTable {
+ public:
+  HybridPrimeTable(bool force_on_the_fly, int max_precalculated)
+      : on_the_fly_impl_(new OnTheFlyPrimeTable),
+        precalc_impl_(force_on_the_fly ? NULL :
+                          new PreCalculatedPrimeTable(max_precalculated)),
+        max_precalculated_(max_precalculated) {}
+  virtual ~HybridPrimeTable() {
+    delete on_the_fly_impl_;
+    delete precalc_impl_;
+  }
+
+  virtual bool IsPrime(int n) const {
+    if (precalc_impl_ != NULL && n < max_precalculated_)
+      return precalc_impl_->IsPrime(n);
+    else
+      return on_the_fly_impl_->IsPrime(n);
+  }
+
+  virtual int GetNextPrime(int p) const {
+    int next_prime = -1;
+    if (precalc_impl_ != NULL && p < max_precalculated_)
+      next_prime = precalc_impl_->GetNextPrime(p);
+
+    return next_prime != -1 ? next_prime : on_the_fly_impl_->GetNextPrime(p);
+  }
+
+ private:
+  OnTheFlyPrimeTable* on_the_fly_impl_;
+  PreCalculatedPrimeTable* precalc_impl_;
+  int max_precalculated_;
+};
+
+using ::testing::TestWithParam;
+using ::testing::Bool;
+using ::testing::Values;
+using ::testing::Combine;
+
+// To test all code paths for HybridPrimeTable we must test it with numbers
+// both within and outside PreCalculatedPrimeTable's capacity and also with
+// PreCalculatedPrimeTable disabled. We do this by defining fixture which will
+// accept different combinations of parameters for instantiating a
+// HybridPrimeTable instance.
+class PrimeTableTest : public TestWithParam< ::std::tr1::tuple<bool, int> > {
+ protected:
+  virtual void SetUp() {
+    // This can be written as
+    //
+    // bool force_on_the_fly;
+    // int max_precalculated;
+    // tie(force_on_the_fly, max_precalculated) = GetParam();
+    //
+    // once the Google C++ Style Guide allows use of ::std::tr1::tie.
+    //
+    bool force_on_the_fly = ::std::tr1::get<0>(GetParam());
+    int max_precalculated = ::std::tr1::get<1>(GetParam());
+    table_ = new HybridPrimeTable(force_on_the_fly, max_precalculated);
+  }
+  virtual void TearDown() {
+    delete table_;
+    table_ = NULL;
+  }
+  HybridPrimeTable* table_;
+};
+
+TEST_P(PrimeTableTest, ReturnsFalseForNonPrimes) {
+  // Inside the test body, you can refer to the test parameter by GetParam().
+  // In this case, the test parameter is a PrimeTable interface pointer which
+  // we can use directly.
+  // Please note that you can also save it in the fixture's SetUp() method
+  // or constructor and use saved copy in the tests.
+
+  EXPECT_FALSE(table_->IsPrime(-5));
+  EXPECT_FALSE(table_->IsPrime(0));
+  EXPECT_FALSE(table_->IsPrime(1));
+  EXPECT_FALSE(table_->IsPrime(4));
+  EXPECT_FALSE(table_->IsPrime(6));
+  EXPECT_FALSE(table_->IsPrime(100));
+}
+
+TEST_P(PrimeTableTest, ReturnsTrueForPrimes) {
+  EXPECT_TRUE(table_->IsPrime(2));
+  EXPECT_TRUE(table_->IsPrime(3));
+  EXPECT_TRUE(table_->IsPrime(5));
+  EXPECT_TRUE(table_->IsPrime(7));
+  EXPECT_TRUE(table_->IsPrime(11));
+  EXPECT_TRUE(table_->IsPrime(131));
+}
+
+TEST_P(PrimeTableTest, CanGetNextPrime) {
+  EXPECT_EQ(2, table_->GetNextPrime(0));
+  EXPECT_EQ(3, table_->GetNextPrime(2));
+  EXPECT_EQ(5, table_->GetNextPrime(3));
+  EXPECT_EQ(7, table_->GetNextPrime(5));
+  EXPECT_EQ(11, table_->GetNextPrime(7));
+  EXPECT_EQ(131, table_->GetNextPrime(128));
+}
+
+// In order to run value-parameterized tests, you need to instantiate them,
+// or bind them to a list of values which will be used as test parameters.
+// You can instantiate them in a different translation module, or even
+// instantiate them several times.
+//
+// Here, we instantiate our tests with a list of parameters. We must combine
+// all variations of the boolean flag suppressing PrecalcPrimeTable and some
+// meaningful values for tests. We choose a small value (1), and a value that
+// will put some of the tested numbers beyond the capability of the
+// PrecalcPrimeTable instance and some inside it (10). Combine will produce all
+// possible combinations.
+INSTANTIATE_TEST_CASE_P(MeaningfulTestParameters,
+                        PrimeTableTest,
+                        Combine(Bool(), Values(1, 10)));
+
+#else
+
+// Google Test may not support Combine() with some compilers. If we
+// use conditional compilation to compile out all code referring to
+// the gtest_main library, MSVC linker will not link that library at
+// all and consequently complain about missing entry point defined in
+// that library (fatal error LNK1561: entry point must be
+// defined). This dummy test keeps gtest_main linked in.
+TEST(DummyTest, CombineIsNotSupportedOnThisPlatform) {}
+
+#endif  // GTEST_HAS_COMBINE
diff --git a/google-breakpad/src/testing/gtest/samples/sample9_unittest.cc b/google-breakpad/src/testing/gtest/samples/sample9_unittest.cc
new file mode 100644
index 0000000..b2e2079
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/samples/sample9_unittest.cc
@@ -0,0 +1,160 @@
+// Copyright 2009 Google Inc. All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: vladl@google.com (Vlad Losev)
+
+// This sample shows how to use Google Test listener API to implement
+// an alternative console output and how to use the UnitTest reflection API
+// to enumerate test cases and tests and to inspect their results.
+
+#include <stdio.h>
+
+#include "gtest/gtest.h"
+
+using ::testing::EmptyTestEventListener;
+using ::testing::InitGoogleTest;
+using ::testing::Test;
+using ::testing::TestCase;
+using ::testing::TestEventListeners;
+using ::testing::TestInfo;
+using ::testing::TestPartResult;
+using ::testing::UnitTest;
+
+namespace {
+
+// Provides alternative output mode which produces minimal amount of
+// information about tests.
+class TersePrinter : public EmptyTestEventListener {
+ private:
+  // Called before any test activity starts.
+  virtual void OnTestProgramStart(const UnitTest& /* unit_test */) {}
+
+  // Called after all test activities have ended.
+  virtual void OnTestProgramEnd(const UnitTest& unit_test) {
+    fprintf(stdout, "TEST %s\n", unit_test.Passed() ? "PASSED" : "FAILED");
+    fflush(stdout);
+  }
+
+  // Called before a test starts.
+  virtual void OnTestStart(const TestInfo& test_info) {
+    fprintf(stdout,
+            "*** Test %s.%s starting.\n",
+            test_info.test_case_name(),
+            test_info.name());
+    fflush(stdout);
+  }
+
+  // Called after a failed assertion or a SUCCEED() invocation.
+  virtual void OnTestPartResult(const TestPartResult& test_part_result) {
+    fprintf(stdout,
+            "%s in %s:%d\n%s\n",
+            test_part_result.failed() ? "*** Failure" : "Success",
+            test_part_result.file_name(),
+            test_part_result.line_number(),
+            test_part_result.summary());
+    fflush(stdout);
+  }
+
+  // Called after a test ends.
+  virtual void OnTestEnd(const TestInfo& test_info) {
+    fprintf(stdout,
+            "*** Test %s.%s ending.\n",
+            test_info.test_case_name(),
+            test_info.name());
+    fflush(stdout);
+  }
+};  // class TersePrinter
+
+TEST(CustomOutputTest, PrintsMessage) {
+  printf("Printing something from the test body...\n");
+}
+
+TEST(CustomOutputTest, Succeeds) {
+  SUCCEED() << "SUCCEED() has been invoked from here";
+}
+
+TEST(CustomOutputTest, Fails) {
+  EXPECT_EQ(1, 2)
+      << "This test fails in order to demonstrate alternative failure messages";
+}
+
+}  // namespace
+
+int main(int argc, char **argv) {
+  InitGoogleTest(&argc, argv);
+
+  bool terse_output = false;
+  if (argc > 1 && strcmp(argv[1], "--terse_output") == 0 )
+    terse_output = true;
+  else
+    printf("%s\n", "Run this program with --terse_output to change the way "
+           "it prints its output.");
+
+  UnitTest& unit_test = *UnitTest::GetInstance();
+
+  // If we are given the --terse_output command line flag, suppresses the
+  // standard output and attaches own result printer.
+  if (terse_output) {
+    TestEventListeners& listeners = unit_test.listeners();
+
+    // Removes the default console output listener from the list so it will
+    // not receive events from Google Test and won't print any output. Since
+    // this operation transfers ownership of the listener to the caller we
+    // have to delete it as well.
+    delete listeners.Release(listeners.default_result_printer());
+
+    // Adds the custom output listener to the list. It will now receive
+    // events from Google Test and print the alternative output. We don't
+    // have to worry about deleting it since Google Test assumes ownership
+    // over it after adding it to the list.
+    listeners.Append(new TersePrinter);
+  }
+  int ret_val = RUN_ALL_TESTS();
+
+  // This is an example of using the UnitTest reflection API to inspect test
+  // results. Here we discount failures from the tests we expected to fail.
+  int unexpectedly_failed_tests = 0;
+  for (int i = 0; i < unit_test.total_test_case_count(); ++i) {
+    const TestCase& test_case = *unit_test.GetTestCase(i);
+    for (int j = 0; j < test_case.total_test_count(); ++j) {
+      const TestInfo& test_info = *test_case.GetTestInfo(j);
+      // Counts failed tests that were not meant to fail (those without
+      // 'Fails' in the name).
+      if (test_info.result()->Failed() &&
+          strcmp(test_info.name(), "Fails") != 0) {
+        unexpectedly_failed_tests++;
+      }
+    }
+  }
+
+  // Test that were meant to fail should not affect the test program outcome.
+  if (unexpectedly_failed_tests == 0)
+    ret_val = 0;
+
+  return ret_val;
+}
diff --git a/google-breakpad/src/testing/gtest/scripts/fuse_gtest_files.py b/google-breakpad/src/testing/gtest/scripts/fuse_gtest_files.py
new file mode 100755
index 0000000..57ef72f
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/scripts/fuse_gtest_files.py
@@ -0,0 +1,250 @@
+#!/usr/bin/env python
+#
+# Copyright 2009, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+"""fuse_gtest_files.py v0.2.0
+Fuses Google Test source code into a .h file and a .cc file.
+
+SYNOPSIS
+       fuse_gtest_files.py [GTEST_ROOT_DIR] OUTPUT_DIR
+
+       Scans GTEST_ROOT_DIR for Google Test source code, and generates
+       two files: OUTPUT_DIR/gtest/gtest.h and OUTPUT_DIR/gtest/gtest-all.cc.
+       Then you can build your tests by adding OUTPUT_DIR to the include
+       search path and linking with OUTPUT_DIR/gtest/gtest-all.cc.  These
+       two files contain everything you need to use Google Test.  Hence
+       you can "install" Google Test by copying them to wherever you want.
+
+       GTEST_ROOT_DIR can be omitted and defaults to the parent
+       directory of the directory holding this script.
+
+EXAMPLES
+       ./fuse_gtest_files.py fused_gtest
+       ./fuse_gtest_files.py path/to/unpacked/gtest fused_gtest
+
+This tool is experimental.  In particular, it assumes that there is no
+conditional inclusion of Google Test headers.  Please report any
+problems to googletestframework@googlegroups.com.  You can read
+http://code.google.com/p/googletest/wiki/GoogleTestAdvancedGuide for
+more information.
+"""
+
+__author__ = 'wan@google.com (Zhanyong Wan)'
+
+import os
+import re
+import sets
+import sys
+
+# We assume that this file is in the scripts/ directory in the Google
+# Test root directory.
+DEFAULT_GTEST_ROOT_DIR = os.path.join(os.path.dirname(__file__), '..')
+
+# Regex for matching '#include "gtest/..."'.
+INCLUDE_GTEST_FILE_REGEX = re.compile(r'^\s*#\s*include\s*"(gtest/.+)"')
+
+# Regex for matching '#include "src/..."'.
+INCLUDE_SRC_FILE_REGEX = re.compile(r'^\s*#\s*include\s*"(src/.+)"')
+
+# Where to find the source seed files.
+GTEST_H_SEED = 'include/gtest/gtest.h'
+GTEST_SPI_H_SEED = 'include/gtest/gtest-spi.h'
+GTEST_ALL_CC_SEED = 'src/gtest-all.cc'
+
+# Where to put the generated files.
+GTEST_H_OUTPUT = 'gtest/gtest.h'
+GTEST_ALL_CC_OUTPUT = 'gtest/gtest-all.cc'
+
+
+def VerifyFileExists(directory, relative_path):
+  """Verifies that the given file exists; aborts on failure.
+
+  relative_path is the file path relative to the given directory.
+  """
+
+  if not os.path.isfile(os.path.join(directory, relative_path)):
+    print 'ERROR: Cannot find %s in directory %s.' % (relative_path,
+                                                      directory)
+    print ('Please either specify a valid project root directory '
+           'or omit it on the command line.')
+    sys.exit(1)
+
+
+def ValidateGTestRootDir(gtest_root):
+  """Makes sure gtest_root points to a valid gtest root directory.
+
+  The function aborts the program on failure.
+  """
+
+  VerifyFileExists(gtest_root, GTEST_H_SEED)
+  VerifyFileExists(gtest_root, GTEST_ALL_CC_SEED)
+
+
+def VerifyOutputFile(output_dir, relative_path):
+  """Verifies that the given output file path is valid.
+
+  relative_path is relative to the output_dir directory.
+  """
+
+  # Makes sure the output file either doesn't exist or can be overwritten.
+  output_file = os.path.join(output_dir, relative_path)
+  if os.path.exists(output_file):
+    # TODO(wan@google.com): The following user-interaction doesn't
+    # work with automated processes.  We should provide a way for the
+    # Makefile to force overwriting the files.
+    print ('%s already exists in directory %s - overwrite it? (y/N) ' %
+           (relative_path, output_dir))
+    answer = sys.stdin.readline().strip()
+    if answer not in ['y', 'Y']:
+      print 'ABORTED.'
+      sys.exit(1)
+
+  # Makes sure the directory holding the output file exists; creates
+  # it and all its ancestors if necessary.
+  parent_directory = os.path.dirname(output_file)
+  if not os.path.isdir(parent_directory):
+    os.makedirs(parent_directory)
+
+
+def ValidateOutputDir(output_dir):
+  """Makes sure output_dir points to a valid output directory.
+
+  The function aborts the program on failure.
+  """
+
+  VerifyOutputFile(output_dir, GTEST_H_OUTPUT)
+  VerifyOutputFile(output_dir, GTEST_ALL_CC_OUTPUT)
+
+
+def FuseGTestH(gtest_root, output_dir):
+  """Scans folder gtest_root to generate gtest/gtest.h in output_dir."""
+
+  output_file = file(os.path.join(output_dir, GTEST_H_OUTPUT), 'w')
+  processed_files = sets.Set()  # Holds all gtest headers we've processed.
+
+  def ProcessFile(gtest_header_path):
+    """Processes the given gtest header file."""
+
+    # We don't process the same header twice.
+    if gtest_header_path in processed_files:
+      return
+
+    processed_files.add(gtest_header_path)
+
+    # Reads each line in the given gtest header.
+    for line in file(os.path.join(gtest_root, gtest_header_path), 'r'):
+      m = INCLUDE_GTEST_FILE_REGEX.match(line)
+      if m:
+        # It's '#include "gtest/..."' - let's process it recursively.
+        ProcessFile('include/' + m.group(1))
+      else:
+        # Otherwise we copy the line unchanged to the output file.
+        output_file.write(line)
+
+  ProcessFile(GTEST_H_SEED)
+  output_file.close()
+
+
+def FuseGTestAllCcToFile(gtest_root, output_file):
+  """Scans folder gtest_root to generate gtest/gtest-all.cc in output_file."""
+
+  processed_files = sets.Set()
+
+  def ProcessFile(gtest_source_file):
+    """Processes the given gtest source file."""
+
+    # We don't process the same #included file twice.
+    if gtest_source_file in processed_files:
+      return
+
+    processed_files.add(gtest_source_file)
+
+    # Reads each line in the given gtest source file.
+    for line in file(os.path.join(gtest_root, gtest_source_file), 'r'):
+      m = INCLUDE_GTEST_FILE_REGEX.match(line)
+      if m:
+        if 'include/' + m.group(1) == GTEST_SPI_H_SEED:
+          # It's '#include "gtest/gtest-spi.h"'.  This file is not
+          # #included by "gtest/gtest.h", so we need to process it.
+          ProcessFile(GTEST_SPI_H_SEED)
+        else:
+          # It's '#include "gtest/foo.h"' where foo is not gtest-spi.
+          # We treat it as '#include "gtest/gtest.h"', as all other
+          # gtest headers are being fused into gtest.h and cannot be
+          # #included directly.
+
+          # There is no need to #include "gtest/gtest.h" more than once.
+          if not GTEST_H_SEED in processed_files:
+            processed_files.add(GTEST_H_SEED)
+            output_file.write('#include "%s"\n' % (GTEST_H_OUTPUT,))
+      else:
+        m = INCLUDE_SRC_FILE_REGEX.match(line)
+        if m:
+          # It's '#include "src/foo"' - let's process it recursively.
+          ProcessFile(m.group(1))
+        else:
+          output_file.write(line)
+
+  ProcessFile(GTEST_ALL_CC_SEED)
+
+
+def FuseGTestAllCc(gtest_root, output_dir):
+  """Scans folder gtest_root to generate gtest/gtest-all.cc in output_dir."""
+
+  output_file = file(os.path.join(output_dir, GTEST_ALL_CC_OUTPUT), 'w')
+  FuseGTestAllCcToFile(gtest_root, output_file)
+  output_file.close()
+
+
+def FuseGTest(gtest_root, output_dir):
+  """Fuses gtest.h and gtest-all.cc."""
+
+  ValidateGTestRootDir(gtest_root)
+  ValidateOutputDir(output_dir)
+
+  FuseGTestH(gtest_root, output_dir)
+  FuseGTestAllCc(gtest_root, output_dir)
+
+
+def main():
+  argc = len(sys.argv)
+  if argc == 2:
+    # fuse_gtest_files.py OUTPUT_DIR
+    FuseGTest(DEFAULT_GTEST_ROOT_DIR, sys.argv[1])
+  elif argc == 3:
+    # fuse_gtest_files.py GTEST_ROOT_DIR OUTPUT_DIR
+    FuseGTest(sys.argv[1], sys.argv[2])
+  else:
+    print __doc__
+    sys.exit(1)
+
+
+if __name__ == '__main__':
+  main()
diff --git a/google-breakpad/src/testing/gtest/scripts/gen_gtest_pred_impl.py b/google-breakpad/src/testing/gtest/scripts/gen_gtest_pred_impl.py
new file mode 100755
index 0000000..3e7ab04
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/scripts/gen_gtest_pred_impl.py
@@ -0,0 +1,730 @@
+#!/usr/bin/env python
+#
+# Copyright 2006, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+"""gen_gtest_pred_impl.py v0.1
+
+Generates the implementation of Google Test predicate assertions and
+accompanying tests.
+
+Usage:
+
+  gen_gtest_pred_impl.py MAX_ARITY
+
+where MAX_ARITY is a positive integer.
+
+The command generates the implementation of up-to MAX_ARITY-ary
+predicate assertions, and writes it to file gtest_pred_impl.h in the
+directory where the script is.  It also generates the accompanying
+unit test in file gtest_pred_impl_unittest.cc.
+"""
+
+__author__ = 'wan@google.com (Zhanyong Wan)'
+
+import os
+import sys
+import time
+
+# Where this script is.
+SCRIPT_DIR = os.path.dirname(sys.argv[0])
+
+# Where to store the generated header.
+HEADER = os.path.join(SCRIPT_DIR, '../include/gtest/gtest_pred_impl.h')
+
+# Where to store the generated unit test.
+UNIT_TEST = os.path.join(SCRIPT_DIR, '../test/gtest_pred_impl_unittest.cc')
+
+
+def HeaderPreamble(n):
+  """Returns the preamble for the header file.
+
+  Args:
+    n:  the maximum arity of the predicate macros to be generated.
+  """
+
+  # A map that defines the values used in the preamble template.
+  DEFS = {
+    'today' : time.strftime('%m/%d/%Y'),
+    'year' : time.strftime('%Y'),
+    'command' : '%s %s' % (os.path.basename(sys.argv[0]), n),
+    'n' : n
+    }
+
+  return (
+"""// Copyright 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// This file is AUTOMATICALLY GENERATED on %(today)s by command
+// '%(command)s'.  DO NOT EDIT BY HAND!
+//
+// Implements a family of generic predicate assertion macros.
+
+#ifndef GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_
+#define GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_
+
+// Makes sure this header is not included before gtest.h.
+#ifndef GTEST_INCLUDE_GTEST_GTEST_H_
+# error Do not include gtest_pred_impl.h directly.  Include gtest.h instead.
+#endif  // GTEST_INCLUDE_GTEST_GTEST_H_
+
+// This header implements a family of generic predicate assertion
+// macros:
+//
+//   ASSERT_PRED_FORMAT1(pred_format, v1)
+//   ASSERT_PRED_FORMAT2(pred_format, v1, v2)
+//   ...
+//
+// where pred_format is a function or functor that takes n (in the
+// case of ASSERT_PRED_FORMATn) values and their source expression
+// text, and returns a testing::AssertionResult.  See the definition
+// of ASSERT_EQ in gtest.h for an example.
+//
+// If you don't care about formatting, you can use the more
+// restrictive version:
+//
+//   ASSERT_PRED1(pred, v1)
+//   ASSERT_PRED2(pred, v1, v2)
+//   ...
+//
+// where pred is an n-ary function or functor that returns bool,
+// and the values v1, v2, ..., must support the << operator for
+// streaming to std::ostream.
+//
+// We also define the EXPECT_* variations.
+//
+// For now we only support predicates whose arity is at most %(n)s.
+// Please email googletestframework@googlegroups.com if you need
+// support for higher arities.
+
+// GTEST_ASSERT_ is the basic statement to which all of the assertions
+// in this file reduce.  Don't use this in your code.
+
+#define GTEST_ASSERT_(expression, on_failure) \\
+  GTEST_AMBIGUOUS_ELSE_BLOCKER_ \\
+  if (const ::testing::AssertionResult gtest_ar = (expression)) \\
+    ; \\
+  else \\
+    on_failure(gtest_ar.failure_message())
+""" % DEFS)
+
+
+def Arity(n):
+  """Returns the English name of the given arity."""
+
+  if n < 0:
+    return None
+  elif n <= 3:
+    return ['nullary', 'unary', 'binary', 'ternary'][n]
+  else:
+    return '%s-ary' % n
+
+
+def Title(word):
+  """Returns the given word in title case.  The difference between
+  this and string's title() method is that Title('4-ary') is '4-ary'
+  while '4-ary'.title() is '4-Ary'."""
+
+  return word[0].upper() + word[1:]
+
+
+def OneTo(n):
+  """Returns the list [1, 2, 3, ..., n]."""
+
+  return range(1, n + 1)
+
+
+def Iter(n, format, sep=''):
+  """Given a positive integer n, a format string that contains 0 or
+  more '%s' format specs, and optionally a separator string, returns
+  the join of n strings, each formatted with the format string on an
+  iterator ranged from 1 to n.
+
+  Example:
+
+  Iter(3, 'v%s', sep=', ') returns 'v1, v2, v3'.
+  """
+
+  # How many '%s' specs are in format?
+  spec_count = len(format.split('%s')) - 1
+  return sep.join([format % (spec_count * (i,)) for i in OneTo(n)])
+
+
+def ImplementationForArity(n):
+  """Returns the implementation of n-ary predicate assertions."""
+
+  # A map the defines the values used in the implementation template.
+  DEFS = {
+    'n' : str(n),
+    'vs' : Iter(n, 'v%s', sep=', '),
+    'vts' : Iter(n, '#v%s', sep=', '),
+    'arity' : Arity(n),
+    'Arity' : Title(Arity(n))
+    }
+
+  impl = """
+
+// Helper function for implementing {EXPECT|ASSERT}_PRED%(n)s.  Don't use
+// this in your code.
+template <typename Pred""" % DEFS
+
+  impl += Iter(n, """,
+          typename T%s""")
+
+  impl += """>
+AssertionResult AssertPred%(n)sHelper(const char* pred_text""" % DEFS
+
+  impl += Iter(n, """,
+                                  const char* e%s""")
+
+  impl += """,
+                                  Pred pred"""
+
+  impl += Iter(n, """,
+                                  const T%s& v%s""")
+
+  impl += """) {
+  if (pred(%(vs)s)) return AssertionSuccess();
+
+""" % DEFS
+
+  impl += '  return AssertionFailure() << pred_text << "("'
+
+  impl += Iter(n, """
+                            << e%s""", sep=' << ", "')
+
+  impl += ' << ") evaluates to false, where"'
+
+  impl += Iter(n, """
+                            << "\\n" << e%s << " evaluates to " << v%s""")
+
+  impl += """;
+}
+
+// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT%(n)s.
+// Don't use this in your code.
+#define GTEST_PRED_FORMAT%(n)s_(pred_format, %(vs)s, on_failure)\\
+  GTEST_ASSERT_(pred_format(%(vts)s, %(vs)s), \\
+                on_failure)
+
+// Internal macro for implementing {EXPECT|ASSERT}_PRED%(n)s.  Don't use
+// this in your code.
+#define GTEST_PRED%(n)s_(pred, %(vs)s, on_failure)\\
+  GTEST_ASSERT_(::testing::AssertPred%(n)sHelper(#pred""" % DEFS
+
+  impl += Iter(n, """, \\
+                                             #v%s""")
+
+  impl += """, \\
+                                             pred"""
+
+  impl += Iter(n, """, \\
+                                             v%s""")
+
+  impl += """), on_failure)
+
+// %(Arity)s predicate assertion macros.
+#define EXPECT_PRED_FORMAT%(n)s(pred_format, %(vs)s) \\
+  GTEST_PRED_FORMAT%(n)s_(pred_format, %(vs)s, GTEST_NONFATAL_FAILURE_)
+#define EXPECT_PRED%(n)s(pred, %(vs)s) \\
+  GTEST_PRED%(n)s_(pred, %(vs)s, GTEST_NONFATAL_FAILURE_)
+#define ASSERT_PRED_FORMAT%(n)s(pred_format, %(vs)s) \\
+  GTEST_PRED_FORMAT%(n)s_(pred_format, %(vs)s, GTEST_FATAL_FAILURE_)
+#define ASSERT_PRED%(n)s(pred, %(vs)s) \\
+  GTEST_PRED%(n)s_(pred, %(vs)s, GTEST_FATAL_FAILURE_)
+
+""" % DEFS
+
+  return impl
+
+
+def HeaderPostamble():
+  """Returns the postamble for the header file."""
+
+  return """
+
+#endif  // GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_
+"""
+
+
+def GenerateFile(path, content):
+  """Given a file path and a content string, overwrites it with the
+  given content."""
+
+  print 'Updating file %s . . .' % path
+
+  f = file(path, 'w+')
+  print >>f, content,
+  f.close()
+
+  print 'File %s has been updated.' % path
+
+
+def GenerateHeader(n):
+  """Given the maximum arity n, updates the header file that implements
+  the predicate assertions."""
+
+  GenerateFile(HEADER,
+               HeaderPreamble(n)
+               + ''.join([ImplementationForArity(i) for i in OneTo(n)])
+               + HeaderPostamble())
+
+
+def UnitTestPreamble():
+  """Returns the preamble for the unit test file."""
+
+  # A map that defines the values used in the preamble template.
+  DEFS = {
+    'today' : time.strftime('%m/%d/%Y'),
+    'year' : time.strftime('%Y'),
+    'command' : '%s %s' % (os.path.basename(sys.argv[0]), sys.argv[1]),
+    }
+
+  return (
+"""// Copyright 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// This file is AUTOMATICALLY GENERATED on %(today)s by command
+// '%(command)s'.  DO NOT EDIT BY HAND!
+
+// Regression test for gtest_pred_impl.h
+//
+// This file is generated by a script and quite long.  If you intend to
+// learn how Google Test works by reading its unit tests, read
+// gtest_unittest.cc instead.
+//
+// This is intended as a regression test for the Google Test predicate
+// assertions.  We compile it as part of the gtest_unittest target
+// only to keep the implementation tidy and compact, as it is quite
+// involved to set up the stage for testing Google Test using Google
+// Test itself.
+//
+// Currently, gtest_unittest takes ~11 seconds to run in the testing
+// daemon.  In the future, if it grows too large and needs much more
+// time to finish, we should consider separating this file into a
+// stand-alone regression test.
+
+#include <iostream>
+
+#include "gtest/gtest.h"
+#include "gtest/gtest-spi.h"
+
+// A user-defined data type.
+struct Bool {
+  explicit Bool(int val) : value(val != 0) {}
+
+  bool operator>(int n) const { return value > Bool(n).value; }
+
+  Bool operator+(const Bool& rhs) const { return Bool(value + rhs.value); }
+
+  bool operator==(const Bool& rhs) const { return value == rhs.value; }
+
+  bool value;
+};
+
+// Enables Bool to be used in assertions.
+std::ostream& operator<<(std::ostream& os, const Bool& x) {
+  return os << (x.value ? "true" : "false");
+}
+
+""" % DEFS)
+
+
+def TestsForArity(n):
+  """Returns the tests for n-ary predicate assertions."""
+
+  # A map that defines the values used in the template for the tests.
+  DEFS = {
+    'n' : n,
+    'es' : Iter(n, 'e%s', sep=', '),
+    'vs' : Iter(n, 'v%s', sep=', '),
+    'vts' : Iter(n, '#v%s', sep=', '),
+    'tvs' : Iter(n, 'T%s v%s', sep=', '),
+    'int_vs' : Iter(n, 'int v%s', sep=', '),
+    'Bool_vs' : Iter(n, 'Bool v%s', sep=', '),
+    'types' : Iter(n, 'typename T%s', sep=', '),
+    'v_sum' : Iter(n, 'v%s', sep=' + '),
+    'arity' : Arity(n),
+    'Arity' : Title(Arity(n)),
+    }
+
+  tests = (
+"""// Sample functions/functors for testing %(arity)s predicate assertions.
+
+// A %(arity)s predicate function.
+template <%(types)s>
+bool PredFunction%(n)s(%(tvs)s) {
+  return %(v_sum)s > 0;
+}
+
+// The following two functions are needed to circumvent a bug in
+// gcc 2.95.3, which sometimes has problem with the above template
+// function.
+bool PredFunction%(n)sInt(%(int_vs)s) {
+  return %(v_sum)s > 0;
+}
+bool PredFunction%(n)sBool(%(Bool_vs)s) {
+  return %(v_sum)s > 0;
+}
+""" % DEFS)
+
+  tests += """
+// A %(arity)s predicate functor.
+struct PredFunctor%(n)s {
+  template <%(types)s>
+  bool operator()(""" % DEFS
+
+  tests += Iter(n, 'const T%s& v%s', sep=""",
+                  """)
+
+  tests += """) {
+    return %(v_sum)s > 0;
+  }
+};
+""" % DEFS
+
+  tests += """
+// A %(arity)s predicate-formatter function.
+template <%(types)s>
+testing::AssertionResult PredFormatFunction%(n)s(""" % DEFS
+
+  tests += Iter(n, 'const char* e%s', sep=""",
+                                             """)
+
+  tests += Iter(n, """,
+                                             const T%s& v%s""")
+
+  tests += """) {
+  if (PredFunction%(n)s(%(vs)s))
+    return testing::AssertionSuccess();
+
+  return testing::AssertionFailure()
+      << """ % DEFS
+
+  tests += Iter(n, 'e%s', sep=' << " + " << ')
+
+  tests += """
+      << " is expected to be positive, but evaluates to "
+      << %(v_sum)s << ".";
+}
+""" % DEFS
+
+  tests += """
+// A %(arity)s predicate-formatter functor.
+struct PredFormatFunctor%(n)s {
+  template <%(types)s>
+  testing::AssertionResult operator()(""" % DEFS
+
+  tests += Iter(n, 'const char* e%s', sep=""",
+                                      """)
+
+  tests += Iter(n, """,
+                                      const T%s& v%s""")
+
+  tests += """) const {
+    return PredFormatFunction%(n)s(%(es)s, %(vs)s);
+  }
+};
+""" % DEFS
+
+  tests += """
+// Tests for {EXPECT|ASSERT}_PRED_FORMAT%(n)s.
+
+class Predicate%(n)sTest : public testing::Test {
+ protected:
+  virtual void SetUp() {
+    expected_to_finish_ = true;
+    finished_ = false;""" % DEFS
+
+  tests += """
+    """ + Iter(n, 'n%s_ = ') + """0;
+  }
+"""
+
+  tests += """
+  virtual void TearDown() {
+    // Verifies that each of the predicate's arguments was evaluated
+    // exactly once."""
+
+  tests += ''.join(["""
+    EXPECT_EQ(1, n%s_) <<
+        "The predicate assertion didn't evaluate argument %s "
+        "exactly once.";""" % (i, i + 1) for i in OneTo(n)])
+
+  tests += """
+
+    // Verifies that the control flow in the test function is expected.
+    if (expected_to_finish_ && !finished_) {
+      FAIL() << "The predicate assertion unexpactedly aborted the test.";
+    } else if (!expected_to_finish_ && finished_) {
+      FAIL() << "The failed predicate assertion didn't abort the test "
+                "as expected.";
+    }
+  }
+
+  // true iff the test function is expected to run to finish.
+  static bool expected_to_finish_;
+
+  // true iff the test function did run to finish.
+  static bool finished_;
+""" % DEFS
+
+  tests += Iter(n, """
+  static int n%s_;""")
+
+  tests += """
+};
+
+bool Predicate%(n)sTest::expected_to_finish_;
+bool Predicate%(n)sTest::finished_;
+""" % DEFS
+
+  tests += Iter(n, """int Predicate%%(n)sTest::n%s_;
+""") % DEFS
+
+  tests += """
+typedef Predicate%(n)sTest EXPECT_PRED_FORMAT%(n)sTest;
+typedef Predicate%(n)sTest ASSERT_PRED_FORMAT%(n)sTest;
+typedef Predicate%(n)sTest EXPECT_PRED%(n)sTest;
+typedef Predicate%(n)sTest ASSERT_PRED%(n)sTest;
+""" % DEFS
+
+  def GenTest(use_format, use_assert, expect_failure,
+              use_functor, use_user_type):
+    """Returns the test for a predicate assertion macro.
+
+    Args:
+      use_format:     true iff the assertion is a *_PRED_FORMAT*.
+      use_assert:     true iff the assertion is a ASSERT_*.
+      expect_failure: true iff the assertion is expected to fail.
+      use_functor:    true iff the first argument of the assertion is
+                      a functor (as opposed to a function)
+      use_user_type:  true iff the predicate functor/function takes
+                      argument(s) of a user-defined type.
+
+    Example:
+
+      GenTest(1, 0, 0, 1, 0) returns a test that tests the behavior
+      of a successful EXPECT_PRED_FORMATn() that takes a functor
+      whose arguments have built-in types."""
+
+    if use_assert:
+      assrt = 'ASSERT'  # 'assert' is reserved, so we cannot use
+                        # that identifier here.
+    else:
+      assrt = 'EXPECT'
+
+    assertion = assrt + '_PRED'
+
+    if use_format:
+      pred_format = 'PredFormat'
+      assertion += '_FORMAT'
+    else:
+      pred_format = 'Pred'
+
+    assertion += '%(n)s' % DEFS
+
+    if use_functor:
+      pred_format_type = 'functor'
+      pred_format += 'Functor%(n)s()'
+    else:
+      pred_format_type = 'function'
+      pred_format += 'Function%(n)s'
+      if not use_format:
+        if use_user_type:
+          pred_format += 'Bool'
+        else:
+          pred_format += 'Int'
+
+    test_name = pred_format_type.title()
+
+    if use_user_type:
+      arg_type = 'user-defined type (Bool)'
+      test_name += 'OnUserType'
+      if expect_failure:
+        arg = 'Bool(n%s_++)'
+      else:
+        arg = 'Bool(++n%s_)'
+    else:
+      arg_type = 'built-in type (int)'
+      test_name += 'OnBuiltInType'
+      if expect_failure:
+        arg = 'n%s_++'
+      else:
+        arg = '++n%s_'
+
+    if expect_failure:
+      successful_or_failed = 'failed'
+      expected_or_not = 'expected.'
+      test_name +=  'Failure'
+    else:
+      successful_or_failed = 'successful'
+      expected_or_not = 'UNEXPECTED!'
+      test_name +=  'Success'
+
+    # A map that defines the values used in the test template.
+    defs = DEFS.copy()
+    defs.update({
+      'assert' : assrt,
+      'assertion' : assertion,
+      'test_name' : test_name,
+      'pf_type' : pred_format_type,
+      'pf' : pred_format,
+      'arg_type' : arg_type,
+      'arg' : arg,
+      'successful' : successful_or_failed,
+      'expected' : expected_or_not,
+      })
+
+    test = """
+// Tests a %(successful)s %(assertion)s where the
+// predicate-formatter is a %(pf_type)s on a %(arg_type)s.
+TEST_F(%(assertion)sTest, %(test_name)s) {""" % defs
+
+    indent = (len(assertion) + 3)*' '
+    extra_indent = ''
+
+    if expect_failure:
+      extra_indent = '  '
+      if use_assert:
+        test += """
+  expected_to_finish_ = false;
+  EXPECT_FATAL_FAILURE({  // NOLINT"""
+      else:
+        test += """
+  EXPECT_NONFATAL_FAILURE({  // NOLINT"""
+
+    test += '\n' + extra_indent + """  %(assertion)s(%(pf)s""" % defs
+
+    test = test % defs
+    test += Iter(n, ',\n' + indent + extra_indent + '%(arg)s' % defs)
+    test += ');\n' + extra_indent + '  finished_ = true;\n'
+
+    if expect_failure:
+      test += '  }, "");\n'
+
+    test += '}\n'
+    return test
+
+  # Generates tests for all 2**6 = 64 combinations.
+  tests += ''.join([GenTest(use_format, use_assert, expect_failure,
+                            use_functor, use_user_type)
+                    for use_format in [0, 1]
+                    for use_assert in [0, 1]
+                    for expect_failure in [0, 1]
+                    for use_functor in [0, 1]
+                    for use_user_type in [0, 1]
+                    ])
+
+  return tests
+
+
+def UnitTestPostamble():
+  """Returns the postamble for the tests."""
+
+  return ''
+
+
+def GenerateUnitTest(n):
+  """Returns the tests for up-to n-ary predicate assertions."""
+
+  GenerateFile(UNIT_TEST,
+               UnitTestPreamble()
+               + ''.join([TestsForArity(i) for i in OneTo(n)])
+               + UnitTestPostamble())
+
+
+def _Main():
+  """The entry point of the script.  Generates the header file and its
+  unit test."""
+
+  if len(sys.argv) != 2:
+    print __doc__
+    print 'Author: ' + __author__
+    sys.exit(1)
+
+  n = int(sys.argv[1])
+  GenerateHeader(n)
+  GenerateUnitTest(n)
+
+
+if __name__ == '__main__':
+  _Main()
diff --git a/google-breakpad/src/testing/gtest/scripts/gtest-config.in b/google-breakpad/src/testing/gtest/scripts/gtest-config.in
new file mode 100755
index 0000000..9c72638
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/scripts/gtest-config.in
@@ -0,0 +1,274 @@
+#!/bin/sh
+
+# These variables are automatically filled in by the configure script.
+name="@PACKAGE_TARNAME@"
+version="@PACKAGE_VERSION@"
+
+show_usage()
+{
+  echo "Usage: gtest-config [OPTIONS...]"
+}
+
+show_help()
+{
+  show_usage
+  cat <<\EOF
+
+The `gtest-config' script provides access to the necessary compile and linking
+flags to connect with Google C++ Testing Framework, both in a build prior to
+installation, and on the system proper after installation. The installation
+overrides may be issued in combination with any other queries, but will only
+affect installation queries if called on a built but not installed gtest. The
+installation queries may not be issued with any other types of queries, and
+only one installation query may be made at a time. The version queries and
+compiler flag queries may be combined as desired but not mixed. Different
+version queries are always combined with logical "and" semantics, and only the
+last of any particular query is used while all previous ones ignored. All
+versions must be specified as a sequence of numbers separated by periods.
+Compiler flag queries output the union of the sets of flags when combined.
+
+ Examples:
+  gtest-config --min-version=1.0 || echo "Insufficient Google Test version."
+
+  g++ $(gtest-config --cppflags --cxxflags) -o foo.o -c foo.cpp
+  g++ $(gtest-config --ldflags --libs) -o foo foo.o
+
+  # When using a built but not installed Google Test:
+  g++ $(../../my_gtest_build/scripts/gtest-config ...) ...
+
+  # When using an installed Google Test, but with installation overrides:
+  export GTEST_PREFIX="/opt"
+  g++ $(gtest-config --libdir="/opt/lib64" ...) ...
+
+ Help:
+  --usage                    brief usage information
+  --help                     display this help message
+
+ Installation Overrides:
+  --prefix=<dir>             overrides the installation prefix
+  --exec-prefix=<dir>        overrides the executable installation prefix
+  --libdir=<dir>             overrides the library installation prefix
+  --includedir=<dir>         overrides the header file installation prefix
+
+ Installation Queries:
+  --prefix                   installation prefix
+  --exec-prefix              executable installation prefix
+  --libdir                   library installation directory
+  --includedir               header file installation directory
+  --version                  the version of the Google Test installation
+
+ Version Queries:
+  --min-version=VERSION      return 0 if the version is at least VERSION
+  --exact-version=VERSION    return 0 if the version is exactly VERSION
+  --max-version=VERSION      return 0 if the version is at most VERSION
+
+ Compilation Flag Queries:
+  --cppflags                 compile flags specific to the C-like preprocessors
+  --cxxflags                 compile flags appropriate for C++ programs
+  --ldflags                  linker flags
+  --libs                     libraries for linking
+
+EOF
+}
+
+# This function bounds our version with a min and a max. It uses some clever
+# POSIX-compliant variable expansion to portably do all the work in the shell
+# and avoid any dependency on a particular "sed" or "awk" implementation.
+# Notable is that it will only ever compare the first 3 components of versions.
+# Further components will be cleanly stripped off. All versions must be
+# unadorned, so "v1.0" will *not* work. The minimum version must be in $1, and
+# the max in $2. TODO(chandlerc@google.com): If this ever breaks, we should
+# investigate expanding this via autom4te from AS_VERSION_COMPARE rather than
+# continuing to maintain our own shell version.
+check_versions()
+{
+  major_version=${version%%.*}
+  minor_version="0"
+  point_version="0"
+  if test "${version#*.}" != "${version}"; then
+    minor_version=${version#*.}
+    minor_version=${minor_version%%.*}
+  fi
+  if test "${version#*.*.}" != "${version}"; then
+    point_version=${version#*.*.}
+    point_version=${point_version%%.*}
+  fi
+
+  min_version="$1"
+  min_major_version=${min_version%%.*}
+  min_minor_version="0"
+  min_point_version="0"
+  if test "${min_version#*.}" != "${min_version}"; then
+    min_minor_version=${min_version#*.}
+    min_minor_version=${min_minor_version%%.*}
+  fi
+  if test "${min_version#*.*.}" != "${min_version}"; then
+    min_point_version=${min_version#*.*.}
+    min_point_version=${min_point_version%%.*}
+  fi
+
+  max_version="$2"
+  max_major_version=${max_version%%.*}
+  max_minor_version="0"
+  max_point_version="0"
+  if test "${max_version#*.}" != "${max_version}"; then
+    max_minor_version=${max_version#*.}
+    max_minor_version=${max_minor_version%%.*}
+  fi
+  if test "${max_version#*.*.}" != "${max_version}"; then
+    max_point_version=${max_version#*.*.}
+    max_point_version=${max_point_version%%.*}
+  fi
+
+  test $(($major_version)) -lt $(($min_major_version)) && exit 1
+  if test $(($major_version)) -eq $(($min_major_version)); then
+    test $(($minor_version)) -lt $(($min_minor_version)) && exit 1
+    if test $(($minor_version)) -eq $(($min_minor_version)); then
+      test $(($point_version)) -lt $(($min_point_version)) && exit 1
+    fi
+  fi
+
+  test $(($major_version)) -gt $(($max_major_version)) && exit 1
+  if test $(($major_version)) -eq $(($max_major_version)); then
+    test $(($minor_version)) -gt $(($max_minor_version)) && exit 1
+    if test $(($minor_version)) -eq $(($max_minor_version)); then
+      test $(($point_version)) -gt $(($max_point_version)) && exit 1
+    fi
+  fi
+
+  exit 0
+}
+
+# Show the usage line when no arguments are specified.
+if test $# -eq 0; then
+  show_usage
+  exit 1
+fi
+
+while test $# -gt 0; do
+  case $1 in
+    --usage)          show_usage;         exit 0;;
+    --help)           show_help;          exit 0;;
+
+    # Installation overrides
+    --prefix=*)       GTEST_PREFIX=${1#--prefix=};;
+    --exec-prefix=*)  GTEST_EXEC_PREFIX=${1#--exec-prefix=};;
+    --libdir=*)       GTEST_LIBDIR=${1#--libdir=};;
+    --includedir=*)   GTEST_INCLUDEDIR=${1#--includedir=};;
+
+    # Installation queries
+    --prefix|--exec-prefix|--libdir|--includedir|--version)
+      if test -n "${do_query}"; then
+        show_usage
+        exit 1
+      fi
+      do_query=${1#--}
+      ;;
+
+    # Version checking
+    --min-version=*)
+      do_check_versions=yes
+      min_version=${1#--min-version=}
+      ;;
+    --max-version=*)
+      do_check_versions=yes
+      max_version=${1#--max-version=}
+      ;;
+    --exact-version=*)
+      do_check_versions=yes
+      exact_version=${1#--exact-version=}
+      ;;
+
+    # Compiler flag output
+    --cppflags)       echo_cppflags=yes;;
+    --cxxflags)       echo_cxxflags=yes;;
+    --ldflags)        echo_ldflags=yes;;
+    --libs)           echo_libs=yes;;
+
+    # Everything else is an error
+    *)                show_usage;         exit 1;;
+  esac
+  shift
+done
+
+# These have defaults filled in by the configure script but can also be
+# overridden by environment variables or command line parameters.
+prefix="${GTEST_PREFIX:-@prefix@}"
+exec_prefix="${GTEST_EXEC_PREFIX:-@exec_prefix@}"
+libdir="${GTEST_LIBDIR:-@libdir@}"
+includedir="${GTEST_INCLUDEDIR:-@includedir@}"
+
+# We try and detect if our binary is not located at its installed location. If
+# it's not, we provide variables pointing to the source and build tree rather
+# than to the install tree. This allows building against a just-built gtest
+# rather than an installed gtest.
+bindir="@bindir@"
+this_relative_bindir=`dirname $0`
+this_bindir=`cd ${this_relative_bindir}; pwd -P`
+if test "${this_bindir}" = "${this_bindir%${bindir}}"; then
+  # The path to the script doesn't end in the bindir sequence from Autoconf,
+  # assume that we are in a build tree.
+  build_dir=`dirname ${this_bindir}`
+  src_dir=`cd ${this_bindir}/@top_srcdir@; pwd -P`
+
+  # TODO(chandlerc@google.com): This is a dangerous dependency on libtool, we
+  # should work to remove it, and/or remove libtool altogether, replacing it
+  # with direct references to the library and a link path.
+  gtest_libs="${build_dir}/lib/libgtest.la @PTHREAD_CFLAGS@ @PTHREAD_LIBS@"
+  gtest_ldflags=""
+
+  # We provide hooks to include from either the source or build dir, where the
+  # build dir is always preferred. This will potentially allow us to write
+  # build rules for generated headers and have them automatically be preferred
+  # over provided versions.
+  gtest_cppflags="-I${build_dir}/include -I${src_dir}/include"
+  gtest_cxxflags="@PTHREAD_CFLAGS@"
+else
+  # We're using an installed gtest, although it may be staged under some
+  # prefix. Assume (as our own libraries do) that we can resolve the prefix,
+  # and are present in the dynamic link paths.
+  gtest_ldflags="-L${libdir}"
+  gtest_libs="-l${name} @PTHREAD_CFLAGS@ @PTHREAD_LIBS@"
+  gtest_cppflags="-I${includedir}"
+  gtest_cxxflags="@PTHREAD_CFLAGS@"
+fi
+
+# Do an installation query if requested.
+if test -n "$do_query"; then
+  case $do_query in
+    prefix)           echo $prefix;       exit 0;;
+    exec-prefix)      echo $exec_prefix;  exit 0;;
+    libdir)           echo $libdir;       exit 0;;
+    includedir)       echo $includedir;   exit 0;;
+    version)          echo $version;      exit 0;;
+    *)                show_usage;         exit 1;;
+  esac
+fi
+
+# Do a version check if requested.
+if test "$do_check_versions" = "yes"; then
+  # Make sure we didn't receive a bad combination of parameters.
+  test "$echo_cppflags" = "yes" && show_usage && exit 1
+  test "$echo_cxxflags" = "yes" && show_usage && exit 1
+  test "$echo_ldflags" = "yes"  && show_usage && exit 1
+  test "$echo_libs" = "yes"     && show_usage && exit 1
+
+  if test "$exact_version" != ""; then
+    check_versions $exact_version $exact_version
+    # unreachable
+  else
+    check_versions ${min_version:-0.0.0} ${max_version:-9999.9999.9999}
+    # unreachable
+  fi
+fi
+
+# Do the output in the correct order so that these can be used in-line of
+# a compiler invocation.
+output=""
+test "$echo_cppflags" = "yes" && output="$output $gtest_cppflags"
+test "$echo_cxxflags" = "yes" && output="$output $gtest_cxxflags"
+test "$echo_ldflags" = "yes"  && output="$output $gtest_ldflags"
+test "$echo_libs" = "yes"     && output="$output $gtest_libs"
+echo $output
+
+exit 0
diff --git a/google-breakpad/src/testing/gtest/scripts/pump.py b/google-breakpad/src/testing/gtest/scripts/pump.py
new file mode 100755
index 0000000..8afe808
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/scripts/pump.py
@@ -0,0 +1,847 @@
+#!/usr/bin/env python
+#
+# Copyright 2008, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+"""pump v0.2.0 - Pretty Useful for Meta Programming.
+
+A tool for preprocessor meta programming.  Useful for generating
+repetitive boilerplate code.  Especially useful for writing C++
+classes, functions, macros, and templates that need to work with
+various number of arguments.
+
+USAGE:
+       pump.py SOURCE_FILE
+
+EXAMPLES:
+       pump.py foo.cc.pump
+         Converts foo.cc.pump to foo.cc.
+
+GRAMMAR:
+       CODE ::= ATOMIC_CODE*
+       ATOMIC_CODE ::= $var ID = EXPRESSION
+           | $var ID = [[ CODE ]]
+           | $range ID EXPRESSION..EXPRESSION
+           | $for ID SEPARATOR [[ CODE ]]
+           | $($)
+           | $ID
+           | $(EXPRESSION)
+           | $if EXPRESSION [[ CODE ]] ELSE_BRANCH
+           | [[ CODE ]]
+           | RAW_CODE
+       SEPARATOR ::= RAW_CODE | EMPTY
+       ELSE_BRANCH ::= $else [[ CODE ]]
+           | $elif EXPRESSION [[ CODE ]] ELSE_BRANCH
+           | EMPTY
+       EXPRESSION has Python syntax.
+"""
+
+__author__ = 'wan@google.com (Zhanyong Wan)'
+
+import os
+import re
+import sys
+
+
+TOKEN_TABLE = [
+    (re.compile(r'\$var\s+'), '$var'),
+    (re.compile(r'\$elif\s+'), '$elif'),
+    (re.compile(r'\$else\s+'), '$else'),
+    (re.compile(r'\$for\s+'), '$for'),
+    (re.compile(r'\$if\s+'), '$if'),
+    (re.compile(r'\$range\s+'), '$range'),
+    (re.compile(r'\$[_A-Za-z]\w*'), '$id'),
+    (re.compile(r'\$\(\$\)'), '$($)'),
+    (re.compile(r'\$'), '$'),
+    (re.compile(r'\[\[\n?'), '[['),
+    (re.compile(r'\]\]\n?'), ']]'),
+    ]
+
+
+class Cursor:
+  """Represents a position (line and column) in a text file."""
+
+  def __init__(self, line=-1, column=-1):
+    self.line = line
+    self.column = column
+
+  def __eq__(self, rhs):
+    return self.line == rhs.line and self.column == rhs.column
+
+  def __ne__(self, rhs):
+    return not self == rhs
+
+  def __lt__(self, rhs):
+    return self.line < rhs.line or (
+        self.line == rhs.line and self.column < rhs.column)
+
+  def __le__(self, rhs):
+    return self < rhs or self == rhs
+
+  def __gt__(self, rhs):
+    return rhs < self
+
+  def __ge__(self, rhs):
+    return rhs <= self
+
+  def __str__(self):
+    if self == Eof():
+      return 'EOF'
+    else:
+      return '%s(%s)' % (self.line + 1, self.column)
+
+  def __add__(self, offset):
+    return Cursor(self.line, self.column + offset)
+
+  def __sub__(self, offset):
+    return Cursor(self.line, self.column - offset)
+
+  def Clone(self):
+    """Returns a copy of self."""
+
+    return Cursor(self.line, self.column)
+
+
+# Special cursor to indicate the end-of-file.
+def Eof():
+  """Returns the special cursor to denote the end-of-file."""
+  return Cursor(-1, -1)
+
+
+class Token:
+  """Represents a token in a Pump source file."""
+
+  def __init__(self, start=None, end=None, value=None, token_type=None):
+    if start is None:
+      self.start = Eof()
+    else:
+      self.start = start
+    if end is None:
+      self.end = Eof()
+    else:
+      self.end = end
+    self.value = value
+    self.token_type = token_type
+
+  def __str__(self):
+    return 'Token @%s: \'%s\' type=%s' % (
+        self.start, self.value, self.token_type)
+
+  def Clone(self):
+    """Returns a copy of self."""
+
+    return Token(self.start.Clone(), self.end.Clone(), self.value,
+                 self.token_type)
+
+
+def StartsWith(lines, pos, string):
+  """Returns True iff the given position in lines starts with 'string'."""
+
+  return lines[pos.line][pos.column:].startswith(string)
+
+
+def FindFirstInLine(line, token_table):
+  best_match_start = -1
+  for (regex, token_type) in token_table:
+    m = regex.search(line)
+    if m:
+      # We found regex in lines
+      if best_match_start < 0 or m.start() < best_match_start:
+        best_match_start = m.start()
+        best_match_length = m.end() - m.start()
+        best_match_token_type = token_type
+
+  if best_match_start < 0:
+    return None
+
+  return (best_match_start, best_match_length, best_match_token_type)
+
+
+def FindFirst(lines, token_table, cursor):
+  """Finds the first occurrence of any string in strings in lines."""
+
+  start = cursor.Clone()
+  cur_line_number = cursor.line
+  for line in lines[start.line:]:
+    if cur_line_number == start.line:
+      line = line[start.column:]
+    m = FindFirstInLine(line, token_table)
+    if m:
+      # We found a regex in line.
+      (start_column, length, token_type) = m
+      if cur_line_number == start.line:
+        start_column += start.column
+      found_start = Cursor(cur_line_number, start_column)
+      found_end = found_start + length
+      return MakeToken(lines, found_start, found_end, token_type)
+    cur_line_number += 1
+  # We failed to find str in lines
+  return None
+
+
+def SubString(lines, start, end):
+  """Returns a substring in lines."""
+
+  if end == Eof():
+    end = Cursor(len(lines) - 1, len(lines[-1]))
+
+  if start >= end:
+    return ''
+
+  if start.line == end.line:
+    return lines[start.line][start.column:end.column]
+
+  result_lines = ([lines[start.line][start.column:]] +
+                  lines[start.line + 1:end.line] +
+                  [lines[end.line][:end.column]])
+  return ''.join(result_lines)
+
+
+def StripMetaComments(str):
+  """Strip meta comments from each line in the given string."""
+
+  # First, completely remove lines containing nothing but a meta
+  # comment, including the trailing \n.
+  str = re.sub(r'^\s*\$\$.*\n', '', str)
+
+  # Then, remove meta comments from contentful lines.
+  return re.sub(r'\s*\$\$.*', '', str)
+
+
+def MakeToken(lines, start, end, token_type):
+  """Creates a new instance of Token."""
+
+  return Token(start, end, SubString(lines, start, end), token_type)
+
+
+def ParseToken(lines, pos, regex, token_type):
+  line = lines[pos.line][pos.column:]
+  m = regex.search(line)
+  if m and not m.start():
+    return MakeToken(lines, pos, pos + m.end(), token_type)
+  else:
+    print 'ERROR: %s expected at %s.' % (token_type, pos)
+    sys.exit(1)
+
+
+ID_REGEX = re.compile(r'[_A-Za-z]\w*')
+EQ_REGEX = re.compile(r'=')
+REST_OF_LINE_REGEX = re.compile(r'.*?(?=$|\$\$)')
+OPTIONAL_WHITE_SPACES_REGEX = re.compile(r'\s*')
+WHITE_SPACE_REGEX = re.compile(r'\s')
+DOT_DOT_REGEX = re.compile(r'\.\.')
+
+
+def Skip(lines, pos, regex):
+  line = lines[pos.line][pos.column:]
+  m = re.search(regex, line)
+  if m and not m.start():
+    return pos + m.end()
+  else:
+    return pos
+
+
+def SkipUntil(lines, pos, regex, token_type):
+  line = lines[pos.line][pos.column:]
+  m = re.search(regex, line)
+  if m:
+    return pos + m.start()
+  else:
+    print ('ERROR: %s expected on line %s after column %s.' %
+           (token_type, pos.line + 1, pos.column))
+    sys.exit(1)
+
+
+def ParseExpTokenInParens(lines, pos):
+  def ParseInParens(pos):
+    pos = Skip(lines, pos, OPTIONAL_WHITE_SPACES_REGEX)
+    pos = Skip(lines, pos, r'\(')
+    pos = Parse(pos)
+    pos = Skip(lines, pos, r'\)')
+    return pos
+
+  def Parse(pos):
+    pos = SkipUntil(lines, pos, r'\(|\)', ')')
+    if SubString(lines, pos, pos + 1) == '(':
+      pos = Parse(pos + 1)
+      pos = Skip(lines, pos, r'\)')
+      return Parse(pos)
+    else:
+      return pos
+
+  start = pos.Clone()
+  pos = ParseInParens(pos)
+  return MakeToken(lines, start, pos, 'exp')
+
+
+def RStripNewLineFromToken(token):
+  if token.value.endswith('\n'):
+    return Token(token.start, token.end, token.value[:-1], token.token_type)
+  else:
+    return token
+
+
+def TokenizeLines(lines, pos):
+  while True:
+    found = FindFirst(lines, TOKEN_TABLE, pos)
+    if not found:
+      yield MakeToken(lines, pos, Eof(), 'code')
+      return
+
+    if found.start == pos:
+      prev_token = None
+      prev_token_rstripped = None
+    else:
+      prev_token = MakeToken(lines, pos, found.start, 'code')
+      prev_token_rstripped = RStripNewLineFromToken(prev_token)
+
+    if found.token_type == '$var':
+      if prev_token_rstripped:
+        yield prev_token_rstripped
+      yield found
+      id_token = ParseToken(lines, found.end, ID_REGEX, 'id')
+      yield id_token
+      pos = Skip(lines, id_token.end, OPTIONAL_WHITE_SPACES_REGEX)
+
+      eq_token = ParseToken(lines, pos, EQ_REGEX, '=')
+      yield eq_token
+      pos = Skip(lines, eq_token.end, r'\s*')
+
+      if SubString(lines, pos, pos + 2) != '[[':
+        exp_token = ParseToken(lines, pos, REST_OF_LINE_REGEX, 'exp')
+        yield exp_token
+        pos = Cursor(exp_token.end.line + 1, 0)
+    elif found.token_type == '$for':
+      if prev_token_rstripped:
+        yield prev_token_rstripped
+      yield found
+      id_token = ParseToken(lines, found.end, ID_REGEX, 'id')
+      yield id_token
+      pos = Skip(lines, id_token.end, WHITE_SPACE_REGEX)
+    elif found.token_type == '$range':
+      if prev_token_rstripped:
+        yield prev_token_rstripped
+      yield found
+      id_token = ParseToken(lines, found.end, ID_REGEX, 'id')
+      yield id_token
+      pos = Skip(lines, id_token.end, OPTIONAL_WHITE_SPACES_REGEX)
+
+      dots_pos = SkipUntil(lines, pos, DOT_DOT_REGEX, '..')
+      yield MakeToken(lines, pos, dots_pos, 'exp')
+      yield MakeToken(lines, dots_pos, dots_pos + 2, '..')
+      pos = dots_pos + 2
+      new_pos = Cursor(pos.line + 1, 0)
+      yield MakeToken(lines, pos, new_pos, 'exp')
+      pos = new_pos
+    elif found.token_type == '$':
+      if prev_token:
+        yield prev_token
+      yield found
+      exp_token = ParseExpTokenInParens(lines, found.end)
+      yield exp_token
+      pos = exp_token.end
+    elif (found.token_type == ']]' or found.token_type == '$if' or
+          found.token_type == '$elif' or found.token_type == '$else'):
+      if prev_token_rstripped:
+        yield prev_token_rstripped
+      yield found
+      pos = found.end
+    else:
+      if prev_token:
+        yield prev_token
+      yield found
+      pos = found.end
+
+
+def Tokenize(s):
+  """A generator that yields the tokens in the given string."""
+  if s != '':
+    lines = s.splitlines(True)
+    for token in TokenizeLines(lines, Cursor(0, 0)):
+      yield token
+
+
+class CodeNode:
+  def __init__(self, atomic_code_list=None):
+    self.atomic_code = atomic_code_list
+
+
+class VarNode:
+  def __init__(self, identifier=None, atomic_code=None):
+    self.identifier = identifier
+    self.atomic_code = atomic_code
+
+
+class RangeNode:
+  def __init__(self, identifier=None, exp1=None, exp2=None):
+    self.identifier = identifier
+    self.exp1 = exp1
+    self.exp2 = exp2
+
+
+class ForNode:
+  def __init__(self, identifier=None, sep=None, code=None):
+    self.identifier = identifier
+    self.sep = sep
+    self.code = code
+
+
+class ElseNode:
+  def __init__(self, else_branch=None):
+    self.else_branch = else_branch
+
+
+class IfNode:
+  def __init__(self, exp=None, then_branch=None, else_branch=None):
+    self.exp = exp
+    self.then_branch = then_branch
+    self.else_branch = else_branch
+
+
+class RawCodeNode:
+  def __init__(self, token=None):
+    self.raw_code = token
+
+
+class LiteralDollarNode:
+  def __init__(self, token):
+    self.token = token
+
+
+class ExpNode:
+  def __init__(self, token, python_exp):
+    self.token = token
+    self.python_exp = python_exp
+
+
+def PopFront(a_list):
+  head = a_list[0]
+  a_list[:1] = []
+  return head
+
+
+def PushFront(a_list, elem):
+  a_list[:0] = [elem]
+
+
+def PopToken(a_list, token_type=None):
+  token = PopFront(a_list)
+  if token_type is not None and token.token_type != token_type:
+    print 'ERROR: %s expected at %s' % (token_type, token.start)
+    print 'ERROR: %s found instead' % (token,)
+    sys.exit(1)
+
+  return token
+
+
+def PeekToken(a_list):
+  if not a_list:
+    return None
+
+  return a_list[0]
+
+
+def ParseExpNode(token):
+  python_exp = re.sub(r'([_A-Za-z]\w*)', r'self.GetValue("\1")', token.value)
+  return ExpNode(token, python_exp)
+
+
+def ParseElseNode(tokens):
+  def Pop(token_type=None):
+    return PopToken(tokens, token_type)
+
+  next = PeekToken(tokens)
+  if not next:
+    return None
+  if next.token_type == '$else':
+    Pop('$else')
+    Pop('[[')
+    code_node = ParseCodeNode(tokens)
+    Pop(']]')
+    return code_node
+  elif next.token_type == '$elif':
+    Pop('$elif')
+    exp = Pop('code')
+    Pop('[[')
+    code_node = ParseCodeNode(tokens)
+    Pop(']]')
+    inner_else_node = ParseElseNode(tokens)
+    return CodeNode([IfNode(ParseExpNode(exp), code_node, inner_else_node)])
+  elif not next.value.strip():
+    Pop('code')
+    return ParseElseNode(tokens)
+  else:
+    return None
+
+
+def ParseAtomicCodeNode(tokens):
+  def Pop(token_type=None):
+    return PopToken(tokens, token_type)
+
+  head = PopFront(tokens)
+  t = head.token_type
+  if t == 'code':
+    return RawCodeNode(head)
+  elif t == '$var':
+    id_token = Pop('id')
+    Pop('=')
+    next = PeekToken(tokens)
+    if next.token_type == 'exp':
+      exp_token = Pop()
+      return VarNode(id_token, ParseExpNode(exp_token))
+    Pop('[[')
+    code_node = ParseCodeNode(tokens)
+    Pop(']]')
+    return VarNode(id_token, code_node)
+  elif t == '$for':
+    id_token = Pop('id')
+    next_token = PeekToken(tokens)
+    if next_token.token_type == 'code':
+      sep_token = next_token
+      Pop('code')
+    else:
+      sep_token = None
+    Pop('[[')
+    code_node = ParseCodeNode(tokens)
+    Pop(']]')
+    return ForNode(id_token, sep_token, code_node)
+  elif t == '$if':
+    exp_token = Pop('code')
+    Pop('[[')
+    code_node = ParseCodeNode(tokens)
+    Pop(']]')
+    else_node = ParseElseNode(tokens)
+    return IfNode(ParseExpNode(exp_token), code_node, else_node)
+  elif t == '$range':
+    id_token = Pop('id')
+    exp1_token = Pop('exp')
+    Pop('..')
+    exp2_token = Pop('exp')
+    return RangeNode(id_token, ParseExpNode(exp1_token),
+                     ParseExpNode(exp2_token))
+  elif t == '$id':
+    return ParseExpNode(Token(head.start + 1, head.end, head.value[1:], 'id'))
+  elif t == '$($)':
+    return LiteralDollarNode(head)
+  elif t == '$':
+    exp_token = Pop('exp')
+    return ParseExpNode(exp_token)
+  elif t == '[[':
+    code_node = ParseCodeNode(tokens)
+    Pop(']]')
+    return code_node
+  else:
+    PushFront(tokens, head)
+    return None
+
+
+def ParseCodeNode(tokens):
+  atomic_code_list = []
+  while True:
+    if not tokens:
+      break
+    atomic_code_node = ParseAtomicCodeNode(tokens)
+    if atomic_code_node:
+      atomic_code_list.append(atomic_code_node)
+    else:
+      break
+  return CodeNode(atomic_code_list)
+
+
+def ParseToAST(pump_src_text):
+  """Convert the given Pump source text into an AST."""
+  tokens = list(Tokenize(pump_src_text))
+  code_node = ParseCodeNode(tokens)
+  return code_node
+
+
+class Env:
+  def __init__(self):
+    self.variables = []
+    self.ranges = []
+
+  def Clone(self):
+    clone = Env()
+    clone.variables = self.variables[:]
+    clone.ranges = self.ranges[:]
+    return clone
+
+  def PushVariable(self, var, value):
+    # If value looks like an int, store it as an int.
+    try:
+      int_value = int(value)
+      if ('%s' % int_value) == value:
+        value = int_value
+    except Exception:
+      pass
+    self.variables[:0] = [(var, value)]
+
+  def PopVariable(self):
+    self.variables[:1] = []
+
+  def PushRange(self, var, lower, upper):
+    self.ranges[:0] = [(var, lower, upper)]
+
+  def PopRange(self):
+    self.ranges[:1] = []
+
+  def GetValue(self, identifier):
+    for (var, value) in self.variables:
+      if identifier == var:
+        return value
+
+    print 'ERROR: meta variable %s is undefined.' % (identifier,)
+    sys.exit(1)
+
+  def EvalExp(self, exp):
+    try:
+      result = eval(exp.python_exp)
+    except Exception, e:
+      print 'ERROR: caught exception %s: %s' % (e.__class__.__name__, e)
+      print ('ERROR: failed to evaluate meta expression %s at %s' %
+             (exp.python_exp, exp.token.start))
+      sys.exit(1)
+    return result
+
+  def GetRange(self, identifier):
+    for (var, lower, upper) in self.ranges:
+      if identifier == var:
+        return (lower, upper)
+
+    print 'ERROR: range %s is undefined.' % (identifier,)
+    sys.exit(1)
+
+
+class Output:
+  def __init__(self):
+    self.string = ''
+
+  def GetLastLine(self):
+    index = self.string.rfind('\n')
+    if index < 0:
+      return ''
+
+    return self.string[index + 1:]
+
+  def Append(self, s):
+    self.string += s
+
+
+def RunAtomicCode(env, node, output):
+  if isinstance(node, VarNode):
+    identifier = node.identifier.value.strip()
+    result = Output()
+    RunAtomicCode(env.Clone(), node.atomic_code, result)
+    value = result.string
+    env.PushVariable(identifier, value)
+  elif isinstance(node, RangeNode):
+    identifier = node.identifier.value.strip()
+    lower = int(env.EvalExp(node.exp1))
+    upper = int(env.EvalExp(node.exp2))
+    env.PushRange(identifier, lower, upper)
+  elif isinstance(node, ForNode):
+    identifier = node.identifier.value.strip()
+    if node.sep is None:
+      sep = ''
+    else:
+      sep = node.sep.value
+    (lower, upper) = env.GetRange(identifier)
+    for i in range(lower, upper + 1):
+      new_env = env.Clone()
+      new_env.PushVariable(identifier, i)
+      RunCode(new_env, node.code, output)
+      if i != upper:
+        output.Append(sep)
+  elif isinstance(node, RawCodeNode):
+    output.Append(node.raw_code.value)
+  elif isinstance(node, IfNode):
+    cond = env.EvalExp(node.exp)
+    if cond:
+      RunCode(env.Clone(), node.then_branch, output)
+    elif node.else_branch is not None:
+      RunCode(env.Clone(), node.else_branch, output)
+  elif isinstance(node, ExpNode):
+    value = env.EvalExp(node)
+    output.Append('%s' % (value,))
+  elif isinstance(node, LiteralDollarNode):
+    output.Append('$')
+  elif isinstance(node, CodeNode):
+    RunCode(env.Clone(), node, output)
+  else:
+    print 'BAD'
+    print node
+    sys.exit(1)
+
+
+def RunCode(env, code_node, output):
+  for atomic_code in code_node.atomic_code:
+    RunAtomicCode(env, atomic_code, output)
+
+
+def IsComment(cur_line):
+  return '//' in cur_line
+
+
+def IsInPreprocessorDirevative(prev_lines, cur_line):
+  if cur_line.lstrip().startswith('#'):
+    return True
+  return prev_lines != [] and prev_lines[-1].endswith('\\')
+
+
+def WrapComment(line, output):
+  loc = line.find('//')
+  before_comment = line[:loc].rstrip()
+  if before_comment == '':
+    indent = loc
+  else:
+    output.append(before_comment)
+    indent = len(before_comment) - len(before_comment.lstrip())
+  prefix = indent*' ' + '// '
+  max_len = 80 - len(prefix)
+  comment = line[loc + 2:].strip()
+  segs = [seg for seg in re.split(r'(\w+\W*)', comment) if seg != '']
+  cur_line = ''
+  for seg in segs:
+    if len((cur_line + seg).rstrip()) < max_len:
+      cur_line += seg
+    else:
+      if cur_line.strip() != '':
+        output.append(prefix + cur_line.rstrip())
+      cur_line = seg.lstrip()
+  if cur_line.strip() != '':
+    output.append(prefix + cur_line.strip())
+
+
+def WrapCode(line, line_concat, output):
+  indent = len(line) - len(line.lstrip())
+  prefix = indent*' '  # Prefix of the current line
+  max_len = 80 - indent - len(line_concat)  # Maximum length of the current line
+  new_prefix = prefix + 4*' '  # Prefix of a continuation line
+  new_max_len = max_len - 4  # Maximum length of a continuation line
+  # Prefers to wrap a line after a ',' or ';'.
+  segs = [seg for seg in re.split(r'([^,;]+[,;]?)', line.strip()) if seg != '']
+  cur_line = ''  # The current line without leading spaces.
+  for seg in segs:
+    # If the line is still too long, wrap at a space.
+    while cur_line == '' and len(seg.strip()) > max_len:
+      seg = seg.lstrip()
+      split_at = seg.rfind(' ', 0, max_len)
+      output.append(prefix + seg[:split_at].strip() + line_concat)
+      seg = seg[split_at + 1:]
+      prefix = new_prefix
+      max_len = new_max_len
+
+    if len((cur_line + seg).rstrip()) < max_len:
+      cur_line = (cur_line + seg).lstrip()
+    else:
+      output.append(prefix + cur_line.rstrip() + line_concat)
+      prefix = new_prefix
+      max_len = new_max_len
+      cur_line = seg.lstrip()
+  if cur_line.strip() != '':
+    output.append(prefix + cur_line.strip())
+
+
+def WrapPreprocessorDirevative(line, output):
+  WrapCode(line, ' \\', output)
+
+
+def WrapPlainCode(line, output):
+  WrapCode(line, '', output)
+
+
+def IsHeaderGuardOrInclude(line):
+  return (re.match(r'^#(ifndef|define|endif\s*//)\s*[\w_]+\s*$', line) or
+          re.match(r'^#include\s', line))
+
+
+def WrapLongLine(line, output):
+  line = line.rstrip()
+  if len(line) <= 80:
+    output.append(line)
+  elif IsComment(line):
+    if IsHeaderGuardOrInclude(line):
+      # The style guide made an exception to allow long header guard lines
+      # and includes.
+      output.append(line)
+    else:
+      WrapComment(line, output)
+  elif IsInPreprocessorDirevative(output, line):
+    if IsHeaderGuardOrInclude(line):
+      # The style guide made an exception to allow long header guard lines
+      # and includes.
+      output.append(line)
+    else:
+      WrapPreprocessorDirevative(line, output)
+  else:
+    WrapPlainCode(line, output)
+
+
+def BeautifyCode(string):
+  lines = string.splitlines()
+  output = []
+  for line in lines:
+    WrapLongLine(line, output)
+  output2 = [line.rstrip() for line in output]
+  return '\n'.join(output2) + '\n'
+
+
+def ConvertFromPumpSource(src_text):
+  """Return the text generated from the given Pump source text."""
+  ast = ParseToAST(StripMetaComments(src_text))
+  output = Output()
+  RunCode(Env(), ast, output)
+  return BeautifyCode(output.string)
+
+
+def main(argv):
+  if len(argv) == 1:
+    print __doc__
+    sys.exit(1)
+
+  file_path = argv[-1]
+  output_str = ConvertFromPumpSource(file(file_path, 'r').read())
+  if file_path.endswith('.pump'):
+    output_file_path = file_path[:-5]
+  else:
+    output_file_path = '-'
+  if output_file_path == '-':
+    print output_str,
+  else:
+    output_file = file(output_file_path, 'w')
+    output_file.write('// This file was GENERATED by command:\n')
+    output_file.write('//     %s %s\n' %
+                      (os.path.basename(__file__), os.path.basename(file_path)))
+    output_file.write('// DO NOT EDIT BY HAND!!!\n\n')
+    output_file.write(output_str)
+    output_file.close()
+
+
+if __name__ == '__main__':
+  main(sys.argv)
diff --git a/google-breakpad/src/testing/gtest/scripts/test/Makefile b/google-breakpad/src/testing/gtest/scripts/test/Makefile
new file mode 100644
index 0000000..cdff584
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/scripts/test/Makefile
@@ -0,0 +1,59 @@
+# A Makefile for fusing Google Test and building a sample test against it.
+#
+# SYNOPSIS:
+#
+#   make [all]  - makes everything.
+#   make TARGET - makes the given target.
+#   make check  - makes everything and runs the built sample test.
+#   make clean  - removes all files generated by make.
+
+# Points to the root of fused Google Test, relative to where this file is.
+FUSED_GTEST_DIR = output
+
+# Paths to the fused gtest files.
+FUSED_GTEST_H = $(FUSED_GTEST_DIR)/gtest/gtest.h
+FUSED_GTEST_ALL_CC = $(FUSED_GTEST_DIR)/gtest/gtest-all.cc
+
+# Where to find the sample test.
+SAMPLE_DIR = ../../samples
+
+# Where to find gtest_main.cc.
+GTEST_MAIN_CC = ../../src/gtest_main.cc
+
+# Flags passed to the preprocessor.
+# We have no idea here whether pthreads is available in the system, so
+# disable its use.
+CPPFLAGS += -I$(FUSED_GTEST_DIR) -DGTEST_HAS_PTHREAD=0
+
+# Flags passed to the C++ compiler.
+CXXFLAGS += -g
+
+all : sample1_unittest
+
+check : all
+	./sample1_unittest
+
+clean :
+	rm -rf $(FUSED_GTEST_DIR) sample1_unittest *.o
+
+$(FUSED_GTEST_H) :
+	../fuse_gtest_files.py $(FUSED_GTEST_DIR)
+
+$(FUSED_GTEST_ALL_CC) :
+	../fuse_gtest_files.py $(FUSED_GTEST_DIR)
+
+gtest-all.o : $(FUSED_GTEST_H) $(FUSED_GTEST_ALL_CC)
+	$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(FUSED_GTEST_DIR)/gtest/gtest-all.cc
+
+gtest_main.o : $(FUSED_GTEST_H) $(GTEST_MAIN_CC)
+	$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(GTEST_MAIN_CC)
+
+sample1.o : $(SAMPLE_DIR)/sample1.cc $(SAMPLE_DIR)/sample1.h
+	$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(SAMPLE_DIR)/sample1.cc
+
+sample1_unittest.o : $(SAMPLE_DIR)/sample1_unittest.cc \
+                     $(SAMPLE_DIR)/sample1.h $(FUSED_GTEST_H)
+	$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(SAMPLE_DIR)/sample1_unittest.cc
+
+sample1_unittest : sample1.o sample1_unittest.o gtest-all.o gtest_main.o
+	$(CXX) $(CPPFLAGS) $(CXXFLAGS) $^ -o $@
diff --git a/google-breakpad/src/testing/gtest/scripts/upload.py b/google-breakpad/src/testing/gtest/scripts/upload.py
new file mode 100755
index 0000000..6e6f9a1
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/scripts/upload.py
@@ -0,0 +1,1387 @@
+#!/usr/bin/env python
+#
+# Copyright 2007 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Tool for uploading diffs from a version control system to the codereview app.
+
+Usage summary: upload.py [options] [-- diff_options]
+
+Diff options are passed to the diff command of the underlying system.
+
+Supported version control systems:
+  Git
+  Mercurial
+  Subversion
+
+It is important for Git/Mercurial users to specify a tree/node/branch to diff
+against by using the '--rev' option.
+"""
+# This code is derived from appcfg.py in the App Engine SDK (open source),
+# and from ASPN recipe #146306.
+
+import cookielib
+import getpass
+import logging
+import md5
+import mimetypes
+import optparse
+import os
+import re
+import socket
+import subprocess
+import sys
+import urllib
+import urllib2
+import urlparse
+
+try:
+  import readline
+except ImportError:
+  pass
+
+# The logging verbosity:
+#  0: Errors only.
+#  1: Status messages.
+#  2: Info logs.
+#  3: Debug logs.
+verbosity = 1
+
+# Max size of patch or base file.
+MAX_UPLOAD_SIZE = 900 * 1024
+
+
+def GetEmail(prompt):
+  """Prompts the user for their email address and returns it.
+
+  The last used email address is saved to a file and offered up as a suggestion
+  to the user. If the user presses enter without typing in anything the last
+  used email address is used. If the user enters a new address, it is saved
+  for next time we prompt.
+
+  """
+  last_email_file_name = os.path.expanduser("~/.last_codereview_email_address")
+  last_email = ""
+  if os.path.exists(last_email_file_name):
+    try:
+      last_email_file = open(last_email_file_name, "r")
+      last_email = last_email_file.readline().strip("\n")
+      last_email_file.close()
+      prompt += " [%s]" % last_email
+    except IOError, e:
+      pass
+  email = raw_input(prompt + ": ").strip()
+  if email:
+    try:
+      last_email_file = open(last_email_file_name, "w")
+      last_email_file.write(email)
+      last_email_file.close()
+    except IOError, e:
+      pass
+  else:
+    email = last_email
+  return email
+
+
+def StatusUpdate(msg):
+  """Print a status message to stdout.
+
+  If 'verbosity' is greater than 0, print the message.
+
+  Args:
+    msg: The string to print.
+  """
+  if verbosity > 0:
+    print msg
+
+
+def ErrorExit(msg):
+  """Print an error message to stderr and exit."""
+  print >>sys.stderr, msg
+  sys.exit(1)
+
+
+class ClientLoginError(urllib2.HTTPError):
+  """Raised to indicate there was an error authenticating with ClientLogin."""
+
+  def __init__(self, url, code, msg, headers, args):
+    urllib2.HTTPError.__init__(self, url, code, msg, headers, None)
+    self.args = args
+    self.reason = args["Error"]
+
+
+class AbstractRpcServer(object):
+  """Provides a common interface for a simple RPC server."""
+
+  def __init__(self, host, auth_function, host_override=None, extra_headers={},
+               save_cookies=False):
+    """Creates a new HttpRpcServer.
+
+    Args:
+      host: The host to send requests to.
+      auth_function: A function that takes no arguments and returns an
+        (email, password) tuple when called. Will be called if authentication
+        is required.
+      host_override: The host header to send to the server (defaults to host).
+      extra_headers: A dict of extra headers to append to every request.
+      save_cookies: If True, save the authentication cookies to local disk.
+        If False, use an in-memory cookiejar instead.  Subclasses must
+        implement this functionality.  Defaults to False.
+    """
+    self.host = host
+    self.host_override = host_override
+    self.auth_function = auth_function
+    self.authenticated = False
+    self.extra_headers = extra_headers
+    self.save_cookies = save_cookies
+    self.opener = self._GetOpener()
+    if self.host_override:
+      logging.info("Server: %s; Host: %s", self.host, self.host_override)
+    else:
+      logging.info("Server: %s", self.host)
+
+  def _GetOpener(self):
+    """Returns an OpenerDirector for making HTTP requests.
+
+    Returns:
+      A urllib2.OpenerDirector object.
+    """
+    raise NotImplementedError()
+
+  def _CreateRequest(self, url, data=None):
+    """Creates a new urllib request."""
+    logging.debug("Creating request for: '%s' with payload:\n%s", url, data)
+    req = urllib2.Request(url, data=data)
+    if self.host_override:
+      req.add_header("Host", self.host_override)
+    for key, value in self.extra_headers.iteritems():
+      req.add_header(key, value)
+    return req
+
+  def _GetAuthToken(self, email, password):
+    """Uses ClientLogin to authenticate the user, returning an auth token.
+
+    Args:
+      email:    The user's email address
+      password: The user's password
+
+    Raises:
+      ClientLoginError: If there was an error authenticating with ClientLogin.
+      HTTPError: If there was some other form of HTTP error.
+
+    Returns:
+      The authentication token returned by ClientLogin.
+    """
+    account_type = "GOOGLE"
+    if self.host.endswith(".google.com"):
+      # Needed for use inside Google.
+      account_type = "HOSTED"
+    req = self._CreateRequest(
+        url="https://www.google.com/accounts/ClientLogin",
+        data=urllib.urlencode({
+            "Email": email,
+            "Passwd": password,
+            "service": "ah",
+            "source": "rietveld-codereview-upload",
+            "accountType": account_type,
+        }),
+    )
+    try:
+      response = self.opener.open(req)
+      response_body = response.read()
+      response_dict = dict(x.split("=")
+                           for x in response_body.split("\n") if x)
+      return response_dict["Auth"]
+    except urllib2.HTTPError, e:
+      if e.code == 403:
+        body = e.read()
+        response_dict = dict(x.split("=", 1) for x in body.split("\n") if x)
+        raise ClientLoginError(req.get_full_url(), e.code, e.msg,
+                               e.headers, response_dict)
+      else:
+        raise
+
+  def _GetAuthCookie(self, auth_token):
+    """Fetches authentication cookies for an authentication token.
+
+    Args:
+      auth_token: The authentication token returned by ClientLogin.
+
+    Raises:
+      HTTPError: If there was an error fetching the authentication cookies.
+    """
+    # This is a dummy value to allow us to identify when we're successful.
+    continue_location = "http://localhost/"
+    args = {"continue": continue_location, "auth": auth_token}
+    req = self._CreateRequest("http://%s/_ah/login?%s" %
+                              (self.host, urllib.urlencode(args)))
+    try:
+      response = self.opener.open(req)
+    except urllib2.HTTPError, e:
+      response = e
+    if (response.code != 302 or
+        response.info()["location"] != continue_location):
+      raise urllib2.HTTPError(req.get_full_url(), response.code, response.msg,
+                              response.headers, response.fp)
+    self.authenticated = True
+
+  def _Authenticate(self):
+    """Authenticates the user.
+
+    The authentication process works as follows:
+     1) We get a username and password from the user
+     2) We use ClientLogin to obtain an AUTH token for the user
+        (see http://code.google.com/apis/accounts/AuthForInstalledApps.html).
+     3) We pass the auth token to /_ah/login on the server to obtain an
+        authentication cookie. If login was successful, it tries to redirect
+        us to the URL we provided.
+
+    If we attempt to access the upload API without first obtaining an
+    authentication cookie, it returns a 401 response and directs us to
+    authenticate ourselves with ClientLogin.
+    """
+    for i in range(3):
+      credentials = self.auth_function()
+      try:
+        auth_token = self._GetAuthToken(credentials[0], credentials[1])
+      except ClientLoginError, e:
+        if e.reason == "BadAuthentication":
+          print >>sys.stderr, "Invalid username or password."
+          continue
+        if e.reason == "CaptchaRequired":
+          print >>sys.stderr, (
+              "Please go to\n"
+              "https://www.google.com/accounts/DisplayUnlockCaptcha\n"
+              "and verify you are a human.  Then try again.")
+          break
+        if e.reason == "NotVerified":
+          print >>sys.stderr, "Account not verified."
+          break
+        if e.reason == "TermsNotAgreed":
+          print >>sys.stderr, "User has not agreed to TOS."
+          break
+        if e.reason == "AccountDeleted":
+          print >>sys.stderr, "The user account has been deleted."
+          break
+        if e.reason == "AccountDisabled":
+          print >>sys.stderr, "The user account has been disabled."
+          break
+        if e.reason == "ServiceDisabled":
+          print >>sys.stderr, ("The user's access to the service has been "
+                               "disabled.")
+          break
+        if e.reason == "ServiceUnavailable":
+          print >>sys.stderr, "The service is not available; try again later."
+          break
+        raise
+      self._GetAuthCookie(auth_token)
+      return
+
+  def Send(self, request_path, payload=None,
+           content_type="application/octet-stream",
+           timeout=None,
+           **kwargs):
+    """Sends an RPC and returns the response.
+
+    Args:
+      request_path: The path to send the request to, eg /api/appversion/create.
+      payload: The body of the request, or None to send an empty request.
+      content_type: The Content-Type header to use.
+      timeout: timeout in seconds; default None i.e. no timeout.
+        (Note: for large requests on OS X, the timeout doesn't work right.)
+      kwargs: Any keyword arguments are converted into query string parameters.
+
+    Returns:
+      The response body, as a string.
+    """
+    # TODO: Don't require authentication.  Let the server say
+    # whether it is necessary.
+    if not self.authenticated:
+      self._Authenticate()
+
+    old_timeout = socket.getdefaulttimeout()
+    socket.setdefaulttimeout(timeout)
+    try:
+      tries = 0
+      while True:
+        tries += 1
+        args = dict(kwargs)
+        url = "http://%s%s" % (self.host, request_path)
+        if args:
+          url += "?" + urllib.urlencode(args)
+        req = self._CreateRequest(url=url, data=payload)
+        req.add_header("Content-Type", content_type)
+        try:
+          f = self.opener.open(req)
+          response = f.read()
+          f.close()
+          return response
+        except urllib2.HTTPError, e:
+          if tries > 3:
+            raise
+          elif e.code == 401:
+            self._Authenticate()
+##           elif e.code >= 500 and e.code < 600:
+##             # Server Error - try again.
+##             continue
+          else:
+            raise
+    finally:
+      socket.setdefaulttimeout(old_timeout)
+
+
+class HttpRpcServer(AbstractRpcServer):
+  """Provides a simplified RPC-style interface for HTTP requests."""
+
+  def _Authenticate(self):
+    """Save the cookie jar after authentication."""
+    super(HttpRpcServer, self)._Authenticate()
+    if self.save_cookies:
+      StatusUpdate("Saving authentication cookies to %s" % self.cookie_file)
+      self.cookie_jar.save()
+
+  def _GetOpener(self):
+    """Returns an OpenerDirector that supports cookies and ignores redirects.
+
+    Returns:
+      A urllib2.OpenerDirector object.
+    """
+    opener = urllib2.OpenerDirector()
+    opener.add_handler(urllib2.ProxyHandler())
+    opener.add_handler(urllib2.UnknownHandler())
+    opener.add_handler(urllib2.HTTPHandler())
+    opener.add_handler(urllib2.HTTPDefaultErrorHandler())
+    opener.add_handler(urllib2.HTTPSHandler())
+    opener.add_handler(urllib2.HTTPErrorProcessor())
+    if self.save_cookies:
+      self.cookie_file = os.path.expanduser("~/.codereview_upload_cookies")
+      self.cookie_jar = cookielib.MozillaCookieJar(self.cookie_file)
+      if os.path.exists(self.cookie_file):
+        try:
+          self.cookie_jar.load()
+          self.authenticated = True
+          StatusUpdate("Loaded authentication cookies from %s" %
+                       self.cookie_file)
+        except (cookielib.LoadError, IOError):
+          # Failed to load cookies - just ignore them.
+          pass
+      else:
+        # Create an empty cookie file with mode 600
+        fd = os.open(self.cookie_file, os.O_CREAT, 0600)
+        os.close(fd)
+      # Always chmod the cookie file
+      os.chmod(self.cookie_file, 0600)
+    else:
+      # Don't save cookies across runs of update.py.
+      self.cookie_jar = cookielib.CookieJar()
+    opener.add_handler(urllib2.HTTPCookieProcessor(self.cookie_jar))
+    return opener
+
+
+parser = optparse.OptionParser(usage="%prog [options] [-- diff_options]")
+parser.add_option("-y", "--assume_yes", action="store_true",
+                  dest="assume_yes", default=False,
+                  help="Assume that the answer to yes/no questions is 'yes'.")
+# Logging
+group = parser.add_option_group("Logging options")
+group.add_option("-q", "--quiet", action="store_const", const=0,
+                 dest="verbose", help="Print errors only.")
+group.add_option("-v", "--verbose", action="store_const", const=2,
+                 dest="verbose", default=1,
+                 help="Print info level logs (default).")
+group.add_option("--noisy", action="store_const", const=3,
+                 dest="verbose", help="Print all logs.")
+# Review server
+group = parser.add_option_group("Review server options")
+group.add_option("-s", "--server", action="store", dest="server",
+                 default="codereview.appspot.com",
+                 metavar="SERVER",
+                 help=("The server to upload to. The format is host[:port]. "
+                       "Defaults to 'codereview.appspot.com'."))
+group.add_option("-e", "--email", action="store", dest="email",
+                 metavar="EMAIL", default=None,
+                 help="The username to use. Will prompt if omitted.")
+group.add_option("-H", "--host", action="store", dest="host",
+                 metavar="HOST", default=None,
+                 help="Overrides the Host header sent with all RPCs.")
+group.add_option("--no_cookies", action="store_false",
+                 dest="save_cookies", default=True,
+                 help="Do not save authentication cookies to local disk.")
+# Issue
+group = parser.add_option_group("Issue options")
+group.add_option("-d", "--description", action="store", dest="description",
+                 metavar="DESCRIPTION", default=None,
+                 help="Optional description when creating an issue.")
+group.add_option("-f", "--description_file", action="store",
+                 dest="description_file", metavar="DESCRIPTION_FILE",
+                 default=None,
+                 help="Optional path of a file that contains "
+                      "the description when creating an issue.")
+group.add_option("-r", "--reviewers", action="store", dest="reviewers",
+                 metavar="REVIEWERS", default=None,
+                 help="Add reviewers (comma separated email addresses).")
+group.add_option("--cc", action="store", dest="cc",
+                 metavar="CC", default=None,
+                 help="Add CC (comma separated email addresses).")
+# Upload options
+group = parser.add_option_group("Patch options")
+group.add_option("-m", "--message", action="store", dest="message",
+                 metavar="MESSAGE", default=None,
+                 help="A message to identify the patch. "
+                      "Will prompt if omitted.")
+group.add_option("-i", "--issue", type="int", action="store",
+                 metavar="ISSUE", default=None,
+                 help="Issue number to which to add. Defaults to new issue.")
+group.add_option("--download_base", action="store_true",
+                 dest="download_base", default=False,
+                 help="Base files will be downloaded by the server "
+                 "(side-by-side diffs may not work on files with CRs).")
+group.add_option("--rev", action="store", dest="revision",
+                 metavar="REV", default=None,
+                 help="Branch/tree/revision to diff against (used by DVCS).")
+group.add_option("--send_mail", action="store_true",
+                 dest="send_mail", default=False,
+                 help="Send notification email to reviewers.")
+
+
+def GetRpcServer(options):
+  """Returns an instance of an AbstractRpcServer.
+
+  Returns:
+    A new AbstractRpcServer, on which RPC calls can be made.
+  """
+
+  rpc_server_class = HttpRpcServer
+
+  def GetUserCredentials():
+    """Prompts the user for a username and password."""
+    email = options.email
+    if email is None:
+      email = GetEmail("Email (login for uploading to %s)" % options.server)
+    password = getpass.getpass("Password for %s: " % email)
+    return (email, password)
+
+  # If this is the dev_appserver, use fake authentication.
+  host = (options.host or options.server).lower()
+  if host == "localhost" or host.startswith("localhost:"):
+    email = options.email
+    if email is None:
+      email = "test@example.com"
+      logging.info("Using debug user %s.  Override with --email" % email)
+    server = rpc_server_class(
+        options.server,
+        lambda: (email, "password"),
+        host_override=options.host,
+        extra_headers={"Cookie":
+                       'dev_appserver_login="%s:False"' % email},
+        save_cookies=options.save_cookies)
+    # Don't try to talk to ClientLogin.
+    server.authenticated = True
+    return server
+
+  return rpc_server_class(options.server, GetUserCredentials,
+                          host_override=options.host,
+                          save_cookies=options.save_cookies)
+
+
+def EncodeMultipartFormData(fields, files):
+  """Encode form fields for multipart/form-data.
+
+  Args:
+    fields: A sequence of (name, value) elements for regular form fields.
+    files: A sequence of (name, filename, value) elements for data to be
+           uploaded as files.
+  Returns:
+    (content_type, body) ready for httplib.HTTP instance.
+
+  Source:
+    http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/146306
+  """
+  BOUNDARY = '-M-A-G-I-C---B-O-U-N-D-A-R-Y-'
+  CRLF = '\r\n'
+  lines = []
+  for (key, value) in fields:
+    lines.append('--' + BOUNDARY)
+    lines.append('Content-Disposition: form-data; name="%s"' % key)
+    lines.append('')
+    lines.append(value)
+  for (key, filename, value) in files:
+    lines.append('--' + BOUNDARY)
+    lines.append('Content-Disposition: form-data; name="%s"; filename="%s"' %
+             (key, filename))
+    lines.append('Content-Type: %s' % GetContentType(filename))
+    lines.append('')
+    lines.append(value)
+  lines.append('--' + BOUNDARY + '--')
+  lines.append('')
+  body = CRLF.join(lines)
+  content_type = 'multipart/form-data; boundary=%s' % BOUNDARY
+  return content_type, body
+
+
+def GetContentType(filename):
+  """Helper to guess the content-type from the filename."""
+  return mimetypes.guess_type(filename)[0] or 'application/octet-stream'
+
+
+# Use a shell for subcommands on Windows to get a PATH search.
+use_shell = sys.platform.startswith("win")
+
+def RunShellWithReturnCode(command, print_output=False,
+                           universal_newlines=True):
+  """Executes a command and returns the output from stdout and the return code.
+
+  Args:
+    command: Command to execute.
+    print_output: If True, the output is printed to stdout.
+                  If False, both stdout and stderr are ignored.
+    universal_newlines: Use universal_newlines flag (default: True).
+
+  Returns:
+    Tuple (output, return code)
+  """
+  logging.info("Running %s", command)
+  p = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE,
+                       shell=use_shell, universal_newlines=universal_newlines)
+  if print_output:
+    output_array = []
+    while True:
+      line = p.stdout.readline()
+      if not line:
+        break
+      print line.strip("\n")
+      output_array.append(line)
+    output = "".join(output_array)
+  else:
+    output = p.stdout.read()
+  p.wait()
+  errout = p.stderr.read()
+  if print_output and errout:
+    print >>sys.stderr, errout
+  p.stdout.close()
+  p.stderr.close()
+  return output, p.returncode
+
+
+def RunShell(command, silent_ok=False, universal_newlines=True,
+             print_output=False):
+  data, retcode = RunShellWithReturnCode(command, print_output,
+                                         universal_newlines)
+  if retcode:
+    ErrorExit("Got error status from %s:\n%s" % (command, data))
+  if not silent_ok and not data:
+    ErrorExit("No output from %s" % command)
+  return data
+
+
+class VersionControlSystem(object):
+  """Abstract base class providing an interface to the VCS."""
+
+  def __init__(self, options):
+    """Constructor.
+
+    Args:
+      options: Command line options.
+    """
+    self.options = options
+
+  def GenerateDiff(self, args):
+    """Return the current diff as a string.
+
+    Args:
+      args: Extra arguments to pass to the diff command.
+    """
+    raise NotImplementedError(
+        "abstract method -- subclass %s must override" % self.__class__)
+
+  def GetUnknownFiles(self):
+    """Return a list of files unknown to the VCS."""
+    raise NotImplementedError(
+        "abstract method -- subclass %s must override" % self.__class__)
+
+  def CheckForUnknownFiles(self):
+    """Show an "are you sure?" prompt if there are unknown files."""
+    unknown_files = self.GetUnknownFiles()
+    if unknown_files:
+      print "The following files are not added to version control:"
+      for line in unknown_files:
+        print line
+      prompt = "Are you sure to continue?(y/N) "
+      answer = raw_input(prompt).strip()
+      if answer != "y":
+        ErrorExit("User aborted")
+
+  def GetBaseFile(self, filename):
+    """Get the content of the upstream version of a file.
+
+    Returns:
+      A tuple (base_content, new_content, is_binary, status)
+        base_content: The contents of the base file.
+        new_content: For text files, this is empty.  For binary files, this is
+          the contents of the new file, since the diff output won't contain
+          information to reconstruct the current file.
+        is_binary: True iff the file is binary.
+        status: The status of the file.
+    """
+
+    raise NotImplementedError(
+        "abstract method -- subclass %s must override" % self.__class__)
+
+
+  def GetBaseFiles(self, diff):
+    """Helper that calls GetBase file for each file in the patch.
+
+    Returns:
+      A dictionary that maps from filename to GetBaseFile's tuple.  Filenames
+      are retrieved based on lines that start with "Index:" or
+      "Property changes on:".
+    """
+    files = {}
+    for line in diff.splitlines(True):
+      if line.startswith('Index:') or line.startswith('Property changes on:'):
+        unused, filename = line.split(':', 1)
+        # On Windows if a file has property changes its filename uses '\'
+        # instead of '/'.
+        filename = filename.strip().replace('\\', '/')
+        files[filename] = self.GetBaseFile(filename)
+    return files
+
+
+  def UploadBaseFiles(self, issue, rpc_server, patch_list, patchset, options,
+                      files):
+    """Uploads the base files (and if necessary, the current ones as well)."""
+
+    def UploadFile(filename, file_id, content, is_binary, status, is_base):
+      """Uploads a file to the server."""
+      file_too_large = False
+      if is_base:
+        type = "base"
+      else:
+        type = "current"
+      if len(content) > MAX_UPLOAD_SIZE:
+        print ("Not uploading the %s file for %s because it's too large." %
+               (type, filename))
+        file_too_large = True
+        content = ""
+      checksum = md5.new(content).hexdigest()
+      if options.verbose > 0 and not file_too_large:
+        print "Uploading %s file for %s" % (type, filename)
+      url = "/%d/upload_content/%d/%d" % (int(issue), int(patchset), file_id)
+      form_fields = [("filename", filename),
+                     ("status", status),
+                     ("checksum", checksum),
+                     ("is_binary", str(is_binary)),
+                     ("is_current", str(not is_base)),
+                    ]
+      if file_too_large:
+        form_fields.append(("file_too_large", "1"))
+      if options.email:
+        form_fields.append(("user", options.email))
+      ctype, body = EncodeMultipartFormData(form_fields,
+                                            [("data", filename, content)])
+      response_body = rpc_server.Send(url, body,
+                                      content_type=ctype)
+      if not response_body.startswith("OK"):
+        StatusUpdate("  --> %s" % response_body)
+        sys.exit(1)
+
+    patches = dict()
+    [patches.setdefault(v, k) for k, v in patch_list]
+    for filename in patches.keys():
+      base_content, new_content, is_binary, status = files[filename]
+      file_id_str = patches.get(filename)
+      if file_id_str.find("nobase") != -1:
+        base_content = None
+        file_id_str = file_id_str[file_id_str.rfind("_") + 1:]
+      file_id = int(file_id_str)
+      if base_content != None:
+        UploadFile(filename, file_id, base_content, is_binary, status, True)
+      if new_content != None:
+        UploadFile(filename, file_id, new_content, is_binary, status, False)
+
+  def IsImage(self, filename):
+    """Returns true if the filename has an image extension."""
+    mimetype =  mimetypes.guess_type(filename)[0]
+    if not mimetype:
+      return False
+    return mimetype.startswith("image/")
+
+
+class SubversionVCS(VersionControlSystem):
+  """Implementation of the VersionControlSystem interface for Subversion."""
+
+  def __init__(self, options):
+    super(SubversionVCS, self).__init__(options)
+    if self.options.revision:
+      match = re.match(r"(\d+)(:(\d+))?", self.options.revision)
+      if not match:
+        ErrorExit("Invalid Subversion revision %s." % self.options.revision)
+      self.rev_start = match.group(1)
+      self.rev_end = match.group(3)
+    else:
+      self.rev_start = self.rev_end = None
+    # Cache output from "svn list -r REVNO dirname".
+    # Keys: dirname, Values: 2-tuple (ouput for start rev and end rev).
+    self.svnls_cache = {}
+    # SVN base URL is required to fetch files deleted in an older revision.
+    # Result is cached to not guess it over and over again in GetBaseFile().
+    required = self.options.download_base or self.options.revision is not None
+    self.svn_base = self._GuessBase(required)
+
+  def GuessBase(self, required):
+    """Wrapper for _GuessBase."""
+    return self.svn_base
+
+  def _GuessBase(self, required):
+    """Returns the SVN base URL.
+
+    Args:
+      required: If true, exits if the url can't be guessed, otherwise None is
+        returned.
+    """
+    info = RunShell(["svn", "info"])
+    for line in info.splitlines():
+      words = line.split()
+      if len(words) == 2 and words[0] == "URL:":
+        url = words[1]
+        scheme, netloc, path, params, query, fragment = urlparse.urlparse(url)
+        username, netloc = urllib.splituser(netloc)
+        if username:
+          logging.info("Removed username from base URL")
+        if netloc.endswith("svn.python.org"):
+          if netloc == "svn.python.org":
+            if path.startswith("/projects/"):
+              path = path[9:]
+          elif netloc != "pythondev@svn.python.org":
+            ErrorExit("Unrecognized Python URL: %s" % url)
+          base = "http://svn.python.org/view/*checkout*%s/" % path
+          logging.info("Guessed Python base = %s", base)
+        elif netloc.endswith("svn.collab.net"):
+          if path.startswith("/repos/"):
+            path = path[6:]
+          base = "http://svn.collab.net/viewvc/*checkout*%s/" % path
+          logging.info("Guessed CollabNet base = %s", base)
+        elif netloc.endswith(".googlecode.com"):
+          path = path + "/"
+          base = urlparse.urlunparse(("http", netloc, path, params,
+                                      query, fragment))
+          logging.info("Guessed Google Code base = %s", base)
+        else:
+          path = path + "/"
+          base = urlparse.urlunparse((scheme, netloc, path, params,
+                                      query, fragment))
+          logging.info("Guessed base = %s", base)
+        return base
+    if required:
+      ErrorExit("Can't find URL in output from svn info")
+    return None
+
+  def GenerateDiff(self, args):
+    cmd = ["svn", "diff"]
+    if self.options.revision:
+      cmd += ["-r", self.options.revision]
+    cmd.extend(args)
+    data = RunShell(cmd)
+    count = 0
+    for line in data.splitlines():
+      if line.startswith("Index:") or line.startswith("Property changes on:"):
+        count += 1
+        logging.info(line)
+    if not count:
+      ErrorExit("No valid patches found in output from svn diff")
+    return data
+
+  def _CollapseKeywords(self, content, keyword_str):
+    """Collapses SVN keywords."""
+    # svn cat translates keywords but svn diff doesn't. As a result of this
+    # behavior patching.PatchChunks() fails with a chunk mismatch error.
+    # This part was originally written by the Review Board development team
+    # who had the same problem (http://reviews.review-board.org/r/276/).
+    # Mapping of keywords to known aliases
+    svn_keywords = {
+      # Standard keywords
+      'Date':                ['Date', 'LastChangedDate'],
+      'Revision':            ['Revision', 'LastChangedRevision', 'Rev'],
+      'Author':              ['Author', 'LastChangedBy'],
+      'HeadURL':             ['HeadURL', 'URL'],
+      'Id':                  ['Id'],
+
+      # Aliases
+      'LastChangedDate':     ['LastChangedDate', 'Date'],
+      'LastChangedRevision': ['LastChangedRevision', 'Rev', 'Revision'],
+      'LastChangedBy':       ['LastChangedBy', 'Author'],
+      'URL':                 ['URL', 'HeadURL'],
+    }
+
+    def repl(m):
+       if m.group(2):
+         return "$%s::%s$" % (m.group(1), " " * len(m.group(3)))
+       return "$%s$" % m.group(1)
+    keywords = [keyword
+                for name in keyword_str.split(" ")
+                for keyword in svn_keywords.get(name, [])]
+    return re.sub(r"\$(%s):(:?)([^\$]+)\$" % '|'.join(keywords), repl, content)
+
+  def GetUnknownFiles(self):
+    status = RunShell(["svn", "status", "--ignore-externals"], silent_ok=True)
+    unknown_files = []
+    for line in status.split("\n"):
+      if line and line[0] == "?":
+        unknown_files.append(line)
+    return unknown_files
+
+  def ReadFile(self, filename):
+    """Returns the contents of a file."""
+    file = open(filename, 'rb')
+    result = ""
+    try:
+      result = file.read()
+    finally:
+      file.close()
+    return result
+
+  def GetStatus(self, filename):
+    """Returns the status of a file."""
+    if not self.options.revision:
+      status = RunShell(["svn", "status", "--ignore-externals", filename])
+      if not status:
+        ErrorExit("svn status returned no output for %s" % filename)
+      status_lines = status.splitlines()
+      # If file is in a cl, the output will begin with
+      # "\n--- Changelist 'cl_name':\n".  See
+      # http://svn.collab.net/repos/svn/trunk/notes/changelist-design.txt
+      if (len(status_lines) == 3 and
+          not status_lines[0] and
+          status_lines[1].startswith("--- Changelist")):
+        status = status_lines[2]
+      else:
+        status = status_lines[0]
+    # If we have a revision to diff against we need to run "svn list"
+    # for the old and the new revision and compare the results to get
+    # the correct status for a file.
+    else:
+      dirname, relfilename = os.path.split(filename)
+      if dirname not in self.svnls_cache:
+        cmd = ["svn", "list", "-r", self.rev_start, dirname or "."]
+        out, returncode = RunShellWithReturnCode(cmd)
+        if returncode:
+          ErrorExit("Failed to get status for %s." % filename)
+        old_files = out.splitlines()
+        args = ["svn", "list"]
+        if self.rev_end:
+          args += ["-r", self.rev_end]
+        cmd = args + [dirname or "."]
+        out, returncode = RunShellWithReturnCode(cmd)
+        if returncode:
+          ErrorExit("Failed to run command %s" % cmd)
+        self.svnls_cache[dirname] = (old_files, out.splitlines())
+      old_files, new_files = self.svnls_cache[dirname]
+      if relfilename in old_files and relfilename not in new_files:
+        status = "D   "
+      elif relfilename in old_files and relfilename in new_files:
+        status = "M   "
+      else:
+        status = "A   "
+    return status
+
+  def GetBaseFile(self, filename):
+    status = self.GetStatus(filename)
+    base_content = None
+    new_content = None
+
+    # If a file is copied its status will be "A  +", which signifies
+    # "addition-with-history".  See "svn st" for more information.  We need to
+    # upload the original file or else diff parsing will fail if the file was
+    # edited.
+    if status[0] == "A" and status[3] != "+":
+      # We'll need to upload the new content if we're adding a binary file
+      # since diff's output won't contain it.
+      mimetype = RunShell(["svn", "propget", "svn:mime-type", filename],
+                          silent_ok=True)
+      base_content = ""
+      is_binary = mimetype and not mimetype.startswith("text/")
+      if is_binary and self.IsImage(filename):
+        new_content = self.ReadFile(filename)
+    elif (status[0] in ("M", "D", "R") or
+          (status[0] == "A" and status[3] == "+") or  # Copied file.
+          (status[0] == " " and status[1] == "M")):  # Property change.
+      args = []
+      if self.options.revision:
+        url = "%s/%s@%s" % (self.svn_base, filename, self.rev_start)
+      else:
+        # Don't change filename, it's needed later.
+        url = filename
+        args += ["-r", "BASE"]
+      cmd = ["svn"] + args + ["propget", "svn:mime-type", url]
+      mimetype, returncode = RunShellWithReturnCode(cmd)
+      if returncode:
+        # File does not exist in the requested revision.
+        # Reset mimetype, it contains an error message.
+        mimetype = ""
+      get_base = False
+      is_binary = mimetype and not mimetype.startswith("text/")
+      if status[0] == " ":
+        # Empty base content just to force an upload.
+        base_content = ""
+      elif is_binary:
+        if self.IsImage(filename):
+          get_base = True
+          if status[0] == "M":
+            if not self.rev_end:
+              new_content = self.ReadFile(filename)
+            else:
+              url = "%s/%s@%s" % (self.svn_base, filename, self.rev_end)
+              new_content = RunShell(["svn", "cat", url],
+                                     universal_newlines=True, silent_ok=True)
+        else:
+          base_content = ""
+      else:
+        get_base = True
+
+      if get_base:
+        if is_binary:
+          universal_newlines = False
+        else:
+          universal_newlines = True
+        if self.rev_start:
+          # "svn cat -r REV delete_file.txt" doesn't work. cat requires
+          # the full URL with "@REV" appended instead of using "-r" option.
+          url = "%s/%s@%s" % (self.svn_base, filename, self.rev_start)
+          base_content = RunShell(["svn", "cat", url],
+                                  universal_newlines=universal_newlines,
+                                  silent_ok=True)
+        else:
+          base_content = RunShell(["svn", "cat", filename],
+                                  universal_newlines=universal_newlines,
+                                  silent_ok=True)
+        if not is_binary:
+          args = []
+          if self.rev_start:
+            url = "%s/%s@%s" % (self.svn_base, filename, self.rev_start)
+          else:
+            url = filename
+            args += ["-r", "BASE"]
+          cmd = ["svn"] + args + ["propget", "svn:keywords", url]
+          keywords, returncode = RunShellWithReturnCode(cmd)
+          if keywords and not returncode:
+            base_content = self._CollapseKeywords(base_content, keywords)
+    else:
+      StatusUpdate("svn status returned unexpected output: %s" % status)
+      sys.exit(1)
+    return base_content, new_content, is_binary, status[0:5]
+
+
+class GitVCS(VersionControlSystem):
+  """Implementation of the VersionControlSystem interface for Git."""
+
+  def __init__(self, options):
+    super(GitVCS, self).__init__(options)
+    # Map of filename -> hash of base file.
+    self.base_hashes = {}
+
+  def GenerateDiff(self, extra_args):
+    # This is more complicated than svn's GenerateDiff because we must convert
+    # the diff output to include an svn-style "Index:" line as well as record
+    # the hashes of the base files, so we can upload them along with our diff.
+    if self.options.revision:
+      extra_args = [self.options.revision] + extra_args
+    gitdiff = RunShell(["git", "diff", "--full-index"] + extra_args)
+    svndiff = []
+    filecount = 0
+    filename = None
+    for line in gitdiff.splitlines():
+      match = re.match(r"diff --git a/(.*) b/.*$", line)
+      if match:
+        filecount += 1
+        filename = match.group(1)
+        svndiff.append("Index: %s\n" % filename)
+      else:
+        # The "index" line in a git diff looks like this (long hashes elided):
+        #   index 82c0d44..b2cee3f 100755
+        # We want to save the left hash, as that identifies the base file.
+        match = re.match(r"index (\w+)\.\.", line)
+        if match:
+          self.base_hashes[filename] = match.group(1)
+      svndiff.append(line + "\n")
+    if not filecount:
+      ErrorExit("No valid patches found in output from git diff")
+    return "".join(svndiff)
+
+  def GetUnknownFiles(self):
+    status = RunShell(["git", "ls-files", "--exclude-standard", "--others"],
+                      silent_ok=True)
+    return status.splitlines()
+
+  def GetBaseFile(self, filename):
+    hash = self.base_hashes[filename]
+    base_content = None
+    new_content = None
+    is_binary = False
+    if hash == "0" * 40:  # All-zero hash indicates no base file.
+      status = "A"
+      base_content = ""
+    else:
+      status = "M"
+      base_content, returncode = RunShellWithReturnCode(["git", "show", hash])
+      if returncode:
+        ErrorExit("Got error status from 'git show %s'" % hash)
+    return (base_content, new_content, is_binary, status)
+
+
+class MercurialVCS(VersionControlSystem):
+  """Implementation of the VersionControlSystem interface for Mercurial."""
+
+  def __init__(self, options, repo_dir):
+    super(MercurialVCS, self).__init__(options)
+    # Absolute path to repository (we can be in a subdir)
+    self.repo_dir = os.path.normpath(repo_dir)
+    # Compute the subdir
+    cwd = os.path.normpath(os.getcwd())
+    assert cwd.startswith(self.repo_dir)
+    self.subdir = cwd[len(self.repo_dir):].lstrip(r"\/")
+    if self.options.revision:
+      self.base_rev = self.options.revision
+    else:
+      self.base_rev = RunShell(["hg", "parent", "-q"]).split(':')[1].strip()
+
+  def _GetRelPath(self, filename):
+    """Get relative path of a file according to the current directory,
+    given its logical path in the repo."""
+    assert filename.startswith(self.subdir), filename
+    return filename[len(self.subdir):].lstrip(r"\/")
+
+  def GenerateDiff(self, extra_args):
+    # If no file specified, restrict to the current subdir
+    extra_args = extra_args or ["."]
+    cmd = ["hg", "diff", "--git", "-r", self.base_rev] + extra_args
+    data = RunShell(cmd, silent_ok=True)
+    svndiff = []
+    filecount = 0
+    for line in data.splitlines():
+      m = re.match("diff --git a/(\S+) b/(\S+)", line)
+      if m:
+        # Modify line to make it look like as it comes from svn diff.
+        # With this modification no changes on the server side are required
+        # to make upload.py work with Mercurial repos.
+        # NOTE: for proper handling of moved/copied files, we have to use
+        # the second filename.
+        filename = m.group(2)
+        svndiff.append("Index: %s" % filename)
+        svndiff.append("=" * 67)
+        filecount += 1
+        logging.info(line)
+      else:
+        svndiff.append(line)
+    if not filecount:
+      ErrorExit("No valid patches found in output from hg diff")
+    return "\n".join(svndiff) + "\n"
+
+  def GetUnknownFiles(self):
+    """Return a list of files unknown to the VCS."""
+    args = []
+    status = RunShell(["hg", "status", "--rev", self.base_rev, "-u", "."],
+        silent_ok=True)
+    unknown_files = []
+    for line in status.splitlines():
+      st, fn = line.split(" ", 1)
+      if st == "?":
+        unknown_files.append(fn)
+    return unknown_files
+
+  def GetBaseFile(self, filename):
+    # "hg status" and "hg cat" both take a path relative to the current subdir
+    # rather than to the repo root, but "hg diff" has given us the full path
+    # to the repo root.
+    base_content = ""
+    new_content = None
+    is_binary = False
+    oldrelpath = relpath = self._GetRelPath(filename)
+    # "hg status -C" returns two lines for moved/copied files, one otherwise
+    out = RunShell(["hg", "status", "-C", "--rev", self.base_rev, relpath])
+    out = out.splitlines()
+    # HACK: strip error message about missing file/directory if it isn't in
+    # the working copy
+    if out[0].startswith('%s: ' % relpath):
+      out = out[1:]
+    if len(out) > 1:
+      # Moved/copied => considered as modified, use old filename to
+      # retrieve base contents
+      oldrelpath = out[1].strip()
+      status = "M"
+    else:
+      status, _ = out[0].split(' ', 1)
+    if status != "A":
+      base_content = RunShell(["hg", "cat", "-r", self.base_rev, oldrelpath],
+        silent_ok=True)
+      is_binary = "\0" in base_content  # Mercurial's heuristic
+    if status != "R":
+      new_content = open(relpath, "rb").read()
+      is_binary = is_binary or "\0" in new_content
+    if is_binary and base_content:
+      # Fetch again without converting newlines
+      base_content = RunShell(["hg", "cat", "-r", self.base_rev, oldrelpath],
+        silent_ok=True, universal_newlines=False)
+    if not is_binary or not self.IsImage(relpath):
+      new_content = None
+    return base_content, new_content, is_binary, status
+
+
+# NOTE: The SplitPatch function is duplicated in engine.py, keep them in sync.
+def SplitPatch(data):
+  """Splits a patch into separate pieces for each file.
+
+  Args:
+    data: A string containing the output of svn diff.
+
+  Returns:
+    A list of 2-tuple (filename, text) where text is the svn diff output
+      pertaining to filename.
+  """
+  patches = []
+  filename = None
+  diff = []
+  for line in data.splitlines(True):
+    new_filename = None
+    if line.startswith('Index:'):
+      unused, new_filename = line.split(':', 1)
+      new_filename = new_filename.strip()
+    elif line.startswith('Property changes on:'):
+      unused, temp_filename = line.split(':', 1)
+      # When a file is modified, paths use '/' between directories, however
+      # when a property is modified '\' is used on Windows.  Make them the same
+      # otherwise the file shows up twice.
+      temp_filename = temp_filename.strip().replace('\\', '/')
+      if temp_filename != filename:
+        # File has property changes but no modifications, create a new diff.
+        new_filename = temp_filename
+    if new_filename:
+      if filename and diff:
+        patches.append((filename, ''.join(diff)))
+      filename = new_filename
+      diff = [line]
+      continue
+    if diff is not None:
+      diff.append(line)
+  if filename and diff:
+    patches.append((filename, ''.join(diff)))
+  return patches
+
+
+def UploadSeparatePatches(issue, rpc_server, patchset, data, options):
+  """Uploads a separate patch for each file in the diff output.
+
+  Returns a list of [patch_key, filename] for each file.
+  """
+  patches = SplitPatch(data)
+  rv = []
+  for patch in patches:
+    if len(patch[1]) > MAX_UPLOAD_SIZE:
+      print ("Not uploading the patch for " + patch[0] +
+             " because the file is too large.")
+      continue
+    form_fields = [("filename", patch[0])]
+    if not options.download_base:
+      form_fields.append(("content_upload", "1"))
+    files = [("data", "data.diff", patch[1])]
+    ctype, body = EncodeMultipartFormData(form_fields, files)
+    url = "/%d/upload_patch/%d" % (int(issue), int(patchset))
+    print "Uploading patch for " + patch[0]
+    response_body = rpc_server.Send(url, body, content_type=ctype)
+    lines = response_body.splitlines()
+    if not lines or lines[0] != "OK":
+      StatusUpdate("  --> %s" % response_body)
+      sys.exit(1)
+    rv.append([lines[1], patch[0]])
+  return rv
+
+
+def GuessVCS(options):
+  """Helper to guess the version control system.
+
+  This examines the current directory, guesses which VersionControlSystem
+  we're using, and returns an instance of the appropriate class.  Exit with an
+  error if we can't figure it out.
+
+  Returns:
+    A VersionControlSystem instance. Exits if the VCS can't be guessed.
+  """
+  # Mercurial has a command to get the base directory of a repository
+  # Try running it, but don't die if we don't have hg installed.
+  # NOTE: we try Mercurial first as it can sit on top of an SVN working copy.
+  try:
+    out, returncode = RunShellWithReturnCode(["hg", "root"])
+    if returncode == 0:
+      return MercurialVCS(options, out.strip())
+  except OSError, (errno, message):
+    if errno != 2:  # ENOENT -- they don't have hg installed.
+      raise
+
+  # Subversion has a .svn in all working directories.
+  if os.path.isdir('.svn'):
+    logging.info("Guessed VCS = Subversion")
+    return SubversionVCS(options)
+
+  # Git has a command to test if you're in a git tree.
+  # Try running it, but don't die if we don't have git installed.
+  try:
+    out, returncode = RunShellWithReturnCode(["git", "rev-parse",
+                                              "--is-inside-work-tree"])
+    if returncode == 0:
+      return GitVCS(options)
+  except OSError, (errno, message):
+    if errno != 2:  # ENOENT -- they don't have git installed.
+      raise
+
+  ErrorExit(("Could not guess version control system. "
+             "Are you in a working copy directory?"))
+
+
+def RealMain(argv, data=None):
+  """The real main function.
+
+  Args:
+    argv: Command line arguments.
+    data: Diff contents. If None (default) the diff is generated by
+      the VersionControlSystem implementation returned by GuessVCS().
+
+  Returns:
+    A 2-tuple (issue id, patchset id).
+    The patchset id is None if the base files are not uploaded by this
+    script (applies only to SVN checkouts).
+  """
+  logging.basicConfig(format=("%(asctime).19s %(levelname)s %(filename)s:"
+                              "%(lineno)s %(message)s "))
+  os.environ['LC_ALL'] = 'C'
+  options, args = parser.parse_args(argv[1:])
+  global verbosity
+  verbosity = options.verbose
+  if verbosity >= 3:
+    logging.getLogger().setLevel(logging.DEBUG)
+  elif verbosity >= 2:
+    logging.getLogger().setLevel(logging.INFO)
+  vcs = GuessVCS(options)
+  if isinstance(vcs, SubversionVCS):
+    # base field is only allowed for Subversion.
+    # Note: Fetching base files may become deprecated in future releases.
+    base = vcs.GuessBase(options.download_base)
+  else:
+    base = None
+  if not base and options.download_base:
+    options.download_base = True
+    logging.info("Enabled upload of base file")
+  if not options.assume_yes:
+    vcs.CheckForUnknownFiles()
+  if data is None:
+    data = vcs.GenerateDiff(args)
+  files = vcs.GetBaseFiles(data)
+  if verbosity >= 1:
+    print "Upload server:", options.server, "(change with -s/--server)"
+  if options.issue:
+    prompt = "Message describing this patch set: "
+  else:
+    prompt = "New issue subject: "
+  message = options.message or raw_input(prompt).strip()
+  if not message:
+    ErrorExit("A non-empty message is required")
+  rpc_server = GetRpcServer(options)
+  form_fields = [("subject", message)]
+  if base:
+    form_fields.append(("base", base))
+  if options.issue:
+    form_fields.append(("issue", str(options.issue)))
+  if options.email:
+    form_fields.append(("user", options.email))
+  if options.reviewers:
+    for reviewer in options.reviewers.split(','):
+      if "@" in reviewer and not reviewer.split("@")[1].count(".") == 1:
+        ErrorExit("Invalid email address: %s" % reviewer)
+    form_fields.append(("reviewers", options.reviewers))
+  if options.cc:
+    for cc in options.cc.split(','):
+      if "@" in cc and not cc.split("@")[1].count(".") == 1:
+        ErrorExit("Invalid email address: %s" % cc)
+    form_fields.append(("cc", options.cc))
+  description = options.description
+  if options.description_file:
+    if options.description:
+      ErrorExit("Can't specify description and description_file")
+    file = open(options.description_file, 'r')
+    description = file.read()
+    file.close()
+  if description:
+    form_fields.append(("description", description))
+  # Send a hash of all the base file so the server can determine if a copy
+  # already exists in an earlier patchset.
+  base_hashes = ""
+  for file, info in files.iteritems():
+    if not info[0] is None:
+      checksum = md5.new(info[0]).hexdigest()
+      if base_hashes:
+        base_hashes += "|"
+      base_hashes += checksum + ":" + file
+  form_fields.append(("base_hashes", base_hashes))
+  # If we're uploading base files, don't send the email before the uploads, so
+  # that it contains the file status.
+  if options.send_mail and options.download_base:
+    form_fields.append(("send_mail", "1"))
+  if not options.download_base:
+    form_fields.append(("content_upload", "1"))
+  if len(data) > MAX_UPLOAD_SIZE:
+    print "Patch is large, so uploading file patches separately."
+    uploaded_diff_file = []
+    form_fields.append(("separate_patches", "1"))
+  else:
+    uploaded_diff_file = [("data", "data.diff", data)]
+  ctype, body = EncodeMultipartFormData(form_fields, uploaded_diff_file)
+  response_body = rpc_server.Send("/upload", body, content_type=ctype)
+  patchset = None
+  if not options.download_base or not uploaded_diff_file:
+    lines = response_body.splitlines()
+    if len(lines) >= 2:
+      msg = lines[0]
+      patchset = lines[1].strip()
+      patches = [x.split(" ", 1) for x in lines[2:]]
+    else:
+      msg = response_body
+  else:
+    msg = response_body
+  StatusUpdate(msg)
+  if not response_body.startswith("Issue created.") and \
+  not response_body.startswith("Issue updated."):
+    sys.exit(0)
+  issue = msg[msg.rfind("/")+1:]
+
+  if not uploaded_diff_file:
+    result = UploadSeparatePatches(issue, rpc_server, patchset, data, options)
+    if not options.download_base:
+      patches = result
+
+  if not options.download_base:
+    vcs.UploadBaseFiles(issue, rpc_server, patches, patchset, options, files)
+    if options.send_mail:
+      rpc_server.Send("/" + issue + "/mail", payload="")
+  return issue, patchset
+
+
+def main():
+  try:
+    RealMain(sys.argv)
+  except KeyboardInterrupt:
+    print
+    StatusUpdate("Interrupted.")
+    sys.exit(1)
+
+
+if __name__ == "__main__":
+  main()
diff --git a/google-breakpad/src/testing/gtest/scripts/upload_gtest.py b/google-breakpad/src/testing/gtest/scripts/upload_gtest.py
new file mode 100755
index 0000000..be19ae8
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/scripts/upload_gtest.py
@@ -0,0 +1,78 @@
+#!/usr/bin/env python
+#
+# Copyright 2009, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+"""upload_gtest.py v0.1.0 -- uploads a Google Test patch for review.
+
+This simple wrapper passes all command line flags and
+--cc=googletestframework@googlegroups.com to upload.py.
+
+USAGE: upload_gtest.py [options for upload.py]
+"""
+
+__author__ = 'wan@google.com (Zhanyong Wan)'
+
+import os
+import sys
+
+CC_FLAG = '--cc='
+GTEST_GROUP = 'googletestframework@googlegroups.com'
+
+
+def main():
+  # Finds the path to upload.py, assuming it is in the same directory
+  # as this file.
+  my_dir = os.path.dirname(os.path.abspath(__file__))
+  upload_py_path = os.path.join(my_dir, 'upload.py')
+
+  # Adds Google Test discussion group to the cc line if it's not there
+  # already.
+  upload_py_argv = [upload_py_path]
+  found_cc_flag = False
+  for arg in sys.argv[1:]:
+    if arg.startswith(CC_FLAG):
+      found_cc_flag = True
+      cc_line = arg[len(CC_FLAG):]
+      cc_list = [addr for addr in cc_line.split(',') if addr]
+      if GTEST_GROUP not in cc_list:
+        cc_list.append(GTEST_GROUP)
+      upload_py_argv.append(CC_FLAG + ','.join(cc_list))
+    else:
+      upload_py_argv.append(arg)
+
+  if not found_cc_flag:
+    upload_py_argv.append(CC_FLAG + GTEST_GROUP)
+
+  # Invokes upload.py with the modified command line flags.
+  os.execv(upload_py_path, upload_py_argv)
+
+
+if __name__ == '__main__':
+  main()
diff --git a/google-breakpad/src/testing/gtest/src/gtest-all.cc b/google-breakpad/src/testing/gtest/src/gtest-all.cc
new file mode 100644
index 0000000..0a9cee5
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/src/gtest-all.cc
@@ -0,0 +1,48 @@
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: mheule@google.com (Markus Heule)
+//
+// Google C++ Testing Framework (Google Test)
+//
+// Sometimes it's desirable to build Google Test by compiling a single file.
+// This file serves this purpose.
+
+// This line ensures that gtest.h can be compiled on its own, even
+// when it's fused.
+#include "gtest/gtest.h"
+
+// The following lines pull in the real gtest *.cc files.
+#include "src/gtest.cc"
+#include "src/gtest-death-test.cc"
+#include "src/gtest-filepath.cc"
+#include "src/gtest-port.cc"
+#include "src/gtest-printers.cc"
+#include "src/gtest-test-part.cc"
+#include "src/gtest-typed-test.cc"
diff --git a/google-breakpad/src/testing/gtest/src/gtest-death-test.cc b/google-breakpad/src/testing/gtest/src/gtest-death-test.cc
new file mode 100644
index 0000000..36a2e3a
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/src/gtest-death-test.cc
@@ -0,0 +1,1337 @@
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan), vladl@google.com (Vlad Losev)
+//
+// This file implements death tests.
+
+#include "gtest/gtest-death-test.h"
+#include "gtest/internal/gtest-port.h"
+
+#if GTEST_HAS_DEATH_TEST
+
+# if GTEST_OS_MAC
+#  include <crt_externs.h>
+# endif  // GTEST_OS_MAC
+
+# include <errno.h>
+# include <fcntl.h>
+# include <limits.h>
+
+# if GTEST_OS_LINUX
+#  include <signal.h>
+# endif  // GTEST_OS_LINUX
+
+# include <stdarg.h>
+
+# if GTEST_OS_WINDOWS
+#  include <windows.h>
+# else
+#  include <sys/mman.h>
+#  include <sys/wait.h>
+# endif  // GTEST_OS_WINDOWS
+
+# if GTEST_OS_QNX
+#  include <spawn.h>
+# endif  // GTEST_OS_QNX
+
+#endif  // GTEST_HAS_DEATH_TEST
+
+#include "gtest/gtest-message.h"
+#include "gtest/internal/gtest-string.h"
+
+// Indicates that this translation unit is part of Google Test's
+// implementation.  It must come before gtest-internal-inl.h is
+// included, or there will be a compiler error.  This trick is to
+// prevent a user from accidentally including gtest-internal-inl.h in
+// his code.
+#define GTEST_IMPLEMENTATION_ 1
+#include "src/gtest-internal-inl.h"
+#undef GTEST_IMPLEMENTATION_
+
+namespace testing {
+
+// Constants.
+
+// The default death test style.
+static const char kDefaultDeathTestStyle[] = "fast";
+
+GTEST_DEFINE_string_(
+    death_test_style,
+    internal::StringFromGTestEnv("death_test_style", kDefaultDeathTestStyle),
+    "Indicates how to run a death test in a forked child process: "
+    "\"threadsafe\" (child process re-executes the test binary "
+    "from the beginning, running only the specific death test) or "
+    "\"fast\" (child process runs the death test immediately "
+    "after forking).");
+
+GTEST_DEFINE_bool_(
+    death_test_use_fork,
+    internal::BoolFromGTestEnv("death_test_use_fork", false),
+    "Instructs to use fork()/_exit() instead of clone() in death tests. "
+    "Ignored and always uses fork() on POSIX systems where clone() is not "
+    "implemented. Useful when running under valgrind or similar tools if "
+    "those do not support clone(). Valgrind 3.3.1 will just fail if "
+    "it sees an unsupported combination of clone() flags. "
+    "It is not recommended to use this flag w/o valgrind though it will "
+    "work in 99% of the cases. Once valgrind is fixed, this flag will "
+    "most likely be removed.");
+
+namespace internal {
+GTEST_DEFINE_string_(
+    internal_run_death_test, "",
+    "Indicates the file, line number, temporal index of "
+    "the single death test to run, and a file descriptor to "
+    "which a success code may be sent, all separated by "
+    "the '|' characters.  This flag is specified if and only if the current "
+    "process is a sub-process launched for running a thread-safe "
+    "death test.  FOR INTERNAL USE ONLY.");
+}  // namespace internal
+
+#if GTEST_HAS_DEATH_TEST
+
+namespace internal {
+
+// Valid only for fast death tests. Indicates the code is running in the
+// child process of a fast style death test.
+static bool g_in_fast_death_test_child = false;
+
+// Returns a Boolean value indicating whether the caller is currently
+// executing in the context of the death test child process.  Tools such as
+// Valgrind heap checkers may need this to modify their behavior in death
+// tests.  IMPORTANT: This is an internal utility.  Using it may break the
+// implementation of death tests.  User code MUST NOT use it.
+bool InDeathTestChild() {
+# if GTEST_OS_WINDOWS
+
+  // On Windows, death tests are thread-safe regardless of the value of the
+  // death_test_style flag.
+  return !GTEST_FLAG(internal_run_death_test).empty();
+
+# else
+
+  if (GTEST_FLAG(death_test_style) == "threadsafe")
+    return !GTEST_FLAG(internal_run_death_test).empty();
+  else
+    return g_in_fast_death_test_child;
+#endif
+}
+
+}  // namespace internal
+
+// ExitedWithCode constructor.
+ExitedWithCode::ExitedWithCode(int exit_code) : exit_code_(exit_code) {
+}
+
+// ExitedWithCode function-call operator.
+bool ExitedWithCode::operator()(int exit_status) const {
+# if GTEST_OS_WINDOWS
+
+  return exit_status == exit_code_;
+
+# else
+
+  return WIFEXITED(exit_status) && WEXITSTATUS(exit_status) == exit_code_;
+
+# endif  // GTEST_OS_WINDOWS
+}
+
+# if !GTEST_OS_WINDOWS
+// KilledBySignal constructor.
+KilledBySignal::KilledBySignal(int signum) : signum_(signum) {
+}
+
+// KilledBySignal function-call operator.
+bool KilledBySignal::operator()(int exit_status) const {
+  return WIFSIGNALED(exit_status) && WTERMSIG(exit_status) == signum_;
+}
+# endif  // !GTEST_OS_WINDOWS
+
+namespace internal {
+
+// Utilities needed for death tests.
+
+// Generates a textual description of a given exit code, in the format
+// specified by wait(2).
+static String ExitSummary(int exit_code) {
+  Message m;
+
+# if GTEST_OS_WINDOWS
+
+  m << "Exited with exit status " << exit_code;
+
+# else
+
+  if (WIFEXITED(exit_code)) {
+    m << "Exited with exit status " << WEXITSTATUS(exit_code);
+  } else if (WIFSIGNALED(exit_code)) {
+    m << "Terminated by signal " << WTERMSIG(exit_code);
+  }
+#  ifdef WCOREDUMP
+  if (WCOREDUMP(exit_code)) {
+    m << " (core dumped)";
+  }
+#  endif
+# endif  // GTEST_OS_WINDOWS
+
+  return m.GetString();
+}
+
+// Returns true if exit_status describes a process that was terminated
+// by a signal, or exited normally with a nonzero exit code.
+bool ExitedUnsuccessfully(int exit_status) {
+  return !ExitedWithCode(0)(exit_status);
+}
+
+# if !GTEST_OS_WINDOWS
+// Generates a textual failure message when a death test finds more than
+// one thread running, or cannot determine the number of threads, prior
+// to executing the given statement.  It is the responsibility of the
+// caller not to pass a thread_count of 1.
+static String DeathTestThreadWarning(size_t thread_count) {
+  Message msg;
+  msg << "Death tests use fork(), which is unsafe particularly"
+      << " in a threaded context. For this test, " << GTEST_NAME_ << " ";
+  if (thread_count == 0)
+    msg << "couldn't detect the number of threads.";
+  else
+    msg << "detected " << thread_count << " threads.";
+  return msg.GetString();
+}
+# endif  // !GTEST_OS_WINDOWS
+
+// Flag characters for reporting a death test that did not die.
+static const char kDeathTestLived = 'L';
+static const char kDeathTestReturned = 'R';
+static const char kDeathTestThrew = 'T';
+static const char kDeathTestInternalError = 'I';
+
+// An enumeration describing all of the possible ways that a death test can
+// conclude.  DIED means that the process died while executing the test
+// code; LIVED means that process lived beyond the end of the test code;
+// RETURNED means that the test statement attempted to execute a return
+// statement, which is not allowed; THREW means that the test statement
+// returned control by throwing an exception.  IN_PROGRESS means the test
+// has not yet concluded.
+// TODO(vladl@google.com): Unify names and possibly values for
+// AbortReason, DeathTestOutcome, and flag characters above.
+enum DeathTestOutcome { IN_PROGRESS, DIED, LIVED, RETURNED, THREW };
+
+// Routine for aborting the program which is safe to call from an
+// exec-style death test child process, in which case the error
+// message is propagated back to the parent process.  Otherwise, the
+// message is simply printed to stderr.  In either case, the program
+// then exits with status 1.
+void DeathTestAbort(const String& message) {
+  // On a POSIX system, this function may be called from a threadsafe-style
+  // death test child process, which operates on a very small stack.  Use
+  // the heap for any additional non-minuscule memory requirements.
+  const InternalRunDeathTestFlag* const flag =
+      GetUnitTestImpl()->internal_run_death_test_flag();
+  if (flag != NULL) {
+    FILE* parent = posix::FDOpen(flag->write_fd(), "w");
+    fputc(kDeathTestInternalError, parent);
+    fprintf(parent, "%s", message.c_str());
+    fflush(parent);
+    _exit(1);
+  } else {
+    fprintf(stderr, "%s", message.c_str());
+    fflush(stderr);
+    posix::Abort();
+  }
+}
+
+// A replacement for CHECK that calls DeathTestAbort if the assertion
+// fails.
+# define GTEST_DEATH_TEST_CHECK_(expression) \
+  do { \
+    if (!::testing::internal::IsTrue(expression)) { \
+      DeathTestAbort(::testing::internal::String::Format( \
+          "CHECK failed: File %s, line %d: %s", \
+          __FILE__, __LINE__, #expression)); \
+    } \
+  } while (::testing::internal::AlwaysFalse())
+
+// This macro is similar to GTEST_DEATH_TEST_CHECK_, but it is meant for
+// evaluating any system call that fulfills two conditions: it must return
+// -1 on failure, and set errno to EINTR when it is interrupted and
+// should be tried again.  The macro expands to a loop that repeatedly
+// evaluates the expression as long as it evaluates to -1 and sets
+// errno to EINTR.  If the expression evaluates to -1 but errno is
+// something other than EINTR, DeathTestAbort is called.
+# define GTEST_DEATH_TEST_CHECK_SYSCALL_(expression) \
+  do { \
+    int gtest_retval; \
+    do { \
+      gtest_retval = (expression); \
+    } while (gtest_retval == -1 && errno == EINTR); \
+    if (gtest_retval == -1) { \
+      DeathTestAbort(::testing::internal::String::Format( \
+          "CHECK failed: File %s, line %d: %s != -1", \
+          __FILE__, __LINE__, #expression)); \
+    } \
+  } while (::testing::internal::AlwaysFalse())
+
+// Returns the message describing the last system error in errno.
+String GetLastErrnoDescription() {
+    return String(errno == 0 ? "" : posix::StrError(errno));
+}
+
+// This is called from a death test parent process to read a failure
+// message from the death test child process and log it with the FATAL
+// severity. On Windows, the message is read from a pipe handle. On other
+// platforms, it is read from a file descriptor.
+static void FailFromInternalError(int fd) {
+  Message error;
+  char buffer[256];
+  int num_read;
+
+  do {
+    while ((num_read = posix::Read(fd, buffer, 255)) > 0) {
+      buffer[num_read] = '\0';
+      error << buffer;
+    }
+  } while (num_read == -1 && errno == EINTR);
+
+  if (num_read == 0) {
+    GTEST_LOG_(FATAL) << error.GetString();
+  } else {
+    const int last_error = errno;
+    GTEST_LOG_(FATAL) << "Error while reading death test internal: "
+                      << GetLastErrnoDescription() << " [" << last_error << "]";
+  }
+}
+
+// Death test constructor.  Increments the running death test count
+// for the current test.
+DeathTest::DeathTest() {
+  TestInfo* const info = GetUnitTestImpl()->current_test_info();
+  if (info == NULL) {
+    DeathTestAbort("Cannot run a death test outside of a TEST or "
+                   "TEST_F construct");
+  }
+}
+
+// Creates and returns a death test by dispatching to the current
+// death test factory.
+bool DeathTest::Create(const char* statement, const RE* regex,
+                       const char* file, int line, DeathTest** test) {
+  return GetUnitTestImpl()->death_test_factory()->Create(
+      statement, regex, file, line, test);
+}
+
+const char* DeathTest::LastMessage() {
+  return last_death_test_message_.c_str();
+}
+
+void DeathTest::set_last_death_test_message(const String& message) {
+  last_death_test_message_ = message;
+}
+
+String DeathTest::last_death_test_message_;
+
+// Provides cross platform implementation for some death functionality.
+class DeathTestImpl : public DeathTest {
+ protected:
+  DeathTestImpl(const char* a_statement, const RE* a_regex)
+      : statement_(a_statement),
+        regex_(a_regex),
+        spawned_(false),
+        status_(-1),
+        outcome_(IN_PROGRESS),
+        read_fd_(-1),
+        write_fd_(-1) {}
+
+  // read_fd_ is expected to be closed and cleared by a derived class.
+  ~DeathTestImpl() { GTEST_DEATH_TEST_CHECK_(read_fd_ == -1); }
+
+  void Abort(AbortReason reason);
+  virtual bool Passed(bool status_ok);
+
+  const char* statement() const { return statement_; }
+  const RE* regex() const { return regex_; }
+  bool spawned() const { return spawned_; }
+  void set_spawned(bool is_spawned) { spawned_ = is_spawned; }
+  int status() const { return status_; }
+  void set_status(int a_status) { status_ = a_status; }
+  DeathTestOutcome outcome() const { return outcome_; }
+  void set_outcome(DeathTestOutcome an_outcome) { outcome_ = an_outcome; }
+  int read_fd() const { return read_fd_; }
+  void set_read_fd(int fd) { read_fd_ = fd; }
+  int write_fd() const { return write_fd_; }
+  void set_write_fd(int fd) { write_fd_ = fd; }
+
+  // Called in the parent process only. Reads the result code of the death
+  // test child process via a pipe, interprets it to set the outcome_
+  // member, and closes read_fd_.  Outputs diagnostics and terminates in
+  // case of unexpected codes.
+  void ReadAndInterpretStatusByte();
+
+ private:
+  // The textual content of the code this object is testing.  This class
+  // doesn't own this string and should not attempt to delete it.
+  const char* const statement_;
+  // The regular expression which test output must match.  DeathTestImpl
+  // doesn't own this object and should not attempt to delete it.
+  const RE* const regex_;
+  // True if the death test child process has been successfully spawned.
+  bool spawned_;
+  // The exit status of the child process.
+  int status_;
+  // How the death test concluded.
+  DeathTestOutcome outcome_;
+  // Descriptor to the read end of the pipe to the child process.  It is
+  // always -1 in the child process.  The child keeps its write end of the
+  // pipe in write_fd_.
+  int read_fd_;
+  // Descriptor to the child's write end of the pipe to the parent process.
+  // It is always -1 in the parent process.  The parent keeps its end of the
+  // pipe in read_fd_.
+  int write_fd_;
+};
+
+// Called in the parent process only. Reads the result code of the death
+// test child process via a pipe, interprets it to set the outcome_
+// member, and closes read_fd_.  Outputs diagnostics and terminates in
+// case of unexpected codes.
+void DeathTestImpl::ReadAndInterpretStatusByte() {
+  char flag;
+  int bytes_read;
+
+  // The read() here blocks until data is available (signifying the
+  // failure of the death test) or until the pipe is closed (signifying
+  // its success), so it's okay to call this in the parent before
+  // the child process has exited.
+  do {
+    bytes_read = posix::Read(read_fd(), &flag, 1);
+  } while (bytes_read == -1 && errno == EINTR);
+
+  if (bytes_read == 0) {
+    set_outcome(DIED);
+  } else if (bytes_read == 1) {
+    switch (flag) {
+      case kDeathTestReturned:
+        set_outcome(RETURNED);
+        break;
+      case kDeathTestThrew:
+        set_outcome(THREW);
+        break;
+      case kDeathTestLived:
+        set_outcome(LIVED);
+        break;
+      case kDeathTestInternalError:
+        FailFromInternalError(read_fd());  // Does not return.
+        break;
+      default:
+        GTEST_LOG_(FATAL) << "Death test child process reported "
+                          << "unexpected status byte ("
+                          << static_cast<unsigned int>(flag) << ")";
+    }
+  } else {
+    GTEST_LOG_(FATAL) << "Read from death test child process failed: "
+                      << GetLastErrnoDescription();
+  }
+  GTEST_DEATH_TEST_CHECK_SYSCALL_(posix::Close(read_fd()));
+  set_read_fd(-1);
+}
+
+// Signals that the death test code which should have exited, didn't.
+// Should be called only in a death test child process.
+// Writes a status byte to the child's status file descriptor, then
+// calls _exit(1).
+void DeathTestImpl::Abort(AbortReason reason) {
+  // The parent process considers the death test to be a failure if
+  // it finds any data in our pipe.  So, here we write a single flag byte
+  // to the pipe, then exit.
+  const char status_ch =
+      reason == TEST_DID_NOT_DIE ? kDeathTestLived :
+      reason == TEST_THREW_EXCEPTION ? kDeathTestThrew : kDeathTestReturned;
+
+  GTEST_DEATH_TEST_CHECK_SYSCALL_(posix::Write(write_fd(), &status_ch, 1));
+  // We are leaking the descriptor here because on some platforms (i.e.,
+  // when built as Windows DLL), destructors of global objects will still
+  // run after calling _exit(). On such systems, write_fd_ will be
+  // indirectly closed from the destructor of UnitTestImpl, causing double
+  // close if it is also closed here. On debug configurations, double close
+  // may assert. As there are no in-process buffers to flush here, we are
+  // relying on the OS to close the descriptor after the process terminates
+  // when the destructors are not run.
+  _exit(1);  // Exits w/o any normal exit hooks (we were supposed to crash)
+}
+
+// Returns an indented copy of stderr output for a death test.
+// This makes distinguishing death test output lines from regular log lines
+// much easier.
+static ::std::string FormatDeathTestOutput(const ::std::string& output) {
+  ::std::string ret;
+  for (size_t at = 0; ; ) {
+    const size_t line_end = output.find('\n', at);
+    ret += "[  DEATH   ] ";
+    if (line_end == ::std::string::npos) {
+      ret += output.substr(at);
+      break;
+    }
+    ret += output.substr(at, line_end + 1 - at);
+    at = line_end + 1;
+  }
+  return ret;
+}
+
+// Assesses the success or failure of a death test, using both private
+// members which have previously been set, and one argument:
+//
+// Private data members:
+//   outcome:  An enumeration describing how the death test
+//             concluded: DIED, LIVED, THREW, or RETURNED.  The death test
+//             fails in the latter three cases.
+//   status:   The exit status of the child process. On *nix, it is in the
+//             in the format specified by wait(2). On Windows, this is the
+//             value supplied to the ExitProcess() API or a numeric code
+//             of the exception that terminated the program.
+//   regex:    A regular expression object to be applied to
+//             the test's captured standard error output; the death test
+//             fails if it does not match.
+//
+// Argument:
+//   status_ok: true if exit_status is acceptable in the context of
+//              this particular death test, which fails if it is false
+//
+// Returns true iff all of the above conditions are met.  Otherwise, the
+// first failing condition, in the order given above, is the one that is
+// reported. Also sets the last death test message string.
+bool DeathTestImpl::Passed(bool status_ok) {
+  if (!spawned())
+    return false;
+
+  const String error_message = GetCapturedStderr();
+
+  bool success = false;
+  Message buffer;
+
+  buffer << "Death test: " << statement() << "\n";
+  switch (outcome()) {
+    case LIVED:
+      buffer << "    Result: failed to die.\n"
+             << " Error msg:\n" << FormatDeathTestOutput(error_message);
+      break;
+    case THREW:
+      buffer << "    Result: threw an exception.\n"
+             << " Error msg:\n" << FormatDeathTestOutput(error_message);
+      break;
+    case RETURNED:
+      buffer << "    Result: illegal return in test statement.\n"
+             << " Error msg:\n" << FormatDeathTestOutput(error_message);
+      break;
+    case DIED:
+      if (status_ok) {
+        const bool matched = RE::PartialMatch(error_message.c_str(), *regex());
+        if (matched) {
+          success = true;
+        } else {
+          buffer << "    Result: died but not with expected error.\n"
+                 << "  Expected: " << regex()->pattern() << "\n"
+                 << "Actual msg:\n" << FormatDeathTestOutput(error_message);
+        }
+      } else {
+        buffer << "    Result: died but not with expected exit code:\n"
+               << "            " << ExitSummary(status()) << "\n"
+               << "Actual msg:\n" << FormatDeathTestOutput(error_message);
+      }
+      break;
+    case IN_PROGRESS:
+    default:
+      GTEST_LOG_(FATAL)
+          << "DeathTest::Passed somehow called before conclusion of test";
+  }
+
+  DeathTest::set_last_death_test_message(buffer.GetString());
+  return success;
+}
+
+# if GTEST_OS_WINDOWS
+// WindowsDeathTest implements death tests on Windows. Due to the
+// specifics of starting new processes on Windows, death tests there are
+// always threadsafe, and Google Test considers the
+// --gtest_death_test_style=fast setting to be equivalent to
+// --gtest_death_test_style=threadsafe there.
+//
+// A few implementation notes:  Like the Linux version, the Windows
+// implementation uses pipes for child-to-parent communication. But due to
+// the specifics of pipes on Windows, some extra steps are required:
+//
+// 1. The parent creates a communication pipe and stores handles to both
+//    ends of it.
+// 2. The parent starts the child and provides it with the information
+//    necessary to acquire the handle to the write end of the pipe.
+// 3. The child acquires the write end of the pipe and signals the parent
+//    using a Windows event.
+// 4. Now the parent can release the write end of the pipe on its side. If
+//    this is done before step 3, the object's reference count goes down to
+//    0 and it is destroyed, preventing the child from acquiring it. The
+//    parent now has to release it, or read operations on the read end of
+//    the pipe will not return when the child terminates.
+// 5. The parent reads child's output through the pipe (outcome code and
+//    any possible error messages) from the pipe, and its stderr and then
+//    determines whether to fail the test.
+//
+// Note: to distinguish Win32 API calls from the local method and function
+// calls, the former are explicitly resolved in the global namespace.
+//
+class WindowsDeathTest : public DeathTestImpl {
+ public:
+  WindowsDeathTest(const char* a_statement,
+                   const RE* a_regex,
+                   const char* file,
+                   int line)
+      : DeathTestImpl(a_statement, a_regex), file_(file), line_(line) {}
+
+  // All of these virtual functions are inherited from DeathTest.
+  virtual int Wait();
+  virtual TestRole AssumeRole();
+
+ private:
+  // The name of the file in which the death test is located.
+  const char* const file_;
+  // The line number on which the death test is located.
+  const int line_;
+  // Handle to the write end of the pipe to the child process.
+  AutoHandle write_handle_;
+  // Child process handle.
+  AutoHandle child_handle_;
+  // Event the child process uses to signal the parent that it has
+  // acquired the handle to the write end of the pipe. After seeing this
+  // event the parent can release its own handles to make sure its
+  // ReadFile() calls return when the child terminates.
+  AutoHandle event_handle_;
+};
+
+// Waits for the child in a death test to exit, returning its exit
+// status, or 0 if no child process exists.  As a side effect, sets the
+// outcome data member.
+int WindowsDeathTest::Wait() {
+  if (!spawned())
+    return 0;
+
+  // Wait until the child either signals that it has acquired the write end
+  // of the pipe or it dies.
+  const HANDLE wait_handles[2] = { child_handle_.Get(), event_handle_.Get() };
+  switch (::WaitForMultipleObjects(2,
+                                   wait_handles,
+                                   FALSE,  // Waits for any of the handles.
+                                   INFINITE)) {
+    case WAIT_OBJECT_0:
+    case WAIT_OBJECT_0 + 1:
+      break;
+    default:
+      GTEST_DEATH_TEST_CHECK_(false);  // Should not get here.
+  }
+
+  // The child has acquired the write end of the pipe or exited.
+  // We release the handle on our side and continue.
+  write_handle_.Reset();
+  event_handle_.Reset();
+
+  ReadAndInterpretStatusByte();
+
+  // Waits for the child process to exit if it haven't already. This
+  // returns immediately if the child has already exited, regardless of
+  // whether previous calls to WaitForMultipleObjects synchronized on this
+  // handle or not.
+  GTEST_DEATH_TEST_CHECK_(
+      WAIT_OBJECT_0 == ::WaitForSingleObject(child_handle_.Get(),
+                                             INFINITE));
+  DWORD status_code;
+  GTEST_DEATH_TEST_CHECK_(
+      ::GetExitCodeProcess(child_handle_.Get(), &status_code) != FALSE);
+  child_handle_.Reset();
+  set_status(static_cast<int>(status_code));
+  return status();
+}
+
+// The AssumeRole process for a Windows death test.  It creates a child
+// process with the same executable as the current process to run the
+// death test.  The child process is given the --gtest_filter and
+// --gtest_internal_run_death_test flags such that it knows to run the
+// current death test only.
+DeathTest::TestRole WindowsDeathTest::AssumeRole() {
+  const UnitTestImpl* const impl = GetUnitTestImpl();
+  const InternalRunDeathTestFlag* const flag =
+      impl->internal_run_death_test_flag();
+  const TestInfo* const info = impl->current_test_info();
+  const int death_test_index = info->result()->death_test_count();
+
+  if (flag != NULL) {
+    // ParseInternalRunDeathTestFlag() has performed all the necessary
+    // processing.
+    set_write_fd(flag->write_fd());
+    return EXECUTE_TEST;
+  }
+
+  // WindowsDeathTest uses an anonymous pipe to communicate results of
+  // a death test.
+  SECURITY_ATTRIBUTES handles_are_inheritable = {
+    sizeof(SECURITY_ATTRIBUTES), NULL, TRUE };
+  HANDLE read_handle, write_handle;
+  GTEST_DEATH_TEST_CHECK_(
+      ::CreatePipe(&read_handle, &write_handle, &handles_are_inheritable,
+                   0)  // Default buffer size.
+      != FALSE);
+  set_read_fd(::_open_osfhandle(reinterpret_cast<intptr_t>(read_handle),
+                                O_RDONLY));
+  write_handle_.Reset(write_handle);
+  event_handle_.Reset(::CreateEvent(
+      &handles_are_inheritable,
+      TRUE,    // The event will automatically reset to non-signaled state.
+      FALSE,   // The initial state is non-signalled.
+      NULL));  // The even is unnamed.
+  GTEST_DEATH_TEST_CHECK_(event_handle_.Get() != NULL);
+  const String filter_flag = String::Format("--%s%s=%s.%s",
+                                            GTEST_FLAG_PREFIX_, kFilterFlag,
+                                            info->test_case_name(),
+                                            info->name());
+  const String internal_flag = String::Format(
+    "--%s%s=%s|%d|%d|%u|%Iu|%Iu",
+      GTEST_FLAG_PREFIX_,
+      kInternalRunDeathTestFlag,
+      file_, line_,
+      death_test_index,
+      static_cast<unsigned int>(::GetCurrentProcessId()),
+      // size_t has the same with as pointers on both 32-bit and 64-bit
+      // Windows platforms.
+      // See http://msdn.microsoft.com/en-us/library/tcxf1dw6.aspx.
+      reinterpret_cast<size_t>(write_handle),
+      reinterpret_cast<size_t>(event_handle_.Get()));
+
+  char executable_path[_MAX_PATH + 1];  // NOLINT
+  GTEST_DEATH_TEST_CHECK_(
+      _MAX_PATH + 1 != ::GetModuleFileNameA(NULL,
+                                            executable_path,
+                                            _MAX_PATH));
+
+  String command_line = String::Format("%s %s \"%s\"",
+                                       ::GetCommandLineA(),
+                                       filter_flag.c_str(),
+                                       internal_flag.c_str());
+
+  DeathTest::set_last_death_test_message("");
+
+  CaptureStderr();
+  // Flush the log buffers since the log streams are shared with the child.
+  FlushInfoLog();
+
+  // The child process will share the standard handles with the parent.
+  STARTUPINFOA startup_info;
+  memset(&startup_info, 0, sizeof(STARTUPINFO));
+  startup_info.dwFlags = STARTF_USESTDHANDLES;
+  startup_info.hStdInput = ::GetStdHandle(STD_INPUT_HANDLE);
+  startup_info.hStdOutput = ::GetStdHandle(STD_OUTPUT_HANDLE);
+  startup_info.hStdError = ::GetStdHandle(STD_ERROR_HANDLE);
+
+  PROCESS_INFORMATION process_info;
+  GTEST_DEATH_TEST_CHECK_(::CreateProcessA(
+      executable_path,
+      const_cast<char*>(command_line.c_str()),
+      NULL,   // Retuned process handle is not inheritable.
+      NULL,   // Retuned thread handle is not inheritable.
+      TRUE,   // Child inherits all inheritable handles (for write_handle_).
+      0x0,    // Default creation flags.
+      NULL,   // Inherit the parent's environment.
+      UnitTest::GetInstance()->original_working_dir(),
+      &startup_info,
+      &process_info) != FALSE);
+  child_handle_.Reset(process_info.hProcess);
+  ::CloseHandle(process_info.hThread);
+  set_spawned(true);
+  return OVERSEE_TEST;
+}
+# else  // We are not on Windows.
+
+// ForkingDeathTest provides implementations for most of the abstract
+// methods of the DeathTest interface.  Only the AssumeRole method is
+// left undefined.
+class ForkingDeathTest : public DeathTestImpl {
+ public:
+  ForkingDeathTest(const char* statement, const RE* regex);
+
+  // All of these virtual functions are inherited from DeathTest.
+  virtual int Wait();
+
+ protected:
+  void set_child_pid(pid_t child_pid) { child_pid_ = child_pid; }
+
+ private:
+  // PID of child process during death test; 0 in the child process itself.
+  pid_t child_pid_;
+};
+
+// Constructs a ForkingDeathTest.
+ForkingDeathTest::ForkingDeathTest(const char* a_statement, const RE* a_regex)
+    : DeathTestImpl(a_statement, a_regex),
+      child_pid_(-1) {}
+
+// Waits for the child in a death test to exit, returning its exit
+// status, or 0 if no child process exists.  As a side effect, sets the
+// outcome data member.
+int ForkingDeathTest::Wait() {
+  if (!spawned())
+    return 0;
+
+  ReadAndInterpretStatusByte();
+
+  int status_value;
+  GTEST_DEATH_TEST_CHECK_SYSCALL_(waitpid(child_pid_, &status_value, 0));
+  set_status(status_value);
+  return status_value;
+}
+
+// A concrete death test class that forks, then immediately runs the test
+// in the child process.
+class NoExecDeathTest : public ForkingDeathTest {
+ public:
+  NoExecDeathTest(const char* a_statement, const RE* a_regex) :
+      ForkingDeathTest(a_statement, a_regex) { }
+  virtual TestRole AssumeRole();
+};
+
+// The AssumeRole process for a fork-and-run death test.  It implements a
+// straightforward fork, with a simple pipe to transmit the status byte.
+DeathTest::TestRole NoExecDeathTest::AssumeRole() {
+  const size_t thread_count = GetThreadCount();
+  if (thread_count != 1) {
+    GTEST_LOG_(WARNING) << DeathTestThreadWarning(thread_count);
+  }
+
+  int pipe_fd[2];
+  GTEST_DEATH_TEST_CHECK_(pipe(pipe_fd) != -1);
+
+  DeathTest::set_last_death_test_message("");
+  CaptureStderr();
+  // When we fork the process below, the log file buffers are copied, but the
+  // file descriptors are shared.  We flush all log files here so that closing
+  // the file descriptors in the child process doesn't throw off the
+  // synchronization between descriptors and buffers in the parent process.
+  // This is as close to the fork as possible to avoid a race condition in case
+  // there are multiple threads running before the death test, and another
+  // thread writes to the log file.
+  FlushInfoLog();
+
+  const pid_t child_pid = fork();
+  GTEST_DEATH_TEST_CHECK_(child_pid != -1);
+  set_child_pid(child_pid);
+  if (child_pid == 0) {
+    GTEST_DEATH_TEST_CHECK_SYSCALL_(close(pipe_fd[0]));
+    set_write_fd(pipe_fd[1]);
+    // Redirects all logging to stderr in the child process to prevent
+    // concurrent writes to the log files.  We capture stderr in the parent
+    // process and append the child process' output to a log.
+    LogToStderr();
+    // Event forwarding to the listeners of event listener API mush be shut
+    // down in death test subprocesses.
+    GetUnitTestImpl()->listeners()->SuppressEventForwarding();
+    g_in_fast_death_test_child = true;
+    return EXECUTE_TEST;
+  } else {
+    GTEST_DEATH_TEST_CHECK_SYSCALL_(close(pipe_fd[1]));
+    set_read_fd(pipe_fd[0]);
+    set_spawned(true);
+    return OVERSEE_TEST;
+  }
+}
+
+// A concrete death test class that forks and re-executes the main
+// program from the beginning, with command-line flags set that cause
+// only this specific death test to be run.
+class ExecDeathTest : public ForkingDeathTest {
+ public:
+  ExecDeathTest(const char* a_statement, const RE* a_regex,
+                const char* file, int line) :
+      ForkingDeathTest(a_statement, a_regex), file_(file), line_(line) { }
+  virtual TestRole AssumeRole();
+ private:
+  static ::std::vector<testing::internal::string>
+  GetArgvsForDeathTestChildProcess() {
+    ::std::vector<testing::internal::string> args = GetInjectableArgvs();
+    return args;
+  }
+  // The name of the file in which the death test is located.
+  const char* const file_;
+  // The line number on which the death test is located.
+  const int line_;
+};
+
+// Utility class for accumulating command-line arguments.
+class Arguments {
+ public:
+  Arguments() {
+    args_.push_back(NULL);
+  }
+
+  ~Arguments() {
+    for (std::vector<char*>::iterator i = args_.begin(); i != args_.end();
+         ++i) {
+      free(*i);
+    }
+  }
+  void AddArgument(const char* argument) {
+    args_.insert(args_.end() - 1, posix::StrDup(argument));
+  }
+
+  template <typename Str>
+  void AddArguments(const ::std::vector<Str>& arguments) {
+    for (typename ::std::vector<Str>::const_iterator i = arguments.begin();
+         i != arguments.end();
+         ++i) {
+      args_.insert(args_.end() - 1, posix::StrDup(i->c_str()));
+    }
+  }
+  char* const* Argv() {
+    return &args_[0];
+  }
+
+ private:
+  std::vector<char*> args_;
+};
+
+// A struct that encompasses the arguments to the child process of a
+// threadsafe-style death test process.
+struct ExecDeathTestArgs {
+  char* const* argv;  // Command-line arguments for the child's call to exec
+  int close_fd;       // File descriptor to close; the read end of a pipe
+};
+
+#  if GTEST_OS_MAC
+inline char** GetEnviron() {
+  // When Google Test is built as a framework on MacOS X, the environ variable
+  // is unavailable. Apple's documentation (man environ) recommends using
+  // _NSGetEnviron() instead.
+  return *_NSGetEnviron();
+}
+#  else
+// Some POSIX platforms expect you to declare environ. extern "C" makes
+// it reside in the global namespace.
+extern "C" char** environ;
+inline char** GetEnviron() { return environ; }
+#  endif  // GTEST_OS_MAC
+
+#  if !GTEST_OS_QNX
+// The main function for a threadsafe-style death test child process.
+// This function is called in a clone()-ed process and thus must avoid
+// any potentially unsafe operations like malloc or libc functions.
+static int ExecDeathTestChildMain(void* child_arg) {
+  ExecDeathTestArgs* const args = static_cast<ExecDeathTestArgs*>(child_arg);
+  GTEST_DEATH_TEST_CHECK_SYSCALL_(close(args->close_fd));
+
+  // We need to execute the test program in the same environment where
+  // it was originally invoked.  Therefore we change to the original
+  // working directory first.
+  const char* const original_dir =
+      UnitTest::GetInstance()->original_working_dir();
+  // We can safely call chdir() as it's a direct system call.
+  if (chdir(original_dir) != 0) {
+    DeathTestAbort(String::Format("chdir(\"%s\") failed: %s",
+                                  original_dir,
+                                  GetLastErrnoDescription().c_str()));
+    return EXIT_FAILURE;
+  }
+
+  // We can safely call execve() as it's a direct system call.  We
+  // cannot use execvp() as it's a libc function and thus potentially
+  // unsafe.  Since execve() doesn't search the PATH, the user must
+  // invoke the test program via a valid path that contains at least
+  // one path separator.
+  execve(args->argv[0], args->argv, GetEnviron());
+  DeathTestAbort(String::Format("execve(%s, ...) in %s failed: %s",
+                                args->argv[0],
+                                original_dir,
+                                GetLastErrnoDescription().c_str()));
+  return EXIT_FAILURE;
+}
+#  endif  // !GTEST_OS_QNX
+
+// Two utility routines that together determine the direction the stack
+// grows.
+// This could be accomplished more elegantly by a single recursive
+// function, but we want to guard against the unlikely possibility of
+// a smart compiler optimizing the recursion away.
+//
+// GTEST_NO_INLINE_ is required to prevent GCC 4.6 from inlining
+// StackLowerThanAddress into StackGrowsDown, which then doesn't give
+// correct answer.
+void StackLowerThanAddress(const void* ptr, bool* result) GTEST_NO_INLINE_;
+void StackLowerThanAddress(const void* ptr, bool* result) {
+  int dummy;
+  *result = (&dummy < ptr);
+}
+
+bool StackGrowsDown() {
+  int dummy;
+  bool result;
+  StackLowerThanAddress(&dummy, &result);
+  return result;
+}
+
+// Spawns a child process with the same executable as the current process in
+// a thread-safe manner and instructs it to run the death test.  The
+// implementation uses fork(2) + exec.  On systems where clone(2) is
+// available, it is used instead, being slightly more thread-safe.  On QNX,
+// fork supports only single-threaded environments, so this function uses
+// spawn(2) there instead.  The function dies with an error message if
+// anything goes wrong.
+static pid_t ExecDeathTestSpawnChild(char* const* argv, int close_fd) {
+  ExecDeathTestArgs args = { argv, close_fd };
+  pid_t child_pid = -1;
+
+#  if GTEST_OS_QNX
+  // Obtains the current directory and sets it to be closed in the child
+  // process.
+  const int cwd_fd = open(".", O_RDONLY);
+  GTEST_DEATH_TEST_CHECK_(cwd_fd != -1);
+  GTEST_DEATH_TEST_CHECK_SYSCALL_(fcntl(cwd_fd, F_SETFD, FD_CLOEXEC));
+  // We need to execute the test program in the same environment where
+  // it was originally invoked.  Therefore we change to the original
+  // working directory first.
+  const char* const original_dir =
+      UnitTest::GetInstance()->original_working_dir();
+  // We can safely call chdir() as it's a direct system call.
+  if (chdir(original_dir) != 0) {
+    DeathTestAbort(String::Format("chdir(\"%s\") failed: %s",
+                                  original_dir,
+                                  GetLastErrnoDescription().c_str()));
+    return EXIT_FAILURE;
+  }
+
+  int fd_flags;
+  // Set close_fd to be closed after spawn.
+  GTEST_DEATH_TEST_CHECK_SYSCALL_(fd_flags = fcntl(close_fd, F_GETFD));
+  GTEST_DEATH_TEST_CHECK_SYSCALL_(fcntl(close_fd, F_SETFD,
+                                        fd_flags | FD_CLOEXEC));
+  struct inheritance inherit = {0};
+  // spawn is a system call.
+  child_pid = spawn(args.argv[0], 0, NULL, &inherit, args.argv, GetEnviron());
+  // Restores the current working directory.
+  GTEST_DEATH_TEST_CHECK_(fchdir(cwd_fd) != -1);
+  GTEST_DEATH_TEST_CHECK_SYSCALL_(close(cwd_fd));
+
+#  else   // GTEST_OS_QNX
+#   if GTEST_OS_LINUX
+  // When a SIGPROF signal is received while fork() or clone() are executing,
+  // the process may hang. To avoid this, we ignore SIGPROF here and re-enable
+  // it after the call to fork()/clone() is complete.
+  struct sigaction saved_sigprof_action;
+  struct sigaction ignore_sigprof_action;
+  memset(&ignore_sigprof_action, 0, sizeof(ignore_sigprof_action));
+  sigemptyset(&ignore_sigprof_action.sa_mask);
+  ignore_sigprof_action.sa_handler = SIG_IGN;
+  GTEST_DEATH_TEST_CHECK_SYSCALL_(sigaction(
+      SIGPROF, &ignore_sigprof_action, &saved_sigprof_action));
+#   endif  // GTEST_OS_LINUX
+
+#   if GTEST_HAS_CLONE
+  const bool use_fork = GTEST_FLAG(death_test_use_fork);
+
+  if (!use_fork) {
+    static const bool stack_grows_down = StackGrowsDown();
+    const size_t stack_size = getpagesize();
+    // MMAP_ANONYMOUS is not defined on Mac, so we use MAP_ANON instead.
+    void* const stack = mmap(NULL, stack_size, PROT_READ | PROT_WRITE,
+                             MAP_ANON | MAP_PRIVATE, -1, 0);
+    GTEST_DEATH_TEST_CHECK_(stack != MAP_FAILED);
+    void* const stack_top =
+        static_cast<char*>(stack) + (stack_grows_down ? stack_size : 0);
+
+    child_pid = clone(&ExecDeathTestChildMain, stack_top, SIGCHLD, &args);
+
+    GTEST_DEATH_TEST_CHECK_(munmap(stack, stack_size) != -1);
+  }
+#   else
+  const bool use_fork = true;
+#   endif  // GTEST_HAS_CLONE
+
+  if (use_fork && (child_pid = fork()) == 0) {
+      ExecDeathTestChildMain(&args);
+      _exit(0);
+  }
+#  endif  // GTEST_OS_QNX
+#  if GTEST_OS_LINUX
+  GTEST_DEATH_TEST_CHECK_SYSCALL_(
+      sigaction(SIGPROF, &saved_sigprof_action, NULL));
+#  endif  // GTEST_OS_LINUX
+
+  GTEST_DEATH_TEST_CHECK_(child_pid != -1);
+  return child_pid;
+}
+
+// The AssumeRole process for a fork-and-exec death test.  It re-executes the
+// main program from the beginning, setting the --gtest_filter
+// and --gtest_internal_run_death_test flags to cause only the current
+// death test to be re-run.
+DeathTest::TestRole ExecDeathTest::AssumeRole() {
+  const UnitTestImpl* const impl = GetUnitTestImpl();
+  const InternalRunDeathTestFlag* const flag =
+      impl->internal_run_death_test_flag();
+  const TestInfo* const info = impl->current_test_info();
+  const int death_test_index = info->result()->death_test_count();
+
+  if (flag != NULL) {
+    set_write_fd(flag->write_fd());
+    return EXECUTE_TEST;
+  }
+
+  int pipe_fd[2];
+  GTEST_DEATH_TEST_CHECK_(pipe(pipe_fd) != -1);
+  // Clear the close-on-exec flag on the write end of the pipe, lest
+  // it be closed when the child process does an exec:
+  GTEST_DEATH_TEST_CHECK_(fcntl(pipe_fd[1], F_SETFD, 0) != -1);
+
+  const String filter_flag =
+      String::Format("--%s%s=%s.%s",
+                     GTEST_FLAG_PREFIX_, kFilterFlag,
+                     info->test_case_name(), info->name());
+  const String internal_flag =
+      String::Format("--%s%s=%s|%d|%d|%d",
+                     GTEST_FLAG_PREFIX_, kInternalRunDeathTestFlag,
+                     file_, line_, death_test_index, pipe_fd[1]);
+  Arguments args;
+  args.AddArguments(GetArgvsForDeathTestChildProcess());
+  args.AddArgument(filter_flag.c_str());
+  args.AddArgument(internal_flag.c_str());
+
+  DeathTest::set_last_death_test_message("");
+
+  CaptureStderr();
+  // See the comment in NoExecDeathTest::AssumeRole for why the next line
+  // is necessary.
+  FlushInfoLog();
+
+  const pid_t child_pid = ExecDeathTestSpawnChild(args.Argv(), pipe_fd[0]);
+  GTEST_DEATH_TEST_CHECK_SYSCALL_(close(pipe_fd[1]));
+  set_child_pid(child_pid);
+  set_read_fd(pipe_fd[0]);
+  set_spawned(true);
+  return OVERSEE_TEST;
+}
+
+# endif  // !GTEST_OS_WINDOWS
+
+// Creates a concrete DeathTest-derived class that depends on the
+// --gtest_death_test_style flag, and sets the pointer pointed to
+// by the "test" argument to its address.  If the test should be
+// skipped, sets that pointer to NULL.  Returns true, unless the
+// flag is set to an invalid value.
+bool DefaultDeathTestFactory::Create(const char* statement, const RE* regex,
+                                     const char* file, int line,
+                                     DeathTest** test) {
+  UnitTestImpl* const impl = GetUnitTestImpl();
+  const InternalRunDeathTestFlag* const flag =
+      impl->internal_run_death_test_flag();
+  const int death_test_index = impl->current_test_info()
+      ->increment_death_test_count();
+
+  if (flag != NULL) {
+    if (death_test_index > flag->index()) {
+      DeathTest::set_last_death_test_message(String::Format(
+          "Death test count (%d) somehow exceeded expected maximum (%d)",
+          death_test_index, flag->index()));
+      return false;
+    }
+
+    if (!(flag->file() == file && flag->line() == line &&
+          flag->index() == death_test_index)) {
+      *test = NULL;
+      return true;
+    }
+  }
+
+# if GTEST_OS_WINDOWS
+
+  if (GTEST_FLAG(death_test_style) == "threadsafe" ||
+      GTEST_FLAG(death_test_style) == "fast") {
+    *test = new WindowsDeathTest(statement, regex, file, line);
+  }
+
+# else
+
+  if (GTEST_FLAG(death_test_style) == "threadsafe") {
+    *test = new ExecDeathTest(statement, regex, file, line);
+  } else if (GTEST_FLAG(death_test_style) == "fast") {
+    *test = new NoExecDeathTest(statement, regex);
+  }
+
+# endif  // GTEST_OS_WINDOWS
+
+  else {  // NOLINT - this is more readable than unbalanced brackets inside #if.
+    DeathTest::set_last_death_test_message(String::Format(
+        "Unknown death test style \"%s\" encountered",
+        GTEST_FLAG(death_test_style).c_str()));
+    return false;
+  }
+
+  return true;
+}
+
+// Splits a given string on a given delimiter, populating a given
+// vector with the fields.  GTEST_HAS_DEATH_TEST implies that we have
+// ::std::string, so we can use it here.
+static void SplitString(const ::std::string& str, char delimiter,
+                        ::std::vector< ::std::string>* dest) {
+  ::std::vector< ::std::string> parsed;
+  ::std::string::size_type pos = 0;
+  while (::testing::internal::AlwaysTrue()) {
+    const ::std::string::size_type colon = str.find(delimiter, pos);
+    if (colon == ::std::string::npos) {
+      parsed.push_back(str.substr(pos));
+      break;
+    } else {
+      parsed.push_back(str.substr(pos, colon - pos));
+      pos = colon + 1;
+    }
+  }
+  dest->swap(parsed);
+}
+
+# if GTEST_OS_WINDOWS
+// Recreates the pipe and event handles from the provided parameters,
+// signals the event, and returns a file descriptor wrapped around the pipe
+// handle. This function is called in the child process only.
+int GetStatusFileDescriptor(unsigned int parent_process_id,
+                            size_t write_handle_as_size_t,
+                            size_t event_handle_as_size_t) {
+  AutoHandle parent_process_handle(::OpenProcess(PROCESS_DUP_HANDLE,
+                                                   FALSE,  // Non-inheritable.
+                                                   parent_process_id));
+  if (parent_process_handle.Get() == INVALID_HANDLE_VALUE) {
+    DeathTestAbort(String::Format("Unable to open parent process %u",
+                                  parent_process_id));
+  }
+
+  // TODO(vladl@google.com): Replace the following check with a
+  // compile-time assertion when available.
+  GTEST_CHECK_(sizeof(HANDLE) <= sizeof(size_t));
+
+  const HANDLE write_handle =
+      reinterpret_cast<HANDLE>(write_handle_as_size_t);
+  HANDLE dup_write_handle;
+
+  // The newly initialized handle is accessible only in in the parent
+  // process. To obtain one accessible within the child, we need to use
+  // DuplicateHandle.
+  if (!::DuplicateHandle(parent_process_handle.Get(), write_handle,
+                         ::GetCurrentProcess(), &dup_write_handle,
+                         0x0,    // Requested privileges ignored since
+                                 // DUPLICATE_SAME_ACCESS is used.
+                         FALSE,  // Request non-inheritable handler.
+                         DUPLICATE_SAME_ACCESS)) {
+    DeathTestAbort(String::Format(
+        "Unable to duplicate the pipe handle %Iu from the parent process %u",
+        write_handle_as_size_t, parent_process_id));
+  }
+
+  const HANDLE event_handle = reinterpret_cast<HANDLE>(event_handle_as_size_t);
+  HANDLE dup_event_handle;
+
+  if (!::DuplicateHandle(parent_process_handle.Get(), event_handle,
+                         ::GetCurrentProcess(), &dup_event_handle,
+                         0x0,
+                         FALSE,
+                         DUPLICATE_SAME_ACCESS)) {
+    DeathTestAbort(String::Format(
+        "Unable to duplicate the event handle %Iu from the parent process %u",
+        event_handle_as_size_t, parent_process_id));
+  }
+
+  const int write_fd =
+      ::_open_osfhandle(reinterpret_cast<intptr_t>(dup_write_handle), O_APPEND);
+  if (write_fd == -1) {
+    DeathTestAbort(String::Format(
+        "Unable to convert pipe handle %Iu to a file descriptor",
+        write_handle_as_size_t));
+  }
+
+  // Signals the parent that the write end of the pipe has been acquired
+  // so the parent can release its own write end.
+  ::SetEvent(dup_event_handle);
+
+  return write_fd;
+}
+# endif  // GTEST_OS_WINDOWS
+
+// Returns a newly created InternalRunDeathTestFlag object with fields
+// initialized from the GTEST_FLAG(internal_run_death_test) flag if
+// the flag is specified; otherwise returns NULL.
+InternalRunDeathTestFlag* ParseInternalRunDeathTestFlag() {
+  if (GTEST_FLAG(internal_run_death_test) == "") return NULL;
+
+  // GTEST_HAS_DEATH_TEST implies that we have ::std::string, so we
+  // can use it here.
+  int line = -1;
+  int index = -1;
+  ::std::vector< ::std::string> fields;
+  SplitString(GTEST_FLAG(internal_run_death_test).c_str(), '|', &fields);
+  int write_fd = -1;
+
+# if GTEST_OS_WINDOWS
+
+  unsigned int parent_process_id = 0;
+  size_t write_handle_as_size_t = 0;
+  size_t event_handle_as_size_t = 0;
+
+  if (fields.size() != 6
+      || !ParseNaturalNumber(fields[1], &line)
+      || !ParseNaturalNumber(fields[2], &index)
+      || !ParseNaturalNumber(fields[3], &parent_process_id)
+      || !ParseNaturalNumber(fields[4], &write_handle_as_size_t)
+      || !ParseNaturalNumber(fields[5], &event_handle_as_size_t)) {
+    DeathTestAbort(String::Format(
+        "Bad --gtest_internal_run_death_test flag: %s",
+        GTEST_FLAG(internal_run_death_test).c_str()));
+  }
+  write_fd = GetStatusFileDescriptor(parent_process_id,
+                                     write_handle_as_size_t,
+                                     event_handle_as_size_t);
+# else
+
+  if (fields.size() != 4
+      || !ParseNaturalNumber(fields[1], &line)
+      || !ParseNaturalNumber(fields[2], &index)
+      || !ParseNaturalNumber(fields[3], &write_fd)) {
+    DeathTestAbort(String::Format(
+        "Bad --gtest_internal_run_death_test flag: %s",
+        GTEST_FLAG(internal_run_death_test).c_str()));
+  }
+
+# endif  // GTEST_OS_WINDOWS
+
+  return new InternalRunDeathTestFlag(fields[0], line, index, write_fd);
+}
+
+}  // namespace internal
+
+#endif  // GTEST_HAS_DEATH_TEST
+
+}  // namespace testing
diff --git a/google-breakpad/src/testing/gtest/src/gtest-filepath.cc b/google-breakpad/src/testing/gtest/src/gtest-filepath.cc
new file mode 100644
index 0000000..91b2571
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/src/gtest-filepath.cc
@@ -0,0 +1,380 @@
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Authors: keith.ray@gmail.com (Keith Ray)
+
+#include "gtest/internal/gtest-filepath.h"
+#include "gtest/internal/gtest-port.h"
+
+#include <stdlib.h>
+
+#if GTEST_OS_WINDOWS_MOBILE
+# include <windows.h>
+#elif GTEST_OS_WINDOWS
+# include <direct.h>
+# include <io.h>
+#elif GTEST_OS_SYMBIAN || GTEST_OS_NACL
+// Symbian OpenC and NaCl have PATH_MAX in sys/syslimits.h
+# include <sys/syslimits.h>
+#else
+# include <limits.h>
+# include <climits>  // Some Linux distributions define PATH_MAX here.
+#endif  // GTEST_OS_WINDOWS_MOBILE
+
+#if GTEST_OS_WINDOWS
+# define GTEST_PATH_MAX_ _MAX_PATH
+#elif defined(PATH_MAX)
+# define GTEST_PATH_MAX_ PATH_MAX
+#elif defined(_XOPEN_PATH_MAX)
+# define GTEST_PATH_MAX_ _XOPEN_PATH_MAX
+#else
+# define GTEST_PATH_MAX_ _POSIX_PATH_MAX
+#endif  // GTEST_OS_WINDOWS
+
+#include "gtest/internal/gtest-string.h"
+
+namespace testing {
+namespace internal {
+
+#if GTEST_OS_WINDOWS
+// On Windows, '\\' is the standard path separator, but many tools and the
+// Windows API also accept '/' as an alternate path separator. Unless otherwise
+// noted, a file path can contain either kind of path separators, or a mixture
+// of them.
+const char kPathSeparator = '\\';
+const char kAlternatePathSeparator = '/';
+const char kPathSeparatorString[] = "\\";
+const char kAlternatePathSeparatorString[] = "/";
+# if GTEST_OS_WINDOWS_MOBILE
+// Windows CE doesn't have a current directory. You should not use
+// the current directory in tests on Windows CE, but this at least
+// provides a reasonable fallback.
+const char kCurrentDirectoryString[] = "\\";
+// Windows CE doesn't define INVALID_FILE_ATTRIBUTES
+const DWORD kInvalidFileAttributes = 0xffffffff;
+# else
+const char kCurrentDirectoryString[] = ".\\";
+# endif  // GTEST_OS_WINDOWS_MOBILE
+#else
+const char kPathSeparator = '/';
+const char kPathSeparatorString[] = "/";
+const char kCurrentDirectoryString[] = "./";
+#endif  // GTEST_OS_WINDOWS
+
+// Returns whether the given character is a valid path separator.
+static bool IsPathSeparator(char c) {
+#if GTEST_HAS_ALT_PATH_SEP_
+  return (c == kPathSeparator) || (c == kAlternatePathSeparator);
+#else
+  return c == kPathSeparator;
+#endif
+}
+
+// Returns the current working directory, or "" if unsuccessful.
+FilePath FilePath::GetCurrentDir() {
+#if GTEST_OS_WINDOWS_MOBILE
+  // Windows CE doesn't have a current directory, so we just return
+  // something reasonable.
+  return FilePath(kCurrentDirectoryString);
+#elif GTEST_OS_WINDOWS
+  char cwd[GTEST_PATH_MAX_ + 1] = { '\0' };
+  return FilePath(_getcwd(cwd, sizeof(cwd)) == NULL ? "" : cwd);
+#else
+  char cwd[GTEST_PATH_MAX_ + 1] = { '\0' };
+  return FilePath(getcwd(cwd, sizeof(cwd)) == NULL ? "" : cwd);
+#endif  // GTEST_OS_WINDOWS_MOBILE
+}
+
+// Returns a copy of the FilePath with the case-insensitive extension removed.
+// Example: FilePath("dir/file.exe").RemoveExtension("EXE") returns
+// FilePath("dir/file"). If a case-insensitive extension is not
+// found, returns a copy of the original FilePath.
+FilePath FilePath::RemoveExtension(const char* extension) const {
+  String dot_extension(String::Format(".%s", extension));
+  if (pathname_.EndsWithCaseInsensitive(dot_extension.c_str())) {
+    return FilePath(String(pathname_.c_str(), pathname_.length() - 4));
+  }
+  return *this;
+}
+
+// Returns a pointer to the last occurence of a valid path separator in
+// the FilePath. On Windows, for example, both '/' and '\' are valid path
+// separators. Returns NULL if no path separator was found.
+const char* FilePath::FindLastPathSeparator() const {
+  const char* const last_sep = strrchr(c_str(), kPathSeparator);
+#if GTEST_HAS_ALT_PATH_SEP_
+  const char* const last_alt_sep = strrchr(c_str(), kAlternatePathSeparator);
+  // Comparing two pointers of which only one is NULL is undefined.
+  if (last_alt_sep != NULL &&
+      (last_sep == NULL || last_alt_sep > last_sep)) {
+    return last_alt_sep;
+  }
+#endif
+  return last_sep;
+}
+
+// Returns a copy of the FilePath with the directory part removed.
+// Example: FilePath("path/to/file").RemoveDirectoryName() returns
+// FilePath("file"). If there is no directory part ("just_a_file"), it returns
+// the FilePath unmodified. If there is no file part ("just_a_dir/") it
+// returns an empty FilePath ("").
+// On Windows platform, '\' is the path separator, otherwise it is '/'.
+FilePath FilePath::RemoveDirectoryName() const {
+  const char* const last_sep = FindLastPathSeparator();
+  return last_sep ? FilePath(String(last_sep + 1)) : *this;
+}
+
+// RemoveFileName returns the directory path with the filename removed.
+// Example: FilePath("path/to/file").RemoveFileName() returns "path/to/".
+// If the FilePath is "a_file" or "/a_file", RemoveFileName returns
+// FilePath("./") or, on Windows, FilePath(".\\"). If the filepath does
+// not have a file, like "just/a/dir/", it returns the FilePath unmodified.
+// On Windows platform, '\' is the path separator, otherwise it is '/'.
+FilePath FilePath::RemoveFileName() const {
+  const char* const last_sep = FindLastPathSeparator();
+  String dir;
+  if (last_sep) {
+    dir = String(c_str(), last_sep + 1 - c_str());
+  } else {
+    dir = kCurrentDirectoryString;
+  }
+  return FilePath(dir);
+}
+
+// Helper functions for naming files in a directory for xml output.
+
+// Given directory = "dir", base_name = "test", number = 0,
+// extension = "xml", returns "dir/test.xml". If number is greater
+// than zero (e.g., 12), returns "dir/test_12.xml".
+// On Windows platform, uses \ as the separator rather than /.
+FilePath FilePath::MakeFileName(const FilePath& directory,
+                                const FilePath& base_name,
+                                int number,
+                                const char* extension) {
+  String file;
+  if (number == 0) {
+    file = String::Format("%s.%s", base_name.c_str(), extension);
+  } else {
+    file = String::Format("%s_%d.%s", base_name.c_str(), number, extension);
+  }
+  return ConcatPaths(directory, FilePath(file));
+}
+
+// Given directory = "dir", relative_path = "test.xml", returns "dir/test.xml".
+// On Windows, uses \ as the separator rather than /.
+FilePath FilePath::ConcatPaths(const FilePath& directory,
+                               const FilePath& relative_path) {
+  if (directory.IsEmpty())
+    return relative_path;
+  const FilePath dir(directory.RemoveTrailingPathSeparator());
+  return FilePath(String::Format("%s%c%s", dir.c_str(), kPathSeparator,
+                                 relative_path.c_str()));
+}
+
+// Returns true if pathname describes something findable in the file-system,
+// either a file, directory, or whatever.
+bool FilePath::FileOrDirectoryExists() const {
+#if GTEST_OS_WINDOWS_MOBILE
+  LPCWSTR unicode = String::AnsiToUtf16(pathname_.c_str());
+  const DWORD attributes = GetFileAttributes(unicode);
+  delete [] unicode;
+  return attributes != kInvalidFileAttributes;
+#else
+  posix::StatStruct file_stat;
+  return posix::Stat(pathname_.c_str(), &file_stat) == 0;
+#endif  // GTEST_OS_WINDOWS_MOBILE
+}
+
+// Returns true if pathname describes a directory in the file-system
+// that exists.
+bool FilePath::DirectoryExists() const {
+  bool result = false;
+#if GTEST_OS_WINDOWS
+  // Don't strip off trailing separator if path is a root directory on
+  // Windows (like "C:\\").
+  const FilePath& path(IsRootDirectory() ? *this :
+                                           RemoveTrailingPathSeparator());
+#else
+  const FilePath& path(*this);
+#endif
+
+#if GTEST_OS_WINDOWS_MOBILE
+  LPCWSTR unicode = String::AnsiToUtf16(path.c_str());
+  const DWORD attributes = GetFileAttributes(unicode);
+  delete [] unicode;
+  if ((attributes != kInvalidFileAttributes) &&
+      (attributes & FILE_ATTRIBUTE_DIRECTORY)) {
+    result = true;
+  }
+#else
+  posix::StatStruct file_stat;
+  result = posix::Stat(path.c_str(), &file_stat) == 0 &&
+      posix::IsDir(file_stat);
+#endif  // GTEST_OS_WINDOWS_MOBILE
+
+  return result;
+}
+
+// Returns true if pathname describes a root directory. (Windows has one
+// root directory per disk drive.)
+bool FilePath::IsRootDirectory() const {
+#if GTEST_OS_WINDOWS
+  // TODO(wan@google.com): on Windows a network share like
+  // \\server\share can be a root directory, although it cannot be the
+  // current directory.  Handle this properly.
+  return pathname_.length() == 3 && IsAbsolutePath();
+#else
+  return pathname_.length() == 1 && IsPathSeparator(pathname_.c_str()[0]);
+#endif
+}
+
+// Returns true if pathname describes an absolute path.
+bool FilePath::IsAbsolutePath() const {
+  const char* const name = pathname_.c_str();
+#if GTEST_OS_WINDOWS
+  return pathname_.length() >= 3 &&
+     ((name[0] >= 'a' && name[0] <= 'z') ||
+      (name[0] >= 'A' && name[0] <= 'Z')) &&
+     name[1] == ':' &&
+     IsPathSeparator(name[2]);
+#else
+  return IsPathSeparator(name[0]);
+#endif
+}
+
+// Returns a pathname for a file that does not currently exist. The pathname
+// will be directory/base_name.extension or
+// directory/base_name_<number>.extension if directory/base_name.extension
+// already exists. The number will be incremented until a pathname is found
+// that does not already exist.
+// Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'.
+// There could be a race condition if two or more processes are calling this
+// function at the same time -- they could both pick the same filename.
+FilePath FilePath::GenerateUniqueFileName(const FilePath& directory,
+                                          const FilePath& base_name,
+                                          const char* extension) {
+  FilePath full_pathname;
+  int number = 0;
+  do {
+    full_pathname.Set(MakeFileName(directory, base_name, number++, extension));
+  } while (full_pathname.FileOrDirectoryExists());
+  return full_pathname;
+}
+
+// Returns true if FilePath ends with a path separator, which indicates that
+// it is intended to represent a directory. Returns false otherwise.
+// This does NOT check that a directory (or file) actually exists.
+bool FilePath::IsDirectory() const {
+  return !pathname_.empty() &&
+         IsPathSeparator(pathname_.c_str()[pathname_.length() - 1]);
+}
+
+// Create directories so that path exists. Returns true if successful or if
+// the directories already exist; returns false if unable to create directories
+// for any reason.
+bool FilePath::CreateDirectoriesRecursively() const {
+  if (!this->IsDirectory()) {
+    return false;
+  }
+
+  if (pathname_.length() == 0 || this->DirectoryExists()) {
+    return true;
+  }
+
+  const FilePath parent(this->RemoveTrailingPathSeparator().RemoveFileName());
+  return parent.CreateDirectoriesRecursively() && this->CreateFolder();
+}
+
+// Create the directory so that path exists. Returns true if successful or
+// if the directory already exists; returns false if unable to create the
+// directory for any reason, including if the parent directory does not
+// exist. Not named "CreateDirectory" because that's a macro on Windows.
+bool FilePath::CreateFolder() const {
+#if GTEST_OS_WINDOWS_MOBILE
+  FilePath removed_sep(this->RemoveTrailingPathSeparator());
+  LPCWSTR unicode = String::AnsiToUtf16(removed_sep.c_str());
+  int result = CreateDirectory(unicode, NULL) ? 0 : -1;
+  delete [] unicode;
+#elif GTEST_OS_WINDOWS
+  int result = _mkdir(pathname_.c_str());
+#else
+  int result = mkdir(pathname_.c_str(), 0777);
+#endif  // GTEST_OS_WINDOWS_MOBILE
+
+  if (result == -1) {
+    return this->DirectoryExists();  // An error is OK if the directory exists.
+  }
+  return true;  // No error.
+}
+
+// If input name has a trailing separator character, remove it and return the
+// name, otherwise return the name string unmodified.
+// On Windows platform, uses \ as the separator, other platforms use /.
+FilePath FilePath::RemoveTrailingPathSeparator() const {
+  return IsDirectory()
+      ? FilePath(String(pathname_.c_str(), pathname_.length() - 1))
+      : *this;
+}
+
+// Removes any redundant separators that might be in the pathname.
+// For example, "bar///foo" becomes "bar/foo". Does not eliminate other
+// redundancies that might be in a pathname involving "." or "..".
+// TODO(wan@google.com): handle Windows network shares (e.g. \\server\share).
+void FilePath::Normalize() {
+  if (pathname_.c_str() == NULL) {
+    pathname_ = "";
+    return;
+  }
+  const char* src = pathname_.c_str();
+  char* const dest = new char[pathname_.length() + 1];
+  char* dest_ptr = dest;
+  memset(dest_ptr, 0, pathname_.length() + 1);
+
+  while (*src != '\0') {
+    *dest_ptr = *src;
+    if (!IsPathSeparator(*src)) {
+      src++;
+    } else {
+#if GTEST_HAS_ALT_PATH_SEP_
+      if (*dest_ptr == kAlternatePathSeparator) {
+        *dest_ptr = kPathSeparator;
+      }
+#endif
+      while (IsPathSeparator(*src))
+        src++;
+    }
+    dest_ptr++;
+  }
+  *dest_ptr = '\0';
+  pathname_ = dest;
+  delete[] dest;
+}
+
+}  // namespace internal
+}  // namespace testing
diff --git a/google-breakpad/src/testing/gtest/src/gtest-internal-inl.h b/google-breakpad/src/testing/gtest/src/gtest-internal-inl.h
new file mode 100644
index 0000000..350ade0
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/src/gtest-internal-inl.h
@@ -0,0 +1,1056 @@
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Utility functions and classes used by the Google C++ testing framework.
+//
+// Author: wan@google.com (Zhanyong Wan)
+//
+// This file contains purely Google Test's internal implementation.  Please
+// DO NOT #INCLUDE IT IN A USER PROGRAM.
+
+#ifndef GTEST_SRC_GTEST_INTERNAL_INL_H_
+#define GTEST_SRC_GTEST_INTERNAL_INL_H_
+
+// GTEST_IMPLEMENTATION_ is defined to 1 iff the current translation unit is
+// part of Google Test's implementation; otherwise it's undefined.
+#if !GTEST_IMPLEMENTATION_
+// A user is trying to include this from his code - just say no.
+# error "gtest-internal-inl.h is part of Google Test's internal implementation."
+# error "It must not be included except by Google Test itself."
+#endif  // GTEST_IMPLEMENTATION_
+
+#ifndef _WIN32_WCE
+# include <errno.h>
+#endif  // !_WIN32_WCE
+#include <stddef.h>
+#include <stdlib.h>  // For strtoll/_strtoul64/malloc/free.
+#include <string.h>  // For memmove.
+
+#include <algorithm>
+#include <string>
+#include <vector>
+
+#include "gtest/internal/gtest-port.h"
+
+#if GTEST_OS_WINDOWS
+# include <windows.h>  // NOLINT
+#endif  // GTEST_OS_WINDOWS
+
+#include "gtest/gtest.h"  // NOLINT
+#include "gtest/gtest-spi.h"
+
+namespace testing {
+
+// Declares the flags.
+//
+// We don't want the users to modify this flag in the code, but want
+// Google Test's own unit tests to be able to access it. Therefore we
+// declare it here as opposed to in gtest.h.
+GTEST_DECLARE_bool_(death_test_use_fork);
+
+namespace internal {
+
+// The value of GetTestTypeId() as seen from within the Google Test
+// library.  This is solely for testing GetTestTypeId().
+GTEST_API_ extern const TypeId kTestTypeIdInGoogleTest;
+
+// Names of the flags (needed for parsing Google Test flags).
+const char kAlsoRunDisabledTestsFlag[] = "also_run_disabled_tests";
+const char kBreakOnFailureFlag[] = "break_on_failure";
+const char kCatchExceptionsFlag[] = "catch_exceptions";
+const char kColorFlag[] = "color";
+const char kFilterFlag[] = "filter";
+const char kListTestsFlag[] = "list_tests";
+const char kOutputFlag[] = "output";
+const char kPrintTimeFlag[] = "print_time";
+const char kRandomSeedFlag[] = "random_seed";
+const char kRepeatFlag[] = "repeat";
+const char kShuffleFlag[] = "shuffle";
+const char kStackTraceDepthFlag[] = "stack_trace_depth";
+const char kStreamResultToFlag[] = "stream_result_to";
+const char kThrowOnFailureFlag[] = "throw_on_failure";
+
+// A valid random seed must be in [1, kMaxRandomSeed].
+const int kMaxRandomSeed = 99999;
+
+// g_help_flag is true iff the --help flag or an equivalent form is
+// specified on the command line.
+GTEST_API_ extern bool g_help_flag;
+
+// Returns the current time in milliseconds.
+GTEST_API_ TimeInMillis GetTimeInMillis();
+
+// Returns true iff Google Test should use colors in the output.
+GTEST_API_ bool ShouldUseColor(bool stdout_is_tty);
+
+// Formats the given time in milliseconds as seconds.
+GTEST_API_ std::string FormatTimeInMillisAsSeconds(TimeInMillis ms);
+
+// Converts the given time in milliseconds to a date string in the ISO 8601
+// format, without the timezone information.  N.B.: due to the use the
+// non-reentrant localtime() function, this function is not thread safe.  Do
+// not use it in any code that can be called from multiple threads.
+GTEST_API_ std::string FormatEpochTimeInMillisAsIso8601(TimeInMillis ms);
+
+// Parses a string for an Int32 flag, in the form of "--flag=value".
+//
+// On success, stores the value of the flag in *value, and returns
+// true.  On failure, returns false without changing *value.
+GTEST_API_ bool ParseInt32Flag(
+    const char* str, const char* flag, Int32* value);
+
+// Returns a random seed in range [1, kMaxRandomSeed] based on the
+// given --gtest_random_seed flag value.
+inline int GetRandomSeedFromFlag(Int32 random_seed_flag) {
+  const unsigned int raw_seed = (random_seed_flag == 0) ?
+      static_cast<unsigned int>(GetTimeInMillis()) :
+      static_cast<unsigned int>(random_seed_flag);
+
+  // Normalizes the actual seed to range [1, kMaxRandomSeed] such that
+  // it's easy to type.
+  const int normalized_seed =
+      static_cast<int>((raw_seed - 1U) %
+                       static_cast<unsigned int>(kMaxRandomSeed)) + 1;
+  return normalized_seed;
+}
+
+// Returns the first valid random seed after 'seed'.  The behavior is
+// undefined if 'seed' is invalid.  The seed after kMaxRandomSeed is
+// considered to be 1.
+inline int GetNextRandomSeed(int seed) {
+  GTEST_CHECK_(1 <= seed && seed <= kMaxRandomSeed)
+      << "Invalid random seed " << seed << " - must be in [1, "
+      << kMaxRandomSeed << "].";
+  const int next_seed = seed + 1;
+  return (next_seed > kMaxRandomSeed) ? 1 : next_seed;
+}
+
+// This class saves the values of all Google Test flags in its c'tor, and
+// restores them in its d'tor.
+class GTestFlagSaver {
+ public:
+  // The c'tor.
+  GTestFlagSaver() {
+    also_run_disabled_tests_ = GTEST_FLAG(also_run_disabled_tests);
+    break_on_failure_ = GTEST_FLAG(break_on_failure);
+    catch_exceptions_ = GTEST_FLAG(catch_exceptions);
+    color_ = GTEST_FLAG(color);
+    death_test_style_ = GTEST_FLAG(death_test_style);
+    death_test_use_fork_ = GTEST_FLAG(death_test_use_fork);
+    filter_ = GTEST_FLAG(filter);
+    internal_run_death_test_ = GTEST_FLAG(internal_run_death_test);
+    list_tests_ = GTEST_FLAG(list_tests);
+    output_ = GTEST_FLAG(output);
+    print_time_ = GTEST_FLAG(print_time);
+    random_seed_ = GTEST_FLAG(random_seed);
+    repeat_ = GTEST_FLAG(repeat);
+    shuffle_ = GTEST_FLAG(shuffle);
+    stack_trace_depth_ = GTEST_FLAG(stack_trace_depth);
+    stream_result_to_ = GTEST_FLAG(stream_result_to);
+    throw_on_failure_ = GTEST_FLAG(throw_on_failure);
+  }
+
+  // The d'tor is not virtual.  DO NOT INHERIT FROM THIS CLASS.
+  ~GTestFlagSaver() {
+    GTEST_FLAG(also_run_disabled_tests) = also_run_disabled_tests_;
+    GTEST_FLAG(break_on_failure) = break_on_failure_;
+    GTEST_FLAG(catch_exceptions) = catch_exceptions_;
+    GTEST_FLAG(color) = color_;
+    GTEST_FLAG(death_test_style) = death_test_style_;
+    GTEST_FLAG(death_test_use_fork) = death_test_use_fork_;
+    GTEST_FLAG(filter) = filter_;
+    GTEST_FLAG(internal_run_death_test) = internal_run_death_test_;
+    GTEST_FLAG(list_tests) = list_tests_;
+    GTEST_FLAG(output) = output_;
+    GTEST_FLAG(print_time) = print_time_;
+    GTEST_FLAG(random_seed) = random_seed_;
+    GTEST_FLAG(repeat) = repeat_;
+    GTEST_FLAG(shuffle) = shuffle_;
+    GTEST_FLAG(stack_trace_depth) = stack_trace_depth_;
+    GTEST_FLAG(stream_result_to) = stream_result_to_;
+    GTEST_FLAG(throw_on_failure) = throw_on_failure_;
+  }
+
+ private:
+  // Fields for saving the original values of flags.
+  bool also_run_disabled_tests_;
+  bool break_on_failure_;
+  bool catch_exceptions_;
+  String color_;
+  String death_test_style_;
+  bool death_test_use_fork_;
+  String filter_;
+  String internal_run_death_test_;
+  bool list_tests_;
+  String output_;
+  bool print_time_;
+  bool pretty_;
+  internal::Int32 random_seed_;
+  internal::Int32 repeat_;
+  bool shuffle_;
+  internal::Int32 stack_trace_depth_;
+  String stream_result_to_;
+  bool throw_on_failure_;
+} GTEST_ATTRIBUTE_UNUSED_;
+
+// Converts a Unicode code point to a narrow string in UTF-8 encoding.
+// code_point parameter is of type UInt32 because wchar_t may not be
+// wide enough to contain a code point.
+// The output buffer str must containt at least 32 characters.
+// The function returns the address of the output buffer.
+// If the code_point is not a valid Unicode code point
+// (i.e. outside of Unicode range U+0 to U+10FFFF) it will be output
+// as '(Invalid Unicode 0xXXXXXXXX)'.
+GTEST_API_ char* CodePointToUtf8(UInt32 code_point, char* str);
+
+// Converts a wide string to a narrow string in UTF-8 encoding.
+// The wide string is assumed to have the following encoding:
+//   UTF-16 if sizeof(wchar_t) == 2 (on Windows, Cygwin, Symbian OS)
+//   UTF-32 if sizeof(wchar_t) == 4 (on Linux)
+// Parameter str points to a null-terminated wide string.
+// Parameter num_chars may additionally limit the number
+// of wchar_t characters processed. -1 is used when the entire string
+// should be processed.
+// If the string contains code points that are not valid Unicode code points
+// (i.e. outside of Unicode range U+0 to U+10FFFF) they will be output
+// as '(Invalid Unicode 0xXXXXXXXX)'. If the string is in UTF16 encoding
+// and contains invalid UTF-16 surrogate pairs, values in those pairs
+// will be encoded as individual Unicode characters from Basic Normal Plane.
+GTEST_API_ String WideStringToUtf8(const wchar_t* str, int num_chars);
+
+// Reads the GTEST_SHARD_STATUS_FILE environment variable, and creates the file
+// if the variable is present. If a file already exists at this location, this
+// function will write over it. If the variable is present, but the file cannot
+// be created, prints an error and exits.
+void WriteToShardStatusFileIfNeeded();
+
+// Checks whether sharding is enabled by examining the relevant
+// environment variable values. If the variables are present,
+// but inconsistent (e.g., shard_index >= total_shards), prints
+// an error and exits. If in_subprocess_for_death_test, sharding is
+// disabled because it must only be applied to the original test
+// process. Otherwise, we could filter out death tests we intended to execute.
+GTEST_API_ bool ShouldShard(const char* total_shards_str,
+                            const char* shard_index_str,
+                            bool in_subprocess_for_death_test);
+
+// Parses the environment variable var as an Int32. If it is unset,
+// returns default_val. If it is not an Int32, prints an error and
+// and aborts.
+GTEST_API_ Int32 Int32FromEnvOrDie(const char* env_var, Int32 default_val);
+
+// Given the total number of shards, the shard index, and the test id,
+// returns true iff the test should be run on this shard. The test id is
+// some arbitrary but unique non-negative integer assigned to each test
+// method. Assumes that 0 <= shard_index < total_shards.
+GTEST_API_ bool ShouldRunTestOnShard(
+    int total_shards, int shard_index, int test_id);
+
+// STL container utilities.
+
+// Returns the number of elements in the given container that satisfy
+// the given predicate.
+template <class Container, typename Predicate>
+inline int CountIf(const Container& c, Predicate predicate) {
+  // Implemented as an explicit loop since std::count_if() in libCstd on
+  // Solaris has a non-standard signature.
+  int count = 0;
+  for (typename Container::const_iterator it = c.begin(); it != c.end(); ++it) {
+    if (predicate(*it))
+      ++count;
+  }
+  return count;
+}
+
+// Applies a function/functor to each element in the container.
+template <class Container, typename Functor>
+void ForEach(const Container& c, Functor functor) {
+  std::for_each(c.begin(), c.end(), functor);
+}
+
+// Returns the i-th element of the vector, or default_value if i is not
+// in range [0, v.size()).
+template <typename E>
+inline E GetElementOr(const std::vector<E>& v, int i, E default_value) {
+  return (i < 0 || i >= static_cast<int>(v.size())) ? default_value : v[i];
+}
+
+// Performs an in-place shuffle of a range of the vector's elements.
+// 'begin' and 'end' are element indices as an STL-style range;
+// i.e. [begin, end) are shuffled, where 'end' == size() means to
+// shuffle to the end of the vector.
+template <typename E>
+void ShuffleRange(internal::Random* random, int begin, int end,
+                  std::vector<E>* v) {
+  const int size = static_cast<int>(v->size());
+  GTEST_CHECK_(0 <= begin && begin <= size)
+      << "Invalid shuffle range start " << begin << ": must be in range [0, "
+      << size << "].";
+  GTEST_CHECK_(begin <= end && end <= size)
+      << "Invalid shuffle range finish " << end << ": must be in range ["
+      << begin << ", " << size << "].";
+
+  // Fisher-Yates shuffle, from
+  // http://en.wikipedia.org/wiki/Fisher-Yates_shuffle
+  for (int range_width = end - begin; range_width >= 2; range_width--) {
+    const int last_in_range = begin + range_width - 1;
+    const int selected = begin + random->Generate(range_width);
+    std::swap((*v)[selected], (*v)[last_in_range]);
+  }
+}
+
+// Performs an in-place shuffle of the vector's elements.
+template <typename E>
+inline void Shuffle(internal::Random* random, std::vector<E>* v) {
+  ShuffleRange(random, 0, static_cast<int>(v->size()), v);
+}
+
+// A function for deleting an object.  Handy for being used as a
+// functor.
+template <typename T>
+static void Delete(T* x) {
+  delete x;
+}
+
+// A predicate that checks the key of a TestProperty against a known key.
+//
+// TestPropertyKeyIs is copyable.
+class TestPropertyKeyIs {
+ public:
+  // Constructor.
+  //
+  // TestPropertyKeyIs has NO default constructor.
+  explicit TestPropertyKeyIs(const char* key)
+      : key_(key) {}
+
+  // Returns true iff the test name of test property matches on key_.
+  bool operator()(const TestProperty& test_property) const {
+    return String(test_property.key()).Compare(key_) == 0;
+  }
+
+ private:
+  String key_;
+};
+
+// Class UnitTestOptions.
+//
+// This class contains functions for processing options the user
+// specifies when running the tests.  It has only static members.
+//
+// In most cases, the user can specify an option using either an
+// environment variable or a command line flag.  E.g. you can set the
+// test filter using either GTEST_FILTER or --gtest_filter.  If both
+// the variable and the flag are present, the latter overrides the
+// former.
+class GTEST_API_ UnitTestOptions {
+ public:
+  // Functions for processing the gtest_output flag.
+
+  // Returns the output format, or "" for normal printed output.
+  static String GetOutputFormat();
+
+  // Returns the absolute path of the requested output file, or the
+  // default (test_detail.xml in the original working directory) if
+  // none was explicitly specified.
+  static String GetAbsolutePathToOutputFile();
+
+  // Functions for processing the gtest_filter flag.
+
+  // Returns true iff the wildcard pattern matches the string.  The
+  // first ':' or '\0' character in pattern marks the end of it.
+  //
+  // This recursive algorithm isn't very efficient, but is clear and
+  // works well enough for matching test names, which are short.
+  static bool PatternMatchesString(const char *pattern, const char *str);
+
+  // Returns true iff the user-specified filter matches the test case
+  // name and the test name.
+  static bool FilterMatchesTest(const String &test_case_name,
+                                const String &test_name);
+
+#if GTEST_OS_WINDOWS
+  // Function for supporting the gtest_catch_exception flag.
+
+  // Returns EXCEPTION_EXECUTE_HANDLER if Google Test should handle the
+  // given SEH exception, or EXCEPTION_CONTINUE_SEARCH otherwise.
+  // This function is useful as an __except condition.
+  static int GTestShouldProcessSEH(DWORD exception_code);
+#endif  // GTEST_OS_WINDOWS
+
+  // Returns true if "name" matches the ':' separated list of glob-style
+  // filters in "filter".
+  static bool MatchesFilter(const String& name, const char* filter);
+};
+
+// Returns the current application's name, removing directory path if that
+// is present.  Used by UnitTestOptions::GetOutputFile.
+GTEST_API_ FilePath GetCurrentExecutableName();
+
+// The role interface for getting the OS stack trace as a string.
+class OsStackTraceGetterInterface {
+ public:
+  OsStackTraceGetterInterface() {}
+  virtual ~OsStackTraceGetterInterface() {}
+
+  // Returns the current OS stack trace as a String.  Parameters:
+  //
+  //   max_depth  - the maximum number of stack frames to be included
+  //                in the trace.
+  //   skip_count - the number of top frames to be skipped; doesn't count
+  //                against max_depth.
+  virtual String CurrentStackTrace(int max_depth, int skip_count) = 0;
+
+  // UponLeavingGTest() should be called immediately before Google Test calls
+  // user code. It saves some information about the current stack that
+  // CurrentStackTrace() will use to find and hide Google Test stack frames.
+  virtual void UponLeavingGTest() = 0;
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(OsStackTraceGetterInterface);
+};
+
+// A working implementation of the OsStackTraceGetterInterface interface.
+class OsStackTraceGetter : public OsStackTraceGetterInterface {
+ public:
+  OsStackTraceGetter() : caller_frame_(NULL) {}
+
+  virtual String CurrentStackTrace(int max_depth, int skip_count)
+      GTEST_LOCK_EXCLUDED_(mutex_);
+
+  virtual void UponLeavingGTest() GTEST_LOCK_EXCLUDED_(mutex_);
+
+  // This string is inserted in place of stack frames that are part of
+  // Google Test's implementation.
+  static const char* const kElidedFramesMarker;
+
+ private:
+  Mutex mutex_;  // protects all internal state
+
+  // We save the stack frame below the frame that calls user code.
+  // We do this because the address of the frame immediately below
+  // the user code changes between the call to UponLeavingGTest()
+  // and any calls to CurrentStackTrace() from within the user code.
+  void* caller_frame_;
+
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(OsStackTraceGetter);
+};
+
+// Information about a Google Test trace point.
+struct TraceInfo {
+  const char* file;
+  int line;
+  String message;
+};
+
+// This is the default global test part result reporter used in UnitTestImpl.
+// This class should only be used by UnitTestImpl.
+class DefaultGlobalTestPartResultReporter
+  : public TestPartResultReporterInterface {
+ public:
+  explicit DefaultGlobalTestPartResultReporter(UnitTestImpl* unit_test);
+  // Implements the TestPartResultReporterInterface. Reports the test part
+  // result in the current test.
+  virtual void ReportTestPartResult(const TestPartResult& result);
+
+ private:
+  UnitTestImpl* const unit_test_;
+
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(DefaultGlobalTestPartResultReporter);
+};
+
+// This is the default per thread test part result reporter used in
+// UnitTestImpl. This class should only be used by UnitTestImpl.
+class DefaultPerThreadTestPartResultReporter
+    : public TestPartResultReporterInterface {
+ public:
+  explicit DefaultPerThreadTestPartResultReporter(UnitTestImpl* unit_test);
+  // Implements the TestPartResultReporterInterface. The implementation just
+  // delegates to the current global test part result reporter of *unit_test_.
+  virtual void ReportTestPartResult(const TestPartResult& result);
+
+ private:
+  UnitTestImpl* const unit_test_;
+
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(DefaultPerThreadTestPartResultReporter);
+};
+
+// The private implementation of the UnitTest class.  We don't protect
+// the methods under a mutex, as this class is not accessible by a
+// user and the UnitTest class that delegates work to this class does
+// proper locking.
+class GTEST_API_ UnitTestImpl {
+ public:
+  explicit UnitTestImpl(UnitTest* parent);
+  virtual ~UnitTestImpl();
+
+  // There are two different ways to register your own TestPartResultReporter.
+  // You can register your own repoter to listen either only for test results
+  // from the current thread or for results from all threads.
+  // By default, each per-thread test result repoter just passes a new
+  // TestPartResult to the global test result reporter, which registers the
+  // test part result for the currently running test.
+
+  // Returns the global test part result reporter.
+  TestPartResultReporterInterface* GetGlobalTestPartResultReporter();
+
+  // Sets the global test part result reporter.
+  void SetGlobalTestPartResultReporter(
+      TestPartResultReporterInterface* reporter);
+
+  // Returns the test part result reporter for the current thread.
+  TestPartResultReporterInterface* GetTestPartResultReporterForCurrentThread();
+
+  // Sets the test part result reporter for the current thread.
+  void SetTestPartResultReporterForCurrentThread(
+      TestPartResultReporterInterface* reporter);
+
+  // Gets the number of successful test cases.
+  int successful_test_case_count() const;
+
+  // Gets the number of failed test cases.
+  int failed_test_case_count() const;
+
+  // Gets the number of all test cases.
+  int total_test_case_count() const;
+
+  // Gets the number of all test cases that contain at least one test
+  // that should run.
+  int test_case_to_run_count() const;
+
+  // Gets the number of successful tests.
+  int successful_test_count() const;
+
+  // Gets the number of failed tests.
+  int failed_test_count() const;
+
+  // Gets the number of disabled tests.
+  int disabled_test_count() const;
+
+  // Gets the number of all tests.
+  int total_test_count() const;
+
+  // Gets the number of tests that should run.
+  int test_to_run_count() const;
+
+  // Gets the time of the test program start, in ms from the start of the
+  // UNIX epoch.
+  TimeInMillis start_timestamp() const { return start_timestamp_; }
+
+  // Gets the elapsed time, in milliseconds.
+  TimeInMillis elapsed_time() const { return elapsed_time_; }
+
+  // Returns true iff the unit test passed (i.e. all test cases passed).
+  bool Passed() const { return !Failed(); }
+
+  // Returns true iff the unit test failed (i.e. some test case failed
+  // or something outside of all tests failed).
+  bool Failed() const {
+    return failed_test_case_count() > 0 || ad_hoc_test_result()->Failed();
+  }
+
+  // Gets the i-th test case among all the test cases. i can range from 0 to
+  // total_test_case_count() - 1. If i is not in that range, returns NULL.
+  const TestCase* GetTestCase(int i) const {
+    const int index = GetElementOr(test_case_indices_, i, -1);
+    return index < 0 ? NULL : test_cases_[i];
+  }
+
+  // Gets the i-th test case among all the test cases. i can range from 0 to
+  // total_test_case_count() - 1. If i is not in that range, returns NULL.
+  TestCase* GetMutableTestCase(int i) {
+    const int index = GetElementOr(test_case_indices_, i, -1);
+    return index < 0 ? NULL : test_cases_[index];
+  }
+
+  // Provides access to the event listener list.
+  TestEventListeners* listeners() { return &listeners_; }
+
+  // Returns the TestResult for the test that's currently running, or
+  // the TestResult for the ad hoc test if no test is running.
+  TestResult* current_test_result();
+
+  // Returns the TestResult for the ad hoc test.
+  const TestResult* ad_hoc_test_result() const { return &ad_hoc_test_result_; }
+
+  // Sets the OS stack trace getter.
+  //
+  // Does nothing if the input and the current OS stack trace getter
+  // are the same; otherwise, deletes the old getter and makes the
+  // input the current getter.
+  void set_os_stack_trace_getter(OsStackTraceGetterInterface* getter);
+
+  // Returns the current OS stack trace getter if it is not NULL;
+  // otherwise, creates an OsStackTraceGetter, makes it the current
+  // getter, and returns it.
+  OsStackTraceGetterInterface* os_stack_trace_getter();
+
+  // Returns the current OS stack trace as a String.
+  //
+  // The maximum number of stack frames to be included is specified by
+  // the gtest_stack_trace_depth flag.  The skip_count parameter
+  // specifies the number of top frames to be skipped, which doesn't
+  // count against the number of frames to be included.
+  //
+  // For example, if Foo() calls Bar(), which in turn calls
+  // CurrentOsStackTraceExceptTop(1), Foo() will be included in the
+  // trace but Bar() and CurrentOsStackTraceExceptTop() won't.
+  String CurrentOsStackTraceExceptTop(int skip_count) GTEST_NO_INLINE_;
+
+  // Finds and returns a TestCase with the given name.  If one doesn't
+  // exist, creates one and returns it.
+  //
+  // Arguments:
+  //
+  //   test_case_name: name of the test case
+  //   type_param:     the name of the test's type parameter, or NULL if
+  //                   this is not a typed or a type-parameterized test.
+  //   set_up_tc:      pointer to the function that sets up the test case
+  //   tear_down_tc:   pointer to the function that tears down the test case
+  TestCase* GetTestCase(const char* test_case_name,
+                        const char* type_param,
+                        Test::SetUpTestCaseFunc set_up_tc,
+                        Test::TearDownTestCaseFunc tear_down_tc);
+
+  // Adds a TestInfo to the unit test.
+  //
+  // Arguments:
+  //
+  //   set_up_tc:    pointer to the function that sets up the test case
+  //   tear_down_tc: pointer to the function that tears down the test case
+  //   test_info:    the TestInfo object
+  void AddTestInfo(Test::SetUpTestCaseFunc set_up_tc,
+                   Test::TearDownTestCaseFunc tear_down_tc,
+                   TestInfo* test_info) {
+    // In order to support thread-safe death tests, we need to
+    // remember the original working directory when the test program
+    // was first invoked.  We cannot do this in RUN_ALL_TESTS(), as
+    // the user may have changed the current directory before calling
+    // RUN_ALL_TESTS().  Therefore we capture the current directory in
+    // AddTestInfo(), which is called to register a TEST or TEST_F
+    // before main() is reached.
+    if (original_working_dir_.IsEmpty()) {
+      original_working_dir_.Set(FilePath::GetCurrentDir());
+      GTEST_CHECK_(!original_working_dir_.IsEmpty())
+          << "Failed to get the current working directory.";
+    }
+
+    GetTestCase(test_info->test_case_name(),
+                test_info->type_param(),
+                set_up_tc,
+                tear_down_tc)->AddTestInfo(test_info);
+  }
+
+#if GTEST_HAS_PARAM_TEST
+  // Returns ParameterizedTestCaseRegistry object used to keep track of
+  // value-parameterized tests and instantiate and register them.
+  internal::ParameterizedTestCaseRegistry& parameterized_test_registry() {
+    return parameterized_test_registry_;
+  }
+#endif  // GTEST_HAS_PARAM_TEST
+
+  // Sets the TestCase object for the test that's currently running.
+  void set_current_test_case(TestCase* a_current_test_case) {
+    current_test_case_ = a_current_test_case;
+  }
+
+  // Sets the TestInfo object for the test that's currently running.  If
+  // current_test_info is NULL, the assertion results will be stored in
+  // ad_hoc_test_result_.
+  void set_current_test_info(TestInfo* a_current_test_info) {
+    current_test_info_ = a_current_test_info;
+  }
+
+  // Registers all parameterized tests defined using TEST_P and
+  // INSTANTIATE_TEST_CASE_P, creating regular tests for each test/parameter
+  // combination. This method can be called more then once; it has guards
+  // protecting from registering the tests more then once.  If
+  // value-parameterized tests are disabled, RegisterParameterizedTests is
+  // present but does nothing.
+  void RegisterParameterizedTests();
+
+  // Runs all tests in this UnitTest object, prints the result, and
+  // returns true if all tests are successful.  If any exception is
+  // thrown during a test, this test is considered to be failed, but
+  // the rest of the tests will still be run.
+  bool RunAllTests();
+
+  // Clears the results of all tests, except the ad hoc tests.
+  void ClearNonAdHocTestResult() {
+    ForEach(test_cases_, TestCase::ClearTestCaseResult);
+  }
+
+  // Clears the results of ad-hoc test assertions.
+  void ClearAdHocTestResult() {
+    ad_hoc_test_result_.Clear();
+  }
+
+  enum ReactionToSharding {
+    HONOR_SHARDING_PROTOCOL,
+    IGNORE_SHARDING_PROTOCOL
+  };
+
+  // Matches the full name of each test against the user-specified
+  // filter to decide whether the test should run, then records the
+  // result in each TestCase and TestInfo object.
+  // If shard_tests == HONOR_SHARDING_PROTOCOL, further filters tests
+  // based on sharding variables in the environment.
+  // Returns the number of tests that should run.
+  int FilterTests(ReactionToSharding shard_tests);
+
+  // Prints the names of the tests matching the user-specified filter flag.
+  void ListTestsMatchingFilter();
+
+  const TestCase* current_test_case() const { return current_test_case_; }
+  TestInfo* current_test_info() { return current_test_info_; }
+  const TestInfo* current_test_info() const { return current_test_info_; }
+
+  // Returns the vector of environments that need to be set-up/torn-down
+  // before/after the tests are run.
+  std::vector<Environment*>& environments() { return environments_; }
+
+  // Getters for the per-thread Google Test trace stack.
+  std::vector<TraceInfo>& gtest_trace_stack() {
+    return *(gtest_trace_stack_.pointer());
+  }
+  const std::vector<TraceInfo>& gtest_trace_stack() const {
+    return gtest_trace_stack_.get();
+  }
+
+#if GTEST_HAS_DEATH_TEST
+  void InitDeathTestSubprocessControlInfo() {
+    internal_run_death_test_flag_.reset(ParseInternalRunDeathTestFlag());
+  }
+  // Returns a pointer to the parsed --gtest_internal_run_death_test
+  // flag, or NULL if that flag was not specified.
+  // This information is useful only in a death test child process.
+  // Must not be called before a call to InitGoogleTest.
+  const InternalRunDeathTestFlag* internal_run_death_test_flag() const {
+    return internal_run_death_test_flag_.get();
+  }
+
+  // Returns a pointer to the current death test factory.
+  internal::DeathTestFactory* death_test_factory() {
+    return death_test_factory_.get();
+  }
+
+  void SuppressTestEventsIfInSubprocess();
+
+  friend class ReplaceDeathTestFactory;
+#endif  // GTEST_HAS_DEATH_TEST
+
+  // Initializes the event listener performing XML output as specified by
+  // UnitTestOptions. Must not be called before InitGoogleTest.
+  void ConfigureXmlOutput();
+
+#if GTEST_CAN_STREAM_RESULTS_
+  // Initializes the event listener for streaming test results to a socket.
+  // Must not be called before InitGoogleTest.
+  void ConfigureStreamingOutput();
+#endif
+
+  // Performs initialization dependent upon flag values obtained in
+  // ParseGoogleTestFlagsOnly.  Is called from InitGoogleTest after the call to
+  // ParseGoogleTestFlagsOnly.  In case a user neglects to call InitGoogleTest
+  // this function is also called from RunAllTests.  Since this function can be
+  // called more than once, it has to be idempotent.
+  void PostFlagParsingInit();
+
+  // Gets the random seed used at the start of the current test iteration.
+  int random_seed() const { return random_seed_; }
+
+  // Gets the random number generator.
+  internal::Random* random() { return &random_; }
+
+  // Shuffles all test cases, and the tests within each test case,
+  // making sure that death tests are still run first.
+  void ShuffleTests();
+
+  // Restores the test cases and tests to their order before the first shuffle.
+  void UnshuffleTests();
+
+  // Returns the value of GTEST_FLAG(catch_exceptions) at the moment
+  // UnitTest::Run() starts.
+  bool catch_exceptions() const { return catch_exceptions_; }
+
+ private:
+  friend class ::testing::UnitTest;
+
+  // Used by UnitTest::Run() to capture the state of
+  // GTEST_FLAG(catch_exceptions) at the moment it starts.
+  void set_catch_exceptions(bool value) { catch_exceptions_ = value; }
+
+  // The UnitTest object that owns this implementation object.
+  UnitTest* const parent_;
+
+  // The working directory when the first TEST() or TEST_F() was
+  // executed.
+  internal::FilePath original_working_dir_;
+
+  // The default test part result reporters.
+  DefaultGlobalTestPartResultReporter default_global_test_part_result_reporter_;
+  DefaultPerThreadTestPartResultReporter
+      default_per_thread_test_part_result_reporter_;
+
+  // Points to (but doesn't own) the global test part result reporter.
+  TestPartResultReporterInterface* global_test_part_result_repoter_;
+
+  // Protects read and write access to global_test_part_result_reporter_.
+  internal::Mutex global_test_part_result_reporter_mutex_;
+
+  // Points to (but doesn't own) the per-thread test part result reporter.
+  internal::ThreadLocal<TestPartResultReporterInterface*>
+      per_thread_test_part_result_reporter_;
+
+  // The vector of environments that need to be set-up/torn-down
+  // before/after the tests are run.
+  std::vector<Environment*> environments_;
+
+  // The vector of TestCases in their original order.  It owns the
+  // elements in the vector.
+  std::vector<TestCase*> test_cases_;
+
+  // Provides a level of indirection for the test case list to allow
+  // easy shuffling and restoring the test case order.  The i-th
+  // element of this vector is the index of the i-th test case in the
+  // shuffled order.
+  std::vector<int> test_case_indices_;
+
+#if GTEST_HAS_PARAM_TEST
+  // ParameterizedTestRegistry object used to register value-parameterized
+  // tests.
+  internal::ParameterizedTestCaseRegistry parameterized_test_registry_;
+
+  // Indicates whether RegisterParameterizedTests() has been called already.
+  bool parameterized_tests_registered_;
+#endif  // GTEST_HAS_PARAM_TEST
+
+  // Index of the last death test case registered.  Initially -1.
+  int last_death_test_case_;
+
+  // This points to the TestCase for the currently running test.  It
+  // changes as Google Test goes through one test case after another.
+  // When no test is running, this is set to NULL and Google Test
+  // stores assertion results in ad_hoc_test_result_.  Initially NULL.
+  TestCase* current_test_case_;
+
+  // This points to the TestInfo for the currently running test.  It
+  // changes as Google Test goes through one test after another.  When
+  // no test is running, this is set to NULL and Google Test stores
+  // assertion results in ad_hoc_test_result_.  Initially NULL.
+  TestInfo* current_test_info_;
+
+  // Normally, a user only writes assertions inside a TEST or TEST_F,
+  // or inside a function called by a TEST or TEST_F.  Since Google
+  // Test keeps track of which test is current running, it can
+  // associate such an assertion with the test it belongs to.
+  //
+  // If an assertion is encountered when no TEST or TEST_F is running,
+  // Google Test attributes the assertion result to an imaginary "ad hoc"
+  // test, and records the result in ad_hoc_test_result_.
+  TestResult ad_hoc_test_result_;
+
+  // The list of event listeners that can be used to track events inside
+  // Google Test.
+  TestEventListeners listeners_;
+
+  // The OS stack trace getter.  Will be deleted when the UnitTest
+  // object is destructed.  By default, an OsStackTraceGetter is used,
+  // but the user can set this field to use a custom getter if that is
+  // desired.
+  OsStackTraceGetterInterface* os_stack_trace_getter_;
+
+  // True iff PostFlagParsingInit() has been called.
+  bool post_flag_parse_init_performed_;
+
+  // The random number seed used at the beginning of the test run.
+  int random_seed_;
+
+  // Our random number generator.
+  internal::Random random_;
+
+  // The time of the test program start, in ms from the start of the
+  // UNIX epoch.
+  TimeInMillis start_timestamp_;
+
+  // How long the test took to run, in milliseconds.
+  TimeInMillis elapsed_time_;
+
+#if GTEST_HAS_DEATH_TEST
+  // The decomposed components of the gtest_internal_run_death_test flag,
+  // parsed when RUN_ALL_TESTS is called.
+  internal::scoped_ptr<InternalRunDeathTestFlag> internal_run_death_test_flag_;
+  internal::scoped_ptr<internal::DeathTestFactory> death_test_factory_;
+#endif  // GTEST_HAS_DEATH_TEST
+
+  // A per-thread stack of traces created by the SCOPED_TRACE() macro.
+  internal::ThreadLocal<std::vector<TraceInfo> > gtest_trace_stack_;
+
+  // The value of GTEST_FLAG(catch_exceptions) at the moment RunAllTests()
+  // starts.
+  bool catch_exceptions_;
+
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(UnitTestImpl);
+};  // class UnitTestImpl
+
+// Convenience function for accessing the global UnitTest
+// implementation object.
+inline UnitTestImpl* GetUnitTestImpl() {
+  return UnitTest::GetInstance()->impl();
+}
+
+#if GTEST_USES_SIMPLE_RE
+
+// Internal helper functions for implementing the simple regular
+// expression matcher.
+GTEST_API_ bool IsInSet(char ch, const char* str);
+GTEST_API_ bool IsAsciiDigit(char ch);
+GTEST_API_ bool IsAsciiPunct(char ch);
+GTEST_API_ bool IsRepeat(char ch);
+GTEST_API_ bool IsAsciiWhiteSpace(char ch);
+GTEST_API_ bool IsAsciiWordChar(char ch);
+GTEST_API_ bool IsValidEscape(char ch);
+GTEST_API_ bool AtomMatchesChar(bool escaped, char pattern, char ch);
+GTEST_API_ bool ValidateRegex(const char* regex);
+GTEST_API_ bool MatchRegexAtHead(const char* regex, const char* str);
+GTEST_API_ bool MatchRepetitionAndRegexAtHead(
+    bool escaped, char ch, char repeat, const char* regex, const char* str);
+GTEST_API_ bool MatchRegexAnywhere(const char* regex, const char* str);
+
+#endif  // GTEST_USES_SIMPLE_RE
+
+// Parses the command line for Google Test flags, without initializing
+// other parts of Google Test.
+GTEST_API_ void ParseGoogleTestFlagsOnly(int* argc, char** argv);
+GTEST_API_ void ParseGoogleTestFlagsOnly(int* argc, wchar_t** argv);
+
+#if GTEST_HAS_DEATH_TEST
+
+// Returns the message describing the last system error, regardless of the
+// platform.
+GTEST_API_ String GetLastErrnoDescription();
+
+# if GTEST_OS_WINDOWS
+// Provides leak-safe Windows kernel handle ownership.
+class AutoHandle {
+ public:
+  AutoHandle() : handle_(INVALID_HANDLE_VALUE) {}
+  explicit AutoHandle(HANDLE handle) : handle_(handle) {}
+
+  ~AutoHandle() { Reset(); }
+
+  HANDLE Get() const { return handle_; }
+  void Reset() { Reset(INVALID_HANDLE_VALUE); }
+  void Reset(HANDLE handle) {
+    if (handle != handle_) {
+      if (handle_ != INVALID_HANDLE_VALUE)
+        ::CloseHandle(handle_);
+      handle_ = handle;
+    }
+  }
+
+ private:
+  HANDLE handle_;
+
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(AutoHandle);
+};
+# endif  // GTEST_OS_WINDOWS
+
+// Attempts to parse a string into a positive integer pointed to by the
+// number parameter.  Returns true if that is possible.
+// GTEST_HAS_DEATH_TEST implies that we have ::std::string, so we can use
+// it here.
+template <typename Integer>
+bool ParseNaturalNumber(const ::std::string& str, Integer* number) {
+  // Fail fast if the given string does not begin with a digit;
+  // this bypasses strtoXXX's "optional leading whitespace and plus
+  // or minus sign" semantics, which are undesirable here.
+  if (str.empty() || !IsDigit(str[0])) {
+    return false;
+  }
+  errno = 0;
+
+  char* end;
+  // BiggestConvertible is the largest integer type that system-provided
+  // string-to-number conversion routines can return.
+
+# if GTEST_OS_WINDOWS && !defined(__GNUC__)
+
+  // MSVC and C++ Builder define __int64 instead of the standard long long.
+  typedef unsigned __int64 BiggestConvertible;
+  const BiggestConvertible parsed = _strtoui64(str.c_str(), &end, 10);
+
+# else
+
+  typedef unsigned long long BiggestConvertible;  // NOLINT
+  const BiggestConvertible parsed = strtoull(str.c_str(), &end, 10);
+
+# endif  // GTEST_OS_WINDOWS && !defined(__GNUC__)
+
+  const bool parse_success = *end == '\0' && errno == 0;
+
+  // TODO(vladl@google.com): Convert this to compile time assertion when it is
+  // available.
+  GTEST_CHECK_(sizeof(Integer) <= sizeof(parsed));
+
+  const Integer result = static_cast<Integer>(parsed);
+  if (parse_success && static_cast<BiggestConvertible>(result) == parsed) {
+    *number = result;
+    return true;
+  }
+  return false;
+}
+#endif  // GTEST_HAS_DEATH_TEST
+
+// TestResult contains some private methods that should be hidden from
+// Google Test user but are required for testing. This class allow our tests
+// to access them.
+//
+// This class is supplied only for the purpose of testing Google Test's own
+// constructs. Do not use it in user tests, either directly or indirectly.
+class TestResultAccessor {
+ public:
+  static void RecordProperty(TestResult* test_result,
+                             const TestProperty& property) {
+    test_result->RecordProperty(property);
+  }
+
+  static void ClearTestPartResults(TestResult* test_result) {
+    test_result->ClearTestPartResults();
+  }
+
+  static const std::vector<testing::TestPartResult>& test_part_results(
+      const TestResult& test_result) {
+    return test_result.test_part_results();
+  }
+};
+
+}  // namespace internal
+}  // namespace testing
+
+#endif  // GTEST_SRC_GTEST_INTERNAL_INL_H_
diff --git a/google-breakpad/src/testing/gtest/src/gtest-port.cc b/google-breakpad/src/testing/gtest/src/gtest-port.cc
new file mode 100644
index 0000000..a0e2d7c
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/src/gtest-port.cc
@@ -0,0 +1,787 @@
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+#include "gtest/internal/gtest-port.h"
+
+#include <limits.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#if GTEST_OS_WINDOWS_MOBILE
+# include <windows.h>  // For TerminateProcess()
+#elif GTEST_OS_WINDOWS
+# include <io.h>
+# include <sys/stat.h>
+#else
+# include <unistd.h>
+#endif  // GTEST_OS_WINDOWS_MOBILE
+
+#if GTEST_OS_MAC
+# include <mach/mach_init.h>
+# include <mach/task.h>
+# include <mach/vm_map.h>
+#endif  // GTEST_OS_MAC
+
+#if GTEST_OS_QNX
+# include <devctl.h>
+# include <sys/procfs.h>
+#endif  // GTEST_OS_QNX
+
+#include "gtest/gtest-spi.h"
+#include "gtest/gtest-message.h"
+#include "gtest/internal/gtest-internal.h"
+#include "gtest/internal/gtest-string.h"
+
+// Indicates that this translation unit is part of Google Test's
+// implementation.  It must come before gtest-internal-inl.h is
+// included, or there will be a compiler error.  This trick is to
+// prevent a user from accidentally including gtest-internal-inl.h in
+// his code.
+#define GTEST_IMPLEMENTATION_ 1
+#include "src/gtest-internal-inl.h"
+#undef GTEST_IMPLEMENTATION_
+
+namespace testing {
+namespace internal {
+
+#if defined(_MSC_VER) || defined(__BORLANDC__)
+// MSVC and C++Builder do not provide a definition of STDERR_FILENO.
+const int kStdOutFileno = 1;
+const int kStdErrFileno = 2;
+#else
+const int kStdOutFileno = STDOUT_FILENO;
+const int kStdErrFileno = STDERR_FILENO;
+#endif  // _MSC_VER
+
+#if GTEST_OS_MAC
+
+// Returns the number of threads running in the process, or 0 to indicate that
+// we cannot detect it.
+size_t GetThreadCount() {
+  const task_t task = mach_task_self();
+  mach_msg_type_number_t thread_count;
+  thread_act_array_t thread_list;
+  const kern_return_t status = task_threads(task, &thread_list, &thread_count);
+  if (status == KERN_SUCCESS) {
+    // task_threads allocates resources in thread_list and we need to free them
+    // to avoid leaks.
+    vm_deallocate(task,
+                  reinterpret_cast<vm_address_t>(thread_list),
+                  sizeof(thread_t) * thread_count);
+    return static_cast<size_t>(thread_count);
+  } else {
+    return 0;
+  }
+}
+
+#elif GTEST_OS_QNX
+
+// Returns the number of threads running in the process, or 0 to indicate that
+// we cannot detect it.
+size_t GetThreadCount() {
+  const int fd = open("/proc/self/as", O_RDONLY);
+  if (fd < 0) {
+    return 0;
+  }
+  procfs_info process_info;
+  const int status =
+      devctl(fd, DCMD_PROC_INFO, &process_info, sizeof(process_info), NULL);
+  close(fd);
+  if (status == EOK) {
+    return static_cast<size_t>(process_info.num_threads);
+  } else {
+    return 0;
+  }
+}
+
+#else
+
+size_t GetThreadCount() {
+  // There's no portable way to detect the number of threads, so we just
+  // return 0 to indicate that we cannot detect it.
+  return 0;
+}
+
+#endif  // GTEST_OS_MAC
+
+#if GTEST_USES_POSIX_RE
+
+// Implements RE.  Currently only needed for death tests.
+
+RE::~RE() {
+  if (is_valid_) {
+    // regfree'ing an invalid regex might crash because the content
+    // of the regex is undefined. Since the regex's are essentially
+    // the same, one cannot be valid (or invalid) without the other
+    // being so too.
+    regfree(&partial_regex_);
+    regfree(&full_regex_);
+  }
+  free(const_cast<char*>(pattern_));
+}
+
+// Returns true iff regular expression re matches the entire str.
+bool RE::FullMatch(const char* str, const RE& re) {
+  if (!re.is_valid_) return false;
+
+  regmatch_t match;
+  return regexec(&re.full_regex_, str, 1, &match, 0) == 0;
+}
+
+// Returns true iff regular expression re matches a substring of str
+// (including str itself).
+bool RE::PartialMatch(const char* str, const RE& re) {
+  if (!re.is_valid_) return false;
+
+  regmatch_t match;
+  return regexec(&re.partial_regex_, str, 1, &match, 0) == 0;
+}
+
+// Initializes an RE from its string representation.
+void RE::Init(const char* regex) {
+  pattern_ = posix::StrDup(regex);
+
+  // Reserves enough bytes to hold the regular expression used for a
+  // full match.
+  const size_t full_regex_len = strlen(regex) + 10;
+  char* const full_pattern = new char[full_regex_len];
+
+  snprintf(full_pattern, full_regex_len, "^(%s)$", regex);
+  is_valid_ = regcomp(&full_regex_, full_pattern, REG_EXTENDED) == 0;
+  // We want to call regcomp(&partial_regex_, ...) even if the
+  // previous expression returns false.  Otherwise partial_regex_ may
+  // not be properly initialized can may cause trouble when it's
+  // freed.
+  //
+  // Some implementation of POSIX regex (e.g. on at least some
+  // versions of Cygwin) doesn't accept the empty string as a valid
+  // regex.  We change it to an equivalent form "()" to be safe.
+  if (is_valid_) {
+    const char* const partial_regex = (*regex == '\0') ? "()" : regex;
+    is_valid_ = regcomp(&partial_regex_, partial_regex, REG_EXTENDED) == 0;
+  }
+  EXPECT_TRUE(is_valid_)
+      << "Regular expression \"" << regex
+      << "\" is not a valid POSIX Extended regular expression.";
+
+  delete[] full_pattern;
+}
+
+#elif GTEST_USES_SIMPLE_RE
+
+// Returns true iff ch appears anywhere in str (excluding the
+// terminating '\0' character).
+bool IsInSet(char ch, const char* str) {
+  return ch != '\0' && strchr(str, ch) != NULL;
+}
+
+// Returns true iff ch belongs to the given classification.  Unlike
+// similar functions in <ctype.h>, these aren't affected by the
+// current locale.
+bool IsAsciiDigit(char ch) { return '0' <= ch && ch <= '9'; }
+bool IsAsciiPunct(char ch) {
+  return IsInSet(ch, "^-!\"#$%&'()*+,./:;<=>?@[\\]_`{|}~");
+}
+bool IsRepeat(char ch) { return IsInSet(ch, "?*+"); }
+bool IsAsciiWhiteSpace(char ch) { return IsInSet(ch, " \f\n\r\t\v"); }
+bool IsAsciiWordChar(char ch) {
+  return ('a' <= ch && ch <= 'z') || ('A' <= ch && ch <= 'Z') ||
+      ('0' <= ch && ch <= '9') || ch == '_';
+}
+
+// Returns true iff "\\c" is a supported escape sequence.
+bool IsValidEscape(char c) {
+  return (IsAsciiPunct(c) || IsInSet(c, "dDfnrsStvwW"));
+}
+
+// Returns true iff the given atom (specified by escaped and pattern)
+// matches ch.  The result is undefined if the atom is invalid.
+bool AtomMatchesChar(bool escaped, char pattern_char, char ch) {
+  if (escaped) {  // "\\p" where p is pattern_char.
+    switch (pattern_char) {
+      case 'd': return IsAsciiDigit(ch);
+      case 'D': return !IsAsciiDigit(ch);
+      case 'f': return ch == '\f';
+      case 'n': return ch == '\n';
+      case 'r': return ch == '\r';
+      case 's': return IsAsciiWhiteSpace(ch);
+      case 'S': return !IsAsciiWhiteSpace(ch);
+      case 't': return ch == '\t';
+      case 'v': return ch == '\v';
+      case 'w': return IsAsciiWordChar(ch);
+      case 'W': return !IsAsciiWordChar(ch);
+    }
+    return IsAsciiPunct(pattern_char) && pattern_char == ch;
+  }
+
+  return (pattern_char == '.' && ch != '\n') || pattern_char == ch;
+}
+
+// Helper function used by ValidateRegex() to format error messages.
+String FormatRegexSyntaxError(const char* regex, int index) {
+  return (Message() << "Syntax error at index " << index
+          << " in simple regular expression \"" << regex << "\": ").GetString();
+}
+
+// Generates non-fatal failures and returns false if regex is invalid;
+// otherwise returns true.
+bool ValidateRegex(const char* regex) {
+  if (regex == NULL) {
+    // TODO(wan@google.com): fix the source file location in the
+    // assertion failures to match where the regex is used in user
+    // code.
+    ADD_FAILURE() << "NULL is not a valid simple regular expression.";
+    return false;
+  }
+
+  bool is_valid = true;
+
+  // True iff ?, *, or + can follow the previous atom.
+  bool prev_repeatable = false;
+  for (int i = 0; regex[i]; i++) {
+    if (regex[i] == '\\') {  // An escape sequence
+      i++;
+      if (regex[i] == '\0') {
+        ADD_FAILURE() << FormatRegexSyntaxError(regex, i - 1)
+                      << "'\\' cannot appear at the end.";
+        return false;
+      }
+
+      if (!IsValidEscape(regex[i])) {
+        ADD_FAILURE() << FormatRegexSyntaxError(regex, i - 1)
+                      << "invalid escape sequence \"\\" << regex[i] << "\".";
+        is_valid = false;
+      }
+      prev_repeatable = true;
+    } else {  // Not an escape sequence.
+      const char ch = regex[i];
+
+      if (ch == '^' && i > 0) {
+        ADD_FAILURE() << FormatRegexSyntaxError(regex, i)
+                      << "'^' can only appear at the beginning.";
+        is_valid = false;
+      } else if (ch == '$' && regex[i + 1] != '\0') {
+        ADD_FAILURE() << FormatRegexSyntaxError(regex, i)
+                      << "'$' can only appear at the end.";
+        is_valid = false;
+      } else if (IsInSet(ch, "()[]{}|")) {
+        ADD_FAILURE() << FormatRegexSyntaxError(regex, i)
+                      << "'" << ch << "' is unsupported.";
+        is_valid = false;
+      } else if (IsRepeat(ch) && !prev_repeatable) {
+        ADD_FAILURE() << FormatRegexSyntaxError(regex, i)
+                      << "'" << ch << "' can only follow a repeatable token.";
+        is_valid = false;
+      }
+
+      prev_repeatable = !IsInSet(ch, "^$?*+");
+    }
+  }
+
+  return is_valid;
+}
+
+// Matches a repeated regex atom followed by a valid simple regular
+// expression.  The regex atom is defined as c if escaped is false,
+// or \c otherwise.  repeat is the repetition meta character (?, *,
+// or +).  The behavior is undefined if str contains too many
+// characters to be indexable by size_t, in which case the test will
+// probably time out anyway.  We are fine with this limitation as
+// std::string has it too.
+bool MatchRepetitionAndRegexAtHead(
+    bool escaped, char c, char repeat, const char* regex,
+    const char* str) {
+  const size_t min_count = (repeat == '+') ? 1 : 0;
+  const size_t max_count = (repeat == '?') ? 1 :
+      static_cast<size_t>(-1) - 1;
+  // We cannot call numeric_limits::max() as it conflicts with the
+  // max() macro on Windows.
+
+  for (size_t i = 0; i <= max_count; ++i) {
+    // We know that the atom matches each of the first i characters in str.
+    if (i >= min_count && MatchRegexAtHead(regex, str + i)) {
+      // We have enough matches at the head, and the tail matches too.
+      // Since we only care about *whether* the pattern matches str
+      // (as opposed to *how* it matches), there is no need to find a
+      // greedy match.
+      return true;
+    }
+    if (str[i] == '\0' || !AtomMatchesChar(escaped, c, str[i]))
+      return false;
+  }
+  return false;
+}
+
+// Returns true iff regex matches a prefix of str.  regex must be a
+// valid simple regular expression and not start with "^", or the
+// result is undefined.
+bool MatchRegexAtHead(const char* regex, const char* str) {
+  if (*regex == '\0')  // An empty regex matches a prefix of anything.
+    return true;
+
+  // "$" only matches the end of a string.  Note that regex being
+  // valid guarantees that there's nothing after "$" in it.
+  if (*regex == '$')
+    return *str == '\0';
+
+  // Is the first thing in regex an escape sequence?
+  const bool escaped = *regex == '\\';
+  if (escaped)
+    ++regex;
+  if (IsRepeat(regex[1])) {
+    // MatchRepetitionAndRegexAtHead() calls MatchRegexAtHead(), so
+    // here's an indirect recursion.  It terminates as the regex gets
+    // shorter in each recursion.
+    return MatchRepetitionAndRegexAtHead(
+        escaped, regex[0], regex[1], regex + 2, str);
+  } else {
+    // regex isn't empty, isn't "$", and doesn't start with a
+    // repetition.  We match the first atom of regex with the first
+    // character of str and recurse.
+    return (*str != '\0') && AtomMatchesChar(escaped, *regex, *str) &&
+        MatchRegexAtHead(regex + 1, str + 1);
+  }
+}
+
+// Returns true iff regex matches any substring of str.  regex must be
+// a valid simple regular expression, or the result is undefined.
+//
+// The algorithm is recursive, but the recursion depth doesn't exceed
+// the regex length, so we won't need to worry about running out of
+// stack space normally.  In rare cases the time complexity can be
+// exponential with respect to the regex length + the string length,
+// but usually it's must faster (often close to linear).
+bool MatchRegexAnywhere(const char* regex, const char* str) {
+  if (regex == NULL || str == NULL)
+    return false;
+
+  if (*regex == '^')
+    return MatchRegexAtHead(regex + 1, str);
+
+  // A successful match can be anywhere in str.
+  do {
+    if (MatchRegexAtHead(regex, str))
+      return true;
+  } while (*str++ != '\0');
+  return false;
+}
+
+// Implements the RE class.
+
+RE::~RE() {
+  free(const_cast<char*>(pattern_));
+  free(const_cast<char*>(full_pattern_));
+}
+
+// Returns true iff regular expression re matches the entire str.
+bool RE::FullMatch(const char* str, const RE& re) {
+  return re.is_valid_ && MatchRegexAnywhere(re.full_pattern_, str);
+}
+
+// Returns true iff regular expression re matches a substring of str
+// (including str itself).
+bool RE::PartialMatch(const char* str, const RE& re) {
+  return re.is_valid_ && MatchRegexAnywhere(re.pattern_, str);
+}
+
+// Initializes an RE from its string representation.
+void RE::Init(const char* regex) {
+  pattern_ = full_pattern_ = NULL;
+  if (regex != NULL) {
+    pattern_ = posix::StrDup(regex);
+  }
+
+  is_valid_ = ValidateRegex(regex);
+  if (!is_valid_) {
+    // No need to calculate the full pattern when the regex is invalid.
+    return;
+  }
+
+  const size_t len = strlen(regex);
+  // Reserves enough bytes to hold the regular expression used for a
+  // full match: we need space to prepend a '^', append a '$', and
+  // terminate the string with '\0'.
+  char* buffer = static_cast<char*>(malloc(len + 3));
+  full_pattern_ = buffer;
+
+  if (*regex != '^')
+    *buffer++ = '^';  // Makes sure full_pattern_ starts with '^'.
+
+  // We don't use snprintf or strncpy, as they trigger a warning when
+  // compiled with VC++ 8.0.
+  memcpy(buffer, regex, len);
+  buffer += len;
+
+  if (len == 0 || regex[len - 1] != '$')
+    *buffer++ = '$';  // Makes sure full_pattern_ ends with '$'.
+
+  *buffer = '\0';
+}
+
+#endif  // GTEST_USES_POSIX_RE
+
+const char kUnknownFile[] = "unknown file";
+
+// Formats a source file path and a line number as they would appear
+// in an error message from the compiler used to compile this code.
+GTEST_API_ ::std::string FormatFileLocation(const char* file, int line) {
+  const char* const file_name = file == NULL ? kUnknownFile : file;
+
+  if (line < 0) {
+    return String::Format("%s:", file_name).c_str();
+  }
+#ifdef _MSC_VER
+  return String::Format("%s(%d):", file_name, line).c_str();
+#else
+  return String::Format("%s:%d:", file_name, line).c_str();
+#endif  // _MSC_VER
+}
+
+// Formats a file location for compiler-independent XML output.
+// Although this function is not platform dependent, we put it next to
+// FormatFileLocation in order to contrast the two functions.
+// Note that FormatCompilerIndependentFileLocation() does NOT append colon
+// to the file location it produces, unlike FormatFileLocation().
+GTEST_API_ ::std::string FormatCompilerIndependentFileLocation(
+    const char* file, int line) {
+  const char* const file_name = file == NULL ? kUnknownFile : file;
+
+  if (line < 0)
+    return file_name;
+  else
+    return String::Format("%s:%d", file_name, line).c_str();
+}
+
+
+GTestLog::GTestLog(GTestLogSeverity severity, const char* file, int line)
+    : severity_(severity) {
+  const char* const marker =
+      severity == GTEST_INFO ?    "[  INFO ]" :
+      severity == GTEST_WARNING ? "[WARNING]" :
+      severity == GTEST_ERROR ?   "[ ERROR ]" : "[ FATAL ]";
+  GetStream() << ::std::endl << marker << " "
+              << FormatFileLocation(file, line).c_str() << ": ";
+}
+
+// Flushes the buffers and, if severity is GTEST_FATAL, aborts the program.
+GTestLog::~GTestLog() {
+  GetStream() << ::std::endl;
+  if (severity_ == GTEST_FATAL) {
+    fflush(stderr);
+    posix::Abort();
+  }
+}
+// Disable Microsoft deprecation warnings for POSIX functions called from
+// this class (creat, dup, dup2, and close)
+#ifdef _MSC_VER
+# pragma warning(push)
+# pragma warning(disable: 4996)
+#endif  // _MSC_VER
+
+#if GTEST_HAS_STREAM_REDIRECTION
+
+// Object that captures an output stream (stdout/stderr).
+class CapturedStream {
+ public:
+  // The ctor redirects the stream to a temporary file.
+  CapturedStream(int fd) : fd_(fd), uncaptured_fd_(dup(fd)) {
+# if GTEST_OS_WINDOWS
+    char temp_dir_path[MAX_PATH + 1] = { '\0' };  // NOLINT
+    char temp_file_path[MAX_PATH + 1] = { '\0' };  // NOLINT
+
+    ::GetTempPathA(sizeof(temp_dir_path), temp_dir_path);
+    const UINT success = ::GetTempFileNameA(temp_dir_path,
+                                            "gtest_redir",
+                                            0,  // Generate unique file name.
+                                            temp_file_path);
+    GTEST_CHECK_(success != 0)
+        << "Unable to create a temporary file in " << temp_dir_path;
+    const int captured_fd = creat(temp_file_path, _S_IREAD | _S_IWRITE);
+    GTEST_CHECK_(captured_fd != -1) << "Unable to open temporary file "
+                                    << temp_file_path;
+    filename_ = temp_file_path;
+# else
+    // There's no guarantee that a test has write access to the current
+    // directory, so we create the temporary file in the /tmp directory instead.
+    // We use /tmp on most systems, and /mnt/sdcard on Android. That's because
+    // Android doesn't have /tmp.
+#  if GTEST_OS_LINUX_ANDROID
+    char name_template[] = "/mnt/sdcard/gtest_captured_stream.XXXXXX";
+#  else
+    char name_template[] = "/tmp/captured_stream.XXXXXX";
+#  endif  // GTEST_OS_LINUX_ANDROID
+    const int captured_fd = mkstemp(name_template);
+    filename_ = name_template;
+# endif  // GTEST_OS_WINDOWS
+    fflush(NULL);
+    dup2(captured_fd, fd_);
+    close(captured_fd);
+  }
+
+  ~CapturedStream() {
+    remove(filename_.c_str());
+  }
+
+  String GetCapturedString() {
+    if (uncaptured_fd_ != -1) {
+      // Restores the original stream.
+      fflush(NULL);
+      dup2(uncaptured_fd_, fd_);
+      close(uncaptured_fd_);
+      uncaptured_fd_ = -1;
+    }
+
+    FILE* const file = posix::FOpen(filename_.c_str(), "r");
+    const String content = ReadEntireFile(file);
+    posix::FClose(file);
+    return content;
+  }
+
+ private:
+  // Reads the entire content of a file as a String.
+  static String ReadEntireFile(FILE* file);
+
+  // Returns the size (in bytes) of a file.
+  static size_t GetFileSize(FILE* file);
+
+  const int fd_;  // A stream to capture.
+  int uncaptured_fd_;
+  // Name of the temporary file holding the stderr output.
+  ::std::string filename_;
+
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(CapturedStream);
+};
+
+// Returns the size (in bytes) of a file.
+size_t CapturedStream::GetFileSize(FILE* file) {
+  fseek(file, 0, SEEK_END);
+  return static_cast<size_t>(ftell(file));
+}
+
+// Reads the entire content of a file as a string.
+String CapturedStream::ReadEntireFile(FILE* file) {
+  const size_t file_size = GetFileSize(file);
+  char* const buffer = new char[file_size];
+
+  size_t bytes_last_read = 0;  // # of bytes read in the last fread()
+  size_t bytes_read = 0;       // # of bytes read so far
+
+  fseek(file, 0, SEEK_SET);
+
+  // Keeps reading the file until we cannot read further or the
+  // pre-determined file size is reached.
+  do {
+    bytes_last_read = fread(buffer+bytes_read, 1, file_size-bytes_read, file);
+    bytes_read += bytes_last_read;
+  } while (bytes_last_read > 0 && bytes_read < file_size);
+
+  const String content(buffer, bytes_read);
+  delete[] buffer;
+
+  return content;
+}
+
+# ifdef _MSC_VER
+#  pragma warning(pop)
+# endif  // _MSC_VER
+
+static CapturedStream* g_captured_stderr = NULL;
+static CapturedStream* g_captured_stdout = NULL;
+
+// Starts capturing an output stream (stdout/stderr).
+void CaptureStream(int fd, const char* stream_name, CapturedStream** stream) {
+  if (*stream != NULL) {
+    GTEST_LOG_(FATAL) << "Only one " << stream_name
+                      << " capturer can exist at a time.";
+  }
+  *stream = new CapturedStream(fd);
+}
+
+// Stops capturing the output stream and returns the captured string.
+String GetCapturedStream(CapturedStream** captured_stream) {
+  const String content = (*captured_stream)->GetCapturedString();
+
+  delete *captured_stream;
+  *captured_stream = NULL;
+
+  return content;
+}
+
+// Starts capturing stdout.
+void CaptureStdout() {
+  CaptureStream(kStdOutFileno, "stdout", &g_captured_stdout);
+}
+
+// Starts capturing stderr.
+void CaptureStderr() {
+  CaptureStream(kStdErrFileno, "stderr", &g_captured_stderr);
+}
+
+// Stops capturing stdout and returns the captured string.
+String GetCapturedStdout() { return GetCapturedStream(&g_captured_stdout); }
+
+// Stops capturing stderr and returns the captured string.
+String GetCapturedStderr() { return GetCapturedStream(&g_captured_stderr); }
+
+#endif  // GTEST_HAS_STREAM_REDIRECTION
+
+#if GTEST_HAS_DEATH_TEST
+
+// A copy of all command line arguments.  Set by InitGoogleTest().
+::std::vector<testing::internal::string> g_argvs;
+
+static const ::std::vector<testing::internal::string>* g_injected_test_argvs =
+                                        NULL;  // Owned.
+
+void SetInjectableArgvs(const ::std::vector<testing::internal::string>* argvs) {
+  if (g_injected_test_argvs != argvs)
+    delete g_injected_test_argvs;
+  g_injected_test_argvs = argvs;
+}
+
+const ::std::vector<testing::internal::string>& GetInjectableArgvs() {
+  if (g_injected_test_argvs != NULL) {
+    return *g_injected_test_argvs;
+  }
+  return g_argvs;
+}
+#endif  // GTEST_HAS_DEATH_TEST
+
+#if GTEST_OS_WINDOWS_MOBILE
+namespace posix {
+void Abort() {
+  DebugBreak();
+  TerminateProcess(GetCurrentProcess(), 1);
+}
+}  // namespace posix
+#endif  // GTEST_OS_WINDOWS_MOBILE
+
+// Returns the name of the environment variable corresponding to the
+// given flag.  For example, FlagToEnvVar("foo") will return
+// "GTEST_FOO" in the open-source version.
+static String FlagToEnvVar(const char* flag) {
+  const String full_flag =
+      (Message() << GTEST_FLAG_PREFIX_ << flag).GetString();
+
+  Message env_var;
+  for (size_t i = 0; i != full_flag.length(); i++) {
+    env_var << ToUpper(full_flag.c_str()[i]);
+  }
+
+  return env_var.GetString();
+}
+
+// Parses 'str' for a 32-bit signed integer.  If successful, writes
+// the result to *value and returns true; otherwise leaves *value
+// unchanged and returns false.
+bool ParseInt32(const Message& src_text, const char* str, Int32* value) {
+  // Parses the environment variable as a decimal integer.
+  char* end = NULL;
+  const long long_value = strtol(str, &end, 10);  // NOLINT
+
+  // Has strtol() consumed all characters in the string?
+  if (*end != '\0') {
+    // No - an invalid character was encountered.
+    Message msg;
+    msg << "WARNING: " << src_text
+        << " is expected to be a 32-bit integer, but actually"
+        << " has value \"" << str << "\".\n";
+    printf("%s", msg.GetString().c_str());
+    fflush(stdout);
+    return false;
+  }
+
+  // Is the parsed value in the range of an Int32?
+  const Int32 result = static_cast<Int32>(long_value);
+  if (long_value == LONG_MAX || long_value == LONG_MIN ||
+      // The parsed value overflows as a long.  (strtol() returns
+      // LONG_MAX or LONG_MIN when the input overflows.)
+      result != long_value
+      // The parsed value overflows as an Int32.
+      ) {
+    Message msg;
+    msg << "WARNING: " << src_text
+        << " is expected to be a 32-bit integer, but actually"
+        << " has value " << str << ", which overflows.\n";
+    printf("%s", msg.GetString().c_str());
+    fflush(stdout);
+    return false;
+  }
+
+  *value = result;
+  return true;
+}
+
+// Reads and returns the Boolean environment variable corresponding to
+// the given flag; if it's not set, returns default_value.
+//
+// The value is considered true iff it's not "0".
+bool BoolFromGTestEnv(const char* flag, bool default_value) {
+  const String env_var = FlagToEnvVar(flag);
+  const char* const string_value = posix::GetEnv(env_var.c_str());
+  return string_value == NULL ?
+      default_value : strcmp(string_value, "0") != 0;
+}
+
+// Reads and returns a 32-bit integer stored in the environment
+// variable corresponding to the given flag; if it isn't set or
+// doesn't represent a valid 32-bit integer, returns default_value.
+Int32 Int32FromGTestEnv(const char* flag, Int32 default_value) {
+  const String env_var = FlagToEnvVar(flag);
+  const char* const string_value = posix::GetEnv(env_var.c_str());
+  if (string_value == NULL) {
+    // The environment variable is not set.
+    return default_value;
+  }
+
+  Int32 result = default_value;
+  if (!ParseInt32(Message() << "Environment variable " << env_var,
+                  string_value, &result)) {
+    printf("The default value %s is used.\n",
+           (Message() << default_value).GetString().c_str());
+    fflush(stdout);
+    return default_value;
+  }
+
+  return result;
+}
+
+// Reads and returns the string environment variable corresponding to
+// the given flag; if it's not set, returns default_value.
+const char* StringFromGTestEnv(const char* flag, const char* default_value) {
+  const String env_var = FlagToEnvVar(flag);
+  const char* const value = posix::GetEnv(env_var.c_str());
+  return value == NULL ? default_value : value;
+}
+
+}  // namespace internal
+}  // namespace testing
diff --git a/google-breakpad/src/testing/gtest/src/gtest-printers.cc b/google-breakpad/src/testing/gtest/src/gtest-printers.cc
new file mode 100644
index 0000000..cfe9eed
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/src/gtest-printers.cc
@@ -0,0 +1,348 @@
+// Copyright 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Google Test - The Google C++ Testing Framework
+//
+// This file implements a universal value printer that can print a
+// value of any type T:
+//
+//   void ::testing::internal::UniversalPrinter<T>::Print(value, ostream_ptr);
+//
+// It uses the << operator when possible, and prints the bytes in the
+// object otherwise.  A user can override its behavior for a class
+// type Foo by defining either operator<<(::std::ostream&, const Foo&)
+// or void PrintTo(const Foo&, ::std::ostream*) in the namespace that
+// defines Foo.
+
+#include "gtest/gtest-printers.h"
+#include <ctype.h>
+#include <stdio.h>
+#include <ostream>  // NOLINT
+#include <string>
+#include "gtest/internal/gtest-port.h"
+
+namespace testing {
+
+namespace {
+
+using ::std::ostream;
+
+// Prints a segment of bytes in the given object.
+void PrintByteSegmentInObjectTo(const unsigned char* obj_bytes, size_t start,
+                                size_t count, ostream* os) {
+  char text[5] = "";
+  for (size_t i = 0; i != count; i++) {
+    const size_t j = start + i;
+    if (i != 0) {
+      // Organizes the bytes into groups of 2 for easy parsing by
+      // human.
+      if ((j % 2) == 0)
+        *os << ' ';
+      else
+        *os << '-';
+    }
+    GTEST_SNPRINTF_(text, sizeof(text), "%02X", obj_bytes[j]);
+    *os << text;
+  }
+}
+
+// Prints the bytes in the given value to the given ostream.
+void PrintBytesInObjectToImpl(const unsigned char* obj_bytes, size_t count,
+                              ostream* os) {
+  // Tells the user how big the object is.
+  *os << count << "-byte object <";
+
+  const size_t kThreshold = 132;
+  const size_t kChunkSize = 64;
+  // If the object size is bigger than kThreshold, we'll have to omit
+  // some details by printing only the first and the last kChunkSize
+  // bytes.
+  // TODO(wan): let the user control the threshold using a flag.
+  if (count < kThreshold) {
+    PrintByteSegmentInObjectTo(obj_bytes, 0, count, os);
+  } else {
+    PrintByteSegmentInObjectTo(obj_bytes, 0, kChunkSize, os);
+    *os << " ... ";
+    // Rounds up to 2-byte boundary.
+    const size_t resume_pos = (count - kChunkSize + 1)/2*2;
+    PrintByteSegmentInObjectTo(obj_bytes, resume_pos, count - resume_pos, os);
+  }
+  *os << ">";
+}
+
+}  // namespace
+
+namespace internal2 {
+
+// Delegates to PrintBytesInObjectToImpl() to print the bytes in the
+// given object.  The delegation simplifies the implementation, which
+// uses the << operator and thus is easier done outside of the
+// ::testing::internal namespace, which contains a << operator that
+// sometimes conflicts with the one in STL.
+void PrintBytesInObjectTo(const unsigned char* obj_bytes, size_t count,
+                          ostream* os) {
+  PrintBytesInObjectToImpl(obj_bytes, count, os);
+}
+
+}  // namespace internal2
+
+namespace internal {
+
+// Depending on the value of a char (or wchar_t), we print it in one
+// of three formats:
+//   - as is if it's a printable ASCII (e.g. 'a', '2', ' '),
+//   - as a hexidecimal escape sequence (e.g. '\x7F'), or
+//   - as a special escape sequence (e.g. '\r', '\n').
+enum CharFormat {
+  kAsIs,
+  kHexEscape,
+  kSpecialEscape
+};
+
+// Returns true if c is a printable ASCII character.  We test the
+// value of c directly instead of calling isprint(), which is buggy on
+// Windows Mobile.
+inline bool IsPrintableAscii(wchar_t c) {
+  return 0x20 <= c && c <= 0x7E;
+}
+
+// Prints a wide or narrow char c as a character literal without the
+// quotes, escaping it when necessary; returns how c was formatted.
+// The template argument UnsignedChar is the unsigned version of Char,
+// which is the type of c.
+template <typename UnsignedChar, typename Char>
+static CharFormat PrintAsCharLiteralTo(Char c, ostream* os) {
+  switch (static_cast<wchar_t>(c)) {
+    case L'\0':
+      *os << "\\0";
+      break;
+    case L'\'':
+      *os << "\\'";
+      break;
+    case L'\\':
+      *os << "\\\\";
+      break;
+    case L'\a':
+      *os << "\\a";
+      break;
+    case L'\b':
+      *os << "\\b";
+      break;
+    case L'\f':
+      *os << "\\f";
+      break;
+    case L'\n':
+      *os << "\\n";
+      break;
+    case L'\r':
+      *os << "\\r";
+      break;
+    case L'\t':
+      *os << "\\t";
+      break;
+    case L'\v':
+      *os << "\\v";
+      break;
+    default:
+      if (IsPrintableAscii(c)) {
+        *os << static_cast<char>(c);
+        return kAsIs;
+      } else {
+        *os << String::Format("\\x%X", static_cast<UnsignedChar>(c));
+        return kHexEscape;
+      }
+  }
+  return kSpecialEscape;
+}
+
+// Prints a char c as if it's part of a string literal, escaping it when
+// necessary; returns how c was formatted.
+static CharFormat PrintAsWideStringLiteralTo(wchar_t c, ostream* os) {
+  switch (c) {
+    case L'\'':
+      *os << "'";
+      return kAsIs;
+    case L'"':
+      *os << "\\\"";
+      return kSpecialEscape;
+    default:
+      return PrintAsCharLiteralTo<wchar_t>(c, os);
+  }
+}
+
+// Prints a char c as if it's part of a string literal, escaping it when
+// necessary; returns how c was formatted.
+static CharFormat PrintAsNarrowStringLiteralTo(char c, ostream* os) {
+  return PrintAsWideStringLiteralTo(static_cast<unsigned char>(c), os);
+}
+
+// Prints a wide or narrow character c and its code.  '\0' is printed
+// as "'\\0'", other unprintable characters are also properly escaped
+// using the standard C++ escape sequence.  The template argument
+// UnsignedChar is the unsigned version of Char, which is the type of c.
+template <typename UnsignedChar, typename Char>
+void PrintCharAndCodeTo(Char c, ostream* os) {
+  // First, print c as a literal in the most readable form we can find.
+  *os << ((sizeof(c) > 1) ? "L'" : "'");
+  const CharFormat format = PrintAsCharLiteralTo<UnsignedChar>(c, os);
+  *os << "'";
+
+  // To aid user debugging, we also print c's code in decimal, unless
+  // it's 0 (in which case c was printed as '\\0', making the code
+  // obvious).
+  if (c == 0)
+    return;
+  *os << " (" << String::Format("%d", c).c_str();
+
+  // For more convenience, we print c's code again in hexidecimal,
+  // unless c was already printed in the form '\x##' or the code is in
+  // [1, 9].
+  if (format == kHexEscape || (1 <= c && c <= 9)) {
+    // Do nothing.
+  } else {
+    *os << String::Format(", 0x%X",
+                          static_cast<UnsignedChar>(c)).c_str();
+  }
+  *os << ")";
+}
+
+void PrintTo(unsigned char c, ::std::ostream* os) {
+  PrintCharAndCodeTo<unsigned char>(c, os);
+}
+void PrintTo(signed char c, ::std::ostream* os) {
+  PrintCharAndCodeTo<unsigned char>(c, os);
+}
+
+// Prints a wchar_t as a symbol if it is printable or as its internal
+// code otherwise and also as its code.  L'\0' is printed as "L'\\0'".
+void PrintTo(wchar_t wc, ostream* os) {
+  PrintCharAndCodeTo<wchar_t>(wc, os);
+}
+
+// Prints the given array of characters to the ostream.
+// The array starts at *begin, the length is len, it may include '\0' characters
+// and may not be null-terminated.
+static void PrintCharsAsStringTo(const char* begin, size_t len, ostream* os) {
+  *os << "\"";
+  bool is_previous_hex = false;
+  for (size_t index = 0; index < len; ++index) {
+    const char cur = begin[index];
+    if (is_previous_hex && IsXDigit(cur)) {
+      // Previous character is of '\x..' form and this character can be
+      // interpreted as another hexadecimal digit in its number. Break string to
+      // disambiguate.
+      *os << "\" \"";
+    }
+    is_previous_hex = PrintAsNarrowStringLiteralTo(cur, os) == kHexEscape;
+  }
+  *os << "\"";
+}
+
+// Prints a (const) char array of 'len' elements, starting at address 'begin'.
+void UniversalPrintArray(const char* begin, size_t len, ostream* os) {
+  PrintCharsAsStringTo(begin, len, os);
+}
+
+// Prints the given array of wide characters to the ostream.
+// The array starts at *begin, the length is len, it may include L'\0'
+// characters and may not be null-terminated.
+static void PrintWideCharsAsStringTo(const wchar_t* begin, size_t len,
+                                     ostream* os) {
+  *os << "L\"";
+  bool is_previous_hex = false;
+  for (size_t index = 0; index < len; ++index) {
+    const wchar_t cur = begin[index];
+    if (is_previous_hex && isascii(cur) && IsXDigit(static_cast<char>(cur))) {
+      // Previous character is of '\x..' form and this character can be
+      // interpreted as another hexadecimal digit in its number. Break string to
+      // disambiguate.
+      *os << "\" L\"";
+    }
+    is_previous_hex = PrintAsWideStringLiteralTo(cur, os) == kHexEscape;
+  }
+  *os << "\"";
+}
+
+// Prints the given C string to the ostream.
+void PrintTo(const char* s, ostream* os) {
+  if (s == NULL) {
+    *os << "NULL";
+  } else {
+    *os << ImplicitCast_<const void*>(s) << " pointing to ";
+    PrintCharsAsStringTo(s, strlen(s), os);
+  }
+}
+
+// MSVC compiler can be configured to define whar_t as a typedef
+// of unsigned short. Defining an overload for const wchar_t* in that case
+// would cause pointers to unsigned shorts be printed as wide strings,
+// possibly accessing more memory than intended and causing invalid
+// memory accesses. MSVC defines _NATIVE_WCHAR_T_DEFINED symbol when
+// wchar_t is implemented as a native type.
+#if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED)
+// Prints the given wide C string to the ostream.
+void PrintTo(const wchar_t* s, ostream* os) {
+  if (s == NULL) {
+    *os << "NULL";
+  } else {
+    *os << ImplicitCast_<const void*>(s) << " pointing to ";
+    PrintWideCharsAsStringTo(s, wcslen(s), os);
+  }
+}
+#endif  // wchar_t is native
+
+// Prints a ::string object.
+#if GTEST_HAS_GLOBAL_STRING
+void PrintStringTo(const ::string& s, ostream* os) {
+  PrintCharsAsStringTo(s.data(), s.size(), os);
+}
+#endif  // GTEST_HAS_GLOBAL_STRING
+
+void PrintStringTo(const ::std::string& s, ostream* os) {
+  PrintCharsAsStringTo(s.data(), s.size(), os);
+}
+
+// Prints a ::wstring object.
+#if GTEST_HAS_GLOBAL_WSTRING
+void PrintWideStringTo(const ::wstring& s, ostream* os) {
+  PrintWideCharsAsStringTo(s.data(), s.size(), os);
+}
+#endif  // GTEST_HAS_GLOBAL_WSTRING
+
+#if GTEST_HAS_STD_WSTRING
+void PrintWideStringTo(const ::std::wstring& s, ostream* os) {
+  PrintWideCharsAsStringTo(s.data(), s.size(), os);
+}
+#endif  // GTEST_HAS_STD_WSTRING
+
+}  // namespace internal
+
+}  // namespace testing
diff --git a/google-breakpad/src/testing/gtest/src/gtest-test-part.cc b/google-breakpad/src/testing/gtest/src/gtest-test-part.cc
new file mode 100644
index 0000000..5ddc67c
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/src/gtest-test-part.cc
@@ -0,0 +1,110 @@
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: mheule@google.com (Markus Heule)
+//
+// The Google C++ Testing Framework (Google Test)
+
+#include "gtest/gtest-test-part.h"
+
+// Indicates that this translation unit is part of Google Test's
+// implementation.  It must come before gtest-internal-inl.h is
+// included, or there will be a compiler error.  This trick is to
+// prevent a user from accidentally including gtest-internal-inl.h in
+// his code.
+#define GTEST_IMPLEMENTATION_ 1
+#include "src/gtest-internal-inl.h"
+#undef GTEST_IMPLEMENTATION_
+
+namespace testing {
+
+using internal::GetUnitTestImpl;
+
+// Gets the summary of the failure message by omitting the stack trace
+// in it.
+internal::String TestPartResult::ExtractSummary(const char* message) {
+  const char* const stack_trace = strstr(message, internal::kStackTraceMarker);
+  return stack_trace == NULL ? internal::String(message) :
+      internal::String(message, stack_trace - message);
+}
+
+// Prints a TestPartResult object.
+std::ostream& operator<<(std::ostream& os, const TestPartResult& result) {
+  return os
+      << result.file_name() << ":" << result.line_number() << ": "
+      << (result.type() == TestPartResult::kSuccess ? "Success" :
+          result.type() == TestPartResult::kFatalFailure ? "Fatal failure" :
+          "Non-fatal failure") << ":\n"
+      << result.message() << std::endl;
+}
+
+// Appends a TestPartResult to the array.
+void TestPartResultArray::Append(const TestPartResult& result) {
+  array_.push_back(result);
+}
+
+// Returns the TestPartResult at the given index (0-based).
+const TestPartResult& TestPartResultArray::GetTestPartResult(int index) const {
+  if (index < 0 || index >= size()) {
+    printf("\nInvalid index (%d) into TestPartResultArray.\n", index);
+    internal::posix::Abort();
+  }
+
+  return array_[index];
+}
+
+// Returns the number of TestPartResult objects in the array.
+int TestPartResultArray::size() const {
+  return static_cast<int>(array_.size());
+}
+
+namespace internal {
+
+HasNewFatalFailureHelper::HasNewFatalFailureHelper()
+    : has_new_fatal_failure_(false),
+      original_reporter_(GetUnitTestImpl()->
+                         GetTestPartResultReporterForCurrentThread()) {
+  GetUnitTestImpl()->SetTestPartResultReporterForCurrentThread(this);
+}
+
+HasNewFatalFailureHelper::~HasNewFatalFailureHelper() {
+  GetUnitTestImpl()->SetTestPartResultReporterForCurrentThread(
+      original_reporter_);
+}
+
+void HasNewFatalFailureHelper::ReportTestPartResult(
+    const TestPartResult& result) {
+  if (result.fatally_failed())
+    has_new_fatal_failure_ = true;
+  original_reporter_->ReportTestPartResult(result);
+}
+
+}  // namespace internal
+
+}  // namespace testing
diff --git a/google-breakpad/src/testing/gtest/src/gtest-typed-test.cc b/google-breakpad/src/testing/gtest/src/gtest-typed-test.cc
new file mode 100644
index 0000000..a5cc88f
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/src/gtest-typed-test.cc
@@ -0,0 +1,110 @@
+// Copyright 2008 Google Inc.
+// All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+#include "gtest/gtest-typed-test.h"
+#include "gtest/gtest.h"
+
+namespace testing {
+namespace internal {
+
+#if GTEST_HAS_TYPED_TEST_P
+
+// Skips to the first non-space char in str. Returns an empty string if str
+// contains only whitespace characters.
+static const char* SkipSpaces(const char* str) {
+  while (IsSpace(*str))
+    str++;
+  return str;
+}
+
+// Verifies that registered_tests match the test names in
+// defined_test_names_; returns registered_tests if successful, or
+// aborts the program otherwise.
+const char* TypedTestCasePState::VerifyRegisteredTestNames(
+    const char* file, int line, const char* registered_tests) {
+  typedef ::std::set<const char*>::const_iterator DefinedTestIter;
+  registered_ = true;
+
+  // Skip initial whitespace in registered_tests since some
+  // preprocessors prefix stringizied literals with whitespace.
+  registered_tests = SkipSpaces(registered_tests);
+
+  Message errors;
+  ::std::set<String> tests;
+  for (const char* names = registered_tests; names != NULL;
+       names = SkipComma(names)) {
+    const String name = GetPrefixUntilComma(names);
+    if (tests.count(name) != 0) {
+      errors << "Test " << name << " is listed more than once.\n";
+      continue;
+    }
+
+    bool found = false;
+    for (DefinedTestIter it = defined_test_names_.begin();
+         it != defined_test_names_.end();
+         ++it) {
+      if (name == *it) {
+        found = true;
+        break;
+      }
+    }
+
+    if (found) {
+      tests.insert(name);
+    } else {
+      errors << "No test named " << name
+             << " can be found in this test case.\n";
+    }
+  }
+
+  for (DefinedTestIter it = defined_test_names_.begin();
+       it != defined_test_names_.end();
+       ++it) {
+    if (tests.count(*it) == 0) {
+      errors << "You forgot to list test " << *it << ".\n";
+    }
+  }
+
+  const String& errors_str = errors.GetString();
+  if (errors_str != "") {
+    fprintf(stderr, "%s %s", FormatFileLocation(file, line).c_str(),
+            errors_str.c_str());
+    fflush(stderr);
+    posix::Abort();
+  }
+
+  return registered_tests;
+}
+
+#endif  // GTEST_HAS_TYPED_TEST_P
+
+}  // namespace internal
+}  // namespace testing
diff --git a/google-breakpad/src/testing/gtest/src/gtest.cc b/google-breakpad/src/testing/gtest/src/gtest.cc
new file mode 100644
index 0000000..78f113e
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/src/gtest.cc
@@ -0,0 +1,4930 @@
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+//
+// The Google C++ Testing Framework (Google Test)
+
+#include "gtest/gtest.h"
+#include "gtest/gtest-spi.h"
+
+#include <ctype.h>
+#include <math.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+#include <wchar.h>
+#include <wctype.h>
+
+#include <algorithm>
+#include <ostream>  // NOLINT
+#include <sstream>
+#include <vector>
+
+#if GTEST_OS_LINUX
+
+// TODO(kenton@google.com): Use autoconf to detect availability of
+// gettimeofday().
+# define GTEST_HAS_GETTIMEOFDAY_ 1
+
+# include <fcntl.h>  // NOLINT
+# include <limits.h>  // NOLINT
+# include <sched.h>  // NOLINT
+// Declares vsnprintf().  This header is not available on Windows.
+# include <strings.h>  // NOLINT
+# include <sys/mman.h>  // NOLINT
+# include <sys/time.h>  // NOLINT
+# include <unistd.h>  // NOLINT
+# include <string>
+
+#elif GTEST_OS_SYMBIAN
+# define GTEST_HAS_GETTIMEOFDAY_ 1
+# include <sys/time.h>  // NOLINT
+
+#elif GTEST_OS_ZOS
+# define GTEST_HAS_GETTIMEOFDAY_ 1
+# include <sys/time.h>  // NOLINT
+
+// On z/OS we additionally need strings.h for strcasecmp.
+# include <strings.h>  // NOLINT
+
+#elif GTEST_OS_WINDOWS_MOBILE  // We are on Windows CE.
+
+# include <windows.h>  // NOLINT
+
+#elif GTEST_OS_WINDOWS  // We are on Windows proper.
+
+# include <io.h>  // NOLINT
+# include <sys/timeb.h>  // NOLINT
+# include <sys/types.h>  // NOLINT
+# include <sys/stat.h>  // NOLINT
+
+# if GTEST_OS_WINDOWS_MINGW
+// MinGW has gettimeofday() but not _ftime64().
+// TODO(kenton@google.com): Use autoconf to detect availability of
+//   gettimeofday().
+// TODO(kenton@google.com): There are other ways to get the time on
+//   Windows, like GetTickCount() or GetSystemTimeAsFileTime().  MinGW
+//   supports these.  consider using them instead.
+#  define GTEST_HAS_GETTIMEOFDAY_ 1
+#  include <sys/time.h>  // NOLINT
+# endif  // GTEST_OS_WINDOWS_MINGW
+
+// cpplint thinks that the header is already included, so we want to
+// silence it.
+# include <windows.h>  // NOLINT
+
+#else
+
+// Assume other platforms have gettimeofday().
+// TODO(kenton@google.com): Use autoconf to detect availability of
+//   gettimeofday().
+# define GTEST_HAS_GETTIMEOFDAY_ 1
+
+// cpplint thinks that the header is already included, so we want to
+// silence it.
+# include <sys/time.h>  // NOLINT
+# include <unistd.h>  // NOLINT
+
+#endif  // GTEST_OS_LINUX
+
+#if GTEST_HAS_EXCEPTIONS
+# include <stdexcept>
+#endif
+
+#if GTEST_CAN_STREAM_RESULTS_
+# include <arpa/inet.h>  // NOLINT
+# include <netdb.h>  // NOLINT
+#endif
+
+// Indicates that this translation unit is part of Google Test's
+// implementation.  It must come before gtest-internal-inl.h is
+// included, or there will be a compiler error.  This trick is to
+// prevent a user from accidentally including gtest-internal-inl.h in
+// his code.
+#define GTEST_IMPLEMENTATION_ 1
+#include "src/gtest-internal-inl.h"
+#undef GTEST_IMPLEMENTATION_
+
+#if GTEST_OS_WINDOWS
+# define vsnprintf _vsnprintf
+#endif  // GTEST_OS_WINDOWS
+
+namespace testing {
+
+using internal::CountIf;
+using internal::ForEach;
+using internal::GetElementOr;
+using internal::Shuffle;
+
+// Constants.
+
+// A test whose test case name or test name matches this filter is
+// disabled and not run.
+static const char kDisableTestFilter[] = "DISABLED_*:*/DISABLED_*";
+
+// A test case whose name matches this filter is considered a death
+// test case and will be run before test cases whose name doesn't
+// match this filter.
+static const char kDeathTestCaseFilter[] = "*DeathTest:*DeathTest/*";
+
+// A test filter that matches everything.
+static const char kUniversalFilter[] = "*";
+
+// The default output file for XML output.
+static const char kDefaultOutputFile[] = "test_detail.xml";
+
+// The environment variable name for the test shard index.
+static const char kTestShardIndex[] = "GTEST_SHARD_INDEX";
+// The environment variable name for the total number of test shards.
+static const char kTestTotalShards[] = "GTEST_TOTAL_SHARDS";
+// The environment variable name for the test shard status file.
+static const char kTestShardStatusFile[] = "GTEST_SHARD_STATUS_FILE";
+
+namespace internal {
+
+// The text used in failure messages to indicate the start of the
+// stack trace.
+const char kStackTraceMarker[] = "\nStack trace:\n";
+
+// g_help_flag is true iff the --help flag or an equivalent form is
+// specified on the command line.
+bool g_help_flag = false;
+
+}  // namespace internal
+
+GTEST_DEFINE_bool_(
+    also_run_disabled_tests,
+    internal::BoolFromGTestEnv("also_run_disabled_tests", false),
+    "Run disabled tests too, in addition to the tests normally being run.");
+
+GTEST_DEFINE_bool_(
+    break_on_failure,
+    internal::BoolFromGTestEnv("break_on_failure", false),
+    "True iff a failed assertion should be a debugger break-point.");
+
+GTEST_DEFINE_bool_(
+    catch_exceptions,
+    internal::BoolFromGTestEnv("catch_exceptions", true),
+    "True iff " GTEST_NAME_
+    " should catch exceptions and treat them as test failures.");
+
+GTEST_DEFINE_string_(
+    color,
+    internal::StringFromGTestEnv("color", "auto"),
+    "Whether to use colors in the output.  Valid values: yes, no, "
+    "and auto.  'auto' means to use colors if the output is "
+    "being sent to a terminal and the TERM environment variable "
+    "is set to xterm, xterm-color, xterm-256color, linux or cygwin.");
+
+GTEST_DEFINE_string_(
+    filter,
+    internal::StringFromGTestEnv("filter", kUniversalFilter),
+    "A colon-separated list of glob (not regex) patterns "
+    "for filtering the tests to run, optionally followed by a "
+    "'-' and a : separated list of negative patterns (tests to "
+    "exclude).  A test is run if it matches one of the positive "
+    "patterns and does not match any of the negative patterns.");
+
+GTEST_DEFINE_bool_(list_tests, false,
+                   "List all tests without running them.");
+
+GTEST_DEFINE_string_(
+    output,
+    internal::StringFromGTestEnv("output", ""),
+    "A format (currently must be \"xml\"), optionally followed "
+    "by a colon and an output file name or directory. A directory "
+    "is indicated by a trailing pathname separator. "
+    "Examples: \"xml:filename.xml\", \"xml::directoryname/\". "
+    "If a directory is specified, output files will be created "
+    "within that directory, with file-names based on the test "
+    "executable's name and, if necessary, made unique by adding "
+    "digits.");
+
+GTEST_DEFINE_bool_(
+    print_time,
+    internal::BoolFromGTestEnv("print_time", true),
+    "True iff " GTEST_NAME_
+    " should display elapsed time in text output.");
+
+GTEST_DEFINE_int32_(
+    random_seed,
+    internal::Int32FromGTestEnv("random_seed", 0),
+    "Random number seed to use when shuffling test orders.  Must be in range "
+    "[1, 99999], or 0 to use a seed based on the current time.");
+
+GTEST_DEFINE_int32_(
+    repeat,
+    internal::Int32FromGTestEnv("repeat", 1),
+    "How many times to repeat each test.  Specify a negative number "
+    "for repeating forever.  Useful for shaking out flaky tests.");
+
+GTEST_DEFINE_bool_(
+    show_internal_stack_frames, false,
+    "True iff " GTEST_NAME_ " should include internal stack frames when "
+    "printing test failure stack traces.");
+
+GTEST_DEFINE_bool_(
+    shuffle,
+    internal::BoolFromGTestEnv("shuffle", false),
+    "True iff " GTEST_NAME_
+    " should randomize tests' order on every run.");
+
+GTEST_DEFINE_int32_(
+    stack_trace_depth,
+    internal::Int32FromGTestEnv("stack_trace_depth", kMaxStackTraceDepth),
+    "The maximum number of stack frames to print when an "
+    "assertion fails.  The valid range is 0 through 100, inclusive.");
+
+GTEST_DEFINE_string_(
+    stream_result_to,
+    internal::StringFromGTestEnv("stream_result_to", ""),
+    "This flag specifies the host name and the port number on which to stream "
+    "test results. Example: \"localhost:555\". The flag is effective only on "
+    "Linux.");
+
+GTEST_DEFINE_bool_(
+    throw_on_failure,
+    internal::BoolFromGTestEnv("throw_on_failure", false),
+    "When this flag is specified, a failed assertion will throw an exception "
+    "if exceptions are enabled or exit the program with a non-zero code "
+    "otherwise.");
+
+namespace internal {
+
+// Generates a random number from [0, range), using a Linear
+// Congruential Generator (LCG).  Crashes if 'range' is 0 or greater
+// than kMaxRange.
+UInt32 Random::Generate(UInt32 range) {
+  // These constants are the same as are used in glibc's rand(3).
+  state_ = (1103515245U*state_ + 12345U) % kMaxRange;
+
+  GTEST_CHECK_(range > 0)
+      << "Cannot generate a number in the range [0, 0).";
+  GTEST_CHECK_(range <= kMaxRange)
+      << "Generation of a number in [0, " << range << ") was requested, "
+      << "but this can only generate numbers in [0, " << kMaxRange << ").";
+
+  // Converting via modulus introduces a bit of downward bias, but
+  // it's simple, and a linear congruential generator isn't too good
+  // to begin with.
+  return state_ % range;
+}
+
+// GTestIsInitialized() returns true iff the user has initialized
+// Google Test.  Useful for catching the user mistake of not initializing
+// Google Test before calling RUN_ALL_TESTS().
+//
+// A user must call testing::InitGoogleTest() to initialize Google
+// Test.  g_init_gtest_count is set to the number of times
+// InitGoogleTest() has been called.  We don't protect this variable
+// under a mutex as it is only accessed in the main thread.
+GTEST_API_ int g_init_gtest_count = 0;
+static bool GTestIsInitialized() { return g_init_gtest_count != 0; }
+
+// Iterates over a vector of TestCases, keeping a running sum of the
+// results of calling a given int-returning method on each.
+// Returns the sum.
+static int SumOverTestCaseList(const std::vector<TestCase*>& case_list,
+                               int (TestCase::*method)() const) {
+  int sum = 0;
+  for (size_t i = 0; i < case_list.size(); i++) {
+    sum += (case_list[i]->*method)();
+  }
+  return sum;
+}
+
+// Returns true iff the test case passed.
+static bool TestCasePassed(const TestCase* test_case) {
+  return test_case->should_run() && test_case->Passed();
+}
+
+// Returns true iff the test case failed.
+static bool TestCaseFailed(const TestCase* test_case) {
+  return test_case->should_run() && test_case->Failed();
+}
+
+// Returns true iff test_case contains at least one test that should
+// run.
+static bool ShouldRunTestCase(const TestCase* test_case) {
+  return test_case->should_run();
+}
+
+// AssertHelper constructor.
+AssertHelper::AssertHelper(TestPartResult::Type type,
+                           const char* file,
+                           int line,
+                           const char* message)
+    : data_(new AssertHelperData(type, file, line, message)) {
+}
+
+AssertHelper::~AssertHelper() {
+  delete data_;
+}
+
+// Message assignment, for assertion streaming support.
+void AssertHelper::operator=(const Message& message) const {
+  UnitTest::GetInstance()->
+    AddTestPartResult(data_->type, data_->file, data_->line,
+                      AppendUserMessage(data_->message, message),
+                      UnitTest::GetInstance()->impl()
+                      ->CurrentOsStackTraceExceptTop(1)
+                      // Skips the stack frame for this function itself.
+                      );  // NOLINT
+}
+
+// Mutex for linked pointers.
+GTEST_API_ GTEST_DEFINE_STATIC_MUTEX_(g_linked_ptr_mutex);
+
+// Application pathname gotten in InitGoogleTest.
+String g_executable_path;
+
+// Returns the current application's name, removing directory path if that
+// is present.
+FilePath GetCurrentExecutableName() {
+  FilePath result;
+
+#if GTEST_OS_WINDOWS
+  result.Set(FilePath(g_executable_path).RemoveExtension("exe"));
+#else
+  result.Set(FilePath(g_executable_path));
+#endif  // GTEST_OS_WINDOWS
+
+  return result.RemoveDirectoryName();
+}
+
+// Functions for processing the gtest_output flag.
+
+// Returns the output format, or "" for normal printed output.
+String UnitTestOptions::GetOutputFormat() {
+  const char* const gtest_output_flag = GTEST_FLAG(output).c_str();
+  if (gtest_output_flag == NULL) return String("");
+
+  const char* const colon = strchr(gtest_output_flag, ':');
+  return (colon == NULL) ?
+      String(gtest_output_flag) :
+      String(gtest_output_flag, colon - gtest_output_flag);
+}
+
+// Returns the name of the requested output file, or the default if none
+// was explicitly specified.
+String UnitTestOptions::GetAbsolutePathToOutputFile() {
+  const char* const gtest_output_flag = GTEST_FLAG(output).c_str();
+  if (gtest_output_flag == NULL)
+    return String("");
+
+  const char* const colon = strchr(gtest_output_flag, ':');
+  if (colon == NULL)
+    return String(internal::FilePath::ConcatPaths(
+               internal::FilePath(
+                   UnitTest::GetInstance()->original_working_dir()),
+               internal::FilePath(kDefaultOutputFile)).ToString() );
+
+  internal::FilePath output_name(colon + 1);
+  if (!output_name.IsAbsolutePath())
+    // TODO(wan@google.com): on Windows \some\path is not an absolute
+    // path (as its meaning depends on the current drive), yet the
+    // following logic for turning it into an absolute path is wrong.
+    // Fix it.
+    output_name = internal::FilePath::ConcatPaths(
+        internal::FilePath(UnitTest::GetInstance()->original_working_dir()),
+        internal::FilePath(colon + 1));
+
+  if (!output_name.IsDirectory())
+    return output_name.ToString();
+
+  internal::FilePath result(internal::FilePath::GenerateUniqueFileName(
+      output_name, internal::GetCurrentExecutableName(),
+      GetOutputFormat().c_str()));
+  return result.ToString();
+}
+
+// Returns true iff the wildcard pattern matches the string.  The
+// first ':' or '\0' character in pattern marks the end of it.
+//
+// This recursive algorithm isn't very efficient, but is clear and
+// works well enough for matching test names, which are short.
+bool UnitTestOptions::PatternMatchesString(const char *pattern,
+                                           const char *str) {
+  switch (*pattern) {
+    case '\0':
+    case ':':  // Either ':' or '\0' marks the end of the pattern.
+      return *str == '\0';
+    case '?':  // Matches any single character.
+      return *str != '\0' && PatternMatchesString(pattern + 1, str + 1);
+    case '*':  // Matches any string (possibly empty) of characters.
+      return (*str != '\0' && PatternMatchesString(pattern, str + 1)) ||
+          PatternMatchesString(pattern + 1, str);
+    default:  // Non-special character.  Matches itself.
+      return *pattern == *str &&
+          PatternMatchesString(pattern + 1, str + 1);
+  }
+}
+
+bool UnitTestOptions::MatchesFilter(const String& name, const char* filter) {
+  const char *cur_pattern = filter;
+  for (;;) {
+    if (PatternMatchesString(cur_pattern, name.c_str())) {
+      return true;
+    }
+
+    // Finds the next pattern in the filter.
+    cur_pattern = strchr(cur_pattern, ':');
+
+    // Returns if no more pattern can be found.
+    if (cur_pattern == NULL) {
+      return false;
+    }
+
+    // Skips the pattern separater (the ':' character).
+    cur_pattern++;
+  }
+}
+
+// TODO(keithray): move String function implementations to gtest-string.cc.
+
+// Returns true iff the user-specified filter matches the test case
+// name and the test name.
+bool UnitTestOptions::FilterMatchesTest(const String &test_case_name,
+                                        const String &test_name) {
+  const String& full_name = String::Format("%s.%s",
+                                           test_case_name.c_str(),
+                                           test_name.c_str());
+
+  // Split --gtest_filter at '-', if there is one, to separate into
+  // positive filter and negative filter portions
+  const char* const p = GTEST_FLAG(filter).c_str();
+  const char* const dash = strchr(p, '-');
+  String positive;
+  String negative;
+  if (dash == NULL) {
+    positive = GTEST_FLAG(filter).c_str();  // Whole string is a positive filter
+    negative = String("");
+  } else {
+    positive = String(p, dash - p);  // Everything up to the dash
+    negative = String(dash+1);       // Everything after the dash
+    if (positive.empty()) {
+      // Treat '-test1' as the same as '*-test1'
+      positive = kUniversalFilter;
+    }
+  }
+
+  // A filter is a colon-separated list of patterns.  It matches a
+  // test if any pattern in it matches the test.
+  return (MatchesFilter(full_name, positive.c_str()) &&
+          !MatchesFilter(full_name, negative.c_str()));
+}
+
+#if GTEST_HAS_SEH
+// Returns EXCEPTION_EXECUTE_HANDLER if Google Test should handle the
+// given SEH exception, or EXCEPTION_CONTINUE_SEARCH otherwise.
+// This function is useful as an __except condition.
+int UnitTestOptions::GTestShouldProcessSEH(DWORD exception_code) {
+  // Google Test should handle a SEH exception if:
+  //   1. the user wants it to, AND
+  //   2. this is not a breakpoint exception, AND
+  //   3. this is not a C++ exception (VC++ implements them via SEH,
+  //      apparently).
+  //
+  // SEH exception code for C++ exceptions.
+  // (see http://support.microsoft.com/kb/185294 for more information).
+  const DWORD kCxxExceptionCode = 0xe06d7363;
+
+  bool should_handle = true;
+
+  if (!GTEST_FLAG(catch_exceptions))
+    should_handle = false;
+  else if (exception_code == EXCEPTION_BREAKPOINT)
+    should_handle = false;
+  else if (exception_code == kCxxExceptionCode)
+    should_handle = false;
+
+  return should_handle ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH;
+}
+#endif  // GTEST_HAS_SEH
+
+}  // namespace internal
+
+// The c'tor sets this object as the test part result reporter used by
+// Google Test.  The 'result' parameter specifies where to report the
+// results. Intercepts only failures from the current thread.
+ScopedFakeTestPartResultReporter::ScopedFakeTestPartResultReporter(
+    TestPartResultArray* result)
+    : intercept_mode_(INTERCEPT_ONLY_CURRENT_THREAD),
+      result_(result) {
+  Init();
+}
+
+// The c'tor sets this object as the test part result reporter used by
+// Google Test.  The 'result' parameter specifies where to report the
+// results.
+ScopedFakeTestPartResultReporter::ScopedFakeTestPartResultReporter(
+    InterceptMode intercept_mode, TestPartResultArray* result)
+    : intercept_mode_(intercept_mode),
+      result_(result) {
+  Init();
+}
+
+void ScopedFakeTestPartResultReporter::Init() {
+  internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
+  if (intercept_mode_ == INTERCEPT_ALL_THREADS) {
+    old_reporter_ = impl->GetGlobalTestPartResultReporter();
+    impl->SetGlobalTestPartResultReporter(this);
+  } else {
+    old_reporter_ = impl->GetTestPartResultReporterForCurrentThread();
+    impl->SetTestPartResultReporterForCurrentThread(this);
+  }
+}
+
+// The d'tor restores the test part result reporter used by Google Test
+// before.
+ScopedFakeTestPartResultReporter::~ScopedFakeTestPartResultReporter() {
+  internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
+  if (intercept_mode_ == INTERCEPT_ALL_THREADS) {
+    impl->SetGlobalTestPartResultReporter(old_reporter_);
+  } else {
+    impl->SetTestPartResultReporterForCurrentThread(old_reporter_);
+  }
+}
+
+// Increments the test part result count and remembers the result.
+// This method is from the TestPartResultReporterInterface interface.
+void ScopedFakeTestPartResultReporter::ReportTestPartResult(
+    const TestPartResult& result) {
+  result_->Append(result);
+}
+
+namespace internal {
+
+// Returns the type ID of ::testing::Test.  We should always call this
+// instead of GetTypeId< ::testing::Test>() to get the type ID of
+// testing::Test.  This is to work around a suspected linker bug when
+// using Google Test as a framework on Mac OS X.  The bug causes
+// GetTypeId< ::testing::Test>() to return different values depending
+// on whether the call is from the Google Test framework itself or
+// from user test code.  GetTestTypeId() is guaranteed to always
+// return the same value, as it always calls GetTypeId<>() from the
+// gtest.cc, which is within the Google Test framework.
+TypeId GetTestTypeId() {
+  return GetTypeId<Test>();
+}
+
+// The value of GetTestTypeId() as seen from within the Google Test
+// library.  This is solely for testing GetTestTypeId().
+extern const TypeId kTestTypeIdInGoogleTest = GetTestTypeId();
+
+// This predicate-formatter checks that 'results' contains a test part
+// failure of the given type and that the failure message contains the
+// given substring.
+AssertionResult HasOneFailure(const char* /* results_expr */,
+                              const char* /* type_expr */,
+                              const char* /* substr_expr */,
+                              const TestPartResultArray& results,
+                              TestPartResult::Type type,
+                              const string& substr) {
+  const String expected(type == TestPartResult::kFatalFailure ?
+                        "1 fatal failure" :
+                        "1 non-fatal failure");
+  Message msg;
+  if (results.size() != 1) {
+    msg << "Expected: " << expected << "\n"
+        << "  Actual: " << results.size() << " failures";
+    for (int i = 0; i < results.size(); i++) {
+      msg << "\n" << results.GetTestPartResult(i);
+    }
+    return AssertionFailure() << msg;
+  }
+
+  const TestPartResult& r = results.GetTestPartResult(0);
+  if (r.type() != type) {
+    return AssertionFailure() << "Expected: " << expected << "\n"
+                              << "  Actual:\n"
+                              << r;
+  }
+
+  if (strstr(r.message(), substr.c_str()) == NULL) {
+    return AssertionFailure() << "Expected: " << expected << " containing \""
+                              << substr << "\"\n"
+                              << "  Actual:\n"
+                              << r;
+  }
+
+  return AssertionSuccess();
+}
+
+// The constructor of SingleFailureChecker remembers where to look up
+// test part results, what type of failure we expect, and what
+// substring the failure message should contain.
+SingleFailureChecker:: SingleFailureChecker(
+    const TestPartResultArray* results,
+    TestPartResult::Type type,
+    const string& substr)
+    : results_(results),
+      type_(type),
+      substr_(substr) {}
+
+// The destructor of SingleFailureChecker verifies that the given
+// TestPartResultArray contains exactly one failure that has the given
+// type and contains the given substring.  If that's not the case, a
+// non-fatal failure will be generated.
+SingleFailureChecker::~SingleFailureChecker() {
+  EXPECT_PRED_FORMAT3(HasOneFailure, *results_, type_, substr_);
+}
+
+DefaultGlobalTestPartResultReporter::DefaultGlobalTestPartResultReporter(
+    UnitTestImpl* unit_test) : unit_test_(unit_test) {}
+
+void DefaultGlobalTestPartResultReporter::ReportTestPartResult(
+    const TestPartResult& result) {
+  unit_test_->current_test_result()->AddTestPartResult(result);
+  unit_test_->listeners()->repeater()->OnTestPartResult(result);
+}
+
+DefaultPerThreadTestPartResultReporter::DefaultPerThreadTestPartResultReporter(
+    UnitTestImpl* unit_test) : unit_test_(unit_test) {}
+
+void DefaultPerThreadTestPartResultReporter::ReportTestPartResult(
+    const TestPartResult& result) {
+  unit_test_->GetGlobalTestPartResultReporter()->ReportTestPartResult(result);
+}
+
+// Returns the global test part result reporter.
+TestPartResultReporterInterface*
+UnitTestImpl::GetGlobalTestPartResultReporter() {
+  internal::MutexLock lock(&global_test_part_result_reporter_mutex_);
+  return global_test_part_result_repoter_;
+}
+
+// Sets the global test part result reporter.
+void UnitTestImpl::SetGlobalTestPartResultReporter(
+    TestPartResultReporterInterface* reporter) {
+  internal::MutexLock lock(&global_test_part_result_reporter_mutex_);
+  global_test_part_result_repoter_ = reporter;
+}
+
+// Returns the test part result reporter for the current thread.
+TestPartResultReporterInterface*
+UnitTestImpl::GetTestPartResultReporterForCurrentThread() {
+  return per_thread_test_part_result_reporter_.get();
+}
+
+// Sets the test part result reporter for the current thread.
+void UnitTestImpl::SetTestPartResultReporterForCurrentThread(
+    TestPartResultReporterInterface* reporter) {
+  per_thread_test_part_result_reporter_.set(reporter);
+}
+
+// Gets the number of successful test cases.
+int UnitTestImpl::successful_test_case_count() const {
+  return CountIf(test_cases_, TestCasePassed);
+}
+
+// Gets the number of failed test cases.
+int UnitTestImpl::failed_test_case_count() const {
+  return CountIf(test_cases_, TestCaseFailed);
+}
+
+// Gets the number of all test cases.
+int UnitTestImpl::total_test_case_count() const {
+  return static_cast<int>(test_cases_.size());
+}
+
+// Gets the number of all test cases that contain at least one test
+// that should run.
+int UnitTestImpl::test_case_to_run_count() const {
+  return CountIf(test_cases_, ShouldRunTestCase);
+}
+
+// Gets the number of successful tests.
+int UnitTestImpl::successful_test_count() const {
+  return SumOverTestCaseList(test_cases_, &TestCase::successful_test_count);
+}
+
+// Gets the number of failed tests.
+int UnitTestImpl::failed_test_count() const {
+  return SumOverTestCaseList(test_cases_, &TestCase::failed_test_count);
+}
+
+// Gets the number of disabled tests.
+int UnitTestImpl::disabled_test_count() const {
+  return SumOverTestCaseList(test_cases_, &TestCase::disabled_test_count);
+}
+
+// Gets the number of all tests.
+int UnitTestImpl::total_test_count() const {
+  return SumOverTestCaseList(test_cases_, &TestCase::total_test_count);
+}
+
+// Gets the number of tests that should run.
+int UnitTestImpl::test_to_run_count() const {
+  return SumOverTestCaseList(test_cases_, &TestCase::test_to_run_count);
+}
+
+// Returns the current OS stack trace as a String.
+//
+// The maximum number of stack frames to be included is specified by
+// the gtest_stack_trace_depth flag.  The skip_count parameter
+// specifies the number of top frames to be skipped, which doesn't
+// count against the number of frames to be included.
+//
+// For example, if Foo() calls Bar(), which in turn calls
+// CurrentOsStackTraceExceptTop(1), Foo() will be included in the
+// trace but Bar() and CurrentOsStackTraceExceptTop() won't.
+String UnitTestImpl::CurrentOsStackTraceExceptTop(int skip_count) {
+  (void)skip_count;
+  return String("");
+}
+
+// Returns the current time in milliseconds.
+TimeInMillis GetTimeInMillis() {
+#if GTEST_OS_WINDOWS_MOBILE || defined(__BORLANDC__)
+  // Difference between 1970-01-01 and 1601-01-01 in milliseconds.
+  // http://analogous.blogspot.com/2005/04/epoch.html
+  const TimeInMillis kJavaEpochToWinFileTimeDelta =
+    static_cast<TimeInMillis>(116444736UL) * 100000UL;
+  const DWORD kTenthMicrosInMilliSecond = 10000;
+
+  SYSTEMTIME now_systime;
+  FILETIME now_filetime;
+  ULARGE_INTEGER now_int64;
+  // TODO(kenton@google.com): Shouldn't this just use
+  //   GetSystemTimeAsFileTime()?
+  GetSystemTime(&now_systime);
+  if (SystemTimeToFileTime(&now_systime, &now_filetime)) {
+    now_int64.LowPart = now_filetime.dwLowDateTime;
+    now_int64.HighPart = now_filetime.dwHighDateTime;
+    now_int64.QuadPart = (now_int64.QuadPart / kTenthMicrosInMilliSecond) -
+      kJavaEpochToWinFileTimeDelta;
+    return now_int64.QuadPart;
+  }
+  return 0;
+#elif GTEST_OS_WINDOWS && !GTEST_HAS_GETTIMEOFDAY_
+  __timeb64 now;
+
+# ifdef _MSC_VER
+
+  // MSVC 8 deprecates _ftime64(), so we want to suppress warning 4996
+  // (deprecated function) there.
+  // TODO(kenton@google.com): Use GetTickCount()?  Or use
+  //   SystemTimeToFileTime()
+#  pragma warning(push)          // Saves the current warning state.
+#  pragma warning(disable:4996)  // Temporarily disables warning 4996.
+  _ftime64(&now);
+#  pragma warning(pop)           // Restores the warning state.
+# else
+
+  _ftime64(&now);
+
+# endif  // _MSC_VER
+
+  return static_cast<TimeInMillis>(now.time) * 1000 + now.millitm;
+#elif GTEST_HAS_GETTIMEOFDAY_
+  struct timeval now;
+  gettimeofday(&now, NULL);
+  return static_cast<TimeInMillis>(now.tv_sec) * 1000 + now.tv_usec / 1000;
+#else
+# error "Don't know how to get the current time on your system."
+#endif
+}
+
+// Utilities
+
+// class String
+
+// Returns the input enclosed in double quotes if it's not NULL;
+// otherwise returns "(null)".  For example, "\"Hello\"" is returned
+// for input "Hello".
+//
+// This is useful for printing a C string in the syntax of a literal.
+//
+// Known issue: escape sequences are not handled yet.
+String String::ShowCStringQuoted(const char* c_str) {
+  return c_str ? String::Format("\"%s\"", c_str) : String("(null)");
+}
+
+// Copies at most length characters from str into a newly-allocated
+// piece of memory of size length+1.  The memory is allocated with new[].
+// A terminating null byte is written to the memory, and a pointer to it
+// is returned.  If str is NULL, NULL is returned.
+static char* CloneString(const char* str, size_t length) {
+  if (str == NULL) {
+    return NULL;
+  } else {
+    char* const clone = new char[length + 1];
+    posix::StrNCpy(clone, str, length);
+    clone[length] = '\0';
+    return clone;
+  }
+}
+
+// Clones a 0-terminated C string, allocating memory using new.  The
+// caller is responsible for deleting[] the return value.  Returns the
+// cloned string, or NULL if the input is NULL.
+const char * String::CloneCString(const char* c_str) {
+  return (c_str == NULL) ?
+                    NULL : CloneString(c_str, strlen(c_str));
+}
+
+#if GTEST_OS_WINDOWS_MOBILE
+// Creates a UTF-16 wide string from the given ANSI string, allocating
+// memory using new. The caller is responsible for deleting the return
+// value using delete[]. Returns the wide string, or NULL if the
+// input is NULL.
+LPCWSTR String::AnsiToUtf16(const char* ansi) {
+  if (!ansi) return NULL;
+  const int length = strlen(ansi);
+  const int unicode_length =
+      MultiByteToWideChar(CP_ACP, 0, ansi, length,
+                          NULL, 0);
+  WCHAR* unicode = new WCHAR[unicode_length + 1];
+  MultiByteToWideChar(CP_ACP, 0, ansi, length,
+                      unicode, unicode_length);
+  unicode[unicode_length] = 0;
+  return unicode;
+}
+
+// Creates an ANSI string from the given wide string, allocating
+// memory using new. The caller is responsible for deleting the return
+// value using delete[]. Returns the ANSI string, or NULL if the
+// input is NULL.
+const char* String::Utf16ToAnsi(LPCWSTR utf16_str)  {
+  if (!utf16_str) return NULL;
+  const int ansi_length =
+      WideCharToMultiByte(CP_ACP, 0, utf16_str, -1,
+                          NULL, 0, NULL, NULL);
+  char* ansi = new char[ansi_length + 1];
+  WideCharToMultiByte(CP_ACP, 0, utf16_str, -1,
+                      ansi, ansi_length, NULL, NULL);
+  ansi[ansi_length] = 0;
+  return ansi;
+}
+
+#endif  // GTEST_OS_WINDOWS_MOBILE
+
+// Compares two C strings.  Returns true iff they have the same content.
+//
+// Unlike strcmp(), this function can handle NULL argument(s).  A NULL
+// C string is considered different to any non-NULL C string,
+// including the empty string.
+bool String::CStringEquals(const char * lhs, const char * rhs) {
+  if ( lhs == NULL ) return rhs == NULL;
+
+  if ( rhs == NULL ) return false;
+
+  return strcmp(lhs, rhs) == 0;
+}
+
+#if GTEST_HAS_STD_WSTRING || GTEST_HAS_GLOBAL_WSTRING
+
+// Converts an array of wide chars to a narrow string using the UTF-8
+// encoding, and streams the result to the given Message object.
+static void StreamWideCharsToMessage(const wchar_t* wstr, size_t length,
+                                     Message* msg) {
+  // TODO(wan): consider allowing a testing::String object to
+  // contain '\0'.  This will make it behave more like std::string,
+  // and will allow ToUtf8String() to return the correct encoding
+  // for '\0' s.t. we can get rid of the conditional here (and in
+  // several other places).
+  for (size_t i = 0; i != length; ) {  // NOLINT
+    if (wstr[i] != L'\0') {
+      *msg << WideStringToUtf8(wstr + i, static_cast<int>(length - i));
+      while (i != length && wstr[i] != L'\0')
+        i++;
+    } else {
+      *msg << '\0';
+      i++;
+    }
+  }
+}
+
+#endif  // GTEST_HAS_STD_WSTRING || GTEST_HAS_GLOBAL_WSTRING
+
+}  // namespace internal
+
+#if GTEST_HAS_STD_WSTRING
+// Converts the given wide string to a narrow string using the UTF-8
+// encoding, and streams the result to this Message object.
+Message& Message::operator <<(const ::std::wstring& wstr) {
+  internal::StreamWideCharsToMessage(wstr.c_str(), wstr.length(), this);
+  return *this;
+}
+#endif  // GTEST_HAS_STD_WSTRING
+
+#if GTEST_HAS_GLOBAL_WSTRING
+// Converts the given wide string to a narrow string using the UTF-8
+// encoding, and streams the result to this Message object.
+Message& Message::operator <<(const ::wstring& wstr) {
+  internal::StreamWideCharsToMessage(wstr.c_str(), wstr.length(), this);
+  return *this;
+}
+#endif  // GTEST_HAS_GLOBAL_WSTRING
+
+// AssertionResult constructors.
+// Used in EXPECT_TRUE/FALSE(assertion_result).
+AssertionResult::AssertionResult(const AssertionResult& other)
+    : success_(other.success_),
+      message_(other.message_.get() != NULL ?
+               new ::std::string(*other.message_) :
+               static_cast< ::std::string*>(NULL)) {
+}
+
+// Returns the assertion's negation. Used with EXPECT/ASSERT_FALSE.
+AssertionResult AssertionResult::operator!() const {
+  AssertionResult negation(!success_);
+  if (message_.get() != NULL)
+    negation << *message_;
+  return negation;
+}
+
+// Makes a successful assertion result.
+AssertionResult AssertionSuccess() {
+  return AssertionResult(true);
+}
+
+// Makes a failed assertion result.
+AssertionResult AssertionFailure() {
+  return AssertionResult(false);
+}
+
+// Makes a failed assertion result with the given failure message.
+// Deprecated; use AssertionFailure() << message.
+AssertionResult AssertionFailure(const Message& message) {
+  return AssertionFailure() << message;
+}
+
+namespace internal {
+
+// Constructs and returns the message for an equality assertion
+// (e.g. ASSERT_EQ, EXPECT_STREQ, etc) failure.
+//
+// The first four parameters are the expressions used in the assertion
+// and their values, as strings.  For example, for ASSERT_EQ(foo, bar)
+// where foo is 5 and bar is 6, we have:
+//
+//   expected_expression: "foo"
+//   actual_expression:   "bar"
+//   expected_value:      "5"
+//   actual_value:        "6"
+//
+// The ignoring_case parameter is true iff the assertion is a
+// *_STRCASEEQ*.  When it's true, the string " (ignoring case)" will
+// be inserted into the message.
+AssertionResult EqFailure(const char* expected_expression,
+                          const char* actual_expression,
+                          const String& expected_value,
+                          const String& actual_value,
+                          bool ignoring_case) {
+  Message msg;
+  msg << "Value of: " << actual_expression;
+  if (actual_value != actual_expression) {
+    msg << "\n  Actual: " << actual_value;
+  }
+
+  msg << "\nExpected: " << expected_expression;
+  if (ignoring_case) {
+    msg << " (ignoring case)";
+  }
+  if (expected_value != expected_expression) {
+    msg << "\nWhich is: " << expected_value;
+  }
+
+  return AssertionFailure() << msg;
+}
+
+// Constructs a failure message for Boolean assertions such as EXPECT_TRUE.
+String GetBoolAssertionFailureMessage(const AssertionResult& assertion_result,
+                                      const char* expression_text,
+                                      const char* actual_predicate_value,
+                                      const char* expected_predicate_value) {
+  const char* actual_message = assertion_result.message();
+  Message msg;
+  msg << "Value of: " << expression_text
+      << "\n  Actual: " << actual_predicate_value;
+  if (actual_message[0] != '\0')
+    msg << " (" << actual_message << ")";
+  msg << "\nExpected: " << expected_predicate_value;
+  return msg.GetString();
+}
+
+// Helper function for implementing ASSERT_NEAR.
+AssertionResult DoubleNearPredFormat(const char* expr1,
+                                     const char* expr2,
+                                     const char* abs_error_expr,
+                                     double val1,
+                                     double val2,
+                                     double abs_error) {
+  const double diff = fabs(val1 - val2);
+  if (diff <= abs_error) return AssertionSuccess();
+
+  // TODO(wan): do not print the value of an expression if it's
+  // already a literal.
+  return AssertionFailure()
+      << "The difference between " << expr1 << " and " << expr2
+      << " is " << diff << ", which exceeds " << abs_error_expr << ", where\n"
+      << expr1 << " evaluates to " << val1 << ",\n"
+      << expr2 << " evaluates to " << val2 << ", and\n"
+      << abs_error_expr << " evaluates to " << abs_error << ".";
+}
+
+
+// Helper template for implementing FloatLE() and DoubleLE().
+template <typename RawType>
+AssertionResult FloatingPointLE(const char* expr1,
+                                const char* expr2,
+                                RawType val1,
+                                RawType val2) {
+  // Returns success if val1 is less than val2,
+  if (val1 < val2) {
+    return AssertionSuccess();
+  }
+
+  // or if val1 is almost equal to val2.
+  const FloatingPoint<RawType> lhs(val1), rhs(val2);
+  if (lhs.AlmostEquals(rhs)) {
+    return AssertionSuccess();
+  }
+
+  // Note that the above two checks will both fail if either val1 or
+  // val2 is NaN, as the IEEE floating-point standard requires that
+  // any predicate involving a NaN must return false.
+
+  ::std::stringstream val1_ss;
+  val1_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2)
+          << val1;
+
+  ::std::stringstream val2_ss;
+  val2_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2)
+          << val2;
+
+  return AssertionFailure()
+      << "Expected: (" << expr1 << ") <= (" << expr2 << ")\n"
+      << "  Actual: " << StringStreamToString(&val1_ss) << " vs "
+      << StringStreamToString(&val2_ss);
+}
+
+}  // namespace internal
+
+// Asserts that val1 is less than, or almost equal to, val2.  Fails
+// otherwise.  In particular, it fails if either val1 or val2 is NaN.
+AssertionResult FloatLE(const char* expr1, const char* expr2,
+                        float val1, float val2) {
+  return internal::FloatingPointLE<float>(expr1, expr2, val1, val2);
+}
+
+// Asserts that val1 is less than, or almost equal to, val2.  Fails
+// otherwise.  In particular, it fails if either val1 or val2 is NaN.
+AssertionResult DoubleLE(const char* expr1, const char* expr2,
+                         double val1, double val2) {
+  return internal::FloatingPointLE<double>(expr1, expr2, val1, val2);
+}
+
+namespace internal {
+
+// The helper function for {ASSERT|EXPECT}_EQ with int or enum
+// arguments.
+AssertionResult CmpHelperEQ(const char* expected_expression,
+                            const char* actual_expression,
+                            BiggestInt expected,
+                            BiggestInt actual) {
+  if (expected == actual) {
+    return AssertionSuccess();
+  }
+
+  return EqFailure(expected_expression,
+                   actual_expression,
+                   FormatForComparisonFailureMessage(expected, actual),
+                   FormatForComparisonFailureMessage(actual, expected),
+                   false);
+}
+
+// A macro for implementing the helper functions needed to implement
+// ASSERT_?? and EXPECT_?? with integer or enum arguments.  It is here
+// just to avoid copy-and-paste of similar code.
+#define GTEST_IMPL_CMP_HELPER_(op_name, op)\
+AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \
+                                   BiggestInt val1, BiggestInt val2) {\
+  if (val1 op val2) {\
+    return AssertionSuccess();\
+  } else {\
+    return AssertionFailure() \
+        << "Expected: (" << expr1 << ") " #op " (" << expr2\
+        << "), actual: " << FormatForComparisonFailureMessage(val1, val2)\
+        << " vs " << FormatForComparisonFailureMessage(val2, val1);\
+  }\
+}
+
+// Implements the helper function for {ASSERT|EXPECT}_NE with int or
+// enum arguments.
+GTEST_IMPL_CMP_HELPER_(NE, !=)
+// Implements the helper function for {ASSERT|EXPECT}_LE with int or
+// enum arguments.
+GTEST_IMPL_CMP_HELPER_(LE, <=)
+// Implements the helper function for {ASSERT|EXPECT}_LT with int or
+// enum arguments.
+GTEST_IMPL_CMP_HELPER_(LT, < )
+// Implements the helper function for {ASSERT|EXPECT}_GE with int or
+// enum arguments.
+GTEST_IMPL_CMP_HELPER_(GE, >=)
+// Implements the helper function for {ASSERT|EXPECT}_GT with int or
+// enum arguments.
+GTEST_IMPL_CMP_HELPER_(GT, > )
+
+#undef GTEST_IMPL_CMP_HELPER_
+
+// The helper function for {ASSERT|EXPECT}_STREQ.
+AssertionResult CmpHelperSTREQ(const char* expected_expression,
+                               const char* actual_expression,
+                               const char* expected,
+                               const char* actual) {
+  if (String::CStringEquals(expected, actual)) {
+    return AssertionSuccess();
+  }
+
+  return EqFailure(expected_expression,
+                   actual_expression,
+                   String::ShowCStringQuoted(expected),
+                   String::ShowCStringQuoted(actual),
+                   false);
+}
+
+// The helper function for {ASSERT|EXPECT}_STRCASEEQ.
+AssertionResult CmpHelperSTRCASEEQ(const char* expected_expression,
+                                   const char* actual_expression,
+                                   const char* expected,
+                                   const char* actual) {
+  if (String::CaseInsensitiveCStringEquals(expected, actual)) {
+    return AssertionSuccess();
+  }
+
+  return EqFailure(expected_expression,
+                   actual_expression,
+                   String::ShowCStringQuoted(expected),
+                   String::ShowCStringQuoted(actual),
+                   true);
+}
+
+// The helper function for {ASSERT|EXPECT}_STRNE.
+AssertionResult CmpHelperSTRNE(const char* s1_expression,
+                               const char* s2_expression,
+                               const char* s1,
+                               const char* s2) {
+  if (!String::CStringEquals(s1, s2)) {
+    return AssertionSuccess();
+  } else {
+    return AssertionFailure() << "Expected: (" << s1_expression << ") != ("
+                              << s2_expression << "), actual: \""
+                              << s1 << "\" vs \"" << s2 << "\"";
+  }
+}
+
+// The helper function for {ASSERT|EXPECT}_STRCASENE.
+AssertionResult CmpHelperSTRCASENE(const char* s1_expression,
+                                   const char* s2_expression,
+                                   const char* s1,
+                                   const char* s2) {
+  if (!String::CaseInsensitiveCStringEquals(s1, s2)) {
+    return AssertionSuccess();
+  } else {
+    return AssertionFailure()
+        << "Expected: (" << s1_expression << ") != ("
+        << s2_expression << ") (ignoring case), actual: \""
+        << s1 << "\" vs \"" << s2 << "\"";
+  }
+}
+
+}  // namespace internal
+
+namespace {
+
+// Helper functions for implementing IsSubString() and IsNotSubstring().
+
+// This group of overloaded functions return true iff needle is a
+// substring of haystack.  NULL is considered a substring of itself
+// only.
+
+bool IsSubstringPred(const char* needle, const char* haystack) {
+  if (needle == NULL || haystack == NULL)
+    return needle == haystack;
+
+  return strstr(haystack, needle) != NULL;
+}
+
+bool IsSubstringPred(const wchar_t* needle, const wchar_t* haystack) {
+  if (needle == NULL || haystack == NULL)
+    return needle == haystack;
+
+  return wcsstr(haystack, needle) != NULL;
+}
+
+// StringType here can be either ::std::string or ::std::wstring.
+template <typename StringType>
+bool IsSubstringPred(const StringType& needle,
+                     const StringType& haystack) {
+  return haystack.find(needle) != StringType::npos;
+}
+
+// This function implements either IsSubstring() or IsNotSubstring(),
+// depending on the value of the expected_to_be_substring parameter.
+// StringType here can be const char*, const wchar_t*, ::std::string,
+// or ::std::wstring.
+template <typename StringType>
+AssertionResult IsSubstringImpl(
+    bool expected_to_be_substring,
+    const char* needle_expr, const char* haystack_expr,
+    const StringType& needle, const StringType& haystack) {
+  if (IsSubstringPred(needle, haystack) == expected_to_be_substring)
+    return AssertionSuccess();
+
+  const bool is_wide_string = sizeof(needle[0]) > 1;
+  const char* const begin_string_quote = is_wide_string ? "L\"" : "\"";
+  return AssertionFailure()
+      << "Value of: " << needle_expr << "\n"
+      << "  Actual: " << begin_string_quote << needle << "\"\n"
+      << "Expected: " << (expected_to_be_substring ? "" : "not ")
+      << "a substring of " << haystack_expr << "\n"
+      << "Which is: " << begin_string_quote << haystack << "\"";
+}
+
+}  // namespace
+
+// IsSubstring() and IsNotSubstring() check whether needle is a
+// substring of haystack (NULL is considered a substring of itself
+// only), and return an appropriate error message when they fail.
+
+AssertionResult IsSubstring(
+    const char* needle_expr, const char* haystack_expr,
+    const char* needle, const char* haystack) {
+  return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack);
+}
+
+AssertionResult IsSubstring(
+    const char* needle_expr, const char* haystack_expr,
+    const wchar_t* needle, const wchar_t* haystack) {
+  return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack);
+}
+
+AssertionResult IsNotSubstring(
+    const char* needle_expr, const char* haystack_expr,
+    const char* needle, const char* haystack) {
+  return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack);
+}
+
+AssertionResult IsNotSubstring(
+    const char* needle_expr, const char* haystack_expr,
+    const wchar_t* needle, const wchar_t* haystack) {
+  return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack);
+}
+
+AssertionResult IsSubstring(
+    const char* needle_expr, const char* haystack_expr,
+    const ::std::string& needle, const ::std::string& haystack) {
+  return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack);
+}
+
+AssertionResult IsNotSubstring(
+    const char* needle_expr, const char* haystack_expr,
+    const ::std::string& needle, const ::std::string& haystack) {
+  return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack);
+}
+
+#if GTEST_HAS_STD_WSTRING
+AssertionResult IsSubstring(
+    const char* needle_expr, const char* haystack_expr,
+    const ::std::wstring& needle, const ::std::wstring& haystack) {
+  return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack);
+}
+
+AssertionResult IsNotSubstring(
+    const char* needle_expr, const char* haystack_expr,
+    const ::std::wstring& needle, const ::std::wstring& haystack) {
+  return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack);
+}
+#endif  // GTEST_HAS_STD_WSTRING
+
+namespace internal {
+
+#if GTEST_OS_WINDOWS
+
+namespace {
+
+// Helper function for IsHRESULT{SuccessFailure} predicates
+AssertionResult HRESULTFailureHelper(const char* expr,
+                                     const char* expected,
+                                     long hr) {  // NOLINT
+# if GTEST_OS_WINDOWS_MOBILE
+
+  // Windows CE doesn't support FormatMessage.
+  const char error_text[] = "";
+
+# else
+
+  // Looks up the human-readable system message for the HRESULT code
+  // and since we're not passing any params to FormatMessage, we don't
+  // want inserts expanded.
+  const DWORD kFlags = FORMAT_MESSAGE_FROM_SYSTEM |
+                       FORMAT_MESSAGE_IGNORE_INSERTS;
+  const DWORD kBufSize = 4096;  // String::Format can't exceed this length.
+  // Gets the system's human readable message string for this HRESULT.
+  char error_text[kBufSize] = { '\0' };
+  DWORD message_length = ::FormatMessageA(kFlags,
+                                          0,  // no source, we're asking system
+                                          hr,  // the error
+                                          0,  // no line width restrictions
+                                          error_text,  // output buffer
+                                          kBufSize,  // buf size
+                                          NULL);  // no arguments for inserts
+  // Trims tailing white space (FormatMessage leaves a trailing cr-lf)
+  for (; message_length && IsSpace(error_text[message_length - 1]);
+          --message_length) {
+    error_text[message_length - 1] = '\0';
+  }
+
+# endif  // GTEST_OS_WINDOWS_MOBILE
+
+  const String error_hex(String::Format("0x%08X ", hr));
+  return ::testing::AssertionFailure()
+      << "Expected: " << expr << " " << expected << ".\n"
+      << "  Actual: " << error_hex << error_text << "\n";
+}
+
+}  // namespace
+
+AssertionResult IsHRESULTSuccess(const char* expr, long hr) {  // NOLINT
+  if (SUCCEEDED(hr)) {
+    return AssertionSuccess();
+  }
+  return HRESULTFailureHelper(expr, "succeeds", hr);
+}
+
+AssertionResult IsHRESULTFailure(const char* expr, long hr) {  // NOLINT
+  if (FAILED(hr)) {
+    return AssertionSuccess();
+  }
+  return HRESULTFailureHelper(expr, "fails", hr);
+}
+
+#endif  // GTEST_OS_WINDOWS
+
+// Utility functions for encoding Unicode text (wide strings) in
+// UTF-8.
+
+// A Unicode code-point can have upto 21 bits, and is encoded in UTF-8
+// like this:
+//
+// Code-point length   Encoding
+//   0 -  7 bits       0xxxxxxx
+//   8 - 11 bits       110xxxxx 10xxxxxx
+//  12 - 16 bits       1110xxxx 10xxxxxx 10xxxxxx
+//  17 - 21 bits       11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
+
+// The maximum code-point a one-byte UTF-8 sequence can represent.
+const UInt32 kMaxCodePoint1 = (static_cast<UInt32>(1) <<  7) - 1;
+
+// The maximum code-point a two-byte UTF-8 sequence can represent.
+const UInt32 kMaxCodePoint2 = (static_cast<UInt32>(1) << (5 + 6)) - 1;
+
+// The maximum code-point a three-byte UTF-8 sequence can represent.
+const UInt32 kMaxCodePoint3 = (static_cast<UInt32>(1) << (4 + 2*6)) - 1;
+
+// The maximum code-point a four-byte UTF-8 sequence can represent.
+const UInt32 kMaxCodePoint4 = (static_cast<UInt32>(1) << (3 + 3*6)) - 1;
+
+// Chops off the n lowest bits from a bit pattern.  Returns the n
+// lowest bits.  As a side effect, the original bit pattern will be
+// shifted to the right by n bits.
+inline UInt32 ChopLowBits(UInt32* bits, int n) {
+  const UInt32 low_bits = *bits & ((static_cast<UInt32>(1) << n) - 1);
+  *bits >>= n;
+  return low_bits;
+}
+
+// Converts a Unicode code point to a narrow string in UTF-8 encoding.
+// code_point parameter is of type UInt32 because wchar_t may not be
+// wide enough to contain a code point.
+// The output buffer str must containt at least 32 characters.
+// The function returns the address of the output buffer.
+// If the code_point is not a valid Unicode code point
+// (i.e. outside of Unicode range U+0 to U+10FFFF) it will be output
+// as '(Invalid Unicode 0xXXXXXXXX)'.
+char* CodePointToUtf8(UInt32 code_point, char* str) {
+  if (code_point <= kMaxCodePoint1) {
+    str[1] = '\0';
+    str[0] = static_cast<char>(code_point);                          // 0xxxxxxx
+  } else if (code_point <= kMaxCodePoint2) {
+    str[2] = '\0';
+    str[1] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6));  // 10xxxxxx
+    str[0] = static_cast<char>(0xC0 | code_point);                   // 110xxxxx
+  } else if (code_point <= kMaxCodePoint3) {
+    str[3] = '\0';
+    str[2] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6));  // 10xxxxxx
+    str[1] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6));  // 10xxxxxx
+    str[0] = static_cast<char>(0xE0 | code_point);                   // 1110xxxx
+  } else if (code_point <= kMaxCodePoint4) {
+    str[4] = '\0';
+    str[3] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6));  // 10xxxxxx
+    str[2] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6));  // 10xxxxxx
+    str[1] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6));  // 10xxxxxx
+    str[0] = static_cast<char>(0xF0 | code_point);                   // 11110xxx
+  } else {
+    // The longest string String::Format can produce when invoked
+    // with these parameters is 28 character long (not including
+    // the terminating nul character). We are asking for 32 character
+    // buffer just in case. This is also enough for strncpy to
+    // null-terminate the destination string.
+    posix::StrNCpy(
+        str, String::Format("(Invalid Unicode 0x%X)", code_point).c_str(), 32);
+    str[31] = '\0';  // Makes sure no change in the format to strncpy leaves
+                     // the result unterminated.
+  }
+  return str;
+}
+
+// The following two functions only make sense if the the system
+// uses UTF-16 for wide string encoding. All supported systems
+// with 16 bit wchar_t (Windows, Cygwin, Symbian OS) do use UTF-16.
+
+// Determines if the arguments constitute UTF-16 surrogate pair
+// and thus should be combined into a single Unicode code point
+// using CreateCodePointFromUtf16SurrogatePair.
+inline bool IsUtf16SurrogatePair(wchar_t first, wchar_t second) {
+  return sizeof(wchar_t) == 2 &&
+      (first & 0xFC00) == 0xD800 && (second & 0xFC00) == 0xDC00;
+}
+
+// Creates a Unicode code point from UTF16 surrogate pair.
+inline UInt32 CreateCodePointFromUtf16SurrogatePair(wchar_t first,
+                                                    wchar_t second) {
+  const UInt32 mask = (1 << 10) - 1;
+  return (sizeof(wchar_t) == 2) ?
+      (((first & mask) << 10) | (second & mask)) + 0x10000 :
+      // This function should not be called when the condition is
+      // false, but we provide a sensible default in case it is.
+      static_cast<UInt32>(first);
+}
+
+// Converts a wide string to a narrow string in UTF-8 encoding.
+// The wide string is assumed to have the following encoding:
+//   UTF-16 if sizeof(wchar_t) == 2 (on Windows, Cygwin, Symbian OS)
+//   UTF-32 if sizeof(wchar_t) == 4 (on Linux)
+// Parameter str points to a null-terminated wide string.
+// Parameter num_chars may additionally limit the number
+// of wchar_t characters processed. -1 is used when the entire string
+// should be processed.
+// If the string contains code points that are not valid Unicode code points
+// (i.e. outside of Unicode range U+0 to U+10FFFF) they will be output
+// as '(Invalid Unicode 0xXXXXXXXX)'. If the string is in UTF16 encoding
+// and contains invalid UTF-16 surrogate pairs, values in those pairs
+// will be encoded as individual Unicode characters from Basic Normal Plane.
+String WideStringToUtf8(const wchar_t* str, int num_chars) {
+  if (num_chars == -1)
+    num_chars = static_cast<int>(wcslen(str));
+
+  ::std::stringstream stream;
+  for (int i = 0; i < num_chars; ++i) {
+    UInt32 unicode_code_point;
+
+    if (str[i] == L'\0') {
+      break;
+    } else if (i + 1 < num_chars && IsUtf16SurrogatePair(str[i], str[i + 1])) {
+      unicode_code_point = CreateCodePointFromUtf16SurrogatePair(str[i],
+                                                                 str[i + 1]);
+      i++;
+    } else {
+      unicode_code_point = static_cast<UInt32>(str[i]);
+    }
+
+    char buffer[32];  // CodePointToUtf8 requires a buffer this big.
+    stream << CodePointToUtf8(unicode_code_point, buffer);
+  }
+  return StringStreamToString(&stream);
+}
+
+// Converts a wide C string to a String using the UTF-8 encoding.
+// NULL will be converted to "(null)".
+String String::ShowWideCString(const wchar_t * wide_c_str) {
+  if (wide_c_str == NULL) return String("(null)");
+
+  return String(internal::WideStringToUtf8(wide_c_str, -1).c_str());
+}
+
+// Similar to ShowWideCString(), except that this function encloses
+// the converted string in double quotes.
+String String::ShowWideCStringQuoted(const wchar_t* wide_c_str) {
+  if (wide_c_str == NULL) return String("(null)");
+
+  return String::Format("L\"%s\"",
+                        String::ShowWideCString(wide_c_str).c_str());
+}
+
+// Compares two wide C strings.  Returns true iff they have the same
+// content.
+//
+// Unlike wcscmp(), this function can handle NULL argument(s).  A NULL
+// C string is considered different to any non-NULL C string,
+// including the empty string.
+bool String::WideCStringEquals(const wchar_t * lhs, const wchar_t * rhs) {
+  if (lhs == NULL) return rhs == NULL;
+
+  if (rhs == NULL) return false;
+
+  return wcscmp(lhs, rhs) == 0;
+}
+
+// Helper function for *_STREQ on wide strings.
+AssertionResult CmpHelperSTREQ(const char* expected_expression,
+                               const char* actual_expression,
+                               const wchar_t* expected,
+                               const wchar_t* actual) {
+  if (String::WideCStringEquals(expected, actual)) {
+    return AssertionSuccess();
+  }
+
+  return EqFailure(expected_expression,
+                   actual_expression,
+                   String::ShowWideCStringQuoted(expected),
+                   String::ShowWideCStringQuoted(actual),
+                   false);
+}
+
+// Helper function for *_STRNE on wide strings.
+AssertionResult CmpHelperSTRNE(const char* s1_expression,
+                               const char* s2_expression,
+                               const wchar_t* s1,
+                               const wchar_t* s2) {
+  if (!String::WideCStringEquals(s1, s2)) {
+    return AssertionSuccess();
+  }
+
+  return AssertionFailure() << "Expected: (" << s1_expression << ") != ("
+                            << s2_expression << "), actual: "
+                            << String::ShowWideCStringQuoted(s1)
+                            << " vs " << String::ShowWideCStringQuoted(s2);
+}
+
+// Compares two C strings, ignoring case.  Returns true iff they have
+// the same content.
+//
+// Unlike strcasecmp(), this function can handle NULL argument(s).  A
+// NULL C string is considered different to any non-NULL C string,
+// including the empty string.
+bool String::CaseInsensitiveCStringEquals(const char * lhs, const char * rhs) {
+  if (lhs == NULL)
+    return rhs == NULL;
+  if (rhs == NULL)
+    return false;
+  return posix::StrCaseCmp(lhs, rhs) == 0;
+}
+
+  // Compares two wide C strings, ignoring case.  Returns true iff they
+  // have the same content.
+  //
+  // Unlike wcscasecmp(), this function can handle NULL argument(s).
+  // A NULL C string is considered different to any non-NULL wide C string,
+  // including the empty string.
+  // NB: The implementations on different platforms slightly differ.
+  // On windows, this method uses _wcsicmp which compares according to LC_CTYPE
+  // environment variable. On GNU platform this method uses wcscasecmp
+  // which compares according to LC_CTYPE category of the current locale.
+  // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the
+  // current locale.
+bool String::CaseInsensitiveWideCStringEquals(const wchar_t* lhs,
+                                              const wchar_t* rhs) {
+  if (lhs == NULL) return rhs == NULL;
+
+  if (rhs == NULL) return false;
+
+#if GTEST_OS_WINDOWS
+  return _wcsicmp(lhs, rhs) == 0;
+#elif GTEST_OS_LINUX && !GTEST_OS_LINUX_ANDROID
+  return wcscasecmp(lhs, rhs) == 0;
+#else
+  // Android, Mac OS X and Cygwin don't define wcscasecmp.
+  // Other unknown OSes may not define it either.
+  wint_t left, right;
+  do {
+    left = towlower(*lhs++);
+    right = towlower(*rhs++);
+  } while (left && left == right);
+  return left == right;
+#endif  // OS selector
+}
+
+// Compares this with another String.
+// Returns < 0 if this is less than rhs, 0 if this is equal to rhs, or > 0
+// if this is greater than rhs.
+int String::Compare(const String & rhs) const {
+  const char* const lhs_c_str = c_str();
+  const char* const rhs_c_str = rhs.c_str();
+
+  if (lhs_c_str == NULL) {
+    return rhs_c_str == NULL ? 0 : -1;  // NULL < anything except NULL
+  } else if (rhs_c_str == NULL) {
+    return 1;
+  }
+
+  const size_t shorter_str_len =
+      length() <= rhs.length() ? length() : rhs.length();
+  for (size_t i = 0; i != shorter_str_len; i++) {
+    if (lhs_c_str[i] < rhs_c_str[i]) {
+      return -1;
+    } else if (lhs_c_str[i] > rhs_c_str[i]) {
+      return 1;
+    }
+  }
+  return (length() < rhs.length()) ? -1 :
+      (length() > rhs.length()) ? 1 : 0;
+}
+
+// Returns true iff this String ends with the given suffix.  *Any*
+// String is considered to end with a NULL or empty suffix.
+bool String::EndsWith(const char* suffix) const {
+  if (suffix == NULL || CStringEquals(suffix, "")) return true;
+
+  if (c_str() == NULL) return false;
+
+  const size_t this_len = strlen(c_str());
+  const size_t suffix_len = strlen(suffix);
+  return (this_len >= suffix_len) &&
+         CStringEquals(c_str() + this_len - suffix_len, suffix);
+}
+
+// Returns true iff this String ends with the given suffix, ignoring case.
+// Any String is considered to end with a NULL or empty suffix.
+bool String::EndsWithCaseInsensitive(const char* suffix) const {
+  if (suffix == NULL || CStringEquals(suffix, "")) return true;
+
+  if (c_str() == NULL) return false;
+
+  const size_t this_len = strlen(c_str());
+  const size_t suffix_len = strlen(suffix);
+  return (this_len >= suffix_len) &&
+         CaseInsensitiveCStringEquals(c_str() + this_len - suffix_len, suffix);
+}
+
+// Formats a list of arguments to a String, using the same format
+// spec string as for printf.
+//
+// We do not use the StringPrintf class as it is not universally
+// available.
+//
+// The result is limited to 4096 characters (including the tailing 0).
+// If 4096 characters are not enough to format the input, or if
+// there's an error, "<formatting error or buffer exceeded>" is
+// returned.
+String String::Format(const char * format, ...) {
+  va_list args;
+  va_start(args, format);
+
+  char buffer[4096];
+  const int kBufferSize = sizeof(buffer)/sizeof(buffer[0]);
+
+  // MSVC 8 deprecates vsnprintf(), so we want to suppress warning
+  // 4996 (deprecated function) there.
+#ifdef _MSC_VER  // We are using MSVC.
+# pragma warning(push)          // Saves the current warning state.
+# pragma warning(disable:4996)  // Temporarily disables warning 4996.
+
+  const int size = vsnprintf(buffer, kBufferSize, format, args);
+
+# pragma warning(pop)           // Restores the warning state.
+#else  // We are not using MSVC.
+  const int size = vsnprintf(buffer, kBufferSize, format, args);
+#endif  // _MSC_VER
+  va_end(args);
+
+  // vsnprintf()'s behavior is not portable.  When the buffer is not
+  // big enough, it returns a negative value in MSVC, and returns the
+  // needed buffer size on Linux.  When there is an output error, it
+  // always returns a negative value.  For simplicity, we lump the two
+  // error cases together.
+  if (size < 0 || size >= kBufferSize) {
+    return String("<formatting error or buffer exceeded>");
+  } else {
+    return String(buffer, size);
+  }
+}
+
+// Converts the buffer in a stringstream to a String, converting NUL
+// bytes to "\\0" along the way.
+String StringStreamToString(::std::stringstream* ss) {
+  const ::std::string& str = ss->str();
+  const char* const start = str.c_str();
+  const char* const end = start + str.length();
+
+  // We need to use a helper stringstream to do this transformation
+  // because String doesn't support push_back().
+  ::std::stringstream helper;
+  for (const char* ch = start; ch != end; ++ch) {
+    if (*ch == '\0') {
+      helper << "\\0";  // Replaces NUL with "\\0";
+    } else {
+      helper.put(*ch);
+    }
+  }
+
+  return String(helper.str().c_str());
+}
+
+// Appends the user-supplied message to the Google-Test-generated message.
+String AppendUserMessage(const String& gtest_msg,
+                         const Message& user_msg) {
+  // Appends the user message if it's non-empty.
+  const String user_msg_string = user_msg.GetString();
+  if (user_msg_string.empty()) {
+    return gtest_msg;
+  }
+
+  Message msg;
+  msg << gtest_msg << "\n" << user_msg_string;
+
+  return msg.GetString();
+}
+
+}  // namespace internal
+
+// class TestResult
+
+// Creates an empty TestResult.
+TestResult::TestResult()
+    : death_test_count_(0),
+      elapsed_time_(0) {
+}
+
+// D'tor.
+TestResult::~TestResult() {
+}
+
+// Returns the i-th test part result among all the results. i can
+// range from 0 to total_part_count() - 1. If i is not in that range,
+// aborts the program.
+const TestPartResult& TestResult::GetTestPartResult(int i) const {
+  if (i < 0 || i >= total_part_count())
+    internal::posix::Abort();
+  return test_part_results_.at(i);
+}
+
+// Returns the i-th test property. i can range from 0 to
+// test_property_count() - 1. If i is not in that range, aborts the
+// program.
+const TestProperty& TestResult::GetTestProperty(int i) const {
+  if (i < 0 || i >= test_property_count())
+    internal::posix::Abort();
+  return test_properties_.at(i);
+}
+
+// Clears the test part results.
+void TestResult::ClearTestPartResults() {
+  test_part_results_.clear();
+}
+
+// Adds a test part result to the list.
+void TestResult::AddTestPartResult(const TestPartResult& test_part_result) {
+  test_part_results_.push_back(test_part_result);
+}
+
+// Adds a test property to the list. If a property with the same key as the
+// supplied property is already represented, the value of this test_property
+// replaces the old value for that key.
+void TestResult::RecordProperty(const TestProperty& test_property) {
+  if (!ValidateTestProperty(test_property)) {
+    return;
+  }
+  internal::MutexLock lock(&test_properites_mutex_);
+  const std::vector<TestProperty>::iterator property_with_matching_key =
+      std::find_if(test_properties_.begin(), test_properties_.end(),
+                   internal::TestPropertyKeyIs(test_property.key()));
+  if (property_with_matching_key == test_properties_.end()) {
+    test_properties_.push_back(test_property);
+    return;
+  }
+  property_with_matching_key->SetValue(test_property.value());
+}
+
+// Adds a failure if the key is a reserved attribute of Google Test
+// testcase tags.  Returns true if the property is valid.
+bool TestResult::ValidateTestProperty(const TestProperty& test_property) {
+  internal::String key(test_property.key());
+  if (key == "name" || key == "status" || key == "time" || key == "classname") {
+    ADD_FAILURE()
+        << "Reserved key used in RecordProperty(): "
+        << key
+        << " ('name', 'status', 'time', and 'classname' are reserved by "
+        << GTEST_NAME_ << ")";
+    return false;
+  }
+  return true;
+}
+
+// Clears the object.
+void TestResult::Clear() {
+  test_part_results_.clear();
+  test_properties_.clear();
+  death_test_count_ = 0;
+  elapsed_time_ = 0;
+}
+
+// Returns true iff the test failed.
+bool TestResult::Failed() const {
+  for (int i = 0; i < total_part_count(); ++i) {
+    if (GetTestPartResult(i).failed())
+      return true;
+  }
+  return false;
+}
+
+// Returns true iff the test part fatally failed.
+static bool TestPartFatallyFailed(const TestPartResult& result) {
+  return result.fatally_failed();
+}
+
+// Returns true iff the test fatally failed.
+bool TestResult::HasFatalFailure() const {
+  return CountIf(test_part_results_, TestPartFatallyFailed) > 0;
+}
+
+// Returns true iff the test part non-fatally failed.
+static bool TestPartNonfatallyFailed(const TestPartResult& result) {
+  return result.nonfatally_failed();
+}
+
+// Returns true iff the test has a non-fatal failure.
+bool TestResult::HasNonfatalFailure() const {
+  return CountIf(test_part_results_, TestPartNonfatallyFailed) > 0;
+}
+
+// Gets the number of all test parts.  This is the sum of the number
+// of successful test parts and the number of failed test parts.
+int TestResult::total_part_count() const {
+  return static_cast<int>(test_part_results_.size());
+}
+
+// Returns the number of the test properties.
+int TestResult::test_property_count() const {
+  return static_cast<int>(test_properties_.size());
+}
+
+// class Test
+
+// Creates a Test object.
+
+// The c'tor saves the values of all Google Test flags.
+Test::Test()
+    : gtest_flag_saver_(new internal::GTestFlagSaver) {
+}
+
+// The d'tor restores the values of all Google Test flags.
+Test::~Test() {
+  delete gtest_flag_saver_;
+}
+
+// Sets up the test fixture.
+//
+// A sub-class may override this.
+void Test::SetUp() {
+}
+
+// Tears down the test fixture.
+//
+// A sub-class may override this.
+void Test::TearDown() {
+}
+
+// Allows user supplied key value pairs to be recorded for later output.
+void Test::RecordProperty(const char* key, const char* value) {
+  UnitTest::GetInstance()->RecordPropertyForCurrentTest(key, value);
+}
+
+// Allows user supplied key value pairs to be recorded for later output.
+void Test::RecordProperty(const char* key, int value) {
+  Message value_message;
+  value_message << value;
+  RecordProperty(key, value_message.GetString().c_str());
+}
+
+namespace internal {
+
+void ReportFailureInUnknownLocation(TestPartResult::Type result_type,
+                                    const String& message) {
+  // This function is a friend of UnitTest and as such has access to
+  // AddTestPartResult.
+  UnitTest::GetInstance()->AddTestPartResult(
+      result_type,
+      NULL,  // No info about the source file where the exception occurred.
+      -1,    // We have no info on which line caused the exception.
+      message,
+      String());  // No stack trace, either.
+}
+
+}  // namespace internal
+
+// Google Test requires all tests in the same test case to use the same test
+// fixture class.  This function checks if the current test has the
+// same fixture class as the first test in the current test case.  If
+// yes, it returns true; otherwise it generates a Google Test failure and
+// returns false.
+bool Test::HasSameFixtureClass() {
+  internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
+  const TestCase* const test_case = impl->current_test_case();
+
+  // Info about the first test in the current test case.
+  const TestInfo* const first_test_info = test_case->test_info_list()[0];
+  const internal::TypeId first_fixture_id = first_test_info->fixture_class_id_;
+  const char* const first_test_name = first_test_info->name();
+
+  // Info about the current test.
+  const TestInfo* const this_test_info = impl->current_test_info();
+  const internal::TypeId this_fixture_id = this_test_info->fixture_class_id_;
+  const char* const this_test_name = this_test_info->name();
+
+  if (this_fixture_id != first_fixture_id) {
+    // Is the first test defined using TEST?
+    const bool first_is_TEST = first_fixture_id == internal::GetTestTypeId();
+    // Is this test defined using TEST?
+    const bool this_is_TEST = this_fixture_id == internal::GetTestTypeId();
+
+    if (first_is_TEST || this_is_TEST) {
+      // The user mixed TEST and TEST_F in this test case - we'll tell
+      // him/her how to fix it.
+
+      // Gets the name of the TEST and the name of the TEST_F.  Note
+      // that first_is_TEST and this_is_TEST cannot both be true, as
+      // the fixture IDs are different for the two tests.
+      const char* const TEST_name =
+          first_is_TEST ? first_test_name : this_test_name;
+      const char* const TEST_F_name =
+          first_is_TEST ? this_test_name : first_test_name;
+
+      ADD_FAILURE()
+          << "All tests in the same test case must use the same test fixture\n"
+          << "class, so mixing TEST_F and TEST in the same test case is\n"
+          << "illegal.  In test case " << this_test_info->test_case_name()
+          << ",\n"
+          << "test " << TEST_F_name << " is defined using TEST_F but\n"
+          << "test " << TEST_name << " is defined using TEST.  You probably\n"
+          << "want to change the TEST to TEST_F or move it to another test\n"
+          << "case.";
+    } else {
+      // The user defined two fixture classes with the same name in
+      // two namespaces - we'll tell him/her how to fix it.
+      ADD_FAILURE()
+          << "All tests in the same test case must use the same test fixture\n"
+          << "class.  However, in test case "
+          << this_test_info->test_case_name() << ",\n"
+          << "you defined test " << first_test_name
+          << " and test " << this_test_name << "\n"
+          << "using two different test fixture classes.  This can happen if\n"
+          << "the two classes are from different namespaces or translation\n"
+          << "units and have the same name.  You should probably rename one\n"
+          << "of the classes to put the tests into different test cases.";
+    }
+    return false;
+  }
+
+  return true;
+}
+
+#if GTEST_HAS_SEH
+
+// Adds an "exception thrown" fatal failure to the current test.  This
+// function returns its result via an output parameter pointer because VC++
+// prohibits creation of objects with destructors on stack in functions
+// using __try (see error C2712).
+static internal::String* FormatSehExceptionMessage(DWORD exception_code,
+                                                   const char* location) {
+  Message message;
+  message << "SEH exception with code 0x" << std::setbase(16) <<
+    exception_code << std::setbase(10) << " thrown in " << location << ".";
+
+  return new internal::String(message.GetString());
+}
+
+#endif  // GTEST_HAS_SEH
+
+#if GTEST_HAS_EXCEPTIONS
+
+// Adds an "exception thrown" fatal failure to the current test.
+static internal::String FormatCxxExceptionMessage(const char* description,
+                                                  const char* location) {
+  Message message;
+  if (description != NULL) {
+    message << "C++ exception with description \"" << description << "\"";
+  } else {
+    message << "Unknown C++ exception";
+  }
+  message << " thrown in " << location << ".";
+
+  return message.GetString();
+}
+
+static internal::String PrintTestPartResultToString(
+    const TestPartResult& test_part_result);
+
+// A failed Google Test assertion will throw an exception of this type when
+// GTEST_FLAG(throw_on_failure) is true (if exceptions are enabled).  We
+// derive it from std::runtime_error, which is for errors presumably
+// detectable only at run time.  Since std::runtime_error inherits from
+// std::exception, many testing frameworks know how to extract and print the
+// message inside it.
+class GoogleTestFailureException : public ::std::runtime_error {
+ public:
+  explicit GoogleTestFailureException(const TestPartResult& failure)
+      : ::std::runtime_error(PrintTestPartResultToString(failure).c_str()) {}
+};
+#endif  // GTEST_HAS_EXCEPTIONS
+
+namespace internal {
+// We put these helper functions in the internal namespace as IBM's xlC
+// compiler rejects the code if they were declared static.
+
+// Runs the given method and handles SEH exceptions it throws, when
+// SEH is supported; returns the 0-value for type Result in case of an
+// SEH exception.  (Microsoft compilers cannot handle SEH and C++
+// exceptions in the same function.  Therefore, we provide a separate
+// wrapper function for handling SEH exceptions.)
+template <class T, typename Result>
+Result HandleSehExceptionsInMethodIfSupported(
+    T* object, Result (T::*method)(), const char* location) {
+#if GTEST_HAS_SEH
+  __try {
+    return (object->*method)();
+  } __except (internal::UnitTestOptions::GTestShouldProcessSEH(  // NOLINT
+      GetExceptionCode())) {
+    // We create the exception message on the heap because VC++ prohibits
+    // creation of objects with destructors on stack in functions using __try
+    // (see error C2712).
+    internal::String* exception_message = FormatSehExceptionMessage(
+        GetExceptionCode(), location);
+    internal::ReportFailureInUnknownLocation(TestPartResult::kFatalFailure,
+                                             *exception_message);
+    delete exception_message;
+    return static_cast<Result>(0);
+  }
+#else
+  (void)location;
+  return (object->*method)();
+#endif  // GTEST_HAS_SEH
+}
+
+// Runs the given method and catches and reports C++ and/or SEH-style
+// exceptions, if they are supported; returns the 0-value for type
+// Result in case of an SEH exception.
+template <class T, typename Result>
+Result HandleExceptionsInMethodIfSupported(
+    T* object, Result (T::*method)(), const char* location) {
+  // NOTE: The user code can affect the way in which Google Test handles
+  // exceptions by setting GTEST_FLAG(catch_exceptions), but only before
+  // RUN_ALL_TESTS() starts. It is technically possible to check the flag
+  // after the exception is caught and either report or re-throw the
+  // exception based on the flag's value:
+  //
+  // try {
+  //   // Perform the test method.
+  // } catch (...) {
+  //   if (GTEST_FLAG(catch_exceptions))
+  //     // Report the exception as failure.
+  //   else
+  //     throw;  // Re-throws the original exception.
+  // }
+  //
+  // However, the purpose of this flag is to allow the program to drop into
+  // the debugger when the exception is thrown. On most platforms, once the
+  // control enters the catch block, the exception origin information is
+  // lost and the debugger will stop the program at the point of the
+  // re-throw in this function -- instead of at the point of the original
+  // throw statement in the code under test.  For this reason, we perform
+  // the check early, sacrificing the ability to affect Google Test's
+  // exception handling in the method where the exception is thrown.
+  if (internal::GetUnitTestImpl()->catch_exceptions()) {
+#if GTEST_HAS_EXCEPTIONS
+    try {
+      return HandleSehExceptionsInMethodIfSupported(object, method, location);
+    } catch (const GoogleTestFailureException&) {  // NOLINT
+      // This exception doesn't originate in code under test. It makes no
+      // sense to report it as a test failure.
+      throw;
+    } catch (const std::exception& e) {  // NOLINT
+      internal::ReportFailureInUnknownLocation(
+          TestPartResult::kFatalFailure,
+          FormatCxxExceptionMessage(e.what(), location));
+    } catch (...) {  // NOLINT
+      internal::ReportFailureInUnknownLocation(
+          TestPartResult::kFatalFailure,
+          FormatCxxExceptionMessage(NULL, location));
+    }
+    return static_cast<Result>(0);
+#else
+    return HandleSehExceptionsInMethodIfSupported(object, method, location);
+#endif  // GTEST_HAS_EXCEPTIONS
+  } else {
+    return (object->*method)();
+  }
+}
+
+}  // namespace internal
+
+// Runs the test and updates the test result.
+void Test::Run() {
+  if (!HasSameFixtureClass()) return;
+
+  internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
+  impl->os_stack_trace_getter()->UponLeavingGTest();
+  internal::HandleExceptionsInMethodIfSupported(this, &Test::SetUp, "SetUp()");
+  // We will run the test only if SetUp() was successful.
+  if (!HasFatalFailure()) {
+    impl->os_stack_trace_getter()->UponLeavingGTest();
+    internal::HandleExceptionsInMethodIfSupported(
+        this, &Test::TestBody, "the test body");
+  }
+
+  // However, we want to clean up as much as possible.  Hence we will
+  // always call TearDown(), even if SetUp() or the test body has
+  // failed.
+  impl->os_stack_trace_getter()->UponLeavingGTest();
+  internal::HandleExceptionsInMethodIfSupported(
+      this, &Test::TearDown, "TearDown()");
+}
+
+// Returns true iff the current test has a fatal failure.
+bool Test::HasFatalFailure() {
+  return internal::GetUnitTestImpl()->current_test_result()->HasFatalFailure();
+}
+
+// Returns true iff the current test has a non-fatal failure.
+bool Test::HasNonfatalFailure() {
+  return internal::GetUnitTestImpl()->current_test_result()->
+      HasNonfatalFailure();
+}
+
+// class TestInfo
+
+// Constructs a TestInfo object. It assumes ownership of the test factory
+// object.
+// TODO(vladl@google.com): Make a_test_case_name and a_name const string&'s
+// to signify they cannot be NULLs.
+TestInfo::TestInfo(const char* a_test_case_name,
+                   const char* a_name,
+                   const char* a_type_param,
+                   const char* a_value_param,
+                   internal::TypeId fixture_class_id,
+                   internal::TestFactoryBase* factory)
+    : test_case_name_(a_test_case_name),
+      name_(a_name),
+      type_param_(a_type_param ? new std::string(a_type_param) : NULL),
+      value_param_(a_value_param ? new std::string(a_value_param) : NULL),
+      fixture_class_id_(fixture_class_id),
+      should_run_(false),
+      is_disabled_(false),
+      matches_filter_(false),
+      factory_(factory),
+      result_() {}
+
+// Destructs a TestInfo object.
+TestInfo::~TestInfo() { delete factory_; }
+
+namespace internal {
+
+// Creates a new TestInfo object and registers it with Google Test;
+// returns the created object.
+//
+// Arguments:
+//
+//   test_case_name:   name of the test case
+//   name:             name of the test
+//   type_param:       the name of the test's type parameter, or NULL if
+//                     this is not a typed or a type-parameterized test.
+//   value_param:      text representation of the test's value parameter,
+//                     or NULL if this is not a value-parameterized test.
+//   fixture_class_id: ID of the test fixture class
+//   set_up_tc:        pointer to the function that sets up the test case
+//   tear_down_tc:     pointer to the function that tears down the test case
+//   factory:          pointer to the factory that creates a test object.
+//                     The newly created TestInfo instance will assume
+//                     ownership of the factory object.
+TestInfo* MakeAndRegisterTestInfo(
+    const char* test_case_name, const char* name,
+    const char* type_param,
+    const char* value_param,
+    TypeId fixture_class_id,
+    SetUpTestCaseFunc set_up_tc,
+    TearDownTestCaseFunc tear_down_tc,
+    TestFactoryBase* factory) {
+  TestInfo* const test_info =
+      new TestInfo(test_case_name, name, type_param, value_param,
+                   fixture_class_id, factory);
+  GetUnitTestImpl()->AddTestInfo(set_up_tc, tear_down_tc, test_info);
+  return test_info;
+}
+
+#if GTEST_HAS_PARAM_TEST
+void ReportInvalidTestCaseType(const char* test_case_name,
+                               const char* file, int line) {
+  Message errors;
+  errors
+      << "Attempted redefinition of test case " << test_case_name << ".\n"
+      << "All tests in the same test case must use the same test fixture\n"
+      << "class.  However, in test case " << test_case_name << ", you tried\n"
+      << "to define a test using a fixture class different from the one\n"
+      << "used earlier. This can happen if the two fixture classes are\n"
+      << "from different namespaces and have the same name. You should\n"
+      << "probably rename one of the classes to put the tests into different\n"
+      << "test cases.";
+
+  fprintf(stderr, "%s %s", FormatFileLocation(file, line).c_str(),
+          errors.GetString().c_str());
+}
+#endif  // GTEST_HAS_PARAM_TEST
+
+}  // namespace internal
+
+namespace {
+
+// A predicate that checks the test name of a TestInfo against a known
+// value.
+//
+// This is used for implementation of the TestCase class only.  We put
+// it in the anonymous namespace to prevent polluting the outer
+// namespace.
+//
+// TestNameIs is copyable.
+class TestNameIs {
+ public:
+  // Constructor.
+  //
+  // TestNameIs has NO default constructor.
+  explicit TestNameIs(const char* name)
+      : name_(name) {}
+
+  // Returns true iff the test name of test_info matches name_.
+  bool operator()(const TestInfo * test_info) const {
+    return test_info && internal::String(test_info->name()).Compare(name_) == 0;
+  }
+
+ private:
+  internal::String name_;
+};
+
+}  // namespace
+
+namespace internal {
+
+// This method expands all parameterized tests registered with macros TEST_P
+// and INSTANTIATE_TEST_CASE_P into regular tests and registers those.
+// This will be done just once during the program runtime.
+void UnitTestImpl::RegisterParameterizedTests() {
+#if GTEST_HAS_PARAM_TEST
+  if (!parameterized_tests_registered_) {
+    parameterized_test_registry_.RegisterTests();
+    parameterized_tests_registered_ = true;
+  }
+#endif
+}
+
+}  // namespace internal
+
+// Creates the test object, runs it, records its result, and then
+// deletes it.
+void TestInfo::Run() {
+  if (!should_run_) return;
+
+  // Tells UnitTest where to store test result.
+  internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
+  impl->set_current_test_info(this);
+
+  TestEventListener* repeater = UnitTest::GetInstance()->listeners().repeater();
+
+  // Notifies the unit test event listeners that a test is about to start.
+  repeater->OnTestStart(*this);
+
+  const TimeInMillis start = internal::GetTimeInMillis();
+
+  impl->os_stack_trace_getter()->UponLeavingGTest();
+
+  // Creates the test object.
+  Test* const test = internal::HandleExceptionsInMethodIfSupported(
+      factory_, &internal::TestFactoryBase::CreateTest,
+      "the test fixture's constructor");
+
+  // Runs the test only if the test object was created and its
+  // constructor didn't generate a fatal failure.
+  if ((test != NULL) && !Test::HasFatalFailure()) {
+    // This doesn't throw as all user code that can throw are wrapped into
+    // exception handling code.
+    test->Run();
+  }
+
+  // Deletes the test object.
+  impl->os_stack_trace_getter()->UponLeavingGTest();
+  internal::HandleExceptionsInMethodIfSupported(
+      test, &Test::DeleteSelf_, "the test fixture's destructor");
+
+  result_.set_elapsed_time(internal::GetTimeInMillis() - start);
+
+  // Notifies the unit test event listener that a test has just finished.
+  repeater->OnTestEnd(*this);
+
+  // Tells UnitTest to stop associating assertion results to this
+  // test.
+  impl->set_current_test_info(NULL);
+}
+
+// class TestCase
+
+// Gets the number of successful tests in this test case.
+int TestCase::successful_test_count() const {
+  return CountIf(test_info_list_, TestPassed);
+}
+
+// Gets the number of failed tests in this test case.
+int TestCase::failed_test_count() const {
+  return CountIf(test_info_list_, TestFailed);
+}
+
+int TestCase::disabled_test_count() const {
+  return CountIf(test_info_list_, TestDisabled);
+}
+
+// Get the number of tests in this test case that should run.
+int TestCase::test_to_run_count() const {
+  return CountIf(test_info_list_, ShouldRunTest);
+}
+
+// Gets the number of all tests.
+int TestCase::total_test_count() const {
+  return static_cast<int>(test_info_list_.size());
+}
+
+// Creates a TestCase with the given name.
+//
+// Arguments:
+//
+//   name:         name of the test case
+//   a_type_param: the name of the test case's type parameter, or NULL if
+//                 this is not a typed or a type-parameterized test case.
+//   set_up_tc:    pointer to the function that sets up the test case
+//   tear_down_tc: pointer to the function that tears down the test case
+TestCase::TestCase(const char* a_name, const char* a_type_param,
+                   Test::SetUpTestCaseFunc set_up_tc,
+                   Test::TearDownTestCaseFunc tear_down_tc)
+    : name_(a_name),
+      type_param_(a_type_param ? new std::string(a_type_param) : NULL),
+      set_up_tc_(set_up_tc),
+      tear_down_tc_(tear_down_tc),
+      should_run_(false),
+      elapsed_time_(0) {
+}
+
+// Destructor of TestCase.
+TestCase::~TestCase() {
+  // Deletes every Test in the collection.
+  ForEach(test_info_list_, internal::Delete<TestInfo>);
+}
+
+// Returns the i-th test among all the tests. i can range from 0 to
+// total_test_count() - 1. If i is not in that range, returns NULL.
+const TestInfo* TestCase::GetTestInfo(int i) const {
+  const int index = GetElementOr(test_indices_, i, -1);
+  return index < 0 ? NULL : test_info_list_[index];
+}
+
+// Returns the i-th test among all the tests. i can range from 0 to
+// total_test_count() - 1. If i is not in that range, returns NULL.
+TestInfo* TestCase::GetMutableTestInfo(int i) {
+  const int index = GetElementOr(test_indices_, i, -1);
+  return index < 0 ? NULL : test_info_list_[index];
+}
+
+// Adds a test to this test case.  Will delete the test upon
+// destruction of the TestCase object.
+void TestCase::AddTestInfo(TestInfo * test_info) {
+  test_info_list_.push_back(test_info);
+  test_indices_.push_back(static_cast<int>(test_indices_.size()));
+}
+
+// Runs every test in this TestCase.
+void TestCase::Run() {
+  if (!should_run_) return;
+
+  internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
+  impl->set_current_test_case(this);
+
+  TestEventListener* repeater = UnitTest::GetInstance()->listeners().repeater();
+
+  repeater->OnTestCaseStart(*this);
+  impl->os_stack_trace_getter()->UponLeavingGTest();
+  internal::HandleExceptionsInMethodIfSupported(
+      this, &TestCase::RunSetUpTestCase, "SetUpTestCase()");
+
+  const internal::TimeInMillis start = internal::GetTimeInMillis();
+  for (int i = 0; i < total_test_count(); i++) {
+    GetMutableTestInfo(i)->Run();
+  }
+  elapsed_time_ = internal::GetTimeInMillis() - start;
+
+  impl->os_stack_trace_getter()->UponLeavingGTest();
+  internal::HandleExceptionsInMethodIfSupported(
+      this, &TestCase::RunTearDownTestCase, "TearDownTestCase()");
+
+  repeater->OnTestCaseEnd(*this);
+  impl->set_current_test_case(NULL);
+}
+
+// Clears the results of all tests in this test case.
+void TestCase::ClearResult() {
+  ForEach(test_info_list_, TestInfo::ClearTestResult);
+}
+
+// Shuffles the tests in this test case.
+void TestCase::ShuffleTests(internal::Random* random) {
+  Shuffle(random, &test_indices_);
+}
+
+// Restores the test order to before the first shuffle.
+void TestCase::UnshuffleTests() {
+  for (size_t i = 0; i < test_indices_.size(); i++) {
+    test_indices_[i] = static_cast<int>(i);
+  }
+}
+
+// Formats a countable noun.  Depending on its quantity, either the
+// singular form or the plural form is used. e.g.
+//
+// FormatCountableNoun(1, "formula", "formuli") returns "1 formula".
+// FormatCountableNoun(5, "book", "books") returns "5 books".
+static internal::String FormatCountableNoun(int count,
+                                            const char * singular_form,
+                                            const char * plural_form) {
+  return internal::String::Format("%d %s", count,
+                                  count == 1 ? singular_form : plural_form);
+}
+
+// Formats the count of tests.
+static internal::String FormatTestCount(int test_count) {
+  return FormatCountableNoun(test_count, "test", "tests");
+}
+
+// Formats the count of test cases.
+static internal::String FormatTestCaseCount(int test_case_count) {
+  return FormatCountableNoun(test_case_count, "test case", "test cases");
+}
+
+// Converts a TestPartResult::Type enum to human-friendly string
+// representation.  Both kNonFatalFailure and kFatalFailure are translated
+// to "Failure", as the user usually doesn't care about the difference
+// between the two when viewing the test result.
+static const char * TestPartResultTypeToString(TestPartResult::Type type) {
+  switch (type) {
+    case TestPartResult::kSuccess:
+      return "Success";
+
+    case TestPartResult::kNonFatalFailure:
+    case TestPartResult::kFatalFailure:
+#ifdef _MSC_VER
+      return "error: ";
+#else
+      return "Failure\n";
+#endif
+    default:
+      return "Unknown result type";
+  }
+}
+
+// Prints a TestPartResult to a String.
+static internal::String PrintTestPartResultToString(
+    const TestPartResult& test_part_result) {
+  return (Message()
+          << internal::FormatFileLocation(test_part_result.file_name(),
+                                          test_part_result.line_number())
+          << " " << TestPartResultTypeToString(test_part_result.type())
+          << test_part_result.message()).GetString();
+}
+
+// Prints a TestPartResult.
+static void PrintTestPartResult(const TestPartResult& test_part_result) {
+  const internal::String& result =
+      PrintTestPartResultToString(test_part_result);
+  printf("%s\n", result.c_str());
+  fflush(stdout);
+  // If the test program runs in Visual Studio or a debugger, the
+  // following statements add the test part result message to the Output
+  // window such that the user can double-click on it to jump to the
+  // corresponding source code location; otherwise they do nothing.
+#if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE
+  // We don't call OutputDebugString*() on Windows Mobile, as printing
+  // to stdout is done by OutputDebugString() there already - we don't
+  // want the same message printed twice.
+  ::OutputDebugStringA(result.c_str());
+  ::OutputDebugStringA("\n");
+#endif
+}
+
+// class PrettyUnitTestResultPrinter
+
+namespace internal {
+
+enum GTestColor {
+  COLOR_DEFAULT,
+  COLOR_RED,
+  COLOR_GREEN,
+  COLOR_YELLOW
+};
+
+#if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE
+
+// Returns the character attribute for the given color.
+WORD GetColorAttribute(GTestColor color) {
+  switch (color) {
+    case COLOR_RED:    return FOREGROUND_RED;
+    case COLOR_GREEN:  return FOREGROUND_GREEN;
+    case COLOR_YELLOW: return FOREGROUND_RED | FOREGROUND_GREEN;
+    default:           return 0;
+  }
+}
+
+#else
+
+// Returns the ANSI color code for the given color.  COLOR_DEFAULT is
+// an invalid input.
+const char* GetAnsiColorCode(GTestColor color) {
+  switch (color) {
+    case COLOR_RED:     return "1";
+    case COLOR_GREEN:   return "2";
+    case COLOR_YELLOW:  return "3";
+    default:            return NULL;
+  };
+}
+
+#endif  // GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE
+
+// Returns true iff Google Test should use colors in the output.
+bool ShouldUseColor(bool stdout_is_tty) {
+  const char* const gtest_color = GTEST_FLAG(color).c_str();
+
+  if (String::CaseInsensitiveCStringEquals(gtest_color, "auto")) {
+#if GTEST_OS_WINDOWS
+    // On Windows the TERM variable is usually not set, but the
+    // console there does support colors.
+    return stdout_is_tty;
+#else
+    // On non-Windows platforms, we rely on the TERM variable.
+    const char* const term = posix::GetEnv("TERM");
+    const bool term_supports_color =
+        String::CStringEquals(term, "xterm") ||
+        String::CStringEquals(term, "xterm-color") ||
+        String::CStringEquals(term, "xterm-256color") ||
+        String::CStringEquals(term, "screen") ||
+        String::CStringEquals(term, "linux") ||
+        String::CStringEquals(term, "cygwin");
+    return stdout_is_tty && term_supports_color;
+#endif  // GTEST_OS_WINDOWS
+  }
+
+  return String::CaseInsensitiveCStringEquals(gtest_color, "yes") ||
+      String::CaseInsensitiveCStringEquals(gtest_color, "true") ||
+      String::CaseInsensitiveCStringEquals(gtest_color, "t") ||
+      String::CStringEquals(gtest_color, "1");
+  // We take "yes", "true", "t", and "1" as meaning "yes".  If the
+  // value is neither one of these nor "auto", we treat it as "no" to
+  // be conservative.
+}
+
+// Helpers for printing colored strings to stdout. Note that on Windows, we
+// cannot simply emit special characters and have the terminal change colors.
+// This routine must actually emit the characters rather than return a string
+// that would be colored when printed, as can be done on Linux.
+void ColoredPrintf(GTestColor color, const char* fmt, ...) {
+  va_list args;
+  va_start(args, fmt);
+
+#if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_SYMBIAN || GTEST_OS_ZOS
+  const bool use_color = false;
+#else
+  static const bool in_color_mode =
+      ShouldUseColor(posix::IsATTY(posix::FileNo(stdout)) != 0);
+  const bool use_color = in_color_mode && (color != COLOR_DEFAULT);
+#endif  // GTEST_OS_WINDOWS_MOBILE || GTEST_OS_SYMBIAN || GTEST_OS_ZOS
+  // The '!= 0' comparison is necessary to satisfy MSVC 7.1.
+
+  if (!use_color) {
+    vprintf(fmt, args);
+    va_end(args);
+    return;
+  }
+
+#if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE
+  const HANDLE stdout_handle = GetStdHandle(STD_OUTPUT_HANDLE);
+
+  // Gets the current text color.
+  CONSOLE_SCREEN_BUFFER_INFO buffer_info;
+  GetConsoleScreenBufferInfo(stdout_handle, &buffer_info);
+  const WORD old_color_attrs = buffer_info.wAttributes;
+
+  // We need to flush the stream buffers into the console before each
+  // SetConsoleTextAttribute call lest it affect the text that is already
+  // printed but has not yet reached the console.
+  fflush(stdout);
+  SetConsoleTextAttribute(stdout_handle,
+                          GetColorAttribute(color) | FOREGROUND_INTENSITY);
+  vprintf(fmt, args);
+
+  fflush(stdout);
+  // Restores the text color.
+  SetConsoleTextAttribute(stdout_handle, old_color_attrs);
+#else
+  printf("\033[0;3%sm", GetAnsiColorCode(color));
+  vprintf(fmt, args);
+  printf("\033[m");  // Resets the terminal to default.
+#endif  // GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE
+  va_end(args);
+}
+
+void PrintFullTestCommentIfPresent(const TestInfo& test_info) {
+  const char* const type_param = test_info.type_param();
+  const char* const value_param = test_info.value_param();
+
+  if (type_param != NULL || value_param != NULL) {
+    printf(", where ");
+    if (type_param != NULL) {
+      printf("TypeParam = %s", type_param);
+      if (value_param != NULL)
+        printf(" and ");
+    }
+    if (value_param != NULL) {
+      printf("GetParam() = %s", value_param);
+    }
+  }
+}
+
+// This class implements the TestEventListener interface.
+//
+// Class PrettyUnitTestResultPrinter is copyable.
+class PrettyUnitTestResultPrinter : public TestEventListener {
+ public:
+  PrettyUnitTestResultPrinter() {}
+  static void PrintTestName(const char * test_case, const char * test) {
+    printf("%s.%s", test_case, test);
+  }
+
+  // The following methods override what's in the TestEventListener class.
+  virtual void OnTestProgramStart(const UnitTest& /*unit_test*/) {}
+  virtual void OnTestIterationStart(const UnitTest& unit_test, int iteration);
+  virtual void OnEnvironmentsSetUpStart(const UnitTest& unit_test);
+  virtual void OnEnvironmentsSetUpEnd(const UnitTest& /*unit_test*/) {}
+  virtual void OnTestCaseStart(const TestCase& test_case);
+  virtual void OnTestStart(const TestInfo& test_info);
+  virtual void OnTestPartResult(const TestPartResult& result);
+  virtual void OnTestEnd(const TestInfo& test_info);
+  virtual void OnTestCaseEnd(const TestCase& test_case);
+  virtual void OnEnvironmentsTearDownStart(const UnitTest& unit_test);
+  virtual void OnEnvironmentsTearDownEnd(const UnitTest& /*unit_test*/) {}
+  virtual void OnTestIterationEnd(const UnitTest& unit_test, int iteration);
+  virtual void OnTestProgramEnd(const UnitTest& /*unit_test*/) {}
+
+ private:
+  static void PrintFailedTests(const UnitTest& unit_test);
+};
+
+  // Fired before each iteration of tests starts.
+void PrettyUnitTestResultPrinter::OnTestIterationStart(
+    const UnitTest& unit_test, int iteration) {
+  if (GTEST_FLAG(repeat) != 1)
+    printf("\nRepeating all tests (iteration %d) . . .\n\n", iteration + 1);
+
+  const char* const filter = GTEST_FLAG(filter).c_str();
+
+  // Prints the filter if it's not *.  This reminds the user that some
+  // tests may be skipped.
+  if (!internal::String::CStringEquals(filter, kUniversalFilter)) {
+    ColoredPrintf(COLOR_YELLOW,
+                  "Note: %s filter = %s\n", GTEST_NAME_, filter);
+  }
+
+  if (internal::ShouldShard(kTestTotalShards, kTestShardIndex, false)) {
+    const Int32 shard_index = Int32FromEnvOrDie(kTestShardIndex, -1);
+    ColoredPrintf(COLOR_YELLOW,
+                  "Note: This is test shard %d of %s.\n",
+                  static_cast<int>(shard_index) + 1,
+                  internal::posix::GetEnv(kTestTotalShards));
+  }
+
+  if (GTEST_FLAG(shuffle)) {
+    ColoredPrintf(COLOR_YELLOW,
+                  "Note: Randomizing tests' orders with a seed of %d .\n",
+                  unit_test.random_seed());
+  }
+
+  ColoredPrintf(COLOR_GREEN,  "[==========] ");
+  printf("Running %s from %s.\n",
+         FormatTestCount(unit_test.test_to_run_count()).c_str(),
+         FormatTestCaseCount(unit_test.test_case_to_run_count()).c_str());
+  fflush(stdout);
+}
+
+void PrettyUnitTestResultPrinter::OnEnvironmentsSetUpStart(
+    const UnitTest& /*unit_test*/) {
+  ColoredPrintf(COLOR_GREEN,  "[----------] ");
+  printf("Global test environment set-up.\n");
+  fflush(stdout);
+}
+
+void PrettyUnitTestResultPrinter::OnTestCaseStart(const TestCase& test_case) {
+  const internal::String counts =
+      FormatCountableNoun(test_case.test_to_run_count(), "test", "tests");
+  ColoredPrintf(COLOR_GREEN, "[----------] ");
+  printf("%s from %s", counts.c_str(), test_case.name());
+  if (test_case.type_param() == NULL) {
+    printf("\n");
+  } else {
+    printf(", where TypeParam = %s\n", test_case.type_param());
+  }
+  fflush(stdout);
+}
+
+void PrettyUnitTestResultPrinter::OnTestStart(const TestInfo& test_info) {
+  ColoredPrintf(COLOR_GREEN,  "[ RUN      ] ");
+  PrintTestName(test_info.test_case_name(), test_info.name());
+  printf("\n");
+  fflush(stdout);
+}
+
+// Called after an assertion failure.
+void PrettyUnitTestResultPrinter::OnTestPartResult(
+    const TestPartResult& result) {
+  // If the test part succeeded, we don't need to do anything.
+  if (result.type() == TestPartResult::kSuccess)
+    return;
+
+  // Print failure message from the assertion (e.g. expected this and got that).
+  PrintTestPartResult(result);
+  fflush(stdout);
+}
+
+void PrettyUnitTestResultPrinter::OnTestEnd(const TestInfo& test_info) {
+  if (test_info.result()->Passed()) {
+    ColoredPrintf(COLOR_GREEN, "[       OK ] ");
+  } else {
+    ColoredPrintf(COLOR_RED, "[  FAILED  ] ");
+  }
+  PrintTestName(test_info.test_case_name(), test_info.name());
+  if (test_info.result()->Failed())
+    PrintFullTestCommentIfPresent(test_info);
+
+  if (GTEST_FLAG(print_time)) {
+    printf(" (%s ms)\n", internal::StreamableToString(
+           test_info.result()->elapsed_time()).c_str());
+  } else {
+    printf("\n");
+  }
+  fflush(stdout);
+}
+
+void PrettyUnitTestResultPrinter::OnTestCaseEnd(const TestCase& test_case) {
+  if (!GTEST_FLAG(print_time)) return;
+
+  const internal::String counts =
+      FormatCountableNoun(test_case.test_to_run_count(), "test", "tests");
+  ColoredPrintf(COLOR_GREEN, "[----------] ");
+  printf("%s from %s (%s ms total)\n\n",
+         counts.c_str(), test_case.name(),
+         internal::StreamableToString(test_case.elapsed_time()).c_str());
+  fflush(stdout);
+}
+
+void PrettyUnitTestResultPrinter::OnEnvironmentsTearDownStart(
+    const UnitTest& /*unit_test*/) {
+  ColoredPrintf(COLOR_GREEN,  "[----------] ");
+  printf("Global test environment tear-down\n");
+  fflush(stdout);
+}
+
+// Internal helper for printing the list of failed tests.
+void PrettyUnitTestResultPrinter::PrintFailedTests(const UnitTest& unit_test) {
+  const int failed_test_count = unit_test.failed_test_count();
+  if (failed_test_count == 0) {
+    return;
+  }
+
+  for (int i = 0; i < unit_test.total_test_case_count(); ++i) {
+    const TestCase& test_case = *unit_test.GetTestCase(i);
+    if (!test_case.should_run() || (test_case.failed_test_count() == 0)) {
+      continue;
+    }
+    for (int j = 0; j < test_case.total_test_count(); ++j) {
+      const TestInfo& test_info = *test_case.GetTestInfo(j);
+      if (!test_info.should_run() || test_info.result()->Passed()) {
+        continue;
+      }
+      ColoredPrintf(COLOR_RED, "[  FAILED  ] ");
+      printf("%s.%s", test_case.name(), test_info.name());
+      PrintFullTestCommentIfPresent(test_info);
+      printf("\n");
+    }
+  }
+}
+
+void PrettyUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test,
+                                                     int /*iteration*/) {
+  ColoredPrintf(COLOR_GREEN,  "[==========] ");
+  printf("%s from %s ran.",
+         FormatTestCount(unit_test.test_to_run_count()).c_str(),
+         FormatTestCaseCount(unit_test.test_case_to_run_count()).c_str());
+  if (GTEST_FLAG(print_time)) {
+    printf(" (%s ms total)",
+           internal::StreamableToString(unit_test.elapsed_time()).c_str());
+  }
+  printf("\n");
+  ColoredPrintf(COLOR_GREEN,  "[  PASSED  ] ");
+  printf("%s.\n", FormatTestCount(unit_test.successful_test_count()).c_str());
+
+  int num_failures = unit_test.failed_test_count();
+  if (!unit_test.Passed()) {
+    const int failed_test_count = unit_test.failed_test_count();
+    ColoredPrintf(COLOR_RED,  "[  FAILED  ] ");
+    printf("%s, listed below:\n", FormatTestCount(failed_test_count).c_str());
+    PrintFailedTests(unit_test);
+    printf("\n%2d FAILED %s\n", num_failures,
+                        num_failures == 1 ? "TEST" : "TESTS");
+  }
+
+  int num_disabled = unit_test.disabled_test_count();
+  if (num_disabled && !GTEST_FLAG(also_run_disabled_tests)) {
+    if (!num_failures) {
+      printf("\n");  // Add a spacer if no FAILURE banner is displayed.
+    }
+    ColoredPrintf(COLOR_YELLOW,
+                  "  YOU HAVE %d DISABLED %s\n\n",
+                  num_disabled,
+                  num_disabled == 1 ? "TEST" : "TESTS");
+  }
+  // Ensure that Google Test output is printed before, e.g., heapchecker output.
+  fflush(stdout);
+}
+
+// End PrettyUnitTestResultPrinter
+
+// class TestEventRepeater
+//
+// This class forwards events to other event listeners.
+class TestEventRepeater : public TestEventListener {
+ public:
+  TestEventRepeater() : forwarding_enabled_(true) {}
+  virtual ~TestEventRepeater();
+  void Append(TestEventListener *listener);
+  TestEventListener* Release(TestEventListener* listener);
+
+  // Controls whether events will be forwarded to listeners_. Set to false
+  // in death test child processes.
+  bool forwarding_enabled() const { return forwarding_enabled_; }
+  void set_forwarding_enabled(bool enable) { forwarding_enabled_ = enable; }
+
+  virtual void OnTestProgramStart(const UnitTest& unit_test);
+  virtual void OnTestIterationStart(const UnitTest& unit_test, int iteration);
+  virtual void OnEnvironmentsSetUpStart(const UnitTest& unit_test);
+  virtual void OnEnvironmentsSetUpEnd(const UnitTest& unit_test);
+  virtual void OnTestCaseStart(const TestCase& test_case);
+  virtual void OnTestStart(const TestInfo& test_info);
+  virtual void OnTestPartResult(const TestPartResult& result);
+  virtual void OnTestEnd(const TestInfo& test_info);
+  virtual void OnTestCaseEnd(const TestCase& test_case);
+  virtual void OnEnvironmentsTearDownStart(const UnitTest& unit_test);
+  virtual void OnEnvironmentsTearDownEnd(const UnitTest& unit_test);
+  virtual void OnTestIterationEnd(const UnitTest& unit_test, int iteration);
+  virtual void OnTestProgramEnd(const UnitTest& unit_test);
+
+ private:
+  // Controls whether events will be forwarded to listeners_. Set to false
+  // in death test child processes.
+  bool forwarding_enabled_;
+  // The list of listeners that receive events.
+  std::vector<TestEventListener*> listeners_;
+
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(TestEventRepeater);
+};
+
+TestEventRepeater::~TestEventRepeater() {
+  ForEach(listeners_, Delete<TestEventListener>);
+}
+
+void TestEventRepeater::Append(TestEventListener *listener) {
+  listeners_.push_back(listener);
+}
+
+// TODO(vladl@google.com): Factor the search functionality into Vector::Find.
+TestEventListener* TestEventRepeater::Release(TestEventListener *listener) {
+  for (size_t i = 0; i < listeners_.size(); ++i) {
+    if (listeners_[i] == listener) {
+      listeners_.erase(listeners_.begin() + i);
+      return listener;
+    }
+  }
+
+  return NULL;
+}
+
+// Since most methods are very similar, use macros to reduce boilerplate.
+// This defines a member that forwards the call to all listeners.
+#define GTEST_REPEATER_METHOD_(Name, Type) \
+void TestEventRepeater::Name(const Type& parameter) { \
+  if (forwarding_enabled_) { \
+    for (size_t i = 0; i < listeners_.size(); i++) { \
+      listeners_[i]->Name(parameter); \
+    } \
+  } \
+}
+// This defines a member that forwards the call to all listeners in reverse
+// order.
+#define GTEST_REVERSE_REPEATER_METHOD_(Name, Type) \
+void TestEventRepeater::Name(const Type& parameter) { \
+  if (forwarding_enabled_) { \
+    for (int i = static_cast<int>(listeners_.size()) - 1; i >= 0; i--) { \
+      listeners_[i]->Name(parameter); \
+    } \
+  } \
+}
+
+GTEST_REPEATER_METHOD_(OnTestProgramStart, UnitTest)
+GTEST_REPEATER_METHOD_(OnEnvironmentsSetUpStart, UnitTest)
+GTEST_REPEATER_METHOD_(OnTestCaseStart, TestCase)
+GTEST_REPEATER_METHOD_(OnTestStart, TestInfo)
+GTEST_REPEATER_METHOD_(OnTestPartResult, TestPartResult)
+GTEST_REPEATER_METHOD_(OnEnvironmentsTearDownStart, UnitTest)
+GTEST_REVERSE_REPEATER_METHOD_(OnEnvironmentsSetUpEnd, UnitTest)
+GTEST_REVERSE_REPEATER_METHOD_(OnEnvironmentsTearDownEnd, UnitTest)
+GTEST_REVERSE_REPEATER_METHOD_(OnTestEnd, TestInfo)
+GTEST_REVERSE_REPEATER_METHOD_(OnTestCaseEnd, TestCase)
+GTEST_REVERSE_REPEATER_METHOD_(OnTestProgramEnd, UnitTest)
+
+#undef GTEST_REPEATER_METHOD_
+#undef GTEST_REVERSE_REPEATER_METHOD_
+
+void TestEventRepeater::OnTestIterationStart(const UnitTest& unit_test,
+                                             int iteration) {
+  if (forwarding_enabled_) {
+    for (size_t i = 0; i < listeners_.size(); i++) {
+      listeners_[i]->OnTestIterationStart(unit_test, iteration);
+    }
+  }
+}
+
+void TestEventRepeater::OnTestIterationEnd(const UnitTest& unit_test,
+                                           int iteration) {
+  if (forwarding_enabled_) {
+    for (int i = static_cast<int>(listeners_.size()) - 1; i >= 0; i--) {
+      listeners_[i]->OnTestIterationEnd(unit_test, iteration);
+    }
+  }
+}
+
+// End TestEventRepeater
+
+// This class generates an XML output file.
+class XmlUnitTestResultPrinter : public EmptyTestEventListener {
+ public:
+  explicit XmlUnitTestResultPrinter(const char* output_file);
+
+  virtual void OnTestIterationEnd(const UnitTest& unit_test, int iteration);
+
+ private:
+  // Is c a whitespace character that is normalized to a space character
+  // when it appears in an XML attribute value?
+  static bool IsNormalizableWhitespace(char c) {
+    return c == 0x9 || c == 0xA || c == 0xD;
+  }
+
+  // May c appear in a well-formed XML document?
+  static bool IsValidXmlCharacter(char c) {
+    return IsNormalizableWhitespace(c) || c >= 0x20;
+  }
+
+  // Returns an XML-escaped copy of the input string str.  If
+  // is_attribute is true, the text is meant to appear as an attribute
+  // value, and normalizable whitespace is preserved by replacing it
+  // with character references.
+  static String EscapeXml(const char* str, bool is_attribute);
+
+  // Returns the given string with all characters invalid in XML removed.
+  static string RemoveInvalidXmlCharacters(const string& str);
+
+  // Convenience wrapper around EscapeXml when str is an attribute value.
+  static String EscapeXmlAttribute(const char* str) {
+    return EscapeXml(str, true);
+  }
+
+  // Convenience wrapper around EscapeXml when str is not an attribute value.
+  static String EscapeXmlText(const char* str) { return EscapeXml(str, false); }
+
+  // Streams an XML CDATA section, escaping invalid CDATA sequences as needed.
+  static void OutputXmlCDataSection(::std::ostream* stream, const char* data);
+
+  // Streams an XML representation of a TestInfo object.
+  static void OutputXmlTestInfo(::std::ostream* stream,
+                                const char* test_case_name,
+                                const TestInfo& test_info);
+
+  // Prints an XML representation of a TestCase object
+  static void PrintXmlTestCase(FILE* out, const TestCase& test_case);
+
+  // Prints an XML summary of unit_test to output stream out.
+  static void PrintXmlUnitTest(FILE* out, const UnitTest& unit_test);
+
+  // Produces a string representing the test properties in a result as space
+  // delimited XML attributes based on the property key="value" pairs.
+  // When the String is not empty, it includes a space at the beginning,
+  // to delimit this attribute from prior attributes.
+  static String TestPropertiesAsXmlAttributes(const TestResult& result);
+
+  // The output file.
+  const String output_file_;
+
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(XmlUnitTestResultPrinter);
+};
+
+// Creates a new XmlUnitTestResultPrinter.
+XmlUnitTestResultPrinter::XmlUnitTestResultPrinter(const char* output_file)
+    : output_file_(output_file) {
+  if (output_file_.c_str() == NULL || output_file_.empty()) {
+    fprintf(stderr, "XML output file may not be null\n");
+    fflush(stderr);
+    exit(EXIT_FAILURE);
+  }
+}
+
+// Called after the unit test ends.
+void XmlUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test,
+                                                  int /*iteration*/) {
+  FILE* xmlout = NULL;
+  FilePath output_file(output_file_);
+  FilePath output_dir(output_file.RemoveFileName());
+
+  if (output_dir.CreateDirectoriesRecursively()) {
+    xmlout = posix::FOpen(output_file_.c_str(), "w");
+  }
+  if (xmlout == NULL) {
+    // TODO(wan): report the reason of the failure.
+    //
+    // We don't do it for now as:
+    //
+    //   1. There is no urgent need for it.
+    //   2. It's a bit involved to make the errno variable thread-safe on
+    //      all three operating systems (Linux, Windows, and Mac OS).
+    //   3. To interpret the meaning of errno in a thread-safe way,
+    //      we need the strerror_r() function, which is not available on
+    //      Windows.
+    fprintf(stderr,
+            "Unable to open file \"%s\"\n",
+            output_file_.c_str());
+    fflush(stderr);
+    exit(EXIT_FAILURE);
+  }
+  PrintXmlUnitTest(xmlout, unit_test);
+  fclose(xmlout);
+}
+
+// Returns an XML-escaped copy of the input string str.  If is_attribute
+// is true, the text is meant to appear as an attribute value, and
+// normalizable whitespace is preserved by replacing it with character
+// references.
+//
+// Invalid XML characters in str, if any, are stripped from the output.
+// It is expected that most, if not all, of the text processed by this
+// module will consist of ordinary English text.
+// If this module is ever modified to produce version 1.1 XML output,
+// most invalid characters can be retained using character references.
+// TODO(wan): It might be nice to have a minimally invasive, human-readable
+// escaping scheme for invalid characters, rather than dropping them.
+String XmlUnitTestResultPrinter::EscapeXml(const char* str, bool is_attribute) {
+  Message m;
+
+  if (str != NULL) {
+    for (const char* src = str; *src; ++src) {
+      switch (*src) {
+        case '<':
+          m << "&lt;";
+          break;
+        case '>':
+          m << "&gt;";
+          break;
+        case '&':
+          m << "&amp;";
+          break;
+        case '\'':
+          if (is_attribute)
+            m << "&apos;";
+          else
+            m << '\'';
+          break;
+        case '"':
+          if (is_attribute)
+            m << "&quot;";
+          else
+            m << '"';
+          break;
+        default:
+          if (IsValidXmlCharacter(*src)) {
+            if (is_attribute && IsNormalizableWhitespace(*src))
+              m << String::Format("&#x%02X;", unsigned(*src));
+            else
+              m << *src;
+          }
+          break;
+      }
+    }
+  }
+
+  return m.GetString();
+}
+
+// Returns the given string with all characters invalid in XML removed.
+// Currently invalid characters are dropped from the string. An
+// alternative is to replace them with certain characters such as . or ?.
+string XmlUnitTestResultPrinter::RemoveInvalidXmlCharacters(const string& str) {
+  string output;
+  output.reserve(str.size());
+  for (string::const_iterator it = str.begin(); it != str.end(); ++it)
+    if (IsValidXmlCharacter(*it))
+      output.push_back(*it);
+
+  return output;
+}
+
+// The following routines generate an XML representation of a UnitTest
+// object.
+//
+// This is how Google Test concepts map to the DTD:
+//
+// <testsuites name="AllTests">        <-- corresponds to a UnitTest object
+//   <testsuite name="testcase-name">  <-- corresponds to a TestCase object
+//     <testcase name="test-name">     <-- corresponds to a TestInfo object
+//       <failure message="...">...</failure>
+//       <failure message="...">...</failure>
+//       <failure message="...">...</failure>
+//                                     <-- individual assertion failures
+//     </testcase>
+//   </testsuite>
+// </testsuites>
+
+// Formats the given time in milliseconds as seconds.
+std::string FormatTimeInMillisAsSeconds(TimeInMillis ms) {
+  ::std::stringstream ss;
+  ss << ms/1000.0;
+  return ss.str();
+}
+
+// Converts the given epoch time in milliseconds to a date string in the ISO
+// 8601 format, without the timezone information.
+std::string FormatEpochTimeInMillisAsIso8601(TimeInMillis ms) {
+  // Using non-reentrant version as localtime_r is not portable.
+  time_t seconds = static_cast<time_t>(ms / 1000);
+#ifdef _MSC_VER
+# pragma warning(push)          // Saves the current warning state.
+# pragma warning(disable:4996)  // Temporarily disables warning 4996
+                                // (function or variable may be unsafe).
+  const struct tm* const time_struct = localtime(&seconds);  // NOLINT
+# pragma warning(pop)           // Restores the warning state again.
+#else
+  const struct tm* const time_struct = localtime(&seconds);  // NOLINT
+#endif
+  if (time_struct == NULL)
+    return "";  // Invalid ms value
+
+  return String::Format("%d-%02d-%02dT%02d:%02d:%02d",  // YYYY-MM-DDThh:mm:ss
+                        time_struct->tm_year + 1900,
+                        time_struct->tm_mon + 1,
+                        time_struct->tm_mday,
+                        time_struct->tm_hour,
+                        time_struct->tm_min,
+                        time_struct->tm_sec);
+}
+
+// Streams an XML CDATA section, escaping invalid CDATA sequences as needed.
+void XmlUnitTestResultPrinter::OutputXmlCDataSection(::std::ostream* stream,
+                                                     const char* data) {
+  const char* segment = data;
+  *stream << "<![CDATA[";
+  for (;;) {
+    const char* const next_segment = strstr(segment, "]]>");
+    if (next_segment != NULL) {
+      stream->write(
+          segment, static_cast<std::streamsize>(next_segment - segment));
+      *stream << "]]>]]&gt;<![CDATA[";
+      segment = next_segment + strlen("]]>");
+    } else {
+      *stream << segment;
+      break;
+    }
+  }
+  *stream << "]]>";
+}
+
+// Prints an XML representation of a TestInfo object.
+// TODO(wan): There is also value in printing properties with the plain printer.
+void XmlUnitTestResultPrinter::OutputXmlTestInfo(::std::ostream* stream,
+                                                 const char* test_case_name,
+                                                 const TestInfo& test_info) {
+  const TestResult& result = *test_info.result();
+  *stream << "    <testcase name=\""
+          << EscapeXmlAttribute(test_info.name()).c_str() << "\"";
+
+  if (test_info.value_param() != NULL) {
+    *stream << " value_param=\"" << EscapeXmlAttribute(test_info.value_param())
+            << "\"";
+  }
+  if (test_info.type_param() != NULL) {
+    *stream << " type_param=\"" << EscapeXmlAttribute(test_info.type_param())
+            << "\"";
+  }
+
+  *stream << " status=\""
+          << (test_info.should_run() ? "run" : "notrun")
+          << "\" time=\""
+          << FormatTimeInMillisAsSeconds(result.elapsed_time())
+          << "\" classname=\"" << EscapeXmlAttribute(test_case_name).c_str()
+          << "\"" << TestPropertiesAsXmlAttributes(result).c_str();
+
+  int failures = 0;
+  for (int i = 0; i < result.total_part_count(); ++i) {
+    const TestPartResult& part = result.GetTestPartResult(i);
+    if (part.failed()) {
+      if (++failures == 1) {
+        *stream << ">\n";
+      }
+      const string location = internal::FormatCompilerIndependentFileLocation(
+          part.file_name(), part.line_number());
+      const string summary = location + "\n" + part.summary();
+      *stream << "      <failure message=\""
+              << EscapeXmlAttribute(summary.c_str())
+              << "\" type=\"\">";
+      const string detail = location + "\n" + part.message();
+      OutputXmlCDataSection(stream, RemoveInvalidXmlCharacters(detail).c_str());
+      *stream << "</failure>\n";
+    }
+  }
+
+  if (failures == 0)
+    *stream << " />\n";
+  else
+    *stream << "    </testcase>\n";
+}
+
+// Prints an XML representation of a TestCase object
+void XmlUnitTestResultPrinter::PrintXmlTestCase(FILE* out,
+                                                const TestCase& test_case) {
+  fprintf(out,
+          "  <testsuite name=\"%s\" tests=\"%d\" failures=\"%d\" "
+          "disabled=\"%d\" ",
+          EscapeXmlAttribute(test_case.name()).c_str(),
+          test_case.total_test_count(),
+          test_case.failed_test_count(),
+          test_case.disabled_test_count());
+  fprintf(out,
+          "errors=\"0\" time=\"%s\">\n",
+          FormatTimeInMillisAsSeconds(test_case.elapsed_time()).c_str());
+  for (int i = 0; i < test_case.total_test_count(); ++i) {
+    ::std::stringstream stream;
+    OutputXmlTestInfo(&stream, test_case.name(), *test_case.GetTestInfo(i));
+    fprintf(out, "%s", StringStreamToString(&stream).c_str());
+  }
+  fprintf(out, "  </testsuite>\n");
+}
+
+// Prints an XML summary of unit_test to output stream out.
+void XmlUnitTestResultPrinter::PrintXmlUnitTest(FILE* out,
+                                                const UnitTest& unit_test) {
+  fprintf(out, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
+  fprintf(out,
+          "<testsuites tests=\"%d\" failures=\"%d\" disabled=\"%d\" "
+          "errors=\"0\" timestamp=\"%s\" time=\"%s\" ",
+          unit_test.total_test_count(),
+          unit_test.failed_test_count(),
+          unit_test.disabled_test_count(),
+          FormatEpochTimeInMillisAsIso8601(unit_test.start_timestamp()).c_str(),
+          FormatTimeInMillisAsSeconds(unit_test.elapsed_time()).c_str());
+  if (GTEST_FLAG(shuffle)) {
+    fprintf(out, "random_seed=\"%d\" ", unit_test.random_seed());
+  }
+  fprintf(out, "name=\"AllTests\">\n");
+  for (int i = 0; i < unit_test.total_test_case_count(); ++i)
+    PrintXmlTestCase(out, *unit_test.GetTestCase(i));
+  fprintf(out, "</testsuites>\n");
+}
+
+// Produces a string representing the test properties in a result as space
+// delimited XML attributes based on the property key="value" pairs.
+String XmlUnitTestResultPrinter::TestPropertiesAsXmlAttributes(
+    const TestResult& result) {
+  Message attributes;
+  for (int i = 0; i < result.test_property_count(); ++i) {
+    const TestProperty& property = result.GetTestProperty(i);
+    attributes << " " << property.key() << "="
+        << "\"" << EscapeXmlAttribute(property.value()) << "\"";
+  }
+  return attributes.GetString();
+}
+
+// End XmlUnitTestResultPrinter
+
+#if GTEST_CAN_STREAM_RESULTS_
+
+// Streams test results to the given port on the given host machine.
+class StreamingListener : public EmptyTestEventListener {
+ public:
+  // Escapes '=', '&', '%', and '\n' characters in str as "%xx".
+  static string UrlEncode(const char* str);
+
+  StreamingListener(const string& host, const string& port)
+      : sockfd_(-1), host_name_(host), port_num_(port) {
+    MakeConnection();
+    Send("gtest_streaming_protocol_version=1.0\n");
+  }
+
+  virtual ~StreamingListener() {
+    if (sockfd_ != -1)
+      CloseConnection();
+  }
+
+  void OnTestProgramStart(const UnitTest& /* unit_test */) {
+    Send("event=TestProgramStart\n");
+  }
+
+  void OnTestProgramEnd(const UnitTest& unit_test) {
+    // Note that Google Test current only report elapsed time for each
+    // test iteration, not for the entire test program.
+    Send(String::Format("event=TestProgramEnd&passed=%d\n",
+                        unit_test.Passed()));
+
+    // Notify the streaming server to stop.
+    CloseConnection();
+  }
+
+  void OnTestIterationStart(const UnitTest& /* unit_test */, int iteration) {
+    Send(String::Format("event=TestIterationStart&iteration=%d\n",
+                        iteration));
+  }
+
+  void OnTestIterationEnd(const UnitTest& unit_test, int /* iteration */) {
+    Send(String::Format("event=TestIterationEnd&passed=%d&elapsed_time=%sms\n",
+                        unit_test.Passed(),
+                        StreamableToString(unit_test.elapsed_time()).c_str()));
+  }
+
+  void OnTestCaseStart(const TestCase& test_case) {
+    Send(String::Format("event=TestCaseStart&name=%s\n", test_case.name()));
+  }
+
+  void OnTestCaseEnd(const TestCase& test_case) {
+    Send(String::Format("event=TestCaseEnd&passed=%d&elapsed_time=%sms\n",
+                        test_case.Passed(),
+                        StreamableToString(test_case.elapsed_time()).c_str()));
+  }
+
+  void OnTestStart(const TestInfo& test_info) {
+    Send(String::Format("event=TestStart&name=%s\n", test_info.name()));
+  }
+
+  void OnTestEnd(const TestInfo& test_info) {
+    Send(String::Format(
+        "event=TestEnd&passed=%d&elapsed_time=%sms\n",
+        (test_info.result())->Passed(),
+        StreamableToString((test_info.result())->elapsed_time()).c_str()));
+  }
+
+  void OnTestPartResult(const TestPartResult& test_part_result) {
+    const char* file_name = test_part_result.file_name();
+    if (file_name == NULL)
+      file_name = "";
+    Send(String::Format("event=TestPartResult&file=%s&line=%d&message=",
+                        UrlEncode(file_name).c_str(),
+                        test_part_result.line_number()));
+    Send(UrlEncode(test_part_result.message()) + "\n");
+  }
+
+ private:
+  // Creates a client socket and connects to the server.
+  void MakeConnection();
+
+  // Closes the socket.
+  void CloseConnection() {
+    GTEST_CHECK_(sockfd_ != -1)
+        << "CloseConnection() can be called only when there is a connection.";
+
+    close(sockfd_);
+    sockfd_ = -1;
+  }
+
+  // Sends a string to the socket.
+  void Send(const string& message) {
+    GTEST_CHECK_(sockfd_ != -1)
+        << "Send() can be called only when there is a connection.";
+
+    const int len = static_cast<int>(message.length());
+    if (write(sockfd_, message.c_str(), len) != len) {
+      GTEST_LOG_(WARNING)
+          << "stream_result_to: failed to stream to "
+          << host_name_ << ":" << port_num_;
+    }
+  }
+
+  int sockfd_;   // socket file descriptor
+  const string host_name_;
+  const string port_num_;
+
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(StreamingListener);
+};  // class StreamingListener
+
+// Checks if str contains '=', '&', '%' or '\n' characters. If yes,
+// replaces them by "%xx" where xx is their hexadecimal value. For
+// example, replaces "=" with "%3D".  This algorithm is O(strlen(str))
+// in both time and space -- important as the input str may contain an
+// arbitrarily long test failure message and stack trace.
+string StreamingListener::UrlEncode(const char* str) {
+  string result;
+  result.reserve(strlen(str) + 1);
+  for (char ch = *str; ch != '\0'; ch = *++str) {
+    switch (ch) {
+      case '%':
+      case '=':
+      case '&':
+      case '\n':
+        result.append(String::Format("%%%02x", static_cast<unsigned char>(ch)));
+        break;
+      default:
+        result.push_back(ch);
+        break;
+    }
+  }
+  return result;
+}
+
+void StreamingListener::MakeConnection() {
+  GTEST_CHECK_(sockfd_ == -1)
+      << "MakeConnection() can't be called when there is already a connection.";
+
+  addrinfo hints;
+  memset(&hints, 0, sizeof(hints));
+  hints.ai_family = AF_UNSPEC;    // To allow both IPv4 and IPv6 addresses.
+  hints.ai_socktype = SOCK_STREAM;
+  addrinfo* servinfo = NULL;
+
+  // Use the getaddrinfo() to get a linked list of IP addresses for
+  // the given host name.
+  const int error_num = getaddrinfo(
+      host_name_.c_str(), port_num_.c_str(), &hints, &servinfo);
+  if (error_num != 0) {
+    GTEST_LOG_(WARNING) << "stream_result_to: getaddrinfo() failed: "
+                        << gai_strerror(error_num);
+  }
+
+  // Loop through all the results and connect to the first we can.
+  for (addrinfo* cur_addr = servinfo; sockfd_ == -1 && cur_addr != NULL;
+       cur_addr = cur_addr->ai_next) {
+    sockfd_ = socket(
+        cur_addr->ai_family, cur_addr->ai_socktype, cur_addr->ai_protocol);
+    if (sockfd_ != -1) {
+      // Connect the client socket to the server socket.
+      if (connect(sockfd_, cur_addr->ai_addr, cur_addr->ai_addrlen) == -1) {
+        close(sockfd_);
+        sockfd_ = -1;
+      }
+    }
+  }
+
+  freeaddrinfo(servinfo);  // all done with this structure
+
+  if (sockfd_ == -1) {
+    GTEST_LOG_(WARNING) << "stream_result_to: failed to connect to "
+                        << host_name_ << ":" << port_num_;
+  }
+}
+
+// End of class Streaming Listener
+#endif  // GTEST_CAN_STREAM_RESULTS__
+
+// Class ScopedTrace
+
+// Pushes the given source file location and message onto a per-thread
+// trace stack maintained by Google Test.
+ScopedTrace::ScopedTrace(const char* file, int line, const Message& message)
+    GTEST_LOCK_EXCLUDED_(&UnitTest::mutex_) {
+  TraceInfo trace;
+  trace.file = file;
+  trace.line = line;
+  trace.message = message.GetString();
+
+  UnitTest::GetInstance()->PushGTestTrace(trace);
+}
+
+// Pops the info pushed by the c'tor.
+ScopedTrace::~ScopedTrace()
+    GTEST_LOCK_EXCLUDED_(&UnitTest::mutex_) {
+  UnitTest::GetInstance()->PopGTestTrace();
+}
+
+
+// class OsStackTraceGetter
+
+// Returns the current OS stack trace as a String.  Parameters:
+//
+//   max_depth  - the maximum number of stack frames to be included
+//                in the trace.
+//   skip_count - the number of top frames to be skipped; doesn't count
+//                against max_depth.
+//
+String OsStackTraceGetter::CurrentStackTrace(int /* max_depth */,
+                                             int /* skip_count */)
+    GTEST_LOCK_EXCLUDED_(mutex_) {
+  return String("");
+}
+
+void OsStackTraceGetter::UponLeavingGTest()
+    GTEST_LOCK_EXCLUDED_(mutex_) {
+}
+
+const char* const
+OsStackTraceGetter::kElidedFramesMarker =
+    "... " GTEST_NAME_ " internal frames ...";
+
+}  // namespace internal
+
+// class TestEventListeners
+
+TestEventListeners::TestEventListeners()
+    : repeater_(new internal::TestEventRepeater()),
+      default_result_printer_(NULL),
+      default_xml_generator_(NULL) {
+}
+
+TestEventListeners::~TestEventListeners() { delete repeater_; }
+
+// Returns the standard listener responsible for the default console
+// output.  Can be removed from the listeners list to shut down default
+// console output.  Note that removing this object from the listener list
+// with Release transfers its ownership to the user.
+void TestEventListeners::Append(TestEventListener* listener) {
+  repeater_->Append(listener);
+}
+
+// Removes the given event listener from the list and returns it.  It then
+// becomes the caller's responsibility to delete the listener. Returns
+// NULL if the listener is not found in the list.
+TestEventListener* TestEventListeners::Release(TestEventListener* listener) {
+  if (listener == default_result_printer_)
+    default_result_printer_ = NULL;
+  else if (listener == default_xml_generator_)
+    default_xml_generator_ = NULL;
+  return repeater_->Release(listener);
+}
+
+// Returns repeater that broadcasts the TestEventListener events to all
+// subscribers.
+TestEventListener* TestEventListeners::repeater() { return repeater_; }
+
+// Sets the default_result_printer attribute to the provided listener.
+// The listener is also added to the listener list and previous
+// default_result_printer is removed from it and deleted. The listener can
+// also be NULL in which case it will not be added to the list. Does
+// nothing if the previous and the current listener objects are the same.
+void TestEventListeners::SetDefaultResultPrinter(TestEventListener* listener) {
+  if (default_result_printer_ != listener) {
+    // It is an error to pass this method a listener that is already in the
+    // list.
+    delete Release(default_result_printer_);
+    default_result_printer_ = listener;
+    if (listener != NULL)
+      Append(listener);
+  }
+}
+
+// Sets the default_xml_generator attribute to the provided listener.  The
+// listener is also added to the listener list and previous
+// default_xml_generator is removed from it and deleted. The listener can
+// also be NULL in which case it will not be added to the list. Does
+// nothing if the previous and the current listener objects are the same.
+void TestEventListeners::SetDefaultXmlGenerator(TestEventListener* listener) {
+  if (default_xml_generator_ != listener) {
+    // It is an error to pass this method a listener that is already in the
+    // list.
+    delete Release(default_xml_generator_);
+    default_xml_generator_ = listener;
+    if (listener != NULL)
+      Append(listener);
+  }
+}
+
+// Controls whether events will be forwarded by the repeater to the
+// listeners in the list.
+bool TestEventListeners::EventForwardingEnabled() const {
+  return repeater_->forwarding_enabled();
+}
+
+void TestEventListeners::SuppressEventForwarding() {
+  repeater_->set_forwarding_enabled(false);
+}
+
+// class UnitTest
+
+// Gets the singleton UnitTest object.  The first time this method is
+// called, a UnitTest object is constructed and returned.  Consecutive
+// calls will return the same object.
+//
+// We don't protect this under mutex_ as a user is not supposed to
+// call this before main() starts, from which point on the return
+// value will never change.
+UnitTest * UnitTest::GetInstance() {
+  // When compiled with MSVC 7.1 in optimized mode, destroying the
+  // UnitTest object upon exiting the program messes up the exit code,
+  // causing successful tests to appear failed.  We have to use a
+  // different implementation in this case to bypass the compiler bug.
+  // This implementation makes the compiler happy, at the cost of
+  // leaking the UnitTest object.
+
+  // CodeGear C++Builder insists on a public destructor for the
+  // default implementation.  Use this implementation to keep good OO
+  // design with private destructor.
+
+#if (_MSC_VER == 1310 && !defined(_DEBUG)) || defined(__BORLANDC__)
+  static UnitTest* const instance = new UnitTest;
+  return instance;
+#else
+  static UnitTest instance;
+  return &instance;
+#endif  // (_MSC_VER == 1310 && !defined(_DEBUG)) || defined(__BORLANDC__)
+}
+
+// Gets the number of successful test cases.
+int UnitTest::successful_test_case_count() const {
+  return impl()->successful_test_case_count();
+}
+
+// Gets the number of failed test cases.
+int UnitTest::failed_test_case_count() const {
+  return impl()->failed_test_case_count();
+}
+
+// Gets the number of all test cases.
+int UnitTest::total_test_case_count() const {
+  return impl()->total_test_case_count();
+}
+
+// Gets the number of all test cases that contain at least one test
+// that should run.
+int UnitTest::test_case_to_run_count() const {
+  return impl()->test_case_to_run_count();
+}
+
+// Gets the number of successful tests.
+int UnitTest::successful_test_count() const {
+  return impl()->successful_test_count();
+}
+
+// Gets the number of failed tests.
+int UnitTest::failed_test_count() const { return impl()->failed_test_count(); }
+
+// Gets the number of disabled tests.
+int UnitTest::disabled_test_count() const {
+  return impl()->disabled_test_count();
+}
+
+// Gets the number of all tests.
+int UnitTest::total_test_count() const { return impl()->total_test_count(); }
+
+// Gets the number of tests that should run.
+int UnitTest::test_to_run_count() const { return impl()->test_to_run_count(); }
+
+// Gets the time of the test program start, in ms from the start of the
+// UNIX epoch.
+internal::TimeInMillis UnitTest::start_timestamp() const {
+    return impl()->start_timestamp();
+}
+
+// Gets the elapsed time, in milliseconds.
+internal::TimeInMillis UnitTest::elapsed_time() const {
+  return impl()->elapsed_time();
+}
+
+// Returns true iff the unit test passed (i.e. all test cases passed).
+bool UnitTest::Passed() const { return impl()->Passed(); }
+
+// Returns true iff the unit test failed (i.e. some test case failed
+// or something outside of all tests failed).
+bool UnitTest::Failed() const { return impl()->Failed(); }
+
+// Gets the i-th test case among all the test cases. i can range from 0 to
+// total_test_case_count() - 1. If i is not in that range, returns NULL.
+const TestCase* UnitTest::GetTestCase(int i) const {
+  return impl()->GetTestCase(i);
+}
+
+// Gets the i-th test case among all the test cases. i can range from 0 to
+// total_test_case_count() - 1. If i is not in that range, returns NULL.
+TestCase* UnitTest::GetMutableTestCase(int i) {
+  return impl()->GetMutableTestCase(i);
+}
+
+// Returns the list of event listeners that can be used to track events
+// inside Google Test.
+TestEventListeners& UnitTest::listeners() {
+  return *impl()->listeners();
+}
+
+// Registers and returns a global test environment.  When a test
+// program is run, all global test environments will be set-up in the
+// order they were registered.  After all tests in the program have
+// finished, all global test environments will be torn-down in the
+// *reverse* order they were registered.
+//
+// The UnitTest object takes ownership of the given environment.
+//
+// We don't protect this under mutex_, as we only support calling it
+// from the main thread.
+Environment* UnitTest::AddEnvironment(Environment* env) {
+  if (env == NULL) {
+    return NULL;
+  }
+
+  impl_->environments().push_back(env);
+  return env;
+}
+
+// Adds a TestPartResult to the current TestResult object.  All Google Test
+// assertion macros (e.g. ASSERT_TRUE, EXPECT_EQ, etc) eventually call
+// this to report their results.  The user code should use the
+// assertion macros instead of calling this directly.
+void UnitTest::AddTestPartResult(
+    TestPartResult::Type result_type,
+    const char* file_name,
+    int line_number,
+    const internal::String& message,
+    const internal::String& os_stack_trace)
+        GTEST_LOCK_EXCLUDED_(mutex_) {
+  Message msg;
+  msg << message;
+
+  internal::MutexLock lock(&mutex_);
+  if (impl_->gtest_trace_stack().size() > 0) {
+    msg << "\n" << GTEST_NAME_ << " trace:";
+
+    for (int i = static_cast<int>(impl_->gtest_trace_stack().size());
+         i > 0; --i) {
+      const internal::TraceInfo& trace = impl_->gtest_trace_stack()[i - 1];
+      msg << "\n" << internal::FormatFileLocation(trace.file, trace.line)
+          << " " << trace.message;
+    }
+  }
+
+  if (os_stack_trace.c_str() != NULL && !os_stack_trace.empty()) {
+    msg << internal::kStackTraceMarker << os_stack_trace;
+  }
+
+  const TestPartResult result =
+    TestPartResult(result_type, file_name, line_number,
+                   msg.GetString().c_str());
+  impl_->GetTestPartResultReporterForCurrentThread()->
+      ReportTestPartResult(result);
+
+  if (result_type != TestPartResult::kSuccess) {
+    // gtest_break_on_failure takes precedence over
+    // gtest_throw_on_failure.  This allows a user to set the latter
+    // in the code (perhaps in order to use Google Test assertions
+    // with another testing framework) and specify the former on the
+    // command line for debugging.
+    if (GTEST_FLAG(break_on_failure)) {
+#if GTEST_OS_WINDOWS
+      // Using DebugBreak on Windows allows gtest to still break into a debugger
+      // when a failure happens and both the --gtest_break_on_failure and
+      // the --gtest_catch_exceptions flags are specified.
+      DebugBreak();
+#else
+      // Dereference NULL through a volatile pointer to prevent the compiler
+      // from removing. We use this rather than abort() or __builtin_trap() for
+      // portability: Symbian doesn't implement abort() well, and some debuggers
+      // don't correctly trap abort().
+      *static_cast<volatile int*>(NULL) = 1;
+#endif  // GTEST_OS_WINDOWS
+    } else if (GTEST_FLAG(throw_on_failure)) {
+#if GTEST_HAS_EXCEPTIONS
+      throw GoogleTestFailureException(result);
+#else
+      // We cannot call abort() as it generates a pop-up in debug mode
+      // that cannot be suppressed in VC 7.1 or below.
+      exit(1);
+#endif
+    }
+  }
+}
+
+// Creates and adds a property to the current TestResult. If a property matching
+// the supplied value already exists, updates its value instead.
+void UnitTest::RecordPropertyForCurrentTest(const char* key,
+                                            const char* value) {
+  const TestProperty test_property(key, value);
+  impl_->current_test_result()->RecordProperty(test_property);
+}
+
+// Runs all tests in this UnitTest object and prints the result.
+// Returns 0 if successful, or 1 otherwise.
+//
+// We don't protect this under mutex_, as we only support calling it
+// from the main thread.
+int UnitTest::Run() {
+  // Captures the value of GTEST_FLAG(catch_exceptions).  This value will be
+  // used for the duration of the program.
+  impl()->set_catch_exceptions(GTEST_FLAG(catch_exceptions));
+
+#if GTEST_HAS_SEH
+  const bool in_death_test_child_process =
+      internal::GTEST_FLAG(internal_run_death_test).length() > 0;
+
+  // Either the user wants Google Test to catch exceptions thrown by the
+  // tests or this is executing in the context of death test child
+  // process. In either case the user does not want to see pop-up dialogs
+  // about crashes - they are expected.
+  if (impl()->catch_exceptions() || in_death_test_child_process) {
+# if !GTEST_OS_WINDOWS_MOBILE
+    // SetErrorMode doesn't exist on CE.
+    SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOALIGNMENTFAULTEXCEPT |
+                 SEM_NOGPFAULTERRORBOX | SEM_NOOPENFILEERRORBOX);
+# endif  // !GTEST_OS_WINDOWS_MOBILE
+
+# if (defined(_MSC_VER) || GTEST_OS_WINDOWS_MINGW) && !GTEST_OS_WINDOWS_MOBILE
+    // Death test children can be terminated with _abort().  On Windows,
+    // _abort() can show a dialog with a warning message.  This forces the
+    // abort message to go to stderr instead.
+    _set_error_mode(_OUT_TO_STDERR);
+# endif
+
+# if _MSC_VER >= 1400 && !GTEST_OS_WINDOWS_MOBILE
+    // In the debug version, Visual Studio pops up a separate dialog
+    // offering a choice to debug the aborted program. We need to suppress
+    // this dialog or it will pop up for every EXPECT/ASSERT_DEATH statement
+    // executed. Google Test will notify the user of any unexpected
+    // failure via stderr.
+    //
+    // VC++ doesn't define _set_abort_behavior() prior to the version 8.0.
+    // Users of prior VC versions shall suffer the agony and pain of
+    // clicking through the countless debug dialogs.
+    // TODO(vladl@google.com): find a way to suppress the abort dialog() in the
+    // debug mode when compiled with VC 7.1 or lower.
+    if (!GTEST_FLAG(break_on_failure))
+      _set_abort_behavior(
+          0x0,                                    // Clear the following flags:
+          _WRITE_ABORT_MSG | _CALL_REPORTFAULT);  // pop-up window, core dump.
+# endif
+  }
+#endif  // GTEST_HAS_SEH
+
+  return internal::HandleExceptionsInMethodIfSupported(
+      impl(),
+      &internal::UnitTestImpl::RunAllTests,
+      "auxiliary test code (environments or event listeners)") ? 0 : 1;
+}
+
+// Returns the working directory when the first TEST() or TEST_F() was
+// executed.
+const char* UnitTest::original_working_dir() const {
+  return impl_->original_working_dir_.c_str();
+}
+
+// Returns the TestCase object for the test that's currently running,
+// or NULL if no test is running.
+const TestCase* UnitTest::current_test_case() const
+    GTEST_LOCK_EXCLUDED_(mutex_) {
+  internal::MutexLock lock(&mutex_);
+  return impl_->current_test_case();
+}
+
+// Returns the TestInfo object for the test that's currently running,
+// or NULL if no test is running.
+const TestInfo* UnitTest::current_test_info() const
+    GTEST_LOCK_EXCLUDED_(mutex_) {
+  internal::MutexLock lock(&mutex_);
+  return impl_->current_test_info();
+}
+
+// Returns the random seed used at the start of the current test run.
+int UnitTest::random_seed() const { return impl_->random_seed(); }
+
+#if GTEST_HAS_PARAM_TEST
+// Returns ParameterizedTestCaseRegistry object used to keep track of
+// value-parameterized tests and instantiate and register them.
+internal::ParameterizedTestCaseRegistry&
+    UnitTest::parameterized_test_registry()
+        GTEST_LOCK_EXCLUDED_(mutex_) {
+  return impl_->parameterized_test_registry();
+}
+#endif  // GTEST_HAS_PARAM_TEST
+
+// Creates an empty UnitTest.
+UnitTest::UnitTest() {
+  impl_ = new internal::UnitTestImpl(this);
+}
+
+// Destructor of UnitTest.
+UnitTest::~UnitTest() {
+  delete impl_;
+}
+
+// Pushes a trace defined by SCOPED_TRACE() on to the per-thread
+// Google Test trace stack.
+void UnitTest::PushGTestTrace(const internal::TraceInfo& trace)
+    GTEST_LOCK_EXCLUDED_(mutex_) {
+  internal::MutexLock lock(&mutex_);
+  impl_->gtest_trace_stack().push_back(trace);
+}
+
+// Pops a trace from the per-thread Google Test trace stack.
+void UnitTest::PopGTestTrace()
+    GTEST_LOCK_EXCLUDED_(mutex_) {
+  internal::MutexLock lock(&mutex_);
+  impl_->gtest_trace_stack().pop_back();
+}
+
+namespace internal {
+
+UnitTestImpl::UnitTestImpl(UnitTest* parent)
+    : parent_(parent),
+#ifdef _MSC_VER
+# pragma warning(push)                    // Saves the current warning state.
+# pragma warning(disable:4355)            // Temporarily disables warning 4355
+                                         // (using this in initializer).
+      default_global_test_part_result_reporter_(this),
+      default_per_thread_test_part_result_reporter_(this),
+# pragma warning(pop)                     // Restores the warning state again.
+#else
+      default_global_test_part_result_reporter_(this),
+      default_per_thread_test_part_result_reporter_(this),
+#endif  // _MSC_VER
+      global_test_part_result_repoter_(
+          &default_global_test_part_result_reporter_),
+      per_thread_test_part_result_reporter_(
+          &default_per_thread_test_part_result_reporter_),
+#if GTEST_HAS_PARAM_TEST
+      parameterized_test_registry_(),
+      parameterized_tests_registered_(false),
+#endif  // GTEST_HAS_PARAM_TEST
+      last_death_test_case_(-1),
+      current_test_case_(NULL),
+      current_test_info_(NULL),
+      ad_hoc_test_result_(),
+      os_stack_trace_getter_(NULL),
+      post_flag_parse_init_performed_(false),
+      random_seed_(0),  // Will be overridden by the flag before first use.
+      random_(0),  // Will be reseeded before first use.
+      start_timestamp_(0),
+      elapsed_time_(0),
+#if GTEST_HAS_DEATH_TEST
+      internal_run_death_test_flag_(NULL),
+      death_test_factory_(new DefaultDeathTestFactory),
+#endif
+      // Will be overridden by the flag before first use.
+      catch_exceptions_(false) {
+  listeners()->SetDefaultResultPrinter(new PrettyUnitTestResultPrinter);
+}
+
+UnitTestImpl::~UnitTestImpl() {
+  // Deletes every TestCase.
+  ForEach(test_cases_, internal::Delete<TestCase>);
+
+  // Deletes every Environment.
+  ForEach(environments_, internal::Delete<Environment>);
+
+  delete os_stack_trace_getter_;
+}
+
+#if GTEST_HAS_DEATH_TEST
+// Disables event forwarding if the control is currently in a death test
+// subprocess. Must not be called before InitGoogleTest.
+void UnitTestImpl::SuppressTestEventsIfInSubprocess() {
+  if (internal_run_death_test_flag_.get() != NULL)
+    listeners()->SuppressEventForwarding();
+}
+#endif  // GTEST_HAS_DEATH_TEST
+
+// Initializes event listeners performing XML output as specified by
+// UnitTestOptions. Must not be called before InitGoogleTest.
+void UnitTestImpl::ConfigureXmlOutput() {
+  const String& output_format = UnitTestOptions::GetOutputFormat();
+  if (output_format == "xml") {
+    listeners()->SetDefaultXmlGenerator(new XmlUnitTestResultPrinter(
+        UnitTestOptions::GetAbsolutePathToOutputFile().c_str()));
+  } else if (output_format != "") {
+    printf("WARNING: unrecognized output format \"%s\" ignored.\n",
+           output_format.c_str());
+    fflush(stdout);
+  }
+}
+
+#if GTEST_CAN_STREAM_RESULTS_
+// Initializes event listeners for streaming test results in String form.
+// Must not be called before InitGoogleTest.
+void UnitTestImpl::ConfigureStreamingOutput() {
+  const string& target = GTEST_FLAG(stream_result_to);
+  if (!target.empty()) {
+    const size_t pos = target.find(':');
+    if (pos != string::npos) {
+      listeners()->Append(new StreamingListener(target.substr(0, pos),
+                                                target.substr(pos+1)));
+    } else {
+      printf("WARNING: unrecognized streaming target \"%s\" ignored.\n",
+             target.c_str());
+      fflush(stdout);
+    }
+  }
+}
+#endif  // GTEST_CAN_STREAM_RESULTS_
+
+// Performs initialization dependent upon flag values obtained in
+// ParseGoogleTestFlagsOnly.  Is called from InitGoogleTest after the call to
+// ParseGoogleTestFlagsOnly.  In case a user neglects to call InitGoogleTest
+// this function is also called from RunAllTests.  Since this function can be
+// called more than once, it has to be idempotent.
+void UnitTestImpl::PostFlagParsingInit() {
+  // Ensures that this function does not execute more than once.
+  if (!post_flag_parse_init_performed_) {
+    post_flag_parse_init_performed_ = true;
+
+#if GTEST_HAS_DEATH_TEST
+    InitDeathTestSubprocessControlInfo();
+    SuppressTestEventsIfInSubprocess();
+#endif  // GTEST_HAS_DEATH_TEST
+
+    // Registers parameterized tests. This makes parameterized tests
+    // available to the UnitTest reflection API without running
+    // RUN_ALL_TESTS.
+    RegisterParameterizedTests();
+
+    // Configures listeners for XML output. This makes it possible for users
+    // to shut down the default XML output before invoking RUN_ALL_TESTS.
+    ConfigureXmlOutput();
+
+#if GTEST_CAN_STREAM_RESULTS_
+    // Configures listeners for streaming test results to the specified server.
+    ConfigureStreamingOutput();
+#endif  // GTEST_CAN_STREAM_RESULTS_
+  }
+}
+
+// A predicate that checks the name of a TestCase against a known
+// value.
+//
+// This is used for implementation of the UnitTest class only.  We put
+// it in the anonymous namespace to prevent polluting the outer
+// namespace.
+//
+// TestCaseNameIs is copyable.
+class TestCaseNameIs {
+ public:
+  // Constructor.
+  explicit TestCaseNameIs(const String& name)
+      : name_(name) {}
+
+  // Returns true iff the name of test_case matches name_.
+  bool operator()(const TestCase* test_case) const {
+    return test_case != NULL && strcmp(test_case->name(), name_.c_str()) == 0;
+  }
+
+ private:
+  String name_;
+};
+
+// Finds and returns a TestCase with the given name.  If one doesn't
+// exist, creates one and returns it.  It's the CALLER'S
+// RESPONSIBILITY to ensure that this function is only called WHEN THE
+// TESTS ARE NOT SHUFFLED.
+//
+// Arguments:
+//
+//   test_case_name: name of the test case
+//   type_param:     the name of the test case's type parameter, or NULL if
+//                   this is not a typed or a type-parameterized test case.
+//   set_up_tc:      pointer to the function that sets up the test case
+//   tear_down_tc:   pointer to the function that tears down the test case
+TestCase* UnitTestImpl::GetTestCase(const char* test_case_name,
+                                    const char* type_param,
+                                    Test::SetUpTestCaseFunc set_up_tc,
+                                    Test::TearDownTestCaseFunc tear_down_tc) {
+  // Can we find a TestCase with the given name?
+  const std::vector<TestCase*>::const_iterator test_case =
+      std::find_if(test_cases_.begin(), test_cases_.end(),
+                   TestCaseNameIs(test_case_name));
+
+  if (test_case != test_cases_.end())
+    return *test_case;
+
+  // No.  Let's create one.
+  TestCase* const new_test_case =
+      new TestCase(test_case_name, type_param, set_up_tc, tear_down_tc);
+
+  // Is this a death test case?
+  if (internal::UnitTestOptions::MatchesFilter(String(test_case_name),
+                                               kDeathTestCaseFilter)) {
+    // Yes.  Inserts the test case after the last death test case
+    // defined so far.  This only works when the test cases haven't
+    // been shuffled.  Otherwise we may end up running a death test
+    // after a non-death test.
+    ++last_death_test_case_;
+    test_cases_.insert(test_cases_.begin() + last_death_test_case_,
+                       new_test_case);
+  } else {
+    // No.  Appends to the end of the list.
+    test_cases_.push_back(new_test_case);
+  }
+
+  test_case_indices_.push_back(static_cast<int>(test_case_indices_.size()));
+  return new_test_case;
+}
+
+// Helpers for setting up / tearing down the given environment.  They
+// are for use in the ForEach() function.
+static void SetUpEnvironment(Environment* env) { env->SetUp(); }
+static void TearDownEnvironment(Environment* env) { env->TearDown(); }
+
+// Runs all tests in this UnitTest object, prints the result, and
+// returns true if all tests are successful.  If any exception is
+// thrown during a test, the test is considered to be failed, but the
+// rest of the tests will still be run.
+//
+// When parameterized tests are enabled, it expands and registers
+// parameterized tests first in RegisterParameterizedTests().
+// All other functions called from RunAllTests() may safely assume that
+// parameterized tests are ready to be counted and run.
+bool UnitTestImpl::RunAllTests() {
+  // Makes sure InitGoogleTest() was called.
+  if (!GTestIsInitialized()) {
+    printf("%s",
+           "\nThis test program did NOT call ::testing::InitGoogleTest "
+           "before calling RUN_ALL_TESTS().  Please fix it.\n");
+    return false;
+  }
+
+  // Do not run any test if the --help flag was specified.
+  if (g_help_flag)
+    return true;
+
+  // Repeats the call to the post-flag parsing initialization in case the
+  // user didn't call InitGoogleTest.
+  PostFlagParsingInit();
+
+  // Even if sharding is not on, test runners may want to use the
+  // GTEST_SHARD_STATUS_FILE to query whether the test supports the sharding
+  // protocol.
+  internal::WriteToShardStatusFileIfNeeded();
+
+  // True iff we are in a subprocess for running a thread-safe-style
+  // death test.
+  bool in_subprocess_for_death_test = false;
+
+#if GTEST_HAS_DEATH_TEST
+  in_subprocess_for_death_test = (internal_run_death_test_flag_.get() != NULL);
+#endif  // GTEST_HAS_DEATH_TEST
+
+  const bool should_shard = ShouldShard(kTestTotalShards, kTestShardIndex,
+                                        in_subprocess_for_death_test);
+
+  // Compares the full test names with the filter to decide which
+  // tests to run.
+  const bool has_tests_to_run = FilterTests(should_shard
+                                              ? HONOR_SHARDING_PROTOCOL
+                                              : IGNORE_SHARDING_PROTOCOL) > 0;
+
+  // Lists the tests and exits if the --gtest_list_tests flag was specified.
+  if (GTEST_FLAG(list_tests)) {
+    // This must be called *after* FilterTests() has been called.
+    ListTestsMatchingFilter();
+    return true;
+  }
+
+  random_seed_ = GTEST_FLAG(shuffle) ?
+      GetRandomSeedFromFlag(GTEST_FLAG(random_seed)) : 0;
+
+  // True iff at least one test has failed.
+  bool failed = false;
+
+  TestEventListener* repeater = listeners()->repeater();
+
+  start_timestamp_ = GetTimeInMillis();
+  repeater->OnTestProgramStart(*parent_);
+
+  // How many times to repeat the tests?  We don't want to repeat them
+  // when we are inside the subprocess of a death test.
+  const int repeat = in_subprocess_for_death_test ? 1 : GTEST_FLAG(repeat);
+  // Repeats forever if the repeat count is negative.
+  const bool forever = repeat < 0;
+  for (int i = 0; forever || i != repeat; i++) {
+    // We want to preserve failures generated by ad-hoc test
+    // assertions executed before RUN_ALL_TESTS().
+    ClearNonAdHocTestResult();
+
+    const TimeInMillis start = GetTimeInMillis();
+
+    // Shuffles test cases and tests if requested.
+    if (has_tests_to_run && GTEST_FLAG(shuffle)) {
+      random()->Reseed(random_seed_);
+      // This should be done before calling OnTestIterationStart(),
+      // such that a test event listener can see the actual test order
+      // in the event.
+      ShuffleTests();
+    }
+
+    // Tells the unit test event listeners that the tests are about to start.
+    repeater->OnTestIterationStart(*parent_, i);
+
+    // Runs each test case if there is at least one test to run.
+    if (has_tests_to_run) {
+      // Sets up all environments beforehand.
+      repeater->OnEnvironmentsSetUpStart(*parent_);
+      ForEach(environments_, SetUpEnvironment);
+      repeater->OnEnvironmentsSetUpEnd(*parent_);
+
+      // Runs the tests only if there was no fatal failure during global
+      // set-up.
+      if (!Test::HasFatalFailure()) {
+        for (int test_index = 0; test_index < total_test_case_count();
+             test_index++) {
+          GetMutableTestCase(test_index)->Run();
+        }
+      }
+
+      // Tears down all environments in reverse order afterwards.
+      repeater->OnEnvironmentsTearDownStart(*parent_);
+      std::for_each(environments_.rbegin(), environments_.rend(),
+                    TearDownEnvironment);
+      repeater->OnEnvironmentsTearDownEnd(*parent_);
+    }
+
+    elapsed_time_ = GetTimeInMillis() - start;
+
+    // Tells the unit test event listener that the tests have just finished.
+    repeater->OnTestIterationEnd(*parent_, i);
+
+    // Gets the result and clears it.
+    if (!Passed()) {
+      failed = true;
+    }
+
+    // Restores the original test order after the iteration.  This
+    // allows the user to quickly repro a failure that happens in the
+    // N-th iteration without repeating the first (N - 1) iterations.
+    // This is not enclosed in "if (GTEST_FLAG(shuffle)) { ... }", in
+    // case the user somehow changes the value of the flag somewhere
+    // (it's always safe to unshuffle the tests).
+    UnshuffleTests();
+
+    if (GTEST_FLAG(shuffle)) {
+      // Picks a new random seed for each iteration.
+      random_seed_ = GetNextRandomSeed(random_seed_);
+    }
+  }
+
+  repeater->OnTestProgramEnd(*parent_);
+
+  return !failed;
+}
+
+// Reads the GTEST_SHARD_STATUS_FILE environment variable, and creates the file
+// if the variable is present. If a file already exists at this location, this
+// function will write over it. If the variable is present, but the file cannot
+// be created, prints an error and exits.
+void WriteToShardStatusFileIfNeeded() {
+  const char* const test_shard_file = posix::GetEnv(kTestShardStatusFile);
+  if (test_shard_file != NULL) {
+    FILE* const file = posix::FOpen(test_shard_file, "w");
+    if (file == NULL) {
+      ColoredPrintf(COLOR_RED,
+                    "Could not write to the test shard status file \"%s\" "
+                    "specified by the %s environment variable.\n",
+                    test_shard_file, kTestShardStatusFile);
+      fflush(stdout);
+      exit(EXIT_FAILURE);
+    }
+    fclose(file);
+  }
+}
+
+// Checks whether sharding is enabled by examining the relevant
+// environment variable values. If the variables are present,
+// but inconsistent (i.e., shard_index >= total_shards), prints
+// an error and exits. If in_subprocess_for_death_test, sharding is
+// disabled because it must only be applied to the original test
+// process. Otherwise, we could filter out death tests we intended to execute.
+bool ShouldShard(const char* total_shards_env,
+                 const char* shard_index_env,
+                 bool in_subprocess_for_death_test) {
+  if (in_subprocess_for_death_test) {
+    return false;
+  }
+
+  const Int32 total_shards = Int32FromEnvOrDie(total_shards_env, -1);
+  const Int32 shard_index = Int32FromEnvOrDie(shard_index_env, -1);
+
+  if (total_shards == -1 && shard_index == -1) {
+    return false;
+  } else if (total_shards == -1 && shard_index != -1) {
+    const Message msg = Message()
+      << "Invalid environment variables: you have "
+      << kTestShardIndex << " = " << shard_index
+      << ", but have left " << kTestTotalShards << " unset.\n";
+    ColoredPrintf(COLOR_RED, msg.GetString().c_str());
+    fflush(stdout);
+    exit(EXIT_FAILURE);
+  } else if (total_shards != -1 && shard_index == -1) {
+    const Message msg = Message()
+      << "Invalid environment variables: you have "
+      << kTestTotalShards << " = " << total_shards
+      << ", but have left " << kTestShardIndex << " unset.\n";
+    ColoredPrintf(COLOR_RED, msg.GetString().c_str());
+    fflush(stdout);
+    exit(EXIT_FAILURE);
+  } else if (shard_index < 0 || shard_index >= total_shards) {
+    const Message msg = Message()
+      << "Invalid environment variables: we require 0 <= "
+      << kTestShardIndex << " < " << kTestTotalShards
+      << ", but you have " << kTestShardIndex << "=" << shard_index
+      << ", " << kTestTotalShards << "=" << total_shards << ".\n";
+    ColoredPrintf(COLOR_RED, msg.GetString().c_str());
+    fflush(stdout);
+    exit(EXIT_FAILURE);
+  }
+
+  return total_shards > 1;
+}
+
+// Parses the environment variable var as an Int32. If it is unset,
+// returns default_val. If it is not an Int32, prints an error
+// and aborts.
+Int32 Int32FromEnvOrDie(const char* var, Int32 default_val) {
+  const char* str_val = posix::GetEnv(var);
+  if (str_val == NULL) {
+    return default_val;
+  }
+
+  Int32 result;
+  if (!ParseInt32(Message() << "The value of environment variable " << var,
+                  str_val, &result)) {
+    exit(EXIT_FAILURE);
+  }
+  return result;
+}
+
+// Given the total number of shards, the shard index, and the test id,
+// returns true iff the test should be run on this shard. The test id is
+// some arbitrary but unique non-negative integer assigned to each test
+// method. Assumes that 0 <= shard_index < total_shards.
+bool ShouldRunTestOnShard(int total_shards, int shard_index, int test_id) {
+  return (test_id % total_shards) == shard_index;
+}
+
+// Compares the name of each test with the user-specified filter to
+// decide whether the test should be run, then records the result in
+// each TestCase and TestInfo object.
+// If shard_tests == true, further filters tests based on sharding
+// variables in the environment - see
+// http://code.google.com/p/googletest/wiki/GoogleTestAdvancedGuide.
+// Returns the number of tests that should run.
+int UnitTestImpl::FilterTests(ReactionToSharding shard_tests) {
+  const Int32 total_shards = shard_tests == HONOR_SHARDING_PROTOCOL ?
+      Int32FromEnvOrDie(kTestTotalShards, -1) : -1;
+  const Int32 shard_index = shard_tests == HONOR_SHARDING_PROTOCOL ?
+      Int32FromEnvOrDie(kTestShardIndex, -1) : -1;
+
+  // num_runnable_tests are the number of tests that will
+  // run across all shards (i.e., match filter and are not disabled).
+  // num_selected_tests are the number of tests to be run on
+  // this shard.
+  int num_runnable_tests = 0;
+  int num_selected_tests = 0;
+  for (size_t i = 0; i < test_cases_.size(); i++) {
+    TestCase* const test_case = test_cases_[i];
+    const String &test_case_name = test_case->name();
+    test_case->set_should_run(false);
+
+    for (size_t j = 0; j < test_case->test_info_list().size(); j++) {
+      TestInfo* const test_info = test_case->test_info_list()[j];
+      const String test_name(test_info->name());
+      // A test is disabled if test case name or test name matches
+      // kDisableTestFilter.
+      const bool is_disabled =
+          internal::UnitTestOptions::MatchesFilter(test_case_name,
+                                                   kDisableTestFilter) ||
+          internal::UnitTestOptions::MatchesFilter(test_name,
+                                                   kDisableTestFilter);
+      test_info->is_disabled_ = is_disabled;
+
+      const bool matches_filter =
+          internal::UnitTestOptions::FilterMatchesTest(test_case_name,
+                                                       test_name);
+      test_info->matches_filter_ = matches_filter;
+
+      const bool is_runnable =
+          (GTEST_FLAG(also_run_disabled_tests) || !is_disabled) &&
+          matches_filter;
+
+      const bool is_selected = is_runnable &&
+          (shard_tests == IGNORE_SHARDING_PROTOCOL ||
+           ShouldRunTestOnShard(total_shards, shard_index,
+                                num_runnable_tests));
+
+      num_runnable_tests += is_runnable;
+      num_selected_tests += is_selected;
+
+      test_info->should_run_ = is_selected;
+      test_case->set_should_run(test_case->should_run() || is_selected);
+    }
+  }
+  return num_selected_tests;
+}
+
+// Prints the names of the tests matching the user-specified filter flag.
+void UnitTestImpl::ListTestsMatchingFilter() {
+  for (size_t i = 0; i < test_cases_.size(); i++) {
+    const TestCase* const test_case = test_cases_[i];
+    bool printed_test_case_name = false;
+
+    for (size_t j = 0; j < test_case->test_info_list().size(); j++) {
+      const TestInfo* const test_info =
+          test_case->test_info_list()[j];
+      if (test_info->matches_filter_) {
+        if (!printed_test_case_name) {
+          printed_test_case_name = true;
+          printf("%s.\n", test_case->name());
+        }
+        printf("  %s\n", test_info->name());
+      }
+    }
+  }
+  fflush(stdout);
+}
+
+// Sets the OS stack trace getter.
+//
+// Does nothing if the input and the current OS stack trace getter are
+// the same; otherwise, deletes the old getter and makes the input the
+// current getter.
+void UnitTestImpl::set_os_stack_trace_getter(
+    OsStackTraceGetterInterface* getter) {
+  if (os_stack_trace_getter_ != getter) {
+    delete os_stack_trace_getter_;
+    os_stack_trace_getter_ = getter;
+  }
+}
+
+// Returns the current OS stack trace getter if it is not NULL;
+// otherwise, creates an OsStackTraceGetter, makes it the current
+// getter, and returns it.
+OsStackTraceGetterInterface* UnitTestImpl::os_stack_trace_getter() {
+  if (os_stack_trace_getter_ == NULL) {
+    os_stack_trace_getter_ = new OsStackTraceGetter;
+  }
+
+  return os_stack_trace_getter_;
+}
+
+// Returns the TestResult for the test that's currently running, or
+// the TestResult for the ad hoc test if no test is running.
+TestResult* UnitTestImpl::current_test_result() {
+  return current_test_info_ ?
+      &(current_test_info_->result_) : &ad_hoc_test_result_;
+}
+
+// Shuffles all test cases, and the tests within each test case,
+// making sure that death tests are still run first.
+void UnitTestImpl::ShuffleTests() {
+  // Shuffles the death test cases.
+  ShuffleRange(random(), 0, last_death_test_case_ + 1, &test_case_indices_);
+
+  // Shuffles the non-death test cases.
+  ShuffleRange(random(), last_death_test_case_ + 1,
+               static_cast<int>(test_cases_.size()), &test_case_indices_);
+
+  // Shuffles the tests inside each test case.
+  for (size_t i = 0; i < test_cases_.size(); i++) {
+    test_cases_[i]->ShuffleTests(random());
+  }
+}
+
+// Restores the test cases and tests to their order before the first shuffle.
+void UnitTestImpl::UnshuffleTests() {
+  for (size_t i = 0; i < test_cases_.size(); i++) {
+    // Unshuffles the tests in each test case.
+    test_cases_[i]->UnshuffleTests();
+    // Resets the index of each test case.
+    test_case_indices_[i] = static_cast<int>(i);
+  }
+}
+
+// Returns the current OS stack trace as a String.
+//
+// The maximum number of stack frames to be included is specified by
+// the gtest_stack_trace_depth flag.  The skip_count parameter
+// specifies the number of top frames to be skipped, which doesn't
+// count against the number of frames to be included.
+//
+// For example, if Foo() calls Bar(), which in turn calls
+// GetCurrentOsStackTraceExceptTop(..., 1), Foo() will be included in
+// the trace but Bar() and GetCurrentOsStackTraceExceptTop() won't.
+String GetCurrentOsStackTraceExceptTop(UnitTest* /*unit_test*/,
+                                       int skip_count) {
+  // We pass skip_count + 1 to skip this wrapper function in addition
+  // to what the user really wants to skip.
+  return GetUnitTestImpl()->CurrentOsStackTraceExceptTop(skip_count + 1);
+}
+
+// Used by the GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_ macro to
+// suppress unreachable code warnings.
+namespace {
+class ClassUniqueToAlwaysTrue {};
+}
+
+bool IsTrue(bool condition) { return condition; }
+
+bool AlwaysTrue() {
+#if GTEST_HAS_EXCEPTIONS
+  // This condition is always false so AlwaysTrue() never actually throws,
+  // but it makes the compiler think that it may throw.
+  if (IsTrue(false))
+    throw ClassUniqueToAlwaysTrue();
+#endif  // GTEST_HAS_EXCEPTIONS
+  return true;
+}
+
+// If *pstr starts with the given prefix, modifies *pstr to be right
+// past the prefix and returns true; otherwise leaves *pstr unchanged
+// and returns false.  None of pstr, *pstr, and prefix can be NULL.
+bool SkipPrefix(const char* prefix, const char** pstr) {
+  const size_t prefix_len = strlen(prefix);
+  if (strncmp(*pstr, prefix, prefix_len) == 0) {
+    *pstr += prefix_len;
+    return true;
+  }
+  return false;
+}
+
+// Parses a string as a command line flag.  The string should have
+// the format "--flag=value".  When def_optional is true, the "=value"
+// part can be omitted.
+//
+// Returns the value of the flag, or NULL if the parsing failed.
+const char* ParseFlagValue(const char* str,
+                           const char* flag,
+                           bool def_optional) {
+  // str and flag must not be NULL.
+  if (str == NULL || flag == NULL) return NULL;
+
+  // The flag must start with "--" followed by GTEST_FLAG_PREFIX_.
+  const String flag_str = String::Format("--%s%s", GTEST_FLAG_PREFIX_, flag);
+  const size_t flag_len = flag_str.length();
+  if (strncmp(str, flag_str.c_str(), flag_len) != 0) return NULL;
+
+  // Skips the flag name.
+  const char* flag_end = str + flag_len;
+
+  // When def_optional is true, it's OK to not have a "=value" part.
+  if (def_optional && (flag_end[0] == '\0')) {
+    return flag_end;
+  }
+
+  // If def_optional is true and there are more characters after the
+  // flag name, or if def_optional is false, there must be a '=' after
+  // the flag name.
+  if (flag_end[0] != '=') return NULL;
+
+  // Returns the string after "=".
+  return flag_end + 1;
+}
+
+// Parses a string for a bool flag, in the form of either
+// "--flag=value" or "--flag".
+//
+// In the former case, the value is taken as true as long as it does
+// not start with '0', 'f', or 'F'.
+//
+// In the latter case, the value is taken as true.
+//
+// On success, stores the value of the flag in *value, and returns
+// true.  On failure, returns false without changing *value.
+bool ParseBoolFlag(const char* str, const char* flag, bool* value) {
+  // Gets the value of the flag as a string.
+  const char* const value_str = ParseFlagValue(str, flag, true);
+
+  // Aborts if the parsing failed.
+  if (value_str == NULL) return false;
+
+  // Converts the string value to a bool.
+  *value = !(*value_str == '0' || *value_str == 'f' || *value_str == 'F');
+  return true;
+}
+
+// Parses a string for an Int32 flag, in the form of
+// "--flag=value".
+//
+// On success, stores the value of the flag in *value, and returns
+// true.  On failure, returns false without changing *value.
+bool ParseInt32Flag(const char* str, const char* flag, Int32* value) {
+  // Gets the value of the flag as a string.
+  const char* const value_str = ParseFlagValue(str, flag, false);
+
+  // Aborts if the parsing failed.
+  if (value_str == NULL) return false;
+
+  // Sets *value to the value of the flag.
+  return ParseInt32(Message() << "The value of flag --" << flag,
+                    value_str, value);
+}
+
+// Parses a string for a string flag, in the form of
+// "--flag=value".
+//
+// On success, stores the value of the flag in *value, and returns
+// true.  On failure, returns false without changing *value.
+bool ParseStringFlag(const char* str, const char* flag, String* value) {
+  // Gets the value of the flag as a string.
+  const char* const value_str = ParseFlagValue(str, flag, false);
+
+  // Aborts if the parsing failed.
+  if (value_str == NULL) return false;
+
+  // Sets *value to the value of the flag.
+  *value = value_str;
+  return true;
+}
+
+// Determines whether a string has a prefix that Google Test uses for its
+// flags, i.e., starts with GTEST_FLAG_PREFIX_ or GTEST_FLAG_PREFIX_DASH_.
+// If Google Test detects that a command line flag has its prefix but is not
+// recognized, it will print its help message. Flags starting with
+// GTEST_INTERNAL_PREFIX_ followed by "internal_" are considered Google Test
+// internal flags and do not trigger the help message.
+static bool HasGoogleTestFlagPrefix(const char* str) {
+  return (SkipPrefix("--", &str) ||
+          SkipPrefix("-", &str) ||
+          SkipPrefix("/", &str)) &&
+         !SkipPrefix(GTEST_FLAG_PREFIX_ "internal_", &str) &&
+         (SkipPrefix(GTEST_FLAG_PREFIX_, &str) ||
+          SkipPrefix(GTEST_FLAG_PREFIX_DASH_, &str));
+}
+
+// Prints a string containing code-encoded text.  The following escape
+// sequences can be used in the string to control the text color:
+//
+//   @@    prints a single '@' character.
+//   @R    changes the color to red.
+//   @G    changes the color to green.
+//   @Y    changes the color to yellow.
+//   @D    changes to the default terminal text color.
+//
+// TODO(wan@google.com): Write tests for this once we add stdout
+// capturing to Google Test.
+static void PrintColorEncoded(const char* str) {
+  GTestColor color = COLOR_DEFAULT;  // The current color.
+
+  // Conceptually, we split the string into segments divided by escape
+  // sequences.  Then we print one segment at a time.  At the end of
+  // each iteration, the str pointer advances to the beginning of the
+  // next segment.
+  for (;;) {
+    const char* p = strchr(str, '@');
+    if (p == NULL) {
+      ColoredPrintf(color, "%s", str);
+      return;
+    }
+
+    ColoredPrintf(color, "%s", String(str, p - str).c_str());
+
+    const char ch = p[1];
+    str = p + 2;
+    if (ch == '@') {
+      ColoredPrintf(color, "@");
+    } else if (ch == 'D') {
+      color = COLOR_DEFAULT;
+    } else if (ch == 'R') {
+      color = COLOR_RED;
+    } else if (ch == 'G') {
+      color = COLOR_GREEN;
+    } else if (ch == 'Y') {
+      color = COLOR_YELLOW;
+    } else {
+      --str;
+    }
+  }
+}
+
+static const char kColorEncodedHelpMessage[] =
+"This program contains tests written using " GTEST_NAME_ ". You can use the\n"
+"following command line flags to control its behavior:\n"
+"\n"
+"Test Selection:\n"
+"  @G--" GTEST_FLAG_PREFIX_ "list_tests@D\n"
+"      List the names of all tests instead of running them. The name of\n"
+"      TEST(Foo, Bar) is \"Foo.Bar\".\n"
+"  @G--" GTEST_FLAG_PREFIX_ "filter=@YPOSTIVE_PATTERNS"
+    "[@G-@YNEGATIVE_PATTERNS]@D\n"
+"      Run only the tests whose name matches one of the positive patterns but\n"
+"      none of the negative patterns. '?' matches any single character; '*'\n"
+"      matches any substring; ':' separates two patterns.\n"
+"  @G--" GTEST_FLAG_PREFIX_ "also_run_disabled_tests@D\n"
+"      Run all disabled tests too.\n"
+"\n"
+"Test Execution:\n"
+"  @G--" GTEST_FLAG_PREFIX_ "repeat=@Y[COUNT]@D\n"
+"      Run the tests repeatedly; use a negative count to repeat forever.\n"
+"  @G--" GTEST_FLAG_PREFIX_ "shuffle@D\n"
+"      Randomize tests' orders on every iteration.\n"
+"  @G--" GTEST_FLAG_PREFIX_ "random_seed=@Y[NUMBER]@D\n"
+"      Random number seed to use for shuffling test orders (between 1 and\n"
+"      99999, or 0 to use a seed based on the current time).\n"
+"\n"
+"Test Output:\n"
+"  @G--" GTEST_FLAG_PREFIX_ "color=@Y(@Gyes@Y|@Gno@Y|@Gauto@Y)@D\n"
+"      Enable/disable colored output. The default is @Gauto@D.\n"
+"  -@G-" GTEST_FLAG_PREFIX_ "print_time=0@D\n"
+"      Don't print the elapsed time of each test.\n"
+"  @G--" GTEST_FLAG_PREFIX_ "output=xml@Y[@G:@YDIRECTORY_PATH@G"
+    GTEST_PATH_SEP_ "@Y|@G:@YFILE_PATH]@D\n"
+"      Generate an XML report in the given directory or with the given file\n"
+"      name. @YFILE_PATH@D defaults to @Gtest_details.xml@D.\n"
+#if GTEST_CAN_STREAM_RESULTS_
+"  @G--" GTEST_FLAG_PREFIX_ "stream_result_to=@YHOST@G:@YPORT@D\n"
+"      Stream test results to the given server.\n"
+#endif  // GTEST_CAN_STREAM_RESULTS_
+"\n"
+"Assertion Behavior:\n"
+#if GTEST_HAS_DEATH_TEST && !GTEST_OS_WINDOWS
+"  @G--" GTEST_FLAG_PREFIX_ "death_test_style=@Y(@Gfast@Y|@Gthreadsafe@Y)@D\n"
+"      Set the default death test style.\n"
+#endif  // GTEST_HAS_DEATH_TEST && !GTEST_OS_WINDOWS
+"  @G--" GTEST_FLAG_PREFIX_ "break_on_failure@D\n"
+"      Turn assertion failures into debugger break-points.\n"
+"  @G--" GTEST_FLAG_PREFIX_ "throw_on_failure@D\n"
+"      Turn assertion failures into C++ exceptions.\n"
+"  @G--" GTEST_FLAG_PREFIX_ "catch_exceptions=0@D\n"
+"      Do not report exceptions as test failures. Instead, allow them\n"
+"      to crash the program or throw a pop-up (on Windows).\n"
+"\n"
+"Except for @G--" GTEST_FLAG_PREFIX_ "list_tests@D, you can alternatively set "
+    "the corresponding\n"
+"environment variable of a flag (all letters in upper-case). For example, to\n"
+"disable colored text output, you can either specify @G--" GTEST_FLAG_PREFIX_
+    "color=no@D or set\n"
+"the @G" GTEST_FLAG_PREFIX_UPPER_ "COLOR@D environment variable to @Gno@D.\n"
+"\n"
+"For more information, please read the " GTEST_NAME_ " documentation at\n"
+"@G" GTEST_PROJECT_URL_ "@D. If you find a bug in " GTEST_NAME_ "\n"
+"(not one in your own code or tests), please report it to\n"
+"@G<" GTEST_DEV_EMAIL_ ">@D.\n";
+
+// Parses the command line for Google Test flags, without initializing
+// other parts of Google Test.  The type parameter CharType can be
+// instantiated to either char or wchar_t.
+template <typename CharType>
+void ParseGoogleTestFlagsOnlyImpl(int* argc, CharType** argv) {
+  for (int i = 1; i < *argc; i++) {
+    const String arg_string = StreamableToString(argv[i]);
+    const char* const arg = arg_string.c_str();
+
+    using internal::ParseBoolFlag;
+    using internal::ParseInt32Flag;
+    using internal::ParseStringFlag;
+
+    // Do we see a Google Test flag?
+    if (ParseBoolFlag(arg, kAlsoRunDisabledTestsFlag,
+                      &GTEST_FLAG(also_run_disabled_tests)) ||
+        ParseBoolFlag(arg, kBreakOnFailureFlag,
+                      &GTEST_FLAG(break_on_failure)) ||
+        ParseBoolFlag(arg, kCatchExceptionsFlag,
+                      &GTEST_FLAG(catch_exceptions)) ||
+        ParseStringFlag(arg, kColorFlag, &GTEST_FLAG(color)) ||
+        ParseStringFlag(arg, kDeathTestStyleFlag,
+                        &GTEST_FLAG(death_test_style)) ||
+        ParseBoolFlag(arg, kDeathTestUseFork,
+                      &GTEST_FLAG(death_test_use_fork)) ||
+        ParseStringFlag(arg, kFilterFlag, &GTEST_FLAG(filter)) ||
+        ParseStringFlag(arg, kInternalRunDeathTestFlag,
+                        &GTEST_FLAG(internal_run_death_test)) ||
+        ParseBoolFlag(arg, kListTestsFlag, &GTEST_FLAG(list_tests)) ||
+        ParseStringFlag(arg, kOutputFlag, &GTEST_FLAG(output)) ||
+        ParseBoolFlag(arg, kPrintTimeFlag, &GTEST_FLAG(print_time)) ||
+        ParseInt32Flag(arg, kRandomSeedFlag, &GTEST_FLAG(random_seed)) ||
+        ParseInt32Flag(arg, kRepeatFlag, &GTEST_FLAG(repeat)) ||
+        ParseBoolFlag(arg, kShuffleFlag, &GTEST_FLAG(shuffle)) ||
+        ParseInt32Flag(arg, kStackTraceDepthFlag,
+                       &GTEST_FLAG(stack_trace_depth)) ||
+        ParseStringFlag(arg, kStreamResultToFlag,
+                        &GTEST_FLAG(stream_result_to)) ||
+        ParseBoolFlag(arg, kThrowOnFailureFlag,
+                      &GTEST_FLAG(throw_on_failure))
+        ) {
+      // Yes.  Shift the remainder of the argv list left by one.  Note
+      // that argv has (*argc + 1) elements, the last one always being
+      // NULL.  The following loop moves the trailing NULL element as
+      // well.
+      for (int j = i; j != *argc; j++) {
+        argv[j] = argv[j + 1];
+      }
+
+      // Decrements the argument count.
+      (*argc)--;
+
+      // We also need to decrement the iterator as we just removed
+      // an element.
+      i--;
+    } else if (arg_string == "--help" || arg_string == "-h" ||
+               arg_string == "-?" || arg_string == "/?" ||
+               HasGoogleTestFlagPrefix(arg)) {
+      // Both help flag and unrecognized Google Test flags (excluding
+      // internal ones) trigger help display.
+      g_help_flag = true;
+    }
+  }
+
+  if (g_help_flag) {
+    // We print the help here instead of in RUN_ALL_TESTS(), as the
+    // latter may not be called at all if the user is using Google
+    // Test with another testing framework.
+    PrintColorEncoded(kColorEncodedHelpMessage);
+  }
+}
+
+// Parses the command line for Google Test flags, without initializing
+// other parts of Google Test.
+void ParseGoogleTestFlagsOnly(int* argc, char** argv) {
+  ParseGoogleTestFlagsOnlyImpl(argc, argv);
+}
+void ParseGoogleTestFlagsOnly(int* argc, wchar_t** argv) {
+  ParseGoogleTestFlagsOnlyImpl(argc, argv);
+}
+
+// The internal implementation of InitGoogleTest().
+//
+// The type parameter CharType can be instantiated to either char or
+// wchar_t.
+template <typename CharType>
+void InitGoogleTestImpl(int* argc, CharType** argv) {
+  g_init_gtest_count++;
+
+  // We don't want to run the initialization code twice.
+  if (g_init_gtest_count != 1) return;
+
+  if (*argc <= 0) return;
+
+  internal::g_executable_path = internal::StreamableToString(argv[0]);
+
+#if GTEST_HAS_DEATH_TEST
+
+  g_argvs.clear();
+  for (int i = 0; i != *argc; i++) {
+    g_argvs.push_back(StreamableToString(argv[i]));
+  }
+
+#endif  // GTEST_HAS_DEATH_TEST
+
+  ParseGoogleTestFlagsOnly(argc, argv);
+  GetUnitTestImpl()->PostFlagParsingInit();
+}
+
+}  // namespace internal
+
+// Initializes Google Test.  This must be called before calling
+// RUN_ALL_TESTS().  In particular, it parses a command line for the
+// flags that Google Test recognizes.  Whenever a Google Test flag is
+// seen, it is removed from argv, and *argc is decremented.
+//
+// No value is returned.  Instead, the Google Test flag variables are
+// updated.
+//
+// Calling the function for the second time has no user-visible effect.
+void InitGoogleTest(int* argc, char** argv) {
+  internal::InitGoogleTestImpl(argc, argv);
+}
+
+// This overloaded version can be used in Windows programs compiled in
+// UNICODE mode.
+void InitGoogleTest(int* argc, wchar_t** argv) {
+  internal::InitGoogleTestImpl(argc, argv);
+}
+
+}  // namespace testing
diff --git a/google-breakpad/src/testing/gtest/src/gtest_main.cc b/google-breakpad/src/testing/gtest/src/gtest_main.cc
new file mode 100644
index 0000000..f302822
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/src/gtest_main.cc
@@ -0,0 +1,38 @@
+// Copyright 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include <stdio.h>
+
+#include "gtest/gtest.h"
+
+GTEST_API_ int main(int argc, char **argv) {
+  printf("Running main() from gtest_main.cc\n");
+  testing::InitGoogleTest(&argc, argv);
+  return RUN_ALL_TESTS();
+}
diff --git a/google-breakpad/src/testing/gtest/test/gtest-death-test_ex_test.cc b/google-breakpad/src/testing/gtest/test/gtest-death-test_ex_test.cc
new file mode 100644
index 0000000..b50a13d
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest-death-test_ex_test.cc
@@ -0,0 +1,93 @@
+// Copyright 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: vladl@google.com (Vlad Losev)
+//
+// Tests that verify interaction of exceptions and death tests.
+
+#include "gtest/gtest-death-test.h"
+#include "gtest/gtest.h"
+
+#if GTEST_HAS_DEATH_TEST
+
+# if GTEST_HAS_SEH
+#  include <windows.h>          // For RaiseException().
+# endif
+
+# include "gtest/gtest-spi.h"
+
+# if GTEST_HAS_EXCEPTIONS
+
+#  include <exception>  // For std::exception.
+
+// Tests that death tests report thrown exceptions as failures and that the
+// exceptions do not escape death test macros.
+TEST(CxxExceptionDeathTest, ExceptionIsFailure) {
+  try {
+    EXPECT_NONFATAL_FAILURE(EXPECT_DEATH(throw 1, ""), "threw an exception");
+  } catch (...) {  // NOLINT
+    FAIL() << "An exception escaped a death test macro invocation "
+           << "with catch_exceptions "
+           << (testing::GTEST_FLAG(catch_exceptions) ? "enabled" : "disabled");
+  }
+}
+
+class TestException : public std::exception {
+ public:
+  virtual const char* what() const throw() { return "exceptional message"; }
+};
+
+TEST(CxxExceptionDeathTest, PrintsMessageForStdExceptions) {
+  // Verifies that the exception message is quoted in the failure text.
+  EXPECT_NONFATAL_FAILURE(EXPECT_DEATH(throw TestException(), ""),
+                          "exceptional message");
+  // Verifies that the location is mentioned in the failure text.
+  EXPECT_NONFATAL_FAILURE(EXPECT_DEATH(throw TestException(), ""),
+                          "gtest-death-test_ex_test.cc");
+}
+# endif  // GTEST_HAS_EXCEPTIONS
+
+# if GTEST_HAS_SEH
+// Tests that enabling interception of SEH exceptions with the
+// catch_exceptions flag does not interfere with SEH exceptions being
+// treated as death by death tests.
+TEST(SehExceptionDeasTest, CatchExceptionsDoesNotInterfere) {
+  EXPECT_DEATH(RaiseException(42, 0x0, 0, NULL), "")
+      << "with catch_exceptions "
+      << (testing::GTEST_FLAG(catch_exceptions) ? "enabled" : "disabled");
+}
+# endif
+
+#endif  // GTEST_HAS_DEATH_TEST
+
+int main(int argc, char** argv) {
+  testing::InitGoogleTest(&argc, argv);
+  testing::GTEST_FLAG(catch_exceptions) = GTEST_ENABLE_CATCH_EXCEPTIONS_ != 0;
+  return RUN_ALL_TESTS();
+}
diff --git a/google-breakpad/src/testing/gtest/test/gtest-death-test_test.cc b/google-breakpad/src/testing/gtest/test/gtest-death-test_test.cc
new file mode 100644
index 0000000..b389e73
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest-death-test_test.cc
@@ -0,0 +1,1370 @@
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+//
+// Tests for death tests.
+
+#include "gtest/gtest-death-test.h"
+#include "gtest/gtest.h"
+#include "gtest/internal/gtest-filepath.h"
+
+using testing::internal::AlwaysFalse;
+using testing::internal::AlwaysTrue;
+
+#if GTEST_HAS_DEATH_TEST
+
+# if GTEST_OS_WINDOWS
+#  include <direct.h>          // For chdir().
+# else
+#  include <unistd.h>
+#  include <sys/wait.h>        // For waitpid.
+#  include <limits>            // For std::numeric_limits.
+# endif  // GTEST_OS_WINDOWS
+
+# include <limits.h>
+# include <signal.h>
+# include <stdio.h>
+
+# if GTEST_OS_LINUX
+#  include <sys/time.h>
+# endif  // GTEST_OS_LINUX
+
+# include "gtest/gtest-spi.h"
+
+// Indicates that this translation unit is part of Google Test's
+// implementation.  It must come before gtest-internal-inl.h is
+// included, or there will be a compiler error.  This trick is to
+// prevent a user from accidentally including gtest-internal-inl.h in
+// his code.
+# define GTEST_IMPLEMENTATION_ 1
+# include "src/gtest-internal-inl.h"
+# undef GTEST_IMPLEMENTATION_
+
+namespace posix = ::testing::internal::posix;
+
+using testing::Message;
+using testing::internal::DeathTest;
+using testing::internal::DeathTestFactory;
+using testing::internal::FilePath;
+using testing::internal::GetLastErrnoDescription;
+using testing::internal::GetUnitTestImpl;
+using testing::internal::InDeathTestChild;
+using testing::internal::ParseNaturalNumber;
+using testing::internal::String;
+
+namespace testing {
+namespace internal {
+
+// A helper class whose objects replace the death test factory for a
+// single UnitTest object during their lifetimes.
+class ReplaceDeathTestFactory {
+ public:
+  explicit ReplaceDeathTestFactory(DeathTestFactory* new_factory)
+      : unit_test_impl_(GetUnitTestImpl()) {
+    old_factory_ = unit_test_impl_->death_test_factory_.release();
+    unit_test_impl_->death_test_factory_.reset(new_factory);
+  }
+
+  ~ReplaceDeathTestFactory() {
+    unit_test_impl_->death_test_factory_.release();
+    unit_test_impl_->death_test_factory_.reset(old_factory_);
+  }
+ private:
+  // Prevents copying ReplaceDeathTestFactory objects.
+  ReplaceDeathTestFactory(const ReplaceDeathTestFactory&);
+  void operator=(const ReplaceDeathTestFactory&);
+
+  UnitTestImpl* unit_test_impl_;
+  DeathTestFactory* old_factory_;
+};
+
+}  // namespace internal
+}  // namespace testing
+
+void DieWithMessage(const ::std::string& message) {
+  fprintf(stderr, "%s", message.c_str());
+  fflush(stderr);  // Make sure the text is printed before the process exits.
+
+  // We call _exit() instead of exit(), as the former is a direct
+  // system call and thus safer in the presence of threads.  exit()
+  // will invoke user-defined exit-hooks, which may do dangerous
+  // things that conflict with death tests.
+  //
+  // Some compilers can recognize that _exit() never returns and issue the
+  // 'unreachable code' warning for code following this function, unless
+  // fooled by a fake condition.
+  if (AlwaysTrue())
+    _exit(1);
+}
+
+void DieInside(const ::std::string& function) {
+  DieWithMessage("death inside " + function + "().");
+}
+
+// Tests that death tests work.
+
+class TestForDeathTest : public testing::Test {
+ protected:
+  TestForDeathTest() : original_dir_(FilePath::GetCurrentDir()) {}
+
+  virtual ~TestForDeathTest() {
+    posix::ChDir(original_dir_.c_str());
+  }
+
+  // A static member function that's expected to die.
+  static void StaticMemberFunction() { DieInside("StaticMemberFunction"); }
+
+  // A method of the test fixture that may die.
+  void MemberFunction() {
+    if (should_die_)
+      DieInside("MemberFunction");
+  }
+
+  // True iff MemberFunction() should die.
+  bool should_die_;
+  const FilePath original_dir_;
+};
+
+// A class with a member function that may die.
+class MayDie {
+ public:
+  explicit MayDie(bool should_die) : should_die_(should_die) {}
+
+  // A member function that may die.
+  void MemberFunction() const {
+    if (should_die_)
+      DieInside("MayDie::MemberFunction");
+  }
+
+ private:
+  // True iff MemberFunction() should die.
+  bool should_die_;
+};
+
+// A global function that's expected to die.
+void GlobalFunction() { DieInside("GlobalFunction"); }
+
+// A non-void function that's expected to die.
+int NonVoidFunction() {
+  DieInside("NonVoidFunction");
+  return 1;
+}
+
+// A unary function that may die.
+void DieIf(bool should_die) {
+  if (should_die)
+    DieInside("DieIf");
+}
+
+// A binary function that may die.
+bool DieIfLessThan(int x, int y) {
+  if (x < y) {
+    DieInside("DieIfLessThan");
+  }
+  return true;
+}
+
+// Tests that ASSERT_DEATH can be used outside a TEST, TEST_F, or test fixture.
+void DeathTestSubroutine() {
+  EXPECT_DEATH(GlobalFunction(), "death.*GlobalFunction");
+  ASSERT_DEATH(GlobalFunction(), "death.*GlobalFunction");
+}
+
+// Death in dbg, not opt.
+int DieInDebugElse12(int* sideeffect) {
+  if (sideeffect) *sideeffect = 12;
+
+# ifndef NDEBUG
+
+  DieInside("DieInDebugElse12");
+
+# endif  // NDEBUG
+
+  return 12;
+}
+
+# if GTEST_OS_WINDOWS
+
+// Tests the ExitedWithCode predicate.
+TEST(ExitStatusPredicateTest, ExitedWithCode) {
+  // On Windows, the process's exit code is the same as its exit status,
+  // so the predicate just compares the its input with its parameter.
+  EXPECT_TRUE(testing::ExitedWithCode(0)(0));
+  EXPECT_TRUE(testing::ExitedWithCode(1)(1));
+  EXPECT_TRUE(testing::ExitedWithCode(42)(42));
+  EXPECT_FALSE(testing::ExitedWithCode(0)(1));
+  EXPECT_FALSE(testing::ExitedWithCode(1)(0));
+}
+
+# else
+
+// Returns the exit status of a process that calls _exit(2) with a
+// given exit code.  This is a helper function for the
+// ExitStatusPredicateTest test suite.
+static int NormalExitStatus(int exit_code) {
+  pid_t child_pid = fork();
+  if (child_pid == 0) {
+    _exit(exit_code);
+  }
+  int status;
+  waitpid(child_pid, &status, 0);
+  return status;
+}
+
+// Returns the exit status of a process that raises a given signal.
+// If the signal does not cause the process to die, then it returns
+// instead the exit status of a process that exits normally with exit
+// code 1.  This is a helper function for the ExitStatusPredicateTest
+// test suite.
+static int KilledExitStatus(int signum) {
+  pid_t child_pid = fork();
+  if (child_pid == 0) {
+    raise(signum);
+    _exit(1);
+  }
+  int status;
+  waitpid(child_pid, &status, 0);
+  return status;
+}
+
+// Tests the ExitedWithCode predicate.
+TEST(ExitStatusPredicateTest, ExitedWithCode) {
+  const int status0  = NormalExitStatus(0);
+  const int status1  = NormalExitStatus(1);
+  const int status42 = NormalExitStatus(42);
+  const testing::ExitedWithCode pred0(0);
+  const testing::ExitedWithCode pred1(1);
+  const testing::ExitedWithCode pred42(42);
+  EXPECT_PRED1(pred0,  status0);
+  EXPECT_PRED1(pred1,  status1);
+  EXPECT_PRED1(pred42, status42);
+  EXPECT_FALSE(pred0(status1));
+  EXPECT_FALSE(pred42(status0));
+  EXPECT_FALSE(pred1(status42));
+}
+
+// Tests the KilledBySignal predicate.
+TEST(ExitStatusPredicateTest, KilledBySignal) {
+  const int status_segv = KilledExitStatus(SIGSEGV);
+  const int status_kill = KilledExitStatus(SIGKILL);
+  const testing::KilledBySignal pred_segv(SIGSEGV);
+  const testing::KilledBySignal pred_kill(SIGKILL);
+  EXPECT_PRED1(pred_segv, status_segv);
+  EXPECT_PRED1(pred_kill, status_kill);
+  EXPECT_FALSE(pred_segv(status_kill));
+  EXPECT_FALSE(pred_kill(status_segv));
+}
+
+# endif  // GTEST_OS_WINDOWS
+
+// Tests that the death test macros expand to code which may or may not
+// be followed by operator<<, and that in either case the complete text
+// comprises only a single C++ statement.
+TEST_F(TestForDeathTest, SingleStatement) {
+  if (AlwaysFalse())
+    // This would fail if executed; this is a compilation test only
+    ASSERT_DEATH(return, "");
+
+  if (AlwaysTrue())
+    EXPECT_DEATH(_exit(1), "");
+  else
+    // This empty "else" branch is meant to ensure that EXPECT_DEATH
+    // doesn't expand into an "if" statement without an "else"
+    ;
+
+  if (AlwaysFalse())
+    ASSERT_DEATH(return, "") << "did not die";
+
+  if (AlwaysFalse())
+    ;
+  else
+    EXPECT_DEATH(_exit(1), "") << 1 << 2 << 3;
+}
+
+void DieWithEmbeddedNul() {
+  fprintf(stderr, "Hello%cmy null world.\n", '\0');
+  fflush(stderr);
+  _exit(1);
+}
+
+# if GTEST_USES_PCRE
+// Tests that EXPECT_DEATH and ASSERT_DEATH work when the error
+// message has a NUL character in it.
+TEST_F(TestForDeathTest, EmbeddedNulInMessage) {
+  // TODO(wan@google.com): <regex.h> doesn't support matching strings
+  // with embedded NUL characters - find a way to workaround it.
+  EXPECT_DEATH(DieWithEmbeddedNul(), "my null world");
+  ASSERT_DEATH(DieWithEmbeddedNul(), "my null world");
+}
+# endif  // GTEST_USES_PCRE
+
+// Tests that death test macros expand to code which interacts well with switch
+// statements.
+TEST_F(TestForDeathTest, SwitchStatement) {
+// Microsoft compiler usually complains about switch statements without
+// case labels. We suppress that warning for this test.
+# ifdef _MSC_VER
+#  pragma warning(push)
+#  pragma warning(disable: 4065)
+# endif  // _MSC_VER
+
+  switch (0)
+    default:
+      ASSERT_DEATH(_exit(1), "") << "exit in default switch handler";
+
+  switch (0)
+    case 0:
+      EXPECT_DEATH(_exit(1), "") << "exit in switch case";
+
+# ifdef _MSC_VER
+#  pragma warning(pop)
+# endif  // _MSC_VER
+}
+
+// Tests that a static member function can be used in a "fast" style
+// death test.
+TEST_F(TestForDeathTest, StaticMemberFunctionFastStyle) {
+  testing::GTEST_FLAG(death_test_style) = "fast";
+  ASSERT_DEATH(StaticMemberFunction(), "death.*StaticMember");
+}
+
+// Tests that a method of the test fixture can be used in a "fast"
+// style death test.
+TEST_F(TestForDeathTest, MemberFunctionFastStyle) {
+  testing::GTEST_FLAG(death_test_style) = "fast";
+  should_die_ = true;
+  EXPECT_DEATH(MemberFunction(), "inside.*MemberFunction");
+}
+
+void ChangeToRootDir() { posix::ChDir(GTEST_PATH_SEP_); }
+
+// Tests that death tests work even if the current directory has been
+// changed.
+TEST_F(TestForDeathTest, FastDeathTestInChangedDir) {
+  testing::GTEST_FLAG(death_test_style) = "fast";
+
+  ChangeToRootDir();
+  EXPECT_EXIT(_exit(1), testing::ExitedWithCode(1), "");
+
+  ChangeToRootDir();
+  ASSERT_DEATH(_exit(1), "");
+}
+
+# if GTEST_OS_LINUX
+void SigprofAction(int, siginfo_t*, void*) { /* no op */ }
+
+// Sets SIGPROF action and ITIMER_PROF timer (interval: 1ms).
+void SetSigprofActionAndTimer() {
+  struct itimerval timer;
+  timer.it_interval.tv_sec = 0;
+  timer.it_interval.tv_usec = 1;
+  timer.it_value = timer.it_interval;
+  ASSERT_EQ(0, setitimer(ITIMER_PROF, &timer, NULL));
+  struct sigaction signal_action;
+  memset(&signal_action, 0, sizeof(signal_action));
+  sigemptyset(&signal_action.sa_mask);
+  signal_action.sa_sigaction = SigprofAction;
+  signal_action.sa_flags = SA_RESTART | SA_SIGINFO;
+  ASSERT_EQ(0, sigaction(SIGPROF, &signal_action, NULL));
+}
+
+// Disables ITIMER_PROF timer and ignores SIGPROF signal.
+void DisableSigprofActionAndTimer(struct sigaction* old_signal_action) {
+  struct itimerval timer;
+  timer.it_interval.tv_sec = 0;
+  timer.it_interval.tv_usec = 0;
+  timer.it_value = timer.it_interval;
+  ASSERT_EQ(0, setitimer(ITIMER_PROF, &timer, NULL));
+  struct sigaction signal_action;
+  memset(&signal_action, 0, sizeof(signal_action));
+  sigemptyset(&signal_action.sa_mask);
+  signal_action.sa_handler = SIG_IGN;
+  ASSERT_EQ(0, sigaction(SIGPROF, &signal_action, old_signal_action));
+}
+
+// Tests that death tests work when SIGPROF handler and timer are set.
+TEST_F(TestForDeathTest, FastSigprofActionSet) {
+  testing::GTEST_FLAG(death_test_style) = "fast";
+  SetSigprofActionAndTimer();
+  EXPECT_DEATH(_exit(1), "");
+  struct sigaction old_signal_action;
+  DisableSigprofActionAndTimer(&old_signal_action);
+  EXPECT_TRUE(old_signal_action.sa_sigaction == SigprofAction);
+}
+
+TEST_F(TestForDeathTest, ThreadSafeSigprofActionSet) {
+  testing::GTEST_FLAG(death_test_style) = "threadsafe";
+  SetSigprofActionAndTimer();
+  EXPECT_DEATH(_exit(1), "");
+  struct sigaction old_signal_action;
+  DisableSigprofActionAndTimer(&old_signal_action);
+  EXPECT_TRUE(old_signal_action.sa_sigaction == SigprofAction);
+}
+# endif  // GTEST_OS_LINUX
+
+// Repeats a representative sample of death tests in the "threadsafe" style:
+
+TEST_F(TestForDeathTest, StaticMemberFunctionThreadsafeStyle) {
+  testing::GTEST_FLAG(death_test_style) = "threadsafe";
+  ASSERT_DEATH(StaticMemberFunction(), "death.*StaticMember");
+}
+
+TEST_F(TestForDeathTest, MemberFunctionThreadsafeStyle) {
+  testing::GTEST_FLAG(death_test_style) = "threadsafe";
+  should_die_ = true;
+  EXPECT_DEATH(MemberFunction(), "inside.*MemberFunction");
+}
+
+TEST_F(TestForDeathTest, ThreadsafeDeathTestInLoop) {
+  testing::GTEST_FLAG(death_test_style) = "threadsafe";
+
+  for (int i = 0; i < 3; ++i)
+    EXPECT_EXIT(_exit(i), testing::ExitedWithCode(i), "") << ": i = " << i;
+}
+
+TEST_F(TestForDeathTest, ThreadsafeDeathTestInChangedDir) {
+  testing::GTEST_FLAG(death_test_style) = "threadsafe";
+
+  ChangeToRootDir();
+  EXPECT_EXIT(_exit(1), testing::ExitedWithCode(1), "");
+
+  ChangeToRootDir();
+  ASSERT_DEATH(_exit(1), "");
+}
+
+TEST_F(TestForDeathTest, MixedStyles) {
+  testing::GTEST_FLAG(death_test_style) = "threadsafe";
+  EXPECT_DEATH(_exit(1), "");
+  testing::GTEST_FLAG(death_test_style) = "fast";
+  EXPECT_DEATH(_exit(1), "");
+}
+
+namespace {
+
+bool pthread_flag;
+
+void SetPthreadFlag() {
+  pthread_flag = true;
+}
+
+}  // namespace
+
+# if GTEST_HAS_CLONE && GTEST_HAS_PTHREAD
+
+TEST_F(TestForDeathTest, DoesNotExecuteAtforkHooks) {
+  if (!testing::GTEST_FLAG(death_test_use_fork)) {
+    testing::GTEST_FLAG(death_test_style) = "threadsafe";
+    pthread_flag = false;
+    ASSERT_EQ(0, pthread_atfork(&SetPthreadFlag, NULL, NULL));
+    ASSERT_DEATH(_exit(1), "");
+    ASSERT_FALSE(pthread_flag);
+  }
+}
+
+# endif  // GTEST_HAS_CLONE && GTEST_HAS_PTHREAD
+
+// Tests that a method of another class can be used in a death test.
+TEST_F(TestForDeathTest, MethodOfAnotherClass) {
+  const MayDie x(true);
+  ASSERT_DEATH(x.MemberFunction(), "MayDie\\:\\:MemberFunction");
+}
+
+// Tests that a global function can be used in a death test.
+TEST_F(TestForDeathTest, GlobalFunction) {
+  EXPECT_DEATH(GlobalFunction(), "GlobalFunction");
+}
+
+// Tests that any value convertible to an RE works as a second
+// argument to EXPECT_DEATH.
+TEST_F(TestForDeathTest, AcceptsAnythingConvertibleToRE) {
+  static const char regex_c_str[] = "GlobalFunction";
+  EXPECT_DEATH(GlobalFunction(), regex_c_str);
+
+  const testing::internal::RE regex(regex_c_str);
+  EXPECT_DEATH(GlobalFunction(), regex);
+
+# if GTEST_HAS_GLOBAL_STRING
+
+  const string regex_str(regex_c_str);
+  EXPECT_DEATH(GlobalFunction(), regex_str);
+
+# endif  // GTEST_HAS_GLOBAL_STRING
+
+  const ::std::string regex_std_str(regex_c_str);
+  EXPECT_DEATH(GlobalFunction(), regex_std_str);
+}
+
+// Tests that a non-void function can be used in a death test.
+TEST_F(TestForDeathTest, NonVoidFunction) {
+  ASSERT_DEATH(NonVoidFunction(), "NonVoidFunction");
+}
+
+// Tests that functions that take parameter(s) can be used in a death test.
+TEST_F(TestForDeathTest, FunctionWithParameter) {
+  EXPECT_DEATH(DieIf(true), "DieIf\\(\\)");
+  EXPECT_DEATH(DieIfLessThan(2, 3), "DieIfLessThan");
+}
+
+// Tests that ASSERT_DEATH can be used outside a TEST, TEST_F, or test fixture.
+TEST_F(TestForDeathTest, OutsideFixture) {
+  DeathTestSubroutine();
+}
+
+// Tests that death tests can be done inside a loop.
+TEST_F(TestForDeathTest, InsideLoop) {
+  for (int i = 0; i < 5; i++) {
+    EXPECT_DEATH(DieIfLessThan(-1, i), "DieIfLessThan") << "where i == " << i;
+  }
+}
+
+// Tests that a compound statement can be used in a death test.
+TEST_F(TestForDeathTest, CompoundStatement) {
+  EXPECT_DEATH({  // NOLINT
+    const int x = 2;
+    const int y = x + 1;
+    DieIfLessThan(x, y);
+  },
+  "DieIfLessThan");
+}
+
+// Tests that code that doesn't die causes a death test to fail.
+TEST_F(TestForDeathTest, DoesNotDie) {
+  EXPECT_NONFATAL_FAILURE(EXPECT_DEATH(DieIf(false), "DieIf"),
+                          "failed to die");
+}
+
+// Tests that a death test fails when the error message isn't expected.
+TEST_F(TestForDeathTest, ErrorMessageMismatch) {
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_DEATH(DieIf(true), "DieIfLessThan") << "End of death test message.";
+  }, "died but not with expected error");
+}
+
+// On exit, *aborted will be true iff the EXPECT_DEATH() statement
+// aborted the function.
+void ExpectDeathTestHelper(bool* aborted) {
+  *aborted = true;
+  EXPECT_DEATH(DieIf(false), "DieIf");  // This assertion should fail.
+  *aborted = false;
+}
+
+// Tests that EXPECT_DEATH doesn't abort the test on failure.
+TEST_F(TestForDeathTest, EXPECT_DEATH) {
+  bool aborted = true;
+  EXPECT_NONFATAL_FAILURE(ExpectDeathTestHelper(&aborted),
+                          "failed to die");
+  EXPECT_FALSE(aborted);
+}
+
+// Tests that ASSERT_DEATH does abort the test on failure.
+TEST_F(TestForDeathTest, ASSERT_DEATH) {
+  static bool aborted;
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    aborted = true;
+    ASSERT_DEATH(DieIf(false), "DieIf");  // This assertion should fail.
+    aborted = false;
+  }, "failed to die");
+  EXPECT_TRUE(aborted);
+}
+
+// Tests that EXPECT_DEATH evaluates the arguments exactly once.
+TEST_F(TestForDeathTest, SingleEvaluation) {
+  int x = 3;
+  EXPECT_DEATH(DieIf((++x) == 4), "DieIf");
+
+  const char* regex = "DieIf";
+  const char* regex_save = regex;
+  EXPECT_DEATH(DieIfLessThan(3, 4), regex++);
+  EXPECT_EQ(regex_save + 1, regex);
+}
+
+// Tests that run-away death tests are reported as failures.
+TEST_F(TestForDeathTest, RunawayIsFailure) {
+  EXPECT_NONFATAL_FAILURE(EXPECT_DEATH(static_cast<void>(0), "Foo"),
+                          "failed to die.");
+}
+
+// Tests that death tests report executing 'return' in the statement as
+// failure.
+TEST_F(TestForDeathTest, ReturnIsFailure) {
+  EXPECT_FATAL_FAILURE(ASSERT_DEATH(return, "Bar"),
+                       "illegal return in test statement.");
+}
+
+// Tests that EXPECT_DEBUG_DEATH works as expected, that is, you can stream a
+// message to it, and in debug mode it:
+// 1. Asserts on death.
+// 2. Has no side effect.
+//
+// And in opt mode, it:
+// 1.  Has side effects but does not assert.
+TEST_F(TestForDeathTest, TestExpectDebugDeath) {
+  int sideeffect = 0;
+
+  EXPECT_DEBUG_DEATH(DieInDebugElse12(&sideeffect), "death.*DieInDebugElse12")
+      << "Must accept a streamed message";
+
+# ifdef NDEBUG
+
+  // Checks that the assignment occurs in opt mode (sideeffect).
+  EXPECT_EQ(12, sideeffect);
+
+# else
+
+  // Checks that the assignment does not occur in dbg mode (no sideeffect).
+  EXPECT_EQ(0, sideeffect);
+
+# endif
+}
+
+// Tests that ASSERT_DEBUG_DEATH works as expected, that is, you can stream a
+// message to it, and in debug mode it:
+// 1. Asserts on death.
+// 2. Has no side effect.
+//
+// And in opt mode, it:
+// 1.  Has side effects but does not assert.
+TEST_F(TestForDeathTest, TestAssertDebugDeath) {
+  int sideeffect = 0;
+
+  ASSERT_DEBUG_DEATH(DieInDebugElse12(&sideeffect), "death.*DieInDebugElse12")
+      << "Must accept a streamed message";
+
+# ifdef NDEBUG
+
+  // Checks that the assignment occurs in opt mode (sideeffect).
+  EXPECT_EQ(12, sideeffect);
+
+# else
+
+  // Checks that the assignment does not occur in dbg mode (no sideeffect).
+  EXPECT_EQ(0, sideeffect);
+
+# endif
+}
+
+# ifndef NDEBUG
+
+void ExpectDebugDeathHelper(bool* aborted) {
+  *aborted = true;
+  EXPECT_DEBUG_DEATH(return, "") << "This is expected to fail.";
+  *aborted = false;
+}
+
+#  if GTEST_OS_WINDOWS
+TEST(PopUpDeathTest, DoesNotShowPopUpOnAbort) {
+  printf("This test should be considered failing if it shows "
+         "any pop-up dialogs.\n");
+  fflush(stdout);
+
+  EXPECT_DEATH({
+    testing::GTEST_FLAG(catch_exceptions) = false;
+    abort();
+  }, "");
+}
+#  endif  // GTEST_OS_WINDOWS
+
+// Tests that EXPECT_DEBUG_DEATH in debug mode does not abort
+// the function.
+TEST_F(TestForDeathTest, ExpectDebugDeathDoesNotAbort) {
+  bool aborted = true;
+  EXPECT_NONFATAL_FAILURE(ExpectDebugDeathHelper(&aborted), "");
+  EXPECT_FALSE(aborted);
+}
+
+void AssertDebugDeathHelper(bool* aborted) {
+  *aborted = true;
+  ASSERT_DEBUG_DEATH(return, "") << "This is expected to fail.";
+  *aborted = false;
+}
+
+// Tests that ASSERT_DEBUG_DEATH in debug mode aborts the function on
+// failure.
+TEST_F(TestForDeathTest, AssertDebugDeathAborts) {
+  static bool aborted;
+  aborted = false;
+  EXPECT_FATAL_FAILURE(AssertDebugDeathHelper(&aborted), "");
+  EXPECT_TRUE(aborted);
+}
+
+# endif  // _NDEBUG
+
+// Tests the *_EXIT family of macros, using a variety of predicates.
+static void TestExitMacros() {
+  EXPECT_EXIT(_exit(1),  testing::ExitedWithCode(1),  "");
+  ASSERT_EXIT(_exit(42), testing::ExitedWithCode(42), "");
+
+# if GTEST_OS_WINDOWS
+
+  // Of all signals effects on the process exit code, only those of SIGABRT
+  // are documented on Windows.
+  // See http://msdn.microsoft.com/en-us/library/dwwzkt4c(VS.71).aspx.
+  EXPECT_EXIT(raise(SIGABRT), testing::ExitedWithCode(3), "") << "b_ar";
+
+# else
+
+  EXPECT_EXIT(raise(SIGKILL), testing::KilledBySignal(SIGKILL), "") << "foo";
+  ASSERT_EXIT(raise(SIGUSR2), testing::KilledBySignal(SIGUSR2), "") << "bar";
+
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_EXIT(_exit(0), testing::KilledBySignal(SIGSEGV), "")
+      << "This failure is expected, too.";
+  }, "This failure is expected, too.");
+
+# endif  // GTEST_OS_WINDOWS
+
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_EXIT(raise(SIGSEGV), testing::ExitedWithCode(0), "")
+      << "This failure is expected.";
+  }, "This failure is expected.");
+}
+
+TEST_F(TestForDeathTest, ExitMacros) {
+  TestExitMacros();
+}
+
+TEST_F(TestForDeathTest, ExitMacrosUsingFork) {
+  testing::GTEST_FLAG(death_test_use_fork) = true;
+  TestExitMacros();
+}
+
+TEST_F(TestForDeathTest, InvalidStyle) {
+  testing::GTEST_FLAG(death_test_style) = "rococo";
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_DEATH(_exit(0), "") << "This failure is expected.";
+  }, "This failure is expected.");
+}
+
+TEST_F(TestForDeathTest, DeathTestFailedOutput) {
+  testing::GTEST_FLAG(death_test_style) = "fast";
+  EXPECT_NONFATAL_FAILURE(
+      EXPECT_DEATH(DieWithMessage("death\n"),
+                   "expected message"),
+      "Actual msg:\n"
+      "[  DEATH   ] death\n");
+}
+
+TEST_F(TestForDeathTest, DeathTestUnexpectedReturnOutput) {
+  testing::GTEST_FLAG(death_test_style) = "fast";
+  EXPECT_NONFATAL_FAILURE(
+      EXPECT_DEATH({
+          fprintf(stderr, "returning\n");
+          fflush(stderr);
+          return;
+        }, ""),
+      "    Result: illegal return in test statement.\n"
+      " Error msg:\n"
+      "[  DEATH   ] returning\n");
+}
+
+TEST_F(TestForDeathTest, DeathTestBadExitCodeOutput) {
+  testing::GTEST_FLAG(death_test_style) = "fast";
+  EXPECT_NONFATAL_FAILURE(
+      EXPECT_EXIT(DieWithMessage("exiting with rc 1\n"),
+                  testing::ExitedWithCode(3),
+                  "expected message"),
+      "    Result: died but not with expected exit code:\n"
+      "            Exited with exit status 1\n"
+      "Actual msg:\n"
+      "[  DEATH   ] exiting with rc 1\n");
+}
+
+TEST_F(TestForDeathTest, DeathTestMultiLineMatchFail) {
+  testing::GTEST_FLAG(death_test_style) = "fast";
+  EXPECT_NONFATAL_FAILURE(
+      EXPECT_DEATH(DieWithMessage("line 1\nline 2\nline 3\n"),
+                   "line 1\nxyz\nline 3\n"),
+      "Actual msg:\n"
+      "[  DEATH   ] line 1\n"
+      "[  DEATH   ] line 2\n"
+      "[  DEATH   ] line 3\n");
+}
+
+TEST_F(TestForDeathTest, DeathTestMultiLineMatchPass) {
+  testing::GTEST_FLAG(death_test_style) = "fast";
+  EXPECT_DEATH(DieWithMessage("line 1\nline 2\nline 3\n"),
+               "line 1\nline 2\nline 3\n");
+}
+
+// A DeathTestFactory that returns MockDeathTests.
+class MockDeathTestFactory : public DeathTestFactory {
+ public:
+  MockDeathTestFactory();
+  virtual bool Create(const char* statement,
+                      const ::testing::internal::RE* regex,
+                      const char* file, int line, DeathTest** test);
+
+  // Sets the parameters for subsequent calls to Create.
+  void SetParameters(bool create, DeathTest::TestRole role,
+                     int status, bool passed);
+
+  // Accessors.
+  int AssumeRoleCalls() const { return assume_role_calls_; }
+  int WaitCalls() const { return wait_calls_; }
+  int PassedCalls() const { return passed_args_.size(); }
+  bool PassedArgument(int n) const { return passed_args_[n]; }
+  int AbortCalls() const { return abort_args_.size(); }
+  DeathTest::AbortReason AbortArgument(int n) const {
+    return abort_args_[n];
+  }
+  bool TestDeleted() const { return test_deleted_; }
+
+ private:
+  friend class MockDeathTest;
+  // If true, Create will return a MockDeathTest; otherwise it returns
+  // NULL.
+  bool create_;
+  // The value a MockDeathTest will return from its AssumeRole method.
+  DeathTest::TestRole role_;
+  // The value a MockDeathTest will return from its Wait method.
+  int status_;
+  // The value a MockDeathTest will return from its Passed method.
+  bool passed_;
+
+  // Number of times AssumeRole was called.
+  int assume_role_calls_;
+  // Number of times Wait was called.
+  int wait_calls_;
+  // The arguments to the calls to Passed since the last call to
+  // SetParameters.
+  std::vector<bool> passed_args_;
+  // The arguments to the calls to Abort since the last call to
+  // SetParameters.
+  std::vector<DeathTest::AbortReason> abort_args_;
+  // True if the last MockDeathTest returned by Create has been
+  // deleted.
+  bool test_deleted_;
+};
+
+
+// A DeathTest implementation useful in testing.  It returns values set
+// at its creation from its various inherited DeathTest methods, and
+// reports calls to those methods to its parent MockDeathTestFactory
+// object.
+class MockDeathTest : public DeathTest {
+ public:
+  MockDeathTest(MockDeathTestFactory *parent,
+                TestRole role, int status, bool passed) :
+      parent_(parent), role_(role), status_(status), passed_(passed) {
+  }
+  virtual ~MockDeathTest() {
+    parent_->test_deleted_ = true;
+  }
+  virtual TestRole AssumeRole() {
+    ++parent_->assume_role_calls_;
+    return role_;
+  }
+  virtual int Wait() {
+    ++parent_->wait_calls_;
+    return status_;
+  }
+  virtual bool Passed(bool exit_status_ok) {
+    parent_->passed_args_.push_back(exit_status_ok);
+    return passed_;
+  }
+  virtual void Abort(AbortReason reason) {
+    parent_->abort_args_.push_back(reason);
+  }
+
+ private:
+  MockDeathTestFactory* const parent_;
+  const TestRole role_;
+  const int status_;
+  const bool passed_;
+};
+
+
+// MockDeathTestFactory constructor.
+MockDeathTestFactory::MockDeathTestFactory()
+    : create_(true),
+      role_(DeathTest::OVERSEE_TEST),
+      status_(0),
+      passed_(true),
+      assume_role_calls_(0),
+      wait_calls_(0),
+      passed_args_(),
+      abort_args_() {
+}
+
+
+// Sets the parameters for subsequent calls to Create.
+void MockDeathTestFactory::SetParameters(bool create,
+                                         DeathTest::TestRole role,
+                                         int status, bool passed) {
+  create_ = create;
+  role_ = role;
+  status_ = status;
+  passed_ = passed;
+
+  assume_role_calls_ = 0;
+  wait_calls_ = 0;
+  passed_args_.clear();
+  abort_args_.clear();
+}
+
+
+// Sets test to NULL (if create_ is false) or to the address of a new
+// MockDeathTest object with parameters taken from the last call
+// to SetParameters (if create_ is true).  Always returns true.
+bool MockDeathTestFactory::Create(const char* /*statement*/,
+                                  const ::testing::internal::RE* /*regex*/,
+                                  const char* /*file*/,
+                                  int /*line*/,
+                                  DeathTest** test) {
+  test_deleted_ = false;
+  if (create_) {
+    *test = new MockDeathTest(this, role_, status_, passed_);
+  } else {
+    *test = NULL;
+  }
+  return true;
+}
+
+// A test fixture for testing the logic of the GTEST_DEATH_TEST_ macro.
+// It installs a MockDeathTestFactory that is used for the duration
+// of the test case.
+class MacroLogicDeathTest : public testing::Test {
+ protected:
+  static testing::internal::ReplaceDeathTestFactory* replacer_;
+  static MockDeathTestFactory* factory_;
+
+  static void SetUpTestCase() {
+    factory_ = new MockDeathTestFactory;
+    replacer_ = new testing::internal::ReplaceDeathTestFactory(factory_);
+  }
+
+  static void TearDownTestCase() {
+    delete replacer_;
+    replacer_ = NULL;
+    delete factory_;
+    factory_ = NULL;
+  }
+
+  // Runs a death test that breaks the rules by returning.  Such a death
+  // test cannot be run directly from a test routine that uses a
+  // MockDeathTest, or the remainder of the routine will not be executed.
+  static void RunReturningDeathTest(bool* flag) {
+    ASSERT_DEATH({  // NOLINT
+      *flag = true;
+      return;
+    }, "");
+  }
+};
+
+testing::internal::ReplaceDeathTestFactory* MacroLogicDeathTest::replacer_
+    = NULL;
+MockDeathTestFactory* MacroLogicDeathTest::factory_ = NULL;
+
+
+// Test that nothing happens when the factory doesn't return a DeathTest:
+TEST_F(MacroLogicDeathTest, NothingHappens) {
+  bool flag = false;
+  factory_->SetParameters(false, DeathTest::OVERSEE_TEST, 0, true);
+  EXPECT_DEATH(flag = true, "");
+  EXPECT_FALSE(flag);
+  EXPECT_EQ(0, factory_->AssumeRoleCalls());
+  EXPECT_EQ(0, factory_->WaitCalls());
+  EXPECT_EQ(0, factory_->PassedCalls());
+  EXPECT_EQ(0, factory_->AbortCalls());
+  EXPECT_FALSE(factory_->TestDeleted());
+}
+
+// Test that the parent process doesn't run the death test code,
+// and that the Passed method returns false when the (simulated)
+// child process exits with status 0:
+TEST_F(MacroLogicDeathTest, ChildExitsSuccessfully) {
+  bool flag = false;
+  factory_->SetParameters(true, DeathTest::OVERSEE_TEST, 0, true);
+  EXPECT_DEATH(flag = true, "");
+  EXPECT_FALSE(flag);
+  EXPECT_EQ(1, factory_->AssumeRoleCalls());
+  EXPECT_EQ(1, factory_->WaitCalls());
+  ASSERT_EQ(1, factory_->PassedCalls());
+  EXPECT_FALSE(factory_->PassedArgument(0));
+  EXPECT_EQ(0, factory_->AbortCalls());
+  EXPECT_TRUE(factory_->TestDeleted());
+}
+
+// Tests that the Passed method was given the argument "true" when
+// the (simulated) child process exits with status 1:
+TEST_F(MacroLogicDeathTest, ChildExitsUnsuccessfully) {
+  bool flag = false;
+  factory_->SetParameters(true, DeathTest::OVERSEE_TEST, 1, true);
+  EXPECT_DEATH(flag = true, "");
+  EXPECT_FALSE(flag);
+  EXPECT_EQ(1, factory_->AssumeRoleCalls());
+  EXPECT_EQ(1, factory_->WaitCalls());
+  ASSERT_EQ(1, factory_->PassedCalls());
+  EXPECT_TRUE(factory_->PassedArgument(0));
+  EXPECT_EQ(0, factory_->AbortCalls());
+  EXPECT_TRUE(factory_->TestDeleted());
+}
+
+// Tests that the (simulated) child process executes the death test
+// code, and is aborted with the correct AbortReason if it
+// executes a return statement.
+TEST_F(MacroLogicDeathTest, ChildPerformsReturn) {
+  bool flag = false;
+  factory_->SetParameters(true, DeathTest::EXECUTE_TEST, 0, true);
+  RunReturningDeathTest(&flag);
+  EXPECT_TRUE(flag);
+  EXPECT_EQ(1, factory_->AssumeRoleCalls());
+  EXPECT_EQ(0, factory_->WaitCalls());
+  EXPECT_EQ(0, factory_->PassedCalls());
+  EXPECT_EQ(1, factory_->AbortCalls());
+  EXPECT_EQ(DeathTest::TEST_ENCOUNTERED_RETURN_STATEMENT,
+            factory_->AbortArgument(0));
+  EXPECT_TRUE(factory_->TestDeleted());
+}
+
+// Tests that the (simulated) child process is aborted with the
+// correct AbortReason if it does not die.
+TEST_F(MacroLogicDeathTest, ChildDoesNotDie) {
+  bool flag = false;
+  factory_->SetParameters(true, DeathTest::EXECUTE_TEST, 0, true);
+  EXPECT_DEATH(flag = true, "");
+  EXPECT_TRUE(flag);
+  EXPECT_EQ(1, factory_->AssumeRoleCalls());
+  EXPECT_EQ(0, factory_->WaitCalls());
+  EXPECT_EQ(0, factory_->PassedCalls());
+  // This time there are two calls to Abort: one since the test didn't
+  // die, and another from the ReturnSentinel when it's destroyed.  The
+  // sentinel normally isn't destroyed if a test doesn't die, since
+  // _exit(2) is called in that case by ForkingDeathTest, but not by
+  // our MockDeathTest.
+  ASSERT_EQ(2, factory_->AbortCalls());
+  EXPECT_EQ(DeathTest::TEST_DID_NOT_DIE,
+            factory_->AbortArgument(0));
+  EXPECT_EQ(DeathTest::TEST_ENCOUNTERED_RETURN_STATEMENT,
+            factory_->AbortArgument(1));
+  EXPECT_TRUE(factory_->TestDeleted());
+}
+
+// Tests that a successful death test does not register a successful
+// test part.
+TEST(SuccessRegistrationDeathTest, NoSuccessPart) {
+  EXPECT_DEATH(_exit(1), "");
+  EXPECT_EQ(0, GetUnitTestImpl()->current_test_result()->total_part_count());
+}
+
+TEST(StreamingAssertionsDeathTest, DeathTest) {
+  EXPECT_DEATH(_exit(1), "") << "unexpected failure";
+  ASSERT_DEATH(_exit(1), "") << "unexpected failure";
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_DEATH(_exit(0), "") << "expected failure";
+  }, "expected failure");
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_DEATH(_exit(0), "") << "expected failure";
+  }, "expected failure");
+}
+
+// Tests that GetLastErrnoDescription returns an empty string when the
+// last error is 0 and non-empty string when it is non-zero.
+TEST(GetLastErrnoDescription, GetLastErrnoDescriptionWorks) {
+  errno = ENOENT;
+  EXPECT_STRNE("", GetLastErrnoDescription().c_str());
+  errno = 0;
+  EXPECT_STREQ("", GetLastErrnoDescription().c_str());
+}
+
+# if GTEST_OS_WINDOWS
+TEST(AutoHandleTest, AutoHandleWorks) {
+  HANDLE handle = ::CreateEvent(NULL, FALSE, FALSE, NULL);
+  ASSERT_NE(INVALID_HANDLE_VALUE, handle);
+
+  // Tests that the AutoHandle is correctly initialized with a handle.
+  testing::internal::AutoHandle auto_handle(handle);
+  EXPECT_EQ(handle, auto_handle.Get());
+
+  // Tests that Reset assigns INVALID_HANDLE_VALUE.
+  // Note that this cannot verify whether the original handle is closed.
+  auto_handle.Reset();
+  EXPECT_EQ(INVALID_HANDLE_VALUE, auto_handle.Get());
+
+  // Tests that Reset assigns the new handle.
+  // Note that this cannot verify whether the original handle is closed.
+  handle = ::CreateEvent(NULL, FALSE, FALSE, NULL);
+  ASSERT_NE(INVALID_HANDLE_VALUE, handle);
+  auto_handle.Reset(handle);
+  EXPECT_EQ(handle, auto_handle.Get());
+
+  // Tests that AutoHandle contains INVALID_HANDLE_VALUE by default.
+  testing::internal::AutoHandle auto_handle2;
+  EXPECT_EQ(INVALID_HANDLE_VALUE, auto_handle2.Get());
+}
+# endif  // GTEST_OS_WINDOWS
+
+# if GTEST_OS_WINDOWS
+typedef unsigned __int64 BiggestParsable;
+typedef signed __int64 BiggestSignedParsable;
+const BiggestParsable kBiggestParsableMax = ULLONG_MAX;
+const BiggestSignedParsable kBiggestSignedParsableMax = LLONG_MAX;
+# else
+typedef unsigned long long BiggestParsable;
+typedef signed long long BiggestSignedParsable;
+const BiggestParsable kBiggestParsableMax =
+    ::std::numeric_limits<BiggestParsable>::max();
+const BiggestSignedParsable kBiggestSignedParsableMax =
+    ::std::numeric_limits<BiggestSignedParsable>::max();
+# endif  // GTEST_OS_WINDOWS
+
+TEST(ParseNaturalNumberTest, RejectsInvalidFormat) {
+  BiggestParsable result = 0;
+
+  // Rejects non-numbers.
+  EXPECT_FALSE(ParseNaturalNumber(String("non-number string"), &result));
+
+  // Rejects numbers with whitespace prefix.
+  EXPECT_FALSE(ParseNaturalNumber(String(" 123"), &result));
+
+  // Rejects negative numbers.
+  EXPECT_FALSE(ParseNaturalNumber(String("-123"), &result));
+
+  // Rejects numbers starting with a plus sign.
+  EXPECT_FALSE(ParseNaturalNumber(String("+123"), &result));
+  errno = 0;
+}
+
+TEST(ParseNaturalNumberTest, RejectsOverflownNumbers) {
+  BiggestParsable result = 0;
+
+  EXPECT_FALSE(ParseNaturalNumber(String("99999999999999999999999"), &result));
+
+  signed char char_result = 0;
+  EXPECT_FALSE(ParseNaturalNumber(String("200"), &char_result));
+  errno = 0;
+}
+
+TEST(ParseNaturalNumberTest, AcceptsValidNumbers) {
+  BiggestParsable result = 0;
+
+  result = 0;
+  ASSERT_TRUE(ParseNaturalNumber(String("123"), &result));
+  EXPECT_EQ(123U, result);
+
+  // Check 0 as an edge case.
+  result = 1;
+  ASSERT_TRUE(ParseNaturalNumber(String("0"), &result));
+  EXPECT_EQ(0U, result);
+
+  result = 1;
+  ASSERT_TRUE(ParseNaturalNumber(String("00000"), &result));
+  EXPECT_EQ(0U, result);
+}
+
+TEST(ParseNaturalNumberTest, AcceptsTypeLimits) {
+  Message msg;
+  msg << kBiggestParsableMax;
+
+  BiggestParsable result = 0;
+  EXPECT_TRUE(ParseNaturalNumber(msg.GetString(), &result));
+  EXPECT_EQ(kBiggestParsableMax, result);
+
+  Message msg2;
+  msg2 << kBiggestSignedParsableMax;
+
+  BiggestSignedParsable signed_result = 0;
+  EXPECT_TRUE(ParseNaturalNumber(msg2.GetString(), &signed_result));
+  EXPECT_EQ(kBiggestSignedParsableMax, signed_result);
+
+  Message msg3;
+  msg3 << INT_MAX;
+
+  int int_result = 0;
+  EXPECT_TRUE(ParseNaturalNumber(msg3.GetString(), &int_result));
+  EXPECT_EQ(INT_MAX, int_result);
+
+  Message msg4;
+  msg4 << UINT_MAX;
+
+  unsigned int uint_result = 0;
+  EXPECT_TRUE(ParseNaturalNumber(msg4.GetString(), &uint_result));
+  EXPECT_EQ(UINT_MAX, uint_result);
+}
+
+TEST(ParseNaturalNumberTest, WorksForShorterIntegers) {
+  short short_result = 0;
+  ASSERT_TRUE(ParseNaturalNumber(String("123"), &short_result));
+  EXPECT_EQ(123, short_result);
+
+  signed char char_result = 0;
+  ASSERT_TRUE(ParseNaturalNumber(String("123"), &char_result));
+  EXPECT_EQ(123, char_result);
+}
+
+# if GTEST_OS_WINDOWS
+TEST(EnvironmentTest, HandleFitsIntoSizeT) {
+  // TODO(vladl@google.com): Remove this test after this condition is verified
+  // in a static assertion in gtest-death-test.cc in the function
+  // GetStatusFileDescriptor.
+  ASSERT_TRUE(sizeof(HANDLE) <= sizeof(size_t));
+}
+# endif  // GTEST_OS_WINDOWS
+
+// Tests that EXPECT_DEATH_IF_SUPPORTED/ASSERT_DEATH_IF_SUPPORTED trigger
+// failures when death tests are available on the system.
+TEST(ConditionalDeathMacrosDeathTest, ExpectsDeathWhenDeathTestsAvailable) {
+  EXPECT_DEATH_IF_SUPPORTED(DieInside("CondDeathTestExpectMacro"),
+                            "death inside CondDeathTestExpectMacro");
+  ASSERT_DEATH_IF_SUPPORTED(DieInside("CondDeathTestAssertMacro"),
+                            "death inside CondDeathTestAssertMacro");
+
+  // Empty statement will not crash, which must trigger a failure.
+  EXPECT_NONFATAL_FAILURE(EXPECT_DEATH_IF_SUPPORTED(;, ""), "");
+  EXPECT_FATAL_FAILURE(ASSERT_DEATH_IF_SUPPORTED(;, ""), "");
+}
+
+#else
+
+using testing::internal::CaptureStderr;
+using testing::internal::GetCapturedStderr;
+using testing::internal::String;
+
+// Tests that EXPECT_DEATH_IF_SUPPORTED/ASSERT_DEATH_IF_SUPPORTED are still
+// defined but do not trigger failures when death tests are not available on
+// the system.
+TEST(ConditionalDeathMacrosTest, WarnsWhenDeathTestsNotAvailable) {
+  // Empty statement will not crash, but that should not trigger a failure
+  // when death tests are not supported.
+  CaptureStderr();
+  EXPECT_DEATH_IF_SUPPORTED(;, "");
+  String output = GetCapturedStderr();
+  ASSERT_TRUE(NULL != strstr(output.c_str(),
+                             "Death tests are not supported on this platform"));
+  ASSERT_TRUE(NULL != strstr(output.c_str(), ";"));
+
+  // The streamed message should not be printed as there is no test failure.
+  CaptureStderr();
+  EXPECT_DEATH_IF_SUPPORTED(;, "") << "streamed message";
+  output = GetCapturedStderr();
+  ASSERT_TRUE(NULL == strstr(output.c_str(), "streamed message"));
+
+  CaptureStderr();
+  ASSERT_DEATH_IF_SUPPORTED(;, "");  // NOLINT
+  output = GetCapturedStderr();
+  ASSERT_TRUE(NULL != strstr(output.c_str(),
+                             "Death tests are not supported on this platform"));
+  ASSERT_TRUE(NULL != strstr(output.c_str(), ";"));
+
+  CaptureStderr();
+  ASSERT_DEATH_IF_SUPPORTED(;, "") << "streamed message";  // NOLINT
+  output = GetCapturedStderr();
+  ASSERT_TRUE(NULL == strstr(output.c_str(), "streamed message"));
+}
+
+void FuncWithAssert(int* n) {
+  ASSERT_DEATH_IF_SUPPORTED(return;, "");
+  (*n)++;
+}
+
+// Tests that ASSERT_DEATH_IF_SUPPORTED does not return from the current
+// function (as ASSERT_DEATH does) if death tests are not supported.
+TEST(ConditionalDeathMacrosTest, AssertDeatDoesNotReturnhIfUnsupported) {
+  int n = 0;
+  FuncWithAssert(&n);
+  EXPECT_EQ(1, n);
+}
+#endif  // GTEST_HAS_DEATH_TEST
+
+// Tests that the death test macros expand to code which may or may not
+// be followed by operator<<, and that in either case the complete text
+// comprises only a single C++ statement.
+//
+// The syntax should work whether death tests are available or not.
+TEST(ConditionalDeathMacrosSyntaxDeathTest, SingleStatement) {
+  if (AlwaysFalse())
+    // This would fail if executed; this is a compilation test only
+    ASSERT_DEATH_IF_SUPPORTED(return, "");
+
+  if (AlwaysTrue())
+    EXPECT_DEATH_IF_SUPPORTED(_exit(1), "");
+  else
+    // This empty "else" branch is meant to ensure that EXPECT_DEATH
+    // doesn't expand into an "if" statement without an "else"
+    ;  // NOLINT
+
+  if (AlwaysFalse())
+    ASSERT_DEATH_IF_SUPPORTED(return, "") << "did not die";
+
+  if (AlwaysFalse())
+    ;  // NOLINT
+  else
+    EXPECT_DEATH_IF_SUPPORTED(_exit(1), "") << 1 << 2 << 3;
+}
+
+// Tests that conditional death test macros expand to code which interacts
+// well with switch statements.
+TEST(ConditionalDeathMacrosSyntaxDeathTest, SwitchStatement) {
+// Microsoft compiler usually complains about switch statements without
+// case labels. We suppress that warning for this test.
+#ifdef _MSC_VER
+# pragma warning(push)
+# pragma warning(disable: 4065)
+#endif  // _MSC_VER
+
+  switch (0)
+    default:
+      ASSERT_DEATH_IF_SUPPORTED(_exit(1), "")
+          << "exit in default switch handler";
+
+  switch (0)
+    case 0:
+      EXPECT_DEATH_IF_SUPPORTED(_exit(1), "") << "exit in switch case";
+
+#ifdef _MSC_VER
+# pragma warning(pop)
+#endif  // _MSC_VER
+}
+
+TEST(InDeathTestChildDeathTest, ReportsDeathTestCorrectlyInFastStyle) {
+  testing::GTEST_FLAG(death_test_style) = "fast";
+  EXPECT_FALSE(InDeathTestChild());
+  EXPECT_DEATH({
+    fprintf(stderr, InDeathTestChild() ? "Inside" : "Outside");
+    fflush(stderr);
+    _exit(1);
+  }, "Inside");
+}
+
+TEST(InDeathTestChildDeathTest, ReportsDeathTestCorrectlyInThreadSafeStyle) {
+  testing::GTEST_FLAG(death_test_style) = "threadsafe";
+  EXPECT_FALSE(InDeathTestChild());
+  EXPECT_DEATH({
+    fprintf(stderr, InDeathTestChild() ? "Inside" : "Outside");
+    fflush(stderr);
+    _exit(1);
+  }, "Inside");
+}
+
+// Tests that a test case whose name ends with "DeathTest" works fine
+// on Windows.
+TEST(NotADeathTest, Test) {
+  SUCCEED();
+}
diff --git a/google-breakpad/src/testing/gtest/test/gtest-filepath_test.cc b/google-breakpad/src/testing/gtest/test/gtest-filepath_test.cc
new file mode 100644
index 0000000..66d4118
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest-filepath_test.cc
@@ -0,0 +1,696 @@
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Authors: keith.ray@gmail.com (Keith Ray)
+//
+// Google Test filepath utilities
+//
+// This file tests classes and functions used internally by
+// Google Test.  They are subject to change without notice.
+//
+// This file is #included from gtest_unittest.cc, to avoid changing
+// build or make-files for some existing Google Test clients. Do not
+// #include this file anywhere else!
+
+#include "gtest/internal/gtest-filepath.h"
+#include "gtest/gtest.h"
+
+// Indicates that this translation unit is part of Google Test's
+// implementation.  It must come before gtest-internal-inl.h is
+// included, or there will be a compiler error.  This trick is to
+// prevent a user from accidentally including gtest-internal-inl.h in
+// his code.
+#define GTEST_IMPLEMENTATION_ 1
+#include "src/gtest-internal-inl.h"
+#undef GTEST_IMPLEMENTATION_
+
+#if GTEST_OS_WINDOWS_MOBILE
+# include <windows.h>  // NOLINT
+#elif GTEST_OS_WINDOWS
+# include <direct.h>  // NOLINT
+#endif  // GTEST_OS_WINDOWS_MOBILE
+
+namespace testing {
+namespace internal {
+namespace {
+
+#if GTEST_OS_WINDOWS_MOBILE
+// TODO(wan@google.com): Move these to the POSIX adapter section in
+// gtest-port.h.
+
+// Windows CE doesn't have the remove C function.
+int remove(const char* path) {
+  LPCWSTR wpath = String::AnsiToUtf16(path);
+  int ret = DeleteFile(wpath) ? 0 : -1;
+  delete [] wpath;
+  return ret;
+}
+// Windows CE doesn't have the _rmdir C function.
+int _rmdir(const char* path) {
+  FilePath filepath(path);
+  LPCWSTR wpath = String::AnsiToUtf16(
+      filepath.RemoveTrailingPathSeparator().c_str());
+  int ret = RemoveDirectory(wpath) ? 0 : -1;
+  delete [] wpath;
+  return ret;
+}
+
+#else
+
+TEST(GetCurrentDirTest, ReturnsCurrentDir) {
+  const FilePath original_dir = FilePath::GetCurrentDir();
+  EXPECT_FALSE(original_dir.IsEmpty());
+
+  posix::ChDir(GTEST_PATH_SEP_);
+  const FilePath cwd = FilePath::GetCurrentDir();
+  posix::ChDir(original_dir.c_str());
+
+# if GTEST_OS_WINDOWS
+
+  // Skips the ":".
+  const char* const cwd_without_drive = strchr(cwd.c_str(), ':');
+  ASSERT_TRUE(cwd_without_drive != NULL);
+  EXPECT_STREQ(GTEST_PATH_SEP_, cwd_without_drive + 1);
+
+# else
+
+  EXPECT_STREQ(GTEST_PATH_SEP_, cwd.c_str());
+
+# endif
+}
+
+#endif  // GTEST_OS_WINDOWS_MOBILE
+
+TEST(IsEmptyTest, ReturnsTrueForEmptyPath) {
+  EXPECT_TRUE(FilePath("").IsEmpty());
+  EXPECT_TRUE(FilePath(NULL).IsEmpty());
+}
+
+TEST(IsEmptyTest, ReturnsFalseForNonEmptyPath) {
+  EXPECT_FALSE(FilePath("a").IsEmpty());
+  EXPECT_FALSE(FilePath(".").IsEmpty());
+  EXPECT_FALSE(FilePath("a/b").IsEmpty());
+  EXPECT_FALSE(FilePath("a\\b\\").IsEmpty());
+}
+
+// RemoveDirectoryName "" -> ""
+TEST(RemoveDirectoryNameTest, WhenEmptyName) {
+  EXPECT_STREQ("", FilePath("").RemoveDirectoryName().c_str());
+}
+
+// RemoveDirectoryName "afile" -> "afile"
+TEST(RemoveDirectoryNameTest, ButNoDirectory) {
+  EXPECT_STREQ("afile",
+      FilePath("afile").RemoveDirectoryName().c_str());
+}
+
+// RemoveDirectoryName "/afile" -> "afile"
+TEST(RemoveDirectoryNameTest, RootFileShouldGiveFileName) {
+  EXPECT_STREQ("afile",
+      FilePath(GTEST_PATH_SEP_ "afile").RemoveDirectoryName().c_str());
+}
+
+// RemoveDirectoryName "adir/" -> ""
+TEST(RemoveDirectoryNameTest, WhereThereIsNoFileName) {
+  EXPECT_STREQ("",
+      FilePath("adir" GTEST_PATH_SEP_).RemoveDirectoryName().c_str());
+}
+
+// RemoveDirectoryName "adir/afile" -> "afile"
+TEST(RemoveDirectoryNameTest, ShouldGiveFileName) {
+  EXPECT_STREQ("afile",
+      FilePath("adir" GTEST_PATH_SEP_ "afile").RemoveDirectoryName().c_str());
+}
+
+// RemoveDirectoryName "adir/subdir/afile" -> "afile"
+TEST(RemoveDirectoryNameTest, ShouldAlsoGiveFileName) {
+  EXPECT_STREQ("afile",
+      FilePath("adir" GTEST_PATH_SEP_ "subdir" GTEST_PATH_SEP_ "afile")
+      .RemoveDirectoryName().c_str());
+}
+
+#if GTEST_HAS_ALT_PATH_SEP_
+
+// Tests that RemoveDirectoryName() works with the alternate separator
+// on Windows.
+
+// RemoveDirectoryName("/afile") -> "afile"
+TEST(RemoveDirectoryNameTest, RootFileShouldGiveFileNameForAlternateSeparator) {
+  EXPECT_STREQ("afile",
+               FilePath("/afile").RemoveDirectoryName().c_str());
+}
+
+// RemoveDirectoryName("adir/") -> ""
+TEST(RemoveDirectoryNameTest, WhereThereIsNoFileNameForAlternateSeparator) {
+  EXPECT_STREQ("",
+               FilePath("adir/").RemoveDirectoryName().c_str());
+}
+
+// RemoveDirectoryName("adir/afile") -> "afile"
+TEST(RemoveDirectoryNameTest, ShouldGiveFileNameForAlternateSeparator) {
+  EXPECT_STREQ("afile",
+               FilePath("adir/afile").RemoveDirectoryName().c_str());
+}
+
+// RemoveDirectoryName("adir/subdir/afile") -> "afile"
+TEST(RemoveDirectoryNameTest, ShouldAlsoGiveFileNameForAlternateSeparator) {
+  EXPECT_STREQ("afile",
+               FilePath("adir/subdir/afile").RemoveDirectoryName().c_str());
+}
+
+#endif
+
+// RemoveFileName "" -> "./"
+TEST(RemoveFileNameTest, EmptyName) {
+#if GTEST_OS_WINDOWS_MOBILE
+  // On Windows CE, we use the root as the current directory.
+  EXPECT_STREQ(GTEST_PATH_SEP_,
+      FilePath("").RemoveFileName().c_str());
+#else
+  EXPECT_STREQ("." GTEST_PATH_SEP_,
+      FilePath("").RemoveFileName().c_str());
+#endif
+}
+
+// RemoveFileName "adir/" -> "adir/"
+TEST(RemoveFileNameTest, ButNoFile) {
+  EXPECT_STREQ("adir" GTEST_PATH_SEP_,
+      FilePath("adir" GTEST_PATH_SEP_).RemoveFileName().c_str());
+}
+
+// RemoveFileName "adir/afile" -> "adir/"
+TEST(RemoveFileNameTest, GivesDirName) {
+  EXPECT_STREQ("adir" GTEST_PATH_SEP_,
+      FilePath("adir" GTEST_PATH_SEP_ "afile")
+      .RemoveFileName().c_str());
+}
+
+// RemoveFileName "adir/subdir/afile" -> "adir/subdir/"
+TEST(RemoveFileNameTest, GivesDirAndSubDirName) {
+  EXPECT_STREQ("adir" GTEST_PATH_SEP_ "subdir" GTEST_PATH_SEP_,
+      FilePath("adir" GTEST_PATH_SEP_ "subdir" GTEST_PATH_SEP_ "afile")
+      .RemoveFileName().c_str());
+}
+
+// RemoveFileName "/afile" -> "/"
+TEST(RemoveFileNameTest, GivesRootDir) {
+  EXPECT_STREQ(GTEST_PATH_SEP_,
+      FilePath(GTEST_PATH_SEP_ "afile").RemoveFileName().c_str());
+}
+
+#if GTEST_HAS_ALT_PATH_SEP_
+
+// Tests that RemoveFileName() works with the alternate separator on
+// Windows.
+
+// RemoveFileName("adir/") -> "adir/"
+TEST(RemoveFileNameTest, ButNoFileForAlternateSeparator) {
+  EXPECT_STREQ("adir" GTEST_PATH_SEP_,
+               FilePath("adir/").RemoveFileName().c_str());
+}
+
+// RemoveFileName("adir/afile") -> "adir/"
+TEST(RemoveFileNameTest, GivesDirNameForAlternateSeparator) {
+  EXPECT_STREQ("adir" GTEST_PATH_SEP_,
+               FilePath("adir/afile").RemoveFileName().c_str());
+}
+
+// RemoveFileName("adir/subdir/afile") -> "adir/subdir/"
+TEST(RemoveFileNameTest, GivesDirAndSubDirNameForAlternateSeparator) {
+  EXPECT_STREQ("adir" GTEST_PATH_SEP_ "subdir" GTEST_PATH_SEP_,
+               FilePath("adir/subdir/afile").RemoveFileName().c_str());
+}
+
+// RemoveFileName("/afile") -> "\"
+TEST(RemoveFileNameTest, GivesRootDirForAlternateSeparator) {
+  EXPECT_STREQ(GTEST_PATH_SEP_,
+               FilePath("/afile").RemoveFileName().c_str());
+}
+
+#endif
+
+TEST(MakeFileNameTest, GenerateWhenNumberIsZero) {
+  FilePath actual = FilePath::MakeFileName(FilePath("foo"), FilePath("bar"),
+      0, "xml");
+  EXPECT_STREQ("foo" GTEST_PATH_SEP_ "bar.xml", actual.c_str());
+}
+
+TEST(MakeFileNameTest, GenerateFileNameNumberGtZero) {
+  FilePath actual = FilePath::MakeFileName(FilePath("foo"), FilePath("bar"),
+      12, "xml");
+  EXPECT_STREQ("foo" GTEST_PATH_SEP_ "bar_12.xml", actual.c_str());
+}
+
+TEST(MakeFileNameTest, GenerateFileNameWithSlashNumberIsZero) {
+  FilePath actual = FilePath::MakeFileName(FilePath("foo" GTEST_PATH_SEP_),
+      FilePath("bar"), 0, "xml");
+  EXPECT_STREQ("foo" GTEST_PATH_SEP_ "bar.xml", actual.c_str());
+}
+
+TEST(MakeFileNameTest, GenerateFileNameWithSlashNumberGtZero) {
+  FilePath actual = FilePath::MakeFileName(FilePath("foo" GTEST_PATH_SEP_),
+      FilePath("bar"), 12, "xml");
+  EXPECT_STREQ("foo" GTEST_PATH_SEP_ "bar_12.xml", actual.c_str());
+}
+
+TEST(MakeFileNameTest, GenerateWhenNumberIsZeroAndDirIsEmpty) {
+  FilePath actual = FilePath::MakeFileName(FilePath(""), FilePath("bar"),
+      0, "xml");
+  EXPECT_STREQ("bar.xml", actual.c_str());
+}
+
+TEST(MakeFileNameTest, GenerateWhenNumberIsNotZeroAndDirIsEmpty) {
+  FilePath actual = FilePath::MakeFileName(FilePath(""), FilePath("bar"),
+      14, "xml");
+  EXPECT_STREQ("bar_14.xml", actual.c_str());
+}
+
+TEST(ConcatPathsTest, WorksWhenDirDoesNotEndWithPathSep) {
+  FilePath actual = FilePath::ConcatPaths(FilePath("foo"),
+                                          FilePath("bar.xml"));
+  EXPECT_STREQ("foo" GTEST_PATH_SEP_ "bar.xml", actual.c_str());
+}
+
+TEST(ConcatPathsTest, WorksWhenPath1EndsWithPathSep) {
+  FilePath actual = FilePath::ConcatPaths(FilePath("foo" GTEST_PATH_SEP_),
+                                          FilePath("bar.xml"));
+  EXPECT_STREQ("foo" GTEST_PATH_SEP_ "bar.xml", actual.c_str());
+}
+
+TEST(ConcatPathsTest, Path1BeingEmpty) {
+  FilePath actual = FilePath::ConcatPaths(FilePath(""),
+                                          FilePath("bar.xml"));
+  EXPECT_STREQ("bar.xml", actual.c_str());
+}
+
+TEST(ConcatPathsTest, Path2BeingEmpty) {
+  FilePath actual = FilePath::ConcatPaths(FilePath("foo"),
+                                          FilePath(""));
+  EXPECT_STREQ("foo" GTEST_PATH_SEP_, actual.c_str());
+}
+
+TEST(ConcatPathsTest, BothPathBeingEmpty) {
+  FilePath actual = FilePath::ConcatPaths(FilePath(""),
+                                          FilePath(""));
+  EXPECT_STREQ("", actual.c_str());
+}
+
+TEST(ConcatPathsTest, Path1ContainsPathSep) {
+  FilePath actual = FilePath::ConcatPaths(FilePath("foo" GTEST_PATH_SEP_ "bar"),
+                                          FilePath("foobar.xml"));
+  EXPECT_STREQ("foo" GTEST_PATH_SEP_ "bar" GTEST_PATH_SEP_ "foobar.xml",
+               actual.c_str());
+}
+
+TEST(ConcatPathsTest, Path2ContainsPathSep) {
+  FilePath actual = FilePath::ConcatPaths(
+      FilePath("foo" GTEST_PATH_SEP_),
+      FilePath("bar" GTEST_PATH_SEP_ "bar.xml"));
+  EXPECT_STREQ("foo" GTEST_PATH_SEP_ "bar" GTEST_PATH_SEP_ "bar.xml",
+               actual.c_str());
+}
+
+TEST(ConcatPathsTest, Path2EndsWithPathSep) {
+  FilePath actual = FilePath::ConcatPaths(FilePath("foo"),
+                                          FilePath("bar" GTEST_PATH_SEP_));
+  EXPECT_STREQ("foo" GTEST_PATH_SEP_ "bar" GTEST_PATH_SEP_, actual.c_str());
+}
+
+// RemoveTrailingPathSeparator "" -> ""
+TEST(RemoveTrailingPathSeparatorTest, EmptyString) {
+  EXPECT_STREQ("",
+      FilePath("").RemoveTrailingPathSeparator().c_str());
+}
+
+// RemoveTrailingPathSeparator "foo" -> "foo"
+TEST(RemoveTrailingPathSeparatorTest, FileNoSlashString) {
+  EXPECT_STREQ("foo",
+      FilePath("foo").RemoveTrailingPathSeparator().c_str());
+}
+
+// RemoveTrailingPathSeparator "foo/" -> "foo"
+TEST(RemoveTrailingPathSeparatorTest, ShouldRemoveTrailingSeparator) {
+  EXPECT_STREQ(
+      "foo",
+      FilePath("foo" GTEST_PATH_SEP_).RemoveTrailingPathSeparator().c_str());
+#if GTEST_HAS_ALT_PATH_SEP_
+  EXPECT_STREQ("foo",
+               FilePath("foo/").RemoveTrailingPathSeparator().c_str());
+#endif
+}
+
+// RemoveTrailingPathSeparator "foo/bar/" -> "foo/bar/"
+TEST(RemoveTrailingPathSeparatorTest, ShouldRemoveLastSeparator) {
+  EXPECT_STREQ("foo" GTEST_PATH_SEP_ "bar",
+               FilePath("foo" GTEST_PATH_SEP_ "bar" GTEST_PATH_SEP_)
+               .RemoveTrailingPathSeparator().c_str());
+}
+
+// RemoveTrailingPathSeparator "foo/bar" -> "foo/bar"
+TEST(RemoveTrailingPathSeparatorTest, ShouldReturnUnmodified) {
+  EXPECT_STREQ("foo" GTEST_PATH_SEP_ "bar",
+               FilePath("foo" GTEST_PATH_SEP_ "bar")
+               .RemoveTrailingPathSeparator().c_str());
+}
+
+TEST(DirectoryTest, RootDirectoryExists) {
+#if GTEST_OS_WINDOWS  // We are on Windows.
+  char current_drive[_MAX_PATH];  // NOLINT
+  current_drive[0] = static_cast<char>(_getdrive() + 'A' - 1);
+  current_drive[1] = ':';
+  current_drive[2] = '\\';
+  current_drive[3] = '\0';
+  EXPECT_TRUE(FilePath(current_drive).DirectoryExists());
+#else
+  EXPECT_TRUE(FilePath("/").DirectoryExists());
+#endif  // GTEST_OS_WINDOWS
+}
+
+#if GTEST_OS_WINDOWS
+TEST(DirectoryTest, RootOfWrongDriveDoesNotExists) {
+  const int saved_drive_ = _getdrive();
+  // Find a drive that doesn't exist. Start with 'Z' to avoid common ones.
+  for (char drive = 'Z'; drive >= 'A'; drive--)
+    if (_chdrive(drive - 'A' + 1) == -1) {
+      char non_drive[_MAX_PATH];  // NOLINT
+      non_drive[0] = drive;
+      non_drive[1] = ':';
+      non_drive[2] = '\\';
+      non_drive[3] = '\0';
+      EXPECT_FALSE(FilePath(non_drive).DirectoryExists());
+      break;
+    }
+  _chdrive(saved_drive_);
+}
+#endif  // GTEST_OS_WINDOWS
+
+#if !GTEST_OS_WINDOWS_MOBILE
+// Windows CE _does_ consider an empty directory to exist.
+TEST(DirectoryTest, EmptyPathDirectoryDoesNotExist) {
+  EXPECT_FALSE(FilePath("").DirectoryExists());
+}
+#endif  // !GTEST_OS_WINDOWS_MOBILE
+
+TEST(DirectoryTest, CurrentDirectoryExists) {
+#if GTEST_OS_WINDOWS  // We are on Windows.
+# ifndef _WIN32_CE  // Windows CE doesn't have a current directory.
+
+  EXPECT_TRUE(FilePath(".").DirectoryExists());
+  EXPECT_TRUE(FilePath(".\\").DirectoryExists());
+
+# endif  // _WIN32_CE
+#else
+  EXPECT_TRUE(FilePath(".").DirectoryExists());
+  EXPECT_TRUE(FilePath("./").DirectoryExists());
+#endif  // GTEST_OS_WINDOWS
+}
+
+TEST(NormalizeTest, NullStringsEqualEmptyDirectory) {
+  EXPECT_STREQ("", FilePath(NULL).c_str());
+  EXPECT_STREQ("", FilePath(String(NULL)).c_str());
+}
+
+// "foo/bar" == foo//bar" == "foo///bar"
+TEST(NormalizeTest, MultipleConsecutiveSepaparatorsInMidstring) {
+  EXPECT_STREQ("foo" GTEST_PATH_SEP_ "bar",
+               FilePath("foo" GTEST_PATH_SEP_ "bar").c_str());
+  EXPECT_STREQ("foo" GTEST_PATH_SEP_ "bar",
+               FilePath("foo" GTEST_PATH_SEP_ GTEST_PATH_SEP_ "bar").c_str());
+  EXPECT_STREQ("foo" GTEST_PATH_SEP_ "bar",
+               FilePath("foo" GTEST_PATH_SEP_ GTEST_PATH_SEP_
+                        GTEST_PATH_SEP_ "bar").c_str());
+}
+
+// "/bar" == //bar" == "///bar"
+TEST(NormalizeTest, MultipleConsecutiveSepaparatorsAtStringStart) {
+  EXPECT_STREQ(GTEST_PATH_SEP_ "bar",
+    FilePath(GTEST_PATH_SEP_ "bar").c_str());
+  EXPECT_STREQ(GTEST_PATH_SEP_ "bar",
+    FilePath(GTEST_PATH_SEP_ GTEST_PATH_SEP_ "bar").c_str());
+  EXPECT_STREQ(GTEST_PATH_SEP_ "bar",
+    FilePath(GTEST_PATH_SEP_ GTEST_PATH_SEP_ GTEST_PATH_SEP_ "bar").c_str());
+}
+
+// "foo/" == foo//" == "foo///"
+TEST(NormalizeTest, MultipleConsecutiveSepaparatorsAtStringEnd) {
+  EXPECT_STREQ("foo" GTEST_PATH_SEP_,
+    FilePath("foo" GTEST_PATH_SEP_).c_str());
+  EXPECT_STREQ("foo" GTEST_PATH_SEP_,
+    FilePath("foo" GTEST_PATH_SEP_ GTEST_PATH_SEP_).c_str());
+  EXPECT_STREQ("foo" GTEST_PATH_SEP_,
+    FilePath("foo" GTEST_PATH_SEP_ GTEST_PATH_SEP_ GTEST_PATH_SEP_).c_str());
+}
+
+#if GTEST_HAS_ALT_PATH_SEP_
+
+// Tests that separators at the end of the string are normalized
+// regardless of their combination (e.g. "foo\" =="foo/\" ==
+// "foo\\/").
+TEST(NormalizeTest, MixAlternateSeparatorAtStringEnd) {
+  EXPECT_STREQ("foo" GTEST_PATH_SEP_,
+               FilePath("foo/").c_str());
+  EXPECT_STREQ("foo" GTEST_PATH_SEP_,
+               FilePath("foo" GTEST_PATH_SEP_ "/").c_str());
+  EXPECT_STREQ("foo" GTEST_PATH_SEP_,
+               FilePath("foo//" GTEST_PATH_SEP_).c_str());
+}
+
+#endif
+
+TEST(AssignmentOperatorTest, DefaultAssignedToNonDefault) {
+  FilePath default_path;
+  FilePath non_default_path("path");
+  non_default_path = default_path;
+  EXPECT_STREQ("", non_default_path.c_str());
+  EXPECT_STREQ("", default_path.c_str());  // RHS var is unchanged.
+}
+
+TEST(AssignmentOperatorTest, NonDefaultAssignedToDefault) {
+  FilePath non_default_path("path");
+  FilePath default_path;
+  default_path = non_default_path;
+  EXPECT_STREQ("path", default_path.c_str());
+  EXPECT_STREQ("path", non_default_path.c_str());  // RHS var is unchanged.
+}
+
+TEST(AssignmentOperatorTest, ConstAssignedToNonConst) {
+  const FilePath const_default_path("const_path");
+  FilePath non_default_path("path");
+  non_default_path = const_default_path;
+  EXPECT_STREQ("const_path", non_default_path.c_str());
+}
+
+class DirectoryCreationTest : public Test {
+ protected:
+  virtual void SetUp() {
+    testdata_path_.Set(FilePath(String::Format("%s%s%s",
+        TempDir().c_str(), GetCurrentExecutableName().c_str(),
+        "_directory_creation" GTEST_PATH_SEP_ "test" GTEST_PATH_SEP_)));
+    testdata_file_.Set(testdata_path_.RemoveTrailingPathSeparator());
+
+    unique_file0_.Set(FilePath::MakeFileName(testdata_path_, FilePath("unique"),
+        0, "txt"));
+    unique_file1_.Set(FilePath::MakeFileName(testdata_path_, FilePath("unique"),
+        1, "txt"));
+
+    remove(testdata_file_.c_str());
+    remove(unique_file0_.c_str());
+    remove(unique_file1_.c_str());
+    posix::RmDir(testdata_path_.c_str());
+  }
+
+  virtual void TearDown() {
+    remove(testdata_file_.c_str());
+    remove(unique_file0_.c_str());
+    remove(unique_file1_.c_str());
+    posix::RmDir(testdata_path_.c_str());
+  }
+
+  String TempDir() const {
+#if GTEST_OS_WINDOWS_MOBILE
+    return String("\\temp\\");
+#elif GTEST_OS_WINDOWS
+    const char* temp_dir = posix::GetEnv("TEMP");
+    if (temp_dir == NULL || temp_dir[0] == '\0')
+      return String("\\temp\\");
+    else if (String(temp_dir).EndsWith("\\"))
+      return String(temp_dir);
+    else
+      return String::Format("%s\\", temp_dir);
+#else
+    return String("/tmp/");
+#endif  // GTEST_OS_WINDOWS_MOBILE
+  }
+
+  void CreateTextFile(const char* filename) {
+    FILE* f = posix::FOpen(filename, "w");
+    fprintf(f, "text\n");
+    fclose(f);
+  }
+
+  // Strings representing a directory and a file, with identical paths
+  // except for the trailing separator character that distinquishes
+  // a directory named 'test' from a file named 'test'. Example names:
+  FilePath testdata_path_;  // "/tmp/directory_creation/test/"
+  FilePath testdata_file_;  // "/tmp/directory_creation/test"
+  FilePath unique_file0_;  // "/tmp/directory_creation/test/unique.txt"
+  FilePath unique_file1_;  // "/tmp/directory_creation/test/unique_1.txt"
+};
+
+TEST_F(DirectoryCreationTest, CreateDirectoriesRecursively) {
+  EXPECT_FALSE(testdata_path_.DirectoryExists()) << testdata_path_.c_str();
+  EXPECT_TRUE(testdata_path_.CreateDirectoriesRecursively());
+  EXPECT_TRUE(testdata_path_.DirectoryExists());
+}
+
+TEST_F(DirectoryCreationTest, CreateDirectoriesForAlreadyExistingPath) {
+  EXPECT_FALSE(testdata_path_.DirectoryExists()) << testdata_path_.c_str();
+  EXPECT_TRUE(testdata_path_.CreateDirectoriesRecursively());
+  // Call 'create' again... should still succeed.
+  EXPECT_TRUE(testdata_path_.CreateDirectoriesRecursively());
+}
+
+TEST_F(DirectoryCreationTest, CreateDirectoriesAndUniqueFilename) {
+  FilePath file_path(FilePath::GenerateUniqueFileName(testdata_path_,
+      FilePath("unique"), "txt"));
+  EXPECT_STREQ(unique_file0_.c_str(), file_path.c_str());
+  EXPECT_FALSE(file_path.FileOrDirectoryExists());  // file not there
+
+  testdata_path_.CreateDirectoriesRecursively();
+  EXPECT_FALSE(file_path.FileOrDirectoryExists());  // file still not there
+  CreateTextFile(file_path.c_str());
+  EXPECT_TRUE(file_path.FileOrDirectoryExists());
+
+  FilePath file_path2(FilePath::GenerateUniqueFileName(testdata_path_,
+      FilePath("unique"), "txt"));
+  EXPECT_STREQ(unique_file1_.c_str(), file_path2.c_str());
+  EXPECT_FALSE(file_path2.FileOrDirectoryExists());  // file not there
+  CreateTextFile(file_path2.c_str());
+  EXPECT_TRUE(file_path2.FileOrDirectoryExists());
+}
+
+TEST_F(DirectoryCreationTest, CreateDirectoriesFail) {
+  // force a failure by putting a file where we will try to create a directory.
+  CreateTextFile(testdata_file_.c_str());
+  EXPECT_TRUE(testdata_file_.FileOrDirectoryExists());
+  EXPECT_FALSE(testdata_file_.DirectoryExists());
+  EXPECT_FALSE(testdata_file_.CreateDirectoriesRecursively());
+}
+
+TEST(NoDirectoryCreationTest, CreateNoDirectoriesForDefaultXmlFile) {
+  const FilePath test_detail_xml("test_detail.xml");
+  EXPECT_FALSE(test_detail_xml.CreateDirectoriesRecursively());
+}
+
+TEST(FilePathTest, DefaultConstructor) {
+  FilePath fp;
+  EXPECT_STREQ("", fp.c_str());
+}
+
+TEST(FilePathTest, CharAndCopyConstructors) {
+  const FilePath fp("spicy");
+  EXPECT_STREQ("spicy", fp.c_str());
+
+  const FilePath fp_copy(fp);
+  EXPECT_STREQ("spicy", fp_copy.c_str());
+}
+
+TEST(FilePathTest, StringConstructor) {
+  const FilePath fp(String("cider"));
+  EXPECT_STREQ("cider", fp.c_str());
+}
+
+TEST(FilePathTest, Set) {
+  const FilePath apple("apple");
+  FilePath mac("mac");
+  mac.Set(apple);  // Implement Set() since overloading operator= is forbidden.
+  EXPECT_STREQ("apple", mac.c_str());
+  EXPECT_STREQ("apple", apple.c_str());
+}
+
+TEST(FilePathTest, ToString) {
+  const FilePath file("drink");
+  String str(file.ToString());
+  EXPECT_STREQ("drink", str.c_str());
+}
+
+TEST(FilePathTest, RemoveExtension) {
+  EXPECT_STREQ("app", FilePath("app.exe").RemoveExtension("exe").c_str());
+  EXPECT_STREQ("APP", FilePath("APP.EXE").RemoveExtension("exe").c_str());
+}
+
+TEST(FilePathTest, RemoveExtensionWhenThereIsNoExtension) {
+  EXPECT_STREQ("app", FilePath("app").RemoveExtension("exe").c_str());
+}
+
+TEST(FilePathTest, IsDirectory) {
+  EXPECT_FALSE(FilePath("cola").IsDirectory());
+  EXPECT_TRUE(FilePath("koala" GTEST_PATH_SEP_).IsDirectory());
+#if GTEST_HAS_ALT_PATH_SEP_
+  EXPECT_TRUE(FilePath("koala/").IsDirectory());
+#endif
+}
+
+TEST(FilePathTest, IsAbsolutePath) {
+  EXPECT_FALSE(FilePath("is" GTEST_PATH_SEP_ "relative").IsAbsolutePath());
+  EXPECT_FALSE(FilePath("").IsAbsolutePath());
+#if GTEST_OS_WINDOWS
+  EXPECT_TRUE(FilePath("c:\\" GTEST_PATH_SEP_ "is_not"
+                       GTEST_PATH_SEP_ "relative").IsAbsolutePath());
+  EXPECT_FALSE(FilePath("c:foo" GTEST_PATH_SEP_ "bar").IsAbsolutePath());
+  EXPECT_TRUE(FilePath("c:/" GTEST_PATH_SEP_ "is_not"
+                       GTEST_PATH_SEP_ "relative").IsAbsolutePath());
+#else
+  EXPECT_TRUE(FilePath(GTEST_PATH_SEP_ "is_not" GTEST_PATH_SEP_ "relative")
+              .IsAbsolutePath());
+#endif  // GTEST_OS_WINDOWS
+}
+
+TEST(FilePathTest, IsRootDirectory) {
+#if GTEST_OS_WINDOWS
+  EXPECT_TRUE(FilePath("a:\\").IsRootDirectory());
+  EXPECT_TRUE(FilePath("Z:/").IsRootDirectory());
+  EXPECT_TRUE(FilePath("e://").IsRootDirectory());
+  EXPECT_FALSE(FilePath("").IsRootDirectory());
+  EXPECT_FALSE(FilePath("b:").IsRootDirectory());
+  EXPECT_FALSE(FilePath("b:a").IsRootDirectory());
+  EXPECT_FALSE(FilePath("8:/").IsRootDirectory());
+  EXPECT_FALSE(FilePath("c|/").IsRootDirectory());
+#else
+  EXPECT_TRUE(FilePath("/").IsRootDirectory());
+  EXPECT_TRUE(FilePath("//").IsRootDirectory());
+  EXPECT_FALSE(FilePath("").IsRootDirectory());
+  EXPECT_FALSE(FilePath("\\").IsRootDirectory());
+  EXPECT_FALSE(FilePath("/x").IsRootDirectory());
+#endif
+}
+
+}  // namespace
+}  // namespace internal
+}  // namespace testing
diff --git a/google-breakpad/src/testing/gtest/test/gtest-linked_ptr_test.cc b/google-breakpad/src/testing/gtest/test/gtest-linked_ptr_test.cc
new file mode 100644
index 0000000..6fcf512
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest-linked_ptr_test.cc
@@ -0,0 +1,154 @@
+// Copyright 2003, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Authors: Dan Egnor (egnor@google.com)
+// Ported to Windows: Vadim Berman (vadimb@google.com)
+
+#include "gtest/internal/gtest-linked_ptr.h"
+
+#include <stdlib.h>
+#include "gtest/gtest.h"
+
+namespace {
+
+using testing::Message;
+using testing::internal::linked_ptr;
+
+int num;
+Message* history = NULL;
+
+// Class which tracks allocation/deallocation
+class A {
+ public:
+  A(): mynum(num++) { *history << "A" << mynum << " ctor\n"; }
+  virtual ~A() { *history << "A" << mynum << " dtor\n"; }
+  virtual void Use() { *history << "A" << mynum << " use\n"; }
+ protected:
+  int mynum;
+};
+
+// Subclass
+class B : public A {
+ public:
+  B() { *history << "B" << mynum << " ctor\n"; }
+  ~B() { *history << "B" << mynum << " dtor\n"; }
+  virtual void Use() { *history << "B" << mynum << " use\n"; }
+};
+
+class LinkedPtrTest : public testing::Test {
+ public:
+  LinkedPtrTest() {
+    num = 0;
+    history = new Message;
+  }
+
+  virtual ~LinkedPtrTest() {
+    delete history;
+    history = NULL;
+  }
+};
+
+TEST_F(LinkedPtrTest, GeneralTest) {
+  {
+    linked_ptr<A> a0, a1, a2;
+    // Use explicit function call notation here to suppress self-assign warning.
+    a0.operator=(a0);
+    a1 = a2;
+    ASSERT_EQ(a0.get(), static_cast<A*>(NULL));
+    ASSERT_EQ(a1.get(), static_cast<A*>(NULL));
+    ASSERT_EQ(a2.get(), static_cast<A*>(NULL));
+    ASSERT_TRUE(a0 == NULL);
+    ASSERT_TRUE(a1 == NULL);
+    ASSERT_TRUE(a2 == NULL);
+
+    {
+      linked_ptr<A> a3(new A);
+      a0 = a3;
+      ASSERT_TRUE(a0 == a3);
+      ASSERT_TRUE(a0 != NULL);
+      ASSERT_TRUE(a0.get() == a3);
+      ASSERT_TRUE(a0 == a3.get());
+      linked_ptr<A> a4(a0);
+      a1 = a4;
+      linked_ptr<A> a5(new A);
+      ASSERT_TRUE(a5.get() != a3);
+      ASSERT_TRUE(a5 != a3.get());
+      a2 = a5;
+      linked_ptr<B> b0(new B);
+      linked_ptr<A> a6(b0);
+      ASSERT_TRUE(b0 == a6);
+      ASSERT_TRUE(a6 == b0);
+      ASSERT_TRUE(b0 != NULL);
+      a5 = b0;
+      a5 = b0;
+      a3->Use();
+      a4->Use();
+      a5->Use();
+      a6->Use();
+      b0->Use();
+      (*b0).Use();
+      b0.get()->Use();
+    }
+
+    a0->Use();
+    a1->Use();
+    a2->Use();
+
+    a1 = a2;
+    a2.reset(new A);
+    a0.reset();
+
+    linked_ptr<A> a7;
+  }
+
+  ASSERT_STREQ(
+    "A0 ctor\n"
+    "A1 ctor\n"
+    "A2 ctor\n"
+    "B2 ctor\n"
+    "A0 use\n"
+    "A0 use\n"
+    "B2 use\n"
+    "B2 use\n"
+    "B2 use\n"
+    "B2 use\n"
+    "B2 use\n"
+    "B2 dtor\n"
+    "A2 dtor\n"
+    "A0 use\n"
+    "A0 use\n"
+    "A1 use\n"
+    "A3 ctor\n"
+    "A0 dtor\n"
+    "A3 dtor\n"
+    "A1 dtor\n",
+    history->GetString().c_str());
+}
+
+}  // Unnamed namespace
diff --git a/google-breakpad/src/testing/gtest/test/gtest-listener_test.cc b/google-breakpad/src/testing/gtest/test/gtest-listener_test.cc
new file mode 100644
index 0000000..1008608
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest-listener_test.cc
@@ -0,0 +1,313 @@
+// Copyright 2009 Google Inc. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: vladl@google.com (Vlad Losev)
+//
+// The Google C++ Testing Framework (Google Test)
+//
+// This file verifies Google Test event listeners receive events at the
+// right times.
+
+#include "gtest/gtest.h"
+#include <vector>
+
+using ::testing::AddGlobalTestEnvironment;
+using ::testing::Environment;
+using ::testing::InitGoogleTest;
+using ::testing::Test;
+using ::testing::TestCase;
+using ::testing::TestEventListener;
+using ::testing::TestInfo;
+using ::testing::TestPartResult;
+using ::testing::UnitTest;
+using ::testing::internal::String;
+
+// Used by tests to register their events.
+std::vector<String>* g_events = NULL;
+
+namespace testing {
+namespace internal {
+
+class EventRecordingListener : public TestEventListener {
+ public:
+  explicit EventRecordingListener(const char* name) : name_(name) {}
+
+ protected:
+  virtual void OnTestProgramStart(const UnitTest& /*unit_test*/) {
+    g_events->push_back(GetFullMethodName("OnTestProgramStart"));
+  }
+
+  virtual void OnTestIterationStart(const UnitTest& /*unit_test*/,
+                                    int iteration) {
+    Message message;
+    message << GetFullMethodName("OnTestIterationStart")
+            << "(" << iteration << ")";
+    g_events->push_back(message.GetString());
+  }
+
+  virtual void OnEnvironmentsSetUpStart(const UnitTest& /*unit_test*/) {
+    g_events->push_back(GetFullMethodName("OnEnvironmentsSetUpStart"));
+  }
+
+  virtual void OnEnvironmentsSetUpEnd(const UnitTest& /*unit_test*/) {
+    g_events->push_back(GetFullMethodName("OnEnvironmentsSetUpEnd"));
+  }
+
+  virtual void OnTestCaseStart(const TestCase& /*test_case*/) {
+    g_events->push_back(GetFullMethodName("OnTestCaseStart"));
+  }
+
+  virtual void OnTestStart(const TestInfo& /*test_info*/) {
+    g_events->push_back(GetFullMethodName("OnTestStart"));
+  }
+
+  virtual void OnTestPartResult(const TestPartResult& /*test_part_result*/) {
+    g_events->push_back(GetFullMethodName("OnTestPartResult"));
+  }
+
+  virtual void OnTestEnd(const TestInfo& /*test_info*/) {
+    g_events->push_back(GetFullMethodName("OnTestEnd"));
+  }
+
+  virtual void OnTestCaseEnd(const TestCase& /*test_case*/) {
+    g_events->push_back(GetFullMethodName("OnTestCaseEnd"));
+  }
+
+  virtual void OnEnvironmentsTearDownStart(const UnitTest& /*unit_test*/) {
+    g_events->push_back(GetFullMethodName("OnEnvironmentsTearDownStart"));
+  }
+
+  virtual void OnEnvironmentsTearDownEnd(const UnitTest& /*unit_test*/) {
+    g_events->push_back(GetFullMethodName("OnEnvironmentsTearDownEnd"));
+  }
+
+  virtual void OnTestIterationEnd(const UnitTest& /*unit_test*/,
+                                  int iteration) {
+    Message message;
+    message << GetFullMethodName("OnTestIterationEnd")
+            << "("  << iteration << ")";
+    g_events->push_back(message.GetString());
+  }
+
+  virtual void OnTestProgramEnd(const UnitTest& /*unit_test*/) {
+    g_events->push_back(GetFullMethodName("OnTestProgramEnd"));
+  }
+
+ private:
+  String GetFullMethodName(const char* name) {
+    Message message;
+    message << name_ << "." << name;
+    return message.GetString();
+  }
+
+  String name_;
+};
+
+class EnvironmentInvocationCatcher : public Environment {
+ protected:
+  virtual void SetUp() {
+    g_events->push_back(String("Environment::SetUp"));
+  }
+
+  virtual void TearDown() {
+    g_events->push_back(String("Environment::TearDown"));
+  }
+};
+
+class ListenerTest : public Test {
+ protected:
+  static void SetUpTestCase() {
+    g_events->push_back(String("ListenerTest::SetUpTestCase"));
+  }
+
+  static void TearDownTestCase() {
+    g_events->push_back(String("ListenerTest::TearDownTestCase"));
+  }
+
+  virtual void SetUp() {
+    g_events->push_back(String("ListenerTest::SetUp"));
+  }
+
+  virtual void TearDown() {
+    g_events->push_back(String("ListenerTest::TearDown"));
+  }
+};
+
+TEST_F(ListenerTest, DoesFoo) {
+  // Test execution order within a test case is not guaranteed so we are not
+  // recording the test name.
+  g_events->push_back(String("ListenerTest::* Test Body"));
+  SUCCEED();  // Triggers OnTestPartResult.
+}
+
+TEST_F(ListenerTest, DoesBar) {
+  g_events->push_back(String("ListenerTest::* Test Body"));
+  SUCCEED();  // Triggers OnTestPartResult.
+}
+
+}  // namespace internal
+
+}  // namespace testing
+
+using ::testing::internal::EnvironmentInvocationCatcher;
+using ::testing::internal::EventRecordingListener;
+
+void VerifyResults(const std::vector<String>& data,
+                   const char* const* expected_data,
+                   int expected_data_size) {
+  const int actual_size = data.size();
+  // If the following assertion fails, a new entry will be appended to
+  // data.  Hence we save data.size() first.
+  EXPECT_EQ(expected_data_size, actual_size);
+
+  // Compares the common prefix.
+  const int shorter_size = expected_data_size <= actual_size ?
+      expected_data_size : actual_size;
+  int i = 0;
+  for (; i < shorter_size; ++i) {
+    ASSERT_STREQ(expected_data[i], data[i].c_str())
+        << "at position " << i;
+  }
+
+  // Prints extra elements in the actual data.
+  for (; i < actual_size; ++i) {
+    printf("  Actual event #%d: %s\n", i, data[i].c_str());
+  }
+}
+
+int main(int argc, char **argv) {
+  std::vector<String> events;
+  g_events = &events;
+  InitGoogleTest(&argc, argv);
+
+  UnitTest::GetInstance()->listeners().Append(
+      new EventRecordingListener("1st"));
+  UnitTest::GetInstance()->listeners().Append(
+      new EventRecordingListener("2nd"));
+
+  AddGlobalTestEnvironment(new EnvironmentInvocationCatcher);
+
+  GTEST_CHECK_(events.size() == 0)
+      << "AddGlobalTestEnvironment should not generate any events itself.";
+
+  ::testing::GTEST_FLAG(repeat) = 2;
+  int ret_val = RUN_ALL_TESTS();
+
+  const char* const expected_events[] = {
+    "1st.OnTestProgramStart",
+    "2nd.OnTestProgramStart",
+    "1st.OnTestIterationStart(0)",
+    "2nd.OnTestIterationStart(0)",
+    "1st.OnEnvironmentsSetUpStart",
+    "2nd.OnEnvironmentsSetUpStart",
+    "Environment::SetUp",
+    "2nd.OnEnvironmentsSetUpEnd",
+    "1st.OnEnvironmentsSetUpEnd",
+    "1st.OnTestCaseStart",
+    "2nd.OnTestCaseStart",
+    "ListenerTest::SetUpTestCase",
+    "1st.OnTestStart",
+    "2nd.OnTestStart",
+    "ListenerTest::SetUp",
+    "ListenerTest::* Test Body",
+    "1st.OnTestPartResult",
+    "2nd.OnTestPartResult",
+    "ListenerTest::TearDown",
+    "2nd.OnTestEnd",
+    "1st.OnTestEnd",
+    "1st.OnTestStart",
+    "2nd.OnTestStart",
+    "ListenerTest::SetUp",
+    "ListenerTest::* Test Body",
+    "1st.OnTestPartResult",
+    "2nd.OnTestPartResult",
+    "ListenerTest::TearDown",
+    "2nd.OnTestEnd",
+    "1st.OnTestEnd",
+    "ListenerTest::TearDownTestCase",
+    "2nd.OnTestCaseEnd",
+    "1st.OnTestCaseEnd",
+    "1st.OnEnvironmentsTearDownStart",
+    "2nd.OnEnvironmentsTearDownStart",
+    "Environment::TearDown",
+    "2nd.OnEnvironmentsTearDownEnd",
+    "1st.OnEnvironmentsTearDownEnd",
+    "2nd.OnTestIterationEnd(0)",
+    "1st.OnTestIterationEnd(0)",
+    "1st.OnTestIterationStart(1)",
+    "2nd.OnTestIterationStart(1)",
+    "1st.OnEnvironmentsSetUpStart",
+    "2nd.OnEnvironmentsSetUpStart",
+    "Environment::SetUp",
+    "2nd.OnEnvironmentsSetUpEnd",
+    "1st.OnEnvironmentsSetUpEnd",
+    "1st.OnTestCaseStart",
+    "2nd.OnTestCaseStart",
+    "ListenerTest::SetUpTestCase",
+    "1st.OnTestStart",
+    "2nd.OnTestStart",
+    "ListenerTest::SetUp",
+    "ListenerTest::* Test Body",
+    "1st.OnTestPartResult",
+    "2nd.OnTestPartResult",
+    "ListenerTest::TearDown",
+    "2nd.OnTestEnd",
+    "1st.OnTestEnd",
+    "1st.OnTestStart",
+    "2nd.OnTestStart",
+    "ListenerTest::SetUp",
+    "ListenerTest::* Test Body",
+    "1st.OnTestPartResult",
+    "2nd.OnTestPartResult",
+    "ListenerTest::TearDown",
+    "2nd.OnTestEnd",
+    "1st.OnTestEnd",
+    "ListenerTest::TearDownTestCase",
+    "2nd.OnTestCaseEnd",
+    "1st.OnTestCaseEnd",
+    "1st.OnEnvironmentsTearDownStart",
+    "2nd.OnEnvironmentsTearDownStart",
+    "Environment::TearDown",
+    "2nd.OnEnvironmentsTearDownEnd",
+    "1st.OnEnvironmentsTearDownEnd",
+    "2nd.OnTestIterationEnd(1)",
+    "1st.OnTestIterationEnd(1)",
+    "2nd.OnTestProgramEnd",
+    "1st.OnTestProgramEnd"
+  };
+  VerifyResults(events,
+                expected_events,
+                sizeof(expected_events)/sizeof(expected_events[0]));
+
+  // We need to check manually for ad hoc test failures that happen after
+  // RUN_ALL_TESTS finishes.
+  if (UnitTest::GetInstance()->Failed())
+    ret_val = 1;
+
+  return ret_val;
+}
diff --git a/google-breakpad/src/testing/gtest/test/gtest-message_test.cc b/google-breakpad/src/testing/gtest/test/gtest-message_test.cc
new file mode 100644
index 0000000..c09c6a8
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest-message_test.cc
@@ -0,0 +1,166 @@
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+//
+// Tests for the Message class.
+
+#include "gtest/gtest-message.h"
+
+#include "gtest/gtest.h"
+
+namespace {
+
+using ::testing::Message;
+
+// A helper function that turns a Message into a C string.
+const char* ToCString(const Message& msg) {
+  static testing::internal::String result;
+  result = msg.GetString();
+  return result.c_str();
+}
+
+// Tests the testing::Message class
+
+// Tests the default constructor.
+TEST(MessageTest, DefaultConstructor) {
+  const Message msg;
+  EXPECT_STREQ("", ToCString(msg));
+}
+
+// Tests the copy constructor.
+TEST(MessageTest, CopyConstructor) {
+  const Message msg1("Hello");
+  const Message msg2(msg1);
+  EXPECT_STREQ("Hello", ToCString(msg2));
+}
+
+// Tests constructing a Message from a C-string.
+TEST(MessageTest, ConstructsFromCString) {
+  Message msg("Hello");
+  EXPECT_STREQ("Hello", ToCString(msg));
+}
+
+// Tests streaming a float.
+TEST(MessageTest, StreamsFloat) {
+  const char* const s = ToCString(Message() << 1.23456F << " " << 2.34567F);
+  // Both numbers should be printed with enough precision.
+  EXPECT_PRED_FORMAT2(testing::IsSubstring, "1.234560", s);
+  EXPECT_PRED_FORMAT2(testing::IsSubstring, " 2.345669", s);
+}
+
+// Tests streaming a double.
+TEST(MessageTest, StreamsDouble) {
+  const char* const s = ToCString(Message() << 1260570880.4555497 << " "
+                                  << 1260572265.1954534);
+  // Both numbers should be printed with enough precision.
+  EXPECT_PRED_FORMAT2(testing::IsSubstring, "1260570880.45", s);
+  EXPECT_PRED_FORMAT2(testing::IsSubstring, " 1260572265.19", s);
+}
+
+// Tests streaming a non-char pointer.
+TEST(MessageTest, StreamsPointer) {
+  int n = 0;
+  int* p = &n;
+  EXPECT_STRNE("(null)", ToCString(Message() << p));
+}
+
+// Tests streaming a NULL non-char pointer.
+TEST(MessageTest, StreamsNullPointer) {
+  int* p = NULL;
+  EXPECT_STREQ("(null)", ToCString(Message() << p));
+}
+
+// Tests streaming a C string.
+TEST(MessageTest, StreamsCString) {
+  EXPECT_STREQ("Foo", ToCString(Message() << "Foo"));
+}
+
+// Tests streaming a NULL C string.
+TEST(MessageTest, StreamsNullCString) {
+  char* p = NULL;
+  EXPECT_STREQ("(null)", ToCString(Message() << p));
+}
+
+// Tests streaming std::string.
+TEST(MessageTest, StreamsString) {
+  const ::std::string str("Hello");
+  EXPECT_STREQ("Hello", ToCString(Message() << str));
+}
+
+// Tests that we can output strings containing embedded NULs.
+TEST(MessageTest, StreamsStringWithEmbeddedNUL) {
+  const char char_array_with_nul[] =
+      "Here's a NUL\0 and some more string";
+  const ::std::string string_with_nul(char_array_with_nul,
+                                      sizeof(char_array_with_nul) - 1);
+  EXPECT_STREQ("Here's a NUL\\0 and some more string",
+               ToCString(Message() << string_with_nul));
+}
+
+// Tests streaming a NUL char.
+TEST(MessageTest, StreamsNULChar) {
+  EXPECT_STREQ("\\0", ToCString(Message() << '\0'));
+}
+
+// Tests streaming int.
+TEST(MessageTest, StreamsInt) {
+  EXPECT_STREQ("123", ToCString(Message() << 123));
+}
+
+// Tests that basic IO manipulators (endl, ends, and flush) can be
+// streamed to Message.
+TEST(MessageTest, StreamsBasicIoManip) {
+  EXPECT_STREQ("Line 1.\nA NUL char \\0 in line 2.",
+               ToCString(Message() << "Line 1." << std::endl
+                         << "A NUL char " << std::ends << std::flush
+                         << " in line 2."));
+}
+
+// Tests Message::GetString()
+TEST(MessageTest, GetString) {
+  Message msg;
+  msg << 1 << " lamb";
+  EXPECT_STREQ("1 lamb", msg.GetString().c_str());
+}
+
+// Tests streaming a Message object to an ostream.
+TEST(MessageTest, StreamsToOStream) {
+  Message msg("Hello");
+  ::std::stringstream ss;
+  ss << msg;
+  EXPECT_STREQ("Hello", testing::internal::StringStreamToString(&ss).c_str());
+}
+
+// Tests that a Message object doesn't take up too much stack space.
+TEST(MessageTest, DoesNotTakeUpMuchStackSpace) {
+  EXPECT_LE(sizeof(Message), 16U);
+}
+
+}  // namespace
diff --git a/google-breakpad/src/testing/gtest/test/gtest-options_test.cc b/google-breakpad/src/testing/gtest/test/gtest-options_test.cc
new file mode 100644
index 0000000..9e98f3f
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest-options_test.cc
@@ -0,0 +1,212 @@
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Authors: keith.ray@gmail.com (Keith Ray)
+//
+// Google Test UnitTestOptions tests
+//
+// This file tests classes and functions used internally by
+// Google Test.  They are subject to change without notice.
+//
+// This file is #included from gtest.cc, to avoid changing build or
+// make-files on Windows and other platforms. Do not #include this file
+// anywhere else!
+
+#include "gtest/gtest.h"
+
+#if GTEST_OS_WINDOWS_MOBILE
+# include <windows.h>
+#elif GTEST_OS_WINDOWS
+# include <direct.h>
+#endif  // GTEST_OS_WINDOWS_MOBILE
+
+// Indicates that this translation unit is part of Google Test's
+// implementation.  It must come before gtest-internal-inl.h is
+// included, or there will be a compiler error.  This trick is to
+// prevent a user from accidentally including gtest-internal-inl.h in
+// his code.
+#define GTEST_IMPLEMENTATION_ 1
+#include "src/gtest-internal-inl.h"
+#undef GTEST_IMPLEMENTATION_
+
+namespace testing {
+namespace internal {
+namespace {
+
+// Turns the given relative path into an absolute path.
+FilePath GetAbsolutePathOf(const FilePath& relative_path) {
+  return FilePath::ConcatPaths(FilePath::GetCurrentDir(), relative_path);
+}
+
+// Testing UnitTestOptions::GetOutputFormat/GetOutputFile.
+
+TEST(XmlOutputTest, GetOutputFormatDefault) {
+  GTEST_FLAG(output) = "";
+  EXPECT_STREQ("", UnitTestOptions::GetOutputFormat().c_str());
+}
+
+TEST(XmlOutputTest, GetOutputFormat) {
+  GTEST_FLAG(output) = "xml:filename";
+  EXPECT_STREQ("xml", UnitTestOptions::GetOutputFormat().c_str());
+}
+
+TEST(XmlOutputTest, GetOutputFileDefault) {
+  GTEST_FLAG(output) = "";
+  EXPECT_STREQ(GetAbsolutePathOf(FilePath("test_detail.xml")).c_str(),
+               UnitTestOptions::GetAbsolutePathToOutputFile().c_str());
+}
+
+TEST(XmlOutputTest, GetOutputFileSingleFile) {
+  GTEST_FLAG(output) = "xml:filename.abc";
+  EXPECT_STREQ(GetAbsolutePathOf(FilePath("filename.abc")).c_str(),
+               UnitTestOptions::GetAbsolutePathToOutputFile().c_str());
+}
+
+TEST(XmlOutputTest, GetOutputFileFromDirectoryPath) {
+  GTEST_FLAG(output) = "xml:path" GTEST_PATH_SEP_;
+  const std::string expected_output_file =
+      GetAbsolutePathOf(
+          FilePath(std::string("path") + GTEST_PATH_SEP_ +
+                   GetCurrentExecutableName().c_str() + ".xml")).c_str();
+  const String& output_file = UnitTestOptions::GetAbsolutePathToOutputFile();
+#if GTEST_OS_WINDOWS
+  EXPECT_STRCASEEQ(expected_output_file.c_str(), output_file.c_str());
+#else
+  EXPECT_EQ(expected_output_file, output_file.c_str());
+#endif
+}
+
+TEST(OutputFileHelpersTest, GetCurrentExecutableName) {
+  const std::string exe_str = GetCurrentExecutableName().c_str();
+#if GTEST_OS_WINDOWS
+  const bool success =
+      _strcmpi("gtest-options_test", exe_str.c_str()) == 0 ||
+      _strcmpi("gtest-options-ex_test", exe_str.c_str()) == 0 ||
+      _strcmpi("gtest_all_test", exe_str.c_str()) == 0 ||
+      _strcmpi("gtest_dll_test", exe_str.c_str()) == 0;
+#else
+  // TODO(wan@google.com): remove the hard-coded "lt-" prefix when
+  //   Chandler Carruth's libtool replacement is ready.
+  const bool success =
+      exe_str == "gtest-options_test" ||
+      exe_str == "gtest_all_test" ||
+      exe_str == "lt-gtest_all_test" ||
+      exe_str == "gtest_dll_test";
+#endif  // GTEST_OS_WINDOWS
+  if (!success)
+    FAIL() << "GetCurrentExecutableName() returns " << exe_str;
+}
+
+class XmlOutputChangeDirTest : public Test {
+ protected:
+  virtual void SetUp() {
+    original_working_dir_ = FilePath::GetCurrentDir();
+    posix::ChDir("..");
+    // This will make the test fail if run from the root directory.
+    EXPECT_STRNE(original_working_dir_.c_str(),
+                 FilePath::GetCurrentDir().c_str());
+  }
+
+  virtual void TearDown() {
+    posix::ChDir(original_working_dir_.c_str());
+  }
+
+  FilePath original_working_dir_;
+};
+
+TEST_F(XmlOutputChangeDirTest, PreserveOriginalWorkingDirWithDefault) {
+  GTEST_FLAG(output) = "";
+  EXPECT_STREQ(FilePath::ConcatPaths(original_working_dir_,
+                                     FilePath("test_detail.xml")).c_str(),
+               UnitTestOptions::GetAbsolutePathToOutputFile().c_str());
+}
+
+TEST_F(XmlOutputChangeDirTest, PreserveOriginalWorkingDirWithDefaultXML) {
+  GTEST_FLAG(output) = "xml";
+  EXPECT_STREQ(FilePath::ConcatPaths(original_working_dir_,
+                                     FilePath("test_detail.xml")).c_str(),
+               UnitTestOptions::GetAbsolutePathToOutputFile().c_str());
+}
+
+TEST_F(XmlOutputChangeDirTest, PreserveOriginalWorkingDirWithRelativeFile) {
+  GTEST_FLAG(output) = "xml:filename.abc";
+  EXPECT_STREQ(FilePath::ConcatPaths(original_working_dir_,
+                                     FilePath("filename.abc")).c_str(),
+               UnitTestOptions::GetAbsolutePathToOutputFile().c_str());
+}
+
+TEST_F(XmlOutputChangeDirTest, PreserveOriginalWorkingDirWithRelativePath) {
+  GTEST_FLAG(output) = "xml:path" GTEST_PATH_SEP_;
+  const std::string expected_output_file =
+      FilePath::ConcatPaths(
+          original_working_dir_,
+          FilePath(std::string("path") + GTEST_PATH_SEP_ +
+                   GetCurrentExecutableName().c_str() + ".xml")).c_str();
+  const String& output_file = UnitTestOptions::GetAbsolutePathToOutputFile();
+#if GTEST_OS_WINDOWS
+  EXPECT_STRCASEEQ(expected_output_file.c_str(), output_file.c_str());
+#else
+  EXPECT_EQ(expected_output_file, output_file.c_str());
+#endif
+}
+
+TEST_F(XmlOutputChangeDirTest, PreserveOriginalWorkingDirWithAbsoluteFile) {
+#if GTEST_OS_WINDOWS
+  GTEST_FLAG(output) = "xml:c:\\tmp\\filename.abc";
+  EXPECT_STREQ(FilePath("c:\\tmp\\filename.abc").c_str(),
+               UnitTestOptions::GetAbsolutePathToOutputFile().c_str());
+#else
+  GTEST_FLAG(output) ="xml:/tmp/filename.abc";
+  EXPECT_STREQ(FilePath("/tmp/filename.abc").c_str(),
+               UnitTestOptions::GetAbsolutePathToOutputFile().c_str());
+#endif
+}
+
+TEST_F(XmlOutputChangeDirTest, PreserveOriginalWorkingDirWithAbsolutePath) {
+#if GTEST_OS_WINDOWS
+  const std::string path = "c:\\tmp\\";
+#else
+  const std::string path = "/tmp/";
+#endif
+
+  GTEST_FLAG(output) = "xml:" + path;
+  const std::string expected_output_file =
+      path + GetCurrentExecutableName().c_str() + ".xml";
+  const String& output_file = UnitTestOptions::GetAbsolutePathToOutputFile();
+
+#if GTEST_OS_WINDOWS
+  EXPECT_STRCASEEQ(expected_output_file.c_str(), output_file.c_str());
+#else
+  EXPECT_EQ(expected_output_file, output_file.c_str());
+#endif
+}
+
+}  // namespace
+}  // namespace internal
+}  // namespace testing
diff --git a/google-breakpad/src/testing/gtest/test/gtest-param-test2_test.cc b/google-breakpad/src/testing/gtest/test/gtest-param-test2_test.cc
new file mode 100644
index 0000000..4a782fe
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest-param-test2_test.cc
@@ -0,0 +1,65 @@
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: vladl@google.com (Vlad Losev)
+//
+// Tests for Google Test itself.  This verifies that the basic constructs of
+// Google Test work.
+
+#include "gtest/gtest.h"
+
+#include "test/gtest-param-test_test.h"
+
+#if GTEST_HAS_PARAM_TEST
+
+using ::testing::Values;
+using ::testing::internal::ParamGenerator;
+
+// Tests that generators defined in a different translation unit
+// are functional. The test using extern_gen is defined
+// in gtest-param-test_test.cc.
+ParamGenerator<int> extern_gen = Values(33);
+
+// Tests that a parameterized test case can be defined in one translation unit
+// and instantiated in another. The test is defined in gtest-param-test_test.cc
+// and ExternalInstantiationTest fixture class is defined in
+// gtest-param-test_test.h.
+INSTANTIATE_TEST_CASE_P(MultiplesOf33,
+                        ExternalInstantiationTest,
+                        Values(33, 66));
+
+// Tests that a parameterized test case can be instantiated
+// in multiple translation units. Another instantiation is defined
+// in gtest-param-test_test.cc and InstantiationInMultipleTranslaionUnitsTest
+// fixture is defined in gtest-param-test_test.h
+INSTANTIATE_TEST_CASE_P(Sequence2,
+                        InstantiationInMultipleTranslaionUnitsTest,
+                        Values(42*3, 42*4, 42*5));
+
+#endif  // GTEST_HAS_PARAM_TEST
diff --git a/google-breakpad/src/testing/gtest/test/gtest-param-test_test.cc b/google-breakpad/src/testing/gtest/test/gtest-param-test_test.cc
new file mode 100644
index 0000000..cf61866
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest-param-test_test.cc
@@ -0,0 +1,897 @@
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: vladl@google.com (Vlad Losev)
+//
+// Tests for Google Test itself. This file verifies that the parameter
+// generators objects produce correct parameter sequences and that
+// Google Test runtime instantiates correct tests from those sequences.
+
+#include "gtest/gtest.h"
+
+#if GTEST_HAS_PARAM_TEST
+
+# include <algorithm>
+# include <iostream>
+# include <list>
+# include <sstream>
+# include <string>
+# include <vector>
+
+// To include gtest-internal-inl.h.
+# define GTEST_IMPLEMENTATION_ 1
+# include "src/gtest-internal-inl.h"  // for UnitTestOptions
+# undef GTEST_IMPLEMENTATION_
+
+# include "test/gtest-param-test_test.h"
+
+using ::std::vector;
+using ::std::sort;
+
+using ::testing::AddGlobalTestEnvironment;
+using ::testing::Bool;
+using ::testing::Message;
+using ::testing::Range;
+using ::testing::TestWithParam;
+using ::testing::Values;
+using ::testing::ValuesIn;
+
+# if GTEST_HAS_COMBINE
+using ::testing::Combine;
+using ::std::tr1::get;
+using ::std::tr1::make_tuple;
+using ::std::tr1::tuple;
+# endif  // GTEST_HAS_COMBINE
+
+using ::testing::internal::ParamGenerator;
+using ::testing::internal::UnitTestOptions;
+
+// Prints a value to a string.
+//
+// TODO(wan@google.com): remove PrintValue() when we move matchers and
+// EXPECT_THAT() from Google Mock to Google Test.  At that time, we
+// can write EXPECT_THAT(x, Eq(y)) to compare two tuples x and y, as
+// EXPECT_THAT() and the matchers know how to print tuples.
+template <typename T>
+::std::string PrintValue(const T& value) {
+  ::std::stringstream stream;
+  stream << value;
+  return stream.str();
+}
+
+# if GTEST_HAS_COMBINE
+
+// These overloads allow printing tuples in our tests.  We cannot
+// define an operator<< for tuples, as that definition needs to be in
+// the std namespace in order to be picked up by Google Test via
+// Argument-Dependent Lookup, yet defining anything in the std
+// namespace in non-STL code is undefined behavior.
+
+template <typename T1, typename T2>
+::std::string PrintValue(const tuple<T1, T2>& value) {
+  ::std::stringstream stream;
+  stream << "(" << get<0>(value) << ", " << get<1>(value) << ")";
+  return stream.str();
+}
+
+template <typename T1, typename T2, typename T3>
+::std::string PrintValue(const tuple<T1, T2, T3>& value) {
+  ::std::stringstream stream;
+  stream << "(" << get<0>(value) << ", " << get<1>(value)
+         << ", "<< get<2>(value) << ")";
+  return stream.str();
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+          typename T6, typename T7, typename T8, typename T9, typename T10>
+::std::string PrintValue(
+    const tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>& value) {
+  ::std::stringstream stream;
+  stream << "(" << get<0>(value) << ", " << get<1>(value)
+         << ", "<< get<2>(value) << ", " << get<3>(value)
+         << ", "<< get<4>(value) << ", " << get<5>(value)
+         << ", "<< get<6>(value) << ", " << get<7>(value)
+         << ", "<< get<8>(value) << ", " << get<9>(value) << ")";
+  return stream.str();
+}
+
+# endif  // GTEST_HAS_COMBINE
+
+// Verifies that a sequence generated by the generator and accessed
+// via the iterator object matches the expected one using Google Test
+// assertions.
+template <typename T, size_t N>
+void VerifyGenerator(const ParamGenerator<T>& generator,
+                     const T (&expected_values)[N]) {
+  typename ParamGenerator<T>::iterator it = generator.begin();
+  for (size_t i = 0; i < N; ++i) {
+    ASSERT_FALSE(it == generator.end())
+        << "At element " << i << " when accessing via an iterator "
+        << "created with the copy constructor.\n";
+    // We cannot use EXPECT_EQ() here as the values may be tuples,
+    // which don't support <<.
+    EXPECT_TRUE(expected_values[i] == *it)
+        << "where i is " << i
+        << ", expected_values[i] is " << PrintValue(expected_values[i])
+        << ", *it is " << PrintValue(*it)
+        << ", and 'it' is an iterator created with the copy constructor.\n";
+    it++;
+  }
+  EXPECT_TRUE(it == generator.end())
+        << "At the presumed end of sequence when accessing via an iterator "
+        << "created with the copy constructor.\n";
+
+  // Test the iterator assignment. The following lines verify that
+  // the sequence accessed via an iterator initialized via the
+  // assignment operator (as opposed to a copy constructor) matches
+  // just the same.
+  it = generator.begin();
+  for (size_t i = 0; i < N; ++i) {
+    ASSERT_FALSE(it == generator.end())
+        << "At element " << i << " when accessing via an iterator "
+        << "created with the assignment operator.\n";
+    EXPECT_TRUE(expected_values[i] == *it)
+        << "where i is " << i
+        << ", expected_values[i] is " << PrintValue(expected_values[i])
+        << ", *it is " << PrintValue(*it)
+        << ", and 'it' is an iterator created with the copy constructor.\n";
+    it++;
+  }
+  EXPECT_TRUE(it == generator.end())
+        << "At the presumed end of sequence when accessing via an iterator "
+        << "created with the assignment operator.\n";
+}
+
+template <typename T>
+void VerifyGeneratorIsEmpty(const ParamGenerator<T>& generator) {
+  typename ParamGenerator<T>::iterator it = generator.begin();
+  EXPECT_TRUE(it == generator.end());
+
+  it = generator.begin();
+  EXPECT_TRUE(it == generator.end());
+}
+
+// Generator tests. They test that each of the provided generator functions
+// generates an expected sequence of values. The general test pattern
+// instantiates a generator using one of the generator functions,
+// checks the sequence produced by the generator using its iterator API,
+// and then resets the iterator back to the beginning of the sequence
+// and checks the sequence again.
+
+// Tests that iterators produced by generator functions conform to the
+// ForwardIterator concept.
+TEST(IteratorTest, ParamIteratorConformsToForwardIteratorConcept) {
+  const ParamGenerator<int> gen = Range(0, 10);
+  ParamGenerator<int>::iterator it = gen.begin();
+
+  // Verifies that iterator initialization works as expected.
+  ParamGenerator<int>::iterator it2 = it;
+  EXPECT_TRUE(*it == *it2) << "Initialized iterators must point to the "
+                           << "element same as its source points to";
+
+  // Verifies that iterator assignment works as expected.
+  it++;
+  EXPECT_FALSE(*it == *it2);
+  it2 = it;
+  EXPECT_TRUE(*it == *it2) << "Assigned iterators must point to the "
+                           << "element same as its source points to";
+
+  // Verifies that prefix operator++() returns *this.
+  EXPECT_EQ(&it, &(++it)) << "Result of the prefix operator++ must be "
+                          << "refer to the original object";
+
+  // Verifies that the result of the postfix operator++ points to the value
+  // pointed to by the original iterator.
+  int original_value = *it;  // Have to compute it outside of macro call to be
+                             // unaffected by the parameter evaluation order.
+  EXPECT_EQ(original_value, *(it++));
+
+  // Verifies that prefix and postfix operator++() advance an iterator
+  // all the same.
+  it2 = it;
+  it++;
+  ++it2;
+  EXPECT_TRUE(*it == *it2);
+}
+
+// Tests that Range() generates the expected sequence.
+TEST(RangeTest, IntRangeWithDefaultStep) {
+  const ParamGenerator<int> gen = Range(0, 3);
+  const int expected_values[] = {0, 1, 2};
+  VerifyGenerator(gen, expected_values);
+}
+
+// Edge case. Tests that Range() generates the single element sequence
+// as expected when provided with range limits that are equal.
+TEST(RangeTest, IntRangeSingleValue) {
+  const ParamGenerator<int> gen = Range(0, 1);
+  const int expected_values[] = {0};
+  VerifyGenerator(gen, expected_values);
+}
+
+// Edge case. Tests that Range() with generates empty sequence when
+// supplied with an empty range.
+TEST(RangeTest, IntRangeEmpty) {
+  const ParamGenerator<int> gen = Range(0, 0);
+  VerifyGeneratorIsEmpty(gen);
+}
+
+// Tests that Range() with custom step (greater then one) generates
+// the expected sequence.
+TEST(RangeTest, IntRangeWithCustomStep) {
+  const ParamGenerator<int> gen = Range(0, 9, 3);
+  const int expected_values[] = {0, 3, 6};
+  VerifyGenerator(gen, expected_values);
+}
+
+// Tests that Range() with custom step (greater then one) generates
+// the expected sequence when the last element does not fall on the
+// upper range limit. Sequences generated by Range() must not have
+// elements beyond the range limits.
+TEST(RangeTest, IntRangeWithCustomStepOverUpperBound) {
+  const ParamGenerator<int> gen = Range(0, 4, 3);
+  const int expected_values[] = {0, 3};
+  VerifyGenerator(gen, expected_values);
+}
+
+// Verifies that Range works with user-defined types that define
+// copy constructor, operator=(), operator+(), and operator<().
+class DogAdder {
+ public:
+  explicit DogAdder(const char* a_value) : value_(a_value) {}
+  DogAdder(const DogAdder& other) : value_(other.value_.c_str()) {}
+
+  DogAdder operator=(const DogAdder& other) {
+    if (this != &other)
+      value_ = other.value_;
+    return *this;
+  }
+  DogAdder operator+(const DogAdder& other) const {
+    Message msg;
+    msg << value_.c_str() << other.value_.c_str();
+    return DogAdder(msg.GetString().c_str());
+  }
+  bool operator<(const DogAdder& other) const {
+    return value_ < other.value_;
+  }
+  const ::testing::internal::String& value() const { return value_; }
+
+ private:
+  ::testing::internal::String value_;
+};
+
+TEST(RangeTest, WorksWithACustomType) {
+  const ParamGenerator<DogAdder> gen =
+      Range(DogAdder("cat"), DogAdder("catdogdog"), DogAdder("dog"));
+  ParamGenerator<DogAdder>::iterator it = gen.begin();
+
+  ASSERT_FALSE(it == gen.end());
+  EXPECT_STREQ("cat", it->value().c_str());
+
+  ASSERT_FALSE(++it == gen.end());
+  EXPECT_STREQ("catdog", it->value().c_str());
+
+  EXPECT_TRUE(++it == gen.end());
+}
+
+class IntWrapper {
+ public:
+  explicit IntWrapper(int a_value) : value_(a_value) {}
+  IntWrapper(const IntWrapper& other) : value_(other.value_) {}
+
+  IntWrapper operator=(const IntWrapper& other) {
+    value_ = other.value_;
+    return *this;
+  }
+  // operator+() adds a different type.
+  IntWrapper operator+(int other) const { return IntWrapper(value_ + other); }
+  bool operator<(const IntWrapper& other) const {
+    return value_ < other.value_;
+  }
+  int value() const { return value_; }
+
+ private:
+  int value_;
+};
+
+TEST(RangeTest, WorksWithACustomTypeWithDifferentIncrementType) {
+  const ParamGenerator<IntWrapper> gen = Range(IntWrapper(0), IntWrapper(2));
+  ParamGenerator<IntWrapper>::iterator it = gen.begin();
+
+  ASSERT_FALSE(it == gen.end());
+  EXPECT_EQ(0, it->value());
+
+  ASSERT_FALSE(++it == gen.end());
+  EXPECT_EQ(1, it->value());
+
+  EXPECT_TRUE(++it == gen.end());
+}
+
+// Tests that ValuesIn() with an array parameter generates
+// the expected sequence.
+TEST(ValuesInTest, ValuesInArray) {
+  int array[] = {3, 5, 8};
+  const ParamGenerator<int> gen = ValuesIn(array);
+  VerifyGenerator(gen, array);
+}
+
+// Tests that ValuesIn() with a const array parameter generates
+// the expected sequence.
+TEST(ValuesInTest, ValuesInConstArray) {
+  const int array[] = {3, 5, 8};
+  const ParamGenerator<int> gen = ValuesIn(array);
+  VerifyGenerator(gen, array);
+}
+
+// Edge case. Tests that ValuesIn() with an array parameter containing a
+// single element generates the single element sequence.
+TEST(ValuesInTest, ValuesInSingleElementArray) {
+  int array[] = {42};
+  const ParamGenerator<int> gen = ValuesIn(array);
+  VerifyGenerator(gen, array);
+}
+
+// Tests that ValuesIn() generates the expected sequence for an STL
+// container (vector).
+TEST(ValuesInTest, ValuesInVector) {
+  typedef ::std::vector<int> ContainerType;
+  ContainerType values;
+  values.push_back(3);
+  values.push_back(5);
+  values.push_back(8);
+  const ParamGenerator<int> gen = ValuesIn(values);
+
+  const int expected_values[] = {3, 5, 8};
+  VerifyGenerator(gen, expected_values);
+}
+
+// Tests that ValuesIn() generates the expected sequence.
+TEST(ValuesInTest, ValuesInIteratorRange) {
+  typedef ::std::vector<int> ContainerType;
+  ContainerType values;
+  values.push_back(3);
+  values.push_back(5);
+  values.push_back(8);
+  const ParamGenerator<int> gen = ValuesIn(values.begin(), values.end());
+
+  const int expected_values[] = {3, 5, 8};
+  VerifyGenerator(gen, expected_values);
+}
+
+// Edge case. Tests that ValuesIn() provided with an iterator range specifying a
+// single value generates a single-element sequence.
+TEST(ValuesInTest, ValuesInSingleElementIteratorRange) {
+  typedef ::std::vector<int> ContainerType;
+  ContainerType values;
+  values.push_back(42);
+  const ParamGenerator<int> gen = ValuesIn(values.begin(), values.end());
+
+  const int expected_values[] = {42};
+  VerifyGenerator(gen, expected_values);
+}
+
+// Edge case. Tests that ValuesIn() provided with an empty iterator range
+// generates an empty sequence.
+TEST(ValuesInTest, ValuesInEmptyIteratorRange) {
+  typedef ::std::vector<int> ContainerType;
+  ContainerType values;
+  const ParamGenerator<int> gen = ValuesIn(values.begin(), values.end());
+
+  VerifyGeneratorIsEmpty(gen);
+}
+
+// Tests that the Values() generates the expected sequence.
+TEST(ValuesTest, ValuesWorks) {
+  const ParamGenerator<int> gen = Values(3, 5, 8);
+
+  const int expected_values[] = {3, 5, 8};
+  VerifyGenerator(gen, expected_values);
+}
+
+// Tests that Values() generates the expected sequences from elements of
+// different types convertible to ParamGenerator's parameter type.
+TEST(ValuesTest, ValuesWorksForValuesOfCompatibleTypes) {
+  const ParamGenerator<double> gen = Values(3, 5.0f, 8.0);
+
+  const double expected_values[] = {3.0, 5.0, 8.0};
+  VerifyGenerator(gen, expected_values);
+}
+
+TEST(ValuesTest, ValuesWorksForMaxLengthList) {
+  const ParamGenerator<int> gen = Values(
+      10, 20, 30, 40, 50, 60, 70, 80, 90, 100,
+      110, 120, 130, 140, 150, 160, 170, 180, 190, 200,
+      210, 220, 230, 240, 250, 260, 270, 280, 290, 300,
+      310, 320, 330, 340, 350, 360, 370, 380, 390, 400,
+      410, 420, 430, 440, 450, 460, 470, 480, 490, 500);
+
+  const int expected_values[] = {
+      10, 20, 30, 40, 50, 60, 70, 80, 90, 100,
+      110, 120, 130, 140, 150, 160, 170, 180, 190, 200,
+      210, 220, 230, 240, 250, 260, 270, 280, 290, 300,
+      310, 320, 330, 340, 350, 360, 370, 380, 390, 400,
+      410, 420, 430, 440, 450, 460, 470, 480, 490, 500};
+  VerifyGenerator(gen, expected_values);
+}
+
+// Edge case test. Tests that single-parameter Values() generates the sequence
+// with the single value.
+TEST(ValuesTest, ValuesWithSingleParameter) {
+  const ParamGenerator<int> gen = Values(42);
+
+  const int expected_values[] = {42};
+  VerifyGenerator(gen, expected_values);
+}
+
+// Tests that Bool() generates sequence (false, true).
+TEST(BoolTest, BoolWorks) {
+  const ParamGenerator<bool> gen = Bool();
+
+  const bool expected_values[] = {false, true};
+  VerifyGenerator(gen, expected_values);
+}
+
+# if GTEST_HAS_COMBINE
+
+// Tests that Combine() with two parameters generates the expected sequence.
+TEST(CombineTest, CombineWithTwoParameters) {
+  const char* foo = "foo";
+  const char* bar = "bar";
+  const ParamGenerator<tuple<const char*, int> > gen =
+      Combine(Values(foo, bar), Values(3, 4));
+
+  tuple<const char*, int> expected_values[] = {
+    make_tuple(foo, 3), make_tuple(foo, 4),
+    make_tuple(bar, 3), make_tuple(bar, 4)};
+  VerifyGenerator(gen, expected_values);
+}
+
+// Tests that Combine() with three parameters generates the expected sequence.
+TEST(CombineTest, CombineWithThreeParameters) {
+  const ParamGenerator<tuple<int, int, int> > gen = Combine(Values(0, 1),
+                                                            Values(3, 4),
+                                                            Values(5, 6));
+  tuple<int, int, int> expected_values[] = {
+    make_tuple(0, 3, 5), make_tuple(0, 3, 6),
+    make_tuple(0, 4, 5), make_tuple(0, 4, 6),
+    make_tuple(1, 3, 5), make_tuple(1, 3, 6),
+    make_tuple(1, 4, 5), make_tuple(1, 4, 6)};
+  VerifyGenerator(gen, expected_values);
+}
+
+// Tests that the Combine() with the first parameter generating a single value
+// sequence generates a sequence with the number of elements equal to the
+// number of elements in the sequence generated by the second parameter.
+TEST(CombineTest, CombineWithFirstParameterSingleValue) {
+  const ParamGenerator<tuple<int, int> > gen = Combine(Values(42),
+                                                       Values(0, 1));
+
+  tuple<int, int> expected_values[] = {make_tuple(42, 0), make_tuple(42, 1)};
+  VerifyGenerator(gen, expected_values);
+}
+
+// Tests that the Combine() with the second parameter generating a single value
+// sequence generates a sequence with the number of elements equal to the
+// number of elements in the sequence generated by the first parameter.
+TEST(CombineTest, CombineWithSecondParameterSingleValue) {
+  const ParamGenerator<tuple<int, int> > gen = Combine(Values(0, 1),
+                                                       Values(42));
+
+  tuple<int, int> expected_values[] = {make_tuple(0, 42), make_tuple(1, 42)};
+  VerifyGenerator(gen, expected_values);
+}
+
+// Tests that when the first parameter produces an empty sequence,
+// Combine() produces an empty sequence, too.
+TEST(CombineTest, CombineWithFirstParameterEmptyRange) {
+  const ParamGenerator<tuple<int, int> > gen = Combine(Range(0, 0),
+                                                       Values(0, 1));
+  VerifyGeneratorIsEmpty(gen);
+}
+
+// Tests that when the second parameter produces an empty sequence,
+// Combine() produces an empty sequence, too.
+TEST(CombineTest, CombineWithSecondParameterEmptyRange) {
+  const ParamGenerator<tuple<int, int> > gen = Combine(Values(0, 1),
+                                                       Range(1, 1));
+  VerifyGeneratorIsEmpty(gen);
+}
+
+// Edge case. Tests that combine works with the maximum number
+// of parameters supported by Google Test (currently 10).
+TEST(CombineTest, CombineWithMaxNumberOfParameters) {
+  const char* foo = "foo";
+  const char* bar = "bar";
+  const ParamGenerator<tuple<const char*, int, int, int, int, int, int, int,
+                             int, int> > gen = Combine(Values(foo, bar),
+                                                       Values(1), Values(2),
+                                                       Values(3), Values(4),
+                                                       Values(5), Values(6),
+                                                       Values(7), Values(8),
+                                                       Values(9));
+
+  tuple<const char*, int, int, int, int, int, int, int, int, int>
+      expected_values[] = {make_tuple(foo, 1, 2, 3, 4, 5, 6, 7, 8, 9),
+                           make_tuple(bar, 1, 2, 3, 4, 5, 6, 7, 8, 9)};
+  VerifyGenerator(gen, expected_values);
+}
+
+# endif  // GTEST_HAS_COMBINE
+
+// Tests that an generator produces correct sequence after being
+// assigned from another generator.
+TEST(ParamGeneratorTest, AssignmentWorks) {
+  ParamGenerator<int> gen = Values(1, 2);
+  const ParamGenerator<int> gen2 = Values(3, 4);
+  gen = gen2;
+
+  const int expected_values[] = {3, 4};
+  VerifyGenerator(gen, expected_values);
+}
+
+// This test verifies that the tests are expanded and run as specified:
+// one test per element from the sequence produced by the generator
+// specified in INSTANTIATE_TEST_CASE_P. It also verifies that the test's
+// fixture constructor, SetUp(), and TearDown() have run and have been
+// supplied with the correct parameters.
+
+// The use of environment object allows detection of the case where no test
+// case functionality is run at all. In this case TestCaseTearDown will not
+// be able to detect missing tests, naturally.
+template <int kExpectedCalls>
+class TestGenerationEnvironment : public ::testing::Environment {
+ public:
+  static TestGenerationEnvironment* Instance() {
+    static TestGenerationEnvironment* instance = new TestGenerationEnvironment;
+    return instance;
+  }
+
+  void FixtureConstructorExecuted() { fixture_constructor_count_++; }
+  void SetUpExecuted() { set_up_count_++; }
+  void TearDownExecuted() { tear_down_count_++; }
+  void TestBodyExecuted() { test_body_count_++; }
+
+  virtual void TearDown() {
+    // If all MultipleTestGenerationTest tests have been de-selected
+    // by the filter flag, the following checks make no sense.
+    bool perform_check = false;
+
+    for (int i = 0; i < kExpectedCalls; ++i) {
+      Message msg;
+      msg << "TestsExpandedAndRun/" << i;
+      if (UnitTestOptions::FilterMatchesTest(
+             "TestExpansionModule/MultipleTestGenerationTest",
+              msg.GetString().c_str())) {
+        perform_check = true;
+      }
+    }
+    if (perform_check) {
+      EXPECT_EQ(kExpectedCalls, fixture_constructor_count_)
+          << "Fixture constructor of ParamTestGenerationTest test case "
+          << "has not been run as expected.";
+      EXPECT_EQ(kExpectedCalls, set_up_count_)
+          << "Fixture SetUp method of ParamTestGenerationTest test case "
+          << "has not been run as expected.";
+      EXPECT_EQ(kExpectedCalls, tear_down_count_)
+          << "Fixture TearDown method of ParamTestGenerationTest test case "
+          << "has not been run as expected.";
+      EXPECT_EQ(kExpectedCalls, test_body_count_)
+          << "Test in ParamTestGenerationTest test case "
+          << "has not been run as expected.";
+    }
+  }
+
+ private:
+  TestGenerationEnvironment() : fixture_constructor_count_(0), set_up_count_(0),
+                                tear_down_count_(0), test_body_count_(0) {}
+
+  int fixture_constructor_count_;
+  int set_up_count_;
+  int tear_down_count_;
+  int test_body_count_;
+
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(TestGenerationEnvironment);
+};
+
+const int test_generation_params[] = {36, 42, 72};
+
+class TestGenerationTest : public TestWithParam<int> {
+ public:
+  enum {
+    PARAMETER_COUNT =
+        sizeof(test_generation_params)/sizeof(test_generation_params[0])
+  };
+
+  typedef TestGenerationEnvironment<PARAMETER_COUNT> Environment;
+
+  TestGenerationTest() {
+    Environment::Instance()->FixtureConstructorExecuted();
+    current_parameter_ = GetParam();
+  }
+  virtual void SetUp() {
+    Environment::Instance()->SetUpExecuted();
+    EXPECT_EQ(current_parameter_, GetParam());
+  }
+  virtual void TearDown() {
+    Environment::Instance()->TearDownExecuted();
+    EXPECT_EQ(current_parameter_, GetParam());
+  }
+
+  static void SetUpTestCase() {
+    bool all_tests_in_test_case_selected = true;
+
+    for (int i = 0; i < PARAMETER_COUNT; ++i) {
+      Message test_name;
+      test_name << "TestsExpandedAndRun/" << i;
+      if ( !UnitTestOptions::FilterMatchesTest(
+                "TestExpansionModule/MultipleTestGenerationTest",
+                test_name.GetString())) {
+        all_tests_in_test_case_selected = false;
+      }
+    }
+    EXPECT_TRUE(all_tests_in_test_case_selected)
+        << "When running the TestGenerationTest test case all of its tests\n"
+        << "must be selected by the filter flag for the test case to pass.\n"
+        << "If not all of them are enabled, we can't reliably conclude\n"
+        << "that the correct number of tests have been generated.";
+
+    collected_parameters_.clear();
+  }
+
+  static void TearDownTestCase() {
+    vector<int> expected_values(test_generation_params,
+                                test_generation_params + PARAMETER_COUNT);
+    // Test execution order is not guaranteed by Google Test,
+    // so the order of values in collected_parameters_ can be
+    // different and we have to sort to compare.
+    sort(expected_values.begin(), expected_values.end());
+    sort(collected_parameters_.begin(), collected_parameters_.end());
+
+    EXPECT_TRUE(collected_parameters_ == expected_values);
+  }
+
+ protected:
+  int current_parameter_;
+  static vector<int> collected_parameters_;
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(TestGenerationTest);
+};
+vector<int> TestGenerationTest::collected_parameters_;
+
+TEST_P(TestGenerationTest, TestsExpandedAndRun) {
+  Environment::Instance()->TestBodyExecuted();
+  EXPECT_EQ(current_parameter_, GetParam());
+  collected_parameters_.push_back(GetParam());
+}
+INSTANTIATE_TEST_CASE_P(TestExpansionModule, TestGenerationTest,
+                        ValuesIn(test_generation_params));
+
+// This test verifies that the element sequence (third parameter of
+// INSTANTIATE_TEST_CASE_P) is evaluated in InitGoogleTest() and neither at
+// the call site of INSTANTIATE_TEST_CASE_P nor in RUN_ALL_TESTS().  For
+// that, we declare param_value_ to be a static member of
+// GeneratorEvaluationTest and initialize it to 0.  We set it to 1 in
+// main(), just before invocation of InitGoogleTest().  After calling
+// InitGoogleTest(), we set the value to 2.  If the sequence is evaluated
+// before or after InitGoogleTest, INSTANTIATE_TEST_CASE_P will create a
+// test with parameter other than 1, and the test body will fail the
+// assertion.
+class GeneratorEvaluationTest : public TestWithParam<int> {
+ public:
+  static int param_value() { return param_value_; }
+  static void set_param_value(int param_value) { param_value_ = param_value; }
+
+ private:
+  static int param_value_;
+};
+int GeneratorEvaluationTest::param_value_ = 0;
+
+TEST_P(GeneratorEvaluationTest, GeneratorsEvaluatedInMain) {
+  EXPECT_EQ(1, GetParam());
+}
+INSTANTIATE_TEST_CASE_P(GenEvalModule,
+                        GeneratorEvaluationTest,
+                        Values(GeneratorEvaluationTest::param_value()));
+
+// Tests that generators defined in a different translation unit are
+// functional. Generator extern_gen is defined in gtest-param-test_test2.cc.
+extern ParamGenerator<int> extern_gen;
+class ExternalGeneratorTest : public TestWithParam<int> {};
+TEST_P(ExternalGeneratorTest, ExternalGenerator) {
+  // Sequence produced by extern_gen contains only a single value
+  // which we verify here.
+  EXPECT_EQ(GetParam(), 33);
+}
+INSTANTIATE_TEST_CASE_P(ExternalGeneratorModule,
+                        ExternalGeneratorTest,
+                        extern_gen);
+
+// Tests that a parameterized test case can be defined in one translation
+// unit and instantiated in another. This test will be instantiated in
+// gtest-param-test_test2.cc. ExternalInstantiationTest fixture class is
+// defined in gtest-param-test_test.h.
+TEST_P(ExternalInstantiationTest, IsMultipleOf33) {
+  EXPECT_EQ(0, GetParam() % 33);
+}
+
+// Tests that a parameterized test case can be instantiated with multiple
+// generators.
+class MultipleInstantiationTest : public TestWithParam<int> {};
+TEST_P(MultipleInstantiationTest, AllowsMultipleInstances) {
+}
+INSTANTIATE_TEST_CASE_P(Sequence1, MultipleInstantiationTest, Values(1, 2));
+INSTANTIATE_TEST_CASE_P(Sequence2, MultipleInstantiationTest, Range(3, 5));
+
+// Tests that a parameterized test case can be instantiated
+// in multiple translation units. This test will be instantiated
+// here and in gtest-param-test_test2.cc.
+// InstantiationInMultipleTranslationUnitsTest fixture class
+// is defined in gtest-param-test_test.h.
+TEST_P(InstantiationInMultipleTranslaionUnitsTest, IsMultipleOf42) {
+  EXPECT_EQ(0, GetParam() % 42);
+}
+INSTANTIATE_TEST_CASE_P(Sequence1,
+                        InstantiationInMultipleTranslaionUnitsTest,
+                        Values(42, 42*2));
+
+// Tests that each iteration of parameterized test runs in a separate test
+// object.
+class SeparateInstanceTest : public TestWithParam<int> {
+ public:
+  SeparateInstanceTest() : count_(0) {}
+
+  static void TearDownTestCase() {
+    EXPECT_GE(global_count_, 2)
+        << "If some (but not all) SeparateInstanceTest tests have been "
+        << "filtered out this test will fail. Make sure that all "
+        << "GeneratorEvaluationTest are selected or de-selected together "
+        << "by the test filter.";
+  }
+
+ protected:
+  int count_;
+  static int global_count_;
+};
+int SeparateInstanceTest::global_count_ = 0;
+
+TEST_P(SeparateInstanceTest, TestsRunInSeparateInstances) {
+  EXPECT_EQ(0, count_++);
+  global_count_++;
+}
+INSTANTIATE_TEST_CASE_P(FourElemSequence, SeparateInstanceTest, Range(1, 4));
+
+// Tests that all instantiations of a test have named appropriately. Test
+// defined with TEST_P(TestCaseName, TestName) and instantiated with
+// INSTANTIATE_TEST_CASE_P(SequenceName, TestCaseName, generator) must be named
+// SequenceName/TestCaseName.TestName/i, where i is the 0-based index of the
+// sequence element used to instantiate the test.
+class NamingTest : public TestWithParam<int> {};
+
+TEST_P(NamingTest, TestsReportCorrectNamesAndParameters) {
+  const ::testing::TestInfo* const test_info =
+     ::testing::UnitTest::GetInstance()->current_test_info();
+
+  EXPECT_STREQ("ZeroToFiveSequence/NamingTest", test_info->test_case_name());
+
+  Message index_stream;
+  index_stream << "TestsReportCorrectNamesAndParameters/" << GetParam();
+  EXPECT_STREQ(index_stream.GetString().c_str(), test_info->name());
+
+  EXPECT_EQ(::testing::PrintToString(GetParam()), test_info->value_param());
+}
+
+INSTANTIATE_TEST_CASE_P(ZeroToFiveSequence, NamingTest, Range(0, 5));
+
+// Class that cannot be streamed into an ostream.  It needs to be copyable
+// (and, in case of MSVC, also assignable) in order to be a test parameter
+// type.  Its default copy constructor and assignment operator do exactly
+// what we need.
+class Unstreamable {
+ public:
+  explicit Unstreamable(int value) : value_(value) {}
+
+ private:
+  int value_;
+};
+
+class CommentTest : public TestWithParam<Unstreamable> {};
+
+TEST_P(CommentTest, TestsCorrectlyReportUnstreamableParams) {
+  const ::testing::TestInfo* const test_info =
+     ::testing::UnitTest::GetInstance()->current_test_info();
+
+  EXPECT_EQ(::testing::PrintToString(GetParam()), test_info->value_param());
+}
+
+INSTANTIATE_TEST_CASE_P(InstantiationWithComments,
+                        CommentTest,
+                        Values(Unstreamable(1)));
+
+// Verify that we can create a hierarchy of test fixtures, where the base
+// class fixture is not parameterized and the derived class is. In this case
+// ParameterizedDerivedTest inherits from NonParameterizedBaseTest.  We
+// perform simple tests on both.
+class NonParameterizedBaseTest : public ::testing::Test {
+ public:
+  NonParameterizedBaseTest() : n_(17) { }
+ protected:
+  int n_;
+};
+
+class ParameterizedDerivedTest : public NonParameterizedBaseTest,
+                                 public ::testing::WithParamInterface<int> {
+ protected:
+  ParameterizedDerivedTest() : count_(0) { }
+  int count_;
+  static int global_count_;
+};
+
+int ParameterizedDerivedTest::global_count_ = 0;
+
+TEST_F(NonParameterizedBaseTest, FixtureIsInitialized) {
+  EXPECT_EQ(17, n_);
+}
+
+TEST_P(ParameterizedDerivedTest, SeesSequence) {
+  EXPECT_EQ(17, n_);
+  EXPECT_EQ(0, count_++);
+  EXPECT_EQ(GetParam(), global_count_++);
+}
+
+INSTANTIATE_TEST_CASE_P(RangeZeroToFive, ParameterizedDerivedTest, Range(0, 5));
+
+#endif  // GTEST_HAS_PARAM_TEST
+
+TEST(CompileTest, CombineIsDefinedOnlyWhenGtestHasParamTestIsDefined) {
+#if GTEST_HAS_COMBINE && !GTEST_HAS_PARAM_TEST
+  FAIL() << "GTEST_HAS_COMBINE is defined while GTEST_HAS_PARAM_TEST is not\n"
+#endif
+}
+
+int main(int argc, char **argv) {
+#if GTEST_HAS_PARAM_TEST
+  // Used in TestGenerationTest test case.
+  AddGlobalTestEnvironment(TestGenerationTest::Environment::Instance());
+  // Used in GeneratorEvaluationTest test case. Tests that the updated value
+  // will be picked up for instantiating tests in GeneratorEvaluationTest.
+  GeneratorEvaluationTest::set_param_value(1);
+#endif  // GTEST_HAS_PARAM_TEST
+
+  ::testing::InitGoogleTest(&argc, argv);
+
+#if GTEST_HAS_PARAM_TEST
+  // Used in GeneratorEvaluationTest test case. Tests that value updated
+  // here will NOT be used for instantiating tests in
+  // GeneratorEvaluationTest.
+  GeneratorEvaluationTest::set_param_value(2);
+#endif  // GTEST_HAS_PARAM_TEST
+
+  return RUN_ALL_TESTS();
+}
diff --git a/google-breakpad/src/testing/gtest/test/gtest-param-test_test.h b/google-breakpad/src/testing/gtest/test/gtest-param-test_test.h
new file mode 100644
index 0000000..26ea122
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest-param-test_test.h
@@ -0,0 +1,57 @@
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Authors: vladl@google.com (Vlad Losev)
+//
+// The Google C++ Testing Framework (Google Test)
+//
+// This header file provides classes and functions used internally
+// for testing Google Test itself.
+
+#ifndef GTEST_TEST_GTEST_PARAM_TEST_TEST_H_
+#define GTEST_TEST_GTEST_PARAM_TEST_TEST_H_
+
+#include "gtest/gtest.h"
+
+#if GTEST_HAS_PARAM_TEST
+
+// Test fixture for testing definition and instantiation of a test
+// in separate translation units.
+class ExternalInstantiationTest : public ::testing::TestWithParam<int> {
+};
+
+// Test fixture for testing instantiation of a test in multiple
+// translation units.
+class InstantiationInMultipleTranslaionUnitsTest
+    : public ::testing::TestWithParam<int> {
+};
+
+#endif  // GTEST_HAS_PARAM_TEST
+
+#endif  // GTEST_TEST_GTEST_PARAM_TEST_TEST_H_
diff --git a/google-breakpad/src/testing/gtest/test/gtest-port_test.cc b/google-breakpad/src/testing/gtest/test/gtest-port_test.cc
new file mode 100644
index 0000000..75471c3
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest-port_test.cc
@@ -0,0 +1,1214 @@
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Authors: vladl@google.com (Vlad Losev), wan@google.com (Zhanyong Wan)
+//
+// This file tests the internal cross-platform support utilities.
+
+#include "gtest/internal/gtest-port.h"
+
+#include <stdio.h>
+
+#if GTEST_OS_MAC
+# include <time.h>
+#endif  // GTEST_OS_MAC
+
+#include <list>
+#include <utility>  // For std::pair and std::make_pair.
+#include <vector>
+
+#include "gtest/gtest.h"
+#include "gtest/gtest-spi.h"
+
+// Indicates that this translation unit is part of Google Test's
+// implementation.  It must come before gtest-internal-inl.h is
+// included, or there will be a compiler error.  This trick is to
+// prevent a user from accidentally including gtest-internal-inl.h in
+// his code.
+#define GTEST_IMPLEMENTATION_ 1
+#include "src/gtest-internal-inl.h"
+#undef GTEST_IMPLEMENTATION_
+
+using std::make_pair;
+using std::pair;
+
+namespace testing {
+namespace internal {
+
+class Base {
+ public:
+  // Copy constructor and assignment operator do exactly what we need, so we
+  // use them.
+  Base() : member_(0) {}
+  explicit Base(int n) : member_(n) {}
+  virtual ~Base() {}
+  int member() { return member_; }
+
+ private:
+  int member_;
+};
+
+class Derived : public Base {
+ public:
+  explicit Derived(int n) : Base(n) {}
+};
+
+TEST(ImplicitCastTest, ConvertsPointers) {
+  Derived derived(0);
+  EXPECT_TRUE(&derived == ::testing::internal::ImplicitCast_<Base*>(&derived));
+}
+
+TEST(ImplicitCastTest, CanUseInheritance) {
+  Derived derived(1);
+  Base base = ::testing::internal::ImplicitCast_<Base>(derived);
+  EXPECT_EQ(derived.member(), base.member());
+}
+
+class Castable {
+ public:
+  explicit Castable(bool* converted) : converted_(converted) {}
+  operator Base() {
+    *converted_ = true;
+    return Base();
+  }
+
+ private:
+  bool* converted_;
+};
+
+TEST(ImplicitCastTest, CanUseNonConstCastOperator) {
+  bool converted = false;
+  Castable castable(&converted);
+  Base base = ::testing::internal::ImplicitCast_<Base>(castable);
+  EXPECT_TRUE(converted);
+}
+
+class ConstCastable {
+ public:
+  explicit ConstCastable(bool* converted) : converted_(converted) {}
+  operator Base() const {
+    *converted_ = true;
+    return Base();
+  }
+
+ private:
+  bool* converted_;
+};
+
+TEST(ImplicitCastTest, CanUseConstCastOperatorOnConstValues) {
+  bool converted = false;
+  const ConstCastable const_castable(&converted);
+  Base base = ::testing::internal::ImplicitCast_<Base>(const_castable);
+  EXPECT_TRUE(converted);
+}
+
+class ConstAndNonConstCastable {
+ public:
+  ConstAndNonConstCastable(bool* converted, bool* const_converted)
+      : converted_(converted), const_converted_(const_converted) {}
+  operator Base() {
+    *converted_ = true;
+    return Base();
+  }
+  operator Base() const {
+    *const_converted_ = true;
+    return Base();
+  }
+
+ private:
+  bool* converted_;
+  bool* const_converted_;
+};
+
+TEST(ImplicitCastTest, CanSelectBetweenConstAndNonConstCasrAppropriately) {
+  bool converted = false;
+  bool const_converted = false;
+  ConstAndNonConstCastable castable(&converted, &const_converted);
+  Base base = ::testing::internal::ImplicitCast_<Base>(castable);
+  EXPECT_TRUE(converted);
+  EXPECT_FALSE(const_converted);
+
+  converted = false;
+  const_converted = false;
+  const ConstAndNonConstCastable const_castable(&converted, &const_converted);
+  base = ::testing::internal::ImplicitCast_<Base>(const_castable);
+  EXPECT_FALSE(converted);
+  EXPECT_TRUE(const_converted);
+}
+
+class To {
+ public:
+  To(bool* converted) { *converted = true; }  // NOLINT
+};
+
+TEST(ImplicitCastTest, CanUseImplicitConstructor) {
+  bool converted = false;
+  To to = ::testing::internal::ImplicitCast_<To>(&converted);
+  (void)to;
+  EXPECT_TRUE(converted);
+}
+
+TEST(IteratorTraitsTest, WorksForSTLContainerIterators) {
+  StaticAssertTypeEq<int,
+      IteratorTraits< ::std::vector<int>::const_iterator>::value_type>();
+  StaticAssertTypeEq<bool,
+      IteratorTraits< ::std::list<bool>::iterator>::value_type>();
+}
+
+TEST(IteratorTraitsTest, WorksForPointerToNonConst) {
+  StaticAssertTypeEq<char, IteratorTraits<char*>::value_type>();
+  StaticAssertTypeEq<const void*, IteratorTraits<const void**>::value_type>();
+}
+
+TEST(IteratorTraitsTest, WorksForPointerToConst) {
+  StaticAssertTypeEq<char, IteratorTraits<const char*>::value_type>();
+  StaticAssertTypeEq<const void*,
+      IteratorTraits<const void* const*>::value_type>();
+}
+
+// Tests that the element_type typedef is available in scoped_ptr and refers
+// to the parameter type.
+TEST(ScopedPtrTest, DefinesElementType) {
+  StaticAssertTypeEq<int, ::testing::internal::scoped_ptr<int>::element_type>();
+}
+
+// TODO(vladl@google.com): Implement THE REST of scoped_ptr tests.
+
+TEST(GtestCheckSyntaxTest, BehavesLikeASingleStatement) {
+  if (AlwaysFalse())
+    GTEST_CHECK_(false) << "This should never be executed; "
+                           "It's a compilation test only.";
+
+  if (AlwaysTrue())
+    GTEST_CHECK_(true);
+  else
+    ;  // NOLINT
+
+  if (AlwaysFalse())
+    ;  // NOLINT
+  else
+    GTEST_CHECK_(true) << "";
+}
+
+TEST(GtestCheckSyntaxTest, WorksWithSwitch) {
+  switch (0) {
+    case 1:
+      break;
+    default:
+      GTEST_CHECK_(true);
+  }
+
+  switch (0)
+    case 0:
+      GTEST_CHECK_(true) << "Check failed in switch case";
+}
+
+// Verifies behavior of FormatFileLocation.
+TEST(FormatFileLocationTest, FormatsFileLocation) {
+  EXPECT_PRED_FORMAT2(IsSubstring, "foo.cc", FormatFileLocation("foo.cc", 42));
+  EXPECT_PRED_FORMAT2(IsSubstring, "42", FormatFileLocation("foo.cc", 42));
+}
+
+TEST(FormatFileLocationTest, FormatsUnknownFile) {
+  EXPECT_PRED_FORMAT2(
+      IsSubstring, "unknown file", FormatFileLocation(NULL, 42));
+  EXPECT_PRED_FORMAT2(IsSubstring, "42", FormatFileLocation(NULL, 42));
+}
+
+TEST(FormatFileLocationTest, FormatsUknownLine) {
+  EXPECT_EQ("foo.cc:", FormatFileLocation("foo.cc", -1));
+}
+
+TEST(FormatFileLocationTest, FormatsUknownFileAndLine) {
+  EXPECT_EQ("unknown file:", FormatFileLocation(NULL, -1));
+}
+
+// Verifies behavior of FormatCompilerIndependentFileLocation.
+TEST(FormatCompilerIndependentFileLocationTest, FormatsFileLocation) {
+  EXPECT_EQ("foo.cc:42", FormatCompilerIndependentFileLocation("foo.cc", 42));
+}
+
+TEST(FormatCompilerIndependentFileLocationTest, FormatsUknownFile) {
+  EXPECT_EQ("unknown file:42",
+            FormatCompilerIndependentFileLocation(NULL, 42));
+}
+
+TEST(FormatCompilerIndependentFileLocationTest, FormatsUknownLine) {
+  EXPECT_EQ("foo.cc", FormatCompilerIndependentFileLocation("foo.cc", -1));
+}
+
+TEST(FormatCompilerIndependentFileLocationTest, FormatsUknownFileAndLine) {
+  EXPECT_EQ("unknown file", FormatCompilerIndependentFileLocation(NULL, -1));
+}
+
+#if GTEST_OS_MAC || GTEST_OS_QNX
+void* ThreadFunc(void* data) {
+  pthread_mutex_t* mutex = static_cast<pthread_mutex_t*>(data);
+  pthread_mutex_lock(mutex);
+  pthread_mutex_unlock(mutex);
+  return NULL;
+}
+
+TEST(GetThreadCountTest, ReturnsCorrectValue) {
+  EXPECT_EQ(1U, GetThreadCount());
+  pthread_mutex_t mutex;
+  pthread_attr_t  attr;
+  pthread_t       thread_id;
+
+  // TODO(vladl@google.com): turn mutex into internal::Mutex for automatic
+  // destruction.
+  pthread_mutex_init(&mutex, NULL);
+  pthread_mutex_lock(&mutex);
+  ASSERT_EQ(0, pthread_attr_init(&attr));
+  ASSERT_EQ(0, pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE));
+
+  const int status = pthread_create(&thread_id, &attr, &ThreadFunc, &mutex);
+  ASSERT_EQ(0, pthread_attr_destroy(&attr));
+  ASSERT_EQ(0, status);
+  EXPECT_EQ(2U, GetThreadCount());
+  pthread_mutex_unlock(&mutex);
+
+  void* dummy;
+  ASSERT_EQ(0, pthread_join(thread_id, &dummy));
+
+# if GTEST_OS_MAC
+
+  // MacOS X may not immediately report the updated thread count after
+  // joining a thread, causing flakiness in this test. To counter that, we
+  // wait for up to .5 seconds for the OS to report the correct value.
+  for (int i = 0; i < 5; ++i) {
+    if (GetThreadCount() == 1)
+      break;
+
+    SleepMilliseconds(100);
+  }
+
+# endif  // GTEST_OS_MAC
+
+  EXPECT_EQ(1U, GetThreadCount());
+  pthread_mutex_destroy(&mutex);
+}
+#else
+TEST(GetThreadCountTest, ReturnsZeroWhenUnableToCountThreads) {
+  EXPECT_EQ(0U, GetThreadCount());
+}
+#endif  // GTEST_OS_MAC || GTEST_OS_QNX
+
+TEST(GtestCheckDeathTest, DiesWithCorrectOutputOnFailure) {
+  const bool a_false_condition = false;
+  const char regex[] =
+#ifdef _MSC_VER
+     "gtest-port_test\\.cc\\(\\d+\\):"
+#elif GTEST_USES_POSIX_RE
+     "gtest-port_test\\.cc:[0-9]+"
+#else
+     "gtest-port_test\\.cc:\\d+"
+#endif  // _MSC_VER
+     ".*a_false_condition.*Extra info.*";
+
+  EXPECT_DEATH_IF_SUPPORTED(GTEST_CHECK_(a_false_condition) << "Extra info",
+                            regex);
+}
+
+#if GTEST_HAS_DEATH_TEST
+
+TEST(GtestCheckDeathTest, LivesSilentlyOnSuccess) {
+  EXPECT_EXIT({
+      GTEST_CHECK_(true) << "Extra info";
+      ::std::cerr << "Success\n";
+      exit(0); },
+      ::testing::ExitedWithCode(0), "Success");
+}
+
+#endif  // GTEST_HAS_DEATH_TEST
+
+// Verifies that Google Test choose regular expression engine appropriate to
+// the platform. The test will produce compiler errors in case of failure.
+// For simplicity, we only cover the most important platforms here.
+TEST(RegexEngineSelectionTest, SelectsCorrectRegexEngine) {
+#if GTEST_HAS_POSIX_RE
+
+  EXPECT_TRUE(GTEST_USES_POSIX_RE);
+
+#else
+
+  EXPECT_TRUE(GTEST_USES_SIMPLE_RE);
+
+#endif
+}
+
+#if GTEST_USES_POSIX_RE
+
+# if GTEST_HAS_TYPED_TEST
+
+template <typename Str>
+class RETest : public ::testing::Test {};
+
+// Defines StringTypes as the list of all string types that class RE
+// supports.
+typedef testing::Types<
+    ::std::string,
+#  if GTEST_HAS_GLOBAL_STRING
+    ::string,
+#  endif  // GTEST_HAS_GLOBAL_STRING
+    const char*> StringTypes;
+
+TYPED_TEST_CASE(RETest, StringTypes);
+
+// Tests RE's implicit constructors.
+TYPED_TEST(RETest, ImplicitConstructorWorks) {
+  const RE empty(TypeParam(""));
+  EXPECT_STREQ("", empty.pattern());
+
+  const RE simple(TypeParam("hello"));
+  EXPECT_STREQ("hello", simple.pattern());
+
+  const RE normal(TypeParam(".*(\\w+)"));
+  EXPECT_STREQ(".*(\\w+)", normal.pattern());
+}
+
+// Tests that RE's constructors reject invalid regular expressions.
+TYPED_TEST(RETest, RejectsInvalidRegex) {
+  EXPECT_NONFATAL_FAILURE({
+    const RE invalid(TypeParam("?"));
+  }, "\"?\" is not a valid POSIX Extended regular expression.");
+}
+
+// Tests RE::FullMatch().
+TYPED_TEST(RETest, FullMatchWorks) {
+  const RE empty(TypeParam(""));
+  EXPECT_TRUE(RE::FullMatch(TypeParam(""), empty));
+  EXPECT_FALSE(RE::FullMatch(TypeParam("a"), empty));
+
+  const RE re(TypeParam("a.*z"));
+  EXPECT_TRUE(RE::FullMatch(TypeParam("az"), re));
+  EXPECT_TRUE(RE::FullMatch(TypeParam("axyz"), re));
+  EXPECT_FALSE(RE::FullMatch(TypeParam("baz"), re));
+  EXPECT_FALSE(RE::FullMatch(TypeParam("azy"), re));
+}
+
+// Tests RE::PartialMatch().
+TYPED_TEST(RETest, PartialMatchWorks) {
+  const RE empty(TypeParam(""));
+  EXPECT_TRUE(RE::PartialMatch(TypeParam(""), empty));
+  EXPECT_TRUE(RE::PartialMatch(TypeParam("a"), empty));
+
+  const RE re(TypeParam("a.*z"));
+  EXPECT_TRUE(RE::PartialMatch(TypeParam("az"), re));
+  EXPECT_TRUE(RE::PartialMatch(TypeParam("axyz"), re));
+  EXPECT_TRUE(RE::PartialMatch(TypeParam("baz"), re));
+  EXPECT_TRUE(RE::PartialMatch(TypeParam("azy"), re));
+  EXPECT_FALSE(RE::PartialMatch(TypeParam("zza"), re));
+}
+
+# endif  // GTEST_HAS_TYPED_TEST
+
+#elif GTEST_USES_SIMPLE_RE
+
+TEST(IsInSetTest, NulCharIsNotInAnySet) {
+  EXPECT_FALSE(IsInSet('\0', ""));
+  EXPECT_FALSE(IsInSet('\0', "\0"));
+  EXPECT_FALSE(IsInSet('\0', "a"));
+}
+
+TEST(IsInSetTest, WorksForNonNulChars) {
+  EXPECT_FALSE(IsInSet('a', "Ab"));
+  EXPECT_FALSE(IsInSet('c', ""));
+
+  EXPECT_TRUE(IsInSet('b', "bcd"));
+  EXPECT_TRUE(IsInSet('b', "ab"));
+}
+
+TEST(IsAsciiDigitTest, IsFalseForNonDigit) {
+  EXPECT_FALSE(IsAsciiDigit('\0'));
+  EXPECT_FALSE(IsAsciiDigit(' '));
+  EXPECT_FALSE(IsAsciiDigit('+'));
+  EXPECT_FALSE(IsAsciiDigit('-'));
+  EXPECT_FALSE(IsAsciiDigit('.'));
+  EXPECT_FALSE(IsAsciiDigit('a'));
+}
+
+TEST(IsAsciiDigitTest, IsTrueForDigit) {
+  EXPECT_TRUE(IsAsciiDigit('0'));
+  EXPECT_TRUE(IsAsciiDigit('1'));
+  EXPECT_TRUE(IsAsciiDigit('5'));
+  EXPECT_TRUE(IsAsciiDigit('9'));
+}
+
+TEST(IsAsciiPunctTest, IsFalseForNonPunct) {
+  EXPECT_FALSE(IsAsciiPunct('\0'));
+  EXPECT_FALSE(IsAsciiPunct(' '));
+  EXPECT_FALSE(IsAsciiPunct('\n'));
+  EXPECT_FALSE(IsAsciiPunct('a'));
+  EXPECT_FALSE(IsAsciiPunct('0'));
+}
+
+TEST(IsAsciiPunctTest, IsTrueForPunct) {
+  for (const char* p = "^-!\"#$%&'()*+,./:;<=>?@[\\]_`{|}~"; *p; p++) {
+    EXPECT_PRED1(IsAsciiPunct, *p);
+  }
+}
+
+TEST(IsRepeatTest, IsFalseForNonRepeatChar) {
+  EXPECT_FALSE(IsRepeat('\0'));
+  EXPECT_FALSE(IsRepeat(' '));
+  EXPECT_FALSE(IsRepeat('a'));
+  EXPECT_FALSE(IsRepeat('1'));
+  EXPECT_FALSE(IsRepeat('-'));
+}
+
+TEST(IsRepeatTest, IsTrueForRepeatChar) {
+  EXPECT_TRUE(IsRepeat('?'));
+  EXPECT_TRUE(IsRepeat('*'));
+  EXPECT_TRUE(IsRepeat('+'));
+}
+
+TEST(IsAsciiWhiteSpaceTest, IsFalseForNonWhiteSpace) {
+  EXPECT_FALSE(IsAsciiWhiteSpace('\0'));
+  EXPECT_FALSE(IsAsciiWhiteSpace('a'));
+  EXPECT_FALSE(IsAsciiWhiteSpace('1'));
+  EXPECT_FALSE(IsAsciiWhiteSpace('+'));
+  EXPECT_FALSE(IsAsciiWhiteSpace('_'));
+}
+
+TEST(IsAsciiWhiteSpaceTest, IsTrueForWhiteSpace) {
+  EXPECT_TRUE(IsAsciiWhiteSpace(' '));
+  EXPECT_TRUE(IsAsciiWhiteSpace('\n'));
+  EXPECT_TRUE(IsAsciiWhiteSpace('\r'));
+  EXPECT_TRUE(IsAsciiWhiteSpace('\t'));
+  EXPECT_TRUE(IsAsciiWhiteSpace('\v'));
+  EXPECT_TRUE(IsAsciiWhiteSpace('\f'));
+}
+
+TEST(IsAsciiWordCharTest, IsFalseForNonWordChar) {
+  EXPECT_FALSE(IsAsciiWordChar('\0'));
+  EXPECT_FALSE(IsAsciiWordChar('+'));
+  EXPECT_FALSE(IsAsciiWordChar('.'));
+  EXPECT_FALSE(IsAsciiWordChar(' '));
+  EXPECT_FALSE(IsAsciiWordChar('\n'));
+}
+
+TEST(IsAsciiWordCharTest, IsTrueForLetter) {
+  EXPECT_TRUE(IsAsciiWordChar('a'));
+  EXPECT_TRUE(IsAsciiWordChar('b'));
+  EXPECT_TRUE(IsAsciiWordChar('A'));
+  EXPECT_TRUE(IsAsciiWordChar('Z'));
+}
+
+TEST(IsAsciiWordCharTest, IsTrueForDigit) {
+  EXPECT_TRUE(IsAsciiWordChar('0'));
+  EXPECT_TRUE(IsAsciiWordChar('1'));
+  EXPECT_TRUE(IsAsciiWordChar('7'));
+  EXPECT_TRUE(IsAsciiWordChar('9'));
+}
+
+TEST(IsAsciiWordCharTest, IsTrueForUnderscore) {
+  EXPECT_TRUE(IsAsciiWordChar('_'));
+}
+
+TEST(IsValidEscapeTest, IsFalseForNonPrintable) {
+  EXPECT_FALSE(IsValidEscape('\0'));
+  EXPECT_FALSE(IsValidEscape('\007'));
+}
+
+TEST(IsValidEscapeTest, IsFalseForDigit) {
+  EXPECT_FALSE(IsValidEscape('0'));
+  EXPECT_FALSE(IsValidEscape('9'));
+}
+
+TEST(IsValidEscapeTest, IsFalseForWhiteSpace) {
+  EXPECT_FALSE(IsValidEscape(' '));
+  EXPECT_FALSE(IsValidEscape('\n'));
+}
+
+TEST(IsValidEscapeTest, IsFalseForSomeLetter) {
+  EXPECT_FALSE(IsValidEscape('a'));
+  EXPECT_FALSE(IsValidEscape('Z'));
+}
+
+TEST(IsValidEscapeTest, IsTrueForPunct) {
+  EXPECT_TRUE(IsValidEscape('.'));
+  EXPECT_TRUE(IsValidEscape('-'));
+  EXPECT_TRUE(IsValidEscape('^'));
+  EXPECT_TRUE(IsValidEscape('$'));
+  EXPECT_TRUE(IsValidEscape('('));
+  EXPECT_TRUE(IsValidEscape(']'));
+  EXPECT_TRUE(IsValidEscape('{'));
+  EXPECT_TRUE(IsValidEscape('|'));
+}
+
+TEST(IsValidEscapeTest, IsTrueForSomeLetter) {
+  EXPECT_TRUE(IsValidEscape('d'));
+  EXPECT_TRUE(IsValidEscape('D'));
+  EXPECT_TRUE(IsValidEscape('s'));
+  EXPECT_TRUE(IsValidEscape('S'));
+  EXPECT_TRUE(IsValidEscape('w'));
+  EXPECT_TRUE(IsValidEscape('W'));
+}
+
+TEST(AtomMatchesCharTest, EscapedPunct) {
+  EXPECT_FALSE(AtomMatchesChar(true, '\\', '\0'));
+  EXPECT_FALSE(AtomMatchesChar(true, '\\', ' '));
+  EXPECT_FALSE(AtomMatchesChar(true, '_', '.'));
+  EXPECT_FALSE(AtomMatchesChar(true, '.', 'a'));
+
+  EXPECT_TRUE(AtomMatchesChar(true, '\\', '\\'));
+  EXPECT_TRUE(AtomMatchesChar(true, '_', '_'));
+  EXPECT_TRUE(AtomMatchesChar(true, '+', '+'));
+  EXPECT_TRUE(AtomMatchesChar(true, '.', '.'));
+}
+
+TEST(AtomMatchesCharTest, Escaped_d) {
+  EXPECT_FALSE(AtomMatchesChar(true, 'd', '\0'));
+  EXPECT_FALSE(AtomMatchesChar(true, 'd', 'a'));
+  EXPECT_FALSE(AtomMatchesChar(true, 'd', '.'));
+
+  EXPECT_TRUE(AtomMatchesChar(true, 'd', '0'));
+  EXPECT_TRUE(AtomMatchesChar(true, 'd', '9'));
+}
+
+TEST(AtomMatchesCharTest, Escaped_D) {
+  EXPECT_FALSE(AtomMatchesChar(true, 'D', '0'));
+  EXPECT_FALSE(AtomMatchesChar(true, 'D', '9'));
+
+  EXPECT_TRUE(AtomMatchesChar(true, 'D', '\0'));
+  EXPECT_TRUE(AtomMatchesChar(true, 'D', 'a'));
+  EXPECT_TRUE(AtomMatchesChar(true, 'D', '-'));
+}
+
+TEST(AtomMatchesCharTest, Escaped_s) {
+  EXPECT_FALSE(AtomMatchesChar(true, 's', '\0'));
+  EXPECT_FALSE(AtomMatchesChar(true, 's', 'a'));
+  EXPECT_FALSE(AtomMatchesChar(true, 's', '.'));
+  EXPECT_FALSE(AtomMatchesChar(true, 's', '9'));
+
+  EXPECT_TRUE(AtomMatchesChar(true, 's', ' '));
+  EXPECT_TRUE(AtomMatchesChar(true, 's', '\n'));
+  EXPECT_TRUE(AtomMatchesChar(true, 's', '\t'));
+}
+
+TEST(AtomMatchesCharTest, Escaped_S) {
+  EXPECT_FALSE(AtomMatchesChar(true, 'S', ' '));
+  EXPECT_FALSE(AtomMatchesChar(true, 'S', '\r'));
+
+  EXPECT_TRUE(AtomMatchesChar(true, 'S', '\0'));
+  EXPECT_TRUE(AtomMatchesChar(true, 'S', 'a'));
+  EXPECT_TRUE(AtomMatchesChar(true, 'S', '9'));
+}
+
+TEST(AtomMatchesCharTest, Escaped_w) {
+  EXPECT_FALSE(AtomMatchesChar(true, 'w', '\0'));
+  EXPECT_FALSE(AtomMatchesChar(true, 'w', '+'));
+  EXPECT_FALSE(AtomMatchesChar(true, 'w', ' '));
+  EXPECT_FALSE(AtomMatchesChar(true, 'w', '\n'));
+
+  EXPECT_TRUE(AtomMatchesChar(true, 'w', '0'));
+  EXPECT_TRUE(AtomMatchesChar(true, 'w', 'b'));
+  EXPECT_TRUE(AtomMatchesChar(true, 'w', 'C'));
+  EXPECT_TRUE(AtomMatchesChar(true, 'w', '_'));
+}
+
+TEST(AtomMatchesCharTest, Escaped_W) {
+  EXPECT_FALSE(AtomMatchesChar(true, 'W', 'A'));
+  EXPECT_FALSE(AtomMatchesChar(true, 'W', 'b'));
+  EXPECT_FALSE(AtomMatchesChar(true, 'W', '9'));
+  EXPECT_FALSE(AtomMatchesChar(true, 'W', '_'));
+
+  EXPECT_TRUE(AtomMatchesChar(true, 'W', '\0'));
+  EXPECT_TRUE(AtomMatchesChar(true, 'W', '*'));
+  EXPECT_TRUE(AtomMatchesChar(true, 'W', '\n'));
+}
+
+TEST(AtomMatchesCharTest, EscapedWhiteSpace) {
+  EXPECT_FALSE(AtomMatchesChar(true, 'f', '\0'));
+  EXPECT_FALSE(AtomMatchesChar(true, 'f', '\n'));
+  EXPECT_FALSE(AtomMatchesChar(true, 'n', '\0'));
+  EXPECT_FALSE(AtomMatchesChar(true, 'n', '\r'));
+  EXPECT_FALSE(AtomMatchesChar(true, 'r', '\0'));
+  EXPECT_FALSE(AtomMatchesChar(true, 'r', 'a'));
+  EXPECT_FALSE(AtomMatchesChar(true, 't', '\0'));
+  EXPECT_FALSE(AtomMatchesChar(true, 't', 't'));
+  EXPECT_FALSE(AtomMatchesChar(true, 'v', '\0'));
+  EXPECT_FALSE(AtomMatchesChar(true, 'v', '\f'));
+
+  EXPECT_TRUE(AtomMatchesChar(true, 'f', '\f'));
+  EXPECT_TRUE(AtomMatchesChar(true, 'n', '\n'));
+  EXPECT_TRUE(AtomMatchesChar(true, 'r', '\r'));
+  EXPECT_TRUE(AtomMatchesChar(true, 't', '\t'));
+  EXPECT_TRUE(AtomMatchesChar(true, 'v', '\v'));
+}
+
+TEST(AtomMatchesCharTest, UnescapedDot) {
+  EXPECT_FALSE(AtomMatchesChar(false, '.', '\n'));
+
+  EXPECT_TRUE(AtomMatchesChar(false, '.', '\0'));
+  EXPECT_TRUE(AtomMatchesChar(false, '.', '.'));
+  EXPECT_TRUE(AtomMatchesChar(false, '.', 'a'));
+  EXPECT_TRUE(AtomMatchesChar(false, '.', ' '));
+}
+
+TEST(AtomMatchesCharTest, UnescapedChar) {
+  EXPECT_FALSE(AtomMatchesChar(false, 'a', '\0'));
+  EXPECT_FALSE(AtomMatchesChar(false, 'a', 'b'));
+  EXPECT_FALSE(AtomMatchesChar(false, '$', 'a'));
+
+  EXPECT_TRUE(AtomMatchesChar(false, '$', '$'));
+  EXPECT_TRUE(AtomMatchesChar(false, '5', '5'));
+  EXPECT_TRUE(AtomMatchesChar(false, 'Z', 'Z'));
+}
+
+TEST(ValidateRegexTest, GeneratesFailureAndReturnsFalseForInvalid) {
+  EXPECT_NONFATAL_FAILURE(ASSERT_FALSE(ValidateRegex(NULL)),
+                          "NULL is not a valid simple regular expression");
+  EXPECT_NONFATAL_FAILURE(
+      ASSERT_FALSE(ValidateRegex("a\\")),
+      "Syntax error at index 1 in simple regular expression \"a\\\": ");
+  EXPECT_NONFATAL_FAILURE(ASSERT_FALSE(ValidateRegex("a\\")),
+                          "'\\' cannot appear at the end");
+  EXPECT_NONFATAL_FAILURE(ASSERT_FALSE(ValidateRegex("\\n\\")),
+                          "'\\' cannot appear at the end");
+  EXPECT_NONFATAL_FAILURE(ASSERT_FALSE(ValidateRegex("\\s\\hb")),
+                          "invalid escape sequence \"\\h\"");
+  EXPECT_NONFATAL_FAILURE(ASSERT_FALSE(ValidateRegex("^^")),
+                          "'^' can only appear at the beginning");
+  EXPECT_NONFATAL_FAILURE(ASSERT_FALSE(ValidateRegex(".*^b")),
+                          "'^' can only appear at the beginning");
+  EXPECT_NONFATAL_FAILURE(ASSERT_FALSE(ValidateRegex("$$")),
+                          "'$' can only appear at the end");
+  EXPECT_NONFATAL_FAILURE(ASSERT_FALSE(ValidateRegex("^$a")),
+                          "'$' can only appear at the end");
+  EXPECT_NONFATAL_FAILURE(ASSERT_FALSE(ValidateRegex("a(b")),
+                          "'(' is unsupported");
+  EXPECT_NONFATAL_FAILURE(ASSERT_FALSE(ValidateRegex("ab)")),
+                          "')' is unsupported");
+  EXPECT_NONFATAL_FAILURE(ASSERT_FALSE(ValidateRegex("[ab")),
+                          "'[' is unsupported");
+  EXPECT_NONFATAL_FAILURE(ASSERT_FALSE(ValidateRegex("a{2")),
+                          "'{' is unsupported");
+  EXPECT_NONFATAL_FAILURE(ASSERT_FALSE(ValidateRegex("?")),
+                          "'?' can only follow a repeatable token");
+  EXPECT_NONFATAL_FAILURE(ASSERT_FALSE(ValidateRegex("^*")),
+                          "'*' can only follow a repeatable token");
+  EXPECT_NONFATAL_FAILURE(ASSERT_FALSE(ValidateRegex("5*+")),
+                          "'+' can only follow a repeatable token");
+}
+
+TEST(ValidateRegexTest, ReturnsTrueForValid) {
+  EXPECT_TRUE(ValidateRegex(""));
+  EXPECT_TRUE(ValidateRegex("a"));
+  EXPECT_TRUE(ValidateRegex(".*"));
+  EXPECT_TRUE(ValidateRegex("^a_+"));
+  EXPECT_TRUE(ValidateRegex("^a\\t\\&?"));
+  EXPECT_TRUE(ValidateRegex("09*$"));
+  EXPECT_TRUE(ValidateRegex("^Z$"));
+  EXPECT_TRUE(ValidateRegex("a\\^Z\\$\\(\\)\\|\\[\\]\\{\\}"));
+}
+
+TEST(MatchRepetitionAndRegexAtHeadTest, WorksForZeroOrOne) {
+  EXPECT_FALSE(MatchRepetitionAndRegexAtHead(false, 'a', '?', "a", "ba"));
+  // Repeating more than once.
+  EXPECT_FALSE(MatchRepetitionAndRegexAtHead(false, 'a', '?', "b", "aab"));
+
+  // Repeating zero times.
+  EXPECT_TRUE(MatchRepetitionAndRegexAtHead(false, 'a', '?', "b", "ba"));
+  // Repeating once.
+  EXPECT_TRUE(MatchRepetitionAndRegexAtHead(false, 'a', '?', "b", "ab"));
+  EXPECT_TRUE(MatchRepetitionAndRegexAtHead(false, '#', '?', ".", "##"));
+}
+
+TEST(MatchRepetitionAndRegexAtHeadTest, WorksForZeroOrMany) {
+  EXPECT_FALSE(MatchRepetitionAndRegexAtHead(false, '.', '*', "a$", "baab"));
+
+  // Repeating zero times.
+  EXPECT_TRUE(MatchRepetitionAndRegexAtHead(false, '.', '*', "b", "bc"));
+  // Repeating once.
+  EXPECT_TRUE(MatchRepetitionAndRegexAtHead(false, '.', '*', "b", "abc"));
+  // Repeating more than once.
+  EXPECT_TRUE(MatchRepetitionAndRegexAtHead(true, 'w', '*', "-", "ab_1-g"));
+}
+
+TEST(MatchRepetitionAndRegexAtHeadTest, WorksForOneOrMany) {
+  EXPECT_FALSE(MatchRepetitionAndRegexAtHead(false, '.', '+', "a$", "baab"));
+  // Repeating zero times.
+  EXPECT_FALSE(MatchRepetitionAndRegexAtHead(false, '.', '+', "b", "bc"));
+
+  // Repeating once.
+  EXPECT_TRUE(MatchRepetitionAndRegexAtHead(false, '.', '+', "b", "abc"));
+  // Repeating more than once.
+  EXPECT_TRUE(MatchRepetitionAndRegexAtHead(true, 'w', '+', "-", "ab_1-g"));
+}
+
+TEST(MatchRegexAtHeadTest, ReturnsTrueForEmptyRegex) {
+  EXPECT_TRUE(MatchRegexAtHead("", ""));
+  EXPECT_TRUE(MatchRegexAtHead("", "ab"));
+}
+
+TEST(MatchRegexAtHeadTest, WorksWhenDollarIsInRegex) {
+  EXPECT_FALSE(MatchRegexAtHead("$", "a"));
+
+  EXPECT_TRUE(MatchRegexAtHead("$", ""));
+  EXPECT_TRUE(MatchRegexAtHead("a$", "a"));
+}
+
+TEST(MatchRegexAtHeadTest, WorksWhenRegexStartsWithEscapeSequence) {
+  EXPECT_FALSE(MatchRegexAtHead("\\w", "+"));
+  EXPECT_FALSE(MatchRegexAtHead("\\W", "ab"));
+
+  EXPECT_TRUE(MatchRegexAtHead("\\sa", "\nab"));
+  EXPECT_TRUE(MatchRegexAtHead("\\d", "1a"));
+}
+
+TEST(MatchRegexAtHeadTest, WorksWhenRegexStartsWithRepetition) {
+  EXPECT_FALSE(MatchRegexAtHead(".+a", "abc"));
+  EXPECT_FALSE(MatchRegexAtHead("a?b", "aab"));
+
+  EXPECT_TRUE(MatchRegexAtHead(".*a", "bc12-ab"));
+  EXPECT_TRUE(MatchRegexAtHead("a?b", "b"));
+  EXPECT_TRUE(MatchRegexAtHead("a?b", "ab"));
+}
+
+TEST(MatchRegexAtHeadTest,
+     WorksWhenRegexStartsWithRepetionOfEscapeSequence) {
+  EXPECT_FALSE(MatchRegexAtHead("\\.+a", "abc"));
+  EXPECT_FALSE(MatchRegexAtHead("\\s?b", "  b"));
+
+  EXPECT_TRUE(MatchRegexAtHead("\\(*a", "((((ab"));
+  EXPECT_TRUE(MatchRegexAtHead("\\^?b", "^b"));
+  EXPECT_TRUE(MatchRegexAtHead("\\\\?b", "b"));
+  EXPECT_TRUE(MatchRegexAtHead("\\\\?b", "\\b"));
+}
+
+TEST(MatchRegexAtHeadTest, MatchesSequentially) {
+  EXPECT_FALSE(MatchRegexAtHead("ab.*c", "acabc"));
+
+  EXPECT_TRUE(MatchRegexAtHead("ab.*c", "ab-fsc"));
+}
+
+TEST(MatchRegexAnywhereTest, ReturnsFalseWhenStringIsNull) {
+  EXPECT_FALSE(MatchRegexAnywhere("", NULL));
+}
+
+TEST(MatchRegexAnywhereTest, WorksWhenRegexStartsWithCaret) {
+  EXPECT_FALSE(MatchRegexAnywhere("^a", "ba"));
+  EXPECT_FALSE(MatchRegexAnywhere("^$", "a"));
+
+  EXPECT_TRUE(MatchRegexAnywhere("^a", "ab"));
+  EXPECT_TRUE(MatchRegexAnywhere("^", "ab"));
+  EXPECT_TRUE(MatchRegexAnywhere("^$", ""));
+}
+
+TEST(MatchRegexAnywhereTest, ReturnsFalseWhenNoMatch) {
+  EXPECT_FALSE(MatchRegexAnywhere("a", "bcde123"));
+  EXPECT_FALSE(MatchRegexAnywhere("a.+a", "--aa88888888"));
+}
+
+TEST(MatchRegexAnywhereTest, ReturnsTrueWhenMatchingPrefix) {
+  EXPECT_TRUE(MatchRegexAnywhere("\\w+", "ab1_ - 5"));
+  EXPECT_TRUE(MatchRegexAnywhere(".*=", "="));
+  EXPECT_TRUE(MatchRegexAnywhere("x.*ab?.*bc", "xaaabc"));
+}
+
+TEST(MatchRegexAnywhereTest, ReturnsTrueWhenMatchingNonPrefix) {
+  EXPECT_TRUE(MatchRegexAnywhere("\\w+", "$$$ ab1_ - 5"));
+  EXPECT_TRUE(MatchRegexAnywhere("\\.+=", "=  ...="));
+}
+
+// Tests RE's implicit constructors.
+TEST(RETest, ImplicitConstructorWorks) {
+  const RE empty("");
+  EXPECT_STREQ("", empty.pattern());
+
+  const RE simple("hello");
+  EXPECT_STREQ("hello", simple.pattern());
+}
+
+// Tests that RE's constructors reject invalid regular expressions.
+TEST(RETest, RejectsInvalidRegex) {
+  EXPECT_NONFATAL_FAILURE({
+    const RE normal(NULL);
+  }, "NULL is not a valid simple regular expression");
+
+  EXPECT_NONFATAL_FAILURE({
+    const RE normal(".*(\\w+");
+  }, "'(' is unsupported");
+
+  EXPECT_NONFATAL_FAILURE({
+    const RE invalid("^?");
+  }, "'?' can only follow a repeatable token");
+}
+
+// Tests RE::FullMatch().
+TEST(RETest, FullMatchWorks) {
+  const RE empty("");
+  EXPECT_TRUE(RE::FullMatch("", empty));
+  EXPECT_FALSE(RE::FullMatch("a", empty));
+
+  const RE re1("a");
+  EXPECT_TRUE(RE::FullMatch("a", re1));
+
+  const RE re("a.*z");
+  EXPECT_TRUE(RE::FullMatch("az", re));
+  EXPECT_TRUE(RE::FullMatch("axyz", re));
+  EXPECT_FALSE(RE::FullMatch("baz", re));
+  EXPECT_FALSE(RE::FullMatch("azy", re));
+}
+
+// Tests RE::PartialMatch().
+TEST(RETest, PartialMatchWorks) {
+  const RE empty("");
+  EXPECT_TRUE(RE::PartialMatch("", empty));
+  EXPECT_TRUE(RE::PartialMatch("a", empty));
+
+  const RE re("a.*z");
+  EXPECT_TRUE(RE::PartialMatch("az", re));
+  EXPECT_TRUE(RE::PartialMatch("axyz", re));
+  EXPECT_TRUE(RE::PartialMatch("baz", re));
+  EXPECT_TRUE(RE::PartialMatch("azy", re));
+  EXPECT_FALSE(RE::PartialMatch("zza", re));
+}
+
+#endif  // GTEST_USES_POSIX_RE
+
+#if !GTEST_OS_WINDOWS_MOBILE
+
+TEST(CaptureTest, CapturesStdout) {
+  CaptureStdout();
+  fprintf(stdout, "abc");
+  EXPECT_STREQ("abc", GetCapturedStdout().c_str());
+
+  CaptureStdout();
+  fprintf(stdout, "def%cghi", '\0');
+  EXPECT_EQ(::std::string("def\0ghi", 7), ::std::string(GetCapturedStdout()));
+}
+
+TEST(CaptureTest, CapturesStderr) {
+  CaptureStderr();
+  fprintf(stderr, "jkl");
+  EXPECT_STREQ("jkl", GetCapturedStderr().c_str());
+
+  CaptureStderr();
+  fprintf(stderr, "jkl%cmno", '\0');
+  EXPECT_EQ(::std::string("jkl\0mno", 7), ::std::string(GetCapturedStderr()));
+}
+
+// Tests that stdout and stderr capture don't interfere with each other.
+TEST(CaptureTest, CapturesStdoutAndStderr) {
+  CaptureStdout();
+  CaptureStderr();
+  fprintf(stdout, "pqr");
+  fprintf(stderr, "stu");
+  EXPECT_STREQ("pqr", GetCapturedStdout().c_str());
+  EXPECT_STREQ("stu", GetCapturedStderr().c_str());
+}
+
+TEST(CaptureDeathTest, CannotReenterStdoutCapture) {
+  CaptureStdout();
+  EXPECT_DEATH_IF_SUPPORTED(CaptureStdout(),
+                            "Only one stdout capturer can exist at a time");
+  GetCapturedStdout();
+
+  // We cannot test stderr capturing using death tests as they use it
+  // themselves.
+}
+
+#endif  // !GTEST_OS_WINDOWS_MOBILE
+
+TEST(ThreadLocalTest, DefaultConstructorInitializesToDefaultValues) {
+  ThreadLocal<int> t1;
+  EXPECT_EQ(0, t1.get());
+
+  ThreadLocal<void*> t2;
+  EXPECT_TRUE(t2.get() == NULL);
+}
+
+TEST(ThreadLocalTest, SingleParamConstructorInitializesToParam) {
+  ThreadLocal<int> t1(123);
+  EXPECT_EQ(123, t1.get());
+
+  int i = 0;
+  ThreadLocal<int*> t2(&i);
+  EXPECT_EQ(&i, t2.get());
+}
+
+class NoDefaultContructor {
+ public:
+  explicit NoDefaultContructor(const char*) {}
+  NoDefaultContructor(const NoDefaultContructor&) {}
+};
+
+TEST(ThreadLocalTest, ValueDefaultContructorIsNotRequiredForParamVersion) {
+  ThreadLocal<NoDefaultContructor> bar(NoDefaultContructor("foo"));
+  bar.pointer();
+}
+
+TEST(ThreadLocalTest, GetAndPointerReturnSameValue) {
+  ThreadLocal<String> thread_local_string;
+
+  EXPECT_EQ(thread_local_string.pointer(), &(thread_local_string.get()));
+
+  // Verifies the condition still holds after calling set.
+  thread_local_string.set("foo");
+  EXPECT_EQ(thread_local_string.pointer(), &(thread_local_string.get()));
+}
+
+TEST(ThreadLocalTest, PointerAndConstPointerReturnSameValue) {
+  ThreadLocal<String> thread_local_string;
+  const ThreadLocal<String>& const_thread_local_string = thread_local_string;
+
+  EXPECT_EQ(thread_local_string.pointer(), const_thread_local_string.pointer());
+
+  thread_local_string.set("foo");
+  EXPECT_EQ(thread_local_string.pointer(), const_thread_local_string.pointer());
+}
+
+#if GTEST_IS_THREADSAFE
+
+void AddTwo(int* param) { *param += 2; }
+
+TEST(ThreadWithParamTest, ConstructorExecutesThreadFunc) {
+  int i = 40;
+  ThreadWithParam<int*> thread(&AddTwo, &i, NULL);
+  thread.Join();
+  EXPECT_EQ(42, i);
+}
+
+TEST(MutexDeathTest, AssertHeldShouldAssertWhenNotLocked) {
+  // AssertHeld() is flaky only in the presence of multiple threads accessing
+  // the lock. In this case, the test is robust.
+  EXPECT_DEATH_IF_SUPPORTED({
+    Mutex m;
+    { MutexLock lock(&m); }
+    m.AssertHeld();
+  },
+  "thread .*hold");
+}
+
+TEST(MutexTest, AssertHeldShouldNotAssertWhenLocked) {
+  Mutex m;
+  MutexLock lock(&m);
+  m.AssertHeld();
+}
+
+class AtomicCounterWithMutex {
+ public:
+  explicit AtomicCounterWithMutex(Mutex* mutex) :
+    value_(0), mutex_(mutex), random_(42) {}
+
+  void Increment() {
+    MutexLock lock(mutex_);
+    int temp = value_;
+    {
+      // Locking a mutex puts up a memory barrier, preventing reads and
+      // writes to value_ rearranged when observed from other threads.
+      //
+      // We cannot use Mutex and MutexLock here or rely on their memory
+      // barrier functionality as we are testing them here.
+      pthread_mutex_t memory_barrier_mutex;
+      GTEST_CHECK_POSIX_SUCCESS_(
+          pthread_mutex_init(&memory_barrier_mutex, NULL));
+      GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_lock(&memory_barrier_mutex));
+
+      SleepMilliseconds(random_.Generate(30));
+
+      GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_unlock(&memory_barrier_mutex));
+      GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_destroy(&memory_barrier_mutex));
+    }
+    value_ = temp + 1;
+  }
+  int value() const { return value_; }
+
+ private:
+  volatile int value_;
+  Mutex* const mutex_;  // Protects value_.
+  Random       random_;
+};
+
+void CountingThreadFunc(pair<AtomicCounterWithMutex*, int> param) {
+  for (int i = 0; i < param.second; ++i)
+      param.first->Increment();
+}
+
+// Tests that the mutex only lets one thread at a time to lock it.
+TEST(MutexTest, OnlyOneThreadCanLockAtATime) {
+  Mutex mutex;
+  AtomicCounterWithMutex locked_counter(&mutex);
+
+  typedef ThreadWithParam<pair<AtomicCounterWithMutex*, int> > ThreadType;
+  const int kCycleCount = 20;
+  const int kThreadCount = 7;
+  scoped_ptr<ThreadType> counting_threads[kThreadCount];
+  Notification threads_can_start;
+  // Creates and runs kThreadCount threads that increment locked_counter
+  // kCycleCount times each.
+  for (int i = 0; i < kThreadCount; ++i) {
+    counting_threads[i].reset(new ThreadType(&CountingThreadFunc,
+                                             make_pair(&locked_counter,
+                                                       kCycleCount),
+                                             &threads_can_start));
+  }
+  threads_can_start.Notify();
+  for (int i = 0; i < kThreadCount; ++i)
+    counting_threads[i]->Join();
+
+  // If the mutex lets more than one thread to increment the counter at a
+  // time, they are likely to encounter a race condition and have some
+  // increments overwritten, resulting in the lower then expected counter
+  // value.
+  EXPECT_EQ(kCycleCount * kThreadCount, locked_counter.value());
+}
+
+template <typename T>
+void RunFromThread(void (func)(T), T param) {
+  ThreadWithParam<T> thread(func, param, NULL);
+  thread.Join();
+}
+
+void RetrieveThreadLocalValue(pair<ThreadLocal<String>*, String*> param) {
+  *param.second = param.first->get();
+}
+
+TEST(ThreadLocalTest, ParameterizedConstructorSetsDefault) {
+  ThreadLocal<String> thread_local_string("foo");
+  EXPECT_STREQ("foo", thread_local_string.get().c_str());
+
+  thread_local_string.set("bar");
+  EXPECT_STREQ("bar", thread_local_string.get().c_str());
+
+  String result;
+  RunFromThread(&RetrieveThreadLocalValue,
+                make_pair(&thread_local_string, &result));
+  EXPECT_STREQ("foo", result.c_str());
+}
+
+// DestructorTracker keeps track of whether its instances have been
+// destroyed.
+static std::vector<bool> g_destroyed;
+
+class DestructorTracker {
+ public:
+  DestructorTracker() : index_(GetNewIndex()) {}
+  DestructorTracker(const DestructorTracker& /* rhs */)
+      : index_(GetNewIndex()) {}
+  ~DestructorTracker() {
+    // We never access g_destroyed concurrently, so we don't need to
+    // protect the write operation under a mutex.
+    g_destroyed[index_] = true;
+  }
+
+ private:
+  static int GetNewIndex() {
+    g_destroyed.push_back(false);
+    return g_destroyed.size() - 1;
+  }
+  const int index_;
+};
+
+typedef ThreadLocal<DestructorTracker>* ThreadParam;
+
+void CallThreadLocalGet(ThreadParam thread_local_param) {
+  thread_local_param->get();
+}
+
+// Tests that when a ThreadLocal object dies in a thread, it destroys
+// the managed object for that thread.
+TEST(ThreadLocalTest, DestroysManagedObjectForOwnThreadWhenDying) {
+  g_destroyed.clear();
+
+  {
+    // The next line default constructs a DestructorTracker object as
+    // the default value of objects managed by thread_local_tracker.
+    ThreadLocal<DestructorTracker> thread_local_tracker;
+    ASSERT_EQ(1U, g_destroyed.size());
+    ASSERT_FALSE(g_destroyed[0]);
+
+    // This creates another DestructorTracker object for the main thread.
+    thread_local_tracker.get();
+    ASSERT_EQ(2U, g_destroyed.size());
+    ASSERT_FALSE(g_destroyed[0]);
+    ASSERT_FALSE(g_destroyed[1]);
+  }
+
+  // Now thread_local_tracker has died.  It should have destroyed both the
+  // default value shared by all threads and the value for the main
+  // thread.
+  ASSERT_EQ(2U, g_destroyed.size());
+  EXPECT_TRUE(g_destroyed[0]);
+  EXPECT_TRUE(g_destroyed[1]);
+
+  g_destroyed.clear();
+}
+
+// Tests that when a thread exits, the thread-local object for that
+// thread is destroyed.
+TEST(ThreadLocalTest, DestroysManagedObjectAtThreadExit) {
+  g_destroyed.clear();
+
+  {
+    // The next line default constructs a DestructorTracker object as
+    // the default value of objects managed by thread_local_tracker.
+    ThreadLocal<DestructorTracker> thread_local_tracker;
+    ASSERT_EQ(1U, g_destroyed.size());
+    ASSERT_FALSE(g_destroyed[0]);
+
+    // This creates another DestructorTracker object in the new thread.
+    ThreadWithParam<ThreadParam> thread(
+        &CallThreadLocalGet, &thread_local_tracker, NULL);
+    thread.Join();
+
+    // Now the new thread has exited.  The per-thread object for it
+    // should have been destroyed.
+    ASSERT_EQ(2U, g_destroyed.size());
+    ASSERT_FALSE(g_destroyed[0]);
+    ASSERT_TRUE(g_destroyed[1]);
+  }
+
+  // Now thread_local_tracker has died.  The default value should have been
+  // destroyed too.
+  ASSERT_EQ(2U, g_destroyed.size());
+  EXPECT_TRUE(g_destroyed[0]);
+  EXPECT_TRUE(g_destroyed[1]);
+
+  g_destroyed.clear();
+}
+
+TEST(ThreadLocalTest, ThreadLocalMutationsAffectOnlyCurrentThread) {
+  ThreadLocal<String> thread_local_string;
+  thread_local_string.set("Foo");
+  EXPECT_STREQ("Foo", thread_local_string.get().c_str());
+
+  String result;
+  RunFromThread(&RetrieveThreadLocalValue,
+                make_pair(&thread_local_string, &result));
+  EXPECT_TRUE(result.c_str() == NULL);
+}
+
+#endif  // GTEST_IS_THREADSAFE
+
+}  // namespace internal
+}  // namespace testing
diff --git a/google-breakpad/src/testing/gtest/test/gtest-printers_test.cc b/google-breakpad/src/testing/gtest/test/gtest-printers_test.cc
new file mode 100644
index 0000000..58d9622
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest-printers_test.cc
@@ -0,0 +1,1311 @@
+// Copyright 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Google Test - The Google C++ Testing Framework
+//
+// This file tests the universal value printer.
+
+#include "gtest/gtest-printers.h"
+
+#include <ctype.h>
+#include <limits.h>
+#include <string.h>
+#include <algorithm>
+#include <deque>
+#include <list>
+#include <map>
+#include <set>
+#include <sstream>
+#include <string>
+#include <utility>
+#include <vector>
+
+#include "gtest/gtest.h"
+
+// hash_map and hash_set are available under Visual C++.
+#if _MSC_VER
+# define GTEST_HAS_HASH_MAP_ 1  // Indicates that hash_map is available.
+# include <hash_map>            // NOLINT
+# define GTEST_HAS_HASH_SET_ 1  // Indicates that hash_set is available.
+# include <hash_set>            // NOLINT
+#endif  // GTEST_OS_WINDOWS
+
+// Some user-defined types for testing the universal value printer.
+
+// An anonymous enum type.
+enum AnonymousEnum {
+  kAE1 = -1,
+  kAE2 = 1
+};
+
+// An enum without a user-defined printer.
+enum EnumWithoutPrinter {
+  kEWP1 = -2,
+  kEWP2 = 42
+};
+
+// An enum with a << operator.
+enum EnumWithStreaming {
+  kEWS1 = 10
+};
+
+std::ostream& operator<<(std::ostream& os, EnumWithStreaming e) {
+  return os << (e == kEWS1 ? "kEWS1" : "invalid");
+}
+
+// An enum with a PrintTo() function.
+enum EnumWithPrintTo {
+  kEWPT1 = 1
+};
+
+void PrintTo(EnumWithPrintTo e, std::ostream* os) {
+  *os << (e == kEWPT1 ? "kEWPT1" : "invalid");
+}
+
+// A class implicitly convertible to BiggestInt.
+class BiggestIntConvertible {
+ public:
+  operator ::testing::internal::BiggestInt() const { return 42; }
+};
+
+// A user-defined unprintable class template in the global namespace.
+template <typename T>
+class UnprintableTemplateInGlobal {
+ public:
+  UnprintableTemplateInGlobal() : value_() {}
+ private:
+  T value_;
+};
+
+// A user-defined streamable type in the global namespace.
+class StreamableInGlobal {
+ public:
+  virtual ~StreamableInGlobal() {}
+};
+
+inline void operator<<(::std::ostream& os, const StreamableInGlobal& /* x */) {
+  os << "StreamableInGlobal";
+}
+
+void operator<<(::std::ostream& os, const StreamableInGlobal* /* x */) {
+  os << "StreamableInGlobal*";
+}
+
+namespace foo {
+
+// A user-defined unprintable type in a user namespace.
+class UnprintableInFoo {
+ public:
+  UnprintableInFoo() : z_(0) { memcpy(xy_, "\xEF\x12\x0\x0\x34\xAB\x0\x0", 8); }
+ private:
+  char xy_[8];
+  double z_;
+};
+
+// A user-defined printable type in a user-chosen namespace.
+struct PrintableViaPrintTo {
+  PrintableViaPrintTo() : value() {}
+  int value;
+};
+
+void PrintTo(const PrintableViaPrintTo& x, ::std::ostream* os) {
+  *os << "PrintableViaPrintTo: " << x.value;
+}
+
+// A type with a user-defined << for printing its pointer.
+struct PointerPrintable {
+};
+
+::std::ostream& operator<<(::std::ostream& os,
+                           const PointerPrintable* /* x */) {
+  return os << "PointerPrintable*";
+}
+
+// A user-defined printable class template in a user-chosen namespace.
+template <typename T>
+class PrintableViaPrintToTemplate {
+ public:
+  explicit PrintableViaPrintToTemplate(const T& a_value) : value_(a_value) {}
+
+  const T& value() const { return value_; }
+ private:
+  T value_;
+};
+
+template <typename T>
+void PrintTo(const PrintableViaPrintToTemplate<T>& x, ::std::ostream* os) {
+  *os << "PrintableViaPrintToTemplate: " << x.value();
+}
+
+// A user-defined streamable class template in a user namespace.
+template <typename T>
+class StreamableTemplateInFoo {
+ public:
+  StreamableTemplateInFoo() : value_() {}
+
+  const T& value() const { return value_; }
+ private:
+  T value_;
+};
+
+template <typename T>
+inline ::std::ostream& operator<<(::std::ostream& os,
+                                  const StreamableTemplateInFoo<T>& x) {
+  return os << "StreamableTemplateInFoo: " << x.value();
+}
+
+}  // namespace foo
+
+namespace testing {
+namespace gtest_printers_test {
+
+using ::std::deque;
+using ::std::list;
+using ::std::make_pair;
+using ::std::map;
+using ::std::multimap;
+using ::std::multiset;
+using ::std::pair;
+using ::std::set;
+using ::std::vector;
+using ::testing::PrintToString;
+using ::testing::internal::ImplicitCast_;
+using ::testing::internal::NativeArray;
+using ::testing::internal::RE;
+using ::testing::internal::Strings;
+using ::testing::internal::UniversalTersePrint;
+using ::testing::internal::UniversalPrint;
+using ::testing::internal::UniversalTersePrintTupleFieldsToStrings;
+using ::testing::internal::UniversalPrinter;
+using ::testing::internal::kReference;
+using ::testing::internal::string;
+
+#if GTEST_HAS_TR1_TUPLE
+using ::std::tr1::make_tuple;
+using ::std::tr1::tuple;
+#endif
+
+#if _MSC_VER
+// MSVC defines the following classes in the ::stdext namespace while
+// gcc defines them in the :: namespace.  Note that they are not part
+// of the C++ standard.
+using ::stdext::hash_map;
+using ::stdext::hash_set;
+using ::stdext::hash_multimap;
+using ::stdext::hash_multiset;
+#endif
+
+// Prints a value to a string using the universal value printer.  This
+// is a helper for testing UniversalPrinter<T>::Print() for various types.
+template <typename T>
+string Print(const T& value) {
+  ::std::stringstream ss;
+  UniversalPrinter<T>::Print(value, &ss);
+  return ss.str();
+}
+
+// Prints a value passed by reference to a string, using the universal
+// value printer.  This is a helper for testing
+// UniversalPrinter<T&>::Print() for various types.
+template <typename T>
+string PrintByRef(const T& value) {
+  ::std::stringstream ss;
+  UniversalPrinter<T&>::Print(value, &ss);
+  return ss.str();
+}
+
+// Tests printing various enum types.
+
+TEST(PrintEnumTest, AnonymousEnum) {
+  EXPECT_EQ("-1", Print(kAE1));
+  EXPECT_EQ("1", Print(kAE2));
+}
+
+TEST(PrintEnumTest, EnumWithoutPrinter) {
+  EXPECT_EQ("-2", Print(kEWP1));
+  EXPECT_EQ("42", Print(kEWP2));
+}
+
+TEST(PrintEnumTest, EnumWithStreaming) {
+  EXPECT_EQ("kEWS1", Print(kEWS1));
+  EXPECT_EQ("invalid", Print(static_cast<EnumWithStreaming>(0)));
+}
+
+TEST(PrintEnumTest, EnumWithPrintTo) {
+  EXPECT_EQ("kEWPT1", Print(kEWPT1));
+  EXPECT_EQ("invalid", Print(static_cast<EnumWithPrintTo>(0)));
+}
+
+// Tests printing a class implicitly convertible to BiggestInt.
+
+TEST(PrintClassTest, BiggestIntConvertible) {
+  EXPECT_EQ("42", Print(BiggestIntConvertible()));
+}
+
+// Tests printing various char types.
+
+// char.
+TEST(PrintCharTest, PlainChar) {
+  EXPECT_EQ("'\\0'", Print('\0'));
+  EXPECT_EQ("'\\'' (39, 0x27)", Print('\''));
+  EXPECT_EQ("'\"' (34, 0x22)", Print('"'));
+  EXPECT_EQ("'?' (63, 0x3F)", Print('?'));
+  EXPECT_EQ("'\\\\' (92, 0x5C)", Print('\\'));
+  EXPECT_EQ("'\\a' (7)", Print('\a'));
+  EXPECT_EQ("'\\b' (8)", Print('\b'));
+  EXPECT_EQ("'\\f' (12, 0xC)", Print('\f'));
+  EXPECT_EQ("'\\n' (10, 0xA)", Print('\n'));
+  EXPECT_EQ("'\\r' (13, 0xD)", Print('\r'));
+  EXPECT_EQ("'\\t' (9)", Print('\t'));
+  EXPECT_EQ("'\\v' (11, 0xB)", Print('\v'));
+  EXPECT_EQ("'\\x7F' (127)", Print('\x7F'));
+  EXPECT_EQ("'\\xFF' (255)", Print('\xFF'));
+  EXPECT_EQ("' ' (32, 0x20)", Print(' '));
+  EXPECT_EQ("'a' (97, 0x61)", Print('a'));
+}
+
+// signed char.
+TEST(PrintCharTest, SignedChar) {
+  EXPECT_EQ("'\\0'", Print(static_cast<signed char>('\0')));
+  EXPECT_EQ("'\\xCE' (-50)",
+            Print(static_cast<signed char>(-50)));
+}
+
+// unsigned char.
+TEST(PrintCharTest, UnsignedChar) {
+  EXPECT_EQ("'\\0'", Print(static_cast<unsigned char>('\0')));
+  EXPECT_EQ("'b' (98, 0x62)",
+            Print(static_cast<unsigned char>('b')));
+}
+
+// Tests printing other simple, built-in types.
+
+// bool.
+TEST(PrintBuiltInTypeTest, Bool) {
+  EXPECT_EQ("false", Print(false));
+  EXPECT_EQ("true", Print(true));
+}
+
+// wchar_t.
+TEST(PrintBuiltInTypeTest, Wchar_t) {
+  EXPECT_EQ("L'\\0'", Print(L'\0'));
+  EXPECT_EQ("L'\\'' (39, 0x27)", Print(L'\''));
+  EXPECT_EQ("L'\"' (34, 0x22)", Print(L'"'));
+  EXPECT_EQ("L'?' (63, 0x3F)", Print(L'?'));
+  EXPECT_EQ("L'\\\\' (92, 0x5C)", Print(L'\\'));
+  EXPECT_EQ("L'\\a' (7)", Print(L'\a'));
+  EXPECT_EQ("L'\\b' (8)", Print(L'\b'));
+  EXPECT_EQ("L'\\f' (12, 0xC)", Print(L'\f'));
+  EXPECT_EQ("L'\\n' (10, 0xA)", Print(L'\n'));
+  EXPECT_EQ("L'\\r' (13, 0xD)", Print(L'\r'));
+  EXPECT_EQ("L'\\t' (9)", Print(L'\t'));
+  EXPECT_EQ("L'\\v' (11, 0xB)", Print(L'\v'));
+  EXPECT_EQ("L'\\x7F' (127)", Print(L'\x7F'));
+  EXPECT_EQ("L'\\xFF' (255)", Print(L'\xFF'));
+  EXPECT_EQ("L' ' (32, 0x20)", Print(L' '));
+  EXPECT_EQ("L'a' (97, 0x61)", Print(L'a'));
+  EXPECT_EQ("L'\\x576' (1398)", Print(static_cast<wchar_t>(0x576)));
+  EXPECT_EQ("L'\\xC74D' (51021)", Print(static_cast<wchar_t>(0xC74D)));
+}
+
+// Test that Int64 provides more storage than wchar_t.
+TEST(PrintTypeSizeTest, Wchar_t) {
+  EXPECT_LT(sizeof(wchar_t), sizeof(testing::internal::Int64));
+}
+
+// Various integer types.
+TEST(PrintBuiltInTypeTest, Integer) {
+  EXPECT_EQ("'\\xFF' (255)", Print(static_cast<unsigned char>(255)));  // uint8
+  EXPECT_EQ("'\\x80' (-128)", Print(static_cast<signed char>(-128)));  // int8
+  EXPECT_EQ("65535", Print(USHRT_MAX));  // uint16
+  EXPECT_EQ("-32768", Print(SHRT_MIN));  // int16
+  EXPECT_EQ("4294967295", Print(UINT_MAX));  // uint32
+  EXPECT_EQ("-2147483648", Print(INT_MIN));  // int32
+  EXPECT_EQ("18446744073709551615",
+            Print(static_cast<testing::internal::UInt64>(-1)));  // uint64
+  EXPECT_EQ("-9223372036854775808",
+            Print(static_cast<testing::internal::Int64>(1) << 63));  // int64
+}
+
+// Size types.
+TEST(PrintBuiltInTypeTest, Size_t) {
+  EXPECT_EQ("1", Print(sizeof('a')));  // size_t.
+#if !GTEST_OS_WINDOWS
+  // Windows has no ssize_t type.
+  EXPECT_EQ("-2", Print(static_cast<ssize_t>(-2)));  // ssize_t.
+#endif  // !GTEST_OS_WINDOWS
+}
+
+// Floating-points.
+TEST(PrintBuiltInTypeTest, FloatingPoints) {
+  EXPECT_EQ("1.5", Print(1.5f));   // float
+  EXPECT_EQ("-2.5", Print(-2.5));  // double
+}
+
+// Since ::std::stringstream::operator<<(const void *) formats the pointer
+// output differently with different compilers, we have to create the expected
+// output first and use it as our expectation.
+static string PrintPointer(const void *p) {
+  ::std::stringstream expected_result_stream;
+  expected_result_stream << p;
+  return expected_result_stream.str();
+}
+
+// Tests printing C strings.
+
+// const char*.
+TEST(PrintCStringTest, Const) {
+  const char* p = "World";
+  EXPECT_EQ(PrintPointer(p) + " pointing to \"World\"", Print(p));
+}
+
+// char*.
+TEST(PrintCStringTest, NonConst) {
+  char p[] = "Hi";
+  EXPECT_EQ(PrintPointer(p) + " pointing to \"Hi\"",
+            Print(static_cast<char*>(p)));
+}
+
+// NULL C string.
+TEST(PrintCStringTest, Null) {
+  const char* p = NULL;
+  EXPECT_EQ("NULL", Print(p));
+}
+
+// Tests that C strings are escaped properly.
+TEST(PrintCStringTest, EscapesProperly) {
+  const char* p = "'\"?\\\a\b\f\n\r\t\v\x7F\xFF a";
+  EXPECT_EQ(PrintPointer(p) + " pointing to \"'\\\"?\\\\\\a\\b\\f"
+            "\\n\\r\\t\\v\\x7F\\xFF a\"",
+            Print(p));
+}
+
+
+
+// MSVC compiler can be configured to define whar_t as a typedef
+// of unsigned short. Defining an overload for const wchar_t* in that case
+// would cause pointers to unsigned shorts be printed as wide strings,
+// possibly accessing more memory than intended and causing invalid
+// memory accesses. MSVC defines _NATIVE_WCHAR_T_DEFINED symbol when
+// wchar_t is implemented as a native type.
+#if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED)
+
+// const wchar_t*.
+TEST(PrintWideCStringTest, Const) {
+  const wchar_t* p = L"World";
+  EXPECT_EQ(PrintPointer(p) + " pointing to L\"World\"", Print(p));
+}
+
+// wchar_t*.
+TEST(PrintWideCStringTest, NonConst) {
+  wchar_t p[] = L"Hi";
+  EXPECT_EQ(PrintPointer(p) + " pointing to L\"Hi\"",
+            Print(static_cast<wchar_t*>(p)));
+}
+
+// NULL wide C string.
+TEST(PrintWideCStringTest, Null) {
+  const wchar_t* p = NULL;
+  EXPECT_EQ("NULL", Print(p));
+}
+
+// Tests that wide C strings are escaped properly.
+TEST(PrintWideCStringTest, EscapesProperly) {
+  const wchar_t s[] = {'\'', '"', '?', '\\', '\a', '\b', '\f', '\n', '\r',
+                       '\t', '\v', 0xD3, 0x576, 0x8D3, 0xC74D, ' ', 'a', '\0'};
+  EXPECT_EQ(PrintPointer(s) + " pointing to L\"'\\\"?\\\\\\a\\b\\f"
+            "\\n\\r\\t\\v\\xD3\\x576\\x8D3\\xC74D a\"",
+            Print(static_cast<const wchar_t*>(s)));
+}
+#endif  // native wchar_t
+
+// Tests printing pointers to other char types.
+
+// signed char*.
+TEST(PrintCharPointerTest, SignedChar) {
+  signed char* p = reinterpret_cast<signed char*>(0x1234);
+  EXPECT_EQ(PrintPointer(p), Print(p));
+  p = NULL;
+  EXPECT_EQ("NULL", Print(p));
+}
+
+// const signed char*.
+TEST(PrintCharPointerTest, ConstSignedChar) {
+  signed char* p = reinterpret_cast<signed char*>(0x1234);
+  EXPECT_EQ(PrintPointer(p), Print(p));
+  p = NULL;
+  EXPECT_EQ("NULL", Print(p));
+}
+
+// unsigned char*.
+TEST(PrintCharPointerTest, UnsignedChar) {
+  unsigned char* p = reinterpret_cast<unsigned char*>(0x1234);
+  EXPECT_EQ(PrintPointer(p), Print(p));
+  p = NULL;
+  EXPECT_EQ("NULL", Print(p));
+}
+
+// const unsigned char*.
+TEST(PrintCharPointerTest, ConstUnsignedChar) {
+  const unsigned char* p = reinterpret_cast<const unsigned char*>(0x1234);
+  EXPECT_EQ(PrintPointer(p), Print(p));
+  p = NULL;
+  EXPECT_EQ("NULL", Print(p));
+}
+
+// Tests printing pointers to simple, built-in types.
+
+// bool*.
+TEST(PrintPointerToBuiltInTypeTest, Bool) {
+  bool* p = reinterpret_cast<bool*>(0xABCD);
+  EXPECT_EQ(PrintPointer(p), Print(p));
+  p = NULL;
+  EXPECT_EQ("NULL", Print(p));
+}
+
+// void*.
+TEST(PrintPointerToBuiltInTypeTest, Void) {
+  void* p = reinterpret_cast<void*>(0xABCD);
+  EXPECT_EQ(PrintPointer(p), Print(p));
+  p = NULL;
+  EXPECT_EQ("NULL", Print(p));
+}
+
+// const void*.
+TEST(PrintPointerToBuiltInTypeTest, ConstVoid) {
+  const void* p = reinterpret_cast<const void*>(0xABCD);
+  EXPECT_EQ(PrintPointer(p), Print(p));
+  p = NULL;
+  EXPECT_EQ("NULL", Print(p));
+}
+
+// Tests printing pointers to pointers.
+TEST(PrintPointerToPointerTest, IntPointerPointer) {
+  int** p = reinterpret_cast<int**>(0xABCD);
+  EXPECT_EQ(PrintPointer(p), Print(p));
+  p = NULL;
+  EXPECT_EQ("NULL", Print(p));
+}
+
+// Tests printing (non-member) function pointers.
+
+void MyFunction(int /* n */) {}
+
+TEST(PrintPointerTest, NonMemberFunctionPointer) {
+  // We cannot directly cast &MyFunction to const void* because the
+  // standard disallows casting between pointers to functions and
+  // pointers to objects, and some compilers (e.g. GCC 3.4) enforce
+  // this limitation.
+  EXPECT_EQ(
+      PrintPointer(reinterpret_cast<const void*>(
+          reinterpret_cast<internal::BiggestInt>(&MyFunction))),
+      Print(&MyFunction));
+  int (*p)(bool) = NULL;  // NOLINT
+  EXPECT_EQ("NULL", Print(p));
+}
+
+// An assertion predicate determining whether a one string is a prefix for
+// another.
+template <typename StringType>
+AssertionResult HasPrefix(const StringType& str, const StringType& prefix) {
+  if (str.find(prefix, 0) == 0)
+    return AssertionSuccess();
+
+  const bool is_wide_string = sizeof(prefix[0]) > 1;
+  const char* const begin_string_quote = is_wide_string ? "L\"" : "\"";
+  return AssertionFailure()
+      << begin_string_quote << prefix << "\" is not a prefix of "
+      << begin_string_quote << str << "\"\n";
+}
+
+// Tests printing member variable pointers.  Although they are called
+// pointers, they don't point to a location in the address space.
+// Their representation is implementation-defined.  Thus they will be
+// printed as raw bytes.
+
+struct Foo {
+ public:
+  virtual ~Foo() {}
+  int MyMethod(char x) { return x + 1; }
+  virtual char MyVirtualMethod(int /* n */) { return 'a'; }
+
+  int value;
+};
+
+TEST(PrintPointerTest, MemberVariablePointer) {
+  EXPECT_TRUE(HasPrefix(Print(&Foo::value),
+                        Print(sizeof(&Foo::value)) + "-byte object "));
+  int (Foo::*p) = NULL;  // NOLINT
+  EXPECT_TRUE(HasPrefix(Print(p),
+                        Print(sizeof(p)) + "-byte object "));
+}
+
+// Tests printing member function pointers.  Although they are called
+// pointers, they don't point to a location in the address space.
+// Their representation is implementation-defined.  Thus they will be
+// printed as raw bytes.
+TEST(PrintPointerTest, MemberFunctionPointer) {
+  EXPECT_TRUE(HasPrefix(Print(&Foo::MyMethod),
+                        Print(sizeof(&Foo::MyMethod)) + "-byte object "));
+  EXPECT_TRUE(
+      HasPrefix(Print(&Foo::MyVirtualMethod),
+                Print(sizeof((&Foo::MyVirtualMethod))) + "-byte object "));
+  int (Foo::*p)(char) = NULL;  // NOLINT
+  EXPECT_TRUE(HasPrefix(Print(p),
+                        Print(sizeof(p)) + "-byte object "));
+}
+
+// Tests printing C arrays.
+
+// The difference between this and Print() is that it ensures that the
+// argument is a reference to an array.
+template <typename T, size_t N>
+string PrintArrayHelper(T (&a)[N]) {
+  return Print(a);
+}
+
+// One-dimensional array.
+TEST(PrintArrayTest, OneDimensionalArray) {
+  int a[5] = { 1, 2, 3, 4, 5 };
+  EXPECT_EQ("{ 1, 2, 3, 4, 5 }", PrintArrayHelper(a));
+}
+
+// Two-dimensional array.
+TEST(PrintArrayTest, TwoDimensionalArray) {
+  int a[2][5] = {
+    { 1, 2, 3, 4, 5 },
+    { 6, 7, 8, 9, 0 }
+  };
+  EXPECT_EQ("{ { 1, 2, 3, 4, 5 }, { 6, 7, 8, 9, 0 } }", PrintArrayHelper(a));
+}
+
+// Array of const elements.
+TEST(PrintArrayTest, ConstArray) {
+  const bool a[1] = { false };
+  EXPECT_EQ("{ false }", PrintArrayHelper(a));
+}
+
+// Char array.
+TEST(PrintArrayTest, CharArray) {
+  // Array a contains '\0' in the middle and doesn't end with '\0'.
+  char a[3] = { 'H', '\0', 'i' };
+  EXPECT_EQ("\"H\\0i\"", PrintArrayHelper(a));
+}
+
+// Const char array.
+TEST(PrintArrayTest, ConstCharArray) {
+  const char a[4] = "\0Hi";
+  EXPECT_EQ("\"\\0Hi\\0\"", PrintArrayHelper(a));
+}
+
+// Array of objects.
+TEST(PrintArrayTest, ObjectArray) {
+  string a[3] = { "Hi", "Hello", "Ni hao" };
+  EXPECT_EQ("{ \"Hi\", \"Hello\", \"Ni hao\" }", PrintArrayHelper(a));
+}
+
+// Array with many elements.
+TEST(PrintArrayTest, BigArray) {
+  int a[100] = { 1, 2, 3 };
+  EXPECT_EQ("{ 1, 2, 3, 0, 0, 0, 0, 0, ..., 0, 0, 0, 0, 0, 0, 0, 0 }",
+            PrintArrayHelper(a));
+}
+
+// Tests printing ::string and ::std::string.
+
+#if GTEST_HAS_GLOBAL_STRING
+// ::string.
+TEST(PrintStringTest, StringInGlobalNamespace) {
+  const char s[] = "'\"?\\\a\b\f\n\0\r\t\v\x7F\xFF a";
+  const ::string str(s, sizeof(s));
+  EXPECT_EQ("\"'\\\"?\\\\\\a\\b\\f\\n\\0\\r\\t\\v\\x7F\\xFF a\\0\"",
+            Print(str));
+}
+#endif  // GTEST_HAS_GLOBAL_STRING
+
+// ::std::string.
+TEST(PrintStringTest, StringInStdNamespace) {
+  const char s[] = "'\"?\\\a\b\f\n\0\r\t\v\x7F\xFF a";
+  const ::std::string str(s, sizeof(s));
+  EXPECT_EQ("\"'\\\"?\\\\\\a\\b\\f\\n\\0\\r\\t\\v\\x7F\\xFF a\\0\"",
+            Print(str));
+}
+
+TEST(PrintStringTest, StringAmbiguousHex) {
+  // "\x6BANANA" is ambiguous, it can be interpreted as starting with either of:
+  // '\x6', '\x6B', or '\x6BA'.
+
+  // a hex escaping sequence following by a decimal digit
+  EXPECT_EQ("\"0\\x12\" \"3\"", Print(::std::string("0\x12" "3")));
+  // a hex escaping sequence following by a hex digit (lower-case)
+  EXPECT_EQ("\"mm\\x6\" \"bananas\"", Print(::std::string("mm\x6" "bananas")));
+  // a hex escaping sequence following by a hex digit (upper-case)
+  EXPECT_EQ("\"NOM\\x6\" \"BANANA\"", Print(::std::string("NOM\x6" "BANANA")));
+  // a hex escaping sequence following by a non-xdigit
+  EXPECT_EQ("\"!\\x5-!\"", Print(::std::string("!\x5-!")));
+}
+
+// Tests printing ::wstring and ::std::wstring.
+
+#if GTEST_HAS_GLOBAL_WSTRING
+// ::wstring.
+TEST(PrintWideStringTest, StringInGlobalNamespace) {
+  const wchar_t s[] = L"'\"?\\\a\b\f\n\0\r\t\v\xD3\x576\x8D3\xC74D a";
+  const ::wstring str(s, sizeof(s)/sizeof(wchar_t));
+  EXPECT_EQ("L\"'\\\"?\\\\\\a\\b\\f\\n\\0\\r\\t\\v"
+            "\\xD3\\x576\\x8D3\\xC74D a\\0\"",
+            Print(str));
+}
+#endif  // GTEST_HAS_GLOBAL_WSTRING
+
+#if GTEST_HAS_STD_WSTRING
+// ::std::wstring.
+TEST(PrintWideStringTest, StringInStdNamespace) {
+  const wchar_t s[] = L"'\"?\\\a\b\f\n\0\r\t\v\xD3\x576\x8D3\xC74D a";
+  const ::std::wstring str(s, sizeof(s)/sizeof(wchar_t));
+  EXPECT_EQ("L\"'\\\"?\\\\\\a\\b\\f\\n\\0\\r\\t\\v"
+            "\\xD3\\x576\\x8D3\\xC74D a\\0\"",
+            Print(str));
+}
+
+TEST(PrintWideStringTest, StringAmbiguousHex) {
+  // same for wide strings.
+  EXPECT_EQ("L\"0\\x12\" L\"3\"", Print(::std::wstring(L"0\x12" L"3")));
+  EXPECT_EQ("L\"mm\\x6\" L\"bananas\"",
+            Print(::std::wstring(L"mm\x6" L"bananas")));
+  EXPECT_EQ("L\"NOM\\x6\" L\"BANANA\"",
+            Print(::std::wstring(L"NOM\x6" L"BANANA")));
+  EXPECT_EQ("L\"!\\x5-!\"", Print(::std::wstring(L"!\x5-!")));
+}
+#endif  // GTEST_HAS_STD_WSTRING
+
+// Tests printing types that support generic streaming (i.e. streaming
+// to std::basic_ostream<Char, CharTraits> for any valid Char and
+// CharTraits types).
+
+// Tests printing a non-template type that supports generic streaming.
+
+class AllowsGenericStreaming {};
+
+template <typename Char, typename CharTraits>
+std::basic_ostream<Char, CharTraits>& operator<<(
+    std::basic_ostream<Char, CharTraits>& os,
+    const AllowsGenericStreaming& /* a */) {
+  return os << "AllowsGenericStreaming";
+}
+
+TEST(PrintTypeWithGenericStreamingTest, NonTemplateType) {
+  AllowsGenericStreaming a;
+  EXPECT_EQ("AllowsGenericStreaming", Print(a));
+}
+
+// Tests printing a template type that supports generic streaming.
+
+template <typename T>
+class AllowsGenericStreamingTemplate {};
+
+template <typename Char, typename CharTraits, typename T>
+std::basic_ostream<Char, CharTraits>& operator<<(
+    std::basic_ostream<Char, CharTraits>& os,
+    const AllowsGenericStreamingTemplate<T>& /* a */) {
+  return os << "AllowsGenericStreamingTemplate";
+}
+
+TEST(PrintTypeWithGenericStreamingTest, TemplateType) {
+  AllowsGenericStreamingTemplate<int> a;
+  EXPECT_EQ("AllowsGenericStreamingTemplate", Print(a));
+}
+
+// Tests printing a type that supports generic streaming and can be
+// implicitly converted to another printable type.
+
+template <typename T>
+class AllowsGenericStreamingAndImplicitConversionTemplate {
+ public:
+  operator bool() const { return false; }
+};
+
+template <typename Char, typename CharTraits, typename T>
+std::basic_ostream<Char, CharTraits>& operator<<(
+    std::basic_ostream<Char, CharTraits>& os,
+    const AllowsGenericStreamingAndImplicitConversionTemplate<T>& /* a */) {
+  return os << "AllowsGenericStreamingAndImplicitConversionTemplate";
+}
+
+TEST(PrintTypeWithGenericStreamingTest, TypeImplicitlyConvertible) {
+  AllowsGenericStreamingAndImplicitConversionTemplate<int> a;
+  EXPECT_EQ("AllowsGenericStreamingAndImplicitConversionTemplate", Print(a));
+}
+
+#if GTEST_HAS_STRING_PIECE_
+
+// Tests printing StringPiece.
+
+TEST(PrintStringPieceTest, SimpleStringPiece) {
+  const StringPiece sp = "Hello";
+  EXPECT_EQ("\"Hello\"", Print(sp));
+}
+
+TEST(PrintStringPieceTest, UnprintableCharacters) {
+  const char str[] = "NUL (\0) and \r\t";
+  const StringPiece sp(str, sizeof(str) - 1);
+  EXPECT_EQ("\"NUL (\\0) and \\r\\t\"", Print(sp));
+}
+
+#endif  // GTEST_HAS_STRING_PIECE_
+
+// Tests printing STL containers.
+
+TEST(PrintStlContainerTest, EmptyDeque) {
+  deque<char> empty;
+  EXPECT_EQ("{}", Print(empty));
+}
+
+TEST(PrintStlContainerTest, NonEmptyDeque) {
+  deque<int> non_empty;
+  non_empty.push_back(1);
+  non_empty.push_back(3);
+  EXPECT_EQ("{ 1, 3 }", Print(non_empty));
+}
+
+#if GTEST_HAS_HASH_MAP_
+
+TEST(PrintStlContainerTest, OneElementHashMap) {
+  hash_map<int, char> map1;
+  map1[1] = 'a';
+  EXPECT_EQ("{ (1, 'a' (97, 0x61)) }", Print(map1));
+}
+
+TEST(PrintStlContainerTest, HashMultiMap) {
+  hash_multimap<int, bool> map1;
+  map1.insert(make_pair(5, true));
+  map1.insert(make_pair(5, false));
+
+  // Elements of hash_multimap can be printed in any order.
+  const string result = Print(map1);
+  EXPECT_TRUE(result == "{ (5, true), (5, false) }" ||
+              result == "{ (5, false), (5, true) }")
+                  << " where Print(map1) returns \"" << result << "\".";
+}
+
+#endif  // GTEST_HAS_HASH_MAP_
+
+#if GTEST_HAS_HASH_SET_
+
+TEST(PrintStlContainerTest, HashSet) {
+  hash_set<string> set1;
+  set1.insert("hello");
+  EXPECT_EQ("{ \"hello\" }", Print(set1));
+}
+
+TEST(PrintStlContainerTest, HashMultiSet) {
+  const int kSize = 5;
+  int a[kSize] = { 1, 1, 2, 5, 1 };
+  hash_multiset<int> set1(a, a + kSize);
+
+  // Elements of hash_multiset can be printed in any order.
+  const string result = Print(set1);
+  const string expected_pattern = "{ d, d, d, d, d }";  // d means a digit.
+
+  // Verifies the result matches the expected pattern; also extracts
+  // the numbers in the result.
+  ASSERT_EQ(expected_pattern.length(), result.length());
+  std::vector<int> numbers;
+  for (size_t i = 0; i != result.length(); i++) {
+    if (expected_pattern[i] == 'd') {
+      ASSERT_NE(isdigit(static_cast<unsigned char>(result[i])), 0);
+      numbers.push_back(result[i] - '0');
+    } else {
+      EXPECT_EQ(expected_pattern[i], result[i]) << " where result is "
+                                                << result;
+    }
+  }
+
+  // Makes sure the result contains the right numbers.
+  std::sort(numbers.begin(), numbers.end());
+  std::sort(a, a + kSize);
+  EXPECT_TRUE(std::equal(a, a + kSize, numbers.begin()));
+}
+
+#endif  // GTEST_HAS_HASH_SET_
+
+TEST(PrintStlContainerTest, List) {
+  const string a[] = {
+    "hello",
+    "world"
+  };
+  const list<string> strings(a, a + 2);
+  EXPECT_EQ("{ \"hello\", \"world\" }", Print(strings));
+}
+
+TEST(PrintStlContainerTest, Map) {
+  map<int, bool> map1;
+  map1[1] = true;
+  map1[5] = false;
+  map1[3] = true;
+  EXPECT_EQ("{ (1, true), (3, true), (5, false) }", Print(map1));
+}
+
+TEST(PrintStlContainerTest, MultiMap) {
+  multimap<bool, int> map1;
+  // The make_pair template function would deduce the type as
+  // pair<bool, int> here, and since the key part in a multimap has to
+  // be constant, without a templated ctor in the pair class (as in
+  // libCstd on Solaris), make_pair call would fail to compile as no
+  // implicit conversion is found.  Thus explicit typename is used
+  // here instead.
+  map1.insert(pair<const bool, int>(true, 0));
+  map1.insert(pair<const bool, int>(true, 1));
+  map1.insert(pair<const bool, int>(false, 2));
+  EXPECT_EQ("{ (false, 2), (true, 0), (true, 1) }", Print(map1));
+}
+
+TEST(PrintStlContainerTest, Set) {
+  const unsigned int a[] = { 3, 0, 5 };
+  set<unsigned int> set1(a, a + 3);
+  EXPECT_EQ("{ 0, 3, 5 }", Print(set1));
+}
+
+TEST(PrintStlContainerTest, MultiSet) {
+  const int a[] = { 1, 1, 2, 5, 1 };
+  multiset<int> set1(a, a + 5);
+  EXPECT_EQ("{ 1, 1, 1, 2, 5 }", Print(set1));
+}
+
+TEST(PrintStlContainerTest, Pair) {
+  pair<const bool, int> p(true, 5);
+  EXPECT_EQ("(true, 5)", Print(p));
+}
+
+TEST(PrintStlContainerTest, Vector) {
+  vector<int> v;
+  v.push_back(1);
+  v.push_back(2);
+  EXPECT_EQ("{ 1, 2 }", Print(v));
+}
+
+TEST(PrintStlContainerTest, LongSequence) {
+  const int a[100] = { 1, 2, 3 };
+  const vector<int> v(a, a + 100);
+  EXPECT_EQ("{ 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "
+            "0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... }", Print(v));
+}
+
+TEST(PrintStlContainerTest, NestedContainer) {
+  const int a1[] = { 1, 2 };
+  const int a2[] = { 3, 4, 5 };
+  const list<int> l1(a1, a1 + 2);
+  const list<int> l2(a2, a2 + 3);
+
+  vector<list<int> > v;
+  v.push_back(l1);
+  v.push_back(l2);
+  EXPECT_EQ("{ { 1, 2 }, { 3, 4, 5 } }", Print(v));
+}
+
+TEST(PrintStlContainerTest, OneDimensionalNativeArray) {
+  const int a[3] = { 1, 2, 3 };
+  NativeArray<int> b(a, 3, kReference);
+  EXPECT_EQ("{ 1, 2, 3 }", Print(b));
+}
+
+TEST(PrintStlContainerTest, TwoDimensionalNativeArray) {
+  const int a[2][3] = { { 1, 2, 3 }, { 4, 5, 6 } };
+  NativeArray<int[3]> b(a, 2, kReference);
+  EXPECT_EQ("{ { 1, 2, 3 }, { 4, 5, 6 } }", Print(b));
+}
+
+// Tests that a class named iterator isn't treated as a container.
+
+struct iterator {
+  char x;
+};
+
+TEST(PrintStlContainerTest, Iterator) {
+  iterator it = {};
+  EXPECT_EQ("1-byte object <00>", Print(it));
+}
+
+// Tests that a class named const_iterator isn't treated as a container.
+
+struct const_iterator {
+  char x;
+};
+
+TEST(PrintStlContainerTest, ConstIterator) {
+  const_iterator it = {};
+  EXPECT_EQ("1-byte object <00>", Print(it));
+}
+
+#if GTEST_HAS_TR1_TUPLE
+// Tests printing tuples.
+
+// Tuples of various arities.
+TEST(PrintTupleTest, VariousSizes) {
+  tuple<> t0;
+  EXPECT_EQ("()", Print(t0));
+
+  tuple<int> t1(5);
+  EXPECT_EQ("(5)", Print(t1));
+
+  tuple<char, bool> t2('a', true);
+  EXPECT_EQ("('a' (97, 0x61), true)", Print(t2));
+
+  tuple<bool, int, int> t3(false, 2, 3);
+  EXPECT_EQ("(false, 2, 3)", Print(t3));
+
+  tuple<bool, int, int, int> t4(false, 2, 3, 4);
+  EXPECT_EQ("(false, 2, 3, 4)", Print(t4));
+
+  tuple<bool, int, int, int, bool> t5(false, 2, 3, 4, true);
+  EXPECT_EQ("(false, 2, 3, 4, true)", Print(t5));
+
+  tuple<bool, int, int, int, bool, int> t6(false, 2, 3, 4, true, 6);
+  EXPECT_EQ("(false, 2, 3, 4, true, 6)", Print(t6));
+
+  tuple<bool, int, int, int, bool, int, int> t7(false, 2, 3, 4, true, 6, 7);
+  EXPECT_EQ("(false, 2, 3, 4, true, 6, 7)", Print(t7));
+
+  tuple<bool, int, int, int, bool, int, int, bool> t8(
+      false, 2, 3, 4, true, 6, 7, true);
+  EXPECT_EQ("(false, 2, 3, 4, true, 6, 7, true)", Print(t8));
+
+  tuple<bool, int, int, int, bool, int, int, bool, int> t9(
+      false, 2, 3, 4, true, 6, 7, true, 9);
+  EXPECT_EQ("(false, 2, 3, 4, true, 6, 7, true, 9)", Print(t9));
+
+  const char* const str = "8";
+  // VC++ 2010's implementation of tuple of C++0x is deficient, requiring
+  // an explicit type cast of NULL to be used.
+  tuple<bool, char, short, testing::internal::Int32,  // NOLINT
+      testing::internal::Int64, float, double, const char*, void*, string>
+      t10(false, 'a', 3, 4, 5, 1.5F, -2.5, str,
+          ImplicitCast_<void*>(NULL), "10");
+  EXPECT_EQ("(false, 'a' (97, 0x61), 3, 4, 5, 1.5, -2.5, " + PrintPointer(str) +
+            " pointing to \"8\", NULL, \"10\")",
+            Print(t10));
+}
+
+// Nested tuples.
+TEST(PrintTupleTest, NestedTuple) {
+  tuple<tuple<int, bool>, char> nested(make_tuple(5, true), 'a');
+  EXPECT_EQ("((5, true), 'a' (97, 0x61))", Print(nested));
+}
+
+#endif  // GTEST_HAS_TR1_TUPLE
+
+// Tests printing user-defined unprintable types.
+
+// Unprintable types in the global namespace.
+TEST(PrintUnprintableTypeTest, InGlobalNamespace) {
+  EXPECT_EQ("1-byte object <00>",
+            Print(UnprintableTemplateInGlobal<char>()));
+}
+
+// Unprintable types in a user namespace.
+TEST(PrintUnprintableTypeTest, InUserNamespace) {
+  EXPECT_EQ("16-byte object <EF-12 00-00 34-AB 00-00 00-00 00-00 00-00 00-00>",
+            Print(::foo::UnprintableInFoo()));
+}
+
+// Unprintable types are that too big to be printed completely.
+
+struct Big {
+  Big() { memset(array, 0, sizeof(array)); }
+  char array[257];
+};
+
+TEST(PrintUnpritableTypeTest, BigObject) {
+  EXPECT_EQ("257-byte object <00-00 00-00 00-00 00-00 00-00 00-00 "
+            "00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 "
+            "00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 "
+            "00-00 00-00 00-00 00-00 00-00 00-00 ... 00-00 00-00 00-00 "
+            "00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 "
+            "00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 "
+            "00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00>",
+            Print(Big()));
+}
+
+// Tests printing user-defined streamable types.
+
+// Streamable types in the global namespace.
+TEST(PrintStreamableTypeTest, InGlobalNamespace) {
+  StreamableInGlobal x;
+  EXPECT_EQ("StreamableInGlobal", Print(x));
+  EXPECT_EQ("StreamableInGlobal*", Print(&x));
+}
+
+// Printable template types in a user namespace.
+TEST(PrintStreamableTypeTest, TemplateTypeInUserNamespace) {
+  EXPECT_EQ("StreamableTemplateInFoo: 0",
+            Print(::foo::StreamableTemplateInFoo<int>()));
+}
+
+// Tests printing user-defined types that have a PrintTo() function.
+TEST(PrintPrintableTypeTest, InUserNamespace) {
+  EXPECT_EQ("PrintableViaPrintTo: 0",
+            Print(::foo::PrintableViaPrintTo()));
+}
+
+// Tests printing a pointer to a user-defined type that has a <<
+// operator for its pointer.
+TEST(PrintPrintableTypeTest, PointerInUserNamespace) {
+  ::foo::PointerPrintable x;
+  EXPECT_EQ("PointerPrintable*", Print(&x));
+}
+
+// Tests printing user-defined class template that have a PrintTo() function.
+TEST(PrintPrintableTypeTest, TemplateInUserNamespace) {
+  EXPECT_EQ("PrintableViaPrintToTemplate: 5",
+            Print(::foo::PrintableViaPrintToTemplate<int>(5)));
+}
+
+#if GTEST_HAS_PROTOBUF_
+
+// Tests printing a protocol message.
+TEST(PrintProtocolMessageTest, PrintsShortDebugString) {
+  testing::internal::TestMessage msg;
+  msg.set_member("yes");
+  EXPECT_EQ("<member:\"yes\">", Print(msg));
+}
+
+// Tests printing a short proto2 message.
+TEST(PrintProto2MessageTest, PrintsShortDebugStringWhenItIsShort) {
+  testing::internal::FooMessage msg;
+  msg.set_int_field(2);
+  msg.set_string_field("hello");
+  EXPECT_PRED2(RE::FullMatch, Print(msg),
+               "<int_field:\\s*2\\s+string_field:\\s*\"hello\">");
+}
+
+// Tests printing a long proto2 message.
+TEST(PrintProto2MessageTest, PrintsDebugStringWhenItIsLong) {
+  testing::internal::FooMessage msg;
+  msg.set_int_field(2);
+  msg.set_string_field("hello");
+  msg.add_names("peter");
+  msg.add_names("paul");
+  msg.add_names("mary");
+  EXPECT_PRED2(RE::FullMatch, Print(msg),
+               "<\n"
+               "int_field:\\s*2\n"
+               "string_field:\\s*\"hello\"\n"
+               "names:\\s*\"peter\"\n"
+               "names:\\s*\"paul\"\n"
+               "names:\\s*\"mary\"\n"
+               ">");
+}
+
+#endif  // GTEST_HAS_PROTOBUF_
+
+// Tests that the universal printer prints both the address and the
+// value of a reference.
+TEST(PrintReferenceTest, PrintsAddressAndValue) {
+  int n = 5;
+  EXPECT_EQ("@" + PrintPointer(&n) + " 5", PrintByRef(n));
+
+  int a[2][3] = {
+    { 0, 1, 2 },
+    { 3, 4, 5 }
+  };
+  EXPECT_EQ("@" + PrintPointer(a) + " { { 0, 1, 2 }, { 3, 4, 5 } }",
+            PrintByRef(a));
+
+  const ::foo::UnprintableInFoo x;
+  EXPECT_EQ("@" + PrintPointer(&x) + " 16-byte object "
+            "<EF-12 00-00 34-AB 00-00 00-00 00-00 00-00 00-00>",
+            PrintByRef(x));
+}
+
+// Tests that the universal printer prints a function pointer passed by
+// reference.
+TEST(PrintReferenceTest, HandlesFunctionPointer) {
+  void (*fp)(int n) = &MyFunction;
+  const string fp_pointer_string =
+      PrintPointer(reinterpret_cast<const void*>(&fp));
+  // We cannot directly cast &MyFunction to const void* because the
+  // standard disallows casting between pointers to functions and
+  // pointers to objects, and some compilers (e.g. GCC 3.4) enforce
+  // this limitation.
+  const string fp_string = PrintPointer(reinterpret_cast<const void*>(
+      reinterpret_cast<internal::BiggestInt>(fp)));
+  EXPECT_EQ("@" + fp_pointer_string + " " + fp_string,
+            PrintByRef(fp));
+}
+
+// Tests that the universal printer prints a member function pointer
+// passed by reference.
+TEST(PrintReferenceTest, HandlesMemberFunctionPointer) {
+  int (Foo::*p)(char ch) = &Foo::MyMethod;
+  EXPECT_TRUE(HasPrefix(
+      PrintByRef(p),
+      "@" + PrintPointer(reinterpret_cast<const void*>(&p)) + " " +
+          Print(sizeof(p)) + "-byte object "));
+
+  char (Foo::*p2)(int n) = &Foo::MyVirtualMethod;
+  EXPECT_TRUE(HasPrefix(
+      PrintByRef(p2),
+      "@" + PrintPointer(reinterpret_cast<const void*>(&p2)) + " " +
+          Print(sizeof(p2)) + "-byte object "));
+}
+
+// Tests that the universal printer prints a member variable pointer
+// passed by reference.
+TEST(PrintReferenceTest, HandlesMemberVariablePointer) {
+  int (Foo::*p) = &Foo::value;  // NOLINT
+  EXPECT_TRUE(HasPrefix(
+      PrintByRef(p),
+      "@" + PrintPointer(&p) + " " + Print(sizeof(p)) + "-byte object "));
+}
+
+// Useful for testing PrintToString().  We cannot use EXPECT_EQ()
+// there as its implementation uses PrintToString().  The caller must
+// ensure that 'value' has no side effect.
+#define EXPECT_PRINT_TO_STRING_(value, expected_string)         \
+  EXPECT_TRUE(PrintToString(value) == (expected_string))        \
+      << " where " #value " prints as " << (PrintToString(value))
+
+TEST(PrintToStringTest, WorksForScalar) {
+  EXPECT_PRINT_TO_STRING_(123, "123");
+}
+
+TEST(PrintToStringTest, WorksForPointerToConstChar) {
+  const char* p = "hello";
+  EXPECT_PRINT_TO_STRING_(p, "\"hello\"");
+}
+
+TEST(PrintToStringTest, WorksForPointerToNonConstChar) {
+  char s[] = "hello";
+  char* p = s;
+  EXPECT_PRINT_TO_STRING_(p, "\"hello\"");
+}
+
+TEST(PrintToStringTest, WorksForArray) {
+  int n[3] = { 1, 2, 3 };
+  EXPECT_PRINT_TO_STRING_(n, "{ 1, 2, 3 }");
+}
+
+#undef EXPECT_PRINT_TO_STRING_
+
+TEST(UniversalTersePrintTest, WorksForNonReference) {
+  ::std::stringstream ss;
+  UniversalTersePrint(123, &ss);
+  EXPECT_EQ("123", ss.str());
+}
+
+TEST(UniversalTersePrintTest, WorksForReference) {
+  const int& n = 123;
+  ::std::stringstream ss;
+  UniversalTersePrint(n, &ss);
+  EXPECT_EQ("123", ss.str());
+}
+
+TEST(UniversalTersePrintTest, WorksForCString) {
+  const char* s1 = "abc";
+  ::std::stringstream ss1;
+  UniversalTersePrint(s1, &ss1);
+  EXPECT_EQ("\"abc\"", ss1.str());
+
+  char* s2 = const_cast<char*>(s1);
+  ::std::stringstream ss2;
+  UniversalTersePrint(s2, &ss2);
+  EXPECT_EQ("\"abc\"", ss2.str());
+
+  const char* s3 = NULL;
+  ::std::stringstream ss3;
+  UniversalTersePrint(s3, &ss3);
+  EXPECT_EQ("NULL", ss3.str());
+}
+
+TEST(UniversalPrintTest, WorksForNonReference) {
+  ::std::stringstream ss;
+  UniversalPrint(123, &ss);
+  EXPECT_EQ("123", ss.str());
+}
+
+TEST(UniversalPrintTest, WorksForReference) {
+  const int& n = 123;
+  ::std::stringstream ss;
+  UniversalPrint(n, &ss);
+  EXPECT_EQ("123", ss.str());
+}
+
+TEST(UniversalPrintTest, WorksForCString) {
+  const char* s1 = "abc";
+  ::std::stringstream ss1;
+  UniversalPrint(s1, &ss1);
+  EXPECT_EQ(PrintPointer(s1) + " pointing to \"abc\"", string(ss1.str()));
+
+  char* s2 = const_cast<char*>(s1);
+  ::std::stringstream ss2;
+  UniversalPrint(s2, &ss2);
+  EXPECT_EQ(PrintPointer(s2) + " pointing to \"abc\"", string(ss2.str()));
+
+  const char* s3 = NULL;
+  ::std::stringstream ss3;
+  UniversalPrint(s3, &ss3);
+  EXPECT_EQ("NULL", ss3.str());
+}
+
+
+#if GTEST_HAS_TR1_TUPLE
+
+TEST(UniversalTersePrintTupleFieldsToStringsTest, PrintsEmptyTuple) {
+  Strings result = UniversalTersePrintTupleFieldsToStrings(make_tuple());
+  EXPECT_EQ(0u, result.size());
+}
+
+TEST(UniversalTersePrintTupleFieldsToStringsTest, PrintsOneTuple) {
+  Strings result = UniversalTersePrintTupleFieldsToStrings(make_tuple(1));
+  ASSERT_EQ(1u, result.size());
+  EXPECT_EQ("1", result[0]);
+}
+
+TEST(UniversalTersePrintTupleFieldsToStringsTest, PrintsTwoTuple) {
+  Strings result = UniversalTersePrintTupleFieldsToStrings(make_tuple(1, 'a'));
+  ASSERT_EQ(2u, result.size());
+  EXPECT_EQ("1", result[0]);
+  EXPECT_EQ("'a' (97, 0x61)", result[1]);
+}
+
+TEST(UniversalTersePrintTupleFieldsToStringsTest, PrintsTersely) {
+  const int n = 1;
+  Strings result = UniversalTersePrintTupleFieldsToStrings(
+      tuple<const int&, const char*>(n, "a"));
+  ASSERT_EQ(2u, result.size());
+  EXPECT_EQ("1", result[0]);
+  EXPECT_EQ("\"a\"", result[1]);
+}
+
+#endif  // GTEST_HAS_TR1_TUPLE
+
+}  // namespace gtest_printers_test
+}  // namespace testing
diff --git a/google-breakpad/src/testing/gtest/test/gtest-test-part_test.cc b/google-breakpad/src/testing/gtest/test/gtest-test-part_test.cc
new file mode 100644
index 0000000..ca8ba93
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest-test-part_test.cc
@@ -0,0 +1,208 @@
+// Copyright 2008 Google Inc.
+// All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: mheule@google.com (Markus Heule)
+//
+
+#include "gtest/gtest-test-part.h"
+
+#include "gtest/gtest.h"
+
+using testing::Message;
+using testing::Test;
+using testing::TestPartResult;
+using testing::TestPartResultArray;
+
+namespace {
+
+// Tests the TestPartResult class.
+
+// The test fixture for testing TestPartResult.
+class TestPartResultTest : public Test {
+ protected:
+  TestPartResultTest()
+      : r1_(TestPartResult::kSuccess, "foo/bar.cc", 10, "Success!"),
+        r2_(TestPartResult::kNonFatalFailure, "foo/bar.cc", -1, "Failure!"),
+        r3_(TestPartResult::kFatalFailure, NULL, -1, "Failure!") {}
+
+  TestPartResult r1_, r2_, r3_;
+};
+
+
+TEST_F(TestPartResultTest, ConstructorWorks) {
+  Message message;
+  message << "something is terribly wrong";
+  message << static_cast<const char*>(testing::internal::kStackTraceMarker);
+  message << "some unimportant stack trace";
+
+  const TestPartResult result(TestPartResult::kNonFatalFailure,
+                              "some_file.cc",
+                              42,
+                              message.GetString().c_str());
+
+  EXPECT_EQ(TestPartResult::kNonFatalFailure, result.type());
+  EXPECT_STREQ("some_file.cc", result.file_name());
+  EXPECT_EQ(42, result.line_number());
+  EXPECT_STREQ(message.GetString().c_str(), result.message());
+  EXPECT_STREQ("something is terribly wrong", result.summary());
+}
+
+TEST_F(TestPartResultTest, ResultAccessorsWork) {
+  const TestPartResult success(TestPartResult::kSuccess,
+                               "file.cc",
+                               42,
+                               "message");
+  EXPECT_TRUE(success.passed());
+  EXPECT_FALSE(success.failed());
+  EXPECT_FALSE(success.nonfatally_failed());
+  EXPECT_FALSE(success.fatally_failed());
+
+  const TestPartResult nonfatal_failure(TestPartResult::kNonFatalFailure,
+                                        "file.cc",
+                                        42,
+                                        "message");
+  EXPECT_FALSE(nonfatal_failure.passed());
+  EXPECT_TRUE(nonfatal_failure.failed());
+  EXPECT_TRUE(nonfatal_failure.nonfatally_failed());
+  EXPECT_FALSE(nonfatal_failure.fatally_failed());
+
+  const TestPartResult fatal_failure(TestPartResult::kFatalFailure,
+                                     "file.cc",
+                                     42,
+                                     "message");
+  EXPECT_FALSE(fatal_failure.passed());
+  EXPECT_TRUE(fatal_failure.failed());
+  EXPECT_FALSE(fatal_failure.nonfatally_failed());
+  EXPECT_TRUE(fatal_failure.fatally_failed());
+}
+
+// Tests TestPartResult::type().
+TEST_F(TestPartResultTest, type) {
+  EXPECT_EQ(TestPartResult::kSuccess, r1_.type());
+  EXPECT_EQ(TestPartResult::kNonFatalFailure, r2_.type());
+  EXPECT_EQ(TestPartResult::kFatalFailure, r3_.type());
+}
+
+// Tests TestPartResult::file_name().
+TEST_F(TestPartResultTest, file_name) {
+  EXPECT_STREQ("foo/bar.cc", r1_.file_name());
+  EXPECT_STREQ(NULL, r3_.file_name());
+}
+
+// Tests TestPartResult::line_number().
+TEST_F(TestPartResultTest, line_number) {
+  EXPECT_EQ(10, r1_.line_number());
+  EXPECT_EQ(-1, r2_.line_number());
+}
+
+// Tests TestPartResult::message().
+TEST_F(TestPartResultTest, message) {
+  EXPECT_STREQ("Success!", r1_.message());
+}
+
+// Tests TestPartResult::passed().
+TEST_F(TestPartResultTest, Passed) {
+  EXPECT_TRUE(r1_.passed());
+  EXPECT_FALSE(r2_.passed());
+  EXPECT_FALSE(r3_.passed());
+}
+
+// Tests TestPartResult::failed().
+TEST_F(TestPartResultTest, Failed) {
+  EXPECT_FALSE(r1_.failed());
+  EXPECT_TRUE(r2_.failed());
+  EXPECT_TRUE(r3_.failed());
+}
+
+// Tests TestPartResult::fatally_failed().
+TEST_F(TestPartResultTest, FatallyFailed) {
+  EXPECT_FALSE(r1_.fatally_failed());
+  EXPECT_FALSE(r2_.fatally_failed());
+  EXPECT_TRUE(r3_.fatally_failed());
+}
+
+// Tests TestPartResult::nonfatally_failed().
+TEST_F(TestPartResultTest, NonfatallyFailed) {
+  EXPECT_FALSE(r1_.nonfatally_failed());
+  EXPECT_TRUE(r2_.nonfatally_failed());
+  EXPECT_FALSE(r3_.nonfatally_failed());
+}
+
+// Tests the TestPartResultArray class.
+
+class TestPartResultArrayTest : public Test {
+ protected:
+  TestPartResultArrayTest()
+      : r1_(TestPartResult::kNonFatalFailure, "foo/bar.cc", -1, "Failure 1"),
+        r2_(TestPartResult::kFatalFailure, "foo/bar.cc", -1, "Failure 2") {}
+
+  const TestPartResult r1_, r2_;
+};
+
+// Tests that TestPartResultArray initially has size 0.
+TEST_F(TestPartResultArrayTest, InitialSizeIsZero) {
+  TestPartResultArray results;
+  EXPECT_EQ(0, results.size());
+}
+
+// Tests that TestPartResultArray contains the given TestPartResult
+// after one Append() operation.
+TEST_F(TestPartResultArrayTest, ContainsGivenResultAfterAppend) {
+  TestPartResultArray results;
+  results.Append(r1_);
+  EXPECT_EQ(1, results.size());
+  EXPECT_STREQ("Failure 1", results.GetTestPartResult(0).message());
+}
+
+// Tests that TestPartResultArray contains the given TestPartResults
+// after two Append() operations.
+TEST_F(TestPartResultArrayTest, ContainsGivenResultsAfterTwoAppends) {
+  TestPartResultArray results;
+  results.Append(r1_);
+  results.Append(r2_);
+  EXPECT_EQ(2, results.size());
+  EXPECT_STREQ("Failure 1", results.GetTestPartResult(0).message());
+  EXPECT_STREQ("Failure 2", results.GetTestPartResult(1).message());
+}
+
+typedef TestPartResultArrayTest TestPartResultArrayDeathTest;
+
+// Tests that the program dies when GetTestPartResult() is called with
+// an invalid index.
+TEST_F(TestPartResultArrayDeathTest, DiesWhenIndexIsOutOfBound) {
+  TestPartResultArray results;
+  results.Append(r1_);
+
+  EXPECT_DEATH_IF_SUPPORTED(results.GetTestPartResult(-1), "");
+  EXPECT_DEATH_IF_SUPPORTED(results.GetTestPartResult(1), "");
+}
+
+// TODO(mheule@google.com): Add a test for the class HasNewFatalFailureHelper.
+
+}  // namespace
diff --git a/google-breakpad/src/testing/gtest/test/gtest-tuple_test.cc b/google-breakpad/src/testing/gtest/test/gtest-tuple_test.cc
new file mode 100644
index 0000000..bfaa3e0
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest-tuple_test.cc
@@ -0,0 +1,320 @@
+// Copyright 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+#include "gtest/internal/gtest-tuple.h"
+#include <utility>
+#include "gtest/gtest.h"
+
+namespace {
+
+using ::std::tr1::get;
+using ::std::tr1::make_tuple;
+using ::std::tr1::tuple;
+using ::std::tr1::tuple_element;
+using ::std::tr1::tuple_size;
+using ::testing::StaticAssertTypeEq;
+
+// Tests that tuple_element<K, tuple<T0, T1, ..., TN> >::type returns TK.
+TEST(tuple_element_Test, ReturnsElementType) {
+  StaticAssertTypeEq<int, tuple_element<0, tuple<int, char> >::type>();
+  StaticAssertTypeEq<int&, tuple_element<1, tuple<double, int&> >::type>();
+  StaticAssertTypeEq<bool, tuple_element<2, tuple<double, int, bool> >::type>();
+}
+
+// Tests that tuple_size<T>::value gives the number of fields in tuple
+// type T.
+TEST(tuple_size_Test, ReturnsNumberOfFields) {
+  EXPECT_EQ(0, +tuple_size<tuple<> >::value);
+  EXPECT_EQ(1, +tuple_size<tuple<void*> >::value);
+  EXPECT_EQ(1, +tuple_size<tuple<char> >::value);
+  EXPECT_EQ(1, +(tuple_size<tuple<tuple<int, double> > >::value));
+  EXPECT_EQ(2, +(tuple_size<tuple<int&, const char> >::value));
+  EXPECT_EQ(3, +(tuple_size<tuple<char*, void, const bool&> >::value));
+}
+
+// Tests comparing a tuple with itself.
+TEST(ComparisonTest, ComparesWithSelf) {
+  const tuple<int, char, bool> a(5, 'a', false);
+
+  EXPECT_TRUE(a == a);
+  EXPECT_FALSE(a != a);
+}
+
+// Tests comparing two tuples with the same value.
+TEST(ComparisonTest, ComparesEqualTuples) {
+  const tuple<int, bool> a(5, true), b(5, true);
+
+  EXPECT_TRUE(a == b);
+  EXPECT_FALSE(a != b);
+}
+
+// Tests comparing two different tuples that have no reference fields.
+TEST(ComparisonTest, ComparesUnequalTuplesWithoutReferenceFields) {
+  typedef tuple<const int, char> FooTuple;
+
+  const FooTuple a(0, 'x');
+  const FooTuple b(1, 'a');
+
+  EXPECT_TRUE(a != b);
+  EXPECT_FALSE(a == b);
+
+  const FooTuple c(1, 'b');
+
+  EXPECT_TRUE(b != c);
+  EXPECT_FALSE(b == c);
+}
+
+// Tests comparing two different tuples that have reference fields.
+TEST(ComparisonTest, ComparesUnequalTuplesWithReferenceFields) {
+  typedef tuple<int&, const char&> FooTuple;
+
+  int i = 5;
+  const char ch = 'a';
+  const FooTuple a(i, ch);
+
+  int j = 6;
+  const FooTuple b(j, ch);
+
+  EXPECT_TRUE(a != b);
+  EXPECT_FALSE(a == b);
+
+  j = 5;
+  const char ch2 = 'b';
+  const FooTuple c(j, ch2);
+
+  EXPECT_TRUE(b != c);
+  EXPECT_FALSE(b == c);
+}
+
+// Tests that a tuple field with a reference type is an alias of the
+// variable it's supposed to reference.
+TEST(ReferenceFieldTest, IsAliasOfReferencedVariable) {
+  int n = 0;
+  tuple<bool, int&> t(true, n);
+
+  n = 1;
+  EXPECT_EQ(n, get<1>(t))
+      << "Changing a underlying variable should update the reference field.";
+
+  // Makes sure that the implementation doesn't do anything funny with
+  // the & operator for the return type of get<>().
+  EXPECT_EQ(&n, &(get<1>(t)))
+      << "The address of a reference field should equal the address of "
+      << "the underlying variable.";
+
+  get<1>(t) = 2;
+  EXPECT_EQ(2, n)
+      << "Changing a reference field should update the underlying variable.";
+}
+
+// Tests that tuple's default constructor default initializes each field.
+// This test needs to compile without generating warnings.
+TEST(TupleConstructorTest, DefaultConstructorDefaultInitializesEachField) {
+  // The TR1 report requires that tuple's default constructor default
+  // initializes each field, even if it's a primitive type.  If the
+  // implementation forgets to do this, this test will catch it by
+  // generating warnings about using uninitialized variables (assuming
+  // a decent compiler).
+
+  tuple<> empty;
+
+  tuple<int> a1, b1;
+  b1 = a1;
+  EXPECT_EQ(0, get<0>(b1));
+
+  tuple<int, double> a2, b2;
+  b2 = a2;
+  EXPECT_EQ(0, get<0>(b2));
+  EXPECT_EQ(0.0, get<1>(b2));
+
+  tuple<double, char, bool*> a3, b3;
+  b3 = a3;
+  EXPECT_EQ(0.0, get<0>(b3));
+  EXPECT_EQ('\0', get<1>(b3));
+  EXPECT_TRUE(get<2>(b3) == NULL);
+
+  tuple<int, int, int, int, int, int, int, int, int, int> a10, b10;
+  b10 = a10;
+  EXPECT_EQ(0, get<0>(b10));
+  EXPECT_EQ(0, get<1>(b10));
+  EXPECT_EQ(0, get<2>(b10));
+  EXPECT_EQ(0, get<3>(b10));
+  EXPECT_EQ(0, get<4>(b10));
+  EXPECT_EQ(0, get<5>(b10));
+  EXPECT_EQ(0, get<6>(b10));
+  EXPECT_EQ(0, get<7>(b10));
+  EXPECT_EQ(0, get<8>(b10));
+  EXPECT_EQ(0, get<9>(b10));
+}
+
+// Tests constructing a tuple from its fields.
+TEST(TupleConstructorTest, ConstructsFromFields) {
+  int n = 1;
+  // Reference field.
+  tuple<int&> a(n);
+  EXPECT_EQ(&n, &(get<0>(a)));
+
+  // Non-reference fields.
+  tuple<int, char> b(5, 'a');
+  EXPECT_EQ(5, get<0>(b));
+  EXPECT_EQ('a', get<1>(b));
+
+  // Const reference field.
+  const int m = 2;
+  tuple<bool, const int&> c(true, m);
+  EXPECT_TRUE(get<0>(c));
+  EXPECT_EQ(&m, &(get<1>(c)));
+}
+
+// Tests tuple's copy constructor.
+TEST(TupleConstructorTest, CopyConstructor) {
+  tuple<double, bool> a(0.0, true);
+  tuple<double, bool> b(a);
+
+  EXPECT_DOUBLE_EQ(0.0, get<0>(b));
+  EXPECT_TRUE(get<1>(b));
+}
+
+// Tests constructing a tuple from another tuple that has a compatible
+// but different type.
+TEST(TupleConstructorTest, ConstructsFromDifferentTupleType) {
+  tuple<int, int, char> a(0, 1, 'a');
+  tuple<double, long, int> b(a);
+
+  EXPECT_DOUBLE_EQ(0.0, get<0>(b));
+  EXPECT_EQ(1, get<1>(b));
+  EXPECT_EQ('a', get<2>(b));
+}
+
+// Tests constructing a 2-tuple from an std::pair.
+TEST(TupleConstructorTest, ConstructsFromPair) {
+  ::std::pair<int, char> a(1, 'a');
+  tuple<int, char> b(a);
+  tuple<int, const char&> c(a);
+}
+
+// Tests assigning a tuple to another tuple with the same type.
+TEST(TupleAssignmentTest, AssignsToSameTupleType) {
+  const tuple<int, long> a(5, 7L);
+  tuple<int, long> b;
+  b = a;
+  EXPECT_EQ(5, get<0>(b));
+  EXPECT_EQ(7L, get<1>(b));
+}
+
+// Tests assigning a tuple to another tuple with a different but
+// compatible type.
+TEST(TupleAssignmentTest, AssignsToDifferentTupleType) {
+  const tuple<int, long, bool> a(1, 7L, true);
+  tuple<long, int, bool> b;
+  b = a;
+  EXPECT_EQ(1L, get<0>(b));
+  EXPECT_EQ(7, get<1>(b));
+  EXPECT_TRUE(get<2>(b));
+}
+
+// Tests assigning an std::pair to a 2-tuple.
+TEST(TupleAssignmentTest, AssignsFromPair) {
+  const ::std::pair<int, bool> a(5, true);
+  tuple<int, bool> b;
+  b = a;
+  EXPECT_EQ(5, get<0>(b));
+  EXPECT_TRUE(get<1>(b));
+
+  tuple<long, bool> c;
+  c = a;
+  EXPECT_EQ(5L, get<0>(c));
+  EXPECT_TRUE(get<1>(c));
+}
+
+// A fixture for testing big tuples.
+class BigTupleTest : public testing::Test {
+ protected:
+  typedef tuple<int, int, int, int, int, int, int, int, int, int> BigTuple;
+
+  BigTupleTest() :
+      a_(1, 0, 0, 0, 0, 0, 0, 0, 0, 2),
+      b_(1, 0, 0, 0, 0, 0, 0, 0, 0, 3) {}
+
+  BigTuple a_, b_;
+};
+
+// Tests constructing big tuples.
+TEST_F(BigTupleTest, Construction) {
+  BigTuple a;
+  BigTuple b(b_);
+}
+
+// Tests that get<N>(t) returns the N-th (0-based) field of tuple t.
+TEST_F(BigTupleTest, get) {
+  EXPECT_EQ(1, get<0>(a_));
+  EXPECT_EQ(2, get<9>(a_));
+
+  // Tests that get() works on a const tuple too.
+  const BigTuple a(a_);
+  EXPECT_EQ(1, get<0>(a));
+  EXPECT_EQ(2, get<9>(a));
+}
+
+// Tests comparing big tuples.
+TEST_F(BigTupleTest, Comparisons) {
+  EXPECT_TRUE(a_ == a_);
+  EXPECT_FALSE(a_ != a_);
+
+  EXPECT_TRUE(a_ != b_);
+  EXPECT_FALSE(a_ == b_);
+}
+
+TEST(MakeTupleTest, WorksForScalarTypes) {
+  tuple<bool, int> a;
+  a = make_tuple(true, 5);
+  EXPECT_TRUE(get<0>(a));
+  EXPECT_EQ(5, get<1>(a));
+
+  tuple<char, int, long> b;
+  b = make_tuple('a', 'b', 5);
+  EXPECT_EQ('a', get<0>(b));
+  EXPECT_EQ('b', get<1>(b));
+  EXPECT_EQ(5, get<2>(b));
+}
+
+TEST(MakeTupleTest, WorksForPointers) {
+  int a[] = { 1, 2, 3, 4 };
+  const char* const str = "hi";
+  int* const p = a;
+
+  tuple<const char*, int*> t;
+  t = make_tuple(str, p);
+  EXPECT_EQ(str, get<0>(t));
+  EXPECT_EQ(p, get<1>(t));
+}
+
+}  // namespace
diff --git a/google-breakpad/src/testing/gtest/test/gtest-typed-test2_test.cc b/google-breakpad/src/testing/gtest/test/gtest-typed-test2_test.cc
new file mode 100644
index 0000000..c284700
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest-typed-test2_test.cc
@@ -0,0 +1,45 @@
+// Copyright 2008 Google Inc.
+// All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+#include <vector>
+
+#include "test/gtest-typed-test_test.h"
+#include "gtest/gtest.h"
+
+#if GTEST_HAS_TYPED_TEST_P
+
+// Tests that the same type-parameterized test case can be
+// instantiated in different translation units linked together.
+// (ContainerTest is also instantiated in gtest-typed-test_test.cc.)
+INSTANTIATE_TYPED_TEST_CASE_P(Vector, ContainerTest,
+                              testing::Types<std::vector<int> >);
+
+#endif  // GTEST_HAS_TYPED_TEST_P
diff --git a/google-breakpad/src/testing/gtest/test/gtest-typed-test_test.cc b/google-breakpad/src/testing/gtest/test/gtest-typed-test_test.cc
new file mode 100644
index 0000000..dd4ba43
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest-typed-test_test.cc
@@ -0,0 +1,360 @@
+// Copyright 2008 Google Inc.
+// All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+#include <set>
+#include <vector>
+
+#include "test/gtest-typed-test_test.h"
+#include "gtest/gtest.h"
+
+using testing::Test;
+
+// Used for testing that SetUpTestCase()/TearDownTestCase(), fixture
+// ctor/dtor, and SetUp()/TearDown() work correctly in typed tests and
+// type-parameterized test.
+template <typename T>
+class CommonTest : public Test {
+  // For some technical reason, SetUpTestCase() and TearDownTestCase()
+  // must be public.
+ public:
+  static void SetUpTestCase() {
+    shared_ = new T(5);
+  }
+
+  static void TearDownTestCase() {
+    delete shared_;
+    shared_ = NULL;
+  }
+
+  // This 'protected:' is optional.  There's no harm in making all
+  // members of this fixture class template public.
+ protected:
+  // We used to use std::list here, but switched to std::vector since
+  // MSVC's <list> doesn't compile cleanly with /W4.
+  typedef std::vector<T> Vector;
+  typedef std::set<int> IntSet;
+
+  CommonTest() : value_(1) {}
+
+  virtual ~CommonTest() { EXPECT_EQ(3, value_); }
+
+  virtual void SetUp() {
+    EXPECT_EQ(1, value_);
+    value_++;
+  }
+
+  virtual void TearDown() {
+    EXPECT_EQ(2, value_);
+    value_++;
+  }
+
+  T value_;
+  static T* shared_;
+};
+
+template <typename T>
+T* CommonTest<T>::shared_ = NULL;
+
+// This #ifdef block tests typed tests.
+#if GTEST_HAS_TYPED_TEST
+
+using testing::Types;
+
+// Tests that SetUpTestCase()/TearDownTestCase(), fixture ctor/dtor,
+// and SetUp()/TearDown() work correctly in typed tests
+
+typedef Types<char, int> TwoTypes;
+TYPED_TEST_CASE(CommonTest, TwoTypes);
+
+TYPED_TEST(CommonTest, ValuesAreCorrect) {
+  // Static members of the fixture class template can be visited via
+  // the TestFixture:: prefix.
+  EXPECT_EQ(5, *TestFixture::shared_);
+
+  // Typedefs in the fixture class template can be visited via the
+  // "typename TestFixture::" prefix.
+  typename TestFixture::Vector empty;
+  EXPECT_EQ(0U, empty.size());
+
+  typename TestFixture::IntSet empty2;
+  EXPECT_EQ(0U, empty2.size());
+
+  // Non-static members of the fixture class must be visited via
+  // 'this', as required by C++ for class templates.
+  EXPECT_EQ(2, this->value_);
+}
+
+// The second test makes sure shared_ is not deleted after the first
+// test.
+TYPED_TEST(CommonTest, ValuesAreStillCorrect) {
+  // Static members of the fixture class template can also be visited
+  // via 'this'.
+  ASSERT_TRUE(this->shared_ != NULL);
+  EXPECT_EQ(5, *this->shared_);
+
+  // TypeParam can be used to refer to the type parameter.
+  EXPECT_EQ(static_cast<TypeParam>(2), this->value_);
+}
+
+// Tests that multiple TYPED_TEST_CASE's can be defined in the same
+// translation unit.
+
+template <typename T>
+class TypedTest1 : public Test {
+};
+
+// Verifies that the second argument of TYPED_TEST_CASE can be a
+// single type.
+TYPED_TEST_CASE(TypedTest1, int);
+TYPED_TEST(TypedTest1, A) {}
+
+template <typename T>
+class TypedTest2 : public Test {
+};
+
+// Verifies that the second argument of TYPED_TEST_CASE can be a
+// Types<...> type list.
+TYPED_TEST_CASE(TypedTest2, Types<int>);
+
+// This also verifies that tests from different typed test cases can
+// share the same name.
+TYPED_TEST(TypedTest2, A) {}
+
+// Tests that a typed test case can be defined in a namespace.
+
+namespace library1 {
+
+template <typename T>
+class NumericTest : public Test {
+};
+
+typedef Types<int, long> NumericTypes;
+TYPED_TEST_CASE(NumericTest, NumericTypes);
+
+TYPED_TEST(NumericTest, DefaultIsZero) {
+  EXPECT_EQ(0, TypeParam());
+}
+
+}  // namespace library1
+
+#endif  // GTEST_HAS_TYPED_TEST
+
+// This #ifdef block tests type-parameterized tests.
+#if GTEST_HAS_TYPED_TEST_P
+
+using testing::Types;
+using testing::internal::TypedTestCasePState;
+
+// Tests TypedTestCasePState.
+
+class TypedTestCasePStateTest : public Test {
+ protected:
+  virtual void SetUp() {
+    state_.AddTestName("foo.cc", 0, "FooTest", "A");
+    state_.AddTestName("foo.cc", 0, "FooTest", "B");
+    state_.AddTestName("foo.cc", 0, "FooTest", "C");
+  }
+
+  TypedTestCasePState state_;
+};
+
+TEST_F(TypedTestCasePStateTest, SucceedsForMatchingList) {
+  const char* tests = "A, B, C";
+  EXPECT_EQ(tests,
+            state_.VerifyRegisteredTestNames("foo.cc", 1, tests));
+}
+
+// Makes sure that the order of the tests and spaces around the names
+// don't matter.
+TEST_F(TypedTestCasePStateTest, IgnoresOrderAndSpaces) {
+  const char* tests = "A,C,   B";
+  EXPECT_EQ(tests,
+            state_.VerifyRegisteredTestNames("foo.cc", 1, tests));
+}
+
+typedef TypedTestCasePStateTest TypedTestCasePStateDeathTest;
+
+TEST_F(TypedTestCasePStateDeathTest, DetectsDuplicates) {
+  EXPECT_DEATH_IF_SUPPORTED(
+      state_.VerifyRegisteredTestNames("foo.cc", 1, "A, B, A, C"),
+      "foo\\.cc.1.?: Test A is listed more than once\\.");
+}
+
+TEST_F(TypedTestCasePStateDeathTest, DetectsExtraTest) {
+  EXPECT_DEATH_IF_SUPPORTED(
+      state_.VerifyRegisteredTestNames("foo.cc", 1, "A, B, C, D"),
+      "foo\\.cc.1.?: No test named D can be found in this test case\\.");
+}
+
+TEST_F(TypedTestCasePStateDeathTest, DetectsMissedTest) {
+  EXPECT_DEATH_IF_SUPPORTED(
+      state_.VerifyRegisteredTestNames("foo.cc", 1, "A, C"),
+      "foo\\.cc.1.?: You forgot to list test B\\.");
+}
+
+// Tests that defining a test for a parameterized test case generates
+// a run-time error if the test case has been registered.
+TEST_F(TypedTestCasePStateDeathTest, DetectsTestAfterRegistration) {
+  state_.VerifyRegisteredTestNames("foo.cc", 1, "A, B, C");
+  EXPECT_DEATH_IF_SUPPORTED(
+      state_.AddTestName("foo.cc", 2, "FooTest", "D"),
+      "foo\\.cc.2.?: Test D must be defined before REGISTER_TYPED_TEST_CASE_P"
+      "\\(FooTest, \\.\\.\\.\\)\\.");
+}
+
+// Tests that SetUpTestCase()/TearDownTestCase(), fixture ctor/dtor,
+// and SetUp()/TearDown() work correctly in type-parameterized tests.
+
+template <typename T>
+class DerivedTest : public CommonTest<T> {
+};
+
+TYPED_TEST_CASE_P(DerivedTest);
+
+TYPED_TEST_P(DerivedTest, ValuesAreCorrect) {
+  // Static members of the fixture class template can be visited via
+  // the TestFixture:: prefix.
+  EXPECT_EQ(5, *TestFixture::shared_);
+
+  // Non-static members of the fixture class must be visited via
+  // 'this', as required by C++ for class templates.
+  EXPECT_EQ(2, this->value_);
+}
+
+// The second test makes sure shared_ is not deleted after the first
+// test.
+TYPED_TEST_P(DerivedTest, ValuesAreStillCorrect) {
+  // Static members of the fixture class template can also be visited
+  // via 'this'.
+  ASSERT_TRUE(this->shared_ != NULL);
+  EXPECT_EQ(5, *this->shared_);
+  EXPECT_EQ(2, this->value_);
+}
+
+REGISTER_TYPED_TEST_CASE_P(DerivedTest,
+                           ValuesAreCorrect, ValuesAreStillCorrect);
+
+typedef Types<short, long> MyTwoTypes;
+INSTANTIATE_TYPED_TEST_CASE_P(My, DerivedTest, MyTwoTypes);
+
+// Tests that multiple TYPED_TEST_CASE_P's can be defined in the same
+// translation unit.
+
+template <typename T>
+class TypedTestP1 : public Test {
+};
+
+TYPED_TEST_CASE_P(TypedTestP1);
+
+// For testing that the code between TYPED_TEST_CASE_P() and
+// TYPED_TEST_P() is not enclosed in a namespace.
+typedef int IntAfterTypedTestCaseP;
+
+TYPED_TEST_P(TypedTestP1, A) {}
+TYPED_TEST_P(TypedTestP1, B) {}
+
+// For testing that the code between TYPED_TEST_P() and
+// REGISTER_TYPED_TEST_CASE_P() is not enclosed in a namespace.
+typedef int IntBeforeRegisterTypedTestCaseP;
+
+REGISTER_TYPED_TEST_CASE_P(TypedTestP1, A, B);
+
+template <typename T>
+class TypedTestP2 : public Test {
+};
+
+TYPED_TEST_CASE_P(TypedTestP2);
+
+// This also verifies that tests from different type-parameterized
+// test cases can share the same name.
+TYPED_TEST_P(TypedTestP2, A) {}
+
+REGISTER_TYPED_TEST_CASE_P(TypedTestP2, A);
+
+// Verifies that the code between TYPED_TEST_CASE_P() and
+// REGISTER_TYPED_TEST_CASE_P() is not enclosed in a namespace.
+IntAfterTypedTestCaseP after = 0;
+IntBeforeRegisterTypedTestCaseP before = 0;
+
+// Verifies that the last argument of INSTANTIATE_TYPED_TEST_CASE_P()
+// can be either a single type or a Types<...> type list.
+INSTANTIATE_TYPED_TEST_CASE_P(Int, TypedTestP1, int);
+INSTANTIATE_TYPED_TEST_CASE_P(Int, TypedTestP2, Types<int>);
+
+// Tests that the same type-parameterized test case can be
+// instantiated more than once in the same translation unit.
+INSTANTIATE_TYPED_TEST_CASE_P(Double, TypedTestP2, Types<double>);
+
+// Tests that the same type-parameterized test case can be
+// instantiated in different translation units linked together.
+// (ContainerTest is also instantiated in gtest-typed-test_test.cc.)
+typedef Types<std::vector<double>, std::set<char> > MyContainers;
+INSTANTIATE_TYPED_TEST_CASE_P(My, ContainerTest, MyContainers);
+
+// Tests that a type-parameterized test case can be defined and
+// instantiated in a namespace.
+
+namespace library2 {
+
+template <typename T>
+class NumericTest : public Test {
+};
+
+TYPED_TEST_CASE_P(NumericTest);
+
+TYPED_TEST_P(NumericTest, DefaultIsZero) {
+  EXPECT_EQ(0, TypeParam());
+}
+
+TYPED_TEST_P(NumericTest, ZeroIsLessThanOne) {
+  EXPECT_LT(TypeParam(0), TypeParam(1));
+}
+
+REGISTER_TYPED_TEST_CASE_P(NumericTest,
+                           DefaultIsZero, ZeroIsLessThanOne);
+typedef Types<int, double> NumericTypes;
+INSTANTIATE_TYPED_TEST_CASE_P(My, NumericTest, NumericTypes);
+
+}  // namespace library2
+
+#endif  // GTEST_HAS_TYPED_TEST_P
+
+#if !defined(GTEST_HAS_TYPED_TEST) && !defined(GTEST_HAS_TYPED_TEST_P)
+
+// Google Test may not support type-parameterized tests with some
+// compilers. If we use conditional compilation to compile out all
+// code referring to the gtest_main library, MSVC linker will not link
+// that library at all and consequently complain about missing entry
+// point defined in that library (fatal error LNK1561: entry point
+// must be defined). This dummy test keeps gtest_main linked in.
+TEST(DummyTest, TypedTestsAreNotSupportedOnThisPlatform) {}
+
+#endif  // #if !defined(GTEST_HAS_TYPED_TEST) && !defined(GTEST_HAS_TYPED_TEST_P)
diff --git a/google-breakpad/src/testing/gtest/test/gtest-typed-test_test.h b/google-breakpad/src/testing/gtest/test/gtest-typed-test_test.h
new file mode 100644
index 0000000..41d7570
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest-typed-test_test.h
@@ -0,0 +1,66 @@
+// Copyright 2008 Google Inc.
+// All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+#ifndef GTEST_TEST_GTEST_TYPED_TEST_TEST_H_
+#define GTEST_TEST_GTEST_TYPED_TEST_TEST_H_
+
+#include "gtest/gtest.h"
+
+#if GTEST_HAS_TYPED_TEST_P
+
+using testing::Test;
+
+// For testing that the same type-parameterized test case can be
+// instantiated in different translation units linked together.
+// ContainerTest will be instantiated in both gtest-typed-test_test.cc
+// and gtest-typed-test2_test.cc.
+
+template <typename T>
+class ContainerTest : public Test {
+};
+
+TYPED_TEST_CASE_P(ContainerTest);
+
+TYPED_TEST_P(ContainerTest, CanBeDefaultConstructed) {
+  TypeParam container;
+}
+
+TYPED_TEST_P(ContainerTest, InitialSizeIsZero) {
+  TypeParam container;
+  EXPECT_EQ(0U, container.size());
+}
+
+REGISTER_TYPED_TEST_CASE_P(ContainerTest,
+                           CanBeDefaultConstructed, InitialSizeIsZero);
+
+#endif  // GTEST_HAS_TYPED_TEST_P
+
+#endif  // GTEST_TEST_GTEST_TYPED_TEST_TEST_H_
diff --git a/google-breakpad/src/testing/gtest/test/gtest-unittest-api_test.cc b/google-breakpad/src/testing/gtest/test/gtest-unittest-api_test.cc
new file mode 100644
index 0000000..07083e5
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest-unittest-api_test.cc
@@ -0,0 +1,341 @@
+// Copyright 2009 Google Inc.  All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: vladl@google.com (Vlad Losev)
+//
+// The Google C++ Testing Framework (Google Test)
+//
+// This file contains tests verifying correctness of data provided via
+// UnitTest's public methods.
+
+#include "gtest/gtest.h"
+
+#include <string.h>  // For strcmp.
+#include <algorithm>
+
+using ::testing::InitGoogleTest;
+
+namespace testing {
+namespace internal {
+
+template <typename T>
+struct LessByName {
+  bool operator()(const T* a, const T* b) {
+    return strcmp(a->name(), b->name()) < 0;
+  }
+};
+
+class UnitTestHelper {
+ public:
+  // Returns the array of pointers to all test cases sorted by the test case
+  // name.  The caller is responsible for deleting the array.
+  static TestCase const** const GetSortedTestCases() {
+    UnitTest& unit_test = *UnitTest::GetInstance();
+    TestCase const** const test_cases =
+        new const TestCase*[unit_test.total_test_case_count()];
+
+    for (int i = 0; i < unit_test.total_test_case_count(); ++i)
+      test_cases[i] = unit_test.GetTestCase(i);
+
+    std::sort(test_cases,
+              test_cases + unit_test.total_test_case_count(),
+              LessByName<TestCase>());
+    return test_cases;
+  }
+
+  // Returns the test case by its name.  The caller doesn't own the returned
+  // pointer.
+  static const TestCase* FindTestCase(const char* name) {
+    UnitTest& unit_test = *UnitTest::GetInstance();
+    for (int i = 0; i < unit_test.total_test_case_count(); ++i) {
+      const TestCase* test_case = unit_test.GetTestCase(i);
+      if (0 == strcmp(test_case->name(), name))
+        return test_case;
+    }
+    return NULL;
+  }
+
+  // Returns the array of pointers to all tests in a particular test case
+  // sorted by the test name.  The caller is responsible for deleting the
+  // array.
+  static TestInfo const** const GetSortedTests(const TestCase* test_case) {
+    TestInfo const** const tests =
+        new const TestInfo*[test_case->total_test_count()];
+
+    for (int i = 0; i < test_case->total_test_count(); ++i)
+      tests[i] = test_case->GetTestInfo(i);
+
+    std::sort(tests, tests + test_case->total_test_count(),
+              LessByName<TestInfo>());
+    return tests;
+  }
+};
+
+#if GTEST_HAS_TYPED_TEST
+template <typename T> class TestCaseWithCommentTest : public Test {};
+TYPED_TEST_CASE(TestCaseWithCommentTest, Types<int>);
+TYPED_TEST(TestCaseWithCommentTest, Dummy) {}
+
+const int kTypedTestCases = 1;
+const int kTypedTests = 1;
+#else
+const int kTypedTestCases = 0;
+const int kTypedTests = 0;
+#endif  // GTEST_HAS_TYPED_TEST
+
+// We can only test the accessors that do not change value while tests run.
+// Since tests can be run in any order, the values the accessors that track
+// test execution (such as failed_test_count) can not be predicted.
+TEST(ApiTest, UnitTestImmutableAccessorsWork) {
+  UnitTest* unit_test = UnitTest::GetInstance();
+
+  ASSERT_EQ(2 + kTypedTestCases, unit_test->total_test_case_count());
+  EXPECT_EQ(1 + kTypedTestCases, unit_test->test_case_to_run_count());
+  EXPECT_EQ(2, unit_test->disabled_test_count());
+  EXPECT_EQ(5 + kTypedTests, unit_test->total_test_count());
+  EXPECT_EQ(3 + kTypedTests, unit_test->test_to_run_count());
+
+  const TestCase** const test_cases = UnitTestHelper::GetSortedTestCases();
+
+  EXPECT_STREQ("ApiTest", test_cases[0]->name());
+  EXPECT_STREQ("DISABLED_Test", test_cases[1]->name());
+#if GTEST_HAS_TYPED_TEST
+  EXPECT_STREQ("TestCaseWithCommentTest/0", test_cases[2]->name());
+#endif  // GTEST_HAS_TYPED_TEST
+
+  delete[] test_cases;
+
+  // The following lines initiate actions to verify certain methods in
+  // FinalSuccessChecker::TearDown.
+
+  // Records a test property to verify TestResult::GetTestProperty().
+  RecordProperty("key", "value");
+}
+
+AssertionResult IsNull(const char* str) {
+  if (str != NULL) {
+    return testing::AssertionFailure() << "argument is " << str;
+  }
+  return AssertionSuccess();
+}
+
+TEST(ApiTest, TestCaseImmutableAccessorsWork) {
+  const TestCase* test_case = UnitTestHelper::FindTestCase("ApiTest");
+  ASSERT_TRUE(test_case != NULL);
+
+  EXPECT_STREQ("ApiTest", test_case->name());
+  EXPECT_TRUE(IsNull(test_case->type_param()));
+  EXPECT_TRUE(test_case->should_run());
+  EXPECT_EQ(1, test_case->disabled_test_count());
+  EXPECT_EQ(3, test_case->test_to_run_count());
+  ASSERT_EQ(4, test_case->total_test_count());
+
+  const TestInfo** tests = UnitTestHelper::GetSortedTests(test_case);
+
+  EXPECT_STREQ("DISABLED_Dummy1", tests[0]->name());
+  EXPECT_STREQ("ApiTest", tests[0]->test_case_name());
+  EXPECT_TRUE(IsNull(tests[0]->value_param()));
+  EXPECT_TRUE(IsNull(tests[0]->type_param()));
+  EXPECT_FALSE(tests[0]->should_run());
+
+  EXPECT_STREQ("TestCaseDisabledAccessorsWork", tests[1]->name());
+  EXPECT_STREQ("ApiTest", tests[1]->test_case_name());
+  EXPECT_TRUE(IsNull(tests[1]->value_param()));
+  EXPECT_TRUE(IsNull(tests[1]->type_param()));
+  EXPECT_TRUE(tests[1]->should_run());
+
+  EXPECT_STREQ("TestCaseImmutableAccessorsWork", tests[2]->name());
+  EXPECT_STREQ("ApiTest", tests[2]->test_case_name());
+  EXPECT_TRUE(IsNull(tests[2]->value_param()));
+  EXPECT_TRUE(IsNull(tests[2]->type_param()));
+  EXPECT_TRUE(tests[2]->should_run());
+
+  EXPECT_STREQ("UnitTestImmutableAccessorsWork", tests[3]->name());
+  EXPECT_STREQ("ApiTest", tests[3]->test_case_name());
+  EXPECT_TRUE(IsNull(tests[3]->value_param()));
+  EXPECT_TRUE(IsNull(tests[3]->type_param()));
+  EXPECT_TRUE(tests[3]->should_run());
+
+  delete[] tests;
+  tests = NULL;
+
+#if GTEST_HAS_TYPED_TEST
+  test_case = UnitTestHelper::FindTestCase("TestCaseWithCommentTest/0");
+  ASSERT_TRUE(test_case != NULL);
+
+  EXPECT_STREQ("TestCaseWithCommentTest/0", test_case->name());
+  EXPECT_STREQ(GetTypeName<int>().c_str(), test_case->type_param());
+  EXPECT_TRUE(test_case->should_run());
+  EXPECT_EQ(0, test_case->disabled_test_count());
+  EXPECT_EQ(1, test_case->test_to_run_count());
+  ASSERT_EQ(1, test_case->total_test_count());
+
+  tests = UnitTestHelper::GetSortedTests(test_case);
+
+  EXPECT_STREQ("Dummy", tests[0]->name());
+  EXPECT_STREQ("TestCaseWithCommentTest/0", tests[0]->test_case_name());
+  EXPECT_TRUE(IsNull(tests[0]->value_param()));
+  EXPECT_STREQ(GetTypeName<int>().c_str(), tests[0]->type_param());
+  EXPECT_TRUE(tests[0]->should_run());
+
+  delete[] tests;
+#endif  // GTEST_HAS_TYPED_TEST
+}
+
+TEST(ApiTest, TestCaseDisabledAccessorsWork) {
+  const TestCase* test_case = UnitTestHelper::FindTestCase("DISABLED_Test");
+  ASSERT_TRUE(test_case != NULL);
+
+  EXPECT_STREQ("DISABLED_Test", test_case->name());
+  EXPECT_TRUE(IsNull(test_case->type_param()));
+  EXPECT_FALSE(test_case->should_run());
+  EXPECT_EQ(1, test_case->disabled_test_count());
+  EXPECT_EQ(0, test_case->test_to_run_count());
+  ASSERT_EQ(1, test_case->total_test_count());
+
+  const TestInfo* const test_info = test_case->GetTestInfo(0);
+  EXPECT_STREQ("Dummy2", test_info->name());
+  EXPECT_STREQ("DISABLED_Test", test_info->test_case_name());
+  EXPECT_TRUE(IsNull(test_info->value_param()));
+  EXPECT_TRUE(IsNull(test_info->type_param()));
+  EXPECT_FALSE(test_info->should_run());
+}
+
+// These two tests are here to provide support for testing
+// test_case_to_run_count, disabled_test_count, and test_to_run_count.
+TEST(ApiTest, DISABLED_Dummy1) {}
+TEST(DISABLED_Test, Dummy2) {}
+
+class FinalSuccessChecker : public Environment {
+ protected:
+  virtual void TearDown() {
+    UnitTest* unit_test = UnitTest::GetInstance();
+
+    EXPECT_EQ(1 + kTypedTestCases, unit_test->successful_test_case_count());
+    EXPECT_EQ(3 + kTypedTests, unit_test->successful_test_count());
+    EXPECT_EQ(0, unit_test->failed_test_case_count());
+    EXPECT_EQ(0, unit_test->failed_test_count());
+    EXPECT_TRUE(unit_test->Passed());
+    EXPECT_FALSE(unit_test->Failed());
+    ASSERT_EQ(2 + kTypedTestCases, unit_test->total_test_case_count());
+
+    const TestCase** const test_cases = UnitTestHelper::GetSortedTestCases();
+
+    EXPECT_STREQ("ApiTest", test_cases[0]->name());
+    EXPECT_TRUE(IsNull(test_cases[0]->type_param()));
+    EXPECT_TRUE(test_cases[0]->should_run());
+    EXPECT_EQ(1, test_cases[0]->disabled_test_count());
+    ASSERT_EQ(4, test_cases[0]->total_test_count());
+    EXPECT_EQ(3, test_cases[0]->successful_test_count());
+    EXPECT_EQ(0, test_cases[0]->failed_test_count());
+    EXPECT_TRUE(test_cases[0]->Passed());
+    EXPECT_FALSE(test_cases[0]->Failed());
+
+    EXPECT_STREQ("DISABLED_Test", test_cases[1]->name());
+    EXPECT_TRUE(IsNull(test_cases[1]->type_param()));
+    EXPECT_FALSE(test_cases[1]->should_run());
+    EXPECT_EQ(1, test_cases[1]->disabled_test_count());
+    ASSERT_EQ(1, test_cases[1]->total_test_count());
+    EXPECT_EQ(0, test_cases[1]->successful_test_count());
+    EXPECT_EQ(0, test_cases[1]->failed_test_count());
+
+#if GTEST_HAS_TYPED_TEST
+    EXPECT_STREQ("TestCaseWithCommentTest/0", test_cases[2]->name());
+    EXPECT_STREQ(GetTypeName<int>().c_str(), test_cases[2]->type_param());
+    EXPECT_TRUE(test_cases[2]->should_run());
+    EXPECT_EQ(0, test_cases[2]->disabled_test_count());
+    ASSERT_EQ(1, test_cases[2]->total_test_count());
+    EXPECT_EQ(1, test_cases[2]->successful_test_count());
+    EXPECT_EQ(0, test_cases[2]->failed_test_count());
+    EXPECT_TRUE(test_cases[2]->Passed());
+    EXPECT_FALSE(test_cases[2]->Failed());
+#endif  // GTEST_HAS_TYPED_TEST
+
+    const TestCase* test_case = UnitTestHelper::FindTestCase("ApiTest");
+    const TestInfo** tests = UnitTestHelper::GetSortedTests(test_case);
+    EXPECT_STREQ("DISABLED_Dummy1", tests[0]->name());
+    EXPECT_STREQ("ApiTest", tests[0]->test_case_name());
+    EXPECT_FALSE(tests[0]->should_run());
+
+    EXPECT_STREQ("TestCaseDisabledAccessorsWork", tests[1]->name());
+    EXPECT_STREQ("ApiTest", tests[1]->test_case_name());
+    EXPECT_TRUE(IsNull(tests[1]->value_param()));
+    EXPECT_TRUE(IsNull(tests[1]->type_param()));
+    EXPECT_TRUE(tests[1]->should_run());
+    EXPECT_TRUE(tests[1]->result()->Passed());
+    EXPECT_EQ(0, tests[1]->result()->test_property_count());
+
+    EXPECT_STREQ("TestCaseImmutableAccessorsWork", tests[2]->name());
+    EXPECT_STREQ("ApiTest", tests[2]->test_case_name());
+    EXPECT_TRUE(IsNull(tests[2]->value_param()));
+    EXPECT_TRUE(IsNull(tests[2]->type_param()));
+    EXPECT_TRUE(tests[2]->should_run());
+    EXPECT_TRUE(tests[2]->result()->Passed());
+    EXPECT_EQ(0, tests[2]->result()->test_property_count());
+
+    EXPECT_STREQ("UnitTestImmutableAccessorsWork", tests[3]->name());
+    EXPECT_STREQ("ApiTest", tests[3]->test_case_name());
+    EXPECT_TRUE(IsNull(tests[3]->value_param()));
+    EXPECT_TRUE(IsNull(tests[3]->type_param()));
+    EXPECT_TRUE(tests[3]->should_run());
+    EXPECT_TRUE(tests[3]->result()->Passed());
+    EXPECT_EQ(1, tests[3]->result()->test_property_count());
+    const TestProperty& property = tests[3]->result()->GetTestProperty(0);
+    EXPECT_STREQ("key", property.key());
+    EXPECT_STREQ("value", property.value());
+
+    delete[] tests;
+
+#if GTEST_HAS_TYPED_TEST
+    test_case = UnitTestHelper::FindTestCase("TestCaseWithCommentTest/0");
+    tests = UnitTestHelper::GetSortedTests(test_case);
+
+    EXPECT_STREQ("Dummy", tests[0]->name());
+    EXPECT_STREQ("TestCaseWithCommentTest/0", tests[0]->test_case_name());
+    EXPECT_TRUE(IsNull(tests[0]->value_param()));
+    EXPECT_STREQ(GetTypeName<int>().c_str(), tests[0]->type_param());
+    EXPECT_TRUE(tests[0]->should_run());
+    EXPECT_TRUE(tests[0]->result()->Passed());
+    EXPECT_EQ(0, tests[0]->result()->test_property_count());
+
+    delete[] tests;
+#endif  // GTEST_HAS_TYPED_TEST
+    delete[] test_cases;
+  }
+};
+
+}  // namespace internal
+}  // namespace testing
+
+int main(int argc, char **argv) {
+  InitGoogleTest(&argc, argv);
+
+  AddGlobalTestEnvironment(new testing::internal::FinalSuccessChecker());
+
+  return RUN_ALL_TESTS();
+}
diff --git a/google-breakpad/src/testing/gtest/test/gtest_all_test.cc b/google-breakpad/src/testing/gtest/test/gtest_all_test.cc
new file mode 100644
index 0000000..955aa62
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest_all_test.cc
@@ -0,0 +1,47 @@
+// Copyright 2009, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+//
+// Tests for Google C++ Testing Framework (Google Test)
+//
+// Sometimes it's desirable to build most of Google Test's own tests
+// by compiling a single file.  This file serves this purpose.
+#include "test/gtest-filepath_test.cc"
+#include "test/gtest-linked_ptr_test.cc"
+#include "test/gtest-message_test.cc"
+#include "test/gtest-options_test.cc"
+#include "test/gtest-port_test.cc"
+#include "test/gtest_pred_impl_unittest.cc"
+#include "test/gtest_prod_test.cc"
+#include "test/gtest-test-part_test.cc"
+#include "test/gtest-typed-test_test.cc"
+#include "test/gtest-typed-test2_test.cc"
+#include "test/gtest_unittest.cc"
+#include "test/production.cc"
diff --git a/google-breakpad/src/testing/gtest/test/gtest_break_on_failure_unittest.py b/google-breakpad/src/testing/gtest/test/gtest_break_on_failure_unittest.py
new file mode 100755
index 0000000..c819183
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest_break_on_failure_unittest.py
@@ -0,0 +1,218 @@
+#!/usr/bin/env python
+#
+# Copyright 2006, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+"""Unit test for Google Test's break-on-failure mode.
+
+A user can ask Google Test to seg-fault when an assertion fails, using
+either the GTEST_BREAK_ON_FAILURE environment variable or the
+--gtest_break_on_failure flag.  This script tests such functionality
+by invoking gtest_break_on_failure_unittest_ (a program written with
+Google Test) with different environments and command line flags.
+"""
+
+__author__ = 'wan@google.com (Zhanyong Wan)'
+
+import gtest_test_utils
+import os
+import sys
+
+
+# Constants.
+
+IS_WINDOWS = os.name == 'nt'
+
+# The environment variable for enabling/disabling the break-on-failure mode.
+BREAK_ON_FAILURE_ENV_VAR = 'GTEST_BREAK_ON_FAILURE'
+
+# The command line flag for enabling/disabling the break-on-failure mode.
+BREAK_ON_FAILURE_FLAG = 'gtest_break_on_failure'
+
+# The environment variable for enabling/disabling the throw-on-failure mode.
+THROW_ON_FAILURE_ENV_VAR = 'GTEST_THROW_ON_FAILURE'
+
+# The environment variable for enabling/disabling the catch-exceptions mode.
+CATCH_EXCEPTIONS_ENV_VAR = 'GTEST_CATCH_EXCEPTIONS'
+
+# Path to the gtest_break_on_failure_unittest_ program.
+EXE_PATH = gtest_test_utils.GetTestExecutablePath(
+    'gtest_break_on_failure_unittest_')
+
+
+# Utilities.
+
+
+environ = os.environ.copy()
+
+
+def SetEnvVar(env_var, value):
+  """Sets an environment variable to a given value; unsets it when the
+  given value is None.
+  """
+
+  if value is not None:
+    environ[env_var] = value
+  elif env_var in environ:
+    del environ[env_var]
+
+
+def Run(command):
+  """Runs a command; returns 1 if it was killed by a signal, or 0 otherwise."""
+
+  p = gtest_test_utils.Subprocess(command, env=environ)
+  if p.terminated_by_signal:
+    return 1
+  else:
+    return 0
+
+
+# The tests.
+
+
+class GTestBreakOnFailureUnitTest(gtest_test_utils.TestCase):
+  """Tests using the GTEST_BREAK_ON_FAILURE environment variable or
+  the --gtest_break_on_failure flag to turn assertion failures into
+  segmentation faults.
+  """
+
+  def RunAndVerify(self, env_var_value, flag_value, expect_seg_fault):
+    """Runs gtest_break_on_failure_unittest_ and verifies that it does
+    (or does not) have a seg-fault.
+
+    Args:
+      env_var_value:    value of the GTEST_BREAK_ON_FAILURE environment
+                        variable; None if the variable should be unset.
+      flag_value:       value of the --gtest_break_on_failure flag;
+                        None if the flag should not be present.
+      expect_seg_fault: 1 if the program is expected to generate a seg-fault;
+                        0 otherwise.
+    """
+
+    SetEnvVar(BREAK_ON_FAILURE_ENV_VAR, env_var_value)
+
+    if env_var_value is None:
+      env_var_value_msg = ' is not set'
+    else:
+      env_var_value_msg = '=' + env_var_value
+
+    if flag_value is None:
+      flag = ''
+    elif flag_value == '0':
+      flag = '--%s=0' % BREAK_ON_FAILURE_FLAG
+    else:
+      flag = '--%s' % BREAK_ON_FAILURE_FLAG
+
+    command = [EXE_PATH]
+    if flag:
+      command.append(flag)
+
+    if expect_seg_fault:
+      should_or_not = 'should'
+    else:
+      should_or_not = 'should not'
+
+    has_seg_fault = Run(command)
+
+    SetEnvVar(BREAK_ON_FAILURE_ENV_VAR, None)
+
+    msg = ('when %s%s, an assertion failure in "%s" %s cause a seg-fault.' %
+           (BREAK_ON_FAILURE_ENV_VAR, env_var_value_msg, ' '.join(command),
+            should_or_not))
+    self.assert_(has_seg_fault == expect_seg_fault, msg)
+
+  def testDefaultBehavior(self):
+    """Tests the behavior of the default mode."""
+
+    self.RunAndVerify(env_var_value=None,
+                      flag_value=None,
+                      expect_seg_fault=0)
+
+  def testEnvVar(self):
+    """Tests using the GTEST_BREAK_ON_FAILURE environment variable."""
+
+    self.RunAndVerify(env_var_value='0',
+                      flag_value=None,
+                      expect_seg_fault=0)
+    self.RunAndVerify(env_var_value='1',
+                      flag_value=None,
+                      expect_seg_fault=1)
+
+  def testFlag(self):
+    """Tests using the --gtest_break_on_failure flag."""
+
+    self.RunAndVerify(env_var_value=None,
+                      flag_value='0',
+                      expect_seg_fault=0)
+    self.RunAndVerify(env_var_value=None,
+                      flag_value='1',
+                      expect_seg_fault=1)
+
+  def testFlagOverridesEnvVar(self):
+    """Tests that the flag overrides the environment variable."""
+
+    self.RunAndVerify(env_var_value='0',
+                      flag_value='0',
+                      expect_seg_fault=0)
+    self.RunAndVerify(env_var_value='0',
+                      flag_value='1',
+                      expect_seg_fault=1)
+    self.RunAndVerify(env_var_value='1',
+                      flag_value='0',
+                      expect_seg_fault=0)
+    self.RunAndVerify(env_var_value='1',
+                      flag_value='1',
+                      expect_seg_fault=1)
+
+  def testBreakOnFailureOverridesThrowOnFailure(self):
+    """Tests that gtest_break_on_failure overrides gtest_throw_on_failure."""
+
+    SetEnvVar(THROW_ON_FAILURE_ENV_VAR, '1')
+    try:
+      self.RunAndVerify(env_var_value=None,
+                        flag_value='1',
+                        expect_seg_fault=1)
+    finally:
+      SetEnvVar(THROW_ON_FAILURE_ENV_VAR, None)
+
+  if IS_WINDOWS:
+    def testCatchExceptionsDoesNotInterfere(self):
+      """Tests that gtest_catch_exceptions doesn't interfere."""
+
+      SetEnvVar(CATCH_EXCEPTIONS_ENV_VAR, '1')
+      try:
+        self.RunAndVerify(env_var_value='1',
+                          flag_value='1',
+                          expect_seg_fault=1)
+      finally:
+        SetEnvVar(CATCH_EXCEPTIONS_ENV_VAR, None)
+
+
+if __name__ == '__main__':
+  gtest_test_utils.Main()
diff --git a/google-breakpad/src/testing/gtest/test/gtest_break_on_failure_unittest_.cc b/google-breakpad/src/testing/gtest/test/gtest_break_on_failure_unittest_.cc
new file mode 100644
index 0000000..dd07478
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest_break_on_failure_unittest_.cc
@@ -0,0 +1,88 @@
+// Copyright 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Unit test for Google Test's break-on-failure mode.
+//
+// A user can ask Google Test to seg-fault when an assertion fails, using
+// either the GTEST_BREAK_ON_FAILURE environment variable or the
+// --gtest_break_on_failure flag.  This file is used for testing such
+// functionality.
+//
+// This program will be invoked from a Python unit test.  It is
+// expected to fail.  Don't run it directly.
+
+#include "gtest/gtest.h"
+
+#if GTEST_OS_WINDOWS
+# include <windows.h>
+# include <stdlib.h>
+#endif
+
+namespace {
+
+// A test that's expected to fail.
+TEST(Foo, Bar) {
+  EXPECT_EQ(2, 3);
+}
+
+#if GTEST_HAS_SEH && !GTEST_OS_WINDOWS_MOBILE
+// On Windows Mobile global exception handlers are not supported.
+LONG WINAPI ExitWithExceptionCode(
+    struct _EXCEPTION_POINTERS* exception_pointers) {
+  exit(exception_pointers->ExceptionRecord->ExceptionCode);
+}
+#endif
+
+}  // namespace
+
+int main(int argc, char **argv) {
+#if GTEST_OS_WINDOWS
+  // Suppresses display of the Windows error dialog upon encountering
+  // a general protection fault (segment violation).
+  SetErrorMode(SEM_NOGPFAULTERRORBOX | SEM_FAILCRITICALERRORS);
+
+# if GTEST_HAS_SEH && !GTEST_OS_WINDOWS_MOBILE
+
+  // The default unhandled exception filter does not always exit
+  // with the exception code as exit code - for example it exits with
+  // 0 for EXCEPTION_ACCESS_VIOLATION and 1 for EXCEPTION_BREAKPOINT
+  // if the application is compiled in debug mode. Thus we use our own
+  // filter which always exits with the exception code for unhandled
+  // exceptions.
+  SetUnhandledExceptionFilter(ExitWithExceptionCode);
+
+# endif
+#endif
+
+  testing::InitGoogleTest(&argc, argv);
+
+  return RUN_ALL_TESTS();
+}
diff --git a/google-breakpad/src/testing/gtest/test/gtest_catch_exceptions_test.py b/google-breakpad/src/testing/gtest/test/gtest_catch_exceptions_test.py
new file mode 100755
index 0000000..d7ef10e
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest_catch_exceptions_test.py
@@ -0,0 +1,223 @@
+#!/usr/bin/env python
+#
+# Copyright 2010 Google Inc.  All Rights Reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+"""Tests Google Test's exception catching behavior.
+
+This script invokes gtest_catch_exceptions_test_ and
+gtest_catch_exceptions_ex_test_ (programs written with
+Google Test) and verifies their output.
+"""
+
+__author__ = 'vladl@google.com (Vlad Losev)'
+
+import os
+
+import gtest_test_utils
+
+# Constants.
+FLAG_PREFIX = '--gtest_'
+LIST_TESTS_FLAG = FLAG_PREFIX + 'list_tests'
+NO_CATCH_EXCEPTIONS_FLAG = FLAG_PREFIX + 'catch_exceptions=0'
+FILTER_FLAG = FLAG_PREFIX + 'filter'
+
+# Path to the gtest_catch_exceptions_ex_test_ binary, compiled with
+# exceptions enabled.
+EX_EXE_PATH = gtest_test_utils.GetTestExecutablePath(
+    'gtest_catch_exceptions_ex_test_')
+
+# Path to the gtest_catch_exceptions_test_ binary, compiled with
+# exceptions disabled.
+EXE_PATH = gtest_test_utils.GetTestExecutablePath(
+    'gtest_catch_exceptions_no_ex_test_')
+
+TEST_LIST = gtest_test_utils.Subprocess([EXE_PATH, LIST_TESTS_FLAG]).output
+
+SUPPORTS_SEH_EXCEPTIONS = 'ThrowsSehException' in TEST_LIST
+
+if SUPPORTS_SEH_EXCEPTIONS:
+  BINARY_OUTPUT = gtest_test_utils.Subprocess([EXE_PATH]).output
+
+EX_BINARY_OUTPUT = gtest_test_utils.Subprocess([EX_EXE_PATH]).output
+
+# The tests.
+if SUPPORTS_SEH_EXCEPTIONS:
+  # pylint:disable-msg=C6302
+  class CatchSehExceptionsTest(gtest_test_utils.TestCase):
+    """Tests exception-catching behavior."""
+
+
+    def TestSehExceptions(self, test_output):
+      self.assert_('SEH exception with code 0x2a thrown '
+                   'in the test fixture\'s constructor'
+                   in test_output)
+      self.assert_('SEH exception with code 0x2a thrown '
+                   'in the test fixture\'s destructor'
+                   in test_output)
+      self.assert_('SEH exception with code 0x2a thrown in SetUpTestCase()'
+                   in test_output)
+      self.assert_('SEH exception with code 0x2a thrown in TearDownTestCase()'
+                   in test_output)
+      self.assert_('SEH exception with code 0x2a thrown in SetUp()'
+                   in test_output)
+      self.assert_('SEH exception with code 0x2a thrown in TearDown()'
+                   in test_output)
+      self.assert_('SEH exception with code 0x2a thrown in the test body'
+                   in test_output)
+
+    def testCatchesSehExceptionsWithCxxExceptionsEnabled(self):
+      self.TestSehExceptions(EX_BINARY_OUTPUT)
+
+    def testCatchesSehExceptionsWithCxxExceptionsDisabled(self):
+      self.TestSehExceptions(BINARY_OUTPUT)
+
+
+class CatchCxxExceptionsTest(gtest_test_utils.TestCase):
+  """Tests C++ exception-catching behavior.
+
+     Tests in this test case verify that:
+     * C++ exceptions are caught and logged as C++ (not SEH) exceptions
+     * Exception thrown affect the remainder of the test work flow in the
+       expected manner.
+  """
+
+  def testCatchesCxxExceptionsInFixtureConstructor(self):
+    self.assert_('C++ exception with description '
+                 '"Standard C++ exception" thrown '
+                 'in the test fixture\'s constructor'
+                 in EX_BINARY_OUTPUT)
+    self.assert_('unexpected' not in EX_BINARY_OUTPUT,
+                 'This failure belongs in this test only if '
+                 '"CxxExceptionInConstructorTest" (no quotes) '
+                 'appears on the same line as words "called unexpectedly"')
+
+  if ('CxxExceptionInDestructorTest.ThrowsExceptionInDestructor' in
+      EX_BINARY_OUTPUT):
+
+    def testCatchesCxxExceptionsInFixtureDestructor(self):
+      self.assert_('C++ exception with description '
+                   '"Standard C++ exception" thrown '
+                   'in the test fixture\'s destructor'
+                   in EX_BINARY_OUTPUT)
+      self.assert_('CxxExceptionInDestructorTest::TearDownTestCase() '
+                   'called as expected.'
+                   in EX_BINARY_OUTPUT)
+
+  def testCatchesCxxExceptionsInSetUpTestCase(self):
+    self.assert_('C++ exception with description "Standard C++ exception"'
+                 ' thrown in SetUpTestCase()'
+                 in EX_BINARY_OUTPUT)
+    self.assert_('CxxExceptionInConstructorTest::TearDownTestCase() '
+                 'called as expected.'
+                 in EX_BINARY_OUTPUT)
+    self.assert_('CxxExceptionInSetUpTestCaseTest constructor '
+                 'called as expected.'
+                 in EX_BINARY_OUTPUT)
+    self.assert_('CxxExceptionInSetUpTestCaseTest destructor '
+                 'called as expected.'
+                 in EX_BINARY_OUTPUT)
+    self.assert_('CxxExceptionInSetUpTestCaseTest::SetUp() '
+                 'called as expected.'
+                 in EX_BINARY_OUTPUT)
+    self.assert_('CxxExceptionInSetUpTestCaseTest::TearDown() '
+                 'called as expected.'
+                 in EX_BINARY_OUTPUT)
+    self.assert_('CxxExceptionInSetUpTestCaseTest test body '
+                 'called as expected.'
+                 in EX_BINARY_OUTPUT)
+
+  def testCatchesCxxExceptionsInTearDownTestCase(self):
+    self.assert_('C++ exception with description "Standard C++ exception"'
+                 ' thrown in TearDownTestCase()'
+                 in EX_BINARY_OUTPUT)
+
+  def testCatchesCxxExceptionsInSetUp(self):
+    self.assert_('C++ exception with description "Standard C++ exception"'
+                 ' thrown in SetUp()'
+                 in EX_BINARY_OUTPUT)
+    self.assert_('CxxExceptionInSetUpTest::TearDownTestCase() '
+                 'called as expected.'
+                 in EX_BINARY_OUTPUT)
+    self.assert_('CxxExceptionInSetUpTest destructor '
+                 'called as expected.'
+                 in EX_BINARY_OUTPUT)
+    self.assert_('CxxExceptionInSetUpTest::TearDown() '
+                 'called as expected.'
+                 in EX_BINARY_OUTPUT)
+    self.assert_('unexpected' not in EX_BINARY_OUTPUT,
+                 'This failure belongs in this test only if '
+                 '"CxxExceptionInSetUpTest" (no quotes) '
+                 'appears on the same line as words "called unexpectedly"')
+
+  def testCatchesCxxExceptionsInTearDown(self):
+    self.assert_('C++ exception with description "Standard C++ exception"'
+                 ' thrown in TearDown()'
+                 in EX_BINARY_OUTPUT)
+    self.assert_('CxxExceptionInTearDownTest::TearDownTestCase() '
+                 'called as expected.'
+                 in EX_BINARY_OUTPUT)
+    self.assert_('CxxExceptionInTearDownTest destructor '
+                 'called as expected.'
+                 in EX_BINARY_OUTPUT)
+
+  def testCatchesCxxExceptionsInTestBody(self):
+    self.assert_('C++ exception with description "Standard C++ exception"'
+                 ' thrown in the test body'
+                 in EX_BINARY_OUTPUT)
+    self.assert_('CxxExceptionInTestBodyTest::TearDownTestCase() '
+                 'called as expected.'
+                 in EX_BINARY_OUTPUT)
+    self.assert_('CxxExceptionInTestBodyTest destructor '
+                 'called as expected.'
+                 in EX_BINARY_OUTPUT)
+    self.assert_('CxxExceptionInTestBodyTest::TearDown() '
+                 'called as expected.'
+                 in EX_BINARY_OUTPUT)
+
+  def testCatchesNonStdCxxExceptions(self):
+    self.assert_('Unknown C++ exception thrown in the test body'
+                 in EX_BINARY_OUTPUT)
+
+  def testUnhandledCxxExceptionsAbortTheProgram(self):
+    # Filters out SEH exception tests on Windows. Unhandled SEH exceptions
+    # cause tests to show pop-up windows there.
+    FITLER_OUT_SEH_TESTS_FLAG = FILTER_FLAG + '=-*Seh*'
+    # By default, Google Test doesn't catch the exceptions.
+    uncaught_exceptions_ex_binary_output = gtest_test_utils.Subprocess(
+        [EX_EXE_PATH,
+         NO_CATCH_EXCEPTIONS_FLAG,
+         FITLER_OUT_SEH_TESTS_FLAG]).output
+
+    self.assert_('Unhandled C++ exception terminating the program'
+                 in uncaught_exceptions_ex_binary_output)
+    self.assert_('unexpected' not in uncaught_exceptions_ex_binary_output)
+
+
+if __name__ == '__main__':
+  gtest_test_utils.Main()
diff --git a/google-breakpad/src/testing/gtest/test/gtest_catch_exceptions_test_.cc b/google-breakpad/src/testing/gtest/test/gtest_catch_exceptions_test_.cc
new file mode 100644
index 0000000..d0fc82c
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest_catch_exceptions_test_.cc
@@ -0,0 +1,311 @@
+// Copyright 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: vladl@google.com (Vlad Losev)
+//
+// Tests for Google Test itself. Tests in this file throw C++ or SEH
+// exceptions, and the output is verified by gtest_catch_exceptions_test.py.
+
+#include "gtest/gtest.h"
+
+#include <stdio.h>  // NOLINT
+#include <stdlib.h>  // For exit().
+
+#if GTEST_HAS_SEH
+# include <windows.h>
+#endif
+
+#if GTEST_HAS_EXCEPTIONS
+# include <exception>  // For set_terminate().
+# include <stdexcept>
+#endif
+
+using testing::Test;
+
+#if GTEST_HAS_SEH
+
+class SehExceptionInConstructorTest : public Test {
+ public:
+  SehExceptionInConstructorTest() { RaiseException(42, 0, 0, NULL); }
+};
+
+TEST_F(SehExceptionInConstructorTest, ThrowsExceptionInConstructor) {}
+
+class SehExceptionInDestructorTest : public Test {
+ public:
+  ~SehExceptionInDestructorTest() { RaiseException(42, 0, 0, NULL); }
+};
+
+TEST_F(SehExceptionInDestructorTest, ThrowsExceptionInDestructor) {}
+
+class SehExceptionInSetUpTestCaseTest : public Test {
+ public:
+  static void SetUpTestCase() { RaiseException(42, 0, 0, NULL); }
+};
+
+TEST_F(SehExceptionInSetUpTestCaseTest, ThrowsExceptionInSetUpTestCase) {}
+
+class SehExceptionInTearDownTestCaseTest : public Test {
+ public:
+  static void TearDownTestCase() { RaiseException(42, 0, 0, NULL); }
+};
+
+TEST_F(SehExceptionInTearDownTestCaseTest, ThrowsExceptionInTearDownTestCase) {}
+
+class SehExceptionInSetUpTest : public Test {
+ protected:
+  virtual void SetUp() { RaiseException(42, 0, 0, NULL); }
+};
+
+TEST_F(SehExceptionInSetUpTest, ThrowsExceptionInSetUp) {}
+
+class SehExceptionInTearDownTest : public Test {
+ protected:
+  virtual void TearDown() { RaiseException(42, 0, 0, NULL); }
+};
+
+TEST_F(SehExceptionInTearDownTest, ThrowsExceptionInTearDown) {}
+
+TEST(SehExceptionTest, ThrowsSehException) {
+  RaiseException(42, 0, 0, NULL);
+}
+
+#endif  // GTEST_HAS_SEH
+
+#if GTEST_HAS_EXCEPTIONS
+
+class CxxExceptionInConstructorTest : public Test {
+ public:
+  CxxExceptionInConstructorTest() {
+    // Without this macro VC++ complains about unreachable code at the end of
+    // the constructor.
+    GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(
+        throw std::runtime_error("Standard C++ exception"));
+  }
+
+  static void TearDownTestCase() {
+    printf("%s",
+           "CxxExceptionInConstructorTest::TearDownTestCase() "
+           "called as expected.\n");
+  }
+
+ protected:
+  ~CxxExceptionInConstructorTest() {
+    ADD_FAILURE() << "CxxExceptionInConstructorTest destructor "
+                  << "called unexpectedly.";
+  }
+
+  virtual void SetUp() {
+    ADD_FAILURE() << "CxxExceptionInConstructorTest::SetUp() "
+                  << "called unexpectedly.";
+  }
+
+  virtual void TearDown() {
+    ADD_FAILURE() << "CxxExceptionInConstructorTest::TearDown() "
+                  << "called unexpectedly.";
+  }
+};
+
+TEST_F(CxxExceptionInConstructorTest, ThrowsExceptionInConstructor) {
+  ADD_FAILURE() << "CxxExceptionInConstructorTest test body "
+                << "called unexpectedly.";
+}
+
+// Exceptions in destructors are not supported in C++11.
+#if !defined(__GXX_EXPERIMENTAL_CXX0X__) &&  __cplusplus < 201103L
+class CxxExceptionInDestructorTest : public Test {
+ public:
+  static void TearDownTestCase() {
+    printf("%s",
+           "CxxExceptionInDestructorTest::TearDownTestCase() "
+           "called as expected.\n");
+  }
+
+ protected:
+  ~CxxExceptionInDestructorTest() {
+    GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(
+        throw std::runtime_error("Standard C++ exception"));
+  }
+};
+
+TEST_F(CxxExceptionInDestructorTest, ThrowsExceptionInDestructor) {}
+#endif  // C++11 mode
+
+class CxxExceptionInSetUpTestCaseTest : public Test {
+ public:
+  CxxExceptionInSetUpTestCaseTest() {
+    printf("%s",
+           "CxxExceptionInSetUpTestCaseTest constructor "
+           "called as expected.\n");
+  }
+
+  static void SetUpTestCase() {
+    throw std::runtime_error("Standard C++ exception");
+  }
+
+  static void TearDownTestCase() {
+    printf("%s",
+           "CxxExceptionInSetUpTestCaseTest::TearDownTestCase() "
+           "called as expected.\n");
+  }
+
+ protected:
+  ~CxxExceptionInSetUpTestCaseTest() {
+    printf("%s",
+           "CxxExceptionInSetUpTestCaseTest destructor "
+           "called as expected.\n");
+  }
+
+  virtual void SetUp() {
+    printf("%s",
+           "CxxExceptionInSetUpTestCaseTest::SetUp() "
+           "called as expected.\n");
+  }
+
+  virtual void TearDown() {
+    printf("%s",
+           "CxxExceptionInSetUpTestCaseTest::TearDown() "
+           "called as expected.\n");
+  }
+};
+
+TEST_F(CxxExceptionInSetUpTestCaseTest, ThrowsExceptionInSetUpTestCase) {
+  printf("%s",
+         "CxxExceptionInSetUpTestCaseTest test body "
+         "called as expected.\n");
+}
+
+class CxxExceptionInTearDownTestCaseTest : public Test {
+ public:
+  static void TearDownTestCase() {
+    throw std::runtime_error("Standard C++ exception");
+  }
+};
+
+TEST_F(CxxExceptionInTearDownTestCaseTest, ThrowsExceptionInTearDownTestCase) {}
+
+class CxxExceptionInSetUpTest : public Test {
+ public:
+  static void TearDownTestCase() {
+    printf("%s",
+           "CxxExceptionInSetUpTest::TearDownTestCase() "
+           "called as expected.\n");
+  }
+
+ protected:
+  ~CxxExceptionInSetUpTest() {
+    printf("%s",
+           "CxxExceptionInSetUpTest destructor "
+           "called as expected.\n");
+  }
+
+  virtual void SetUp() { throw std::runtime_error("Standard C++ exception"); }
+
+  virtual void TearDown() {
+    printf("%s",
+           "CxxExceptionInSetUpTest::TearDown() "
+           "called as expected.\n");
+  }
+};
+
+TEST_F(CxxExceptionInSetUpTest, ThrowsExceptionInSetUp) {
+  ADD_FAILURE() << "CxxExceptionInSetUpTest test body "
+                << "called unexpectedly.";
+}
+
+class CxxExceptionInTearDownTest : public Test {
+ public:
+  static void TearDownTestCase() {
+    printf("%s",
+           "CxxExceptionInTearDownTest::TearDownTestCase() "
+           "called as expected.\n");
+  }
+
+ protected:
+  ~CxxExceptionInTearDownTest() {
+    printf("%s",
+           "CxxExceptionInTearDownTest destructor "
+           "called as expected.\n");
+  }
+
+  virtual void TearDown() {
+    throw std::runtime_error("Standard C++ exception");
+  }
+};
+
+TEST_F(CxxExceptionInTearDownTest, ThrowsExceptionInTearDown) {}
+
+class CxxExceptionInTestBodyTest : public Test {
+ public:
+  static void TearDownTestCase() {
+    printf("%s",
+           "CxxExceptionInTestBodyTest::TearDownTestCase() "
+           "called as expected.\n");
+  }
+
+ protected:
+  ~CxxExceptionInTestBodyTest() {
+    printf("%s",
+           "CxxExceptionInTestBodyTest destructor "
+           "called as expected.\n");
+  }
+
+  virtual void TearDown() {
+    printf("%s",
+           "CxxExceptionInTestBodyTest::TearDown() "
+           "called as expected.\n");
+  }
+};
+
+TEST_F(CxxExceptionInTestBodyTest, ThrowsStdCxxException) {
+  throw std::runtime_error("Standard C++ exception");
+}
+
+TEST(CxxExceptionTest, ThrowsNonStdCxxException) {
+  throw "C-string";
+}
+
+// This terminate handler aborts the program using exit() rather than abort().
+// This avoids showing pop-ups on Windows systems and core dumps on Unix-like
+// ones.
+void TerminateHandler() {
+  fprintf(stderr, "%s\n", "Unhandled C++ exception terminating the program.");
+  fflush(NULL);
+  exit(3);
+}
+
+#endif  // GTEST_HAS_EXCEPTIONS
+
+int main(int argc, char** argv) {
+#if GTEST_HAS_EXCEPTIONS
+  std::set_terminate(&TerminateHandler);
+#endif
+  testing::InitGoogleTest(&argc, argv);
+  return RUN_ALL_TESTS();
+}
diff --git a/google-breakpad/src/testing/gtest/test/gtest_color_test.py b/google-breakpad/src/testing/gtest/test/gtest_color_test.py
new file mode 100755
index 0000000..d02a53e
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest_color_test.py
@@ -0,0 +1,130 @@
+#!/usr/bin/env python
+#
+# Copyright 2008, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+"""Verifies that Google Test correctly determines whether to use colors."""
+
+__author__ = 'wan@google.com (Zhanyong Wan)'
+
+import os
+import gtest_test_utils
+
+
+IS_WINDOWS = os.name = 'nt'
+
+COLOR_ENV_VAR = 'GTEST_COLOR'
+COLOR_FLAG = 'gtest_color'
+COMMAND = gtest_test_utils.GetTestExecutablePath('gtest_color_test_')
+
+
+def SetEnvVar(env_var, value):
+  """Sets the env variable to 'value'; unsets it when 'value' is None."""
+
+  if value is not None:
+    os.environ[env_var] = value
+  elif env_var in os.environ:
+    del os.environ[env_var]
+
+
+def UsesColor(term, color_env_var, color_flag):
+  """Runs gtest_color_test_ and returns its exit code."""
+
+  SetEnvVar('TERM', term)
+  SetEnvVar(COLOR_ENV_VAR, color_env_var)
+
+  if color_flag is None:
+    args = []
+  else:
+    args = ['--%s=%s' % (COLOR_FLAG, color_flag)]
+  p = gtest_test_utils.Subprocess([COMMAND] + args)
+  return not p.exited or p.exit_code
+
+
+class GTestColorTest(gtest_test_utils.TestCase):
+  def testNoEnvVarNoFlag(self):
+    """Tests the case when there's neither GTEST_COLOR nor --gtest_color."""
+
+    if not IS_WINDOWS:
+      self.assert_(not UsesColor('dumb', None, None))
+      self.assert_(not UsesColor('emacs', None, None))
+      self.assert_(not UsesColor('xterm-mono', None, None))
+      self.assert_(not UsesColor('unknown', None, None))
+      self.assert_(not UsesColor(None, None, None))
+    self.assert_(UsesColor('linux', None, None))
+    self.assert_(UsesColor('cygwin', None, None))
+    self.assert_(UsesColor('xterm', None, None))
+    self.assert_(UsesColor('xterm-color', None, None))
+    self.assert_(UsesColor('xterm-256color', None, None))
+
+  def testFlagOnly(self):
+    """Tests the case when there's --gtest_color but not GTEST_COLOR."""
+
+    self.assert_(not UsesColor('dumb', None, 'no'))
+    self.assert_(not UsesColor('xterm-color', None, 'no'))
+    if not IS_WINDOWS:
+      self.assert_(not UsesColor('emacs', None, 'auto'))
+    self.assert_(UsesColor('xterm', None, 'auto'))
+    self.assert_(UsesColor('dumb', None, 'yes'))
+    self.assert_(UsesColor('xterm', None, 'yes'))
+
+  def testEnvVarOnly(self):
+    """Tests the case when there's GTEST_COLOR but not --gtest_color."""
+
+    self.assert_(not UsesColor('dumb', 'no', None))
+    self.assert_(not UsesColor('xterm-color', 'no', None))
+    if not IS_WINDOWS:
+      self.assert_(not UsesColor('dumb', 'auto', None))
+    self.assert_(UsesColor('xterm-color', 'auto', None))
+    self.assert_(UsesColor('dumb', 'yes', None))
+    self.assert_(UsesColor('xterm-color', 'yes', None))
+
+  def testEnvVarAndFlag(self):
+    """Tests the case when there are both GTEST_COLOR and --gtest_color."""
+
+    self.assert_(not UsesColor('xterm-color', 'no', 'no'))
+    self.assert_(UsesColor('dumb', 'no', 'yes'))
+    self.assert_(UsesColor('xterm-color', 'no', 'auto'))
+
+  def testAliasesOfYesAndNo(self):
+    """Tests using aliases in specifying --gtest_color."""
+
+    self.assert_(UsesColor('dumb', None, 'true'))
+    self.assert_(UsesColor('dumb', None, 'YES'))
+    self.assert_(UsesColor('dumb', None, 'T'))
+    self.assert_(UsesColor('dumb', None, '1'))
+
+    self.assert_(not UsesColor('xterm', None, 'f'))
+    self.assert_(not UsesColor('xterm', None, 'false'))
+    self.assert_(not UsesColor('xterm', None, '0'))
+    self.assert_(not UsesColor('xterm', None, 'unknown'))
+
+
+if __name__ == '__main__':
+  gtest_test_utils.Main()
diff --git a/google-breakpad/src/testing/gtest/test/gtest_color_test_.cc b/google-breakpad/src/testing/gtest/test/gtest_color_test_.cc
new file mode 100644
index 0000000..f61ebb8
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest_color_test_.cc
@@ -0,0 +1,71 @@
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// A helper program for testing how Google Test determines whether to use
+// colors in the output.  It prints "YES" and returns 1 if Google Test
+// decides to use colors, and prints "NO" and returns 0 otherwise.
+
+#include <stdio.h>
+
+#include "gtest/gtest.h"
+
+// Indicates that this translation unit is part of Google Test's
+// implementation.  It must come before gtest-internal-inl.h is
+// included, or there will be a compiler error.  This trick is to
+// prevent a user from accidentally including gtest-internal-inl.h in
+// his code.
+#define GTEST_IMPLEMENTATION_ 1
+#include "src/gtest-internal-inl.h"
+#undef GTEST_IMPLEMENTATION_
+
+using testing::internal::ShouldUseColor;
+
+// The purpose of this is to ensure that the UnitTest singleton is
+// created before main() is entered, and thus that ShouldUseColor()
+// works the same way as in a real Google-Test-based test.  We don't actual
+// run the TEST itself.
+TEST(GTestColorTest, Dummy) {
+}
+
+int main(int argc, char** argv) {
+  testing::InitGoogleTest(&argc, argv);
+
+  if (ShouldUseColor(true)) {
+    // Google Test decides to use colors in the output (assuming it
+    // goes to a TTY).
+    printf("YES\n");
+    return 1;
+  } else {
+    // Google Test decides not to use colors in the output.
+    printf("NO\n");
+    return 0;
+  }
+}
diff --git a/google-breakpad/src/testing/gtest/test/gtest_env_var_test.py b/google-breakpad/src/testing/gtest/test/gtest_env_var_test.py
new file mode 100755
index 0000000..4728bbc
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest_env_var_test.py
@@ -0,0 +1,104 @@
+#!/usr/bin/env python
+#
+# Copyright 2008, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+"""Verifies that Google Test correctly parses environment variables."""
+
+__author__ = 'wan@google.com (Zhanyong Wan)'
+
+import os
+import gtest_test_utils
+
+
+IS_WINDOWS = os.name == 'nt'
+IS_LINUX = os.name == 'posix' and os.uname()[0] == 'Linux'
+
+COMMAND = gtest_test_utils.GetTestExecutablePath('gtest_env_var_test_')
+
+environ = os.environ.copy()
+
+
+def AssertEq(expected, actual):
+  if expected != actual:
+    print 'Expected: %s' % (expected,)
+    print '  Actual: %s' % (actual,)
+    raise AssertionError
+
+
+def SetEnvVar(env_var, value):
+  """Sets the env variable to 'value'; unsets it when 'value' is None."""
+
+  if value is not None:
+    environ[env_var] = value
+  elif env_var in environ:
+    del environ[env_var]
+
+
+def GetFlag(flag):
+  """Runs gtest_env_var_test_ and returns its output."""
+
+  args = [COMMAND]
+  if flag is not None:
+    args += [flag]
+  return gtest_test_utils.Subprocess(args, env=environ,
+                                     capture_stderr=False).output
+
+
+def TestFlag(flag, test_val, default_val):
+  """Verifies that the given flag is affected by the corresponding env var."""
+
+  env_var = 'GTEST_' + flag.upper()
+  SetEnvVar(env_var, test_val)
+  AssertEq(test_val, GetFlag(flag))
+  SetEnvVar(env_var, None)
+  AssertEq(default_val, GetFlag(flag))
+
+
+class GTestEnvVarTest(gtest_test_utils.TestCase):
+  def testEnvVarAffectsFlag(self):
+    """Tests that environment variable should affect the corresponding flag."""
+
+    TestFlag('break_on_failure', '1', '0')
+    TestFlag('color', 'yes', 'auto')
+    TestFlag('filter', 'FooTest.Bar', '*')
+    TestFlag('output', 'xml:tmp/foo.xml', '')
+    TestFlag('print_time', '0', '1')
+    TestFlag('repeat', '999', '1')
+    TestFlag('throw_on_failure', '1', '0')
+    TestFlag('death_test_style', 'threadsafe', 'fast')
+    TestFlag('catch_exceptions', '0', '1')
+
+    if IS_LINUX:
+      TestFlag('death_test_use_fork', '1', '0')
+      TestFlag('stack_trace_depth', '0', '100')
+
+
+if __name__ == '__main__':
+  gtest_test_utils.Main()
diff --git a/google-breakpad/src/testing/gtest/test/gtest_env_var_test_.cc b/google-breakpad/src/testing/gtest/test/gtest_env_var_test_.cc
new file mode 100644
index 0000000..539afc9
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest_env_var_test_.cc
@@ -0,0 +1,126 @@
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// A helper program for testing that Google Test parses the environment
+// variables correctly.
+
+#include "gtest/gtest.h"
+
+#include <iostream>
+
+#define GTEST_IMPLEMENTATION_ 1
+#include "src/gtest-internal-inl.h"
+#undef GTEST_IMPLEMENTATION_
+
+using ::std::cout;
+
+namespace testing {
+
+// The purpose of this is to make the test more realistic by ensuring
+// that the UnitTest singleton is created before main() is entered.
+// We don't actual run the TEST itself.
+TEST(GTestEnvVarTest, Dummy) {
+}
+
+void PrintFlag(const char* flag) {
+  if (strcmp(flag, "break_on_failure") == 0) {
+    cout << GTEST_FLAG(break_on_failure);
+    return;
+  }
+
+  if (strcmp(flag, "catch_exceptions") == 0) {
+    cout << GTEST_FLAG(catch_exceptions);
+    return;
+  }
+
+  if (strcmp(flag, "color") == 0) {
+    cout << GTEST_FLAG(color);
+    return;
+  }
+
+  if (strcmp(flag, "death_test_style") == 0) {
+    cout << GTEST_FLAG(death_test_style);
+    return;
+  }
+
+  if (strcmp(flag, "death_test_use_fork") == 0) {
+    cout << GTEST_FLAG(death_test_use_fork);
+    return;
+  }
+
+  if (strcmp(flag, "filter") == 0) {
+    cout << GTEST_FLAG(filter);
+    return;
+  }
+
+  if (strcmp(flag, "output") == 0) {
+    cout << GTEST_FLAG(output);
+    return;
+  }
+
+  if (strcmp(flag, "print_time") == 0) {
+    cout << GTEST_FLAG(print_time);
+    return;
+  }
+
+  if (strcmp(flag, "repeat") == 0) {
+    cout << GTEST_FLAG(repeat);
+    return;
+  }
+
+  if (strcmp(flag, "stack_trace_depth") == 0) {
+    cout << GTEST_FLAG(stack_trace_depth);
+    return;
+  }
+
+  if (strcmp(flag, "throw_on_failure") == 0) {
+    cout << GTEST_FLAG(throw_on_failure);
+    return;
+  }
+
+  cout << "Invalid flag name " << flag
+       << ".  Valid names are break_on_failure, color, filter, etc.\n";
+  exit(1);
+}
+
+}  // namespace testing
+
+int main(int argc, char** argv) {
+  testing::InitGoogleTest(&argc, argv);
+
+  if (argc != 2) {
+    cout << "Usage: gtest_env_var_test_ NAME_OF_FLAG\n";
+    return 1;
+  }
+
+  testing::PrintFlag(argv[1]);
+  return 0;
+}
diff --git a/google-breakpad/src/testing/gtest/test/gtest_environment_test.cc b/google-breakpad/src/testing/gtest/test/gtest_environment_test.cc
new file mode 100644
index 0000000..3cff19e
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest_environment_test.cc
@@ -0,0 +1,192 @@
+// Copyright 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+//
+// Tests using global test environments.
+
+#include <stdlib.h>
+#include <stdio.h>
+#include "gtest/gtest.h"
+
+#define GTEST_IMPLEMENTATION_ 1  // Required for the next #include.
+#include "src/gtest-internal-inl.h"
+#undef GTEST_IMPLEMENTATION_
+
+namespace testing {
+GTEST_DECLARE_string_(filter);
+}
+
+namespace {
+
+enum FailureType {
+  NO_FAILURE, NON_FATAL_FAILURE, FATAL_FAILURE
+};
+
+// For testing using global test environments.
+class MyEnvironment : public testing::Environment {
+ public:
+  MyEnvironment() { Reset(); }
+
+  // Depending on the value of failure_in_set_up_, SetUp() will
+  // generate a non-fatal failure, generate a fatal failure, or
+  // succeed.
+  virtual void SetUp() {
+    set_up_was_run_ = true;
+
+    switch (failure_in_set_up_) {
+      case NON_FATAL_FAILURE:
+        ADD_FAILURE() << "Expected non-fatal failure in global set-up.";
+        break;
+      case FATAL_FAILURE:
+        FAIL() << "Expected fatal failure in global set-up.";
+        break;
+      default:
+        break;
+    }
+  }
+
+  // Generates a non-fatal failure.
+  virtual void TearDown() {
+    tear_down_was_run_ = true;
+    ADD_FAILURE() << "Expected non-fatal failure in global tear-down.";
+  }
+
+  // Resets the state of the environment s.t. it can be reused.
+  void Reset() {
+    failure_in_set_up_ = NO_FAILURE;
+    set_up_was_run_ = false;
+    tear_down_was_run_ = false;
+  }
+
+  // We call this function to set the type of failure SetUp() should
+  // generate.
+  void set_failure_in_set_up(FailureType type) {
+    failure_in_set_up_ = type;
+  }
+
+  // Was SetUp() run?
+  bool set_up_was_run() const { return set_up_was_run_; }
+
+  // Was TearDown() run?
+  bool tear_down_was_run() const { return tear_down_was_run_; }
+
+ private:
+  FailureType failure_in_set_up_;
+  bool set_up_was_run_;
+  bool tear_down_was_run_;
+};
+
+// Was the TEST run?
+bool test_was_run;
+
+// The sole purpose of this TEST is to enable us to check whether it
+// was run.
+TEST(FooTest, Bar) {
+  test_was_run = true;
+}
+
+// Prints the message and aborts the program if condition is false.
+void Check(bool condition, const char* msg) {
+  if (!condition) {
+    printf("FAILED: %s\n", msg);
+    testing::internal::posix::Abort();
+  }
+}
+
+// Runs the tests.  Return true iff successful.
+//
+// The 'failure' parameter specifies the type of failure that should
+// be generated by the global set-up.
+int RunAllTests(MyEnvironment* env, FailureType failure) {
+  env->Reset();
+  env->set_failure_in_set_up(failure);
+  test_was_run = false;
+  testing::internal::GetUnitTestImpl()->ClearAdHocTestResult();
+  return RUN_ALL_TESTS();
+}
+
+}  // namespace
+
+int main(int argc, char **argv) {
+  testing::InitGoogleTest(&argc, argv);
+
+  // Registers a global test environment, and verifies that the
+  // registration function returns its argument.
+  MyEnvironment* const env = new MyEnvironment;
+  Check(testing::AddGlobalTestEnvironment(env) == env,
+        "AddGlobalTestEnvironment() should return its argument.");
+
+  // Verifies that RUN_ALL_TESTS() runs the tests when the global
+  // set-up is successful.
+  Check(RunAllTests(env, NO_FAILURE) != 0,
+        "RUN_ALL_TESTS() should return non-zero, as the global tear-down "
+        "should generate a failure.");
+  Check(test_was_run,
+        "The tests should run, as the global set-up should generate no "
+        "failure");
+  Check(env->tear_down_was_run(),
+        "The global tear-down should run, as the global set-up was run.");
+
+  // Verifies that RUN_ALL_TESTS() runs the tests when the global
+  // set-up generates no fatal failure.
+  Check(RunAllTests(env, NON_FATAL_FAILURE) != 0,
+        "RUN_ALL_TESTS() should return non-zero, as both the global set-up "
+        "and the global tear-down should generate a non-fatal failure.");
+  Check(test_was_run,
+        "The tests should run, as the global set-up should generate no "
+        "fatal failure.");
+  Check(env->tear_down_was_run(),
+        "The global tear-down should run, as the global set-up was run.");
+
+  // Verifies that RUN_ALL_TESTS() runs no test when the global set-up
+  // generates a fatal failure.
+  Check(RunAllTests(env, FATAL_FAILURE) != 0,
+        "RUN_ALL_TESTS() should return non-zero, as the global set-up "
+        "should generate a fatal failure.");
+  Check(!test_was_run,
+        "The tests should not run, as the global set-up should generate "
+        "a fatal failure.");
+  Check(env->tear_down_was_run(),
+        "The global tear-down should run, as the global set-up was run.");
+
+  // Verifies that RUN_ALL_TESTS() doesn't do global set-up or
+  // tear-down when there is no test to run.
+  testing::GTEST_FLAG(filter) = "-*";
+  Check(RunAllTests(env, NO_FAILURE) == 0,
+        "RUN_ALL_TESTS() should return zero, as there is no test to run.");
+  Check(!env->set_up_was_run(),
+        "The global set-up should not run, as there is no test to run.");
+  Check(!env->tear_down_was_run(),
+        "The global tear-down should not run, "
+        "as the global set-up was not run.");
+
+  printf("PASS\n");
+  return 0;
+}
diff --git a/google-breakpad/src/testing/gtest/test/gtest_filter_unittest.py b/google-breakpad/src/testing/gtest/test/gtest_filter_unittest.py
new file mode 100755
index 0000000..0d1a770
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest_filter_unittest.py
@@ -0,0 +1,633 @@
+#!/usr/bin/env python
+#
+# Copyright 2005 Google Inc. All Rights Reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+"""Unit test for Google Test test filters.
+
+A user can specify which test(s) in a Google Test program to run via either
+the GTEST_FILTER environment variable or the --gtest_filter flag.
+This script tests such functionality by invoking
+gtest_filter_unittest_ (a program written with Google Test) with different
+environments and command line flags.
+
+Note that test sharding may also influence which tests are filtered. Therefore,
+we test that here also.
+"""
+
+__author__ = 'wan@google.com (Zhanyong Wan)'
+
+import os
+import re
+import sets
+import sys
+
+import gtest_test_utils
+
+# Constants.
+
+# Checks if this platform can pass empty environment variables to child
+# processes.  We set an env variable to an empty string and invoke a python
+# script in a subprocess to print whether the variable is STILL in
+# os.environ.  We then use 'eval' to parse the child's output so that an
+# exception is thrown if the input is anything other than 'True' nor 'False'.
+os.environ['EMPTY_VAR'] = ''
+child = gtest_test_utils.Subprocess(
+    [sys.executable, '-c', 'import os; print \'EMPTY_VAR\' in os.environ'])
+CAN_PASS_EMPTY_ENV = eval(child.output)
+
+
+# Check if this platform can unset environment variables in child processes.
+# We set an env variable to a non-empty string, unset it, and invoke
+# a python script in a subprocess to print whether the variable
+# is NO LONGER in os.environ.
+# We use 'eval' to parse the child's output so that an exception
+# is thrown if the input is neither 'True' nor 'False'.
+os.environ['UNSET_VAR'] = 'X'
+del os.environ['UNSET_VAR']
+child = gtest_test_utils.Subprocess(
+    [sys.executable, '-c', 'import os; print \'UNSET_VAR\' not in os.environ'])
+CAN_UNSET_ENV = eval(child.output)
+
+
+# Checks if we should test with an empty filter. This doesn't
+# make sense on platforms that cannot pass empty env variables (Win32)
+# and on platforms that cannot unset variables (since we cannot tell
+# the difference between "" and NULL -- Borland and Solaris < 5.10)
+CAN_TEST_EMPTY_FILTER = (CAN_PASS_EMPTY_ENV and CAN_UNSET_ENV)
+
+
+# The environment variable for specifying the test filters.
+FILTER_ENV_VAR = 'GTEST_FILTER'
+
+# The environment variables for test sharding.
+TOTAL_SHARDS_ENV_VAR = 'GTEST_TOTAL_SHARDS'
+SHARD_INDEX_ENV_VAR = 'GTEST_SHARD_INDEX'
+SHARD_STATUS_FILE_ENV_VAR = 'GTEST_SHARD_STATUS_FILE'
+
+# The command line flag for specifying the test filters.
+FILTER_FLAG = 'gtest_filter'
+
+# The command line flag for including disabled tests.
+ALSO_RUN_DISABED_TESTS_FLAG = 'gtest_also_run_disabled_tests'
+
+# Command to run the gtest_filter_unittest_ program.
+COMMAND = gtest_test_utils.GetTestExecutablePath('gtest_filter_unittest_')
+
+# Regex for determining whether parameterized tests are enabled in the binary.
+PARAM_TEST_REGEX = re.compile(r'/ParamTest')
+
+# Regex for parsing test case names from Google Test's output.
+TEST_CASE_REGEX = re.compile(r'^\[\-+\] \d+ tests? from (\w+(/\w+)?)')
+
+# Regex for parsing test names from Google Test's output.
+TEST_REGEX = re.compile(r'^\[\s*RUN\s*\].*\.(\w+(/\w+)?)')
+
+# The command line flag to tell Google Test to output the list of tests it
+# will run.
+LIST_TESTS_FLAG = '--gtest_list_tests'
+
+# Indicates whether Google Test supports death tests.
+SUPPORTS_DEATH_TESTS = 'HasDeathTest' in gtest_test_utils.Subprocess(
+    [COMMAND, LIST_TESTS_FLAG]).output
+
+# Full names of all tests in gtest_filter_unittests_.
+PARAM_TESTS = [
+    'SeqP/ParamTest.TestX/0',
+    'SeqP/ParamTest.TestX/1',
+    'SeqP/ParamTest.TestY/0',
+    'SeqP/ParamTest.TestY/1',
+    'SeqQ/ParamTest.TestX/0',
+    'SeqQ/ParamTest.TestX/1',
+    'SeqQ/ParamTest.TestY/0',
+    'SeqQ/ParamTest.TestY/1',
+    ]
+
+DISABLED_TESTS = [
+    'BarTest.DISABLED_TestFour',
+    'BarTest.DISABLED_TestFive',
+    'BazTest.DISABLED_TestC',
+    'DISABLED_FoobarTest.Test1',
+    'DISABLED_FoobarTest.DISABLED_Test2',
+    'DISABLED_FoobarbazTest.TestA',
+    ]
+
+if SUPPORTS_DEATH_TESTS:
+  DEATH_TESTS = [
+    'HasDeathTest.Test1',
+    'HasDeathTest.Test2',
+    ]
+else:
+  DEATH_TESTS = []
+
+# All the non-disabled tests.
+ACTIVE_TESTS = [
+    'FooTest.Abc',
+    'FooTest.Xyz',
+
+    'BarTest.TestOne',
+    'BarTest.TestTwo',
+    'BarTest.TestThree',
+
+    'BazTest.TestOne',
+    'BazTest.TestA',
+    'BazTest.TestB',
+    ] + DEATH_TESTS + PARAM_TESTS
+
+param_tests_present = None
+
+# Utilities.
+
+environ = os.environ.copy()
+
+
+def SetEnvVar(env_var, value):
+  """Sets the env variable to 'value'; unsets it when 'value' is None."""
+
+  if value is not None:
+    environ[env_var] = value
+  elif env_var in environ:
+    del environ[env_var]
+
+
+def RunAndReturnOutput(args = None):
+  """Runs the test program and returns its output."""
+
+  return gtest_test_utils.Subprocess([COMMAND] + (args or []),
+                                     env=environ).output
+
+
+def RunAndExtractTestList(args = None):
+  """Runs the test program and returns its exit code and a list of tests run."""
+
+  p = gtest_test_utils.Subprocess([COMMAND] + (args or []), env=environ)
+  tests_run = []
+  test_case = ''
+  test = ''
+  for line in p.output.split('\n'):
+    match = TEST_CASE_REGEX.match(line)
+    if match is not None:
+      test_case = match.group(1)
+    else:
+      match = TEST_REGEX.match(line)
+      if match is not None:
+        test = match.group(1)
+        tests_run.append(test_case + '.' + test)
+  return (tests_run, p.exit_code)
+
+
+def InvokeWithModifiedEnv(extra_env, function, *args, **kwargs):
+  """Runs the given function and arguments in a modified environment."""
+  try:
+    original_env = environ.copy()
+    environ.update(extra_env)
+    return function(*args, **kwargs)
+  finally:
+    environ.clear()
+    environ.update(original_env)
+
+
+def RunWithSharding(total_shards, shard_index, command):
+  """Runs a test program shard and returns exit code and a list of tests run."""
+
+  extra_env = {SHARD_INDEX_ENV_VAR: str(shard_index),
+               TOTAL_SHARDS_ENV_VAR: str(total_shards)}
+  return InvokeWithModifiedEnv(extra_env, RunAndExtractTestList, command)
+
+# The unit test.
+
+
+class GTestFilterUnitTest(gtest_test_utils.TestCase):
+  """Tests the env variable or the command line flag to filter tests."""
+
+  # Utilities.
+
+  def AssertSetEqual(self, lhs, rhs):
+    """Asserts that two sets are equal."""
+
+    for elem in lhs:
+      self.assert_(elem in rhs, '%s in %s' % (elem, rhs))
+
+    for elem in rhs:
+      self.assert_(elem in lhs, '%s in %s' % (elem, lhs))
+
+  def AssertPartitionIsValid(self, set_var, list_of_sets):
+    """Asserts that list_of_sets is a valid partition of set_var."""
+
+    full_partition = []
+    for slice_var in list_of_sets:
+      full_partition.extend(slice_var)
+    self.assertEqual(len(set_var), len(full_partition))
+    self.assertEqual(sets.Set(set_var), sets.Set(full_partition))
+
+  def AdjustForParameterizedTests(self, tests_to_run):
+    """Adjust tests_to_run in case value parameterized tests are disabled."""
+
+    global param_tests_present
+    if not param_tests_present:
+      return list(sets.Set(tests_to_run) - sets.Set(PARAM_TESTS))
+    else:
+      return tests_to_run
+
+  def RunAndVerify(self, gtest_filter, tests_to_run):
+    """Checks that the binary runs correct set of tests for a given filter."""
+
+    tests_to_run = self.AdjustForParameterizedTests(tests_to_run)
+
+    # First, tests using the environment variable.
+
+    # Windows removes empty variables from the environment when passing it
+    # to a new process.  This means it is impossible to pass an empty filter
+    # into a process using the environment variable.  However, we can still
+    # test the case when the variable is not supplied (i.e., gtest_filter is
+    # None).
+    # pylint: disable-msg=C6403
+    if CAN_TEST_EMPTY_FILTER or gtest_filter != '':
+      SetEnvVar(FILTER_ENV_VAR, gtest_filter)
+      tests_run = RunAndExtractTestList()[0]
+      SetEnvVar(FILTER_ENV_VAR, None)
+      self.AssertSetEqual(tests_run, tests_to_run)
+    # pylint: enable-msg=C6403
+
+    # Next, tests using the command line flag.
+
+    if gtest_filter is None:
+      args = []
+    else:
+      args = ['--%s=%s' % (FILTER_FLAG, gtest_filter)]
+
+    tests_run = RunAndExtractTestList(args)[0]
+    self.AssertSetEqual(tests_run, tests_to_run)
+
+  def RunAndVerifyWithSharding(self, gtest_filter, total_shards, tests_to_run,
+                               args=None, check_exit_0=False):
+    """Checks that binary runs correct tests for the given filter and shard.
+
+    Runs all shards of gtest_filter_unittest_ with the given filter, and
+    verifies that the right set of tests were run. The union of tests run
+    on each shard should be identical to tests_to_run, without duplicates.
+
+    Args:
+      gtest_filter: A filter to apply to the tests.
+      total_shards: A total number of shards to split test run into.
+      tests_to_run: A set of tests expected to run.
+      args   :      Arguments to pass to the to the test binary.
+      check_exit_0: When set to a true value, make sure that all shards
+                    return 0.
+    """
+
+    tests_to_run = self.AdjustForParameterizedTests(tests_to_run)
+
+    # Windows removes empty variables from the environment when passing it
+    # to a new process.  This means it is impossible to pass an empty filter
+    # into a process using the environment variable.  However, we can still
+    # test the case when the variable is not supplied (i.e., gtest_filter is
+    # None).
+    # pylint: disable-msg=C6403
+    if CAN_TEST_EMPTY_FILTER or gtest_filter != '':
+      SetEnvVar(FILTER_ENV_VAR, gtest_filter)
+      partition = []
+      for i in range(0, total_shards):
+        (tests_run, exit_code) = RunWithSharding(total_shards, i, args)
+        if check_exit_0:
+          self.assertEqual(0, exit_code)
+        partition.append(tests_run)
+
+      self.AssertPartitionIsValid(tests_to_run, partition)
+      SetEnvVar(FILTER_ENV_VAR, None)
+    # pylint: enable-msg=C6403
+
+  def RunAndVerifyAllowingDisabled(self, gtest_filter, tests_to_run):
+    """Checks that the binary runs correct set of tests for the given filter.
+
+    Runs gtest_filter_unittest_ with the given filter, and enables
+    disabled tests. Verifies that the right set of tests were run.
+
+    Args:
+      gtest_filter: A filter to apply to the tests.
+      tests_to_run: A set of tests expected to run.
+    """
+
+    tests_to_run = self.AdjustForParameterizedTests(tests_to_run)
+
+    # Construct the command line.
+    args = ['--%s' % ALSO_RUN_DISABED_TESTS_FLAG]
+    if gtest_filter is not None:
+      args.append('--%s=%s' % (FILTER_FLAG, gtest_filter))
+
+    tests_run = RunAndExtractTestList(args)[0]
+    self.AssertSetEqual(tests_run, tests_to_run)
+
+  def setUp(self):
+    """Sets up test case.
+
+    Determines whether value-parameterized tests are enabled in the binary and
+    sets the flags accordingly.
+    """
+
+    global param_tests_present
+    if param_tests_present is None:
+      param_tests_present = PARAM_TEST_REGEX.search(
+          RunAndReturnOutput()) is not None
+
+  def testDefaultBehavior(self):
+    """Tests the behavior of not specifying the filter."""
+
+    self.RunAndVerify(None, ACTIVE_TESTS)
+
+  def testDefaultBehaviorWithShards(self):
+    """Tests the behavior without the filter, with sharding enabled."""
+
+    self.RunAndVerifyWithSharding(None, 1, ACTIVE_TESTS)
+    self.RunAndVerifyWithSharding(None, 2, ACTIVE_TESTS)
+    self.RunAndVerifyWithSharding(None, len(ACTIVE_TESTS) - 1, ACTIVE_TESTS)
+    self.RunAndVerifyWithSharding(None, len(ACTIVE_TESTS), ACTIVE_TESTS)
+    self.RunAndVerifyWithSharding(None, len(ACTIVE_TESTS) + 1, ACTIVE_TESTS)
+
+  def testEmptyFilter(self):
+    """Tests an empty filter."""
+
+    self.RunAndVerify('', [])
+    self.RunAndVerifyWithSharding('', 1, [])
+    self.RunAndVerifyWithSharding('', 2, [])
+
+  def testBadFilter(self):
+    """Tests a filter that matches nothing."""
+
+    self.RunAndVerify('BadFilter', [])
+    self.RunAndVerifyAllowingDisabled('BadFilter', [])
+
+  def testFullName(self):
+    """Tests filtering by full name."""
+
+    self.RunAndVerify('FooTest.Xyz', ['FooTest.Xyz'])
+    self.RunAndVerifyAllowingDisabled('FooTest.Xyz', ['FooTest.Xyz'])
+    self.RunAndVerifyWithSharding('FooTest.Xyz', 5, ['FooTest.Xyz'])
+
+  def testUniversalFilters(self):
+    """Tests filters that match everything."""
+
+    self.RunAndVerify('*', ACTIVE_TESTS)
+    self.RunAndVerify('*.*', ACTIVE_TESTS)
+    self.RunAndVerifyWithSharding('*.*', len(ACTIVE_TESTS) - 3, ACTIVE_TESTS)
+    self.RunAndVerifyAllowingDisabled('*', ACTIVE_TESTS + DISABLED_TESTS)
+    self.RunAndVerifyAllowingDisabled('*.*', ACTIVE_TESTS + DISABLED_TESTS)
+
+  def testFilterByTestCase(self):
+    """Tests filtering by test case name."""
+
+    self.RunAndVerify('FooTest.*', ['FooTest.Abc', 'FooTest.Xyz'])
+
+    BAZ_TESTS = ['BazTest.TestOne', 'BazTest.TestA', 'BazTest.TestB']
+    self.RunAndVerify('BazTest.*', BAZ_TESTS)
+    self.RunAndVerifyAllowingDisabled('BazTest.*',
+                                      BAZ_TESTS + ['BazTest.DISABLED_TestC'])
+
+  def testFilterByTest(self):
+    """Tests filtering by test name."""
+
+    self.RunAndVerify('*.TestOne', ['BarTest.TestOne', 'BazTest.TestOne'])
+
+  def testFilterDisabledTests(self):
+    """Select only the disabled tests to run."""
+
+    self.RunAndVerify('DISABLED_FoobarTest.Test1', [])
+    self.RunAndVerifyAllowingDisabled('DISABLED_FoobarTest.Test1',
+                                      ['DISABLED_FoobarTest.Test1'])
+
+    self.RunAndVerify('*DISABLED_*', [])
+    self.RunAndVerifyAllowingDisabled('*DISABLED_*', DISABLED_TESTS)
+
+    self.RunAndVerify('*.DISABLED_*', [])
+    self.RunAndVerifyAllowingDisabled('*.DISABLED_*', [
+        'BarTest.DISABLED_TestFour',
+        'BarTest.DISABLED_TestFive',
+        'BazTest.DISABLED_TestC',
+        'DISABLED_FoobarTest.DISABLED_Test2',
+        ])
+
+    self.RunAndVerify('DISABLED_*', [])
+    self.RunAndVerifyAllowingDisabled('DISABLED_*', [
+        'DISABLED_FoobarTest.Test1',
+        'DISABLED_FoobarTest.DISABLED_Test2',
+        'DISABLED_FoobarbazTest.TestA',
+        ])
+
+  def testWildcardInTestCaseName(self):
+    """Tests using wildcard in the test case name."""
+
+    self.RunAndVerify('*a*.*', [
+        'BarTest.TestOne',
+        'BarTest.TestTwo',
+        'BarTest.TestThree',
+
+        'BazTest.TestOne',
+        'BazTest.TestA',
+        'BazTest.TestB', ] + DEATH_TESTS + PARAM_TESTS)
+
+  def testWildcardInTestName(self):
+    """Tests using wildcard in the test name."""
+
+    self.RunAndVerify('*.*A*', ['FooTest.Abc', 'BazTest.TestA'])
+
+  def testFilterWithoutDot(self):
+    """Tests a filter that has no '.' in it."""
+
+    self.RunAndVerify('*z*', [
+        'FooTest.Xyz',
+
+        'BazTest.TestOne',
+        'BazTest.TestA',
+        'BazTest.TestB',
+        ])
+
+  def testTwoPatterns(self):
+    """Tests filters that consist of two patterns."""
+
+    self.RunAndVerify('Foo*.*:*A*', [
+        'FooTest.Abc',
+        'FooTest.Xyz',
+
+        'BazTest.TestA',
+        ])
+
+    # An empty pattern + a non-empty one
+    self.RunAndVerify(':*A*', ['FooTest.Abc', 'BazTest.TestA'])
+
+  def testThreePatterns(self):
+    """Tests filters that consist of three patterns."""
+
+    self.RunAndVerify('*oo*:*A*:*One', [
+        'FooTest.Abc',
+        'FooTest.Xyz',
+
+        'BarTest.TestOne',
+
+        'BazTest.TestOne',
+        'BazTest.TestA',
+        ])
+
+    # The 2nd pattern is empty.
+    self.RunAndVerify('*oo*::*One', [
+        'FooTest.Abc',
+        'FooTest.Xyz',
+
+        'BarTest.TestOne',
+
+        'BazTest.TestOne',
+        ])
+
+    # The last 2 patterns are empty.
+    self.RunAndVerify('*oo*::', [
+        'FooTest.Abc',
+        'FooTest.Xyz',
+        ])
+
+  def testNegativeFilters(self):
+    self.RunAndVerify('*-BazTest.TestOne', [
+        'FooTest.Abc',
+        'FooTest.Xyz',
+
+        'BarTest.TestOne',
+        'BarTest.TestTwo',
+        'BarTest.TestThree',
+
+        'BazTest.TestA',
+        'BazTest.TestB',
+        ] + DEATH_TESTS + PARAM_TESTS)
+
+    self.RunAndVerify('*-FooTest.Abc:BazTest.*', [
+        'FooTest.Xyz',
+
+        'BarTest.TestOne',
+        'BarTest.TestTwo',
+        'BarTest.TestThree',
+        ] + DEATH_TESTS + PARAM_TESTS)
+
+    self.RunAndVerify('BarTest.*-BarTest.TestOne', [
+        'BarTest.TestTwo',
+        'BarTest.TestThree',
+        ])
+
+    # Tests without leading '*'.
+    self.RunAndVerify('-FooTest.Abc:FooTest.Xyz:BazTest.*', [
+        'BarTest.TestOne',
+        'BarTest.TestTwo',
+        'BarTest.TestThree',
+        ] + DEATH_TESTS + PARAM_TESTS)
+
+    # Value parameterized tests.
+    self.RunAndVerify('*/*', PARAM_TESTS)
+
+    # Value parameterized tests filtering by the sequence name.
+    self.RunAndVerify('SeqP/*', [
+        'SeqP/ParamTest.TestX/0',
+        'SeqP/ParamTest.TestX/1',
+        'SeqP/ParamTest.TestY/0',
+        'SeqP/ParamTest.TestY/1',
+        ])
+
+    # Value parameterized tests filtering by the test name.
+    self.RunAndVerify('*/0', [
+        'SeqP/ParamTest.TestX/0',
+        'SeqP/ParamTest.TestY/0',
+        'SeqQ/ParamTest.TestX/0',
+        'SeqQ/ParamTest.TestY/0',
+        ])
+
+  def testFlagOverridesEnvVar(self):
+    """Tests that the filter flag overrides the filtering env. variable."""
+
+    SetEnvVar(FILTER_ENV_VAR, 'Foo*')
+    args = ['--%s=%s' % (FILTER_FLAG, '*One')]
+    tests_run = RunAndExtractTestList(args)[0]
+    SetEnvVar(FILTER_ENV_VAR, None)
+
+    self.AssertSetEqual(tests_run, ['BarTest.TestOne', 'BazTest.TestOne'])
+
+  def testShardStatusFileIsCreated(self):
+    """Tests that the shard file is created if specified in the environment."""
+
+    shard_status_file = os.path.join(gtest_test_utils.GetTempDir(),
+                                     'shard_status_file')
+    self.assert_(not os.path.exists(shard_status_file))
+
+    extra_env = {SHARD_STATUS_FILE_ENV_VAR: shard_status_file}
+    try:
+      InvokeWithModifiedEnv(extra_env, RunAndReturnOutput)
+    finally:
+      self.assert_(os.path.exists(shard_status_file))
+      os.remove(shard_status_file)
+
+  def testShardStatusFileIsCreatedWithListTests(self):
+    """Tests that the shard file is created with the "list_tests" flag."""
+
+    shard_status_file = os.path.join(gtest_test_utils.GetTempDir(),
+                                     'shard_status_file2')
+    self.assert_(not os.path.exists(shard_status_file))
+
+    extra_env = {SHARD_STATUS_FILE_ENV_VAR: shard_status_file}
+    try:
+      output = InvokeWithModifiedEnv(extra_env,
+                                     RunAndReturnOutput,
+                                     [LIST_TESTS_FLAG])
+    finally:
+      # This assertion ensures that Google Test enumerated the tests as
+      # opposed to running them.
+      self.assert_('[==========]' not in output,
+                   'Unexpected output during test enumeration.\n'
+                   'Please ensure that LIST_TESTS_FLAG is assigned the\n'
+                   'correct flag value for listing Google Test tests.')
+
+      self.assert_(os.path.exists(shard_status_file))
+      os.remove(shard_status_file)
+
+  if SUPPORTS_DEATH_TESTS:
+    def testShardingWorksWithDeathTests(self):
+      """Tests integration with death tests and sharding."""
+
+      gtest_filter = 'HasDeathTest.*:SeqP/*'
+      expected_tests = [
+          'HasDeathTest.Test1',
+          'HasDeathTest.Test2',
+
+          'SeqP/ParamTest.TestX/0',
+          'SeqP/ParamTest.TestX/1',
+          'SeqP/ParamTest.TestY/0',
+          'SeqP/ParamTest.TestY/1',
+          ]
+
+      for flag in ['--gtest_death_test_style=threadsafe',
+                   '--gtest_death_test_style=fast']:
+        self.RunAndVerifyWithSharding(gtest_filter, 3, expected_tests,
+                                      check_exit_0=True, args=[flag])
+        self.RunAndVerifyWithSharding(gtest_filter, 5, expected_tests,
+                                      check_exit_0=True, args=[flag])
+
+if __name__ == '__main__':
+  gtest_test_utils.Main()
diff --git a/google-breakpad/src/testing/gtest/test/gtest_filter_unittest_.cc b/google-breakpad/src/testing/gtest/test/gtest_filter_unittest_.cc
new file mode 100644
index 0000000..77deffc
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest_filter_unittest_.cc
@@ -0,0 +1,140 @@
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Unit test for Google Test test filters.
+//
+// A user can specify which test(s) in a Google Test program to run via
+// either the GTEST_FILTER environment variable or the --gtest_filter
+// flag.  This is used for testing such functionality.
+//
+// The program will be invoked from a Python unit test.  Don't run it
+// directly.
+
+#include "gtest/gtest.h"
+
+namespace {
+
+// Test case FooTest.
+
+class FooTest : public testing::Test {
+};
+
+TEST_F(FooTest, Abc) {
+}
+
+TEST_F(FooTest, Xyz) {
+  FAIL() << "Expected failure.";
+}
+
+// Test case BarTest.
+
+TEST(BarTest, TestOne) {
+}
+
+TEST(BarTest, TestTwo) {
+}
+
+TEST(BarTest, TestThree) {
+}
+
+TEST(BarTest, DISABLED_TestFour) {
+  FAIL() << "Expected failure.";
+}
+
+TEST(BarTest, DISABLED_TestFive) {
+  FAIL() << "Expected failure.";
+}
+
+// Test case BazTest.
+
+TEST(BazTest, TestOne) {
+  FAIL() << "Expected failure.";
+}
+
+TEST(BazTest, TestA) {
+}
+
+TEST(BazTest, TestB) {
+}
+
+TEST(BazTest, DISABLED_TestC) {
+  FAIL() << "Expected failure.";
+}
+
+// Test case HasDeathTest
+
+TEST(HasDeathTest, Test1) {
+  EXPECT_DEATH_IF_SUPPORTED(exit(1), ".*");
+}
+
+// We need at least two death tests to make sure that the all death tests
+// aren't on the first shard.
+TEST(HasDeathTest, Test2) {
+  EXPECT_DEATH_IF_SUPPORTED(exit(1), ".*");
+}
+
+// Test case FoobarTest
+
+TEST(DISABLED_FoobarTest, Test1) {
+  FAIL() << "Expected failure.";
+}
+
+TEST(DISABLED_FoobarTest, DISABLED_Test2) {
+  FAIL() << "Expected failure.";
+}
+
+// Test case FoobarbazTest
+
+TEST(DISABLED_FoobarbazTest, TestA) {
+  FAIL() << "Expected failure.";
+}
+
+#if GTEST_HAS_PARAM_TEST
+class ParamTest : public testing::TestWithParam<int> {
+};
+
+TEST_P(ParamTest, TestX) {
+}
+
+TEST_P(ParamTest, TestY) {
+}
+
+INSTANTIATE_TEST_CASE_P(SeqP, ParamTest, testing::Values(1, 2));
+INSTANTIATE_TEST_CASE_P(SeqQ, ParamTest, testing::Values(5, 6));
+#endif  // GTEST_HAS_PARAM_TEST
+
+}  // namespace
+
+int main(int argc, char **argv) {
+  ::testing::InitGoogleTest(&argc, argv);
+
+  return RUN_ALL_TESTS();
+}
diff --git a/google-breakpad/src/testing/gtest/test/gtest_help_test.py b/google-breakpad/src/testing/gtest/test/gtest_help_test.py
new file mode 100755
index 0000000..093c838
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest_help_test.py
@@ -0,0 +1,172 @@
+#!/usr/bin/env python
+#
+# Copyright 2009, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+"""Tests the --help flag of Google C++ Testing Framework.
+
+SYNOPSIS
+       gtest_help_test.py --build_dir=BUILD/DIR
+         # where BUILD/DIR contains the built gtest_help_test_ file.
+       gtest_help_test.py
+"""
+
+__author__ = 'wan@google.com (Zhanyong Wan)'
+
+import os
+import re
+import gtest_test_utils
+
+
+IS_LINUX = os.name == 'posix' and os.uname()[0] == 'Linux'
+IS_WINDOWS = os.name == 'nt'
+
+PROGRAM_PATH = gtest_test_utils.GetTestExecutablePath('gtest_help_test_')
+FLAG_PREFIX = '--gtest_'
+DEATH_TEST_STYLE_FLAG = FLAG_PREFIX + 'death_test_style'
+STREAM_RESULT_TO_FLAG = FLAG_PREFIX + 'stream_result_to'
+UNKNOWN_FLAG = FLAG_PREFIX + 'unknown_flag_for_testing'
+LIST_TESTS_FLAG = FLAG_PREFIX + 'list_tests'
+INCORRECT_FLAG_VARIANTS = [re.sub('^--', '-', LIST_TESTS_FLAG),
+                           re.sub('^--', '/', LIST_TESTS_FLAG),
+                           re.sub('_', '-', LIST_TESTS_FLAG)]
+INTERNAL_FLAG_FOR_TESTING = FLAG_PREFIX + 'internal_flag_for_testing'
+
+SUPPORTS_DEATH_TESTS = "DeathTest" in gtest_test_utils.Subprocess(
+    [PROGRAM_PATH, LIST_TESTS_FLAG]).output
+
+# The help message must match this regex.
+HELP_REGEX = re.compile(
+    FLAG_PREFIX + r'list_tests.*' +
+    FLAG_PREFIX + r'filter=.*' +
+    FLAG_PREFIX + r'also_run_disabled_tests.*' +
+    FLAG_PREFIX + r'repeat=.*' +
+    FLAG_PREFIX + r'shuffle.*' +
+    FLAG_PREFIX + r'random_seed=.*' +
+    FLAG_PREFIX + r'color=.*' +
+    FLAG_PREFIX + r'print_time.*' +
+    FLAG_PREFIX + r'output=.*' +
+    FLAG_PREFIX + r'break_on_failure.*' +
+    FLAG_PREFIX + r'throw_on_failure.*' +
+    FLAG_PREFIX + r'catch_exceptions=0.*',
+    re.DOTALL)
+
+
+def RunWithFlag(flag):
+  """Runs gtest_help_test_ with the given flag.
+
+  Returns:
+    the exit code and the text output as a tuple.
+  Args:
+    flag: the command-line flag to pass to gtest_help_test_, or None.
+  """
+
+  if flag is None:
+    command = [PROGRAM_PATH]
+  else:
+    command = [PROGRAM_PATH, flag]
+  child = gtest_test_utils.Subprocess(command)
+  return child.exit_code, child.output
+
+
+class GTestHelpTest(gtest_test_utils.TestCase):
+  """Tests the --help flag and its equivalent forms."""
+
+  def TestHelpFlag(self, flag):
+    """Verifies correct behavior when help flag is specified.
+
+    The right message must be printed and the tests must
+    skipped when the given flag is specified.
+
+    Args:
+      flag:  A flag to pass to the binary or None.
+    """
+
+    exit_code, output = RunWithFlag(flag)
+    self.assertEquals(0, exit_code)
+    self.assert_(HELP_REGEX.search(output), output)
+
+    if IS_LINUX:
+      self.assert_(STREAM_RESULT_TO_FLAG in output, output)
+    else:
+      self.assert_(STREAM_RESULT_TO_FLAG not in output, output)
+
+    if SUPPORTS_DEATH_TESTS and not IS_WINDOWS:
+      self.assert_(DEATH_TEST_STYLE_FLAG in output, output)
+    else:
+      self.assert_(DEATH_TEST_STYLE_FLAG not in output, output)
+
+  def TestNonHelpFlag(self, flag):
+    """Verifies correct behavior when no help flag is specified.
+
+    Verifies that when no help flag is specified, the tests are run
+    and the help message is not printed.
+
+    Args:
+      flag:  A flag to pass to the binary or None.
+    """
+
+    exit_code, output = RunWithFlag(flag)
+    self.assert_(exit_code != 0)
+    self.assert_(not HELP_REGEX.search(output), output)
+
+  def testPrintsHelpWithFullFlag(self):
+    self.TestHelpFlag('--help')
+
+  def testPrintsHelpWithShortFlag(self):
+    self.TestHelpFlag('-h')
+
+  def testPrintsHelpWithQuestionFlag(self):
+    self.TestHelpFlag('-?')
+
+  def testPrintsHelpWithWindowsStyleQuestionFlag(self):
+    self.TestHelpFlag('/?')
+
+  def testPrintsHelpWithUnrecognizedGoogleTestFlag(self):
+    self.TestHelpFlag(UNKNOWN_FLAG)
+
+  def testPrintsHelpWithIncorrectFlagStyle(self):
+    for incorrect_flag in INCORRECT_FLAG_VARIANTS:
+      self.TestHelpFlag(incorrect_flag)
+
+  def testRunsTestsWithoutHelpFlag(self):
+    """Verifies that when no help flag is specified, the tests are run
+    and the help message is not printed."""
+
+    self.TestNonHelpFlag(None)
+
+  def testRunsTestsWithGtestInternalFlag(self):
+    """Verifies that the tests are run and no help message is printed when
+    a flag starting with Google Test prefix and 'internal_' is supplied."""
+
+    self.TestNonHelpFlag(INTERNAL_FLAG_FOR_TESTING)
+
+
+if __name__ == '__main__':
+  gtest_test_utils.Main()
diff --git a/google-breakpad/src/testing/gtest/test/gtest_help_test_.cc b/google-breakpad/src/testing/gtest/test/gtest_help_test_.cc
new file mode 100644
index 0000000..31f78c2
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest_help_test_.cc
@@ -0,0 +1,46 @@
+// Copyright 2009, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// This program is meant to be run by gtest_help_test.py.  Do not run
+// it directly.
+
+#include "gtest/gtest.h"
+
+// When a help flag is specified, this program should skip the tests
+// and exit with 0; otherwise the following test will be executed,
+// causing this program to exit with a non-zero code.
+TEST(HelpFlagTest, ShouldNotBeRun) {
+  ASSERT_TRUE(false) << "Tests shouldn't be run when --help is specified.";
+}
+
+#if GTEST_HAS_DEATH_TEST
+TEST(DeathTest, UsedByPythonScriptToDetectSupportForDeathTestsInThisBinary) {}
+#endif
diff --git a/google-breakpad/src/testing/gtest/test/gtest_list_tests_unittest.py b/google-breakpad/src/testing/gtest/test/gtest_list_tests_unittest.py
new file mode 100755
index 0000000..ce8c3ef
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest_list_tests_unittest.py
@@ -0,0 +1,177 @@
+#!/usr/bin/env python
+#
+# Copyright 2006, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+"""Unit test for Google Test's --gtest_list_tests flag.
+
+A user can ask Google Test to list all tests by specifying the
+--gtest_list_tests flag.  This script tests such functionality
+by invoking gtest_list_tests_unittest_ (a program written with
+Google Test) the command line flags.
+"""
+
+__author__ = 'phanna@google.com (Patrick Hanna)'
+
+import gtest_test_utils
+
+
+# Constants.
+
+# The command line flag for enabling/disabling listing all tests.
+LIST_TESTS_FLAG = 'gtest_list_tests'
+
+# Path to the gtest_list_tests_unittest_ program.
+EXE_PATH = gtest_test_utils.GetTestExecutablePath('gtest_list_tests_unittest_')
+
+# The expected output when running gtest_list_tests_unittest_ with
+# --gtest_list_tests
+EXPECTED_OUTPUT_NO_FILTER = """FooDeathTest.
+  Test1
+Foo.
+  Bar1
+  Bar2
+  DISABLED_Bar3
+Abc.
+  Xyz
+  Def
+FooBar.
+  Baz
+FooTest.
+  Test1
+  DISABLED_Test2
+  Test3
+"""
+
+# The expected output when running gtest_list_tests_unittest_ with
+# --gtest_list_tests and --gtest_filter=Foo*.
+EXPECTED_OUTPUT_FILTER_FOO = """FooDeathTest.
+  Test1
+Foo.
+  Bar1
+  Bar2
+  DISABLED_Bar3
+FooBar.
+  Baz
+FooTest.
+  Test1
+  DISABLED_Test2
+  Test3
+"""
+
+# Utilities.
+
+
+def Run(args):
+  """Runs gtest_list_tests_unittest_ and returns the list of tests printed."""
+
+  return gtest_test_utils.Subprocess([EXE_PATH] + args,
+                                     capture_stderr=False).output
+
+
+# The unit test.
+
+class GTestListTestsUnitTest(gtest_test_utils.TestCase):
+  """Tests using the --gtest_list_tests flag to list all tests."""
+
+  def RunAndVerify(self, flag_value, expected_output, other_flag):
+    """Runs gtest_list_tests_unittest_ and verifies that it prints
+    the correct tests.
+
+    Args:
+      flag_value:       value of the --gtest_list_tests flag;
+                        None if the flag should not be present.
+
+      expected_output:  the expected output after running command;
+
+      other_flag:       a different flag to be passed to command
+                        along with gtest_list_tests;
+                        None if the flag should not be present.
+    """
+
+    if flag_value is None:
+      flag = ''
+      flag_expression = 'not set'
+    elif flag_value == '0':
+      flag = '--%s=0' % LIST_TESTS_FLAG
+      flag_expression = '0'
+    else:
+      flag = '--%s' % LIST_TESTS_FLAG
+      flag_expression = '1'
+
+    args = [flag]
+
+    if other_flag is not None:
+      args += [other_flag]
+
+    output = Run(args)
+
+    msg = ('when %s is %s, the output of "%s" is "%s".' %
+           (LIST_TESTS_FLAG, flag_expression, ' '.join(args), output))
+
+    if expected_output is not None:
+      self.assert_(output == expected_output, msg)
+    else:
+      self.assert_(output != EXPECTED_OUTPUT_NO_FILTER, msg)
+
+  def testDefaultBehavior(self):
+    """Tests the behavior of the default mode."""
+
+    self.RunAndVerify(flag_value=None,
+                      expected_output=None,
+                      other_flag=None)
+
+  def testFlag(self):
+    """Tests using the --gtest_list_tests flag."""
+
+    self.RunAndVerify(flag_value='0',
+                      expected_output=None,
+                      other_flag=None)
+    self.RunAndVerify(flag_value='1',
+                      expected_output=EXPECTED_OUTPUT_NO_FILTER,
+                      other_flag=None)
+
+  def testOverrideNonFilterFlags(self):
+    """Tests that --gtest_list_tests overrides the non-filter flags."""
+
+    self.RunAndVerify(flag_value='1',
+                      expected_output=EXPECTED_OUTPUT_NO_FILTER,
+                      other_flag='--gtest_break_on_failure')
+
+  def testWithFilterFlags(self):
+    """Tests that --gtest_list_tests takes into account the
+    --gtest_filter flag."""
+
+    self.RunAndVerify(flag_value='1',
+                      expected_output=EXPECTED_OUTPUT_FILTER_FOO,
+                      other_flag='--gtest_filter=Foo*')
+
+
+if __name__ == '__main__':
+  gtest_test_utils.Main()
diff --git a/google-breakpad/src/testing/gtest/test/gtest_list_tests_unittest_.cc b/google-breakpad/src/testing/gtest/test/gtest_list_tests_unittest_.cc
new file mode 100644
index 0000000..2b1d078
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest_list_tests_unittest_.cc
@@ -0,0 +1,85 @@
+// Copyright 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: phanna@google.com (Patrick Hanna)
+
+// Unit test for Google Test's --gtest_list_tests flag.
+//
+// A user can ask Google Test to list all tests that will run
+// so that when using a filter, a user will know what
+// tests to look for. The tests will not be run after listing.
+//
+// This program will be invoked from a Python unit test.
+// Don't run it directly.
+
+#include "gtest/gtest.h"
+
+namespace {
+
+// Several different test cases and tests that will be listed.
+TEST(Foo, Bar1) {
+}
+
+TEST(Foo, Bar2) {
+}
+
+TEST(Foo, DISABLED_Bar3) {
+}
+
+TEST(Abc, Xyz) {
+}
+
+TEST(Abc, Def) {
+}
+
+TEST(FooBar, Baz) {
+}
+
+class FooTest : public testing::Test {
+};
+
+TEST_F(FooTest, Test1) {
+}
+
+TEST_F(FooTest, DISABLED_Test2) {
+}
+
+TEST_F(FooTest, Test3) {
+}
+
+TEST(FooDeathTest, Test1) {
+}
+
+}  // namespace
+
+int main(int argc, char **argv) {
+  ::testing::InitGoogleTest(&argc, argv);
+
+  return RUN_ALL_TESTS();
+}
diff --git a/google-breakpad/src/testing/gtest/test/gtest_main_unittest.cc b/google-breakpad/src/testing/gtest/test/gtest_main_unittest.cc
new file mode 100644
index 0000000..ecd9bb8
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest_main_unittest.cc
@@ -0,0 +1,45 @@
+// Copyright 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+#include "gtest/gtest.h"
+
+// Tests that we don't have to define main() when we link to
+// gtest_main instead of gtest.
+
+namespace {
+
+TEST(GTestMainTest, ShouldSucceed) {
+}
+
+}  // namespace
+
+// We are using the main() function defined in src/gtest_main.cc, so
+// we don't define it here.
diff --git a/google-breakpad/src/testing/gtest/test/gtest_no_test_unittest.cc b/google-breakpad/src/testing/gtest/test/gtest_no_test_unittest.cc
new file mode 100644
index 0000000..292599a
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest_no_test_unittest.cc
@@ -0,0 +1,56 @@
+// Copyright 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Tests that a Google Test program that has no test defined can run
+// successfully.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+#include "gtest/gtest.h"
+
+int main(int argc, char **argv) {
+  testing::InitGoogleTest(&argc, argv);
+
+  // An ad-hoc assertion outside of all tests.
+  //
+  // This serves three purposes:
+  //
+  // 1. It verifies that an ad-hoc assertion can be executed even if
+  //    no test is defined.
+  // 2. It verifies that a failed ad-hoc assertion causes the test
+  //    program to fail.
+  // 3. We had a bug where the XML output won't be generated if an
+  //    assertion is executed before RUN_ALL_TESTS() is called, even
+  //    though --gtest_output=xml is specified.  This makes sure the
+  //    bug is fixed and doesn't regress.
+  EXPECT_EQ(1, 2);
+
+  // The above EXPECT_EQ() should cause RUN_ALL_TESTS() to return non-zero.
+  return RUN_ALL_TESTS() ? 0 : 1;
+}
diff --git a/google-breakpad/src/testing/gtest/test/gtest_output_test.py b/google-breakpad/src/testing/gtest/test/gtest_output_test.py
new file mode 100755
index 0000000..72b3ae0
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest_output_test.py
@@ -0,0 +1,335 @@
+#!/usr/bin/env python
+#
+# Copyright 2008, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+"""Tests the text output of Google C++ Testing Framework.
+
+SYNOPSIS
+       gtest_output_test.py --build_dir=BUILD/DIR --gengolden
+         # where BUILD/DIR contains the built gtest_output_test_ file.
+       gtest_output_test.py --gengolden
+       gtest_output_test.py
+"""
+
+__author__ = 'wan@google.com (Zhanyong Wan)'
+
+import os
+import re
+import sys
+import gtest_test_utils
+
+
+# The flag for generating the golden file
+GENGOLDEN_FLAG = '--gengolden'
+CATCH_EXCEPTIONS_ENV_VAR_NAME = 'GTEST_CATCH_EXCEPTIONS'
+
+IS_WINDOWS = os.name == 'nt'
+
+# TODO(vladl@google.com): remove the _lin suffix.
+GOLDEN_NAME = 'gtest_output_test_golden_lin.txt'
+
+PROGRAM_PATH = gtest_test_utils.GetTestExecutablePath('gtest_output_test_')
+
+# At least one command we exercise must not have the
+# --gtest_internal_skip_environment_and_ad_hoc_tests flag.
+COMMAND_LIST_TESTS = ({}, [PROGRAM_PATH, '--gtest_list_tests'])
+COMMAND_WITH_COLOR = ({}, [PROGRAM_PATH, '--gtest_color=yes'])
+COMMAND_WITH_TIME = ({}, [PROGRAM_PATH,
+                          '--gtest_print_time',
+                          '--gtest_internal_skip_environment_and_ad_hoc_tests',
+                          '--gtest_filter=FatalFailureTest.*:LoggingTest.*'])
+COMMAND_WITH_DISABLED = (
+    {}, [PROGRAM_PATH,
+         '--gtest_also_run_disabled_tests',
+         '--gtest_internal_skip_environment_and_ad_hoc_tests',
+         '--gtest_filter=*DISABLED_*'])
+COMMAND_WITH_SHARDING = (
+    {'GTEST_SHARD_INDEX': '1', 'GTEST_TOTAL_SHARDS': '2'},
+    [PROGRAM_PATH,
+     '--gtest_internal_skip_environment_and_ad_hoc_tests',
+     '--gtest_filter=PassingTest.*'])
+
+GOLDEN_PATH = os.path.join(gtest_test_utils.GetSourceDir(), GOLDEN_NAME)
+
+
+def ToUnixLineEnding(s):
+  """Changes all Windows/Mac line endings in s to UNIX line endings."""
+
+  return s.replace('\r\n', '\n').replace('\r', '\n')
+
+
+def RemoveLocations(test_output):
+  """Removes all file location info from a Google Test program's output.
+
+  Args:
+       test_output:  the output of a Google Test program.
+
+  Returns:
+       output with all file location info (in the form of
+       'DIRECTORY/FILE_NAME:LINE_NUMBER: 'or
+       'DIRECTORY\\FILE_NAME(LINE_NUMBER): ') replaced by
+       'FILE_NAME:#: '.
+  """
+
+  return re.sub(r'.*[/\\](.+)(\:\d+|\(\d+\))\: ', r'\1:#: ', test_output)
+
+
+def RemoveStackTraceDetails(output):
+  """Removes all stack traces from a Google Test program's output."""
+
+  # *? means "find the shortest string that matches".
+  return re.sub(r'Stack trace:(.|\n)*?\n\n',
+                'Stack trace: (omitted)\n\n', output)
+
+
+def RemoveStackTraces(output):
+  """Removes all traces of stack traces from a Google Test program's output."""
+
+  # *? means "find the shortest string that matches".
+  return re.sub(r'Stack trace:(.|\n)*?\n\n', '', output)
+
+
+def RemoveTime(output):
+  """Removes all time information from a Google Test program's output."""
+
+  return re.sub(r'\(\d+ ms', '(? ms', output)
+
+
+def RemoveTypeInfoDetails(test_output):
+  """Removes compiler-specific type info from Google Test program's output.
+
+  Args:
+       test_output:  the output of a Google Test program.
+
+  Returns:
+       output with type information normalized to canonical form.
+  """
+
+  # some compilers output the name of type 'unsigned int' as 'unsigned'
+  return re.sub(r'unsigned int', 'unsigned', test_output)
+
+
+def NormalizeToCurrentPlatform(test_output):
+  """Normalizes platform specific output details for easier comparison."""
+
+  if IS_WINDOWS:
+    # Removes the color information that is not present on Windows.
+    test_output = re.sub('\x1b\\[(0;3\d)?m', '', test_output)
+    # Changes failure message headers into the Windows format.
+    test_output = re.sub(r': Failure\n', r': error: ', test_output)
+    # Changes file(line_number) to file:line_number.
+    test_output = re.sub(r'((\w|\.)+)\((\d+)\):', r'\1:\3:', test_output)
+
+  return test_output
+
+
+def RemoveTestCounts(output):
+  """Removes test counts from a Google Test program's output."""
+
+  output = re.sub(r'\d+ tests?, listed below',
+                  '? tests, listed below', output)
+  output = re.sub(r'\d+ FAILED TESTS',
+                  '? FAILED TESTS', output)
+  output = re.sub(r'\d+ tests? from \d+ test cases?',
+                  '? tests from ? test cases', output)
+  output = re.sub(r'\d+ tests? from ([a-zA-Z_])',
+                  r'? tests from \1', output)
+  return re.sub(r'\d+ tests?\.', '? tests.', output)
+
+
+def RemoveMatchingTests(test_output, pattern):
+  """Removes output of specified tests from a Google Test program's output.
+
+  This function strips not only the beginning and the end of a test but also
+  all output in between.
+
+  Args:
+    test_output:       A string containing the test output.
+    pattern:           A regex string that matches names of test cases or
+                       tests to remove.
+
+  Returns:
+    Contents of test_output with tests whose names match pattern removed.
+  """
+
+  test_output = re.sub(
+      r'.*\[ RUN      \] .*%s(.|\n)*?\[(  FAILED  |       OK )\] .*%s.*\n' % (
+          pattern, pattern),
+      '',
+      test_output)
+  return re.sub(r'.*%s.*\n' % pattern, '', test_output)
+
+
+def NormalizeOutput(output):
+  """Normalizes output (the output of gtest_output_test_.exe)."""
+
+  output = ToUnixLineEnding(output)
+  output = RemoveLocations(output)
+  output = RemoveStackTraceDetails(output)
+  output = RemoveTime(output)
+  return output
+
+
+def GetShellCommandOutput(env_cmd):
+  """Runs a command in a sub-process, and returns its output in a string.
+
+  Args:
+    env_cmd: The shell command. A 2-tuple where element 0 is a dict of extra
+             environment variables to set, and element 1 is a string with
+             the command and any flags.
+
+  Returns:
+    A string with the command's combined standard and diagnostic output.
+  """
+
+  # Spawns cmd in a sub-process, and gets its standard I/O file objects.
+  # Set and save the environment properly.
+  environ = os.environ.copy()
+  environ.update(env_cmd[0])
+  p = gtest_test_utils.Subprocess(env_cmd[1], env=environ, capture_stderr=False)
+
+  return p.output
+
+
+def GetCommandOutput(env_cmd):
+  """Runs a command and returns its output with all file location
+  info stripped off.
+
+  Args:
+    env_cmd:  The shell command. A 2-tuple where element 0 is a dict of extra
+              environment variables to set, and element 1 is a string with
+              the command and any flags.
+  """
+
+  # Disables exception pop-ups on Windows.
+  environ, cmdline = env_cmd
+  environ = dict(environ)  # Ensures we are modifying a copy.
+  environ[CATCH_EXCEPTIONS_ENV_VAR_NAME] = '1'
+  return NormalizeOutput(GetShellCommandOutput((environ, cmdline)))
+
+
+def GetOutputOfAllCommands():
+  """Returns concatenated output from several representative commands."""
+
+  return (GetCommandOutput(COMMAND_WITH_COLOR) +
+          GetCommandOutput(COMMAND_WITH_TIME) +
+          GetCommandOutput(COMMAND_WITH_DISABLED) +
+          GetCommandOutput(COMMAND_WITH_SHARDING))
+
+
+test_list = GetShellCommandOutput(COMMAND_LIST_TESTS)
+SUPPORTS_DEATH_TESTS = 'DeathTest' in test_list
+SUPPORTS_TYPED_TESTS = 'TypedTest' in test_list
+SUPPORTS_THREADS = 'ExpectFailureWithThreadsTest' in test_list
+SUPPORTS_STACK_TRACES = False
+
+CAN_GENERATE_GOLDEN_FILE = (SUPPORTS_DEATH_TESTS and
+                            SUPPORTS_TYPED_TESTS and
+                            SUPPORTS_THREADS)
+
+
+class GTestOutputTest(gtest_test_utils.TestCase):
+  def RemoveUnsupportedTests(self, test_output):
+    if not SUPPORTS_DEATH_TESTS:
+      test_output = RemoveMatchingTests(test_output, 'DeathTest')
+    if not SUPPORTS_TYPED_TESTS:
+      test_output = RemoveMatchingTests(test_output, 'TypedTest')
+      test_output = RemoveMatchingTests(test_output, 'TypedDeathTest')
+      test_output = RemoveMatchingTests(test_output, 'TypeParamDeathTest')
+    if not SUPPORTS_THREADS:
+      test_output = RemoveMatchingTests(test_output,
+                                        'ExpectFailureWithThreadsTest')
+      test_output = RemoveMatchingTests(test_output,
+                                        'ScopedFakeTestPartResultReporterTest')
+      test_output = RemoveMatchingTests(test_output,
+                                        'WorksConcurrently')
+    if not SUPPORTS_STACK_TRACES:
+      test_output = RemoveStackTraces(test_output)
+
+    return test_output
+
+  def testOutput(self):
+    output = GetOutputOfAllCommands()
+
+    golden_file = open(GOLDEN_PATH, 'rb')
+    # A mis-configured source control system can cause \r appear in EOL
+    # sequences when we read the golden file irrespective of an operating
+    # system used. Therefore, we need to strip those \r's from newlines
+    # unconditionally.
+    golden = ToUnixLineEnding(golden_file.read())
+    golden_file.close()
+
+    # We want the test to pass regardless of certain features being
+    # supported or not.
+
+    # We still have to remove type name specifics in all cases.
+    normalized_actual = RemoveTypeInfoDetails(output)
+    normalized_golden = RemoveTypeInfoDetails(golden)
+
+    if CAN_GENERATE_GOLDEN_FILE:
+      self.assertEqual(normalized_golden, normalized_actual)
+    else:
+      normalized_actual = NormalizeToCurrentPlatform(
+          RemoveTestCounts(normalized_actual))
+      normalized_golden = NormalizeToCurrentPlatform(
+          RemoveTestCounts(self.RemoveUnsupportedTests(normalized_golden)))
+
+      # This code is very handy when debugging golden file differences:
+      if os.getenv('DEBUG_GTEST_OUTPUT_TEST'):
+        open(os.path.join(
+            gtest_test_utils.GetSourceDir(),
+            '_gtest_output_test_normalized_actual.txt'), 'wb').write(
+                normalized_actual)
+        open(os.path.join(
+            gtest_test_utils.GetSourceDir(),
+            '_gtest_output_test_normalized_golden.txt'), 'wb').write(
+                normalized_golden)
+
+      self.assertEqual(normalized_golden, normalized_actual)
+
+
+if __name__ == '__main__':
+  if sys.argv[1:] == [GENGOLDEN_FLAG]:
+    if CAN_GENERATE_GOLDEN_FILE:
+      output = GetOutputOfAllCommands()
+      golden_file = open(GOLDEN_PATH, 'wb')
+      golden_file.write(output)
+      golden_file.close()
+    else:
+      message = (
+          """Unable to write a golden file when compiled in an environment
+that does not support all the required features (death tests, typed tests,
+and multiple threads).  Please generate the golden file using a binary built
+with those features enabled.""")
+
+      sys.stderr.write(message)
+      sys.exit(1)
+  else:
+    gtest_test_utils.Main()
diff --git a/google-breakpad/src/testing/gtest/test/gtest_output_test_.cc b/google-breakpad/src/testing/gtest/test/gtest_output_test_.cc
new file mode 100644
index 0000000..1b08b65
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest_output_test_.cc
@@ -0,0 +1,1021 @@
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// A unit test for Google Test itself.  This verifies that the basic
+// constructs of Google Test work.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+#include "gtest/gtest-spi.h"
+#include "gtest/gtest.h"
+
+// Indicates that this translation unit is part of Google Test's
+// implementation.  It must come before gtest-internal-inl.h is
+// included, or there will be a compiler error.  This trick is to
+// prevent a user from accidentally including gtest-internal-inl.h in
+// his code.
+#define GTEST_IMPLEMENTATION_ 1
+#include "src/gtest-internal-inl.h"
+#undef GTEST_IMPLEMENTATION_
+
+#include <stdlib.h>
+
+#if GTEST_IS_THREADSAFE
+using testing::ScopedFakeTestPartResultReporter;
+using testing::TestPartResultArray;
+
+using testing::internal::Notification;
+using testing::internal::ThreadWithParam;
+#endif
+
+namespace posix = ::testing::internal::posix;
+using testing::internal::String;
+using testing::internal::scoped_ptr;
+
+// Tests catching fatal failures.
+
+// A subroutine used by the following test.
+void TestEq1(int x) {
+  ASSERT_EQ(1, x);
+}
+
+// This function calls a test subroutine, catches the fatal failure it
+// generates, and then returns early.
+void TryTestSubroutine() {
+  // Calls a subrountine that yields a fatal failure.
+  TestEq1(2);
+
+  // Catches the fatal failure and aborts the test.
+  //
+  // The testing::Test:: prefix is necessary when calling
+  // HasFatalFailure() outside of a TEST, TEST_F, or test fixture.
+  if (testing::Test::HasFatalFailure()) return;
+
+  // If we get here, something is wrong.
+  FAIL() << "This should never be reached.";
+}
+
+TEST(PassingTest, PassingTest1) {
+}
+
+TEST(PassingTest, PassingTest2) {
+}
+
+// Tests that parameters of failing parameterized tests are printed in the
+// failing test summary.
+class FailingParamTest : public testing::TestWithParam<int> {};
+
+TEST_P(FailingParamTest, Fails) {
+  EXPECT_EQ(1, GetParam());
+}
+
+// This generates a test which will fail. Google Test is expected to print
+// its parameter when it outputs the list of all failed tests.
+INSTANTIATE_TEST_CASE_P(PrintingFailingParams,
+                        FailingParamTest,
+                        testing::Values(2));
+
+// Tests catching a fatal failure in a subroutine.
+TEST(FatalFailureTest, FatalFailureInSubroutine) {
+  printf("(expecting a failure that x should be 1)\n");
+
+  TryTestSubroutine();
+}
+
+// Tests catching a fatal failure in a nested subroutine.
+TEST(FatalFailureTest, FatalFailureInNestedSubroutine) {
+  printf("(expecting a failure that x should be 1)\n");
+
+  // Calls a subrountine that yields a fatal failure.
+  TryTestSubroutine();
+
+  // Catches the fatal failure and aborts the test.
+  //
+  // When calling HasFatalFailure() inside a TEST, TEST_F, or test
+  // fixture, the testing::Test:: prefix is not needed.
+  if (HasFatalFailure()) return;
+
+  // If we get here, something is wrong.
+  FAIL() << "This should never be reached.";
+}
+
+// Tests HasFatalFailure() after a failed EXPECT check.
+TEST(FatalFailureTest, NonfatalFailureInSubroutine) {
+  printf("(expecting a failure on false)\n");
+  EXPECT_TRUE(false);  // Generates a nonfatal failure
+  ASSERT_FALSE(HasFatalFailure());  // This should succeed.
+}
+
+// Tests interleaving user logging and Google Test assertions.
+TEST(LoggingTest, InterleavingLoggingAndAssertions) {
+  static const int a[4] = {
+    3, 9, 2, 6
+  };
+
+  printf("(expecting 2 failures on (3) >= (a[i]))\n");
+  for (int i = 0; i < static_cast<int>(sizeof(a)/sizeof(*a)); i++) {
+    printf("i == %d\n", i);
+    EXPECT_GE(3, a[i]);
+  }
+}
+
+// Tests the SCOPED_TRACE macro.
+
+// A helper function for testing SCOPED_TRACE.
+void SubWithoutTrace(int n) {
+  EXPECT_EQ(1, n);
+  ASSERT_EQ(2, n);
+}
+
+// Another helper function for testing SCOPED_TRACE.
+void SubWithTrace(int n) {
+  SCOPED_TRACE(testing::Message() << "n = " << n);
+
+  SubWithoutTrace(n);
+}
+
+// Tests that SCOPED_TRACE() obeys lexical scopes.
+TEST(SCOPED_TRACETest, ObeysScopes) {
+  printf("(expected to fail)\n");
+
+  // There should be no trace before SCOPED_TRACE() is invoked.
+  ADD_FAILURE() << "This failure is expected, and shouldn't have a trace.";
+
+  {
+    SCOPED_TRACE("Expected trace");
+    // After SCOPED_TRACE(), a failure in the current scope should contain
+    // the trace.
+    ADD_FAILURE() << "This failure is expected, and should have a trace.";
+  }
+
+  // Once the control leaves the scope of the SCOPED_TRACE(), there
+  // should be no trace again.
+  ADD_FAILURE() << "This failure is expected, and shouldn't have a trace.";
+}
+
+// Tests that SCOPED_TRACE works inside a loop.
+TEST(SCOPED_TRACETest, WorksInLoop) {
+  printf("(expected to fail)\n");
+
+  for (int i = 1; i <= 2; i++) {
+    SCOPED_TRACE(testing::Message() << "i = " << i);
+
+    SubWithoutTrace(i);
+  }
+}
+
+// Tests that SCOPED_TRACE works in a subroutine.
+TEST(SCOPED_TRACETest, WorksInSubroutine) {
+  printf("(expected to fail)\n");
+
+  SubWithTrace(1);
+  SubWithTrace(2);
+}
+
+// Tests that SCOPED_TRACE can be nested.
+TEST(SCOPED_TRACETest, CanBeNested) {
+  printf("(expected to fail)\n");
+
+  SCOPED_TRACE("");  // A trace without a message.
+
+  SubWithTrace(2);
+}
+
+// Tests that multiple SCOPED_TRACEs can be used in the same scope.
+TEST(SCOPED_TRACETest, CanBeRepeated) {
+  printf("(expected to fail)\n");
+
+  SCOPED_TRACE("A");
+  ADD_FAILURE()
+      << "This failure is expected, and should contain trace point A.";
+
+  SCOPED_TRACE("B");
+  ADD_FAILURE()
+      << "This failure is expected, and should contain trace point A and B.";
+
+  {
+    SCOPED_TRACE("C");
+    ADD_FAILURE() << "This failure is expected, and should "
+                  << "contain trace point A, B, and C.";
+  }
+
+  SCOPED_TRACE("D");
+  ADD_FAILURE() << "This failure is expected, and should "
+                << "contain trace point A, B, and D.";
+}
+
+#if GTEST_IS_THREADSAFE
+// Tests that SCOPED_TRACE()s can be used concurrently from multiple
+// threads.  Namely, an assertion should be affected by
+// SCOPED_TRACE()s in its own thread only.
+
+// Here's the sequence of actions that happen in the test:
+//
+//   Thread A (main)                | Thread B (spawned)
+//   ===============================|================================
+//   spawns thread B                |
+//   -------------------------------+--------------------------------
+//   waits for n1                   | SCOPED_TRACE("Trace B");
+//                                  | generates failure #1
+//                                  | notifies n1
+//   -------------------------------+--------------------------------
+//   SCOPED_TRACE("Trace A");       | waits for n2
+//   generates failure #2           |
+//   notifies n2                    |
+//   -------------------------------|--------------------------------
+//   waits for n3                   | generates failure #3
+//                                  | trace B dies
+//                                  | generates failure #4
+//                                  | notifies n3
+//   -------------------------------|--------------------------------
+//   generates failure #5           | finishes
+//   trace A dies                   |
+//   generates failure #6           |
+//   -------------------------------|--------------------------------
+//   waits for thread B to finish   |
+
+struct CheckPoints {
+  Notification n1;
+  Notification n2;
+  Notification n3;
+};
+
+static void ThreadWithScopedTrace(CheckPoints* check_points) {
+  {
+    SCOPED_TRACE("Trace B");
+    ADD_FAILURE()
+        << "Expected failure #1 (in thread B, only trace B alive).";
+    check_points->n1.Notify();
+    check_points->n2.WaitForNotification();
+
+    ADD_FAILURE()
+        << "Expected failure #3 (in thread B, trace A & B both alive).";
+  }  // Trace B dies here.
+  ADD_FAILURE()
+      << "Expected failure #4 (in thread B, only trace A alive).";
+  check_points->n3.Notify();
+}
+
+TEST(SCOPED_TRACETest, WorksConcurrently) {
+  printf("(expecting 6 failures)\n");
+
+  CheckPoints check_points;
+  ThreadWithParam<CheckPoints*> thread(&ThreadWithScopedTrace,
+                                       &check_points,
+                                       NULL);
+  check_points.n1.WaitForNotification();
+
+  {
+    SCOPED_TRACE("Trace A");
+    ADD_FAILURE()
+        << "Expected failure #2 (in thread A, trace A & B both alive).";
+    check_points.n2.Notify();
+    check_points.n3.WaitForNotification();
+
+    ADD_FAILURE()
+        << "Expected failure #5 (in thread A, only trace A alive).";
+  }  // Trace A dies here.
+  ADD_FAILURE()
+      << "Expected failure #6 (in thread A, no trace alive).";
+  thread.Join();
+}
+#endif  // GTEST_IS_THREADSAFE
+
+TEST(DisabledTestsWarningTest,
+     DISABLED_AlsoRunDisabledTestsFlagSuppressesWarning) {
+  // This test body is intentionally empty.  Its sole purpose is for
+  // verifying that the --gtest_also_run_disabled_tests flag
+  // suppresses the "YOU HAVE 12 DISABLED TESTS" warning at the end of
+  // the test output.
+}
+
+// Tests using assertions outside of TEST and TEST_F.
+//
+// This function creates two failures intentionally.
+void AdHocTest() {
+  printf("The non-test part of the code is expected to have 2 failures.\n\n");
+  EXPECT_TRUE(false);
+  EXPECT_EQ(2, 3);
+}
+
+// Runs all TESTs, all TEST_Fs, and the ad hoc test.
+int RunAllTests() {
+  AdHocTest();
+  return RUN_ALL_TESTS();
+}
+
+// Tests non-fatal failures in the fixture constructor.
+class NonFatalFailureInFixtureConstructorTest : public testing::Test {
+ protected:
+  NonFatalFailureInFixtureConstructorTest() {
+    printf("(expecting 5 failures)\n");
+    ADD_FAILURE() << "Expected failure #1, in the test fixture c'tor.";
+  }
+
+  ~NonFatalFailureInFixtureConstructorTest() {
+    ADD_FAILURE() << "Expected failure #5, in the test fixture d'tor.";
+  }
+
+  virtual void SetUp() {
+    ADD_FAILURE() << "Expected failure #2, in SetUp().";
+  }
+
+  virtual void TearDown() {
+    ADD_FAILURE() << "Expected failure #4, in TearDown.";
+  }
+};
+
+TEST_F(NonFatalFailureInFixtureConstructorTest, FailureInConstructor) {
+  ADD_FAILURE() << "Expected failure #3, in the test body.";
+}
+
+// Tests fatal failures in the fixture constructor.
+class FatalFailureInFixtureConstructorTest : public testing::Test {
+ protected:
+  FatalFailureInFixtureConstructorTest() {
+    printf("(expecting 2 failures)\n");
+    Init();
+  }
+
+  ~FatalFailureInFixtureConstructorTest() {
+    ADD_FAILURE() << "Expected failure #2, in the test fixture d'tor.";
+  }
+
+  virtual void SetUp() {
+    ADD_FAILURE() << "UNEXPECTED failure in SetUp().  "
+                  << "We should never get here, as the test fixture c'tor "
+                  << "had a fatal failure.";
+  }
+
+  virtual void TearDown() {
+    ADD_FAILURE() << "UNEXPECTED failure in TearDown().  "
+                  << "We should never get here, as the test fixture c'tor "
+                  << "had a fatal failure.";
+  }
+
+ private:
+  void Init() {
+    FAIL() << "Expected failure #1, in the test fixture c'tor.";
+  }
+};
+
+TEST_F(FatalFailureInFixtureConstructorTest, FailureInConstructor) {
+  ADD_FAILURE() << "UNEXPECTED failure in the test body.  "
+                << "We should never get here, as the test fixture c'tor "
+                << "had a fatal failure.";
+}
+
+// Tests non-fatal failures in SetUp().
+class NonFatalFailureInSetUpTest : public testing::Test {
+ protected:
+  virtual ~NonFatalFailureInSetUpTest() {
+    Deinit();
+  }
+
+  virtual void SetUp() {
+    printf("(expecting 4 failures)\n");
+    ADD_FAILURE() << "Expected failure #1, in SetUp().";
+  }
+
+  virtual void TearDown() {
+    FAIL() << "Expected failure #3, in TearDown().";
+  }
+ private:
+  void Deinit() {
+    FAIL() << "Expected failure #4, in the test fixture d'tor.";
+  }
+};
+
+TEST_F(NonFatalFailureInSetUpTest, FailureInSetUp) {
+  FAIL() << "Expected failure #2, in the test function.";
+}
+
+// Tests fatal failures in SetUp().
+class FatalFailureInSetUpTest : public testing::Test {
+ protected:
+  virtual ~FatalFailureInSetUpTest() {
+    Deinit();
+  }
+
+  virtual void SetUp() {
+    printf("(expecting 3 failures)\n");
+    FAIL() << "Expected failure #1, in SetUp().";
+  }
+
+  virtual void TearDown() {
+    FAIL() << "Expected failure #2, in TearDown().";
+  }
+ private:
+  void Deinit() {
+    FAIL() << "Expected failure #3, in the test fixture d'tor.";
+  }
+};
+
+TEST_F(FatalFailureInSetUpTest, FailureInSetUp) {
+  FAIL() << "UNEXPECTED failure in the test function.  "
+         << "We should never get here, as SetUp() failed.";
+}
+
+TEST(AddFailureAtTest, MessageContainsSpecifiedFileAndLineNumber) {
+  ADD_FAILURE_AT("foo.cc", 42) << "Expected failure in foo.cc";
+}
+
+#if GTEST_IS_THREADSAFE
+
+// A unary function that may die.
+void DieIf(bool should_die) {
+  GTEST_CHECK_(!should_die) << " - death inside DieIf().";
+}
+
+// Tests running death tests in a multi-threaded context.
+
+// Used for coordination between the main and the spawn thread.
+struct SpawnThreadNotifications {
+  SpawnThreadNotifications() {}
+
+  Notification spawn_thread_started;
+  Notification spawn_thread_ok_to_terminate;
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(SpawnThreadNotifications);
+};
+
+// The function to be executed in the thread spawn by the
+// MultipleThreads test (below).
+static void ThreadRoutine(SpawnThreadNotifications* notifications) {
+  // Signals the main thread that this thread has started.
+  notifications->spawn_thread_started.Notify();
+
+  // Waits for permission to finish from the main thread.
+  notifications->spawn_thread_ok_to_terminate.WaitForNotification();
+}
+
+// This is a death-test test, but it's not named with a DeathTest
+// suffix.  It starts threads which might interfere with later
+// death tests, so it must run after all other death tests.
+class DeathTestAndMultiThreadsTest : public testing::Test {
+ protected:
+  // Starts a thread and waits for it to begin.
+  virtual void SetUp() {
+    thread_.reset(new ThreadWithParam<SpawnThreadNotifications*>(
+        &ThreadRoutine, &notifications_, NULL));
+    notifications_.spawn_thread_started.WaitForNotification();
+  }
+  // Tells the thread to finish, and reaps it.
+  // Depending on the version of the thread library in use,
+  // a manager thread might still be left running that will interfere
+  // with later death tests.  This is unfortunate, but this class
+  // cleans up after itself as best it can.
+  virtual void TearDown() {
+    notifications_.spawn_thread_ok_to_terminate.Notify();
+  }
+
+ private:
+  SpawnThreadNotifications notifications_;
+  scoped_ptr<ThreadWithParam<SpawnThreadNotifications*> > thread_;
+};
+
+#endif  // GTEST_IS_THREADSAFE
+
+// The MixedUpTestCaseTest test case verifies that Google Test will fail a
+// test if it uses a different fixture class than what other tests in
+// the same test case use.  It deliberately contains two fixture
+// classes with the same name but defined in different namespaces.
+
+// The MixedUpTestCaseWithSameTestNameTest test case verifies that
+// when the user defines two tests with the same test case name AND
+// same test name (but in different namespaces), the second test will
+// fail.
+
+namespace foo {
+
+class MixedUpTestCaseTest : public testing::Test {
+};
+
+TEST_F(MixedUpTestCaseTest, FirstTestFromNamespaceFoo) {}
+TEST_F(MixedUpTestCaseTest, SecondTestFromNamespaceFoo) {}
+
+class MixedUpTestCaseWithSameTestNameTest : public testing::Test {
+};
+
+TEST_F(MixedUpTestCaseWithSameTestNameTest,
+       TheSecondTestWithThisNameShouldFail) {}
+
+}  // namespace foo
+
+namespace bar {
+
+class MixedUpTestCaseTest : public testing::Test {
+};
+
+// The following two tests are expected to fail.  We rely on the
+// golden file to check that Google Test generates the right error message.
+TEST_F(MixedUpTestCaseTest, ThisShouldFail) {}
+TEST_F(MixedUpTestCaseTest, ThisShouldFailToo) {}
+
+class MixedUpTestCaseWithSameTestNameTest : public testing::Test {
+};
+
+// Expected to fail.  We rely on the golden file to check that Google Test
+// generates the right error message.
+TEST_F(MixedUpTestCaseWithSameTestNameTest,
+       TheSecondTestWithThisNameShouldFail) {}
+
+}  // namespace bar
+
+// The following two test cases verify that Google Test catches the user
+// error of mixing TEST and TEST_F in the same test case.  The first
+// test case checks the scenario where TEST_F appears before TEST, and
+// the second one checks where TEST appears before TEST_F.
+
+class TEST_F_before_TEST_in_same_test_case : public testing::Test {
+};
+
+TEST_F(TEST_F_before_TEST_in_same_test_case, DefinedUsingTEST_F) {}
+
+// Expected to fail.  We rely on the golden file to check that Google Test
+// generates the right error message.
+TEST(TEST_F_before_TEST_in_same_test_case, DefinedUsingTESTAndShouldFail) {}
+
+class TEST_before_TEST_F_in_same_test_case : public testing::Test {
+};
+
+TEST(TEST_before_TEST_F_in_same_test_case, DefinedUsingTEST) {}
+
+// Expected to fail.  We rely on the golden file to check that Google Test
+// generates the right error message.
+TEST_F(TEST_before_TEST_F_in_same_test_case, DefinedUsingTEST_FAndShouldFail) {
+}
+
+// Used for testing EXPECT_NONFATAL_FAILURE() and EXPECT_FATAL_FAILURE().
+int global_integer = 0;
+
+// Tests that EXPECT_NONFATAL_FAILURE() can reference global variables.
+TEST(ExpectNonfatalFailureTest, CanReferenceGlobalVariables) {
+  global_integer = 0;
+  EXPECT_NONFATAL_FAILURE({
+    EXPECT_EQ(1, global_integer) << "Expected non-fatal failure.";
+  }, "Expected non-fatal failure.");
+}
+
+// Tests that EXPECT_NONFATAL_FAILURE() can reference local variables
+// (static or not).
+TEST(ExpectNonfatalFailureTest, CanReferenceLocalVariables) {
+  int m = 0;
+  static int n;
+  n = 1;
+  EXPECT_NONFATAL_FAILURE({
+    EXPECT_EQ(m, n) << "Expected non-fatal failure.";
+  }, "Expected non-fatal failure.");
+}
+
+// Tests that EXPECT_NONFATAL_FAILURE() succeeds when there is exactly
+// one non-fatal failure and no fatal failure.
+TEST(ExpectNonfatalFailureTest, SucceedsWhenThereIsOneNonfatalFailure) {
+  EXPECT_NONFATAL_FAILURE({
+    ADD_FAILURE() << "Expected non-fatal failure.";
+  }, "Expected non-fatal failure.");
+}
+
+// Tests that EXPECT_NONFATAL_FAILURE() fails when there is no
+// non-fatal failure.
+TEST(ExpectNonfatalFailureTest, FailsWhenThereIsNoNonfatalFailure) {
+  printf("(expecting a failure)\n");
+  EXPECT_NONFATAL_FAILURE({
+  }, "");
+}
+
+// Tests that EXPECT_NONFATAL_FAILURE() fails when there are two
+// non-fatal failures.
+TEST(ExpectNonfatalFailureTest, FailsWhenThereAreTwoNonfatalFailures) {
+  printf("(expecting a failure)\n");
+  EXPECT_NONFATAL_FAILURE({
+    ADD_FAILURE() << "Expected non-fatal failure 1.";
+    ADD_FAILURE() << "Expected non-fatal failure 2.";
+  }, "");
+}
+
+// Tests that EXPECT_NONFATAL_FAILURE() fails when there is one fatal
+// failure.
+TEST(ExpectNonfatalFailureTest, FailsWhenThereIsOneFatalFailure) {
+  printf("(expecting a failure)\n");
+  EXPECT_NONFATAL_FAILURE({
+    FAIL() << "Expected fatal failure.";
+  }, "");
+}
+
+// Tests that EXPECT_NONFATAL_FAILURE() fails when the statement being
+// tested returns.
+TEST(ExpectNonfatalFailureTest, FailsWhenStatementReturns) {
+  printf("(expecting a failure)\n");
+  EXPECT_NONFATAL_FAILURE({
+    return;
+  }, "");
+}
+
+#if GTEST_HAS_EXCEPTIONS
+
+// Tests that EXPECT_NONFATAL_FAILURE() fails when the statement being
+// tested throws.
+TEST(ExpectNonfatalFailureTest, FailsWhenStatementThrows) {
+  printf("(expecting a failure)\n");
+  try {
+    EXPECT_NONFATAL_FAILURE({
+      throw 0;
+    }, "");
+  } catch(int) {  // NOLINT
+  }
+}
+
+#endif  // GTEST_HAS_EXCEPTIONS
+
+// Tests that EXPECT_FATAL_FAILURE() can reference global variables.
+TEST(ExpectFatalFailureTest, CanReferenceGlobalVariables) {
+  global_integer = 0;
+  EXPECT_FATAL_FAILURE({
+    ASSERT_EQ(1, global_integer) << "Expected fatal failure.";
+  }, "Expected fatal failure.");
+}
+
+// Tests that EXPECT_FATAL_FAILURE() can reference local static
+// variables.
+TEST(ExpectFatalFailureTest, CanReferenceLocalStaticVariables) {
+  static int n;
+  n = 1;
+  EXPECT_FATAL_FAILURE({
+    ASSERT_EQ(0, n) << "Expected fatal failure.";
+  }, "Expected fatal failure.");
+}
+
+// Tests that EXPECT_FATAL_FAILURE() succeeds when there is exactly
+// one fatal failure and no non-fatal failure.
+TEST(ExpectFatalFailureTest, SucceedsWhenThereIsOneFatalFailure) {
+  EXPECT_FATAL_FAILURE({
+    FAIL() << "Expected fatal failure.";
+  }, "Expected fatal failure.");
+}
+
+// Tests that EXPECT_FATAL_FAILURE() fails when there is no fatal
+// failure.
+TEST(ExpectFatalFailureTest, FailsWhenThereIsNoFatalFailure) {
+  printf("(expecting a failure)\n");
+  EXPECT_FATAL_FAILURE({
+  }, "");
+}
+
+// A helper for generating a fatal failure.
+void FatalFailure() {
+  FAIL() << "Expected fatal failure.";
+}
+
+// Tests that EXPECT_FATAL_FAILURE() fails when there are two
+// fatal failures.
+TEST(ExpectFatalFailureTest, FailsWhenThereAreTwoFatalFailures) {
+  printf("(expecting a failure)\n");
+  EXPECT_FATAL_FAILURE({
+    FatalFailure();
+    FatalFailure();
+  }, "");
+}
+
+// Tests that EXPECT_FATAL_FAILURE() fails when there is one non-fatal
+// failure.
+TEST(ExpectFatalFailureTest, FailsWhenThereIsOneNonfatalFailure) {
+  printf("(expecting a failure)\n");
+  EXPECT_FATAL_FAILURE({
+    ADD_FAILURE() << "Expected non-fatal failure.";
+  }, "");
+}
+
+// Tests that EXPECT_FATAL_FAILURE() fails when the statement being
+// tested returns.
+TEST(ExpectFatalFailureTest, FailsWhenStatementReturns) {
+  printf("(expecting a failure)\n");
+  EXPECT_FATAL_FAILURE({
+    return;
+  }, "");
+}
+
+#if GTEST_HAS_EXCEPTIONS
+
+// Tests that EXPECT_FATAL_FAILURE() fails when the statement being
+// tested throws.
+TEST(ExpectFatalFailureTest, FailsWhenStatementThrows) {
+  printf("(expecting a failure)\n");
+  try {
+    EXPECT_FATAL_FAILURE({
+      throw 0;
+    }, "");
+  } catch(int) {  // NOLINT
+  }
+}
+
+#endif  // GTEST_HAS_EXCEPTIONS
+
+// This #ifdef block tests the output of typed tests.
+#if GTEST_HAS_TYPED_TEST
+
+template <typename T>
+class TypedTest : public testing::Test {
+};
+
+TYPED_TEST_CASE(TypedTest, testing::Types<int>);
+
+TYPED_TEST(TypedTest, Success) {
+  EXPECT_EQ(0, TypeParam());
+}
+
+TYPED_TEST(TypedTest, Failure) {
+  EXPECT_EQ(1, TypeParam()) << "Expected failure";
+}
+
+#endif  // GTEST_HAS_TYPED_TEST
+
+// This #ifdef block tests the output of type-parameterized tests.
+#if GTEST_HAS_TYPED_TEST_P
+
+template <typename T>
+class TypedTestP : public testing::Test {
+};
+
+TYPED_TEST_CASE_P(TypedTestP);
+
+TYPED_TEST_P(TypedTestP, Success) {
+  EXPECT_EQ(0U, TypeParam());
+}
+
+TYPED_TEST_P(TypedTestP, Failure) {
+  EXPECT_EQ(1U, TypeParam()) << "Expected failure";
+}
+
+REGISTER_TYPED_TEST_CASE_P(TypedTestP, Success, Failure);
+
+typedef testing::Types<unsigned char, unsigned int> UnsignedTypes;
+INSTANTIATE_TYPED_TEST_CASE_P(Unsigned, TypedTestP, UnsignedTypes);
+
+#endif  // GTEST_HAS_TYPED_TEST_P
+
+#if GTEST_HAS_DEATH_TEST
+
+// We rely on the golden file to verify that tests whose test case
+// name ends with DeathTest are run first.
+
+TEST(ADeathTest, ShouldRunFirst) {
+}
+
+# if GTEST_HAS_TYPED_TEST
+
+// We rely on the golden file to verify that typed tests whose test
+// case name ends with DeathTest are run first.
+
+template <typename T>
+class ATypedDeathTest : public testing::Test {
+};
+
+typedef testing::Types<int, double> NumericTypes;
+TYPED_TEST_CASE(ATypedDeathTest, NumericTypes);
+
+TYPED_TEST(ATypedDeathTest, ShouldRunFirst) {
+}
+
+# endif  // GTEST_HAS_TYPED_TEST
+
+# if GTEST_HAS_TYPED_TEST_P
+
+
+// We rely on the golden file to verify that type-parameterized tests
+// whose test case name ends with DeathTest are run first.
+
+template <typename T>
+class ATypeParamDeathTest : public testing::Test {
+};
+
+TYPED_TEST_CASE_P(ATypeParamDeathTest);
+
+TYPED_TEST_P(ATypeParamDeathTest, ShouldRunFirst) {
+}
+
+REGISTER_TYPED_TEST_CASE_P(ATypeParamDeathTest, ShouldRunFirst);
+
+INSTANTIATE_TYPED_TEST_CASE_P(My, ATypeParamDeathTest, NumericTypes);
+
+# endif  // GTEST_HAS_TYPED_TEST_P
+
+#endif  // GTEST_HAS_DEATH_TEST
+
+// Tests various failure conditions of
+// EXPECT_{,NON}FATAL_FAILURE{,_ON_ALL_THREADS}.
+class ExpectFailureTest : public testing::Test {
+ public:  // Must be public and not protected due to a bug in g++ 3.4.2.
+  enum FailureMode {
+    FATAL_FAILURE,
+    NONFATAL_FAILURE
+  };
+  static void AddFailure(FailureMode failure) {
+    if (failure == FATAL_FAILURE) {
+      FAIL() << "Expected fatal failure.";
+    } else {
+      ADD_FAILURE() << "Expected non-fatal failure.";
+    }
+  }
+};
+
+TEST_F(ExpectFailureTest, ExpectFatalFailure) {
+  // Expected fatal failure, but succeeds.
+  printf("(expecting 1 failure)\n");
+  EXPECT_FATAL_FAILURE(SUCCEED(), "Expected fatal failure.");
+  // Expected fatal failure, but got a non-fatal failure.
+  printf("(expecting 1 failure)\n");
+  EXPECT_FATAL_FAILURE(AddFailure(NONFATAL_FAILURE), "Expected non-fatal "
+                       "failure.");
+  // Wrong message.
+  printf("(expecting 1 failure)\n");
+  EXPECT_FATAL_FAILURE(AddFailure(FATAL_FAILURE), "Some other fatal failure "
+                       "expected.");
+}
+
+TEST_F(ExpectFailureTest, ExpectNonFatalFailure) {
+  // Expected non-fatal failure, but succeeds.
+  printf("(expecting 1 failure)\n");
+  EXPECT_NONFATAL_FAILURE(SUCCEED(), "Expected non-fatal failure.");
+  // Expected non-fatal failure, but got a fatal failure.
+  printf("(expecting 1 failure)\n");
+  EXPECT_NONFATAL_FAILURE(AddFailure(FATAL_FAILURE), "Expected fatal failure.");
+  // Wrong message.
+  printf("(expecting 1 failure)\n");
+  EXPECT_NONFATAL_FAILURE(AddFailure(NONFATAL_FAILURE), "Some other non-fatal "
+                          "failure.");
+}
+
+#if GTEST_IS_THREADSAFE
+
+class ExpectFailureWithThreadsTest : public ExpectFailureTest {
+ protected:
+  static void AddFailureInOtherThread(FailureMode failure) {
+    ThreadWithParam<FailureMode> thread(&AddFailure, failure, NULL);
+    thread.Join();
+  }
+};
+
+TEST_F(ExpectFailureWithThreadsTest, ExpectFatalFailure) {
+  // We only intercept the current thread.
+  printf("(expecting 2 failures)\n");
+  EXPECT_FATAL_FAILURE(AddFailureInOtherThread(FATAL_FAILURE),
+                       "Expected fatal failure.");
+}
+
+TEST_F(ExpectFailureWithThreadsTest, ExpectNonFatalFailure) {
+  // We only intercept the current thread.
+  printf("(expecting 2 failures)\n");
+  EXPECT_NONFATAL_FAILURE(AddFailureInOtherThread(NONFATAL_FAILURE),
+                          "Expected non-fatal failure.");
+}
+
+typedef ExpectFailureWithThreadsTest ScopedFakeTestPartResultReporterTest;
+
+// Tests that the ScopedFakeTestPartResultReporter only catches failures from
+// the current thread if it is instantiated with INTERCEPT_ONLY_CURRENT_THREAD.
+TEST_F(ScopedFakeTestPartResultReporterTest, InterceptOnlyCurrentThread) {
+  printf("(expecting 2 failures)\n");
+  TestPartResultArray results;
+  {
+    ScopedFakeTestPartResultReporter reporter(
+        ScopedFakeTestPartResultReporter::INTERCEPT_ONLY_CURRENT_THREAD,
+        &results);
+    AddFailureInOtherThread(FATAL_FAILURE);
+    AddFailureInOtherThread(NONFATAL_FAILURE);
+  }
+  // The two failures should not have been intercepted.
+  EXPECT_EQ(0, results.size()) << "This shouldn't fail.";
+}
+
+#endif  // GTEST_IS_THREADSAFE
+
+TEST_F(ExpectFailureTest, ExpectFatalFailureOnAllThreads) {
+  // Expected fatal failure, but succeeds.
+  printf("(expecting 1 failure)\n");
+  EXPECT_FATAL_FAILURE_ON_ALL_THREADS(SUCCEED(), "Expected fatal failure.");
+  // Expected fatal failure, but got a non-fatal failure.
+  printf("(expecting 1 failure)\n");
+  EXPECT_FATAL_FAILURE_ON_ALL_THREADS(AddFailure(NONFATAL_FAILURE),
+                                      "Expected non-fatal failure.");
+  // Wrong message.
+  printf("(expecting 1 failure)\n");
+  EXPECT_FATAL_FAILURE_ON_ALL_THREADS(AddFailure(FATAL_FAILURE),
+                                      "Some other fatal failure expected.");
+}
+
+TEST_F(ExpectFailureTest, ExpectNonFatalFailureOnAllThreads) {
+  // Expected non-fatal failure, but succeeds.
+  printf("(expecting 1 failure)\n");
+  EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS(SUCCEED(), "Expected non-fatal "
+                                         "failure.");
+  // Expected non-fatal failure, but got a fatal failure.
+  printf("(expecting 1 failure)\n");
+  EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS(AddFailure(FATAL_FAILURE),
+                                         "Expected fatal failure.");
+  // Wrong message.
+  printf("(expecting 1 failure)\n");
+  EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS(AddFailure(NONFATAL_FAILURE),
+                                         "Some other non-fatal failure.");
+}
+
+
+// Two test environments for testing testing::AddGlobalTestEnvironment().
+
+class FooEnvironment : public testing::Environment {
+ public:
+  virtual void SetUp() {
+    printf("%s", "FooEnvironment::SetUp() called.\n");
+  }
+
+  virtual void TearDown() {
+    printf("%s", "FooEnvironment::TearDown() called.\n");
+    FAIL() << "Expected fatal failure.";
+  }
+};
+
+class BarEnvironment : public testing::Environment {
+ public:
+  virtual void SetUp() {
+    printf("%s", "BarEnvironment::SetUp() called.\n");
+  }
+
+  virtual void TearDown() {
+    printf("%s", "BarEnvironment::TearDown() called.\n");
+    ADD_FAILURE() << "Expected non-fatal failure.";
+  }
+};
+
+bool GTEST_FLAG(internal_skip_environment_and_ad_hoc_tests) = false;
+
+// The main function.
+//
+// The idea is to use Google Test to run all the tests we have defined (some
+// of them are intended to fail), and then compare the test results
+// with the "golden" file.
+int main(int argc, char **argv) {
+  testing::GTEST_FLAG(print_time) = false;
+
+  // We just run the tests, knowing some of them are intended to fail.
+  // We will use a separate Python script to compare the output of
+  // this program with the golden file.
+
+  // It's hard to test InitGoogleTest() directly, as it has many
+  // global side effects.  The following line serves as a sanity test
+  // for it.
+  testing::InitGoogleTest(&argc, argv);
+  if (argc >= 2 &&
+      String(argv[1]) == "--gtest_internal_skip_environment_and_ad_hoc_tests")
+    GTEST_FLAG(internal_skip_environment_and_ad_hoc_tests) = true;
+
+#if GTEST_HAS_DEATH_TEST
+  if (testing::internal::GTEST_FLAG(internal_run_death_test) != "") {
+    // Skip the usual output capturing if we're running as the child
+    // process of an threadsafe-style death test.
+# if GTEST_OS_WINDOWS
+    posix::FReopen("nul:", "w", stdout);
+# else
+    posix::FReopen("/dev/null", "w", stdout);
+# endif  // GTEST_OS_WINDOWS
+    return RUN_ALL_TESTS();
+  }
+#endif  // GTEST_HAS_DEATH_TEST
+
+  if (GTEST_FLAG(internal_skip_environment_and_ad_hoc_tests))
+    return RUN_ALL_TESTS();
+
+  // Registers two global test environments.
+  // The golden file verifies that they are set up in the order they
+  // are registered, and torn down in the reverse order.
+  testing::AddGlobalTestEnvironment(new FooEnvironment);
+  testing::AddGlobalTestEnvironment(new BarEnvironment);
+
+  return RunAllTests();
+}
diff --git a/google-breakpad/src/testing/gtest/test/gtest_output_test_golden_lin.txt b/google-breakpad/src/testing/gtest/test/gtest_output_test_golden_lin.txt
new file mode 100644
index 0000000..a1d342d
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest_output_test_golden_lin.txt
@@ -0,0 +1,711 @@
+The non-test part of the code is expected to have 2 failures.
+
+gtest_output_test_.cc:#: Failure
+Value of: false
+  Actual: false
+Expected: true
+gtest_output_test_.cc:#: Failure
+Value of: 3
+Expected: 2
+[0;32m[==========] [mRunning 62 tests from 27 test cases.
+[0;32m[----------] [mGlobal test environment set-up.
+FooEnvironment::SetUp() called.
+BarEnvironment::SetUp() called.
+[0;32m[----------] [m1 test from ADeathTest
+[0;32m[ RUN      ] [mADeathTest.ShouldRunFirst
+[0;32m[       OK ] [mADeathTest.ShouldRunFirst
+[0;32m[----------] [m1 test from ATypedDeathTest/0, where TypeParam = int
+[0;32m[ RUN      ] [mATypedDeathTest/0.ShouldRunFirst
+[0;32m[       OK ] [mATypedDeathTest/0.ShouldRunFirst
+[0;32m[----------] [m1 test from ATypedDeathTest/1, where TypeParam = double
+[0;32m[ RUN      ] [mATypedDeathTest/1.ShouldRunFirst
+[0;32m[       OK ] [mATypedDeathTest/1.ShouldRunFirst
+[0;32m[----------] [m1 test from My/ATypeParamDeathTest/0, where TypeParam = int
+[0;32m[ RUN      ] [mMy/ATypeParamDeathTest/0.ShouldRunFirst
+[0;32m[       OK ] [mMy/ATypeParamDeathTest/0.ShouldRunFirst
+[0;32m[----------] [m1 test from My/ATypeParamDeathTest/1, where TypeParam = double
+[0;32m[ RUN      ] [mMy/ATypeParamDeathTest/1.ShouldRunFirst
+[0;32m[       OK ] [mMy/ATypeParamDeathTest/1.ShouldRunFirst
+[0;32m[----------] [m2 tests from PassingTest
+[0;32m[ RUN      ] [mPassingTest.PassingTest1
+[0;32m[       OK ] [mPassingTest.PassingTest1
+[0;32m[ RUN      ] [mPassingTest.PassingTest2
+[0;32m[       OK ] [mPassingTest.PassingTest2
+[0;32m[----------] [m3 tests from FatalFailureTest
+[0;32m[ RUN      ] [mFatalFailureTest.FatalFailureInSubroutine
+(expecting a failure that x should be 1)
+gtest_output_test_.cc:#: Failure
+Value of: x
+  Actual: 2
+Expected: 1
+[0;31m[  FAILED  ] [mFatalFailureTest.FatalFailureInSubroutine
+[0;32m[ RUN      ] [mFatalFailureTest.FatalFailureInNestedSubroutine
+(expecting a failure that x should be 1)
+gtest_output_test_.cc:#: Failure
+Value of: x
+  Actual: 2
+Expected: 1
+[0;31m[  FAILED  ] [mFatalFailureTest.FatalFailureInNestedSubroutine
+[0;32m[ RUN      ] [mFatalFailureTest.NonfatalFailureInSubroutine
+(expecting a failure on false)
+gtest_output_test_.cc:#: Failure
+Value of: false
+  Actual: false
+Expected: true
+[0;31m[  FAILED  ] [mFatalFailureTest.NonfatalFailureInSubroutine
+[0;32m[----------] [m1 test from LoggingTest
+[0;32m[ RUN      ] [mLoggingTest.InterleavingLoggingAndAssertions
+(expecting 2 failures on (3) >= (a[i]))
+i == 0
+i == 1
+gtest_output_test_.cc:#: Failure
+Expected: (3) >= (a[i]), actual: 3 vs 9
+i == 2
+i == 3
+gtest_output_test_.cc:#: Failure
+Expected: (3) >= (a[i]), actual: 3 vs 6
+[0;31m[  FAILED  ] [mLoggingTest.InterleavingLoggingAndAssertions
+[0;32m[----------] [m6 tests from SCOPED_TRACETest
+[0;32m[ RUN      ] [mSCOPED_TRACETest.ObeysScopes
+(expected to fail)
+gtest_output_test_.cc:#: Failure
+Failed
+This failure is expected, and shouldn't have a trace.
+gtest_output_test_.cc:#: Failure
+Failed
+This failure is expected, and should have a trace.
+Google Test trace:
+gtest_output_test_.cc:#: Expected trace
+gtest_output_test_.cc:#: Failure
+Failed
+This failure is expected, and shouldn't have a trace.
+[0;31m[  FAILED  ] [mSCOPED_TRACETest.ObeysScopes
+[0;32m[ RUN      ] [mSCOPED_TRACETest.WorksInLoop
+(expected to fail)
+gtest_output_test_.cc:#: Failure
+Value of: n
+  Actual: 1
+Expected: 2
+Google Test trace:
+gtest_output_test_.cc:#: i = 1
+gtest_output_test_.cc:#: Failure
+Value of: n
+  Actual: 2
+Expected: 1
+Google Test trace:
+gtest_output_test_.cc:#: i = 2
+[0;31m[  FAILED  ] [mSCOPED_TRACETest.WorksInLoop
+[0;32m[ RUN      ] [mSCOPED_TRACETest.WorksInSubroutine
+(expected to fail)
+gtest_output_test_.cc:#: Failure
+Value of: n
+  Actual: 1
+Expected: 2
+Google Test trace:
+gtest_output_test_.cc:#: n = 1
+gtest_output_test_.cc:#: Failure
+Value of: n
+  Actual: 2
+Expected: 1
+Google Test trace:
+gtest_output_test_.cc:#: n = 2
+[0;31m[  FAILED  ] [mSCOPED_TRACETest.WorksInSubroutine
+[0;32m[ RUN      ] [mSCOPED_TRACETest.CanBeNested
+(expected to fail)
+gtest_output_test_.cc:#: Failure
+Value of: n
+  Actual: 2
+Expected: 1
+Google Test trace:
+gtest_output_test_.cc:#: n = 2
+gtest_output_test_.cc:#: 
+[0;31m[  FAILED  ] [mSCOPED_TRACETest.CanBeNested
+[0;32m[ RUN      ] [mSCOPED_TRACETest.CanBeRepeated
+(expected to fail)
+gtest_output_test_.cc:#: Failure
+Failed
+This failure is expected, and should contain trace point A.
+Google Test trace:
+gtest_output_test_.cc:#: A
+gtest_output_test_.cc:#: Failure
+Failed
+This failure is expected, and should contain trace point A and B.
+Google Test trace:
+gtest_output_test_.cc:#: B
+gtest_output_test_.cc:#: A
+gtest_output_test_.cc:#: Failure
+Failed
+This failure is expected, and should contain trace point A, B, and C.
+Google Test trace:
+gtest_output_test_.cc:#: C
+gtest_output_test_.cc:#: B
+gtest_output_test_.cc:#: A
+gtest_output_test_.cc:#: Failure
+Failed
+This failure is expected, and should contain trace point A, B, and D.
+Google Test trace:
+gtest_output_test_.cc:#: D
+gtest_output_test_.cc:#: B
+gtest_output_test_.cc:#: A
+[0;31m[  FAILED  ] [mSCOPED_TRACETest.CanBeRepeated
+[0;32m[ RUN      ] [mSCOPED_TRACETest.WorksConcurrently
+(expecting 6 failures)
+gtest_output_test_.cc:#: Failure
+Failed
+Expected failure #1 (in thread B, only trace B alive).
+Google Test trace:
+gtest_output_test_.cc:#: Trace B
+gtest_output_test_.cc:#: Failure
+Failed
+Expected failure #2 (in thread A, trace A & B both alive).
+Google Test trace:
+gtest_output_test_.cc:#: Trace A
+gtest_output_test_.cc:#: Failure
+Failed
+Expected failure #3 (in thread B, trace A & B both alive).
+Google Test trace:
+gtest_output_test_.cc:#: Trace B
+gtest_output_test_.cc:#: Failure
+Failed
+Expected failure #4 (in thread B, only trace A alive).
+gtest_output_test_.cc:#: Failure
+Failed
+Expected failure #5 (in thread A, only trace A alive).
+Google Test trace:
+gtest_output_test_.cc:#: Trace A
+gtest_output_test_.cc:#: Failure
+Failed
+Expected failure #6 (in thread A, no trace alive).
+[0;31m[  FAILED  ] [mSCOPED_TRACETest.WorksConcurrently
+[0;32m[----------] [m1 test from NonFatalFailureInFixtureConstructorTest
+[0;32m[ RUN      ] [mNonFatalFailureInFixtureConstructorTest.FailureInConstructor
+(expecting 5 failures)
+gtest_output_test_.cc:#: Failure
+Failed
+Expected failure #1, in the test fixture c'tor.
+gtest_output_test_.cc:#: Failure
+Failed
+Expected failure #2, in SetUp().
+gtest_output_test_.cc:#: Failure
+Failed
+Expected failure #3, in the test body.
+gtest_output_test_.cc:#: Failure
+Failed
+Expected failure #4, in TearDown.
+gtest_output_test_.cc:#: Failure
+Failed
+Expected failure #5, in the test fixture d'tor.
+[0;31m[  FAILED  ] [mNonFatalFailureInFixtureConstructorTest.FailureInConstructor
+[0;32m[----------] [m1 test from FatalFailureInFixtureConstructorTest
+[0;32m[ RUN      ] [mFatalFailureInFixtureConstructorTest.FailureInConstructor
+(expecting 2 failures)
+gtest_output_test_.cc:#: Failure
+Failed
+Expected failure #1, in the test fixture c'tor.
+gtest_output_test_.cc:#: Failure
+Failed
+Expected failure #2, in the test fixture d'tor.
+[0;31m[  FAILED  ] [mFatalFailureInFixtureConstructorTest.FailureInConstructor
+[0;32m[----------] [m1 test from NonFatalFailureInSetUpTest
+[0;32m[ RUN      ] [mNonFatalFailureInSetUpTest.FailureInSetUp
+(expecting 4 failures)
+gtest_output_test_.cc:#: Failure
+Failed
+Expected failure #1, in SetUp().
+gtest_output_test_.cc:#: Failure
+Failed
+Expected failure #2, in the test function.
+gtest_output_test_.cc:#: Failure
+Failed
+Expected failure #3, in TearDown().
+gtest_output_test_.cc:#: Failure
+Failed
+Expected failure #4, in the test fixture d'tor.
+[0;31m[  FAILED  ] [mNonFatalFailureInSetUpTest.FailureInSetUp
+[0;32m[----------] [m1 test from FatalFailureInSetUpTest
+[0;32m[ RUN      ] [mFatalFailureInSetUpTest.FailureInSetUp
+(expecting 3 failures)
+gtest_output_test_.cc:#: Failure
+Failed
+Expected failure #1, in SetUp().
+gtest_output_test_.cc:#: Failure
+Failed
+Expected failure #2, in TearDown().
+gtest_output_test_.cc:#: Failure
+Failed
+Expected failure #3, in the test fixture d'tor.
+[0;31m[  FAILED  ] [mFatalFailureInSetUpTest.FailureInSetUp
+[0;32m[----------] [m1 test from AddFailureAtTest
+[0;32m[ RUN      ] [mAddFailureAtTest.MessageContainsSpecifiedFileAndLineNumber
+foo.cc:42: Failure
+Failed
+Expected failure in foo.cc
+[0;31m[  FAILED  ] [mAddFailureAtTest.MessageContainsSpecifiedFileAndLineNumber
+[0;32m[----------] [m4 tests from MixedUpTestCaseTest
+[0;32m[ RUN      ] [mMixedUpTestCaseTest.FirstTestFromNamespaceFoo
+[0;32m[       OK ] [mMixedUpTestCaseTest.FirstTestFromNamespaceFoo
+[0;32m[ RUN      ] [mMixedUpTestCaseTest.SecondTestFromNamespaceFoo
+[0;32m[       OK ] [mMixedUpTestCaseTest.SecondTestFromNamespaceFoo
+[0;32m[ RUN      ] [mMixedUpTestCaseTest.ThisShouldFail
+gtest.cc:#: Failure
+Failed
+All tests in the same test case must use the same test fixture
+class.  However, in test case MixedUpTestCaseTest,
+you defined test FirstTestFromNamespaceFoo and test ThisShouldFail
+using two different test fixture classes.  This can happen if
+the two classes are from different namespaces or translation
+units and have the same name.  You should probably rename one
+of the classes to put the tests into different test cases.
+[0;31m[  FAILED  ] [mMixedUpTestCaseTest.ThisShouldFail
+[0;32m[ RUN      ] [mMixedUpTestCaseTest.ThisShouldFailToo
+gtest.cc:#: Failure
+Failed
+All tests in the same test case must use the same test fixture
+class.  However, in test case MixedUpTestCaseTest,
+you defined test FirstTestFromNamespaceFoo and test ThisShouldFailToo
+using two different test fixture classes.  This can happen if
+the two classes are from different namespaces or translation
+units and have the same name.  You should probably rename one
+of the classes to put the tests into different test cases.
+[0;31m[  FAILED  ] [mMixedUpTestCaseTest.ThisShouldFailToo
+[0;32m[----------] [m2 tests from MixedUpTestCaseWithSameTestNameTest
+[0;32m[ RUN      ] [mMixedUpTestCaseWithSameTestNameTest.TheSecondTestWithThisNameShouldFail
+[0;32m[       OK ] [mMixedUpTestCaseWithSameTestNameTest.TheSecondTestWithThisNameShouldFail
+[0;32m[ RUN      ] [mMixedUpTestCaseWithSameTestNameTest.TheSecondTestWithThisNameShouldFail
+gtest.cc:#: Failure
+Failed
+All tests in the same test case must use the same test fixture
+class.  However, in test case MixedUpTestCaseWithSameTestNameTest,
+you defined test TheSecondTestWithThisNameShouldFail and test TheSecondTestWithThisNameShouldFail
+using two different test fixture classes.  This can happen if
+the two classes are from different namespaces or translation
+units and have the same name.  You should probably rename one
+of the classes to put the tests into different test cases.
+[0;31m[  FAILED  ] [mMixedUpTestCaseWithSameTestNameTest.TheSecondTestWithThisNameShouldFail
+[0;32m[----------] [m2 tests from TEST_F_before_TEST_in_same_test_case
+[0;32m[ RUN      ] [mTEST_F_before_TEST_in_same_test_case.DefinedUsingTEST_F
+[0;32m[       OK ] [mTEST_F_before_TEST_in_same_test_case.DefinedUsingTEST_F
+[0;32m[ RUN      ] [mTEST_F_before_TEST_in_same_test_case.DefinedUsingTESTAndShouldFail
+gtest.cc:#: Failure
+Failed
+All tests in the same test case must use the same test fixture
+class, so mixing TEST_F and TEST in the same test case is
+illegal.  In test case TEST_F_before_TEST_in_same_test_case,
+test DefinedUsingTEST_F is defined using TEST_F but
+test DefinedUsingTESTAndShouldFail is defined using TEST.  You probably
+want to change the TEST to TEST_F or move it to another test
+case.
+[0;31m[  FAILED  ] [mTEST_F_before_TEST_in_same_test_case.DefinedUsingTESTAndShouldFail
+[0;32m[----------] [m2 tests from TEST_before_TEST_F_in_same_test_case
+[0;32m[ RUN      ] [mTEST_before_TEST_F_in_same_test_case.DefinedUsingTEST
+[0;32m[       OK ] [mTEST_before_TEST_F_in_same_test_case.DefinedUsingTEST
+[0;32m[ RUN      ] [mTEST_before_TEST_F_in_same_test_case.DefinedUsingTEST_FAndShouldFail
+gtest.cc:#: Failure
+Failed
+All tests in the same test case must use the same test fixture
+class, so mixing TEST_F and TEST in the same test case is
+illegal.  In test case TEST_before_TEST_F_in_same_test_case,
+test DefinedUsingTEST_FAndShouldFail is defined using TEST_F but
+test DefinedUsingTEST is defined using TEST.  You probably
+want to change the TEST to TEST_F or move it to another test
+case.
+[0;31m[  FAILED  ] [mTEST_before_TEST_F_in_same_test_case.DefinedUsingTEST_FAndShouldFail
+[0;32m[----------] [m8 tests from ExpectNonfatalFailureTest
+[0;32m[ RUN      ] [mExpectNonfatalFailureTest.CanReferenceGlobalVariables
+[0;32m[       OK ] [mExpectNonfatalFailureTest.CanReferenceGlobalVariables
+[0;32m[ RUN      ] [mExpectNonfatalFailureTest.CanReferenceLocalVariables
+[0;32m[       OK ] [mExpectNonfatalFailureTest.CanReferenceLocalVariables
+[0;32m[ RUN      ] [mExpectNonfatalFailureTest.SucceedsWhenThereIsOneNonfatalFailure
+[0;32m[       OK ] [mExpectNonfatalFailureTest.SucceedsWhenThereIsOneNonfatalFailure
+[0;32m[ RUN      ] [mExpectNonfatalFailureTest.FailsWhenThereIsNoNonfatalFailure
+(expecting a failure)
+gtest.cc:#: Failure
+Expected: 1 non-fatal failure
+  Actual: 0 failures
+[0;31m[  FAILED  ] [mExpectNonfatalFailureTest.FailsWhenThereIsNoNonfatalFailure
+[0;32m[ RUN      ] [mExpectNonfatalFailureTest.FailsWhenThereAreTwoNonfatalFailures
+(expecting a failure)
+gtest.cc:#: Failure
+Expected: 1 non-fatal failure
+  Actual: 2 failures
+gtest_output_test_.cc:#: Non-fatal failure:
+Failed
+Expected non-fatal failure 1.
+
+gtest_output_test_.cc:#: Non-fatal failure:
+Failed
+Expected non-fatal failure 2.
+
+[0;31m[  FAILED  ] [mExpectNonfatalFailureTest.FailsWhenThereAreTwoNonfatalFailures
+[0;32m[ RUN      ] [mExpectNonfatalFailureTest.FailsWhenThereIsOneFatalFailure
+(expecting a failure)
+gtest.cc:#: Failure
+Expected: 1 non-fatal failure
+  Actual:
+gtest_output_test_.cc:#: Fatal failure:
+Failed
+Expected fatal failure.
+
+[0;31m[  FAILED  ] [mExpectNonfatalFailureTest.FailsWhenThereIsOneFatalFailure
+[0;32m[ RUN      ] [mExpectNonfatalFailureTest.FailsWhenStatementReturns
+(expecting a failure)
+gtest.cc:#: Failure
+Expected: 1 non-fatal failure
+  Actual: 0 failures
+[0;31m[  FAILED  ] [mExpectNonfatalFailureTest.FailsWhenStatementReturns
+[0;32m[ RUN      ] [mExpectNonfatalFailureTest.FailsWhenStatementThrows
+(expecting a failure)
+gtest.cc:#: Failure
+Expected: 1 non-fatal failure
+  Actual: 0 failures
+[0;31m[  FAILED  ] [mExpectNonfatalFailureTest.FailsWhenStatementThrows
+[0;32m[----------] [m8 tests from ExpectFatalFailureTest
+[0;32m[ RUN      ] [mExpectFatalFailureTest.CanReferenceGlobalVariables
+[0;32m[       OK ] [mExpectFatalFailureTest.CanReferenceGlobalVariables
+[0;32m[ RUN      ] [mExpectFatalFailureTest.CanReferenceLocalStaticVariables
+[0;32m[       OK ] [mExpectFatalFailureTest.CanReferenceLocalStaticVariables
+[0;32m[ RUN      ] [mExpectFatalFailureTest.SucceedsWhenThereIsOneFatalFailure
+[0;32m[       OK ] [mExpectFatalFailureTest.SucceedsWhenThereIsOneFatalFailure
+[0;32m[ RUN      ] [mExpectFatalFailureTest.FailsWhenThereIsNoFatalFailure
+(expecting a failure)
+gtest.cc:#: Failure
+Expected: 1 fatal failure
+  Actual: 0 failures
+[0;31m[  FAILED  ] [mExpectFatalFailureTest.FailsWhenThereIsNoFatalFailure
+[0;32m[ RUN      ] [mExpectFatalFailureTest.FailsWhenThereAreTwoFatalFailures
+(expecting a failure)
+gtest.cc:#: Failure
+Expected: 1 fatal failure
+  Actual: 2 failures
+gtest_output_test_.cc:#: Fatal failure:
+Failed
+Expected fatal failure.
+
+gtest_output_test_.cc:#: Fatal failure:
+Failed
+Expected fatal failure.
+
+[0;31m[  FAILED  ] [mExpectFatalFailureTest.FailsWhenThereAreTwoFatalFailures
+[0;32m[ RUN      ] [mExpectFatalFailureTest.FailsWhenThereIsOneNonfatalFailure
+(expecting a failure)
+gtest.cc:#: Failure
+Expected: 1 fatal failure
+  Actual:
+gtest_output_test_.cc:#: Non-fatal failure:
+Failed
+Expected non-fatal failure.
+
+[0;31m[  FAILED  ] [mExpectFatalFailureTest.FailsWhenThereIsOneNonfatalFailure
+[0;32m[ RUN      ] [mExpectFatalFailureTest.FailsWhenStatementReturns
+(expecting a failure)
+gtest.cc:#: Failure
+Expected: 1 fatal failure
+  Actual: 0 failures
+[0;31m[  FAILED  ] [mExpectFatalFailureTest.FailsWhenStatementReturns
+[0;32m[ RUN      ] [mExpectFatalFailureTest.FailsWhenStatementThrows
+(expecting a failure)
+gtest.cc:#: Failure
+Expected: 1 fatal failure
+  Actual: 0 failures
+[0;31m[  FAILED  ] [mExpectFatalFailureTest.FailsWhenStatementThrows
+[0;32m[----------] [m2 tests from TypedTest/0, where TypeParam = int
+[0;32m[ RUN      ] [mTypedTest/0.Success
+[0;32m[       OK ] [mTypedTest/0.Success
+[0;32m[ RUN      ] [mTypedTest/0.Failure
+gtest_output_test_.cc:#: Failure
+Value of: TypeParam()
+  Actual: 0
+Expected: 1
+Expected failure
+[0;31m[  FAILED  ] [mTypedTest/0.Failure, where TypeParam = int
+[0;32m[----------] [m2 tests from Unsigned/TypedTestP/0, where TypeParam = unsigned char
+[0;32m[ RUN      ] [mUnsigned/TypedTestP/0.Success
+[0;32m[       OK ] [mUnsigned/TypedTestP/0.Success
+[0;32m[ RUN      ] [mUnsigned/TypedTestP/0.Failure
+gtest_output_test_.cc:#: Failure
+Value of: TypeParam()
+  Actual: '\0'
+Expected: 1U
+Which is: 1
+Expected failure
+[0;31m[  FAILED  ] [mUnsigned/TypedTestP/0.Failure, where TypeParam = unsigned char
+[0;32m[----------] [m2 tests from Unsigned/TypedTestP/1, where TypeParam = unsigned int
+[0;32m[ RUN      ] [mUnsigned/TypedTestP/1.Success
+[0;32m[       OK ] [mUnsigned/TypedTestP/1.Success
+[0;32m[ RUN      ] [mUnsigned/TypedTestP/1.Failure
+gtest_output_test_.cc:#: Failure
+Value of: TypeParam()
+  Actual: 0
+Expected: 1U
+Which is: 1
+Expected failure
+[0;31m[  FAILED  ] [mUnsigned/TypedTestP/1.Failure, where TypeParam = unsigned int
+[0;32m[----------] [m4 tests from ExpectFailureTest
+[0;32m[ RUN      ] [mExpectFailureTest.ExpectFatalFailure
+(expecting 1 failure)
+gtest.cc:#: Failure
+Expected: 1 fatal failure
+  Actual:
+gtest_output_test_.cc:#: Success:
+Succeeded
+
+(expecting 1 failure)
+gtest.cc:#: Failure
+Expected: 1 fatal failure
+  Actual:
+gtest_output_test_.cc:#: Non-fatal failure:
+Failed
+Expected non-fatal failure.
+
+(expecting 1 failure)
+gtest.cc:#: Failure
+Expected: 1 fatal failure containing "Some other fatal failure expected."
+  Actual:
+gtest_output_test_.cc:#: Fatal failure:
+Failed
+Expected fatal failure.
+
+[0;31m[  FAILED  ] [mExpectFailureTest.ExpectFatalFailure
+[0;32m[ RUN      ] [mExpectFailureTest.ExpectNonFatalFailure
+(expecting 1 failure)
+gtest.cc:#: Failure
+Expected: 1 non-fatal failure
+  Actual:
+gtest_output_test_.cc:#: Success:
+Succeeded
+
+(expecting 1 failure)
+gtest.cc:#: Failure
+Expected: 1 non-fatal failure
+  Actual:
+gtest_output_test_.cc:#: Fatal failure:
+Failed
+Expected fatal failure.
+
+(expecting 1 failure)
+gtest.cc:#: Failure
+Expected: 1 non-fatal failure containing "Some other non-fatal failure."
+  Actual:
+gtest_output_test_.cc:#: Non-fatal failure:
+Failed
+Expected non-fatal failure.
+
+[0;31m[  FAILED  ] [mExpectFailureTest.ExpectNonFatalFailure
+[0;32m[ RUN      ] [mExpectFailureTest.ExpectFatalFailureOnAllThreads
+(expecting 1 failure)
+gtest.cc:#: Failure
+Expected: 1 fatal failure
+  Actual:
+gtest_output_test_.cc:#: Success:
+Succeeded
+
+(expecting 1 failure)
+gtest.cc:#: Failure
+Expected: 1 fatal failure
+  Actual:
+gtest_output_test_.cc:#: Non-fatal failure:
+Failed
+Expected non-fatal failure.
+
+(expecting 1 failure)
+gtest.cc:#: Failure
+Expected: 1 fatal failure containing "Some other fatal failure expected."
+  Actual:
+gtest_output_test_.cc:#: Fatal failure:
+Failed
+Expected fatal failure.
+
+[0;31m[  FAILED  ] [mExpectFailureTest.ExpectFatalFailureOnAllThreads
+[0;32m[ RUN      ] [mExpectFailureTest.ExpectNonFatalFailureOnAllThreads
+(expecting 1 failure)
+gtest.cc:#: Failure
+Expected: 1 non-fatal failure
+  Actual:
+gtest_output_test_.cc:#: Success:
+Succeeded
+
+(expecting 1 failure)
+gtest.cc:#: Failure
+Expected: 1 non-fatal failure
+  Actual:
+gtest_output_test_.cc:#: Fatal failure:
+Failed
+Expected fatal failure.
+
+(expecting 1 failure)
+gtest.cc:#: Failure
+Expected: 1 non-fatal failure containing "Some other non-fatal failure."
+  Actual:
+gtest_output_test_.cc:#: Non-fatal failure:
+Failed
+Expected non-fatal failure.
+
+[0;31m[  FAILED  ] [mExpectFailureTest.ExpectNonFatalFailureOnAllThreads
+[0;32m[----------] [m2 tests from ExpectFailureWithThreadsTest
+[0;32m[ RUN      ] [mExpectFailureWithThreadsTest.ExpectFatalFailure
+(expecting 2 failures)
+gtest_output_test_.cc:#: Failure
+Failed
+Expected fatal failure.
+gtest.cc:#: Failure
+Expected: 1 fatal failure
+  Actual: 0 failures
+[0;31m[  FAILED  ] [mExpectFailureWithThreadsTest.ExpectFatalFailure
+[0;32m[ RUN      ] [mExpectFailureWithThreadsTest.ExpectNonFatalFailure
+(expecting 2 failures)
+gtest_output_test_.cc:#: Failure
+Failed
+Expected non-fatal failure.
+gtest.cc:#: Failure
+Expected: 1 non-fatal failure
+  Actual: 0 failures
+[0;31m[  FAILED  ] [mExpectFailureWithThreadsTest.ExpectNonFatalFailure
+[0;32m[----------] [m1 test from ScopedFakeTestPartResultReporterTest
+[0;32m[ RUN      ] [mScopedFakeTestPartResultReporterTest.InterceptOnlyCurrentThread
+(expecting 2 failures)
+gtest_output_test_.cc:#: Failure
+Failed
+Expected fatal failure.
+gtest_output_test_.cc:#: Failure
+Failed
+Expected non-fatal failure.
+[0;31m[  FAILED  ] [mScopedFakeTestPartResultReporterTest.InterceptOnlyCurrentThread
+[0;32m[----------] [m1 test from PrintingFailingParams/FailingParamTest
+[0;32m[ RUN      ] [mPrintingFailingParams/FailingParamTest.Fails/0
+gtest_output_test_.cc:#: Failure
+Value of: GetParam()
+  Actual: 2
+Expected: 1
+[0;31m[  FAILED  ] [mPrintingFailingParams/FailingParamTest.Fails/0, where GetParam() = 2
+[0;32m[----------] [mGlobal test environment tear-down
+BarEnvironment::TearDown() called.
+gtest_output_test_.cc:#: Failure
+Failed
+Expected non-fatal failure.
+FooEnvironment::TearDown() called.
+gtest_output_test_.cc:#: Failure
+Failed
+Expected fatal failure.
+[0;32m[==========] [m62 tests from 27 test cases ran.
+[0;32m[  PASSED  ] [m21 tests.
+[0;31m[  FAILED  ] [m41 tests, listed below:
+[0;31m[  FAILED  ] [mFatalFailureTest.FatalFailureInSubroutine
+[0;31m[  FAILED  ] [mFatalFailureTest.FatalFailureInNestedSubroutine
+[0;31m[  FAILED  ] [mFatalFailureTest.NonfatalFailureInSubroutine
+[0;31m[  FAILED  ] [mLoggingTest.InterleavingLoggingAndAssertions
+[0;31m[  FAILED  ] [mSCOPED_TRACETest.ObeysScopes
+[0;31m[  FAILED  ] [mSCOPED_TRACETest.WorksInLoop
+[0;31m[  FAILED  ] [mSCOPED_TRACETest.WorksInSubroutine
+[0;31m[  FAILED  ] [mSCOPED_TRACETest.CanBeNested
+[0;31m[  FAILED  ] [mSCOPED_TRACETest.CanBeRepeated
+[0;31m[  FAILED  ] [mSCOPED_TRACETest.WorksConcurrently
+[0;31m[  FAILED  ] [mNonFatalFailureInFixtureConstructorTest.FailureInConstructor
+[0;31m[  FAILED  ] [mFatalFailureInFixtureConstructorTest.FailureInConstructor
+[0;31m[  FAILED  ] [mNonFatalFailureInSetUpTest.FailureInSetUp
+[0;31m[  FAILED  ] [mFatalFailureInSetUpTest.FailureInSetUp
+[0;31m[  FAILED  ] [mAddFailureAtTest.MessageContainsSpecifiedFileAndLineNumber
+[0;31m[  FAILED  ] [mMixedUpTestCaseTest.ThisShouldFail
+[0;31m[  FAILED  ] [mMixedUpTestCaseTest.ThisShouldFailToo
+[0;31m[  FAILED  ] [mMixedUpTestCaseWithSameTestNameTest.TheSecondTestWithThisNameShouldFail
+[0;31m[  FAILED  ] [mTEST_F_before_TEST_in_same_test_case.DefinedUsingTESTAndShouldFail
+[0;31m[  FAILED  ] [mTEST_before_TEST_F_in_same_test_case.DefinedUsingTEST_FAndShouldFail
+[0;31m[  FAILED  ] [mExpectNonfatalFailureTest.FailsWhenThereIsNoNonfatalFailure
+[0;31m[  FAILED  ] [mExpectNonfatalFailureTest.FailsWhenThereAreTwoNonfatalFailures
+[0;31m[  FAILED  ] [mExpectNonfatalFailureTest.FailsWhenThereIsOneFatalFailure
+[0;31m[  FAILED  ] [mExpectNonfatalFailureTest.FailsWhenStatementReturns
+[0;31m[  FAILED  ] [mExpectNonfatalFailureTest.FailsWhenStatementThrows
+[0;31m[  FAILED  ] [mExpectFatalFailureTest.FailsWhenThereIsNoFatalFailure
+[0;31m[  FAILED  ] [mExpectFatalFailureTest.FailsWhenThereAreTwoFatalFailures
+[0;31m[  FAILED  ] [mExpectFatalFailureTest.FailsWhenThereIsOneNonfatalFailure
+[0;31m[  FAILED  ] [mExpectFatalFailureTest.FailsWhenStatementReturns
+[0;31m[  FAILED  ] [mExpectFatalFailureTest.FailsWhenStatementThrows
+[0;31m[  FAILED  ] [mTypedTest/0.Failure, where TypeParam = int
+[0;31m[  FAILED  ] [mUnsigned/TypedTestP/0.Failure, where TypeParam = unsigned char
+[0;31m[  FAILED  ] [mUnsigned/TypedTestP/1.Failure, where TypeParam = unsigned int
+[0;31m[  FAILED  ] [mExpectFailureTest.ExpectFatalFailure
+[0;31m[  FAILED  ] [mExpectFailureTest.ExpectNonFatalFailure
+[0;31m[  FAILED  ] [mExpectFailureTest.ExpectFatalFailureOnAllThreads
+[0;31m[  FAILED  ] [mExpectFailureTest.ExpectNonFatalFailureOnAllThreads
+[0;31m[  FAILED  ] [mExpectFailureWithThreadsTest.ExpectFatalFailure
+[0;31m[  FAILED  ] [mExpectFailureWithThreadsTest.ExpectNonFatalFailure
+[0;31m[  FAILED  ] [mScopedFakeTestPartResultReporterTest.InterceptOnlyCurrentThread
+[0;31m[  FAILED  ] [mPrintingFailingParams/FailingParamTest.Fails/0, where GetParam() = 2
+
+41 FAILED TESTS
+[0;33m  YOU HAVE 1 DISABLED TEST
+
+[mNote: Google Test filter = FatalFailureTest.*:LoggingTest.*
+[==========] Running 4 tests from 2 test cases.
+[----------] Global test environment set-up.
+[----------] 3 tests from FatalFailureTest
+[ RUN      ] FatalFailureTest.FatalFailureInSubroutine
+(expecting a failure that x should be 1)
+gtest_output_test_.cc:#: Failure
+Value of: x
+  Actual: 2
+Expected: 1
+[  FAILED  ] FatalFailureTest.FatalFailureInSubroutine (? ms)
+[ RUN      ] FatalFailureTest.FatalFailureInNestedSubroutine
+(expecting a failure that x should be 1)
+gtest_output_test_.cc:#: Failure
+Value of: x
+  Actual: 2
+Expected: 1
+[  FAILED  ] FatalFailureTest.FatalFailureInNestedSubroutine (? ms)
+[ RUN      ] FatalFailureTest.NonfatalFailureInSubroutine
+(expecting a failure on false)
+gtest_output_test_.cc:#: Failure
+Value of: false
+  Actual: false
+Expected: true
+[  FAILED  ] FatalFailureTest.NonfatalFailureInSubroutine (? ms)
+[----------] 3 tests from FatalFailureTest (? ms total)
+
+[----------] 1 test from LoggingTest
+[ RUN      ] LoggingTest.InterleavingLoggingAndAssertions
+(expecting 2 failures on (3) >= (a[i]))
+i == 0
+i == 1
+gtest_output_test_.cc:#: Failure
+Expected: (3) >= (a[i]), actual: 3 vs 9
+i == 2
+i == 3
+gtest_output_test_.cc:#: Failure
+Expected: (3) >= (a[i]), actual: 3 vs 6
+[  FAILED  ] LoggingTest.InterleavingLoggingAndAssertions (? ms)
+[----------] 1 test from LoggingTest (? ms total)
+
+[----------] Global test environment tear-down
+[==========] 4 tests from 2 test cases ran. (? ms total)
+[  PASSED  ] 0 tests.
+[  FAILED  ] 4 tests, listed below:
+[  FAILED  ] FatalFailureTest.FatalFailureInSubroutine
+[  FAILED  ] FatalFailureTest.FatalFailureInNestedSubroutine
+[  FAILED  ] FatalFailureTest.NonfatalFailureInSubroutine
+[  FAILED  ] LoggingTest.InterleavingLoggingAndAssertions
+
+ 4 FAILED TESTS
+  YOU HAVE 1 DISABLED TEST
+
+Note: Google Test filter = *DISABLED_*
+[==========] Running 1 test from 1 test case.
+[----------] Global test environment set-up.
+[----------] 1 test from DisabledTestsWarningTest
+[ RUN      ] DisabledTestsWarningTest.DISABLED_AlsoRunDisabledTestsFlagSuppressesWarning
+[       OK ] DisabledTestsWarningTest.DISABLED_AlsoRunDisabledTestsFlagSuppressesWarning
+[----------] Global test environment tear-down
+[==========] 1 test from 1 test case ran.
+[  PASSED  ] 1 test.
+Note: Google Test filter = PassingTest.*
+Note: This is test shard 2 of 2.
+[==========] Running 1 test from 1 test case.
+[----------] Global test environment set-up.
+[----------] 1 test from PassingTest
+[ RUN      ] PassingTest.PassingTest2
+[       OK ] PassingTest.PassingTest2
+[----------] Global test environment tear-down
+[==========] 1 test from 1 test case ran.
+[  PASSED  ] 1 test.
+
+  YOU HAVE 1 DISABLED TEST
+
diff --git a/google-breakpad/src/testing/gtest/test/gtest_pred_impl_unittest.cc b/google-breakpad/src/testing/gtest/test/gtest_pred_impl_unittest.cc
new file mode 100644
index 0000000..a84eff8
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest_pred_impl_unittest.cc
@@ -0,0 +1,2427 @@
+// Copyright 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// This file is AUTOMATICALLY GENERATED on 10/31/2011 by command
+// 'gen_gtest_pred_impl.py 5'.  DO NOT EDIT BY HAND!
+
+// Regression test for gtest_pred_impl.h
+//
+// This file is generated by a script and quite long.  If you intend to
+// learn how Google Test works by reading its unit tests, read
+// gtest_unittest.cc instead.
+//
+// This is intended as a regression test for the Google Test predicate
+// assertions.  We compile it as part of the gtest_unittest target
+// only to keep the implementation tidy and compact, as it is quite
+// involved to set up the stage for testing Google Test using Google
+// Test itself.
+//
+// Currently, gtest_unittest takes ~11 seconds to run in the testing
+// daemon.  In the future, if it grows too large and needs much more
+// time to finish, we should consider separating this file into a
+// stand-alone regression test.
+
+#include <iostream>
+
+#include "gtest/gtest.h"
+#include "gtest/gtest-spi.h"
+
+// A user-defined data type.
+struct Bool {
+  explicit Bool(int val) : value(val != 0) {}
+
+  bool operator>(int n) const { return value > Bool(n).value; }
+
+  Bool operator+(const Bool& rhs) const { return Bool(value + rhs.value); }
+
+  bool operator==(const Bool& rhs) const { return value == rhs.value; }
+
+  bool value;
+};
+
+// Enables Bool to be used in assertions.
+std::ostream& operator<<(std::ostream& os, const Bool& x) {
+  return os << (x.value ? "true" : "false");
+}
+
+// Sample functions/functors for testing unary predicate assertions.
+
+// A unary predicate function.
+template <typename T1>
+bool PredFunction1(T1 v1) {
+  return v1 > 0;
+}
+
+// The following two functions are needed to circumvent a bug in
+// gcc 2.95.3, which sometimes has problem with the above template
+// function.
+bool PredFunction1Int(int v1) {
+  return v1 > 0;
+}
+bool PredFunction1Bool(Bool v1) {
+  return v1 > 0;
+}
+
+// A unary predicate functor.
+struct PredFunctor1 {
+  template <typename T1>
+  bool operator()(const T1& v1) {
+    return v1 > 0;
+  }
+};
+
+// A unary predicate-formatter function.
+template <typename T1>
+testing::AssertionResult PredFormatFunction1(const char* e1,
+                                             const T1& v1) {
+  if (PredFunction1(v1))
+    return testing::AssertionSuccess();
+
+  return testing::AssertionFailure()
+      << e1
+      << " is expected to be positive, but evaluates to "
+      << v1 << ".";
+}
+
+// A unary predicate-formatter functor.
+struct PredFormatFunctor1 {
+  template <typename T1>
+  testing::AssertionResult operator()(const char* e1,
+                                      const T1& v1) const {
+    return PredFormatFunction1(e1, v1);
+  }
+};
+
+// Tests for {EXPECT|ASSERT}_PRED_FORMAT1.
+
+class Predicate1Test : public testing::Test {
+ protected:
+  virtual void SetUp() {
+    expected_to_finish_ = true;
+    finished_ = false;
+    n1_ = 0;
+  }
+
+  virtual void TearDown() {
+    // Verifies that each of the predicate's arguments was evaluated
+    // exactly once.
+    EXPECT_EQ(1, n1_) <<
+        "The predicate assertion didn't evaluate argument 2 "
+        "exactly once.";
+
+    // Verifies that the control flow in the test function is expected.
+    if (expected_to_finish_ && !finished_) {
+      FAIL() << "The predicate assertion unexpactedly aborted the test.";
+    } else if (!expected_to_finish_ && finished_) {
+      FAIL() << "The failed predicate assertion didn't abort the test "
+                "as expected.";
+    }
+  }
+
+  // true iff the test function is expected to run to finish.
+  static bool expected_to_finish_;
+
+  // true iff the test function did run to finish.
+  static bool finished_;
+
+  static int n1_;
+};
+
+bool Predicate1Test::expected_to_finish_;
+bool Predicate1Test::finished_;
+int Predicate1Test::n1_;
+
+typedef Predicate1Test EXPECT_PRED_FORMAT1Test;
+typedef Predicate1Test ASSERT_PRED_FORMAT1Test;
+typedef Predicate1Test EXPECT_PRED1Test;
+typedef Predicate1Test ASSERT_PRED1Test;
+
+// Tests a successful EXPECT_PRED1 where the
+// predicate-formatter is a function on a built-in type (int).
+TEST_F(EXPECT_PRED1Test, FunctionOnBuiltInTypeSuccess) {
+  EXPECT_PRED1(PredFunction1Int,
+               ++n1_);
+  finished_ = true;
+}
+
+// Tests a successful EXPECT_PRED1 where the
+// predicate-formatter is a function on a user-defined type (Bool).
+TEST_F(EXPECT_PRED1Test, FunctionOnUserTypeSuccess) {
+  EXPECT_PRED1(PredFunction1Bool,
+               Bool(++n1_));
+  finished_ = true;
+}
+
+// Tests a successful EXPECT_PRED1 where the
+// predicate-formatter is a functor on a built-in type (int).
+TEST_F(EXPECT_PRED1Test, FunctorOnBuiltInTypeSuccess) {
+  EXPECT_PRED1(PredFunctor1(),
+               ++n1_);
+  finished_ = true;
+}
+
+// Tests a successful EXPECT_PRED1 where the
+// predicate-formatter is a functor on a user-defined type (Bool).
+TEST_F(EXPECT_PRED1Test, FunctorOnUserTypeSuccess) {
+  EXPECT_PRED1(PredFunctor1(),
+               Bool(++n1_));
+  finished_ = true;
+}
+
+// Tests a failed EXPECT_PRED1 where the
+// predicate-formatter is a function on a built-in type (int).
+TEST_F(EXPECT_PRED1Test, FunctionOnBuiltInTypeFailure) {
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_PRED1(PredFunction1Int,
+                 n1_++);
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed EXPECT_PRED1 where the
+// predicate-formatter is a function on a user-defined type (Bool).
+TEST_F(EXPECT_PRED1Test, FunctionOnUserTypeFailure) {
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_PRED1(PredFunction1Bool,
+                 Bool(n1_++));
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed EXPECT_PRED1 where the
+// predicate-formatter is a functor on a built-in type (int).
+TEST_F(EXPECT_PRED1Test, FunctorOnBuiltInTypeFailure) {
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_PRED1(PredFunctor1(),
+                 n1_++);
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed EXPECT_PRED1 where the
+// predicate-formatter is a functor on a user-defined type (Bool).
+TEST_F(EXPECT_PRED1Test, FunctorOnUserTypeFailure) {
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_PRED1(PredFunctor1(),
+                 Bool(n1_++));
+    finished_ = true;
+  }, "");
+}
+
+// Tests a successful ASSERT_PRED1 where the
+// predicate-formatter is a function on a built-in type (int).
+TEST_F(ASSERT_PRED1Test, FunctionOnBuiltInTypeSuccess) {
+  ASSERT_PRED1(PredFunction1Int,
+               ++n1_);
+  finished_ = true;
+}
+
+// Tests a successful ASSERT_PRED1 where the
+// predicate-formatter is a function on a user-defined type (Bool).
+TEST_F(ASSERT_PRED1Test, FunctionOnUserTypeSuccess) {
+  ASSERT_PRED1(PredFunction1Bool,
+               Bool(++n1_));
+  finished_ = true;
+}
+
+// Tests a successful ASSERT_PRED1 where the
+// predicate-formatter is a functor on a built-in type (int).
+TEST_F(ASSERT_PRED1Test, FunctorOnBuiltInTypeSuccess) {
+  ASSERT_PRED1(PredFunctor1(),
+               ++n1_);
+  finished_ = true;
+}
+
+// Tests a successful ASSERT_PRED1 where the
+// predicate-formatter is a functor on a user-defined type (Bool).
+TEST_F(ASSERT_PRED1Test, FunctorOnUserTypeSuccess) {
+  ASSERT_PRED1(PredFunctor1(),
+               Bool(++n1_));
+  finished_ = true;
+}
+
+// Tests a failed ASSERT_PRED1 where the
+// predicate-formatter is a function on a built-in type (int).
+TEST_F(ASSERT_PRED1Test, FunctionOnBuiltInTypeFailure) {
+  expected_to_finish_ = false;
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_PRED1(PredFunction1Int,
+                 n1_++);
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed ASSERT_PRED1 where the
+// predicate-formatter is a function on a user-defined type (Bool).
+TEST_F(ASSERT_PRED1Test, FunctionOnUserTypeFailure) {
+  expected_to_finish_ = false;
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_PRED1(PredFunction1Bool,
+                 Bool(n1_++));
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed ASSERT_PRED1 where the
+// predicate-formatter is a functor on a built-in type (int).
+TEST_F(ASSERT_PRED1Test, FunctorOnBuiltInTypeFailure) {
+  expected_to_finish_ = false;
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_PRED1(PredFunctor1(),
+                 n1_++);
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed ASSERT_PRED1 where the
+// predicate-formatter is a functor on a user-defined type (Bool).
+TEST_F(ASSERT_PRED1Test, FunctorOnUserTypeFailure) {
+  expected_to_finish_ = false;
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_PRED1(PredFunctor1(),
+                 Bool(n1_++));
+    finished_ = true;
+  }, "");
+}
+
+// Tests a successful EXPECT_PRED_FORMAT1 where the
+// predicate-formatter is a function on a built-in type (int).
+TEST_F(EXPECT_PRED_FORMAT1Test, FunctionOnBuiltInTypeSuccess) {
+  EXPECT_PRED_FORMAT1(PredFormatFunction1,
+                      ++n1_);
+  finished_ = true;
+}
+
+// Tests a successful EXPECT_PRED_FORMAT1 where the
+// predicate-formatter is a function on a user-defined type (Bool).
+TEST_F(EXPECT_PRED_FORMAT1Test, FunctionOnUserTypeSuccess) {
+  EXPECT_PRED_FORMAT1(PredFormatFunction1,
+                      Bool(++n1_));
+  finished_ = true;
+}
+
+// Tests a successful EXPECT_PRED_FORMAT1 where the
+// predicate-formatter is a functor on a built-in type (int).
+TEST_F(EXPECT_PRED_FORMAT1Test, FunctorOnBuiltInTypeSuccess) {
+  EXPECT_PRED_FORMAT1(PredFormatFunctor1(),
+                      ++n1_);
+  finished_ = true;
+}
+
+// Tests a successful EXPECT_PRED_FORMAT1 where the
+// predicate-formatter is a functor on a user-defined type (Bool).
+TEST_F(EXPECT_PRED_FORMAT1Test, FunctorOnUserTypeSuccess) {
+  EXPECT_PRED_FORMAT1(PredFormatFunctor1(),
+                      Bool(++n1_));
+  finished_ = true;
+}
+
+// Tests a failed EXPECT_PRED_FORMAT1 where the
+// predicate-formatter is a function on a built-in type (int).
+TEST_F(EXPECT_PRED_FORMAT1Test, FunctionOnBuiltInTypeFailure) {
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_PRED_FORMAT1(PredFormatFunction1,
+                        n1_++);
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed EXPECT_PRED_FORMAT1 where the
+// predicate-formatter is a function on a user-defined type (Bool).
+TEST_F(EXPECT_PRED_FORMAT1Test, FunctionOnUserTypeFailure) {
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_PRED_FORMAT1(PredFormatFunction1,
+                        Bool(n1_++));
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed EXPECT_PRED_FORMAT1 where the
+// predicate-formatter is a functor on a built-in type (int).
+TEST_F(EXPECT_PRED_FORMAT1Test, FunctorOnBuiltInTypeFailure) {
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_PRED_FORMAT1(PredFormatFunctor1(),
+                        n1_++);
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed EXPECT_PRED_FORMAT1 where the
+// predicate-formatter is a functor on a user-defined type (Bool).
+TEST_F(EXPECT_PRED_FORMAT1Test, FunctorOnUserTypeFailure) {
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_PRED_FORMAT1(PredFormatFunctor1(),
+                        Bool(n1_++));
+    finished_ = true;
+  }, "");
+}
+
+// Tests a successful ASSERT_PRED_FORMAT1 where the
+// predicate-formatter is a function on a built-in type (int).
+TEST_F(ASSERT_PRED_FORMAT1Test, FunctionOnBuiltInTypeSuccess) {
+  ASSERT_PRED_FORMAT1(PredFormatFunction1,
+                      ++n1_);
+  finished_ = true;
+}
+
+// Tests a successful ASSERT_PRED_FORMAT1 where the
+// predicate-formatter is a function on a user-defined type (Bool).
+TEST_F(ASSERT_PRED_FORMAT1Test, FunctionOnUserTypeSuccess) {
+  ASSERT_PRED_FORMAT1(PredFormatFunction1,
+                      Bool(++n1_));
+  finished_ = true;
+}
+
+// Tests a successful ASSERT_PRED_FORMAT1 where the
+// predicate-formatter is a functor on a built-in type (int).
+TEST_F(ASSERT_PRED_FORMAT1Test, FunctorOnBuiltInTypeSuccess) {
+  ASSERT_PRED_FORMAT1(PredFormatFunctor1(),
+                      ++n1_);
+  finished_ = true;
+}
+
+// Tests a successful ASSERT_PRED_FORMAT1 where the
+// predicate-formatter is a functor on a user-defined type (Bool).
+TEST_F(ASSERT_PRED_FORMAT1Test, FunctorOnUserTypeSuccess) {
+  ASSERT_PRED_FORMAT1(PredFormatFunctor1(),
+                      Bool(++n1_));
+  finished_ = true;
+}
+
+// Tests a failed ASSERT_PRED_FORMAT1 where the
+// predicate-formatter is a function on a built-in type (int).
+TEST_F(ASSERT_PRED_FORMAT1Test, FunctionOnBuiltInTypeFailure) {
+  expected_to_finish_ = false;
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_PRED_FORMAT1(PredFormatFunction1,
+                        n1_++);
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed ASSERT_PRED_FORMAT1 where the
+// predicate-formatter is a function on a user-defined type (Bool).
+TEST_F(ASSERT_PRED_FORMAT1Test, FunctionOnUserTypeFailure) {
+  expected_to_finish_ = false;
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_PRED_FORMAT1(PredFormatFunction1,
+                        Bool(n1_++));
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed ASSERT_PRED_FORMAT1 where the
+// predicate-formatter is a functor on a built-in type (int).
+TEST_F(ASSERT_PRED_FORMAT1Test, FunctorOnBuiltInTypeFailure) {
+  expected_to_finish_ = false;
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_PRED_FORMAT1(PredFormatFunctor1(),
+                        n1_++);
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed ASSERT_PRED_FORMAT1 where the
+// predicate-formatter is a functor on a user-defined type (Bool).
+TEST_F(ASSERT_PRED_FORMAT1Test, FunctorOnUserTypeFailure) {
+  expected_to_finish_ = false;
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_PRED_FORMAT1(PredFormatFunctor1(),
+                        Bool(n1_++));
+    finished_ = true;
+  }, "");
+}
+// Sample functions/functors for testing binary predicate assertions.
+
+// A binary predicate function.
+template <typename T1, typename T2>
+bool PredFunction2(T1 v1, T2 v2) {
+  return v1 + v2 > 0;
+}
+
+// The following two functions are needed to circumvent a bug in
+// gcc 2.95.3, which sometimes has problem with the above template
+// function.
+bool PredFunction2Int(int v1, int v2) {
+  return v1 + v2 > 0;
+}
+bool PredFunction2Bool(Bool v1, Bool v2) {
+  return v1 + v2 > 0;
+}
+
+// A binary predicate functor.
+struct PredFunctor2 {
+  template <typename T1, typename T2>
+  bool operator()(const T1& v1,
+                  const T2& v2) {
+    return v1 + v2 > 0;
+  }
+};
+
+// A binary predicate-formatter function.
+template <typename T1, typename T2>
+testing::AssertionResult PredFormatFunction2(const char* e1,
+                                             const char* e2,
+                                             const T1& v1,
+                                             const T2& v2) {
+  if (PredFunction2(v1, v2))
+    return testing::AssertionSuccess();
+
+  return testing::AssertionFailure()
+      << e1 << " + " << e2
+      << " is expected to be positive, but evaluates to "
+      << v1 + v2 << ".";
+}
+
+// A binary predicate-formatter functor.
+struct PredFormatFunctor2 {
+  template <typename T1, typename T2>
+  testing::AssertionResult operator()(const char* e1,
+                                      const char* e2,
+                                      const T1& v1,
+                                      const T2& v2) const {
+    return PredFormatFunction2(e1, e2, v1, v2);
+  }
+};
+
+// Tests for {EXPECT|ASSERT}_PRED_FORMAT2.
+
+class Predicate2Test : public testing::Test {
+ protected:
+  virtual void SetUp() {
+    expected_to_finish_ = true;
+    finished_ = false;
+    n1_ = n2_ = 0;
+  }
+
+  virtual void TearDown() {
+    // Verifies that each of the predicate's arguments was evaluated
+    // exactly once.
+    EXPECT_EQ(1, n1_) <<
+        "The predicate assertion didn't evaluate argument 2 "
+        "exactly once.";
+    EXPECT_EQ(1, n2_) <<
+        "The predicate assertion didn't evaluate argument 3 "
+        "exactly once.";
+
+    // Verifies that the control flow in the test function is expected.
+    if (expected_to_finish_ && !finished_) {
+      FAIL() << "The predicate assertion unexpactedly aborted the test.";
+    } else if (!expected_to_finish_ && finished_) {
+      FAIL() << "The failed predicate assertion didn't abort the test "
+                "as expected.";
+    }
+  }
+
+  // true iff the test function is expected to run to finish.
+  static bool expected_to_finish_;
+
+  // true iff the test function did run to finish.
+  static bool finished_;
+
+  static int n1_;
+  static int n2_;
+};
+
+bool Predicate2Test::expected_to_finish_;
+bool Predicate2Test::finished_;
+int Predicate2Test::n1_;
+int Predicate2Test::n2_;
+
+typedef Predicate2Test EXPECT_PRED_FORMAT2Test;
+typedef Predicate2Test ASSERT_PRED_FORMAT2Test;
+typedef Predicate2Test EXPECT_PRED2Test;
+typedef Predicate2Test ASSERT_PRED2Test;
+
+// Tests a successful EXPECT_PRED2 where the
+// predicate-formatter is a function on a built-in type (int).
+TEST_F(EXPECT_PRED2Test, FunctionOnBuiltInTypeSuccess) {
+  EXPECT_PRED2(PredFunction2Int,
+               ++n1_,
+               ++n2_);
+  finished_ = true;
+}
+
+// Tests a successful EXPECT_PRED2 where the
+// predicate-formatter is a function on a user-defined type (Bool).
+TEST_F(EXPECT_PRED2Test, FunctionOnUserTypeSuccess) {
+  EXPECT_PRED2(PredFunction2Bool,
+               Bool(++n1_),
+               Bool(++n2_));
+  finished_ = true;
+}
+
+// Tests a successful EXPECT_PRED2 where the
+// predicate-formatter is a functor on a built-in type (int).
+TEST_F(EXPECT_PRED2Test, FunctorOnBuiltInTypeSuccess) {
+  EXPECT_PRED2(PredFunctor2(),
+               ++n1_,
+               ++n2_);
+  finished_ = true;
+}
+
+// Tests a successful EXPECT_PRED2 where the
+// predicate-formatter is a functor on a user-defined type (Bool).
+TEST_F(EXPECT_PRED2Test, FunctorOnUserTypeSuccess) {
+  EXPECT_PRED2(PredFunctor2(),
+               Bool(++n1_),
+               Bool(++n2_));
+  finished_ = true;
+}
+
+// Tests a failed EXPECT_PRED2 where the
+// predicate-formatter is a function on a built-in type (int).
+TEST_F(EXPECT_PRED2Test, FunctionOnBuiltInTypeFailure) {
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_PRED2(PredFunction2Int,
+                 n1_++,
+                 n2_++);
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed EXPECT_PRED2 where the
+// predicate-formatter is a function on a user-defined type (Bool).
+TEST_F(EXPECT_PRED2Test, FunctionOnUserTypeFailure) {
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_PRED2(PredFunction2Bool,
+                 Bool(n1_++),
+                 Bool(n2_++));
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed EXPECT_PRED2 where the
+// predicate-formatter is a functor on a built-in type (int).
+TEST_F(EXPECT_PRED2Test, FunctorOnBuiltInTypeFailure) {
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_PRED2(PredFunctor2(),
+                 n1_++,
+                 n2_++);
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed EXPECT_PRED2 where the
+// predicate-formatter is a functor on a user-defined type (Bool).
+TEST_F(EXPECT_PRED2Test, FunctorOnUserTypeFailure) {
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_PRED2(PredFunctor2(),
+                 Bool(n1_++),
+                 Bool(n2_++));
+    finished_ = true;
+  }, "");
+}
+
+// Tests a successful ASSERT_PRED2 where the
+// predicate-formatter is a function on a built-in type (int).
+TEST_F(ASSERT_PRED2Test, FunctionOnBuiltInTypeSuccess) {
+  ASSERT_PRED2(PredFunction2Int,
+               ++n1_,
+               ++n2_);
+  finished_ = true;
+}
+
+// Tests a successful ASSERT_PRED2 where the
+// predicate-formatter is a function on a user-defined type (Bool).
+TEST_F(ASSERT_PRED2Test, FunctionOnUserTypeSuccess) {
+  ASSERT_PRED2(PredFunction2Bool,
+               Bool(++n1_),
+               Bool(++n2_));
+  finished_ = true;
+}
+
+// Tests a successful ASSERT_PRED2 where the
+// predicate-formatter is a functor on a built-in type (int).
+TEST_F(ASSERT_PRED2Test, FunctorOnBuiltInTypeSuccess) {
+  ASSERT_PRED2(PredFunctor2(),
+               ++n1_,
+               ++n2_);
+  finished_ = true;
+}
+
+// Tests a successful ASSERT_PRED2 where the
+// predicate-formatter is a functor on a user-defined type (Bool).
+TEST_F(ASSERT_PRED2Test, FunctorOnUserTypeSuccess) {
+  ASSERT_PRED2(PredFunctor2(),
+               Bool(++n1_),
+               Bool(++n2_));
+  finished_ = true;
+}
+
+// Tests a failed ASSERT_PRED2 where the
+// predicate-formatter is a function on a built-in type (int).
+TEST_F(ASSERT_PRED2Test, FunctionOnBuiltInTypeFailure) {
+  expected_to_finish_ = false;
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_PRED2(PredFunction2Int,
+                 n1_++,
+                 n2_++);
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed ASSERT_PRED2 where the
+// predicate-formatter is a function on a user-defined type (Bool).
+TEST_F(ASSERT_PRED2Test, FunctionOnUserTypeFailure) {
+  expected_to_finish_ = false;
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_PRED2(PredFunction2Bool,
+                 Bool(n1_++),
+                 Bool(n2_++));
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed ASSERT_PRED2 where the
+// predicate-formatter is a functor on a built-in type (int).
+TEST_F(ASSERT_PRED2Test, FunctorOnBuiltInTypeFailure) {
+  expected_to_finish_ = false;
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_PRED2(PredFunctor2(),
+                 n1_++,
+                 n2_++);
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed ASSERT_PRED2 where the
+// predicate-formatter is a functor on a user-defined type (Bool).
+TEST_F(ASSERT_PRED2Test, FunctorOnUserTypeFailure) {
+  expected_to_finish_ = false;
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_PRED2(PredFunctor2(),
+                 Bool(n1_++),
+                 Bool(n2_++));
+    finished_ = true;
+  }, "");
+}
+
+// Tests a successful EXPECT_PRED_FORMAT2 where the
+// predicate-formatter is a function on a built-in type (int).
+TEST_F(EXPECT_PRED_FORMAT2Test, FunctionOnBuiltInTypeSuccess) {
+  EXPECT_PRED_FORMAT2(PredFormatFunction2,
+                      ++n1_,
+                      ++n2_);
+  finished_ = true;
+}
+
+// Tests a successful EXPECT_PRED_FORMAT2 where the
+// predicate-formatter is a function on a user-defined type (Bool).
+TEST_F(EXPECT_PRED_FORMAT2Test, FunctionOnUserTypeSuccess) {
+  EXPECT_PRED_FORMAT2(PredFormatFunction2,
+                      Bool(++n1_),
+                      Bool(++n2_));
+  finished_ = true;
+}
+
+// Tests a successful EXPECT_PRED_FORMAT2 where the
+// predicate-formatter is a functor on a built-in type (int).
+TEST_F(EXPECT_PRED_FORMAT2Test, FunctorOnBuiltInTypeSuccess) {
+  EXPECT_PRED_FORMAT2(PredFormatFunctor2(),
+                      ++n1_,
+                      ++n2_);
+  finished_ = true;
+}
+
+// Tests a successful EXPECT_PRED_FORMAT2 where the
+// predicate-formatter is a functor on a user-defined type (Bool).
+TEST_F(EXPECT_PRED_FORMAT2Test, FunctorOnUserTypeSuccess) {
+  EXPECT_PRED_FORMAT2(PredFormatFunctor2(),
+                      Bool(++n1_),
+                      Bool(++n2_));
+  finished_ = true;
+}
+
+// Tests a failed EXPECT_PRED_FORMAT2 where the
+// predicate-formatter is a function on a built-in type (int).
+TEST_F(EXPECT_PRED_FORMAT2Test, FunctionOnBuiltInTypeFailure) {
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_PRED_FORMAT2(PredFormatFunction2,
+                        n1_++,
+                        n2_++);
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed EXPECT_PRED_FORMAT2 where the
+// predicate-formatter is a function on a user-defined type (Bool).
+TEST_F(EXPECT_PRED_FORMAT2Test, FunctionOnUserTypeFailure) {
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_PRED_FORMAT2(PredFormatFunction2,
+                        Bool(n1_++),
+                        Bool(n2_++));
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed EXPECT_PRED_FORMAT2 where the
+// predicate-formatter is a functor on a built-in type (int).
+TEST_F(EXPECT_PRED_FORMAT2Test, FunctorOnBuiltInTypeFailure) {
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_PRED_FORMAT2(PredFormatFunctor2(),
+                        n1_++,
+                        n2_++);
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed EXPECT_PRED_FORMAT2 where the
+// predicate-formatter is a functor on a user-defined type (Bool).
+TEST_F(EXPECT_PRED_FORMAT2Test, FunctorOnUserTypeFailure) {
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_PRED_FORMAT2(PredFormatFunctor2(),
+                        Bool(n1_++),
+                        Bool(n2_++));
+    finished_ = true;
+  }, "");
+}
+
+// Tests a successful ASSERT_PRED_FORMAT2 where the
+// predicate-formatter is a function on a built-in type (int).
+TEST_F(ASSERT_PRED_FORMAT2Test, FunctionOnBuiltInTypeSuccess) {
+  ASSERT_PRED_FORMAT2(PredFormatFunction2,
+                      ++n1_,
+                      ++n2_);
+  finished_ = true;
+}
+
+// Tests a successful ASSERT_PRED_FORMAT2 where the
+// predicate-formatter is a function on a user-defined type (Bool).
+TEST_F(ASSERT_PRED_FORMAT2Test, FunctionOnUserTypeSuccess) {
+  ASSERT_PRED_FORMAT2(PredFormatFunction2,
+                      Bool(++n1_),
+                      Bool(++n2_));
+  finished_ = true;
+}
+
+// Tests a successful ASSERT_PRED_FORMAT2 where the
+// predicate-formatter is a functor on a built-in type (int).
+TEST_F(ASSERT_PRED_FORMAT2Test, FunctorOnBuiltInTypeSuccess) {
+  ASSERT_PRED_FORMAT2(PredFormatFunctor2(),
+                      ++n1_,
+                      ++n2_);
+  finished_ = true;
+}
+
+// Tests a successful ASSERT_PRED_FORMAT2 where the
+// predicate-formatter is a functor on a user-defined type (Bool).
+TEST_F(ASSERT_PRED_FORMAT2Test, FunctorOnUserTypeSuccess) {
+  ASSERT_PRED_FORMAT2(PredFormatFunctor2(),
+                      Bool(++n1_),
+                      Bool(++n2_));
+  finished_ = true;
+}
+
+// Tests a failed ASSERT_PRED_FORMAT2 where the
+// predicate-formatter is a function on a built-in type (int).
+TEST_F(ASSERT_PRED_FORMAT2Test, FunctionOnBuiltInTypeFailure) {
+  expected_to_finish_ = false;
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_PRED_FORMAT2(PredFormatFunction2,
+                        n1_++,
+                        n2_++);
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed ASSERT_PRED_FORMAT2 where the
+// predicate-formatter is a function on a user-defined type (Bool).
+TEST_F(ASSERT_PRED_FORMAT2Test, FunctionOnUserTypeFailure) {
+  expected_to_finish_ = false;
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_PRED_FORMAT2(PredFormatFunction2,
+                        Bool(n1_++),
+                        Bool(n2_++));
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed ASSERT_PRED_FORMAT2 where the
+// predicate-formatter is a functor on a built-in type (int).
+TEST_F(ASSERT_PRED_FORMAT2Test, FunctorOnBuiltInTypeFailure) {
+  expected_to_finish_ = false;
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_PRED_FORMAT2(PredFormatFunctor2(),
+                        n1_++,
+                        n2_++);
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed ASSERT_PRED_FORMAT2 where the
+// predicate-formatter is a functor on a user-defined type (Bool).
+TEST_F(ASSERT_PRED_FORMAT2Test, FunctorOnUserTypeFailure) {
+  expected_to_finish_ = false;
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_PRED_FORMAT2(PredFormatFunctor2(),
+                        Bool(n1_++),
+                        Bool(n2_++));
+    finished_ = true;
+  }, "");
+}
+// Sample functions/functors for testing ternary predicate assertions.
+
+// A ternary predicate function.
+template <typename T1, typename T2, typename T3>
+bool PredFunction3(T1 v1, T2 v2, T3 v3) {
+  return v1 + v2 + v3 > 0;
+}
+
+// The following two functions are needed to circumvent a bug in
+// gcc 2.95.3, which sometimes has problem with the above template
+// function.
+bool PredFunction3Int(int v1, int v2, int v3) {
+  return v1 + v2 + v3 > 0;
+}
+bool PredFunction3Bool(Bool v1, Bool v2, Bool v3) {
+  return v1 + v2 + v3 > 0;
+}
+
+// A ternary predicate functor.
+struct PredFunctor3 {
+  template <typename T1, typename T2, typename T3>
+  bool operator()(const T1& v1,
+                  const T2& v2,
+                  const T3& v3) {
+    return v1 + v2 + v3 > 0;
+  }
+};
+
+// A ternary predicate-formatter function.
+template <typename T1, typename T2, typename T3>
+testing::AssertionResult PredFormatFunction3(const char* e1,
+                                             const char* e2,
+                                             const char* e3,
+                                             const T1& v1,
+                                             const T2& v2,
+                                             const T3& v3) {
+  if (PredFunction3(v1, v2, v3))
+    return testing::AssertionSuccess();
+
+  return testing::AssertionFailure()
+      << e1 << " + " << e2 << " + " << e3
+      << " is expected to be positive, but evaluates to "
+      << v1 + v2 + v3 << ".";
+}
+
+// A ternary predicate-formatter functor.
+struct PredFormatFunctor3 {
+  template <typename T1, typename T2, typename T3>
+  testing::AssertionResult operator()(const char* e1,
+                                      const char* e2,
+                                      const char* e3,
+                                      const T1& v1,
+                                      const T2& v2,
+                                      const T3& v3) const {
+    return PredFormatFunction3(e1, e2, e3, v1, v2, v3);
+  }
+};
+
+// Tests for {EXPECT|ASSERT}_PRED_FORMAT3.
+
+class Predicate3Test : public testing::Test {
+ protected:
+  virtual void SetUp() {
+    expected_to_finish_ = true;
+    finished_ = false;
+    n1_ = n2_ = n3_ = 0;
+  }
+
+  virtual void TearDown() {
+    // Verifies that each of the predicate's arguments was evaluated
+    // exactly once.
+    EXPECT_EQ(1, n1_) <<
+        "The predicate assertion didn't evaluate argument 2 "
+        "exactly once.";
+    EXPECT_EQ(1, n2_) <<
+        "The predicate assertion didn't evaluate argument 3 "
+        "exactly once.";
+    EXPECT_EQ(1, n3_) <<
+        "The predicate assertion didn't evaluate argument 4 "
+        "exactly once.";
+
+    // Verifies that the control flow in the test function is expected.
+    if (expected_to_finish_ && !finished_) {
+      FAIL() << "The predicate assertion unexpactedly aborted the test.";
+    } else if (!expected_to_finish_ && finished_) {
+      FAIL() << "The failed predicate assertion didn't abort the test "
+                "as expected.";
+    }
+  }
+
+  // true iff the test function is expected to run to finish.
+  static bool expected_to_finish_;
+
+  // true iff the test function did run to finish.
+  static bool finished_;
+
+  static int n1_;
+  static int n2_;
+  static int n3_;
+};
+
+bool Predicate3Test::expected_to_finish_;
+bool Predicate3Test::finished_;
+int Predicate3Test::n1_;
+int Predicate3Test::n2_;
+int Predicate3Test::n3_;
+
+typedef Predicate3Test EXPECT_PRED_FORMAT3Test;
+typedef Predicate3Test ASSERT_PRED_FORMAT3Test;
+typedef Predicate3Test EXPECT_PRED3Test;
+typedef Predicate3Test ASSERT_PRED3Test;
+
+// Tests a successful EXPECT_PRED3 where the
+// predicate-formatter is a function on a built-in type (int).
+TEST_F(EXPECT_PRED3Test, FunctionOnBuiltInTypeSuccess) {
+  EXPECT_PRED3(PredFunction3Int,
+               ++n1_,
+               ++n2_,
+               ++n3_);
+  finished_ = true;
+}
+
+// Tests a successful EXPECT_PRED3 where the
+// predicate-formatter is a function on a user-defined type (Bool).
+TEST_F(EXPECT_PRED3Test, FunctionOnUserTypeSuccess) {
+  EXPECT_PRED3(PredFunction3Bool,
+               Bool(++n1_),
+               Bool(++n2_),
+               Bool(++n3_));
+  finished_ = true;
+}
+
+// Tests a successful EXPECT_PRED3 where the
+// predicate-formatter is a functor on a built-in type (int).
+TEST_F(EXPECT_PRED3Test, FunctorOnBuiltInTypeSuccess) {
+  EXPECT_PRED3(PredFunctor3(),
+               ++n1_,
+               ++n2_,
+               ++n3_);
+  finished_ = true;
+}
+
+// Tests a successful EXPECT_PRED3 where the
+// predicate-formatter is a functor on a user-defined type (Bool).
+TEST_F(EXPECT_PRED3Test, FunctorOnUserTypeSuccess) {
+  EXPECT_PRED3(PredFunctor3(),
+               Bool(++n1_),
+               Bool(++n2_),
+               Bool(++n3_));
+  finished_ = true;
+}
+
+// Tests a failed EXPECT_PRED3 where the
+// predicate-formatter is a function on a built-in type (int).
+TEST_F(EXPECT_PRED3Test, FunctionOnBuiltInTypeFailure) {
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_PRED3(PredFunction3Int,
+                 n1_++,
+                 n2_++,
+                 n3_++);
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed EXPECT_PRED3 where the
+// predicate-formatter is a function on a user-defined type (Bool).
+TEST_F(EXPECT_PRED3Test, FunctionOnUserTypeFailure) {
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_PRED3(PredFunction3Bool,
+                 Bool(n1_++),
+                 Bool(n2_++),
+                 Bool(n3_++));
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed EXPECT_PRED3 where the
+// predicate-formatter is a functor on a built-in type (int).
+TEST_F(EXPECT_PRED3Test, FunctorOnBuiltInTypeFailure) {
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_PRED3(PredFunctor3(),
+                 n1_++,
+                 n2_++,
+                 n3_++);
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed EXPECT_PRED3 where the
+// predicate-formatter is a functor on a user-defined type (Bool).
+TEST_F(EXPECT_PRED3Test, FunctorOnUserTypeFailure) {
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_PRED3(PredFunctor3(),
+                 Bool(n1_++),
+                 Bool(n2_++),
+                 Bool(n3_++));
+    finished_ = true;
+  }, "");
+}
+
+// Tests a successful ASSERT_PRED3 where the
+// predicate-formatter is a function on a built-in type (int).
+TEST_F(ASSERT_PRED3Test, FunctionOnBuiltInTypeSuccess) {
+  ASSERT_PRED3(PredFunction3Int,
+               ++n1_,
+               ++n2_,
+               ++n3_);
+  finished_ = true;
+}
+
+// Tests a successful ASSERT_PRED3 where the
+// predicate-formatter is a function on a user-defined type (Bool).
+TEST_F(ASSERT_PRED3Test, FunctionOnUserTypeSuccess) {
+  ASSERT_PRED3(PredFunction3Bool,
+               Bool(++n1_),
+               Bool(++n2_),
+               Bool(++n3_));
+  finished_ = true;
+}
+
+// Tests a successful ASSERT_PRED3 where the
+// predicate-formatter is a functor on a built-in type (int).
+TEST_F(ASSERT_PRED3Test, FunctorOnBuiltInTypeSuccess) {
+  ASSERT_PRED3(PredFunctor3(),
+               ++n1_,
+               ++n2_,
+               ++n3_);
+  finished_ = true;
+}
+
+// Tests a successful ASSERT_PRED3 where the
+// predicate-formatter is a functor on a user-defined type (Bool).
+TEST_F(ASSERT_PRED3Test, FunctorOnUserTypeSuccess) {
+  ASSERT_PRED3(PredFunctor3(),
+               Bool(++n1_),
+               Bool(++n2_),
+               Bool(++n3_));
+  finished_ = true;
+}
+
+// Tests a failed ASSERT_PRED3 where the
+// predicate-formatter is a function on a built-in type (int).
+TEST_F(ASSERT_PRED3Test, FunctionOnBuiltInTypeFailure) {
+  expected_to_finish_ = false;
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_PRED3(PredFunction3Int,
+                 n1_++,
+                 n2_++,
+                 n3_++);
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed ASSERT_PRED3 where the
+// predicate-formatter is a function on a user-defined type (Bool).
+TEST_F(ASSERT_PRED3Test, FunctionOnUserTypeFailure) {
+  expected_to_finish_ = false;
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_PRED3(PredFunction3Bool,
+                 Bool(n1_++),
+                 Bool(n2_++),
+                 Bool(n3_++));
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed ASSERT_PRED3 where the
+// predicate-formatter is a functor on a built-in type (int).
+TEST_F(ASSERT_PRED3Test, FunctorOnBuiltInTypeFailure) {
+  expected_to_finish_ = false;
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_PRED3(PredFunctor3(),
+                 n1_++,
+                 n2_++,
+                 n3_++);
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed ASSERT_PRED3 where the
+// predicate-formatter is a functor on a user-defined type (Bool).
+TEST_F(ASSERT_PRED3Test, FunctorOnUserTypeFailure) {
+  expected_to_finish_ = false;
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_PRED3(PredFunctor3(),
+                 Bool(n1_++),
+                 Bool(n2_++),
+                 Bool(n3_++));
+    finished_ = true;
+  }, "");
+}
+
+// Tests a successful EXPECT_PRED_FORMAT3 where the
+// predicate-formatter is a function on a built-in type (int).
+TEST_F(EXPECT_PRED_FORMAT3Test, FunctionOnBuiltInTypeSuccess) {
+  EXPECT_PRED_FORMAT3(PredFormatFunction3,
+                      ++n1_,
+                      ++n2_,
+                      ++n3_);
+  finished_ = true;
+}
+
+// Tests a successful EXPECT_PRED_FORMAT3 where the
+// predicate-formatter is a function on a user-defined type (Bool).
+TEST_F(EXPECT_PRED_FORMAT3Test, FunctionOnUserTypeSuccess) {
+  EXPECT_PRED_FORMAT3(PredFormatFunction3,
+                      Bool(++n1_),
+                      Bool(++n2_),
+                      Bool(++n3_));
+  finished_ = true;
+}
+
+// Tests a successful EXPECT_PRED_FORMAT3 where the
+// predicate-formatter is a functor on a built-in type (int).
+TEST_F(EXPECT_PRED_FORMAT3Test, FunctorOnBuiltInTypeSuccess) {
+  EXPECT_PRED_FORMAT3(PredFormatFunctor3(),
+                      ++n1_,
+                      ++n2_,
+                      ++n3_);
+  finished_ = true;
+}
+
+// Tests a successful EXPECT_PRED_FORMAT3 where the
+// predicate-formatter is a functor on a user-defined type (Bool).
+TEST_F(EXPECT_PRED_FORMAT3Test, FunctorOnUserTypeSuccess) {
+  EXPECT_PRED_FORMAT3(PredFormatFunctor3(),
+                      Bool(++n1_),
+                      Bool(++n2_),
+                      Bool(++n3_));
+  finished_ = true;
+}
+
+// Tests a failed EXPECT_PRED_FORMAT3 where the
+// predicate-formatter is a function on a built-in type (int).
+TEST_F(EXPECT_PRED_FORMAT3Test, FunctionOnBuiltInTypeFailure) {
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_PRED_FORMAT3(PredFormatFunction3,
+                        n1_++,
+                        n2_++,
+                        n3_++);
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed EXPECT_PRED_FORMAT3 where the
+// predicate-formatter is a function on a user-defined type (Bool).
+TEST_F(EXPECT_PRED_FORMAT3Test, FunctionOnUserTypeFailure) {
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_PRED_FORMAT3(PredFormatFunction3,
+                        Bool(n1_++),
+                        Bool(n2_++),
+                        Bool(n3_++));
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed EXPECT_PRED_FORMAT3 where the
+// predicate-formatter is a functor on a built-in type (int).
+TEST_F(EXPECT_PRED_FORMAT3Test, FunctorOnBuiltInTypeFailure) {
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_PRED_FORMAT3(PredFormatFunctor3(),
+                        n1_++,
+                        n2_++,
+                        n3_++);
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed EXPECT_PRED_FORMAT3 where the
+// predicate-formatter is a functor on a user-defined type (Bool).
+TEST_F(EXPECT_PRED_FORMAT3Test, FunctorOnUserTypeFailure) {
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_PRED_FORMAT3(PredFormatFunctor3(),
+                        Bool(n1_++),
+                        Bool(n2_++),
+                        Bool(n3_++));
+    finished_ = true;
+  }, "");
+}
+
+// Tests a successful ASSERT_PRED_FORMAT3 where the
+// predicate-formatter is a function on a built-in type (int).
+TEST_F(ASSERT_PRED_FORMAT3Test, FunctionOnBuiltInTypeSuccess) {
+  ASSERT_PRED_FORMAT3(PredFormatFunction3,
+                      ++n1_,
+                      ++n2_,
+                      ++n3_);
+  finished_ = true;
+}
+
+// Tests a successful ASSERT_PRED_FORMAT3 where the
+// predicate-formatter is a function on a user-defined type (Bool).
+TEST_F(ASSERT_PRED_FORMAT3Test, FunctionOnUserTypeSuccess) {
+  ASSERT_PRED_FORMAT3(PredFormatFunction3,
+                      Bool(++n1_),
+                      Bool(++n2_),
+                      Bool(++n3_));
+  finished_ = true;
+}
+
+// Tests a successful ASSERT_PRED_FORMAT3 where the
+// predicate-formatter is a functor on a built-in type (int).
+TEST_F(ASSERT_PRED_FORMAT3Test, FunctorOnBuiltInTypeSuccess) {
+  ASSERT_PRED_FORMAT3(PredFormatFunctor3(),
+                      ++n1_,
+                      ++n2_,
+                      ++n3_);
+  finished_ = true;
+}
+
+// Tests a successful ASSERT_PRED_FORMAT3 where the
+// predicate-formatter is a functor on a user-defined type (Bool).
+TEST_F(ASSERT_PRED_FORMAT3Test, FunctorOnUserTypeSuccess) {
+  ASSERT_PRED_FORMAT3(PredFormatFunctor3(),
+                      Bool(++n1_),
+                      Bool(++n2_),
+                      Bool(++n3_));
+  finished_ = true;
+}
+
+// Tests a failed ASSERT_PRED_FORMAT3 where the
+// predicate-formatter is a function on a built-in type (int).
+TEST_F(ASSERT_PRED_FORMAT3Test, FunctionOnBuiltInTypeFailure) {
+  expected_to_finish_ = false;
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_PRED_FORMAT3(PredFormatFunction3,
+                        n1_++,
+                        n2_++,
+                        n3_++);
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed ASSERT_PRED_FORMAT3 where the
+// predicate-formatter is a function on a user-defined type (Bool).
+TEST_F(ASSERT_PRED_FORMAT3Test, FunctionOnUserTypeFailure) {
+  expected_to_finish_ = false;
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_PRED_FORMAT3(PredFormatFunction3,
+                        Bool(n1_++),
+                        Bool(n2_++),
+                        Bool(n3_++));
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed ASSERT_PRED_FORMAT3 where the
+// predicate-formatter is a functor on a built-in type (int).
+TEST_F(ASSERT_PRED_FORMAT3Test, FunctorOnBuiltInTypeFailure) {
+  expected_to_finish_ = false;
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_PRED_FORMAT3(PredFormatFunctor3(),
+                        n1_++,
+                        n2_++,
+                        n3_++);
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed ASSERT_PRED_FORMAT3 where the
+// predicate-formatter is a functor on a user-defined type (Bool).
+TEST_F(ASSERT_PRED_FORMAT3Test, FunctorOnUserTypeFailure) {
+  expected_to_finish_ = false;
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_PRED_FORMAT3(PredFormatFunctor3(),
+                        Bool(n1_++),
+                        Bool(n2_++),
+                        Bool(n3_++));
+    finished_ = true;
+  }, "");
+}
+// Sample functions/functors for testing 4-ary predicate assertions.
+
+// A 4-ary predicate function.
+template <typename T1, typename T2, typename T3, typename T4>
+bool PredFunction4(T1 v1, T2 v2, T3 v3, T4 v4) {
+  return v1 + v2 + v3 + v4 > 0;
+}
+
+// The following two functions are needed to circumvent a bug in
+// gcc 2.95.3, which sometimes has problem with the above template
+// function.
+bool PredFunction4Int(int v1, int v2, int v3, int v4) {
+  return v1 + v2 + v3 + v4 > 0;
+}
+bool PredFunction4Bool(Bool v1, Bool v2, Bool v3, Bool v4) {
+  return v1 + v2 + v3 + v4 > 0;
+}
+
+// A 4-ary predicate functor.
+struct PredFunctor4 {
+  template <typename T1, typename T2, typename T3, typename T4>
+  bool operator()(const T1& v1,
+                  const T2& v2,
+                  const T3& v3,
+                  const T4& v4) {
+    return v1 + v2 + v3 + v4 > 0;
+  }
+};
+
+// A 4-ary predicate-formatter function.
+template <typename T1, typename T2, typename T3, typename T4>
+testing::AssertionResult PredFormatFunction4(const char* e1,
+                                             const char* e2,
+                                             const char* e3,
+                                             const char* e4,
+                                             const T1& v1,
+                                             const T2& v2,
+                                             const T3& v3,
+                                             const T4& v4) {
+  if (PredFunction4(v1, v2, v3, v4))
+    return testing::AssertionSuccess();
+
+  return testing::AssertionFailure()
+      << e1 << " + " << e2 << " + " << e3 << " + " << e4
+      << " is expected to be positive, but evaluates to "
+      << v1 + v2 + v3 + v4 << ".";
+}
+
+// A 4-ary predicate-formatter functor.
+struct PredFormatFunctor4 {
+  template <typename T1, typename T2, typename T3, typename T4>
+  testing::AssertionResult operator()(const char* e1,
+                                      const char* e2,
+                                      const char* e3,
+                                      const char* e4,
+                                      const T1& v1,
+                                      const T2& v2,
+                                      const T3& v3,
+                                      const T4& v4) const {
+    return PredFormatFunction4(e1, e2, e3, e4, v1, v2, v3, v4);
+  }
+};
+
+// Tests for {EXPECT|ASSERT}_PRED_FORMAT4.
+
+class Predicate4Test : public testing::Test {
+ protected:
+  virtual void SetUp() {
+    expected_to_finish_ = true;
+    finished_ = false;
+    n1_ = n2_ = n3_ = n4_ = 0;
+  }
+
+  virtual void TearDown() {
+    // Verifies that each of the predicate's arguments was evaluated
+    // exactly once.
+    EXPECT_EQ(1, n1_) <<
+        "The predicate assertion didn't evaluate argument 2 "
+        "exactly once.";
+    EXPECT_EQ(1, n2_) <<
+        "The predicate assertion didn't evaluate argument 3 "
+        "exactly once.";
+    EXPECT_EQ(1, n3_) <<
+        "The predicate assertion didn't evaluate argument 4 "
+        "exactly once.";
+    EXPECT_EQ(1, n4_) <<
+        "The predicate assertion didn't evaluate argument 5 "
+        "exactly once.";
+
+    // Verifies that the control flow in the test function is expected.
+    if (expected_to_finish_ && !finished_) {
+      FAIL() << "The predicate assertion unexpactedly aborted the test.";
+    } else if (!expected_to_finish_ && finished_) {
+      FAIL() << "The failed predicate assertion didn't abort the test "
+                "as expected.";
+    }
+  }
+
+  // true iff the test function is expected to run to finish.
+  static bool expected_to_finish_;
+
+  // true iff the test function did run to finish.
+  static bool finished_;
+
+  static int n1_;
+  static int n2_;
+  static int n3_;
+  static int n4_;
+};
+
+bool Predicate4Test::expected_to_finish_;
+bool Predicate4Test::finished_;
+int Predicate4Test::n1_;
+int Predicate4Test::n2_;
+int Predicate4Test::n3_;
+int Predicate4Test::n4_;
+
+typedef Predicate4Test EXPECT_PRED_FORMAT4Test;
+typedef Predicate4Test ASSERT_PRED_FORMAT4Test;
+typedef Predicate4Test EXPECT_PRED4Test;
+typedef Predicate4Test ASSERT_PRED4Test;
+
+// Tests a successful EXPECT_PRED4 where the
+// predicate-formatter is a function on a built-in type (int).
+TEST_F(EXPECT_PRED4Test, FunctionOnBuiltInTypeSuccess) {
+  EXPECT_PRED4(PredFunction4Int,
+               ++n1_,
+               ++n2_,
+               ++n3_,
+               ++n4_);
+  finished_ = true;
+}
+
+// Tests a successful EXPECT_PRED4 where the
+// predicate-formatter is a function on a user-defined type (Bool).
+TEST_F(EXPECT_PRED4Test, FunctionOnUserTypeSuccess) {
+  EXPECT_PRED4(PredFunction4Bool,
+               Bool(++n1_),
+               Bool(++n2_),
+               Bool(++n3_),
+               Bool(++n4_));
+  finished_ = true;
+}
+
+// Tests a successful EXPECT_PRED4 where the
+// predicate-formatter is a functor on a built-in type (int).
+TEST_F(EXPECT_PRED4Test, FunctorOnBuiltInTypeSuccess) {
+  EXPECT_PRED4(PredFunctor4(),
+               ++n1_,
+               ++n2_,
+               ++n3_,
+               ++n4_);
+  finished_ = true;
+}
+
+// Tests a successful EXPECT_PRED4 where the
+// predicate-formatter is a functor on a user-defined type (Bool).
+TEST_F(EXPECT_PRED4Test, FunctorOnUserTypeSuccess) {
+  EXPECT_PRED4(PredFunctor4(),
+               Bool(++n1_),
+               Bool(++n2_),
+               Bool(++n3_),
+               Bool(++n4_));
+  finished_ = true;
+}
+
+// Tests a failed EXPECT_PRED4 where the
+// predicate-formatter is a function on a built-in type (int).
+TEST_F(EXPECT_PRED4Test, FunctionOnBuiltInTypeFailure) {
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_PRED4(PredFunction4Int,
+                 n1_++,
+                 n2_++,
+                 n3_++,
+                 n4_++);
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed EXPECT_PRED4 where the
+// predicate-formatter is a function on a user-defined type (Bool).
+TEST_F(EXPECT_PRED4Test, FunctionOnUserTypeFailure) {
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_PRED4(PredFunction4Bool,
+                 Bool(n1_++),
+                 Bool(n2_++),
+                 Bool(n3_++),
+                 Bool(n4_++));
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed EXPECT_PRED4 where the
+// predicate-formatter is a functor on a built-in type (int).
+TEST_F(EXPECT_PRED4Test, FunctorOnBuiltInTypeFailure) {
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_PRED4(PredFunctor4(),
+                 n1_++,
+                 n2_++,
+                 n3_++,
+                 n4_++);
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed EXPECT_PRED4 where the
+// predicate-formatter is a functor on a user-defined type (Bool).
+TEST_F(EXPECT_PRED4Test, FunctorOnUserTypeFailure) {
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_PRED4(PredFunctor4(),
+                 Bool(n1_++),
+                 Bool(n2_++),
+                 Bool(n3_++),
+                 Bool(n4_++));
+    finished_ = true;
+  }, "");
+}
+
+// Tests a successful ASSERT_PRED4 where the
+// predicate-formatter is a function on a built-in type (int).
+TEST_F(ASSERT_PRED4Test, FunctionOnBuiltInTypeSuccess) {
+  ASSERT_PRED4(PredFunction4Int,
+               ++n1_,
+               ++n2_,
+               ++n3_,
+               ++n4_);
+  finished_ = true;
+}
+
+// Tests a successful ASSERT_PRED4 where the
+// predicate-formatter is a function on a user-defined type (Bool).
+TEST_F(ASSERT_PRED4Test, FunctionOnUserTypeSuccess) {
+  ASSERT_PRED4(PredFunction4Bool,
+               Bool(++n1_),
+               Bool(++n2_),
+               Bool(++n3_),
+               Bool(++n4_));
+  finished_ = true;
+}
+
+// Tests a successful ASSERT_PRED4 where the
+// predicate-formatter is a functor on a built-in type (int).
+TEST_F(ASSERT_PRED4Test, FunctorOnBuiltInTypeSuccess) {
+  ASSERT_PRED4(PredFunctor4(),
+               ++n1_,
+               ++n2_,
+               ++n3_,
+               ++n4_);
+  finished_ = true;
+}
+
+// Tests a successful ASSERT_PRED4 where the
+// predicate-formatter is a functor on a user-defined type (Bool).
+TEST_F(ASSERT_PRED4Test, FunctorOnUserTypeSuccess) {
+  ASSERT_PRED4(PredFunctor4(),
+               Bool(++n1_),
+               Bool(++n2_),
+               Bool(++n3_),
+               Bool(++n4_));
+  finished_ = true;
+}
+
+// Tests a failed ASSERT_PRED4 where the
+// predicate-formatter is a function on a built-in type (int).
+TEST_F(ASSERT_PRED4Test, FunctionOnBuiltInTypeFailure) {
+  expected_to_finish_ = false;
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_PRED4(PredFunction4Int,
+                 n1_++,
+                 n2_++,
+                 n3_++,
+                 n4_++);
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed ASSERT_PRED4 where the
+// predicate-formatter is a function on a user-defined type (Bool).
+TEST_F(ASSERT_PRED4Test, FunctionOnUserTypeFailure) {
+  expected_to_finish_ = false;
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_PRED4(PredFunction4Bool,
+                 Bool(n1_++),
+                 Bool(n2_++),
+                 Bool(n3_++),
+                 Bool(n4_++));
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed ASSERT_PRED4 where the
+// predicate-formatter is a functor on a built-in type (int).
+TEST_F(ASSERT_PRED4Test, FunctorOnBuiltInTypeFailure) {
+  expected_to_finish_ = false;
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_PRED4(PredFunctor4(),
+                 n1_++,
+                 n2_++,
+                 n3_++,
+                 n4_++);
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed ASSERT_PRED4 where the
+// predicate-formatter is a functor on a user-defined type (Bool).
+TEST_F(ASSERT_PRED4Test, FunctorOnUserTypeFailure) {
+  expected_to_finish_ = false;
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_PRED4(PredFunctor4(),
+                 Bool(n1_++),
+                 Bool(n2_++),
+                 Bool(n3_++),
+                 Bool(n4_++));
+    finished_ = true;
+  }, "");
+}
+
+// Tests a successful EXPECT_PRED_FORMAT4 where the
+// predicate-formatter is a function on a built-in type (int).
+TEST_F(EXPECT_PRED_FORMAT4Test, FunctionOnBuiltInTypeSuccess) {
+  EXPECT_PRED_FORMAT4(PredFormatFunction4,
+                      ++n1_,
+                      ++n2_,
+                      ++n3_,
+                      ++n4_);
+  finished_ = true;
+}
+
+// Tests a successful EXPECT_PRED_FORMAT4 where the
+// predicate-formatter is a function on a user-defined type (Bool).
+TEST_F(EXPECT_PRED_FORMAT4Test, FunctionOnUserTypeSuccess) {
+  EXPECT_PRED_FORMAT4(PredFormatFunction4,
+                      Bool(++n1_),
+                      Bool(++n2_),
+                      Bool(++n3_),
+                      Bool(++n4_));
+  finished_ = true;
+}
+
+// Tests a successful EXPECT_PRED_FORMAT4 where the
+// predicate-formatter is a functor on a built-in type (int).
+TEST_F(EXPECT_PRED_FORMAT4Test, FunctorOnBuiltInTypeSuccess) {
+  EXPECT_PRED_FORMAT4(PredFormatFunctor4(),
+                      ++n1_,
+                      ++n2_,
+                      ++n3_,
+                      ++n4_);
+  finished_ = true;
+}
+
+// Tests a successful EXPECT_PRED_FORMAT4 where the
+// predicate-formatter is a functor on a user-defined type (Bool).
+TEST_F(EXPECT_PRED_FORMAT4Test, FunctorOnUserTypeSuccess) {
+  EXPECT_PRED_FORMAT4(PredFormatFunctor4(),
+                      Bool(++n1_),
+                      Bool(++n2_),
+                      Bool(++n3_),
+                      Bool(++n4_));
+  finished_ = true;
+}
+
+// Tests a failed EXPECT_PRED_FORMAT4 where the
+// predicate-formatter is a function on a built-in type (int).
+TEST_F(EXPECT_PRED_FORMAT4Test, FunctionOnBuiltInTypeFailure) {
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_PRED_FORMAT4(PredFormatFunction4,
+                        n1_++,
+                        n2_++,
+                        n3_++,
+                        n4_++);
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed EXPECT_PRED_FORMAT4 where the
+// predicate-formatter is a function on a user-defined type (Bool).
+TEST_F(EXPECT_PRED_FORMAT4Test, FunctionOnUserTypeFailure) {
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_PRED_FORMAT4(PredFormatFunction4,
+                        Bool(n1_++),
+                        Bool(n2_++),
+                        Bool(n3_++),
+                        Bool(n4_++));
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed EXPECT_PRED_FORMAT4 where the
+// predicate-formatter is a functor on a built-in type (int).
+TEST_F(EXPECT_PRED_FORMAT4Test, FunctorOnBuiltInTypeFailure) {
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_PRED_FORMAT4(PredFormatFunctor4(),
+                        n1_++,
+                        n2_++,
+                        n3_++,
+                        n4_++);
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed EXPECT_PRED_FORMAT4 where the
+// predicate-formatter is a functor on a user-defined type (Bool).
+TEST_F(EXPECT_PRED_FORMAT4Test, FunctorOnUserTypeFailure) {
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_PRED_FORMAT4(PredFormatFunctor4(),
+                        Bool(n1_++),
+                        Bool(n2_++),
+                        Bool(n3_++),
+                        Bool(n4_++));
+    finished_ = true;
+  }, "");
+}
+
+// Tests a successful ASSERT_PRED_FORMAT4 where the
+// predicate-formatter is a function on a built-in type (int).
+TEST_F(ASSERT_PRED_FORMAT4Test, FunctionOnBuiltInTypeSuccess) {
+  ASSERT_PRED_FORMAT4(PredFormatFunction4,
+                      ++n1_,
+                      ++n2_,
+                      ++n3_,
+                      ++n4_);
+  finished_ = true;
+}
+
+// Tests a successful ASSERT_PRED_FORMAT4 where the
+// predicate-formatter is a function on a user-defined type (Bool).
+TEST_F(ASSERT_PRED_FORMAT4Test, FunctionOnUserTypeSuccess) {
+  ASSERT_PRED_FORMAT4(PredFormatFunction4,
+                      Bool(++n1_),
+                      Bool(++n2_),
+                      Bool(++n3_),
+                      Bool(++n4_));
+  finished_ = true;
+}
+
+// Tests a successful ASSERT_PRED_FORMAT4 where the
+// predicate-formatter is a functor on a built-in type (int).
+TEST_F(ASSERT_PRED_FORMAT4Test, FunctorOnBuiltInTypeSuccess) {
+  ASSERT_PRED_FORMAT4(PredFormatFunctor4(),
+                      ++n1_,
+                      ++n2_,
+                      ++n3_,
+                      ++n4_);
+  finished_ = true;
+}
+
+// Tests a successful ASSERT_PRED_FORMAT4 where the
+// predicate-formatter is a functor on a user-defined type (Bool).
+TEST_F(ASSERT_PRED_FORMAT4Test, FunctorOnUserTypeSuccess) {
+  ASSERT_PRED_FORMAT4(PredFormatFunctor4(),
+                      Bool(++n1_),
+                      Bool(++n2_),
+                      Bool(++n3_),
+                      Bool(++n4_));
+  finished_ = true;
+}
+
+// Tests a failed ASSERT_PRED_FORMAT4 where the
+// predicate-formatter is a function on a built-in type (int).
+TEST_F(ASSERT_PRED_FORMAT4Test, FunctionOnBuiltInTypeFailure) {
+  expected_to_finish_ = false;
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_PRED_FORMAT4(PredFormatFunction4,
+                        n1_++,
+                        n2_++,
+                        n3_++,
+                        n4_++);
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed ASSERT_PRED_FORMAT4 where the
+// predicate-formatter is a function on a user-defined type (Bool).
+TEST_F(ASSERT_PRED_FORMAT4Test, FunctionOnUserTypeFailure) {
+  expected_to_finish_ = false;
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_PRED_FORMAT4(PredFormatFunction4,
+                        Bool(n1_++),
+                        Bool(n2_++),
+                        Bool(n3_++),
+                        Bool(n4_++));
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed ASSERT_PRED_FORMAT4 where the
+// predicate-formatter is a functor on a built-in type (int).
+TEST_F(ASSERT_PRED_FORMAT4Test, FunctorOnBuiltInTypeFailure) {
+  expected_to_finish_ = false;
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_PRED_FORMAT4(PredFormatFunctor4(),
+                        n1_++,
+                        n2_++,
+                        n3_++,
+                        n4_++);
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed ASSERT_PRED_FORMAT4 where the
+// predicate-formatter is a functor on a user-defined type (Bool).
+TEST_F(ASSERT_PRED_FORMAT4Test, FunctorOnUserTypeFailure) {
+  expected_to_finish_ = false;
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_PRED_FORMAT4(PredFormatFunctor4(),
+                        Bool(n1_++),
+                        Bool(n2_++),
+                        Bool(n3_++),
+                        Bool(n4_++));
+    finished_ = true;
+  }, "");
+}
+// Sample functions/functors for testing 5-ary predicate assertions.
+
+// A 5-ary predicate function.
+template <typename T1, typename T2, typename T3, typename T4, typename T5>
+bool PredFunction5(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5) {
+  return v1 + v2 + v3 + v4 + v5 > 0;
+}
+
+// The following two functions are needed to circumvent a bug in
+// gcc 2.95.3, which sometimes has problem with the above template
+// function.
+bool PredFunction5Int(int v1, int v2, int v3, int v4, int v5) {
+  return v1 + v2 + v3 + v4 + v5 > 0;
+}
+bool PredFunction5Bool(Bool v1, Bool v2, Bool v3, Bool v4, Bool v5) {
+  return v1 + v2 + v3 + v4 + v5 > 0;
+}
+
+// A 5-ary predicate functor.
+struct PredFunctor5 {
+  template <typename T1, typename T2, typename T3, typename T4, typename T5>
+  bool operator()(const T1& v1,
+                  const T2& v2,
+                  const T3& v3,
+                  const T4& v4,
+                  const T5& v5) {
+    return v1 + v2 + v3 + v4 + v5 > 0;
+  }
+};
+
+// A 5-ary predicate-formatter function.
+template <typename T1, typename T2, typename T3, typename T4, typename T5>
+testing::AssertionResult PredFormatFunction5(const char* e1,
+                                             const char* e2,
+                                             const char* e3,
+                                             const char* e4,
+                                             const char* e5,
+                                             const T1& v1,
+                                             const T2& v2,
+                                             const T3& v3,
+                                             const T4& v4,
+                                             const T5& v5) {
+  if (PredFunction5(v1, v2, v3, v4, v5))
+    return testing::AssertionSuccess();
+
+  return testing::AssertionFailure()
+      << e1 << " + " << e2 << " + " << e3 << " + " << e4 << " + " << e5
+      << " is expected to be positive, but evaluates to "
+      << v1 + v2 + v3 + v4 + v5 << ".";
+}
+
+// A 5-ary predicate-formatter functor.
+struct PredFormatFunctor5 {
+  template <typename T1, typename T2, typename T3, typename T4, typename T5>
+  testing::AssertionResult operator()(const char* e1,
+                                      const char* e2,
+                                      const char* e3,
+                                      const char* e4,
+                                      const char* e5,
+                                      const T1& v1,
+                                      const T2& v2,
+                                      const T3& v3,
+                                      const T4& v4,
+                                      const T5& v5) const {
+    return PredFormatFunction5(e1, e2, e3, e4, e5, v1, v2, v3, v4, v5);
+  }
+};
+
+// Tests for {EXPECT|ASSERT}_PRED_FORMAT5.
+
+class Predicate5Test : public testing::Test {
+ protected:
+  virtual void SetUp() {
+    expected_to_finish_ = true;
+    finished_ = false;
+    n1_ = n2_ = n3_ = n4_ = n5_ = 0;
+  }
+
+  virtual void TearDown() {
+    // Verifies that each of the predicate's arguments was evaluated
+    // exactly once.
+    EXPECT_EQ(1, n1_) <<
+        "The predicate assertion didn't evaluate argument 2 "
+        "exactly once.";
+    EXPECT_EQ(1, n2_) <<
+        "The predicate assertion didn't evaluate argument 3 "
+        "exactly once.";
+    EXPECT_EQ(1, n3_) <<
+        "The predicate assertion didn't evaluate argument 4 "
+        "exactly once.";
+    EXPECT_EQ(1, n4_) <<
+        "The predicate assertion didn't evaluate argument 5 "
+        "exactly once.";
+    EXPECT_EQ(1, n5_) <<
+        "The predicate assertion didn't evaluate argument 6 "
+        "exactly once.";
+
+    // Verifies that the control flow in the test function is expected.
+    if (expected_to_finish_ && !finished_) {
+      FAIL() << "The predicate assertion unexpactedly aborted the test.";
+    } else if (!expected_to_finish_ && finished_) {
+      FAIL() << "The failed predicate assertion didn't abort the test "
+                "as expected.";
+    }
+  }
+
+  // true iff the test function is expected to run to finish.
+  static bool expected_to_finish_;
+
+  // true iff the test function did run to finish.
+  static bool finished_;
+
+  static int n1_;
+  static int n2_;
+  static int n3_;
+  static int n4_;
+  static int n5_;
+};
+
+bool Predicate5Test::expected_to_finish_;
+bool Predicate5Test::finished_;
+int Predicate5Test::n1_;
+int Predicate5Test::n2_;
+int Predicate5Test::n3_;
+int Predicate5Test::n4_;
+int Predicate5Test::n5_;
+
+typedef Predicate5Test EXPECT_PRED_FORMAT5Test;
+typedef Predicate5Test ASSERT_PRED_FORMAT5Test;
+typedef Predicate5Test EXPECT_PRED5Test;
+typedef Predicate5Test ASSERT_PRED5Test;
+
+// Tests a successful EXPECT_PRED5 where the
+// predicate-formatter is a function on a built-in type (int).
+TEST_F(EXPECT_PRED5Test, FunctionOnBuiltInTypeSuccess) {
+  EXPECT_PRED5(PredFunction5Int,
+               ++n1_,
+               ++n2_,
+               ++n3_,
+               ++n4_,
+               ++n5_);
+  finished_ = true;
+}
+
+// Tests a successful EXPECT_PRED5 where the
+// predicate-formatter is a function on a user-defined type (Bool).
+TEST_F(EXPECT_PRED5Test, FunctionOnUserTypeSuccess) {
+  EXPECT_PRED5(PredFunction5Bool,
+               Bool(++n1_),
+               Bool(++n2_),
+               Bool(++n3_),
+               Bool(++n4_),
+               Bool(++n5_));
+  finished_ = true;
+}
+
+// Tests a successful EXPECT_PRED5 where the
+// predicate-formatter is a functor on a built-in type (int).
+TEST_F(EXPECT_PRED5Test, FunctorOnBuiltInTypeSuccess) {
+  EXPECT_PRED5(PredFunctor5(),
+               ++n1_,
+               ++n2_,
+               ++n3_,
+               ++n4_,
+               ++n5_);
+  finished_ = true;
+}
+
+// Tests a successful EXPECT_PRED5 where the
+// predicate-formatter is a functor on a user-defined type (Bool).
+TEST_F(EXPECT_PRED5Test, FunctorOnUserTypeSuccess) {
+  EXPECT_PRED5(PredFunctor5(),
+               Bool(++n1_),
+               Bool(++n2_),
+               Bool(++n3_),
+               Bool(++n4_),
+               Bool(++n5_));
+  finished_ = true;
+}
+
+// Tests a failed EXPECT_PRED5 where the
+// predicate-formatter is a function on a built-in type (int).
+TEST_F(EXPECT_PRED5Test, FunctionOnBuiltInTypeFailure) {
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_PRED5(PredFunction5Int,
+                 n1_++,
+                 n2_++,
+                 n3_++,
+                 n4_++,
+                 n5_++);
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed EXPECT_PRED5 where the
+// predicate-formatter is a function on a user-defined type (Bool).
+TEST_F(EXPECT_PRED5Test, FunctionOnUserTypeFailure) {
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_PRED5(PredFunction5Bool,
+                 Bool(n1_++),
+                 Bool(n2_++),
+                 Bool(n3_++),
+                 Bool(n4_++),
+                 Bool(n5_++));
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed EXPECT_PRED5 where the
+// predicate-formatter is a functor on a built-in type (int).
+TEST_F(EXPECT_PRED5Test, FunctorOnBuiltInTypeFailure) {
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_PRED5(PredFunctor5(),
+                 n1_++,
+                 n2_++,
+                 n3_++,
+                 n4_++,
+                 n5_++);
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed EXPECT_PRED5 where the
+// predicate-formatter is a functor on a user-defined type (Bool).
+TEST_F(EXPECT_PRED5Test, FunctorOnUserTypeFailure) {
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_PRED5(PredFunctor5(),
+                 Bool(n1_++),
+                 Bool(n2_++),
+                 Bool(n3_++),
+                 Bool(n4_++),
+                 Bool(n5_++));
+    finished_ = true;
+  }, "");
+}
+
+// Tests a successful ASSERT_PRED5 where the
+// predicate-formatter is a function on a built-in type (int).
+TEST_F(ASSERT_PRED5Test, FunctionOnBuiltInTypeSuccess) {
+  ASSERT_PRED5(PredFunction5Int,
+               ++n1_,
+               ++n2_,
+               ++n3_,
+               ++n4_,
+               ++n5_);
+  finished_ = true;
+}
+
+// Tests a successful ASSERT_PRED5 where the
+// predicate-formatter is a function on a user-defined type (Bool).
+TEST_F(ASSERT_PRED5Test, FunctionOnUserTypeSuccess) {
+  ASSERT_PRED5(PredFunction5Bool,
+               Bool(++n1_),
+               Bool(++n2_),
+               Bool(++n3_),
+               Bool(++n4_),
+               Bool(++n5_));
+  finished_ = true;
+}
+
+// Tests a successful ASSERT_PRED5 where the
+// predicate-formatter is a functor on a built-in type (int).
+TEST_F(ASSERT_PRED5Test, FunctorOnBuiltInTypeSuccess) {
+  ASSERT_PRED5(PredFunctor5(),
+               ++n1_,
+               ++n2_,
+               ++n3_,
+               ++n4_,
+               ++n5_);
+  finished_ = true;
+}
+
+// Tests a successful ASSERT_PRED5 where the
+// predicate-formatter is a functor on a user-defined type (Bool).
+TEST_F(ASSERT_PRED5Test, FunctorOnUserTypeSuccess) {
+  ASSERT_PRED5(PredFunctor5(),
+               Bool(++n1_),
+               Bool(++n2_),
+               Bool(++n3_),
+               Bool(++n4_),
+               Bool(++n5_));
+  finished_ = true;
+}
+
+// Tests a failed ASSERT_PRED5 where the
+// predicate-formatter is a function on a built-in type (int).
+TEST_F(ASSERT_PRED5Test, FunctionOnBuiltInTypeFailure) {
+  expected_to_finish_ = false;
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_PRED5(PredFunction5Int,
+                 n1_++,
+                 n2_++,
+                 n3_++,
+                 n4_++,
+                 n5_++);
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed ASSERT_PRED5 where the
+// predicate-formatter is a function on a user-defined type (Bool).
+TEST_F(ASSERT_PRED5Test, FunctionOnUserTypeFailure) {
+  expected_to_finish_ = false;
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_PRED5(PredFunction5Bool,
+                 Bool(n1_++),
+                 Bool(n2_++),
+                 Bool(n3_++),
+                 Bool(n4_++),
+                 Bool(n5_++));
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed ASSERT_PRED5 where the
+// predicate-formatter is a functor on a built-in type (int).
+TEST_F(ASSERT_PRED5Test, FunctorOnBuiltInTypeFailure) {
+  expected_to_finish_ = false;
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_PRED5(PredFunctor5(),
+                 n1_++,
+                 n2_++,
+                 n3_++,
+                 n4_++,
+                 n5_++);
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed ASSERT_PRED5 where the
+// predicate-formatter is a functor on a user-defined type (Bool).
+TEST_F(ASSERT_PRED5Test, FunctorOnUserTypeFailure) {
+  expected_to_finish_ = false;
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_PRED5(PredFunctor5(),
+                 Bool(n1_++),
+                 Bool(n2_++),
+                 Bool(n3_++),
+                 Bool(n4_++),
+                 Bool(n5_++));
+    finished_ = true;
+  }, "");
+}
+
+// Tests a successful EXPECT_PRED_FORMAT5 where the
+// predicate-formatter is a function on a built-in type (int).
+TEST_F(EXPECT_PRED_FORMAT5Test, FunctionOnBuiltInTypeSuccess) {
+  EXPECT_PRED_FORMAT5(PredFormatFunction5,
+                      ++n1_,
+                      ++n2_,
+                      ++n3_,
+                      ++n4_,
+                      ++n5_);
+  finished_ = true;
+}
+
+// Tests a successful EXPECT_PRED_FORMAT5 where the
+// predicate-formatter is a function on a user-defined type (Bool).
+TEST_F(EXPECT_PRED_FORMAT5Test, FunctionOnUserTypeSuccess) {
+  EXPECT_PRED_FORMAT5(PredFormatFunction5,
+                      Bool(++n1_),
+                      Bool(++n2_),
+                      Bool(++n3_),
+                      Bool(++n4_),
+                      Bool(++n5_));
+  finished_ = true;
+}
+
+// Tests a successful EXPECT_PRED_FORMAT5 where the
+// predicate-formatter is a functor on a built-in type (int).
+TEST_F(EXPECT_PRED_FORMAT5Test, FunctorOnBuiltInTypeSuccess) {
+  EXPECT_PRED_FORMAT5(PredFormatFunctor5(),
+                      ++n1_,
+                      ++n2_,
+                      ++n3_,
+                      ++n4_,
+                      ++n5_);
+  finished_ = true;
+}
+
+// Tests a successful EXPECT_PRED_FORMAT5 where the
+// predicate-formatter is a functor on a user-defined type (Bool).
+TEST_F(EXPECT_PRED_FORMAT5Test, FunctorOnUserTypeSuccess) {
+  EXPECT_PRED_FORMAT5(PredFormatFunctor5(),
+                      Bool(++n1_),
+                      Bool(++n2_),
+                      Bool(++n3_),
+                      Bool(++n4_),
+                      Bool(++n5_));
+  finished_ = true;
+}
+
+// Tests a failed EXPECT_PRED_FORMAT5 where the
+// predicate-formatter is a function on a built-in type (int).
+TEST_F(EXPECT_PRED_FORMAT5Test, FunctionOnBuiltInTypeFailure) {
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_PRED_FORMAT5(PredFormatFunction5,
+                        n1_++,
+                        n2_++,
+                        n3_++,
+                        n4_++,
+                        n5_++);
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed EXPECT_PRED_FORMAT5 where the
+// predicate-formatter is a function on a user-defined type (Bool).
+TEST_F(EXPECT_PRED_FORMAT5Test, FunctionOnUserTypeFailure) {
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_PRED_FORMAT5(PredFormatFunction5,
+                        Bool(n1_++),
+                        Bool(n2_++),
+                        Bool(n3_++),
+                        Bool(n4_++),
+                        Bool(n5_++));
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed EXPECT_PRED_FORMAT5 where the
+// predicate-formatter is a functor on a built-in type (int).
+TEST_F(EXPECT_PRED_FORMAT5Test, FunctorOnBuiltInTypeFailure) {
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_PRED_FORMAT5(PredFormatFunctor5(),
+                        n1_++,
+                        n2_++,
+                        n3_++,
+                        n4_++,
+                        n5_++);
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed EXPECT_PRED_FORMAT5 where the
+// predicate-formatter is a functor on a user-defined type (Bool).
+TEST_F(EXPECT_PRED_FORMAT5Test, FunctorOnUserTypeFailure) {
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_PRED_FORMAT5(PredFormatFunctor5(),
+                        Bool(n1_++),
+                        Bool(n2_++),
+                        Bool(n3_++),
+                        Bool(n4_++),
+                        Bool(n5_++));
+    finished_ = true;
+  }, "");
+}
+
+// Tests a successful ASSERT_PRED_FORMAT5 where the
+// predicate-formatter is a function on a built-in type (int).
+TEST_F(ASSERT_PRED_FORMAT5Test, FunctionOnBuiltInTypeSuccess) {
+  ASSERT_PRED_FORMAT5(PredFormatFunction5,
+                      ++n1_,
+                      ++n2_,
+                      ++n3_,
+                      ++n4_,
+                      ++n5_);
+  finished_ = true;
+}
+
+// Tests a successful ASSERT_PRED_FORMAT5 where the
+// predicate-formatter is a function on a user-defined type (Bool).
+TEST_F(ASSERT_PRED_FORMAT5Test, FunctionOnUserTypeSuccess) {
+  ASSERT_PRED_FORMAT5(PredFormatFunction5,
+                      Bool(++n1_),
+                      Bool(++n2_),
+                      Bool(++n3_),
+                      Bool(++n4_),
+                      Bool(++n5_));
+  finished_ = true;
+}
+
+// Tests a successful ASSERT_PRED_FORMAT5 where the
+// predicate-formatter is a functor on a built-in type (int).
+TEST_F(ASSERT_PRED_FORMAT5Test, FunctorOnBuiltInTypeSuccess) {
+  ASSERT_PRED_FORMAT5(PredFormatFunctor5(),
+                      ++n1_,
+                      ++n2_,
+                      ++n3_,
+                      ++n4_,
+                      ++n5_);
+  finished_ = true;
+}
+
+// Tests a successful ASSERT_PRED_FORMAT5 where the
+// predicate-formatter is a functor on a user-defined type (Bool).
+TEST_F(ASSERT_PRED_FORMAT5Test, FunctorOnUserTypeSuccess) {
+  ASSERT_PRED_FORMAT5(PredFormatFunctor5(),
+                      Bool(++n1_),
+                      Bool(++n2_),
+                      Bool(++n3_),
+                      Bool(++n4_),
+                      Bool(++n5_));
+  finished_ = true;
+}
+
+// Tests a failed ASSERT_PRED_FORMAT5 where the
+// predicate-formatter is a function on a built-in type (int).
+TEST_F(ASSERT_PRED_FORMAT5Test, FunctionOnBuiltInTypeFailure) {
+  expected_to_finish_ = false;
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_PRED_FORMAT5(PredFormatFunction5,
+                        n1_++,
+                        n2_++,
+                        n3_++,
+                        n4_++,
+                        n5_++);
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed ASSERT_PRED_FORMAT5 where the
+// predicate-formatter is a function on a user-defined type (Bool).
+TEST_F(ASSERT_PRED_FORMAT5Test, FunctionOnUserTypeFailure) {
+  expected_to_finish_ = false;
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_PRED_FORMAT5(PredFormatFunction5,
+                        Bool(n1_++),
+                        Bool(n2_++),
+                        Bool(n3_++),
+                        Bool(n4_++),
+                        Bool(n5_++));
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed ASSERT_PRED_FORMAT5 where the
+// predicate-formatter is a functor on a built-in type (int).
+TEST_F(ASSERT_PRED_FORMAT5Test, FunctorOnBuiltInTypeFailure) {
+  expected_to_finish_ = false;
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_PRED_FORMAT5(PredFormatFunctor5(),
+                        n1_++,
+                        n2_++,
+                        n3_++,
+                        n4_++,
+                        n5_++);
+    finished_ = true;
+  }, "");
+}
+
+// Tests a failed ASSERT_PRED_FORMAT5 where the
+// predicate-formatter is a functor on a user-defined type (Bool).
+TEST_F(ASSERT_PRED_FORMAT5Test, FunctorOnUserTypeFailure) {
+  expected_to_finish_ = false;
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_PRED_FORMAT5(PredFormatFunctor5(),
+                        Bool(n1_++),
+                        Bool(n2_++),
+                        Bool(n3_++),
+                        Bool(n4_++),
+                        Bool(n5_++));
+    finished_ = true;
+  }, "");
+}
diff --git a/google-breakpad/src/testing/gtest/test/gtest_prod_test.cc b/google-breakpad/src/testing/gtest/test/gtest_prod_test.cc
new file mode 100644
index 0000000..060abce
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest_prod_test.cc
@@ -0,0 +1,57 @@
+// Copyright 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+//
+// Unit test for include/gtest/gtest_prod.h.
+
+#include "gtest/gtest.h"
+#include "test/production.h"
+
+// Tests that private members can be accessed from a TEST declared as
+// a friend of the class.
+TEST(PrivateCodeTest, CanAccessPrivateMembers) {
+  PrivateCode a;
+  EXPECT_EQ(0, a.x_);
+
+  a.set_x(1);
+  EXPECT_EQ(1, a.x_);
+}
+
+typedef testing::Test PrivateCodeFixtureTest;
+
+// Tests that private members can be accessed from a TEST_F declared
+// as a friend of the class.
+TEST_F(PrivateCodeFixtureTest, CanAccessPrivateMembers) {
+  PrivateCode a;
+  EXPECT_EQ(0, a.x_);
+
+  a.set_x(2);
+  EXPECT_EQ(2, a.x_);
+}
diff --git a/google-breakpad/src/testing/gtest/test/gtest_repeat_test.cc b/google-breakpad/src/testing/gtest/test/gtest_repeat_test.cc
new file mode 100644
index 0000000..481012a
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest_repeat_test.cc
@@ -0,0 +1,253 @@
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Tests the --gtest_repeat=number flag.
+
+#include <stdlib.h>
+#include <iostream>
+#include "gtest/gtest.h"
+
+// Indicates that this translation unit is part of Google Test's
+// implementation.  It must come before gtest-internal-inl.h is
+// included, or there will be a compiler error.  This trick is to
+// prevent a user from accidentally including gtest-internal-inl.h in
+// his code.
+#define GTEST_IMPLEMENTATION_ 1
+#include "src/gtest-internal-inl.h"
+#undef GTEST_IMPLEMENTATION_
+
+namespace testing {
+
+GTEST_DECLARE_string_(death_test_style);
+GTEST_DECLARE_string_(filter);
+GTEST_DECLARE_int32_(repeat);
+
+}  // namespace testing
+
+using testing::GTEST_FLAG(death_test_style);
+using testing::GTEST_FLAG(filter);
+using testing::GTEST_FLAG(repeat);
+
+namespace {
+
+// We need this when we are testing Google Test itself and therefore
+// cannot use Google Test assertions.
+#define GTEST_CHECK_INT_EQ_(expected, actual) \
+  do {\
+    const int expected_val = (expected);\
+    const int actual_val = (actual);\
+    if (::testing::internal::IsTrue(expected_val != actual_val)) {\
+      ::std::cout << "Value of: " #actual "\n"\
+                  << "  Actual: " << actual_val << "\n"\
+                  << "Expected: " #expected "\n"\
+                  << "Which is: " << expected_val << "\n";\
+      ::testing::internal::posix::Abort();\
+    }\
+  } while (::testing::internal::AlwaysFalse())
+
+
+// Used for verifying that global environment set-up and tear-down are
+// inside the gtest_repeat loop.
+
+int g_environment_set_up_count = 0;
+int g_environment_tear_down_count = 0;
+
+class MyEnvironment : public testing::Environment {
+ public:
+  MyEnvironment() {}
+  virtual void SetUp() { g_environment_set_up_count++; }
+  virtual void TearDown() { g_environment_tear_down_count++; }
+};
+
+// A test that should fail.
+
+int g_should_fail_count = 0;
+
+TEST(FooTest, ShouldFail) {
+  g_should_fail_count++;
+  EXPECT_EQ(0, 1) << "Expected failure.";
+}
+
+// A test that should pass.
+
+int g_should_pass_count = 0;
+
+TEST(FooTest, ShouldPass) {
+  g_should_pass_count++;
+}
+
+// A test that contains a thread-safe death test and a fast death
+// test.  It should pass.
+
+int g_death_test_count = 0;
+
+TEST(BarDeathTest, ThreadSafeAndFast) {
+  g_death_test_count++;
+
+  GTEST_FLAG(death_test_style) = "threadsafe";
+  EXPECT_DEATH_IF_SUPPORTED(::testing::internal::posix::Abort(), "");
+
+  GTEST_FLAG(death_test_style) = "fast";
+  EXPECT_DEATH_IF_SUPPORTED(::testing::internal::posix::Abort(), "");
+}
+
+#if GTEST_HAS_PARAM_TEST
+int g_param_test_count = 0;
+
+const int kNumberOfParamTests = 10;
+
+class MyParamTest : public testing::TestWithParam<int> {};
+
+TEST_P(MyParamTest, ShouldPass) {
+  // TODO(vladl@google.com): Make parameter value checking robust
+  //                         WRT order of tests.
+  GTEST_CHECK_INT_EQ_(g_param_test_count % kNumberOfParamTests, GetParam());
+  g_param_test_count++;
+}
+INSTANTIATE_TEST_CASE_P(MyParamSequence,
+                        MyParamTest,
+                        testing::Range(0, kNumberOfParamTests));
+#endif  // GTEST_HAS_PARAM_TEST
+
+// Resets the count for each test.
+void ResetCounts() {
+  g_environment_set_up_count = 0;
+  g_environment_tear_down_count = 0;
+  g_should_fail_count = 0;
+  g_should_pass_count = 0;
+  g_death_test_count = 0;
+#if GTEST_HAS_PARAM_TEST
+  g_param_test_count = 0;
+#endif  // GTEST_HAS_PARAM_TEST
+}
+
+// Checks that the count for each test is expected.
+void CheckCounts(int expected) {
+  GTEST_CHECK_INT_EQ_(expected, g_environment_set_up_count);
+  GTEST_CHECK_INT_EQ_(expected, g_environment_tear_down_count);
+  GTEST_CHECK_INT_EQ_(expected, g_should_fail_count);
+  GTEST_CHECK_INT_EQ_(expected, g_should_pass_count);
+  GTEST_CHECK_INT_EQ_(expected, g_death_test_count);
+#if GTEST_HAS_PARAM_TEST
+  GTEST_CHECK_INT_EQ_(expected * kNumberOfParamTests, g_param_test_count);
+#endif  // GTEST_HAS_PARAM_TEST
+}
+
+// Tests the behavior of Google Test when --gtest_repeat is not specified.
+void TestRepeatUnspecified() {
+  ResetCounts();
+  GTEST_CHECK_INT_EQ_(1, RUN_ALL_TESTS());
+  CheckCounts(1);
+}
+
+// Tests the behavior of Google Test when --gtest_repeat has the given value.
+void TestRepeat(int repeat) {
+  GTEST_FLAG(repeat) = repeat;
+
+  ResetCounts();
+  GTEST_CHECK_INT_EQ_(repeat > 0 ? 1 : 0, RUN_ALL_TESTS());
+  CheckCounts(repeat);
+}
+
+// Tests using --gtest_repeat when --gtest_filter specifies an empty
+// set of tests.
+void TestRepeatWithEmptyFilter(int repeat) {
+  GTEST_FLAG(repeat) = repeat;
+  GTEST_FLAG(filter) = "None";
+
+  ResetCounts();
+  GTEST_CHECK_INT_EQ_(0, RUN_ALL_TESTS());
+  CheckCounts(0);
+}
+
+// Tests using --gtest_repeat when --gtest_filter specifies a set of
+// successful tests.
+void TestRepeatWithFilterForSuccessfulTests(int repeat) {
+  GTEST_FLAG(repeat) = repeat;
+  GTEST_FLAG(filter) = "*-*ShouldFail";
+
+  ResetCounts();
+  GTEST_CHECK_INT_EQ_(0, RUN_ALL_TESTS());
+  GTEST_CHECK_INT_EQ_(repeat, g_environment_set_up_count);
+  GTEST_CHECK_INT_EQ_(repeat, g_environment_tear_down_count);
+  GTEST_CHECK_INT_EQ_(0, g_should_fail_count);
+  GTEST_CHECK_INT_EQ_(repeat, g_should_pass_count);
+  GTEST_CHECK_INT_EQ_(repeat, g_death_test_count);
+#if GTEST_HAS_PARAM_TEST
+  GTEST_CHECK_INT_EQ_(repeat * kNumberOfParamTests, g_param_test_count);
+#endif  // GTEST_HAS_PARAM_TEST
+}
+
+// Tests using --gtest_repeat when --gtest_filter specifies a set of
+// failed tests.
+void TestRepeatWithFilterForFailedTests(int repeat) {
+  GTEST_FLAG(repeat) = repeat;
+  GTEST_FLAG(filter) = "*ShouldFail";
+
+  ResetCounts();
+  GTEST_CHECK_INT_EQ_(1, RUN_ALL_TESTS());
+  GTEST_CHECK_INT_EQ_(repeat, g_environment_set_up_count);
+  GTEST_CHECK_INT_EQ_(repeat, g_environment_tear_down_count);
+  GTEST_CHECK_INT_EQ_(repeat, g_should_fail_count);
+  GTEST_CHECK_INT_EQ_(0, g_should_pass_count);
+  GTEST_CHECK_INT_EQ_(0, g_death_test_count);
+#if GTEST_HAS_PARAM_TEST
+  GTEST_CHECK_INT_EQ_(0, g_param_test_count);
+#endif  // GTEST_HAS_PARAM_TEST
+}
+
+}  // namespace
+
+int main(int argc, char **argv) {
+  testing::InitGoogleTest(&argc, argv);
+  testing::AddGlobalTestEnvironment(new MyEnvironment);
+
+  TestRepeatUnspecified();
+  TestRepeat(0);
+  TestRepeat(1);
+  TestRepeat(5);
+
+  TestRepeatWithEmptyFilter(2);
+  TestRepeatWithEmptyFilter(3);
+
+  TestRepeatWithFilterForSuccessfulTests(3);
+
+  TestRepeatWithFilterForFailedTests(4);
+
+  // It would be nice to verify that the tests indeed loop forever
+  // when GTEST_FLAG(repeat) is negative, but this test will be quite
+  // complicated to write.  Since this flag is for interactive
+  // debugging only and doesn't affect the normal test result, such a
+  // test would be an overkill.
+
+  printf("PASS\n");
+  return 0;
+}
diff --git a/google-breakpad/src/testing/gtest/test/gtest_shuffle_test.py b/google-breakpad/src/testing/gtest/test/gtest_shuffle_test.py
new file mode 100755
index 0000000..d3e5780
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest_shuffle_test.py
@@ -0,0 +1,326 @@
+#!/usr/bin/env python
+#
+# Copyright 2009 Google Inc. All Rights Reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+"""Verifies that test shuffling works."""
+
+__author__ = 'wan@google.com (Zhanyong Wan)'
+
+import os
+import gtest_test_utils
+
+# Command to run the gtest_shuffle_test_ program.
+COMMAND = gtest_test_utils.GetTestExecutablePath('gtest_shuffle_test_')
+
+# The environment variables for test sharding.
+TOTAL_SHARDS_ENV_VAR = 'GTEST_TOTAL_SHARDS'
+SHARD_INDEX_ENV_VAR = 'GTEST_SHARD_INDEX'
+
+TEST_FILTER = 'A*.A:A*.B:C*'
+
+ALL_TESTS = []
+ACTIVE_TESTS = []
+FILTERED_TESTS = []
+SHARDED_TESTS = []
+
+SHUFFLED_ALL_TESTS = []
+SHUFFLED_ACTIVE_TESTS = []
+SHUFFLED_FILTERED_TESTS = []
+SHUFFLED_SHARDED_TESTS = []
+
+
+def AlsoRunDisabledTestsFlag():
+  return '--gtest_also_run_disabled_tests'
+
+
+def FilterFlag(test_filter):
+  return '--gtest_filter=%s' % (test_filter,)
+
+
+def RepeatFlag(n):
+  return '--gtest_repeat=%s' % (n,)
+
+
+def ShuffleFlag():
+  return '--gtest_shuffle'
+
+
+def RandomSeedFlag(n):
+  return '--gtest_random_seed=%s' % (n,)
+
+
+def RunAndReturnOutput(extra_env, args):
+  """Runs the test program and returns its output."""
+
+  environ_copy = os.environ.copy()
+  environ_copy.update(extra_env)
+
+  return gtest_test_utils.Subprocess([COMMAND] + args, env=environ_copy,
+                                     capture_stderr=False).output
+
+
+def GetTestsForAllIterations(extra_env, args):
+  """Runs the test program and returns a list of test lists.
+
+  Args:
+    extra_env: a map from environment variables to their values
+    args: command line flags to pass to gtest_shuffle_test_
+
+  Returns:
+    A list where the i-th element is the list of tests run in the i-th
+    test iteration.
+  """
+
+  test_iterations = []
+  for line in RunAndReturnOutput(extra_env, args).split('\n'):
+    if line.startswith('----'):
+      tests = []
+      test_iterations.append(tests)
+    elif line.strip():
+      tests.append(line.strip())  # 'TestCaseName.TestName'
+
+  return test_iterations
+
+
+def GetTestCases(tests):
+  """Returns a list of test cases in the given full test names.
+
+  Args:
+    tests: a list of full test names
+
+  Returns:
+    A list of test cases from 'tests', in their original order.
+    Consecutive duplicates are removed.
+  """
+
+  test_cases = []
+  for test in tests:
+    test_case = test.split('.')[0]
+    if not test_case in test_cases:
+      test_cases.append(test_case)
+
+  return test_cases
+
+
+def CalculateTestLists():
+  """Calculates the list of tests run under different flags."""
+
+  if not ALL_TESTS:
+    ALL_TESTS.extend(
+        GetTestsForAllIterations({}, [AlsoRunDisabledTestsFlag()])[0])
+
+  if not ACTIVE_TESTS:
+    ACTIVE_TESTS.extend(GetTestsForAllIterations({}, [])[0])
+
+  if not FILTERED_TESTS:
+    FILTERED_TESTS.extend(
+        GetTestsForAllIterations({}, [FilterFlag(TEST_FILTER)])[0])
+
+  if not SHARDED_TESTS:
+    SHARDED_TESTS.extend(
+        GetTestsForAllIterations({TOTAL_SHARDS_ENV_VAR: '3',
+                                  SHARD_INDEX_ENV_VAR: '1'},
+                                 [])[0])
+
+  if not SHUFFLED_ALL_TESTS:
+    SHUFFLED_ALL_TESTS.extend(GetTestsForAllIterations(
+        {}, [AlsoRunDisabledTestsFlag(), ShuffleFlag(), RandomSeedFlag(1)])[0])
+
+  if not SHUFFLED_ACTIVE_TESTS:
+    SHUFFLED_ACTIVE_TESTS.extend(GetTestsForAllIterations(
+        {}, [ShuffleFlag(), RandomSeedFlag(1)])[0])
+
+  if not SHUFFLED_FILTERED_TESTS:
+    SHUFFLED_FILTERED_TESTS.extend(GetTestsForAllIterations(
+        {}, [ShuffleFlag(), RandomSeedFlag(1), FilterFlag(TEST_FILTER)])[0])
+
+  if not SHUFFLED_SHARDED_TESTS:
+    SHUFFLED_SHARDED_TESTS.extend(
+        GetTestsForAllIterations({TOTAL_SHARDS_ENV_VAR: '3',
+                                  SHARD_INDEX_ENV_VAR: '1'},
+                                 [ShuffleFlag(), RandomSeedFlag(1)])[0])
+
+
+class GTestShuffleUnitTest(gtest_test_utils.TestCase):
+  """Tests test shuffling."""
+
+  def setUp(self):
+    CalculateTestLists()
+
+  def testShufflePreservesNumberOfTests(self):
+    self.assertEqual(len(ALL_TESTS), len(SHUFFLED_ALL_TESTS))
+    self.assertEqual(len(ACTIVE_TESTS), len(SHUFFLED_ACTIVE_TESTS))
+    self.assertEqual(len(FILTERED_TESTS), len(SHUFFLED_FILTERED_TESTS))
+    self.assertEqual(len(SHARDED_TESTS), len(SHUFFLED_SHARDED_TESTS))
+
+  def testShuffleChangesTestOrder(self):
+    self.assert_(SHUFFLED_ALL_TESTS != ALL_TESTS, SHUFFLED_ALL_TESTS)
+    self.assert_(SHUFFLED_ACTIVE_TESTS != ACTIVE_TESTS, SHUFFLED_ACTIVE_TESTS)
+    self.assert_(SHUFFLED_FILTERED_TESTS != FILTERED_TESTS,
+                 SHUFFLED_FILTERED_TESTS)
+    self.assert_(SHUFFLED_SHARDED_TESTS != SHARDED_TESTS,
+                 SHUFFLED_SHARDED_TESTS)
+
+  def testShuffleChangesTestCaseOrder(self):
+    self.assert_(GetTestCases(SHUFFLED_ALL_TESTS) != GetTestCases(ALL_TESTS),
+                 GetTestCases(SHUFFLED_ALL_TESTS))
+    self.assert_(
+        GetTestCases(SHUFFLED_ACTIVE_TESTS) != GetTestCases(ACTIVE_TESTS),
+        GetTestCases(SHUFFLED_ACTIVE_TESTS))
+    self.assert_(
+        GetTestCases(SHUFFLED_FILTERED_TESTS) != GetTestCases(FILTERED_TESTS),
+        GetTestCases(SHUFFLED_FILTERED_TESTS))
+    self.assert_(
+        GetTestCases(SHUFFLED_SHARDED_TESTS) != GetTestCases(SHARDED_TESTS),
+        GetTestCases(SHUFFLED_SHARDED_TESTS))
+
+  def testShuffleDoesNotRepeatTest(self):
+    for test in SHUFFLED_ALL_TESTS:
+      self.assertEqual(1, SHUFFLED_ALL_TESTS.count(test),
+                       '%s appears more than once' % (test,))
+    for test in SHUFFLED_ACTIVE_TESTS:
+      self.assertEqual(1, SHUFFLED_ACTIVE_TESTS.count(test),
+                       '%s appears more than once' % (test,))
+    for test in SHUFFLED_FILTERED_TESTS:
+      self.assertEqual(1, SHUFFLED_FILTERED_TESTS.count(test),
+                       '%s appears more than once' % (test,))
+    for test in SHUFFLED_SHARDED_TESTS:
+      self.assertEqual(1, SHUFFLED_SHARDED_TESTS.count(test),
+                       '%s appears more than once' % (test,))
+
+  def testShuffleDoesNotCreateNewTest(self):
+    for test in SHUFFLED_ALL_TESTS:
+      self.assert_(test in ALL_TESTS, '%s is an invalid test' % (test,))
+    for test in SHUFFLED_ACTIVE_TESTS:
+      self.assert_(test in ACTIVE_TESTS, '%s is an invalid test' % (test,))
+    for test in SHUFFLED_FILTERED_TESTS:
+      self.assert_(test in FILTERED_TESTS, '%s is an invalid test' % (test,))
+    for test in SHUFFLED_SHARDED_TESTS:
+      self.assert_(test in SHARDED_TESTS, '%s is an invalid test' % (test,))
+
+  def testShuffleIncludesAllTests(self):
+    for test in ALL_TESTS:
+      self.assert_(test in SHUFFLED_ALL_TESTS, '%s is missing' % (test,))
+    for test in ACTIVE_TESTS:
+      self.assert_(test in SHUFFLED_ACTIVE_TESTS, '%s is missing' % (test,))
+    for test in FILTERED_TESTS:
+      self.assert_(test in SHUFFLED_FILTERED_TESTS, '%s is missing' % (test,))
+    for test in SHARDED_TESTS:
+      self.assert_(test in SHUFFLED_SHARDED_TESTS, '%s is missing' % (test,))
+
+  def testShuffleLeavesDeathTestsAtFront(self):
+    non_death_test_found = False
+    for test in SHUFFLED_ACTIVE_TESTS:
+      if 'DeathTest.' in test:
+        self.assert_(not non_death_test_found,
+                     '%s appears after a non-death test' % (test,))
+      else:
+        non_death_test_found = True
+
+  def _VerifyTestCasesDoNotInterleave(self, tests):
+    test_cases = []
+    for test in tests:
+      [test_case, _] = test.split('.')
+      if test_cases and test_cases[-1] != test_case:
+        test_cases.append(test_case)
+        self.assertEqual(1, test_cases.count(test_case),
+                         'Test case %s is not grouped together in %s' %
+                         (test_case, tests))
+
+  def testShuffleDoesNotInterleaveTestCases(self):
+    self._VerifyTestCasesDoNotInterleave(SHUFFLED_ALL_TESTS)
+    self._VerifyTestCasesDoNotInterleave(SHUFFLED_ACTIVE_TESTS)
+    self._VerifyTestCasesDoNotInterleave(SHUFFLED_FILTERED_TESTS)
+    self._VerifyTestCasesDoNotInterleave(SHUFFLED_SHARDED_TESTS)
+
+  def testShuffleRestoresOrderAfterEachIteration(self):
+    # Get the test lists in all 3 iterations, using random seed 1, 2,
+    # and 3 respectively.  Google Test picks a different seed in each
+    # iteration, and this test depends on the current implementation
+    # picking successive numbers.  This dependency is not ideal, but
+    # makes the test much easier to write.
+    [tests_in_iteration1, tests_in_iteration2, tests_in_iteration3] = (
+        GetTestsForAllIterations(
+            {}, [ShuffleFlag(), RandomSeedFlag(1), RepeatFlag(3)]))
+
+    # Make sure running the tests with random seed 1 gets the same
+    # order as in iteration 1 above.
+    [tests_with_seed1] = GetTestsForAllIterations(
+        {}, [ShuffleFlag(), RandomSeedFlag(1)])
+    self.assertEqual(tests_in_iteration1, tests_with_seed1)
+
+    # Make sure running the tests with random seed 2 gets the same
+    # order as in iteration 2 above.  Success means that Google Test
+    # correctly restores the test order before re-shuffling at the
+    # beginning of iteration 2.
+    [tests_with_seed2] = GetTestsForAllIterations(
+        {}, [ShuffleFlag(), RandomSeedFlag(2)])
+    self.assertEqual(tests_in_iteration2, tests_with_seed2)
+
+    # Make sure running the tests with random seed 3 gets the same
+    # order as in iteration 3 above.  Success means that Google Test
+    # correctly restores the test order before re-shuffling at the
+    # beginning of iteration 3.
+    [tests_with_seed3] = GetTestsForAllIterations(
+        {}, [ShuffleFlag(), RandomSeedFlag(3)])
+    self.assertEqual(tests_in_iteration3, tests_with_seed3)
+
+  def testShuffleGeneratesNewOrderInEachIteration(self):
+    [tests_in_iteration1, tests_in_iteration2, tests_in_iteration3] = (
+        GetTestsForAllIterations(
+            {}, [ShuffleFlag(), RandomSeedFlag(1), RepeatFlag(3)]))
+
+    self.assert_(tests_in_iteration1 != tests_in_iteration2,
+                 tests_in_iteration1)
+    self.assert_(tests_in_iteration1 != tests_in_iteration3,
+                 tests_in_iteration1)
+    self.assert_(tests_in_iteration2 != tests_in_iteration3,
+                 tests_in_iteration2)
+
+  def testShuffleShardedTestsPreservesPartition(self):
+    # If we run M tests on N shards, the same M tests should be run in
+    # total, regardless of the random seeds used by the shards.
+    [tests1] = GetTestsForAllIterations({TOTAL_SHARDS_ENV_VAR: '3',
+                                         SHARD_INDEX_ENV_VAR: '0'},
+                                        [ShuffleFlag(), RandomSeedFlag(1)])
+    [tests2] = GetTestsForAllIterations({TOTAL_SHARDS_ENV_VAR: '3',
+                                         SHARD_INDEX_ENV_VAR: '1'},
+                                        [ShuffleFlag(), RandomSeedFlag(20)])
+    [tests3] = GetTestsForAllIterations({TOTAL_SHARDS_ENV_VAR: '3',
+                                         SHARD_INDEX_ENV_VAR: '2'},
+                                        [ShuffleFlag(), RandomSeedFlag(25)])
+    sorted_sharded_tests = tests1 + tests2 + tests3
+    sorted_sharded_tests.sort()
+    sorted_active_tests = []
+    sorted_active_tests.extend(ACTIVE_TESTS)
+    sorted_active_tests.sort()
+    self.assertEqual(sorted_active_tests, sorted_sharded_tests)
+
+if __name__ == '__main__':
+  gtest_test_utils.Main()
diff --git a/google-breakpad/src/testing/gtest/test/gtest_shuffle_test_.cc b/google-breakpad/src/testing/gtest/test/gtest_shuffle_test_.cc
new file mode 100644
index 0000000..0752789
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest_shuffle_test_.cc
@@ -0,0 +1,104 @@
+// Copyright 2009, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Verifies that test shuffling works.
+
+#include "gtest/gtest.h"
+
+namespace {
+
+using ::testing::EmptyTestEventListener;
+using ::testing::InitGoogleTest;
+using ::testing::Message;
+using ::testing::Test;
+using ::testing::TestEventListeners;
+using ::testing::TestInfo;
+using ::testing::UnitTest;
+using ::testing::internal::String;
+using ::testing::internal::scoped_ptr;
+
+// The test methods are empty, as the sole purpose of this program is
+// to print the test names before/after shuffling.
+
+class A : public Test {};
+TEST_F(A, A) {}
+TEST_F(A, B) {}
+
+TEST(ADeathTest, A) {}
+TEST(ADeathTest, B) {}
+TEST(ADeathTest, C) {}
+
+TEST(B, A) {}
+TEST(B, B) {}
+TEST(B, C) {}
+TEST(B, DISABLED_D) {}
+TEST(B, DISABLED_E) {}
+
+TEST(BDeathTest, A) {}
+TEST(BDeathTest, B) {}
+
+TEST(C, A) {}
+TEST(C, B) {}
+TEST(C, C) {}
+TEST(C, DISABLED_D) {}
+
+TEST(CDeathTest, A) {}
+
+TEST(DISABLED_D, A) {}
+TEST(DISABLED_D, DISABLED_B) {}
+
+// This printer prints the full test names only, starting each test
+// iteration with a "----" marker.
+class TestNamePrinter : public EmptyTestEventListener {
+ public:
+  virtual void OnTestIterationStart(const UnitTest& /* unit_test */,
+                                    int /* iteration */) {
+    printf("----\n");
+  }
+
+  virtual void OnTestStart(const TestInfo& test_info) {
+    printf("%s.%s\n", test_info.test_case_name(), test_info.name());
+  }
+};
+
+}  // namespace
+
+int main(int argc, char **argv) {
+  InitGoogleTest(&argc, argv);
+
+  // Replaces the default printer with TestNamePrinter, which prints
+  // the test name only.
+  TestEventListeners& listeners = UnitTest::GetInstance()->listeners();
+  delete listeners.Release(listeners.default_result_printer());
+  listeners.Append(new TestNamePrinter);
+
+  return RUN_ALL_TESTS();
+}
diff --git a/google-breakpad/src/testing/gtest/test/gtest_sole_header_test.cc b/google-breakpad/src/testing/gtest/test/gtest_sole_header_test.cc
new file mode 100644
index 0000000..ccd091a
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest_sole_header_test.cc
@@ -0,0 +1,57 @@
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: mheule@google.com (Markus Heule)
+//
+// This test verifies that it's possible to use Google Test by including
+// the gtest.h header file alone.
+
+#include "gtest/gtest.h"
+
+namespace {
+
+void Subroutine() {
+  EXPECT_EQ(42, 42);
+}
+
+TEST(NoFatalFailureTest, ExpectNoFatalFailure) {
+  EXPECT_NO_FATAL_FAILURE(;);
+  EXPECT_NO_FATAL_FAILURE(SUCCEED());
+  EXPECT_NO_FATAL_FAILURE(Subroutine());
+  EXPECT_NO_FATAL_FAILURE({ SUCCEED(); });
+}
+
+TEST(NoFatalFailureTest, AssertNoFatalFailure) {
+  ASSERT_NO_FATAL_FAILURE(;);
+  ASSERT_NO_FATAL_FAILURE(SUCCEED());
+  ASSERT_NO_FATAL_FAILURE(Subroutine());
+  ASSERT_NO_FATAL_FAILURE({ SUCCEED(); });
+}
+
+}  // namespace
diff --git a/google-breakpad/src/testing/gtest/test/gtest_stress_test.cc b/google-breakpad/src/testing/gtest/test/gtest_stress_test.cc
new file mode 100644
index 0000000..4e7d9bf
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest_stress_test.cc
@@ -0,0 +1,257 @@
+// Copyright 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Tests that SCOPED_TRACE() and various Google Test assertions can be
+// used in a large number of threads concurrently.
+
+#include "gtest/gtest.h"
+
+#include <iostream>
+#include <vector>
+
+// We must define this macro in order to #include
+// gtest-internal-inl.h.  This is how Google Test prevents a user from
+// accidentally depending on its internal implementation.
+#define GTEST_IMPLEMENTATION_ 1
+#include "src/gtest-internal-inl.h"
+#undef GTEST_IMPLEMENTATION_
+
+#if GTEST_IS_THREADSAFE
+
+namespace testing {
+namespace {
+
+using internal::Notification;
+using internal::String;
+using internal::TestPropertyKeyIs;
+using internal::ThreadWithParam;
+using internal::scoped_ptr;
+
+// In order to run tests in this file, for platforms where Google Test is
+// thread safe, implement ThreadWithParam. See the description of its API
+// in gtest-port.h, where it is defined for already supported platforms.
+
+// How many threads to create?
+const int kThreadCount = 50;
+
+String IdToKey(int id, const char* suffix) {
+  Message key;
+  key << "key_" << id << "_" << suffix;
+  return key.GetString();
+}
+
+String IdToString(int id) {
+  Message id_message;
+  id_message << id;
+  return id_message.GetString();
+}
+
+void ExpectKeyAndValueWereRecordedForId(
+    const std::vector<TestProperty>& properties,
+    int id, const char* suffix) {
+  TestPropertyKeyIs matches_key(IdToKey(id, suffix).c_str());
+  const std::vector<TestProperty>::const_iterator property =
+      std::find_if(properties.begin(), properties.end(), matches_key);
+  ASSERT_TRUE(property != properties.end())
+      << "expecting " << suffix << " value for id " << id;
+  EXPECT_STREQ(IdToString(id).c_str(), property->value());
+}
+
+// Calls a large number of Google Test assertions, where exactly one of them
+// will fail.
+void ManyAsserts(int id) {
+  GTEST_LOG_(INFO) << "Thread #" << id << " running...";
+
+  SCOPED_TRACE(Message() << "Thread #" << id);
+
+  for (int i = 0; i < kThreadCount; i++) {
+    SCOPED_TRACE(Message() << "Iteration #" << i);
+
+    // A bunch of assertions that should succeed.
+    EXPECT_TRUE(true);
+    ASSERT_FALSE(false) << "This shouldn't fail.";
+    EXPECT_STREQ("a", "a");
+    ASSERT_LE(5, 6);
+    EXPECT_EQ(i, i) << "This shouldn't fail.";
+
+    // RecordProperty() should interact safely with other threads as well.
+    // The shared_key forces property updates.
+    Test::RecordProperty(IdToKey(id, "string").c_str(), IdToString(id).c_str());
+    Test::RecordProperty(IdToKey(id, "int").c_str(), id);
+    Test::RecordProperty("shared_key", IdToString(id).c_str());
+
+    // This assertion should fail kThreadCount times per thread.  It
+    // is for testing whether Google Test can handle failed assertions in a
+    // multi-threaded context.
+    EXPECT_LT(i, 0) << "This should always fail.";
+  }
+}
+
+void CheckTestFailureCount(int expected_failures) {
+  const TestInfo* const info = UnitTest::GetInstance()->current_test_info();
+  const TestResult* const result = info->result();
+  GTEST_CHECK_(expected_failures == result->total_part_count())
+      << "Logged " << result->total_part_count() << " failures "
+      << " vs. " << expected_failures << " expected";
+}
+
+// Tests using SCOPED_TRACE() and Google Test assertions in many threads
+// concurrently.
+TEST(StressTest, CanUseScopedTraceAndAssertionsInManyThreads) {
+  {
+    scoped_ptr<ThreadWithParam<int> > threads[kThreadCount];
+    Notification threads_can_start;
+    for (int i = 0; i != kThreadCount; i++)
+      threads[i].reset(new ThreadWithParam<int>(&ManyAsserts,
+                                                i,
+                                                &threads_can_start));
+
+    threads_can_start.Notify();
+
+    // Blocks until all the threads are done.
+    for (int i = 0; i != kThreadCount; i++)
+      threads[i]->Join();
+  }
+
+  // Ensures that kThreadCount*kThreadCount failures have been reported.
+  const TestInfo* const info = UnitTest::GetInstance()->current_test_info();
+  const TestResult* const result = info->result();
+
+  std::vector<TestProperty> properties;
+  // We have no access to the TestResult's list of properties but we can
+  // copy them one by one.
+  for (int i = 0; i < result->test_property_count(); ++i)
+    properties.push_back(result->GetTestProperty(i));
+
+  EXPECT_EQ(kThreadCount * 2 + 1, result->test_property_count())
+      << "String and int values recorded on each thread, "
+      << "as well as one shared_key";
+  for (int i = 0; i < kThreadCount; ++i) {
+    ExpectKeyAndValueWereRecordedForId(properties, i, "string");
+    ExpectKeyAndValueWereRecordedForId(properties, i, "int");
+  }
+  CheckTestFailureCount(kThreadCount*kThreadCount);
+}
+
+void FailingThread(bool is_fatal) {
+  if (is_fatal)
+    FAIL() << "Fatal failure in some other thread. "
+           << "(This failure is expected.)";
+  else
+    ADD_FAILURE() << "Non-fatal failure in some other thread. "
+                  << "(This failure is expected.)";
+}
+
+void GenerateFatalFailureInAnotherThread(bool is_fatal) {
+  ThreadWithParam<bool> thread(&FailingThread, is_fatal, NULL);
+  thread.Join();
+}
+
+TEST(NoFatalFailureTest, ExpectNoFatalFailureIgnoresFailuresInOtherThreads) {
+  EXPECT_NO_FATAL_FAILURE(GenerateFatalFailureInAnotherThread(true));
+  // We should only have one failure (the one from
+  // GenerateFatalFailureInAnotherThread()), since the EXPECT_NO_FATAL_FAILURE
+  // should succeed.
+  CheckTestFailureCount(1);
+}
+
+void AssertNoFatalFailureIgnoresFailuresInOtherThreads() {
+  ASSERT_NO_FATAL_FAILURE(GenerateFatalFailureInAnotherThread(true));
+}
+TEST(NoFatalFailureTest, AssertNoFatalFailureIgnoresFailuresInOtherThreads) {
+  // Using a subroutine, to make sure, that the test continues.
+  AssertNoFatalFailureIgnoresFailuresInOtherThreads();
+  // We should only have one failure (the one from
+  // GenerateFatalFailureInAnotherThread()), since the EXPECT_NO_FATAL_FAILURE
+  // should succeed.
+  CheckTestFailureCount(1);
+}
+
+TEST(FatalFailureTest, ExpectFatalFailureIgnoresFailuresInOtherThreads) {
+  // This statement should fail, since the current thread doesn't generate a
+  // fatal failure, only another one does.
+  EXPECT_FATAL_FAILURE(GenerateFatalFailureInAnotherThread(true), "expected");
+  CheckTestFailureCount(2);
+}
+
+TEST(FatalFailureOnAllThreadsTest, ExpectFatalFailureOnAllThreads) {
+  // This statement should succeed, because failures in all threads are
+  // considered.
+  EXPECT_FATAL_FAILURE_ON_ALL_THREADS(
+      GenerateFatalFailureInAnotherThread(true), "expected");
+  CheckTestFailureCount(0);
+  // We need to add a failure, because main() checks that there are failures.
+  // But when only this test is run, we shouldn't have any failures.
+  ADD_FAILURE() << "This is an expected non-fatal failure.";
+}
+
+TEST(NonFatalFailureTest, ExpectNonFatalFailureIgnoresFailuresInOtherThreads) {
+  // This statement should fail, since the current thread doesn't generate a
+  // fatal failure, only another one does.
+  EXPECT_NONFATAL_FAILURE(GenerateFatalFailureInAnotherThread(false),
+                          "expected");
+  CheckTestFailureCount(2);
+}
+
+TEST(NonFatalFailureOnAllThreadsTest, ExpectNonFatalFailureOnAllThreads) {
+  // This statement should succeed, because failures in all threads are
+  // considered.
+  EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS(
+      GenerateFatalFailureInAnotherThread(false), "expected");
+  CheckTestFailureCount(0);
+  // We need to add a failure, because main() checks that there are failures,
+  // But when only this test is run, we shouldn't have any failures.
+  ADD_FAILURE() << "This is an expected non-fatal failure.";
+}
+
+}  // namespace
+}  // namespace testing
+
+int main(int argc, char **argv) {
+  testing::InitGoogleTest(&argc, argv);
+
+  const int result = RUN_ALL_TESTS();  // Expected to fail.
+  GTEST_CHECK_(result == 1) << "RUN_ALL_TESTS() did not fail as expected";
+
+  printf("\nPASS\n");
+  return 0;
+}
+
+#else
+TEST(StressTest,
+     DISABLED_ThreadSafetyTestsAreSkippedWhenGoogleTestIsNotThreadSafe) {
+}
+
+int main(int argc, char **argv) {
+  testing::InitGoogleTest(&argc, argv);
+  return RUN_ALL_TESTS();
+}
+#endif  // GTEST_IS_THREADSAFE
diff --git a/google-breakpad/src/testing/gtest/test/gtest_test_utils.py b/google-breakpad/src/testing/gtest/test/gtest_test_utils.py
new file mode 100755
index 0000000..6dd8db4
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest_test_utils.py
@@ -0,0 +1,305 @@
+#!/usr/bin/env python
+#
+# Copyright 2006, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+"""Unit test utilities for Google C++ Testing Framework."""
+
+__author__ = 'wan@google.com (Zhanyong Wan)'
+
+import atexit
+import os
+import shutil
+import sys
+import tempfile
+import unittest
+_test_module = unittest
+
+# Suppresses the 'Import not at the top of the file' lint complaint.
+# pylint: disable-msg=C6204
+try:
+  import subprocess
+  _SUBPROCESS_MODULE_AVAILABLE = True
+except:
+  import popen2
+  _SUBPROCESS_MODULE_AVAILABLE = False
+# pylint: enable-msg=C6204
+
+GTEST_OUTPUT_VAR_NAME = 'GTEST_OUTPUT'
+
+IS_WINDOWS = os.name == 'nt'
+IS_CYGWIN = os.name == 'posix' and 'CYGWIN' in os.uname()[0]
+
+# Here we expose a class from a particular module, depending on the
+# environment. The comment suppresses the 'Invalid variable name' lint
+# complaint.
+TestCase = _test_module.TestCase  # pylint: disable-msg=C6409
+
+# Initially maps a flag to its default value. After
+# _ParseAndStripGTestFlags() is called, maps a flag to its actual value.
+_flag_map = {'source_dir': os.path.dirname(sys.argv[0]),
+             'build_dir': os.path.dirname(sys.argv[0])}
+_gtest_flags_are_parsed = False
+
+
+def _ParseAndStripGTestFlags(argv):
+  """Parses and strips Google Test flags from argv.  This is idempotent."""
+
+  # Suppresses the lint complaint about a global variable since we need it
+  # here to maintain module-wide state.
+  global _gtest_flags_are_parsed  # pylint: disable-msg=W0603
+  if _gtest_flags_are_parsed:
+    return
+
+  _gtest_flags_are_parsed = True
+  for flag in _flag_map:
+    # The environment variable overrides the default value.
+    if flag.upper() in os.environ:
+      _flag_map[flag] = os.environ[flag.upper()]
+
+    # The command line flag overrides the environment variable.
+    i = 1  # Skips the program name.
+    while i < len(argv):
+      prefix = '--' + flag + '='
+      if argv[i].startswith(prefix):
+        _flag_map[flag] = argv[i][len(prefix):]
+        del argv[i]
+        break
+      else:
+        # We don't increment i in case we just found a --gtest_* flag
+        # and removed it from argv.
+        i += 1
+
+
+def GetFlag(flag):
+  """Returns the value of the given flag."""
+
+  # In case GetFlag() is called before Main(), we always call
+  # _ParseAndStripGTestFlags() here to make sure the --gtest_* flags
+  # are parsed.
+  _ParseAndStripGTestFlags(sys.argv)
+
+  return _flag_map[flag]
+
+
+def GetSourceDir():
+  """Returns the absolute path of the directory where the .py files are."""
+
+  return os.path.abspath(GetFlag('source_dir'))
+
+
+def GetBuildDir():
+  """Returns the absolute path of the directory where the test binaries are."""
+
+  return os.path.abspath(GetFlag('build_dir'))
+
+
+_temp_dir = None
+
+def _RemoveTempDir():
+  if _temp_dir:
+    shutil.rmtree(_temp_dir, ignore_errors=True)
+
+atexit.register(_RemoveTempDir)
+
+
+def GetTempDir():
+  """Returns a directory for temporary files."""
+
+  global _temp_dir
+  if not _temp_dir:
+    _temp_dir = tempfile.mkdtemp()
+  return _temp_dir
+
+
+def GetTestExecutablePath(executable_name, build_dir=None):
+  """Returns the absolute path of the test binary given its name.
+
+  The function will print a message and abort the program if the resulting file
+  doesn't exist.
+
+  Args:
+    executable_name: name of the test binary that the test script runs.
+    build_dir:       directory where to look for executables, by default
+                     the result of GetBuildDir().
+
+  Returns:
+    The absolute path of the test binary.
+  """
+
+  path = os.path.abspath(os.path.join(build_dir or GetBuildDir(),
+                                      executable_name))
+  if (IS_WINDOWS or IS_CYGWIN) and not path.endswith('.exe'):
+    path += '.exe'
+
+  if not os.path.exists(path):
+    message = (
+        'Unable to find the test binary. Please make sure to provide path\n'
+        'to the binary via the --build_dir flag or the BUILD_DIR\n'
+        'environment variable.')
+    print >> sys.stderr, message
+    sys.exit(1)
+
+  return path
+
+
+def GetExitStatus(exit_code):
+  """Returns the argument to exit(), or -1 if exit() wasn't called.
+
+  Args:
+    exit_code: the result value of os.system(command).
+  """
+
+  if os.name == 'nt':
+    # On Windows, os.WEXITSTATUS() doesn't work and os.system() returns
+    # the argument to exit() directly.
+    return exit_code
+  else:
+    # On Unix, os.WEXITSTATUS() must be used to extract the exit status
+    # from the result of os.system().
+    if os.WIFEXITED(exit_code):
+      return os.WEXITSTATUS(exit_code)
+    else:
+      return -1
+
+
+class Subprocess:
+  def __init__(self, command, working_dir=None, capture_stderr=True, env=None):
+    """Changes into a specified directory, if provided, and executes a command.
+
+    Restores the old directory afterwards.
+
+    Args:
+      command:        The command to run, in the form of sys.argv.
+      working_dir:    The directory to change into.
+      capture_stderr: Determines whether to capture stderr in the output member
+                      or to discard it.
+      env:            Dictionary with environment to pass to the subprocess.
+
+    Returns:
+      An object that represents outcome of the executed process. It has the
+      following attributes:
+        terminated_by_signal   True iff the child process has been terminated
+                               by a signal.
+        signal                 Sygnal that terminated the child process.
+        exited                 True iff the child process exited normally.
+        exit_code              The code with which the child process exited.
+        output                 Child process's stdout and stderr output
+                               combined in a string.
+    """
+
+    # The subprocess module is the preferrable way of running programs
+    # since it is available and behaves consistently on all platforms,
+    # including Windows. But it is only available starting in python 2.4.
+    # In earlier python versions, we revert to the popen2 module, which is
+    # available in python 2.0 and later but doesn't provide required
+    # functionality (Popen4) under Windows. This allows us to support Mac
+    # OS X 10.4 Tiger, which has python 2.3 installed.
+    if _SUBPROCESS_MODULE_AVAILABLE:
+      if capture_stderr:
+        stderr = subprocess.STDOUT
+      else:
+        stderr = subprocess.PIPE
+
+      p = subprocess.Popen(command,
+                           stdout=subprocess.PIPE, stderr=stderr,
+                           cwd=working_dir, universal_newlines=True, env=env)
+      # communicate returns a tuple with the file obect for the child's
+      # output.
+      self.output = p.communicate()[0]
+      self._return_code = p.returncode
+    else:
+      old_dir = os.getcwd()
+
+      def _ReplaceEnvDict(dest, src):
+        # Changes made by os.environ.clear are not inheritable by child
+        # processes until Python 2.6. To produce inheritable changes we have
+        # to delete environment items with the del statement.
+        for key in dest.keys():
+          del dest[key]
+        dest.update(src)
+
+      # When 'env' is not None, backup the environment variables and replace
+      # them with the passed 'env'. When 'env' is None, we simply use the
+      # current 'os.environ' for compatibility with the subprocess.Popen
+      # semantics used above.
+      if env is not None:
+        old_environ = os.environ.copy()
+        _ReplaceEnvDict(os.environ, env)
+
+      try:
+        if working_dir is not None:
+          os.chdir(working_dir)
+        if capture_stderr:
+          p = popen2.Popen4(command)
+        else:
+          p = popen2.Popen3(command)
+        p.tochild.close()
+        self.output = p.fromchild.read()
+        ret_code = p.wait()
+      finally:
+        os.chdir(old_dir)
+
+        # Restore the old environment variables
+        # if they were replaced.
+        if env is not None:
+          _ReplaceEnvDict(os.environ, old_environ)
+
+      # Converts ret_code to match the semantics of
+      # subprocess.Popen.returncode.
+      if os.WIFSIGNALED(ret_code):
+        self._return_code = -os.WTERMSIG(ret_code)
+      else:  # os.WIFEXITED(ret_code) should return True here.
+        self._return_code = os.WEXITSTATUS(ret_code)
+
+    if self._return_code < 0:
+      self.terminated_by_signal = True
+      self.exited = False
+      self.signal = -self._return_code
+    else:
+      self.terminated_by_signal = False
+      self.exited = True
+      self.exit_code = self._return_code
+
+
+def Main():
+  """Runs the unit test."""
+
+  # We must call _ParseAndStripGTestFlags() before calling
+  # unittest.main().  Otherwise the latter will be confused by the
+  # --gtest_* flags.
+  _ParseAndStripGTestFlags(sys.argv)
+  # The tested binaries should not be writing XML output files unless the
+  # script explicitly instructs them to.
+  # TODO(vladl@google.com): Move this into Subprocess when we implement
+  # passing environment into it as a parameter.
+  if GTEST_OUTPUT_VAR_NAME in os.environ:
+    del os.environ[GTEST_OUTPUT_VAR_NAME]
+
+  _test_module.main()
diff --git a/google-breakpad/src/testing/gtest/test/gtest_throw_on_failure_ex_test.cc b/google-breakpad/src/testing/gtest/test/gtest_throw_on_failure_ex_test.cc
new file mode 100644
index 0000000..8d46c76
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest_throw_on_failure_ex_test.cc
@@ -0,0 +1,92 @@
+// Copyright 2009, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Tests Google Test's throw-on-failure mode with exceptions enabled.
+
+#include "gtest/gtest.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdexcept>
+
+// Prints the given failure message and exits the program with
+// non-zero.  We use this instead of a Google Test assertion to
+// indicate a failure, as the latter is been tested and cannot be
+// relied on.
+void Fail(const char* msg) {
+  printf("FAILURE: %s\n", msg);
+  fflush(stdout);
+  exit(1);
+}
+
+// Tests that an assertion failure throws a subclass of
+// std::runtime_error.
+void TestFailureThrowsRuntimeError() {
+  testing::GTEST_FLAG(throw_on_failure) = true;
+
+  // A successful assertion shouldn't throw.
+  try {
+    EXPECT_EQ(3, 3);
+  } catch(...) {
+    Fail("A successful assertion wrongfully threw.");
+  }
+
+  // A failed assertion should throw a subclass of std::runtime_error.
+  try {
+    EXPECT_EQ(2, 3) << "Expected failure";
+  } catch(const std::runtime_error& e) {
+    if (strstr(e.what(), "Expected failure") != NULL)
+      return;
+
+    printf("%s",
+           "A failed assertion did throw an exception of the right type, "
+           "but the message is incorrect.  Instead of containing \"Expected "
+           "failure\", it is:\n");
+    Fail(e.what());
+  } catch(...) {
+    Fail("A failed assertion threw the wrong type of exception.");
+  }
+  Fail("A failed assertion should've thrown but didn't.");
+}
+
+int main(int argc, char** argv) {
+  testing::InitGoogleTest(&argc, argv);
+
+  // We want to ensure that people can use Google Test assertions in
+  // other testing frameworks, as long as they initialize Google Test
+  // properly and set the thrown-on-failure mode.  Therefore, we don't
+  // use Google Test's constructs for defining and running tests
+  // (e.g. TEST and RUN_ALL_TESTS) here.
+
+  TestFailureThrowsRuntimeError();
+  return 0;
+}
diff --git a/google-breakpad/src/testing/gtest/test/gtest_throw_on_failure_test.py b/google-breakpad/src/testing/gtest/test/gtest_throw_on_failure_test.py
new file mode 100755
index 0000000..5678ffe
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest_throw_on_failure_test.py
@@ -0,0 +1,171 @@
+#!/usr/bin/env python
+#
+# Copyright 2009, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+"""Tests Google Test's throw-on-failure mode with exceptions disabled.
+
+This script invokes gtest_throw_on_failure_test_ (a program written with
+Google Test) with different environments and command line flags.
+"""
+
+__author__ = 'wan@google.com (Zhanyong Wan)'
+
+import os
+import gtest_test_utils
+
+
+# Constants.
+
+# The command line flag for enabling/disabling the throw-on-failure mode.
+THROW_ON_FAILURE = 'gtest_throw_on_failure'
+
+# Path to the gtest_throw_on_failure_test_ program, compiled with
+# exceptions disabled.
+EXE_PATH = gtest_test_utils.GetTestExecutablePath(
+    'gtest_throw_on_failure_test_')
+
+
+# Utilities.
+
+
+def SetEnvVar(env_var, value):
+  """Sets an environment variable to a given value; unsets it when the
+  given value is None.
+  """
+
+  env_var = env_var.upper()
+  if value is not None:
+    os.environ[env_var] = value
+  elif env_var in os.environ:
+    del os.environ[env_var]
+
+
+def Run(command):
+  """Runs a command; returns True/False if its exit code is/isn't 0."""
+
+  print 'Running "%s". . .' % ' '.join(command)
+  p = gtest_test_utils.Subprocess(command)
+  return p.exited and p.exit_code == 0
+
+
+# The tests.  TODO(wan@google.com): refactor the class to share common
+# logic with code in gtest_break_on_failure_unittest.py.
+class ThrowOnFailureTest(gtest_test_utils.TestCase):
+  """Tests the throw-on-failure mode."""
+
+  def RunAndVerify(self, env_var_value, flag_value, should_fail):
+    """Runs gtest_throw_on_failure_test_ and verifies that it does
+    (or does not) exit with a non-zero code.
+
+    Args:
+      env_var_value:    value of the GTEST_BREAK_ON_FAILURE environment
+                        variable; None if the variable should be unset.
+      flag_value:       value of the --gtest_break_on_failure flag;
+                        None if the flag should not be present.
+      should_fail:      True iff the program is expected to fail.
+    """
+
+    SetEnvVar(THROW_ON_FAILURE, env_var_value)
+
+    if env_var_value is None:
+      env_var_value_msg = ' is not set'
+    else:
+      env_var_value_msg = '=' + env_var_value
+
+    if flag_value is None:
+      flag = ''
+    elif flag_value == '0':
+      flag = '--%s=0' % THROW_ON_FAILURE
+    else:
+      flag = '--%s' % THROW_ON_FAILURE
+
+    command = [EXE_PATH]
+    if flag:
+      command.append(flag)
+
+    if should_fail:
+      should_or_not = 'should'
+    else:
+      should_or_not = 'should not'
+
+    failed = not Run(command)
+
+    SetEnvVar(THROW_ON_FAILURE, None)
+
+    msg = ('when %s%s, an assertion failure in "%s" %s cause a non-zero '
+           'exit code.' %
+           (THROW_ON_FAILURE, env_var_value_msg, ' '.join(command),
+            should_or_not))
+    self.assert_(failed == should_fail, msg)
+
+  def testDefaultBehavior(self):
+    """Tests the behavior of the default mode."""
+
+    self.RunAndVerify(env_var_value=None, flag_value=None, should_fail=False)
+
+  def testThrowOnFailureEnvVar(self):
+    """Tests using the GTEST_THROW_ON_FAILURE environment variable."""
+
+    self.RunAndVerify(env_var_value='0',
+                      flag_value=None,
+                      should_fail=False)
+    self.RunAndVerify(env_var_value='1',
+                      flag_value=None,
+                      should_fail=True)
+
+  def testThrowOnFailureFlag(self):
+    """Tests using the --gtest_throw_on_failure flag."""
+
+    self.RunAndVerify(env_var_value=None,
+                      flag_value='0',
+                      should_fail=False)
+    self.RunAndVerify(env_var_value=None,
+                      flag_value='1',
+                      should_fail=True)
+
+  def testThrowOnFailureFlagOverridesEnvVar(self):
+    """Tests that --gtest_throw_on_failure overrides GTEST_THROW_ON_FAILURE."""
+
+    self.RunAndVerify(env_var_value='0',
+                      flag_value='0',
+                      should_fail=False)
+    self.RunAndVerify(env_var_value='0',
+                      flag_value='1',
+                      should_fail=True)
+    self.RunAndVerify(env_var_value='1',
+                      flag_value='0',
+                      should_fail=False)
+    self.RunAndVerify(env_var_value='1',
+                      flag_value='1',
+                      should_fail=True)
+
+
+if __name__ == '__main__':
+  gtest_test_utils.Main()
diff --git a/google-breakpad/src/testing/gtest/test/gtest_throw_on_failure_test_.cc b/google-breakpad/src/testing/gtest/test/gtest_throw_on_failure_test_.cc
new file mode 100644
index 0000000..2b88fe3
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest_throw_on_failure_test_.cc
@@ -0,0 +1,72 @@
+// Copyright 2009, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Tests Google Test's throw-on-failure mode with exceptions disabled.
+//
+// This program must be compiled with exceptions disabled.  It will be
+// invoked by gtest_throw_on_failure_test.py, and is expected to exit
+// with non-zero in the throw-on-failure mode or 0 otherwise.
+
+#include "gtest/gtest.h"
+
+#include <stdio.h>                      // for fflush, fprintf, NULL, etc.
+#include <stdlib.h>                     // for exit
+#include <exception>                    // for set_terminate
+
+// This terminate handler aborts the program using exit() rather than abort().
+// This avoids showing pop-ups on Windows systems and core dumps on Unix-like
+// ones.
+void TerminateHandler() {
+  fprintf(stderr, "%s\n", "Unhandled C++ exception terminating the program.");
+  fflush(NULL);
+  exit(1);
+}
+
+int main(int argc, char** argv) {
+#if GTEST_HAS_EXCEPTIONS
+  std::set_terminate(&TerminateHandler);
+#endif
+  testing::InitGoogleTest(&argc, argv);
+
+  // We want to ensure that people can use Google Test assertions in
+  // other testing frameworks, as long as they initialize Google Test
+  // properly and set the throw-on-failure mode.  Therefore, we don't
+  // use Google Test's constructs for defining and running tests
+  // (e.g. TEST and RUN_ALL_TESTS) here.
+
+  // In the throw-on-failure mode with exceptions disabled, this
+  // assertion will cause the program to exit with a non-zero code.
+  EXPECT_EQ(2, 3);
+
+  // When not in the throw-on-failure mode, the control will reach
+  // here.
+  return 0;
+}
diff --git a/google-breakpad/src/testing/gtest/test/gtest_uninitialized_test.py b/google-breakpad/src/testing/gtest/test/gtest_uninitialized_test.py
new file mode 100755
index 0000000..6ae57ee
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest_uninitialized_test.py
@@ -0,0 +1,70 @@
+#!/usr/bin/env python
+#
+# Copyright 2008, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+"""Verifies that Google Test warns the user when not initialized properly."""
+
+__author__ = 'wan@google.com (Zhanyong Wan)'
+
+import gtest_test_utils
+
+
+COMMAND = gtest_test_utils.GetTestExecutablePath('gtest_uninitialized_test_')
+
+
+def Assert(condition):
+  if not condition:
+    raise AssertionError
+
+
+def AssertEq(expected, actual):
+  if expected != actual:
+    print 'Expected: %s' % (expected,)
+    print '  Actual: %s' % (actual,)
+    raise AssertionError
+
+
+def TestExitCodeAndOutput(command):
+  """Runs the given command and verifies its exit code and output."""
+
+  # Verifies that 'command' exits with code 1.
+  p = gtest_test_utils.Subprocess(command)
+  Assert(p.exited)
+  AssertEq(1, p.exit_code)
+  Assert('InitGoogleTest' in p.output)
+
+
+class GTestUninitializedTest(gtest_test_utils.TestCase):
+  def testExitCodeAndOutput(self):
+    TestExitCodeAndOutput(COMMAND)
+
+
+if __name__ == '__main__':
+  gtest_test_utils.Main()
diff --git a/google-breakpad/src/testing/gtest/test/gtest_uninitialized_test_.cc b/google-breakpad/src/testing/gtest/test/gtest_uninitialized_test_.cc
new file mode 100644
index 0000000..4431698
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest_uninitialized_test_.cc
@@ -0,0 +1,43 @@
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+#include "gtest/gtest.h"
+
+TEST(DummyTest, Dummy) {
+  // This test doesn't verify anything.  We just need it to create a
+  // realistic stage for testing the behavior of Google Test when
+  // RUN_ALL_TESTS() is called without testing::InitGoogleTest() being
+  // called first.
+}
+
+int main() {
+  return RUN_ALL_TESTS();
+}
diff --git a/google-breakpad/src/testing/gtest/test/gtest_unittest.cc b/google-breakpad/src/testing/gtest/test/gtest_unittest.cc
new file mode 100644
index 0000000..e61f791
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest_unittest.cc
@@ -0,0 +1,7557 @@
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+//
+// Tests for Google Test itself.  This verifies that the basic constructs of
+// Google Test work.
+
+#include "gtest/gtest.h"
+
+// Verifies that the command line flag variables can be accessed
+// in code once <gtest/gtest.h> has been #included.
+// Do not move it after other #includes.
+TEST(CommandLineFlagsTest, CanBeAccessedInCodeOnceGTestHIsIncluded) {
+  bool dummy = testing::GTEST_FLAG(also_run_disabled_tests)
+      || testing::GTEST_FLAG(break_on_failure)
+      || testing::GTEST_FLAG(catch_exceptions)
+      || testing::GTEST_FLAG(color) != "unknown"
+      || testing::GTEST_FLAG(filter) != "unknown"
+      || testing::GTEST_FLAG(list_tests)
+      || testing::GTEST_FLAG(output) != "unknown"
+      || testing::GTEST_FLAG(print_time)
+      || testing::GTEST_FLAG(random_seed)
+      || testing::GTEST_FLAG(repeat) > 0
+      || testing::GTEST_FLAG(show_internal_stack_frames)
+      || testing::GTEST_FLAG(shuffle)
+      || testing::GTEST_FLAG(stack_trace_depth) > 0
+      || testing::GTEST_FLAG(stream_result_to) != "unknown"
+      || testing::GTEST_FLAG(throw_on_failure);
+  EXPECT_TRUE(dummy || !dummy);  // Suppresses warning that dummy is unused.
+}
+
+#include <limits.h>  // For INT_MAX.
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+
+#include <map>
+#include <vector>
+#include <ostream>
+
+#include "gtest/gtest-spi.h"
+
+// Indicates that this translation unit is part of Google Test's
+// implementation.  It must come before gtest-internal-inl.h is
+// included, or there will be a compiler error.  This trick is to
+// prevent a user from accidentally including gtest-internal-inl.h in
+// his code.
+#define GTEST_IMPLEMENTATION_ 1
+#include "src/gtest-internal-inl.h"
+#undef GTEST_IMPLEMENTATION_
+
+namespace testing {
+namespace internal {
+
+// Provides access to otherwise private parts of the TestEventListeners class
+// that are needed to test it.
+class TestEventListenersAccessor {
+ public:
+  static TestEventListener* GetRepeater(TestEventListeners* listeners) {
+    return listeners->repeater();
+  }
+
+  static void SetDefaultResultPrinter(TestEventListeners* listeners,
+                                      TestEventListener* listener) {
+    listeners->SetDefaultResultPrinter(listener);
+  }
+  static void SetDefaultXmlGenerator(TestEventListeners* listeners,
+                                     TestEventListener* listener) {
+    listeners->SetDefaultXmlGenerator(listener);
+  }
+
+  static bool EventForwardingEnabled(const TestEventListeners& listeners) {
+    return listeners.EventForwardingEnabled();
+  }
+
+  static void SuppressEventForwarding(TestEventListeners* listeners) {
+    listeners->SuppressEventForwarding();
+  }
+};
+
+}  // namespace internal
+}  // namespace testing
+
+using testing::AssertionFailure;
+using testing::AssertionResult;
+using testing::AssertionSuccess;
+using testing::DoubleLE;
+using testing::EmptyTestEventListener;
+using testing::FloatLE;
+using testing::GTEST_FLAG(also_run_disabled_tests);
+using testing::GTEST_FLAG(break_on_failure);
+using testing::GTEST_FLAG(catch_exceptions);
+using testing::GTEST_FLAG(color);
+using testing::GTEST_FLAG(death_test_use_fork);
+using testing::GTEST_FLAG(filter);
+using testing::GTEST_FLAG(list_tests);
+using testing::GTEST_FLAG(output);
+using testing::GTEST_FLAG(print_time);
+using testing::GTEST_FLAG(random_seed);
+using testing::GTEST_FLAG(repeat);
+using testing::GTEST_FLAG(show_internal_stack_frames);
+using testing::GTEST_FLAG(shuffle);
+using testing::GTEST_FLAG(stack_trace_depth);
+using testing::GTEST_FLAG(stream_result_to);
+using testing::GTEST_FLAG(throw_on_failure);
+using testing::IsNotSubstring;
+using testing::IsSubstring;
+using testing::Message;
+using testing::ScopedFakeTestPartResultReporter;
+using testing::StaticAssertTypeEq;
+using testing::Test;
+using testing::TestCase;
+using testing::TestEventListeners;
+using testing::TestPartResult;
+using testing::TestPartResultArray;
+using testing::TestProperty;
+using testing::TestResult;
+using testing::TimeInMillis;
+using testing::UnitTest;
+using testing::kMaxStackTraceDepth;
+using testing::internal::AddReference;
+using testing::internal::AlwaysFalse;
+using testing::internal::AlwaysTrue;
+using testing::internal::AppendUserMessage;
+using testing::internal::ArrayAwareFind;
+using testing::internal::ArrayEq;
+using testing::internal::CodePointToUtf8;
+using testing::internal::CompileAssertTypesEqual;
+using testing::internal::CopyArray;
+using testing::internal::CountIf;
+using testing::internal::EqFailure;
+using testing::internal::FloatingPoint;
+using testing::internal::ForEach;
+using testing::internal::FormatEpochTimeInMillisAsIso8601;
+using testing::internal::FormatTimeInMillisAsSeconds;
+using testing::internal::GTestFlagSaver;
+using testing::internal::GetCurrentOsStackTraceExceptTop;
+using testing::internal::GetElementOr;
+using testing::internal::GetNextRandomSeed;
+using testing::internal::GetRandomSeedFromFlag;
+using testing::internal::GetTestTypeId;
+using testing::internal::GetTimeInMillis;
+using testing::internal::GetTypeId;
+using testing::internal::GetUnitTestImpl;
+using testing::internal::ImplicitlyConvertible;
+using testing::internal::Int32;
+using testing::internal::Int32FromEnvOrDie;
+using testing::internal::IsAProtocolMessage;
+using testing::internal::IsContainer;
+using testing::internal::IsContainerTest;
+using testing::internal::IsNotContainer;
+using testing::internal::NativeArray;
+using testing::internal::ParseInt32Flag;
+using testing::internal::RemoveConst;
+using testing::internal::RemoveReference;
+using testing::internal::ShouldRunTestOnShard;
+using testing::internal::ShouldShard;
+using testing::internal::ShouldUseColor;
+using testing::internal::Shuffle;
+using testing::internal::ShuffleRange;
+using testing::internal::SkipPrefix;
+using testing::internal::StreamableToString;
+using testing::internal::String;
+using testing::internal::TestEventListenersAccessor;
+using testing::internal::TestResultAccessor;
+using testing::internal::UInt32;
+using testing::internal::WideStringToUtf8;
+using testing::internal::kCopy;
+using testing::internal::kMaxRandomSeed;
+using testing::internal::kReference;
+using testing::internal::kTestTypeIdInGoogleTest;
+using testing::internal::scoped_ptr;
+
+#if GTEST_HAS_STREAM_REDIRECTION
+using testing::internal::CaptureStdout;
+using testing::internal::GetCapturedStdout;
+#endif
+
+#if GTEST_IS_THREADSAFE
+using testing::internal::ThreadWithParam;
+#endif
+
+class TestingVector : public std::vector<int> {
+};
+
+::std::ostream& operator<<(::std::ostream& os,
+                           const TestingVector& vector) {
+  os << "{ ";
+  for (size_t i = 0; i < vector.size(); i++) {
+    os << vector[i] << " ";
+  }
+  os << "}";
+  return os;
+}
+
+// This line tests that we can define tests in an unnamed namespace.
+namespace {
+
+TEST(GetRandomSeedFromFlagTest, HandlesZero) {
+  const int seed = GetRandomSeedFromFlag(0);
+  EXPECT_LE(1, seed);
+  EXPECT_LE(seed, static_cast<int>(kMaxRandomSeed));
+}
+
+TEST(GetRandomSeedFromFlagTest, PreservesValidSeed) {
+  EXPECT_EQ(1, GetRandomSeedFromFlag(1));
+  EXPECT_EQ(2, GetRandomSeedFromFlag(2));
+  EXPECT_EQ(kMaxRandomSeed - 1, GetRandomSeedFromFlag(kMaxRandomSeed - 1));
+  EXPECT_EQ(static_cast<int>(kMaxRandomSeed),
+            GetRandomSeedFromFlag(kMaxRandomSeed));
+}
+
+TEST(GetRandomSeedFromFlagTest, NormalizesInvalidSeed) {
+  const int seed1 = GetRandomSeedFromFlag(-1);
+  EXPECT_LE(1, seed1);
+  EXPECT_LE(seed1, static_cast<int>(kMaxRandomSeed));
+
+  const int seed2 = GetRandomSeedFromFlag(kMaxRandomSeed + 1);
+  EXPECT_LE(1, seed2);
+  EXPECT_LE(seed2, static_cast<int>(kMaxRandomSeed));
+}
+
+TEST(GetNextRandomSeedTest, WorksForValidInput) {
+  EXPECT_EQ(2, GetNextRandomSeed(1));
+  EXPECT_EQ(3, GetNextRandomSeed(2));
+  EXPECT_EQ(static_cast<int>(kMaxRandomSeed),
+            GetNextRandomSeed(kMaxRandomSeed - 1));
+  EXPECT_EQ(1, GetNextRandomSeed(kMaxRandomSeed));
+
+  // We deliberately don't test GetNextRandomSeed() with invalid
+  // inputs, as that requires death tests, which are expensive.  This
+  // is fine as GetNextRandomSeed() is internal and has a
+  // straightforward definition.
+}
+
+static void ClearCurrentTestPartResults() {
+  TestResultAccessor::ClearTestPartResults(
+      GetUnitTestImpl()->current_test_result());
+}
+
+// Tests GetTypeId.
+
+TEST(GetTypeIdTest, ReturnsSameValueForSameType) {
+  EXPECT_EQ(GetTypeId<int>(), GetTypeId<int>());
+  EXPECT_EQ(GetTypeId<Test>(), GetTypeId<Test>());
+}
+
+class SubClassOfTest : public Test {};
+class AnotherSubClassOfTest : public Test {};
+
+TEST(GetTypeIdTest, ReturnsDifferentValuesForDifferentTypes) {
+  EXPECT_NE(GetTypeId<int>(), GetTypeId<const int>());
+  EXPECT_NE(GetTypeId<int>(), GetTypeId<char>());
+  EXPECT_NE(GetTypeId<int>(), GetTestTypeId());
+  EXPECT_NE(GetTypeId<SubClassOfTest>(), GetTestTypeId());
+  EXPECT_NE(GetTypeId<AnotherSubClassOfTest>(), GetTestTypeId());
+  EXPECT_NE(GetTypeId<AnotherSubClassOfTest>(), GetTypeId<SubClassOfTest>());
+}
+
+// Verifies that GetTestTypeId() returns the same value, no matter it
+// is called from inside Google Test or outside of it.
+TEST(GetTestTypeIdTest, ReturnsTheSameValueInsideOrOutsideOfGoogleTest) {
+  EXPECT_EQ(kTestTypeIdInGoogleTest, GetTestTypeId());
+}
+
+// Tests FormatTimeInMillisAsSeconds().
+
+TEST(FormatTimeInMillisAsSecondsTest, FormatsZero) {
+  EXPECT_EQ("0", FormatTimeInMillisAsSeconds(0));
+}
+
+TEST(FormatTimeInMillisAsSecondsTest, FormatsPositiveNumber) {
+  EXPECT_EQ("0.003", FormatTimeInMillisAsSeconds(3));
+  EXPECT_EQ("0.01", FormatTimeInMillisAsSeconds(10));
+  EXPECT_EQ("0.2", FormatTimeInMillisAsSeconds(200));
+  EXPECT_EQ("1.2", FormatTimeInMillisAsSeconds(1200));
+  EXPECT_EQ("3", FormatTimeInMillisAsSeconds(3000));
+}
+
+TEST(FormatTimeInMillisAsSecondsTest, FormatsNegativeNumber) {
+  EXPECT_EQ("-0.003", FormatTimeInMillisAsSeconds(-3));
+  EXPECT_EQ("-0.01", FormatTimeInMillisAsSeconds(-10));
+  EXPECT_EQ("-0.2", FormatTimeInMillisAsSeconds(-200));
+  EXPECT_EQ("-1.2", FormatTimeInMillisAsSeconds(-1200));
+  EXPECT_EQ("-3", FormatTimeInMillisAsSeconds(-3000));
+}
+
+// Tests FormatEpochTimeInMillisAsIso8601().  The correctness of conversion
+// for particular dates below was verified in Python using
+// datetime.datetime.fromutctimestamp(<timetamp>/1000).
+
+// FormatEpochTimeInMillisAsIso8601 depends on the current timezone, so we
+// have to set up a particular timezone to obtain predictable results.
+class FormatEpochTimeInMillisAsIso8601Test : public Test {
+ public:
+  // On Cygwin, GCC doesn't allow unqualified integer literals to exceed
+  // 32 bits, even when 64-bit integer types are available.  We have to
+  // force the constants to have a 64-bit type here.
+  static const TimeInMillis kMillisPerSec = 1000;
+
+ private:
+  virtual void SetUp() {
+    saved_tz_ = NULL;
+#if _MSC_VER
+# pragma warning(push)          // Saves the current warning state.
+# pragma warning(disable:4996)  // Temporarily disables warning 4996
+                                // (function or variable may be unsafe
+                                // for getenv, function is deprecated for
+                                // strdup).
+    if (getenv("TZ"))
+      saved_tz_ = strdup(getenv("TZ"));
+# pragma warning(pop)           // Restores the warning state again.
+#else
+    if (getenv("TZ"))
+      saved_tz_ = strdup(getenv("TZ"));
+#endif
+
+    // Set up the time zone for FormatEpochTimeInMillisAsIso8601 to use.  We
+    // cannot use the local time zone because the function's output depends
+    // on the time zone.
+    SetTimeZone("UTC+00");
+  }
+
+  virtual void TearDown() {
+    SetTimeZone(saved_tz_);
+    free(const_cast<char*>(saved_tz_));
+    saved_tz_ = NULL;
+  }
+
+  static void SetTimeZone(const char* time_zone) {
+    // tzset() distinguishes between the TZ variable being present and empty
+    // and not being present, so we have to consider the case of time_zone
+    // being NULL.
+#if _MSC_VER
+    // ...Unless it's MSVC, whose standard library's _putenv doesn't
+    // distinguish between an empty and a missing variable.
+    const std::string env_var =
+        std::string("TZ=") + (time_zone ? time_zone : "");
+    _putenv(env_var.c_str());
+# pragma warning(push)          // Saves the current warning state.
+# pragma warning(disable:4996)  // Temporarily disables warning 4996
+                                // (function is deprecated).
+    tzset();
+# pragma warning(pop)           // Restores the warning state again.
+#else
+    if (time_zone) {
+      setenv(("TZ"), time_zone, 1);
+    } else {
+      unsetenv("TZ");
+    }
+    tzset();
+#endif
+  }
+
+  const char* saved_tz_;
+};
+
+const TimeInMillis FormatEpochTimeInMillisAsIso8601Test::kMillisPerSec;
+
+TEST_F(FormatEpochTimeInMillisAsIso8601Test, PrintsTwoDigitSegments) {
+  EXPECT_EQ("2011-10-31T18:52:42",
+            FormatEpochTimeInMillisAsIso8601(1320087162 * kMillisPerSec));
+}
+
+TEST_F(FormatEpochTimeInMillisAsIso8601Test, MillisecondsDoNotAffectResult) {
+  EXPECT_EQ(
+      "2011-10-31T18:52:42",
+      FormatEpochTimeInMillisAsIso8601(1320087162 * kMillisPerSec + 234));
+}
+
+TEST_F(FormatEpochTimeInMillisAsIso8601Test, PrintsLeadingZeroes) {
+  EXPECT_EQ("2011-09-03T05:07:02",
+            FormatEpochTimeInMillisAsIso8601(1315026422 * kMillisPerSec));
+}
+
+TEST_F(FormatEpochTimeInMillisAsIso8601Test, Prints24HourTime) {
+  EXPECT_EQ("2011-09-28T17:08:22",
+            FormatEpochTimeInMillisAsIso8601(1317229702 * kMillisPerSec));
+}
+
+TEST_F(FormatEpochTimeInMillisAsIso8601Test, PrintsEpochStart) {
+  EXPECT_EQ("1970-01-01T00:00:00", FormatEpochTimeInMillisAsIso8601(0));
+}
+
+#if GTEST_CAN_COMPARE_NULL
+
+# ifdef __BORLANDC__
+// Silences warnings: "Condition is always true", "Unreachable code"
+#  pragma option push -w-ccc -w-rch
+# endif
+
+// Tests that GTEST_IS_NULL_LITERAL_(x) is true when x is a null
+// pointer literal.
+TEST(NullLiteralTest, IsTrueForNullLiterals) {
+  EXPECT_TRUE(GTEST_IS_NULL_LITERAL_(NULL));
+  EXPECT_TRUE(GTEST_IS_NULL_LITERAL_(0));
+  EXPECT_TRUE(GTEST_IS_NULL_LITERAL_(0U));
+  EXPECT_TRUE(GTEST_IS_NULL_LITERAL_(0L));
+
+# ifndef __BORLANDC__
+
+  // Some compilers may fail to detect some null pointer literals;
+  // as long as users of the framework don't use such literals, this
+  // is harmless.
+  EXPECT_TRUE(GTEST_IS_NULL_LITERAL_(1 - 1));
+
+# endif
+}
+
+// Tests that GTEST_IS_NULL_LITERAL_(x) is false when x is not a null
+// pointer literal.
+TEST(NullLiteralTest, IsFalseForNonNullLiterals) {
+  EXPECT_FALSE(GTEST_IS_NULL_LITERAL_(1));
+  EXPECT_FALSE(GTEST_IS_NULL_LITERAL_(0.0));
+  EXPECT_FALSE(GTEST_IS_NULL_LITERAL_('a'));
+  EXPECT_FALSE(GTEST_IS_NULL_LITERAL_(static_cast<void*>(NULL)));
+}
+
+# ifdef __BORLANDC__
+// Restores warnings after previous "#pragma option push" suppressed them.
+#  pragma option pop
+# endif
+
+#endif  // GTEST_CAN_COMPARE_NULL
+//
+// Tests CodePointToUtf8().
+
+// Tests that the NUL character L'\0' is encoded correctly.
+TEST(CodePointToUtf8Test, CanEncodeNul) {
+  char buffer[32];
+  EXPECT_STREQ("", CodePointToUtf8(L'\0', buffer));
+}
+
+// Tests that ASCII characters are encoded correctly.
+TEST(CodePointToUtf8Test, CanEncodeAscii) {
+  char buffer[32];
+  EXPECT_STREQ("a", CodePointToUtf8(L'a', buffer));
+  EXPECT_STREQ("Z", CodePointToUtf8(L'Z', buffer));
+  EXPECT_STREQ("&", CodePointToUtf8(L'&', buffer));
+  EXPECT_STREQ("\x7F", CodePointToUtf8(L'\x7F', buffer));
+}
+
+// Tests that Unicode code-points that have 8 to 11 bits are encoded
+// as 110xxxxx 10xxxxxx.
+TEST(CodePointToUtf8Test, CanEncode8To11Bits) {
+  char buffer[32];
+  // 000 1101 0011 => 110-00011 10-010011
+  EXPECT_STREQ("\xC3\x93", CodePointToUtf8(L'\xD3', buffer));
+
+  // 101 0111 0110 => 110-10101 10-110110
+  // Some compilers (e.g., GCC on MinGW) cannot handle non-ASCII codepoints
+  // in wide strings and wide chars. In order to accomodate them, we have to
+  // introduce such character constants as integers.
+  EXPECT_STREQ("\xD5\xB6",
+               CodePointToUtf8(static_cast<wchar_t>(0x576), buffer));
+}
+
+// Tests that Unicode code-points that have 12 to 16 bits are encoded
+// as 1110xxxx 10xxxxxx 10xxxxxx.
+TEST(CodePointToUtf8Test, CanEncode12To16Bits) {
+  char buffer[32];
+  // 0000 1000 1101 0011 => 1110-0000 10-100011 10-010011
+  EXPECT_STREQ("\xE0\xA3\x93",
+               CodePointToUtf8(static_cast<wchar_t>(0x8D3), buffer));
+
+  // 1100 0111 0100 1101 => 1110-1100 10-011101 10-001101
+  EXPECT_STREQ("\xEC\x9D\x8D",
+               CodePointToUtf8(static_cast<wchar_t>(0xC74D), buffer));
+}
+
+#if !GTEST_WIDE_STRING_USES_UTF16_
+// Tests in this group require a wchar_t to hold > 16 bits, and thus
+// are skipped on Windows, Cygwin, and Symbian, where a wchar_t is
+// 16-bit wide. This code may not compile on those systems.
+
+// Tests that Unicode code-points that have 17 to 21 bits are encoded
+// as 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx.
+TEST(CodePointToUtf8Test, CanEncode17To21Bits) {
+  char buffer[32];
+  // 0 0001 0000 1000 1101 0011 => 11110-000 10-010000 10-100011 10-010011
+  EXPECT_STREQ("\xF0\x90\xA3\x93", CodePointToUtf8(L'\x108D3', buffer));
+
+  // 0 0001 0000 0100 0000 0000 => 11110-000 10-010000 10-010000 10-000000
+  EXPECT_STREQ("\xF0\x90\x90\x80", CodePointToUtf8(L'\x10400', buffer));
+
+  // 1 0000 1000 0110 0011 0100 => 11110-100 10-001000 10-011000 10-110100
+  EXPECT_STREQ("\xF4\x88\x98\xB4", CodePointToUtf8(L'\x108634', buffer));
+}
+
+// Tests that encoding an invalid code-point generates the expected result.
+TEST(CodePointToUtf8Test, CanEncodeInvalidCodePoint) {
+  char buffer[32];
+  EXPECT_STREQ("(Invalid Unicode 0x1234ABCD)",
+               CodePointToUtf8(L'\x1234ABCD', buffer));
+}
+
+#endif  // !GTEST_WIDE_STRING_USES_UTF16_
+
+// Tests WideStringToUtf8().
+
+// Tests that the NUL character L'\0' is encoded correctly.
+TEST(WideStringToUtf8Test, CanEncodeNul) {
+  EXPECT_STREQ("", WideStringToUtf8(L"", 0).c_str());
+  EXPECT_STREQ("", WideStringToUtf8(L"", -1).c_str());
+}
+
+// Tests that ASCII strings are encoded correctly.
+TEST(WideStringToUtf8Test, CanEncodeAscii) {
+  EXPECT_STREQ("a", WideStringToUtf8(L"a", 1).c_str());
+  EXPECT_STREQ("ab", WideStringToUtf8(L"ab", 2).c_str());
+  EXPECT_STREQ("a", WideStringToUtf8(L"a", -1).c_str());
+  EXPECT_STREQ("ab", WideStringToUtf8(L"ab", -1).c_str());
+}
+
+// Tests that Unicode code-points that have 8 to 11 bits are encoded
+// as 110xxxxx 10xxxxxx.
+TEST(WideStringToUtf8Test, CanEncode8To11Bits) {
+  // 000 1101 0011 => 110-00011 10-010011
+  EXPECT_STREQ("\xC3\x93", WideStringToUtf8(L"\xD3", 1).c_str());
+  EXPECT_STREQ("\xC3\x93", WideStringToUtf8(L"\xD3", -1).c_str());
+
+  // 101 0111 0110 => 110-10101 10-110110
+  const wchar_t s[] = { 0x576, '\0' };
+  EXPECT_STREQ("\xD5\xB6", WideStringToUtf8(s, 1).c_str());
+  EXPECT_STREQ("\xD5\xB6", WideStringToUtf8(s, -1).c_str());
+}
+
+// Tests that Unicode code-points that have 12 to 16 bits are encoded
+// as 1110xxxx 10xxxxxx 10xxxxxx.
+TEST(WideStringToUtf8Test, CanEncode12To16Bits) {
+  // 0000 1000 1101 0011 => 1110-0000 10-100011 10-010011
+  const wchar_t s1[] = { 0x8D3, '\0' };
+  EXPECT_STREQ("\xE0\xA3\x93", WideStringToUtf8(s1, 1).c_str());
+  EXPECT_STREQ("\xE0\xA3\x93", WideStringToUtf8(s1, -1).c_str());
+
+  // 1100 0111 0100 1101 => 1110-1100 10-011101 10-001101
+  const wchar_t s2[] = { 0xC74D, '\0' };
+  EXPECT_STREQ("\xEC\x9D\x8D", WideStringToUtf8(s2, 1).c_str());
+  EXPECT_STREQ("\xEC\x9D\x8D", WideStringToUtf8(s2, -1).c_str());
+}
+
+// Tests that the conversion stops when the function encounters \0 character.
+TEST(WideStringToUtf8Test, StopsOnNulCharacter) {
+  EXPECT_STREQ("ABC", WideStringToUtf8(L"ABC\0XYZ", 100).c_str());
+}
+
+// Tests that the conversion stops when the function reaches the limit
+// specified by the 'length' parameter.
+TEST(WideStringToUtf8Test, StopsWhenLengthLimitReached) {
+  EXPECT_STREQ("ABC", WideStringToUtf8(L"ABCDEF", 3).c_str());
+}
+
+#if !GTEST_WIDE_STRING_USES_UTF16_
+// Tests that Unicode code-points that have 17 to 21 bits are encoded
+// as 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx. This code may not compile
+// on the systems using UTF-16 encoding.
+TEST(WideStringToUtf8Test, CanEncode17To21Bits) {
+  // 0 0001 0000 1000 1101 0011 => 11110-000 10-010000 10-100011 10-010011
+  EXPECT_STREQ("\xF0\x90\xA3\x93", WideStringToUtf8(L"\x108D3", 1).c_str());
+  EXPECT_STREQ("\xF0\x90\xA3\x93", WideStringToUtf8(L"\x108D3", -1).c_str());
+
+  // 1 0000 1000 0110 0011 0100 => 11110-100 10-001000 10-011000 10-110100
+  EXPECT_STREQ("\xF4\x88\x98\xB4", WideStringToUtf8(L"\x108634", 1).c_str());
+  EXPECT_STREQ("\xF4\x88\x98\xB4", WideStringToUtf8(L"\x108634", -1).c_str());
+}
+
+// Tests that encoding an invalid code-point generates the expected result.
+TEST(WideStringToUtf8Test, CanEncodeInvalidCodePoint) {
+  EXPECT_STREQ("(Invalid Unicode 0xABCDFF)",
+               WideStringToUtf8(L"\xABCDFF", -1).c_str());
+}
+#else  // !GTEST_WIDE_STRING_USES_UTF16_
+// Tests that surrogate pairs are encoded correctly on the systems using
+// UTF-16 encoding in the wide strings.
+TEST(WideStringToUtf8Test, CanEncodeValidUtf16SUrrogatePairs) {
+  const wchar_t s[] = { 0xD801, 0xDC00, '\0' };
+  EXPECT_STREQ("\xF0\x90\x90\x80", WideStringToUtf8(s, -1).c_str());
+}
+
+// Tests that encoding an invalid UTF-16 surrogate pair
+// generates the expected result.
+TEST(WideStringToUtf8Test, CanEncodeInvalidUtf16SurrogatePair) {
+  // Leading surrogate is at the end of the string.
+  const wchar_t s1[] = { 0xD800, '\0' };
+  EXPECT_STREQ("\xED\xA0\x80", WideStringToUtf8(s1, -1).c_str());
+  // Leading surrogate is not followed by the trailing surrogate.
+  const wchar_t s2[] = { 0xD800, 'M', '\0' };
+  EXPECT_STREQ("\xED\xA0\x80M", WideStringToUtf8(s2, -1).c_str());
+  // Trailing surrogate appearas without a leading surrogate.
+  const wchar_t s3[] = { 0xDC00, 'P', 'Q', 'R', '\0' };
+  EXPECT_STREQ("\xED\xB0\x80PQR", WideStringToUtf8(s3, -1).c_str());
+}
+#endif  // !GTEST_WIDE_STRING_USES_UTF16_
+
+// Tests that codepoint concatenation works correctly.
+#if !GTEST_WIDE_STRING_USES_UTF16_
+TEST(WideStringToUtf8Test, ConcatenatesCodepointsCorrectly) {
+  const wchar_t s[] = { 0x108634, 0xC74D, '\n', 0x576, 0x8D3, 0x108634, '\0'};
+  EXPECT_STREQ(
+      "\xF4\x88\x98\xB4"
+          "\xEC\x9D\x8D"
+          "\n"
+          "\xD5\xB6"
+          "\xE0\xA3\x93"
+          "\xF4\x88\x98\xB4",
+      WideStringToUtf8(s, -1).c_str());
+}
+#else
+TEST(WideStringToUtf8Test, ConcatenatesCodepointsCorrectly) {
+  const wchar_t s[] = { 0xC74D, '\n', 0x576, 0x8D3, '\0'};
+  EXPECT_STREQ(
+      "\xEC\x9D\x8D" "\n" "\xD5\xB6" "\xE0\xA3\x93",
+      WideStringToUtf8(s, -1).c_str());
+}
+#endif  // !GTEST_WIDE_STRING_USES_UTF16_
+
+// Tests the Random class.
+
+TEST(RandomDeathTest, GeneratesCrashesOnInvalidRange) {
+  testing::internal::Random random(42);
+  EXPECT_DEATH_IF_SUPPORTED(
+      random.Generate(0),
+      "Cannot generate a number in the range \\[0, 0\\)");
+  EXPECT_DEATH_IF_SUPPORTED(
+      random.Generate(testing::internal::Random::kMaxRange + 1),
+      "Generation of a number in \\[0, 2147483649\\) was requested, "
+      "but this can only generate numbers in \\[0, 2147483648\\)");
+}
+
+TEST(RandomTest, GeneratesNumbersWithinRange) {
+  const UInt32 kRange = 10000;
+  testing::internal::Random random(12345);
+  for (int i = 0; i < 10; i++) {
+    EXPECT_LT(random.Generate(kRange), kRange) << " for iteration " << i;
+  }
+
+  testing::internal::Random random2(testing::internal::Random::kMaxRange);
+  for (int i = 0; i < 10; i++) {
+    EXPECT_LT(random2.Generate(kRange), kRange) << " for iteration " << i;
+  }
+}
+
+TEST(RandomTest, RepeatsWhenReseeded) {
+  const int kSeed = 123;
+  const int kArraySize = 10;
+  const UInt32 kRange = 10000;
+  UInt32 values[kArraySize];
+
+  testing::internal::Random random(kSeed);
+  for (int i = 0; i < kArraySize; i++) {
+    values[i] = random.Generate(kRange);
+  }
+
+  random.Reseed(kSeed);
+  for (int i = 0; i < kArraySize; i++) {
+    EXPECT_EQ(values[i], random.Generate(kRange)) << " for iteration " << i;
+  }
+}
+
+// Tests STL container utilities.
+
+// Tests CountIf().
+
+static bool IsPositive(int n) { return n > 0; }
+
+TEST(ContainerUtilityTest, CountIf) {
+  std::vector<int> v;
+  EXPECT_EQ(0, CountIf(v, IsPositive));  // Works for an empty container.
+
+  v.push_back(-1);
+  v.push_back(0);
+  EXPECT_EQ(0, CountIf(v, IsPositive));  // Works when no value satisfies.
+
+  v.push_back(2);
+  v.push_back(-10);
+  v.push_back(10);
+  EXPECT_EQ(2, CountIf(v, IsPositive));
+}
+
+// Tests ForEach().
+
+static int g_sum = 0;
+static void Accumulate(int n) { g_sum += n; }
+
+TEST(ContainerUtilityTest, ForEach) {
+  std::vector<int> v;
+  g_sum = 0;
+  ForEach(v, Accumulate);
+  EXPECT_EQ(0, g_sum);  // Works for an empty container;
+
+  g_sum = 0;
+  v.push_back(1);
+  ForEach(v, Accumulate);
+  EXPECT_EQ(1, g_sum);  // Works for a container with one element.
+
+  g_sum = 0;
+  v.push_back(20);
+  v.push_back(300);
+  ForEach(v, Accumulate);
+  EXPECT_EQ(321, g_sum);
+}
+
+// Tests GetElementOr().
+TEST(ContainerUtilityTest, GetElementOr) {
+  std::vector<char> a;
+  EXPECT_EQ('x', GetElementOr(a, 0, 'x'));
+
+  a.push_back('a');
+  a.push_back('b');
+  EXPECT_EQ('a', GetElementOr(a, 0, 'x'));
+  EXPECT_EQ('b', GetElementOr(a, 1, 'x'));
+  EXPECT_EQ('x', GetElementOr(a, -2, 'x'));
+  EXPECT_EQ('x', GetElementOr(a, 2, 'x'));
+}
+
+TEST(ContainerUtilityDeathTest, ShuffleRange) {
+  std::vector<int> a;
+  a.push_back(0);
+  a.push_back(1);
+  a.push_back(2);
+  testing::internal::Random random(1);
+
+  EXPECT_DEATH_IF_SUPPORTED(
+      ShuffleRange(&random, -1, 1, &a),
+      "Invalid shuffle range start -1: must be in range \\[0, 3\\]");
+  EXPECT_DEATH_IF_SUPPORTED(
+      ShuffleRange(&random, 4, 4, &a),
+      "Invalid shuffle range start 4: must be in range \\[0, 3\\]");
+  EXPECT_DEATH_IF_SUPPORTED(
+      ShuffleRange(&random, 3, 2, &a),
+      "Invalid shuffle range finish 2: must be in range \\[3, 3\\]");
+  EXPECT_DEATH_IF_SUPPORTED(
+      ShuffleRange(&random, 3, 4, &a),
+      "Invalid shuffle range finish 4: must be in range \\[3, 3\\]");
+}
+
+class VectorShuffleTest : public Test {
+ protected:
+  static const int kVectorSize = 20;
+
+  VectorShuffleTest() : random_(1) {
+    for (int i = 0; i < kVectorSize; i++) {
+      vector_.push_back(i);
+    }
+  }
+
+  static bool VectorIsCorrupt(const TestingVector& vector) {
+    if (kVectorSize != static_cast<int>(vector.size())) {
+      return true;
+    }
+
+    bool found_in_vector[kVectorSize] = { false };
+    for (size_t i = 0; i < vector.size(); i++) {
+      const int e = vector[i];
+      if (e < 0 || e >= kVectorSize || found_in_vector[e]) {
+        return true;
+      }
+      found_in_vector[e] = true;
+    }
+
+    // Vector size is correct, elements' range is correct, no
+    // duplicate elements.  Therefore no corruption has occurred.
+    return false;
+  }
+
+  static bool VectorIsNotCorrupt(const TestingVector& vector) {
+    return !VectorIsCorrupt(vector);
+  }
+
+  static bool RangeIsShuffled(const TestingVector& vector, int begin, int end) {
+    for (int i = begin; i < end; i++) {
+      if (i != vector[i]) {
+        return true;
+      }
+    }
+    return false;
+  }
+
+  static bool RangeIsUnshuffled(
+      const TestingVector& vector, int begin, int end) {
+    return !RangeIsShuffled(vector, begin, end);
+  }
+
+  static bool VectorIsShuffled(const TestingVector& vector) {
+    return RangeIsShuffled(vector, 0, static_cast<int>(vector.size()));
+  }
+
+  static bool VectorIsUnshuffled(const TestingVector& vector) {
+    return !VectorIsShuffled(vector);
+  }
+
+  testing::internal::Random random_;
+  TestingVector vector_;
+};  // class VectorShuffleTest
+
+const int VectorShuffleTest::kVectorSize;
+
+TEST_F(VectorShuffleTest, HandlesEmptyRange) {
+  // Tests an empty range at the beginning...
+  ShuffleRange(&random_, 0, 0, &vector_);
+  ASSERT_PRED1(VectorIsNotCorrupt, vector_);
+  ASSERT_PRED1(VectorIsUnshuffled, vector_);
+
+  // ...in the middle...
+  ShuffleRange(&random_, kVectorSize/2, kVectorSize/2, &vector_);
+  ASSERT_PRED1(VectorIsNotCorrupt, vector_);
+  ASSERT_PRED1(VectorIsUnshuffled, vector_);
+
+  // ...at the end...
+  ShuffleRange(&random_, kVectorSize - 1, kVectorSize - 1, &vector_);
+  ASSERT_PRED1(VectorIsNotCorrupt, vector_);
+  ASSERT_PRED1(VectorIsUnshuffled, vector_);
+
+  // ...and past the end.
+  ShuffleRange(&random_, kVectorSize, kVectorSize, &vector_);
+  ASSERT_PRED1(VectorIsNotCorrupt, vector_);
+  ASSERT_PRED1(VectorIsUnshuffled, vector_);
+}
+
+TEST_F(VectorShuffleTest, HandlesRangeOfSizeOne) {
+  // Tests a size one range at the beginning...
+  ShuffleRange(&random_, 0, 1, &vector_);
+  ASSERT_PRED1(VectorIsNotCorrupt, vector_);
+  ASSERT_PRED1(VectorIsUnshuffled, vector_);
+
+  // ...in the middle...
+  ShuffleRange(&random_, kVectorSize/2, kVectorSize/2 + 1, &vector_);
+  ASSERT_PRED1(VectorIsNotCorrupt, vector_);
+  ASSERT_PRED1(VectorIsUnshuffled, vector_);
+
+  // ...and at the end.
+  ShuffleRange(&random_, kVectorSize - 1, kVectorSize, &vector_);
+  ASSERT_PRED1(VectorIsNotCorrupt, vector_);
+  ASSERT_PRED1(VectorIsUnshuffled, vector_);
+}
+
+// Because we use our own random number generator and a fixed seed,
+// we can guarantee that the following "random" tests will succeed.
+
+TEST_F(VectorShuffleTest, ShufflesEntireVector) {
+  Shuffle(&random_, &vector_);
+  ASSERT_PRED1(VectorIsNotCorrupt, vector_);
+  EXPECT_FALSE(VectorIsUnshuffled(vector_)) << vector_;
+
+  // Tests the first and last elements in particular to ensure that
+  // there are no off-by-one problems in our shuffle algorithm.
+  EXPECT_NE(0, vector_[0]);
+  EXPECT_NE(kVectorSize - 1, vector_[kVectorSize - 1]);
+}
+
+TEST_F(VectorShuffleTest, ShufflesStartOfVector) {
+  const int kRangeSize = kVectorSize/2;
+
+  ShuffleRange(&random_, 0, kRangeSize, &vector_);
+
+  ASSERT_PRED1(VectorIsNotCorrupt, vector_);
+  EXPECT_PRED3(RangeIsShuffled, vector_, 0, kRangeSize);
+  EXPECT_PRED3(RangeIsUnshuffled, vector_, kRangeSize, kVectorSize);
+}
+
+TEST_F(VectorShuffleTest, ShufflesEndOfVector) {
+  const int kRangeSize = kVectorSize / 2;
+  ShuffleRange(&random_, kRangeSize, kVectorSize, &vector_);
+
+  ASSERT_PRED1(VectorIsNotCorrupt, vector_);
+  EXPECT_PRED3(RangeIsUnshuffled, vector_, 0, kRangeSize);
+  EXPECT_PRED3(RangeIsShuffled, vector_, kRangeSize, kVectorSize);
+}
+
+TEST_F(VectorShuffleTest, ShufflesMiddleOfVector) {
+  int kRangeSize = kVectorSize/3;
+  ShuffleRange(&random_, kRangeSize, 2*kRangeSize, &vector_);
+
+  ASSERT_PRED1(VectorIsNotCorrupt, vector_);
+  EXPECT_PRED3(RangeIsUnshuffled, vector_, 0, kRangeSize);
+  EXPECT_PRED3(RangeIsShuffled, vector_, kRangeSize, 2*kRangeSize);
+  EXPECT_PRED3(RangeIsUnshuffled, vector_, 2*kRangeSize, kVectorSize);
+}
+
+TEST_F(VectorShuffleTest, ShufflesRepeatably) {
+  TestingVector vector2;
+  for (int i = 0; i < kVectorSize; i++) {
+    vector2.push_back(i);
+  }
+
+  random_.Reseed(1234);
+  Shuffle(&random_, &vector_);
+  random_.Reseed(1234);
+  Shuffle(&random_, &vector2);
+
+  ASSERT_PRED1(VectorIsNotCorrupt, vector_);
+  ASSERT_PRED1(VectorIsNotCorrupt, vector2);
+
+  for (int i = 0; i < kVectorSize; i++) {
+    EXPECT_EQ(vector_[i], vector2[i]) << " where i is " << i;
+  }
+}
+
+// Tests the size of the AssertHelper class.
+
+TEST(AssertHelperTest, AssertHelperIsSmall) {
+  // To avoid breaking clients that use lots of assertions in one
+  // function, we cannot grow the size of AssertHelper.
+  EXPECT_LE(sizeof(testing::internal::AssertHelper), sizeof(void*));
+}
+
+// Tests the String class.
+
+// Tests String's constructors.
+TEST(StringTest, Constructors) {
+  // Default ctor.
+  String s1;
+  // We aren't using EXPECT_EQ(NULL, s1.c_str()) because comparing
+  // pointers with NULL isn't supported on all platforms.
+  EXPECT_EQ(0U, s1.length());
+  EXPECT_TRUE(NULL == s1.c_str());
+
+  // Implicitly constructs from a C-string.
+  String s2 = "Hi";
+  EXPECT_EQ(2U, s2.length());
+  EXPECT_STREQ("Hi", s2.c_str());
+
+  // Constructs from a C-string and a length.
+  String s3("hello", 3);
+  EXPECT_EQ(3U, s3.length());
+  EXPECT_STREQ("hel", s3.c_str());
+
+  // The empty String should be created when String is constructed with
+  // a NULL pointer and length 0.
+  EXPECT_EQ(0U, String(NULL, 0).length());
+  EXPECT_FALSE(String(NULL, 0).c_str() == NULL);
+
+  // Constructs a String that contains '\0'.
+  String s4("a\0bcd", 4);
+  EXPECT_EQ(4U, s4.length());
+  EXPECT_EQ('a', s4.c_str()[0]);
+  EXPECT_EQ('\0', s4.c_str()[1]);
+  EXPECT_EQ('b', s4.c_str()[2]);
+  EXPECT_EQ('c', s4.c_str()[3]);
+
+  // Copy ctor where the source is NULL.
+  const String null_str;
+  String s5 = null_str;
+  EXPECT_TRUE(s5.c_str() == NULL);
+
+  // Copy ctor where the source isn't NULL.
+  String s6 = s3;
+  EXPECT_EQ(3U, s6.length());
+  EXPECT_STREQ("hel", s6.c_str());
+
+  // Copy ctor where the source contains '\0'.
+  String s7 = s4;
+  EXPECT_EQ(4U, s7.length());
+  EXPECT_EQ('a', s7.c_str()[0]);
+  EXPECT_EQ('\0', s7.c_str()[1]);
+  EXPECT_EQ('b', s7.c_str()[2]);
+  EXPECT_EQ('c', s7.c_str()[3]);
+}
+
+TEST(StringTest, ConvertsFromStdString) {
+  // An empty std::string.
+  const std::string src1("");
+  const String dest1 = src1;
+  EXPECT_EQ(0U, dest1.length());
+  EXPECT_STREQ("", dest1.c_str());
+
+  // A normal std::string.
+  const std::string src2("Hi");
+  const String dest2 = src2;
+  EXPECT_EQ(2U, dest2.length());
+  EXPECT_STREQ("Hi", dest2.c_str());
+
+  // An std::string with an embedded NUL character.
+  const char src3[] = "a\0b";
+  const String dest3 = std::string(src3, sizeof(src3));
+  EXPECT_EQ(sizeof(src3), dest3.length());
+  EXPECT_EQ('a', dest3.c_str()[0]);
+  EXPECT_EQ('\0', dest3.c_str()[1]);
+  EXPECT_EQ('b', dest3.c_str()[2]);
+}
+
+TEST(StringTest, ConvertsToStdString) {
+  // An empty String.
+  const String src1("");
+  const std::string dest1 = src1;
+  EXPECT_EQ("", dest1);
+
+  // A normal String.
+  const String src2("Hi");
+  const std::string dest2 = src2;
+  EXPECT_EQ("Hi", dest2);
+
+  // A String containing a '\0'.
+  const String src3("x\0y", 3);
+  const std::string dest3 = src3;
+  EXPECT_EQ(std::string("x\0y", 3), dest3);
+}
+
+#if GTEST_HAS_GLOBAL_STRING
+
+TEST(StringTest, ConvertsFromGlobalString) {
+  // An empty ::string.
+  const ::string src1("");
+  const String dest1 = src1;
+  EXPECT_EQ(0U, dest1.length());
+  EXPECT_STREQ("", dest1.c_str());
+
+  // A normal ::string.
+  const ::string src2("Hi");
+  const String dest2 = src2;
+  EXPECT_EQ(2U, dest2.length());
+  EXPECT_STREQ("Hi", dest2.c_str());
+
+  // An ::string with an embedded NUL character.
+  const char src3[] = "x\0y";
+  const String dest3 = ::string(src3, sizeof(src3));
+  EXPECT_EQ(sizeof(src3), dest3.length());
+  EXPECT_EQ('x', dest3.c_str()[0]);
+  EXPECT_EQ('\0', dest3.c_str()[1]);
+  EXPECT_EQ('y', dest3.c_str()[2]);
+}
+
+TEST(StringTest, ConvertsToGlobalString) {
+  // An empty String.
+  const String src1("");
+  const ::string dest1 = src1;
+  EXPECT_EQ("", dest1);
+
+  // A normal String.
+  const String src2("Hi");
+  const ::string dest2 = src2;
+  EXPECT_EQ("Hi", dest2);
+
+  const String src3("x\0y", 3);
+  const ::string dest3 = src3;
+  EXPECT_EQ(::string("x\0y", 3), dest3);
+}
+
+#endif  // GTEST_HAS_GLOBAL_STRING
+
+// Tests String::ShowCStringQuoted().
+TEST(StringTest, ShowCStringQuoted) {
+  EXPECT_STREQ("(null)",
+               String::ShowCStringQuoted(NULL).c_str());
+  EXPECT_STREQ("\"\"",
+               String::ShowCStringQuoted("").c_str());
+  EXPECT_STREQ("\"foo\"",
+               String::ShowCStringQuoted("foo").c_str());
+}
+
+// Tests String::empty().
+TEST(StringTest, Empty) {
+  EXPECT_TRUE(String("").empty());
+  EXPECT_FALSE(String().empty());
+  EXPECT_FALSE(String(NULL).empty());
+  EXPECT_FALSE(String("a").empty());
+  EXPECT_FALSE(String("\0", 1).empty());
+}
+
+// Tests String::Compare().
+TEST(StringTest, Compare) {
+  // NULL vs NULL.
+  EXPECT_EQ(0, String().Compare(String()));
+
+  // NULL vs non-NULL.
+  EXPECT_EQ(-1, String().Compare(String("")));
+
+  // Non-NULL vs NULL.
+  EXPECT_EQ(1, String("").Compare(String()));
+
+  // The following covers non-NULL vs non-NULL.
+
+  // "" vs "".
+  EXPECT_EQ(0, String("").Compare(String("")));
+
+  // "" vs non-"".
+  EXPECT_EQ(-1, String("").Compare(String("\0", 1)));
+  EXPECT_EQ(-1, String("").Compare(" "));
+
+  // Non-"" vs "".
+  EXPECT_EQ(1, String("a").Compare(String("")));
+
+  // The following covers non-"" vs non-"".
+
+  // Same length and equal.
+  EXPECT_EQ(0, String("a").Compare(String("a")));
+
+  // Same length and different.
+  EXPECT_EQ(-1, String("a\0b", 3).Compare(String("a\0c", 3)));
+  EXPECT_EQ(1, String("b").Compare(String("a")));
+
+  // Different lengths.
+  EXPECT_EQ(-1, String("a").Compare(String("ab")));
+  EXPECT_EQ(-1, String("a").Compare(String("a\0", 2)));
+  EXPECT_EQ(1, String("abc").Compare(String("aacd")));
+}
+
+// Tests String::operator==().
+TEST(StringTest, Equals) {
+  const String null(NULL);
+  EXPECT_TRUE(null == NULL);  // NOLINT
+  EXPECT_FALSE(null == "");  // NOLINT
+  EXPECT_FALSE(null == "bar");  // NOLINT
+
+  const String empty("");
+  EXPECT_FALSE(empty == NULL);  // NOLINT
+  EXPECT_TRUE(empty == "");  // NOLINT
+  EXPECT_FALSE(empty == "bar");  // NOLINT
+
+  const String foo("foo");
+  EXPECT_FALSE(foo == NULL);  // NOLINT
+  EXPECT_FALSE(foo == "");  // NOLINT
+  EXPECT_FALSE(foo == "bar");  // NOLINT
+  EXPECT_TRUE(foo == "foo");  // NOLINT
+
+  const String bar("x\0y", 3);
+  EXPECT_NE(bar, "x");
+}
+
+// Tests String::operator!=().
+TEST(StringTest, NotEquals) {
+  const String null(NULL);
+  EXPECT_FALSE(null != NULL);  // NOLINT
+  EXPECT_TRUE(null != "");  // NOLINT
+  EXPECT_TRUE(null != "bar");  // NOLINT
+
+  const String empty("");
+  EXPECT_TRUE(empty != NULL);  // NOLINT
+  EXPECT_FALSE(empty != "");  // NOLINT
+  EXPECT_TRUE(empty != "bar");  // NOLINT
+
+  const String foo("foo");
+  EXPECT_TRUE(foo != NULL);  // NOLINT
+  EXPECT_TRUE(foo != "");  // NOLINT
+  EXPECT_TRUE(foo != "bar");  // NOLINT
+  EXPECT_FALSE(foo != "foo");  // NOLINT
+
+  const String bar("x\0y", 3);
+  EXPECT_NE(bar, "x");
+}
+
+// Tests String::length().
+TEST(StringTest, Length) {
+  EXPECT_EQ(0U, String().length());
+  EXPECT_EQ(0U, String("").length());
+  EXPECT_EQ(2U, String("ab").length());
+  EXPECT_EQ(3U, String("a\0b", 3).length());
+}
+
+// Tests String::EndsWith().
+TEST(StringTest, EndsWith) {
+  EXPECT_TRUE(String("foobar").EndsWith("bar"));
+  EXPECT_TRUE(String("foobar").EndsWith(""));
+  EXPECT_TRUE(String("").EndsWith(""));
+
+  EXPECT_FALSE(String("foobar").EndsWith("foo"));
+  EXPECT_FALSE(String("").EndsWith("foo"));
+}
+
+// Tests String::EndsWithCaseInsensitive().
+TEST(StringTest, EndsWithCaseInsensitive) {
+  EXPECT_TRUE(String("foobar").EndsWithCaseInsensitive("BAR"));
+  EXPECT_TRUE(String("foobaR").EndsWithCaseInsensitive("bar"));
+  EXPECT_TRUE(String("foobar").EndsWithCaseInsensitive(""));
+  EXPECT_TRUE(String("").EndsWithCaseInsensitive(""));
+
+  EXPECT_FALSE(String("Foobar").EndsWithCaseInsensitive("foo"));
+  EXPECT_FALSE(String("foobar").EndsWithCaseInsensitive("Foo"));
+  EXPECT_FALSE(String("").EndsWithCaseInsensitive("foo"));
+}
+
+// C++Builder's preprocessor is buggy; it fails to expand macros that
+// appear in macro parameters after wide char literals.  Provide an alias
+// for NULL as a workaround.
+static const wchar_t* const kNull = NULL;
+
+// Tests String::CaseInsensitiveWideCStringEquals
+TEST(StringTest, CaseInsensitiveWideCStringEquals) {
+  EXPECT_TRUE(String::CaseInsensitiveWideCStringEquals(NULL, NULL));
+  EXPECT_FALSE(String::CaseInsensitiveWideCStringEquals(kNull, L""));
+  EXPECT_FALSE(String::CaseInsensitiveWideCStringEquals(L"", kNull));
+  EXPECT_FALSE(String::CaseInsensitiveWideCStringEquals(kNull, L"foobar"));
+  EXPECT_FALSE(String::CaseInsensitiveWideCStringEquals(L"foobar", kNull));
+  EXPECT_TRUE(String::CaseInsensitiveWideCStringEquals(L"foobar", L"foobar"));
+  EXPECT_TRUE(String::CaseInsensitiveWideCStringEquals(L"foobar", L"FOOBAR"));
+  EXPECT_TRUE(String::CaseInsensitiveWideCStringEquals(L"FOOBAR", L"foobar"));
+}
+
+// Tests that NULL can be assigned to a String.
+TEST(StringTest, CanBeAssignedNULL) {
+  const String src(NULL);
+  String dest;
+
+  dest = src;
+  EXPECT_STREQ(NULL, dest.c_str());
+}
+
+// Tests that the empty string "" can be assigned to a String.
+TEST(StringTest, CanBeAssignedEmpty) {
+  const String src("");
+  String dest;
+
+  dest = src;
+  EXPECT_STREQ("", dest.c_str());
+}
+
+// Tests that a non-empty string can be assigned to a String.
+TEST(StringTest, CanBeAssignedNonEmpty) {
+  const String src("hello");
+  String dest;
+  dest = src;
+  EXPECT_EQ(5U, dest.length());
+  EXPECT_STREQ("hello", dest.c_str());
+
+  const String src2("x\0y", 3);
+  String dest2;
+  dest2 = src2;
+  EXPECT_EQ(3U, dest2.length());
+  EXPECT_EQ('x', dest2.c_str()[0]);
+  EXPECT_EQ('\0', dest2.c_str()[1]);
+  EXPECT_EQ('y', dest2.c_str()[2]);
+}
+
+// Tests that a String can be assigned to itself.
+TEST(StringTest, CanBeAssignedSelf) {
+  String dest("hello");
+
+  // Use explicit function call notation here to suppress self-assign warning.
+  dest.operator=(dest);
+  EXPECT_STREQ("hello", dest.c_str());
+}
+
+// Sun Studio < 12 incorrectly rejects this code due to an overloading
+// ambiguity.
+#if !(defined(__SUNPRO_CC) && __SUNPRO_CC < 0x590)
+// Tests streaming a String.
+TEST(StringTest, Streams) {
+  EXPECT_EQ(StreamableToString(String()), "(null)");
+  EXPECT_EQ(StreamableToString(String("")), "");
+  EXPECT_EQ(StreamableToString(String("a\0b", 3)), "a\\0b");
+}
+#endif
+
+// Tests that String::Format() works.
+TEST(StringTest, FormatWorks) {
+  // Normal case: the format spec is valid, the arguments match the
+  // spec, and the result is < 4095 characters.
+  EXPECT_STREQ("Hello, 42", String::Format("%s, %d", "Hello", 42).c_str());
+
+  // Edge case: the result is 4095 characters.
+  char buffer[4096];
+  const size_t kSize = sizeof(buffer);
+  memset(buffer, 'a', kSize - 1);
+  buffer[kSize - 1] = '\0';
+  EXPECT_STREQ(buffer, String::Format("%s", buffer).c_str());
+
+  // The result needs to be 4096 characters, exceeding Format()'s limit.
+  EXPECT_STREQ("<formatting error or buffer exceeded>",
+               String::Format("x%s", buffer).c_str());
+
+#if GTEST_OS_LINUX
+  // On Linux, invalid format spec should lead to an error message.
+  // In other environment (e.g. MSVC on Windows), String::Format() may
+  // simply ignore a bad format spec, so this assertion is run on
+  // Linux only.
+  EXPECT_STREQ("<formatting error or buffer exceeded>",
+               String::Format("%").c_str());
+#endif
+}
+
+#if GTEST_OS_WINDOWS
+
+// Tests String::ShowWideCString().
+TEST(StringTest, ShowWideCString) {
+  EXPECT_STREQ("(null)",
+               String::ShowWideCString(NULL).c_str());
+  EXPECT_STREQ("", String::ShowWideCString(L"").c_str());
+  EXPECT_STREQ("foo", String::ShowWideCString(L"foo").c_str());
+}
+
+// Tests String::ShowWideCStringQuoted().
+TEST(StringTest, ShowWideCStringQuoted) {
+  EXPECT_STREQ("(null)",
+               String::ShowWideCStringQuoted(NULL).c_str());
+  EXPECT_STREQ("L\"\"",
+               String::ShowWideCStringQuoted(L"").c_str());
+  EXPECT_STREQ("L\"foo\"",
+               String::ShowWideCStringQuoted(L"foo").c_str());
+}
+
+# if GTEST_OS_WINDOWS_MOBILE
+TEST(StringTest, AnsiAndUtf16Null) {
+  EXPECT_EQ(NULL, String::AnsiToUtf16(NULL));
+  EXPECT_EQ(NULL, String::Utf16ToAnsi(NULL));
+}
+
+TEST(StringTest, AnsiAndUtf16ConvertBasic) {
+  const char* ansi = String::Utf16ToAnsi(L"str");
+  EXPECT_STREQ("str", ansi);
+  delete [] ansi;
+  const WCHAR* utf16 = String::AnsiToUtf16("str");
+  EXPECT_EQ(0, wcsncmp(L"str", utf16, 3));
+  delete [] utf16;
+}
+
+TEST(StringTest, AnsiAndUtf16ConvertPathChars) {
+  const char* ansi = String::Utf16ToAnsi(L".:\\ \"*?");
+  EXPECT_STREQ(".:\\ \"*?", ansi);
+  delete [] ansi;
+  const WCHAR* utf16 = String::AnsiToUtf16(".:\\ \"*?");
+  EXPECT_EQ(0, wcsncmp(L".:\\ \"*?", utf16, 3));
+  delete [] utf16;
+}
+# endif  // GTEST_OS_WINDOWS_MOBILE
+
+#endif  // GTEST_OS_WINDOWS
+
+// Tests TestProperty construction.
+TEST(TestPropertyTest, StringValue) {
+  TestProperty property("key", "1");
+  EXPECT_STREQ("key", property.key());
+  EXPECT_STREQ("1", property.value());
+}
+
+// Tests TestProperty replacing a value.
+TEST(TestPropertyTest, ReplaceStringValue) {
+  TestProperty property("key", "1");
+  EXPECT_STREQ("1", property.value());
+  property.SetValue("2");
+  EXPECT_STREQ("2", property.value());
+}
+
+// AddFatalFailure() and AddNonfatalFailure() must be stand-alone
+// functions (i.e. their definitions cannot be inlined at the call
+// sites), or C++Builder won't compile the code.
+static void AddFatalFailure() {
+  FAIL() << "Expected fatal failure.";
+}
+
+static void AddNonfatalFailure() {
+  ADD_FAILURE() << "Expected non-fatal failure.";
+}
+
+class ScopedFakeTestPartResultReporterTest : public Test {
+ public:  // Must be public and not protected due to a bug in g++ 3.4.2.
+  enum FailureMode {
+    FATAL_FAILURE,
+    NONFATAL_FAILURE
+  };
+  static void AddFailure(FailureMode failure) {
+    if (failure == FATAL_FAILURE) {
+      AddFatalFailure();
+    } else {
+      AddNonfatalFailure();
+    }
+  }
+};
+
+// Tests that ScopedFakeTestPartResultReporter intercepts test
+// failures.
+TEST_F(ScopedFakeTestPartResultReporterTest, InterceptsTestFailures) {
+  TestPartResultArray results;
+  {
+    ScopedFakeTestPartResultReporter reporter(
+        ScopedFakeTestPartResultReporter::INTERCEPT_ONLY_CURRENT_THREAD,
+        &results);
+    AddFailure(NONFATAL_FAILURE);
+    AddFailure(FATAL_FAILURE);
+  }
+
+  EXPECT_EQ(2, results.size());
+  EXPECT_TRUE(results.GetTestPartResult(0).nonfatally_failed());
+  EXPECT_TRUE(results.GetTestPartResult(1).fatally_failed());
+}
+
+TEST_F(ScopedFakeTestPartResultReporterTest, DeprecatedConstructor) {
+  TestPartResultArray results;
+  {
+    // Tests, that the deprecated constructor still works.
+    ScopedFakeTestPartResultReporter reporter(&results);
+    AddFailure(NONFATAL_FAILURE);
+  }
+  EXPECT_EQ(1, results.size());
+}
+
+#if GTEST_IS_THREADSAFE
+
+class ScopedFakeTestPartResultReporterWithThreadsTest
+  : public ScopedFakeTestPartResultReporterTest {
+ protected:
+  static void AddFailureInOtherThread(FailureMode failure) {
+    ThreadWithParam<FailureMode> thread(&AddFailure, failure, NULL);
+    thread.Join();
+  }
+};
+
+TEST_F(ScopedFakeTestPartResultReporterWithThreadsTest,
+       InterceptsTestFailuresInAllThreads) {
+  TestPartResultArray results;
+  {
+    ScopedFakeTestPartResultReporter reporter(
+        ScopedFakeTestPartResultReporter::INTERCEPT_ALL_THREADS, &results);
+    AddFailure(NONFATAL_FAILURE);
+    AddFailure(FATAL_FAILURE);
+    AddFailureInOtherThread(NONFATAL_FAILURE);
+    AddFailureInOtherThread(FATAL_FAILURE);
+  }
+
+  EXPECT_EQ(4, results.size());
+  EXPECT_TRUE(results.GetTestPartResult(0).nonfatally_failed());
+  EXPECT_TRUE(results.GetTestPartResult(1).fatally_failed());
+  EXPECT_TRUE(results.GetTestPartResult(2).nonfatally_failed());
+  EXPECT_TRUE(results.GetTestPartResult(3).fatally_failed());
+}
+
+#endif  // GTEST_IS_THREADSAFE
+
+// Tests EXPECT_FATAL_FAILURE{,ON_ALL_THREADS}.  Makes sure that they
+// work even if the failure is generated in a called function rather than
+// the current context.
+
+typedef ScopedFakeTestPartResultReporterTest ExpectFatalFailureTest;
+
+TEST_F(ExpectFatalFailureTest, CatchesFatalFaliure) {
+  EXPECT_FATAL_FAILURE(AddFatalFailure(), "Expected fatal failure.");
+}
+
+#if GTEST_HAS_GLOBAL_STRING
+TEST_F(ExpectFatalFailureTest, AcceptsStringObject) {
+  EXPECT_FATAL_FAILURE(AddFatalFailure(), ::string("Expected fatal failure."));
+}
+#endif
+
+TEST_F(ExpectFatalFailureTest, AcceptsStdStringObject) {
+  EXPECT_FATAL_FAILURE(AddFatalFailure(),
+                       ::std::string("Expected fatal failure."));
+}
+
+TEST_F(ExpectFatalFailureTest, CatchesFatalFailureOnAllThreads) {
+  // We have another test below to verify that the macro catches fatal
+  // failures generated on another thread.
+  EXPECT_FATAL_FAILURE_ON_ALL_THREADS(AddFatalFailure(),
+                                      "Expected fatal failure.");
+}
+
+#ifdef __BORLANDC__
+// Silences warnings: "Condition is always true"
+# pragma option push -w-ccc
+#endif
+
+// Tests that EXPECT_FATAL_FAILURE() can be used in a non-void
+// function even when the statement in it contains ASSERT_*.
+
+int NonVoidFunction() {
+  EXPECT_FATAL_FAILURE(ASSERT_TRUE(false), "");
+  EXPECT_FATAL_FAILURE_ON_ALL_THREADS(FAIL(), "");
+  return 0;
+}
+
+TEST_F(ExpectFatalFailureTest, CanBeUsedInNonVoidFunction) {
+  NonVoidFunction();
+}
+
+// Tests that EXPECT_FATAL_FAILURE(statement, ...) doesn't abort the
+// current function even though 'statement' generates a fatal failure.
+
+void DoesNotAbortHelper(bool* aborted) {
+  EXPECT_FATAL_FAILURE(ASSERT_TRUE(false), "");
+  EXPECT_FATAL_FAILURE_ON_ALL_THREADS(FAIL(), "");
+
+  *aborted = false;
+}
+
+#ifdef __BORLANDC__
+// Restores warnings after previous "#pragma option push" suppressed them.
+# pragma option pop
+#endif
+
+TEST_F(ExpectFatalFailureTest, DoesNotAbort) {
+  bool aborted = true;
+  DoesNotAbortHelper(&aborted);
+  EXPECT_FALSE(aborted);
+}
+
+// Tests that the EXPECT_FATAL_FAILURE{,_ON_ALL_THREADS} accepts a
+// statement that contains a macro which expands to code containing an
+// unprotected comma.
+
+static int global_var = 0;
+#define GTEST_USE_UNPROTECTED_COMMA_ global_var++, global_var++
+
+TEST_F(ExpectFatalFailureTest, AcceptsMacroThatExpandsToUnprotectedComma) {
+#ifndef __BORLANDC__
+  // ICE's in C++Builder.
+  EXPECT_FATAL_FAILURE({
+    GTEST_USE_UNPROTECTED_COMMA_;
+    AddFatalFailure();
+  }, "");
+#endif
+
+  EXPECT_FATAL_FAILURE_ON_ALL_THREADS({
+    GTEST_USE_UNPROTECTED_COMMA_;
+    AddFatalFailure();
+  }, "");
+}
+
+// Tests EXPECT_NONFATAL_FAILURE{,ON_ALL_THREADS}.
+
+typedef ScopedFakeTestPartResultReporterTest ExpectNonfatalFailureTest;
+
+TEST_F(ExpectNonfatalFailureTest, CatchesNonfatalFailure) {
+  EXPECT_NONFATAL_FAILURE(AddNonfatalFailure(),
+                          "Expected non-fatal failure.");
+}
+
+#if GTEST_HAS_GLOBAL_STRING
+TEST_F(ExpectNonfatalFailureTest, AcceptsStringObject) {
+  EXPECT_NONFATAL_FAILURE(AddNonfatalFailure(),
+                          ::string("Expected non-fatal failure."));
+}
+#endif
+
+TEST_F(ExpectNonfatalFailureTest, AcceptsStdStringObject) {
+  EXPECT_NONFATAL_FAILURE(AddNonfatalFailure(),
+                          ::std::string("Expected non-fatal failure."));
+}
+
+TEST_F(ExpectNonfatalFailureTest, CatchesNonfatalFailureOnAllThreads) {
+  // We have another test below to verify that the macro catches
+  // non-fatal failures generated on another thread.
+  EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS(AddNonfatalFailure(),
+                                         "Expected non-fatal failure.");
+}
+
+// Tests that the EXPECT_NONFATAL_FAILURE{,_ON_ALL_THREADS} accepts a
+// statement that contains a macro which expands to code containing an
+// unprotected comma.
+TEST_F(ExpectNonfatalFailureTest, AcceptsMacroThatExpandsToUnprotectedComma) {
+  EXPECT_NONFATAL_FAILURE({
+    GTEST_USE_UNPROTECTED_COMMA_;
+    AddNonfatalFailure();
+  }, "");
+
+  EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS({
+    GTEST_USE_UNPROTECTED_COMMA_;
+    AddNonfatalFailure();
+  }, "");
+}
+
+#if GTEST_IS_THREADSAFE
+
+typedef ScopedFakeTestPartResultReporterWithThreadsTest
+    ExpectFailureWithThreadsTest;
+
+TEST_F(ExpectFailureWithThreadsTest, ExpectFatalFailureOnAllThreads) {
+  EXPECT_FATAL_FAILURE_ON_ALL_THREADS(AddFailureInOtherThread(FATAL_FAILURE),
+                                      "Expected fatal failure.");
+}
+
+TEST_F(ExpectFailureWithThreadsTest, ExpectNonFatalFailureOnAllThreads) {
+  EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS(
+      AddFailureInOtherThread(NONFATAL_FAILURE), "Expected non-fatal failure.");
+}
+
+#endif  // GTEST_IS_THREADSAFE
+
+// Tests the TestProperty class.
+
+TEST(TestPropertyTest, ConstructorWorks) {
+  const TestProperty property("key", "value");
+  EXPECT_STREQ("key", property.key());
+  EXPECT_STREQ("value", property.value());
+}
+
+TEST(TestPropertyTest, SetValue) {
+  TestProperty property("key", "value_1");
+  EXPECT_STREQ("key", property.key());
+  property.SetValue("value_2");
+  EXPECT_STREQ("key", property.key());
+  EXPECT_STREQ("value_2", property.value());
+}
+
+// Tests the TestResult class
+
+// The test fixture for testing TestResult.
+class TestResultTest : public Test {
+ protected:
+  typedef std::vector<TestPartResult> TPRVector;
+
+  // We make use of 2 TestPartResult objects,
+  TestPartResult * pr1, * pr2;
+
+  // ... and 3 TestResult objects.
+  TestResult * r0, * r1, * r2;
+
+  virtual void SetUp() {
+    // pr1 is for success.
+    pr1 = new TestPartResult(TestPartResult::kSuccess,
+                             "foo/bar.cc",
+                             10,
+                             "Success!");
+
+    // pr2 is for fatal failure.
+    pr2 = new TestPartResult(TestPartResult::kFatalFailure,
+                             "foo/bar.cc",
+                             -1,  // This line number means "unknown"
+                             "Failure!");
+
+    // Creates the TestResult objects.
+    r0 = new TestResult();
+    r1 = new TestResult();
+    r2 = new TestResult();
+
+    // In order to test TestResult, we need to modify its internal
+    // state, in particular the TestPartResult vector it holds.
+    // test_part_results() returns a const reference to this vector.
+    // We cast it to a non-const object s.t. it can be modified (yes,
+    // this is a hack).
+    TPRVector* results1 = const_cast<TPRVector*>(
+        &TestResultAccessor::test_part_results(*r1));
+    TPRVector* results2 = const_cast<TPRVector*>(
+        &TestResultAccessor::test_part_results(*r2));
+
+    // r0 is an empty TestResult.
+
+    // r1 contains a single SUCCESS TestPartResult.
+    results1->push_back(*pr1);
+
+    // r2 contains a SUCCESS, and a FAILURE.
+    results2->push_back(*pr1);
+    results2->push_back(*pr2);
+  }
+
+  virtual void TearDown() {
+    delete pr1;
+    delete pr2;
+
+    delete r0;
+    delete r1;
+    delete r2;
+  }
+
+  // Helper that compares two two TestPartResults.
+  static void CompareTestPartResult(const TestPartResult& expected,
+                                    const TestPartResult& actual) {
+    EXPECT_EQ(expected.type(), actual.type());
+    EXPECT_STREQ(expected.file_name(), actual.file_name());
+    EXPECT_EQ(expected.line_number(), actual.line_number());
+    EXPECT_STREQ(expected.summary(), actual.summary());
+    EXPECT_STREQ(expected.message(), actual.message());
+    EXPECT_EQ(expected.passed(), actual.passed());
+    EXPECT_EQ(expected.failed(), actual.failed());
+    EXPECT_EQ(expected.nonfatally_failed(), actual.nonfatally_failed());
+    EXPECT_EQ(expected.fatally_failed(), actual.fatally_failed());
+  }
+};
+
+// Tests TestResult::total_part_count().
+TEST_F(TestResultTest, total_part_count) {
+  ASSERT_EQ(0, r0->total_part_count());
+  ASSERT_EQ(1, r1->total_part_count());
+  ASSERT_EQ(2, r2->total_part_count());
+}
+
+// Tests TestResult::Passed().
+TEST_F(TestResultTest, Passed) {
+  ASSERT_TRUE(r0->Passed());
+  ASSERT_TRUE(r1->Passed());
+  ASSERT_FALSE(r2->Passed());
+}
+
+// Tests TestResult::Failed().
+TEST_F(TestResultTest, Failed) {
+  ASSERT_FALSE(r0->Failed());
+  ASSERT_FALSE(r1->Failed());
+  ASSERT_TRUE(r2->Failed());
+}
+
+// Tests TestResult::GetTestPartResult().
+
+typedef TestResultTest TestResultDeathTest;
+
+TEST_F(TestResultDeathTest, GetTestPartResult) {
+  CompareTestPartResult(*pr1, r2->GetTestPartResult(0));
+  CompareTestPartResult(*pr2, r2->GetTestPartResult(1));
+  EXPECT_DEATH_IF_SUPPORTED(r2->GetTestPartResult(2), "");
+  EXPECT_DEATH_IF_SUPPORTED(r2->GetTestPartResult(-1), "");
+}
+
+// Tests TestResult has no properties when none are added.
+TEST(TestResultPropertyTest, NoPropertiesFoundWhenNoneAreAdded) {
+  TestResult test_result;
+  ASSERT_EQ(0, test_result.test_property_count());
+}
+
+// Tests TestResult has the expected property when added.
+TEST(TestResultPropertyTest, OnePropertyFoundWhenAdded) {
+  TestResult test_result;
+  TestProperty property("key_1", "1");
+  TestResultAccessor::RecordProperty(&test_result, property);
+  ASSERT_EQ(1, test_result.test_property_count());
+  const TestProperty& actual_property = test_result.GetTestProperty(0);
+  EXPECT_STREQ("key_1", actual_property.key());
+  EXPECT_STREQ("1", actual_property.value());
+}
+
+// Tests TestResult has multiple properties when added.
+TEST(TestResultPropertyTest, MultiplePropertiesFoundWhenAdded) {
+  TestResult test_result;
+  TestProperty property_1("key_1", "1");
+  TestProperty property_2("key_2", "2");
+  TestResultAccessor::RecordProperty(&test_result, property_1);
+  TestResultAccessor::RecordProperty(&test_result, property_2);
+  ASSERT_EQ(2, test_result.test_property_count());
+  const TestProperty& actual_property_1 = test_result.GetTestProperty(0);
+  EXPECT_STREQ("key_1", actual_property_1.key());
+  EXPECT_STREQ("1", actual_property_1.value());
+
+  const TestProperty& actual_property_2 = test_result.GetTestProperty(1);
+  EXPECT_STREQ("key_2", actual_property_2.key());
+  EXPECT_STREQ("2", actual_property_2.value());
+}
+
+// Tests TestResult::RecordProperty() overrides values for duplicate keys.
+TEST(TestResultPropertyTest, OverridesValuesForDuplicateKeys) {
+  TestResult test_result;
+  TestProperty property_1_1("key_1", "1");
+  TestProperty property_2_1("key_2", "2");
+  TestProperty property_1_2("key_1", "12");
+  TestProperty property_2_2("key_2", "22");
+  TestResultAccessor::RecordProperty(&test_result, property_1_1);
+  TestResultAccessor::RecordProperty(&test_result, property_2_1);
+  TestResultAccessor::RecordProperty(&test_result, property_1_2);
+  TestResultAccessor::RecordProperty(&test_result, property_2_2);
+
+  ASSERT_EQ(2, test_result.test_property_count());
+  const TestProperty& actual_property_1 = test_result.GetTestProperty(0);
+  EXPECT_STREQ("key_1", actual_property_1.key());
+  EXPECT_STREQ("12", actual_property_1.value());
+
+  const TestProperty& actual_property_2 = test_result.GetTestProperty(1);
+  EXPECT_STREQ("key_2", actual_property_2.key());
+  EXPECT_STREQ("22", actual_property_2.value());
+}
+
+// Tests TestResult::GetTestProperty().
+TEST(TestResultPropertyDeathTest, GetTestProperty) {
+  TestResult test_result;
+  TestProperty property_1("key_1", "1");
+  TestProperty property_2("key_2", "2");
+  TestProperty property_3("key_3", "3");
+  TestResultAccessor::RecordProperty(&test_result, property_1);
+  TestResultAccessor::RecordProperty(&test_result, property_2);
+  TestResultAccessor::RecordProperty(&test_result, property_3);
+
+  const TestProperty& fetched_property_1 = test_result.GetTestProperty(0);
+  const TestProperty& fetched_property_2 = test_result.GetTestProperty(1);
+  const TestProperty& fetched_property_3 = test_result.GetTestProperty(2);
+
+  EXPECT_STREQ("key_1", fetched_property_1.key());
+  EXPECT_STREQ("1", fetched_property_1.value());
+
+  EXPECT_STREQ("key_2", fetched_property_2.key());
+  EXPECT_STREQ("2", fetched_property_2.value());
+
+  EXPECT_STREQ("key_3", fetched_property_3.key());
+  EXPECT_STREQ("3", fetched_property_3.value());
+
+  EXPECT_DEATH_IF_SUPPORTED(test_result.GetTestProperty(3), "");
+  EXPECT_DEATH_IF_SUPPORTED(test_result.GetTestProperty(-1), "");
+}
+
+// When a property using a reserved key is supplied to this function, it tests
+// that a non-fatal failure is added, a fatal failure is not added, and that the
+// property is not recorded.
+void ExpectNonFatalFailureRecordingPropertyWithReservedKey(const char* key) {
+  TestResult test_result;
+  TestProperty property(key, "1");
+  EXPECT_NONFATAL_FAILURE(
+      TestResultAccessor::RecordProperty(&test_result, property),
+      "Reserved key");
+  ASSERT_EQ(0, test_result.test_property_count()) << "Not recorded";
+}
+
+// Attempting to recording a property with the Reserved literal "name"
+// should add a non-fatal failure and the property should not be recorded.
+TEST(TestResultPropertyTest, AddFailureWhenUsingReservedKeyCalledName) {
+  ExpectNonFatalFailureRecordingPropertyWithReservedKey("name");
+}
+
+// Attempting to recording a property with the Reserved literal "status"
+// should add a non-fatal failure and the property should not be recorded.
+TEST(TestResultPropertyTest, AddFailureWhenUsingReservedKeyCalledStatus) {
+  ExpectNonFatalFailureRecordingPropertyWithReservedKey("status");
+}
+
+// Attempting to recording a property with the Reserved literal "time"
+// should add a non-fatal failure and the property should not be recorded.
+TEST(TestResultPropertyTest, AddFailureWhenUsingReservedKeyCalledTime) {
+  ExpectNonFatalFailureRecordingPropertyWithReservedKey("time");
+}
+
+// Attempting to recording a property with the Reserved literal "classname"
+// should add a non-fatal failure and the property should not be recorded.
+TEST(TestResultPropertyTest, AddFailureWhenUsingReservedKeyCalledClassname) {
+  ExpectNonFatalFailureRecordingPropertyWithReservedKey("classname");
+}
+
+// Tests that GTestFlagSaver works on Windows and Mac.
+
+class GTestFlagSaverTest : public Test {
+ protected:
+  // Saves the Google Test flags such that we can restore them later, and
+  // then sets them to their default values.  This will be called
+  // before the first test in this test case is run.
+  static void SetUpTestCase() {
+    saver_ = new GTestFlagSaver;
+
+    GTEST_FLAG(also_run_disabled_tests) = false;
+    GTEST_FLAG(break_on_failure) = false;
+    GTEST_FLAG(catch_exceptions) = false;
+    GTEST_FLAG(death_test_use_fork) = false;
+    GTEST_FLAG(color) = "auto";
+    GTEST_FLAG(filter) = "";
+    GTEST_FLAG(list_tests) = false;
+    GTEST_FLAG(output) = "";
+    GTEST_FLAG(print_time) = true;
+    GTEST_FLAG(random_seed) = 0;
+    GTEST_FLAG(repeat) = 1;
+    GTEST_FLAG(shuffle) = false;
+    GTEST_FLAG(stack_trace_depth) = kMaxStackTraceDepth;
+    GTEST_FLAG(stream_result_to) = "";
+    GTEST_FLAG(throw_on_failure) = false;
+  }
+
+  // Restores the Google Test flags that the tests have modified.  This will
+  // be called after the last test in this test case is run.
+  static void TearDownTestCase() {
+    delete saver_;
+    saver_ = NULL;
+  }
+
+  // Verifies that the Google Test flags have their default values, and then
+  // modifies each of them.
+  void VerifyAndModifyFlags() {
+    EXPECT_FALSE(GTEST_FLAG(also_run_disabled_tests));
+    EXPECT_FALSE(GTEST_FLAG(break_on_failure));
+    EXPECT_FALSE(GTEST_FLAG(catch_exceptions));
+    EXPECT_STREQ("auto", GTEST_FLAG(color).c_str());
+    EXPECT_FALSE(GTEST_FLAG(death_test_use_fork));
+    EXPECT_STREQ("", GTEST_FLAG(filter).c_str());
+    EXPECT_FALSE(GTEST_FLAG(list_tests));
+    EXPECT_STREQ("", GTEST_FLAG(output).c_str());
+    EXPECT_TRUE(GTEST_FLAG(print_time));
+    EXPECT_EQ(0, GTEST_FLAG(random_seed));
+    EXPECT_EQ(1, GTEST_FLAG(repeat));
+    EXPECT_FALSE(GTEST_FLAG(shuffle));
+    EXPECT_EQ(kMaxStackTraceDepth, GTEST_FLAG(stack_trace_depth));
+    EXPECT_STREQ("", GTEST_FLAG(stream_result_to).c_str());
+    EXPECT_FALSE(GTEST_FLAG(throw_on_failure));
+
+    GTEST_FLAG(also_run_disabled_tests) = true;
+    GTEST_FLAG(break_on_failure) = true;
+    GTEST_FLAG(catch_exceptions) = true;
+    GTEST_FLAG(color) = "no";
+    GTEST_FLAG(death_test_use_fork) = true;
+    GTEST_FLAG(filter) = "abc";
+    GTEST_FLAG(list_tests) = true;
+    GTEST_FLAG(output) = "xml:foo.xml";
+    GTEST_FLAG(print_time) = false;
+    GTEST_FLAG(random_seed) = 1;
+    GTEST_FLAG(repeat) = 100;
+    GTEST_FLAG(shuffle) = true;
+    GTEST_FLAG(stack_trace_depth) = 1;
+    GTEST_FLAG(stream_result_to) = "localhost:1234";
+    GTEST_FLAG(throw_on_failure) = true;
+  }
+
+ private:
+  // For saving Google Test flags during this test case.
+  static GTestFlagSaver* saver_;
+};
+
+GTestFlagSaver* GTestFlagSaverTest::saver_ = NULL;
+
+// Google Test doesn't guarantee the order of tests.  The following two
+// tests are designed to work regardless of their order.
+
+// Modifies the Google Test flags in the test body.
+TEST_F(GTestFlagSaverTest, ModifyGTestFlags) {
+  VerifyAndModifyFlags();
+}
+
+// Verifies that the Google Test flags in the body of the previous test were
+// restored to their original values.
+TEST_F(GTestFlagSaverTest, VerifyGTestFlags) {
+  VerifyAndModifyFlags();
+}
+
+// Sets an environment variable with the given name to the given
+// value.  If the value argument is "", unsets the environment
+// variable.  The caller must ensure that both arguments are not NULL.
+static void SetEnv(const char* name, const char* value) {
+#if GTEST_OS_WINDOWS_MOBILE
+  // Environment variables are not supported on Windows CE.
+  return;
+#elif defined(__BORLANDC__) || defined(__SunOS_5_8) || defined(__SunOS_5_9)
+  // C++Builder's putenv only stores a pointer to its parameter; we have to
+  // ensure that the string remains valid as long as it might be needed.
+  // We use an std::map to do so.
+  static std::map<String, String*> added_env;
+
+  // Because putenv stores a pointer to the string buffer, we can't delete the
+  // previous string (if present) until after it's replaced.
+  String *prev_env = NULL;
+  if (added_env.find(name) != added_env.end()) {
+    prev_env = added_env[name];
+  }
+  added_env[name] = new String((Message() << name << "=" << value).GetString());
+
+  // The standard signature of putenv accepts a 'char*' argument. Other
+  // implementations, like C++Builder's, accept a 'const char*'.
+  // We cast away the 'const' since that would work for both variants.
+  putenv(const_cast<char*>(added_env[name]->c_str()));
+  delete prev_env;
+#elif GTEST_OS_WINDOWS  // If we are on Windows proper.
+  _putenv((Message() << name << "=" << value).GetString().c_str());
+#else
+  if (*value == '\0') {
+    unsetenv(name);
+  } else {
+    setenv(name, value, 1);
+  }
+#endif  // GTEST_OS_WINDOWS_MOBILE
+}
+
+#if !GTEST_OS_WINDOWS_MOBILE
+// Environment variables are not supported on Windows CE.
+
+using testing::internal::Int32FromGTestEnv;
+
+// Tests Int32FromGTestEnv().
+
+// Tests that Int32FromGTestEnv() returns the default value when the
+// environment variable is not set.
+TEST(Int32FromGTestEnvTest, ReturnsDefaultWhenVariableIsNotSet) {
+  SetEnv(GTEST_FLAG_PREFIX_UPPER_ "TEMP", "");
+  EXPECT_EQ(10, Int32FromGTestEnv("temp", 10));
+}
+
+// Tests that Int32FromGTestEnv() returns the default value when the
+// environment variable overflows as an Int32.
+TEST(Int32FromGTestEnvTest, ReturnsDefaultWhenValueOverflows) {
+  printf("(expecting 2 warnings)\n");
+
+  SetEnv(GTEST_FLAG_PREFIX_UPPER_ "TEMP", "12345678987654321");
+  EXPECT_EQ(20, Int32FromGTestEnv("temp", 20));
+
+  SetEnv(GTEST_FLAG_PREFIX_UPPER_ "TEMP", "-12345678987654321");
+  EXPECT_EQ(30, Int32FromGTestEnv("temp", 30));
+}
+
+// Tests that Int32FromGTestEnv() returns the default value when the
+// environment variable does not represent a valid decimal integer.
+TEST(Int32FromGTestEnvTest, ReturnsDefaultWhenValueIsInvalid) {
+  printf("(expecting 2 warnings)\n");
+
+  SetEnv(GTEST_FLAG_PREFIX_UPPER_ "TEMP", "A1");
+  EXPECT_EQ(40, Int32FromGTestEnv("temp", 40));
+
+  SetEnv(GTEST_FLAG_PREFIX_UPPER_ "TEMP", "12X");
+  EXPECT_EQ(50, Int32FromGTestEnv("temp", 50));
+}
+
+// Tests that Int32FromGTestEnv() parses and returns the value of the
+// environment variable when it represents a valid decimal integer in
+// the range of an Int32.
+TEST(Int32FromGTestEnvTest, ParsesAndReturnsValidValue) {
+  SetEnv(GTEST_FLAG_PREFIX_UPPER_ "TEMP", "123");
+  EXPECT_EQ(123, Int32FromGTestEnv("temp", 0));
+
+  SetEnv(GTEST_FLAG_PREFIX_UPPER_ "TEMP", "-321");
+  EXPECT_EQ(-321, Int32FromGTestEnv("temp", 0));
+}
+#endif  // !GTEST_OS_WINDOWS_MOBILE
+
+// Tests ParseInt32Flag().
+
+// Tests that ParseInt32Flag() returns false and doesn't change the
+// output value when the flag has wrong format
+TEST(ParseInt32FlagTest, ReturnsFalseForInvalidFlag) {
+  Int32 value = 123;
+  EXPECT_FALSE(ParseInt32Flag("--a=100", "b", &value));
+  EXPECT_EQ(123, value);
+
+  EXPECT_FALSE(ParseInt32Flag("a=100", "a", &value));
+  EXPECT_EQ(123, value);
+}
+
+// Tests that ParseInt32Flag() returns false and doesn't change the
+// output value when the flag overflows as an Int32.
+TEST(ParseInt32FlagTest, ReturnsDefaultWhenValueOverflows) {
+  printf("(expecting 2 warnings)\n");
+
+  Int32 value = 123;
+  EXPECT_FALSE(ParseInt32Flag("--abc=12345678987654321", "abc", &value));
+  EXPECT_EQ(123, value);
+
+  EXPECT_FALSE(ParseInt32Flag("--abc=-12345678987654321", "abc", &value));
+  EXPECT_EQ(123, value);
+}
+
+// Tests that ParseInt32Flag() returns false and doesn't change the
+// output value when the flag does not represent a valid decimal
+// integer.
+TEST(ParseInt32FlagTest, ReturnsDefaultWhenValueIsInvalid) {
+  printf("(expecting 2 warnings)\n");
+
+  Int32 value = 123;
+  EXPECT_FALSE(ParseInt32Flag("--abc=A1", "abc", &value));
+  EXPECT_EQ(123, value);
+
+  EXPECT_FALSE(ParseInt32Flag("--abc=12X", "abc", &value));
+  EXPECT_EQ(123, value);
+}
+
+// Tests that ParseInt32Flag() parses the value of the flag and
+// returns true when the flag represents a valid decimal integer in
+// the range of an Int32.
+TEST(ParseInt32FlagTest, ParsesAndReturnsValidValue) {
+  Int32 value = 123;
+  EXPECT_TRUE(ParseInt32Flag("--" GTEST_FLAG_PREFIX_ "abc=456", "abc", &value));
+  EXPECT_EQ(456, value);
+
+  EXPECT_TRUE(ParseInt32Flag("--" GTEST_FLAG_PREFIX_ "abc=-789",
+                             "abc", &value));
+  EXPECT_EQ(-789, value);
+}
+
+// Tests that Int32FromEnvOrDie() parses the value of the var or
+// returns the correct default.
+// Environment variables are not supported on Windows CE.
+#if !GTEST_OS_WINDOWS_MOBILE
+TEST(Int32FromEnvOrDieTest, ParsesAndReturnsValidValue) {
+  EXPECT_EQ(333, Int32FromEnvOrDie(GTEST_FLAG_PREFIX_UPPER_ "UnsetVar", 333));
+  SetEnv(GTEST_FLAG_PREFIX_UPPER_ "UnsetVar", "123");
+  EXPECT_EQ(123, Int32FromEnvOrDie(GTEST_FLAG_PREFIX_UPPER_ "UnsetVar", 333));
+  SetEnv(GTEST_FLAG_PREFIX_UPPER_ "UnsetVar", "-123");
+  EXPECT_EQ(-123, Int32FromEnvOrDie(GTEST_FLAG_PREFIX_UPPER_ "UnsetVar", 333));
+}
+#endif  // !GTEST_OS_WINDOWS_MOBILE
+
+// Tests that Int32FromEnvOrDie() aborts with an error message
+// if the variable is not an Int32.
+TEST(Int32FromEnvOrDieDeathTest, AbortsOnFailure) {
+  SetEnv(GTEST_FLAG_PREFIX_UPPER_ "VAR", "xxx");
+  EXPECT_DEATH_IF_SUPPORTED(
+      Int32FromEnvOrDie(GTEST_FLAG_PREFIX_UPPER_ "VAR", 123),
+      ".*");
+}
+
+// Tests that Int32FromEnvOrDie() aborts with an error message
+// if the variable cannot be represnted by an Int32.
+TEST(Int32FromEnvOrDieDeathTest, AbortsOnInt32Overflow) {
+  SetEnv(GTEST_FLAG_PREFIX_UPPER_ "VAR", "1234567891234567891234");
+  EXPECT_DEATH_IF_SUPPORTED(
+      Int32FromEnvOrDie(GTEST_FLAG_PREFIX_UPPER_ "VAR", 123),
+      ".*");
+}
+
+// Tests that ShouldRunTestOnShard() selects all tests
+// where there is 1 shard.
+TEST(ShouldRunTestOnShardTest, IsPartitionWhenThereIsOneShard) {
+  EXPECT_TRUE(ShouldRunTestOnShard(1, 0, 0));
+  EXPECT_TRUE(ShouldRunTestOnShard(1, 0, 1));
+  EXPECT_TRUE(ShouldRunTestOnShard(1, 0, 2));
+  EXPECT_TRUE(ShouldRunTestOnShard(1, 0, 3));
+  EXPECT_TRUE(ShouldRunTestOnShard(1, 0, 4));
+}
+
+class ShouldShardTest : public testing::Test {
+ protected:
+  virtual void SetUp() {
+    index_var_ = GTEST_FLAG_PREFIX_UPPER_ "INDEX";
+    total_var_ = GTEST_FLAG_PREFIX_UPPER_ "TOTAL";
+  }
+
+  virtual void TearDown() {
+    SetEnv(index_var_, "");
+    SetEnv(total_var_, "");
+  }
+
+  const char* index_var_;
+  const char* total_var_;
+};
+
+// Tests that sharding is disabled if neither of the environment variables
+// are set.
+TEST_F(ShouldShardTest, ReturnsFalseWhenNeitherEnvVarIsSet) {
+  SetEnv(index_var_, "");
+  SetEnv(total_var_, "");
+
+  EXPECT_FALSE(ShouldShard(total_var_, index_var_, false));
+  EXPECT_FALSE(ShouldShard(total_var_, index_var_, true));
+}
+
+// Tests that sharding is not enabled if total_shards  == 1.
+TEST_F(ShouldShardTest, ReturnsFalseWhenTotalShardIsOne) {
+  SetEnv(index_var_, "0");
+  SetEnv(total_var_, "1");
+  EXPECT_FALSE(ShouldShard(total_var_, index_var_, false));
+  EXPECT_FALSE(ShouldShard(total_var_, index_var_, true));
+}
+
+// Tests that sharding is enabled if total_shards > 1 and
+// we are not in a death test subprocess.
+// Environment variables are not supported on Windows CE.
+#if !GTEST_OS_WINDOWS_MOBILE
+TEST_F(ShouldShardTest, WorksWhenShardEnvVarsAreValid) {
+  SetEnv(index_var_, "4");
+  SetEnv(total_var_, "22");
+  EXPECT_TRUE(ShouldShard(total_var_, index_var_, false));
+  EXPECT_FALSE(ShouldShard(total_var_, index_var_, true));
+
+  SetEnv(index_var_, "8");
+  SetEnv(total_var_, "9");
+  EXPECT_TRUE(ShouldShard(total_var_, index_var_, false));
+  EXPECT_FALSE(ShouldShard(total_var_, index_var_, true));
+
+  SetEnv(index_var_, "0");
+  SetEnv(total_var_, "9");
+  EXPECT_TRUE(ShouldShard(total_var_, index_var_, false));
+  EXPECT_FALSE(ShouldShard(total_var_, index_var_, true));
+}
+#endif  // !GTEST_OS_WINDOWS_MOBILE
+
+// Tests that we exit in error if the sharding values are not valid.
+
+typedef ShouldShardTest ShouldShardDeathTest;
+
+TEST_F(ShouldShardDeathTest, AbortsWhenShardingEnvVarsAreInvalid) {
+  SetEnv(index_var_, "4");
+  SetEnv(total_var_, "4");
+  EXPECT_DEATH_IF_SUPPORTED(ShouldShard(total_var_, index_var_, false), ".*");
+
+  SetEnv(index_var_, "4");
+  SetEnv(total_var_, "-2");
+  EXPECT_DEATH_IF_SUPPORTED(ShouldShard(total_var_, index_var_, false), ".*");
+
+  SetEnv(index_var_, "5");
+  SetEnv(total_var_, "");
+  EXPECT_DEATH_IF_SUPPORTED(ShouldShard(total_var_, index_var_, false), ".*");
+
+  SetEnv(index_var_, "");
+  SetEnv(total_var_, "5");
+  EXPECT_DEATH_IF_SUPPORTED(ShouldShard(total_var_, index_var_, false), ".*");
+}
+
+// Tests that ShouldRunTestOnShard is a partition when 5
+// shards are used.
+TEST(ShouldRunTestOnShardTest, IsPartitionWhenThereAreFiveShards) {
+  // Choose an arbitrary number of tests and shards.
+  const int num_tests = 17;
+  const int num_shards = 5;
+
+  // Check partitioning: each test should be on exactly 1 shard.
+  for (int test_id = 0; test_id < num_tests; test_id++) {
+    int prev_selected_shard_index = -1;
+    for (int shard_index = 0; shard_index < num_shards; shard_index++) {
+      if (ShouldRunTestOnShard(num_shards, shard_index, test_id)) {
+        if (prev_selected_shard_index < 0) {
+          prev_selected_shard_index = shard_index;
+        } else {
+          ADD_FAILURE() << "Shard " << prev_selected_shard_index << " and "
+            << shard_index << " are both selected to run test " << test_id;
+        }
+      }
+    }
+  }
+
+  // Check balance: This is not required by the sharding protocol, but is a
+  // desirable property for performance.
+  for (int shard_index = 0; shard_index < num_shards; shard_index++) {
+    int num_tests_on_shard = 0;
+    for (int test_id = 0; test_id < num_tests; test_id++) {
+      num_tests_on_shard +=
+        ShouldRunTestOnShard(num_shards, shard_index, test_id);
+    }
+    EXPECT_GE(num_tests_on_shard, num_tests / num_shards);
+  }
+}
+
+// For the same reason we are not explicitly testing everything in the
+// Test class, there are no separate tests for the following classes
+// (except for some trivial cases):
+//
+//   TestCase, UnitTest, UnitTestResultPrinter.
+//
+// Similarly, there are no separate tests for the following macros:
+//
+//   TEST, TEST_F, RUN_ALL_TESTS
+
+TEST(UnitTestTest, CanGetOriginalWorkingDir) {
+  ASSERT_TRUE(UnitTest::GetInstance()->original_working_dir() != NULL);
+  EXPECT_STRNE(UnitTest::GetInstance()->original_working_dir(), "");
+}
+
+TEST(UnitTestTest, ReturnsPlausibleTimestamp) {
+  EXPECT_LT(0, UnitTest::GetInstance()->start_timestamp());
+  EXPECT_LE(UnitTest::GetInstance()->start_timestamp(), GetTimeInMillis());
+}
+
+// This group of tests is for predicate assertions (ASSERT_PRED*, etc)
+// of various arities.  They do not attempt to be exhaustive.  Rather,
+// view them as smoke tests that can be easily reviewed and verified.
+// A more complete set of tests for predicate assertions can be found
+// in gtest_pred_impl_unittest.cc.
+
+// First, some predicates and predicate-formatters needed by the tests.
+
+// Returns true iff the argument is an even number.
+bool IsEven(int n) {
+  return (n % 2) == 0;
+}
+
+// A functor that returns true iff the argument is an even number.
+struct IsEvenFunctor {
+  bool operator()(int n) { return IsEven(n); }
+};
+
+// A predicate-formatter function that asserts the argument is an even
+// number.
+AssertionResult AssertIsEven(const char* expr, int n) {
+  if (IsEven(n)) {
+    return AssertionSuccess();
+  }
+
+  Message msg;
+  msg << expr << " evaluates to " << n << ", which is not even.";
+  return AssertionFailure(msg);
+}
+
+// A predicate function that returns AssertionResult for use in
+// EXPECT/ASSERT_TRUE/FALSE.
+AssertionResult ResultIsEven(int n) {
+  if (IsEven(n))
+    return AssertionSuccess() << n << " is even";
+  else
+    return AssertionFailure() << n << " is odd";
+}
+
+// A predicate function that returns AssertionResult but gives no
+// explanation why it succeeds. Needed for testing that
+// EXPECT/ASSERT_FALSE handles such functions correctly.
+AssertionResult ResultIsEvenNoExplanation(int n) {
+  if (IsEven(n))
+    return AssertionSuccess();
+  else
+    return AssertionFailure() << n << " is odd";
+}
+
+// A predicate-formatter functor that asserts the argument is an even
+// number.
+struct AssertIsEvenFunctor {
+  AssertionResult operator()(const char* expr, int n) {
+    return AssertIsEven(expr, n);
+  }
+};
+
+// Returns true iff the sum of the arguments is an even number.
+bool SumIsEven2(int n1, int n2) {
+  return IsEven(n1 + n2);
+}
+
+// A functor that returns true iff the sum of the arguments is an even
+// number.
+struct SumIsEven3Functor {
+  bool operator()(int n1, int n2, int n3) {
+    return IsEven(n1 + n2 + n3);
+  }
+};
+
+// A predicate-formatter function that asserts the sum of the
+// arguments is an even number.
+AssertionResult AssertSumIsEven4(
+    const char* e1, const char* e2, const char* e3, const char* e4,
+    int n1, int n2, int n3, int n4) {
+  const int sum = n1 + n2 + n3 + n4;
+  if (IsEven(sum)) {
+    return AssertionSuccess();
+  }
+
+  Message msg;
+  msg << e1 << " + " << e2 << " + " << e3 << " + " << e4
+      << " (" << n1 << " + " << n2 << " + " << n3 << " + " << n4
+      << ") evaluates to " << sum << ", which is not even.";
+  return AssertionFailure(msg);
+}
+
+// A predicate-formatter functor that asserts the sum of the arguments
+// is an even number.
+struct AssertSumIsEven5Functor {
+  AssertionResult operator()(
+      const char* e1, const char* e2, const char* e3, const char* e4,
+      const char* e5, int n1, int n2, int n3, int n4, int n5) {
+    const int sum = n1 + n2 + n3 + n4 + n5;
+    if (IsEven(sum)) {
+      return AssertionSuccess();
+    }
+
+    Message msg;
+    msg << e1 << " + " << e2 << " + " << e3 << " + " << e4 << " + " << e5
+        << " ("
+        << n1 << " + " << n2 << " + " << n3 << " + " << n4 << " + " << n5
+        << ") evaluates to " << sum << ", which is not even.";
+    return AssertionFailure(msg);
+  }
+};
+
+
+// Tests unary predicate assertions.
+
+// Tests unary predicate assertions that don't use a custom formatter.
+TEST(Pred1Test, WithoutFormat) {
+  // Success cases.
+  EXPECT_PRED1(IsEvenFunctor(), 2) << "This failure is UNEXPECTED!";
+  ASSERT_PRED1(IsEven, 4);
+
+  // Failure cases.
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_PRED1(IsEven, 5) << "This failure is expected.";
+  }, "This failure is expected.");
+  EXPECT_FATAL_FAILURE(ASSERT_PRED1(IsEvenFunctor(), 5),
+                       "evaluates to false");
+}
+
+// Tests unary predicate assertions that use a custom formatter.
+TEST(Pred1Test, WithFormat) {
+  // Success cases.
+  EXPECT_PRED_FORMAT1(AssertIsEven, 2);
+  ASSERT_PRED_FORMAT1(AssertIsEvenFunctor(), 4)
+    << "This failure is UNEXPECTED!";
+
+  // Failure cases.
+  const int n = 5;
+  EXPECT_NONFATAL_FAILURE(EXPECT_PRED_FORMAT1(AssertIsEvenFunctor(), n),
+                          "n evaluates to 5, which is not even.");
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_PRED_FORMAT1(AssertIsEven, 5) << "This failure is expected.";
+  }, "This failure is expected.");
+}
+
+// Tests that unary predicate assertions evaluates their arguments
+// exactly once.
+TEST(Pred1Test, SingleEvaluationOnFailure) {
+  // A success case.
+  static int n = 0;
+  EXPECT_PRED1(IsEven, n++);
+  EXPECT_EQ(1, n) << "The argument is not evaluated exactly once.";
+
+  // A failure case.
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_PRED_FORMAT1(AssertIsEvenFunctor(), n++)
+        << "This failure is expected.";
+  }, "This failure is expected.");
+  EXPECT_EQ(2, n) << "The argument is not evaluated exactly once.";
+}
+
+
+// Tests predicate assertions whose arity is >= 2.
+
+// Tests predicate assertions that don't use a custom formatter.
+TEST(PredTest, WithoutFormat) {
+  // Success cases.
+  ASSERT_PRED2(SumIsEven2, 2, 4) << "This failure is UNEXPECTED!";
+  EXPECT_PRED3(SumIsEven3Functor(), 4, 6, 8);
+
+  // Failure cases.
+  const int n1 = 1;
+  const int n2 = 2;
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_PRED2(SumIsEven2, n1, n2) << "This failure is expected.";
+  }, "This failure is expected.");
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_PRED3(SumIsEven3Functor(), 1, 2, 4);
+  }, "evaluates to false");
+}
+
+// Tests predicate assertions that use a custom formatter.
+TEST(PredTest, WithFormat) {
+  // Success cases.
+  ASSERT_PRED_FORMAT4(AssertSumIsEven4, 4, 6, 8, 10) <<
+    "This failure is UNEXPECTED!";
+  EXPECT_PRED_FORMAT5(AssertSumIsEven5Functor(), 2, 4, 6, 8, 10);
+
+  // Failure cases.
+  const int n1 = 1;
+  const int n2 = 2;
+  const int n3 = 4;
+  const int n4 = 6;
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_PRED_FORMAT4(AssertSumIsEven4, n1, n2, n3, n4);
+  }, "evaluates to 13, which is not even.");
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_PRED_FORMAT5(AssertSumIsEven5Functor(), 1, 2, 4, 6, 8)
+        << "This failure is expected.";
+  }, "This failure is expected.");
+}
+
+// Tests that predicate assertions evaluates their arguments
+// exactly once.
+TEST(PredTest, SingleEvaluationOnFailure) {
+  // A success case.
+  int n1 = 0;
+  int n2 = 0;
+  EXPECT_PRED2(SumIsEven2, n1++, n2++);
+  EXPECT_EQ(1, n1) << "Argument 1 is not evaluated exactly once.";
+  EXPECT_EQ(1, n2) << "Argument 2 is not evaluated exactly once.";
+
+  // Another success case.
+  n1 = n2 = 0;
+  int n3 = 0;
+  int n4 = 0;
+  int n5 = 0;
+  ASSERT_PRED_FORMAT5(AssertSumIsEven5Functor(),
+                      n1++, n2++, n3++, n4++, n5++)
+                        << "This failure is UNEXPECTED!";
+  EXPECT_EQ(1, n1) << "Argument 1 is not evaluated exactly once.";
+  EXPECT_EQ(1, n2) << "Argument 2 is not evaluated exactly once.";
+  EXPECT_EQ(1, n3) << "Argument 3 is not evaluated exactly once.";
+  EXPECT_EQ(1, n4) << "Argument 4 is not evaluated exactly once.";
+  EXPECT_EQ(1, n5) << "Argument 5 is not evaluated exactly once.";
+
+  // A failure case.
+  n1 = n2 = n3 = 0;
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_PRED3(SumIsEven3Functor(), ++n1, n2++, n3++)
+        << "This failure is expected.";
+  }, "This failure is expected.");
+  EXPECT_EQ(1, n1) << "Argument 1 is not evaluated exactly once.";
+  EXPECT_EQ(1, n2) << "Argument 2 is not evaluated exactly once.";
+  EXPECT_EQ(1, n3) << "Argument 3 is not evaluated exactly once.";
+
+  // Another failure case.
+  n1 = n2 = n3 = n4 = 0;
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_PRED_FORMAT4(AssertSumIsEven4, ++n1, n2++, n3++, n4++);
+  }, "evaluates to 1, which is not even.");
+  EXPECT_EQ(1, n1) << "Argument 1 is not evaluated exactly once.";
+  EXPECT_EQ(1, n2) << "Argument 2 is not evaluated exactly once.";
+  EXPECT_EQ(1, n3) << "Argument 3 is not evaluated exactly once.";
+  EXPECT_EQ(1, n4) << "Argument 4 is not evaluated exactly once.";
+}
+
+
+// Some helper functions for testing using overloaded/template
+// functions with ASSERT_PREDn and EXPECT_PREDn.
+
+bool IsPositive(double x) {
+  return x > 0;
+}
+
+template <typename T>
+bool IsNegative(T x) {
+  return x < 0;
+}
+
+template <typename T1, typename T2>
+bool GreaterThan(T1 x1, T2 x2) {
+  return x1 > x2;
+}
+
+// Tests that overloaded functions can be used in *_PRED* as long as
+// their types are explicitly specified.
+TEST(PredicateAssertionTest, AcceptsOverloadedFunction) {
+  // C++Builder requires C-style casts rather than static_cast.
+  EXPECT_PRED1((bool (*)(int))(IsPositive), 5);  // NOLINT
+  ASSERT_PRED1((bool (*)(double))(IsPositive), 6.0);  // NOLINT
+}
+
+// Tests that template functions can be used in *_PRED* as long as
+// their types are explicitly specified.
+TEST(PredicateAssertionTest, AcceptsTemplateFunction) {
+  EXPECT_PRED1(IsNegative<int>, -5);
+  // Makes sure that we can handle templates with more than one
+  // parameter.
+  ASSERT_PRED2((GreaterThan<int, int>), 5, 0);
+}
+
+
+// Some helper functions for testing using overloaded/template
+// functions with ASSERT_PRED_FORMATn and EXPECT_PRED_FORMATn.
+
+AssertionResult IsPositiveFormat(const char* /* expr */, int n) {
+  return n > 0 ? AssertionSuccess() :
+      AssertionFailure(Message() << "Failure");
+}
+
+AssertionResult IsPositiveFormat(const char* /* expr */, double x) {
+  return x > 0 ? AssertionSuccess() :
+      AssertionFailure(Message() << "Failure");
+}
+
+template <typename T>
+AssertionResult IsNegativeFormat(const char* /* expr */, T x) {
+  return x < 0 ? AssertionSuccess() :
+      AssertionFailure(Message() << "Failure");
+}
+
+template <typename T1, typename T2>
+AssertionResult EqualsFormat(const char* /* expr1 */, const char* /* expr2 */,
+                             const T1& x1, const T2& x2) {
+  return x1 == x2 ? AssertionSuccess() :
+      AssertionFailure(Message() << "Failure");
+}
+
+// Tests that overloaded functions can be used in *_PRED_FORMAT*
+// without explicitly specifying their types.
+TEST(PredicateFormatAssertionTest, AcceptsOverloadedFunction) {
+  EXPECT_PRED_FORMAT1(IsPositiveFormat, 5);
+  ASSERT_PRED_FORMAT1(IsPositiveFormat, 6.0);
+}
+
+// Tests that template functions can be used in *_PRED_FORMAT* without
+// explicitly specifying their types.
+TEST(PredicateFormatAssertionTest, AcceptsTemplateFunction) {
+  EXPECT_PRED_FORMAT1(IsNegativeFormat, -5);
+  ASSERT_PRED_FORMAT2(EqualsFormat, 3, 3);
+}
+
+
+// Tests string assertions.
+
+// Tests ASSERT_STREQ with non-NULL arguments.
+TEST(StringAssertionTest, ASSERT_STREQ) {
+  const char * const p1 = "good";
+  ASSERT_STREQ(p1, p1);
+
+  // Let p2 have the same content as p1, but be at a different address.
+  const char p2[] = "good";
+  ASSERT_STREQ(p1, p2);
+
+  EXPECT_FATAL_FAILURE(ASSERT_STREQ("bad", "good"),
+                       "Expected: \"bad\"");
+}
+
+// Tests ASSERT_STREQ with NULL arguments.
+TEST(StringAssertionTest, ASSERT_STREQ_Null) {
+  ASSERT_STREQ(static_cast<const char *>(NULL), NULL);
+  EXPECT_FATAL_FAILURE(ASSERT_STREQ(NULL, "non-null"),
+                       "non-null");
+}
+
+// Tests ASSERT_STREQ with NULL arguments.
+TEST(StringAssertionTest, ASSERT_STREQ_Null2) {
+  EXPECT_FATAL_FAILURE(ASSERT_STREQ("non-null", NULL),
+                       "non-null");
+}
+
+// Tests ASSERT_STRNE.
+TEST(StringAssertionTest, ASSERT_STRNE) {
+  ASSERT_STRNE("hi", "Hi");
+  ASSERT_STRNE("Hi", NULL);
+  ASSERT_STRNE(NULL, "Hi");
+  ASSERT_STRNE("", NULL);
+  ASSERT_STRNE(NULL, "");
+  ASSERT_STRNE("", "Hi");
+  ASSERT_STRNE("Hi", "");
+  EXPECT_FATAL_FAILURE(ASSERT_STRNE("Hi", "Hi"),
+                       "\"Hi\" vs \"Hi\"");
+}
+
+// Tests ASSERT_STRCASEEQ.
+TEST(StringAssertionTest, ASSERT_STRCASEEQ) {
+  ASSERT_STRCASEEQ("hi", "Hi");
+  ASSERT_STRCASEEQ(static_cast<const char *>(NULL), NULL);
+
+  ASSERT_STRCASEEQ("", "");
+  EXPECT_FATAL_FAILURE(ASSERT_STRCASEEQ("Hi", "hi2"),
+                       "(ignoring case)");
+}
+
+// Tests ASSERT_STRCASENE.
+TEST(StringAssertionTest, ASSERT_STRCASENE) {
+  ASSERT_STRCASENE("hi1", "Hi2");
+  ASSERT_STRCASENE("Hi", NULL);
+  ASSERT_STRCASENE(NULL, "Hi");
+  ASSERT_STRCASENE("", NULL);
+  ASSERT_STRCASENE(NULL, "");
+  ASSERT_STRCASENE("", "Hi");
+  ASSERT_STRCASENE("Hi", "");
+  EXPECT_FATAL_FAILURE(ASSERT_STRCASENE("Hi", "hi"),
+                       "(ignoring case)");
+}
+
+// Tests *_STREQ on wide strings.
+TEST(StringAssertionTest, STREQ_Wide) {
+  // NULL strings.
+  ASSERT_STREQ(static_cast<const wchar_t *>(NULL), NULL);
+
+  // Empty strings.
+  ASSERT_STREQ(L"", L"");
+
+  // Non-null vs NULL.
+  EXPECT_NONFATAL_FAILURE(EXPECT_STREQ(L"non-null", NULL),
+                          "non-null");
+
+  // Equal strings.
+  EXPECT_STREQ(L"Hi", L"Hi");
+
+  // Unequal strings.
+  EXPECT_NONFATAL_FAILURE(EXPECT_STREQ(L"abc", L"Abc"),
+                          "Abc");
+
+  // Strings containing wide characters.
+  EXPECT_NONFATAL_FAILURE(EXPECT_STREQ(L"abc\x8119", L"abc\x8120"),
+                          "abc");
+
+  // The streaming variation.
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_STREQ(L"abc\x8119", L"abc\x8121") << "Expected failure";
+  }, "Expected failure");
+}
+
+// Tests *_STRNE on wide strings.
+TEST(StringAssertionTest, STRNE_Wide) {
+  // NULL strings.
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_STRNE(static_cast<const wchar_t *>(NULL), NULL);
+  }, "");
+
+  // Empty strings.
+  EXPECT_NONFATAL_FAILURE(EXPECT_STRNE(L"", L""),
+                          "L\"\"");
+
+  // Non-null vs NULL.
+  ASSERT_STRNE(L"non-null", NULL);
+
+  // Equal strings.
+  EXPECT_NONFATAL_FAILURE(EXPECT_STRNE(L"Hi", L"Hi"),
+                          "L\"Hi\"");
+
+  // Unequal strings.
+  EXPECT_STRNE(L"abc", L"Abc");
+
+  // Strings containing wide characters.
+  EXPECT_NONFATAL_FAILURE(EXPECT_STRNE(L"abc\x8119", L"abc\x8119"),
+                          "abc");
+
+  // The streaming variation.
+  ASSERT_STRNE(L"abc\x8119", L"abc\x8120") << "This shouldn't happen";
+}
+
+// Tests for ::testing::IsSubstring().
+
+// Tests that IsSubstring() returns the correct result when the input
+// argument type is const char*.
+TEST(IsSubstringTest, ReturnsCorrectResultForCString) {
+  EXPECT_FALSE(IsSubstring("", "", NULL, "a"));
+  EXPECT_FALSE(IsSubstring("", "", "b", NULL));
+  EXPECT_FALSE(IsSubstring("", "", "needle", "haystack"));
+
+  EXPECT_TRUE(IsSubstring("", "", static_cast<const char*>(NULL), NULL));
+  EXPECT_TRUE(IsSubstring("", "", "needle", "two needles"));
+}
+
+// Tests that IsSubstring() returns the correct result when the input
+// argument type is const wchar_t*.
+TEST(IsSubstringTest, ReturnsCorrectResultForWideCString) {
+  EXPECT_FALSE(IsSubstring("", "", kNull, L"a"));
+  EXPECT_FALSE(IsSubstring("", "", L"b", kNull));
+  EXPECT_FALSE(IsSubstring("", "", L"needle", L"haystack"));
+
+  EXPECT_TRUE(IsSubstring("", "", static_cast<const wchar_t*>(NULL), NULL));
+  EXPECT_TRUE(IsSubstring("", "", L"needle", L"two needles"));
+}
+
+// Tests that IsSubstring() generates the correct message when the input
+// argument type is const char*.
+TEST(IsSubstringTest, GeneratesCorrectMessageForCString) {
+  EXPECT_STREQ("Value of: needle_expr\n"
+               "  Actual: \"needle\"\n"
+               "Expected: a substring of haystack_expr\n"
+               "Which is: \"haystack\"",
+               IsSubstring("needle_expr", "haystack_expr",
+                           "needle", "haystack").failure_message());
+}
+
+// Tests that IsSubstring returns the correct result when the input
+// argument type is ::std::string.
+TEST(IsSubstringTest, ReturnsCorrectResultsForStdString) {
+  EXPECT_TRUE(IsSubstring("", "", std::string("hello"), "ahellob"));
+  EXPECT_FALSE(IsSubstring("", "", "hello", std::string("world")));
+}
+
+#if GTEST_HAS_STD_WSTRING
+// Tests that IsSubstring returns the correct result when the input
+// argument type is ::std::wstring.
+TEST(IsSubstringTest, ReturnsCorrectResultForStdWstring) {
+  EXPECT_TRUE(IsSubstring("", "", ::std::wstring(L"needle"), L"two needles"));
+  EXPECT_FALSE(IsSubstring("", "", L"needle", ::std::wstring(L"haystack")));
+}
+
+// Tests that IsSubstring() generates the correct message when the input
+// argument type is ::std::wstring.
+TEST(IsSubstringTest, GeneratesCorrectMessageForWstring) {
+  EXPECT_STREQ("Value of: needle_expr\n"
+               "  Actual: L\"needle\"\n"
+               "Expected: a substring of haystack_expr\n"
+               "Which is: L\"haystack\"",
+               IsSubstring(
+                   "needle_expr", "haystack_expr",
+                   ::std::wstring(L"needle"), L"haystack").failure_message());
+}
+
+#endif  // GTEST_HAS_STD_WSTRING
+
+// Tests for ::testing::IsNotSubstring().
+
+// Tests that IsNotSubstring() returns the correct result when the input
+// argument type is const char*.
+TEST(IsNotSubstringTest, ReturnsCorrectResultForCString) {
+  EXPECT_TRUE(IsNotSubstring("", "", "needle", "haystack"));
+  EXPECT_FALSE(IsNotSubstring("", "", "needle", "two needles"));
+}
+
+// Tests that IsNotSubstring() returns the correct result when the input
+// argument type is const wchar_t*.
+TEST(IsNotSubstringTest, ReturnsCorrectResultForWideCString) {
+  EXPECT_TRUE(IsNotSubstring("", "", L"needle", L"haystack"));
+  EXPECT_FALSE(IsNotSubstring("", "", L"needle", L"two needles"));
+}
+
+// Tests that IsNotSubstring() generates the correct message when the input
+// argument type is const wchar_t*.
+TEST(IsNotSubstringTest, GeneratesCorrectMessageForWideCString) {
+  EXPECT_STREQ("Value of: needle_expr\n"
+               "  Actual: L\"needle\"\n"
+               "Expected: not a substring of haystack_expr\n"
+               "Which is: L\"two needles\"",
+               IsNotSubstring(
+                   "needle_expr", "haystack_expr",
+                   L"needle", L"two needles").failure_message());
+}
+
+// Tests that IsNotSubstring returns the correct result when the input
+// argument type is ::std::string.
+TEST(IsNotSubstringTest, ReturnsCorrectResultsForStdString) {
+  EXPECT_FALSE(IsNotSubstring("", "", std::string("hello"), "ahellob"));
+  EXPECT_TRUE(IsNotSubstring("", "", "hello", std::string("world")));
+}
+
+// Tests that IsNotSubstring() generates the correct message when the input
+// argument type is ::std::string.
+TEST(IsNotSubstringTest, GeneratesCorrectMessageForStdString) {
+  EXPECT_STREQ("Value of: needle_expr\n"
+               "  Actual: \"needle\"\n"
+               "Expected: not a substring of haystack_expr\n"
+               "Which is: \"two needles\"",
+               IsNotSubstring(
+                   "needle_expr", "haystack_expr",
+                   ::std::string("needle"), "two needles").failure_message());
+}
+
+#if GTEST_HAS_STD_WSTRING
+
+// Tests that IsNotSubstring returns the correct result when the input
+// argument type is ::std::wstring.
+TEST(IsNotSubstringTest, ReturnsCorrectResultForStdWstring) {
+  EXPECT_FALSE(
+      IsNotSubstring("", "", ::std::wstring(L"needle"), L"two needles"));
+  EXPECT_TRUE(IsNotSubstring("", "", L"needle", ::std::wstring(L"haystack")));
+}
+
+#endif  // GTEST_HAS_STD_WSTRING
+
+// Tests floating-point assertions.
+
+template <typename RawType>
+class FloatingPointTest : public Test {
+ protected:
+  // Pre-calculated numbers to be used by the tests.
+  struct TestValues {
+    RawType close_to_positive_zero;
+    RawType close_to_negative_zero;
+    RawType further_from_negative_zero;
+
+    RawType close_to_one;
+    RawType further_from_one;
+
+    RawType infinity;
+    RawType close_to_infinity;
+    RawType further_from_infinity;
+
+    RawType nan1;
+    RawType nan2;
+  };
+
+  typedef typename testing::internal::FloatingPoint<RawType> Floating;
+  typedef typename Floating::Bits Bits;
+
+  virtual void SetUp() {
+    const size_t max_ulps = Floating::kMaxUlps;
+
+    // The bits that represent 0.0.
+    const Bits zero_bits = Floating(0).bits();
+
+    // Makes some numbers close to 0.0.
+    values_.close_to_positive_zero = Floating::ReinterpretBits(
+        zero_bits + max_ulps/2);
+    values_.close_to_negative_zero = -Floating::ReinterpretBits(
+        zero_bits + max_ulps - max_ulps/2);
+    values_.further_from_negative_zero = -Floating::ReinterpretBits(
+        zero_bits + max_ulps + 1 - max_ulps/2);
+
+    // The bits that represent 1.0.
+    const Bits one_bits = Floating(1).bits();
+
+    // Makes some numbers close to 1.0.
+    values_.close_to_one = Floating::ReinterpretBits(one_bits + max_ulps);
+    values_.further_from_one = Floating::ReinterpretBits(
+        one_bits + max_ulps + 1);
+
+    // +infinity.
+    values_.infinity = Floating::Infinity();
+
+    // The bits that represent +infinity.
+    const Bits infinity_bits = Floating(values_.infinity).bits();
+
+    // Makes some numbers close to infinity.
+    values_.close_to_infinity = Floating::ReinterpretBits(
+        infinity_bits - max_ulps);
+    values_.further_from_infinity = Floating::ReinterpretBits(
+        infinity_bits - max_ulps - 1);
+
+    // Makes some NAN's.  Sets the most significant bit of the fraction so that
+    // our NaN's are quiet; trying to process a signaling NaN would raise an
+    // exception if our environment enables floating point exceptions.
+    values_.nan1 = Floating::ReinterpretBits(Floating::kExponentBitMask
+        | (static_cast<Bits>(1) << (Floating::kFractionBitCount - 1)) | 1);
+    values_.nan2 = Floating::ReinterpretBits(Floating::kExponentBitMask
+        | (static_cast<Bits>(1) << (Floating::kFractionBitCount - 1)) | 200);
+  }
+
+  void TestSize() {
+    EXPECT_EQ(sizeof(RawType), sizeof(Bits));
+  }
+
+  static TestValues values_;
+};
+
+template <typename RawType>
+typename FloatingPointTest<RawType>::TestValues
+    FloatingPointTest<RawType>::values_;
+
+// Instantiates FloatingPointTest for testing *_FLOAT_EQ.
+typedef FloatingPointTest<float> FloatTest;
+
+// Tests that the size of Float::Bits matches the size of float.
+TEST_F(FloatTest, Size) {
+  TestSize();
+}
+
+// Tests comparing with +0 and -0.
+TEST_F(FloatTest, Zeros) {
+  EXPECT_FLOAT_EQ(0.0, -0.0);
+  EXPECT_NONFATAL_FAILURE(EXPECT_FLOAT_EQ(-0.0, 1.0),
+                          "1.0");
+  EXPECT_FATAL_FAILURE(ASSERT_FLOAT_EQ(0.0, 1.5),
+                       "1.5");
+}
+
+// Tests comparing numbers close to 0.
+//
+// This ensures that *_FLOAT_EQ handles the sign correctly and no
+// overflow occurs when comparing numbers whose absolute value is very
+// small.
+TEST_F(FloatTest, AlmostZeros) {
+  // In C++Builder, names within local classes (such as used by
+  // EXPECT_FATAL_FAILURE) cannot be resolved against static members of the
+  // scoping class.  Use a static local alias as a workaround.
+  // We use the assignment syntax since some compilers, like Sun Studio,
+  // don't allow initializing references using construction syntax
+  // (parentheses).
+  static const FloatTest::TestValues& v = this->values_;
+
+  EXPECT_FLOAT_EQ(0.0, v.close_to_positive_zero);
+  EXPECT_FLOAT_EQ(-0.0, v.close_to_negative_zero);
+  EXPECT_FLOAT_EQ(v.close_to_positive_zero, v.close_to_negative_zero);
+
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_FLOAT_EQ(v.close_to_positive_zero,
+                    v.further_from_negative_zero);
+  }, "v.further_from_negative_zero");
+}
+
+// Tests comparing numbers close to each other.
+TEST_F(FloatTest, SmallDiff) {
+  EXPECT_FLOAT_EQ(1.0, values_.close_to_one);
+  EXPECT_NONFATAL_FAILURE(EXPECT_FLOAT_EQ(1.0, values_.further_from_one),
+                          "values_.further_from_one");
+}
+
+// Tests comparing numbers far apart.
+TEST_F(FloatTest, LargeDiff) {
+  EXPECT_NONFATAL_FAILURE(EXPECT_FLOAT_EQ(2.5, 3.0),
+                          "3.0");
+}
+
+// Tests comparing with infinity.
+//
+// This ensures that no overflow occurs when comparing numbers whose
+// absolute value is very large.
+TEST_F(FloatTest, Infinity) {
+  EXPECT_FLOAT_EQ(values_.infinity, values_.close_to_infinity);
+  EXPECT_FLOAT_EQ(-values_.infinity, -values_.close_to_infinity);
+#if !GTEST_OS_SYMBIAN
+  // Nokia's STLport crashes if we try to output infinity or NaN.
+  EXPECT_NONFATAL_FAILURE(EXPECT_FLOAT_EQ(values_.infinity, -values_.infinity),
+                          "-values_.infinity");
+
+  // This is interesting as the representations of infinity and nan1
+  // are only 1 DLP apart.
+  EXPECT_NONFATAL_FAILURE(EXPECT_FLOAT_EQ(values_.infinity, values_.nan1),
+                          "values_.nan1");
+#endif  // !GTEST_OS_SYMBIAN
+}
+
+// Tests that comparing with NAN always returns false.
+TEST_F(FloatTest, NaN) {
+#if !GTEST_OS_SYMBIAN
+// Nokia's STLport crashes if we try to output infinity or NaN.
+
+  // In C++Builder, names within local classes (such as used by
+  // EXPECT_FATAL_FAILURE) cannot be resolved against static members of the
+  // scoping class.  Use a static local alias as a workaround.
+  // We use the assignment syntax since some compilers, like Sun Studio,
+  // don't allow initializing references using construction syntax
+  // (parentheses).
+  static const FloatTest::TestValues& v = this->values_;
+
+  EXPECT_NONFATAL_FAILURE(EXPECT_FLOAT_EQ(v.nan1, v.nan1),
+                          "v.nan1");
+  EXPECT_NONFATAL_FAILURE(EXPECT_FLOAT_EQ(v.nan1, v.nan2),
+                          "v.nan2");
+  EXPECT_NONFATAL_FAILURE(EXPECT_FLOAT_EQ(1.0, v.nan1),
+                          "v.nan1");
+
+  EXPECT_FATAL_FAILURE(ASSERT_FLOAT_EQ(v.nan1, v.infinity),
+                       "v.infinity");
+#endif  // !GTEST_OS_SYMBIAN
+}
+
+// Tests that *_FLOAT_EQ are reflexive.
+TEST_F(FloatTest, Reflexive) {
+  EXPECT_FLOAT_EQ(0.0, 0.0);
+  EXPECT_FLOAT_EQ(1.0, 1.0);
+  ASSERT_FLOAT_EQ(values_.infinity, values_.infinity);
+}
+
+// Tests that *_FLOAT_EQ are commutative.
+TEST_F(FloatTest, Commutative) {
+  // We already tested EXPECT_FLOAT_EQ(1.0, values_.close_to_one).
+  EXPECT_FLOAT_EQ(values_.close_to_one, 1.0);
+
+  // We already tested EXPECT_FLOAT_EQ(1.0, values_.further_from_one).
+  EXPECT_NONFATAL_FAILURE(EXPECT_FLOAT_EQ(values_.further_from_one, 1.0),
+                          "1.0");
+}
+
+// Tests EXPECT_NEAR.
+TEST_F(FloatTest, EXPECT_NEAR) {
+  EXPECT_NEAR(-1.0f, -1.1f, 0.2f);
+  EXPECT_NEAR(2.0f, 3.0f, 1.0f);
+  EXPECT_NONFATAL_FAILURE(EXPECT_NEAR(1.0f,1.5f, 0.25f),  // NOLINT
+                          "The difference between 1.0f and 1.5f is 0.5, "
+                          "which exceeds 0.25f");
+  // To work around a bug in gcc 2.95.0, there is intentionally no
+  // space after the first comma in the previous line.
+}
+
+// Tests ASSERT_NEAR.
+TEST_F(FloatTest, ASSERT_NEAR) {
+  ASSERT_NEAR(-1.0f, -1.1f, 0.2f);
+  ASSERT_NEAR(2.0f, 3.0f, 1.0f);
+  EXPECT_FATAL_FAILURE(ASSERT_NEAR(1.0f,1.5f, 0.25f),  // NOLINT
+                       "The difference between 1.0f and 1.5f is 0.5, "
+                       "which exceeds 0.25f");
+  // To work around a bug in gcc 2.95.0, there is intentionally no
+  // space after the first comma in the previous line.
+}
+
+// Tests the cases where FloatLE() should succeed.
+TEST_F(FloatTest, FloatLESucceeds) {
+  EXPECT_PRED_FORMAT2(FloatLE, 1.0f, 2.0f);  // When val1 < val2,
+  ASSERT_PRED_FORMAT2(FloatLE, 1.0f, 1.0f);  // val1 == val2,
+
+  // or when val1 is greater than, but almost equals to, val2.
+  EXPECT_PRED_FORMAT2(FloatLE, values_.close_to_positive_zero, 0.0f);
+}
+
+// Tests the cases where FloatLE() should fail.
+TEST_F(FloatTest, FloatLEFails) {
+  // When val1 is greater than val2 by a large margin,
+  EXPECT_NONFATAL_FAILURE(EXPECT_PRED_FORMAT2(FloatLE, 2.0f, 1.0f),
+                          "(2.0f) <= (1.0f)");
+
+  // or by a small yet non-negligible margin,
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_PRED_FORMAT2(FloatLE, values_.further_from_one, 1.0f);
+  }, "(values_.further_from_one) <= (1.0f)");
+
+#if !GTEST_OS_SYMBIAN && !defined(__BORLANDC__)
+  // Nokia's STLport crashes if we try to output infinity or NaN.
+  // C++Builder gives bad results for ordered comparisons involving NaNs
+  // due to compiler bugs.
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_PRED_FORMAT2(FloatLE, values_.nan1, values_.infinity);
+  }, "(values_.nan1) <= (values_.infinity)");
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_PRED_FORMAT2(FloatLE, -values_.infinity, values_.nan1);
+  }, "(-values_.infinity) <= (values_.nan1)");
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_PRED_FORMAT2(FloatLE, values_.nan1, values_.nan1);
+  }, "(values_.nan1) <= (values_.nan1)");
+#endif  // !GTEST_OS_SYMBIAN && !defined(__BORLANDC__)
+}
+
+// Instantiates FloatingPointTest for testing *_DOUBLE_EQ.
+typedef FloatingPointTest<double> DoubleTest;
+
+// Tests that the size of Double::Bits matches the size of double.
+TEST_F(DoubleTest, Size) {
+  TestSize();
+}
+
+// Tests comparing with +0 and -0.
+TEST_F(DoubleTest, Zeros) {
+  EXPECT_DOUBLE_EQ(0.0, -0.0);
+  EXPECT_NONFATAL_FAILURE(EXPECT_DOUBLE_EQ(-0.0, 1.0),
+                          "1.0");
+  EXPECT_FATAL_FAILURE(ASSERT_DOUBLE_EQ(0.0, 1.0),
+                       "1.0");
+}
+
+// Tests comparing numbers close to 0.
+//
+// This ensures that *_DOUBLE_EQ handles the sign correctly and no
+// overflow occurs when comparing numbers whose absolute value is very
+// small.
+TEST_F(DoubleTest, AlmostZeros) {
+  // In C++Builder, names within local classes (such as used by
+  // EXPECT_FATAL_FAILURE) cannot be resolved against static members of the
+  // scoping class.  Use a static local alias as a workaround.
+  // We use the assignment syntax since some compilers, like Sun Studio,
+  // don't allow initializing references using construction syntax
+  // (parentheses).
+  static const DoubleTest::TestValues& v = this->values_;
+
+  EXPECT_DOUBLE_EQ(0.0, v.close_to_positive_zero);
+  EXPECT_DOUBLE_EQ(-0.0, v.close_to_negative_zero);
+  EXPECT_DOUBLE_EQ(v.close_to_positive_zero, v.close_to_negative_zero);
+
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_DOUBLE_EQ(v.close_to_positive_zero,
+                     v.further_from_negative_zero);
+  }, "v.further_from_negative_zero");
+}
+
+// Tests comparing numbers close to each other.
+TEST_F(DoubleTest, SmallDiff) {
+  EXPECT_DOUBLE_EQ(1.0, values_.close_to_one);
+  EXPECT_NONFATAL_FAILURE(EXPECT_DOUBLE_EQ(1.0, values_.further_from_one),
+                          "values_.further_from_one");
+}
+
+// Tests comparing numbers far apart.
+TEST_F(DoubleTest, LargeDiff) {
+  EXPECT_NONFATAL_FAILURE(EXPECT_DOUBLE_EQ(2.0, 3.0),
+                          "3.0");
+}
+
+// Tests comparing with infinity.
+//
+// This ensures that no overflow occurs when comparing numbers whose
+// absolute value is very large.
+TEST_F(DoubleTest, Infinity) {
+  EXPECT_DOUBLE_EQ(values_.infinity, values_.close_to_infinity);
+  EXPECT_DOUBLE_EQ(-values_.infinity, -values_.close_to_infinity);
+#if !GTEST_OS_SYMBIAN
+  // Nokia's STLport crashes if we try to output infinity or NaN.
+  EXPECT_NONFATAL_FAILURE(EXPECT_DOUBLE_EQ(values_.infinity, -values_.infinity),
+                          "-values_.infinity");
+
+  // This is interesting as the representations of infinity_ and nan1_
+  // are only 1 DLP apart.
+  EXPECT_NONFATAL_FAILURE(EXPECT_DOUBLE_EQ(values_.infinity, values_.nan1),
+                          "values_.nan1");
+#endif  // !GTEST_OS_SYMBIAN
+}
+
+// Tests that comparing with NAN always returns false.
+TEST_F(DoubleTest, NaN) {
+#if !GTEST_OS_SYMBIAN
+  // In C++Builder, names within local classes (such as used by
+  // EXPECT_FATAL_FAILURE) cannot be resolved against static members of the
+  // scoping class.  Use a static local alias as a workaround.
+  // We use the assignment syntax since some compilers, like Sun Studio,
+  // don't allow initializing references using construction syntax
+  // (parentheses).
+  static const DoubleTest::TestValues& v = this->values_;
+
+  // Nokia's STLport crashes if we try to output infinity or NaN.
+  EXPECT_NONFATAL_FAILURE(EXPECT_DOUBLE_EQ(v.nan1, v.nan1),
+                          "v.nan1");
+  EXPECT_NONFATAL_FAILURE(EXPECT_DOUBLE_EQ(v.nan1, v.nan2), "v.nan2");
+  EXPECT_NONFATAL_FAILURE(EXPECT_DOUBLE_EQ(1.0, v.nan1), "v.nan1");
+  EXPECT_FATAL_FAILURE(ASSERT_DOUBLE_EQ(v.nan1, v.infinity),
+                       "v.infinity");
+#endif  // !GTEST_OS_SYMBIAN
+}
+
+// Tests that *_DOUBLE_EQ are reflexive.
+TEST_F(DoubleTest, Reflexive) {
+  EXPECT_DOUBLE_EQ(0.0, 0.0);
+  EXPECT_DOUBLE_EQ(1.0, 1.0);
+#if !GTEST_OS_SYMBIAN
+  // Nokia's STLport crashes if we try to output infinity or NaN.
+  ASSERT_DOUBLE_EQ(values_.infinity, values_.infinity);
+#endif  // !GTEST_OS_SYMBIAN
+}
+
+// Tests that *_DOUBLE_EQ are commutative.
+TEST_F(DoubleTest, Commutative) {
+  // We already tested EXPECT_DOUBLE_EQ(1.0, values_.close_to_one).
+  EXPECT_DOUBLE_EQ(values_.close_to_one, 1.0);
+
+  // We already tested EXPECT_DOUBLE_EQ(1.0, values_.further_from_one).
+  EXPECT_NONFATAL_FAILURE(EXPECT_DOUBLE_EQ(values_.further_from_one, 1.0),
+                          "1.0");
+}
+
+// Tests EXPECT_NEAR.
+TEST_F(DoubleTest, EXPECT_NEAR) {
+  EXPECT_NEAR(-1.0, -1.1, 0.2);
+  EXPECT_NEAR(2.0, 3.0, 1.0);
+  EXPECT_NONFATAL_FAILURE(EXPECT_NEAR(1.0, 1.5, 0.25),  // NOLINT
+                          "The difference between 1.0 and 1.5 is 0.5, "
+                          "which exceeds 0.25");
+  // To work around a bug in gcc 2.95.0, there is intentionally no
+  // space after the first comma in the previous statement.
+}
+
+// Tests ASSERT_NEAR.
+TEST_F(DoubleTest, ASSERT_NEAR) {
+  ASSERT_NEAR(-1.0, -1.1, 0.2);
+  ASSERT_NEAR(2.0, 3.0, 1.0);
+  EXPECT_FATAL_FAILURE(ASSERT_NEAR(1.0, 1.5, 0.25),  // NOLINT
+                       "The difference between 1.0 and 1.5 is 0.5, "
+                       "which exceeds 0.25");
+  // To work around a bug in gcc 2.95.0, there is intentionally no
+  // space after the first comma in the previous statement.
+}
+
+// Tests the cases where DoubleLE() should succeed.
+TEST_F(DoubleTest, DoubleLESucceeds) {
+  EXPECT_PRED_FORMAT2(DoubleLE, 1.0, 2.0);  // When val1 < val2,
+  ASSERT_PRED_FORMAT2(DoubleLE, 1.0, 1.0);  // val1 == val2,
+
+  // or when val1 is greater than, but almost equals to, val2.
+  EXPECT_PRED_FORMAT2(DoubleLE, values_.close_to_positive_zero, 0.0);
+}
+
+// Tests the cases where DoubleLE() should fail.
+TEST_F(DoubleTest, DoubleLEFails) {
+  // When val1 is greater than val2 by a large margin,
+  EXPECT_NONFATAL_FAILURE(EXPECT_PRED_FORMAT2(DoubleLE, 2.0, 1.0),
+                          "(2.0) <= (1.0)");
+
+  // or by a small yet non-negligible margin,
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_PRED_FORMAT2(DoubleLE, values_.further_from_one, 1.0);
+  }, "(values_.further_from_one) <= (1.0)");
+
+#if !GTEST_OS_SYMBIAN && !defined(__BORLANDC__)
+  // Nokia's STLport crashes if we try to output infinity or NaN.
+  // C++Builder gives bad results for ordered comparisons involving NaNs
+  // due to compiler bugs.
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_PRED_FORMAT2(DoubleLE, values_.nan1, values_.infinity);
+  }, "(values_.nan1) <= (values_.infinity)");
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_PRED_FORMAT2(DoubleLE, -values_.infinity, values_.nan1);
+  }, " (-values_.infinity) <= (values_.nan1)");
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_PRED_FORMAT2(DoubleLE, values_.nan1, values_.nan1);
+  }, "(values_.nan1) <= (values_.nan1)");
+#endif  // !GTEST_OS_SYMBIAN && !defined(__BORLANDC__)
+}
+
+
+// Verifies that a test or test case whose name starts with DISABLED_ is
+// not run.
+
+// A test whose name starts with DISABLED_.
+// Should not run.
+TEST(DisabledTest, DISABLED_TestShouldNotRun) {
+  FAIL() << "Unexpected failure: Disabled test should not be run.";
+}
+
+// A test whose name does not start with DISABLED_.
+// Should run.
+TEST(DisabledTest, NotDISABLED_TestShouldRun) {
+  EXPECT_EQ(1, 1);
+}
+
+// A test case whose name starts with DISABLED_.
+// Should not run.
+TEST(DISABLED_TestCase, TestShouldNotRun) {
+  FAIL() << "Unexpected failure: Test in disabled test case should not be run.";
+}
+
+// A test case and test whose names start with DISABLED_.
+// Should not run.
+TEST(DISABLED_TestCase, DISABLED_TestShouldNotRun) {
+  FAIL() << "Unexpected failure: Test in disabled test case should not be run.";
+}
+
+// Check that when all tests in a test case are disabled, SetupTestCase() and
+// TearDownTestCase() are not called.
+class DisabledTestsTest : public Test {
+ protected:
+  static void SetUpTestCase() {
+    FAIL() << "Unexpected failure: All tests disabled in test case. "
+              "SetupTestCase() should not be called.";
+  }
+
+  static void TearDownTestCase() {
+    FAIL() << "Unexpected failure: All tests disabled in test case. "
+              "TearDownTestCase() should not be called.";
+  }
+};
+
+TEST_F(DisabledTestsTest, DISABLED_TestShouldNotRun_1) {
+  FAIL() << "Unexpected failure: Disabled test should not be run.";
+}
+
+TEST_F(DisabledTestsTest, DISABLED_TestShouldNotRun_2) {
+  FAIL() << "Unexpected failure: Disabled test should not be run.";
+}
+
+// Tests that disabled typed tests aren't run.
+
+#if GTEST_HAS_TYPED_TEST
+
+template <typename T>
+class TypedTest : public Test {
+};
+
+typedef testing::Types<int, double> NumericTypes;
+TYPED_TEST_CASE(TypedTest, NumericTypes);
+
+TYPED_TEST(TypedTest, DISABLED_ShouldNotRun) {
+  FAIL() << "Unexpected failure: Disabled typed test should not run.";
+}
+
+template <typename T>
+class DISABLED_TypedTest : public Test {
+};
+
+TYPED_TEST_CASE(DISABLED_TypedTest, NumericTypes);
+
+TYPED_TEST(DISABLED_TypedTest, ShouldNotRun) {
+  FAIL() << "Unexpected failure: Disabled typed test should not run.";
+}
+
+#endif  // GTEST_HAS_TYPED_TEST
+
+// Tests that disabled type-parameterized tests aren't run.
+
+#if GTEST_HAS_TYPED_TEST_P
+
+template <typename T>
+class TypedTestP : public Test {
+};
+
+TYPED_TEST_CASE_P(TypedTestP);
+
+TYPED_TEST_P(TypedTestP, DISABLED_ShouldNotRun) {
+  FAIL() << "Unexpected failure: "
+         << "Disabled type-parameterized test should not run.";
+}
+
+REGISTER_TYPED_TEST_CASE_P(TypedTestP, DISABLED_ShouldNotRun);
+
+INSTANTIATE_TYPED_TEST_CASE_P(My, TypedTestP, NumericTypes);
+
+template <typename T>
+class DISABLED_TypedTestP : public Test {
+};
+
+TYPED_TEST_CASE_P(DISABLED_TypedTestP);
+
+TYPED_TEST_P(DISABLED_TypedTestP, ShouldNotRun) {
+  FAIL() << "Unexpected failure: "
+         << "Disabled type-parameterized test should not run.";
+}
+
+REGISTER_TYPED_TEST_CASE_P(DISABLED_TypedTestP, ShouldNotRun);
+
+INSTANTIATE_TYPED_TEST_CASE_P(My, DISABLED_TypedTestP, NumericTypes);
+
+#endif  // GTEST_HAS_TYPED_TEST_P
+
+// Tests that assertion macros evaluate their arguments exactly once.
+
+class SingleEvaluationTest : public Test {
+ public:  // Must be public and not protected due to a bug in g++ 3.4.2.
+  // This helper function is needed by the FailedASSERT_STREQ test
+  // below.  It's public to work around C++Builder's bug with scoping local
+  // classes.
+  static void CompareAndIncrementCharPtrs() {
+    ASSERT_STREQ(p1_++, p2_++);
+  }
+
+  // This helper function is needed by the FailedASSERT_NE test below.  It's
+  // public to work around C++Builder's bug with scoping local classes.
+  static void CompareAndIncrementInts() {
+    ASSERT_NE(a_++, b_++);
+  }
+
+ protected:
+  SingleEvaluationTest() {
+    p1_ = s1_;
+    p2_ = s2_;
+    a_ = 0;
+    b_ = 0;
+  }
+
+  static const char* const s1_;
+  static const char* const s2_;
+  static const char* p1_;
+  static const char* p2_;
+
+  static int a_;
+  static int b_;
+};
+
+const char* const SingleEvaluationTest::s1_ = "01234";
+const char* const SingleEvaluationTest::s2_ = "abcde";
+const char* SingleEvaluationTest::p1_;
+const char* SingleEvaluationTest::p2_;
+int SingleEvaluationTest::a_;
+int SingleEvaluationTest::b_;
+
+// Tests that when ASSERT_STREQ fails, it evaluates its arguments
+// exactly once.
+TEST_F(SingleEvaluationTest, FailedASSERT_STREQ) {
+  EXPECT_FATAL_FAILURE(SingleEvaluationTest::CompareAndIncrementCharPtrs(),
+                       "p2_++");
+  EXPECT_EQ(s1_ + 1, p1_);
+  EXPECT_EQ(s2_ + 1, p2_);
+}
+
+// Tests that string assertion arguments are evaluated exactly once.
+TEST_F(SingleEvaluationTest, ASSERT_STR) {
+  // successful EXPECT_STRNE
+  EXPECT_STRNE(p1_++, p2_++);
+  EXPECT_EQ(s1_ + 1, p1_);
+  EXPECT_EQ(s2_ + 1, p2_);
+
+  // failed EXPECT_STRCASEEQ
+  EXPECT_NONFATAL_FAILURE(EXPECT_STRCASEEQ(p1_++, p2_++),
+                          "ignoring case");
+  EXPECT_EQ(s1_ + 2, p1_);
+  EXPECT_EQ(s2_ + 2, p2_);
+}
+
+// Tests that when ASSERT_NE fails, it evaluates its arguments exactly
+// once.
+TEST_F(SingleEvaluationTest, FailedASSERT_NE) {
+  EXPECT_FATAL_FAILURE(SingleEvaluationTest::CompareAndIncrementInts(),
+                       "(a_++) != (b_++)");
+  EXPECT_EQ(1, a_);
+  EXPECT_EQ(1, b_);
+}
+
+// Tests that assertion arguments are evaluated exactly once.
+TEST_F(SingleEvaluationTest, OtherCases) {
+  // successful EXPECT_TRUE
+  EXPECT_TRUE(0 == a_++);  // NOLINT
+  EXPECT_EQ(1, a_);
+
+  // failed EXPECT_TRUE
+  EXPECT_NONFATAL_FAILURE(EXPECT_TRUE(-1 == a_++), "-1 == a_++");
+  EXPECT_EQ(2, a_);
+
+  // successful EXPECT_GT
+  EXPECT_GT(a_++, b_++);
+  EXPECT_EQ(3, a_);
+  EXPECT_EQ(1, b_);
+
+  // failed EXPECT_LT
+  EXPECT_NONFATAL_FAILURE(EXPECT_LT(a_++, b_++), "(a_++) < (b_++)");
+  EXPECT_EQ(4, a_);
+  EXPECT_EQ(2, b_);
+
+  // successful ASSERT_TRUE
+  ASSERT_TRUE(0 < a_++);  // NOLINT
+  EXPECT_EQ(5, a_);
+
+  // successful ASSERT_GT
+  ASSERT_GT(a_++, b_++);
+  EXPECT_EQ(6, a_);
+  EXPECT_EQ(3, b_);
+}
+
+#if GTEST_HAS_EXCEPTIONS
+
+void ThrowAnInteger() {
+  throw 1;
+}
+
+// Tests that assertion arguments are evaluated exactly once.
+TEST_F(SingleEvaluationTest, ExceptionTests) {
+  // successful EXPECT_THROW
+  EXPECT_THROW({  // NOLINT
+    a_++;
+    ThrowAnInteger();
+  }, int);
+  EXPECT_EQ(1, a_);
+
+  // failed EXPECT_THROW, throws different
+  EXPECT_NONFATAL_FAILURE(EXPECT_THROW({  // NOLINT
+    a_++;
+    ThrowAnInteger();
+  }, bool), "throws a different type");
+  EXPECT_EQ(2, a_);
+
+  // failed EXPECT_THROW, throws nothing
+  EXPECT_NONFATAL_FAILURE(EXPECT_THROW(a_++, bool), "throws nothing");
+  EXPECT_EQ(3, a_);
+
+  // successful EXPECT_NO_THROW
+  EXPECT_NO_THROW(a_++);
+  EXPECT_EQ(4, a_);
+
+  // failed EXPECT_NO_THROW
+  EXPECT_NONFATAL_FAILURE(EXPECT_NO_THROW({  // NOLINT
+    a_++;
+    ThrowAnInteger();
+  }), "it throws");
+  EXPECT_EQ(5, a_);
+
+  // successful EXPECT_ANY_THROW
+  EXPECT_ANY_THROW({  // NOLINT
+    a_++;
+    ThrowAnInteger();
+  });
+  EXPECT_EQ(6, a_);
+
+  // failed EXPECT_ANY_THROW
+  EXPECT_NONFATAL_FAILURE(EXPECT_ANY_THROW(a_++), "it doesn't");
+  EXPECT_EQ(7, a_);
+}
+
+#endif  // GTEST_HAS_EXCEPTIONS
+
+// Tests {ASSERT|EXPECT}_NO_FATAL_FAILURE.
+class NoFatalFailureTest : public Test {
+ protected:
+  void Succeeds() {}
+  void FailsNonFatal() {
+    ADD_FAILURE() << "some non-fatal failure";
+  }
+  void Fails() {
+    FAIL() << "some fatal failure";
+  }
+
+  void DoAssertNoFatalFailureOnFails() {
+    ASSERT_NO_FATAL_FAILURE(Fails());
+    ADD_FAILURE() << "shold not reach here.";
+  }
+
+  void DoExpectNoFatalFailureOnFails() {
+    EXPECT_NO_FATAL_FAILURE(Fails());
+    ADD_FAILURE() << "other failure";
+  }
+};
+
+TEST_F(NoFatalFailureTest, NoFailure) {
+  EXPECT_NO_FATAL_FAILURE(Succeeds());
+  ASSERT_NO_FATAL_FAILURE(Succeeds());
+}
+
+TEST_F(NoFatalFailureTest, NonFatalIsNoFailure) {
+  EXPECT_NONFATAL_FAILURE(
+      EXPECT_NO_FATAL_FAILURE(FailsNonFatal()),
+      "some non-fatal failure");
+  EXPECT_NONFATAL_FAILURE(
+      ASSERT_NO_FATAL_FAILURE(FailsNonFatal()),
+      "some non-fatal failure");
+}
+
+TEST_F(NoFatalFailureTest, AssertNoFatalFailureOnFatalFailure) {
+  TestPartResultArray gtest_failures;
+  {
+    ScopedFakeTestPartResultReporter gtest_reporter(&gtest_failures);
+    DoAssertNoFatalFailureOnFails();
+  }
+  ASSERT_EQ(2, gtest_failures.size());
+  EXPECT_EQ(TestPartResult::kFatalFailure,
+            gtest_failures.GetTestPartResult(0).type());
+  EXPECT_EQ(TestPartResult::kFatalFailure,
+            gtest_failures.GetTestPartResult(1).type());
+  EXPECT_PRED_FORMAT2(testing::IsSubstring, "some fatal failure",
+                      gtest_failures.GetTestPartResult(0).message());
+  EXPECT_PRED_FORMAT2(testing::IsSubstring, "it does",
+                      gtest_failures.GetTestPartResult(1).message());
+}
+
+TEST_F(NoFatalFailureTest, ExpectNoFatalFailureOnFatalFailure) {
+  TestPartResultArray gtest_failures;
+  {
+    ScopedFakeTestPartResultReporter gtest_reporter(&gtest_failures);
+    DoExpectNoFatalFailureOnFails();
+  }
+  ASSERT_EQ(3, gtest_failures.size());
+  EXPECT_EQ(TestPartResult::kFatalFailure,
+            gtest_failures.GetTestPartResult(0).type());
+  EXPECT_EQ(TestPartResult::kNonFatalFailure,
+            gtest_failures.GetTestPartResult(1).type());
+  EXPECT_EQ(TestPartResult::kNonFatalFailure,
+            gtest_failures.GetTestPartResult(2).type());
+  EXPECT_PRED_FORMAT2(testing::IsSubstring, "some fatal failure",
+                      gtest_failures.GetTestPartResult(0).message());
+  EXPECT_PRED_FORMAT2(testing::IsSubstring, "it does",
+                      gtest_failures.GetTestPartResult(1).message());
+  EXPECT_PRED_FORMAT2(testing::IsSubstring, "other failure",
+                      gtest_failures.GetTestPartResult(2).message());
+}
+
+TEST_F(NoFatalFailureTest, MessageIsStreamable) {
+  TestPartResultArray gtest_failures;
+  {
+    ScopedFakeTestPartResultReporter gtest_reporter(&gtest_failures);
+    EXPECT_NO_FATAL_FAILURE(FAIL() << "foo") << "my message";
+  }
+  ASSERT_EQ(2, gtest_failures.size());
+  EXPECT_EQ(TestPartResult::kNonFatalFailure,
+            gtest_failures.GetTestPartResult(0).type());
+  EXPECT_EQ(TestPartResult::kNonFatalFailure,
+            gtest_failures.GetTestPartResult(1).type());
+  EXPECT_PRED_FORMAT2(testing::IsSubstring, "foo",
+                      gtest_failures.GetTestPartResult(0).message());
+  EXPECT_PRED_FORMAT2(testing::IsSubstring, "my message",
+                      gtest_failures.GetTestPartResult(1).message());
+}
+
+// Tests non-string assertions.
+
+// Tests EqFailure(), used for implementing *EQ* assertions.
+TEST(AssertionTest, EqFailure) {
+  const String foo_val("5"), bar_val("6");
+  const String msg1(
+      EqFailure("foo", "bar", foo_val, bar_val, false)
+      .failure_message());
+  EXPECT_STREQ(
+      "Value of: bar\n"
+      "  Actual: 6\n"
+      "Expected: foo\n"
+      "Which is: 5",
+      msg1.c_str());
+
+  const String msg2(
+      EqFailure("foo", "6", foo_val, bar_val, false)
+      .failure_message());
+  EXPECT_STREQ(
+      "Value of: 6\n"
+      "Expected: foo\n"
+      "Which is: 5",
+      msg2.c_str());
+
+  const String msg3(
+      EqFailure("5", "bar", foo_val, bar_val, false)
+      .failure_message());
+  EXPECT_STREQ(
+      "Value of: bar\n"
+      "  Actual: 6\n"
+      "Expected: 5",
+      msg3.c_str());
+
+  const String msg4(
+      EqFailure("5", "6", foo_val, bar_val, false).failure_message());
+  EXPECT_STREQ(
+      "Value of: 6\n"
+      "Expected: 5",
+      msg4.c_str());
+
+  const String msg5(
+      EqFailure("foo", "bar",
+                String("\"x\""), String("\"y\""),
+                true).failure_message());
+  EXPECT_STREQ(
+      "Value of: bar\n"
+      "  Actual: \"y\"\n"
+      "Expected: foo (ignoring case)\n"
+      "Which is: \"x\"",
+      msg5.c_str());
+}
+
+// Tests AppendUserMessage(), used for implementing the *EQ* macros.
+TEST(AssertionTest, AppendUserMessage) {
+  const String foo("foo");
+
+  Message msg;
+  EXPECT_STREQ("foo",
+               AppendUserMessage(foo, msg).c_str());
+
+  msg << "bar";
+  EXPECT_STREQ("foo\nbar",
+               AppendUserMessage(foo, msg).c_str());
+}
+
+#ifdef __BORLANDC__
+// Silences warnings: "Condition is always true", "Unreachable code"
+# pragma option push -w-ccc -w-rch
+#endif
+
+// Tests ASSERT_TRUE.
+TEST(AssertionTest, ASSERT_TRUE) {
+  ASSERT_TRUE(2 > 1);  // NOLINT
+  EXPECT_FATAL_FAILURE(ASSERT_TRUE(2 < 1),
+                       "2 < 1");
+}
+
+// Tests ASSERT_TRUE(predicate) for predicates returning AssertionResult.
+TEST(AssertionTest, AssertTrueWithAssertionResult) {
+  ASSERT_TRUE(ResultIsEven(2));
+#ifndef __BORLANDC__
+  // ICE's in C++Builder.
+  EXPECT_FATAL_FAILURE(ASSERT_TRUE(ResultIsEven(3)),
+                       "Value of: ResultIsEven(3)\n"
+                       "  Actual: false (3 is odd)\n"
+                       "Expected: true");
+#endif
+  ASSERT_TRUE(ResultIsEvenNoExplanation(2));
+  EXPECT_FATAL_FAILURE(ASSERT_TRUE(ResultIsEvenNoExplanation(3)),
+                       "Value of: ResultIsEvenNoExplanation(3)\n"
+                       "  Actual: false (3 is odd)\n"
+                       "Expected: true");
+}
+
+// Tests ASSERT_FALSE.
+TEST(AssertionTest, ASSERT_FALSE) {
+  ASSERT_FALSE(2 < 1);  // NOLINT
+  EXPECT_FATAL_FAILURE(ASSERT_FALSE(2 > 1),
+                       "Value of: 2 > 1\n"
+                       "  Actual: true\n"
+                       "Expected: false");
+}
+
+// Tests ASSERT_FALSE(predicate) for predicates returning AssertionResult.
+TEST(AssertionTest, AssertFalseWithAssertionResult) {
+  ASSERT_FALSE(ResultIsEven(3));
+#ifndef __BORLANDC__
+  // ICE's in C++Builder.
+  EXPECT_FATAL_FAILURE(ASSERT_FALSE(ResultIsEven(2)),
+                       "Value of: ResultIsEven(2)\n"
+                       "  Actual: true (2 is even)\n"
+                       "Expected: false");
+#endif
+  ASSERT_FALSE(ResultIsEvenNoExplanation(3));
+  EXPECT_FATAL_FAILURE(ASSERT_FALSE(ResultIsEvenNoExplanation(2)),
+                       "Value of: ResultIsEvenNoExplanation(2)\n"
+                       "  Actual: true\n"
+                       "Expected: false");
+}
+
+#ifdef __BORLANDC__
+// Restores warnings after previous "#pragma option push" supressed them
+# pragma option pop
+#endif
+
+// Tests using ASSERT_EQ on double values.  The purpose is to make
+// sure that the specialization we did for integer and anonymous enums
+// isn't used for double arguments.
+TEST(ExpectTest, ASSERT_EQ_Double) {
+  // A success.
+  ASSERT_EQ(5.6, 5.6);
+
+  // A failure.
+  EXPECT_FATAL_FAILURE(ASSERT_EQ(5.1, 5.2),
+                       "5.1");
+}
+
+// Tests ASSERT_EQ.
+TEST(AssertionTest, ASSERT_EQ) {
+  ASSERT_EQ(5, 2 + 3);
+  EXPECT_FATAL_FAILURE(ASSERT_EQ(5, 2*3),
+                       "Value of: 2*3\n"
+                       "  Actual: 6\n"
+                       "Expected: 5");
+}
+
+// Tests ASSERT_EQ(NULL, pointer).
+#if GTEST_CAN_COMPARE_NULL
+TEST(AssertionTest, ASSERT_EQ_NULL) {
+  // A success.
+  const char* p = NULL;
+  // Some older GCC versions may issue a spurious waring in this or the next
+  // assertion statement. This warning should not be suppressed with
+  // static_cast since the test verifies the ability to use bare NULL as the
+  // expected parameter to the macro.
+  ASSERT_EQ(NULL, p);
+
+  // A failure.
+  static int n = 0;
+  EXPECT_FATAL_FAILURE(ASSERT_EQ(NULL, &n),
+                       "Value of: &n\n");
+}
+#endif  // GTEST_CAN_COMPARE_NULL
+
+// Tests ASSERT_EQ(0, non_pointer).  Since the literal 0 can be
+// treated as a null pointer by the compiler, we need to make sure
+// that ASSERT_EQ(0, non_pointer) isn't interpreted by Google Test as
+// ASSERT_EQ(static_cast<void*>(NULL), non_pointer).
+TEST(ExpectTest, ASSERT_EQ_0) {
+  int n = 0;
+
+  // A success.
+  ASSERT_EQ(0, n);
+
+  // A failure.
+  EXPECT_FATAL_FAILURE(ASSERT_EQ(0, 5.6),
+                       "Expected: 0");
+}
+
+// Tests ASSERT_NE.
+TEST(AssertionTest, ASSERT_NE) {
+  ASSERT_NE(6, 7);
+  EXPECT_FATAL_FAILURE(ASSERT_NE('a', 'a'),
+                       "Expected: ('a') != ('a'), "
+                       "actual: 'a' (97, 0x61) vs 'a' (97, 0x61)");
+}
+
+// Tests ASSERT_LE.
+TEST(AssertionTest, ASSERT_LE) {
+  ASSERT_LE(2, 3);
+  ASSERT_LE(2, 2);
+  EXPECT_FATAL_FAILURE(ASSERT_LE(2, 0),
+                       "Expected: (2) <= (0), actual: 2 vs 0");
+}
+
+// Tests ASSERT_LT.
+TEST(AssertionTest, ASSERT_LT) {
+  ASSERT_LT(2, 3);
+  EXPECT_FATAL_FAILURE(ASSERT_LT(2, 2),
+                       "Expected: (2) < (2), actual: 2 vs 2");
+}
+
+// Tests ASSERT_GE.
+TEST(AssertionTest, ASSERT_GE) {
+  ASSERT_GE(2, 1);
+  ASSERT_GE(2, 2);
+  EXPECT_FATAL_FAILURE(ASSERT_GE(2, 3),
+                       "Expected: (2) >= (3), actual: 2 vs 3");
+}
+
+// Tests ASSERT_GT.
+TEST(AssertionTest, ASSERT_GT) {
+  ASSERT_GT(2, 1);
+  EXPECT_FATAL_FAILURE(ASSERT_GT(2, 2),
+                       "Expected: (2) > (2), actual: 2 vs 2");
+}
+
+#if GTEST_HAS_EXCEPTIONS
+
+void ThrowNothing() {}
+
+// Tests ASSERT_THROW.
+TEST(AssertionTest, ASSERT_THROW) {
+  ASSERT_THROW(ThrowAnInteger(), int);
+
+# ifndef __BORLANDC__
+
+  // ICE's in C++Builder 2007 and 2009.
+  EXPECT_FATAL_FAILURE(
+      ASSERT_THROW(ThrowAnInteger(), bool),
+      "Expected: ThrowAnInteger() throws an exception of type bool.\n"
+      "  Actual: it throws a different type.");
+# endif
+
+  EXPECT_FATAL_FAILURE(
+      ASSERT_THROW(ThrowNothing(), bool),
+      "Expected: ThrowNothing() throws an exception of type bool.\n"
+      "  Actual: it throws nothing.");
+}
+
+// Tests ASSERT_NO_THROW.
+TEST(AssertionTest, ASSERT_NO_THROW) {
+  ASSERT_NO_THROW(ThrowNothing());
+  EXPECT_FATAL_FAILURE(ASSERT_NO_THROW(ThrowAnInteger()),
+                       "Expected: ThrowAnInteger() doesn't throw an exception."
+                       "\n  Actual: it throws.");
+}
+
+// Tests ASSERT_ANY_THROW.
+TEST(AssertionTest, ASSERT_ANY_THROW) {
+  ASSERT_ANY_THROW(ThrowAnInteger());
+  EXPECT_FATAL_FAILURE(
+      ASSERT_ANY_THROW(ThrowNothing()),
+      "Expected: ThrowNothing() throws an exception.\n"
+      "  Actual: it doesn't.");
+}
+
+#endif  // GTEST_HAS_EXCEPTIONS
+
+// Makes sure we deal with the precedence of <<.  This test should
+// compile.
+TEST(AssertionTest, AssertPrecedence) {
+  ASSERT_EQ(1 < 2, true);
+  bool false_value = false;
+  ASSERT_EQ(true && false_value, false);
+}
+
+// A subroutine used by the following test.
+void TestEq1(int x) {
+  ASSERT_EQ(1, x);
+}
+
+// Tests calling a test subroutine that's not part of a fixture.
+TEST(AssertionTest, NonFixtureSubroutine) {
+  EXPECT_FATAL_FAILURE(TestEq1(2),
+                       "Value of: x");
+}
+
+// An uncopyable class.
+class Uncopyable {
+ public:
+  explicit Uncopyable(int a_value) : value_(a_value) {}
+
+  int value() const { return value_; }
+  bool operator==(const Uncopyable& rhs) const {
+    return value() == rhs.value();
+  }
+ private:
+  // This constructor deliberately has no implementation, as we don't
+  // want this class to be copyable.
+  Uncopyable(const Uncopyable&);  // NOLINT
+
+  int value_;
+};
+
+::std::ostream& operator<<(::std::ostream& os, const Uncopyable& value) {
+  return os << value.value();
+}
+
+
+bool IsPositiveUncopyable(const Uncopyable& x) {
+  return x.value() > 0;
+}
+
+// A subroutine used by the following test.
+void TestAssertNonPositive() {
+  Uncopyable y(-1);
+  ASSERT_PRED1(IsPositiveUncopyable, y);
+}
+// A subroutine used by the following test.
+void TestAssertEqualsUncopyable() {
+  Uncopyable x(5);
+  Uncopyable y(-1);
+  ASSERT_EQ(x, y);
+}
+
+// Tests that uncopyable objects can be used in assertions.
+TEST(AssertionTest, AssertWorksWithUncopyableObject) {
+  Uncopyable x(5);
+  ASSERT_PRED1(IsPositiveUncopyable, x);
+  ASSERT_EQ(x, x);
+  EXPECT_FATAL_FAILURE(TestAssertNonPositive(),
+    "IsPositiveUncopyable(y) evaluates to false, where\ny evaluates to -1");
+  EXPECT_FATAL_FAILURE(TestAssertEqualsUncopyable(),
+    "Value of: y\n  Actual: -1\nExpected: x\nWhich is: 5");
+}
+
+// Tests that uncopyable objects can be used in expects.
+TEST(AssertionTest, ExpectWorksWithUncopyableObject) {
+  Uncopyable x(5);
+  EXPECT_PRED1(IsPositiveUncopyable, x);
+  Uncopyable y(-1);
+  EXPECT_NONFATAL_FAILURE(EXPECT_PRED1(IsPositiveUncopyable, y),
+    "IsPositiveUncopyable(y) evaluates to false, where\ny evaluates to -1");
+  EXPECT_EQ(x, x);
+  EXPECT_NONFATAL_FAILURE(EXPECT_EQ(x, y),
+    "Value of: y\n  Actual: -1\nExpected: x\nWhich is: 5");
+}
+
+enum NamedEnum {
+  kE1 = 0,
+  kE2 = 1
+};
+
+TEST(AssertionTest, NamedEnum) {
+  EXPECT_EQ(kE1, kE1);
+  EXPECT_LT(kE1, kE2);
+  EXPECT_NONFATAL_FAILURE(EXPECT_EQ(kE1, kE2), "Which is: 0");
+  EXPECT_NONFATAL_FAILURE(EXPECT_EQ(kE1, kE2), "Actual: 1");
+}
+
+// The version of gcc used in XCode 2.2 has a bug and doesn't allow
+// anonymous enums in assertions.  Therefore the following test is not
+// done on Mac.
+// Sun Studio and HP aCC also reject this code.
+#if !GTEST_OS_MAC && !defined(__SUNPRO_CC) && !defined(__HP_aCC)
+
+// Tests using assertions with anonymous enums.
+enum {
+  kCaseA = -1,
+
+# if GTEST_OS_LINUX
+
+  // We want to test the case where the size of the anonymous enum is
+  // larger than sizeof(int), to make sure our implementation of the
+  // assertions doesn't truncate the enums.  However, MSVC
+  // (incorrectly) doesn't allow an enum value to exceed the range of
+  // an int, so this has to be conditionally compiled.
+  //
+  // On Linux, kCaseB and kCaseA have the same value when truncated to
+  // int size.  We want to test whether this will confuse the
+  // assertions.
+  kCaseB = testing::internal::kMaxBiggestInt,
+
+# else
+
+  kCaseB = INT_MAX,
+
+# endif  // GTEST_OS_LINUX
+
+  kCaseC = 42
+};
+
+TEST(AssertionTest, AnonymousEnum) {
+# if GTEST_OS_LINUX
+
+  EXPECT_EQ(static_cast<int>(kCaseA), static_cast<int>(kCaseB));
+
+# endif  // GTEST_OS_LINUX
+
+  EXPECT_EQ(kCaseA, kCaseA);
+  EXPECT_NE(kCaseA, kCaseB);
+  EXPECT_LT(kCaseA, kCaseB);
+  EXPECT_LE(kCaseA, kCaseB);
+  EXPECT_GT(kCaseB, kCaseA);
+  EXPECT_GE(kCaseA, kCaseA);
+  EXPECT_NONFATAL_FAILURE(EXPECT_GE(kCaseA, kCaseB),
+                          "(kCaseA) >= (kCaseB)");
+  EXPECT_NONFATAL_FAILURE(EXPECT_GE(kCaseA, kCaseC),
+                          "-1 vs 42");
+
+  ASSERT_EQ(kCaseA, kCaseA);
+  ASSERT_NE(kCaseA, kCaseB);
+  ASSERT_LT(kCaseA, kCaseB);
+  ASSERT_LE(kCaseA, kCaseB);
+  ASSERT_GT(kCaseB, kCaseA);
+  ASSERT_GE(kCaseA, kCaseA);
+
+# ifndef __BORLANDC__
+
+  // ICE's in C++Builder.
+  EXPECT_FATAL_FAILURE(ASSERT_EQ(kCaseA, kCaseB),
+                       "Value of: kCaseB");
+  EXPECT_FATAL_FAILURE(ASSERT_EQ(kCaseA, kCaseC),
+                       "Actual: 42");
+# endif
+
+  EXPECT_FATAL_FAILURE(ASSERT_EQ(kCaseA, kCaseC),
+                       "Which is: -1");
+}
+
+#endif  // !GTEST_OS_MAC && !defined(__SUNPRO_CC)
+
+#if GTEST_OS_WINDOWS
+
+static HRESULT UnexpectedHRESULTFailure() {
+  return E_UNEXPECTED;
+}
+
+static HRESULT OkHRESULTSuccess() {
+  return S_OK;
+}
+
+static HRESULT FalseHRESULTSuccess() {
+  return S_FALSE;
+}
+
+// HRESULT assertion tests test both zero and non-zero
+// success codes as well as failure message for each.
+//
+// Windows CE doesn't support message texts.
+TEST(HRESULTAssertionTest, EXPECT_HRESULT_SUCCEEDED) {
+  EXPECT_HRESULT_SUCCEEDED(S_OK);
+  EXPECT_HRESULT_SUCCEEDED(S_FALSE);
+
+  EXPECT_NONFATAL_FAILURE(EXPECT_HRESULT_SUCCEEDED(UnexpectedHRESULTFailure()),
+    "Expected: (UnexpectedHRESULTFailure()) succeeds.\n"
+    "  Actual: 0x8000FFFF");
+}
+
+TEST(HRESULTAssertionTest, ASSERT_HRESULT_SUCCEEDED) {
+  ASSERT_HRESULT_SUCCEEDED(S_OK);
+  ASSERT_HRESULT_SUCCEEDED(S_FALSE);
+
+  EXPECT_FATAL_FAILURE(ASSERT_HRESULT_SUCCEEDED(UnexpectedHRESULTFailure()),
+    "Expected: (UnexpectedHRESULTFailure()) succeeds.\n"
+    "  Actual: 0x8000FFFF");
+}
+
+TEST(HRESULTAssertionTest, EXPECT_HRESULT_FAILED) {
+  EXPECT_HRESULT_FAILED(E_UNEXPECTED);
+
+  EXPECT_NONFATAL_FAILURE(EXPECT_HRESULT_FAILED(OkHRESULTSuccess()),
+    "Expected: (OkHRESULTSuccess()) fails.\n"
+    "  Actual: 0x00000000");
+  EXPECT_NONFATAL_FAILURE(EXPECT_HRESULT_FAILED(FalseHRESULTSuccess()),
+    "Expected: (FalseHRESULTSuccess()) fails.\n"
+    "  Actual: 0x00000001");
+}
+
+TEST(HRESULTAssertionTest, ASSERT_HRESULT_FAILED) {
+  ASSERT_HRESULT_FAILED(E_UNEXPECTED);
+
+# ifndef __BORLANDC__
+
+  // ICE's in C++Builder 2007 and 2009.
+  EXPECT_FATAL_FAILURE(ASSERT_HRESULT_FAILED(OkHRESULTSuccess()),
+    "Expected: (OkHRESULTSuccess()) fails.\n"
+    "  Actual: 0x00000000");
+# endif
+
+  EXPECT_FATAL_FAILURE(ASSERT_HRESULT_FAILED(FalseHRESULTSuccess()),
+    "Expected: (FalseHRESULTSuccess()) fails.\n"
+    "  Actual: 0x00000001");
+}
+
+// Tests that streaming to the HRESULT macros works.
+TEST(HRESULTAssertionTest, Streaming) {
+  EXPECT_HRESULT_SUCCEEDED(S_OK) << "unexpected failure";
+  ASSERT_HRESULT_SUCCEEDED(S_OK) << "unexpected failure";
+  EXPECT_HRESULT_FAILED(E_UNEXPECTED) << "unexpected failure";
+  ASSERT_HRESULT_FAILED(E_UNEXPECTED) << "unexpected failure";
+
+  EXPECT_NONFATAL_FAILURE(
+      EXPECT_HRESULT_SUCCEEDED(E_UNEXPECTED) << "expected failure",
+      "expected failure");
+
+# ifndef __BORLANDC__
+
+  // ICE's in C++Builder 2007 and 2009.
+  EXPECT_FATAL_FAILURE(
+      ASSERT_HRESULT_SUCCEEDED(E_UNEXPECTED) << "expected failure",
+      "expected failure");
+# endif
+
+  EXPECT_NONFATAL_FAILURE(
+      EXPECT_HRESULT_FAILED(S_OK) << "expected failure",
+      "expected failure");
+
+  EXPECT_FATAL_FAILURE(
+      ASSERT_HRESULT_FAILED(S_OK) << "expected failure",
+      "expected failure");
+}
+
+#endif  // GTEST_OS_WINDOWS
+
+#ifdef __BORLANDC__
+// Silences warnings: "Condition is always true", "Unreachable code"
+# pragma option push -w-ccc -w-rch
+#endif
+
+// Tests that the assertion macros behave like single statements.
+TEST(AssertionSyntaxTest, BasicAssertionsBehavesLikeSingleStatement) {
+  if (AlwaysFalse())
+    ASSERT_TRUE(false) << "This should never be executed; "
+                          "It's a compilation test only.";
+
+  if (AlwaysTrue())
+    EXPECT_FALSE(false);
+  else
+    ;  // NOLINT
+
+  if (AlwaysFalse())
+    ASSERT_LT(1, 3);
+
+  if (AlwaysFalse())
+    ;  // NOLINT
+  else
+    EXPECT_GT(3, 2) << "";
+}
+
+#if GTEST_HAS_EXCEPTIONS
+// Tests that the compiler will not complain about unreachable code in the
+// EXPECT_THROW/EXPECT_ANY_THROW/EXPECT_NO_THROW macros.
+TEST(ExpectThrowTest, DoesNotGenerateUnreachableCodeWarning) {
+  int n = 0;
+
+  EXPECT_THROW(throw 1, int);
+  EXPECT_NONFATAL_FAILURE(EXPECT_THROW(n++, int), "");
+  EXPECT_NONFATAL_FAILURE(EXPECT_THROW(throw 1, const char*), "");
+  EXPECT_NO_THROW(n++);
+  EXPECT_NONFATAL_FAILURE(EXPECT_NO_THROW(throw 1), "");
+  EXPECT_ANY_THROW(throw 1);
+  EXPECT_NONFATAL_FAILURE(EXPECT_ANY_THROW(n++), "");
+}
+
+TEST(AssertionSyntaxTest, ExceptionAssertionsBehavesLikeSingleStatement) {
+  if (AlwaysFalse())
+    EXPECT_THROW(ThrowNothing(), bool);
+
+  if (AlwaysTrue())
+    EXPECT_THROW(ThrowAnInteger(), int);
+  else
+    ;  // NOLINT
+
+  if (AlwaysFalse())
+    EXPECT_NO_THROW(ThrowAnInteger());
+
+  if (AlwaysTrue())
+    EXPECT_NO_THROW(ThrowNothing());
+  else
+    ;  // NOLINT
+
+  if (AlwaysFalse())
+    EXPECT_ANY_THROW(ThrowNothing());
+
+  if (AlwaysTrue())
+    EXPECT_ANY_THROW(ThrowAnInteger());
+  else
+    ;  // NOLINT
+}
+#endif  // GTEST_HAS_EXCEPTIONS
+
+TEST(AssertionSyntaxTest, NoFatalFailureAssertionsBehavesLikeSingleStatement) {
+  if (AlwaysFalse())
+    EXPECT_NO_FATAL_FAILURE(FAIL()) << "This should never be executed. "
+                                    << "It's a compilation test only.";
+  else
+    ;  // NOLINT
+
+  if (AlwaysFalse())
+    ASSERT_NO_FATAL_FAILURE(FAIL()) << "";
+  else
+    ;  // NOLINT
+
+  if (AlwaysTrue())
+    EXPECT_NO_FATAL_FAILURE(SUCCEED());
+  else
+    ;  // NOLINT
+
+  if (AlwaysFalse())
+    ;  // NOLINT
+  else
+    ASSERT_NO_FATAL_FAILURE(SUCCEED());
+}
+
+// Tests that the assertion macros work well with switch statements.
+TEST(AssertionSyntaxTest, WorksWithSwitch) {
+  switch (0) {
+    case 1:
+      break;
+    default:
+      ASSERT_TRUE(true);
+  }
+
+  switch (0)
+    case 0:
+      EXPECT_FALSE(false) << "EXPECT_FALSE failed in switch case";
+
+  // Binary assertions are implemented using a different code path
+  // than the Boolean assertions.  Hence we test them separately.
+  switch (0) {
+    case 1:
+    default:
+      ASSERT_EQ(1, 1) << "ASSERT_EQ failed in default switch handler";
+  }
+
+  switch (0)
+    case 0:
+      EXPECT_NE(1, 2);
+}
+
+#if GTEST_HAS_EXCEPTIONS
+
+void ThrowAString() {
+    throw "String";
+}
+
+// Test that the exception assertion macros compile and work with const
+// type qualifier.
+TEST(AssertionSyntaxTest, WorksWithConst) {
+    ASSERT_THROW(ThrowAString(), const char*);
+
+    EXPECT_THROW(ThrowAString(), const char*);
+}
+
+#endif  // GTEST_HAS_EXCEPTIONS
+
+}  // namespace
+
+namespace testing {
+
+// Tests that Google Test tracks SUCCEED*.
+TEST(SuccessfulAssertionTest, SUCCEED) {
+  SUCCEED();
+  SUCCEED() << "OK";
+  EXPECT_EQ(2, GetUnitTestImpl()->current_test_result()->total_part_count());
+}
+
+// Tests that Google Test doesn't track successful EXPECT_*.
+TEST(SuccessfulAssertionTest, EXPECT) {
+  EXPECT_TRUE(true);
+  EXPECT_EQ(0, GetUnitTestImpl()->current_test_result()->total_part_count());
+}
+
+// Tests that Google Test doesn't track successful EXPECT_STR*.
+TEST(SuccessfulAssertionTest, EXPECT_STR) {
+  EXPECT_STREQ("", "");
+  EXPECT_EQ(0, GetUnitTestImpl()->current_test_result()->total_part_count());
+}
+
+// Tests that Google Test doesn't track successful ASSERT_*.
+TEST(SuccessfulAssertionTest, ASSERT) {
+  ASSERT_TRUE(true);
+  EXPECT_EQ(0, GetUnitTestImpl()->current_test_result()->total_part_count());
+}
+
+// Tests that Google Test doesn't track successful ASSERT_STR*.
+TEST(SuccessfulAssertionTest, ASSERT_STR) {
+  ASSERT_STREQ("", "");
+  EXPECT_EQ(0, GetUnitTestImpl()->current_test_result()->total_part_count());
+}
+
+}  // namespace testing
+
+namespace {
+
+// Tests the message streaming variation of assertions.
+
+TEST(AssertionWithMessageTest, EXPECT) {
+  EXPECT_EQ(1, 1) << "This should succeed.";
+  EXPECT_NONFATAL_FAILURE(EXPECT_NE(1, 1) << "Expected failure #1.",
+                          "Expected failure #1");
+  EXPECT_LE(1, 2) << "This should succeed.";
+  EXPECT_NONFATAL_FAILURE(EXPECT_LT(1, 0) << "Expected failure #2.",
+                          "Expected failure #2.");
+  EXPECT_GE(1, 0) << "This should succeed.";
+  EXPECT_NONFATAL_FAILURE(EXPECT_GT(1, 2) << "Expected failure #3.",
+                          "Expected failure #3.");
+
+  EXPECT_STREQ("1", "1") << "This should succeed.";
+  EXPECT_NONFATAL_FAILURE(EXPECT_STRNE("1", "1") << "Expected failure #4.",
+                          "Expected failure #4.");
+  EXPECT_STRCASEEQ("a", "A") << "This should succeed.";
+  EXPECT_NONFATAL_FAILURE(EXPECT_STRCASENE("a", "A") << "Expected failure #5.",
+                          "Expected failure #5.");
+
+  EXPECT_FLOAT_EQ(1, 1) << "This should succeed.";
+  EXPECT_NONFATAL_FAILURE(EXPECT_DOUBLE_EQ(1, 1.2) << "Expected failure #6.",
+                          "Expected failure #6.");
+  EXPECT_NEAR(1, 1.1, 0.2) << "This should succeed.";
+}
+
+TEST(AssertionWithMessageTest, ASSERT) {
+  ASSERT_EQ(1, 1) << "This should succeed.";
+  ASSERT_NE(1, 2) << "This should succeed.";
+  ASSERT_LE(1, 2) << "This should succeed.";
+  ASSERT_LT(1, 2) << "This should succeed.";
+  ASSERT_GE(1, 0) << "This should succeed.";
+  EXPECT_FATAL_FAILURE(ASSERT_GT(1, 2) << "Expected failure.",
+                       "Expected failure.");
+}
+
+TEST(AssertionWithMessageTest, ASSERT_STR) {
+  ASSERT_STREQ("1", "1") << "This should succeed.";
+  ASSERT_STRNE("1", "2") << "This should succeed.";
+  ASSERT_STRCASEEQ("a", "A") << "This should succeed.";
+  EXPECT_FATAL_FAILURE(ASSERT_STRCASENE("a", "A") << "Expected failure.",
+                       "Expected failure.");
+}
+
+TEST(AssertionWithMessageTest, ASSERT_FLOATING) {
+  ASSERT_FLOAT_EQ(1, 1) << "This should succeed.";
+  ASSERT_DOUBLE_EQ(1, 1) << "This should succeed.";
+  EXPECT_FATAL_FAILURE(ASSERT_NEAR(1,1.2, 0.1) << "Expect failure.",  // NOLINT
+                       "Expect failure.");
+  // To work around a bug in gcc 2.95.0, there is intentionally no
+  // space after the first comma in the previous statement.
+}
+
+// Tests using ASSERT_FALSE with a streamed message.
+TEST(AssertionWithMessageTest, ASSERT_FALSE) {
+  ASSERT_FALSE(false) << "This shouldn't fail.";
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_FALSE(true) << "Expected failure: " << 2 << " > " << 1
+                       << " evaluates to " << true;
+  }, "Expected failure");
+}
+
+// Tests using FAIL with a streamed message.
+TEST(AssertionWithMessageTest, FAIL) {
+  EXPECT_FATAL_FAILURE(FAIL() << 0,
+                       "0");
+}
+
+// Tests using SUCCEED with a streamed message.
+TEST(AssertionWithMessageTest, SUCCEED) {
+  SUCCEED() << "Success == " << 1;
+}
+
+// Tests using ASSERT_TRUE with a streamed message.
+TEST(AssertionWithMessageTest, ASSERT_TRUE) {
+  ASSERT_TRUE(true) << "This should succeed.";
+  ASSERT_TRUE(true) << true;
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_TRUE(false) << static_cast<const char *>(NULL)
+                       << static_cast<char *>(NULL);
+  }, "(null)(null)");
+}
+
+#if GTEST_OS_WINDOWS
+// Tests using wide strings in assertion messages.
+TEST(AssertionWithMessageTest, WideStringMessage) {
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_TRUE(false) << L"This failure is expected.\x8119";
+  }, "This failure is expected.");
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_EQ(1, 2) << "This failure is "
+                    << L"expected too.\x8120";
+  }, "This failure is expected too.");
+}
+#endif  // GTEST_OS_WINDOWS
+
+// Tests EXPECT_TRUE.
+TEST(ExpectTest, EXPECT_TRUE) {
+  EXPECT_TRUE(true) << "Intentional success";
+  EXPECT_NONFATAL_FAILURE(EXPECT_TRUE(false) << "Intentional failure #1.",
+                          "Intentional failure #1.");
+  EXPECT_NONFATAL_FAILURE(EXPECT_TRUE(false) << "Intentional failure #2.",
+                          "Intentional failure #2.");
+  EXPECT_TRUE(2 > 1);  // NOLINT
+  EXPECT_NONFATAL_FAILURE(EXPECT_TRUE(2 < 1),
+                          "Value of: 2 < 1\n"
+                          "  Actual: false\n"
+                          "Expected: true");
+  EXPECT_NONFATAL_FAILURE(EXPECT_TRUE(2 > 3),
+                          "2 > 3");
+}
+
+// Tests EXPECT_TRUE(predicate) for predicates returning AssertionResult.
+TEST(ExpectTest, ExpectTrueWithAssertionResult) {
+  EXPECT_TRUE(ResultIsEven(2));
+  EXPECT_NONFATAL_FAILURE(EXPECT_TRUE(ResultIsEven(3)),
+                          "Value of: ResultIsEven(3)\n"
+                          "  Actual: false (3 is odd)\n"
+                          "Expected: true");
+  EXPECT_TRUE(ResultIsEvenNoExplanation(2));
+  EXPECT_NONFATAL_FAILURE(EXPECT_TRUE(ResultIsEvenNoExplanation(3)),
+                          "Value of: ResultIsEvenNoExplanation(3)\n"
+                          "  Actual: false (3 is odd)\n"
+                          "Expected: true");
+}
+
+// Tests EXPECT_FALSE with a streamed message.
+TEST(ExpectTest, EXPECT_FALSE) {
+  EXPECT_FALSE(2 < 1);  // NOLINT
+  EXPECT_FALSE(false) << "Intentional success";
+  EXPECT_NONFATAL_FAILURE(EXPECT_FALSE(true) << "Intentional failure #1.",
+                          "Intentional failure #1.");
+  EXPECT_NONFATAL_FAILURE(EXPECT_FALSE(true) << "Intentional failure #2.",
+                          "Intentional failure #2.");
+  EXPECT_NONFATAL_FAILURE(EXPECT_FALSE(2 > 1),
+                          "Value of: 2 > 1\n"
+                          "  Actual: true\n"
+                          "Expected: false");
+  EXPECT_NONFATAL_FAILURE(EXPECT_FALSE(2 < 3),
+                          "2 < 3");
+}
+
+// Tests EXPECT_FALSE(predicate) for predicates returning AssertionResult.
+TEST(ExpectTest, ExpectFalseWithAssertionResult) {
+  EXPECT_FALSE(ResultIsEven(3));
+  EXPECT_NONFATAL_FAILURE(EXPECT_FALSE(ResultIsEven(2)),
+                          "Value of: ResultIsEven(2)\n"
+                          "  Actual: true (2 is even)\n"
+                          "Expected: false");
+  EXPECT_FALSE(ResultIsEvenNoExplanation(3));
+  EXPECT_NONFATAL_FAILURE(EXPECT_FALSE(ResultIsEvenNoExplanation(2)),
+                          "Value of: ResultIsEvenNoExplanation(2)\n"
+                          "  Actual: true\n"
+                          "Expected: false");
+}
+
+#ifdef __BORLANDC__
+// Restores warnings after previous "#pragma option push" supressed them
+# pragma option pop
+#endif
+
+// Tests EXPECT_EQ.
+TEST(ExpectTest, EXPECT_EQ) {
+  EXPECT_EQ(5, 2 + 3);
+  EXPECT_NONFATAL_FAILURE(EXPECT_EQ(5, 2*3),
+                          "Value of: 2*3\n"
+                          "  Actual: 6\n"
+                          "Expected: 5");
+  EXPECT_NONFATAL_FAILURE(EXPECT_EQ(5, 2 - 3),
+                          "2 - 3");
+}
+
+// Tests using EXPECT_EQ on double values.  The purpose is to make
+// sure that the specialization we did for integer and anonymous enums
+// isn't used for double arguments.
+TEST(ExpectTest, EXPECT_EQ_Double) {
+  // A success.
+  EXPECT_EQ(5.6, 5.6);
+
+  // A failure.
+  EXPECT_NONFATAL_FAILURE(EXPECT_EQ(5.1, 5.2),
+                          "5.1");
+}
+
+#if GTEST_CAN_COMPARE_NULL
+// Tests EXPECT_EQ(NULL, pointer).
+TEST(ExpectTest, EXPECT_EQ_NULL) {
+  // A success.
+  const char* p = NULL;
+  // Some older GCC versions may issue a spurious warning in this or the next
+  // assertion statement. This warning should not be suppressed with
+  // static_cast since the test verifies the ability to use bare NULL as the
+  // expected parameter to the macro.
+  EXPECT_EQ(NULL, p);
+
+  // A failure.
+  int n = 0;
+  EXPECT_NONFATAL_FAILURE(EXPECT_EQ(NULL, &n),
+                          "Value of: &n\n");
+}
+#endif  // GTEST_CAN_COMPARE_NULL
+
+// Tests EXPECT_EQ(0, non_pointer).  Since the literal 0 can be
+// treated as a null pointer by the compiler, we need to make sure
+// that EXPECT_EQ(0, non_pointer) isn't interpreted by Google Test as
+// EXPECT_EQ(static_cast<void*>(NULL), non_pointer).
+TEST(ExpectTest, EXPECT_EQ_0) {
+  int n = 0;
+
+  // A success.
+  EXPECT_EQ(0, n);
+
+  // A failure.
+  EXPECT_NONFATAL_FAILURE(EXPECT_EQ(0, 5.6),
+                          "Expected: 0");
+}
+
+// Tests EXPECT_NE.
+TEST(ExpectTest, EXPECT_NE) {
+  EXPECT_NE(6, 7);
+
+  EXPECT_NONFATAL_FAILURE(EXPECT_NE('a', 'a'),
+                          "Expected: ('a') != ('a'), "
+                          "actual: 'a' (97, 0x61) vs 'a' (97, 0x61)");
+  EXPECT_NONFATAL_FAILURE(EXPECT_NE(2, 2),
+                          "2");
+  char* const p0 = NULL;
+  EXPECT_NONFATAL_FAILURE(EXPECT_NE(p0, p0),
+                          "p0");
+  // Only way to get the Nokia compiler to compile the cast
+  // is to have a separate void* variable first. Putting
+  // the two casts on the same line doesn't work, neither does
+  // a direct C-style to char*.
+  void* pv1 = (void*)0x1234;  // NOLINT
+  char* const p1 = reinterpret_cast<char*>(pv1);
+  EXPECT_NONFATAL_FAILURE(EXPECT_NE(p1, p1),
+                          "p1");
+}
+
+// Tests EXPECT_LE.
+TEST(ExpectTest, EXPECT_LE) {
+  EXPECT_LE(2, 3);
+  EXPECT_LE(2, 2);
+  EXPECT_NONFATAL_FAILURE(EXPECT_LE(2, 0),
+                          "Expected: (2) <= (0), actual: 2 vs 0");
+  EXPECT_NONFATAL_FAILURE(EXPECT_LE(1.1, 0.9),
+                          "(1.1) <= (0.9)");
+}
+
+// Tests EXPECT_LT.
+TEST(ExpectTest, EXPECT_LT) {
+  EXPECT_LT(2, 3);
+  EXPECT_NONFATAL_FAILURE(EXPECT_LT(2, 2),
+                          "Expected: (2) < (2), actual: 2 vs 2");
+  EXPECT_NONFATAL_FAILURE(EXPECT_LT(2, 1),
+                          "(2) < (1)");
+}
+
+// Tests EXPECT_GE.
+TEST(ExpectTest, EXPECT_GE) {
+  EXPECT_GE(2, 1);
+  EXPECT_GE(2, 2);
+  EXPECT_NONFATAL_FAILURE(EXPECT_GE(2, 3),
+                          "Expected: (2) >= (3), actual: 2 vs 3");
+  EXPECT_NONFATAL_FAILURE(EXPECT_GE(0.9, 1.1),
+                          "(0.9) >= (1.1)");
+}
+
+// Tests EXPECT_GT.
+TEST(ExpectTest, EXPECT_GT) {
+  EXPECT_GT(2, 1);
+  EXPECT_NONFATAL_FAILURE(EXPECT_GT(2, 2),
+                          "Expected: (2) > (2), actual: 2 vs 2");
+  EXPECT_NONFATAL_FAILURE(EXPECT_GT(2, 3),
+                          "(2) > (3)");
+}
+
+#if GTEST_HAS_EXCEPTIONS
+
+// Tests EXPECT_THROW.
+TEST(ExpectTest, EXPECT_THROW) {
+  EXPECT_THROW(ThrowAnInteger(), int);
+  EXPECT_NONFATAL_FAILURE(EXPECT_THROW(ThrowAnInteger(), bool),
+                          "Expected: ThrowAnInteger() throws an exception of "
+                          "type bool.\n  Actual: it throws a different type.");
+  EXPECT_NONFATAL_FAILURE(
+      EXPECT_THROW(ThrowNothing(), bool),
+      "Expected: ThrowNothing() throws an exception of type bool.\n"
+      "  Actual: it throws nothing.");
+}
+
+// Tests EXPECT_NO_THROW.
+TEST(ExpectTest, EXPECT_NO_THROW) {
+  EXPECT_NO_THROW(ThrowNothing());
+  EXPECT_NONFATAL_FAILURE(EXPECT_NO_THROW(ThrowAnInteger()),
+                          "Expected: ThrowAnInteger() doesn't throw an "
+                          "exception.\n  Actual: it throws.");
+}
+
+// Tests EXPECT_ANY_THROW.
+TEST(ExpectTest, EXPECT_ANY_THROW) {
+  EXPECT_ANY_THROW(ThrowAnInteger());
+  EXPECT_NONFATAL_FAILURE(
+      EXPECT_ANY_THROW(ThrowNothing()),
+      "Expected: ThrowNothing() throws an exception.\n"
+      "  Actual: it doesn't.");
+}
+
+#endif  // GTEST_HAS_EXCEPTIONS
+
+// Make sure we deal with the precedence of <<.
+TEST(ExpectTest, ExpectPrecedence) {
+  EXPECT_EQ(1 < 2, true);
+  EXPECT_NONFATAL_FAILURE(EXPECT_EQ(true, true && false),
+                          "Value of: true && false");
+}
+
+
+// Tests the StreamableToString() function.
+
+// Tests using StreamableToString() on a scalar.
+TEST(StreamableToStringTest, Scalar) {
+  EXPECT_STREQ("5", StreamableToString(5).c_str());
+}
+
+// Tests using StreamableToString() on a non-char pointer.
+TEST(StreamableToStringTest, Pointer) {
+  int n = 0;
+  int* p = &n;
+  EXPECT_STRNE("(null)", StreamableToString(p).c_str());
+}
+
+// Tests using StreamableToString() on a NULL non-char pointer.
+TEST(StreamableToStringTest, NullPointer) {
+  int* p = NULL;
+  EXPECT_STREQ("(null)", StreamableToString(p).c_str());
+}
+
+// Tests using StreamableToString() on a C string.
+TEST(StreamableToStringTest, CString) {
+  EXPECT_STREQ("Foo", StreamableToString("Foo").c_str());
+}
+
+// Tests using StreamableToString() on a NULL C string.
+TEST(StreamableToStringTest, NullCString) {
+  char* p = NULL;
+  EXPECT_STREQ("(null)", StreamableToString(p).c_str());
+}
+
+// Tests using streamable values as assertion messages.
+
+// Tests using std::string as an assertion message.
+TEST(StreamableTest, string) {
+  static const std::string str(
+      "This failure message is a std::string, and is expected.");
+  EXPECT_FATAL_FAILURE(FAIL() << str,
+                       str.c_str());
+}
+
+// Tests that we can output strings containing embedded NULs.
+// Limited to Linux because we can only do this with std::string's.
+TEST(StreamableTest, stringWithEmbeddedNUL) {
+  static const char char_array_with_nul[] =
+      "Here's a NUL\0 and some more string";
+  static const std::string string_with_nul(char_array_with_nul,
+                                           sizeof(char_array_with_nul)
+                                           - 1);  // drops the trailing NUL
+  EXPECT_FATAL_FAILURE(FAIL() << string_with_nul,
+                       "Here's a NUL\\0 and some more string");
+}
+
+// Tests that we can output a NUL char.
+TEST(StreamableTest, NULChar) {
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    FAIL() << "A NUL" << '\0' << " and some more string";
+  }, "A NUL\\0 and some more string");
+}
+
+// Tests using int as an assertion message.
+TEST(StreamableTest, int) {
+  EXPECT_FATAL_FAILURE(FAIL() << 900913,
+                       "900913");
+}
+
+// Tests using NULL char pointer as an assertion message.
+//
+// In MSVC, streaming a NULL char * causes access violation.  Google Test
+// implemented a workaround (substituting "(null)" for NULL).  This
+// tests whether the workaround works.
+TEST(StreamableTest, NullCharPtr) {
+  EXPECT_FATAL_FAILURE(FAIL() << static_cast<const char*>(NULL),
+                       "(null)");
+}
+
+// Tests that basic IO manipulators (endl, ends, and flush) can be
+// streamed to testing::Message.
+TEST(StreamableTest, BasicIoManip) {
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    FAIL() << "Line 1." << std::endl
+           << "A NUL char " << std::ends << std::flush << " in line 2.";
+  }, "Line 1.\nA NUL char \\0 in line 2.");
+}
+
+// Tests the macros that haven't been covered so far.
+
+void AddFailureHelper(bool* aborted) {
+  *aborted = true;
+  ADD_FAILURE() << "Intentional failure.";
+  *aborted = false;
+}
+
+// Tests ADD_FAILURE.
+TEST(MacroTest, ADD_FAILURE) {
+  bool aborted = true;
+  EXPECT_NONFATAL_FAILURE(AddFailureHelper(&aborted),
+                          "Intentional failure.");
+  EXPECT_FALSE(aborted);
+}
+
+// Tests ADD_FAILURE_AT.
+TEST(MacroTest, ADD_FAILURE_AT) {
+  // Verifies that ADD_FAILURE_AT does generate a nonfatal failure and
+  // the failure message contains the user-streamed part.
+  EXPECT_NONFATAL_FAILURE(ADD_FAILURE_AT("foo.cc", 42) << "Wrong!", "Wrong!");
+
+  // Verifies that the user-streamed part is optional.
+  EXPECT_NONFATAL_FAILURE(ADD_FAILURE_AT("foo.cc", 42), "Failed");
+
+  // Unfortunately, we cannot verify that the failure message contains
+  // the right file path and line number the same way, as
+  // EXPECT_NONFATAL_FAILURE() doesn't get to see the file path and
+  // line number.  Instead, we do that in gtest_output_test_.cc.
+}
+
+// Tests FAIL.
+TEST(MacroTest, FAIL) {
+  EXPECT_FATAL_FAILURE(FAIL(),
+                       "Failed");
+  EXPECT_FATAL_FAILURE(FAIL() << "Intentional failure.",
+                       "Intentional failure.");
+}
+
+// Tests SUCCEED
+TEST(MacroTest, SUCCEED) {
+  SUCCEED();
+  SUCCEED() << "Explicit success.";
+}
+
+// Tests for EXPECT_EQ() and ASSERT_EQ().
+//
+// These tests fail *intentionally*, s.t. the failure messages can be
+// generated and tested.
+//
+// We have different tests for different argument types.
+
+// Tests using bool values in {EXPECT|ASSERT}_EQ.
+TEST(EqAssertionTest, Bool) {
+  EXPECT_EQ(true,  true);
+  EXPECT_FATAL_FAILURE({
+      bool false_value = false;
+      ASSERT_EQ(false_value, true);
+    }, "Value of: true");
+}
+
+// Tests using int values in {EXPECT|ASSERT}_EQ.
+TEST(EqAssertionTest, Int) {
+  ASSERT_EQ(32, 32);
+  EXPECT_NONFATAL_FAILURE(EXPECT_EQ(32, 33),
+                          "33");
+}
+
+// Tests using time_t values in {EXPECT|ASSERT}_EQ.
+TEST(EqAssertionTest, Time_T) {
+  EXPECT_EQ(static_cast<time_t>(0),
+            static_cast<time_t>(0));
+  EXPECT_FATAL_FAILURE(ASSERT_EQ(static_cast<time_t>(0),
+                                 static_cast<time_t>(1234)),
+                       "1234");
+}
+
+// Tests using char values in {EXPECT|ASSERT}_EQ.
+TEST(EqAssertionTest, Char) {
+  ASSERT_EQ('z', 'z');
+  const char ch = 'b';
+  EXPECT_NONFATAL_FAILURE(EXPECT_EQ('\0', ch),
+                          "ch");
+  EXPECT_NONFATAL_FAILURE(EXPECT_EQ('a', ch),
+                          "ch");
+}
+
+// Tests using wchar_t values in {EXPECT|ASSERT}_EQ.
+TEST(EqAssertionTest, WideChar) {
+  EXPECT_EQ(L'b', L'b');
+
+  EXPECT_NONFATAL_FAILURE(EXPECT_EQ(L'\0', L'x'),
+                          "Value of: L'x'\n"
+                          "  Actual: L'x' (120, 0x78)\n"
+                          "Expected: L'\0'\n"
+                          "Which is: L'\0' (0, 0x0)");
+
+  static wchar_t wchar;
+  wchar = L'b';
+  EXPECT_NONFATAL_FAILURE(EXPECT_EQ(L'a', wchar),
+                          "wchar");
+  wchar = 0x8119;
+  EXPECT_FATAL_FAILURE(ASSERT_EQ(static_cast<wchar_t>(0x8120), wchar),
+                       "Value of: wchar");
+}
+
+// Tests using ::std::string values in {EXPECT|ASSERT}_EQ.
+TEST(EqAssertionTest, StdString) {
+  // Compares a const char* to an std::string that has identical
+  // content.
+  ASSERT_EQ("Test", ::std::string("Test"));
+
+  // Compares two identical std::strings.
+  static const ::std::string str1("A * in the middle");
+  static const ::std::string str2(str1);
+  EXPECT_EQ(str1, str2);
+
+  // Compares a const char* to an std::string that has different
+  // content
+  EXPECT_NONFATAL_FAILURE(EXPECT_EQ("Test", ::std::string("test")),
+                          "::std::string(\"test\")");
+
+  // Compares an std::string to a char* that has different content.
+  char* const p1 = const_cast<char*>("foo");
+  EXPECT_NONFATAL_FAILURE(EXPECT_EQ(::std::string("bar"), p1),
+                          "p1");
+
+  // Compares two std::strings that have different contents, one of
+  // which having a NUL character in the middle.  This should fail.
+  static ::std::string str3(str1);
+  str3.at(2) = '\0';
+  EXPECT_FATAL_FAILURE(ASSERT_EQ(str1, str3),
+                       "Value of: str3\n"
+                       "  Actual: \"A \\0 in the middle\"");
+}
+
+#if GTEST_HAS_STD_WSTRING
+
+// Tests using ::std::wstring values in {EXPECT|ASSERT}_EQ.
+TEST(EqAssertionTest, StdWideString) {
+  // Compares two identical std::wstrings.
+  const ::std::wstring wstr1(L"A * in the middle");
+  const ::std::wstring wstr2(wstr1);
+  ASSERT_EQ(wstr1, wstr2);
+
+  // Compares an std::wstring to a const wchar_t* that has identical
+  // content.
+  const wchar_t kTestX8119[] = { 'T', 'e', 's', 't', 0x8119, '\0' };
+  EXPECT_EQ(::std::wstring(kTestX8119), kTestX8119);
+
+  // Compares an std::wstring to a const wchar_t* that has different
+  // content.
+  const wchar_t kTestX8120[] = { 'T', 'e', 's', 't', 0x8120, '\0' };
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_EQ(::std::wstring(kTestX8119), kTestX8120);
+  }, "kTestX8120");
+
+  // Compares two std::wstrings that have different contents, one of
+  // which having a NUL character in the middle.
+  ::std::wstring wstr3(wstr1);
+  wstr3.at(2) = L'\0';
+  EXPECT_NONFATAL_FAILURE(EXPECT_EQ(wstr1, wstr3),
+                          "wstr3");
+
+  // Compares a wchar_t* to an std::wstring that has different
+  // content.
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_EQ(const_cast<wchar_t*>(L"foo"), ::std::wstring(L"bar"));
+  }, "");
+}
+
+#endif  // GTEST_HAS_STD_WSTRING
+
+#if GTEST_HAS_GLOBAL_STRING
+// Tests using ::string values in {EXPECT|ASSERT}_EQ.
+TEST(EqAssertionTest, GlobalString) {
+  // Compares a const char* to a ::string that has identical content.
+  EXPECT_EQ("Test", ::string("Test"));
+
+  // Compares two identical ::strings.
+  const ::string str1("A * in the middle");
+  const ::string str2(str1);
+  ASSERT_EQ(str1, str2);
+
+  // Compares a ::string to a const char* that has different content.
+  EXPECT_NONFATAL_FAILURE(EXPECT_EQ(::string("Test"), "test"),
+                          "test");
+
+  // Compares two ::strings that have different contents, one of which
+  // having a NUL character in the middle.
+  ::string str3(str1);
+  str3.at(2) = '\0';
+  EXPECT_NONFATAL_FAILURE(EXPECT_EQ(str1, str3),
+                          "str3");
+
+  // Compares a ::string to a char* that has different content.
+  EXPECT_FATAL_FAILURE({  // NOLINT
+    ASSERT_EQ(::string("bar"), const_cast<char*>("foo"));
+  }, "");
+}
+
+#endif  // GTEST_HAS_GLOBAL_STRING
+
+#if GTEST_HAS_GLOBAL_WSTRING
+
+// Tests using ::wstring values in {EXPECT|ASSERT}_EQ.
+TEST(EqAssertionTest, GlobalWideString) {
+  // Compares two identical ::wstrings.
+  static const ::wstring wstr1(L"A * in the middle");
+  static const ::wstring wstr2(wstr1);
+  EXPECT_EQ(wstr1, wstr2);
+
+  // Compares a const wchar_t* to a ::wstring that has identical content.
+  const wchar_t kTestX8119[] = { 'T', 'e', 's', 't', 0x8119, '\0' };
+  ASSERT_EQ(kTestX8119, ::wstring(kTestX8119));
+
+  // Compares a const wchar_t* to a ::wstring that has different
+  // content.
+  const wchar_t kTestX8120[] = { 'T', 'e', 's', 't', 0x8120, '\0' };
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_EQ(kTestX8120, ::wstring(kTestX8119));
+  }, "Test\\x8119");
+
+  // Compares a wchar_t* to a ::wstring that has different content.
+  wchar_t* const p1 = const_cast<wchar_t*>(L"foo");
+  EXPECT_NONFATAL_FAILURE(EXPECT_EQ(p1, ::wstring(L"bar")),
+                          "bar");
+
+  // Compares two ::wstrings that have different contents, one of which
+  // having a NUL character in the middle.
+  static ::wstring wstr3;
+  wstr3 = wstr1;
+  wstr3.at(2) = L'\0';
+  EXPECT_FATAL_FAILURE(ASSERT_EQ(wstr1, wstr3),
+                       "wstr3");
+}
+
+#endif  // GTEST_HAS_GLOBAL_WSTRING
+
+// Tests using char pointers in {EXPECT|ASSERT}_EQ.
+TEST(EqAssertionTest, CharPointer) {
+  char* const p0 = NULL;
+  // Only way to get the Nokia compiler to compile the cast
+  // is to have a separate void* variable first. Putting
+  // the two casts on the same line doesn't work, neither does
+  // a direct C-style to char*.
+  void* pv1 = (void*)0x1234;  // NOLINT
+  void* pv2 = (void*)0xABC0;  // NOLINT
+  char* const p1 = reinterpret_cast<char*>(pv1);
+  char* const p2 = reinterpret_cast<char*>(pv2);
+  ASSERT_EQ(p1, p1);
+
+  EXPECT_NONFATAL_FAILURE(EXPECT_EQ(p0, p2),
+                          "Value of: p2");
+  EXPECT_NONFATAL_FAILURE(EXPECT_EQ(p1, p2),
+                          "p2");
+  EXPECT_FATAL_FAILURE(ASSERT_EQ(reinterpret_cast<char*>(0x1234),
+                                 reinterpret_cast<char*>(0xABC0)),
+                       "ABC0");
+}
+
+// Tests using wchar_t pointers in {EXPECT|ASSERT}_EQ.
+TEST(EqAssertionTest, WideCharPointer) {
+  wchar_t* const p0 = NULL;
+  // Only way to get the Nokia compiler to compile the cast
+  // is to have a separate void* variable first. Putting
+  // the two casts on the same line doesn't work, neither does
+  // a direct C-style to char*.
+  void* pv1 = (void*)0x1234;  // NOLINT
+  void* pv2 = (void*)0xABC0;  // NOLINT
+  wchar_t* const p1 = reinterpret_cast<wchar_t*>(pv1);
+  wchar_t* const p2 = reinterpret_cast<wchar_t*>(pv2);
+  EXPECT_EQ(p0, p0);
+
+  EXPECT_NONFATAL_FAILURE(EXPECT_EQ(p0, p2),
+                          "Value of: p2");
+  EXPECT_NONFATAL_FAILURE(EXPECT_EQ(p1, p2),
+                          "p2");
+  void* pv3 = (void*)0x1234;  // NOLINT
+  void* pv4 = (void*)0xABC0;  // NOLINT
+  const wchar_t* p3 = reinterpret_cast<const wchar_t*>(pv3);
+  const wchar_t* p4 = reinterpret_cast<const wchar_t*>(pv4);
+  EXPECT_NONFATAL_FAILURE(EXPECT_EQ(p3, p4),
+                          "p4");
+}
+
+// Tests using other types of pointers in {EXPECT|ASSERT}_EQ.
+TEST(EqAssertionTest, OtherPointer) {
+  ASSERT_EQ(static_cast<const int*>(NULL),
+            static_cast<const int*>(NULL));
+  EXPECT_FATAL_FAILURE(ASSERT_EQ(static_cast<const int*>(NULL),
+                                 reinterpret_cast<const int*>(0x1234)),
+                       "0x1234");
+}
+
+// A class that supports binary comparison operators but not streaming.
+class UnprintableChar {
+ public:
+  explicit UnprintableChar(char ch) : char_(ch) {}
+
+  bool operator==(const UnprintableChar& rhs) const {
+    return char_ == rhs.char_;
+  }
+  bool operator!=(const UnprintableChar& rhs) const {
+    return char_ != rhs.char_;
+  }
+  bool operator<(const UnprintableChar& rhs) const {
+    return char_ < rhs.char_;
+  }
+  bool operator<=(const UnprintableChar& rhs) const {
+    return char_ <= rhs.char_;
+  }
+  bool operator>(const UnprintableChar& rhs) const {
+    return char_ > rhs.char_;
+  }
+  bool operator>=(const UnprintableChar& rhs) const {
+    return char_ >= rhs.char_;
+  }
+
+ private:
+  char char_;
+};
+
+// Tests that ASSERT_EQ() and friends don't require the arguments to
+// be printable.
+TEST(ComparisonAssertionTest, AcceptsUnprintableArgs) {
+  const UnprintableChar x('x'), y('y');
+  ASSERT_EQ(x, x);
+  EXPECT_NE(x, y);
+  ASSERT_LT(x, y);
+  EXPECT_LE(x, y);
+  ASSERT_GT(y, x);
+  EXPECT_GE(x, x);
+
+  EXPECT_NONFATAL_FAILURE(EXPECT_EQ(x, y), "1-byte object <78>");
+  EXPECT_NONFATAL_FAILURE(EXPECT_EQ(x, y), "1-byte object <79>");
+  EXPECT_NONFATAL_FAILURE(EXPECT_LT(y, y), "1-byte object <79>");
+  EXPECT_NONFATAL_FAILURE(EXPECT_GT(x, y), "1-byte object <78>");
+  EXPECT_NONFATAL_FAILURE(EXPECT_GT(x, y), "1-byte object <79>");
+
+  // Code tested by EXPECT_FATAL_FAILURE cannot reference local
+  // variables, so we have to write UnprintableChar('x') instead of x.
+#ifndef __BORLANDC__
+  // ICE's in C++Builder.
+  EXPECT_FATAL_FAILURE(ASSERT_NE(UnprintableChar('x'), UnprintableChar('x')),
+                       "1-byte object <78>");
+  EXPECT_FATAL_FAILURE(ASSERT_LE(UnprintableChar('y'), UnprintableChar('x')),
+                       "1-byte object <78>");
+#endif
+  EXPECT_FATAL_FAILURE(ASSERT_LE(UnprintableChar('y'), UnprintableChar('x')),
+                       "1-byte object <79>");
+  EXPECT_FATAL_FAILURE(ASSERT_GE(UnprintableChar('x'), UnprintableChar('y')),
+                       "1-byte object <78>");
+  EXPECT_FATAL_FAILURE(ASSERT_GE(UnprintableChar('x'), UnprintableChar('y')),
+                       "1-byte object <79>");
+}
+
+// Tests the FRIEND_TEST macro.
+
+// This class has a private member we want to test.  We will test it
+// both in a TEST and in a TEST_F.
+class Foo {
+ public:
+  Foo() {}
+
+ private:
+  int Bar() const { return 1; }
+
+  // Declares the friend tests that can access the private member
+  // Bar().
+  FRIEND_TEST(FRIEND_TEST_Test, TEST);
+  FRIEND_TEST(FRIEND_TEST_Test2, TEST_F);
+};
+
+// Tests that the FRIEND_TEST declaration allows a TEST to access a
+// class's private members.  This should compile.
+TEST(FRIEND_TEST_Test, TEST) {
+  ASSERT_EQ(1, Foo().Bar());
+}
+
+// The fixture needed to test using FRIEND_TEST with TEST_F.
+class FRIEND_TEST_Test2 : public Test {
+ protected:
+  Foo foo;
+};
+
+// Tests that the FRIEND_TEST declaration allows a TEST_F to access a
+// class's private members.  This should compile.
+TEST_F(FRIEND_TEST_Test2, TEST_F) {
+  ASSERT_EQ(1, foo.Bar());
+}
+
+// Tests the life cycle of Test objects.
+
+// The test fixture for testing the life cycle of Test objects.
+//
+// This class counts the number of live test objects that uses this
+// fixture.
+class TestLifeCycleTest : public Test {
+ protected:
+  // Constructor.  Increments the number of test objects that uses
+  // this fixture.
+  TestLifeCycleTest() { count_++; }
+
+  // Destructor.  Decrements the number of test objects that uses this
+  // fixture.
+  ~TestLifeCycleTest() { count_--; }
+
+  // Returns the number of live test objects that uses this fixture.
+  int count() const { return count_; }
+
+ private:
+  static int count_;
+};
+
+int TestLifeCycleTest::count_ = 0;
+
+// Tests the life cycle of test objects.
+TEST_F(TestLifeCycleTest, Test1) {
+  // There should be only one test object in this test case that's
+  // currently alive.
+  ASSERT_EQ(1, count());
+}
+
+// Tests the life cycle of test objects.
+TEST_F(TestLifeCycleTest, Test2) {
+  // After Test1 is done and Test2 is started, there should still be
+  // only one live test object, as the object for Test1 should've been
+  // deleted.
+  ASSERT_EQ(1, count());
+}
+
+}  // namespace
+
+// Tests that the copy constructor works when it is NOT optimized away by
+// the compiler.
+TEST(AssertionResultTest, CopyConstructorWorksWhenNotOptimied) {
+  // Checks that the copy constructor doesn't try to dereference NULL pointers
+  // in the source object.
+  AssertionResult r1 = AssertionSuccess();
+  AssertionResult r2 = r1;
+  // The following line is added to prevent the compiler from optimizing
+  // away the constructor call.
+  r1 << "abc";
+
+  AssertionResult r3 = r1;
+  EXPECT_EQ(static_cast<bool>(r3), static_cast<bool>(r1));
+  EXPECT_STREQ("abc", r1.message());
+}
+
+// Tests that AssertionSuccess and AssertionFailure construct
+// AssertionResult objects as expected.
+TEST(AssertionResultTest, ConstructionWorks) {
+  AssertionResult r1 = AssertionSuccess();
+  EXPECT_TRUE(r1);
+  EXPECT_STREQ("", r1.message());
+
+  AssertionResult r2 = AssertionSuccess() << "abc";
+  EXPECT_TRUE(r2);
+  EXPECT_STREQ("abc", r2.message());
+
+  AssertionResult r3 = AssertionFailure();
+  EXPECT_FALSE(r3);
+  EXPECT_STREQ("", r3.message());
+
+  AssertionResult r4 = AssertionFailure() << "def";
+  EXPECT_FALSE(r4);
+  EXPECT_STREQ("def", r4.message());
+
+  AssertionResult r5 = AssertionFailure(Message() << "ghi");
+  EXPECT_FALSE(r5);
+  EXPECT_STREQ("ghi", r5.message());
+}
+
+// Tests that the negation flips the predicate result but keeps the message.
+TEST(AssertionResultTest, NegationWorks) {
+  AssertionResult r1 = AssertionSuccess() << "abc";
+  EXPECT_FALSE(!r1);
+  EXPECT_STREQ("abc", (!r1).message());
+
+  AssertionResult r2 = AssertionFailure() << "def";
+  EXPECT_TRUE(!r2);
+  EXPECT_STREQ("def", (!r2).message());
+}
+
+TEST(AssertionResultTest, StreamingWorks) {
+  AssertionResult r = AssertionSuccess();
+  r << "abc" << 'd' << 0 << true;
+  EXPECT_STREQ("abcd0true", r.message());
+}
+
+TEST(AssertionResultTest, CanStreamOstreamManipulators) {
+  AssertionResult r = AssertionSuccess();
+  r << "Data" << std::endl << std::flush << std::ends << "Will be visible";
+  EXPECT_STREQ("Data\n\\0Will be visible", r.message());
+}
+
+// Tests streaming a user type whose definition and operator << are
+// both in the global namespace.
+class Base {
+ public:
+  explicit Base(int an_x) : x_(an_x) {}
+  int x() const { return x_; }
+ private:
+  int x_;
+};
+std::ostream& operator<<(std::ostream& os,
+                         const Base& val) {
+  return os << val.x();
+}
+std::ostream& operator<<(std::ostream& os,
+                         const Base* pointer) {
+  return os << "(" << pointer->x() << ")";
+}
+
+TEST(MessageTest, CanStreamUserTypeInGlobalNameSpace) {
+  Message msg;
+  Base a(1);
+
+  msg << a << &a;  // Uses ::operator<<.
+  EXPECT_STREQ("1(1)", msg.GetString().c_str());
+}
+
+// Tests streaming a user type whose definition and operator<< are
+// both in an unnamed namespace.
+namespace {
+class MyTypeInUnnamedNameSpace : public Base {
+ public:
+  explicit MyTypeInUnnamedNameSpace(int an_x): Base(an_x) {}
+};
+std::ostream& operator<<(std::ostream& os,
+                         const MyTypeInUnnamedNameSpace& val) {
+  return os << val.x();
+}
+std::ostream& operator<<(std::ostream& os,
+                         const MyTypeInUnnamedNameSpace* pointer) {
+  return os << "(" << pointer->x() << ")";
+}
+}  // namespace
+
+TEST(MessageTest, CanStreamUserTypeInUnnamedNameSpace) {
+  Message msg;
+  MyTypeInUnnamedNameSpace a(1);
+
+  msg << a << &a;  // Uses <unnamed_namespace>::operator<<.
+  EXPECT_STREQ("1(1)", msg.GetString().c_str());
+}
+
+// Tests streaming a user type whose definition and operator<< are
+// both in a user namespace.
+namespace namespace1 {
+class MyTypeInNameSpace1 : public Base {
+ public:
+  explicit MyTypeInNameSpace1(int an_x): Base(an_x) {}
+};
+std::ostream& operator<<(std::ostream& os,
+                         const MyTypeInNameSpace1& val) {
+  return os << val.x();
+}
+std::ostream& operator<<(std::ostream& os,
+                         const MyTypeInNameSpace1* pointer) {
+  return os << "(" << pointer->x() << ")";
+}
+}  // namespace namespace1
+
+TEST(MessageTest, CanStreamUserTypeInUserNameSpace) {
+  Message msg;
+  namespace1::MyTypeInNameSpace1 a(1);
+
+  msg << a << &a;  // Uses namespace1::operator<<.
+  EXPECT_STREQ("1(1)", msg.GetString().c_str());
+}
+
+// Tests streaming a user type whose definition is in a user namespace
+// but whose operator<< is in the global namespace.
+namespace namespace2 {
+class MyTypeInNameSpace2 : public ::Base {
+ public:
+  explicit MyTypeInNameSpace2(int an_x): Base(an_x) {}
+};
+}  // namespace namespace2
+std::ostream& operator<<(std::ostream& os,
+                         const namespace2::MyTypeInNameSpace2& val) {
+  return os << val.x();
+}
+std::ostream& operator<<(std::ostream& os,
+                         const namespace2::MyTypeInNameSpace2* pointer) {
+  return os << "(" << pointer->x() << ")";
+}
+
+TEST(MessageTest, CanStreamUserTypeInUserNameSpaceWithStreamOperatorInGlobal) {
+  Message msg;
+  namespace2::MyTypeInNameSpace2 a(1);
+
+  msg << a << &a;  // Uses ::operator<<.
+  EXPECT_STREQ("1(1)", msg.GetString().c_str());
+}
+
+// Tests streaming NULL pointers to testing::Message.
+TEST(MessageTest, NullPointers) {
+  Message msg;
+  char* const p1 = NULL;
+  unsigned char* const p2 = NULL;
+  int* p3 = NULL;
+  double* p4 = NULL;
+  bool* p5 = NULL;
+  Message* p6 = NULL;
+
+  msg << p1 << p2 << p3 << p4 << p5 << p6;
+  ASSERT_STREQ("(null)(null)(null)(null)(null)(null)",
+               msg.GetString().c_str());
+}
+
+// Tests streaming wide strings to testing::Message.
+TEST(MessageTest, WideStrings) {
+  // Streams a NULL of type const wchar_t*.
+  const wchar_t* const_wstr = NULL;
+  EXPECT_STREQ("(null)",
+               (Message() << const_wstr).GetString().c_str());
+
+  // Streams a NULL of type wchar_t*.
+  wchar_t* wstr = NULL;
+  EXPECT_STREQ("(null)",
+               (Message() << wstr).GetString().c_str());
+
+  // Streams a non-NULL of type const wchar_t*.
+  const_wstr = L"abc\x8119";
+  EXPECT_STREQ("abc\xe8\x84\x99",
+               (Message() << const_wstr).GetString().c_str());
+
+  // Streams a non-NULL of type wchar_t*.
+  wstr = const_cast<wchar_t*>(const_wstr);
+  EXPECT_STREQ("abc\xe8\x84\x99",
+               (Message() << wstr).GetString().c_str());
+}
+
+
+// This line tests that we can define tests in the testing namespace.
+namespace testing {
+
+// Tests the TestInfo class.
+
+class TestInfoTest : public Test {
+ protected:
+  static const TestInfo* GetTestInfo(const char* test_name) {
+    const TestCase* const test_case = GetUnitTestImpl()->
+        GetTestCase("TestInfoTest", "", NULL, NULL);
+
+    for (int i = 0; i < test_case->total_test_count(); ++i) {
+      const TestInfo* const test_info = test_case->GetTestInfo(i);
+      if (strcmp(test_name, test_info->name()) == 0)
+        return test_info;
+    }
+    return NULL;
+  }
+
+  static const TestResult* GetTestResult(
+      const TestInfo* test_info) {
+    return test_info->result();
+  }
+};
+
+// Tests TestInfo::test_case_name() and TestInfo::name().
+TEST_F(TestInfoTest, Names) {
+  const TestInfo* const test_info = GetTestInfo("Names");
+
+  ASSERT_STREQ("TestInfoTest", test_info->test_case_name());
+  ASSERT_STREQ("Names", test_info->name());
+}
+
+// Tests TestInfo::result().
+TEST_F(TestInfoTest, result) {
+  const TestInfo* const test_info = GetTestInfo("result");
+
+  // Initially, there is no TestPartResult for this test.
+  ASSERT_EQ(0, GetTestResult(test_info)->total_part_count());
+
+  // After the previous assertion, there is still none.
+  ASSERT_EQ(0, GetTestResult(test_info)->total_part_count());
+}
+
+// Tests setting up and tearing down a test case.
+
+class SetUpTestCaseTest : public Test {
+ protected:
+  // This will be called once before the first test in this test case
+  // is run.
+  static void SetUpTestCase() {
+    printf("Setting up the test case . . .\n");
+
+    // Initializes some shared resource.  In this simple example, we
+    // just create a C string.  More complex stuff can be done if
+    // desired.
+    shared_resource_ = "123";
+
+    // Increments the number of test cases that have been set up.
+    counter_++;
+
+    // SetUpTestCase() should be called only once.
+    EXPECT_EQ(1, counter_);
+  }
+
+  // This will be called once after the last test in this test case is
+  // run.
+  static void TearDownTestCase() {
+    printf("Tearing down the test case . . .\n");
+
+    // Decrements the number of test cases that have been set up.
+    counter_--;
+
+    // TearDownTestCase() should be called only once.
+    EXPECT_EQ(0, counter_);
+
+    // Cleans up the shared resource.
+    shared_resource_ = NULL;
+  }
+
+  // This will be called before each test in this test case.
+  virtual void SetUp() {
+    // SetUpTestCase() should be called only once, so counter_ should
+    // always be 1.
+    EXPECT_EQ(1, counter_);
+  }
+
+  // Number of test cases that have been set up.
+  static int counter_;
+
+  // Some resource to be shared by all tests in this test case.
+  static const char* shared_resource_;
+};
+
+int SetUpTestCaseTest::counter_ = 0;
+const char* SetUpTestCaseTest::shared_resource_ = NULL;
+
+// A test that uses the shared resource.
+TEST_F(SetUpTestCaseTest, Test1) {
+  EXPECT_STRNE(NULL, shared_resource_);
+}
+
+// Another test that uses the shared resource.
+TEST_F(SetUpTestCaseTest, Test2) {
+  EXPECT_STREQ("123", shared_resource_);
+}
+
+// The InitGoogleTestTest test case tests testing::InitGoogleTest().
+
+// The Flags struct stores a copy of all Google Test flags.
+struct Flags {
+  // Constructs a Flags struct where each flag has its default value.
+  Flags() : also_run_disabled_tests(false),
+            break_on_failure(false),
+            catch_exceptions(false),
+            death_test_use_fork(false),
+            filter(""),
+            list_tests(false),
+            output(""),
+            print_time(true),
+            random_seed(0),
+            repeat(1),
+            shuffle(false),
+            stack_trace_depth(kMaxStackTraceDepth),
+            stream_result_to(""),
+            throw_on_failure(false) {}
+
+  // Factory methods.
+
+  // Creates a Flags struct where the gtest_also_run_disabled_tests flag has
+  // the given value.
+  static Flags AlsoRunDisabledTests(bool also_run_disabled_tests) {
+    Flags flags;
+    flags.also_run_disabled_tests = also_run_disabled_tests;
+    return flags;
+  }
+
+  // Creates a Flags struct where the gtest_break_on_failure flag has
+  // the given value.
+  static Flags BreakOnFailure(bool break_on_failure) {
+    Flags flags;
+    flags.break_on_failure = break_on_failure;
+    return flags;
+  }
+
+  // Creates a Flags struct where the gtest_catch_exceptions flag has
+  // the given value.
+  static Flags CatchExceptions(bool catch_exceptions) {
+    Flags flags;
+    flags.catch_exceptions = catch_exceptions;
+    return flags;
+  }
+
+  // Creates a Flags struct where the gtest_death_test_use_fork flag has
+  // the given value.
+  static Flags DeathTestUseFork(bool death_test_use_fork) {
+    Flags flags;
+    flags.death_test_use_fork = death_test_use_fork;
+    return flags;
+  }
+
+  // Creates a Flags struct where the gtest_filter flag has the given
+  // value.
+  static Flags Filter(const char* filter) {
+    Flags flags;
+    flags.filter = filter;
+    return flags;
+  }
+
+  // Creates a Flags struct where the gtest_list_tests flag has the
+  // given value.
+  static Flags ListTests(bool list_tests) {
+    Flags flags;
+    flags.list_tests = list_tests;
+    return flags;
+  }
+
+  // Creates a Flags struct where the gtest_output flag has the given
+  // value.
+  static Flags Output(const char* output) {
+    Flags flags;
+    flags.output = output;
+    return flags;
+  }
+
+  // Creates a Flags struct where the gtest_print_time flag has the given
+  // value.
+  static Flags PrintTime(bool print_time) {
+    Flags flags;
+    flags.print_time = print_time;
+    return flags;
+  }
+
+  // Creates a Flags struct where the gtest_random_seed flag has
+  // the given value.
+  static Flags RandomSeed(Int32 random_seed) {
+    Flags flags;
+    flags.random_seed = random_seed;
+    return flags;
+  }
+
+  // Creates a Flags struct where the gtest_repeat flag has the given
+  // value.
+  static Flags Repeat(Int32 repeat) {
+    Flags flags;
+    flags.repeat = repeat;
+    return flags;
+  }
+
+  // Creates a Flags struct where the gtest_shuffle flag has
+  // the given value.
+  static Flags Shuffle(bool shuffle) {
+    Flags flags;
+    flags.shuffle = shuffle;
+    return flags;
+  }
+
+  // Creates a Flags struct where the GTEST_FLAG(stack_trace_depth) flag has
+  // the given value.
+  static Flags StackTraceDepth(Int32 stack_trace_depth) {
+    Flags flags;
+    flags.stack_trace_depth = stack_trace_depth;
+    return flags;
+  }
+
+  // Creates a Flags struct where the GTEST_FLAG(stream_result_to) flag has
+  // the given value.
+  static Flags StreamResultTo(const char* stream_result_to) {
+    Flags flags;
+    flags.stream_result_to = stream_result_to;
+    return flags;
+  }
+
+  // Creates a Flags struct where the gtest_throw_on_failure flag has
+  // the given value.
+  static Flags ThrowOnFailure(bool throw_on_failure) {
+    Flags flags;
+    flags.throw_on_failure = throw_on_failure;
+    return flags;
+  }
+
+  // These fields store the flag values.
+  bool also_run_disabled_tests;
+  bool break_on_failure;
+  bool catch_exceptions;
+  bool death_test_use_fork;
+  const char* filter;
+  bool list_tests;
+  const char* output;
+  bool print_time;
+  Int32 random_seed;
+  Int32 repeat;
+  bool shuffle;
+  Int32 stack_trace_depth;
+  const char* stream_result_to;
+  bool throw_on_failure;
+};
+
+// Fixture for testing InitGoogleTest().
+class InitGoogleTestTest : public Test {
+ protected:
+  // Clears the flags before each test.
+  virtual void SetUp() {
+    GTEST_FLAG(also_run_disabled_tests) = false;
+    GTEST_FLAG(break_on_failure) = false;
+    GTEST_FLAG(catch_exceptions) = false;
+    GTEST_FLAG(death_test_use_fork) = false;
+    GTEST_FLAG(filter) = "";
+    GTEST_FLAG(list_tests) = false;
+    GTEST_FLAG(output) = "";
+    GTEST_FLAG(print_time) = true;
+    GTEST_FLAG(random_seed) = 0;
+    GTEST_FLAG(repeat) = 1;
+    GTEST_FLAG(shuffle) = false;
+    GTEST_FLAG(stack_trace_depth) = kMaxStackTraceDepth;
+    GTEST_FLAG(stream_result_to) = "";
+    GTEST_FLAG(throw_on_failure) = false;
+  }
+
+  // Asserts that two narrow or wide string arrays are equal.
+  template <typename CharType>
+  static void AssertStringArrayEq(size_t size1, CharType** array1,
+                                  size_t size2, CharType** array2) {
+    ASSERT_EQ(size1, size2) << " Array sizes different.";
+
+    for (size_t i = 0; i != size1; i++) {
+      ASSERT_STREQ(array1[i], array2[i]) << " where i == " << i;
+    }
+  }
+
+  // Verifies that the flag values match the expected values.
+  static void CheckFlags(const Flags& expected) {
+    EXPECT_EQ(expected.also_run_disabled_tests,
+              GTEST_FLAG(also_run_disabled_tests));
+    EXPECT_EQ(expected.break_on_failure, GTEST_FLAG(break_on_failure));
+    EXPECT_EQ(expected.catch_exceptions, GTEST_FLAG(catch_exceptions));
+    EXPECT_EQ(expected.death_test_use_fork, GTEST_FLAG(death_test_use_fork));
+    EXPECT_STREQ(expected.filter, GTEST_FLAG(filter).c_str());
+    EXPECT_EQ(expected.list_tests, GTEST_FLAG(list_tests));
+    EXPECT_STREQ(expected.output, GTEST_FLAG(output).c_str());
+    EXPECT_EQ(expected.print_time, GTEST_FLAG(print_time));
+    EXPECT_EQ(expected.random_seed, GTEST_FLAG(random_seed));
+    EXPECT_EQ(expected.repeat, GTEST_FLAG(repeat));
+    EXPECT_EQ(expected.shuffle, GTEST_FLAG(shuffle));
+    EXPECT_EQ(expected.stack_trace_depth, GTEST_FLAG(stack_trace_depth));
+    EXPECT_STREQ(expected.stream_result_to,
+                 GTEST_FLAG(stream_result_to).c_str());
+    EXPECT_EQ(expected.throw_on_failure, GTEST_FLAG(throw_on_failure));
+  }
+
+  // Parses a command line (specified by argc1 and argv1), then
+  // verifies that the flag values are expected and that the
+  // recognized flags are removed from the command line.
+  template <typename CharType>
+  static void TestParsingFlags(int argc1, const CharType** argv1,
+                               int argc2, const CharType** argv2,
+                               const Flags& expected, bool should_print_help) {
+    const bool saved_help_flag = ::testing::internal::g_help_flag;
+    ::testing::internal::g_help_flag = false;
+
+#if GTEST_HAS_STREAM_REDIRECTION
+    CaptureStdout();
+#endif
+
+    // Parses the command line.
+    internal::ParseGoogleTestFlagsOnly(&argc1, const_cast<CharType**>(argv1));
+
+#if GTEST_HAS_STREAM_REDIRECTION
+    const String captured_stdout = GetCapturedStdout();
+#endif
+
+    // Verifies the flag values.
+    CheckFlags(expected);
+
+    // Verifies that the recognized flags are removed from the command
+    // line.
+    AssertStringArrayEq(argc1 + 1, argv1, argc2 + 1, argv2);
+
+    // ParseGoogleTestFlagsOnly should neither set g_help_flag nor print the
+    // help message for the flags it recognizes.
+    EXPECT_EQ(should_print_help, ::testing::internal::g_help_flag);
+
+#if GTEST_HAS_STREAM_REDIRECTION
+    const char* const expected_help_fragment =
+        "This program contains tests written using";
+    if (should_print_help) {
+      EXPECT_PRED_FORMAT2(IsSubstring, expected_help_fragment, captured_stdout);
+    } else {
+      EXPECT_PRED_FORMAT2(IsNotSubstring,
+                          expected_help_fragment, captured_stdout);
+    }
+#endif  // GTEST_HAS_STREAM_REDIRECTION
+
+    ::testing::internal::g_help_flag = saved_help_flag;
+  }
+
+  // This macro wraps TestParsingFlags s.t. the user doesn't need
+  // to specify the array sizes.
+
+#define GTEST_TEST_PARSING_FLAGS_(argv1, argv2, expected, should_print_help) \
+  TestParsingFlags(sizeof(argv1)/sizeof(*argv1) - 1, argv1, \
+                   sizeof(argv2)/sizeof(*argv2) - 1, argv2, \
+                   expected, should_print_help)
+};
+
+// Tests parsing an empty command line.
+TEST_F(InitGoogleTestTest, Empty) {
+  const char* argv[] = {
+    NULL
+  };
+
+  const char* argv2[] = {
+    NULL
+  };
+
+  GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags(), false);
+}
+
+// Tests parsing a command line that has no flag.
+TEST_F(InitGoogleTestTest, NoFlag) {
+  const char* argv[] = {
+    "foo.exe",
+    NULL
+  };
+
+  const char* argv2[] = {
+    "foo.exe",
+    NULL
+  };
+
+  GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags(), false);
+}
+
+// Tests parsing a bad --gtest_filter flag.
+TEST_F(InitGoogleTestTest, FilterBad) {
+  const char* argv[] = {
+    "foo.exe",
+    "--gtest_filter",
+    NULL
+  };
+
+  const char* argv2[] = {
+    "foo.exe",
+    "--gtest_filter",
+    NULL
+  };
+
+  GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::Filter(""), true);
+}
+
+// Tests parsing an empty --gtest_filter flag.
+TEST_F(InitGoogleTestTest, FilterEmpty) {
+  const char* argv[] = {
+    "foo.exe",
+    "--gtest_filter=",
+    NULL
+  };
+
+  const char* argv2[] = {
+    "foo.exe",
+    NULL
+  };
+
+  GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::Filter(""), false);
+}
+
+// Tests parsing a non-empty --gtest_filter flag.
+TEST_F(InitGoogleTestTest, FilterNonEmpty) {
+  const char* argv[] = {
+    "foo.exe",
+    "--gtest_filter=abc",
+    NULL
+  };
+
+  const char* argv2[] = {
+    "foo.exe",
+    NULL
+  };
+
+  GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::Filter("abc"), false);
+}
+
+// Tests parsing --gtest_break_on_failure.
+TEST_F(InitGoogleTestTest, BreakOnFailureWithoutValue) {
+  const char* argv[] = {
+    "foo.exe",
+    "--gtest_break_on_failure",
+    NULL
+};
+
+  const char* argv2[] = {
+    "foo.exe",
+    NULL
+  };
+
+  GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::BreakOnFailure(true), false);
+}
+
+// Tests parsing --gtest_break_on_failure=0.
+TEST_F(InitGoogleTestTest, BreakOnFailureFalse_0) {
+  const char* argv[] = {
+    "foo.exe",
+    "--gtest_break_on_failure=0",
+    NULL
+  };
+
+  const char* argv2[] = {
+    "foo.exe",
+    NULL
+  };
+
+  GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::BreakOnFailure(false), false);
+}
+
+// Tests parsing --gtest_break_on_failure=f.
+TEST_F(InitGoogleTestTest, BreakOnFailureFalse_f) {
+  const char* argv[] = {
+    "foo.exe",
+    "--gtest_break_on_failure=f",
+    NULL
+  };
+
+  const char* argv2[] = {
+    "foo.exe",
+    NULL
+  };
+
+  GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::BreakOnFailure(false), false);
+}
+
+// Tests parsing --gtest_break_on_failure=F.
+TEST_F(InitGoogleTestTest, BreakOnFailureFalse_F) {
+  const char* argv[] = {
+    "foo.exe",
+    "--gtest_break_on_failure=F",
+    NULL
+  };
+
+  const char* argv2[] = {
+    "foo.exe",
+    NULL
+  };
+
+  GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::BreakOnFailure(false), false);
+}
+
+// Tests parsing a --gtest_break_on_failure flag that has a "true"
+// definition.
+TEST_F(InitGoogleTestTest, BreakOnFailureTrue) {
+  const char* argv[] = {
+    "foo.exe",
+    "--gtest_break_on_failure=1",
+    NULL
+  };
+
+  const char* argv2[] = {
+    "foo.exe",
+    NULL
+  };
+
+  GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::BreakOnFailure(true), false);
+}
+
+// Tests parsing --gtest_catch_exceptions.
+TEST_F(InitGoogleTestTest, CatchExceptions) {
+  const char* argv[] = {
+    "foo.exe",
+    "--gtest_catch_exceptions",
+    NULL
+  };
+
+  const char* argv2[] = {
+    "foo.exe",
+    NULL
+  };
+
+  GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::CatchExceptions(true), false);
+}
+
+// Tests parsing --gtest_death_test_use_fork.
+TEST_F(InitGoogleTestTest, DeathTestUseFork) {
+  const char* argv[] = {
+    "foo.exe",
+    "--gtest_death_test_use_fork",
+    NULL
+  };
+
+  const char* argv2[] = {
+    "foo.exe",
+    NULL
+  };
+
+  GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::DeathTestUseFork(true), false);
+}
+
+// Tests having the same flag twice with different values.  The
+// expected behavior is that the one coming last takes precedence.
+TEST_F(InitGoogleTestTest, DuplicatedFlags) {
+  const char* argv[] = {
+    "foo.exe",
+    "--gtest_filter=a",
+    "--gtest_filter=b",
+    NULL
+  };
+
+  const char* argv2[] = {
+    "foo.exe",
+    NULL
+  };
+
+  GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::Filter("b"), false);
+}
+
+// Tests having an unrecognized flag on the command line.
+TEST_F(InitGoogleTestTest, UnrecognizedFlag) {
+  const char* argv[] = {
+    "foo.exe",
+    "--gtest_break_on_failure",
+    "bar",  // Unrecognized by Google Test.
+    "--gtest_filter=b",
+    NULL
+  };
+
+  const char* argv2[] = {
+    "foo.exe",
+    "bar",
+    NULL
+  };
+
+  Flags flags;
+  flags.break_on_failure = true;
+  flags.filter = "b";
+  GTEST_TEST_PARSING_FLAGS_(argv, argv2, flags, false);
+}
+
+// Tests having a --gtest_list_tests flag
+TEST_F(InitGoogleTestTest, ListTestsFlag) {
+    const char* argv[] = {
+      "foo.exe",
+      "--gtest_list_tests",
+      NULL
+    };
+
+    const char* argv2[] = {
+      "foo.exe",
+      NULL
+    };
+
+    GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::ListTests(true), false);
+}
+
+// Tests having a --gtest_list_tests flag with a "true" value
+TEST_F(InitGoogleTestTest, ListTestsTrue) {
+    const char* argv[] = {
+      "foo.exe",
+      "--gtest_list_tests=1",
+      NULL
+    };
+
+    const char* argv2[] = {
+      "foo.exe",
+      NULL
+    };
+
+    GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::ListTests(true), false);
+}
+
+// Tests having a --gtest_list_tests flag with a "false" value
+TEST_F(InitGoogleTestTest, ListTestsFalse) {
+    const char* argv[] = {
+      "foo.exe",
+      "--gtest_list_tests=0",
+      NULL
+    };
+
+    const char* argv2[] = {
+      "foo.exe",
+      NULL
+    };
+
+    GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::ListTests(false), false);
+}
+
+// Tests parsing --gtest_list_tests=f.
+TEST_F(InitGoogleTestTest, ListTestsFalse_f) {
+  const char* argv[] = {
+    "foo.exe",
+    "--gtest_list_tests=f",
+    NULL
+  };
+
+  const char* argv2[] = {
+    "foo.exe",
+    NULL
+  };
+
+  GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::ListTests(false), false);
+}
+
+// Tests parsing --gtest_list_tests=F.
+TEST_F(InitGoogleTestTest, ListTestsFalse_F) {
+  const char* argv[] = {
+    "foo.exe",
+    "--gtest_list_tests=F",
+    NULL
+  };
+
+  const char* argv2[] = {
+    "foo.exe",
+    NULL
+  };
+
+  GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::ListTests(false), false);
+}
+
+// Tests parsing --gtest_output (invalid).
+TEST_F(InitGoogleTestTest, OutputEmpty) {
+  const char* argv[] = {
+    "foo.exe",
+    "--gtest_output",
+    NULL
+  };
+
+  const char* argv2[] = {
+    "foo.exe",
+    "--gtest_output",
+    NULL
+  };
+
+  GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags(), true);
+}
+
+// Tests parsing --gtest_output=xml
+TEST_F(InitGoogleTestTest, OutputXml) {
+  const char* argv[] = {
+    "foo.exe",
+    "--gtest_output=xml",
+    NULL
+  };
+
+  const char* argv2[] = {
+    "foo.exe",
+    NULL
+  };
+
+  GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::Output("xml"), false);
+}
+
+// Tests parsing --gtest_output=xml:file
+TEST_F(InitGoogleTestTest, OutputXmlFile) {
+  const char* argv[] = {
+    "foo.exe",
+    "--gtest_output=xml:file",
+    NULL
+  };
+
+  const char* argv2[] = {
+    "foo.exe",
+    NULL
+  };
+
+  GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::Output("xml:file"), false);
+}
+
+// Tests parsing --gtest_output=xml:directory/path/
+TEST_F(InitGoogleTestTest, OutputXmlDirectory) {
+  const char* argv[] = {
+    "foo.exe",
+    "--gtest_output=xml:directory/path/",
+    NULL
+  };
+
+  const char* argv2[] = {
+    "foo.exe",
+    NULL
+  };
+
+  GTEST_TEST_PARSING_FLAGS_(argv, argv2,
+                            Flags::Output("xml:directory/path/"), false);
+}
+
+// Tests having a --gtest_print_time flag
+TEST_F(InitGoogleTestTest, PrintTimeFlag) {
+    const char* argv[] = {
+      "foo.exe",
+      "--gtest_print_time",
+      NULL
+    };
+
+    const char* argv2[] = {
+      "foo.exe",
+      NULL
+    };
+
+    GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::PrintTime(true), false);
+}
+
+// Tests having a --gtest_print_time flag with a "true" value
+TEST_F(InitGoogleTestTest, PrintTimeTrue) {
+    const char* argv[] = {
+      "foo.exe",
+      "--gtest_print_time=1",
+      NULL
+    };
+
+    const char* argv2[] = {
+      "foo.exe",
+      NULL
+    };
+
+    GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::PrintTime(true), false);
+}
+
+// Tests having a --gtest_print_time flag with a "false" value
+TEST_F(InitGoogleTestTest, PrintTimeFalse) {
+    const char* argv[] = {
+      "foo.exe",
+      "--gtest_print_time=0",
+      NULL
+    };
+
+    const char* argv2[] = {
+      "foo.exe",
+      NULL
+    };
+
+    GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::PrintTime(false), false);
+}
+
+// Tests parsing --gtest_print_time=f.
+TEST_F(InitGoogleTestTest, PrintTimeFalse_f) {
+  const char* argv[] = {
+    "foo.exe",
+    "--gtest_print_time=f",
+    NULL
+  };
+
+  const char* argv2[] = {
+    "foo.exe",
+    NULL
+  };
+
+  GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::PrintTime(false), false);
+}
+
+// Tests parsing --gtest_print_time=F.
+TEST_F(InitGoogleTestTest, PrintTimeFalse_F) {
+  const char* argv[] = {
+    "foo.exe",
+    "--gtest_print_time=F",
+    NULL
+  };
+
+  const char* argv2[] = {
+    "foo.exe",
+    NULL
+  };
+
+  GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::PrintTime(false), false);
+}
+
+// Tests parsing --gtest_random_seed=number
+TEST_F(InitGoogleTestTest, RandomSeed) {
+  const char* argv[] = {
+    "foo.exe",
+    "--gtest_random_seed=1000",
+    NULL
+  };
+
+  const char* argv2[] = {
+    "foo.exe",
+    NULL
+  };
+
+  GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::RandomSeed(1000), false);
+}
+
+// Tests parsing --gtest_repeat=number
+TEST_F(InitGoogleTestTest, Repeat) {
+  const char* argv[] = {
+    "foo.exe",
+    "--gtest_repeat=1000",
+    NULL
+  };
+
+  const char* argv2[] = {
+    "foo.exe",
+    NULL
+  };
+
+  GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::Repeat(1000), false);
+}
+
+// Tests having a --gtest_also_run_disabled_tests flag
+TEST_F(InitGoogleTestTest, AlsoRunDisabledTestsFlag) {
+    const char* argv[] = {
+      "foo.exe",
+      "--gtest_also_run_disabled_tests",
+      NULL
+    };
+
+    const char* argv2[] = {
+      "foo.exe",
+      NULL
+    };
+
+    GTEST_TEST_PARSING_FLAGS_(argv, argv2,
+                              Flags::AlsoRunDisabledTests(true), false);
+}
+
+// Tests having a --gtest_also_run_disabled_tests flag with a "true" value
+TEST_F(InitGoogleTestTest, AlsoRunDisabledTestsTrue) {
+    const char* argv[] = {
+      "foo.exe",
+      "--gtest_also_run_disabled_tests=1",
+      NULL
+    };
+
+    const char* argv2[] = {
+      "foo.exe",
+      NULL
+    };
+
+    GTEST_TEST_PARSING_FLAGS_(argv, argv2,
+                              Flags::AlsoRunDisabledTests(true), false);
+}
+
+// Tests having a --gtest_also_run_disabled_tests flag with a "false" value
+TEST_F(InitGoogleTestTest, AlsoRunDisabledTestsFalse) {
+    const char* argv[] = {
+      "foo.exe",
+      "--gtest_also_run_disabled_tests=0",
+      NULL
+    };
+
+    const char* argv2[] = {
+      "foo.exe",
+      NULL
+    };
+
+    GTEST_TEST_PARSING_FLAGS_(argv, argv2,
+                              Flags::AlsoRunDisabledTests(false), false);
+}
+
+// Tests parsing --gtest_shuffle.
+TEST_F(InitGoogleTestTest, ShuffleWithoutValue) {
+  const char* argv[] = {
+    "foo.exe",
+    "--gtest_shuffle",
+    NULL
+};
+
+  const char* argv2[] = {
+    "foo.exe",
+    NULL
+  };
+
+  GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::Shuffle(true), false);
+}
+
+// Tests parsing --gtest_shuffle=0.
+TEST_F(InitGoogleTestTest, ShuffleFalse_0) {
+  const char* argv[] = {
+    "foo.exe",
+    "--gtest_shuffle=0",
+    NULL
+  };
+
+  const char* argv2[] = {
+    "foo.exe",
+    NULL
+  };
+
+  GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::Shuffle(false), false);
+}
+
+// Tests parsing a --gtest_shuffle flag that has a "true"
+// definition.
+TEST_F(InitGoogleTestTest, ShuffleTrue) {
+  const char* argv[] = {
+    "foo.exe",
+    "--gtest_shuffle=1",
+    NULL
+  };
+
+  const char* argv2[] = {
+    "foo.exe",
+    NULL
+  };
+
+  GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::Shuffle(true), false);
+}
+
+// Tests parsing --gtest_stack_trace_depth=number.
+TEST_F(InitGoogleTestTest, StackTraceDepth) {
+  const char* argv[] = {
+    "foo.exe",
+    "--gtest_stack_trace_depth=5",
+    NULL
+  };
+
+  const char* argv2[] = {
+    "foo.exe",
+    NULL
+  };
+
+  GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::StackTraceDepth(5), false);
+}
+
+TEST_F(InitGoogleTestTest, StreamResultTo) {
+  const char* argv[] = {
+    "foo.exe",
+    "--gtest_stream_result_to=localhost:1234",
+    NULL
+  };
+
+  const char* argv2[] = {
+    "foo.exe",
+    NULL
+  };
+
+  GTEST_TEST_PARSING_FLAGS_(
+      argv, argv2, Flags::StreamResultTo("localhost:1234"), false);
+}
+
+// Tests parsing --gtest_throw_on_failure.
+TEST_F(InitGoogleTestTest, ThrowOnFailureWithoutValue) {
+  const char* argv[] = {
+    "foo.exe",
+    "--gtest_throw_on_failure",
+    NULL
+};
+
+  const char* argv2[] = {
+    "foo.exe",
+    NULL
+  };
+
+  GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::ThrowOnFailure(true), false);
+}
+
+// Tests parsing --gtest_throw_on_failure=0.
+TEST_F(InitGoogleTestTest, ThrowOnFailureFalse_0) {
+  const char* argv[] = {
+    "foo.exe",
+    "--gtest_throw_on_failure=0",
+    NULL
+  };
+
+  const char* argv2[] = {
+    "foo.exe",
+    NULL
+  };
+
+  GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::ThrowOnFailure(false), false);
+}
+
+// Tests parsing a --gtest_throw_on_failure flag that has a "true"
+// definition.
+TEST_F(InitGoogleTestTest, ThrowOnFailureTrue) {
+  const char* argv[] = {
+    "foo.exe",
+    "--gtest_throw_on_failure=1",
+    NULL
+  };
+
+  const char* argv2[] = {
+    "foo.exe",
+    NULL
+  };
+
+  GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::ThrowOnFailure(true), false);
+}
+
+#if GTEST_OS_WINDOWS
+// Tests parsing wide strings.
+TEST_F(InitGoogleTestTest, WideStrings) {
+  const wchar_t* argv[] = {
+    L"foo.exe",
+    L"--gtest_filter=Foo*",
+    L"--gtest_list_tests=1",
+    L"--gtest_break_on_failure",
+    L"--non_gtest_flag",
+    NULL
+  };
+
+  const wchar_t* argv2[] = {
+    L"foo.exe",
+    L"--non_gtest_flag",
+    NULL
+  };
+
+  Flags expected_flags;
+  expected_flags.break_on_failure = true;
+  expected_flags.filter = "Foo*";
+  expected_flags.list_tests = true;
+
+  GTEST_TEST_PARSING_FLAGS_(argv, argv2, expected_flags, false);
+}
+#endif  // GTEST_OS_WINDOWS
+
+// Tests current_test_info() in UnitTest.
+class CurrentTestInfoTest : public Test {
+ protected:
+  // Tests that current_test_info() returns NULL before the first test in
+  // the test case is run.
+  static void SetUpTestCase() {
+    // There should be no tests running at this point.
+    const TestInfo* test_info =
+      UnitTest::GetInstance()->current_test_info();
+    EXPECT_TRUE(test_info == NULL)
+        << "There should be no tests running at this point.";
+  }
+
+  // Tests that current_test_info() returns NULL after the last test in
+  // the test case has run.
+  static void TearDownTestCase() {
+    const TestInfo* test_info =
+      UnitTest::GetInstance()->current_test_info();
+    EXPECT_TRUE(test_info == NULL)
+        << "There should be no tests running at this point.";
+  }
+};
+
+// Tests that current_test_info() returns TestInfo for currently running
+// test by checking the expected test name against the actual one.
+TEST_F(CurrentTestInfoTest, WorksForFirstTestInATestCase) {
+  const TestInfo* test_info =
+    UnitTest::GetInstance()->current_test_info();
+  ASSERT_TRUE(NULL != test_info)
+      << "There is a test running so we should have a valid TestInfo.";
+  EXPECT_STREQ("CurrentTestInfoTest", test_info->test_case_name())
+      << "Expected the name of the currently running test case.";
+  EXPECT_STREQ("WorksForFirstTestInATestCase", test_info->name())
+      << "Expected the name of the currently running test.";
+}
+
+// Tests that current_test_info() returns TestInfo for currently running
+// test by checking the expected test name against the actual one.  We
+// use this test to see that the TestInfo object actually changed from
+// the previous invocation.
+TEST_F(CurrentTestInfoTest, WorksForSecondTestInATestCase) {
+  const TestInfo* test_info =
+    UnitTest::GetInstance()->current_test_info();
+  ASSERT_TRUE(NULL != test_info)
+      << "There is a test running so we should have a valid TestInfo.";
+  EXPECT_STREQ("CurrentTestInfoTest", test_info->test_case_name())
+      << "Expected the name of the currently running test case.";
+  EXPECT_STREQ("WorksForSecondTestInATestCase", test_info->name())
+      << "Expected the name of the currently running test.";
+}
+
+}  // namespace testing
+
+// These two lines test that we can define tests in a namespace that
+// has the name "testing" and is nested in another namespace.
+namespace my_namespace {
+namespace testing {
+
+// Makes sure that TEST knows to use ::testing::Test instead of
+// ::my_namespace::testing::Test.
+class Test {};
+
+// Makes sure that an assertion knows to use ::testing::Message instead of
+// ::my_namespace::testing::Message.
+class Message {};
+
+// Makes sure that an assertion knows to use
+// ::testing::AssertionResult instead of
+// ::my_namespace::testing::AssertionResult.
+class AssertionResult {};
+
+// Tests that an assertion that should succeed works as expected.
+TEST(NestedTestingNamespaceTest, Success) {
+  EXPECT_EQ(1, 1) << "This shouldn't fail.";
+}
+
+// Tests that an assertion that should fail works as expected.
+TEST(NestedTestingNamespaceTest, Failure) {
+  EXPECT_FATAL_FAILURE(FAIL() << "This failure is expected.",
+                       "This failure is expected.");
+}
+
+}  // namespace testing
+}  // namespace my_namespace
+
+// Tests that one can call superclass SetUp and TearDown methods--
+// that is, that they are not private.
+// No tests are based on this fixture; the test "passes" if it compiles
+// successfully.
+class ProtectedFixtureMethodsTest : public Test {
+ protected:
+  virtual void SetUp() {
+    Test::SetUp();
+  }
+  virtual void TearDown() {
+    Test::TearDown();
+  }
+};
+
+// StreamingAssertionsTest tests the streaming versions of a representative
+// sample of assertions.
+TEST(StreamingAssertionsTest, Unconditional) {
+  SUCCEED() << "expected success";
+  EXPECT_NONFATAL_FAILURE(ADD_FAILURE() << "expected failure",
+                          "expected failure");
+  EXPECT_FATAL_FAILURE(FAIL() << "expected failure",
+                       "expected failure");
+}
+
+#ifdef __BORLANDC__
+// Silences warnings: "Condition is always true", "Unreachable code"
+# pragma option push -w-ccc -w-rch
+#endif
+
+TEST(StreamingAssertionsTest, Truth) {
+  EXPECT_TRUE(true) << "unexpected failure";
+  ASSERT_TRUE(true) << "unexpected failure";
+  EXPECT_NONFATAL_FAILURE(EXPECT_TRUE(false) << "expected failure",
+                          "expected failure");
+  EXPECT_FATAL_FAILURE(ASSERT_TRUE(false) << "expected failure",
+                       "expected failure");
+}
+
+TEST(StreamingAssertionsTest, Truth2) {
+  EXPECT_FALSE(false) << "unexpected failure";
+  ASSERT_FALSE(false) << "unexpected failure";
+  EXPECT_NONFATAL_FAILURE(EXPECT_FALSE(true) << "expected failure",
+                          "expected failure");
+  EXPECT_FATAL_FAILURE(ASSERT_FALSE(true) << "expected failure",
+                       "expected failure");
+}
+
+#ifdef __BORLANDC__
+// Restores warnings after previous "#pragma option push" supressed them
+# pragma option pop
+#endif
+
+TEST(StreamingAssertionsTest, IntegerEquals) {
+  EXPECT_EQ(1, 1) << "unexpected failure";
+  ASSERT_EQ(1, 1) << "unexpected failure";
+  EXPECT_NONFATAL_FAILURE(EXPECT_EQ(1, 2) << "expected failure",
+                          "expected failure");
+  EXPECT_FATAL_FAILURE(ASSERT_EQ(1, 2) << "expected failure",
+                       "expected failure");
+}
+
+TEST(StreamingAssertionsTest, IntegerLessThan) {
+  EXPECT_LT(1, 2) << "unexpected failure";
+  ASSERT_LT(1, 2) << "unexpected failure";
+  EXPECT_NONFATAL_FAILURE(EXPECT_LT(2, 1) << "expected failure",
+                          "expected failure");
+  EXPECT_FATAL_FAILURE(ASSERT_LT(2, 1) << "expected failure",
+                       "expected failure");
+}
+
+TEST(StreamingAssertionsTest, StringsEqual) {
+  EXPECT_STREQ("foo", "foo") << "unexpected failure";
+  ASSERT_STREQ("foo", "foo") << "unexpected failure";
+  EXPECT_NONFATAL_FAILURE(EXPECT_STREQ("foo", "bar") << "expected failure",
+                          "expected failure");
+  EXPECT_FATAL_FAILURE(ASSERT_STREQ("foo", "bar") << "expected failure",
+                       "expected failure");
+}
+
+TEST(StreamingAssertionsTest, StringsNotEqual) {
+  EXPECT_STRNE("foo", "bar") << "unexpected failure";
+  ASSERT_STRNE("foo", "bar") << "unexpected failure";
+  EXPECT_NONFATAL_FAILURE(EXPECT_STRNE("foo", "foo") << "expected failure",
+                          "expected failure");
+  EXPECT_FATAL_FAILURE(ASSERT_STRNE("foo", "foo") << "expected failure",
+                       "expected failure");
+}
+
+TEST(StreamingAssertionsTest, StringsEqualIgnoringCase) {
+  EXPECT_STRCASEEQ("foo", "FOO") << "unexpected failure";
+  ASSERT_STRCASEEQ("foo", "FOO") << "unexpected failure";
+  EXPECT_NONFATAL_FAILURE(EXPECT_STRCASEEQ("foo", "bar") << "expected failure",
+                          "expected failure");
+  EXPECT_FATAL_FAILURE(ASSERT_STRCASEEQ("foo", "bar") << "expected failure",
+                       "expected failure");
+}
+
+TEST(StreamingAssertionsTest, StringNotEqualIgnoringCase) {
+  EXPECT_STRCASENE("foo", "bar") << "unexpected failure";
+  ASSERT_STRCASENE("foo", "bar") << "unexpected failure";
+  EXPECT_NONFATAL_FAILURE(EXPECT_STRCASENE("foo", "FOO") << "expected failure",
+                          "expected failure");
+  EXPECT_FATAL_FAILURE(ASSERT_STRCASENE("bar", "BAR") << "expected failure",
+                       "expected failure");
+}
+
+TEST(StreamingAssertionsTest, FloatingPointEquals) {
+  EXPECT_FLOAT_EQ(1.0, 1.0) << "unexpected failure";
+  ASSERT_FLOAT_EQ(1.0, 1.0) << "unexpected failure";
+  EXPECT_NONFATAL_FAILURE(EXPECT_FLOAT_EQ(0.0, 1.0) << "expected failure",
+                          "expected failure");
+  EXPECT_FATAL_FAILURE(ASSERT_FLOAT_EQ(0.0, 1.0) << "expected failure",
+                       "expected failure");
+}
+
+#if GTEST_HAS_EXCEPTIONS
+
+TEST(StreamingAssertionsTest, Throw) {
+  EXPECT_THROW(ThrowAnInteger(), int) << "unexpected failure";
+  ASSERT_THROW(ThrowAnInteger(), int) << "unexpected failure";
+  EXPECT_NONFATAL_FAILURE(EXPECT_THROW(ThrowAnInteger(), bool) <<
+                          "expected failure", "expected failure");
+  EXPECT_FATAL_FAILURE(ASSERT_THROW(ThrowAnInteger(), bool) <<
+                       "expected failure", "expected failure");
+}
+
+TEST(StreamingAssertionsTest, NoThrow) {
+  EXPECT_NO_THROW(ThrowNothing()) << "unexpected failure";
+  ASSERT_NO_THROW(ThrowNothing()) << "unexpected failure";
+  EXPECT_NONFATAL_FAILURE(EXPECT_NO_THROW(ThrowAnInteger()) <<
+                          "expected failure", "expected failure");
+  EXPECT_FATAL_FAILURE(ASSERT_NO_THROW(ThrowAnInteger()) <<
+                       "expected failure", "expected failure");
+}
+
+TEST(StreamingAssertionsTest, AnyThrow) {
+  EXPECT_ANY_THROW(ThrowAnInteger()) << "unexpected failure";
+  ASSERT_ANY_THROW(ThrowAnInteger()) << "unexpected failure";
+  EXPECT_NONFATAL_FAILURE(EXPECT_ANY_THROW(ThrowNothing()) <<
+                          "expected failure", "expected failure");
+  EXPECT_FATAL_FAILURE(ASSERT_ANY_THROW(ThrowNothing()) <<
+                       "expected failure", "expected failure");
+}
+
+#endif  // GTEST_HAS_EXCEPTIONS
+
+// Tests that Google Test correctly decides whether to use colors in the output.
+
+TEST(ColoredOutputTest, UsesColorsWhenGTestColorFlagIsYes) {
+  GTEST_FLAG(color) = "yes";
+
+  SetEnv("TERM", "xterm");  // TERM supports colors.
+  EXPECT_TRUE(ShouldUseColor(true));  // Stdout is a TTY.
+  EXPECT_TRUE(ShouldUseColor(false));  // Stdout is not a TTY.
+
+  SetEnv("TERM", "dumb");  // TERM doesn't support colors.
+  EXPECT_TRUE(ShouldUseColor(true));  // Stdout is a TTY.
+  EXPECT_TRUE(ShouldUseColor(false));  // Stdout is not a TTY.
+}
+
+TEST(ColoredOutputTest, UsesColorsWhenGTestColorFlagIsAliasOfYes) {
+  SetEnv("TERM", "dumb");  // TERM doesn't support colors.
+
+  GTEST_FLAG(color) = "True";
+  EXPECT_TRUE(ShouldUseColor(false));  // Stdout is not a TTY.
+
+  GTEST_FLAG(color) = "t";
+  EXPECT_TRUE(ShouldUseColor(false));  // Stdout is not a TTY.
+
+  GTEST_FLAG(color) = "1";
+  EXPECT_TRUE(ShouldUseColor(false));  // Stdout is not a TTY.
+}
+
+TEST(ColoredOutputTest, UsesNoColorWhenGTestColorFlagIsNo) {
+  GTEST_FLAG(color) = "no";
+
+  SetEnv("TERM", "xterm");  // TERM supports colors.
+  EXPECT_FALSE(ShouldUseColor(true));  // Stdout is a TTY.
+  EXPECT_FALSE(ShouldUseColor(false));  // Stdout is not a TTY.
+
+  SetEnv("TERM", "dumb");  // TERM doesn't support colors.
+  EXPECT_FALSE(ShouldUseColor(true));  // Stdout is a TTY.
+  EXPECT_FALSE(ShouldUseColor(false));  // Stdout is not a TTY.
+}
+
+TEST(ColoredOutputTest, UsesNoColorWhenGTestColorFlagIsInvalid) {
+  SetEnv("TERM", "xterm");  // TERM supports colors.
+
+  GTEST_FLAG(color) = "F";
+  EXPECT_FALSE(ShouldUseColor(true));  // Stdout is a TTY.
+
+  GTEST_FLAG(color) = "0";
+  EXPECT_FALSE(ShouldUseColor(true));  // Stdout is a TTY.
+
+  GTEST_FLAG(color) = "unknown";
+  EXPECT_FALSE(ShouldUseColor(true));  // Stdout is a TTY.
+}
+
+TEST(ColoredOutputTest, UsesColorsWhenStdoutIsTty) {
+  GTEST_FLAG(color) = "auto";
+
+  SetEnv("TERM", "xterm");  // TERM supports colors.
+  EXPECT_FALSE(ShouldUseColor(false));  // Stdout is not a TTY.
+  EXPECT_TRUE(ShouldUseColor(true));    // Stdout is a TTY.
+}
+
+TEST(ColoredOutputTest, UsesColorsWhenTermSupportsColors) {
+  GTEST_FLAG(color) = "auto";
+
+#if GTEST_OS_WINDOWS
+  // On Windows, we ignore the TERM variable as it's usually not set.
+
+  SetEnv("TERM", "dumb");
+  EXPECT_TRUE(ShouldUseColor(true));  // Stdout is a TTY.
+
+  SetEnv("TERM", "");
+  EXPECT_TRUE(ShouldUseColor(true));  // Stdout is a TTY.
+
+  SetEnv("TERM", "xterm");
+  EXPECT_TRUE(ShouldUseColor(true));  // Stdout is a TTY.
+#else
+  // On non-Windows platforms, we rely on TERM to determine if the
+  // terminal supports colors.
+
+  SetEnv("TERM", "dumb");  // TERM doesn't support colors.
+  EXPECT_FALSE(ShouldUseColor(true));  // Stdout is a TTY.
+
+  SetEnv("TERM", "emacs");  // TERM doesn't support colors.
+  EXPECT_FALSE(ShouldUseColor(true));  // Stdout is a TTY.
+
+  SetEnv("TERM", "vt100");  // TERM doesn't support colors.
+  EXPECT_FALSE(ShouldUseColor(true));  // Stdout is a TTY.
+
+  SetEnv("TERM", "xterm-mono");  // TERM doesn't support colors.
+  EXPECT_FALSE(ShouldUseColor(true));  // Stdout is a TTY.
+
+  SetEnv("TERM", "xterm");  // TERM supports colors.
+  EXPECT_TRUE(ShouldUseColor(true));  // Stdout is a TTY.
+
+  SetEnv("TERM", "xterm-color");  // TERM supports colors.
+  EXPECT_TRUE(ShouldUseColor(true));  // Stdout is a TTY.
+
+  SetEnv("TERM", "xterm-256color");  // TERM supports colors.
+  EXPECT_TRUE(ShouldUseColor(true));  // Stdout is a TTY.
+
+  SetEnv("TERM", "screen");  // TERM supports colors.
+  EXPECT_TRUE(ShouldUseColor(true));  // Stdout is a TTY.
+
+  SetEnv("TERM", "linux");  // TERM supports colors.
+  EXPECT_TRUE(ShouldUseColor(true));  // Stdout is a TTY.
+
+  SetEnv("TERM", "cygwin");  // TERM supports colors.
+  EXPECT_TRUE(ShouldUseColor(true));  // Stdout is a TTY.
+#endif  // GTEST_OS_WINDOWS
+}
+
+// Verifies that StaticAssertTypeEq works in a namespace scope.
+
+static bool dummy1 GTEST_ATTRIBUTE_UNUSED_ = StaticAssertTypeEq<bool, bool>();
+static bool dummy2 GTEST_ATTRIBUTE_UNUSED_ =
+    StaticAssertTypeEq<const int, const int>();
+
+// Verifies that StaticAssertTypeEq works in a class.
+
+template <typename T>
+class StaticAssertTypeEqTestHelper {
+ public:
+  StaticAssertTypeEqTestHelper() { StaticAssertTypeEq<bool, T>(); }
+};
+
+TEST(StaticAssertTypeEqTest, WorksInClass) {
+  StaticAssertTypeEqTestHelper<bool>();
+}
+
+// Verifies that StaticAssertTypeEq works inside a function.
+
+typedef int IntAlias;
+
+TEST(StaticAssertTypeEqTest, CompilesForEqualTypes) {
+  StaticAssertTypeEq<int, IntAlias>();
+  StaticAssertTypeEq<int*, IntAlias*>();
+}
+
+TEST(GetCurrentOsStackTraceExceptTopTest, ReturnsTheStackTrace) {
+  testing::UnitTest* const unit_test = testing::UnitTest::GetInstance();
+
+  // We don't have a stack walker in Google Test yet.
+  EXPECT_STREQ("", GetCurrentOsStackTraceExceptTop(unit_test, 0).c_str());
+  EXPECT_STREQ("", GetCurrentOsStackTraceExceptTop(unit_test, 1).c_str());
+}
+
+TEST(HasNonfatalFailureTest, ReturnsFalseWhenThereIsNoFailure) {
+  EXPECT_FALSE(HasNonfatalFailure());
+}
+
+static void FailFatally() { FAIL(); }
+
+TEST(HasNonfatalFailureTest, ReturnsFalseWhenThereIsOnlyFatalFailure) {
+  FailFatally();
+  const bool has_nonfatal_failure = HasNonfatalFailure();
+  ClearCurrentTestPartResults();
+  EXPECT_FALSE(has_nonfatal_failure);
+}
+
+TEST(HasNonfatalFailureTest, ReturnsTrueWhenThereIsNonfatalFailure) {
+  ADD_FAILURE();
+  const bool has_nonfatal_failure = HasNonfatalFailure();
+  ClearCurrentTestPartResults();
+  EXPECT_TRUE(has_nonfatal_failure);
+}
+
+TEST(HasNonfatalFailureTest, ReturnsTrueWhenThereAreFatalAndNonfatalFailures) {
+  FailFatally();
+  ADD_FAILURE();
+  const bool has_nonfatal_failure = HasNonfatalFailure();
+  ClearCurrentTestPartResults();
+  EXPECT_TRUE(has_nonfatal_failure);
+}
+
+// A wrapper for calling HasNonfatalFailure outside of a test body.
+static bool HasNonfatalFailureHelper() {
+  return testing::Test::HasNonfatalFailure();
+}
+
+TEST(HasNonfatalFailureTest, WorksOutsideOfTestBody) {
+  EXPECT_FALSE(HasNonfatalFailureHelper());
+}
+
+TEST(HasNonfatalFailureTest, WorksOutsideOfTestBody2) {
+  ADD_FAILURE();
+  const bool has_nonfatal_failure = HasNonfatalFailureHelper();
+  ClearCurrentTestPartResults();
+  EXPECT_TRUE(has_nonfatal_failure);
+}
+
+TEST(HasFailureTest, ReturnsFalseWhenThereIsNoFailure) {
+  EXPECT_FALSE(HasFailure());
+}
+
+TEST(HasFailureTest, ReturnsTrueWhenThereIsFatalFailure) {
+  FailFatally();
+  const bool has_failure = HasFailure();
+  ClearCurrentTestPartResults();
+  EXPECT_TRUE(has_failure);
+}
+
+TEST(HasFailureTest, ReturnsTrueWhenThereIsNonfatalFailure) {
+  ADD_FAILURE();
+  const bool has_failure = HasFailure();
+  ClearCurrentTestPartResults();
+  EXPECT_TRUE(has_failure);
+}
+
+TEST(HasFailureTest, ReturnsTrueWhenThereAreFatalAndNonfatalFailures) {
+  FailFatally();
+  ADD_FAILURE();
+  const bool has_failure = HasFailure();
+  ClearCurrentTestPartResults();
+  EXPECT_TRUE(has_failure);
+}
+
+// A wrapper for calling HasFailure outside of a test body.
+static bool HasFailureHelper() { return testing::Test::HasFailure(); }
+
+TEST(HasFailureTest, WorksOutsideOfTestBody) {
+  EXPECT_FALSE(HasFailureHelper());
+}
+
+TEST(HasFailureTest, WorksOutsideOfTestBody2) {
+  ADD_FAILURE();
+  const bool has_failure = HasFailureHelper();
+  ClearCurrentTestPartResults();
+  EXPECT_TRUE(has_failure);
+}
+
+class TestListener : public EmptyTestEventListener {
+ public:
+  TestListener() : on_start_counter_(NULL), is_destroyed_(NULL) {}
+  TestListener(int* on_start_counter, bool* is_destroyed)
+      : on_start_counter_(on_start_counter),
+        is_destroyed_(is_destroyed) {}
+
+  virtual ~TestListener() {
+    if (is_destroyed_)
+      *is_destroyed_ = true;
+  }
+
+ protected:
+  virtual void OnTestProgramStart(const UnitTest& /*unit_test*/) {
+    if (on_start_counter_ != NULL)
+      (*on_start_counter_)++;
+  }
+
+ private:
+  int* on_start_counter_;
+  bool* is_destroyed_;
+};
+
+// Tests the constructor.
+TEST(TestEventListenersTest, ConstructionWorks) {
+  TestEventListeners listeners;
+
+  EXPECT_TRUE(TestEventListenersAccessor::GetRepeater(&listeners) != NULL);
+  EXPECT_TRUE(listeners.default_result_printer() == NULL);
+  EXPECT_TRUE(listeners.default_xml_generator() == NULL);
+}
+
+// Tests that the TestEventListeners destructor deletes all the listeners it
+// owns.
+TEST(TestEventListenersTest, DestructionWorks) {
+  bool default_result_printer_is_destroyed = false;
+  bool default_xml_printer_is_destroyed = false;
+  bool extra_listener_is_destroyed = false;
+  TestListener* default_result_printer = new TestListener(
+      NULL, &default_result_printer_is_destroyed);
+  TestListener* default_xml_printer = new TestListener(
+      NULL, &default_xml_printer_is_destroyed);
+  TestListener* extra_listener = new TestListener(
+      NULL, &extra_listener_is_destroyed);
+
+  {
+    TestEventListeners listeners;
+    TestEventListenersAccessor::SetDefaultResultPrinter(&listeners,
+                                                        default_result_printer);
+    TestEventListenersAccessor::SetDefaultXmlGenerator(&listeners,
+                                                       default_xml_printer);
+    listeners.Append(extra_listener);
+  }
+  EXPECT_TRUE(default_result_printer_is_destroyed);
+  EXPECT_TRUE(default_xml_printer_is_destroyed);
+  EXPECT_TRUE(extra_listener_is_destroyed);
+}
+
+// Tests that a listener Append'ed to a TestEventListeners list starts
+// receiving events.
+TEST(TestEventListenersTest, Append) {
+  int on_start_counter = 0;
+  bool is_destroyed = false;
+  TestListener* listener = new TestListener(&on_start_counter, &is_destroyed);
+  {
+    TestEventListeners listeners;
+    listeners.Append(listener);
+    TestEventListenersAccessor::GetRepeater(&listeners)->OnTestProgramStart(
+        *UnitTest::GetInstance());
+    EXPECT_EQ(1, on_start_counter);
+  }
+  EXPECT_TRUE(is_destroyed);
+}
+
+// Tests that listeners receive events in the order they were appended to
+// the list, except for *End requests, which must be received in the reverse
+// order.
+class SequenceTestingListener : public EmptyTestEventListener {
+ public:
+  SequenceTestingListener(std::vector<String>* vector, const char* id)
+      : vector_(vector), id_(id) {}
+
+ protected:
+  virtual void OnTestProgramStart(const UnitTest& /*unit_test*/) {
+    vector_->push_back(GetEventDescription("OnTestProgramStart"));
+  }
+
+  virtual void OnTestProgramEnd(const UnitTest& /*unit_test*/) {
+    vector_->push_back(GetEventDescription("OnTestProgramEnd"));
+  }
+
+  virtual void OnTestIterationStart(const UnitTest& /*unit_test*/,
+                                    int /*iteration*/) {
+    vector_->push_back(GetEventDescription("OnTestIterationStart"));
+  }
+
+  virtual void OnTestIterationEnd(const UnitTest& /*unit_test*/,
+                                  int /*iteration*/) {
+    vector_->push_back(GetEventDescription("OnTestIterationEnd"));
+  }
+
+ private:
+  String GetEventDescription(const char* method) {
+    Message message;
+    message << id_ << "." << method;
+    return message.GetString();
+  }
+
+  std::vector<String>* vector_;
+  const char* const id_;
+
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(SequenceTestingListener);
+};
+
+TEST(EventListenerTest, AppendKeepsOrder) {
+  std::vector<String> vec;
+  TestEventListeners listeners;
+  listeners.Append(new SequenceTestingListener(&vec, "1st"));
+  listeners.Append(new SequenceTestingListener(&vec, "2nd"));
+  listeners.Append(new SequenceTestingListener(&vec, "3rd"));
+
+  TestEventListenersAccessor::GetRepeater(&listeners)->OnTestProgramStart(
+      *UnitTest::GetInstance());
+  ASSERT_EQ(3U, vec.size());
+  EXPECT_STREQ("1st.OnTestProgramStart", vec[0].c_str());
+  EXPECT_STREQ("2nd.OnTestProgramStart", vec[1].c_str());
+  EXPECT_STREQ("3rd.OnTestProgramStart", vec[2].c_str());
+
+  vec.clear();
+  TestEventListenersAccessor::GetRepeater(&listeners)->OnTestProgramEnd(
+      *UnitTest::GetInstance());
+  ASSERT_EQ(3U, vec.size());
+  EXPECT_STREQ("3rd.OnTestProgramEnd", vec[0].c_str());
+  EXPECT_STREQ("2nd.OnTestProgramEnd", vec[1].c_str());
+  EXPECT_STREQ("1st.OnTestProgramEnd", vec[2].c_str());
+
+  vec.clear();
+  TestEventListenersAccessor::GetRepeater(&listeners)->OnTestIterationStart(
+      *UnitTest::GetInstance(), 0);
+  ASSERT_EQ(3U, vec.size());
+  EXPECT_STREQ("1st.OnTestIterationStart", vec[0].c_str());
+  EXPECT_STREQ("2nd.OnTestIterationStart", vec[1].c_str());
+  EXPECT_STREQ("3rd.OnTestIterationStart", vec[2].c_str());
+
+  vec.clear();
+  TestEventListenersAccessor::GetRepeater(&listeners)->OnTestIterationEnd(
+      *UnitTest::GetInstance(), 0);
+  ASSERT_EQ(3U, vec.size());
+  EXPECT_STREQ("3rd.OnTestIterationEnd", vec[0].c_str());
+  EXPECT_STREQ("2nd.OnTestIterationEnd", vec[1].c_str());
+  EXPECT_STREQ("1st.OnTestIterationEnd", vec[2].c_str());
+}
+
+// Tests that a listener removed from a TestEventListeners list stops receiving
+// events and is not deleted when the list is destroyed.
+TEST(TestEventListenersTest, Release) {
+  int on_start_counter = 0;
+  bool is_destroyed = false;
+  // Although Append passes the ownership of this object to the list,
+  // the following calls release it, and we need to delete it before the
+  // test ends.
+  TestListener* listener = new TestListener(&on_start_counter, &is_destroyed);
+  {
+    TestEventListeners listeners;
+    listeners.Append(listener);
+    EXPECT_EQ(listener, listeners.Release(listener));
+    TestEventListenersAccessor::GetRepeater(&listeners)->OnTestProgramStart(
+        *UnitTest::GetInstance());
+    EXPECT_TRUE(listeners.Release(listener) == NULL);
+  }
+  EXPECT_EQ(0, on_start_counter);
+  EXPECT_FALSE(is_destroyed);
+  delete listener;
+}
+
+// Tests that no events are forwarded when event forwarding is disabled.
+TEST(EventListenerTest, SuppressEventForwarding) {
+  int on_start_counter = 0;
+  TestListener* listener = new TestListener(&on_start_counter, NULL);
+
+  TestEventListeners listeners;
+  listeners.Append(listener);
+  ASSERT_TRUE(TestEventListenersAccessor::EventForwardingEnabled(listeners));
+  TestEventListenersAccessor::SuppressEventForwarding(&listeners);
+  ASSERT_FALSE(TestEventListenersAccessor::EventForwardingEnabled(listeners));
+  TestEventListenersAccessor::GetRepeater(&listeners)->OnTestProgramStart(
+      *UnitTest::GetInstance());
+  EXPECT_EQ(0, on_start_counter);
+}
+
+// Tests that events generated by Google Test are not forwarded in
+// death test subprocesses.
+TEST(EventListenerDeathTest, EventsNotForwardedInDeathTestSubprecesses) {
+  EXPECT_DEATH_IF_SUPPORTED({
+      GTEST_CHECK_(TestEventListenersAccessor::EventForwardingEnabled(
+          *GetUnitTestImpl()->listeners())) << "expected failure";},
+      "expected failure");
+}
+
+// Tests that a listener installed via SetDefaultResultPrinter() starts
+// receiving events and is returned via default_result_printer() and that
+// the previous default_result_printer is removed from the list and deleted.
+TEST(EventListenerTest, default_result_printer) {
+  int on_start_counter = 0;
+  bool is_destroyed = false;
+  TestListener* listener = new TestListener(&on_start_counter, &is_destroyed);
+
+  TestEventListeners listeners;
+  TestEventListenersAccessor::SetDefaultResultPrinter(&listeners, listener);
+
+  EXPECT_EQ(listener, listeners.default_result_printer());
+
+  TestEventListenersAccessor::GetRepeater(&listeners)->OnTestProgramStart(
+      *UnitTest::GetInstance());
+
+  EXPECT_EQ(1, on_start_counter);
+
+  // Replacing default_result_printer with something else should remove it
+  // from the list and destroy it.
+  TestEventListenersAccessor::SetDefaultResultPrinter(&listeners, NULL);
+
+  EXPECT_TRUE(listeners.default_result_printer() == NULL);
+  EXPECT_TRUE(is_destroyed);
+
+  // After broadcasting an event the counter is still the same, indicating
+  // the listener is not in the list anymore.
+  TestEventListenersAccessor::GetRepeater(&listeners)->OnTestProgramStart(
+      *UnitTest::GetInstance());
+  EXPECT_EQ(1, on_start_counter);
+}
+
+// Tests that the default_result_printer listener stops receiving events
+// when removed via Release and that is not owned by the list anymore.
+TEST(EventListenerTest, RemovingDefaultResultPrinterWorks) {
+  int on_start_counter = 0;
+  bool is_destroyed = false;
+  // Although Append passes the ownership of this object to the list,
+  // the following calls release it, and we need to delete it before the
+  // test ends.
+  TestListener* listener = new TestListener(&on_start_counter, &is_destroyed);
+  {
+    TestEventListeners listeners;
+    TestEventListenersAccessor::SetDefaultResultPrinter(&listeners, listener);
+
+    EXPECT_EQ(listener, listeners.Release(listener));
+    EXPECT_TRUE(listeners.default_result_printer() == NULL);
+    EXPECT_FALSE(is_destroyed);
+
+    // Broadcasting events now should not affect default_result_printer.
+    TestEventListenersAccessor::GetRepeater(&listeners)->OnTestProgramStart(
+        *UnitTest::GetInstance());
+    EXPECT_EQ(0, on_start_counter);
+  }
+  // Destroying the list should not affect the listener now, too.
+  EXPECT_FALSE(is_destroyed);
+  delete listener;
+}
+
+// Tests that a listener installed via SetDefaultXmlGenerator() starts
+// receiving events and is returned via default_xml_generator() and that
+// the previous default_xml_generator is removed from the list and deleted.
+TEST(EventListenerTest, default_xml_generator) {
+  int on_start_counter = 0;
+  bool is_destroyed = false;
+  TestListener* listener = new TestListener(&on_start_counter, &is_destroyed);
+
+  TestEventListeners listeners;
+  TestEventListenersAccessor::SetDefaultXmlGenerator(&listeners, listener);
+
+  EXPECT_EQ(listener, listeners.default_xml_generator());
+
+  TestEventListenersAccessor::GetRepeater(&listeners)->OnTestProgramStart(
+      *UnitTest::GetInstance());
+
+  EXPECT_EQ(1, on_start_counter);
+
+  // Replacing default_xml_generator with something else should remove it
+  // from the list and destroy it.
+  TestEventListenersAccessor::SetDefaultXmlGenerator(&listeners, NULL);
+
+  EXPECT_TRUE(listeners.default_xml_generator() == NULL);
+  EXPECT_TRUE(is_destroyed);
+
+  // After broadcasting an event the counter is still the same, indicating
+  // the listener is not in the list anymore.
+  TestEventListenersAccessor::GetRepeater(&listeners)->OnTestProgramStart(
+      *UnitTest::GetInstance());
+  EXPECT_EQ(1, on_start_counter);
+}
+
+// Tests that the default_xml_generator listener stops receiving events
+// when removed via Release and that is not owned by the list anymore.
+TEST(EventListenerTest, RemovingDefaultXmlGeneratorWorks) {
+  int on_start_counter = 0;
+  bool is_destroyed = false;
+  // Although Append passes the ownership of this object to the list,
+  // the following calls release it, and we need to delete it before the
+  // test ends.
+  TestListener* listener = new TestListener(&on_start_counter, &is_destroyed);
+  {
+    TestEventListeners listeners;
+    TestEventListenersAccessor::SetDefaultXmlGenerator(&listeners, listener);
+
+    EXPECT_EQ(listener, listeners.Release(listener));
+    EXPECT_TRUE(listeners.default_xml_generator() == NULL);
+    EXPECT_FALSE(is_destroyed);
+
+    // Broadcasting events now should not affect default_xml_generator.
+    TestEventListenersAccessor::GetRepeater(&listeners)->OnTestProgramStart(
+        *UnitTest::GetInstance());
+    EXPECT_EQ(0, on_start_counter);
+  }
+  // Destroying the list should not affect the listener now, too.
+  EXPECT_FALSE(is_destroyed);
+  delete listener;
+}
+
+// Sanity tests to ensure that the alternative, verbose spellings of
+// some of the macros work.  We don't test them thoroughly as that
+// would be quite involved.  Since their implementations are
+// straightforward, and they are rarely used, we'll just rely on the
+// users to tell us when they are broken.
+GTEST_TEST(AlternativeNameTest, Works) {  // GTEST_TEST is the same as TEST.
+  GTEST_SUCCEED() << "OK";  // GTEST_SUCCEED is the same as SUCCEED.
+
+  // GTEST_FAIL is the same as FAIL.
+  EXPECT_FATAL_FAILURE(GTEST_FAIL() << "An expected failure",
+                       "An expected failure");
+
+  // GTEST_ASSERT_XY is the same as ASSERT_XY.
+
+  GTEST_ASSERT_EQ(0, 0);
+  EXPECT_FATAL_FAILURE(GTEST_ASSERT_EQ(0, 1) << "An expected failure",
+                       "An expected failure");
+  EXPECT_FATAL_FAILURE(GTEST_ASSERT_EQ(1, 0) << "An expected failure",
+                       "An expected failure");
+
+  GTEST_ASSERT_NE(0, 1);
+  GTEST_ASSERT_NE(1, 0);
+  EXPECT_FATAL_FAILURE(GTEST_ASSERT_NE(0, 0) << "An expected failure",
+                       "An expected failure");
+
+  GTEST_ASSERT_LE(0, 0);
+  GTEST_ASSERT_LE(0, 1);
+  EXPECT_FATAL_FAILURE(GTEST_ASSERT_LE(1, 0) << "An expected failure",
+                       "An expected failure");
+
+  GTEST_ASSERT_LT(0, 1);
+  EXPECT_FATAL_FAILURE(GTEST_ASSERT_LT(0, 0) << "An expected failure",
+                       "An expected failure");
+  EXPECT_FATAL_FAILURE(GTEST_ASSERT_LT(1, 0) << "An expected failure",
+                       "An expected failure");
+
+  GTEST_ASSERT_GE(0, 0);
+  GTEST_ASSERT_GE(1, 0);
+  EXPECT_FATAL_FAILURE(GTEST_ASSERT_GE(0, 1) << "An expected failure",
+                       "An expected failure");
+
+  GTEST_ASSERT_GT(1, 0);
+  EXPECT_FATAL_FAILURE(GTEST_ASSERT_GT(0, 1) << "An expected failure",
+                       "An expected failure");
+  EXPECT_FATAL_FAILURE(GTEST_ASSERT_GT(1, 1) << "An expected failure",
+                       "An expected failure");
+}
+
+// Tests for internal utilities necessary for implementation of the universal
+// printing.
+// TODO(vladl@google.com): Find a better home for them.
+
+class ConversionHelperBase {};
+class ConversionHelperDerived : public ConversionHelperBase {};
+
+// Tests that IsAProtocolMessage<T>::value is a compile-time constant.
+TEST(IsAProtocolMessageTest, ValueIsCompileTimeConstant) {
+  GTEST_COMPILE_ASSERT_(IsAProtocolMessage<ProtocolMessage>::value,
+                        const_true);
+  GTEST_COMPILE_ASSERT_(!IsAProtocolMessage<int>::value, const_false);
+}
+
+// Tests that IsAProtocolMessage<T>::value is true when T is
+// proto2::Message or a sub-class of it.
+TEST(IsAProtocolMessageTest, ValueIsTrueWhenTypeIsAProtocolMessage) {
+  EXPECT_TRUE(IsAProtocolMessage< ::proto2::Message>::value);
+  EXPECT_TRUE(IsAProtocolMessage<ProtocolMessage>::value);
+}
+
+// Tests that IsAProtocolMessage<T>::value is false when T is neither
+// ProtocolMessage nor a sub-class of it.
+TEST(IsAProtocolMessageTest, ValueIsFalseWhenTypeIsNotAProtocolMessage) {
+  EXPECT_FALSE(IsAProtocolMessage<int>::value);
+  EXPECT_FALSE(IsAProtocolMessage<const ConversionHelperBase>::value);
+}
+
+// Tests that CompileAssertTypesEqual compiles when the type arguments are
+// equal.
+TEST(CompileAssertTypesEqual, CompilesWhenTypesAreEqual) {
+  CompileAssertTypesEqual<void, void>();
+  CompileAssertTypesEqual<int*, int*>();
+}
+
+// Tests that RemoveReference does not affect non-reference types.
+TEST(RemoveReferenceTest, DoesNotAffectNonReferenceType) {
+  CompileAssertTypesEqual<int, RemoveReference<int>::type>();
+  CompileAssertTypesEqual<const char, RemoveReference<const char>::type>();
+}
+
+// Tests that RemoveReference removes reference from reference types.
+TEST(RemoveReferenceTest, RemovesReference) {
+  CompileAssertTypesEqual<int, RemoveReference<int&>::type>();
+  CompileAssertTypesEqual<const char, RemoveReference<const char&>::type>();
+}
+
+// Tests GTEST_REMOVE_REFERENCE_.
+
+template <typename T1, typename T2>
+void TestGTestRemoveReference() {
+  CompileAssertTypesEqual<T1, GTEST_REMOVE_REFERENCE_(T2)>();
+}
+
+TEST(RemoveReferenceTest, MacroVersion) {
+  TestGTestRemoveReference<int, int>();
+  TestGTestRemoveReference<const char, const char&>();
+}
+
+
+// Tests that RemoveConst does not affect non-const types.
+TEST(RemoveConstTest, DoesNotAffectNonConstType) {
+  CompileAssertTypesEqual<int, RemoveConst<int>::type>();
+  CompileAssertTypesEqual<char&, RemoveConst<char&>::type>();
+}
+
+// Tests that RemoveConst removes const from const types.
+TEST(RemoveConstTest, RemovesConst) {
+  CompileAssertTypesEqual<int, RemoveConst<const int>::type>();
+  CompileAssertTypesEqual<char[2], RemoveConst<const char[2]>::type>();
+  CompileAssertTypesEqual<char[2][3], RemoveConst<const char[2][3]>::type>();
+}
+
+// Tests GTEST_REMOVE_CONST_.
+
+template <typename T1, typename T2>
+void TestGTestRemoveConst() {
+  CompileAssertTypesEqual<T1, GTEST_REMOVE_CONST_(T2)>();
+}
+
+TEST(RemoveConstTest, MacroVersion) {
+  TestGTestRemoveConst<int, int>();
+  TestGTestRemoveConst<double&, double&>();
+  TestGTestRemoveConst<char, const char>();
+}
+
+// Tests GTEST_REMOVE_REFERENCE_AND_CONST_.
+
+template <typename T1, typename T2>
+void TestGTestRemoveReferenceAndConst() {
+  CompileAssertTypesEqual<T1, GTEST_REMOVE_REFERENCE_AND_CONST_(T2)>();
+}
+
+TEST(RemoveReferenceToConstTest, Works) {
+  TestGTestRemoveReferenceAndConst<int, int>();
+  TestGTestRemoveReferenceAndConst<double, double&>();
+  TestGTestRemoveReferenceAndConst<char, const char>();
+  TestGTestRemoveReferenceAndConst<char, const char&>();
+  TestGTestRemoveReferenceAndConst<const char*, const char*>();
+}
+
+// Tests that AddReference does not affect reference types.
+TEST(AddReferenceTest, DoesNotAffectReferenceType) {
+  CompileAssertTypesEqual<int&, AddReference<int&>::type>();
+  CompileAssertTypesEqual<const char&, AddReference<const char&>::type>();
+}
+
+// Tests that AddReference adds reference to non-reference types.
+TEST(AddReferenceTest, AddsReference) {
+  CompileAssertTypesEqual<int&, AddReference<int>::type>();
+  CompileAssertTypesEqual<const char&, AddReference<const char>::type>();
+}
+
+// Tests GTEST_ADD_REFERENCE_.
+
+template <typename T1, typename T2>
+void TestGTestAddReference() {
+  CompileAssertTypesEqual<T1, GTEST_ADD_REFERENCE_(T2)>();
+}
+
+TEST(AddReferenceTest, MacroVersion) {
+  TestGTestAddReference<int&, int>();
+  TestGTestAddReference<const char&, const char&>();
+}
+
+// Tests GTEST_REFERENCE_TO_CONST_.
+
+template <typename T1, typename T2>
+void TestGTestReferenceToConst() {
+  CompileAssertTypesEqual<T1, GTEST_REFERENCE_TO_CONST_(T2)>();
+}
+
+TEST(GTestReferenceToConstTest, Works) {
+  TestGTestReferenceToConst<const char&, char>();
+  TestGTestReferenceToConst<const int&, const int>();
+  TestGTestReferenceToConst<const double&, double>();
+  TestGTestReferenceToConst<const String&, const String&>();
+}
+
+// Tests that ImplicitlyConvertible<T1, T2>::value is a compile-time constant.
+TEST(ImplicitlyConvertibleTest, ValueIsCompileTimeConstant) {
+  GTEST_COMPILE_ASSERT_((ImplicitlyConvertible<int, int>::value), const_true);
+  GTEST_COMPILE_ASSERT_((!ImplicitlyConvertible<void*, int*>::value),
+                        const_false);
+}
+
+// Tests that ImplicitlyConvertible<T1, T2>::value is true when T1 can
+// be implicitly converted to T2.
+TEST(ImplicitlyConvertibleTest, ValueIsTrueWhenConvertible) {
+  EXPECT_TRUE((ImplicitlyConvertible<int, double>::value));
+  EXPECT_TRUE((ImplicitlyConvertible<double, int>::value));
+  EXPECT_TRUE((ImplicitlyConvertible<int*, void*>::value));
+  EXPECT_TRUE((ImplicitlyConvertible<int*, const int*>::value));
+  EXPECT_TRUE((ImplicitlyConvertible<ConversionHelperDerived&,
+                                     const ConversionHelperBase&>::value));
+  EXPECT_TRUE((ImplicitlyConvertible<const ConversionHelperBase,
+                                     ConversionHelperBase>::value));
+}
+
+// Tests that ImplicitlyConvertible<T1, T2>::value is false when T1
+// cannot be implicitly converted to T2.
+TEST(ImplicitlyConvertibleTest, ValueIsFalseWhenNotConvertible) {
+  EXPECT_FALSE((ImplicitlyConvertible<double, int*>::value));
+  EXPECT_FALSE((ImplicitlyConvertible<void*, int*>::value));
+  EXPECT_FALSE((ImplicitlyConvertible<const int*, int*>::value));
+  EXPECT_FALSE((ImplicitlyConvertible<ConversionHelperBase&,
+                                      ConversionHelperDerived&>::value));
+}
+
+// Tests IsContainerTest.
+
+class NonContainer {};
+
+TEST(IsContainerTestTest, WorksForNonContainer) {
+  EXPECT_EQ(sizeof(IsNotContainer), sizeof(IsContainerTest<int>(0)));
+  EXPECT_EQ(sizeof(IsNotContainer), sizeof(IsContainerTest<char[5]>(0)));
+  EXPECT_EQ(sizeof(IsNotContainer), sizeof(IsContainerTest<NonContainer>(0)));
+}
+
+TEST(IsContainerTestTest, WorksForContainer) {
+  EXPECT_EQ(sizeof(IsContainer),
+            sizeof(IsContainerTest<std::vector<bool> >(0)));
+  EXPECT_EQ(sizeof(IsContainer),
+            sizeof(IsContainerTest<std::map<int, double> >(0)));
+}
+
+// Tests ArrayEq().
+
+TEST(ArrayEqTest, WorksForDegeneratedArrays) {
+  EXPECT_TRUE(ArrayEq(5, 5L));
+  EXPECT_FALSE(ArrayEq('a', 0));
+}
+
+TEST(ArrayEqTest, WorksForOneDimensionalArrays) {
+  // Note that a and b are distinct but compatible types.
+  const int a[] = { 0, 1 };
+  long b[] = { 0, 1 };
+  EXPECT_TRUE(ArrayEq(a, b));
+  EXPECT_TRUE(ArrayEq(a, 2, b));
+
+  b[0] = 2;
+  EXPECT_FALSE(ArrayEq(a, b));
+  EXPECT_FALSE(ArrayEq(a, 1, b));
+}
+
+TEST(ArrayEqTest, WorksForTwoDimensionalArrays) {
+  const char a[][3] = { "hi", "lo" };
+  const char b[][3] = { "hi", "lo" };
+  const char c[][3] = { "hi", "li" };
+
+  EXPECT_TRUE(ArrayEq(a, b));
+  EXPECT_TRUE(ArrayEq(a, 2, b));
+
+  EXPECT_FALSE(ArrayEq(a, c));
+  EXPECT_FALSE(ArrayEq(a, 2, c));
+}
+
+// Tests ArrayAwareFind().
+
+TEST(ArrayAwareFindTest, WorksForOneDimensionalArray) {
+  const char a[] = "hello";
+  EXPECT_EQ(a + 4, ArrayAwareFind(a, a + 5, 'o'));
+  EXPECT_EQ(a + 5, ArrayAwareFind(a, a + 5, 'x'));
+}
+
+TEST(ArrayAwareFindTest, WorksForTwoDimensionalArray) {
+  int a[][2] = { { 0, 1 }, { 2, 3 }, { 4, 5 } };
+  const int b[2] = { 2, 3 };
+  EXPECT_EQ(a + 1, ArrayAwareFind(a, a + 3, b));
+
+  const int c[2] = { 6, 7 };
+  EXPECT_EQ(a + 3, ArrayAwareFind(a, a + 3, c));
+}
+
+// Tests CopyArray().
+
+TEST(CopyArrayTest, WorksForDegeneratedArrays) {
+  int n = 0;
+  CopyArray('a', &n);
+  EXPECT_EQ('a', n);
+}
+
+TEST(CopyArrayTest, WorksForOneDimensionalArrays) {
+  const char a[3] = "hi";
+  int b[3];
+#ifndef __BORLANDC__  // C++Builder cannot compile some array size deductions.
+  CopyArray(a, &b);
+  EXPECT_TRUE(ArrayEq(a, b));
+#endif
+
+  int c[3];
+  CopyArray(a, 3, c);
+  EXPECT_TRUE(ArrayEq(a, c));
+}
+
+TEST(CopyArrayTest, WorksForTwoDimensionalArrays) {
+  const int a[2][3] = { { 0, 1, 2 }, { 3, 4, 5 } };
+  int b[2][3];
+#ifndef __BORLANDC__  // C++Builder cannot compile some array size deductions.
+  CopyArray(a, &b);
+  EXPECT_TRUE(ArrayEq(a, b));
+#endif
+
+  int c[2][3];
+  CopyArray(a, 2, c);
+  EXPECT_TRUE(ArrayEq(a, c));
+}
+
+// Tests NativeArray.
+
+TEST(NativeArrayTest, ConstructorFromArrayWorks) {
+  const int a[3] = { 0, 1, 2 };
+  NativeArray<int> na(a, 3, kReference);
+  EXPECT_EQ(3U, na.size());
+  EXPECT_EQ(a, na.begin());
+}
+
+TEST(NativeArrayTest, CreatesAndDeletesCopyOfArrayWhenAskedTo) {
+  typedef int Array[2];
+  Array* a = new Array[1];
+  (*a)[0] = 0;
+  (*a)[1] = 1;
+  NativeArray<int> na(*a, 2, kCopy);
+  EXPECT_NE(*a, na.begin());
+  delete[] a;
+  EXPECT_EQ(0, na.begin()[0]);
+  EXPECT_EQ(1, na.begin()[1]);
+
+  // We rely on the heap checker to verify that na deletes the copy of
+  // array.
+}
+
+TEST(NativeArrayTest, TypeMembersAreCorrect) {
+  StaticAssertTypeEq<char, NativeArray<char>::value_type>();
+  StaticAssertTypeEq<int[2], NativeArray<int[2]>::value_type>();
+
+  StaticAssertTypeEq<const char*, NativeArray<char>::const_iterator>();
+  StaticAssertTypeEq<const bool(*)[2], NativeArray<bool[2]>::const_iterator>();
+}
+
+TEST(NativeArrayTest, MethodsWork) {
+  const int a[3] = { 0, 1, 2 };
+  NativeArray<int> na(a, 3, kCopy);
+  ASSERT_EQ(3U, na.size());
+  EXPECT_EQ(3, na.end() - na.begin());
+
+  NativeArray<int>::const_iterator it = na.begin();
+  EXPECT_EQ(0, *it);
+  ++it;
+  EXPECT_EQ(1, *it);
+  it++;
+  EXPECT_EQ(2, *it);
+  ++it;
+  EXPECT_EQ(na.end(), it);
+
+  EXPECT_TRUE(na == na);
+
+  NativeArray<int> na2(a, 3, kReference);
+  EXPECT_TRUE(na == na2);
+
+  const int b1[3] = { 0, 1, 1 };
+  const int b2[4] = { 0, 1, 2, 3 };
+  EXPECT_FALSE(na == NativeArray<int>(b1, 3, kReference));
+  EXPECT_FALSE(na == NativeArray<int>(b2, 4, kCopy));
+}
+
+TEST(NativeArrayTest, WorksForTwoDimensionalArray) {
+  const char a[2][3] = { "hi", "lo" };
+  NativeArray<char[3]> na(a, 2, kReference);
+  ASSERT_EQ(2U, na.size());
+  EXPECT_EQ(a, na.begin());
+}
+
+// Tests SkipPrefix().
+
+TEST(SkipPrefixTest, SkipsWhenPrefixMatches) {
+  const char* const str = "hello";
+
+  const char* p = str;
+  EXPECT_TRUE(SkipPrefix("", &p));
+  EXPECT_EQ(str, p);
+
+  p = str;
+  EXPECT_TRUE(SkipPrefix("hell", &p));
+  EXPECT_EQ(str + 4, p);
+}
+
+TEST(SkipPrefixTest, DoesNotSkipWhenPrefixDoesNotMatch) {
+  const char* const str = "world";
+
+  const char* p = str;
+  EXPECT_FALSE(SkipPrefix("W", &p));
+  EXPECT_EQ(str, p);
+
+  p = str;
+  EXPECT_FALSE(SkipPrefix("world!", &p));
+  EXPECT_EQ(str, p);
+}
diff --git a/google-breakpad/src/testing/gtest/test/gtest_xml_outfile1_test_.cc b/google-breakpad/src/testing/gtest/test/gtest_xml_outfile1_test_.cc
new file mode 100644
index 0000000..531ced4
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest_xml_outfile1_test_.cc
@@ -0,0 +1,49 @@
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: keith.ray@gmail.com (Keith Ray)
+//
+// gtest_xml_outfile1_test_ writes some xml via TestProperty used by
+// gtest_xml_outfiles_test.py
+
+#include "gtest/gtest.h"
+
+class PropertyOne : public testing::Test {
+ protected:
+  virtual void SetUp() {
+    RecordProperty("SetUpProp", 1);
+  }
+  virtual void TearDown() {
+    RecordProperty("TearDownProp", 1);
+  }
+};
+
+TEST_F(PropertyOne, TestSomeProperties) {
+  RecordProperty("TestSomeProperty", 1);
+}
diff --git a/google-breakpad/src/testing/gtest/test/gtest_xml_outfile2_test_.cc b/google-breakpad/src/testing/gtest/test/gtest_xml_outfile2_test_.cc
new file mode 100644
index 0000000..7b400b2
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest_xml_outfile2_test_.cc
@@ -0,0 +1,49 @@
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: keith.ray@gmail.com (Keith Ray)
+//
+// gtest_xml_outfile2_test_ writes some xml via TestProperty used by
+// gtest_xml_outfiles_test.py
+
+#include "gtest/gtest.h"
+
+class PropertyTwo : public testing::Test {
+ protected:
+  virtual void SetUp() {
+    RecordProperty("SetUpProp", 2);
+  }
+  virtual void TearDown() {
+    RecordProperty("TearDownProp", 2);
+  }
+};
+
+TEST_F(PropertyTwo, TestSomeProperties) {
+  RecordProperty("TestSomeProperty", 2);
+}
diff --git a/google-breakpad/src/testing/gtest/test/gtest_xml_outfiles_test.py b/google-breakpad/src/testing/gtest/test/gtest_xml_outfiles_test.py
new file mode 100755
index 0000000..524e437
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest_xml_outfiles_test.py
@@ -0,0 +1,132 @@
+#!/usr/bin/env python
+#
+# Copyright 2008, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+"""Unit test for the gtest_xml_output module."""
+
+__author__ = "keith.ray@gmail.com (Keith Ray)"
+
+import os
+from xml.dom import minidom, Node
+
+import gtest_test_utils
+import gtest_xml_test_utils
+
+
+GTEST_OUTPUT_SUBDIR = "xml_outfiles"
+GTEST_OUTPUT_1_TEST = "gtest_xml_outfile1_test_"
+GTEST_OUTPUT_2_TEST = "gtest_xml_outfile2_test_"
+
+EXPECTED_XML_1 = """<?xml version="1.0" encoding="UTF-8"?>
+<testsuites tests="1" failures="0" disabled="0" errors="0" time="*" timestamp="*" name="AllTests">
+  <testsuite name="PropertyOne" tests="1" failures="0" disabled="0" errors="0" time="*">
+    <testcase name="TestSomeProperties" status="run" time="*" classname="PropertyOne" SetUpProp="1" TestSomeProperty="1" TearDownProp="1" />
+  </testsuite>
+</testsuites>
+"""
+
+EXPECTED_XML_2 = """<?xml version="1.0" encoding="UTF-8"?>
+<testsuites tests="1" failures="0" disabled="0" errors="0" time="*" timestamp="*" name="AllTests">
+  <testsuite name="PropertyTwo" tests="1" failures="0" disabled="0" errors="0" time="*">
+    <testcase name="TestSomeProperties" status="run" time="*" classname="PropertyTwo" SetUpProp="2" TestSomeProperty="2" TearDownProp="2" />
+  </testsuite>
+</testsuites>
+"""
+
+
+class GTestXMLOutFilesTest(gtest_xml_test_utils.GTestXMLTestCase):
+  """Unit test for Google Test's XML output functionality."""
+
+  def setUp(self):
+    # We want the trailing '/' that the last "" provides in os.path.join, for
+    # telling Google Test to create an output directory instead of a single file
+    # for xml output.
+    self.output_dir_ = os.path.join(gtest_test_utils.GetTempDir(),
+                                    GTEST_OUTPUT_SUBDIR, "")
+    self.DeleteFilesAndDir()
+
+  def tearDown(self):
+    self.DeleteFilesAndDir()
+
+  def DeleteFilesAndDir(self):
+    try:
+      os.remove(os.path.join(self.output_dir_, GTEST_OUTPUT_1_TEST + ".xml"))
+    except os.error:
+      pass
+    try:
+      os.remove(os.path.join(self.output_dir_, GTEST_OUTPUT_2_TEST + ".xml"))
+    except os.error:
+      pass
+    try:
+      os.rmdir(self.output_dir_)
+    except os.error:
+      pass
+
+  def testOutfile1(self):
+    self._TestOutFile(GTEST_OUTPUT_1_TEST, EXPECTED_XML_1)
+
+  def testOutfile2(self):
+    self._TestOutFile(GTEST_OUTPUT_2_TEST, EXPECTED_XML_2)
+
+  def _TestOutFile(self, test_name, expected_xml):
+    gtest_prog_path = gtest_test_utils.GetTestExecutablePath(test_name)
+    command = [gtest_prog_path, "--gtest_output=xml:%s" % self.output_dir_]
+    p = gtest_test_utils.Subprocess(command,
+                                    working_dir=gtest_test_utils.GetTempDir())
+    self.assert_(p.exited)
+    self.assertEquals(0, p.exit_code)
+
+    # TODO(wan@google.com): libtool causes the built test binary to be
+    #   named lt-gtest_xml_outfiles_test_ instead of
+    #   gtest_xml_outfiles_test_.  To account for this possibillity, we
+    #   allow both names in the following code.  We should remove this
+    #   hack when Chandler Carruth's libtool replacement tool is ready.
+    output_file_name1 = test_name + ".xml"
+    output_file1 = os.path.join(self.output_dir_, output_file_name1)
+    output_file_name2 = 'lt-' + output_file_name1
+    output_file2 = os.path.join(self.output_dir_, output_file_name2)
+    self.assert_(os.path.isfile(output_file1) or os.path.isfile(output_file2),
+                 output_file1)
+
+    expected = minidom.parseString(expected_xml)
+    if os.path.isfile(output_file1):
+      actual = minidom.parse(output_file1)
+    else:
+      actual = minidom.parse(output_file2)
+    self.NormalizeXml(actual.documentElement)
+    self.AssertEquivalentNodes(expected.documentElement,
+                               actual.documentElement)
+    expected.unlink()
+    actual.unlink()
+
+
+if __name__ == "__main__":
+  os.environ["GTEST_STACK_TRACE_DEPTH"] = "0"
+  gtest_test_utils.Main()
diff --git a/google-breakpad/src/testing/gtest/test/gtest_xml_output_unittest.py b/google-breakpad/src/testing/gtest/test/gtest_xml_output_unittest.py
new file mode 100755
index 0000000..1bcd418
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest_xml_output_unittest.py
@@ -0,0 +1,284 @@
+#!/usr/bin/env python
+#
+# Copyright 2006, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+"""Unit test for the gtest_xml_output module"""
+
+__author__ = 'eefacm@gmail.com (Sean Mcafee)'
+
+import datetime
+import errno
+import os
+import re
+import sys
+from xml.dom import minidom, Node
+
+import gtest_test_utils
+import gtest_xml_test_utils
+
+
+GTEST_LIST_TESTS_FLAG = '--gtest_list_tests'
+GTEST_OUTPUT_FLAG         = "--gtest_output"
+GTEST_DEFAULT_OUTPUT_FILE = "test_detail.xml"
+GTEST_PROGRAM_NAME = "gtest_xml_output_unittest_"
+
+SUPPORTS_STACK_TRACES = False
+
+if SUPPORTS_STACK_TRACES:
+  STACK_TRACE_TEMPLATE = '\nStack trace:\n*'
+else:
+  STACK_TRACE_TEMPLATE = ''
+
+EXPECTED_NON_EMPTY_XML = """<?xml version="1.0" encoding="UTF-8"?>
+<testsuites tests="23" failures="4" disabled="2" errors="0" time="*" timestamp="*" name="AllTests">
+  <testsuite name="SuccessfulTest" tests="1" failures="0" disabled="0" errors="0" time="*">
+    <testcase name="Succeeds" status="run" time="*" classname="SuccessfulTest"/>
+  </testsuite>
+  <testsuite name="FailedTest" tests="1" failures="1" disabled="0" errors="0" time="*">
+    <testcase name="Fails" status="run" time="*" classname="FailedTest">
+      <failure message="gtest_xml_output_unittest_.cc:*&#x0A;Value of: 2&#x0A;Expected: 1" type=""><![CDATA[gtest_xml_output_unittest_.cc:*
+Value of: 2
+Expected: 1%(stack)s]]></failure>
+    </testcase>
+  </testsuite>
+  <testsuite name="MixedResultTest" tests="3" failures="1" disabled="1" errors="0" time="*">
+    <testcase name="Succeeds" status="run" time="*" classname="MixedResultTest"/>
+    <testcase name="Fails" status="run" time="*" classname="MixedResultTest">
+      <failure message="gtest_xml_output_unittest_.cc:*&#x0A;Value of: 2&#x0A;Expected: 1" type=""><![CDATA[gtest_xml_output_unittest_.cc:*
+Value of: 2
+Expected: 1%(stack)s]]></failure>
+      <failure message="gtest_xml_output_unittest_.cc:*&#x0A;Value of: 3&#x0A;Expected: 2" type=""><![CDATA[gtest_xml_output_unittest_.cc:*
+Value of: 3
+Expected: 2%(stack)s]]></failure>
+    </testcase>
+    <testcase name="DISABLED_test" status="notrun" time="*" classname="MixedResultTest"/>
+  </testsuite>
+  <testsuite name="XmlQuotingTest" tests="1" failures="1" disabled="0" errors="0" time="*">
+    <testcase name="OutputsCData" status="run" time="*" classname="XmlQuotingTest">
+      <failure message="gtest_xml_output_unittest_.cc:*&#x0A;Failed&#x0A;XML output: &lt;?xml encoding=&quot;utf-8&quot;&gt;&lt;top&gt;&lt;![CDATA[cdata text]]&gt;&lt;/top&gt;" type=""><![CDATA[gtest_xml_output_unittest_.cc:*
+Failed
+XML output: <?xml encoding="utf-8"><top><![CDATA[cdata text]]>]]&gt;<![CDATA[</top>%(stack)s]]></failure>
+    </testcase>
+  </testsuite>
+  <testsuite name="InvalidCharactersTest" tests="1" failures="1" disabled="0" errors="0" time="*">
+    <testcase name="InvalidCharactersInMessage" status="run" time="*" classname="InvalidCharactersTest">
+      <failure message="gtest_xml_output_unittest_.cc:*&#x0A;Failed&#x0A;Invalid characters in brackets []" type=""><![CDATA[gtest_xml_output_unittest_.cc:*
+Failed
+Invalid characters in brackets []%(stack)s]]></failure>
+    </testcase>
+  </testsuite>
+  <testsuite name="DisabledTest" tests="1" failures="0" disabled="1" errors="0" time="*">
+    <testcase name="DISABLED_test_not_run" status="notrun" time="*" classname="DisabledTest"/>
+  </testsuite>
+  <testsuite name="PropertyRecordingTest" tests="4" failures="0" disabled="0" errors="0" time="*">
+    <testcase name="OneProperty" status="run" time="*" classname="PropertyRecordingTest" key_1="1"/>
+    <testcase name="IntValuedProperty" status="run" time="*" classname="PropertyRecordingTest" key_int="1"/>
+    <testcase name="ThreeProperties" status="run" time="*" classname="PropertyRecordingTest" key_1="1" key_2="2" key_3="3"/>
+    <testcase name="TwoValuesForOneKeyUsesLastValue" status="run" time="*" classname="PropertyRecordingTest" key_1="2"/>
+  </testsuite>
+  <testsuite name="NoFixtureTest" tests="3" failures="0" disabled="0" errors="0" time="*">
+     <testcase name="RecordProperty" status="run" time="*" classname="NoFixtureTest" key="1"/>
+     <testcase name="ExternalUtilityThatCallsRecordIntValuedProperty" status="run" time="*" classname="NoFixtureTest" key_for_utility_int="1"/>
+     <testcase name="ExternalUtilityThatCallsRecordStringValuedProperty" status="run" time="*" classname="NoFixtureTest" key_for_utility_string="1"/>
+  </testsuite>
+  <testsuite name="Single/ValueParamTest" tests="4" failures="0" disabled="0" errors="0" time="*">
+    <testcase name="HasValueParamAttribute/0" value_param="33" status="run" time="*" classname="Single/ValueParamTest" />
+    <testcase name="HasValueParamAttribute/1" value_param="42" status="run" time="*" classname="Single/ValueParamTest" />
+    <testcase name="AnotherTestThatHasValueParamAttribute/0" value_param="33" status="run" time="*" classname="Single/ValueParamTest" />
+    <testcase name="AnotherTestThatHasValueParamAttribute/1" value_param="42" status="run" time="*" classname="Single/ValueParamTest" />
+  </testsuite>
+  <testsuite name="TypedTest/0" tests="1" failures="0" disabled="0" errors="0" time="*">
+    <testcase name="HasTypeParamAttribute" type_param="*" status="run" time="*" classname="TypedTest/0" />
+  </testsuite>
+  <testsuite name="TypedTest/1" tests="1" failures="0" disabled="0" errors="0" time="*">
+    <testcase name="HasTypeParamAttribute" type_param="*" status="run" time="*" classname="TypedTest/1" />
+  </testsuite>
+  <testsuite name="Single/TypeParameterizedTestCase/0" tests="1" failures="0" disabled="0" errors="0" time="*">
+    <testcase name="HasTypeParamAttribute" type_param="*" status="run" time="*" classname="Single/TypeParameterizedTestCase/0" />
+  </testsuite>
+  <testsuite name="Single/TypeParameterizedTestCase/1" tests="1" failures="0" disabled="0" errors="0" time="*">
+    <testcase name="HasTypeParamAttribute" type_param="*" status="run" time="*" classname="Single/TypeParameterizedTestCase/1" />
+  </testsuite>
+</testsuites>""" % {'stack': STACK_TRACE_TEMPLATE}
+
+
+EXPECTED_EMPTY_XML = """<?xml version="1.0" encoding="UTF-8"?>
+<testsuites tests="0" failures="0" disabled="0" errors="0" time="*" timestamp="*" name="AllTests">
+</testsuites>"""
+
+GTEST_PROGRAM_PATH = gtest_test_utils.GetTestExecutablePath(GTEST_PROGRAM_NAME)
+
+SUPPORTS_TYPED_TESTS = 'TypedTest' in gtest_test_utils.Subprocess(
+    [GTEST_PROGRAM_PATH, GTEST_LIST_TESTS_FLAG], capture_stderr=False).output
+
+
+class GTestXMLOutputUnitTest(gtest_xml_test_utils.GTestXMLTestCase):
+  """
+  Unit test for Google Test's XML output functionality.
+  """
+
+  # This test currently breaks on platforms that do not support typed and
+  # type-parameterized tests, so we don't run it under them.
+  if SUPPORTS_TYPED_TESTS:
+    def testNonEmptyXmlOutput(self):
+      """
+      Runs a test program that generates a non-empty XML output, and
+      tests that the XML output is expected.
+      """
+      self._TestXmlOutput(GTEST_PROGRAM_NAME, EXPECTED_NON_EMPTY_XML, 1)
+
+  def testEmptyXmlOutput(self):
+    """Verifies XML output for a Google Test binary without actual tests.
+
+    Runs a test program that generates an empty XML output, and
+    tests that the XML output is expected.
+    """
+
+    self._TestXmlOutput('gtest_no_test_unittest', EXPECTED_EMPTY_XML, 0)
+
+  def testTimestampValue(self):
+    """Checks whether the timestamp attribute in the XML output is valid.
+
+    Runs a test program that generates an empty XML output, and checks if
+    the timestamp attribute in the testsuites tag is valid.
+    """
+    actual = self._GetXmlOutput('gtest_no_test_unittest', 0)
+    date_time_str = actual.documentElement.getAttributeNode('timestamp').value
+    # datetime.strptime() is only available in Python 2.5+ so we have to
+    # parse the expected datetime manually.
+    match = re.match(r'(\d+)-(\d\d)-(\d\d)T(\d\d):(\d\d):(\d\d)', date_time_str)
+    self.assertTrue(
+        re.match,
+        'XML datettime string %s has incorrect format' % date_time_str)
+    date_time_from_xml = datetime.datetime(
+        year=int(match.group(1)), month=int(match.group(2)),
+        day=int(match.group(3)), hour=int(match.group(4)),
+        minute=int(match.group(5)), second=int(match.group(6)))
+
+    time_delta = abs(datetime.datetime.now() - date_time_from_xml)
+    # timestamp value should be near the current local time
+    self.assertTrue(time_delta < datetime.timedelta(seconds=600),
+                    'time_delta is %s' % time_delta)
+    actual.unlink()
+
+  def testDefaultOutputFile(self):
+    """
+    Confirms that Google Test produces an XML output file with the expected
+    default name if no name is explicitly specified.
+    """
+    output_file = os.path.join(gtest_test_utils.GetTempDir(),
+                               GTEST_DEFAULT_OUTPUT_FILE)
+    gtest_prog_path = gtest_test_utils.GetTestExecutablePath(
+        'gtest_no_test_unittest')
+    try:
+      os.remove(output_file)
+    except OSError, e:
+      if e.errno != errno.ENOENT:
+        raise
+
+    p = gtest_test_utils.Subprocess(
+        [gtest_prog_path, '%s=xml' % GTEST_OUTPUT_FLAG],
+        working_dir=gtest_test_utils.GetTempDir())
+    self.assert_(p.exited)
+    self.assertEquals(0, p.exit_code)
+    self.assert_(os.path.isfile(output_file))
+
+  def testSuppressedXmlOutput(self):
+    """
+    Tests that no XML file is generated if the default XML listener is
+    shut down before RUN_ALL_TESTS is invoked.
+    """
+
+    xml_path = os.path.join(gtest_test_utils.GetTempDir(),
+                            GTEST_PROGRAM_NAME + 'out.xml')
+    if os.path.isfile(xml_path):
+      os.remove(xml_path)
+
+    command = [GTEST_PROGRAM_PATH,
+               '%s=xml:%s' % (GTEST_OUTPUT_FLAG, xml_path),
+               '--shut_down_xml']
+    p = gtest_test_utils.Subprocess(command)
+    if p.terminated_by_signal:
+      # p.signal is avalable only if p.terminated_by_signal is True.
+      self.assertFalse(
+          p.terminated_by_signal,
+          '%s was killed by signal %d' % (GTEST_PROGRAM_NAME, p.signal))
+    else:
+      self.assert_(p.exited)
+      self.assertEquals(1, p.exit_code,
+                        "'%s' exited with code %s, which doesn't match "
+                        'the expected exit code %s.'
+                        % (command, p.exit_code, 1))
+
+    self.assert_(not os.path.isfile(xml_path))
+
+  def _GetXmlOutput(self, gtest_prog_name, expected_exit_code):
+    """
+    Returns the xml output generated by running the program gtest_prog_name.
+    Furthermore, the program's exit code must be expected_exit_code.
+    """
+    xml_path = os.path.join(gtest_test_utils.GetTempDir(),
+                            gtest_prog_name + 'out.xml')
+    gtest_prog_path = gtest_test_utils.GetTestExecutablePath(gtest_prog_name)
+
+    command = [gtest_prog_path, '%s=xml:%s' % (GTEST_OUTPUT_FLAG, xml_path)]
+    p = gtest_test_utils.Subprocess(command)
+    if p.terminated_by_signal:
+      self.assert_(False,
+                   '%s was killed by signal %d' % (gtest_prog_name, p.signal))
+    else:
+      self.assert_(p.exited)
+      self.assertEquals(expected_exit_code, p.exit_code,
+                        "'%s' exited with code %s, which doesn't match "
+                        'the expected exit code %s.'
+                        % (command, p.exit_code, expected_exit_code))
+    actual = minidom.parse(xml_path)
+    return actual
+
+  def _TestXmlOutput(self, gtest_prog_name, expected_xml, expected_exit_code):
+    """
+    Asserts that the XML document generated by running the program
+    gtest_prog_name matches expected_xml, a string containing another
+    XML document.  Furthermore, the program's exit code must be
+    expected_exit_code.
+    """
+
+    actual = self._GetXmlOutput(gtest_prog_name, expected_exit_code)
+    expected = minidom.parseString(expected_xml)
+    self.NormalizeXml(actual.documentElement)
+    self.AssertEquivalentNodes(expected.documentElement,
+                               actual.documentElement)
+    expected.unlink()
+    actual.unlink()
+
+
+if __name__ == '__main__':
+  os.environ['GTEST_STACK_TRACE_DEPTH'] = '1'
+  gtest_test_utils.Main()
diff --git a/google-breakpad/src/testing/gtest/test/gtest_xml_output_unittest_.cc b/google-breakpad/src/testing/gtest/test/gtest_xml_output_unittest_.cc
new file mode 100644
index 0000000..bf0c871
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest_xml_output_unittest_.cc
@@ -0,0 +1,177 @@
+// Copyright 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Author: eefacm@gmail.com (Sean Mcafee)
+
+// Unit test for Google Test XML output.
+//
+// A user can specify XML output in a Google Test program to run via
+// either the GTEST_OUTPUT environment variable or the --gtest_output
+// flag.  This is used for testing such functionality.
+//
+// This program will be invoked from a Python unit test.  Don't run it
+// directly.
+
+#include "gtest/gtest.h"
+
+using ::testing::InitGoogleTest;
+using ::testing::TestEventListeners;
+using ::testing::TestWithParam;
+using ::testing::UnitTest;
+using ::testing::Test;
+using ::testing::Values;
+
+class SuccessfulTest : public Test {
+};
+
+TEST_F(SuccessfulTest, Succeeds) {
+  SUCCEED() << "This is a success.";
+  ASSERT_EQ(1, 1);
+}
+
+class FailedTest : public Test {
+};
+
+TEST_F(FailedTest, Fails) {
+  ASSERT_EQ(1, 2);
+}
+
+class DisabledTest : public Test {
+};
+
+TEST_F(DisabledTest, DISABLED_test_not_run) {
+  FAIL() << "Unexpected failure: Disabled test should not be run";
+}
+
+TEST(MixedResultTest, Succeeds) {
+  EXPECT_EQ(1, 1);
+  ASSERT_EQ(1, 1);
+}
+
+TEST(MixedResultTest, Fails) {
+  EXPECT_EQ(1, 2);
+  ASSERT_EQ(2, 3);
+}
+
+TEST(MixedResultTest, DISABLED_test) {
+  FAIL() << "Unexpected failure: Disabled test should not be run";
+}
+
+TEST(XmlQuotingTest, OutputsCData) {
+  FAIL() << "XML output: "
+            "<?xml encoding=\"utf-8\"><top><![CDATA[cdata text]]></top>";
+}
+
+// Helps to test that invalid characters produced by test code do not make
+// it into the XML file.
+TEST(InvalidCharactersTest, InvalidCharactersInMessage) {
+  FAIL() << "Invalid characters in brackets [\x1\x2]";
+}
+
+class PropertyRecordingTest : public Test {
+};
+
+TEST_F(PropertyRecordingTest, OneProperty) {
+  RecordProperty("key_1", "1");
+}
+
+TEST_F(PropertyRecordingTest, IntValuedProperty) {
+  RecordProperty("key_int", 1);
+}
+
+TEST_F(PropertyRecordingTest, ThreeProperties) {
+  RecordProperty("key_1", "1");
+  RecordProperty("key_2", "2");
+  RecordProperty("key_3", "3");
+}
+
+TEST_F(PropertyRecordingTest, TwoValuesForOneKeyUsesLastValue) {
+  RecordProperty("key_1", "1");
+  RecordProperty("key_1", "2");
+}
+
+TEST(NoFixtureTest, RecordProperty) {
+  RecordProperty("key", "1");
+}
+
+void ExternalUtilityThatCallsRecordProperty(const char* key, int value) {
+  testing::Test::RecordProperty(key, value);
+}
+
+void ExternalUtilityThatCallsRecordProperty(const char* key,
+                                            const char* value) {
+  testing::Test::RecordProperty(key, value);
+}
+
+TEST(NoFixtureTest, ExternalUtilityThatCallsRecordIntValuedProperty) {
+  ExternalUtilityThatCallsRecordProperty("key_for_utility_int", 1);
+}
+
+TEST(NoFixtureTest, ExternalUtilityThatCallsRecordStringValuedProperty) {
+  ExternalUtilityThatCallsRecordProperty("key_for_utility_string", "1");
+}
+
+// Verifies that the test parameter value is output in the 'value_param'
+// XML attribute for value-parameterized tests.
+class ValueParamTest : public TestWithParam<int> {};
+TEST_P(ValueParamTest, HasValueParamAttribute) {}
+TEST_P(ValueParamTest, AnotherTestThatHasValueParamAttribute) {}
+INSTANTIATE_TEST_CASE_P(Single, ValueParamTest, Values(33, 42));
+
+#if GTEST_HAS_TYPED_TEST
+// Verifies that the type parameter name is output in the 'type_param'
+// XML attribute for typed tests.
+template <typename T> class TypedTest : public Test {};
+typedef testing::Types<int, long> TypedTestTypes;
+TYPED_TEST_CASE(TypedTest, TypedTestTypes);
+TYPED_TEST(TypedTest, HasTypeParamAttribute) {}
+#endif
+
+#if GTEST_HAS_TYPED_TEST_P
+// Verifies that the type parameter name is output in the 'type_param'
+// XML attribute for type-parameterized tests.
+template <typename T> class TypeParameterizedTestCase : public Test {};
+TYPED_TEST_CASE_P(TypeParameterizedTestCase);
+TYPED_TEST_P(TypeParameterizedTestCase, HasTypeParamAttribute) {}
+REGISTER_TYPED_TEST_CASE_P(TypeParameterizedTestCase, HasTypeParamAttribute);
+typedef testing::Types<int, long> TypeParameterizedTestCaseTypes;
+INSTANTIATE_TYPED_TEST_CASE_P(Single,
+                              TypeParameterizedTestCase,
+                              TypeParameterizedTestCaseTypes);
+#endif
+
+int main(int argc, char** argv) {
+  InitGoogleTest(&argc, argv);
+
+  if (argc > 1 && strcmp(argv[1], "--shut_down_xml") == 0) {
+    TestEventListeners& listeners = UnitTest::GetInstance()->listeners();
+    delete listeners.Release(listeners.default_xml_generator());
+  }
+  return RUN_ALL_TESTS();
+}
diff --git a/google-breakpad/src/testing/gtest/test/gtest_xml_test_utils.py b/google-breakpad/src/testing/gtest/test/gtest_xml_test_utils.py
new file mode 100755
index 0000000..0e5a108
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/gtest_xml_test_utils.py
@@ -0,0 +1,190 @@
+#!/usr/bin/env python
+#
+# Copyright 2006, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+"""Unit test utilities for gtest_xml_output"""
+
+__author__ = 'eefacm@gmail.com (Sean Mcafee)'
+
+import re
+from xml.dom import minidom, Node
+
+import gtest_test_utils
+
+
+GTEST_OUTPUT_FLAG         = '--gtest_output'
+GTEST_DEFAULT_OUTPUT_FILE = 'test_detail.xml'
+
+class GTestXMLTestCase(gtest_test_utils.TestCase):
+  """
+  Base class for tests of Google Test's XML output functionality.
+  """
+
+
+  def AssertEquivalentNodes(self, expected_node, actual_node):
+    """
+    Asserts that actual_node (a DOM node object) is equivalent to
+    expected_node (another DOM node object), in that either both of
+    them are CDATA nodes and have the same value, or both are DOM
+    elements and actual_node meets all of the following conditions:
+
+    *  It has the same tag name as expected_node.
+    *  It has the same set of attributes as expected_node, each with
+       the same value as the corresponding attribute of expected_node.
+       Exceptions are any attribute named "time", which needs only be
+       convertible to a floating-point number and any attribute named
+       "type_param" which only has to be non-empty.
+    *  It has an equivalent set of child nodes (including elements and
+       CDATA sections) as expected_node.  Note that we ignore the
+       order of the children as they are not guaranteed to be in any
+       particular order.
+    """
+
+    if expected_node.nodeType == Node.CDATA_SECTION_NODE:
+      self.assertEquals(Node.CDATA_SECTION_NODE, actual_node.nodeType)
+      self.assertEquals(expected_node.nodeValue, actual_node.nodeValue)
+      return
+
+    self.assertEquals(Node.ELEMENT_NODE, actual_node.nodeType)
+    self.assertEquals(Node.ELEMENT_NODE, expected_node.nodeType)
+    self.assertEquals(expected_node.tagName, actual_node.tagName)
+
+    expected_attributes = expected_node.attributes
+    actual_attributes   = actual_node  .attributes
+    self.assertEquals(
+        expected_attributes.length, actual_attributes.length,
+        'attribute numbers differ in element ' + actual_node.tagName)
+    for i in range(expected_attributes.length):
+      expected_attr = expected_attributes.item(i)
+      actual_attr   = actual_attributes.get(expected_attr.name)
+      self.assert_(
+          actual_attr is not None,
+          'expected attribute %s not found in element %s' %
+          (expected_attr.name, actual_node.tagName))
+      self.assertEquals(expected_attr.value, actual_attr.value,
+                        ' values of attribute %s in element %s differ' %
+                        (expected_attr.name, actual_node.tagName))
+
+    expected_children = self._GetChildren(expected_node)
+    actual_children = self._GetChildren(actual_node)
+    self.assertEquals(
+        len(expected_children), len(actual_children),
+        'number of child elements differ in element ' + actual_node.tagName)
+    for child_id, child in expected_children.iteritems():
+      self.assert_(child_id in actual_children,
+                   '<%s> is not in <%s> (in element %s)' %
+                   (child_id, actual_children, actual_node.tagName))
+      self.AssertEquivalentNodes(child, actual_children[child_id])
+
+  identifying_attribute = {
+    'testsuites': 'name',
+    'testsuite': 'name',
+    'testcase':  'name',
+    'failure':   'message',
+    }
+
+  def _GetChildren(self, element):
+    """
+    Fetches all of the child nodes of element, a DOM Element object.
+    Returns them as the values of a dictionary keyed by the IDs of the
+    children.  For <testsuites>, <testsuite> and <testcase> elements, the ID
+    is the value of their "name" attribute; for <failure> elements, it is
+    the value of the "message" attribute; CDATA sections and non-whitespace
+    text nodes are concatenated into a single CDATA section with ID
+    "detail".  An exception is raised if any element other than the above
+    four is encountered, if two child elements with the same identifying
+    attributes are encountered, or if any other type of node is encountered.
+    """
+
+    children = {}
+    for child in element.childNodes:
+      if child.nodeType == Node.ELEMENT_NODE:
+        self.assert_(child.tagName in self.identifying_attribute,
+                     'Encountered unknown element <%s>' % child.tagName)
+        childID = child.getAttribute(self.identifying_attribute[child.tagName])
+        self.assert_(childID not in children)
+        children[childID] = child
+      elif child.nodeType in [Node.TEXT_NODE, Node.CDATA_SECTION_NODE]:
+        if 'detail' not in children:
+          if (child.nodeType == Node.CDATA_SECTION_NODE or
+              not child.nodeValue.isspace()):
+            children['detail'] = child.ownerDocument.createCDATASection(
+                child.nodeValue)
+        else:
+          children['detail'].nodeValue += child.nodeValue
+      else:
+        self.fail('Encountered unexpected node type %d' % child.nodeType)
+    return children
+
+  def NormalizeXml(self, element):
+    """
+    Normalizes Google Test's XML output to eliminate references to transient
+    information that may change from run to run.
+
+    *  The "time" attribute of <testsuites>, <testsuite> and <testcase>
+       elements is replaced with a single asterisk, if it contains
+       only digit characters.
+    *  The "timestamp" attribute of <testsuites> elements is replaced with a
+       single asterisk, if it contains a valid ISO8601 datetime value.
+    *  The "type_param" attribute of <testcase> elements is replaced with a
+       single asterisk (if it sn non-empty) as it is the type name returned
+       by the compiler and is platform dependent.
+    *  The line info reported in the first line of the "message"
+       attribute and CDATA section of <failure> elements is replaced with the
+       file's basename and a single asterisk for the line number.
+    *  The directory names in file paths are removed.
+    *  The stack traces are removed.
+    """
+
+    if element.tagName == 'testsuites':
+      timestamp = element.getAttributeNode('timestamp')
+      timestamp.value = re.sub(r'^\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d$',
+                               '*', timestamp.value)
+    if element.tagName in ('testsuites', 'testsuite', 'testcase'):
+      time = element.getAttributeNode('time')
+      time.value = re.sub(r'^\d+(\.\d+)?$', '*', time.value)
+      type_param = element.getAttributeNode('type_param')
+      if type_param and type_param.value:
+        type_param.value = '*'
+    elif element.tagName == 'failure':
+      source_line_pat = r'^.*[/\\](.*:)\d+\n'
+      # Replaces the source line information with a normalized form.
+      message = element.getAttributeNode('message')
+      message.value = re.sub(source_line_pat, '\\1*\n', message.value)
+      for child in element.childNodes:
+        if child.nodeType == Node.CDATA_SECTION_NODE:
+          # Replaces the source line information with a normalized form.
+          cdata = re.sub(source_line_pat, '\\1*\n', child.nodeValue)
+          # Removes the actual stack trace.
+          child.nodeValue = re.sub(r'\nStack trace:\n(.|\n)*',
+                                   '', cdata)
+    for child in element.childNodes:
+      if child.nodeType == Node.ELEMENT_NODE:
+        self.NormalizeXml(child)
diff --git a/google-breakpad/src/testing/gtest/test/production.cc b/google-breakpad/src/testing/gtest/test/production.cc
new file mode 100644
index 0000000..8b8a40b
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/production.cc
@@ -0,0 +1,36 @@
+// Copyright 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+//
+// This is part of the unit test for include/gtest/gtest_prod.h.
+
+#include "production.h"
+
+PrivateCode::PrivateCode() : x_(0) {}
diff --git a/google-breakpad/src/testing/gtest/test/production.h b/google-breakpad/src/testing/gtest/test/production.h
new file mode 100644
index 0000000..98fd5e4
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/test/production.h
@@ -0,0 +1,55 @@
+// Copyright 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+//
+// This is part of the unit test for include/gtest/gtest_prod.h.
+
+#ifndef GTEST_TEST_PRODUCTION_H_
+#define GTEST_TEST_PRODUCTION_H_
+
+#include "gtest/gtest_prod.h"
+
+class PrivateCode {
+ public:
+  // Declares a friend test that does not use a fixture.
+  FRIEND_TEST(PrivateCodeTest, CanAccessPrivateMembers);
+
+  // Declares a friend test that uses a fixture.
+  FRIEND_TEST(PrivateCodeFixtureTest, CanAccessPrivateMembers);
+
+  PrivateCode();
+
+  int x() const { return x_; }
+ private:
+  void set_x(int an_x) { x_ = an_x; }
+  int x_;
+};
+
+#endif  // GTEST_TEST_PRODUCTION_H_
diff --git a/google-breakpad/src/testing/gtest/xcode/Config/DebugProject.xcconfig b/google-breakpad/src/testing/gtest/xcode/Config/DebugProject.xcconfig
new file mode 100644
index 0000000..3d68157
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/xcode/Config/DebugProject.xcconfig
@@ -0,0 +1,30 @@
+//
+//  DebugProject.xcconfig
+//
+//  These are Debug Configuration project settings for the gtest framework and
+//  examples. It is set in the "Based On:" dropdown in the "Project" info
+//  dialog.
+//  This file is based on the Xcode Configuration files in:
+//  http://code.google.com/p/google-toolbox-for-mac/
+// 
+
+#include "General.xcconfig"
+
+// No optimization
+GCC_OPTIMIZATION_LEVEL = 0
+
+// Deployment postprocessing is what triggers Xcode to strip, turn it off
+DEPLOYMENT_POSTPROCESSING = NO
+
+// Dead code stripping off
+DEAD_CODE_STRIPPING = NO
+
+// Debug symbols should be on obviously
+GCC_GENERATE_DEBUGGING_SYMBOLS = YES
+
+// Define the DEBUG macro in all debug builds
+OTHER_CFLAGS = $(OTHER_CFLAGS) -DDEBUG=1
+
+// These are turned off to avoid STL incompatibilities with client code
+// // Turns on special C++ STL checks to "encourage" good STL use
+// GCC_PREPROCESSOR_DEFINITIONS = $(GCC_PREPROCESSOR_DEFINITIONS) _GLIBCXX_DEBUG_PEDANTIC _GLIBCXX_DEBUG _GLIBCPP_CONCEPT_CHECKS
diff --git a/google-breakpad/src/testing/gtest/xcode/Config/FrameworkTarget.xcconfig b/google-breakpad/src/testing/gtest/xcode/Config/FrameworkTarget.xcconfig
new file mode 100644
index 0000000..357b1c8
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/xcode/Config/FrameworkTarget.xcconfig
@@ -0,0 +1,17 @@
+//
+//  FrameworkTarget.xcconfig
+//
+//  These are Framework target settings for the gtest framework and examples. It
+//  is set in the "Based On:" dropdown in the "Target" info dialog.
+//  This file is based on the Xcode Configuration files in:
+//  http://code.google.com/p/google-toolbox-for-mac/
+// 
+
+// Dynamic libs need to be position independent
+GCC_DYNAMIC_NO_PIC = NO
+
+// Dynamic libs should not have their external symbols stripped.
+STRIP_STYLE = non-global
+
+// Let the user install by specifying the $DSTROOT with xcodebuild
+SKIP_INSTALL = NO
diff --git a/google-breakpad/src/testing/gtest/xcode/Config/General.xcconfig b/google-breakpad/src/testing/gtest/xcode/Config/General.xcconfig
new file mode 100644
index 0000000..f23e322
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/xcode/Config/General.xcconfig
@@ -0,0 +1,41 @@
+//
+//  General.xcconfig
+//
+//  These are General configuration settings for the gtest framework and
+//  examples.
+//  This file is based on the Xcode Configuration files in:
+//  http://code.google.com/p/google-toolbox-for-mac/
+// 
+
+// Build for PPC and Intel, 32- and 64-bit
+ARCHS = i386 x86_64 ppc ppc64
+
+// Zerolink prevents link warnings so turn it off
+ZERO_LINK = NO
+
+// Prebinding considered unhelpful in 10.3 and later
+PREBINDING = NO
+
+// Strictest warning policy
+WARNING_CFLAGS = -Wall -Werror -Wendif-labels -Wnewline-eof -Wno-sign-compare -Wshadow
+
+// Work around Xcode bugs by using external strip. See:
+// http://lists.apple.com/archives/Xcode-users/2006/Feb/msg00050.html
+SEPARATE_STRIP = YES
+
+// Force C99 dialect
+GCC_C_LANGUAGE_STANDARD = c99
+
+// not sure why apple defaults this on, but it's pretty risky
+ALWAYS_SEARCH_USER_PATHS = NO
+
+// Turn on position dependent code for most cases (overridden where appropriate)
+GCC_DYNAMIC_NO_PIC = YES
+
+// Default SDK and minimum OS version is 10.4
+SDKROOT = $(DEVELOPER_SDK_DIR)/MacOSX10.4u.sdk
+MACOSX_DEPLOYMENT_TARGET = 10.4
+GCC_VERSION = 4.0
+
+// VERSIONING BUILD SETTINGS (used in Info.plist)
+GTEST_VERSIONINFO_ABOUT =  © 2008 Google Inc.
diff --git a/google-breakpad/src/testing/gtest/xcode/Config/ReleaseProject.xcconfig b/google-breakpad/src/testing/gtest/xcode/Config/ReleaseProject.xcconfig
new file mode 100644
index 0000000..5349f0a
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/xcode/Config/ReleaseProject.xcconfig
@@ -0,0 +1,32 @@
+//
+//  ReleaseProject.xcconfig
+//
+//  These are Release Configuration project settings for the gtest framework
+//  and examples. It is set in the "Based On:" dropdown in the "Project" info
+//  dialog.
+//  This file is based on the Xcode Configuration files in:
+//  http://code.google.com/p/google-toolbox-for-mac/
+// 
+
+#include "General.xcconfig"
+
+// subconfig/Release.xcconfig
+
+// Optimize for space and size (Apple recommendation)
+GCC_OPTIMIZATION_LEVEL = s
+
+// Deploment postprocessing is what triggers Xcode to strip
+DEPLOYMENT_POSTPROCESSING = YES
+
+// No symbols
+GCC_GENERATE_DEBUGGING_SYMBOLS = NO
+
+// Dead code strip does not affect ObjC code but can help for C
+DEAD_CODE_STRIPPING = YES
+
+// NDEBUG is used by things like assert.h, so define it for general compat.
+// ASSERT going away in release tends to create unused vars.
+OTHER_CFLAGS = $(OTHER_CFLAGS) -DNDEBUG=1 -Wno-unused-variable
+
+// When we strip we want to strip all symbols in release, but save externals.
+STRIP_STYLE = all
diff --git a/google-breakpad/src/testing/gtest/xcode/Config/StaticLibraryTarget.xcconfig b/google-breakpad/src/testing/gtest/xcode/Config/StaticLibraryTarget.xcconfig
new file mode 100644
index 0000000..3922fa5
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/xcode/Config/StaticLibraryTarget.xcconfig
@@ -0,0 +1,18 @@
+//
+//  StaticLibraryTarget.xcconfig
+//
+//  These are static library target settings for libgtest.a. It
+//  is set in the "Based On:" dropdown in the "Target" info dialog.
+//  This file is based on the Xcode Configuration files in:
+//  http://code.google.com/p/google-toolbox-for-mac/
+// 
+
+// Static libs can be included in bundles so make them position independent
+GCC_DYNAMIC_NO_PIC = NO
+
+// Static libs should not have their internal globals or external symbols
+// stripped.
+STRIP_STYLE = debugging
+
+// Let the user install by specifying the $DSTROOT with xcodebuild
+SKIP_INSTALL = NO
diff --git a/google-breakpad/src/testing/gtest/xcode/Config/TestTarget.xcconfig b/google-breakpad/src/testing/gtest/xcode/Config/TestTarget.xcconfig
new file mode 100644
index 0000000..e6652ba
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/xcode/Config/TestTarget.xcconfig
@@ -0,0 +1,8 @@
+//
+//  TestTarget.xcconfig
+//
+//  These are Test target settings for the gtest framework and examples. It
+//  is set in the "Based On:" dropdown in the "Target" info dialog.
+
+PRODUCT_NAME = $(TARGET_NAME)
+HEADER_SEARCH_PATHS = ../include
diff --git a/google-breakpad/src/testing/gtest/xcode/Resources/Info.plist b/google-breakpad/src/testing/gtest/xcode/Resources/Info.plist
new file mode 100644
index 0000000..9dd28ea
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/xcode/Resources/Info.plist
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>English</string>
+	<key>CFBundleExecutable</key>
+	<string>${EXECUTABLE_NAME}</string>
+	<key>CFBundleIconFile</key>
+	<string></string>
+	<key>CFBundleIdentifier</key>
+	<string>com.google.${PRODUCT_NAME}</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundlePackageType</key>
+	<string>FMWK</string>
+	<key>CFBundleSignature</key>
+	<string>????</string>
+	<key>CFBundleVersion</key>
+	<string>GTEST_VERSIONINFO_LONG</string>
+	<key>CFBundleShortVersionString</key>
+	<string>GTEST_VERSIONINFO_SHORT</string>
+	<key>CFBundleGetInfoString</key>
+	<string>${PRODUCT_NAME} GTEST_VERSIONINFO_LONG, ${GTEST_VERSIONINFO_ABOUT}</string>
+	<key>NSHumanReadableCopyright</key>
+	<string>${GTEST_VERSIONINFO_ABOUT}</string>
+	<key>CSResourcesFileMapped</key>
+	<true/>
+</dict>
+</plist>
diff --git a/google-breakpad/src/testing/gtest/xcode/Samples/FrameworkSample/Info.plist b/google-breakpad/src/testing/gtest/xcode/Samples/FrameworkSample/Info.plist
new file mode 100644
index 0000000..f3852ed
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/xcode/Samples/FrameworkSample/Info.plist
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>English</string>
+	<key>CFBundleExecutable</key>
+	<string>${EXECUTABLE_NAME}</string>
+	<key>CFBundleIconFile</key>
+	<string></string>
+	<key>CFBundleIdentifier</key>
+	<string>com.google.gtest.${PRODUCT_NAME:identifier}</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>${PRODUCT_NAME}</string>
+	<key>CFBundlePackageType</key>
+	<string>FMWK</string>
+	<key>CFBundleShortVersionString</key>
+	<string>1.0</string>
+	<key>CFBundleSignature</key>
+	<string>????</string>
+	<key>CFBundleVersion</key>
+	<string>1.0</string>
+	<key>CSResourcesFileMapped</key>
+	<true/>
+</dict>
+</plist>
diff --git a/google-breakpad/src/testing/gtest/xcode/Samples/FrameworkSample/WidgetFramework.xcodeproj/project.pbxproj b/google-breakpad/src/testing/gtest/xcode/Samples/FrameworkSample/WidgetFramework.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..497617e
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/xcode/Samples/FrameworkSample/WidgetFramework.xcodeproj/project.pbxproj
@@ -0,0 +1,457 @@
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 42;
+	objects = {
+
+/* Begin PBXAggregateTarget section */
+		4024D162113D7D2400C7059E /* Test */ = {
+			isa = PBXAggregateTarget;
+			buildConfigurationList = 4024D169113D7D4600C7059E /* Build configuration list for PBXAggregateTarget "Test" */;
+			buildPhases = (
+				4024D161113D7D2400C7059E /* ShellScript */,
+			);
+			dependencies = (
+				4024D166113D7D3100C7059E /* PBXTargetDependency */,
+			);
+			name = Test;
+			productName = TestAndBuild;
+		};
+		4024D1E9113D83FF00C7059E /* TestAndBuild */ = {
+			isa = PBXAggregateTarget;
+			buildConfigurationList = 4024D1F0113D842B00C7059E /* Build configuration list for PBXAggregateTarget "TestAndBuild" */;
+			buildPhases = (
+			);
+			dependencies = (
+				4024D1ED113D840900C7059E /* PBXTargetDependency */,
+				4024D1EF113D840D00C7059E /* PBXTargetDependency */,
+			);
+			name = TestAndBuild;
+			productName = TestAndBuild;
+		};
+/* End PBXAggregateTarget section */
+
+/* Begin PBXBuildFile section */
+		3B7EB1250E5AEE3500C7F239 /* widget.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3B7EB1230E5AEE3500C7F239 /* widget.cc */; };
+		3B7EB1260E5AEE3500C7F239 /* widget.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B7EB1240E5AEE3500C7F239 /* widget.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		3B7EB1280E5AEE4600C7F239 /* widget_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3B7EB1270E5AEE4600C7F239 /* widget_test.cc */; };
+		3B7EB1480E5AF3B400C7F239 /* Widget.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8D07F2C80486CC7A007CD1D0 /* Widget.framework */; };
+		4024D188113D7D7800C7059E /* libgtest.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4024D185113D7D5500C7059E /* libgtest.a */; };
+		4024D189113D7D7A00C7059E /* libgtest_main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4024D183113D7D5500C7059E /* libgtest_main.a */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+		3B07BDF00E3F3FAE00647869 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = 8D07F2BC0486CC7A007CD1D0;
+			remoteInfo = gTestExample;
+		};
+		4024D165113D7D3100C7059E /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = 3B07BDE90E3F3F9E00647869;
+			remoteInfo = WidgetFrameworkTest;
+		};
+		4024D1EC113D840900C7059E /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = 8D07F2BC0486CC7A007CD1D0;
+			remoteInfo = WidgetFramework;
+		};
+		4024D1EE113D840D00C7059E /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = 4024D162113D7D2400C7059E;
+			remoteInfo = Test;
+		};
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXFileReference section */
+		3B07BDEA0E3F3F9E00647869 /* WidgetFrameworkTest */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = WidgetFrameworkTest; sourceTree = BUILT_PRODUCTS_DIR; };
+		3B7EB1230E5AEE3500C7F239 /* widget.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = widget.cc; sourceTree = "<group>"; };
+		3B7EB1240E5AEE3500C7F239 /* widget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = widget.h; sourceTree = "<group>"; };
+		3B7EB1270E5AEE4600C7F239 /* widget_test.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = widget_test.cc; sourceTree = "<group>"; };
+		4024D183113D7D5500C7059E /* libgtest_main.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libgtest_main.a; path = /usr/local/lib/libgtest_main.a; sourceTree = "<absolute>"; };
+		4024D185113D7D5500C7059E /* libgtest.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libgtest.a; path = /usr/local/lib/libgtest.a; sourceTree = "<absolute>"; };
+		4024D1E2113D838200C7059E /* runtests.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = runtests.sh; sourceTree = "<group>"; };
+		8D07F2C70486CC7A007CD1D0 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
+		8D07F2C80486CC7A007CD1D0 /* Widget.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Widget.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+		3B07BDE80E3F3F9E00647869 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				4024D189113D7D7A00C7059E /* libgtest_main.a in Frameworks */,
+				4024D188113D7D7800C7059E /* libgtest.a in Frameworks */,
+				3B7EB1480E5AF3B400C7F239 /* Widget.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		8D07F2C30486CC7A007CD1D0 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+		034768DDFF38A45A11DB9C8B /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				8D07F2C80486CC7A007CD1D0 /* Widget.framework */,
+				3B07BDEA0E3F3F9E00647869 /* WidgetFrameworkTest */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		0867D691FE84028FC02AAC07 /* gTestExample */ = {
+			isa = PBXGroup;
+			children = (
+				4024D1E1113D836C00C7059E /* Scripts */,
+				08FB77ACFE841707C02AAC07 /* Source */,
+				089C1665FE841158C02AAC07 /* Resources */,
+				3B07BE350E4094E400647869 /* Test */,
+				0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */,
+				034768DDFF38A45A11DB9C8B /* Products */,
+			);
+			name = gTestExample;
+			sourceTree = "<group>";
+		};
+		0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */ = {
+			isa = PBXGroup;
+			children = (
+				4024D183113D7D5500C7059E /* libgtest_main.a */,
+				4024D185113D7D5500C7059E /* libgtest.a */,
+			);
+			name = "External Frameworks and Libraries";
+			sourceTree = "<group>";
+		};
+		089C1665FE841158C02AAC07 /* Resources */ = {
+			isa = PBXGroup;
+			children = (
+				8D07F2C70486CC7A007CD1D0 /* Info.plist */,
+			);
+			name = Resources;
+			sourceTree = "<group>";
+		};
+		08FB77ACFE841707C02AAC07 /* Source */ = {
+			isa = PBXGroup;
+			children = (
+				3B7EB1230E5AEE3500C7F239 /* widget.cc */,
+				3B7EB1240E5AEE3500C7F239 /* widget.h */,
+			);
+			name = Source;
+			sourceTree = "<group>";
+		};
+		3B07BE350E4094E400647869 /* Test */ = {
+			isa = PBXGroup;
+			children = (
+				3B7EB1270E5AEE4600C7F239 /* widget_test.cc */,
+			);
+			name = Test;
+			sourceTree = "<group>";
+		};
+		4024D1E1113D836C00C7059E /* Scripts */ = {
+			isa = PBXGroup;
+			children = (
+				4024D1E2113D838200C7059E /* runtests.sh */,
+			);
+			name = Scripts;
+			sourceTree = "<group>";
+		};
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+		8D07F2BD0486CC7A007CD1D0 /* Headers */ = {
+			isa = PBXHeadersBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				3B7EB1260E5AEE3500C7F239 /* widget.h in Headers */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+		3B07BDE90E3F3F9E00647869 /* WidgetFrameworkTest */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 3B07BDF40E3F3FB600647869 /* Build configuration list for PBXNativeTarget "WidgetFrameworkTest" */;
+			buildPhases = (
+				3B07BDE70E3F3F9E00647869 /* Sources */,
+				3B07BDE80E3F3F9E00647869 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				3B07BDF10E3F3FAE00647869 /* PBXTargetDependency */,
+			);
+			name = WidgetFrameworkTest;
+			productName = gTestExampleTest;
+			productReference = 3B07BDEA0E3F3F9E00647869 /* WidgetFrameworkTest */;
+			productType = "com.apple.product-type.tool";
+		};
+		8D07F2BC0486CC7A007CD1D0 /* WidgetFramework */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 4FADC24208B4156D00ABE55E /* Build configuration list for PBXNativeTarget "WidgetFramework" */;
+			buildPhases = (
+				8D07F2C10486CC7A007CD1D0 /* Sources */,
+				8D07F2C30486CC7A007CD1D0 /* Frameworks */,
+				8D07F2BD0486CC7A007CD1D0 /* Headers */,
+				8D07F2BF0486CC7A007CD1D0 /* Resources */,
+				8D07F2C50486CC7A007CD1D0 /* Rez */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = WidgetFramework;
+			productInstallPath = "$(HOME)/Library/Frameworks";
+			productName = gTestExample;
+			productReference = 8D07F2C80486CC7A007CD1D0 /* Widget.framework */;
+			productType = "com.apple.product-type.framework";
+		};
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+		0867D690FE84028FC02AAC07 /* Project object */ = {
+			isa = PBXProject;
+			buildConfigurationList = 4FADC24608B4156D00ABE55E /* Build configuration list for PBXProject "WidgetFramework" */;
+			compatibilityVersion = "Xcode 2.4";
+			hasScannedForEncodings = 1;
+			mainGroup = 0867D691FE84028FC02AAC07 /* gTestExample */;
+			productRefGroup = 034768DDFF38A45A11DB9C8B /* Products */;
+			projectDirPath = "";
+			projectRoot = "";
+			targets = (
+				8D07F2BC0486CC7A007CD1D0 /* WidgetFramework */,
+				3B07BDE90E3F3F9E00647869 /* WidgetFrameworkTest */,
+				4024D162113D7D2400C7059E /* Test */,
+				4024D1E9113D83FF00C7059E /* TestAndBuild */,
+			);
+		};
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+		8D07F2BF0486CC7A007CD1D0 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXRezBuildPhase section */
+		8D07F2C50486CC7A007CD1D0 /* Rez */ = {
+			isa = PBXRezBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXRezBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+		4024D161113D7D2400C7059E /* ShellScript */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputPaths = (
+			);
+			outputPaths = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "/bin/bash $SRCROOT/runtests.sh $BUILT_PRODUCTS_DIR/WidgetFrameworkTest\n";
+		};
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+		3B07BDE70E3F3F9E00647869 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				3B7EB1280E5AEE4600C7F239 /* widget_test.cc in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		8D07F2C10486CC7A007CD1D0 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				3B7EB1250E5AEE3500C7F239 /* widget.cc in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXTargetDependency section */
+		3B07BDF10E3F3FAE00647869 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = 8D07F2BC0486CC7A007CD1D0 /* WidgetFramework */;
+			targetProxy = 3B07BDF00E3F3FAE00647869 /* PBXContainerItemProxy */;
+		};
+		4024D166113D7D3100C7059E /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = 3B07BDE90E3F3F9E00647869 /* WidgetFrameworkTest */;
+			targetProxy = 4024D165113D7D3100C7059E /* PBXContainerItemProxy */;
+		};
+		4024D1ED113D840900C7059E /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = 8D07F2BC0486CC7A007CD1D0 /* WidgetFramework */;
+			targetProxy = 4024D1EC113D840900C7059E /* PBXContainerItemProxy */;
+		};
+		4024D1EF113D840D00C7059E /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = 4024D162113D7D2400C7059E /* Test */;
+			targetProxy = 4024D1EE113D840D00C7059E /* PBXContainerItemProxy */;
+		};
+/* End PBXTargetDependency section */
+
+/* Begin XCBuildConfiguration section */
+		3B07BDEC0E3F3F9F00647869 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				PRODUCT_NAME = WidgetFrameworkTest;
+			};
+			name = Debug;
+		};
+		3B07BDED0E3F3F9F00647869 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				PRODUCT_NAME = WidgetFrameworkTest;
+			};
+			name = Release;
+		};
+		4024D163113D7D2400C7059E /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				PRODUCT_NAME = TestAndBuild;
+			};
+			name = Debug;
+		};
+		4024D164113D7D2400C7059E /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				PRODUCT_NAME = TestAndBuild;
+			};
+			name = Release;
+		};
+		4024D1EA113D83FF00C7059E /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				PRODUCT_NAME = TestAndBuild;
+			};
+			name = Debug;
+		};
+		4024D1EB113D83FF00C7059E /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				PRODUCT_NAME = TestAndBuild;
+			};
+			name = Release;
+		};
+		4FADC24308B4156D00ABE55E /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				DYLIB_COMPATIBILITY_VERSION = 1;
+				DYLIB_CURRENT_VERSION = 1;
+				FRAMEWORK_VERSION = A;
+				INFOPLIST_FILE = Info.plist;
+				INSTALL_PATH = "@loader_path/../Frameworks";
+				PRODUCT_NAME = Widget;
+			};
+			name = Debug;
+		};
+		4FADC24408B4156D00ABE55E /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				DYLIB_COMPATIBILITY_VERSION = 1;
+				DYLIB_CURRENT_VERSION = 1;
+				FRAMEWORK_VERSION = A;
+				INFOPLIST_FILE = Info.plist;
+				INSTALL_PATH = "@loader_path/../Frameworks";
+				PRODUCT_NAME = Widget;
+			};
+			name = Release;
+		};
+		4FADC24708B4156D00ABE55E /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				GCC_VERSION = 4.0;
+				SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
+			};
+			name = Debug;
+		};
+		4FADC24808B4156D00ABE55E /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				GCC_VERSION = 4.0;
+				SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
+			};
+			name = Release;
+		};
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+		3B07BDF40E3F3FB600647869 /* Build configuration list for PBXNativeTarget "WidgetFrameworkTest" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				3B07BDEC0E3F3F9F00647869 /* Debug */,
+				3B07BDED0E3F3F9F00647869 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		4024D169113D7D4600C7059E /* Build configuration list for PBXAggregateTarget "Test" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				4024D163113D7D2400C7059E /* Debug */,
+				4024D164113D7D2400C7059E /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		4024D1F0113D842B00C7059E /* Build configuration list for PBXAggregateTarget "TestAndBuild" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				4024D1EA113D83FF00C7059E /* Debug */,
+				4024D1EB113D83FF00C7059E /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		4FADC24208B4156D00ABE55E /* Build configuration list for PBXNativeTarget "WidgetFramework" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				4FADC24308B4156D00ABE55E /* Debug */,
+				4FADC24408B4156D00ABE55E /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		4FADC24608B4156D00ABE55E /* Build configuration list for PBXProject "WidgetFramework" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				4FADC24708B4156D00ABE55E /* Debug */,
+				4FADC24808B4156D00ABE55E /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+/* End XCConfigurationList section */
+	};
+	rootObject = 0867D690FE84028FC02AAC07 /* Project object */;
+}
diff --git a/google-breakpad/src/testing/gtest/xcode/Samples/FrameworkSample/runtests.sh b/google-breakpad/src/testing/gtest/xcode/Samples/FrameworkSample/runtests.sh
new file mode 100644
index 0000000..4a0d413
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/xcode/Samples/FrameworkSample/runtests.sh
@@ -0,0 +1,62 @@
+#!/bin/bash
+#
+# Copyright 2008, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# Executes the samples and tests for the Google Test Framework.
+
+# Help the dynamic linker find the path to the libraries.
+export DYLD_FRAMEWORK_PATH=$BUILT_PRODUCTS_DIR
+export DYLD_LIBRARY_PATH=$BUILT_PRODUCTS_DIR
+
+# Create some executables.
+test_executables=$@
+
+# Now execute each one in turn keeping track of how many succeeded and failed.
+succeeded=0
+failed=0
+failed_list=()
+for test in ${test_executables[*]}; do
+  "$test"
+  result=$?
+  if [ $result -eq 0 ]; then
+    succeeded=$(( $succeeded + 1 ))
+  else
+    failed=$(( failed + 1 ))
+    failed_list="$failed_list $test"
+  fi
+done
+
+# Report the successes and failures to the console.
+echo "Tests complete with $succeeded successes and $failed failures."
+if [ $failed -ne 0 ]; then
+  echo "The following tests failed:"
+  echo $failed_list
+fi
+exit $failed
diff --git a/google-breakpad/src/testing/gtest/xcode/Samples/FrameworkSample/widget.cc b/google-breakpad/src/testing/gtest/xcode/Samples/FrameworkSample/widget.cc
new file mode 100644
index 0000000..bfc4e7f
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/xcode/Samples/FrameworkSample/widget.cc
@@ -0,0 +1,63 @@
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: preston.a.jackson@gmail.com (Preston Jackson)
+//
+// Google Test - FrameworkSample
+// widget.cc
+//
+
+// Widget is a very simple class used for demonstrating the use of gtest
+
+#include "widget.h"
+
+Widget::Widget(int number, const std::string& name)
+    : number_(number),
+      name_(name) {}
+
+Widget::~Widget() {}
+
+float Widget::GetFloatValue() const {
+  return number_;
+}
+
+int Widget::GetIntValue() const {
+  return static_cast<int>(number_);
+}
+
+std::string Widget::GetStringValue() const {
+  return name_;
+}
+
+void Widget::GetCharPtrValue(char* buffer, size_t max_size) const {
+  // Copy the char* representation of name_ into buffer, up to max_size.
+  strncpy(buffer, name_.c_str(), max_size-1);
+  buffer[max_size-1] = '\0';
+  return;
+}
diff --git a/google-breakpad/src/testing/gtest/xcode/Samples/FrameworkSample/widget.h b/google-breakpad/src/testing/gtest/xcode/Samples/FrameworkSample/widget.h
new file mode 100644
index 0000000..0c55cdc
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/xcode/Samples/FrameworkSample/widget.h
@@ -0,0 +1,59 @@
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: preston.a.jackson@gmail.com (Preston Jackson)
+//
+// Google Test - FrameworkSample
+// widget.h
+//
+
+// Widget is a very simple class used for demonstrating the use of gtest. It
+// simply stores two values a string and an integer, which are returned via
+// public accessors in multiple forms.
+
+#import <string>
+
+class Widget {
+ public:
+  Widget(int number, const std::string& name);
+  ~Widget();
+
+  // Public accessors to number data
+  float GetFloatValue() const;
+  int GetIntValue() const;
+
+  // Public accessors to the string data
+  std::string GetStringValue() const;
+  void GetCharPtrValue(char* buffer, size_t max_size) const;
+
+ private:
+  // Data members
+  float number_;
+  std::string name_;
+};
diff --git a/google-breakpad/src/testing/gtest/xcode/Samples/FrameworkSample/widget_test.cc b/google-breakpad/src/testing/gtest/xcode/Samples/FrameworkSample/widget_test.cc
new file mode 100644
index 0000000..8725994
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/xcode/Samples/FrameworkSample/widget_test.cc
@@ -0,0 +1,68 @@
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: preston.a.jackson@gmail.com (Preston Jackson)
+//
+// Google Test - FrameworkSample
+// widget_test.cc
+//
+
+// This is a simple test file for the Widget class in the Widget.framework
+
+#include <string>
+#include "gtest/gtest.h"
+
+#include <Widget/widget.h>
+
+// This test verifies that the constructor sets the internal state of the
+// Widget class correctly.
+TEST(WidgetInitializerTest, TestConstructor) {
+  Widget widget(1.0f, "name");
+  EXPECT_FLOAT_EQ(1.0f, widget.GetFloatValue());
+  EXPECT_EQ(std::string("name"), widget.GetStringValue());
+}
+
+// This test verifies the conversion of the float and string values to int and
+// char*, respectively.
+TEST(WidgetInitializerTest, TestConversion) {
+  Widget widget(1.0f, "name");
+  EXPECT_EQ(1, widget.GetIntValue());
+
+  size_t max_size = 128;
+  char buffer[max_size];
+  widget.GetCharPtrValue(buffer, max_size);
+  EXPECT_STREQ("name", buffer);
+}
+
+// Use the Google Test main that is linked into the framework. It does something
+// like this:
+// int main(int argc, char** argv) {
+//   testing::InitGoogleTest(&argc, argv);
+//   return RUN_ALL_TESTS();
+// }
diff --git a/google-breakpad/src/testing/gtest/xcode/Scripts/runtests.sh b/google-breakpad/src/testing/gtest/xcode/Scripts/runtests.sh
new file mode 100644
index 0000000..3fc229f
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/xcode/Scripts/runtests.sh
@@ -0,0 +1,65 @@
+#!/bin/bash
+#
+# Copyright 2008, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# Executes the samples and tests for the Google Test Framework.
+
+# Help the dynamic linker find the path to the libraries.
+export DYLD_FRAMEWORK_PATH=$BUILT_PRODUCTS_DIR
+export DYLD_LIBRARY_PATH=$BUILT_PRODUCTS_DIR
+
+# Create some executables.
+test_executables=("$BUILT_PRODUCTS_DIR/gtest_unittest-framework"
+                  "$BUILT_PRODUCTS_DIR/gtest_unittest"
+                  "$BUILT_PRODUCTS_DIR/sample1_unittest-framework"
+                  "$BUILT_PRODUCTS_DIR/sample1_unittest-static")
+
+# Now execute each one in turn keeping track of how many succeeded and failed. 
+succeeded=0
+failed=0
+failed_list=()
+for test in ${test_executables[*]}; do
+  "$test"
+  result=$?
+  if [ $result -eq 0 ]; then
+    succeeded=$(( $succeeded + 1 ))
+  else
+    failed=$(( failed + 1 ))
+    failed_list="$failed_list $test"
+  fi
+done
+
+# Report the successes and failures to the console.
+echo "Tests complete with $succeeded successes and $failed failures."
+if [ $failed -ne 0 ]; then
+  echo "The following tests failed:"
+  echo $failed_list
+fi
+exit $failed
diff --git a/google-breakpad/src/testing/gtest/xcode/Scripts/versiongenerate.py b/google-breakpad/src/testing/gtest/xcode/Scripts/versiongenerate.py
new file mode 100644
index 0000000..81de8c9
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/xcode/Scripts/versiongenerate.py
@@ -0,0 +1,100 @@
+#!/usr/bin/env python
+#
+# Copyright 2008, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+"""A script to prepare version informtion for use the gtest Info.plist file.
+
+  This script extracts the version information from the configure.ac file and
+  uses it to generate a header file containing the same information. The
+  #defines in this header file will be included in during the generation of
+  the Info.plist of the framework, giving the correct value to the version
+  shown in the Finder.
+
+  This script makes the following assumptions (these are faults of the script,
+  not problems with the Autoconf):
+    1. The AC_INIT macro will be contained within the first 1024 characters
+       of configure.ac
+    2. The version string will be 3 integers separated by periods and will be
+       surrounded by squre brackets, "[" and "]" (e.g. [1.0.1]). The first
+       segment represents the major version, the second represents the minor
+       version and the third represents the fix version.
+    3. No ")" character exists between the opening "(" and closing ")" of
+       AC_INIT, including in comments and character strings.
+"""
+
+import sys
+import re
+
+# Read the command line argument (the output directory for Version.h)
+if (len(sys.argv) < 3):
+  print "Usage: versiongenerate.py input_dir output_dir"
+  sys.exit(1)
+else:
+  input_dir = sys.argv[1]
+  output_dir = sys.argv[2]
+
+# Read the first 1024 characters of the configure.ac file
+config_file = open("%s/configure.ac" % input_dir, 'r')
+buffer_size = 1024
+opening_string = config_file.read(buffer_size)
+config_file.close()
+
+# Extract the version string from the AC_INIT macro
+#   The following init_expression means:
+#     Extract three integers separated by periods and surrounded by squre
+#     brackets(e.g. "[1.0.1]") between "AC_INIT(" and ")". Do not be greedy
+#     (*? is the non-greedy flag) since that would pull in everything between
+#     the first "(" and the last ")" in the file.
+version_expression = re.compile(r"AC_INIT\(.*?\[(\d+)\.(\d+)\.(\d+)\].*?\)",
+                                re.DOTALL)
+version_values = version_expression.search(opening_string)
+major_version = version_values.group(1)
+minor_version = version_values.group(2)
+fix_version = version_values.group(3)
+
+# Write the version information to a header file to be included in the
+# Info.plist file.
+file_data = """//
+// DO NOT MODIFY THIS FILE (but you can delete it)
+//
+// This file is autogenerated by the versiongenerate.py script. This script
+// is executed in a "Run Script" build phase when creating gtest.framework. This
+// header file is not used during compilation of C-source. Rather, it simply
+// defines some version strings for substitution in the Info.plist. Because of
+// this, we are not not restricted to C-syntax nor are we using include guards.
+//
+
+#define GTEST_VERSIONINFO_SHORT %s.%s
+#define GTEST_VERSIONINFO_LONG %s.%s.%s
+
+""" % (major_version, minor_version, major_version, minor_version, fix_version)
+version_file = open("%s/Version.h" % output_dir, 'w')
+version_file.write(file_data)
+version_file.close()
diff --git a/google-breakpad/src/testing/gtest/xcode/gtest.xcodeproj/project.pbxproj b/google-breakpad/src/testing/gtest/xcode/gtest.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..da6455b
--- /dev/null
+++ b/google-breakpad/src/testing/gtest/xcode/gtest.xcodeproj/project.pbxproj
@@ -0,0 +1,1084 @@
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 42;
+	objects = {
+
+/* Begin PBXAggregateTarget section */
+		3B238F5F0E828B5400846E11 /* Check */ = {
+			isa = PBXAggregateTarget;
+			buildConfigurationList = 3B238FA30E828BB600846E11 /* Build configuration list for PBXAggregateTarget "Check" */;
+			buildPhases = (
+				3B238F5E0E828B5400846E11 /* ShellScript */,
+			);
+			dependencies = (
+				40899F9D0FFA740F000B29AE /* PBXTargetDependency */,
+				40C849F7101A43440083642A /* PBXTargetDependency */,
+				4089A0980FFAD34A000B29AE /* PBXTargetDependency */,
+				40C849F9101A43490083642A /* PBXTargetDependency */,
+			);
+			name = Check;
+			productName = Check;
+		};
+		40C44ADC0E3798F4008FCC51 /* Version Info */ = {
+			isa = PBXAggregateTarget;
+			buildConfigurationList = 40C44AE40E379905008FCC51 /* Build configuration list for PBXAggregateTarget "Version Info" */;
+			buildPhases = (
+				40C44ADB0E3798F4008FCC51 /* Generate Version.h */,
+			);
+			comments = "The generation of Version.h must be performed in its own target. Since the Info.plist is preprocessed before any of the other build phases in gtest, the Version.h file would not be ready if included as a build phase of that target.";
+			dependencies = (
+			);
+			name = "Version Info";
+			productName = Version.h;
+		};
+/* End PBXAggregateTarget section */
+
+/* Begin PBXBuildFile section */
+		224A12A30E9EADCC00BD17FD /* gtest-test-part.h in Headers */ = {isa = PBXBuildFile; fileRef = 224A12A20E9EADCC00BD17FD /* gtest-test-part.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		3BF6F2A00E79B5AD000F2EEE /* gtest-type-util.h in Copy Headers Internal */ = {isa = PBXBuildFile; fileRef = 3BF6F29F0E79B5AD000F2EEE /* gtest-type-util.h */; };
+		3BF6F2A50E79B616000F2EEE /* gtest-typed-test.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BF6F2A40E79B616000F2EEE /* gtest-typed-test.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		404884380E2F799B00CF7658 /* gtest-death-test.h in Headers */ = {isa = PBXBuildFile; fileRef = 404883DB0E2F799B00CF7658 /* gtest-death-test.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		404884390E2F799B00CF7658 /* gtest-message.h in Headers */ = {isa = PBXBuildFile; fileRef = 404883DC0E2F799B00CF7658 /* gtest-message.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		4048843A0E2F799B00CF7658 /* gtest-spi.h in Headers */ = {isa = PBXBuildFile; fileRef = 404883DD0E2F799B00CF7658 /* gtest-spi.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		4048843B0E2F799B00CF7658 /* gtest.h in Headers */ = {isa = PBXBuildFile; fileRef = 404883DE0E2F799B00CF7658 /* gtest.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		4048843C0E2F799B00CF7658 /* gtest_pred_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 404883DF0E2F799B00CF7658 /* gtest_pred_impl.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		4048843D0E2F799B00CF7658 /* gtest_prod.h in Headers */ = {isa = PBXBuildFile; fileRef = 404883E00E2F799B00CF7658 /* gtest_prod.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		404884500E2F799B00CF7658 /* README in Resources */ = {isa = PBXBuildFile; fileRef = 404883F60E2F799B00CF7658 /* README */; };
+		404884A00E2F7BE600CF7658 /* gtest-death-test-internal.h in Copy Headers Internal */ = {isa = PBXBuildFile; fileRef = 404883E20E2F799B00CF7658 /* gtest-death-test-internal.h */; };
+		404884A10E2F7BE600CF7658 /* gtest-filepath.h in Copy Headers Internal */ = {isa = PBXBuildFile; fileRef = 404883E30E2F799B00CF7658 /* gtest-filepath.h */; };
+		404884A20E2F7BE600CF7658 /* gtest-internal.h in Copy Headers Internal */ = {isa = PBXBuildFile; fileRef = 404883E40E2F799B00CF7658 /* gtest-internal.h */; };
+		404884A30E2F7BE600CF7658 /* gtest-port.h in Copy Headers Internal */ = {isa = PBXBuildFile; fileRef = 404883E50E2F799B00CF7658 /* gtest-port.h */; };
+		404884A40E2F7BE600CF7658 /* gtest-string.h in Copy Headers Internal */ = {isa = PBXBuildFile; fileRef = 404883E60E2F799B00CF7658 /* gtest-string.h */; };
+		404884AC0E2F7CD900CF7658 /* CHANGES in Resources */ = {isa = PBXBuildFile; fileRef = 404884A90E2F7CD900CF7658 /* CHANGES */; };
+		404884AD0E2F7CD900CF7658 /* CONTRIBUTORS in Resources */ = {isa = PBXBuildFile; fileRef = 404884AA0E2F7CD900CF7658 /* CONTRIBUTORS */; };
+		404884AE0E2F7CD900CF7658 /* LICENSE in Resources */ = {isa = PBXBuildFile; fileRef = 404884AB0E2F7CD900CF7658 /* LICENSE */; };
+		40899F3A0FFA70D4000B29AE /* gtest-all.cc in Sources */ = {isa = PBXBuildFile; fileRef = 224A12A10E9EADA700BD17FD /* gtest-all.cc */; };
+		40899F500FFA7281000B29AE /* gtest-tuple.h in Copy Headers Internal */ = {isa = PBXBuildFile; fileRef = 40899F4D0FFA7271000B29AE /* gtest-tuple.h */; };
+		40899F530FFA72A0000B29AE /* gtest_unittest.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3B238C120E7FE13C00846E11 /* gtest_unittest.cc */; };
+		4089A0440FFAD1BE000B29AE /* sample1.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4089A02C0FFACF7F000B29AE /* sample1.cc */; };
+		4089A0460FFAD1BE000B29AE /* sample1_unittest.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4089A02E0FFACF7F000B29AE /* sample1_unittest.cc */; };
+		40C848FF101A21150083642A /* gtest-all.cc in Sources */ = {isa = PBXBuildFile; fileRef = 224A12A10E9EADA700BD17FD /* gtest-all.cc */; };
+		40C84915101A21DF0083642A /* gtest_main.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4048840D0E2F799B00CF7658 /* gtest_main.cc */; };
+		40C84916101A235B0083642A /* libgtest_main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 40C8490B101A217E0083642A /* libgtest_main.a */; };
+		40C84921101A23AD0083642A /* libgtest_main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 40C8490B101A217E0083642A /* libgtest_main.a */; };
+		40C84978101A36540083642A /* libgtest_main.a in Resources */ = {isa = PBXBuildFile; fileRef = 40C8490B101A217E0083642A /* libgtest_main.a */; };
+		40C84980101A36850083642A /* gtest_unittest.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3B238C120E7FE13C00846E11 /* gtest_unittest.cc */; };
+		40C84982101A36850083642A /* libgtest.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 40C848FA101A209C0083642A /* libgtest.a */; };
+		40C84983101A36850083642A /* libgtest_main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 40C8490B101A217E0083642A /* libgtest_main.a */; };
+		40C8498F101A36A60083642A /* sample1.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4089A02C0FFACF7F000B29AE /* sample1.cc */; };
+		40C84990101A36A60083642A /* sample1_unittest.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4089A02E0FFACF7F000B29AE /* sample1_unittest.cc */; };
+		40C84992101A36A60083642A /* libgtest.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 40C848FA101A209C0083642A /* libgtest.a */; };
+		40C84993101A36A60083642A /* libgtest_main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 40C8490B101A217E0083642A /* libgtest_main.a */; };
+		40C849A2101A37050083642A /* gtest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4539C8FF0EC27F6400A70F4C /* gtest.framework */; };
+		40C849A4101A37150083642A /* gtest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4539C8FF0EC27F6400A70F4C /* gtest.framework */; };
+		4539C9340EC280AE00A70F4C /* gtest-param-test.h in Headers */ = {isa = PBXBuildFile; fileRef = 4539C9330EC280AE00A70F4C /* gtest-param-test.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		4539C9380EC280E200A70F4C /* gtest-linked_ptr.h in Copy Headers Internal */ = {isa = PBXBuildFile; fileRef = 4539C9350EC280E200A70F4C /* gtest-linked_ptr.h */; };
+		4539C9390EC280E200A70F4C /* gtest-param-util-generated.h in Copy Headers Internal */ = {isa = PBXBuildFile; fileRef = 4539C9360EC280E200A70F4C /* gtest-param-util-generated.h */; };
+		4539C93A0EC280E200A70F4C /* gtest-param-util.h in Copy Headers Internal */ = {isa = PBXBuildFile; fileRef = 4539C9370EC280E200A70F4C /* gtest-param-util.h */; };
+		4567C8181264FF71007740BE /* gtest-printers.h in Headers */ = {isa = PBXBuildFile; fileRef = 4567C8171264FF71007740BE /* gtest-printers.h */; settings = {ATTRIBUTES = (Public, ); }; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+		40899F9C0FFA740F000B29AE /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = 40899F420FFA7184000B29AE;
+			remoteInfo = gtest_unittest;
+		};
+		4089A0970FFAD34A000B29AE /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = 4089A0120FFACEFC000B29AE;
+			remoteInfo = sample1_unittest;
+		};
+		408BEC0F1046CFE900DEF522 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = 40C848F9101A209C0083642A;
+			remoteInfo = "gtest-static";
+		};
+		40C44AE50E379922008FCC51 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = 40C44ADC0E3798F4008FCC51;
+			remoteInfo = Version.h;
+		};
+		40C8497C101A36850083642A /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = 40C848F9101A209C0083642A;
+			remoteInfo = "gtest-static";
+		};
+		40C8497E101A36850083642A /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = 40C8490A101A217E0083642A;
+			remoteInfo = "gtest_main-static";
+		};
+		40C8498B101A36A60083642A /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = 40C848F9101A209C0083642A;
+			remoteInfo = "gtest-static";
+		};
+		40C8498D101A36A60083642A /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = 40C8490A101A217E0083642A;
+			remoteInfo = "gtest_main-static";
+		};
+		40C8499B101A36DC0083642A /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = 40C8490A101A217E0083642A;
+			remoteInfo = "gtest_main-static";
+		};
+		40C8499D101A36E50083642A /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = 8D07F2BC0486CC7A007CD1D0;
+			remoteInfo = "gtest-framework";
+		};
+		40C8499F101A36F10083642A /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = 8D07F2BC0486CC7A007CD1D0;
+			remoteInfo = "gtest-framework";
+		};
+		40C849F6101A43440083642A /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = 40C8497A101A36850083642A;
+			remoteInfo = "gtest_unittest-static";
+		};
+		40C849F8101A43490083642A /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = 40C84989101A36A60083642A;
+			remoteInfo = "sample1_unittest-static";
+		};
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXCopyFilesBuildPhase section */
+		404884A50E2F7C0400CF7658 /* Copy Headers Internal */ = {
+			isa = PBXCopyFilesBuildPhase;
+			buildActionMask = 2147483647;
+			dstPath = Headers/internal;
+			dstSubfolderSpec = 6;
+			files = (
+				404884A00E2F7BE600CF7658 /* gtest-death-test-internal.h in Copy Headers Internal */,
+				404884A10E2F7BE600CF7658 /* gtest-filepath.h in Copy Headers Internal */,
+				404884A20E2F7BE600CF7658 /* gtest-internal.h in Copy Headers Internal */,
+				4539C9380EC280E200A70F4C /* gtest-linked_ptr.h in Copy Headers Internal */,
+				4539C9390EC280E200A70F4C /* gtest-param-util-generated.h in Copy Headers Internal */,
+				4539C93A0EC280E200A70F4C /* gtest-param-util.h in Copy Headers Internal */,
+				404884A30E2F7BE600CF7658 /* gtest-port.h in Copy Headers Internal */,
+				404884A40E2F7BE600CF7658 /* gtest-string.h in Copy Headers Internal */,
+				40899F500FFA7281000B29AE /* gtest-tuple.h in Copy Headers Internal */,
+				3BF6F2A00E79B5AD000F2EEE /* gtest-type-util.h in Copy Headers Internal */,
+			);
+			name = "Copy Headers Internal";
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXCopyFilesBuildPhase section */
+
+/* Begin PBXFileReference section */
+		224A12A10E9EADA700BD17FD /* gtest-all.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = "gtest-all.cc"; sourceTree = "<group>"; };
+		224A12A20E9EADCC00BD17FD /* gtest-test-part.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = "gtest-test-part.h"; sourceTree = "<group>"; };
+		3B238C120E7FE13C00846E11 /* gtest_unittest.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gtest_unittest.cc; sourceTree = "<group>"; };
+		3B87D2100E96B92E000D1852 /* runtests.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = runtests.sh; sourceTree = "<group>"; };
+		3BF6F29F0E79B5AD000F2EEE /* gtest-type-util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gtest-type-util.h"; sourceTree = "<group>"; };
+		3BF6F2A40E79B616000F2EEE /* gtest-typed-test.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gtest-typed-test.h"; sourceTree = "<group>"; };
+		403EE37C0E377822004BD1E2 /* versiongenerate.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = versiongenerate.py; sourceTree = "<group>"; };
+		404883DB0E2F799B00CF7658 /* gtest-death-test.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gtest-death-test.h"; sourceTree = "<group>"; };
+		404883DC0E2F799B00CF7658 /* gtest-message.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gtest-message.h"; sourceTree = "<group>"; };
+		404883DD0E2F799B00CF7658 /* gtest-spi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gtest-spi.h"; sourceTree = "<group>"; };
+		404883DE0E2F799B00CF7658 /* gtest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gtest.h; sourceTree = "<group>"; };
+		404883DF0E2F799B00CF7658 /* gtest_pred_impl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gtest_pred_impl.h; sourceTree = "<group>"; };
+		404883E00E2F799B00CF7658 /* gtest_prod.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gtest_prod.h; sourceTree = "<group>"; };
+		404883E20E2F799B00CF7658 /* gtest-death-test-internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gtest-death-test-internal.h"; sourceTree = "<group>"; };
+		404883E30E2F799B00CF7658 /* gtest-filepath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gtest-filepath.h"; sourceTree = "<group>"; };
+		404883E40E2F799B00CF7658 /* gtest-internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gtest-internal.h"; sourceTree = "<group>"; };
+		404883E50E2F799B00CF7658 /* gtest-port.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gtest-port.h"; sourceTree = "<group>"; };
+		404883E60E2F799B00CF7658 /* gtest-string.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gtest-string.h"; sourceTree = "<group>"; };
+		404883F60E2F799B00CF7658 /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = README; path = ../README; sourceTree = SOURCE_ROOT; };
+		4048840D0E2F799B00CF7658 /* gtest_main.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gtest_main.cc; sourceTree = "<group>"; };
+		404884A90E2F7CD900CF7658 /* CHANGES */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = CHANGES; path = ../CHANGES; sourceTree = SOURCE_ROOT; };
+		404884AA0E2F7CD900CF7658 /* CONTRIBUTORS */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = CONTRIBUTORS; path = ../CONTRIBUTORS; sourceTree = SOURCE_ROOT; };
+		404884AB0E2F7CD900CF7658 /* LICENSE */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = LICENSE; path = ../LICENSE; sourceTree = SOURCE_ROOT; };
+		40899F430FFA7184000B29AE /* gtest_unittest-framework */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "gtest_unittest-framework"; sourceTree = BUILT_PRODUCTS_DIR; };
+		40899F4D0FFA7271000B29AE /* gtest-tuple.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gtest-tuple.h"; sourceTree = "<group>"; };
+		40899FB30FFA7567000B29AE /* StaticLibraryTarget.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = StaticLibraryTarget.xcconfig; sourceTree = "<group>"; };
+		4089A0130FFACEFC000B29AE /* sample1_unittest-framework */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "sample1_unittest-framework"; sourceTree = BUILT_PRODUCTS_DIR; };
+		4089A02C0FFACF7F000B29AE /* sample1.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sample1.cc; sourceTree = "<group>"; };
+		4089A02D0FFACF7F000B29AE /* sample1.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sample1.h; sourceTree = "<group>"; };
+		4089A02E0FFACF7F000B29AE /* sample1_unittest.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sample1_unittest.cc; sourceTree = "<group>"; };
+		40C848FA101A209C0083642A /* libgtest.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libgtest.a; sourceTree = BUILT_PRODUCTS_DIR; };
+		40C8490B101A217E0083642A /* libgtest_main.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libgtest_main.a; sourceTree = BUILT_PRODUCTS_DIR; };
+		40C84987101A36850083642A /* gtest_unittest */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = gtest_unittest; sourceTree = BUILT_PRODUCTS_DIR; };
+		40C84997101A36A60083642A /* sample1_unittest-static */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "sample1_unittest-static"; sourceTree = BUILT_PRODUCTS_DIR; };
+		40D4CDF10E30E07400294801 /* DebugProject.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = DebugProject.xcconfig; sourceTree = "<group>"; };
+		40D4CDF20E30E07400294801 /* FrameworkTarget.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = FrameworkTarget.xcconfig; sourceTree = "<group>"; };
+		40D4CDF30E30E07400294801 /* General.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = General.xcconfig; sourceTree = "<group>"; };
+		40D4CDF40E30E07400294801 /* ReleaseProject.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = ReleaseProject.xcconfig; sourceTree = "<group>"; };
+		40D4CF510E30F5E200294801 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+		4539C8FF0EC27F6400A70F4C /* gtest.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = gtest.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+		4539C9330EC280AE00A70F4C /* gtest-param-test.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gtest-param-test.h"; sourceTree = "<group>"; };
+		4539C9350EC280E200A70F4C /* gtest-linked_ptr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gtest-linked_ptr.h"; sourceTree = "<group>"; };
+		4539C9360EC280E200A70F4C /* gtest-param-util-generated.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gtest-param-util-generated.h"; sourceTree = "<group>"; };
+		4539C9370EC280E200A70F4C /* gtest-param-util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gtest-param-util.h"; sourceTree = "<group>"; };
+		4567C8171264FF71007740BE /* gtest-printers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gtest-printers.h"; sourceTree = "<group>"; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+		40899F410FFA7184000B29AE /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				40C849A4101A37150083642A /* gtest.framework in Frameworks */,
+				40C84916101A235B0083642A /* libgtest_main.a in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		4089A0110FFACEFC000B29AE /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				40C849A2101A37050083642A /* gtest.framework in Frameworks */,
+				40C84921101A23AD0083642A /* libgtest_main.a in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		40C84981101A36850083642A /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				40C84982101A36850083642A /* libgtest.a in Frameworks */,
+				40C84983101A36850083642A /* libgtest_main.a in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		40C84991101A36A60083642A /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				40C84992101A36A60083642A /* libgtest.a in Frameworks */,
+				40C84993101A36A60083642A /* libgtest_main.a in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+		034768DDFF38A45A11DB9C8B /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				4539C8FF0EC27F6400A70F4C /* gtest.framework */,
+				40C848FA101A209C0083642A /* libgtest.a */,
+				40C8490B101A217E0083642A /* libgtest_main.a */,
+				40899F430FFA7184000B29AE /* gtest_unittest-framework */,
+				40C84987101A36850083642A /* gtest_unittest */,
+				4089A0130FFACEFC000B29AE /* sample1_unittest-framework */,
+				40C84997101A36A60083642A /* sample1_unittest-static */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		0867D691FE84028FC02AAC07 /* gtest */ = {
+			isa = PBXGroup;
+			children = (
+				40D4CDF00E30E07400294801 /* Config */,
+				08FB77ACFE841707C02AAC07 /* Source */,
+				40D4CF4E0E30F5E200294801 /* Resources */,
+				403EE37B0E377822004BD1E2 /* Scripts */,
+				034768DDFF38A45A11DB9C8B /* Products */,
+			);
+			name = gtest;
+			sourceTree = "<group>";
+		};
+		08FB77ACFE841707C02AAC07 /* Source */ = {
+			isa = PBXGroup;
+			children = (
+				404884A90E2F7CD900CF7658 /* CHANGES */,
+				404884AA0E2F7CD900CF7658 /* CONTRIBUTORS */,
+				404884AB0E2F7CD900CF7658 /* LICENSE */,
+				404883F60E2F799B00CF7658 /* README */,
+				404883D90E2F799B00CF7658 /* include */,
+				4089A02F0FFACF84000B29AE /* samples */,
+				404884070E2F799B00CF7658 /* src */,
+				3B238BF00E7FE13B00846E11 /* test */,
+			);
+			name = Source;
+			sourceTree = "<group>";
+		};
+		3B238BF00E7FE13B00846E11 /* test */ = {
+			isa = PBXGroup;
+			children = (
+				3B238C120E7FE13C00846E11 /* gtest_unittest.cc */,
+			);
+			name = test;
+			path = ../test;
+			sourceTree = SOURCE_ROOT;
+		};
+		403EE37B0E377822004BD1E2 /* Scripts */ = {
+			isa = PBXGroup;
+			children = (
+				403EE37C0E377822004BD1E2 /* versiongenerate.py */,
+				3B87D2100E96B92E000D1852 /* runtests.sh */,
+			);
+			path = Scripts;
+			sourceTree = "<group>";
+		};
+		404883D90E2F799B00CF7658 /* include */ = {
+			isa = PBXGroup;
+			children = (
+				404883DA0E2F799B00CF7658 /* gtest */,
+			);
+			name = include;
+			path = ../include;
+			sourceTree = SOURCE_ROOT;
+		};
+		404883DA0E2F799B00CF7658 /* gtest */ = {
+			isa = PBXGroup;
+			children = (
+				404883E10E2F799B00CF7658 /* internal */,
+				224A12A20E9EADCC00BD17FD /* gtest-test-part.h */,
+				404883DB0E2F799B00CF7658 /* gtest-death-test.h */,
+				404883DC0E2F799B00CF7658 /* gtest-message.h */,
+				4539C9330EC280AE00A70F4C /* gtest-param-test.h */,
+				4567C8171264FF71007740BE /* gtest-printers.h */,
+				404883DD0E2F799B00CF7658 /* gtest-spi.h */,
+				404883DE0E2F799B00CF7658 /* gtest.h */,
+				404883DF0E2F799B00CF7658 /* gtest_pred_impl.h */,
+				404883E00E2F799B00CF7658 /* gtest_prod.h */,
+				3BF6F2A40E79B616000F2EEE /* gtest-typed-test.h */,
+			);
+			path = gtest;
+			sourceTree = "<group>";
+		};
+		404883E10E2F799B00CF7658 /* internal */ = {
+			isa = PBXGroup;
+			children = (
+				404883E20E2F799B00CF7658 /* gtest-death-test-internal.h */,
+				404883E30E2F799B00CF7658 /* gtest-filepath.h */,
+				404883E40E2F799B00CF7658 /* gtest-internal.h */,
+				4539C9350EC280E200A70F4C /* gtest-linked_ptr.h */,
+				4539C9360EC280E200A70F4C /* gtest-param-util-generated.h */,
+				4539C9370EC280E200A70F4C /* gtest-param-util.h */,
+				404883E50E2F799B00CF7658 /* gtest-port.h */,
+				404883E60E2F799B00CF7658 /* gtest-string.h */,
+				40899F4D0FFA7271000B29AE /* gtest-tuple.h */,
+				3BF6F29F0E79B5AD000F2EEE /* gtest-type-util.h */,
+			);
+			path = internal;
+			sourceTree = "<group>";
+		};
+		404884070E2F799B00CF7658 /* src */ = {
+			isa = PBXGroup;
+			children = (
+				224A12A10E9EADA700BD17FD /* gtest-all.cc */,
+				4048840D0E2F799B00CF7658 /* gtest_main.cc */,
+			);
+			name = src;
+			path = ../src;
+			sourceTree = SOURCE_ROOT;
+		};
+		4089A02F0FFACF84000B29AE /* samples */ = {
+			isa = PBXGroup;
+			children = (
+				4089A02C0FFACF7F000B29AE /* sample1.cc */,
+				4089A02D0FFACF7F000B29AE /* sample1.h */,
+				4089A02E0FFACF7F000B29AE /* sample1_unittest.cc */,
+			);
+			name = samples;
+			path = ../samples;
+			sourceTree = SOURCE_ROOT;
+		};
+		40D4CDF00E30E07400294801 /* Config */ = {
+			isa = PBXGroup;
+			children = (
+				40D4CDF10E30E07400294801 /* DebugProject.xcconfig */,
+				40D4CDF20E30E07400294801 /* FrameworkTarget.xcconfig */,
+				40D4CDF30E30E07400294801 /* General.xcconfig */,
+				40D4CDF40E30E07400294801 /* ReleaseProject.xcconfig */,
+				40899FB30FFA7567000B29AE /* StaticLibraryTarget.xcconfig */,
+			);
+			path = Config;
+			sourceTree = "<group>";
+		};
+		40D4CF4E0E30F5E200294801 /* Resources */ = {
+			isa = PBXGroup;
+			children = (
+				40D4CF510E30F5E200294801 /* Info.plist */,
+			);
+			path = Resources;
+			sourceTree = "<group>";
+		};
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+		8D07F2BD0486CC7A007CD1D0 /* Headers */ = {
+			isa = PBXHeadersBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				404884380E2F799B00CF7658 /* gtest-death-test.h in Headers */,
+				404884390E2F799B00CF7658 /* gtest-message.h in Headers */,
+				4539C9340EC280AE00A70F4C /* gtest-param-test.h in Headers */,
+				4567C8181264FF71007740BE /* gtest-printers.h in Headers */,
+				3BF6F2A50E79B616000F2EEE /* gtest-typed-test.h in Headers */,
+				4048843A0E2F799B00CF7658 /* gtest-spi.h in Headers */,
+				4048843B0E2F799B00CF7658 /* gtest.h in Headers */,
+				4048843C0E2F799B00CF7658 /* gtest_pred_impl.h in Headers */,
+				4048843D0E2F799B00CF7658 /* gtest_prod.h in Headers */,
+				224A12A30E9EADCC00BD17FD /* gtest-test-part.h in Headers */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+		40899F420FFA7184000B29AE /* gtest_unittest-framework */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 40899F4A0FFA71BC000B29AE /* Build configuration list for PBXNativeTarget "gtest_unittest-framework" */;
+			buildPhases = (
+				40899F400FFA7184000B29AE /* Sources */,
+				40899F410FFA7184000B29AE /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				40C849A0101A36F10083642A /* PBXTargetDependency */,
+			);
+			name = "gtest_unittest-framework";
+			productName = gtest_unittest;
+			productReference = 40899F430FFA7184000B29AE /* gtest_unittest-framework */;
+			productType = "com.apple.product-type.tool";
+		};
+		4089A0120FFACEFC000B29AE /* sample1_unittest-framework */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 4089A0240FFACF01000B29AE /* Build configuration list for PBXNativeTarget "sample1_unittest-framework" */;
+			buildPhases = (
+				4089A0100FFACEFC000B29AE /* Sources */,
+				4089A0110FFACEFC000B29AE /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				40C8499E101A36E50083642A /* PBXTargetDependency */,
+			);
+			name = "sample1_unittest-framework";
+			productName = sample1_unittest;
+			productReference = 4089A0130FFACEFC000B29AE /* sample1_unittest-framework */;
+			productType = "com.apple.product-type.tool";
+		};
+		40C848F9101A209C0083642A /* gtest-static */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 40C84902101A212E0083642A /* Build configuration list for PBXNativeTarget "gtest-static" */;
+			buildPhases = (
+				40C848F7101A209C0083642A /* Sources */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = "gtest-static";
+			productName = "gtest-static";
+			productReference = 40C848FA101A209C0083642A /* libgtest.a */;
+			productType = "com.apple.product-type.library.static";
+		};
+		40C8490A101A217E0083642A /* gtest_main-static */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 40C84912101A21D20083642A /* Build configuration list for PBXNativeTarget "gtest_main-static" */;
+			buildPhases = (
+				40C84908101A217E0083642A /* Sources */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = "gtest_main-static";
+			productName = "gtest_main-static";
+			productReference = 40C8490B101A217E0083642A /* libgtest_main.a */;
+			productType = "com.apple.product-type.library.static";
+		};
+		40C8497A101A36850083642A /* gtest_unittest-static */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 40C84984101A36850083642A /* Build configuration list for PBXNativeTarget "gtest_unittest-static" */;
+			buildPhases = (
+				40C8497F101A36850083642A /* Sources */,
+				40C84981101A36850083642A /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				40C8497B101A36850083642A /* PBXTargetDependency */,
+				40C8497D101A36850083642A /* PBXTargetDependency */,
+			);
+			name = "gtest_unittest-static";
+			productName = gtest_unittest;
+			productReference = 40C84987101A36850083642A /* gtest_unittest */;
+			productType = "com.apple.product-type.tool";
+		};
+		40C84989101A36A60083642A /* sample1_unittest-static */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 40C84994101A36A60083642A /* Build configuration list for PBXNativeTarget "sample1_unittest-static" */;
+			buildPhases = (
+				40C8498E101A36A60083642A /* Sources */,
+				40C84991101A36A60083642A /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				40C8498A101A36A60083642A /* PBXTargetDependency */,
+				40C8498C101A36A60083642A /* PBXTargetDependency */,
+			);
+			name = "sample1_unittest-static";
+			productName = sample1_unittest;
+			productReference = 40C84997101A36A60083642A /* sample1_unittest-static */;
+			productType = "com.apple.product-type.tool";
+		};
+		8D07F2BC0486CC7A007CD1D0 /* gtest-framework */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 4FADC24208B4156D00ABE55E /* Build configuration list for PBXNativeTarget "gtest-framework" */;
+			buildPhases = (
+				8D07F2C10486CC7A007CD1D0 /* Sources */,
+				8D07F2BD0486CC7A007CD1D0 /* Headers */,
+				404884A50E2F7C0400CF7658 /* Copy Headers Internal */,
+				8D07F2BF0486CC7A007CD1D0 /* Resources */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				40C44AE60E379922008FCC51 /* PBXTargetDependency */,
+				408BEC101046CFE900DEF522 /* PBXTargetDependency */,
+				40C8499C101A36DC0083642A /* PBXTargetDependency */,
+			);
+			name = "gtest-framework";
+			productInstallPath = "$(HOME)/Library/Frameworks";
+			productName = gtest;
+			productReference = 4539C8FF0EC27F6400A70F4C /* gtest.framework */;
+			productType = "com.apple.product-type.framework";
+		};
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+		0867D690FE84028FC02AAC07 /* Project object */ = {
+			isa = PBXProject;
+			buildConfigurationList = 4FADC24608B4156D00ABE55E /* Build configuration list for PBXProject "gtest" */;
+			compatibilityVersion = "Xcode 2.4";
+			hasScannedForEncodings = 1;
+			knownRegions = (
+				English,
+				Japanese,
+				French,
+				German,
+				en,
+			);
+			mainGroup = 0867D691FE84028FC02AAC07 /* gtest */;
+			productRefGroup = 034768DDFF38A45A11DB9C8B /* Products */;
+			projectDirPath = "";
+			projectRoot = "";
+			targets = (
+				8D07F2BC0486CC7A007CD1D0 /* gtest-framework */,
+				40C848F9101A209C0083642A /* gtest-static */,
+				40C8490A101A217E0083642A /* gtest_main-static */,
+				40899F420FFA7184000B29AE /* gtest_unittest-framework */,
+				40C8497A101A36850083642A /* gtest_unittest-static */,
+				4089A0120FFACEFC000B29AE /* sample1_unittest-framework */,
+				40C84989101A36A60083642A /* sample1_unittest-static */,
+				3B238F5F0E828B5400846E11 /* Check */,
+				40C44ADC0E3798F4008FCC51 /* Version Info */,
+			);
+		};
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+		8D07F2BF0486CC7A007CD1D0 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				404884500E2F799B00CF7658 /* README in Resources */,
+				404884AC0E2F7CD900CF7658 /* CHANGES in Resources */,
+				404884AD0E2F7CD900CF7658 /* CONTRIBUTORS in Resources */,
+				404884AE0E2F7CD900CF7658 /* LICENSE in Resources */,
+				40C84978101A36540083642A /* libgtest_main.a in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+		3B238F5E0E828B5400846E11 /* ShellScript */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputPaths = (
+			);
+			outputPaths = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "# Remember, this \"Run Script\" build phase will be executed from $SRCROOT\n/bin/bash Scripts/runtests.sh";
+		};
+		40C44ADB0E3798F4008FCC51 /* Generate Version.h */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputPaths = (
+				"$(SRCROOT)/Scripts/versiongenerate.py",
+				"$(SRCROOT)/../configure.ac",
+			);
+			name = "Generate Version.h";
+			outputPaths = (
+				"$(PROJECT_TEMP_DIR)/Version.h",
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "# Remember, this \"Run Script\" build phase will be executed from $SRCROOT\n/usr/bin/python Scripts/versiongenerate.py ../ $PROJECT_TEMP_DIR";
+		};
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+		40899F400FFA7184000B29AE /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				40899F530FFA72A0000B29AE /* gtest_unittest.cc in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		4089A0100FFACEFC000B29AE /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				4089A0440FFAD1BE000B29AE /* sample1.cc in Sources */,
+				4089A0460FFAD1BE000B29AE /* sample1_unittest.cc in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		40C848F7101A209C0083642A /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				40C848FF101A21150083642A /* gtest-all.cc in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		40C84908101A217E0083642A /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				40C84915101A21DF0083642A /* gtest_main.cc in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		40C8497F101A36850083642A /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				40C84980101A36850083642A /* gtest_unittest.cc in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		40C8498E101A36A60083642A /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				40C8498F101A36A60083642A /* sample1.cc in Sources */,
+				40C84990101A36A60083642A /* sample1_unittest.cc in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		8D07F2C10486CC7A007CD1D0 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				40899F3A0FFA70D4000B29AE /* gtest-all.cc in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXTargetDependency section */
+		40899F9D0FFA740F000B29AE /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = 40899F420FFA7184000B29AE /* gtest_unittest-framework */;
+			targetProxy = 40899F9C0FFA740F000B29AE /* PBXContainerItemProxy */;
+		};
+		4089A0980FFAD34A000B29AE /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = 4089A0120FFACEFC000B29AE /* sample1_unittest-framework */;
+			targetProxy = 4089A0970FFAD34A000B29AE /* PBXContainerItemProxy */;
+		};
+		408BEC101046CFE900DEF522 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = 40C848F9101A209C0083642A /* gtest-static */;
+			targetProxy = 408BEC0F1046CFE900DEF522 /* PBXContainerItemProxy */;
+		};
+		40C44AE60E379922008FCC51 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = 40C44ADC0E3798F4008FCC51 /* Version Info */;
+			targetProxy = 40C44AE50E379922008FCC51 /* PBXContainerItemProxy */;
+		};
+		40C8497B101A36850083642A /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = 40C848F9101A209C0083642A /* gtest-static */;
+			targetProxy = 40C8497C101A36850083642A /* PBXContainerItemProxy */;
+		};
+		40C8497D101A36850083642A /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = 40C8490A101A217E0083642A /* gtest_main-static */;
+			targetProxy = 40C8497E101A36850083642A /* PBXContainerItemProxy */;
+		};
+		40C8498A101A36A60083642A /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = 40C848F9101A209C0083642A /* gtest-static */;
+			targetProxy = 40C8498B101A36A60083642A /* PBXContainerItemProxy */;
+		};
+		40C8498C101A36A60083642A /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = 40C8490A101A217E0083642A /* gtest_main-static */;
+			targetProxy = 40C8498D101A36A60083642A /* PBXContainerItemProxy */;
+		};
+		40C8499C101A36DC0083642A /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = 40C8490A101A217E0083642A /* gtest_main-static */;
+			targetProxy = 40C8499B101A36DC0083642A /* PBXContainerItemProxy */;
+		};
+		40C8499E101A36E50083642A /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = 8D07F2BC0486CC7A007CD1D0 /* gtest-framework */;
+			targetProxy = 40C8499D101A36E50083642A /* PBXContainerItemProxy */;
+		};
+		40C849A0101A36F10083642A /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = 8D07F2BC0486CC7A007CD1D0 /* gtest-framework */;
+			targetProxy = 40C8499F101A36F10083642A /* PBXContainerItemProxy */;
+		};
+		40C849F7101A43440083642A /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = 40C8497A101A36850083642A /* gtest_unittest-static */;
+			targetProxy = 40C849F6101A43440083642A /* PBXContainerItemProxy */;
+		};
+		40C849F9101A43490083642A /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = 40C84989101A36A60083642A /* sample1_unittest-static */;
+			targetProxy = 40C849F8101A43490083642A /* PBXContainerItemProxy */;
+		};
+/* End PBXTargetDependency section */
+
+/* Begin XCBuildConfiguration section */
+		3B238F600E828B5400846E11 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				COPY_PHASE_STRIP = NO;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				PRODUCT_NAME = Check;
+			};
+			name = Debug;
+		};
+		3B238F610E828B5400846E11 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				COPY_PHASE_STRIP = YES;
+				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+				GCC_ENABLE_FIX_AND_CONTINUE = NO;
+				PRODUCT_NAME = Check;
+				ZERO_LINK = NO;
+			};
+			name = Release;
+		};
+		40899F450FFA7185000B29AE /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = ../;
+				PRODUCT_NAME = "gtest_unittest-framework";
+			};
+			name = Debug;
+		};
+		40899F460FFA7185000B29AE /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = ../;
+				PRODUCT_NAME = "gtest_unittest-framework";
+			};
+			name = Release;
+		};
+		4089A0150FFACEFD000B29AE /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				PRODUCT_NAME = "sample1_unittest-framework";
+			};
+			name = Debug;
+		};
+		4089A0160FFACEFD000B29AE /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				PRODUCT_NAME = "sample1_unittest-framework";
+			};
+			name = Release;
+		};
+		40C44ADF0E3798F4008FCC51 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				PRODUCT_NAME = gtest;
+				TARGET_NAME = gtest;
+			};
+			name = Debug;
+		};
+		40C44AE00E3798F4008FCC51 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				PRODUCT_NAME = gtest;
+				TARGET_NAME = gtest;
+			};
+			name = Release;
+		};
+		40C848FB101A209D0083642A /* Debug */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 40899FB30FFA7567000B29AE /* StaticLibraryTarget.xcconfig */;
+			buildSettings = {
+				GCC_INLINES_ARE_PRIVATE_EXTERN = YES;
+				GCC_SYMBOLS_PRIVATE_EXTERN = YES;
+				HEADER_SEARCH_PATHS = (
+					../,
+					../include/,
+				);
+				PRODUCT_NAME = gtest;
+			};
+			name = Debug;
+		};
+		40C848FC101A209D0083642A /* Release */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 40899FB30FFA7567000B29AE /* StaticLibraryTarget.xcconfig */;
+			buildSettings = {
+				GCC_INLINES_ARE_PRIVATE_EXTERN = YES;
+				GCC_SYMBOLS_PRIVATE_EXTERN = YES;
+				HEADER_SEARCH_PATHS = (
+					../,
+					../include/,
+				);
+				PRODUCT_NAME = gtest;
+			};
+			name = Release;
+		};
+		40C8490E101A217F0083642A /* Debug */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 40899FB30FFA7567000B29AE /* StaticLibraryTarget.xcconfig */;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = (
+					../,
+					../include/,
+				);
+				PRODUCT_NAME = gtest_main;
+			};
+			name = Debug;
+		};
+		40C8490F101A217F0083642A /* Release */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 40899FB30FFA7567000B29AE /* StaticLibraryTarget.xcconfig */;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = (
+					../,
+					../include/,
+				);
+				PRODUCT_NAME = gtest_main;
+			};
+			name = Release;
+		};
+		40C84985101A36850083642A /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = ../;
+				PRODUCT_NAME = gtest_unittest;
+			};
+			name = Debug;
+		};
+		40C84986101A36850083642A /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = ../;
+				PRODUCT_NAME = gtest_unittest;
+			};
+			name = Release;
+		};
+		40C84995101A36A60083642A /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				PRODUCT_NAME = "sample1_unittest-static";
+			};
+			name = Debug;
+		};
+		40C84996101A36A60083642A /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				PRODUCT_NAME = "sample1_unittest-static";
+			};
+			name = Release;
+		};
+		4FADC24308B4156D00ABE55E /* Debug */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 40D4CDF20E30E07400294801 /* FrameworkTarget.xcconfig */;
+			buildSettings = {
+				DYLIB_COMPATIBILITY_VERSION = 1;
+				DYLIB_CURRENT_VERSION = 1;
+				HEADER_SEARCH_PATHS = (
+					../,
+					../include/,
+				);
+				INFOPLIST_FILE = Resources/Info.plist;
+				INFOPLIST_PREFIX_HEADER = "$(PROJECT_TEMP_DIR)/Version.h";
+				INFOPLIST_PREPROCESS = YES;
+				PRODUCT_NAME = gtest;
+				VERSIONING_SYSTEM = "apple-generic";
+			};
+			name = Debug;
+		};
+		4FADC24408B4156D00ABE55E /* Release */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 40D4CDF20E30E07400294801 /* FrameworkTarget.xcconfig */;
+			buildSettings = {
+				DYLIB_COMPATIBILITY_VERSION = 1;
+				DYLIB_CURRENT_VERSION = 1;
+				HEADER_SEARCH_PATHS = (
+					../,
+					../include/,
+				);
+				INFOPLIST_FILE = Resources/Info.plist;
+				INFOPLIST_PREFIX_HEADER = "$(PROJECT_TEMP_DIR)/Version.h";
+				INFOPLIST_PREPROCESS = YES;
+				PRODUCT_NAME = gtest;
+				VERSIONING_SYSTEM = "apple-generic";
+			};
+			name = Release;
+		};
+		4FADC24708B4156D00ABE55E /* Debug */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 40D4CDF10E30E07400294801 /* DebugProject.xcconfig */;
+			buildSettings = {
+			};
+			name = Debug;
+		};
+		4FADC24808B4156D00ABE55E /* Release */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 40D4CDF40E30E07400294801 /* ReleaseProject.xcconfig */;
+			buildSettings = {
+			};
+			name = Release;
+		};
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+		3B238FA30E828BB600846E11 /* Build configuration list for PBXAggregateTarget "Check" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				3B238F600E828B5400846E11 /* Debug */,
+				3B238F610E828B5400846E11 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		40899F4A0FFA71BC000B29AE /* Build configuration list for PBXNativeTarget "gtest_unittest-framework" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				40899F450FFA7185000B29AE /* Debug */,
+				40899F460FFA7185000B29AE /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		4089A0240FFACF01000B29AE /* Build configuration list for PBXNativeTarget "sample1_unittest-framework" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				4089A0150FFACEFD000B29AE /* Debug */,
+				4089A0160FFACEFD000B29AE /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		40C44AE40E379905008FCC51 /* Build configuration list for PBXAggregateTarget "Version Info" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				40C44ADF0E3798F4008FCC51 /* Debug */,
+				40C44AE00E3798F4008FCC51 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		40C84902101A212E0083642A /* Build configuration list for PBXNativeTarget "gtest-static" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				40C848FB101A209D0083642A /* Debug */,
+				40C848FC101A209D0083642A /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		40C84912101A21D20083642A /* Build configuration list for PBXNativeTarget "gtest_main-static" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				40C8490E101A217F0083642A /* Debug */,
+				40C8490F101A217F0083642A /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		40C84984101A36850083642A /* Build configuration list for PBXNativeTarget "gtest_unittest-static" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				40C84985101A36850083642A /* Debug */,
+				40C84986101A36850083642A /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		40C84994101A36A60083642A /* Build configuration list for PBXNativeTarget "sample1_unittest-static" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				40C84995101A36A60083642A /* Debug */,
+				40C84996101A36A60083642A /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		4FADC24208B4156D00ABE55E /* Build configuration list for PBXNativeTarget "gtest-framework" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				4FADC24308B4156D00ABE55E /* Debug */,
+				4FADC24408B4156D00ABE55E /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		4FADC24608B4156D00ABE55E /* Build configuration list for PBXProject "gtest" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				4FADC24708B4156D00ABE55E /* Debug */,
+				4FADC24808B4156D00ABE55E /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+/* End XCConfigurationList section */
+	};
+	rootObject = 0867D690FE84028FC02AAC07 /* Project object */;
+}
diff --git a/google-breakpad/src/testing/include/gmock/gmock-actions.h b/google-breakpad/src/testing/include/gmock/gmock-actions.h
new file mode 100644
index 0000000..7e9708e
--- /dev/null
+++ b/google-breakpad/src/testing/include/gmock/gmock-actions.h
@@ -0,0 +1,1078 @@
+// Copyright 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Google Mock - a framework for writing C++ mock classes.
+//
+// This file implements some commonly used actions.
+
+#ifndef GMOCK_INCLUDE_GMOCK_GMOCK_ACTIONS_H_
+#define GMOCK_INCLUDE_GMOCK_GMOCK_ACTIONS_H_
+
+#ifndef _WIN32_WCE
+# include <errno.h>
+#endif
+
+#include <algorithm>
+#include <string>
+
+#include "gmock/internal/gmock-internal-utils.h"
+#include "gmock/internal/gmock-port.h"
+
+namespace testing {
+
+// To implement an action Foo, define:
+//   1. a class FooAction that implements the ActionInterface interface, and
+//   2. a factory function that creates an Action object from a
+//      const FooAction*.
+//
+// The two-level delegation design follows that of Matcher, providing
+// consistency for extension developers.  It also eases ownership
+// management as Action objects can now be copied like plain values.
+
+namespace internal {
+
+template <typename F1, typename F2>
+class ActionAdaptor;
+
+// BuiltInDefaultValue<T>::Get() returns the "built-in" default
+// value for type T, which is NULL when T is a pointer type, 0 when T
+// is a numeric type, false when T is bool, or "" when T is string or
+// std::string.  For any other type T, this value is undefined and the
+// function will abort the process.
+template <typename T>
+class BuiltInDefaultValue {
+ public:
+  // This function returns true iff type T has a built-in default value.
+  static bool Exists() { return false; }
+  static T Get() {
+    Assert(false, __FILE__, __LINE__,
+           "Default action undefined for the function return type.");
+    return internal::Invalid<T>();
+    // The above statement will never be reached, but is required in
+    // order for this function to compile.
+  }
+};
+
+// This partial specialization says that we use the same built-in
+// default value for T and const T.
+template <typename T>
+class BuiltInDefaultValue<const T> {
+ public:
+  static bool Exists() { return BuiltInDefaultValue<T>::Exists(); }
+  static T Get() { return BuiltInDefaultValue<T>::Get(); }
+};
+
+// This partial specialization defines the default values for pointer
+// types.
+template <typename T>
+class BuiltInDefaultValue<T*> {
+ public:
+  static bool Exists() { return true; }
+  static T* Get() { return NULL; }
+};
+
+// The following specializations define the default values for
+// specific types we care about.
+#define GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(type, value) \
+  template <> \
+  class BuiltInDefaultValue<type> { \
+   public: \
+    static bool Exists() { return true; } \
+    static type Get() { return value; } \
+  }
+
+GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(void, );  // NOLINT
+#if GTEST_HAS_GLOBAL_STRING
+GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(::string, "");
+#endif  // GTEST_HAS_GLOBAL_STRING
+GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(::std::string, "");
+GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(bool, false);
+GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(unsigned char, '\0');
+GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(signed char, '\0');
+GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(char, '\0');
+
+// There's no need for a default action for signed wchar_t, as that
+// type is the same as wchar_t for gcc, and invalid for MSVC.
+//
+// There's also no need for a default action for unsigned wchar_t, as
+// that type is the same as unsigned int for gcc, and invalid for
+// MSVC.
+#if GMOCK_WCHAR_T_IS_NATIVE_
+GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(wchar_t, 0U);  // NOLINT
+#endif
+
+GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(unsigned short, 0U);  // NOLINT
+GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(signed short, 0);     // NOLINT
+GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(unsigned int, 0U);
+GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(signed int, 0);
+GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(unsigned long, 0UL);  // NOLINT
+GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(signed long, 0L);     // NOLINT
+GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(UInt64, 0);
+GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(Int64, 0);
+GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(float, 0);
+GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(double, 0);
+
+#undef GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_
+
+}  // namespace internal
+
+// When an unexpected function call is encountered, Google Mock will
+// let it return a default value if the user has specified one for its
+// return type, or if the return type has a built-in default value;
+// otherwise Google Mock won't know what value to return and will have
+// to abort the process.
+//
+// The DefaultValue<T> class allows a user to specify the
+// default value for a type T that is both copyable and publicly
+// destructible (i.e. anything that can be used as a function return
+// type).  The usage is:
+//
+//   // Sets the default value for type T to be foo.
+//   DefaultValue<T>::Set(foo);
+template <typename T>
+class DefaultValue {
+ public:
+  // Sets the default value for type T; requires T to be
+  // copy-constructable and have a public destructor.
+  static void Set(T x) {
+    delete value_;
+    value_ = new T(x);
+  }
+
+  // Unsets the default value for type T.
+  static void Clear() {
+    delete value_;
+    value_ = NULL;
+  }
+
+  // Returns true iff the user has set the default value for type T.
+  static bool IsSet() { return value_ != NULL; }
+
+  // Returns true if T has a default return value set by the user or there
+  // exists a built-in default value.
+  static bool Exists() {
+    return IsSet() || internal::BuiltInDefaultValue<T>::Exists();
+  }
+
+  // Returns the default value for type T if the user has set one;
+  // otherwise returns the built-in default value if there is one;
+  // otherwise aborts the process.
+  static T Get() {
+    return value_ == NULL ?
+        internal::BuiltInDefaultValue<T>::Get() : *value_;
+  }
+
+ private:
+  static const T* value_;
+};
+
+// This partial specialization allows a user to set default values for
+// reference types.
+template <typename T>
+class DefaultValue<T&> {
+ public:
+  // Sets the default value for type T&.
+  static void Set(T& x) {  // NOLINT
+    address_ = &x;
+  }
+
+  // Unsets the default value for type T&.
+  static void Clear() {
+    address_ = NULL;
+  }
+
+  // Returns true iff the user has set the default value for type T&.
+  static bool IsSet() { return address_ != NULL; }
+
+  // Returns true if T has a default return value set by the user or there
+  // exists a built-in default value.
+  static bool Exists() {
+    return IsSet() || internal::BuiltInDefaultValue<T&>::Exists();
+  }
+
+  // Returns the default value for type T& if the user has set one;
+  // otherwise returns the built-in default value if there is one;
+  // otherwise aborts the process.
+  static T& Get() {
+    return address_ == NULL ?
+        internal::BuiltInDefaultValue<T&>::Get() : *address_;
+  }
+
+ private:
+  static T* address_;
+};
+
+// This specialization allows DefaultValue<void>::Get() to
+// compile.
+template <>
+class DefaultValue<void> {
+ public:
+  static bool Exists() { return true; }
+  static void Get() {}
+};
+
+// Points to the user-set default value for type T.
+template <typename T>
+const T* DefaultValue<T>::value_ = NULL;
+
+// Points to the user-set default value for type T&.
+template <typename T>
+T* DefaultValue<T&>::address_ = NULL;
+
+// Implement this interface to define an action for function type F.
+template <typename F>
+class ActionInterface {
+ public:
+  typedef typename internal::Function<F>::Result Result;
+  typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
+
+  ActionInterface() {}
+  virtual ~ActionInterface() {}
+
+  // Performs the action.  This method is not const, as in general an
+  // action can have side effects and be stateful.  For example, a
+  // get-the-next-element-from-the-collection action will need to
+  // remember the current element.
+  virtual Result Perform(const ArgumentTuple& args) = 0;
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(ActionInterface);
+};
+
+// An Action<F> is a copyable and IMMUTABLE (except by assignment)
+// object that represents an action to be taken when a mock function
+// of type F is called.  The implementation of Action<T> is just a
+// linked_ptr to const ActionInterface<T>, so copying is fairly cheap.
+// Don't inherit from Action!
+//
+// You can view an object implementing ActionInterface<F> as a
+// concrete action (including its current state), and an Action<F>
+// object as a handle to it.
+template <typename F>
+class Action {
+ public:
+  typedef typename internal::Function<F>::Result Result;
+  typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
+
+  // Constructs a null Action.  Needed for storing Action objects in
+  // STL containers.
+  Action() : impl_(NULL) {}
+
+  // Constructs an Action from its implementation.  A NULL impl is
+  // used to represent the "do-default" action.
+  explicit Action(ActionInterface<F>* impl) : impl_(impl) {}
+
+  // Copy constructor.
+  Action(const Action& action) : impl_(action.impl_) {}
+
+  // This constructor allows us to turn an Action<Func> object into an
+  // Action<F>, as long as F's arguments can be implicitly converted
+  // to Func's and Func's return type can be implicitly converted to
+  // F's.
+  template <typename Func>
+  explicit Action(const Action<Func>& action);
+
+  // Returns true iff this is the DoDefault() action.
+  bool IsDoDefault() const { return impl_.get() == NULL; }
+
+  // Performs the action.  Note that this method is const even though
+  // the corresponding method in ActionInterface is not.  The reason
+  // is that a const Action<F> means that it cannot be re-bound to
+  // another concrete action, not that the concrete action it binds to
+  // cannot change state.  (Think of the difference between a const
+  // pointer and a pointer to const.)
+  Result Perform(const ArgumentTuple& args) const {
+    internal::Assert(
+        !IsDoDefault(), __FILE__, __LINE__,
+        "You are using DoDefault() inside a composite action like "
+        "DoAll() or WithArgs().  This is not supported for technical "
+        "reasons.  Please instead spell out the default action, or "
+        "assign the default action to an Action variable and use "
+        "the variable in various places.");
+    return impl_->Perform(args);
+  }
+
+ private:
+  template <typename F1, typename F2>
+  friend class internal::ActionAdaptor;
+
+  internal::linked_ptr<ActionInterface<F> > impl_;
+};
+
+// The PolymorphicAction class template makes it easy to implement a
+// polymorphic action (i.e. an action that can be used in mock
+// functions of than one type, e.g. Return()).
+//
+// To define a polymorphic action, a user first provides a COPYABLE
+// implementation class that has a Perform() method template:
+//
+//   class FooAction {
+//    public:
+//     template <typename Result, typename ArgumentTuple>
+//     Result Perform(const ArgumentTuple& args) const {
+//       // Processes the arguments and returns a result, using
+//       // tr1::get<N>(args) to get the N-th (0-based) argument in the tuple.
+//     }
+//     ...
+//   };
+//
+// Then the user creates the polymorphic action using
+// MakePolymorphicAction(object) where object has type FooAction.  See
+// the definition of Return(void) and SetArgumentPointee<N>(value) for
+// complete examples.
+template <typename Impl>
+class PolymorphicAction {
+ public:
+  explicit PolymorphicAction(const Impl& impl) : impl_(impl) {}
+
+  template <typename F>
+  operator Action<F>() const {
+    return Action<F>(new MonomorphicImpl<F>(impl_));
+  }
+
+ private:
+  template <typename F>
+  class MonomorphicImpl : public ActionInterface<F> {
+   public:
+    typedef typename internal::Function<F>::Result Result;
+    typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
+
+    explicit MonomorphicImpl(const Impl& impl) : impl_(impl) {}
+
+    virtual Result Perform(const ArgumentTuple& args) {
+      return impl_.template Perform<Result>(args);
+    }
+
+   private:
+    Impl impl_;
+
+    GTEST_DISALLOW_ASSIGN_(MonomorphicImpl);
+  };
+
+  Impl impl_;
+
+  GTEST_DISALLOW_ASSIGN_(PolymorphicAction);
+};
+
+// Creates an Action from its implementation and returns it.  The
+// created Action object owns the implementation.
+template <typename F>
+Action<F> MakeAction(ActionInterface<F>* impl) {
+  return Action<F>(impl);
+}
+
+// Creates a polymorphic action from its implementation.  This is
+// easier to use than the PolymorphicAction<Impl> constructor as it
+// doesn't require you to explicitly write the template argument, e.g.
+//
+//   MakePolymorphicAction(foo);
+// vs
+//   PolymorphicAction<TypeOfFoo>(foo);
+template <typename Impl>
+inline PolymorphicAction<Impl> MakePolymorphicAction(const Impl& impl) {
+  return PolymorphicAction<Impl>(impl);
+}
+
+namespace internal {
+
+// Allows an Action<F2> object to pose as an Action<F1>, as long as F2
+// and F1 are compatible.
+template <typename F1, typename F2>
+class ActionAdaptor : public ActionInterface<F1> {
+ public:
+  typedef typename internal::Function<F1>::Result Result;
+  typedef typename internal::Function<F1>::ArgumentTuple ArgumentTuple;
+
+  explicit ActionAdaptor(const Action<F2>& from) : impl_(from.impl_) {}
+
+  virtual Result Perform(const ArgumentTuple& args) {
+    return impl_->Perform(args);
+  }
+
+ private:
+  const internal::linked_ptr<ActionInterface<F2> > impl_;
+
+  GTEST_DISALLOW_ASSIGN_(ActionAdaptor);
+};
+
+// Implements the polymorphic Return(x) action, which can be used in
+// any function that returns the type of x, regardless of the argument
+// types.
+//
+// Note: The value passed into Return must be converted into
+// Function<F>::Result when this action is cast to Action<F> rather than
+// when that action is performed. This is important in scenarios like
+//
+// MOCK_METHOD1(Method, T(U));
+// ...
+// {
+//   Foo foo;
+//   X x(&foo);
+//   EXPECT_CALL(mock, Method(_)).WillOnce(Return(x));
+// }
+//
+// In the example above the variable x holds reference to foo which leaves
+// scope and gets destroyed.  If copying X just copies a reference to foo,
+// that copy will be left with a hanging reference.  If conversion to T
+// makes a copy of foo, the above code is safe. To support that scenario, we
+// need to make sure that the type conversion happens inside the EXPECT_CALL
+// statement, and conversion of the result of Return to Action<T(U)> is a
+// good place for that.
+//
+template <typename R>
+class ReturnAction {
+ public:
+  // Constructs a ReturnAction object from the value to be returned.
+  // 'value' is passed by value instead of by const reference in order
+  // to allow Return("string literal") to compile.
+  explicit ReturnAction(R value) : value_(value) {}
+
+  // This template type conversion operator allows Return(x) to be
+  // used in ANY function that returns x's type.
+  template <typename F>
+  operator Action<F>() const {
+    // Assert statement belongs here because this is the best place to verify
+    // conditions on F. It produces the clearest error messages
+    // in most compilers.
+    // Impl really belongs in this scope as a local class but can't
+    // because MSVC produces duplicate symbols in different translation units
+    // in this case. Until MS fixes that bug we put Impl into the class scope
+    // and put the typedef both here (for use in assert statement) and
+    // in the Impl class. But both definitions must be the same.
+    typedef typename Function<F>::Result Result;
+    GTEST_COMPILE_ASSERT_(
+        !internal::is_reference<Result>::value,
+        use_ReturnRef_instead_of_Return_to_return_a_reference);
+    return Action<F>(new Impl<F>(value_));
+  }
+
+ private:
+  // Implements the Return(x) action for a particular function type F.
+  template <typename F>
+  class Impl : public ActionInterface<F> {
+   public:
+    typedef typename Function<F>::Result Result;
+    typedef typename Function<F>::ArgumentTuple ArgumentTuple;
+
+    // The implicit cast is necessary when Result has more than one
+    // single-argument constructor (e.g. Result is std::vector<int>) and R
+    // has a type conversion operator template.  In that case, value_(value)
+    // won't compile as the compiler doesn't known which constructor of
+    // Result to call.  ImplicitCast_ forces the compiler to convert R to
+    // Result without considering explicit constructors, thus resolving the
+    // ambiguity. value_ is then initialized using its copy constructor.
+    explicit Impl(R value)
+        : value_(::testing::internal::ImplicitCast_<Result>(value)) {}
+
+    virtual Result Perform(const ArgumentTuple&) { return value_; }
+
+   private:
+    GTEST_COMPILE_ASSERT_(!internal::is_reference<Result>::value,
+                          Result_cannot_be_a_reference_type);
+    Result value_;
+
+    GTEST_DISALLOW_ASSIGN_(Impl);
+  };
+
+  R value_;
+
+  GTEST_DISALLOW_ASSIGN_(ReturnAction);
+};
+
+// Implements the ReturnNull() action.
+class ReturnNullAction {
+ public:
+  // Allows ReturnNull() to be used in any pointer-returning function.
+  template <typename Result, typename ArgumentTuple>
+  static Result Perform(const ArgumentTuple&) {
+    GTEST_COMPILE_ASSERT_(internal::is_pointer<Result>::value,
+                          ReturnNull_can_be_used_to_return_a_pointer_only);
+    return NULL;
+  }
+};
+
+// Implements the Return() action.
+class ReturnVoidAction {
+ public:
+  // Allows Return() to be used in any void-returning function.
+  template <typename Result, typename ArgumentTuple>
+  static void Perform(const ArgumentTuple&) {
+    CompileAssertTypesEqual<void, Result>();
+  }
+};
+
+// Implements the polymorphic ReturnRef(x) action, which can be used
+// in any function that returns a reference to the type of x,
+// regardless of the argument types.
+template <typename T>
+class ReturnRefAction {
+ public:
+  // Constructs a ReturnRefAction object from the reference to be returned.
+  explicit ReturnRefAction(T& ref) : ref_(ref) {}  // NOLINT
+
+  // This template type conversion operator allows ReturnRef(x) to be
+  // used in ANY function that returns a reference to x's type.
+  template <typename F>
+  operator Action<F>() const {
+    typedef typename Function<F>::Result Result;
+    // Asserts that the function return type is a reference.  This
+    // catches the user error of using ReturnRef(x) when Return(x)
+    // should be used, and generates some helpful error message.
+    GTEST_COMPILE_ASSERT_(internal::is_reference<Result>::value,
+                          use_Return_instead_of_ReturnRef_to_return_a_value);
+    return Action<F>(new Impl<F>(ref_));
+  }
+
+ private:
+  // Implements the ReturnRef(x) action for a particular function type F.
+  template <typename F>
+  class Impl : public ActionInterface<F> {
+   public:
+    typedef typename Function<F>::Result Result;
+    typedef typename Function<F>::ArgumentTuple ArgumentTuple;
+
+    explicit Impl(T& ref) : ref_(ref) {}  // NOLINT
+
+    virtual Result Perform(const ArgumentTuple&) {
+      return ref_;
+    }
+
+   private:
+    T& ref_;
+
+    GTEST_DISALLOW_ASSIGN_(Impl);
+  };
+
+  T& ref_;
+
+  GTEST_DISALLOW_ASSIGN_(ReturnRefAction);
+};
+
+// Implements the polymorphic ReturnRefOfCopy(x) action, which can be
+// used in any function that returns a reference to the type of x,
+// regardless of the argument types.
+template <typename T>
+class ReturnRefOfCopyAction {
+ public:
+  // Constructs a ReturnRefOfCopyAction object from the reference to
+  // be returned.
+  explicit ReturnRefOfCopyAction(const T& value) : value_(value) {}  // NOLINT
+
+  // This template type conversion operator allows ReturnRefOfCopy(x) to be
+  // used in ANY function that returns a reference to x's type.
+  template <typename F>
+  operator Action<F>() const {
+    typedef typename Function<F>::Result Result;
+    // Asserts that the function return type is a reference.  This
+    // catches the user error of using ReturnRefOfCopy(x) when Return(x)
+    // should be used, and generates some helpful error message.
+    GTEST_COMPILE_ASSERT_(
+        internal::is_reference<Result>::value,
+        use_Return_instead_of_ReturnRefOfCopy_to_return_a_value);
+    return Action<F>(new Impl<F>(value_));
+  }
+
+ private:
+  // Implements the ReturnRefOfCopy(x) action for a particular function type F.
+  template <typename F>
+  class Impl : public ActionInterface<F> {
+   public:
+    typedef typename Function<F>::Result Result;
+    typedef typename Function<F>::ArgumentTuple ArgumentTuple;
+
+    explicit Impl(const T& value) : value_(value) {}  // NOLINT
+
+    virtual Result Perform(const ArgumentTuple&) {
+      return value_;
+    }
+
+   private:
+    T value_;
+
+    GTEST_DISALLOW_ASSIGN_(Impl);
+  };
+
+  const T value_;
+
+  GTEST_DISALLOW_ASSIGN_(ReturnRefOfCopyAction);
+};
+
+// Implements the polymorphic DoDefault() action.
+class DoDefaultAction {
+ public:
+  // This template type conversion operator allows DoDefault() to be
+  // used in any function.
+  template <typename F>
+  operator Action<F>() const { return Action<F>(NULL); }
+};
+
+// Implements the Assign action to set a given pointer referent to a
+// particular value.
+template <typename T1, typename T2>
+class AssignAction {
+ public:
+  AssignAction(T1* ptr, T2 value) : ptr_(ptr), value_(value) {}
+
+  template <typename Result, typename ArgumentTuple>
+  void Perform(const ArgumentTuple& /* args */) const {
+    *ptr_ = value_;
+  }
+
+ private:
+  T1* const ptr_;
+  const T2 value_;
+
+  GTEST_DISALLOW_ASSIGN_(AssignAction);
+};
+
+#if !GTEST_OS_WINDOWS_MOBILE
+
+// Implements the SetErrnoAndReturn action to simulate return from
+// various system calls and libc functions.
+template <typename T>
+class SetErrnoAndReturnAction {
+ public:
+  SetErrnoAndReturnAction(int errno_value, T result)
+      : errno_(errno_value),
+        result_(result) {}
+  template <typename Result, typename ArgumentTuple>
+  Result Perform(const ArgumentTuple& /* args */) const {
+    errno = errno_;
+    return result_;
+  }
+
+ private:
+  const int errno_;
+  const T result_;
+
+  GTEST_DISALLOW_ASSIGN_(SetErrnoAndReturnAction);
+};
+
+#endif  // !GTEST_OS_WINDOWS_MOBILE
+
+// Implements the SetArgumentPointee<N>(x) action for any function
+// whose N-th argument (0-based) is a pointer to x's type.  The
+// template parameter kIsProto is true iff type A is ProtocolMessage,
+// proto2::Message, or a sub-class of those.
+template <size_t N, typename A, bool kIsProto>
+class SetArgumentPointeeAction {
+ public:
+  // Constructs an action that sets the variable pointed to by the
+  // N-th function argument to 'value'.
+  explicit SetArgumentPointeeAction(const A& value) : value_(value) {}
+
+  template <typename Result, typename ArgumentTuple>
+  void Perform(const ArgumentTuple& args) const {
+    CompileAssertTypesEqual<void, Result>();
+    *::std::tr1::get<N>(args) = value_;
+  }
+
+ private:
+  const A value_;
+
+  GTEST_DISALLOW_ASSIGN_(SetArgumentPointeeAction);
+};
+
+template <size_t N, typename Proto>
+class SetArgumentPointeeAction<N, Proto, true> {
+ public:
+  // Constructs an action that sets the variable pointed to by the
+  // N-th function argument to 'proto'.  Both ProtocolMessage and
+  // proto2::Message have the CopyFrom() method, so the same
+  // implementation works for both.
+  explicit SetArgumentPointeeAction(const Proto& proto) : proto_(new Proto) {
+    proto_->CopyFrom(proto);
+  }
+
+  template <typename Result, typename ArgumentTuple>
+  void Perform(const ArgumentTuple& args) const {
+    CompileAssertTypesEqual<void, Result>();
+    ::std::tr1::get<N>(args)->CopyFrom(*proto_);
+  }
+
+ private:
+  const internal::linked_ptr<Proto> proto_;
+
+  GTEST_DISALLOW_ASSIGN_(SetArgumentPointeeAction);
+};
+
+// Implements the InvokeWithoutArgs(f) action.  The template argument
+// FunctionImpl is the implementation type of f, which can be either a
+// function pointer or a functor.  InvokeWithoutArgs(f) can be used as an
+// Action<F> as long as f's type is compatible with F (i.e. f can be
+// assigned to a tr1::function<F>).
+template <typename FunctionImpl>
+class InvokeWithoutArgsAction {
+ public:
+  // The c'tor makes a copy of function_impl (either a function
+  // pointer or a functor).
+  explicit InvokeWithoutArgsAction(FunctionImpl function_impl)
+      : function_impl_(function_impl) {}
+
+  // Allows InvokeWithoutArgs(f) to be used as any action whose type is
+  // compatible with f.
+  template <typename Result, typename ArgumentTuple>
+  Result Perform(const ArgumentTuple&) { return function_impl_(); }
+
+ private:
+  FunctionImpl function_impl_;
+
+  GTEST_DISALLOW_ASSIGN_(InvokeWithoutArgsAction);
+};
+
+// Implements the InvokeWithoutArgs(object_ptr, &Class::Method) action.
+template <class Class, typename MethodPtr>
+class InvokeMethodWithoutArgsAction {
+ public:
+  InvokeMethodWithoutArgsAction(Class* obj_ptr, MethodPtr method_ptr)
+      : obj_ptr_(obj_ptr), method_ptr_(method_ptr) {}
+
+  template <typename Result, typename ArgumentTuple>
+  Result Perform(const ArgumentTuple&) const {
+    return (obj_ptr_->*method_ptr_)();
+  }
+
+ private:
+  Class* const obj_ptr_;
+  const MethodPtr method_ptr_;
+
+  GTEST_DISALLOW_ASSIGN_(InvokeMethodWithoutArgsAction);
+};
+
+// Implements the IgnoreResult(action) action.
+template <typename A>
+class IgnoreResultAction {
+ public:
+  explicit IgnoreResultAction(const A& action) : action_(action) {}
+
+  template <typename F>
+  operator Action<F>() const {
+    // Assert statement belongs here because this is the best place to verify
+    // conditions on F. It produces the clearest error messages
+    // in most compilers.
+    // Impl really belongs in this scope as a local class but can't
+    // because MSVC produces duplicate symbols in different translation units
+    // in this case. Until MS fixes that bug we put Impl into the class scope
+    // and put the typedef both here (for use in assert statement) and
+    // in the Impl class. But both definitions must be the same.
+    typedef typename internal::Function<F>::Result Result;
+
+    // Asserts at compile time that F returns void.
+    CompileAssertTypesEqual<void, Result>();
+
+    return Action<F>(new Impl<F>(action_));
+  }
+
+ private:
+  template <typename F>
+  class Impl : public ActionInterface<F> {
+   public:
+    typedef typename internal::Function<F>::Result Result;
+    typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
+
+    explicit Impl(const A& action) : action_(action) {}
+
+    virtual void Perform(const ArgumentTuple& args) {
+      // Performs the action and ignores its result.
+      action_.Perform(args);
+    }
+
+   private:
+    // Type OriginalFunction is the same as F except that its return
+    // type is IgnoredValue.
+    typedef typename internal::Function<F>::MakeResultIgnoredValue
+        OriginalFunction;
+
+    const Action<OriginalFunction> action_;
+
+    GTEST_DISALLOW_ASSIGN_(Impl);
+  };
+
+  const A action_;
+
+  GTEST_DISALLOW_ASSIGN_(IgnoreResultAction);
+};
+
+// A ReferenceWrapper<T> object represents a reference to type T,
+// which can be either const or not.  It can be explicitly converted
+// from, and implicitly converted to, a T&.  Unlike a reference,
+// ReferenceWrapper<T> can be copied and can survive template type
+// inference.  This is used to support by-reference arguments in the
+// InvokeArgument<N>(...) action.  The idea was from "reference
+// wrappers" in tr1, which we don't have in our source tree yet.
+template <typename T>
+class ReferenceWrapper {
+ public:
+  // Constructs a ReferenceWrapper<T> object from a T&.
+  explicit ReferenceWrapper(T& l_value) : pointer_(&l_value) {}  // NOLINT
+
+  // Allows a ReferenceWrapper<T> object to be implicitly converted to
+  // a T&.
+  operator T&() const { return *pointer_; }
+ private:
+  T* pointer_;
+};
+
+// Allows the expression ByRef(x) to be printed as a reference to x.
+template <typename T>
+void PrintTo(const ReferenceWrapper<T>& ref, ::std::ostream* os) {
+  T& value = ref;
+  UniversalPrinter<T&>::Print(value, os);
+}
+
+// Does two actions sequentially.  Used for implementing the DoAll(a1,
+// a2, ...) action.
+template <typename Action1, typename Action2>
+class DoBothAction {
+ public:
+  DoBothAction(Action1 action1, Action2 action2)
+      : action1_(action1), action2_(action2) {}
+
+  // This template type conversion operator allows DoAll(a1, ..., a_n)
+  // to be used in ANY function of compatible type.
+  template <typename F>
+  operator Action<F>() const {
+    return Action<F>(new Impl<F>(action1_, action2_));
+  }
+
+ private:
+  // Implements the DoAll(...) action for a particular function type F.
+  template <typename F>
+  class Impl : public ActionInterface<F> {
+   public:
+    typedef typename Function<F>::Result Result;
+    typedef typename Function<F>::ArgumentTuple ArgumentTuple;
+    typedef typename Function<F>::MakeResultVoid VoidResult;
+
+    Impl(const Action<VoidResult>& action1, const Action<F>& action2)
+        : action1_(action1), action2_(action2) {}
+
+    virtual Result Perform(const ArgumentTuple& args) {
+      action1_.Perform(args);
+      return action2_.Perform(args);
+    }
+
+   private:
+    const Action<VoidResult> action1_;
+    const Action<F> action2_;
+
+    GTEST_DISALLOW_ASSIGN_(Impl);
+  };
+
+  Action1 action1_;
+  Action2 action2_;
+
+  GTEST_DISALLOW_ASSIGN_(DoBothAction);
+};
+
+}  // namespace internal
+
+// An Unused object can be implicitly constructed from ANY value.
+// This is handy when defining actions that ignore some or all of the
+// mock function arguments.  For example, given
+//
+//   MOCK_METHOD3(Foo, double(const string& label, double x, double y));
+//   MOCK_METHOD3(Bar, double(int index, double x, double y));
+//
+// instead of
+//
+//   double DistanceToOriginWithLabel(const string& label, double x, double y) {
+//     return sqrt(x*x + y*y);
+//   }
+//   double DistanceToOriginWithIndex(int index, double x, double y) {
+//     return sqrt(x*x + y*y);
+//   }
+//   ...
+//   EXEPCT_CALL(mock, Foo("abc", _, _))
+//       .WillOnce(Invoke(DistanceToOriginWithLabel));
+//   EXEPCT_CALL(mock, Bar(5, _, _))
+//       .WillOnce(Invoke(DistanceToOriginWithIndex));
+//
+// you could write
+//
+//   // We can declare any uninteresting argument as Unused.
+//   double DistanceToOrigin(Unused, double x, double y) {
+//     return sqrt(x*x + y*y);
+//   }
+//   ...
+//   EXEPCT_CALL(mock, Foo("abc", _, _)).WillOnce(Invoke(DistanceToOrigin));
+//   EXEPCT_CALL(mock, Bar(5, _, _)).WillOnce(Invoke(DistanceToOrigin));
+typedef internal::IgnoredValue Unused;
+
+// This constructor allows us to turn an Action<From> object into an
+// Action<To>, as long as To's arguments can be implicitly converted
+// to From's and From's return type cann be implicitly converted to
+// To's.
+template <typename To>
+template <typename From>
+Action<To>::Action(const Action<From>& from)
+    : impl_(new internal::ActionAdaptor<To, From>(from)) {}
+
+// Creates an action that returns 'value'.  'value' is passed by value
+// instead of const reference - otherwise Return("string literal")
+// will trigger a compiler error about using array as initializer.
+template <typename R>
+internal::ReturnAction<R> Return(R value) {
+  return internal::ReturnAction<R>(value);
+}
+
+// Creates an action that returns NULL.
+inline PolymorphicAction<internal::ReturnNullAction> ReturnNull() {
+  return MakePolymorphicAction(internal::ReturnNullAction());
+}
+
+// Creates an action that returns from a void function.
+inline PolymorphicAction<internal::ReturnVoidAction> Return() {
+  return MakePolymorphicAction(internal::ReturnVoidAction());
+}
+
+// Creates an action that returns the reference to a variable.
+template <typename R>
+inline internal::ReturnRefAction<R> ReturnRef(R& x) {  // NOLINT
+  return internal::ReturnRefAction<R>(x);
+}
+
+// Creates an action that returns the reference to a copy of the
+// argument.  The copy is created when the action is constructed and
+// lives as long as the action.
+template <typename R>
+inline internal::ReturnRefOfCopyAction<R> ReturnRefOfCopy(const R& x) {
+  return internal::ReturnRefOfCopyAction<R>(x);
+}
+
+// Creates an action that does the default action for the give mock function.
+inline internal::DoDefaultAction DoDefault() {
+  return internal::DoDefaultAction();
+}
+
+// Creates an action that sets the variable pointed by the N-th
+// (0-based) function argument to 'value'.
+template <size_t N, typename T>
+PolymorphicAction<
+  internal::SetArgumentPointeeAction<
+    N, T, internal::IsAProtocolMessage<T>::value> >
+SetArgPointee(const T& x) {
+  return MakePolymorphicAction(internal::SetArgumentPointeeAction<
+      N, T, internal::IsAProtocolMessage<T>::value>(x));
+}
+
+#if !((GTEST_GCC_VER_ && GTEST_GCC_VER_ < 40000) || GTEST_OS_SYMBIAN)
+// This overload allows SetArgPointee() to accept a string literal.
+// GCC prior to the version 4.0 and Symbian C++ compiler cannot distinguish
+// this overload from the templated version and emit a compile error.
+template <size_t N>
+PolymorphicAction<
+  internal::SetArgumentPointeeAction<N, const char*, false> >
+SetArgPointee(const char* p) {
+  return MakePolymorphicAction(internal::SetArgumentPointeeAction<
+      N, const char*, false>(p));
+}
+
+template <size_t N>
+PolymorphicAction<
+  internal::SetArgumentPointeeAction<N, const wchar_t*, false> >
+SetArgPointee(const wchar_t* p) {
+  return MakePolymorphicAction(internal::SetArgumentPointeeAction<
+      N, const wchar_t*, false>(p));
+}
+#endif
+
+// The following version is DEPRECATED.
+template <size_t N, typename T>
+PolymorphicAction<
+  internal::SetArgumentPointeeAction<
+    N, T, internal::IsAProtocolMessage<T>::value> >
+SetArgumentPointee(const T& x) {
+  return MakePolymorphicAction(internal::SetArgumentPointeeAction<
+      N, T, internal::IsAProtocolMessage<T>::value>(x));
+}
+
+// Creates an action that sets a pointer referent to a given value.
+template <typename T1, typename T2>
+PolymorphicAction<internal::AssignAction<T1, T2> > Assign(T1* ptr, T2 val) {
+  return MakePolymorphicAction(internal::AssignAction<T1, T2>(ptr, val));
+}
+
+#if !GTEST_OS_WINDOWS_MOBILE
+
+// Creates an action that sets errno and returns the appropriate error.
+template <typename T>
+PolymorphicAction<internal::SetErrnoAndReturnAction<T> >
+SetErrnoAndReturn(int errval, T result) {
+  return MakePolymorphicAction(
+      internal::SetErrnoAndReturnAction<T>(errval, result));
+}
+
+#endif  // !GTEST_OS_WINDOWS_MOBILE
+
+// Various overloads for InvokeWithoutArgs().
+
+// Creates an action that invokes 'function_impl' with no argument.
+template <typename FunctionImpl>
+PolymorphicAction<internal::InvokeWithoutArgsAction<FunctionImpl> >
+InvokeWithoutArgs(FunctionImpl function_impl) {
+  return MakePolymorphicAction(
+      internal::InvokeWithoutArgsAction<FunctionImpl>(function_impl));
+}
+
+// Creates an action that invokes the given method on the given object
+// with no argument.
+template <class Class, typename MethodPtr>
+PolymorphicAction<internal::InvokeMethodWithoutArgsAction<Class, MethodPtr> >
+InvokeWithoutArgs(Class* obj_ptr, MethodPtr method_ptr) {
+  return MakePolymorphicAction(
+      internal::InvokeMethodWithoutArgsAction<Class, MethodPtr>(
+          obj_ptr, method_ptr));
+}
+
+// Creates an action that performs an_action and throws away its
+// result.  In other words, it changes the return type of an_action to
+// void.  an_action MUST NOT return void, or the code won't compile.
+template <typename A>
+inline internal::IgnoreResultAction<A> IgnoreResult(const A& an_action) {
+  return internal::IgnoreResultAction<A>(an_action);
+}
+
+// Creates a reference wrapper for the given L-value.  If necessary,
+// you can explicitly specify the type of the reference.  For example,
+// suppose 'derived' is an object of type Derived, ByRef(derived)
+// would wrap a Derived&.  If you want to wrap a const Base& instead,
+// where Base is a base class of Derived, just write:
+//
+//   ByRef<const Base>(derived)
+template <typename T>
+inline internal::ReferenceWrapper<T> ByRef(T& l_value) {  // NOLINT
+  return internal::ReferenceWrapper<T>(l_value);
+}
+
+}  // namespace testing
+
+#endif  // GMOCK_INCLUDE_GMOCK_GMOCK_ACTIONS_H_
diff --git a/google-breakpad/src/testing/include/gmock/gmock-cardinalities.h b/google-breakpad/src/testing/include/gmock/gmock-cardinalities.h
new file mode 100644
index 0000000..fc315f9
--- /dev/null
+++ b/google-breakpad/src/testing/include/gmock/gmock-cardinalities.h
@@ -0,0 +1,147 @@
+// Copyright 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Google Mock - a framework for writing C++ mock classes.
+//
+// This file implements some commonly used cardinalities.  More
+// cardinalities can be defined by the user implementing the
+// CardinalityInterface interface if necessary.
+
+#ifndef GMOCK_INCLUDE_GMOCK_GMOCK_CARDINALITIES_H_
+#define GMOCK_INCLUDE_GMOCK_GMOCK_CARDINALITIES_H_
+
+#include <limits.h>
+#include <ostream>  // NOLINT
+#include "gmock/internal/gmock-port.h"
+#include "gtest/gtest.h"
+
+namespace testing {
+
+// To implement a cardinality Foo, define:
+//   1. a class FooCardinality that implements the
+//      CardinalityInterface interface, and
+//   2. a factory function that creates a Cardinality object from a
+//      const FooCardinality*.
+//
+// The two-level delegation design follows that of Matcher, providing
+// consistency for extension developers.  It also eases ownership
+// management as Cardinality objects can now be copied like plain values.
+
+// The implementation of a cardinality.
+class CardinalityInterface {
+ public:
+  virtual ~CardinalityInterface() {}
+
+  // Conservative estimate on the lower/upper bound of the number of
+  // calls allowed.
+  virtual int ConservativeLowerBound() const { return 0; }
+  virtual int ConservativeUpperBound() const { return INT_MAX; }
+
+  // Returns true iff call_count calls will satisfy this cardinality.
+  virtual bool IsSatisfiedByCallCount(int call_count) const = 0;
+
+  // Returns true iff call_count calls will saturate this cardinality.
+  virtual bool IsSaturatedByCallCount(int call_count) const = 0;
+
+  // Describes self to an ostream.
+  virtual void DescribeTo(::std::ostream* os) const = 0;
+};
+
+// A Cardinality is a copyable and IMMUTABLE (except by assignment)
+// object that specifies how many times a mock function is expected to
+// be called.  The implementation of Cardinality is just a linked_ptr
+// to const CardinalityInterface, so copying is fairly cheap.
+// Don't inherit from Cardinality!
+class GTEST_API_ Cardinality {
+ public:
+  // Constructs a null cardinality.  Needed for storing Cardinality
+  // objects in STL containers.
+  Cardinality() {}
+
+  // Constructs a Cardinality from its implementation.
+  explicit Cardinality(const CardinalityInterface* impl) : impl_(impl) {}
+
+  // Conservative estimate on the lower/upper bound of the number of
+  // calls allowed.
+  int ConservativeLowerBound() const { return impl_->ConservativeLowerBound(); }
+  int ConservativeUpperBound() const { return impl_->ConservativeUpperBound(); }
+
+  // Returns true iff call_count calls will satisfy this cardinality.
+  bool IsSatisfiedByCallCount(int call_count) const {
+    return impl_->IsSatisfiedByCallCount(call_count);
+  }
+
+  // Returns true iff call_count calls will saturate this cardinality.
+  bool IsSaturatedByCallCount(int call_count) const {
+    return impl_->IsSaturatedByCallCount(call_count);
+  }
+
+  // Returns true iff call_count calls will over-saturate this
+  // cardinality, i.e. exceed the maximum number of allowed calls.
+  bool IsOverSaturatedByCallCount(int call_count) const {
+    return impl_->IsSaturatedByCallCount(call_count) &&
+        !impl_->IsSatisfiedByCallCount(call_count);
+  }
+
+  // Describes self to an ostream
+  void DescribeTo(::std::ostream* os) const { impl_->DescribeTo(os); }
+
+  // Describes the given actual call count to an ostream.
+  static void DescribeActualCallCountTo(int actual_call_count,
+                                        ::std::ostream* os);
+
+ private:
+  internal::linked_ptr<const CardinalityInterface> impl_;
+};
+
+// Creates a cardinality that allows at least n calls.
+GTEST_API_ Cardinality AtLeast(int n);
+
+// Creates a cardinality that allows at most n calls.
+GTEST_API_ Cardinality AtMost(int n);
+
+// Creates a cardinality that allows any number of calls.
+GTEST_API_ Cardinality AnyNumber();
+
+// Creates a cardinality that allows between min and max calls.
+GTEST_API_ Cardinality Between(int min, int max);
+
+// Creates a cardinality that allows exactly n calls.
+GTEST_API_ Cardinality Exactly(int n);
+
+// Creates a cardinality from its implementation.
+inline Cardinality MakeCardinality(const CardinalityInterface* c) {
+  return Cardinality(c);
+}
+
+}  // namespace testing
+
+#endif  // GMOCK_INCLUDE_GMOCK_GMOCK_CARDINALITIES_H_
diff --git a/google-breakpad/src/testing/include/gmock/gmock-generated-actions.h b/google-breakpad/src/testing/include/gmock/gmock-generated-actions.h
new file mode 100644
index 0000000..2327393
--- /dev/null
+++ b/google-breakpad/src/testing/include/gmock/gmock-generated-actions.h
@@ -0,0 +1,2415 @@
+// This file was GENERATED by a script.  DO NOT EDIT BY HAND!!!
+
+// Copyright 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Google Mock - a framework for writing C++ mock classes.
+//
+// This file implements some commonly used variadic actions.
+
+#ifndef GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_ACTIONS_H_
+#define GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_ACTIONS_H_
+
+#include "gmock/gmock-actions.h"
+#include "gmock/internal/gmock-port.h"
+
+namespace testing {
+namespace internal {
+
+// InvokeHelper<F> knows how to unpack an N-tuple and invoke an N-ary
+// function or method with the unpacked values, where F is a function
+// type that takes N arguments.
+template <typename Result, typename ArgumentTuple>
+class InvokeHelper;
+
+template <typename R>
+class InvokeHelper<R, ::std::tr1::tuple<> > {
+ public:
+  template <typename Function>
+  static R Invoke(Function function, const ::std::tr1::tuple<>&) {
+    return function();
+  }
+
+  template <class Class, typename MethodPtr>
+  static R InvokeMethod(Class* obj_ptr,
+                        MethodPtr method_ptr,
+                        const ::std::tr1::tuple<>&) {
+    return (obj_ptr->*method_ptr)();
+  }
+};
+
+template <typename R, typename A1>
+class InvokeHelper<R, ::std::tr1::tuple<A1> > {
+ public:
+  template <typename Function>
+  static R Invoke(Function function, const ::std::tr1::tuple<A1>& args) {
+    using ::std::tr1::get;
+    return function(get<0>(args));
+  }
+
+  template <class Class, typename MethodPtr>
+  static R InvokeMethod(Class* obj_ptr,
+                        MethodPtr method_ptr,
+                        const ::std::tr1::tuple<A1>& args) {
+    using ::std::tr1::get;
+    return (obj_ptr->*method_ptr)(get<0>(args));
+  }
+};
+
+template <typename R, typename A1, typename A2>
+class InvokeHelper<R, ::std::tr1::tuple<A1, A2> > {
+ public:
+  template <typename Function>
+  static R Invoke(Function function, const ::std::tr1::tuple<A1, A2>& args) {
+    using ::std::tr1::get;
+    return function(get<0>(args), get<1>(args));
+  }
+
+  template <class Class, typename MethodPtr>
+  static R InvokeMethod(Class* obj_ptr,
+                        MethodPtr method_ptr,
+                        const ::std::tr1::tuple<A1, A2>& args) {
+    using ::std::tr1::get;
+    return (obj_ptr->*method_ptr)(get<0>(args), get<1>(args));
+  }
+};
+
+template <typename R, typename A1, typename A2, typename A3>
+class InvokeHelper<R, ::std::tr1::tuple<A1, A2, A3> > {
+ public:
+  template <typename Function>
+  static R Invoke(Function function, const ::std::tr1::tuple<A1, A2,
+      A3>& args) {
+    using ::std::tr1::get;
+    return function(get<0>(args), get<1>(args), get<2>(args));
+  }
+
+  template <class Class, typename MethodPtr>
+  static R InvokeMethod(Class* obj_ptr,
+                        MethodPtr method_ptr,
+                        const ::std::tr1::tuple<A1, A2, A3>& args) {
+    using ::std::tr1::get;
+    return (obj_ptr->*method_ptr)(get<0>(args), get<1>(args), get<2>(args));
+  }
+};
+
+template <typename R, typename A1, typename A2, typename A3, typename A4>
+class InvokeHelper<R, ::std::tr1::tuple<A1, A2, A3, A4> > {
+ public:
+  template <typename Function>
+  static R Invoke(Function function, const ::std::tr1::tuple<A1, A2, A3,
+      A4>& args) {
+    using ::std::tr1::get;
+    return function(get<0>(args), get<1>(args), get<2>(args), get<3>(args));
+  }
+
+  template <class Class, typename MethodPtr>
+  static R InvokeMethod(Class* obj_ptr,
+                        MethodPtr method_ptr,
+                        const ::std::tr1::tuple<A1, A2, A3, A4>& args) {
+    using ::std::tr1::get;
+    return (obj_ptr->*method_ptr)(get<0>(args), get<1>(args), get<2>(args),
+        get<3>(args));
+  }
+};
+
+template <typename R, typename A1, typename A2, typename A3, typename A4,
+    typename A5>
+class InvokeHelper<R, ::std::tr1::tuple<A1, A2, A3, A4, A5> > {
+ public:
+  template <typename Function>
+  static R Invoke(Function function, const ::std::tr1::tuple<A1, A2, A3, A4,
+      A5>& args) {
+    using ::std::tr1::get;
+    return function(get<0>(args), get<1>(args), get<2>(args), get<3>(args),
+        get<4>(args));
+  }
+
+  template <class Class, typename MethodPtr>
+  static R InvokeMethod(Class* obj_ptr,
+                        MethodPtr method_ptr,
+                        const ::std::tr1::tuple<A1, A2, A3, A4, A5>& args) {
+    using ::std::tr1::get;
+    return (obj_ptr->*method_ptr)(get<0>(args), get<1>(args), get<2>(args),
+        get<3>(args), get<4>(args));
+  }
+};
+
+template <typename R, typename A1, typename A2, typename A3, typename A4,
+    typename A5, typename A6>
+class InvokeHelper<R, ::std::tr1::tuple<A1, A2, A3, A4, A5, A6> > {
+ public:
+  template <typename Function>
+  static R Invoke(Function function, const ::std::tr1::tuple<A1, A2, A3, A4,
+      A5, A6>& args) {
+    using ::std::tr1::get;
+    return function(get<0>(args), get<1>(args), get<2>(args), get<3>(args),
+        get<4>(args), get<5>(args));
+  }
+
+  template <class Class, typename MethodPtr>
+  static R InvokeMethod(Class* obj_ptr,
+                        MethodPtr method_ptr,
+                        const ::std::tr1::tuple<A1, A2, A3, A4, A5, A6>& args) {
+    using ::std::tr1::get;
+    return (obj_ptr->*method_ptr)(get<0>(args), get<1>(args), get<2>(args),
+        get<3>(args), get<4>(args), get<5>(args));
+  }
+};
+
+template <typename R, typename A1, typename A2, typename A3, typename A4,
+    typename A5, typename A6, typename A7>
+class InvokeHelper<R, ::std::tr1::tuple<A1, A2, A3, A4, A5, A6, A7> > {
+ public:
+  template <typename Function>
+  static R Invoke(Function function, const ::std::tr1::tuple<A1, A2, A3, A4,
+      A5, A6, A7>& args) {
+    using ::std::tr1::get;
+    return function(get<0>(args), get<1>(args), get<2>(args), get<3>(args),
+        get<4>(args), get<5>(args), get<6>(args));
+  }
+
+  template <class Class, typename MethodPtr>
+  static R InvokeMethod(Class* obj_ptr,
+                        MethodPtr method_ptr,
+                        const ::std::tr1::tuple<A1, A2, A3, A4, A5, A6,
+                            A7>& args) {
+    using ::std::tr1::get;
+    return (obj_ptr->*method_ptr)(get<0>(args), get<1>(args), get<2>(args),
+        get<3>(args), get<4>(args), get<5>(args), get<6>(args));
+  }
+};
+
+template <typename R, typename A1, typename A2, typename A3, typename A4,
+    typename A5, typename A6, typename A7, typename A8>
+class InvokeHelper<R, ::std::tr1::tuple<A1, A2, A3, A4, A5, A6, A7, A8> > {
+ public:
+  template <typename Function>
+  static R Invoke(Function function, const ::std::tr1::tuple<A1, A2, A3, A4,
+      A5, A6, A7, A8>& args) {
+    using ::std::tr1::get;
+    return function(get<0>(args), get<1>(args), get<2>(args), get<3>(args),
+        get<4>(args), get<5>(args), get<6>(args), get<7>(args));
+  }
+
+  template <class Class, typename MethodPtr>
+  static R InvokeMethod(Class* obj_ptr,
+                        MethodPtr method_ptr,
+                        const ::std::tr1::tuple<A1, A2, A3, A4, A5, A6, A7,
+                            A8>& args) {
+    using ::std::tr1::get;
+    return (obj_ptr->*method_ptr)(get<0>(args), get<1>(args), get<2>(args),
+        get<3>(args), get<4>(args), get<5>(args), get<6>(args), get<7>(args));
+  }
+};
+
+template <typename R, typename A1, typename A2, typename A3, typename A4,
+    typename A5, typename A6, typename A7, typename A8, typename A9>
+class InvokeHelper<R, ::std::tr1::tuple<A1, A2, A3, A4, A5, A6, A7, A8, A9> > {
+ public:
+  template <typename Function>
+  static R Invoke(Function function, const ::std::tr1::tuple<A1, A2, A3, A4,
+      A5, A6, A7, A8, A9>& args) {
+    using ::std::tr1::get;
+    return function(get<0>(args), get<1>(args), get<2>(args), get<3>(args),
+        get<4>(args), get<5>(args), get<6>(args), get<7>(args), get<8>(args));
+  }
+
+  template <class Class, typename MethodPtr>
+  static R InvokeMethod(Class* obj_ptr,
+                        MethodPtr method_ptr,
+                        const ::std::tr1::tuple<A1, A2, A3, A4, A5, A6, A7, A8,
+                            A9>& args) {
+    using ::std::tr1::get;
+    return (obj_ptr->*method_ptr)(get<0>(args), get<1>(args), get<2>(args),
+        get<3>(args), get<4>(args), get<5>(args), get<6>(args), get<7>(args),
+        get<8>(args));
+  }
+};
+
+template <typename R, typename A1, typename A2, typename A3, typename A4,
+    typename A5, typename A6, typename A7, typename A8, typename A9,
+    typename A10>
+class InvokeHelper<R, ::std::tr1::tuple<A1, A2, A3, A4, A5, A6, A7, A8, A9,
+    A10> > {
+ public:
+  template <typename Function>
+  static R Invoke(Function function, const ::std::tr1::tuple<A1, A2, A3, A4,
+      A5, A6, A7, A8, A9, A10>& args) {
+    using ::std::tr1::get;
+    return function(get<0>(args), get<1>(args), get<2>(args), get<3>(args),
+        get<4>(args), get<5>(args), get<6>(args), get<7>(args), get<8>(args),
+        get<9>(args));
+  }
+
+  template <class Class, typename MethodPtr>
+  static R InvokeMethod(Class* obj_ptr,
+                        MethodPtr method_ptr,
+                        const ::std::tr1::tuple<A1, A2, A3, A4, A5, A6, A7, A8,
+                            A9, A10>& args) {
+    using ::std::tr1::get;
+    return (obj_ptr->*method_ptr)(get<0>(args), get<1>(args), get<2>(args),
+        get<3>(args), get<4>(args), get<5>(args), get<6>(args), get<7>(args),
+        get<8>(args), get<9>(args));
+  }
+};
+
+// CallableHelper has static methods for invoking "callables",
+// i.e. function pointers and functors.  It uses overloading to
+// provide a uniform interface for invoking different kinds of
+// callables.  In particular, you can use:
+//
+//   CallableHelper<R>::Call(callable, a1, a2, ..., an)
+//
+// to invoke an n-ary callable, where R is its return type.  If an
+// argument, say a2, needs to be passed by reference, you should write
+// ByRef(a2) instead of a2 in the above expression.
+template <typename R>
+class CallableHelper {
+ public:
+  // Calls a nullary callable.
+  template <typename Function>
+  static R Call(Function function) { return function(); }
+
+  // Calls a unary callable.
+
+  // We deliberately pass a1 by value instead of const reference here
+  // in case it is a C-string literal.  If we had declared the
+  // parameter as 'const A1& a1' and write Call(function, "Hi"), the
+  // compiler would've thought A1 is 'char[3]', which causes trouble
+  // when you need to copy a value of type A1.  By declaring the
+  // parameter as 'A1 a1', the compiler will correctly infer that A1
+  // is 'const char*' when it sees Call(function, "Hi").
+  //
+  // Since this function is defined inline, the compiler can get rid
+  // of the copying of the arguments.  Therefore the performance won't
+  // be hurt.
+  template <typename Function, typename A1>
+  static R Call(Function function, A1 a1) { return function(a1); }
+
+  // Calls a binary callable.
+  template <typename Function, typename A1, typename A2>
+  static R Call(Function function, A1 a1, A2 a2) {
+    return function(a1, a2);
+  }
+
+  // Calls a ternary callable.
+  template <typename Function, typename A1, typename A2, typename A3>
+  static R Call(Function function, A1 a1, A2 a2, A3 a3) {
+    return function(a1, a2, a3);
+  }
+
+  // Calls a 4-ary callable.
+  template <typename Function, typename A1, typename A2, typename A3,
+      typename A4>
+  static R Call(Function function, A1 a1, A2 a2, A3 a3, A4 a4) {
+    return function(a1, a2, a3, a4);
+  }
+
+  // Calls a 5-ary callable.
+  template <typename Function, typename A1, typename A2, typename A3,
+      typename A4, typename A5>
+  static R Call(Function function, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) {
+    return function(a1, a2, a3, a4, a5);
+  }
+
+  // Calls a 6-ary callable.
+  template <typename Function, typename A1, typename A2, typename A3,
+      typename A4, typename A5, typename A6>
+  static R Call(Function function, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) {
+    return function(a1, a2, a3, a4, a5, a6);
+  }
+
+  // Calls a 7-ary callable.
+  template <typename Function, typename A1, typename A2, typename A3,
+      typename A4, typename A5, typename A6, typename A7>
+  static R Call(Function function, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6,
+      A7 a7) {
+    return function(a1, a2, a3, a4, a5, a6, a7);
+  }
+
+  // Calls a 8-ary callable.
+  template <typename Function, typename A1, typename A2, typename A3,
+      typename A4, typename A5, typename A6, typename A7, typename A8>
+  static R Call(Function function, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6,
+      A7 a7, A8 a8) {
+    return function(a1, a2, a3, a4, a5, a6, a7, a8);
+  }
+
+  // Calls a 9-ary callable.
+  template <typename Function, typename A1, typename A2, typename A3,
+      typename A4, typename A5, typename A6, typename A7, typename A8,
+      typename A9>
+  static R Call(Function function, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6,
+      A7 a7, A8 a8, A9 a9) {
+    return function(a1, a2, a3, a4, a5, a6, a7, a8, a9);
+  }
+
+  // Calls a 10-ary callable.
+  template <typename Function, typename A1, typename A2, typename A3,
+      typename A4, typename A5, typename A6, typename A7, typename A8,
+      typename A9, typename A10>
+  static R Call(Function function, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6,
+      A7 a7, A8 a8, A9 a9, A10 a10) {
+    return function(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);
+  }
+};  // class CallableHelper
+
+// An INTERNAL macro for extracting the type of a tuple field.  It's
+// subject to change without notice - DO NOT USE IN USER CODE!
+#define GMOCK_FIELD_(Tuple, N) \
+    typename ::std::tr1::tuple_element<N, Tuple>::type
+
+// SelectArgs<Result, ArgumentTuple, k1, k2, ..., k_n>::type is the
+// type of an n-ary function whose i-th (1-based) argument type is the
+// k{i}-th (0-based) field of ArgumentTuple, which must be a tuple
+// type, and whose return type is Result.  For example,
+//   SelectArgs<int, ::std::tr1::tuple<bool, char, double, long>, 0, 3>::type
+// is int(bool, long).
+//
+// SelectArgs<Result, ArgumentTuple, k1, k2, ..., k_n>::Select(args)
+// returns the selected fields (k1, k2, ..., k_n) of args as a tuple.
+// For example,
+//   SelectArgs<int, ::std::tr1::tuple<bool, char, double>, 2, 0>::Select(
+//       ::std::tr1::make_tuple(true, 'a', 2.5))
+// returns ::std::tr1::tuple (2.5, true).
+//
+// The numbers in list k1, k2, ..., k_n must be >= 0, where n can be
+// in the range [0, 10].  Duplicates are allowed and they don't have
+// to be in an ascending or descending order.
+
+template <typename Result, typename ArgumentTuple, int k1, int k2, int k3,
+    int k4, int k5, int k6, int k7, int k8, int k9, int k10>
+class SelectArgs {
+ public:
+  typedef Result type(GMOCK_FIELD_(ArgumentTuple, k1),
+      GMOCK_FIELD_(ArgumentTuple, k2), GMOCK_FIELD_(ArgumentTuple, k3),
+      GMOCK_FIELD_(ArgumentTuple, k4), GMOCK_FIELD_(ArgumentTuple, k5),
+      GMOCK_FIELD_(ArgumentTuple, k6), GMOCK_FIELD_(ArgumentTuple, k7),
+      GMOCK_FIELD_(ArgumentTuple, k8), GMOCK_FIELD_(ArgumentTuple, k9),
+      GMOCK_FIELD_(ArgumentTuple, k10));
+  typedef typename Function<type>::ArgumentTuple SelectedArgs;
+  static SelectedArgs Select(const ArgumentTuple& args) {
+    using ::std::tr1::get;
+    return SelectedArgs(get<k1>(args), get<k2>(args), get<k3>(args),
+        get<k4>(args), get<k5>(args), get<k6>(args), get<k7>(args),
+        get<k8>(args), get<k9>(args), get<k10>(args));
+  }
+};
+
+template <typename Result, typename ArgumentTuple>
+class SelectArgs<Result, ArgumentTuple,
+                 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1> {
+ public:
+  typedef Result type();
+  typedef typename Function<type>::ArgumentTuple SelectedArgs;
+  static SelectedArgs Select(const ArgumentTuple& /* args */) {
+    using ::std::tr1::get;
+    return SelectedArgs();
+  }
+};
+
+template <typename Result, typename ArgumentTuple, int k1>
+class SelectArgs<Result, ArgumentTuple,
+                 k1, -1, -1, -1, -1, -1, -1, -1, -1, -1> {
+ public:
+  typedef Result type(GMOCK_FIELD_(ArgumentTuple, k1));
+  typedef typename Function<type>::ArgumentTuple SelectedArgs;
+  static SelectedArgs Select(const ArgumentTuple& args) {
+    using ::std::tr1::get;
+    return SelectedArgs(get<k1>(args));
+  }
+};
+
+template <typename Result, typename ArgumentTuple, int k1, int k2>
+class SelectArgs<Result, ArgumentTuple,
+                 k1, k2, -1, -1, -1, -1, -1, -1, -1, -1> {
+ public:
+  typedef Result type(GMOCK_FIELD_(ArgumentTuple, k1),
+      GMOCK_FIELD_(ArgumentTuple, k2));
+  typedef typename Function<type>::ArgumentTuple SelectedArgs;
+  static SelectedArgs Select(const ArgumentTuple& args) {
+    using ::std::tr1::get;
+    return SelectedArgs(get<k1>(args), get<k2>(args));
+  }
+};
+
+template <typename Result, typename ArgumentTuple, int k1, int k2, int k3>
+class SelectArgs<Result, ArgumentTuple,
+                 k1, k2, k3, -1, -1, -1, -1, -1, -1, -1> {
+ public:
+  typedef Result type(GMOCK_FIELD_(ArgumentTuple, k1),
+      GMOCK_FIELD_(ArgumentTuple, k2), GMOCK_FIELD_(ArgumentTuple, k3));
+  typedef typename Function<type>::ArgumentTuple SelectedArgs;
+  static SelectedArgs Select(const ArgumentTuple& args) {
+    using ::std::tr1::get;
+    return SelectedArgs(get<k1>(args), get<k2>(args), get<k3>(args));
+  }
+};
+
+template <typename Result, typename ArgumentTuple, int k1, int k2, int k3,
+    int k4>
+class SelectArgs<Result, ArgumentTuple,
+                 k1, k2, k3, k4, -1, -1, -1, -1, -1, -1> {
+ public:
+  typedef Result type(GMOCK_FIELD_(ArgumentTuple, k1),
+      GMOCK_FIELD_(ArgumentTuple, k2), GMOCK_FIELD_(ArgumentTuple, k3),
+      GMOCK_FIELD_(ArgumentTuple, k4));
+  typedef typename Function<type>::ArgumentTuple SelectedArgs;
+  static SelectedArgs Select(const ArgumentTuple& args) {
+    using ::std::tr1::get;
+    return SelectedArgs(get<k1>(args), get<k2>(args), get<k3>(args),
+        get<k4>(args));
+  }
+};
+
+template <typename Result, typename ArgumentTuple, int k1, int k2, int k3,
+    int k4, int k5>
+class SelectArgs<Result, ArgumentTuple,
+                 k1, k2, k3, k4, k5, -1, -1, -1, -1, -1> {
+ public:
+  typedef Result type(GMOCK_FIELD_(ArgumentTuple, k1),
+      GMOCK_FIELD_(ArgumentTuple, k2), GMOCK_FIELD_(ArgumentTuple, k3),
+      GMOCK_FIELD_(ArgumentTuple, k4), GMOCK_FIELD_(ArgumentTuple, k5));
+  typedef typename Function<type>::ArgumentTuple SelectedArgs;
+  static SelectedArgs Select(const ArgumentTuple& args) {
+    using ::std::tr1::get;
+    return SelectedArgs(get<k1>(args), get<k2>(args), get<k3>(args),
+        get<k4>(args), get<k5>(args));
+  }
+};
+
+template <typename Result, typename ArgumentTuple, int k1, int k2, int k3,
+    int k4, int k5, int k6>
+class SelectArgs<Result, ArgumentTuple,
+                 k1, k2, k3, k4, k5, k6, -1, -1, -1, -1> {
+ public:
+  typedef Result type(GMOCK_FIELD_(ArgumentTuple, k1),
+      GMOCK_FIELD_(ArgumentTuple, k2), GMOCK_FIELD_(ArgumentTuple, k3),
+      GMOCK_FIELD_(ArgumentTuple, k4), GMOCK_FIELD_(ArgumentTuple, k5),
+      GMOCK_FIELD_(ArgumentTuple, k6));
+  typedef typename Function<type>::ArgumentTuple SelectedArgs;
+  static SelectedArgs Select(const ArgumentTuple& args) {
+    using ::std::tr1::get;
+    return SelectedArgs(get<k1>(args), get<k2>(args), get<k3>(args),
+        get<k4>(args), get<k5>(args), get<k6>(args));
+  }
+};
+
+template <typename Result, typename ArgumentTuple, int k1, int k2, int k3,
+    int k4, int k5, int k6, int k7>
+class SelectArgs<Result, ArgumentTuple,
+                 k1, k2, k3, k4, k5, k6, k7, -1, -1, -1> {
+ public:
+  typedef Result type(GMOCK_FIELD_(ArgumentTuple, k1),
+      GMOCK_FIELD_(ArgumentTuple, k2), GMOCK_FIELD_(ArgumentTuple, k3),
+      GMOCK_FIELD_(ArgumentTuple, k4), GMOCK_FIELD_(ArgumentTuple, k5),
+      GMOCK_FIELD_(ArgumentTuple, k6), GMOCK_FIELD_(ArgumentTuple, k7));
+  typedef typename Function<type>::ArgumentTuple SelectedArgs;
+  static SelectedArgs Select(const ArgumentTuple& args) {
+    using ::std::tr1::get;
+    return SelectedArgs(get<k1>(args), get<k2>(args), get<k3>(args),
+        get<k4>(args), get<k5>(args), get<k6>(args), get<k7>(args));
+  }
+};
+
+template <typename Result, typename ArgumentTuple, int k1, int k2, int k3,
+    int k4, int k5, int k6, int k7, int k8>
+class SelectArgs<Result, ArgumentTuple,
+                 k1, k2, k3, k4, k5, k6, k7, k8, -1, -1> {
+ public:
+  typedef Result type(GMOCK_FIELD_(ArgumentTuple, k1),
+      GMOCK_FIELD_(ArgumentTuple, k2), GMOCK_FIELD_(ArgumentTuple, k3),
+      GMOCK_FIELD_(ArgumentTuple, k4), GMOCK_FIELD_(ArgumentTuple, k5),
+      GMOCK_FIELD_(ArgumentTuple, k6), GMOCK_FIELD_(ArgumentTuple, k7),
+      GMOCK_FIELD_(ArgumentTuple, k8));
+  typedef typename Function<type>::ArgumentTuple SelectedArgs;
+  static SelectedArgs Select(const ArgumentTuple& args) {
+    using ::std::tr1::get;
+    return SelectedArgs(get<k1>(args), get<k2>(args), get<k3>(args),
+        get<k4>(args), get<k5>(args), get<k6>(args), get<k7>(args),
+        get<k8>(args));
+  }
+};
+
+template <typename Result, typename ArgumentTuple, int k1, int k2, int k3,
+    int k4, int k5, int k6, int k7, int k8, int k9>
+class SelectArgs<Result, ArgumentTuple,
+                 k1, k2, k3, k4, k5, k6, k7, k8, k9, -1> {
+ public:
+  typedef Result type(GMOCK_FIELD_(ArgumentTuple, k1),
+      GMOCK_FIELD_(ArgumentTuple, k2), GMOCK_FIELD_(ArgumentTuple, k3),
+      GMOCK_FIELD_(ArgumentTuple, k4), GMOCK_FIELD_(ArgumentTuple, k5),
+      GMOCK_FIELD_(ArgumentTuple, k6), GMOCK_FIELD_(ArgumentTuple, k7),
+      GMOCK_FIELD_(ArgumentTuple, k8), GMOCK_FIELD_(ArgumentTuple, k9));
+  typedef typename Function<type>::ArgumentTuple SelectedArgs;
+  static SelectedArgs Select(const ArgumentTuple& args) {
+    using ::std::tr1::get;
+    return SelectedArgs(get<k1>(args), get<k2>(args), get<k3>(args),
+        get<k4>(args), get<k5>(args), get<k6>(args), get<k7>(args),
+        get<k8>(args), get<k9>(args));
+  }
+};
+
+#undef GMOCK_FIELD_
+
+// Implements the WithArgs action.
+template <typename InnerAction, int k1 = -1, int k2 = -1, int k3 = -1,
+    int k4 = -1, int k5 = -1, int k6 = -1, int k7 = -1, int k8 = -1,
+    int k9 = -1, int k10 = -1>
+class WithArgsAction {
+ public:
+  explicit WithArgsAction(const InnerAction& action) : action_(action) {}
+
+  template <typename F>
+  operator Action<F>() const { return MakeAction(new Impl<F>(action_)); }
+
+ private:
+  template <typename F>
+  class Impl : public ActionInterface<F> {
+   public:
+    typedef typename Function<F>::Result Result;
+    typedef typename Function<F>::ArgumentTuple ArgumentTuple;
+
+    explicit Impl(const InnerAction& action) : action_(action) {}
+
+    virtual Result Perform(const ArgumentTuple& args) {
+      return action_.Perform(SelectArgs<Result, ArgumentTuple, k1, k2, k3, k4,
+          k5, k6, k7, k8, k9, k10>::Select(args));
+    }
+
+   private:
+    typedef typename SelectArgs<Result, ArgumentTuple,
+        k1, k2, k3, k4, k5, k6, k7, k8, k9, k10>::type InnerFunctionType;
+
+    Action<InnerFunctionType> action_;
+  };
+
+  const InnerAction action_;
+
+  GTEST_DISALLOW_ASSIGN_(WithArgsAction);
+};
+
+// A macro from the ACTION* family (defined later in this file)
+// defines an action that can be used in a mock function.  Typically,
+// these actions only care about a subset of the arguments of the mock
+// function.  For example, if such an action only uses the second
+// argument, it can be used in any mock function that takes >= 2
+// arguments where the type of the second argument is compatible.
+//
+// Therefore, the action implementation must be prepared to take more
+// arguments than it needs.  The ExcessiveArg type is used to
+// represent those excessive arguments.  In order to keep the compiler
+// error messages tractable, we define it in the testing namespace
+// instead of testing::internal.  However, this is an INTERNAL TYPE
+// and subject to change without notice, so a user MUST NOT USE THIS
+// TYPE DIRECTLY.
+struct ExcessiveArg {};
+
+// A helper class needed for implementing the ACTION* macros.
+template <typename Result, class Impl>
+class ActionHelper {
+ public:
+  static Result Perform(Impl* impl, const ::std::tr1::tuple<>& args) {
+    using ::std::tr1::get;
+    return impl->template gmock_PerformImpl<>(args, ExcessiveArg(),
+        ExcessiveArg(), ExcessiveArg(), ExcessiveArg(), ExcessiveArg(),
+        ExcessiveArg(), ExcessiveArg(), ExcessiveArg(), ExcessiveArg(),
+        ExcessiveArg());
+  }
+
+  template <typename A0>
+  static Result Perform(Impl* impl, const ::std::tr1::tuple<A0>& args) {
+    using ::std::tr1::get;
+    return impl->template gmock_PerformImpl<A0>(args, get<0>(args),
+        ExcessiveArg(), ExcessiveArg(), ExcessiveArg(), ExcessiveArg(),
+        ExcessiveArg(), ExcessiveArg(), ExcessiveArg(), ExcessiveArg(),
+        ExcessiveArg());
+  }
+
+  template <typename A0, typename A1>
+  static Result Perform(Impl* impl, const ::std::tr1::tuple<A0, A1>& args) {
+    using ::std::tr1::get;
+    return impl->template gmock_PerformImpl<A0, A1>(args, get<0>(args),
+        get<1>(args), ExcessiveArg(), ExcessiveArg(), ExcessiveArg(),
+        ExcessiveArg(), ExcessiveArg(), ExcessiveArg(), ExcessiveArg(),
+        ExcessiveArg());
+  }
+
+  template <typename A0, typename A1, typename A2>
+  static Result Perform(Impl* impl, const ::std::tr1::tuple<A0, A1, A2>& args) {
+    using ::std::tr1::get;
+    return impl->template gmock_PerformImpl<A0, A1, A2>(args, get<0>(args),
+        get<1>(args), get<2>(args), ExcessiveArg(), ExcessiveArg(),
+        ExcessiveArg(), ExcessiveArg(), ExcessiveArg(), ExcessiveArg(),
+        ExcessiveArg());
+  }
+
+  template <typename A0, typename A1, typename A2, typename A3>
+  static Result Perform(Impl* impl, const ::std::tr1::tuple<A0, A1, A2,
+      A3>& args) {
+    using ::std::tr1::get;
+    return impl->template gmock_PerformImpl<A0, A1, A2, A3>(args, get<0>(args),
+        get<1>(args), get<2>(args), get<3>(args), ExcessiveArg(),
+        ExcessiveArg(), ExcessiveArg(), ExcessiveArg(), ExcessiveArg(),
+        ExcessiveArg());
+  }
+
+  template <typename A0, typename A1, typename A2, typename A3, typename A4>
+  static Result Perform(Impl* impl, const ::std::tr1::tuple<A0, A1, A2, A3,
+      A4>& args) {
+    using ::std::tr1::get;
+    return impl->template gmock_PerformImpl<A0, A1, A2, A3, A4>(args,
+        get<0>(args), get<1>(args), get<2>(args), get<3>(args), get<4>(args),
+        ExcessiveArg(), ExcessiveArg(), ExcessiveArg(), ExcessiveArg(),
+        ExcessiveArg());
+  }
+
+  template <typename A0, typename A1, typename A2, typename A3, typename A4,
+      typename A5>
+  static Result Perform(Impl* impl, const ::std::tr1::tuple<A0, A1, A2, A3, A4,
+      A5>& args) {
+    using ::std::tr1::get;
+    return impl->template gmock_PerformImpl<A0, A1, A2, A3, A4, A5>(args,
+        get<0>(args), get<1>(args), get<2>(args), get<3>(args), get<4>(args),
+        get<5>(args), ExcessiveArg(), ExcessiveArg(), ExcessiveArg(),
+        ExcessiveArg());
+  }
+
+  template <typename A0, typename A1, typename A2, typename A3, typename A4,
+      typename A5, typename A6>
+  static Result Perform(Impl* impl, const ::std::tr1::tuple<A0, A1, A2, A3, A4,
+      A5, A6>& args) {
+    using ::std::tr1::get;
+    return impl->template gmock_PerformImpl<A0, A1, A2, A3, A4, A5, A6>(args,
+        get<0>(args), get<1>(args), get<2>(args), get<3>(args), get<4>(args),
+        get<5>(args), get<6>(args), ExcessiveArg(), ExcessiveArg(),
+        ExcessiveArg());
+  }
+
+  template <typename A0, typename A1, typename A2, typename A3, typename A4,
+      typename A5, typename A6, typename A7>
+  static Result Perform(Impl* impl, const ::std::tr1::tuple<A0, A1, A2, A3, A4,
+      A5, A6, A7>& args) {
+    using ::std::tr1::get;
+    return impl->template gmock_PerformImpl<A0, A1, A2, A3, A4, A5, A6,
+        A7>(args, get<0>(args), get<1>(args), get<2>(args), get<3>(args),
+        get<4>(args), get<5>(args), get<6>(args), get<7>(args), ExcessiveArg(),
+        ExcessiveArg());
+  }
+
+  template <typename A0, typename A1, typename A2, typename A3, typename A4,
+      typename A5, typename A6, typename A7, typename A8>
+  static Result Perform(Impl* impl, const ::std::tr1::tuple<A0, A1, A2, A3, A4,
+      A5, A6, A7, A8>& args) {
+    using ::std::tr1::get;
+    return impl->template gmock_PerformImpl<A0, A1, A2, A3, A4, A5, A6, A7,
+        A8>(args, get<0>(args), get<1>(args), get<2>(args), get<3>(args),
+        get<4>(args), get<5>(args), get<6>(args), get<7>(args), get<8>(args),
+        ExcessiveArg());
+  }
+
+  template <typename A0, typename A1, typename A2, typename A3, typename A4,
+      typename A5, typename A6, typename A7, typename A8, typename A9>
+  static Result Perform(Impl* impl, const ::std::tr1::tuple<A0, A1, A2, A3, A4,
+      A5, A6, A7, A8, A9>& args) {
+    using ::std::tr1::get;
+    return impl->template gmock_PerformImpl<A0, A1, A2, A3, A4, A5, A6, A7, A8,
+        A9>(args, get<0>(args), get<1>(args), get<2>(args), get<3>(args),
+        get<4>(args), get<5>(args), get<6>(args), get<7>(args), get<8>(args),
+        get<9>(args));
+  }
+};
+
+}  // namespace internal
+
+// Various overloads for Invoke().
+
+// WithArgs<N1, N2, ..., Nk>(an_action) creates an action that passes
+// the selected arguments of the mock function to an_action and
+// performs it.  It serves as an adaptor between actions with
+// different argument lists.  C++ doesn't support default arguments for
+// function templates, so we have to overload it.
+template <int k1, typename InnerAction>
+inline internal::WithArgsAction<InnerAction, k1>
+WithArgs(const InnerAction& action) {
+  return internal::WithArgsAction<InnerAction, k1>(action);
+}
+
+template <int k1, int k2, typename InnerAction>
+inline internal::WithArgsAction<InnerAction, k1, k2>
+WithArgs(const InnerAction& action) {
+  return internal::WithArgsAction<InnerAction, k1, k2>(action);
+}
+
+template <int k1, int k2, int k3, typename InnerAction>
+inline internal::WithArgsAction<InnerAction, k1, k2, k3>
+WithArgs(const InnerAction& action) {
+  return internal::WithArgsAction<InnerAction, k1, k2, k3>(action);
+}
+
+template <int k1, int k2, int k3, int k4, typename InnerAction>
+inline internal::WithArgsAction<InnerAction, k1, k2, k3, k4>
+WithArgs(const InnerAction& action) {
+  return internal::WithArgsAction<InnerAction, k1, k2, k3, k4>(action);
+}
+
+template <int k1, int k2, int k3, int k4, int k5, typename InnerAction>
+inline internal::WithArgsAction<InnerAction, k1, k2, k3, k4, k5>
+WithArgs(const InnerAction& action) {
+  return internal::WithArgsAction<InnerAction, k1, k2, k3, k4, k5>(action);
+}
+
+template <int k1, int k2, int k3, int k4, int k5, int k6, typename InnerAction>
+inline internal::WithArgsAction<InnerAction, k1, k2, k3, k4, k5, k6>
+WithArgs(const InnerAction& action) {
+  return internal::WithArgsAction<InnerAction, k1, k2, k3, k4, k5, k6>(action);
+}
+
+template <int k1, int k2, int k3, int k4, int k5, int k6, int k7,
+    typename InnerAction>
+inline internal::WithArgsAction<InnerAction, k1, k2, k3, k4, k5, k6, k7>
+WithArgs(const InnerAction& action) {
+  return internal::WithArgsAction<InnerAction, k1, k2, k3, k4, k5, k6,
+      k7>(action);
+}
+
+template <int k1, int k2, int k3, int k4, int k5, int k6, int k7, int k8,
+    typename InnerAction>
+inline internal::WithArgsAction<InnerAction, k1, k2, k3, k4, k5, k6, k7, k8>
+WithArgs(const InnerAction& action) {
+  return internal::WithArgsAction<InnerAction, k1, k2, k3, k4, k5, k6, k7,
+      k8>(action);
+}
+
+template <int k1, int k2, int k3, int k4, int k5, int k6, int k7, int k8,
+    int k9, typename InnerAction>
+inline internal::WithArgsAction<InnerAction, k1, k2, k3, k4, k5, k6, k7, k8, k9>
+WithArgs(const InnerAction& action) {
+  return internal::WithArgsAction<InnerAction, k1, k2, k3, k4, k5, k6, k7, k8,
+      k9>(action);
+}
+
+template <int k1, int k2, int k3, int k4, int k5, int k6, int k7, int k8,
+    int k9, int k10, typename InnerAction>
+inline internal::WithArgsAction<InnerAction, k1, k2, k3, k4, k5, k6, k7, k8,
+    k9, k10>
+WithArgs(const InnerAction& action) {
+  return internal::WithArgsAction<InnerAction, k1, k2, k3, k4, k5, k6, k7, k8,
+      k9, k10>(action);
+}
+
+// Creates an action that does actions a1, a2, ..., sequentially in
+// each invocation.
+template <typename Action1, typename Action2>
+inline internal::DoBothAction<Action1, Action2>
+DoAll(Action1 a1, Action2 a2) {
+  return internal::DoBothAction<Action1, Action2>(a1, a2);
+}
+
+template <typename Action1, typename Action2, typename Action3>
+inline internal::DoBothAction<Action1, internal::DoBothAction<Action2,
+    Action3> >
+DoAll(Action1 a1, Action2 a2, Action3 a3) {
+  return DoAll(a1, DoAll(a2, a3));
+}
+
+template <typename Action1, typename Action2, typename Action3,
+    typename Action4>
+inline internal::DoBothAction<Action1, internal::DoBothAction<Action2,
+    internal::DoBothAction<Action3, Action4> > >
+DoAll(Action1 a1, Action2 a2, Action3 a3, Action4 a4) {
+  return DoAll(a1, DoAll(a2, a3, a4));
+}
+
+template <typename Action1, typename Action2, typename Action3,
+    typename Action4, typename Action5>
+inline internal::DoBothAction<Action1, internal::DoBothAction<Action2,
+    internal::DoBothAction<Action3, internal::DoBothAction<Action4,
+    Action5> > > >
+DoAll(Action1 a1, Action2 a2, Action3 a3, Action4 a4, Action5 a5) {
+  return DoAll(a1, DoAll(a2, a3, a4, a5));
+}
+
+template <typename Action1, typename Action2, typename Action3,
+    typename Action4, typename Action5, typename Action6>
+inline internal::DoBothAction<Action1, internal::DoBothAction<Action2,
+    internal::DoBothAction<Action3, internal::DoBothAction<Action4,
+    internal::DoBothAction<Action5, Action6> > > > >
+DoAll(Action1 a1, Action2 a2, Action3 a3, Action4 a4, Action5 a5, Action6 a6) {
+  return DoAll(a1, DoAll(a2, a3, a4, a5, a6));
+}
+
+template <typename Action1, typename Action2, typename Action3,
+    typename Action4, typename Action5, typename Action6, typename Action7>
+inline internal::DoBothAction<Action1, internal::DoBothAction<Action2,
+    internal::DoBothAction<Action3, internal::DoBothAction<Action4,
+    internal::DoBothAction<Action5, internal::DoBothAction<Action6,
+    Action7> > > > > >
+DoAll(Action1 a1, Action2 a2, Action3 a3, Action4 a4, Action5 a5, Action6 a6,
+    Action7 a7) {
+  return DoAll(a1, DoAll(a2, a3, a4, a5, a6, a7));
+}
+
+template <typename Action1, typename Action2, typename Action3,
+    typename Action4, typename Action5, typename Action6, typename Action7,
+    typename Action8>
+inline internal::DoBothAction<Action1, internal::DoBothAction<Action2,
+    internal::DoBothAction<Action3, internal::DoBothAction<Action4,
+    internal::DoBothAction<Action5, internal::DoBothAction<Action6,
+    internal::DoBothAction<Action7, Action8> > > > > > >
+DoAll(Action1 a1, Action2 a2, Action3 a3, Action4 a4, Action5 a5, Action6 a6,
+    Action7 a7, Action8 a8) {
+  return DoAll(a1, DoAll(a2, a3, a4, a5, a6, a7, a8));
+}
+
+template <typename Action1, typename Action2, typename Action3,
+    typename Action4, typename Action5, typename Action6, typename Action7,
+    typename Action8, typename Action9>
+inline internal::DoBothAction<Action1, internal::DoBothAction<Action2,
+    internal::DoBothAction<Action3, internal::DoBothAction<Action4,
+    internal::DoBothAction<Action5, internal::DoBothAction<Action6,
+    internal::DoBothAction<Action7, internal::DoBothAction<Action8,
+    Action9> > > > > > > >
+DoAll(Action1 a1, Action2 a2, Action3 a3, Action4 a4, Action5 a5, Action6 a6,
+    Action7 a7, Action8 a8, Action9 a9) {
+  return DoAll(a1, DoAll(a2, a3, a4, a5, a6, a7, a8, a9));
+}
+
+template <typename Action1, typename Action2, typename Action3,
+    typename Action4, typename Action5, typename Action6, typename Action7,
+    typename Action8, typename Action9, typename Action10>
+inline internal::DoBothAction<Action1, internal::DoBothAction<Action2,
+    internal::DoBothAction<Action3, internal::DoBothAction<Action4,
+    internal::DoBothAction<Action5, internal::DoBothAction<Action6,
+    internal::DoBothAction<Action7, internal::DoBothAction<Action8,
+    internal::DoBothAction<Action9, Action10> > > > > > > > >
+DoAll(Action1 a1, Action2 a2, Action3 a3, Action4 a4, Action5 a5, Action6 a6,
+    Action7 a7, Action8 a8, Action9 a9, Action10 a10) {
+  return DoAll(a1, DoAll(a2, a3, a4, a5, a6, a7, a8, a9, a10));
+}
+
+}  // namespace testing
+
+// The ACTION* family of macros can be used in a namespace scope to
+// define custom actions easily.  The syntax:
+//
+//   ACTION(name) { statements; }
+//
+// will define an action with the given name that executes the
+// statements.  The value returned by the statements will be used as
+// the return value of the action.  Inside the statements, you can
+// refer to the K-th (0-based) argument of the mock function by
+// 'argK', and refer to its type by 'argK_type'.  For example:
+//
+//   ACTION(IncrementArg1) {
+//     arg1_type temp = arg1;
+//     return ++(*temp);
+//   }
+//
+// allows you to write
+//
+//   ...WillOnce(IncrementArg1());
+//
+// You can also refer to the entire argument tuple and its type by
+// 'args' and 'args_type', and refer to the mock function type and its
+// return type by 'function_type' and 'return_type'.
+//
+// Note that you don't need to specify the types of the mock function
+// arguments.  However rest assured that your code is still type-safe:
+// you'll get a compiler error if *arg1 doesn't support the ++
+// operator, or if the type of ++(*arg1) isn't compatible with the
+// mock function's return type, for example.
+//
+// Sometimes you'll want to parameterize the action.   For that you can use
+// another macro:
+//
+//   ACTION_P(name, param_name) { statements; }
+//
+// For example:
+//
+//   ACTION_P(Add, n) { return arg0 + n; }
+//
+// will allow you to write:
+//
+//   ...WillOnce(Add(5));
+//
+// Note that you don't need to provide the type of the parameter
+// either.  If you need to reference the type of a parameter named
+// 'foo', you can write 'foo_type'.  For example, in the body of
+// ACTION_P(Add, n) above, you can write 'n_type' to refer to the type
+// of 'n'.
+//
+// We also provide ACTION_P2, ACTION_P3, ..., up to ACTION_P10 to support
+// multi-parameter actions.
+//
+// For the purpose of typing, you can view
+//
+//   ACTION_Pk(Foo, p1, ..., pk) { ... }
+//
+// as shorthand for
+//
+//   template <typename p1_type, ..., typename pk_type>
+//   FooActionPk<p1_type, ..., pk_type> Foo(p1_type p1, ..., pk_type pk) { ... }
+//
+// In particular, you can provide the template type arguments
+// explicitly when invoking Foo(), as in Foo<long, bool>(5, false);
+// although usually you can rely on the compiler to infer the types
+// for you automatically.  You can assign the result of expression
+// Foo(p1, ..., pk) to a variable of type FooActionPk<p1_type, ...,
+// pk_type>.  This can be useful when composing actions.
+//
+// You can also overload actions with different numbers of parameters:
+//
+//   ACTION_P(Plus, a) { ... }
+//   ACTION_P2(Plus, a, b) { ... }
+//
+// While it's tempting to always use the ACTION* macros when defining
+// a new action, you should also consider implementing ActionInterface
+// or using MakePolymorphicAction() instead, especially if you need to
+// use the action a lot.  While these approaches require more work,
+// they give you more control on the types of the mock function
+// arguments and the action parameters, which in general leads to
+// better compiler error messages that pay off in the long run.  They
+// also allow overloading actions based on parameter types (as opposed
+// to just based on the number of parameters).
+//
+// CAVEAT:
+//
+// ACTION*() can only be used in a namespace scope.  The reason is
+// that C++ doesn't yet allow function-local types to be used to
+// instantiate templates.  The up-coming C++0x standard will fix this.
+// Once that's done, we'll consider supporting using ACTION*() inside
+// a function.
+//
+// MORE INFORMATION:
+//
+// To learn more about using these macros, please search for 'ACTION'
+// on http://code.google.com/p/googlemock/wiki/CookBook.
+
+// An internal macro needed for implementing ACTION*().
+#define GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_\
+    const args_type& args GTEST_ATTRIBUTE_UNUSED_, \
+    arg0_type arg0 GTEST_ATTRIBUTE_UNUSED_, \
+    arg1_type arg1 GTEST_ATTRIBUTE_UNUSED_, \
+    arg2_type arg2 GTEST_ATTRIBUTE_UNUSED_, \
+    arg3_type arg3 GTEST_ATTRIBUTE_UNUSED_, \
+    arg4_type arg4 GTEST_ATTRIBUTE_UNUSED_, \
+    arg5_type arg5 GTEST_ATTRIBUTE_UNUSED_, \
+    arg6_type arg6 GTEST_ATTRIBUTE_UNUSED_, \
+    arg7_type arg7 GTEST_ATTRIBUTE_UNUSED_, \
+    arg8_type arg8 GTEST_ATTRIBUTE_UNUSED_, \
+    arg9_type arg9 GTEST_ATTRIBUTE_UNUSED_
+
+// Sometimes you want to give an action explicit template parameters
+// that cannot be inferred from its value parameters.  ACTION() and
+// ACTION_P*() don't support that.  ACTION_TEMPLATE() remedies that
+// and can be viewed as an extension to ACTION() and ACTION_P*().
+//
+// The syntax:
+//
+//   ACTION_TEMPLATE(ActionName,
+//                   HAS_m_TEMPLATE_PARAMS(kind1, name1, ..., kind_m, name_m),
+//                   AND_n_VALUE_PARAMS(p1, ..., p_n)) { statements; }
+//
+// defines an action template that takes m explicit template
+// parameters and n value parameters.  name_i is the name of the i-th
+// template parameter, and kind_i specifies whether it's a typename,
+// an integral constant, or a template.  p_i is the name of the i-th
+// value parameter.
+//
+// Example:
+//
+//   // DuplicateArg<k, T>(output) converts the k-th argument of the mock
+//   // function to type T and copies it to *output.
+//   ACTION_TEMPLATE(DuplicateArg,
+//                   HAS_2_TEMPLATE_PARAMS(int, k, typename, T),
+//                   AND_1_VALUE_PARAMS(output)) {
+//     *output = T(std::tr1::get<k>(args));
+//   }
+//   ...
+//     int n;
+//     EXPECT_CALL(mock, Foo(_, _))
+//         .WillOnce(DuplicateArg<1, unsigned char>(&n));
+//
+// To create an instance of an action template, write:
+//
+//   ActionName<t1, ..., t_m>(v1, ..., v_n)
+//
+// where the ts are the template arguments and the vs are the value
+// arguments.  The value argument types are inferred by the compiler.
+// If you want to explicitly specify the value argument types, you can
+// provide additional template arguments:
+//
+//   ActionName<t1, ..., t_m, u1, ..., u_k>(v1, ..., v_n)
+//
+// where u_i is the desired type of v_i.
+//
+// ACTION_TEMPLATE and ACTION/ACTION_P* can be overloaded on the
+// number of value parameters, but not on the number of template
+// parameters.  Without the restriction, the meaning of the following
+// is unclear:
+//
+//   OverloadedAction<int, bool>(x);
+//
+// Are we using a single-template-parameter action where 'bool' refers
+// to the type of x, or are we using a two-template-parameter action
+// where the compiler is asked to infer the type of x?
+//
+// Implementation notes:
+//
+// GMOCK_INTERNAL_*_HAS_m_TEMPLATE_PARAMS and
+// GMOCK_INTERNAL_*_AND_n_VALUE_PARAMS are internal macros for
+// implementing ACTION_TEMPLATE.  The main trick we use is to create
+// new macro invocations when expanding a macro.  For example, we have
+//
+//   #define ACTION_TEMPLATE(name, template_params, value_params)
+//       ... GMOCK_INTERNAL_DECL_##template_params ...
+//
+// which causes ACTION_TEMPLATE(..., HAS_1_TEMPLATE_PARAMS(typename, T), ...)
+// to expand to
+//
+//       ... GMOCK_INTERNAL_DECL_HAS_1_TEMPLATE_PARAMS(typename, T) ...
+//
+// Since GMOCK_INTERNAL_DECL_HAS_1_TEMPLATE_PARAMS is a macro, the
+// preprocessor will continue to expand it to
+//
+//       ... typename T ...
+//
+// This technique conforms to the C++ standard and is portable.  It
+// allows us to implement action templates using O(N) code, where N is
+// the maximum number of template/value parameters supported.  Without
+// using it, we'd have to devote O(N^2) amount of code to implement all
+// combinations of m and n.
+
+// Declares the template parameters.
+#define GMOCK_INTERNAL_DECL_HAS_1_TEMPLATE_PARAMS(kind0, name0) kind0 name0
+#define GMOCK_INTERNAL_DECL_HAS_2_TEMPLATE_PARAMS(kind0, name0, kind1, \
+    name1) kind0 name0, kind1 name1
+#define GMOCK_INTERNAL_DECL_HAS_3_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \
+    kind2, name2) kind0 name0, kind1 name1, kind2 name2
+#define GMOCK_INTERNAL_DECL_HAS_4_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \
+    kind2, name2, kind3, name3) kind0 name0, kind1 name1, kind2 name2, \
+    kind3 name3
+#define GMOCK_INTERNAL_DECL_HAS_5_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \
+    kind2, name2, kind3, name3, kind4, name4) kind0 name0, kind1 name1, \
+    kind2 name2, kind3 name3, kind4 name4
+#define GMOCK_INTERNAL_DECL_HAS_6_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \
+    kind2, name2, kind3, name3, kind4, name4, kind5, name5) kind0 name0, \
+    kind1 name1, kind2 name2, kind3 name3, kind4 name4, kind5 name5
+#define GMOCK_INTERNAL_DECL_HAS_7_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \
+    kind2, name2, kind3, name3, kind4, name4, kind5, name5, kind6, \
+    name6) kind0 name0, kind1 name1, kind2 name2, kind3 name3, kind4 name4, \
+    kind5 name5, kind6 name6
+#define GMOCK_INTERNAL_DECL_HAS_8_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \
+    kind2, name2, kind3, name3, kind4, name4, kind5, name5, kind6, name6, \
+    kind7, name7) kind0 name0, kind1 name1, kind2 name2, kind3 name3, \
+    kind4 name4, kind5 name5, kind6 name6, kind7 name7
+#define GMOCK_INTERNAL_DECL_HAS_9_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \
+    kind2, name2, kind3, name3, kind4, name4, kind5, name5, kind6, name6, \
+    kind7, name7, kind8, name8) kind0 name0, kind1 name1, kind2 name2, \
+    kind3 name3, kind4 name4, kind5 name5, kind6 name6, kind7 name7, \
+    kind8 name8
+#define GMOCK_INTERNAL_DECL_HAS_10_TEMPLATE_PARAMS(kind0, name0, kind1, \
+    name1, kind2, name2, kind3, name3, kind4, name4, kind5, name5, kind6, \
+    name6, kind7, name7, kind8, name8, kind9, name9) kind0 name0, \
+    kind1 name1, kind2 name2, kind3 name3, kind4 name4, kind5 name5, \
+    kind6 name6, kind7 name7, kind8 name8, kind9 name9
+
+// Lists the template parameters.
+#define GMOCK_INTERNAL_LIST_HAS_1_TEMPLATE_PARAMS(kind0, name0) name0
+#define GMOCK_INTERNAL_LIST_HAS_2_TEMPLATE_PARAMS(kind0, name0, kind1, \
+    name1) name0, name1
+#define GMOCK_INTERNAL_LIST_HAS_3_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \
+    kind2, name2) name0, name1, name2
+#define GMOCK_INTERNAL_LIST_HAS_4_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \
+    kind2, name2, kind3, name3) name0, name1, name2, name3
+#define GMOCK_INTERNAL_LIST_HAS_5_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \
+    kind2, name2, kind3, name3, kind4, name4) name0, name1, name2, name3, \
+    name4
+#define GMOCK_INTERNAL_LIST_HAS_6_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \
+    kind2, name2, kind3, name3, kind4, name4, kind5, name5) name0, name1, \
+    name2, name3, name4, name5
+#define GMOCK_INTERNAL_LIST_HAS_7_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \
+    kind2, name2, kind3, name3, kind4, name4, kind5, name5, kind6, \
+    name6) name0, name1, name2, name3, name4, name5, name6
+#define GMOCK_INTERNAL_LIST_HAS_8_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \
+    kind2, name2, kind3, name3, kind4, name4, kind5, name5, kind6, name6, \
+    kind7, name7) name0, name1, name2, name3, name4, name5, name6, name7
+#define GMOCK_INTERNAL_LIST_HAS_9_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \
+    kind2, name2, kind3, name3, kind4, name4, kind5, name5, kind6, name6, \
+    kind7, name7, kind8, name8) name0, name1, name2, name3, name4, name5, \
+    name6, name7, name8
+#define GMOCK_INTERNAL_LIST_HAS_10_TEMPLATE_PARAMS(kind0, name0, kind1, \
+    name1, kind2, name2, kind3, name3, kind4, name4, kind5, name5, kind6, \
+    name6, kind7, name7, kind8, name8, kind9, name9) name0, name1, name2, \
+    name3, name4, name5, name6, name7, name8, name9
+
+// Declares the types of value parameters.
+#define GMOCK_INTERNAL_DECL_TYPE_AND_0_VALUE_PARAMS()
+#define GMOCK_INTERNAL_DECL_TYPE_AND_1_VALUE_PARAMS(p0) , typename p0##_type
+#define GMOCK_INTERNAL_DECL_TYPE_AND_2_VALUE_PARAMS(p0, p1) , \
+    typename p0##_type, typename p1##_type
+#define GMOCK_INTERNAL_DECL_TYPE_AND_3_VALUE_PARAMS(p0, p1, p2) , \
+    typename p0##_type, typename p1##_type, typename p2##_type
+#define GMOCK_INTERNAL_DECL_TYPE_AND_4_VALUE_PARAMS(p0, p1, p2, p3) , \
+    typename p0##_type, typename p1##_type, typename p2##_type, \
+    typename p3##_type
+#define GMOCK_INTERNAL_DECL_TYPE_AND_5_VALUE_PARAMS(p0, p1, p2, p3, p4) , \
+    typename p0##_type, typename p1##_type, typename p2##_type, \
+    typename p3##_type, typename p4##_type
+#define GMOCK_INTERNAL_DECL_TYPE_AND_6_VALUE_PARAMS(p0, p1, p2, p3, p4, p5) , \
+    typename p0##_type, typename p1##_type, typename p2##_type, \
+    typename p3##_type, typename p4##_type, typename p5##_type
+#define GMOCK_INTERNAL_DECL_TYPE_AND_7_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, \
+    p6) , typename p0##_type, typename p1##_type, typename p2##_type, \
+    typename p3##_type, typename p4##_type, typename p5##_type, \
+    typename p6##_type
+#define GMOCK_INTERNAL_DECL_TYPE_AND_8_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, \
+    p6, p7) , typename p0##_type, typename p1##_type, typename p2##_type, \
+    typename p3##_type, typename p4##_type, typename p5##_type, \
+    typename p6##_type, typename p7##_type
+#define GMOCK_INTERNAL_DECL_TYPE_AND_9_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, \
+    p6, p7, p8) , typename p0##_type, typename p1##_type, typename p2##_type, \
+    typename p3##_type, typename p4##_type, typename p5##_type, \
+    typename p6##_type, typename p7##_type, typename p8##_type
+#define GMOCK_INTERNAL_DECL_TYPE_AND_10_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, \
+    p6, p7, p8, p9) , typename p0##_type, typename p1##_type, \
+    typename p2##_type, typename p3##_type, typename p4##_type, \
+    typename p5##_type, typename p6##_type, typename p7##_type, \
+    typename p8##_type, typename p9##_type
+
+// Initializes the value parameters.
+#define GMOCK_INTERNAL_INIT_AND_0_VALUE_PARAMS()\
+    ()
+#define GMOCK_INTERNAL_INIT_AND_1_VALUE_PARAMS(p0)\
+    (p0##_type gmock_p0) : p0(gmock_p0)
+#define GMOCK_INTERNAL_INIT_AND_2_VALUE_PARAMS(p0, p1)\
+    (p0##_type gmock_p0, p1##_type gmock_p1) : p0(gmock_p0), p1(gmock_p1)
+#define GMOCK_INTERNAL_INIT_AND_3_VALUE_PARAMS(p0, p1, p2)\
+    (p0##_type gmock_p0, p1##_type gmock_p1, \
+        p2##_type gmock_p2) : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2)
+#define GMOCK_INTERNAL_INIT_AND_4_VALUE_PARAMS(p0, p1, p2, p3)\
+    (p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
+        p3##_type gmock_p3) : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), \
+        p3(gmock_p3)
+#define GMOCK_INTERNAL_INIT_AND_5_VALUE_PARAMS(p0, p1, p2, p3, p4)\
+    (p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
+        p3##_type gmock_p3, p4##_type gmock_p4) : p0(gmock_p0), p1(gmock_p1), \
+        p2(gmock_p2), p3(gmock_p3), p4(gmock_p4)
+#define GMOCK_INTERNAL_INIT_AND_6_VALUE_PARAMS(p0, p1, p2, p3, p4, p5)\
+    (p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
+        p3##_type gmock_p3, p4##_type gmock_p4, \
+        p5##_type gmock_p5) : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), \
+        p3(gmock_p3), p4(gmock_p4), p5(gmock_p5)
+#define GMOCK_INTERNAL_INIT_AND_7_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6)\
+    (p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
+        p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \
+        p6##_type gmock_p6) : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), \
+        p3(gmock_p3), p4(gmock_p4), p5(gmock_p5), p6(gmock_p6)
+#define GMOCK_INTERNAL_INIT_AND_8_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, p7)\
+    (p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
+        p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \
+        p6##_type gmock_p6, p7##_type gmock_p7) : p0(gmock_p0), p1(gmock_p1), \
+        p2(gmock_p2), p3(gmock_p3), p4(gmock_p4), p5(gmock_p5), p6(gmock_p6), \
+        p7(gmock_p7)
+#define GMOCK_INTERNAL_INIT_AND_9_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \
+    p7, p8)\
+    (p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
+        p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \
+        p6##_type gmock_p6, p7##_type gmock_p7, \
+        p8##_type gmock_p8) : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), \
+        p3(gmock_p3), p4(gmock_p4), p5(gmock_p5), p6(gmock_p6), p7(gmock_p7), \
+        p8(gmock_p8)
+#define GMOCK_INTERNAL_INIT_AND_10_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \
+    p7, p8, p9)\
+    (p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
+        p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \
+        p6##_type gmock_p6, p7##_type gmock_p7, p8##_type gmock_p8, \
+        p9##_type gmock_p9) : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), \
+        p3(gmock_p3), p4(gmock_p4), p5(gmock_p5), p6(gmock_p6), p7(gmock_p7), \
+        p8(gmock_p8), p9(gmock_p9)
+
+// Declares the fields for storing the value parameters.
+#define GMOCK_INTERNAL_DEFN_AND_0_VALUE_PARAMS()
+#define GMOCK_INTERNAL_DEFN_AND_1_VALUE_PARAMS(p0) p0##_type p0;
+#define GMOCK_INTERNAL_DEFN_AND_2_VALUE_PARAMS(p0, p1) p0##_type p0; \
+    p1##_type p1;
+#define GMOCK_INTERNAL_DEFN_AND_3_VALUE_PARAMS(p0, p1, p2) p0##_type p0; \
+    p1##_type p1; p2##_type p2;
+#define GMOCK_INTERNAL_DEFN_AND_4_VALUE_PARAMS(p0, p1, p2, p3) p0##_type p0; \
+    p1##_type p1; p2##_type p2; p3##_type p3;
+#define GMOCK_INTERNAL_DEFN_AND_5_VALUE_PARAMS(p0, p1, p2, p3, \
+    p4) p0##_type p0; p1##_type p1; p2##_type p2; p3##_type p3; p4##_type p4;
+#define GMOCK_INTERNAL_DEFN_AND_6_VALUE_PARAMS(p0, p1, p2, p3, p4, \
+    p5) p0##_type p0; p1##_type p1; p2##_type p2; p3##_type p3; p4##_type p4; \
+    p5##_type p5;
+#define GMOCK_INTERNAL_DEFN_AND_7_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, \
+    p6) p0##_type p0; p1##_type p1; p2##_type p2; p3##_type p3; p4##_type p4; \
+    p5##_type p5; p6##_type p6;
+#define GMOCK_INTERNAL_DEFN_AND_8_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \
+    p7) p0##_type p0; p1##_type p1; p2##_type p2; p3##_type p3; p4##_type p4; \
+    p5##_type p5; p6##_type p6; p7##_type p7;
+#define GMOCK_INTERNAL_DEFN_AND_9_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \
+    p7, p8) p0##_type p0; p1##_type p1; p2##_type p2; p3##_type p3; \
+    p4##_type p4; p5##_type p5; p6##_type p6; p7##_type p7; p8##_type p8;
+#define GMOCK_INTERNAL_DEFN_AND_10_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \
+    p7, p8, p9) p0##_type p0; p1##_type p1; p2##_type p2; p3##_type p3; \
+    p4##_type p4; p5##_type p5; p6##_type p6; p7##_type p7; p8##_type p8; \
+    p9##_type p9;
+
+// Lists the value parameters.
+#define GMOCK_INTERNAL_LIST_AND_0_VALUE_PARAMS()
+#define GMOCK_INTERNAL_LIST_AND_1_VALUE_PARAMS(p0) p0
+#define GMOCK_INTERNAL_LIST_AND_2_VALUE_PARAMS(p0, p1) p0, p1
+#define GMOCK_INTERNAL_LIST_AND_3_VALUE_PARAMS(p0, p1, p2) p0, p1, p2
+#define GMOCK_INTERNAL_LIST_AND_4_VALUE_PARAMS(p0, p1, p2, p3) p0, p1, p2, p3
+#define GMOCK_INTERNAL_LIST_AND_5_VALUE_PARAMS(p0, p1, p2, p3, p4) p0, p1, \
+    p2, p3, p4
+#define GMOCK_INTERNAL_LIST_AND_6_VALUE_PARAMS(p0, p1, p2, p3, p4, p5) p0, \
+    p1, p2, p3, p4, p5
+#define GMOCK_INTERNAL_LIST_AND_7_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, \
+    p6) p0, p1, p2, p3, p4, p5, p6
+#define GMOCK_INTERNAL_LIST_AND_8_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \
+    p7) p0, p1, p2, p3, p4, p5, p6, p7
+#define GMOCK_INTERNAL_LIST_AND_9_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \
+    p7, p8) p0, p1, p2, p3, p4, p5, p6, p7, p8
+#define GMOCK_INTERNAL_LIST_AND_10_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \
+    p7, p8, p9) p0, p1, p2, p3, p4, p5, p6, p7, p8, p9
+
+// Lists the value parameter types.
+#define GMOCK_INTERNAL_LIST_TYPE_AND_0_VALUE_PARAMS()
+#define GMOCK_INTERNAL_LIST_TYPE_AND_1_VALUE_PARAMS(p0) , p0##_type
+#define GMOCK_INTERNAL_LIST_TYPE_AND_2_VALUE_PARAMS(p0, p1) , p0##_type, \
+    p1##_type
+#define GMOCK_INTERNAL_LIST_TYPE_AND_3_VALUE_PARAMS(p0, p1, p2) , p0##_type, \
+    p1##_type, p2##_type
+#define GMOCK_INTERNAL_LIST_TYPE_AND_4_VALUE_PARAMS(p0, p1, p2, p3) , \
+    p0##_type, p1##_type, p2##_type, p3##_type
+#define GMOCK_INTERNAL_LIST_TYPE_AND_5_VALUE_PARAMS(p0, p1, p2, p3, p4) , \
+    p0##_type, p1##_type, p2##_type, p3##_type, p4##_type
+#define GMOCK_INTERNAL_LIST_TYPE_AND_6_VALUE_PARAMS(p0, p1, p2, p3, p4, p5) , \
+    p0##_type, p1##_type, p2##_type, p3##_type, p4##_type, p5##_type
+#define GMOCK_INTERNAL_LIST_TYPE_AND_7_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, \
+    p6) , p0##_type, p1##_type, p2##_type, p3##_type, p4##_type, p5##_type, \
+    p6##_type
+#define GMOCK_INTERNAL_LIST_TYPE_AND_8_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, \
+    p6, p7) , p0##_type, p1##_type, p2##_type, p3##_type, p4##_type, \
+    p5##_type, p6##_type, p7##_type
+#define GMOCK_INTERNAL_LIST_TYPE_AND_9_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, \
+    p6, p7, p8) , p0##_type, p1##_type, p2##_type, p3##_type, p4##_type, \
+    p5##_type, p6##_type, p7##_type, p8##_type
+#define GMOCK_INTERNAL_LIST_TYPE_AND_10_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, \
+    p6, p7, p8, p9) , p0##_type, p1##_type, p2##_type, p3##_type, p4##_type, \
+    p5##_type, p6##_type, p7##_type, p8##_type, p9##_type
+
+// Declares the value parameters.
+#define GMOCK_INTERNAL_DECL_AND_0_VALUE_PARAMS()
+#define GMOCK_INTERNAL_DECL_AND_1_VALUE_PARAMS(p0) p0##_type p0
+#define GMOCK_INTERNAL_DECL_AND_2_VALUE_PARAMS(p0, p1) p0##_type p0, \
+    p1##_type p1
+#define GMOCK_INTERNAL_DECL_AND_3_VALUE_PARAMS(p0, p1, p2) p0##_type p0, \
+    p1##_type p1, p2##_type p2
+#define GMOCK_INTERNAL_DECL_AND_4_VALUE_PARAMS(p0, p1, p2, p3) p0##_type p0, \
+    p1##_type p1, p2##_type p2, p3##_type p3
+#define GMOCK_INTERNAL_DECL_AND_5_VALUE_PARAMS(p0, p1, p2, p3, \
+    p4) p0##_type p0, p1##_type p1, p2##_type p2, p3##_type p3, p4##_type p4
+#define GMOCK_INTERNAL_DECL_AND_6_VALUE_PARAMS(p0, p1, p2, p3, p4, \
+    p5) p0##_type p0, p1##_type p1, p2##_type p2, p3##_type p3, p4##_type p4, \
+    p5##_type p5
+#define GMOCK_INTERNAL_DECL_AND_7_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, \
+    p6) p0##_type p0, p1##_type p1, p2##_type p2, p3##_type p3, p4##_type p4, \
+    p5##_type p5, p6##_type p6
+#define GMOCK_INTERNAL_DECL_AND_8_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \
+    p7) p0##_type p0, p1##_type p1, p2##_type p2, p3##_type p3, p4##_type p4, \
+    p5##_type p5, p6##_type p6, p7##_type p7
+#define GMOCK_INTERNAL_DECL_AND_9_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \
+    p7, p8) p0##_type p0, p1##_type p1, p2##_type p2, p3##_type p3, \
+    p4##_type p4, p5##_type p5, p6##_type p6, p7##_type p7, p8##_type p8
+#define GMOCK_INTERNAL_DECL_AND_10_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \
+    p7, p8, p9) p0##_type p0, p1##_type p1, p2##_type p2, p3##_type p3, \
+    p4##_type p4, p5##_type p5, p6##_type p6, p7##_type p7, p8##_type p8, \
+    p9##_type p9
+
+// The suffix of the class template implementing the action template.
+#define GMOCK_INTERNAL_COUNT_AND_0_VALUE_PARAMS()
+#define GMOCK_INTERNAL_COUNT_AND_1_VALUE_PARAMS(p0) P
+#define GMOCK_INTERNAL_COUNT_AND_2_VALUE_PARAMS(p0, p1) P2
+#define GMOCK_INTERNAL_COUNT_AND_3_VALUE_PARAMS(p0, p1, p2) P3
+#define GMOCK_INTERNAL_COUNT_AND_4_VALUE_PARAMS(p0, p1, p2, p3) P4
+#define GMOCK_INTERNAL_COUNT_AND_5_VALUE_PARAMS(p0, p1, p2, p3, p4) P5
+#define GMOCK_INTERNAL_COUNT_AND_6_VALUE_PARAMS(p0, p1, p2, p3, p4, p5) P6
+#define GMOCK_INTERNAL_COUNT_AND_7_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6) P7
+#define GMOCK_INTERNAL_COUNT_AND_8_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \
+    p7) P8
+#define GMOCK_INTERNAL_COUNT_AND_9_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \
+    p7, p8) P9
+#define GMOCK_INTERNAL_COUNT_AND_10_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \
+    p7, p8, p9) P10
+
+// The name of the class template implementing the action template.
+#define GMOCK_ACTION_CLASS_(name, value_params)\
+    GTEST_CONCAT_TOKEN_(name##Action, GMOCK_INTERNAL_COUNT_##value_params)
+
+#define ACTION_TEMPLATE(name, template_params, value_params)\
+  template <GMOCK_INTERNAL_DECL_##template_params\
+            GMOCK_INTERNAL_DECL_TYPE_##value_params>\
+  class GMOCK_ACTION_CLASS_(name, value_params) {\
+   public:\
+    GMOCK_ACTION_CLASS_(name, value_params)\
+        GMOCK_INTERNAL_INIT_##value_params {}\
+    template <typename F>\
+    class gmock_Impl : public ::testing::ActionInterface<F> {\
+     public:\
+      typedef F function_type;\
+      typedef typename ::testing::internal::Function<F>::Result return_type;\
+      typedef typename ::testing::internal::Function<F>::ArgumentTuple\
+          args_type;\
+      explicit gmock_Impl GMOCK_INTERNAL_INIT_##value_params {}\
+      virtual return_type Perform(const args_type& args) {\
+        return ::testing::internal::ActionHelper<return_type, gmock_Impl>::\
+            Perform(this, args);\
+      }\
+      template <typename arg0_type, typename arg1_type, typename arg2_type, \
+          typename arg3_type, typename arg4_type, typename arg5_type, \
+          typename arg6_type, typename arg7_type, typename arg8_type, \
+          typename arg9_type>\
+      return_type gmock_PerformImpl(const args_type& args, arg0_type arg0, \
+          arg1_type arg1, arg2_type arg2, arg3_type arg3, arg4_type arg4, \
+          arg5_type arg5, arg6_type arg6, arg7_type arg7, arg8_type arg8, \
+          arg9_type arg9) const;\
+      GMOCK_INTERNAL_DEFN_##value_params\
+     private:\
+      GTEST_DISALLOW_ASSIGN_(gmock_Impl);\
+    };\
+    template <typename F> operator ::testing::Action<F>() const {\
+      return ::testing::Action<F>(\
+          new gmock_Impl<F>(GMOCK_INTERNAL_LIST_##value_params));\
+    }\
+    GMOCK_INTERNAL_DEFN_##value_params\
+   private:\
+    GTEST_DISALLOW_ASSIGN_(GMOCK_ACTION_CLASS_(name, value_params));\
+  };\
+  template <GMOCK_INTERNAL_DECL_##template_params\
+            GMOCK_INTERNAL_DECL_TYPE_##value_params>\
+  inline GMOCK_ACTION_CLASS_(name, value_params)<\
+      GMOCK_INTERNAL_LIST_##template_params\
+      GMOCK_INTERNAL_LIST_TYPE_##value_params> name(\
+          GMOCK_INTERNAL_DECL_##value_params) {\
+    return GMOCK_ACTION_CLASS_(name, value_params)<\
+        GMOCK_INTERNAL_LIST_##template_params\
+        GMOCK_INTERNAL_LIST_TYPE_##value_params>(\
+            GMOCK_INTERNAL_LIST_##value_params);\
+  }\
+  template <GMOCK_INTERNAL_DECL_##template_params\
+            GMOCK_INTERNAL_DECL_TYPE_##value_params>\
+  template <typename F>\
+  template <typename arg0_type, typename arg1_type, typename arg2_type, \
+      typename arg3_type, typename arg4_type, typename arg5_type, \
+      typename arg6_type, typename arg7_type, typename arg8_type, \
+      typename arg9_type>\
+  typename ::testing::internal::Function<F>::Result\
+      GMOCK_ACTION_CLASS_(name, value_params)<\
+          GMOCK_INTERNAL_LIST_##template_params\
+          GMOCK_INTERNAL_LIST_TYPE_##value_params>::gmock_Impl<F>::\
+              gmock_PerformImpl(\
+          GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_) const
+
+#define ACTION(name)\
+  class name##Action {\
+   public:\
+    name##Action() {}\
+    template <typename F>\
+    class gmock_Impl : public ::testing::ActionInterface<F> {\
+     public:\
+      typedef F function_type;\
+      typedef typename ::testing::internal::Function<F>::Result return_type;\
+      typedef typename ::testing::internal::Function<F>::ArgumentTuple\
+          args_type;\
+      gmock_Impl() {}\
+      virtual return_type Perform(const args_type& args) {\
+        return ::testing::internal::ActionHelper<return_type, gmock_Impl>::\
+            Perform(this, args);\
+      }\
+      template <typename arg0_type, typename arg1_type, typename arg2_type, \
+          typename arg3_type, typename arg4_type, typename arg5_type, \
+          typename arg6_type, typename arg7_type, typename arg8_type, \
+          typename arg9_type>\
+      return_type gmock_PerformImpl(const args_type& args, arg0_type arg0, \
+          arg1_type arg1, arg2_type arg2, arg3_type arg3, arg4_type arg4, \
+          arg5_type arg5, arg6_type arg6, arg7_type arg7, arg8_type arg8, \
+          arg9_type arg9) const;\
+     private:\
+      GTEST_DISALLOW_ASSIGN_(gmock_Impl);\
+    };\
+    template <typename F> operator ::testing::Action<F>() const {\
+      return ::testing::Action<F>(new gmock_Impl<F>());\
+    }\
+   private:\
+    GTEST_DISALLOW_ASSIGN_(name##Action);\
+  };\
+  inline name##Action name() {\
+    return name##Action();\
+  }\
+  template <typename F>\
+  template <typename arg0_type, typename arg1_type, typename arg2_type, \
+      typename arg3_type, typename arg4_type, typename arg5_type, \
+      typename arg6_type, typename arg7_type, typename arg8_type, \
+      typename arg9_type>\
+  typename ::testing::internal::Function<F>::Result\
+      name##Action::gmock_Impl<F>::gmock_PerformImpl(\
+          GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_) const
+
+#define ACTION_P(name, p0)\
+  template <typename p0##_type>\
+  class name##ActionP {\
+   public:\
+    name##ActionP(p0##_type gmock_p0) : p0(gmock_p0) {}\
+    template <typename F>\
+    class gmock_Impl : public ::testing::ActionInterface<F> {\
+     public:\
+      typedef F function_type;\
+      typedef typename ::testing::internal::Function<F>::Result return_type;\
+      typedef typename ::testing::internal::Function<F>::ArgumentTuple\
+          args_type;\
+      explicit gmock_Impl(p0##_type gmock_p0) : p0(gmock_p0) {}\
+      virtual return_type Perform(const args_type& args) {\
+        return ::testing::internal::ActionHelper<return_type, gmock_Impl>::\
+            Perform(this, args);\
+      }\
+      template <typename arg0_type, typename arg1_type, typename arg2_type, \
+          typename arg3_type, typename arg4_type, typename arg5_type, \
+          typename arg6_type, typename arg7_type, typename arg8_type, \
+          typename arg9_type>\
+      return_type gmock_PerformImpl(const args_type& args, arg0_type arg0, \
+          arg1_type arg1, arg2_type arg2, arg3_type arg3, arg4_type arg4, \
+          arg5_type arg5, arg6_type arg6, arg7_type arg7, arg8_type arg8, \
+          arg9_type arg9) const;\
+      p0##_type p0;\
+     private:\
+      GTEST_DISALLOW_ASSIGN_(gmock_Impl);\
+    };\
+    template <typename F> operator ::testing::Action<F>() const {\
+      return ::testing::Action<F>(new gmock_Impl<F>(p0));\
+    }\
+    p0##_type p0;\
+   private:\
+    GTEST_DISALLOW_ASSIGN_(name##ActionP);\
+  };\
+  template <typename p0##_type>\
+  inline name##ActionP<p0##_type> name(p0##_type p0) {\
+    return name##ActionP<p0##_type>(p0);\
+  }\
+  template <typename p0##_type>\
+  template <typename F>\
+  template <typename arg0_type, typename arg1_type, typename arg2_type, \
+      typename arg3_type, typename arg4_type, typename arg5_type, \
+      typename arg6_type, typename arg7_type, typename arg8_type, \
+      typename arg9_type>\
+  typename ::testing::internal::Function<F>::Result\
+      name##ActionP<p0##_type>::gmock_Impl<F>::gmock_PerformImpl(\
+          GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_) const
+
+#define ACTION_P2(name, p0, p1)\
+  template <typename p0##_type, typename p1##_type>\
+  class name##ActionP2 {\
+   public:\
+    name##ActionP2(p0##_type gmock_p0, p1##_type gmock_p1) : p0(gmock_p0), \
+        p1(gmock_p1) {}\
+    template <typename F>\
+    class gmock_Impl : public ::testing::ActionInterface<F> {\
+     public:\
+      typedef F function_type;\
+      typedef typename ::testing::internal::Function<F>::Result return_type;\
+      typedef typename ::testing::internal::Function<F>::ArgumentTuple\
+          args_type;\
+      gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1) : p0(gmock_p0), \
+          p1(gmock_p1) {}\
+      virtual return_type Perform(const args_type& args) {\
+        return ::testing::internal::ActionHelper<return_type, gmock_Impl>::\
+            Perform(this, args);\
+      }\
+      template <typename arg0_type, typename arg1_type, typename arg2_type, \
+          typename arg3_type, typename arg4_type, typename arg5_type, \
+          typename arg6_type, typename arg7_type, typename arg8_type, \
+          typename arg9_type>\
+      return_type gmock_PerformImpl(const args_type& args, arg0_type arg0, \
+          arg1_type arg1, arg2_type arg2, arg3_type arg3, arg4_type arg4, \
+          arg5_type arg5, arg6_type arg6, arg7_type arg7, arg8_type arg8, \
+          arg9_type arg9) const;\
+      p0##_type p0;\
+      p1##_type p1;\
+     private:\
+      GTEST_DISALLOW_ASSIGN_(gmock_Impl);\
+    };\
+    template <typename F> operator ::testing::Action<F>() const {\
+      return ::testing::Action<F>(new gmock_Impl<F>(p0, p1));\
+    }\
+    p0##_type p0;\
+    p1##_type p1;\
+   private:\
+    GTEST_DISALLOW_ASSIGN_(name##ActionP2);\
+  };\
+  template <typename p0##_type, typename p1##_type>\
+  inline name##ActionP2<p0##_type, p1##_type> name(p0##_type p0, \
+      p1##_type p1) {\
+    return name##ActionP2<p0##_type, p1##_type>(p0, p1);\
+  }\
+  template <typename p0##_type, typename p1##_type>\
+  template <typename F>\
+  template <typename arg0_type, typename arg1_type, typename arg2_type, \
+      typename arg3_type, typename arg4_type, typename arg5_type, \
+      typename arg6_type, typename arg7_type, typename arg8_type, \
+      typename arg9_type>\
+  typename ::testing::internal::Function<F>::Result\
+      name##ActionP2<p0##_type, p1##_type>::gmock_Impl<F>::gmock_PerformImpl(\
+          GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_) const
+
+#define ACTION_P3(name, p0, p1, p2)\
+  template <typename p0##_type, typename p1##_type, typename p2##_type>\
+  class name##ActionP3 {\
+   public:\
+    name##ActionP3(p0##_type gmock_p0, p1##_type gmock_p1, \
+        p2##_type gmock_p2) : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2) {}\
+    template <typename F>\
+    class gmock_Impl : public ::testing::ActionInterface<F> {\
+     public:\
+      typedef F function_type;\
+      typedef typename ::testing::internal::Function<F>::Result return_type;\
+      typedef typename ::testing::internal::Function<F>::ArgumentTuple\
+          args_type;\
+      gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, \
+          p2##_type gmock_p2) : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2) {}\
+      virtual return_type Perform(const args_type& args) {\
+        return ::testing::internal::ActionHelper<return_type, gmock_Impl>::\
+            Perform(this, args);\
+      }\
+      template <typename arg0_type, typename arg1_type, typename arg2_type, \
+          typename arg3_type, typename arg4_type, typename arg5_type, \
+          typename arg6_type, typename arg7_type, typename arg8_type, \
+          typename arg9_type>\
+      return_type gmock_PerformImpl(const args_type& args, arg0_type arg0, \
+          arg1_type arg1, arg2_type arg2, arg3_type arg3, arg4_type arg4, \
+          arg5_type arg5, arg6_type arg6, arg7_type arg7, arg8_type arg8, \
+          arg9_type arg9) const;\
+      p0##_type p0;\
+      p1##_type p1;\
+      p2##_type p2;\
+     private:\
+      GTEST_DISALLOW_ASSIGN_(gmock_Impl);\
+    };\
+    template <typename F> operator ::testing::Action<F>() const {\
+      return ::testing::Action<F>(new gmock_Impl<F>(p0, p1, p2));\
+    }\
+    p0##_type p0;\
+    p1##_type p1;\
+    p2##_type p2;\
+   private:\
+    GTEST_DISALLOW_ASSIGN_(name##ActionP3);\
+  };\
+  template <typename p0##_type, typename p1##_type, typename p2##_type>\
+  inline name##ActionP3<p0##_type, p1##_type, p2##_type> name(p0##_type p0, \
+      p1##_type p1, p2##_type p2) {\
+    return name##ActionP3<p0##_type, p1##_type, p2##_type>(p0, p1, p2);\
+  }\
+  template <typename p0##_type, typename p1##_type, typename p2##_type>\
+  template <typename F>\
+  template <typename arg0_type, typename arg1_type, typename arg2_type, \
+      typename arg3_type, typename arg4_type, typename arg5_type, \
+      typename arg6_type, typename arg7_type, typename arg8_type, \
+      typename arg9_type>\
+  typename ::testing::internal::Function<F>::Result\
+      name##ActionP3<p0##_type, p1##_type, \
+          p2##_type>::gmock_Impl<F>::gmock_PerformImpl(\
+          GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_) const
+
+#define ACTION_P4(name, p0, p1, p2, p3)\
+  template <typename p0##_type, typename p1##_type, typename p2##_type, \
+      typename p3##_type>\
+  class name##ActionP4 {\
+   public:\
+    name##ActionP4(p0##_type gmock_p0, p1##_type gmock_p1, \
+        p2##_type gmock_p2, p3##_type gmock_p3) : p0(gmock_p0), p1(gmock_p1), \
+        p2(gmock_p2), p3(gmock_p3) {}\
+    template <typename F>\
+    class gmock_Impl : public ::testing::ActionInterface<F> {\
+     public:\
+      typedef F function_type;\
+      typedef typename ::testing::internal::Function<F>::Result return_type;\
+      typedef typename ::testing::internal::Function<F>::ArgumentTuple\
+          args_type;\
+      gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
+          p3##_type gmock_p3) : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), \
+          p3(gmock_p3) {}\
+      virtual return_type Perform(const args_type& args) {\
+        return ::testing::internal::ActionHelper<return_type, gmock_Impl>::\
+            Perform(this, args);\
+      }\
+      template <typename arg0_type, typename arg1_type, typename arg2_type, \
+          typename arg3_type, typename arg4_type, typename arg5_type, \
+          typename arg6_type, typename arg7_type, typename arg8_type, \
+          typename arg9_type>\
+      return_type gmock_PerformImpl(const args_type& args, arg0_type arg0, \
+          arg1_type arg1, arg2_type arg2, arg3_type arg3, arg4_type arg4, \
+          arg5_type arg5, arg6_type arg6, arg7_type arg7, arg8_type arg8, \
+          arg9_type arg9) const;\
+      p0##_type p0;\
+      p1##_type p1;\
+      p2##_type p2;\
+      p3##_type p3;\
+     private:\
+      GTEST_DISALLOW_ASSIGN_(gmock_Impl);\
+    };\
+    template <typename F> operator ::testing::Action<F>() const {\
+      return ::testing::Action<F>(new gmock_Impl<F>(p0, p1, p2, p3));\
+    }\
+    p0##_type p0;\
+    p1##_type p1;\
+    p2##_type p2;\
+    p3##_type p3;\
+   private:\
+    GTEST_DISALLOW_ASSIGN_(name##ActionP4);\
+  };\
+  template <typename p0##_type, typename p1##_type, typename p2##_type, \
+      typename p3##_type>\
+  inline name##ActionP4<p0##_type, p1##_type, p2##_type, \
+      p3##_type> name(p0##_type p0, p1##_type p1, p2##_type p2, \
+      p3##_type p3) {\
+    return name##ActionP4<p0##_type, p1##_type, p2##_type, p3##_type>(p0, p1, \
+        p2, p3);\
+  }\
+  template <typename p0##_type, typename p1##_type, typename p2##_type, \
+      typename p3##_type>\
+  template <typename F>\
+  template <typename arg0_type, typename arg1_type, typename arg2_type, \
+      typename arg3_type, typename arg4_type, typename arg5_type, \
+      typename arg6_type, typename arg7_type, typename arg8_type, \
+      typename arg9_type>\
+  typename ::testing::internal::Function<F>::Result\
+      name##ActionP4<p0##_type, p1##_type, p2##_type, \
+          p3##_type>::gmock_Impl<F>::gmock_PerformImpl(\
+          GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_) const
+
+#define ACTION_P5(name, p0, p1, p2, p3, p4)\
+  template <typename p0##_type, typename p1##_type, typename p2##_type, \
+      typename p3##_type, typename p4##_type>\
+  class name##ActionP5 {\
+   public:\
+    name##ActionP5(p0##_type gmock_p0, p1##_type gmock_p1, \
+        p2##_type gmock_p2, p3##_type gmock_p3, \
+        p4##_type gmock_p4) : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), \
+        p3(gmock_p3), p4(gmock_p4) {}\
+    template <typename F>\
+    class gmock_Impl : public ::testing::ActionInterface<F> {\
+     public:\
+      typedef F function_type;\
+      typedef typename ::testing::internal::Function<F>::Result return_type;\
+      typedef typename ::testing::internal::Function<F>::ArgumentTuple\
+          args_type;\
+      gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
+          p3##_type gmock_p3, p4##_type gmock_p4) : p0(gmock_p0), \
+          p1(gmock_p1), p2(gmock_p2), p3(gmock_p3), p4(gmock_p4) {}\
+      virtual return_type Perform(const args_type& args) {\
+        return ::testing::internal::ActionHelper<return_type, gmock_Impl>::\
+            Perform(this, args);\
+      }\
+      template <typename arg0_type, typename arg1_type, typename arg2_type, \
+          typename arg3_type, typename arg4_type, typename arg5_type, \
+          typename arg6_type, typename arg7_type, typename arg8_type, \
+          typename arg9_type>\
+      return_type gmock_PerformImpl(const args_type& args, arg0_type arg0, \
+          arg1_type arg1, arg2_type arg2, arg3_type arg3, arg4_type arg4, \
+          arg5_type arg5, arg6_type arg6, arg7_type arg7, arg8_type arg8, \
+          arg9_type arg9) const;\
+      p0##_type p0;\
+      p1##_type p1;\
+      p2##_type p2;\
+      p3##_type p3;\
+      p4##_type p4;\
+     private:\
+      GTEST_DISALLOW_ASSIGN_(gmock_Impl);\
+    };\
+    template <typename F> operator ::testing::Action<F>() const {\
+      return ::testing::Action<F>(new gmock_Impl<F>(p0, p1, p2, p3, p4));\
+    }\
+    p0##_type p0;\
+    p1##_type p1;\
+    p2##_type p2;\
+    p3##_type p3;\
+    p4##_type p4;\
+   private:\
+    GTEST_DISALLOW_ASSIGN_(name##ActionP5);\
+  };\
+  template <typename p0##_type, typename p1##_type, typename p2##_type, \
+      typename p3##_type, typename p4##_type>\
+  inline name##ActionP5<p0##_type, p1##_type, p2##_type, p3##_type, \
+      p4##_type> name(p0##_type p0, p1##_type p1, p2##_type p2, p3##_type p3, \
+      p4##_type p4) {\
+    return name##ActionP5<p0##_type, p1##_type, p2##_type, p3##_type, \
+        p4##_type>(p0, p1, p2, p3, p4);\
+  }\
+  template <typename p0##_type, typename p1##_type, typename p2##_type, \
+      typename p3##_type, typename p4##_type>\
+  template <typename F>\
+  template <typename arg0_type, typename arg1_type, typename arg2_type, \
+      typename arg3_type, typename arg4_type, typename arg5_type, \
+      typename arg6_type, typename arg7_type, typename arg8_type, \
+      typename arg9_type>\
+  typename ::testing::internal::Function<F>::Result\
+      name##ActionP5<p0##_type, p1##_type, p2##_type, p3##_type, \
+          p4##_type>::gmock_Impl<F>::gmock_PerformImpl(\
+          GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_) const
+
+#define ACTION_P6(name, p0, p1, p2, p3, p4, p5)\
+  template <typename p0##_type, typename p1##_type, typename p2##_type, \
+      typename p3##_type, typename p4##_type, typename p5##_type>\
+  class name##ActionP6 {\
+   public:\
+    name##ActionP6(p0##_type gmock_p0, p1##_type gmock_p1, \
+        p2##_type gmock_p2, p3##_type gmock_p3, p4##_type gmock_p4, \
+        p5##_type gmock_p5) : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), \
+        p3(gmock_p3), p4(gmock_p4), p5(gmock_p5) {}\
+    template <typename F>\
+    class gmock_Impl : public ::testing::ActionInterface<F> {\
+     public:\
+      typedef F function_type;\
+      typedef typename ::testing::internal::Function<F>::Result return_type;\
+      typedef typename ::testing::internal::Function<F>::ArgumentTuple\
+          args_type;\
+      gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
+          p3##_type gmock_p3, p4##_type gmock_p4, \
+          p5##_type gmock_p5) : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), \
+          p3(gmock_p3), p4(gmock_p4), p5(gmock_p5) {}\
+      virtual return_type Perform(const args_type& args) {\
+        return ::testing::internal::ActionHelper<return_type, gmock_Impl>::\
+            Perform(this, args);\
+      }\
+      template <typename arg0_type, typename arg1_type, typename arg2_type, \
+          typename arg3_type, typename arg4_type, typename arg5_type, \
+          typename arg6_type, typename arg7_type, typename arg8_type, \
+          typename arg9_type>\
+      return_type gmock_PerformImpl(const args_type& args, arg0_type arg0, \
+          arg1_type arg1, arg2_type arg2, arg3_type arg3, arg4_type arg4, \
+          arg5_type arg5, arg6_type arg6, arg7_type arg7, arg8_type arg8, \
+          arg9_type arg9) const;\
+      p0##_type p0;\
+      p1##_type p1;\
+      p2##_type p2;\
+      p3##_type p3;\
+      p4##_type p4;\
+      p5##_type p5;\
+     private:\
+      GTEST_DISALLOW_ASSIGN_(gmock_Impl);\
+    };\
+    template <typename F> operator ::testing::Action<F>() const {\
+      return ::testing::Action<F>(new gmock_Impl<F>(p0, p1, p2, p3, p4, p5));\
+    }\
+    p0##_type p0;\
+    p1##_type p1;\
+    p2##_type p2;\
+    p3##_type p3;\
+    p4##_type p4;\
+    p5##_type p5;\
+   private:\
+    GTEST_DISALLOW_ASSIGN_(name##ActionP6);\
+  };\
+  template <typename p0##_type, typename p1##_type, typename p2##_type, \
+      typename p3##_type, typename p4##_type, typename p5##_type>\
+  inline name##ActionP6<p0##_type, p1##_type, p2##_type, p3##_type, \
+      p4##_type, p5##_type> name(p0##_type p0, p1##_type p1, p2##_type p2, \
+      p3##_type p3, p4##_type p4, p5##_type p5) {\
+    return name##ActionP6<p0##_type, p1##_type, p2##_type, p3##_type, \
+        p4##_type, p5##_type>(p0, p1, p2, p3, p4, p5);\
+  }\
+  template <typename p0##_type, typename p1##_type, typename p2##_type, \
+      typename p3##_type, typename p4##_type, typename p5##_type>\
+  template <typename F>\
+  template <typename arg0_type, typename arg1_type, typename arg2_type, \
+      typename arg3_type, typename arg4_type, typename arg5_type, \
+      typename arg6_type, typename arg7_type, typename arg8_type, \
+      typename arg9_type>\
+  typename ::testing::internal::Function<F>::Result\
+      name##ActionP6<p0##_type, p1##_type, p2##_type, p3##_type, p4##_type, \
+          p5##_type>::gmock_Impl<F>::gmock_PerformImpl(\
+          GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_) const
+
+#define ACTION_P7(name, p0, p1, p2, p3, p4, p5, p6)\
+  template <typename p0##_type, typename p1##_type, typename p2##_type, \
+      typename p3##_type, typename p4##_type, typename p5##_type, \
+      typename p6##_type>\
+  class name##ActionP7 {\
+   public:\
+    name##ActionP7(p0##_type gmock_p0, p1##_type gmock_p1, \
+        p2##_type gmock_p2, p3##_type gmock_p3, p4##_type gmock_p4, \
+        p5##_type gmock_p5, p6##_type gmock_p6) : p0(gmock_p0), p1(gmock_p1), \
+        p2(gmock_p2), p3(gmock_p3), p4(gmock_p4), p5(gmock_p5), \
+        p6(gmock_p6) {}\
+    template <typename F>\
+    class gmock_Impl : public ::testing::ActionInterface<F> {\
+     public:\
+      typedef F function_type;\
+      typedef typename ::testing::internal::Function<F>::Result return_type;\
+      typedef typename ::testing::internal::Function<F>::ArgumentTuple\
+          args_type;\
+      gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
+          p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \
+          p6##_type gmock_p6) : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), \
+          p3(gmock_p3), p4(gmock_p4), p5(gmock_p5), p6(gmock_p6) {}\
+      virtual return_type Perform(const args_type& args) {\
+        return ::testing::internal::ActionHelper<return_type, gmock_Impl>::\
+            Perform(this, args);\
+      }\
+      template <typename arg0_type, typename arg1_type, typename arg2_type, \
+          typename arg3_type, typename arg4_type, typename arg5_type, \
+          typename arg6_type, typename arg7_type, typename arg8_type, \
+          typename arg9_type>\
+      return_type gmock_PerformImpl(const args_type& args, arg0_type arg0, \
+          arg1_type arg1, arg2_type arg2, arg3_type arg3, arg4_type arg4, \
+          arg5_type arg5, arg6_type arg6, arg7_type arg7, arg8_type arg8, \
+          arg9_type arg9) const;\
+      p0##_type p0;\
+      p1##_type p1;\
+      p2##_type p2;\
+      p3##_type p3;\
+      p4##_type p4;\
+      p5##_type p5;\
+      p6##_type p6;\
+     private:\
+      GTEST_DISALLOW_ASSIGN_(gmock_Impl);\
+    };\
+    template <typename F> operator ::testing::Action<F>() const {\
+      return ::testing::Action<F>(new gmock_Impl<F>(p0, p1, p2, p3, p4, p5, \
+          p6));\
+    }\
+    p0##_type p0;\
+    p1##_type p1;\
+    p2##_type p2;\
+    p3##_type p3;\
+    p4##_type p4;\
+    p5##_type p5;\
+    p6##_type p6;\
+   private:\
+    GTEST_DISALLOW_ASSIGN_(name##ActionP7);\
+  };\
+  template <typename p0##_type, typename p1##_type, typename p2##_type, \
+      typename p3##_type, typename p4##_type, typename p5##_type, \
+      typename p6##_type>\
+  inline name##ActionP7<p0##_type, p1##_type, p2##_type, p3##_type, \
+      p4##_type, p5##_type, p6##_type> name(p0##_type p0, p1##_type p1, \
+      p2##_type p2, p3##_type p3, p4##_type p4, p5##_type p5, \
+      p6##_type p6) {\
+    return name##ActionP7<p0##_type, p1##_type, p2##_type, p3##_type, \
+        p4##_type, p5##_type, p6##_type>(p0, p1, p2, p3, p4, p5, p6);\
+  }\
+  template <typename p0##_type, typename p1##_type, typename p2##_type, \
+      typename p3##_type, typename p4##_type, typename p5##_type, \
+      typename p6##_type>\
+  template <typename F>\
+  template <typename arg0_type, typename arg1_type, typename arg2_type, \
+      typename arg3_type, typename arg4_type, typename arg5_type, \
+      typename arg6_type, typename arg7_type, typename arg8_type, \
+      typename arg9_type>\
+  typename ::testing::internal::Function<F>::Result\
+      name##ActionP7<p0##_type, p1##_type, p2##_type, p3##_type, p4##_type, \
+          p5##_type, p6##_type>::gmock_Impl<F>::gmock_PerformImpl(\
+          GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_) const
+
+#define ACTION_P8(name, p0, p1, p2, p3, p4, p5, p6, p7)\
+  template <typename p0##_type, typename p1##_type, typename p2##_type, \
+      typename p3##_type, typename p4##_type, typename p5##_type, \
+      typename p6##_type, typename p7##_type>\
+  class name##ActionP8 {\
+   public:\
+    name##ActionP8(p0##_type gmock_p0, p1##_type gmock_p1, \
+        p2##_type gmock_p2, p3##_type gmock_p3, p4##_type gmock_p4, \
+        p5##_type gmock_p5, p6##_type gmock_p6, \
+        p7##_type gmock_p7) : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), \
+        p3(gmock_p3), p4(gmock_p4), p5(gmock_p5), p6(gmock_p6), \
+        p7(gmock_p7) {}\
+    template <typename F>\
+    class gmock_Impl : public ::testing::ActionInterface<F> {\
+     public:\
+      typedef F function_type;\
+      typedef typename ::testing::internal::Function<F>::Result return_type;\
+      typedef typename ::testing::internal::Function<F>::ArgumentTuple\
+          args_type;\
+      gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
+          p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \
+          p6##_type gmock_p6, p7##_type gmock_p7) : p0(gmock_p0), \
+          p1(gmock_p1), p2(gmock_p2), p3(gmock_p3), p4(gmock_p4), \
+          p5(gmock_p5), p6(gmock_p6), p7(gmock_p7) {}\
+      virtual return_type Perform(const args_type& args) {\
+        return ::testing::internal::ActionHelper<return_type, gmock_Impl>::\
+            Perform(this, args);\
+      }\
+      template <typename arg0_type, typename arg1_type, typename arg2_type, \
+          typename arg3_type, typename arg4_type, typename arg5_type, \
+          typename arg6_type, typename arg7_type, typename arg8_type, \
+          typename arg9_type>\
+      return_type gmock_PerformImpl(const args_type& args, arg0_type arg0, \
+          arg1_type arg1, arg2_type arg2, arg3_type arg3, arg4_type arg4, \
+          arg5_type arg5, arg6_type arg6, arg7_type arg7, arg8_type arg8, \
+          arg9_type arg9) const;\
+      p0##_type p0;\
+      p1##_type p1;\
+      p2##_type p2;\
+      p3##_type p3;\
+      p4##_type p4;\
+      p5##_type p5;\
+      p6##_type p6;\
+      p7##_type p7;\
+     private:\
+      GTEST_DISALLOW_ASSIGN_(gmock_Impl);\
+    };\
+    template <typename F> operator ::testing::Action<F>() const {\
+      return ::testing::Action<F>(new gmock_Impl<F>(p0, p1, p2, p3, p4, p5, \
+          p6, p7));\
+    }\
+    p0##_type p0;\
+    p1##_type p1;\
+    p2##_type p2;\
+    p3##_type p3;\
+    p4##_type p4;\
+    p5##_type p5;\
+    p6##_type p6;\
+    p7##_type p7;\
+   private:\
+    GTEST_DISALLOW_ASSIGN_(name##ActionP8);\
+  };\
+  template <typename p0##_type, typename p1##_type, typename p2##_type, \
+      typename p3##_type, typename p4##_type, typename p5##_type, \
+      typename p6##_type, typename p7##_type>\
+  inline name##ActionP8<p0##_type, p1##_type, p2##_type, p3##_type, \
+      p4##_type, p5##_type, p6##_type, p7##_type> name(p0##_type p0, \
+      p1##_type p1, p2##_type p2, p3##_type p3, p4##_type p4, p5##_type p5, \
+      p6##_type p6, p7##_type p7) {\
+    return name##ActionP8<p0##_type, p1##_type, p2##_type, p3##_type, \
+        p4##_type, p5##_type, p6##_type, p7##_type>(p0, p1, p2, p3, p4, p5, \
+        p6, p7);\
+  }\
+  template <typename p0##_type, typename p1##_type, typename p2##_type, \
+      typename p3##_type, typename p4##_type, typename p5##_type, \
+      typename p6##_type, typename p7##_type>\
+  template <typename F>\
+  template <typename arg0_type, typename arg1_type, typename arg2_type, \
+      typename arg3_type, typename arg4_type, typename arg5_type, \
+      typename arg6_type, typename arg7_type, typename arg8_type, \
+      typename arg9_type>\
+  typename ::testing::internal::Function<F>::Result\
+      name##ActionP8<p0##_type, p1##_type, p2##_type, p3##_type, p4##_type, \
+          p5##_type, p6##_type, \
+          p7##_type>::gmock_Impl<F>::gmock_PerformImpl(\
+          GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_) const
+
+#define ACTION_P9(name, p0, p1, p2, p3, p4, p5, p6, p7, p8)\
+  template <typename p0##_type, typename p1##_type, typename p2##_type, \
+      typename p3##_type, typename p4##_type, typename p5##_type, \
+      typename p6##_type, typename p7##_type, typename p8##_type>\
+  class name##ActionP9 {\
+   public:\
+    name##ActionP9(p0##_type gmock_p0, p1##_type gmock_p1, \
+        p2##_type gmock_p2, p3##_type gmock_p3, p4##_type gmock_p4, \
+        p5##_type gmock_p5, p6##_type gmock_p6, p7##_type gmock_p7, \
+        p8##_type gmock_p8) : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), \
+        p3(gmock_p3), p4(gmock_p4), p5(gmock_p5), p6(gmock_p6), p7(gmock_p7), \
+        p8(gmock_p8) {}\
+    template <typename F>\
+    class gmock_Impl : public ::testing::ActionInterface<F> {\
+     public:\
+      typedef F function_type;\
+      typedef typename ::testing::internal::Function<F>::Result return_type;\
+      typedef typename ::testing::internal::Function<F>::ArgumentTuple\
+          args_type;\
+      gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
+          p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \
+          p6##_type gmock_p6, p7##_type gmock_p7, \
+          p8##_type gmock_p8) : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), \
+          p3(gmock_p3), p4(gmock_p4), p5(gmock_p5), p6(gmock_p6), \
+          p7(gmock_p7), p8(gmock_p8) {}\
+      virtual return_type Perform(const args_type& args) {\
+        return ::testing::internal::ActionHelper<return_type, gmock_Impl>::\
+            Perform(this, args);\
+      }\
+      template <typename arg0_type, typename arg1_type, typename arg2_type, \
+          typename arg3_type, typename arg4_type, typename arg5_type, \
+          typename arg6_type, typename arg7_type, typename arg8_type, \
+          typename arg9_type>\
+      return_type gmock_PerformImpl(const args_type& args, arg0_type arg0, \
+          arg1_type arg1, arg2_type arg2, arg3_type arg3, arg4_type arg4, \
+          arg5_type arg5, arg6_type arg6, arg7_type arg7, arg8_type arg8, \
+          arg9_type arg9) const;\
+      p0##_type p0;\
+      p1##_type p1;\
+      p2##_type p2;\
+      p3##_type p3;\
+      p4##_type p4;\
+      p5##_type p5;\
+      p6##_type p6;\
+      p7##_type p7;\
+      p8##_type p8;\
+     private:\
+      GTEST_DISALLOW_ASSIGN_(gmock_Impl);\
+    };\
+    template <typename F> operator ::testing::Action<F>() const {\
+      return ::testing::Action<F>(new gmock_Impl<F>(p0, p1, p2, p3, p4, p5, \
+          p6, p7, p8));\
+    }\
+    p0##_type p0;\
+    p1##_type p1;\
+    p2##_type p2;\
+    p3##_type p3;\
+    p4##_type p4;\
+    p5##_type p5;\
+    p6##_type p6;\
+    p7##_type p7;\
+    p8##_type p8;\
+   private:\
+    GTEST_DISALLOW_ASSIGN_(name##ActionP9);\
+  };\
+  template <typename p0##_type, typename p1##_type, typename p2##_type, \
+      typename p3##_type, typename p4##_type, typename p5##_type, \
+      typename p6##_type, typename p7##_type, typename p8##_type>\
+  inline name##ActionP9<p0##_type, p1##_type, p2##_type, p3##_type, \
+      p4##_type, p5##_type, p6##_type, p7##_type, \
+      p8##_type> name(p0##_type p0, p1##_type p1, p2##_type p2, p3##_type p3, \
+      p4##_type p4, p5##_type p5, p6##_type p6, p7##_type p7, \
+      p8##_type p8) {\
+    return name##ActionP9<p0##_type, p1##_type, p2##_type, p3##_type, \
+        p4##_type, p5##_type, p6##_type, p7##_type, p8##_type>(p0, p1, p2, \
+        p3, p4, p5, p6, p7, p8);\
+  }\
+  template <typename p0##_type, typename p1##_type, typename p2##_type, \
+      typename p3##_type, typename p4##_type, typename p5##_type, \
+      typename p6##_type, typename p7##_type, typename p8##_type>\
+  template <typename F>\
+  template <typename arg0_type, typename arg1_type, typename arg2_type, \
+      typename arg3_type, typename arg4_type, typename arg5_type, \
+      typename arg6_type, typename arg7_type, typename arg8_type, \
+      typename arg9_type>\
+  typename ::testing::internal::Function<F>::Result\
+      name##ActionP9<p0##_type, p1##_type, p2##_type, p3##_type, p4##_type, \
+          p5##_type, p6##_type, p7##_type, \
+          p8##_type>::gmock_Impl<F>::gmock_PerformImpl(\
+          GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_) const
+
+#define ACTION_P10(name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9)\
+  template <typename p0##_type, typename p1##_type, typename p2##_type, \
+      typename p3##_type, typename p4##_type, typename p5##_type, \
+      typename p6##_type, typename p7##_type, typename p8##_type, \
+      typename p9##_type>\
+  class name##ActionP10 {\
+   public:\
+    name##ActionP10(p0##_type gmock_p0, p1##_type gmock_p1, \
+        p2##_type gmock_p2, p3##_type gmock_p3, p4##_type gmock_p4, \
+        p5##_type gmock_p5, p6##_type gmock_p6, p7##_type gmock_p7, \
+        p8##_type gmock_p8, p9##_type gmock_p9) : p0(gmock_p0), p1(gmock_p1), \
+        p2(gmock_p2), p3(gmock_p3), p4(gmock_p4), p5(gmock_p5), p6(gmock_p6), \
+        p7(gmock_p7), p8(gmock_p8), p9(gmock_p9) {}\
+    template <typename F>\
+    class gmock_Impl : public ::testing::ActionInterface<F> {\
+     public:\
+      typedef F function_type;\
+      typedef typename ::testing::internal::Function<F>::Result return_type;\
+      typedef typename ::testing::internal::Function<F>::ArgumentTuple\
+          args_type;\
+      gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
+          p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \
+          p6##_type gmock_p6, p7##_type gmock_p7, p8##_type gmock_p8, \
+          p9##_type gmock_p9) : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), \
+          p3(gmock_p3), p4(gmock_p4), p5(gmock_p5), p6(gmock_p6), \
+          p7(gmock_p7), p8(gmock_p8), p9(gmock_p9) {}\
+      virtual return_type Perform(const args_type& args) {\
+        return ::testing::internal::ActionHelper<return_type, gmock_Impl>::\
+            Perform(this, args);\
+      }\
+      template <typename arg0_type, typename arg1_type, typename arg2_type, \
+          typename arg3_type, typename arg4_type, typename arg5_type, \
+          typename arg6_type, typename arg7_type, typename arg8_type, \
+          typename arg9_type>\
+      return_type gmock_PerformImpl(const args_type& args, arg0_type arg0, \
+          arg1_type arg1, arg2_type arg2, arg3_type arg3, arg4_type arg4, \
+          arg5_type arg5, arg6_type arg6, arg7_type arg7, arg8_type arg8, \
+          arg9_type arg9) const;\
+      p0##_type p0;\
+      p1##_type p1;\
+      p2##_type p2;\
+      p3##_type p3;\
+      p4##_type p4;\
+      p5##_type p5;\
+      p6##_type p6;\
+      p7##_type p7;\
+      p8##_type p8;\
+      p9##_type p9;\
+     private:\
+      GTEST_DISALLOW_ASSIGN_(gmock_Impl);\
+    };\
+    template <typename F> operator ::testing::Action<F>() const {\
+      return ::testing::Action<F>(new gmock_Impl<F>(p0, p1, p2, p3, p4, p5, \
+          p6, p7, p8, p9));\
+    }\
+    p0##_type p0;\
+    p1##_type p1;\
+    p2##_type p2;\
+    p3##_type p3;\
+    p4##_type p4;\
+    p5##_type p5;\
+    p6##_type p6;\
+    p7##_type p7;\
+    p8##_type p8;\
+    p9##_type p9;\
+   private:\
+    GTEST_DISALLOW_ASSIGN_(name##ActionP10);\
+  };\
+  template <typename p0##_type, typename p1##_type, typename p2##_type, \
+      typename p3##_type, typename p4##_type, typename p5##_type, \
+      typename p6##_type, typename p7##_type, typename p8##_type, \
+      typename p9##_type>\
+  inline name##ActionP10<p0##_type, p1##_type, p2##_type, p3##_type, \
+      p4##_type, p5##_type, p6##_type, p7##_type, p8##_type, \
+      p9##_type> name(p0##_type p0, p1##_type p1, p2##_type p2, p3##_type p3, \
+      p4##_type p4, p5##_type p5, p6##_type p6, p7##_type p7, p8##_type p8, \
+      p9##_type p9) {\
+    return name##ActionP10<p0##_type, p1##_type, p2##_type, p3##_type, \
+        p4##_type, p5##_type, p6##_type, p7##_type, p8##_type, p9##_type>(p0, \
+        p1, p2, p3, p4, p5, p6, p7, p8, p9);\
+  }\
+  template <typename p0##_type, typename p1##_type, typename p2##_type, \
+      typename p3##_type, typename p4##_type, typename p5##_type, \
+      typename p6##_type, typename p7##_type, typename p8##_type, \
+      typename p9##_type>\
+  template <typename F>\
+  template <typename arg0_type, typename arg1_type, typename arg2_type, \
+      typename arg3_type, typename arg4_type, typename arg5_type, \
+      typename arg6_type, typename arg7_type, typename arg8_type, \
+      typename arg9_type>\
+  typename ::testing::internal::Function<F>::Result\
+      name##ActionP10<p0##_type, p1##_type, p2##_type, p3##_type, p4##_type, \
+          p5##_type, p6##_type, p7##_type, p8##_type, \
+          p9##_type>::gmock_Impl<F>::gmock_PerformImpl(\
+          GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_) const
+
+namespace testing {
+
+// The ACTION*() macros trigger warning C4100 (unreferenced formal
+// parameter) in MSVC with -W4.  Unfortunately they cannot be fixed in
+// the macro definition, as the warnings are generated when the macro
+// is expanded and macro expansion cannot contain #pragma.  Therefore
+// we suppress them here.
+#ifdef _MSC_VER
+# pragma warning(push)
+# pragma warning(disable:4100)
+#endif
+
+// Various overloads for InvokeArgument<N>().
+//
+// The InvokeArgument<N>(a1, a2, ..., a_k) action invokes the N-th
+// (0-based) argument, which must be a k-ary callable, of the mock
+// function, with arguments a1, a2, ..., a_k.
+//
+// Notes:
+//
+//   1. The arguments are passed by value by default.  If you need to
+//   pass an argument by reference, wrap it inside ByRef().  For
+//   example,
+//
+//     InvokeArgument<1>(5, string("Hello"), ByRef(foo))
+//
+//   passes 5 and string("Hello") by value, and passes foo by
+//   reference.
+//
+//   2. If the callable takes an argument by reference but ByRef() is
+//   not used, it will receive the reference to a copy of the value,
+//   instead of the original value.  For example, when the 0-th
+//   argument of the mock function takes a const string&, the action
+//
+//     InvokeArgument<0>(string("Hello"))
+//
+//   makes a copy of the temporary string("Hello") object and passes a
+//   reference of the copy, instead of the original temporary object,
+//   to the callable.  This makes it easy for a user to define an
+//   InvokeArgument action from temporary values and have it performed
+//   later.
+
+ACTION_TEMPLATE(InvokeArgument,
+                HAS_1_TEMPLATE_PARAMS(int, k),
+                AND_0_VALUE_PARAMS()) {
+  return internal::CallableHelper<return_type>::Call(
+      ::std::tr1::get<k>(args));
+}
+
+ACTION_TEMPLATE(InvokeArgument,
+                HAS_1_TEMPLATE_PARAMS(int, k),
+                AND_1_VALUE_PARAMS(p0)) {
+  return internal::CallableHelper<return_type>::Call(
+      ::std::tr1::get<k>(args), p0);
+}
+
+ACTION_TEMPLATE(InvokeArgument,
+                HAS_1_TEMPLATE_PARAMS(int, k),
+                AND_2_VALUE_PARAMS(p0, p1)) {
+  return internal::CallableHelper<return_type>::Call(
+      ::std::tr1::get<k>(args), p0, p1);
+}
+
+ACTION_TEMPLATE(InvokeArgument,
+                HAS_1_TEMPLATE_PARAMS(int, k),
+                AND_3_VALUE_PARAMS(p0, p1, p2)) {
+  return internal::CallableHelper<return_type>::Call(
+      ::std::tr1::get<k>(args), p0, p1, p2);
+}
+
+ACTION_TEMPLATE(InvokeArgument,
+                HAS_1_TEMPLATE_PARAMS(int, k),
+                AND_4_VALUE_PARAMS(p0, p1, p2, p3)) {
+  return internal::CallableHelper<return_type>::Call(
+      ::std::tr1::get<k>(args), p0, p1, p2, p3);
+}
+
+ACTION_TEMPLATE(InvokeArgument,
+                HAS_1_TEMPLATE_PARAMS(int, k),
+                AND_5_VALUE_PARAMS(p0, p1, p2, p3, p4)) {
+  return internal::CallableHelper<return_type>::Call(
+      ::std::tr1::get<k>(args), p0, p1, p2, p3, p4);
+}
+
+ACTION_TEMPLATE(InvokeArgument,
+                HAS_1_TEMPLATE_PARAMS(int, k),
+                AND_6_VALUE_PARAMS(p0, p1, p2, p3, p4, p5)) {
+  return internal::CallableHelper<return_type>::Call(
+      ::std::tr1::get<k>(args), p0, p1, p2, p3, p4, p5);
+}
+
+ACTION_TEMPLATE(InvokeArgument,
+                HAS_1_TEMPLATE_PARAMS(int, k),
+                AND_7_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6)) {
+  return internal::CallableHelper<return_type>::Call(
+      ::std::tr1::get<k>(args), p0, p1, p2, p3, p4, p5, p6);
+}
+
+ACTION_TEMPLATE(InvokeArgument,
+                HAS_1_TEMPLATE_PARAMS(int, k),
+                AND_8_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, p7)) {
+  return internal::CallableHelper<return_type>::Call(
+      ::std::tr1::get<k>(args), p0, p1, p2, p3, p4, p5, p6, p7);
+}
+
+ACTION_TEMPLATE(InvokeArgument,
+                HAS_1_TEMPLATE_PARAMS(int, k),
+                AND_9_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, p7, p8)) {
+  return internal::CallableHelper<return_type>::Call(
+      ::std::tr1::get<k>(args), p0, p1, p2, p3, p4, p5, p6, p7, p8);
+}
+
+ACTION_TEMPLATE(InvokeArgument,
+                HAS_1_TEMPLATE_PARAMS(int, k),
+                AND_10_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9)) {
+  return internal::CallableHelper<return_type>::Call(
+      ::std::tr1::get<k>(args), p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
+}
+
+// Various overloads for ReturnNew<T>().
+//
+// The ReturnNew<T>(a1, a2, ..., a_k) action returns a pointer to a new
+// instance of type T, constructed on the heap with constructor arguments
+// a1, a2, ..., and a_k. The caller assumes ownership of the returned value.
+ACTION_TEMPLATE(ReturnNew,
+                HAS_1_TEMPLATE_PARAMS(typename, T),
+                AND_0_VALUE_PARAMS()) {
+  return new T();
+}
+
+ACTION_TEMPLATE(ReturnNew,
+                HAS_1_TEMPLATE_PARAMS(typename, T),
+                AND_1_VALUE_PARAMS(p0)) {
+  return new T(p0);
+}
+
+ACTION_TEMPLATE(ReturnNew,
+                HAS_1_TEMPLATE_PARAMS(typename, T),
+                AND_2_VALUE_PARAMS(p0, p1)) {
+  return new T(p0, p1);
+}
+
+ACTION_TEMPLATE(ReturnNew,
+                HAS_1_TEMPLATE_PARAMS(typename, T),
+                AND_3_VALUE_PARAMS(p0, p1, p2)) {
+  return new T(p0, p1, p2);
+}
+
+ACTION_TEMPLATE(ReturnNew,
+                HAS_1_TEMPLATE_PARAMS(typename, T),
+                AND_4_VALUE_PARAMS(p0, p1, p2, p3)) {
+  return new T(p0, p1, p2, p3);
+}
+
+ACTION_TEMPLATE(ReturnNew,
+                HAS_1_TEMPLATE_PARAMS(typename, T),
+                AND_5_VALUE_PARAMS(p0, p1, p2, p3, p4)) {
+  return new T(p0, p1, p2, p3, p4);
+}
+
+ACTION_TEMPLATE(ReturnNew,
+                HAS_1_TEMPLATE_PARAMS(typename, T),
+                AND_6_VALUE_PARAMS(p0, p1, p2, p3, p4, p5)) {
+  return new T(p0, p1, p2, p3, p4, p5);
+}
+
+ACTION_TEMPLATE(ReturnNew,
+                HAS_1_TEMPLATE_PARAMS(typename, T),
+                AND_7_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6)) {
+  return new T(p0, p1, p2, p3, p4, p5, p6);
+}
+
+ACTION_TEMPLATE(ReturnNew,
+                HAS_1_TEMPLATE_PARAMS(typename, T),
+                AND_8_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, p7)) {
+  return new T(p0, p1, p2, p3, p4, p5, p6, p7);
+}
+
+ACTION_TEMPLATE(ReturnNew,
+                HAS_1_TEMPLATE_PARAMS(typename, T),
+                AND_9_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, p7, p8)) {
+  return new T(p0, p1, p2, p3, p4, p5, p6, p7, p8);
+}
+
+ACTION_TEMPLATE(ReturnNew,
+                HAS_1_TEMPLATE_PARAMS(typename, T),
+                AND_10_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9)) {
+  return new T(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
+}
+
+#ifdef _MSC_VER
+# pragma warning(pop)
+#endif
+
+}  // namespace testing
+
+#endif  // GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_ACTIONS_H_
diff --git a/google-breakpad/src/testing/include/gmock/gmock-generated-actions.h.pump b/google-breakpad/src/testing/include/gmock/gmock-generated-actions.h.pump
new file mode 100644
index 0000000..8e2b573
--- /dev/null
+++ b/google-breakpad/src/testing/include/gmock/gmock-generated-actions.h.pump
@@ -0,0 +1,821 @@
+$$ -*- mode: c++; -*-
+$$ This is a Pump source file.  Please use Pump to convert it to
+$$ gmock-generated-actions.h.
+$$
+$var n = 10  $$ The maximum arity we support.
+$$}} This meta comment fixes auto-indentation in editors.
+// Copyright 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Google Mock - a framework for writing C++ mock classes.
+//
+// This file implements some commonly used variadic actions.
+
+#ifndef GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_ACTIONS_H_
+#define GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_ACTIONS_H_
+
+#include "gmock/gmock-actions.h"
+#include "gmock/internal/gmock-port.h"
+
+namespace testing {
+namespace internal {
+
+// InvokeHelper<F> knows how to unpack an N-tuple and invoke an N-ary
+// function or method with the unpacked values, where F is a function
+// type that takes N arguments.
+template <typename Result, typename ArgumentTuple>
+class InvokeHelper;
+
+
+$range i 0..n
+$for i [[
+$range j 1..i
+$var types = [[$for j [[, typename A$j]]]]
+$var as = [[$for j, [[A$j]]]]
+$var args = [[$if i==0 [[]] $else [[ args]]]]
+$var import = [[$if i==0 [[]] $else [[
+    using ::std::tr1::get;
+
+]]]]
+$var gets = [[$for j, [[get<$(j - 1)>(args)]]]]
+template <typename R$types>
+class InvokeHelper<R, ::std::tr1::tuple<$as> > {
+ public:
+  template <typename Function>
+  static R Invoke(Function function, const ::std::tr1::tuple<$as>&$args) {
+$import    return function($gets);
+  }
+
+  template <class Class, typename MethodPtr>
+  static R InvokeMethod(Class* obj_ptr,
+                        MethodPtr method_ptr,
+                        const ::std::tr1::tuple<$as>&$args) {
+$import    return (obj_ptr->*method_ptr)($gets);
+  }
+};
+
+
+]]
+// CallableHelper has static methods for invoking "callables",
+// i.e. function pointers and functors.  It uses overloading to
+// provide a uniform interface for invoking different kinds of
+// callables.  In particular, you can use:
+//
+//   CallableHelper<R>::Call(callable, a1, a2, ..., an)
+//
+// to invoke an n-ary callable, where R is its return type.  If an
+// argument, say a2, needs to be passed by reference, you should write
+// ByRef(a2) instead of a2 in the above expression.
+template <typename R>
+class CallableHelper {
+ public:
+  // Calls a nullary callable.
+  template <typename Function>
+  static R Call(Function function) { return function(); }
+
+  // Calls a unary callable.
+
+  // We deliberately pass a1 by value instead of const reference here
+  // in case it is a C-string literal.  If we had declared the
+  // parameter as 'const A1& a1' and write Call(function, "Hi"), the
+  // compiler would've thought A1 is 'char[3]', which causes trouble
+  // when you need to copy a value of type A1.  By declaring the
+  // parameter as 'A1 a1', the compiler will correctly infer that A1
+  // is 'const char*' when it sees Call(function, "Hi").
+  //
+  // Since this function is defined inline, the compiler can get rid
+  // of the copying of the arguments.  Therefore the performance won't
+  // be hurt.
+  template <typename Function, typename A1>
+  static R Call(Function function, A1 a1) { return function(a1); }
+
+$range i 2..n
+$for i
+[[
+$var arity = [[$if i==2 [[binary]] $elif i==3 [[ternary]] $else [[$i-ary]]]]
+
+  // Calls a $arity callable.
+
+$range j 1..i
+$var typename_As = [[$for j, [[typename A$j]]]]
+$var Aas = [[$for j, [[A$j a$j]]]]
+$var as = [[$for j, [[a$j]]]]
+$var typename_Ts = [[$for j, [[typename T$j]]]]
+$var Ts = [[$for j, [[T$j]]]]
+  template <typename Function, $typename_As>
+  static R Call(Function function, $Aas) {
+    return function($as);
+  }
+
+]]
+};  // class CallableHelper
+
+// An INTERNAL macro for extracting the type of a tuple field.  It's
+// subject to change without notice - DO NOT USE IN USER CODE!
+#define GMOCK_FIELD_(Tuple, N) \
+    typename ::std::tr1::tuple_element<N, Tuple>::type
+
+$range i 1..n
+
+// SelectArgs<Result, ArgumentTuple, k1, k2, ..., k_n>::type is the
+// type of an n-ary function whose i-th (1-based) argument type is the
+// k{i}-th (0-based) field of ArgumentTuple, which must be a tuple
+// type, and whose return type is Result.  For example,
+//   SelectArgs<int, ::std::tr1::tuple<bool, char, double, long>, 0, 3>::type
+// is int(bool, long).
+//
+// SelectArgs<Result, ArgumentTuple, k1, k2, ..., k_n>::Select(args)
+// returns the selected fields (k1, k2, ..., k_n) of args as a tuple.
+// For example,
+//   SelectArgs<int, ::std::tr1::tuple<bool, char, double>, 2, 0>::Select(
+//       ::std::tr1::make_tuple(true, 'a', 2.5))
+// returns ::std::tr1::tuple (2.5, true).
+//
+// The numbers in list k1, k2, ..., k_n must be >= 0, where n can be
+// in the range [0, $n].  Duplicates are allowed and they don't have
+// to be in an ascending or descending order.
+
+template <typename Result, typename ArgumentTuple, $for i, [[int k$i]]>
+class SelectArgs {
+ public:
+  typedef Result type($for i, [[GMOCK_FIELD_(ArgumentTuple, k$i)]]);
+  typedef typename Function<type>::ArgumentTuple SelectedArgs;
+  static SelectedArgs Select(const ArgumentTuple& args) {
+    using ::std::tr1::get;
+    return SelectedArgs($for i, [[get<k$i>(args)]]);
+  }
+};
+
+
+$for i [[
+$range j 1..n
+$range j1 1..i-1
+template <typename Result, typename ArgumentTuple$for j1[[, int k$j1]]>
+class SelectArgs<Result, ArgumentTuple,
+                 $for j, [[$if j <= i-1 [[k$j]] $else [[-1]]]]> {
+ public:
+  typedef Result type($for j1, [[GMOCK_FIELD_(ArgumentTuple, k$j1)]]);
+  typedef typename Function<type>::ArgumentTuple SelectedArgs;
+  static SelectedArgs Select(const ArgumentTuple& [[]]
+$if i == 1 [[/* args */]] $else [[args]]) {
+    using ::std::tr1::get;
+    return SelectedArgs($for j1, [[get<k$j1>(args)]]);
+  }
+};
+
+
+]]
+#undef GMOCK_FIELD_
+
+$var ks = [[$for i, [[k$i]]]]
+
+// Implements the WithArgs action.
+template <typename InnerAction, $for i, [[int k$i = -1]]>
+class WithArgsAction {
+ public:
+  explicit WithArgsAction(const InnerAction& action) : action_(action) {}
+
+  template <typename F>
+  operator Action<F>() const { return MakeAction(new Impl<F>(action_)); }
+
+ private:
+  template <typename F>
+  class Impl : public ActionInterface<F> {
+   public:
+    typedef typename Function<F>::Result Result;
+    typedef typename Function<F>::ArgumentTuple ArgumentTuple;
+
+    explicit Impl(const InnerAction& action) : action_(action) {}
+
+    virtual Result Perform(const ArgumentTuple& args) {
+      return action_.Perform(SelectArgs<Result, ArgumentTuple, $ks>::Select(args));
+    }
+
+   private:
+    typedef typename SelectArgs<Result, ArgumentTuple,
+        $ks>::type InnerFunctionType;
+
+    Action<InnerFunctionType> action_;
+  };
+
+  const InnerAction action_;
+
+  GTEST_DISALLOW_ASSIGN_(WithArgsAction);
+};
+
+// A macro from the ACTION* family (defined later in this file)
+// defines an action that can be used in a mock function.  Typically,
+// these actions only care about a subset of the arguments of the mock
+// function.  For example, if such an action only uses the second
+// argument, it can be used in any mock function that takes >= 2
+// arguments where the type of the second argument is compatible.
+//
+// Therefore, the action implementation must be prepared to take more
+// arguments than it needs.  The ExcessiveArg type is used to
+// represent those excessive arguments.  In order to keep the compiler
+// error messages tractable, we define it in the testing namespace
+// instead of testing::internal.  However, this is an INTERNAL TYPE
+// and subject to change without notice, so a user MUST NOT USE THIS
+// TYPE DIRECTLY.
+struct ExcessiveArg {};
+
+// A helper class needed for implementing the ACTION* macros.
+template <typename Result, class Impl>
+class ActionHelper {
+ public:
+$range i 0..n
+$for i
+
+[[
+$var template = [[$if i==0 [[]] $else [[
+$range j 0..i-1
+  template <$for j, [[typename A$j]]>
+]]]]
+$range j 0..i-1
+$var As = [[$for j, [[A$j]]]]
+$var as = [[$for j, [[get<$j>(args)]]]]
+$range k 1..n-i
+$var eas = [[$for k, [[ExcessiveArg()]]]]
+$var arg_list = [[$if (i==0) | (i==n) [[$as$eas]] $else [[$as, $eas]]]]
+$template
+  static Result Perform(Impl* impl, const ::std::tr1::tuple<$As>& args) {
+    using ::std::tr1::get;
+    return impl->template gmock_PerformImpl<$As>(args, $arg_list);
+  }
+
+]]
+};
+
+}  // namespace internal
+
+// Various overloads for Invoke().
+
+// WithArgs<N1, N2, ..., Nk>(an_action) creates an action that passes
+// the selected arguments of the mock function to an_action and
+// performs it.  It serves as an adaptor between actions with
+// different argument lists.  C++ doesn't support default arguments for
+// function templates, so we have to overload it.
+
+$range i 1..n
+$for i [[
+$range j 1..i
+template <$for j [[int k$j, ]]typename InnerAction>
+inline internal::WithArgsAction<InnerAction$for j [[, k$j]]>
+WithArgs(const InnerAction& action) {
+  return internal::WithArgsAction<InnerAction$for j [[, k$j]]>(action);
+}
+
+
+]]
+// Creates an action that does actions a1, a2, ..., sequentially in
+// each invocation.
+$range i 2..n
+$for i [[
+$range j 2..i
+$var types = [[$for j, [[typename Action$j]]]]
+$var Aas = [[$for j [[, Action$j a$j]]]]
+
+template <typename Action1, $types>
+$range k 1..i-1
+
+inline $for k [[internal::DoBothAction<Action$k, ]]Action$i$for k  [[>]]
+
+DoAll(Action1 a1$Aas) {
+$if i==2 [[
+
+  return internal::DoBothAction<Action1, Action2>(a1, a2);
+]] $else [[
+$range j2 2..i
+
+  return DoAll(a1, DoAll($for j2, [[a$j2]]));
+]]
+
+}
+
+]]
+
+}  // namespace testing
+
+// The ACTION* family of macros can be used in a namespace scope to
+// define custom actions easily.  The syntax:
+//
+//   ACTION(name) { statements; }
+//
+// will define an action with the given name that executes the
+// statements.  The value returned by the statements will be used as
+// the return value of the action.  Inside the statements, you can
+// refer to the K-th (0-based) argument of the mock function by
+// 'argK', and refer to its type by 'argK_type'.  For example:
+//
+//   ACTION(IncrementArg1) {
+//     arg1_type temp = arg1;
+//     return ++(*temp);
+//   }
+//
+// allows you to write
+//
+//   ...WillOnce(IncrementArg1());
+//
+// You can also refer to the entire argument tuple and its type by
+// 'args' and 'args_type', and refer to the mock function type and its
+// return type by 'function_type' and 'return_type'.
+//
+// Note that you don't need to specify the types of the mock function
+// arguments.  However rest assured that your code is still type-safe:
+// you'll get a compiler error if *arg1 doesn't support the ++
+// operator, or if the type of ++(*arg1) isn't compatible with the
+// mock function's return type, for example.
+//
+// Sometimes you'll want to parameterize the action.   For that you can use
+// another macro:
+//
+//   ACTION_P(name, param_name) { statements; }
+//
+// For example:
+//
+//   ACTION_P(Add, n) { return arg0 + n; }
+//
+// will allow you to write:
+//
+//   ...WillOnce(Add(5));
+//
+// Note that you don't need to provide the type of the parameter
+// either.  If you need to reference the type of a parameter named
+// 'foo', you can write 'foo_type'.  For example, in the body of
+// ACTION_P(Add, n) above, you can write 'n_type' to refer to the type
+// of 'n'.
+//
+// We also provide ACTION_P2, ACTION_P3, ..., up to ACTION_P$n to support
+// multi-parameter actions.
+//
+// For the purpose of typing, you can view
+//
+//   ACTION_Pk(Foo, p1, ..., pk) { ... }
+//
+// as shorthand for
+//
+//   template <typename p1_type, ..., typename pk_type>
+//   FooActionPk<p1_type, ..., pk_type> Foo(p1_type p1, ..., pk_type pk) { ... }
+//
+// In particular, you can provide the template type arguments
+// explicitly when invoking Foo(), as in Foo<long, bool>(5, false);
+// although usually you can rely on the compiler to infer the types
+// for you automatically.  You can assign the result of expression
+// Foo(p1, ..., pk) to a variable of type FooActionPk<p1_type, ...,
+// pk_type>.  This can be useful when composing actions.
+//
+// You can also overload actions with different numbers of parameters:
+//
+//   ACTION_P(Plus, a) { ... }
+//   ACTION_P2(Plus, a, b) { ... }
+//
+// While it's tempting to always use the ACTION* macros when defining
+// a new action, you should also consider implementing ActionInterface
+// or using MakePolymorphicAction() instead, especially if you need to
+// use the action a lot.  While these approaches require more work,
+// they give you more control on the types of the mock function
+// arguments and the action parameters, which in general leads to
+// better compiler error messages that pay off in the long run.  They
+// also allow overloading actions based on parameter types (as opposed
+// to just based on the number of parameters).
+//
+// CAVEAT:
+//
+// ACTION*() can only be used in a namespace scope.  The reason is
+// that C++ doesn't yet allow function-local types to be used to
+// instantiate templates.  The up-coming C++0x standard will fix this.
+// Once that's done, we'll consider supporting using ACTION*() inside
+// a function.
+//
+// MORE INFORMATION:
+//
+// To learn more about using these macros, please search for 'ACTION'
+// on http://code.google.com/p/googlemock/wiki/CookBook.
+
+$range i 0..n
+$range k 0..n-1
+
+// An internal macro needed for implementing ACTION*().
+#define GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_\
+    const args_type& args GTEST_ATTRIBUTE_UNUSED_
+$for k [[, \
+    arg$k[[]]_type arg$k GTEST_ATTRIBUTE_UNUSED_]]
+
+
+// Sometimes you want to give an action explicit template parameters
+// that cannot be inferred from its value parameters.  ACTION() and
+// ACTION_P*() don't support that.  ACTION_TEMPLATE() remedies that
+// and can be viewed as an extension to ACTION() and ACTION_P*().
+//
+// The syntax:
+//
+//   ACTION_TEMPLATE(ActionName,
+//                   HAS_m_TEMPLATE_PARAMS(kind1, name1, ..., kind_m, name_m),
+//                   AND_n_VALUE_PARAMS(p1, ..., p_n)) { statements; }
+//
+// defines an action template that takes m explicit template
+// parameters and n value parameters.  name_i is the name of the i-th
+// template parameter, and kind_i specifies whether it's a typename,
+// an integral constant, or a template.  p_i is the name of the i-th
+// value parameter.
+//
+// Example:
+//
+//   // DuplicateArg<k, T>(output) converts the k-th argument of the mock
+//   // function to type T and copies it to *output.
+//   ACTION_TEMPLATE(DuplicateArg,
+//                   HAS_2_TEMPLATE_PARAMS(int, k, typename, T),
+//                   AND_1_VALUE_PARAMS(output)) {
+//     *output = T(std::tr1::get<k>(args));
+//   }
+//   ...
+//     int n;
+//     EXPECT_CALL(mock, Foo(_, _))
+//         .WillOnce(DuplicateArg<1, unsigned char>(&n));
+//
+// To create an instance of an action template, write:
+//
+//   ActionName<t1, ..., t_m>(v1, ..., v_n)
+//
+// where the ts are the template arguments and the vs are the value
+// arguments.  The value argument types are inferred by the compiler.
+// If you want to explicitly specify the value argument types, you can
+// provide additional template arguments:
+//
+//   ActionName<t1, ..., t_m, u1, ..., u_k>(v1, ..., v_n)
+//
+// where u_i is the desired type of v_i.
+//
+// ACTION_TEMPLATE and ACTION/ACTION_P* can be overloaded on the
+// number of value parameters, but not on the number of template
+// parameters.  Without the restriction, the meaning of the following
+// is unclear:
+//
+//   OverloadedAction<int, bool>(x);
+//
+// Are we using a single-template-parameter action where 'bool' refers
+// to the type of x, or are we using a two-template-parameter action
+// where the compiler is asked to infer the type of x?
+//
+// Implementation notes:
+//
+// GMOCK_INTERNAL_*_HAS_m_TEMPLATE_PARAMS and
+// GMOCK_INTERNAL_*_AND_n_VALUE_PARAMS are internal macros for
+// implementing ACTION_TEMPLATE.  The main trick we use is to create
+// new macro invocations when expanding a macro.  For example, we have
+//
+//   #define ACTION_TEMPLATE(name, template_params, value_params)
+//       ... GMOCK_INTERNAL_DECL_##template_params ...
+//
+// which causes ACTION_TEMPLATE(..., HAS_1_TEMPLATE_PARAMS(typename, T), ...)
+// to expand to
+//
+//       ... GMOCK_INTERNAL_DECL_HAS_1_TEMPLATE_PARAMS(typename, T) ...
+//
+// Since GMOCK_INTERNAL_DECL_HAS_1_TEMPLATE_PARAMS is a macro, the
+// preprocessor will continue to expand it to
+//
+//       ... typename T ...
+//
+// This technique conforms to the C++ standard and is portable.  It
+// allows us to implement action templates using O(N) code, where N is
+// the maximum number of template/value parameters supported.  Without
+// using it, we'd have to devote O(N^2) amount of code to implement all
+// combinations of m and n.
+
+// Declares the template parameters.
+
+$range j 1..n
+$for j [[
+$range m 0..j-1
+#define GMOCK_INTERNAL_DECL_HAS_$j[[]]
+_TEMPLATE_PARAMS($for m, [[kind$m, name$m]]) $for m, [[kind$m name$m]]
+
+
+]]
+
+// Lists the template parameters.
+
+$for j [[
+$range m 0..j-1
+#define GMOCK_INTERNAL_LIST_HAS_$j[[]]
+_TEMPLATE_PARAMS($for m, [[kind$m, name$m]]) $for m, [[name$m]]
+
+
+]]
+
+// Declares the types of value parameters.
+
+$for i [[
+$range j 0..i-1
+#define GMOCK_INTERNAL_DECL_TYPE_AND_$i[[]]
+_VALUE_PARAMS($for j, [[p$j]]) $for j [[, typename p$j##_type]]
+
+
+]]
+
+// Initializes the value parameters.
+
+$for i [[
+$range j 0..i-1
+#define GMOCK_INTERNAL_INIT_AND_$i[[]]_VALUE_PARAMS($for j, [[p$j]])\
+    ($for j, [[p$j##_type gmock_p$j]])$if i>0 [[ : ]]$for j, [[p$j(gmock_p$j)]]
+
+
+]]
+
+// Declares the fields for storing the value parameters.
+
+$for i [[
+$range j 0..i-1
+#define GMOCK_INTERNAL_DEFN_AND_$i[[]]
+_VALUE_PARAMS($for j, [[p$j]]) $for j [[p$j##_type p$j; ]]
+
+
+]]
+
+// Lists the value parameters.
+
+$for i [[
+$range j 0..i-1
+#define GMOCK_INTERNAL_LIST_AND_$i[[]]
+_VALUE_PARAMS($for j, [[p$j]]) $for j, [[p$j]]
+
+
+]]
+
+// Lists the value parameter types.
+
+$for i [[
+$range j 0..i-1
+#define GMOCK_INTERNAL_LIST_TYPE_AND_$i[[]]
+_VALUE_PARAMS($for j, [[p$j]]) $for j [[, p$j##_type]]
+
+
+]]
+
+// Declares the value parameters.
+
+$for i [[
+$range j 0..i-1
+#define GMOCK_INTERNAL_DECL_AND_$i[[]]_VALUE_PARAMS($for j, [[p$j]]) [[]]
+$for j, [[p$j##_type p$j]]
+
+
+]]
+
+// The suffix of the class template implementing the action template.
+$for i [[
+
+
+$range j 0..i-1
+#define GMOCK_INTERNAL_COUNT_AND_$i[[]]_VALUE_PARAMS($for j, [[p$j]]) [[]]
+$if i==1 [[P]] $elif i>=2 [[P$i]]
+]]
+
+
+// The name of the class template implementing the action template.
+#define GMOCK_ACTION_CLASS_(name, value_params)\
+    GTEST_CONCAT_TOKEN_(name##Action, GMOCK_INTERNAL_COUNT_##value_params)
+
+$range k 0..n-1
+
+#define ACTION_TEMPLATE(name, template_params, value_params)\
+  template <GMOCK_INTERNAL_DECL_##template_params\
+            GMOCK_INTERNAL_DECL_TYPE_##value_params>\
+  class GMOCK_ACTION_CLASS_(name, value_params) {\
+   public:\
+    GMOCK_ACTION_CLASS_(name, value_params)\
+        GMOCK_INTERNAL_INIT_##value_params {}\
+    template <typename F>\
+    class gmock_Impl : public ::testing::ActionInterface<F> {\
+     public:\
+      typedef F function_type;\
+      typedef typename ::testing::internal::Function<F>::Result return_type;\
+      typedef typename ::testing::internal::Function<F>::ArgumentTuple\
+          args_type;\
+      explicit gmock_Impl GMOCK_INTERNAL_INIT_##value_params {}\
+      virtual return_type Perform(const args_type& args) {\
+        return ::testing::internal::ActionHelper<return_type, gmock_Impl>::\
+            Perform(this, args);\
+      }\
+      template <$for k, [[typename arg$k[[]]_type]]>\
+      return_type gmock_PerformImpl(const args_type& args[[]]
+$for k [[, arg$k[[]]_type arg$k]]) const;\
+      GMOCK_INTERNAL_DEFN_##value_params\
+     private:\
+      GTEST_DISALLOW_ASSIGN_(gmock_Impl);\
+    };\
+    template <typename F> operator ::testing::Action<F>() const {\
+      return ::testing::Action<F>(\
+          new gmock_Impl<F>(GMOCK_INTERNAL_LIST_##value_params));\
+    }\
+    GMOCK_INTERNAL_DEFN_##value_params\
+   private:\
+    GTEST_DISALLOW_ASSIGN_(GMOCK_ACTION_CLASS_(name, value_params));\
+  };\
+  template <GMOCK_INTERNAL_DECL_##template_params\
+            GMOCK_INTERNAL_DECL_TYPE_##value_params>\
+  inline GMOCK_ACTION_CLASS_(name, value_params)<\
+      GMOCK_INTERNAL_LIST_##template_params\
+      GMOCK_INTERNAL_LIST_TYPE_##value_params> name(\
+          GMOCK_INTERNAL_DECL_##value_params) {\
+    return GMOCK_ACTION_CLASS_(name, value_params)<\
+        GMOCK_INTERNAL_LIST_##template_params\
+        GMOCK_INTERNAL_LIST_TYPE_##value_params>(\
+            GMOCK_INTERNAL_LIST_##value_params);\
+  }\
+  template <GMOCK_INTERNAL_DECL_##template_params\
+            GMOCK_INTERNAL_DECL_TYPE_##value_params>\
+  template <typename F>\
+  template <typename arg0_type, typename arg1_type, typename arg2_type, \
+      typename arg3_type, typename arg4_type, typename arg5_type, \
+      typename arg6_type, typename arg7_type, typename arg8_type, \
+      typename arg9_type>\
+  typename ::testing::internal::Function<F>::Result\
+      GMOCK_ACTION_CLASS_(name, value_params)<\
+          GMOCK_INTERNAL_LIST_##template_params\
+          GMOCK_INTERNAL_LIST_TYPE_##value_params>::gmock_Impl<F>::\
+              gmock_PerformImpl(\
+          GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_) const
+
+$for i
+
+[[
+$var template = [[$if i==0 [[]] $else [[
+$range j 0..i-1
+
+  template <$for j, [[typename p$j##_type]]>\
+]]]]
+$var class_name = [[name##Action[[$if i==0 [[]] $elif i==1 [[P]]
+                                                $else [[P$i]]]]]]
+$range j 0..i-1
+$var ctor_param_list = [[$for j, [[p$j##_type gmock_p$j]]]]
+$var param_types_and_names = [[$for j, [[p$j##_type p$j]]]]
+$var inits = [[$if i==0 [[]] $else [[ : $for j, [[p$j(gmock_p$j)]]]]]]
+$var param_field_decls = [[$for j
+[[
+
+      p$j##_type p$j;\
+]]]]
+$var param_field_decls2 = [[$for j
+[[
+
+    p$j##_type p$j;\
+]]]]
+$var params = [[$for j, [[p$j]]]]
+$var param_types = [[$if i==0 [[]] $else [[<$for j, [[p$j##_type]]>]]]]
+$var typename_arg_types = [[$for k, [[typename arg$k[[]]_type]]]]
+$var arg_types_and_names = [[$for k, [[arg$k[[]]_type arg$k]]]]
+$var macro_name = [[$if i==0 [[ACTION]] $elif i==1 [[ACTION_P]]
+                                        $else [[ACTION_P$i]]]]
+
+#define $macro_name(name$for j [[, p$j]])\$template
+  class $class_name {\
+   public:\
+    $class_name($ctor_param_list)$inits {}\
+    template <typename F>\
+    class gmock_Impl : public ::testing::ActionInterface<F> {\
+     public:\
+      typedef F function_type;\
+      typedef typename ::testing::internal::Function<F>::Result return_type;\
+      typedef typename ::testing::internal::Function<F>::ArgumentTuple\
+          args_type;\
+      [[$if i==1 [[explicit ]]]]gmock_Impl($ctor_param_list)$inits {}\
+      virtual return_type Perform(const args_type& args) {\
+        return ::testing::internal::ActionHelper<return_type, gmock_Impl>::\
+            Perform(this, args);\
+      }\
+      template <$typename_arg_types>\
+      return_type gmock_PerformImpl(const args_type& args, [[]]
+$arg_types_and_names) const;\$param_field_decls
+     private:\
+      GTEST_DISALLOW_ASSIGN_(gmock_Impl);\
+    };\
+    template <typename F> operator ::testing::Action<F>() const {\
+      return ::testing::Action<F>(new gmock_Impl<F>($params));\
+    }\$param_field_decls2
+   private:\
+    GTEST_DISALLOW_ASSIGN_($class_name);\
+  };\$template
+  inline $class_name$param_types name($param_types_and_names) {\
+    return $class_name$param_types($params);\
+  }\$template
+  template <typename F>\
+  template <$typename_arg_types>\
+  typename ::testing::internal::Function<F>::Result\
+      $class_name$param_types::gmock_Impl<F>::gmock_PerformImpl(\
+          GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_) const
+]]
+$$ }  // This meta comment fixes auto-indentation in Emacs.  It won't
+$$    // show up in the generated code.
+
+
+namespace testing {
+
+// The ACTION*() macros trigger warning C4100 (unreferenced formal
+// parameter) in MSVC with -W4.  Unfortunately they cannot be fixed in
+// the macro definition, as the warnings are generated when the macro
+// is expanded and macro expansion cannot contain #pragma.  Therefore
+// we suppress them here.
+#ifdef _MSC_VER
+# pragma warning(push)
+# pragma warning(disable:4100)
+#endif
+
+// Various overloads for InvokeArgument<N>().
+//
+// The InvokeArgument<N>(a1, a2, ..., a_k) action invokes the N-th
+// (0-based) argument, which must be a k-ary callable, of the mock
+// function, with arguments a1, a2, ..., a_k.
+//
+// Notes:
+//
+//   1. The arguments are passed by value by default.  If you need to
+//   pass an argument by reference, wrap it inside ByRef().  For
+//   example,
+//
+//     InvokeArgument<1>(5, string("Hello"), ByRef(foo))
+//
+//   passes 5 and string("Hello") by value, and passes foo by
+//   reference.
+//
+//   2. If the callable takes an argument by reference but ByRef() is
+//   not used, it will receive the reference to a copy of the value,
+//   instead of the original value.  For example, when the 0-th
+//   argument of the mock function takes a const string&, the action
+//
+//     InvokeArgument<0>(string("Hello"))
+//
+//   makes a copy of the temporary string("Hello") object and passes a
+//   reference of the copy, instead of the original temporary object,
+//   to the callable.  This makes it easy for a user to define an
+//   InvokeArgument action from temporary values and have it performed
+//   later.
+
+$range i 0..n
+$for i [[
+$range j 0..i-1
+
+ACTION_TEMPLATE(InvokeArgument,
+                HAS_1_TEMPLATE_PARAMS(int, k),
+                AND_$i[[]]_VALUE_PARAMS($for j, [[p$j]])) {
+  return internal::CallableHelper<return_type>::Call(
+      ::std::tr1::get<k>(args)$for j [[, p$j]]);
+}
+
+]]
+
+// Various overloads for ReturnNew<T>().
+//
+// The ReturnNew<T>(a1, a2, ..., a_k) action returns a pointer to a new
+// instance of type T, constructed on the heap with constructor arguments
+// a1, a2, ..., and a_k. The caller assumes ownership of the returned value.
+$range i 0..n
+$for i [[
+$range j 0..i-1
+$var ps = [[$for j, [[p$j]]]]
+
+ACTION_TEMPLATE(ReturnNew,
+                HAS_1_TEMPLATE_PARAMS(typename, T),
+                AND_$i[[]]_VALUE_PARAMS($ps)) {
+  return new T($ps);
+}
+
+]]
+
+#ifdef _MSC_VER
+# pragma warning(pop)
+#endif
+
+}  // namespace testing
+
+#endif  // GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_ACTIONS_H_
diff --git a/google-breakpad/src/testing/include/gmock/gmock-generated-function-mockers.h b/google-breakpad/src/testing/include/gmock/gmock-generated-function-mockers.h
new file mode 100644
index 0000000..509d46c
--- /dev/null
+++ b/google-breakpad/src/testing/include/gmock/gmock-generated-function-mockers.h
@@ -0,0 +1,929 @@
+// This file was GENERATED by command:
+//     pump.py gmock-generated-function-mockers.h.pump
+// DO NOT EDIT BY HAND!!!
+
+// Copyright 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Google Mock - a framework for writing C++ mock classes.
+//
+// This file implements function mockers of various arities.
+
+#ifndef GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_FUNCTION_MOCKERS_H_
+#define GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_FUNCTION_MOCKERS_H_
+
+#include "gmock/gmock-spec-builders.h"
+#include "gmock/internal/gmock-internal-utils.h"
+
+namespace testing {
+namespace internal {
+
+template <typename F>
+class FunctionMockerBase;
+
+// Note: class FunctionMocker really belongs to the ::testing
+// namespace.  However if we define it in ::testing, MSVC will
+// complain when classes in ::testing::internal declare it as a
+// friend class template.  To workaround this compiler bug, we define
+// FunctionMocker in ::testing::internal and import it into ::testing.
+template <typename F>
+class FunctionMocker;
+
+template <typename R>
+class FunctionMocker<R()> : public
+    internal::FunctionMockerBase<R()> {
+ public:
+  typedef R F();
+  typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
+
+  MockSpec<F>& With() {
+    return this->current_spec();
+  }
+
+  R Invoke() {
+    // Even though gcc and MSVC don't enforce it, 'this->' is required
+    // by the C++ standard [14.6.4] here, as the base class type is
+    // dependent on the template argument (and thus shouldn't be
+    // looked into when resolving InvokeWith).
+    return this->InvokeWith(ArgumentTuple());
+  }
+};
+
+template <typename R, typename A1>
+class FunctionMocker<R(A1)> : public
+    internal::FunctionMockerBase<R(A1)> {
+ public:
+  typedef R F(A1);
+  typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
+
+  MockSpec<F>& With(const Matcher<A1>& m1) {
+    this->current_spec().SetMatchers(::std::tr1::make_tuple(m1));
+    return this->current_spec();
+  }
+
+  R Invoke(A1 a1) {
+    // Even though gcc and MSVC don't enforce it, 'this->' is required
+    // by the C++ standard [14.6.4] here, as the base class type is
+    // dependent on the template argument (and thus shouldn't be
+    // looked into when resolving InvokeWith).
+    return this->InvokeWith(ArgumentTuple(a1));
+  }
+};
+
+template <typename R, typename A1, typename A2>
+class FunctionMocker<R(A1, A2)> : public
+    internal::FunctionMockerBase<R(A1, A2)> {
+ public:
+  typedef R F(A1, A2);
+  typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
+
+  MockSpec<F>& With(const Matcher<A1>& m1, const Matcher<A2>& m2) {
+    this->current_spec().SetMatchers(::std::tr1::make_tuple(m1, m2));
+    return this->current_spec();
+  }
+
+  R Invoke(A1 a1, A2 a2) {
+    // Even though gcc and MSVC don't enforce it, 'this->' is required
+    // by the C++ standard [14.6.4] here, as the base class type is
+    // dependent on the template argument (and thus shouldn't be
+    // looked into when resolving InvokeWith).
+    return this->InvokeWith(ArgumentTuple(a1, a2));
+  }
+};
+
+template <typename R, typename A1, typename A2, typename A3>
+class FunctionMocker<R(A1, A2, A3)> : public
+    internal::FunctionMockerBase<R(A1, A2, A3)> {
+ public:
+  typedef R F(A1, A2, A3);
+  typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
+
+  MockSpec<F>& With(const Matcher<A1>& m1, const Matcher<A2>& m2,
+      const Matcher<A3>& m3) {
+    this->current_spec().SetMatchers(::std::tr1::make_tuple(m1, m2, m3));
+    return this->current_spec();
+  }
+
+  R Invoke(A1 a1, A2 a2, A3 a3) {
+    // Even though gcc and MSVC don't enforce it, 'this->' is required
+    // by the C++ standard [14.6.4] here, as the base class type is
+    // dependent on the template argument (and thus shouldn't be
+    // looked into when resolving InvokeWith).
+    return this->InvokeWith(ArgumentTuple(a1, a2, a3));
+  }
+};
+
+template <typename R, typename A1, typename A2, typename A3, typename A4>
+class FunctionMocker<R(A1, A2, A3, A4)> : public
+    internal::FunctionMockerBase<R(A1, A2, A3, A4)> {
+ public:
+  typedef R F(A1, A2, A3, A4);
+  typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
+
+  MockSpec<F>& With(const Matcher<A1>& m1, const Matcher<A2>& m2,
+      const Matcher<A3>& m3, const Matcher<A4>& m4) {
+    this->current_spec().SetMatchers(::std::tr1::make_tuple(m1, m2, m3, m4));
+    return this->current_spec();
+  }
+
+  R Invoke(A1 a1, A2 a2, A3 a3, A4 a4) {
+    // Even though gcc and MSVC don't enforce it, 'this->' is required
+    // by the C++ standard [14.6.4] here, as the base class type is
+    // dependent on the template argument (and thus shouldn't be
+    // looked into when resolving InvokeWith).
+    return this->InvokeWith(ArgumentTuple(a1, a2, a3, a4));
+  }
+};
+
+template <typename R, typename A1, typename A2, typename A3, typename A4,
+    typename A5>
+class FunctionMocker<R(A1, A2, A3, A4, A5)> : public
+    internal::FunctionMockerBase<R(A1, A2, A3, A4, A5)> {
+ public:
+  typedef R F(A1, A2, A3, A4, A5);
+  typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
+
+  MockSpec<F>& With(const Matcher<A1>& m1, const Matcher<A2>& m2,
+      const Matcher<A3>& m3, const Matcher<A4>& m4, const Matcher<A5>& m5) {
+    this->current_spec().SetMatchers(::std::tr1::make_tuple(m1, m2, m3, m4,
+        m5));
+    return this->current_spec();
+  }
+
+  R Invoke(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) {
+    // Even though gcc and MSVC don't enforce it, 'this->' is required
+    // by the C++ standard [14.6.4] here, as the base class type is
+    // dependent on the template argument (and thus shouldn't be
+    // looked into when resolving InvokeWith).
+    return this->InvokeWith(ArgumentTuple(a1, a2, a3, a4, a5));
+  }
+};
+
+template <typename R, typename A1, typename A2, typename A3, typename A4,
+    typename A5, typename A6>
+class FunctionMocker<R(A1, A2, A3, A4, A5, A6)> : public
+    internal::FunctionMockerBase<R(A1, A2, A3, A4, A5, A6)> {
+ public:
+  typedef R F(A1, A2, A3, A4, A5, A6);
+  typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
+
+  MockSpec<F>& With(const Matcher<A1>& m1, const Matcher<A2>& m2,
+      const Matcher<A3>& m3, const Matcher<A4>& m4, const Matcher<A5>& m5,
+      const Matcher<A6>& m6) {
+    this->current_spec().SetMatchers(::std::tr1::make_tuple(m1, m2, m3, m4, m5,
+        m6));
+    return this->current_spec();
+  }
+
+  R Invoke(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) {
+    // Even though gcc and MSVC don't enforce it, 'this->' is required
+    // by the C++ standard [14.6.4] here, as the base class type is
+    // dependent on the template argument (and thus shouldn't be
+    // looked into when resolving InvokeWith).
+    return this->InvokeWith(ArgumentTuple(a1, a2, a3, a4, a5, a6));
+  }
+};
+
+template <typename R, typename A1, typename A2, typename A3, typename A4,
+    typename A5, typename A6, typename A7>
+class FunctionMocker<R(A1, A2, A3, A4, A5, A6, A7)> : public
+    internal::FunctionMockerBase<R(A1, A2, A3, A4, A5, A6, A7)> {
+ public:
+  typedef R F(A1, A2, A3, A4, A5, A6, A7);
+  typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
+
+  MockSpec<F>& With(const Matcher<A1>& m1, const Matcher<A2>& m2,
+      const Matcher<A3>& m3, const Matcher<A4>& m4, const Matcher<A5>& m5,
+      const Matcher<A6>& m6, const Matcher<A7>& m7) {
+    this->current_spec().SetMatchers(::std::tr1::make_tuple(m1, m2, m3, m4, m5,
+        m6, m7));
+    return this->current_spec();
+  }
+
+  R Invoke(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) {
+    // Even though gcc and MSVC don't enforce it, 'this->' is required
+    // by the C++ standard [14.6.4] here, as the base class type is
+    // dependent on the template argument (and thus shouldn't be
+    // looked into when resolving InvokeWith).
+    return this->InvokeWith(ArgumentTuple(a1, a2, a3, a4, a5, a6, a7));
+  }
+};
+
+template <typename R, typename A1, typename A2, typename A3, typename A4,
+    typename A5, typename A6, typename A7, typename A8>
+class FunctionMocker<R(A1, A2, A3, A4, A5, A6, A7, A8)> : public
+    internal::FunctionMockerBase<R(A1, A2, A3, A4, A5, A6, A7, A8)> {
+ public:
+  typedef R F(A1, A2, A3, A4, A5, A6, A7, A8);
+  typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
+
+  MockSpec<F>& With(const Matcher<A1>& m1, const Matcher<A2>& m2,
+      const Matcher<A3>& m3, const Matcher<A4>& m4, const Matcher<A5>& m5,
+      const Matcher<A6>& m6, const Matcher<A7>& m7, const Matcher<A8>& m8) {
+    this->current_spec().SetMatchers(::std::tr1::make_tuple(m1, m2, m3, m4, m5,
+        m6, m7, m8));
+    return this->current_spec();
+  }
+
+  R Invoke(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) {
+    // Even though gcc and MSVC don't enforce it, 'this->' is required
+    // by the C++ standard [14.6.4] here, as the base class type is
+    // dependent on the template argument (and thus shouldn't be
+    // looked into when resolving InvokeWith).
+    return this->InvokeWith(ArgumentTuple(a1, a2, a3, a4, a5, a6, a7, a8));
+  }
+};
+
+template <typename R, typename A1, typename A2, typename A3, typename A4,
+    typename A5, typename A6, typename A7, typename A8, typename A9>
+class FunctionMocker<R(A1, A2, A3, A4, A5, A6, A7, A8, A9)> : public
+    internal::FunctionMockerBase<R(A1, A2, A3, A4, A5, A6, A7, A8, A9)> {
+ public:
+  typedef R F(A1, A2, A3, A4, A5, A6, A7, A8, A9);
+  typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
+
+  MockSpec<F>& With(const Matcher<A1>& m1, const Matcher<A2>& m2,
+      const Matcher<A3>& m3, const Matcher<A4>& m4, const Matcher<A5>& m5,
+      const Matcher<A6>& m6, const Matcher<A7>& m7, const Matcher<A8>& m8,
+      const Matcher<A9>& m9) {
+    this->current_spec().SetMatchers(::std::tr1::make_tuple(m1, m2, m3, m4, m5,
+        m6, m7, m8, m9));
+    return this->current_spec();
+  }
+
+  R Invoke(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9) {
+    // Even though gcc and MSVC don't enforce it, 'this->' is required
+    // by the C++ standard [14.6.4] here, as the base class type is
+    // dependent on the template argument (and thus shouldn't be
+    // looked into when resolving InvokeWith).
+    return this->InvokeWith(ArgumentTuple(a1, a2, a3, a4, a5, a6, a7, a8, a9));
+  }
+};
+
+template <typename R, typename A1, typename A2, typename A3, typename A4,
+    typename A5, typename A6, typename A7, typename A8, typename A9,
+    typename A10>
+class FunctionMocker<R(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10)> : public
+    internal::FunctionMockerBase<R(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10)> {
+ public:
+  typedef R F(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10);
+  typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
+
+  MockSpec<F>& With(const Matcher<A1>& m1, const Matcher<A2>& m2,
+      const Matcher<A3>& m3, const Matcher<A4>& m4, const Matcher<A5>& m5,
+      const Matcher<A6>& m6, const Matcher<A7>& m7, const Matcher<A8>& m8,
+      const Matcher<A9>& m9, const Matcher<A10>& m10) {
+    this->current_spec().SetMatchers(::std::tr1::make_tuple(m1, m2, m3, m4, m5,
+        m6, m7, m8, m9, m10));
+    return this->current_spec();
+  }
+
+  R Invoke(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9,
+      A10 a10) {
+    // Even though gcc and MSVC don't enforce it, 'this->' is required
+    // by the C++ standard [14.6.4] here, as the base class type is
+    // dependent on the template argument (and thus shouldn't be
+    // looked into when resolving InvokeWith).
+    return this->InvokeWith(ArgumentTuple(a1, a2, a3, a4, a5, a6, a7, a8, a9,
+        a10));
+  }
+};
+
+}  // namespace internal
+
+// The style guide prohibits "using" statements in a namespace scope
+// inside a header file.  However, the FunctionMocker class template
+// is meant to be defined in the ::testing namespace.  The following
+// line is just a trick for working around a bug in MSVC 8.0, which
+// cannot handle it if we define FunctionMocker in ::testing.
+using internal::FunctionMocker;
+
+// The result type of function type F.
+// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
+#define GMOCK_RESULT_(tn, F) tn ::testing::internal::Function<F>::Result
+
+// The type of argument N of function type F.
+// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
+#define GMOCK_ARG_(tn, F, N) tn ::testing::internal::Function<F>::Argument##N
+
+// The matcher type for argument N of function type F.
+// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
+#define GMOCK_MATCHER_(tn, F, N) const ::testing::Matcher<GMOCK_ARG_(tn, F, N)>&
+
+// The variable for mocking the given method.
+// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
+#define GMOCK_MOCKER_(arity, constness, Method) \
+    GTEST_CONCAT_TOKEN_(gmock##constness##arity##_##Method##_, __LINE__)
+
+// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
+#define GMOCK_METHOD0_(tn, constness, ct, Method, F) \
+  GMOCK_RESULT_(tn, F) ct Method() constness { \
+    GTEST_COMPILE_ASSERT_(::std::tr1::tuple_size< \
+        tn ::testing::internal::Function<F>::ArgumentTuple>::value == 0, \
+        this_method_does_not_take_0_arguments); \
+    GMOCK_MOCKER_(0, constness, Method).SetOwnerAndName(this, #Method); \
+    return GMOCK_MOCKER_(0, constness, Method).Invoke(); \
+  } \
+  ::testing::MockSpec<F>& \
+      gmock_##Method() constness { \
+    GMOCK_MOCKER_(0, constness, Method).RegisterOwner(this); \
+    return GMOCK_MOCKER_(0, constness, Method).With(); \
+  } \
+  mutable ::testing::FunctionMocker<F> GMOCK_MOCKER_(0, constness, Method)
+
+// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
+#define GMOCK_METHOD1_(tn, constness, ct, Method, F) \
+  GMOCK_RESULT_(tn, F) ct Method(GMOCK_ARG_(tn, F, 1) gmock_a1) constness { \
+    GTEST_COMPILE_ASSERT_(::std::tr1::tuple_size< \
+        tn ::testing::internal::Function<F>::ArgumentTuple>::value == 1, \
+        this_method_does_not_take_1_argument); \
+    GMOCK_MOCKER_(1, constness, Method).SetOwnerAndName(this, #Method); \
+    return GMOCK_MOCKER_(1, constness, Method).Invoke(gmock_a1); \
+  } \
+  ::testing::MockSpec<F>& \
+      gmock_##Method(GMOCK_MATCHER_(tn, F, 1) gmock_a1) constness { \
+    GMOCK_MOCKER_(1, constness, Method).RegisterOwner(this); \
+    return GMOCK_MOCKER_(1, constness, Method).With(gmock_a1); \
+  } \
+  mutable ::testing::FunctionMocker<F> GMOCK_MOCKER_(1, constness, Method)
+
+// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
+#define GMOCK_METHOD2_(tn, constness, ct, Method, F) \
+  GMOCK_RESULT_(tn, F) ct Method(GMOCK_ARG_(tn, F, 1) gmock_a1, \
+                                 GMOCK_ARG_(tn, F, 2) gmock_a2) constness { \
+    GTEST_COMPILE_ASSERT_(::std::tr1::tuple_size< \
+        tn ::testing::internal::Function<F>::ArgumentTuple>::value == 2, \
+        this_method_does_not_take_2_arguments); \
+    GMOCK_MOCKER_(2, constness, Method).SetOwnerAndName(this, #Method); \
+    return GMOCK_MOCKER_(2, constness, Method).Invoke(gmock_a1, gmock_a2); \
+  } \
+  ::testing::MockSpec<F>& \
+      gmock_##Method(GMOCK_MATCHER_(tn, F, 1) gmock_a1, \
+                     GMOCK_MATCHER_(tn, F, 2) gmock_a2) constness { \
+    GMOCK_MOCKER_(2, constness, Method).RegisterOwner(this); \
+    return GMOCK_MOCKER_(2, constness, Method).With(gmock_a1, gmock_a2); \
+  } \
+  mutable ::testing::FunctionMocker<F> GMOCK_MOCKER_(2, constness, Method)
+
+// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
+#define GMOCK_METHOD3_(tn, constness, ct, Method, F) \
+  GMOCK_RESULT_(tn, F) ct Method(GMOCK_ARG_(tn, F, 1) gmock_a1, \
+                                 GMOCK_ARG_(tn, F, 2) gmock_a2, \
+                                 GMOCK_ARG_(tn, F, 3) gmock_a3) constness { \
+    GTEST_COMPILE_ASSERT_(::std::tr1::tuple_size< \
+        tn ::testing::internal::Function<F>::ArgumentTuple>::value == 3, \
+        this_method_does_not_take_3_arguments); \
+    GMOCK_MOCKER_(3, constness, Method).SetOwnerAndName(this, #Method); \
+    return GMOCK_MOCKER_(3, constness, Method).Invoke(gmock_a1, gmock_a2, \
+        gmock_a3); \
+  } \
+  ::testing::MockSpec<F>& \
+      gmock_##Method(GMOCK_MATCHER_(tn, F, 1) gmock_a1, \
+                     GMOCK_MATCHER_(tn, F, 2) gmock_a2, \
+                     GMOCK_MATCHER_(tn, F, 3) gmock_a3) constness { \
+    GMOCK_MOCKER_(3, constness, Method).RegisterOwner(this); \
+    return GMOCK_MOCKER_(3, constness, Method).With(gmock_a1, gmock_a2, \
+        gmock_a3); \
+  } \
+  mutable ::testing::FunctionMocker<F> GMOCK_MOCKER_(3, constness, Method)
+
+// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
+#define GMOCK_METHOD4_(tn, constness, ct, Method, F) \
+  GMOCK_RESULT_(tn, F) ct Method(GMOCK_ARG_(tn, F, 1) gmock_a1, \
+                                 GMOCK_ARG_(tn, F, 2) gmock_a2, \
+                                 GMOCK_ARG_(tn, F, 3) gmock_a3, \
+                                 GMOCK_ARG_(tn, F, 4) gmock_a4) constness { \
+    GTEST_COMPILE_ASSERT_(::std::tr1::tuple_size< \
+        tn ::testing::internal::Function<F>::ArgumentTuple>::value == 4, \
+        this_method_does_not_take_4_arguments); \
+    GMOCK_MOCKER_(4, constness, Method).SetOwnerAndName(this, #Method); \
+    return GMOCK_MOCKER_(4, constness, Method).Invoke(gmock_a1, gmock_a2, \
+        gmock_a3, gmock_a4); \
+  } \
+  ::testing::MockSpec<F>& \
+      gmock_##Method(GMOCK_MATCHER_(tn, F, 1) gmock_a1, \
+                     GMOCK_MATCHER_(tn, F, 2) gmock_a2, \
+                     GMOCK_MATCHER_(tn, F, 3) gmock_a3, \
+                     GMOCK_MATCHER_(tn, F, 4) gmock_a4) constness { \
+    GMOCK_MOCKER_(4, constness, Method).RegisterOwner(this); \
+    return GMOCK_MOCKER_(4, constness, Method).With(gmock_a1, gmock_a2, \
+        gmock_a3, gmock_a4); \
+  } \
+  mutable ::testing::FunctionMocker<F> GMOCK_MOCKER_(4, constness, Method)
+
+// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
+#define GMOCK_METHOD5_(tn, constness, ct, Method, F) \
+  GMOCK_RESULT_(tn, F) ct Method(GMOCK_ARG_(tn, F, 1) gmock_a1, \
+                                 GMOCK_ARG_(tn, F, 2) gmock_a2, \
+                                 GMOCK_ARG_(tn, F, 3) gmock_a3, \
+                                 GMOCK_ARG_(tn, F, 4) gmock_a4, \
+                                 GMOCK_ARG_(tn, F, 5) gmock_a5) constness { \
+    GTEST_COMPILE_ASSERT_(::std::tr1::tuple_size< \
+        tn ::testing::internal::Function<F>::ArgumentTuple>::value == 5, \
+        this_method_does_not_take_5_arguments); \
+    GMOCK_MOCKER_(5, constness, Method).SetOwnerAndName(this, #Method); \
+    return GMOCK_MOCKER_(5, constness, Method).Invoke(gmock_a1, gmock_a2, \
+        gmock_a3, gmock_a4, gmock_a5); \
+  } \
+  ::testing::MockSpec<F>& \
+      gmock_##Method(GMOCK_MATCHER_(tn, F, 1) gmock_a1, \
+                     GMOCK_MATCHER_(tn, F, 2) gmock_a2, \
+                     GMOCK_MATCHER_(tn, F, 3) gmock_a3, \
+                     GMOCK_MATCHER_(tn, F, 4) gmock_a4, \
+                     GMOCK_MATCHER_(tn, F, 5) gmock_a5) constness { \
+    GMOCK_MOCKER_(5, constness, Method).RegisterOwner(this); \
+    return GMOCK_MOCKER_(5, constness, Method).With(gmock_a1, gmock_a2, \
+        gmock_a3, gmock_a4, gmock_a5); \
+  } \
+  mutable ::testing::FunctionMocker<F> GMOCK_MOCKER_(5, constness, Method)
+
+// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
+#define GMOCK_METHOD6_(tn, constness, ct, Method, F) \
+  GMOCK_RESULT_(tn, F) ct Method(GMOCK_ARG_(tn, F, 1) gmock_a1, \
+                                 GMOCK_ARG_(tn, F, 2) gmock_a2, \
+                                 GMOCK_ARG_(tn, F, 3) gmock_a3, \
+                                 GMOCK_ARG_(tn, F, 4) gmock_a4, \
+                                 GMOCK_ARG_(tn, F, 5) gmock_a5, \
+                                 GMOCK_ARG_(tn, F, 6) gmock_a6) constness { \
+    GTEST_COMPILE_ASSERT_(::std::tr1::tuple_size< \
+        tn ::testing::internal::Function<F>::ArgumentTuple>::value == 6, \
+        this_method_does_not_take_6_arguments); \
+    GMOCK_MOCKER_(6, constness, Method).SetOwnerAndName(this, #Method); \
+    return GMOCK_MOCKER_(6, constness, Method).Invoke(gmock_a1, gmock_a2, \
+        gmock_a3, gmock_a4, gmock_a5, gmock_a6); \
+  } \
+  ::testing::MockSpec<F>& \
+      gmock_##Method(GMOCK_MATCHER_(tn, F, 1) gmock_a1, \
+                     GMOCK_MATCHER_(tn, F, 2) gmock_a2, \
+                     GMOCK_MATCHER_(tn, F, 3) gmock_a3, \
+                     GMOCK_MATCHER_(tn, F, 4) gmock_a4, \
+                     GMOCK_MATCHER_(tn, F, 5) gmock_a5, \
+                     GMOCK_MATCHER_(tn, F, 6) gmock_a6) constness { \
+    GMOCK_MOCKER_(6, constness, Method).RegisterOwner(this); \
+    return GMOCK_MOCKER_(6, constness, Method).With(gmock_a1, gmock_a2, \
+        gmock_a3, gmock_a4, gmock_a5, gmock_a6); \
+  } \
+  mutable ::testing::FunctionMocker<F> GMOCK_MOCKER_(6, constness, Method)
+
+// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
+#define GMOCK_METHOD7_(tn, constness, ct, Method, F) \
+  GMOCK_RESULT_(tn, F) ct Method(GMOCK_ARG_(tn, F, 1) gmock_a1, \
+                                 GMOCK_ARG_(tn, F, 2) gmock_a2, \
+                                 GMOCK_ARG_(tn, F, 3) gmock_a3, \
+                                 GMOCK_ARG_(tn, F, 4) gmock_a4, \
+                                 GMOCK_ARG_(tn, F, 5) gmock_a5, \
+                                 GMOCK_ARG_(tn, F, 6) gmock_a6, \
+                                 GMOCK_ARG_(tn, F, 7) gmock_a7) constness { \
+    GTEST_COMPILE_ASSERT_(::std::tr1::tuple_size< \
+        tn ::testing::internal::Function<F>::ArgumentTuple>::value == 7, \
+        this_method_does_not_take_7_arguments); \
+    GMOCK_MOCKER_(7, constness, Method).SetOwnerAndName(this, #Method); \
+    return GMOCK_MOCKER_(7, constness, Method).Invoke(gmock_a1, gmock_a2, \
+        gmock_a3, gmock_a4, gmock_a5, gmock_a6, gmock_a7); \
+  } \
+  ::testing::MockSpec<F>& \
+      gmock_##Method(GMOCK_MATCHER_(tn, F, 1) gmock_a1, \
+                     GMOCK_MATCHER_(tn, F, 2) gmock_a2, \
+                     GMOCK_MATCHER_(tn, F, 3) gmock_a3, \
+                     GMOCK_MATCHER_(tn, F, 4) gmock_a4, \
+                     GMOCK_MATCHER_(tn, F, 5) gmock_a5, \
+                     GMOCK_MATCHER_(tn, F, 6) gmock_a6, \
+                     GMOCK_MATCHER_(tn, F, 7) gmock_a7) constness { \
+    GMOCK_MOCKER_(7, constness, Method).RegisterOwner(this); \
+    return GMOCK_MOCKER_(7, constness, Method).With(gmock_a1, gmock_a2, \
+        gmock_a3, gmock_a4, gmock_a5, gmock_a6, gmock_a7); \
+  } \
+  mutable ::testing::FunctionMocker<F> GMOCK_MOCKER_(7, constness, Method)
+
+// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
+#define GMOCK_METHOD8_(tn, constness, ct, Method, F) \
+  GMOCK_RESULT_(tn, F) ct Method(GMOCK_ARG_(tn, F, 1) gmock_a1, \
+                                 GMOCK_ARG_(tn, F, 2) gmock_a2, \
+                                 GMOCK_ARG_(tn, F, 3) gmock_a3, \
+                                 GMOCK_ARG_(tn, F, 4) gmock_a4, \
+                                 GMOCK_ARG_(tn, F, 5) gmock_a5, \
+                                 GMOCK_ARG_(tn, F, 6) gmock_a6, \
+                                 GMOCK_ARG_(tn, F, 7) gmock_a7, \
+                                 GMOCK_ARG_(tn, F, 8) gmock_a8) constness { \
+    GTEST_COMPILE_ASSERT_(::std::tr1::tuple_size< \
+        tn ::testing::internal::Function<F>::ArgumentTuple>::value == 8, \
+        this_method_does_not_take_8_arguments); \
+    GMOCK_MOCKER_(8, constness, Method).SetOwnerAndName(this, #Method); \
+    return GMOCK_MOCKER_(8, constness, Method).Invoke(gmock_a1, gmock_a2, \
+        gmock_a3, gmock_a4, gmock_a5, gmock_a6, gmock_a7, gmock_a8); \
+  } \
+  ::testing::MockSpec<F>& \
+      gmock_##Method(GMOCK_MATCHER_(tn, F, 1) gmock_a1, \
+                     GMOCK_MATCHER_(tn, F, 2) gmock_a2, \
+                     GMOCK_MATCHER_(tn, F, 3) gmock_a3, \
+                     GMOCK_MATCHER_(tn, F, 4) gmock_a4, \
+                     GMOCK_MATCHER_(tn, F, 5) gmock_a5, \
+                     GMOCK_MATCHER_(tn, F, 6) gmock_a6, \
+                     GMOCK_MATCHER_(tn, F, 7) gmock_a7, \
+                     GMOCK_MATCHER_(tn, F, 8) gmock_a8) constness { \
+    GMOCK_MOCKER_(8, constness, Method).RegisterOwner(this); \
+    return GMOCK_MOCKER_(8, constness, Method).With(gmock_a1, gmock_a2, \
+        gmock_a3, gmock_a4, gmock_a5, gmock_a6, gmock_a7, gmock_a8); \
+  } \
+  mutable ::testing::FunctionMocker<F> GMOCK_MOCKER_(8, constness, Method)
+
+// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
+#define GMOCK_METHOD9_(tn, constness, ct, Method, F) \
+  GMOCK_RESULT_(tn, F) ct Method(GMOCK_ARG_(tn, F, 1) gmock_a1, \
+                                 GMOCK_ARG_(tn, F, 2) gmock_a2, \
+                                 GMOCK_ARG_(tn, F, 3) gmock_a3, \
+                                 GMOCK_ARG_(tn, F, 4) gmock_a4, \
+                                 GMOCK_ARG_(tn, F, 5) gmock_a5, \
+                                 GMOCK_ARG_(tn, F, 6) gmock_a6, \
+                                 GMOCK_ARG_(tn, F, 7) gmock_a7, \
+                                 GMOCK_ARG_(tn, F, 8) gmock_a8, \
+                                 GMOCK_ARG_(tn, F, 9) gmock_a9) constness { \
+    GTEST_COMPILE_ASSERT_(::std::tr1::tuple_size< \
+        tn ::testing::internal::Function<F>::ArgumentTuple>::value == 9, \
+        this_method_does_not_take_9_arguments); \
+    GMOCK_MOCKER_(9, constness, Method).SetOwnerAndName(this, #Method); \
+    return GMOCK_MOCKER_(9, constness, Method).Invoke(gmock_a1, gmock_a2, \
+        gmock_a3, gmock_a4, gmock_a5, gmock_a6, gmock_a7, gmock_a8, \
+        gmock_a9); \
+  } \
+  ::testing::MockSpec<F>& \
+      gmock_##Method(GMOCK_MATCHER_(tn, F, 1) gmock_a1, \
+                     GMOCK_MATCHER_(tn, F, 2) gmock_a2, \
+                     GMOCK_MATCHER_(tn, F, 3) gmock_a3, \
+                     GMOCK_MATCHER_(tn, F, 4) gmock_a4, \
+                     GMOCK_MATCHER_(tn, F, 5) gmock_a5, \
+                     GMOCK_MATCHER_(tn, F, 6) gmock_a6, \
+                     GMOCK_MATCHER_(tn, F, 7) gmock_a7, \
+                     GMOCK_MATCHER_(tn, F, 8) gmock_a8, \
+                     GMOCK_MATCHER_(tn, F, 9) gmock_a9) constness { \
+    GMOCK_MOCKER_(9, constness, Method).RegisterOwner(this); \
+    return GMOCK_MOCKER_(9, constness, Method).With(gmock_a1, gmock_a2, \
+        gmock_a3, gmock_a4, gmock_a5, gmock_a6, gmock_a7, gmock_a8, \
+        gmock_a9); \
+  } \
+  mutable ::testing::FunctionMocker<F> GMOCK_MOCKER_(9, constness, Method)
+
+// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
+#define GMOCK_METHOD10_(tn, constness, ct, Method, F) \
+  GMOCK_RESULT_(tn, F) ct Method(GMOCK_ARG_(tn, F, 1) gmock_a1, \
+                                 GMOCK_ARG_(tn, F, 2) gmock_a2, \
+                                 GMOCK_ARG_(tn, F, 3) gmock_a3, \
+                                 GMOCK_ARG_(tn, F, 4) gmock_a4, \
+                                 GMOCK_ARG_(tn, F, 5) gmock_a5, \
+                                 GMOCK_ARG_(tn, F, 6) gmock_a6, \
+                                 GMOCK_ARG_(tn, F, 7) gmock_a7, \
+                                 GMOCK_ARG_(tn, F, 8) gmock_a8, \
+                                 GMOCK_ARG_(tn, F, 9) gmock_a9, \
+                                 GMOCK_ARG_(tn, F, 10) gmock_a10) constness { \
+    GTEST_COMPILE_ASSERT_(::std::tr1::tuple_size< \
+        tn ::testing::internal::Function<F>::ArgumentTuple>::value == 10, \
+        this_method_does_not_take_10_arguments); \
+    GMOCK_MOCKER_(10, constness, Method).SetOwnerAndName(this, #Method); \
+    return GMOCK_MOCKER_(10, constness, Method).Invoke(gmock_a1, gmock_a2, \
+        gmock_a3, gmock_a4, gmock_a5, gmock_a6, gmock_a7, gmock_a8, gmock_a9, \
+        gmock_a10); \
+  } \
+  ::testing::MockSpec<F>& \
+      gmock_##Method(GMOCK_MATCHER_(tn, F, 1) gmock_a1, \
+                     GMOCK_MATCHER_(tn, F, 2) gmock_a2, \
+                     GMOCK_MATCHER_(tn, F, 3) gmock_a3, \
+                     GMOCK_MATCHER_(tn, F, 4) gmock_a4, \
+                     GMOCK_MATCHER_(tn, F, 5) gmock_a5, \
+                     GMOCK_MATCHER_(tn, F, 6) gmock_a6, \
+                     GMOCK_MATCHER_(tn, F, 7) gmock_a7, \
+                     GMOCK_MATCHER_(tn, F, 8) gmock_a8, \
+                     GMOCK_MATCHER_(tn, F, 9) gmock_a9, \
+                     GMOCK_MATCHER_(tn, F, 10) gmock_a10) constness { \
+    GMOCK_MOCKER_(10, constness, Method).RegisterOwner(this); \
+    return GMOCK_MOCKER_(10, constness, Method).With(gmock_a1, gmock_a2, \
+        gmock_a3, gmock_a4, gmock_a5, gmock_a6, gmock_a7, gmock_a8, gmock_a9, \
+        gmock_a10); \
+  } \
+  mutable ::testing::FunctionMocker<F> GMOCK_MOCKER_(10, constness, Method)
+
+#define MOCK_METHOD0(m, F) GMOCK_METHOD0_(, , , m, F)
+#define MOCK_METHOD1(m, F) GMOCK_METHOD1_(, , , m, F)
+#define MOCK_METHOD2(m, F) GMOCK_METHOD2_(, , , m, F)
+#define MOCK_METHOD3(m, F) GMOCK_METHOD3_(, , , m, F)
+#define MOCK_METHOD4(m, F) GMOCK_METHOD4_(, , , m, F)
+#define MOCK_METHOD5(m, F) GMOCK_METHOD5_(, , , m, F)
+#define MOCK_METHOD6(m, F) GMOCK_METHOD6_(, , , m, F)
+#define MOCK_METHOD7(m, F) GMOCK_METHOD7_(, , , m, F)
+#define MOCK_METHOD8(m, F) GMOCK_METHOD8_(, , , m, F)
+#define MOCK_METHOD9(m, F) GMOCK_METHOD9_(, , , m, F)
+#define MOCK_METHOD10(m, F) GMOCK_METHOD10_(, , , m, F)
+
+#define MOCK_CONST_METHOD0(m, F) GMOCK_METHOD0_(, const, , m, F)
+#define MOCK_CONST_METHOD1(m, F) GMOCK_METHOD1_(, const, , m, F)
+#define MOCK_CONST_METHOD2(m, F) GMOCK_METHOD2_(, const, , m, F)
+#define MOCK_CONST_METHOD3(m, F) GMOCK_METHOD3_(, const, , m, F)
+#define MOCK_CONST_METHOD4(m, F) GMOCK_METHOD4_(, const, , m, F)
+#define MOCK_CONST_METHOD5(m, F) GMOCK_METHOD5_(, const, , m, F)
+#define MOCK_CONST_METHOD6(m, F) GMOCK_METHOD6_(, const, , m, F)
+#define MOCK_CONST_METHOD7(m, F) GMOCK_METHOD7_(, const, , m, F)
+#define MOCK_CONST_METHOD8(m, F) GMOCK_METHOD8_(, const, , m, F)
+#define MOCK_CONST_METHOD9(m, F) GMOCK_METHOD9_(, const, , m, F)
+#define MOCK_CONST_METHOD10(m, F) GMOCK_METHOD10_(, const, , m, F)
+
+#define MOCK_METHOD0_T(m, F) GMOCK_METHOD0_(typename, , , m, F)
+#define MOCK_METHOD1_T(m, F) GMOCK_METHOD1_(typename, , , m, F)
+#define MOCK_METHOD2_T(m, F) GMOCK_METHOD2_(typename, , , m, F)
+#define MOCK_METHOD3_T(m, F) GMOCK_METHOD3_(typename, , , m, F)
+#define MOCK_METHOD4_T(m, F) GMOCK_METHOD4_(typename, , , m, F)
+#define MOCK_METHOD5_T(m, F) GMOCK_METHOD5_(typename, , , m, F)
+#define MOCK_METHOD6_T(m, F) GMOCK_METHOD6_(typename, , , m, F)
+#define MOCK_METHOD7_T(m, F) GMOCK_METHOD7_(typename, , , m, F)
+#define MOCK_METHOD8_T(m, F) GMOCK_METHOD8_(typename, , , m, F)
+#define MOCK_METHOD9_T(m, F) GMOCK_METHOD9_(typename, , , m, F)
+#define MOCK_METHOD10_T(m, F) GMOCK_METHOD10_(typename, , , m, F)
+
+#define MOCK_CONST_METHOD0_T(m, F) GMOCK_METHOD0_(typename, const, , m, F)
+#define MOCK_CONST_METHOD1_T(m, F) GMOCK_METHOD1_(typename, const, , m, F)
+#define MOCK_CONST_METHOD2_T(m, F) GMOCK_METHOD2_(typename, const, , m, F)
+#define MOCK_CONST_METHOD3_T(m, F) GMOCK_METHOD3_(typename, const, , m, F)
+#define MOCK_CONST_METHOD4_T(m, F) GMOCK_METHOD4_(typename, const, , m, F)
+#define MOCK_CONST_METHOD5_T(m, F) GMOCK_METHOD5_(typename, const, , m, F)
+#define MOCK_CONST_METHOD6_T(m, F) GMOCK_METHOD6_(typename, const, , m, F)
+#define MOCK_CONST_METHOD7_T(m, F) GMOCK_METHOD7_(typename, const, , m, F)
+#define MOCK_CONST_METHOD8_T(m, F) GMOCK_METHOD8_(typename, const, , m, F)
+#define MOCK_CONST_METHOD9_T(m, F) GMOCK_METHOD9_(typename, const, , m, F)
+#define MOCK_CONST_METHOD10_T(m, F) GMOCK_METHOD10_(typename, const, , m, F)
+
+#define MOCK_METHOD0_WITH_CALLTYPE(ct, m, F) GMOCK_METHOD0_(, , ct, m, F)
+#define MOCK_METHOD1_WITH_CALLTYPE(ct, m, F) GMOCK_METHOD1_(, , ct, m, F)
+#define MOCK_METHOD2_WITH_CALLTYPE(ct, m, F) GMOCK_METHOD2_(, , ct, m, F)
+#define MOCK_METHOD3_WITH_CALLTYPE(ct, m, F) GMOCK_METHOD3_(, , ct, m, F)
+#define MOCK_METHOD4_WITH_CALLTYPE(ct, m, F) GMOCK_METHOD4_(, , ct, m, F)
+#define MOCK_METHOD5_WITH_CALLTYPE(ct, m, F) GMOCK_METHOD5_(, , ct, m, F)
+#define MOCK_METHOD6_WITH_CALLTYPE(ct, m, F) GMOCK_METHOD6_(, , ct, m, F)
+#define MOCK_METHOD7_WITH_CALLTYPE(ct, m, F) GMOCK_METHOD7_(, , ct, m, F)
+#define MOCK_METHOD8_WITH_CALLTYPE(ct, m, F) GMOCK_METHOD8_(, , ct, m, F)
+#define MOCK_METHOD9_WITH_CALLTYPE(ct, m, F) GMOCK_METHOD9_(, , ct, m, F)
+#define MOCK_METHOD10_WITH_CALLTYPE(ct, m, F) GMOCK_METHOD10_(, , ct, m, F)
+
+#define MOCK_CONST_METHOD0_WITH_CALLTYPE(ct, m, F) \
+    GMOCK_METHOD0_(, const, ct, m, F)
+#define MOCK_CONST_METHOD1_WITH_CALLTYPE(ct, m, F) \
+    GMOCK_METHOD1_(, const, ct, m, F)
+#define MOCK_CONST_METHOD2_WITH_CALLTYPE(ct, m, F) \
+    GMOCK_METHOD2_(, const, ct, m, F)
+#define MOCK_CONST_METHOD3_WITH_CALLTYPE(ct, m, F) \
+    GMOCK_METHOD3_(, const, ct, m, F)
+#define MOCK_CONST_METHOD4_WITH_CALLTYPE(ct, m, F) \
+    GMOCK_METHOD4_(, const, ct, m, F)
+#define MOCK_CONST_METHOD5_WITH_CALLTYPE(ct, m, F) \
+    GMOCK_METHOD5_(, const, ct, m, F)
+#define MOCK_CONST_METHOD6_WITH_CALLTYPE(ct, m, F) \
+    GMOCK_METHOD6_(, const, ct, m, F)
+#define MOCK_CONST_METHOD7_WITH_CALLTYPE(ct, m, F) \
+    GMOCK_METHOD7_(, const, ct, m, F)
+#define MOCK_CONST_METHOD8_WITH_CALLTYPE(ct, m, F) \
+    GMOCK_METHOD8_(, const, ct, m, F)
+#define MOCK_CONST_METHOD9_WITH_CALLTYPE(ct, m, F) \
+    GMOCK_METHOD9_(, const, ct, m, F)
+#define MOCK_CONST_METHOD10_WITH_CALLTYPE(ct, m, F) \
+    GMOCK_METHOD10_(, const, ct, m, F)
+
+#define MOCK_METHOD0_T_WITH_CALLTYPE(ct, m, F) \
+    GMOCK_METHOD0_(typename, , ct, m, F)
+#define MOCK_METHOD1_T_WITH_CALLTYPE(ct, m, F) \
+    GMOCK_METHOD1_(typename, , ct, m, F)
+#define MOCK_METHOD2_T_WITH_CALLTYPE(ct, m, F) \
+    GMOCK_METHOD2_(typename, , ct, m, F)
+#define MOCK_METHOD3_T_WITH_CALLTYPE(ct, m, F) \
+    GMOCK_METHOD3_(typename, , ct, m, F)
+#define MOCK_METHOD4_T_WITH_CALLTYPE(ct, m, F) \
+    GMOCK_METHOD4_(typename, , ct, m, F)
+#define MOCK_METHOD5_T_WITH_CALLTYPE(ct, m, F) \
+    GMOCK_METHOD5_(typename, , ct, m, F)
+#define MOCK_METHOD6_T_WITH_CALLTYPE(ct, m, F) \
+    GMOCK_METHOD6_(typename, , ct, m, F)
+#define MOCK_METHOD7_T_WITH_CALLTYPE(ct, m, F) \
+    GMOCK_METHOD7_(typename, , ct, m, F)
+#define MOCK_METHOD8_T_WITH_CALLTYPE(ct, m, F) \
+    GMOCK_METHOD8_(typename, , ct, m, F)
+#define MOCK_METHOD9_T_WITH_CALLTYPE(ct, m, F) \
+    GMOCK_METHOD9_(typename, , ct, m, F)
+#define MOCK_METHOD10_T_WITH_CALLTYPE(ct, m, F) \
+    GMOCK_METHOD10_(typename, , ct, m, F)
+
+#define MOCK_CONST_METHOD0_T_WITH_CALLTYPE(ct, m, F) \
+    GMOCK_METHOD0_(typename, const, ct, m, F)
+#define MOCK_CONST_METHOD1_T_WITH_CALLTYPE(ct, m, F) \
+    GMOCK_METHOD1_(typename, const, ct, m, F)
+#define MOCK_CONST_METHOD2_T_WITH_CALLTYPE(ct, m, F) \
+    GMOCK_METHOD2_(typename, const, ct, m, F)
+#define MOCK_CONST_METHOD3_T_WITH_CALLTYPE(ct, m, F) \
+    GMOCK_METHOD3_(typename, const, ct, m, F)
+#define MOCK_CONST_METHOD4_T_WITH_CALLTYPE(ct, m, F) \
+    GMOCK_METHOD4_(typename, const, ct, m, F)
+#define MOCK_CONST_METHOD5_T_WITH_CALLTYPE(ct, m, F) \
+    GMOCK_METHOD5_(typename, const, ct, m, F)
+#define MOCK_CONST_METHOD6_T_WITH_CALLTYPE(ct, m, F) \
+    GMOCK_METHOD6_(typename, const, ct, m, F)
+#define MOCK_CONST_METHOD7_T_WITH_CALLTYPE(ct, m, F) \
+    GMOCK_METHOD7_(typename, const, ct, m, F)
+#define MOCK_CONST_METHOD8_T_WITH_CALLTYPE(ct, m, F) \
+    GMOCK_METHOD8_(typename, const, ct, m, F)
+#define MOCK_CONST_METHOD9_T_WITH_CALLTYPE(ct, m, F) \
+    GMOCK_METHOD9_(typename, const, ct, m, F)
+#define MOCK_CONST_METHOD10_T_WITH_CALLTYPE(ct, m, F) \
+    GMOCK_METHOD10_(typename, const, ct, m, F)
+
+// A MockFunction<F> class has one mock method whose type is F.  It is
+// useful when you just want your test code to emit some messages and
+// have Google Mock verify the right messages are sent (and perhaps at
+// the right times).  For example, if you are exercising code:
+//
+//   Foo(1);
+//   Foo(2);
+//   Foo(3);
+//
+// and want to verify that Foo(1) and Foo(3) both invoke
+// mock.Bar("a"), but Foo(2) doesn't invoke anything, you can write:
+//
+// TEST(FooTest, InvokesBarCorrectly) {
+//   MyMock mock;
+//   MockFunction<void(string check_point_name)> check;
+//   {
+//     InSequence s;
+//
+//     EXPECT_CALL(mock, Bar("a"));
+//     EXPECT_CALL(check, Call("1"));
+//     EXPECT_CALL(check, Call("2"));
+//     EXPECT_CALL(mock, Bar("a"));
+//   }
+//   Foo(1);
+//   check.Call("1");
+//   Foo(2);
+//   check.Call("2");
+//   Foo(3);
+// }
+//
+// The expectation spec says that the first Bar("a") must happen
+// before check point "1", the second Bar("a") must happen after check
+// point "2", and nothing should happen between the two check
+// points. The explicit check points make it easy to tell which
+// Bar("a") is called by which call to Foo().
+template <typename F>
+class MockFunction;
+
+template <typename R>
+class MockFunction<R()> {
+ public:
+  MockFunction() {}
+
+  MOCK_METHOD0_T(Call, R());
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(MockFunction);
+};
+
+template <typename R, typename A0>
+class MockFunction<R(A0)> {
+ public:
+  MockFunction() {}
+
+  MOCK_METHOD1_T(Call, R(A0));
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(MockFunction);
+};
+
+template <typename R, typename A0, typename A1>
+class MockFunction<R(A0, A1)> {
+ public:
+  MockFunction() {}
+
+  MOCK_METHOD2_T(Call, R(A0, A1));
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(MockFunction);
+};
+
+template <typename R, typename A0, typename A1, typename A2>
+class MockFunction<R(A0, A1, A2)> {
+ public:
+  MockFunction() {}
+
+  MOCK_METHOD3_T(Call, R(A0, A1, A2));
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(MockFunction);
+};
+
+template <typename R, typename A0, typename A1, typename A2, typename A3>
+class MockFunction<R(A0, A1, A2, A3)> {
+ public:
+  MockFunction() {}
+
+  MOCK_METHOD4_T(Call, R(A0, A1, A2, A3));
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(MockFunction);
+};
+
+template <typename R, typename A0, typename A1, typename A2, typename A3,
+    typename A4>
+class MockFunction<R(A0, A1, A2, A3, A4)> {
+ public:
+  MockFunction() {}
+
+  MOCK_METHOD5_T(Call, R(A0, A1, A2, A3, A4));
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(MockFunction);
+};
+
+template <typename R, typename A0, typename A1, typename A2, typename A3,
+    typename A4, typename A5>
+class MockFunction<R(A0, A1, A2, A3, A4, A5)> {
+ public:
+  MockFunction() {}
+
+  MOCK_METHOD6_T(Call, R(A0, A1, A2, A3, A4, A5));
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(MockFunction);
+};
+
+template <typename R, typename A0, typename A1, typename A2, typename A3,
+    typename A4, typename A5, typename A6>
+class MockFunction<R(A0, A1, A2, A3, A4, A5, A6)> {
+ public:
+  MockFunction() {}
+
+  MOCK_METHOD7_T(Call, R(A0, A1, A2, A3, A4, A5, A6));
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(MockFunction);
+};
+
+template <typename R, typename A0, typename A1, typename A2, typename A3,
+    typename A4, typename A5, typename A6, typename A7>
+class MockFunction<R(A0, A1, A2, A3, A4, A5, A6, A7)> {
+ public:
+  MockFunction() {}
+
+  MOCK_METHOD8_T(Call, R(A0, A1, A2, A3, A4, A5, A6, A7));
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(MockFunction);
+};
+
+template <typename R, typename A0, typename A1, typename A2, typename A3,
+    typename A4, typename A5, typename A6, typename A7, typename A8>
+class MockFunction<R(A0, A1, A2, A3, A4, A5, A6, A7, A8)> {
+ public:
+  MockFunction() {}
+
+  MOCK_METHOD9_T(Call, R(A0, A1, A2, A3, A4, A5, A6, A7, A8));
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(MockFunction);
+};
+
+template <typename R, typename A0, typename A1, typename A2, typename A3,
+    typename A4, typename A5, typename A6, typename A7, typename A8,
+    typename A9>
+class MockFunction<R(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9)> {
+ public:
+  MockFunction() {}
+
+  MOCK_METHOD10_T(Call, R(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9));
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(MockFunction);
+};
+
+}  // namespace testing
+
+#endif  // GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_FUNCTION_MOCKERS_H_
diff --git a/google-breakpad/src/testing/include/gmock/gmock-generated-function-mockers.h.pump b/google-breakpad/src/testing/include/gmock/gmock-generated-function-mockers.h.pump
new file mode 100644
index 0000000..4f82d62
--- /dev/null
+++ b/google-breakpad/src/testing/include/gmock/gmock-generated-function-mockers.h.pump
@@ -0,0 +1,258 @@
+$$ -*- mode: c++; -*-
+$$ This is a Pump source file.  Please use Pump to convert it to
+$$ gmock-generated-function-mockers.h.
+$$
+$var n = 10  $$ The maximum arity we support.
+// Copyright 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Google Mock - a framework for writing C++ mock classes.
+//
+// This file implements function mockers of various arities.
+
+#ifndef GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_FUNCTION_MOCKERS_H_
+#define GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_FUNCTION_MOCKERS_H_
+
+#include "gmock/gmock-spec-builders.h"
+#include "gmock/internal/gmock-internal-utils.h"
+
+namespace testing {
+namespace internal {
+
+template <typename F>
+class FunctionMockerBase;
+
+// Note: class FunctionMocker really belongs to the ::testing
+// namespace.  However if we define it in ::testing, MSVC will
+// complain when classes in ::testing::internal declare it as a
+// friend class template.  To workaround this compiler bug, we define
+// FunctionMocker in ::testing::internal and import it into ::testing.
+template <typename F>
+class FunctionMocker;
+
+
+$range i 0..n
+$for i [[
+$range j 1..i
+$var typename_As = [[$for j [[, typename A$j]]]]
+$var As = [[$for j, [[A$j]]]]
+$var as = [[$for j, [[a$j]]]]
+$var Aas = [[$for j, [[A$j a$j]]]]
+$var ms = [[$for j, [[m$j]]]]
+$var matchers = [[$for j, [[const Matcher<A$j>& m$j]]]]
+template <typename R$typename_As>
+class FunctionMocker<R($As)> : public
+    internal::FunctionMockerBase<R($As)> {
+ public:
+  typedef R F($As);
+  typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
+
+  MockSpec<F>& With($matchers) {
+
+$if i >= 1 [[
+    this->current_spec().SetMatchers(::std::tr1::make_tuple($ms));
+
+]]
+    return this->current_spec();
+  }
+
+  R Invoke($Aas) {
+    // Even though gcc and MSVC don't enforce it, 'this->' is required
+    // by the C++ standard [14.6.4] here, as the base class type is
+    // dependent on the template argument (and thus shouldn't be
+    // looked into when resolving InvokeWith).
+    return this->InvokeWith(ArgumentTuple($as));
+  }
+};
+
+
+]]
+}  // namespace internal
+
+// The style guide prohibits "using" statements in a namespace scope
+// inside a header file.  However, the FunctionMocker class template
+// is meant to be defined in the ::testing namespace.  The following
+// line is just a trick for working around a bug in MSVC 8.0, which
+// cannot handle it if we define FunctionMocker in ::testing.
+using internal::FunctionMocker;
+
+// The result type of function type F.
+// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
+#define GMOCK_RESULT_(tn, F) tn ::testing::internal::Function<F>::Result
+
+// The type of argument N of function type F.
+// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
+#define GMOCK_ARG_(tn, F, N) tn ::testing::internal::Function<F>::Argument##N
+
+// The matcher type for argument N of function type F.
+// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
+#define GMOCK_MATCHER_(tn, F, N) const ::testing::Matcher<GMOCK_ARG_(tn, F, N)>&
+
+// The variable for mocking the given method.
+// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
+#define GMOCK_MOCKER_(arity, constness, Method) \
+    GTEST_CONCAT_TOKEN_(gmock##constness##arity##_##Method##_, __LINE__)
+
+
+$for i [[
+$range j 1..i
+$var arg_as = [[$for j, \
+                                 [[GMOCK_ARG_(tn, F, $j) gmock_a$j]]]]
+$var as = [[$for j, [[gmock_a$j]]]]
+$var matcher_as = [[$for j, \
+                     [[GMOCK_MATCHER_(tn, F, $j) gmock_a$j]]]]
+// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
+#define GMOCK_METHOD$i[[]]_(tn, constness, ct, Method, F) \
+  GMOCK_RESULT_(tn, F) ct Method($arg_as) constness { \
+    GTEST_COMPILE_ASSERT_(::std::tr1::tuple_size< \
+        tn ::testing::internal::Function<F>::ArgumentTuple>::value == $i, \
+        this_method_does_not_take_$i[[]]_argument[[$if i != 1 [[s]]]]); \
+    GMOCK_MOCKER_($i, constness, Method).SetOwnerAndName(this, #Method); \
+    return GMOCK_MOCKER_($i, constness, Method).Invoke($as); \
+  } \
+  ::testing::MockSpec<F>& \
+      gmock_##Method($matcher_as) constness { \
+    GMOCK_MOCKER_($i, constness, Method).RegisterOwner(this); \
+    return GMOCK_MOCKER_($i, constness, Method).With($as); \
+  } \
+  mutable ::testing::FunctionMocker<F> GMOCK_MOCKER_($i, constness, Method)
+
+
+]]
+$for i [[
+#define MOCK_METHOD$i(m, F) GMOCK_METHOD$i[[]]_(, , , m, F)
+
+]]
+
+
+$for i [[
+#define MOCK_CONST_METHOD$i(m, F) GMOCK_METHOD$i[[]]_(, const, , m, F)
+
+]]
+
+
+$for i [[
+#define MOCK_METHOD$i[[]]_T(m, F) GMOCK_METHOD$i[[]]_(typename, , , m, F)
+
+]]
+
+
+$for i [[
+#define MOCK_CONST_METHOD$i[[]]_T(m, F) [[]]
+GMOCK_METHOD$i[[]]_(typename, const, , m, F)
+
+]]
+
+
+$for i [[
+#define MOCK_METHOD$i[[]]_WITH_CALLTYPE(ct, m, F) [[]]
+GMOCK_METHOD$i[[]]_(, , ct, m, F)
+
+]]
+
+
+$for i [[
+#define MOCK_CONST_METHOD$i[[]]_WITH_CALLTYPE(ct, m, F) \
+    GMOCK_METHOD$i[[]]_(, const, ct, m, F)
+
+]]
+
+
+$for i [[
+#define MOCK_METHOD$i[[]]_T_WITH_CALLTYPE(ct, m, F) \
+    GMOCK_METHOD$i[[]]_(typename, , ct, m, F)
+
+]]
+
+
+$for i [[
+#define MOCK_CONST_METHOD$i[[]]_T_WITH_CALLTYPE(ct, m, F) \
+    GMOCK_METHOD$i[[]]_(typename, const, ct, m, F)
+
+]]
+
+// A MockFunction<F> class has one mock method whose type is F.  It is
+// useful when you just want your test code to emit some messages and
+// have Google Mock verify the right messages are sent (and perhaps at
+// the right times).  For example, if you are exercising code:
+//
+//   Foo(1);
+//   Foo(2);
+//   Foo(3);
+//
+// and want to verify that Foo(1) and Foo(3) both invoke
+// mock.Bar("a"), but Foo(2) doesn't invoke anything, you can write:
+//
+// TEST(FooTest, InvokesBarCorrectly) {
+//   MyMock mock;
+//   MockFunction<void(string check_point_name)> check;
+//   {
+//     InSequence s;
+//
+//     EXPECT_CALL(mock, Bar("a"));
+//     EXPECT_CALL(check, Call("1"));
+//     EXPECT_CALL(check, Call("2"));
+//     EXPECT_CALL(mock, Bar("a"));
+//   }
+//   Foo(1);
+//   check.Call("1");
+//   Foo(2);
+//   check.Call("2");
+//   Foo(3);
+// }
+//
+// The expectation spec says that the first Bar("a") must happen
+// before check point "1", the second Bar("a") must happen after check
+// point "2", and nothing should happen between the two check
+// points. The explicit check points make it easy to tell which
+// Bar("a") is called by which call to Foo().
+template <typename F>
+class MockFunction;
+
+
+$for i [[
+$range j 0..i-1
+template <typename R$for j [[, typename A$j]]>
+class MockFunction<R($for j, [[A$j]])> {
+ public:
+  MockFunction() {}
+
+  MOCK_METHOD$i[[]]_T(Call, R($for j, [[A$j]]));
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(MockFunction);
+};
+
+
+]]
+}  // namespace testing
+
+#endif  // GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_FUNCTION_MOCKERS_H_
diff --git a/google-breakpad/src/testing/include/gmock/gmock-generated-matchers.h b/google-breakpad/src/testing/include/gmock/gmock-generated-matchers.h
new file mode 100644
index 0000000..5527ed3
--- /dev/null
+++ b/google-breakpad/src/testing/include/gmock/gmock-generated-matchers.h
@@ -0,0 +1,2210 @@
+// This file was GENERATED by command:
+//     pump.py gmock-generated-matchers.h.pump
+// DO NOT EDIT BY HAND!!!
+
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Google Mock - a framework for writing C++ mock classes.
+//
+// This file implements some commonly used variadic matchers.
+
+#ifndef GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_MATCHERS_H_
+#define GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_MATCHERS_H_
+
+#include <sstream>
+#include <string>
+#include <vector>
+#include "gmock/gmock-matchers.h"
+
+namespace testing {
+namespace internal {
+
+// The type of the i-th (0-based) field of Tuple.
+#define GMOCK_FIELD_TYPE_(Tuple, i) \
+    typename ::std::tr1::tuple_element<i, Tuple>::type
+
+// TupleFields<Tuple, k0, ..., kn> is for selecting fields from a
+// tuple of type Tuple.  It has two members:
+//
+//   type: a tuple type whose i-th field is the ki-th field of Tuple.
+//   GetSelectedFields(t): returns fields k0, ..., and kn of t as a tuple.
+//
+// For example, in class TupleFields<tuple<bool, char, int>, 2, 0>, we have:
+//
+//   type is tuple<int, bool>, and
+//   GetSelectedFields(make_tuple(true, 'a', 42)) is (42, true).
+
+template <class Tuple, int k0 = -1, int k1 = -1, int k2 = -1, int k3 = -1,
+    int k4 = -1, int k5 = -1, int k6 = -1, int k7 = -1, int k8 = -1,
+    int k9 = -1>
+class TupleFields;
+
+// This generic version is used when there are 10 selectors.
+template <class Tuple, int k0, int k1, int k2, int k3, int k4, int k5, int k6,
+    int k7, int k8, int k9>
+class TupleFields {
+ public:
+  typedef ::std::tr1::tuple<GMOCK_FIELD_TYPE_(Tuple, k0),
+      GMOCK_FIELD_TYPE_(Tuple, k1), GMOCK_FIELD_TYPE_(Tuple, k2),
+      GMOCK_FIELD_TYPE_(Tuple, k3), GMOCK_FIELD_TYPE_(Tuple, k4),
+      GMOCK_FIELD_TYPE_(Tuple, k5), GMOCK_FIELD_TYPE_(Tuple, k6),
+      GMOCK_FIELD_TYPE_(Tuple, k7), GMOCK_FIELD_TYPE_(Tuple, k8),
+      GMOCK_FIELD_TYPE_(Tuple, k9)> type;
+  static type GetSelectedFields(const Tuple& t) {
+    using ::std::tr1::get;
+    return type(get<k0>(t), get<k1>(t), get<k2>(t), get<k3>(t), get<k4>(t),
+        get<k5>(t), get<k6>(t), get<k7>(t), get<k8>(t), get<k9>(t));
+  }
+};
+
+// The following specialization is used for 0 ~ 9 selectors.
+
+template <class Tuple>
+class TupleFields<Tuple, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1> {
+ public:
+  typedef ::std::tr1::tuple<> type;
+  static type GetSelectedFields(const Tuple& /* t */) {
+    using ::std::tr1::get;
+    return type();
+  }
+};
+
+template <class Tuple, int k0>
+class TupleFields<Tuple, k0, -1, -1, -1, -1, -1, -1, -1, -1, -1> {
+ public:
+  typedef ::std::tr1::tuple<GMOCK_FIELD_TYPE_(Tuple, k0)> type;
+  static type GetSelectedFields(const Tuple& t) {
+    using ::std::tr1::get;
+    return type(get<k0>(t));
+  }
+};
+
+template <class Tuple, int k0, int k1>
+class TupleFields<Tuple, k0, k1, -1, -1, -1, -1, -1, -1, -1, -1> {
+ public:
+  typedef ::std::tr1::tuple<GMOCK_FIELD_TYPE_(Tuple, k0),
+      GMOCK_FIELD_TYPE_(Tuple, k1)> type;
+  static type GetSelectedFields(const Tuple& t) {
+    using ::std::tr1::get;
+    return type(get<k0>(t), get<k1>(t));
+  }
+};
+
+template <class Tuple, int k0, int k1, int k2>
+class TupleFields<Tuple, k0, k1, k2, -1, -1, -1, -1, -1, -1, -1> {
+ public:
+  typedef ::std::tr1::tuple<GMOCK_FIELD_TYPE_(Tuple, k0),
+      GMOCK_FIELD_TYPE_(Tuple, k1), GMOCK_FIELD_TYPE_(Tuple, k2)> type;
+  static type GetSelectedFields(const Tuple& t) {
+    using ::std::tr1::get;
+    return type(get<k0>(t), get<k1>(t), get<k2>(t));
+  }
+};
+
+template <class Tuple, int k0, int k1, int k2, int k3>
+class TupleFields<Tuple, k0, k1, k2, k3, -1, -1, -1, -1, -1, -1> {
+ public:
+  typedef ::std::tr1::tuple<GMOCK_FIELD_TYPE_(Tuple, k0),
+      GMOCK_FIELD_TYPE_(Tuple, k1), GMOCK_FIELD_TYPE_(Tuple, k2),
+      GMOCK_FIELD_TYPE_(Tuple, k3)> type;
+  static type GetSelectedFields(const Tuple& t) {
+    using ::std::tr1::get;
+    return type(get<k0>(t), get<k1>(t), get<k2>(t), get<k3>(t));
+  }
+};
+
+template <class Tuple, int k0, int k1, int k2, int k3, int k4>
+class TupleFields<Tuple, k0, k1, k2, k3, k4, -1, -1, -1, -1, -1> {
+ public:
+  typedef ::std::tr1::tuple<GMOCK_FIELD_TYPE_(Tuple, k0),
+      GMOCK_FIELD_TYPE_(Tuple, k1), GMOCK_FIELD_TYPE_(Tuple, k2),
+      GMOCK_FIELD_TYPE_(Tuple, k3), GMOCK_FIELD_TYPE_(Tuple, k4)> type;
+  static type GetSelectedFields(const Tuple& t) {
+    using ::std::tr1::get;
+    return type(get<k0>(t), get<k1>(t), get<k2>(t), get<k3>(t), get<k4>(t));
+  }
+};
+
+template <class Tuple, int k0, int k1, int k2, int k3, int k4, int k5>
+class TupleFields<Tuple, k0, k1, k2, k3, k4, k5, -1, -1, -1, -1> {
+ public:
+  typedef ::std::tr1::tuple<GMOCK_FIELD_TYPE_(Tuple, k0),
+      GMOCK_FIELD_TYPE_(Tuple, k1), GMOCK_FIELD_TYPE_(Tuple, k2),
+      GMOCK_FIELD_TYPE_(Tuple, k3), GMOCK_FIELD_TYPE_(Tuple, k4),
+      GMOCK_FIELD_TYPE_(Tuple, k5)> type;
+  static type GetSelectedFields(const Tuple& t) {
+    using ::std::tr1::get;
+    return type(get<k0>(t), get<k1>(t), get<k2>(t), get<k3>(t), get<k4>(t),
+        get<k5>(t));
+  }
+};
+
+template <class Tuple, int k0, int k1, int k2, int k3, int k4, int k5, int k6>
+class TupleFields<Tuple, k0, k1, k2, k3, k4, k5, k6, -1, -1, -1> {
+ public:
+  typedef ::std::tr1::tuple<GMOCK_FIELD_TYPE_(Tuple, k0),
+      GMOCK_FIELD_TYPE_(Tuple, k1), GMOCK_FIELD_TYPE_(Tuple, k2),
+      GMOCK_FIELD_TYPE_(Tuple, k3), GMOCK_FIELD_TYPE_(Tuple, k4),
+      GMOCK_FIELD_TYPE_(Tuple, k5), GMOCK_FIELD_TYPE_(Tuple, k6)> type;
+  static type GetSelectedFields(const Tuple& t) {
+    using ::std::tr1::get;
+    return type(get<k0>(t), get<k1>(t), get<k2>(t), get<k3>(t), get<k4>(t),
+        get<k5>(t), get<k6>(t));
+  }
+};
+
+template <class Tuple, int k0, int k1, int k2, int k3, int k4, int k5, int k6,
+    int k7>
+class TupleFields<Tuple, k0, k1, k2, k3, k4, k5, k6, k7, -1, -1> {
+ public:
+  typedef ::std::tr1::tuple<GMOCK_FIELD_TYPE_(Tuple, k0),
+      GMOCK_FIELD_TYPE_(Tuple, k1), GMOCK_FIELD_TYPE_(Tuple, k2),
+      GMOCK_FIELD_TYPE_(Tuple, k3), GMOCK_FIELD_TYPE_(Tuple, k4),
+      GMOCK_FIELD_TYPE_(Tuple, k5), GMOCK_FIELD_TYPE_(Tuple, k6),
+      GMOCK_FIELD_TYPE_(Tuple, k7)> type;
+  static type GetSelectedFields(const Tuple& t) {
+    using ::std::tr1::get;
+    return type(get<k0>(t), get<k1>(t), get<k2>(t), get<k3>(t), get<k4>(t),
+        get<k5>(t), get<k6>(t), get<k7>(t));
+  }
+};
+
+template <class Tuple, int k0, int k1, int k2, int k3, int k4, int k5, int k6,
+    int k7, int k8>
+class TupleFields<Tuple, k0, k1, k2, k3, k4, k5, k6, k7, k8, -1> {
+ public:
+  typedef ::std::tr1::tuple<GMOCK_FIELD_TYPE_(Tuple, k0),
+      GMOCK_FIELD_TYPE_(Tuple, k1), GMOCK_FIELD_TYPE_(Tuple, k2),
+      GMOCK_FIELD_TYPE_(Tuple, k3), GMOCK_FIELD_TYPE_(Tuple, k4),
+      GMOCK_FIELD_TYPE_(Tuple, k5), GMOCK_FIELD_TYPE_(Tuple, k6),
+      GMOCK_FIELD_TYPE_(Tuple, k7), GMOCK_FIELD_TYPE_(Tuple, k8)> type;
+  static type GetSelectedFields(const Tuple& t) {
+    using ::std::tr1::get;
+    return type(get<k0>(t), get<k1>(t), get<k2>(t), get<k3>(t), get<k4>(t),
+        get<k5>(t), get<k6>(t), get<k7>(t), get<k8>(t));
+  }
+};
+
+#undef GMOCK_FIELD_TYPE_
+
+// Implements the Args() matcher.
+template <class ArgsTuple, int k0 = -1, int k1 = -1, int k2 = -1, int k3 = -1,
+    int k4 = -1, int k5 = -1, int k6 = -1, int k7 = -1, int k8 = -1,
+    int k9 = -1>
+class ArgsMatcherImpl : public MatcherInterface<ArgsTuple> {
+ public:
+  // ArgsTuple may have top-level const or reference modifiers.
+  typedef GTEST_REMOVE_REFERENCE_AND_CONST_(ArgsTuple) RawArgsTuple;
+  typedef typename internal::TupleFields<RawArgsTuple, k0, k1, k2, k3, k4, k5,
+      k6, k7, k8, k9>::type SelectedArgs;
+  typedef Matcher<const SelectedArgs&> MonomorphicInnerMatcher;
+
+  template <typename InnerMatcher>
+  explicit ArgsMatcherImpl(const InnerMatcher& inner_matcher)
+      : inner_matcher_(SafeMatcherCast<const SelectedArgs&>(inner_matcher)) {}
+
+  virtual bool MatchAndExplain(ArgsTuple args,
+                               MatchResultListener* listener) const {
+    const SelectedArgs& selected_args = GetSelectedArgs(args);
+    if (!listener->IsInterested())
+      return inner_matcher_.Matches(selected_args);
+
+    PrintIndices(listener->stream());
+    *listener << "are " << PrintToString(selected_args);
+
+    StringMatchResultListener inner_listener;
+    const bool match = inner_matcher_.MatchAndExplain(selected_args,
+                                                      &inner_listener);
+    PrintIfNotEmpty(inner_listener.str(), listener->stream());
+    return match;
+  }
+
+  virtual void DescribeTo(::std::ostream* os) const {
+    *os << "are a tuple ";
+    PrintIndices(os);
+    inner_matcher_.DescribeTo(os);
+  }
+
+  virtual void DescribeNegationTo(::std::ostream* os) const {
+    *os << "are a tuple ";
+    PrintIndices(os);
+    inner_matcher_.DescribeNegationTo(os);
+  }
+
+ private:
+  static SelectedArgs GetSelectedArgs(ArgsTuple args) {
+    return TupleFields<RawArgsTuple, k0, k1, k2, k3, k4, k5, k6, k7, k8,
+        k9>::GetSelectedFields(args);
+  }
+
+  // Prints the indices of the selected fields.
+  static void PrintIndices(::std::ostream* os) {
+    *os << "whose fields (";
+    const int indices[10] = { k0, k1, k2, k3, k4, k5, k6, k7, k8, k9 };
+    for (int i = 0; i < 10; i++) {
+      if (indices[i] < 0)
+        break;
+
+      if (i >= 1)
+        *os << ", ";
+
+      *os << "#" << indices[i];
+    }
+    *os << ") ";
+  }
+
+  const MonomorphicInnerMatcher inner_matcher_;
+
+  GTEST_DISALLOW_ASSIGN_(ArgsMatcherImpl);
+};
+
+template <class InnerMatcher, int k0 = -1, int k1 = -1, int k2 = -1,
+    int k3 = -1, int k4 = -1, int k5 = -1, int k6 = -1, int k7 = -1,
+    int k8 = -1, int k9 = -1>
+class ArgsMatcher {
+ public:
+  explicit ArgsMatcher(const InnerMatcher& inner_matcher)
+      : inner_matcher_(inner_matcher) {}
+
+  template <typename ArgsTuple>
+  operator Matcher<ArgsTuple>() const {
+    return MakeMatcher(new ArgsMatcherImpl<ArgsTuple, k0, k1, k2, k3, k4, k5,
+        k6, k7, k8, k9>(inner_matcher_));
+  }
+
+ private:
+  const InnerMatcher inner_matcher_;
+
+  GTEST_DISALLOW_ASSIGN_(ArgsMatcher);
+};
+
+// Implements ElementsAre() of 1-10 arguments.
+
+template <typename T1>
+class ElementsAreMatcher1 {
+ public:
+  explicit ElementsAreMatcher1(const T1& e1) : e1_(e1) {}
+
+  template <typename Container>
+  operator Matcher<Container>() const {
+    typedef GTEST_REMOVE_REFERENCE_AND_CONST_(Container) RawContainer;
+    typedef typename internal::StlContainerView<RawContainer>::type::value_type
+        Element;
+
+    // Nokia's Symbian Compiler has a nasty bug where the object put
+    // in a one-element local array is not destructed when the array
+    // goes out of scope.  This leads to obvious badness as we've
+    // added the linked_ptr in it to our other linked_ptrs list.
+    // Hence we implement ElementsAreMatcher1 specially to avoid using
+    // a local array.
+    const Matcher<const Element&> matcher =
+        MatcherCast<const Element&>(e1_);
+    return MakeMatcher(new ElementsAreMatcherImpl<Container>(&matcher, 1));
+  }
+
+ private:
+  const T1& e1_;
+
+  GTEST_DISALLOW_ASSIGN_(ElementsAreMatcher1);
+};
+
+template <typename T1, typename T2>
+class ElementsAreMatcher2 {
+ public:
+  ElementsAreMatcher2(const T1& e1, const T2& e2) : e1_(e1), e2_(e2) {}
+
+  template <typename Container>
+  operator Matcher<Container>() const {
+    typedef GTEST_REMOVE_REFERENCE_AND_CONST_(Container) RawContainer;
+    typedef typename internal::StlContainerView<RawContainer>::type::value_type
+        Element;
+
+    const Matcher<const Element&> matchers[] = {
+      MatcherCast<const Element&>(e1_),
+      MatcherCast<const Element&>(e2_),
+    };
+
+    return MakeMatcher(new ElementsAreMatcherImpl<Container>(matchers, 2));
+  }
+
+ private:
+  const T1& e1_;
+  const T2& e2_;
+
+  GTEST_DISALLOW_ASSIGN_(ElementsAreMatcher2);
+};
+
+template <typename T1, typename T2, typename T3>
+class ElementsAreMatcher3 {
+ public:
+  ElementsAreMatcher3(const T1& e1, const T2& e2, const T3& e3) : e1_(e1),
+      e2_(e2), e3_(e3) {}
+
+  template <typename Container>
+  operator Matcher<Container>() const {
+    typedef GTEST_REMOVE_REFERENCE_AND_CONST_(Container) RawContainer;
+    typedef typename internal::StlContainerView<RawContainer>::type::value_type
+        Element;
+
+    const Matcher<const Element&> matchers[] = {
+      MatcherCast<const Element&>(e1_),
+      MatcherCast<const Element&>(e2_),
+      MatcherCast<const Element&>(e3_),
+    };
+
+    return MakeMatcher(new ElementsAreMatcherImpl<Container>(matchers, 3));
+  }
+
+ private:
+  const T1& e1_;
+  const T2& e2_;
+  const T3& e3_;
+
+  GTEST_DISALLOW_ASSIGN_(ElementsAreMatcher3);
+};
+
+template <typename T1, typename T2, typename T3, typename T4>
+class ElementsAreMatcher4 {
+ public:
+  ElementsAreMatcher4(const T1& e1, const T2& e2, const T3& e3,
+      const T4& e4) : e1_(e1), e2_(e2), e3_(e3), e4_(e4) {}
+
+  template <typename Container>
+  operator Matcher<Container>() const {
+    typedef GTEST_REMOVE_REFERENCE_AND_CONST_(Container) RawContainer;
+    typedef typename internal::StlContainerView<RawContainer>::type::value_type
+        Element;
+
+    const Matcher<const Element&> matchers[] = {
+      MatcherCast<const Element&>(e1_),
+      MatcherCast<const Element&>(e2_),
+      MatcherCast<const Element&>(e3_),
+      MatcherCast<const Element&>(e4_),
+    };
+
+    return MakeMatcher(new ElementsAreMatcherImpl<Container>(matchers, 4));
+  }
+
+ private:
+  const T1& e1_;
+  const T2& e2_;
+  const T3& e3_;
+  const T4& e4_;
+
+  GTEST_DISALLOW_ASSIGN_(ElementsAreMatcher4);
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5>
+class ElementsAreMatcher5 {
+ public:
+  ElementsAreMatcher5(const T1& e1, const T2& e2, const T3& e3, const T4& e4,
+      const T5& e5) : e1_(e1), e2_(e2), e3_(e3), e4_(e4), e5_(e5) {}
+
+  template <typename Container>
+  operator Matcher<Container>() const {
+    typedef GTEST_REMOVE_REFERENCE_AND_CONST_(Container) RawContainer;
+    typedef typename internal::StlContainerView<RawContainer>::type::value_type
+        Element;
+
+    const Matcher<const Element&> matchers[] = {
+      MatcherCast<const Element&>(e1_),
+      MatcherCast<const Element&>(e2_),
+      MatcherCast<const Element&>(e3_),
+      MatcherCast<const Element&>(e4_),
+      MatcherCast<const Element&>(e5_),
+    };
+
+    return MakeMatcher(new ElementsAreMatcherImpl<Container>(matchers, 5));
+  }
+
+ private:
+  const T1& e1_;
+  const T2& e2_;
+  const T3& e3_;
+  const T4& e4_;
+  const T5& e5_;
+
+  GTEST_DISALLOW_ASSIGN_(ElementsAreMatcher5);
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6>
+class ElementsAreMatcher6 {
+ public:
+  ElementsAreMatcher6(const T1& e1, const T2& e2, const T3& e3, const T4& e4,
+      const T5& e5, const T6& e6) : e1_(e1), e2_(e2), e3_(e3), e4_(e4),
+      e5_(e5), e6_(e6) {}
+
+  template <typename Container>
+  operator Matcher<Container>() const {
+    typedef GTEST_REMOVE_REFERENCE_AND_CONST_(Container) RawContainer;
+    typedef typename internal::StlContainerView<RawContainer>::type::value_type
+        Element;
+
+    const Matcher<const Element&> matchers[] = {
+      MatcherCast<const Element&>(e1_),
+      MatcherCast<const Element&>(e2_),
+      MatcherCast<const Element&>(e3_),
+      MatcherCast<const Element&>(e4_),
+      MatcherCast<const Element&>(e5_),
+      MatcherCast<const Element&>(e6_),
+    };
+
+    return MakeMatcher(new ElementsAreMatcherImpl<Container>(matchers, 6));
+  }
+
+ private:
+  const T1& e1_;
+  const T2& e2_;
+  const T3& e3_;
+  const T4& e4_;
+  const T5& e5_;
+  const T6& e6_;
+
+  GTEST_DISALLOW_ASSIGN_(ElementsAreMatcher6);
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7>
+class ElementsAreMatcher7 {
+ public:
+  ElementsAreMatcher7(const T1& e1, const T2& e2, const T3& e3, const T4& e4,
+      const T5& e5, const T6& e6, const T7& e7) : e1_(e1), e2_(e2), e3_(e3),
+      e4_(e4), e5_(e5), e6_(e6), e7_(e7) {}
+
+  template <typename Container>
+  operator Matcher<Container>() const {
+    typedef GTEST_REMOVE_REFERENCE_AND_CONST_(Container) RawContainer;
+    typedef typename internal::StlContainerView<RawContainer>::type::value_type
+        Element;
+
+    const Matcher<const Element&> matchers[] = {
+      MatcherCast<const Element&>(e1_),
+      MatcherCast<const Element&>(e2_),
+      MatcherCast<const Element&>(e3_),
+      MatcherCast<const Element&>(e4_),
+      MatcherCast<const Element&>(e5_),
+      MatcherCast<const Element&>(e6_),
+      MatcherCast<const Element&>(e7_),
+    };
+
+    return MakeMatcher(new ElementsAreMatcherImpl<Container>(matchers, 7));
+  }
+
+ private:
+  const T1& e1_;
+  const T2& e2_;
+  const T3& e3_;
+  const T4& e4_;
+  const T5& e5_;
+  const T6& e6_;
+  const T7& e7_;
+
+  GTEST_DISALLOW_ASSIGN_(ElementsAreMatcher7);
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8>
+class ElementsAreMatcher8 {
+ public:
+  ElementsAreMatcher8(const T1& e1, const T2& e2, const T3& e3, const T4& e4,
+      const T5& e5, const T6& e6, const T7& e7, const T8& e8) : e1_(e1),
+      e2_(e2), e3_(e3), e4_(e4), e5_(e5), e6_(e6), e7_(e7), e8_(e8) {}
+
+  template <typename Container>
+  operator Matcher<Container>() const {
+    typedef GTEST_REMOVE_REFERENCE_AND_CONST_(Container) RawContainer;
+    typedef typename internal::StlContainerView<RawContainer>::type::value_type
+        Element;
+
+    const Matcher<const Element&> matchers[] = {
+      MatcherCast<const Element&>(e1_),
+      MatcherCast<const Element&>(e2_),
+      MatcherCast<const Element&>(e3_),
+      MatcherCast<const Element&>(e4_),
+      MatcherCast<const Element&>(e5_),
+      MatcherCast<const Element&>(e6_),
+      MatcherCast<const Element&>(e7_),
+      MatcherCast<const Element&>(e8_),
+    };
+
+    return MakeMatcher(new ElementsAreMatcherImpl<Container>(matchers, 8));
+  }
+
+ private:
+  const T1& e1_;
+  const T2& e2_;
+  const T3& e3_;
+  const T4& e4_;
+  const T5& e5_;
+  const T6& e6_;
+  const T7& e7_;
+  const T8& e8_;
+
+  GTEST_DISALLOW_ASSIGN_(ElementsAreMatcher8);
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9>
+class ElementsAreMatcher9 {
+ public:
+  ElementsAreMatcher9(const T1& e1, const T2& e2, const T3& e3, const T4& e4,
+      const T5& e5, const T6& e6, const T7& e7, const T8& e8,
+      const T9& e9) : e1_(e1), e2_(e2), e3_(e3), e4_(e4), e5_(e5), e6_(e6),
+      e7_(e7), e8_(e8), e9_(e9) {}
+
+  template <typename Container>
+  operator Matcher<Container>() const {
+    typedef GTEST_REMOVE_REFERENCE_AND_CONST_(Container) RawContainer;
+    typedef typename internal::StlContainerView<RawContainer>::type::value_type
+        Element;
+
+    const Matcher<const Element&> matchers[] = {
+      MatcherCast<const Element&>(e1_),
+      MatcherCast<const Element&>(e2_),
+      MatcherCast<const Element&>(e3_),
+      MatcherCast<const Element&>(e4_),
+      MatcherCast<const Element&>(e5_),
+      MatcherCast<const Element&>(e6_),
+      MatcherCast<const Element&>(e7_),
+      MatcherCast<const Element&>(e8_),
+      MatcherCast<const Element&>(e9_),
+    };
+
+    return MakeMatcher(new ElementsAreMatcherImpl<Container>(matchers, 9));
+  }
+
+ private:
+  const T1& e1_;
+  const T2& e2_;
+  const T3& e3_;
+  const T4& e4_;
+  const T5& e5_;
+  const T6& e6_;
+  const T7& e7_;
+  const T8& e8_;
+  const T9& e9_;
+
+  GTEST_DISALLOW_ASSIGN_(ElementsAreMatcher9);
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10>
+class ElementsAreMatcher10 {
+ public:
+  ElementsAreMatcher10(const T1& e1, const T2& e2, const T3& e3, const T4& e4,
+      const T5& e5, const T6& e6, const T7& e7, const T8& e8, const T9& e9,
+      const T10& e10) : e1_(e1), e2_(e2), e3_(e3), e4_(e4), e5_(e5), e6_(e6),
+      e7_(e7), e8_(e8), e9_(e9), e10_(e10) {}
+
+  template <typename Container>
+  operator Matcher<Container>() const {
+    typedef GTEST_REMOVE_REFERENCE_AND_CONST_(Container) RawContainer;
+    typedef typename internal::StlContainerView<RawContainer>::type::value_type
+        Element;
+
+    const Matcher<const Element&> matchers[] = {
+      MatcherCast<const Element&>(e1_),
+      MatcherCast<const Element&>(e2_),
+      MatcherCast<const Element&>(e3_),
+      MatcherCast<const Element&>(e4_),
+      MatcherCast<const Element&>(e5_),
+      MatcherCast<const Element&>(e6_),
+      MatcherCast<const Element&>(e7_),
+      MatcherCast<const Element&>(e8_),
+      MatcherCast<const Element&>(e9_),
+      MatcherCast<const Element&>(e10_),
+    };
+
+    return MakeMatcher(new ElementsAreMatcherImpl<Container>(matchers, 10));
+  }
+
+ private:
+  const T1& e1_;
+  const T2& e2_;
+  const T3& e3_;
+  const T4& e4_;
+  const T5& e5_;
+  const T6& e6_;
+  const T7& e7_;
+  const T8& e8_;
+  const T9& e9_;
+  const T10& e10_;
+
+  GTEST_DISALLOW_ASSIGN_(ElementsAreMatcher10);
+};
+
+// A set of metafunctions for computing the result type of AllOf.
+// AllOf(m1, ..., mN) returns
+// AllOfResultN<decltype(m1), ..., decltype(mN)>::type.
+
+// Although AllOf isn't defined for one argument, AllOfResult1 is defined
+// to simplify the implementation.
+template <typename M1>
+struct AllOfResult1 {
+  typedef M1 type;
+};
+
+template <typename M1, typename M2>
+struct AllOfResult2 {
+  typedef BothOfMatcher<
+      typename AllOfResult1<M1>::type,
+      typename AllOfResult1<M2>::type
+  > type;
+};
+
+template <typename M1, typename M2, typename M3>
+struct AllOfResult3 {
+  typedef BothOfMatcher<
+      typename AllOfResult1<M1>::type,
+      typename AllOfResult2<M2, M3>::type
+  > type;
+};
+
+template <typename M1, typename M2, typename M3, typename M4>
+struct AllOfResult4 {
+  typedef BothOfMatcher<
+      typename AllOfResult2<M1, M2>::type,
+      typename AllOfResult2<M3, M4>::type
+  > type;
+};
+
+template <typename M1, typename M2, typename M3, typename M4, typename M5>
+struct AllOfResult5 {
+  typedef BothOfMatcher<
+      typename AllOfResult2<M1, M2>::type,
+      typename AllOfResult3<M3, M4, M5>::type
+  > type;
+};
+
+template <typename M1, typename M2, typename M3, typename M4, typename M5,
+    typename M6>
+struct AllOfResult6 {
+  typedef BothOfMatcher<
+      typename AllOfResult3<M1, M2, M3>::type,
+      typename AllOfResult3<M4, M5, M6>::type
+  > type;
+};
+
+template <typename M1, typename M2, typename M3, typename M4, typename M5,
+    typename M6, typename M7>
+struct AllOfResult7 {
+  typedef BothOfMatcher<
+      typename AllOfResult3<M1, M2, M3>::type,
+      typename AllOfResult4<M4, M5, M6, M7>::type
+  > type;
+};
+
+template <typename M1, typename M2, typename M3, typename M4, typename M5,
+    typename M6, typename M7, typename M8>
+struct AllOfResult8 {
+  typedef BothOfMatcher<
+      typename AllOfResult4<M1, M2, M3, M4>::type,
+      typename AllOfResult4<M5, M6, M7, M8>::type
+  > type;
+};
+
+template <typename M1, typename M2, typename M3, typename M4, typename M5,
+    typename M6, typename M7, typename M8, typename M9>
+struct AllOfResult9 {
+  typedef BothOfMatcher<
+      typename AllOfResult4<M1, M2, M3, M4>::type,
+      typename AllOfResult5<M5, M6, M7, M8, M9>::type
+  > type;
+};
+
+template <typename M1, typename M2, typename M3, typename M4, typename M5,
+    typename M6, typename M7, typename M8, typename M9, typename M10>
+struct AllOfResult10 {
+  typedef BothOfMatcher<
+      typename AllOfResult5<M1, M2, M3, M4, M5>::type,
+      typename AllOfResult5<M6, M7, M8, M9, M10>::type
+  > type;
+};
+
+// A set of metafunctions for computing the result type of AnyOf.
+// AnyOf(m1, ..., mN) returns
+// AnyOfResultN<decltype(m1), ..., decltype(mN)>::type.
+
+// Although AnyOf isn't defined for one argument, AnyOfResult1 is defined
+// to simplify the implementation.
+template <typename M1>
+struct AnyOfResult1 {
+  typedef M1 type;
+};
+
+template <typename M1, typename M2>
+struct AnyOfResult2 {
+  typedef EitherOfMatcher<
+      typename AnyOfResult1<M1>::type,
+      typename AnyOfResult1<M2>::type
+  > type;
+};
+
+template <typename M1, typename M2, typename M3>
+struct AnyOfResult3 {
+  typedef EitherOfMatcher<
+      typename AnyOfResult1<M1>::type,
+      typename AnyOfResult2<M2, M3>::type
+  > type;
+};
+
+template <typename M1, typename M2, typename M3, typename M4>
+struct AnyOfResult4 {
+  typedef EitherOfMatcher<
+      typename AnyOfResult2<M1, M2>::type,
+      typename AnyOfResult2<M3, M4>::type
+  > type;
+};
+
+template <typename M1, typename M2, typename M3, typename M4, typename M5>
+struct AnyOfResult5 {
+  typedef EitherOfMatcher<
+      typename AnyOfResult2<M1, M2>::type,
+      typename AnyOfResult3<M3, M4, M5>::type
+  > type;
+};
+
+template <typename M1, typename M2, typename M3, typename M4, typename M5,
+    typename M6>
+struct AnyOfResult6 {
+  typedef EitherOfMatcher<
+      typename AnyOfResult3<M1, M2, M3>::type,
+      typename AnyOfResult3<M4, M5, M6>::type
+  > type;
+};
+
+template <typename M1, typename M2, typename M3, typename M4, typename M5,
+    typename M6, typename M7>
+struct AnyOfResult7 {
+  typedef EitherOfMatcher<
+      typename AnyOfResult3<M1, M2, M3>::type,
+      typename AnyOfResult4<M4, M5, M6, M7>::type
+  > type;
+};
+
+template <typename M1, typename M2, typename M3, typename M4, typename M5,
+    typename M6, typename M7, typename M8>
+struct AnyOfResult8 {
+  typedef EitherOfMatcher<
+      typename AnyOfResult4<M1, M2, M3, M4>::type,
+      typename AnyOfResult4<M5, M6, M7, M8>::type
+  > type;
+};
+
+template <typename M1, typename M2, typename M3, typename M4, typename M5,
+    typename M6, typename M7, typename M8, typename M9>
+struct AnyOfResult9 {
+  typedef EitherOfMatcher<
+      typename AnyOfResult4<M1, M2, M3, M4>::type,
+      typename AnyOfResult5<M5, M6, M7, M8, M9>::type
+  > type;
+};
+
+template <typename M1, typename M2, typename M3, typename M4, typename M5,
+    typename M6, typename M7, typename M8, typename M9, typename M10>
+struct AnyOfResult10 {
+  typedef EitherOfMatcher<
+      typename AnyOfResult5<M1, M2, M3, M4, M5>::type,
+      typename AnyOfResult5<M6, M7, M8, M9, M10>::type
+  > type;
+};
+
+}  // namespace internal
+
+// Args<N1, N2, ..., Nk>(a_matcher) matches a tuple if the selected
+// fields of it matches a_matcher.  C++ doesn't support default
+// arguments for function templates, so we have to overload it.
+template <typename InnerMatcher>
+inline internal::ArgsMatcher<InnerMatcher>
+Args(const InnerMatcher& matcher) {
+  return internal::ArgsMatcher<InnerMatcher>(matcher);
+}
+
+template <int k1, typename InnerMatcher>
+inline internal::ArgsMatcher<InnerMatcher, k1>
+Args(const InnerMatcher& matcher) {
+  return internal::ArgsMatcher<InnerMatcher, k1>(matcher);
+}
+
+template <int k1, int k2, typename InnerMatcher>
+inline internal::ArgsMatcher<InnerMatcher, k1, k2>
+Args(const InnerMatcher& matcher) {
+  return internal::ArgsMatcher<InnerMatcher, k1, k2>(matcher);
+}
+
+template <int k1, int k2, int k3, typename InnerMatcher>
+inline internal::ArgsMatcher<InnerMatcher, k1, k2, k3>
+Args(const InnerMatcher& matcher) {
+  return internal::ArgsMatcher<InnerMatcher, k1, k2, k3>(matcher);
+}
+
+template <int k1, int k2, int k3, int k4, typename InnerMatcher>
+inline internal::ArgsMatcher<InnerMatcher, k1, k2, k3, k4>
+Args(const InnerMatcher& matcher) {
+  return internal::ArgsMatcher<InnerMatcher, k1, k2, k3, k4>(matcher);
+}
+
+template <int k1, int k2, int k3, int k4, int k5, typename InnerMatcher>
+inline internal::ArgsMatcher<InnerMatcher, k1, k2, k3, k4, k5>
+Args(const InnerMatcher& matcher) {
+  return internal::ArgsMatcher<InnerMatcher, k1, k2, k3, k4, k5>(matcher);
+}
+
+template <int k1, int k2, int k3, int k4, int k5, int k6, typename InnerMatcher>
+inline internal::ArgsMatcher<InnerMatcher, k1, k2, k3, k4, k5, k6>
+Args(const InnerMatcher& matcher) {
+  return internal::ArgsMatcher<InnerMatcher, k1, k2, k3, k4, k5, k6>(matcher);
+}
+
+template <int k1, int k2, int k3, int k4, int k5, int k6, int k7,
+    typename InnerMatcher>
+inline internal::ArgsMatcher<InnerMatcher, k1, k2, k3, k4, k5, k6, k7>
+Args(const InnerMatcher& matcher) {
+  return internal::ArgsMatcher<InnerMatcher, k1, k2, k3, k4, k5, k6,
+      k7>(matcher);
+}
+
+template <int k1, int k2, int k3, int k4, int k5, int k6, int k7, int k8,
+    typename InnerMatcher>
+inline internal::ArgsMatcher<InnerMatcher, k1, k2, k3, k4, k5, k6, k7, k8>
+Args(const InnerMatcher& matcher) {
+  return internal::ArgsMatcher<InnerMatcher, k1, k2, k3, k4, k5, k6, k7,
+      k8>(matcher);
+}
+
+template <int k1, int k2, int k3, int k4, int k5, int k6, int k7, int k8,
+    int k9, typename InnerMatcher>
+inline internal::ArgsMatcher<InnerMatcher, k1, k2, k3, k4, k5, k6, k7, k8, k9>
+Args(const InnerMatcher& matcher) {
+  return internal::ArgsMatcher<InnerMatcher, k1, k2, k3, k4, k5, k6, k7, k8,
+      k9>(matcher);
+}
+
+template <int k1, int k2, int k3, int k4, int k5, int k6, int k7, int k8,
+    int k9, int k10, typename InnerMatcher>
+inline internal::ArgsMatcher<InnerMatcher, k1, k2, k3, k4, k5, k6, k7, k8, k9,
+    k10>
+Args(const InnerMatcher& matcher) {
+  return internal::ArgsMatcher<InnerMatcher, k1, k2, k3, k4, k5, k6, k7, k8,
+      k9, k10>(matcher);
+}
+
+// ElementsAre(e0, e1, ..., e_n) matches an STL-style container with
+// (n + 1) elements, where the i-th element in the container must
+// match the i-th argument in the list.  Each argument of
+// ElementsAre() can be either a value or a matcher.  We support up to
+// 10 arguments.
+//
+// NOTE: Since ElementsAre() cares about the order of the elements, it
+// must not be used with containers whose elements's order is
+// undefined (e.g. hash_map).
+
+inline internal::ElementsAreMatcher0 ElementsAre() {
+  return internal::ElementsAreMatcher0();
+}
+
+template <typename T1>
+inline internal::ElementsAreMatcher1<T1> ElementsAre(const T1& e1) {
+  return internal::ElementsAreMatcher1<T1>(e1);
+}
+
+template <typename T1, typename T2>
+inline internal::ElementsAreMatcher2<T1, T2> ElementsAre(const T1& e1,
+    const T2& e2) {
+  return internal::ElementsAreMatcher2<T1, T2>(e1, e2);
+}
+
+template <typename T1, typename T2, typename T3>
+inline internal::ElementsAreMatcher3<T1, T2, T3> ElementsAre(const T1& e1,
+    const T2& e2, const T3& e3) {
+  return internal::ElementsAreMatcher3<T1, T2, T3>(e1, e2, e3);
+}
+
+template <typename T1, typename T2, typename T3, typename T4>
+inline internal::ElementsAreMatcher4<T1, T2, T3, T4> ElementsAre(const T1& e1,
+    const T2& e2, const T3& e3, const T4& e4) {
+  return internal::ElementsAreMatcher4<T1, T2, T3, T4>(e1, e2, e3, e4);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5>
+inline internal::ElementsAreMatcher5<T1, T2, T3, T4,
+    T5> ElementsAre(const T1& e1, const T2& e2, const T3& e3, const T4& e4,
+    const T5& e5) {
+  return internal::ElementsAreMatcher5<T1, T2, T3, T4, T5>(e1, e2, e3, e4, e5);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6>
+inline internal::ElementsAreMatcher6<T1, T2, T3, T4, T5,
+    T6> ElementsAre(const T1& e1, const T2& e2, const T3& e3, const T4& e4,
+    const T5& e5, const T6& e6) {
+  return internal::ElementsAreMatcher6<T1, T2, T3, T4, T5, T6>(e1, e2, e3, e4,
+      e5, e6);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7>
+inline internal::ElementsAreMatcher7<T1, T2, T3, T4, T5, T6,
+    T7> ElementsAre(const T1& e1, const T2& e2, const T3& e3, const T4& e4,
+    const T5& e5, const T6& e6, const T7& e7) {
+  return internal::ElementsAreMatcher7<T1, T2, T3, T4, T5, T6, T7>(e1, e2, e3,
+      e4, e5, e6, e7);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8>
+inline internal::ElementsAreMatcher8<T1, T2, T3, T4, T5, T6, T7,
+    T8> ElementsAre(const T1& e1, const T2& e2, const T3& e3, const T4& e4,
+    const T5& e5, const T6& e6, const T7& e7, const T8& e8) {
+  return internal::ElementsAreMatcher8<T1, T2, T3, T4, T5, T6, T7, T8>(e1, e2,
+      e3, e4, e5, e6, e7, e8);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9>
+inline internal::ElementsAreMatcher9<T1, T2, T3, T4, T5, T6, T7, T8,
+    T9> ElementsAre(const T1& e1, const T2& e2, const T3& e3, const T4& e4,
+    const T5& e5, const T6& e6, const T7& e7, const T8& e8, const T9& e9) {
+  return internal::ElementsAreMatcher9<T1, T2, T3, T4, T5, T6, T7, T8, T9>(e1,
+      e2, e3, e4, e5, e6, e7, e8, e9);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+    typename T6, typename T7, typename T8, typename T9, typename T10>
+inline internal::ElementsAreMatcher10<T1, T2, T3, T4, T5, T6, T7, T8, T9,
+    T10> ElementsAre(const T1& e1, const T2& e2, const T3& e3, const T4& e4,
+    const T5& e5, const T6& e6, const T7& e7, const T8& e8, const T9& e9,
+    const T10& e10) {
+  return internal::ElementsAreMatcher10<T1, T2, T3, T4, T5, T6, T7, T8, T9,
+      T10>(e1, e2, e3, e4, e5, e6, e7, e8, e9, e10);
+}
+
+// ElementsAreArray(array) and ElementAreArray(array, count) are like
+// ElementsAre(), except that they take an array of values or
+// matchers.  The former form infers the size of 'array', which must
+// be a static C-style array.  In the latter form, 'array' can either
+// be a static array or a pointer to a dynamically created array.
+
+template <typename T>
+inline internal::ElementsAreArrayMatcher<T> ElementsAreArray(
+    const T* first, size_t count) {
+  return internal::ElementsAreArrayMatcher<T>(first, count);
+}
+
+template <typename T, size_t N>
+inline internal::ElementsAreArrayMatcher<T>
+ElementsAreArray(const T (&array)[N]) {
+  return internal::ElementsAreArrayMatcher<T>(array, N);
+}
+
+// AllOf(m1, m2, ..., mk) matches any value that matches all of the given
+// sub-matchers.  AllOf is called fully qualified to prevent ADL from firing.
+
+template <typename M1, typename M2>
+inline typename internal::AllOfResult2<M1, M2>::type
+AllOf(M1 m1, M2 m2) {
+  return typename internal::AllOfResult2<M1, M2>::type(
+      m1,
+      m2);
+}
+
+template <typename M1, typename M2, typename M3>
+inline typename internal::AllOfResult3<M1, M2, M3>::type
+AllOf(M1 m1, M2 m2, M3 m3) {
+  return typename internal::AllOfResult3<M1, M2, M3>::type(
+      m1,
+      ::testing::AllOf(m2, m3));
+}
+
+template <typename M1, typename M2, typename M3, typename M4>
+inline typename internal::AllOfResult4<M1, M2, M3, M4>::type
+AllOf(M1 m1, M2 m2, M3 m3, M4 m4) {
+  return typename internal::AllOfResult4<M1, M2, M3, M4>::type(
+      ::testing::AllOf(m1, m2),
+      ::testing::AllOf(m3, m4));
+}
+
+template <typename M1, typename M2, typename M3, typename M4, typename M5>
+inline typename internal::AllOfResult5<M1, M2, M3, M4, M5>::type
+AllOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5) {
+  return typename internal::AllOfResult5<M1, M2, M3, M4, M5>::type(
+      ::testing::AllOf(m1, m2),
+      ::testing::AllOf(m3, m4, m5));
+}
+
+template <typename M1, typename M2, typename M3, typename M4, typename M5,
+    typename M6>
+inline typename internal::AllOfResult6<M1, M2, M3, M4, M5, M6>::type
+AllOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5, M6 m6) {
+  return typename internal::AllOfResult6<M1, M2, M3, M4, M5, M6>::type(
+      ::testing::AllOf(m1, m2, m3),
+      ::testing::AllOf(m4, m5, m6));
+}
+
+template <typename M1, typename M2, typename M3, typename M4, typename M5,
+    typename M6, typename M7>
+inline typename internal::AllOfResult7<M1, M2, M3, M4, M5, M6, M7>::type
+AllOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5, M6 m6, M7 m7) {
+  return typename internal::AllOfResult7<M1, M2, M3, M4, M5, M6, M7>::type(
+      ::testing::AllOf(m1, m2, m3),
+      ::testing::AllOf(m4, m5, m6, m7));
+}
+
+template <typename M1, typename M2, typename M3, typename M4, typename M5,
+    typename M6, typename M7, typename M8>
+inline typename internal::AllOfResult8<M1, M2, M3, M4, M5, M6, M7, M8>::type
+AllOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5, M6 m6, M7 m7, M8 m8) {
+  return typename internal::AllOfResult8<M1, M2, M3, M4, M5, M6, M7, M8>::type(
+      ::testing::AllOf(m1, m2, m3, m4),
+      ::testing::AllOf(m5, m6, m7, m8));
+}
+
+template <typename M1, typename M2, typename M3, typename M4, typename M5,
+    typename M6, typename M7, typename M8, typename M9>
+inline typename internal::AllOfResult9<M1, M2, M3, M4, M5, M6, M7, M8, M9>::type
+AllOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5, M6 m6, M7 m7, M8 m8, M9 m9) {
+  return typename internal::AllOfResult9<M1, M2, M3, M4, M5, M6, M7, M8,
+      M9>::type(
+      ::testing::AllOf(m1, m2, m3, m4),
+      ::testing::AllOf(m5, m6, m7, m8, m9));
+}
+
+template <typename M1, typename M2, typename M3, typename M4, typename M5,
+    typename M6, typename M7, typename M8, typename M9, typename M10>
+inline typename internal::AllOfResult10<M1, M2, M3, M4, M5, M6, M7, M8, M9,
+    M10>::type
+AllOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5, M6 m6, M7 m7, M8 m8, M9 m9, M10 m10) {
+  return typename internal::AllOfResult10<M1, M2, M3, M4, M5, M6, M7, M8, M9,
+      M10>::type(
+      ::testing::AllOf(m1, m2, m3, m4, m5),
+      ::testing::AllOf(m6, m7, m8, m9, m10));
+}
+
+// AnyOf(m1, m2, ..., mk) matches any value that matches any of the given
+// sub-matchers.  AnyOf is called fully qualified to prevent ADL from firing.
+
+template <typename M1, typename M2>
+inline typename internal::AnyOfResult2<M1, M2>::type
+AnyOf(M1 m1, M2 m2) {
+  return typename internal::AnyOfResult2<M1, M2>::type(
+      m1,
+      m2);
+}
+
+template <typename M1, typename M2, typename M3>
+inline typename internal::AnyOfResult3<M1, M2, M3>::type
+AnyOf(M1 m1, M2 m2, M3 m3) {
+  return typename internal::AnyOfResult3<M1, M2, M3>::type(
+      m1,
+      ::testing::AnyOf(m2, m3));
+}
+
+template <typename M1, typename M2, typename M3, typename M4>
+inline typename internal::AnyOfResult4<M1, M2, M3, M4>::type
+AnyOf(M1 m1, M2 m2, M3 m3, M4 m4) {
+  return typename internal::AnyOfResult4<M1, M2, M3, M4>::type(
+      ::testing::AnyOf(m1, m2),
+      ::testing::AnyOf(m3, m4));
+}
+
+template <typename M1, typename M2, typename M3, typename M4, typename M5>
+inline typename internal::AnyOfResult5<M1, M2, M3, M4, M5>::type
+AnyOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5) {
+  return typename internal::AnyOfResult5<M1, M2, M3, M4, M5>::type(
+      ::testing::AnyOf(m1, m2),
+      ::testing::AnyOf(m3, m4, m5));
+}
+
+template <typename M1, typename M2, typename M3, typename M4, typename M5,
+    typename M6>
+inline typename internal::AnyOfResult6<M1, M2, M3, M4, M5, M6>::type
+AnyOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5, M6 m6) {
+  return typename internal::AnyOfResult6<M1, M2, M3, M4, M5, M6>::type(
+      ::testing::AnyOf(m1, m2, m3),
+      ::testing::AnyOf(m4, m5, m6));
+}
+
+template <typename M1, typename M2, typename M3, typename M4, typename M5,
+    typename M6, typename M7>
+inline typename internal::AnyOfResult7<M1, M2, M3, M4, M5, M6, M7>::type
+AnyOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5, M6 m6, M7 m7) {
+  return typename internal::AnyOfResult7<M1, M2, M3, M4, M5, M6, M7>::type(
+      ::testing::AnyOf(m1, m2, m3),
+      ::testing::AnyOf(m4, m5, m6, m7));
+}
+
+template <typename M1, typename M2, typename M3, typename M4, typename M5,
+    typename M6, typename M7, typename M8>
+inline typename internal::AnyOfResult8<M1, M2, M3, M4, M5, M6, M7, M8>::type
+AnyOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5, M6 m6, M7 m7, M8 m8) {
+  return typename internal::AnyOfResult8<M1, M2, M3, M4, M5, M6, M7, M8>::type(
+      ::testing::AnyOf(m1, m2, m3, m4),
+      ::testing::AnyOf(m5, m6, m7, m8));
+}
+
+template <typename M1, typename M2, typename M3, typename M4, typename M5,
+    typename M6, typename M7, typename M8, typename M9>
+inline typename internal::AnyOfResult9<M1, M2, M3, M4, M5, M6, M7, M8, M9>::type
+AnyOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5, M6 m6, M7 m7, M8 m8, M9 m9) {
+  return typename internal::AnyOfResult9<M1, M2, M3, M4, M5, M6, M7, M8,
+      M9>::type(
+      ::testing::AnyOf(m1, m2, m3, m4),
+      ::testing::AnyOf(m5, m6, m7, m8, m9));
+}
+
+template <typename M1, typename M2, typename M3, typename M4, typename M5,
+    typename M6, typename M7, typename M8, typename M9, typename M10>
+inline typename internal::AnyOfResult10<M1, M2, M3, M4, M5, M6, M7, M8, M9,
+    M10>::type
+AnyOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5, M6 m6, M7 m7, M8 m8, M9 m9, M10 m10) {
+  return typename internal::AnyOfResult10<M1, M2, M3, M4, M5, M6, M7, M8, M9,
+      M10>::type(
+      ::testing::AnyOf(m1, m2, m3, m4, m5),
+      ::testing::AnyOf(m6, m7, m8, m9, m10));
+}
+
+}  // namespace testing
+
+
+// The MATCHER* family of macros can be used in a namespace scope to
+// define custom matchers easily.
+//
+// Basic Usage
+// ===========
+//
+// The syntax
+//
+//   MATCHER(name, description_string) { statements; }
+//
+// defines a matcher with the given name that executes the statements,
+// which must return a bool to indicate if the match succeeds.  Inside
+// the statements, you can refer to the value being matched by 'arg',
+// and refer to its type by 'arg_type'.
+//
+// The description string documents what the matcher does, and is used
+// to generate the failure message when the match fails.  Since a
+// MATCHER() is usually defined in a header file shared by multiple
+// C++ source files, we require the description to be a C-string
+// literal to avoid possible side effects.  It can be empty, in which
+// case we'll use the sequence of words in the matcher name as the
+// description.
+//
+// For example:
+//
+//   MATCHER(IsEven, "") { return (arg % 2) == 0; }
+//
+// allows you to write
+//
+//   // Expects mock_foo.Bar(n) to be called where n is even.
+//   EXPECT_CALL(mock_foo, Bar(IsEven()));
+//
+// or,
+//
+//   // Verifies that the value of some_expression is even.
+//   EXPECT_THAT(some_expression, IsEven());
+//
+// If the above assertion fails, it will print something like:
+//
+//   Value of: some_expression
+//   Expected: is even
+//     Actual: 7
+//
+// where the description "is even" is automatically calculated from the
+// matcher name IsEven.
+//
+// Argument Type
+// =============
+//
+// Note that the type of the value being matched (arg_type) is
+// determined by the context in which you use the matcher and is
+// supplied to you by the compiler, so you don't need to worry about
+// declaring it (nor can you).  This allows the matcher to be
+// polymorphic.  For example, IsEven() can be used to match any type
+// where the value of "(arg % 2) == 0" can be implicitly converted to
+// a bool.  In the "Bar(IsEven())" example above, if method Bar()
+// takes an int, 'arg_type' will be int; if it takes an unsigned long,
+// 'arg_type' will be unsigned long; and so on.
+//
+// Parameterizing Matchers
+// =======================
+//
+// Sometimes you'll want to parameterize the matcher.  For that you
+// can use another macro:
+//
+//   MATCHER_P(name, param_name, description_string) { statements; }
+//
+// For example:
+//
+//   MATCHER_P(HasAbsoluteValue, value, "") { return abs(arg) == value; }
+//
+// will allow you to write:
+//
+//   EXPECT_THAT(Blah("a"), HasAbsoluteValue(n));
+//
+// which may lead to this message (assuming n is 10):
+//
+//   Value of: Blah("a")
+//   Expected: has absolute value 10
+//     Actual: -9
+//
+// Note that both the matcher description and its parameter are
+// printed, making the message human-friendly.
+//
+// In the matcher definition body, you can write 'foo_type' to
+// reference the type of a parameter named 'foo'.  For example, in the
+// body of MATCHER_P(HasAbsoluteValue, value) above, you can write
+// 'value_type' to refer to the type of 'value'.
+//
+// We also provide MATCHER_P2, MATCHER_P3, ..., up to MATCHER_P10 to
+// support multi-parameter matchers.
+//
+// Describing Parameterized Matchers
+// =================================
+//
+// The last argument to MATCHER*() is a string-typed expression.  The
+// expression can reference all of the matcher's parameters and a
+// special bool-typed variable named 'negation'.  When 'negation' is
+// false, the expression should evaluate to the matcher's description;
+// otherwise it should evaluate to the description of the negation of
+// the matcher.  For example,
+//
+//   using testing::PrintToString;
+//
+//   MATCHER_P2(InClosedRange, low, hi,
+//       string(negation ? "is not" : "is") + " in range [" +
+//       PrintToString(low) + ", " + PrintToString(hi) + "]") {
+//     return low <= arg && arg <= hi;
+//   }
+//   ...
+//   EXPECT_THAT(3, InClosedRange(4, 6));
+//   EXPECT_THAT(3, Not(InClosedRange(2, 4)));
+//
+// would generate two failures that contain the text:
+//
+//   Expected: is in range [4, 6]
+//   ...
+//   Expected: is not in range [2, 4]
+//
+// If you specify "" as the description, the failure message will
+// contain the sequence of words in the matcher name followed by the
+// parameter values printed as a tuple.  For example,
+//
+//   MATCHER_P2(InClosedRange, low, hi, "") { ... }
+//   ...
+//   EXPECT_THAT(3, InClosedRange(4, 6));
+//   EXPECT_THAT(3, Not(InClosedRange(2, 4)));
+//
+// would generate two failures that contain the text:
+//
+//   Expected: in closed range (4, 6)
+//   ...
+//   Expected: not (in closed range (2, 4))
+//
+// Types of Matcher Parameters
+// ===========================
+//
+// For the purpose of typing, you can view
+//
+//   MATCHER_Pk(Foo, p1, ..., pk, description_string) { ... }
+//
+// as shorthand for
+//
+//   template <typename p1_type, ..., typename pk_type>
+//   FooMatcherPk<p1_type, ..., pk_type>
+//   Foo(p1_type p1, ..., pk_type pk) { ... }
+//
+// When you write Foo(v1, ..., vk), the compiler infers the types of
+// the parameters v1, ..., and vk for you.  If you are not happy with
+// the result of the type inference, you can specify the types by
+// explicitly instantiating the template, as in Foo<long, bool>(5,
+// false).  As said earlier, you don't get to (or need to) specify
+// 'arg_type' as that's determined by the context in which the matcher
+// is used.  You can assign the result of expression Foo(p1, ..., pk)
+// to a variable of type FooMatcherPk<p1_type, ..., pk_type>.  This
+// can be useful when composing matchers.
+//
+// While you can instantiate a matcher template with reference types,
+// passing the parameters by pointer usually makes your code more
+// readable.  If, however, you still want to pass a parameter by
+// reference, be aware that in the failure message generated by the
+// matcher you will see the value of the referenced object but not its
+// address.
+//
+// Explaining Match Results
+// ========================
+//
+// Sometimes the matcher description alone isn't enough to explain why
+// the match has failed or succeeded.  For example, when expecting a
+// long string, it can be very helpful to also print the diff between
+// the expected string and the actual one.  To achieve that, you can
+// optionally stream additional information to a special variable
+// named result_listener, whose type is a pointer to class
+// MatchResultListener:
+//
+//   MATCHER_P(EqualsLongString, str, "") {
+//     if (arg == str) return true;
+//
+//     *result_listener << "the difference: "
+///                     << DiffStrings(str, arg);
+//     return false;
+//   }
+//
+// Overloading Matchers
+// ====================
+//
+// You can overload matchers with different numbers of parameters:
+//
+//   MATCHER_P(Blah, a, description_string1) { ... }
+//   MATCHER_P2(Blah, a, b, description_string2) { ... }
+//
+// Caveats
+// =======
+//
+// When defining a new matcher, you should also consider implementing
+// MatcherInterface or using MakePolymorphicMatcher().  These
+// approaches require more work than the MATCHER* macros, but also
+// give you more control on the types of the value being matched and
+// the matcher parameters, which may leads to better compiler error
+// messages when the matcher is used wrong.  They also allow
+// overloading matchers based on parameter types (as opposed to just
+// based on the number of parameters).
+//
+// MATCHER*() can only be used in a namespace scope.  The reason is
+// that C++ doesn't yet allow function-local types to be used to
+// instantiate templates.  The up-coming C++0x standard will fix this.
+// Once that's done, we'll consider supporting using MATCHER*() inside
+// a function.
+//
+// More Information
+// ================
+//
+// To learn more about using these macros, please search for 'MATCHER'
+// on http://code.google.com/p/googlemock/wiki/CookBook.
+
+#define MATCHER(name, description)\
+  class name##Matcher {\
+   public:\
+    template <typename arg_type>\
+    class gmock_Impl : public ::testing::MatcherInterface<arg_type> {\
+     public:\
+      gmock_Impl()\
+           {}\
+      virtual bool MatchAndExplain(\
+          arg_type arg, ::testing::MatchResultListener* result_listener) const;\
+      virtual void DescribeTo(::std::ostream* gmock_os) const {\
+        *gmock_os << FormatDescription(false);\
+      }\
+      virtual void DescribeNegationTo(::std::ostream* gmock_os) const {\
+        *gmock_os << FormatDescription(true);\
+      }\
+     private:\
+      ::testing::internal::string FormatDescription(bool negation) const {\
+        const ::testing::internal::string gmock_description = (description);\
+        if (!gmock_description.empty())\
+          return gmock_description;\
+        return ::testing::internal::FormatMatcherDescription(\
+            negation, #name, \
+            ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
+                ::std::tr1::tuple<>()));\
+      }\
+      GTEST_DISALLOW_ASSIGN_(gmock_Impl);\
+    };\
+    template <typename arg_type>\
+    operator ::testing::Matcher<arg_type>() const {\
+      return ::testing::Matcher<arg_type>(\
+          new gmock_Impl<arg_type>());\
+    }\
+    name##Matcher() {\
+    }\
+   private:\
+    GTEST_DISALLOW_ASSIGN_(name##Matcher);\
+  };\
+  inline name##Matcher name() {\
+    return name##Matcher();\
+  }\
+  template <typename arg_type>\
+  bool name##Matcher::gmock_Impl<arg_type>::MatchAndExplain(\
+      arg_type arg, \
+      ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\
+          const
+
+#define MATCHER_P(name, p0, description)\
+  template <typename p0##_type>\
+  class name##MatcherP {\
+   public:\
+    template <typename arg_type>\
+    class gmock_Impl : public ::testing::MatcherInterface<arg_type> {\
+     public:\
+      explicit gmock_Impl(p0##_type gmock_p0)\
+           : p0(gmock_p0) {}\
+      virtual bool MatchAndExplain(\
+          arg_type arg, ::testing::MatchResultListener* result_listener) const;\
+      virtual void DescribeTo(::std::ostream* gmock_os) const {\
+        *gmock_os << FormatDescription(false);\
+      }\
+      virtual void DescribeNegationTo(::std::ostream* gmock_os) const {\
+        *gmock_os << FormatDescription(true);\
+      }\
+      p0##_type p0;\
+     private:\
+      ::testing::internal::string FormatDescription(bool negation) const {\
+        const ::testing::internal::string gmock_description = (description);\
+        if (!gmock_description.empty())\
+          return gmock_description;\
+        return ::testing::internal::FormatMatcherDescription(\
+            negation, #name, \
+            ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
+                ::std::tr1::tuple<p0##_type>(p0)));\
+      }\
+      GTEST_DISALLOW_ASSIGN_(gmock_Impl);\
+    };\
+    template <typename arg_type>\
+    operator ::testing::Matcher<arg_type>() const {\
+      return ::testing::Matcher<arg_type>(\
+          new gmock_Impl<arg_type>(p0));\
+    }\
+    name##MatcherP(p0##_type gmock_p0) : p0(gmock_p0) {\
+    }\
+    p0##_type p0;\
+   private:\
+    GTEST_DISALLOW_ASSIGN_(name##MatcherP);\
+  };\
+  template <typename p0##_type>\
+  inline name##MatcherP<p0##_type> name(p0##_type p0) {\
+    return name##MatcherP<p0##_type>(p0);\
+  }\
+  template <typename p0##_type>\
+  template <typename arg_type>\
+  bool name##MatcherP<p0##_type>::gmock_Impl<arg_type>::MatchAndExplain(\
+      arg_type arg, \
+      ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\
+          const
+
+#define MATCHER_P2(name, p0, p1, description)\
+  template <typename p0##_type, typename p1##_type>\
+  class name##MatcherP2 {\
+   public:\
+    template <typename arg_type>\
+    class gmock_Impl : public ::testing::MatcherInterface<arg_type> {\
+     public:\
+      gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1)\
+           : p0(gmock_p0), p1(gmock_p1) {}\
+      virtual bool MatchAndExplain(\
+          arg_type arg, ::testing::MatchResultListener* result_listener) const;\
+      virtual void DescribeTo(::std::ostream* gmock_os) const {\
+        *gmock_os << FormatDescription(false);\
+      }\
+      virtual void DescribeNegationTo(::std::ostream* gmock_os) const {\
+        *gmock_os << FormatDescription(true);\
+      }\
+      p0##_type p0;\
+      p1##_type p1;\
+     private:\
+      ::testing::internal::string FormatDescription(bool negation) const {\
+        const ::testing::internal::string gmock_description = (description);\
+        if (!gmock_description.empty())\
+          return gmock_description;\
+        return ::testing::internal::FormatMatcherDescription(\
+            negation, #name, \
+            ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
+                ::std::tr1::tuple<p0##_type, p1##_type>(p0, p1)));\
+      }\
+      GTEST_DISALLOW_ASSIGN_(gmock_Impl);\
+    };\
+    template <typename arg_type>\
+    operator ::testing::Matcher<arg_type>() const {\
+      return ::testing::Matcher<arg_type>(\
+          new gmock_Impl<arg_type>(p0, p1));\
+    }\
+    name##MatcherP2(p0##_type gmock_p0, p1##_type gmock_p1) : p0(gmock_p0), \
+        p1(gmock_p1) {\
+    }\
+    p0##_type p0;\
+    p1##_type p1;\
+   private:\
+    GTEST_DISALLOW_ASSIGN_(name##MatcherP2);\
+  };\
+  template <typename p0##_type, typename p1##_type>\
+  inline name##MatcherP2<p0##_type, p1##_type> name(p0##_type p0, \
+      p1##_type p1) {\
+    return name##MatcherP2<p0##_type, p1##_type>(p0, p1);\
+  }\
+  template <typename p0##_type, typename p1##_type>\
+  template <typename arg_type>\
+  bool name##MatcherP2<p0##_type, \
+      p1##_type>::gmock_Impl<arg_type>::MatchAndExplain(\
+      arg_type arg, \
+      ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\
+          const
+
+#define MATCHER_P3(name, p0, p1, p2, description)\
+  template <typename p0##_type, typename p1##_type, typename p2##_type>\
+  class name##MatcherP3 {\
+   public:\
+    template <typename arg_type>\
+    class gmock_Impl : public ::testing::MatcherInterface<arg_type> {\
+     public:\
+      gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2)\
+           : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2) {}\
+      virtual bool MatchAndExplain(\
+          arg_type arg, ::testing::MatchResultListener* result_listener) const;\
+      virtual void DescribeTo(::std::ostream* gmock_os) const {\
+        *gmock_os << FormatDescription(false);\
+      }\
+      virtual void DescribeNegationTo(::std::ostream* gmock_os) const {\
+        *gmock_os << FormatDescription(true);\
+      }\
+      p0##_type p0;\
+      p1##_type p1;\
+      p2##_type p2;\
+     private:\
+      ::testing::internal::string FormatDescription(bool negation) const {\
+        const ::testing::internal::string gmock_description = (description);\
+        if (!gmock_description.empty())\
+          return gmock_description;\
+        return ::testing::internal::FormatMatcherDescription(\
+            negation, #name, \
+            ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
+                ::std::tr1::tuple<p0##_type, p1##_type, p2##_type>(p0, p1, \
+                    p2)));\
+      }\
+      GTEST_DISALLOW_ASSIGN_(gmock_Impl);\
+    };\
+    template <typename arg_type>\
+    operator ::testing::Matcher<arg_type>() const {\
+      return ::testing::Matcher<arg_type>(\
+          new gmock_Impl<arg_type>(p0, p1, p2));\
+    }\
+    name##MatcherP3(p0##_type gmock_p0, p1##_type gmock_p1, \
+        p2##_type gmock_p2) : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2) {\
+    }\
+    p0##_type p0;\
+    p1##_type p1;\
+    p2##_type p2;\
+   private:\
+    GTEST_DISALLOW_ASSIGN_(name##MatcherP3);\
+  };\
+  template <typename p0##_type, typename p1##_type, typename p2##_type>\
+  inline name##MatcherP3<p0##_type, p1##_type, p2##_type> name(p0##_type p0, \
+      p1##_type p1, p2##_type p2) {\
+    return name##MatcherP3<p0##_type, p1##_type, p2##_type>(p0, p1, p2);\
+  }\
+  template <typename p0##_type, typename p1##_type, typename p2##_type>\
+  template <typename arg_type>\
+  bool name##MatcherP3<p0##_type, p1##_type, \
+      p2##_type>::gmock_Impl<arg_type>::MatchAndExplain(\
+      arg_type arg, \
+      ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\
+          const
+
+#define MATCHER_P4(name, p0, p1, p2, p3, description)\
+  template <typename p0##_type, typename p1##_type, typename p2##_type, \
+      typename p3##_type>\
+  class name##MatcherP4 {\
+   public:\
+    template <typename arg_type>\
+    class gmock_Impl : public ::testing::MatcherInterface<arg_type> {\
+     public:\
+      gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
+          p3##_type gmock_p3)\
+           : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), p3(gmock_p3) {}\
+      virtual bool MatchAndExplain(\
+          arg_type arg, ::testing::MatchResultListener* result_listener) const;\
+      virtual void DescribeTo(::std::ostream* gmock_os) const {\
+        *gmock_os << FormatDescription(false);\
+      }\
+      virtual void DescribeNegationTo(::std::ostream* gmock_os) const {\
+        *gmock_os << FormatDescription(true);\
+      }\
+      p0##_type p0;\
+      p1##_type p1;\
+      p2##_type p2;\
+      p3##_type p3;\
+     private:\
+      ::testing::internal::string FormatDescription(bool negation) const {\
+        const ::testing::internal::string gmock_description = (description);\
+        if (!gmock_description.empty())\
+          return gmock_description;\
+        return ::testing::internal::FormatMatcherDescription(\
+            negation, #name, \
+            ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
+                ::std::tr1::tuple<p0##_type, p1##_type, p2##_type, \
+                    p3##_type>(p0, p1, p2, p3)));\
+      }\
+      GTEST_DISALLOW_ASSIGN_(gmock_Impl);\
+    };\
+    template <typename arg_type>\
+    operator ::testing::Matcher<arg_type>() const {\
+      return ::testing::Matcher<arg_type>(\
+          new gmock_Impl<arg_type>(p0, p1, p2, p3));\
+    }\
+    name##MatcherP4(p0##_type gmock_p0, p1##_type gmock_p1, \
+        p2##_type gmock_p2, p3##_type gmock_p3) : p0(gmock_p0), p1(gmock_p1), \
+        p2(gmock_p2), p3(gmock_p3) {\
+    }\
+    p0##_type p0;\
+    p1##_type p1;\
+    p2##_type p2;\
+    p3##_type p3;\
+   private:\
+    GTEST_DISALLOW_ASSIGN_(name##MatcherP4);\
+  };\
+  template <typename p0##_type, typename p1##_type, typename p2##_type, \
+      typename p3##_type>\
+  inline name##MatcherP4<p0##_type, p1##_type, p2##_type, \
+      p3##_type> name(p0##_type p0, p1##_type p1, p2##_type p2, \
+      p3##_type p3) {\
+    return name##MatcherP4<p0##_type, p1##_type, p2##_type, p3##_type>(p0, \
+        p1, p2, p3);\
+  }\
+  template <typename p0##_type, typename p1##_type, typename p2##_type, \
+      typename p3##_type>\
+  template <typename arg_type>\
+  bool name##MatcherP4<p0##_type, p1##_type, p2##_type, \
+      p3##_type>::gmock_Impl<arg_type>::MatchAndExplain(\
+      arg_type arg, \
+      ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\
+          const
+
+#define MATCHER_P5(name, p0, p1, p2, p3, p4, description)\
+  template <typename p0##_type, typename p1##_type, typename p2##_type, \
+      typename p3##_type, typename p4##_type>\
+  class name##MatcherP5 {\
+   public:\
+    template <typename arg_type>\
+    class gmock_Impl : public ::testing::MatcherInterface<arg_type> {\
+     public:\
+      gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
+          p3##_type gmock_p3, p4##_type gmock_p4)\
+           : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), p3(gmock_p3), \
+               p4(gmock_p4) {}\
+      virtual bool MatchAndExplain(\
+          arg_type arg, ::testing::MatchResultListener* result_listener) const;\
+      virtual void DescribeTo(::std::ostream* gmock_os) const {\
+        *gmock_os << FormatDescription(false);\
+      }\
+      virtual void DescribeNegationTo(::std::ostream* gmock_os) const {\
+        *gmock_os << FormatDescription(true);\
+      }\
+      p0##_type p0;\
+      p1##_type p1;\
+      p2##_type p2;\
+      p3##_type p3;\
+      p4##_type p4;\
+     private:\
+      ::testing::internal::string FormatDescription(bool negation) const {\
+        const ::testing::internal::string gmock_description = (description);\
+        if (!gmock_description.empty())\
+          return gmock_description;\
+        return ::testing::internal::FormatMatcherDescription(\
+            negation, #name, \
+            ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
+                ::std::tr1::tuple<p0##_type, p1##_type, p2##_type, p3##_type, \
+                    p4##_type>(p0, p1, p2, p3, p4)));\
+      }\
+      GTEST_DISALLOW_ASSIGN_(gmock_Impl);\
+    };\
+    template <typename arg_type>\
+    operator ::testing::Matcher<arg_type>() const {\
+      return ::testing::Matcher<arg_type>(\
+          new gmock_Impl<arg_type>(p0, p1, p2, p3, p4));\
+    }\
+    name##MatcherP5(p0##_type gmock_p0, p1##_type gmock_p1, \
+        p2##_type gmock_p2, p3##_type gmock_p3, \
+        p4##_type gmock_p4) : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), \
+        p3(gmock_p3), p4(gmock_p4) {\
+    }\
+    p0##_type p0;\
+    p1##_type p1;\
+    p2##_type p2;\
+    p3##_type p3;\
+    p4##_type p4;\
+   private:\
+    GTEST_DISALLOW_ASSIGN_(name##MatcherP5);\
+  };\
+  template <typename p0##_type, typename p1##_type, typename p2##_type, \
+      typename p3##_type, typename p4##_type>\
+  inline name##MatcherP5<p0##_type, p1##_type, p2##_type, p3##_type, \
+      p4##_type> name(p0##_type p0, p1##_type p1, p2##_type p2, p3##_type p3, \
+      p4##_type p4) {\
+    return name##MatcherP5<p0##_type, p1##_type, p2##_type, p3##_type, \
+        p4##_type>(p0, p1, p2, p3, p4);\
+  }\
+  template <typename p0##_type, typename p1##_type, typename p2##_type, \
+      typename p3##_type, typename p4##_type>\
+  template <typename arg_type>\
+  bool name##MatcherP5<p0##_type, p1##_type, p2##_type, p3##_type, \
+      p4##_type>::gmock_Impl<arg_type>::MatchAndExplain(\
+      arg_type arg, \
+      ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\
+          const
+
+#define MATCHER_P6(name, p0, p1, p2, p3, p4, p5, description)\
+  template <typename p0##_type, typename p1##_type, typename p2##_type, \
+      typename p3##_type, typename p4##_type, typename p5##_type>\
+  class name##MatcherP6 {\
+   public:\
+    template <typename arg_type>\
+    class gmock_Impl : public ::testing::MatcherInterface<arg_type> {\
+     public:\
+      gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
+          p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5)\
+           : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), p3(gmock_p3), \
+               p4(gmock_p4), p5(gmock_p5) {}\
+      virtual bool MatchAndExplain(\
+          arg_type arg, ::testing::MatchResultListener* result_listener) const;\
+      virtual void DescribeTo(::std::ostream* gmock_os) const {\
+        *gmock_os << FormatDescription(false);\
+      }\
+      virtual void DescribeNegationTo(::std::ostream* gmock_os) const {\
+        *gmock_os << FormatDescription(true);\
+      }\
+      p0##_type p0;\
+      p1##_type p1;\
+      p2##_type p2;\
+      p3##_type p3;\
+      p4##_type p4;\
+      p5##_type p5;\
+     private:\
+      ::testing::internal::string FormatDescription(bool negation) const {\
+        const ::testing::internal::string gmock_description = (description);\
+        if (!gmock_description.empty())\
+          return gmock_description;\
+        return ::testing::internal::FormatMatcherDescription(\
+            negation, #name, \
+            ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
+                ::std::tr1::tuple<p0##_type, p1##_type, p2##_type, p3##_type, \
+                    p4##_type, p5##_type>(p0, p1, p2, p3, p4, p5)));\
+      }\
+      GTEST_DISALLOW_ASSIGN_(gmock_Impl);\
+    };\
+    template <typename arg_type>\
+    operator ::testing::Matcher<arg_type>() const {\
+      return ::testing::Matcher<arg_type>(\
+          new gmock_Impl<arg_type>(p0, p1, p2, p3, p4, p5));\
+    }\
+    name##MatcherP6(p0##_type gmock_p0, p1##_type gmock_p1, \
+        p2##_type gmock_p2, p3##_type gmock_p3, p4##_type gmock_p4, \
+        p5##_type gmock_p5) : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), \
+        p3(gmock_p3), p4(gmock_p4), p5(gmock_p5) {\
+    }\
+    p0##_type p0;\
+    p1##_type p1;\
+    p2##_type p2;\
+    p3##_type p3;\
+    p4##_type p4;\
+    p5##_type p5;\
+   private:\
+    GTEST_DISALLOW_ASSIGN_(name##MatcherP6);\
+  };\
+  template <typename p0##_type, typename p1##_type, typename p2##_type, \
+      typename p3##_type, typename p4##_type, typename p5##_type>\
+  inline name##MatcherP6<p0##_type, p1##_type, p2##_type, p3##_type, \
+      p4##_type, p5##_type> name(p0##_type p0, p1##_type p1, p2##_type p2, \
+      p3##_type p3, p4##_type p4, p5##_type p5) {\
+    return name##MatcherP6<p0##_type, p1##_type, p2##_type, p3##_type, \
+        p4##_type, p5##_type>(p0, p1, p2, p3, p4, p5);\
+  }\
+  template <typename p0##_type, typename p1##_type, typename p2##_type, \
+      typename p3##_type, typename p4##_type, typename p5##_type>\
+  template <typename arg_type>\
+  bool name##MatcherP6<p0##_type, p1##_type, p2##_type, p3##_type, p4##_type, \
+      p5##_type>::gmock_Impl<arg_type>::MatchAndExplain(\
+      arg_type arg, \
+      ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\
+          const
+
+#define MATCHER_P7(name, p0, p1, p2, p3, p4, p5, p6, description)\
+  template <typename p0##_type, typename p1##_type, typename p2##_type, \
+      typename p3##_type, typename p4##_type, typename p5##_type, \
+      typename p6##_type>\
+  class name##MatcherP7 {\
+   public:\
+    template <typename arg_type>\
+    class gmock_Impl : public ::testing::MatcherInterface<arg_type> {\
+     public:\
+      gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
+          p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \
+          p6##_type gmock_p6)\
+           : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), p3(gmock_p3), \
+               p4(gmock_p4), p5(gmock_p5), p6(gmock_p6) {}\
+      virtual bool MatchAndExplain(\
+          arg_type arg, ::testing::MatchResultListener* result_listener) const;\
+      virtual void DescribeTo(::std::ostream* gmock_os) const {\
+        *gmock_os << FormatDescription(false);\
+      }\
+      virtual void DescribeNegationTo(::std::ostream* gmock_os) const {\
+        *gmock_os << FormatDescription(true);\
+      }\
+      p0##_type p0;\
+      p1##_type p1;\
+      p2##_type p2;\
+      p3##_type p3;\
+      p4##_type p4;\
+      p5##_type p5;\
+      p6##_type p6;\
+     private:\
+      ::testing::internal::string FormatDescription(bool negation) const {\
+        const ::testing::internal::string gmock_description = (description);\
+        if (!gmock_description.empty())\
+          return gmock_description;\
+        return ::testing::internal::FormatMatcherDescription(\
+            negation, #name, \
+            ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
+                ::std::tr1::tuple<p0##_type, p1##_type, p2##_type, p3##_type, \
+                    p4##_type, p5##_type, p6##_type>(p0, p1, p2, p3, p4, p5, \
+                    p6)));\
+      }\
+      GTEST_DISALLOW_ASSIGN_(gmock_Impl);\
+    };\
+    template <typename arg_type>\
+    operator ::testing::Matcher<arg_type>() const {\
+      return ::testing::Matcher<arg_type>(\
+          new gmock_Impl<arg_type>(p0, p1, p2, p3, p4, p5, p6));\
+    }\
+    name##MatcherP7(p0##_type gmock_p0, p1##_type gmock_p1, \
+        p2##_type gmock_p2, p3##_type gmock_p3, p4##_type gmock_p4, \
+        p5##_type gmock_p5, p6##_type gmock_p6) : p0(gmock_p0), p1(gmock_p1), \
+        p2(gmock_p2), p3(gmock_p3), p4(gmock_p4), p5(gmock_p5), \
+        p6(gmock_p6) {\
+    }\
+    p0##_type p0;\
+    p1##_type p1;\
+    p2##_type p2;\
+    p3##_type p3;\
+    p4##_type p4;\
+    p5##_type p5;\
+    p6##_type p6;\
+   private:\
+    GTEST_DISALLOW_ASSIGN_(name##MatcherP7);\
+  };\
+  template <typename p0##_type, typename p1##_type, typename p2##_type, \
+      typename p3##_type, typename p4##_type, typename p5##_type, \
+      typename p6##_type>\
+  inline name##MatcherP7<p0##_type, p1##_type, p2##_type, p3##_type, \
+      p4##_type, p5##_type, p6##_type> name(p0##_type p0, p1##_type p1, \
+      p2##_type p2, p3##_type p3, p4##_type p4, p5##_type p5, \
+      p6##_type p6) {\
+    return name##MatcherP7<p0##_type, p1##_type, p2##_type, p3##_type, \
+        p4##_type, p5##_type, p6##_type>(p0, p1, p2, p3, p4, p5, p6);\
+  }\
+  template <typename p0##_type, typename p1##_type, typename p2##_type, \
+      typename p3##_type, typename p4##_type, typename p5##_type, \
+      typename p6##_type>\
+  template <typename arg_type>\
+  bool name##MatcherP7<p0##_type, p1##_type, p2##_type, p3##_type, p4##_type, \
+      p5##_type, p6##_type>::gmock_Impl<arg_type>::MatchAndExplain(\
+      arg_type arg, \
+      ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\
+          const
+
+#define MATCHER_P8(name, p0, p1, p2, p3, p4, p5, p6, p7, description)\
+  template <typename p0##_type, typename p1##_type, typename p2##_type, \
+      typename p3##_type, typename p4##_type, typename p5##_type, \
+      typename p6##_type, typename p7##_type>\
+  class name##MatcherP8 {\
+   public:\
+    template <typename arg_type>\
+    class gmock_Impl : public ::testing::MatcherInterface<arg_type> {\
+     public:\
+      gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
+          p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \
+          p6##_type gmock_p6, p7##_type gmock_p7)\
+           : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), p3(gmock_p3), \
+               p4(gmock_p4), p5(gmock_p5), p6(gmock_p6), p7(gmock_p7) {}\
+      virtual bool MatchAndExplain(\
+          arg_type arg, ::testing::MatchResultListener* result_listener) const;\
+      virtual void DescribeTo(::std::ostream* gmock_os) const {\
+        *gmock_os << FormatDescription(false);\
+      }\
+      virtual void DescribeNegationTo(::std::ostream* gmock_os) const {\
+        *gmock_os << FormatDescription(true);\
+      }\
+      p0##_type p0;\
+      p1##_type p1;\
+      p2##_type p2;\
+      p3##_type p3;\
+      p4##_type p4;\
+      p5##_type p5;\
+      p6##_type p6;\
+      p7##_type p7;\
+     private:\
+      ::testing::internal::string FormatDescription(bool negation) const {\
+        const ::testing::internal::string gmock_description = (description);\
+        if (!gmock_description.empty())\
+          return gmock_description;\
+        return ::testing::internal::FormatMatcherDescription(\
+            negation, #name, \
+            ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
+                ::std::tr1::tuple<p0##_type, p1##_type, p2##_type, p3##_type, \
+                    p4##_type, p5##_type, p6##_type, p7##_type>(p0, p1, p2, \
+                    p3, p4, p5, p6, p7)));\
+      }\
+      GTEST_DISALLOW_ASSIGN_(gmock_Impl);\
+    };\
+    template <typename arg_type>\
+    operator ::testing::Matcher<arg_type>() const {\
+      return ::testing::Matcher<arg_type>(\
+          new gmock_Impl<arg_type>(p0, p1, p2, p3, p4, p5, p6, p7));\
+    }\
+    name##MatcherP8(p0##_type gmock_p0, p1##_type gmock_p1, \
+        p2##_type gmock_p2, p3##_type gmock_p3, p4##_type gmock_p4, \
+        p5##_type gmock_p5, p6##_type gmock_p6, \
+        p7##_type gmock_p7) : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), \
+        p3(gmock_p3), p4(gmock_p4), p5(gmock_p5), p6(gmock_p6), \
+        p7(gmock_p7) {\
+    }\
+    p0##_type p0;\
+    p1##_type p1;\
+    p2##_type p2;\
+    p3##_type p3;\
+    p4##_type p4;\
+    p5##_type p5;\
+    p6##_type p6;\
+    p7##_type p7;\
+   private:\
+    GTEST_DISALLOW_ASSIGN_(name##MatcherP8);\
+  };\
+  template <typename p0##_type, typename p1##_type, typename p2##_type, \
+      typename p3##_type, typename p4##_type, typename p5##_type, \
+      typename p6##_type, typename p7##_type>\
+  inline name##MatcherP8<p0##_type, p1##_type, p2##_type, p3##_type, \
+      p4##_type, p5##_type, p6##_type, p7##_type> name(p0##_type p0, \
+      p1##_type p1, p2##_type p2, p3##_type p3, p4##_type p4, p5##_type p5, \
+      p6##_type p6, p7##_type p7) {\
+    return name##MatcherP8<p0##_type, p1##_type, p2##_type, p3##_type, \
+        p4##_type, p5##_type, p6##_type, p7##_type>(p0, p1, p2, p3, p4, p5, \
+        p6, p7);\
+  }\
+  template <typename p0##_type, typename p1##_type, typename p2##_type, \
+      typename p3##_type, typename p4##_type, typename p5##_type, \
+      typename p6##_type, typename p7##_type>\
+  template <typename arg_type>\
+  bool name##MatcherP8<p0##_type, p1##_type, p2##_type, p3##_type, p4##_type, \
+      p5##_type, p6##_type, \
+      p7##_type>::gmock_Impl<arg_type>::MatchAndExplain(\
+      arg_type arg, \
+      ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\
+          const
+
+#define MATCHER_P9(name, p0, p1, p2, p3, p4, p5, p6, p7, p8, description)\
+  template <typename p0##_type, typename p1##_type, typename p2##_type, \
+      typename p3##_type, typename p4##_type, typename p5##_type, \
+      typename p6##_type, typename p7##_type, typename p8##_type>\
+  class name##MatcherP9 {\
+   public:\
+    template <typename arg_type>\
+    class gmock_Impl : public ::testing::MatcherInterface<arg_type> {\
+     public:\
+      gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
+          p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \
+          p6##_type gmock_p6, p7##_type gmock_p7, p8##_type gmock_p8)\
+           : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), p3(gmock_p3), \
+               p4(gmock_p4), p5(gmock_p5), p6(gmock_p6), p7(gmock_p7), \
+               p8(gmock_p8) {}\
+      virtual bool MatchAndExplain(\
+          arg_type arg, ::testing::MatchResultListener* result_listener) const;\
+      virtual void DescribeTo(::std::ostream* gmock_os) const {\
+        *gmock_os << FormatDescription(false);\
+      }\
+      virtual void DescribeNegationTo(::std::ostream* gmock_os) const {\
+        *gmock_os << FormatDescription(true);\
+      }\
+      p0##_type p0;\
+      p1##_type p1;\
+      p2##_type p2;\
+      p3##_type p3;\
+      p4##_type p4;\
+      p5##_type p5;\
+      p6##_type p6;\
+      p7##_type p7;\
+      p8##_type p8;\
+     private:\
+      ::testing::internal::string FormatDescription(bool negation) const {\
+        const ::testing::internal::string gmock_description = (description);\
+        if (!gmock_description.empty())\
+          return gmock_description;\
+        return ::testing::internal::FormatMatcherDescription(\
+            negation, #name, \
+            ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
+                ::std::tr1::tuple<p0##_type, p1##_type, p2##_type, p3##_type, \
+                    p4##_type, p5##_type, p6##_type, p7##_type, \
+                    p8##_type>(p0, p1, p2, p3, p4, p5, p6, p7, p8)));\
+      }\
+      GTEST_DISALLOW_ASSIGN_(gmock_Impl);\
+    };\
+    template <typename arg_type>\
+    operator ::testing::Matcher<arg_type>() const {\
+      return ::testing::Matcher<arg_type>(\
+          new gmock_Impl<arg_type>(p0, p1, p2, p3, p4, p5, p6, p7, p8));\
+    }\
+    name##MatcherP9(p0##_type gmock_p0, p1##_type gmock_p1, \
+        p2##_type gmock_p2, p3##_type gmock_p3, p4##_type gmock_p4, \
+        p5##_type gmock_p5, p6##_type gmock_p6, p7##_type gmock_p7, \
+        p8##_type gmock_p8) : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), \
+        p3(gmock_p3), p4(gmock_p4), p5(gmock_p5), p6(gmock_p6), p7(gmock_p7), \
+        p8(gmock_p8) {\
+    }\
+    p0##_type p0;\
+    p1##_type p1;\
+    p2##_type p2;\
+    p3##_type p3;\
+    p4##_type p4;\
+    p5##_type p5;\
+    p6##_type p6;\
+    p7##_type p7;\
+    p8##_type p8;\
+   private:\
+    GTEST_DISALLOW_ASSIGN_(name##MatcherP9);\
+  };\
+  template <typename p0##_type, typename p1##_type, typename p2##_type, \
+      typename p3##_type, typename p4##_type, typename p5##_type, \
+      typename p6##_type, typename p7##_type, typename p8##_type>\
+  inline name##MatcherP9<p0##_type, p1##_type, p2##_type, p3##_type, \
+      p4##_type, p5##_type, p6##_type, p7##_type, \
+      p8##_type> name(p0##_type p0, p1##_type p1, p2##_type p2, p3##_type p3, \
+      p4##_type p4, p5##_type p5, p6##_type p6, p7##_type p7, \
+      p8##_type p8) {\
+    return name##MatcherP9<p0##_type, p1##_type, p2##_type, p3##_type, \
+        p4##_type, p5##_type, p6##_type, p7##_type, p8##_type>(p0, p1, p2, \
+        p3, p4, p5, p6, p7, p8);\
+  }\
+  template <typename p0##_type, typename p1##_type, typename p2##_type, \
+      typename p3##_type, typename p4##_type, typename p5##_type, \
+      typename p6##_type, typename p7##_type, typename p8##_type>\
+  template <typename arg_type>\
+  bool name##MatcherP9<p0##_type, p1##_type, p2##_type, p3##_type, p4##_type, \
+      p5##_type, p6##_type, p7##_type, \
+      p8##_type>::gmock_Impl<arg_type>::MatchAndExplain(\
+      arg_type arg, \
+      ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\
+          const
+
+#define MATCHER_P10(name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, description)\
+  template <typename p0##_type, typename p1##_type, typename p2##_type, \
+      typename p3##_type, typename p4##_type, typename p5##_type, \
+      typename p6##_type, typename p7##_type, typename p8##_type, \
+      typename p9##_type>\
+  class name##MatcherP10 {\
+   public:\
+    template <typename arg_type>\
+    class gmock_Impl : public ::testing::MatcherInterface<arg_type> {\
+     public:\
+      gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
+          p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \
+          p6##_type gmock_p6, p7##_type gmock_p7, p8##_type gmock_p8, \
+          p9##_type gmock_p9)\
+           : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), p3(gmock_p3), \
+               p4(gmock_p4), p5(gmock_p5), p6(gmock_p6), p7(gmock_p7), \
+               p8(gmock_p8), p9(gmock_p9) {}\
+      virtual bool MatchAndExplain(\
+          arg_type arg, ::testing::MatchResultListener* result_listener) const;\
+      virtual void DescribeTo(::std::ostream* gmock_os) const {\
+        *gmock_os << FormatDescription(false);\
+      }\
+      virtual void DescribeNegationTo(::std::ostream* gmock_os) const {\
+        *gmock_os << FormatDescription(true);\
+      }\
+      p0##_type p0;\
+      p1##_type p1;\
+      p2##_type p2;\
+      p3##_type p3;\
+      p4##_type p4;\
+      p5##_type p5;\
+      p6##_type p6;\
+      p7##_type p7;\
+      p8##_type p8;\
+      p9##_type p9;\
+     private:\
+      ::testing::internal::string FormatDescription(bool negation) const {\
+        const ::testing::internal::string gmock_description = (description);\
+        if (!gmock_description.empty())\
+          return gmock_description;\
+        return ::testing::internal::FormatMatcherDescription(\
+            negation, #name, \
+            ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
+                ::std::tr1::tuple<p0##_type, p1##_type, p2##_type, p3##_type, \
+                    p4##_type, p5##_type, p6##_type, p7##_type, p8##_type, \
+                    p9##_type>(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9)));\
+      }\
+      GTEST_DISALLOW_ASSIGN_(gmock_Impl);\
+    };\
+    template <typename arg_type>\
+    operator ::testing::Matcher<arg_type>() const {\
+      return ::testing::Matcher<arg_type>(\
+          new gmock_Impl<arg_type>(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9));\
+    }\
+    name##MatcherP10(p0##_type gmock_p0, p1##_type gmock_p1, \
+        p2##_type gmock_p2, p3##_type gmock_p3, p4##_type gmock_p4, \
+        p5##_type gmock_p5, p6##_type gmock_p6, p7##_type gmock_p7, \
+        p8##_type gmock_p8, p9##_type gmock_p9) : p0(gmock_p0), p1(gmock_p1), \
+        p2(gmock_p2), p3(gmock_p3), p4(gmock_p4), p5(gmock_p5), p6(gmock_p6), \
+        p7(gmock_p7), p8(gmock_p8), p9(gmock_p9) {\
+    }\
+    p0##_type p0;\
+    p1##_type p1;\
+    p2##_type p2;\
+    p3##_type p3;\
+    p4##_type p4;\
+    p5##_type p5;\
+    p6##_type p6;\
+    p7##_type p7;\
+    p8##_type p8;\
+    p9##_type p9;\
+   private:\
+    GTEST_DISALLOW_ASSIGN_(name##MatcherP10);\
+  };\
+  template <typename p0##_type, typename p1##_type, typename p2##_type, \
+      typename p3##_type, typename p4##_type, typename p5##_type, \
+      typename p6##_type, typename p7##_type, typename p8##_type, \
+      typename p9##_type>\
+  inline name##MatcherP10<p0##_type, p1##_type, p2##_type, p3##_type, \
+      p4##_type, p5##_type, p6##_type, p7##_type, p8##_type, \
+      p9##_type> name(p0##_type p0, p1##_type p1, p2##_type p2, p3##_type p3, \
+      p4##_type p4, p5##_type p5, p6##_type p6, p7##_type p7, p8##_type p8, \
+      p9##_type p9) {\
+    return name##MatcherP10<p0##_type, p1##_type, p2##_type, p3##_type, \
+        p4##_type, p5##_type, p6##_type, p7##_type, p8##_type, p9##_type>(p0, \
+        p1, p2, p3, p4, p5, p6, p7, p8, p9);\
+  }\
+  template <typename p0##_type, typename p1##_type, typename p2##_type, \
+      typename p3##_type, typename p4##_type, typename p5##_type, \
+      typename p6##_type, typename p7##_type, typename p8##_type, \
+      typename p9##_type>\
+  template <typename arg_type>\
+  bool name##MatcherP10<p0##_type, p1##_type, p2##_type, p3##_type, \
+      p4##_type, p5##_type, p6##_type, p7##_type, p8##_type, \
+      p9##_type>::gmock_Impl<arg_type>::MatchAndExplain(\
+      arg_type arg, \
+      ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\
+          const
+
+#endif  // GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_MATCHERS_H_
diff --git a/google-breakpad/src/testing/include/gmock/gmock-generated-matchers.h.pump b/google-breakpad/src/testing/include/gmock/gmock-generated-matchers.h.pump
new file mode 100644
index 0000000..7cdb84b
--- /dev/null
+++ b/google-breakpad/src/testing/include/gmock/gmock-generated-matchers.h.pump
@@ -0,0 +1,705 @@
+$$ -*- mode: c++; -*-
+$$ This is a Pump source file.  Please use Pump to convert it to
+$$ gmock-generated-actions.h.
+$$
+$var n = 10  $$ The maximum arity we support.
+$$ }} This line fixes auto-indentation of the following code in Emacs.
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Google Mock - a framework for writing C++ mock classes.
+//
+// This file implements some commonly used variadic matchers.
+
+#ifndef GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_MATCHERS_H_
+#define GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_MATCHERS_H_
+
+#include <sstream>
+#include <string>
+#include <vector>
+#include "gmock/gmock-matchers.h"
+
+namespace testing {
+namespace internal {
+
+$range i 0..n-1
+
+// The type of the i-th (0-based) field of Tuple.
+#define GMOCK_FIELD_TYPE_(Tuple, i) \
+    typename ::std::tr1::tuple_element<i, Tuple>::type
+
+// TupleFields<Tuple, k0, ..., kn> is for selecting fields from a
+// tuple of type Tuple.  It has two members:
+//
+//   type: a tuple type whose i-th field is the ki-th field of Tuple.
+//   GetSelectedFields(t): returns fields k0, ..., and kn of t as a tuple.
+//
+// For example, in class TupleFields<tuple<bool, char, int>, 2, 0>, we have:
+//
+//   type is tuple<int, bool>, and
+//   GetSelectedFields(make_tuple(true, 'a', 42)) is (42, true).
+
+template <class Tuple$for i [[, int k$i = -1]]>
+class TupleFields;
+
+// This generic version is used when there are $n selectors.
+template <class Tuple$for i [[, int k$i]]>
+class TupleFields {
+ public:
+  typedef ::std::tr1::tuple<$for i, [[GMOCK_FIELD_TYPE_(Tuple, k$i)]]> type;
+  static type GetSelectedFields(const Tuple& t) {
+    using ::std::tr1::get;
+    return type($for i, [[get<k$i>(t)]]);
+  }
+};
+
+// The following specialization is used for 0 ~ $(n-1) selectors.
+
+$for i [[
+$$ }}}
+$range j 0..i-1
+$range k 0..n-1
+
+template <class Tuple$for j [[, int k$j]]>
+class TupleFields<Tuple, $for k, [[$if k < i [[k$k]] $else [[-1]]]]> {
+ public:
+  typedef ::std::tr1::tuple<$for j, [[GMOCK_FIELD_TYPE_(Tuple, k$j)]]> type;
+  static type GetSelectedFields(const Tuple& $if i==0 [[/* t */]] $else [[t]]) {
+    using ::std::tr1::get;
+    return type($for j, [[get<k$j>(t)]]);
+  }
+};
+
+]]
+
+#undef GMOCK_FIELD_TYPE_
+
+// Implements the Args() matcher.
+
+$var ks = [[$for i, [[k$i]]]]
+template <class ArgsTuple$for i [[, int k$i = -1]]>
+class ArgsMatcherImpl : public MatcherInterface<ArgsTuple> {
+ public:
+  // ArgsTuple may have top-level const or reference modifiers.
+  typedef GTEST_REMOVE_REFERENCE_AND_CONST_(ArgsTuple) RawArgsTuple;
+  typedef typename internal::TupleFields<RawArgsTuple, $ks>::type SelectedArgs;
+  typedef Matcher<const SelectedArgs&> MonomorphicInnerMatcher;
+
+  template <typename InnerMatcher>
+  explicit ArgsMatcherImpl(const InnerMatcher& inner_matcher)
+      : inner_matcher_(SafeMatcherCast<const SelectedArgs&>(inner_matcher)) {}
+
+  virtual bool MatchAndExplain(ArgsTuple args,
+                               MatchResultListener* listener) const {
+    const SelectedArgs& selected_args = GetSelectedArgs(args);
+    if (!listener->IsInterested())
+      return inner_matcher_.Matches(selected_args);
+
+    PrintIndices(listener->stream());
+    *listener << "are " << PrintToString(selected_args);
+
+    StringMatchResultListener inner_listener;
+    const bool match = inner_matcher_.MatchAndExplain(selected_args,
+                                                      &inner_listener);
+    PrintIfNotEmpty(inner_listener.str(), listener->stream());
+    return match;
+  }
+
+  virtual void DescribeTo(::std::ostream* os) const {
+    *os << "are a tuple ";
+    PrintIndices(os);
+    inner_matcher_.DescribeTo(os);
+  }
+
+  virtual void DescribeNegationTo(::std::ostream* os) const {
+    *os << "are a tuple ";
+    PrintIndices(os);
+    inner_matcher_.DescribeNegationTo(os);
+  }
+
+ private:
+  static SelectedArgs GetSelectedArgs(ArgsTuple args) {
+    return TupleFields<RawArgsTuple, $ks>::GetSelectedFields(args);
+  }
+
+  // Prints the indices of the selected fields.
+  static void PrintIndices(::std::ostream* os) {
+    *os << "whose fields (";
+    const int indices[$n] = { $ks };
+    for (int i = 0; i < $n; i++) {
+      if (indices[i] < 0)
+        break;
+
+      if (i >= 1)
+        *os << ", ";
+
+      *os << "#" << indices[i];
+    }
+    *os << ") ";
+  }
+
+  const MonomorphicInnerMatcher inner_matcher_;
+
+  GTEST_DISALLOW_ASSIGN_(ArgsMatcherImpl);
+};
+
+template <class InnerMatcher$for i [[, int k$i = -1]]>
+class ArgsMatcher {
+ public:
+  explicit ArgsMatcher(const InnerMatcher& inner_matcher)
+      : inner_matcher_(inner_matcher) {}
+
+  template <typename ArgsTuple>
+  operator Matcher<ArgsTuple>() const {
+    return MakeMatcher(new ArgsMatcherImpl<ArgsTuple, $ks>(inner_matcher_));
+  }
+
+ private:
+  const InnerMatcher inner_matcher_;
+
+  GTEST_DISALLOW_ASSIGN_(ArgsMatcher);
+};
+
+// Implements ElementsAre() of 1-$n arguments.
+
+
+$range i 1..n
+$for i [[
+$range j 1..i
+template <$for j, [[typename T$j]]>
+class ElementsAreMatcher$i {
+ public:
+  $if i==1 [[explicit ]]ElementsAreMatcher$i($for j, [[const T$j& e$j]])$if i > 0 [[ : ]]
+      $for j, [[e$j[[]]_(e$j)]] {}
+
+  template <typename Container>
+  operator Matcher<Container>() const {
+    typedef GTEST_REMOVE_REFERENCE_AND_CONST_(Container) RawContainer;
+    typedef typename internal::StlContainerView<RawContainer>::type::value_type
+        Element;
+
+$if i==1 [[
+
+    // Nokia's Symbian Compiler has a nasty bug where the object put
+    // in a one-element local array is not destructed when the array
+    // goes out of scope.  This leads to obvious badness as we've
+    // added the linked_ptr in it to our other linked_ptrs list.
+    // Hence we implement ElementsAreMatcher1 specially to avoid using
+    // a local array.
+    const Matcher<const Element&> matcher =
+        MatcherCast<const Element&>(e1_);
+    return MakeMatcher(new ElementsAreMatcherImpl<Container>(&matcher, 1));
+]] $else [[
+
+    const Matcher<const Element&> matchers[] = {
+
+$for j [[
+      MatcherCast<const Element&>(e$j[[]]_),
+
+]]
+    };
+
+    return MakeMatcher(new ElementsAreMatcherImpl<Container>(matchers, $i));
+]]
+
+  }
+
+ private:
+
+$for j [[
+  const T$j& e$j[[]]_;
+
+]]
+
+  GTEST_DISALLOW_ASSIGN_(ElementsAreMatcher$i);
+};
+
+
+]]
+// A set of metafunctions for computing the result type of AllOf.
+// AllOf(m1, ..., mN) returns
+// AllOfResultN<decltype(m1), ..., decltype(mN)>::type.
+
+// Although AllOf isn't defined for one argument, AllOfResult1 is defined
+// to simplify the implementation.
+template <typename M1>
+struct AllOfResult1 {
+  typedef M1 type;
+};
+
+$range i 1..n
+
+$range i 2..n
+$for i [[
+$range j 2..i
+$var m = i/2
+$range k 1..m
+$range t m+1..i
+
+template <typename M1$for j [[, typename M$j]]>
+struct AllOfResult$i {
+  typedef BothOfMatcher<
+      typename AllOfResult$m<$for k, [[M$k]]>::type,
+      typename AllOfResult$(i-m)<$for t, [[M$t]]>::type
+  > type;
+};
+
+]]
+
+// A set of metafunctions for computing the result type of AnyOf.
+// AnyOf(m1, ..., mN) returns
+// AnyOfResultN<decltype(m1), ..., decltype(mN)>::type.
+
+// Although AnyOf isn't defined for one argument, AnyOfResult1 is defined
+// to simplify the implementation.
+template <typename M1>
+struct AnyOfResult1 {
+  typedef M1 type;
+};
+
+$range i 1..n
+
+$range i 2..n
+$for i [[
+$range j 2..i
+$var m = i/2
+$range k 1..m
+$range t m+1..i
+
+template <typename M1$for j [[, typename M$j]]>
+struct AnyOfResult$i {
+  typedef EitherOfMatcher<
+      typename AnyOfResult$m<$for k, [[M$k]]>::type,
+      typename AnyOfResult$(i-m)<$for t, [[M$t]]>::type
+  > type;
+};
+
+]]
+
+}  // namespace internal
+
+// Args<N1, N2, ..., Nk>(a_matcher) matches a tuple if the selected
+// fields of it matches a_matcher.  C++ doesn't support default
+// arguments for function templates, so we have to overload it.
+
+$range i 0..n
+$for i [[
+$range j 1..i
+template <$for j [[int k$j, ]]typename InnerMatcher>
+inline internal::ArgsMatcher<InnerMatcher$for j [[, k$j]]>
+Args(const InnerMatcher& matcher) {
+  return internal::ArgsMatcher<InnerMatcher$for j [[, k$j]]>(matcher);
+}
+
+
+]]
+// ElementsAre(e0, e1, ..., e_n) matches an STL-style container with
+// (n + 1) elements, where the i-th element in the container must
+// match the i-th argument in the list.  Each argument of
+// ElementsAre() can be either a value or a matcher.  We support up to
+// $n arguments.
+//
+// NOTE: Since ElementsAre() cares about the order of the elements, it
+// must not be used with containers whose elements's order is
+// undefined (e.g. hash_map).
+
+inline internal::ElementsAreMatcher0 ElementsAre() {
+  return internal::ElementsAreMatcher0();
+}
+
+$range i 1..n
+$for i [[
+$range j 1..i
+
+template <$for j, [[typename T$j]]>
+inline internal::ElementsAreMatcher$i<$for j, [[T$j]]> ElementsAre($for j, [[const T$j& e$j]]) {
+  return internal::ElementsAreMatcher$i<$for j, [[T$j]]>($for j, [[e$j]]);
+}
+
+]]
+
+// ElementsAreArray(array) and ElementAreArray(array, count) are like
+// ElementsAre(), except that they take an array of values or
+// matchers.  The former form infers the size of 'array', which must
+// be a static C-style array.  In the latter form, 'array' can either
+// be a static array or a pointer to a dynamically created array.
+
+template <typename T>
+inline internal::ElementsAreArrayMatcher<T> ElementsAreArray(
+    const T* first, size_t count) {
+  return internal::ElementsAreArrayMatcher<T>(first, count);
+}
+
+template <typename T, size_t N>
+inline internal::ElementsAreArrayMatcher<T>
+ElementsAreArray(const T (&array)[N]) {
+  return internal::ElementsAreArrayMatcher<T>(array, N);
+}
+
+// AllOf(m1, m2, ..., mk) matches any value that matches all of the given
+// sub-matchers.  AllOf is called fully qualified to prevent ADL from firing.
+
+$range i 2..n
+$for i [[
+$range j 1..i
+$var m = i/2
+$range k 1..m
+$range t m+1..i
+
+template <$for j, [[typename M$j]]>
+inline typename internal::AllOfResult$i<$for j, [[M$j]]>::type
+AllOf($for j, [[M$j m$j]]) {
+  return typename internal::AllOfResult$i<$for j, [[M$j]]>::type(
+      $if m == 1 [[m1]] $else [[::testing::AllOf($for k, [[m$k]])]],
+      $if m+1 == i [[m$i]] $else [[::testing::AllOf($for t, [[m$t]])]]);
+}
+
+]]
+
+// AnyOf(m1, m2, ..., mk) matches any value that matches any of the given
+// sub-matchers.  AnyOf is called fully qualified to prevent ADL from firing.
+
+$range i 2..n
+$for i [[
+$range j 1..i
+$var m = i/2
+$range k 1..m
+$range t m+1..i
+
+template <$for j, [[typename M$j]]>
+inline typename internal::AnyOfResult$i<$for j, [[M$j]]>::type
+AnyOf($for j, [[M$j m$j]]) {
+  return typename internal::AnyOfResult$i<$for j, [[M$j]]>::type(
+      $if m == 1 [[m1]] $else [[::testing::AnyOf($for k, [[m$k]])]],
+      $if m+1 == i [[m$i]] $else [[::testing::AnyOf($for t, [[m$t]])]]);
+}
+
+]]
+
+}  // namespace testing
+$$ } // This Pump meta comment fixes auto-indentation in Emacs. It will not
+$$   // show up in the generated code.
+
+
+// The MATCHER* family of macros can be used in a namespace scope to
+// define custom matchers easily.
+//
+// Basic Usage
+// ===========
+//
+// The syntax
+//
+//   MATCHER(name, description_string) { statements; }
+//
+// defines a matcher with the given name that executes the statements,
+// which must return a bool to indicate if the match succeeds.  Inside
+// the statements, you can refer to the value being matched by 'arg',
+// and refer to its type by 'arg_type'.
+//
+// The description string documents what the matcher does, and is used
+// to generate the failure message when the match fails.  Since a
+// MATCHER() is usually defined in a header file shared by multiple
+// C++ source files, we require the description to be a C-string
+// literal to avoid possible side effects.  It can be empty, in which
+// case we'll use the sequence of words in the matcher name as the
+// description.
+//
+// For example:
+//
+//   MATCHER(IsEven, "") { return (arg % 2) == 0; }
+//
+// allows you to write
+//
+//   // Expects mock_foo.Bar(n) to be called where n is even.
+//   EXPECT_CALL(mock_foo, Bar(IsEven()));
+//
+// or,
+//
+//   // Verifies that the value of some_expression is even.
+//   EXPECT_THAT(some_expression, IsEven());
+//
+// If the above assertion fails, it will print something like:
+//
+//   Value of: some_expression
+//   Expected: is even
+//     Actual: 7
+//
+// where the description "is even" is automatically calculated from the
+// matcher name IsEven.
+//
+// Argument Type
+// =============
+//
+// Note that the type of the value being matched (arg_type) is
+// determined by the context in which you use the matcher and is
+// supplied to you by the compiler, so you don't need to worry about
+// declaring it (nor can you).  This allows the matcher to be
+// polymorphic.  For example, IsEven() can be used to match any type
+// where the value of "(arg % 2) == 0" can be implicitly converted to
+// a bool.  In the "Bar(IsEven())" example above, if method Bar()
+// takes an int, 'arg_type' will be int; if it takes an unsigned long,
+// 'arg_type' will be unsigned long; and so on.
+//
+// Parameterizing Matchers
+// =======================
+//
+// Sometimes you'll want to parameterize the matcher.  For that you
+// can use another macro:
+//
+//   MATCHER_P(name, param_name, description_string) { statements; }
+//
+// For example:
+//
+//   MATCHER_P(HasAbsoluteValue, value, "") { return abs(arg) == value; }
+//
+// will allow you to write:
+//
+//   EXPECT_THAT(Blah("a"), HasAbsoluteValue(n));
+//
+// which may lead to this message (assuming n is 10):
+//
+//   Value of: Blah("a")
+//   Expected: has absolute value 10
+//     Actual: -9
+//
+// Note that both the matcher description and its parameter are
+// printed, making the message human-friendly.
+//
+// In the matcher definition body, you can write 'foo_type' to
+// reference the type of a parameter named 'foo'.  For example, in the
+// body of MATCHER_P(HasAbsoluteValue, value) above, you can write
+// 'value_type' to refer to the type of 'value'.
+//
+// We also provide MATCHER_P2, MATCHER_P3, ..., up to MATCHER_P$n to
+// support multi-parameter matchers.
+//
+// Describing Parameterized Matchers
+// =================================
+//
+// The last argument to MATCHER*() is a string-typed expression.  The
+// expression can reference all of the matcher's parameters and a
+// special bool-typed variable named 'negation'.  When 'negation' is
+// false, the expression should evaluate to the matcher's description;
+// otherwise it should evaluate to the description of the negation of
+// the matcher.  For example,
+//
+//   using testing::PrintToString;
+//
+//   MATCHER_P2(InClosedRange, low, hi,
+//       string(negation ? "is not" : "is") + " in range [" +
+//       PrintToString(low) + ", " + PrintToString(hi) + "]") {
+//     return low <= arg && arg <= hi;
+//   }
+//   ...
+//   EXPECT_THAT(3, InClosedRange(4, 6));
+//   EXPECT_THAT(3, Not(InClosedRange(2, 4)));
+//
+// would generate two failures that contain the text:
+//
+//   Expected: is in range [4, 6]
+//   ...
+//   Expected: is not in range [2, 4]
+//
+// If you specify "" as the description, the failure message will
+// contain the sequence of words in the matcher name followed by the
+// parameter values printed as a tuple.  For example,
+//
+//   MATCHER_P2(InClosedRange, low, hi, "") { ... }
+//   ...
+//   EXPECT_THAT(3, InClosedRange(4, 6));
+//   EXPECT_THAT(3, Not(InClosedRange(2, 4)));
+//
+// would generate two failures that contain the text:
+//
+//   Expected: in closed range (4, 6)
+//   ...
+//   Expected: not (in closed range (2, 4))
+//
+// Types of Matcher Parameters
+// ===========================
+//
+// For the purpose of typing, you can view
+//
+//   MATCHER_Pk(Foo, p1, ..., pk, description_string) { ... }
+//
+// as shorthand for
+//
+//   template <typename p1_type, ..., typename pk_type>
+//   FooMatcherPk<p1_type, ..., pk_type>
+//   Foo(p1_type p1, ..., pk_type pk) { ... }
+//
+// When you write Foo(v1, ..., vk), the compiler infers the types of
+// the parameters v1, ..., and vk for you.  If you are not happy with
+// the result of the type inference, you can specify the types by
+// explicitly instantiating the template, as in Foo<long, bool>(5,
+// false).  As said earlier, you don't get to (or need to) specify
+// 'arg_type' as that's determined by the context in which the matcher
+// is used.  You can assign the result of expression Foo(p1, ..., pk)
+// to a variable of type FooMatcherPk<p1_type, ..., pk_type>.  This
+// can be useful when composing matchers.
+//
+// While you can instantiate a matcher template with reference types,
+// passing the parameters by pointer usually makes your code more
+// readable.  If, however, you still want to pass a parameter by
+// reference, be aware that in the failure message generated by the
+// matcher you will see the value of the referenced object but not its
+// address.
+//
+// Explaining Match Results
+// ========================
+//
+// Sometimes the matcher description alone isn't enough to explain why
+// the match has failed or succeeded.  For example, when expecting a
+// long string, it can be very helpful to also print the diff between
+// the expected string and the actual one.  To achieve that, you can
+// optionally stream additional information to a special variable
+// named result_listener, whose type is a pointer to class
+// MatchResultListener:
+//
+//   MATCHER_P(EqualsLongString, str, "") {
+//     if (arg == str) return true;
+//
+//     *result_listener << "the difference: "
+///                     << DiffStrings(str, arg);
+//     return false;
+//   }
+//
+// Overloading Matchers
+// ====================
+//
+// You can overload matchers with different numbers of parameters:
+//
+//   MATCHER_P(Blah, a, description_string1) { ... }
+//   MATCHER_P2(Blah, a, b, description_string2) { ... }
+//
+// Caveats
+// =======
+//
+// When defining a new matcher, you should also consider implementing
+// MatcherInterface or using MakePolymorphicMatcher().  These
+// approaches require more work than the MATCHER* macros, but also
+// give you more control on the types of the value being matched and
+// the matcher parameters, which may leads to better compiler error
+// messages when the matcher is used wrong.  They also allow
+// overloading matchers based on parameter types (as opposed to just
+// based on the number of parameters).
+//
+// MATCHER*() can only be used in a namespace scope.  The reason is
+// that C++ doesn't yet allow function-local types to be used to
+// instantiate templates.  The up-coming C++0x standard will fix this.
+// Once that's done, we'll consider supporting using MATCHER*() inside
+// a function.
+//
+// More Information
+// ================
+//
+// To learn more about using these macros, please search for 'MATCHER'
+// on http://code.google.com/p/googlemock/wiki/CookBook.
+
+$range i 0..n
+$for i
+
+[[
+$var macro_name = [[$if i==0 [[MATCHER]] $elif i==1 [[MATCHER_P]]
+                                         $else [[MATCHER_P$i]]]]
+$var class_name = [[name##Matcher[[$if i==0 [[]] $elif i==1 [[P]]
+                                                 $else [[P$i]]]]]]
+$range j 0..i-1
+$var template = [[$if i==0 [[]] $else [[
+
+  template <$for j, [[typename p$j##_type]]>\
+]]]]
+$var ctor_param_list = [[$for j, [[p$j##_type gmock_p$j]]]]
+$var impl_ctor_param_list = [[$for j, [[p$j##_type gmock_p$j]]]]
+$var impl_inits = [[$if i==0 [[]] $else [[ : $for j, [[p$j(gmock_p$j)]]]]]]
+$var inits = [[$if i==0 [[]] $else [[ : $for j, [[p$j(gmock_p$j)]]]]]]
+$var params = [[$for j, [[p$j]]]]
+$var param_types = [[$if i==0 [[]] $else [[<$for j, [[p$j##_type]]>]]]]
+$var param_types_and_names = [[$for j, [[p$j##_type p$j]]]]
+$var param_field_decls = [[$for j
+[[
+
+      p$j##_type p$j;\
+]]]]
+$var param_field_decls2 = [[$for j
+[[
+
+    p$j##_type p$j;\
+]]]]
+
+#define $macro_name(name$for j [[, p$j]], description)\$template
+  class $class_name {\
+   public:\
+    template <typename arg_type>\
+    class gmock_Impl : public ::testing::MatcherInterface<arg_type> {\
+     public:\
+      [[$if i==1 [[explicit ]]]]gmock_Impl($impl_ctor_param_list)\
+          $impl_inits {}\
+      virtual bool MatchAndExplain(\
+          arg_type arg, ::testing::MatchResultListener* result_listener) const;\
+      virtual void DescribeTo(::std::ostream* gmock_os) const {\
+        *gmock_os << FormatDescription(false);\
+      }\
+      virtual void DescribeNegationTo(::std::ostream* gmock_os) const {\
+        *gmock_os << FormatDescription(true);\
+      }\$param_field_decls
+     private:\
+      ::testing::internal::string FormatDescription(bool negation) const {\
+        const ::testing::internal::string gmock_description = (description);\
+        if (!gmock_description.empty())\
+          return gmock_description;\
+        return ::testing::internal::FormatMatcherDescription(\
+            negation, #name, \
+            ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
+                ::std::tr1::tuple<$for j, [[p$j##_type]]>($for j, [[p$j]])));\
+      }\
+      GTEST_DISALLOW_ASSIGN_(gmock_Impl);\
+    };\
+    template <typename arg_type>\
+    operator ::testing::Matcher<arg_type>() const {\
+      return ::testing::Matcher<arg_type>(\
+          new gmock_Impl<arg_type>($params));\
+    }\
+    $class_name($ctor_param_list)$inits {\
+    }\$param_field_decls2
+   private:\
+    GTEST_DISALLOW_ASSIGN_($class_name);\
+  };\$template
+  inline $class_name$param_types name($param_types_and_names) {\
+    return $class_name$param_types($params);\
+  }\$template
+  template <typename arg_type>\
+  bool $class_name$param_types::gmock_Impl<arg_type>::MatchAndExplain(\
+      arg_type arg, \
+      ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\
+          const
+]]
+
+
+#endif  // GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_MATCHERS_H_
diff --git a/google-breakpad/src/testing/include/gmock/gmock-generated-nice-strict.h b/google-breakpad/src/testing/include/gmock/gmock-generated-nice-strict.h
new file mode 100644
index 0000000..6099e81
--- /dev/null
+++ b/google-breakpad/src/testing/include/gmock/gmock-generated-nice-strict.h
@@ -0,0 +1,274 @@
+// This file was GENERATED by a script.  DO NOT EDIT BY HAND!!!
+
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Implements class templates NiceMock and StrictMock.
+//
+// Given a mock class MockFoo that is created using Google Mock,
+// NiceMock<MockFoo> is a subclass of MockFoo that allows
+// uninteresting calls (i.e. calls to mock methods that have no
+// EXPECT_CALL specs), and StrictMock<MockFoo> is a subclass of
+// MockFoo that treats all uninteresting calls as errors.
+//
+// NiceMock and StrictMock "inherits" the constructors of their
+// respective base class, with up-to 10 arguments.  Therefore you can
+// write NiceMock<MockFoo>(5, "a") to construct a nice mock where
+// MockFoo has a constructor that accepts (int, const char*), for
+// example.
+//
+// A known limitation is that NiceMock<MockFoo> and
+// StrictMock<MockFoo> only works for mock methods defined using the
+// MOCK_METHOD* family of macros DIRECTLY in the MockFoo class.  If a
+// mock method is defined in a base class of MockFoo, the "nice" or
+// "strict" modifier may not affect it, depending on the compiler.  In
+// particular, nesting NiceMock and StrictMock is NOT supported.
+//
+// Another known limitation is that the constructors of the base mock
+// cannot have arguments passed by non-const reference, which are
+// banned by the Google C++ style guide anyway.
+
+#ifndef GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_NICE_STRICT_H_
+#define GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_NICE_STRICT_H_
+
+#include "gmock/gmock-spec-builders.h"
+#include "gmock/internal/gmock-port.h"
+
+namespace testing {
+
+template <class MockClass>
+class NiceMock : public MockClass {
+ public:
+  // We don't factor out the constructor body to a common method, as
+  // we have to avoid a possible clash with members of MockClass.
+  NiceMock() {
+    ::testing::Mock::AllowUninterestingCalls(
+        internal::ImplicitCast_<MockClass*>(this));
+  }
+
+  // C++ doesn't (yet) allow inheritance of constructors, so we have
+  // to define it for each arity.
+  template <typename A1>
+  explicit NiceMock(const A1& a1) : MockClass(a1) {
+    ::testing::Mock::AllowUninterestingCalls(
+        internal::ImplicitCast_<MockClass*>(this));
+  }
+  template <typename A1, typename A2>
+  NiceMock(const A1& a1, const A2& a2) : MockClass(a1, a2) {
+    ::testing::Mock::AllowUninterestingCalls(
+        internal::ImplicitCast_<MockClass*>(this));
+  }
+
+  template <typename A1, typename A2, typename A3>
+  NiceMock(const A1& a1, const A2& a2, const A3& a3) : MockClass(a1, a2, a3) {
+    ::testing::Mock::AllowUninterestingCalls(
+        internal::ImplicitCast_<MockClass*>(this));
+  }
+
+  template <typename A1, typename A2, typename A3, typename A4>
+  NiceMock(const A1& a1, const A2& a2, const A3& a3,
+      const A4& a4) : MockClass(a1, a2, a3, a4) {
+    ::testing::Mock::AllowUninterestingCalls(
+        internal::ImplicitCast_<MockClass*>(this));
+  }
+
+  template <typename A1, typename A2, typename A3, typename A4, typename A5>
+  NiceMock(const A1& a1, const A2& a2, const A3& a3, const A4& a4,
+      const A5& a5) : MockClass(a1, a2, a3, a4, a5) {
+    ::testing::Mock::AllowUninterestingCalls(
+        internal::ImplicitCast_<MockClass*>(this));
+  }
+
+  template <typename A1, typename A2, typename A3, typename A4, typename A5,
+      typename A6>
+  NiceMock(const A1& a1, const A2& a2, const A3& a3, const A4& a4,
+      const A5& a5, const A6& a6) : MockClass(a1, a2, a3, a4, a5, a6) {
+    ::testing::Mock::AllowUninterestingCalls(
+        internal::ImplicitCast_<MockClass*>(this));
+  }
+
+  template <typename A1, typename A2, typename A3, typename A4, typename A5,
+      typename A6, typename A7>
+  NiceMock(const A1& a1, const A2& a2, const A3& a3, const A4& a4,
+      const A5& a5, const A6& a6, const A7& a7) : MockClass(a1, a2, a3, a4, a5,
+      a6, a7) {
+    ::testing::Mock::AllowUninterestingCalls(
+        internal::ImplicitCast_<MockClass*>(this));
+  }
+
+  template <typename A1, typename A2, typename A3, typename A4, typename A5,
+      typename A6, typename A7, typename A8>
+  NiceMock(const A1& a1, const A2& a2, const A3& a3, const A4& a4,
+      const A5& a5, const A6& a6, const A7& a7, const A8& a8) : MockClass(a1,
+      a2, a3, a4, a5, a6, a7, a8) {
+    ::testing::Mock::AllowUninterestingCalls(
+        internal::ImplicitCast_<MockClass*>(this));
+  }
+
+  template <typename A1, typename A2, typename A3, typename A4, typename A5,
+      typename A6, typename A7, typename A8, typename A9>
+  NiceMock(const A1& a1, const A2& a2, const A3& a3, const A4& a4,
+      const A5& a5, const A6& a6, const A7& a7, const A8& a8,
+      const A9& a9) : MockClass(a1, a2, a3, a4, a5, a6, a7, a8, a9) {
+    ::testing::Mock::AllowUninterestingCalls(
+        internal::ImplicitCast_<MockClass*>(this));
+  }
+
+  template <typename A1, typename A2, typename A3, typename A4, typename A5,
+      typename A6, typename A7, typename A8, typename A9, typename A10>
+  NiceMock(const A1& a1, const A2& a2, const A3& a3, const A4& a4,
+      const A5& a5, const A6& a6, const A7& a7, const A8& a8, const A9& a9,
+      const A10& a10) : MockClass(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {
+    ::testing::Mock::AllowUninterestingCalls(
+        internal::ImplicitCast_<MockClass*>(this));
+  }
+
+  virtual ~NiceMock() {
+    ::testing::Mock::UnregisterCallReaction(
+        internal::ImplicitCast_<MockClass*>(this));
+  }
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(NiceMock);
+};
+
+template <class MockClass>
+class StrictMock : public MockClass {
+ public:
+  // We don't factor out the constructor body to a common method, as
+  // we have to avoid a possible clash with members of MockClass.
+  StrictMock() {
+    ::testing::Mock::FailUninterestingCalls(
+        internal::ImplicitCast_<MockClass*>(this));
+  }
+
+  template <typename A1>
+  explicit StrictMock(const A1& a1) : MockClass(a1) {
+    ::testing::Mock::FailUninterestingCalls(
+        internal::ImplicitCast_<MockClass*>(this));
+  }
+  template <typename A1, typename A2>
+  StrictMock(const A1& a1, const A2& a2) : MockClass(a1, a2) {
+    ::testing::Mock::FailUninterestingCalls(
+        internal::ImplicitCast_<MockClass*>(this));
+  }
+
+  template <typename A1, typename A2, typename A3>
+  StrictMock(const A1& a1, const A2& a2, const A3& a3) : MockClass(a1, a2, a3) {
+    ::testing::Mock::FailUninterestingCalls(
+        internal::ImplicitCast_<MockClass*>(this));
+  }
+
+  template <typename A1, typename A2, typename A3, typename A4>
+  StrictMock(const A1& a1, const A2& a2, const A3& a3,
+      const A4& a4) : MockClass(a1, a2, a3, a4) {
+    ::testing::Mock::FailUninterestingCalls(
+        internal::ImplicitCast_<MockClass*>(this));
+  }
+
+  template <typename A1, typename A2, typename A3, typename A4, typename A5>
+  StrictMock(const A1& a1, const A2& a2, const A3& a3, const A4& a4,
+      const A5& a5) : MockClass(a1, a2, a3, a4, a5) {
+    ::testing::Mock::FailUninterestingCalls(
+        internal::ImplicitCast_<MockClass*>(this));
+  }
+
+  template <typename A1, typename A2, typename A3, typename A4, typename A5,
+      typename A6>
+  StrictMock(const A1& a1, const A2& a2, const A3& a3, const A4& a4,
+      const A5& a5, const A6& a6) : MockClass(a1, a2, a3, a4, a5, a6) {
+    ::testing::Mock::FailUninterestingCalls(
+        internal::ImplicitCast_<MockClass*>(this));
+  }
+
+  template <typename A1, typename A2, typename A3, typename A4, typename A5,
+      typename A6, typename A7>
+  StrictMock(const A1& a1, const A2& a2, const A3& a3, const A4& a4,
+      const A5& a5, const A6& a6, const A7& a7) : MockClass(a1, a2, a3, a4, a5,
+      a6, a7) {
+    ::testing::Mock::FailUninterestingCalls(
+        internal::ImplicitCast_<MockClass*>(this));
+  }
+
+  template <typename A1, typename A2, typename A3, typename A4, typename A5,
+      typename A6, typename A7, typename A8>
+  StrictMock(const A1& a1, const A2& a2, const A3& a3, const A4& a4,
+      const A5& a5, const A6& a6, const A7& a7, const A8& a8) : MockClass(a1,
+      a2, a3, a4, a5, a6, a7, a8) {
+    ::testing::Mock::FailUninterestingCalls(
+        internal::ImplicitCast_<MockClass*>(this));
+  }
+
+  template <typename A1, typename A2, typename A3, typename A4, typename A5,
+      typename A6, typename A7, typename A8, typename A9>
+  StrictMock(const A1& a1, const A2& a2, const A3& a3, const A4& a4,
+      const A5& a5, const A6& a6, const A7& a7, const A8& a8,
+      const A9& a9) : MockClass(a1, a2, a3, a4, a5, a6, a7, a8, a9) {
+    ::testing::Mock::FailUninterestingCalls(
+        internal::ImplicitCast_<MockClass*>(this));
+  }
+
+  template <typename A1, typename A2, typename A3, typename A4, typename A5,
+      typename A6, typename A7, typename A8, typename A9, typename A10>
+  StrictMock(const A1& a1, const A2& a2, const A3& a3, const A4& a4,
+      const A5& a5, const A6& a6, const A7& a7, const A8& a8, const A9& a9,
+      const A10& a10) : MockClass(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {
+    ::testing::Mock::FailUninterestingCalls(
+        internal::ImplicitCast_<MockClass*>(this));
+  }
+
+  virtual ~StrictMock() {
+    ::testing::Mock::UnregisterCallReaction(
+        internal::ImplicitCast_<MockClass*>(this));
+  }
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(StrictMock);
+};
+
+// The following specializations catch some (relatively more common)
+// user errors of nesting nice and strict mocks.  They do NOT catch
+// all possible errors.
+
+// These specializations are declared but not defined, as NiceMock and
+// StrictMock cannot be nested.
+template <typename MockClass>
+class NiceMock<NiceMock<MockClass> >;
+template <typename MockClass>
+class NiceMock<StrictMock<MockClass> >;
+template <typename MockClass>
+class StrictMock<NiceMock<MockClass> >;
+template <typename MockClass>
+class StrictMock<StrictMock<MockClass> >;
+
+}  // namespace testing
+
+#endif  // GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_NICE_STRICT_H_
diff --git a/google-breakpad/src/testing/include/gmock/gmock-generated-nice-strict.h.pump b/google-breakpad/src/testing/include/gmock/gmock-generated-nice-strict.h.pump
new file mode 100644
index 0000000..b7964db
--- /dev/null
+++ b/google-breakpad/src/testing/include/gmock/gmock-generated-nice-strict.h.pump
@@ -0,0 +1,160 @@
+$$ -*- mode: c++; -*-
+$$ This is a Pump source file.  Please use Pump to convert it to
+$$ gmock-generated-nice-strict.h.
+$$
+$var n = 10  $$ The maximum arity we support.
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Implements class templates NiceMock and StrictMock.
+//
+// Given a mock class MockFoo that is created using Google Mock,
+// NiceMock<MockFoo> is a subclass of MockFoo that allows
+// uninteresting calls (i.e. calls to mock methods that have no
+// EXPECT_CALL specs), and StrictMock<MockFoo> is a subclass of
+// MockFoo that treats all uninteresting calls as errors.
+//
+// NiceMock and StrictMock "inherits" the constructors of their
+// respective base class, with up-to $n arguments.  Therefore you can
+// write NiceMock<MockFoo>(5, "a") to construct a nice mock where
+// MockFoo has a constructor that accepts (int, const char*), for
+// example.
+//
+// A known limitation is that NiceMock<MockFoo> and
+// StrictMock<MockFoo> only works for mock methods defined using the
+// MOCK_METHOD* family of macros DIRECTLY in the MockFoo class.  If a
+// mock method is defined in a base class of MockFoo, the "nice" or
+// "strict" modifier may not affect it, depending on the compiler.  In
+// particular, nesting NiceMock and StrictMock is NOT supported.
+//
+// Another known limitation is that the constructors of the base mock
+// cannot have arguments passed by non-const reference, which are
+// banned by the Google C++ style guide anyway.
+
+#ifndef GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_NICE_STRICT_H_
+#define GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_NICE_STRICT_H_
+
+#include "gmock/gmock-spec-builders.h"
+#include "gmock/internal/gmock-port.h"
+
+namespace testing {
+
+template <class MockClass>
+class NiceMock : public MockClass {
+ public:
+  // We don't factor out the constructor body to a common method, as
+  // we have to avoid a possible clash with members of MockClass.
+  NiceMock() {
+    ::testing::Mock::AllowUninterestingCalls(
+        internal::ImplicitCast_<MockClass*>(this));
+  }
+
+  // C++ doesn't (yet) allow inheritance of constructors, so we have
+  // to define it for each arity.
+  template <typename A1>
+  explicit NiceMock(const A1& a1) : MockClass(a1) {
+    ::testing::Mock::AllowUninterestingCalls(
+        internal::ImplicitCast_<MockClass*>(this));
+  }
+
+$range i 2..n
+$for i [[
+$range j 1..i
+  template <$for j, [[typename A$j]]>
+  NiceMock($for j, [[const A$j& a$j]]) : MockClass($for j, [[a$j]]) {
+    ::testing::Mock::AllowUninterestingCalls(
+        internal::ImplicitCast_<MockClass*>(this));
+  }
+
+
+]]
+  virtual ~NiceMock() {
+    ::testing::Mock::UnregisterCallReaction(
+        internal::ImplicitCast_<MockClass*>(this));
+  }
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(NiceMock);
+};
+
+template <class MockClass>
+class StrictMock : public MockClass {
+ public:
+  // We don't factor out the constructor body to a common method, as
+  // we have to avoid a possible clash with members of MockClass.
+  StrictMock() {
+    ::testing::Mock::FailUninterestingCalls(
+        internal::ImplicitCast_<MockClass*>(this));
+  }
+
+  template <typename A1>
+  explicit StrictMock(const A1& a1) : MockClass(a1) {
+    ::testing::Mock::FailUninterestingCalls(
+        internal::ImplicitCast_<MockClass*>(this));
+  }
+
+$for i [[
+$range j 1..i
+  template <$for j, [[typename A$j]]>
+  StrictMock($for j, [[const A$j& a$j]]) : MockClass($for j, [[a$j]]) {
+    ::testing::Mock::FailUninterestingCalls(
+        internal::ImplicitCast_<MockClass*>(this));
+  }
+
+
+]]
+  virtual ~StrictMock() {
+    ::testing::Mock::UnregisterCallReaction(
+        internal::ImplicitCast_<MockClass*>(this));
+  }
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(StrictMock);
+};
+
+// The following specializations catch some (relatively more common)
+// user errors of nesting nice and strict mocks.  They do NOT catch
+// all possible errors.
+
+// These specializations are declared but not defined, as NiceMock and
+// StrictMock cannot be nested.
+template <typename MockClass>
+class NiceMock<NiceMock<MockClass> >;
+template <typename MockClass>
+class NiceMock<StrictMock<MockClass> >;
+template <typename MockClass>
+class StrictMock<NiceMock<MockClass> >;
+template <typename MockClass>
+class StrictMock<StrictMock<MockClass> >;
+
+}  // namespace testing
+
+#endif  // GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_NICE_STRICT_H_
diff --git a/google-breakpad/src/testing/include/gmock/gmock-matchers.h b/google-breakpad/src/testing/include/gmock/gmock-matchers.h
new file mode 100644
index 0000000..4f1c433
--- /dev/null
+++ b/google-breakpad/src/testing/include/gmock/gmock-matchers.h
@@ -0,0 +1,3207 @@
+// Copyright 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Google Mock - a framework for writing C++ mock classes.
+//
+// This file implements some commonly used argument matchers.  More
+// matchers can be defined by the user implementing the
+// MatcherInterface<T> interface if necessary.
+
+#ifndef GMOCK_INCLUDE_GMOCK_GMOCK_MATCHERS_H_
+#define GMOCK_INCLUDE_GMOCK_GMOCK_MATCHERS_H_
+
+#include <algorithm>
+#include <limits>
+#include <ostream>  // NOLINT
+#include <sstream>
+#include <string>
+#include <utility>
+#include <vector>
+
+#include "gmock/internal/gmock-internal-utils.h"
+#include "gmock/internal/gmock-port.h"
+#include "gtest/gtest.h"
+
+namespace testing {
+
+// To implement a matcher Foo for type T, define:
+//   1. a class FooMatcherImpl that implements the
+//      MatcherInterface<T> interface, and
+//   2. a factory function that creates a Matcher<T> object from a
+//      FooMatcherImpl*.
+//
+// The two-level delegation design makes it possible to allow a user
+// to write "v" instead of "Eq(v)" where a Matcher is expected, which
+// is impossible if we pass matchers by pointers.  It also eases
+// ownership management as Matcher objects can now be copied like
+// plain values.
+
+// MatchResultListener is an abstract class.  Its << operator can be
+// used by a matcher to explain why a value matches or doesn't match.
+//
+// TODO(wan@google.com): add method
+//   bool InterestedInWhy(bool result) const;
+// to indicate whether the listener is interested in why the match
+// result is 'result'.
+class MatchResultListener {
+ public:
+  // Creates a listener object with the given underlying ostream.  The
+  // listener does not own the ostream.
+  explicit MatchResultListener(::std::ostream* os) : stream_(os) {}
+  virtual ~MatchResultListener() = 0;  // Makes this class abstract.
+
+  // Streams x to the underlying ostream; does nothing if the ostream
+  // is NULL.
+  template <typename T>
+  MatchResultListener& operator<<(const T& x) {
+    if (stream_ != NULL)
+      *stream_ << x;
+    return *this;
+  }
+
+  // Returns the underlying ostream.
+  ::std::ostream* stream() { return stream_; }
+
+  // Returns true iff the listener is interested in an explanation of
+  // the match result.  A matcher's MatchAndExplain() method can use
+  // this information to avoid generating the explanation when no one
+  // intends to hear it.
+  bool IsInterested() const { return stream_ != NULL; }
+
+ private:
+  ::std::ostream* const stream_;
+
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(MatchResultListener);
+};
+
+inline MatchResultListener::~MatchResultListener() {
+}
+
+// The implementation of a matcher.
+template <typename T>
+class MatcherInterface {
+ public:
+  virtual ~MatcherInterface() {}
+
+  // Returns true iff the matcher matches x; also explains the match
+  // result to 'listener', in the form of a non-restrictive relative
+  // clause ("which ...", "whose ...", etc) that describes x.  For
+  // example, the MatchAndExplain() method of the Pointee(...) matcher
+  // should generate an explanation like "which points to ...".
+  //
+  // You should override this method when defining a new matcher.
+  //
+  // It's the responsibility of the caller (Google Mock) to guarantee
+  // that 'listener' is not NULL.  This helps to simplify a matcher's
+  // implementation when it doesn't care about the performance, as it
+  // can talk to 'listener' without checking its validity first.
+  // However, in order to implement dummy listeners efficiently,
+  // listener->stream() may be NULL.
+  virtual bool MatchAndExplain(T x, MatchResultListener* listener) const = 0;
+
+  // Describes this matcher to an ostream.  The function should print
+  // a verb phrase that describes the property a value matching this
+  // matcher should have.  The subject of the verb phrase is the value
+  // being matched.  For example, the DescribeTo() method of the Gt(7)
+  // matcher prints "is greater than 7".
+  virtual void DescribeTo(::std::ostream* os) const = 0;
+
+  // Describes the negation of this matcher to an ostream.  For
+  // example, if the description of this matcher is "is greater than
+  // 7", the negated description could be "is not greater than 7".
+  // You are not required to override this when implementing
+  // MatcherInterface, but it is highly advised so that your matcher
+  // can produce good error messages.
+  virtual void DescribeNegationTo(::std::ostream* os) const {
+    *os << "not (";
+    DescribeTo(os);
+    *os << ")";
+  }
+};
+
+namespace internal {
+
+// A match result listener that ignores the explanation.
+class DummyMatchResultListener : public MatchResultListener {
+ public:
+  DummyMatchResultListener() : MatchResultListener(NULL) {}
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(DummyMatchResultListener);
+};
+
+// A match result listener that forwards the explanation to a given
+// ostream.  The difference between this and MatchResultListener is
+// that the former is concrete.
+class StreamMatchResultListener : public MatchResultListener {
+ public:
+  explicit StreamMatchResultListener(::std::ostream* os)
+      : MatchResultListener(os) {}
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(StreamMatchResultListener);
+};
+
+// A match result listener that stores the explanation in a string.
+class StringMatchResultListener : public MatchResultListener {
+ public:
+  StringMatchResultListener() : MatchResultListener(&ss_) {}
+
+  // Returns the explanation heard so far.
+  internal::string str() const { return ss_.str(); }
+
+ private:
+  ::std::stringstream ss_;
+
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(StringMatchResultListener);
+};
+
+// An internal class for implementing Matcher<T>, which will derive
+// from it.  We put functionalities common to all Matcher<T>
+// specializations here to avoid code duplication.
+template <typename T>
+class MatcherBase {
+ public:
+  // Returns true iff the matcher matches x; also explains the match
+  // result to 'listener'.
+  bool MatchAndExplain(T x, MatchResultListener* listener) const {
+    return impl_->MatchAndExplain(x, listener);
+  }
+
+  // Returns true iff this matcher matches x.
+  bool Matches(T x) const {
+    DummyMatchResultListener dummy;
+    return MatchAndExplain(x, &dummy);
+  }
+
+  // Describes this matcher to an ostream.
+  void DescribeTo(::std::ostream* os) const { impl_->DescribeTo(os); }
+
+  // Describes the negation of this matcher to an ostream.
+  void DescribeNegationTo(::std::ostream* os) const {
+    impl_->DescribeNegationTo(os);
+  }
+
+  // Explains why x matches, or doesn't match, the matcher.
+  void ExplainMatchResultTo(T x, ::std::ostream* os) const {
+    StreamMatchResultListener listener(os);
+    MatchAndExplain(x, &listener);
+  }
+
+ protected:
+  MatcherBase() {}
+
+  // Constructs a matcher from its implementation.
+  explicit MatcherBase(const MatcherInterface<T>* impl)
+      : impl_(impl) {}
+
+  virtual ~MatcherBase() {}
+
+ private:
+  // shared_ptr (util/gtl/shared_ptr.h) and linked_ptr have similar
+  // interfaces.  The former dynamically allocates a chunk of memory
+  // to hold the reference count, while the latter tracks all
+  // references using a circular linked list without allocating
+  // memory.  It has been observed that linked_ptr performs better in
+  // typical scenarios.  However, shared_ptr can out-perform
+  // linked_ptr when there are many more uses of the copy constructor
+  // than the default constructor.
+  //
+  // If performance becomes a problem, we should see if using
+  // shared_ptr helps.
+  ::testing::internal::linked_ptr<const MatcherInterface<T> > impl_;
+};
+
+}  // namespace internal
+
+// A Matcher<T> is a copyable and IMMUTABLE (except by assignment)
+// object that can check whether a value of type T matches.  The
+// implementation of Matcher<T> is just a linked_ptr to const
+// MatcherInterface<T>, so copying is fairly cheap.  Don't inherit
+// from Matcher!
+template <typename T>
+class Matcher : public internal::MatcherBase<T> {
+ public:
+  // Constructs a null matcher.  Needed for storing Matcher objects in STL
+  // containers.  A default-constructed matcher is not yet initialized.  You
+  // cannot use it until a valid value has been assigned to it.
+  Matcher() {}
+
+  // Constructs a matcher from its implementation.
+  explicit Matcher(const MatcherInterface<T>* impl)
+      : internal::MatcherBase<T>(impl) {}
+
+  // Implicit constructor here allows people to write
+  // EXPECT_CALL(foo, Bar(5)) instead of EXPECT_CALL(foo, Bar(Eq(5))) sometimes
+  Matcher(T value);  // NOLINT
+};
+
+// The following two specializations allow the user to write str
+// instead of Eq(str) and "foo" instead of Eq("foo") when a string
+// matcher is expected.
+template <>
+class GTEST_API_ Matcher<const internal::string&>
+    : public internal::MatcherBase<const internal::string&> {
+ public:
+  Matcher() {}
+
+  explicit Matcher(const MatcherInterface<const internal::string&>* impl)
+      : internal::MatcherBase<const internal::string&>(impl) {}
+
+  // Allows the user to write str instead of Eq(str) sometimes, where
+  // str is a string object.
+  Matcher(const internal::string& s);  // NOLINT
+
+  // Allows the user to write "foo" instead of Eq("foo") sometimes.
+  Matcher(const char* s);  // NOLINT
+};
+
+template <>
+class GTEST_API_ Matcher<internal::string>
+    : public internal::MatcherBase<internal::string> {
+ public:
+  Matcher() {}
+
+  explicit Matcher(const MatcherInterface<internal::string>* impl)
+      : internal::MatcherBase<internal::string>(impl) {}
+
+  // Allows the user to write str instead of Eq(str) sometimes, where
+  // str is a string object.
+  Matcher(const internal::string& s);  // NOLINT
+
+  // Allows the user to write "foo" instead of Eq("foo") sometimes.
+  Matcher(const char* s);  // NOLINT
+};
+
+// The PolymorphicMatcher class template makes it easy to implement a
+// polymorphic matcher (i.e. a matcher that can match values of more
+// than one type, e.g. Eq(n) and NotNull()).
+//
+// To define a polymorphic matcher, a user should provide an Impl
+// class that has a DescribeTo() method and a DescribeNegationTo()
+// method, and define a member function (or member function template)
+//
+//   bool MatchAndExplain(const Value& value,
+//                        MatchResultListener* listener) const;
+//
+// See the definition of NotNull() for a complete example.
+template <class Impl>
+class PolymorphicMatcher {
+ public:
+  explicit PolymorphicMatcher(const Impl& an_impl) : impl_(an_impl) {}
+
+  // Returns a mutable reference to the underlying matcher
+  // implementation object.
+  Impl& mutable_impl() { return impl_; }
+
+  // Returns an immutable reference to the underlying matcher
+  // implementation object.
+  const Impl& impl() const { return impl_; }
+
+  template <typename T>
+  operator Matcher<T>() const {
+    return Matcher<T>(new MonomorphicImpl<T>(impl_));
+  }
+
+ private:
+  template <typename T>
+  class MonomorphicImpl : public MatcherInterface<T> {
+   public:
+    explicit MonomorphicImpl(const Impl& impl) : impl_(impl) {}
+
+    virtual void DescribeTo(::std::ostream* os) const {
+      impl_.DescribeTo(os);
+    }
+
+    virtual void DescribeNegationTo(::std::ostream* os) const {
+      impl_.DescribeNegationTo(os);
+    }
+
+    virtual bool MatchAndExplain(T x, MatchResultListener* listener) const {
+      return impl_.MatchAndExplain(x, listener);
+    }
+
+   private:
+    const Impl impl_;
+
+    GTEST_DISALLOW_ASSIGN_(MonomorphicImpl);
+  };
+
+  Impl impl_;
+
+  GTEST_DISALLOW_ASSIGN_(PolymorphicMatcher);
+};
+
+// Creates a matcher from its implementation.  This is easier to use
+// than the Matcher<T> constructor as it doesn't require you to
+// explicitly write the template argument, e.g.
+//
+//   MakeMatcher(foo);
+// vs
+//   Matcher<const string&>(foo);
+template <typename T>
+inline Matcher<T> MakeMatcher(const MatcherInterface<T>* impl) {
+  return Matcher<T>(impl);
+};
+
+// Creates a polymorphic matcher from its implementation.  This is
+// easier to use than the PolymorphicMatcher<Impl> constructor as it
+// doesn't require you to explicitly write the template argument, e.g.
+//
+//   MakePolymorphicMatcher(foo);
+// vs
+//   PolymorphicMatcher<TypeOfFoo>(foo);
+template <class Impl>
+inline PolymorphicMatcher<Impl> MakePolymorphicMatcher(const Impl& impl) {
+  return PolymorphicMatcher<Impl>(impl);
+}
+
+// Anything inside the 'internal' namespace IS INTERNAL IMPLEMENTATION
+// and MUST NOT BE USED IN USER CODE!!!
+namespace internal {
+
+// The MatcherCastImpl class template is a helper for implementing
+// MatcherCast().  We need this helper in order to partially
+// specialize the implementation of MatcherCast() (C++ allows
+// class/struct templates to be partially specialized, but not
+// function templates.).
+
+// This general version is used when MatcherCast()'s argument is a
+// polymorphic matcher (i.e. something that can be converted to a
+// Matcher but is not one yet; for example, Eq(value)) or a value (for
+// example, "hello").
+template <typename T, typename M>
+class MatcherCastImpl {
+ public:
+  static Matcher<T> Cast(M polymorphic_matcher_or_value) {
+    // M can be a polymorhic matcher, in which case we want to use
+    // its conversion operator to create Matcher<T>.  Or it can be a value
+    // that should be passed to the Matcher<T>'s constructor.
+    //
+    // We can't call Matcher<T>(polymorphic_matcher_or_value) when M is a
+    // polymorphic matcher because it'll be ambiguous if T has an implicit
+    // constructor from M (this usually happens when T has an implicit
+    // constructor from any type).
+    //
+    // It won't work to unconditionally implict_cast
+    // polymorphic_matcher_or_value to Matcher<T> because it won't trigger
+    // a user-defined conversion from M to T if one exists (assuming M is
+    // a value).
+    return CastImpl(
+        polymorphic_matcher_or_value,
+        BooleanConstant<
+            internal::ImplicitlyConvertible<M, Matcher<T> >::value>());
+  }
+
+ private:
+  static Matcher<T> CastImpl(M value, BooleanConstant<false>) {
+    // M can't be implicitly converted to Matcher<T>, so M isn't a polymorphic
+    // matcher.  It must be a value then.  Use direct initialization to create
+    // a matcher.
+    return Matcher<T>(ImplicitCast_<T>(value));
+  }
+
+  static Matcher<T> CastImpl(M polymorphic_matcher_or_value,
+                             BooleanConstant<true>) {
+    // M is implicitly convertible to Matcher<T>, which means that either
+    // M is a polymorhpic matcher or Matcher<T> has an implicit constructor
+    // from M.  In both cases using the implicit conversion will produce a
+    // matcher.
+    //
+    // Even if T has an implicit constructor from M, it won't be called because
+    // creating Matcher<T> would require a chain of two user-defined conversions
+    // (first to create T from M and then to create Matcher<T> from T).
+    return polymorphic_matcher_or_value;
+  }
+};
+
+// This more specialized version is used when MatcherCast()'s argument
+// is already a Matcher.  This only compiles when type T can be
+// statically converted to type U.
+template <typename T, typename U>
+class MatcherCastImpl<T, Matcher<U> > {
+ public:
+  static Matcher<T> Cast(const Matcher<U>& source_matcher) {
+    return Matcher<T>(new Impl(source_matcher));
+  }
+
+ private:
+  class Impl : public MatcherInterface<T> {
+   public:
+    explicit Impl(const Matcher<U>& source_matcher)
+        : source_matcher_(source_matcher) {}
+
+    // We delegate the matching logic to the source matcher.
+    virtual bool MatchAndExplain(T x, MatchResultListener* listener) const {
+      return source_matcher_.MatchAndExplain(static_cast<U>(x), listener);
+    }
+
+    virtual void DescribeTo(::std::ostream* os) const {
+      source_matcher_.DescribeTo(os);
+    }
+
+    virtual void DescribeNegationTo(::std::ostream* os) const {
+      source_matcher_.DescribeNegationTo(os);
+    }
+
+   private:
+    const Matcher<U> source_matcher_;
+
+    GTEST_DISALLOW_ASSIGN_(Impl);
+  };
+};
+
+// This even more specialized version is used for efficiently casting
+// a matcher to its own type.
+template <typename T>
+class MatcherCastImpl<T, Matcher<T> > {
+ public:
+  static Matcher<T> Cast(const Matcher<T>& matcher) { return matcher; }
+};
+
+}  // namespace internal
+
+// In order to be safe and clear, casting between different matcher
+// types is done explicitly via MatcherCast<T>(m), which takes a
+// matcher m and returns a Matcher<T>.  It compiles only when T can be
+// statically converted to the argument type of m.
+template <typename T, typename M>
+inline Matcher<T> MatcherCast(M matcher) {
+  return internal::MatcherCastImpl<T, M>::Cast(matcher);
+}
+
+// Implements SafeMatcherCast().
+//
+// We use an intermediate class to do the actual safe casting as Nokia's
+// Symbian compiler cannot decide between
+// template <T, M> ... (M) and
+// template <T, U> ... (const Matcher<U>&)
+// for function templates but can for member function templates.
+template <typename T>
+class SafeMatcherCastImpl {
+ public:
+  // This overload handles polymorphic matchers and values only since
+  // monomorphic matchers are handled by the next one.
+  template <typename M>
+  static inline Matcher<T> Cast(M polymorphic_matcher_or_value) {
+    return internal::MatcherCastImpl<T, M>::Cast(polymorphic_matcher_or_value);
+  }
+
+  // This overload handles monomorphic matchers.
+  //
+  // In general, if type T can be implicitly converted to type U, we can
+  // safely convert a Matcher<U> to a Matcher<T> (i.e. Matcher is
+  // contravariant): just keep a copy of the original Matcher<U>, convert the
+  // argument from type T to U, and then pass it to the underlying Matcher<U>.
+  // The only exception is when U is a reference and T is not, as the
+  // underlying Matcher<U> may be interested in the argument's address, which
+  // is not preserved in the conversion from T to U.
+  template <typename U>
+  static inline Matcher<T> Cast(const Matcher<U>& matcher) {
+    // Enforce that T can be implicitly converted to U.
+    GTEST_COMPILE_ASSERT_((internal::ImplicitlyConvertible<T, U>::value),
+                          T_must_be_implicitly_convertible_to_U);
+    // Enforce that we are not converting a non-reference type T to a reference
+    // type U.
+    GTEST_COMPILE_ASSERT_(
+        internal::is_reference<T>::value || !internal::is_reference<U>::value,
+        cannot_convert_non_referentce_arg_to_reference);
+    // In case both T and U are arithmetic types, enforce that the
+    // conversion is not lossy.
+    typedef GTEST_REMOVE_REFERENCE_AND_CONST_(T) RawT;
+    typedef GTEST_REMOVE_REFERENCE_AND_CONST_(U) RawU;
+    const bool kTIsOther = GMOCK_KIND_OF_(RawT) == internal::kOther;
+    const bool kUIsOther = GMOCK_KIND_OF_(RawU) == internal::kOther;
+    GTEST_COMPILE_ASSERT_(
+        kTIsOther || kUIsOther ||
+        (internal::LosslessArithmeticConvertible<RawT, RawU>::value),
+        conversion_of_arithmetic_types_must_be_lossless);
+    return MatcherCast<T>(matcher);
+  }
+};
+
+template <typename T, typename M>
+inline Matcher<T> SafeMatcherCast(const M& polymorphic_matcher) {
+  return SafeMatcherCastImpl<T>::Cast(polymorphic_matcher);
+}
+
+// A<T>() returns a matcher that matches any value of type T.
+template <typename T>
+Matcher<T> A();
+
+// Anything inside the 'internal' namespace IS INTERNAL IMPLEMENTATION
+// and MUST NOT BE USED IN USER CODE!!!
+namespace internal {
+
+// If the explanation is not empty, prints it to the ostream.
+inline void PrintIfNotEmpty(const internal::string& explanation,
+                            std::ostream* os) {
+  if (explanation != "" && os != NULL) {
+    *os << ", " << explanation;
+  }
+}
+
+// Returns true if the given type name is easy to read by a human.
+// This is used to decide whether printing the type of a value might
+// be helpful.
+inline bool IsReadableTypeName(const string& type_name) {
+  // We consider a type name readable if it's short or doesn't contain
+  // a template or function type.
+  return (type_name.length() <= 20 ||
+          type_name.find_first_of("<(") == string::npos);
+}
+
+// Matches the value against the given matcher, prints the value and explains
+// the match result to the listener. Returns the match result.
+// 'listener' must not be NULL.
+// Value cannot be passed by const reference, because some matchers take a
+// non-const argument.
+template <typename Value, typename T>
+bool MatchPrintAndExplain(Value& value, const Matcher<T>& matcher,
+                          MatchResultListener* listener) {
+  if (!listener->IsInterested()) {
+    // If the listener is not interested, we do not need to construct the
+    // inner explanation.
+    return matcher.Matches(value);
+  }
+
+  StringMatchResultListener inner_listener;
+  const bool match = matcher.MatchAndExplain(value, &inner_listener);
+
+  UniversalPrint(value, listener->stream());
+#if GTEST_HAS_RTTI
+  const string& type_name = GetTypeName<Value>();
+  if (IsReadableTypeName(type_name))
+    *listener->stream() << " (of type " << type_name << ")";
+#endif
+  PrintIfNotEmpty(inner_listener.str(), listener->stream());
+
+  return match;
+}
+
+// An internal helper class for doing compile-time loop on a tuple's
+// fields.
+template <size_t N>
+class TuplePrefix {
+ public:
+  // TuplePrefix<N>::Matches(matcher_tuple, value_tuple) returns true
+  // iff the first N fields of matcher_tuple matches the first N
+  // fields of value_tuple, respectively.
+  template <typename MatcherTuple, typename ValueTuple>
+  static bool Matches(const MatcherTuple& matcher_tuple,
+                      const ValueTuple& value_tuple) {
+    using ::std::tr1::get;
+    return TuplePrefix<N - 1>::Matches(matcher_tuple, value_tuple)
+        && get<N - 1>(matcher_tuple).Matches(get<N - 1>(value_tuple));
+  }
+
+  // TuplePrefix<N>::ExplainMatchFailuresTo(matchers, values, os)
+  // describes failures in matching the first N fields of matchers
+  // against the first N fields of values.  If there is no failure,
+  // nothing will be streamed to os.
+  template <typename MatcherTuple, typename ValueTuple>
+  static void ExplainMatchFailuresTo(const MatcherTuple& matchers,
+                                     const ValueTuple& values,
+                                     ::std::ostream* os) {
+    using ::std::tr1::tuple_element;
+    using ::std::tr1::get;
+
+    // First, describes failures in the first N - 1 fields.
+    TuplePrefix<N - 1>::ExplainMatchFailuresTo(matchers, values, os);
+
+    // Then describes the failure (if any) in the (N - 1)-th (0-based)
+    // field.
+    typename tuple_element<N - 1, MatcherTuple>::type matcher =
+        get<N - 1>(matchers);
+    typedef typename tuple_element<N - 1, ValueTuple>::type Value;
+    Value value = get<N - 1>(values);
+    StringMatchResultListener listener;
+    if (!matcher.MatchAndExplain(value, &listener)) {
+      // TODO(wan): include in the message the name of the parameter
+      // as used in MOCK_METHOD*() when possible.
+      *os << "  Expected arg #" << N - 1 << ": ";
+      get<N - 1>(matchers).DescribeTo(os);
+      *os << "\n           Actual: ";
+      // We remove the reference in type Value to prevent the
+      // universal printer from printing the address of value, which
+      // isn't interesting to the user most of the time.  The
+      // matcher's MatchAndExplain() method handles the case when
+      // the address is interesting.
+      internal::UniversalPrint(value, os);
+      PrintIfNotEmpty(listener.str(), os);
+      *os << "\n";
+    }
+  }
+};
+
+// The base case.
+template <>
+class TuplePrefix<0> {
+ public:
+  template <typename MatcherTuple, typename ValueTuple>
+  static bool Matches(const MatcherTuple& /* matcher_tuple */,
+                      const ValueTuple& /* value_tuple */) {
+    return true;
+  }
+
+  template <typename MatcherTuple, typename ValueTuple>
+  static void ExplainMatchFailuresTo(const MatcherTuple& /* matchers */,
+                                     const ValueTuple& /* values */,
+                                     ::std::ostream* /* os */) {}
+};
+
+// TupleMatches(matcher_tuple, value_tuple) returns true iff all
+// matchers in matcher_tuple match the corresponding fields in
+// value_tuple.  It is a compiler error if matcher_tuple and
+// value_tuple have different number of fields or incompatible field
+// types.
+template <typename MatcherTuple, typename ValueTuple>
+bool TupleMatches(const MatcherTuple& matcher_tuple,
+                  const ValueTuple& value_tuple) {
+  using ::std::tr1::tuple_size;
+  // Makes sure that matcher_tuple and value_tuple have the same
+  // number of fields.
+  GTEST_COMPILE_ASSERT_(tuple_size<MatcherTuple>::value ==
+                        tuple_size<ValueTuple>::value,
+                        matcher_and_value_have_different_numbers_of_fields);
+  return TuplePrefix<tuple_size<ValueTuple>::value>::
+      Matches(matcher_tuple, value_tuple);
+}
+
+// Describes failures in matching matchers against values.  If there
+// is no failure, nothing will be streamed to os.
+template <typename MatcherTuple, typename ValueTuple>
+void ExplainMatchFailureTupleTo(const MatcherTuple& matchers,
+                                const ValueTuple& values,
+                                ::std::ostream* os) {
+  using ::std::tr1::tuple_size;
+  TuplePrefix<tuple_size<MatcherTuple>::value>::ExplainMatchFailuresTo(
+      matchers, values, os);
+}
+
+// Implements A<T>().
+template <typename T>
+class AnyMatcherImpl : public MatcherInterface<T> {
+ public:
+  virtual bool MatchAndExplain(
+      T /* x */, MatchResultListener* /* listener */) const { return true; }
+  virtual void DescribeTo(::std::ostream* os) const { *os << "is anything"; }
+  virtual void DescribeNegationTo(::std::ostream* os) const {
+    // This is mostly for completeness' safe, as it's not very useful
+    // to write Not(A<bool>()).  However we cannot completely rule out
+    // such a possibility, and it doesn't hurt to be prepared.
+    *os << "never matches";
+  }
+};
+
+// Implements _, a matcher that matches any value of any
+// type.  This is a polymorphic matcher, so we need a template type
+// conversion operator to make it appearing as a Matcher<T> for any
+// type T.
+class AnythingMatcher {
+ public:
+  template <typename T>
+  operator Matcher<T>() const { return A<T>(); }
+};
+
+// Implements a matcher that compares a given value with a
+// pre-supplied value using one of the ==, <=, <, etc, operators.  The
+// two values being compared don't have to have the same type.
+//
+// The matcher defined here is polymorphic (for example, Eq(5) can be
+// used to match an int, a short, a double, etc).  Therefore we use
+// a template type conversion operator in the implementation.
+//
+// We define this as a macro in order to eliminate duplicated source
+// code.
+//
+// The following template definition assumes that the Rhs parameter is
+// a "bare" type (i.e. neither 'const T' nor 'T&').
+#define GMOCK_IMPLEMENT_COMPARISON_MATCHER_( \
+    name, op, relation, negated_relation) \
+  template <typename Rhs> class name##Matcher { \
+   public: \
+    explicit name##Matcher(const Rhs& rhs) : rhs_(rhs) {} \
+    template <typename Lhs> \
+    operator Matcher<Lhs>() const { \
+      return MakeMatcher(new Impl<Lhs>(rhs_)); \
+    } \
+   private: \
+    template <typename Lhs> \
+    class Impl : public MatcherInterface<Lhs> { \
+     public: \
+      explicit Impl(const Rhs& rhs) : rhs_(rhs) {} \
+      virtual bool MatchAndExplain(\
+          Lhs lhs, MatchResultListener* /* listener */) const { \
+        return lhs op rhs_; \
+      } \
+      virtual void DescribeTo(::std::ostream* os) const { \
+        *os << relation  " "; \
+        UniversalPrint(rhs_, os); \
+      } \
+      virtual void DescribeNegationTo(::std::ostream* os) const { \
+        *os << negated_relation  " "; \
+        UniversalPrint(rhs_, os); \
+      } \
+     private: \
+      Rhs rhs_; \
+      GTEST_DISALLOW_ASSIGN_(Impl); \
+    }; \
+    Rhs rhs_; \
+    GTEST_DISALLOW_ASSIGN_(name##Matcher); \
+  }
+
+// Implements Eq(v), Ge(v), Gt(v), Le(v), Lt(v), and Ne(v)
+// respectively.
+GMOCK_IMPLEMENT_COMPARISON_MATCHER_(Eq, ==, "is equal to", "isn't equal to");
+GMOCK_IMPLEMENT_COMPARISON_MATCHER_(Ge, >=, "is >=", "isn't >=");
+GMOCK_IMPLEMENT_COMPARISON_MATCHER_(Gt, >, "is >", "isn't >");
+GMOCK_IMPLEMENT_COMPARISON_MATCHER_(Le, <=, "is <=", "isn't <=");
+GMOCK_IMPLEMENT_COMPARISON_MATCHER_(Lt, <, "is <", "isn't <");
+GMOCK_IMPLEMENT_COMPARISON_MATCHER_(Ne, !=, "isn't equal to", "is equal to");
+
+#undef GMOCK_IMPLEMENT_COMPARISON_MATCHER_
+
+// Implements the polymorphic IsNull() matcher, which matches any raw or smart
+// pointer that is NULL.
+class IsNullMatcher {
+ public:
+  template <typename Pointer>
+  bool MatchAndExplain(const Pointer& p,
+                       MatchResultListener* /* listener */) const {
+    return GetRawPointer(p) == NULL;
+  }
+
+  void DescribeTo(::std::ostream* os) const { *os << "is NULL"; }
+  void DescribeNegationTo(::std::ostream* os) const {
+    *os << "isn't NULL";
+  }
+};
+
+// Implements the polymorphic NotNull() matcher, which matches any raw or smart
+// pointer that is not NULL.
+class NotNullMatcher {
+ public:
+  template <typename Pointer>
+  bool MatchAndExplain(const Pointer& p,
+                       MatchResultListener* /* listener */) const {
+    return GetRawPointer(p) != NULL;
+  }
+
+  void DescribeTo(::std::ostream* os) const { *os << "isn't NULL"; }
+  void DescribeNegationTo(::std::ostream* os) const {
+    *os << "is NULL";
+  }
+};
+
+// Ref(variable) matches any argument that is a reference to
+// 'variable'.  This matcher is polymorphic as it can match any
+// super type of the type of 'variable'.
+//
+// The RefMatcher template class implements Ref(variable).  It can
+// only be instantiated with a reference type.  This prevents a user
+// from mistakenly using Ref(x) to match a non-reference function
+// argument.  For example, the following will righteously cause a
+// compiler error:
+//
+//   int n;
+//   Matcher<int> m1 = Ref(n);   // This won't compile.
+//   Matcher<int&> m2 = Ref(n);  // This will compile.
+template <typename T>
+class RefMatcher;
+
+template <typename T>
+class RefMatcher<T&> {
+  // Google Mock is a generic framework and thus needs to support
+  // mocking any function types, including those that take non-const
+  // reference arguments.  Therefore the template parameter T (and
+  // Super below) can be instantiated to either a const type or a
+  // non-const type.
+ public:
+  // RefMatcher() takes a T& instead of const T&, as we want the
+  // compiler to catch using Ref(const_value) as a matcher for a
+  // non-const reference.
+  explicit RefMatcher(T& x) : object_(x) {}  // NOLINT
+
+  template <typename Super>
+  operator Matcher<Super&>() const {
+    // By passing object_ (type T&) to Impl(), which expects a Super&,
+    // we make sure that Super is a super type of T.  In particular,
+    // this catches using Ref(const_value) as a matcher for a
+    // non-const reference, as you cannot implicitly convert a const
+    // reference to a non-const reference.
+    return MakeMatcher(new Impl<Super>(object_));
+  }
+
+ private:
+  template <typename Super>
+  class Impl : public MatcherInterface<Super&> {
+   public:
+    explicit Impl(Super& x) : object_(x) {}  // NOLINT
+
+    // MatchAndExplain() takes a Super& (as opposed to const Super&)
+    // in order to match the interface MatcherInterface<Super&>.
+    virtual bool MatchAndExplain(
+        Super& x, MatchResultListener* listener) const {
+      *listener << "which is located @" << static_cast<const void*>(&x);
+      return &x == &object_;
+    }
+
+    virtual void DescribeTo(::std::ostream* os) const {
+      *os << "references the variable ";
+      UniversalPrinter<Super&>::Print(object_, os);
+    }
+
+    virtual void DescribeNegationTo(::std::ostream* os) const {
+      *os << "does not reference the variable ";
+      UniversalPrinter<Super&>::Print(object_, os);
+    }
+
+   private:
+    const Super& object_;
+
+    GTEST_DISALLOW_ASSIGN_(Impl);
+  };
+
+  T& object_;
+
+  GTEST_DISALLOW_ASSIGN_(RefMatcher);
+};
+
+// Polymorphic helper functions for narrow and wide string matchers.
+inline bool CaseInsensitiveCStringEquals(const char* lhs, const char* rhs) {
+  return String::CaseInsensitiveCStringEquals(lhs, rhs);
+}
+
+inline bool CaseInsensitiveCStringEquals(const wchar_t* lhs,
+                                         const wchar_t* rhs) {
+  return String::CaseInsensitiveWideCStringEquals(lhs, rhs);
+}
+
+// String comparison for narrow or wide strings that can have embedded NUL
+// characters.
+template <typename StringType>
+bool CaseInsensitiveStringEquals(const StringType& s1,
+                                 const StringType& s2) {
+  // Are the heads equal?
+  if (!CaseInsensitiveCStringEquals(s1.c_str(), s2.c_str())) {
+    return false;
+  }
+
+  // Skip the equal heads.
+  const typename StringType::value_type nul = 0;
+  const size_t i1 = s1.find(nul), i2 = s2.find(nul);
+
+  // Are we at the end of either s1 or s2?
+  if (i1 == StringType::npos || i2 == StringType::npos) {
+    return i1 == i2;
+  }
+
+  // Are the tails equal?
+  return CaseInsensitiveStringEquals(s1.substr(i1 + 1), s2.substr(i2 + 1));
+}
+
+// String matchers.
+
+// Implements equality-based string matchers like StrEq, StrCaseNe, and etc.
+template <typename StringType>
+class StrEqualityMatcher {
+ public:
+  typedef typename StringType::const_pointer ConstCharPointer;
+
+  StrEqualityMatcher(const StringType& str, bool expect_eq,
+                     bool case_sensitive)
+      : string_(str), expect_eq_(expect_eq), case_sensitive_(case_sensitive) {}
+
+  // When expect_eq_ is true, returns true iff s is equal to string_;
+  // otherwise returns true iff s is not equal to string_.
+  bool MatchAndExplain(ConstCharPointer s,
+                       MatchResultListener* listener) const {
+    if (s == NULL) {
+      return !expect_eq_;
+    }
+    return MatchAndExplain(StringType(s), listener);
+  }
+
+  bool MatchAndExplain(const StringType& s,
+                       MatchResultListener* /* listener */) const {
+    const bool eq = case_sensitive_ ? s == string_ :
+        CaseInsensitiveStringEquals(s, string_);
+    return expect_eq_ == eq;
+  }
+
+  void DescribeTo(::std::ostream* os) const {
+    DescribeToHelper(expect_eq_, os);
+  }
+
+  void DescribeNegationTo(::std::ostream* os) const {
+    DescribeToHelper(!expect_eq_, os);
+  }
+
+ private:
+  void DescribeToHelper(bool expect_eq, ::std::ostream* os) const {
+    *os << (expect_eq ? "is " : "isn't ");
+    *os << "equal to ";
+    if (!case_sensitive_) {
+      *os << "(ignoring case) ";
+    }
+    UniversalPrint(string_, os);
+  }
+
+  const StringType string_;
+  const bool expect_eq_;
+  const bool case_sensitive_;
+
+  GTEST_DISALLOW_ASSIGN_(StrEqualityMatcher);
+};
+
+// Implements the polymorphic HasSubstr(substring) matcher, which
+// can be used as a Matcher<T> as long as T can be converted to a
+// string.
+template <typename StringType>
+class HasSubstrMatcher {
+ public:
+  typedef typename StringType::const_pointer ConstCharPointer;
+
+  explicit HasSubstrMatcher(const StringType& substring)
+      : substring_(substring) {}
+
+  // These overloaded methods allow HasSubstr(substring) to be used as a
+  // Matcher<T> as long as T can be converted to string.  Returns true
+  // iff s contains substring_ as a substring.
+  bool MatchAndExplain(ConstCharPointer s,
+                       MatchResultListener* listener) const {
+    return s != NULL && MatchAndExplain(StringType(s), listener);
+  }
+
+  bool MatchAndExplain(const StringType& s,
+                       MatchResultListener* /* listener */) const {
+    return s.find(substring_) != StringType::npos;
+  }
+
+  // Describes what this matcher matches.
+  void DescribeTo(::std::ostream* os) const {
+    *os << "has substring ";
+    UniversalPrint(substring_, os);
+  }
+
+  void DescribeNegationTo(::std::ostream* os) const {
+    *os << "has no substring ";
+    UniversalPrint(substring_, os);
+  }
+
+ private:
+  const StringType substring_;
+
+  GTEST_DISALLOW_ASSIGN_(HasSubstrMatcher);
+};
+
+// Implements the polymorphic StartsWith(substring) matcher, which
+// can be used as a Matcher<T> as long as T can be converted to a
+// string.
+template <typename StringType>
+class StartsWithMatcher {
+ public:
+  typedef typename StringType::const_pointer ConstCharPointer;
+
+  explicit StartsWithMatcher(const StringType& prefix) : prefix_(prefix) {
+  }
+
+  // These overloaded methods allow StartsWith(prefix) to be used as a
+  // Matcher<T> as long as T can be converted to string.  Returns true
+  // iff s starts with prefix_.
+  bool MatchAndExplain(ConstCharPointer s,
+                       MatchResultListener* listener) const {
+    return s != NULL && MatchAndExplain(StringType(s), listener);
+  }
+
+  bool MatchAndExplain(const StringType& s,
+                       MatchResultListener* /* listener */) const {
+    return s.length() >= prefix_.length() &&
+        s.substr(0, prefix_.length()) == prefix_;
+  }
+
+  void DescribeTo(::std::ostream* os) const {
+    *os << "starts with ";
+    UniversalPrint(prefix_, os);
+  }
+
+  void DescribeNegationTo(::std::ostream* os) const {
+    *os << "doesn't start with ";
+    UniversalPrint(prefix_, os);
+  }
+
+ private:
+  const StringType prefix_;
+
+  GTEST_DISALLOW_ASSIGN_(StartsWithMatcher);
+};
+
+// Implements the polymorphic EndsWith(substring) matcher, which
+// can be used as a Matcher<T> as long as T can be converted to a
+// string.
+template <typename StringType>
+class EndsWithMatcher {
+ public:
+  typedef typename StringType::const_pointer ConstCharPointer;
+
+  explicit EndsWithMatcher(const StringType& suffix) : suffix_(suffix) {}
+
+  // These overloaded methods allow EndsWith(suffix) to be used as a
+  // Matcher<T> as long as T can be converted to string.  Returns true
+  // iff s ends with suffix_.
+  bool MatchAndExplain(ConstCharPointer s,
+                       MatchResultListener* listener) const {
+    return s != NULL && MatchAndExplain(StringType(s), listener);
+  }
+
+  bool MatchAndExplain(const StringType& s,
+                       MatchResultListener* /* listener */) const {
+    return s.length() >= suffix_.length() &&
+        s.substr(s.length() - suffix_.length()) == suffix_;
+  }
+
+  void DescribeTo(::std::ostream* os) const {
+    *os << "ends with ";
+    UniversalPrint(suffix_, os);
+  }
+
+  void DescribeNegationTo(::std::ostream* os) const {
+    *os << "doesn't end with ";
+    UniversalPrint(suffix_, os);
+  }
+
+ private:
+  const StringType suffix_;
+
+  GTEST_DISALLOW_ASSIGN_(EndsWithMatcher);
+};
+
+// Implements polymorphic matchers MatchesRegex(regex) and
+// ContainsRegex(regex), which can be used as a Matcher<T> as long as
+// T can be converted to a string.
+class MatchesRegexMatcher {
+ public:
+  MatchesRegexMatcher(const RE* regex, bool full_match)
+      : regex_(regex), full_match_(full_match) {}
+
+  // These overloaded methods allow MatchesRegex(regex) to be used as
+  // a Matcher<T> as long as T can be converted to string.  Returns
+  // true iff s matches regular expression regex.  When full_match_ is
+  // true, a full match is done; otherwise a partial match is done.
+  bool MatchAndExplain(const char* s,
+                       MatchResultListener* listener) const {
+    return s != NULL && MatchAndExplain(internal::string(s), listener);
+  }
+
+  bool MatchAndExplain(const internal::string& s,
+                       MatchResultListener* /* listener */) const {
+    return full_match_ ? RE::FullMatch(s, *regex_) :
+        RE::PartialMatch(s, *regex_);
+  }
+
+  void DescribeTo(::std::ostream* os) const {
+    *os << (full_match_ ? "matches" : "contains")
+        << " regular expression ";
+    UniversalPrinter<internal::string>::Print(regex_->pattern(), os);
+  }
+
+  void DescribeNegationTo(::std::ostream* os) const {
+    *os << "doesn't " << (full_match_ ? "match" : "contain")
+        << " regular expression ";
+    UniversalPrinter<internal::string>::Print(regex_->pattern(), os);
+  }
+
+ private:
+  const internal::linked_ptr<const RE> regex_;
+  const bool full_match_;
+
+  GTEST_DISALLOW_ASSIGN_(MatchesRegexMatcher);
+};
+
+// Implements a matcher that compares the two fields of a 2-tuple
+// using one of the ==, <=, <, etc, operators.  The two fields being
+// compared don't have to have the same type.
+//
+// The matcher defined here is polymorphic (for example, Eq() can be
+// used to match a tuple<int, short>, a tuple<const long&, double>,
+// etc).  Therefore we use a template type conversion operator in the
+// implementation.
+//
+// We define this as a macro in order to eliminate duplicated source
+// code.
+#define GMOCK_IMPLEMENT_COMPARISON2_MATCHER_(name, op, relation) \
+  class name##2Matcher { \
+   public: \
+    template <typename T1, typename T2> \
+    operator Matcher< ::std::tr1::tuple<T1, T2> >() const { \
+      return MakeMatcher(new Impl< ::std::tr1::tuple<T1, T2> >); \
+    } \
+    template <typename T1, typename T2> \
+    operator Matcher<const ::std::tr1::tuple<T1, T2>&>() const { \
+      return MakeMatcher(new Impl<const ::std::tr1::tuple<T1, T2>&>); \
+    } \
+   private: \
+    template <typename Tuple> \
+    class Impl : public MatcherInterface<Tuple> { \
+     public: \
+      virtual bool MatchAndExplain( \
+          Tuple args, \
+          MatchResultListener* /* listener */) const { \
+        return ::std::tr1::get<0>(args) op ::std::tr1::get<1>(args); \
+      } \
+      virtual void DescribeTo(::std::ostream* os) const { \
+        *os << "are " relation;                                 \
+      } \
+      virtual void DescribeNegationTo(::std::ostream* os) const { \
+        *os << "aren't " relation; \
+      } \
+    }; \
+  }
+
+// Implements Eq(), Ge(), Gt(), Le(), Lt(), and Ne() respectively.
+GMOCK_IMPLEMENT_COMPARISON2_MATCHER_(Eq, ==, "an equal pair");
+GMOCK_IMPLEMENT_COMPARISON2_MATCHER_(
+    Ge, >=, "a pair where the first >= the second");
+GMOCK_IMPLEMENT_COMPARISON2_MATCHER_(
+    Gt, >, "a pair where the first > the second");
+GMOCK_IMPLEMENT_COMPARISON2_MATCHER_(
+    Le, <=, "a pair where the first <= the second");
+GMOCK_IMPLEMENT_COMPARISON2_MATCHER_(
+    Lt, <, "a pair where the first < the second");
+GMOCK_IMPLEMENT_COMPARISON2_MATCHER_(Ne, !=, "an unequal pair");
+
+#undef GMOCK_IMPLEMENT_COMPARISON2_MATCHER_
+
+// Implements the Not(...) matcher for a particular argument type T.
+// We do not nest it inside the NotMatcher class template, as that
+// will prevent different instantiations of NotMatcher from sharing
+// the same NotMatcherImpl<T> class.
+template <typename T>
+class NotMatcherImpl : public MatcherInterface<T> {
+ public:
+  explicit NotMatcherImpl(const Matcher<T>& matcher)
+      : matcher_(matcher) {}
+
+  virtual bool MatchAndExplain(T x, MatchResultListener* listener) const {
+    return !matcher_.MatchAndExplain(x, listener);
+  }
+
+  virtual void DescribeTo(::std::ostream* os) const {
+    matcher_.DescribeNegationTo(os);
+  }
+
+  virtual void DescribeNegationTo(::std::ostream* os) const {
+    matcher_.DescribeTo(os);
+  }
+
+ private:
+  const Matcher<T> matcher_;
+
+  GTEST_DISALLOW_ASSIGN_(NotMatcherImpl);
+};
+
+// Implements the Not(m) matcher, which matches a value that doesn't
+// match matcher m.
+template <typename InnerMatcher>
+class NotMatcher {
+ public:
+  explicit NotMatcher(InnerMatcher matcher) : matcher_(matcher) {}
+
+  // This template type conversion operator allows Not(m) to be used
+  // to match any type m can match.
+  template <typename T>
+  operator Matcher<T>() const {
+    return Matcher<T>(new NotMatcherImpl<T>(SafeMatcherCast<T>(matcher_)));
+  }
+
+ private:
+  InnerMatcher matcher_;
+
+  GTEST_DISALLOW_ASSIGN_(NotMatcher);
+};
+
+// Implements the AllOf(m1, m2) matcher for a particular argument type
+// T. We do not nest it inside the BothOfMatcher class template, as
+// that will prevent different instantiations of BothOfMatcher from
+// sharing the same BothOfMatcherImpl<T> class.
+template <typename T>
+class BothOfMatcherImpl : public MatcherInterface<T> {
+ public:
+  BothOfMatcherImpl(const Matcher<T>& matcher1, const Matcher<T>& matcher2)
+      : matcher1_(matcher1), matcher2_(matcher2) {}
+
+  virtual void DescribeTo(::std::ostream* os) const {
+    *os << "(";
+    matcher1_.DescribeTo(os);
+    *os << ") and (";
+    matcher2_.DescribeTo(os);
+    *os << ")";
+  }
+
+  virtual void DescribeNegationTo(::std::ostream* os) const {
+    *os << "(";
+    matcher1_.DescribeNegationTo(os);
+    *os << ") or (";
+    matcher2_.DescribeNegationTo(os);
+    *os << ")";
+  }
+
+  virtual bool MatchAndExplain(T x, MatchResultListener* listener) const {
+    // If either matcher1_ or matcher2_ doesn't match x, we only need
+    // to explain why one of them fails.
+    StringMatchResultListener listener1;
+    if (!matcher1_.MatchAndExplain(x, &listener1)) {
+      *listener << listener1.str();
+      return false;
+    }
+
+    StringMatchResultListener listener2;
+    if (!matcher2_.MatchAndExplain(x, &listener2)) {
+      *listener << listener2.str();
+      return false;
+    }
+
+    // Otherwise we need to explain why *both* of them match.
+    const internal::string s1 = listener1.str();
+    const internal::string s2 = listener2.str();
+
+    if (s1 == "") {
+      *listener << s2;
+    } else {
+      *listener << s1;
+      if (s2 != "") {
+        *listener << ", and " << s2;
+      }
+    }
+    return true;
+  }
+
+ private:
+  const Matcher<T> matcher1_;
+  const Matcher<T> matcher2_;
+
+  GTEST_DISALLOW_ASSIGN_(BothOfMatcherImpl);
+};
+
+// Used for implementing the AllOf(m_1, ..., m_n) matcher, which
+// matches a value that matches all of the matchers m_1, ..., and m_n.
+template <typename Matcher1, typename Matcher2>
+class BothOfMatcher {
+ public:
+  BothOfMatcher(Matcher1 matcher1, Matcher2 matcher2)
+      : matcher1_(matcher1), matcher2_(matcher2) {}
+
+  // This template type conversion operator allows a
+  // BothOfMatcher<Matcher1, Matcher2> object to match any type that
+  // both Matcher1 and Matcher2 can match.
+  template <typename T>
+  operator Matcher<T>() const {
+    return Matcher<T>(new BothOfMatcherImpl<T>(SafeMatcherCast<T>(matcher1_),
+                                               SafeMatcherCast<T>(matcher2_)));
+  }
+
+ private:
+  Matcher1 matcher1_;
+  Matcher2 matcher2_;
+
+  GTEST_DISALLOW_ASSIGN_(BothOfMatcher);
+};
+
+// Implements the AnyOf(m1, m2) matcher for a particular argument type
+// T.  We do not nest it inside the AnyOfMatcher class template, as
+// that will prevent different instantiations of AnyOfMatcher from
+// sharing the same EitherOfMatcherImpl<T> class.
+template <typename T>
+class EitherOfMatcherImpl : public MatcherInterface<T> {
+ public:
+  EitherOfMatcherImpl(const Matcher<T>& matcher1, const Matcher<T>& matcher2)
+      : matcher1_(matcher1), matcher2_(matcher2) {}
+
+  virtual void DescribeTo(::std::ostream* os) const {
+    *os << "(";
+    matcher1_.DescribeTo(os);
+    *os << ") or (";
+    matcher2_.DescribeTo(os);
+    *os << ")";
+  }
+
+  virtual void DescribeNegationTo(::std::ostream* os) const {
+    *os << "(";
+    matcher1_.DescribeNegationTo(os);
+    *os << ") and (";
+    matcher2_.DescribeNegationTo(os);
+    *os << ")";
+  }
+
+  virtual bool MatchAndExplain(T x, MatchResultListener* listener) const {
+    // If either matcher1_ or matcher2_ matches x, we just need to
+    // explain why *one* of them matches.
+    StringMatchResultListener listener1;
+    if (matcher1_.MatchAndExplain(x, &listener1)) {
+      *listener << listener1.str();
+      return true;
+    }
+
+    StringMatchResultListener listener2;
+    if (matcher2_.MatchAndExplain(x, &listener2)) {
+      *listener << listener2.str();
+      return true;
+    }
+
+    // Otherwise we need to explain why *both* of them fail.
+    const internal::string s1 = listener1.str();
+    const internal::string s2 = listener2.str();
+
+    if (s1 == "") {
+      *listener << s2;
+    } else {
+      *listener << s1;
+      if (s2 != "") {
+        *listener << ", and " << s2;
+      }
+    }
+    return false;
+  }
+
+ private:
+  const Matcher<T> matcher1_;
+  const Matcher<T> matcher2_;
+
+  GTEST_DISALLOW_ASSIGN_(EitherOfMatcherImpl);
+};
+
+// Used for implementing the AnyOf(m_1, ..., m_n) matcher, which
+// matches a value that matches at least one of the matchers m_1, ...,
+// and m_n.
+template <typename Matcher1, typename Matcher2>
+class EitherOfMatcher {
+ public:
+  EitherOfMatcher(Matcher1 matcher1, Matcher2 matcher2)
+      : matcher1_(matcher1), matcher2_(matcher2) {}
+
+  // This template type conversion operator allows a
+  // EitherOfMatcher<Matcher1, Matcher2> object to match any type that
+  // both Matcher1 and Matcher2 can match.
+  template <typename T>
+  operator Matcher<T>() const {
+    return Matcher<T>(new EitherOfMatcherImpl<T>(
+        SafeMatcherCast<T>(matcher1_), SafeMatcherCast<T>(matcher2_)));
+  }
+
+ private:
+  Matcher1 matcher1_;
+  Matcher2 matcher2_;
+
+  GTEST_DISALLOW_ASSIGN_(EitherOfMatcher);
+};
+
+// Used for implementing Truly(pred), which turns a predicate into a
+// matcher.
+template <typename Predicate>
+class TrulyMatcher {
+ public:
+  explicit TrulyMatcher(Predicate pred) : predicate_(pred) {}
+
+  // This method template allows Truly(pred) to be used as a matcher
+  // for type T where T is the argument type of predicate 'pred'.  The
+  // argument is passed by reference as the predicate may be
+  // interested in the address of the argument.
+  template <typename T>
+  bool MatchAndExplain(T& x,  // NOLINT
+                       MatchResultListener* /* listener */) const {
+    // Without the if-statement, MSVC sometimes warns about converting
+    // a value to bool (warning 4800).
+    //
+    // We cannot write 'return !!predicate_(x);' as that doesn't work
+    // when predicate_(x) returns a class convertible to bool but
+    // having no operator!().
+    if (predicate_(x))
+      return true;
+    return false;
+  }
+
+  void DescribeTo(::std::ostream* os) const {
+    *os << "satisfies the given predicate";
+  }
+
+  void DescribeNegationTo(::std::ostream* os) const {
+    *os << "doesn't satisfy the given predicate";
+  }
+
+ private:
+  Predicate predicate_;
+
+  GTEST_DISALLOW_ASSIGN_(TrulyMatcher);
+};
+
+// Used for implementing Matches(matcher), which turns a matcher into
+// a predicate.
+template <typename M>
+class MatcherAsPredicate {
+ public:
+  explicit MatcherAsPredicate(M matcher) : matcher_(matcher) {}
+
+  // This template operator() allows Matches(m) to be used as a
+  // predicate on type T where m is a matcher on type T.
+  //
+  // The argument x is passed by reference instead of by value, as
+  // some matcher may be interested in its address (e.g. as in
+  // Matches(Ref(n))(x)).
+  template <typename T>
+  bool operator()(const T& x) const {
+    // We let matcher_ commit to a particular type here instead of
+    // when the MatcherAsPredicate object was constructed.  This
+    // allows us to write Matches(m) where m is a polymorphic matcher
+    // (e.g. Eq(5)).
+    //
+    // If we write Matcher<T>(matcher_).Matches(x) here, it won't
+    // compile when matcher_ has type Matcher<const T&>; if we write
+    // Matcher<const T&>(matcher_).Matches(x) here, it won't compile
+    // when matcher_ has type Matcher<T>; if we just write
+    // matcher_.Matches(x), it won't compile when matcher_ is
+    // polymorphic, e.g. Eq(5).
+    //
+    // MatcherCast<const T&>() is necessary for making the code work
+    // in all of the above situations.
+    return MatcherCast<const T&>(matcher_).Matches(x);
+  }
+
+ private:
+  M matcher_;
+
+  GTEST_DISALLOW_ASSIGN_(MatcherAsPredicate);
+};
+
+// For implementing ASSERT_THAT() and EXPECT_THAT().  The template
+// argument M must be a type that can be converted to a matcher.
+template <typename M>
+class PredicateFormatterFromMatcher {
+ public:
+  explicit PredicateFormatterFromMatcher(const M& m) : matcher_(m) {}
+
+  // This template () operator allows a PredicateFormatterFromMatcher
+  // object to act as a predicate-formatter suitable for using with
+  // Google Test's EXPECT_PRED_FORMAT1() macro.
+  template <typename T>
+  AssertionResult operator()(const char* value_text, const T& x) const {
+    // We convert matcher_ to a Matcher<const T&> *now* instead of
+    // when the PredicateFormatterFromMatcher object was constructed,
+    // as matcher_ may be polymorphic (e.g. NotNull()) and we won't
+    // know which type to instantiate it to until we actually see the
+    // type of x here.
+    //
+    // We write MatcherCast<const T&>(matcher_) instead of
+    // Matcher<const T&>(matcher_), as the latter won't compile when
+    // matcher_ has type Matcher<T> (e.g. An<int>()).
+    const Matcher<const T&> matcher = MatcherCast<const T&>(matcher_);
+    StringMatchResultListener listener;
+    if (MatchPrintAndExplain(x, matcher, &listener))
+      return AssertionSuccess();
+
+    ::std::stringstream ss;
+    ss << "Value of: " << value_text << "\n"
+       << "Expected: ";
+    matcher.DescribeTo(&ss);
+    ss << "\n  Actual: " << listener.str();
+    return AssertionFailure() << ss.str();
+  }
+
+ private:
+  const M matcher_;
+
+  GTEST_DISALLOW_ASSIGN_(PredicateFormatterFromMatcher);
+};
+
+// A helper function for converting a matcher to a predicate-formatter
+// without the user needing to explicitly write the type.  This is
+// used for implementing ASSERT_THAT() and EXPECT_THAT().
+template <typename M>
+inline PredicateFormatterFromMatcher<M>
+MakePredicateFormatterFromMatcher(const M& matcher) {
+  return PredicateFormatterFromMatcher<M>(matcher);
+}
+
+// Implements the polymorphic floating point equality matcher, which
+// matches two float values using ULP-based approximation.  The
+// template is meant to be instantiated with FloatType being either
+// float or double.
+template <typename FloatType>
+class FloatingEqMatcher {
+ public:
+  // Constructor for FloatingEqMatcher.
+  // The matcher's input will be compared with rhs.  The matcher treats two
+  // NANs as equal if nan_eq_nan is true.  Otherwise, under IEEE standards,
+  // equality comparisons between NANs will always return false.
+  FloatingEqMatcher(FloatType rhs, bool nan_eq_nan) :
+    rhs_(rhs), nan_eq_nan_(nan_eq_nan) {}
+
+  // Implements floating point equality matcher as a Matcher<T>.
+  template <typename T>
+  class Impl : public MatcherInterface<T> {
+   public:
+    Impl(FloatType rhs, bool nan_eq_nan) :
+      rhs_(rhs), nan_eq_nan_(nan_eq_nan) {}
+
+    virtual bool MatchAndExplain(T value,
+                                 MatchResultListener* /* listener */) const {
+      const FloatingPoint<FloatType> lhs(value), rhs(rhs_);
+
+      // Compares NaNs first, if nan_eq_nan_ is true.
+      if (nan_eq_nan_ && lhs.is_nan()) {
+        return rhs.is_nan();
+      }
+
+      return lhs.AlmostEquals(rhs);
+    }
+
+    virtual void DescribeTo(::std::ostream* os) const {
+      // os->precision() returns the previously set precision, which we
+      // store to restore the ostream to its original configuration
+      // after outputting.
+      const ::std::streamsize old_precision = os->precision(
+          ::std::numeric_limits<FloatType>::digits10 + 2);
+      if (FloatingPoint<FloatType>(rhs_).is_nan()) {
+        if (nan_eq_nan_) {
+          *os << "is NaN";
+        } else {
+          *os << "never matches";
+        }
+      } else {
+        *os << "is approximately " << rhs_;
+      }
+      os->precision(old_precision);
+    }
+
+    virtual void DescribeNegationTo(::std::ostream* os) const {
+      // As before, get original precision.
+      const ::std::streamsize old_precision = os->precision(
+          ::std::numeric_limits<FloatType>::digits10 + 2);
+      if (FloatingPoint<FloatType>(rhs_).is_nan()) {
+        if (nan_eq_nan_) {
+          *os << "isn't NaN";
+        } else {
+          *os << "is anything";
+        }
+      } else {
+        *os << "isn't approximately " << rhs_;
+      }
+      // Restore original precision.
+      os->precision(old_precision);
+    }
+
+   private:
+    const FloatType rhs_;
+    const bool nan_eq_nan_;
+
+    GTEST_DISALLOW_ASSIGN_(Impl);
+  };
+
+  // The following 3 type conversion operators allow FloatEq(rhs) and
+  // NanSensitiveFloatEq(rhs) to be used as a Matcher<float>, a
+  // Matcher<const float&>, or a Matcher<float&>, but nothing else.
+  // (While Google's C++ coding style doesn't allow arguments passed
+  // by non-const reference, we may see them in code not conforming to
+  // the style.  Therefore Google Mock needs to support them.)
+  operator Matcher<FloatType>() const {
+    return MakeMatcher(new Impl<FloatType>(rhs_, nan_eq_nan_));
+  }
+
+  operator Matcher<const FloatType&>() const {
+    return MakeMatcher(new Impl<const FloatType&>(rhs_, nan_eq_nan_));
+  }
+
+  operator Matcher<FloatType&>() const {
+    return MakeMatcher(new Impl<FloatType&>(rhs_, nan_eq_nan_));
+  }
+
+ private:
+  const FloatType rhs_;
+  const bool nan_eq_nan_;
+
+  GTEST_DISALLOW_ASSIGN_(FloatingEqMatcher);
+};
+
+// Implements the Pointee(m) matcher for matching a pointer whose
+// pointee matches matcher m.  The pointer can be either raw or smart.
+template <typename InnerMatcher>
+class PointeeMatcher {
+ public:
+  explicit PointeeMatcher(const InnerMatcher& matcher) : matcher_(matcher) {}
+
+  // This type conversion operator template allows Pointee(m) to be
+  // used as a matcher for any pointer type whose pointee type is
+  // compatible with the inner matcher, where type Pointer can be
+  // either a raw pointer or a smart pointer.
+  //
+  // The reason we do this instead of relying on
+  // MakePolymorphicMatcher() is that the latter is not flexible
+  // enough for implementing the DescribeTo() method of Pointee().
+  template <typename Pointer>
+  operator Matcher<Pointer>() const {
+    return MakeMatcher(new Impl<Pointer>(matcher_));
+  }
+
+ private:
+  // The monomorphic implementation that works for a particular pointer type.
+  template <typename Pointer>
+  class Impl : public MatcherInterface<Pointer> {
+   public:
+    typedef typename PointeeOf<GTEST_REMOVE_CONST_(  // NOLINT
+        GTEST_REMOVE_REFERENCE_(Pointer))>::type Pointee;
+
+    explicit Impl(const InnerMatcher& matcher)
+        : matcher_(MatcherCast<const Pointee&>(matcher)) {}
+
+    virtual void DescribeTo(::std::ostream* os) const {
+      *os << "points to a value that ";
+      matcher_.DescribeTo(os);
+    }
+
+    virtual void DescribeNegationTo(::std::ostream* os) const {
+      *os << "does not point to a value that ";
+      matcher_.DescribeTo(os);
+    }
+
+    virtual bool MatchAndExplain(Pointer pointer,
+                                 MatchResultListener* listener) const {
+      if (GetRawPointer(pointer) == NULL)
+        return false;
+
+      *listener << "which points to ";
+      return MatchPrintAndExplain(*pointer, matcher_, listener);
+    }
+
+   private:
+    const Matcher<const Pointee&> matcher_;
+
+    GTEST_DISALLOW_ASSIGN_(Impl);
+  };
+
+  const InnerMatcher matcher_;
+
+  GTEST_DISALLOW_ASSIGN_(PointeeMatcher);
+};
+
+// Implements the Field() matcher for matching a field (i.e. member
+// variable) of an object.
+template <typename Class, typename FieldType>
+class FieldMatcher {
+ public:
+  FieldMatcher(FieldType Class::*field,
+               const Matcher<const FieldType&>& matcher)
+      : field_(field), matcher_(matcher) {}
+
+  void DescribeTo(::std::ostream* os) const {
+    *os << "is an object whose given field ";
+    matcher_.DescribeTo(os);
+  }
+
+  void DescribeNegationTo(::std::ostream* os) const {
+    *os << "is an object whose given field ";
+    matcher_.DescribeNegationTo(os);
+  }
+
+  template <typename T>
+  bool MatchAndExplain(const T& value, MatchResultListener* listener) const {
+    return MatchAndExplainImpl(
+        typename ::testing::internal::
+            is_pointer<GTEST_REMOVE_CONST_(T)>::type(),
+        value, listener);
+  }
+
+ private:
+  // The first argument of MatchAndExplainImpl() is needed to help
+  // Symbian's C++ compiler choose which overload to use.  Its type is
+  // true_type iff the Field() matcher is used to match a pointer.
+  bool MatchAndExplainImpl(false_type /* is_not_pointer */, const Class& obj,
+                           MatchResultListener* listener) const {
+    *listener << "whose given field is ";
+    return MatchPrintAndExplain(obj.*field_, matcher_, listener);
+  }
+
+  bool MatchAndExplainImpl(true_type /* is_pointer */, const Class* p,
+                           MatchResultListener* listener) const {
+    if (p == NULL)
+      return false;
+
+    *listener << "which points to an object ";
+    // Since *p has a field, it must be a class/struct/union type and
+    // thus cannot be a pointer.  Therefore we pass false_type() as
+    // the first argument.
+    return MatchAndExplainImpl(false_type(), *p, listener);
+  }
+
+  const FieldType Class::*field_;
+  const Matcher<const FieldType&> matcher_;
+
+  GTEST_DISALLOW_ASSIGN_(FieldMatcher);
+};
+
+// Implements the Property() matcher for matching a property
+// (i.e. return value of a getter method) of an object.
+template <typename Class, typename PropertyType>
+class PropertyMatcher {
+ public:
+  // The property may have a reference type, so 'const PropertyType&'
+  // may cause double references and fail to compile.  That's why we
+  // need GTEST_REFERENCE_TO_CONST, which works regardless of
+  // PropertyType being a reference or not.
+  typedef GTEST_REFERENCE_TO_CONST_(PropertyType) RefToConstProperty;
+
+  PropertyMatcher(PropertyType (Class::*property)() const,
+                  const Matcher<RefToConstProperty>& matcher)
+      : property_(property), matcher_(matcher) {}
+
+  void DescribeTo(::std::ostream* os) const {
+    *os << "is an object whose given property ";
+    matcher_.DescribeTo(os);
+  }
+
+  void DescribeNegationTo(::std::ostream* os) const {
+    *os << "is an object whose given property ";
+    matcher_.DescribeNegationTo(os);
+  }
+
+  template <typename T>
+  bool MatchAndExplain(const T&value, MatchResultListener* listener) const {
+    return MatchAndExplainImpl(
+        typename ::testing::internal::
+            is_pointer<GTEST_REMOVE_CONST_(T)>::type(),
+        value, listener);
+  }
+
+ private:
+  // The first argument of MatchAndExplainImpl() is needed to help
+  // Symbian's C++ compiler choose which overload to use.  Its type is
+  // true_type iff the Property() matcher is used to match a pointer.
+  bool MatchAndExplainImpl(false_type /* is_not_pointer */, const Class& obj,
+                           MatchResultListener* listener) const {
+    *listener << "whose given property is ";
+    // Cannot pass the return value (for example, int) to MatchPrintAndExplain,
+    // which takes a non-const reference as argument.
+    RefToConstProperty result = (obj.*property_)();
+    return MatchPrintAndExplain(result, matcher_, listener);
+  }
+
+  bool MatchAndExplainImpl(true_type /* is_pointer */, const Class* p,
+                           MatchResultListener* listener) const {
+    if (p == NULL)
+      return false;
+
+    *listener << "which points to an object ";
+    // Since *p has a property method, it must be a class/struct/union
+    // type and thus cannot be a pointer.  Therefore we pass
+    // false_type() as the first argument.
+    return MatchAndExplainImpl(false_type(), *p, listener);
+  }
+
+  PropertyType (Class::*property_)() const;
+  const Matcher<RefToConstProperty> matcher_;
+
+  GTEST_DISALLOW_ASSIGN_(PropertyMatcher);
+};
+
+// Type traits specifying various features of different functors for ResultOf.
+// The default template specifies features for functor objects.
+// Functor classes have to typedef argument_type and result_type
+// to be compatible with ResultOf.
+template <typename Functor>
+struct CallableTraits {
+  typedef typename Functor::result_type ResultType;
+  typedef Functor StorageType;
+
+  static void CheckIsValid(Functor /* functor */) {}
+  template <typename T>
+  static ResultType Invoke(Functor f, T arg) { return f(arg); }
+};
+
+// Specialization for function pointers.
+template <typename ArgType, typename ResType>
+struct CallableTraits<ResType(*)(ArgType)> {
+  typedef ResType ResultType;
+  typedef ResType(*StorageType)(ArgType);
+
+  static void CheckIsValid(ResType(*f)(ArgType)) {
+    GTEST_CHECK_(f != NULL)
+        << "NULL function pointer is passed into ResultOf().";
+  }
+  template <typename T>
+  static ResType Invoke(ResType(*f)(ArgType), T arg) {
+    return (*f)(arg);
+  }
+};
+
+// Implements the ResultOf() matcher for matching a return value of a
+// unary function of an object.
+template <typename Callable>
+class ResultOfMatcher {
+ public:
+  typedef typename CallableTraits<Callable>::ResultType ResultType;
+
+  ResultOfMatcher(Callable callable, const Matcher<ResultType>& matcher)
+      : callable_(callable), matcher_(matcher) {
+    CallableTraits<Callable>::CheckIsValid(callable_);
+  }
+
+  template <typename T>
+  operator Matcher<T>() const {
+    return Matcher<T>(new Impl<T>(callable_, matcher_));
+  }
+
+ private:
+  typedef typename CallableTraits<Callable>::StorageType CallableStorageType;
+
+  template <typename T>
+  class Impl : public MatcherInterface<T> {
+   public:
+    Impl(CallableStorageType callable, const Matcher<ResultType>& matcher)
+        : callable_(callable), matcher_(matcher) {}
+
+    virtual void DescribeTo(::std::ostream* os) const {
+      *os << "is mapped by the given callable to a value that ";
+      matcher_.DescribeTo(os);
+    }
+
+    virtual void DescribeNegationTo(::std::ostream* os) const {
+      *os << "is mapped by the given callable to a value that ";
+      matcher_.DescribeNegationTo(os);
+    }
+
+    virtual bool MatchAndExplain(T obj, MatchResultListener* listener) const {
+      *listener << "which is mapped by the given callable to ";
+      // Cannot pass the return value (for example, int) to
+      // MatchPrintAndExplain, which takes a non-const reference as argument.
+      ResultType result =
+          CallableTraits<Callable>::template Invoke<T>(callable_, obj);
+      return MatchPrintAndExplain(result, matcher_, listener);
+    }
+
+   private:
+    // Functors often define operator() as non-const method even though
+    // they are actualy stateless. But we need to use them even when
+    // 'this' is a const pointer. It's the user's responsibility not to
+    // use stateful callables with ResultOf(), which does't guarantee
+    // how many times the callable will be invoked.
+    mutable CallableStorageType callable_;
+    const Matcher<ResultType> matcher_;
+
+    GTEST_DISALLOW_ASSIGN_(Impl);
+  };  // class Impl
+
+  const CallableStorageType callable_;
+  const Matcher<ResultType> matcher_;
+
+  GTEST_DISALLOW_ASSIGN_(ResultOfMatcher);
+};
+
+// Implements an equality matcher for any STL-style container whose elements
+// support ==. This matcher is like Eq(), but its failure explanations provide
+// more detailed information that is useful when the container is used as a set.
+// The failure message reports elements that are in one of the operands but not
+// the other. The failure messages do not report duplicate or out-of-order
+// elements in the containers (which don't properly matter to sets, but can
+// occur if the containers are vectors or lists, for example).
+//
+// Uses the container's const_iterator, value_type, operator ==,
+// begin(), and end().
+template <typename Container>
+class ContainerEqMatcher {
+ public:
+  typedef internal::StlContainerView<Container> View;
+  typedef typename View::type StlContainer;
+  typedef typename View::const_reference StlContainerReference;
+
+  // We make a copy of rhs in case the elements in it are modified
+  // after this matcher is created.
+  explicit ContainerEqMatcher(const Container& rhs) : rhs_(View::Copy(rhs)) {
+    // Makes sure the user doesn't instantiate this class template
+    // with a const or reference type.
+    (void)testing::StaticAssertTypeEq<Container,
+        GTEST_REMOVE_REFERENCE_AND_CONST_(Container)>();
+  }
+
+  void DescribeTo(::std::ostream* os) const {
+    *os << "equals ";
+    UniversalPrint(rhs_, os);
+  }
+  void DescribeNegationTo(::std::ostream* os) const {
+    *os << "does not equal ";
+    UniversalPrint(rhs_, os);
+  }
+
+  template <typename LhsContainer>
+  bool MatchAndExplain(const LhsContainer& lhs,
+                       MatchResultListener* listener) const {
+    // GTEST_REMOVE_CONST_() is needed to work around an MSVC 8.0 bug
+    // that causes LhsContainer to be a const type sometimes.
+    typedef internal::StlContainerView<GTEST_REMOVE_CONST_(LhsContainer)>
+        LhsView;
+    typedef typename LhsView::type LhsStlContainer;
+    StlContainerReference lhs_stl_container = LhsView::ConstReference(lhs);
+    if (lhs_stl_container == rhs_)
+      return true;
+
+    ::std::ostream* const os = listener->stream();
+    if (os != NULL) {
+      // Something is different. Check for extra values first.
+      bool printed_header = false;
+      for (typename LhsStlContainer::const_iterator it =
+               lhs_stl_container.begin();
+           it != lhs_stl_container.end(); ++it) {
+        if (internal::ArrayAwareFind(rhs_.begin(), rhs_.end(), *it) ==
+            rhs_.end()) {
+          if (printed_header) {
+            *os << ", ";
+          } else {
+            *os << "which has these unexpected elements: ";
+            printed_header = true;
+          }
+          UniversalPrint(*it, os);
+        }
+      }
+
+      // Now check for missing values.
+      bool printed_header2 = false;
+      for (typename StlContainer::const_iterator it = rhs_.begin();
+           it != rhs_.end(); ++it) {
+        if (internal::ArrayAwareFind(
+                lhs_stl_container.begin(), lhs_stl_container.end(), *it) ==
+            lhs_stl_container.end()) {
+          if (printed_header2) {
+            *os << ", ";
+          } else {
+            *os << (printed_header ? ",\nand" : "which")
+                << " doesn't have these expected elements: ";
+            printed_header2 = true;
+          }
+          UniversalPrint(*it, os);
+        }
+      }
+    }
+
+    return false;
+  }
+
+ private:
+  const StlContainer rhs_;
+
+  GTEST_DISALLOW_ASSIGN_(ContainerEqMatcher);
+};
+
+// A comparator functor that uses the < operator to compare two values.
+struct LessComparator {
+  template <typename T, typename U>
+  bool operator()(const T& lhs, const U& rhs) const { return lhs < rhs; }
+};
+
+// Implements WhenSortedBy(comparator, container_matcher).
+template <typename Comparator, typename ContainerMatcher>
+class WhenSortedByMatcher {
+ public:
+  WhenSortedByMatcher(const Comparator& comparator,
+                      const ContainerMatcher& matcher)
+      : comparator_(comparator), matcher_(matcher) {}
+
+  template <typename LhsContainer>
+  operator Matcher<LhsContainer>() const {
+    return MakeMatcher(new Impl<LhsContainer>(comparator_, matcher_));
+  }
+
+  template <typename LhsContainer>
+  class Impl : public MatcherInterface<LhsContainer> {
+   public:
+    typedef internal::StlContainerView<
+         GTEST_REMOVE_REFERENCE_AND_CONST_(LhsContainer)> LhsView;
+    typedef typename LhsView::type LhsStlContainer;
+    typedef typename LhsView::const_reference LhsStlContainerReference;
+    typedef typename LhsStlContainer::value_type LhsValue;
+
+    Impl(const Comparator& comparator, const ContainerMatcher& matcher)
+        : comparator_(comparator), matcher_(matcher) {}
+
+    virtual void DescribeTo(::std::ostream* os) const {
+      *os << "(when sorted) ";
+      matcher_.DescribeTo(os);
+    }
+
+    virtual void DescribeNegationTo(::std::ostream* os) const {
+      *os << "(when sorted) ";
+      matcher_.DescribeNegationTo(os);
+    }
+
+    virtual bool MatchAndExplain(LhsContainer lhs,
+                                 MatchResultListener* listener) const {
+      LhsStlContainerReference lhs_stl_container = LhsView::ConstReference(lhs);
+      std::vector<LhsValue> sorted_container(lhs_stl_container.begin(),
+                                             lhs_stl_container.end());
+      std::sort(sorted_container.begin(), sorted_container.end(), comparator_);
+
+      if (!listener->IsInterested()) {
+        // If the listener is not interested, we do not need to
+        // construct the inner explanation.
+        return matcher_.Matches(sorted_container);
+      }
+
+      *listener << "which is ";
+      UniversalPrint(sorted_container, listener->stream());
+      *listener << " when sorted";
+
+      StringMatchResultListener inner_listener;
+      const bool match = matcher_.MatchAndExplain(sorted_container,
+                                                  &inner_listener);
+      PrintIfNotEmpty(inner_listener.str(), listener->stream());
+      return match;
+    }
+
+   private:
+    const Comparator comparator_;
+    const Matcher<const std::vector<LhsValue>&> matcher_;
+
+    GTEST_DISALLOW_COPY_AND_ASSIGN_(Impl);
+  };
+
+ private:
+  const Comparator comparator_;
+  const ContainerMatcher matcher_;
+
+  GTEST_DISALLOW_ASSIGN_(WhenSortedByMatcher);
+};
+
+// Implements Pointwise(tuple_matcher, rhs_container).  tuple_matcher
+// must be able to be safely cast to Matcher<tuple<const T1&, const
+// T2&> >, where T1 and T2 are the types of elements in the LHS
+// container and the RHS container respectively.
+template <typename TupleMatcher, typename RhsContainer>
+class PointwiseMatcher {
+ public:
+  typedef internal::StlContainerView<RhsContainer> RhsView;
+  typedef typename RhsView::type RhsStlContainer;
+  typedef typename RhsStlContainer::value_type RhsValue;
+
+  // Like ContainerEq, we make a copy of rhs in case the elements in
+  // it are modified after this matcher is created.
+  PointwiseMatcher(const TupleMatcher& tuple_matcher, const RhsContainer& rhs)
+      : tuple_matcher_(tuple_matcher), rhs_(RhsView::Copy(rhs)) {
+    // Makes sure the user doesn't instantiate this class template
+    // with a const or reference type.
+    (void)testing::StaticAssertTypeEq<RhsContainer,
+        GTEST_REMOVE_REFERENCE_AND_CONST_(RhsContainer)>();
+  }
+
+  template <typename LhsContainer>
+  operator Matcher<LhsContainer>() const {
+    return MakeMatcher(new Impl<LhsContainer>(tuple_matcher_, rhs_));
+  }
+
+  template <typename LhsContainer>
+  class Impl : public MatcherInterface<LhsContainer> {
+   public:
+    typedef internal::StlContainerView<
+         GTEST_REMOVE_REFERENCE_AND_CONST_(LhsContainer)> LhsView;
+    typedef typename LhsView::type LhsStlContainer;
+    typedef typename LhsView::const_reference LhsStlContainerReference;
+    typedef typename LhsStlContainer::value_type LhsValue;
+    // We pass the LHS value and the RHS value to the inner matcher by
+    // reference, as they may be expensive to copy.  We must use tuple
+    // instead of pair here, as a pair cannot hold references (C++ 98,
+    // 20.2.2 [lib.pairs]).
+    typedef std::tr1::tuple<const LhsValue&, const RhsValue&> InnerMatcherArg;
+
+    Impl(const TupleMatcher& tuple_matcher, const RhsStlContainer& rhs)
+        // mono_tuple_matcher_ holds a monomorphic version of the tuple matcher.
+        : mono_tuple_matcher_(SafeMatcherCast<InnerMatcherArg>(tuple_matcher)),
+          rhs_(rhs) {}
+
+    virtual void DescribeTo(::std::ostream* os) const {
+      *os << "contains " << rhs_.size()
+          << " values, where each value and its corresponding value in ";
+      UniversalPrinter<RhsStlContainer>::Print(rhs_, os);
+      *os << " ";
+      mono_tuple_matcher_.DescribeTo(os);
+    }
+    virtual void DescribeNegationTo(::std::ostream* os) const {
+      *os << "doesn't contain exactly " << rhs_.size()
+          << " values, or contains a value x at some index i"
+          << " where x and the i-th value of ";
+      UniversalPrint(rhs_, os);
+      *os << " ";
+      mono_tuple_matcher_.DescribeNegationTo(os);
+    }
+
+    virtual bool MatchAndExplain(LhsContainer lhs,
+                                 MatchResultListener* listener) const {
+      LhsStlContainerReference lhs_stl_container = LhsView::ConstReference(lhs);
+      const size_t actual_size = lhs_stl_container.size();
+      if (actual_size != rhs_.size()) {
+        *listener << "which contains " << actual_size << " values";
+        return false;
+      }
+
+      typename LhsStlContainer::const_iterator left = lhs_stl_container.begin();
+      typename RhsStlContainer::const_iterator right = rhs_.begin();
+      for (size_t i = 0; i != actual_size; ++i, ++left, ++right) {
+        const InnerMatcherArg value_pair(*left, *right);
+
+        if (listener->IsInterested()) {
+          StringMatchResultListener inner_listener;
+          if (!mono_tuple_matcher_.MatchAndExplain(
+                  value_pair, &inner_listener)) {
+            *listener << "where the value pair (";
+            UniversalPrint(*left, listener->stream());
+            *listener << ", ";
+            UniversalPrint(*right, listener->stream());
+            *listener << ") at index #" << i << " don't match";
+            PrintIfNotEmpty(inner_listener.str(), listener->stream());
+            return false;
+          }
+        } else {
+          if (!mono_tuple_matcher_.Matches(value_pair))
+            return false;
+        }
+      }
+
+      return true;
+    }
+
+   private:
+    const Matcher<InnerMatcherArg> mono_tuple_matcher_;
+    const RhsStlContainer rhs_;
+
+    GTEST_DISALLOW_ASSIGN_(Impl);
+  };
+
+ private:
+  const TupleMatcher tuple_matcher_;
+  const RhsStlContainer rhs_;
+
+  GTEST_DISALLOW_ASSIGN_(PointwiseMatcher);
+};
+
+// Holds the logic common to ContainsMatcherImpl and EachMatcherImpl.
+template <typename Container>
+class QuantifierMatcherImpl : public MatcherInterface<Container> {
+ public:
+  typedef GTEST_REMOVE_REFERENCE_AND_CONST_(Container) RawContainer;
+  typedef StlContainerView<RawContainer> View;
+  typedef typename View::type StlContainer;
+  typedef typename View::const_reference StlContainerReference;
+  typedef typename StlContainer::value_type Element;
+
+  template <typename InnerMatcher>
+  explicit QuantifierMatcherImpl(InnerMatcher inner_matcher)
+      : inner_matcher_(
+           testing::SafeMatcherCast<const Element&>(inner_matcher)) {}
+
+  // Checks whether:
+  // * All elements in the container match, if all_elements_should_match.
+  // * Any element in the container matches, if !all_elements_should_match.
+  bool MatchAndExplainImpl(bool all_elements_should_match,
+                           Container container,
+                           MatchResultListener* listener) const {
+    StlContainerReference stl_container = View::ConstReference(container);
+    size_t i = 0;
+    for (typename StlContainer::const_iterator it = stl_container.begin();
+         it != stl_container.end(); ++it, ++i) {
+      StringMatchResultListener inner_listener;
+      const bool matches = inner_matcher_.MatchAndExplain(*it, &inner_listener);
+
+      if (matches != all_elements_should_match) {
+        *listener << "whose element #" << i
+                  << (matches ? " matches" : " doesn't match");
+        PrintIfNotEmpty(inner_listener.str(), listener->stream());
+        return !all_elements_should_match;
+      }
+    }
+    return all_elements_should_match;
+  }
+
+ protected:
+  const Matcher<const Element&> inner_matcher_;
+
+  GTEST_DISALLOW_ASSIGN_(QuantifierMatcherImpl);
+};
+
+// Implements Contains(element_matcher) for the given argument type Container.
+// Symmetric to EachMatcherImpl.
+template <typename Container>
+class ContainsMatcherImpl : public QuantifierMatcherImpl<Container> {
+ public:
+  template <typename InnerMatcher>
+  explicit ContainsMatcherImpl(InnerMatcher inner_matcher)
+      : QuantifierMatcherImpl<Container>(inner_matcher) {}
+
+  // Describes what this matcher does.
+  virtual void DescribeTo(::std::ostream* os) const {
+    *os << "contains at least one element that ";
+    this->inner_matcher_.DescribeTo(os);
+  }
+
+  virtual void DescribeNegationTo(::std::ostream* os) const {
+    *os << "doesn't contain any element that ";
+    this->inner_matcher_.DescribeTo(os);
+  }
+
+  virtual bool MatchAndExplain(Container container,
+                               MatchResultListener* listener) const {
+    return this->MatchAndExplainImpl(false, container, listener);
+  }
+
+ private:
+  GTEST_DISALLOW_ASSIGN_(ContainsMatcherImpl);
+};
+
+// Implements Each(element_matcher) for the given argument type Container.
+// Symmetric to ContainsMatcherImpl.
+template <typename Container>
+class EachMatcherImpl : public QuantifierMatcherImpl<Container> {
+ public:
+  template <typename InnerMatcher>
+  explicit EachMatcherImpl(InnerMatcher inner_matcher)
+      : QuantifierMatcherImpl<Container>(inner_matcher) {}
+
+  // Describes what this matcher does.
+  virtual void DescribeTo(::std::ostream* os) const {
+    *os << "only contains elements that ";
+    this->inner_matcher_.DescribeTo(os);
+  }
+
+  virtual void DescribeNegationTo(::std::ostream* os) const {
+    *os << "contains some element that ";
+    this->inner_matcher_.DescribeNegationTo(os);
+  }
+
+  virtual bool MatchAndExplain(Container container,
+                               MatchResultListener* listener) const {
+    return this->MatchAndExplainImpl(true, container, listener);
+  }
+
+ private:
+  GTEST_DISALLOW_ASSIGN_(EachMatcherImpl);
+};
+
+// Implements polymorphic Contains(element_matcher).
+template <typename M>
+class ContainsMatcher {
+ public:
+  explicit ContainsMatcher(M m) : inner_matcher_(m) {}
+
+  template <typename Container>
+  operator Matcher<Container>() const {
+    return MakeMatcher(new ContainsMatcherImpl<Container>(inner_matcher_));
+  }
+
+ private:
+  const M inner_matcher_;
+
+  GTEST_DISALLOW_ASSIGN_(ContainsMatcher);
+};
+
+// Implements polymorphic Each(element_matcher).
+template <typename M>
+class EachMatcher {
+ public:
+  explicit EachMatcher(M m) : inner_matcher_(m) {}
+
+  template <typename Container>
+  operator Matcher<Container>() const {
+    return MakeMatcher(new EachMatcherImpl<Container>(inner_matcher_));
+  }
+
+ private:
+  const M inner_matcher_;
+
+  GTEST_DISALLOW_ASSIGN_(EachMatcher);
+};
+
+// Implements Key(inner_matcher) for the given argument pair type.
+// Key(inner_matcher) matches an std::pair whose 'first' field matches
+// inner_matcher.  For example, Contains(Key(Ge(5))) can be used to match an
+// std::map that contains at least one element whose key is >= 5.
+template <typename PairType>
+class KeyMatcherImpl : public MatcherInterface<PairType> {
+ public:
+  typedef GTEST_REMOVE_REFERENCE_AND_CONST_(PairType) RawPairType;
+  typedef typename RawPairType::first_type KeyType;
+
+  template <typename InnerMatcher>
+  explicit KeyMatcherImpl(InnerMatcher inner_matcher)
+      : inner_matcher_(
+          testing::SafeMatcherCast<const KeyType&>(inner_matcher)) {
+  }
+
+  // Returns true iff 'key_value.first' (the key) matches the inner matcher.
+  virtual bool MatchAndExplain(PairType key_value,
+                               MatchResultListener* listener) const {
+    StringMatchResultListener inner_listener;
+    const bool match = inner_matcher_.MatchAndExplain(key_value.first,
+                                                      &inner_listener);
+    const internal::string explanation = inner_listener.str();
+    if (explanation != "") {
+      *listener << "whose first field is a value " << explanation;
+    }
+    return match;
+  }
+
+  // Describes what this matcher does.
+  virtual void DescribeTo(::std::ostream* os) const {
+    *os << "has a key that ";
+    inner_matcher_.DescribeTo(os);
+  }
+
+  // Describes what the negation of this matcher does.
+  virtual void DescribeNegationTo(::std::ostream* os) const {
+    *os << "doesn't have a key that ";
+    inner_matcher_.DescribeTo(os);
+  }
+
+ private:
+  const Matcher<const KeyType&> inner_matcher_;
+
+  GTEST_DISALLOW_ASSIGN_(KeyMatcherImpl);
+};
+
+// Implements polymorphic Key(matcher_for_key).
+template <typename M>
+class KeyMatcher {
+ public:
+  explicit KeyMatcher(M m) : matcher_for_key_(m) {}
+
+  template <typename PairType>
+  operator Matcher<PairType>() const {
+    return MakeMatcher(new KeyMatcherImpl<PairType>(matcher_for_key_));
+  }
+
+ private:
+  const M matcher_for_key_;
+
+  GTEST_DISALLOW_ASSIGN_(KeyMatcher);
+};
+
+// Implements Pair(first_matcher, second_matcher) for the given argument pair
+// type with its two matchers. See Pair() function below.
+template <typename PairType>
+class PairMatcherImpl : public MatcherInterface<PairType> {
+ public:
+  typedef GTEST_REMOVE_REFERENCE_AND_CONST_(PairType) RawPairType;
+  typedef typename RawPairType::first_type FirstType;
+  typedef typename RawPairType::second_type SecondType;
+
+  template <typename FirstMatcher, typename SecondMatcher>
+  PairMatcherImpl(FirstMatcher first_matcher, SecondMatcher second_matcher)
+      : first_matcher_(
+            testing::SafeMatcherCast<const FirstType&>(first_matcher)),
+        second_matcher_(
+            testing::SafeMatcherCast<const SecondType&>(second_matcher)) {
+  }
+
+  // Describes what this matcher does.
+  virtual void DescribeTo(::std::ostream* os) const {
+    *os << "has a first field that ";
+    first_matcher_.DescribeTo(os);
+    *os << ", and has a second field that ";
+    second_matcher_.DescribeTo(os);
+  }
+
+  // Describes what the negation of this matcher does.
+  virtual void DescribeNegationTo(::std::ostream* os) const {
+    *os << "has a first field that ";
+    first_matcher_.DescribeNegationTo(os);
+    *os << ", or has a second field that ";
+    second_matcher_.DescribeNegationTo(os);
+  }
+
+  // Returns true iff 'a_pair.first' matches first_matcher and 'a_pair.second'
+  // matches second_matcher.
+  virtual bool MatchAndExplain(PairType a_pair,
+                               MatchResultListener* listener) const {
+    if (!listener->IsInterested()) {
+      // If the listener is not interested, we don't need to construct the
+      // explanation.
+      return first_matcher_.Matches(a_pair.first) &&
+             second_matcher_.Matches(a_pair.second);
+    }
+    StringMatchResultListener first_inner_listener;
+    if (!first_matcher_.MatchAndExplain(a_pair.first,
+                                        &first_inner_listener)) {
+      *listener << "whose first field does not match";
+      PrintIfNotEmpty(first_inner_listener.str(), listener->stream());
+      return false;
+    }
+    StringMatchResultListener second_inner_listener;
+    if (!second_matcher_.MatchAndExplain(a_pair.second,
+                                         &second_inner_listener)) {
+      *listener << "whose second field does not match";
+      PrintIfNotEmpty(second_inner_listener.str(), listener->stream());
+      return false;
+    }
+    ExplainSuccess(first_inner_listener.str(), second_inner_listener.str(),
+                   listener);
+    return true;
+  }
+
+ private:
+  void ExplainSuccess(const internal::string& first_explanation,
+                      const internal::string& second_explanation,
+                      MatchResultListener* listener) const {
+    *listener << "whose both fields match";
+    if (first_explanation != "") {
+      *listener << ", where the first field is a value " << first_explanation;
+    }
+    if (second_explanation != "") {
+      *listener << ", ";
+      if (first_explanation != "") {
+        *listener << "and ";
+      } else {
+        *listener << "where ";
+      }
+      *listener << "the second field is a value " << second_explanation;
+    }
+  }
+
+  const Matcher<const FirstType&> first_matcher_;
+  const Matcher<const SecondType&> second_matcher_;
+
+  GTEST_DISALLOW_ASSIGN_(PairMatcherImpl);
+};
+
+// Implements polymorphic Pair(first_matcher, second_matcher).
+template <typename FirstMatcher, typename SecondMatcher>
+class PairMatcher {
+ public:
+  PairMatcher(FirstMatcher first_matcher, SecondMatcher second_matcher)
+      : first_matcher_(first_matcher), second_matcher_(second_matcher) {}
+
+  template <typename PairType>
+  operator Matcher<PairType> () const {
+    return MakeMatcher(
+        new PairMatcherImpl<PairType>(
+            first_matcher_, second_matcher_));
+  }
+
+ private:
+  const FirstMatcher first_matcher_;
+  const SecondMatcher second_matcher_;
+
+  GTEST_DISALLOW_ASSIGN_(PairMatcher);
+};
+
+// Implements ElementsAre() and ElementsAreArray().
+template <typename Container>
+class ElementsAreMatcherImpl : public MatcherInterface<Container> {
+ public:
+  typedef GTEST_REMOVE_REFERENCE_AND_CONST_(Container) RawContainer;
+  typedef internal::StlContainerView<RawContainer> View;
+  typedef typename View::type StlContainer;
+  typedef typename View::const_reference StlContainerReference;
+  typedef typename StlContainer::value_type Element;
+
+  // Constructs the matcher from a sequence of element values or
+  // element matchers.
+  template <typename InputIter>
+  ElementsAreMatcherImpl(InputIter first, size_t a_count) {
+    matchers_.reserve(a_count);
+    InputIter it = first;
+    for (size_t i = 0; i != a_count; ++i, ++it) {
+      matchers_.push_back(MatcherCast<const Element&>(*it));
+    }
+  }
+
+  // Describes what this matcher does.
+  virtual void DescribeTo(::std::ostream* os) const {
+    if (count() == 0) {
+      *os << "is empty";
+    } else if (count() == 1) {
+      *os << "has 1 element that ";
+      matchers_[0].DescribeTo(os);
+    } else {
+      *os << "has " << Elements(count()) << " where\n";
+      for (size_t i = 0; i != count(); ++i) {
+        *os << "element #" << i << " ";
+        matchers_[i].DescribeTo(os);
+        if (i + 1 < count()) {
+          *os << ",\n";
+        }
+      }
+    }
+  }
+
+  // Describes what the negation of this matcher does.
+  virtual void DescribeNegationTo(::std::ostream* os) const {
+    if (count() == 0) {
+      *os << "isn't empty";
+      return;
+    }
+
+    *os << "doesn't have " << Elements(count()) << ", or\n";
+    for (size_t i = 0; i != count(); ++i) {
+      *os << "element #" << i << " ";
+      matchers_[i].DescribeNegationTo(os);
+      if (i + 1 < count()) {
+        *os << ", or\n";
+      }
+    }
+  }
+
+  virtual bool MatchAndExplain(Container container,
+                               MatchResultListener* listener) const {
+    StlContainerReference stl_container = View::ConstReference(container);
+    const size_t actual_count = stl_container.size();
+    if (actual_count != count()) {
+      // The element count doesn't match.  If the container is empty,
+      // there's no need to explain anything as Google Mock already
+      // prints the empty container.  Otherwise we just need to show
+      // how many elements there actually are.
+      if (actual_count != 0) {
+        *listener << "which has " << Elements(actual_count);
+      }
+      return false;
+    }
+
+    typename StlContainer::const_iterator it = stl_container.begin();
+    // explanations[i] is the explanation of the element at index i.
+    std::vector<internal::string> explanations(count());
+    for (size_t i = 0; i != count();  ++it, ++i) {
+      StringMatchResultListener s;
+      if (matchers_[i].MatchAndExplain(*it, &s)) {
+        explanations[i] = s.str();
+      } else {
+        // The container has the right size but the i-th element
+        // doesn't match its expectation.
+        *listener << "whose element #" << i << " doesn't match";
+        PrintIfNotEmpty(s.str(), listener->stream());
+        return false;
+      }
+    }
+
+    // Every element matches its expectation.  We need to explain why
+    // (the obvious ones can be skipped).
+    bool reason_printed = false;
+    for (size_t i = 0; i != count(); ++i) {
+      const internal::string& s = explanations[i];
+      if (!s.empty()) {
+        if (reason_printed) {
+          *listener << ",\nand ";
+        }
+        *listener << "whose element #" << i << " matches, " << s;
+        reason_printed = true;
+      }
+    }
+
+    return true;
+  }
+
+ private:
+  static Message Elements(size_t count) {
+    return Message() << count << (count == 1 ? " element" : " elements");
+  }
+
+  size_t count() const { return matchers_.size(); }
+  std::vector<Matcher<const Element&> > matchers_;
+
+  GTEST_DISALLOW_ASSIGN_(ElementsAreMatcherImpl);
+};
+
+// Implements ElementsAre() of 0 arguments.
+class ElementsAreMatcher0 {
+ public:
+  ElementsAreMatcher0() {}
+
+  template <typename Container>
+  operator Matcher<Container>() const {
+    typedef GTEST_REMOVE_REFERENCE_AND_CONST_(Container) RawContainer;
+    typedef typename internal::StlContainerView<RawContainer>::type::value_type
+        Element;
+
+    const Matcher<const Element&>* const matchers = NULL;
+    return MakeMatcher(new ElementsAreMatcherImpl<Container>(matchers, 0));
+  }
+};
+
+// Implements ElementsAreArray().
+template <typename T>
+class ElementsAreArrayMatcher {
+ public:
+  ElementsAreArrayMatcher(const T* first, size_t count) :
+      first_(first), count_(count) {}
+
+  template <typename Container>
+  operator Matcher<Container>() const {
+    typedef GTEST_REMOVE_REFERENCE_AND_CONST_(Container) RawContainer;
+    typedef typename internal::StlContainerView<RawContainer>::type::value_type
+        Element;
+
+    return MakeMatcher(new ElementsAreMatcherImpl<Container>(first_, count_));
+  }
+
+ private:
+  const T* const first_;
+  const size_t count_;
+
+  GTEST_DISALLOW_ASSIGN_(ElementsAreArrayMatcher);
+};
+
+// Returns the description for a matcher defined using the MATCHER*()
+// macro where the user-supplied description string is "", if
+// 'negation' is false; otherwise returns the description of the
+// negation of the matcher.  'param_values' contains a list of strings
+// that are the print-out of the matcher's parameters.
+GTEST_API_ string FormatMatcherDescription(bool negation,
+                                           const char* matcher_name,
+                                           const Strings& param_values);
+
+}  // namespace internal
+
+// _ is a matcher that matches anything of any type.
+//
+// This definition is fine as:
+//
+//   1. The C++ standard permits using the name _ in a namespace that
+//      is not the global namespace or ::std.
+//   2. The AnythingMatcher class has no data member or constructor,
+//      so it's OK to create global variables of this type.
+//   3. c-style has approved of using _ in this case.
+const internal::AnythingMatcher _ = {};
+// Creates a matcher that matches any value of the given type T.
+template <typename T>
+inline Matcher<T> A() { return MakeMatcher(new internal::AnyMatcherImpl<T>()); }
+
+// Creates a matcher that matches any value of the given type T.
+template <typename T>
+inline Matcher<T> An() { return A<T>(); }
+
+// Creates a polymorphic matcher that matches anything equal to x.
+// Note: if the parameter of Eq() were declared as const T&, Eq("foo")
+// wouldn't compile.
+template <typename T>
+inline internal::EqMatcher<T> Eq(T x) { return internal::EqMatcher<T>(x); }
+
+// Constructs a Matcher<T> from a 'value' of type T.  The constructed
+// matcher matches any value that's equal to 'value'.
+template <typename T>
+Matcher<T>::Matcher(T value) { *this = Eq(value); }
+
+// Creates a monomorphic matcher that matches anything with type Lhs
+// and equal to rhs.  A user may need to use this instead of Eq(...)
+// in order to resolve an overloading ambiguity.
+//
+// TypedEq<T>(x) is just a convenient short-hand for Matcher<T>(Eq(x))
+// or Matcher<T>(x), but more readable than the latter.
+//
+// We could define similar monomorphic matchers for other comparison
+// operations (e.g. TypedLt, TypedGe, and etc), but decided not to do
+// it yet as those are used much less than Eq() in practice.  A user
+// can always write Matcher<T>(Lt(5)) to be explicit about the type,
+// for example.
+template <typename Lhs, typename Rhs>
+inline Matcher<Lhs> TypedEq(const Rhs& rhs) { return Eq(rhs); }
+
+// Creates a polymorphic matcher that matches anything >= x.
+template <typename Rhs>
+inline internal::GeMatcher<Rhs> Ge(Rhs x) {
+  return internal::GeMatcher<Rhs>(x);
+}
+
+// Creates a polymorphic matcher that matches anything > x.
+template <typename Rhs>
+inline internal::GtMatcher<Rhs> Gt(Rhs x) {
+  return internal::GtMatcher<Rhs>(x);
+}
+
+// Creates a polymorphic matcher that matches anything <= x.
+template <typename Rhs>
+inline internal::LeMatcher<Rhs> Le(Rhs x) {
+  return internal::LeMatcher<Rhs>(x);
+}
+
+// Creates a polymorphic matcher that matches anything < x.
+template <typename Rhs>
+inline internal::LtMatcher<Rhs> Lt(Rhs x) {
+  return internal::LtMatcher<Rhs>(x);
+}
+
+// Creates a polymorphic matcher that matches anything != x.
+template <typename Rhs>
+inline internal::NeMatcher<Rhs> Ne(Rhs x) {
+  return internal::NeMatcher<Rhs>(x);
+}
+
+// Creates a polymorphic matcher that matches any NULL pointer.
+inline PolymorphicMatcher<internal::IsNullMatcher > IsNull() {
+  return MakePolymorphicMatcher(internal::IsNullMatcher());
+}
+
+// Creates a polymorphic matcher that matches any non-NULL pointer.
+// This is convenient as Not(NULL) doesn't compile (the compiler
+// thinks that that expression is comparing a pointer with an integer).
+inline PolymorphicMatcher<internal::NotNullMatcher > NotNull() {
+  return MakePolymorphicMatcher(internal::NotNullMatcher());
+}
+
+// Creates a polymorphic matcher that matches any argument that
+// references variable x.
+template <typename T>
+inline internal::RefMatcher<T&> Ref(T& x) {  // NOLINT
+  return internal::RefMatcher<T&>(x);
+}
+
+// Creates a matcher that matches any double argument approximately
+// equal to rhs, where two NANs are considered unequal.
+inline internal::FloatingEqMatcher<double> DoubleEq(double rhs) {
+  return internal::FloatingEqMatcher<double>(rhs, false);
+}
+
+// Creates a matcher that matches any double argument approximately
+// equal to rhs, including NaN values when rhs is NaN.
+inline internal::FloatingEqMatcher<double> NanSensitiveDoubleEq(double rhs) {
+  return internal::FloatingEqMatcher<double>(rhs, true);
+}
+
+// Creates a matcher that matches any float argument approximately
+// equal to rhs, where two NANs are considered unequal.
+inline internal::FloatingEqMatcher<float> FloatEq(float rhs) {
+  return internal::FloatingEqMatcher<float>(rhs, false);
+}
+
+// Creates a matcher that matches any double argument approximately
+// equal to rhs, including NaN values when rhs is NaN.
+inline internal::FloatingEqMatcher<float> NanSensitiveFloatEq(float rhs) {
+  return internal::FloatingEqMatcher<float>(rhs, true);
+}
+
+// Creates a matcher that matches a pointer (raw or smart) that points
+// to a value that matches inner_matcher.
+template <typename InnerMatcher>
+inline internal::PointeeMatcher<InnerMatcher> Pointee(
+    const InnerMatcher& inner_matcher) {
+  return internal::PointeeMatcher<InnerMatcher>(inner_matcher);
+}
+
+// Creates a matcher that matches an object whose given field matches
+// 'matcher'.  For example,
+//   Field(&Foo::number, Ge(5))
+// matches a Foo object x iff x.number >= 5.
+template <typename Class, typename FieldType, typename FieldMatcher>
+inline PolymorphicMatcher<
+  internal::FieldMatcher<Class, FieldType> > Field(
+    FieldType Class::*field, const FieldMatcher& matcher) {
+  return MakePolymorphicMatcher(
+      internal::FieldMatcher<Class, FieldType>(
+          field, MatcherCast<const FieldType&>(matcher)));
+  // The call to MatcherCast() is required for supporting inner
+  // matchers of compatible types.  For example, it allows
+  //   Field(&Foo::bar, m)
+  // to compile where bar is an int32 and m is a matcher for int64.
+}
+
+// Creates a matcher that matches an object whose given property
+// matches 'matcher'.  For example,
+//   Property(&Foo::str, StartsWith("hi"))
+// matches a Foo object x iff x.str() starts with "hi".
+template <typename Class, typename PropertyType, typename PropertyMatcher>
+inline PolymorphicMatcher<
+  internal::PropertyMatcher<Class, PropertyType> > Property(
+    PropertyType (Class::*property)() const, const PropertyMatcher& matcher) {
+  return MakePolymorphicMatcher(
+      internal::PropertyMatcher<Class, PropertyType>(
+          property,
+          MatcherCast<GTEST_REFERENCE_TO_CONST_(PropertyType)>(matcher)));
+  // The call to MatcherCast() is required for supporting inner
+  // matchers of compatible types.  For example, it allows
+  //   Property(&Foo::bar, m)
+  // to compile where bar() returns an int32 and m is a matcher for int64.
+}
+
+// Creates a matcher that matches an object iff the result of applying
+// a callable to x matches 'matcher'.
+// For example,
+//   ResultOf(f, StartsWith("hi"))
+// matches a Foo object x iff f(x) starts with "hi".
+// callable parameter can be a function, function pointer, or a functor.
+// Callable has to satisfy the following conditions:
+//   * It is required to keep no state affecting the results of
+//     the calls on it and make no assumptions about how many calls
+//     will be made. Any state it keeps must be protected from the
+//     concurrent access.
+//   * If it is a function object, it has to define type result_type.
+//     We recommend deriving your functor classes from std::unary_function.
+template <typename Callable, typename ResultOfMatcher>
+internal::ResultOfMatcher<Callable> ResultOf(
+    Callable callable, const ResultOfMatcher& matcher) {
+  return internal::ResultOfMatcher<Callable>(
+          callable,
+          MatcherCast<typename internal::CallableTraits<Callable>::ResultType>(
+              matcher));
+  // The call to MatcherCast() is required for supporting inner
+  // matchers of compatible types.  For example, it allows
+  //   ResultOf(Function, m)
+  // to compile where Function() returns an int32 and m is a matcher for int64.
+}
+
+// String matchers.
+
+// Matches a string equal to str.
+inline PolymorphicMatcher<internal::StrEqualityMatcher<internal::string> >
+    StrEq(const internal::string& str) {
+  return MakePolymorphicMatcher(internal::StrEqualityMatcher<internal::string>(
+      str, true, true));
+}
+
+// Matches a string not equal to str.
+inline PolymorphicMatcher<internal::StrEqualityMatcher<internal::string> >
+    StrNe(const internal::string& str) {
+  return MakePolymorphicMatcher(internal::StrEqualityMatcher<internal::string>(
+      str, false, true));
+}
+
+// Matches a string equal to str, ignoring case.
+inline PolymorphicMatcher<internal::StrEqualityMatcher<internal::string> >
+    StrCaseEq(const internal::string& str) {
+  return MakePolymorphicMatcher(internal::StrEqualityMatcher<internal::string>(
+      str, true, false));
+}
+
+// Matches a string not equal to str, ignoring case.
+inline PolymorphicMatcher<internal::StrEqualityMatcher<internal::string> >
+    StrCaseNe(const internal::string& str) {
+  return MakePolymorphicMatcher(internal::StrEqualityMatcher<internal::string>(
+      str, false, false));
+}
+
+// Creates a matcher that matches any string, std::string, or C string
+// that contains the given substring.
+inline PolymorphicMatcher<internal::HasSubstrMatcher<internal::string> >
+    HasSubstr(const internal::string& substring) {
+  return MakePolymorphicMatcher(internal::HasSubstrMatcher<internal::string>(
+      substring));
+}
+
+// Matches a string that starts with 'prefix' (case-sensitive).
+inline PolymorphicMatcher<internal::StartsWithMatcher<internal::string> >
+    StartsWith(const internal::string& prefix) {
+  return MakePolymorphicMatcher(internal::StartsWithMatcher<internal::string>(
+      prefix));
+}
+
+// Matches a string that ends with 'suffix' (case-sensitive).
+inline PolymorphicMatcher<internal::EndsWithMatcher<internal::string> >
+    EndsWith(const internal::string& suffix) {
+  return MakePolymorphicMatcher(internal::EndsWithMatcher<internal::string>(
+      suffix));
+}
+
+// Matches a string that fully matches regular expression 'regex'.
+// The matcher takes ownership of 'regex'.
+inline PolymorphicMatcher<internal::MatchesRegexMatcher> MatchesRegex(
+    const internal::RE* regex) {
+  return MakePolymorphicMatcher(internal::MatchesRegexMatcher(regex, true));
+}
+inline PolymorphicMatcher<internal::MatchesRegexMatcher> MatchesRegex(
+    const internal::string& regex) {
+  return MatchesRegex(new internal::RE(regex));
+}
+
+// Matches a string that contains regular expression 'regex'.
+// The matcher takes ownership of 'regex'.
+inline PolymorphicMatcher<internal::MatchesRegexMatcher> ContainsRegex(
+    const internal::RE* regex) {
+  return MakePolymorphicMatcher(internal::MatchesRegexMatcher(regex, false));
+}
+inline PolymorphicMatcher<internal::MatchesRegexMatcher> ContainsRegex(
+    const internal::string& regex) {
+  return ContainsRegex(new internal::RE(regex));
+}
+
+#if GTEST_HAS_GLOBAL_WSTRING || GTEST_HAS_STD_WSTRING
+// Wide string matchers.
+
+// Matches a string equal to str.
+inline PolymorphicMatcher<internal::StrEqualityMatcher<internal::wstring> >
+    StrEq(const internal::wstring& str) {
+  return MakePolymorphicMatcher(internal::StrEqualityMatcher<internal::wstring>(
+      str, true, true));
+}
+
+// Matches a string not equal to str.
+inline PolymorphicMatcher<internal::StrEqualityMatcher<internal::wstring> >
+    StrNe(const internal::wstring& str) {
+  return MakePolymorphicMatcher(internal::StrEqualityMatcher<internal::wstring>(
+      str, false, true));
+}
+
+// Matches a string equal to str, ignoring case.
+inline PolymorphicMatcher<internal::StrEqualityMatcher<internal::wstring> >
+    StrCaseEq(const internal::wstring& str) {
+  return MakePolymorphicMatcher(internal::StrEqualityMatcher<internal::wstring>(
+      str, true, false));
+}
+
+// Matches a string not equal to str, ignoring case.
+inline PolymorphicMatcher<internal::StrEqualityMatcher<internal::wstring> >
+    StrCaseNe(const internal::wstring& str) {
+  return MakePolymorphicMatcher(internal::StrEqualityMatcher<internal::wstring>(
+      str, false, false));
+}
+
+// Creates a matcher that matches any wstring, std::wstring, or C wide string
+// that contains the given substring.
+inline PolymorphicMatcher<internal::HasSubstrMatcher<internal::wstring> >
+    HasSubstr(const internal::wstring& substring) {
+  return MakePolymorphicMatcher(internal::HasSubstrMatcher<internal::wstring>(
+      substring));
+}
+
+// Matches a string that starts with 'prefix' (case-sensitive).
+inline PolymorphicMatcher<internal::StartsWithMatcher<internal::wstring> >
+    StartsWith(const internal::wstring& prefix) {
+  return MakePolymorphicMatcher(internal::StartsWithMatcher<internal::wstring>(
+      prefix));
+}
+
+// Matches a string that ends with 'suffix' (case-sensitive).
+inline PolymorphicMatcher<internal::EndsWithMatcher<internal::wstring> >
+    EndsWith(const internal::wstring& suffix) {
+  return MakePolymorphicMatcher(internal::EndsWithMatcher<internal::wstring>(
+      suffix));
+}
+
+#endif  // GTEST_HAS_GLOBAL_WSTRING || GTEST_HAS_STD_WSTRING
+
+// Creates a polymorphic matcher that matches a 2-tuple where the
+// first field == the second field.
+inline internal::Eq2Matcher Eq() { return internal::Eq2Matcher(); }
+
+// Creates a polymorphic matcher that matches a 2-tuple where the
+// first field >= the second field.
+inline internal::Ge2Matcher Ge() { return internal::Ge2Matcher(); }
+
+// Creates a polymorphic matcher that matches a 2-tuple where the
+// first field > the second field.
+inline internal::Gt2Matcher Gt() { return internal::Gt2Matcher(); }
+
+// Creates a polymorphic matcher that matches a 2-tuple where the
+// first field <= the second field.
+inline internal::Le2Matcher Le() { return internal::Le2Matcher(); }
+
+// Creates a polymorphic matcher that matches a 2-tuple where the
+// first field < the second field.
+inline internal::Lt2Matcher Lt() { return internal::Lt2Matcher(); }
+
+// Creates a polymorphic matcher that matches a 2-tuple where the
+// first field != the second field.
+inline internal::Ne2Matcher Ne() { return internal::Ne2Matcher(); }
+
+// Creates a matcher that matches any value of type T that m doesn't
+// match.
+template <typename InnerMatcher>
+inline internal::NotMatcher<InnerMatcher> Not(InnerMatcher m) {
+  return internal::NotMatcher<InnerMatcher>(m);
+}
+
+// Returns a matcher that matches anything that satisfies the given
+// predicate.  The predicate can be any unary function or functor
+// whose return type can be implicitly converted to bool.
+template <typename Predicate>
+inline PolymorphicMatcher<internal::TrulyMatcher<Predicate> >
+Truly(Predicate pred) {
+  return MakePolymorphicMatcher(internal::TrulyMatcher<Predicate>(pred));
+}
+
+// Returns a matcher that matches an equal container.
+// This matcher behaves like Eq(), but in the event of mismatch lists the
+// values that are included in one container but not the other. (Duplicate
+// values and order differences are not explained.)
+template <typename Container>
+inline PolymorphicMatcher<internal::ContainerEqMatcher<  // NOLINT
+                            GTEST_REMOVE_CONST_(Container)> >
+    ContainerEq(const Container& rhs) {
+  // This following line is for working around a bug in MSVC 8.0,
+  // which causes Container to be a const type sometimes.
+  typedef GTEST_REMOVE_CONST_(Container) RawContainer;
+  return MakePolymorphicMatcher(
+      internal::ContainerEqMatcher<RawContainer>(rhs));
+}
+
+// Returns a matcher that matches a container that, when sorted using
+// the given comparator, matches container_matcher.
+template <typename Comparator, typename ContainerMatcher>
+inline internal::WhenSortedByMatcher<Comparator, ContainerMatcher>
+WhenSortedBy(const Comparator& comparator,
+             const ContainerMatcher& container_matcher) {
+  return internal::WhenSortedByMatcher<Comparator, ContainerMatcher>(
+      comparator, container_matcher);
+}
+
+// Returns a matcher that matches a container that, when sorted using
+// the < operator, matches container_matcher.
+template <typename ContainerMatcher>
+inline internal::WhenSortedByMatcher<internal::LessComparator, ContainerMatcher>
+WhenSorted(const ContainerMatcher& container_matcher) {
+  return
+      internal::WhenSortedByMatcher<internal::LessComparator, ContainerMatcher>(
+          internal::LessComparator(), container_matcher);
+}
+
+// Matches an STL-style container or a native array that contains the
+// same number of elements as in rhs, where its i-th element and rhs's
+// i-th element (as a pair) satisfy the given pair matcher, for all i.
+// TupleMatcher must be able to be safely cast to Matcher<tuple<const
+// T1&, const T2&> >, where T1 and T2 are the types of elements in the
+// LHS container and the RHS container respectively.
+template <typename TupleMatcher, typename Container>
+inline internal::PointwiseMatcher<TupleMatcher,
+                                  GTEST_REMOVE_CONST_(Container)>
+Pointwise(const TupleMatcher& tuple_matcher, const Container& rhs) {
+  // This following line is for working around a bug in MSVC 8.0,
+  // which causes Container to be a const type sometimes.
+  typedef GTEST_REMOVE_CONST_(Container) RawContainer;
+  return internal::PointwiseMatcher<TupleMatcher, RawContainer>(
+      tuple_matcher, rhs);
+}
+
+// Matches an STL-style container or a native array that contains at
+// least one element matching the given value or matcher.
+//
+// Examples:
+//   ::std::set<int> page_ids;
+//   page_ids.insert(3);
+//   page_ids.insert(1);
+//   EXPECT_THAT(page_ids, Contains(1));
+//   EXPECT_THAT(page_ids, Contains(Gt(2)));
+//   EXPECT_THAT(page_ids, Not(Contains(4)));
+//
+//   ::std::map<int, size_t> page_lengths;
+//   page_lengths[1] = 100;
+//   EXPECT_THAT(page_lengths,
+//               Contains(::std::pair<const int, size_t>(1, 100)));
+//
+//   const char* user_ids[] = { "joe", "mike", "tom" };
+//   EXPECT_THAT(user_ids, Contains(Eq(::std::string("tom"))));
+template <typename M>
+inline internal::ContainsMatcher<M> Contains(M matcher) {
+  return internal::ContainsMatcher<M>(matcher);
+}
+
+// Matches an STL-style container or a native array that contains only
+// elements matching the given value or matcher.
+//
+// Each(m) is semantically equivalent to Not(Contains(Not(m))). Only
+// the messages are different.
+//
+// Examples:
+//   ::std::set<int> page_ids;
+//   // Each(m) matches an empty container, regardless of what m is.
+//   EXPECT_THAT(page_ids, Each(Eq(1)));
+//   EXPECT_THAT(page_ids, Each(Eq(77)));
+//
+//   page_ids.insert(3);
+//   EXPECT_THAT(page_ids, Each(Gt(0)));
+//   EXPECT_THAT(page_ids, Not(Each(Gt(4))));
+//   page_ids.insert(1);
+//   EXPECT_THAT(page_ids, Not(Each(Lt(2))));
+//
+//   ::std::map<int, size_t> page_lengths;
+//   page_lengths[1] = 100;
+//   page_lengths[2] = 200;
+//   page_lengths[3] = 300;
+//   EXPECT_THAT(page_lengths, Not(Each(Pair(1, 100))));
+//   EXPECT_THAT(page_lengths, Each(Key(Le(3))));
+//
+//   const char* user_ids[] = { "joe", "mike", "tom" };
+//   EXPECT_THAT(user_ids, Not(Each(Eq(::std::string("tom")))));
+template <typename M>
+inline internal::EachMatcher<M> Each(M matcher) {
+  return internal::EachMatcher<M>(matcher);
+}
+
+// Key(inner_matcher) matches an std::pair whose 'first' field matches
+// inner_matcher.  For example, Contains(Key(Ge(5))) can be used to match an
+// std::map that contains at least one element whose key is >= 5.
+template <typename M>
+inline internal::KeyMatcher<M> Key(M inner_matcher) {
+  return internal::KeyMatcher<M>(inner_matcher);
+}
+
+// Pair(first_matcher, second_matcher) matches a std::pair whose 'first' field
+// matches first_matcher and whose 'second' field matches second_matcher.  For
+// example, EXPECT_THAT(map_type, ElementsAre(Pair(Ge(5), "foo"))) can be used
+// to match a std::map<int, string> that contains exactly one element whose key
+// is >= 5 and whose value equals "foo".
+template <typename FirstMatcher, typename SecondMatcher>
+inline internal::PairMatcher<FirstMatcher, SecondMatcher>
+Pair(FirstMatcher first_matcher, SecondMatcher second_matcher) {
+  return internal::PairMatcher<FirstMatcher, SecondMatcher>(
+      first_matcher, second_matcher);
+}
+
+// Returns a predicate that is satisfied by anything that matches the
+// given matcher.
+template <typename M>
+inline internal::MatcherAsPredicate<M> Matches(M matcher) {
+  return internal::MatcherAsPredicate<M>(matcher);
+}
+
+// Returns true iff the value matches the matcher.
+template <typename T, typename M>
+inline bool Value(const T& value, M matcher) {
+  return testing::Matches(matcher)(value);
+}
+
+// Matches the value against the given matcher and explains the match
+// result to listener.
+template <typename T, typename M>
+inline bool ExplainMatchResult(
+    M matcher, const T& value, MatchResultListener* listener) {
+  return SafeMatcherCast<const T&>(matcher).MatchAndExplain(value, listener);
+}
+
+// AllArgs(m) is a synonym of m.  This is useful in
+//
+//   EXPECT_CALL(foo, Bar(_, _)).With(AllArgs(Eq()));
+//
+// which is easier to read than
+//
+//   EXPECT_CALL(foo, Bar(_, _)).With(Eq());
+template <typename InnerMatcher>
+inline InnerMatcher AllArgs(const InnerMatcher& matcher) { return matcher; }
+
+// These macros allow using matchers to check values in Google Test
+// tests.  ASSERT_THAT(value, matcher) and EXPECT_THAT(value, matcher)
+// succeed iff the value matches the matcher.  If the assertion fails,
+// the value and the description of the matcher will be printed.
+#define ASSERT_THAT(value, matcher) ASSERT_PRED_FORMAT1(\
+    ::testing::internal::MakePredicateFormatterFromMatcher(matcher), value)
+#define EXPECT_THAT(value, matcher) EXPECT_PRED_FORMAT1(\
+    ::testing::internal::MakePredicateFormatterFromMatcher(matcher), value)
+
+}  // namespace testing
+
+#endif  // GMOCK_INCLUDE_GMOCK_GMOCK_MATCHERS_H_
diff --git a/google-breakpad/src/testing/include/gmock/gmock-more-actions.h b/google-breakpad/src/testing/include/gmock/gmock-more-actions.h
new file mode 100644
index 0000000..fc5e5ca
--- /dev/null
+++ b/google-breakpad/src/testing/include/gmock/gmock-more-actions.h
@@ -0,0 +1,233 @@
+// Copyright 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Google Mock - a framework for writing C++ mock classes.
+//
+// This file implements some actions that depend on gmock-generated-actions.h.
+
+#ifndef GMOCK_INCLUDE_GMOCK_GMOCK_MORE_ACTIONS_H_
+#define GMOCK_INCLUDE_GMOCK_GMOCK_MORE_ACTIONS_H_
+
+#include <algorithm>
+
+#include "gmock/gmock-generated-actions.h"
+
+namespace testing {
+namespace internal {
+
+// Implements the Invoke(f) action.  The template argument
+// FunctionImpl is the implementation type of f, which can be either a
+// function pointer or a functor.  Invoke(f) can be used as an
+// Action<F> as long as f's type is compatible with F (i.e. f can be
+// assigned to a tr1::function<F>).
+template <typename FunctionImpl>
+class InvokeAction {
+ public:
+  // The c'tor makes a copy of function_impl (either a function
+  // pointer or a functor).
+  explicit InvokeAction(FunctionImpl function_impl)
+      : function_impl_(function_impl) {}
+
+  template <typename Result, typename ArgumentTuple>
+  Result Perform(const ArgumentTuple& args) {
+    return InvokeHelper<Result, ArgumentTuple>::Invoke(function_impl_, args);
+  }
+
+ private:
+  FunctionImpl function_impl_;
+
+  GTEST_DISALLOW_ASSIGN_(InvokeAction);
+};
+
+// Implements the Invoke(object_ptr, &Class::Method) action.
+template <class Class, typename MethodPtr>
+class InvokeMethodAction {
+ public:
+  InvokeMethodAction(Class* obj_ptr, MethodPtr method_ptr)
+      : obj_ptr_(obj_ptr), method_ptr_(method_ptr) {}
+
+  template <typename Result, typename ArgumentTuple>
+  Result Perform(const ArgumentTuple& args) const {
+    return InvokeHelper<Result, ArgumentTuple>::InvokeMethod(
+        obj_ptr_, method_ptr_, args);
+  }
+
+ private:
+  Class* const obj_ptr_;
+  const MethodPtr method_ptr_;
+
+  GTEST_DISALLOW_ASSIGN_(InvokeMethodAction);
+};
+
+}  // namespace internal
+
+// Various overloads for Invoke().
+
+// Creates an action that invokes 'function_impl' with the mock
+// function's arguments.
+template <typename FunctionImpl>
+PolymorphicAction<internal::InvokeAction<FunctionImpl> > Invoke(
+    FunctionImpl function_impl) {
+  return MakePolymorphicAction(
+      internal::InvokeAction<FunctionImpl>(function_impl));
+}
+
+// Creates an action that invokes the given method on the given object
+// with the mock function's arguments.
+template <class Class, typename MethodPtr>
+PolymorphicAction<internal::InvokeMethodAction<Class, MethodPtr> > Invoke(
+    Class* obj_ptr, MethodPtr method_ptr) {
+  return MakePolymorphicAction(
+      internal::InvokeMethodAction<Class, MethodPtr>(obj_ptr, method_ptr));
+}
+
+// WithoutArgs(inner_action) can be used in a mock function with a
+// non-empty argument list to perform inner_action, which takes no
+// argument.  In other words, it adapts an action accepting no
+// argument to one that accepts (and ignores) arguments.
+template <typename InnerAction>
+inline internal::WithArgsAction<InnerAction>
+WithoutArgs(const InnerAction& action) {
+  return internal::WithArgsAction<InnerAction>(action);
+}
+
+// WithArg<k>(an_action) creates an action that passes the k-th
+// (0-based) argument of the mock function to an_action and performs
+// it.  It adapts an action accepting one argument to one that accepts
+// multiple arguments.  For convenience, we also provide
+// WithArgs<k>(an_action) (defined below) as a synonym.
+template <int k, typename InnerAction>
+inline internal::WithArgsAction<InnerAction, k>
+WithArg(const InnerAction& action) {
+  return internal::WithArgsAction<InnerAction, k>(action);
+}
+
+// The ACTION*() macros trigger warning C4100 (unreferenced formal
+// parameter) in MSVC with -W4.  Unfortunately they cannot be fixed in
+// the macro definition, as the warnings are generated when the macro
+// is expanded and macro expansion cannot contain #pragma.  Therefore
+// we suppress them here.
+#ifdef _MSC_VER
+# pragma warning(push)
+# pragma warning(disable:4100)
+#endif
+
+// Action ReturnArg<k>() returns the k-th argument of the mock function.
+ACTION_TEMPLATE(ReturnArg,
+                HAS_1_TEMPLATE_PARAMS(int, k),
+                AND_0_VALUE_PARAMS()) {
+  return std::tr1::get<k>(args);
+}
+
+// Action SaveArg<k>(pointer) saves the k-th (0-based) argument of the
+// mock function to *pointer.
+ACTION_TEMPLATE(SaveArg,
+                HAS_1_TEMPLATE_PARAMS(int, k),
+                AND_1_VALUE_PARAMS(pointer)) {
+  *pointer = ::std::tr1::get<k>(args);
+}
+
+// Action SaveArgPointee<k>(pointer) saves the value pointed to
+// by the k-th (0-based) argument of the mock function to *pointer.
+ACTION_TEMPLATE(SaveArgPointee,
+                HAS_1_TEMPLATE_PARAMS(int, k),
+                AND_1_VALUE_PARAMS(pointer)) {
+  *pointer = *::std::tr1::get<k>(args);
+}
+
+// Action SetArgReferee<k>(value) assigns 'value' to the variable
+// referenced by the k-th (0-based) argument of the mock function.
+ACTION_TEMPLATE(SetArgReferee,
+                HAS_1_TEMPLATE_PARAMS(int, k),
+                AND_1_VALUE_PARAMS(value)) {
+  typedef typename ::std::tr1::tuple_element<k, args_type>::type argk_type;
+  // Ensures that argument #k is a reference.  If you get a compiler
+  // error on the next line, you are using SetArgReferee<k>(value) in
+  // a mock function whose k-th (0-based) argument is not a reference.
+  GTEST_COMPILE_ASSERT_(internal::is_reference<argk_type>::value,
+                        SetArgReferee_must_be_used_with_a_reference_argument);
+  ::std::tr1::get<k>(args) = value;
+}
+
+// Action SetArrayArgument<k>(first, last) copies the elements in
+// source range [first, last) to the array pointed to by the k-th
+// (0-based) argument, which can be either a pointer or an
+// iterator. The action does not take ownership of the elements in the
+// source range.
+ACTION_TEMPLATE(SetArrayArgument,
+                HAS_1_TEMPLATE_PARAMS(int, k),
+                AND_2_VALUE_PARAMS(first, last)) {
+  // Microsoft compiler deprecates ::std::copy, so we want to suppress warning
+  // 4996 (Function call with parameters that may be unsafe) there.
+#ifdef _MSC_VER
+# pragma warning(push)          // Saves the current warning state.
+# pragma warning(disable:4996)  // Temporarily disables warning 4996.
+#endif
+  ::std::copy(first, last, ::std::tr1::get<k>(args));
+#ifdef _MSC_VER
+# pragma warning(pop)           // Restores the warning state.
+#endif
+}
+
+// Action DeleteArg<k>() deletes the k-th (0-based) argument of the mock
+// function.
+ACTION_TEMPLATE(DeleteArg,
+                HAS_1_TEMPLATE_PARAMS(int, k),
+                AND_0_VALUE_PARAMS()) {
+  delete ::std::tr1::get<k>(args);
+}
+
+// This action returns the value pointed to by 'pointer'.
+ACTION_P(ReturnPointee, pointer) { return *pointer; }
+
+// Action Throw(exception) can be used in a mock function of any type
+// to throw the given exception.  Any copyable value can be thrown.
+#if GTEST_HAS_EXCEPTIONS
+
+// Suppresses the 'unreachable code' warning that VC generates in opt modes.
+# ifdef _MSC_VER
+#  pragma warning(push)          // Saves the current warning state.
+#  pragma warning(disable:4702)  // Temporarily disables warning 4702.
+# endif
+ACTION_P(Throw, exception) { throw exception; }
+# ifdef _MSC_VER
+#  pragma warning(pop)           // Restores the warning state.
+# endif
+
+#endif  // GTEST_HAS_EXCEPTIONS
+
+#ifdef _MSC_VER
+# pragma warning(pop)
+#endif
+
+}  // namespace testing
+
+#endif  // GMOCK_INCLUDE_GMOCK_GMOCK_MORE_ACTIONS_H_
diff --git a/google-breakpad/src/testing/include/gmock/gmock-spec-builders.h b/google-breakpad/src/testing/include/gmock/gmock-spec-builders.h
new file mode 100644
index 0000000..c677333
--- /dev/null
+++ b/google-breakpad/src/testing/include/gmock/gmock-spec-builders.h
@@ -0,0 +1,1774 @@
+// Copyright 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Google Mock - a framework for writing C++ mock classes.
+//
+// This file implements the ON_CALL() and EXPECT_CALL() macros.
+//
+// A user can use the ON_CALL() macro to specify the default action of
+// a mock method.  The syntax is:
+//
+//   ON_CALL(mock_object, Method(argument-matchers))
+//       .With(multi-argument-matcher)
+//       .WillByDefault(action);
+//
+//  where the .With() clause is optional.
+//
+// A user can use the EXPECT_CALL() macro to specify an expectation on
+// a mock method.  The syntax is:
+//
+//   EXPECT_CALL(mock_object, Method(argument-matchers))
+//       .With(multi-argument-matchers)
+//       .Times(cardinality)
+//       .InSequence(sequences)
+//       .After(expectations)
+//       .WillOnce(action)
+//       .WillRepeatedly(action)
+//       .RetiresOnSaturation();
+//
+// where all clauses are optional, and .InSequence()/.After()/
+// .WillOnce() can appear any number of times.
+
+#ifndef GMOCK_INCLUDE_GMOCK_GMOCK_SPEC_BUILDERS_H_
+#define GMOCK_INCLUDE_GMOCK_GMOCK_SPEC_BUILDERS_H_
+
+#include <map>
+#include <set>
+#include <sstream>
+#include <string>
+#include <vector>
+
+#include "gmock/gmock-actions.h"
+#include "gmock/gmock-cardinalities.h"
+#include "gmock/gmock-matchers.h"
+#include "gmock/internal/gmock-internal-utils.h"
+#include "gmock/internal/gmock-port.h"
+#include "gtest/gtest.h"
+
+namespace testing {
+
+// An abstract handle of an expectation.
+class Expectation;
+
+// A set of expectation handles.
+class ExpectationSet;
+
+// Anything inside the 'internal' namespace IS INTERNAL IMPLEMENTATION
+// and MUST NOT BE USED IN USER CODE!!!
+namespace internal {
+
+// Implements a mock function.
+template <typename F> class FunctionMocker;
+
+// Base class for expectations.
+class ExpectationBase;
+
+// Implements an expectation.
+template <typename F> class TypedExpectation;
+
+// Helper class for testing the Expectation class template.
+class ExpectationTester;
+
+// Base class for function mockers.
+template <typename F> class FunctionMockerBase;
+
+// Protects the mock object registry (in class Mock), all function
+// mockers, and all expectations.
+//
+// The reason we don't use more fine-grained protection is: when a
+// mock function Foo() is called, it needs to consult its expectations
+// to see which one should be picked.  If another thread is allowed to
+// call a mock function (either Foo() or a different one) at the same
+// time, it could affect the "retired" attributes of Foo()'s
+// expectations when InSequence() is used, and thus affect which
+// expectation gets picked.  Therefore, we sequence all mock function
+// calls to ensure the integrity of the mock objects' states.
+GTEST_API_ GTEST_DECLARE_STATIC_MUTEX_(g_gmock_mutex);
+
+// Untyped base class for ActionResultHolder<R>.
+class UntypedActionResultHolderBase;
+
+// Abstract base class of FunctionMockerBase.  This is the
+// type-agnostic part of the function mocker interface.  Its pure
+// virtual methods are implemented by FunctionMockerBase.
+class GTEST_API_ UntypedFunctionMockerBase {
+ public:
+  UntypedFunctionMockerBase();
+  virtual ~UntypedFunctionMockerBase();
+
+  // Verifies that all expectations on this mock function have been
+  // satisfied.  Reports one or more Google Test non-fatal failures
+  // and returns false if not.
+  bool VerifyAndClearExpectationsLocked()
+      GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex);
+
+  // Clears the ON_CALL()s set on this mock function.
+  virtual void ClearDefaultActionsLocked()
+      GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) = 0;
+
+  // In all of the following Untyped* functions, it's the caller's
+  // responsibility to guarantee the correctness of the arguments'
+  // types.
+
+  // Performs the default action with the given arguments and returns
+  // the action's result.  The call description string will be used in
+  // the error message to describe the call in the case the default
+  // action fails.
+  // L = *
+  virtual UntypedActionResultHolderBase* UntypedPerformDefaultAction(
+      const void* untyped_args,
+      const string& call_description) const = 0;
+
+  // Performs the given action with the given arguments and returns
+  // the action's result.
+  // L = *
+  virtual UntypedActionResultHolderBase* UntypedPerformAction(
+      const void* untyped_action,
+      const void* untyped_args) const = 0;
+
+  // Writes a message that the call is uninteresting (i.e. neither
+  // explicitly expected nor explicitly unexpected) to the given
+  // ostream.
+  virtual void UntypedDescribeUninterestingCall(
+      const void* untyped_args,
+      ::std::ostream* os) const
+          GTEST_LOCK_EXCLUDED_(g_gmock_mutex) = 0;
+
+  // Returns the expectation that matches the given function arguments
+  // (or NULL is there's no match); when a match is found,
+  // untyped_action is set to point to the action that should be
+  // performed (or NULL if the action is "do default"), and
+  // is_excessive is modified to indicate whether the call exceeds the
+  // expected number.
+  virtual const ExpectationBase* UntypedFindMatchingExpectation(
+      const void* untyped_args,
+      const void** untyped_action, bool* is_excessive,
+      ::std::ostream* what, ::std::ostream* why)
+          GTEST_LOCK_EXCLUDED_(g_gmock_mutex) = 0;
+
+  // Prints the given function arguments to the ostream.
+  virtual void UntypedPrintArgs(const void* untyped_args,
+                                ::std::ostream* os) const = 0;
+
+  // Sets the mock object this mock method belongs to, and registers
+  // this information in the global mock registry.  Will be called
+  // whenever an EXPECT_CALL() or ON_CALL() is executed on this mock
+  // method.
+  // TODO(wan@google.com): rename to SetAndRegisterOwner().
+  void RegisterOwner(const void* mock_obj)
+      GTEST_LOCK_EXCLUDED_(g_gmock_mutex);
+
+  // Sets the mock object this mock method belongs to, and sets the
+  // name of the mock function.  Will be called upon each invocation
+  // of this mock function.
+  void SetOwnerAndName(const void* mock_obj, const char* name)
+      GTEST_LOCK_EXCLUDED_(g_gmock_mutex);
+
+  // Returns the mock object this mock method belongs to.  Must be
+  // called after RegisterOwner() or SetOwnerAndName() has been
+  // called.
+  const void* MockObject() const
+      GTEST_LOCK_EXCLUDED_(g_gmock_mutex);
+
+  // Returns the name of this mock method.  Must be called after
+  // SetOwnerAndName() has been called.
+  const char* Name() const
+      GTEST_LOCK_EXCLUDED_(g_gmock_mutex);
+
+  // Returns the result of invoking this mock function with the given
+  // arguments.  This function can be safely called from multiple
+  // threads concurrently.  The caller is responsible for deleting the
+  // result.
+  const UntypedActionResultHolderBase* UntypedInvokeWith(
+      const void* untyped_args)
+          GTEST_LOCK_EXCLUDED_(g_gmock_mutex);
+
+ protected:
+  typedef std::vector<const void*> UntypedOnCallSpecs;
+
+  typedef std::vector<internal::linked_ptr<ExpectationBase> >
+  UntypedExpectations;
+
+  // Returns an Expectation object that references and co-owns exp,
+  // which must be an expectation on this mock function.
+  Expectation GetHandleOf(ExpectationBase* exp);
+
+  // Address of the mock object this mock method belongs to.  Only
+  // valid after this mock method has been called or
+  // ON_CALL/EXPECT_CALL has been invoked on it.
+  const void* mock_obj_;  // Protected by g_gmock_mutex.
+
+  // Name of the function being mocked.  Only valid after this mock
+  // method has been called.
+  const char* name_;  // Protected by g_gmock_mutex.
+
+  // All default action specs for this function mocker.
+  UntypedOnCallSpecs untyped_on_call_specs_;
+
+  // All expectations for this function mocker.
+  UntypedExpectations untyped_expectations_;
+};  // class UntypedFunctionMockerBase
+
+// Untyped base class for OnCallSpec<F>.
+class UntypedOnCallSpecBase {
+ public:
+  // The arguments are the location of the ON_CALL() statement.
+  UntypedOnCallSpecBase(const char* a_file, int a_line)
+      : file_(a_file), line_(a_line), last_clause_(kNone) {}
+
+  // Where in the source file was the default action spec defined?
+  const char* file() const { return file_; }
+  int line() const { return line_; }
+
+ protected:
+  // Gives each clause in the ON_CALL() statement a name.
+  enum Clause {
+    // Do not change the order of the enum members!  The run-time
+    // syntax checking relies on it.
+    kNone,
+    kWith,
+    kWillByDefault
+  };
+
+  // Asserts that the ON_CALL() statement has a certain property.
+  void AssertSpecProperty(bool property, const string& failure_message) const {
+    Assert(property, file_, line_, failure_message);
+  }
+
+  // Expects that the ON_CALL() statement has a certain property.
+  void ExpectSpecProperty(bool property, const string& failure_message) const {
+    Expect(property, file_, line_, failure_message);
+  }
+
+  const char* file_;
+  int line_;
+
+  // The last clause in the ON_CALL() statement as seen so far.
+  // Initially kNone and changes as the statement is parsed.
+  Clause last_clause_;
+};  // class UntypedOnCallSpecBase
+
+// This template class implements an ON_CALL spec.
+template <typename F>
+class OnCallSpec : public UntypedOnCallSpecBase {
+ public:
+  typedef typename Function<F>::ArgumentTuple ArgumentTuple;
+  typedef typename Function<F>::ArgumentMatcherTuple ArgumentMatcherTuple;
+
+  // Constructs an OnCallSpec object from the information inside
+  // the parenthesis of an ON_CALL() statement.
+  OnCallSpec(const char* a_file, int a_line,
+             const ArgumentMatcherTuple& matchers)
+      : UntypedOnCallSpecBase(a_file, a_line),
+        matchers_(matchers),
+        // By default, extra_matcher_ should match anything.  However,
+        // we cannot initialize it with _ as that triggers a compiler
+        // bug in Symbian's C++ compiler (cannot decide between two
+        // overloaded constructors of Matcher<const ArgumentTuple&>).
+        extra_matcher_(A<const ArgumentTuple&>()) {
+  }
+
+  // Implements the .With() clause.
+  OnCallSpec& With(const Matcher<const ArgumentTuple&>& m) {
+    // Makes sure this is called at most once.
+    ExpectSpecProperty(last_clause_ < kWith,
+                       ".With() cannot appear "
+                       "more than once in an ON_CALL().");
+    last_clause_ = kWith;
+
+    extra_matcher_ = m;
+    return *this;
+  }
+
+  // Implements the .WillByDefault() clause.
+  OnCallSpec& WillByDefault(const Action<F>& action) {
+    ExpectSpecProperty(last_clause_ < kWillByDefault,
+                       ".WillByDefault() must appear "
+                       "exactly once in an ON_CALL().");
+    last_clause_ = kWillByDefault;
+
+    ExpectSpecProperty(!action.IsDoDefault(),
+                       "DoDefault() cannot be used in ON_CALL().");
+    action_ = action;
+    return *this;
+  }
+
+  // Returns true iff the given arguments match the matchers.
+  bool Matches(const ArgumentTuple& args) const {
+    return TupleMatches(matchers_, args) && extra_matcher_.Matches(args);
+  }
+
+  // Returns the action specified by the user.
+  const Action<F>& GetAction() const {
+    AssertSpecProperty(last_clause_ == kWillByDefault,
+                       ".WillByDefault() must appear exactly "
+                       "once in an ON_CALL().");
+    return action_;
+  }
+
+ private:
+  // The information in statement
+  //
+  //   ON_CALL(mock_object, Method(matchers))
+  //       .With(multi-argument-matcher)
+  //       .WillByDefault(action);
+  //
+  // is recorded in the data members like this:
+  //
+  //   source file that contains the statement => file_
+  //   line number of the statement            => line_
+  //   matchers                                => matchers_
+  //   multi-argument-matcher                  => extra_matcher_
+  //   action                                  => action_
+  ArgumentMatcherTuple matchers_;
+  Matcher<const ArgumentTuple&> extra_matcher_;
+  Action<F> action_;
+};  // class OnCallSpec
+
+// Possible reactions on uninteresting calls.
+enum CallReaction {
+  kAllow,
+  kWarn,
+  kFail
+};
+
+}  // namespace internal
+
+// Utilities for manipulating mock objects.
+class GTEST_API_ Mock {
+ public:
+  // The following public methods can be called concurrently.
+
+  // Tells Google Mock to ignore mock_obj when checking for leaked
+  // mock objects.
+  static void AllowLeak(const void* mock_obj)
+      GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
+
+  // Verifies and clears all expectations on the given mock object.
+  // If the expectations aren't satisfied, generates one or more
+  // Google Test non-fatal failures and returns false.
+  static bool VerifyAndClearExpectations(void* mock_obj)
+      GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
+
+  // Verifies all expectations on the given mock object and clears its
+  // default actions and expectations.  Returns true iff the
+  // verification was successful.
+  static bool VerifyAndClear(void* mock_obj)
+      GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
+
+ private:
+  friend class internal::UntypedFunctionMockerBase;
+
+  // Needed for a function mocker to register itself (so that we know
+  // how to clear a mock object).
+  template <typename F>
+  friend class internal::FunctionMockerBase;
+
+  template <typename M>
+  friend class NiceMock;
+
+  template <typename M>
+  friend class StrictMock;
+
+  // Tells Google Mock to allow uninteresting calls on the given mock
+  // object.
+  static void AllowUninterestingCalls(const void* mock_obj)
+      GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
+
+  // Tells Google Mock to warn the user about uninteresting calls on
+  // the given mock object.
+  static void WarnUninterestingCalls(const void* mock_obj)
+      GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
+
+  // Tells Google Mock to fail uninteresting calls on the given mock
+  // object.
+  static void FailUninterestingCalls(const void* mock_obj)
+      GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
+
+  // Tells Google Mock the given mock object is being destroyed and
+  // its entry in the call-reaction table should be removed.
+  static void UnregisterCallReaction(const void* mock_obj)
+      GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
+
+  // Returns the reaction Google Mock will have on uninteresting calls
+  // made on the given mock object.
+  static internal::CallReaction GetReactionOnUninterestingCalls(
+      const void* mock_obj)
+          GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
+
+  // Verifies that all expectations on the given mock object have been
+  // satisfied.  Reports one or more Google Test non-fatal failures
+  // and returns false if not.
+  static bool VerifyAndClearExpectationsLocked(void* mock_obj)
+      GTEST_EXCLUSIVE_LOCK_REQUIRED_(internal::g_gmock_mutex);
+
+  // Clears all ON_CALL()s set on the given mock object.
+  static void ClearDefaultActionsLocked(void* mock_obj)
+      GTEST_EXCLUSIVE_LOCK_REQUIRED_(internal::g_gmock_mutex);
+
+  // Registers a mock object and a mock method it owns.
+  static void Register(
+      const void* mock_obj,
+      internal::UntypedFunctionMockerBase* mocker)
+          GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
+
+  // Tells Google Mock where in the source code mock_obj is used in an
+  // ON_CALL or EXPECT_CALL.  In case mock_obj is leaked, this
+  // information helps the user identify which object it is.
+  static void RegisterUseByOnCallOrExpectCall(
+      const void* mock_obj, const char* file, int line)
+          GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
+
+  // Unregisters a mock method; removes the owning mock object from
+  // the registry when the last mock method associated with it has
+  // been unregistered.  This is called only in the destructor of
+  // FunctionMockerBase.
+  static void UnregisterLocked(internal::UntypedFunctionMockerBase* mocker)
+      GTEST_EXCLUSIVE_LOCK_REQUIRED_(internal::g_gmock_mutex);
+};  // class Mock
+
+// An abstract handle of an expectation.  Useful in the .After()
+// clause of EXPECT_CALL() for setting the (partial) order of
+// expectations.  The syntax:
+//
+//   Expectation e1 = EXPECT_CALL(...)...;
+//   EXPECT_CALL(...).After(e1)...;
+//
+// sets two expectations where the latter can only be matched after
+// the former has been satisfied.
+//
+// Notes:
+//   - This class is copyable and has value semantics.
+//   - Constness is shallow: a const Expectation object itself cannot
+//     be modified, but the mutable methods of the ExpectationBase
+//     object it references can be called via expectation_base().
+//   - The constructors and destructor are defined out-of-line because
+//     the Symbian WINSCW compiler wants to otherwise instantiate them
+//     when it sees this class definition, at which point it doesn't have
+//     ExpectationBase available yet, leading to incorrect destruction
+//     in the linked_ptr (or compilation errors if using a checking
+//     linked_ptr).
+class GTEST_API_ Expectation {
+ public:
+  // Constructs a null object that doesn't reference any expectation.
+  Expectation();
+
+  ~Expectation();
+
+  // This single-argument ctor must not be explicit, in order to support the
+  //   Expectation e = EXPECT_CALL(...);
+  // syntax.
+  //
+  // A TypedExpectation object stores its pre-requisites as
+  // Expectation objects, and needs to call the non-const Retire()
+  // method on the ExpectationBase objects they reference.  Therefore
+  // Expectation must receive a *non-const* reference to the
+  // ExpectationBase object.
+  Expectation(internal::ExpectationBase& exp);  // NOLINT
+
+  // The compiler-generated copy ctor and operator= work exactly as
+  // intended, so we don't need to define our own.
+
+  // Returns true iff rhs references the same expectation as this object does.
+  bool operator==(const Expectation& rhs) const {
+    return expectation_base_ == rhs.expectation_base_;
+  }
+
+  bool operator!=(const Expectation& rhs) const { return !(*this == rhs); }
+
+ private:
+  friend class ExpectationSet;
+  friend class Sequence;
+  friend class ::testing::internal::ExpectationBase;
+  friend class ::testing::internal::UntypedFunctionMockerBase;
+
+  template <typename F>
+  friend class ::testing::internal::FunctionMockerBase;
+
+  template <typename F>
+  friend class ::testing::internal::TypedExpectation;
+
+  // This comparator is needed for putting Expectation objects into a set.
+  class Less {
+   public:
+    bool operator()(const Expectation& lhs, const Expectation& rhs) const {
+      return lhs.expectation_base_.get() < rhs.expectation_base_.get();
+    }
+  };
+
+  typedef ::std::set<Expectation, Less> Set;
+
+  Expectation(
+      const internal::linked_ptr<internal::ExpectationBase>& expectation_base);
+
+  // Returns the expectation this object references.
+  const internal::linked_ptr<internal::ExpectationBase>&
+  expectation_base() const {
+    return expectation_base_;
+  }
+
+  // A linked_ptr that co-owns the expectation this handle references.
+  internal::linked_ptr<internal::ExpectationBase> expectation_base_;
+};
+
+// A set of expectation handles.  Useful in the .After() clause of
+// EXPECT_CALL() for setting the (partial) order of expectations.  The
+// syntax:
+//
+//   ExpectationSet es;
+//   es += EXPECT_CALL(...)...;
+//   es += EXPECT_CALL(...)...;
+//   EXPECT_CALL(...).After(es)...;
+//
+// sets three expectations where the last one can only be matched
+// after the first two have both been satisfied.
+//
+// This class is copyable and has value semantics.
+class ExpectationSet {
+ public:
+  // A bidirectional iterator that can read a const element in the set.
+  typedef Expectation::Set::const_iterator const_iterator;
+
+  // An object stored in the set.  This is an alias of Expectation.
+  typedef Expectation::Set::value_type value_type;
+
+  // Constructs an empty set.
+  ExpectationSet() {}
+
+  // This single-argument ctor must not be explicit, in order to support the
+  //   ExpectationSet es = EXPECT_CALL(...);
+  // syntax.
+  ExpectationSet(internal::ExpectationBase& exp) {  // NOLINT
+    *this += Expectation(exp);
+  }
+
+  // This single-argument ctor implements implicit conversion from
+  // Expectation and thus must not be explicit.  This allows either an
+  // Expectation or an ExpectationSet to be used in .After().
+  ExpectationSet(const Expectation& e) {  // NOLINT
+    *this += e;
+  }
+
+  // The compiler-generator ctor and operator= works exactly as
+  // intended, so we don't need to define our own.
+
+  // Returns true iff rhs contains the same set of Expectation objects
+  // as this does.
+  bool operator==(const ExpectationSet& rhs) const {
+    return expectations_ == rhs.expectations_;
+  }
+
+  bool operator!=(const ExpectationSet& rhs) const { return !(*this == rhs); }
+
+  // Implements the syntax
+  //   expectation_set += EXPECT_CALL(...);
+  ExpectationSet& operator+=(const Expectation& e) {
+    expectations_.insert(e);
+    return *this;
+  }
+
+  int size() const { return static_cast<int>(expectations_.size()); }
+
+  const_iterator begin() const { return expectations_.begin(); }
+  const_iterator end() const { return expectations_.end(); }
+
+ private:
+  Expectation::Set expectations_;
+};
+
+
+// Sequence objects are used by a user to specify the relative order
+// in which the expectations should match.  They are copyable (we rely
+// on the compiler-defined copy constructor and assignment operator).
+class GTEST_API_ Sequence {
+ public:
+  // Constructs an empty sequence.
+  Sequence() : last_expectation_(new Expectation) {}
+
+  // Adds an expectation to this sequence.  The caller must ensure
+  // that no other thread is accessing this Sequence object.
+  void AddExpectation(const Expectation& expectation) const;
+
+ private:
+  // The last expectation in this sequence.  We use a linked_ptr here
+  // because Sequence objects are copyable and we want the copies to
+  // be aliases.  The linked_ptr allows the copies to co-own and share
+  // the same Expectation object.
+  internal::linked_ptr<Expectation> last_expectation_;
+};  // class Sequence
+
+// An object of this type causes all EXPECT_CALL() statements
+// encountered in its scope to be put in an anonymous sequence.  The
+// work is done in the constructor and destructor.  You should only
+// create an InSequence object on the stack.
+//
+// The sole purpose for this class is to support easy definition of
+// sequential expectations, e.g.
+//
+//   {
+//     InSequence dummy;  // The name of the object doesn't matter.
+//
+//     // The following expectations must match in the order they appear.
+//     EXPECT_CALL(a, Bar())...;
+//     EXPECT_CALL(a, Baz())...;
+//     ...
+//     EXPECT_CALL(b, Xyz())...;
+//   }
+//
+// You can create InSequence objects in multiple threads, as long as
+// they are used to affect different mock objects.  The idea is that
+// each thread can create and set up its own mocks as if it's the only
+// thread.  However, for clarity of your tests we recommend you to set
+// up mocks in the main thread unless you have a good reason not to do
+// so.
+class GTEST_API_ InSequence {
+ public:
+  InSequence();
+  ~InSequence();
+ private:
+  bool sequence_created_;
+
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(InSequence);  // NOLINT
+} GTEST_ATTRIBUTE_UNUSED_;
+
+namespace internal {
+
+// Points to the implicit sequence introduced by a living InSequence
+// object (if any) in the current thread or NULL.
+GTEST_API_ extern ThreadLocal<Sequence*> g_gmock_implicit_sequence;
+
+// Base class for implementing expectations.
+//
+// There are two reasons for having a type-agnostic base class for
+// Expectation:
+//
+//   1. We need to store collections of expectations of different
+//   types (e.g. all pre-requisites of a particular expectation, all
+//   expectations in a sequence).  Therefore these expectation objects
+//   must share a common base class.
+//
+//   2. We can avoid binary code bloat by moving methods not depending
+//   on the template argument of Expectation to the base class.
+//
+// This class is internal and mustn't be used by user code directly.
+class GTEST_API_ ExpectationBase {
+ public:
+  // source_text is the EXPECT_CALL(...) source that created this Expectation.
+  ExpectationBase(const char* file, int line, const string& source_text);
+
+  virtual ~ExpectationBase();
+
+  // Where in the source file was the expectation spec defined?
+  const char* file() const { return file_; }
+  int line() const { return line_; }
+  const char* source_text() const { return source_text_.c_str(); }
+  // Returns the cardinality specified in the expectation spec.
+  const Cardinality& cardinality() const { return cardinality_; }
+
+  // Describes the source file location of this expectation.
+  void DescribeLocationTo(::std::ostream* os) const {
+    *os << FormatFileLocation(file(), line()) << " ";
+  }
+
+  // Describes how many times a function call matching this
+  // expectation has occurred.
+  void DescribeCallCountTo(::std::ostream* os) const
+      GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex);
+
+  // If this mock method has an extra matcher (i.e. .With(matcher)),
+  // describes it to the ostream.
+  virtual void MaybeDescribeExtraMatcherTo(::std::ostream* os) = 0;
+
+ protected:
+  friend class ::testing::Expectation;
+  friend class UntypedFunctionMockerBase;
+
+  enum Clause {
+    // Don't change the order of the enum members!
+    kNone,
+    kWith,
+    kTimes,
+    kInSequence,
+    kAfter,
+    kWillOnce,
+    kWillRepeatedly,
+    kRetiresOnSaturation
+  };
+
+  typedef std::vector<const void*> UntypedActions;
+
+  // Returns an Expectation object that references and co-owns this
+  // expectation.
+  virtual Expectation GetHandle() = 0;
+
+  // Asserts that the EXPECT_CALL() statement has the given property.
+  void AssertSpecProperty(bool property, const string& failure_message) const {
+    Assert(property, file_, line_, failure_message);
+  }
+
+  // Expects that the EXPECT_CALL() statement has the given property.
+  void ExpectSpecProperty(bool property, const string& failure_message) const {
+    Expect(property, file_, line_, failure_message);
+  }
+
+  // Explicitly specifies the cardinality of this expectation.  Used
+  // by the subclasses to implement the .Times() clause.
+  void SpecifyCardinality(const Cardinality& cardinality);
+
+  // Returns true iff the user specified the cardinality explicitly
+  // using a .Times().
+  bool cardinality_specified() const { return cardinality_specified_; }
+
+  // Sets the cardinality of this expectation spec.
+  void set_cardinality(const Cardinality& a_cardinality) {
+    cardinality_ = a_cardinality;
+  }
+
+  // The following group of methods should only be called after the
+  // EXPECT_CALL() statement, and only when g_gmock_mutex is held by
+  // the current thread.
+
+  // Retires all pre-requisites of this expectation.
+  void RetireAllPreRequisites()
+      GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex);
+
+  // Returns true iff this expectation is retired.
+  bool is_retired() const
+      GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
+    g_gmock_mutex.AssertHeld();
+    return retired_;
+  }
+
+  // Retires this expectation.
+  void Retire()
+      GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
+    g_gmock_mutex.AssertHeld();
+    retired_ = true;
+  }
+
+  // Returns true iff this expectation is satisfied.
+  bool IsSatisfied() const
+      GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
+    g_gmock_mutex.AssertHeld();
+    return cardinality().IsSatisfiedByCallCount(call_count_);
+  }
+
+  // Returns true iff this expectation is saturated.
+  bool IsSaturated() const
+      GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
+    g_gmock_mutex.AssertHeld();
+    return cardinality().IsSaturatedByCallCount(call_count_);
+  }
+
+  // Returns true iff this expectation is over-saturated.
+  bool IsOverSaturated() const
+      GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
+    g_gmock_mutex.AssertHeld();
+    return cardinality().IsOverSaturatedByCallCount(call_count_);
+  }
+
+  // Returns true iff all pre-requisites of this expectation are satisfied.
+  bool AllPrerequisitesAreSatisfied() const
+      GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex);
+
+  // Adds unsatisfied pre-requisites of this expectation to 'result'.
+  void FindUnsatisfiedPrerequisites(ExpectationSet* result) const
+      GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex);
+
+  // Returns the number this expectation has been invoked.
+  int call_count() const
+      GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
+    g_gmock_mutex.AssertHeld();
+    return call_count_;
+  }
+
+  // Increments the number this expectation has been invoked.
+  void IncrementCallCount()
+      GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
+    g_gmock_mutex.AssertHeld();
+    call_count_++;
+  }
+
+  // Checks the action count (i.e. the number of WillOnce() and
+  // WillRepeatedly() clauses) against the cardinality if this hasn't
+  // been done before.  Prints a warning if there are too many or too
+  // few actions.
+  void CheckActionCountIfNotDone() const
+      GTEST_LOCK_EXCLUDED_(mutex_);
+
+  friend class ::testing::Sequence;
+  friend class ::testing::internal::ExpectationTester;
+
+  template <typename Function>
+  friend class TypedExpectation;
+
+  // Implements the .Times() clause.
+  void UntypedTimes(const Cardinality& a_cardinality);
+
+  // This group of fields are part of the spec and won't change after
+  // an EXPECT_CALL() statement finishes.
+  const char* file_;          // The file that contains the expectation.
+  int line_;                  // The line number of the expectation.
+  const string source_text_;  // The EXPECT_CALL(...) source text.
+  // True iff the cardinality is specified explicitly.
+  bool cardinality_specified_;
+  Cardinality cardinality_;            // The cardinality of the expectation.
+  // The immediate pre-requisites (i.e. expectations that must be
+  // satisfied before this expectation can be matched) of this
+  // expectation.  We use linked_ptr in the set because we want an
+  // Expectation object to be co-owned by its FunctionMocker and its
+  // successors.  This allows multiple mock objects to be deleted at
+  // different times.
+  ExpectationSet immediate_prerequisites_;
+
+  // This group of fields are the current state of the expectation,
+  // and can change as the mock function is called.
+  int call_count_;  // How many times this expectation has been invoked.
+  bool retired_;    // True iff this expectation has retired.
+  UntypedActions untyped_actions_;
+  bool extra_matcher_specified_;
+  bool repeated_action_specified_;  // True if a WillRepeatedly() was specified.
+  bool retires_on_saturation_;
+  Clause last_clause_;
+  mutable bool action_count_checked_;  // Under mutex_.
+  mutable Mutex mutex_;  // Protects action_count_checked_.
+
+  GTEST_DISALLOW_ASSIGN_(ExpectationBase);
+};  // class ExpectationBase
+
+// Impements an expectation for the given function type.
+template <typename F>
+class TypedExpectation : public ExpectationBase {
+ public:
+  typedef typename Function<F>::ArgumentTuple ArgumentTuple;
+  typedef typename Function<F>::ArgumentMatcherTuple ArgumentMatcherTuple;
+  typedef typename Function<F>::Result Result;
+
+  TypedExpectation(FunctionMockerBase<F>* owner,
+                   const char* a_file, int a_line, const string& a_source_text,
+                   const ArgumentMatcherTuple& m)
+      : ExpectationBase(a_file, a_line, a_source_text),
+        owner_(owner),
+        matchers_(m),
+        // By default, extra_matcher_ should match anything.  However,
+        // we cannot initialize it with _ as that triggers a compiler
+        // bug in Symbian's C++ compiler (cannot decide between two
+        // overloaded constructors of Matcher<const ArgumentTuple&>).
+        extra_matcher_(A<const ArgumentTuple&>()),
+        repeated_action_(DoDefault()) {}
+
+  virtual ~TypedExpectation() {
+    // Check the validity of the action count if it hasn't been done
+    // yet (for example, if the expectation was never used).
+    CheckActionCountIfNotDone();
+    for (UntypedActions::const_iterator it = untyped_actions_.begin();
+         it != untyped_actions_.end(); ++it) {
+      delete static_cast<const Action<F>*>(*it);
+    }
+  }
+
+  // Implements the .With() clause.
+  TypedExpectation& With(const Matcher<const ArgumentTuple&>& m) {
+    if (last_clause_ == kWith) {
+      ExpectSpecProperty(false,
+                         ".With() cannot appear "
+                         "more than once in an EXPECT_CALL().");
+    } else {
+      ExpectSpecProperty(last_clause_ < kWith,
+                         ".With() must be the first "
+                         "clause in an EXPECT_CALL().");
+    }
+    last_clause_ = kWith;
+
+    extra_matcher_ = m;
+    extra_matcher_specified_ = true;
+    return *this;
+  }
+
+  // Implements the .Times() clause.
+  TypedExpectation& Times(const Cardinality& a_cardinality) {
+    ExpectationBase::UntypedTimes(a_cardinality);
+    return *this;
+  }
+
+  // Implements the .Times() clause.
+  TypedExpectation& Times(int n) {
+    return Times(Exactly(n));
+  }
+
+  // Implements the .InSequence() clause.
+  TypedExpectation& InSequence(const Sequence& s) {
+    ExpectSpecProperty(last_clause_ <= kInSequence,
+                       ".InSequence() cannot appear after .After(),"
+                       " .WillOnce(), .WillRepeatedly(), or "
+                       ".RetiresOnSaturation().");
+    last_clause_ = kInSequence;
+
+    s.AddExpectation(GetHandle());
+    return *this;
+  }
+  TypedExpectation& InSequence(const Sequence& s1, const Sequence& s2) {
+    return InSequence(s1).InSequence(s2);
+  }
+  TypedExpectation& InSequence(const Sequence& s1, const Sequence& s2,
+                               const Sequence& s3) {
+    return InSequence(s1, s2).InSequence(s3);
+  }
+  TypedExpectation& InSequence(const Sequence& s1, const Sequence& s2,
+                               const Sequence& s3, const Sequence& s4) {
+    return InSequence(s1, s2, s3).InSequence(s4);
+  }
+  TypedExpectation& InSequence(const Sequence& s1, const Sequence& s2,
+                               const Sequence& s3, const Sequence& s4,
+                               const Sequence& s5) {
+    return InSequence(s1, s2, s3, s4).InSequence(s5);
+  }
+
+  // Implements that .After() clause.
+  TypedExpectation& After(const ExpectationSet& s) {
+    ExpectSpecProperty(last_clause_ <= kAfter,
+                       ".After() cannot appear after .WillOnce(),"
+                       " .WillRepeatedly(), or "
+                       ".RetiresOnSaturation().");
+    last_clause_ = kAfter;
+
+    for (ExpectationSet::const_iterator it = s.begin(); it != s.end(); ++it) {
+      immediate_prerequisites_ += *it;
+    }
+    return *this;
+  }
+  TypedExpectation& After(const ExpectationSet& s1, const ExpectationSet& s2) {
+    return After(s1).After(s2);
+  }
+  TypedExpectation& After(const ExpectationSet& s1, const ExpectationSet& s2,
+                          const ExpectationSet& s3) {
+    return After(s1, s2).After(s3);
+  }
+  TypedExpectation& After(const ExpectationSet& s1, const ExpectationSet& s2,
+                          const ExpectationSet& s3, const ExpectationSet& s4) {
+    return After(s1, s2, s3).After(s4);
+  }
+  TypedExpectation& After(const ExpectationSet& s1, const ExpectationSet& s2,
+                          const ExpectationSet& s3, const ExpectationSet& s4,
+                          const ExpectationSet& s5) {
+    return After(s1, s2, s3, s4).After(s5);
+  }
+
+  // Implements the .WillOnce() clause.
+  TypedExpectation& WillOnce(const Action<F>& action) {
+    ExpectSpecProperty(last_clause_ <= kWillOnce,
+                       ".WillOnce() cannot appear after "
+                       ".WillRepeatedly() or .RetiresOnSaturation().");
+    last_clause_ = kWillOnce;
+
+    untyped_actions_.push_back(new Action<F>(action));
+    if (!cardinality_specified()) {
+      set_cardinality(Exactly(static_cast<int>(untyped_actions_.size())));
+    }
+    return *this;
+  }
+
+  // Implements the .WillRepeatedly() clause.
+  TypedExpectation& WillRepeatedly(const Action<F>& action) {
+    if (last_clause_ == kWillRepeatedly) {
+      ExpectSpecProperty(false,
+                         ".WillRepeatedly() cannot appear "
+                         "more than once in an EXPECT_CALL().");
+    } else {
+      ExpectSpecProperty(last_clause_ < kWillRepeatedly,
+                         ".WillRepeatedly() cannot appear "
+                         "after .RetiresOnSaturation().");
+    }
+    last_clause_ = kWillRepeatedly;
+    repeated_action_specified_ = true;
+
+    repeated_action_ = action;
+    if (!cardinality_specified()) {
+      set_cardinality(AtLeast(static_cast<int>(untyped_actions_.size())));
+    }
+
+    // Now that no more action clauses can be specified, we check
+    // whether their count makes sense.
+    CheckActionCountIfNotDone();
+    return *this;
+  }
+
+  // Implements the .RetiresOnSaturation() clause.
+  TypedExpectation& RetiresOnSaturation() {
+    ExpectSpecProperty(last_clause_ < kRetiresOnSaturation,
+                       ".RetiresOnSaturation() cannot appear "
+                       "more than once.");
+    last_clause_ = kRetiresOnSaturation;
+    retires_on_saturation_ = true;
+
+    // Now that no more action clauses can be specified, we check
+    // whether their count makes sense.
+    CheckActionCountIfNotDone();
+    return *this;
+  }
+
+  // Returns the matchers for the arguments as specified inside the
+  // EXPECT_CALL() macro.
+  const ArgumentMatcherTuple& matchers() const {
+    return matchers_;
+  }
+
+  // Returns the matcher specified by the .With() clause.
+  const Matcher<const ArgumentTuple&>& extra_matcher() const {
+    return extra_matcher_;
+  }
+
+  // Returns the action specified by the .WillRepeatedly() clause.
+  const Action<F>& repeated_action() const { return repeated_action_; }
+
+  // If this mock method has an extra matcher (i.e. .With(matcher)),
+  // describes it to the ostream.
+  virtual void MaybeDescribeExtraMatcherTo(::std::ostream* os) {
+    if (extra_matcher_specified_) {
+      *os << "    Expected args: ";
+      extra_matcher_.DescribeTo(os);
+      *os << "\n";
+    }
+  }
+
+ private:
+  template <typename Function>
+  friend class FunctionMockerBase;
+
+  // Returns an Expectation object that references and co-owns this
+  // expectation.
+  virtual Expectation GetHandle() {
+    return owner_->GetHandleOf(this);
+  }
+
+  // The following methods will be called only after the EXPECT_CALL()
+  // statement finishes and when the current thread holds
+  // g_gmock_mutex.
+
+  // Returns true iff this expectation matches the given arguments.
+  bool Matches(const ArgumentTuple& args) const
+      GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
+    g_gmock_mutex.AssertHeld();
+    return TupleMatches(matchers_, args) && extra_matcher_.Matches(args);
+  }
+
+  // Returns true iff this expectation should handle the given arguments.
+  bool ShouldHandleArguments(const ArgumentTuple& args) const
+      GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
+    g_gmock_mutex.AssertHeld();
+
+    // In case the action count wasn't checked when the expectation
+    // was defined (e.g. if this expectation has no WillRepeatedly()
+    // or RetiresOnSaturation() clause), we check it when the
+    // expectation is used for the first time.
+    CheckActionCountIfNotDone();
+    return !is_retired() && AllPrerequisitesAreSatisfied() && Matches(args);
+  }
+
+  // Describes the result of matching the arguments against this
+  // expectation to the given ostream.
+  void ExplainMatchResultTo(
+      const ArgumentTuple& args,
+      ::std::ostream* os) const
+          GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
+    g_gmock_mutex.AssertHeld();
+
+    if (is_retired()) {
+      *os << "         Expected: the expectation is active\n"
+          << "           Actual: it is retired\n";
+    } else if (!Matches(args)) {
+      if (!TupleMatches(matchers_, args)) {
+        ExplainMatchFailureTupleTo(matchers_, args, os);
+      }
+      StringMatchResultListener listener;
+      if (!extra_matcher_.MatchAndExplain(args, &listener)) {
+        *os << "    Expected args: ";
+        extra_matcher_.DescribeTo(os);
+        *os << "\n           Actual: don't match";
+
+        internal::PrintIfNotEmpty(listener.str(), os);
+        *os << "\n";
+      }
+    } else if (!AllPrerequisitesAreSatisfied()) {
+      *os << "         Expected: all pre-requisites are satisfied\n"
+          << "           Actual: the following immediate pre-requisites "
+          << "are not satisfied:\n";
+      ExpectationSet unsatisfied_prereqs;
+      FindUnsatisfiedPrerequisites(&unsatisfied_prereqs);
+      int i = 0;
+      for (ExpectationSet::const_iterator it = unsatisfied_prereqs.begin();
+           it != unsatisfied_prereqs.end(); ++it) {
+        it->expectation_base()->DescribeLocationTo(os);
+        *os << "pre-requisite #" << i++ << "\n";
+      }
+      *os << "                   (end of pre-requisites)\n";
+    } else {
+      // This line is here just for completeness' sake.  It will never
+      // be executed as currently the ExplainMatchResultTo() function
+      // is called only when the mock function call does NOT match the
+      // expectation.
+      *os << "The call matches the expectation.\n";
+    }
+  }
+
+  // Returns the action that should be taken for the current invocation.
+  const Action<F>& GetCurrentAction(
+      const FunctionMockerBase<F>* mocker,
+      const ArgumentTuple& args) const
+          GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
+    g_gmock_mutex.AssertHeld();
+    const int count = call_count();
+    Assert(count >= 1, __FILE__, __LINE__,
+           "call_count() is <= 0 when GetCurrentAction() is "
+           "called - this should never happen.");
+
+    const int action_count = static_cast<int>(untyped_actions_.size());
+    if (action_count > 0 && !repeated_action_specified_ &&
+        count > action_count) {
+      // If there is at least one WillOnce() and no WillRepeatedly(),
+      // we warn the user when the WillOnce() clauses ran out.
+      ::std::stringstream ss;
+      DescribeLocationTo(&ss);
+      ss << "Actions ran out in " << source_text() << "...\n"
+         << "Called " << count << " times, but only "
+         << action_count << " WillOnce()"
+         << (action_count == 1 ? " is" : "s are") << " specified - ";
+      mocker->DescribeDefaultActionTo(args, &ss);
+      Log(kWarning, ss.str(), 1);
+    }
+
+    return count <= action_count ?
+        *static_cast<const Action<F>*>(untyped_actions_[count - 1]) :
+        repeated_action();
+  }
+
+  // Given the arguments of a mock function call, if the call will
+  // over-saturate this expectation, returns the default action;
+  // otherwise, returns the next action in this expectation.  Also
+  // describes *what* happened to 'what', and explains *why* Google
+  // Mock does it to 'why'.  This method is not const as it calls
+  // IncrementCallCount().  A return value of NULL means the default
+  // action.
+  const Action<F>* GetActionForArguments(
+      const FunctionMockerBase<F>* mocker,
+      const ArgumentTuple& args,
+      ::std::ostream* what,
+      ::std::ostream* why)
+          GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
+    g_gmock_mutex.AssertHeld();
+    if (IsSaturated()) {
+      // We have an excessive call.
+      IncrementCallCount();
+      *what << "Mock function called more times than expected - ";
+      mocker->DescribeDefaultActionTo(args, what);
+      DescribeCallCountTo(why);
+
+      // TODO(wan@google.com): allow the user to control whether
+      // unexpected calls should fail immediately or continue using a
+      // flag --gmock_unexpected_calls_are_fatal.
+      return NULL;
+    }
+
+    IncrementCallCount();
+    RetireAllPreRequisites();
+
+    if (retires_on_saturation_ && IsSaturated()) {
+      Retire();
+    }
+
+    // Must be done after IncrementCount()!
+    *what << "Mock function call matches " << source_text() <<"...\n";
+    return &(GetCurrentAction(mocker, args));
+  }
+
+  // All the fields below won't change once the EXPECT_CALL()
+  // statement finishes.
+  FunctionMockerBase<F>* const owner_;
+  ArgumentMatcherTuple matchers_;
+  Matcher<const ArgumentTuple&> extra_matcher_;
+  Action<F> repeated_action_;
+
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(TypedExpectation);
+};  // class TypedExpectation
+
+// A MockSpec object is used by ON_CALL() or EXPECT_CALL() for
+// specifying the default behavior of, or expectation on, a mock
+// function.
+
+// Note: class MockSpec really belongs to the ::testing namespace.
+// However if we define it in ::testing, MSVC will complain when
+// classes in ::testing::internal declare it as a friend class
+// template.  To workaround this compiler bug, we define MockSpec in
+// ::testing::internal and import it into ::testing.
+
+// Logs a message including file and line number information.
+GTEST_API_ void LogWithLocation(testing::internal::LogSeverity severity,
+                                const char* file, int line,
+                                const string& message);
+
+template <typename F>
+class MockSpec {
+ public:
+  typedef typename internal::Function<F>::ArgumentTuple ArgumentTuple;
+  typedef typename internal::Function<F>::ArgumentMatcherTuple
+      ArgumentMatcherTuple;
+
+  // Constructs a MockSpec object, given the function mocker object
+  // that the spec is associated with.
+  explicit MockSpec(internal::FunctionMockerBase<F>* function_mocker)
+      : function_mocker_(function_mocker) {}
+
+  // Adds a new default action spec to the function mocker and returns
+  // the newly created spec.
+  internal::OnCallSpec<F>& InternalDefaultActionSetAt(
+      const char* file, int line, const char* obj, const char* call) {
+    LogWithLocation(internal::kInfo, file, line,
+        string("ON_CALL(") + obj + ", " + call + ") invoked");
+    return function_mocker_->AddNewOnCallSpec(file, line, matchers_);
+  }
+
+  // Adds a new expectation spec to the function mocker and returns
+  // the newly created spec.
+  internal::TypedExpectation<F>& InternalExpectedAt(
+      const char* file, int line, const char* obj, const char* call) {
+    const string source_text(string("EXPECT_CALL(") + obj + ", " + call + ")");
+    LogWithLocation(internal::kInfo, file, line, source_text + " invoked");
+    return function_mocker_->AddNewExpectation(
+        file, line, source_text, matchers_);
+  }
+
+ private:
+  template <typename Function>
+  friend class internal::FunctionMocker;
+
+  void SetMatchers(const ArgumentMatcherTuple& matchers) {
+    matchers_ = matchers;
+  }
+
+  // The function mocker that owns this spec.
+  internal::FunctionMockerBase<F>* const function_mocker_;
+  // The argument matchers specified in the spec.
+  ArgumentMatcherTuple matchers_;
+
+  GTEST_DISALLOW_ASSIGN_(MockSpec);
+};  // class MockSpec
+
+// MSVC warns about using 'this' in base member initializer list, so
+// we need to temporarily disable the warning.  We have to do it for
+// the entire class to suppress the warning, even though it's about
+// the constructor only.
+
+#ifdef _MSC_VER
+# pragma warning(push)          // Saves the current warning state.
+# pragma warning(disable:4355)  // Temporarily disables warning 4355.
+#endif  // _MSV_VER
+
+// C++ treats the void type specially.  For example, you cannot define
+// a void-typed variable or pass a void value to a function.
+// ActionResultHolder<T> holds a value of type T, where T must be a
+// copyable type or void (T doesn't need to be default-constructable).
+// It hides the syntactic difference between void and other types, and
+// is used to unify the code for invoking both void-returning and
+// non-void-returning mock functions.
+
+// Untyped base class for ActionResultHolder<T>.
+class UntypedActionResultHolderBase {
+ public:
+  virtual ~UntypedActionResultHolderBase() {}
+
+  // Prints the held value as an action's result to os.
+  virtual void PrintAsActionResult(::std::ostream* os) const = 0;
+};
+
+// This generic definition is used when T is not void.
+template <typename T>
+class ActionResultHolder : public UntypedActionResultHolderBase {
+ public:
+  explicit ActionResultHolder(T a_value) : value_(a_value) {}
+
+  // The compiler-generated copy constructor and assignment operator
+  // are exactly what we need, so we don't need to define them.
+
+  // Returns the held value and deletes this object.
+  T GetValueAndDelete() const {
+    T retval(value_);
+    delete this;
+    return retval;
+  }
+
+  // Prints the held value as an action's result to os.
+  virtual void PrintAsActionResult(::std::ostream* os) const {
+    *os << "\n          Returns: ";
+    // T may be a reference type, so we don't use UniversalPrint().
+    UniversalPrinter<T>::Print(value_, os);
+  }
+
+  // Performs the given mock function's default action and returns the
+  // result in a new-ed ActionResultHolder.
+  template <typename F>
+  static ActionResultHolder* PerformDefaultAction(
+      const FunctionMockerBase<F>* func_mocker,
+      const typename Function<F>::ArgumentTuple& args,
+      const string& call_description) {
+    return new ActionResultHolder(
+        func_mocker->PerformDefaultAction(args, call_description));
+  }
+
+  // Performs the given action and returns the result in a new-ed
+  // ActionResultHolder.
+  template <typename F>
+  static ActionResultHolder*
+  PerformAction(const Action<F>& action,
+                const typename Function<F>::ArgumentTuple& args) {
+    return new ActionResultHolder(action.Perform(args));
+  }
+
+ private:
+  T value_;
+
+  // T could be a reference type, so = isn't supported.
+  GTEST_DISALLOW_ASSIGN_(ActionResultHolder);
+};
+
+// Specialization for T = void.
+template <>
+class ActionResultHolder<void> : public UntypedActionResultHolderBase {
+ public:
+  void GetValueAndDelete() const { delete this; }
+
+  virtual void PrintAsActionResult(::std::ostream* /* os */) const {}
+
+  // Performs the given mock function's default action and returns NULL;
+  template <typename F>
+  static ActionResultHolder* PerformDefaultAction(
+      const FunctionMockerBase<F>* func_mocker,
+      const typename Function<F>::ArgumentTuple& args,
+      const string& call_description) {
+    func_mocker->PerformDefaultAction(args, call_description);
+    return NULL;
+  }
+
+  // Performs the given action and returns NULL.
+  template <typename F>
+  static ActionResultHolder* PerformAction(
+      const Action<F>& action,
+      const typename Function<F>::ArgumentTuple& args) {
+    action.Perform(args);
+    return NULL;
+  }
+};
+
+// The base of the function mocker class for the given function type.
+// We put the methods in this class instead of its child to avoid code
+// bloat.
+template <typename F>
+class FunctionMockerBase : public UntypedFunctionMockerBase {
+ public:
+  typedef typename Function<F>::Result Result;
+  typedef typename Function<F>::ArgumentTuple ArgumentTuple;
+  typedef typename Function<F>::ArgumentMatcherTuple ArgumentMatcherTuple;
+
+  FunctionMockerBase() : current_spec_(this) {}
+
+  // The destructor verifies that all expectations on this mock
+  // function have been satisfied.  If not, it will report Google Test
+  // non-fatal failures for the violations.
+  virtual ~FunctionMockerBase()
+        GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
+    MutexLock l(&g_gmock_mutex);
+    VerifyAndClearExpectationsLocked();
+    Mock::UnregisterLocked(this);
+    ClearDefaultActionsLocked();
+  }
+
+  // Returns the ON_CALL spec that matches this mock function with the
+  // given arguments; returns NULL if no matching ON_CALL is found.
+  // L = *
+  const OnCallSpec<F>* FindOnCallSpec(
+      const ArgumentTuple& args) const {
+    for (UntypedOnCallSpecs::const_reverse_iterator it
+             = untyped_on_call_specs_.rbegin();
+         it != untyped_on_call_specs_.rend(); ++it) {
+      const OnCallSpec<F>* spec = static_cast<const OnCallSpec<F>*>(*it);
+      if (spec->Matches(args))
+        return spec;
+    }
+
+    return NULL;
+  }
+
+  // Performs the default action of this mock function on the given arguments
+  // and returns the result. Asserts with a helpful call descrption if there is
+  // no valid return value. This method doesn't depend on the mutable state of
+  // this object, and thus can be called concurrently without locking.
+  // L = *
+  Result PerformDefaultAction(const ArgumentTuple& args,
+                              const string& call_description) const {
+    const OnCallSpec<F>* const spec =
+        this->FindOnCallSpec(args);
+    if (spec != NULL) {
+      return spec->GetAction().Perform(args);
+    }
+    Assert(DefaultValue<Result>::Exists(), "", -1,
+           call_description + "\n    The mock function has no default action "
+           "set, and its return type has no default value set.");
+    return DefaultValue<Result>::Get();
+  }
+
+  // Performs the default action with the given arguments and returns
+  // the action's result.  The call description string will be used in
+  // the error message to describe the call in the case the default
+  // action fails.  The caller is responsible for deleting the result.
+  // L = *
+  virtual UntypedActionResultHolderBase* UntypedPerformDefaultAction(
+      const void* untyped_args,  // must point to an ArgumentTuple
+      const string& call_description) const {
+    const ArgumentTuple& args =
+        *static_cast<const ArgumentTuple*>(untyped_args);
+    return ResultHolder::PerformDefaultAction(this, args, call_description);
+  }
+
+  // Performs the given action with the given arguments and returns
+  // the action's result.  The caller is responsible for deleting the
+  // result.
+  // L = *
+  virtual UntypedActionResultHolderBase* UntypedPerformAction(
+      const void* untyped_action, const void* untyped_args) const {
+    // Make a copy of the action before performing it, in case the
+    // action deletes the mock object (and thus deletes itself).
+    const Action<F> action = *static_cast<const Action<F>*>(untyped_action);
+    const ArgumentTuple& args =
+        *static_cast<const ArgumentTuple*>(untyped_args);
+    return ResultHolder::PerformAction(action, args);
+  }
+
+  // Implements UntypedFunctionMockerBase::ClearDefaultActionsLocked():
+  // clears the ON_CALL()s set on this mock function.
+  virtual void ClearDefaultActionsLocked()
+      GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
+    g_gmock_mutex.AssertHeld();
+
+    // Deleting our default actions may trigger other mock objects to be
+    // deleted, for example if an action contains a reference counted smart
+    // pointer to that mock object, and that is the last reference. So if we
+    // delete our actions within the context of the global mutex we may deadlock
+    // when this method is called again. Instead, make a copy of the set of
+    // actions to delete, clear our set within the mutex, and then delete the
+    // actions outside of the mutex.
+    UntypedOnCallSpecs specs_to_delete;
+    untyped_on_call_specs_.swap(specs_to_delete);
+
+    g_gmock_mutex.Unlock();
+    for (UntypedOnCallSpecs::const_iterator it =
+             specs_to_delete.begin();
+         it != specs_to_delete.end(); ++it) {
+      delete static_cast<const OnCallSpec<F>*>(*it);
+    }
+
+    // Lock the mutex again, since the caller expects it to be locked when we
+    // return.
+    g_gmock_mutex.Lock();
+  }
+
+ protected:
+  template <typename Function>
+  friend class MockSpec;
+
+  typedef ActionResultHolder<Result> ResultHolder;
+
+  // Returns the result of invoking this mock function with the given
+  // arguments.  This function can be safely called from multiple
+  // threads concurrently.
+  Result InvokeWith(const ArgumentTuple& args)
+        GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
+    return static_cast<const ResultHolder*>(
+        this->UntypedInvokeWith(&args))->GetValueAndDelete();
+  }
+
+  // Adds and returns a default action spec for this mock function.
+  OnCallSpec<F>& AddNewOnCallSpec(
+      const char* file, int line,
+      const ArgumentMatcherTuple& m)
+          GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
+    Mock::RegisterUseByOnCallOrExpectCall(MockObject(), file, line);
+    OnCallSpec<F>* const on_call_spec = new OnCallSpec<F>(file, line, m);
+    untyped_on_call_specs_.push_back(on_call_spec);
+    return *on_call_spec;
+  }
+
+  // Adds and returns an expectation spec for this mock function.
+  TypedExpectation<F>& AddNewExpectation(
+      const char* file,
+      int line,
+      const string& source_text,
+      const ArgumentMatcherTuple& m)
+          GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
+    Mock::RegisterUseByOnCallOrExpectCall(MockObject(), file, line);
+    TypedExpectation<F>* const expectation =
+        new TypedExpectation<F>(this, file, line, source_text, m);
+    const linked_ptr<ExpectationBase> untyped_expectation(expectation);
+    untyped_expectations_.push_back(untyped_expectation);
+
+    // Adds this expectation into the implicit sequence if there is one.
+    Sequence* const implicit_sequence = g_gmock_implicit_sequence.get();
+    if (implicit_sequence != NULL) {
+      implicit_sequence->AddExpectation(Expectation(untyped_expectation));
+    }
+
+    return *expectation;
+  }
+
+  // The current spec (either default action spec or expectation spec)
+  // being described on this function mocker.
+  MockSpec<F>& current_spec() { return current_spec_; }
+
+ private:
+  template <typename Func> friend class TypedExpectation;
+
+  // Some utilities needed for implementing UntypedInvokeWith().
+
+  // Describes what default action will be performed for the given
+  // arguments.
+  // L = *
+  void DescribeDefaultActionTo(const ArgumentTuple& args,
+                               ::std::ostream* os) const {
+    const OnCallSpec<F>* const spec = FindOnCallSpec(args);
+
+    if (spec == NULL) {
+      *os << (internal::type_equals<Result, void>::value ?
+              "returning directly.\n" :
+              "returning default value.\n");
+    } else {
+      *os << "taking default action specified at:\n"
+          << FormatFileLocation(spec->file(), spec->line()) << "\n";
+    }
+  }
+
+  // Writes a message that the call is uninteresting (i.e. neither
+  // explicitly expected nor explicitly unexpected) to the given
+  // ostream.
+  virtual void UntypedDescribeUninterestingCall(
+      const void* untyped_args,
+      ::std::ostream* os) const
+          GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
+    const ArgumentTuple& args =
+        *static_cast<const ArgumentTuple*>(untyped_args);
+    *os << "Uninteresting mock function call - ";
+    DescribeDefaultActionTo(args, os);
+    *os << "    Function call: " << Name();
+    UniversalPrint(args, os);
+  }
+
+  // Returns the expectation that matches the given function arguments
+  // (or NULL is there's no match); when a match is found,
+  // untyped_action is set to point to the action that should be
+  // performed (or NULL if the action is "do default"), and
+  // is_excessive is modified to indicate whether the call exceeds the
+  // expected number.
+  //
+  // Critical section: We must find the matching expectation and the
+  // corresponding action that needs to be taken in an ATOMIC
+  // transaction.  Otherwise another thread may call this mock
+  // method in the middle and mess up the state.
+  //
+  // However, performing the action has to be left out of the critical
+  // section.  The reason is that we have no control on what the
+  // action does (it can invoke an arbitrary user function or even a
+  // mock function) and excessive locking could cause a dead lock.
+  virtual const ExpectationBase* UntypedFindMatchingExpectation(
+      const void* untyped_args,
+      const void** untyped_action, bool* is_excessive,
+      ::std::ostream* what, ::std::ostream* why)
+          GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
+    const ArgumentTuple& args =
+        *static_cast<const ArgumentTuple*>(untyped_args);
+    MutexLock l(&g_gmock_mutex);
+    TypedExpectation<F>* exp = this->FindMatchingExpectationLocked(args);
+    if (exp == NULL) {  // A match wasn't found.
+      this->FormatUnexpectedCallMessageLocked(args, what, why);
+      return NULL;
+    }
+
+    // This line must be done before calling GetActionForArguments(),
+    // which will increment the call count for *exp and thus affect
+    // its saturation status.
+    *is_excessive = exp->IsSaturated();
+    const Action<F>* action = exp->GetActionForArguments(this, args, what, why);
+    if (action != NULL && action->IsDoDefault())
+      action = NULL;  // Normalize "do default" to NULL.
+    *untyped_action = action;
+    return exp;
+  }
+
+  // Prints the given function arguments to the ostream.
+  virtual void UntypedPrintArgs(const void* untyped_args,
+                                ::std::ostream* os) const {
+    const ArgumentTuple& args =
+        *static_cast<const ArgumentTuple*>(untyped_args);
+    UniversalPrint(args, os);
+  }
+
+  // Returns the expectation that matches the arguments, or NULL if no
+  // expectation matches them.
+  TypedExpectation<F>* FindMatchingExpectationLocked(
+      const ArgumentTuple& args) const
+          GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
+    g_gmock_mutex.AssertHeld();
+    for (typename UntypedExpectations::const_reverse_iterator it =
+             untyped_expectations_.rbegin();
+         it != untyped_expectations_.rend(); ++it) {
+      TypedExpectation<F>* const exp =
+          static_cast<TypedExpectation<F>*>(it->get());
+      if (exp->ShouldHandleArguments(args)) {
+        return exp;
+      }
+    }
+    return NULL;
+  }
+
+  // Returns a message that the arguments don't match any expectation.
+  void FormatUnexpectedCallMessageLocked(
+      const ArgumentTuple& args,
+      ::std::ostream* os,
+      ::std::ostream* why) const
+          GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
+    g_gmock_mutex.AssertHeld();
+    *os << "\nUnexpected mock function call - ";
+    DescribeDefaultActionTo(args, os);
+    PrintTriedExpectationsLocked(args, why);
+  }
+
+  // Prints a list of expectations that have been tried against the
+  // current mock function call.
+  void PrintTriedExpectationsLocked(
+      const ArgumentTuple& args,
+      ::std::ostream* why) const
+          GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
+    g_gmock_mutex.AssertHeld();
+    const int count = static_cast<int>(untyped_expectations_.size());
+    *why << "Google Mock tried the following " << count << " "
+         << (count == 1 ? "expectation, but it didn't match" :
+             "expectations, but none matched")
+         << ":\n";
+    for (int i = 0; i < count; i++) {
+      TypedExpectation<F>* const expectation =
+          static_cast<TypedExpectation<F>*>(untyped_expectations_[i].get());
+      *why << "\n";
+      expectation->DescribeLocationTo(why);
+      if (count > 1) {
+        *why << "tried expectation #" << i << ": ";
+      }
+      *why << expectation->source_text() << "...\n";
+      expectation->ExplainMatchResultTo(args, why);
+      expectation->DescribeCallCountTo(why);
+    }
+  }
+
+  // The current spec (either default action spec or expectation spec)
+  // being described on this function mocker.
+  MockSpec<F> current_spec_;
+
+  // There is no generally useful and implementable semantics of
+  // copying a mock object, so copying a mock is usually a user error.
+  // Thus we disallow copying function mockers.  If the user really
+  // wants to copy a mock object, he should implement his own copy
+  // operation, for example:
+  //
+  //   class MockFoo : public Foo {
+  //    public:
+  //     // Defines a copy constructor explicitly.
+  //     MockFoo(const MockFoo& src) {}
+  //     ...
+  //   };
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(FunctionMockerBase);
+};  // class FunctionMockerBase
+
+#ifdef _MSC_VER
+# pragma warning(pop)  // Restores the warning state.
+#endif  // _MSV_VER
+
+// Implements methods of FunctionMockerBase.
+
+// Verifies that all expectations on this mock function have been
+// satisfied.  Reports one or more Google Test non-fatal failures and
+// returns false if not.
+
+// Reports an uninteresting call (whose description is in msg) in the
+// manner specified by 'reaction'.
+void ReportUninterestingCall(CallReaction reaction, const string& msg);
+
+}  // namespace internal
+
+// The style guide prohibits "using" statements in a namespace scope
+// inside a header file.  However, the MockSpec class template is
+// meant to be defined in the ::testing namespace.  The following line
+// is just a trick for working around a bug in MSVC 8.0, which cannot
+// handle it if we define MockSpec in ::testing.
+using internal::MockSpec;
+
+// Const(x) is a convenient function for obtaining a const reference
+// to x.  This is useful for setting expectations on an overloaded
+// const mock method, e.g.
+//
+//   class MockFoo : public FooInterface {
+//    public:
+//     MOCK_METHOD0(Bar, int());
+//     MOCK_CONST_METHOD0(Bar, int&());
+//   };
+//
+//   MockFoo foo;
+//   // Expects a call to non-const MockFoo::Bar().
+//   EXPECT_CALL(foo, Bar());
+//   // Expects a call to const MockFoo::Bar().
+//   EXPECT_CALL(Const(foo), Bar());
+template <typename T>
+inline const T& Const(const T& x) { return x; }
+
+// Constructs an Expectation object that references and co-owns exp.
+inline Expectation::Expectation(internal::ExpectationBase& exp)  // NOLINT
+    : expectation_base_(exp.GetHandle().expectation_base()) {}
+
+}  // namespace testing
+
+// A separate macro is required to avoid compile errors when the name
+// of the method used in call is a result of macro expansion.
+// See CompilesWithMethodNameExpandedFromMacro tests in
+// internal/gmock-spec-builders_test.cc for more details.
+#define GMOCK_ON_CALL_IMPL_(obj, call) \
+    ((obj).gmock_##call).InternalDefaultActionSetAt(__FILE__, __LINE__, \
+                                                    #obj, #call)
+#define ON_CALL(obj, call) GMOCK_ON_CALL_IMPL_(obj, call)
+
+#define GMOCK_EXPECT_CALL_IMPL_(obj, call) \
+    ((obj).gmock_##call).InternalExpectedAt(__FILE__, __LINE__, #obj, #call)
+#define EXPECT_CALL(obj, call) GMOCK_EXPECT_CALL_IMPL_(obj, call)
+
+#endif  // GMOCK_INCLUDE_GMOCK_GMOCK_SPEC_BUILDERS_H_
diff --git a/google-breakpad/src/testing/include/gmock/gmock.h b/google-breakpad/src/testing/include/gmock/gmock.h
new file mode 100644
index 0000000..481e570
--- /dev/null
+++ b/google-breakpad/src/testing/include/gmock/gmock.h
@@ -0,0 +1,93 @@
+// Copyright 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Google Mock - a framework for writing C++ mock classes.
+//
+// This is the main header file a user should include.
+
+#ifndef GMOCK_INCLUDE_GMOCK_GMOCK_H_
+#define GMOCK_INCLUDE_GMOCK_GMOCK_H_
+
+// This file implements the following syntax:
+//
+//   ON_CALL(mock_object.Method(...))
+//     .With(...) ?
+//     .WillByDefault(...);
+//
+// where With() is optional and WillByDefault() must appear exactly
+// once.
+//
+//   EXPECT_CALL(mock_object.Method(...))
+//     .With(...) ?
+//     .Times(...) ?
+//     .InSequence(...) *
+//     .WillOnce(...) *
+//     .WillRepeatedly(...) ?
+//     .RetiresOnSaturation() ? ;
+//
+// where all clauses are optional and WillOnce() can be repeated.
+
+#include "gmock/gmock-actions.h"
+#include "gmock/gmock-cardinalities.h"
+#include "gmock/gmock-generated-actions.h"
+#include "gmock/gmock-generated-function-mockers.h"
+#include "gmock/gmock-generated-matchers.h"
+#include "gmock/gmock-more-actions.h"
+#include "gmock/gmock-generated-nice-strict.h"
+#include "gmock/gmock-matchers.h"
+#include "gmock/internal/gmock-internal-utils.h"
+
+namespace testing {
+
+// Declares Google Mock flags that we want a user to use programmatically.
+GMOCK_DECLARE_bool_(catch_leaked_mocks);
+GMOCK_DECLARE_string_(verbose);
+
+// Initializes Google Mock.  This must be called before running the
+// tests.  In particular, it parses the command line for the flags
+// that Google Mock recognizes.  Whenever a Google Mock flag is seen,
+// it is removed from argv, and *argc is decremented.
+//
+// No value is returned.  Instead, the Google Mock flag variables are
+// updated.
+//
+// Since Google Test is needed for Google Mock to work, this function
+// also initializes Google Test and parses its flags, if that hasn't
+// been done.
+GTEST_API_ void InitGoogleMock(int* argc, char** argv);
+
+// This overloaded version can be used in Windows programs compiled in
+// UNICODE mode.
+GTEST_API_ void InitGoogleMock(int* argc, wchar_t** argv);
+
+}  // namespace testing
+
+#endif  // GMOCK_INCLUDE_GMOCK_GMOCK_H_
diff --git a/google-breakpad/src/testing/include/gmock/internal/gmock-generated-internal-utils.h b/google-breakpad/src/testing/include/gmock/internal/gmock-generated-internal-utils.h
new file mode 100644
index 0000000..0225845
--- /dev/null
+++ b/google-breakpad/src/testing/include/gmock/internal/gmock-generated-internal-utils.h
@@ -0,0 +1,279 @@
+// This file was GENERATED by command:
+//     pump.py gmock-generated-internal-utils.h.pump
+// DO NOT EDIT BY HAND!!!
+
+// Copyright 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Google Mock - a framework for writing C++ mock classes.
+//
+// This file contains template meta-programming utility classes needed
+// for implementing Google Mock.
+
+#ifndef GMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_GENERATED_INTERNAL_UTILS_H_
+#define GMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_GENERATED_INTERNAL_UTILS_H_
+
+#include "gmock/internal/gmock-port.h"
+
+namespace testing {
+
+template <typename T>
+class Matcher;
+
+namespace internal {
+
+// An IgnoredValue object can be implicitly constructed from ANY value.
+// This is used in implementing the IgnoreResult(a) action.
+class IgnoredValue {
+ public:
+  // This constructor template allows any value to be implicitly
+  // converted to IgnoredValue.  The object has no data member and
+  // doesn't try to remember anything about the argument.  We
+  // deliberately omit the 'explicit' keyword in order to allow the
+  // conversion to be implicit.
+  template <typename T>
+  IgnoredValue(const T& /* ignored */) {}  // NOLINT(runtime/explicit)
+};
+
+// MatcherTuple<T>::type is a tuple type where each field is a Matcher
+// for the corresponding field in tuple type T.
+template <typename Tuple>
+struct MatcherTuple;
+
+template <>
+struct MatcherTuple< ::std::tr1::tuple<> > {
+  typedef ::std::tr1::tuple< > type;
+};
+
+template <typename A1>
+struct MatcherTuple< ::std::tr1::tuple<A1> > {
+  typedef ::std::tr1::tuple<Matcher<A1> > type;
+};
+
+template <typename A1, typename A2>
+struct MatcherTuple< ::std::tr1::tuple<A1, A2> > {
+  typedef ::std::tr1::tuple<Matcher<A1>, Matcher<A2> > type;
+};
+
+template <typename A1, typename A2, typename A3>
+struct MatcherTuple< ::std::tr1::tuple<A1, A2, A3> > {
+  typedef ::std::tr1::tuple<Matcher<A1>, Matcher<A2>, Matcher<A3> > type;
+};
+
+template <typename A1, typename A2, typename A3, typename A4>
+struct MatcherTuple< ::std::tr1::tuple<A1, A2, A3, A4> > {
+  typedef ::std::tr1::tuple<Matcher<A1>, Matcher<A2>, Matcher<A3>,
+      Matcher<A4> > type;
+};
+
+template <typename A1, typename A2, typename A3, typename A4, typename A5>
+struct MatcherTuple< ::std::tr1::tuple<A1, A2, A3, A4, A5> > {
+  typedef ::std::tr1::tuple<Matcher<A1>, Matcher<A2>, Matcher<A3>, Matcher<A4>,
+      Matcher<A5> > type;
+};
+
+template <typename A1, typename A2, typename A3, typename A4, typename A5,
+    typename A6>
+struct MatcherTuple< ::std::tr1::tuple<A1, A2, A3, A4, A5, A6> > {
+  typedef ::std::tr1::tuple<Matcher<A1>, Matcher<A2>, Matcher<A3>, Matcher<A4>,
+      Matcher<A5>, Matcher<A6> > type;
+};
+
+template <typename A1, typename A2, typename A3, typename A4, typename A5,
+    typename A6, typename A7>
+struct MatcherTuple< ::std::tr1::tuple<A1, A2, A3, A4, A5, A6, A7> > {
+  typedef ::std::tr1::tuple<Matcher<A1>, Matcher<A2>, Matcher<A3>, Matcher<A4>,
+      Matcher<A5>, Matcher<A6>, Matcher<A7> > type;
+};
+
+template <typename A1, typename A2, typename A3, typename A4, typename A5,
+    typename A6, typename A7, typename A8>
+struct MatcherTuple< ::std::tr1::tuple<A1, A2, A3, A4, A5, A6, A7, A8> > {
+  typedef ::std::tr1::tuple<Matcher<A1>, Matcher<A2>, Matcher<A3>, Matcher<A4>,
+      Matcher<A5>, Matcher<A6>, Matcher<A7>, Matcher<A8> > type;
+};
+
+template <typename A1, typename A2, typename A3, typename A4, typename A5,
+    typename A6, typename A7, typename A8, typename A9>
+struct MatcherTuple< ::std::tr1::tuple<A1, A2, A3, A4, A5, A6, A7, A8, A9> > {
+  typedef ::std::tr1::tuple<Matcher<A1>, Matcher<A2>, Matcher<A3>, Matcher<A4>,
+      Matcher<A5>, Matcher<A6>, Matcher<A7>, Matcher<A8>, Matcher<A9> > type;
+};
+
+template <typename A1, typename A2, typename A3, typename A4, typename A5,
+    typename A6, typename A7, typename A8, typename A9, typename A10>
+struct MatcherTuple< ::std::tr1::tuple<A1, A2, A3, A4, A5, A6, A7, A8, A9,
+    A10> > {
+  typedef ::std::tr1::tuple<Matcher<A1>, Matcher<A2>, Matcher<A3>, Matcher<A4>,
+      Matcher<A5>, Matcher<A6>, Matcher<A7>, Matcher<A8>, Matcher<A9>,
+      Matcher<A10> > type;
+};
+
+// Template struct Function<F>, where F must be a function type, contains
+// the following typedefs:
+//
+//   Result:               the function's return type.
+//   ArgumentN:            the type of the N-th argument, where N starts with 1.
+//   ArgumentTuple:        the tuple type consisting of all parameters of F.
+//   ArgumentMatcherTuple: the tuple type consisting of Matchers for all
+//                         parameters of F.
+//   MakeResultVoid:       the function type obtained by substituting void
+//                         for the return type of F.
+//   MakeResultIgnoredValue:
+//                         the function type obtained by substituting Something
+//                         for the return type of F.
+template <typename F>
+struct Function;
+
+template <typename R>
+struct Function<R()> {
+  typedef R Result;
+  typedef ::std::tr1::tuple<> ArgumentTuple;
+  typedef typename MatcherTuple<ArgumentTuple>::type ArgumentMatcherTuple;
+  typedef void MakeResultVoid();
+  typedef IgnoredValue MakeResultIgnoredValue();
+};
+
+template <typename R, typename A1>
+struct Function<R(A1)>
+    : Function<R()> {
+  typedef A1 Argument1;
+  typedef ::std::tr1::tuple<A1> ArgumentTuple;
+  typedef typename MatcherTuple<ArgumentTuple>::type ArgumentMatcherTuple;
+  typedef void MakeResultVoid(A1);
+  typedef IgnoredValue MakeResultIgnoredValue(A1);
+};
+
+template <typename R, typename A1, typename A2>
+struct Function<R(A1, A2)>
+    : Function<R(A1)> {
+  typedef A2 Argument2;
+  typedef ::std::tr1::tuple<A1, A2> ArgumentTuple;
+  typedef typename MatcherTuple<ArgumentTuple>::type ArgumentMatcherTuple;
+  typedef void MakeResultVoid(A1, A2);
+  typedef IgnoredValue MakeResultIgnoredValue(A1, A2);
+};
+
+template <typename R, typename A1, typename A2, typename A3>
+struct Function<R(A1, A2, A3)>
+    : Function<R(A1, A2)> {
+  typedef A3 Argument3;
+  typedef ::std::tr1::tuple<A1, A2, A3> ArgumentTuple;
+  typedef typename MatcherTuple<ArgumentTuple>::type ArgumentMatcherTuple;
+  typedef void MakeResultVoid(A1, A2, A3);
+  typedef IgnoredValue MakeResultIgnoredValue(A1, A2, A3);
+};
+
+template <typename R, typename A1, typename A2, typename A3, typename A4>
+struct Function<R(A1, A2, A3, A4)>
+    : Function<R(A1, A2, A3)> {
+  typedef A4 Argument4;
+  typedef ::std::tr1::tuple<A1, A2, A3, A4> ArgumentTuple;
+  typedef typename MatcherTuple<ArgumentTuple>::type ArgumentMatcherTuple;
+  typedef void MakeResultVoid(A1, A2, A3, A4);
+  typedef IgnoredValue MakeResultIgnoredValue(A1, A2, A3, A4);
+};
+
+template <typename R, typename A1, typename A2, typename A3, typename A4,
+    typename A5>
+struct Function<R(A1, A2, A3, A4, A5)>
+    : Function<R(A1, A2, A3, A4)> {
+  typedef A5 Argument5;
+  typedef ::std::tr1::tuple<A1, A2, A3, A4, A5> ArgumentTuple;
+  typedef typename MatcherTuple<ArgumentTuple>::type ArgumentMatcherTuple;
+  typedef void MakeResultVoid(A1, A2, A3, A4, A5);
+  typedef IgnoredValue MakeResultIgnoredValue(A1, A2, A3, A4, A5);
+};
+
+template <typename R, typename A1, typename A2, typename A3, typename A4,
+    typename A5, typename A6>
+struct Function<R(A1, A2, A3, A4, A5, A6)>
+    : Function<R(A1, A2, A3, A4, A5)> {
+  typedef A6 Argument6;
+  typedef ::std::tr1::tuple<A1, A2, A3, A4, A5, A6> ArgumentTuple;
+  typedef typename MatcherTuple<ArgumentTuple>::type ArgumentMatcherTuple;
+  typedef void MakeResultVoid(A1, A2, A3, A4, A5, A6);
+  typedef IgnoredValue MakeResultIgnoredValue(A1, A2, A3, A4, A5, A6);
+};
+
+template <typename R, typename A1, typename A2, typename A3, typename A4,
+    typename A5, typename A6, typename A7>
+struct Function<R(A1, A2, A3, A4, A5, A6, A7)>
+    : Function<R(A1, A2, A3, A4, A5, A6)> {
+  typedef A7 Argument7;
+  typedef ::std::tr1::tuple<A1, A2, A3, A4, A5, A6, A7> ArgumentTuple;
+  typedef typename MatcherTuple<ArgumentTuple>::type ArgumentMatcherTuple;
+  typedef void MakeResultVoid(A1, A2, A3, A4, A5, A6, A7);
+  typedef IgnoredValue MakeResultIgnoredValue(A1, A2, A3, A4, A5, A6, A7);
+};
+
+template <typename R, typename A1, typename A2, typename A3, typename A4,
+    typename A5, typename A6, typename A7, typename A8>
+struct Function<R(A1, A2, A3, A4, A5, A6, A7, A8)>
+    : Function<R(A1, A2, A3, A4, A5, A6, A7)> {
+  typedef A8 Argument8;
+  typedef ::std::tr1::tuple<A1, A2, A3, A4, A5, A6, A7, A8> ArgumentTuple;
+  typedef typename MatcherTuple<ArgumentTuple>::type ArgumentMatcherTuple;
+  typedef void MakeResultVoid(A1, A2, A3, A4, A5, A6, A7, A8);
+  typedef IgnoredValue MakeResultIgnoredValue(A1, A2, A3, A4, A5, A6, A7, A8);
+};
+
+template <typename R, typename A1, typename A2, typename A3, typename A4,
+    typename A5, typename A6, typename A7, typename A8, typename A9>
+struct Function<R(A1, A2, A3, A4, A5, A6, A7, A8, A9)>
+    : Function<R(A1, A2, A3, A4, A5, A6, A7, A8)> {
+  typedef A9 Argument9;
+  typedef ::std::tr1::tuple<A1, A2, A3, A4, A5, A6, A7, A8, A9> ArgumentTuple;
+  typedef typename MatcherTuple<ArgumentTuple>::type ArgumentMatcherTuple;
+  typedef void MakeResultVoid(A1, A2, A3, A4, A5, A6, A7, A8, A9);
+  typedef IgnoredValue MakeResultIgnoredValue(A1, A2, A3, A4, A5, A6, A7, A8,
+      A9);
+};
+
+template <typename R, typename A1, typename A2, typename A3, typename A4,
+    typename A5, typename A6, typename A7, typename A8, typename A9,
+    typename A10>
+struct Function<R(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10)>
+    : Function<R(A1, A2, A3, A4, A5, A6, A7, A8, A9)> {
+  typedef A10 Argument10;
+  typedef ::std::tr1::tuple<A1, A2, A3, A4, A5, A6, A7, A8, A9,
+      A10> ArgumentTuple;
+  typedef typename MatcherTuple<ArgumentTuple>::type ArgumentMatcherTuple;
+  typedef void MakeResultVoid(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10);
+  typedef IgnoredValue MakeResultIgnoredValue(A1, A2, A3, A4, A5, A6, A7, A8,
+      A9, A10);
+};
+
+}  // namespace internal
+
+}  // namespace testing
+
+#endif  // GMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_GENERATED_INTERNAL_UTILS_H_
diff --git a/google-breakpad/src/testing/include/gmock/internal/gmock-generated-internal-utils.h.pump b/google-breakpad/src/testing/include/gmock/internal/gmock-generated-internal-utils.h.pump
new file mode 100644
index 0000000..e7ecc8b
--- /dev/null
+++ b/google-breakpad/src/testing/include/gmock/internal/gmock-generated-internal-utils.h.pump
@@ -0,0 +1,136 @@
+$$ -*- mode: c++; -*-
+$$ This is a Pump source file.  Please use Pump to convert it to
+$$ gmock-generated-function-mockers.h.
+$$
+$var n = 10  $$ The maximum arity we support.
+// Copyright 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Google Mock - a framework for writing C++ mock classes.
+//
+// This file contains template meta-programming utility classes needed
+// for implementing Google Mock.
+
+#ifndef GMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_GENERATED_INTERNAL_UTILS_H_
+#define GMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_GENERATED_INTERNAL_UTILS_H_
+
+#include "gmock/internal/gmock-port.h"
+
+namespace testing {
+
+template <typename T>
+class Matcher;
+
+namespace internal {
+
+// An IgnoredValue object can be implicitly constructed from ANY value.
+// This is used in implementing the IgnoreResult(a) action.
+class IgnoredValue {
+ public:
+  // This constructor template allows any value to be implicitly
+  // converted to IgnoredValue.  The object has no data member and
+  // doesn't try to remember anything about the argument.  We
+  // deliberately omit the 'explicit' keyword in order to allow the
+  // conversion to be implicit.
+  template <typename T>
+  IgnoredValue(const T& /* ignored */) {}  // NOLINT(runtime/explicit)
+};
+
+// MatcherTuple<T>::type is a tuple type where each field is a Matcher
+// for the corresponding field in tuple type T.
+template <typename Tuple>
+struct MatcherTuple;
+
+
+$range i 0..n
+$for i [[
+$range j 1..i
+$var typename_As = [[$for j, [[typename A$j]]]]
+$var As = [[$for j, [[A$j]]]]
+$var matcher_As = [[$for j, [[Matcher<A$j>]]]]
+template <$typename_As>
+struct MatcherTuple< ::std::tr1::tuple<$As> > {
+  typedef ::std::tr1::tuple<$matcher_As > type;
+};
+
+
+]]
+// Template struct Function<F>, where F must be a function type, contains
+// the following typedefs:
+//
+//   Result:               the function's return type.
+//   ArgumentN:            the type of the N-th argument, where N starts with 1.
+//   ArgumentTuple:        the tuple type consisting of all parameters of F.
+//   ArgumentMatcherTuple: the tuple type consisting of Matchers for all
+//                         parameters of F.
+//   MakeResultVoid:       the function type obtained by substituting void
+//                         for the return type of F.
+//   MakeResultIgnoredValue:
+//                         the function type obtained by substituting Something
+//                         for the return type of F.
+template <typename F>
+struct Function;
+
+template <typename R>
+struct Function<R()> {
+  typedef R Result;
+  typedef ::std::tr1::tuple<> ArgumentTuple;
+  typedef typename MatcherTuple<ArgumentTuple>::type ArgumentMatcherTuple;
+  typedef void MakeResultVoid();
+  typedef IgnoredValue MakeResultIgnoredValue();
+};
+
+
+$range i 1..n
+$for i [[
+$range j 1..i
+$var typename_As = [[$for j [[, typename A$j]]]]
+$var As = [[$for j, [[A$j]]]]
+$var matcher_As = [[$for j, [[Matcher<A$j>]]]]
+$range k 1..i-1
+$var prev_As = [[$for k, [[A$k]]]]
+template <typename R$typename_As>
+struct Function<R($As)>
+    : Function<R($prev_As)> {
+  typedef A$i Argument$i;
+  typedef ::std::tr1::tuple<$As> ArgumentTuple;
+  typedef typename MatcherTuple<ArgumentTuple>::type ArgumentMatcherTuple;
+  typedef void MakeResultVoid($As);
+  typedef IgnoredValue MakeResultIgnoredValue($As);
+};
+
+
+]]
+}  // namespace internal
+
+}  // namespace testing
+
+#endif  // GMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_GENERATED_INTERNAL_UTILS_H_
diff --git a/google-breakpad/src/testing/include/gmock/internal/gmock-internal-utils.h b/google-breakpad/src/testing/include/gmock/internal/gmock-internal-utils.h
new file mode 100644
index 0000000..d63fb22
--- /dev/null
+++ b/google-breakpad/src/testing/include/gmock/internal/gmock-internal-utils.h
@@ -0,0 +1,471 @@
+// Copyright 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Google Mock - a framework for writing C++ mock classes.
+//
+// This file defines some utilities useful for implementing Google
+// Mock.  They are subject to change without notice, so please DO NOT
+// USE THEM IN USER CODE.
+
+#ifndef GMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_INTERNAL_UTILS_H_
+#define GMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_INTERNAL_UTILS_H_
+
+#include <stdio.h>
+#include <ostream>  // NOLINT
+#include <string>
+
+#include "gmock/internal/gmock-generated-internal-utils.h"
+#include "gmock/internal/gmock-port.h"
+#include "gtest/gtest.h"
+
+namespace testing {
+namespace internal {
+
+// Converts an identifier name to a space-separated list of lower-case
+// words.  Each maximum substring of the form [A-Za-z][a-z]*|\d+ is
+// treated as one word.  For example, both "FooBar123" and
+// "foo_bar_123" are converted to "foo bar 123".
+GTEST_API_ string ConvertIdentifierNameToWords(const char* id_name);
+
+// PointeeOf<Pointer>::type is the type of a value pointed to by a
+// Pointer, which can be either a smart pointer or a raw pointer.  The
+// following default implementation is for the case where Pointer is a
+// smart pointer.
+template <typename Pointer>
+struct PointeeOf {
+  // Smart pointer classes define type element_type as the type of
+  // their pointees.
+  typedef typename Pointer::element_type type;
+};
+// This specialization is for the raw pointer case.
+template <typename T>
+struct PointeeOf<T*> { typedef T type; };  // NOLINT
+
+// GetRawPointer(p) returns the raw pointer underlying p when p is a
+// smart pointer, or returns p itself when p is already a raw pointer.
+// The following default implementation is for the smart pointer case.
+template <typename Pointer>
+inline const typename Pointer::element_type* GetRawPointer(const Pointer& p) {
+  return p.get();
+}
+// This overloaded version is for the raw pointer case.
+template <typename Element>
+inline Element* GetRawPointer(Element* p) { return p; }
+
+// This comparator allows linked_ptr to be stored in sets.
+template <typename T>
+struct LinkedPtrLessThan {
+  bool operator()(const ::testing::internal::linked_ptr<T>& lhs,
+                  const ::testing::internal::linked_ptr<T>& rhs) const {
+    return lhs.get() < rhs.get();
+  }
+};
+
+// Symbian compilation can be done with wchar_t being either a native
+// type or a typedef.  Using Google Mock with OpenC without wchar_t
+// should require the definition of _STLP_NO_WCHAR_T.
+//
+// MSVC treats wchar_t as a native type usually, but treats it as the
+// same as unsigned short when the compiler option /Zc:wchar_t- is
+// specified.  It defines _NATIVE_WCHAR_T_DEFINED symbol when wchar_t
+// is a native type.
+#if (GTEST_OS_SYMBIAN && defined(_STLP_NO_WCHAR_T)) || \
+    (defined(_MSC_VER) && !defined(_NATIVE_WCHAR_T_DEFINED))
+// wchar_t is a typedef.
+#else
+# define GMOCK_WCHAR_T_IS_NATIVE_ 1
+#endif
+
+// signed wchar_t and unsigned wchar_t are NOT in the C++ standard.
+// Using them is a bad practice and not portable.  So DON'T use them.
+//
+// Still, Google Mock is designed to work even if the user uses signed
+// wchar_t or unsigned wchar_t (obviously, assuming the compiler
+// supports them).
+//
+// To gcc,
+//   wchar_t == signed wchar_t != unsigned wchar_t == unsigned int
+#ifdef __GNUC__
+// signed/unsigned wchar_t are valid types.
+# define GMOCK_HAS_SIGNED_WCHAR_T_ 1
+#endif
+
+// In what follows, we use the term "kind" to indicate whether a type
+// is bool, an integer type (excluding bool), a floating-point type,
+// or none of them.  This categorization is useful for determining
+// when a matcher argument type can be safely converted to another
+// type in the implementation of SafeMatcherCast.
+enum TypeKind {
+  kBool, kInteger, kFloatingPoint, kOther
+};
+
+// KindOf<T>::value is the kind of type T.
+template <typename T> struct KindOf {
+  enum { value = kOther };  // The default kind.
+};
+
+// This macro declares that the kind of 'type' is 'kind'.
+#define GMOCK_DECLARE_KIND_(type, kind) \
+  template <> struct KindOf<type> { enum { value = kind }; }
+
+GMOCK_DECLARE_KIND_(bool, kBool);
+
+// All standard integer types.
+GMOCK_DECLARE_KIND_(char, kInteger);
+GMOCK_DECLARE_KIND_(signed char, kInteger);
+GMOCK_DECLARE_KIND_(unsigned char, kInteger);
+GMOCK_DECLARE_KIND_(short, kInteger);  // NOLINT
+GMOCK_DECLARE_KIND_(unsigned short, kInteger);  // NOLINT
+GMOCK_DECLARE_KIND_(int, kInteger);
+GMOCK_DECLARE_KIND_(unsigned int, kInteger);
+GMOCK_DECLARE_KIND_(long, kInteger);  // NOLINT
+GMOCK_DECLARE_KIND_(unsigned long, kInteger);  // NOLINT
+
+#if GMOCK_WCHAR_T_IS_NATIVE_
+GMOCK_DECLARE_KIND_(wchar_t, kInteger);
+#endif
+
+// Non-standard integer types.
+GMOCK_DECLARE_KIND_(Int64, kInteger);
+GMOCK_DECLARE_KIND_(UInt64, kInteger);
+
+// All standard floating-point types.
+GMOCK_DECLARE_KIND_(float, kFloatingPoint);
+GMOCK_DECLARE_KIND_(double, kFloatingPoint);
+GMOCK_DECLARE_KIND_(long double, kFloatingPoint);
+
+#undef GMOCK_DECLARE_KIND_
+
+// Evaluates to the kind of 'type'.
+#define GMOCK_KIND_OF_(type) \
+  static_cast< ::testing::internal::TypeKind>( \
+      ::testing::internal::KindOf<type>::value)
+
+// Evaluates to true iff integer type T is signed.
+#define GMOCK_IS_SIGNED_(T) (static_cast<T>(-1) < 0)
+
+// LosslessArithmeticConvertibleImpl<kFromKind, From, kToKind, To>::value
+// is true iff arithmetic type From can be losslessly converted to
+// arithmetic type To.
+//
+// It's the user's responsibility to ensure that both From and To are
+// raw (i.e. has no CV modifier, is not a pointer, and is not a
+// reference) built-in arithmetic types, kFromKind is the kind of
+// From, and kToKind is the kind of To; the value is
+// implementation-defined when the above pre-condition is violated.
+template <TypeKind kFromKind, typename From, TypeKind kToKind, typename To>
+struct LosslessArithmeticConvertibleImpl : public false_type {};
+
+// Converting bool to bool is lossless.
+template <>
+struct LosslessArithmeticConvertibleImpl<kBool, bool, kBool, bool>
+    : public true_type {};  // NOLINT
+
+// Converting bool to any integer type is lossless.
+template <typename To>
+struct LosslessArithmeticConvertibleImpl<kBool, bool, kInteger, To>
+    : public true_type {};  // NOLINT
+
+// Converting bool to any floating-point type is lossless.
+template <typename To>
+struct LosslessArithmeticConvertibleImpl<kBool, bool, kFloatingPoint, To>
+    : public true_type {};  // NOLINT
+
+// Converting an integer to bool is lossy.
+template <typename From>
+struct LosslessArithmeticConvertibleImpl<kInteger, From, kBool, bool>
+    : public false_type {};  // NOLINT
+
+// Converting an integer to another non-bool integer is lossless iff
+// the target type's range encloses the source type's range.
+template <typename From, typename To>
+struct LosslessArithmeticConvertibleImpl<kInteger, From, kInteger, To>
+    : public bool_constant<
+      // When converting from a smaller size to a larger size, we are
+      // fine as long as we are not converting from signed to unsigned.
+      ((sizeof(From) < sizeof(To)) &&
+       (!GMOCK_IS_SIGNED_(From) || GMOCK_IS_SIGNED_(To))) ||
+      // When converting between the same size, the signedness must match.
+      ((sizeof(From) == sizeof(To)) &&
+       (GMOCK_IS_SIGNED_(From) == GMOCK_IS_SIGNED_(To)))> {};  // NOLINT
+
+#undef GMOCK_IS_SIGNED_
+
+// Converting an integer to a floating-point type may be lossy, since
+// the format of a floating-point number is implementation-defined.
+template <typename From, typename To>
+struct LosslessArithmeticConvertibleImpl<kInteger, From, kFloatingPoint, To>
+    : public false_type {};  // NOLINT
+
+// Converting a floating-point to bool is lossy.
+template <typename From>
+struct LosslessArithmeticConvertibleImpl<kFloatingPoint, From, kBool, bool>
+    : public false_type {};  // NOLINT
+
+// Converting a floating-point to an integer is lossy.
+template <typename From, typename To>
+struct LosslessArithmeticConvertibleImpl<kFloatingPoint, From, kInteger, To>
+    : public false_type {};  // NOLINT
+
+// Converting a floating-point to another floating-point is lossless
+// iff the target type is at least as big as the source type.
+template <typename From, typename To>
+struct LosslessArithmeticConvertibleImpl<
+  kFloatingPoint, From, kFloatingPoint, To>
+    : public bool_constant<sizeof(From) <= sizeof(To)> {};  // NOLINT
+
+// LosslessArithmeticConvertible<From, To>::value is true iff arithmetic
+// type From can be losslessly converted to arithmetic type To.
+//
+// It's the user's responsibility to ensure that both From and To are
+// raw (i.e. has no CV modifier, is not a pointer, and is not a
+// reference) built-in arithmetic types; the value is
+// implementation-defined when the above pre-condition is violated.
+template <typename From, typename To>
+struct LosslessArithmeticConvertible
+    : public LosslessArithmeticConvertibleImpl<
+  GMOCK_KIND_OF_(From), From, GMOCK_KIND_OF_(To), To> {};  // NOLINT
+
+// This interface knows how to report a Google Mock failure (either
+// non-fatal or fatal).
+class FailureReporterInterface {
+ public:
+  // The type of a failure (either non-fatal or fatal).
+  enum FailureType {
+    kNonfatal, kFatal
+  };
+
+  virtual ~FailureReporterInterface() {}
+
+  // Reports a failure that occurred at the given source file location.
+  virtual void ReportFailure(FailureType type, const char* file, int line,
+                             const string& message) = 0;
+};
+
+// Returns the failure reporter used by Google Mock.
+GTEST_API_ FailureReporterInterface* GetFailureReporter();
+
+// Asserts that condition is true; aborts the process with the given
+// message if condition is false.  We cannot use LOG(FATAL) or CHECK()
+// as Google Mock might be used to mock the log sink itself.  We
+// inline this function to prevent it from showing up in the stack
+// trace.
+inline void Assert(bool condition, const char* file, int line,
+                   const string& msg) {
+  if (!condition) {
+    GetFailureReporter()->ReportFailure(FailureReporterInterface::kFatal,
+                                        file, line, msg);
+  }
+}
+inline void Assert(bool condition, const char* file, int line) {
+  Assert(condition, file, line, "Assertion failed.");
+}
+
+// Verifies that condition is true; generates a non-fatal failure if
+// condition is false.
+inline void Expect(bool condition, const char* file, int line,
+                   const string& msg) {
+  if (!condition) {
+    GetFailureReporter()->ReportFailure(FailureReporterInterface::kNonfatal,
+                                        file, line, msg);
+  }
+}
+inline void Expect(bool condition, const char* file, int line) {
+  Expect(condition, file, line, "Expectation failed.");
+}
+
+// Severity level of a log.
+enum LogSeverity {
+  kInfo = 0,
+  kWarning = 1
+};
+
+// Valid values for the --gmock_verbose flag.
+
+// All logs (informational and warnings) are printed.
+const char kInfoVerbosity[] = "info";
+// Only warnings are printed.
+const char kWarningVerbosity[] = "warning";
+// No logs are printed.
+const char kErrorVerbosity[] = "error";
+
+// Returns true iff a log with the given severity is visible according
+// to the --gmock_verbose flag.
+GTEST_API_ bool LogIsVisible(LogSeverity severity);
+
+// Prints the given message to stdout iff 'severity' >= the level
+// specified by the --gmock_verbose flag.  If stack_frames_to_skip >=
+// 0, also prints the stack trace excluding the top
+// stack_frames_to_skip frames.  In opt mode, any positive
+// stack_frames_to_skip is treated as 0, since we don't know which
+// function calls will be inlined by the compiler and need to be
+// conservative.
+GTEST_API_ void Log(LogSeverity severity,
+                    const string& message,
+                    int stack_frames_to_skip);
+
+// TODO(wan@google.com): group all type utilities together.
+
+// Type traits.
+
+// is_reference<T>::value is non-zero iff T is a reference type.
+template <typename T> struct is_reference : public false_type {};
+template <typename T> struct is_reference<T&> : public true_type {};
+
+// type_equals<T1, T2>::value is non-zero iff T1 and T2 are the same type.
+template <typename T1, typename T2> struct type_equals : public false_type {};
+template <typename T> struct type_equals<T, T> : public true_type {};
+
+// remove_reference<T>::type removes the reference from type T, if any.
+template <typename T> struct remove_reference { typedef T type; };  // NOLINT
+template <typename T> struct remove_reference<T&> { typedef T type; }; // NOLINT
+
+// Invalid<T>() returns an invalid value of type T.  This is useful
+// when a value of type T is needed for compilation, but the statement
+// will not really be executed (or we don't care if the statement
+// crashes).
+template <typename T>
+inline T Invalid() {
+  return const_cast<typename remove_reference<T>::type&>(
+      *static_cast<volatile typename remove_reference<T>::type*>(NULL));
+}
+template <>
+inline void Invalid<void>() {}
+
+// Given a raw type (i.e. having no top-level reference or const
+// modifier) RawContainer that's either an STL-style container or a
+// native array, class StlContainerView<RawContainer> has the
+// following members:
+//
+//   - type is a type that provides an STL-style container view to
+//     (i.e. implements the STL container concept for) RawContainer;
+//   - const_reference is a type that provides a reference to a const
+//     RawContainer;
+//   - ConstReference(raw_container) returns a const reference to an STL-style
+//     container view to raw_container, which is a RawContainer.
+//   - Copy(raw_container) returns an STL-style container view of a
+//     copy of raw_container, which is a RawContainer.
+//
+// This generic version is used when RawContainer itself is already an
+// STL-style container.
+template <class RawContainer>
+class StlContainerView {
+ public:
+  typedef RawContainer type;
+  typedef const type& const_reference;
+
+  static const_reference ConstReference(const RawContainer& container) {
+    // Ensures that RawContainer is not a const type.
+    testing::StaticAssertTypeEq<RawContainer,
+        GTEST_REMOVE_CONST_(RawContainer)>();
+    return container;
+  }
+  static type Copy(const RawContainer& container) { return container; }
+};
+
+// This specialization is used when RawContainer is a native array type.
+template <typename Element, size_t N>
+class StlContainerView<Element[N]> {
+ public:
+  typedef GTEST_REMOVE_CONST_(Element) RawElement;
+  typedef internal::NativeArray<RawElement> type;
+  // NativeArray<T> can represent a native array either by value or by
+  // reference (selected by a constructor argument), so 'const type'
+  // can be used to reference a const native array.  We cannot
+  // 'typedef const type& const_reference' here, as that would mean
+  // ConstReference() has to return a reference to a local variable.
+  typedef const type const_reference;
+
+  static const_reference ConstReference(const Element (&array)[N]) {
+    // Ensures that Element is not a const type.
+    testing::StaticAssertTypeEq<Element, RawElement>();
+#if GTEST_OS_SYMBIAN
+    // The Nokia Symbian compiler confuses itself in template instantiation
+    // for this call without the cast to Element*:
+    // function call '[testing::internal::NativeArray<char *>].NativeArray(
+    //     {lval} const char *[4], long, testing::internal::RelationToSource)'
+    //     does not match
+    // 'testing::internal::NativeArray<char *>::NativeArray(
+    //     char *const *, unsigned int, testing::internal::RelationToSource)'
+    // (instantiating: 'testing::internal::ContainsMatcherImpl
+    //     <const char * (&)[4]>::Matches(const char * (&)[4]) const')
+    // (instantiating: 'testing::internal::StlContainerView<char *[4]>::
+    //     ConstReference(const char * (&)[4])')
+    // (and though the N parameter type is mismatched in the above explicit
+    // conversion of it doesn't help - only the conversion of the array).
+    return type(const_cast<Element*>(&array[0]), N, kReference);
+#else
+    return type(array, N, kReference);
+#endif  // GTEST_OS_SYMBIAN
+  }
+  static type Copy(const Element (&array)[N]) {
+#if GTEST_OS_SYMBIAN
+    return type(const_cast<Element*>(&array[0]), N, kCopy);
+#else
+    return type(array, N, kCopy);
+#endif  // GTEST_OS_SYMBIAN
+  }
+};
+
+// This specialization is used when RawContainer is a native array
+// represented as a (pointer, size) tuple.
+template <typename ElementPointer, typename Size>
+class StlContainerView< ::std::tr1::tuple<ElementPointer, Size> > {
+ public:
+  typedef GTEST_REMOVE_CONST_(
+      typename internal::PointeeOf<ElementPointer>::type) RawElement;
+  typedef internal::NativeArray<RawElement> type;
+  typedef const type const_reference;
+
+  static const_reference ConstReference(
+      const ::std::tr1::tuple<ElementPointer, Size>& array) {
+    using ::std::tr1::get;
+    return type(get<0>(array), get<1>(array), kReference);
+  }
+  static type Copy(const ::std::tr1::tuple<ElementPointer, Size>& array) {
+    using ::std::tr1::get;
+    return type(get<0>(array), get<1>(array), kCopy);
+  }
+};
+
+// The following specialization prevents the user from instantiating
+// StlContainer with a reference type.
+template <typename T> class StlContainerView<T&>;
+
+// Mapping from booleans to types. Similar to boost::bool_<kValue> and
+// std::integral_constant<bool, kValue>.
+template <bool kValue>
+struct BooleanConstant {};
+
+}  // namespace internal
+}  // namespace testing
+
+#endif  // GMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_INTERNAL_UTILS_H_
diff --git a/google-breakpad/src/testing/include/gmock/internal/gmock-port.h b/google-breakpad/src/testing/include/gmock/internal/gmock-port.h
new file mode 100644
index 0000000..6a515d8
--- /dev/null
+++ b/google-breakpad/src/testing/include/gmock/internal/gmock-port.h
@@ -0,0 +1,78 @@
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: vadimb@google.com (Vadim Berman)
+//
+// Low-level types and utilities for porting Google Mock to various
+// platforms.  They are subject to change without notice.  DO NOT USE
+// THEM IN USER CODE.
+
+#ifndef GMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_PORT_H_
+#define GMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_PORT_H_
+
+#include <assert.h>
+#include <stdlib.h>
+#include <iostream>
+
+// Most of the types needed for porting Google Mock are also required
+// for Google Test and are defined in gtest-port.h.
+#include "gtest/internal/gtest-linked_ptr.h"
+#include "gtest/internal/gtest-port.h"
+
+// To avoid conditional compilation everywhere, we make it
+// gmock-port.h's responsibility to #include the header implementing
+// tr1/tuple.  gmock-port.h does this via gtest-port.h, which is
+// guaranteed to pull in the tuple header.
+
+// For MS Visual C++, check the compiler version. At least VS 2003 is
+// required to compile Google Mock.
+#if defined(_MSC_VER) && _MSC_VER < 1310
+# error "At least Visual C++ 2003 (7.1) is required to compile Google Mock."
+#endif
+
+// Macro for referencing flags.  This is public as we want the user to
+// use this syntax to reference Google Mock flags.
+#define GMOCK_FLAG(name) FLAGS_gmock_##name
+
+// Macros for declaring flags.
+#define GMOCK_DECLARE_bool_(name) extern GTEST_API_ bool GMOCK_FLAG(name)
+#define GMOCK_DECLARE_int32_(name) \
+    extern GTEST_API_ ::testing::internal::Int32 GMOCK_FLAG(name)
+#define GMOCK_DECLARE_string_(name) \
+    extern GTEST_API_ ::testing::internal::String GMOCK_FLAG(name)
+
+// Macros for defining flags.
+#define GMOCK_DEFINE_bool_(name, default_val, doc) \
+    GTEST_API_ bool GMOCK_FLAG(name) = (default_val)
+#define GMOCK_DEFINE_int32_(name, default_val, doc) \
+    GTEST_API_ ::testing::internal::Int32 GMOCK_FLAG(name) = (default_val)
+#define GMOCK_DEFINE_string_(name, default_val, doc) \
+    GTEST_API_ ::testing::internal::String GMOCK_FLAG(name) = (default_val)
+
+#endif  // GMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_PORT_H_
diff --git a/google-breakpad/src/testing/make/Makefile b/google-breakpad/src/testing/make/Makefile
new file mode 100644
index 0000000..6386e5b
--- /dev/null
+++ b/google-breakpad/src/testing/make/Makefile
@@ -0,0 +1,98 @@
+# A sample Makefile for building both Google Mock and Google Test and
+# using them in user tests.  This file is self-contained, so you don't
+# need to use the Makefile in Google Test's source tree.  Please tweak
+# it to suit your environment and project.  You may want to move it to
+# your project's root directory.
+#
+# SYNOPSIS:
+#
+#   make [all]  - makes everything.
+#   make TARGET - makes the given target.
+#   make clean  - removes all files generated by make.
+
+# Please tweak the following variable definitions as needed by your
+# project, except GMOCK_HEADERS and GTEST_HEADERS, which you can use
+# in your own targets but shouldn't modify.
+
+# Points to the root of Google Test, relative to where this file is.
+# Remember to tweak this if you move this file, or if you want to use
+# a copy of Google Test at a different location.
+GTEST_DIR = ../gtest
+
+# Points to the root of Google Mock, relative to where this file is.
+# Remember to tweak this if you move this file.
+GMOCK_DIR = ..
+
+# Where to find user code.
+USER_DIR = ../test
+
+# Flags passed to the preprocessor.
+CPPFLAGS += -I$(GTEST_DIR)/include -I$(GMOCK_DIR)/include
+
+# Flags passed to the C++ compiler.
+CXXFLAGS += -g -Wall -Wextra
+
+# All tests produced by this Makefile.  Remember to add new tests you
+# created to the list.
+TESTS = gmock_test
+
+# All Google Test headers.  Usually you shouldn't change this
+# definition.
+GTEST_HEADERS = $(GTEST_DIR)/include/gtest/*.h \
+                $(GTEST_DIR)/include/gtest/internal/*.h
+
+# All Google Mock headers. Note that all Google Test headers are
+# included here too, as they are #included by Google Mock headers.
+# Usually you shouldn't change this definition.	
+GMOCK_HEADERS = $(GMOCK_DIR)/include/gmock/*.h \
+                $(GMOCK_DIR)/include/gmock/internal/*.h \
+                $(GTEST_HEADERS)
+
+# House-keeping build targets.
+
+all : $(TESTS)
+
+clean :
+	rm -f $(TESTS) gmock.a gmock_main.a *.o
+
+# Builds gmock.a and gmock_main.a.  These libraries contain both
+# Google Mock and Google Test.  A test should link with either gmock.a
+# or gmock_main.a, depending on whether it defines its own main()
+# function.  It's fine if your test only uses features from Google
+# Test (and not Google Mock).
+
+# Usually you shouldn't tweak such internal variables, indicated by a
+# trailing _.
+GTEST_SRCS_ = $(GTEST_DIR)/src/*.cc $(GTEST_DIR)/src/*.h $(GTEST_HEADERS)
+GMOCK_SRCS_ = $(GMOCK_DIR)/src/*.cc $(GMOCK_HEADERS)
+
+# For simplicity and to avoid depending on implementation details of
+# Google Mock and Google Test, the dependencies specified below are
+# conservative and not optimized.  This is fine as Google Mock and
+# Google Test compile fast and for ordinary users their source rarely
+# changes.
+gtest-all.o : $(GTEST_SRCS_)
+	$(CXX) $(CPPFLAGS) -I$(GTEST_DIR) -I$(GMOCK_DIR) $(CXXFLAGS) \
+            -c $(GTEST_DIR)/src/gtest-all.cc
+
+gmock-all.o : $(GMOCK_SRCS_)
+	$(CXX) $(CPPFLAGS) -I$(GTEST_DIR) -I$(GMOCK_DIR) $(CXXFLAGS) \
+            -c $(GMOCK_DIR)/src/gmock-all.cc
+
+gmock_main.o : $(GMOCK_SRCS_)
+	$(CXX) $(CPPFLAGS) -I$(GTEST_DIR) -I$(GMOCK_DIR) $(CXXFLAGS) \
+            -c $(GMOCK_DIR)/src/gmock_main.cc
+
+gmock.a : gmock-all.o gtest-all.o
+	$(AR) $(ARFLAGS) $@ $^
+
+gmock_main.a : gmock-all.o gtest-all.o gmock_main.o
+	$(AR) $(ARFLAGS) $@ $^
+
+# Builds a sample test.
+
+gmock_test.o : $(USER_DIR)/gmock_test.cc $(GMOCK_HEADERS)
+	$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/gmock_test.cc
+
+gmock_test : gmock_test.o gmock_main.a
+	$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
diff --git a/google-breakpad/src/testing/msvc/2005/gmock.sln b/google-breakpad/src/testing/msvc/2005/gmock.sln
new file mode 100644
index 0000000..b752f87
--- /dev/null
+++ b/google-breakpad/src/testing/msvc/2005/gmock.sln
@@ -0,0 +1,32 @@
+﻿
+Microsoft Visual Studio Solution File, Format Version 9.00
+# Visual Studio 2005
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gmock", "gmock.vcproj", "{34681F0D-CE45-415D-B5F2-5C662DFE3BD5}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gmock_test", "gmock_test.vcproj", "{F10D22F8-AC7B-4213-8720-608E7D878CD2}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gmock_main", "gmock_main.vcproj", "{E4EF614B-30DF-4954-8C53-580A0BF6B589}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Win32 = Debug|Win32
+		Release|Win32 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{34681F0D-CE45-415D-B5F2-5C662DFE3BD5}.Debug|Win32.ActiveCfg = Debug|Win32
+		{34681F0D-CE45-415D-B5F2-5C662DFE3BD5}.Debug|Win32.Build.0 = Debug|Win32
+		{34681F0D-CE45-415D-B5F2-5C662DFE3BD5}.Release|Win32.ActiveCfg = Release|Win32
+		{34681F0D-CE45-415D-B5F2-5C662DFE3BD5}.Release|Win32.Build.0 = Release|Win32
+		{F10D22F8-AC7B-4213-8720-608E7D878CD2}.Debug|Win32.ActiveCfg = Debug|Win32
+		{F10D22F8-AC7B-4213-8720-608E7D878CD2}.Debug|Win32.Build.0 = Debug|Win32
+		{F10D22F8-AC7B-4213-8720-608E7D878CD2}.Release|Win32.ActiveCfg = Release|Win32
+		{F10D22F8-AC7B-4213-8720-608E7D878CD2}.Release|Win32.Build.0 = Release|Win32
+		{E4EF614B-30DF-4954-8C53-580A0BF6B589}.Debug|Win32.ActiveCfg = Debug|Win32
+		{E4EF614B-30DF-4954-8C53-580A0BF6B589}.Debug|Win32.Build.0 = Debug|Win32
+		{E4EF614B-30DF-4954-8C53-580A0BF6B589}.Release|Win32.ActiveCfg = Release|Win32
+		{E4EF614B-30DF-4954-8C53-580A0BF6B589}.Release|Win32.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
diff --git a/google-breakpad/src/testing/msvc/2005/gmock.vcproj b/google-breakpad/src/testing/msvc/2005/gmock.vcproj
new file mode 100644
index 0000000..4bbfe98
--- /dev/null
+++ b/google-breakpad/src/testing/msvc/2005/gmock.vcproj
@@ -0,0 +1,191 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="8.00"
+	Name="gmock"
+	ProjectGUID="{34681F0D-CE45-415D-B5F2-5C662DFE3BD5}"
+	RootNamespace="gmock"
+	Keyword="Win32Proj"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(OutDir)\$(ProjectName)"
+			ConfigurationType="4"
+			InheritedPropertySheets=".\gmock_config.vsprops"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\include;..\.."
+				PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="1"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLibrarianTool"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(OutDir)\$(ProjectName)"
+			ConfigurationType="4"
+			InheritedPropertySheets=".\gmock_config.vsprops"
+			CharacterSet="1"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="..\..\include;..\.."
+				PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
+				RuntimeLibrary="0"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLibrarianTool"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\src\gmock-all.cc"
+				>
+			</File>
+			<File
+				RelativePath="$(GTestDir)\src\gtest-all.cc"
+				>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						AdditionalIncludeDirectories="$(GTestDir)"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						AdditionalIncludeDirectories="$(GTestDir)"
+					/>
+				</FileConfiguration>
+			</File>
+		</Filter>
+		<Filter
+			Name="Public Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+		</Filter>
+		<Filter
+			Name="Private Header Files"
+			>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/google-breakpad/src/testing/msvc/2005/gmock_config.vsprops b/google-breakpad/src/testing/msvc/2005/gmock_config.vsprops
new file mode 100644
index 0000000..8b65cfb
--- /dev/null
+++ b/google-breakpad/src/testing/msvc/2005/gmock_config.vsprops
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioPropertySheet
+	ProjectType="Visual C++"
+	Version="8.00"
+	Name="gmock_config"
+	>
+	<Tool
+		Name="VCCLCompilerTool"
+		AdditionalIncludeDirectories="&quot;$(GTestDir)/include&quot;"
+	/>
+	<UserMacro
+		Name="GTestDir"
+		Value="../../gtest"
+	/>
+</VisualStudioPropertySheet>
diff --git a/google-breakpad/src/testing/msvc/2005/gmock_main.vcproj b/google-breakpad/src/testing/msvc/2005/gmock_main.vcproj
new file mode 100644
index 0000000..01505a9
--- /dev/null
+++ b/google-breakpad/src/testing/msvc/2005/gmock_main.vcproj
@@ -0,0 +1,187 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="8.00"
+	Name="gmock_main"
+	ProjectGUID="{E4EF614B-30DF-4954-8C53-580A0BF6B589}"
+	RootNamespace="gmock_main"
+	Keyword="Win32Proj"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(OutDir)\$(ProjectName)"
+			ConfigurationType="4"
+			InheritedPropertySheets=".\gmock_config.vsprops"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="../../include"
+				PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="1"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLibrarianTool"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(OutDir)\$(ProjectName)"
+			ConfigurationType="4"
+			InheritedPropertySheets=".\gmock_config.vsprops"
+			CharacterSet="1"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="../../include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
+				RuntimeLibrary="0"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLibrarianTool"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+		<ProjectReference
+			ReferencedProjectIdentifier="{34681F0D-CE45-415D-B5F2-5C662DFE3BD5}"
+			RelativePathToProject=".\gmock.vcproj"
+		/>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\src\gmock_main.cc"
+				>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						AdditionalIncludeDirectories="../../include"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						AdditionalIncludeDirectories="../../include"
+					/>
+				</FileConfiguration>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/google-breakpad/src/testing/msvc/2005/gmock_test.vcproj b/google-breakpad/src/testing/msvc/2005/gmock_test.vcproj
new file mode 100644
index 0000000..d1e01e7
--- /dev/null
+++ b/google-breakpad/src/testing/msvc/2005/gmock_test.vcproj
@@ -0,0 +1,201 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="8.00"
+	Name="gmock_test"
+	ProjectGUID="{F10D22F8-AC7B-4213-8720-608E7D878CD2}"
+	RootNamespace="gmock_test"
+	Keyword="Win32Proj"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(OutDir)\$(ProjectName)"
+			ConfigurationType="1"
+			InheritedPropertySheets=".\gmock_config.vsprops"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalOptions="/bigobj"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\include;..\.."
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="1"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				LinkIncremental="2"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(OutDir)\$(ProjectName)"
+			ConfigurationType="1"
+			InheritedPropertySheets=".\gmock_config.vsprops"
+			CharacterSet="1"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalOptions="/bigobj"
+				AdditionalIncludeDirectories="..\..\include;..\.."
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="0"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				LinkIncremental="1"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+		<ProjectReference
+			ReferencedProjectIdentifier="{E4EF614B-30DF-4954-8C53-580A0BF6B589}"
+			RelativePathToProject=".\gmock_main.vcproj"
+		/>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\test\gmock_all_test.cc"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/google-breakpad/src/testing/msvc/2010/gmock.sln b/google-breakpad/src/testing/msvc/2010/gmock.sln
new file mode 100644
index 0000000..d949656
--- /dev/null
+++ b/google-breakpad/src/testing/msvc/2010/gmock.sln
@@ -0,0 +1,32 @@
+﻿
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual C++ Express 2010
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gmock", "gmock.vcxproj", "{34681F0D-CE45-415D-B5F2-5C662DFE3BD5}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gmock_test", "gmock_test.vcxproj", "{F10D22F8-AC7B-4213-8720-608E7D878CD2}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gmock_main", "gmock_main.vcxproj", "{E4EF614B-30DF-4954-8C53-580A0BF6B589}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Win32 = Debug|Win32
+		Release|Win32 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{34681F0D-CE45-415D-B5F2-5C662DFE3BD5}.Debug|Win32.ActiveCfg = Debug|Win32
+		{34681F0D-CE45-415D-B5F2-5C662DFE3BD5}.Debug|Win32.Build.0 = Debug|Win32
+		{34681F0D-CE45-415D-B5F2-5C662DFE3BD5}.Release|Win32.ActiveCfg = Release|Win32
+		{34681F0D-CE45-415D-B5F2-5C662DFE3BD5}.Release|Win32.Build.0 = Release|Win32
+		{F10D22F8-AC7B-4213-8720-608E7D878CD2}.Debug|Win32.ActiveCfg = Debug|Win32
+		{F10D22F8-AC7B-4213-8720-608E7D878CD2}.Debug|Win32.Build.0 = Debug|Win32
+		{F10D22F8-AC7B-4213-8720-608E7D878CD2}.Release|Win32.ActiveCfg = Release|Win32
+		{F10D22F8-AC7B-4213-8720-608E7D878CD2}.Release|Win32.Build.0 = Release|Win32
+		{E4EF614B-30DF-4954-8C53-580A0BF6B589}.Debug|Win32.ActiveCfg = Debug|Win32
+		{E4EF614B-30DF-4954-8C53-580A0BF6B589}.Debug|Win32.Build.0 = Debug|Win32
+		{E4EF614B-30DF-4954-8C53-580A0BF6B589}.Release|Win32.ActiveCfg = Release|Win32
+		{E4EF614B-30DF-4954-8C53-580A0BF6B589}.Release|Win32.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
diff --git a/google-breakpad/src/testing/msvc/2010/gmock.vcxproj b/google-breakpad/src/testing/msvc/2010/gmock.vcxproj
new file mode 100644
index 0000000..21a85ef
--- /dev/null
+++ b/google-breakpad/src/testing/msvc/2010/gmock.vcxproj
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{34681F0D-CE45-415D-B5F2-5C662DFE3BD5}</ProjectGuid>
+    <RootNamespace>gmock</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="gmock_config.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="gmock_config.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(OutDir)$(ProjectName)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(OutDir)$(ProjectName)\</IntDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\include;..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\include;..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\src\gmock-all.cc" />
+    <ClCompile Include="$(GTestDir)\src\gtest-all.cc">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(GTestDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(GTestDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
diff --git a/google-breakpad/src/testing/msvc/2010/gmock_config.props b/google-breakpad/src/testing/msvc/2010/gmock_config.props
new file mode 100644
index 0000000..bd497f1
--- /dev/null
+++ b/google-breakpad/src/testing/msvc/2010/gmock_config.props
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup Label="UserMacros">
+    <GTestDir>../../gtest</GTestDir>
+  </PropertyGroup>
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+  </PropertyGroup>
+  <ItemDefinitionGroup>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GTestDir)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <BuildMacro Include="GTestDir">
+      <Value>$(GTestDir)</Value>
+    </BuildMacro>
+  </ItemGroup>
+</Project>
diff --git a/google-breakpad/src/testing/msvc/2010/gmock_main.vcxproj b/google-breakpad/src/testing/msvc/2010/gmock_main.vcxproj
new file mode 100644
index 0000000..27fecd5
--- /dev/null
+++ b/google-breakpad/src/testing/msvc/2010/gmock_main.vcxproj
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{E4EF614B-30DF-4954-8C53-580A0BF6B589}</ProjectGuid>
+    <RootNamespace>gmock_main</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="gmock_config.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="gmock_config.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(OutDir)$(ProjectName)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(OutDir)$(ProjectName)\</IntDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ProjectReference Include="gmock.vcxproj">
+      <Project>{34681f0d-ce45-415d-b5f2-5c662dfe3bd5}</Project>
+      <CopyLocalSatelliteAssemblies>true</CopyLocalSatelliteAssemblies>
+      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\src\gmock_main.cc">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
diff --git a/google-breakpad/src/testing/msvc/2010/gmock_test.vcxproj b/google-breakpad/src/testing/msvc/2010/gmock_test.vcxproj
new file mode 100644
index 0000000..265439e
--- /dev/null
+++ b/google-breakpad/src/testing/msvc/2010/gmock_test.vcxproj
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{F10D22F8-AC7B-4213-8720-608E7D878CD2}</ProjectGuid>
+    <RootNamespace>gmock_test</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="gmock_config.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="gmock_config.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(OutDir)$(ProjectName)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(OutDir)$(ProjectName)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\include;..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
+      <AdditionalIncludeDirectories>..\..\include;..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ProjectReference Include="gmock_main.vcxproj">
+      <Project>{e4ef614b-30df-4954-8c53-580a0bf6b589}</Project>
+      <CopyLocalSatelliteAssemblies>true</CopyLocalSatelliteAssemblies>
+      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\test\gmock_all_test.cc" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
diff --git a/google-breakpad/src/testing/scripts/fuse_gmock_files.py b/google-breakpad/src/testing/scripts/fuse_gmock_files.py
new file mode 100755
index 0000000..fc0baf7
--- /dev/null
+++ b/google-breakpad/src/testing/scripts/fuse_gmock_files.py
@@ -0,0 +1,240 @@
+#!/usr/bin/env python
+#
+# Copyright 2009, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+"""fuse_gmock_files.py v0.1.0
+Fuses Google Mock and Google Test source code into two .h files and a .cc file.
+
+SYNOPSIS
+       fuse_gmock_files.py [GMOCK_ROOT_DIR] OUTPUT_DIR
+
+       Scans GMOCK_ROOT_DIR for Google Mock and Google Test source
+       code, assuming Google Test is in the GMOCK_ROOT_DIR/gtest
+       sub-directory, and generates three files:
+       OUTPUT_DIR/gtest/gtest.h, OUTPUT_DIR/gmock/gmock.h, and
+       OUTPUT_DIR/gmock-gtest-all.cc.  Then you can build your tests
+       by adding OUTPUT_DIR to the include search path and linking
+       with OUTPUT_DIR/gmock-gtest-all.cc.  These three files contain
+       everything you need to use Google Mock.  Hence you can
+       "install" Google Mock by copying them to wherever you want.
+
+       GMOCK_ROOT_DIR can be omitted and defaults to the parent
+       directory of the directory holding this script.
+
+EXAMPLES
+       ./fuse_gmock_files.py fused_gmock
+       ./fuse_gmock_files.py path/to/unpacked/gmock fused_gmock
+
+This tool is experimental.  In particular, it assumes that there is no
+conditional inclusion of Google Mock or Google Test headers.  Please
+report any problems to googlemock@googlegroups.com.  You can read
+http://code.google.com/p/googlemock/wiki/CookBook for more
+information.
+"""
+
+__author__ = 'wan@google.com (Zhanyong Wan)'
+
+import os
+import re
+import sets
+import sys
+
+# We assume that this file is in the scripts/ directory in the Google
+# Mock root directory.
+DEFAULT_GMOCK_ROOT_DIR = os.path.join(os.path.dirname(__file__), '..')
+
+# We need to call into gtest/scripts/fuse_gtest_files.py.
+sys.path.append(os.path.join(DEFAULT_GMOCK_ROOT_DIR, 'gtest/scripts'))
+import fuse_gtest_files
+gtest = fuse_gtest_files
+
+# Regex for matching '#include "gmock/..."'.
+INCLUDE_GMOCK_FILE_REGEX = re.compile(r'^\s*#\s*include\s*"(gmock/.+)"')
+
+# Where to find the source seed files.
+GMOCK_H_SEED = 'include/gmock/gmock.h'
+GMOCK_ALL_CC_SEED = 'src/gmock-all.cc'
+
+# Where to put the generated files.
+GTEST_H_OUTPUT = 'gtest/gtest.h'
+GMOCK_H_OUTPUT = 'gmock/gmock.h'
+GMOCK_GTEST_ALL_CC_OUTPUT = 'gmock-gtest-all.cc'
+
+
+def GetGTestRootDir(gmock_root):
+  """Returns the root directory of Google Test."""
+
+  return os.path.join(gmock_root, 'gtest')
+
+
+def ValidateGMockRootDir(gmock_root):
+  """Makes sure gmock_root points to a valid gmock root directory.
+
+  The function aborts the program on failure.
+  """
+
+  gtest.ValidateGTestRootDir(GetGTestRootDir(gmock_root))
+  gtest.VerifyFileExists(gmock_root, GMOCK_H_SEED)
+  gtest.VerifyFileExists(gmock_root, GMOCK_ALL_CC_SEED)
+
+
+def ValidateOutputDir(output_dir):
+  """Makes sure output_dir points to a valid output directory.
+
+  The function aborts the program on failure.
+  """
+
+  gtest.VerifyOutputFile(output_dir, gtest.GTEST_H_OUTPUT)
+  gtest.VerifyOutputFile(output_dir, GMOCK_H_OUTPUT)
+  gtest.VerifyOutputFile(output_dir, GMOCK_GTEST_ALL_CC_OUTPUT)
+
+
+def FuseGMockH(gmock_root, output_dir):
+  """Scans folder gmock_root to generate gmock/gmock.h in output_dir."""
+
+  output_file = file(os.path.join(output_dir, GMOCK_H_OUTPUT), 'w')
+  processed_files = sets.Set()  # Holds all gmock headers we've processed.
+
+  def ProcessFile(gmock_header_path):
+    """Processes the given gmock header file."""
+
+    # We don't process the same header twice.
+    if gmock_header_path in processed_files:
+      return
+
+    processed_files.add(gmock_header_path)
+
+    # Reads each line in the given gmock header.
+    for line in file(os.path.join(gmock_root, gmock_header_path), 'r'):
+      m = INCLUDE_GMOCK_FILE_REGEX.match(line)
+      if m:
+        # It's '#include "gmock/..."' - let's process it recursively.
+        ProcessFile('include/' + m.group(1))
+      else:
+        m = gtest.INCLUDE_GTEST_FILE_REGEX.match(line)
+        if m:
+          # It's '#include "gtest/foo.h"'.  We translate it to
+          # "gtest/gtest.h", regardless of what foo is, since all
+          # gtest headers are fused into gtest/gtest.h.
+
+          # There is no need to #include gtest.h twice.
+          if not gtest.GTEST_H_SEED in processed_files:
+            processed_files.add(gtest.GTEST_H_SEED)
+            output_file.write('#include "%s"\n' % (gtest.GTEST_H_OUTPUT,))
+        else:
+          # Otherwise we copy the line unchanged to the output file.
+          output_file.write(line)
+
+  ProcessFile(GMOCK_H_SEED)
+  output_file.close()
+
+
+def FuseGMockAllCcToFile(gmock_root, output_file):
+  """Scans folder gmock_root to fuse gmock-all.cc into output_file."""
+
+  processed_files = sets.Set()
+
+  def ProcessFile(gmock_source_file):
+    """Processes the given gmock source file."""
+
+    # We don't process the same #included file twice.
+    if gmock_source_file in processed_files:
+      return
+
+    processed_files.add(gmock_source_file)
+
+    # Reads each line in the given gmock source file.
+    for line in file(os.path.join(gmock_root, gmock_source_file), 'r'):
+      m = INCLUDE_GMOCK_FILE_REGEX.match(line)
+      if m:
+        # It's '#include "gmock/foo.h"'.  We treat it as '#include
+        # "gmock/gmock.h"', as all other gmock headers are being fused
+        # into gmock.h and cannot be #included directly.
+
+        # There is no need to #include "gmock/gmock.h" more than once.
+        if not GMOCK_H_SEED in processed_files:
+          processed_files.add(GMOCK_H_SEED)
+          output_file.write('#include "%s"\n' % (GMOCK_H_OUTPUT,))
+      else:
+        m = gtest.INCLUDE_GTEST_FILE_REGEX.match(line)
+        if m:
+          # It's '#include "gtest/..."'.
+          # There is no need to #include gtest.h as it has been
+          # #included by gtest-all.cc.
+          pass
+        else:
+          m = gtest.INCLUDE_SRC_FILE_REGEX.match(line)
+          if m:
+            # It's '#include "src/foo"' - let's process it recursively.
+            ProcessFile(m.group(1))
+          else:
+            # Otherwise we copy the line unchanged to the output file.
+            output_file.write(line)
+
+  ProcessFile(GMOCK_ALL_CC_SEED)
+
+
+def FuseGMockGTestAllCc(gmock_root, output_dir):
+  """Scans folder gmock_root to generate gmock-gtest-all.cc in output_dir."""
+
+  output_file = file(os.path.join(output_dir, GMOCK_GTEST_ALL_CC_OUTPUT), 'w')
+  # First, fuse gtest-all.cc into gmock-gtest-all.cc.
+  gtest.FuseGTestAllCcToFile(GetGTestRootDir(gmock_root), output_file)
+  # Next, append fused gmock-all.cc to gmock-gtest-all.cc.
+  FuseGMockAllCcToFile(gmock_root, output_file)
+  output_file.close()
+
+
+def FuseGMock(gmock_root, output_dir):
+  """Fuses gtest.h, gmock.h, and gmock-gtest-all.h."""
+
+  ValidateGMockRootDir(gmock_root)
+  ValidateOutputDir(output_dir)
+
+  gtest.FuseGTestH(GetGTestRootDir(gmock_root), output_dir)
+  FuseGMockH(gmock_root, output_dir)
+  FuseGMockGTestAllCc(gmock_root, output_dir)
+
+
+def main():
+  argc = len(sys.argv)
+  if argc == 2:
+    # fuse_gmock_files.py OUTPUT_DIR
+    FuseGMock(DEFAULT_GMOCK_ROOT_DIR, sys.argv[1])
+  elif argc == 3:
+    # fuse_gmock_files.py GMOCK_ROOT_DIR OUTPUT_DIR
+    FuseGMock(sys.argv[1], sys.argv[2])
+  else:
+    print __doc__
+    sys.exit(1)
+
+
+if __name__ == '__main__':
+  main()
diff --git a/google-breakpad/src/testing/scripts/generator/LICENSE b/google-breakpad/src/testing/scripts/generator/LICENSE
new file mode 100644
index 0000000..87ea063
--- /dev/null
+++ b/google-breakpad/src/testing/scripts/generator/LICENSE
@@ -0,0 +1,203 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [2007] Neal Norwitz
+   Portions Copyright [2007] Google Inc.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/google-breakpad/src/testing/scripts/generator/README b/google-breakpad/src/testing/scripts/generator/README
new file mode 100644
index 0000000..d6f9597
--- /dev/null
+++ b/google-breakpad/src/testing/scripts/generator/README
@@ -0,0 +1,35 @@
+
+The Google Mock class generator is an application that is part of cppclean.
+For more information about cppclean, see the README.cppclean file or
+visit http://code.google.com/p/cppclean/
+
+cppclean requires Python 2.3.5 or later.  If you don't have Python installed
+on your system, you will also need to install it.  You can download Python
+from:  http://www.python.org/download/releases/
+
+To use the Google Mock class generator, you need to call it
+on the command line passing the header file and class for which you want
+to generate a Google Mock class.
+
+Make sure to install the scripts somewhere in your path.  Then you can
+run the program.
+
+  gmock_gen.py header-file.h [ClassName]...
+
+If no ClassNames are specified, all classes in the file are emitted.
+
+To change the indentation from the default of 2, set INDENT in
+the environment.  For example to use an indent of 4 spaces:
+
+INDENT=4 gmock_gen.py header-file.h ClassName
+
+This version was made from SVN revision 281 in the cppclean repository.
+
+Known Limitations
+-----------------
+Not all code will be generated properly.  For example, when mocking templated
+classes, the template information is lost.  You will need to add the template
+information manually.
+
+Not all permutations of using multiple pointers/references will be rendered
+properly.  These will also have to be fixed manually.
diff --git a/google-breakpad/src/testing/scripts/generator/README.cppclean b/google-breakpad/src/testing/scripts/generator/README.cppclean
new file mode 100644
index 0000000..65431b6
--- /dev/null
+++ b/google-breakpad/src/testing/scripts/generator/README.cppclean
@@ -0,0 +1,115 @@
+Goal:
+-----
+  CppClean attempts to find problems in C++ source that slow development
+  in large code bases, for example various forms of unused code.
+  Unused code can be unused functions, methods, data members, types, etc
+  to unnecessary #include directives.  Unnecessary #includes can cause
+  considerable extra compiles increasing the edit-compile-run cycle.
+
+  The project home page is:   http://code.google.com/p/cppclean/
+
+
+Features:
+---------
+ * Find and print C++ language constructs: classes, methods, functions, etc.
+ * Find classes with virtual methods, no virtual destructor, and no bases
+ * Find global/static data that are potential problems when using threads
+ * Unnecessary forward class declarations
+ * Unnecessary function declarations
+ * Undeclared function definitions
+ * (planned) Find unnecessary header files #included
+   - No direct reference to anything in the header
+   - Header is unnecessary if classes were forward declared instead
+ * (planned) Source files that reference headers not directly #included,
+   ie, files that rely on a transitive #include from another header
+ * (planned) Unused members (private, protected, & public) methods and data
+ * (planned) Store AST in a SQL database so relationships can be queried
+
+AST is Abstract Syntax Tree, a representation of parsed source code.
+http://en.wikipedia.org/wiki/Abstract_syntax_tree
+
+
+System Requirements:
+--------------------
+ * Python 2.4 or later (2.3 probably works too)
+ * Works on Windows (untested), Mac OS X, and Unix
+
+
+How to Run:
+-----------
+  For all examples, it is assumed that cppclean resides in a directory called
+  /cppclean.
+
+  To print warnings for classes with virtual methods, no virtual destructor and
+  no base classes:
+
+      /cppclean/run.sh nonvirtual_dtors.py file1.h file2.h file3.cc ...
+
+  To print all the functions defined in header file(s):
+
+      /cppclean/run.sh functions.py file1.h file2.h ...
+
+  All the commands take multiple files on the command line.  Other programs
+  include: find_warnings, headers, methods, and types.  Some other programs
+  are available, but used primarily for debugging.
+
+  run.sh is a simple wrapper that sets PYTHONPATH to /cppclean and then
+  runs the program in /cppclean/cpp/PROGRAM.py.  There is currently
+  no equivalent for Windows.  Contributions for a run.bat file
+  would be greatly appreciated.
+
+
+How to Configure:
+-----------------
+  You can add a siteheaders.py file in /cppclean/cpp to configure where
+  to look for other headers (typically -I options passed to a compiler).
+  Currently two values are supported:  _TRANSITIVE and GetIncludeDirs.
+  _TRANSITIVE should be set to a boolean value (True or False) indicating
+  whether to transitively process all header files.  The default is False.
+
+  GetIncludeDirs is a function that takes a single argument and returns
+  a sequence of directories to include.  This can be a generator or
+  return a static list.
+
+      def GetIncludeDirs(filename):
+          return ['/some/path/with/other/headers']
+
+      # Here is a more complicated example.
+      def GetIncludeDirs(filename):
+          yield '/path1'
+          yield os.path.join('/path2', os.path.dirname(filename))
+          yield '/path3'
+
+
+How to Test:
+------------
+  For all examples, it is assumed that cppclean resides in a directory called
+  /cppclean.  The tests require
+
+  cd /cppclean
+  make test
+  # To generate expected results after a change:
+  make expected
+
+
+Current Status:
+---------------
+  The parser works pretty well for header files, parsing about 99% of Google's
+  header files.  Anything which inspects structure of C++ source files should
+  work reasonably well.  Function bodies are not transformed to an AST,
+  but left as tokens.  Much work is still needed on finding unused header files
+  and storing an AST in a database.
+
+
+Non-goals:
+----------
+ * Parsing all valid C++ source
+ * Handling invalid C++ source gracefully
+ * Compiling to machine code (or anything beyond an AST)
+
+
+Contact:
+--------
+  If you used cppclean, I would love to hear about your experiences
+  cppclean@googlegroups.com.  Even if you don't use cppclean, I'd like to
+  hear from you.  :-)  (You can contact me directly at:  nnorwitz@gmail.com)
diff --git a/google-breakpad/src/testing/scripts/generator/cpp/__init__.py b/google-breakpad/src/testing/scripts/generator/cpp/__init__.py
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/google-breakpad/src/testing/scripts/generator/cpp/__init__.py
diff --git a/google-breakpad/src/testing/scripts/generator/cpp/ast.py b/google-breakpad/src/testing/scripts/generator/cpp/ast.py
new file mode 100755
index 0000000..6f61f87
--- /dev/null
+++ b/google-breakpad/src/testing/scripts/generator/cpp/ast.py
@@ -0,0 +1,1723 @@
+#!/usr/bin/env python
+#
+# Copyright 2007 Neal Norwitz
+# Portions Copyright 2007 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Generate an Abstract Syntax Tree (AST) for C++."""
+
+__author__ = 'nnorwitz@google.com (Neal Norwitz)'
+
+
+# TODO:
+#  * Tokens should never be exported, need to convert to Nodes
+#    (return types, parameters, etc.)
+#  * Handle static class data for templatized classes
+#  * Handle casts (both C++ and C-style)
+#  * Handle conditions and loops (if/else, switch, for, while/do)
+#
+# TODO much, much later:
+#  * Handle #define
+#  * exceptions
+
+
+try:
+    # Python 3.x
+    import builtins
+except ImportError:
+    # Python 2.x
+    import __builtin__ as builtins
+
+import sys
+import traceback
+
+from cpp import keywords
+from cpp import tokenize
+from cpp import utils
+
+
+if not hasattr(builtins, 'reversed'):
+    # Support Python 2.3 and earlier.
+    def reversed(seq):
+        for i in range(len(seq)-1, -1, -1):
+            yield seq[i]
+
+if not hasattr(builtins, 'next'):
+    # Support Python 2.5 and earlier.
+    def next(obj):
+        return obj.next()
+
+
+VISIBILITY_PUBLIC, VISIBILITY_PROTECTED, VISIBILITY_PRIVATE = range(3)
+
+FUNCTION_NONE = 0x00
+FUNCTION_CONST = 0x01
+FUNCTION_VIRTUAL = 0x02
+FUNCTION_PURE_VIRTUAL = 0x04
+FUNCTION_CTOR = 0x08
+FUNCTION_DTOR = 0x10
+FUNCTION_ATTRIBUTE = 0x20
+FUNCTION_UNKNOWN_ANNOTATION = 0x40
+FUNCTION_THROW = 0x80
+
+"""
+These are currently unused.  Should really handle these properly at some point.
+
+TYPE_MODIFIER_INLINE   = 0x010000
+TYPE_MODIFIER_EXTERN   = 0x020000
+TYPE_MODIFIER_STATIC   = 0x040000
+TYPE_MODIFIER_CONST    = 0x080000
+TYPE_MODIFIER_REGISTER = 0x100000
+TYPE_MODIFIER_VOLATILE = 0x200000
+TYPE_MODIFIER_MUTABLE  = 0x400000
+
+TYPE_MODIFIER_MAP = {
+    'inline': TYPE_MODIFIER_INLINE,
+    'extern': TYPE_MODIFIER_EXTERN,
+    'static': TYPE_MODIFIER_STATIC,
+    'const': TYPE_MODIFIER_CONST,
+    'register': TYPE_MODIFIER_REGISTER,
+    'volatile': TYPE_MODIFIER_VOLATILE,
+    'mutable': TYPE_MODIFIER_MUTABLE,
+    }
+"""
+
+_INTERNAL_TOKEN = 'internal'
+_NAMESPACE_POP = 'ns-pop'
+
+
+# TODO(nnorwitz): use this as a singleton for templated_types, etc
+# where we don't want to create a new empty dict each time.  It is also const.
+class _NullDict(object):
+    __contains__ = lambda self: False
+    keys = values = items = iterkeys = itervalues = iteritems = lambda self: ()
+
+
+# TODO(nnorwitz): move AST nodes into a separate module.
+class Node(object):
+    """Base AST node."""
+
+    def __init__(self, start, end):
+        self.start = start
+        self.end = end
+
+    def IsDeclaration(self):
+        """Returns bool if this node is a declaration."""
+        return False
+
+    def IsDefinition(self):
+        """Returns bool if this node is a definition."""
+        return False
+
+    def IsExportable(self):
+        """Returns bool if this node exportable from a header file."""
+        return False
+
+    def Requires(self, node):
+        """Does this AST node require the definition of the node passed in?"""
+        return False
+
+    def XXX__str__(self):
+        return self._StringHelper(self.__class__.__name__, '')
+
+    def _StringHelper(self, name, suffix):
+        if not utils.DEBUG:
+            return '%s(%s)' % (name, suffix)
+        return '%s(%d, %d, %s)' % (name, self.start, self.end, suffix)
+
+    def __repr__(self):
+        return str(self)
+
+
+class Define(Node):
+    def __init__(self, start, end, name, definition):
+        Node.__init__(self, start, end)
+        self.name = name
+        self.definition = definition
+
+    def __str__(self):
+        value = '%s %s' % (self.name, self.definition)
+        return self._StringHelper(self.__class__.__name__, value)
+
+
+class Include(Node):
+    def __init__(self, start, end, filename, system):
+        Node.__init__(self, start, end)
+        self.filename = filename
+        self.system = system
+
+    def __str__(self):
+        fmt = '"%s"'
+        if self.system:
+            fmt = '<%s>'
+        return self._StringHelper(self.__class__.__name__, fmt % self.filename)
+
+
+class Goto(Node):
+    def __init__(self, start, end, label):
+        Node.__init__(self, start, end)
+        self.label = label
+
+    def __str__(self):
+        return self._StringHelper(self.__class__.__name__, str(self.label))
+
+
+class Expr(Node):
+    def __init__(self, start, end, expr):
+        Node.__init__(self, start, end)
+        self.expr = expr
+
+    def Requires(self, node):
+        # TODO(nnorwitz): impl.
+        return False
+
+    def __str__(self):
+        return self._StringHelper(self.__class__.__name__, str(self.expr))
+
+
+class Return(Expr):
+    pass
+
+
+class Delete(Expr):
+    pass
+
+
+class Friend(Expr):
+    def __init__(self, start, end, expr, namespace):
+        Expr.__init__(self, start, end, expr)
+        self.namespace = namespace[:]
+
+
+class Using(Node):
+    def __init__(self, start, end, names):
+        Node.__init__(self, start, end)
+        self.names = names
+
+    def __str__(self):
+        return self._StringHelper(self.__class__.__name__, str(self.names))
+
+
+class Parameter(Node):
+    def __init__(self, start, end, name, parameter_type, default):
+        Node.__init__(self, start, end)
+        self.name = name
+        self.type = parameter_type
+        self.default = default
+
+    def Requires(self, node):
+        # TODO(nnorwitz): handle namespaces, etc.
+        return self.type.name == node.name
+
+    def __str__(self):
+        name = str(self.type)
+        suffix = '%s %s' % (name, self.name)
+        if self.default:
+            suffix += ' = ' + ''.join([d.name for d in self.default])
+        return self._StringHelper(self.__class__.__name__, suffix)
+
+
+class _GenericDeclaration(Node):
+    def __init__(self, start, end, name, namespace):
+        Node.__init__(self, start, end)
+        self.name = name
+        self.namespace = namespace[:]
+
+    def FullName(self):
+        prefix = ''
+        if self.namespace and self.namespace[-1]:
+            prefix = '::'.join(self.namespace) + '::'
+        return prefix + self.name
+
+    def _TypeStringHelper(self, suffix):
+        if self.namespace:
+            names = [n or '<anonymous>' for n in self.namespace]
+            suffix += ' in ' + '::'.join(names)
+        return self._StringHelper(self.__class__.__name__, suffix)
+
+
+# TODO(nnorwitz): merge with Parameter in some way?
+class VariableDeclaration(_GenericDeclaration):
+    def __init__(self, start, end, name, var_type, initial_value, namespace):
+        _GenericDeclaration.__init__(self, start, end, name, namespace)
+        self.type = var_type
+        self.initial_value = initial_value
+
+    def Requires(self, node):
+        # TODO(nnorwitz): handle namespaces, etc.
+        return self.type.name == node.name
+
+    def ToString(self):
+        """Return a string that tries to reconstitute the variable decl."""
+        suffix = '%s %s' % (self.type, self.name)
+        if self.initial_value:
+            suffix += ' = ' + self.initial_value
+        return suffix
+
+    def __str__(self):
+        return self._StringHelper(self.__class__.__name__, self.ToString())
+
+
+class Typedef(_GenericDeclaration):
+    def __init__(self, start, end, name, alias, namespace):
+        _GenericDeclaration.__init__(self, start, end, name, namespace)
+        self.alias = alias
+
+    def IsDefinition(self):
+        return True
+
+    def IsExportable(self):
+        return True
+
+    def Requires(self, node):
+        # TODO(nnorwitz): handle namespaces, etc.
+        name = node.name
+        for token in self.alias:
+            if token is not None and name == token.name:
+                return True
+        return False
+
+    def __str__(self):
+        suffix = '%s, %s' % (self.name, self.alias)
+        return self._TypeStringHelper(suffix)
+
+
+class _NestedType(_GenericDeclaration):
+    def __init__(self, start, end, name, fields, namespace):
+        _GenericDeclaration.__init__(self, start, end, name, namespace)
+        self.fields = fields
+
+    def IsDefinition(self):
+        return True
+
+    def IsExportable(self):
+        return True
+
+    def __str__(self):
+        suffix = '%s, {%s}' % (self.name, self.fields)
+        return self._TypeStringHelper(suffix)
+
+
+class Union(_NestedType):
+    pass
+
+
+class Enum(_NestedType):
+    pass
+
+
+class Class(_GenericDeclaration):
+    def __init__(self, start, end, name, bases, templated_types, body, namespace):
+        _GenericDeclaration.__init__(self, start, end, name, namespace)
+        self.bases = bases
+        self.body = body
+        self.templated_types = templated_types
+
+    def IsDeclaration(self):
+        return self.bases is None and self.body is None
+
+    def IsDefinition(self):
+        return not self.IsDeclaration()
+
+    def IsExportable(self):
+        return not self.IsDeclaration()
+
+    def Requires(self, node):
+        # TODO(nnorwitz): handle namespaces, etc.
+        if self.bases:
+            for token_list in self.bases:
+                # TODO(nnorwitz): bases are tokens, do name comparision.
+                for token in token_list:
+                    if token.name == node.name:
+                        return True
+        # TODO(nnorwitz): search in body too.
+        return False
+
+    def __str__(self):
+        name = self.name
+        if self.templated_types:
+            name += '<%s>' % self.templated_types
+        suffix = '%s, %s, %s' % (name, self.bases, self.body)
+        return self._TypeStringHelper(suffix)
+
+
+class Struct(Class):
+    pass
+
+
+class Function(_GenericDeclaration):
+    def __init__(self, start, end, name, return_type, parameters,
+                 modifiers, templated_types, body, namespace):
+        _GenericDeclaration.__init__(self, start, end, name, namespace)
+        converter = TypeConverter(namespace)
+        self.return_type = converter.CreateReturnType(return_type)
+        self.parameters = converter.ToParameters(parameters)
+        self.modifiers = modifiers
+        self.body = body
+        self.templated_types = templated_types
+
+    def IsDeclaration(self):
+        return self.body is None
+
+    def IsDefinition(self):
+        return self.body is not None
+
+    def IsExportable(self):
+        if self.return_type and 'static' in self.return_type.modifiers:
+            return False
+        return None not in self.namespace
+
+    def Requires(self, node):
+        if self.parameters:
+            # TODO(nnorwitz): parameters are tokens, do name comparision.
+            for p in self.parameters:
+                if p.name == node.name:
+                    return True
+        # TODO(nnorwitz): search in body too.
+        return False
+
+    def __str__(self):
+        # TODO(nnorwitz): add templated_types.
+        suffix = ('%s %s(%s), 0x%02x, %s' %
+                  (self.return_type, self.name, self.parameters,
+                   self.modifiers, self.body))
+        return self._TypeStringHelper(suffix)
+
+
+class Method(Function):
+    def __init__(self, start, end, name, in_class, return_type, parameters,
+                 modifiers, templated_types, body, namespace):
+        Function.__init__(self, start, end, name, return_type, parameters,
+                          modifiers, templated_types, body, namespace)
+        # TODO(nnorwitz): in_class could also be a namespace which can
+        # mess up finding functions properly.
+        self.in_class = in_class
+
+
+class Type(_GenericDeclaration):
+    """Type used for any variable (eg class, primitive, struct, etc)."""
+
+    def __init__(self, start, end, name, templated_types, modifiers,
+                 reference, pointer, array):
+        """
+        Args:
+          name: str name of main type
+          templated_types: [Class (Type?)] template type info between <>
+          modifiers: [str] type modifiers (keywords) eg, const, mutable, etc.
+          reference, pointer, array: bools
+        """
+        _GenericDeclaration.__init__(self, start, end, name, [])
+        self.templated_types = templated_types
+        if not name and modifiers:
+            self.name = modifiers.pop()
+        self.modifiers = modifiers
+        self.reference = reference
+        self.pointer = pointer
+        self.array = array
+
+    def __str__(self):
+        prefix = ''
+        if self.modifiers:
+            prefix = ' '.join(self.modifiers) + ' '
+        name = str(self.name)
+        if self.templated_types:
+            name += '<%s>' % self.templated_types
+        suffix = prefix + name
+        if self.reference:
+            suffix += '&'
+        if self.pointer:
+            suffix += '*'
+        if self.array:
+            suffix += '[]'
+        return self._TypeStringHelper(suffix)
+
+    # By definition, Is* are always False.  A Type can only exist in
+    # some sort of variable declaration, parameter, or return value.
+    def IsDeclaration(self):
+        return False
+
+    def IsDefinition(self):
+        return False
+
+    def IsExportable(self):
+        return False
+
+
+class TypeConverter(object):
+
+    def __init__(self, namespace_stack):
+        self.namespace_stack = namespace_stack
+
+    def _GetTemplateEnd(self, tokens, start):
+        count = 1
+        end = start
+        while 1:
+            token = tokens[end]
+            end += 1
+            if token.name == '<':
+                count += 1
+            elif token.name == '>':
+                count -= 1
+                if count == 0:
+                    break
+        return tokens[start:end-1], end
+
+    def ToType(self, tokens):
+        """Convert [Token,...] to [Class(...), ] useful for base classes.
+        For example, code like class Foo : public Bar<x, y> { ... };
+        the "Bar<x, y>" portion gets converted to an AST.
+
+        Returns:
+          [Class(...), ...]
+        """
+        result = []
+        name_tokens = []
+        reference = pointer = array = False
+
+        def AddType(templated_types):
+            # Partition tokens into name and modifier tokens.
+            names = []
+            modifiers = []
+            for t in name_tokens:
+                if keywords.IsKeyword(t.name):
+                    modifiers.append(t.name)
+                else:
+                    names.append(t.name)
+            name = ''.join(names)
+            result.append(Type(name_tokens[0].start, name_tokens[-1].end,
+                               name, templated_types, modifiers,
+                               reference, pointer, array))
+            del name_tokens[:]
+
+        i = 0
+        end = len(tokens)
+        while i < end:
+            token = tokens[i]
+            if token.name == '<':
+                new_tokens, new_end = self._GetTemplateEnd(tokens, i+1)
+                AddType(self.ToType(new_tokens))
+                # If there is a comma after the template, we need to consume
+                # that here otherwise it becomes part of the name.
+                i = new_end
+                reference = pointer = array = False
+            elif token.name == ',':
+                AddType([])
+                reference = pointer = array = False
+            elif token.name == '*':
+                pointer = True
+            elif token.name == '&':
+                reference = True
+            elif token.name == '[':
+               pointer = True
+            elif token.name == ']':
+                pass
+            else:
+                name_tokens.append(token)
+            i += 1
+
+        if name_tokens:
+            # No '<' in the tokens, just a simple name and no template.
+            AddType([])
+        return result
+
+    def DeclarationToParts(self, parts, needs_name_removed):
+        name = None
+        default = []
+        if needs_name_removed:
+            # Handle default (initial) values properly.
+            for i, t in enumerate(parts):
+                if t.name == '=':
+                    default = parts[i+1:]
+                    name = parts[i-1].name
+                    if name == ']' and parts[i-2].name == '[':
+                        name = parts[i-3].name
+                        i -= 1
+                    parts = parts[:i-1]
+                    break
+            else:
+                if parts[-1].token_type == tokenize.NAME:
+                    name = parts.pop().name
+                else:
+                    # TODO(nnorwitz): this is a hack that happens for code like
+                    # Register(Foo<T>); where it thinks this is a function call
+                    # but it's actually a declaration.
+                    name = '???'
+        modifiers = []
+        type_name = []
+        other_tokens = []
+        templated_types = []
+        i = 0
+        end = len(parts)
+        while i < end:
+            p = parts[i]
+            if keywords.IsKeyword(p.name):
+                modifiers.append(p.name)
+            elif p.name == '<':
+                templated_tokens, new_end = self._GetTemplateEnd(parts, i+1)
+                templated_types = self.ToType(templated_tokens)
+                i = new_end - 1
+                # Don't add a spurious :: to data members being initialized.
+                next_index = i + 1
+                if next_index < end and parts[next_index].name == '::':
+                    i += 1
+            elif p.name in ('[', ']', '='):
+                # These are handled elsewhere.
+                other_tokens.append(p)
+            elif p.name not in ('*', '&', '>'):
+                # Ensure that names have a space between them.
+                if (type_name and type_name[-1].token_type == tokenize.NAME and
+                    p.token_type == tokenize.NAME):
+                    type_name.append(tokenize.Token(tokenize.SYNTAX, ' ', 0, 0))
+                type_name.append(p)
+            else:
+                other_tokens.append(p)
+            i += 1
+        type_name = ''.join([t.name for t in type_name])
+        return name, type_name, templated_types, modifiers, default, other_tokens
+
+    def ToParameters(self, tokens):
+        if not tokens:
+            return []
+
+        result = []
+        name = type_name = ''
+        type_modifiers = []
+        pointer = reference = array = False
+        first_token = None
+        default = []
+
+        def AddParameter():
+            if default:
+                del default[0]  # Remove flag.
+            end = type_modifiers[-1].end
+            parts = self.DeclarationToParts(type_modifiers, True)
+            (name, type_name, templated_types, modifiers,
+             unused_default, unused_other_tokens) = parts
+            parameter_type = Type(first_token.start, first_token.end,
+                                  type_name, templated_types, modifiers,
+                                  reference, pointer, array)
+            p = Parameter(first_token.start, end, name,
+                          parameter_type, default)
+            result.append(p)
+
+        template_count = 0
+        for s in tokens:
+            if not first_token:
+                first_token = s
+            if s.name == '<':
+                template_count += 1
+            elif s.name == '>':
+                template_count -= 1
+            if template_count > 0:
+                type_modifiers.append(s)
+                continue
+
+            if s.name == ',':
+                AddParameter()
+                name = type_name = ''
+                type_modifiers = []
+                pointer = reference = array = False
+                first_token = None
+                default = []
+            elif s.name == '*':
+                pointer = True
+            elif s.name == '&':
+                reference = True
+            elif s.name == '[':
+                array = True
+            elif s.name == ']':
+                pass  # Just don't add to type_modifiers.
+            elif s.name == '=':
+                # Got a default value.  Add any value (None) as a flag.
+                default.append(None)
+            elif default:
+                default.append(s)
+            else:
+                type_modifiers.append(s)
+        AddParameter()
+        return result
+
+    def CreateReturnType(self, return_type_seq):
+        if not return_type_seq:
+            return None
+        start = return_type_seq[0].start
+        end = return_type_seq[-1].end
+        _, name, templated_types, modifiers, default, other_tokens = \
+           self.DeclarationToParts(return_type_seq, False)
+        names = [n.name for n in other_tokens]
+        reference = '&' in names
+        pointer = '*' in names
+        array = '[' in names
+        return Type(start, end, name, templated_types, modifiers,
+                    reference, pointer, array)
+
+    def GetTemplateIndices(self, names):
+        # names is a list of strings.
+        start = names.index('<')
+        end = len(names) - 1
+        while end > 0:
+            if names[end] == '>':
+                break
+            end -= 1
+        return start, end+1
+
+class AstBuilder(object):
+    def __init__(self, token_stream, filename, in_class='', visibility=None,
+                 namespace_stack=[]):
+        self.tokens = token_stream
+        self.filename = filename
+        # TODO(nnorwitz): use a better data structure (deque) for the queue.
+        # Switching directions of the "queue" improved perf by about 25%.
+        # Using a deque should be even better since we access from both sides.
+        self.token_queue = []
+        self.namespace_stack = namespace_stack[:]
+        self.in_class = in_class
+        if in_class is None:
+            self.in_class_name_only = None
+        else:
+            self.in_class_name_only = in_class.split('::')[-1]
+        self.visibility = visibility
+        self.in_function = False
+        self.current_token = None
+        # Keep the state whether we are currently handling a typedef or not.
+        self._handling_typedef = False
+
+        self.converter = TypeConverter(self.namespace_stack)
+
+    def HandleError(self, msg, token):
+        printable_queue = list(reversed(self.token_queue[-20:]))
+        sys.stderr.write('Got %s in %s @ %s %s\n' %
+                         (msg, self.filename, token, printable_queue))
+
+    def Generate(self):
+        while 1:
+            token = self._GetNextToken()
+            if not token:
+                break
+
+            # Get the next token.
+            self.current_token = token
+
+            # Dispatch on the next token type.
+            if token.token_type == _INTERNAL_TOKEN:
+                if token.name == _NAMESPACE_POP:
+                    self.namespace_stack.pop()
+                continue
+
+            try:
+                result = self._GenerateOne(token)
+                if result is not None:
+                    yield result
+            except:
+                self.HandleError('exception', token)
+                raise
+
+    def _CreateVariable(self, pos_token, name, type_name, type_modifiers,
+                        ref_pointer_name_seq, templated_types, value=None):
+        reference = '&' in ref_pointer_name_seq
+        pointer = '*' in ref_pointer_name_seq
+        array = '[' in ref_pointer_name_seq
+        var_type = Type(pos_token.start, pos_token.end, type_name,
+                        templated_types, type_modifiers,
+                        reference, pointer, array)
+        return VariableDeclaration(pos_token.start, pos_token.end,
+                                   name, var_type, value, self.namespace_stack)
+
+    def _GenerateOne(self, token):
+        if token.token_type == tokenize.NAME:
+            if (keywords.IsKeyword(token.name) and
+                not keywords.IsBuiltinType(token.name)):
+                method = getattr(self, 'handle_' + token.name)
+                return method()
+            elif token.name == self.in_class_name_only:
+                # The token name is the same as the class, must be a ctor if
+                # there is a paren.  Otherwise, it's the return type.
+                # Peek ahead to get the next token to figure out which.
+                next = self._GetNextToken()
+                self._AddBackToken(next)
+                if next.token_type == tokenize.SYNTAX and next.name == '(':
+                    return self._GetMethod([token], FUNCTION_CTOR, None, True)
+                # Fall through--handle like any other method.
+
+            # Handle data or function declaration/definition.
+            syntax = tokenize.SYNTAX
+            temp_tokens, last_token = \
+                self._GetVarTokensUpTo(syntax, '(', ';', '{', '[')
+            temp_tokens.insert(0, token)
+            if last_token.name == '(':
+                # If there is an assignment before the paren,
+                # this is an expression, not a method.
+                expr = bool([e for e in temp_tokens if e.name == '='])
+                if expr:
+                    new_temp = self._GetTokensUpTo(tokenize.SYNTAX, ';')
+                    temp_tokens.append(last_token)
+                    temp_tokens.extend(new_temp)
+                    last_token = tokenize.Token(tokenize.SYNTAX, ';', 0, 0)
+
+            if last_token.name == '[':
+                # Handle array, this isn't a method, unless it's an operator.
+                # TODO(nnorwitz): keep the size somewhere.
+                # unused_size = self._GetTokensUpTo(tokenize.SYNTAX, ']')
+                temp_tokens.append(last_token)
+                if temp_tokens[-2].name == 'operator':
+                    temp_tokens.append(self._GetNextToken())
+                else:
+                    temp_tokens2, last_token = \
+                        self._GetVarTokensUpTo(tokenize.SYNTAX, ';')
+                    temp_tokens.extend(temp_tokens2)
+
+            if last_token.name == ';':
+                # Handle data, this isn't a method.
+                parts = self.converter.DeclarationToParts(temp_tokens, True)
+                (name, type_name, templated_types, modifiers, default,
+                 unused_other_tokens) = parts
+
+                t0 = temp_tokens[0]
+                names = [t.name for t in temp_tokens]
+                if templated_types:
+                    start, end = self.converter.GetTemplateIndices(names)
+                    names = names[:start] + names[end:]
+                default = ''.join([t.name for t in default])
+                return self._CreateVariable(t0, name, type_name, modifiers,
+                                            names, templated_types, default)
+            if last_token.name == '{':
+                self._AddBackTokens(temp_tokens[1:])
+                self._AddBackToken(last_token)
+                method_name = temp_tokens[0].name
+                method = getattr(self, 'handle_' + method_name, None)
+                if not method:
+                    # Must be declaring a variable.
+                    # TODO(nnorwitz): handle the declaration.
+                    return None
+                return method()
+            return self._GetMethod(temp_tokens, 0, None, False)
+        elif token.token_type == tokenize.SYNTAX:
+            if token.name == '~' and self.in_class:
+                # Must be a dtor (probably not in method body).
+                token = self._GetNextToken()
+                # self.in_class can contain A::Name, but the dtor will only
+                # be Name.  Make sure to compare against the right value.
+                if (token.token_type == tokenize.NAME and
+                    token.name == self.in_class_name_only):
+                    return self._GetMethod([token], FUNCTION_DTOR, None, True)
+            # TODO(nnorwitz): handle a lot more syntax.
+        elif token.token_type == tokenize.PREPROCESSOR:
+            # TODO(nnorwitz): handle more preprocessor directives.
+            # token starts with a #, so remove it and strip whitespace.
+            name = token.name[1:].lstrip()
+            if name.startswith('include'):
+                # Remove "include".
+                name = name[7:].strip()
+                assert name
+                # Handle #include \<newline> "header-on-second-line.h".
+                if name.startswith('\\'):
+                    name = name[1:].strip()
+                assert name[0] in '<"', token
+                assert name[-1] in '>"', token
+                system = name[0] == '<'
+                filename = name[1:-1]
+                return Include(token.start, token.end, filename, system)
+            if name.startswith('define'):
+                # Remove "define".
+                name = name[6:].strip()
+                assert name
+                value = ''
+                for i, c in enumerate(name):
+                    if c.isspace():
+                        value = name[i:].lstrip()
+                        name = name[:i]
+                        break
+                return Define(token.start, token.end, name, value)
+            if name.startswith('if') and name[2:3].isspace():
+                condition = name[3:].strip()
+                if condition.startswith('0') or condition.startswith('(0)'):
+                    self._SkipIf0Blocks()
+        return None
+
+    def _GetTokensUpTo(self, expected_token_type, expected_token):
+        return self._GetVarTokensUpTo(expected_token_type, expected_token)[0]
+
+    def _GetVarTokensUpTo(self, expected_token_type, *expected_tokens):
+        last_token = self._GetNextToken()
+        tokens = []
+        while (last_token.token_type != expected_token_type or
+               last_token.name not in expected_tokens):
+            tokens.append(last_token)
+            last_token = self._GetNextToken()
+        return tokens, last_token
+
+    # TODO(nnorwitz): remove _IgnoreUpTo() it shouldn't be necesary.
+    def _IgnoreUpTo(self, token_type, token):
+        unused_tokens = self._GetTokensUpTo(token_type, token)
+
+    def _SkipIf0Blocks(self):
+        count = 1
+        while 1:
+            token = self._GetNextToken()
+            if token.token_type != tokenize.PREPROCESSOR:
+                continue
+
+            name = token.name[1:].lstrip()
+            if name.startswith('endif'):
+                count -= 1
+                if count == 0:
+                    break
+            elif name.startswith('if'):
+                count += 1
+
+    def _GetMatchingChar(self, open_paren, close_paren, GetNextToken=None):
+        if GetNextToken is None:
+            GetNextToken = self._GetNextToken
+        # Assumes the current token is open_paren and we will consume
+        # and return up to the close_paren.
+        count = 1
+        token = GetNextToken()
+        while 1:
+            if token.token_type == tokenize.SYNTAX:
+                if token.name == open_paren:
+                    count += 1
+                elif token.name == close_paren:
+                    count -= 1
+                    if count == 0:
+                        break
+            yield token
+            token = GetNextToken()
+        yield token
+
+    def _GetParameters(self):
+        return self._GetMatchingChar('(', ')')
+
+    def GetScope(self):
+        return self._GetMatchingChar('{', '}')
+
+    def _GetNextToken(self):
+        if self.token_queue:
+            return self.token_queue.pop()
+        return next(self.tokens)
+
+    def _AddBackToken(self, token):
+        if token.whence == tokenize.WHENCE_STREAM:
+            token.whence = tokenize.WHENCE_QUEUE
+            self.token_queue.insert(0, token)
+        else:
+            assert token.whence == tokenize.WHENCE_QUEUE, token
+            self.token_queue.append(token)
+
+    def _AddBackTokens(self, tokens):
+        if tokens:
+            if tokens[-1].whence == tokenize.WHENCE_STREAM:
+                for token in tokens:
+                    token.whence = tokenize.WHENCE_QUEUE
+                self.token_queue[:0] = reversed(tokens)
+            else:
+                assert tokens[-1].whence == tokenize.WHENCE_QUEUE, tokens
+                self.token_queue.extend(reversed(tokens))
+
+    def GetName(self, seq=None):
+        """Returns ([tokens], next_token_info)."""
+        GetNextToken = self._GetNextToken
+        if seq is not None:
+            it = iter(seq)
+            GetNextToken = lambda: next(it)
+        next_token = GetNextToken()
+        tokens = []
+        last_token_was_name = False
+        while (next_token.token_type == tokenize.NAME or
+               (next_token.token_type == tokenize.SYNTAX and
+                next_token.name in ('::', '<'))):
+            # Two NAMEs in a row means the identifier should terminate.
+            # It's probably some sort of variable declaration.
+            if last_token_was_name and next_token.token_type == tokenize.NAME:
+                break
+            last_token_was_name = next_token.token_type == tokenize.NAME
+            tokens.append(next_token)
+            # Handle templated names.
+            if next_token.name == '<':
+                tokens.extend(self._GetMatchingChar('<', '>', GetNextToken))
+                last_token_was_name = True
+            next_token = GetNextToken()
+        return tokens, next_token
+
+    def GetMethod(self, modifiers, templated_types):
+        return_type_and_name = self._GetTokensUpTo(tokenize.SYNTAX, '(')
+        assert len(return_type_and_name) >= 1
+        return self._GetMethod(return_type_and_name, modifiers, templated_types,
+                               False)
+
+    def _GetMethod(self, return_type_and_name, modifiers, templated_types,
+                   get_paren):
+        template_portion = None
+        if get_paren:
+            token = self._GetNextToken()
+            assert token.token_type == tokenize.SYNTAX, token
+            if token.name == '<':
+                # Handle templatized dtors.
+                template_portion = [token]
+                template_portion.extend(self._GetMatchingChar('<', '>'))
+                token = self._GetNextToken()
+            assert token.token_type == tokenize.SYNTAX, token
+            assert token.name == '(', token
+
+        name = return_type_and_name.pop()
+        # Handle templatized ctors.
+        if name.name == '>':
+            index = 1
+            while return_type_and_name[index].name != '<':
+                index += 1
+            template_portion = return_type_and_name[index:] + [name]
+            del return_type_and_name[index:]
+            name = return_type_and_name.pop()
+        elif name.name == ']':
+            rt = return_type_and_name
+            assert rt[-1].name == '[', return_type_and_name
+            assert rt[-2].name == 'operator', return_type_and_name
+            name_seq = return_type_and_name[-2:]
+            del return_type_and_name[-2:]
+            name = tokenize.Token(tokenize.NAME, 'operator[]',
+                                  name_seq[0].start, name.end)
+            # Get the open paren so _GetParameters() below works.
+            unused_open_paren = self._GetNextToken()
+
+        # TODO(nnorwitz): store template_portion.
+        return_type = return_type_and_name
+        indices = name
+        if return_type:
+            indices = return_type[0]
+
+        # Force ctor for templatized ctors.
+        if name.name == self.in_class and not modifiers:
+            modifiers |= FUNCTION_CTOR
+        parameters = list(self._GetParameters())
+        del parameters[-1]              # Remove trailing ')'.
+
+        # Handling operator() is especially weird.
+        if name.name == 'operator' and not parameters:
+            token = self._GetNextToken()
+            assert token.name == '(', token
+            parameters = list(self._GetParameters())
+            del parameters[-1]          # Remove trailing ')'.
+
+        token = self._GetNextToken()
+        while token.token_type == tokenize.NAME:
+            modifier_token = token
+            token = self._GetNextToken()
+            if modifier_token.name == 'const':
+                modifiers |= FUNCTION_CONST
+            elif modifier_token.name == '__attribute__':
+                # TODO(nnorwitz): handle more __attribute__ details.
+                modifiers |= FUNCTION_ATTRIBUTE
+                assert token.name == '(', token
+                # Consume everything between the (parens).
+                unused_tokens = list(self._GetMatchingChar('(', ')'))
+                token = self._GetNextToken()
+            elif modifier_token.name == 'throw':
+                modifiers |= FUNCTION_THROW
+                assert token.name == '(', token
+                # Consume everything between the (parens).
+                unused_tokens = list(self._GetMatchingChar('(', ')'))
+                token = self._GetNextToken()
+            elif modifier_token.name == modifier_token.name.upper():
+                # HACK(nnorwitz):  assume that all upper-case names
+                # are some macro we aren't expanding.
+                modifiers |= FUNCTION_UNKNOWN_ANNOTATION
+            else:
+                self.HandleError('unexpected token', modifier_token)
+
+        assert token.token_type == tokenize.SYNTAX, token
+        # Handle ctor initializers.
+        if token.name == ':':
+            # TODO(nnorwitz): anything else to handle for initializer list?
+            while token.name != ';' and token.name != '{':
+                token = self._GetNextToken()
+
+        # Handle pointer to functions that are really data but look
+        # like method declarations.
+        if token.name == '(':
+            if parameters[0].name == '*':
+                # name contains the return type.
+                name = parameters.pop()
+                # parameters contains the name of the data.
+                modifiers = [p.name for p in parameters]
+                # Already at the ( to open the parameter list.
+                function_parameters = list(self._GetMatchingChar('(', ')'))
+                del function_parameters[-1]  # Remove trailing ')'.
+                # TODO(nnorwitz): store the function_parameters.
+                token = self._GetNextToken()
+                assert token.token_type == tokenize.SYNTAX, token
+                assert token.name == ';', token
+                return self._CreateVariable(indices, name.name, indices.name,
+                                            modifiers, '', None)
+            # At this point, we got something like:
+            #  return_type (type::*name_)(params);
+            # This is a data member called name_ that is a function pointer.
+            # With this code: void (sq_type::*field_)(string&);
+            # We get: name=void return_type=[] parameters=sq_type ... field_
+            # TODO(nnorwitz): is return_type always empty?
+            # TODO(nnorwitz): this isn't even close to being correct.
+            # Just put in something so we don't crash and can move on.
+            real_name = parameters[-1]
+            modifiers = [p.name for p in self._GetParameters()]
+            del modifiers[-1]           # Remove trailing ')'.
+            return self._CreateVariable(indices, real_name.name, indices.name,
+                                        modifiers, '', None)
+
+        if token.name == '{':
+            body = list(self.GetScope())
+            del body[-1]                # Remove trailing '}'.
+        else:
+            body = None
+            if token.name == '=':
+                token = self._GetNextToken()
+                assert token.token_type == tokenize.CONSTANT, token
+                assert token.name == '0', token
+                modifiers |= FUNCTION_PURE_VIRTUAL
+                token = self._GetNextToken()
+
+            if token.name == '[':
+                # TODO(nnorwitz): store tokens and improve parsing.
+                # template <typename T, size_t N> char (&ASH(T (&seq)[N]))[N];
+                tokens = list(self._GetMatchingChar('[', ']'))
+                token = self._GetNextToken()
+
+            assert token.name == ';', (token, return_type_and_name, parameters)
+
+        # Looks like we got a method, not a function.
+        if len(return_type) > 2 and return_type[-1].name == '::':
+            return_type, in_class = \
+                         self._GetReturnTypeAndClassName(return_type)
+            return Method(indices.start, indices.end, name.name, in_class,
+                          return_type, parameters, modifiers, templated_types,
+                          body, self.namespace_stack)
+        return Function(indices.start, indices.end, name.name, return_type,
+                        parameters, modifiers, templated_types, body,
+                        self.namespace_stack)
+
+    def _GetReturnTypeAndClassName(self, token_seq):
+        # Splitting the return type from the class name in a method
+        # can be tricky.  For example, Return::Type::Is::Hard::To::Find().
+        # Where is the return type and where is the class name?
+        # The heuristic used is to pull the last name as the class name.
+        # This includes all the templated type info.
+        # TODO(nnorwitz): if there is only One name like in the
+        # example above, punt and assume the last bit is the class name.
+
+        # Ignore a :: prefix, if exists so we can find the first real name.
+        i = 0
+        if token_seq[0].name == '::':
+            i = 1
+        # Ignore a :: suffix, if exists.
+        end = len(token_seq) - 1
+        if token_seq[end-1].name == '::':
+            end -= 1
+
+        # Make a copy of the sequence so we can append a sentinel
+        # value. This is required for GetName will has to have some
+        # terminating condition beyond the last name.
+        seq_copy = token_seq[i:end]
+        seq_copy.append(tokenize.Token(tokenize.SYNTAX, '', 0, 0))
+        names = []
+        while i < end:
+            # Iterate through the sequence parsing out each name.
+            new_name, next = self.GetName(seq_copy[i:])
+            assert new_name, 'Got empty new_name, next=%s' % next
+            # We got a pointer or ref.  Add it to the name.
+            if next and next.token_type == tokenize.SYNTAX:
+                new_name.append(next)
+            names.append(new_name)
+            i += len(new_name)
+
+        # Now that we have the names, it's time to undo what we did.
+
+        # Remove the sentinel value.
+        names[-1].pop()
+        # Flatten the token sequence for the return type.
+        return_type = [e for seq in names[:-1] for e in seq]
+        # The class name is the last name.
+        class_name = names[-1]
+        return return_type, class_name
+
+    def handle_bool(self):
+        pass
+
+    def handle_char(self):
+        pass
+
+    def handle_int(self):
+        pass
+
+    def handle_long(self):
+        pass
+
+    def handle_short(self):
+        pass
+
+    def handle_double(self):
+        pass
+
+    def handle_float(self):
+        pass
+
+    def handle_void(self):
+        pass
+
+    def handle_wchar_t(self):
+        pass
+
+    def handle_unsigned(self):
+        pass
+
+    def handle_signed(self):
+        pass
+
+    def _GetNestedType(self, ctor):
+        name = None
+        name_tokens, token = self.GetName()
+        if name_tokens:
+            name = ''.join([t.name for t in name_tokens])
+
+        # Handle forward declarations.
+        if token.token_type == tokenize.SYNTAX and token.name == ';':
+            return ctor(token.start, token.end, name, None,
+                        self.namespace_stack)
+
+        if token.token_type == tokenize.NAME and self._handling_typedef:
+            self._AddBackToken(token)
+            return ctor(token.start, token.end, name, None,
+                        self.namespace_stack)
+
+        # Must be the type declaration.
+        fields = list(self._GetMatchingChar('{', '}'))
+        del fields[-1]                  # Remove trailing '}'.
+        if token.token_type == tokenize.SYNTAX and token.name == '{':
+            next = self._GetNextToken()
+            new_type = ctor(token.start, token.end, name, fields,
+                            self.namespace_stack)
+            # A name means this is an anonymous type and the name
+            # is the variable declaration.
+            if next.token_type != tokenize.NAME:
+                return new_type
+            name = new_type
+            token = next
+
+        # Must be variable declaration using the type prefixed with keyword.
+        assert token.token_type == tokenize.NAME, token
+        return self._CreateVariable(token, token.name, name, [], '', None)
+
+    def handle_struct(self):
+        # Special case the handling typedef/aliasing of structs here.
+        # It would be a pain to handle in the class code.
+        name_tokens, var_token = self.GetName()
+        if name_tokens:
+            next_token = self._GetNextToken()
+            is_syntax = (var_token.token_type == tokenize.SYNTAX and
+                         var_token.name[0] in '*&')
+            is_variable = (var_token.token_type == tokenize.NAME and
+                           next_token.name == ';')
+            variable = var_token
+            if is_syntax and not is_variable:
+                variable = next_token
+                temp = self._GetNextToken()
+                if temp.token_type == tokenize.SYNTAX and temp.name == '(':
+                    # Handle methods declared to return a struct.
+                    t0 = name_tokens[0]
+                    struct = tokenize.Token(tokenize.NAME, 'struct',
+                                            t0.start-7, t0.start-2)
+                    type_and_name = [struct]
+                    type_and_name.extend(name_tokens)
+                    type_and_name.extend((var_token, next_token))
+                    return self._GetMethod(type_and_name, 0, None, False)
+                assert temp.name == ';', (temp, name_tokens, var_token)
+            if is_syntax or (is_variable and not self._handling_typedef):
+                modifiers = ['struct']
+                type_name = ''.join([t.name for t in name_tokens])
+                position = name_tokens[0]
+                return self._CreateVariable(position, variable.name, type_name,
+                                            modifiers, var_token.name, None)
+            name_tokens.extend((var_token, next_token))
+            self._AddBackTokens(name_tokens)
+        else:
+            self._AddBackToken(var_token)
+        return self._GetClass(Struct, VISIBILITY_PUBLIC, None)
+
+    def handle_union(self):
+        return self._GetNestedType(Union)
+
+    def handle_enum(self):
+        return self._GetNestedType(Enum)
+
+    def handle_auto(self):
+        # TODO(nnorwitz): warn about using auto?  Probably not since it
+        # will be reclaimed and useful for C++0x.
+        pass
+
+    def handle_register(self):
+        pass
+
+    def handle_const(self):
+        pass
+
+    def handle_inline(self):
+        pass
+
+    def handle_extern(self):
+        pass
+
+    def handle_static(self):
+        pass
+
+    def handle_virtual(self):
+        # What follows must be a method.
+        token = token2 = self._GetNextToken()
+        if token.name == 'inline':
+            # HACK(nnorwitz): handle inline dtors by ignoring 'inline'.
+            token2 = self._GetNextToken()
+        if token2.token_type == tokenize.SYNTAX and token2.name == '~':
+            return self.GetMethod(FUNCTION_VIRTUAL + FUNCTION_DTOR, None)
+        assert token.token_type == tokenize.NAME or token.name == '::', token
+        return_type_and_name = self._GetTokensUpTo(tokenize.SYNTAX, '(')
+        return_type_and_name.insert(0, token)
+        if token2 is not token:
+            return_type_and_name.insert(1, token2)
+        return self._GetMethod(return_type_and_name, FUNCTION_VIRTUAL,
+                               None, False)
+
+    def handle_volatile(self):
+        pass
+
+    def handle_mutable(self):
+        pass
+
+    def handle_public(self):
+        assert self.in_class
+        self.visibility = VISIBILITY_PUBLIC
+
+    def handle_protected(self):
+        assert self.in_class
+        self.visibility = VISIBILITY_PROTECTED
+
+    def handle_private(self):
+        assert self.in_class
+        self.visibility = VISIBILITY_PRIVATE
+
+    def handle_friend(self):
+        tokens = self._GetTokensUpTo(tokenize.SYNTAX, ';')
+        assert tokens
+        t0 = tokens[0]
+        return Friend(t0.start, t0.end, tokens, self.namespace_stack)
+
+    def handle_static_cast(self):
+        pass
+
+    def handle_const_cast(self):
+        pass
+
+    def handle_dynamic_cast(self):
+        pass
+
+    def handle_reinterpret_cast(self):
+        pass
+
+    def handle_new(self):
+        pass
+
+    def handle_delete(self):
+        tokens = self._GetTokensUpTo(tokenize.SYNTAX, ';')
+        assert tokens
+        return Delete(tokens[0].start, tokens[0].end, tokens)
+
+    def handle_typedef(self):
+        token = self._GetNextToken()
+        if (token.token_type == tokenize.NAME and
+            keywords.IsKeyword(token.name)):
+            # Token must be struct/enum/union/class.
+            method = getattr(self, 'handle_' + token.name)
+            self._handling_typedef = True
+            tokens = [method()]
+            self._handling_typedef = False
+        else:
+            tokens = [token]
+
+        # Get the remainder of the typedef up to the semi-colon.
+        tokens.extend(self._GetTokensUpTo(tokenize.SYNTAX, ';'))
+
+        # TODO(nnorwitz): clean all this up.
+        assert tokens
+        name = tokens.pop()
+        indices = name
+        if tokens:
+            indices = tokens[0]
+        if not indices:
+            indices = token
+        if name.name == ')':
+            # HACK(nnorwitz): Handle pointers to functions "properly".
+            if (len(tokens) >= 4 and
+                tokens[1].name == '(' and tokens[2].name == '*'):
+                tokens.append(name)
+                name = tokens[3]
+        elif name.name == ']':
+            # HACK(nnorwitz): Handle arrays properly.
+            if len(tokens) >= 2:
+                tokens.append(name)
+                name = tokens[1]
+        new_type = tokens
+        if tokens and isinstance(tokens[0], tokenize.Token):
+            new_type = self.converter.ToType(tokens)[0]
+        return Typedef(indices.start, indices.end, name.name,
+                       new_type, self.namespace_stack)
+
+    def handle_typeid(self):
+        pass  # Not needed yet.
+
+    def handle_typename(self):
+        pass  # Not needed yet.
+
+    def _GetTemplatedTypes(self):
+        result = {}
+        tokens = list(self._GetMatchingChar('<', '>'))
+        len_tokens = len(tokens) - 1    # Ignore trailing '>'.
+        i = 0
+        while i < len_tokens:
+            key = tokens[i].name
+            i += 1
+            if keywords.IsKeyword(key) or key == ',':
+                continue
+            type_name = default = None
+            if i < len_tokens:
+                i += 1
+                if tokens[i-1].name == '=':
+                    assert i < len_tokens, '%s %s' % (i, tokens)
+                    default, unused_next_token = self.GetName(tokens[i:])
+                    i += len(default)
+                else:
+                    if tokens[i-1].name != ',':
+                        # We got something like: Type variable.
+                        # Re-adjust the key (variable) and type_name (Type).
+                        key = tokens[i-1].name
+                        type_name = tokens[i-2]
+
+            result[key] = (type_name, default)
+        return result
+
+    def handle_template(self):
+        token = self._GetNextToken()
+        assert token.token_type == tokenize.SYNTAX, token
+        assert token.name == '<', token
+        templated_types = self._GetTemplatedTypes()
+        # TODO(nnorwitz): for now, just ignore the template params.
+        token = self._GetNextToken()
+        if token.token_type == tokenize.NAME:
+            if token.name == 'class':
+                return self._GetClass(Class, VISIBILITY_PRIVATE, templated_types)
+            elif token.name == 'struct':
+                return self._GetClass(Struct, VISIBILITY_PUBLIC, templated_types)
+            elif token.name == 'friend':
+                return self.handle_friend()
+        self._AddBackToken(token)
+        tokens, last = self._GetVarTokensUpTo(tokenize.SYNTAX, '(', ';')
+        tokens.append(last)
+        self._AddBackTokens(tokens)
+        if last.name == '(':
+            return self.GetMethod(FUNCTION_NONE, templated_types)
+        # Must be a variable definition.
+        return None
+
+    def handle_true(self):
+        pass  # Nothing to do.
+
+    def handle_false(self):
+        pass  # Nothing to do.
+
+    def handle_asm(self):
+        pass  # Not needed yet.
+
+    def handle_class(self):
+        return self._GetClass(Class, VISIBILITY_PRIVATE, None)
+
+    def _GetBases(self):
+        # Get base classes.
+        bases = []
+        while 1:
+            token = self._GetNextToken()
+            assert token.token_type == tokenize.NAME, token
+            # TODO(nnorwitz): store kind of inheritance...maybe.
+            if token.name not in ('public', 'protected', 'private'):
+                # If inheritance type is not specified, it is private.
+                # Just put the token back so we can form a name.
+                # TODO(nnorwitz): it would be good to warn about this.
+                self._AddBackToken(token)
+            else:
+                # Check for virtual inheritance.
+                token = self._GetNextToken()
+                if token.name != 'virtual':
+                    self._AddBackToken(token)
+                else:
+                    # TODO(nnorwitz): store that we got virtual for this base.
+                    pass
+            base, next_token = self.GetName()
+            bases_ast = self.converter.ToType(base)
+            assert len(bases_ast) == 1, bases_ast
+            bases.append(bases_ast[0])
+            assert next_token.token_type == tokenize.SYNTAX, next_token
+            if next_token.name == '{':
+                token = next_token
+                break
+            # Support multiple inheritance.
+            assert next_token.name == ',', next_token
+        return bases, token
+
+    def _GetClass(self, class_type, visibility, templated_types):
+        class_name = None
+        class_token = self._GetNextToken()
+        if class_token.token_type != tokenize.NAME:
+            assert class_token.token_type == tokenize.SYNTAX, class_token
+            token = class_token
+        else:
+            # Skip any macro (e.g. storage class specifiers) after the
+            # 'class' keyword.
+            next_token = self._GetNextToken()
+            if next_token.token_type == tokenize.NAME:
+                self._AddBackToken(next_token)
+            else:
+                self._AddBackTokens([class_token, next_token])
+            name_tokens, token = self.GetName()
+            class_name = ''.join([t.name for t in name_tokens])
+        bases = None
+        if token.token_type == tokenize.SYNTAX:
+            if token.name == ';':
+                # Forward declaration.
+                return class_type(class_token.start, class_token.end,
+                                  class_name, None, templated_types, None,
+                                  self.namespace_stack)
+            if token.name in '*&':
+                # Inline forward declaration.  Could be method or data.
+                name_token = self._GetNextToken()
+                next_token = self._GetNextToken()
+                if next_token.name == ';':
+                    # Handle data
+                    modifiers = ['class']
+                    return self._CreateVariable(class_token, name_token.name,
+                                                class_name,
+                                                modifiers, token.name, None)
+                else:
+                    # Assume this is a method.
+                    tokens = (class_token, token, name_token, next_token)
+                    self._AddBackTokens(tokens)
+                    return self.GetMethod(FUNCTION_NONE, None)
+            if token.name == ':':
+                bases, token = self._GetBases()
+
+        body = None
+        if token.token_type == tokenize.SYNTAX and token.name == '{':
+            assert token.token_type == tokenize.SYNTAX, token
+            assert token.name == '{', token
+
+            ast = AstBuilder(self.GetScope(), self.filename, class_name,
+                             visibility, self.namespace_stack)
+            body = list(ast.Generate())
+
+            if not self._handling_typedef:
+                token = self._GetNextToken()
+                if token.token_type != tokenize.NAME:
+                    assert token.token_type == tokenize.SYNTAX, token
+                    assert token.name == ';', token
+                else:
+                    new_class = class_type(class_token.start, class_token.end,
+                                           class_name, bases, None,
+                                           body, self.namespace_stack)
+
+                    modifiers = []
+                    return self._CreateVariable(class_token,
+                                                token.name, new_class,
+                                                modifiers, token.name, None)
+        else:
+            if not self._handling_typedef:
+                self.HandleError('non-typedef token', token)
+            self._AddBackToken(token)
+
+        return class_type(class_token.start, class_token.end, class_name,
+                          bases, None, body, self.namespace_stack)
+
+    def handle_namespace(self):
+        token = self._GetNextToken()
+        # Support anonymous namespaces.
+        name = None
+        if token.token_type == tokenize.NAME:
+            name = token.name
+            token = self._GetNextToken()
+        self.namespace_stack.append(name)
+        assert token.token_type == tokenize.SYNTAX, token
+        # Create an internal token that denotes when the namespace is complete.
+        internal_token = tokenize.Token(_INTERNAL_TOKEN, _NAMESPACE_POP,
+                                        None, None)
+        internal_token.whence = token.whence
+        if token.name == '=':
+            # TODO(nnorwitz): handle aliasing namespaces.
+            name, next_token = self.GetName()
+            assert next_token.name == ';', next_token
+            self._AddBackToken(internal_token)
+        else:
+            assert token.name == '{', token
+            tokens = list(self.GetScope())
+            # Replace the trailing } with the internal namespace pop token.
+            tokens[-1] = internal_token
+            # Handle namespace with nothing in it.
+            self._AddBackTokens(tokens)
+        return None
+
+    def handle_using(self):
+        tokens = self._GetTokensUpTo(tokenize.SYNTAX, ';')
+        assert tokens
+        return Using(tokens[0].start, tokens[0].end, tokens)
+
+    def handle_explicit(self):
+        assert self.in_class
+        # Nothing much to do.
+        # TODO(nnorwitz): maybe verify the method name == class name.
+        # This must be a ctor.
+        return self.GetMethod(FUNCTION_CTOR, None)
+
+    def handle_this(self):
+        pass  # Nothing to do.
+
+    def handle_operator(self):
+        # Pull off the next token(s?) and make that part of the method name.
+        pass
+
+    def handle_sizeof(self):
+        pass
+
+    def handle_case(self):
+        pass
+
+    def handle_switch(self):
+        pass
+
+    def handle_default(self):
+        token = self._GetNextToken()
+        assert token.token_type == tokenize.SYNTAX
+        assert token.name == ':'
+
+    def handle_if(self):
+        pass
+
+    def handle_else(self):
+        pass
+
+    def handle_return(self):
+        tokens = self._GetTokensUpTo(tokenize.SYNTAX, ';')
+        if not tokens:
+            return Return(self.current_token.start, self.current_token.end, None)
+        return Return(tokens[0].start, tokens[0].end, tokens)
+
+    def handle_goto(self):
+        tokens = self._GetTokensUpTo(tokenize.SYNTAX, ';')
+        assert len(tokens) == 1, str(tokens)
+        return Goto(tokens[0].start, tokens[0].end, tokens[0].name)
+
+    def handle_try(self):
+        pass  # Not needed yet.
+
+    def handle_catch(self):
+        pass  # Not needed yet.
+
+    def handle_throw(self):
+        pass  # Not needed yet.
+
+    def handle_while(self):
+        pass
+
+    def handle_do(self):
+        pass
+
+    def handle_for(self):
+        pass
+
+    def handle_break(self):
+        self._IgnoreUpTo(tokenize.SYNTAX, ';')
+
+    def handle_continue(self):
+        self._IgnoreUpTo(tokenize.SYNTAX, ';')
+
+
+def BuilderFromSource(source, filename):
+    """Utility method that returns an AstBuilder from source code.
+
+    Args:
+      source: 'C++ source code'
+      filename: 'file1'
+
+    Returns:
+      AstBuilder
+    """
+    return AstBuilder(tokenize.GetTokens(source), filename)
+
+
+def PrintIndentifiers(filename, should_print):
+    """Prints all identifiers for a C++ source file.
+
+    Args:
+      filename: 'file1'
+      should_print: predicate with signature: bool Function(token)
+    """
+    source = utils.ReadFile(filename, False)
+    if source is None:
+        sys.stderr.write('Unable to find: %s\n' % filename)
+        return
+
+    #print('Processing %s' % actual_filename)
+    builder = BuilderFromSource(source, filename)
+    try:
+        for node in builder.Generate():
+            if should_print(node):
+                print(node.name)
+    except KeyboardInterrupt:
+        return
+    except:
+        pass
+
+
+def PrintAllIndentifiers(filenames, should_print):
+    """Prints all identifiers for each C++ source file in filenames.
+
+    Args:
+      filenames: ['file1', 'file2', ...]
+      should_print: predicate with signature: bool Function(token)
+    """
+    for path in filenames:
+        PrintIndentifiers(path, should_print)
+
+
+def main(argv):
+    for filename in argv[1:]:
+        source = utils.ReadFile(filename)
+        if source is None:
+            continue
+
+        print('Processing %s' % filename)
+        builder = BuilderFromSource(source, filename)
+        try:
+            entire_ast = filter(None, builder.Generate())
+        except KeyboardInterrupt:
+            return
+        except:
+            # Already printed a warning, print the traceback and continue.
+            traceback.print_exc()
+        else:
+            if utils.DEBUG:
+                for ast in entire_ast:
+                    print(ast)
+
+
+if __name__ == '__main__':
+    main(sys.argv)
diff --git a/google-breakpad/src/testing/scripts/generator/cpp/gmock_class.py b/google-breakpad/src/testing/scripts/generator/cpp/gmock_class.py
new file mode 100755
index 0000000..427d206
--- /dev/null
+++ b/google-breakpad/src/testing/scripts/generator/cpp/gmock_class.py
@@ -0,0 +1,208 @@
+#!/usr/bin/env python
+#
+# Copyright 2008 Google Inc.  All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Generate Google Mock classes from base classes.
+
+This program will read in a C++ source file and output the Google Mock
+classes for the specified classes.  If no class is specified, all
+classes in the source file are emitted.
+
+Usage:
+  gmock_class.py header-file.h [ClassName]...
+
+Output is sent to stdout.
+"""
+
+__author__ = 'nnorwitz@google.com (Neal Norwitz)'
+
+
+import os
+import re
+import sys
+
+from cpp import ast
+from cpp import utils
+
+# Preserve compatibility with Python 2.3.
+try:
+  _dummy = set
+except NameError:
+  import sets
+  set = sets.Set
+
+_VERSION = (1, 0, 1)  # The version of this script.
+# How many spaces to indent.  Can set me with the INDENT environment variable.
+_INDENT = 2
+
+
+def _GenerateMethods(output_lines, source, class_node):
+  function_type = ast.FUNCTION_VIRTUAL | ast.FUNCTION_PURE_VIRTUAL
+  ctor_or_dtor = ast.FUNCTION_CTOR | ast.FUNCTION_DTOR
+  indent = ' ' * _INDENT
+
+  for node in class_node.body:
+    # We only care about virtual functions.
+    if (isinstance(node, ast.Function) and
+        node.modifiers & function_type and
+        not node.modifiers & ctor_or_dtor):
+      # Pick out all the elements we need from the original function.
+      const = ''
+      if node.modifiers & ast.FUNCTION_CONST:
+        const = 'CONST_'
+      return_type = 'void'
+      if node.return_type:
+        # Add modifiers like 'const'.
+        modifiers = ''
+        if node.return_type.modifiers:
+          modifiers = ' '.join(node.return_type.modifiers) + ' '
+        return_type = modifiers + node.return_type.name
+        template_args = [arg.name for arg in node.return_type.templated_types]
+        if template_args:
+          return_type += '<' + ', '.join(template_args) + '>'
+          if len(template_args) > 1:
+            for line in [
+                '// The following line won\'t really compile, as the return',
+                '// type has multiple template arguments.  To fix it, use a',
+                '// typedef for the return type.']:
+              output_lines.append(indent + line)
+        if node.return_type.pointer:
+          return_type += '*'
+        if node.return_type.reference:
+          return_type += '&'
+        num_parameters = len(node.parameters)
+        if len(node.parameters) == 1:
+          first_param = node.parameters[0]
+          if source[first_param.start:first_param.end].strip() == 'void':
+            # We must treat T(void) as a function with no parameters.
+            num_parameters = 0
+      mock_method_macro = 'MOCK_%sMETHOD%d' % (const, num_parameters)
+      args = ''
+      if node.parameters:
+        # Due to the parser limitations, it is impossible to keep comments
+        # while stripping the default parameters.  When defaults are
+        # present, we choose to strip them and comments (and produce
+        # compilable code).
+        # TODO(nnorwitz@google.com): Investigate whether it is possible to
+        # preserve parameter name when reconstructing parameter text from
+        # the AST.
+        if len([param for param in node.parameters if param.default]) > 0:
+          args = ', '.join(param.type.name for param in node.parameters)
+        else:
+          # Get the full text of the parameters from the start
+          # of the first parameter to the end of the last parameter.
+          start = node.parameters[0].start
+          end = node.parameters[-1].end
+          # Remove // comments.
+          args_strings = re.sub(r'//.*', '', source[start:end])
+          # Condense multiple spaces and eliminate newlines putting the
+          # parameters together on a single line.  Ensure there is a
+          # space in an argument which is split by a newline without
+          # intervening whitespace, e.g.: int\nBar
+          args = re.sub('  +', ' ', args_strings.replace('\n', ' '))
+
+      # Create the mock method definition.
+      output_lines.extend(['%s%s(%s,' % (indent, mock_method_macro, node.name),
+                           '%s%s(%s));' % (indent*3, return_type, args)])
+
+
+def _GenerateMocks(filename, source, ast_list, desired_class_names):
+  processed_class_names = set()
+  lines = []
+  for node in ast_list:
+    if (isinstance(node, ast.Class) and node.body and
+        # desired_class_names being None means that all classes are selected.
+        (not desired_class_names or node.name in desired_class_names)):
+      class_name = node.name
+      processed_class_names.add(class_name)
+      class_node = node
+      # Add namespace before the class.
+      if class_node.namespace:
+        lines.extend(['namespace %s {' % n for n in class_node.namespace])  # }
+        lines.append('')
+
+      # Add the class prolog.
+      lines.append('class Mock%s : public %s {' % (class_name, class_name))  # }
+      lines.append('%spublic:' % (' ' * (_INDENT // 2)))
+
+      # Add all the methods.
+      _GenerateMethods(lines, source, class_node)
+
+      # Close the class.
+      if lines:
+        # If there are no virtual methods, no need for a public label.
+        if len(lines) == 2:
+          del lines[-1]
+
+        # Only close the class if there really is a class.
+        lines.append('};')
+        lines.append('')  # Add an extra newline.
+
+      # Close the namespace.
+      if class_node.namespace:
+        for i in range(len(class_node.namespace)-1, -1, -1):
+          lines.append('}  // namespace %s' % class_node.namespace[i])
+        lines.append('')  # Add an extra newline.
+
+  if desired_class_names:
+    missing_class_name_list = list(desired_class_names - processed_class_names)
+    if missing_class_name_list:
+      missing_class_name_list.sort()
+      sys.stderr.write('Class(es) not found in %s: %s\n' %
+                       (filename, ', '.join(missing_class_name_list)))
+  elif not processed_class_names:
+    sys.stderr.write('No class found in %s\n' % filename)
+
+  return lines
+
+
+def main(argv=sys.argv):
+  if len(argv) < 2:
+    sys.stderr.write('Google Mock Class Generator v%s\n\n' %
+                     '.'.join(map(str, _VERSION)))
+    sys.stderr.write(__doc__)
+    return 1
+
+  global _INDENT
+  try:
+    _INDENT = int(os.environ['INDENT'])
+  except KeyError:
+    pass
+  except:
+    sys.stderr.write('Unable to use indent of %s\n' % os.environ.get('INDENT'))
+
+  filename = argv[1]
+  desired_class_names = None  # None means all classes in the source file.
+  if len(argv) >= 3:
+    desired_class_names = set(argv[2:])
+  source = utils.ReadFile(filename)
+  if source is None:
+    return 1
+
+  builder = ast.BuilderFromSource(source, filename)
+  try:
+    entire_ast = filter(None, builder.Generate())
+  except KeyboardInterrupt:
+    return
+  except:
+    # An error message was already printed since we couldn't parse.
+    pass
+  else:
+    lines = _GenerateMocks(filename, source, entire_ast, desired_class_names)
+    sys.stdout.write('\n'.join(lines))
+
+
+if __name__ == '__main__':
+  main(sys.argv)
diff --git a/google-breakpad/src/testing/scripts/generator/cpp/gmock_class_test.py b/google-breakpad/src/testing/scripts/generator/cpp/gmock_class_test.py
new file mode 100755
index 0000000..7aa7027
--- /dev/null
+++ b/google-breakpad/src/testing/scripts/generator/cpp/gmock_class_test.py
@@ -0,0 +1,259 @@
+#!/usr/bin/env python
+#
+# Copyright 2009 Neal Norwitz All Rights Reserved.
+# Portions Copyright 2009 Google Inc. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Tests for gmock.scripts.generator.cpp.gmock_class."""
+
+__author__ = 'nnorwitz@google.com (Neal Norwitz)'
+
+
+import os
+import sys
+import unittest
+
+# Allow the cpp imports below to work when run as a standalone script.
+sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
+
+from cpp import ast
+from cpp import gmock_class
+
+
+class TestCase(unittest.TestCase):
+  """Helper class that adds assert methods."""
+
+  def StripLeadingWhitespace(self, lines):
+    """Strip leading whitespace in each line in 'lines'."""
+    return '\n'.join([s.lstrip() for s in lines.split('\n')])
+
+  def assertEqualIgnoreLeadingWhitespace(self, expected_lines, lines):
+    """Specialized assert that ignores the indent level."""
+    self.assertEqual(expected_lines, self.StripLeadingWhitespace(lines))
+
+
+class GenerateMethodsTest(TestCase):
+
+  def GenerateMethodSource(self, cpp_source):
+    """Convert C++ source to Google Mock output source lines."""
+    method_source_lines = []
+    # <test> is a pseudo-filename, it is not read or written.
+    builder = ast.BuilderFromSource(cpp_source, '<test>')
+    ast_list = list(builder.Generate())
+    gmock_class._GenerateMethods(method_source_lines, cpp_source, ast_list[0])
+    return '\n'.join(method_source_lines)
+
+  def testSimpleMethod(self):
+    source = """
+class Foo {
+ public:
+  virtual int Bar();
+};
+"""
+    self.assertEqualIgnoreLeadingWhitespace(
+        'MOCK_METHOD0(Bar,\nint());',
+        self.GenerateMethodSource(source))
+
+  def testSimpleConstMethod(self):
+    source = """
+class Foo {
+ public:
+  virtual void Bar(bool flag) const;
+};
+"""
+    self.assertEqualIgnoreLeadingWhitespace(
+        'MOCK_CONST_METHOD1(Bar,\nvoid(bool flag));',
+        self.GenerateMethodSource(source))
+
+  def testExplicitVoid(self):
+    source = """
+class Foo {
+ public:
+  virtual int Bar(void);
+};
+"""
+    self.assertEqualIgnoreLeadingWhitespace(
+        'MOCK_METHOD0(Bar,\nint(void));',
+        self.GenerateMethodSource(source))
+
+  def testStrangeNewlineInParameter(self):
+    source = """
+class Foo {
+ public:
+  virtual void Bar(int
+a) = 0;
+};
+"""
+    self.assertEqualIgnoreLeadingWhitespace(
+        'MOCK_METHOD1(Bar,\nvoid(int a));',
+        self.GenerateMethodSource(source))
+
+  def testDefaultParameters(self):
+    source = """
+class Foo {
+ public:
+  virtual void Bar(int a, char c = 'x') = 0;
+};
+"""
+    self.assertEqualIgnoreLeadingWhitespace(
+        'MOCK_METHOD2(Bar,\nvoid(int, char));',
+        self.GenerateMethodSource(source))
+
+  def testMultipleDefaultParameters(self):
+    source = """
+class Foo {
+ public:
+  virtual void Bar(int a = 42, char c = 'x') = 0;
+};
+"""
+    self.assertEqualIgnoreLeadingWhitespace(
+        'MOCK_METHOD2(Bar,\nvoid(int, char));',
+        self.GenerateMethodSource(source))
+
+  def testRemovesCommentsWhenDefaultsArePresent(self):
+    source = """
+class Foo {
+ public:
+  virtual void Bar(int a = 42 /* a comment */,
+                   char /* other comment */ c= 'x') = 0;
+};
+"""
+    self.assertEqualIgnoreLeadingWhitespace(
+        'MOCK_METHOD2(Bar,\nvoid(int, char));',
+        self.GenerateMethodSource(source))
+
+  def testDoubleSlashCommentsInParameterListAreRemoved(self):
+    source = """
+class Foo {
+ public:
+  virtual void Bar(int a,  // inline comments should be elided.
+                   int b   // inline comments should be elided.
+                   ) const = 0;
+};
+"""
+    self.assertEqualIgnoreLeadingWhitespace(
+        'MOCK_CONST_METHOD2(Bar,\nvoid(int a, int b));',
+        self.GenerateMethodSource(source))
+
+  def testCStyleCommentsInParameterListAreNotRemoved(self):
+    # NOTE(nnorwitz): I'm not sure if it's the best behavior to keep these
+    # comments.  Also note that C style comments after the last parameter
+    # are still elided.
+    source = """
+class Foo {
+ public:
+  virtual const string& Bar(int /* keeper */, int b);
+};
+"""
+    self.assertEqualIgnoreLeadingWhitespace(
+        'MOCK_METHOD2(Bar,\nconst string&(int /* keeper */, int b));',
+        self.GenerateMethodSource(source))
+
+  def testArgsOfTemplateTypes(self):
+    source = """
+class Foo {
+ public:
+  virtual int Bar(const vector<int>& v, map<int, string>* output);
+};"""
+    self.assertEqualIgnoreLeadingWhitespace(
+        'MOCK_METHOD2(Bar,\n'
+        'int(const vector<int>& v, map<int, string>* output));',
+        self.GenerateMethodSource(source))
+
+  def testReturnTypeWithOneTemplateArg(self):
+    source = """
+class Foo {
+ public:
+  virtual vector<int>* Bar(int n);
+};"""
+    self.assertEqualIgnoreLeadingWhitespace(
+        'MOCK_METHOD1(Bar,\nvector<int>*(int n));',
+        self.GenerateMethodSource(source))
+
+  def testReturnTypeWithManyTemplateArgs(self):
+    source = """
+class Foo {
+ public:
+  virtual map<int, string> Bar();
+};"""
+    # Comparing the comment text is brittle - we'll think of something
+    # better in case this gets annoying, but for now let's keep it simple.
+    self.assertEqualIgnoreLeadingWhitespace(
+        '// The following line won\'t really compile, as the return\n'
+        '// type has multiple template arguments.  To fix it, use a\n'
+        '// typedef for the return type.\n'
+        'MOCK_METHOD0(Bar,\nmap<int, string>());',
+        self.GenerateMethodSource(source))
+
+
+class GenerateMocksTest(TestCase):
+
+  def GenerateMocks(self, cpp_source):
+    """Convert C++ source to complete Google Mock output source."""
+    # <test> is a pseudo-filename, it is not read or written.
+    filename = '<test>'
+    builder = ast.BuilderFromSource(cpp_source, filename)
+    ast_list = list(builder.Generate())
+    lines = gmock_class._GenerateMocks(filename, cpp_source, ast_list, None)
+    return '\n'.join(lines)
+
+  def testNamespaces(self):
+    source = """
+namespace Foo {
+namespace Bar { class Forward; }
+namespace Baz {
+
+class Test {
+ public:
+  virtual void Foo();
+};
+
+}  // namespace Baz
+}  // namespace Foo
+"""
+    expected = """\
+namespace Foo {
+namespace Baz {
+
+class MockTest : public Test {
+public:
+MOCK_METHOD0(Foo,
+void());
+};
+
+}  // namespace Baz
+}  // namespace Foo
+"""
+    self.assertEqualIgnoreLeadingWhitespace(
+        expected, self.GenerateMocks(source))
+
+  def testClassWithStorageSpecifierMacro(self):
+    source = """
+class STORAGE_SPECIFIER Test {
+ public:
+  virtual void Foo();
+};
+"""
+    expected = """\
+class MockTest : public Test {
+public:
+MOCK_METHOD0(Foo,
+void());
+};
+"""
+    self.assertEqualIgnoreLeadingWhitespace(
+        expected, self.GenerateMocks(source))
+
+if __name__ == '__main__':
+  unittest.main()
diff --git a/google-breakpad/src/testing/scripts/generator/cpp/keywords.py b/google-breakpad/src/testing/scripts/generator/cpp/keywords.py
new file mode 100755
index 0000000..f694450
--- /dev/null
+++ b/google-breakpad/src/testing/scripts/generator/cpp/keywords.py
@@ -0,0 +1,59 @@
+#!/usr/bin/env python
+#
+# Copyright 2007 Neal Norwitz
+# Portions Copyright 2007 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""C++ keywords and helper utilities for determining keywords."""
+
+__author__ = 'nnorwitz@google.com (Neal Norwitz)'
+
+
+try:
+    # Python 3.x
+    import builtins
+except ImportError:
+    # Python 2.x
+    import __builtin__ as builtins
+
+
+if not hasattr(builtins, 'set'):
+    # Nominal support for Python 2.3.
+    from sets import Set as set
+
+
+TYPES = set('bool char int long short double float void wchar_t unsigned signed'.split())
+TYPE_MODIFIERS = set('auto register const inline extern static virtual volatile mutable'.split())
+ACCESS = set('public protected private friend'.split())
+
+CASTS = set('static_cast const_cast dynamic_cast reinterpret_cast'.split())
+
+OTHERS = set('true false asm class namespace using explicit this operator sizeof'.split())
+OTHER_TYPES = set('new delete typedef struct union enum typeid typename template'.split())
+
+CONTROL = set('case switch default if else return goto'.split())
+EXCEPTION = set('try catch throw'.split())
+LOOP = set('while do for break continue'.split())
+
+ALL = TYPES | TYPE_MODIFIERS | ACCESS | CASTS | OTHERS | OTHER_TYPES | CONTROL | EXCEPTION | LOOP
+
+
+def IsKeyword(token):
+    return token in ALL
+
+def IsBuiltinType(token):
+    if token in ('virtual', 'inline'):
+        # These only apply to methods, they can't be types by themselves.
+        return False
+    return token in TYPES or token in TYPE_MODIFIERS
diff --git a/google-breakpad/src/testing/scripts/generator/cpp/tokenize.py b/google-breakpad/src/testing/scripts/generator/cpp/tokenize.py
new file mode 100755
index 0000000..28c3345
--- /dev/null
+++ b/google-breakpad/src/testing/scripts/generator/cpp/tokenize.py
@@ -0,0 +1,287 @@
+#!/usr/bin/env python
+#
+# Copyright 2007 Neal Norwitz
+# Portions Copyright 2007 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Tokenize C++ source code."""
+
+__author__ = 'nnorwitz@google.com (Neal Norwitz)'
+
+
+try:
+    # Python 3.x
+    import builtins
+except ImportError:
+    # Python 2.x
+    import __builtin__ as builtins
+
+
+import sys
+
+from cpp import utils
+
+
+if not hasattr(builtins, 'set'):
+    # Nominal support for Python 2.3.
+    from sets import Set as set
+
+
+# Add $ as a valid identifier char since so much code uses it.
+_letters = 'abcdefghijklmnopqrstuvwxyz'
+VALID_IDENTIFIER_CHARS = set(_letters + _letters.upper() + '_0123456789$')
+HEX_DIGITS = set('0123456789abcdefABCDEF')
+INT_OR_FLOAT_DIGITS = set('01234567890eE-+')
+
+
+# C++0x string preffixes.
+_STR_PREFIXES = set(('R', 'u8', 'u8R', 'u', 'uR', 'U', 'UR', 'L', 'LR'))
+
+
+# Token types.
+UNKNOWN = 'UNKNOWN'
+SYNTAX = 'SYNTAX'
+CONSTANT = 'CONSTANT'
+NAME = 'NAME'
+PREPROCESSOR = 'PREPROCESSOR'
+
+# Where the token originated from.  This can be used for backtracking.
+# It is always set to WHENCE_STREAM in this code.
+WHENCE_STREAM, WHENCE_QUEUE = range(2)
+
+
+class Token(object):
+    """Data container to represent a C++ token.
+
+    Tokens can be identifiers, syntax char(s), constants, or
+    pre-processor directives.
+
+    start contains the index of the first char of the token in the source
+    end contains the index of the last char of the token in the source
+    """
+
+    def __init__(self, token_type, name, start, end):
+        self.token_type = token_type
+        self.name = name
+        self.start = start
+        self.end = end
+        self.whence = WHENCE_STREAM
+
+    def __str__(self):
+        if not utils.DEBUG:
+            return 'Token(%r)' % self.name
+        return 'Token(%r, %s, %s)' % (self.name, self.start, self.end)
+
+    __repr__ = __str__
+
+
+def _GetString(source, start, i):
+    i = source.find('"', i+1)
+    while source[i-1] == '\\':
+        # Count the trailing backslashes.
+        backslash_count = 1
+        j = i - 2
+        while source[j] == '\\':
+            backslash_count += 1
+            j -= 1
+        # When trailing backslashes are even, they escape each other.
+        if (backslash_count % 2) == 0:
+            break
+        i = source.find('"', i+1)
+    return i + 1
+
+
+def _GetChar(source, start, i):
+    # NOTE(nnorwitz): may not be quite correct, should be good enough.
+    i = source.find("'", i+1)
+    while source[i-1] == '\\':
+        # Need to special case '\\'.
+        if (i - 2) > start and source[i-2] == '\\':
+            break
+        i = source.find("'", i+1)
+    # Try to handle unterminated single quotes (in a #if 0 block).
+    if i < 0:
+        i = start
+    return i + 1
+
+
+def GetTokens(source):
+    """Returns a sequence of Tokens.
+
+    Args:
+      source: string of C++ source code.
+
+    Yields:
+      Token that represents the next token in the source.
+    """
+    # Cache various valid character sets for speed.
+    valid_identifier_chars = VALID_IDENTIFIER_CHARS
+    hex_digits = HEX_DIGITS
+    int_or_float_digits = INT_OR_FLOAT_DIGITS
+    int_or_float_digits2 = int_or_float_digits | set('.')
+
+    # Only ignore errors while in a #if 0 block.
+    ignore_errors = False
+    count_ifs = 0
+
+    i = 0
+    end = len(source)
+    while i < end:
+        # Skip whitespace.
+        while i < end and source[i].isspace():
+            i += 1
+        if i >= end:
+            return
+
+        token_type = UNKNOWN
+        start = i
+        c = source[i]
+        if c.isalpha() or c == '_':              # Find a string token.
+            token_type = NAME
+            while source[i] in valid_identifier_chars:
+                i += 1
+            # String and character constants can look like a name if
+            # they are something like L"".
+            if (source[i] == "'" and (i - start) == 1 and
+                source[start:i] in 'uUL'):
+                # u, U, and L are valid C++0x character preffixes.
+                token_type = CONSTANT
+                i = _GetChar(source, start, i)
+            elif source[i] == "'" and source[start:i] in _STR_PREFIXES:
+                token_type = CONSTANT
+                i = _GetString(source, start, i)
+        elif c == '/' and source[i+1] == '/':    # Find // comments.
+            i = source.find('\n', i)
+            if i == -1:  # Handle EOF.
+                i = end
+            continue
+        elif c == '/' and source[i+1] == '*':    # Find /* comments. */
+            i = source.find('*/', i) + 2
+            continue
+        elif c in ':+-<>&|*=':                   # : or :: (plus other chars).
+            token_type = SYNTAX
+            i += 1
+            new_ch = source[i]
+            if new_ch == c:
+                i += 1
+            elif c == '-' and new_ch == '>':
+                i += 1
+            elif new_ch == '=':
+                i += 1
+        elif c in '()[]{}~!?^%;/.,':             # Handle single char tokens.
+            token_type = SYNTAX
+            i += 1
+            if c == '.' and source[i].isdigit():
+                token_type = CONSTANT
+                i += 1
+                while source[i] in int_or_float_digits:
+                    i += 1
+                # Handle float suffixes.
+                for suffix in ('l', 'f'):
+                    if suffix == source[i:i+1].lower():
+                        i += 1
+                        break
+        elif c.isdigit():                        # Find integer.
+            token_type = CONSTANT
+            if c == '0' and source[i+1] in 'xX':
+                # Handle hex digits.
+                i += 2
+                while source[i] in hex_digits:
+                    i += 1
+            else:
+                while source[i] in int_or_float_digits2:
+                    i += 1
+            # Handle integer (and float) suffixes.
+            for suffix in ('ull', 'll', 'ul', 'l', 'f', 'u'):
+                size = len(suffix)
+                if suffix == source[i:i+size].lower():
+                    i += size
+                    break
+        elif c == '"':                           # Find string.
+            token_type = CONSTANT
+            i = _GetString(source, start, i)
+        elif c == "'":                           # Find char.
+            token_type = CONSTANT
+            i = _GetChar(source, start, i)
+        elif c == '#':                           # Find pre-processor command.
+            token_type = PREPROCESSOR
+            got_if = source[i:i+3] == '#if' and source[i+3:i+4].isspace()
+            if got_if:
+                count_ifs += 1
+            elif source[i:i+6] == '#endif':
+                count_ifs -= 1
+                if count_ifs == 0:
+                    ignore_errors = False
+
+            # TODO(nnorwitz): handle preprocessor statements (\ continuations).
+            while 1:
+                i1 = source.find('\n', i)
+                i2 = source.find('//', i)
+                i3 = source.find('/*', i)
+                i4 = source.find('"', i)
+                # NOTE(nnorwitz): doesn't handle comments in #define macros.
+                # Get the first important symbol (newline, comment, EOF/end).
+                i = min([x for x in (i1, i2, i3, i4, end) if x != -1])
+
+                # Handle #include "dir//foo.h" properly.
+                if source[i] == '"':
+                    i = source.find('"', i+1) + 1
+                    assert i > 0
+                    continue
+                # Keep going if end of the line and the line ends with \.
+                if not (i == i1 and source[i-1] == '\\'):
+                    if got_if:
+                        condition = source[start+4:i].lstrip()
+                        if (condition.startswith('0') or
+                            condition.startswith('(0)')):
+                            ignore_errors = True
+                    break
+                i += 1
+        elif c == '\\':                          # Handle \ in code.
+            # This is different from the pre-processor \ handling.
+            i += 1
+            continue
+        elif ignore_errors:
+            # The tokenizer seems to be in pretty good shape.  This
+            # raise is conditionally disabled so that bogus code
+            # in an #if 0 block can be handled.  Since we will ignore
+            # it anyways, this is probably fine.  So disable the
+            # exception and  return the bogus char.
+            i += 1
+        else:
+            sys.stderr.write('Got invalid token in %s @ %d token:%s: %r\n' %
+                             ('?', i, c, source[i-10:i+10]))
+            raise RuntimeError('unexpected token')
+
+        if i <= 0:
+            print('Invalid index, exiting now.')
+            return
+        yield Token(token_type, source[start:i], start, i)
+
+
+if __name__ == '__main__':
+    def main(argv):
+        """Driver mostly for testing purposes."""
+        for filename in argv[1:]:
+            source = utils.ReadFile(filename)
+            if source is None:
+                continue
+
+            for token in GetTokens(source):
+                print('%-12s: %s' % (token.token_type, token.name))
+                # print('\r%6.2f%%' % (100.0 * index / token.end),)
+            sys.stdout.write('\n')
+
+
+    main(sys.argv)
diff --git a/google-breakpad/src/testing/scripts/generator/cpp/utils.py b/google-breakpad/src/testing/scripts/generator/cpp/utils.py
new file mode 100755
index 0000000..eab36ee
--- /dev/null
+++ b/google-breakpad/src/testing/scripts/generator/cpp/utils.py
@@ -0,0 +1,41 @@
+#!/usr/bin/env python
+#
+# Copyright 2007 Neal Norwitz
+# Portions Copyright 2007 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Generic utilities for C++ parsing."""
+
+__author__ = 'nnorwitz@google.com (Neal Norwitz)'
+
+
+import sys
+
+
+# Set to True to see the start/end token indices.
+DEBUG = True
+
+
+def ReadFile(filename, print_error=True):
+    """Returns the contents of a file."""
+    try:
+        fp = open(filename)
+        try:
+            return fp.read()
+        finally:
+            fp.close()
+    except IOError:
+        if print_error:
+            print('Error reading %s: %s' % (filename, sys.exc_info()[1]))
+        return None
diff --git a/google-breakpad/src/testing/scripts/generator/gmock_gen.py b/google-breakpad/src/testing/scripts/generator/gmock_gen.py
new file mode 100755
index 0000000..8cc0d13
--- /dev/null
+++ b/google-breakpad/src/testing/scripts/generator/gmock_gen.py
@@ -0,0 +1,31 @@
+#!/usr/bin/env python
+#
+# Copyright 2008 Google Inc. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Driver for starting up Google Mock class generator."""
+
+__author__ = 'nnorwitz@google.com (Neal Norwitz)'
+
+import os
+import sys
+
+if __name__ == '__main__':
+  # Add the directory of this script to the path so we can import gmock_class.
+  sys.path.append(os.path.dirname(__file__))
+
+  from cpp import gmock_class
+  # Fix the docstring in case they require the usage.
+  gmock_class.__doc__ = gmock_class.__doc__.replace('gmock_class.py', __file__)
+  gmock_class.main()
diff --git a/google-breakpad/src/testing/scripts/gmock-config.in b/google-breakpad/src/testing/scripts/gmock-config.in
new file mode 100755
index 0000000..2baefe9
--- /dev/null
+++ b/google-breakpad/src/testing/scripts/gmock-config.in
@@ -0,0 +1,303 @@
+#!/bin/sh
+
+# These variables are automatically filled in by the configure script.
+name="@PACKAGE_TARNAME@"
+version="@PACKAGE_VERSION@"
+
+show_usage()
+{
+  echo "Usage: gmock-config [OPTIONS...]"
+}
+
+show_help()
+{
+  show_usage
+  cat <<\EOF
+
+The `gmock-config' script provides access to the necessary compile and linking
+flags to connect with Google C++ Mocking Framework, both in a build prior to
+installation, and on the system proper after installation. The installation
+overrides may be issued in combination with any other queries, but will only
+affect installation queries if called on a built but not installed gmock. The
+installation queries may not be issued with any other types of queries, and
+only one installation query may be made at a time. The version queries and
+compiler flag queries may be combined as desired but not mixed. Different
+version queries are always combined with logical "and" semantics, and only the
+last of any particular query is used while all previous ones ignored. All
+versions must be specified as a sequence of numbers separated by periods.
+Compiler flag queries output the union of the sets of flags when combined.
+
+ Examples:
+  gmock-config --min-version=1.0 || echo "Insufficient Google Mock version."
+
+  g++ $(gmock-config --cppflags --cxxflags) -o foo.o -c foo.cpp
+  g++ $(gmock-config --ldflags --libs) -o foo foo.o
+
+  # When using a built but not installed Google Mock:
+  g++ $(../../my_gmock_build/scripts/gmock-config ...) ...
+
+  # When using an installed Google Mock, but with installation overrides:
+  export GMOCK_PREFIX="/opt"
+  g++ $(gmock-config --libdir="/opt/lib64" ...) ...
+
+ Help:
+  --usage                    brief usage information
+  --help                     display this help message
+
+ Installation Overrides:
+  --prefix=<dir>             overrides the installation prefix
+  --exec-prefix=<dir>        overrides the executable installation prefix
+  --libdir=<dir>             overrides the library installation prefix
+  --includedir=<dir>         overrides the header file installation prefix
+
+ Installation Queries:
+  --prefix                   installation prefix
+  --exec-prefix              executable installation prefix
+  --libdir                   library installation directory
+  --includedir               header file installation directory
+  --version                  the version of the Google Mock installation
+
+ Version Queries:
+  --min-version=VERSION      return 0 if the version is at least VERSION
+  --exact-version=VERSION    return 0 if the version is exactly VERSION
+  --max-version=VERSION      return 0 if the version is at most VERSION
+
+ Compilation Flag Queries:
+  --cppflags                 compile flags specific to the C-like preprocessors
+  --cxxflags                 compile flags appropriate for C++ programs
+  --ldflags                  linker flags
+  --libs                     libraries for linking
+
+EOF
+}
+
+# This function bounds our version with a min and a max. It uses some clever
+# POSIX-compliant variable expansion to portably do all the work in the shell
+# and avoid any dependency on a particular "sed" or "awk" implementation.
+# Notable is that it will only ever compare the first 3 components of versions.
+# Further components will be cleanly stripped off. All versions must be
+# unadorned, so "v1.0" will *not* work. The minimum version must be in $1, and
+# the max in $2. TODO(chandlerc@google.com): If this ever breaks, we should
+# investigate expanding this via autom4te from AS_VERSION_COMPARE rather than
+# continuing to maintain our own shell version.
+check_versions()
+{
+  major_version=${version%%.*}
+  minor_version="0"
+  point_version="0"
+  if test "${version#*.}" != "${version}"; then
+    minor_version=${version#*.}
+    minor_version=${minor_version%%.*}
+  fi
+  if test "${version#*.*.}" != "${version}"; then
+    point_version=${version#*.*.}
+    point_version=${point_version%%.*}
+  fi
+
+  min_version="$1"
+  min_major_version=${min_version%%.*}
+  min_minor_version="0"
+  min_point_version="0"
+  if test "${min_version#*.}" != "${min_version}"; then
+    min_minor_version=${min_version#*.}
+    min_minor_version=${min_minor_version%%.*}
+  fi
+  if test "${min_version#*.*.}" != "${min_version}"; then
+    min_point_version=${min_version#*.*.}
+    min_point_version=${min_point_version%%.*}
+  fi
+
+  max_version="$2"
+  max_major_version=${max_version%%.*}
+  max_minor_version="0"
+  max_point_version="0"
+  if test "${max_version#*.}" != "${max_version}"; then
+    max_minor_version=${max_version#*.}
+    max_minor_version=${max_minor_version%%.*}
+  fi
+  if test "${max_version#*.*.}" != "${max_version}"; then
+    max_point_version=${max_version#*.*.}
+    max_point_version=${max_point_version%%.*}
+  fi
+
+  test $(($major_version)) -lt $(($min_major_version)) && exit 1
+  if test $(($major_version)) -eq $(($min_major_version)); then
+    test $(($minor_version)) -lt $(($min_minor_version)) && exit 1
+    if test $(($minor_version)) -eq $(($min_minor_version)); then
+      test $(($point_version)) -lt $(($min_point_version)) && exit 1
+    fi
+  fi
+
+  test $(($major_version)) -gt $(($max_major_version)) && exit 1
+  if test $(($major_version)) -eq $(($max_major_version)); then
+    test $(($minor_version)) -gt $(($max_minor_version)) && exit 1
+    if test $(($minor_version)) -eq $(($max_minor_version)); then
+      test $(($point_version)) -gt $(($max_point_version)) && exit 1
+    fi
+  fi
+
+  exit 0
+}
+
+# Show the usage line when no arguments are specified.
+if test $# -eq 0; then
+  show_usage
+  exit 1
+fi
+
+while test $# -gt 0; do
+  case $1 in
+    --usage)          show_usage;         exit 0;;
+    --help)           show_help;          exit 0;;
+
+    # Installation overrides
+    --prefix=*)       GMOCK_PREFIX=${1#--prefix=};;
+    --exec-prefix=*)  GMOCK_EXEC_PREFIX=${1#--exec-prefix=};;
+    --libdir=*)       GMOCK_LIBDIR=${1#--libdir=};;
+    --includedir=*)   GMOCK_INCLUDEDIR=${1#--includedir=};;
+
+    # Installation queries
+    --prefix|--exec-prefix|--libdir|--includedir|--version)
+      if test -n "${do_query}"; then
+        show_usage
+        exit 1
+      fi
+      do_query=${1#--}
+      ;;
+
+    # Version checking
+    --min-version=*)
+      do_check_versions=yes
+      min_version=${1#--min-version=}
+      ;;
+    --max-version=*)
+      do_check_versions=yes
+      max_version=${1#--max-version=}
+      ;;
+    --exact-version=*)
+      do_check_versions=yes
+      exact_version=${1#--exact-version=}
+      ;;
+
+    # Compiler flag output
+    --cppflags)       echo_cppflags=yes;;
+    --cxxflags)       echo_cxxflags=yes;;
+    --ldflags)        echo_ldflags=yes;;
+    --libs)           echo_libs=yes;;
+
+    # Everything else is an error
+    *)                show_usage;         exit 1;;
+  esac
+  shift
+done
+
+# These have defaults filled in by the configure script but can also be
+# overridden by environment variables or command line parameters.
+prefix="${GMOCK_PREFIX:-@prefix@}"
+exec_prefix="${GMOCK_EXEC_PREFIX:-@exec_prefix@}"
+libdir="${GMOCK_LIBDIR:-@libdir@}"
+includedir="${GMOCK_INCLUDEDIR:-@includedir@}"
+
+# We try and detect if our binary is not located at its installed location. If
+# it's not, we provide variables pointing to the source and build tree rather
+# than to the install tree. We also locate Google Test using the configured
+# gtest-config script rather than searching the PATH and our bindir for one.
+# This allows building against a just-built gmock rather than an installed
+# gmock.
+bindir="@bindir@"
+this_relative_bindir=`dirname $0`
+this_bindir=`cd ${this_relative_bindir}; pwd -P`
+if test "${this_bindir}" = "${this_bindir%${bindir}}"; then
+  # The path to the script doesn't end in the bindir sequence from Autoconf,
+  # assume that we are in a build tree.
+  build_dir=`dirname ${this_bindir}`
+  src_dir=`cd ${this_bindir}/@top_srcdir@; pwd -P`
+
+  # TODO(chandlerc@google.com): This is a dangerous dependency on libtool, we
+  # should work to remove it, and/or remove libtool altogether, replacing it
+  # with direct references to the library and a link path.
+  gmock_libs="${build_dir}/lib/libgmock.la"
+  gmock_ldflags=""
+
+  # We provide hooks to include from either the source or build dir, where the
+  # build dir is always preferred. This will potentially allow us to write
+  # build rules for generated headers and have them automatically be preferred
+  # over provided versions.
+  gmock_cppflags="-I${build_dir}/include -I${src_dir}/include"
+  gmock_cxxflags=""
+
+  # Directly invoke the gtest-config script used during the build process.
+  gtest_config="@GTEST_CONFIG@"
+else
+  # We're using an installed gmock, although it may be staged under some
+  # prefix. Assume (as our own libraries do) that we can resolve the prefix,
+  # and are present in the dynamic link paths.
+  gmock_ldflags="-L${libdir}"
+  gmock_libs="-l${name}"
+  gmock_cppflags="-I${includedir}"
+  gmock_cxxflags=""
+
+  # We also prefer any gtest-config script installed in our prefix. Lacking
+  # one, we look in the PATH for one.
+  gtest_config="${bindir}/gtest-config"
+  if test ! -x "${gtest_config}"; then
+    gtest_config=`which gtest-config`
+  fi
+fi
+
+# Ensure that we have located a Google Test to link against.
+if ! test -x "${gtest_config}"; then
+  echo "Unable to locate Google Test, check your Google Mock configuration" \
+       "and installation" >&2
+  exit 1
+elif ! "${gtest_config}" "--exact-version=@GTEST_VERSION@"; then
+  echo "The Google Test found is not the same version as Google Mock was " \
+       "built against" >&2
+  exit 1
+fi
+
+# Add the necessary Google Test bits into the various flag variables
+gmock_cppflags="${gmock_cppflags} `${gtest_config} --cppflags`"
+gmock_cxxflags="${gmock_cxxflags} `${gtest_config} --cxxflags`"
+gmock_ldflags="${gmock_ldflags} `${gtest_config} --ldflags`"
+gmock_libs="${gmock_libs} `${gtest_config} --libs`"
+
+# Do an installation query if requested.
+if test -n "$do_query"; then
+  case $do_query in
+    prefix)           echo $prefix;       exit 0;;
+    exec-prefix)      echo $exec_prefix;  exit 0;;
+    libdir)           echo $libdir;       exit 0;;
+    includedir)       echo $includedir;   exit 0;;
+    version)          echo $version;      exit 0;;
+    *)                show_usage;         exit 1;;
+  esac
+fi
+
+# Do a version check if requested.
+if test "$do_check_versions" = "yes"; then
+  # Make sure we didn't receive a bad combination of parameters.
+  test "$echo_cppflags" = "yes" && show_usage && exit 1
+  test "$echo_cxxflags" = "yes" && show_usage && exit 1
+  test "$echo_ldflags" = "yes"  && show_usage && exit 1
+  test "$echo_libs" = "yes"     && show_usage && exit 1
+
+  if test "$exact_version" != ""; then
+    check_versions $exact_version $exact_version
+    # unreachable
+  else
+    check_versions ${min_version:-0.0.0} ${max_version:-9999.9999.9999}
+    # unreachable
+  fi
+fi
+
+# Do the output in the correct order so that these can be used in-line of
+# a compiler invocation.
+output=""
+test "$echo_cppflags" = "yes" && output="$output $gmock_cppflags"
+test "$echo_cxxflags" = "yes" && output="$output $gmock_cxxflags"
+test "$echo_ldflags" = "yes"  && output="$output $gmock_ldflags"
+test "$echo_libs" = "yes"     && output="$output $gmock_libs"
+echo $output
+
+exit 0
diff --git a/google-breakpad/src/testing/scripts/gmock_doctor.py b/google-breakpad/src/testing/scripts/gmock_doctor.py
new file mode 100755
index 0000000..f7c3920
--- /dev/null
+++ b/google-breakpad/src/testing/scripts/gmock_doctor.py
@@ -0,0 +1,631 @@
+#!/usr/bin/env python
+#
+# Copyright 2008, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+"""Converts compiler's errors in code using Google Mock to plain English."""
+
+__author__ = 'wan@google.com (Zhanyong Wan)'
+
+import re
+import sys
+
+_VERSION = '1.0.3'
+
+_EMAIL = 'googlemock@googlegroups.com'
+
+_COMMON_GMOCK_SYMBOLS = [
+    # Matchers
+    '_',
+    'A',
+    'AddressSatisfies',
+    'AllOf',
+    'An',
+    'AnyOf',
+    'ContainerEq',
+    'Contains',
+    'ContainsRegex',
+    'DoubleEq',
+    'ElementsAre',
+    'ElementsAreArray',
+    'EndsWith',
+    'Eq',
+    'Field',
+    'FloatEq',
+    'Ge',
+    'Gt',
+    'HasSubstr',
+    'IsInitializedProto',
+    'Le',
+    'Lt',
+    'MatcherCast',
+    'Matches',
+    'MatchesRegex',
+    'NanSensitiveDoubleEq',
+    'NanSensitiveFloatEq',
+    'Ne',
+    'Not',
+    'NotNull',
+    'Pointee',
+    'Property',
+    'Ref',
+    'ResultOf',
+    'SafeMatcherCast',
+    'StartsWith',
+    'StrCaseEq',
+    'StrCaseNe',
+    'StrEq',
+    'StrNe',
+    'Truly',
+    'TypedEq',
+    'Value',
+
+    # Actions
+    'Assign',
+    'ByRef',
+    'DeleteArg',
+    'DoAll',
+    'DoDefault',
+    'IgnoreResult',
+    'Invoke',
+    'InvokeArgument',
+    'InvokeWithoutArgs',
+    'Return',
+    'ReturnNew',
+    'ReturnNull',
+    'ReturnRef',
+    'SaveArg',
+    'SetArgReferee',
+    'SetArgPointee',
+    'SetArgumentPointee',
+    'SetArrayArgument',
+    'SetErrnoAndReturn',
+    'Throw',
+    'WithArg',
+    'WithArgs',
+    'WithoutArgs',
+
+    # Cardinalities
+    'AnyNumber',
+    'AtLeast',
+    'AtMost',
+    'Between',
+    'Exactly',
+
+    # Sequences
+    'InSequence',
+    'Sequence',
+
+    # Misc
+    'DefaultValue',
+    'Mock',
+    ]
+
+# Regex for matching source file path and line number in the compiler's errors.
+_GCC_FILE_LINE_RE = r'(?P<file>.*):(?P<line>\d+):(\d+:)?\s+'
+_CLANG_FILE_LINE_RE = r'(?P<file>.*):(?P<line>\d+):(?P<column>\d+):\s+'
+_CLANG_NON_GMOCK_FILE_LINE_RE = (
+    r'(?P<file>.*[/\\^](?!gmock-)[^/\\]+):(?P<line>\d+):(?P<column>\d+):\s+')
+
+
+def _FindAllMatches(regex, s):
+  """Generates all matches of regex in string s."""
+
+  r = re.compile(regex)
+  return r.finditer(s)
+
+
+def _GenericDiagnoser(short_name, long_name, diagnoses, msg):
+  """Diagnoses the given disease by pattern matching.
+
+  Can provide different diagnoses for different patterns.
+
+  Args:
+    short_name: Short name of the disease.
+    long_name:  Long name of the disease.
+    diagnoses:  A list of pairs (regex, pattern for formatting the diagnosis
+                for matching regex).
+    msg:        Compiler's error messages.
+  Yields:
+    Tuples of the form
+      (short name of disease, long name of disease, diagnosis).
+  """
+  for regex, diagnosis in diagnoses:
+    if re.search(regex, msg):
+      diagnosis = '%(file)s:%(line)s:' + diagnosis
+      for m in _FindAllMatches(regex, msg):
+        yield (short_name, long_name, diagnosis % m.groupdict())
+
+
+def _NeedToReturnReferenceDiagnoser(msg):
+  """Diagnoses the NRR disease, given the error messages by the compiler."""
+
+  gcc_regex = (r'In member function \'testing::internal::ReturnAction<R>.*\n'
+               + _GCC_FILE_LINE_RE + r'instantiated from here\n'
+               r'.*gmock-actions\.h.*error: creating array with negative size')
+  clang_regex = (r'error:.*array.*negative.*\r?\n'
+                 r'(.*\n)*?' +
+                 _CLANG_NON_GMOCK_FILE_LINE_RE +
+                 r'note: in instantiation of function template specialization '
+                 r'\'testing::internal::ReturnAction<(?P<type>.*)>'
+                 r'::operator Action<.*>\' requested here')
+  diagnosis = """
+You are using a Return() action in a function that returns a reference to
+%(type)s.  Please use ReturnRef() instead."""
+  return _GenericDiagnoser('NRR', 'Need to Return Reference',
+                           [(clang_regex, diagnosis),
+                            (gcc_regex, diagnosis % {'type': 'a type'})],
+                           msg)
+
+
+def _NeedToReturnSomethingDiagnoser(msg):
+  """Diagnoses the NRS disease, given the error messages by the compiler."""
+
+  gcc_regex = (_GCC_FILE_LINE_RE + r'(instantiated from here\n.'
+               r'*gmock.*actions\.h.*error: void value not ignored)'
+               r'|(error: control reaches end of non-void function)')
+  clang_regex1 = (_CLANG_FILE_LINE_RE +
+                  r'error: cannot initialize return object '
+                  r'of type \'Result\' \(aka \'(?P<return_type>.*)\'\) '
+                  r'with an rvalue of type \'void\'')
+  clang_regex2 = (_CLANG_FILE_LINE_RE +
+                  r'error: cannot initialize return object '
+                  r'of type \'(?P<return_type>.*)\' '
+                  r'with an rvalue of type \'void\'')
+  diagnosis = """
+You are using an action that returns void, but it needs to return
+%(return_type)s.  Please tell it *what* to return.  Perhaps you can use
+the pattern DoAll(some_action, Return(some_value))?"""
+  return _GenericDiagnoser(
+      'NRS',
+      'Need to Return Something',
+      [(gcc_regex, diagnosis % {'return_type': '*something*'}),
+       (clang_regex1, diagnosis),
+       (clang_regex2, diagnosis)],
+      msg)
+
+
+def _NeedToReturnNothingDiagnoser(msg):
+  """Diagnoses the NRN disease, given the error messages by the compiler."""
+
+  gcc_regex = (_GCC_FILE_LINE_RE + r'instantiated from here\n'
+               r'.*gmock-actions\.h.*error: instantiation of '
+               r'\'testing::internal::ReturnAction<R>::Impl<F>::value_\' '
+               r'as type \'void\'')
+  clang_regex1 = (r'error: field has incomplete type '
+                  r'\'Result\' \(aka \'void\'\)(\r)?\n'
+                  r'(.*\n)*?' +
+                  _CLANG_NON_GMOCK_FILE_LINE_RE + r'note: in instantiation '
+                  r'of function template specialization '
+                  r'\'testing::internal::ReturnAction<(?P<return_type>.*)>'
+                  r'::operator Action<void \(.*\)>\' requested here')
+  clang_regex2 = (r'error: field has incomplete type '
+                  r'\'Result\' \(aka \'void\'\)(\r)?\n'
+                  r'(.*\n)*?' +
+                  _CLANG_NON_GMOCK_FILE_LINE_RE + r'note: in instantiation '
+                  r'of function template specialization '
+                  r'\'testing::internal::DoBothAction<.*>'
+                  r'::operator Action<(?P<return_type>.*) \(.*\)>\' '
+                  r'requested here')
+  diagnosis = """
+You are using an action that returns %(return_type)s, but it needs to return
+void.  Please use a void-returning action instead.
+
+All actions but the last in DoAll(...) must return void.  Perhaps you need
+to re-arrange the order of actions in a DoAll(), if you are using one?"""
+  return _GenericDiagnoser(
+      'NRN',
+      'Need to Return Nothing',
+      [(gcc_regex, diagnosis % {'return_type': '*something*'}),
+       (clang_regex1, diagnosis),
+       (clang_regex2, diagnosis)],
+      msg)
+
+
+def _IncompleteByReferenceArgumentDiagnoser(msg):
+  """Diagnoses the IBRA disease, given the error messages by the compiler."""
+
+  gcc_regex = (_GCC_FILE_LINE_RE + r'instantiated from here\n'
+               r'.*gtest-printers\.h.*error: invalid application of '
+               r'\'sizeof\' to incomplete type \'(?P<type>.*)\'')
+
+  clang_regex = (r'.*gtest-printers\.h.*error: invalid application of '
+                 r'\'sizeof\' to an incomplete type '
+                 r'\'(?P<type>.*)( const)?\'\r?\n'
+                 r'(.*\n)*?' +
+                 _CLANG_NON_GMOCK_FILE_LINE_RE +
+                 r'note: in instantiation of member function '
+                 r'\'testing::internal2::TypeWithoutFormatter<.*>::'
+                 r'PrintValue\' requested here')
+  diagnosis = """
+In order to mock this function, Google Mock needs to see the definition
+of type "%(type)s" - declaration alone is not enough.  Either #include
+the header that defines it, or change the argument to be passed
+by pointer."""
+
+  return _GenericDiagnoser('IBRA', 'Incomplete By-Reference Argument Type',
+                           [(gcc_regex, diagnosis),
+                            (clang_regex, diagnosis)],
+                           msg)
+
+
+def _OverloadedFunctionMatcherDiagnoser(msg):
+  """Diagnoses the OFM disease, given the error messages by the compiler."""
+
+  gcc_regex = (_GCC_FILE_LINE_RE + r'error: no matching function for '
+               r'call to \'Truly\(<unresolved overloaded function type>\)')
+  clang_regex = (_CLANG_FILE_LINE_RE + r'error: no matching function for '
+                 r'call to \'Truly')
+  diagnosis = """
+The argument you gave to Truly() is an overloaded function.  Please tell
+your compiler which overloaded version you want to use.
+
+For example, if you want to use the version whose signature is
+  bool Foo(int n);
+you should write
+  Truly(static_cast<bool (*)(int n)>(Foo))"""
+  return _GenericDiagnoser('OFM', 'Overloaded Function Matcher',
+                           [(gcc_regex, diagnosis),
+                            (clang_regex, diagnosis)],
+                           msg)
+
+
+def _OverloadedFunctionActionDiagnoser(msg):
+  """Diagnoses the OFA disease, given the error messages by the compiler."""
+
+  gcc_regex = (_GCC_FILE_LINE_RE + r'error: no matching function for call to '
+               r'\'Invoke\(<unresolved overloaded function type>')
+  clang_regex = (_CLANG_FILE_LINE_RE + r'error: no matching '
+                 r'function for call to \'Invoke\'\r?\n'
+                 r'(.*\n)*?'
+                 r'.*\bgmock-\w+-actions\.h:\d+:\d+:\s+'
+                 r'note: candidate template ignored:\s+'
+                 r'couldn\'t infer template argument \'FunctionImpl\'')
+  diagnosis = """
+Function you are passing to Invoke is overloaded.  Please tell your compiler
+which overloaded version you want to use.
+
+For example, if you want to use the version whose signature is
+  bool MyFunction(int n, double x);
+you should write something like
+  Invoke(static_cast<bool (*)(int n, double x)>(MyFunction))"""
+  return _GenericDiagnoser('OFA', 'Overloaded Function Action',
+                           [(gcc_regex, diagnosis),
+                            (clang_regex, diagnosis)],
+                           msg)
+
+
+def _OverloadedMethodActionDiagnoser(msg):
+  """Diagnoses the OMA disease, given the error messages by the compiler."""
+
+  gcc_regex = (_GCC_FILE_LINE_RE + r'error: no matching function for '
+               r'call to \'Invoke\(.+, <unresolved overloaded function '
+               r'type>\)')
+  clang_regex = (_CLANG_FILE_LINE_RE + r'error: no matching function '
+                 r'for call to \'Invoke\'\r?\n'
+                 r'(.*\n)*?'
+                 r'.*\bgmock-\w+-actions\.h:\d+:\d+: '
+                 r'note: candidate function template not viable: '
+                 r'requires .*, but 2 (arguments )?were provided')
+  diagnosis = """
+The second argument you gave to Invoke() is an overloaded method.  Please
+tell your compiler which overloaded version you want to use.
+
+For example, if you want to use the version whose signature is
+  class Foo {
+    ...
+    bool Bar(int n, double x);
+  };
+you should write something like
+  Invoke(foo, static_cast<bool (Foo::*)(int n, double x)>(&Foo::Bar))"""
+  return _GenericDiagnoser('OMA', 'Overloaded Method Action',
+                           [(gcc_regex, diagnosis),
+                            (clang_regex, diagnosis)],
+                           msg)
+
+
+def _MockObjectPointerDiagnoser(msg):
+  """Diagnoses the MOP disease, given the error messages by the compiler."""
+
+  gcc_regex = (_GCC_FILE_LINE_RE + r'error: request for member '
+               r'\'gmock_(?P<method>.+)\' in \'(?P<mock_object>.+)\', '
+               r'which is of non-class type \'(.*::)*(?P<class_name>.+)\*\'')
+  clang_regex = (_CLANG_FILE_LINE_RE + r'error: member reference type '
+                 r'\'(?P<class_name>.*?) *\' is a pointer; '
+                 r'maybe you meant to use \'->\'\?')
+  diagnosis = """
+The first argument to ON_CALL() and EXPECT_CALL() must be a mock *object*,
+not a *pointer* to it.  Please write '*(%(mock_object)s)' instead of
+'%(mock_object)s' as your first argument.
+
+For example, given the mock class:
+
+  class %(class_name)s : public ... {
+    ...
+    MOCK_METHOD0(%(method)s, ...);
+  };
+
+and the following mock instance:
+
+  %(class_name)s* mock_ptr = ...
+
+you should use the EXPECT_CALL like this:
+
+  EXPECT_CALL(*mock_ptr, %(method)s(...));"""
+
+  return _GenericDiagnoser(
+      'MOP',
+      'Mock Object Pointer',
+      [(gcc_regex, diagnosis),
+       (clang_regex, diagnosis % {'mock_object': 'mock_object',
+                                  'method': 'method',
+                                  'class_name': '%(class_name)s'})],
+       msg)
+
+
+def _NeedToUseSymbolDiagnoser(msg):
+  """Diagnoses the NUS disease, given the error messages by the compiler."""
+
+  gcc_regex = (_GCC_FILE_LINE_RE + r'error: \'(?P<symbol>.+)\' '
+               r'(was not declared in this scope|has not been declared)')
+  clang_regex = (_CLANG_FILE_LINE_RE +
+                 r'error: (use of undeclared identifier|unknown type name|'
+                 r'no template named) \'(?P<symbol>[^\']+)\'')
+  diagnosis = """
+'%(symbol)s' is defined by Google Mock in the testing namespace.
+Did you forget to write
+  using testing::%(symbol)s;
+?"""
+  for m in (list(_FindAllMatches(gcc_regex, msg)) +
+            list(_FindAllMatches(clang_regex, msg))):
+    symbol = m.groupdict()['symbol']
+    if symbol in _COMMON_GMOCK_SYMBOLS:
+      yield ('NUS', 'Need to Use Symbol', diagnosis % m.groupdict())
+
+
+def _NeedToUseReturnNullDiagnoser(msg):
+  """Diagnoses the NRNULL disease, given the error messages by the compiler."""
+
+  gcc_regex = ('instantiated from \'testing::internal::ReturnAction<R>'
+               '::operator testing::Action<Func>\(\) const.*\n' +
+               _GCC_FILE_LINE_RE + r'instantiated from here\n'
+               r'.*error: no matching function for call to \'ImplicitCast_\('
+               r'(:?long )?int&\)')
+  clang_regex = (r'\bgmock-actions.h:.* error: no matching function for '
+                 r'call to \'ImplicitCast_\'\r?\n'
+                 r'(.*\n)*?' +
+                 _CLANG_NON_GMOCK_FILE_LINE_RE + r'note: in instantiation '
+                 r'of function template specialization '
+                 r'\'testing::internal::ReturnAction<(int|long)>::operator '
+                 r'Action<(?P<type>.*)\(\)>\' requested here')
+  diagnosis = """
+You are probably calling Return(NULL) and the compiler isn't sure how to turn
+NULL into %(type)s. Use ReturnNull() instead.
+Note: the line number may be off; please fix all instances of Return(NULL)."""
+  return _GenericDiagnoser(
+      'NRNULL', 'Need to use ReturnNull',
+      [(clang_regex, diagnosis),
+       (gcc_regex, diagnosis % {'type': 'the right type'})],
+      msg)
+
+
+def _TypeInTemplatedBaseDiagnoser(msg):
+  """Diagnoses the TTB disease, given the error messages by the compiler."""
+
+  # This version works when the type is used as the mock function's return
+  # type.
+  gcc_4_3_1_regex_type_in_retval = (
+      r'In member function \'int .*\n' + _GCC_FILE_LINE_RE +
+      r'error: a function call cannot appear in a constant-expression')
+  gcc_4_4_0_regex_type_in_retval = (
+      r'error: a function call cannot appear in a constant-expression'
+      + _GCC_FILE_LINE_RE + r'error: template argument 1 is invalid\n')
+  # This version works when the type is used as the mock function's sole
+  # parameter type.
+  gcc_regex_type_of_sole_param = (
+      _GCC_FILE_LINE_RE +
+      r'error: \'(?P<type>.+)\' was not declared in this scope\n'
+      r'.*error: template argument 1 is invalid\n')
+  # This version works when the type is used as a parameter of a mock
+  # function that has multiple parameters.
+  gcc_regex_type_of_a_param = (
+      r'error: expected `;\' before \'::\' token\n'
+      + _GCC_FILE_LINE_RE +
+      r'error: \'(?P<type>.+)\' was not declared in this scope\n'
+      r'.*error: template argument 1 is invalid\n'
+      r'.*error: \'.+\' was not declared in this scope')
+  clang_regex_type_of_retval_or_sole_param = (
+      _CLANG_FILE_LINE_RE +
+      r'error: use of undeclared identifier \'(?P<type>.*)\'\n'
+      r'(.*\n)*?'
+      r'(?P=file):(?P=line):\d+: error: '
+      r'non-friend class member \'Result\' cannot have a qualified name'
+      )
+  clang_regex_type_of_a_param = (
+      _CLANG_FILE_LINE_RE +
+      r'error: C\+\+ requires a type specifier for all declarations\n'
+      r'(.*\n)*?'
+      r'(?P=file):(?P=line):(?P=column): error: '
+      r'C\+\+ requires a type specifier for all declarations'
+      )
+  clang_regex_unknown_type = (
+      _CLANG_FILE_LINE_RE +
+      r'error: unknown type name \'(?P<type>[^\']+)\''
+      )
+
+  diagnosis = """
+In a mock class template, types or typedefs defined in the base class
+template are *not* automatically visible.  This is how C++ works.  Before
+you can use a type or typedef named %(type)s defined in base class Base<T>, you
+need to make it visible.  One way to do it is:
+
+  typedef typename Base<T>::%(type)s %(type)s;"""
+
+  for diag in _GenericDiagnoser(
+      'TTB', 'Type in Template Base',
+      [(gcc_4_3_1_regex_type_in_retval, diagnosis % {'type': 'Foo'}),
+       (gcc_4_4_0_regex_type_in_retval, diagnosis % {'type': 'Foo'}),
+       (gcc_regex_type_of_sole_param, diagnosis),
+       (gcc_regex_type_of_a_param, diagnosis),
+       (clang_regex_type_of_retval_or_sole_param, diagnosis),
+       (clang_regex_type_of_a_param, diagnosis % {'type': 'Foo'})],
+      msg):
+    yield diag
+  # Avoid overlap with the NUS pattern.
+  for m in _FindAllMatches(clang_regex_unknown_type, msg):
+    type_ = m.groupdict()['type']
+    if type_ not in _COMMON_GMOCK_SYMBOLS:
+      yield ('TTB', 'Type in Template Base', diagnosis % m.groupdict())
+
+
+def _WrongMockMethodMacroDiagnoser(msg):
+  """Diagnoses the WMM disease, given the error messages by the compiler."""
+
+  gcc_regex = (_GCC_FILE_LINE_RE +
+               r'.*this_method_does_not_take_(?P<wrong_args>\d+)_argument.*\n'
+               r'.*\n'
+               r'.*candidates are.*FunctionMocker<[^>]+A(?P<args>\d+)\)>')
+  clang_regex = (_CLANG_NON_GMOCK_FILE_LINE_RE +
+                 r'error:.*array.*negative.*r?\n'
+                 r'(.*\n)*?'
+                 r'(?P=file):(?P=line):(?P=column): error: too few arguments '
+                 r'to function call, expected (?P<args>\d+), '
+                 r'have (?P<wrong_args>\d+)')
+  diagnosis = """
+You are using MOCK_METHOD%(wrong_args)s to define a mock method that has
+%(args)s arguments. Use MOCK_METHOD%(args)s (or MOCK_CONST_METHOD%(args)s,
+MOCK_METHOD%(args)s_T, MOCK_CONST_METHOD%(args)s_T as appropriate) instead."""
+  return _GenericDiagnoser('WMM', 'Wrong MOCK_METHODn Macro',
+                           [(gcc_regex, diagnosis),
+                            (clang_regex, diagnosis)],
+                           msg)
+
+
+def _WrongParenPositionDiagnoser(msg):
+  """Diagnoses the WPP disease, given the error messages by the compiler."""
+
+  gcc_regex = (_GCC_FILE_LINE_RE +
+               r'error:.*testing::internal::MockSpec<.* has no member named \''
+               r'(?P<method>\w+)\'')
+  clang_regex = (_CLANG_NON_GMOCK_FILE_LINE_RE +
+                 r'error: no member named \'(?P<method>\w+)\' in '
+                 r'\'testing::internal::MockSpec<.*>\'')
+  diagnosis = """
+The closing parenthesis of ON_CALL or EXPECT_CALL should be *before*
+".%(method)s".  For example, you should write:
+  EXPECT_CALL(my_mock, Foo(_)).%(method)s(...);
+instead of:
+  EXPECT_CALL(my_mock, Foo(_).%(method)s(...));"""
+  return _GenericDiagnoser('WPP', 'Wrong Parenthesis Position',
+                           [(gcc_regex, diagnosis),
+                            (clang_regex, diagnosis)],
+                           msg)
+
+
+_DIAGNOSERS = [
+    _IncompleteByReferenceArgumentDiagnoser,
+    _MockObjectPointerDiagnoser,
+    _NeedToReturnNothingDiagnoser,
+    _NeedToReturnReferenceDiagnoser,
+    _NeedToReturnSomethingDiagnoser,
+    _NeedToUseReturnNullDiagnoser,
+    _NeedToUseSymbolDiagnoser,
+    _OverloadedFunctionActionDiagnoser,
+    _OverloadedFunctionMatcherDiagnoser,
+    _OverloadedMethodActionDiagnoser,
+    _TypeInTemplatedBaseDiagnoser,
+    _WrongMockMethodMacroDiagnoser,
+    _WrongParenPositionDiagnoser,
+    ]
+
+
+def Diagnose(msg):
+  """Generates all possible diagnoses given the compiler error message."""
+
+  msg = re.sub(r'\x1b\[[^m]*m', '', msg)  # Strips all color formatting.
+  # Assuming the string is using the UTF-8 encoding, replaces the left and
+  # the right single quote characters with apostrophes.
+  msg = re.sub(r'(\xe2\x80\x98|\xe2\x80\x99)', "'", msg)
+
+  diagnoses = []
+  for diagnoser in _DIAGNOSERS:
+    for diag in diagnoser(msg):
+      diagnosis = '[%s - %s]\n%s' % diag
+      if not diagnosis in diagnoses:
+        diagnoses.append(diagnosis)
+  return diagnoses
+
+
+def main():
+  print ('Google Mock Doctor v%s - '
+         'diagnoses problems in code using Google Mock.' % _VERSION)
+
+  if sys.stdin.isatty():
+    print ('Please copy and paste the compiler errors here.  Press c-D when '
+           'you are done:')
+  else:
+    print 'Waiting for compiler errors on stdin . . .'
+
+  msg = sys.stdin.read().strip()
+  diagnoses = Diagnose(msg)
+  count = len(diagnoses)
+  if not count:
+    print ("""
+Your compiler complained:
+8<------------------------------------------------------------
+%s
+------------------------------------------------------------>8
+
+Uh-oh, I'm not smart enough to figure out what the problem is. :-(
+However...
+If you send your source code and the compiler's error messages to
+%s, you can be helped and I can get smarter --
+win-win for us!""" % (msg, _EMAIL))
+  else:
+    print '------------------------------------------------------------'
+    print 'Your code appears to have the following',
+    if count > 1:
+      print '%s diseases:' % (count,)
+    else:
+      print 'disease:'
+    i = 0
+    for d in diagnoses:
+      i += 1
+      if count > 1:
+        print '\n#%s:' % (i,)
+      print d
+    print ("""
+How did I do?  If you think I'm wrong or unhelpful, please send your
+source code and the compiler's error messages to %s.
+Then you can be helped and I can get smarter -- I promise I won't be upset!""" %
+           _EMAIL)
+
+
+if __name__ == '__main__':
+  main()
diff --git a/google-breakpad/src/testing/scripts/upload.py b/google-breakpad/src/testing/scripts/upload.py
new file mode 100755
index 0000000..6e6f9a1
--- /dev/null
+++ b/google-breakpad/src/testing/scripts/upload.py
@@ -0,0 +1,1387 @@
+#!/usr/bin/env python
+#
+# Copyright 2007 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Tool for uploading diffs from a version control system to the codereview app.
+
+Usage summary: upload.py [options] [-- diff_options]
+
+Diff options are passed to the diff command of the underlying system.
+
+Supported version control systems:
+  Git
+  Mercurial
+  Subversion
+
+It is important for Git/Mercurial users to specify a tree/node/branch to diff
+against by using the '--rev' option.
+"""
+# This code is derived from appcfg.py in the App Engine SDK (open source),
+# and from ASPN recipe #146306.
+
+import cookielib
+import getpass
+import logging
+import md5
+import mimetypes
+import optparse
+import os
+import re
+import socket
+import subprocess
+import sys
+import urllib
+import urllib2
+import urlparse
+
+try:
+  import readline
+except ImportError:
+  pass
+
+# The logging verbosity:
+#  0: Errors only.
+#  1: Status messages.
+#  2: Info logs.
+#  3: Debug logs.
+verbosity = 1
+
+# Max size of patch or base file.
+MAX_UPLOAD_SIZE = 900 * 1024
+
+
+def GetEmail(prompt):
+  """Prompts the user for their email address and returns it.
+
+  The last used email address is saved to a file and offered up as a suggestion
+  to the user. If the user presses enter without typing in anything the last
+  used email address is used. If the user enters a new address, it is saved
+  for next time we prompt.
+
+  """
+  last_email_file_name = os.path.expanduser("~/.last_codereview_email_address")
+  last_email = ""
+  if os.path.exists(last_email_file_name):
+    try:
+      last_email_file = open(last_email_file_name, "r")
+      last_email = last_email_file.readline().strip("\n")
+      last_email_file.close()
+      prompt += " [%s]" % last_email
+    except IOError, e:
+      pass
+  email = raw_input(prompt + ": ").strip()
+  if email:
+    try:
+      last_email_file = open(last_email_file_name, "w")
+      last_email_file.write(email)
+      last_email_file.close()
+    except IOError, e:
+      pass
+  else:
+    email = last_email
+  return email
+
+
+def StatusUpdate(msg):
+  """Print a status message to stdout.
+
+  If 'verbosity' is greater than 0, print the message.
+
+  Args:
+    msg: The string to print.
+  """
+  if verbosity > 0:
+    print msg
+
+
+def ErrorExit(msg):
+  """Print an error message to stderr and exit."""
+  print >>sys.stderr, msg
+  sys.exit(1)
+
+
+class ClientLoginError(urllib2.HTTPError):
+  """Raised to indicate there was an error authenticating with ClientLogin."""
+
+  def __init__(self, url, code, msg, headers, args):
+    urllib2.HTTPError.__init__(self, url, code, msg, headers, None)
+    self.args = args
+    self.reason = args["Error"]
+
+
+class AbstractRpcServer(object):
+  """Provides a common interface for a simple RPC server."""
+
+  def __init__(self, host, auth_function, host_override=None, extra_headers={},
+               save_cookies=False):
+    """Creates a new HttpRpcServer.
+
+    Args:
+      host: The host to send requests to.
+      auth_function: A function that takes no arguments and returns an
+        (email, password) tuple when called. Will be called if authentication
+        is required.
+      host_override: The host header to send to the server (defaults to host).
+      extra_headers: A dict of extra headers to append to every request.
+      save_cookies: If True, save the authentication cookies to local disk.
+        If False, use an in-memory cookiejar instead.  Subclasses must
+        implement this functionality.  Defaults to False.
+    """
+    self.host = host
+    self.host_override = host_override
+    self.auth_function = auth_function
+    self.authenticated = False
+    self.extra_headers = extra_headers
+    self.save_cookies = save_cookies
+    self.opener = self._GetOpener()
+    if self.host_override:
+      logging.info("Server: %s; Host: %s", self.host, self.host_override)
+    else:
+      logging.info("Server: %s", self.host)
+
+  def _GetOpener(self):
+    """Returns an OpenerDirector for making HTTP requests.
+
+    Returns:
+      A urllib2.OpenerDirector object.
+    """
+    raise NotImplementedError()
+
+  def _CreateRequest(self, url, data=None):
+    """Creates a new urllib request."""
+    logging.debug("Creating request for: '%s' with payload:\n%s", url, data)
+    req = urllib2.Request(url, data=data)
+    if self.host_override:
+      req.add_header("Host", self.host_override)
+    for key, value in self.extra_headers.iteritems():
+      req.add_header(key, value)
+    return req
+
+  def _GetAuthToken(self, email, password):
+    """Uses ClientLogin to authenticate the user, returning an auth token.
+
+    Args:
+      email:    The user's email address
+      password: The user's password
+
+    Raises:
+      ClientLoginError: If there was an error authenticating with ClientLogin.
+      HTTPError: If there was some other form of HTTP error.
+
+    Returns:
+      The authentication token returned by ClientLogin.
+    """
+    account_type = "GOOGLE"
+    if self.host.endswith(".google.com"):
+      # Needed for use inside Google.
+      account_type = "HOSTED"
+    req = self._CreateRequest(
+        url="https://www.google.com/accounts/ClientLogin",
+        data=urllib.urlencode({
+            "Email": email,
+            "Passwd": password,
+            "service": "ah",
+            "source": "rietveld-codereview-upload",
+            "accountType": account_type,
+        }),
+    )
+    try:
+      response = self.opener.open(req)
+      response_body = response.read()
+      response_dict = dict(x.split("=")
+                           for x in response_body.split("\n") if x)
+      return response_dict["Auth"]
+    except urllib2.HTTPError, e:
+      if e.code == 403:
+        body = e.read()
+        response_dict = dict(x.split("=", 1) for x in body.split("\n") if x)
+        raise ClientLoginError(req.get_full_url(), e.code, e.msg,
+                               e.headers, response_dict)
+      else:
+        raise
+
+  def _GetAuthCookie(self, auth_token):
+    """Fetches authentication cookies for an authentication token.
+
+    Args:
+      auth_token: The authentication token returned by ClientLogin.
+
+    Raises:
+      HTTPError: If there was an error fetching the authentication cookies.
+    """
+    # This is a dummy value to allow us to identify when we're successful.
+    continue_location = "http://localhost/"
+    args = {"continue": continue_location, "auth": auth_token}
+    req = self._CreateRequest("http://%s/_ah/login?%s" %
+                              (self.host, urllib.urlencode(args)))
+    try:
+      response = self.opener.open(req)
+    except urllib2.HTTPError, e:
+      response = e
+    if (response.code != 302 or
+        response.info()["location"] != continue_location):
+      raise urllib2.HTTPError(req.get_full_url(), response.code, response.msg,
+                              response.headers, response.fp)
+    self.authenticated = True
+
+  def _Authenticate(self):
+    """Authenticates the user.
+
+    The authentication process works as follows:
+     1) We get a username and password from the user
+     2) We use ClientLogin to obtain an AUTH token for the user
+        (see http://code.google.com/apis/accounts/AuthForInstalledApps.html).
+     3) We pass the auth token to /_ah/login on the server to obtain an
+        authentication cookie. If login was successful, it tries to redirect
+        us to the URL we provided.
+
+    If we attempt to access the upload API without first obtaining an
+    authentication cookie, it returns a 401 response and directs us to
+    authenticate ourselves with ClientLogin.
+    """
+    for i in range(3):
+      credentials = self.auth_function()
+      try:
+        auth_token = self._GetAuthToken(credentials[0], credentials[1])
+      except ClientLoginError, e:
+        if e.reason == "BadAuthentication":
+          print >>sys.stderr, "Invalid username or password."
+          continue
+        if e.reason == "CaptchaRequired":
+          print >>sys.stderr, (
+              "Please go to\n"
+              "https://www.google.com/accounts/DisplayUnlockCaptcha\n"
+              "and verify you are a human.  Then try again.")
+          break
+        if e.reason == "NotVerified":
+          print >>sys.stderr, "Account not verified."
+          break
+        if e.reason == "TermsNotAgreed":
+          print >>sys.stderr, "User has not agreed to TOS."
+          break
+        if e.reason == "AccountDeleted":
+          print >>sys.stderr, "The user account has been deleted."
+          break
+        if e.reason == "AccountDisabled":
+          print >>sys.stderr, "The user account has been disabled."
+          break
+        if e.reason == "ServiceDisabled":
+          print >>sys.stderr, ("The user's access to the service has been "
+                               "disabled.")
+          break
+        if e.reason == "ServiceUnavailable":
+          print >>sys.stderr, "The service is not available; try again later."
+          break
+        raise
+      self._GetAuthCookie(auth_token)
+      return
+
+  def Send(self, request_path, payload=None,
+           content_type="application/octet-stream",
+           timeout=None,
+           **kwargs):
+    """Sends an RPC and returns the response.
+
+    Args:
+      request_path: The path to send the request to, eg /api/appversion/create.
+      payload: The body of the request, or None to send an empty request.
+      content_type: The Content-Type header to use.
+      timeout: timeout in seconds; default None i.e. no timeout.
+        (Note: for large requests on OS X, the timeout doesn't work right.)
+      kwargs: Any keyword arguments are converted into query string parameters.
+
+    Returns:
+      The response body, as a string.
+    """
+    # TODO: Don't require authentication.  Let the server say
+    # whether it is necessary.
+    if not self.authenticated:
+      self._Authenticate()
+
+    old_timeout = socket.getdefaulttimeout()
+    socket.setdefaulttimeout(timeout)
+    try:
+      tries = 0
+      while True:
+        tries += 1
+        args = dict(kwargs)
+        url = "http://%s%s" % (self.host, request_path)
+        if args:
+          url += "?" + urllib.urlencode(args)
+        req = self._CreateRequest(url=url, data=payload)
+        req.add_header("Content-Type", content_type)
+        try:
+          f = self.opener.open(req)
+          response = f.read()
+          f.close()
+          return response
+        except urllib2.HTTPError, e:
+          if tries > 3:
+            raise
+          elif e.code == 401:
+            self._Authenticate()
+##           elif e.code >= 500 and e.code < 600:
+##             # Server Error - try again.
+##             continue
+          else:
+            raise
+    finally:
+      socket.setdefaulttimeout(old_timeout)
+
+
+class HttpRpcServer(AbstractRpcServer):
+  """Provides a simplified RPC-style interface for HTTP requests."""
+
+  def _Authenticate(self):
+    """Save the cookie jar after authentication."""
+    super(HttpRpcServer, self)._Authenticate()
+    if self.save_cookies:
+      StatusUpdate("Saving authentication cookies to %s" % self.cookie_file)
+      self.cookie_jar.save()
+
+  def _GetOpener(self):
+    """Returns an OpenerDirector that supports cookies and ignores redirects.
+
+    Returns:
+      A urllib2.OpenerDirector object.
+    """
+    opener = urllib2.OpenerDirector()
+    opener.add_handler(urllib2.ProxyHandler())
+    opener.add_handler(urllib2.UnknownHandler())
+    opener.add_handler(urllib2.HTTPHandler())
+    opener.add_handler(urllib2.HTTPDefaultErrorHandler())
+    opener.add_handler(urllib2.HTTPSHandler())
+    opener.add_handler(urllib2.HTTPErrorProcessor())
+    if self.save_cookies:
+      self.cookie_file = os.path.expanduser("~/.codereview_upload_cookies")
+      self.cookie_jar = cookielib.MozillaCookieJar(self.cookie_file)
+      if os.path.exists(self.cookie_file):
+        try:
+          self.cookie_jar.load()
+          self.authenticated = True
+          StatusUpdate("Loaded authentication cookies from %s" %
+                       self.cookie_file)
+        except (cookielib.LoadError, IOError):
+          # Failed to load cookies - just ignore them.
+          pass
+      else:
+        # Create an empty cookie file with mode 600
+        fd = os.open(self.cookie_file, os.O_CREAT, 0600)
+        os.close(fd)
+      # Always chmod the cookie file
+      os.chmod(self.cookie_file, 0600)
+    else:
+      # Don't save cookies across runs of update.py.
+      self.cookie_jar = cookielib.CookieJar()
+    opener.add_handler(urllib2.HTTPCookieProcessor(self.cookie_jar))
+    return opener
+
+
+parser = optparse.OptionParser(usage="%prog [options] [-- diff_options]")
+parser.add_option("-y", "--assume_yes", action="store_true",
+                  dest="assume_yes", default=False,
+                  help="Assume that the answer to yes/no questions is 'yes'.")
+# Logging
+group = parser.add_option_group("Logging options")
+group.add_option("-q", "--quiet", action="store_const", const=0,
+                 dest="verbose", help="Print errors only.")
+group.add_option("-v", "--verbose", action="store_const", const=2,
+                 dest="verbose", default=1,
+                 help="Print info level logs (default).")
+group.add_option("--noisy", action="store_const", const=3,
+                 dest="verbose", help="Print all logs.")
+# Review server
+group = parser.add_option_group("Review server options")
+group.add_option("-s", "--server", action="store", dest="server",
+                 default="codereview.appspot.com",
+                 metavar="SERVER",
+                 help=("The server to upload to. The format is host[:port]. "
+                       "Defaults to 'codereview.appspot.com'."))
+group.add_option("-e", "--email", action="store", dest="email",
+                 metavar="EMAIL", default=None,
+                 help="The username to use. Will prompt if omitted.")
+group.add_option("-H", "--host", action="store", dest="host",
+                 metavar="HOST", default=None,
+                 help="Overrides the Host header sent with all RPCs.")
+group.add_option("--no_cookies", action="store_false",
+                 dest="save_cookies", default=True,
+                 help="Do not save authentication cookies to local disk.")
+# Issue
+group = parser.add_option_group("Issue options")
+group.add_option("-d", "--description", action="store", dest="description",
+                 metavar="DESCRIPTION", default=None,
+                 help="Optional description when creating an issue.")
+group.add_option("-f", "--description_file", action="store",
+                 dest="description_file", metavar="DESCRIPTION_FILE",
+                 default=None,
+                 help="Optional path of a file that contains "
+                      "the description when creating an issue.")
+group.add_option("-r", "--reviewers", action="store", dest="reviewers",
+                 metavar="REVIEWERS", default=None,
+                 help="Add reviewers (comma separated email addresses).")
+group.add_option("--cc", action="store", dest="cc",
+                 metavar="CC", default=None,
+                 help="Add CC (comma separated email addresses).")
+# Upload options
+group = parser.add_option_group("Patch options")
+group.add_option("-m", "--message", action="store", dest="message",
+                 metavar="MESSAGE", default=None,
+                 help="A message to identify the patch. "
+                      "Will prompt if omitted.")
+group.add_option("-i", "--issue", type="int", action="store",
+                 metavar="ISSUE", default=None,
+                 help="Issue number to which to add. Defaults to new issue.")
+group.add_option("--download_base", action="store_true",
+                 dest="download_base", default=False,
+                 help="Base files will be downloaded by the server "
+                 "(side-by-side diffs may not work on files with CRs).")
+group.add_option("--rev", action="store", dest="revision",
+                 metavar="REV", default=None,
+                 help="Branch/tree/revision to diff against (used by DVCS).")
+group.add_option("--send_mail", action="store_true",
+                 dest="send_mail", default=False,
+                 help="Send notification email to reviewers.")
+
+
+def GetRpcServer(options):
+  """Returns an instance of an AbstractRpcServer.
+
+  Returns:
+    A new AbstractRpcServer, on which RPC calls can be made.
+  """
+
+  rpc_server_class = HttpRpcServer
+
+  def GetUserCredentials():
+    """Prompts the user for a username and password."""
+    email = options.email
+    if email is None:
+      email = GetEmail("Email (login for uploading to %s)" % options.server)
+    password = getpass.getpass("Password for %s: " % email)
+    return (email, password)
+
+  # If this is the dev_appserver, use fake authentication.
+  host = (options.host or options.server).lower()
+  if host == "localhost" or host.startswith("localhost:"):
+    email = options.email
+    if email is None:
+      email = "test@example.com"
+      logging.info("Using debug user %s.  Override with --email" % email)
+    server = rpc_server_class(
+        options.server,
+        lambda: (email, "password"),
+        host_override=options.host,
+        extra_headers={"Cookie":
+                       'dev_appserver_login="%s:False"' % email},
+        save_cookies=options.save_cookies)
+    # Don't try to talk to ClientLogin.
+    server.authenticated = True
+    return server
+
+  return rpc_server_class(options.server, GetUserCredentials,
+                          host_override=options.host,
+                          save_cookies=options.save_cookies)
+
+
+def EncodeMultipartFormData(fields, files):
+  """Encode form fields for multipart/form-data.
+
+  Args:
+    fields: A sequence of (name, value) elements for regular form fields.
+    files: A sequence of (name, filename, value) elements for data to be
+           uploaded as files.
+  Returns:
+    (content_type, body) ready for httplib.HTTP instance.
+
+  Source:
+    http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/146306
+  """
+  BOUNDARY = '-M-A-G-I-C---B-O-U-N-D-A-R-Y-'
+  CRLF = '\r\n'
+  lines = []
+  for (key, value) in fields:
+    lines.append('--' + BOUNDARY)
+    lines.append('Content-Disposition: form-data; name="%s"' % key)
+    lines.append('')
+    lines.append(value)
+  for (key, filename, value) in files:
+    lines.append('--' + BOUNDARY)
+    lines.append('Content-Disposition: form-data; name="%s"; filename="%s"' %
+             (key, filename))
+    lines.append('Content-Type: %s' % GetContentType(filename))
+    lines.append('')
+    lines.append(value)
+  lines.append('--' + BOUNDARY + '--')
+  lines.append('')
+  body = CRLF.join(lines)
+  content_type = 'multipart/form-data; boundary=%s' % BOUNDARY
+  return content_type, body
+
+
+def GetContentType(filename):
+  """Helper to guess the content-type from the filename."""
+  return mimetypes.guess_type(filename)[0] or 'application/octet-stream'
+
+
+# Use a shell for subcommands on Windows to get a PATH search.
+use_shell = sys.platform.startswith("win")
+
+def RunShellWithReturnCode(command, print_output=False,
+                           universal_newlines=True):
+  """Executes a command and returns the output from stdout and the return code.
+
+  Args:
+    command: Command to execute.
+    print_output: If True, the output is printed to stdout.
+                  If False, both stdout and stderr are ignored.
+    universal_newlines: Use universal_newlines flag (default: True).
+
+  Returns:
+    Tuple (output, return code)
+  """
+  logging.info("Running %s", command)
+  p = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE,
+                       shell=use_shell, universal_newlines=universal_newlines)
+  if print_output:
+    output_array = []
+    while True:
+      line = p.stdout.readline()
+      if not line:
+        break
+      print line.strip("\n")
+      output_array.append(line)
+    output = "".join(output_array)
+  else:
+    output = p.stdout.read()
+  p.wait()
+  errout = p.stderr.read()
+  if print_output and errout:
+    print >>sys.stderr, errout
+  p.stdout.close()
+  p.stderr.close()
+  return output, p.returncode
+
+
+def RunShell(command, silent_ok=False, universal_newlines=True,
+             print_output=False):
+  data, retcode = RunShellWithReturnCode(command, print_output,
+                                         universal_newlines)
+  if retcode:
+    ErrorExit("Got error status from %s:\n%s" % (command, data))
+  if not silent_ok and not data:
+    ErrorExit("No output from %s" % command)
+  return data
+
+
+class VersionControlSystem(object):
+  """Abstract base class providing an interface to the VCS."""
+
+  def __init__(self, options):
+    """Constructor.
+
+    Args:
+      options: Command line options.
+    """
+    self.options = options
+
+  def GenerateDiff(self, args):
+    """Return the current diff as a string.
+
+    Args:
+      args: Extra arguments to pass to the diff command.
+    """
+    raise NotImplementedError(
+        "abstract method -- subclass %s must override" % self.__class__)
+
+  def GetUnknownFiles(self):
+    """Return a list of files unknown to the VCS."""
+    raise NotImplementedError(
+        "abstract method -- subclass %s must override" % self.__class__)
+
+  def CheckForUnknownFiles(self):
+    """Show an "are you sure?" prompt if there are unknown files."""
+    unknown_files = self.GetUnknownFiles()
+    if unknown_files:
+      print "The following files are not added to version control:"
+      for line in unknown_files:
+        print line
+      prompt = "Are you sure to continue?(y/N) "
+      answer = raw_input(prompt).strip()
+      if answer != "y":
+        ErrorExit("User aborted")
+
+  def GetBaseFile(self, filename):
+    """Get the content of the upstream version of a file.
+
+    Returns:
+      A tuple (base_content, new_content, is_binary, status)
+        base_content: The contents of the base file.
+        new_content: For text files, this is empty.  For binary files, this is
+          the contents of the new file, since the diff output won't contain
+          information to reconstruct the current file.
+        is_binary: True iff the file is binary.
+        status: The status of the file.
+    """
+
+    raise NotImplementedError(
+        "abstract method -- subclass %s must override" % self.__class__)
+
+
+  def GetBaseFiles(self, diff):
+    """Helper that calls GetBase file for each file in the patch.
+
+    Returns:
+      A dictionary that maps from filename to GetBaseFile's tuple.  Filenames
+      are retrieved based on lines that start with "Index:" or
+      "Property changes on:".
+    """
+    files = {}
+    for line in diff.splitlines(True):
+      if line.startswith('Index:') or line.startswith('Property changes on:'):
+        unused, filename = line.split(':', 1)
+        # On Windows if a file has property changes its filename uses '\'
+        # instead of '/'.
+        filename = filename.strip().replace('\\', '/')
+        files[filename] = self.GetBaseFile(filename)
+    return files
+
+
+  def UploadBaseFiles(self, issue, rpc_server, patch_list, patchset, options,
+                      files):
+    """Uploads the base files (and if necessary, the current ones as well)."""
+
+    def UploadFile(filename, file_id, content, is_binary, status, is_base):
+      """Uploads a file to the server."""
+      file_too_large = False
+      if is_base:
+        type = "base"
+      else:
+        type = "current"
+      if len(content) > MAX_UPLOAD_SIZE:
+        print ("Not uploading the %s file for %s because it's too large." %
+               (type, filename))
+        file_too_large = True
+        content = ""
+      checksum = md5.new(content).hexdigest()
+      if options.verbose > 0 and not file_too_large:
+        print "Uploading %s file for %s" % (type, filename)
+      url = "/%d/upload_content/%d/%d" % (int(issue), int(patchset), file_id)
+      form_fields = [("filename", filename),
+                     ("status", status),
+                     ("checksum", checksum),
+                     ("is_binary", str(is_binary)),
+                     ("is_current", str(not is_base)),
+                    ]
+      if file_too_large:
+        form_fields.append(("file_too_large", "1"))
+      if options.email:
+        form_fields.append(("user", options.email))
+      ctype, body = EncodeMultipartFormData(form_fields,
+                                            [("data", filename, content)])
+      response_body = rpc_server.Send(url, body,
+                                      content_type=ctype)
+      if not response_body.startswith("OK"):
+        StatusUpdate("  --> %s" % response_body)
+        sys.exit(1)
+
+    patches = dict()
+    [patches.setdefault(v, k) for k, v in patch_list]
+    for filename in patches.keys():
+      base_content, new_content, is_binary, status = files[filename]
+      file_id_str = patches.get(filename)
+      if file_id_str.find("nobase") != -1:
+        base_content = None
+        file_id_str = file_id_str[file_id_str.rfind("_") + 1:]
+      file_id = int(file_id_str)
+      if base_content != None:
+        UploadFile(filename, file_id, base_content, is_binary, status, True)
+      if new_content != None:
+        UploadFile(filename, file_id, new_content, is_binary, status, False)
+
+  def IsImage(self, filename):
+    """Returns true if the filename has an image extension."""
+    mimetype =  mimetypes.guess_type(filename)[0]
+    if not mimetype:
+      return False
+    return mimetype.startswith("image/")
+
+
+class SubversionVCS(VersionControlSystem):
+  """Implementation of the VersionControlSystem interface for Subversion."""
+
+  def __init__(self, options):
+    super(SubversionVCS, self).__init__(options)
+    if self.options.revision:
+      match = re.match(r"(\d+)(:(\d+))?", self.options.revision)
+      if not match:
+        ErrorExit("Invalid Subversion revision %s." % self.options.revision)
+      self.rev_start = match.group(1)
+      self.rev_end = match.group(3)
+    else:
+      self.rev_start = self.rev_end = None
+    # Cache output from "svn list -r REVNO dirname".
+    # Keys: dirname, Values: 2-tuple (ouput for start rev and end rev).
+    self.svnls_cache = {}
+    # SVN base URL is required to fetch files deleted in an older revision.
+    # Result is cached to not guess it over and over again in GetBaseFile().
+    required = self.options.download_base or self.options.revision is not None
+    self.svn_base = self._GuessBase(required)
+
+  def GuessBase(self, required):
+    """Wrapper for _GuessBase."""
+    return self.svn_base
+
+  def _GuessBase(self, required):
+    """Returns the SVN base URL.
+
+    Args:
+      required: If true, exits if the url can't be guessed, otherwise None is
+        returned.
+    """
+    info = RunShell(["svn", "info"])
+    for line in info.splitlines():
+      words = line.split()
+      if len(words) == 2 and words[0] == "URL:":
+        url = words[1]
+        scheme, netloc, path, params, query, fragment = urlparse.urlparse(url)
+        username, netloc = urllib.splituser(netloc)
+        if username:
+          logging.info("Removed username from base URL")
+        if netloc.endswith("svn.python.org"):
+          if netloc == "svn.python.org":
+            if path.startswith("/projects/"):
+              path = path[9:]
+          elif netloc != "pythondev@svn.python.org":
+            ErrorExit("Unrecognized Python URL: %s" % url)
+          base = "http://svn.python.org/view/*checkout*%s/" % path
+          logging.info("Guessed Python base = %s", base)
+        elif netloc.endswith("svn.collab.net"):
+          if path.startswith("/repos/"):
+            path = path[6:]
+          base = "http://svn.collab.net/viewvc/*checkout*%s/" % path
+          logging.info("Guessed CollabNet base = %s", base)
+        elif netloc.endswith(".googlecode.com"):
+          path = path + "/"
+          base = urlparse.urlunparse(("http", netloc, path, params,
+                                      query, fragment))
+          logging.info("Guessed Google Code base = %s", base)
+        else:
+          path = path + "/"
+          base = urlparse.urlunparse((scheme, netloc, path, params,
+                                      query, fragment))
+          logging.info("Guessed base = %s", base)
+        return base
+    if required:
+      ErrorExit("Can't find URL in output from svn info")
+    return None
+
+  def GenerateDiff(self, args):
+    cmd = ["svn", "diff"]
+    if self.options.revision:
+      cmd += ["-r", self.options.revision]
+    cmd.extend(args)
+    data = RunShell(cmd)
+    count = 0
+    for line in data.splitlines():
+      if line.startswith("Index:") or line.startswith("Property changes on:"):
+        count += 1
+        logging.info(line)
+    if not count:
+      ErrorExit("No valid patches found in output from svn diff")
+    return data
+
+  def _CollapseKeywords(self, content, keyword_str):
+    """Collapses SVN keywords."""
+    # svn cat translates keywords but svn diff doesn't. As a result of this
+    # behavior patching.PatchChunks() fails with a chunk mismatch error.
+    # This part was originally written by the Review Board development team
+    # who had the same problem (http://reviews.review-board.org/r/276/).
+    # Mapping of keywords to known aliases
+    svn_keywords = {
+      # Standard keywords
+      'Date':                ['Date', 'LastChangedDate'],
+      'Revision':            ['Revision', 'LastChangedRevision', 'Rev'],
+      'Author':              ['Author', 'LastChangedBy'],
+      'HeadURL':             ['HeadURL', 'URL'],
+      'Id':                  ['Id'],
+
+      # Aliases
+      'LastChangedDate':     ['LastChangedDate', 'Date'],
+      'LastChangedRevision': ['LastChangedRevision', 'Rev', 'Revision'],
+      'LastChangedBy':       ['LastChangedBy', 'Author'],
+      'URL':                 ['URL', 'HeadURL'],
+    }
+
+    def repl(m):
+       if m.group(2):
+         return "$%s::%s$" % (m.group(1), " " * len(m.group(3)))
+       return "$%s$" % m.group(1)
+    keywords = [keyword
+                for name in keyword_str.split(" ")
+                for keyword in svn_keywords.get(name, [])]
+    return re.sub(r"\$(%s):(:?)([^\$]+)\$" % '|'.join(keywords), repl, content)
+
+  def GetUnknownFiles(self):
+    status = RunShell(["svn", "status", "--ignore-externals"], silent_ok=True)
+    unknown_files = []
+    for line in status.split("\n"):
+      if line and line[0] == "?":
+        unknown_files.append(line)
+    return unknown_files
+
+  def ReadFile(self, filename):
+    """Returns the contents of a file."""
+    file = open(filename, 'rb')
+    result = ""
+    try:
+      result = file.read()
+    finally:
+      file.close()
+    return result
+
+  def GetStatus(self, filename):
+    """Returns the status of a file."""
+    if not self.options.revision:
+      status = RunShell(["svn", "status", "--ignore-externals", filename])
+      if not status:
+        ErrorExit("svn status returned no output for %s" % filename)
+      status_lines = status.splitlines()
+      # If file is in a cl, the output will begin with
+      # "\n--- Changelist 'cl_name':\n".  See
+      # http://svn.collab.net/repos/svn/trunk/notes/changelist-design.txt
+      if (len(status_lines) == 3 and
+          not status_lines[0] and
+          status_lines[1].startswith("--- Changelist")):
+        status = status_lines[2]
+      else:
+        status = status_lines[0]
+    # If we have a revision to diff against we need to run "svn list"
+    # for the old and the new revision and compare the results to get
+    # the correct status for a file.
+    else:
+      dirname, relfilename = os.path.split(filename)
+      if dirname not in self.svnls_cache:
+        cmd = ["svn", "list", "-r", self.rev_start, dirname or "."]
+        out, returncode = RunShellWithReturnCode(cmd)
+        if returncode:
+          ErrorExit("Failed to get status for %s." % filename)
+        old_files = out.splitlines()
+        args = ["svn", "list"]
+        if self.rev_end:
+          args += ["-r", self.rev_end]
+        cmd = args + [dirname or "."]
+        out, returncode = RunShellWithReturnCode(cmd)
+        if returncode:
+          ErrorExit("Failed to run command %s" % cmd)
+        self.svnls_cache[dirname] = (old_files, out.splitlines())
+      old_files, new_files = self.svnls_cache[dirname]
+      if relfilename in old_files and relfilename not in new_files:
+        status = "D   "
+      elif relfilename in old_files and relfilename in new_files:
+        status = "M   "
+      else:
+        status = "A   "
+    return status
+
+  def GetBaseFile(self, filename):
+    status = self.GetStatus(filename)
+    base_content = None
+    new_content = None
+
+    # If a file is copied its status will be "A  +", which signifies
+    # "addition-with-history".  See "svn st" for more information.  We need to
+    # upload the original file or else diff parsing will fail if the file was
+    # edited.
+    if status[0] == "A" and status[3] != "+":
+      # We'll need to upload the new content if we're adding a binary file
+      # since diff's output won't contain it.
+      mimetype = RunShell(["svn", "propget", "svn:mime-type", filename],
+                          silent_ok=True)
+      base_content = ""
+      is_binary = mimetype and not mimetype.startswith("text/")
+      if is_binary and self.IsImage(filename):
+        new_content = self.ReadFile(filename)
+    elif (status[0] in ("M", "D", "R") or
+          (status[0] == "A" and status[3] == "+") or  # Copied file.
+          (status[0] == " " and status[1] == "M")):  # Property change.
+      args = []
+      if self.options.revision:
+        url = "%s/%s@%s" % (self.svn_base, filename, self.rev_start)
+      else:
+        # Don't change filename, it's needed later.
+        url = filename
+        args += ["-r", "BASE"]
+      cmd = ["svn"] + args + ["propget", "svn:mime-type", url]
+      mimetype, returncode = RunShellWithReturnCode(cmd)
+      if returncode:
+        # File does not exist in the requested revision.
+        # Reset mimetype, it contains an error message.
+        mimetype = ""
+      get_base = False
+      is_binary = mimetype and not mimetype.startswith("text/")
+      if status[0] == " ":
+        # Empty base content just to force an upload.
+        base_content = ""
+      elif is_binary:
+        if self.IsImage(filename):
+          get_base = True
+          if status[0] == "M":
+            if not self.rev_end:
+              new_content = self.ReadFile(filename)
+            else:
+              url = "%s/%s@%s" % (self.svn_base, filename, self.rev_end)
+              new_content = RunShell(["svn", "cat", url],
+                                     universal_newlines=True, silent_ok=True)
+        else:
+          base_content = ""
+      else:
+        get_base = True
+
+      if get_base:
+        if is_binary:
+          universal_newlines = False
+        else:
+          universal_newlines = True
+        if self.rev_start:
+          # "svn cat -r REV delete_file.txt" doesn't work. cat requires
+          # the full URL with "@REV" appended instead of using "-r" option.
+          url = "%s/%s@%s" % (self.svn_base, filename, self.rev_start)
+          base_content = RunShell(["svn", "cat", url],
+                                  universal_newlines=universal_newlines,
+                                  silent_ok=True)
+        else:
+          base_content = RunShell(["svn", "cat", filename],
+                                  universal_newlines=universal_newlines,
+                                  silent_ok=True)
+        if not is_binary:
+          args = []
+          if self.rev_start:
+            url = "%s/%s@%s" % (self.svn_base, filename, self.rev_start)
+          else:
+            url = filename
+            args += ["-r", "BASE"]
+          cmd = ["svn"] + args + ["propget", "svn:keywords", url]
+          keywords, returncode = RunShellWithReturnCode(cmd)
+          if keywords and not returncode:
+            base_content = self._CollapseKeywords(base_content, keywords)
+    else:
+      StatusUpdate("svn status returned unexpected output: %s" % status)
+      sys.exit(1)
+    return base_content, new_content, is_binary, status[0:5]
+
+
+class GitVCS(VersionControlSystem):
+  """Implementation of the VersionControlSystem interface for Git."""
+
+  def __init__(self, options):
+    super(GitVCS, self).__init__(options)
+    # Map of filename -> hash of base file.
+    self.base_hashes = {}
+
+  def GenerateDiff(self, extra_args):
+    # This is more complicated than svn's GenerateDiff because we must convert
+    # the diff output to include an svn-style "Index:" line as well as record
+    # the hashes of the base files, so we can upload them along with our diff.
+    if self.options.revision:
+      extra_args = [self.options.revision] + extra_args
+    gitdiff = RunShell(["git", "diff", "--full-index"] + extra_args)
+    svndiff = []
+    filecount = 0
+    filename = None
+    for line in gitdiff.splitlines():
+      match = re.match(r"diff --git a/(.*) b/.*$", line)
+      if match:
+        filecount += 1
+        filename = match.group(1)
+        svndiff.append("Index: %s\n" % filename)
+      else:
+        # The "index" line in a git diff looks like this (long hashes elided):
+        #   index 82c0d44..b2cee3f 100755
+        # We want to save the left hash, as that identifies the base file.
+        match = re.match(r"index (\w+)\.\.", line)
+        if match:
+          self.base_hashes[filename] = match.group(1)
+      svndiff.append(line + "\n")
+    if not filecount:
+      ErrorExit("No valid patches found in output from git diff")
+    return "".join(svndiff)
+
+  def GetUnknownFiles(self):
+    status = RunShell(["git", "ls-files", "--exclude-standard", "--others"],
+                      silent_ok=True)
+    return status.splitlines()
+
+  def GetBaseFile(self, filename):
+    hash = self.base_hashes[filename]
+    base_content = None
+    new_content = None
+    is_binary = False
+    if hash == "0" * 40:  # All-zero hash indicates no base file.
+      status = "A"
+      base_content = ""
+    else:
+      status = "M"
+      base_content, returncode = RunShellWithReturnCode(["git", "show", hash])
+      if returncode:
+        ErrorExit("Got error status from 'git show %s'" % hash)
+    return (base_content, new_content, is_binary, status)
+
+
+class MercurialVCS(VersionControlSystem):
+  """Implementation of the VersionControlSystem interface for Mercurial."""
+
+  def __init__(self, options, repo_dir):
+    super(MercurialVCS, self).__init__(options)
+    # Absolute path to repository (we can be in a subdir)
+    self.repo_dir = os.path.normpath(repo_dir)
+    # Compute the subdir
+    cwd = os.path.normpath(os.getcwd())
+    assert cwd.startswith(self.repo_dir)
+    self.subdir = cwd[len(self.repo_dir):].lstrip(r"\/")
+    if self.options.revision:
+      self.base_rev = self.options.revision
+    else:
+      self.base_rev = RunShell(["hg", "parent", "-q"]).split(':')[1].strip()
+
+  def _GetRelPath(self, filename):
+    """Get relative path of a file according to the current directory,
+    given its logical path in the repo."""
+    assert filename.startswith(self.subdir), filename
+    return filename[len(self.subdir):].lstrip(r"\/")
+
+  def GenerateDiff(self, extra_args):
+    # If no file specified, restrict to the current subdir
+    extra_args = extra_args or ["."]
+    cmd = ["hg", "diff", "--git", "-r", self.base_rev] + extra_args
+    data = RunShell(cmd, silent_ok=True)
+    svndiff = []
+    filecount = 0
+    for line in data.splitlines():
+      m = re.match("diff --git a/(\S+) b/(\S+)", line)
+      if m:
+        # Modify line to make it look like as it comes from svn diff.
+        # With this modification no changes on the server side are required
+        # to make upload.py work with Mercurial repos.
+        # NOTE: for proper handling of moved/copied files, we have to use
+        # the second filename.
+        filename = m.group(2)
+        svndiff.append("Index: %s" % filename)
+        svndiff.append("=" * 67)
+        filecount += 1
+        logging.info(line)
+      else:
+        svndiff.append(line)
+    if not filecount:
+      ErrorExit("No valid patches found in output from hg diff")
+    return "\n".join(svndiff) + "\n"
+
+  def GetUnknownFiles(self):
+    """Return a list of files unknown to the VCS."""
+    args = []
+    status = RunShell(["hg", "status", "--rev", self.base_rev, "-u", "."],
+        silent_ok=True)
+    unknown_files = []
+    for line in status.splitlines():
+      st, fn = line.split(" ", 1)
+      if st == "?":
+        unknown_files.append(fn)
+    return unknown_files
+
+  def GetBaseFile(self, filename):
+    # "hg status" and "hg cat" both take a path relative to the current subdir
+    # rather than to the repo root, but "hg diff" has given us the full path
+    # to the repo root.
+    base_content = ""
+    new_content = None
+    is_binary = False
+    oldrelpath = relpath = self._GetRelPath(filename)
+    # "hg status -C" returns two lines for moved/copied files, one otherwise
+    out = RunShell(["hg", "status", "-C", "--rev", self.base_rev, relpath])
+    out = out.splitlines()
+    # HACK: strip error message about missing file/directory if it isn't in
+    # the working copy
+    if out[0].startswith('%s: ' % relpath):
+      out = out[1:]
+    if len(out) > 1:
+      # Moved/copied => considered as modified, use old filename to
+      # retrieve base contents
+      oldrelpath = out[1].strip()
+      status = "M"
+    else:
+      status, _ = out[0].split(' ', 1)
+    if status != "A":
+      base_content = RunShell(["hg", "cat", "-r", self.base_rev, oldrelpath],
+        silent_ok=True)
+      is_binary = "\0" in base_content  # Mercurial's heuristic
+    if status != "R":
+      new_content = open(relpath, "rb").read()
+      is_binary = is_binary or "\0" in new_content
+    if is_binary and base_content:
+      # Fetch again without converting newlines
+      base_content = RunShell(["hg", "cat", "-r", self.base_rev, oldrelpath],
+        silent_ok=True, universal_newlines=False)
+    if not is_binary or not self.IsImage(relpath):
+      new_content = None
+    return base_content, new_content, is_binary, status
+
+
+# NOTE: The SplitPatch function is duplicated in engine.py, keep them in sync.
+def SplitPatch(data):
+  """Splits a patch into separate pieces for each file.
+
+  Args:
+    data: A string containing the output of svn diff.
+
+  Returns:
+    A list of 2-tuple (filename, text) where text is the svn diff output
+      pertaining to filename.
+  """
+  patches = []
+  filename = None
+  diff = []
+  for line in data.splitlines(True):
+    new_filename = None
+    if line.startswith('Index:'):
+      unused, new_filename = line.split(':', 1)
+      new_filename = new_filename.strip()
+    elif line.startswith('Property changes on:'):
+      unused, temp_filename = line.split(':', 1)
+      # When a file is modified, paths use '/' between directories, however
+      # when a property is modified '\' is used on Windows.  Make them the same
+      # otherwise the file shows up twice.
+      temp_filename = temp_filename.strip().replace('\\', '/')
+      if temp_filename != filename:
+        # File has property changes but no modifications, create a new diff.
+        new_filename = temp_filename
+    if new_filename:
+      if filename and diff:
+        patches.append((filename, ''.join(diff)))
+      filename = new_filename
+      diff = [line]
+      continue
+    if diff is not None:
+      diff.append(line)
+  if filename and diff:
+    patches.append((filename, ''.join(diff)))
+  return patches
+
+
+def UploadSeparatePatches(issue, rpc_server, patchset, data, options):
+  """Uploads a separate patch for each file in the diff output.
+
+  Returns a list of [patch_key, filename] for each file.
+  """
+  patches = SplitPatch(data)
+  rv = []
+  for patch in patches:
+    if len(patch[1]) > MAX_UPLOAD_SIZE:
+      print ("Not uploading the patch for " + patch[0] +
+             " because the file is too large.")
+      continue
+    form_fields = [("filename", patch[0])]
+    if not options.download_base:
+      form_fields.append(("content_upload", "1"))
+    files = [("data", "data.diff", patch[1])]
+    ctype, body = EncodeMultipartFormData(form_fields, files)
+    url = "/%d/upload_patch/%d" % (int(issue), int(patchset))
+    print "Uploading patch for " + patch[0]
+    response_body = rpc_server.Send(url, body, content_type=ctype)
+    lines = response_body.splitlines()
+    if not lines or lines[0] != "OK":
+      StatusUpdate("  --> %s" % response_body)
+      sys.exit(1)
+    rv.append([lines[1], patch[0]])
+  return rv
+
+
+def GuessVCS(options):
+  """Helper to guess the version control system.
+
+  This examines the current directory, guesses which VersionControlSystem
+  we're using, and returns an instance of the appropriate class.  Exit with an
+  error if we can't figure it out.
+
+  Returns:
+    A VersionControlSystem instance. Exits if the VCS can't be guessed.
+  """
+  # Mercurial has a command to get the base directory of a repository
+  # Try running it, but don't die if we don't have hg installed.
+  # NOTE: we try Mercurial first as it can sit on top of an SVN working copy.
+  try:
+    out, returncode = RunShellWithReturnCode(["hg", "root"])
+    if returncode == 0:
+      return MercurialVCS(options, out.strip())
+  except OSError, (errno, message):
+    if errno != 2:  # ENOENT -- they don't have hg installed.
+      raise
+
+  # Subversion has a .svn in all working directories.
+  if os.path.isdir('.svn'):
+    logging.info("Guessed VCS = Subversion")
+    return SubversionVCS(options)
+
+  # Git has a command to test if you're in a git tree.
+  # Try running it, but don't die if we don't have git installed.
+  try:
+    out, returncode = RunShellWithReturnCode(["git", "rev-parse",
+                                              "--is-inside-work-tree"])
+    if returncode == 0:
+      return GitVCS(options)
+  except OSError, (errno, message):
+    if errno != 2:  # ENOENT -- they don't have git installed.
+      raise
+
+  ErrorExit(("Could not guess version control system. "
+             "Are you in a working copy directory?"))
+
+
+def RealMain(argv, data=None):
+  """The real main function.
+
+  Args:
+    argv: Command line arguments.
+    data: Diff contents. If None (default) the diff is generated by
+      the VersionControlSystem implementation returned by GuessVCS().
+
+  Returns:
+    A 2-tuple (issue id, patchset id).
+    The patchset id is None if the base files are not uploaded by this
+    script (applies only to SVN checkouts).
+  """
+  logging.basicConfig(format=("%(asctime).19s %(levelname)s %(filename)s:"
+                              "%(lineno)s %(message)s "))
+  os.environ['LC_ALL'] = 'C'
+  options, args = parser.parse_args(argv[1:])
+  global verbosity
+  verbosity = options.verbose
+  if verbosity >= 3:
+    logging.getLogger().setLevel(logging.DEBUG)
+  elif verbosity >= 2:
+    logging.getLogger().setLevel(logging.INFO)
+  vcs = GuessVCS(options)
+  if isinstance(vcs, SubversionVCS):
+    # base field is only allowed for Subversion.
+    # Note: Fetching base files may become deprecated in future releases.
+    base = vcs.GuessBase(options.download_base)
+  else:
+    base = None
+  if not base and options.download_base:
+    options.download_base = True
+    logging.info("Enabled upload of base file")
+  if not options.assume_yes:
+    vcs.CheckForUnknownFiles()
+  if data is None:
+    data = vcs.GenerateDiff(args)
+  files = vcs.GetBaseFiles(data)
+  if verbosity >= 1:
+    print "Upload server:", options.server, "(change with -s/--server)"
+  if options.issue:
+    prompt = "Message describing this patch set: "
+  else:
+    prompt = "New issue subject: "
+  message = options.message or raw_input(prompt).strip()
+  if not message:
+    ErrorExit("A non-empty message is required")
+  rpc_server = GetRpcServer(options)
+  form_fields = [("subject", message)]
+  if base:
+    form_fields.append(("base", base))
+  if options.issue:
+    form_fields.append(("issue", str(options.issue)))
+  if options.email:
+    form_fields.append(("user", options.email))
+  if options.reviewers:
+    for reviewer in options.reviewers.split(','):
+      if "@" in reviewer and not reviewer.split("@")[1].count(".") == 1:
+        ErrorExit("Invalid email address: %s" % reviewer)
+    form_fields.append(("reviewers", options.reviewers))
+  if options.cc:
+    for cc in options.cc.split(','):
+      if "@" in cc and not cc.split("@")[1].count(".") == 1:
+        ErrorExit("Invalid email address: %s" % cc)
+    form_fields.append(("cc", options.cc))
+  description = options.description
+  if options.description_file:
+    if options.description:
+      ErrorExit("Can't specify description and description_file")
+    file = open(options.description_file, 'r')
+    description = file.read()
+    file.close()
+  if description:
+    form_fields.append(("description", description))
+  # Send a hash of all the base file so the server can determine if a copy
+  # already exists in an earlier patchset.
+  base_hashes = ""
+  for file, info in files.iteritems():
+    if not info[0] is None:
+      checksum = md5.new(info[0]).hexdigest()
+      if base_hashes:
+        base_hashes += "|"
+      base_hashes += checksum + ":" + file
+  form_fields.append(("base_hashes", base_hashes))
+  # If we're uploading base files, don't send the email before the uploads, so
+  # that it contains the file status.
+  if options.send_mail and options.download_base:
+    form_fields.append(("send_mail", "1"))
+  if not options.download_base:
+    form_fields.append(("content_upload", "1"))
+  if len(data) > MAX_UPLOAD_SIZE:
+    print "Patch is large, so uploading file patches separately."
+    uploaded_diff_file = []
+    form_fields.append(("separate_patches", "1"))
+  else:
+    uploaded_diff_file = [("data", "data.diff", data)]
+  ctype, body = EncodeMultipartFormData(form_fields, uploaded_diff_file)
+  response_body = rpc_server.Send("/upload", body, content_type=ctype)
+  patchset = None
+  if not options.download_base or not uploaded_diff_file:
+    lines = response_body.splitlines()
+    if len(lines) >= 2:
+      msg = lines[0]
+      patchset = lines[1].strip()
+      patches = [x.split(" ", 1) for x in lines[2:]]
+    else:
+      msg = response_body
+  else:
+    msg = response_body
+  StatusUpdate(msg)
+  if not response_body.startswith("Issue created.") and \
+  not response_body.startswith("Issue updated."):
+    sys.exit(0)
+  issue = msg[msg.rfind("/")+1:]
+
+  if not uploaded_diff_file:
+    result = UploadSeparatePatches(issue, rpc_server, patchset, data, options)
+    if not options.download_base:
+      patches = result
+
+  if not options.download_base:
+    vcs.UploadBaseFiles(issue, rpc_server, patches, patchset, options, files)
+    if options.send_mail:
+      rpc_server.Send("/" + issue + "/mail", payload="")
+  return issue, patchset
+
+
+def main():
+  try:
+    RealMain(sys.argv)
+  except KeyboardInterrupt:
+    print
+    StatusUpdate("Interrupted.")
+    sys.exit(1)
+
+
+if __name__ == "__main__":
+  main()
diff --git a/google-breakpad/src/testing/scripts/upload_gmock.py b/google-breakpad/src/testing/scripts/upload_gmock.py
new file mode 100755
index 0000000..5dc484b
--- /dev/null
+++ b/google-breakpad/src/testing/scripts/upload_gmock.py
@@ -0,0 +1,78 @@
+#!/usr/bin/env python
+#
+# Copyright 2009, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+"""upload_gmock.py v0.1.0 -- uploads a Google Mock patch for review.
+
+This simple wrapper passes all command line flags and
+--cc=googlemock@googlegroups.com to upload.py.
+
+USAGE: upload_gmock.py [options for upload.py]
+"""
+
+__author__ = 'wan@google.com (Zhanyong Wan)'
+
+import os
+import sys
+
+CC_FLAG = '--cc='
+GMOCK_GROUP = 'googlemock@googlegroups.com'
+
+
+def main():
+  # Finds the path to upload.py, assuming it is in the same directory
+  # as this file.
+  my_dir = os.path.dirname(os.path.abspath(__file__))
+  upload_py_path = os.path.join(my_dir, 'upload.py')
+
+  # Adds Google Mock discussion group to the cc line if it's not there
+  # already.
+  upload_py_argv = [upload_py_path]
+  found_cc_flag = False
+  for arg in sys.argv[1:]:
+    if arg.startswith(CC_FLAG):
+      found_cc_flag = True
+      cc_line = arg[len(CC_FLAG):]
+      cc_list = [addr for addr in cc_line.split(',') if addr]
+      if GMOCK_GROUP not in cc_list:
+        cc_list.append(GMOCK_GROUP)
+      upload_py_argv.append(CC_FLAG + ','.join(cc_list))
+    else:
+      upload_py_argv.append(arg)
+
+  if not found_cc_flag:
+    upload_py_argv.append(CC_FLAG + GMOCK_GROUP)
+
+  # Invokes upload.py with the modified command line flags.
+  os.execv(upload_py_path, upload_py_argv)
+
+
+if __name__ == '__main__':
+  main()
diff --git a/google-breakpad/src/testing/src/gmock-all.cc b/google-breakpad/src/testing/src/gmock-all.cc
new file mode 100644
index 0000000..7aebce7
--- /dev/null
+++ b/google-breakpad/src/testing/src/gmock-all.cc
@@ -0,0 +1,47 @@
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+//
+// Google C++ Mocking Framework (Google Mock)
+//
+// This file #includes all Google Mock implementation .cc files.  The
+// purpose is to allow a user to build Google Mock by compiling this
+// file alone.
+
+// This line ensures that gmock.h can be compiled on its own, even
+// when it's fused.
+#include "gmock/gmock.h"
+
+// The following lines pull in the real gmock *.cc files.
+#include "src/gmock-cardinalities.cc"
+#include "src/gmock-internal-utils.cc"
+#include "src/gmock-matchers.cc"
+#include "src/gmock-spec-builders.cc"
+#include "src/gmock.cc"
diff --git a/google-breakpad/src/testing/src/gmock-cardinalities.cc b/google-breakpad/src/testing/src/gmock-cardinalities.cc
new file mode 100644
index 0000000..50ec728
--- /dev/null
+++ b/google-breakpad/src/testing/src/gmock-cardinalities.cc
@@ -0,0 +1,156 @@
+// Copyright 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Google Mock - a framework for writing C++ mock classes.
+//
+// This file implements cardinalities.
+
+#include "gmock/gmock-cardinalities.h"
+
+#include <limits.h>
+#include <ostream>  // NOLINT
+#include <sstream>
+#include <string>
+#include "gmock/internal/gmock-internal-utils.h"
+#include "gtest/gtest.h"
+
+namespace testing {
+
+namespace {
+
+// Implements the Between(m, n) cardinality.
+class BetweenCardinalityImpl : public CardinalityInterface {
+ public:
+  BetweenCardinalityImpl(int min, int max)
+      : min_(min >= 0 ? min : 0),
+        max_(max >= min_ ? max : min_) {
+    std::stringstream ss;
+    if (min < 0) {
+      ss << "The invocation lower bound must be >= 0, "
+         << "but is actually " << min << ".";
+      internal::Expect(false, __FILE__, __LINE__, ss.str());
+    } else if (max < 0) {
+      ss << "The invocation upper bound must be >= 0, "
+         << "but is actually " << max << ".";
+      internal::Expect(false, __FILE__, __LINE__, ss.str());
+    } else if (min > max) {
+      ss << "The invocation upper bound (" << max
+         << ") must be >= the invocation lower bound (" << min
+         << ").";
+      internal::Expect(false, __FILE__, __LINE__, ss.str());
+    }
+  }
+
+  // Conservative estimate on the lower/upper bound of the number of
+  // calls allowed.
+  virtual int ConservativeLowerBound() const { return min_; }
+  virtual int ConservativeUpperBound() const { return max_; }
+
+  virtual bool IsSatisfiedByCallCount(int call_count) const {
+    return min_ <= call_count && call_count <= max_;
+  }
+
+  virtual bool IsSaturatedByCallCount(int call_count) const {
+    return call_count >= max_;
+  }
+
+  virtual void DescribeTo(::std::ostream* os) const;
+
+ private:
+  const int min_;
+  const int max_;
+
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(BetweenCardinalityImpl);
+};
+
+// Formats "n times" in a human-friendly way.
+inline internal::string FormatTimes(int n) {
+  if (n == 1) {
+    return "once";
+  } else if (n == 2) {
+    return "twice";
+  } else {
+    std::stringstream ss;
+    ss << n << " times";
+    return ss.str();
+  }
+}
+
+// Describes the Between(m, n) cardinality in human-friendly text.
+void BetweenCardinalityImpl::DescribeTo(::std::ostream* os) const {
+  if (min_ == 0) {
+    if (max_ == 0) {
+      *os << "never called";
+    } else if (max_ == INT_MAX) {
+      *os << "called any number of times";
+    } else {
+      *os << "called at most " << FormatTimes(max_);
+    }
+  } else if (min_ == max_) {
+    *os << "called " << FormatTimes(min_);
+  } else if (max_ == INT_MAX) {
+    *os << "called at least " << FormatTimes(min_);
+  } else {
+    // 0 < min_ < max_ < INT_MAX
+    *os << "called between " << min_ << " and " << max_ << " times";
+  }
+}
+
+}  // Unnamed namespace
+
+// Describes the given call count to an ostream.
+void Cardinality::DescribeActualCallCountTo(int actual_call_count,
+                                            ::std::ostream* os) {
+  if (actual_call_count > 0) {
+    *os << "called " << FormatTimes(actual_call_count);
+  } else {
+    *os << "never called";
+  }
+}
+
+// Creates a cardinality that allows at least n calls.
+GTEST_API_ Cardinality AtLeast(int n) { return Between(n, INT_MAX); }
+
+// Creates a cardinality that allows at most n calls.
+GTEST_API_ Cardinality AtMost(int n) { return Between(0, n); }
+
+// Creates a cardinality that allows any number of calls.
+GTEST_API_ Cardinality AnyNumber() { return AtLeast(0); }
+
+// Creates a cardinality that allows between min and max calls.
+GTEST_API_ Cardinality Between(int min, int max) {
+  return Cardinality(new BetweenCardinalityImpl(min, max));
+}
+
+// Creates a cardinality that allows exactly n calls.
+GTEST_API_ Cardinality Exactly(int n) { return Between(n, n); }
+
+}  // namespace testing
diff --git a/google-breakpad/src/testing/src/gmock-internal-utils.cc b/google-breakpad/src/testing/src/gmock-internal-utils.cc
new file mode 100644
index 0000000..fb53080
--- /dev/null
+++ b/google-breakpad/src/testing/src/gmock-internal-utils.cc
@@ -0,0 +1,174 @@
+// Copyright 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Google Mock - a framework for writing C++ mock classes.
+//
+// This file defines some utilities useful for implementing Google
+// Mock.  They are subject to change without notice, so please DO NOT
+// USE THEM IN USER CODE.
+
+#include "gmock/internal/gmock-internal-utils.h"
+
+#include <ctype.h>
+#include <ostream>  // NOLINT
+#include <string>
+#include "gmock/gmock.h"
+#include "gmock/internal/gmock-port.h"
+#include "gtest/gtest.h"
+
+namespace testing {
+namespace internal {
+
+// Converts an identifier name to a space-separated list of lower-case
+// words.  Each maximum substring of the form [A-Za-z][a-z]*|\d+ is
+// treated as one word.  For example, both "FooBar123" and
+// "foo_bar_123" are converted to "foo bar 123".
+GTEST_API_ string ConvertIdentifierNameToWords(const char* id_name) {
+  string result;
+  char prev_char = '\0';
+  for (const char* p = id_name; *p != '\0'; prev_char = *(p++)) {
+    // We don't care about the current locale as the input is
+    // guaranteed to be a valid C++ identifier name.
+    const bool starts_new_word = IsUpper(*p) ||
+        (!IsAlpha(prev_char) && IsLower(*p)) ||
+        (!IsDigit(prev_char) && IsDigit(*p));
+
+    if (IsAlNum(*p)) {
+      if (starts_new_word && result != "")
+        result += ' ';
+      result += ToLower(*p);
+    }
+  }
+  return result;
+}
+
+// This class reports Google Mock failures as Google Test failures.  A
+// user can define another class in a similar fashion if he intends to
+// use Google Mock with a testing framework other than Google Test.
+class GoogleTestFailureReporter : public FailureReporterInterface {
+ public:
+  virtual void ReportFailure(FailureType type, const char* file, int line,
+                             const string& message) {
+    AssertHelper(type == kFatal ?
+                 TestPartResult::kFatalFailure :
+                 TestPartResult::kNonFatalFailure,
+                 file,
+                 line,
+                 message.c_str()) = Message();
+    if (type == kFatal) {
+      posix::Abort();
+    }
+  }
+};
+
+// Returns the global failure reporter.  Will create a
+// GoogleTestFailureReporter and return it the first time called.
+GTEST_API_ FailureReporterInterface* GetFailureReporter() {
+  // Points to the global failure reporter used by Google Mock.  gcc
+  // guarantees that the following use of failure_reporter is
+  // thread-safe.  We may need to add additional synchronization to
+  // protect failure_reporter if we port Google Mock to other
+  // compilers.
+  static FailureReporterInterface* const failure_reporter =
+      new GoogleTestFailureReporter();
+  return failure_reporter;
+}
+
+// Protects global resources (stdout in particular) used by Log().
+static GTEST_DEFINE_STATIC_MUTEX_(g_log_mutex);
+
+// Returns true iff a log with the given severity is visible according
+// to the --gmock_verbose flag.
+GTEST_API_ bool LogIsVisible(LogSeverity severity) {
+  if (GMOCK_FLAG(verbose) == kInfoVerbosity) {
+    // Always show the log if --gmock_verbose=info.
+    return true;
+  } else if (GMOCK_FLAG(verbose) == kErrorVerbosity) {
+    // Always hide it if --gmock_verbose=error.
+    return false;
+  } else {
+    // If --gmock_verbose is neither "info" nor "error", we treat it
+    // as "warning" (its default value).
+    return severity == kWarning;
+  }
+}
+
+// Prints the given message to stdout iff 'severity' >= the level
+// specified by the --gmock_verbose flag.  If stack_frames_to_skip >=
+// 0, also prints the stack trace excluding the top
+// stack_frames_to_skip frames.  In opt mode, any positive
+// stack_frames_to_skip is treated as 0, since we don't know which
+// function calls will be inlined by the compiler and need to be
+// conservative.
+GTEST_API_ void Log(LogSeverity severity,
+                    const string& message,
+                    int stack_frames_to_skip) {
+  if (!LogIsVisible(severity))
+    return;
+
+  // Ensures that logs from different threads don't interleave.
+  MutexLock l(&g_log_mutex);
+
+  // "using ::std::cout;" doesn't work with Symbian's STLport, where cout is a
+  // macro.
+
+  if (severity == kWarning) {
+    // Prints a GMOCK WARNING marker to make the warnings easily searchable.
+    std::cout << "\nGMOCK WARNING:";
+  }
+  // Pre-pends a new-line to message if it doesn't start with one.
+  if (message.empty() || message[0] != '\n') {
+    std::cout << "\n";
+  }
+  std::cout << message;
+  if (stack_frames_to_skip >= 0) {
+#ifdef NDEBUG
+    // In opt mode, we have to be conservative and skip no stack frame.
+    const int actual_to_skip = 0;
+#else
+    // In dbg mode, we can do what the caller tell us to do (plus one
+    // for skipping this function's stack frame).
+    const int actual_to_skip = stack_frames_to_skip + 1;
+#endif  // NDEBUG
+
+    // Appends a new-line to message if it doesn't end with one.
+    if (!message.empty() && *message.rbegin() != '\n') {
+      std::cout << "\n";
+    }
+    std::cout << "Stack trace:\n"
+         << ::testing::internal::GetCurrentOsStackTraceExceptTop(
+             ::testing::UnitTest::GetInstance(), actual_to_skip);
+  }
+  std::cout << ::std::flush;
+}
+
+}  // namespace internal
+}  // namespace testing
diff --git a/google-breakpad/src/testing/src/gmock-matchers.cc b/google-breakpad/src/testing/src/gmock-matchers.cc
new file mode 100644
index 0000000..63f3859
--- /dev/null
+++ b/google-breakpad/src/testing/src/gmock-matchers.cc
@@ -0,0 +1,102 @@
+// Copyright 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Google Mock - a framework for writing C++ mock classes.
+//
+// This file implements Matcher<const string&>, Matcher<string>, and
+// utilities for defining matchers.
+
+#include "gmock/gmock-matchers.h"
+#include "gmock/gmock-generated-matchers.h"
+
+#include <string.h>
+#include <sstream>
+#include <string>
+
+namespace testing {
+
+// Constructs a matcher that matches a const string& whose value is
+// equal to s.
+Matcher<const internal::string&>::Matcher(const internal::string& s) {
+  *this = Eq(s);
+}
+
+// Constructs a matcher that matches a const string& whose value is
+// equal to s.
+Matcher<const internal::string&>::Matcher(const char* s) {
+  *this = Eq(internal::string(s));
+}
+
+// Constructs a matcher that matches a string whose value is equal to s.
+Matcher<internal::string>::Matcher(const internal::string& s) { *this = Eq(s); }
+
+// Constructs a matcher that matches a string whose value is equal to s.
+Matcher<internal::string>::Matcher(const char* s) {
+  *this = Eq(internal::string(s));
+}
+
+namespace internal {
+
+// Joins a vector of strings as if they are fields of a tuple; returns
+// the joined string.
+GTEST_API_ string JoinAsTuple(const Strings& fields) {
+  switch (fields.size()) {
+    case 0:
+      return "";
+    case 1:
+      return fields[0];
+    default:
+      string result = "(" + fields[0];
+      for (size_t i = 1; i < fields.size(); i++) {
+        result += ", ";
+        result += fields[i];
+      }
+      result += ")";
+      return result;
+  }
+}
+
+// Returns the description for a matcher defined using the MATCHER*()
+// macro where the user-supplied description string is "", if
+// 'negation' is false; otherwise returns the description of the
+// negation of the matcher.  'param_values' contains a list of strings
+// that are the print-out of the matcher's parameters.
+GTEST_API_ string FormatMatcherDescription(bool negation,
+                                           const char* matcher_name,
+                                           const Strings& param_values) {
+  string result = ConvertIdentifierNameToWords(matcher_name);
+  if (param_values.size() >= 1)
+    result += " " + JoinAsTuple(param_values);
+  return negation ? "not (" + result + ")" : result;
+}
+
+}  // namespace internal
+}  // namespace testing
diff --git a/google-breakpad/src/testing/src/gmock-spec-builders.cc b/google-breakpad/src/testing/src/gmock-spec-builders.cc
new file mode 100644
index 0000000..9fcb61e
--- /dev/null
+++ b/google-breakpad/src/testing/src/gmock-spec-builders.cc
@@ -0,0 +1,813 @@
+// Copyright 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Google Mock - a framework for writing C++ mock classes.
+//
+// This file implements the spec builder syntax (ON_CALL and
+// EXPECT_CALL).
+
+#include "gmock/gmock-spec-builders.h"
+
+#include <stdlib.h>
+#include <iostream>  // NOLINT
+#include <map>
+#include <set>
+#include <string>
+#include "gmock/gmock.h"
+#include "gtest/gtest.h"
+
+#if GTEST_OS_CYGWIN || GTEST_OS_LINUX || GTEST_OS_MAC
+# include <unistd.h>  // NOLINT
+#endif
+
+namespace testing {
+namespace internal {
+
+// Protects the mock object registry (in class Mock), all function
+// mockers, and all expectations.
+GTEST_API_ GTEST_DEFINE_STATIC_MUTEX_(g_gmock_mutex);
+
+// Logs a message including file and line number information.
+GTEST_API_ void LogWithLocation(testing::internal::LogSeverity severity,
+                                const char* file, int line,
+                                const string& message) {
+  ::std::ostringstream s;
+  s << file << ":" << line << ": " << message << ::std::endl;
+  Log(severity, s.str(), 0);
+}
+
+// Constructs an ExpectationBase object.
+ExpectationBase::ExpectationBase(const char* a_file,
+                                 int a_line,
+                                 const string& a_source_text)
+    : file_(a_file),
+      line_(a_line),
+      source_text_(a_source_text),
+      cardinality_specified_(false),
+      cardinality_(Exactly(1)),
+      call_count_(0),
+      retired_(false),
+      extra_matcher_specified_(false),
+      repeated_action_specified_(false),
+      retires_on_saturation_(false),
+      last_clause_(kNone),
+      action_count_checked_(false) {}
+
+// Destructs an ExpectationBase object.
+ExpectationBase::~ExpectationBase() {}
+
+// Explicitly specifies the cardinality of this expectation.  Used by
+// the subclasses to implement the .Times() clause.
+void ExpectationBase::SpecifyCardinality(const Cardinality& a_cardinality) {
+  cardinality_specified_ = true;
+  cardinality_ = a_cardinality;
+}
+
+// Retires all pre-requisites of this expectation.
+void ExpectationBase::RetireAllPreRequisites()
+    GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
+  if (is_retired()) {
+    // We can take this short-cut as we never retire an expectation
+    // until we have retired all its pre-requisites.
+    return;
+  }
+
+  for (ExpectationSet::const_iterator it = immediate_prerequisites_.begin();
+       it != immediate_prerequisites_.end(); ++it) {
+    ExpectationBase* const prerequisite = it->expectation_base().get();
+    if (!prerequisite->is_retired()) {
+      prerequisite->RetireAllPreRequisites();
+      prerequisite->Retire();
+    }
+  }
+}
+
+// Returns true iff all pre-requisites of this expectation have been
+// satisfied.
+bool ExpectationBase::AllPrerequisitesAreSatisfied() const
+    GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
+  g_gmock_mutex.AssertHeld();
+  for (ExpectationSet::const_iterator it = immediate_prerequisites_.begin();
+       it != immediate_prerequisites_.end(); ++it) {
+    if (!(it->expectation_base()->IsSatisfied()) ||
+        !(it->expectation_base()->AllPrerequisitesAreSatisfied()))
+      return false;
+  }
+  return true;
+}
+
+// Adds unsatisfied pre-requisites of this expectation to 'result'.
+void ExpectationBase::FindUnsatisfiedPrerequisites(ExpectationSet* result) const
+    GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
+  g_gmock_mutex.AssertHeld();
+  for (ExpectationSet::const_iterator it = immediate_prerequisites_.begin();
+       it != immediate_prerequisites_.end(); ++it) {
+    if (it->expectation_base()->IsSatisfied()) {
+      // If *it is satisfied and has a call count of 0, some of its
+      // pre-requisites may not be satisfied yet.
+      if (it->expectation_base()->call_count_ == 0) {
+        it->expectation_base()->FindUnsatisfiedPrerequisites(result);
+      }
+    } else {
+      // Now that we know *it is unsatisfied, we are not so interested
+      // in whether its pre-requisites are satisfied.  Therefore we
+      // don't recursively call FindUnsatisfiedPrerequisites() here.
+      *result += *it;
+    }
+  }
+}
+
+// Describes how many times a function call matching this
+// expectation has occurred.
+void ExpectationBase::DescribeCallCountTo(::std::ostream* os) const
+    GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
+  g_gmock_mutex.AssertHeld();
+
+  // Describes how many times the function is expected to be called.
+  *os << "         Expected: to be ";
+  cardinality().DescribeTo(os);
+  *os << "\n           Actual: ";
+  Cardinality::DescribeActualCallCountTo(call_count(), os);
+
+  // Describes the state of the expectation (e.g. is it satisfied?
+  // is it active?).
+  *os << " - " << (IsOverSaturated() ? "over-saturated" :
+                   IsSaturated() ? "saturated" :
+                   IsSatisfied() ? "satisfied" : "unsatisfied")
+      << " and "
+      << (is_retired() ? "retired" : "active");
+}
+
+// Checks the action count (i.e. the number of WillOnce() and
+// WillRepeatedly() clauses) against the cardinality if this hasn't
+// been done before.  Prints a warning if there are too many or too
+// few actions.
+void ExpectationBase::CheckActionCountIfNotDone() const
+    GTEST_LOCK_EXCLUDED_(mutex_) {
+  bool should_check = false;
+  {
+    MutexLock l(&mutex_);
+    if (!action_count_checked_) {
+      action_count_checked_ = true;
+      should_check = true;
+    }
+  }
+
+  if (should_check) {
+    if (!cardinality_specified_) {
+      // The cardinality was inferred - no need to check the action
+      // count against it.
+      return;
+    }
+
+    // The cardinality was explicitly specified.
+    const int action_count = static_cast<int>(untyped_actions_.size());
+    const int upper_bound = cardinality().ConservativeUpperBound();
+    const int lower_bound = cardinality().ConservativeLowerBound();
+    bool too_many;  // True if there are too many actions, or false
+    // if there are too few.
+    if (action_count > upper_bound ||
+        (action_count == upper_bound && repeated_action_specified_)) {
+      too_many = true;
+    } else if (0 < action_count && action_count < lower_bound &&
+               !repeated_action_specified_) {
+      too_many = false;
+    } else {
+      return;
+    }
+
+    ::std::stringstream ss;
+    DescribeLocationTo(&ss);
+    ss << "Too " << (too_many ? "many" : "few")
+       << " actions specified in " << source_text() << "...\n"
+       << "Expected to be ";
+    cardinality().DescribeTo(&ss);
+    ss << ", but has " << (too_many ? "" : "only ")
+       << action_count << " WillOnce()"
+       << (action_count == 1 ? "" : "s");
+    if (repeated_action_specified_) {
+      ss << " and a WillRepeatedly()";
+    }
+    ss << ".";
+    Log(kWarning, ss.str(), -1);  // -1 means "don't print stack trace".
+  }
+}
+
+// Implements the .Times() clause.
+void ExpectationBase::UntypedTimes(const Cardinality& a_cardinality) {
+  if (last_clause_ == kTimes) {
+    ExpectSpecProperty(false,
+                       ".Times() cannot appear "
+                       "more than once in an EXPECT_CALL().");
+  } else {
+    ExpectSpecProperty(last_clause_ < kTimes,
+                       ".Times() cannot appear after "
+                       ".InSequence(), .WillOnce(), .WillRepeatedly(), "
+                       "or .RetiresOnSaturation().");
+  }
+  last_clause_ = kTimes;
+
+  SpecifyCardinality(a_cardinality);
+}
+
+// Points to the implicit sequence introduced by a living InSequence
+// object (if any) in the current thread or NULL.
+GTEST_API_ ThreadLocal<Sequence*> g_gmock_implicit_sequence;
+
+// Reports an uninteresting call (whose description is in msg) in the
+// manner specified by 'reaction'.
+void ReportUninterestingCall(CallReaction reaction, const string& msg) {
+  switch (reaction) {
+    case kAllow:
+      Log(kInfo, msg, 3);
+      break;
+    case kWarn:
+      Log(kWarning, msg, 3);
+      break;
+    default:  // FAIL
+      Expect(false, NULL, -1, msg);
+  }
+}
+
+UntypedFunctionMockerBase::UntypedFunctionMockerBase()
+    : mock_obj_(NULL), name_("") {}
+
+UntypedFunctionMockerBase::~UntypedFunctionMockerBase() {}
+
+// Sets the mock object this mock method belongs to, and registers
+// this information in the global mock registry.  Will be called
+// whenever an EXPECT_CALL() or ON_CALL() is executed on this mock
+// method.
+void UntypedFunctionMockerBase::RegisterOwner(const void* mock_obj)
+    GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
+  {
+    MutexLock l(&g_gmock_mutex);
+    mock_obj_ = mock_obj;
+  }
+  Mock::Register(mock_obj, this);
+}
+
+// Sets the mock object this mock method belongs to, and sets the name
+// of the mock function.  Will be called upon each invocation of this
+// mock function.
+void UntypedFunctionMockerBase::SetOwnerAndName(const void* mock_obj,
+                                                const char* name)
+    GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
+  // We protect name_ under g_gmock_mutex in case this mock function
+  // is called from two threads concurrently.
+  MutexLock l(&g_gmock_mutex);
+  mock_obj_ = mock_obj;
+  name_ = name;
+}
+
+// Returns the name of the function being mocked.  Must be called
+// after RegisterOwner() or SetOwnerAndName() has been called.
+const void* UntypedFunctionMockerBase::MockObject() const
+    GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
+  const void* mock_obj;
+  {
+    // We protect mock_obj_ under g_gmock_mutex in case this mock
+    // function is called from two threads concurrently.
+    MutexLock l(&g_gmock_mutex);
+    Assert(mock_obj_ != NULL, __FILE__, __LINE__,
+           "MockObject() must not be called before RegisterOwner() or "
+           "SetOwnerAndName() has been called.");
+    mock_obj = mock_obj_;
+  }
+  return mock_obj;
+}
+
+// Returns the name of this mock method.  Must be called after
+// SetOwnerAndName() has been called.
+const char* UntypedFunctionMockerBase::Name() const
+    GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
+  const char* name;
+  {
+    // We protect name_ under g_gmock_mutex in case this mock
+    // function is called from two threads concurrently.
+    MutexLock l(&g_gmock_mutex);
+    Assert(name_ != NULL, __FILE__, __LINE__,
+           "Name() must not be called before SetOwnerAndName() has "
+           "been called.");
+    name = name_;
+  }
+  return name;
+}
+
+// Calculates the result of invoking this mock function with the given
+// arguments, prints it, and returns it.  The caller is responsible
+// for deleting the result.
+const UntypedActionResultHolderBase*
+UntypedFunctionMockerBase::UntypedInvokeWith(const void* const untyped_args)
+    GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
+  if (untyped_expectations_.size() == 0) {
+    // No expectation is set on this mock method - we have an
+    // uninteresting call.
+
+    // We must get Google Mock's reaction on uninteresting calls
+    // made on this mock object BEFORE performing the action,
+    // because the action may DELETE the mock object and make the
+    // following expression meaningless.
+    const CallReaction reaction =
+        Mock::GetReactionOnUninterestingCalls(MockObject());
+
+    // True iff we need to print this call's arguments and return
+    // value.  This definition must be kept in sync with
+    // the behavior of ReportUninterestingCall().
+    const bool need_to_report_uninteresting_call =
+        // If the user allows this uninteresting call, we print it
+        // only when he wants informational messages.
+        reaction == kAllow ? LogIsVisible(kInfo) :
+        // If the user wants this to be a warning, we print it only
+        // when he wants to see warnings.
+        reaction == kWarn ? LogIsVisible(kWarning) :
+        // Otherwise, the user wants this to be an error, and we
+        // should always print detailed information in the error.
+        true;
+
+    if (!need_to_report_uninteresting_call) {
+      // Perform the action without printing the call information.
+      return this->UntypedPerformDefaultAction(untyped_args, "");
+    }
+
+    // Warns about the uninteresting call.
+    ::std::stringstream ss;
+    this->UntypedDescribeUninterestingCall(untyped_args, &ss);
+
+    // Calculates the function result.
+    const UntypedActionResultHolderBase* const result =
+        this->UntypedPerformDefaultAction(untyped_args, ss.str());
+
+    // Prints the function result.
+    if (result != NULL)
+      result->PrintAsActionResult(&ss);
+
+    ReportUninterestingCall(reaction, ss.str());
+    return result;
+  }
+
+  bool is_excessive = false;
+  ::std::stringstream ss;
+  ::std::stringstream why;
+  ::std::stringstream loc;
+  const void* untyped_action = NULL;
+
+  // The UntypedFindMatchingExpectation() function acquires and
+  // releases g_gmock_mutex.
+  const ExpectationBase* const untyped_expectation =
+      this->UntypedFindMatchingExpectation(
+          untyped_args, &untyped_action, &is_excessive,
+          &ss, &why);
+  const bool found = untyped_expectation != NULL;
+
+  // True iff we need to print the call's arguments and return value.
+  // This definition must be kept in sync with the uses of Expect()
+  // and Log() in this function.
+  const bool need_to_report_call =
+      !found || is_excessive || LogIsVisible(kInfo);
+  if (!need_to_report_call) {
+    // Perform the action without printing the call information.
+    return
+        untyped_action == NULL ?
+        this->UntypedPerformDefaultAction(untyped_args, "") :
+        this->UntypedPerformAction(untyped_action, untyped_args);
+  }
+
+  ss << "    Function call: " << Name();
+  this->UntypedPrintArgs(untyped_args, &ss);
+
+  // In case the action deletes a piece of the expectation, we
+  // generate the message beforehand.
+  if (found && !is_excessive) {
+    untyped_expectation->DescribeLocationTo(&loc);
+  }
+
+  const UntypedActionResultHolderBase* const result =
+      untyped_action == NULL ?
+      this->UntypedPerformDefaultAction(untyped_args, ss.str()) :
+      this->UntypedPerformAction(untyped_action, untyped_args);
+  if (result != NULL)
+    result->PrintAsActionResult(&ss);
+  ss << "\n" << why.str();
+
+  if (!found) {
+    // No expectation matches this call - reports a failure.
+    Expect(false, NULL, -1, ss.str());
+  } else if (is_excessive) {
+    // We had an upper-bound violation and the failure message is in ss.
+    Expect(false, untyped_expectation->file(),
+           untyped_expectation->line(), ss.str());
+  } else {
+    // We had an expected call and the matching expectation is
+    // described in ss.
+    Log(kInfo, loc.str() + ss.str(), 2);
+  }
+
+  return result;
+}
+
+// Returns an Expectation object that references and co-owns exp,
+// which must be an expectation on this mock function.
+Expectation UntypedFunctionMockerBase::GetHandleOf(ExpectationBase* exp) {
+  for (UntypedExpectations::const_iterator it =
+           untyped_expectations_.begin();
+       it != untyped_expectations_.end(); ++it) {
+    if (it->get() == exp) {
+      return Expectation(*it);
+    }
+  }
+
+  Assert(false, __FILE__, __LINE__, "Cannot find expectation.");
+  return Expectation();
+  // The above statement is just to make the code compile, and will
+  // never be executed.
+}
+
+// Verifies that all expectations on this mock function have been
+// satisfied.  Reports one or more Google Test non-fatal failures
+// and returns false if not.
+bool UntypedFunctionMockerBase::VerifyAndClearExpectationsLocked()
+    GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
+  g_gmock_mutex.AssertHeld();
+  bool expectations_met = true;
+  for (UntypedExpectations::const_iterator it =
+           untyped_expectations_.begin();
+       it != untyped_expectations_.end(); ++it) {
+    ExpectationBase* const untyped_expectation = it->get();
+    if (untyped_expectation->IsOverSaturated()) {
+      // There was an upper-bound violation.  Since the error was
+      // already reported when it occurred, there is no need to do
+      // anything here.
+      expectations_met = false;
+    } else if (!untyped_expectation->IsSatisfied()) {
+      expectations_met = false;
+      ::std::stringstream ss;
+      ss  << "Actual function call count doesn't match "
+          << untyped_expectation->source_text() << "...\n";
+      // No need to show the source file location of the expectation
+      // in the description, as the Expect() call that follows already
+      // takes care of it.
+      untyped_expectation->MaybeDescribeExtraMatcherTo(&ss);
+      untyped_expectation->DescribeCallCountTo(&ss);
+      Expect(false, untyped_expectation->file(),
+             untyped_expectation->line(), ss.str());
+    }
+  }
+
+  // Deleting our expectations may trigger other mock objects to be deleted, for
+  // example if an action contains a reference counted smart pointer to that
+  // mock object, and that is the last reference. So if we delete our
+  // expectations within the context of the global mutex we may deadlock when
+  // this method is called again. Instead, make a copy of the set of
+  // expectations to delete, clear our set within the mutex, and then clear the
+  // copied set outside of it.
+  UntypedExpectations expectations_to_delete;
+  untyped_expectations_.swap(expectations_to_delete);
+
+  g_gmock_mutex.Unlock();
+  expectations_to_delete.clear();
+  g_gmock_mutex.Lock();
+
+  return expectations_met;
+}
+
+}  // namespace internal
+
+// Class Mock.
+
+namespace {
+
+typedef std::set<internal::UntypedFunctionMockerBase*> FunctionMockers;
+
+// The current state of a mock object.  Such information is needed for
+// detecting leaked mock objects and explicitly verifying a mock's
+// expectations.
+struct MockObjectState {
+  MockObjectState()
+      : first_used_file(NULL), first_used_line(-1), leakable(false) {}
+
+  // Where in the source file an ON_CALL or EXPECT_CALL is first
+  // invoked on this mock object.
+  const char* first_used_file;
+  int first_used_line;
+  ::std::string first_used_test_case;
+  ::std::string first_used_test;
+  bool leakable;  // true iff it's OK to leak the object.
+  FunctionMockers function_mockers;  // All registered methods of the object.
+};
+
+// A global registry holding the state of all mock objects that are
+// alive.  A mock object is added to this registry the first time
+// Mock::AllowLeak(), ON_CALL(), or EXPECT_CALL() is called on it.  It
+// is removed from the registry in the mock object's destructor.
+class MockObjectRegistry {
+ public:
+  // Maps a mock object (identified by its address) to its state.
+  typedef std::map<const void*, MockObjectState> StateMap;
+
+  // This destructor will be called when a program exits, after all
+  // tests in it have been run.  By then, there should be no mock
+  // object alive.  Therefore we report any living object as test
+  // failure, unless the user explicitly asked us to ignore it.
+  ~MockObjectRegistry() {
+    // "using ::std::cout;" doesn't work with Symbian's STLport, where cout is
+    // a macro.
+
+    if (!GMOCK_FLAG(catch_leaked_mocks))
+      return;
+
+    int leaked_count = 0;
+    for (StateMap::const_iterator it = states_.begin(); it != states_.end();
+         ++it) {
+      if (it->second.leakable)  // The user said it's fine to leak this object.
+        continue;
+
+      // TODO(wan@google.com): Print the type of the leaked object.
+      // This can help the user identify the leaked object.
+      std::cout << "\n";
+      const MockObjectState& state = it->second;
+      std::cout << internal::FormatFileLocation(state.first_used_file,
+                                                state.first_used_line);
+      std::cout << " ERROR: this mock object";
+      if (state.first_used_test != "") {
+        std::cout << " (used in test " << state.first_used_test_case << "."
+             << state.first_used_test << ")";
+      }
+      std::cout << " should be deleted but never is. Its address is @"
+           << it->first << ".";
+      leaked_count++;
+    }
+    if (leaked_count > 0) {
+      std::cout << "\nERROR: " << leaked_count
+           << " leaked mock " << (leaked_count == 1 ? "object" : "objects")
+           << " found at program exit.\n";
+      std::cout.flush();
+      ::std::cerr.flush();
+      // RUN_ALL_TESTS() has already returned when this destructor is
+      // called.  Therefore we cannot use the normal Google Test
+      // failure reporting mechanism.
+      _exit(1);  // We cannot call exit() as it is not reentrant and
+                 // may already have been called.
+    }
+  }
+
+  StateMap& states() { return states_; }
+
+ private:
+  StateMap states_;
+};
+
+// Protected by g_gmock_mutex.
+MockObjectRegistry g_mock_object_registry;
+
+// Maps a mock object to the reaction Google Mock should have when an
+// uninteresting method is called.  Protected by g_gmock_mutex.
+std::map<const void*, internal::CallReaction> g_uninteresting_call_reaction;
+
+// Sets the reaction Google Mock should have when an uninteresting
+// method of the given mock object is called.
+void SetReactionOnUninterestingCalls(const void* mock_obj,
+                                     internal::CallReaction reaction)
+    GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
+  internal::MutexLock l(&internal::g_gmock_mutex);
+  g_uninteresting_call_reaction[mock_obj] = reaction;
+}
+
+}  // namespace
+
+// Tells Google Mock to allow uninteresting calls on the given mock
+// object.
+void Mock::AllowUninterestingCalls(const void* mock_obj)
+    GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
+  SetReactionOnUninterestingCalls(mock_obj, internal::kAllow);
+}
+
+// Tells Google Mock to warn the user about uninteresting calls on the
+// given mock object.
+void Mock::WarnUninterestingCalls(const void* mock_obj)
+    GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
+  SetReactionOnUninterestingCalls(mock_obj, internal::kWarn);
+}
+
+// Tells Google Mock to fail uninteresting calls on the given mock
+// object.
+void Mock::FailUninterestingCalls(const void* mock_obj)
+    GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
+  SetReactionOnUninterestingCalls(mock_obj, internal::kFail);
+}
+
+// Tells Google Mock the given mock object is being destroyed and its
+// entry in the call-reaction table should be removed.
+void Mock::UnregisterCallReaction(const void* mock_obj)
+    GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
+  internal::MutexLock l(&internal::g_gmock_mutex);
+  g_uninteresting_call_reaction.erase(mock_obj);
+}
+
+// Returns the reaction Google Mock will have on uninteresting calls
+// made on the given mock object.
+internal::CallReaction Mock::GetReactionOnUninterestingCalls(
+    const void* mock_obj)
+        GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
+  internal::MutexLock l(&internal::g_gmock_mutex);
+  return (g_uninteresting_call_reaction.count(mock_obj) == 0) ?
+      internal::kWarn : g_uninteresting_call_reaction[mock_obj];
+}
+
+// Tells Google Mock to ignore mock_obj when checking for leaked mock
+// objects.
+void Mock::AllowLeak(const void* mock_obj)
+    GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
+  internal::MutexLock l(&internal::g_gmock_mutex);
+  g_mock_object_registry.states()[mock_obj].leakable = true;
+}
+
+// Verifies and clears all expectations on the given mock object.  If
+// the expectations aren't satisfied, generates one or more Google
+// Test non-fatal failures and returns false.
+bool Mock::VerifyAndClearExpectations(void* mock_obj)
+    GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
+  internal::MutexLock l(&internal::g_gmock_mutex);
+  return VerifyAndClearExpectationsLocked(mock_obj);
+}
+
+// Verifies all expectations on the given mock object and clears its
+// default actions and expectations.  Returns true iff the
+// verification was successful.
+bool Mock::VerifyAndClear(void* mock_obj)
+    GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
+  internal::MutexLock l(&internal::g_gmock_mutex);
+  ClearDefaultActionsLocked(mock_obj);
+  return VerifyAndClearExpectationsLocked(mock_obj);
+}
+
+// Verifies and clears all expectations on the given mock object.  If
+// the expectations aren't satisfied, generates one or more Google
+// Test non-fatal failures and returns false.
+bool Mock::VerifyAndClearExpectationsLocked(void* mock_obj)
+    GTEST_EXCLUSIVE_LOCK_REQUIRED_(internal::g_gmock_mutex) {
+  internal::g_gmock_mutex.AssertHeld();
+  if (g_mock_object_registry.states().count(mock_obj) == 0) {
+    // No EXPECT_CALL() was set on the given mock object.
+    return true;
+  }
+
+  // Verifies and clears the expectations on each mock method in the
+  // given mock object.
+  bool expectations_met = true;
+  FunctionMockers& mockers =
+      g_mock_object_registry.states()[mock_obj].function_mockers;
+  for (FunctionMockers::const_iterator it = mockers.begin();
+       it != mockers.end(); ++it) {
+    if (!(*it)->VerifyAndClearExpectationsLocked()) {
+      expectations_met = false;
+    }
+  }
+
+  // We don't clear the content of mockers, as they may still be
+  // needed by ClearDefaultActionsLocked().
+  return expectations_met;
+}
+
+// Registers a mock object and a mock method it owns.
+void Mock::Register(const void* mock_obj,
+                    internal::UntypedFunctionMockerBase* mocker)
+    GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
+  internal::MutexLock l(&internal::g_gmock_mutex);
+  g_mock_object_registry.states()[mock_obj].function_mockers.insert(mocker);
+}
+
+// Tells Google Mock where in the source code mock_obj is used in an
+// ON_CALL or EXPECT_CALL.  In case mock_obj is leaked, this
+// information helps the user identify which object it is.
+void Mock::RegisterUseByOnCallOrExpectCall(const void* mock_obj,
+                                           const char* file, int line)
+    GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
+  internal::MutexLock l(&internal::g_gmock_mutex);
+  MockObjectState& state = g_mock_object_registry.states()[mock_obj];
+  if (state.first_used_file == NULL) {
+    state.first_used_file = file;
+    state.first_used_line = line;
+    const TestInfo* const test_info =
+        UnitTest::GetInstance()->current_test_info();
+    if (test_info != NULL) {
+      // TODO(wan@google.com): record the test case name when the
+      // ON_CALL or EXPECT_CALL is invoked from SetUpTestCase() or
+      // TearDownTestCase().
+      state.first_used_test_case = test_info->test_case_name();
+      state.first_used_test = test_info->name();
+    }
+  }
+}
+
+// Unregisters a mock method; removes the owning mock object from the
+// registry when the last mock method associated with it has been
+// unregistered.  This is called only in the destructor of
+// FunctionMockerBase.
+void Mock::UnregisterLocked(internal::UntypedFunctionMockerBase* mocker)
+    GTEST_EXCLUSIVE_LOCK_REQUIRED_(internal::g_gmock_mutex) {
+  internal::g_gmock_mutex.AssertHeld();
+  for (MockObjectRegistry::StateMap::iterator it =
+           g_mock_object_registry.states().begin();
+       it != g_mock_object_registry.states().end(); ++it) {
+    FunctionMockers& mockers = it->second.function_mockers;
+    if (mockers.erase(mocker) > 0) {
+      // mocker was in mockers and has been just removed.
+      if (mockers.empty()) {
+        g_mock_object_registry.states().erase(it);
+      }
+      return;
+    }
+  }
+}
+
+// Clears all ON_CALL()s set on the given mock object.
+void Mock::ClearDefaultActionsLocked(void* mock_obj)
+    GTEST_EXCLUSIVE_LOCK_REQUIRED_(internal::g_gmock_mutex) {
+  internal::g_gmock_mutex.AssertHeld();
+
+  if (g_mock_object_registry.states().count(mock_obj) == 0) {
+    // No ON_CALL() was set on the given mock object.
+    return;
+  }
+
+  // Clears the default actions for each mock method in the given mock
+  // object.
+  FunctionMockers& mockers =
+      g_mock_object_registry.states()[mock_obj].function_mockers;
+  for (FunctionMockers::const_iterator it = mockers.begin();
+       it != mockers.end(); ++it) {
+    (*it)->ClearDefaultActionsLocked();
+  }
+
+  // We don't clear the content of mockers, as they may still be
+  // needed by VerifyAndClearExpectationsLocked().
+}
+
+Expectation::Expectation() {}
+
+Expectation::Expectation(
+    const internal::linked_ptr<internal::ExpectationBase>& an_expectation_base)
+    : expectation_base_(an_expectation_base) {}
+
+Expectation::~Expectation() {}
+
+// Adds an expectation to a sequence.
+void Sequence::AddExpectation(const Expectation& expectation) const {
+  if (*last_expectation_ != expectation) {
+    if (last_expectation_->expectation_base() != NULL) {
+      expectation.expectation_base()->immediate_prerequisites_
+          += *last_expectation_;
+    }
+    *last_expectation_ = expectation;
+  }
+}
+
+// Creates the implicit sequence if there isn't one.
+InSequence::InSequence() {
+  if (internal::g_gmock_implicit_sequence.get() == NULL) {
+    internal::g_gmock_implicit_sequence.set(new Sequence);
+    sequence_created_ = true;
+  } else {
+    sequence_created_ = false;
+  }
+}
+
+// Deletes the implicit sequence if it was created by the constructor
+// of this object.
+InSequence::~InSequence() {
+  if (sequence_created_) {
+    delete internal::g_gmock_implicit_sequence.get();
+    internal::g_gmock_implicit_sequence.set(NULL);
+  }
+}
+
+}  // namespace testing
diff --git a/google-breakpad/src/testing/src/gmock.cc b/google-breakpad/src/testing/src/gmock.cc
new file mode 100644
index 0000000..e06acc5
--- /dev/null
+++ b/google-breakpad/src/testing/src/gmock.cc
@@ -0,0 +1,182 @@
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+#include "gmock/gmock.h"
+#include "gmock/internal/gmock-port.h"
+
+namespace testing {
+
+// TODO(wan@google.com): support using environment variables to
+// control the flag values, like what Google Test does.
+
+GMOCK_DEFINE_bool_(catch_leaked_mocks, true,
+                   "true iff Google Mock should report leaked mock objects "
+                   "as failures.");
+
+GMOCK_DEFINE_string_(verbose, internal::kWarningVerbosity,
+                     "Controls how verbose Google Mock's output is."
+                     "  Valid values:\n"
+                     "  info    - prints all messages.\n"
+                     "  warning - prints warnings and errors.\n"
+                     "  error   - prints errors only.");
+
+namespace internal {
+
+// Parses a string as a command line flag.  The string should have the
+// format "--gmock_flag=value".  When def_optional is true, the
+// "=value" part can be omitted.
+//
+// Returns the value of the flag, or NULL if the parsing failed.
+static const char* ParseGoogleMockFlagValue(const char* str,
+                                            const char* flag,
+                                            bool def_optional) {
+  // str and flag must not be NULL.
+  if (str == NULL || flag == NULL) return NULL;
+
+  // The flag must start with "--gmock_".
+  const String flag_str = String::Format("--gmock_%s", flag);
+  const size_t flag_len = flag_str.length();
+  if (strncmp(str, flag_str.c_str(), flag_len) != 0) return NULL;
+
+  // Skips the flag name.
+  const char* flag_end = str + flag_len;
+
+  // When def_optional is true, it's OK to not have a "=value" part.
+  if (def_optional && (flag_end[0] == '\0')) {
+    return flag_end;
+  }
+
+  // If def_optional is true and there are more characters after the
+  // flag name, or if def_optional is false, there must be a '=' after
+  // the flag name.
+  if (flag_end[0] != '=') return NULL;
+
+  // Returns the string after "=".
+  return flag_end + 1;
+}
+
+// Parses a string for a Google Mock bool flag, in the form of
+// "--gmock_flag=value".
+//
+// On success, stores the value of the flag in *value, and returns
+// true.  On failure, returns false without changing *value.
+static bool ParseGoogleMockBoolFlag(const char* str, const char* flag,
+                                    bool* value) {
+  // Gets the value of the flag as a string.
+  const char* const value_str = ParseGoogleMockFlagValue(str, flag, true);
+
+  // Aborts if the parsing failed.
+  if (value_str == NULL) return false;
+
+  // Converts the string value to a bool.
+  *value = !(*value_str == '0' || *value_str == 'f' || *value_str == 'F');
+  return true;
+}
+
+// Parses a string for a Google Mock string flag, in the form of
+// "--gmock_flag=value".
+//
+// On success, stores the value of the flag in *value, and returns
+// true.  On failure, returns false without changing *value.
+static bool ParseGoogleMockStringFlag(const char* str, const char* flag,
+                                      String* value) {
+  // Gets the value of the flag as a string.
+  const char* const value_str = ParseGoogleMockFlagValue(str, flag, false);
+
+  // Aborts if the parsing failed.
+  if (value_str == NULL) return false;
+
+  // Sets *value to the value of the flag.
+  *value = value_str;
+  return true;
+}
+
+// The internal implementation of InitGoogleMock().
+//
+// The type parameter CharType can be instantiated to either char or
+// wchar_t.
+template <typename CharType>
+void InitGoogleMockImpl(int* argc, CharType** argv) {
+  // Makes sure Google Test is initialized.  InitGoogleTest() is
+  // idempotent, so it's fine if the user has already called it.
+  InitGoogleTest(argc, argv);
+  if (*argc <= 0) return;
+
+  for (int i = 1; i != *argc; i++) {
+    const String arg_string = StreamableToString(argv[i]);
+    const char* const arg = arg_string.c_str();
+
+    // Do we see a Google Mock flag?
+    if (ParseGoogleMockBoolFlag(arg, "catch_leaked_mocks",
+                                &GMOCK_FLAG(catch_leaked_mocks)) ||
+        ParseGoogleMockStringFlag(arg, "verbose", &GMOCK_FLAG(verbose))) {
+      // Yes.  Shift the remainder of the argv list left by one.  Note
+      // that argv has (*argc + 1) elements, the last one always being
+      // NULL.  The following loop moves the trailing NULL element as
+      // well.
+      for (int j = i; j != *argc; j++) {
+        argv[j] = argv[j + 1];
+      }
+
+      // Decrements the argument count.
+      (*argc)--;
+
+      // We also need to decrement the iterator as we just removed
+      // an element.
+      i--;
+    }
+  }
+}
+
+}  // namespace internal
+
+// Initializes Google Mock.  This must be called before running the
+// tests.  In particular, it parses a command line for the flags that
+// Google Mock recognizes.  Whenever a Google Mock flag is seen, it is
+// removed from argv, and *argc is decremented.
+//
+// No value is returned.  Instead, the Google Mock flag variables are
+// updated.
+//
+// Since Google Test is needed for Google Mock to work, this function
+// also initializes Google Test and parses its flags, if that hasn't
+// been done.
+GTEST_API_ void InitGoogleMock(int* argc, char** argv) {
+  internal::InitGoogleMockImpl(argc, argv);
+}
+
+// This overloaded version can be used in Windows programs compiled in
+// UNICODE mode.
+GTEST_API_ void InitGoogleMock(int* argc, wchar_t** argv) {
+  internal::InitGoogleMockImpl(argc, argv);
+}
+
+}  // namespace testing
diff --git a/google-breakpad/src/testing/src/gmock_main.cc b/google-breakpad/src/testing/src/gmock_main.cc
new file mode 100644
index 0000000..bd5be03
--- /dev/null
+++ b/google-breakpad/src/testing/src/gmock_main.cc
@@ -0,0 +1,54 @@
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+#include <iostream>
+#include "gmock/gmock.h"
+#include "gtest/gtest.h"
+
+// MS C++ compiler/linker has a bug on Windows (not on Windows CE), which
+// causes a link error when _tmain is defined in a static library and UNICODE
+// is enabled. For this reason instead of _tmain, main function is used on
+// Windows. See the following link to track the current status of this bug:
+// http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=394464  // NOLINT
+#if GTEST_OS_WINDOWS_MOBILE
+# include <tchar.h>  // NOLINT
+
+GTEST_API_ int _tmain(int argc, TCHAR** argv) {
+#else
+GTEST_API_ int main(int argc, char** argv) {
+#endif  // GTEST_OS_WINDOWS_MOBILE
+  std::cout << "Running main() from gmock_main.cc\n";
+  // Since Google Mock depends on Google Test, InitGoogleMock() is
+  // also responsible for initializing Google Test.  Therefore there's
+  // no need for calling testing::InitGoogleTest() separately.
+  testing::InitGoogleMock(&argc, argv);
+  return RUN_ALL_TESTS();
+}
diff --git a/google-breakpad/src/testing/test/gmock-actions_test.cc b/google-breakpad/src/testing/test/gmock-actions_test.cc
new file mode 100644
index 0000000..fd87c74
--- /dev/null
+++ b/google-breakpad/src/testing/test/gmock-actions_test.cc
@@ -0,0 +1,1308 @@
+// Copyright 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Google Mock - a framework for writing C++ mock classes.
+//
+// This file tests the built-in actions.
+
+#include "gmock/gmock-actions.h"
+#include <algorithm>
+#include <iterator>
+#include <string>
+#include "gmock/gmock.h"
+#include "gmock/internal/gmock-port.h"
+#include "gtest/gtest.h"
+#include "gtest/gtest-spi.h"
+
+namespace {
+
+using ::std::tr1::get;
+using ::std::tr1::make_tuple;
+using ::std::tr1::tuple;
+using ::std::tr1::tuple_element;
+using testing::internal::BuiltInDefaultValue;
+using testing::internal::Int64;
+using testing::internal::UInt64;
+// This list should be kept sorted.
+using testing::_;
+using testing::Action;
+using testing::ActionInterface;
+using testing::Assign;
+using testing::ByRef;
+using testing::DefaultValue;
+using testing::DoDefault;
+using testing::IgnoreResult;
+using testing::Invoke;
+using testing::InvokeWithoutArgs;
+using testing::MakePolymorphicAction;
+using testing::Ne;
+using testing::PolymorphicAction;
+using testing::Return;
+using testing::ReturnNull;
+using testing::ReturnRef;
+using testing::ReturnRefOfCopy;
+using testing::SetArgPointee;
+using testing::SetArgumentPointee;
+
+#if !GTEST_OS_WINDOWS_MOBILE
+using testing::SetErrnoAndReturn;
+#endif
+
+#if GTEST_HAS_PROTOBUF_
+using testing::internal::TestMessage;
+#endif  // GTEST_HAS_PROTOBUF_
+
+// Tests that BuiltInDefaultValue<T*>::Get() returns NULL.
+TEST(BuiltInDefaultValueTest, IsNullForPointerTypes) {
+  EXPECT_TRUE(BuiltInDefaultValue<int*>::Get() == NULL);
+  EXPECT_TRUE(BuiltInDefaultValue<const char*>::Get() == NULL);
+  EXPECT_TRUE(BuiltInDefaultValue<void*>::Get() == NULL);
+}
+
+// Tests that BuiltInDefaultValue<T*>::Exists() return true.
+TEST(BuiltInDefaultValueTest, ExistsForPointerTypes) {
+  EXPECT_TRUE(BuiltInDefaultValue<int*>::Exists());
+  EXPECT_TRUE(BuiltInDefaultValue<const char*>::Exists());
+  EXPECT_TRUE(BuiltInDefaultValue<void*>::Exists());
+}
+
+// Tests that BuiltInDefaultValue<T>::Get() returns 0 when T is a
+// built-in numeric type.
+TEST(BuiltInDefaultValueTest, IsZeroForNumericTypes) {
+  EXPECT_EQ(0U, BuiltInDefaultValue<unsigned char>::Get());
+  EXPECT_EQ(0, BuiltInDefaultValue<signed char>::Get());
+  EXPECT_EQ(0, BuiltInDefaultValue<char>::Get());
+#if GMOCK_HAS_SIGNED_WCHAR_T_
+  EXPECT_EQ(0U, BuiltInDefaultValue<unsigned wchar_t>::Get());
+  EXPECT_EQ(0, BuiltInDefaultValue<signed wchar_t>::Get());
+#endif
+#if GMOCK_WCHAR_T_IS_NATIVE_
+  EXPECT_EQ(0, BuiltInDefaultValue<wchar_t>::Get());
+#endif
+  EXPECT_EQ(0U, BuiltInDefaultValue<unsigned short>::Get());  // NOLINT
+  EXPECT_EQ(0, BuiltInDefaultValue<signed short>::Get());  // NOLINT
+  EXPECT_EQ(0, BuiltInDefaultValue<short>::Get());  // NOLINT
+  EXPECT_EQ(0U, BuiltInDefaultValue<unsigned int>::Get());
+  EXPECT_EQ(0, BuiltInDefaultValue<signed int>::Get());
+  EXPECT_EQ(0, BuiltInDefaultValue<int>::Get());
+  EXPECT_EQ(0U, BuiltInDefaultValue<unsigned long>::Get());  // NOLINT
+  EXPECT_EQ(0, BuiltInDefaultValue<signed long>::Get());  // NOLINT
+  EXPECT_EQ(0, BuiltInDefaultValue<long>::Get());  // NOLINT
+  EXPECT_EQ(0U, BuiltInDefaultValue<UInt64>::Get());
+  EXPECT_EQ(0, BuiltInDefaultValue<Int64>::Get());
+  EXPECT_EQ(0, BuiltInDefaultValue<float>::Get());
+  EXPECT_EQ(0, BuiltInDefaultValue<double>::Get());
+}
+
+// Tests that BuiltInDefaultValue<T>::Exists() returns true when T is a
+// built-in numeric type.
+TEST(BuiltInDefaultValueTest, ExistsForNumericTypes) {
+  EXPECT_TRUE(BuiltInDefaultValue<unsigned char>::Exists());
+  EXPECT_TRUE(BuiltInDefaultValue<signed char>::Exists());
+  EXPECT_TRUE(BuiltInDefaultValue<char>::Exists());
+#if GMOCK_HAS_SIGNED_WCHAR_T_
+  EXPECT_TRUE(BuiltInDefaultValue<unsigned wchar_t>::Exists());
+  EXPECT_TRUE(BuiltInDefaultValue<signed wchar_t>::Exists());
+#endif
+#if GMOCK_WCHAR_T_IS_NATIVE_
+  EXPECT_TRUE(BuiltInDefaultValue<wchar_t>::Exists());
+#endif
+  EXPECT_TRUE(BuiltInDefaultValue<unsigned short>::Exists());  // NOLINT
+  EXPECT_TRUE(BuiltInDefaultValue<signed short>::Exists());  // NOLINT
+  EXPECT_TRUE(BuiltInDefaultValue<short>::Exists());  // NOLINT
+  EXPECT_TRUE(BuiltInDefaultValue<unsigned int>::Exists());
+  EXPECT_TRUE(BuiltInDefaultValue<signed int>::Exists());
+  EXPECT_TRUE(BuiltInDefaultValue<int>::Exists());
+  EXPECT_TRUE(BuiltInDefaultValue<unsigned long>::Exists());  // NOLINT
+  EXPECT_TRUE(BuiltInDefaultValue<signed long>::Exists());  // NOLINT
+  EXPECT_TRUE(BuiltInDefaultValue<long>::Exists());  // NOLINT
+  EXPECT_TRUE(BuiltInDefaultValue<UInt64>::Exists());
+  EXPECT_TRUE(BuiltInDefaultValue<Int64>::Exists());
+  EXPECT_TRUE(BuiltInDefaultValue<float>::Exists());
+  EXPECT_TRUE(BuiltInDefaultValue<double>::Exists());
+}
+
+// Tests that BuiltInDefaultValue<bool>::Get() returns false.
+TEST(BuiltInDefaultValueTest, IsFalseForBool) {
+  EXPECT_FALSE(BuiltInDefaultValue<bool>::Get());
+}
+
+// Tests that BuiltInDefaultValue<bool>::Exists() returns true.
+TEST(BuiltInDefaultValueTest, BoolExists) {
+  EXPECT_TRUE(BuiltInDefaultValue<bool>::Exists());
+}
+
+// Tests that BuiltInDefaultValue<T>::Get() returns "" when T is a
+// string type.
+TEST(BuiltInDefaultValueTest, IsEmptyStringForString) {
+#if GTEST_HAS_GLOBAL_STRING
+  EXPECT_EQ("", BuiltInDefaultValue< ::string>::Get());
+#endif  // GTEST_HAS_GLOBAL_STRING
+
+  EXPECT_EQ("", BuiltInDefaultValue< ::std::string>::Get());
+}
+
+// Tests that BuiltInDefaultValue<T>::Exists() returns true when T is a
+// string type.
+TEST(BuiltInDefaultValueTest, ExistsForString) {
+#if GTEST_HAS_GLOBAL_STRING
+  EXPECT_TRUE(BuiltInDefaultValue< ::string>::Exists());
+#endif  // GTEST_HAS_GLOBAL_STRING
+
+  EXPECT_TRUE(BuiltInDefaultValue< ::std::string>::Exists());
+}
+
+// Tests that BuiltInDefaultValue<const T>::Get() returns the same
+// value as BuiltInDefaultValue<T>::Get() does.
+TEST(BuiltInDefaultValueTest, WorksForConstTypes) {
+  EXPECT_EQ("", BuiltInDefaultValue<const std::string>::Get());
+  EXPECT_EQ(0, BuiltInDefaultValue<const int>::Get());
+  EXPECT_TRUE(BuiltInDefaultValue<char* const>::Get() == NULL);
+  EXPECT_FALSE(BuiltInDefaultValue<const bool>::Get());
+}
+
+// Tests that BuiltInDefaultValue<T>::Get() aborts the program with
+// the correct error message when T is a user-defined type.
+struct UserType {
+  UserType() : value(0) {}
+
+  int value;
+};
+
+TEST(BuiltInDefaultValueTest, UserTypeHasNoDefault) {
+  EXPECT_FALSE(BuiltInDefaultValue<UserType>::Exists());
+}
+
+// Tests that BuiltInDefaultValue<T&>::Get() aborts the program.
+TEST(BuiltInDefaultValueDeathTest, IsUndefinedForReferences) {
+  EXPECT_DEATH_IF_SUPPORTED({
+    BuiltInDefaultValue<int&>::Get();
+  }, "");
+  EXPECT_DEATH_IF_SUPPORTED({
+    BuiltInDefaultValue<const char&>::Get();
+  }, "");
+}
+
+TEST(BuiltInDefaultValueDeathTest, IsUndefinedForUserTypes) {
+  EXPECT_DEATH_IF_SUPPORTED({
+    BuiltInDefaultValue<UserType>::Get();
+  }, "");
+}
+
+// Tests that DefaultValue<T>::IsSet() is false initially.
+TEST(DefaultValueTest, IsInitiallyUnset) {
+  EXPECT_FALSE(DefaultValue<int>::IsSet());
+  EXPECT_FALSE(DefaultValue<const UserType>::IsSet());
+}
+
+// Tests that DefaultValue<T> can be set and then unset.
+TEST(DefaultValueTest, CanBeSetAndUnset) {
+  EXPECT_TRUE(DefaultValue<int>::Exists());
+  EXPECT_FALSE(DefaultValue<const UserType>::Exists());
+
+  DefaultValue<int>::Set(1);
+  DefaultValue<const UserType>::Set(UserType());
+
+  EXPECT_EQ(1, DefaultValue<int>::Get());
+  EXPECT_EQ(0, DefaultValue<const UserType>::Get().value);
+
+  EXPECT_TRUE(DefaultValue<int>::Exists());
+  EXPECT_TRUE(DefaultValue<const UserType>::Exists());
+
+  DefaultValue<int>::Clear();
+  DefaultValue<const UserType>::Clear();
+
+  EXPECT_FALSE(DefaultValue<int>::IsSet());
+  EXPECT_FALSE(DefaultValue<const UserType>::IsSet());
+
+  EXPECT_TRUE(DefaultValue<int>::Exists());
+  EXPECT_FALSE(DefaultValue<const UserType>::Exists());
+}
+
+// Tests that DefaultValue<T>::Get() returns the
+// BuiltInDefaultValue<T>::Get() when DefaultValue<T>::IsSet() is
+// false.
+TEST(DefaultValueDeathTest, GetReturnsBuiltInDefaultValueWhenUnset) {
+  EXPECT_FALSE(DefaultValue<int>::IsSet());
+  EXPECT_TRUE(DefaultValue<int>::Exists());
+  EXPECT_FALSE(DefaultValue<UserType>::IsSet());
+  EXPECT_FALSE(DefaultValue<UserType>::Exists());
+
+  EXPECT_EQ(0, DefaultValue<int>::Get());
+
+  EXPECT_DEATH_IF_SUPPORTED({
+    DefaultValue<UserType>::Get();
+  }, "");
+}
+
+// Tests that DefaultValue<void>::Get() returns void.
+TEST(DefaultValueTest, GetWorksForVoid) {
+  return DefaultValue<void>::Get();
+}
+
+// Tests using DefaultValue with a reference type.
+
+// Tests that DefaultValue<T&>::IsSet() is false initially.
+TEST(DefaultValueOfReferenceTest, IsInitiallyUnset) {
+  EXPECT_FALSE(DefaultValue<int&>::IsSet());
+  EXPECT_FALSE(DefaultValue<UserType&>::IsSet());
+}
+
+// Tests that DefaultValue<T&>::Exists is false initiallly.
+TEST(DefaultValueOfReferenceTest, IsInitiallyNotExisting) {
+  EXPECT_FALSE(DefaultValue<int&>::Exists());
+  EXPECT_FALSE(DefaultValue<UserType&>::Exists());
+}
+
+// Tests that DefaultValue<T&> can be set and then unset.
+TEST(DefaultValueOfReferenceTest, CanBeSetAndUnset) {
+  int n = 1;
+  DefaultValue<const int&>::Set(n);
+  UserType u;
+  DefaultValue<UserType&>::Set(u);
+
+  EXPECT_TRUE(DefaultValue<const int&>::Exists());
+  EXPECT_TRUE(DefaultValue<UserType&>::Exists());
+
+  EXPECT_EQ(&n, &(DefaultValue<const int&>::Get()));
+  EXPECT_EQ(&u, &(DefaultValue<UserType&>::Get()));
+
+  DefaultValue<const int&>::Clear();
+  DefaultValue<UserType&>::Clear();
+
+  EXPECT_FALSE(DefaultValue<const int&>::Exists());
+  EXPECT_FALSE(DefaultValue<UserType&>::Exists());
+
+  EXPECT_FALSE(DefaultValue<const int&>::IsSet());
+  EXPECT_FALSE(DefaultValue<UserType&>::IsSet());
+}
+
+// Tests that DefaultValue<T&>::Get() returns the
+// BuiltInDefaultValue<T&>::Get() when DefaultValue<T&>::IsSet() is
+// false.
+TEST(DefaultValueOfReferenceDeathTest, GetReturnsBuiltInDefaultValueWhenUnset) {
+  EXPECT_FALSE(DefaultValue<int&>::IsSet());
+  EXPECT_FALSE(DefaultValue<UserType&>::IsSet());
+
+  EXPECT_DEATH_IF_SUPPORTED({
+    DefaultValue<int&>::Get();
+  }, "");
+  EXPECT_DEATH_IF_SUPPORTED({
+    DefaultValue<UserType>::Get();
+  }, "");
+}
+
+// Tests that ActionInterface can be implemented by defining the
+// Perform method.
+
+typedef int MyFunction(bool, int);
+
+class MyActionImpl : public ActionInterface<MyFunction> {
+ public:
+  virtual int Perform(const tuple<bool, int>& args) {
+    return get<0>(args) ? get<1>(args) : 0;
+  }
+};
+
+TEST(ActionInterfaceTest, CanBeImplementedByDefiningPerform) {
+  MyActionImpl my_action_impl;
+  (void)my_action_impl;
+}
+
+TEST(ActionInterfaceTest, MakeAction) {
+  Action<MyFunction> action = MakeAction(new MyActionImpl);
+
+  // When exercising the Perform() method of Action<F>, we must pass
+  // it a tuple whose size and type are compatible with F's argument
+  // types.  For example, if F is int(), then Perform() takes a
+  // 0-tuple; if F is void(bool, int), then Perform() takes a
+  // tuple<bool, int>, and so on.
+  EXPECT_EQ(5, action.Perform(make_tuple(true, 5)));
+}
+
+// Tests that Action<F> can be contructed from a pointer to
+// ActionInterface<F>.
+TEST(ActionTest, CanBeConstructedFromActionInterface) {
+  Action<MyFunction> action(new MyActionImpl);
+}
+
+// Tests that Action<F> delegates actual work to ActionInterface<F>.
+TEST(ActionTest, DelegatesWorkToActionInterface) {
+  const Action<MyFunction> action(new MyActionImpl);
+
+  EXPECT_EQ(5, action.Perform(make_tuple(true, 5)));
+  EXPECT_EQ(0, action.Perform(make_tuple(false, 1)));
+}
+
+// Tests that Action<F> can be copied.
+TEST(ActionTest, IsCopyable) {
+  Action<MyFunction> a1(new MyActionImpl);
+  Action<MyFunction> a2(a1);  // Tests the copy constructor.
+
+  // a1 should continue to work after being copied from.
+  EXPECT_EQ(5, a1.Perform(make_tuple(true, 5)));
+  EXPECT_EQ(0, a1.Perform(make_tuple(false, 1)));
+
+  // a2 should work like the action it was copied from.
+  EXPECT_EQ(5, a2.Perform(make_tuple(true, 5)));
+  EXPECT_EQ(0, a2.Perform(make_tuple(false, 1)));
+
+  a2 = a1;  // Tests the assignment operator.
+
+  // a1 should continue to work after being copied from.
+  EXPECT_EQ(5, a1.Perform(make_tuple(true, 5)));
+  EXPECT_EQ(0, a1.Perform(make_tuple(false, 1)));
+
+  // a2 should work like the action it was copied from.
+  EXPECT_EQ(5, a2.Perform(make_tuple(true, 5)));
+  EXPECT_EQ(0, a2.Perform(make_tuple(false, 1)));
+}
+
+// Tests that an Action<From> object can be converted to a
+// compatible Action<To> object.
+
+class IsNotZero : public ActionInterface<bool(int)> {  // NOLINT
+ public:
+  virtual bool Perform(const tuple<int>& arg) {
+    return get<0>(arg) != 0;
+  }
+};
+
+#if !GTEST_OS_SYMBIAN
+// Compiling this test on Nokia's Symbian compiler fails with:
+//  'Result' is not a member of class 'testing::internal::Function<int>'
+//  (point of instantiation: '@unnamed@gmock_actions_test_cc@::
+//      ActionTest_CanBeConvertedToOtherActionType_Test::TestBody()')
+// with no obvious fix.
+TEST(ActionTest, CanBeConvertedToOtherActionType) {
+  const Action<bool(int)> a1(new IsNotZero);  // NOLINT
+  const Action<int(char)> a2 = Action<int(char)>(a1);  // NOLINT
+  EXPECT_EQ(1, a2.Perform(make_tuple('a')));
+  EXPECT_EQ(0, a2.Perform(make_tuple('\0')));
+}
+#endif  // !GTEST_OS_SYMBIAN
+
+// The following two classes are for testing MakePolymorphicAction().
+
+// Implements a polymorphic action that returns the second of the
+// arguments it receives.
+class ReturnSecondArgumentAction {
+ public:
+  // We want to verify that MakePolymorphicAction() can work with a
+  // polymorphic action whose Perform() method template is either
+  // const or not.  This lets us verify the non-const case.
+  template <typename Result, typename ArgumentTuple>
+  Result Perform(const ArgumentTuple& args) { return get<1>(args); }
+};
+
+// Implements a polymorphic action that can be used in a nullary
+// function to return 0.
+class ReturnZeroFromNullaryFunctionAction {
+ public:
+  // For testing that MakePolymorphicAction() works when the
+  // implementation class' Perform() method template takes only one
+  // template parameter.
+  //
+  // We want to verify that MakePolymorphicAction() can work with a
+  // polymorphic action whose Perform() method template is either
+  // const or not.  This lets us verify the const case.
+  template <typename Result>
+  Result Perform(const tuple<>&) const { return 0; }
+};
+
+// These functions verify that MakePolymorphicAction() returns a
+// PolymorphicAction<T> where T is the argument's type.
+
+PolymorphicAction<ReturnSecondArgumentAction> ReturnSecondArgument() {
+  return MakePolymorphicAction(ReturnSecondArgumentAction());
+}
+
+PolymorphicAction<ReturnZeroFromNullaryFunctionAction>
+ReturnZeroFromNullaryFunction() {
+  return MakePolymorphicAction(ReturnZeroFromNullaryFunctionAction());
+}
+
+// Tests that MakePolymorphicAction() turns a polymorphic action
+// implementation class into a polymorphic action.
+TEST(MakePolymorphicActionTest, ConstructsActionFromImpl) {
+  Action<int(bool, int, double)> a1 = ReturnSecondArgument();  // NOLINT
+  EXPECT_EQ(5, a1.Perform(make_tuple(false, 5, 2.0)));
+}
+
+// Tests that MakePolymorphicAction() works when the implementation
+// class' Perform() method template has only one template parameter.
+TEST(MakePolymorphicActionTest, WorksWhenPerformHasOneTemplateParameter) {
+  Action<int()> a1 = ReturnZeroFromNullaryFunction();
+  EXPECT_EQ(0, a1.Perform(make_tuple()));
+
+  Action<void*()> a2 = ReturnZeroFromNullaryFunction();
+  EXPECT_TRUE(a2.Perform(make_tuple()) == NULL);
+}
+
+// Tests that Return() works as an action for void-returning
+// functions.
+TEST(ReturnTest, WorksForVoid) {
+  const Action<void(int)> ret = Return();  // NOLINT
+  return ret.Perform(make_tuple(1));
+}
+
+// Tests that Return(v) returns v.
+TEST(ReturnTest, ReturnsGivenValue) {
+  Action<int()> ret = Return(1);  // NOLINT
+  EXPECT_EQ(1, ret.Perform(make_tuple()));
+
+  ret = Return(-5);
+  EXPECT_EQ(-5, ret.Perform(make_tuple()));
+}
+
+// Tests that Return("string literal") works.
+TEST(ReturnTest, AcceptsStringLiteral) {
+  Action<const char*()> a1 = Return("Hello");
+  EXPECT_STREQ("Hello", a1.Perform(make_tuple()));
+
+  Action<std::string()> a2 = Return("world");
+  EXPECT_EQ("world", a2.Perform(make_tuple()));
+}
+
+// Tests that Return(v) is covaraint.
+
+struct Base {
+  bool operator==(const Base&) { return true; }
+};
+
+struct Derived : public Base {
+  bool operator==(const Derived&) { return true; }
+};
+
+TEST(ReturnTest, IsCovariant) {
+  Base base;
+  Derived derived;
+  Action<Base*()> ret = Return(&base);
+  EXPECT_EQ(&base, ret.Perform(make_tuple()));
+
+  ret = Return(&derived);
+  EXPECT_EQ(&derived, ret.Perform(make_tuple()));
+}
+
+// Tests that the type of the value passed into Return is converted into T
+// when the action is cast to Action<T(...)> rather than when the action is
+// performed. See comments on testing::internal::ReturnAction in
+// gmock-actions.h for more information.
+class FromType {
+ public:
+  explicit FromType(bool* is_converted) : converted_(is_converted) {}
+  bool* converted() const { return converted_; }
+
+ private:
+  bool* const converted_;
+
+  GTEST_DISALLOW_ASSIGN_(FromType);
+};
+
+class ToType {
+ public:
+  // Must allow implicit conversion due to use in ImplicitCast_<T>.
+  ToType(const FromType& x) { *x.converted() = true; }  // NOLINT
+};
+
+TEST(ReturnTest, ConvertsArgumentWhenConverted) {
+  bool converted = false;
+  FromType x(&converted);
+  Action<ToType()> action(Return(x));
+  EXPECT_TRUE(converted) << "Return must convert its argument in its own "
+                         << "conversion operator.";
+  converted = false;
+  action.Perform(tuple<>());
+  EXPECT_FALSE(converted) << "Action must NOT convert its argument "
+                          << "when performed.";
+}
+
+class DestinationType {};
+
+class SourceType {
+ public:
+  // Note: a non-const typecast operator.
+  operator DestinationType() { return DestinationType(); }
+};
+
+TEST(ReturnTest, CanConvertArgumentUsingNonConstTypeCastOperator) {
+  SourceType s;
+  Action<DestinationType()> action(Return(s));
+}
+
+// Tests that ReturnNull() returns NULL in a pointer-returning function.
+TEST(ReturnNullTest, WorksInPointerReturningFunction) {
+  const Action<int*()> a1 = ReturnNull();
+  EXPECT_TRUE(a1.Perform(make_tuple()) == NULL);
+
+  const Action<const char*(bool)> a2 = ReturnNull();  // NOLINT
+  EXPECT_TRUE(a2.Perform(make_tuple(true)) == NULL);
+}
+
+// Tests that ReturnRef(v) works for reference types.
+TEST(ReturnRefTest, WorksForReference) {
+  const int n = 0;
+  const Action<const int&(bool)> ret = ReturnRef(n);  // NOLINT
+
+  EXPECT_EQ(&n, &ret.Perform(make_tuple(true)));
+}
+
+// Tests that ReturnRef(v) is covariant.
+TEST(ReturnRefTest, IsCovariant) {
+  Base base;
+  Derived derived;
+  Action<Base&()> a = ReturnRef(base);
+  EXPECT_EQ(&base, &a.Perform(make_tuple()));
+
+  a = ReturnRef(derived);
+  EXPECT_EQ(&derived, &a.Perform(make_tuple()));
+}
+
+// Tests that ReturnRefOfCopy(v) works for reference types.
+TEST(ReturnRefOfCopyTest, WorksForReference) {
+  int n = 42;
+  const Action<const int&()> ret = ReturnRefOfCopy(n);
+
+  EXPECT_NE(&n, &ret.Perform(make_tuple()));
+  EXPECT_EQ(42, ret.Perform(make_tuple()));
+
+  n = 43;
+  EXPECT_NE(&n, &ret.Perform(make_tuple()));
+  EXPECT_EQ(42, ret.Perform(make_tuple()));
+}
+
+// Tests that ReturnRefOfCopy(v) is covariant.
+TEST(ReturnRefOfCopyTest, IsCovariant) {
+  Base base;
+  Derived derived;
+  Action<Base&()> a = ReturnRefOfCopy(base);
+  EXPECT_NE(&base, &a.Perform(make_tuple()));
+
+  a = ReturnRefOfCopy(derived);
+  EXPECT_NE(&derived, &a.Perform(make_tuple()));
+}
+
+// Tests that DoDefault() does the default action for the mock method.
+
+class MyClass {};
+
+class MockClass {
+ public:
+  MockClass() {}
+
+  MOCK_METHOD1(IntFunc, int(bool flag));  // NOLINT
+  MOCK_METHOD0(Foo, MyClass());
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(MockClass);
+};
+
+// Tests that DoDefault() returns the built-in default value for the
+// return type by default.
+TEST(DoDefaultTest, ReturnsBuiltInDefaultValueByDefault) {
+  MockClass mock;
+  EXPECT_CALL(mock, IntFunc(_))
+      .WillOnce(DoDefault());
+  EXPECT_EQ(0, mock.IntFunc(true));
+}
+
+// Tests that DoDefault() aborts the process when there is no built-in
+// default value for the return type.
+TEST(DoDefaultDeathTest, DiesForUnknowType) {
+  MockClass mock;
+  EXPECT_CALL(mock, Foo())
+      .WillRepeatedly(DoDefault());
+  EXPECT_DEATH_IF_SUPPORTED({
+    mock.Foo();
+  }, "");
+}
+
+// Tests that using DoDefault() inside a composite action leads to a
+// run-time error.
+
+void VoidFunc(bool /* flag */) {}
+
+TEST(DoDefaultDeathTest, DiesIfUsedInCompositeAction) {
+  MockClass mock;
+  EXPECT_CALL(mock, IntFunc(_))
+      .WillRepeatedly(DoAll(Invoke(VoidFunc),
+                            DoDefault()));
+
+  // Ideally we should verify the error message as well.  Sadly,
+  // EXPECT_DEATH() can only capture stderr, while Google Mock's
+  // errors are printed on stdout.  Therefore we have to settle for
+  // not verifying the message.
+  EXPECT_DEATH_IF_SUPPORTED({
+    mock.IntFunc(true);
+  }, "");
+}
+
+// Tests that DoDefault() returns the default value set by
+// DefaultValue<T>::Set() when it's not overriden by an ON_CALL().
+TEST(DoDefaultTest, ReturnsUserSpecifiedPerTypeDefaultValueWhenThereIsOne) {
+  DefaultValue<int>::Set(1);
+  MockClass mock;
+  EXPECT_CALL(mock, IntFunc(_))
+      .WillOnce(DoDefault());
+  EXPECT_EQ(1, mock.IntFunc(false));
+  DefaultValue<int>::Clear();
+}
+
+// Tests that DoDefault() does the action specified by ON_CALL().
+TEST(DoDefaultTest, DoesWhatOnCallSpecifies) {
+  MockClass mock;
+  ON_CALL(mock, IntFunc(_))
+      .WillByDefault(Return(2));
+  EXPECT_CALL(mock, IntFunc(_))
+      .WillOnce(DoDefault());
+  EXPECT_EQ(2, mock.IntFunc(false));
+}
+
+// Tests that using DoDefault() in ON_CALL() leads to a run-time failure.
+TEST(DoDefaultTest, CannotBeUsedInOnCall) {
+  MockClass mock;
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    ON_CALL(mock, IntFunc(_))
+      .WillByDefault(DoDefault());
+  }, "DoDefault() cannot be used in ON_CALL()");
+}
+
+// Tests that SetArgPointee<N>(v) sets the variable pointed to by
+// the N-th (0-based) argument to v.
+TEST(SetArgPointeeTest, SetsTheNthPointee) {
+  typedef void MyFunction(bool, int*, char*);
+  Action<MyFunction> a = SetArgPointee<1>(2);
+
+  int n = 0;
+  char ch = '\0';
+  a.Perform(make_tuple(true, &n, &ch));
+  EXPECT_EQ(2, n);
+  EXPECT_EQ('\0', ch);
+
+  a = SetArgPointee<2>('a');
+  n = 0;
+  ch = '\0';
+  a.Perform(make_tuple(true, &n, &ch));
+  EXPECT_EQ(0, n);
+  EXPECT_EQ('a', ch);
+}
+
+#if !((GTEST_GCC_VER_ && GTEST_GCC_VER_ < 40000) || GTEST_OS_SYMBIAN)
+// Tests that SetArgPointee<N>() accepts a string literal.
+// GCC prior to v4.0 and the Symbian compiler do not support this.
+TEST(SetArgPointeeTest, AcceptsStringLiteral) {
+  typedef void MyFunction(std::string*, const char**);
+  Action<MyFunction> a = SetArgPointee<0>("hi");
+  std::string str;
+  const char* ptr = NULL;
+  a.Perform(make_tuple(&str, &ptr));
+  EXPECT_EQ("hi", str);
+  EXPECT_TRUE(ptr == NULL);
+
+  a = SetArgPointee<1>("world");
+  str = "";
+  a.Perform(make_tuple(&str, &ptr));
+  EXPECT_EQ("", str);
+  EXPECT_STREQ("world", ptr);
+}
+
+TEST(SetArgPointeeTest, AcceptsWideStringLiteral) {
+  typedef void MyFunction(const wchar_t**);
+  Action<MyFunction> a = SetArgPointee<0>(L"world");
+  const wchar_t* ptr = NULL;
+  a.Perform(make_tuple(&ptr));
+  EXPECT_STREQ(L"world", ptr);
+
+# if GTEST_HAS_STD_WSTRING
+
+  typedef void MyStringFunction(std::wstring*);
+  Action<MyStringFunction> a2 = SetArgPointee<0>(L"world");
+  std::wstring str = L"";
+  a2.Perform(make_tuple(&str));
+  EXPECT_EQ(L"world", str);
+
+# endif
+}
+#endif
+
+// Tests that SetArgPointee<N>() accepts a char pointer.
+TEST(SetArgPointeeTest, AcceptsCharPointer) {
+  typedef void MyFunction(bool, std::string*, const char**);
+  const char* const hi = "hi";
+  Action<MyFunction> a = SetArgPointee<1>(hi);
+  std::string str;
+  const char* ptr = NULL;
+  a.Perform(make_tuple(true, &str, &ptr));
+  EXPECT_EQ("hi", str);
+  EXPECT_TRUE(ptr == NULL);
+
+  char world_array[] = "world";
+  char* const world = world_array;
+  a = SetArgPointee<2>(world);
+  str = "";
+  a.Perform(make_tuple(true, &str, &ptr));
+  EXPECT_EQ("", str);
+  EXPECT_EQ(world, ptr);
+}
+
+TEST(SetArgPointeeTest, AcceptsWideCharPointer) {
+  typedef void MyFunction(bool, const wchar_t**);
+  const wchar_t* const hi = L"hi";
+  Action<MyFunction> a = SetArgPointee<1>(hi);
+  const wchar_t* ptr = NULL;
+  a.Perform(make_tuple(true, &ptr));
+  EXPECT_EQ(hi, ptr);
+
+# if GTEST_HAS_STD_WSTRING
+
+  typedef void MyStringFunction(bool, std::wstring*);
+  wchar_t world_array[] = L"world";
+  wchar_t* const world = world_array;
+  Action<MyStringFunction> a2 = SetArgPointee<1>(world);
+  std::wstring str;
+  a2.Perform(make_tuple(true, &str));
+  EXPECT_EQ(world_array, str);
+# endif
+}
+
+#if GTEST_HAS_PROTOBUF_
+
+// Tests that SetArgPointee<N>(proto_buffer) sets the v1 protobuf
+// variable pointed to by the N-th (0-based) argument to proto_buffer.
+TEST(SetArgPointeeTest, SetsTheNthPointeeOfProtoBufferType) {
+  TestMessage* const msg = new TestMessage;
+  msg->set_member("yes");
+  TestMessage orig_msg;
+  orig_msg.CopyFrom(*msg);
+
+  Action<void(bool, TestMessage*)> a = SetArgPointee<1>(*msg);
+  // SetArgPointee<N>(proto_buffer) makes a copy of proto_buffer
+  // s.t. the action works even when the original proto_buffer has
+  // died.  We ensure this behavior by deleting msg before using the
+  // action.
+  delete msg;
+
+  TestMessage dest;
+  EXPECT_FALSE(orig_msg.Equals(dest));
+  a.Perform(make_tuple(true, &dest));
+  EXPECT_TRUE(orig_msg.Equals(dest));
+}
+
+// Tests that SetArgPointee<N>(proto_buffer) sets the
+// ::ProtocolMessage variable pointed to by the N-th (0-based)
+// argument to proto_buffer.
+TEST(SetArgPointeeTest, SetsTheNthPointeeOfProtoBufferBaseType) {
+  TestMessage* const msg = new TestMessage;
+  msg->set_member("yes");
+  TestMessage orig_msg;
+  orig_msg.CopyFrom(*msg);
+
+  Action<void(bool, ::ProtocolMessage*)> a = SetArgPointee<1>(*msg);
+  // SetArgPointee<N>(proto_buffer) makes a copy of proto_buffer
+  // s.t. the action works even when the original proto_buffer has
+  // died.  We ensure this behavior by deleting msg before using the
+  // action.
+  delete msg;
+
+  TestMessage dest;
+  ::ProtocolMessage* const dest_base = &dest;
+  EXPECT_FALSE(orig_msg.Equals(dest));
+  a.Perform(make_tuple(true, dest_base));
+  EXPECT_TRUE(orig_msg.Equals(dest));
+}
+
+// Tests that SetArgPointee<N>(proto2_buffer) sets the v2
+// protobuf variable pointed to by the N-th (0-based) argument to
+// proto2_buffer.
+TEST(SetArgPointeeTest, SetsTheNthPointeeOfProto2BufferType) {
+  using testing::internal::FooMessage;
+  FooMessage* const msg = new FooMessage;
+  msg->set_int_field(2);
+  msg->set_string_field("hi");
+  FooMessage orig_msg;
+  orig_msg.CopyFrom(*msg);
+
+  Action<void(bool, FooMessage*)> a = SetArgPointee<1>(*msg);
+  // SetArgPointee<N>(proto2_buffer) makes a copy of
+  // proto2_buffer s.t. the action works even when the original
+  // proto2_buffer has died.  We ensure this behavior by deleting msg
+  // before using the action.
+  delete msg;
+
+  FooMessage dest;
+  dest.set_int_field(0);
+  a.Perform(make_tuple(true, &dest));
+  EXPECT_EQ(2, dest.int_field());
+  EXPECT_EQ("hi", dest.string_field());
+}
+
+// Tests that SetArgPointee<N>(proto2_buffer) sets the
+// proto2::Message variable pointed to by the N-th (0-based) argument
+// to proto2_buffer.
+TEST(SetArgPointeeTest, SetsTheNthPointeeOfProto2BufferBaseType) {
+  using testing::internal::FooMessage;
+  FooMessage* const msg = new FooMessage;
+  msg->set_int_field(2);
+  msg->set_string_field("hi");
+  FooMessage orig_msg;
+  orig_msg.CopyFrom(*msg);
+
+  Action<void(bool, ::proto2::Message*)> a = SetArgPointee<1>(*msg);
+  // SetArgPointee<N>(proto2_buffer) makes a copy of
+  // proto2_buffer s.t. the action works even when the original
+  // proto2_buffer has died.  We ensure this behavior by deleting msg
+  // before using the action.
+  delete msg;
+
+  FooMessage dest;
+  dest.set_int_field(0);
+  ::proto2::Message* const dest_base = &dest;
+  a.Perform(make_tuple(true, dest_base));
+  EXPECT_EQ(2, dest.int_field());
+  EXPECT_EQ("hi", dest.string_field());
+}
+
+#endif  // GTEST_HAS_PROTOBUF_
+
+// Tests that SetArgumentPointee<N>(v) sets the variable pointed to by
+// the N-th (0-based) argument to v.
+TEST(SetArgumentPointeeTest, SetsTheNthPointee) {
+  typedef void MyFunction(bool, int*, char*);
+  Action<MyFunction> a = SetArgumentPointee<1>(2);
+
+  int n = 0;
+  char ch = '\0';
+  a.Perform(make_tuple(true, &n, &ch));
+  EXPECT_EQ(2, n);
+  EXPECT_EQ('\0', ch);
+
+  a = SetArgumentPointee<2>('a');
+  n = 0;
+  ch = '\0';
+  a.Perform(make_tuple(true, &n, &ch));
+  EXPECT_EQ(0, n);
+  EXPECT_EQ('a', ch);
+}
+
+#if GTEST_HAS_PROTOBUF_
+
+// Tests that SetArgumentPointee<N>(proto_buffer) sets the v1 protobuf
+// variable pointed to by the N-th (0-based) argument to proto_buffer.
+TEST(SetArgumentPointeeTest, SetsTheNthPointeeOfProtoBufferType) {
+  TestMessage* const msg = new TestMessage;
+  msg->set_member("yes");
+  TestMessage orig_msg;
+  orig_msg.CopyFrom(*msg);
+
+  Action<void(bool, TestMessage*)> a = SetArgumentPointee<1>(*msg);
+  // SetArgumentPointee<N>(proto_buffer) makes a copy of proto_buffer
+  // s.t. the action works even when the original proto_buffer has
+  // died.  We ensure this behavior by deleting msg before using the
+  // action.
+  delete msg;
+
+  TestMessage dest;
+  EXPECT_FALSE(orig_msg.Equals(dest));
+  a.Perform(make_tuple(true, &dest));
+  EXPECT_TRUE(orig_msg.Equals(dest));
+}
+
+// Tests that SetArgumentPointee<N>(proto_buffer) sets the
+// ::ProtocolMessage variable pointed to by the N-th (0-based)
+// argument to proto_buffer.
+TEST(SetArgumentPointeeTest, SetsTheNthPointeeOfProtoBufferBaseType) {
+  TestMessage* const msg = new TestMessage;
+  msg->set_member("yes");
+  TestMessage orig_msg;
+  orig_msg.CopyFrom(*msg);
+
+  Action<void(bool, ::ProtocolMessage*)> a = SetArgumentPointee<1>(*msg);
+  // SetArgumentPointee<N>(proto_buffer) makes a copy of proto_buffer
+  // s.t. the action works even when the original proto_buffer has
+  // died.  We ensure this behavior by deleting msg before using the
+  // action.
+  delete msg;
+
+  TestMessage dest;
+  ::ProtocolMessage* const dest_base = &dest;
+  EXPECT_FALSE(orig_msg.Equals(dest));
+  a.Perform(make_tuple(true, dest_base));
+  EXPECT_TRUE(orig_msg.Equals(dest));
+}
+
+// Tests that SetArgumentPointee<N>(proto2_buffer) sets the v2
+// protobuf variable pointed to by the N-th (0-based) argument to
+// proto2_buffer.
+TEST(SetArgumentPointeeTest, SetsTheNthPointeeOfProto2BufferType) {
+  using testing::internal::FooMessage;
+  FooMessage* const msg = new FooMessage;
+  msg->set_int_field(2);
+  msg->set_string_field("hi");
+  FooMessage orig_msg;
+  orig_msg.CopyFrom(*msg);
+
+  Action<void(bool, FooMessage*)> a = SetArgumentPointee<1>(*msg);
+  // SetArgumentPointee<N>(proto2_buffer) makes a copy of
+  // proto2_buffer s.t. the action works even when the original
+  // proto2_buffer has died.  We ensure this behavior by deleting msg
+  // before using the action.
+  delete msg;
+
+  FooMessage dest;
+  dest.set_int_field(0);
+  a.Perform(make_tuple(true, &dest));
+  EXPECT_EQ(2, dest.int_field());
+  EXPECT_EQ("hi", dest.string_field());
+}
+
+// Tests that SetArgumentPointee<N>(proto2_buffer) sets the
+// proto2::Message variable pointed to by the N-th (0-based) argument
+// to proto2_buffer.
+TEST(SetArgumentPointeeTest, SetsTheNthPointeeOfProto2BufferBaseType) {
+  using testing::internal::FooMessage;
+  FooMessage* const msg = new FooMessage;
+  msg->set_int_field(2);
+  msg->set_string_field("hi");
+  FooMessage orig_msg;
+  orig_msg.CopyFrom(*msg);
+
+  Action<void(bool, ::proto2::Message*)> a = SetArgumentPointee<1>(*msg);
+  // SetArgumentPointee<N>(proto2_buffer) makes a copy of
+  // proto2_buffer s.t. the action works even when the original
+  // proto2_buffer has died.  We ensure this behavior by deleting msg
+  // before using the action.
+  delete msg;
+
+  FooMessage dest;
+  dest.set_int_field(0);
+  ::proto2::Message* const dest_base = &dest;
+  a.Perform(make_tuple(true, dest_base));
+  EXPECT_EQ(2, dest.int_field());
+  EXPECT_EQ("hi", dest.string_field());
+}
+
+#endif  // GTEST_HAS_PROTOBUF_
+
+// Sample functions and functors for testing Invoke() and etc.
+int Nullary() { return 1; }
+
+class NullaryFunctor {
+ public:
+  int operator()() { return 2; }
+};
+
+bool g_done = false;
+void VoidNullary() { g_done = true; }
+
+class VoidNullaryFunctor {
+ public:
+  void operator()() { g_done = true; }
+};
+
+bool Unary(int x) { return x < 0; }
+
+const char* Plus1(const char* s) { return s + 1; }
+
+void VoidUnary(int /* n */) { g_done = true; }
+
+bool ByConstRef(const std::string& s) { return s == "Hi"; }
+
+const double g_double = 0;
+bool ReferencesGlobalDouble(const double& x) { return &x == &g_double; }
+
+std::string ByNonConstRef(std::string& s) { return s += "+"; }  // NOLINT
+
+struct UnaryFunctor {
+  int operator()(bool x) { return x ? 1 : -1; }
+};
+
+const char* Binary(const char* input, short n) { return input + n; }  // NOLINT
+
+void VoidBinary(int, char) { g_done = true; }
+
+int Ternary(int x, char y, short z) { return x + y + z; }  // NOLINT
+
+void VoidTernary(int, char, bool) { g_done = true; }
+
+int SumOf4(int a, int b, int c, int d) { return a + b + c + d; }
+
+void VoidFunctionWithFourArguments(char, int, float, double) { g_done = true; }
+
+int SumOf5(int a, int b, int c, int d, int e) { return a + b + c + d + e; }
+
+struct SumOf5Functor {
+  int operator()(int a, int b, int c, int d, int e) {
+    return a + b + c + d + e;
+  }
+};
+
+int SumOf6(int a, int b, int c, int d, int e, int f) {
+  return a + b + c + d + e + f;
+}
+
+struct SumOf6Functor {
+  int operator()(int a, int b, int c, int d, int e, int f) {
+    return a + b + c + d + e + f;
+  }
+};
+
+class Foo {
+ public:
+  Foo() : value_(123) {}
+
+  int Nullary() const { return value_; }
+  short Unary(long x) { return static_cast<short>(value_ + x); }  // NOLINT
+  std::string Binary(const std::string& str, char c) const { return str + c; }
+  int Ternary(int x, bool y, char z) { return value_ + x + y*z; }
+  int SumOf4(int a, int b, int c, int d) const {
+    return a + b + c + d + value_;
+  }
+  int SumOf5(int a, int b, int c, int d, int e) { return a + b + c + d + e; }
+  int SumOf6(int a, int b, int c, int d, int e, int f) {
+    return a + b + c + d + e + f;
+  }
+ private:
+  int value_;
+};
+
+// Tests InvokeWithoutArgs(function).
+TEST(InvokeWithoutArgsTest, Function) {
+  // As an action that takes one argument.
+  Action<int(int)> a = InvokeWithoutArgs(Nullary);  // NOLINT
+  EXPECT_EQ(1, a.Perform(make_tuple(2)));
+
+  // As an action that takes two arguments.
+  Action<int(int, double)> a2 = InvokeWithoutArgs(Nullary);  // NOLINT
+  EXPECT_EQ(1, a2.Perform(make_tuple(2, 3.5)));
+
+  // As an action that returns void.
+  Action<void(int)> a3 = InvokeWithoutArgs(VoidNullary);  // NOLINT
+  g_done = false;
+  a3.Perform(make_tuple(1));
+  EXPECT_TRUE(g_done);
+}
+
+// Tests InvokeWithoutArgs(functor).
+TEST(InvokeWithoutArgsTest, Functor) {
+  // As an action that takes no argument.
+  Action<int()> a = InvokeWithoutArgs(NullaryFunctor());  // NOLINT
+  EXPECT_EQ(2, a.Perform(make_tuple()));
+
+  // As an action that takes three arguments.
+  Action<int(int, double, char)> a2 =  // NOLINT
+      InvokeWithoutArgs(NullaryFunctor());
+  EXPECT_EQ(2, a2.Perform(make_tuple(3, 3.5, 'a')));
+
+  // As an action that returns void.
+  Action<void()> a3 = InvokeWithoutArgs(VoidNullaryFunctor());
+  g_done = false;
+  a3.Perform(make_tuple());
+  EXPECT_TRUE(g_done);
+}
+
+// Tests InvokeWithoutArgs(obj_ptr, method).
+TEST(InvokeWithoutArgsTest, Method) {
+  Foo foo;
+  Action<int(bool, char)> a =  // NOLINT
+      InvokeWithoutArgs(&foo, &Foo::Nullary);
+  EXPECT_EQ(123, a.Perform(make_tuple(true, 'a')));
+}
+
+// Tests using IgnoreResult() on a polymorphic action.
+TEST(IgnoreResultTest, PolymorphicAction) {
+  Action<void(int)> a = IgnoreResult(Return(5));  // NOLINT
+  a.Perform(make_tuple(1));
+}
+
+// Tests using IgnoreResult() on a monomorphic action.
+
+int ReturnOne() {
+  g_done = true;
+  return 1;
+}
+
+TEST(IgnoreResultTest, MonomorphicAction) {
+  g_done = false;
+  Action<void()> a = IgnoreResult(Invoke(ReturnOne));
+  a.Perform(make_tuple());
+  EXPECT_TRUE(g_done);
+}
+
+// Tests using IgnoreResult() on an action that returns a class type.
+
+MyClass ReturnMyClass(double /* x */) {
+  g_done = true;
+  return MyClass();
+}
+
+TEST(IgnoreResultTest, ActionReturningClass) {
+  g_done = false;
+  Action<void(int)> a = IgnoreResult(Invoke(ReturnMyClass));  // NOLINT
+  a.Perform(make_tuple(2));
+  EXPECT_TRUE(g_done);
+}
+
+TEST(AssignTest, Int) {
+  int x = 0;
+  Action<void(int)> a = Assign(&x, 5);
+  a.Perform(make_tuple(0));
+  EXPECT_EQ(5, x);
+}
+
+TEST(AssignTest, String) {
+  ::std::string x;
+  Action<void(void)> a = Assign(&x, "Hello, world");
+  a.Perform(make_tuple());
+  EXPECT_EQ("Hello, world", x);
+}
+
+TEST(AssignTest, CompatibleTypes) {
+  double x = 0;
+  Action<void(int)> a = Assign(&x, 5);
+  a.Perform(make_tuple(0));
+  EXPECT_DOUBLE_EQ(5, x);
+}
+
+#if !GTEST_OS_WINDOWS_MOBILE
+
+class SetErrnoAndReturnTest : public testing::Test {
+ protected:
+  virtual void SetUp() { errno = 0; }
+  virtual void TearDown() { errno = 0; }
+};
+
+TEST_F(SetErrnoAndReturnTest, Int) {
+  Action<int(void)> a = SetErrnoAndReturn(ENOTTY, -5);
+  EXPECT_EQ(-5, a.Perform(make_tuple()));
+  EXPECT_EQ(ENOTTY, errno);
+}
+
+TEST_F(SetErrnoAndReturnTest, Ptr) {
+  int x;
+  Action<int*(void)> a = SetErrnoAndReturn(ENOTTY, &x);
+  EXPECT_EQ(&x, a.Perform(make_tuple()));
+  EXPECT_EQ(ENOTTY, errno);
+}
+
+TEST_F(SetErrnoAndReturnTest, CompatibleTypes) {
+  Action<double()> a = SetErrnoAndReturn(EINVAL, 5);
+  EXPECT_DOUBLE_EQ(5.0, a.Perform(make_tuple()));
+  EXPECT_EQ(EINVAL, errno);
+}
+
+#endif  // !GTEST_OS_WINDOWS_MOBILE
+
+// Tests ByRef().
+
+// Tests that ReferenceWrapper<T> is copyable.
+TEST(ByRefTest, IsCopyable) {
+  const std::string s1 = "Hi";
+  const std::string s2 = "Hello";
+
+  ::testing::internal::ReferenceWrapper<const std::string> ref_wrapper =
+      ByRef(s1);
+  const std::string& r1 = ref_wrapper;
+  EXPECT_EQ(&s1, &r1);
+
+  // Assigns a new value to ref_wrapper.
+  ref_wrapper = ByRef(s2);
+  const std::string& r2 = ref_wrapper;
+  EXPECT_EQ(&s2, &r2);
+
+  ::testing::internal::ReferenceWrapper<const std::string> ref_wrapper1 =
+      ByRef(s1);
+  // Copies ref_wrapper1 to ref_wrapper.
+  ref_wrapper = ref_wrapper1;
+  const std::string& r3 = ref_wrapper;
+  EXPECT_EQ(&s1, &r3);
+}
+
+// Tests using ByRef() on a const value.
+TEST(ByRefTest, ConstValue) {
+  const int n = 0;
+  // int& ref = ByRef(n);  // This shouldn't compile - we have a
+                           // negative compilation test to catch it.
+  const int& const_ref = ByRef(n);
+  EXPECT_EQ(&n, &const_ref);
+}
+
+// Tests using ByRef() on a non-const value.
+TEST(ByRefTest, NonConstValue) {
+  int n = 0;
+
+  // ByRef(n) can be used as either an int&,
+  int& ref = ByRef(n);
+  EXPECT_EQ(&n, &ref);
+
+  // or a const int&.
+  const int& const_ref = ByRef(n);
+  EXPECT_EQ(&n, &const_ref);
+}
+
+// Tests explicitly specifying the type when using ByRef().
+TEST(ByRefTest, ExplicitType) {
+  int n = 0;
+  const int& r1 = ByRef<const int>(n);
+  EXPECT_EQ(&n, &r1);
+
+  // ByRef<char>(n);  // This shouldn't compile - we have a negative
+                      // compilation test to catch it.
+
+  Derived d;
+  Derived& r2 = ByRef<Derived>(d);
+  EXPECT_EQ(&d, &r2);
+
+  const Derived& r3 = ByRef<const Derived>(d);
+  EXPECT_EQ(&d, &r3);
+
+  Base& r4 = ByRef<Base>(d);
+  EXPECT_EQ(&d, &r4);
+
+  const Base& r5 = ByRef<const Base>(d);
+  EXPECT_EQ(&d, &r5);
+
+  // The following shouldn't compile - we have a negative compilation
+  // test for it.
+  //
+  // Base b;
+  // ByRef<Derived>(b);
+}
+
+// Tests that Google Mock prints expression ByRef(x) as a reference to x.
+TEST(ByRefTest, PrintsCorrectly) {
+  int n = 42;
+  ::std::stringstream expected, actual;
+  testing::internal::UniversalPrinter<const int&>::Print(n, &expected);
+  testing::internal::UniversalPrint(ByRef(n), &actual);
+  EXPECT_EQ(expected.str(), actual.str());
+}
+
+}  // Unnamed namespace
diff --git a/google-breakpad/src/testing/test/gmock-cardinalities_test.cc b/google-breakpad/src/testing/test/gmock-cardinalities_test.cc
new file mode 100644
index 0000000..64815e5
--- /dev/null
+++ b/google-breakpad/src/testing/test/gmock-cardinalities_test.cc
@@ -0,0 +1,428 @@
+// Copyright 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Google Mock - a framework for writing C++ mock classes.
+//
+// This file tests the built-in cardinalities.
+
+#include "gmock/gmock.h"
+#include "gtest/gtest.h"
+#include "gtest/gtest-spi.h"
+
+namespace {
+
+using std::stringstream;
+using testing::AnyNumber;
+using testing::AtLeast;
+using testing::AtMost;
+using testing::Between;
+using testing::Cardinality;
+using testing::CardinalityInterface;
+using testing::Exactly;
+using testing::IsSubstring;
+using testing::MakeCardinality;
+
+class MockFoo {
+ public:
+  MockFoo() {}
+  MOCK_METHOD0(Bar, int());  // NOLINT
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(MockFoo);
+};
+
+// Tests that Cardinality objects can be default constructed.
+TEST(CardinalityTest, IsDefaultConstructable) {
+  Cardinality c;
+}
+
+// Tests that Cardinality objects are copyable.
+TEST(CardinalityTest, IsCopyable) {
+  // Tests the copy constructor.
+  Cardinality c = Exactly(1);
+  EXPECT_FALSE(c.IsSatisfiedByCallCount(0));
+  EXPECT_TRUE(c.IsSatisfiedByCallCount(1));
+  EXPECT_TRUE(c.IsSaturatedByCallCount(1));
+
+  // Tests the assignment operator.
+  c = Exactly(2);
+  EXPECT_FALSE(c.IsSatisfiedByCallCount(1));
+  EXPECT_TRUE(c.IsSatisfiedByCallCount(2));
+  EXPECT_TRUE(c.IsSaturatedByCallCount(2));
+}
+
+TEST(CardinalityTest, IsOverSaturatedByCallCountWorks) {
+  const Cardinality c = AtMost(5);
+  EXPECT_FALSE(c.IsOverSaturatedByCallCount(4));
+  EXPECT_FALSE(c.IsOverSaturatedByCallCount(5));
+  EXPECT_TRUE(c.IsOverSaturatedByCallCount(6));
+}
+
+// Tests that Cardinality::DescribeActualCallCountTo() creates the
+// correct description.
+TEST(CardinalityTest, CanDescribeActualCallCount) {
+  stringstream ss0;
+  Cardinality::DescribeActualCallCountTo(0, &ss0);
+  EXPECT_EQ("never called", ss0.str());
+
+  stringstream ss1;
+  Cardinality::DescribeActualCallCountTo(1, &ss1);
+  EXPECT_EQ("called once", ss1.str());
+
+  stringstream ss2;
+  Cardinality::DescribeActualCallCountTo(2, &ss2);
+  EXPECT_EQ("called twice", ss2.str());
+
+  stringstream ss3;
+  Cardinality::DescribeActualCallCountTo(3, &ss3);
+  EXPECT_EQ("called 3 times", ss3.str());
+}
+
+// Tests AnyNumber()
+TEST(AnyNumber, Works) {
+  const Cardinality c = AnyNumber();
+  EXPECT_TRUE(c.IsSatisfiedByCallCount(0));
+  EXPECT_FALSE(c.IsSaturatedByCallCount(0));
+
+  EXPECT_TRUE(c.IsSatisfiedByCallCount(1));
+  EXPECT_FALSE(c.IsSaturatedByCallCount(1));
+
+  EXPECT_TRUE(c.IsSatisfiedByCallCount(9));
+  EXPECT_FALSE(c.IsSaturatedByCallCount(9));
+
+  stringstream ss;
+  c.DescribeTo(&ss);
+  EXPECT_PRED_FORMAT2(IsSubstring, "called any number of times",
+                      ss.str());
+}
+
+TEST(AnyNumberTest, HasCorrectBounds) {
+  const Cardinality c = AnyNumber();
+  EXPECT_EQ(0, c.ConservativeLowerBound());
+  EXPECT_EQ(INT_MAX, c.ConservativeUpperBound());
+}
+
+// Tests AtLeast(n).
+
+TEST(AtLeastTest, OnNegativeNumber) {
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    AtLeast(-1);
+  }, "The invocation lower bound must be >= 0");
+}
+
+TEST(AtLeastTest, OnZero) {
+  const Cardinality c = AtLeast(0);
+  EXPECT_TRUE(c.IsSatisfiedByCallCount(0));
+  EXPECT_FALSE(c.IsSaturatedByCallCount(0));
+
+  EXPECT_TRUE(c.IsSatisfiedByCallCount(1));
+  EXPECT_FALSE(c.IsSaturatedByCallCount(1));
+
+  stringstream ss;
+  c.DescribeTo(&ss);
+  EXPECT_PRED_FORMAT2(IsSubstring, "any number of times",
+                      ss.str());
+}
+
+TEST(AtLeastTest, OnPositiveNumber) {
+  const Cardinality c = AtLeast(2);
+  EXPECT_FALSE(c.IsSatisfiedByCallCount(0));
+  EXPECT_FALSE(c.IsSaturatedByCallCount(0));
+
+  EXPECT_FALSE(c.IsSatisfiedByCallCount(1));
+  EXPECT_FALSE(c.IsSaturatedByCallCount(1));
+
+  EXPECT_TRUE(c.IsSatisfiedByCallCount(2));
+  EXPECT_FALSE(c.IsSaturatedByCallCount(2));
+
+  stringstream ss1;
+  AtLeast(1).DescribeTo(&ss1);
+  EXPECT_PRED_FORMAT2(IsSubstring, "at least once",
+                      ss1.str());
+
+  stringstream ss2;
+  c.DescribeTo(&ss2);
+  EXPECT_PRED_FORMAT2(IsSubstring, "at least twice",
+                      ss2.str());
+
+  stringstream ss3;
+  AtLeast(3).DescribeTo(&ss3);
+  EXPECT_PRED_FORMAT2(IsSubstring, "at least 3 times",
+                      ss3.str());
+}
+
+TEST(AtLeastTest, HasCorrectBounds) {
+  const Cardinality c = AtLeast(2);
+  EXPECT_EQ(2, c.ConservativeLowerBound());
+  EXPECT_EQ(INT_MAX, c.ConservativeUpperBound());
+}
+
+// Tests AtMost(n).
+
+TEST(AtMostTest, OnNegativeNumber) {
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    AtMost(-1);
+  }, "The invocation upper bound must be >= 0");
+}
+
+TEST(AtMostTest, OnZero) {
+  const Cardinality c = AtMost(0);
+  EXPECT_TRUE(c.IsSatisfiedByCallCount(0));
+  EXPECT_TRUE(c.IsSaturatedByCallCount(0));
+
+  EXPECT_FALSE(c.IsSatisfiedByCallCount(1));
+  EXPECT_TRUE(c.IsSaturatedByCallCount(1));
+
+  stringstream ss;
+  c.DescribeTo(&ss);
+  EXPECT_PRED_FORMAT2(IsSubstring, "never called",
+                      ss.str());
+}
+
+TEST(AtMostTest, OnPositiveNumber) {
+  const Cardinality c = AtMost(2);
+  EXPECT_TRUE(c.IsSatisfiedByCallCount(0));
+  EXPECT_FALSE(c.IsSaturatedByCallCount(0));
+
+  EXPECT_TRUE(c.IsSatisfiedByCallCount(1));
+  EXPECT_FALSE(c.IsSaturatedByCallCount(1));
+
+  EXPECT_TRUE(c.IsSatisfiedByCallCount(2));
+  EXPECT_TRUE(c.IsSaturatedByCallCount(2));
+
+  stringstream ss1;
+  AtMost(1).DescribeTo(&ss1);
+  EXPECT_PRED_FORMAT2(IsSubstring, "called at most once",
+                      ss1.str());
+
+  stringstream ss2;
+  c.DescribeTo(&ss2);
+  EXPECT_PRED_FORMAT2(IsSubstring, "called at most twice",
+                      ss2.str());
+
+  stringstream ss3;
+  AtMost(3).DescribeTo(&ss3);
+  EXPECT_PRED_FORMAT2(IsSubstring, "called at most 3 times",
+                      ss3.str());
+}
+
+TEST(AtMostTest, HasCorrectBounds) {
+  const Cardinality c = AtMost(2);
+  EXPECT_EQ(0, c.ConservativeLowerBound());
+  EXPECT_EQ(2, c.ConservativeUpperBound());
+}
+
+// Tests Between(m, n).
+
+TEST(BetweenTest, OnNegativeStart) {
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    Between(-1, 2);
+  }, "The invocation lower bound must be >= 0, but is actually -1");
+}
+
+TEST(BetweenTest, OnNegativeEnd) {
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    Between(1, -2);
+  }, "The invocation upper bound must be >= 0, but is actually -2");
+}
+
+TEST(BetweenTest, OnStartBiggerThanEnd) {
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    Between(2, 1);
+  }, "The invocation upper bound (1) must be >= "
+     "the invocation lower bound (2)");
+}
+
+TEST(BetweenTest, OnZeroStartAndZeroEnd) {
+  const Cardinality c = Between(0, 0);
+
+  EXPECT_TRUE(c.IsSatisfiedByCallCount(0));
+  EXPECT_TRUE(c.IsSaturatedByCallCount(0));
+
+  EXPECT_FALSE(c.IsSatisfiedByCallCount(1));
+  EXPECT_TRUE(c.IsSaturatedByCallCount(1));
+
+  stringstream ss;
+  c.DescribeTo(&ss);
+  EXPECT_PRED_FORMAT2(IsSubstring, "never called",
+                      ss.str());
+}
+
+TEST(BetweenTest, OnZeroStartAndNonZeroEnd) {
+  const Cardinality c = Between(0, 2);
+
+  EXPECT_TRUE(c.IsSatisfiedByCallCount(0));
+  EXPECT_FALSE(c.IsSaturatedByCallCount(0));
+
+  EXPECT_TRUE(c.IsSatisfiedByCallCount(2));
+  EXPECT_TRUE(c.IsSaturatedByCallCount(2));
+
+  EXPECT_FALSE(c.IsSatisfiedByCallCount(4));
+  EXPECT_TRUE(c.IsSaturatedByCallCount(4));
+
+  stringstream ss;
+  c.DescribeTo(&ss);
+  EXPECT_PRED_FORMAT2(IsSubstring, "called at most twice",
+                      ss.str());
+}
+
+TEST(BetweenTest, OnSameStartAndEnd) {
+  const Cardinality c = Between(3, 3);
+
+  EXPECT_FALSE(c.IsSatisfiedByCallCount(2));
+  EXPECT_FALSE(c.IsSaturatedByCallCount(2));
+
+  EXPECT_TRUE(c.IsSatisfiedByCallCount(3));
+  EXPECT_TRUE(c.IsSaturatedByCallCount(3));
+
+  EXPECT_FALSE(c.IsSatisfiedByCallCount(4));
+  EXPECT_TRUE(c.IsSaturatedByCallCount(4));
+
+  stringstream ss;
+  c.DescribeTo(&ss);
+  EXPECT_PRED_FORMAT2(IsSubstring, "called 3 times",
+                      ss.str());
+}
+
+TEST(BetweenTest, OnDifferentStartAndEnd) {
+  const Cardinality c = Between(3, 5);
+
+  EXPECT_FALSE(c.IsSatisfiedByCallCount(2));
+  EXPECT_FALSE(c.IsSaturatedByCallCount(2));
+
+  EXPECT_TRUE(c.IsSatisfiedByCallCount(3));
+  EXPECT_FALSE(c.IsSaturatedByCallCount(3));
+
+  EXPECT_TRUE(c.IsSatisfiedByCallCount(5));
+  EXPECT_TRUE(c.IsSaturatedByCallCount(5));
+
+  EXPECT_FALSE(c.IsSatisfiedByCallCount(6));
+  EXPECT_TRUE(c.IsSaturatedByCallCount(6));
+
+  stringstream ss;
+  c.DescribeTo(&ss);
+  EXPECT_PRED_FORMAT2(IsSubstring, "called between 3 and 5 times",
+                      ss.str());
+}
+
+TEST(BetweenTest, HasCorrectBounds) {
+  const Cardinality c = Between(3, 5);
+  EXPECT_EQ(3, c.ConservativeLowerBound());
+  EXPECT_EQ(5, c.ConservativeUpperBound());
+}
+
+// Tests Exactly(n).
+
+TEST(ExactlyTest, OnNegativeNumber) {
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    Exactly(-1);
+  }, "The invocation lower bound must be >= 0");
+}
+
+TEST(ExactlyTest, OnZero) {
+  const Cardinality c = Exactly(0);
+  EXPECT_TRUE(c.IsSatisfiedByCallCount(0));
+  EXPECT_TRUE(c.IsSaturatedByCallCount(0));
+
+  EXPECT_FALSE(c.IsSatisfiedByCallCount(1));
+  EXPECT_TRUE(c.IsSaturatedByCallCount(1));
+
+  stringstream ss;
+  c.DescribeTo(&ss);
+  EXPECT_PRED_FORMAT2(IsSubstring, "never called",
+                      ss.str());
+}
+
+TEST(ExactlyTest, OnPositiveNumber) {
+  const Cardinality c = Exactly(2);
+  EXPECT_FALSE(c.IsSatisfiedByCallCount(0));
+  EXPECT_FALSE(c.IsSaturatedByCallCount(0));
+
+  EXPECT_TRUE(c.IsSatisfiedByCallCount(2));
+  EXPECT_TRUE(c.IsSaturatedByCallCount(2));
+
+  stringstream ss1;
+  Exactly(1).DescribeTo(&ss1);
+  EXPECT_PRED_FORMAT2(IsSubstring, "called once",
+                      ss1.str());
+
+  stringstream ss2;
+  c.DescribeTo(&ss2);
+  EXPECT_PRED_FORMAT2(IsSubstring, "called twice",
+                      ss2.str());
+
+  stringstream ss3;
+  Exactly(3).DescribeTo(&ss3);
+  EXPECT_PRED_FORMAT2(IsSubstring, "called 3 times",
+                      ss3.str());
+}
+
+TEST(ExactlyTest, HasCorrectBounds) {
+  const Cardinality c = Exactly(3);
+  EXPECT_EQ(3, c.ConservativeLowerBound());
+  EXPECT_EQ(3, c.ConservativeUpperBound());
+}
+
+// Tests that a user can make his own cardinality by implementing
+// CardinalityInterface and calling MakeCardinality().
+
+class EvenCardinality : public CardinalityInterface {
+ public:
+  // Returns true iff call_count calls will satisfy this cardinality.
+  virtual bool IsSatisfiedByCallCount(int call_count) const {
+    return (call_count % 2 == 0);
+  }
+
+  // Returns true iff call_count calls will saturate this cardinality.
+  virtual bool IsSaturatedByCallCount(int /* call_count */) const {
+    return false;
+  }
+
+  // Describes self to an ostream.
+  virtual void DescribeTo(::std::ostream* ss) const {
+    *ss << "called even number of times";
+  }
+};
+
+TEST(MakeCardinalityTest, ConstructsCardinalityFromInterface) {
+  const Cardinality c = MakeCardinality(new EvenCardinality);
+
+  EXPECT_TRUE(c.IsSatisfiedByCallCount(2));
+  EXPECT_FALSE(c.IsSatisfiedByCallCount(3));
+
+  EXPECT_FALSE(c.IsSaturatedByCallCount(10000));
+
+  stringstream ss;
+  c.DescribeTo(&ss);
+  EXPECT_EQ("called even number of times", ss.str());
+}
+
+}  // Unnamed namespace
diff --git a/google-breakpad/src/testing/test/gmock-generated-actions_test.cc b/google-breakpad/src/testing/test/gmock-generated-actions_test.cc
new file mode 100644
index 0000000..436f1a2
--- /dev/null
+++ b/google-breakpad/src/testing/test/gmock-generated-actions_test.cc
@@ -0,0 +1,1212 @@
+// Copyright 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Google Mock - a framework for writing C++ mock classes.
+//
+// This file tests the built-in actions generated by a script.
+
+#include "gmock/gmock-generated-actions.h"
+
+#include <functional>
+#include <sstream>
+#include <string>
+#include "gmock/gmock.h"
+#include "gtest/gtest.h"
+
+namespace testing {
+namespace gmock_generated_actions_test {
+
+using ::std::plus;
+using ::std::string;
+using ::std::tr1::get;
+using ::std::tr1::make_tuple;
+using ::std::tr1::tuple;
+using ::std::tr1::tuple_element;
+using testing::_;
+using testing::Action;
+using testing::ActionInterface;
+using testing::ByRef;
+using testing::DoAll;
+using testing::Invoke;
+using testing::Return;
+using testing::ReturnNew;
+using testing::SetArgPointee;
+using testing::StaticAssertTypeEq;
+using testing::Unused;
+using testing::WithArgs;
+
+// For suppressing compiler warnings on conversion possibly losing precision.
+inline short Short(short n) { return n; }  // NOLINT
+inline char Char(char ch) { return ch; }
+
+// Sample functions and functors for testing various actions.
+int Nullary() { return 1; }
+
+class NullaryFunctor {
+ public:
+  int operator()() { return 2; }
+};
+
+bool g_done = false;
+
+bool Unary(int x) { return x < 0; }
+
+const char* Plus1(const char* s) { return s + 1; }
+
+bool ByConstRef(const string& s) { return s == "Hi"; }
+
+const double g_double = 0;
+bool ReferencesGlobalDouble(const double& x) { return &x == &g_double; }
+
+string ByNonConstRef(string& s) { return s += "+"; }  // NOLINT
+
+struct UnaryFunctor {
+  int operator()(bool x) { return x ? 1 : -1; }
+};
+
+const char* Binary(const char* input, short n) { return input + n; }  // NOLINT
+
+void VoidBinary(int, char) { g_done = true; }
+
+int Ternary(int x, char y, short z) { return x + y + z; }  // NOLINT
+
+void VoidTernary(int, char, bool) { g_done = true; }
+
+int SumOf4(int a, int b, int c, int d) { return a + b + c + d; }
+
+string Concat4(const char* s1, const char* s2, const char* s3,
+               const char* s4) {
+  return string(s1) + s2 + s3 + s4;
+}
+
+int SumOf5(int a, int b, int c, int d, int e) { return a + b + c + d + e; }
+
+struct SumOf5Functor {
+  int operator()(int a, int b, int c, int d, int e) {
+    return a + b + c + d + e;
+  }
+};
+
+string Concat5(const char* s1, const char* s2, const char* s3,
+               const char* s4, const char* s5) {
+  return string(s1) + s2 + s3 + s4 + s5;
+}
+
+int SumOf6(int a, int b, int c, int d, int e, int f) {
+  return a + b + c + d + e + f;
+}
+
+struct SumOf6Functor {
+  int operator()(int a, int b, int c, int d, int e, int f) {
+    return a + b + c + d + e + f;
+  }
+};
+
+string Concat6(const char* s1, const char* s2, const char* s3,
+               const char* s4, const char* s5, const char* s6) {
+  return string(s1) + s2 + s3 + s4 + s5 + s6;
+}
+
+string Concat7(const char* s1, const char* s2, const char* s3,
+               const char* s4, const char* s5, const char* s6,
+               const char* s7) {
+  return string(s1) + s2 + s3 + s4 + s5 + s6 + s7;
+}
+
+string Concat8(const char* s1, const char* s2, const char* s3,
+               const char* s4, const char* s5, const char* s6,
+               const char* s7, const char* s8) {
+  return string(s1) + s2 + s3 + s4 + s5 + s6 + s7 + s8;
+}
+
+string Concat9(const char* s1, const char* s2, const char* s3,
+               const char* s4, const char* s5, const char* s6,
+               const char* s7, const char* s8, const char* s9) {
+  return string(s1) + s2 + s3 + s4 + s5 + s6 + s7 + s8 + s9;
+}
+
+string Concat10(const char* s1, const char* s2, const char* s3,
+                const char* s4, const char* s5, const char* s6,
+                const char* s7, const char* s8, const char* s9,
+                const char* s10) {
+  return string(s1) + s2 + s3 + s4 + s5 + s6 + s7 + s8 + s9 + s10;
+}
+
+// A helper that turns the type of a C-string literal from const
+// char[N] to const char*.
+inline const char* CharPtr(const char* s) { return s; }
+
+// Tests InvokeArgument<N>(...).
+
+// Tests using InvokeArgument with a nullary function.
+TEST(InvokeArgumentTest, Function0) {
+  Action<int(int, int(*)())> a = InvokeArgument<1>();  // NOLINT
+  EXPECT_EQ(1, a.Perform(make_tuple(2, &Nullary)));
+}
+
+// Tests using InvokeArgument with a unary function.
+TEST(InvokeArgumentTest, Functor1) {
+  Action<int(UnaryFunctor)> a = InvokeArgument<0>(true);  // NOLINT
+  EXPECT_EQ(1, a.Perform(make_tuple(UnaryFunctor())));
+}
+
+// Tests using InvokeArgument with a 5-ary function.
+TEST(InvokeArgumentTest, Function5) {
+  Action<int(int(*)(int, int, int, int, int))> a =  // NOLINT
+      InvokeArgument<0>(10000, 2000, 300, 40, 5);
+  EXPECT_EQ(12345, a.Perform(make_tuple(&SumOf5)));
+}
+
+// Tests using InvokeArgument with a 5-ary functor.
+TEST(InvokeArgumentTest, Functor5) {
+  Action<int(SumOf5Functor)> a =  // NOLINT
+      InvokeArgument<0>(10000, 2000, 300, 40, 5);
+  EXPECT_EQ(12345, a.Perform(make_tuple(SumOf5Functor())));
+}
+
+// Tests using InvokeArgument with a 6-ary function.
+TEST(InvokeArgumentTest, Function6) {
+  Action<int(int(*)(int, int, int, int, int, int))> a =  // NOLINT
+      InvokeArgument<0>(100000, 20000, 3000, 400, 50, 6);
+  EXPECT_EQ(123456, a.Perform(make_tuple(&SumOf6)));
+}
+
+// Tests using InvokeArgument with a 6-ary functor.
+TEST(InvokeArgumentTest, Functor6) {
+  Action<int(SumOf6Functor)> a =  // NOLINT
+      InvokeArgument<0>(100000, 20000, 3000, 400, 50, 6);
+  EXPECT_EQ(123456, a.Perform(make_tuple(SumOf6Functor())));
+}
+
+// Tests using InvokeArgument with a 7-ary function.
+TEST(InvokeArgumentTest, Function7) {
+  Action<string(string(*)(const char*, const char*, const char*,
+                          const char*, const char*, const char*,
+                          const char*))> a =
+      InvokeArgument<0>("1", "2", "3", "4", "5", "6", "7");
+  EXPECT_EQ("1234567", a.Perform(make_tuple(&Concat7)));
+}
+
+// Tests using InvokeArgument with a 8-ary function.
+TEST(InvokeArgumentTest, Function8) {
+  Action<string(string(*)(const char*, const char*, const char*,
+                          const char*, const char*, const char*,
+                          const char*, const char*))> a =
+      InvokeArgument<0>("1", "2", "3", "4", "5", "6", "7", "8");
+  EXPECT_EQ("12345678", a.Perform(make_tuple(&Concat8)));
+}
+
+// Tests using InvokeArgument with a 9-ary function.
+TEST(InvokeArgumentTest, Function9) {
+  Action<string(string(*)(const char*, const char*, const char*,
+                          const char*, const char*, const char*,
+                          const char*, const char*, const char*))> a =
+      InvokeArgument<0>("1", "2", "3", "4", "5", "6", "7", "8", "9");
+  EXPECT_EQ("123456789", a.Perform(make_tuple(&Concat9)));
+}
+
+// Tests using InvokeArgument with a 10-ary function.
+TEST(InvokeArgumentTest, Function10) {
+  Action<string(string(*)(const char*, const char*, const char*,
+                          const char*, const char*, const char*,
+                          const char*, const char*, const char*,
+                          const char*))> a =
+      InvokeArgument<0>("1", "2", "3", "4", "5", "6", "7", "8", "9", "0");
+  EXPECT_EQ("1234567890", a.Perform(make_tuple(&Concat10)));
+}
+
+// Tests using InvokeArgument with a function that takes a pointer argument.
+TEST(InvokeArgumentTest, ByPointerFunction) {
+  Action<const char*(const char*(*)(const char* input, short n))> a =  // NOLINT
+      InvokeArgument<0>(static_cast<const char*>("Hi"), Short(1));
+  EXPECT_STREQ("i", a.Perform(make_tuple(&Binary)));
+}
+
+// Tests using InvokeArgument with a function that takes a const char*
+// by passing it a C-string literal.
+TEST(InvokeArgumentTest, FunctionWithCStringLiteral) {
+  Action<const char*(const char*(*)(const char* input, short n))> a =  // NOLINT
+      InvokeArgument<0>("Hi", Short(1));
+  EXPECT_STREQ("i", a.Perform(make_tuple(&Binary)));
+}
+
+// Tests using InvokeArgument with a function that takes a const reference.
+TEST(InvokeArgumentTest, ByConstReferenceFunction) {
+  Action<bool(bool(*function)(const string& s))> a =  // NOLINT
+      InvokeArgument<0>(string("Hi"));
+  // When action 'a' is constructed, it makes a copy of the temporary
+  // string object passed to it, so it's OK to use 'a' later, when the
+  // temporary object has already died.
+  EXPECT_TRUE(a.Perform(make_tuple(&ByConstRef)));
+}
+
+// Tests using InvokeArgument with ByRef() and a function that takes a
+// const reference.
+TEST(InvokeArgumentTest, ByExplicitConstReferenceFunction) {
+  Action<bool(bool(*)(const double& x))> a =  // NOLINT
+      InvokeArgument<0>(ByRef(g_double));
+  // The above line calls ByRef() on a const value.
+  EXPECT_TRUE(a.Perform(make_tuple(&ReferencesGlobalDouble)));
+
+  double x = 0;
+  a = InvokeArgument<0>(ByRef(x));  // This calls ByRef() on a non-const.
+  EXPECT_FALSE(a.Perform(make_tuple(&ReferencesGlobalDouble)));
+}
+
+// Tests using WithArgs and with an action that takes 1 argument.
+TEST(WithArgsTest, OneArg) {
+  Action<bool(double x, int n)> a = WithArgs<1>(Invoke(Unary));  // NOLINT
+  EXPECT_TRUE(a.Perform(make_tuple(1.5, -1)));
+  EXPECT_FALSE(a.Perform(make_tuple(1.5, 1)));
+}
+
+// Tests using WithArgs with an action that takes 2 arguments.
+TEST(WithArgsTest, TwoArgs) {
+  Action<const char*(const char* s, double x, short n)> a =
+      WithArgs<0, 2>(Invoke(Binary));
+  const char s[] = "Hello";
+  EXPECT_EQ(s + 2, a.Perform(make_tuple(CharPtr(s), 0.5, Short(2))));
+}
+
+// Tests using WithArgs with an action that takes 3 arguments.
+TEST(WithArgsTest, ThreeArgs) {
+  Action<int(int, double, char, short)> a =  // NOLINT
+      WithArgs<0, 2, 3>(Invoke(Ternary));
+  EXPECT_EQ(123, a.Perform(make_tuple(100, 6.5, Char(20), Short(3))));
+}
+
+// Tests using WithArgs with an action that takes 4 arguments.
+TEST(WithArgsTest, FourArgs) {
+  Action<string(const char*, const char*, double, const char*, const char*)> a =
+      WithArgs<4, 3, 1, 0>(Invoke(Concat4));
+  EXPECT_EQ("4310", a.Perform(make_tuple(CharPtr("0"), CharPtr("1"), 2.5,
+                                         CharPtr("3"), CharPtr("4"))));
+}
+
+// Tests using WithArgs with an action that takes 5 arguments.
+TEST(WithArgsTest, FiveArgs) {
+  Action<string(const char*, const char*, const char*,
+                const char*, const char*)> a =
+      WithArgs<4, 3, 2, 1, 0>(Invoke(Concat5));
+  EXPECT_EQ("43210",
+            a.Perform(make_tuple(CharPtr("0"), CharPtr("1"), CharPtr("2"),
+                                 CharPtr("3"), CharPtr("4"))));
+}
+
+// Tests using WithArgs with an action that takes 6 arguments.
+TEST(WithArgsTest, SixArgs) {
+  Action<string(const char*, const char*, const char*)> a =
+      WithArgs<0, 1, 2, 2, 1, 0>(Invoke(Concat6));
+  EXPECT_EQ("012210",
+            a.Perform(make_tuple(CharPtr("0"), CharPtr("1"), CharPtr("2"))));
+}
+
+// Tests using WithArgs with an action that takes 7 arguments.
+TEST(WithArgsTest, SevenArgs) {
+  Action<string(const char*, const char*, const char*, const char*)> a =
+      WithArgs<0, 1, 2, 3, 2, 1, 0>(Invoke(Concat7));
+  EXPECT_EQ("0123210",
+            a.Perform(make_tuple(CharPtr("0"), CharPtr("1"), CharPtr("2"),
+                                 CharPtr("3"))));
+}
+
+// Tests using WithArgs with an action that takes 8 arguments.
+TEST(WithArgsTest, EightArgs) {
+  Action<string(const char*, const char*, const char*, const char*)> a =
+      WithArgs<0, 1, 2, 3, 0, 1, 2, 3>(Invoke(Concat8));
+  EXPECT_EQ("01230123",
+            a.Perform(make_tuple(CharPtr("0"), CharPtr("1"), CharPtr("2"),
+                                 CharPtr("3"))));
+}
+
+// Tests using WithArgs with an action that takes 9 arguments.
+TEST(WithArgsTest, NineArgs) {
+  Action<string(const char*, const char*, const char*, const char*)> a =
+      WithArgs<0, 1, 2, 3, 1, 2, 3, 2, 3>(Invoke(Concat9));
+  EXPECT_EQ("012312323",
+            a.Perform(make_tuple(CharPtr("0"), CharPtr("1"), CharPtr("2"),
+                                 CharPtr("3"))));
+}
+
+// Tests using WithArgs with an action that takes 10 arguments.
+TEST(WithArgsTest, TenArgs) {
+  Action<string(const char*, const char*, const char*, const char*)> a =
+      WithArgs<0, 1, 2, 3, 2, 1, 0, 1, 2, 3>(Invoke(Concat10));
+  EXPECT_EQ("0123210123",
+            a.Perform(make_tuple(CharPtr("0"), CharPtr("1"), CharPtr("2"),
+                                 CharPtr("3"))));
+}
+
+// Tests using WithArgs with an action that is not Invoke().
+class SubstractAction : public ActionInterface<int(int, int)> {  // NOLINT
+ public:
+  virtual int Perform(const tuple<int, int>& args) {
+    return get<0>(args) - get<1>(args);
+  }
+};
+
+TEST(WithArgsTest, NonInvokeAction) {
+  Action<int(const string&, int, int)> a =  // NOLINT
+      WithArgs<2, 1>(MakeAction(new SubstractAction));
+  EXPECT_EQ(8, a.Perform(make_tuple(CharPtr("hi"), 2, 10)));
+}
+
+// Tests using WithArgs to pass all original arguments in the original order.
+TEST(WithArgsTest, Identity) {
+  Action<int(int x, char y, short z)> a =  // NOLINT
+      WithArgs<0, 1, 2>(Invoke(Ternary));
+  EXPECT_EQ(123, a.Perform(make_tuple(100, Char(20), Short(3))));
+}
+
+// Tests using WithArgs with repeated arguments.
+TEST(WithArgsTest, RepeatedArguments) {
+  Action<int(bool, int m, int n)> a =  // NOLINT
+      WithArgs<1, 1, 1, 1>(Invoke(SumOf4));
+  EXPECT_EQ(4, a.Perform(make_tuple(false, 1, 10)));
+}
+
+// Tests using WithArgs with reversed argument order.
+TEST(WithArgsTest, ReversedArgumentOrder) {
+  Action<const char*(short n, const char* input)> a =  // NOLINT
+      WithArgs<1, 0>(Invoke(Binary));
+  const char s[] = "Hello";
+  EXPECT_EQ(s + 2, a.Perform(make_tuple(Short(2), CharPtr(s))));
+}
+
+// Tests using WithArgs with compatible, but not identical, argument types.
+TEST(WithArgsTest, ArgsOfCompatibleTypes) {
+  Action<long(short x, char y, double z, char c)> a =  // NOLINT
+      WithArgs<0, 1, 3>(Invoke(Ternary));
+  EXPECT_EQ(123, a.Perform(make_tuple(Short(100), Char(20), 5.6, Char(3))));
+}
+
+// Tests using WithArgs with an action that returns void.
+TEST(WithArgsTest, VoidAction) {
+  Action<void(double x, char c, int n)> a = WithArgs<2, 1>(Invoke(VoidBinary));
+  g_done = false;
+  a.Perform(make_tuple(1.5, 'a', 3));
+  EXPECT_TRUE(g_done);
+}
+
+// Tests DoAll(a1, a2).
+TEST(DoAllTest, TwoActions) {
+  int n = 0;
+  Action<int(int*)> a = DoAll(SetArgPointee<0>(1),  // NOLINT
+                              Return(2));
+  EXPECT_EQ(2, a.Perform(make_tuple(&n)));
+  EXPECT_EQ(1, n);
+}
+
+// Tests DoAll(a1, a2, a3).
+TEST(DoAllTest, ThreeActions) {
+  int m = 0, n = 0;
+  Action<int(int*, int*)> a = DoAll(SetArgPointee<0>(1),  // NOLINT
+                                    SetArgPointee<1>(2),
+                                    Return(3));
+  EXPECT_EQ(3, a.Perform(make_tuple(&m, &n)));
+  EXPECT_EQ(1, m);
+  EXPECT_EQ(2, n);
+}
+
+// Tests DoAll(a1, a2, a3, a4).
+TEST(DoAllTest, FourActions) {
+  int m = 0, n = 0;
+  char ch = '\0';
+  Action<int(int*, int*, char*)> a =  // NOLINT
+      DoAll(SetArgPointee<0>(1),
+            SetArgPointee<1>(2),
+            SetArgPointee<2>('a'),
+            Return(3));
+  EXPECT_EQ(3, a.Perform(make_tuple(&m, &n, &ch)));
+  EXPECT_EQ(1, m);
+  EXPECT_EQ(2, n);
+  EXPECT_EQ('a', ch);
+}
+
+// Tests DoAll(a1, a2, a3, a4, a5).
+TEST(DoAllTest, FiveActions) {
+  int m = 0, n = 0;
+  char a = '\0', b = '\0';
+  Action<int(int*, int*, char*, char*)> action =  // NOLINT
+      DoAll(SetArgPointee<0>(1),
+            SetArgPointee<1>(2),
+            SetArgPointee<2>('a'),
+            SetArgPointee<3>('b'),
+            Return(3));
+  EXPECT_EQ(3, action.Perform(make_tuple(&m, &n, &a, &b)));
+  EXPECT_EQ(1, m);
+  EXPECT_EQ(2, n);
+  EXPECT_EQ('a', a);
+  EXPECT_EQ('b', b);
+}
+
+// Tests DoAll(a1, a2, ..., a6).
+TEST(DoAllTest, SixActions) {
+  int m = 0, n = 0;
+  char a = '\0', b = '\0', c = '\0';
+  Action<int(int*, int*, char*, char*, char*)> action =  // NOLINT
+      DoAll(SetArgPointee<0>(1),
+            SetArgPointee<1>(2),
+            SetArgPointee<2>('a'),
+            SetArgPointee<3>('b'),
+            SetArgPointee<4>('c'),
+            Return(3));
+  EXPECT_EQ(3, action.Perform(make_tuple(&m, &n, &a, &b, &c)));
+  EXPECT_EQ(1, m);
+  EXPECT_EQ(2, n);
+  EXPECT_EQ('a', a);
+  EXPECT_EQ('b', b);
+  EXPECT_EQ('c', c);
+}
+
+// Tests DoAll(a1, a2, ..., a7).
+TEST(DoAllTest, SevenActions) {
+  int m = 0, n = 0;
+  char a = '\0', b = '\0', c = '\0', d = '\0';
+  Action<int(int*, int*, char*, char*, char*, char*)> action =  // NOLINT
+      DoAll(SetArgPointee<0>(1),
+            SetArgPointee<1>(2),
+            SetArgPointee<2>('a'),
+            SetArgPointee<3>('b'),
+            SetArgPointee<4>('c'),
+            SetArgPointee<5>('d'),
+            Return(3));
+  EXPECT_EQ(3, action.Perform(make_tuple(&m, &n, &a, &b, &c, &d)));
+  EXPECT_EQ(1, m);
+  EXPECT_EQ(2, n);
+  EXPECT_EQ('a', a);
+  EXPECT_EQ('b', b);
+  EXPECT_EQ('c', c);
+  EXPECT_EQ('d', d);
+}
+
+// Tests DoAll(a1, a2, ..., a8).
+TEST(DoAllTest, EightActions) {
+  int m = 0, n = 0;
+  char a = '\0', b = '\0', c = '\0', d = '\0', e = '\0';
+  Action<int(int*, int*, char*, char*, char*, char*,  // NOLINT
+             char*)> action =
+      DoAll(SetArgPointee<0>(1),
+            SetArgPointee<1>(2),
+            SetArgPointee<2>('a'),
+            SetArgPointee<3>('b'),
+            SetArgPointee<4>('c'),
+            SetArgPointee<5>('d'),
+            SetArgPointee<6>('e'),
+            Return(3));
+  EXPECT_EQ(3, action.Perform(make_tuple(&m, &n, &a, &b, &c, &d, &e)));
+  EXPECT_EQ(1, m);
+  EXPECT_EQ(2, n);
+  EXPECT_EQ('a', a);
+  EXPECT_EQ('b', b);
+  EXPECT_EQ('c', c);
+  EXPECT_EQ('d', d);
+  EXPECT_EQ('e', e);
+}
+
+// Tests DoAll(a1, a2, ..., a9).
+TEST(DoAllTest, NineActions) {
+  int m = 0, n = 0;
+  char a = '\0', b = '\0', c = '\0', d = '\0', e = '\0', f = '\0';
+  Action<int(int*, int*, char*, char*, char*, char*,  // NOLINT
+             char*, char*)> action =
+      DoAll(SetArgPointee<0>(1),
+            SetArgPointee<1>(2),
+            SetArgPointee<2>('a'),
+            SetArgPointee<3>('b'),
+            SetArgPointee<4>('c'),
+            SetArgPointee<5>('d'),
+            SetArgPointee<6>('e'),
+            SetArgPointee<7>('f'),
+            Return(3));
+  EXPECT_EQ(3, action.Perform(make_tuple(&m, &n, &a, &b, &c, &d, &e, &f)));
+  EXPECT_EQ(1, m);
+  EXPECT_EQ(2, n);
+  EXPECT_EQ('a', a);
+  EXPECT_EQ('b', b);
+  EXPECT_EQ('c', c);
+  EXPECT_EQ('d', d);
+  EXPECT_EQ('e', e);
+  EXPECT_EQ('f', f);
+}
+
+// Tests DoAll(a1, a2, ..., a10).
+TEST(DoAllTest, TenActions) {
+  int m = 0, n = 0;
+  char a = '\0', b = '\0', c = '\0', d = '\0';
+  char e = '\0', f = '\0', g = '\0';
+  Action<int(int*, int*, char*, char*, char*, char*,  // NOLINT
+             char*, char*, char*)> action =
+      DoAll(SetArgPointee<0>(1),
+            SetArgPointee<1>(2),
+            SetArgPointee<2>('a'),
+            SetArgPointee<3>('b'),
+            SetArgPointee<4>('c'),
+            SetArgPointee<5>('d'),
+            SetArgPointee<6>('e'),
+            SetArgPointee<7>('f'),
+            SetArgPointee<8>('g'),
+            Return(3));
+  EXPECT_EQ(3, action.Perform(make_tuple(&m, &n, &a, &b, &c, &d, &e, &f, &g)));
+  EXPECT_EQ(1, m);
+  EXPECT_EQ(2, n);
+  EXPECT_EQ('a', a);
+  EXPECT_EQ('b', b);
+  EXPECT_EQ('c', c);
+  EXPECT_EQ('d', d);
+  EXPECT_EQ('e', e);
+  EXPECT_EQ('f', f);
+  EXPECT_EQ('g', g);
+}
+
+// The ACTION*() macros trigger warning C4100 (unreferenced formal
+// parameter) in MSVC with -W4.  Unfortunately they cannot be fixed in
+// the macro definition, as the warnings are generated when the macro
+// is expanded and macro expansion cannot contain #pragma.  Therefore
+// we suppress them here.
+#ifdef _MSC_VER
+# pragma warning(push)
+# pragma warning(disable:4100)
+#endif
+
+// Tests the ACTION*() macro family.
+
+// Tests that ACTION() can define an action that doesn't reference the
+// mock function arguments.
+ACTION(Return5) { return 5; }
+
+TEST(ActionMacroTest, WorksWhenNotReferencingArguments) {
+  Action<double()> a1 = Return5();
+  EXPECT_DOUBLE_EQ(5, a1.Perform(make_tuple()));
+
+  Action<int(double, bool)> a2 = Return5();
+  EXPECT_EQ(5, a2.Perform(make_tuple(1, true)));
+}
+
+// Tests that ACTION() can define an action that returns void.
+ACTION(IncrementArg1) { (*arg1)++; }
+
+TEST(ActionMacroTest, WorksWhenReturningVoid) {
+  Action<void(int, int*)> a1 = IncrementArg1();
+  int n = 0;
+  a1.Perform(make_tuple(5, &n));
+  EXPECT_EQ(1, n);
+}
+
+// Tests that the body of ACTION() can reference the type of the
+// argument.
+ACTION(IncrementArg2) {
+  StaticAssertTypeEq<int*, arg2_type>();
+  arg2_type temp = arg2;
+  (*temp)++;
+}
+
+TEST(ActionMacroTest, CanReferenceArgumentType) {
+  Action<void(int, bool, int*)> a1 = IncrementArg2();
+  int n = 0;
+  a1.Perform(make_tuple(5, false, &n));
+  EXPECT_EQ(1, n);
+}
+
+// Tests that the body of ACTION() can reference the argument tuple
+// via args_type and args.
+ACTION(Sum2) {
+  StaticAssertTypeEq< ::std::tr1::tuple<int, char, int*>, args_type>();
+  args_type args_copy = args;
+  return get<0>(args_copy) + get<1>(args_copy);
+}
+
+TEST(ActionMacroTest, CanReferenceArgumentTuple) {
+  Action<int(int, char, int*)> a1 = Sum2();
+  int dummy = 0;
+  EXPECT_EQ(11, a1.Perform(make_tuple(5, Char(6), &dummy)));
+}
+
+// Tests that the body of ACTION() can reference the mock function
+// type.
+int Dummy(bool flag) { return flag? 1 : 0; }
+
+ACTION(InvokeDummy) {
+  StaticAssertTypeEq<int(bool), function_type>();
+  function_type* fp = &Dummy;
+  return (*fp)(true);
+}
+
+TEST(ActionMacroTest, CanReferenceMockFunctionType) {
+  Action<int(bool)> a1 = InvokeDummy();
+  EXPECT_EQ(1, a1.Perform(make_tuple(true)));
+  EXPECT_EQ(1, a1.Perform(make_tuple(false)));
+}
+
+// Tests that the body of ACTION() can reference the mock function's
+// return type.
+ACTION(InvokeDummy2) {
+  StaticAssertTypeEq<int, return_type>();
+  return_type result = Dummy(true);
+  return result;
+}
+
+TEST(ActionMacroTest, CanReferenceMockFunctionReturnType) {
+  Action<int(bool)> a1 = InvokeDummy2();
+  EXPECT_EQ(1, a1.Perform(make_tuple(true)));
+  EXPECT_EQ(1, a1.Perform(make_tuple(false)));
+}
+
+// Tests that ACTION() works for arguments passed by const reference.
+ACTION(ReturnAddrOfConstBoolReferenceArg) {
+  StaticAssertTypeEq<const bool&, arg1_type>();
+  return &arg1;
+}
+
+TEST(ActionMacroTest, WorksForConstReferenceArg) {
+  Action<const bool*(int, const bool&)> a = ReturnAddrOfConstBoolReferenceArg();
+  const bool b = false;
+  EXPECT_EQ(&b, a.Perform(tuple<int, const bool&>(0, b)));
+}
+
+// Tests that ACTION() works for arguments passed by non-const reference.
+ACTION(ReturnAddrOfIntReferenceArg) {
+  StaticAssertTypeEq<int&, arg0_type>();
+  return &arg0;
+}
+
+TEST(ActionMacroTest, WorksForNonConstReferenceArg) {
+  Action<int*(int&, bool, int)> a = ReturnAddrOfIntReferenceArg();
+  int n = 0;
+  EXPECT_EQ(&n, a.Perform(tuple<int&, bool, int>(n, true, 1)));
+}
+
+// Tests that ACTION() can be used in a namespace.
+namespace action_test {
+ACTION(Sum) { return arg0 + arg1; }
+}  // namespace action_test
+
+TEST(ActionMacroTest, WorksInNamespace) {
+  Action<int(int, int)> a1 = action_test::Sum();
+  EXPECT_EQ(3, a1.Perform(make_tuple(1, 2)));
+}
+
+// Tests that the same ACTION definition works for mock functions with
+// different argument numbers.
+ACTION(PlusTwo) { return arg0 + 2; }
+
+TEST(ActionMacroTest, WorksForDifferentArgumentNumbers) {
+  Action<int(int)> a1 = PlusTwo();
+  EXPECT_EQ(4, a1.Perform(make_tuple(2)));
+
+  Action<double(float, void*)> a2 = PlusTwo();
+  int dummy;
+  EXPECT_DOUBLE_EQ(6, a2.Perform(make_tuple(4.0f, &dummy)));
+}
+
+// Tests that ACTION_P can define a parameterized action.
+ACTION_P(Plus, n) { return arg0 + n; }
+
+TEST(ActionPMacroTest, DefinesParameterizedAction) {
+  Action<int(int m, bool t)> a1 = Plus(9);
+  EXPECT_EQ(10, a1.Perform(make_tuple(1, true)));
+}
+
+// Tests that the body of ACTION_P can reference the argument types
+// and the parameter type.
+ACTION_P(TypedPlus, n) {
+  arg0_type t1 = arg0;
+  n_type t2 = n;
+  return t1 + t2;
+}
+
+TEST(ActionPMacroTest, CanReferenceArgumentAndParameterTypes) {
+  Action<int(char m, bool t)> a1 = TypedPlus(9);
+  EXPECT_EQ(10, a1.Perform(make_tuple(Char(1), true)));
+}
+
+// Tests that a parameterized action can be used in any mock function
+// whose type is compatible.
+TEST(ActionPMacroTest, WorksInCompatibleMockFunction) {
+  Action<std::string(const std::string& s)> a1 = Plus("tail");
+  const std::string re = "re";
+  EXPECT_EQ("retail", a1.Perform(make_tuple(re)));
+}
+
+// Tests that we can use ACTION*() to define actions overloaded on the
+// number of parameters.
+
+ACTION(OverloadedAction) { return arg0 ? arg1 : "hello"; }
+
+ACTION_P(OverloadedAction, default_value) {
+  return arg0 ? arg1 : default_value;
+}
+
+ACTION_P2(OverloadedAction, true_value, false_value) {
+  return arg0 ? true_value : false_value;
+}
+
+TEST(ActionMacroTest, CanDefineOverloadedActions) {
+  typedef Action<const char*(bool, const char*)> MyAction;
+
+  const MyAction a1 = OverloadedAction();
+  EXPECT_STREQ("hello", a1.Perform(make_tuple(false, CharPtr("world"))));
+  EXPECT_STREQ("world", a1.Perform(make_tuple(true, CharPtr("world"))));
+
+  const MyAction a2 = OverloadedAction("hi");
+  EXPECT_STREQ("hi", a2.Perform(make_tuple(false, CharPtr("world"))));
+  EXPECT_STREQ("world", a2.Perform(make_tuple(true, CharPtr("world"))));
+
+  const MyAction a3 = OverloadedAction("hi", "you");
+  EXPECT_STREQ("hi", a3.Perform(make_tuple(true, CharPtr("world"))));
+  EXPECT_STREQ("you", a3.Perform(make_tuple(false, CharPtr("world"))));
+}
+
+// Tests ACTION_Pn where n >= 3.
+
+ACTION_P3(Plus, m, n, k) { return arg0 + m + n + k; }
+
+TEST(ActionPnMacroTest, WorksFor3Parameters) {
+  Action<double(int m, bool t)> a1 = Plus(100, 20, 3.4);
+  EXPECT_DOUBLE_EQ(3123.4, a1.Perform(make_tuple(3000, true)));
+
+  Action<std::string(const std::string& s)> a2 = Plus("tail", "-", ">");
+  const std::string re = "re";
+  EXPECT_EQ("retail->", a2.Perform(make_tuple(re)));
+}
+
+ACTION_P4(Plus, p0, p1, p2, p3) { return arg0 + p0 + p1 + p2 + p3; }
+
+TEST(ActionPnMacroTest, WorksFor4Parameters) {
+  Action<int(int)> a1 = Plus(1, 2, 3, 4);
+  EXPECT_EQ(10 + 1 + 2 + 3 + 4, a1.Perform(make_tuple(10)));
+}
+
+ACTION_P5(Plus, p0, p1, p2, p3, p4) { return arg0 + p0 + p1 + p2 + p3 + p4; }
+
+TEST(ActionPnMacroTest, WorksFor5Parameters) {
+  Action<int(int)> a1 = Plus(1, 2, 3, 4, 5);
+  EXPECT_EQ(10 + 1 + 2 + 3 + 4 + 5, a1.Perform(make_tuple(10)));
+}
+
+ACTION_P6(Plus, p0, p1, p2, p3, p4, p5) {
+  return arg0 + p0 + p1 + p2 + p3 + p4 + p5;
+}
+
+TEST(ActionPnMacroTest, WorksFor6Parameters) {
+  Action<int(int)> a1 = Plus(1, 2, 3, 4, 5, 6);
+  EXPECT_EQ(10 + 1 + 2 + 3 + 4 + 5 + 6, a1.Perform(make_tuple(10)));
+}
+
+ACTION_P7(Plus, p0, p1, p2, p3, p4, p5, p6) {
+  return arg0 + p0 + p1 + p2 + p3 + p4 + p5 + p6;
+}
+
+TEST(ActionPnMacroTest, WorksFor7Parameters) {
+  Action<int(int)> a1 = Plus(1, 2, 3, 4, 5, 6, 7);
+  EXPECT_EQ(10 + 1 + 2 + 3 + 4 + 5 + 6 + 7, a1.Perform(make_tuple(10)));
+}
+
+ACTION_P8(Plus, p0, p1, p2, p3, p4, p5, p6, p7) {
+  return arg0 + p0 + p1 + p2 + p3 + p4 + p5 + p6 + p7;
+}
+
+TEST(ActionPnMacroTest, WorksFor8Parameters) {
+  Action<int(int)> a1 = Plus(1, 2, 3, 4, 5, 6, 7, 8);
+  EXPECT_EQ(10 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8, a1.Perform(make_tuple(10)));
+}
+
+ACTION_P9(Plus, p0, p1, p2, p3, p4, p5, p6, p7, p8) {
+  return arg0 + p0 + p1 + p2 + p3 + p4 + p5 + p6 + p7 + p8;
+}
+
+TEST(ActionPnMacroTest, WorksFor9Parameters) {
+  Action<int(int)> a1 = Plus(1, 2, 3, 4, 5, 6, 7, 8, 9);
+  EXPECT_EQ(10 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9, a1.Perform(make_tuple(10)));
+}
+
+ACTION_P10(Plus, p0, p1, p2, p3, p4, p5, p6, p7, p8, last_param) {
+  arg0_type t0 = arg0;
+  last_param_type t9 = last_param;
+  return t0 + p0 + p1 + p2 + p3 + p4 + p5 + p6 + p7 + p8 + t9;
+}
+
+TEST(ActionPnMacroTest, WorksFor10Parameters) {
+  Action<int(int)> a1 = Plus(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
+  EXPECT_EQ(10 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10,
+            a1.Perform(make_tuple(10)));
+}
+
+// Tests that the action body can promote the parameter types.
+
+ACTION_P2(PadArgument, prefix, suffix) {
+  // The following lines promote the two parameters to desired types.
+  std::string prefix_str(prefix);
+  char suffix_char = static_cast<char>(suffix);
+  return prefix_str + arg0 + suffix_char;
+}
+
+TEST(ActionPnMacroTest, SimpleTypePromotion) {
+  Action<std::string(const char*)> no_promo =
+      PadArgument(std::string("foo"), 'r');
+  Action<std::string(const char*)> promo =
+      PadArgument("foo", static_cast<int>('r'));
+  EXPECT_EQ("foobar", no_promo.Perform(make_tuple(CharPtr("ba"))));
+  EXPECT_EQ("foobar", promo.Perform(make_tuple(CharPtr("ba"))));
+}
+
+// Tests that we can partially restrict parameter types using a
+// straight-forward pattern.
+
+// Defines a generic action that doesn't restrict the types of its
+// parameters.
+ACTION_P3(ConcatImpl, a, b, c) {
+  std::stringstream ss;
+  ss << a << b << c;
+  return ss.str();
+}
+
+// Next, we try to restrict that either the first parameter is a
+// string, or the second parameter is an int.
+
+// Defines a partially specialized wrapper that restricts the first
+// parameter to std::string.
+template <typename T1, typename T2>
+// ConcatImplActionP3 is the class template ACTION_P3 uses to
+// implement ConcatImpl.  We shouldn't change the name as this
+// pattern requires the user to use it directly.
+ConcatImplActionP3<std::string, T1, T2>
+Concat(const std::string& a, T1 b, T2 c) {
+  if (true) {
+    // This branch verifies that ConcatImpl() can be invoked without
+    // explicit template arguments.
+    return ConcatImpl(a, b, c);
+  } else {
+    // This branch verifies that ConcatImpl() can also be invoked with
+    // explicit template arguments.  It doesn't really need to be
+    // executed as this is a compile-time verification.
+    return ConcatImpl<std::string, T1, T2>(a, b, c);
+  }
+}
+
+// Defines another partially specialized wrapper that restricts the
+// second parameter to int.
+template <typename T1, typename T2>
+ConcatImplActionP3<T1, int, T2>
+Concat(T1 a, int b, T2 c) {
+  return ConcatImpl(a, b, c);
+}
+
+TEST(ActionPnMacroTest, CanPartiallyRestrictParameterTypes) {
+  Action<const std::string()> a1 = Concat("Hello", "1", 2);
+  EXPECT_EQ("Hello12", a1.Perform(make_tuple()));
+
+  a1 = Concat(1, 2, 3);
+  EXPECT_EQ("123", a1.Perform(make_tuple()));
+}
+
+// Verifies the type of an ACTION*.
+
+ACTION(DoFoo) {}
+ACTION_P(DoFoo, p) {}
+ACTION_P2(DoFoo, p0, p1) {}
+
+TEST(ActionPnMacroTest, TypesAreCorrect) {
+  // DoFoo() must be assignable to a DoFooAction variable.
+  DoFooAction a0 = DoFoo();
+
+  // DoFoo(1) must be assignable to a DoFooActionP variable.
+  DoFooActionP<int> a1 = DoFoo(1);
+
+  // DoFoo(p1, ..., pk) must be assignable to a DoFooActionPk
+  // variable, and so on.
+  DoFooActionP2<int, char> a2 = DoFoo(1, '2');
+  PlusActionP3<int, int, char> a3 = Plus(1, 2, '3');
+  PlusActionP4<int, int, int, char> a4 = Plus(1, 2, 3, '4');
+  PlusActionP5<int, int, int, int, char> a5 = Plus(1, 2, 3, 4, '5');
+  PlusActionP6<int, int, int, int, int, char> a6 = Plus(1, 2, 3, 4, 5, '6');
+  PlusActionP7<int, int, int, int, int, int, char> a7 =
+      Plus(1, 2, 3, 4, 5, 6, '7');
+  PlusActionP8<int, int, int, int, int, int, int, char> a8 =
+      Plus(1, 2, 3, 4, 5, 6, 7, '8');
+  PlusActionP9<int, int, int, int, int, int, int, int, char> a9 =
+      Plus(1, 2, 3, 4, 5, 6, 7, 8, '9');
+  PlusActionP10<int, int, int, int, int, int, int, int, int, char> a10 =
+      Plus(1, 2, 3, 4, 5, 6, 7, 8, 9, '0');
+}
+
+// Tests that an ACTION_P*() action can be explicitly instantiated
+// with reference-typed parameters.
+
+ACTION_P(Plus1, x) { return x; }
+ACTION_P2(Plus2, x, y) { return x + y; }
+ACTION_P3(Plus3, x, y, z) { return x + y + z; }
+ACTION_P10(Plus10, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) {
+  return a0 + a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9;
+}
+
+TEST(ActionPnMacroTest, CanExplicitlyInstantiateWithReferenceTypes) {
+  int x = 1, y = 2, z = 3;
+  const tuple<> empty = make_tuple();
+
+  Action<int()> a = Plus1<int&>(x);
+  EXPECT_EQ(1, a.Perform(empty));
+
+  a = Plus2<const int&, int&>(x, y);
+  EXPECT_EQ(3, a.Perform(empty));
+
+  a = Plus3<int&, const int&, int&>(x, y, z);
+  EXPECT_EQ(6, a.Perform(empty));
+
+  int n[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
+  a = Plus10<const int&, int&, const int&, int&, const int&, int&, const int&,
+      int&, const int&, int&>(n[0], n[1], n[2], n[3], n[4], n[5], n[6], n[7],
+                              n[8], n[9]);
+  EXPECT_EQ(55, a.Perform(empty));
+}
+
+class NullaryConstructorClass {
+ public:
+  NullaryConstructorClass() : value_(123) {}
+  int value_;
+};
+
+// Tests using ReturnNew() with a nullary constructor.
+TEST(ReturnNewTest, NoArgs) {
+  Action<NullaryConstructorClass*()> a = ReturnNew<NullaryConstructorClass>();
+  NullaryConstructorClass* c = a.Perform(make_tuple());
+  EXPECT_EQ(123, c->value_);
+  delete c;
+}
+
+class UnaryConstructorClass {
+ public:
+  explicit UnaryConstructorClass(int value) : value_(value) {}
+  int value_;
+};
+
+// Tests using ReturnNew() with a unary constructor.
+TEST(ReturnNewTest, Unary) {
+  Action<UnaryConstructorClass*()> a = ReturnNew<UnaryConstructorClass>(4000);
+  UnaryConstructorClass* c = a.Perform(make_tuple());
+  EXPECT_EQ(4000, c->value_);
+  delete c;
+}
+
+TEST(ReturnNewTest, UnaryWorksWhenMockMethodHasArgs) {
+  Action<UnaryConstructorClass*(bool, int)> a =
+      ReturnNew<UnaryConstructorClass>(4000);
+  UnaryConstructorClass* c = a.Perform(make_tuple(false, 5));
+  EXPECT_EQ(4000, c->value_);
+  delete c;
+}
+
+TEST(ReturnNewTest, UnaryWorksWhenMockMethodReturnsPointerToConst) {
+  Action<const UnaryConstructorClass*()> a =
+      ReturnNew<UnaryConstructorClass>(4000);
+  const UnaryConstructorClass* c = a.Perform(make_tuple());
+  EXPECT_EQ(4000, c->value_);
+  delete c;
+}
+
+class TenArgConstructorClass {
+ public:
+  TenArgConstructorClass(int a1, int a2, int a3, int a4, int a5,
+                         int a6, int a7, int a8, int a9, int a10)
+    : value_(a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9 + a10) {
+  }
+  int value_;
+};
+
+// Tests using ReturnNew() with a 10-argument constructor.
+TEST(ReturnNewTest, ConstructorThatTakes10Arguments) {
+  Action<TenArgConstructorClass*()> a =
+      ReturnNew<TenArgConstructorClass>(1000000000, 200000000, 30000000,
+                                        4000000, 500000, 60000,
+                                        7000, 800, 90, 0);
+  TenArgConstructorClass* c = a.Perform(make_tuple());
+  EXPECT_EQ(1234567890, c->value_);
+  delete c;
+}
+
+// Tests that ACTION_TEMPLATE works when there is no value parameter.
+ACTION_TEMPLATE(CreateNew,
+                HAS_1_TEMPLATE_PARAMS(typename, T),
+                AND_0_VALUE_PARAMS()) {
+  return new T;
+}
+
+TEST(ActionTemplateTest, WorksWithoutValueParam) {
+  const Action<int*()> a = CreateNew<int>();
+  int* p = a.Perform(make_tuple());
+  delete p;
+}
+
+// Tests that ACTION_TEMPLATE works when there are value parameters.
+ACTION_TEMPLATE(CreateNew,
+                HAS_1_TEMPLATE_PARAMS(typename, T),
+                AND_1_VALUE_PARAMS(a0)) {
+  return new T(a0);
+}
+
+TEST(ActionTemplateTest, WorksWithValueParams) {
+  const Action<int*()> a = CreateNew<int>(42);
+  int* p = a.Perform(make_tuple());
+  EXPECT_EQ(42, *p);
+  delete p;
+}
+
+// Tests that ACTION_TEMPLATE works for integral template parameters.
+ACTION_TEMPLATE(MyDeleteArg,
+                HAS_1_TEMPLATE_PARAMS(int, k),
+                AND_0_VALUE_PARAMS()) {
+  delete std::tr1::get<k>(args);
+}
+
+// Resets a bool variable in the destructor.
+class BoolResetter {
+ public:
+  explicit BoolResetter(bool* value) : value_(value) {}
+  ~BoolResetter() { *value_ = false; }
+ private:
+  bool* value_;
+};
+
+TEST(ActionTemplateTest, WorksForIntegralTemplateParams) {
+  const Action<void(int*, BoolResetter*)> a = MyDeleteArg<1>();
+  int n = 0;
+  bool b = true;
+  BoolResetter* resetter = new BoolResetter(&b);
+  a.Perform(make_tuple(&n, resetter));
+  EXPECT_FALSE(b);  // Verifies that resetter is deleted.
+}
+
+// Tests that ACTION_TEMPLATES works for template template parameters.
+ACTION_TEMPLATE(ReturnSmartPointer,
+                HAS_1_TEMPLATE_PARAMS(template <typename Pointee> class,
+                                      Pointer),
+                AND_1_VALUE_PARAMS(pointee)) {
+  return Pointer<pointee_type>(new pointee_type(pointee));
+}
+
+TEST(ActionTemplateTest, WorksForTemplateTemplateParameters) {
+  using ::testing::internal::linked_ptr;
+  const Action<linked_ptr<int>()> a = ReturnSmartPointer<linked_ptr>(42);
+  linked_ptr<int> p = a.Perform(make_tuple());
+  EXPECT_EQ(42, *p);
+}
+
+// Tests that ACTION_TEMPLATE works for 10 template parameters.
+template <typename T1, typename T2, typename T3, int k4, bool k5,
+          unsigned int k6, typename T7, typename T8, typename T9>
+struct GiantTemplate {
+ public:
+  explicit GiantTemplate(int a_value) : value(a_value) {}
+  int value;
+};
+
+ACTION_TEMPLATE(ReturnGiant,
+                HAS_10_TEMPLATE_PARAMS(
+                    typename, T1,
+                    typename, T2,
+                    typename, T3,
+                    int, k4,
+                    bool, k5,
+                    unsigned int, k6,
+                    class, T7,
+                    class, T8,
+                    class, T9,
+                    template <typename T> class, T10),
+                AND_1_VALUE_PARAMS(value)) {
+  return GiantTemplate<T10<T1>, T2, T3, k4, k5, k6, T7, T8, T9>(value);
+}
+
+TEST(ActionTemplateTest, WorksFor10TemplateParameters) {
+  using ::testing::internal::linked_ptr;
+  typedef GiantTemplate<linked_ptr<int>, bool, double, 5,
+      true, 6, char, unsigned, int> Giant;
+  const Action<Giant()> a = ReturnGiant<
+      int, bool, double, 5, true, 6, char, unsigned, int, linked_ptr>(42);
+  Giant giant = a.Perform(make_tuple());
+  EXPECT_EQ(42, giant.value);
+}
+
+// Tests that ACTION_TEMPLATE works for 10 value parameters.
+ACTION_TEMPLATE(ReturnSum,
+                HAS_1_TEMPLATE_PARAMS(typename, Number),
+                AND_10_VALUE_PARAMS(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10)) {
+  return static_cast<Number>(v1) + v2 + v3 + v4 + v5 + v6 + v7 + v8 + v9 + v10;
+}
+
+TEST(ActionTemplateTest, WorksFor10ValueParameters) {
+  const Action<int()> a = ReturnSum<int>(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
+  EXPECT_EQ(55, a.Perform(make_tuple()));
+}
+
+// Tests that ACTION_TEMPLATE and ACTION/ACTION_P* can be overloaded
+// on the number of value parameters.
+
+ACTION(ReturnSum) { return 0; }
+
+ACTION_P(ReturnSum, x) { return x; }
+
+ACTION_TEMPLATE(ReturnSum,
+                HAS_1_TEMPLATE_PARAMS(typename, Number),
+                AND_2_VALUE_PARAMS(v1, v2)) {
+  return static_cast<Number>(v1) + v2;
+}
+
+ACTION_TEMPLATE(ReturnSum,
+                HAS_1_TEMPLATE_PARAMS(typename, Number),
+                AND_3_VALUE_PARAMS(v1, v2, v3)) {
+  return static_cast<Number>(v1) + v2 + v3;
+}
+
+ACTION_TEMPLATE(ReturnSum,
+                HAS_2_TEMPLATE_PARAMS(typename, Number, int, k),
+                AND_4_VALUE_PARAMS(v1, v2, v3, v4)) {
+  return static_cast<Number>(v1) + v2 + v3 + v4 + k;
+}
+
+TEST(ActionTemplateTest, CanBeOverloadedOnNumberOfValueParameters) {
+  const Action<int()> a0 = ReturnSum();
+  const Action<int()> a1 = ReturnSum(1);
+  const Action<int()> a2 = ReturnSum<int>(1, 2);
+  const Action<int()> a3 = ReturnSum<int>(1, 2, 3);
+  const Action<int()> a4 = ReturnSum<int, 10000>(2000, 300, 40, 5);
+  EXPECT_EQ(0, a0.Perform(make_tuple()));
+  EXPECT_EQ(1, a1.Perform(make_tuple()));
+  EXPECT_EQ(3, a2.Perform(make_tuple()));
+  EXPECT_EQ(6, a3.Perform(make_tuple()));
+  EXPECT_EQ(12345, a4.Perform(make_tuple()));
+}
+
+#ifdef _MSC_VER
+# pragma warning(pop)
+#endif
+
+}  // namespace gmock_generated_actions_test
+}  // namespace testing
diff --git a/google-breakpad/src/testing/test/gmock-generated-function-mockers_test.cc b/google-breakpad/src/testing/test/gmock-generated-function-mockers_test.cc
new file mode 100644
index 0000000..2087f99
--- /dev/null
+++ b/google-breakpad/src/testing/test/gmock-generated-function-mockers_test.cc
@@ -0,0 +1,540 @@
+// Copyright 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Google Mock - a framework for writing C++ mock classes.
+//
+// This file tests the function mocker classes.
+
+#include "gmock/gmock-generated-function-mockers.h"
+
+#if GTEST_OS_WINDOWS
+// MSDN says the header file to be included for STDMETHOD is BaseTyps.h but
+// we are getting compiler errors if we use basetyps.h, hence including
+// objbase.h for definition of STDMETHOD.
+# include <objbase.h>
+#endif  // GTEST_OS_WINDOWS
+
+#include <map>
+#include <string>
+#include "gmock/gmock.h"
+#include "gtest/gtest.h"
+
+// There is a bug in MSVC (fixed in VS 2008) that prevents creating a
+// mock for a function with const arguments, so we don't test such
+// cases for MSVC versions older than 2008.
+#if !GTEST_OS_WINDOWS || (_MSC_VER >= 1500)
+# define GMOCK_ALLOWS_CONST_PARAM_FUNCTIONS
+#endif  // !GTEST_OS_WINDOWS || (_MSC_VER >= 1500)
+
+namespace testing {
+namespace gmock_generated_function_mockers_test {
+
+using testing::internal::string;
+using testing::_;
+using testing::A;
+using testing::An;
+using testing::AnyNumber;
+using testing::Const;
+using testing::DoDefault;
+using testing::Eq;
+using testing::Lt;
+using testing::MockFunction;
+using testing::Ref;
+using testing::Return;
+using testing::ReturnRef;
+using testing::TypedEq;
+
+class FooInterface {
+ public:
+  virtual ~FooInterface() {}
+
+  virtual void VoidReturning(int x) = 0;
+
+  virtual int Nullary() = 0;
+  virtual bool Unary(int x) = 0;
+  virtual long Binary(short x, int y) = 0;  // NOLINT
+  virtual int Decimal(bool b, char c, short d, int e, long f,  // NOLINT
+                      float g, double h, unsigned i, char* j, const string& k)
+      = 0;
+
+  virtual bool TakesNonConstReference(int& n) = 0;  // NOLINT
+  virtual string TakesConstReference(const int& n) = 0;
+#ifdef GMOCK_ALLOWS_CONST_PARAM_FUNCTIONS
+  virtual bool TakesConst(const int x) = 0;
+#endif  // GMOCK_ALLOWS_CONST_PARAM_FUNCTIONS
+
+  virtual int OverloadedOnArgumentNumber() = 0;
+  virtual int OverloadedOnArgumentNumber(int n) = 0;
+
+  virtual int OverloadedOnArgumentType(int n) = 0;
+  virtual char OverloadedOnArgumentType(char c) = 0;
+
+  virtual int OverloadedOnConstness() = 0;
+  virtual char OverloadedOnConstness() const = 0;
+
+  virtual int TypeWithHole(int (*func)()) = 0;
+  virtual int TypeWithComma(const std::map<int, string>& a_map) = 0;
+
+#if GTEST_OS_WINDOWS
+  STDMETHOD_(int, CTNullary)() = 0;
+  STDMETHOD_(bool, CTUnary)(int x) = 0;
+  STDMETHOD_(int, CTDecimal)(bool b, char c, short d, int e, long f,  // NOLINT
+      float g, double h, unsigned i, char* j, const string& k) = 0;
+  STDMETHOD_(char, CTConst)(int x) const = 0;
+#endif  // GTEST_OS_WINDOWS
+};
+
+class MockFoo : public FooInterface {
+ public:
+  MockFoo() {}
+
+  // Makes sure that a mock function parameter can be named.
+  MOCK_METHOD1(VoidReturning, void(int n));  // NOLINT
+
+  MOCK_METHOD0(Nullary, int());  // NOLINT
+
+  // Makes sure that a mock function parameter can be unnamed.
+  MOCK_METHOD1(Unary, bool(int));  // NOLINT
+  MOCK_METHOD2(Binary, long(short, int));  // NOLINT
+  MOCK_METHOD10(Decimal, int(bool, char, short, int, long, float,  // NOLINT
+                             double, unsigned, char*, const string& str));
+
+  MOCK_METHOD1(TakesNonConstReference, bool(int&));  // NOLINT
+  MOCK_METHOD1(TakesConstReference, string(const int&));
+#ifdef GMOCK_ALLOWS_CONST_PARAM_FUNCTIONS
+  MOCK_METHOD1(TakesConst, bool(const int));  // NOLINT
+#endif  // GMOCK_ALLOWS_CONST_PARAM_FUNCTIONS
+  MOCK_METHOD0(OverloadedOnArgumentNumber, int());  // NOLINT
+  MOCK_METHOD1(OverloadedOnArgumentNumber, int(int));  // NOLINT
+
+  MOCK_METHOD1(OverloadedOnArgumentType, int(int));  // NOLINT
+  MOCK_METHOD1(OverloadedOnArgumentType, char(char));  // NOLINT
+
+  MOCK_METHOD0(OverloadedOnConstness, int());  // NOLINT
+  MOCK_CONST_METHOD0(OverloadedOnConstness, char());  // NOLINT
+
+  MOCK_METHOD1(TypeWithHole, int(int (*)()));  // NOLINT
+  MOCK_METHOD1(TypeWithComma, int(const std::map<int, string>&));  // NOLINT
+#if GTEST_OS_WINDOWS
+  MOCK_METHOD0_WITH_CALLTYPE(STDMETHODCALLTYPE, CTNullary, int());
+  MOCK_METHOD1_WITH_CALLTYPE(STDMETHODCALLTYPE, CTUnary, bool(int));
+  MOCK_METHOD10_WITH_CALLTYPE(STDMETHODCALLTYPE, CTDecimal, int(bool b, char c,
+      short d, int e, long f, float g, double h, unsigned i, char* j,
+      const string& k));
+  MOCK_CONST_METHOD1_WITH_CALLTYPE(STDMETHODCALLTYPE, CTConst, char(int));
+#endif  // GTEST_OS_WINDOWS
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(MockFoo);
+};
+
+class FunctionMockerTest : public testing::Test {
+ protected:
+  FunctionMockerTest() : foo_(&mock_foo_) {}
+
+  FooInterface* const foo_;
+  MockFoo mock_foo_;
+};
+
+// Tests mocking a void-returning function.
+TEST_F(FunctionMockerTest, MocksVoidFunction) {
+  EXPECT_CALL(mock_foo_, VoidReturning(Lt(100)));
+  foo_->VoidReturning(0);
+}
+
+// Tests mocking a nullary function.
+TEST_F(FunctionMockerTest, MocksNullaryFunction) {
+  EXPECT_CALL(mock_foo_, Nullary())
+      .WillOnce(DoDefault())
+      .WillOnce(Return(1));
+
+  EXPECT_EQ(0, foo_->Nullary());
+  EXPECT_EQ(1, foo_->Nullary());
+}
+
+// Tests mocking a unary function.
+TEST_F(FunctionMockerTest, MocksUnaryFunction) {
+  EXPECT_CALL(mock_foo_, Unary(Eq(2)))
+      .Times(2)
+      .WillOnce(Return(true));
+
+  EXPECT_TRUE(foo_->Unary(2));
+  EXPECT_FALSE(foo_->Unary(2));
+}
+
+// Tests mocking a binary function.
+TEST_F(FunctionMockerTest, MocksBinaryFunction) {
+  EXPECT_CALL(mock_foo_, Binary(2, _))
+      .WillOnce(Return(3));
+
+  EXPECT_EQ(3, foo_->Binary(2, 1));
+}
+
+// Tests mocking a decimal function.
+TEST_F(FunctionMockerTest, MocksDecimalFunction) {
+  EXPECT_CALL(mock_foo_, Decimal(true, 'a', 0, 0, 1L, A<float>(),
+                                 Lt(100), 5U, NULL, "hi"))
+      .WillOnce(Return(5));
+
+  EXPECT_EQ(5, foo_->Decimal(true, 'a', 0, 0, 1, 0, 0, 5, NULL, "hi"));
+}
+
+// Tests mocking a function that takes a non-const reference.
+TEST_F(FunctionMockerTest, MocksFunctionWithNonConstReferenceArgument) {
+  int a = 0;
+  EXPECT_CALL(mock_foo_, TakesNonConstReference(Ref(a)))
+      .WillOnce(Return(true));
+
+  EXPECT_TRUE(foo_->TakesNonConstReference(a));
+}
+
+// Tests mocking a function that takes a const reference.
+TEST_F(FunctionMockerTest, MocksFunctionWithConstReferenceArgument) {
+  int a = 0;
+  EXPECT_CALL(mock_foo_, TakesConstReference(Ref(a)))
+      .WillOnce(Return("Hello"));
+
+  EXPECT_EQ("Hello", foo_->TakesConstReference(a));
+}
+
+#ifdef GMOCK_ALLOWS_CONST_PARAM_FUNCTIONS
+// Tests mocking a function that takes a const variable.
+TEST_F(FunctionMockerTest, MocksFunctionWithConstArgument) {
+  EXPECT_CALL(mock_foo_, TakesConst(Lt(10)))
+      .WillOnce(DoDefault());
+
+  EXPECT_FALSE(foo_->TakesConst(5));
+}
+#endif  // GMOCK_ALLOWS_CONST_PARAM_FUNCTIONS
+
+// Tests mocking functions overloaded on the number of arguments.
+TEST_F(FunctionMockerTest, MocksFunctionsOverloadedOnArgumentNumber) {
+  EXPECT_CALL(mock_foo_, OverloadedOnArgumentNumber())
+      .WillOnce(Return(1));
+  EXPECT_CALL(mock_foo_, OverloadedOnArgumentNumber(_))
+      .WillOnce(Return(2));
+
+  EXPECT_EQ(2, foo_->OverloadedOnArgumentNumber(1));
+  EXPECT_EQ(1, foo_->OverloadedOnArgumentNumber());
+}
+
+// Tests mocking functions overloaded on the types of argument.
+TEST_F(FunctionMockerTest, MocksFunctionsOverloadedOnArgumentType) {
+  EXPECT_CALL(mock_foo_, OverloadedOnArgumentType(An<int>()))
+      .WillOnce(Return(1));
+  EXPECT_CALL(mock_foo_, OverloadedOnArgumentType(TypedEq<char>('a')))
+      .WillOnce(Return('b'));
+
+  EXPECT_EQ(1, foo_->OverloadedOnArgumentType(0));
+  EXPECT_EQ('b', foo_->OverloadedOnArgumentType('a'));
+}
+
+// Tests mocking functions overloaded on the const-ness of this object.
+TEST_F(FunctionMockerTest, MocksFunctionsOverloadedOnConstnessOfThis) {
+  EXPECT_CALL(mock_foo_, OverloadedOnConstness());
+  EXPECT_CALL(Const(mock_foo_), OverloadedOnConstness())
+      .WillOnce(Return('a'));
+
+  EXPECT_EQ(0, foo_->OverloadedOnConstness());
+  EXPECT_EQ('a', Const(*foo_).OverloadedOnConstness());
+}
+
+#if GTEST_OS_WINDOWS
+// Tests mocking a nullary function with calltype.
+TEST_F(FunctionMockerTest, MocksNullaryFunctionWithCallType) {
+  EXPECT_CALL(mock_foo_, CTNullary())
+      .WillOnce(Return(-1))
+      .WillOnce(Return(0));
+
+  EXPECT_EQ(-1, foo_->CTNullary());
+  EXPECT_EQ(0, foo_->CTNullary());
+}
+
+// Tests mocking a unary function with calltype.
+TEST_F(FunctionMockerTest, MocksUnaryFunctionWithCallType) {
+  EXPECT_CALL(mock_foo_, CTUnary(Eq(2)))
+      .Times(2)
+      .WillOnce(Return(true))
+      .WillOnce(Return(false));
+
+  EXPECT_TRUE(foo_->CTUnary(2));
+  EXPECT_FALSE(foo_->CTUnary(2));
+}
+
+// Tests mocking a decimal function with calltype.
+TEST_F(FunctionMockerTest, MocksDecimalFunctionWithCallType) {
+  EXPECT_CALL(mock_foo_, CTDecimal(true, 'a', 0, 0, 1L, A<float>(),
+                                   Lt(100), 5U, NULL, "hi"))
+      .WillOnce(Return(10));
+
+  EXPECT_EQ(10, foo_->CTDecimal(true, 'a', 0, 0, 1, 0, 0, 5, NULL, "hi"));
+}
+
+// Tests mocking functions overloaded on the const-ness of this object.
+TEST_F(FunctionMockerTest, MocksFunctionsConstFunctionWithCallType) {
+  EXPECT_CALL(Const(mock_foo_), CTConst(_))
+      .WillOnce(Return('a'));
+
+  EXPECT_EQ('a', Const(*foo_).CTConst(0));
+}
+
+#endif  // GTEST_OS_WINDOWS
+
+class MockB {
+ public:
+  MockB() {}
+
+  MOCK_METHOD0(DoB, void());
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(MockB);
+};
+
+// Tests that functions with no EXPECT_CALL() ruls can be called any
+// number of times.
+TEST(ExpectCallTest, UnmentionedFunctionCanBeCalledAnyNumberOfTimes) {
+  {
+    MockB b;
+  }
+
+  {
+    MockB b;
+    b.DoB();
+  }
+
+  {
+    MockB b;
+    b.DoB();
+    b.DoB();
+  }
+}
+
+// Tests mocking template interfaces.
+
+template <typename T>
+class StackInterface {
+ public:
+  virtual ~StackInterface() {}
+
+  // Template parameter appears in function parameter.
+  virtual void Push(const T& value) = 0;
+  virtual void Pop() = 0;
+  virtual int GetSize() const = 0;
+  // Template parameter appears in function return type.
+  virtual const T& GetTop() const = 0;
+};
+
+template <typename T>
+class MockStack : public StackInterface<T> {
+ public:
+  MockStack() {}
+
+  MOCK_METHOD1_T(Push, void(const T& elem));
+  MOCK_METHOD0_T(Pop, void());
+  MOCK_CONST_METHOD0_T(GetSize, int());  // NOLINT
+  MOCK_CONST_METHOD0_T(GetTop, const T&());
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(MockStack);
+};
+
+// Tests that template mock works.
+TEST(TemplateMockTest, Works) {
+  MockStack<int> mock;
+
+  EXPECT_CALL(mock, GetSize())
+      .WillOnce(Return(0))
+      .WillOnce(Return(1))
+      .WillOnce(Return(0));
+  EXPECT_CALL(mock, Push(_));
+  int n = 5;
+  EXPECT_CALL(mock, GetTop())
+      .WillOnce(ReturnRef(n));
+  EXPECT_CALL(mock, Pop())
+      .Times(AnyNumber());
+
+  EXPECT_EQ(0, mock.GetSize());
+  mock.Push(5);
+  EXPECT_EQ(1, mock.GetSize());
+  EXPECT_EQ(5, mock.GetTop());
+  mock.Pop();
+  EXPECT_EQ(0, mock.GetSize());
+}
+
+#if GTEST_OS_WINDOWS
+// Tests mocking template interfaces with calltype.
+
+template <typename T>
+class StackInterfaceWithCallType {
+ public:
+  virtual ~StackInterfaceWithCallType() {}
+
+  // Template parameter appears in function parameter.
+  STDMETHOD_(void, Push)(const T& value) = 0;
+  STDMETHOD_(void, Pop)() = 0;
+  STDMETHOD_(int, GetSize)() const = 0;
+  // Template parameter appears in function return type.
+  STDMETHOD_(const T&, GetTop)() const = 0;
+};
+
+template <typename T>
+class MockStackWithCallType : public StackInterfaceWithCallType<T> {
+ public:
+  MockStackWithCallType() {}
+
+  MOCK_METHOD1_T_WITH_CALLTYPE(STDMETHODCALLTYPE, Push, void(const T& elem));
+  MOCK_METHOD0_T_WITH_CALLTYPE(STDMETHODCALLTYPE, Pop, void());
+  MOCK_CONST_METHOD0_T_WITH_CALLTYPE(STDMETHODCALLTYPE, GetSize, int());
+  MOCK_CONST_METHOD0_T_WITH_CALLTYPE(STDMETHODCALLTYPE, GetTop, const T&());
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(MockStackWithCallType);
+};
+
+// Tests that template mock with calltype works.
+TEST(TemplateMockTestWithCallType, Works) {
+  MockStackWithCallType<int> mock;
+
+  EXPECT_CALL(mock, GetSize())
+      .WillOnce(Return(0))
+      .WillOnce(Return(1))
+      .WillOnce(Return(0));
+  EXPECT_CALL(mock, Push(_));
+  int n = 5;
+  EXPECT_CALL(mock, GetTop())
+      .WillOnce(ReturnRef(n));
+  EXPECT_CALL(mock, Pop())
+      .Times(AnyNumber());
+
+  EXPECT_EQ(0, mock.GetSize());
+  mock.Push(5);
+  EXPECT_EQ(1, mock.GetSize());
+  EXPECT_EQ(5, mock.GetTop());
+  mock.Pop();
+  EXPECT_EQ(0, mock.GetSize());
+}
+#endif  // GTEST_OS_WINDOWS
+
+#define MY_MOCK_METHODS1_ \
+    MOCK_METHOD0(Overloaded, void()); \
+    MOCK_CONST_METHOD1(Overloaded, int(int n)); \
+    MOCK_METHOD2(Overloaded, bool(bool f, int n))
+
+class MockOverloadedOnArgNumber {
+ public:
+  MockOverloadedOnArgNumber() {}
+
+  MY_MOCK_METHODS1_;
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(MockOverloadedOnArgNumber);
+};
+
+TEST(OverloadedMockMethodTest, CanOverloadOnArgNumberInMacroBody) {
+  MockOverloadedOnArgNumber mock;
+  EXPECT_CALL(mock, Overloaded());
+  EXPECT_CALL(mock, Overloaded(1)).WillOnce(Return(2));
+  EXPECT_CALL(mock, Overloaded(true, 1)).WillOnce(Return(true));
+
+  mock.Overloaded();
+  EXPECT_EQ(2, mock.Overloaded(1));
+  EXPECT_TRUE(mock.Overloaded(true, 1));
+}
+
+#define MY_MOCK_METHODS2_ \
+    MOCK_CONST_METHOD1(Overloaded, int(int n)); \
+    MOCK_METHOD1(Overloaded, int(int n));
+
+class MockOverloadedOnConstness {
+ public:
+  MockOverloadedOnConstness() {}
+
+  MY_MOCK_METHODS2_;
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(MockOverloadedOnConstness);
+};
+
+TEST(OverloadedMockMethodTest, CanOverloadOnConstnessInMacroBody) {
+  MockOverloadedOnConstness mock;
+  const MockOverloadedOnConstness* const_mock = &mock;
+  EXPECT_CALL(mock, Overloaded(1)).WillOnce(Return(2));
+  EXPECT_CALL(*const_mock, Overloaded(1)).WillOnce(Return(3));
+
+  EXPECT_EQ(2, mock.Overloaded(1));
+  EXPECT_EQ(3, const_mock->Overloaded(1));
+}
+
+TEST(MockFunctionTest, WorksForVoidNullary) {
+  MockFunction<void()> foo;
+  EXPECT_CALL(foo, Call());
+  foo.Call();
+}
+
+TEST(MockFunctionTest, WorksForNonVoidNullary) {
+  MockFunction<int()> foo;
+  EXPECT_CALL(foo, Call())
+      .WillOnce(Return(1))
+      .WillOnce(Return(2));
+  EXPECT_EQ(1, foo.Call());
+  EXPECT_EQ(2, foo.Call());
+}
+
+TEST(MockFunctionTest, WorksForVoidUnary) {
+  MockFunction<void(int)> foo;
+  EXPECT_CALL(foo, Call(1));
+  foo.Call(1);
+}
+
+TEST(MockFunctionTest, WorksForNonVoidBinary) {
+  MockFunction<int(bool, int)> foo;
+  EXPECT_CALL(foo, Call(false, 42))
+      .WillOnce(Return(1))
+      .WillOnce(Return(2));
+  EXPECT_CALL(foo, Call(true, Ge(100)))
+      .WillOnce(Return(3));
+  EXPECT_EQ(1, foo.Call(false, 42));
+  EXPECT_EQ(2, foo.Call(false, 42));
+  EXPECT_EQ(3, foo.Call(true, 120));
+}
+
+TEST(MockFunctionTest, WorksFor10Arguments) {
+  MockFunction<int(bool a0, char a1, int a2, int a3, int a4,
+                   int a5, int a6, char a7, int a8, bool a9)> foo;
+  EXPECT_CALL(foo, Call(_, 'a', _, _, _, _, _, _, _, _))
+      .WillOnce(Return(1))
+      .WillOnce(Return(2));
+  EXPECT_EQ(1, foo.Call(false, 'a', 0, 0, 0, 0, 0, 'b', 0, true));
+  EXPECT_EQ(2, foo.Call(true, 'a', 0, 0, 0, 0, 0, 'b', 1, false));
+}
+
+}  // namespace gmock_generated_function_mockers_test
+}  // namespace testing
diff --git a/google-breakpad/src/testing/test/gmock-generated-internal-utils_test.cc b/google-breakpad/src/testing/test/gmock-generated-internal-utils_test.cc
new file mode 100644
index 0000000..1156c7d
--- /dev/null
+++ b/google-breakpad/src/testing/test/gmock-generated-internal-utils_test.cc
@@ -0,0 +1,127 @@
+// Copyright 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Google Mock - a framework for writing C++ mock classes.
+//
+// This file tests the internal utilities.
+
+#include "gmock/internal/gmock-generated-internal-utils.h"
+#include "gmock/internal/gmock-internal-utils.h"
+#include "gtest/gtest.h"
+
+namespace {
+
+using ::std::tr1::tuple;
+using ::testing::Matcher;
+using ::testing::internal::CompileAssertTypesEqual;
+using ::testing::internal::MatcherTuple;
+using ::testing::internal::Function;
+using ::testing::internal::IgnoredValue;
+
+// Tests the MatcherTuple template struct.
+
+TEST(MatcherTupleTest, ForSize0) {
+  CompileAssertTypesEqual<tuple<>, MatcherTuple<tuple<> >::type>();
+}
+
+TEST(MatcherTupleTest, ForSize1) {
+  CompileAssertTypesEqual<tuple<Matcher<int> >,
+                          MatcherTuple<tuple<int> >::type>();
+}
+
+TEST(MatcherTupleTest, ForSize2) {
+  CompileAssertTypesEqual<tuple<Matcher<int>, Matcher<char> >,
+                          MatcherTuple<tuple<int, char> >::type>();
+}
+
+TEST(MatcherTupleTest, ForSize5) {
+  CompileAssertTypesEqual<tuple<Matcher<int>, Matcher<char>, Matcher<bool>,
+                                Matcher<double>, Matcher<char*> >,
+                          MatcherTuple<tuple<int, char, bool, double, char*>
+                                      >::type>();
+}
+
+// Tests the Function template struct.
+
+TEST(FunctionTest, Nullary) {
+  typedef Function<int()> F;  // NOLINT
+  CompileAssertTypesEqual<int, F::Result>();
+  CompileAssertTypesEqual<tuple<>, F::ArgumentTuple>();
+  CompileAssertTypesEqual<tuple<>, F::ArgumentMatcherTuple>();
+  CompileAssertTypesEqual<void(), F::MakeResultVoid>();
+  CompileAssertTypesEqual<IgnoredValue(), F::MakeResultIgnoredValue>();
+}
+
+TEST(FunctionTest, Unary) {
+  typedef Function<int(bool)> F;  // NOLINT
+  CompileAssertTypesEqual<int, F::Result>();
+  CompileAssertTypesEqual<bool, F::Argument1>();
+  CompileAssertTypesEqual<tuple<bool>, F::ArgumentTuple>();
+  CompileAssertTypesEqual<tuple<Matcher<bool> >, F::ArgumentMatcherTuple>();
+  CompileAssertTypesEqual<void(bool), F::MakeResultVoid>();  // NOLINT
+  CompileAssertTypesEqual<IgnoredValue(bool),  // NOLINT
+      F::MakeResultIgnoredValue>();
+}
+
+TEST(FunctionTest, Binary) {
+  typedef Function<int(bool, const long&)> F;  // NOLINT
+  CompileAssertTypesEqual<int, F::Result>();
+  CompileAssertTypesEqual<bool, F::Argument1>();
+  CompileAssertTypesEqual<const long&, F::Argument2>();  // NOLINT
+  CompileAssertTypesEqual<tuple<bool, const long&>, F::ArgumentTuple>();  // NOLINT
+  CompileAssertTypesEqual<tuple<Matcher<bool>, Matcher<const long&> >,  // NOLINT
+                          F::ArgumentMatcherTuple>();
+  CompileAssertTypesEqual<void(bool, const long&), F::MakeResultVoid>();  // NOLINT
+  CompileAssertTypesEqual<IgnoredValue(bool, const long&),  // NOLINT
+      F::MakeResultIgnoredValue>();
+}
+
+TEST(FunctionTest, LongArgumentList) {
+  typedef Function<char(bool, int, char*, int&, const long&)> F;  // NOLINT
+  CompileAssertTypesEqual<char, F::Result>();
+  CompileAssertTypesEqual<bool, F::Argument1>();
+  CompileAssertTypesEqual<int, F::Argument2>();
+  CompileAssertTypesEqual<char*, F::Argument3>();
+  CompileAssertTypesEqual<int&, F::Argument4>();
+  CompileAssertTypesEqual<const long&, F::Argument5>();  // NOLINT
+  CompileAssertTypesEqual<tuple<bool, int, char*, int&, const long&>,  // NOLINT
+                          F::ArgumentTuple>();
+  CompileAssertTypesEqual<tuple<Matcher<bool>, Matcher<int>, Matcher<char*>,
+                                Matcher<int&>, Matcher<const long&> >,  // NOLINT
+                          F::ArgumentMatcherTuple>();
+  CompileAssertTypesEqual<void(bool, int, char*, int&, const long&),  // NOLINT
+                          F::MakeResultVoid>();
+  CompileAssertTypesEqual<
+      IgnoredValue(bool, int, char*, int&, const long&),  // NOLINT
+      F::MakeResultIgnoredValue>();
+}
+
+}  // Unnamed namespace
diff --git a/google-breakpad/src/testing/test/gmock-generated-matchers_test.cc b/google-breakpad/src/testing/test/gmock-generated-matchers_test.cc
new file mode 100644
index 0000000..b35c450
--- /dev/null
+++ b/google-breakpad/src/testing/test/gmock-generated-matchers_test.cc
@@ -0,0 +1,1141 @@
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Google Mock - a framework for writing C++ mock classes.
+//
+// This file tests the built-in matchers generated by a script.
+
+#include "gmock/gmock-generated-matchers.h"
+
+#include <list>
+#include <map>
+#include <set>
+#include <sstream>
+#include <string>
+#include <utility>
+#include <vector>
+
+#include "gmock/gmock.h"
+#include "gtest/gtest.h"
+#include "gtest/gtest-spi.h"
+
+namespace {
+
+using std::list;
+using std::map;
+using std::pair;
+using std::set;
+using std::stringstream;
+using std::vector;
+using std::tr1::get;
+using std::tr1::make_tuple;
+using std::tr1::tuple;
+using testing::_;
+using testing::Args;
+using testing::Contains;
+using testing::ElementsAre;
+using testing::ElementsAreArray;
+using testing::Eq;
+using testing::Ge;
+using testing::Gt;
+using testing::Lt;
+using testing::MakeMatcher;
+using testing::Matcher;
+using testing::MatcherInterface;
+using testing::MatchResultListener;
+using testing::Ne;
+using testing::Not;
+using testing::Pointee;
+using testing::PrintToString;
+using testing::Ref;
+using testing::StaticAssertTypeEq;
+using testing::StrEq;
+using testing::Value;
+using testing::internal::string;
+
+// Returns the description of the given matcher.
+template <typename T>
+string Describe(const Matcher<T>& m) {
+  stringstream ss;
+  m.DescribeTo(&ss);
+  return ss.str();
+}
+
+// Returns the description of the negation of the given matcher.
+template <typename T>
+string DescribeNegation(const Matcher<T>& m) {
+  stringstream ss;
+  m.DescribeNegationTo(&ss);
+  return ss.str();
+}
+
+// Returns the reason why x matches, or doesn't match, m.
+template <typename MatcherType, typename Value>
+string Explain(const MatcherType& m, const Value& x) {
+  stringstream ss;
+  m.ExplainMatchResultTo(x, &ss);
+  return ss.str();
+}
+
+// Tests Args<k0, ..., kn>(m).
+
+TEST(ArgsTest, AcceptsZeroTemplateArg) {
+  const tuple<int, bool> t(5, true);
+  EXPECT_THAT(t, Args<>(Eq(tuple<>())));
+  EXPECT_THAT(t, Not(Args<>(Ne(tuple<>()))));
+}
+
+TEST(ArgsTest, AcceptsOneTemplateArg) {
+  const tuple<int, bool> t(5, true);
+  EXPECT_THAT(t, Args<0>(Eq(make_tuple(5))));
+  EXPECT_THAT(t, Args<1>(Eq(make_tuple(true))));
+  EXPECT_THAT(t, Not(Args<1>(Eq(make_tuple(false)))));
+}
+
+TEST(ArgsTest, AcceptsTwoTemplateArgs) {
+  const tuple<short, int, long> t(4, 5, 6L);  // NOLINT
+
+  EXPECT_THAT(t, (Args<0, 1>(Lt())));
+  EXPECT_THAT(t, (Args<1, 2>(Lt())));
+  EXPECT_THAT(t, Not(Args<0, 2>(Gt())));
+}
+
+TEST(ArgsTest, AcceptsRepeatedTemplateArgs) {
+  const tuple<short, int, long> t(4, 5, 6L);  // NOLINT
+  EXPECT_THAT(t, (Args<0, 0>(Eq())));
+  EXPECT_THAT(t, Not(Args<1, 1>(Ne())));
+}
+
+TEST(ArgsTest, AcceptsDecreasingTemplateArgs) {
+  const tuple<short, int, long> t(4, 5, 6L);  // NOLINT
+  EXPECT_THAT(t, (Args<2, 0>(Gt())));
+  EXPECT_THAT(t, Not(Args<2, 1>(Lt())));
+}
+
+// The MATCHER*() macros trigger warning C4100 (unreferenced formal
+// parameter) in MSVC with -W4.  Unfortunately they cannot be fixed in
+// the macro definition, as the warnings are generated when the macro
+// is expanded and macro expansion cannot contain #pragma.  Therefore
+// we suppress them here.
+#ifdef _MSC_VER
+# pragma warning(push)
+# pragma warning(disable:4100)
+#endif
+
+MATCHER(SumIsZero, "") {
+  return get<0>(arg) + get<1>(arg) + get<2>(arg) == 0;
+}
+
+TEST(ArgsTest, AcceptsMoreTemplateArgsThanArityOfOriginalTuple) {
+  EXPECT_THAT(make_tuple(-1, 2), (Args<0, 0, 1>(SumIsZero())));
+  EXPECT_THAT(make_tuple(1, 2), Not(Args<0, 0, 1>(SumIsZero())));
+}
+
+TEST(ArgsTest, CanBeNested) {
+  const tuple<short, int, long, int> t(4, 5, 6L, 6);  // NOLINT
+  EXPECT_THAT(t, (Args<1, 2, 3>(Args<1, 2>(Eq()))));
+  EXPECT_THAT(t, (Args<0, 1, 3>(Args<0, 2>(Lt()))));
+}
+
+TEST(ArgsTest, CanMatchTupleByValue) {
+  typedef tuple<char, int, int> Tuple3;
+  const Matcher<Tuple3> m = Args<1, 2>(Lt());
+  EXPECT_TRUE(m.Matches(Tuple3('a', 1, 2)));
+  EXPECT_FALSE(m.Matches(Tuple3('b', 2, 2)));
+}
+
+TEST(ArgsTest, CanMatchTupleByReference) {
+  typedef tuple<char, char, int> Tuple3;
+  const Matcher<const Tuple3&> m = Args<0, 1>(Lt());
+  EXPECT_TRUE(m.Matches(Tuple3('a', 'b', 2)));
+  EXPECT_FALSE(m.Matches(Tuple3('b', 'b', 2)));
+}
+
+// Validates that arg is printed as str.
+MATCHER_P(PrintsAs, str, "") {
+  return testing::PrintToString(arg) == str;
+}
+
+TEST(ArgsTest, AcceptsTenTemplateArgs) {
+  EXPECT_THAT(make_tuple(0, 1L, 2, 3L, 4, 5, 6, 7, 8, 9),
+              (Args<9, 8, 7, 6, 5, 4, 3, 2, 1, 0>(
+                  PrintsAs("(9, 8, 7, 6, 5, 4, 3, 2, 1, 0)"))));
+  EXPECT_THAT(make_tuple(0, 1L, 2, 3L, 4, 5, 6, 7, 8, 9),
+              Not(Args<9, 8, 7, 6, 5, 4, 3, 2, 1, 0>(
+                      PrintsAs("(0, 8, 7, 6, 5, 4, 3, 2, 1, 0)"))));
+}
+
+TEST(ArgsTest, DescirbesSelfCorrectly) {
+  const Matcher<tuple<int, bool, char> > m = Args<2, 0>(Lt());
+  EXPECT_EQ("are a tuple whose fields (#2, #0) are a pair where "
+            "the first < the second",
+            Describe(m));
+}
+
+TEST(ArgsTest, DescirbesNestedArgsCorrectly) {
+  const Matcher<const tuple<int, bool, char, int>&> m =
+      Args<0, 2, 3>(Args<2, 0>(Lt()));
+  EXPECT_EQ("are a tuple whose fields (#0, #2, #3) are a tuple "
+            "whose fields (#2, #0) are a pair where the first < the second",
+            Describe(m));
+}
+
+TEST(ArgsTest, DescribesNegationCorrectly) {
+  const Matcher<tuple<int, char> > m = Args<1, 0>(Gt());
+  EXPECT_EQ("are a tuple whose fields (#1, #0) aren't a pair "
+            "where the first > the second",
+            DescribeNegation(m));
+}
+
+TEST(ArgsTest, ExplainsMatchResultWithoutInnerExplanation) {
+  const Matcher<tuple<bool, int, int> > m = Args<1, 2>(Eq());
+  EXPECT_EQ("whose fields (#1, #2) are (42, 42)",
+            Explain(m, make_tuple(false, 42, 42)));
+  EXPECT_EQ("whose fields (#1, #2) are (42, 43)",
+            Explain(m, make_tuple(false, 42, 43)));
+}
+
+// For testing Args<>'s explanation.
+class LessThanMatcher : public MatcherInterface<tuple<char, int> > {
+ public:
+  virtual void DescribeTo(::std::ostream* os) const {}
+
+  virtual bool MatchAndExplain(tuple<char, int> value,
+                               MatchResultListener* listener) const {
+    const int diff = get<0>(value) - get<1>(value);
+    if (diff > 0) {
+      *listener << "where the first value is " << diff
+                << " more than the second";
+    }
+    return diff < 0;
+  }
+};
+
+Matcher<tuple<char, int> > LessThan() {
+  return MakeMatcher(new LessThanMatcher);
+}
+
+TEST(ArgsTest, ExplainsMatchResultWithInnerExplanation) {
+  const Matcher<tuple<char, int, int> > m = Args<0, 2>(LessThan());
+  EXPECT_EQ("whose fields (#0, #2) are ('a' (97, 0x61), 42), "
+            "where the first value is 55 more than the second",
+            Explain(m, make_tuple('a', 42, 42)));
+  EXPECT_EQ("whose fields (#0, #2) are ('\\0', 43)",
+            Explain(m, make_tuple('\0', 42, 43)));
+}
+
+// For testing ExplainMatchResultTo().
+class GreaterThanMatcher : public MatcherInterface<int> {
+ public:
+  explicit GreaterThanMatcher(int rhs) : rhs_(rhs) {}
+
+  virtual void DescribeTo(::std::ostream* os) const {
+    *os << "is greater than " << rhs_;
+  }
+
+  virtual bool MatchAndExplain(int lhs,
+                               MatchResultListener* listener) const {
+    const int diff = lhs - rhs_;
+    if (diff > 0) {
+      *listener << "which is " << diff << " more than " << rhs_;
+    } else if (diff == 0) {
+      *listener << "which is the same as " << rhs_;
+    } else {
+      *listener << "which is " << -diff << " less than " << rhs_;
+    }
+
+    return lhs > rhs_;
+  }
+
+ private:
+  int rhs_;
+};
+
+Matcher<int> GreaterThan(int n) {
+  return MakeMatcher(new GreaterThanMatcher(n));
+}
+
+// Tests for ElementsAre().
+
+// Evaluates to the number of elements in 'array'.
+#define GMOCK_ARRAY_SIZE_(array) (sizeof(array)/sizeof(array[0]))
+
+TEST(ElementsAreTest, CanDescribeExpectingNoElement) {
+  Matcher<const vector<int>&> m = ElementsAre();
+  EXPECT_EQ("is empty", Describe(m));
+}
+
+TEST(ElementsAreTest, CanDescribeExpectingOneElement) {
+  Matcher<vector<int> > m = ElementsAre(Gt(5));
+  EXPECT_EQ("has 1 element that is > 5", Describe(m));
+}
+
+TEST(ElementsAreTest, CanDescribeExpectingManyElements) {
+  Matcher<list<string> > m = ElementsAre(StrEq("one"), "two");
+  EXPECT_EQ("has 2 elements where\n"
+            "element #0 is equal to \"one\",\n"
+            "element #1 is equal to \"two\"", Describe(m));
+}
+
+TEST(ElementsAreTest, CanDescribeNegationOfExpectingNoElement) {
+  Matcher<vector<int> > m = ElementsAre();
+  EXPECT_EQ("isn't empty", DescribeNegation(m));
+}
+
+TEST(ElementsAreTest, CanDescribeNegationOfExpectingOneElment) {
+  Matcher<const list<int>& > m = ElementsAre(Gt(5));
+  EXPECT_EQ("doesn't have 1 element, or\n"
+            "element #0 isn't > 5", DescribeNegation(m));
+}
+
+TEST(ElementsAreTest, CanDescribeNegationOfExpectingManyElements) {
+  Matcher<const list<string>& > m = ElementsAre("one", "two");
+  EXPECT_EQ("doesn't have 2 elements, or\n"
+            "element #0 isn't equal to \"one\", or\n"
+            "element #1 isn't equal to \"two\"", DescribeNegation(m));
+}
+
+TEST(ElementsAreTest, DoesNotExplainTrivialMatch) {
+  Matcher<const list<int>& > m = ElementsAre(1, Ne(2));
+
+  list<int> test_list;
+  test_list.push_back(1);
+  test_list.push_back(3);
+  EXPECT_EQ("", Explain(m, test_list));  // No need to explain anything.
+}
+
+TEST(ElementsAreTest, ExplainsNonTrivialMatch) {
+  Matcher<const vector<int>& > m =
+      ElementsAre(GreaterThan(1), 0, GreaterThan(2));
+
+  const int a[] = { 10, 0, 100 };
+  vector<int> test_vector(a, a + GMOCK_ARRAY_SIZE_(a));
+  EXPECT_EQ("whose element #0 matches, which is 9 more than 1,\n"
+            "and whose element #2 matches, which is 98 more than 2",
+            Explain(m, test_vector));
+}
+
+TEST(ElementsAreTest, CanExplainMismatchWrongSize) {
+  Matcher<const list<int>& > m = ElementsAre(1, 3);
+
+  list<int> test_list;
+  // No need to explain when the container is empty.
+  EXPECT_EQ("", Explain(m, test_list));
+
+  test_list.push_back(1);
+  EXPECT_EQ("which has 1 element", Explain(m, test_list));
+}
+
+TEST(ElementsAreTest, CanExplainMismatchRightSize) {
+  Matcher<const vector<int>& > m = ElementsAre(1, GreaterThan(5));
+
+  vector<int> v;
+  v.push_back(2);
+  v.push_back(1);
+  EXPECT_EQ("whose element #0 doesn't match", Explain(m, v));
+
+  v[0] = 1;
+  EXPECT_EQ("whose element #1 doesn't match, which is 4 less than 5",
+            Explain(m, v));
+}
+
+TEST(ElementsAreTest, MatchesOneElementVector) {
+  vector<string> test_vector;
+  test_vector.push_back("test string");
+
+  EXPECT_THAT(test_vector, ElementsAre(StrEq("test string")));
+}
+
+TEST(ElementsAreTest, MatchesOneElementList) {
+  list<string> test_list;
+  test_list.push_back("test string");
+
+  EXPECT_THAT(test_list, ElementsAre("test string"));
+}
+
+TEST(ElementsAreTest, MatchesThreeElementVector) {
+  vector<string> test_vector;
+  test_vector.push_back("one");
+  test_vector.push_back("two");
+  test_vector.push_back("three");
+
+  EXPECT_THAT(test_vector, ElementsAre("one", StrEq("two"), _));
+}
+
+TEST(ElementsAreTest, MatchesOneElementEqMatcher) {
+  vector<int> test_vector;
+  test_vector.push_back(4);
+
+  EXPECT_THAT(test_vector, ElementsAre(Eq(4)));
+}
+
+TEST(ElementsAreTest, MatchesOneElementAnyMatcher) {
+  vector<int> test_vector;
+  test_vector.push_back(4);
+
+  EXPECT_THAT(test_vector, ElementsAre(_));
+}
+
+TEST(ElementsAreTest, MatchesOneElementValue) {
+  vector<int> test_vector;
+  test_vector.push_back(4);
+
+  EXPECT_THAT(test_vector, ElementsAre(4));
+}
+
+TEST(ElementsAreTest, MatchesThreeElementsMixedMatchers) {
+  vector<int> test_vector;
+  test_vector.push_back(1);
+  test_vector.push_back(2);
+  test_vector.push_back(3);
+
+  EXPECT_THAT(test_vector, ElementsAre(1, Eq(2), _));
+}
+
+TEST(ElementsAreTest, MatchesTenElementVector) {
+  const int a[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
+  vector<int> test_vector(a, a + GMOCK_ARRAY_SIZE_(a));
+
+  EXPECT_THAT(test_vector,
+              // The element list can contain values and/or matchers
+              // of different types.
+              ElementsAre(0, Ge(0), _, 3, 4, Ne(2), Eq(6), 7, 8, _));
+}
+
+TEST(ElementsAreTest, DoesNotMatchWrongSize) {
+  vector<string> test_vector;
+  test_vector.push_back("test string");
+  test_vector.push_back("test string");
+
+  Matcher<vector<string> > m = ElementsAre(StrEq("test string"));
+  EXPECT_FALSE(m.Matches(test_vector));
+}
+
+TEST(ElementsAreTest, DoesNotMatchWrongValue) {
+  vector<string> test_vector;
+  test_vector.push_back("other string");
+
+  Matcher<vector<string> > m = ElementsAre(StrEq("test string"));
+  EXPECT_FALSE(m.Matches(test_vector));
+}
+
+TEST(ElementsAreTest, DoesNotMatchWrongOrder) {
+  vector<string> test_vector;
+  test_vector.push_back("one");
+  test_vector.push_back("three");
+  test_vector.push_back("two");
+
+  Matcher<vector<string> > m = ElementsAre(
+    StrEq("one"), StrEq("two"), StrEq("three"));
+  EXPECT_FALSE(m.Matches(test_vector));
+}
+
+TEST(ElementsAreTest, WorksForNestedContainer) {
+  const char* strings[] = {
+    "Hi",
+    "world"
+  };
+
+  vector<list<char> > nested;
+  for (size_t i = 0; i < GMOCK_ARRAY_SIZE_(strings); i++) {
+    nested.push_back(list<char>(strings[i], strings[i] + strlen(strings[i])));
+  }
+
+  EXPECT_THAT(nested, ElementsAre(ElementsAre('H', Ne('e')),
+                                  ElementsAre('w', 'o', _, _, 'd')));
+  EXPECT_THAT(nested, Not(ElementsAre(ElementsAre('H', 'e'),
+                                      ElementsAre('w', 'o', _, _, 'd'))));
+}
+
+TEST(ElementsAreTest, WorksWithByRefElementMatchers) {
+  int a[] = { 0, 1, 2 };
+  vector<int> v(a, a + GMOCK_ARRAY_SIZE_(a));
+
+  EXPECT_THAT(v, ElementsAre(Ref(v[0]), Ref(v[1]), Ref(v[2])));
+  EXPECT_THAT(v, Not(ElementsAre(Ref(v[0]), Ref(v[1]), Ref(a[2]))));
+}
+
+TEST(ElementsAreTest, WorksWithContainerPointerUsingPointee) {
+  int a[] = { 0, 1, 2 };
+  vector<int> v(a, a + GMOCK_ARRAY_SIZE_(a));
+
+  EXPECT_THAT(&v, Pointee(ElementsAre(0, 1, _)));
+  EXPECT_THAT(&v, Not(Pointee(ElementsAre(0, _, 3))));
+}
+
+TEST(ElementsAreTest, WorksWithNativeArrayPassedByReference) {
+  int array[] = { 0, 1, 2 };
+  EXPECT_THAT(array, ElementsAre(0, 1, _));
+  EXPECT_THAT(array, Not(ElementsAre(1, _, _)));
+  EXPECT_THAT(array, Not(ElementsAre(0, _)));
+}
+
+class NativeArrayPassedAsPointerAndSize {
+ public:
+  NativeArrayPassedAsPointerAndSize() {}
+
+  MOCK_METHOD2(Helper, void(int* array, int size));
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(NativeArrayPassedAsPointerAndSize);
+};
+
+TEST(ElementsAreTest, WorksWithNativeArrayPassedAsPointerAndSize) {
+  int array[] = { 0, 1 };
+  ::std::tr1::tuple<int*, size_t> array_as_tuple(array, 2);
+  EXPECT_THAT(array_as_tuple, ElementsAre(0, 1));
+  EXPECT_THAT(array_as_tuple, Not(ElementsAre(0)));
+
+  NativeArrayPassedAsPointerAndSize helper;
+  EXPECT_CALL(helper, Helper(_, _))
+      .With(ElementsAre(0, 1));
+  helper.Helper(array, 2);
+}
+
+TEST(ElementsAreTest, WorksWithTwoDimensionalNativeArray) {
+  const char a2[][3] = { "hi", "lo" };
+  EXPECT_THAT(a2, ElementsAre(ElementsAre('h', 'i', '\0'),
+                              ElementsAre('l', 'o', '\0')));
+  EXPECT_THAT(a2, ElementsAre(StrEq("hi"), StrEq("lo")));
+  EXPECT_THAT(a2, ElementsAre(Not(ElementsAre('h', 'o', '\0')),
+                              ElementsAre('l', 'o', '\0')));
+}
+
+// Tests for ElementsAreArray().  Since ElementsAreArray() shares most
+// of the implementation with ElementsAre(), we don't test it as
+// thoroughly here.
+
+TEST(ElementsAreArrayTest, CanBeCreatedWithValueArray) {
+  const int a[] = { 1, 2, 3 };
+
+  vector<int> test_vector(a, a + GMOCK_ARRAY_SIZE_(a));
+  EXPECT_THAT(test_vector, ElementsAreArray(a));
+
+  test_vector[2] = 0;
+  EXPECT_THAT(test_vector, Not(ElementsAreArray(a)));
+}
+
+TEST(ElementsAreArrayTest, CanBeCreatedWithArraySize) {
+  const char* a[] = { "one", "two", "three" };
+
+  vector<string> test_vector(a, a + GMOCK_ARRAY_SIZE_(a));
+  EXPECT_THAT(test_vector, ElementsAreArray(a, GMOCK_ARRAY_SIZE_(a)));
+
+  const char** p = a;
+  test_vector[0] = "1";
+  EXPECT_THAT(test_vector, Not(ElementsAreArray(p, GMOCK_ARRAY_SIZE_(a))));
+}
+
+TEST(ElementsAreArrayTest, CanBeCreatedWithoutArraySize) {
+  const char* a[] = { "one", "two", "three" };
+
+  vector<string> test_vector(a, a + GMOCK_ARRAY_SIZE_(a));
+  EXPECT_THAT(test_vector, ElementsAreArray(a));
+
+  test_vector[0] = "1";
+  EXPECT_THAT(test_vector, Not(ElementsAreArray(a)));
+}
+
+TEST(ElementsAreArrayTest, CanBeCreatedWithMatcherArray) {
+  const Matcher<string> kMatcherArray[] =
+    { StrEq("one"), StrEq("two"), StrEq("three") };
+
+  vector<string> test_vector;
+  test_vector.push_back("one");
+  test_vector.push_back("two");
+  test_vector.push_back("three");
+  EXPECT_THAT(test_vector, ElementsAreArray(kMatcherArray));
+
+  test_vector.push_back("three");
+  EXPECT_THAT(test_vector, Not(ElementsAreArray(kMatcherArray)));
+}
+
+// Since ElementsAre() and ElementsAreArray() share much of the
+// implementation, we only do a sanity test for native arrays here.
+TEST(ElementsAreArrayTest, WorksWithNativeArray) {
+  ::std::string a[] = { "hi", "ho" };
+  ::std::string b[] = { "hi", "ho" };
+
+  EXPECT_THAT(a, ElementsAreArray(b));
+  EXPECT_THAT(a, ElementsAreArray(b, 2));
+  EXPECT_THAT(a, Not(ElementsAreArray(b, 1)));
+}
+
+// Tests for the MATCHER*() macro family.
+
+// Tests that a simple MATCHER() definition works.
+
+MATCHER(IsEven, "") { return (arg % 2) == 0; }
+
+TEST(MatcherMacroTest, Works) {
+  const Matcher<int> m = IsEven();
+  EXPECT_TRUE(m.Matches(6));
+  EXPECT_FALSE(m.Matches(7));
+
+  EXPECT_EQ("is even", Describe(m));
+  EXPECT_EQ("not (is even)", DescribeNegation(m));
+  EXPECT_EQ("", Explain(m, 6));
+  EXPECT_EQ("", Explain(m, 7));
+}
+
+// This also tests that the description string can reference 'negation'.
+MATCHER(IsEven2, negation ? "is odd" : "is even") {
+  if ((arg % 2) == 0) {
+    // Verifies that we can stream to result_listener, a listener
+    // supplied by the MATCHER macro implicitly.
+    *result_listener << "OK";
+    return true;
+  } else {
+    *result_listener << "% 2 == " << (arg % 2);
+    return false;
+  }
+}
+
+// This also tests that the description string can reference matcher
+// parameters.
+MATCHER_P2(EqSumOf, x, y,
+           string(negation ? "doesn't equal" : "equals") + " the sum of " +
+           PrintToString(x) + " and " + PrintToString(y)) {
+  if (arg == (x + y)) {
+    *result_listener << "OK";
+    return true;
+  } else {
+    // Verifies that we can stream to the underlying stream of
+    // result_listener.
+    if (result_listener->stream() != NULL) {
+      *result_listener->stream() << "diff == " << (x + y - arg);
+    }
+    return false;
+  }
+}
+
+// Tests that the matcher description can reference 'negation' and the
+// matcher parameters.
+TEST(MatcherMacroTest, DescriptionCanReferenceNegationAndParameters) {
+  const Matcher<int> m1 = IsEven2();
+  EXPECT_EQ("is even", Describe(m1));
+  EXPECT_EQ("is odd", DescribeNegation(m1));
+
+  const Matcher<int> m2 = EqSumOf(5, 9);
+  EXPECT_EQ("equals the sum of 5 and 9", Describe(m2));
+  EXPECT_EQ("doesn't equal the sum of 5 and 9", DescribeNegation(m2));
+}
+
+// Tests explaining match result in a MATCHER* macro.
+TEST(MatcherMacroTest, CanExplainMatchResult) {
+  const Matcher<int> m1 = IsEven2();
+  EXPECT_EQ("OK", Explain(m1, 4));
+  EXPECT_EQ("% 2 == 1", Explain(m1, 5));
+
+  const Matcher<int> m2 = EqSumOf(1, 2);
+  EXPECT_EQ("OK", Explain(m2, 3));
+  EXPECT_EQ("diff == -1", Explain(m2, 4));
+}
+
+// Tests that the body of MATCHER() can reference the type of the
+// value being matched.
+
+MATCHER(IsEmptyString, "") {
+  StaticAssertTypeEq< ::std::string, arg_type>();
+  return arg == "";
+}
+
+MATCHER(IsEmptyStringByRef, "") {
+  StaticAssertTypeEq<const ::std::string&, arg_type>();
+  return arg == "";
+}
+
+TEST(MatcherMacroTest, CanReferenceArgType) {
+  const Matcher< ::std::string> m1 = IsEmptyString();
+  EXPECT_TRUE(m1.Matches(""));
+
+  const Matcher<const ::std::string&> m2 = IsEmptyStringByRef();
+  EXPECT_TRUE(m2.Matches(""));
+}
+
+// Tests that MATCHER() can be used in a namespace.
+
+namespace matcher_test {
+MATCHER(IsOdd, "") { return (arg % 2) != 0; }
+}  // namespace matcher_test
+
+TEST(MatcherMacroTest, WorksInNamespace) {
+  Matcher<int> m = matcher_test::IsOdd();
+  EXPECT_FALSE(m.Matches(4));
+  EXPECT_TRUE(m.Matches(5));
+}
+
+// Tests that Value() can be used to compose matchers.
+MATCHER(IsPositiveOdd, "") {
+  return Value(arg, matcher_test::IsOdd()) && arg > 0;
+}
+
+TEST(MatcherMacroTest, CanBeComposedUsingValue) {
+  EXPECT_THAT(3, IsPositiveOdd());
+  EXPECT_THAT(4, Not(IsPositiveOdd()));
+  EXPECT_THAT(-1, Not(IsPositiveOdd()));
+}
+
+// Tests that a simple MATCHER_P() definition works.
+
+MATCHER_P(IsGreaterThan32And, n, "") { return arg > 32 && arg > n; }
+
+TEST(MatcherPMacroTest, Works) {
+  const Matcher<int> m = IsGreaterThan32And(5);
+  EXPECT_TRUE(m.Matches(36));
+  EXPECT_FALSE(m.Matches(5));
+
+  EXPECT_EQ("is greater than 32 and 5", Describe(m));
+  EXPECT_EQ("not (is greater than 32 and 5)", DescribeNegation(m));
+  EXPECT_EQ("", Explain(m, 36));
+  EXPECT_EQ("", Explain(m, 5));
+}
+
+// Tests that the description is calculated correctly from the matcher name.
+MATCHER_P(_is_Greater_Than32and_, n, "") { return arg > 32 && arg > n; }
+
+TEST(MatcherPMacroTest, GeneratesCorrectDescription) {
+  const Matcher<int> m = _is_Greater_Than32and_(5);
+
+  EXPECT_EQ("is greater than 32 and 5", Describe(m));
+  EXPECT_EQ("not (is greater than 32 and 5)", DescribeNegation(m));
+  EXPECT_EQ("", Explain(m, 36));
+  EXPECT_EQ("", Explain(m, 5));
+}
+
+// Tests that a MATCHER_P matcher can be explicitly instantiated with
+// a reference parameter type.
+
+class UncopyableFoo {
+ public:
+  explicit UncopyableFoo(char value) : value_(value) {}
+ private:
+  UncopyableFoo(const UncopyableFoo&);
+  void operator=(const UncopyableFoo&);
+
+  char value_;
+};
+
+MATCHER_P(ReferencesUncopyable, variable, "") { return &arg == &variable; }
+
+TEST(MatcherPMacroTest, WorksWhenExplicitlyInstantiatedWithReference) {
+  UncopyableFoo foo1('1'), foo2('2');
+  const Matcher<const UncopyableFoo&> m =
+      ReferencesUncopyable<const UncopyableFoo&>(foo1);
+
+  EXPECT_TRUE(m.Matches(foo1));
+  EXPECT_FALSE(m.Matches(foo2));
+
+  // We don't want the address of the parameter printed, as most
+  // likely it will just annoy the user.  If the address is
+  // interesting, the user should consider passing the parameter by
+  // pointer instead.
+  EXPECT_EQ("references uncopyable 1-byte object <31>", Describe(m));
+}
+
+
+// Tests that the body of MATCHER_Pn() can reference the parameter
+// types.
+
+MATCHER_P3(ParamTypesAreIntLongAndChar, foo, bar, baz, "") {
+  StaticAssertTypeEq<int, foo_type>();
+  StaticAssertTypeEq<long, bar_type>();  // NOLINT
+  StaticAssertTypeEq<char, baz_type>();
+  return arg == 0;
+}
+
+TEST(MatcherPnMacroTest, CanReferenceParamTypes) {
+  EXPECT_THAT(0, ParamTypesAreIntLongAndChar(10, 20L, 'a'));
+}
+
+// Tests that a MATCHER_Pn matcher can be explicitly instantiated with
+// reference parameter types.
+
+MATCHER_P2(ReferencesAnyOf, variable1, variable2, "") {
+  return &arg == &variable1 || &arg == &variable2;
+}
+
+TEST(MatcherPnMacroTest, WorksWhenExplicitlyInstantiatedWithReferences) {
+  UncopyableFoo foo1('1'), foo2('2'), foo3('3');
+  const Matcher<const UncopyableFoo&> m =
+      ReferencesAnyOf<const UncopyableFoo&, const UncopyableFoo&>(foo1, foo2);
+
+  EXPECT_TRUE(m.Matches(foo1));
+  EXPECT_TRUE(m.Matches(foo2));
+  EXPECT_FALSE(m.Matches(foo3));
+}
+
+TEST(MatcherPnMacroTest,
+     GeneratesCorretDescriptionWhenExplicitlyInstantiatedWithReferences) {
+  UncopyableFoo foo1('1'), foo2('2');
+  const Matcher<const UncopyableFoo&> m =
+      ReferencesAnyOf<const UncopyableFoo&, const UncopyableFoo&>(foo1, foo2);
+
+  // We don't want the addresses of the parameters printed, as most
+  // likely they will just annoy the user.  If the addresses are
+  // interesting, the user should consider passing the parameters by
+  // pointers instead.
+  EXPECT_EQ("references any of (1-byte object <31>, 1-byte object <32>)",
+            Describe(m));
+}
+
+// Tests that a simple MATCHER_P2() definition works.
+
+MATCHER_P2(IsNotInClosedRange, low, hi, "") { return arg < low || arg > hi; }
+
+TEST(MatcherPnMacroTest, Works) {
+  const Matcher<const long&> m = IsNotInClosedRange(10, 20);  // NOLINT
+  EXPECT_TRUE(m.Matches(36L));
+  EXPECT_FALSE(m.Matches(15L));
+
+  EXPECT_EQ("is not in closed range (10, 20)", Describe(m));
+  EXPECT_EQ("not (is not in closed range (10, 20))", DescribeNegation(m));
+  EXPECT_EQ("", Explain(m, 36L));
+  EXPECT_EQ("", Explain(m, 15L));
+}
+
+// Tests that MATCHER*() definitions can be overloaded on the number
+// of parameters; also tests MATCHER_Pn() where n >= 3.
+
+MATCHER(EqualsSumOf, "") { return arg == 0; }
+MATCHER_P(EqualsSumOf, a, "") { return arg == a; }
+MATCHER_P2(EqualsSumOf, a, b, "") { return arg == a + b; }
+MATCHER_P3(EqualsSumOf, a, b, c, "") { return arg == a + b + c; }
+MATCHER_P4(EqualsSumOf, a, b, c, d, "") { return arg == a + b + c + d; }
+MATCHER_P5(EqualsSumOf, a, b, c, d, e, "") { return arg == a + b + c + d + e; }
+MATCHER_P6(EqualsSumOf, a, b, c, d, e, f, "") {
+  return arg == a + b + c + d + e + f;
+}
+MATCHER_P7(EqualsSumOf, a, b, c, d, e, f, g, "") {
+  return arg == a + b + c + d + e + f + g;
+}
+MATCHER_P8(EqualsSumOf, a, b, c, d, e, f, g, h, "") {
+  return arg == a + b + c + d + e + f + g + h;
+}
+MATCHER_P9(EqualsSumOf, a, b, c, d, e, f, g, h, i, "") {
+  return arg == a + b + c + d + e + f + g + h + i;
+}
+MATCHER_P10(EqualsSumOf, a, b, c, d, e, f, g, h, i, j, "") {
+  return arg == a + b + c + d + e + f + g + h + i + j;
+}
+
+TEST(MatcherPnMacroTest, CanBeOverloadedOnNumberOfParameters) {
+  EXPECT_THAT(0, EqualsSumOf());
+  EXPECT_THAT(1, EqualsSumOf(1));
+  EXPECT_THAT(12, EqualsSumOf(10, 2));
+  EXPECT_THAT(123, EqualsSumOf(100, 20, 3));
+  EXPECT_THAT(1234, EqualsSumOf(1000, 200, 30, 4));
+  EXPECT_THAT(12345, EqualsSumOf(10000, 2000, 300, 40, 5));
+  EXPECT_THAT("abcdef",
+              EqualsSumOf(::std::string("a"), 'b', 'c', "d", "e", 'f'));
+  EXPECT_THAT("abcdefg",
+              EqualsSumOf(::std::string("a"), 'b', 'c', "d", "e", 'f', 'g'));
+  EXPECT_THAT("abcdefgh",
+              EqualsSumOf(::std::string("a"), 'b', 'c', "d", "e", 'f', 'g',
+                          "h"));
+  EXPECT_THAT("abcdefghi",
+              EqualsSumOf(::std::string("a"), 'b', 'c', "d", "e", 'f', 'g',
+                          "h", 'i'));
+  EXPECT_THAT("abcdefghij",
+              EqualsSumOf(::std::string("a"), 'b', 'c', "d", "e", 'f', 'g',
+                          "h", 'i', ::std::string("j")));
+
+  EXPECT_THAT(1, Not(EqualsSumOf()));
+  EXPECT_THAT(-1, Not(EqualsSumOf(1)));
+  EXPECT_THAT(-12, Not(EqualsSumOf(10, 2)));
+  EXPECT_THAT(-123, Not(EqualsSumOf(100, 20, 3)));
+  EXPECT_THAT(-1234, Not(EqualsSumOf(1000, 200, 30, 4)));
+  EXPECT_THAT(-12345, Not(EqualsSumOf(10000, 2000, 300, 40, 5)));
+  EXPECT_THAT("abcdef ",
+              Not(EqualsSumOf(::std::string("a"), 'b', 'c', "d", "e", 'f')));
+  EXPECT_THAT("abcdefg ",
+              Not(EqualsSumOf(::std::string("a"), 'b', 'c', "d", "e", 'f',
+                              'g')));
+  EXPECT_THAT("abcdefgh ",
+              Not(EqualsSumOf(::std::string("a"), 'b', 'c', "d", "e", 'f', 'g',
+                              "h")));
+  EXPECT_THAT("abcdefghi ",
+              Not(EqualsSumOf(::std::string("a"), 'b', 'c', "d", "e", 'f', 'g',
+                              "h", 'i')));
+  EXPECT_THAT("abcdefghij ",
+              Not(EqualsSumOf(::std::string("a"), 'b', 'c', "d", "e", 'f', 'g',
+                              "h", 'i', ::std::string("j"))));
+}
+
+// Tests that a MATCHER_Pn() definition can be instantiated with any
+// compatible parameter types.
+TEST(MatcherPnMacroTest, WorksForDifferentParameterTypes) {
+  EXPECT_THAT(123, EqualsSumOf(100L, 20, static_cast<char>(3)));
+  EXPECT_THAT("abcd", EqualsSumOf(::std::string("a"), "b", 'c', "d"));
+
+  EXPECT_THAT(124, Not(EqualsSumOf(100L, 20, static_cast<char>(3))));
+  EXPECT_THAT("abcde", Not(EqualsSumOf(::std::string("a"), "b", 'c', "d")));
+}
+
+// Tests that the matcher body can promote the parameter types.
+
+MATCHER_P2(EqConcat, prefix, suffix, "") {
+  // The following lines promote the two parameters to desired types.
+  std::string prefix_str(prefix);
+  char suffix_char = static_cast<char>(suffix);
+  return arg == prefix_str + suffix_char;
+}
+
+TEST(MatcherPnMacroTest, SimpleTypePromotion) {
+  Matcher<std::string> no_promo =
+      EqConcat(std::string("foo"), 't');
+  Matcher<const std::string&> promo =
+      EqConcat("foo", static_cast<int>('t'));
+  EXPECT_FALSE(no_promo.Matches("fool"));
+  EXPECT_FALSE(promo.Matches("fool"));
+  EXPECT_TRUE(no_promo.Matches("foot"));
+  EXPECT_TRUE(promo.Matches("foot"));
+}
+
+// Verifies the type of a MATCHER*.
+
+TEST(MatcherPnMacroTest, TypesAreCorrect) {
+  // EqualsSumOf() must be assignable to a EqualsSumOfMatcher variable.
+  EqualsSumOfMatcher a0 = EqualsSumOf();
+
+  // EqualsSumOf(1) must be assignable to a EqualsSumOfMatcherP variable.
+  EqualsSumOfMatcherP<int> a1 = EqualsSumOf(1);
+
+  // EqualsSumOf(p1, ..., pk) must be assignable to a EqualsSumOfMatcherPk
+  // variable, and so on.
+  EqualsSumOfMatcherP2<int, char> a2 = EqualsSumOf(1, '2');
+  EqualsSumOfMatcherP3<int, int, char> a3 = EqualsSumOf(1, 2, '3');
+  EqualsSumOfMatcherP4<int, int, int, char> a4 = EqualsSumOf(1, 2, 3, '4');
+  EqualsSumOfMatcherP5<int, int, int, int, char> a5 =
+      EqualsSumOf(1, 2, 3, 4, '5');
+  EqualsSumOfMatcherP6<int, int, int, int, int, char> a6 =
+      EqualsSumOf(1, 2, 3, 4, 5, '6');
+  EqualsSumOfMatcherP7<int, int, int, int, int, int, char> a7 =
+      EqualsSumOf(1, 2, 3, 4, 5, 6, '7');
+  EqualsSumOfMatcherP8<int, int, int, int, int, int, int, char> a8 =
+      EqualsSumOf(1, 2, 3, 4, 5, 6, 7, '8');
+  EqualsSumOfMatcherP9<int, int, int, int, int, int, int, int, char> a9 =
+      EqualsSumOf(1, 2, 3, 4, 5, 6, 7, 8, '9');
+  EqualsSumOfMatcherP10<int, int, int, int, int, int, int, int, int, char> a10 =
+      EqualsSumOf(1, 2, 3, 4, 5, 6, 7, 8, 9, '0');
+}
+
+// Tests that matcher-typed parameters can be used in Value() inside a
+// MATCHER_Pn definition.
+
+// Succeeds if arg matches exactly 2 of the 3 matchers.
+MATCHER_P3(TwoOf, m1, m2, m3, "") {
+  const int count = static_cast<int>(Value(arg, m1))
+      + static_cast<int>(Value(arg, m2)) + static_cast<int>(Value(arg, m3));
+  return count == 2;
+}
+
+TEST(MatcherPnMacroTest, CanUseMatcherTypedParameterInValue) {
+  EXPECT_THAT(42, TwoOf(Gt(0), Lt(50), Eq(10)));
+  EXPECT_THAT(0, Not(TwoOf(Gt(-1), Lt(1), Eq(0))));
+}
+
+// Tests Contains().
+
+TEST(ContainsTest, ListMatchesWhenElementIsInContainer) {
+  list<int> some_list;
+  some_list.push_back(3);
+  some_list.push_back(1);
+  some_list.push_back(2);
+  EXPECT_THAT(some_list, Contains(1));
+  EXPECT_THAT(some_list, Contains(Gt(2.5)));
+  EXPECT_THAT(some_list, Contains(Eq(2.0f)));
+
+  list<string> another_list;
+  another_list.push_back("fee");
+  another_list.push_back("fie");
+  another_list.push_back("foe");
+  another_list.push_back("fum");
+  EXPECT_THAT(another_list, Contains(string("fee")));
+}
+
+TEST(ContainsTest, ListDoesNotMatchWhenElementIsNotInContainer) {
+  list<int> some_list;
+  some_list.push_back(3);
+  some_list.push_back(1);
+  EXPECT_THAT(some_list, Not(Contains(4)));
+}
+
+TEST(ContainsTest, SetMatchesWhenElementIsInContainer) {
+  set<int> some_set;
+  some_set.insert(3);
+  some_set.insert(1);
+  some_set.insert(2);
+  EXPECT_THAT(some_set, Contains(Eq(1.0)));
+  EXPECT_THAT(some_set, Contains(Eq(3.0f)));
+  EXPECT_THAT(some_set, Contains(2));
+
+  set<const char*> another_set;
+  another_set.insert("fee");
+  another_set.insert("fie");
+  another_set.insert("foe");
+  another_set.insert("fum");
+  EXPECT_THAT(another_set, Contains(Eq(string("fum"))));
+}
+
+TEST(ContainsTest, SetDoesNotMatchWhenElementIsNotInContainer) {
+  set<int> some_set;
+  some_set.insert(3);
+  some_set.insert(1);
+  EXPECT_THAT(some_set, Not(Contains(4)));
+
+  set<const char*> c_string_set;
+  c_string_set.insert("hello");
+  EXPECT_THAT(c_string_set, Not(Contains(string("hello").c_str())));
+}
+
+TEST(ContainsTest, ExplainsMatchResultCorrectly) {
+  const int a[2] = { 1, 2 };
+  Matcher<const int(&)[2]> m = Contains(2);
+  EXPECT_EQ("whose element #1 matches", Explain(m, a));
+
+  m = Contains(3);
+  EXPECT_EQ("", Explain(m, a));
+
+  m = Contains(GreaterThan(0));
+  EXPECT_EQ("whose element #0 matches, which is 1 more than 0", Explain(m, a));
+
+  m = Contains(GreaterThan(10));
+  EXPECT_EQ("", Explain(m, a));
+}
+
+TEST(ContainsTest, DescribesItselfCorrectly) {
+  Matcher<vector<int> > m = Contains(1);
+  EXPECT_EQ("contains at least one element that is equal to 1", Describe(m));
+
+  Matcher<vector<int> > m2 = Not(m);
+  EXPECT_EQ("doesn't contain any element that is equal to 1", Describe(m2));
+}
+
+TEST(ContainsTest, MapMatchesWhenElementIsInContainer) {
+  map<const char*, int> my_map;
+  const char* bar = "a string";
+  my_map[bar] = 2;
+  EXPECT_THAT(my_map, Contains(pair<const char* const, int>(bar, 2)));
+
+  map<string, int> another_map;
+  another_map["fee"] = 1;
+  another_map["fie"] = 2;
+  another_map["foe"] = 3;
+  another_map["fum"] = 4;
+  EXPECT_THAT(another_map, Contains(pair<const string, int>(string("fee"), 1)));
+  EXPECT_THAT(another_map, Contains(pair<const string, int>("fie", 2)));
+}
+
+TEST(ContainsTest, MapDoesNotMatchWhenElementIsNotInContainer) {
+  map<int, int> some_map;
+  some_map[1] = 11;
+  some_map[2] = 22;
+  EXPECT_THAT(some_map, Not(Contains(pair<const int, int>(2, 23))));
+}
+
+TEST(ContainsTest, ArrayMatchesWhenElementIsInContainer) {
+  const char* string_array[] = { "fee", "fie", "foe", "fum" };
+  EXPECT_THAT(string_array, Contains(Eq(string("fum"))));
+}
+
+TEST(ContainsTest, ArrayDoesNotMatchWhenElementIsNotInContainer) {
+  int int_array[] = { 1, 2, 3, 4 };
+  EXPECT_THAT(int_array, Not(Contains(5)));
+}
+
+TEST(ContainsTest, AcceptsMatcher) {
+  const int a[] = { 1, 2, 3 };
+  EXPECT_THAT(a, Contains(Gt(2)));
+  EXPECT_THAT(a, Not(Contains(Gt(4))));
+}
+
+TEST(ContainsTest, WorksForNativeArrayAsTuple) {
+  const int a[] = { 1, 2 };
+  const int* const pointer = a;
+  EXPECT_THAT(make_tuple(pointer, 2), Contains(1));
+  EXPECT_THAT(make_tuple(pointer, 2), Not(Contains(Gt(3))));
+}
+
+TEST(ContainsTest, WorksForTwoDimensionalNativeArray) {
+  int a[][3] = { { 1, 2, 3 }, { 4, 5, 6 } };
+  EXPECT_THAT(a, Contains(ElementsAre(4, 5, 6)));
+  EXPECT_THAT(a, Contains(Contains(5)));
+  EXPECT_THAT(a, Not(Contains(ElementsAre(3, 4, 5))));
+  EXPECT_THAT(a, Contains(Not(Contains(5))));
+}
+
+TEST(AllOfTest, HugeMatcher) {
+  // Verify that using AllOf with many arguments doesn't cause
+  // the compiler to exceed template instantiation depth limit.
+  EXPECT_THAT(0, testing::AllOf(_, _, _, _, _, _, _, _, _,
+                                testing::AllOf(_, _, _, _, _, _, _, _, _, _)));
+}
+
+TEST(AnyOfTest, HugeMatcher) {
+  // Verify that using AnyOf with many arguments doesn't cause
+  // the compiler to exceed template instantiation depth limit.
+  EXPECT_THAT(0, testing::AnyOf(_, _, _, _, _, _, _, _, _,
+                                testing::AnyOf(_, _, _, _, _, _, _, _, _, _)));
+}
+
+namespace adl_test {
+
+// Verifies that the implementation of ::testing::AllOf and ::testing::AnyOf
+// don't issue unqualified recursive calls.  If they do, the argument dependent
+// name lookup will cause AllOf/AnyOf in the 'adl_test' namespace to be found
+// as a candidate and the compilation will break due to an ambiguous overload.
+
+// The matcher must be in the same namespace as AllOf/AnyOf to make argument
+// dependent lookup find those.
+MATCHER(M, "") { return true; }
+
+template <typename T1, typename T2>
+bool AllOf(const T1& t1, const T2& t2) { return true; }
+
+TEST(AllOfTest, DoesNotCallAllOfUnqualified) {
+  EXPECT_THAT(42, testing::AllOf(
+      M(), M(), M(), M(), M(), M(), M(), M(), M(), M()));
+}
+
+template <typename T1, typename T2> bool
+AnyOf(const T1& t1, const T2& t2) { return true; }
+
+TEST(AnyOfTest, DoesNotCallAnyOfUnqualified) {
+  EXPECT_THAT(42, testing::AnyOf(
+      M(), M(), M(), M(), M(), M(), M(), M(), M(), M()));
+}
+
+}  // namespace adl_test
+
+#ifdef _MSC_VER
+# pragma warning(pop)
+#endif
+
+}  // namespace
diff --git a/google-breakpad/src/testing/test/gmock-internal-utils_test.cc b/google-breakpad/src/testing/test/gmock-internal-utils_test.cc
new file mode 100644
index 0000000..d53282e
--- /dev/null
+++ b/google-breakpad/src/testing/test/gmock-internal-utils_test.cc
@@ -0,0 +1,655 @@
+// Copyright 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Google Mock - a framework for writing C++ mock classes.
+//
+// This file tests the internal utilities.
+
+#include "gmock/internal/gmock-internal-utils.h"
+#include <stdlib.h>
+#include <map>
+#include <string>
+#include <sstream>
+#include <vector>
+#include "gmock/gmock.h"
+#include "gmock/internal/gmock-port.h"
+#include "gtest/gtest.h"
+#include "gtest/gtest-spi.h"
+
+#if GTEST_OS_CYGWIN
+# include <sys/types.h>  // For ssize_t. NOLINT
+#endif
+
+class ProtocolMessage;
+
+namespace proto2 {
+class Message;
+}  // namespace proto2
+
+namespace testing {
+namespace internal {
+
+namespace {
+
+using ::std::tr1::make_tuple;
+using ::std::tr1::tuple;
+
+TEST(ConvertIdentifierNameToWordsTest, WorksWhenNameContainsNoWord) {
+  EXPECT_EQ("", ConvertIdentifierNameToWords(""));
+  EXPECT_EQ("", ConvertIdentifierNameToWords("_"));
+  EXPECT_EQ("", ConvertIdentifierNameToWords("__"));
+}
+
+TEST(ConvertIdentifierNameToWordsTest, WorksWhenNameContainsDigits) {
+  EXPECT_EQ("1", ConvertIdentifierNameToWords("_1"));
+  EXPECT_EQ("2", ConvertIdentifierNameToWords("2_"));
+  EXPECT_EQ("34", ConvertIdentifierNameToWords("_34_"));
+  EXPECT_EQ("34 56", ConvertIdentifierNameToWords("_34_56"));
+}
+
+TEST(ConvertIdentifierNameToWordsTest, WorksWhenNameContainsCamelCaseWords) {
+  EXPECT_EQ("a big word", ConvertIdentifierNameToWords("ABigWord"));
+  EXPECT_EQ("foo bar", ConvertIdentifierNameToWords("FooBar"));
+  EXPECT_EQ("foo", ConvertIdentifierNameToWords("Foo_"));
+  EXPECT_EQ("foo bar", ConvertIdentifierNameToWords("_Foo_Bar_"));
+  EXPECT_EQ("foo and bar", ConvertIdentifierNameToWords("_Foo__And_Bar"));
+}
+
+TEST(ConvertIdentifierNameToWordsTest, WorksWhenNameContains_SeparatedWords) {
+  EXPECT_EQ("foo bar", ConvertIdentifierNameToWords("foo_bar"));
+  EXPECT_EQ("foo", ConvertIdentifierNameToWords("_foo_"));
+  EXPECT_EQ("foo bar", ConvertIdentifierNameToWords("_foo_bar_"));
+  EXPECT_EQ("foo and bar", ConvertIdentifierNameToWords("_foo__and_bar"));
+}
+
+TEST(ConvertIdentifierNameToWordsTest, WorksWhenNameIsMixture) {
+  EXPECT_EQ("foo bar 123", ConvertIdentifierNameToWords("Foo_bar123"));
+  EXPECT_EQ("chapter 11 section 1",
+            ConvertIdentifierNameToWords("_Chapter11Section_1_"));
+}
+
+TEST(PointeeOfTest, WorksForSmartPointers) {
+  CompileAssertTypesEqual<const char,
+      PointeeOf<internal::linked_ptr<const char> >::type>();
+}
+
+TEST(PointeeOfTest, WorksForRawPointers) {
+  CompileAssertTypesEqual<int, PointeeOf<int*>::type>();
+  CompileAssertTypesEqual<const char, PointeeOf<const char*>::type>();
+  CompileAssertTypesEqual<void, PointeeOf<void*>::type>();
+}
+
+TEST(GetRawPointerTest, WorksForSmartPointers) {
+  const char* const raw_p4 = new const char('a');  // NOLINT
+  const internal::linked_ptr<const char> p4(raw_p4);
+  EXPECT_EQ(raw_p4, GetRawPointer(p4));
+}
+
+TEST(GetRawPointerTest, WorksForRawPointers) {
+  int* p = NULL;
+  // Don't use EXPECT_EQ as no NULL-testing magic on Symbian.
+  EXPECT_TRUE(NULL == GetRawPointer(p));
+  int n = 1;
+  EXPECT_EQ(&n, GetRawPointer(&n));
+}
+
+// Tests KindOf<T>.
+
+class Base {};
+class Derived : public Base {};
+
+TEST(KindOfTest, Bool) {
+  EXPECT_EQ(kBool, GMOCK_KIND_OF_(bool));  // NOLINT
+}
+
+TEST(KindOfTest, Integer) {
+  EXPECT_EQ(kInteger, GMOCK_KIND_OF_(char));  // NOLINT
+  EXPECT_EQ(kInteger, GMOCK_KIND_OF_(signed char));  // NOLINT
+  EXPECT_EQ(kInteger, GMOCK_KIND_OF_(unsigned char));  // NOLINT
+  EXPECT_EQ(kInteger, GMOCK_KIND_OF_(short));  // NOLINT
+  EXPECT_EQ(kInteger, GMOCK_KIND_OF_(unsigned short));  // NOLINT
+  EXPECT_EQ(kInteger, GMOCK_KIND_OF_(int));  // NOLINT
+  EXPECT_EQ(kInteger, GMOCK_KIND_OF_(unsigned int));  // NOLINT
+  EXPECT_EQ(kInteger, GMOCK_KIND_OF_(long));  // NOLINT
+  EXPECT_EQ(kInteger, GMOCK_KIND_OF_(unsigned long));  // NOLINT
+  EXPECT_EQ(kInteger, GMOCK_KIND_OF_(wchar_t));  // NOLINT
+  EXPECT_EQ(kInteger, GMOCK_KIND_OF_(Int64));  // NOLINT
+  EXPECT_EQ(kInteger, GMOCK_KIND_OF_(UInt64));  // NOLINT
+  EXPECT_EQ(kInteger, GMOCK_KIND_OF_(size_t));  // NOLINT
+#if GTEST_OS_LINUX || GTEST_OS_MAC || GTEST_OS_CYGWIN
+  // ssize_t is not defined on Windows and possibly some other OSes.
+  EXPECT_EQ(kInteger, GMOCK_KIND_OF_(ssize_t));  // NOLINT
+#endif
+}
+
+TEST(KindOfTest, FloatingPoint) {
+  EXPECT_EQ(kFloatingPoint, GMOCK_KIND_OF_(float));  // NOLINT
+  EXPECT_EQ(kFloatingPoint, GMOCK_KIND_OF_(double));  // NOLINT
+  EXPECT_EQ(kFloatingPoint, GMOCK_KIND_OF_(long double));  // NOLINT
+}
+
+TEST(KindOfTest, Other) {
+  EXPECT_EQ(kOther, GMOCK_KIND_OF_(void*));  // NOLINT
+  EXPECT_EQ(kOther, GMOCK_KIND_OF_(char**));  // NOLINT
+  EXPECT_EQ(kOther, GMOCK_KIND_OF_(Base));  // NOLINT
+}
+
+// Tests LosslessArithmeticConvertible<T, U>.
+
+TEST(LosslessArithmeticConvertibleTest, BoolToBool) {
+  EXPECT_TRUE((LosslessArithmeticConvertible<bool, bool>::value));
+}
+
+TEST(LosslessArithmeticConvertibleTest, BoolToInteger) {
+  EXPECT_TRUE((LosslessArithmeticConvertible<bool, char>::value));
+  EXPECT_TRUE((LosslessArithmeticConvertible<bool, int>::value));
+  EXPECT_TRUE(
+      (LosslessArithmeticConvertible<bool, unsigned long>::value));  // NOLINT
+}
+
+TEST(LosslessArithmeticConvertibleTest, BoolToFloatingPoint) {
+  EXPECT_TRUE((LosslessArithmeticConvertible<bool, float>::value));
+  EXPECT_TRUE((LosslessArithmeticConvertible<bool, double>::value));
+}
+
+TEST(LosslessArithmeticConvertibleTest, IntegerToBool) {
+  EXPECT_FALSE((LosslessArithmeticConvertible<unsigned char, bool>::value));
+  EXPECT_FALSE((LosslessArithmeticConvertible<int, bool>::value));
+}
+
+TEST(LosslessArithmeticConvertibleTest, IntegerToInteger) {
+  // Unsigned => larger signed is fine.
+  EXPECT_TRUE((LosslessArithmeticConvertible<unsigned char, int>::value));
+
+  // Unsigned => larger unsigned is fine.
+  EXPECT_TRUE(
+      (LosslessArithmeticConvertible<unsigned short, UInt64>::value)); // NOLINT
+
+  // Signed => unsigned is not fine.
+  EXPECT_FALSE((LosslessArithmeticConvertible<short, UInt64>::value)); // NOLINT
+  EXPECT_FALSE((LosslessArithmeticConvertible<
+      signed char, unsigned int>::value));  // NOLINT
+
+  // Same size and same signedness: fine too.
+  EXPECT_TRUE((LosslessArithmeticConvertible<
+               unsigned char, unsigned char>::value));
+  EXPECT_TRUE((LosslessArithmeticConvertible<int, int>::value));
+  EXPECT_TRUE((LosslessArithmeticConvertible<wchar_t, wchar_t>::value));
+  EXPECT_TRUE((LosslessArithmeticConvertible<
+               unsigned long, unsigned long>::value));  // NOLINT
+
+  // Same size, different signedness: not fine.
+  EXPECT_FALSE((LosslessArithmeticConvertible<
+                unsigned char, signed char>::value));
+  EXPECT_FALSE((LosslessArithmeticConvertible<int, unsigned int>::value));
+  EXPECT_FALSE((LosslessArithmeticConvertible<UInt64, Int64>::value));
+
+  // Larger size => smaller size is not fine.
+  EXPECT_FALSE((LosslessArithmeticConvertible<long, char>::value));  // NOLINT
+  EXPECT_FALSE((LosslessArithmeticConvertible<int, signed char>::value));
+  EXPECT_FALSE((LosslessArithmeticConvertible<Int64, unsigned int>::value));
+}
+
+TEST(LosslessArithmeticConvertibleTest, IntegerToFloatingPoint) {
+  // Integers cannot be losslessly converted to floating-points, as
+  // the format of the latter is implementation-defined.
+  EXPECT_FALSE((LosslessArithmeticConvertible<char, float>::value));
+  EXPECT_FALSE((LosslessArithmeticConvertible<int, double>::value));
+  EXPECT_FALSE((LosslessArithmeticConvertible<
+                short, long double>::value));  // NOLINT
+}
+
+TEST(LosslessArithmeticConvertibleTest, FloatingPointToBool) {
+  EXPECT_FALSE((LosslessArithmeticConvertible<float, bool>::value));
+  EXPECT_FALSE((LosslessArithmeticConvertible<double, bool>::value));
+}
+
+TEST(LosslessArithmeticConvertibleTest, FloatingPointToInteger) {
+  EXPECT_FALSE((LosslessArithmeticConvertible<float, long>::value));  // NOLINT
+  EXPECT_FALSE((LosslessArithmeticConvertible<double, Int64>::value));
+  EXPECT_FALSE((LosslessArithmeticConvertible<long double, int>::value));
+}
+
+TEST(LosslessArithmeticConvertibleTest, FloatingPointToFloatingPoint) {
+  // Smaller size => larger size is fine.
+  EXPECT_TRUE((LosslessArithmeticConvertible<float, double>::value));
+  EXPECT_TRUE((LosslessArithmeticConvertible<float, long double>::value));
+  EXPECT_TRUE((LosslessArithmeticConvertible<double, long double>::value));
+
+  // Same size: fine.
+  EXPECT_TRUE((LosslessArithmeticConvertible<float, float>::value));
+  EXPECT_TRUE((LosslessArithmeticConvertible<double, double>::value));
+
+  // Larger size => smaller size is not fine.
+  EXPECT_FALSE((LosslessArithmeticConvertible<double, float>::value));
+  if (sizeof(double) == sizeof(long double)) {  // NOLINT
+    // In some implementations (e.g. MSVC), double and long double
+    // have the same size.
+    EXPECT_TRUE((LosslessArithmeticConvertible<long double, double>::value));
+  } else {
+    EXPECT_FALSE((LosslessArithmeticConvertible<long double, double>::value));
+  }
+}
+
+// Tests the TupleMatches() template function.
+
+TEST(TupleMatchesTest, WorksForSize0) {
+  tuple<> matchers;
+  tuple<> values;
+
+  EXPECT_TRUE(TupleMatches(matchers, values));
+}
+
+TEST(TupleMatchesTest, WorksForSize1) {
+  tuple<Matcher<int> > matchers(Eq(1));
+  tuple<int> values1(1),
+      values2(2);
+
+  EXPECT_TRUE(TupleMatches(matchers, values1));
+  EXPECT_FALSE(TupleMatches(matchers, values2));
+}
+
+TEST(TupleMatchesTest, WorksForSize2) {
+  tuple<Matcher<int>, Matcher<char> > matchers(Eq(1), Eq('a'));
+  tuple<int, char> values1(1, 'a'),
+      values2(1, 'b'),
+      values3(2, 'a'),
+      values4(2, 'b');
+
+  EXPECT_TRUE(TupleMatches(matchers, values1));
+  EXPECT_FALSE(TupleMatches(matchers, values2));
+  EXPECT_FALSE(TupleMatches(matchers, values3));
+  EXPECT_FALSE(TupleMatches(matchers, values4));
+}
+
+TEST(TupleMatchesTest, WorksForSize5) {
+  tuple<Matcher<int>, Matcher<char>, Matcher<bool>, Matcher<long>,  // NOLINT
+      Matcher<string> >
+      matchers(Eq(1), Eq('a'), Eq(true), Eq(2L), Eq("hi"));
+  tuple<int, char, bool, long, string>  // NOLINT
+      values1(1, 'a', true, 2L, "hi"),
+      values2(1, 'a', true, 2L, "hello"),
+      values3(2, 'a', true, 2L, "hi");
+
+  EXPECT_TRUE(TupleMatches(matchers, values1));
+  EXPECT_FALSE(TupleMatches(matchers, values2));
+  EXPECT_FALSE(TupleMatches(matchers, values3));
+}
+
+// Tests that Assert(true, ...) succeeds.
+TEST(AssertTest, SucceedsOnTrue) {
+  Assert(true, __FILE__, __LINE__, "This should succeed.");
+  Assert(true, __FILE__, __LINE__);  // This should succeed too.
+}
+
+// Tests that Assert(false, ...) generates a fatal failure.
+TEST(AssertTest, FailsFatallyOnFalse) {
+  EXPECT_DEATH_IF_SUPPORTED({
+    Assert(false, __FILE__, __LINE__, "This should fail.");
+  }, "");
+
+  EXPECT_DEATH_IF_SUPPORTED({
+    Assert(false, __FILE__, __LINE__);
+  }, "");
+}
+
+// Tests that Expect(true, ...) succeeds.
+TEST(ExpectTest, SucceedsOnTrue) {
+  Expect(true, __FILE__, __LINE__, "This should succeed.");
+  Expect(true, __FILE__, __LINE__);  // This should succeed too.
+}
+
+// Tests that Expect(false, ...) generates a non-fatal failure.
+TEST(ExpectTest, FailsNonfatallyOnFalse) {
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    Expect(false, __FILE__, __LINE__, "This should fail.");
+  }, "This should fail");
+
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    Expect(false, __FILE__, __LINE__);
+  }, "Expectation failed");
+}
+
+// Tests LogIsVisible().
+
+class LogIsVisibleTest : public ::testing::Test {
+ protected:
+  virtual void SetUp() {
+    // The code needs to work when both ::string and ::std::string are
+    // defined and the flag is implemented as a
+    // testing::internal::String.  In this case, without the call to
+    // c_str(), the compiler will complain that it cannot figure out
+    // whether the String flag should be converted to a ::string or an
+    // ::std::string before being assigned to original_verbose_.
+    original_verbose_ = GMOCK_FLAG(verbose).c_str();
+  }
+
+  virtual void TearDown() { GMOCK_FLAG(verbose) = original_verbose_; }
+
+  string original_verbose_;
+};
+
+TEST_F(LogIsVisibleTest, AlwaysReturnsTrueIfVerbosityIsInfo) {
+  GMOCK_FLAG(verbose) = kInfoVerbosity;
+  EXPECT_TRUE(LogIsVisible(kInfo));
+  EXPECT_TRUE(LogIsVisible(kWarning));
+}
+
+TEST_F(LogIsVisibleTest, AlwaysReturnsFalseIfVerbosityIsError) {
+  GMOCK_FLAG(verbose) = kErrorVerbosity;
+  EXPECT_FALSE(LogIsVisible(kInfo));
+  EXPECT_FALSE(LogIsVisible(kWarning));
+}
+
+TEST_F(LogIsVisibleTest, WorksWhenVerbosityIsWarning) {
+  GMOCK_FLAG(verbose) = kWarningVerbosity;
+  EXPECT_FALSE(LogIsVisible(kInfo));
+  EXPECT_TRUE(LogIsVisible(kWarning));
+}
+
+#if GTEST_HAS_STREAM_REDIRECTION
+
+// Tests the Log() function.
+
+// Verifies that Log() behaves correctly for the given verbosity level
+// and log severity.
+void TestLogWithSeverity(const string& verbosity, LogSeverity severity,
+                         bool should_print) {
+  const string old_flag = GMOCK_FLAG(verbose);
+  GMOCK_FLAG(verbose) = verbosity;
+  CaptureStdout();
+  Log(severity, "Test log.\n", 0);
+  if (should_print) {
+    EXPECT_THAT(GetCapturedStdout().c_str(),
+                ContainsRegex(
+                    severity == kWarning ?
+                    "^\nGMOCK WARNING:\nTest log\\.\nStack trace:\n" :
+                    "^\nTest log\\.\nStack trace:\n"));
+  } else {
+    EXPECT_STREQ("", GetCapturedStdout().c_str());
+  }
+  GMOCK_FLAG(verbose) = old_flag;
+}
+
+// Tests that when the stack_frames_to_skip parameter is negative,
+// Log() doesn't include the stack trace in the output.
+TEST(LogTest, NoStackTraceWhenStackFramesToSkipIsNegative) {
+  const string saved_flag = GMOCK_FLAG(verbose);
+  GMOCK_FLAG(verbose) = kInfoVerbosity;
+  CaptureStdout();
+  Log(kInfo, "Test log.\n", -1);
+  EXPECT_STREQ("\nTest log.\n", GetCapturedStdout().c_str());
+  GMOCK_FLAG(verbose) = saved_flag;
+}
+
+// Tests that in opt mode, a positive stack_frames_to_skip argument is
+// treated as 0.
+TEST(LogTest, NoSkippingStackFrameInOptMode) {
+  CaptureStdout();
+  Log(kWarning, "Test log.\n", 100);
+  const String log = GetCapturedStdout();
+
+# if defined(NDEBUG) && GTEST_GOOGLE3_MODE_
+
+  // In opt mode, no stack frame should be skipped.
+  EXPECT_THAT(log, ContainsRegex("\nGMOCK WARNING:\n"
+                                 "Test log\\.\n"
+                                 "Stack trace:\n"
+                                 ".+"));
+# else
+
+  // In dbg mode, the stack frames should be skipped.
+  EXPECT_STREQ("\nGMOCK WARNING:\n"
+               "Test log.\n"
+               "Stack trace:\n", log.c_str());
+# endif
+}
+
+// Tests that all logs are printed when the value of the
+// --gmock_verbose flag is "info".
+TEST(LogTest, AllLogsArePrintedWhenVerbosityIsInfo) {
+  TestLogWithSeverity(kInfoVerbosity, kInfo, true);
+  TestLogWithSeverity(kInfoVerbosity, kWarning, true);
+}
+
+// Tests that only warnings are printed when the value of the
+// --gmock_verbose flag is "warning".
+TEST(LogTest, OnlyWarningsArePrintedWhenVerbosityIsWarning) {
+  TestLogWithSeverity(kWarningVerbosity, kInfo, false);
+  TestLogWithSeverity(kWarningVerbosity, kWarning, true);
+}
+
+// Tests that no logs are printed when the value of the
+// --gmock_verbose flag is "error".
+TEST(LogTest, NoLogsArePrintedWhenVerbosityIsError) {
+  TestLogWithSeverity(kErrorVerbosity, kInfo, false);
+  TestLogWithSeverity(kErrorVerbosity, kWarning, false);
+}
+
+// Tests that only warnings are printed when the value of the
+// --gmock_verbose flag is invalid.
+TEST(LogTest, OnlyWarningsArePrintedWhenVerbosityIsInvalid) {
+  TestLogWithSeverity("invalid", kInfo, false);
+  TestLogWithSeverity("invalid", kWarning, true);
+}
+
+#endif  // GTEST_HAS_STREAM_REDIRECTION
+
+TEST(TypeTraitsTest, true_type) {
+  EXPECT_TRUE(true_type::value);
+}
+
+TEST(TypeTraitsTest, false_type) {
+  EXPECT_FALSE(false_type::value);
+}
+
+TEST(TypeTraitsTest, is_reference) {
+  EXPECT_FALSE(is_reference<int>::value);
+  EXPECT_FALSE(is_reference<char*>::value);
+  EXPECT_TRUE(is_reference<const int&>::value);
+}
+
+TEST(TypeTraitsTest, is_pointer) {
+  EXPECT_FALSE(is_pointer<int>::value);
+  EXPECT_FALSE(is_pointer<char&>::value);
+  EXPECT_TRUE(is_pointer<const int*>::value);
+}
+
+TEST(TypeTraitsTest, type_equals) {
+  EXPECT_FALSE((type_equals<int, const int>::value));
+  EXPECT_FALSE((type_equals<int, int&>::value));
+  EXPECT_FALSE((type_equals<int, double>::value));
+  EXPECT_TRUE((type_equals<char, char>::value));
+}
+
+TEST(TypeTraitsTest, remove_reference) {
+  EXPECT_TRUE((type_equals<char, remove_reference<char&>::type>::value));
+  EXPECT_TRUE((type_equals<const int,
+               remove_reference<const int&>::type>::value));
+  EXPECT_TRUE((type_equals<int, remove_reference<int>::type>::value));
+  EXPECT_TRUE((type_equals<double*, remove_reference<double*>::type>::value));
+}
+
+#if GTEST_HAS_STREAM_REDIRECTION
+
+// Verifies that Log() behaves correctly for the given verbosity level
+// and log severity.
+String GrabOutput(void(*logger)(), const char* verbosity) {
+  const string saved_flag = GMOCK_FLAG(verbose);
+  GMOCK_FLAG(verbose) = verbosity;
+  CaptureStdout();
+  logger();
+  GMOCK_FLAG(verbose) = saved_flag;
+  return GetCapturedStdout();
+}
+
+class DummyMock {
+ public:
+  MOCK_METHOD0(TestMethod, void());
+  MOCK_METHOD1(TestMethodArg, void(int dummy));
+};
+
+void ExpectCallLogger() {
+  DummyMock mock;
+  EXPECT_CALL(mock, TestMethod());
+  mock.TestMethod();
+};
+
+// Verifies that EXPECT_CALL logs if the --gmock_verbose flag is set to "info".
+TEST(ExpectCallTest, LogsWhenVerbosityIsInfo) {
+  EXPECT_THAT(GrabOutput(ExpectCallLogger, kInfoVerbosity),
+              HasSubstr("EXPECT_CALL(mock, TestMethod())"));
+}
+
+// Verifies that EXPECT_CALL doesn't log
+// if the --gmock_verbose flag is set to "warning".
+TEST(ExpectCallTest, DoesNotLogWhenVerbosityIsWarning) {
+  EXPECT_STREQ("", GrabOutput(ExpectCallLogger, kWarningVerbosity).c_str());
+}
+
+// Verifies that EXPECT_CALL doesn't log
+// if the --gmock_verbose flag is set to "error".
+TEST(ExpectCallTest,  DoesNotLogWhenVerbosityIsError) {
+  EXPECT_STREQ("", GrabOutput(ExpectCallLogger, kErrorVerbosity).c_str());
+}
+
+void OnCallLogger() {
+  DummyMock mock;
+  ON_CALL(mock, TestMethod());
+};
+
+// Verifies that ON_CALL logs if the --gmock_verbose flag is set to "info".
+TEST(OnCallTest, LogsWhenVerbosityIsInfo) {
+  EXPECT_THAT(GrabOutput(OnCallLogger, kInfoVerbosity),
+              HasSubstr("ON_CALL(mock, TestMethod())"));
+}
+
+// Verifies that ON_CALL doesn't log
+// if the --gmock_verbose flag is set to "warning".
+TEST(OnCallTest, DoesNotLogWhenVerbosityIsWarning) {
+  EXPECT_STREQ("", GrabOutput(OnCallLogger, kWarningVerbosity).c_str());
+}
+
+// Verifies that ON_CALL doesn't log if
+// the --gmock_verbose flag is set to "error".
+TEST(OnCallTest, DoesNotLogWhenVerbosityIsError) {
+  EXPECT_STREQ("", GrabOutput(OnCallLogger, kErrorVerbosity).c_str());
+}
+
+void OnCallAnyArgumentLogger() {
+  DummyMock mock;
+  ON_CALL(mock, TestMethodArg(_));
+}
+
+// Verifies that ON_CALL prints provided _ argument.
+TEST(OnCallTest, LogsAnythingArgument) {
+  EXPECT_THAT(GrabOutput(OnCallAnyArgumentLogger, kInfoVerbosity),
+              HasSubstr("ON_CALL(mock, TestMethodArg(_)"));
+}
+
+#endif  // GTEST_HAS_STREAM_REDIRECTION
+
+// Tests StlContainerView.
+
+TEST(StlContainerViewTest, WorksForStlContainer) {
+  StaticAssertTypeEq<std::vector<int>,
+      StlContainerView<std::vector<int> >::type>();
+  StaticAssertTypeEq<const std::vector<double>&,
+      StlContainerView<std::vector<double> >::const_reference>();
+
+  typedef std::vector<char> Chars;
+  Chars v1;
+  const Chars& v2(StlContainerView<Chars>::ConstReference(v1));
+  EXPECT_EQ(&v1, &v2);
+
+  v1.push_back('a');
+  Chars v3 = StlContainerView<Chars>::Copy(v1);
+  EXPECT_THAT(v3, Eq(v3));
+}
+
+TEST(StlContainerViewTest, WorksForStaticNativeArray) {
+  StaticAssertTypeEq<NativeArray<int>,
+      StlContainerView<int[3]>::type>();
+  StaticAssertTypeEq<NativeArray<double>,
+      StlContainerView<const double[4]>::type>();
+  StaticAssertTypeEq<NativeArray<char[3]>,
+      StlContainerView<const char[2][3]>::type>();
+
+  StaticAssertTypeEq<const NativeArray<int>,
+      StlContainerView<int[2]>::const_reference>();
+
+  int a1[3] = { 0, 1, 2 };
+  NativeArray<int> a2 = StlContainerView<int[3]>::ConstReference(a1);
+  EXPECT_EQ(3U, a2.size());
+  EXPECT_EQ(a1, a2.begin());
+
+  const NativeArray<int> a3 = StlContainerView<int[3]>::Copy(a1);
+  ASSERT_EQ(3U, a3.size());
+  EXPECT_EQ(0, a3.begin()[0]);
+  EXPECT_EQ(1, a3.begin()[1]);
+  EXPECT_EQ(2, a3.begin()[2]);
+
+  // Makes sure a1 and a3 aren't aliases.
+  a1[0] = 3;
+  EXPECT_EQ(0, a3.begin()[0]);
+}
+
+TEST(StlContainerViewTest, WorksForDynamicNativeArray) {
+  StaticAssertTypeEq<NativeArray<int>,
+      StlContainerView<tuple<const int*, size_t> >::type>();
+  StaticAssertTypeEq<NativeArray<double>,
+      StlContainerView<tuple<linked_ptr<double>, int> >::type>();
+
+  StaticAssertTypeEq<const NativeArray<int>,
+      StlContainerView<tuple<const int*, int> >::const_reference>();
+
+  int a1[3] = { 0, 1, 2 };
+  const int* const p1 = a1;
+  NativeArray<int> a2 = StlContainerView<tuple<const int*, int> >::
+      ConstReference(make_tuple(p1, 3));
+  EXPECT_EQ(3U, a2.size());
+  EXPECT_EQ(a1, a2.begin());
+
+  const NativeArray<int> a3 = StlContainerView<tuple<int*, size_t> >::
+      Copy(make_tuple(static_cast<int*>(a1), 3));
+  ASSERT_EQ(3U, a3.size());
+  EXPECT_EQ(0, a3.begin()[0]);
+  EXPECT_EQ(1, a3.begin()[1]);
+  EXPECT_EQ(2, a3.begin()[2]);
+
+  // Makes sure a1 and a3 aren't aliases.
+  a1[0] = 3;
+  EXPECT_EQ(0, a3.begin()[0]);
+}
+
+}  // namespace
+}  // namespace internal
+}  // namespace testing
diff --git a/google-breakpad/src/testing/test/gmock-matchers_test.cc b/google-breakpad/src/testing/test/gmock-matchers_test.cc
new file mode 100644
index 0000000..6e5d5c3
--- /dev/null
+++ b/google-breakpad/src/testing/test/gmock-matchers_test.cc
@@ -0,0 +1,4197 @@
+// Copyright 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Google Mock - a framework for writing C++ mock classes.
+//
+// This file tests some commonly used argument matchers.
+
+#include "gmock/gmock-matchers.h"
+
+#include <string.h>
+#include <functional>
+#include <iostream>
+#include <list>
+#include <map>
+#include <set>
+#include <sstream>
+#include <string>
+#include <utility>
+#include <vector>
+#include "gmock/gmock.h"
+#include "gtest/gtest.h"
+#include "gtest/gtest-spi.h"
+
+namespace testing {
+
+namespace internal {
+GTEST_API_ string JoinAsTuple(const Strings& fields);
+}  // namespace internal
+
+namespace gmock_matchers_test {
+
+using std::greater;
+using std::less;
+using std::list;
+using std::make_pair;
+using std::map;
+using std::multimap;
+using std::multiset;
+using std::ostream;
+using std::pair;
+using std::set;
+using std::stringstream;
+using std::tr1::get;
+using std::tr1::make_tuple;
+using std::tr1::tuple;
+using std::vector;
+using testing::A;
+using testing::AllArgs;
+using testing::AllOf;
+using testing::An;
+using testing::AnyOf;
+using testing::ByRef;
+using testing::ContainsRegex;
+using testing::DoubleEq;
+using testing::EndsWith;
+using testing::Eq;
+using testing::ExplainMatchResult;
+using testing::Field;
+using testing::FloatEq;
+using testing::Ge;
+using testing::Gt;
+using testing::HasSubstr;
+using testing::IsNull;
+using testing::Key;
+using testing::Le;
+using testing::Lt;
+using testing::MakeMatcher;
+using testing::MakePolymorphicMatcher;
+using testing::MatchResultListener;
+using testing::Matcher;
+using testing::MatcherCast;
+using testing::MatcherInterface;
+using testing::Matches;
+using testing::MatchesRegex;
+using testing::NanSensitiveDoubleEq;
+using testing::NanSensitiveFloatEq;
+using testing::Ne;
+using testing::Not;
+using testing::NotNull;
+using testing::Pair;
+using testing::Pointee;
+using testing::Pointwise;
+using testing::PolymorphicMatcher;
+using testing::Property;
+using testing::Ref;
+using testing::ResultOf;
+using testing::StartsWith;
+using testing::StrCaseEq;
+using testing::StrCaseNe;
+using testing::StrEq;
+using testing::StrNe;
+using testing::Truly;
+using testing::TypedEq;
+using testing::Value;
+using testing::WhenSorted;
+using testing::WhenSortedBy;
+using testing::_;
+using testing::internal::DummyMatchResultListener;
+using testing::internal::ExplainMatchFailureTupleTo;
+using testing::internal::FloatingEqMatcher;
+using testing::internal::FormatMatcherDescription;
+using testing::internal::IsReadableTypeName;
+using testing::internal::JoinAsTuple;
+using testing::internal::RE;
+using testing::internal::StreamMatchResultListener;
+using testing::internal::String;
+using testing::internal::StringMatchResultListener;
+using testing::internal::Strings;
+using testing::internal::linked_ptr;
+using testing::internal::scoped_ptr;
+using testing::internal::string;
+
+// For testing ExplainMatchResultTo().
+class GreaterThanMatcher : public MatcherInterface<int> {
+ public:
+  explicit GreaterThanMatcher(int rhs) : rhs_(rhs) {}
+
+  virtual void DescribeTo(ostream* os) const {
+    *os << "is > " << rhs_;
+  }
+
+  virtual bool MatchAndExplain(int lhs,
+                               MatchResultListener* listener) const {
+    const int diff = lhs - rhs_;
+    if (diff > 0) {
+      *listener << "which is " << diff << " more than " << rhs_;
+    } else if (diff == 0) {
+      *listener << "which is the same as " << rhs_;
+    } else {
+      *listener << "which is " << -diff << " less than " << rhs_;
+    }
+
+    return lhs > rhs_;
+  }
+
+ private:
+  int rhs_;
+};
+
+Matcher<int> GreaterThan(int n) {
+  return MakeMatcher(new GreaterThanMatcher(n));
+}
+
+string OfType(const string& type_name) {
+#if GTEST_HAS_RTTI
+  return " (of type " + type_name + ")";
+#else
+  return "";
+#endif
+}
+
+// Returns the description of the given matcher.
+template <typename T>
+string Describe(const Matcher<T>& m) {
+  stringstream ss;
+  m.DescribeTo(&ss);
+  return ss.str();
+}
+
+// Returns the description of the negation of the given matcher.
+template <typename T>
+string DescribeNegation(const Matcher<T>& m) {
+  stringstream ss;
+  m.DescribeNegationTo(&ss);
+  return ss.str();
+}
+
+// Returns the reason why x matches, or doesn't match, m.
+template <typename MatcherType, typename Value>
+string Explain(const MatcherType& m, const Value& x) {
+  StringMatchResultListener listener;
+  ExplainMatchResult(m, x, &listener);
+  return listener.str();
+}
+
+TEST(MatchResultListenerTest, StreamingWorks) {
+  StringMatchResultListener listener;
+  listener << "hi" << 5;
+  EXPECT_EQ("hi5", listener.str());
+
+  // Streaming shouldn't crash when the underlying ostream is NULL.
+  DummyMatchResultListener dummy;
+  dummy << "hi" << 5;
+}
+
+TEST(MatchResultListenerTest, CanAccessUnderlyingStream) {
+  EXPECT_TRUE(DummyMatchResultListener().stream() == NULL);
+  EXPECT_TRUE(StreamMatchResultListener(NULL).stream() == NULL);
+
+  EXPECT_EQ(&std::cout, StreamMatchResultListener(&std::cout).stream());
+}
+
+TEST(MatchResultListenerTest, IsInterestedWorks) {
+  EXPECT_TRUE(StringMatchResultListener().IsInterested());
+  EXPECT_TRUE(StreamMatchResultListener(&std::cout).IsInterested());
+
+  EXPECT_FALSE(DummyMatchResultListener().IsInterested());
+  EXPECT_FALSE(StreamMatchResultListener(NULL).IsInterested());
+}
+
+// Makes sure that the MatcherInterface<T> interface doesn't
+// change.
+class EvenMatcherImpl : public MatcherInterface<int> {
+ public:
+  virtual bool MatchAndExplain(int x,
+                               MatchResultListener* /* listener */) const {
+    return x % 2 == 0;
+  }
+
+  virtual void DescribeTo(ostream* os) const {
+    *os << "is an even number";
+  }
+
+  // We deliberately don't define DescribeNegationTo() and
+  // ExplainMatchResultTo() here, to make sure the definition of these
+  // two methods is optional.
+};
+
+// Makes sure that the MatcherInterface API doesn't change.
+TEST(MatcherInterfaceTest, CanBeImplementedUsingPublishedAPI) {
+  EvenMatcherImpl m;
+}
+
+// Tests implementing a monomorphic matcher using MatchAndExplain().
+
+class NewEvenMatcherImpl : public MatcherInterface<int> {
+ public:
+  virtual bool MatchAndExplain(int x, MatchResultListener* listener) const {
+    const bool match = x % 2 == 0;
+    // Verifies that we can stream to a listener directly.
+    *listener << "value % " << 2;
+    if (listener->stream() != NULL) {
+      // Verifies that we can stream to a listener's underlying stream
+      // too.
+      *listener->stream() << " == " << (x % 2);
+    }
+    return match;
+  }
+
+  virtual void DescribeTo(ostream* os) const {
+    *os << "is an even number";
+  }
+};
+
+TEST(MatcherInterfaceTest, CanBeImplementedUsingNewAPI) {
+  Matcher<int> m = MakeMatcher(new NewEvenMatcherImpl);
+  EXPECT_TRUE(m.Matches(2));
+  EXPECT_FALSE(m.Matches(3));
+  EXPECT_EQ("value % 2 == 0", Explain(m, 2));
+  EXPECT_EQ("value % 2 == 1", Explain(m, 3));
+}
+
+// Tests default-constructing a matcher.
+TEST(MatcherTest, CanBeDefaultConstructed) {
+  Matcher<double> m;
+}
+
+// Tests that Matcher<T> can be constructed from a MatcherInterface<T>*.
+TEST(MatcherTest, CanBeConstructedFromMatcherInterface) {
+  const MatcherInterface<int>* impl = new EvenMatcherImpl;
+  Matcher<int> m(impl);
+  EXPECT_TRUE(m.Matches(4));
+  EXPECT_FALSE(m.Matches(5));
+}
+
+// Tests that value can be used in place of Eq(value).
+TEST(MatcherTest, CanBeImplicitlyConstructedFromValue) {
+  Matcher<int> m1 = 5;
+  EXPECT_TRUE(m1.Matches(5));
+  EXPECT_FALSE(m1.Matches(6));
+}
+
+// Tests that NULL can be used in place of Eq(NULL).
+TEST(MatcherTest, CanBeImplicitlyConstructedFromNULL) {
+  Matcher<int*> m1 = NULL;
+  EXPECT_TRUE(m1.Matches(NULL));
+  int n = 0;
+  EXPECT_FALSE(m1.Matches(&n));
+}
+
+// Tests that matchers are copyable.
+TEST(MatcherTest, IsCopyable) {
+  // Tests the copy constructor.
+  Matcher<bool> m1 = Eq(false);
+  EXPECT_TRUE(m1.Matches(false));
+  EXPECT_FALSE(m1.Matches(true));
+
+  // Tests the assignment operator.
+  m1 = Eq(true);
+  EXPECT_TRUE(m1.Matches(true));
+  EXPECT_FALSE(m1.Matches(false));
+}
+
+// Tests that Matcher<T>::DescribeTo() calls
+// MatcherInterface<T>::DescribeTo().
+TEST(MatcherTest, CanDescribeItself) {
+  EXPECT_EQ("is an even number",
+            Describe(Matcher<int>(new EvenMatcherImpl)));
+}
+
+// Tests Matcher<T>::MatchAndExplain().
+TEST(MatcherTest, MatchAndExplain) {
+  Matcher<int> m = GreaterThan(0);
+  StringMatchResultListener listener1;
+  EXPECT_TRUE(m.MatchAndExplain(42, &listener1));
+  EXPECT_EQ("which is 42 more than 0", listener1.str());
+
+  StringMatchResultListener listener2;
+  EXPECT_FALSE(m.MatchAndExplain(-9, &listener2));
+  EXPECT_EQ("which is 9 less than 0", listener2.str());
+}
+
+// Tests that a C-string literal can be implicitly converted to a
+// Matcher<string> or Matcher<const string&>.
+TEST(StringMatcherTest, CanBeImplicitlyConstructedFromCStringLiteral) {
+  Matcher<string> m1 = "hi";
+  EXPECT_TRUE(m1.Matches("hi"));
+  EXPECT_FALSE(m1.Matches("hello"));
+
+  Matcher<const string&> m2 = "hi";
+  EXPECT_TRUE(m2.Matches("hi"));
+  EXPECT_FALSE(m2.Matches("hello"));
+}
+
+// Tests that a string object can be implicitly converted to a
+// Matcher<string> or Matcher<const string&>.
+TEST(StringMatcherTest, CanBeImplicitlyConstructedFromString) {
+  Matcher<string> m1 = string("hi");
+  EXPECT_TRUE(m1.Matches("hi"));
+  EXPECT_FALSE(m1.Matches("hello"));
+
+  Matcher<const string&> m2 = string("hi");
+  EXPECT_TRUE(m2.Matches("hi"));
+  EXPECT_FALSE(m2.Matches("hello"));
+}
+
+// Tests that MakeMatcher() constructs a Matcher<T> from a
+// MatcherInterface* without requiring the user to explicitly
+// write the type.
+TEST(MakeMatcherTest, ConstructsMatcherFromMatcherInterface) {
+  const MatcherInterface<int>* dummy_impl = NULL;
+  Matcher<int> m = MakeMatcher(dummy_impl);
+}
+
+// Tests that MakePolymorphicMatcher() can construct a polymorphic
+// matcher from its implementation using the old API.
+const int g_bar = 1;
+class ReferencesBarOrIsZeroImpl {
+ public:
+  template <typename T>
+  bool MatchAndExplain(const T& x,
+                       MatchResultListener* /* listener */) const {
+    const void* p = &x;
+    return p == &g_bar || x == 0;
+  }
+
+  void DescribeTo(ostream* os) const { *os << "g_bar or zero"; }
+
+  void DescribeNegationTo(ostream* os) const {
+    *os << "doesn't reference g_bar and is not zero";
+  }
+};
+
+// This function verifies that MakePolymorphicMatcher() returns a
+// PolymorphicMatcher<T> where T is the argument's type.
+PolymorphicMatcher<ReferencesBarOrIsZeroImpl> ReferencesBarOrIsZero() {
+  return MakePolymorphicMatcher(ReferencesBarOrIsZeroImpl());
+}
+
+TEST(MakePolymorphicMatcherTest, ConstructsMatcherUsingOldAPI) {
+  // Using a polymorphic matcher to match a reference type.
+  Matcher<const int&> m1 = ReferencesBarOrIsZero();
+  EXPECT_TRUE(m1.Matches(0));
+  // Verifies that the identity of a by-reference argument is preserved.
+  EXPECT_TRUE(m1.Matches(g_bar));
+  EXPECT_FALSE(m1.Matches(1));
+  EXPECT_EQ("g_bar or zero", Describe(m1));
+
+  // Using a polymorphic matcher to match a value type.
+  Matcher<double> m2 = ReferencesBarOrIsZero();
+  EXPECT_TRUE(m2.Matches(0.0));
+  EXPECT_FALSE(m2.Matches(0.1));
+  EXPECT_EQ("g_bar or zero", Describe(m2));
+}
+
+// Tests implementing a polymorphic matcher using MatchAndExplain().
+
+class PolymorphicIsEvenImpl {
+ public:
+  void DescribeTo(ostream* os) const { *os << "is even"; }
+
+  void DescribeNegationTo(ostream* os) const {
+    *os << "is odd";
+  }
+
+  template <typename T>
+  bool MatchAndExplain(const T& x, MatchResultListener* listener) const {
+    // Verifies that we can stream to the listener directly.
+    *listener << "% " << 2;
+    if (listener->stream() != NULL) {
+      // Verifies that we can stream to the listener's underlying stream
+      // too.
+      *listener->stream() << " == " << (x % 2);
+    }
+    return (x % 2) == 0;
+  }
+};
+
+PolymorphicMatcher<PolymorphicIsEvenImpl> PolymorphicIsEven() {
+  return MakePolymorphicMatcher(PolymorphicIsEvenImpl());
+}
+
+TEST(MakePolymorphicMatcherTest, ConstructsMatcherUsingNewAPI) {
+  // Using PolymorphicIsEven() as a Matcher<int>.
+  const Matcher<int> m1 = PolymorphicIsEven();
+  EXPECT_TRUE(m1.Matches(42));
+  EXPECT_FALSE(m1.Matches(43));
+  EXPECT_EQ("is even", Describe(m1));
+
+  const Matcher<int> not_m1 = Not(m1);
+  EXPECT_EQ("is odd", Describe(not_m1));
+
+  EXPECT_EQ("% 2 == 0", Explain(m1, 42));
+
+  // Using PolymorphicIsEven() as a Matcher<char>.
+  const Matcher<char> m2 = PolymorphicIsEven();
+  EXPECT_TRUE(m2.Matches('\x42'));
+  EXPECT_FALSE(m2.Matches('\x43'));
+  EXPECT_EQ("is even", Describe(m2));
+
+  const Matcher<char> not_m2 = Not(m2);
+  EXPECT_EQ("is odd", Describe(not_m2));
+
+  EXPECT_EQ("% 2 == 0", Explain(m2, '\x42'));
+}
+
+// Tests that MatcherCast<T>(m) works when m is a polymorphic matcher.
+TEST(MatcherCastTest, FromPolymorphicMatcher) {
+  Matcher<int> m = MatcherCast<int>(Eq(5));
+  EXPECT_TRUE(m.Matches(5));
+  EXPECT_FALSE(m.Matches(6));
+}
+
+// For testing casting matchers between compatible types.
+class IntValue {
+ public:
+  // An int can be statically (although not implicitly) cast to a
+  // IntValue.
+  explicit IntValue(int a_value) : value_(a_value) {}
+
+  int value() const { return value_; }
+ private:
+  int value_;
+};
+
+// For testing casting matchers between compatible types.
+bool IsPositiveIntValue(const IntValue& foo) {
+  return foo.value() > 0;
+}
+
+// Tests that MatcherCast<T>(m) works when m is a Matcher<U> where T
+// can be statically converted to U.
+TEST(MatcherCastTest, FromCompatibleType) {
+  Matcher<double> m1 = Eq(2.0);
+  Matcher<int> m2 = MatcherCast<int>(m1);
+  EXPECT_TRUE(m2.Matches(2));
+  EXPECT_FALSE(m2.Matches(3));
+
+  Matcher<IntValue> m3 = Truly(IsPositiveIntValue);
+  Matcher<int> m4 = MatcherCast<int>(m3);
+  // In the following, the arguments 1 and 0 are statically converted
+  // to IntValue objects, and then tested by the IsPositiveIntValue()
+  // predicate.
+  EXPECT_TRUE(m4.Matches(1));
+  EXPECT_FALSE(m4.Matches(0));
+}
+
+// Tests that MatcherCast<T>(m) works when m is a Matcher<const T&>.
+TEST(MatcherCastTest, FromConstReferenceToNonReference) {
+  Matcher<const int&> m1 = Eq(0);
+  Matcher<int> m2 = MatcherCast<int>(m1);
+  EXPECT_TRUE(m2.Matches(0));
+  EXPECT_FALSE(m2.Matches(1));
+}
+
+// Tests that MatcherCast<T>(m) works when m is a Matcher<T&>.
+TEST(MatcherCastTest, FromReferenceToNonReference) {
+  Matcher<int&> m1 = Eq(0);
+  Matcher<int> m2 = MatcherCast<int>(m1);
+  EXPECT_TRUE(m2.Matches(0));
+  EXPECT_FALSE(m2.Matches(1));
+}
+
+// Tests that MatcherCast<const T&>(m) works when m is a Matcher<T>.
+TEST(MatcherCastTest, FromNonReferenceToConstReference) {
+  Matcher<int> m1 = Eq(0);
+  Matcher<const int&> m2 = MatcherCast<const int&>(m1);
+  EXPECT_TRUE(m2.Matches(0));
+  EXPECT_FALSE(m2.Matches(1));
+}
+
+// Tests that MatcherCast<T&>(m) works when m is a Matcher<T>.
+TEST(MatcherCastTest, FromNonReferenceToReference) {
+  Matcher<int> m1 = Eq(0);
+  Matcher<int&> m2 = MatcherCast<int&>(m1);
+  int n = 0;
+  EXPECT_TRUE(m2.Matches(n));
+  n = 1;
+  EXPECT_FALSE(m2.Matches(n));
+}
+
+// Tests that MatcherCast<T>(m) works when m is a Matcher<T>.
+TEST(MatcherCastTest, FromSameType) {
+  Matcher<int> m1 = Eq(0);
+  Matcher<int> m2 = MatcherCast<int>(m1);
+  EXPECT_TRUE(m2.Matches(0));
+  EXPECT_FALSE(m2.Matches(1));
+}
+
+// Implicitly convertible form any type.
+struct ConvertibleFromAny {
+  ConvertibleFromAny(int a_value) : value(a_value) {}
+  template <typename T>
+  ConvertibleFromAny(const T& a_value) : value(-1) {
+    ADD_FAILURE() << "Conversion constructor called";
+  }
+  int value;
+};
+
+bool operator==(const ConvertibleFromAny& a, const ConvertibleFromAny& b) {
+  return a.value == b.value;
+}
+
+ostream& operator<<(ostream& os, const ConvertibleFromAny& a) {
+  return os << a.value;
+}
+
+TEST(MatcherCastTest, ConversionConstructorIsUsed) {
+  Matcher<ConvertibleFromAny> m = MatcherCast<ConvertibleFromAny>(1);
+  EXPECT_TRUE(m.Matches(ConvertibleFromAny(1)));
+  EXPECT_FALSE(m.Matches(ConvertibleFromAny(2)));
+}
+
+TEST(MatcherCastTest, FromConvertibleFromAny) {
+  Matcher<ConvertibleFromAny> m =
+      MatcherCast<ConvertibleFromAny>(Eq(ConvertibleFromAny(1)));
+  EXPECT_TRUE(m.Matches(ConvertibleFromAny(1)));
+  EXPECT_FALSE(m.Matches(ConvertibleFromAny(2)));
+}
+
+class Base {};
+class Derived : public Base {};
+
+// Tests that SafeMatcherCast<T>(m) works when m is a polymorphic matcher.
+TEST(SafeMatcherCastTest, FromPolymorphicMatcher) {
+  Matcher<char> m2 = SafeMatcherCast<char>(Eq(32));
+  EXPECT_TRUE(m2.Matches(' '));
+  EXPECT_FALSE(m2.Matches('\n'));
+}
+
+// Tests that SafeMatcherCast<T>(m) works when m is a Matcher<U> where
+// T and U are arithmetic types and T can be losslessly converted to
+// U.
+TEST(SafeMatcherCastTest, FromLosslesslyConvertibleArithmeticType) {
+  Matcher<double> m1 = DoubleEq(1.0);
+  Matcher<float> m2 = SafeMatcherCast<float>(m1);
+  EXPECT_TRUE(m2.Matches(1.0f));
+  EXPECT_FALSE(m2.Matches(2.0f));
+
+  Matcher<char> m3 = SafeMatcherCast<char>(TypedEq<int>('a'));
+  EXPECT_TRUE(m3.Matches('a'));
+  EXPECT_FALSE(m3.Matches('b'));
+}
+
+// Tests that SafeMatcherCast<T>(m) works when m is a Matcher<U> where T and U
+// are pointers or references to a derived and a base class, correspondingly.
+TEST(SafeMatcherCastTest, FromBaseClass) {
+  Derived d, d2;
+  Matcher<Base*> m1 = Eq(&d);
+  Matcher<Derived*> m2 = SafeMatcherCast<Derived*>(m1);
+  EXPECT_TRUE(m2.Matches(&d));
+  EXPECT_FALSE(m2.Matches(&d2));
+
+  Matcher<Base&> m3 = Ref(d);
+  Matcher<Derived&> m4 = SafeMatcherCast<Derived&>(m3);
+  EXPECT_TRUE(m4.Matches(d));
+  EXPECT_FALSE(m4.Matches(d2));
+}
+
+// Tests that SafeMatcherCast<T&>(m) works when m is a Matcher<const T&>.
+TEST(SafeMatcherCastTest, FromConstReferenceToReference) {
+  int n = 0;
+  Matcher<const int&> m1 = Ref(n);
+  Matcher<int&> m2 = SafeMatcherCast<int&>(m1);
+  int n1 = 0;
+  EXPECT_TRUE(m2.Matches(n));
+  EXPECT_FALSE(m2.Matches(n1));
+}
+
+// Tests that MatcherCast<const T&>(m) works when m is a Matcher<T>.
+TEST(SafeMatcherCastTest, FromNonReferenceToConstReference) {
+  Matcher<int> m1 = Eq(0);
+  Matcher<const int&> m2 = SafeMatcherCast<const int&>(m1);
+  EXPECT_TRUE(m2.Matches(0));
+  EXPECT_FALSE(m2.Matches(1));
+}
+
+// Tests that SafeMatcherCast<T&>(m) works when m is a Matcher<T>.
+TEST(SafeMatcherCastTest, FromNonReferenceToReference) {
+  Matcher<int> m1 = Eq(0);
+  Matcher<int&> m2 = SafeMatcherCast<int&>(m1);
+  int n = 0;
+  EXPECT_TRUE(m2.Matches(n));
+  n = 1;
+  EXPECT_FALSE(m2.Matches(n));
+}
+
+// Tests that SafeMatcherCast<T>(m) works when m is a Matcher<T>.
+TEST(SafeMatcherCastTest, FromSameType) {
+  Matcher<int> m1 = Eq(0);
+  Matcher<int> m2 = SafeMatcherCast<int>(m1);
+  EXPECT_TRUE(m2.Matches(0));
+  EXPECT_FALSE(m2.Matches(1));
+}
+
+TEST(SafeMatcherCastTest, ConversionConstructorIsUsed) {
+  Matcher<ConvertibleFromAny> m = SafeMatcherCast<ConvertibleFromAny>(1);
+  EXPECT_TRUE(m.Matches(ConvertibleFromAny(1)));
+  EXPECT_FALSE(m.Matches(ConvertibleFromAny(2)));
+}
+
+TEST(SafeMatcherCastTest, FromConvertibleFromAny) {
+  Matcher<ConvertibleFromAny> m =
+      SafeMatcherCast<ConvertibleFromAny>(Eq(ConvertibleFromAny(1)));
+  EXPECT_TRUE(m.Matches(ConvertibleFromAny(1)));
+  EXPECT_FALSE(m.Matches(ConvertibleFromAny(2)));
+}
+
+// Tests that A<T>() matches any value of type T.
+TEST(ATest, MatchesAnyValue) {
+  // Tests a matcher for a value type.
+  Matcher<double> m1 = A<double>();
+  EXPECT_TRUE(m1.Matches(91.43));
+  EXPECT_TRUE(m1.Matches(-15.32));
+
+  // Tests a matcher for a reference type.
+  int a = 2;
+  int b = -6;
+  Matcher<int&> m2 = A<int&>();
+  EXPECT_TRUE(m2.Matches(a));
+  EXPECT_TRUE(m2.Matches(b));
+}
+
+// Tests that A<T>() describes itself properly.
+TEST(ATest, CanDescribeSelf) {
+  EXPECT_EQ("is anything", Describe(A<bool>()));
+}
+
+// Tests that An<T>() matches any value of type T.
+TEST(AnTest, MatchesAnyValue) {
+  // Tests a matcher for a value type.
+  Matcher<int> m1 = An<int>();
+  EXPECT_TRUE(m1.Matches(9143));
+  EXPECT_TRUE(m1.Matches(-1532));
+
+  // Tests a matcher for a reference type.
+  int a = 2;
+  int b = -6;
+  Matcher<int&> m2 = An<int&>();
+  EXPECT_TRUE(m2.Matches(a));
+  EXPECT_TRUE(m2.Matches(b));
+}
+
+// Tests that An<T>() describes itself properly.
+TEST(AnTest, CanDescribeSelf) {
+  EXPECT_EQ("is anything", Describe(An<int>()));
+}
+
+// Tests that _ can be used as a matcher for any type and matches any
+// value of that type.
+TEST(UnderscoreTest, MatchesAnyValue) {
+  // Uses _ as a matcher for a value type.
+  Matcher<int> m1 = _;
+  EXPECT_TRUE(m1.Matches(123));
+  EXPECT_TRUE(m1.Matches(-242));
+
+  // Uses _ as a matcher for a reference type.
+  bool a = false;
+  const bool b = true;
+  Matcher<const bool&> m2 = _;
+  EXPECT_TRUE(m2.Matches(a));
+  EXPECT_TRUE(m2.Matches(b));
+}
+
+// Tests that _ describes itself properly.
+TEST(UnderscoreTest, CanDescribeSelf) {
+  Matcher<int> m = _;
+  EXPECT_EQ("is anything", Describe(m));
+}
+
+// Tests that Eq(x) matches any value equal to x.
+TEST(EqTest, MatchesEqualValue) {
+  // 2 C-strings with same content but different addresses.
+  const char a1[] = "hi";
+  const char a2[] = "hi";
+
+  Matcher<const char*> m1 = Eq(a1);
+  EXPECT_TRUE(m1.Matches(a1));
+  EXPECT_FALSE(m1.Matches(a2));
+}
+
+// Tests that Eq(v) describes itself properly.
+
+class Unprintable {
+ public:
+  Unprintable() : c_('a') {}
+
+  bool operator==(const Unprintable& /* rhs */) { return true; }
+ private:
+  char c_;
+};
+
+TEST(EqTest, CanDescribeSelf) {
+  Matcher<Unprintable> m = Eq(Unprintable());
+  EXPECT_EQ("is equal to 1-byte object <61>", Describe(m));
+}
+
+// Tests that Eq(v) can be used to match any type that supports
+// comparing with type T, where T is v's type.
+TEST(EqTest, IsPolymorphic) {
+  Matcher<int> m1 = Eq(1);
+  EXPECT_TRUE(m1.Matches(1));
+  EXPECT_FALSE(m1.Matches(2));
+
+  Matcher<char> m2 = Eq(1);
+  EXPECT_TRUE(m2.Matches('\1'));
+  EXPECT_FALSE(m2.Matches('a'));
+}
+
+// Tests that TypedEq<T>(v) matches values of type T that's equal to v.
+TEST(TypedEqTest, ChecksEqualityForGivenType) {
+  Matcher<char> m1 = TypedEq<char>('a');
+  EXPECT_TRUE(m1.Matches('a'));
+  EXPECT_FALSE(m1.Matches('b'));
+
+  Matcher<int> m2 = TypedEq<int>(6);
+  EXPECT_TRUE(m2.Matches(6));
+  EXPECT_FALSE(m2.Matches(7));
+}
+
+// Tests that TypedEq(v) describes itself properly.
+TEST(TypedEqTest, CanDescribeSelf) {
+  EXPECT_EQ("is equal to 2", Describe(TypedEq<int>(2)));
+}
+
+// Tests that TypedEq<T>(v) has type Matcher<T>.
+
+// Type<T>::IsTypeOf(v) compiles iff the type of value v is T, where T
+// is a "bare" type (i.e. not in the form of const U or U&).  If v's
+// type is not T, the compiler will generate a message about
+// "undefined referece".
+template <typename T>
+struct Type {
+  static bool IsTypeOf(const T& /* v */) { return true; }
+
+  template <typename T2>
+  static void IsTypeOf(T2 v);
+};
+
+TEST(TypedEqTest, HasSpecifiedType) {
+  // Verfies that the type of TypedEq<T>(v) is Matcher<T>.
+  Type<Matcher<int> >::IsTypeOf(TypedEq<int>(5));
+  Type<Matcher<double> >::IsTypeOf(TypedEq<double>(5));
+}
+
+// Tests that Ge(v) matches anything >= v.
+TEST(GeTest, ImplementsGreaterThanOrEqual) {
+  Matcher<int> m1 = Ge(0);
+  EXPECT_TRUE(m1.Matches(1));
+  EXPECT_TRUE(m1.Matches(0));
+  EXPECT_FALSE(m1.Matches(-1));
+}
+
+// Tests that Ge(v) describes itself properly.
+TEST(GeTest, CanDescribeSelf) {
+  Matcher<int> m = Ge(5);
+  EXPECT_EQ("is >= 5", Describe(m));
+}
+
+// Tests that Gt(v) matches anything > v.
+TEST(GtTest, ImplementsGreaterThan) {
+  Matcher<double> m1 = Gt(0);
+  EXPECT_TRUE(m1.Matches(1.0));
+  EXPECT_FALSE(m1.Matches(0.0));
+  EXPECT_FALSE(m1.Matches(-1.0));
+}
+
+// Tests that Gt(v) describes itself properly.
+TEST(GtTest, CanDescribeSelf) {
+  Matcher<int> m = Gt(5);
+  EXPECT_EQ("is > 5", Describe(m));
+}
+
+// Tests that Le(v) matches anything <= v.
+TEST(LeTest, ImplementsLessThanOrEqual) {
+  Matcher<char> m1 = Le('b');
+  EXPECT_TRUE(m1.Matches('a'));
+  EXPECT_TRUE(m1.Matches('b'));
+  EXPECT_FALSE(m1.Matches('c'));
+}
+
+// Tests that Le(v) describes itself properly.
+TEST(LeTest, CanDescribeSelf) {
+  Matcher<int> m = Le(5);
+  EXPECT_EQ("is <= 5", Describe(m));
+}
+
+// Tests that Lt(v) matches anything < v.
+TEST(LtTest, ImplementsLessThan) {
+  Matcher<const string&> m1 = Lt("Hello");
+  EXPECT_TRUE(m1.Matches("Abc"));
+  EXPECT_FALSE(m1.Matches("Hello"));
+  EXPECT_FALSE(m1.Matches("Hello, world!"));
+}
+
+// Tests that Lt(v) describes itself properly.
+TEST(LtTest, CanDescribeSelf) {
+  Matcher<int> m = Lt(5);
+  EXPECT_EQ("is < 5", Describe(m));
+}
+
+// Tests that Ne(v) matches anything != v.
+TEST(NeTest, ImplementsNotEqual) {
+  Matcher<int> m1 = Ne(0);
+  EXPECT_TRUE(m1.Matches(1));
+  EXPECT_TRUE(m1.Matches(-1));
+  EXPECT_FALSE(m1.Matches(0));
+}
+
+// Tests that Ne(v) describes itself properly.
+TEST(NeTest, CanDescribeSelf) {
+  Matcher<int> m = Ne(5);
+  EXPECT_EQ("isn't equal to 5", Describe(m));
+}
+
+// Tests that IsNull() matches any NULL pointer of any type.
+TEST(IsNullTest, MatchesNullPointer) {
+  Matcher<int*> m1 = IsNull();
+  int* p1 = NULL;
+  int n = 0;
+  EXPECT_TRUE(m1.Matches(p1));
+  EXPECT_FALSE(m1.Matches(&n));
+
+  Matcher<const char*> m2 = IsNull();
+  const char* p2 = NULL;
+  EXPECT_TRUE(m2.Matches(p2));
+  EXPECT_FALSE(m2.Matches("hi"));
+
+#if !GTEST_OS_SYMBIAN
+  // Nokia's Symbian compiler generates:
+  // gmock-matchers.h: ambiguous access to overloaded function
+  // gmock-matchers.h: 'testing::Matcher<void *>::Matcher(void *)'
+  // gmock-matchers.h: 'testing::Matcher<void *>::Matcher(const testing::
+  //     MatcherInterface<void *> *)'
+  // gmock-matchers.h:  (point of instantiation: 'testing::
+  //     gmock_matchers_test::IsNullTest_MatchesNullPointer_Test::TestBody()')
+  // gmock-matchers.h:   (instantiating: 'testing::PolymorphicMatc
+  Matcher<void*> m3 = IsNull();
+  void* p3 = NULL;
+  EXPECT_TRUE(m3.Matches(p3));
+  EXPECT_FALSE(m3.Matches(reinterpret_cast<void*>(0xbeef)));
+#endif
+}
+
+TEST(IsNullTest, LinkedPtr) {
+  const Matcher<linked_ptr<int> > m = IsNull();
+  const linked_ptr<int> null_p;
+  const linked_ptr<int> non_null_p(new int);
+
+  EXPECT_TRUE(m.Matches(null_p));
+  EXPECT_FALSE(m.Matches(non_null_p));
+}
+
+TEST(IsNullTest, ReferenceToConstLinkedPtr) {
+  const Matcher<const linked_ptr<double>&> m = IsNull();
+  const linked_ptr<double> null_p;
+  const linked_ptr<double> non_null_p(new double);
+
+  EXPECT_TRUE(m.Matches(null_p));
+  EXPECT_FALSE(m.Matches(non_null_p));
+}
+
+TEST(IsNullTest, ReferenceToConstScopedPtr) {
+  const Matcher<const scoped_ptr<double>&> m = IsNull();
+  const scoped_ptr<double> null_p;
+  const scoped_ptr<double> non_null_p(new double);
+
+  EXPECT_TRUE(m.Matches(null_p));
+  EXPECT_FALSE(m.Matches(non_null_p));
+}
+
+// Tests that IsNull() describes itself properly.
+TEST(IsNullTest, CanDescribeSelf) {
+  Matcher<int*> m = IsNull();
+  EXPECT_EQ("is NULL", Describe(m));
+  EXPECT_EQ("isn't NULL", DescribeNegation(m));
+}
+
+// Tests that NotNull() matches any non-NULL pointer of any type.
+TEST(NotNullTest, MatchesNonNullPointer) {
+  Matcher<int*> m1 = NotNull();
+  int* p1 = NULL;
+  int n = 0;
+  EXPECT_FALSE(m1.Matches(p1));
+  EXPECT_TRUE(m1.Matches(&n));
+
+  Matcher<const char*> m2 = NotNull();
+  const char* p2 = NULL;
+  EXPECT_FALSE(m2.Matches(p2));
+  EXPECT_TRUE(m2.Matches("hi"));
+}
+
+TEST(NotNullTest, LinkedPtr) {
+  const Matcher<linked_ptr<int> > m = NotNull();
+  const linked_ptr<int> null_p;
+  const linked_ptr<int> non_null_p(new int);
+
+  EXPECT_FALSE(m.Matches(null_p));
+  EXPECT_TRUE(m.Matches(non_null_p));
+}
+
+TEST(NotNullTest, ReferenceToConstLinkedPtr) {
+  const Matcher<const linked_ptr<double>&> m = NotNull();
+  const linked_ptr<double> null_p;
+  const linked_ptr<double> non_null_p(new double);
+
+  EXPECT_FALSE(m.Matches(null_p));
+  EXPECT_TRUE(m.Matches(non_null_p));
+}
+
+TEST(NotNullTest, ReferenceToConstScopedPtr) {
+  const Matcher<const scoped_ptr<double>&> m = NotNull();
+  const scoped_ptr<double> null_p;
+  const scoped_ptr<double> non_null_p(new double);
+
+  EXPECT_FALSE(m.Matches(null_p));
+  EXPECT_TRUE(m.Matches(non_null_p));
+}
+
+// Tests that NotNull() describes itself properly.
+TEST(NotNullTest, CanDescribeSelf) {
+  Matcher<int*> m = NotNull();
+  EXPECT_EQ("isn't NULL", Describe(m));
+}
+
+// Tests that Ref(variable) matches an argument that references
+// 'variable'.
+TEST(RefTest, MatchesSameVariable) {
+  int a = 0;
+  int b = 0;
+  Matcher<int&> m = Ref(a);
+  EXPECT_TRUE(m.Matches(a));
+  EXPECT_FALSE(m.Matches(b));
+}
+
+// Tests that Ref(variable) describes itself properly.
+TEST(RefTest, CanDescribeSelf) {
+  int n = 5;
+  Matcher<int&> m = Ref(n);
+  stringstream ss;
+  ss << "references the variable @" << &n << " 5";
+  EXPECT_EQ(string(ss.str()), Describe(m));
+}
+
+// Test that Ref(non_const_varialbe) can be used as a matcher for a
+// const reference.
+TEST(RefTest, CanBeUsedAsMatcherForConstReference) {
+  int a = 0;
+  int b = 0;
+  Matcher<const int&> m = Ref(a);
+  EXPECT_TRUE(m.Matches(a));
+  EXPECT_FALSE(m.Matches(b));
+}
+
+// Tests that Ref(variable) is covariant, i.e. Ref(derived) can be
+// used wherever Ref(base) can be used (Ref(derived) is a sub-type
+// of Ref(base), but not vice versa.
+
+TEST(RefTest, IsCovariant) {
+  Base base, base2;
+  Derived derived;
+  Matcher<const Base&> m1 = Ref(base);
+  EXPECT_TRUE(m1.Matches(base));
+  EXPECT_FALSE(m1.Matches(base2));
+  EXPECT_FALSE(m1.Matches(derived));
+
+  m1 = Ref(derived);
+  EXPECT_TRUE(m1.Matches(derived));
+  EXPECT_FALSE(m1.Matches(base));
+  EXPECT_FALSE(m1.Matches(base2));
+}
+
+TEST(RefTest, ExplainsResult) {
+  int n = 0;
+  EXPECT_THAT(Explain(Matcher<const int&>(Ref(n)), n),
+              StartsWith("which is located @"));
+
+  int m = 0;
+  EXPECT_THAT(Explain(Matcher<const int&>(Ref(n)), m),
+              StartsWith("which is located @"));
+}
+
+// Tests string comparison matchers.
+
+TEST(StrEqTest, MatchesEqualString) {
+  Matcher<const char*> m = StrEq(string("Hello"));
+  EXPECT_TRUE(m.Matches("Hello"));
+  EXPECT_FALSE(m.Matches("hello"));
+  EXPECT_FALSE(m.Matches(NULL));
+
+  Matcher<const string&> m2 = StrEq("Hello");
+  EXPECT_TRUE(m2.Matches("Hello"));
+  EXPECT_FALSE(m2.Matches("Hi"));
+}
+
+TEST(StrEqTest, CanDescribeSelf) {
+  Matcher<string> m = StrEq("Hi-\'\"?\\\a\b\f\n\r\t\v\xD3");
+  EXPECT_EQ("is equal to \"Hi-\'\\\"?\\\\\\a\\b\\f\\n\\r\\t\\v\\xD3\"",
+      Describe(m));
+
+  string str("01204500800");
+  str[3] = '\0';
+  Matcher<string> m2 = StrEq(str);
+  EXPECT_EQ("is equal to \"012\\04500800\"", Describe(m2));
+  str[0] = str[6] = str[7] = str[9] = str[10] = '\0';
+  Matcher<string> m3 = StrEq(str);
+  EXPECT_EQ("is equal to \"\\012\\045\\0\\08\\0\\0\"", Describe(m3));
+}
+
+TEST(StrNeTest, MatchesUnequalString) {
+  Matcher<const char*> m = StrNe("Hello");
+  EXPECT_TRUE(m.Matches(""));
+  EXPECT_TRUE(m.Matches(NULL));
+  EXPECT_FALSE(m.Matches("Hello"));
+
+  Matcher<string> m2 = StrNe(string("Hello"));
+  EXPECT_TRUE(m2.Matches("hello"));
+  EXPECT_FALSE(m2.Matches("Hello"));
+}
+
+TEST(StrNeTest, CanDescribeSelf) {
+  Matcher<const char*> m = StrNe("Hi");
+  EXPECT_EQ("isn't equal to \"Hi\"", Describe(m));
+}
+
+TEST(StrCaseEqTest, MatchesEqualStringIgnoringCase) {
+  Matcher<const char*> m = StrCaseEq(string("Hello"));
+  EXPECT_TRUE(m.Matches("Hello"));
+  EXPECT_TRUE(m.Matches("hello"));
+  EXPECT_FALSE(m.Matches("Hi"));
+  EXPECT_FALSE(m.Matches(NULL));
+
+  Matcher<const string&> m2 = StrCaseEq("Hello");
+  EXPECT_TRUE(m2.Matches("hello"));
+  EXPECT_FALSE(m2.Matches("Hi"));
+}
+
+TEST(StrCaseEqTest, MatchesEqualStringWith0IgnoringCase) {
+  string str1("oabocdooeoo");
+  string str2("OABOCDOOEOO");
+  Matcher<const string&> m0 = StrCaseEq(str1);
+  EXPECT_FALSE(m0.Matches(str2 + string(1, '\0')));
+
+  str1[3] = str2[3] = '\0';
+  Matcher<const string&> m1 = StrCaseEq(str1);
+  EXPECT_TRUE(m1.Matches(str2));
+
+  str1[0] = str1[6] = str1[7] = str1[10] = '\0';
+  str2[0] = str2[6] = str2[7] = str2[10] = '\0';
+  Matcher<const string&> m2 = StrCaseEq(str1);
+  str1[9] = str2[9] = '\0';
+  EXPECT_FALSE(m2.Matches(str2));
+
+  Matcher<const string&> m3 = StrCaseEq(str1);
+  EXPECT_TRUE(m3.Matches(str2));
+
+  EXPECT_FALSE(m3.Matches(str2 + "x"));
+  str2.append(1, '\0');
+  EXPECT_FALSE(m3.Matches(str2));
+  EXPECT_FALSE(m3.Matches(string(str2, 0, 9)));
+}
+
+TEST(StrCaseEqTest, CanDescribeSelf) {
+  Matcher<string> m = StrCaseEq("Hi");
+  EXPECT_EQ("is equal to (ignoring case) \"Hi\"", Describe(m));
+}
+
+TEST(StrCaseNeTest, MatchesUnequalStringIgnoringCase) {
+  Matcher<const char*> m = StrCaseNe("Hello");
+  EXPECT_TRUE(m.Matches("Hi"));
+  EXPECT_TRUE(m.Matches(NULL));
+  EXPECT_FALSE(m.Matches("Hello"));
+  EXPECT_FALSE(m.Matches("hello"));
+
+  Matcher<string> m2 = StrCaseNe(string("Hello"));
+  EXPECT_TRUE(m2.Matches(""));
+  EXPECT_FALSE(m2.Matches("Hello"));
+}
+
+TEST(StrCaseNeTest, CanDescribeSelf) {
+  Matcher<const char*> m = StrCaseNe("Hi");
+  EXPECT_EQ("isn't equal to (ignoring case) \"Hi\"", Describe(m));
+}
+
+// Tests that HasSubstr() works for matching string-typed values.
+TEST(HasSubstrTest, WorksForStringClasses) {
+  const Matcher<string> m1 = HasSubstr("foo");
+  EXPECT_TRUE(m1.Matches(string("I love food.")));
+  EXPECT_FALSE(m1.Matches(string("tofo")));
+
+  const Matcher<const std::string&> m2 = HasSubstr("foo");
+  EXPECT_TRUE(m2.Matches(std::string("I love food.")));
+  EXPECT_FALSE(m2.Matches(std::string("tofo")));
+}
+
+// Tests that HasSubstr() works for matching C-string-typed values.
+TEST(HasSubstrTest, WorksForCStrings) {
+  const Matcher<char*> m1 = HasSubstr("foo");
+  EXPECT_TRUE(m1.Matches(const_cast<char*>("I love food.")));
+  EXPECT_FALSE(m1.Matches(const_cast<char*>("tofo")));
+  EXPECT_FALSE(m1.Matches(NULL));
+
+  const Matcher<const char*> m2 = HasSubstr("foo");
+  EXPECT_TRUE(m2.Matches("I love food."));
+  EXPECT_FALSE(m2.Matches("tofo"));
+  EXPECT_FALSE(m2.Matches(NULL));
+}
+
+// Tests that HasSubstr(s) describes itself properly.
+TEST(HasSubstrTest, CanDescribeSelf) {
+  Matcher<string> m = HasSubstr("foo\n\"");
+  EXPECT_EQ("has substring \"foo\\n\\\"\"", Describe(m));
+}
+
+TEST(KeyTest, CanDescribeSelf) {
+  Matcher<const pair<std::string, int>&> m = Key("foo");
+  EXPECT_EQ("has a key that is equal to \"foo\"", Describe(m));
+  EXPECT_EQ("doesn't have a key that is equal to \"foo\"", DescribeNegation(m));
+}
+
+TEST(KeyTest, ExplainsResult) {
+  Matcher<pair<int, bool> > m = Key(GreaterThan(10));
+  EXPECT_EQ("whose first field is a value which is 5 less than 10",
+            Explain(m, make_pair(5, true)));
+  EXPECT_EQ("whose first field is a value which is 5 more than 10",
+            Explain(m, make_pair(15, true)));
+}
+
+TEST(KeyTest, MatchesCorrectly) {
+  pair<int, std::string> p(25, "foo");
+  EXPECT_THAT(p, Key(25));
+  EXPECT_THAT(p, Not(Key(42)));
+  EXPECT_THAT(p, Key(Ge(20)));
+  EXPECT_THAT(p, Not(Key(Lt(25))));
+}
+
+TEST(KeyTest, SafelyCastsInnerMatcher) {
+  Matcher<int> is_positive = Gt(0);
+  Matcher<int> is_negative = Lt(0);
+  pair<char, bool> p('a', true);
+  EXPECT_THAT(p, Key(is_positive));
+  EXPECT_THAT(p, Not(Key(is_negative)));
+}
+
+TEST(KeyTest, InsideContainsUsingMap) {
+  map<int, char> container;
+  container.insert(make_pair(1, 'a'));
+  container.insert(make_pair(2, 'b'));
+  container.insert(make_pair(4, 'c'));
+  EXPECT_THAT(container, Contains(Key(1)));
+  EXPECT_THAT(container, Not(Contains(Key(3))));
+}
+
+TEST(KeyTest, InsideContainsUsingMultimap) {
+  multimap<int, char> container;
+  container.insert(make_pair(1, 'a'));
+  container.insert(make_pair(2, 'b'));
+  container.insert(make_pair(4, 'c'));
+
+  EXPECT_THAT(container, Not(Contains(Key(25))));
+  container.insert(make_pair(25, 'd'));
+  EXPECT_THAT(container, Contains(Key(25)));
+  container.insert(make_pair(25, 'e'));
+  EXPECT_THAT(container, Contains(Key(25)));
+
+  EXPECT_THAT(container, Contains(Key(1)));
+  EXPECT_THAT(container, Not(Contains(Key(3))));
+}
+
+TEST(PairTest, Typing) {
+  // Test verifies the following type conversions can be compiled.
+  Matcher<const pair<const char*, int>&> m1 = Pair("foo", 42);
+  Matcher<const pair<const char*, int> > m2 = Pair("foo", 42);
+  Matcher<pair<const char*, int> > m3 = Pair("foo", 42);
+
+  Matcher<pair<int, const std::string> > m4 = Pair(25, "42");
+  Matcher<pair<const std::string, int> > m5 = Pair("25", 42);
+}
+
+TEST(PairTest, CanDescribeSelf) {
+  Matcher<const pair<std::string, int>&> m1 = Pair("foo", 42);
+  EXPECT_EQ("has a first field that is equal to \"foo\""
+            ", and has a second field that is equal to 42",
+            Describe(m1));
+  EXPECT_EQ("has a first field that isn't equal to \"foo\""
+            ", or has a second field that isn't equal to 42",
+            DescribeNegation(m1));
+  // Double and triple negation (1 or 2 times not and description of negation).
+  Matcher<const pair<int, int>&> m2 = Not(Pair(Not(13), 42));
+  EXPECT_EQ("has a first field that isn't equal to 13"
+            ", and has a second field that is equal to 42",
+            DescribeNegation(m2));
+}
+
+TEST(PairTest, CanExplainMatchResultTo) {
+  // If neither field matches, Pair() should explain about the first
+  // field.
+  const Matcher<pair<int, int> > m = Pair(GreaterThan(0), GreaterThan(0));
+  EXPECT_EQ("whose first field does not match, which is 1 less than 0",
+            Explain(m, make_pair(-1, -2)));
+
+  // If the first field matches but the second doesn't, Pair() should
+  // explain about the second field.
+  EXPECT_EQ("whose second field does not match, which is 2 less than 0",
+            Explain(m, make_pair(1, -2)));
+
+  // If the first field doesn't match but the second does, Pair()
+  // should explain about the first field.
+  EXPECT_EQ("whose first field does not match, which is 1 less than 0",
+            Explain(m, make_pair(-1, 2)));
+
+  // If both fields match, Pair() should explain about them both.
+  EXPECT_EQ("whose both fields match, where the first field is a value "
+            "which is 1 more than 0, and the second field is a value "
+            "which is 2 more than 0",
+            Explain(m, make_pair(1, 2)));
+
+  // If only the first match has an explanation, only this explanation should
+  // be printed.
+  const Matcher<pair<int, int> > explain_first = Pair(GreaterThan(0), 0);
+  EXPECT_EQ("whose both fields match, where the first field is a value "
+            "which is 1 more than 0",
+            Explain(explain_first, make_pair(1, 0)));
+
+  // If only the second match has an explanation, only this explanation should
+  // be printed.
+  const Matcher<pair<int, int> > explain_second = Pair(0, GreaterThan(0));
+  EXPECT_EQ("whose both fields match, where the second field is a value "
+            "which is 1 more than 0",
+            Explain(explain_second, make_pair(0, 1)));
+}
+
+TEST(PairTest, MatchesCorrectly) {
+  pair<int, std::string> p(25, "foo");
+
+  // Both fields match.
+  EXPECT_THAT(p, Pair(25, "foo"));
+  EXPECT_THAT(p, Pair(Ge(20), HasSubstr("o")));
+
+  // 'first' doesnt' match, but 'second' matches.
+  EXPECT_THAT(p, Not(Pair(42, "foo")));
+  EXPECT_THAT(p, Not(Pair(Lt(25), "foo")));
+
+  // 'first' matches, but 'second' doesn't match.
+  EXPECT_THAT(p, Not(Pair(25, "bar")));
+  EXPECT_THAT(p, Not(Pair(25, Not("foo"))));
+
+  // Neither field matches.
+  EXPECT_THAT(p, Not(Pair(13, "bar")));
+  EXPECT_THAT(p, Not(Pair(Lt(13), HasSubstr("a"))));
+}
+
+TEST(PairTest, SafelyCastsInnerMatchers) {
+  Matcher<int> is_positive = Gt(0);
+  Matcher<int> is_negative = Lt(0);
+  pair<char, bool> p('a', true);
+  EXPECT_THAT(p, Pair(is_positive, _));
+  EXPECT_THAT(p, Not(Pair(is_negative, _)));
+  EXPECT_THAT(p, Pair(_, is_positive));
+  EXPECT_THAT(p, Not(Pair(_, is_negative)));
+}
+
+TEST(PairTest, InsideContainsUsingMap) {
+  map<int, char> container;
+  container.insert(make_pair(1, 'a'));
+  container.insert(make_pair(2, 'b'));
+  container.insert(make_pair(4, 'c'));
+  EXPECT_THAT(container, Contains(Pair(1, 'a')));
+  EXPECT_THAT(container, Contains(Pair(1, _)));
+  EXPECT_THAT(container, Contains(Pair(_, 'a')));
+  EXPECT_THAT(container, Not(Contains(Pair(3, _))));
+}
+
+// Tests StartsWith(s).
+
+TEST(StartsWithTest, MatchesStringWithGivenPrefix) {
+  const Matcher<const char*> m1 = StartsWith(string(""));
+  EXPECT_TRUE(m1.Matches("Hi"));
+  EXPECT_TRUE(m1.Matches(""));
+  EXPECT_FALSE(m1.Matches(NULL));
+
+  const Matcher<const string&> m2 = StartsWith("Hi");
+  EXPECT_TRUE(m2.Matches("Hi"));
+  EXPECT_TRUE(m2.Matches("Hi Hi!"));
+  EXPECT_TRUE(m2.Matches("High"));
+  EXPECT_FALSE(m2.Matches("H"));
+  EXPECT_FALSE(m2.Matches(" Hi"));
+}
+
+TEST(StartsWithTest, CanDescribeSelf) {
+  Matcher<const std::string> m = StartsWith("Hi");
+  EXPECT_EQ("starts with \"Hi\"", Describe(m));
+}
+
+// Tests EndsWith(s).
+
+TEST(EndsWithTest, MatchesStringWithGivenSuffix) {
+  const Matcher<const char*> m1 = EndsWith("");
+  EXPECT_TRUE(m1.Matches("Hi"));
+  EXPECT_TRUE(m1.Matches(""));
+  EXPECT_FALSE(m1.Matches(NULL));
+
+  const Matcher<const string&> m2 = EndsWith(string("Hi"));
+  EXPECT_TRUE(m2.Matches("Hi"));
+  EXPECT_TRUE(m2.Matches("Wow Hi Hi"));
+  EXPECT_TRUE(m2.Matches("Super Hi"));
+  EXPECT_FALSE(m2.Matches("i"));
+  EXPECT_FALSE(m2.Matches("Hi "));
+}
+
+TEST(EndsWithTest, CanDescribeSelf) {
+  Matcher<const std::string> m = EndsWith("Hi");
+  EXPECT_EQ("ends with \"Hi\"", Describe(m));
+}
+
+// Tests MatchesRegex().
+
+TEST(MatchesRegexTest, MatchesStringMatchingGivenRegex) {
+  const Matcher<const char*> m1 = MatchesRegex("a.*z");
+  EXPECT_TRUE(m1.Matches("az"));
+  EXPECT_TRUE(m1.Matches("abcz"));
+  EXPECT_FALSE(m1.Matches(NULL));
+
+  const Matcher<const string&> m2 = MatchesRegex(new RE("a.*z"));
+  EXPECT_TRUE(m2.Matches("azbz"));
+  EXPECT_FALSE(m2.Matches("az1"));
+  EXPECT_FALSE(m2.Matches("1az"));
+}
+
+TEST(MatchesRegexTest, CanDescribeSelf) {
+  Matcher<const std::string> m1 = MatchesRegex(string("Hi.*"));
+  EXPECT_EQ("matches regular expression \"Hi.*\"", Describe(m1));
+
+  Matcher<const char*> m2 = MatchesRegex(new RE("a.*"));
+  EXPECT_EQ("matches regular expression \"a.*\"", Describe(m2));
+}
+
+// Tests ContainsRegex().
+
+TEST(ContainsRegexTest, MatchesStringContainingGivenRegex) {
+  const Matcher<const char*> m1 = ContainsRegex(string("a.*z"));
+  EXPECT_TRUE(m1.Matches("az"));
+  EXPECT_TRUE(m1.Matches("0abcz1"));
+  EXPECT_FALSE(m1.Matches(NULL));
+
+  const Matcher<const string&> m2 = ContainsRegex(new RE("a.*z"));
+  EXPECT_TRUE(m2.Matches("azbz"));
+  EXPECT_TRUE(m2.Matches("az1"));
+  EXPECT_FALSE(m2.Matches("1a"));
+}
+
+TEST(ContainsRegexTest, CanDescribeSelf) {
+  Matcher<const std::string> m1 = ContainsRegex("Hi.*");
+  EXPECT_EQ("contains regular expression \"Hi.*\"", Describe(m1));
+
+  Matcher<const char*> m2 = ContainsRegex(new RE("a.*"));
+  EXPECT_EQ("contains regular expression \"a.*\"", Describe(m2));
+}
+
+// Tests for wide strings.
+#if GTEST_HAS_STD_WSTRING
+TEST(StdWideStrEqTest, MatchesEqual) {
+  Matcher<const wchar_t*> m = StrEq(::std::wstring(L"Hello"));
+  EXPECT_TRUE(m.Matches(L"Hello"));
+  EXPECT_FALSE(m.Matches(L"hello"));
+  EXPECT_FALSE(m.Matches(NULL));
+
+  Matcher<const ::std::wstring&> m2 = StrEq(L"Hello");
+  EXPECT_TRUE(m2.Matches(L"Hello"));
+  EXPECT_FALSE(m2.Matches(L"Hi"));
+
+  Matcher<const ::std::wstring&> m3 = StrEq(L"\xD3\x576\x8D3\xC74D");
+  EXPECT_TRUE(m3.Matches(L"\xD3\x576\x8D3\xC74D"));
+  EXPECT_FALSE(m3.Matches(L"\xD3\x576\x8D3\xC74E"));
+
+  ::std::wstring str(L"01204500800");
+  str[3] = L'\0';
+  Matcher<const ::std::wstring&> m4 = StrEq(str);
+  EXPECT_TRUE(m4.Matches(str));
+  str[0] = str[6] = str[7] = str[9] = str[10] = L'\0';
+  Matcher<const ::std::wstring&> m5 = StrEq(str);
+  EXPECT_TRUE(m5.Matches(str));
+}
+
+TEST(StdWideStrEqTest, CanDescribeSelf) {
+  Matcher< ::std::wstring> m = StrEq(L"Hi-\'\"?\\\a\b\f\n\r\t\v");
+  EXPECT_EQ("is equal to L\"Hi-\'\\\"?\\\\\\a\\b\\f\\n\\r\\t\\v\"",
+    Describe(m));
+
+  Matcher< ::std::wstring> m2 = StrEq(L"\xD3\x576\x8D3\xC74D");
+  EXPECT_EQ("is equal to L\"\\xD3\\x576\\x8D3\\xC74D\"",
+    Describe(m2));
+
+  ::std::wstring str(L"01204500800");
+  str[3] = L'\0';
+  Matcher<const ::std::wstring&> m4 = StrEq(str);
+  EXPECT_EQ("is equal to L\"012\\04500800\"", Describe(m4));
+  str[0] = str[6] = str[7] = str[9] = str[10] = L'\0';
+  Matcher<const ::std::wstring&> m5 = StrEq(str);
+  EXPECT_EQ("is equal to L\"\\012\\045\\0\\08\\0\\0\"", Describe(m5));
+}
+
+TEST(StdWideStrNeTest, MatchesUnequalString) {
+  Matcher<const wchar_t*> m = StrNe(L"Hello");
+  EXPECT_TRUE(m.Matches(L""));
+  EXPECT_TRUE(m.Matches(NULL));
+  EXPECT_FALSE(m.Matches(L"Hello"));
+
+  Matcher< ::std::wstring> m2 = StrNe(::std::wstring(L"Hello"));
+  EXPECT_TRUE(m2.Matches(L"hello"));
+  EXPECT_FALSE(m2.Matches(L"Hello"));
+}
+
+TEST(StdWideStrNeTest, CanDescribeSelf) {
+  Matcher<const wchar_t*> m = StrNe(L"Hi");
+  EXPECT_EQ("isn't equal to L\"Hi\"", Describe(m));
+}
+
+TEST(StdWideStrCaseEqTest, MatchesEqualStringIgnoringCase) {
+  Matcher<const wchar_t*> m = StrCaseEq(::std::wstring(L"Hello"));
+  EXPECT_TRUE(m.Matches(L"Hello"));
+  EXPECT_TRUE(m.Matches(L"hello"));
+  EXPECT_FALSE(m.Matches(L"Hi"));
+  EXPECT_FALSE(m.Matches(NULL));
+
+  Matcher<const ::std::wstring&> m2 = StrCaseEq(L"Hello");
+  EXPECT_TRUE(m2.Matches(L"hello"));
+  EXPECT_FALSE(m2.Matches(L"Hi"));
+}
+
+TEST(StdWideStrCaseEqTest, MatchesEqualStringWith0IgnoringCase) {
+  ::std::wstring str1(L"oabocdooeoo");
+  ::std::wstring str2(L"OABOCDOOEOO");
+  Matcher<const ::std::wstring&> m0 = StrCaseEq(str1);
+  EXPECT_FALSE(m0.Matches(str2 + ::std::wstring(1, L'\0')));
+
+  str1[3] = str2[3] = L'\0';
+  Matcher<const ::std::wstring&> m1 = StrCaseEq(str1);
+  EXPECT_TRUE(m1.Matches(str2));
+
+  str1[0] = str1[6] = str1[7] = str1[10] = L'\0';
+  str2[0] = str2[6] = str2[7] = str2[10] = L'\0';
+  Matcher<const ::std::wstring&> m2 = StrCaseEq(str1);
+  str1[9] = str2[9] = L'\0';
+  EXPECT_FALSE(m2.Matches(str2));
+
+  Matcher<const ::std::wstring&> m3 = StrCaseEq(str1);
+  EXPECT_TRUE(m3.Matches(str2));
+
+  EXPECT_FALSE(m3.Matches(str2 + L"x"));
+  str2.append(1, L'\0');
+  EXPECT_FALSE(m3.Matches(str2));
+  EXPECT_FALSE(m3.Matches(::std::wstring(str2, 0, 9)));
+}
+
+TEST(StdWideStrCaseEqTest, CanDescribeSelf) {
+  Matcher< ::std::wstring> m = StrCaseEq(L"Hi");
+  EXPECT_EQ("is equal to (ignoring case) L\"Hi\"", Describe(m));
+}
+
+TEST(StdWideStrCaseNeTest, MatchesUnequalStringIgnoringCase) {
+  Matcher<const wchar_t*> m = StrCaseNe(L"Hello");
+  EXPECT_TRUE(m.Matches(L"Hi"));
+  EXPECT_TRUE(m.Matches(NULL));
+  EXPECT_FALSE(m.Matches(L"Hello"));
+  EXPECT_FALSE(m.Matches(L"hello"));
+
+  Matcher< ::std::wstring> m2 = StrCaseNe(::std::wstring(L"Hello"));
+  EXPECT_TRUE(m2.Matches(L""));
+  EXPECT_FALSE(m2.Matches(L"Hello"));
+}
+
+TEST(StdWideStrCaseNeTest, CanDescribeSelf) {
+  Matcher<const wchar_t*> m = StrCaseNe(L"Hi");
+  EXPECT_EQ("isn't equal to (ignoring case) L\"Hi\"", Describe(m));
+}
+
+// Tests that HasSubstr() works for matching wstring-typed values.
+TEST(StdWideHasSubstrTest, WorksForStringClasses) {
+  const Matcher< ::std::wstring> m1 = HasSubstr(L"foo");
+  EXPECT_TRUE(m1.Matches(::std::wstring(L"I love food.")));
+  EXPECT_FALSE(m1.Matches(::std::wstring(L"tofo")));
+
+  const Matcher<const ::std::wstring&> m2 = HasSubstr(L"foo");
+  EXPECT_TRUE(m2.Matches(::std::wstring(L"I love food.")));
+  EXPECT_FALSE(m2.Matches(::std::wstring(L"tofo")));
+}
+
+// Tests that HasSubstr() works for matching C-wide-string-typed values.
+TEST(StdWideHasSubstrTest, WorksForCStrings) {
+  const Matcher<wchar_t*> m1 = HasSubstr(L"foo");
+  EXPECT_TRUE(m1.Matches(const_cast<wchar_t*>(L"I love food.")));
+  EXPECT_FALSE(m1.Matches(const_cast<wchar_t*>(L"tofo")));
+  EXPECT_FALSE(m1.Matches(NULL));
+
+  const Matcher<const wchar_t*> m2 = HasSubstr(L"foo");
+  EXPECT_TRUE(m2.Matches(L"I love food."));
+  EXPECT_FALSE(m2.Matches(L"tofo"));
+  EXPECT_FALSE(m2.Matches(NULL));
+}
+
+// Tests that HasSubstr(s) describes itself properly.
+TEST(StdWideHasSubstrTest, CanDescribeSelf) {
+  Matcher< ::std::wstring> m = HasSubstr(L"foo\n\"");
+  EXPECT_EQ("has substring L\"foo\\n\\\"\"", Describe(m));
+}
+
+// Tests StartsWith(s).
+
+TEST(StdWideStartsWithTest, MatchesStringWithGivenPrefix) {
+  const Matcher<const wchar_t*> m1 = StartsWith(::std::wstring(L""));
+  EXPECT_TRUE(m1.Matches(L"Hi"));
+  EXPECT_TRUE(m1.Matches(L""));
+  EXPECT_FALSE(m1.Matches(NULL));
+
+  const Matcher<const ::std::wstring&> m2 = StartsWith(L"Hi");
+  EXPECT_TRUE(m2.Matches(L"Hi"));
+  EXPECT_TRUE(m2.Matches(L"Hi Hi!"));
+  EXPECT_TRUE(m2.Matches(L"High"));
+  EXPECT_FALSE(m2.Matches(L"H"));
+  EXPECT_FALSE(m2.Matches(L" Hi"));
+}
+
+TEST(StdWideStartsWithTest, CanDescribeSelf) {
+  Matcher<const ::std::wstring> m = StartsWith(L"Hi");
+  EXPECT_EQ("starts with L\"Hi\"", Describe(m));
+}
+
+// Tests EndsWith(s).
+
+TEST(StdWideEndsWithTest, MatchesStringWithGivenSuffix) {
+  const Matcher<const wchar_t*> m1 = EndsWith(L"");
+  EXPECT_TRUE(m1.Matches(L"Hi"));
+  EXPECT_TRUE(m1.Matches(L""));
+  EXPECT_FALSE(m1.Matches(NULL));
+
+  const Matcher<const ::std::wstring&> m2 = EndsWith(::std::wstring(L"Hi"));
+  EXPECT_TRUE(m2.Matches(L"Hi"));
+  EXPECT_TRUE(m2.Matches(L"Wow Hi Hi"));
+  EXPECT_TRUE(m2.Matches(L"Super Hi"));
+  EXPECT_FALSE(m2.Matches(L"i"));
+  EXPECT_FALSE(m2.Matches(L"Hi "));
+}
+
+TEST(StdWideEndsWithTest, CanDescribeSelf) {
+  Matcher<const ::std::wstring> m = EndsWith(L"Hi");
+  EXPECT_EQ("ends with L\"Hi\"", Describe(m));
+}
+
+#endif  // GTEST_HAS_STD_WSTRING
+
+#if GTEST_HAS_GLOBAL_WSTRING
+TEST(GlobalWideStrEqTest, MatchesEqual) {
+  Matcher<const wchar_t*> m = StrEq(::wstring(L"Hello"));
+  EXPECT_TRUE(m.Matches(L"Hello"));
+  EXPECT_FALSE(m.Matches(L"hello"));
+  EXPECT_FALSE(m.Matches(NULL));
+
+  Matcher<const ::wstring&> m2 = StrEq(L"Hello");
+  EXPECT_TRUE(m2.Matches(L"Hello"));
+  EXPECT_FALSE(m2.Matches(L"Hi"));
+
+  Matcher<const ::wstring&> m3 = StrEq(L"\xD3\x576\x8D3\xC74D");
+  EXPECT_TRUE(m3.Matches(L"\xD3\x576\x8D3\xC74D"));
+  EXPECT_FALSE(m3.Matches(L"\xD3\x576\x8D3\xC74E"));
+
+  ::wstring str(L"01204500800");
+  str[3] = L'\0';
+  Matcher<const ::wstring&> m4 = StrEq(str);
+  EXPECT_TRUE(m4.Matches(str));
+  str[0] = str[6] = str[7] = str[9] = str[10] = L'\0';
+  Matcher<const ::wstring&> m5 = StrEq(str);
+  EXPECT_TRUE(m5.Matches(str));
+}
+
+TEST(GlobalWideStrEqTest, CanDescribeSelf) {
+  Matcher< ::wstring> m = StrEq(L"Hi-\'\"?\\\a\b\f\n\r\t\v");
+  EXPECT_EQ("is equal to L\"Hi-\'\\\"?\\\\\\a\\b\\f\\n\\r\\t\\v\"",
+    Describe(m));
+
+  Matcher< ::wstring> m2 = StrEq(L"\xD3\x576\x8D3\xC74D");
+  EXPECT_EQ("is equal to L\"\\xD3\\x576\\x8D3\\xC74D\"",
+    Describe(m2));
+
+  ::wstring str(L"01204500800");
+  str[3] = L'\0';
+  Matcher<const ::wstring&> m4 = StrEq(str);
+  EXPECT_EQ("is equal to L\"012\\04500800\"", Describe(m4));
+  str[0] = str[6] = str[7] = str[9] = str[10] = L'\0';
+  Matcher<const ::wstring&> m5 = StrEq(str);
+  EXPECT_EQ("is equal to L\"\\012\\045\\0\\08\\0\\0\"", Describe(m5));
+}
+
+TEST(GlobalWideStrNeTest, MatchesUnequalString) {
+  Matcher<const wchar_t*> m = StrNe(L"Hello");
+  EXPECT_TRUE(m.Matches(L""));
+  EXPECT_TRUE(m.Matches(NULL));
+  EXPECT_FALSE(m.Matches(L"Hello"));
+
+  Matcher< ::wstring> m2 = StrNe(::wstring(L"Hello"));
+  EXPECT_TRUE(m2.Matches(L"hello"));
+  EXPECT_FALSE(m2.Matches(L"Hello"));
+}
+
+TEST(GlobalWideStrNeTest, CanDescribeSelf) {
+  Matcher<const wchar_t*> m = StrNe(L"Hi");
+  EXPECT_EQ("isn't equal to L\"Hi\"", Describe(m));
+}
+
+TEST(GlobalWideStrCaseEqTest, MatchesEqualStringIgnoringCase) {
+  Matcher<const wchar_t*> m = StrCaseEq(::wstring(L"Hello"));
+  EXPECT_TRUE(m.Matches(L"Hello"));
+  EXPECT_TRUE(m.Matches(L"hello"));
+  EXPECT_FALSE(m.Matches(L"Hi"));
+  EXPECT_FALSE(m.Matches(NULL));
+
+  Matcher<const ::wstring&> m2 = StrCaseEq(L"Hello");
+  EXPECT_TRUE(m2.Matches(L"hello"));
+  EXPECT_FALSE(m2.Matches(L"Hi"));
+}
+
+TEST(GlobalWideStrCaseEqTest, MatchesEqualStringWith0IgnoringCase) {
+  ::wstring str1(L"oabocdooeoo");
+  ::wstring str2(L"OABOCDOOEOO");
+  Matcher<const ::wstring&> m0 = StrCaseEq(str1);
+  EXPECT_FALSE(m0.Matches(str2 + ::wstring(1, L'\0')));
+
+  str1[3] = str2[3] = L'\0';
+  Matcher<const ::wstring&> m1 = StrCaseEq(str1);
+  EXPECT_TRUE(m1.Matches(str2));
+
+  str1[0] = str1[6] = str1[7] = str1[10] = L'\0';
+  str2[0] = str2[6] = str2[7] = str2[10] = L'\0';
+  Matcher<const ::wstring&> m2 = StrCaseEq(str1);
+  str1[9] = str2[9] = L'\0';
+  EXPECT_FALSE(m2.Matches(str2));
+
+  Matcher<const ::wstring&> m3 = StrCaseEq(str1);
+  EXPECT_TRUE(m3.Matches(str2));
+
+  EXPECT_FALSE(m3.Matches(str2 + L"x"));
+  str2.append(1, L'\0');
+  EXPECT_FALSE(m3.Matches(str2));
+  EXPECT_FALSE(m3.Matches(::wstring(str2, 0, 9)));
+}
+
+TEST(GlobalWideStrCaseEqTest, CanDescribeSelf) {
+  Matcher< ::wstring> m = StrCaseEq(L"Hi");
+  EXPECT_EQ("is equal to (ignoring case) L\"Hi\"", Describe(m));
+}
+
+TEST(GlobalWideStrCaseNeTest, MatchesUnequalStringIgnoringCase) {
+  Matcher<const wchar_t*> m = StrCaseNe(L"Hello");
+  EXPECT_TRUE(m.Matches(L"Hi"));
+  EXPECT_TRUE(m.Matches(NULL));
+  EXPECT_FALSE(m.Matches(L"Hello"));
+  EXPECT_FALSE(m.Matches(L"hello"));
+
+  Matcher< ::wstring> m2 = StrCaseNe(::wstring(L"Hello"));
+  EXPECT_TRUE(m2.Matches(L""));
+  EXPECT_FALSE(m2.Matches(L"Hello"));
+}
+
+TEST(GlobalWideStrCaseNeTest, CanDescribeSelf) {
+  Matcher<const wchar_t*> m = StrCaseNe(L"Hi");
+  EXPECT_EQ("isn't equal to (ignoring case) L\"Hi\"", Describe(m));
+}
+
+// Tests that HasSubstr() works for matching wstring-typed values.
+TEST(GlobalWideHasSubstrTest, WorksForStringClasses) {
+  const Matcher< ::wstring> m1 = HasSubstr(L"foo");
+  EXPECT_TRUE(m1.Matches(::wstring(L"I love food.")));
+  EXPECT_FALSE(m1.Matches(::wstring(L"tofo")));
+
+  const Matcher<const ::wstring&> m2 = HasSubstr(L"foo");
+  EXPECT_TRUE(m2.Matches(::wstring(L"I love food.")));
+  EXPECT_FALSE(m2.Matches(::wstring(L"tofo")));
+}
+
+// Tests that HasSubstr() works for matching C-wide-string-typed values.
+TEST(GlobalWideHasSubstrTest, WorksForCStrings) {
+  const Matcher<wchar_t*> m1 = HasSubstr(L"foo");
+  EXPECT_TRUE(m1.Matches(const_cast<wchar_t*>(L"I love food.")));
+  EXPECT_FALSE(m1.Matches(const_cast<wchar_t*>(L"tofo")));
+  EXPECT_FALSE(m1.Matches(NULL));
+
+  const Matcher<const wchar_t*> m2 = HasSubstr(L"foo");
+  EXPECT_TRUE(m2.Matches(L"I love food."));
+  EXPECT_FALSE(m2.Matches(L"tofo"));
+  EXPECT_FALSE(m2.Matches(NULL));
+}
+
+// Tests that HasSubstr(s) describes itself properly.
+TEST(GlobalWideHasSubstrTest, CanDescribeSelf) {
+  Matcher< ::wstring> m = HasSubstr(L"foo\n\"");
+  EXPECT_EQ("has substring L\"foo\\n\\\"\"", Describe(m));
+}
+
+// Tests StartsWith(s).
+
+TEST(GlobalWideStartsWithTest, MatchesStringWithGivenPrefix) {
+  const Matcher<const wchar_t*> m1 = StartsWith(::wstring(L""));
+  EXPECT_TRUE(m1.Matches(L"Hi"));
+  EXPECT_TRUE(m1.Matches(L""));
+  EXPECT_FALSE(m1.Matches(NULL));
+
+  const Matcher<const ::wstring&> m2 = StartsWith(L"Hi");
+  EXPECT_TRUE(m2.Matches(L"Hi"));
+  EXPECT_TRUE(m2.Matches(L"Hi Hi!"));
+  EXPECT_TRUE(m2.Matches(L"High"));
+  EXPECT_FALSE(m2.Matches(L"H"));
+  EXPECT_FALSE(m2.Matches(L" Hi"));
+}
+
+TEST(GlobalWideStartsWithTest, CanDescribeSelf) {
+  Matcher<const ::wstring> m = StartsWith(L"Hi");
+  EXPECT_EQ("starts with L\"Hi\"", Describe(m));
+}
+
+// Tests EndsWith(s).
+
+TEST(GlobalWideEndsWithTest, MatchesStringWithGivenSuffix) {
+  const Matcher<const wchar_t*> m1 = EndsWith(L"");
+  EXPECT_TRUE(m1.Matches(L"Hi"));
+  EXPECT_TRUE(m1.Matches(L""));
+  EXPECT_FALSE(m1.Matches(NULL));
+
+  const Matcher<const ::wstring&> m2 = EndsWith(::wstring(L"Hi"));
+  EXPECT_TRUE(m2.Matches(L"Hi"));
+  EXPECT_TRUE(m2.Matches(L"Wow Hi Hi"));
+  EXPECT_TRUE(m2.Matches(L"Super Hi"));
+  EXPECT_FALSE(m2.Matches(L"i"));
+  EXPECT_FALSE(m2.Matches(L"Hi "));
+}
+
+TEST(GlobalWideEndsWithTest, CanDescribeSelf) {
+  Matcher<const ::wstring> m = EndsWith(L"Hi");
+  EXPECT_EQ("ends with L\"Hi\"", Describe(m));
+}
+
+#endif  // GTEST_HAS_GLOBAL_WSTRING
+
+
+typedef ::std::tr1::tuple<long, int> Tuple2;  // NOLINT
+
+// Tests that Eq() matches a 2-tuple where the first field == the
+// second field.
+TEST(Eq2Test, MatchesEqualArguments) {
+  Matcher<const Tuple2&> m = Eq();
+  EXPECT_TRUE(m.Matches(Tuple2(5L, 5)));
+  EXPECT_FALSE(m.Matches(Tuple2(5L, 6)));
+}
+
+// Tests that Eq() describes itself properly.
+TEST(Eq2Test, CanDescribeSelf) {
+  Matcher<const Tuple2&> m = Eq();
+  EXPECT_EQ("are an equal pair", Describe(m));
+}
+
+// Tests that Ge() matches a 2-tuple where the first field >= the
+// second field.
+TEST(Ge2Test, MatchesGreaterThanOrEqualArguments) {
+  Matcher<const Tuple2&> m = Ge();
+  EXPECT_TRUE(m.Matches(Tuple2(5L, 4)));
+  EXPECT_TRUE(m.Matches(Tuple2(5L, 5)));
+  EXPECT_FALSE(m.Matches(Tuple2(5L, 6)));
+}
+
+// Tests that Ge() describes itself properly.
+TEST(Ge2Test, CanDescribeSelf) {
+  Matcher<const Tuple2&> m = Ge();
+  EXPECT_EQ("are a pair where the first >= the second", Describe(m));
+}
+
+// Tests that Gt() matches a 2-tuple where the first field > the
+// second field.
+TEST(Gt2Test, MatchesGreaterThanArguments) {
+  Matcher<const Tuple2&> m = Gt();
+  EXPECT_TRUE(m.Matches(Tuple2(5L, 4)));
+  EXPECT_FALSE(m.Matches(Tuple2(5L, 5)));
+  EXPECT_FALSE(m.Matches(Tuple2(5L, 6)));
+}
+
+// Tests that Gt() describes itself properly.
+TEST(Gt2Test, CanDescribeSelf) {
+  Matcher<const Tuple2&> m = Gt();
+  EXPECT_EQ("are a pair where the first > the second", Describe(m));
+}
+
+// Tests that Le() matches a 2-tuple where the first field <= the
+// second field.
+TEST(Le2Test, MatchesLessThanOrEqualArguments) {
+  Matcher<const Tuple2&> m = Le();
+  EXPECT_TRUE(m.Matches(Tuple2(5L, 6)));
+  EXPECT_TRUE(m.Matches(Tuple2(5L, 5)));
+  EXPECT_FALSE(m.Matches(Tuple2(5L, 4)));
+}
+
+// Tests that Le() describes itself properly.
+TEST(Le2Test, CanDescribeSelf) {
+  Matcher<const Tuple2&> m = Le();
+  EXPECT_EQ("are a pair where the first <= the second", Describe(m));
+}
+
+// Tests that Lt() matches a 2-tuple where the first field < the
+// second field.
+TEST(Lt2Test, MatchesLessThanArguments) {
+  Matcher<const Tuple2&> m = Lt();
+  EXPECT_TRUE(m.Matches(Tuple2(5L, 6)));
+  EXPECT_FALSE(m.Matches(Tuple2(5L, 5)));
+  EXPECT_FALSE(m.Matches(Tuple2(5L, 4)));
+}
+
+// Tests that Lt() describes itself properly.
+TEST(Lt2Test, CanDescribeSelf) {
+  Matcher<const Tuple2&> m = Lt();
+  EXPECT_EQ("are a pair where the first < the second", Describe(m));
+}
+
+// Tests that Ne() matches a 2-tuple where the first field != the
+// second field.
+TEST(Ne2Test, MatchesUnequalArguments) {
+  Matcher<const Tuple2&> m = Ne();
+  EXPECT_TRUE(m.Matches(Tuple2(5L, 6)));
+  EXPECT_TRUE(m.Matches(Tuple2(5L, 4)));
+  EXPECT_FALSE(m.Matches(Tuple2(5L, 5)));
+}
+
+// Tests that Ne() describes itself properly.
+TEST(Ne2Test, CanDescribeSelf) {
+  Matcher<const Tuple2&> m = Ne();
+  EXPECT_EQ("are an unequal pair", Describe(m));
+}
+
+// Tests that Not(m) matches any value that doesn't match m.
+TEST(NotTest, NegatesMatcher) {
+  Matcher<int> m;
+  m = Not(Eq(2));
+  EXPECT_TRUE(m.Matches(3));
+  EXPECT_FALSE(m.Matches(2));
+}
+
+// Tests that Not(m) describes itself properly.
+TEST(NotTest, CanDescribeSelf) {
+  Matcher<int> m = Not(Eq(5));
+  EXPECT_EQ("isn't equal to 5", Describe(m));
+}
+
+// Tests that monomorphic matchers are safely cast by the Not matcher.
+TEST(NotTest, NotMatcherSafelyCastsMonomorphicMatchers) {
+  // greater_than_5 is a monomorphic matcher.
+  Matcher<int> greater_than_5 = Gt(5);
+
+  Matcher<const int&> m = Not(greater_than_5);
+  Matcher<int&> m2 = Not(greater_than_5);
+  Matcher<int&> m3 = Not(m);
+}
+
+// Helper to allow easy testing of AllOf matchers with num parameters.
+void AllOfMatches(int num, const Matcher<int>& m) {
+  SCOPED_TRACE(Describe(m));
+  EXPECT_TRUE(m.Matches(0));
+  for (int i = 1; i <= num; ++i) {
+    EXPECT_FALSE(m.Matches(i));
+  }
+  EXPECT_TRUE(m.Matches(num + 1));
+}
+
+// Tests that AllOf(m1, ..., mn) matches any value that matches all of
+// the given matchers.
+TEST(AllOfTest, MatchesWhenAllMatch) {
+  Matcher<int> m;
+  m = AllOf(Le(2), Ge(1));
+  EXPECT_TRUE(m.Matches(1));
+  EXPECT_TRUE(m.Matches(2));
+  EXPECT_FALSE(m.Matches(0));
+  EXPECT_FALSE(m.Matches(3));
+
+  m = AllOf(Gt(0), Ne(1), Ne(2));
+  EXPECT_TRUE(m.Matches(3));
+  EXPECT_FALSE(m.Matches(2));
+  EXPECT_FALSE(m.Matches(1));
+  EXPECT_FALSE(m.Matches(0));
+
+  m = AllOf(Gt(0), Ne(1), Ne(2), Ne(3));
+  EXPECT_TRUE(m.Matches(4));
+  EXPECT_FALSE(m.Matches(3));
+  EXPECT_FALSE(m.Matches(2));
+  EXPECT_FALSE(m.Matches(1));
+  EXPECT_FALSE(m.Matches(0));
+
+  m = AllOf(Ge(0), Lt(10), Ne(3), Ne(5), Ne(7));
+  EXPECT_TRUE(m.Matches(0));
+  EXPECT_TRUE(m.Matches(1));
+  EXPECT_FALSE(m.Matches(3));
+
+  // The following tests for varying number of sub-matchers. Due to the way
+  // the sub-matchers are handled it is enough to test every sub-matcher once
+  // with sub-matchers using the same matcher type. Varying matcher types are
+  // checked for above.
+  AllOfMatches(2, AllOf(Ne(1), Ne(2)));
+  AllOfMatches(3, AllOf(Ne(1), Ne(2), Ne(3)));
+  AllOfMatches(4, AllOf(Ne(1), Ne(2), Ne(3), Ne(4)));
+  AllOfMatches(5, AllOf(Ne(1), Ne(2), Ne(3), Ne(4), Ne(5)));
+  AllOfMatches(6, AllOf(Ne(1), Ne(2), Ne(3), Ne(4), Ne(5), Ne(6)));
+  AllOfMatches(7, AllOf(Ne(1), Ne(2), Ne(3), Ne(4), Ne(5), Ne(6), Ne(7)));
+  AllOfMatches(8, AllOf(Ne(1), Ne(2), Ne(3), Ne(4), Ne(5), Ne(6), Ne(7),
+                        Ne(8)));
+  AllOfMatches(9, AllOf(Ne(1), Ne(2), Ne(3), Ne(4), Ne(5), Ne(6), Ne(7),
+                        Ne(8), Ne(9)));
+  AllOfMatches(10, AllOf(Ne(1), Ne(2), Ne(3), Ne(4), Ne(5), Ne(6), Ne(7), Ne(8),
+                         Ne(9), Ne(10)));
+}
+
+// Tests that AllOf(m1, ..., mn) describes itself properly.
+TEST(AllOfTest, CanDescribeSelf) {
+  Matcher<int> m;
+  m = AllOf(Le(2), Ge(1));
+  EXPECT_EQ("(is <= 2) and (is >= 1)", Describe(m));
+
+  m = AllOf(Gt(0), Ne(1), Ne(2));
+  EXPECT_EQ("(is > 0) and "
+            "((isn't equal to 1) and "
+            "(isn't equal to 2))",
+            Describe(m));
+
+
+  m = AllOf(Gt(0), Ne(1), Ne(2), Ne(3));
+  EXPECT_EQ("((is > 0) and "
+            "(isn't equal to 1)) and "
+            "((isn't equal to 2) and "
+            "(isn't equal to 3))",
+            Describe(m));
+
+
+  m = AllOf(Ge(0), Lt(10), Ne(3), Ne(5), Ne(7));
+  EXPECT_EQ("((is >= 0) and "
+            "(is < 10)) and "
+            "((isn't equal to 3) and "
+            "((isn't equal to 5) and "
+            "(isn't equal to 7)))",
+            Describe(m));
+}
+
+// Tests that AllOf(m1, ..., mn) describes its negation properly.
+TEST(AllOfTest, CanDescribeNegation) {
+  Matcher<int> m;
+  m = AllOf(Le(2), Ge(1));
+  EXPECT_EQ("(isn't <= 2) or "
+            "(isn't >= 1)",
+            DescribeNegation(m));
+
+  m = AllOf(Gt(0), Ne(1), Ne(2));
+  EXPECT_EQ("(isn't > 0) or "
+            "((is equal to 1) or "
+            "(is equal to 2))",
+            DescribeNegation(m));
+
+
+  m = AllOf(Gt(0), Ne(1), Ne(2), Ne(3));
+  EXPECT_EQ("((isn't > 0) or "
+            "(is equal to 1)) or "
+            "((is equal to 2) or "
+            "(is equal to 3))",
+            DescribeNegation(m));
+
+
+  m = AllOf(Ge(0), Lt(10), Ne(3), Ne(5), Ne(7));
+  EXPECT_EQ("((isn't >= 0) or "
+            "(isn't < 10)) or "
+            "((is equal to 3) or "
+            "((is equal to 5) or "
+            "(is equal to 7)))",
+            DescribeNegation(m));
+}
+
+// Tests that monomorphic matchers are safely cast by the AllOf matcher.
+TEST(AllOfTest, AllOfMatcherSafelyCastsMonomorphicMatchers) {
+  // greater_than_5 and less_than_10 are monomorphic matchers.
+  Matcher<int> greater_than_5 = Gt(5);
+  Matcher<int> less_than_10 = Lt(10);
+
+  Matcher<const int&> m = AllOf(greater_than_5, less_than_10);
+  Matcher<int&> m2 = AllOf(greater_than_5, less_than_10);
+  Matcher<int&> m3 = AllOf(greater_than_5, m2);
+
+  // Tests that BothOf works when composing itself.
+  Matcher<const int&> m4 = AllOf(greater_than_5, less_than_10, less_than_10);
+  Matcher<int&> m5 = AllOf(greater_than_5, less_than_10, less_than_10);
+}
+
+TEST(AllOfTest, ExplainsResult) {
+  Matcher<int> m;
+
+  // Successful match.  Both matchers need to explain.  The second
+  // matcher doesn't give an explanation, so only the first matcher's
+  // explanation is printed.
+  m = AllOf(GreaterThan(10), Lt(30));
+  EXPECT_EQ("which is 15 more than 10", Explain(m, 25));
+
+  // Successful match.  Both matchers need to explain.
+  m = AllOf(GreaterThan(10), GreaterThan(20));
+  EXPECT_EQ("which is 20 more than 10, and which is 10 more than 20",
+            Explain(m, 30));
+
+  // Successful match.  All matchers need to explain.  The second
+  // matcher doesn't given an explanation.
+  m = AllOf(GreaterThan(10), Lt(30), GreaterThan(20));
+  EXPECT_EQ("which is 15 more than 10, and which is 5 more than 20",
+            Explain(m, 25));
+
+  // Successful match.  All matchers need to explain.
+  m = AllOf(GreaterThan(10), GreaterThan(20), GreaterThan(30));
+  EXPECT_EQ("which is 30 more than 10, and which is 20 more than 20, "
+            "and which is 10 more than 30",
+            Explain(m, 40));
+
+  // Failed match.  The first matcher, which failed, needs to
+  // explain.
+  m = AllOf(GreaterThan(10), GreaterThan(20));
+  EXPECT_EQ("which is 5 less than 10", Explain(m, 5));
+
+  // Failed match.  The second matcher, which failed, needs to
+  // explain.  Since it doesn't given an explanation, nothing is
+  // printed.
+  m = AllOf(GreaterThan(10), Lt(30));
+  EXPECT_EQ("", Explain(m, 40));
+
+  // Failed match.  The second matcher, which failed, needs to
+  // explain.
+  m = AllOf(GreaterThan(10), GreaterThan(20));
+  EXPECT_EQ("which is 5 less than 20", Explain(m, 15));
+}
+
+// Helper to allow easy testing of AnyOf matchers with num parameters.
+void AnyOfMatches(int num, const Matcher<int>& m) {
+  SCOPED_TRACE(Describe(m));
+  EXPECT_FALSE(m.Matches(0));
+  for (int i = 1; i <= num; ++i) {
+    EXPECT_TRUE(m.Matches(i));
+  }
+  EXPECT_FALSE(m.Matches(num + 1));
+}
+
+// Tests that AnyOf(m1, ..., mn) matches any value that matches at
+// least one of the given matchers.
+TEST(AnyOfTest, MatchesWhenAnyMatches) {
+  Matcher<int> m;
+  m = AnyOf(Le(1), Ge(3));
+  EXPECT_TRUE(m.Matches(1));
+  EXPECT_TRUE(m.Matches(4));
+  EXPECT_FALSE(m.Matches(2));
+
+  m = AnyOf(Lt(0), Eq(1), Eq(2));
+  EXPECT_TRUE(m.Matches(-1));
+  EXPECT_TRUE(m.Matches(1));
+  EXPECT_TRUE(m.Matches(2));
+  EXPECT_FALSE(m.Matches(0));
+
+  m = AnyOf(Lt(0), Eq(1), Eq(2), Eq(3));
+  EXPECT_TRUE(m.Matches(-1));
+  EXPECT_TRUE(m.Matches(1));
+  EXPECT_TRUE(m.Matches(2));
+  EXPECT_TRUE(m.Matches(3));
+  EXPECT_FALSE(m.Matches(0));
+
+  m = AnyOf(Le(0), Gt(10), 3, 5, 7);
+  EXPECT_TRUE(m.Matches(0));
+  EXPECT_TRUE(m.Matches(11));
+  EXPECT_TRUE(m.Matches(3));
+  EXPECT_FALSE(m.Matches(2));
+
+  // The following tests for varying number of sub-matchers. Due to the way
+  // the sub-matchers are handled it is enough to test every sub-matcher once
+  // with sub-matchers using the same matcher type. Varying matcher types are
+  // checked for above.
+  AnyOfMatches(2, AnyOf(1, 2));
+  AnyOfMatches(3, AnyOf(1, 2, 3));
+  AnyOfMatches(4, AnyOf(1, 2, 3, 4));
+  AnyOfMatches(5, AnyOf(1, 2, 3, 4, 5));
+  AnyOfMatches(6, AnyOf(1, 2, 3, 4, 5, 6));
+  AnyOfMatches(7, AnyOf(1, 2, 3, 4, 5, 6, 7));
+  AnyOfMatches(8, AnyOf(1, 2, 3, 4, 5, 6, 7, 8));
+  AnyOfMatches(9, AnyOf(1, 2, 3, 4, 5, 6, 7, 8, 9));
+  AnyOfMatches(10, AnyOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10));
+}
+
+// Tests that AnyOf(m1, ..., mn) describes itself properly.
+TEST(AnyOfTest, CanDescribeSelf) {
+  Matcher<int> m;
+  m = AnyOf(Le(1), Ge(3));
+  EXPECT_EQ("(is <= 1) or (is >= 3)",
+            Describe(m));
+
+  m = AnyOf(Lt(0), Eq(1), Eq(2));
+  EXPECT_EQ("(is < 0) or "
+            "((is equal to 1) or (is equal to 2))",
+            Describe(m));
+
+  m = AnyOf(Lt(0), Eq(1), Eq(2), Eq(3));
+  EXPECT_EQ("((is < 0) or "
+            "(is equal to 1)) or "
+            "((is equal to 2) or "
+            "(is equal to 3))",
+            Describe(m));
+
+  m = AnyOf(Le(0), Gt(10), 3, 5, 7);
+  EXPECT_EQ("((is <= 0) or "
+            "(is > 10)) or "
+            "((is equal to 3) or "
+            "((is equal to 5) or "
+            "(is equal to 7)))",
+            Describe(m));
+}
+
+// Tests that AnyOf(m1, ..., mn) describes its negation properly.
+TEST(AnyOfTest, CanDescribeNegation) {
+  Matcher<int> m;
+  m = AnyOf(Le(1), Ge(3));
+  EXPECT_EQ("(isn't <= 1) and (isn't >= 3)",
+            DescribeNegation(m));
+
+  m = AnyOf(Lt(0), Eq(1), Eq(2));
+  EXPECT_EQ("(isn't < 0) and "
+            "((isn't equal to 1) and (isn't equal to 2))",
+            DescribeNegation(m));
+
+  m = AnyOf(Lt(0), Eq(1), Eq(2), Eq(3));
+  EXPECT_EQ("((isn't < 0) and "
+            "(isn't equal to 1)) and "
+            "((isn't equal to 2) and "
+            "(isn't equal to 3))",
+            DescribeNegation(m));
+
+  m = AnyOf(Le(0), Gt(10), 3, 5, 7);
+  EXPECT_EQ("((isn't <= 0) and "
+            "(isn't > 10)) and "
+            "((isn't equal to 3) and "
+            "((isn't equal to 5) and "
+            "(isn't equal to 7)))",
+            DescribeNegation(m));
+}
+
+// Tests that monomorphic matchers are safely cast by the AnyOf matcher.
+TEST(AnyOfTest, AnyOfMatcherSafelyCastsMonomorphicMatchers) {
+  // greater_than_5 and less_than_10 are monomorphic matchers.
+  Matcher<int> greater_than_5 = Gt(5);
+  Matcher<int> less_than_10 = Lt(10);
+
+  Matcher<const int&> m = AnyOf(greater_than_5, less_than_10);
+  Matcher<int&> m2 = AnyOf(greater_than_5, less_than_10);
+  Matcher<int&> m3 = AnyOf(greater_than_5, m2);
+
+  // Tests that EitherOf works when composing itself.
+  Matcher<const int&> m4 = AnyOf(greater_than_5, less_than_10, less_than_10);
+  Matcher<int&> m5 = AnyOf(greater_than_5, less_than_10, less_than_10);
+}
+
+TEST(AnyOfTest, ExplainsResult) {
+  Matcher<int> m;
+
+  // Failed match.  Both matchers need to explain.  The second
+  // matcher doesn't give an explanation, so only the first matcher's
+  // explanation is printed.
+  m = AnyOf(GreaterThan(10), Lt(0));
+  EXPECT_EQ("which is 5 less than 10", Explain(m, 5));
+
+  // Failed match.  Both matchers need to explain.
+  m = AnyOf(GreaterThan(10), GreaterThan(20));
+  EXPECT_EQ("which is 5 less than 10, and which is 15 less than 20",
+            Explain(m, 5));
+
+  // Failed match.  All matchers need to explain.  The second
+  // matcher doesn't given an explanation.
+  m = AnyOf(GreaterThan(10), Gt(20), GreaterThan(30));
+  EXPECT_EQ("which is 5 less than 10, and which is 25 less than 30",
+            Explain(m, 5));
+
+  // Failed match.  All matchers need to explain.
+  m = AnyOf(GreaterThan(10), GreaterThan(20), GreaterThan(30));
+  EXPECT_EQ("which is 5 less than 10, and which is 15 less than 20, "
+            "and which is 25 less than 30",
+            Explain(m, 5));
+
+  // Successful match.  The first matcher, which succeeded, needs to
+  // explain.
+  m = AnyOf(GreaterThan(10), GreaterThan(20));
+  EXPECT_EQ("which is 5 more than 10", Explain(m, 15));
+
+  // Successful match.  The second matcher, which succeeded, needs to
+  // explain.  Since it doesn't given an explanation, nothing is
+  // printed.
+  m = AnyOf(GreaterThan(10), Lt(30));
+  EXPECT_EQ("", Explain(m, 0));
+
+  // Successful match.  The second matcher, which succeeded, needs to
+  // explain.
+  m = AnyOf(GreaterThan(30), GreaterThan(20));
+  EXPECT_EQ("which is 5 more than 20", Explain(m, 25));
+}
+
+// The following predicate function and predicate functor are for
+// testing the Truly(predicate) matcher.
+
+// Returns non-zero if the input is positive.  Note that the return
+// type of this function is not bool.  It's OK as Truly() accepts any
+// unary function or functor whose return type can be implicitly
+// converted to bool.
+int IsPositive(double x) {
+  return x > 0 ? 1 : 0;
+}
+
+// This functor returns true if the input is greater than the given
+// number.
+class IsGreaterThan {
+ public:
+  explicit IsGreaterThan(int threshold) : threshold_(threshold) {}
+
+  bool operator()(int n) const { return n > threshold_; }
+
+ private:
+  int threshold_;
+};
+
+// For testing Truly().
+const int foo = 0;
+
+// This predicate returns true iff the argument references foo and has
+// a zero value.
+bool ReferencesFooAndIsZero(const int& n) {
+  return (&n == &foo) && (n == 0);
+}
+
+// Tests that Truly(predicate) matches what satisfies the given
+// predicate.
+TEST(TrulyTest, MatchesWhatSatisfiesThePredicate) {
+  Matcher<double> m = Truly(IsPositive);
+  EXPECT_TRUE(m.Matches(2.0));
+  EXPECT_FALSE(m.Matches(-1.5));
+}
+
+// Tests that Truly(predicate_functor) works too.
+TEST(TrulyTest, CanBeUsedWithFunctor) {
+  Matcher<int> m = Truly(IsGreaterThan(5));
+  EXPECT_TRUE(m.Matches(6));
+  EXPECT_FALSE(m.Matches(4));
+}
+
+// A class that can be implicitly converted to bool.
+class ConvertibleToBool {
+ public:
+  explicit ConvertibleToBool(int number) : number_(number) {}
+  operator bool() const { return number_ != 0; }
+
+ private:
+  int number_;
+};
+
+ConvertibleToBool IsNotZero(int number) {
+  return ConvertibleToBool(number);
+}
+
+// Tests that the predicate used in Truly() may return a class that's
+// implicitly convertible to bool, even when the class has no
+// operator!().
+TEST(TrulyTest, PredicateCanReturnAClassConvertibleToBool) {
+  Matcher<int> m = Truly(IsNotZero);
+  EXPECT_TRUE(m.Matches(1));
+  EXPECT_FALSE(m.Matches(0));
+}
+
+// Tests that Truly(predicate) can describe itself properly.
+TEST(TrulyTest, CanDescribeSelf) {
+  Matcher<double> m = Truly(IsPositive);
+  EXPECT_EQ("satisfies the given predicate",
+            Describe(m));
+}
+
+// Tests that Truly(predicate) works when the matcher takes its
+// argument by reference.
+TEST(TrulyTest, WorksForByRefArguments) {
+  Matcher<const int&> m = Truly(ReferencesFooAndIsZero);
+  EXPECT_TRUE(m.Matches(foo));
+  int n = 0;
+  EXPECT_FALSE(m.Matches(n));
+}
+
+// Tests that Matches(m) is a predicate satisfied by whatever that
+// matches matcher m.
+TEST(MatchesTest, IsSatisfiedByWhatMatchesTheMatcher) {
+  EXPECT_TRUE(Matches(Ge(0))(1));
+  EXPECT_FALSE(Matches(Eq('a'))('b'));
+}
+
+// Tests that Matches(m) works when the matcher takes its argument by
+// reference.
+TEST(MatchesTest, WorksOnByRefArguments) {
+  int m = 0, n = 0;
+  EXPECT_TRUE(Matches(AllOf(Ref(n), Eq(0)))(n));
+  EXPECT_FALSE(Matches(Ref(m))(n));
+}
+
+// Tests that a Matcher on non-reference type can be used in
+// Matches().
+TEST(MatchesTest, WorksWithMatcherOnNonRefType) {
+  Matcher<int> eq5 = Eq(5);
+  EXPECT_TRUE(Matches(eq5)(5));
+  EXPECT_FALSE(Matches(eq5)(2));
+}
+
+// Tests Value(value, matcher).  Since Value() is a simple wrapper for
+// Matches(), which has been tested already, we don't spend a lot of
+// effort on testing Value().
+TEST(ValueTest, WorksWithPolymorphicMatcher) {
+  EXPECT_TRUE(Value("hi", StartsWith("h")));
+  EXPECT_FALSE(Value(5, Gt(10)));
+}
+
+TEST(ValueTest, WorksWithMonomorphicMatcher) {
+  const Matcher<int> is_zero = Eq(0);
+  EXPECT_TRUE(Value(0, is_zero));
+  EXPECT_FALSE(Value('a', is_zero));
+
+  int n = 0;
+  const Matcher<const int&> ref_n = Ref(n);
+  EXPECT_TRUE(Value(n, ref_n));
+  EXPECT_FALSE(Value(1, ref_n));
+}
+
+TEST(ExplainMatchResultTest, WorksWithPolymorphicMatcher) {
+  StringMatchResultListener listener1;
+  EXPECT_TRUE(ExplainMatchResult(PolymorphicIsEven(), 42, &listener1));
+  EXPECT_EQ("% 2 == 0", listener1.str());
+
+  StringMatchResultListener listener2;
+  EXPECT_FALSE(ExplainMatchResult(Ge(42), 1.5, &listener2));
+  EXPECT_EQ("", listener2.str());
+}
+
+TEST(ExplainMatchResultTest, WorksWithMonomorphicMatcher) {
+  const Matcher<int> is_even = PolymorphicIsEven();
+  StringMatchResultListener listener1;
+  EXPECT_TRUE(ExplainMatchResult(is_even, 42, &listener1));
+  EXPECT_EQ("% 2 == 0", listener1.str());
+
+  const Matcher<const double&> is_zero = Eq(0);
+  StringMatchResultListener listener2;
+  EXPECT_FALSE(ExplainMatchResult(is_zero, 1.5, &listener2));
+  EXPECT_EQ("", listener2.str());
+}
+
+MATCHER_P(Really, inner_matcher, "") {
+  return ExplainMatchResult(inner_matcher, arg, result_listener);
+}
+
+TEST(ExplainMatchResultTest, WorksInsideMATCHER) {
+  EXPECT_THAT(0, Really(Eq(0)));
+}
+
+TEST(AllArgsTest, WorksForTuple) {
+  EXPECT_THAT(make_tuple(1, 2L), AllArgs(Lt()));
+  EXPECT_THAT(make_tuple(2L, 1), Not(AllArgs(Lt())));
+}
+
+TEST(AllArgsTest, WorksForNonTuple) {
+  EXPECT_THAT(42, AllArgs(Gt(0)));
+  EXPECT_THAT('a', Not(AllArgs(Eq('b'))));
+}
+
+class AllArgsHelper {
+ public:
+  AllArgsHelper() {}
+
+  MOCK_METHOD2(Helper, int(char x, int y));
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(AllArgsHelper);
+};
+
+TEST(AllArgsTest, WorksInWithClause) {
+  AllArgsHelper helper;
+  ON_CALL(helper, Helper(_, _))
+      .With(AllArgs(Lt()))
+      .WillByDefault(Return(1));
+  EXPECT_CALL(helper, Helper(_, _));
+  EXPECT_CALL(helper, Helper(_, _))
+      .With(AllArgs(Gt()))
+      .WillOnce(Return(2));
+
+  EXPECT_EQ(1, helper.Helper('\1', 2));
+  EXPECT_EQ(2, helper.Helper('a', 1));
+}
+
+// Tests that ASSERT_THAT() and EXPECT_THAT() work when the value
+// matches the matcher.
+TEST(MatcherAssertionTest, WorksWhenMatcherIsSatisfied) {
+  ASSERT_THAT(5, Ge(2)) << "This should succeed.";
+  ASSERT_THAT("Foo", EndsWith("oo"));
+  EXPECT_THAT(2, AllOf(Le(7), Ge(0))) << "This should succeed too.";
+  EXPECT_THAT("Hello", StartsWith("Hell"));
+}
+
+// Tests that ASSERT_THAT() and EXPECT_THAT() work when the value
+// doesn't match the matcher.
+TEST(MatcherAssertionTest, WorksWhenMatcherIsNotSatisfied) {
+  // 'n' must be static as it is used in an EXPECT_FATAL_FAILURE(),
+  // which cannot reference auto variables.
+  static unsigned short n;  // NOLINT
+  n = 5;
+
+  // VC++ prior to version 8.0 SP1 has a bug where it will not see any
+  // functions declared in the namespace scope from within nested classes.
+  // EXPECT/ASSERT_(NON)FATAL_FAILURE macros use nested classes so that all
+  // namespace-level functions invoked inside them need to be explicitly
+  // resolved.
+  EXPECT_FATAL_FAILURE(ASSERT_THAT(n, ::testing::Gt(10)),
+                       "Value of: n\n"
+                       "Expected: is > 10\n"
+                       "  Actual: 5" + OfType("unsigned short"));
+  n = 0;
+  EXPECT_NONFATAL_FAILURE(
+      EXPECT_THAT(n, ::testing::AllOf(::testing::Le(7), ::testing::Ge(5))),
+      "Value of: n\n"
+      "Expected: (is <= 7) and (is >= 5)\n"
+      "  Actual: 0" + OfType("unsigned short"));
+}
+
+// Tests that ASSERT_THAT() and EXPECT_THAT() work when the argument
+// has a reference type.
+TEST(MatcherAssertionTest, WorksForByRefArguments) {
+  // We use a static variable here as EXPECT_FATAL_FAILURE() cannot
+  // reference auto variables.
+  static int n;
+  n = 0;
+  EXPECT_THAT(n, AllOf(Le(7), Ref(n)));
+  EXPECT_FATAL_FAILURE(ASSERT_THAT(n, ::testing::Not(::testing::Ref(n))),
+                       "Value of: n\n"
+                       "Expected: does not reference the variable @");
+  // Tests the "Actual" part.
+  EXPECT_FATAL_FAILURE(ASSERT_THAT(n, ::testing::Not(::testing::Ref(n))),
+                       "Actual: 0" + OfType("int") + ", which is located @");
+}
+
+#if !GTEST_OS_SYMBIAN
+// Tests that ASSERT_THAT() and EXPECT_THAT() work when the matcher is
+// monomorphic.
+
+// ASSERT_THAT("hello", starts_with_he) fails to compile with Nokia's
+// Symbian compiler: it tries to compile
+// template<T, U> class MatcherCastImpl { ...
+//   virtual bool MatchAndExplain(T x, ...) const {
+//     return source_matcher_.MatchAndExplain(static_cast<U>(x), ...);
+// with U == string and T == const char*
+// With ASSERT_THAT("hello"...) changed to ASSERT_THAT(string("hello") ... )
+// the compiler silently crashes with no output.
+// If MatcherCastImpl is changed to use U(x) instead of static_cast<U>(x)
+// the code compiles but the converted string is bogus.
+TEST(MatcherAssertionTest, WorksForMonomorphicMatcher) {
+  Matcher<const char*> starts_with_he = StartsWith("he");
+  ASSERT_THAT("hello", starts_with_he);
+
+  Matcher<const string&> ends_with_ok = EndsWith("ok");
+  ASSERT_THAT("book", ends_with_ok);
+  const string bad = "bad";
+  EXPECT_NONFATAL_FAILURE(EXPECT_THAT(bad, ends_with_ok),
+                          "Value of: bad\n"
+                          "Expected: ends with \"ok\"\n"
+                          "  Actual: \"bad\"");
+  Matcher<int> is_greater_than_5 = Gt(5);
+  EXPECT_NONFATAL_FAILURE(EXPECT_THAT(5, is_greater_than_5),
+                          "Value of: 5\n"
+                          "Expected: is > 5\n"
+                          "  Actual: 5" + OfType("int"));
+}
+#endif  // !GTEST_OS_SYMBIAN
+
+// Tests floating-point matchers.
+template <typename RawType>
+class FloatingPointTest : public testing::Test {
+ protected:
+  typedef typename testing::internal::FloatingPoint<RawType> Floating;
+  typedef typename Floating::Bits Bits;
+
+  virtual void SetUp() {
+    const size_t max_ulps = Floating::kMaxUlps;
+
+    // The bits that represent 0.0.
+    const Bits zero_bits = Floating(0).bits();
+
+    // Makes some numbers close to 0.0.
+    close_to_positive_zero_ = Floating::ReinterpretBits(zero_bits + max_ulps/2);
+    close_to_negative_zero_ = -Floating::ReinterpretBits(
+        zero_bits + max_ulps - max_ulps/2);
+    further_from_negative_zero_ = -Floating::ReinterpretBits(
+        zero_bits + max_ulps + 1 - max_ulps/2);
+
+    // The bits that represent 1.0.
+    const Bits one_bits = Floating(1).bits();
+
+    // Makes some numbers close to 1.0.
+    close_to_one_ = Floating::ReinterpretBits(one_bits + max_ulps);
+    further_from_one_ = Floating::ReinterpretBits(one_bits + max_ulps + 1);
+
+    // +infinity.
+    infinity_ = Floating::Infinity();
+
+    // The bits that represent +infinity.
+    const Bits infinity_bits = Floating(infinity_).bits();
+
+    // Makes some numbers close to infinity.
+    close_to_infinity_ = Floating::ReinterpretBits(infinity_bits - max_ulps);
+    further_from_infinity_ = Floating::ReinterpretBits(
+        infinity_bits - max_ulps - 1);
+
+    // Makes some NAN's.
+    nan1_ = Floating::ReinterpretBits(Floating::kExponentBitMask | 1);
+    nan2_ = Floating::ReinterpretBits(Floating::kExponentBitMask | 200);
+  }
+
+  void TestSize() {
+    EXPECT_EQ(sizeof(RawType), sizeof(Bits));
+  }
+
+  // A battery of tests for FloatingEqMatcher::Matches.
+  // matcher_maker is a pointer to a function which creates a FloatingEqMatcher.
+  void TestMatches(
+      testing::internal::FloatingEqMatcher<RawType> (*matcher_maker)(RawType)) {
+    Matcher<RawType> m1 = matcher_maker(0.0);
+    EXPECT_TRUE(m1.Matches(-0.0));
+    EXPECT_TRUE(m1.Matches(close_to_positive_zero_));
+    EXPECT_TRUE(m1.Matches(close_to_negative_zero_));
+    EXPECT_FALSE(m1.Matches(1.0));
+
+    Matcher<RawType> m2 = matcher_maker(close_to_positive_zero_);
+    EXPECT_FALSE(m2.Matches(further_from_negative_zero_));
+
+    Matcher<RawType> m3 = matcher_maker(1.0);
+    EXPECT_TRUE(m3.Matches(close_to_one_));
+    EXPECT_FALSE(m3.Matches(further_from_one_));
+
+    // Test commutativity: matcher_maker(0.0).Matches(1.0) was tested above.
+    EXPECT_FALSE(m3.Matches(0.0));
+
+    Matcher<RawType> m4 = matcher_maker(-infinity_);
+    EXPECT_TRUE(m4.Matches(-close_to_infinity_));
+
+    Matcher<RawType> m5 = matcher_maker(infinity_);
+    EXPECT_TRUE(m5.Matches(close_to_infinity_));
+
+    // This is interesting as the representations of infinity_ and nan1_
+    // are only 1 DLP apart.
+    EXPECT_FALSE(m5.Matches(nan1_));
+
+    // matcher_maker can produce a Matcher<const RawType&>, which is needed in
+    // some cases.
+    Matcher<const RawType&> m6 = matcher_maker(0.0);
+    EXPECT_TRUE(m6.Matches(-0.0));
+    EXPECT_TRUE(m6.Matches(close_to_positive_zero_));
+    EXPECT_FALSE(m6.Matches(1.0));
+
+    // matcher_maker can produce a Matcher<RawType&>, which is needed in some
+    // cases.
+    Matcher<RawType&> m7 = matcher_maker(0.0);
+    RawType x = 0.0;
+    EXPECT_TRUE(m7.Matches(x));
+    x = 0.01f;
+    EXPECT_FALSE(m7.Matches(x));
+  }
+
+  // Pre-calculated numbers to be used by the tests.
+
+  static RawType close_to_positive_zero_;
+  static RawType close_to_negative_zero_;
+  static RawType further_from_negative_zero_;
+
+  static RawType close_to_one_;
+  static RawType further_from_one_;
+
+  static RawType infinity_;
+  static RawType close_to_infinity_;
+  static RawType further_from_infinity_;
+
+  static RawType nan1_;
+  static RawType nan2_;
+};
+
+template <typename RawType>
+RawType FloatingPointTest<RawType>::close_to_positive_zero_;
+
+template <typename RawType>
+RawType FloatingPointTest<RawType>::close_to_negative_zero_;
+
+template <typename RawType>
+RawType FloatingPointTest<RawType>::further_from_negative_zero_;
+
+template <typename RawType>
+RawType FloatingPointTest<RawType>::close_to_one_;
+
+template <typename RawType>
+RawType FloatingPointTest<RawType>::further_from_one_;
+
+template <typename RawType>
+RawType FloatingPointTest<RawType>::infinity_;
+
+template <typename RawType>
+RawType FloatingPointTest<RawType>::close_to_infinity_;
+
+template <typename RawType>
+RawType FloatingPointTest<RawType>::further_from_infinity_;
+
+template <typename RawType>
+RawType FloatingPointTest<RawType>::nan1_;
+
+template <typename RawType>
+RawType FloatingPointTest<RawType>::nan2_;
+
+// Instantiate FloatingPointTest for testing floats.
+typedef FloatingPointTest<float> FloatTest;
+
+TEST_F(FloatTest, FloatEqApproximatelyMatchesFloats) {
+  TestMatches(&FloatEq);
+}
+
+TEST_F(FloatTest, NanSensitiveFloatEqApproximatelyMatchesFloats) {
+  TestMatches(&NanSensitiveFloatEq);
+}
+
+TEST_F(FloatTest, FloatEqCannotMatchNaN) {
+  // FloatEq never matches NaN.
+  Matcher<float> m = FloatEq(nan1_);
+  EXPECT_FALSE(m.Matches(nan1_));
+  EXPECT_FALSE(m.Matches(nan2_));
+  EXPECT_FALSE(m.Matches(1.0));
+}
+
+TEST_F(FloatTest, NanSensitiveFloatEqCanMatchNaN) {
+  // NanSensitiveFloatEq will match NaN.
+  Matcher<float> m = NanSensitiveFloatEq(nan1_);
+  EXPECT_TRUE(m.Matches(nan1_));
+  EXPECT_TRUE(m.Matches(nan2_));
+  EXPECT_FALSE(m.Matches(1.0));
+}
+
+TEST_F(FloatTest, FloatEqCanDescribeSelf) {
+  Matcher<float> m1 = FloatEq(2.0f);
+  EXPECT_EQ("is approximately 2", Describe(m1));
+  EXPECT_EQ("isn't approximately 2", DescribeNegation(m1));
+
+  Matcher<float> m2 = FloatEq(0.5f);
+  EXPECT_EQ("is approximately 0.5", Describe(m2));
+  EXPECT_EQ("isn't approximately 0.5", DescribeNegation(m2));
+
+  Matcher<float> m3 = FloatEq(nan1_);
+  EXPECT_EQ("never matches", Describe(m3));
+  EXPECT_EQ("is anything", DescribeNegation(m3));
+}
+
+TEST_F(FloatTest, NanSensitiveFloatEqCanDescribeSelf) {
+  Matcher<float> m1 = NanSensitiveFloatEq(2.0f);
+  EXPECT_EQ("is approximately 2", Describe(m1));
+  EXPECT_EQ("isn't approximately 2", DescribeNegation(m1));
+
+  Matcher<float> m2 = NanSensitiveFloatEq(0.5f);
+  EXPECT_EQ("is approximately 0.5", Describe(m2));
+  EXPECT_EQ("isn't approximately 0.5", DescribeNegation(m2));
+
+  Matcher<float> m3 = NanSensitiveFloatEq(nan1_);
+  EXPECT_EQ("is NaN", Describe(m3));
+  EXPECT_EQ("isn't NaN", DescribeNegation(m3));
+}
+
+// Instantiate FloatingPointTest for testing doubles.
+typedef FloatingPointTest<double> DoubleTest;
+
+TEST_F(DoubleTest, DoubleEqApproximatelyMatchesDoubles) {
+  TestMatches(&DoubleEq);
+}
+
+TEST_F(DoubleTest, NanSensitiveDoubleEqApproximatelyMatchesDoubles) {
+  TestMatches(&NanSensitiveDoubleEq);
+}
+
+TEST_F(DoubleTest, DoubleEqCannotMatchNaN) {
+  // DoubleEq never matches NaN.
+  Matcher<double> m = DoubleEq(nan1_);
+  EXPECT_FALSE(m.Matches(nan1_));
+  EXPECT_FALSE(m.Matches(nan2_));
+  EXPECT_FALSE(m.Matches(1.0));
+}
+
+TEST_F(DoubleTest, NanSensitiveDoubleEqCanMatchNaN) {
+  // NanSensitiveDoubleEq will match NaN.
+  Matcher<double> m = NanSensitiveDoubleEq(nan1_);
+  EXPECT_TRUE(m.Matches(nan1_));
+  EXPECT_TRUE(m.Matches(nan2_));
+  EXPECT_FALSE(m.Matches(1.0));
+}
+
+TEST_F(DoubleTest, DoubleEqCanDescribeSelf) {
+  Matcher<double> m1 = DoubleEq(2.0);
+  EXPECT_EQ("is approximately 2", Describe(m1));
+  EXPECT_EQ("isn't approximately 2", DescribeNegation(m1));
+
+  Matcher<double> m2 = DoubleEq(0.5);
+  EXPECT_EQ("is approximately 0.5", Describe(m2));
+  EXPECT_EQ("isn't approximately 0.5", DescribeNegation(m2));
+
+  Matcher<double> m3 = DoubleEq(nan1_);
+  EXPECT_EQ("never matches", Describe(m3));
+  EXPECT_EQ("is anything", DescribeNegation(m3));
+}
+
+TEST_F(DoubleTest, NanSensitiveDoubleEqCanDescribeSelf) {
+  Matcher<double> m1 = NanSensitiveDoubleEq(2.0);
+  EXPECT_EQ("is approximately 2", Describe(m1));
+  EXPECT_EQ("isn't approximately 2", DescribeNegation(m1));
+
+  Matcher<double> m2 = NanSensitiveDoubleEq(0.5);
+  EXPECT_EQ("is approximately 0.5", Describe(m2));
+  EXPECT_EQ("isn't approximately 0.5", DescribeNegation(m2));
+
+  Matcher<double> m3 = NanSensitiveDoubleEq(nan1_);
+  EXPECT_EQ("is NaN", Describe(m3));
+  EXPECT_EQ("isn't NaN", DescribeNegation(m3));
+}
+
+TEST(PointeeTest, RawPointer) {
+  const Matcher<int*> m = Pointee(Ge(0));
+
+  int n = 1;
+  EXPECT_TRUE(m.Matches(&n));
+  n = -1;
+  EXPECT_FALSE(m.Matches(&n));
+  EXPECT_FALSE(m.Matches(NULL));
+}
+
+TEST(PointeeTest, RawPointerToConst) {
+  const Matcher<const double*> m = Pointee(Ge(0));
+
+  double x = 1;
+  EXPECT_TRUE(m.Matches(&x));
+  x = -1;
+  EXPECT_FALSE(m.Matches(&x));
+  EXPECT_FALSE(m.Matches(NULL));
+}
+
+TEST(PointeeTest, ReferenceToConstRawPointer) {
+  const Matcher<int* const &> m = Pointee(Ge(0));
+
+  int n = 1;
+  EXPECT_TRUE(m.Matches(&n));
+  n = -1;
+  EXPECT_FALSE(m.Matches(&n));
+  EXPECT_FALSE(m.Matches(NULL));
+}
+
+TEST(PointeeTest, ReferenceToNonConstRawPointer) {
+  const Matcher<double* &> m = Pointee(Ge(0));
+
+  double x = 1.0;
+  double* p = &x;
+  EXPECT_TRUE(m.Matches(p));
+  x = -1;
+  EXPECT_FALSE(m.Matches(p));
+  p = NULL;
+  EXPECT_FALSE(m.Matches(p));
+}
+
+// Minimal const-propagating pointer.
+template <typename T>
+class ConstPropagatingPtr {
+ public:
+  typedef T element_type;
+
+  ConstPropagatingPtr() : val_() {}
+  explicit ConstPropagatingPtr(T* t) : val_(t) {}
+  ConstPropagatingPtr(const ConstPropagatingPtr& other) : val_(other.val_) {}
+
+  T* get() { return val_; }
+  T& operator*() { return *val_; }
+  // Most smart pointers return non-const T* and T& from the next methods.
+  const T* get() const { return val_; }
+  const T& operator*() const { return *val_; }
+
+ private:
+  T* val_;
+};
+
+TEST(PointeeTest, WorksWithConstPropagatingPointers) {
+  const Matcher< ConstPropagatingPtr<int> > m = Pointee(Lt(5));
+  int three = 3;
+  const ConstPropagatingPtr<int> co(&three);
+  ConstPropagatingPtr<int> o(&three);
+  EXPECT_TRUE(m.Matches(o));
+  EXPECT_TRUE(m.Matches(co));
+  *o = 6;
+  EXPECT_FALSE(m.Matches(o));
+  EXPECT_FALSE(m.Matches(ConstPropagatingPtr<int>()));
+}
+
+TEST(PointeeTest, NeverMatchesNull) {
+  const Matcher<const char*> m = Pointee(_);
+  EXPECT_FALSE(m.Matches(NULL));
+}
+
+// Tests that we can write Pointee(value) instead of Pointee(Eq(value)).
+TEST(PointeeTest, MatchesAgainstAValue) {
+  const Matcher<int*> m = Pointee(5);
+
+  int n = 5;
+  EXPECT_TRUE(m.Matches(&n));
+  n = -1;
+  EXPECT_FALSE(m.Matches(&n));
+  EXPECT_FALSE(m.Matches(NULL));
+}
+
+TEST(PointeeTest, CanDescribeSelf) {
+  const Matcher<int*> m = Pointee(Gt(3));
+  EXPECT_EQ("points to a value that is > 3", Describe(m));
+  EXPECT_EQ("does not point to a value that is > 3",
+            DescribeNegation(m));
+}
+
+TEST(PointeeTest, CanExplainMatchResult) {
+  const Matcher<const string*> m = Pointee(StartsWith("Hi"));
+
+  EXPECT_EQ("", Explain(m, static_cast<const string*>(NULL)));
+
+  const Matcher<long*> m2 = Pointee(GreaterThan(1));  // NOLINT
+  long n = 3;  // NOLINT
+  EXPECT_EQ("which points to 3" + OfType("long") + ", which is 2 more than 1",
+            Explain(m2, &n));
+}
+
+TEST(PointeeTest, AlwaysExplainsPointee) {
+  const Matcher<int*> m = Pointee(0);
+  int n = 42;
+  EXPECT_EQ("which points to 42" + OfType("int"), Explain(m, &n));
+}
+
+// An uncopyable class.
+class Uncopyable {
+ public:
+  explicit Uncopyable(int a_value) : value_(a_value) {}
+
+  int value() const { return value_; }
+ private:
+  const int value_;
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(Uncopyable);
+};
+
+// Returns true iff x.value() is positive.
+bool ValueIsPositive(const Uncopyable& x) { return x.value() > 0; }
+
+// A user-defined struct for testing Field().
+struct AStruct {
+  AStruct() : x(0), y(1.0), z(5), p(NULL) {}
+  AStruct(const AStruct& rhs)
+      : x(rhs.x), y(rhs.y), z(rhs.z.value()), p(rhs.p) {}
+
+  int x;           // A non-const field.
+  const double y;  // A const field.
+  Uncopyable z;    // An uncopyable field.
+  const char* p;   // A pointer field.
+
+ private:
+  GTEST_DISALLOW_ASSIGN_(AStruct);
+};
+
+// A derived struct for testing Field().
+struct DerivedStruct : public AStruct {
+  char ch;
+
+ private:
+  GTEST_DISALLOW_ASSIGN_(DerivedStruct);
+};
+
+// Tests that Field(&Foo::field, ...) works when field is non-const.
+TEST(FieldTest, WorksForNonConstField) {
+  Matcher<AStruct> m = Field(&AStruct::x, Ge(0));
+
+  AStruct a;
+  EXPECT_TRUE(m.Matches(a));
+  a.x = -1;
+  EXPECT_FALSE(m.Matches(a));
+}
+
+// Tests that Field(&Foo::field, ...) works when field is const.
+TEST(FieldTest, WorksForConstField) {
+  AStruct a;
+
+  Matcher<AStruct> m = Field(&AStruct::y, Ge(0.0));
+  EXPECT_TRUE(m.Matches(a));
+  m = Field(&AStruct::y, Le(0.0));
+  EXPECT_FALSE(m.Matches(a));
+}
+
+// Tests that Field(&Foo::field, ...) works when field is not copyable.
+TEST(FieldTest, WorksForUncopyableField) {
+  AStruct a;
+
+  Matcher<AStruct> m = Field(&AStruct::z, Truly(ValueIsPositive));
+  EXPECT_TRUE(m.Matches(a));
+  m = Field(&AStruct::z, Not(Truly(ValueIsPositive)));
+  EXPECT_FALSE(m.Matches(a));
+}
+
+// Tests that Field(&Foo::field, ...) works when field is a pointer.
+TEST(FieldTest, WorksForPointerField) {
+  // Matching against NULL.
+  Matcher<AStruct> m = Field(&AStruct::p, static_cast<const char*>(NULL));
+  AStruct a;
+  EXPECT_TRUE(m.Matches(a));
+  a.p = "hi";
+  EXPECT_FALSE(m.Matches(a));
+
+  // Matching a pointer that is not NULL.
+  m = Field(&AStruct::p, StartsWith("hi"));
+  a.p = "hill";
+  EXPECT_TRUE(m.Matches(a));
+  a.p = "hole";
+  EXPECT_FALSE(m.Matches(a));
+}
+
+// Tests that Field() works when the object is passed by reference.
+TEST(FieldTest, WorksForByRefArgument) {
+  Matcher<const AStruct&> m = Field(&AStruct::x, Ge(0));
+
+  AStruct a;
+  EXPECT_TRUE(m.Matches(a));
+  a.x = -1;
+  EXPECT_FALSE(m.Matches(a));
+}
+
+// Tests that Field(&Foo::field, ...) works when the argument's type
+// is a sub-type of Foo.
+TEST(FieldTest, WorksForArgumentOfSubType) {
+  // Note that the matcher expects DerivedStruct but we say AStruct
+  // inside Field().
+  Matcher<const DerivedStruct&> m = Field(&AStruct::x, Ge(0));
+
+  DerivedStruct d;
+  EXPECT_TRUE(m.Matches(d));
+  d.x = -1;
+  EXPECT_FALSE(m.Matches(d));
+}
+
+// Tests that Field(&Foo::field, m) works when field's type and m's
+// argument type are compatible but not the same.
+TEST(FieldTest, WorksForCompatibleMatcherType) {
+  // The field is an int, but the inner matcher expects a signed char.
+  Matcher<const AStruct&> m = Field(&AStruct::x,
+                                    Matcher<signed char>(Ge(0)));
+
+  AStruct a;
+  EXPECT_TRUE(m.Matches(a));
+  a.x = -1;
+  EXPECT_FALSE(m.Matches(a));
+}
+
+// Tests that Field() can describe itself.
+TEST(FieldTest, CanDescribeSelf) {
+  Matcher<const AStruct&> m = Field(&AStruct::x, Ge(0));
+
+  EXPECT_EQ("is an object whose given field is >= 0", Describe(m));
+  EXPECT_EQ("is an object whose given field isn't >= 0", DescribeNegation(m));
+}
+
+// Tests that Field() can explain the match result.
+TEST(FieldTest, CanExplainMatchResult) {
+  Matcher<const AStruct&> m = Field(&AStruct::x, Ge(0));
+
+  AStruct a;
+  a.x = 1;
+  EXPECT_EQ("whose given field is 1" + OfType("int"), Explain(m, a));
+
+  m = Field(&AStruct::x, GreaterThan(0));
+  EXPECT_EQ(
+      "whose given field is 1" + OfType("int") + ", which is 1 more than 0",
+      Explain(m, a));
+}
+
+// Tests that Field() works when the argument is a pointer to const.
+TEST(FieldForPointerTest, WorksForPointerToConst) {
+  Matcher<const AStruct*> m = Field(&AStruct::x, Ge(0));
+
+  AStruct a;
+  EXPECT_TRUE(m.Matches(&a));
+  a.x = -1;
+  EXPECT_FALSE(m.Matches(&a));
+}
+
+// Tests that Field() works when the argument is a pointer to non-const.
+TEST(FieldForPointerTest, WorksForPointerToNonConst) {
+  Matcher<AStruct*> m = Field(&AStruct::x, Ge(0));
+
+  AStruct a;
+  EXPECT_TRUE(m.Matches(&a));
+  a.x = -1;
+  EXPECT_FALSE(m.Matches(&a));
+}
+
+// Tests that Field() works when the argument is a reference to a const pointer.
+TEST(FieldForPointerTest, WorksForReferenceToConstPointer) {
+  Matcher<AStruct* const&> m = Field(&AStruct::x, Ge(0));
+
+  AStruct a;
+  EXPECT_TRUE(m.Matches(&a));
+  a.x = -1;
+  EXPECT_FALSE(m.Matches(&a));
+}
+
+// Tests that Field() does not match the NULL pointer.
+TEST(FieldForPointerTest, DoesNotMatchNull) {
+  Matcher<const AStruct*> m = Field(&AStruct::x, _);
+  EXPECT_FALSE(m.Matches(NULL));
+}
+
+// Tests that Field(&Foo::field, ...) works when the argument's type
+// is a sub-type of const Foo*.
+TEST(FieldForPointerTest, WorksForArgumentOfSubType) {
+  // Note that the matcher expects DerivedStruct but we say AStruct
+  // inside Field().
+  Matcher<DerivedStruct*> m = Field(&AStruct::x, Ge(0));
+
+  DerivedStruct d;
+  EXPECT_TRUE(m.Matches(&d));
+  d.x = -1;
+  EXPECT_FALSE(m.Matches(&d));
+}
+
+// Tests that Field() can describe itself when used to match a pointer.
+TEST(FieldForPointerTest, CanDescribeSelf) {
+  Matcher<const AStruct*> m = Field(&AStruct::x, Ge(0));
+
+  EXPECT_EQ("is an object whose given field is >= 0", Describe(m));
+  EXPECT_EQ("is an object whose given field isn't >= 0", DescribeNegation(m));
+}
+
+// Tests that Field() can explain the result of matching a pointer.
+TEST(FieldForPointerTest, CanExplainMatchResult) {
+  Matcher<const AStruct*> m = Field(&AStruct::x, Ge(0));
+
+  AStruct a;
+  a.x = 1;
+  EXPECT_EQ("", Explain(m, static_cast<const AStruct*>(NULL)));
+  EXPECT_EQ("which points to an object whose given field is 1" + OfType("int"),
+            Explain(m, &a));
+
+  m = Field(&AStruct::x, GreaterThan(0));
+  EXPECT_EQ("which points to an object whose given field is 1" + OfType("int") +
+            ", which is 1 more than 0", Explain(m, &a));
+}
+
+// A user-defined class for testing Property().
+class AClass {
+ public:
+  AClass() : n_(0) {}
+
+  // A getter that returns a non-reference.
+  int n() const { return n_; }
+
+  void set_n(int new_n) { n_ = new_n; }
+
+  // A getter that returns a reference to const.
+  const string& s() const { return s_; }
+
+  void set_s(const string& new_s) { s_ = new_s; }
+
+  // A getter that returns a reference to non-const.
+  double& x() const { return x_; }
+ private:
+  int n_;
+  string s_;
+
+  static double x_;
+};
+
+double AClass::x_ = 0.0;
+
+// A derived class for testing Property().
+class DerivedClass : public AClass {
+ private:
+  int k_;
+};
+
+// Tests that Property(&Foo::property, ...) works when property()
+// returns a non-reference.
+TEST(PropertyTest, WorksForNonReferenceProperty) {
+  Matcher<const AClass&> m = Property(&AClass::n, Ge(0));
+
+  AClass a;
+  a.set_n(1);
+  EXPECT_TRUE(m.Matches(a));
+
+  a.set_n(-1);
+  EXPECT_FALSE(m.Matches(a));
+}
+
+// Tests that Property(&Foo::property, ...) works when property()
+// returns a reference to const.
+TEST(PropertyTest, WorksForReferenceToConstProperty) {
+  Matcher<const AClass&> m = Property(&AClass::s, StartsWith("hi"));
+
+  AClass a;
+  a.set_s("hill");
+  EXPECT_TRUE(m.Matches(a));
+
+  a.set_s("hole");
+  EXPECT_FALSE(m.Matches(a));
+}
+
+// Tests that Property(&Foo::property, ...) works when property()
+// returns a reference to non-const.
+TEST(PropertyTest, WorksForReferenceToNonConstProperty) {
+  double x = 0.0;
+  AClass a;
+
+  Matcher<const AClass&> m = Property(&AClass::x, Ref(x));
+  EXPECT_FALSE(m.Matches(a));
+
+  m = Property(&AClass::x, Not(Ref(x)));
+  EXPECT_TRUE(m.Matches(a));
+}
+
+// Tests that Property(&Foo::property, ...) works when the argument is
+// passed by value.
+TEST(PropertyTest, WorksForByValueArgument) {
+  Matcher<AClass> m = Property(&AClass::s, StartsWith("hi"));
+
+  AClass a;
+  a.set_s("hill");
+  EXPECT_TRUE(m.Matches(a));
+
+  a.set_s("hole");
+  EXPECT_FALSE(m.Matches(a));
+}
+
+// Tests that Property(&Foo::property, ...) works when the argument's
+// type is a sub-type of Foo.
+TEST(PropertyTest, WorksForArgumentOfSubType) {
+  // The matcher expects a DerivedClass, but inside the Property() we
+  // say AClass.
+  Matcher<const DerivedClass&> m = Property(&AClass::n, Ge(0));
+
+  DerivedClass d;
+  d.set_n(1);
+  EXPECT_TRUE(m.Matches(d));
+
+  d.set_n(-1);
+  EXPECT_FALSE(m.Matches(d));
+}
+
+// Tests that Property(&Foo::property, m) works when property()'s type
+// and m's argument type are compatible but different.
+TEST(PropertyTest, WorksForCompatibleMatcherType) {
+  // n() returns an int but the inner matcher expects a signed char.
+  Matcher<const AClass&> m = Property(&AClass::n,
+                                      Matcher<signed char>(Ge(0)));
+
+  AClass a;
+  EXPECT_TRUE(m.Matches(a));
+  a.set_n(-1);
+  EXPECT_FALSE(m.Matches(a));
+}
+
+// Tests that Property() can describe itself.
+TEST(PropertyTest, CanDescribeSelf) {
+  Matcher<const AClass&> m = Property(&AClass::n, Ge(0));
+
+  EXPECT_EQ("is an object whose given property is >= 0", Describe(m));
+  EXPECT_EQ("is an object whose given property isn't >= 0",
+            DescribeNegation(m));
+}
+
+// Tests that Property() can explain the match result.
+TEST(PropertyTest, CanExplainMatchResult) {
+  Matcher<const AClass&> m = Property(&AClass::n, Ge(0));
+
+  AClass a;
+  a.set_n(1);
+  EXPECT_EQ("whose given property is 1" + OfType("int"), Explain(m, a));
+
+  m = Property(&AClass::n, GreaterThan(0));
+  EXPECT_EQ(
+      "whose given property is 1" + OfType("int") + ", which is 1 more than 0",
+      Explain(m, a));
+}
+
+// Tests that Property() works when the argument is a pointer to const.
+TEST(PropertyForPointerTest, WorksForPointerToConst) {
+  Matcher<const AClass*> m = Property(&AClass::n, Ge(0));
+
+  AClass a;
+  a.set_n(1);
+  EXPECT_TRUE(m.Matches(&a));
+
+  a.set_n(-1);
+  EXPECT_FALSE(m.Matches(&a));
+}
+
+// Tests that Property() works when the argument is a pointer to non-const.
+TEST(PropertyForPointerTest, WorksForPointerToNonConst) {
+  Matcher<AClass*> m = Property(&AClass::s, StartsWith("hi"));
+
+  AClass a;
+  a.set_s("hill");
+  EXPECT_TRUE(m.Matches(&a));
+
+  a.set_s("hole");
+  EXPECT_FALSE(m.Matches(&a));
+}
+
+// Tests that Property() works when the argument is a reference to a
+// const pointer.
+TEST(PropertyForPointerTest, WorksForReferenceToConstPointer) {
+  Matcher<AClass* const&> m = Property(&AClass::s, StartsWith("hi"));
+
+  AClass a;
+  a.set_s("hill");
+  EXPECT_TRUE(m.Matches(&a));
+
+  a.set_s("hole");
+  EXPECT_FALSE(m.Matches(&a));
+}
+
+// Tests that Property() does not match the NULL pointer.
+TEST(PropertyForPointerTest, WorksForReferenceToNonConstProperty) {
+  Matcher<const AClass*> m = Property(&AClass::x, _);
+  EXPECT_FALSE(m.Matches(NULL));
+}
+
+// Tests that Property(&Foo::property, ...) works when the argument's
+// type is a sub-type of const Foo*.
+TEST(PropertyForPointerTest, WorksForArgumentOfSubType) {
+  // The matcher expects a DerivedClass, but inside the Property() we
+  // say AClass.
+  Matcher<const DerivedClass*> m = Property(&AClass::n, Ge(0));
+
+  DerivedClass d;
+  d.set_n(1);
+  EXPECT_TRUE(m.Matches(&d));
+
+  d.set_n(-1);
+  EXPECT_FALSE(m.Matches(&d));
+}
+
+// Tests that Property() can describe itself when used to match a pointer.
+TEST(PropertyForPointerTest, CanDescribeSelf) {
+  Matcher<const AClass*> m = Property(&AClass::n, Ge(0));
+
+  EXPECT_EQ("is an object whose given property is >= 0", Describe(m));
+  EXPECT_EQ("is an object whose given property isn't >= 0",
+            DescribeNegation(m));
+}
+
+// Tests that Property() can explain the result of matching a pointer.
+TEST(PropertyForPointerTest, CanExplainMatchResult) {
+  Matcher<const AClass*> m = Property(&AClass::n, Ge(0));
+
+  AClass a;
+  a.set_n(1);
+  EXPECT_EQ("", Explain(m, static_cast<const AClass*>(NULL)));
+  EXPECT_EQ(
+      "which points to an object whose given property is 1" + OfType("int"),
+      Explain(m, &a));
+
+  m = Property(&AClass::n, GreaterThan(0));
+  EXPECT_EQ("which points to an object whose given property is 1" +
+            OfType("int") + ", which is 1 more than 0",
+            Explain(m, &a));
+}
+
+// Tests ResultOf.
+
+// Tests that ResultOf(f, ...) compiles and works as expected when f is a
+// function pointer.
+string IntToStringFunction(int input) { return input == 1 ? "foo" : "bar"; }
+
+TEST(ResultOfTest, WorksForFunctionPointers) {
+  Matcher<int> matcher = ResultOf(&IntToStringFunction, Eq(string("foo")));
+
+  EXPECT_TRUE(matcher.Matches(1));
+  EXPECT_FALSE(matcher.Matches(2));
+}
+
+// Tests that ResultOf() can describe itself.
+TEST(ResultOfTest, CanDescribeItself) {
+  Matcher<int> matcher = ResultOf(&IntToStringFunction, StrEq("foo"));
+
+  EXPECT_EQ("is mapped by the given callable to a value that "
+            "is equal to \"foo\"", Describe(matcher));
+  EXPECT_EQ("is mapped by the given callable to a value that "
+            "isn't equal to \"foo\"", DescribeNegation(matcher));
+}
+
+// Tests that ResultOf() can explain the match result.
+int IntFunction(int input) { return input == 42 ? 80 : 90; }
+
+TEST(ResultOfTest, CanExplainMatchResult) {
+  Matcher<int> matcher = ResultOf(&IntFunction, Ge(85));
+  EXPECT_EQ("which is mapped by the given callable to 90" + OfType("int"),
+            Explain(matcher, 36));
+
+  matcher = ResultOf(&IntFunction, GreaterThan(85));
+  EXPECT_EQ("which is mapped by the given callable to 90" + OfType("int") +
+            ", which is 5 more than 85", Explain(matcher, 36));
+}
+
+// Tests that ResultOf(f, ...) compiles and works as expected when f(x)
+// returns a non-reference.
+TEST(ResultOfTest, WorksForNonReferenceResults) {
+  Matcher<int> matcher = ResultOf(&IntFunction, Eq(80));
+
+  EXPECT_TRUE(matcher.Matches(42));
+  EXPECT_FALSE(matcher.Matches(36));
+}
+
+// Tests that ResultOf(f, ...) compiles and works as expected when f(x)
+// returns a reference to non-const.
+double& DoubleFunction(double& input) { return input; }  // NOLINT
+
+Uncopyable& RefUncopyableFunction(Uncopyable& obj) {  // NOLINT
+  return obj;
+}
+
+TEST(ResultOfTest, WorksForReferenceToNonConstResults) {
+  double x = 3.14;
+  double x2 = x;
+  Matcher<double&> matcher = ResultOf(&DoubleFunction, Ref(x));
+
+  EXPECT_TRUE(matcher.Matches(x));
+  EXPECT_FALSE(matcher.Matches(x2));
+
+  // Test that ResultOf works with uncopyable objects
+  Uncopyable obj(0);
+  Uncopyable obj2(0);
+  Matcher<Uncopyable&> matcher2 =
+      ResultOf(&RefUncopyableFunction, Ref(obj));
+
+  EXPECT_TRUE(matcher2.Matches(obj));
+  EXPECT_FALSE(matcher2.Matches(obj2));
+}
+
+// Tests that ResultOf(f, ...) compiles and works as expected when f(x)
+// returns a reference to const.
+const string& StringFunction(const string& input) { return input; }
+
+TEST(ResultOfTest, WorksForReferenceToConstResults) {
+  string s = "foo";
+  string s2 = s;
+  Matcher<const string&> matcher = ResultOf(&StringFunction, Ref(s));
+
+  EXPECT_TRUE(matcher.Matches(s));
+  EXPECT_FALSE(matcher.Matches(s2));
+}
+
+// Tests that ResultOf(f, m) works when f(x) and m's
+// argument types are compatible but different.
+TEST(ResultOfTest, WorksForCompatibleMatcherTypes) {
+  // IntFunction() returns int but the inner matcher expects a signed char.
+  Matcher<int> matcher = ResultOf(IntFunction, Matcher<signed char>(Ge(85)));
+
+  EXPECT_TRUE(matcher.Matches(36));
+  EXPECT_FALSE(matcher.Matches(42));
+}
+
+// Tests that the program aborts when ResultOf is passed
+// a NULL function pointer.
+TEST(ResultOfDeathTest, DiesOnNullFunctionPointers) {
+  EXPECT_DEATH_IF_SUPPORTED(
+      ResultOf(static_cast<string(*)(int dummy)>(NULL), Eq(string("foo"))),
+               "NULL function pointer is passed into ResultOf\\(\\)\\.");
+}
+
+// Tests that ResultOf(f, ...) compiles and works as expected when f is a
+// function reference.
+TEST(ResultOfTest, WorksForFunctionReferences) {
+  Matcher<int> matcher = ResultOf(IntToStringFunction, StrEq("foo"));
+  EXPECT_TRUE(matcher.Matches(1));
+  EXPECT_FALSE(matcher.Matches(2));
+}
+
+// Tests that ResultOf(f, ...) compiles and works as expected when f is a
+// function object.
+struct Functor : public ::std::unary_function<int, string> {
+  result_type operator()(argument_type input) const {
+    return IntToStringFunction(input);
+  }
+};
+
+TEST(ResultOfTest, WorksForFunctors) {
+  Matcher<int> matcher = ResultOf(Functor(), Eq(string("foo")));
+
+  EXPECT_TRUE(matcher.Matches(1));
+  EXPECT_FALSE(matcher.Matches(2));
+}
+
+// Tests that ResultOf(f, ...) compiles and works as expected when f is a
+// functor with more then one operator() defined. ResultOf() must work
+// for each defined operator().
+struct PolymorphicFunctor {
+  typedef int result_type;
+  int operator()(int n) { return n; }
+  int operator()(const char* s) { return static_cast<int>(strlen(s)); }
+};
+
+TEST(ResultOfTest, WorksForPolymorphicFunctors) {
+  Matcher<int> matcher_int = ResultOf(PolymorphicFunctor(), Ge(5));
+
+  EXPECT_TRUE(matcher_int.Matches(10));
+  EXPECT_FALSE(matcher_int.Matches(2));
+
+  Matcher<const char*> matcher_string = ResultOf(PolymorphicFunctor(), Ge(5));
+
+  EXPECT_TRUE(matcher_string.Matches("long string"));
+  EXPECT_FALSE(matcher_string.Matches("shrt"));
+}
+
+const int* ReferencingFunction(const int& n) { return &n; }
+
+struct ReferencingFunctor {
+  typedef const int* result_type;
+  result_type operator()(const int& n) { return &n; }
+};
+
+TEST(ResultOfTest, WorksForReferencingCallables) {
+  const int n = 1;
+  const int n2 = 1;
+  Matcher<const int&> matcher2 = ResultOf(ReferencingFunction, Eq(&n));
+  EXPECT_TRUE(matcher2.Matches(n));
+  EXPECT_FALSE(matcher2.Matches(n2));
+
+  Matcher<const int&> matcher3 = ResultOf(ReferencingFunctor(), Eq(&n));
+  EXPECT_TRUE(matcher3.Matches(n));
+  EXPECT_FALSE(matcher3.Matches(n2));
+}
+
+class DivisibleByImpl {
+ public:
+  explicit DivisibleByImpl(int a_divider) : divider_(a_divider) {}
+
+  // For testing using ExplainMatchResultTo() with polymorphic matchers.
+  template <typename T>
+  bool MatchAndExplain(const T& n, MatchResultListener* listener) const {
+    *listener << "which is " << (n % divider_) << " modulo "
+              << divider_;
+    return (n % divider_) == 0;
+  }
+
+  void DescribeTo(ostream* os) const {
+    *os << "is divisible by " << divider_;
+  }
+
+  void DescribeNegationTo(ostream* os) const {
+    *os << "is not divisible by " << divider_;
+  }
+
+  void set_divider(int a_divider) { divider_ = a_divider; }
+  int divider() const { return divider_; }
+
+ private:
+  int divider_;
+};
+
+PolymorphicMatcher<DivisibleByImpl> DivisibleBy(int n) {
+  return MakePolymorphicMatcher(DivisibleByImpl(n));
+}
+
+// Tests that when AllOf() fails, only the first failing matcher is
+// asked to explain why.
+TEST(ExplainMatchResultTest, AllOf_False_False) {
+  const Matcher<int> m = AllOf(DivisibleBy(4), DivisibleBy(3));
+  EXPECT_EQ("which is 1 modulo 4", Explain(m, 5));
+}
+
+// Tests that when AllOf() fails, only the first failing matcher is
+// asked to explain why.
+TEST(ExplainMatchResultTest, AllOf_False_True) {
+  const Matcher<int> m = AllOf(DivisibleBy(4), DivisibleBy(3));
+  EXPECT_EQ("which is 2 modulo 4", Explain(m, 6));
+}
+
+// Tests that when AllOf() fails, only the first failing matcher is
+// asked to explain why.
+TEST(ExplainMatchResultTest, AllOf_True_False) {
+  const Matcher<int> m = AllOf(Ge(1), DivisibleBy(3));
+  EXPECT_EQ("which is 2 modulo 3", Explain(m, 5));
+}
+
+// Tests that when AllOf() succeeds, all matchers are asked to explain
+// why.
+TEST(ExplainMatchResultTest, AllOf_True_True) {
+  const Matcher<int> m = AllOf(DivisibleBy(2), DivisibleBy(3));
+  EXPECT_EQ("which is 0 modulo 2, and which is 0 modulo 3", Explain(m, 6));
+}
+
+TEST(ExplainMatchResultTest, AllOf_True_True_2) {
+  const Matcher<int> m = AllOf(Ge(2), Le(3));
+  EXPECT_EQ("", Explain(m, 2));
+}
+
+TEST(ExplainmatcherResultTest, MonomorphicMatcher) {
+  const Matcher<int> m = GreaterThan(5);
+  EXPECT_EQ("which is 1 more than 5", Explain(m, 6));
+}
+
+// The following two tests verify that values without a public copy
+// ctor can be used as arguments to matchers like Eq(), Ge(), and etc
+// with the help of ByRef().
+
+class NotCopyable {
+ public:
+  explicit NotCopyable(int a_value) : value_(a_value) {}
+
+  int value() const { return value_; }
+
+  bool operator==(const NotCopyable& rhs) const {
+    return value() == rhs.value();
+  }
+
+  bool operator>=(const NotCopyable& rhs) const {
+    return value() >= rhs.value();
+  }
+ private:
+  int value_;
+
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(NotCopyable);
+};
+
+TEST(ByRefTest, AllowsNotCopyableConstValueInMatchers) {
+  const NotCopyable const_value1(1);
+  const Matcher<const NotCopyable&> m = Eq(ByRef(const_value1));
+
+  const NotCopyable n1(1), n2(2);
+  EXPECT_TRUE(m.Matches(n1));
+  EXPECT_FALSE(m.Matches(n2));
+}
+
+TEST(ByRefTest, AllowsNotCopyableValueInMatchers) {
+  NotCopyable value2(2);
+  const Matcher<NotCopyable&> m = Ge(ByRef(value2));
+
+  NotCopyable n1(1), n2(2);
+  EXPECT_FALSE(m.Matches(n1));
+  EXPECT_TRUE(m.Matches(n2));
+}
+
+#if GTEST_HAS_TYPED_TEST
+// Tests ContainerEq with different container types, and
+// different element types.
+
+template <typename T>
+class ContainerEqTest : public testing::Test {};
+
+typedef testing::Types<
+    set<int>,
+    vector<size_t>,
+    multiset<size_t>,
+    list<int> >
+    ContainerEqTestTypes;
+
+TYPED_TEST_CASE(ContainerEqTest, ContainerEqTestTypes);
+
+// Tests that the filled container is equal to itself.
+TYPED_TEST(ContainerEqTest, EqualsSelf) {
+  static const int vals[] = {1, 1, 2, 3, 5, 8};
+  TypeParam my_set(vals, vals + 6);
+  const Matcher<TypeParam> m = ContainerEq(my_set);
+  EXPECT_TRUE(m.Matches(my_set));
+  EXPECT_EQ("", Explain(m, my_set));
+}
+
+// Tests that missing values are reported.
+TYPED_TEST(ContainerEqTest, ValueMissing) {
+  static const int vals[] = {1, 1, 2, 3, 5, 8};
+  static const int test_vals[] = {2, 1, 8, 5};
+  TypeParam my_set(vals, vals + 6);
+  TypeParam test_set(test_vals, test_vals + 4);
+  const Matcher<TypeParam> m = ContainerEq(my_set);
+  EXPECT_FALSE(m.Matches(test_set));
+  EXPECT_EQ("which doesn't have these expected elements: 3",
+            Explain(m, test_set));
+}
+
+// Tests that added values are reported.
+TYPED_TEST(ContainerEqTest, ValueAdded) {
+  static const int vals[] = {1, 1, 2, 3, 5, 8};
+  static const int test_vals[] = {1, 2, 3, 5, 8, 46};
+  TypeParam my_set(vals, vals + 6);
+  TypeParam test_set(test_vals, test_vals + 6);
+  const Matcher<const TypeParam&> m = ContainerEq(my_set);
+  EXPECT_FALSE(m.Matches(test_set));
+  EXPECT_EQ("which has these unexpected elements: 46", Explain(m, test_set));
+}
+
+// Tests that added and missing values are reported together.
+TYPED_TEST(ContainerEqTest, ValueAddedAndRemoved) {
+  static const int vals[] = {1, 1, 2, 3, 5, 8};
+  static const int test_vals[] = {1, 2, 3, 8, 46};
+  TypeParam my_set(vals, vals + 6);
+  TypeParam test_set(test_vals, test_vals + 5);
+  const Matcher<TypeParam> m = ContainerEq(my_set);
+  EXPECT_FALSE(m.Matches(test_set));
+  EXPECT_EQ("which has these unexpected elements: 46,\n"
+            "and doesn't have these expected elements: 5",
+            Explain(m, test_set));
+}
+
+// Tests duplicated value -- expect no explanation.
+TYPED_TEST(ContainerEqTest, DuplicateDifference) {
+  static const int vals[] = {1, 1, 2, 3, 5, 8};
+  static const int test_vals[] = {1, 2, 3, 5, 8};
+  TypeParam my_set(vals, vals + 6);
+  TypeParam test_set(test_vals, test_vals + 5);
+  const Matcher<const TypeParam&> m = ContainerEq(my_set);
+  // Depending on the container, match may be true or false
+  // But in any case there should be no explanation.
+  EXPECT_EQ("", Explain(m, test_set));
+}
+#endif  // GTEST_HAS_TYPED_TEST
+
+// Tests that mutliple missing values are reported.
+// Using just vector here, so order is predicatble.
+TEST(ContainerEqExtraTest, MultipleValuesMissing) {
+  static const int vals[] = {1, 1, 2, 3, 5, 8};
+  static const int test_vals[] = {2, 1, 5};
+  vector<int> my_set(vals, vals + 6);
+  vector<int> test_set(test_vals, test_vals + 3);
+  const Matcher<vector<int> > m = ContainerEq(my_set);
+  EXPECT_FALSE(m.Matches(test_set));
+  EXPECT_EQ("which doesn't have these expected elements: 3, 8",
+            Explain(m, test_set));
+}
+
+// Tests that added values are reported.
+// Using just vector here, so order is predicatble.
+TEST(ContainerEqExtraTest, MultipleValuesAdded) {
+  static const int vals[] = {1, 1, 2, 3, 5, 8};
+  static const int test_vals[] = {1, 2, 92, 3, 5, 8, 46};
+  list<size_t> my_set(vals, vals + 6);
+  list<size_t> test_set(test_vals, test_vals + 7);
+  const Matcher<const list<size_t>&> m = ContainerEq(my_set);
+  EXPECT_FALSE(m.Matches(test_set));
+  EXPECT_EQ("which has these unexpected elements: 92, 46",
+            Explain(m, test_set));
+}
+
+// Tests that added and missing values are reported together.
+TEST(ContainerEqExtraTest, MultipleValuesAddedAndRemoved) {
+  static const int vals[] = {1, 1, 2, 3, 5, 8};
+  static const int test_vals[] = {1, 2, 3, 92, 46};
+  list<size_t> my_set(vals, vals + 6);
+  list<size_t> test_set(test_vals, test_vals + 5);
+  const Matcher<const list<size_t> > m = ContainerEq(my_set);
+  EXPECT_FALSE(m.Matches(test_set));
+  EXPECT_EQ("which has these unexpected elements: 92, 46,\n"
+            "and doesn't have these expected elements: 5, 8",
+            Explain(m, test_set));
+}
+
+// Tests to see that duplicate elements are detected,
+// but (as above) not reported in the explanation.
+TEST(ContainerEqExtraTest, MultiSetOfIntDuplicateDifference) {
+  static const int vals[] = {1, 1, 2, 3, 5, 8};
+  static const int test_vals[] = {1, 2, 3, 5, 8};
+  vector<int> my_set(vals, vals + 6);
+  vector<int> test_set(test_vals, test_vals + 5);
+  const Matcher<vector<int> > m = ContainerEq(my_set);
+  EXPECT_TRUE(m.Matches(my_set));
+  EXPECT_FALSE(m.Matches(test_set));
+  // There is nothing to report when both sets contain all the same values.
+  EXPECT_EQ("", Explain(m, test_set));
+}
+
+// Tests that ContainerEq works for non-trivial associative containers,
+// like maps.
+TEST(ContainerEqExtraTest, WorksForMaps) {
+  map<int, std::string> my_map;
+  my_map[0] = "a";
+  my_map[1] = "b";
+
+  map<int, std::string> test_map;
+  test_map[0] = "aa";
+  test_map[1] = "b";
+
+  const Matcher<const map<int, std::string>&> m = ContainerEq(my_map);
+  EXPECT_TRUE(m.Matches(my_map));
+  EXPECT_FALSE(m.Matches(test_map));
+
+  EXPECT_EQ("which has these unexpected elements: (0, \"aa\"),\n"
+            "and doesn't have these expected elements: (0, \"a\")",
+            Explain(m, test_map));
+}
+
+TEST(ContainerEqExtraTest, WorksForNativeArray) {
+  int a1[] = { 1, 2, 3 };
+  int a2[] = { 1, 2, 3 };
+  int b[] = { 1, 2, 4 };
+
+  EXPECT_THAT(a1, ContainerEq(a2));
+  EXPECT_THAT(a1, Not(ContainerEq(b)));
+}
+
+TEST(ContainerEqExtraTest, WorksForTwoDimensionalNativeArray) {
+  const char a1[][3] = { "hi", "lo" };
+  const char a2[][3] = { "hi", "lo" };
+  const char b[][3] = { "lo", "hi" };
+
+  // Tests using ContainerEq() in the first dimension.
+  EXPECT_THAT(a1, ContainerEq(a2));
+  EXPECT_THAT(a1, Not(ContainerEq(b)));
+
+  // Tests using ContainerEq() in the second dimension.
+  EXPECT_THAT(a1, ElementsAre(ContainerEq(a2[0]), ContainerEq(a2[1])));
+  EXPECT_THAT(a1, ElementsAre(Not(ContainerEq(b[0])), ContainerEq(a2[1])));
+}
+
+TEST(ContainerEqExtraTest, WorksForNativeArrayAsTuple) {
+  const int a1[] = { 1, 2, 3 };
+  const int a2[] = { 1, 2, 3 };
+  const int b[] = { 1, 2, 3, 4 };
+
+  const int* const p1 = a1;
+  EXPECT_THAT(make_tuple(p1, 3), ContainerEq(a2));
+  EXPECT_THAT(make_tuple(p1, 3), Not(ContainerEq(b)));
+
+  const int c[] = { 1, 3, 2 };
+  EXPECT_THAT(make_tuple(p1, 3), Not(ContainerEq(c)));
+}
+
+TEST(ContainerEqExtraTest, CopiesNativeArrayParameter) {
+  std::string a1[][3] = {
+    { "hi", "hello", "ciao" },
+    { "bye", "see you", "ciao" }
+  };
+
+  std::string a2[][3] = {
+    { "hi", "hello", "ciao" },
+    { "bye", "see you", "ciao" }
+  };
+
+  const Matcher<const std::string(&)[2][3]> m = ContainerEq(a2);
+  EXPECT_THAT(a1, m);
+
+  a2[0][0] = "ha";
+  EXPECT_THAT(a1, m);
+}
+
+TEST(WhenSortedByTest, WorksForEmptyContainer) {
+  const vector<int> numbers;
+  EXPECT_THAT(numbers, WhenSortedBy(less<int>(), ElementsAre()));
+  EXPECT_THAT(numbers, Not(WhenSortedBy(less<int>(), ElementsAre(1))));
+}
+
+TEST(WhenSortedByTest, WorksForNonEmptyContainer) {
+  vector<unsigned> numbers;
+  numbers.push_back(3);
+  numbers.push_back(1);
+  numbers.push_back(2);
+  numbers.push_back(2);
+  EXPECT_THAT(numbers, WhenSortedBy(greater<unsigned>(),
+                                    ElementsAre(3, 2, 2, 1)));
+  EXPECT_THAT(numbers, Not(WhenSortedBy(greater<unsigned>(),
+                                        ElementsAre(1, 2, 2, 3))));
+}
+
+TEST(WhenSortedByTest, WorksForNonVectorContainer) {
+  list<string> words;
+  words.push_back("say");
+  words.push_back("hello");
+  words.push_back("world");
+  EXPECT_THAT(words, WhenSortedBy(less<string>(),
+                                  ElementsAre("hello", "say", "world")));
+  EXPECT_THAT(words, Not(WhenSortedBy(less<string>(),
+                                      ElementsAre("say", "hello", "world"))));
+}
+
+TEST(WhenSortedByTest, WorksForNativeArray) {
+  const int numbers[] = { 1, 3, 2, 4 };
+  const int sorted_numbers[] = { 1, 2, 3, 4 };
+  EXPECT_THAT(numbers, WhenSortedBy(less<int>(), ElementsAre(1, 2, 3, 4)));
+  EXPECT_THAT(numbers, WhenSortedBy(less<int>(),
+                                    ElementsAreArray(sorted_numbers)));
+  EXPECT_THAT(numbers, Not(WhenSortedBy(less<int>(), ElementsAre(1, 3, 2, 4))));
+}
+
+TEST(WhenSortedByTest, CanDescribeSelf) {
+  const Matcher<vector<int> > m = WhenSortedBy(less<int>(), ElementsAre(1, 2));
+  EXPECT_EQ("(when sorted) has 2 elements where\n"
+            "element #0 is equal to 1,\n"
+            "element #1 is equal to 2",
+            Describe(m));
+  EXPECT_EQ("(when sorted) doesn't have 2 elements, or\n"
+            "element #0 isn't equal to 1, or\n"
+            "element #1 isn't equal to 2",
+            DescribeNegation(m));
+}
+
+TEST(WhenSortedByTest, ExplainsMatchResult) {
+  const int a[] = { 2, 1 };
+  EXPECT_EQ("which is { 1, 2 } when sorted, whose element #0 doesn't match",
+            Explain(WhenSortedBy(less<int>(), ElementsAre(2, 3)), a));
+  EXPECT_EQ("which is { 1, 2 } when sorted",
+            Explain(WhenSortedBy(less<int>(), ElementsAre(1, 2)), a));
+}
+
+// WhenSorted() is a simple wrapper on WhenSortedBy().  Hence we don't
+// need to test it as exhaustively as we test the latter.
+
+TEST(WhenSortedTest, WorksForEmptyContainer) {
+  const vector<int> numbers;
+  EXPECT_THAT(numbers, WhenSorted(ElementsAre()));
+  EXPECT_THAT(numbers, Not(WhenSorted(ElementsAre(1))));
+}
+
+TEST(WhenSortedTest, WorksForNonEmptyContainer) {
+  list<string> words;
+  words.push_back("3");
+  words.push_back("1");
+  words.push_back("2");
+  words.push_back("2");
+  EXPECT_THAT(words, WhenSorted(ElementsAre("1", "2", "2", "3")));
+  EXPECT_THAT(words, Not(WhenSorted(ElementsAre("3", "1", "2", "2"))));
+}
+
+// Tests IsReadableTypeName().
+
+TEST(IsReadableTypeNameTest, ReturnsTrueForShortNames) {
+  EXPECT_TRUE(IsReadableTypeName("int"));
+  EXPECT_TRUE(IsReadableTypeName("const unsigned char*"));
+  EXPECT_TRUE(IsReadableTypeName("MyMap<int, void*>"));
+  EXPECT_TRUE(IsReadableTypeName("void (*)(int, bool)"));
+}
+
+TEST(IsReadableTypeNameTest, ReturnsTrueForLongNonTemplateNonFunctionNames) {
+  EXPECT_TRUE(IsReadableTypeName("my_long_namespace::MyClassName"));
+  EXPECT_TRUE(IsReadableTypeName("int [5][6][7][8][9][10][11]"));
+  EXPECT_TRUE(IsReadableTypeName("my_namespace::MyOuterClass::MyInnerClass"));
+}
+
+TEST(IsReadableTypeNameTest, ReturnsFalseForLongTemplateNames) {
+  EXPECT_FALSE(
+      IsReadableTypeName("basic_string<char, std::char_traits<char> >"));
+  EXPECT_FALSE(IsReadableTypeName("std::vector<int, std::alloc_traits<int> >"));
+}
+
+TEST(IsReadableTypeNameTest, ReturnsFalseForLongFunctionTypeNames) {
+  EXPECT_FALSE(IsReadableTypeName("void (&)(int, bool, char, float)"));
+}
+
+// Tests JoinAsTuple().
+
+TEST(JoinAsTupleTest, JoinsEmptyTuple) {
+  EXPECT_EQ("", JoinAsTuple(Strings()));
+}
+
+TEST(JoinAsTupleTest, JoinsOneTuple) {
+  const char* fields[] = { "1" };
+  EXPECT_EQ("1", JoinAsTuple(Strings(fields, fields + 1)));
+}
+
+TEST(JoinAsTupleTest, JoinsTwoTuple) {
+  const char* fields[] = { "1", "a" };
+  EXPECT_EQ("(1, a)", JoinAsTuple(Strings(fields, fields + 2)));
+}
+
+TEST(JoinAsTupleTest, JoinsTenTuple) {
+  const char* fields[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" };
+  EXPECT_EQ("(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)",
+            JoinAsTuple(Strings(fields, fields + 10)));
+}
+
+// Tests FormatMatcherDescription().
+
+TEST(FormatMatcherDescriptionTest, WorksForEmptyDescription) {
+  EXPECT_EQ("is even",
+            FormatMatcherDescription(false, "IsEven", Strings()));
+  EXPECT_EQ("not (is even)",
+            FormatMatcherDescription(true, "IsEven", Strings()));
+
+  const char* params[] = { "5" };
+  EXPECT_EQ("equals 5",
+            FormatMatcherDescription(false, "Equals",
+                                     Strings(params, params + 1)));
+
+  const char* params2[] = { "5", "8" };
+  EXPECT_EQ("is in range (5, 8)",
+            FormatMatcherDescription(false, "IsInRange",
+                                     Strings(params2, params2 + 2)));
+}
+
+// Tests PolymorphicMatcher::mutable_impl().
+TEST(PolymorphicMatcherTest, CanAccessMutableImpl) {
+  PolymorphicMatcher<DivisibleByImpl> m(DivisibleByImpl(42));
+  DivisibleByImpl& impl = m.mutable_impl();
+  EXPECT_EQ(42, impl.divider());
+
+  impl.set_divider(0);
+  EXPECT_EQ(0, m.mutable_impl().divider());
+}
+
+// Tests PolymorphicMatcher::impl().
+TEST(PolymorphicMatcherTest, CanAccessImpl) {
+  const PolymorphicMatcher<DivisibleByImpl> m(DivisibleByImpl(42));
+  const DivisibleByImpl& impl = m.impl();
+  EXPECT_EQ(42, impl.divider());
+}
+
+TEST(MatcherTupleTest, ExplainsMatchFailure) {
+  stringstream ss1;
+  ExplainMatchFailureTupleTo(make_tuple(Matcher<char>(Eq('a')), GreaterThan(5)),
+                             make_tuple('a', 10), &ss1);
+  EXPECT_EQ("", ss1.str());  // Successful match.
+
+  stringstream ss2;
+  ExplainMatchFailureTupleTo(make_tuple(GreaterThan(5), Matcher<char>(Eq('a'))),
+                             make_tuple(2, 'b'), &ss2);
+  EXPECT_EQ("  Expected arg #0: is > 5\n"
+            "           Actual: 2, which is 3 less than 5\n"
+            "  Expected arg #1: is equal to 'a' (97, 0x61)\n"
+            "           Actual: 'b' (98, 0x62)\n",
+            ss2.str());  // Failed match where both arguments need explanation.
+
+  stringstream ss3;
+  ExplainMatchFailureTupleTo(make_tuple(GreaterThan(5), Matcher<char>(Eq('a'))),
+                             make_tuple(2, 'a'), &ss3);
+  EXPECT_EQ("  Expected arg #0: is > 5\n"
+            "           Actual: 2, which is 3 less than 5\n",
+            ss3.str());  // Failed match where only one argument needs
+                         // explanation.
+}
+
+// Tests Each().
+
+TEST(EachTest, ExplainsMatchResultCorrectly) {
+  set<int> a;  // empty
+
+  Matcher<set<int> > m = Each(2);
+  EXPECT_EQ("", Explain(m, a));
+
+  Matcher<const int(&)[1]> n = Each(1);  // NOLINT
+
+  const int b[1] = { 1 };
+  EXPECT_EQ("", Explain(n, b));
+
+  n = Each(3);
+  EXPECT_EQ("whose element #0 doesn't match", Explain(n, b));
+
+  a.insert(1);
+  a.insert(2);
+  a.insert(3);
+  m = Each(GreaterThan(0));
+  EXPECT_EQ("", Explain(m, a));
+
+  m = Each(GreaterThan(10));
+  EXPECT_EQ("whose element #0 doesn't match, which is 9 less than 10",
+            Explain(m, a));
+}
+
+TEST(EachTest, DescribesItselfCorrectly) {
+  Matcher<vector<int> > m = Each(1);
+  EXPECT_EQ("only contains elements that is equal to 1", Describe(m));
+
+  Matcher<vector<int> > m2 = Not(m);
+  EXPECT_EQ("contains some element that isn't equal to 1", Describe(m2));
+}
+
+TEST(EachTest, MatchesVectorWhenAllElementsMatch) {
+  vector<int> some_vector;
+  EXPECT_THAT(some_vector, Each(1));
+  some_vector.push_back(3);
+  EXPECT_THAT(some_vector, Not(Each(1)));
+  EXPECT_THAT(some_vector, Each(3));
+  some_vector.push_back(1);
+  some_vector.push_back(2);
+  EXPECT_THAT(some_vector, Not(Each(3)));
+  EXPECT_THAT(some_vector, Each(Lt(3.5)));
+
+  vector<string> another_vector;
+  another_vector.push_back("fee");
+  EXPECT_THAT(another_vector, Each(string("fee")));
+  another_vector.push_back("fie");
+  another_vector.push_back("foe");
+  another_vector.push_back("fum");
+  EXPECT_THAT(another_vector, Not(Each(string("fee"))));
+}
+
+TEST(EachTest, MatchesMapWhenAllElementsMatch) {
+  map<const char*, int> my_map;
+  const char* bar = "a string";
+  my_map[bar] = 2;
+  EXPECT_THAT(my_map, Each(make_pair(bar, 2)));
+
+  map<string, int> another_map;
+  EXPECT_THAT(another_map, Each(make_pair(string("fee"), 1)));
+  another_map["fee"] = 1;
+  EXPECT_THAT(another_map, Each(make_pair(string("fee"), 1)));
+  another_map["fie"] = 2;
+  another_map["foe"] = 3;
+  another_map["fum"] = 4;
+  EXPECT_THAT(another_map, Not(Each(make_pair(string("fee"), 1))));
+  EXPECT_THAT(another_map, Not(Each(make_pair(string("fum"), 1))));
+  EXPECT_THAT(another_map, Each(Pair(_, Gt(0))));
+}
+
+TEST(EachTest, AcceptsMatcher) {
+  const int a[] = { 1, 2, 3 };
+  EXPECT_THAT(a, Each(Gt(0)));
+  EXPECT_THAT(a, Not(Each(Gt(1))));
+}
+
+TEST(EachTest, WorksForNativeArrayAsTuple) {
+  const int a[] = { 1, 2 };
+  const int* const pointer = a;
+  EXPECT_THAT(make_tuple(pointer, 2), Each(Gt(0)));
+  EXPECT_THAT(make_tuple(pointer, 2), Not(Each(Gt(1))));
+}
+
+// For testing Pointwise().
+class IsHalfOfMatcher {
+ public:
+  template <typename T1, typename T2>
+  bool MatchAndExplain(const tuple<T1, T2>& a_pair,
+                       MatchResultListener* listener) const {
+    if (get<0>(a_pair) == get<1>(a_pair)/2) {
+      *listener << "where the second is " << get<1>(a_pair);
+      return true;
+    } else {
+      *listener << "where the second/2 is " << get<1>(a_pair)/2;
+      return false;
+    }
+  }
+
+  void DescribeTo(ostream* os) const {
+    *os << "are a pair where the first is half of the second";
+  }
+
+  void DescribeNegationTo(ostream* os) const {
+    *os << "are a pair where the first isn't half of the second";
+  }
+};
+
+PolymorphicMatcher<IsHalfOfMatcher> IsHalfOf() {
+  return MakePolymorphicMatcher(IsHalfOfMatcher());
+}
+
+TEST(PointwiseTest, DescribesSelf) {
+  vector<int> rhs;
+  rhs.push_back(1);
+  rhs.push_back(2);
+  rhs.push_back(3);
+  const Matcher<const vector<int>&> m = Pointwise(IsHalfOf(), rhs);
+  EXPECT_EQ("contains 3 values, where each value and its corresponding value "
+            "in { 1, 2, 3 } are a pair where the first is half of the second",
+            Describe(m));
+  EXPECT_EQ("doesn't contain exactly 3 values, or contains a value x at some "
+            "index i where x and the i-th value of { 1, 2, 3 } are a pair "
+            "where the first isn't half of the second",
+            DescribeNegation(m));
+}
+
+TEST(PointwiseTest, MakesCopyOfRhs) {
+  list<signed char> rhs;
+  rhs.push_back(2);
+  rhs.push_back(4);
+
+  int lhs[] = { 1, 2 };
+  const Matcher<const int (&)[2]> m = Pointwise(IsHalfOf(), rhs);
+  EXPECT_THAT(lhs, m);
+
+  // Changing rhs now shouldn't affect m, which made a copy of rhs.
+  rhs.push_back(6);
+  EXPECT_THAT(lhs, m);
+}
+
+TEST(PointwiseTest, WorksForLhsNativeArray) {
+  const int lhs[] = { 1, 2, 3 };
+  vector<int> rhs;
+  rhs.push_back(2);
+  rhs.push_back(4);
+  rhs.push_back(6);
+  EXPECT_THAT(lhs, Pointwise(Lt(), rhs));
+  EXPECT_THAT(lhs, Not(Pointwise(Gt(), rhs)));
+}
+
+TEST(PointwiseTest, WorksForRhsNativeArray) {
+  const int rhs[] = { 1, 2, 3 };
+  vector<int> lhs;
+  lhs.push_back(2);
+  lhs.push_back(4);
+  lhs.push_back(6);
+  EXPECT_THAT(lhs, Pointwise(Gt(), rhs));
+  EXPECT_THAT(lhs, Not(Pointwise(Lt(), rhs)));
+}
+
+TEST(PointwiseTest, RejectsWrongSize) {
+  const double lhs[2] = { 1, 2 };
+  const int rhs[1] = { 0 };
+  EXPECT_THAT(lhs, Not(Pointwise(Gt(), rhs)));
+  EXPECT_EQ("which contains 2 values",
+            Explain(Pointwise(Gt(), rhs), lhs));
+
+  const int rhs2[3] = { 0, 1, 2 };
+  EXPECT_THAT(lhs, Not(Pointwise(Gt(), rhs2)));
+}
+
+TEST(PointwiseTest, RejectsWrongContent) {
+  const double lhs[3] = { 1, 2, 3 };
+  const int rhs[3] = { 2, 6, 4 };
+  EXPECT_THAT(lhs, Not(Pointwise(IsHalfOf(), rhs)));
+  EXPECT_EQ("where the value pair (2, 6) at index #1 don't match, "
+            "where the second/2 is 3",
+            Explain(Pointwise(IsHalfOf(), rhs), lhs));
+}
+
+TEST(PointwiseTest, AcceptsCorrectContent) {
+  const double lhs[3] = { 1, 2, 3 };
+  const int rhs[3] = { 2, 4, 6 };
+  EXPECT_THAT(lhs, Pointwise(IsHalfOf(), rhs));
+  EXPECT_EQ("", Explain(Pointwise(IsHalfOf(), rhs), lhs));
+}
+
+TEST(PointwiseTest, AllowsMonomorphicInnerMatcher) {
+  const double lhs[3] = { 1, 2, 3 };
+  const int rhs[3] = { 2, 4, 6 };
+  const Matcher<tuple<const double&, const int&> > m1 = IsHalfOf();
+  EXPECT_THAT(lhs, Pointwise(m1, rhs));
+  EXPECT_EQ("", Explain(Pointwise(m1, rhs), lhs));
+
+  // This type works as a tuple<const double&, const int&> can be
+  // implicitly cast to tuple<double, int>.
+  const Matcher<tuple<double, int> > m2 = IsHalfOf();
+  EXPECT_THAT(lhs, Pointwise(m2, rhs));
+  EXPECT_EQ("", Explain(Pointwise(m2, rhs), lhs));
+}
+
+}  // namespace gmock_matchers_test
+}  // namespace testing
diff --git a/google-breakpad/src/testing/test/gmock-more-actions_test.cc b/google-breakpad/src/testing/test/gmock-more-actions_test.cc
new file mode 100644
index 0000000..9fa9e2e
--- /dev/null
+++ b/google-breakpad/src/testing/test/gmock-more-actions_test.cc
@@ -0,0 +1,705 @@
+// Copyright 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Google Mock - a framework for writing C++ mock classes.
+//
+// This file tests the built-in actions in gmock-more-actions.h.
+
+#include "gmock/gmock-more-actions.h"
+
+#include <functional>
+#include <sstream>
+#include <string>
+#include "gmock/gmock.h"
+#include "gtest/gtest.h"
+#include "gtest/internal/gtest-linked_ptr.h"
+
+namespace testing {
+namespace gmock_more_actions_test {
+
+using ::std::plus;
+using ::std::string;
+using ::std::tr1::get;
+using ::std::tr1::make_tuple;
+using ::std::tr1::tuple;
+using ::std::tr1::tuple_element;
+using testing::_;
+using testing::Action;
+using testing::ActionInterface;
+using testing::DeleteArg;
+using testing::Invoke;
+using testing::Return;
+using testing::ReturnArg;
+using testing::ReturnPointee;
+using testing::SaveArg;
+using testing::SaveArgPointee;
+using testing::SetArgReferee;
+using testing::StaticAssertTypeEq;
+using testing::Unused;
+using testing::WithArg;
+using testing::WithoutArgs;
+using testing::internal::linked_ptr;
+
+// For suppressing compiler warnings on conversion possibly losing precision.
+inline short Short(short n) { return n; }  // NOLINT
+inline char Char(char ch) { return ch; }
+
+// Sample functions and functors for testing Invoke() and etc.
+int Nullary() { return 1; }
+
+class NullaryFunctor {
+ public:
+  int operator()() { return 2; }
+};
+
+bool g_done = false;
+void VoidNullary() { g_done = true; }
+
+class VoidNullaryFunctor {
+ public:
+  void operator()() { g_done = true; }
+};
+
+bool Unary(int x) { return x < 0; }
+
+const char* Plus1(const char* s) { return s + 1; }
+
+void VoidUnary(int /* n */) { g_done = true; }
+
+bool ByConstRef(const string& s) { return s == "Hi"; }
+
+const double g_double = 0;
+bool ReferencesGlobalDouble(const double& x) { return &x == &g_double; }
+
+string ByNonConstRef(string& s) { return s += "+"; }  // NOLINT
+
+struct UnaryFunctor {
+  int operator()(bool x) { return x ? 1 : -1; }
+};
+
+const char* Binary(const char* input, short n) { return input + n; }  // NOLINT
+
+void VoidBinary(int, char) { g_done = true; }
+
+int Ternary(int x, char y, short z) { return x + y + z; }  // NOLINT
+
+void VoidTernary(int, char, bool) { g_done = true; }
+
+int SumOf4(int a, int b, int c, int d) { return a + b + c + d; }
+
+int SumOfFirst2(int a, int b, Unused, Unused) { return a + b; }
+
+void VoidFunctionWithFourArguments(char, int, float, double) { g_done = true; }
+
+string Concat4(const char* s1, const char* s2, const char* s3,
+               const char* s4) {
+  return string(s1) + s2 + s3 + s4;
+}
+
+int SumOf5(int a, int b, int c, int d, int e) { return a + b + c + d + e; }
+
+struct SumOf5Functor {
+  int operator()(int a, int b, int c, int d, int e) {
+    return a + b + c + d + e;
+  }
+};
+
+string Concat5(const char* s1, const char* s2, const char* s3,
+               const char* s4, const char* s5) {
+  return string(s1) + s2 + s3 + s4 + s5;
+}
+
+int SumOf6(int a, int b, int c, int d, int e, int f) {
+  return a + b + c + d + e + f;
+}
+
+struct SumOf6Functor {
+  int operator()(int a, int b, int c, int d, int e, int f) {
+    return a + b + c + d + e + f;
+  }
+};
+
+string Concat6(const char* s1, const char* s2, const char* s3,
+               const char* s4, const char* s5, const char* s6) {
+  return string(s1) + s2 + s3 + s4 + s5 + s6;
+}
+
+string Concat7(const char* s1, const char* s2, const char* s3,
+               const char* s4, const char* s5, const char* s6,
+               const char* s7) {
+  return string(s1) + s2 + s3 + s4 + s5 + s6 + s7;
+}
+
+string Concat8(const char* s1, const char* s2, const char* s3,
+               const char* s4, const char* s5, const char* s6,
+               const char* s7, const char* s8) {
+  return string(s1) + s2 + s3 + s4 + s5 + s6 + s7 + s8;
+}
+
+string Concat9(const char* s1, const char* s2, const char* s3,
+               const char* s4, const char* s5, const char* s6,
+               const char* s7, const char* s8, const char* s9) {
+  return string(s1) + s2 + s3 + s4 + s5 + s6 + s7 + s8 + s9;
+}
+
+string Concat10(const char* s1, const char* s2, const char* s3,
+                const char* s4, const char* s5, const char* s6,
+                const char* s7, const char* s8, const char* s9,
+                const char* s10) {
+  return string(s1) + s2 + s3 + s4 + s5 + s6 + s7 + s8 + s9 + s10;
+}
+
+class Foo {
+ public:
+  Foo() : value_(123) {}
+
+  int Nullary() const { return value_; }
+
+  short Unary(long x) { return static_cast<short>(value_ + x); }  // NOLINT
+
+  string Binary(const string& str, char c) const { return str + c; }
+
+  int Ternary(int x, bool y, char z) { return value_ + x + y*z; }
+
+  int SumOf4(int a, int b, int c, int d) const {
+    return a + b + c + d + value_;
+  }
+
+  int SumOfLast2(Unused, Unused, int a, int b) const { return a + b; }
+
+  int SumOf5(int a, int b, int c, int d, int e) { return a + b + c + d + e; }
+
+  int SumOf6(int a, int b, int c, int d, int e, int f) {
+    return a + b + c + d + e + f;
+  }
+
+  string Concat7(const char* s1, const char* s2, const char* s3,
+                 const char* s4, const char* s5, const char* s6,
+                 const char* s7) {
+    return string(s1) + s2 + s3 + s4 + s5 + s6 + s7;
+  }
+
+  string Concat8(const char* s1, const char* s2, const char* s3,
+                 const char* s4, const char* s5, const char* s6,
+                 const char* s7, const char* s8) {
+    return string(s1) + s2 + s3 + s4 + s5 + s6 + s7 + s8;
+  }
+
+  string Concat9(const char* s1, const char* s2, const char* s3,
+                 const char* s4, const char* s5, const char* s6,
+                 const char* s7, const char* s8, const char* s9) {
+    return string(s1) + s2 + s3 + s4 + s5 + s6 + s7 + s8 + s9;
+  }
+
+  string Concat10(const char* s1, const char* s2, const char* s3,
+                  const char* s4, const char* s5, const char* s6,
+                  const char* s7, const char* s8, const char* s9,
+                  const char* s10) {
+    return string(s1) + s2 + s3 + s4 + s5 + s6 + s7 + s8 + s9 + s10;
+  }
+
+ private:
+  int value_;
+};
+
+// Tests using Invoke() with a nullary function.
+TEST(InvokeTest, Nullary) {
+  Action<int()> a = Invoke(Nullary);  // NOLINT
+  EXPECT_EQ(1, a.Perform(make_tuple()));
+}
+
+// Tests using Invoke() with a unary function.
+TEST(InvokeTest, Unary) {
+  Action<bool(int)> a = Invoke(Unary);  // NOLINT
+  EXPECT_FALSE(a.Perform(make_tuple(1)));
+  EXPECT_TRUE(a.Perform(make_tuple(-1)));
+}
+
+// Tests using Invoke() with a binary function.
+TEST(InvokeTest, Binary) {
+  Action<const char*(const char*, short)> a = Invoke(Binary);  // NOLINT
+  const char* p = "Hello";
+  EXPECT_EQ(p + 2, a.Perform(make_tuple(p, Short(2))));
+}
+
+// Tests using Invoke() with a ternary function.
+TEST(InvokeTest, Ternary) {
+  Action<int(int, char, short)> a = Invoke(Ternary);  // NOLINT
+  EXPECT_EQ(6, a.Perform(make_tuple(1, '\2', Short(3))));
+}
+
+// Tests using Invoke() with a 4-argument function.
+TEST(InvokeTest, FunctionThatTakes4Arguments) {
+  Action<int(int, int, int, int)> a = Invoke(SumOf4);  // NOLINT
+  EXPECT_EQ(1234, a.Perform(make_tuple(1000, 200, 30, 4)));
+}
+
+// Tests using Invoke() with a 5-argument function.
+TEST(InvokeTest, FunctionThatTakes5Arguments) {
+  Action<int(int, int, int, int, int)> a = Invoke(SumOf5);  // NOLINT
+  EXPECT_EQ(12345, a.Perform(make_tuple(10000, 2000, 300, 40, 5)));
+}
+
+// Tests using Invoke() with a 6-argument function.
+TEST(InvokeTest, FunctionThatTakes6Arguments) {
+  Action<int(int, int, int, int, int, int)> a = Invoke(SumOf6);  // NOLINT
+  EXPECT_EQ(123456, a.Perform(make_tuple(100000, 20000, 3000, 400, 50, 6)));
+}
+
+// A helper that turns the type of a C-string literal from const
+// char[N] to const char*.
+inline const char* CharPtr(const char* s) { return s; }
+
+// Tests using Invoke() with a 7-argument function.
+TEST(InvokeTest, FunctionThatTakes7Arguments) {
+  Action<string(const char*, const char*, const char*, const char*,
+                const char*, const char*, const char*)> a =
+      Invoke(Concat7);
+  EXPECT_EQ("1234567",
+            a.Perform(make_tuple(CharPtr("1"), CharPtr("2"), CharPtr("3"),
+                                 CharPtr("4"), CharPtr("5"), CharPtr("6"),
+                                 CharPtr("7"))));
+}
+
+// Tests using Invoke() with a 8-argument function.
+TEST(InvokeTest, FunctionThatTakes8Arguments) {
+  Action<string(const char*, const char*, const char*, const char*,
+                const char*, const char*, const char*, const char*)> a =
+      Invoke(Concat8);
+  EXPECT_EQ("12345678",
+            a.Perform(make_tuple(CharPtr("1"), CharPtr("2"), CharPtr("3"),
+                                 CharPtr("4"), CharPtr("5"), CharPtr("6"),
+                                 CharPtr("7"), CharPtr("8"))));
+}
+
+// Tests using Invoke() with a 9-argument function.
+TEST(InvokeTest, FunctionThatTakes9Arguments) {
+  Action<string(const char*, const char*, const char*, const char*,
+                const char*, const char*, const char*, const char*,
+                const char*)> a = Invoke(Concat9);
+  EXPECT_EQ("123456789",
+            a.Perform(make_tuple(CharPtr("1"), CharPtr("2"), CharPtr("3"),
+                                 CharPtr("4"), CharPtr("5"), CharPtr("6"),
+                                 CharPtr("7"), CharPtr("8"), CharPtr("9"))));
+}
+
+// Tests using Invoke() with a 10-argument function.
+TEST(InvokeTest, FunctionThatTakes10Arguments) {
+  Action<string(const char*, const char*, const char*, const char*,
+                const char*, const char*, const char*, const char*,
+                const char*, const char*)> a = Invoke(Concat10);
+  EXPECT_EQ("1234567890",
+            a.Perform(make_tuple(CharPtr("1"), CharPtr("2"), CharPtr("3"),
+                                 CharPtr("4"), CharPtr("5"), CharPtr("6"),
+                                 CharPtr("7"), CharPtr("8"), CharPtr("9"),
+                                 CharPtr("0"))));
+}
+
+// Tests using Invoke() with functions with parameters declared as Unused.
+TEST(InvokeTest, FunctionWithUnusedParameters) {
+  Action<int(int, int, double, const string&)> a1 =
+      Invoke(SumOfFirst2);
+  EXPECT_EQ(12, a1.Perform(make_tuple(10, 2, 5.6, CharPtr("hi"))));
+
+  Action<int(int, int, bool, int*)> a2 =
+      Invoke(SumOfFirst2);
+  EXPECT_EQ(23, a2.Perform(make_tuple(20, 3, true, static_cast<int*>(NULL))));
+}
+
+// Tests using Invoke() with methods with parameters declared as Unused.
+TEST(InvokeTest, MethodWithUnusedParameters) {
+  Foo foo;
+  Action<int(string, bool, int, int)> a1 =
+      Invoke(&foo, &Foo::SumOfLast2);
+  EXPECT_EQ(12, a1.Perform(make_tuple(CharPtr("hi"), true, 10, 2)));
+
+  Action<int(char, double, int, int)> a2 =
+      Invoke(&foo, &Foo::SumOfLast2);
+  EXPECT_EQ(23, a2.Perform(make_tuple('a', 2.5, 20, 3)));
+}
+
+// Tests using Invoke() with a functor.
+TEST(InvokeTest, Functor) {
+  Action<long(long, int)> a = Invoke(plus<long>());  // NOLINT
+  EXPECT_EQ(3L, a.Perform(make_tuple(1, 2)));
+}
+
+// Tests using Invoke(f) as an action of a compatible type.
+TEST(InvokeTest, FunctionWithCompatibleType) {
+  Action<long(int, short, char, bool)> a = Invoke(SumOf4);  // NOLINT
+  EXPECT_EQ(4321, a.Perform(make_tuple(4000, Short(300), Char(20), true)));
+}
+
+// Tests using Invoke() with an object pointer and a method pointer.
+
+// Tests using Invoke() with a nullary method.
+TEST(InvokeMethodTest, Nullary) {
+  Foo foo;
+  Action<int()> a = Invoke(&foo, &Foo::Nullary);  // NOLINT
+  EXPECT_EQ(123, a.Perform(make_tuple()));
+}
+
+// Tests using Invoke() with a unary method.
+TEST(InvokeMethodTest, Unary) {
+  Foo foo;
+  Action<short(long)> a = Invoke(&foo, &Foo::Unary);  // NOLINT
+  EXPECT_EQ(4123, a.Perform(make_tuple(4000)));
+}
+
+// Tests using Invoke() with a binary method.
+TEST(InvokeMethodTest, Binary) {
+  Foo foo;
+  Action<string(const string&, char)> a = Invoke(&foo, &Foo::Binary);
+  string s("Hell");
+  EXPECT_EQ("Hello", a.Perform(make_tuple(s, 'o')));
+}
+
+// Tests using Invoke() with a ternary method.
+TEST(InvokeMethodTest, Ternary) {
+  Foo foo;
+  Action<int(int, bool, char)> a = Invoke(&foo, &Foo::Ternary);  // NOLINT
+  EXPECT_EQ(1124, a.Perform(make_tuple(1000, true, Char(1))));
+}
+
+// Tests using Invoke() with a 4-argument method.
+TEST(InvokeMethodTest, MethodThatTakes4Arguments) {
+  Foo foo;
+  Action<int(int, int, int, int)> a = Invoke(&foo, &Foo::SumOf4);  // NOLINT
+  EXPECT_EQ(1357, a.Perform(make_tuple(1000, 200, 30, 4)));
+}
+
+// Tests using Invoke() with a 5-argument method.
+TEST(InvokeMethodTest, MethodThatTakes5Arguments) {
+  Foo foo;
+  Action<int(int, int, int, int, int)> a = Invoke(&foo, &Foo::SumOf5);  // NOLINT
+  EXPECT_EQ(12345, a.Perform(make_tuple(10000, 2000, 300, 40, 5)));
+}
+
+// Tests using Invoke() with a 6-argument method.
+TEST(InvokeMethodTest, MethodThatTakes6Arguments) {
+  Foo foo;
+  Action<int(int, int, int, int, int, int)> a =  // NOLINT
+      Invoke(&foo, &Foo::SumOf6);
+  EXPECT_EQ(123456, a.Perform(make_tuple(100000, 20000, 3000, 400, 50, 6)));
+}
+
+// Tests using Invoke() with a 7-argument method.
+TEST(InvokeMethodTest, MethodThatTakes7Arguments) {
+  Foo foo;
+  Action<string(const char*, const char*, const char*, const char*,
+                const char*, const char*, const char*)> a =
+      Invoke(&foo, &Foo::Concat7);
+  EXPECT_EQ("1234567",
+            a.Perform(make_tuple(CharPtr("1"), CharPtr("2"), CharPtr("3"),
+                                 CharPtr("4"), CharPtr("5"), CharPtr("6"),
+                                 CharPtr("7"))));
+}
+
+// Tests using Invoke() with a 8-argument method.
+TEST(InvokeMethodTest, MethodThatTakes8Arguments) {
+  Foo foo;
+  Action<string(const char*, const char*, const char*, const char*,
+                const char*, const char*, const char*, const char*)> a =
+      Invoke(&foo, &Foo::Concat8);
+  EXPECT_EQ("12345678",
+            a.Perform(make_tuple(CharPtr("1"), CharPtr("2"), CharPtr("3"),
+                                 CharPtr("4"), CharPtr("5"), CharPtr("6"),
+                                 CharPtr("7"), CharPtr("8"))));
+}
+
+// Tests using Invoke() with a 9-argument method.
+TEST(InvokeMethodTest, MethodThatTakes9Arguments) {
+  Foo foo;
+  Action<string(const char*, const char*, const char*, const char*,
+                const char*, const char*, const char*, const char*,
+                const char*)> a = Invoke(&foo, &Foo::Concat9);
+  EXPECT_EQ("123456789",
+            a.Perform(make_tuple(CharPtr("1"), CharPtr("2"), CharPtr("3"),
+                                 CharPtr("4"), CharPtr("5"), CharPtr("6"),
+                                 CharPtr("7"), CharPtr("8"), CharPtr("9"))));
+}
+
+// Tests using Invoke() with a 10-argument method.
+TEST(InvokeMethodTest, MethodThatTakes10Arguments) {
+  Foo foo;
+  Action<string(const char*, const char*, const char*, const char*,
+                const char*, const char*, const char*, const char*,
+                const char*, const char*)> a = Invoke(&foo, &Foo::Concat10);
+  EXPECT_EQ("1234567890",
+            a.Perform(make_tuple(CharPtr("1"), CharPtr("2"), CharPtr("3"),
+                                 CharPtr("4"), CharPtr("5"), CharPtr("6"),
+                                 CharPtr("7"), CharPtr("8"), CharPtr("9"),
+                                 CharPtr("0"))));
+}
+
+// Tests using Invoke(f) as an action of a compatible type.
+TEST(InvokeMethodTest, MethodWithCompatibleType) {
+  Foo foo;
+  Action<long(int, short, char, bool)> a =  // NOLINT
+      Invoke(&foo, &Foo::SumOf4);
+  EXPECT_EQ(4444, a.Perform(make_tuple(4000, Short(300), Char(20), true)));
+}
+
+// Tests using WithoutArgs with an action that takes no argument.
+TEST(WithoutArgsTest, NoArg) {
+  Action<int(int n)> a = WithoutArgs(Invoke(Nullary));  // NOLINT
+  EXPECT_EQ(1, a.Perform(make_tuple(2)));
+}
+
+// Tests using WithArg with an action that takes 1 argument.
+TEST(WithArgTest, OneArg) {
+  Action<bool(double x, int n)> b = WithArg<1>(Invoke(Unary));  // NOLINT
+  EXPECT_TRUE(b.Perform(make_tuple(1.5, -1)));
+  EXPECT_FALSE(b.Perform(make_tuple(1.5, 1)));
+}
+
+TEST(ReturnArgActionTest, WorksForOneArgIntArg0) {
+  const Action<int(int)> a = ReturnArg<0>();
+  EXPECT_EQ(5, a.Perform(make_tuple(5)));
+}
+
+TEST(ReturnArgActionTest, WorksForMultiArgBoolArg0) {
+  const Action<bool(bool, bool, bool)> a = ReturnArg<0>();
+  EXPECT_TRUE(a.Perform(make_tuple(true, false, false)));
+}
+
+TEST(ReturnArgActionTest, WorksForMultiArgStringArg2) {
+  const Action<string(int, int, string, int)> a = ReturnArg<2>();
+  EXPECT_EQ("seven", a.Perform(make_tuple(5, 6, string("seven"), 8)));
+}
+
+TEST(SaveArgActionTest, WorksForSameType) {
+  int result = 0;
+  const Action<void(int n)> a1 = SaveArg<0>(&result);
+  a1.Perform(make_tuple(5));
+  EXPECT_EQ(5, result);
+}
+
+TEST(SaveArgActionTest, WorksForCompatibleType) {
+  int result = 0;
+  const Action<void(bool, char)> a1 = SaveArg<1>(&result);
+  a1.Perform(make_tuple(true, 'a'));
+  EXPECT_EQ('a', result);
+}
+
+TEST(SaveArgPointeeActionTest, WorksForSameType) {
+  int result = 0;
+  const int value = 5;
+  const Action<void(const int*)> a1 = SaveArgPointee<0>(&result);
+  a1.Perform(make_tuple(&value));
+  EXPECT_EQ(5, result);
+}
+
+TEST(SaveArgPointeeActionTest, WorksForCompatibleType) {
+  int result = 0;
+  char value = 'a';
+  const Action<void(bool, char*)> a1 = SaveArgPointee<1>(&result);
+  a1.Perform(make_tuple(true, &value));
+  EXPECT_EQ('a', result);
+}
+
+TEST(SaveArgPointeeActionTest, WorksForLinkedPtr) {
+  int result = 0;
+  linked_ptr<int> value(new int(5));
+  const Action<void(linked_ptr<int>)> a1 = SaveArgPointee<0>(&result);
+  a1.Perform(make_tuple(value));
+  EXPECT_EQ(5, result);
+}
+
+TEST(SetArgRefereeActionTest, WorksForSameType) {
+  int value = 0;
+  const Action<void(int&)> a1 = SetArgReferee<0>(1);
+  a1.Perform(tuple<int&>(value));
+  EXPECT_EQ(1, value);
+}
+
+TEST(SetArgRefereeActionTest, WorksForCompatibleType) {
+  int value = 0;
+  const Action<void(int, int&)> a1 = SetArgReferee<1>('a');
+  a1.Perform(tuple<int, int&>(0, value));
+  EXPECT_EQ('a', value);
+}
+
+TEST(SetArgRefereeActionTest, WorksWithExtraArguments) {
+  int value = 0;
+  const Action<void(bool, int, int&, const char*)> a1 = SetArgReferee<2>('a');
+  a1.Perform(tuple<bool, int, int&, const char*>(true, 0, value, "hi"));
+  EXPECT_EQ('a', value);
+}
+
+// A class that can be used to verify that its destructor is called: it will set
+// the bool provided to the constructor to true when destroyed.
+class DeletionTester {
+ public:
+  explicit DeletionTester(bool* is_deleted)
+    : is_deleted_(is_deleted) {
+    // Make sure the bit is set to false.
+    *is_deleted_ = false;
+  }
+
+  ~DeletionTester() {
+    *is_deleted_ = true;
+  }
+
+ private:
+  bool* is_deleted_;
+};
+
+TEST(DeleteArgActionTest, OneArg) {
+  bool is_deleted = false;
+  DeletionTester* t = new DeletionTester(&is_deleted);
+  const Action<void(DeletionTester*)> a1 = DeleteArg<0>();      // NOLINT
+  EXPECT_FALSE(is_deleted);
+  a1.Perform(make_tuple(t));
+  EXPECT_TRUE(is_deleted);
+}
+
+TEST(DeleteArgActionTest, TenArgs) {
+  bool is_deleted = false;
+  DeletionTester* t = new DeletionTester(&is_deleted);
+  const Action<void(bool, int, int, const char*, bool,
+                    int, int, int, int, DeletionTester*)> a1 = DeleteArg<9>();
+  EXPECT_FALSE(is_deleted);
+  a1.Perform(make_tuple(true, 5, 6, CharPtr("hi"), false, 7, 8, 9, 10, t));
+  EXPECT_TRUE(is_deleted);
+}
+
+#if GTEST_HAS_EXCEPTIONS
+
+TEST(ThrowActionTest, ThrowsGivenExceptionInVoidFunction) {
+  const Action<void(int n)> a = Throw('a');
+  EXPECT_THROW(a.Perform(make_tuple(0)), char);
+}
+
+class MyException {};
+
+TEST(ThrowActionTest, ThrowsGivenExceptionInNonVoidFunction) {
+  const Action<double(char ch)> a = Throw(MyException());
+  EXPECT_THROW(a.Perform(make_tuple('0')), MyException);
+}
+
+TEST(ThrowActionTest, ThrowsGivenExceptionInNullaryFunction) {
+  const Action<double()> a = Throw(MyException());
+  EXPECT_THROW(a.Perform(make_tuple()), MyException);
+}
+
+#endif  // GTEST_HAS_EXCEPTIONS
+
+// Tests that SetArrayArgument<N>(first, last) sets the elements of the array
+// pointed to by the N-th (0-based) argument to values in range [first, last).
+TEST(SetArrayArgumentTest, SetsTheNthArray) {
+  typedef void MyFunction(bool, int*, char*);
+  int numbers[] = { 1, 2, 3 };
+  Action<MyFunction> a = SetArrayArgument<1>(numbers, numbers + 3);
+
+  int n[4] = {};
+  int* pn = n;
+  char ch[4] = {};
+  char* pch = ch;
+  a.Perform(make_tuple(true, pn, pch));
+  EXPECT_EQ(1, n[0]);
+  EXPECT_EQ(2, n[1]);
+  EXPECT_EQ(3, n[2]);
+  EXPECT_EQ(0, n[3]);
+  EXPECT_EQ('\0', ch[0]);
+  EXPECT_EQ('\0', ch[1]);
+  EXPECT_EQ('\0', ch[2]);
+  EXPECT_EQ('\0', ch[3]);
+
+  // Tests first and last are iterators.
+  std::string letters = "abc";
+  a = SetArrayArgument<2>(letters.begin(), letters.end());
+  std::fill_n(n, 4, 0);
+  std::fill_n(ch, 4, '\0');
+  a.Perform(make_tuple(true, pn, pch));
+  EXPECT_EQ(0, n[0]);
+  EXPECT_EQ(0, n[1]);
+  EXPECT_EQ(0, n[2]);
+  EXPECT_EQ(0, n[3]);
+  EXPECT_EQ('a', ch[0]);
+  EXPECT_EQ('b', ch[1]);
+  EXPECT_EQ('c', ch[2]);
+  EXPECT_EQ('\0', ch[3]);
+}
+
+// Tests SetArrayArgument<N>(first, last) where first == last.
+TEST(SetArrayArgumentTest, SetsTheNthArrayWithEmptyRange) {
+  typedef void MyFunction(bool, int*);
+  int numbers[] = { 1, 2, 3 };
+  Action<MyFunction> a = SetArrayArgument<1>(numbers, numbers);
+
+  int n[4] = {};
+  int* pn = n;
+  a.Perform(make_tuple(true, pn));
+  EXPECT_EQ(0, n[0]);
+  EXPECT_EQ(0, n[1]);
+  EXPECT_EQ(0, n[2]);
+  EXPECT_EQ(0, n[3]);
+}
+
+// Tests SetArrayArgument<N>(first, last) where *first is convertible
+// (but not equal) to the argument type.
+TEST(SetArrayArgumentTest, SetsTheNthArrayWithConvertibleType) {
+  typedef void MyFunction(bool, char*);
+  int codes[] = { 97, 98, 99 };
+  Action<MyFunction> a = SetArrayArgument<1>(codes, codes + 3);
+
+  char ch[4] = {};
+  char* pch = ch;
+  a.Perform(make_tuple(true, pch));
+  EXPECT_EQ('a', ch[0]);
+  EXPECT_EQ('b', ch[1]);
+  EXPECT_EQ('c', ch[2]);
+  EXPECT_EQ('\0', ch[3]);
+}
+
+// Test SetArrayArgument<N>(first, last) with iterator as argument.
+TEST(SetArrayArgumentTest, SetsTheNthArrayWithIteratorArgument) {
+  typedef void MyFunction(bool, std::back_insert_iterator<std::string>);
+  std::string letters = "abc";
+  Action<MyFunction> a = SetArrayArgument<1>(letters.begin(), letters.end());
+
+  std::string s;
+  a.Perform(make_tuple(true, back_inserter(s)));
+  EXPECT_EQ(letters, s);
+}
+
+TEST(ReturnPointeeTest, Works) {
+  int n = 42;
+  const Action<int()> a = ReturnPointee(&n);
+  EXPECT_EQ(42, a.Perform(make_tuple()));
+
+  n = 43;
+  EXPECT_EQ(43, a.Perform(make_tuple()));
+}
+
+}  // namespace gmock_generated_actions_test
+}  // namespace testing
diff --git a/google-breakpad/src/testing/test/gmock-nice-strict_test.cc b/google-breakpad/src/testing/test/gmock-nice-strict_test.cc
new file mode 100644
index 0000000..e334418
--- /dev/null
+++ b/google-breakpad/src/testing/test/gmock-nice-strict_test.cc
@@ -0,0 +1,284 @@
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+#include "gmock/gmock-generated-nice-strict.h"
+
+#include <string>
+#include "gmock/gmock.h"
+#include "gtest/gtest.h"
+#include "gtest/gtest-spi.h"
+
+// This must not be defined inside the ::testing namespace, or it will
+// clash with ::testing::Mock.
+class Mock {
+ public:
+  Mock() {}
+
+  MOCK_METHOD0(DoThis, void());
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(Mock);
+};
+
+namespace testing {
+namespace gmock_nice_strict_test {
+
+using testing::internal::string;
+using testing::GMOCK_FLAG(verbose);
+using testing::HasSubstr;
+using testing::NiceMock;
+using testing::StrictMock;
+
+#if GTEST_HAS_STREAM_REDIRECTION
+using testing::internal::CaptureStdout;
+using testing::internal::GetCapturedStdout;
+#endif
+
+// Defines some mock classes needed by the tests.
+
+class Foo {
+ public:
+  virtual ~Foo() {}
+
+  virtual void DoThis() = 0;
+  virtual int DoThat(bool flag) = 0;
+};
+
+class MockFoo : public Foo {
+ public:
+  MockFoo() {}
+  void Delete() { delete this; }
+
+  MOCK_METHOD0(DoThis, void());
+  MOCK_METHOD1(DoThat, int(bool flag));
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(MockFoo);
+};
+
+class MockBar {
+ public:
+  explicit MockBar(const string& s) : str_(s) {}
+
+  MockBar(char a1, char a2, string a3, string a4, int a5, int a6,
+          const string& a7, const string& a8, bool a9, bool a10) {
+    str_ = string() + a1 + a2 + a3 + a4 + static_cast<char>(a5) +
+        static_cast<char>(a6) + a7 + a8 + (a9 ? 'T' : 'F') + (a10 ? 'T' : 'F');
+  }
+
+  virtual ~MockBar() {}
+
+  const string& str() const { return str_; }
+
+  MOCK_METHOD0(This, int());
+  MOCK_METHOD2(That, string(int, bool));
+
+ private:
+  string str_;
+
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(MockBar);
+};
+
+#if GTEST_HAS_STREAM_REDIRECTION
+
+// Tests that a nice mock generates no warning for uninteresting calls.
+TEST(NiceMockTest, NoWarningForUninterestingCall) {
+  NiceMock<MockFoo> nice_foo;
+
+  CaptureStdout();
+  nice_foo.DoThis();
+  nice_foo.DoThat(true);
+  EXPECT_STREQ("", GetCapturedStdout().c_str());
+}
+
+// Tests that a nice mock generates no warning for uninteresting calls
+// that delete the mock object.
+TEST(NiceMockTest, NoWarningForUninterestingCallAfterDeath) {
+  NiceMock<MockFoo>* const nice_foo = new NiceMock<MockFoo>;
+
+  ON_CALL(*nice_foo, DoThis())
+      .WillByDefault(Invoke(nice_foo, &MockFoo::Delete));
+
+  CaptureStdout();
+  nice_foo->DoThis();
+  EXPECT_STREQ("", GetCapturedStdout().c_str());
+}
+
+// Tests that a nice mock generates informational logs for
+// uninteresting calls.
+TEST(NiceMockTest, InfoForUninterestingCall) {
+  NiceMock<MockFoo> nice_foo;
+
+  const string saved_flag = GMOCK_FLAG(verbose);
+  GMOCK_FLAG(verbose) = "info";
+  CaptureStdout();
+  nice_foo.DoThis();
+  EXPECT_THAT(GetCapturedStdout(),
+              HasSubstr("Uninteresting mock function call"));
+
+  CaptureStdout();
+  nice_foo.DoThat(true);
+  EXPECT_THAT(GetCapturedStdout(),
+              HasSubstr("Uninteresting mock function call"));
+  GMOCK_FLAG(verbose) = saved_flag;
+}
+
+#endif  // GTEST_HAS_STREAM_REDIRECTION
+
+// Tests that a nice mock allows expected calls.
+TEST(NiceMockTest, AllowsExpectedCall) {
+  NiceMock<MockFoo> nice_foo;
+
+  EXPECT_CALL(nice_foo, DoThis());
+  nice_foo.DoThis();
+}
+
+// Tests that an unexpected call on a nice mock fails.
+TEST(NiceMockTest, UnexpectedCallFails) {
+  NiceMock<MockFoo> nice_foo;
+
+  EXPECT_CALL(nice_foo, DoThis()).Times(0);
+  EXPECT_NONFATAL_FAILURE(nice_foo.DoThis(), "called more times than expected");
+}
+
+// Tests that NiceMock works with a mock class that has a non-default
+// constructor.
+TEST(NiceMockTest, NonDefaultConstructor) {
+  NiceMock<MockBar> nice_bar("hi");
+  EXPECT_EQ("hi", nice_bar.str());
+
+  nice_bar.This();
+  nice_bar.That(5, true);
+}
+
+// Tests that NiceMock works with a mock class that has a 10-ary
+// non-default constructor.
+TEST(NiceMockTest, NonDefaultConstructor10) {
+  NiceMock<MockBar> nice_bar('a', 'b', "c", "d", 'e', 'f',
+                             "g", "h", true, false);
+  EXPECT_EQ("abcdefghTF", nice_bar.str());
+
+  nice_bar.This();
+  nice_bar.That(5, true);
+}
+
+#if !GTEST_OS_SYMBIAN && !GTEST_OS_WINDOWS_MOBILE
+// Tests that NiceMock<Mock> compiles where Mock is a user-defined
+// class (as opposed to ::testing::Mock).  We had to workaround an
+// MSVC 8.0 bug that caused the symbol Mock used in the definition of
+// NiceMock to be looked up in the wrong context, and this test
+// ensures that our fix works.
+//
+// We have to skip this test on Symbian and Windows Mobile, as it
+// causes the program to crash there, for reasons unclear to us yet.
+TEST(NiceMockTest, AcceptsClassNamedMock) {
+  NiceMock< ::Mock> nice;
+  EXPECT_CALL(nice, DoThis());
+  nice.DoThis();
+}
+#endif  // !GTEST_OS_SYMBIAN && !GTEST_OS_WINDOWS_MOBILE
+
+// Tests that a strict mock allows expected calls.
+TEST(StrictMockTest, AllowsExpectedCall) {
+  StrictMock<MockFoo> strict_foo;
+
+  EXPECT_CALL(strict_foo, DoThis());
+  strict_foo.DoThis();
+}
+
+// Tests that an unexpected call on a strict mock fails.
+TEST(StrictMockTest, UnexpectedCallFails) {
+  StrictMock<MockFoo> strict_foo;
+
+  EXPECT_CALL(strict_foo, DoThis()).Times(0);
+  EXPECT_NONFATAL_FAILURE(strict_foo.DoThis(),
+                          "called more times than expected");
+}
+
+// Tests that an uninteresting call on a strict mock fails.
+TEST(StrictMockTest, UninterestingCallFails) {
+  StrictMock<MockFoo> strict_foo;
+
+  EXPECT_NONFATAL_FAILURE(strict_foo.DoThis(),
+                          "Uninteresting mock function call");
+}
+
+// Tests that an uninteresting call on a strict mock fails, even if
+// the call deletes the mock object.
+TEST(StrictMockTest, UninterestingCallFailsAfterDeath) {
+  StrictMock<MockFoo>* const strict_foo = new StrictMock<MockFoo>;
+
+  ON_CALL(*strict_foo, DoThis())
+      .WillByDefault(Invoke(strict_foo, &MockFoo::Delete));
+
+  EXPECT_NONFATAL_FAILURE(strict_foo->DoThis(),
+                          "Uninteresting mock function call");
+}
+
+// Tests that StrictMock works with a mock class that has a
+// non-default constructor.
+TEST(StrictMockTest, NonDefaultConstructor) {
+  StrictMock<MockBar> strict_bar("hi");
+  EXPECT_EQ("hi", strict_bar.str());
+
+  EXPECT_NONFATAL_FAILURE(strict_bar.That(5, true),
+                          "Uninteresting mock function call");
+}
+
+// Tests that StrictMock works with a mock class that has a 10-ary
+// non-default constructor.
+TEST(StrictMockTest, NonDefaultConstructor10) {
+  StrictMock<MockBar> strict_bar('a', 'b', "c", "d", 'e', 'f',
+                                 "g", "h", true, false);
+  EXPECT_EQ("abcdefghTF", strict_bar.str());
+
+  EXPECT_NONFATAL_FAILURE(strict_bar.That(5, true),
+                          "Uninteresting mock function call");
+}
+
+#if !GTEST_OS_SYMBIAN && !GTEST_OS_WINDOWS_MOBILE
+// Tests that StrictMock<Mock> compiles where Mock is a user-defined
+// class (as opposed to ::testing::Mock).  We had to workaround an
+// MSVC 8.0 bug that caused the symbol Mock used in the definition of
+// StrictMock to be looked up in the wrong context, and this test
+// ensures that our fix works.
+//
+// We have to skip this test on Symbian and Windows Mobile, as it
+// causes the program to crash there, for reasons unclear to us yet.
+TEST(StrictMockTest, AcceptsClassNamedMock) {
+  StrictMock< ::Mock> strict;
+  EXPECT_CALL(strict, DoThis());
+  strict.DoThis();
+}
+#endif  // !GTEST_OS_SYMBIAN && !GTEST_OS_WINDOWS_MOBILE
+
+}  // namespace gmock_nice_strict_test
+}  // namespace testing
diff --git a/google-breakpad/src/testing/test/gmock-port_test.cc b/google-breakpad/src/testing/test/gmock-port_test.cc
new file mode 100644
index 0000000..d6a8d44
--- /dev/null
+++ b/google-breakpad/src/testing/test/gmock-port_test.cc
@@ -0,0 +1,43 @@
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: vladl@google.com (Vlad Losev)
+
+// Google Mock - a framework for writing C++ mock classes.
+//
+// This file tests the internal cross-platform support utilities.
+
+#include "gmock/internal/gmock-port.h"
+#include "gtest/gtest.h"
+
+// NOTE: if this file is left without tests for some reason, put a dummy
+// test here to make references to symbols in the gtest library and avoid
+// 'undefined symbol' linker errors in gmock_main:
+
+TEST(DummyTest, Dummy) {}
diff --git a/google-breakpad/src/testing/test/gmock-spec-builders_test.cc b/google-breakpad/src/testing/test/gmock-spec-builders_test.cc
new file mode 100644
index 0000000..9177b32
--- /dev/null
+++ b/google-breakpad/src/testing/test/gmock-spec-builders_test.cc
@@ -0,0 +1,2535 @@
+// Copyright 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Google Mock - a framework for writing C++ mock classes.
+//
+// This file tests the spec builder syntax.
+
+#include "gmock/gmock-spec-builders.h"
+
+#include <ostream>  // NOLINT
+#include <sstream>
+#include <string>
+
+#include "gmock/gmock.h"
+#include "gmock/internal/gmock-port.h"
+#include "gtest/gtest.h"
+#include "gtest/gtest-spi.h"
+#include "gtest/internal/gtest-port.h"
+
+namespace testing {
+namespace internal {
+
+// Helper class for testing the Expectation class template.
+class ExpectationTester {
+ public:
+  // Sets the call count of the given expectation to the given number.
+  void SetCallCount(int n, ExpectationBase* exp) {
+    exp->call_count_ = n;
+  }
+};
+
+}  // namespace internal
+}  // namespace testing
+
+namespace {
+
+using testing::_;
+using testing::AnyNumber;
+using testing::AtLeast;
+using testing::AtMost;
+using testing::Between;
+using testing::Cardinality;
+using testing::CardinalityInterface;
+using testing::ContainsRegex;
+using testing::Const;
+using testing::DoAll;
+using testing::DoDefault;
+using testing::Eq;
+using testing::Expectation;
+using testing::ExpectationSet;
+using testing::GMOCK_FLAG(verbose);
+using testing::Gt;
+using testing::InSequence;
+using testing::Invoke;
+using testing::InvokeWithoutArgs;
+using testing::IsSubstring;
+using testing::Lt;
+using testing::Message;
+using testing::Mock;
+using testing::Ne;
+using testing::Return;
+using testing::Sequence;
+using testing::SetArgPointee;
+using testing::internal::ExpectationTester;
+using testing::internal::FormatFileLocation;
+using testing::internal::kErrorVerbosity;
+using testing::internal::kInfoVerbosity;
+using testing::internal::kWarningVerbosity;
+using testing::internal::String;
+using testing::internal::linked_ptr;
+using testing::internal::string;
+
+#if GTEST_HAS_STREAM_REDIRECTION
+using testing::HasSubstr;
+using testing::internal::CaptureStdout;
+using testing::internal::GetCapturedStdout;
+#endif
+
+class Incomplete;
+
+class MockIncomplete {
+ public:
+  // This line verifies that a mock method can take a by-reference
+  // argument of an incomplete type.
+  MOCK_METHOD1(ByRefFunc, void(const Incomplete& x));
+};
+
+// Tells Google Mock how to print a value of type Incomplete.
+void PrintTo(const Incomplete& x, ::std::ostream* os);
+
+TEST(MockMethodTest, CanInstantiateWithIncompleteArgType) {
+  // Even though this mock class contains a mock method that takes
+  // by-reference an argument whose type is incomplete, we can still
+  // use the mock, as long as Google Mock knows how to print the
+  // argument.
+  MockIncomplete incomplete;
+  EXPECT_CALL(incomplete, ByRefFunc(_))
+      .Times(AnyNumber());
+}
+
+// The definition of the printer for the argument type doesn't have to
+// be visible where the mock is used.
+void PrintTo(const Incomplete& /* x */, ::std::ostream* os) {
+  *os << "incomplete";
+}
+
+class Result {};
+
+class MockA {
+ public:
+  MockA() {}
+
+  MOCK_METHOD1(DoA, void(int n));  // NOLINT
+  MOCK_METHOD1(ReturnResult, Result(int n));  // NOLINT
+  MOCK_METHOD2(Binary, bool(int x, int y));  // NOLINT
+  MOCK_METHOD2(ReturnInt, int(int x, int y));  // NOLINT
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(MockA);
+};
+
+class MockB {
+ public:
+  MockB() {}
+
+  MOCK_CONST_METHOD0(DoB, int());  // NOLINT
+  MOCK_METHOD1(DoB, int(int n));  // NOLINT
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(MockB);
+};
+
+class ReferenceHoldingMock {
+ public:
+  ReferenceHoldingMock() {}
+
+  MOCK_METHOD1(AcceptReference, void(linked_ptr<MockA>*));
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(ReferenceHoldingMock);
+};
+
+// Tests that EXPECT_CALL and ON_CALL compile in a presence of macro
+// redefining a mock method name. This could happen, for example, when
+// the tested code #includes Win32 API headers which define many APIs
+// as macros, e.g. #define TextOut TextOutW.
+
+#define Method MethodW
+
+class CC {
+ public:
+  virtual ~CC() {}
+  virtual int Method() = 0;
+};
+class MockCC : public CC {
+ public:
+  MockCC() {}
+
+  MOCK_METHOD0(Method, int());
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(MockCC);
+};
+
+// Tests that a method with expanded name compiles.
+TEST(OnCallSyntaxTest, CompilesWithMethodNameExpandedFromMacro) {
+  MockCC cc;
+  ON_CALL(cc, Method());
+}
+
+// Tests that the method with expanded name not only compiles but runs
+// and returns a correct value, too.
+TEST(OnCallSyntaxTest, WorksWithMethodNameExpandedFromMacro) {
+  MockCC cc;
+  ON_CALL(cc, Method()).WillByDefault(Return(42));
+  EXPECT_EQ(42, cc.Method());
+}
+
+// Tests that a method with expanded name compiles.
+TEST(ExpectCallSyntaxTest, CompilesWithMethodNameExpandedFromMacro) {
+  MockCC cc;
+  EXPECT_CALL(cc, Method());
+  cc.Method();
+}
+
+// Tests that it works, too.
+TEST(ExpectCallSyntaxTest, WorksWithMethodNameExpandedFromMacro) {
+  MockCC cc;
+  EXPECT_CALL(cc, Method()).WillOnce(Return(42));
+  EXPECT_EQ(42, cc.Method());
+}
+
+#undef Method  // Done with macro redefinition tests.
+
+// Tests that ON_CALL evaluates its arguments exactly once as promised
+// by Google Mock.
+TEST(OnCallSyntaxTest, EvaluatesFirstArgumentOnce) {
+  MockA a;
+  MockA* pa = &a;
+
+  ON_CALL(*pa++, DoA(_));
+  EXPECT_EQ(&a + 1, pa);
+}
+
+TEST(OnCallSyntaxTest, EvaluatesSecondArgumentOnce) {
+  MockA a;
+  int n = 0;
+
+  ON_CALL(a, DoA(n++));
+  EXPECT_EQ(1, n);
+}
+
+// Tests that the syntax of ON_CALL() is enforced at run time.
+
+TEST(OnCallSyntaxTest, WithIsOptional) {
+  MockA a;
+
+  ON_CALL(a, DoA(5))
+      .WillByDefault(Return());
+  ON_CALL(a, DoA(_))
+      .With(_)
+      .WillByDefault(Return());
+}
+
+TEST(OnCallSyntaxTest, WithCanAppearAtMostOnce) {
+  MockA a;
+
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    ON_CALL(a, ReturnResult(_))
+        .With(_)
+        .With(_)
+        .WillByDefault(Return(Result()));
+  }, ".With() cannot appear more than once in an ON_CALL()");
+}
+
+TEST(OnCallSyntaxTest, WillByDefaultIsMandatory) {
+  MockA a;
+
+  EXPECT_DEATH_IF_SUPPORTED({
+    ON_CALL(a, DoA(5));
+    a.DoA(5);
+  }, "");
+}
+
+TEST(OnCallSyntaxTest, WillByDefaultCanAppearAtMostOnce) {
+  MockA a;
+
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    ON_CALL(a, DoA(5))
+        .WillByDefault(Return())
+        .WillByDefault(Return());
+  }, ".WillByDefault() must appear exactly once in an ON_CALL()");
+}
+
+// Tests that EXPECT_CALL evaluates its arguments exactly once as
+// promised by Google Mock.
+TEST(ExpectCallSyntaxTest, EvaluatesFirstArgumentOnce) {
+  MockA a;
+  MockA* pa = &a;
+
+  EXPECT_CALL(*pa++, DoA(_));
+  a.DoA(0);
+  EXPECT_EQ(&a + 1, pa);
+}
+
+TEST(ExpectCallSyntaxTest, EvaluatesSecondArgumentOnce) {
+  MockA a;
+  int n = 0;
+
+  EXPECT_CALL(a, DoA(n++));
+  a.DoA(0);
+  EXPECT_EQ(1, n);
+}
+
+// Tests that the syntax of EXPECT_CALL() is enforced at run time.
+
+TEST(ExpectCallSyntaxTest, WithIsOptional) {
+  MockA a;
+
+  EXPECT_CALL(a, DoA(5))
+      .Times(0);
+  EXPECT_CALL(a, DoA(6))
+      .With(_)
+      .Times(0);
+}
+
+TEST(ExpectCallSyntaxTest, WithCanAppearAtMostOnce) {
+  MockA a;
+
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_CALL(a, DoA(6))
+        .With(_)
+        .With(_);
+  }, ".With() cannot appear more than once in an EXPECT_CALL()");
+
+  a.DoA(6);
+}
+
+TEST(ExpectCallSyntaxTest, WithMustBeFirstClause) {
+  MockA a;
+
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_CALL(a, DoA(1))
+        .Times(1)
+        .With(_);
+  }, ".With() must be the first clause in an EXPECT_CALL()");
+
+  a.DoA(1);
+
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_CALL(a, DoA(2))
+        .WillOnce(Return())
+        .With(_);
+  }, ".With() must be the first clause in an EXPECT_CALL()");
+
+  a.DoA(2);
+}
+
+TEST(ExpectCallSyntaxTest, TimesCanBeInferred) {
+  MockA a;
+
+  EXPECT_CALL(a, DoA(1))
+      .WillOnce(Return());
+
+  EXPECT_CALL(a, DoA(2))
+      .WillOnce(Return())
+      .WillRepeatedly(Return());
+
+  a.DoA(1);
+  a.DoA(2);
+  a.DoA(2);
+}
+
+TEST(ExpectCallSyntaxTest, TimesCanAppearAtMostOnce) {
+  MockA a;
+
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_CALL(a, DoA(1))
+        .Times(1)
+        .Times(2);
+  }, ".Times() cannot appear more than once in an EXPECT_CALL()");
+
+  a.DoA(1);
+  a.DoA(1);
+}
+
+TEST(ExpectCallSyntaxTest, TimesMustBeBeforeInSequence) {
+  MockA a;
+  Sequence s;
+
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_CALL(a, DoA(1))
+        .InSequence(s)
+        .Times(1);
+  }, ".Times() cannot appear after ");
+
+  a.DoA(1);
+}
+
+TEST(ExpectCallSyntaxTest, InSequenceIsOptional) {
+  MockA a;
+  Sequence s;
+
+  EXPECT_CALL(a, DoA(1));
+  EXPECT_CALL(a, DoA(2))
+      .InSequence(s);
+
+  a.DoA(1);
+  a.DoA(2);
+}
+
+TEST(ExpectCallSyntaxTest, InSequenceCanAppearMultipleTimes) {
+  MockA a;
+  Sequence s1, s2;
+
+  EXPECT_CALL(a, DoA(1))
+      .InSequence(s1, s2)
+      .InSequence(s1);
+
+  a.DoA(1);
+}
+
+TEST(ExpectCallSyntaxTest, InSequenceMustBeBeforeAfter) {
+  MockA a;
+  Sequence s;
+
+  Expectation e = EXPECT_CALL(a, DoA(1))
+      .Times(AnyNumber());
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_CALL(a, DoA(2))
+        .After(e)
+        .InSequence(s);
+  }, ".InSequence() cannot appear after ");
+
+  a.DoA(2);
+}
+
+TEST(ExpectCallSyntaxTest, InSequenceMustBeBeforeWillOnce) {
+  MockA a;
+  Sequence s;
+
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_CALL(a, DoA(1))
+        .WillOnce(Return())
+        .InSequence(s);
+  }, ".InSequence() cannot appear after ");
+
+  a.DoA(1);
+}
+
+TEST(ExpectCallSyntaxTest, AfterMustBeBeforeWillOnce) {
+  MockA a;
+
+  Expectation e = EXPECT_CALL(a, DoA(1));
+  EXPECT_NONFATAL_FAILURE({
+    EXPECT_CALL(a, DoA(2))
+        .WillOnce(Return())
+        .After(e);
+  }, ".After() cannot appear after ");
+
+  a.DoA(1);
+  a.DoA(2);
+}
+
+TEST(ExpectCallSyntaxTest, WillIsOptional) {
+  MockA a;
+
+  EXPECT_CALL(a, DoA(1));
+  EXPECT_CALL(a, DoA(2))
+      .WillOnce(Return());
+
+  a.DoA(1);
+  a.DoA(2);
+}
+
+TEST(ExpectCallSyntaxTest, WillCanAppearMultipleTimes) {
+  MockA a;
+
+  EXPECT_CALL(a, DoA(1))
+      .Times(AnyNumber())
+      .WillOnce(Return())
+      .WillOnce(Return())
+      .WillOnce(Return());
+}
+
+TEST(ExpectCallSyntaxTest, WillMustBeBeforeWillRepeatedly) {
+  MockA a;
+
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_CALL(a, DoA(1))
+        .WillRepeatedly(Return())
+        .WillOnce(Return());
+  }, ".WillOnce() cannot appear after ");
+
+  a.DoA(1);
+}
+
+TEST(ExpectCallSyntaxTest, WillRepeatedlyIsOptional) {
+  MockA a;
+
+  EXPECT_CALL(a, DoA(1))
+      .WillOnce(Return());
+  EXPECT_CALL(a, DoA(2))
+      .WillOnce(Return())
+      .WillRepeatedly(Return());
+
+  a.DoA(1);
+  a.DoA(2);
+  a.DoA(2);
+}
+
+TEST(ExpectCallSyntaxTest, WillRepeatedlyCannotAppearMultipleTimes) {
+  MockA a;
+
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_CALL(a, DoA(1))
+        .WillRepeatedly(Return())
+        .WillRepeatedly(Return());
+  }, ".WillRepeatedly() cannot appear more than once in an "
+     "EXPECT_CALL()");
+}
+
+TEST(ExpectCallSyntaxTest, WillRepeatedlyMustBeBeforeRetiresOnSaturation) {
+  MockA a;
+
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_CALL(a, DoA(1))
+        .RetiresOnSaturation()
+        .WillRepeatedly(Return());
+  }, ".WillRepeatedly() cannot appear after ");
+}
+
+TEST(ExpectCallSyntaxTest, RetiresOnSaturationIsOptional) {
+  MockA a;
+
+  EXPECT_CALL(a, DoA(1));
+  EXPECT_CALL(a, DoA(1))
+      .RetiresOnSaturation();
+
+  a.DoA(1);
+  a.DoA(1);
+}
+
+TEST(ExpectCallSyntaxTest, RetiresOnSaturationCannotAppearMultipleTimes) {
+  MockA a;
+
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    EXPECT_CALL(a, DoA(1))
+        .RetiresOnSaturation()
+        .RetiresOnSaturation();
+  }, ".RetiresOnSaturation() cannot appear more than once");
+
+  a.DoA(1);
+}
+
+TEST(ExpectCallSyntaxTest, DefaultCardinalityIsOnce) {
+  {
+    MockA a;
+    EXPECT_CALL(a, DoA(1));
+    a.DoA(1);
+  }
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    MockA a;
+    EXPECT_CALL(a, DoA(1));
+  }, "to be called once");
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    MockA a;
+    EXPECT_CALL(a, DoA(1));
+    a.DoA(1);
+    a.DoA(1);
+  }, "to be called once");
+}
+
+#if GTEST_HAS_STREAM_REDIRECTION
+
+// Tests that Google Mock doesn't print a warning when the number of
+// WillOnce() is adequate.
+TEST(ExpectCallSyntaxTest, DoesNotWarnOnAdequateActionCount) {
+  CaptureStdout();
+  {
+    MockB b;
+
+    // It's always fine to omit WillOnce() entirely.
+    EXPECT_CALL(b, DoB())
+        .Times(0);
+    EXPECT_CALL(b, DoB(1))
+        .Times(AtMost(1));
+    EXPECT_CALL(b, DoB(2))
+        .Times(1)
+        .WillRepeatedly(Return(1));
+
+    // It's fine for the number of WillOnce()s to equal the upper bound.
+    EXPECT_CALL(b, DoB(3))
+        .Times(Between(1, 2))
+        .WillOnce(Return(1))
+        .WillOnce(Return(2));
+
+    // It's fine for the number of WillOnce()s to be smaller than the
+    // upper bound when there is a WillRepeatedly().
+    EXPECT_CALL(b, DoB(4))
+        .Times(AtMost(3))
+        .WillOnce(Return(1))
+        .WillRepeatedly(Return(2));
+
+    // Satisfies the above expectations.
+    b.DoB(2);
+    b.DoB(3);
+  }
+  EXPECT_STREQ("", GetCapturedStdout().c_str());
+}
+
+// Tests that Google Mock warns on having too many actions in an
+// expectation compared to its cardinality.
+TEST(ExpectCallSyntaxTest, WarnsOnTooManyActions) {
+  CaptureStdout();
+  {
+    MockB b;
+
+    // Warns when the number of WillOnce()s is larger than the upper bound.
+    EXPECT_CALL(b, DoB())
+        .Times(0)
+        .WillOnce(Return(1));  // #1
+    EXPECT_CALL(b, DoB())
+        .Times(AtMost(1))
+        .WillOnce(Return(1))
+        .WillOnce(Return(2));  // #2
+    EXPECT_CALL(b, DoB(1))
+        .Times(1)
+        .WillOnce(Return(1))
+        .WillOnce(Return(2))
+        .RetiresOnSaturation();  // #3
+
+    // Warns when the number of WillOnce()s equals the upper bound and
+    // there is a WillRepeatedly().
+    EXPECT_CALL(b, DoB())
+        .Times(0)
+        .WillRepeatedly(Return(1));  // #4
+    EXPECT_CALL(b, DoB(2))
+        .Times(1)
+        .WillOnce(Return(1))
+        .WillRepeatedly(Return(2));  // #5
+
+    // Satisfies the above expectations.
+    b.DoB(1);
+    b.DoB(2);
+  }
+  const String output = GetCapturedStdout();
+  EXPECT_PRED_FORMAT2(
+      IsSubstring,
+      "Too many actions specified in EXPECT_CALL(b, DoB())...\n"
+      "Expected to be never called, but has 1 WillOnce().",
+      output);  // #1
+  EXPECT_PRED_FORMAT2(
+      IsSubstring,
+      "Too many actions specified in EXPECT_CALL(b, DoB())...\n"
+      "Expected to be called at most once, "
+      "but has 2 WillOnce()s.",
+      output);  // #2
+  EXPECT_PRED_FORMAT2(
+      IsSubstring,
+      "Too many actions specified in EXPECT_CALL(b, DoB(1))...\n"
+      "Expected to be called once, but has 2 WillOnce()s.",
+      output);  // #3
+  EXPECT_PRED_FORMAT2(
+      IsSubstring,
+      "Too many actions specified in EXPECT_CALL(b, DoB())...\n"
+      "Expected to be never called, but has 0 WillOnce()s "
+      "and a WillRepeatedly().",
+      output);  // #4
+  EXPECT_PRED_FORMAT2(
+      IsSubstring,
+      "Too many actions specified in EXPECT_CALL(b, DoB(2))...\n"
+      "Expected to be called once, but has 1 WillOnce() "
+      "and a WillRepeatedly().",
+      output);  // #5
+}
+
+// Tests that Google Mock warns on having too few actions in an
+// expectation compared to its cardinality.
+TEST(ExpectCallSyntaxTest, WarnsOnTooFewActions) {
+  MockB b;
+
+  EXPECT_CALL(b, DoB())
+      .Times(Between(2, 3))
+      .WillOnce(Return(1));
+
+  CaptureStdout();
+  b.DoB();
+  const String output = GetCapturedStdout();
+  EXPECT_PRED_FORMAT2(
+      IsSubstring,
+      "Too few actions specified in EXPECT_CALL(b, DoB())...\n"
+      "Expected to be called between 2 and 3 times, "
+      "but has only 1 WillOnce().",
+      output);
+  b.DoB();
+}
+
+#endif  // GTEST_HAS_STREAM_REDIRECTION
+
+// Tests the semantics of ON_CALL().
+
+// Tests that the built-in default action is taken when no ON_CALL()
+// is specified.
+TEST(OnCallTest, TakesBuiltInDefaultActionWhenNoOnCall) {
+  MockB b;
+  EXPECT_CALL(b, DoB());
+
+  EXPECT_EQ(0, b.DoB());
+}
+
+// Tests that the built-in default action is taken when no ON_CALL()
+// matches the invocation.
+TEST(OnCallTest, TakesBuiltInDefaultActionWhenNoOnCallMatches) {
+  MockB b;
+  ON_CALL(b, DoB(1))
+      .WillByDefault(Return(1));
+  EXPECT_CALL(b, DoB(_));
+
+  EXPECT_EQ(0, b.DoB(2));
+}
+
+// Tests that the last matching ON_CALL() action is taken.
+TEST(OnCallTest, PicksLastMatchingOnCall) {
+  MockB b;
+  ON_CALL(b, DoB(_))
+      .WillByDefault(Return(3));
+  ON_CALL(b, DoB(2))
+      .WillByDefault(Return(2));
+  ON_CALL(b, DoB(1))
+      .WillByDefault(Return(1));
+  EXPECT_CALL(b, DoB(_));
+
+  EXPECT_EQ(2, b.DoB(2));
+}
+
+// Tests the semantics of EXPECT_CALL().
+
+// Tests that any call is allowed when no EXPECT_CALL() is specified.
+TEST(ExpectCallTest, AllowsAnyCallWhenNoSpec) {
+  MockB b;
+  EXPECT_CALL(b, DoB());
+  // There is no expectation on DoB(int).
+
+  b.DoB();
+
+  // DoB(int) can be called any number of times.
+  b.DoB(1);
+  b.DoB(2);
+}
+
+// Tests that the last matching EXPECT_CALL() fires.
+TEST(ExpectCallTest, PicksLastMatchingExpectCall) {
+  MockB b;
+  EXPECT_CALL(b, DoB(_))
+      .WillRepeatedly(Return(2));
+  EXPECT_CALL(b, DoB(1))
+      .WillRepeatedly(Return(1));
+
+  EXPECT_EQ(1, b.DoB(1));
+}
+
+// Tests lower-bound violation.
+TEST(ExpectCallTest, CatchesTooFewCalls) {
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    MockB b;
+    EXPECT_CALL(b, DoB(5))
+        .Times(AtLeast(2));
+
+    b.DoB(5);
+  }, "Actual function call count doesn't match EXPECT_CALL(b, DoB(5))...\n"
+     "         Expected: to be called at least twice\n"
+     "           Actual: called once - unsatisfied and active");
+}
+
+// Tests that the cardinality can be inferred when no Times(...) is
+// specified.
+TEST(ExpectCallTest, InfersCardinalityWhenThereIsNoWillRepeatedly) {
+  {
+    MockB b;
+    EXPECT_CALL(b, DoB())
+        .WillOnce(Return(1))
+        .WillOnce(Return(2));
+
+    EXPECT_EQ(1, b.DoB());
+    EXPECT_EQ(2, b.DoB());
+  }
+
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    MockB b;
+    EXPECT_CALL(b, DoB())
+        .WillOnce(Return(1))
+        .WillOnce(Return(2));
+
+    EXPECT_EQ(1, b.DoB());
+  }, "to be called twice");
+
+  {  // NOLINT
+    MockB b;
+    EXPECT_CALL(b, DoB())
+        .WillOnce(Return(1))
+        .WillOnce(Return(2));
+
+    EXPECT_EQ(1, b.DoB());
+    EXPECT_EQ(2, b.DoB());
+    EXPECT_NONFATAL_FAILURE(b.DoB(), "to be called twice");
+  }
+}
+
+TEST(ExpectCallTest, InfersCardinality1WhenThereIsWillRepeatedly) {
+  {
+    MockB b;
+    EXPECT_CALL(b, DoB())
+        .WillOnce(Return(1))
+        .WillRepeatedly(Return(2));
+
+    EXPECT_EQ(1, b.DoB());
+  }
+
+  {  // NOLINT
+    MockB b;
+    EXPECT_CALL(b, DoB())
+        .WillOnce(Return(1))
+        .WillRepeatedly(Return(2));
+
+    EXPECT_EQ(1, b.DoB());
+    EXPECT_EQ(2, b.DoB());
+    EXPECT_EQ(2, b.DoB());
+  }
+
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    MockB b;
+    EXPECT_CALL(b, DoB())
+        .WillOnce(Return(1))
+        .WillRepeatedly(Return(2));
+  }, "to be called at least once");
+}
+
+// Tests that the n-th action is taken for the n-th matching
+// invocation.
+TEST(ExpectCallTest, NthMatchTakesNthAction) {
+  MockB b;
+  EXPECT_CALL(b, DoB())
+      .WillOnce(Return(1))
+      .WillOnce(Return(2))
+      .WillOnce(Return(3));
+
+  EXPECT_EQ(1, b.DoB());
+  EXPECT_EQ(2, b.DoB());
+  EXPECT_EQ(3, b.DoB());
+}
+
+// Tests that the WillRepeatedly() action is taken when the WillOnce(...)
+// list is exhausted.
+TEST(ExpectCallTest, TakesRepeatedActionWhenWillListIsExhausted) {
+  MockB b;
+  EXPECT_CALL(b, DoB())
+      .WillOnce(Return(1))
+      .WillRepeatedly(Return(2));
+
+  EXPECT_EQ(1, b.DoB());
+  EXPECT_EQ(2, b.DoB());
+  EXPECT_EQ(2, b.DoB());
+}
+
+#if GTEST_HAS_STREAM_REDIRECTION
+
+// Tests that the default action is taken when the WillOnce(...) list is
+// exhausted and there is no WillRepeatedly().
+TEST(ExpectCallTest, TakesDefaultActionWhenWillListIsExhausted) {
+  MockB b;
+  EXPECT_CALL(b, DoB(_))
+      .Times(1);
+  EXPECT_CALL(b, DoB())
+      .Times(AnyNumber())
+      .WillOnce(Return(1))
+      .WillOnce(Return(2));
+
+  CaptureStdout();
+  EXPECT_EQ(0, b.DoB(1));  // Shouldn't generate a warning as the
+                           // expectation has no action clause at all.
+  EXPECT_EQ(1, b.DoB());
+  EXPECT_EQ(2, b.DoB());
+  const String output1 = GetCapturedStdout();
+  EXPECT_STREQ("", output1.c_str());
+
+  CaptureStdout();
+  EXPECT_EQ(0, b.DoB());
+  EXPECT_EQ(0, b.DoB());
+  const String output2 = GetCapturedStdout();
+  EXPECT_THAT(output2.c_str(),
+              HasSubstr("Actions ran out in EXPECT_CALL(b, DoB())...\n"
+                        "Called 3 times, but only 2 WillOnce()s are specified"
+                        " - returning default value."));
+  EXPECT_THAT(output2.c_str(),
+              HasSubstr("Actions ran out in EXPECT_CALL(b, DoB())...\n"
+                        "Called 4 times, but only 2 WillOnce()s are specified"
+                        " - returning default value."));
+}
+
+TEST(FunctionMockerTest, ReportsExpectCallLocationForExhausedActions) {
+  MockB b;
+  std::string expect_call_location = FormatFileLocation(__FILE__, __LINE__ + 1);
+  EXPECT_CALL(b, DoB()).Times(AnyNumber()).WillOnce(Return(1));
+
+  EXPECT_EQ(1, b.DoB());
+
+  CaptureStdout();
+  EXPECT_EQ(0, b.DoB());
+  const String output = GetCapturedStdout();
+  // The warning message should contain the call location.
+  EXPECT_PRED_FORMAT2(IsSubstring, expect_call_location, output);
+}
+
+TEST(FunctionMockerTest, ReportsDefaultActionLocationOfUninterestingCalls) {
+  std::string on_call_location;
+  CaptureStdout();
+  {
+    MockB b;
+    on_call_location = FormatFileLocation(__FILE__, __LINE__ + 1);
+    ON_CALL(b, DoB(_)).WillByDefault(Return(0));
+    b.DoB(0);
+  }
+  EXPECT_PRED_FORMAT2(IsSubstring, on_call_location, GetCapturedStdout());
+}
+
+#endif  // GTEST_HAS_STREAM_REDIRECTION
+
+// Tests that an uninteresting call performs the default action.
+TEST(UninterestingCallTest, DoesDefaultAction) {
+  // When there is an ON_CALL() statement, the action specified by it
+  // should be taken.
+  MockA a;
+  ON_CALL(a, Binary(_, _))
+      .WillByDefault(Return(true));
+  EXPECT_TRUE(a.Binary(1, 2));
+
+  // When there is no ON_CALL(), the default value for the return type
+  // should be returned.
+  MockB b;
+  EXPECT_EQ(0, b.DoB());
+}
+
+// Tests that an unexpected call performs the default action.
+TEST(UnexpectedCallTest, DoesDefaultAction) {
+  // When there is an ON_CALL() statement, the action specified by it
+  // should be taken.
+  MockA a;
+  ON_CALL(a, Binary(_, _))
+      .WillByDefault(Return(true));
+  EXPECT_CALL(a, Binary(0, 0));
+  a.Binary(0, 0);
+  bool result = false;
+  EXPECT_NONFATAL_FAILURE(result = a.Binary(1, 2),
+                          "Unexpected mock function call");
+  EXPECT_TRUE(result);
+
+  // When there is no ON_CALL(), the default value for the return type
+  // should be returned.
+  MockB b;
+  EXPECT_CALL(b, DoB(0))
+      .Times(0);
+  int n = -1;
+  EXPECT_NONFATAL_FAILURE(n = b.DoB(1),
+                          "Unexpected mock function call");
+  EXPECT_EQ(0, n);
+}
+
+// Tests that when an unexpected void function generates the right
+// failure message.
+TEST(UnexpectedCallTest, GeneratesFailureForVoidFunction) {
+  // First, tests the message when there is only one EXPECT_CALL().
+  MockA a1;
+  EXPECT_CALL(a1, DoA(1));
+  a1.DoA(1);
+  // Ideally we should match the failure message against a regex, but
+  // EXPECT_NONFATAL_FAILURE doesn't support that, so we test for
+  // multiple sub-strings instead.
+  EXPECT_NONFATAL_FAILURE(
+      a1.DoA(9),
+      "Unexpected mock function call - returning directly.\n"
+      "    Function call: DoA(9)\n"
+      "Google Mock tried the following 1 expectation, but it didn't match:");
+  EXPECT_NONFATAL_FAILURE(
+      a1.DoA(9),
+      "  Expected arg #0: is equal to 1\n"
+      "           Actual: 9\n"
+      "         Expected: to be called once\n"
+      "           Actual: called once - saturated and active");
+
+  // Next, tests the message when there are more than one EXPECT_CALL().
+  MockA a2;
+  EXPECT_CALL(a2, DoA(1));
+  EXPECT_CALL(a2, DoA(3));
+  a2.DoA(1);
+  EXPECT_NONFATAL_FAILURE(
+      a2.DoA(2),
+      "Unexpected mock function call - returning directly.\n"
+      "    Function call: DoA(2)\n"
+      "Google Mock tried the following 2 expectations, but none matched:");
+  EXPECT_NONFATAL_FAILURE(
+      a2.DoA(2),
+      "tried expectation #0: EXPECT_CALL(a2, DoA(1))...\n"
+      "  Expected arg #0: is equal to 1\n"
+      "           Actual: 2\n"
+      "         Expected: to be called once\n"
+      "           Actual: called once - saturated and active");
+  EXPECT_NONFATAL_FAILURE(
+      a2.DoA(2),
+      "tried expectation #1: EXPECT_CALL(a2, DoA(3))...\n"
+      "  Expected arg #0: is equal to 3\n"
+      "           Actual: 2\n"
+      "         Expected: to be called once\n"
+      "           Actual: never called - unsatisfied and active");
+  a2.DoA(3);
+}
+
+// Tests that an unexpected non-void function generates the right
+// failure message.
+TEST(UnexpectedCallTest, GeneartesFailureForNonVoidFunction) {
+  MockB b1;
+  EXPECT_CALL(b1, DoB(1));
+  b1.DoB(1);
+  EXPECT_NONFATAL_FAILURE(
+      b1.DoB(2),
+      "Unexpected mock function call - returning default value.\n"
+      "    Function call: DoB(2)\n"
+      "          Returns: 0\n"
+      "Google Mock tried the following 1 expectation, but it didn't match:");
+  EXPECT_NONFATAL_FAILURE(
+      b1.DoB(2),
+      "  Expected arg #0: is equal to 1\n"
+      "           Actual: 2\n"
+      "         Expected: to be called once\n"
+      "           Actual: called once - saturated and active");
+}
+
+// Tests that Google Mock explains that an retired expectation doesn't
+// match the call.
+TEST(UnexpectedCallTest, RetiredExpectation) {
+  MockB b;
+  EXPECT_CALL(b, DoB(1))
+      .RetiresOnSaturation();
+
+  b.DoB(1);
+  EXPECT_NONFATAL_FAILURE(
+      b.DoB(1),
+      "         Expected: the expectation is active\n"
+      "           Actual: it is retired");
+}
+
+// Tests that Google Mock explains that an expectation that doesn't
+// match the arguments doesn't match the call.
+TEST(UnexpectedCallTest, UnmatchedArguments) {
+  MockB b;
+  EXPECT_CALL(b, DoB(1));
+
+  EXPECT_NONFATAL_FAILURE(
+      b.DoB(2),
+      "  Expected arg #0: is equal to 1\n"
+      "           Actual: 2\n");
+  b.DoB(1);
+}
+
+// Tests that Google Mock explains that an expectation with
+// unsatisfied pre-requisites doesn't match the call.
+TEST(UnexpectedCallTest, UnsatisifiedPrerequisites) {
+  Sequence s1, s2;
+  MockB b;
+  EXPECT_CALL(b, DoB(1))
+      .InSequence(s1);
+  EXPECT_CALL(b, DoB(2))
+      .Times(AnyNumber())
+      .InSequence(s1);
+  EXPECT_CALL(b, DoB(3))
+      .InSequence(s2);
+  EXPECT_CALL(b, DoB(4))
+      .InSequence(s1, s2);
+
+  ::testing::TestPartResultArray failures;
+  {
+    ::testing::ScopedFakeTestPartResultReporter reporter(&failures);
+    b.DoB(4);
+    // Now 'failures' contains the Google Test failures generated by
+    // the above statement.
+  }
+
+  // There should be one non-fatal failure.
+  ASSERT_EQ(1, failures.size());
+  const ::testing::TestPartResult& r = failures.GetTestPartResult(0);
+  EXPECT_EQ(::testing::TestPartResult::kNonFatalFailure, r.type());
+
+  // Verifies that the failure message contains the two unsatisfied
+  // pre-requisites but not the satisfied one.
+#if GTEST_USES_PCRE
+  EXPECT_THAT(r.message(), ContainsRegex(
+      // PCRE has trouble using (.|\n) to match any character, but
+      // supports the (?s) prefix for using . to match any character.
+      "(?s)the following immediate pre-requisites are not satisfied:\n"
+      ".*: pre-requisite #0\n"
+      ".*: pre-requisite #1"));
+#elif GTEST_USES_POSIX_RE
+  EXPECT_THAT(r.message(), ContainsRegex(
+      // POSIX RE doesn't understand the (?s) prefix, but has no trouble
+      // with (.|\n).
+      "the following immediate pre-requisites are not satisfied:\n"
+      "(.|\n)*: pre-requisite #0\n"
+      "(.|\n)*: pre-requisite #1"));
+#else
+  // We can only use Google Test's own simple regex.
+  EXPECT_THAT(r.message(), ContainsRegex(
+      "the following immediate pre-requisites are not satisfied:"));
+  EXPECT_THAT(r.message(), ContainsRegex(": pre-requisite #0"));
+  EXPECT_THAT(r.message(), ContainsRegex(": pre-requisite #1"));
+#endif  // GTEST_USES_PCRE
+
+  b.DoB(1);
+  b.DoB(3);
+  b.DoB(4);
+}
+
+TEST(UndefinedReturnValueTest, ReturnValueIsMandatory) {
+  MockA a;
+  // TODO(wan@google.com): We should really verify the output message,
+  // but we cannot yet due to that EXPECT_DEATH only captures stderr
+  // while Google Mock logs to stdout.
+  EXPECT_DEATH_IF_SUPPORTED(a.ReturnResult(1), "");
+}
+
+// Tests that an excessive call (one whose arguments match the
+// matchers but is called too many times) performs the default action.
+TEST(ExcessiveCallTest, DoesDefaultAction) {
+  // When there is an ON_CALL() statement, the action specified by it
+  // should be taken.
+  MockA a;
+  ON_CALL(a, Binary(_, _))
+      .WillByDefault(Return(true));
+  EXPECT_CALL(a, Binary(0, 0));
+  a.Binary(0, 0);
+  bool result = false;
+  EXPECT_NONFATAL_FAILURE(result = a.Binary(0, 0),
+                          "Mock function called more times than expected");
+  EXPECT_TRUE(result);
+
+  // When there is no ON_CALL(), the default value for the return type
+  // should be returned.
+  MockB b;
+  EXPECT_CALL(b, DoB(0))
+      .Times(0);
+  int n = -1;
+  EXPECT_NONFATAL_FAILURE(n = b.DoB(0),
+                          "Mock function called more times than expected");
+  EXPECT_EQ(0, n);
+}
+
+// Tests that when a void function is called too many times,
+// the failure message contains the argument values.
+TEST(ExcessiveCallTest, GeneratesFailureForVoidFunction) {
+  MockA a;
+  EXPECT_CALL(a, DoA(_))
+      .Times(0);
+  EXPECT_NONFATAL_FAILURE(
+      a.DoA(9),
+      "Mock function called more times than expected - returning directly.\n"
+      "    Function call: DoA(9)\n"
+      "         Expected: to be never called\n"
+      "           Actual: called once - over-saturated and active");
+}
+
+// Tests that when a non-void function is called too many times, the
+// failure message contains the argument values and the return value.
+TEST(ExcessiveCallTest, GeneratesFailureForNonVoidFunction) {
+  MockB b;
+  EXPECT_CALL(b, DoB(_));
+  b.DoB(1);
+  EXPECT_NONFATAL_FAILURE(
+      b.DoB(2),
+      "Mock function called more times than expected - "
+      "returning default value.\n"
+      "    Function call: DoB(2)\n"
+      "          Returns: 0\n"
+      "         Expected: to be called once\n"
+      "           Actual: called twice - over-saturated and active");
+}
+
+// Tests using sequences.
+
+TEST(InSequenceTest, AllExpectationInScopeAreInSequence) {
+  MockA a;
+  {
+    InSequence dummy;
+
+    EXPECT_CALL(a, DoA(1));
+    EXPECT_CALL(a, DoA(2));
+  }
+
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    a.DoA(2);
+  }, "Unexpected mock function call");
+
+  a.DoA(1);
+  a.DoA(2);
+}
+
+TEST(InSequenceTest, NestedInSequence) {
+  MockA a;
+  {
+    InSequence dummy;
+
+    EXPECT_CALL(a, DoA(1));
+    {
+      InSequence dummy2;
+
+      EXPECT_CALL(a, DoA(2));
+      EXPECT_CALL(a, DoA(3));
+    }
+  }
+
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    a.DoA(1);
+    a.DoA(3);
+  }, "Unexpected mock function call");
+
+  a.DoA(2);
+  a.DoA(3);
+}
+
+TEST(InSequenceTest, ExpectationsOutOfScopeAreNotAffected) {
+  MockA a;
+  {
+    InSequence dummy;
+
+    EXPECT_CALL(a, DoA(1));
+    EXPECT_CALL(a, DoA(2));
+  }
+  EXPECT_CALL(a, DoA(3));
+
+  EXPECT_NONFATAL_FAILURE({  // NOLINT
+    a.DoA(2);
+  }, "Unexpected mock function call");
+
+  a.DoA(3);
+  a.DoA(1);
+  a.DoA(2);
+}
+
+// Tests that any order is allowed when no sequence is used.
+TEST(SequenceTest, AnyOrderIsOkByDefault) {
+  {
+    MockA a;
+    MockB b;
+
+    EXPECT_CALL(a, DoA(1));
+    EXPECT_CALL(b, DoB())
+        .Times(AnyNumber());
+
+    a.DoA(1);
+    b.DoB();
+  }
+
+  {  // NOLINT
+    MockA a;
+    MockB b;
+
+    EXPECT_CALL(a, DoA(1));
+    EXPECT_CALL(b, DoB())
+        .Times(AnyNumber());
+
+    b.DoB();
+    a.DoA(1);
+  }
+}
+
+// Tests that the calls must be in strict order when a complete order
+// is specified.
+TEST(SequenceTest, CallsMustBeInStrictOrderWhenSaidSo) {
+  MockA a;
+  Sequence s;
+
+  EXPECT_CALL(a, ReturnResult(1))
+      .InSequence(s)
+      .WillOnce(Return(Result()));
+
+  EXPECT_CALL(a, ReturnResult(2))
+      .InSequence(s)
+      .WillOnce(Return(Result()));
+
+  EXPECT_CALL(a, ReturnResult(3))
+      .InSequence(s)
+      .WillOnce(Return(Result()));
+
+  EXPECT_DEATH_IF_SUPPORTED({
+    a.ReturnResult(1);
+    a.ReturnResult(3);
+    a.ReturnResult(2);
+  }, "");
+
+  EXPECT_DEATH_IF_SUPPORTED({
+    a.ReturnResult(2);
+    a.ReturnResult(1);
+    a.ReturnResult(3);
+  }, "");
+
+  a.ReturnResult(1);
+  a.ReturnResult(2);
+  a.ReturnResult(3);
+}
+
+// Tests specifying a DAG using multiple sequences.
+TEST(SequenceTest, CallsMustConformToSpecifiedDag) {
+  MockA a;
+  MockB b;
+  Sequence x, y;
+
+  EXPECT_CALL(a, ReturnResult(1))
+      .InSequence(x)
+      .WillOnce(Return(Result()));
+
+  EXPECT_CALL(b, DoB())
+      .Times(2)
+      .InSequence(y);
+
+  EXPECT_CALL(a, ReturnResult(2))
+      .InSequence(x, y)
+      .WillRepeatedly(Return(Result()));
+
+  EXPECT_CALL(a, ReturnResult(3))
+      .InSequence(x)
+      .WillOnce(Return(Result()));
+
+  EXPECT_DEATH_IF_SUPPORTED({
+    a.ReturnResult(1);
+    b.DoB();
+    a.ReturnResult(2);
+  }, "");
+
+  EXPECT_DEATH_IF_SUPPORTED({
+    a.ReturnResult(2);
+  }, "");
+
+  EXPECT_DEATH_IF_SUPPORTED({
+    a.ReturnResult(3);
+  }, "");
+
+  EXPECT_DEATH_IF_SUPPORTED({
+    a.ReturnResult(1);
+    b.DoB();
+    b.DoB();
+    a.ReturnResult(3);
+    a.ReturnResult(2);
+  }, "");
+
+  b.DoB();
+  a.ReturnResult(1);
+  b.DoB();
+  a.ReturnResult(3);
+}
+
+TEST(SequenceTest, Retirement) {
+  MockA a;
+  Sequence s;
+
+  EXPECT_CALL(a, DoA(1))
+      .InSequence(s);
+  EXPECT_CALL(a, DoA(_))
+      .InSequence(s)
+      .RetiresOnSaturation();
+  EXPECT_CALL(a, DoA(1))
+      .InSequence(s);
+
+  a.DoA(1);
+  a.DoA(2);
+  a.DoA(1);
+}
+
+// Tests Expectation.
+
+TEST(ExpectationTest, ConstrutorsWork) {
+  MockA a;
+  Expectation e1;  // Default ctor.
+
+  // Ctor from various forms of EXPECT_CALL.
+  Expectation e2 = EXPECT_CALL(a, DoA(2));
+  Expectation e3 = EXPECT_CALL(a, DoA(3)).With(_);
+  {
+    Sequence s;
+    Expectation e4 = EXPECT_CALL(a, DoA(4)).Times(1);
+    Expectation e5 = EXPECT_CALL(a, DoA(5)).InSequence(s);
+  }
+  Expectation e6 = EXPECT_CALL(a, DoA(6)).After(e2);
+  Expectation e7 = EXPECT_CALL(a, DoA(7)).WillOnce(Return());
+  Expectation e8 = EXPECT_CALL(a, DoA(8)).WillRepeatedly(Return());
+  Expectation e9 = EXPECT_CALL(a, DoA(9)).RetiresOnSaturation();
+
+  Expectation e10 = e2;  // Copy ctor.
+
+  EXPECT_THAT(e1, Ne(e2));
+  EXPECT_THAT(e2, Eq(e10));
+
+  a.DoA(2);
+  a.DoA(3);
+  a.DoA(4);
+  a.DoA(5);
+  a.DoA(6);
+  a.DoA(7);
+  a.DoA(8);
+  a.DoA(9);
+}
+
+TEST(ExpectationTest, AssignmentWorks) {
+  MockA a;
+  Expectation e1;
+  Expectation e2 = EXPECT_CALL(a, DoA(1));
+
+  EXPECT_THAT(e1, Ne(e2));
+
+  e1 = e2;
+  EXPECT_THAT(e1, Eq(e2));
+
+  a.DoA(1);
+}
+
+// Tests ExpectationSet.
+
+TEST(ExpectationSetTest, MemberTypesAreCorrect) {
+  ::testing::StaticAssertTypeEq<Expectation, ExpectationSet::value_type>();
+}
+
+TEST(ExpectationSetTest, ConstructorsWork) {
+  MockA a;
+
+  Expectation e1;
+  const Expectation e2;
+  ExpectationSet es1;  // Default ctor.
+  ExpectationSet es2 = EXPECT_CALL(a, DoA(1));  // Ctor from EXPECT_CALL.
+  ExpectationSet es3 = e1;  // Ctor from Expectation.
+  ExpectationSet es4(e1);   // Ctor from Expectation; alternative syntax.
+  ExpectationSet es5 = e2;  // Ctor from const Expectation.
+  ExpectationSet es6(e2);   // Ctor from const Expectation; alternative syntax.
+  ExpectationSet es7 = es2;  // Copy ctor.
+
+  EXPECT_EQ(0, es1.size());
+  EXPECT_EQ(1, es2.size());
+  EXPECT_EQ(1, es3.size());
+  EXPECT_EQ(1, es4.size());
+  EXPECT_EQ(1, es5.size());
+  EXPECT_EQ(1, es6.size());
+  EXPECT_EQ(1, es7.size());
+
+  EXPECT_THAT(es3, Ne(es2));
+  EXPECT_THAT(es4, Eq(es3));
+  EXPECT_THAT(es5, Eq(es4));
+  EXPECT_THAT(es6, Eq(es5));
+  EXPECT_THAT(es7, Eq(es2));
+  a.DoA(1);
+}
+
+TEST(ExpectationSetTest, AssignmentWorks) {
+  ExpectationSet es1;
+  ExpectationSet es2 = Expectation();
+
+  es1 = es2;
+  EXPECT_EQ(1, es1.size());
+  EXPECT_THAT(*(es1.begin()), Eq(Expectation()));
+  EXPECT_THAT(es1, Eq(es2));
+}
+
+TEST(ExpectationSetTest, InsertionWorks) {
+  ExpectationSet es1;
+  Expectation e1;
+  es1 += e1;
+  EXPECT_EQ(1, es1.size());
+  EXPECT_THAT(*(es1.begin()), Eq(e1));
+
+  MockA a;
+  Expectation e2 = EXPECT_CALL(a, DoA(1));
+  es1 += e2;
+  EXPECT_EQ(2, es1.size());
+
+  ExpectationSet::const_iterator it1 = es1.begin();
+  ExpectationSet::const_iterator it2 = it1;
+  ++it2;
+  EXPECT_TRUE(*it1 == e1 || *it2 == e1);  // e1 must be in the set.
+  EXPECT_TRUE(*it1 == e2 || *it2 == e2);  // e2 must be in the set too.
+  a.DoA(1);
+}
+
+TEST(ExpectationSetTest, SizeWorks) {
+  ExpectationSet es;
+  EXPECT_EQ(0, es.size());
+
+  es += Expectation();
+  EXPECT_EQ(1, es.size());
+
+  MockA a;
+  es += EXPECT_CALL(a, DoA(1));
+  EXPECT_EQ(2, es.size());
+
+  a.DoA(1);
+}
+
+TEST(ExpectationSetTest, IsEnumerable) {
+  ExpectationSet es;
+  EXPECT_THAT(es.begin(), Eq(es.end()));
+
+  es += Expectation();
+  ExpectationSet::const_iterator it = es.begin();
+  EXPECT_THAT(it, Ne(es.end()));
+  EXPECT_THAT(*it, Eq(Expectation()));
+  ++it;
+  EXPECT_THAT(it, Eq(es.end()));
+}
+
+// Tests the .After() clause.
+
+TEST(AfterTest, SucceedsWhenPartialOrderIsSatisfied) {
+  MockA a;
+  ExpectationSet es;
+  es += EXPECT_CALL(a, DoA(1));
+  es += EXPECT_CALL(a, DoA(2));
+  EXPECT_CALL(a, DoA(3))
+      .After(es);
+
+  a.DoA(1);
+  a.DoA(2);
+  a.DoA(3);
+}
+
+TEST(AfterTest, SucceedsWhenTotalOrderIsSatisfied) {
+  MockA a;
+  MockB b;
+  // The following also verifies that const Expectation objects work
+  // too.  Do not remove the const modifiers.
+  const Expectation e1 = EXPECT_CALL(a, DoA(1));
+  const Expectation e2 = EXPECT_CALL(b, DoB())
+      .Times(2)
+      .After(e1);
+  EXPECT_CALL(a, DoA(2)).After(e2);
+
+  a.DoA(1);
+  b.DoB();
+  b.DoB();
+  a.DoA(2);
+}
+
+// Calls must be in strict order when specified so.
+TEST(AfterDeathTest, CallsMustBeInStrictOrderWhenSpecifiedSo) {
+  MockA a;
+  MockB b;
+  Expectation e1 = EXPECT_CALL(a, DoA(1));
+  Expectation e2 = EXPECT_CALL(b, DoB())
+      .Times(2)
+      .After(e1);
+  EXPECT_CALL(a, ReturnResult(2))
+      .After(e2)
+      .WillOnce(Return(Result()));
+
+  a.DoA(1);
+  // If a call to ReturnResult() violates the specified order, no
+  // matching expectation will be found, and thus the default action
+  // will be done.  Since the return type of ReturnResult() is not a
+  // built-in type, gmock won't know what to return and will thus
+  // abort the program.  Therefore a death test can tell us whether
+  // gmock catches the order violation correctly.
+  //
+  // gtest and gmock print messages to stdout, which isn't captured by
+  // death tests.  Therefore we have to match with an empty regular
+  // expression in all the EXPECT_DEATH()s.
+  EXPECT_DEATH_IF_SUPPORTED(a.ReturnResult(2), "");
+
+  b.DoB();
+  EXPECT_DEATH_IF_SUPPORTED(a.ReturnResult(2), "");
+
+  b.DoB();
+  a.ReturnResult(2);
+}
+
+// Calls must satisfy the partial order when specified so.
+TEST(AfterDeathTest, CallsMustSatisfyPartialOrderWhenSpecifiedSo) {
+  MockA a;
+  Expectation e = EXPECT_CALL(a, DoA(1));
+  const ExpectationSet es = EXPECT_CALL(a, DoA(2));
+  EXPECT_CALL(a, ReturnResult(3))
+      .After(e, es)
+      .WillOnce(Return(Result()));
+
+  EXPECT_DEATH_IF_SUPPORTED(a.ReturnResult(3), "");
+
+  a.DoA(2);
+  EXPECT_DEATH_IF_SUPPORTED(a.ReturnResult(3), "");
+
+  a.DoA(1);
+  a.ReturnResult(3);
+}
+
+// .After() can be combined with .InSequence().
+TEST(AfterDeathTest, CanBeUsedWithInSequence) {
+  MockA a;
+  Sequence s;
+  Expectation e = EXPECT_CALL(a, DoA(1));
+  EXPECT_CALL(a, DoA(2)).InSequence(s);
+  EXPECT_CALL(a, ReturnResult(3))
+      .InSequence(s).After(e)
+      .WillOnce(Return(Result()));
+
+  a.DoA(1);
+  EXPECT_DEATH_IF_SUPPORTED(a.ReturnResult(3), "");
+
+  a.DoA(2);
+  a.ReturnResult(3);
+}
+
+// .After() can be called multiple times.
+TEST(AfterTest, CanBeCalledManyTimes) {
+  MockA a;
+  Expectation e1 = EXPECT_CALL(a, DoA(1));
+  Expectation e2 = EXPECT_CALL(a, DoA(2));
+  Expectation e3 = EXPECT_CALL(a, DoA(3));
+  EXPECT_CALL(a, DoA(4))
+      .After(e1)
+      .After(e2)
+      .After(e3);
+
+  a.DoA(3);
+  a.DoA(1);
+  a.DoA(2);
+  a.DoA(4);
+}
+
+// .After() accepts up to 5 arguments.
+TEST(AfterTest, AcceptsUpToFiveArguments) {
+  MockA a;
+  Expectation e1 = EXPECT_CALL(a, DoA(1));
+  Expectation e2 = EXPECT_CALL(a, DoA(2));
+  Expectation e3 = EXPECT_CALL(a, DoA(3));
+  ExpectationSet es1 = EXPECT_CALL(a, DoA(4));
+  ExpectationSet es2 = EXPECT_CALL(a, DoA(5));
+  EXPECT_CALL(a, DoA(6))
+      .After(e1, e2, e3, es1, es2);
+
+  a.DoA(5);
+  a.DoA(2);
+  a.DoA(4);
+  a.DoA(1);
+  a.DoA(3);
+  a.DoA(6);
+}
+
+// .After() allows input to contain duplicated Expectations.
+TEST(AfterTest, AcceptsDuplicatedInput) {
+  MockA a;
+  Expectation e1 = EXPECT_CALL(a, DoA(1));
+  Expectation e2 = EXPECT_CALL(a, DoA(2));
+  ExpectationSet es;
+  es += e1;
+  es += e2;
+  EXPECT_CALL(a, ReturnResult(3))
+      .After(e1, e2, es, e1)
+      .WillOnce(Return(Result()));
+
+  a.DoA(1);
+  EXPECT_DEATH_IF_SUPPORTED(a.ReturnResult(3), "");
+
+  a.DoA(2);
+  a.ReturnResult(3);
+}
+
+// An Expectation added to an ExpectationSet after it has been used in
+// an .After() has no effect.
+TEST(AfterTest, ChangesToExpectationSetHaveNoEffectAfterwards) {
+  MockA a;
+  ExpectationSet es1 = EXPECT_CALL(a, DoA(1));
+  Expectation e2 = EXPECT_CALL(a, DoA(2));
+  EXPECT_CALL(a, DoA(3))
+      .After(es1);
+  es1 += e2;
+
+  a.DoA(1);
+  a.DoA(3);
+  a.DoA(2);
+}
+
+// Tests that Google Mock correctly handles calls to mock functions
+// after a mock object owning one of their pre-requisites has died.
+
+// Tests that calls that satisfy the original spec are successful.
+TEST(DeletingMockEarlyTest, Success1) {
+  MockB* const b1 = new MockB;
+  MockA* const a = new MockA;
+  MockB* const b2 = new MockB;
+
+  {
+    InSequence dummy;
+    EXPECT_CALL(*b1, DoB(_))
+        .WillOnce(Return(1));
+    EXPECT_CALL(*a, Binary(_, _))
+        .Times(AnyNumber())
+        .WillRepeatedly(Return(true));
+    EXPECT_CALL(*b2, DoB(_))
+        .Times(AnyNumber())
+        .WillRepeatedly(Return(2));
+  }
+
+  EXPECT_EQ(1, b1->DoB(1));
+  delete b1;
+  // a's pre-requisite has died.
+  EXPECT_TRUE(a->Binary(0, 1));
+  delete b2;
+  // a's successor has died.
+  EXPECT_TRUE(a->Binary(1, 2));
+  delete a;
+}
+
+// Tests that calls that satisfy the original spec are successful.
+TEST(DeletingMockEarlyTest, Success2) {
+  MockB* const b1 = new MockB;
+  MockA* const a = new MockA;
+  MockB* const b2 = new MockB;
+
+  {
+    InSequence dummy;
+    EXPECT_CALL(*b1, DoB(_))
+        .WillOnce(Return(1));
+    EXPECT_CALL(*a, Binary(_, _))
+        .Times(AnyNumber());
+    EXPECT_CALL(*b2, DoB(_))
+        .Times(AnyNumber())
+        .WillRepeatedly(Return(2));
+  }
+
+  delete a;  // a is trivially satisfied.
+  EXPECT_EQ(1, b1->DoB(1));
+  EXPECT_EQ(2, b2->DoB(2));
+  delete b1;
+  delete b2;
+}
+
+// Tests that it's OK to delete a mock object itself in its action.
+
+// Suppresses warning on unreferenced formal parameter in MSVC with
+// -W4.
+#ifdef _MSC_VER
+# pragma warning(push)
+# pragma warning(disable:4100)
+#endif
+
+ACTION_P(Delete, ptr) { delete ptr; }
+
+#ifdef _MSC_VER
+# pragma warning(pop)
+#endif
+
+TEST(DeletingMockEarlyTest, CanDeleteSelfInActionReturningVoid) {
+  MockA* const a = new MockA;
+  EXPECT_CALL(*a, DoA(_)).WillOnce(Delete(a));
+  a->DoA(42);  // This will cause a to be deleted.
+}
+
+TEST(DeletingMockEarlyTest, CanDeleteSelfInActionReturningValue) {
+  MockA* const a = new MockA;
+  EXPECT_CALL(*a, ReturnResult(_))
+      .WillOnce(DoAll(Delete(a), Return(Result())));
+  a->ReturnResult(42);  // This will cause a to be deleted.
+}
+
+// Tests that calls that violate the original spec yield failures.
+TEST(DeletingMockEarlyTest, Failure1) {
+  MockB* const b1 = new MockB;
+  MockA* const a = new MockA;
+  MockB* const b2 = new MockB;
+
+  {
+    InSequence dummy;
+    EXPECT_CALL(*b1, DoB(_))
+        .WillOnce(Return(1));
+    EXPECT_CALL(*a, Binary(_, _))
+        .Times(AnyNumber());
+    EXPECT_CALL(*b2, DoB(_))
+        .Times(AnyNumber())
+        .WillRepeatedly(Return(2));
+  }
+
+  delete a;  // a is trivially satisfied.
+  EXPECT_NONFATAL_FAILURE({
+    b2->DoB(2);
+  }, "Unexpected mock function call");
+  EXPECT_EQ(1, b1->DoB(1));
+  delete b1;
+  delete b2;
+}
+
+// Tests that calls that violate the original spec yield failures.
+TEST(DeletingMockEarlyTest, Failure2) {
+  MockB* const b1 = new MockB;
+  MockA* const a = new MockA;
+  MockB* const b2 = new MockB;
+
+  {
+    InSequence dummy;
+    EXPECT_CALL(*b1, DoB(_));
+    EXPECT_CALL(*a, Binary(_, _))
+        .Times(AnyNumber());
+    EXPECT_CALL(*b2, DoB(_))
+        .Times(AnyNumber());
+  }
+
+  EXPECT_NONFATAL_FAILURE(delete b1,
+                          "Actual: never called");
+  EXPECT_NONFATAL_FAILURE(a->Binary(0, 1),
+                          "Unexpected mock function call");
+  EXPECT_NONFATAL_FAILURE(b2->DoB(1),
+                          "Unexpected mock function call");
+  delete a;
+  delete b2;
+}
+
+class EvenNumberCardinality : public CardinalityInterface {
+ public:
+  // Returns true iff call_count calls will satisfy this cardinality.
+  virtual bool IsSatisfiedByCallCount(int call_count) const {
+    return call_count % 2 == 0;
+  }
+
+  // Returns true iff call_count calls will saturate this cardinality.
+  virtual bool IsSaturatedByCallCount(int /* call_count */) const {
+    return false;
+  }
+
+  // Describes self to an ostream.
+  virtual void DescribeTo(::std::ostream* os) const {
+    *os << "called even number of times";
+  }
+};
+
+Cardinality EvenNumber() {
+  return Cardinality(new EvenNumberCardinality);
+}
+
+TEST(ExpectationBaseTest,
+     AllPrerequisitesAreSatisfiedWorksForNonMonotonicCardinality) {
+  MockA* a = new MockA;
+  Sequence s;
+
+  EXPECT_CALL(*a, DoA(1))
+      .Times(EvenNumber())
+      .InSequence(s);
+  EXPECT_CALL(*a, DoA(2))
+      .Times(AnyNumber())
+      .InSequence(s);
+  EXPECT_CALL(*a, DoA(3))
+      .Times(AnyNumber());
+
+  a->DoA(3);
+  a->DoA(1);
+  EXPECT_NONFATAL_FAILURE(a->DoA(2), "Unexpected mock function call");
+  EXPECT_NONFATAL_FAILURE(delete a, "to be called even number of times");
+}
+
+// The following tests verify the message generated when a mock
+// function is called.
+
+struct Printable {
+};
+
+inline void operator<<(::std::ostream& os, const Printable&) {
+  os << "Printable";
+}
+
+struct Unprintable {
+  Unprintable() : value(0) {}
+  int value;
+};
+
+class MockC {
+ public:
+  MockC() {}
+
+  MOCK_METHOD6(VoidMethod, void(bool cond, int n, string s, void* p,
+                                const Printable& x, Unprintable y));
+  MOCK_METHOD0(NonVoidMethod, int());  // NOLINT
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(MockC);
+};
+
+class VerboseFlagPreservingFixture : public testing::Test {
+ protected:
+  // The code needs to work when both ::string and ::std::string are defined
+  // and the flag is implemented as a testing::internal::String.  In this
+  // case, without the call to c_str(), the compiler will complain that it
+  // cannot figure out what overload of string constructor to use.
+  // TODO(vladl@google.com): Use internal::string instead of String for
+  // string flags in Google Test.
+  VerboseFlagPreservingFixture()
+      : saved_verbose_flag_(GMOCK_FLAG(verbose).c_str()) {}
+
+  ~VerboseFlagPreservingFixture() { GMOCK_FLAG(verbose) = saved_verbose_flag_; }
+
+ private:
+  const string saved_verbose_flag_;
+
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(VerboseFlagPreservingFixture);
+};
+
+#if GTEST_HAS_STREAM_REDIRECTION
+
+// Tests that an uninteresting mock function call generates a warning
+// containing the stack trace.
+TEST(FunctionCallMessageTest, UninterestingCallGeneratesFyiWithStackTrace) {
+  MockC c;
+  CaptureStdout();
+  c.VoidMethod(false, 5, "Hi", NULL, Printable(), Unprintable());
+  const String output = GetCapturedStdout();
+  EXPECT_PRED_FORMAT2(IsSubstring, "GMOCK WARNING", output);
+  EXPECT_PRED_FORMAT2(IsSubstring, "Stack trace:", output);
+
+# ifndef NDEBUG
+
+  // We check the stack trace content in dbg-mode only, as opt-mode
+  // may inline the call we are interested in seeing.
+
+  // Verifies that a void mock function's name appears in the stack
+  // trace.
+  EXPECT_PRED_FORMAT2(IsSubstring, "VoidMethod(", output);
+
+  // Verifies that a non-void mock function's name appears in the
+  // stack trace.
+  CaptureStdout();
+  c.NonVoidMethod();
+  const String output2 = GetCapturedStdout();
+  EXPECT_PRED_FORMAT2(IsSubstring, "NonVoidMethod(", output2);
+
+# endif  // NDEBUG
+}
+
+// Tests that an uninteresting mock function call causes the function
+// arguments and return value to be printed.
+TEST(FunctionCallMessageTest, UninterestingCallPrintsArgumentsAndReturnValue) {
+  // A non-void mock function.
+  MockB b;
+  CaptureStdout();
+  b.DoB();
+  const String output1 = GetCapturedStdout();
+  EXPECT_PRED_FORMAT2(
+      IsSubstring,
+      "Uninteresting mock function call - returning default value.\n"
+      "    Function call: DoB()\n"
+      "          Returns: 0\n", output1.c_str());
+  // Makes sure the return value is printed.
+
+  // A void mock function.
+  MockC c;
+  CaptureStdout();
+  c.VoidMethod(false, 5, "Hi", NULL, Printable(), Unprintable());
+  const String output2 = GetCapturedStdout();
+  EXPECT_THAT(output2.c_str(),
+              ContainsRegex(
+                  "Uninteresting mock function call - returning directly\\.\n"
+                  "    Function call: VoidMethod"
+                  "\\(false, 5, \"Hi\", NULL, @.+ "
+                  "Printable, 4-byte object <00-00 00-00>\\)"));
+  // A void function has no return value to print.
+}
+
+// Tests how the --gmock_verbose flag affects Google Mock's output.
+
+class GMockVerboseFlagTest : public VerboseFlagPreservingFixture {
+ public:
+  // Verifies that the given Google Mock output is correct.  (When
+  // should_print is true, the output should match the given regex and
+  // contain the given function name in the stack trace.  When it's
+  // false, the output should be empty.)
+  void VerifyOutput(const String& output, bool should_print,
+                    const string& expected_substring,
+                    const string& function_name) {
+    if (should_print) {
+      EXPECT_THAT(output.c_str(), HasSubstr(expected_substring));
+# ifndef NDEBUG
+      // We check the stack trace content in dbg-mode only, as opt-mode
+      // may inline the call we are interested in seeing.
+      EXPECT_THAT(output.c_str(), HasSubstr(function_name));
+# else
+      // Suppresses 'unused function parameter' warnings.
+      static_cast<void>(function_name);
+# endif  // NDEBUG
+    } else {
+      EXPECT_STREQ("", output.c_str());
+    }
+  }
+
+  // Tests how the flag affects expected calls.
+  void TestExpectedCall(bool should_print) {
+    MockA a;
+    EXPECT_CALL(a, DoA(5));
+    EXPECT_CALL(a, Binary(_, 1))
+        .WillOnce(Return(true));
+
+    // A void-returning function.
+    CaptureStdout();
+    a.DoA(5);
+    VerifyOutput(
+        GetCapturedStdout(),
+        should_print,
+        "Mock function call matches EXPECT_CALL(a, DoA(5))...\n"
+        "    Function call: DoA(5)\n"
+        "Stack trace:\n",
+        "DoA");
+
+    // A non-void-returning function.
+    CaptureStdout();
+    a.Binary(2, 1);
+    VerifyOutput(
+        GetCapturedStdout(),
+        should_print,
+        "Mock function call matches EXPECT_CALL(a, Binary(_, 1))...\n"
+        "    Function call: Binary(2, 1)\n"
+        "          Returns: true\n"
+        "Stack trace:\n",
+        "Binary");
+  }
+
+  // Tests how the flag affects uninteresting calls.
+  void TestUninterestingCall(bool should_print) {
+    MockA a;
+
+    // A void-returning function.
+    CaptureStdout();
+    a.DoA(5);
+    VerifyOutput(
+        GetCapturedStdout(),
+        should_print,
+        "\nGMOCK WARNING:\n"
+        "Uninteresting mock function call - returning directly.\n"
+        "    Function call: DoA(5)\n"
+        "Stack trace:\n",
+        "DoA");
+
+    // A non-void-returning function.
+    CaptureStdout();
+    a.Binary(2, 1);
+    VerifyOutput(
+        GetCapturedStdout(),
+        should_print,
+        "\nGMOCK WARNING:\n"
+        "Uninteresting mock function call - returning default value.\n"
+        "    Function call: Binary(2, 1)\n"
+        "          Returns: false\n"
+        "Stack trace:\n",
+        "Binary");
+  }
+};
+
+// Tests that --gmock_verbose=info causes both expected and
+// uninteresting calls to be reported.
+TEST_F(GMockVerboseFlagTest, Info) {
+  GMOCK_FLAG(verbose) = kInfoVerbosity;
+  TestExpectedCall(true);
+  TestUninterestingCall(true);
+}
+
+// Tests that --gmock_verbose=warning causes uninteresting calls to be
+// reported.
+TEST_F(GMockVerboseFlagTest, Warning) {
+  GMOCK_FLAG(verbose) = kWarningVerbosity;
+  TestExpectedCall(false);
+  TestUninterestingCall(true);
+}
+
+// Tests that --gmock_verbose=warning causes neither expected nor
+// uninteresting calls to be reported.
+TEST_F(GMockVerboseFlagTest, Error) {
+  GMOCK_FLAG(verbose) = kErrorVerbosity;
+  TestExpectedCall(false);
+  TestUninterestingCall(false);
+}
+
+// Tests that --gmock_verbose=SOME_INVALID_VALUE has the same effect
+// as --gmock_verbose=warning.
+TEST_F(GMockVerboseFlagTest, InvalidFlagIsTreatedAsWarning) {
+  GMOCK_FLAG(verbose) = "invalid";  // Treated as "warning".
+  TestExpectedCall(false);
+  TestUninterestingCall(true);
+}
+
+#endif  // GTEST_HAS_STREAM_REDIRECTION
+
+// A helper class that generates a failure when printed.  We use it to
+// ensure that Google Mock doesn't print a value (even to an internal
+// buffer) when it is not supposed to do so.
+class PrintMeNot {};
+
+void PrintTo(PrintMeNot /* dummy */, ::std::ostream* /* os */) {
+  ADD_FAILURE() << "Google Mock is printing a value that shouldn't be "
+                << "printed even to an internal buffer.";
+}
+
+class LogTestHelper {
+ public:
+  LogTestHelper() {}
+
+  MOCK_METHOD1(Foo, PrintMeNot(PrintMeNot));
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(LogTestHelper);
+};
+
+class GMockLogTest : public VerboseFlagPreservingFixture {
+ protected:
+  LogTestHelper helper_;
+};
+
+TEST_F(GMockLogTest, DoesNotPrintGoodCallInternallyIfVerbosityIsWarning) {
+  GMOCK_FLAG(verbose) = kWarningVerbosity;
+  EXPECT_CALL(helper_, Foo(_))
+      .WillOnce(Return(PrintMeNot()));
+  helper_.Foo(PrintMeNot());  // This is an expected call.
+}
+
+TEST_F(GMockLogTest, DoesNotPrintGoodCallInternallyIfVerbosityIsError) {
+  GMOCK_FLAG(verbose) = kErrorVerbosity;
+  EXPECT_CALL(helper_, Foo(_))
+      .WillOnce(Return(PrintMeNot()));
+  helper_.Foo(PrintMeNot());  // This is an expected call.
+}
+
+TEST_F(GMockLogTest, DoesNotPrintWarningInternallyIfVerbosityIsError) {
+  GMOCK_FLAG(verbose) = kErrorVerbosity;
+  ON_CALL(helper_, Foo(_))
+      .WillByDefault(Return(PrintMeNot()));
+  helper_.Foo(PrintMeNot());  // This should generate a warning.
+}
+
+// Tests Mock::AllowLeak().
+
+TEST(AllowLeakTest, AllowsLeakingUnusedMockObject) {
+  MockA* a = new MockA;
+  Mock::AllowLeak(a);
+}
+
+TEST(AllowLeakTest, CanBeCalledBeforeOnCall) {
+  MockA* a = new MockA;
+  Mock::AllowLeak(a);
+  ON_CALL(*a, DoA(_)).WillByDefault(Return());
+  a->DoA(0);
+}
+
+TEST(AllowLeakTest, CanBeCalledAfterOnCall) {
+  MockA* a = new MockA;
+  ON_CALL(*a, DoA(_)).WillByDefault(Return());
+  Mock::AllowLeak(a);
+}
+
+TEST(AllowLeakTest, CanBeCalledBeforeExpectCall) {
+  MockA* a = new MockA;
+  Mock::AllowLeak(a);
+  EXPECT_CALL(*a, DoA(_));
+  a->DoA(0);
+}
+
+TEST(AllowLeakTest, CanBeCalledAfterExpectCall) {
+  MockA* a = new MockA;
+  EXPECT_CALL(*a, DoA(_)).Times(AnyNumber());
+  Mock::AllowLeak(a);
+}
+
+TEST(AllowLeakTest, WorksWhenBothOnCallAndExpectCallArePresent) {
+  MockA* a = new MockA;
+  ON_CALL(*a, DoA(_)).WillByDefault(Return());
+  EXPECT_CALL(*a, DoA(_)).Times(AnyNumber());
+  Mock::AllowLeak(a);
+}
+
+// Tests that we can verify and clear a mock object's expectations
+// when none of its methods has expectations.
+TEST(VerifyAndClearExpectationsTest, NoMethodHasExpectations) {
+  MockB b;
+  ASSERT_TRUE(Mock::VerifyAndClearExpectations(&b));
+
+  // There should be no expectations on the methods now, so we can
+  // freely call them.
+  EXPECT_EQ(0, b.DoB());
+  EXPECT_EQ(0, b.DoB(1));
+}
+
+// Tests that we can verify and clear a mock object's expectations
+// when some, but not all, of its methods have expectations *and* the
+// verification succeeds.
+TEST(VerifyAndClearExpectationsTest, SomeMethodsHaveExpectationsAndSucceed) {
+  MockB b;
+  EXPECT_CALL(b, DoB())
+      .WillOnce(Return(1));
+  b.DoB();
+  ASSERT_TRUE(Mock::VerifyAndClearExpectations(&b));
+
+  // There should be no expectations on the methods now, so we can
+  // freely call them.
+  EXPECT_EQ(0, b.DoB());
+  EXPECT_EQ(0, b.DoB(1));
+}
+
+// Tests that we can verify and clear a mock object's expectations
+// when some, but not all, of its methods have expectations *and* the
+// verification fails.
+TEST(VerifyAndClearExpectationsTest, SomeMethodsHaveExpectationsAndFail) {
+  MockB b;
+  EXPECT_CALL(b, DoB())
+      .WillOnce(Return(1));
+  bool result = true;
+  EXPECT_NONFATAL_FAILURE(result = Mock::VerifyAndClearExpectations(&b),
+                          "Actual: never called");
+  ASSERT_FALSE(result);
+
+  // There should be no expectations on the methods now, so we can
+  // freely call them.
+  EXPECT_EQ(0, b.DoB());
+  EXPECT_EQ(0, b.DoB(1));
+}
+
+// Tests that we can verify and clear a mock object's expectations
+// when all of its methods have expectations.
+TEST(VerifyAndClearExpectationsTest, AllMethodsHaveExpectations) {
+  MockB b;
+  EXPECT_CALL(b, DoB())
+      .WillOnce(Return(1));
+  EXPECT_CALL(b, DoB(_))
+      .WillOnce(Return(2));
+  b.DoB();
+  b.DoB(1);
+  ASSERT_TRUE(Mock::VerifyAndClearExpectations(&b));
+
+  // There should be no expectations on the methods now, so we can
+  // freely call them.
+  EXPECT_EQ(0, b.DoB());
+  EXPECT_EQ(0, b.DoB(1));
+}
+
+// Tests that we can verify and clear a mock object's expectations
+// when a method has more than one expectation.
+TEST(VerifyAndClearExpectationsTest, AMethodHasManyExpectations) {
+  MockB b;
+  EXPECT_CALL(b, DoB(0))
+      .WillOnce(Return(1));
+  EXPECT_CALL(b, DoB(_))
+      .WillOnce(Return(2));
+  b.DoB(1);
+  bool result = true;
+  EXPECT_NONFATAL_FAILURE(result = Mock::VerifyAndClearExpectations(&b),
+                          "Actual: never called");
+  ASSERT_FALSE(result);
+
+  // There should be no expectations on the methods now, so we can
+  // freely call them.
+  EXPECT_EQ(0, b.DoB());
+  EXPECT_EQ(0, b.DoB(1));
+}
+
+// Tests that we can call VerifyAndClearExpectations() on the same
+// mock object multiple times.
+TEST(VerifyAndClearExpectationsTest, CanCallManyTimes) {
+  MockB b;
+  EXPECT_CALL(b, DoB());
+  b.DoB();
+  Mock::VerifyAndClearExpectations(&b);
+
+  EXPECT_CALL(b, DoB(_))
+      .WillOnce(Return(1));
+  b.DoB(1);
+  Mock::VerifyAndClearExpectations(&b);
+  Mock::VerifyAndClearExpectations(&b);
+
+  // There should be no expectations on the methods now, so we can
+  // freely call them.
+  EXPECT_EQ(0, b.DoB());
+  EXPECT_EQ(0, b.DoB(1));
+}
+
+// Tests that we can clear a mock object's default actions when none
+// of its methods has default actions.
+TEST(VerifyAndClearTest, NoMethodHasDefaultActions) {
+  MockB b;
+  // If this crashes or generates a failure, the test will catch it.
+  Mock::VerifyAndClear(&b);
+  EXPECT_EQ(0, b.DoB());
+}
+
+// Tests that we can clear a mock object's default actions when some,
+// but not all of its methods have default actions.
+TEST(VerifyAndClearTest, SomeMethodsHaveDefaultActions) {
+  MockB b;
+  ON_CALL(b, DoB())
+      .WillByDefault(Return(1));
+
+  Mock::VerifyAndClear(&b);
+
+  // Verifies that the default action of int DoB() was removed.
+  EXPECT_EQ(0, b.DoB());
+}
+
+// Tests that we can clear a mock object's default actions when all of
+// its methods have default actions.
+TEST(VerifyAndClearTest, AllMethodsHaveDefaultActions) {
+  MockB b;
+  ON_CALL(b, DoB())
+      .WillByDefault(Return(1));
+  ON_CALL(b, DoB(_))
+      .WillByDefault(Return(2));
+
+  Mock::VerifyAndClear(&b);
+
+  // Verifies that the default action of int DoB() was removed.
+  EXPECT_EQ(0, b.DoB());
+
+  // Verifies that the default action of int DoB(int) was removed.
+  EXPECT_EQ(0, b.DoB(0));
+}
+
+// Tests that we can clear a mock object's default actions when a
+// method has more than one ON_CALL() set on it.
+TEST(VerifyAndClearTest, AMethodHasManyDefaultActions) {
+  MockB b;
+  ON_CALL(b, DoB(0))
+      .WillByDefault(Return(1));
+  ON_CALL(b, DoB(_))
+      .WillByDefault(Return(2));
+
+  Mock::VerifyAndClear(&b);
+
+  // Verifies that the default actions (there are two) of int DoB(int)
+  // were removed.
+  EXPECT_EQ(0, b.DoB(0));
+  EXPECT_EQ(0, b.DoB(1));
+}
+
+// Tests that we can call VerifyAndClear() on a mock object multiple
+// times.
+TEST(VerifyAndClearTest, CanCallManyTimes) {
+  MockB b;
+  ON_CALL(b, DoB())
+      .WillByDefault(Return(1));
+  Mock::VerifyAndClear(&b);
+  Mock::VerifyAndClear(&b);
+
+  ON_CALL(b, DoB(_))
+      .WillByDefault(Return(1));
+  Mock::VerifyAndClear(&b);
+
+  EXPECT_EQ(0, b.DoB());
+  EXPECT_EQ(0, b.DoB(1));
+}
+
+// Tests that VerifyAndClear() works when the verification succeeds.
+TEST(VerifyAndClearTest, Success) {
+  MockB b;
+  ON_CALL(b, DoB())
+      .WillByDefault(Return(1));
+  EXPECT_CALL(b, DoB(1))
+      .WillOnce(Return(2));
+
+  b.DoB();
+  b.DoB(1);
+  ASSERT_TRUE(Mock::VerifyAndClear(&b));
+
+  // There should be no expectations on the methods now, so we can
+  // freely call them.
+  EXPECT_EQ(0, b.DoB());
+  EXPECT_EQ(0, b.DoB(1));
+}
+
+// Tests that VerifyAndClear() works when the verification fails.
+TEST(VerifyAndClearTest, Failure) {
+  MockB b;
+  ON_CALL(b, DoB(_))
+      .WillByDefault(Return(1));
+  EXPECT_CALL(b, DoB())
+      .WillOnce(Return(2));
+
+  b.DoB(1);
+  bool result = true;
+  EXPECT_NONFATAL_FAILURE(result = Mock::VerifyAndClear(&b),
+                          "Actual: never called");
+  ASSERT_FALSE(result);
+
+  // There should be no expectations on the methods now, so we can
+  // freely call them.
+  EXPECT_EQ(0, b.DoB());
+  EXPECT_EQ(0, b.DoB(1));
+}
+
+// Tests that VerifyAndClear() works when the default actions and
+// expectations are set on a const mock object.
+TEST(VerifyAndClearTest, Const) {
+  MockB b;
+  ON_CALL(Const(b), DoB())
+      .WillByDefault(Return(1));
+
+  EXPECT_CALL(Const(b), DoB())
+      .WillOnce(DoDefault())
+      .WillOnce(Return(2));
+
+  b.DoB();
+  b.DoB();
+  ASSERT_TRUE(Mock::VerifyAndClear(&b));
+
+  // There should be no expectations on the methods now, so we can
+  // freely call them.
+  EXPECT_EQ(0, b.DoB());
+  EXPECT_EQ(0, b.DoB(1));
+}
+
+// Tests that we can set default actions and expectations on a mock
+// object after VerifyAndClear() has been called on it.
+TEST(VerifyAndClearTest, CanSetDefaultActionsAndExpectationsAfterwards) {
+  MockB b;
+  ON_CALL(b, DoB())
+      .WillByDefault(Return(1));
+  EXPECT_CALL(b, DoB(_))
+      .WillOnce(Return(2));
+  b.DoB(1);
+
+  Mock::VerifyAndClear(&b);
+
+  EXPECT_CALL(b, DoB())
+      .WillOnce(Return(3));
+  ON_CALL(b, DoB(_))
+      .WillByDefault(Return(4));
+
+  EXPECT_EQ(3, b.DoB());
+  EXPECT_EQ(4, b.DoB(1));
+}
+
+// Tests that calling VerifyAndClear() on one mock object does not
+// affect other mock objects (either of the same type or not).
+TEST(VerifyAndClearTest, DoesNotAffectOtherMockObjects) {
+  MockA a;
+  MockB b1;
+  MockB b2;
+
+  ON_CALL(a, Binary(_, _))
+      .WillByDefault(Return(true));
+  EXPECT_CALL(a, Binary(_, _))
+      .WillOnce(DoDefault())
+      .WillOnce(Return(false));
+
+  ON_CALL(b1, DoB())
+      .WillByDefault(Return(1));
+  EXPECT_CALL(b1, DoB(_))
+      .WillOnce(Return(2));
+
+  ON_CALL(b2, DoB())
+      .WillByDefault(Return(3));
+  EXPECT_CALL(b2, DoB(_));
+
+  b2.DoB(0);
+  Mock::VerifyAndClear(&b2);
+
+  // Verifies that the default actions and expectations of a and b1
+  // are still in effect.
+  EXPECT_TRUE(a.Binary(0, 0));
+  EXPECT_FALSE(a.Binary(0, 0));
+
+  EXPECT_EQ(1, b1.DoB());
+  EXPECT_EQ(2, b1.DoB(0));
+}
+
+TEST(VerifyAndClearTest,
+     DestroyingChainedMocksDoesNotDeadlockThroughExpectations) {
+  linked_ptr<MockA> a(new MockA);
+  ReferenceHoldingMock test_mock;
+
+  // EXPECT_CALL stores a reference to a inside test_mock.
+  EXPECT_CALL(test_mock, AcceptReference(_))
+      .WillRepeatedly(SetArgPointee<0>(a));
+
+  // Throw away the reference to the mock that we have in a. After this, the
+  // only reference to it is stored by test_mock.
+  a.reset();
+
+  // When test_mock goes out of scope, it destroys the last remaining reference
+  // to the mock object originally pointed to by a. This will cause the MockA
+  // destructor to be called from inside the ReferenceHoldingMock destructor.
+  // The state of all mocks is protected by a single global lock, but there
+  // should be no deadlock.
+}
+
+TEST(VerifyAndClearTest,
+     DestroyingChainedMocksDoesNotDeadlockThroughDefaultAction) {
+  linked_ptr<MockA> a(new MockA);
+  ReferenceHoldingMock test_mock;
+
+  // ON_CALL stores a reference to a inside test_mock.
+  ON_CALL(test_mock, AcceptReference(_))
+      .WillByDefault(SetArgPointee<0>(a));
+
+  // Throw away the reference to the mock that we have in a. After this, the
+  // only reference to it is stored by test_mock.
+  a.reset();
+
+  // When test_mock goes out of scope, it destroys the last remaining reference
+  // to the mock object originally pointed to by a. This will cause the MockA
+  // destructor to be called from inside the ReferenceHoldingMock destructor.
+  // The state of all mocks is protected by a single global lock, but there
+  // should be no deadlock.
+}
+
+// Tests that a mock function's action can call a mock function
+// (either the same function or a different one) either as an explicit
+// action or as a default action without causing a dead lock.  It
+// verifies that the action is not performed inside the critical
+// section.
+TEST(SynchronizationTest, CanCallMockMethodInAction) {
+  MockA a;
+  MockC c;
+  ON_CALL(a, DoA(_))
+      .WillByDefault(IgnoreResult(InvokeWithoutArgs(&c,
+                                                    &MockC::NonVoidMethod)));
+  EXPECT_CALL(a, DoA(1));
+  EXPECT_CALL(a, DoA(1))
+      .WillOnce(Invoke(&a, &MockA::DoA))
+      .RetiresOnSaturation();
+  EXPECT_CALL(c, NonVoidMethod());
+
+  a.DoA(1);
+  // This will match the second EXPECT_CALL() and trigger another a.DoA(1),
+  // which will in turn match the first EXPECT_CALL() and trigger a call to
+  // c.NonVoidMethod() that was specified by the ON_CALL() since the first
+  // EXPECT_CALL() did not specify an action.
+}
+
+}  // namespace
+
+// Allows the user to define his own main and then invoke gmock_main
+// from it. This might be necessary on some platforms which require
+// specific setup and teardown.
+#if GMOCK_RENAME_MAIN
+int gmock_main(int argc, char **argv) {
+#else
+int main(int argc, char **argv) {
+#endif  // GMOCK_RENAME_MAIN
+  testing::InitGoogleMock(&argc, argv);
+
+  // Ensures that the tests pass no matter what value of
+  // --gmock_catch_leaked_mocks and --gmock_verbose the user specifies.
+  testing::GMOCK_FLAG(catch_leaked_mocks) = true;
+  testing::GMOCK_FLAG(verbose) = testing::internal::kWarningVerbosity;
+
+  return RUN_ALL_TESTS();
+}
diff --git a/google-breakpad/src/testing/test/gmock_all_test.cc b/google-breakpad/src/testing/test/gmock_all_test.cc
new file mode 100644
index 0000000..691aac8
--- /dev/null
+++ b/google-breakpad/src/testing/test/gmock_all_test.cc
@@ -0,0 +1,48 @@
+// Copyright 2009, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+//
+// Tests for Google C++ Mocking Framework (Google Mock)
+//
+// Sometimes it's desirable to build most of Google Mock's own tests
+// by compiling a single file.  This file serves this purpose.
+#include "test/gmock-actions_test.cc"
+#include "test/gmock-cardinalities_test.cc"
+#include "test/gmock-generated-actions_test.cc"
+#include "test/gmock-generated-function-mockers_test.cc"
+#include "test/gmock-generated-internal-utils_test.cc"
+#include "test/gmock-generated-matchers_test.cc"
+#include "test/gmock-internal-utils_test.cc"
+#include "test/gmock-matchers_test.cc"
+#include "test/gmock-more-actions_test.cc"
+#include "test/gmock-nice-strict_test.cc"
+#include "test/gmock-port_test.cc"
+#include "test/gmock-spec-builders_test.cc"
+#include "test/gmock_test.cc"
diff --git a/google-breakpad/src/testing/test/gmock_leak_test.py b/google-breakpad/src/testing/test/gmock_leak_test.py
new file mode 100755
index 0000000..38ff9d0
--- /dev/null
+++ b/google-breakpad/src/testing/test/gmock_leak_test.py
@@ -0,0 +1,90 @@
+#!/usr/bin/env python
+#
+# Copyright 2009, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+"""Tests that leaked mock objects can be caught be Google Mock."""
+
+__author__ = 'wan@google.com (Zhanyong Wan)'
+
+
+import gmock_test_utils
+
+
+PROGRAM_PATH = gmock_test_utils.GetTestExecutablePath('gmock_leak_test_')
+TEST_WITH_EXPECT_CALL = [PROGRAM_PATH, '--gtest_filter=*ExpectCall*']
+TEST_WITH_ON_CALL = [PROGRAM_PATH, '--gtest_filter=*OnCall*']
+TEST_MULTIPLE_LEAKS = [PROGRAM_PATH, '--gtest_filter=*MultipleLeaked*']
+
+
+class GMockLeakTest(gmock_test_utils.TestCase):
+
+  def testCatchesLeakedMockByDefault(self):
+    self.assertNotEqual(
+        0,
+        gmock_test_utils.Subprocess(TEST_WITH_EXPECT_CALL).exit_code)
+    self.assertNotEqual(
+        0,
+        gmock_test_utils.Subprocess(TEST_WITH_ON_CALL).exit_code)
+
+  def testDoesNotCatchLeakedMockWhenDisabled(self):
+    self.assertEquals(
+        0,
+        gmock_test_utils.Subprocess(TEST_WITH_EXPECT_CALL +
+                                    ['--gmock_catch_leaked_mocks=0']).exit_code)
+    self.assertEquals(
+        0,
+        gmock_test_utils.Subprocess(TEST_WITH_ON_CALL +
+                                    ['--gmock_catch_leaked_mocks=0']).exit_code)
+
+  def testCatchesLeakedMockWhenEnabled(self):
+    self.assertNotEqual(
+        0,
+        gmock_test_utils.Subprocess(TEST_WITH_EXPECT_CALL +
+                                    ['--gmock_catch_leaked_mocks']).exit_code)
+    self.assertNotEqual(
+        0,
+        gmock_test_utils.Subprocess(TEST_WITH_ON_CALL +
+                                    ['--gmock_catch_leaked_mocks']).exit_code)
+
+  def testCatchesLeakedMockWhenEnabledWithExplictFlagValue(self):
+    self.assertNotEqual(
+        0,
+        gmock_test_utils.Subprocess(TEST_WITH_EXPECT_CALL +
+                                    ['--gmock_catch_leaked_mocks=1']).exit_code)
+
+  def testCatchesMultipleLeakedMocks(self):
+    self.assertNotEqual(
+        0,
+        gmock_test_utils.Subprocess(TEST_MULTIPLE_LEAKS +
+                                    ['--gmock_catch_leaked_mocks']).exit_code)
+
+
+if __name__ == '__main__':
+  gmock_test_utils.Main()
diff --git a/google-breakpad/src/testing/test/gmock_leak_test_.cc b/google-breakpad/src/testing/test/gmock_leak_test_.cc
new file mode 100644
index 0000000..1d27d22
--- /dev/null
+++ b/google-breakpad/src/testing/test/gmock_leak_test_.cc
@@ -0,0 +1,100 @@
+// Copyright 2009, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Google Mock - a framework for writing C++ mock classes.
+//
+// This program is for verifying that a leaked mock object can be
+// caught by Google Mock's leak detector.
+
+#include "gmock/gmock.h"
+
+namespace {
+
+using ::testing::Return;
+
+class FooInterface {
+ public:
+  virtual ~FooInterface() {}
+  virtual void DoThis() = 0;
+};
+
+class MockFoo : public FooInterface {
+ public:
+  MockFoo() {}
+
+  MOCK_METHOD0(DoThis, void());
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(MockFoo);
+};
+
+TEST(LeakTest, LeakedMockWithExpectCallCausesFailureWhenLeakCheckingIsEnabled) {
+  MockFoo* foo = new MockFoo;
+
+  EXPECT_CALL(*foo, DoThis());
+  foo->DoThis();
+
+  // In order to test the leak detector, we deliberately leak foo.
+
+  // Makes sure Google Mock's leak detector can change the exit code
+  // to 1 even when the code is already exiting with 0.
+  exit(0);
+}
+
+TEST(LeakTest, LeakedMockWithOnCallCausesFailureWhenLeakCheckingIsEnabled) {
+  MockFoo* foo = new MockFoo;
+
+  ON_CALL(*foo, DoThis()).WillByDefault(Return());
+
+  // In order to test the leak detector, we deliberately leak foo.
+
+  // Makes sure Google Mock's leak detector can change the exit code
+  // to 1 even when the code is already exiting with 0.
+  exit(0);
+}
+
+TEST(LeakTest, CatchesMultipleLeakedMockObjects) {
+  MockFoo* foo1 = new MockFoo;
+  MockFoo* foo2 = new MockFoo;
+
+  ON_CALL(*foo1, DoThis()).WillByDefault(Return());
+  EXPECT_CALL(*foo2, DoThis());
+  foo2->DoThis();
+
+  // In order to test the leak detector, we deliberately leak foo1 and
+  // foo2.
+
+  // Makes sure Google Mock's leak detector can change the exit code
+  // to 1 even when the code is already exiting with 0.
+  exit(0);
+}
+
+}  // namespace
diff --git a/google-breakpad/src/testing/test/gmock_link2_test.cc b/google-breakpad/src/testing/test/gmock_link2_test.cc
new file mode 100644
index 0000000..4c310c3
--- /dev/null
+++ b/google-breakpad/src/testing/test/gmock_link2_test.cc
@@ -0,0 +1,40 @@
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan), vladl@google.com (Vlad Losev)
+
+// Google Mock - a framework for writing C++ mock classes.
+//
+// This file is for verifying that various Google Mock constructs do not
+// produce linker errors when instantiated in different translation units.
+// Please see gmock_link_test.h for details.
+
+#define LinkTest LinkTest2
+
+#include  "test/gmock_link_test.h"
diff --git a/google-breakpad/src/testing/test/gmock_link_test.cc b/google-breakpad/src/testing/test/gmock_link_test.cc
new file mode 100644
index 0000000..61e97d1
--- /dev/null
+++ b/google-breakpad/src/testing/test/gmock_link_test.cc
@@ -0,0 +1,40 @@
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan), vladl@google.com (Vlad Losev)
+
+// Google Mock - a framework for writing C++ mock classes.
+//
+// This file is for verifying that various Google Mock constructs do not
+// produce linker errors when instantiated in different translation units.
+// Please see gmock_link_test.h for details.
+
+#define LinkTest LinkTest1
+
+#include  "test/gmock_link_test.h"
diff --git a/google-breakpad/src/testing/test/gmock_link_test.h b/google-breakpad/src/testing/test/gmock_link_test.h
new file mode 100644
index 0000000..1f55f5b
--- /dev/null
+++ b/google-breakpad/src/testing/test/gmock_link_test.h
@@ -0,0 +1,669 @@
+// Copyright 2009, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: vladl@google.com (Vlad Losev)
+
+// Google Mock - a framework for writing C++ mock classes.
+//
+// This file tests that:
+// a. A header file defining a mock class can be included in multiple
+//    translation units without causing a link error.
+// b. Actions and matchers can be instantiated with identical template
+//    arguments in different translation units without causing link
+//    errors.
+//    The following constructs are currently tested:
+//    Actions:
+//      Return()
+//      Return(value)
+//      ReturnNull
+//      ReturnRef
+//      Assign
+//      SetArgPointee
+//      SetArrayArgument
+//      SetErrnoAndReturn
+//      Invoke(function)
+//      Invoke(object, method)
+//      InvokeWithoutArgs(function)
+//      InvokeWithoutArgs(object, method)
+//      InvokeArgument
+//      WithArg
+//      WithArgs
+//      WithoutArgs
+//      DoAll
+//      DoDefault
+//      IgnoreResult
+//      Throw
+//      ACTION()-generated
+//      ACTION_P()-generated
+//      ACTION_P2()-generated
+//    Matchers:
+//      _
+//      A
+//      An
+//      Eq
+//      Gt, Lt, Ge, Le, Ne
+//      NotNull
+//      Ref
+//      TypedEq
+//      DoubleEq
+//      FloatEq
+//      NanSensitiveDoubleEq
+//      NanSensitiveFloatEq
+//      ContainsRegex
+//      MatchesRegex
+//      EndsWith
+//      HasSubstr
+//      StartsWith
+//      StrCaseEq
+//      StrCaseNe
+//      StrEq
+//      StrNe
+//      ElementsAre
+//      ElementsAreArray
+//      ContainerEq
+//      Field
+//      Property
+//      ResultOf(function)
+//      Pointee
+//      Truly(predicate)
+//      AllOf
+//      AnyOf
+//      Not
+//      MatcherCast<T>
+//
+//  Please note: this test does not verify the functioning of these
+//  constructs, only that the programs using them will link successfully.
+//
+// Implementation note:
+// This test requires identical definitions of Interface and Mock to be
+// included in different translation units.  We achieve this by writing
+// them in this header and #including it in gmock_link_test.cc and
+// gmock_link2_test.cc.  Because the symbols generated by the compiler for
+// those constructs must be identical in both translation units,
+// definitions of Interface and Mock tests MUST be kept in the SAME
+// NON-ANONYMOUS namespace in this file.  The test fixture class LinkTest
+// is defined as LinkTest1 in gmock_link_test.cc and as LinkTest2 in
+// gmock_link2_test.cc to avoid producing linker errors.
+
+#ifndef GMOCK_TEST_GMOCK_LINK_TEST_H_
+#define GMOCK_TEST_GMOCK_LINK_TEST_H_
+
+#include "gmock/gmock.h"
+
+#if !GTEST_OS_WINDOWS_MOBILE
+# include <errno.h>
+#endif
+
+#include "gmock/internal/gmock-port.h"
+#include "gtest/gtest.h"
+#include <iostream>
+#include <vector>
+
+using testing::_;
+using testing::A;
+using testing::AllOf;
+using testing::AnyOf;
+using testing::Assign;
+using testing::ContainerEq;
+using testing::DoAll;
+using testing::DoDefault;
+using testing::DoubleEq;
+using testing::ElementsAre;
+using testing::ElementsAreArray;
+using testing::EndsWith;
+using testing::Eq;
+using testing::Field;
+using testing::FloatEq;
+using testing::Ge;
+using testing::Gt;
+using testing::HasSubstr;
+using testing::IgnoreResult;
+using testing::Invoke;
+using testing::InvokeArgument;
+using testing::InvokeWithoutArgs;
+using testing::IsNull;
+using testing::Le;
+using testing::Lt;
+using testing::Matcher;
+using testing::MatcherCast;
+using testing::NanSensitiveDoubleEq;
+using testing::NanSensitiveFloatEq;
+using testing::Ne;
+using testing::Not;
+using testing::NotNull;
+using testing::Pointee;
+using testing::Property;
+using testing::Ref;
+using testing::ResultOf;
+using testing::Return;
+using testing::ReturnNull;
+using testing::ReturnRef;
+using testing::SetArgPointee;
+using testing::SetArrayArgument;
+using testing::StartsWith;
+using testing::StrCaseEq;
+using testing::StrCaseNe;
+using testing::StrEq;
+using testing::StrNe;
+using testing::Truly;
+using testing::TypedEq;
+using testing::WithArg;
+using testing::WithArgs;
+using testing::WithoutArgs;
+
+#if !GTEST_OS_WINDOWS_MOBILE
+using testing::SetErrnoAndReturn;
+#endif
+
+#if GTEST_HAS_EXCEPTIONS
+using testing::Throw;
+#endif
+
+using testing::ContainsRegex;
+using testing::MatchesRegex;
+
+class Interface {
+ public:
+  virtual ~Interface() {}
+  virtual void VoidFromString(char* str) = 0;
+  virtual char* StringFromString(char* str) = 0;
+  virtual int IntFromString(char* str) = 0;
+  virtual int& IntRefFromString(char* str) = 0;
+  virtual void VoidFromFunc(void(*func)(char* str)) = 0;
+  virtual void VoidFromIntRef(int& n) = 0;  // NOLINT
+  virtual void VoidFromFloat(float n) = 0;
+  virtual void VoidFromDouble(double n) = 0;
+  virtual void VoidFromVector(const std::vector<int>& v) = 0;
+};
+
+class Mock: public Interface {
+ public:
+  Mock() {}
+
+  MOCK_METHOD1(VoidFromString, void(char* str));
+  MOCK_METHOD1(StringFromString, char*(char* str));
+  MOCK_METHOD1(IntFromString, int(char* str));
+  MOCK_METHOD1(IntRefFromString, int&(char* str));
+  MOCK_METHOD1(VoidFromFunc, void(void(*func)(char* str)));
+  MOCK_METHOD1(VoidFromIntRef, void(int& n));  // NOLINT
+  MOCK_METHOD1(VoidFromFloat, void(float n));
+  MOCK_METHOD1(VoidFromDouble, void(double n));
+  MOCK_METHOD1(VoidFromVector, void(const std::vector<int>& v));
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(Mock);
+};
+
+class InvokeHelper {
+ public:
+  static void StaticVoidFromVoid() {}
+  void VoidFromVoid() {}
+  static void StaticVoidFromString(char* /* str */) {}
+  void VoidFromString(char* /* str */) {}
+  static int StaticIntFromString(char* /* str */) { return 1; }
+  static bool StaticBoolFromString(const char* /* str */) { return true; }
+};
+
+class FieldHelper {
+ public:
+  explicit FieldHelper(int a_field) : field_(a_field) {}
+  int field() const { return field_; }
+  int field_;  // NOLINT -- need external access to field_ to test
+               //           the Field matcher.
+};
+
+// Tests the linkage of the ReturnVoid action.
+TEST(LinkTest, TestReturnVoid) {
+  Mock mock;
+
+  EXPECT_CALL(mock, VoidFromString(_)).WillOnce(Return());
+  mock.VoidFromString(NULL);
+}
+
+// Tests the linkage of the Return action.
+TEST(LinkTest, TestReturn) {
+  Mock mock;
+  char ch = 'x';
+
+  EXPECT_CALL(mock, StringFromString(_)).WillOnce(Return(&ch));
+  mock.StringFromString(NULL);
+}
+
+// Tests the linkage of the ReturnNull action.
+TEST(LinkTest, TestReturnNull) {
+  Mock mock;
+
+  EXPECT_CALL(mock, VoidFromString(_)).WillOnce(Return());
+  mock.VoidFromString(NULL);
+}
+
+// Tests the linkage of the ReturnRef action.
+TEST(LinkTest, TestReturnRef) {
+  Mock mock;
+  int n = 42;
+
+  EXPECT_CALL(mock, IntRefFromString(_)).WillOnce(ReturnRef(n));
+  mock.IntRefFromString(NULL);
+}
+
+// Tests the linkage of the Assign action.
+TEST(LinkTest, TestAssign) {
+  Mock mock;
+  char ch = 'x';
+
+  EXPECT_CALL(mock, VoidFromString(_)).WillOnce(Assign(&ch, 'y'));
+  mock.VoidFromString(NULL);
+}
+
+// Tests the linkage of the SetArgPointee action.
+TEST(LinkTest, TestSetArgPointee) {
+  Mock mock;
+  char ch = 'x';
+
+  EXPECT_CALL(mock, VoidFromString(_)).WillOnce(SetArgPointee<0>('y'));
+  mock.VoidFromString(&ch);
+}
+
+// Tests the linkage of the SetArrayArgument action.
+TEST(LinkTest, TestSetArrayArgument) {
+  Mock mock;
+  char ch = 'x';
+  char ch2 = 'y';
+
+  EXPECT_CALL(mock, VoidFromString(_)).WillOnce(SetArrayArgument<0>(&ch2,
+                                                                    &ch2 + 1));
+  mock.VoidFromString(&ch);
+}
+
+#if !GTEST_OS_WINDOWS_MOBILE
+
+// Tests the linkage of the SetErrnoAndReturn action.
+TEST(LinkTest, TestSetErrnoAndReturn) {
+  Mock mock;
+
+  int saved_errno = errno;
+  EXPECT_CALL(mock, IntFromString(_)).WillOnce(SetErrnoAndReturn(1, -1));
+  mock.IntFromString(NULL);
+  errno = saved_errno;
+}
+
+#endif  // !GTEST_OS_WINDOWS_MOBILE
+
+// Tests the linkage of the Invoke(function) and Invoke(object, method) actions.
+TEST(LinkTest, TestInvoke) {
+  Mock mock;
+  InvokeHelper test_invoke_helper;
+
+  EXPECT_CALL(mock, VoidFromString(_))
+      .WillOnce(Invoke(&InvokeHelper::StaticVoidFromString))
+      .WillOnce(Invoke(&test_invoke_helper, &InvokeHelper::VoidFromString));
+  mock.VoidFromString(NULL);
+  mock.VoidFromString(NULL);
+}
+
+// Tests the linkage of the InvokeWithoutArgs action.
+TEST(LinkTest, TestInvokeWithoutArgs) {
+  Mock mock;
+  InvokeHelper test_invoke_helper;
+
+  EXPECT_CALL(mock, VoidFromString(_))
+      .WillOnce(InvokeWithoutArgs(&InvokeHelper::StaticVoidFromVoid))
+      .WillOnce(InvokeWithoutArgs(&test_invoke_helper,
+                                  &InvokeHelper::VoidFromVoid));
+  mock.VoidFromString(NULL);
+  mock.VoidFromString(NULL);
+}
+
+// Tests the linkage of the InvokeArgument action.
+TEST(LinkTest, TestInvokeArgument) {
+  Mock mock;
+  char ch = 'x';
+
+  EXPECT_CALL(mock, VoidFromFunc(_)).WillOnce(InvokeArgument<0>(&ch));
+  mock.VoidFromFunc(InvokeHelper::StaticVoidFromString);
+}
+
+// Tests the linkage of the WithArg action.
+TEST(LinkTest, TestWithArg) {
+  Mock mock;
+
+  EXPECT_CALL(mock, VoidFromString(_))
+      .WillOnce(WithArg<0>(Invoke(&InvokeHelper::StaticVoidFromString)));
+  mock.VoidFromString(NULL);
+}
+
+// Tests the linkage of the WithArgs action.
+TEST(LinkTest, TestWithArgs) {
+  Mock mock;
+
+  EXPECT_CALL(mock, VoidFromString(_))
+      .WillOnce(WithArgs<0>(Invoke(&InvokeHelper::StaticVoidFromString)));
+  mock.VoidFromString(NULL);
+}
+
+// Tests the linkage of the WithoutArgs action.
+TEST(LinkTest, TestWithoutArgs) {
+  Mock mock;
+
+  EXPECT_CALL(mock, VoidFromString(_)).WillOnce(WithoutArgs(Return()));
+  mock.VoidFromString(NULL);
+}
+
+// Tests the linkage of the DoAll action.
+TEST(LinkTest, TestDoAll) {
+  Mock mock;
+  char ch = 'x';
+
+  EXPECT_CALL(mock, VoidFromString(_))
+      .WillOnce(DoAll(SetArgPointee<0>('y'), Return()));
+  mock.VoidFromString(&ch);
+}
+
+// Tests the linkage of the DoDefault action.
+TEST(LinkTest, TestDoDefault) {
+  Mock mock;
+  char ch = 'x';
+
+  ON_CALL(mock, VoidFromString(_)).WillByDefault(Return());
+  EXPECT_CALL(mock, VoidFromString(_)).WillOnce(DoDefault());
+  mock.VoidFromString(&ch);
+}
+
+// Tests the linkage of the IgnoreResult action.
+TEST(LinkTest, TestIgnoreResult) {
+  Mock mock;
+
+  EXPECT_CALL(mock, VoidFromString(_)).WillOnce(IgnoreResult(Return(42)));
+  mock.VoidFromString(NULL);
+}
+
+#if GTEST_HAS_EXCEPTIONS
+// Tests the linkage of the Throw action.
+TEST(LinkTest, TestThrow) {
+  Mock mock;
+
+  EXPECT_CALL(mock, VoidFromString(_)).WillOnce(Throw(42));
+  EXPECT_THROW(mock.VoidFromString(NULL), int);
+}
+#endif  // GTEST_HAS_EXCEPTIONS
+
+// The ACTION*() macros trigger warning C4100 (unreferenced formal
+// parameter) in MSVC with -W4.  Unfortunately they cannot be fixed in
+// the macro definition, as the warnings are generated when the macro
+// is expanded and macro expansion cannot contain #pragma.  Therefore
+// we suppress them here.
+#ifdef _MSC_VER
+# pragma warning(push)
+# pragma warning(disable:4100)
+#endif
+
+// Tests the linkage of actions created using ACTION macro.
+namespace {
+ACTION(Return1) { return 1; }
+}
+
+TEST(LinkTest, TestActionMacro) {
+  Mock mock;
+
+  EXPECT_CALL(mock, IntFromString(_)).WillOnce(Return1());
+  mock.IntFromString(NULL);
+}
+
+// Tests the linkage of actions created using ACTION_P macro.
+namespace {
+ACTION_P(ReturnArgument, ret_value) { return ret_value; }
+}
+
+TEST(LinkTest, TestActionPMacro) {
+  Mock mock;
+
+  EXPECT_CALL(mock, IntFromString(_)).WillOnce(ReturnArgument(42));
+  mock.IntFromString(NULL);
+}
+
+// Tests the linkage of actions created using ACTION_P2 macro.
+namespace {
+ACTION_P2(ReturnEqualsEitherOf, first, second) {
+  return arg0 == first || arg0 == second;
+}
+}
+
+#ifdef _MSC_VER
+# pragma warning(pop)
+#endif
+
+TEST(LinkTest, TestActionP2Macro) {
+  Mock mock;
+  char ch = 'x';
+
+  EXPECT_CALL(mock, IntFromString(_))
+      .WillOnce(ReturnEqualsEitherOf("one", "two"));
+  mock.IntFromString(&ch);
+}
+
+// Tests the linkage of the "_" matcher.
+TEST(LinkTest, TestMatcherAnything) {
+  Mock mock;
+
+  ON_CALL(mock, VoidFromString(_)).WillByDefault(Return());
+}
+
+// Tests the linkage of the A matcher.
+TEST(LinkTest, TestMatcherA) {
+  Mock mock;
+
+  ON_CALL(mock, VoidFromString(A<char*>())).WillByDefault(Return());
+}
+
+// Tests the linkage of the Eq and the "bare value" matcher.
+TEST(LinkTest, TestMatchersEq) {
+  Mock mock;
+  const char* p = "x";
+
+  ON_CALL(mock, VoidFromString(Eq(p))).WillByDefault(Return());
+  ON_CALL(mock, VoidFromString(const_cast<char*>("y")))
+      .WillByDefault(Return());
+}
+
+// Tests the linkage of the Lt, Gt, Le, Ge, and Ne matchers.
+TEST(LinkTest, TestMatchersRelations) {
+  Mock mock;
+
+  ON_CALL(mock, VoidFromFloat(Lt(1.0f))).WillByDefault(Return());
+  ON_CALL(mock, VoidFromFloat(Gt(1.0f))).WillByDefault(Return());
+  ON_CALL(mock, VoidFromFloat(Le(1.0f))).WillByDefault(Return());
+  ON_CALL(mock, VoidFromFloat(Ge(1.0f))).WillByDefault(Return());
+  ON_CALL(mock, VoidFromFloat(Ne(1.0f))).WillByDefault(Return());
+}
+
+// Tests the linkage of the NotNull matcher.
+TEST(LinkTest, TestMatcherNotNull) {
+  Mock mock;
+
+  ON_CALL(mock, VoidFromString(NotNull())).WillByDefault(Return());
+}
+
+// Tests the linkage of the IsNull matcher.
+TEST(LinkTest, TestMatcherIsNull) {
+  Mock mock;
+
+  ON_CALL(mock, VoidFromString(IsNull())).WillByDefault(Return());
+}
+
+// Tests the linkage of the Ref matcher.
+TEST(LinkTest, TestMatcherRef) {
+  Mock mock;
+  int a = 0;
+
+  ON_CALL(mock, VoidFromIntRef(Ref(a))).WillByDefault(Return());
+}
+
+// Tests the linkage of the TypedEq matcher.
+TEST(LinkTest, TestMatcherTypedEq) {
+  Mock mock;
+  long a = 0;
+
+  ON_CALL(mock, VoidFromIntRef(TypedEq<int&>(a))).WillByDefault(Return());
+}
+
+// Tests the linkage of the FloatEq, DoubleEq, NanSensitiveFloatEq and
+// NanSensitiveDoubleEq matchers.
+TEST(LinkTest, TestMatchersFloatingPoint) {
+  Mock mock;
+  float a = 0;
+
+  ON_CALL(mock, VoidFromFloat(FloatEq(a))).WillByDefault(Return());
+  ON_CALL(mock, VoidFromDouble(DoubleEq(a))).WillByDefault(Return());
+  ON_CALL(mock, VoidFromFloat(NanSensitiveFloatEq(a))).WillByDefault(Return());
+  ON_CALL(mock, VoidFromDouble(NanSensitiveDoubleEq(a)))
+      .WillByDefault(Return());
+}
+
+// Tests the linkage of the ContainsRegex matcher.
+TEST(LinkTest, TestMatcherContainsRegex) {
+  Mock mock;
+
+  ON_CALL(mock, VoidFromString(ContainsRegex(".*"))).WillByDefault(Return());
+}
+
+// Tests the linkage of the MatchesRegex matcher.
+TEST(LinkTest, TestMatcherMatchesRegex) {
+  Mock mock;
+
+  ON_CALL(mock, VoidFromString(MatchesRegex(".*"))).WillByDefault(Return());
+}
+
+// Tests the linkage of the StartsWith, EndsWith, and HasSubstr matchers.
+TEST(LinkTest, TestMatchersSubstrings) {
+  Mock mock;
+
+  ON_CALL(mock, VoidFromString(StartsWith("a"))).WillByDefault(Return());
+  ON_CALL(mock, VoidFromString(EndsWith("c"))).WillByDefault(Return());
+  ON_CALL(mock, VoidFromString(HasSubstr("b"))).WillByDefault(Return());
+}
+
+// Tests the linkage of the StrEq, StrNe, StrCaseEq, and StrCaseNe matchers.
+TEST(LinkTest, TestMatchersStringEquality) {
+  Mock mock;
+  ON_CALL(mock, VoidFromString(StrEq("a"))).WillByDefault(Return());
+  ON_CALL(mock, VoidFromString(StrNe("a"))).WillByDefault(Return());
+  ON_CALL(mock, VoidFromString(StrCaseEq("a"))).WillByDefault(Return());
+  ON_CALL(mock, VoidFromString(StrCaseNe("a"))).WillByDefault(Return());
+}
+
+// Tests the linkage of the ElementsAre matcher.
+TEST(LinkTest, TestMatcherElementsAre) {
+  Mock mock;
+
+  ON_CALL(mock, VoidFromVector(ElementsAre('a', _))).WillByDefault(Return());
+}
+
+// Tests the linkage of the ElementsAreArray matcher.
+TEST(LinkTest, TestMatcherElementsAreArray) {
+  Mock mock;
+  char arr[] = { 'a', 'b' };
+
+  ON_CALL(mock, VoidFromVector(ElementsAreArray(arr))).WillByDefault(Return());
+}
+
+// Tests the linkage of the ContainerEq matcher.
+TEST(LinkTest, TestMatcherContainerEq) {
+  Mock mock;
+  std::vector<int> v;
+
+  ON_CALL(mock, VoidFromVector(ContainerEq(v))).WillByDefault(Return());
+}
+
+// Tests the linkage of the Field matcher.
+TEST(LinkTest, TestMatcherField) {
+  FieldHelper helper(0);
+
+  Matcher<const FieldHelper&> m = Field(&FieldHelper::field_, Eq(0));
+  EXPECT_TRUE(m.Matches(helper));
+
+  Matcher<const FieldHelper*> m2 = Field(&FieldHelper::field_, Eq(0));
+  EXPECT_TRUE(m2.Matches(&helper));
+}
+
+// Tests the linkage of the Property matcher.
+TEST(LinkTest, TestMatcherProperty) {
+  FieldHelper helper(0);
+
+  Matcher<const FieldHelper&> m = Property(&FieldHelper::field, Eq(0));
+  EXPECT_TRUE(m.Matches(helper));
+
+  Matcher<const FieldHelper*> m2 = Property(&FieldHelper::field, Eq(0));
+  EXPECT_TRUE(m2.Matches(&helper));
+}
+
+// Tests the linkage of the ResultOf matcher.
+TEST(LinkTest, TestMatcherResultOf) {
+  Matcher<char*> m = ResultOf(&InvokeHelper::StaticIntFromString, Eq(1));
+  EXPECT_TRUE(m.Matches(NULL));
+}
+
+// Tests the linkage of the ResultOf matcher.
+TEST(LinkTest, TestMatcherPointee) {
+  int n = 1;
+
+  Matcher<int*> m = Pointee(Eq(1));
+  EXPECT_TRUE(m.Matches(&n));
+}
+
+// Tests the linkage of the Truly matcher.
+TEST(LinkTest, TestMatcherTruly) {
+  Matcher<const char*> m = Truly(&InvokeHelper::StaticBoolFromString);
+  EXPECT_TRUE(m.Matches(NULL));
+}
+
+// Tests the linkage of the AllOf matcher.
+TEST(LinkTest, TestMatcherAllOf) {
+  Matcher<int> m = AllOf(_, Eq(1));
+  EXPECT_TRUE(m.Matches(1));
+}
+
+// Tests the linkage of the AnyOf matcher.
+TEST(LinkTest, TestMatcherAnyOf) {
+  Matcher<int> m = AnyOf(_, Eq(1));
+  EXPECT_TRUE(m.Matches(1));
+}
+
+// Tests the linkage of the Not matcher.
+TEST(LinkTest, TestMatcherNot) {
+  Matcher<int> m = Not(_);
+  EXPECT_FALSE(m.Matches(1));
+}
+
+// Tests the linkage of the MatcherCast<T>() function.
+TEST(LinkTest, TestMatcherCast) {
+  Matcher<const char*> m = MatcherCast<const char*>(_);
+  EXPECT_TRUE(m.Matches(NULL));
+}
+
+#endif  // GMOCK_TEST_GMOCK_LINK_TEST_H_
diff --git a/google-breakpad/src/testing/test/gmock_output_test.py b/google-breakpad/src/testing/test/gmock_output_test.py
new file mode 100755
index 0000000..eced8a8
--- /dev/null
+++ b/google-breakpad/src/testing/test/gmock_output_test.py
@@ -0,0 +1,180 @@
+#!/usr/bin/env python
+#
+# Copyright 2008, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+"""Tests the text output of Google C++ Mocking Framework.
+
+SYNOPSIS
+       gmock_output_test.py --build_dir=BUILD/DIR --gengolden
+         # where BUILD/DIR contains the built gmock_output_test_ file.
+       gmock_output_test.py --gengolden
+       gmock_output_test.py
+"""
+
+__author__ = 'wan@google.com (Zhanyong Wan)'
+
+import os
+import re
+import sys
+
+import gmock_test_utils
+
+
+# The flag for generating the golden file
+GENGOLDEN_FLAG = '--gengolden'
+
+PROGRAM_PATH = gmock_test_utils.GetTestExecutablePath('gmock_output_test_')
+COMMAND = [PROGRAM_PATH, '--gtest_stack_trace_depth=0', '--gtest_print_time=0']
+GOLDEN_NAME = 'gmock_output_test_golden.txt'
+GOLDEN_PATH = os.path.join(gmock_test_utils.GetSourceDir(), GOLDEN_NAME)
+
+
+def ToUnixLineEnding(s):
+  """Changes all Windows/Mac line endings in s to UNIX line endings."""
+
+  return s.replace('\r\n', '\n').replace('\r', '\n')
+
+
+def RemoveReportHeaderAndFooter(output):
+  """Removes Google Test result report's header and footer from the output."""
+
+  output = re.sub(r'.*gtest_main.*\n', '', output)
+  output = re.sub(r'\[.*\d+ tests.*\n', '', output)
+  output = re.sub(r'\[.* test environment .*\n', '', output)
+  output = re.sub(r'\[=+\] \d+ tests .* ran.*', '', output)
+  output = re.sub(r'.* FAILED TESTS\n', '', output)
+  return output
+
+
+def RemoveLocations(output):
+  """Removes all file location info from a Google Test program's output.
+
+  Args:
+       output:  the output of a Google Test program.
+
+  Returns:
+       output with all file location info (in the form of
+       'DIRECTORY/FILE_NAME:LINE_NUMBER: 'or
+       'DIRECTORY\\FILE_NAME(LINE_NUMBER): ') replaced by
+       'FILE:#: '.
+  """
+
+  return re.sub(r'.*[/\\](.+)(\:\d+|\(\d+\))\:', 'FILE:#:', output)
+
+
+def NormalizeErrorMarker(output):
+  """Normalizes the error marker, which is different on Windows vs on Linux."""
+
+  return re.sub(r' error: ', ' Failure\n', output)
+
+
+def RemoveMemoryAddresses(output):
+  """Removes memory addresses from the test output."""
+
+  return re.sub(r'@\w+', '@0x#', output)
+
+
+def RemoveTestNamesOfLeakedMocks(output):
+  """Removes the test names of leaked mock objects from the test output."""
+
+  return re.sub(r'\(used in test .+\) ', '', output)
+
+
+def GetLeakyTests(output):
+  """Returns a list of test names that leak mock objects."""
+
+  # findall() returns a list of all matches of the regex in output.
+  # For example, if '(used in test FooTest.Bar)' is in output, the
+  # list will contain 'FooTest.Bar'.
+  return re.findall(r'\(used in test (.+)\)', output)
+
+
+def GetNormalizedOutputAndLeakyTests(output):
+  """Normalizes the output of gmock_output_test_.
+
+  Args:
+    output: The test output.
+
+  Returns:
+    A tuple (the normalized test output, the list of test names that have
+    leaked mocks).
+  """
+
+  output = ToUnixLineEnding(output)
+  output = RemoveReportHeaderAndFooter(output)
+  output = NormalizeErrorMarker(output)
+  output = RemoveLocations(output)
+  output = RemoveMemoryAddresses(output)
+  return (RemoveTestNamesOfLeakedMocks(output), GetLeakyTests(output))
+
+
+def GetShellCommandOutput(cmd):
+  """Runs a command in a sub-process, and returns its STDOUT in a string."""
+
+  return gmock_test_utils.Subprocess(cmd, capture_stderr=False).output
+
+
+def GetNormalizedCommandOutputAndLeakyTests(cmd):
+  """Runs a command and returns its normalized output and a list of leaky tests.
+
+  Args:
+    cmd:  the shell command.
+  """
+
+  # Disables exception pop-ups on Windows.
+  os.environ['GTEST_CATCH_EXCEPTIONS'] = '1'
+  return GetNormalizedOutputAndLeakyTests(GetShellCommandOutput(cmd))
+
+
+class GMockOutputTest(gmock_test_utils.TestCase):
+  def testOutput(self):
+    (output, leaky_tests) = GetNormalizedCommandOutputAndLeakyTests(COMMAND)
+    golden_file = open(GOLDEN_PATH, 'rb')
+    golden = golden_file.read()
+    golden_file.close()
+
+    # The normalized output should match the golden file.
+    self.assertEquals(golden, output)
+
+    # The raw output should contain 2 leaked mock object errors for
+    # test GMockOutputTest.CatchesLeakedMocks.
+    self.assertEquals(['GMockOutputTest.CatchesLeakedMocks',
+                       'GMockOutputTest.CatchesLeakedMocks'],
+                      leaky_tests)
+
+
+if __name__ == '__main__':
+  if sys.argv[1:] == [GENGOLDEN_FLAG]:
+    (output, _) = GetNormalizedCommandOutputAndLeakyTests(COMMAND)
+    golden_file = open(GOLDEN_PATH, 'wb')
+    golden_file.write(output)
+    golden_file.close()
+  else:
+    gmock_test_utils.Main()
diff --git a/google-breakpad/src/testing/test/gmock_output_test_.cc b/google-breakpad/src/testing/test/gmock_output_test_.cc
new file mode 100644
index 0000000..c8e6b83
--- /dev/null
+++ b/google-breakpad/src/testing/test/gmock_output_test_.cc
@@ -0,0 +1,290 @@
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Tests Google Mock's output in various scenarios.  This ensures that
+// Google Mock's messages are readable and useful.
+
+#include "gmock/gmock.h"
+
+#include <stdio.h>
+#include <string>
+
+#include "gtest/gtest.h"
+
+using testing::_;
+using testing::AnyNumber;
+using testing::Ge;
+using testing::InSequence;
+using testing::Ref;
+using testing::Return;
+using testing::Sequence;
+
+class MockFoo {
+ public:
+  MockFoo() {}
+
+  MOCK_METHOD3(Bar, char(const std::string& s, int i, double x));
+  MOCK_METHOD2(Bar2, bool(int x, int y));
+  MOCK_METHOD2(Bar3, void(int x, int y));
+
+ private:
+  GTEST_DISALLOW_COPY_AND_ASSIGN_(MockFoo);
+};
+
+class GMockOutputTest : public testing::Test {
+ protected:
+  MockFoo foo_;
+};
+
+TEST_F(GMockOutputTest, ExpectedCall) {
+  testing::GMOCK_FLAG(verbose) = "info";
+
+  EXPECT_CALL(foo_, Bar2(0, _));
+  foo_.Bar2(0, 0);  // Expected call
+
+  testing::GMOCK_FLAG(verbose) = "warning";
+}
+
+TEST_F(GMockOutputTest, ExpectedCallToVoidFunction) {
+  testing::GMOCK_FLAG(verbose) = "info";
+
+  EXPECT_CALL(foo_, Bar3(0, _));
+  foo_.Bar3(0, 0);  // Expected call
+
+  testing::GMOCK_FLAG(verbose) = "warning";
+}
+
+TEST_F(GMockOutputTest, ExplicitActionsRunOut) {
+  EXPECT_CALL(foo_, Bar2(_, _))
+      .Times(2)
+      .WillOnce(Return(false));
+  foo_.Bar2(2, 2);
+  foo_.Bar2(1, 1);  // Explicit actions in EXPECT_CALL run out.
+}
+
+TEST_F(GMockOutputTest, UnexpectedCall) {
+  EXPECT_CALL(foo_, Bar2(0, _));
+
+  foo_.Bar2(1, 0);  // Unexpected call
+  foo_.Bar2(0, 0);  // Expected call
+}
+
+TEST_F(GMockOutputTest, UnexpectedCallToVoidFunction) {
+  EXPECT_CALL(foo_, Bar3(0, _));
+
+  foo_.Bar3(1, 0);  // Unexpected call
+  foo_.Bar3(0, 0);  // Expected call
+}
+
+TEST_F(GMockOutputTest, ExcessiveCall) {
+  EXPECT_CALL(foo_, Bar2(0, _));
+
+  foo_.Bar2(0, 0);  // Expected call
+  foo_.Bar2(0, 1);  // Excessive call
+}
+
+TEST_F(GMockOutputTest, ExcessiveCallToVoidFunction) {
+  EXPECT_CALL(foo_, Bar3(0, _));
+
+  foo_.Bar3(0, 0);  // Expected call
+  foo_.Bar3(0, 1);  // Excessive call
+}
+
+TEST_F(GMockOutputTest, UninterestingCall) {
+  foo_.Bar2(0, 1);  // Uninteresting call
+}
+
+TEST_F(GMockOutputTest, UninterestingCallToVoidFunction) {
+  foo_.Bar3(0, 1);  // Uninteresting call
+}
+
+TEST_F(GMockOutputTest, RetiredExpectation) {
+  EXPECT_CALL(foo_, Bar2(_, _))
+      .RetiresOnSaturation();
+  EXPECT_CALL(foo_, Bar2(0, 0));
+
+  foo_.Bar2(1, 1);
+  foo_.Bar2(1, 1);  // Matches a retired expectation
+  foo_.Bar2(0, 0);
+}
+
+TEST_F(GMockOutputTest, UnsatisfiedPrerequisite) {
+  {
+    InSequence s;
+    EXPECT_CALL(foo_, Bar(_, 0, _));
+    EXPECT_CALL(foo_, Bar2(0, 0));
+    EXPECT_CALL(foo_, Bar2(1, _));
+  }
+
+  foo_.Bar2(1, 0);  // Has one immediate unsatisfied pre-requisite
+  foo_.Bar("Hi", 0, 0);
+  foo_.Bar2(0, 0);
+  foo_.Bar2(1, 0);
+}
+
+TEST_F(GMockOutputTest, UnsatisfiedPrerequisites) {
+  Sequence s1, s2;
+
+  EXPECT_CALL(foo_, Bar(_, 0, _))
+      .InSequence(s1);
+  EXPECT_CALL(foo_, Bar2(0, 0))
+      .InSequence(s2);
+  EXPECT_CALL(foo_, Bar2(1, _))
+      .InSequence(s1, s2);
+
+  foo_.Bar2(1, 0);  // Has two immediate unsatisfied pre-requisites
+  foo_.Bar("Hi", 0, 0);
+  foo_.Bar2(0, 0);
+  foo_.Bar2(1, 0);
+}
+
+TEST_F(GMockOutputTest, UnsatisfiedWith) {
+  EXPECT_CALL(foo_, Bar2(_, _)).With(Ge());
+}
+
+TEST_F(GMockOutputTest, UnsatisfiedExpectation) {
+  EXPECT_CALL(foo_, Bar(_, _, _));
+  EXPECT_CALL(foo_, Bar2(0, _))
+      .Times(2);
+
+  foo_.Bar2(0, 1);
+}
+
+TEST_F(GMockOutputTest, MismatchArguments) {
+  const std::string s = "Hi";
+  EXPECT_CALL(foo_, Bar(Ref(s), _, Ge(0)));
+
+  foo_.Bar("Ho", 0, -0.1);  // Mismatch arguments
+  foo_.Bar(s, 0, 0);
+}
+
+TEST_F(GMockOutputTest, MismatchWith) {
+  EXPECT_CALL(foo_, Bar2(Ge(2), Ge(1)))
+      .With(Ge());
+
+  foo_.Bar2(2, 3);  // Mismatch With()
+  foo_.Bar2(2, 1);
+}
+
+TEST_F(GMockOutputTest, MismatchArgumentsAndWith) {
+  EXPECT_CALL(foo_, Bar2(Ge(2), Ge(1)))
+      .With(Ge());
+
+  foo_.Bar2(1, 3);  // Mismatch arguments and mismatch With()
+  foo_.Bar2(2, 1);
+}
+
+TEST_F(GMockOutputTest, UnexpectedCallWithDefaultAction) {
+  ON_CALL(foo_, Bar2(_, _))
+      .WillByDefault(Return(true));   // Default action #1
+  ON_CALL(foo_, Bar2(1, _))
+      .WillByDefault(Return(false));  // Default action #2
+
+  EXPECT_CALL(foo_, Bar2(2, 2));
+  foo_.Bar2(1, 0);  // Unexpected call, takes default action #2.
+  foo_.Bar2(0, 0);  // Unexpected call, takes default action #1.
+  foo_.Bar2(2, 2);  // Expected call.
+}
+
+TEST_F(GMockOutputTest, ExcessiveCallWithDefaultAction) {
+  ON_CALL(foo_, Bar2(_, _))
+      .WillByDefault(Return(true));   // Default action #1
+  ON_CALL(foo_, Bar2(1, _))
+      .WillByDefault(Return(false));  // Default action #2
+
+  EXPECT_CALL(foo_, Bar2(2, 2));
+  EXPECT_CALL(foo_, Bar2(1, 1));
+
+  foo_.Bar2(2, 2);  // Expected call.
+  foo_.Bar2(2, 2);  // Excessive call, takes default action #1.
+  foo_.Bar2(1, 1);  // Expected call.
+  foo_.Bar2(1, 1);  // Excessive call, takes default action #2.
+}
+
+TEST_F(GMockOutputTest, UninterestingCallWithDefaultAction) {
+  ON_CALL(foo_, Bar2(_, _))
+      .WillByDefault(Return(true));   // Default action #1
+  ON_CALL(foo_, Bar2(1, _))
+      .WillByDefault(Return(false));  // Default action #2
+
+  foo_.Bar2(2, 2);  // Uninteresting call, takes default action #1.
+  foo_.Bar2(1, 1);  // Uninteresting call, takes default action #2.
+}
+
+TEST_F(GMockOutputTest, ExplicitActionsRunOutWithDefaultAction) {
+  ON_CALL(foo_, Bar2(_, _))
+      .WillByDefault(Return(true));   // Default action #1
+
+  EXPECT_CALL(foo_, Bar2(_, _))
+      .Times(2)
+      .WillOnce(Return(false));
+  foo_.Bar2(2, 2);
+  foo_.Bar2(1, 1);  // Explicit actions in EXPECT_CALL run out.
+}
+
+TEST_F(GMockOutputTest, CatchesLeakedMocks) {
+  MockFoo* foo1 = new MockFoo;
+  MockFoo* foo2 = new MockFoo;
+
+  // Invokes ON_CALL on foo1.
+  ON_CALL(*foo1, Bar(_, _, _)).WillByDefault(Return('a'));
+
+  // Invokes EXPECT_CALL on foo2.
+  EXPECT_CALL(*foo2, Bar2(_, _));
+  EXPECT_CALL(*foo2, Bar2(1, _));
+  EXPECT_CALL(*foo2, Bar3(_, _)).Times(AnyNumber());
+  foo2->Bar2(2, 1);
+  foo2->Bar2(1, 1);
+
+  // Both foo1 and foo2 are deliberately leaked.
+}
+
+void TestCatchesLeakedMocksInAdHocTests() {
+  MockFoo* foo = new MockFoo;
+
+  // Invokes EXPECT_CALL on foo.
+  EXPECT_CALL(*foo, Bar2(_, _));
+  foo->Bar2(2, 1);
+
+  // foo is deliberately leaked.
+}
+
+int main(int argc, char **argv) {
+  testing::InitGoogleMock(&argc, argv);
+
+  // Ensures that the tests pass no matter what value of
+  // --gmock_catch_leaked_mocks and --gmock_verbose the user specifies.
+  testing::GMOCK_FLAG(catch_leaked_mocks) = true;
+  testing::GMOCK_FLAG(verbose) = "warning";
+
+  TestCatchesLeakedMocksInAdHocTests();
+  return RUN_ALL_TESTS();
+}
diff --git a/google-breakpad/src/testing/test/gmock_output_test_golden.txt b/google-breakpad/src/testing/test/gmock_output_test_golden.txt
new file mode 100644
index 0000000..a7ff563
--- /dev/null
+++ b/google-breakpad/src/testing/test/gmock_output_test_golden.txt
@@ -0,0 +1,310 @@
+[ RUN      ] GMockOutputTest.ExpectedCall
+
+FILE:#: EXPECT_CALL(foo_, Bar2(0, _)) invoked
+Stack trace:
+
+FILE:#: Mock function call matches EXPECT_CALL(foo_, Bar2(0, _))...
+    Function call: Bar2(0, 0)
+          Returns: false
+Stack trace:
+[       OK ] GMockOutputTest.ExpectedCall
+[ RUN      ] GMockOutputTest.ExpectedCallToVoidFunction
+
+FILE:#: EXPECT_CALL(foo_, Bar3(0, _)) invoked
+Stack trace:
+
+FILE:#: Mock function call matches EXPECT_CALL(foo_, Bar3(0, _))...
+    Function call: Bar3(0, 0)
+Stack trace:
+[       OK ] GMockOutputTest.ExpectedCallToVoidFunction
+[ RUN      ] GMockOutputTest.ExplicitActionsRunOut
+
+GMOCK WARNING:
+FILE:#: Too few actions specified in EXPECT_CALL(foo_, Bar2(_, _))...
+Expected to be called twice, but has only 1 WillOnce().
+GMOCK WARNING:
+FILE:#: Actions ran out in EXPECT_CALL(foo_, Bar2(_, _))...
+Called 2 times, but only 1 WillOnce() is specified - returning default value.
+Stack trace:
+[       OK ] GMockOutputTest.ExplicitActionsRunOut
+[ RUN      ] GMockOutputTest.UnexpectedCall
+unknown file: Failure
+
+Unexpected mock function call - returning default value.
+    Function call: Bar2(1, 0)
+          Returns: false
+Google Mock tried the following 1 expectation, but it didn't match:
+
+FILE:#: EXPECT_CALL(foo_, Bar2(0, _))...
+  Expected arg #0: is equal to 0
+           Actual: 1
+         Expected: to be called once
+           Actual: never called - unsatisfied and active
+[  FAILED  ] GMockOutputTest.UnexpectedCall
+[ RUN      ] GMockOutputTest.UnexpectedCallToVoidFunction
+unknown file: Failure
+
+Unexpected mock function call - returning directly.
+    Function call: Bar3(1, 0)
+Google Mock tried the following 1 expectation, but it didn't match:
+
+FILE:#: EXPECT_CALL(foo_, Bar3(0, _))...
+  Expected arg #0: is equal to 0
+           Actual: 1
+         Expected: to be called once
+           Actual: never called - unsatisfied and active
+[  FAILED  ] GMockOutputTest.UnexpectedCallToVoidFunction
+[ RUN      ] GMockOutputTest.ExcessiveCall
+FILE:#: Failure
+Mock function called more times than expected - returning default value.
+    Function call: Bar2(0, 1)
+          Returns: false
+         Expected: to be called once
+           Actual: called twice - over-saturated and active
+[  FAILED  ] GMockOutputTest.ExcessiveCall
+[ RUN      ] GMockOutputTest.ExcessiveCallToVoidFunction
+FILE:#: Failure
+Mock function called more times than expected - returning directly.
+    Function call: Bar3(0, 1)
+         Expected: to be called once
+           Actual: called twice - over-saturated and active
+[  FAILED  ] GMockOutputTest.ExcessiveCallToVoidFunction
+[ RUN      ] GMockOutputTest.UninterestingCall
+
+GMOCK WARNING:
+Uninteresting mock function call - returning default value.
+    Function call: Bar2(0, 1)
+          Returns: false
+Stack trace:
+[       OK ] GMockOutputTest.UninterestingCall
+[ RUN      ] GMockOutputTest.UninterestingCallToVoidFunction
+
+GMOCK WARNING:
+Uninteresting mock function call - returning directly.
+    Function call: Bar3(0, 1)
+Stack trace:
+[       OK ] GMockOutputTest.UninterestingCallToVoidFunction
+[ RUN      ] GMockOutputTest.RetiredExpectation
+unknown file: Failure
+
+Unexpected mock function call - returning default value.
+    Function call: Bar2(1, 1)
+          Returns: false
+Google Mock tried the following 2 expectations, but none matched:
+
+FILE:#: tried expectation #0: EXPECT_CALL(foo_, Bar2(_, _))...
+         Expected: the expectation is active
+           Actual: it is retired
+         Expected: to be called once
+           Actual: called once - saturated and retired
+FILE:#: tried expectation #1: EXPECT_CALL(foo_, Bar2(0, 0))...
+  Expected arg #0: is equal to 0
+           Actual: 1
+  Expected arg #1: is equal to 0
+           Actual: 1
+         Expected: to be called once
+           Actual: never called - unsatisfied and active
+[  FAILED  ] GMockOutputTest.RetiredExpectation
+[ RUN      ] GMockOutputTest.UnsatisfiedPrerequisite
+unknown file: Failure
+
+Unexpected mock function call - returning default value.
+    Function call: Bar2(1, 0)
+          Returns: false
+Google Mock tried the following 2 expectations, but none matched:
+
+FILE:#: tried expectation #0: EXPECT_CALL(foo_, Bar2(0, 0))...
+  Expected arg #0: is equal to 0
+           Actual: 1
+         Expected: to be called once
+           Actual: never called - unsatisfied and active
+FILE:#: tried expectation #1: EXPECT_CALL(foo_, Bar2(1, _))...
+         Expected: all pre-requisites are satisfied
+           Actual: the following immediate pre-requisites are not satisfied:
+FILE:#: pre-requisite #0
+                   (end of pre-requisites)
+         Expected: to be called once
+           Actual: never called - unsatisfied and active
+[  FAILED  ] GMockOutputTest.UnsatisfiedPrerequisite
+[ RUN      ] GMockOutputTest.UnsatisfiedPrerequisites
+unknown file: Failure
+
+Unexpected mock function call - returning default value.
+    Function call: Bar2(1, 0)
+          Returns: false
+Google Mock tried the following 2 expectations, but none matched:
+
+FILE:#: tried expectation #0: EXPECT_CALL(foo_, Bar2(0, 0))...
+  Expected arg #0: is equal to 0
+           Actual: 1
+         Expected: to be called once
+           Actual: never called - unsatisfied and active
+FILE:#: tried expectation #1: EXPECT_CALL(foo_, Bar2(1, _))...
+         Expected: all pre-requisites are satisfied
+           Actual: the following immediate pre-requisites are not satisfied:
+FILE:#: pre-requisite #0
+FILE:#: pre-requisite #1
+                   (end of pre-requisites)
+         Expected: to be called once
+           Actual: never called - unsatisfied and active
+[  FAILED  ] GMockOutputTest.UnsatisfiedPrerequisites
+[ RUN      ] GMockOutputTest.UnsatisfiedWith
+FILE:#: Failure
+Actual function call count doesn't match EXPECT_CALL(foo_, Bar2(_, _))...
+    Expected args: are a pair where the first >= the second
+         Expected: to be called once
+           Actual: never called - unsatisfied and active
+[  FAILED  ] GMockOutputTest.UnsatisfiedWith
+[ RUN      ] GMockOutputTest.UnsatisfiedExpectation
+FILE:#: Failure
+Actual function call count doesn't match EXPECT_CALL(foo_, Bar2(0, _))...
+         Expected: to be called twice
+           Actual: called once - unsatisfied and active
+FILE:#: Failure
+Actual function call count doesn't match EXPECT_CALL(foo_, Bar(_, _, _))...
+         Expected: to be called once
+           Actual: never called - unsatisfied and active
+[  FAILED  ] GMockOutputTest.UnsatisfiedExpectation
+[ RUN      ] GMockOutputTest.MismatchArguments
+unknown file: Failure
+
+Unexpected mock function call - returning default value.
+    Function call: Bar(@0x# "Ho", 0, -0.1)
+          Returns: '\0'
+Google Mock tried the following 1 expectation, but it didn't match:
+
+FILE:#: EXPECT_CALL(foo_, Bar(Ref(s), _, Ge(0)))...
+  Expected arg #0: references the variable @0x# "Hi"
+           Actual: "Ho", which is located @0x#
+  Expected arg #2: is >= 0
+           Actual: -0.1
+         Expected: to be called once
+           Actual: never called - unsatisfied and active
+[  FAILED  ] GMockOutputTest.MismatchArguments
+[ RUN      ] GMockOutputTest.MismatchWith
+unknown file: Failure
+
+Unexpected mock function call - returning default value.
+    Function call: Bar2(2, 3)
+          Returns: false
+Google Mock tried the following 1 expectation, but it didn't match:
+
+FILE:#: EXPECT_CALL(foo_, Bar2(Ge(2), Ge(1)))...
+    Expected args: are a pair where the first >= the second
+           Actual: don't match
+         Expected: to be called once
+           Actual: never called - unsatisfied and active
+[  FAILED  ] GMockOutputTest.MismatchWith
+[ RUN      ] GMockOutputTest.MismatchArgumentsAndWith
+unknown file: Failure
+
+Unexpected mock function call - returning default value.
+    Function call: Bar2(1, 3)
+          Returns: false
+Google Mock tried the following 1 expectation, but it didn't match:
+
+FILE:#: EXPECT_CALL(foo_, Bar2(Ge(2), Ge(1)))...
+  Expected arg #0: is >= 2
+           Actual: 1
+    Expected args: are a pair where the first >= the second
+           Actual: don't match
+         Expected: to be called once
+           Actual: never called - unsatisfied and active
+[  FAILED  ] GMockOutputTest.MismatchArgumentsAndWith
+[ RUN      ] GMockOutputTest.UnexpectedCallWithDefaultAction
+unknown file: Failure
+
+Unexpected mock function call - taking default action specified at:
+FILE:#:
+    Function call: Bar2(1, 0)
+          Returns: false
+Google Mock tried the following 1 expectation, but it didn't match:
+
+FILE:#: EXPECT_CALL(foo_, Bar2(2, 2))...
+  Expected arg #0: is equal to 2
+           Actual: 1
+  Expected arg #1: is equal to 2
+           Actual: 0
+         Expected: to be called once
+           Actual: never called - unsatisfied and active
+unknown file: Failure
+
+Unexpected mock function call - taking default action specified at:
+FILE:#:
+    Function call: Bar2(0, 0)
+          Returns: true
+Google Mock tried the following 1 expectation, but it didn't match:
+
+FILE:#: EXPECT_CALL(foo_, Bar2(2, 2))...
+  Expected arg #0: is equal to 2
+           Actual: 0
+  Expected arg #1: is equal to 2
+           Actual: 0
+         Expected: to be called once
+           Actual: never called - unsatisfied and active
+[  FAILED  ] GMockOutputTest.UnexpectedCallWithDefaultAction
+[ RUN      ] GMockOutputTest.ExcessiveCallWithDefaultAction
+FILE:#: Failure
+Mock function called more times than expected - taking default action specified at:
+FILE:#:
+    Function call: Bar2(2, 2)
+          Returns: true
+         Expected: to be called once
+           Actual: called twice - over-saturated and active
+FILE:#: Failure
+Mock function called more times than expected - taking default action specified at:
+FILE:#:
+    Function call: Bar2(1, 1)
+          Returns: false
+         Expected: to be called once
+           Actual: called twice - over-saturated and active
+[  FAILED  ] GMockOutputTest.ExcessiveCallWithDefaultAction
+[ RUN      ] GMockOutputTest.UninterestingCallWithDefaultAction
+
+GMOCK WARNING:
+Uninteresting mock function call - taking default action specified at:
+FILE:#:
+    Function call: Bar2(2, 2)
+          Returns: true
+Stack trace:
+
+GMOCK WARNING:
+Uninteresting mock function call - taking default action specified at:
+FILE:#:
+    Function call: Bar2(1, 1)
+          Returns: false
+Stack trace:
+[       OK ] GMockOutputTest.UninterestingCallWithDefaultAction
+[ RUN      ] GMockOutputTest.ExplicitActionsRunOutWithDefaultAction
+
+GMOCK WARNING:
+FILE:#: Too few actions specified in EXPECT_CALL(foo_, Bar2(_, _))...
+Expected to be called twice, but has only 1 WillOnce().
+GMOCK WARNING:
+FILE:#: Actions ran out in EXPECT_CALL(foo_, Bar2(_, _))...
+Called 2 times, but only 1 WillOnce() is specified - taking default action specified at:
+FILE:#:
+Stack trace:
+[       OK ] GMockOutputTest.ExplicitActionsRunOutWithDefaultAction
+[ RUN      ] GMockOutputTest.CatchesLeakedMocks
+[       OK ] GMockOutputTest.CatchesLeakedMocks
+[  FAILED  ] GMockOutputTest.UnexpectedCall
+[  FAILED  ] GMockOutputTest.UnexpectedCallToVoidFunction
+[  FAILED  ] GMockOutputTest.ExcessiveCall
+[  FAILED  ] GMockOutputTest.ExcessiveCallToVoidFunction
+[  FAILED  ] GMockOutputTest.RetiredExpectation
+[  FAILED  ] GMockOutputTest.UnsatisfiedPrerequisite
+[  FAILED  ] GMockOutputTest.UnsatisfiedPrerequisites
+[  FAILED  ] GMockOutputTest.UnsatisfiedWith
+[  FAILED  ] GMockOutputTest.UnsatisfiedExpectation
+[  FAILED  ] GMockOutputTest.MismatchArguments
+[  FAILED  ] GMockOutputTest.MismatchWith
+[  FAILED  ] GMockOutputTest.MismatchArgumentsAndWith
+[  FAILED  ] GMockOutputTest.UnexpectedCallWithDefaultAction
+[  FAILED  ] GMockOutputTest.ExcessiveCallWithDefaultAction
+
+
+FILE:#: ERROR: this mock object should be deleted but never is. Its address is @0x#.
+FILE:#: ERROR: this mock object should be deleted but never is. Its address is @0x#.
+FILE:#: ERROR: this mock object should be deleted but never is. Its address is @0x#.
+ERROR: 3 leaked mock objects found at program exit.
diff --git a/google-breakpad/src/testing/test/gmock_stress_test.cc b/google-breakpad/src/testing/test/gmock_stress_test.cc
new file mode 100644
index 0000000..0e97aee
--- /dev/null
+++ b/google-breakpad/src/testing/test/gmock_stress_test.cc
@@ -0,0 +1,322 @@
+// Copyright 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Tests that Google Mock constructs can be used in a large number of
+// threads concurrently.
+
+#include "gmock/gmock.h"
+#include "gtest/gtest.h"
+
+namespace testing {
+namespace {
+
+// From <gtest/internal/gtest-port.h>.
+using ::testing::internal::ThreadWithParam;
+
+// The maximum number of test threads (not including helper threads)
+// to create.
+const int kMaxTestThreads = 50;
+
+// How many times to repeat a task in a test thread.
+const int kRepeat = 50;
+
+class MockFoo {
+ public:
+  MOCK_METHOD1(Bar, int(int n));  // NOLINT
+  MOCK_METHOD2(Baz, char(const char* s1, const internal::string& s2));  // NOLINT
+};
+
+// Helper for waiting for the given thread to finish and then deleting it.
+template <typename T>
+void JoinAndDelete(ThreadWithParam<T>* t) {
+  t->Join();
+  delete t;
+}
+
+using internal::linked_ptr;
+
+// Helper classes for testing using linked_ptr concurrently.
+
+class Base {
+ public:
+  explicit Base(int a_x) : x_(a_x) {}
+  virtual ~Base() {}
+  int x() const { return x_; }
+ private:
+  int x_;
+};
+
+class Derived1 : public Base {
+ public:
+  Derived1(int a_x, int a_y) : Base(a_x), y_(a_y) {}
+  int y() const { return y_; }
+ private:
+  int y_;
+};
+
+class Derived2 : public Base {
+ public:
+  Derived2(int a_x, int a_z) : Base(a_x), z_(a_z) {}
+  int z() const { return z_; }
+ private:
+  int z_;
+};
+
+linked_ptr<Derived1> pointer1(new Derived1(1, 2));
+linked_ptr<Derived2> pointer2(new Derived2(3, 4));
+
+struct Dummy {};
+
+// Tests that we can copy from a linked_ptr and read it concurrently.
+void TestConcurrentCopyAndReadLinkedPtr(Dummy /* dummy */) {
+  // Reads pointer1 and pointer2 while they are being copied from in
+  // another thread.
+  EXPECT_EQ(1, pointer1->x());
+  EXPECT_EQ(2, pointer1->y());
+  EXPECT_EQ(3, pointer2->x());
+  EXPECT_EQ(4, pointer2->z());
+
+  // Copies from pointer1.
+  linked_ptr<Derived1> p1(pointer1);
+  EXPECT_EQ(1, p1->x());
+  EXPECT_EQ(2, p1->y());
+
+  // Assigns from pointer2 where the LHS was empty.
+  linked_ptr<Base> p2;
+  p2 = pointer1;
+  EXPECT_EQ(1, p2->x());
+
+  // Assigns from pointer2 where the LHS was not empty.
+  p2 = pointer2;
+  EXPECT_EQ(3, p2->x());
+}
+
+const linked_ptr<Derived1> p0(new Derived1(1, 2));
+
+// Tests that we can concurrently modify two linked_ptrs that point to
+// the same object.
+void TestConcurrentWriteToEqualLinkedPtr(Dummy /* dummy */) {
+  // p1 and p2 point to the same, shared thing.  One thread resets p1.
+  // Another thread assigns to p2.  This will cause the same
+  // underlying "ring" to be updated concurrently.
+  linked_ptr<Derived1> p1(p0);
+  linked_ptr<Derived1> p2(p0);
+
+  EXPECT_EQ(1, p1->x());
+  EXPECT_EQ(2, p1->y());
+
+  EXPECT_EQ(1, p2->x());
+  EXPECT_EQ(2, p2->y());
+
+  p1.reset();
+  p2 = p0;
+
+  EXPECT_EQ(1, p2->x());
+  EXPECT_EQ(2, p2->y());
+}
+
+// Tests that different mock objects can be used in their respective
+// threads.  This should generate no Google Test failure.
+void TestConcurrentMockObjects(Dummy /* dummy */) {
+  // Creates a mock and does some typical operations on it.
+  MockFoo foo;
+  ON_CALL(foo, Bar(_))
+      .WillByDefault(Return(1));
+  ON_CALL(foo, Baz(_, _))
+      .WillByDefault(Return('b'));
+  ON_CALL(foo, Baz(_, "you"))
+      .WillByDefault(Return('a'));
+
+  EXPECT_CALL(foo, Bar(0))
+      .Times(AtMost(3));
+  EXPECT_CALL(foo, Baz(_, _));
+  EXPECT_CALL(foo, Baz("hi", "you"))
+      .WillOnce(Return('z'))
+      .WillRepeatedly(DoDefault());
+
+  EXPECT_EQ(1, foo.Bar(0));
+  EXPECT_EQ(1, foo.Bar(0));
+  EXPECT_EQ('z', foo.Baz("hi", "you"));
+  EXPECT_EQ('a', foo.Baz("hi", "you"));
+  EXPECT_EQ('b', foo.Baz("hi", "me"));
+}
+
+// Tests invoking methods of the same mock object in multiple threads.
+
+struct Helper1Param {
+  MockFoo* mock_foo;
+  int* count;
+};
+
+void Helper1(Helper1Param param) {
+  for (int i = 0; i < kRepeat; i++) {
+    const char ch = param.mock_foo->Baz("a", "b");
+    if (ch == 'a') {
+      // It was an expected call.
+      (*param.count)++;
+    } else {
+      // It was an excessive call.
+      EXPECT_EQ('\0', ch);
+    }
+
+    // An unexpected call.
+    EXPECT_EQ('\0', param.mock_foo->Baz("x", "y")) << "Expected failure.";
+
+    // An uninteresting call.
+    EXPECT_EQ(1, param.mock_foo->Bar(5));
+  }
+}
+
+// This should generate 3*kRepeat + 1 failures in total.
+void TestConcurrentCallsOnSameObject(Dummy /* dummy */) {
+  MockFoo foo;
+
+  ON_CALL(foo, Bar(_))
+      .WillByDefault(Return(1));
+  EXPECT_CALL(foo, Baz(_, "b"))
+      .Times(kRepeat)
+      .WillRepeatedly(Return('a'));
+  EXPECT_CALL(foo, Baz(_, "c"));  // Expected to be unsatisfied.
+
+  // This chunk of code should generate kRepeat failures about
+  // excessive calls, and 2*kRepeat failures about unexpected calls.
+  int count1 = 0;
+  const Helper1Param param = { &foo, &count1 };
+  ThreadWithParam<Helper1Param>* const t =
+      new ThreadWithParam<Helper1Param>(Helper1, param, NULL);
+
+  int count2 = 0;
+  const Helper1Param param2 = { &foo, &count2 };
+  Helper1(param2);
+  JoinAndDelete(t);
+
+  EXPECT_EQ(kRepeat, count1 + count2);
+
+  // foo's destructor should generate one failure about unsatisfied
+  // expectation.
+}
+
+// Tests using the same mock object in multiple threads when the
+// expectations are partially ordered.
+
+void Helper2(MockFoo* foo) {
+  for (int i = 0; i < kRepeat; i++) {
+    foo->Bar(2);
+    foo->Bar(3);
+  }
+}
+
+// This should generate no Google Test failures.
+void TestPartiallyOrderedExpectationsWithThreads(Dummy /* dummy */) {
+  MockFoo foo;
+  Sequence s1, s2;
+
+  {
+    InSequence dummy;
+    EXPECT_CALL(foo, Bar(0));
+    EXPECT_CALL(foo, Bar(1))
+        .InSequence(s1, s2);
+  }
+
+  EXPECT_CALL(foo, Bar(2))
+      .Times(2*kRepeat)
+      .InSequence(s1)
+      .RetiresOnSaturation();
+  EXPECT_CALL(foo, Bar(3))
+      .Times(2*kRepeat)
+      .InSequence(s2);
+
+  {
+    InSequence dummy;
+    EXPECT_CALL(foo, Bar(2))
+        .InSequence(s1, s2);
+    EXPECT_CALL(foo, Bar(4));
+  }
+
+  foo.Bar(0);
+  foo.Bar(1);
+
+  ThreadWithParam<MockFoo*>* const t =
+      new ThreadWithParam<MockFoo*>(Helper2, &foo, NULL);
+  Helper2(&foo);
+  JoinAndDelete(t);
+
+  foo.Bar(2);
+  foo.Bar(4);
+}
+
+// Tests using Google Mock constructs in many threads concurrently.
+TEST(StressTest, CanUseGMockWithThreads) {
+  void (*test_routines[])(Dummy dummy) = {
+    &TestConcurrentCopyAndReadLinkedPtr,
+    &TestConcurrentWriteToEqualLinkedPtr,
+    &TestConcurrentMockObjects,
+    &TestConcurrentCallsOnSameObject,
+    &TestPartiallyOrderedExpectationsWithThreads,
+  };
+
+  const int kRoutines = sizeof(test_routines)/sizeof(test_routines[0]);
+  const int kCopiesOfEachRoutine = kMaxTestThreads / kRoutines;
+  const int kTestThreads = kCopiesOfEachRoutine * kRoutines;
+  ThreadWithParam<Dummy>* threads[kTestThreads] = {};
+  for (int i = 0; i < kTestThreads; i++) {
+    // Creates a thread to run the test function.
+    threads[i] =
+        new ThreadWithParam<Dummy>(test_routines[i % kRoutines], Dummy(), NULL);
+    GTEST_LOG_(INFO) << "Thread #" << i << " running . . .";
+  }
+
+  // At this point, we have many threads running.
+  for (int i = 0; i < kTestThreads; i++) {
+    JoinAndDelete(threads[i]);
+  }
+
+  // Ensures that the correct number of failures have been reported.
+  const TestInfo* const info = UnitTest::GetInstance()->current_test_info();
+  const TestResult& result = *info->result();
+  const int kExpectedFailures = (3*kRepeat + 1)*kCopiesOfEachRoutine;
+  GTEST_CHECK_(kExpectedFailures == result.total_part_count())
+      << "Expected " << kExpectedFailures << " failures, but got "
+      << result.total_part_count();
+}
+
+}  // namespace
+}  // namespace testing
+
+int main(int argc, char **argv) {
+  testing::InitGoogleMock(&argc, argv);
+
+  const int exit_code = RUN_ALL_TESTS();  // Expected to fail.
+  GTEST_CHECK_(exit_code != 0) << "RUN_ALL_TESTS() did not fail as expected";
+
+  printf("\nPASS\n");
+  return 0;
+}
diff --git a/google-breakpad/src/testing/test/gmock_test.cc b/google-breakpad/src/testing/test/gmock_test.cc
new file mode 100644
index 0000000..0b89113
--- /dev/null
+++ b/google-breakpad/src/testing/test/gmock_test.cc
@@ -0,0 +1,255 @@
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Google Mock - a framework for writing C++ mock classes.
+//
+// This file tests code in gmock.cc.
+
+#include "gmock/gmock.h"
+
+#include <string>
+#include "gtest/gtest.h"
+
+using testing::GMOCK_FLAG(verbose);
+using testing::InitGoogleMock;
+using testing::internal::g_init_gtest_count;
+
+// Verifies that calling InitGoogleMock() on argv results in new_argv,
+// and the gmock_verbose flag's value is set to expected_gmock_verbose.
+template <typename Char, int M, int N>
+void TestInitGoogleMock(const Char* (&argv)[M], const Char* (&new_argv)[N],
+                        const ::std::string& expected_gmock_verbose) {
+  const ::std::string old_verbose = GMOCK_FLAG(verbose);
+
+  int argc = M;
+  InitGoogleMock(&argc, const_cast<Char**>(argv));
+  ASSERT_EQ(N, argc) << "The new argv has wrong number of elements.";
+
+  for (int i = 0; i < N; i++) {
+    EXPECT_STREQ(new_argv[i], argv[i]);
+  }
+
+  EXPECT_EQ(expected_gmock_verbose, GMOCK_FLAG(verbose).c_str());
+  GMOCK_FLAG(verbose) = old_verbose;  // Restores the gmock_verbose flag.
+}
+
+TEST(InitGoogleMockTest, ParsesInvalidCommandLine) {
+  const char* argv[] = {
+    NULL
+  };
+
+  const char* new_argv[] = {
+    NULL
+  };
+
+  TestInitGoogleMock(argv, new_argv, GMOCK_FLAG(verbose));
+}
+
+TEST(InitGoogleMockTest, ParsesEmptyCommandLine) {
+  const char* argv[] = {
+    "foo.exe",
+    NULL
+  };
+
+  const char* new_argv[] = {
+    "foo.exe",
+    NULL
+  };
+
+  TestInitGoogleMock(argv, new_argv, GMOCK_FLAG(verbose));
+}
+
+TEST(InitGoogleMockTest, ParsesSingleFlag) {
+  const char* argv[] = {
+    "foo.exe",
+    "--gmock_verbose=info",
+    NULL
+  };
+
+  const char* new_argv[] = {
+    "foo.exe",
+    NULL
+  };
+
+  TestInitGoogleMock(argv, new_argv, "info");
+}
+
+TEST(InitGoogleMockTest, ParsesUnrecognizedFlag) {
+  const char* argv[] = {
+    "foo.exe",
+    "--non_gmock_flag=blah",
+    NULL
+  };
+
+  const char* new_argv[] = {
+    "foo.exe",
+    "--non_gmock_flag=blah",
+    NULL
+  };
+
+  TestInitGoogleMock(argv, new_argv, GMOCK_FLAG(verbose));
+}
+
+TEST(InitGoogleMockTest, ParsesGoogleMockFlagAndUnrecognizedFlag) {
+  const char* argv[] = {
+    "foo.exe",
+    "--non_gmock_flag=blah",
+    "--gmock_verbose=error",
+    NULL
+  };
+
+  const char* new_argv[] = {
+    "foo.exe",
+    "--non_gmock_flag=blah",
+    NULL
+  };
+
+  TestInitGoogleMock(argv, new_argv, "error");
+}
+
+TEST(InitGoogleMockTest, CallsInitGoogleTest) {
+  const int old_init_gtest_count = g_init_gtest_count;
+  const char* argv[] = {
+    "foo.exe",
+    "--non_gmock_flag=blah",
+    "--gmock_verbose=error",
+    NULL
+  };
+
+  const char* new_argv[] = {
+    "foo.exe",
+    "--non_gmock_flag=blah",
+    NULL
+  };
+
+  TestInitGoogleMock(argv, new_argv, "error");
+  EXPECT_EQ(old_init_gtest_count + 1, g_init_gtest_count);
+}
+
+TEST(WideInitGoogleMockTest, ParsesInvalidCommandLine) {
+  const wchar_t* argv[] = {
+    NULL
+  };
+
+  const wchar_t* new_argv[] = {
+    NULL
+  };
+
+  TestInitGoogleMock(argv, new_argv, GMOCK_FLAG(verbose));
+}
+
+TEST(WideInitGoogleMockTest, ParsesEmptyCommandLine) {
+  const wchar_t* argv[] = {
+    L"foo.exe",
+    NULL
+  };
+
+  const wchar_t* new_argv[] = {
+    L"foo.exe",
+    NULL
+  };
+
+  TestInitGoogleMock(argv, new_argv, GMOCK_FLAG(verbose));
+}
+
+TEST(WideInitGoogleMockTest, ParsesSingleFlag) {
+  const wchar_t* argv[] = {
+    L"foo.exe",
+    L"--gmock_verbose=info",
+    NULL
+  };
+
+  const wchar_t* new_argv[] = {
+    L"foo.exe",
+    NULL
+  };
+
+  TestInitGoogleMock(argv, new_argv, "info");
+}
+
+TEST(WideInitGoogleMockTest, ParsesUnrecognizedFlag) {
+  const wchar_t* argv[] = {
+    L"foo.exe",
+    L"--non_gmock_flag=blah",
+    NULL
+  };
+
+  const wchar_t* new_argv[] = {
+    L"foo.exe",
+    L"--non_gmock_flag=blah",
+    NULL
+  };
+
+  TestInitGoogleMock(argv, new_argv, GMOCK_FLAG(verbose));
+}
+
+TEST(WideInitGoogleMockTest, ParsesGoogleMockFlagAndUnrecognizedFlag) {
+  const wchar_t* argv[] = {
+    L"foo.exe",
+    L"--non_gmock_flag=blah",
+    L"--gmock_verbose=error",
+    NULL
+  };
+
+  const wchar_t* new_argv[] = {
+    L"foo.exe",
+    L"--non_gmock_flag=blah",
+    NULL
+  };
+
+  TestInitGoogleMock(argv, new_argv, "error");
+}
+
+TEST(WideInitGoogleMockTest, CallsInitGoogleTest) {
+  const int old_init_gtest_count = g_init_gtest_count;
+  const wchar_t* argv[] = {
+    L"foo.exe",
+    L"--non_gmock_flag=blah",
+    L"--gmock_verbose=error",
+    NULL
+  };
+
+  const wchar_t* new_argv[] = {
+    L"foo.exe",
+    L"--non_gmock_flag=blah",
+    NULL
+  };
+
+  TestInitGoogleMock(argv, new_argv, "error");
+  EXPECT_EQ(old_init_gtest_count + 1, g_init_gtest_count);
+}
+
+// Makes sure Google Mock flags can be accessed in code.
+TEST(FlagTest, IsAccessibleInCode) {
+  bool dummy = testing::GMOCK_FLAG(catch_leaked_mocks) &&
+      testing::GMOCK_FLAG(verbose) == "";
+  (void)dummy;  // Avoids the "unused local variable" warning.
+}
diff --git a/google-breakpad/src/testing/test/gmock_test_utils.py b/google-breakpad/src/testing/test/gmock_test_utils.py
new file mode 100755
index 0000000..ac3d67a
--- /dev/null
+++ b/google-breakpad/src/testing/test/gmock_test_utils.py
@@ -0,0 +1,111 @@
+#!/usr/bin/env python
+#
+# Copyright 2006, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+"""Unit test utilities for Google C++ Mocking Framework."""
+
+__author__ = 'wan@google.com (Zhanyong Wan)'
+
+import os
+import sys
+
+
+# Determines path to gtest_test_utils and imports it.
+SCRIPT_DIR = os.path.dirname(__file__) or '.'
+
+# isdir resolves symbolic links.
+gtest_tests_util_dir = os.path.join(SCRIPT_DIR, '../gtest/test')
+if os.path.isdir(gtest_tests_util_dir):
+  GTEST_TESTS_UTIL_DIR = gtest_tests_util_dir
+else:
+  GTEST_TESTS_UTIL_DIR = os.path.join(SCRIPT_DIR, '../../gtest/test')
+
+sys.path.append(GTEST_TESTS_UTIL_DIR)
+import gtest_test_utils  # pylint: disable-msg=C6204
+
+
+def GetSourceDir():
+  """Returns the absolute path of the directory where the .py files are."""
+
+  return gtest_test_utils.GetSourceDir()
+
+
+def GetTestExecutablePath(executable_name):
+  """Returns the absolute path of the test binary given its name.
+
+  The function will print a message and abort the program if the resulting file
+  doesn't exist.
+
+  Args:
+    executable_name: name of the test binary that the test script runs.
+
+  Returns:
+    The absolute path of the test binary.
+  """
+
+  return gtest_test_utils.GetTestExecutablePath(executable_name)
+
+
+def GetExitStatus(exit_code):
+  """Returns the argument to exit(), or -1 if exit() wasn't called.
+
+  Args:
+    exit_code: the result value of os.system(command).
+  """
+
+  if os.name == 'nt':
+    # On Windows, os.WEXITSTATUS() doesn't work and os.system() returns
+    # the argument to exit() directly.
+    return exit_code
+  else:
+    # On Unix, os.WEXITSTATUS() must be used to extract the exit status
+    # from the result of os.system().
+    if os.WIFEXITED(exit_code):
+      return os.WEXITSTATUS(exit_code)
+    else:
+      return -1
+
+
+# Suppresses the "Invalid const name" lint complaint
+# pylint: disable-msg=C6409
+
+# Exposes Subprocess from gtest_test_utils.
+Subprocess = gtest_test_utils.Subprocess
+
+# Exposes TestCase from gtest_test_utils.
+TestCase = gtest_test_utils.TestCase
+
+# pylint: enable-msg=C6409
+
+
+def Main():
+  """Runs the unit test."""
+
+  gtest_test_utils.Main()
diff --git a/google-breakpad/src/third_party/curl/COPYING b/google-breakpad/src/third_party/curl/COPYING
new file mode 100644
index 0000000..610fbdb
--- /dev/null
+++ b/google-breakpad/src/third_party/curl/COPYING
@@ -0,0 +1,22 @@
+COPYRIGHT AND PERMISSION NOTICE
+
+Copyright (c) 1996 - 2011, Daniel Stenberg, <daniel@haxx.se>.
+
+All rights reserved.
+
+Permission to use, copy, modify, and distribute this software for any purpose
+with or without fee is hereby granted, provided that the above copyright
+notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN
+NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
+OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall not
+be used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization of the copyright holder.
+
diff --git a/google-breakpad/src/third_party/curl/curl.h b/google-breakpad/src/third_party/curl/curl.h
new file mode 100644
index 0000000..0d80936
--- /dev/null
+++ b/google-breakpad/src/third_party/curl/curl.h
@@ -0,0 +1,1936 @@
+#ifndef __CURL_CURL_H
+#define __CURL_CURL_H
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2009, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * $Id: curl.h,v 1.396 2009-10-16 13:30:31 yangtse Exp $
+ ***************************************************************************/
+
+/*
+ * If you have libcurl problems, all docs and details are found here:
+ *   http://curl.haxx.se/libcurl/
+ *
+ * curl-library mailing list subscription and unsubscription web interface:
+ *   http://cool.haxx.se/mailman/listinfo/curl-library/
+ */
+
+/*
+ * Leading 'curl' path on the 'curlbuild.h' include statement is
+ * required to properly allow building outside of the source tree,
+ * due to the fact that in this case 'curlbuild.h' is generated in
+ * a subdirectory of the build tree while 'curl.h actually remains
+ * in a subdirectory of the source tree.
+ */
+
+#include "third_party/curl/curlver.h"         /* libcurl version defines   */
+#include "third_party/curl/curlbuild.h"       /* libcurl build definitions */
+#include "third_party/curl/curlrules.h"       /* libcurl rules enforcement */
+
+/*
+ * Define WIN32 when build target is Win32 API
+ */
+
+#if (defined(_WIN32) || defined(__WIN32__)) && \
+     !defined(WIN32) && !defined(__SYMBIAN32__)
+#define WIN32
+#endif
+
+#include <stdio.h>
+#include <limits.h>
+
+/* The include stuff here below is mainly for time_t! */
+#include <sys/types.h>
+#include <time.h>
+
+#if defined(WIN32) && !defined(_WIN32_WCE) && !defined(__GNUC__) && \
+  !defined(__CYGWIN__) || defined(__MINGW32__)
+#if !(defined(_WINSOCKAPI_) || defined(_WINSOCK_H))
+/* The check above prevents the winsock2 inclusion if winsock.h already was
+   included, since they can't co-exist without problems */
+#include <winsock2.h>
+#include <ws2tcpip.h>
+#endif
+#else
+
+/* HP-UX systems version 9, 10 and 11 lack sys/select.h and so does oldish
+   libc5-based Linux systems. Only include it on system that are known to
+   require it! */
+#if defined(_AIX) || defined(__NOVELL_LIBC__) || defined(__NetBSD__) || \
+    defined(__minix) || defined(__SYMBIAN32__) || defined(__INTEGRITY) || \
+    defined(__ANDROID__)
+#include <sys/select.h>
+#endif
+
+#ifndef _WIN32_WCE
+#include <sys/socket.h>
+#endif
+#if !defined(WIN32) && !defined(__WATCOMC__) && !defined(__VXWORKS__)
+#include <sys/time.h>
+#endif
+#include <sys/types.h>
+#endif
+
+#ifdef __BEOS__
+#include <support/SupportDefs.h>
+#endif
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
+typedef void CURL;
+
+/*
+ * Decorate exportable functions for Win32 and Symbian OS DLL linking.
+ * This avoids using a .def file for building libcurl.dll.
+ */
+#if (defined(WIN32) || defined(_WIN32) || defined(__SYMBIAN32__)) && \
+     !defined(CURL_STATICLIB)
+#if defined(BUILDING_LIBCURL)
+#define CURL_EXTERN  __declspec(dllexport)
+#else
+#define CURL_EXTERN  __declspec(dllimport)
+#endif
+#else
+
+#ifdef CURL_HIDDEN_SYMBOLS
+/*
+ * This definition is used to make external definitions visible in the
+ * shared library when symbols are hidden by default.  It makes no
+ * difference when compiling applications whether this is set or not,
+ * only when compiling the library.
+ */
+#define CURL_EXTERN CURL_EXTERN_SYMBOL
+#else
+#define CURL_EXTERN
+#endif
+#endif
+
+#ifndef curl_socket_typedef
+/* socket typedef */
+#ifdef WIN32
+typedef SOCKET curl_socket_t;
+#define CURL_SOCKET_BAD INVALID_SOCKET
+#else
+typedef int curl_socket_t;
+#define CURL_SOCKET_BAD -1
+#endif
+#define curl_socket_typedef
+#endif /* curl_socket_typedef */
+
+struct curl_httppost {
+  struct curl_httppost *next;       /* next entry in the list */
+  char *name;                       /* pointer to allocated name */
+  long namelength;                  /* length of name length */
+  char *contents;                   /* pointer to allocated data contents */
+  long contentslength;              /* length of contents field */
+  char *buffer;                     /* pointer to allocated buffer contents */
+  long bufferlength;                /* length of buffer field */
+  char *contenttype;                /* Content-Type */
+  struct curl_slist* contentheader; /* list of extra headers for this form */
+  struct curl_httppost *more;       /* if one field name has more than one
+                                       file, this link should link to following
+                                       files */
+  long flags;                       /* as defined below */
+#define HTTPPOST_FILENAME (1<<0)    /* specified content is a file name */
+#define HTTPPOST_READFILE (1<<1)    /* specified content is a file name */
+#define HTTPPOST_PTRNAME (1<<2)     /* name is only stored pointer
+                                       do not free in formfree */
+#define HTTPPOST_PTRCONTENTS (1<<3) /* contents is only stored pointer
+                                       do not free in formfree */
+#define HTTPPOST_BUFFER (1<<4)      /* upload file from buffer */
+#define HTTPPOST_PTRBUFFER (1<<5)   /* upload file from pointer contents */
+#define HTTPPOST_CALLBACK (1<<6)    /* upload file contents by using the
+                                       regular read callback to get the data
+                                       and pass the given pointer as custom
+                                       pointer */
+
+  char *showfilename;               /* The file name to show. If not set, the
+                                       actual file name will be used (if this
+                                       is a file part) */
+  void *userp;                      /* custom pointer used for
+                                       HTTPPOST_CALLBACK posts */
+};
+
+typedef int (*curl_progress_callback)(void *clientp,
+                                      double dltotal,
+                                      double dlnow,
+                                      double ultotal,
+                                      double ulnow);
+
+#ifndef CURL_MAX_WRITE_SIZE
+  /* Tests have proven that 20K is a very bad buffer size for uploads on
+     Windows, while 16K for some odd reason performed a lot better.
+     We do the ifndef check to allow this value to easier be changed at build
+     time for those who feel adventurous. */
+#define CURL_MAX_WRITE_SIZE 16384
+#endif
+
+#ifndef CURL_MAX_HTTP_HEADER
+/* The only reason to have a max limit for this is to avoid the risk of a bad
+   server feeding libcurl with a never-ending header that will cause reallocs
+   infinitely */
+#define CURL_MAX_HTTP_HEADER (100*1024)
+#endif
+
+
+/* This is a magic return code for the write callback that, when returned,
+   will signal libcurl to pause receiving on the current transfer. */
+#define CURL_WRITEFUNC_PAUSE 0x10000001
+typedef size_t (*curl_write_callback)(char *buffer,
+                                      size_t size,
+                                      size_t nitems,
+                                      void *outstream);
+
+/* These are the return codes for the seek callbacks */
+#define CURL_SEEKFUNC_OK       0
+#define CURL_SEEKFUNC_FAIL     1 /* fail the entire transfer */
+#define CURL_SEEKFUNC_CANTSEEK 2 /* tell libcurl seeking can't be done, so
+                                    libcurl might try other means instead */
+typedef int (*curl_seek_callback)(void *instream,
+                                  curl_off_t offset,
+                                  int origin); /* 'whence' */
+
+/* This is a return code for the read callback that, when returned, will
+   signal libcurl to immediately abort the current transfer. */
+#define CURL_READFUNC_ABORT 0x10000000
+/* This is a return code for the read callback that, when returned, will
+   signal libcurl to pause sending data on the current transfer. */
+#define CURL_READFUNC_PAUSE 0x10000001
+
+typedef size_t (*curl_read_callback)(char *buffer,
+                                      size_t size,
+                                      size_t nitems,
+                                      void *instream);
+
+typedef enum  {
+  CURLSOCKTYPE_IPCXN, /* socket created for a specific IP connection */
+  CURLSOCKTYPE_LAST   /* never use */
+} curlsocktype;
+
+typedef int (*curl_sockopt_callback)(void *clientp,
+                                     curl_socket_t curlfd,
+                                     curlsocktype purpose);
+
+struct curl_sockaddr {
+  int family;
+  int socktype;
+  int protocol;
+  unsigned int addrlen; /* addrlen was a socklen_t type before 7.18.0 but it
+                           turned really ugly and painful on the systems that
+                           lack this type */
+  struct sockaddr addr;
+};
+
+typedef curl_socket_t
+(*curl_opensocket_callback)(void *clientp,
+                            curlsocktype purpose,
+                            struct curl_sockaddr *address);
+
+#ifndef CURL_NO_OLDIES
+  /* not used since 7.10.8, will be removed in a future release */
+typedef int (*curl_passwd_callback)(void *clientp,
+                                    const char *prompt,
+                                    char *buffer,
+                                    int buflen);
+#endif
+
+typedef enum {
+  CURLIOE_OK,            /* I/O operation successful */
+  CURLIOE_UNKNOWNCMD,    /* command was unknown to callback */
+  CURLIOE_FAILRESTART,   /* failed to restart the read */
+  CURLIOE_LAST           /* never use */
+} curlioerr;
+
+typedef enum  {
+  CURLIOCMD_NOP,         /* no operation */
+  CURLIOCMD_RESTARTREAD, /* restart the read stream from start */
+  CURLIOCMD_LAST         /* never use */
+} curliocmd;
+
+typedef curlioerr (*curl_ioctl_callback)(CURL *handle,
+                                         int cmd,
+                                         void *clientp);
+
+/*
+ * The following typedef's are signatures of malloc, free, realloc, strdup and
+ * calloc respectively.  Function pointers of these types can be passed to the
+ * curl_global_init_mem() function to set user defined memory management
+ * callback routines.
+ */
+typedef void *(*curl_malloc_callback)(size_t size);
+typedef void (*curl_free_callback)(void *ptr);
+typedef void *(*curl_realloc_callback)(void *ptr, size_t size);
+typedef char *(*curl_strdup_callback)(const char *str);
+typedef void *(*curl_calloc_callback)(size_t nmemb, size_t size);
+
+/* the kind of data that is passed to information_callback*/
+typedef enum {
+  CURLINFO_TEXT = 0,
+  CURLINFO_HEADER_IN,    /* 1 */
+  CURLINFO_HEADER_OUT,   /* 2 */
+  CURLINFO_DATA_IN,      /* 3 */
+  CURLINFO_DATA_OUT,     /* 4 */
+  CURLINFO_SSL_DATA_IN,  /* 5 */
+  CURLINFO_SSL_DATA_OUT, /* 6 */
+  CURLINFO_END
+} curl_infotype;
+
+typedef int (*curl_debug_callback)
+       (CURL *handle,      /* the handle/transfer this concerns */
+        curl_infotype type, /* what kind of data */
+        char *data,        /* points to the data */
+        size_t size,       /* size of the data pointed to */
+        void *userptr);    /* whatever the user please */
+
+/* All possible error codes from all sorts of curl functions. Future versions
+   may return other values, stay prepared.
+
+   Always add new return codes last. Never *EVER* remove any. The return
+   codes must remain the same!
+ */
+
+typedef enum {
+  CURLE_OK = 0,
+  CURLE_UNSUPPORTED_PROTOCOL,    /* 1 */
+  CURLE_FAILED_INIT,             /* 2 */
+  CURLE_URL_MALFORMAT,           /* 3 */
+  CURLE_OBSOLETE4,               /* 4 - NOT USED */
+  CURLE_COULDNT_RESOLVE_PROXY,   /* 5 */
+  CURLE_COULDNT_RESOLVE_HOST,    /* 6 */
+  CURLE_COULDNT_CONNECT,         /* 7 */
+  CURLE_FTP_WEIRD_SERVER_REPLY,  /* 8 */
+  CURLE_REMOTE_ACCESS_DENIED,    /* 9 a service was denied by the server
+                                    due to lack of access - when login fails
+                                    this is not returned. */
+  CURLE_OBSOLETE10,              /* 10 - NOT USED */
+  CURLE_FTP_WEIRD_PASS_REPLY,    /* 11 */
+  CURLE_OBSOLETE12,              /* 12 - NOT USED */
+  CURLE_FTP_WEIRD_PASV_REPLY,    /* 13 */
+  CURLE_FTP_WEIRD_227_FORMAT,    /* 14 */
+  CURLE_FTP_CANT_GET_HOST,       /* 15 */
+  CURLE_OBSOLETE16,              /* 16 - NOT USED */
+  CURLE_FTP_COULDNT_SET_TYPE,    /* 17 */
+  CURLE_PARTIAL_FILE,            /* 18 */
+  CURLE_FTP_COULDNT_RETR_FILE,   /* 19 */
+  CURLE_OBSOLETE20,              /* 20 - NOT USED */
+  CURLE_QUOTE_ERROR,             /* 21 - quote command failure */
+  CURLE_HTTP_RETURNED_ERROR,     /* 22 */
+  CURLE_WRITE_ERROR,             /* 23 */
+  CURLE_OBSOLETE24,              /* 24 - NOT USED */
+  CURLE_UPLOAD_FAILED,           /* 25 - failed upload "command" */
+  CURLE_READ_ERROR,              /* 26 - couldn't open/read from file */
+  CURLE_OUT_OF_MEMORY,           /* 27 */
+  /* Note: CURLE_OUT_OF_MEMORY may sometimes indicate a conversion error
+           instead of a memory allocation error if CURL_DOES_CONVERSIONS
+           is defined
+  */
+  CURLE_OPERATION_TIMEDOUT,      /* 28 - the timeout time was reached */
+  CURLE_OBSOLETE29,              /* 29 - NOT USED */
+  CURLE_FTP_PORT_FAILED,         /* 30 - FTP PORT operation failed */
+  CURLE_FTP_COULDNT_USE_REST,    /* 31 - the REST command failed */
+  CURLE_OBSOLETE32,              /* 32 - NOT USED */
+  CURLE_RANGE_ERROR,             /* 33 - RANGE "command" didn't work */
+  CURLE_HTTP_POST_ERROR,         /* 34 */
+  CURLE_SSL_CONNECT_ERROR,       /* 35 - wrong when connecting with SSL */
+  CURLE_BAD_DOWNLOAD_RESUME,     /* 36 - couldn't resume download */
+  CURLE_FILE_COULDNT_READ_FILE,  /* 37 */
+  CURLE_LDAP_CANNOT_BIND,        /* 38 */
+  CURLE_LDAP_SEARCH_FAILED,      /* 39 */
+  CURLE_OBSOLETE40,              /* 40 - NOT USED */
+  CURLE_FUNCTION_NOT_FOUND,      /* 41 */
+  CURLE_ABORTED_BY_CALLBACK,     /* 42 */
+  CURLE_BAD_FUNCTION_ARGUMENT,   /* 43 */
+  CURLE_OBSOLETE44,              /* 44 - NOT USED */
+  CURLE_INTERFACE_FAILED,        /* 45 - CURLOPT_INTERFACE failed */
+  CURLE_OBSOLETE46,              /* 46 - NOT USED */
+  CURLE_TOO_MANY_REDIRECTS ,     /* 47 - catch endless re-direct loops */
+  CURLE_UNKNOWN_TELNET_OPTION,   /* 48 - User specified an unknown option */
+  CURLE_TELNET_OPTION_SYNTAX ,   /* 49 - Malformed telnet option */
+  CURLE_OBSOLETE50,              /* 50 - NOT USED */
+  CURLE_PEER_FAILED_VERIFICATION, /* 51 - peer's certificate or fingerprint
+                                     wasn't verified fine */
+  CURLE_GOT_NOTHING,             /* 52 - when this is a specific error */
+  CURLE_SSL_ENGINE_NOTFOUND,     /* 53 - SSL crypto engine not found */
+  CURLE_SSL_ENGINE_SETFAILED,    /* 54 - can not set SSL crypto engine as
+                                    default */
+  CURLE_SEND_ERROR,              /* 55 - failed sending network data */
+  CURLE_RECV_ERROR,              /* 56 - failure in receiving network data */
+  CURLE_OBSOLETE57,              /* 57 - NOT IN USE */
+  CURLE_SSL_CERTPROBLEM,         /* 58 - problem with the local certificate */
+  CURLE_SSL_CIPHER,              /* 59 - couldn't use specified cipher */
+  CURLE_SSL_CACERT,              /* 60 - problem with the CA cert (path?) */
+  CURLE_BAD_CONTENT_ENCODING,    /* 61 - Unrecognized transfer encoding */
+  CURLE_LDAP_INVALID_URL,        /* 62 - Invalid LDAP URL */
+  CURLE_FILESIZE_EXCEEDED,       /* 63 - Maximum file size exceeded */
+  CURLE_USE_SSL_FAILED,          /* 64 - Requested FTP SSL level failed */
+  CURLE_SEND_FAIL_REWIND,        /* 65 - Sending the data requires a rewind
+                                    that failed */
+  CURLE_SSL_ENGINE_INITFAILED,   /* 66 - failed to initialise ENGINE */
+  CURLE_LOGIN_DENIED,            /* 67 - user, password or similar was not
+                                    accepted and we failed to login */
+  CURLE_TFTP_NOTFOUND,           /* 68 - file not found on server */
+  CURLE_TFTP_PERM,               /* 69 - permission problem on server */
+  CURLE_REMOTE_DISK_FULL,        /* 70 - out of disk space on server */
+  CURLE_TFTP_ILLEGAL,            /* 71 - Illegal TFTP operation */
+  CURLE_TFTP_UNKNOWNID,          /* 72 - Unknown transfer ID */
+  CURLE_REMOTE_FILE_EXISTS,      /* 73 - File already exists */
+  CURLE_TFTP_NOSUCHUSER,         /* 74 - No such user */
+  CURLE_CONV_FAILED,             /* 75 - conversion failed */
+  CURLE_CONV_REQD,               /* 76 - caller must register conversion
+                                    callbacks using curl_easy_setopt options
+                                    CURLOPT_CONV_FROM_NETWORK_FUNCTION,
+                                    CURLOPT_CONV_TO_NETWORK_FUNCTION, and
+                                    CURLOPT_CONV_FROM_UTF8_FUNCTION */
+  CURLE_SSL_CACERT_BADFILE,      /* 77 - could not load CACERT file, missing
+                                    or wrong format */
+  CURLE_REMOTE_FILE_NOT_FOUND,   /* 78 - remote file not found */
+  CURLE_SSH,                     /* 79 - error from the SSH layer, somewhat
+                                    generic so the error message will be of
+                                    interest when this has happened */
+
+  CURLE_SSL_SHUTDOWN_FAILED,     /* 80 - Failed to shut down the SSL
+                                    connection */
+  CURLE_AGAIN,                   /* 81 - socket is not ready for send/recv,
+                                    wait till it's ready and try again (Added
+                                    in 7.18.2) */
+  CURLE_SSL_CRL_BADFILE,         /* 82 - could not load CRL file, missing or
+                                    wrong format (Added in 7.19.0) */
+  CURLE_SSL_ISSUER_ERROR,        /* 83 - Issuer check failed.  (Added in
+                                    7.19.0) */
+  CURL_LAST /* never use! */
+} CURLcode;
+
+#ifndef CURL_NO_OLDIES /* define this to test if your app builds with all
+                          the obsolete stuff removed! */
+
+/* Backwards compatibility with older names */
+
+/* The following were added in 7.17.1 */
+/* These are scheduled to disappear by 2009 */
+#define CURLE_SSL_PEER_CERTIFICATE CURLE_PEER_FAILED_VERIFICATION
+
+/* The following were added in 7.17.0 */
+/* These are scheduled to disappear by 2009 */
+#define CURLE_OBSOLETE CURLE_OBSOLETE50 /* noone should be using this! */
+#define CURLE_BAD_PASSWORD_ENTERED CURLE_OBSOLETE46
+#define CURLE_BAD_CALLING_ORDER CURLE_OBSOLETE44
+#define CURLE_FTP_USER_PASSWORD_INCORRECT CURLE_OBSOLETE10
+#define CURLE_FTP_CANT_RECONNECT CURLE_OBSOLETE16
+#define CURLE_FTP_COULDNT_GET_SIZE CURLE_OBSOLETE32
+#define CURLE_FTP_COULDNT_SET_ASCII CURLE_OBSOLETE29
+#define CURLE_FTP_WEIRD_USER_REPLY CURLE_OBSOLETE12
+#define CURLE_FTP_WRITE_ERROR CURLE_OBSOLETE20
+#define CURLE_LIBRARY_NOT_FOUND CURLE_OBSOLETE40
+#define CURLE_MALFORMAT_USER CURLE_OBSOLETE24
+#define CURLE_SHARE_IN_USE CURLE_OBSOLETE57
+#define CURLE_URL_MALFORMAT_USER CURLE_OBSOLETE4
+
+#define CURLE_FTP_ACCESS_DENIED CURLE_REMOTE_ACCESS_DENIED
+#define CURLE_FTP_COULDNT_SET_BINARY CURLE_FTP_COULDNT_SET_TYPE
+#define CURLE_FTP_QUOTE_ERROR CURLE_QUOTE_ERROR
+#define CURLE_TFTP_DISKFULL CURLE_REMOTE_DISK_FULL
+#define CURLE_TFTP_EXISTS CURLE_REMOTE_FILE_EXISTS
+#define CURLE_HTTP_RANGE_ERROR CURLE_RANGE_ERROR
+#define CURLE_FTP_SSL_FAILED CURLE_USE_SSL_FAILED
+
+/* The following were added earlier */
+
+#define CURLE_OPERATION_TIMEOUTED CURLE_OPERATION_TIMEDOUT
+
+#define CURLE_HTTP_NOT_FOUND CURLE_HTTP_RETURNED_ERROR
+#define CURLE_HTTP_PORT_FAILED CURLE_INTERFACE_FAILED
+#define CURLE_FTP_COULDNT_STOR_FILE CURLE_UPLOAD_FAILED
+
+#define CURLE_FTP_PARTIAL_FILE CURLE_PARTIAL_FILE
+#define CURLE_FTP_BAD_DOWNLOAD_RESUME CURLE_BAD_DOWNLOAD_RESUME
+
+/* This was the error code 50 in 7.7.3 and a few earlier versions, this
+   is no longer used by libcurl but is instead #defined here only to not
+   make programs break */
+#define CURLE_ALREADY_COMPLETE 99999
+
+#endif /*!CURL_NO_OLDIES*/
+
+/* This prototype applies to all conversion callbacks */
+typedef CURLcode (*curl_conv_callback)(char *buffer, size_t length);
+
+typedef CURLcode (*curl_ssl_ctx_callback)(CURL *curl,    /* easy handle */
+                                          void *ssl_ctx, /* actually an
+                                                            OpenSSL SSL_CTX */
+                                          void *userptr);
+
+typedef enum {
+  CURLPROXY_HTTP = 0,   /* added in 7.10, new in 7.19.4 default is to use
+                           CONNECT HTTP/1.1 */
+  CURLPROXY_HTTP_1_0 = 1,   /* added in 7.19.4, force to use CONNECT
+                               HTTP/1.0  */
+  CURLPROXY_SOCKS4 = 4, /* support added in 7.15.2, enum existed already
+                           in 7.10 */
+  CURLPROXY_SOCKS5 = 5, /* added in 7.10 */
+  CURLPROXY_SOCKS4A = 6, /* added in 7.18.0 */
+  CURLPROXY_SOCKS5_HOSTNAME = 7 /* Use the SOCKS5 protocol but pass along the
+                                   host name rather than the IP address. added
+                                   in 7.18.0 */
+} curl_proxytype;  /* this enum was added in 7.10 */
+
+#define CURLAUTH_NONE         0       /* nothing */
+#define CURLAUTH_BASIC        (1<<0)  /* Basic (default) */
+#define CURLAUTH_DIGEST       (1<<1)  /* Digest */
+#define CURLAUTH_GSSNEGOTIATE (1<<2)  /* GSS-Negotiate */
+#define CURLAUTH_NTLM         (1<<3)  /* NTLM */
+#define CURLAUTH_DIGEST_IE    (1<<4)  /* Digest with IE flavour */
+#define CURLAUTH_ANY (~CURLAUTH_DIGEST_IE)  /* all fine types set */
+#define CURLAUTH_ANYSAFE (~(CURLAUTH_BASIC|CURLAUTH_DIGEST_IE))
+
+#define CURLSSH_AUTH_ANY       ~0     /* all types supported by the server */
+#define CURLSSH_AUTH_NONE      0      /* none allowed, silly but complete */
+#define CURLSSH_AUTH_PUBLICKEY (1<<0) /* public/private key files */
+#define CURLSSH_AUTH_PASSWORD  (1<<1) /* password */
+#define CURLSSH_AUTH_HOST      (1<<2) /* host key files */
+#define CURLSSH_AUTH_KEYBOARD  (1<<3) /* keyboard interactive */
+#define CURLSSH_AUTH_DEFAULT CURLSSH_AUTH_ANY
+
+#define CURL_ERROR_SIZE 256
+
+struct curl_khkey {
+  const char *key; /* points to a zero-terminated string encoded with base64
+                      if len is zero, otherwise to the "raw" data */
+  size_t len;
+  enum type {
+    CURLKHTYPE_UNKNOWN,
+    CURLKHTYPE_RSA1,
+    CURLKHTYPE_RSA,
+    CURLKHTYPE_DSS
+  } keytype;
+};
+
+/* this is the set of return values expected from the curl_sshkeycallback
+   callback */
+enum curl_khstat {
+  CURLKHSTAT_FINE_ADD_TO_FILE,
+  CURLKHSTAT_FINE,
+  CURLKHSTAT_REJECT, /* reject the connection, return an error */
+  CURLKHSTAT_DEFER,  /* do not accept it, but we can't answer right now so
+                        this causes a CURLE_DEFER error but otherwise the
+                        connection will be left intact etc */
+  CURLKHSTAT_LAST    /* not for use, only a marker for last-in-list */
+};
+
+/* this is the set of status codes pass in to the callback */
+enum curl_khmatch {
+  CURLKHMATCH_OK,       /* match */
+  CURLKHMATCH_MISMATCH, /* host found, key mismatch! */
+  CURLKHMATCH_MISSING,  /* no matching host/key found */
+  CURLKHMATCH_LAST      /* not for use, only a marker for last-in-list */
+};
+
+typedef int
+  (*curl_sshkeycallback) (CURL *easy,     /* easy handle */
+                          const struct curl_khkey *knownkey, /* known */
+                          const struct curl_khkey *foundkey, /* found */
+                          enum curl_khmatch, /* libcurl's view on the keys */
+                          void *clientp); /* custom pointer passed from app */
+
+/* parameter for the CURLOPT_USE_SSL option */
+typedef enum {
+  CURLUSESSL_NONE,    /* do not attempt to use SSL */
+  CURLUSESSL_TRY,     /* try using SSL, proceed anyway otherwise */
+  CURLUSESSL_CONTROL, /* SSL for the control connection or fail */
+  CURLUSESSL_ALL,     /* SSL for all communication or fail */
+  CURLUSESSL_LAST     /* not an option, never use */
+} curl_usessl;
+
+#ifndef CURL_NO_OLDIES /* define this to test if your app builds with all
+                          the obsolete stuff removed! */
+
+/* Backwards compatibility with older names */
+/* These are scheduled to disappear by 2009 */
+
+#define CURLFTPSSL_NONE CURLUSESSL_NONE
+#define CURLFTPSSL_TRY CURLUSESSL_TRY
+#define CURLFTPSSL_CONTROL CURLUSESSL_CONTROL
+#define CURLFTPSSL_ALL CURLUSESSL_ALL
+#define CURLFTPSSL_LAST CURLUSESSL_LAST
+#define curl_ftpssl curl_usessl
+#endif /*!CURL_NO_OLDIES*/
+
+/* parameter for the CURLOPT_FTP_SSL_CCC option */
+typedef enum {
+  CURLFTPSSL_CCC_NONE,    /* do not send CCC */
+  CURLFTPSSL_CCC_PASSIVE, /* Let the server initiate the shutdown */
+  CURLFTPSSL_CCC_ACTIVE,  /* Initiate the shutdown */
+  CURLFTPSSL_CCC_LAST     /* not an option, never use */
+} curl_ftpccc;
+
+/* parameter for the CURLOPT_FTPSSLAUTH option */
+typedef enum {
+  CURLFTPAUTH_DEFAULT, /* let libcurl decide */
+  CURLFTPAUTH_SSL,     /* use "AUTH SSL" */
+  CURLFTPAUTH_TLS,     /* use "AUTH TLS" */
+  CURLFTPAUTH_LAST /* not an option, never use */
+} curl_ftpauth;
+
+/* parameter for the CURLOPT_FTP_CREATE_MISSING_DIRS option */
+typedef enum {
+  CURLFTP_CREATE_DIR_NONE,  /* do NOT create missing dirs! */
+  CURLFTP_CREATE_DIR,       /* (FTP/SFTP) if CWD fails, try MKD and then CWD
+                               again if MKD succeeded, for SFTP this does
+                               similar magic */
+  CURLFTP_CREATE_DIR_RETRY, /* (FTP only) if CWD fails, try MKD and then CWD
+                               again even if MKD failed! */
+  CURLFTP_CREATE_DIR_LAST   /* not an option, never use */
+} curl_ftpcreatedir;
+
+/* parameter for the CURLOPT_FTP_FILEMETHOD option */
+typedef enum {
+  CURLFTPMETHOD_DEFAULT,   /* let libcurl pick */
+  CURLFTPMETHOD_MULTICWD,  /* single CWD operation for each path part */
+  CURLFTPMETHOD_NOCWD,     /* no CWD at all */
+  CURLFTPMETHOD_SINGLECWD, /* one CWD to full dir, then work on file */
+  CURLFTPMETHOD_LAST       /* not an option, never use */
+} curl_ftpmethod;
+
+/* CURLPROTO_ defines are for the CURLOPT_*PROTOCOLS options */
+#define CURLPROTO_HTTP   (1<<0)
+#define CURLPROTO_HTTPS  (1<<1)
+#define CURLPROTO_FTP    (1<<2)
+#define CURLPROTO_FTPS   (1<<3)
+#define CURLPROTO_SCP    (1<<4)
+#define CURLPROTO_SFTP   (1<<5)
+#define CURLPROTO_TELNET (1<<6)
+#define CURLPROTO_LDAP   (1<<7)
+#define CURLPROTO_LDAPS  (1<<8)
+#define CURLPROTO_DICT   (1<<9)
+#define CURLPROTO_FILE   (1<<10)
+#define CURLPROTO_TFTP   (1<<11)
+#define CURLPROTO_ALL    (~0) /* enable everything */
+
+/* long may be 32 or 64 bits, but we should never depend on anything else
+   but 32 */
+#define CURLOPTTYPE_LONG          0
+#define CURLOPTTYPE_OBJECTPOINT   10000
+#define CURLOPTTYPE_FUNCTIONPOINT 20000
+#define CURLOPTTYPE_OFF_T         30000
+
+/* name is uppercase CURLOPT_<name>,
+   type is one of the defined CURLOPTTYPE_<type>
+   number is unique identifier */
+#ifdef CINIT
+#undef CINIT
+#endif
+
+#ifdef CURL_ISOCPP
+#define CINIT(name,type,number) CURLOPT_ ## name = CURLOPTTYPE_ ## type + number
+#else
+/* The macro "##" is ISO C, we assume pre-ISO C doesn't support it. */
+#define LONG          CURLOPTTYPE_LONG
+#define OBJECTPOINT   CURLOPTTYPE_OBJECTPOINT
+#define FUNCTIONPOINT CURLOPTTYPE_FUNCTIONPOINT
+#define OFF_T         CURLOPTTYPE_OFF_T
+#define CINIT(name,type,number) CURLOPT_/**/name = type + number
+#endif
+
+/*
+ * This macro-mania below setups the CURLOPT_[what] enum, to be used with
+ * curl_easy_setopt(). The first argument in the CINIT() macro is the [what]
+ * word.
+ */
+
+typedef enum {
+  /* This is the FILE * or void * the regular output should be written to. */
+  CINIT(FILE, OBJECTPOINT, 1),
+
+  /* The full URL to get/put */
+  CINIT(URL,  OBJECTPOINT, 2),
+
+  /* Port number to connect to, if other than default. */
+  CINIT(PORT, LONG, 3),
+
+  /* Name of proxy to use. */
+  CINIT(PROXY, OBJECTPOINT, 4),
+
+  /* "name:password" to use when fetching. */
+  CINIT(USERPWD, OBJECTPOINT, 5),
+
+  /* "name:password" to use with proxy. */
+  CINIT(PROXYUSERPWD, OBJECTPOINT, 6),
+
+  /* Range to get, specified as an ASCII string. */
+  CINIT(RANGE, OBJECTPOINT, 7),
+
+  /* not used */
+
+  /* Specified file stream to upload from (use as input): */
+  CINIT(INFILE, OBJECTPOINT, 9),
+
+  /* Buffer to receive error messages in, must be at least CURL_ERROR_SIZE
+   * bytes big. If this is not used, error messages go to stderr instead: */
+  CINIT(ERRORBUFFER, OBJECTPOINT, 10),
+
+  /* Function that will be called to store the output (instead of fwrite). The
+   * parameters will use fwrite() syntax, make sure to follow them. */
+  CINIT(WRITEFUNCTION, FUNCTIONPOINT, 11),
+
+  /* Function that will be called to read the input (instead of fread). The
+   * parameters will use fread() syntax, make sure to follow them. */
+  CINIT(READFUNCTION, FUNCTIONPOINT, 12),
+
+  /* Time-out the read operation after this amount of seconds */
+  CINIT(TIMEOUT, LONG, 13),
+
+  /* If the CURLOPT_INFILE is used, this can be used to inform libcurl about
+   * how large the file being sent really is. That allows better error
+   * checking and better verifies that the upload was successful. -1 means
+   * unknown size.
+   *
+   * For large file support, there is also a _LARGE version of the key
+   * which takes an off_t type, allowing platforms with larger off_t
+   * sizes to handle larger files.  See below for INFILESIZE_LARGE.
+   */
+  CINIT(INFILESIZE, LONG, 14),
+
+  /* POST static input fields. */
+  CINIT(POSTFIELDS, OBJECTPOINT, 15),
+
+  /* Set the referrer page (needed by some CGIs) */
+  CINIT(REFERER, OBJECTPOINT, 16),
+
+  /* Set the FTP PORT string (interface name, named or numerical IP address)
+     Use i.e '-' to use default address. */
+  CINIT(FTPPORT, OBJECTPOINT, 17),
+
+  /* Set the User-Agent string (examined by some CGIs) */
+  CINIT(USERAGENT, OBJECTPOINT, 18),
+
+  /* If the download receives less than "low speed limit" bytes/second
+   * during "low speed time" seconds, the operations is aborted.
+   * You could i.e if you have a pretty high speed connection, abort if
+   * it is less than 2000 bytes/sec during 20 seconds.
+   */
+
+  /* Set the "low speed limit" */
+  CINIT(LOW_SPEED_LIMIT, LONG, 19),
+
+  /* Set the "low speed time" */
+  CINIT(LOW_SPEED_TIME, LONG, 20),
+
+  /* Set the continuation offset.
+   *
+   * Note there is also a _LARGE version of this key which uses
+   * off_t types, allowing for large file offsets on platforms which
+   * use larger-than-32-bit off_t's.  Look below for RESUME_FROM_LARGE.
+   */
+  CINIT(RESUME_FROM, LONG, 21),
+
+  /* Set cookie in request: */
+  CINIT(COOKIE, OBJECTPOINT, 22),
+
+  /* This points to a linked list of headers, struct curl_slist kind */
+  CINIT(HTTPHEADER, OBJECTPOINT, 23),
+
+  /* This points to a linked list of post entries, struct curl_httppost */
+  CINIT(HTTPPOST, OBJECTPOINT, 24),
+
+  /* name of the file keeping your private SSL-certificate */
+  CINIT(SSLCERT, OBJECTPOINT, 25),
+
+  /* password for the SSL or SSH private key */
+  CINIT(KEYPASSWD, OBJECTPOINT, 26),
+
+  /* send TYPE parameter? */
+  CINIT(CRLF, LONG, 27),
+
+  /* send linked-list of QUOTE commands */
+  CINIT(QUOTE, OBJECTPOINT, 28),
+
+  /* send FILE * or void * to store headers to, if you use a callback it
+     is simply passed to the callback unmodified */
+  CINIT(WRITEHEADER, OBJECTPOINT, 29),
+
+  /* point to a file to read the initial cookies from, also enables
+     "cookie awareness" */
+  CINIT(COOKIEFILE, OBJECTPOINT, 31),
+
+  /* What version to specifically try to use.
+     See CURL_SSLVERSION defines below. */
+  CINIT(SSLVERSION, LONG, 32),
+
+  /* What kind of HTTP time condition to use, see defines */
+  CINIT(TIMECONDITION, LONG, 33),
+
+  /* Time to use with the above condition. Specified in number of seconds
+     since 1 Jan 1970 */
+  CINIT(TIMEVALUE, LONG, 34),
+
+  /* 35 = OBSOLETE */
+
+  /* Custom request, for customizing the get command like
+     HTTP: DELETE, TRACE and others
+     FTP: to use a different list command
+     */
+  CINIT(CUSTOMREQUEST, OBJECTPOINT, 36),
+
+  /* HTTP request, for odd commands like DELETE, TRACE and others */
+  CINIT(STDERR, OBJECTPOINT, 37),
+
+  /* 38 is not used */
+
+  /* send linked-list of post-transfer QUOTE commands */
+  CINIT(POSTQUOTE, OBJECTPOINT, 39),
+
+  /* Pass a pointer to string of the output using full variable-replacement
+     as described elsewhere. */
+  CINIT(WRITEINFO, OBJECTPOINT, 40),
+
+  CINIT(VERBOSE, LONG, 41),      /* talk a lot */
+  CINIT(HEADER, LONG, 42),       /* throw the header out too */
+  CINIT(NOPROGRESS, LONG, 43),   /* shut off the progress meter */
+  CINIT(NOBODY, LONG, 44),       /* use HEAD to get http document */
+  CINIT(FAILONERROR, LONG, 45),  /* no output on http error codes >= 300 */
+  CINIT(UPLOAD, LONG, 46),       /* this is an upload */
+  CINIT(POST, LONG, 47),         /* HTTP POST method */
+  CINIT(DIRLISTONLY, LONG, 48),  /* return bare names when listing directories */
+
+  CINIT(APPEND, LONG, 50),       /* Append instead of overwrite on upload! */
+
+  /* Specify whether to read the user+password from the .netrc or the URL.
+   * This must be one of the CURL_NETRC_* enums below. */
+  CINIT(NETRC, LONG, 51),
+
+  CINIT(FOLLOWLOCATION, LONG, 52),  /* use Location: Luke! */
+
+  CINIT(TRANSFERTEXT, LONG, 53), /* transfer data in text/ASCII format */
+  CINIT(PUT, LONG, 54),          /* HTTP PUT */
+
+  /* 55 = OBSOLETE */
+
+  /* Function that will be called instead of the internal progress display
+   * function. This function should be defined as the curl_progress_callback
+   * prototype defines. */
+  CINIT(PROGRESSFUNCTION, FUNCTIONPOINT, 56),
+
+  /* Data passed to the progress callback */
+  CINIT(PROGRESSDATA, OBJECTPOINT, 57),
+
+  /* We want the referrer field set automatically when following locations */
+  CINIT(AUTOREFERER, LONG, 58),
+
+  /* Port of the proxy, can be set in the proxy string as well with:
+     "[host]:[port]" */
+  CINIT(PROXYPORT, LONG, 59),
+
+  /* size of the POST input data, if strlen() is not good to use */
+  CINIT(POSTFIELDSIZE, LONG, 60),
+
+  /* tunnel non-http operations through a HTTP proxy */
+  CINIT(HTTPPROXYTUNNEL, LONG, 61),
+
+  /* Set the interface string to use as outgoing network interface */
+  CINIT(INTERFACE, OBJECTPOINT, 62),
+
+  /* Set the krb4/5 security level, this also enables krb4/5 awareness.  This
+   * is a string, 'clear', 'safe', 'confidential' or 'private'.  If the string
+   * is set but doesn't match one of these, 'private' will be used.  */
+  CINIT(KRBLEVEL, OBJECTPOINT, 63),
+
+  /* Set if we should verify the peer in ssl handshake, set 1 to verify. */
+  CINIT(SSL_VERIFYPEER, LONG, 64),
+
+  /* The CApath or CAfile used to validate the peer certificate
+     this option is used only if SSL_VERIFYPEER is true */
+  CINIT(CAINFO, OBJECTPOINT, 65),
+
+  /* 66 = OBSOLETE */
+  /* 67 = OBSOLETE */
+
+  /* Maximum number of http redirects to follow */
+  CINIT(MAXREDIRS, LONG, 68),
+
+  /* Pass a long set to 1 to get the date of the requested document (if
+     possible)! Pass a zero to shut it off. */
+  CINIT(FILETIME, LONG, 69),
+
+  /* This points to a linked list of telnet options */
+  CINIT(TELNETOPTIONS, OBJECTPOINT, 70),
+
+  /* Max amount of cached alive connections */
+  CINIT(MAXCONNECTS, LONG, 71),
+
+  /* What policy to use when closing connections when the cache is filled
+     up */
+  CINIT(CLOSEPOLICY, LONG, 72),
+
+  /* 73 = OBSOLETE */
+
+  /* Set to explicitly use a new connection for the upcoming transfer.
+     Do not use this unless you're absolutely sure of this, as it makes the
+     operation slower and is less friendly for the network. */
+  CINIT(FRESH_CONNECT, LONG, 74),
+
+  /* Set to explicitly forbid the upcoming transfer's connection to be re-used
+     when done. Do not use this unless you're absolutely sure of this, as it
+     makes the operation slower and is less friendly for the network. */
+  CINIT(FORBID_REUSE, LONG, 75),
+
+  /* Set to a file name that contains random data for libcurl to use to
+     seed the random engine when doing SSL connects. */
+  CINIT(RANDOM_FILE, OBJECTPOINT, 76),
+
+  /* Set to the Entropy Gathering Daemon socket pathname */
+  CINIT(EGDSOCKET, OBJECTPOINT, 77),
+
+  /* Time-out connect operations after this amount of seconds, if connects
+     are OK within this time, then fine... This only aborts the connect
+     phase. [Only works on unix-style/SIGALRM operating systems] */
+  CINIT(CONNECTTIMEOUT, LONG, 78),
+
+  /* Function that will be called to store headers (instead of fwrite). The
+   * parameters will use fwrite() syntax, make sure to follow them. */
+  CINIT(HEADERFUNCTION, FUNCTIONPOINT, 79),
+
+  /* Set this to force the HTTP request to get back to GET. Only really usable
+     if POST, PUT or a custom request have been used first.
+   */
+  CINIT(HTTPGET, LONG, 80),
+
+  /* Set if we should verify the Common name from the peer certificate in ssl
+   * handshake, set 1 to check existence, 2 to ensure that it matches the
+   * provided hostname. */
+  CINIT(SSL_VERIFYHOST, LONG, 81),
+
+  /* Specify which file name to write all known cookies in after completed
+     operation. Set file name to "-" (dash) to make it go to stdout. */
+  CINIT(COOKIEJAR, OBJECTPOINT, 82),
+
+  /* Specify which SSL ciphers to use */
+  CINIT(SSL_CIPHER_LIST, OBJECTPOINT, 83),
+
+  /* Specify which HTTP version to use! This must be set to one of the
+     CURL_HTTP_VERSION* enums set below. */
+  CINIT(HTTP_VERSION, LONG, 84),
+
+  /* Specifically switch on or off the FTP engine's use of the EPSV command. By
+     default, that one will always be attempted before the more traditional
+     PASV command. */
+  CINIT(FTP_USE_EPSV, LONG, 85),
+
+  /* type of the file keeping your SSL-certificate ("DER", "PEM", "ENG") */
+  CINIT(SSLCERTTYPE, OBJECTPOINT, 86),
+
+  /* name of the file keeping your private SSL-key */
+  CINIT(SSLKEY, OBJECTPOINT, 87),
+
+  /* type of the file keeping your private SSL-key ("DER", "PEM", "ENG") */
+  CINIT(SSLKEYTYPE, OBJECTPOINT, 88),
+
+  /* crypto engine for the SSL-sub system */
+  CINIT(SSLENGINE, OBJECTPOINT, 89),
+
+  /* set the crypto engine for the SSL-sub system as default
+     the param has no meaning...
+   */
+  CINIT(SSLENGINE_DEFAULT, LONG, 90),
+
+  /* Non-zero value means to use the global dns cache */
+  CINIT(DNS_USE_GLOBAL_CACHE, LONG, 91), /* To become OBSOLETE soon */
+
+  /* DNS cache timeout */
+  CINIT(DNS_CACHE_TIMEOUT, LONG, 92),
+
+  /* send linked-list of pre-transfer QUOTE commands */
+  CINIT(PREQUOTE, OBJECTPOINT, 93),
+
+  /* set the debug function */
+  CINIT(DEBUGFUNCTION, FUNCTIONPOINT, 94),
+
+  /* set the data for the debug function */
+  CINIT(DEBUGDATA, OBJECTPOINT, 95),
+
+  /* mark this as start of a cookie session */
+  CINIT(COOKIESESSION, LONG, 96),
+
+  /* The CApath directory used to validate the peer certificate
+     this option is used only if SSL_VERIFYPEER is true */
+  CINIT(CAPATH, OBJECTPOINT, 97),
+
+  /* Instruct libcurl to use a smaller receive buffer */
+  CINIT(BUFFERSIZE, LONG, 98),
+
+  /* Instruct libcurl to not use any signal/alarm handlers, even when using
+     timeouts. This option is useful for multi-threaded applications.
+     See libcurl-the-guide for more background information. */
+  CINIT(NOSIGNAL, LONG, 99),
+
+  /* Provide a CURLShare for mutexing non-ts data */
+  CINIT(SHARE, OBJECTPOINT, 100),
+
+  /* indicates type of proxy. accepted values are CURLPROXY_HTTP (default),
+     CURLPROXY_SOCKS4, CURLPROXY_SOCKS4A and CURLPROXY_SOCKS5. */
+  CINIT(PROXYTYPE, LONG, 101),
+
+  /* Set the Accept-Encoding string. Use this to tell a server you would like
+     the response to be compressed. */
+  CINIT(ENCODING, OBJECTPOINT, 102),
+
+  /* Set pointer to private data */
+  CINIT(PRIVATE, OBJECTPOINT, 103),
+
+  /* Set aliases for HTTP 200 in the HTTP Response header */
+  CINIT(HTTP200ALIASES, OBJECTPOINT, 104),
+
+  /* Continue to send authentication (user+password) when following locations,
+     even when hostname changed. This can potentially send off the name
+     and password to whatever host the server decides. */
+  CINIT(UNRESTRICTED_AUTH, LONG, 105),
+
+  /* Specifically switch on or off the FTP engine's use of the EPRT command ( it
+     also disables the LPRT attempt). By default, those ones will always be
+     attempted before the good old traditional PORT command. */
+  CINIT(FTP_USE_EPRT, LONG, 106),
+
+  /* Set this to a bitmask value to enable the particular authentications
+     methods you like. Use this in combination with CURLOPT_USERPWD.
+     Note that setting multiple bits may cause extra network round-trips. */
+  CINIT(HTTPAUTH, LONG, 107),
+
+  /* Set the ssl context callback function, currently only for OpenSSL ssl_ctx
+     in second argument. The function must be matching the
+     curl_ssl_ctx_callback proto. */
+  CINIT(SSL_CTX_FUNCTION, FUNCTIONPOINT, 108),
+
+  /* Set the userdata for the ssl context callback function's third
+     argument */
+  CINIT(SSL_CTX_DATA, OBJECTPOINT, 109),
+
+  /* FTP Option that causes missing dirs to be created on the remote server.
+     In 7.19.4 we introduced the convenience enums for this option using the
+     CURLFTP_CREATE_DIR prefix.
+  */
+  CINIT(FTP_CREATE_MISSING_DIRS, LONG, 110),
+
+  /* Set this to a bitmask value to enable the particular authentications
+     methods you like. Use this in combination with CURLOPT_PROXYUSERPWD.
+     Note that setting multiple bits may cause extra network round-trips. */
+  CINIT(PROXYAUTH, LONG, 111),
+
+  /* FTP option that changes the timeout, in seconds, associated with
+     getting a response.  This is different from transfer timeout time and
+     essentially places a demand on the FTP server to acknowledge commands
+     in a timely manner. */
+  CINIT(FTP_RESPONSE_TIMEOUT, LONG, 112),
+
+  /* Set this option to one of the CURL_IPRESOLVE_* defines (see below) to
+     tell libcurl to resolve names to those IP versions only. This only has
+     affect on systems with support for more than one, i.e IPv4 _and_ IPv6. */
+  CINIT(IPRESOLVE, LONG, 113),
+
+  /* Set this option to limit the size of a file that will be downloaded from
+     an HTTP or FTP server.
+
+     Note there is also _LARGE version which adds large file support for
+     platforms which have larger off_t sizes.  See MAXFILESIZE_LARGE below. */
+  CINIT(MAXFILESIZE, LONG, 114),
+
+  /* See the comment for INFILESIZE above, but in short, specifies
+   * the size of the file being uploaded.  -1 means unknown.
+   */
+  CINIT(INFILESIZE_LARGE, OFF_T, 115),
+
+  /* Sets the continuation offset.  There is also a LONG version of this;
+   * look above for RESUME_FROM.
+   */
+  CINIT(RESUME_FROM_LARGE, OFF_T, 116),
+
+  /* Sets the maximum size of data that will be downloaded from
+   * an HTTP or FTP server.  See MAXFILESIZE above for the LONG version.
+   */
+  CINIT(MAXFILESIZE_LARGE, OFF_T, 117),
+
+  /* Set this option to the file name of your .netrc file you want libcurl
+     to parse (using the CURLOPT_NETRC option). If not set, libcurl will do
+     a poor attempt to find the user's home directory and check for a .netrc
+     file in there. */
+  CINIT(NETRC_FILE, OBJECTPOINT, 118),
+
+  /* Enable SSL/TLS for FTP, pick one of:
+     CURLFTPSSL_TRY     - try using SSL, proceed anyway otherwise
+     CURLFTPSSL_CONTROL - SSL for the control connection or fail
+     CURLFTPSSL_ALL     - SSL for all communication or fail
+  */
+  CINIT(USE_SSL, LONG, 119),
+
+  /* The _LARGE version of the standard POSTFIELDSIZE option */
+  CINIT(POSTFIELDSIZE_LARGE, OFF_T, 120),
+
+  /* Enable/disable the TCP Nagle algorithm */
+  CINIT(TCP_NODELAY, LONG, 121),
+
+  /* 122 OBSOLETE, used in 7.12.3. Gone in 7.13.0 */
+  /* 123 OBSOLETE. Gone in 7.16.0 */
+  /* 124 OBSOLETE, used in 7.12.3. Gone in 7.13.0 */
+  /* 125 OBSOLETE, used in 7.12.3. Gone in 7.13.0 */
+  /* 126 OBSOLETE, used in 7.12.3. Gone in 7.13.0 */
+  /* 127 OBSOLETE. Gone in 7.16.0 */
+  /* 128 OBSOLETE. Gone in 7.16.0 */
+
+  /* When FTP over SSL/TLS is selected (with CURLOPT_USE_SSL), this option
+     can be used to change libcurl's default action which is to first try
+     "AUTH SSL" and then "AUTH TLS" in this order, and proceed when a OK
+     response has been received.
+
+     Available parameters are:
+     CURLFTPAUTH_DEFAULT - let libcurl decide
+     CURLFTPAUTH_SSL     - try "AUTH SSL" first, then TLS
+     CURLFTPAUTH_TLS     - try "AUTH TLS" first, then SSL
+  */
+  CINIT(FTPSSLAUTH, LONG, 129),
+
+  CINIT(IOCTLFUNCTION, FUNCTIONPOINT, 130),
+  CINIT(IOCTLDATA, OBJECTPOINT, 131),
+
+  /* 132 OBSOLETE. Gone in 7.16.0 */
+  /* 133 OBSOLETE. Gone in 7.16.0 */
+
+  /* zero terminated string for pass on to the FTP server when asked for
+     "account" info */
+  CINIT(FTP_ACCOUNT, OBJECTPOINT, 134),
+
+  /* feed cookies into cookie engine */
+  CINIT(COOKIELIST, OBJECTPOINT, 135),
+
+  /* ignore Content-Length */
+  CINIT(IGNORE_CONTENT_LENGTH, LONG, 136),
+
+  /* Set to non-zero to skip the IP address received in a 227 PASV FTP server
+     response. Typically used for FTP-SSL purposes but is not restricted to
+     that. libcurl will then instead use the same IP address it used for the
+     control connection. */
+  CINIT(FTP_SKIP_PASV_IP, LONG, 137),
+
+  /* Select "file method" to use when doing FTP, see the curl_ftpmethod
+     above. */
+  CINIT(FTP_FILEMETHOD, LONG, 138),
+
+  /* Local port number to bind the socket to */
+  CINIT(LOCALPORT, LONG, 139),
+
+  /* Number of ports to try, including the first one set with LOCALPORT.
+     Thus, setting it to 1 will make no additional attempts but the first.
+  */
+  CINIT(LOCALPORTRANGE, LONG, 140),
+
+  /* no transfer, set up connection and let application use the socket by
+     extracting it with CURLINFO_LASTSOCKET */
+  CINIT(CONNECT_ONLY, LONG, 141),
+
+  /* Function that will be called to convert from the
+     network encoding (instead of using the iconv calls in libcurl) */
+  CINIT(CONV_FROM_NETWORK_FUNCTION, FUNCTIONPOINT, 142),
+
+  /* Function that will be called to convert to the
+     network encoding (instead of using the iconv calls in libcurl) */
+  CINIT(CONV_TO_NETWORK_FUNCTION, FUNCTIONPOINT, 143),
+
+  /* Function that will be called to convert from UTF8
+     (instead of using the iconv calls in libcurl)
+     Note that this is used only for SSL certificate processing */
+  CINIT(CONV_FROM_UTF8_FUNCTION, FUNCTIONPOINT, 144),
+
+  /* if the connection proceeds too quickly then need to slow it down */
+  /* limit-rate: maximum number of bytes per second to send or receive */
+  CINIT(MAX_SEND_SPEED_LARGE, OFF_T, 145),
+  CINIT(MAX_RECV_SPEED_LARGE, OFF_T, 146),
+
+  /* Pointer to command string to send if USER/PASS fails. */
+  CINIT(FTP_ALTERNATIVE_TO_USER, OBJECTPOINT, 147),
+
+  /* callback function for setting socket options */
+  CINIT(SOCKOPTFUNCTION, FUNCTIONPOINT, 148),
+  CINIT(SOCKOPTDATA, OBJECTPOINT, 149),
+
+  /* set to 0 to disable session ID re-use for this transfer, default is
+     enabled (== 1) */
+  CINIT(SSL_SESSIONID_CACHE, LONG, 150),
+
+  /* allowed SSH authentication methods */
+  CINIT(SSH_AUTH_TYPES, LONG, 151),
+
+  /* Used by scp/sftp to do public/private key authentication */
+  CINIT(SSH_PUBLIC_KEYFILE, OBJECTPOINT, 152),
+  CINIT(SSH_PRIVATE_KEYFILE, OBJECTPOINT, 153),
+
+  /* Send CCC (Clear Command Channel) after authentication */
+  CINIT(FTP_SSL_CCC, LONG, 154),
+
+  /* Same as TIMEOUT and CONNECTTIMEOUT, but with ms resolution */
+  CINIT(TIMEOUT_MS, LONG, 155),
+  CINIT(CONNECTTIMEOUT_MS, LONG, 156),
+
+  /* set to zero to disable the libcurl's decoding and thus pass the raw body
+     data to the application even when it is encoded/compressed */
+  CINIT(HTTP_TRANSFER_DECODING, LONG, 157),
+  CINIT(HTTP_CONTENT_DECODING, LONG, 158),
+
+  /* Permission used when creating new files and directories on the remote
+     server for protocols that support it, SFTP/SCP/FILE */
+  CINIT(NEW_FILE_PERMS, LONG, 159),
+  CINIT(NEW_DIRECTORY_PERMS, LONG, 160),
+
+  /* Set the behaviour of POST when redirecting. Values must be set to one
+     of CURL_REDIR* defines below. This used to be called CURLOPT_POST301 */
+  CINIT(POSTREDIR, LONG, 161),
+
+  /* used by scp/sftp to verify the host's public key */
+  CINIT(SSH_HOST_PUBLIC_KEY_MD5, OBJECTPOINT, 162),
+
+  /* Callback function for opening socket (instead of socket(2)). Optionally,
+     callback is able change the address or refuse to connect returning
+     CURL_SOCKET_BAD.  The callback should have type
+     curl_opensocket_callback */
+  CINIT(OPENSOCKETFUNCTION, FUNCTIONPOINT, 163),
+  CINIT(OPENSOCKETDATA, OBJECTPOINT, 164),
+
+  /* POST volatile input fields. */
+  CINIT(COPYPOSTFIELDS, OBJECTPOINT, 165),
+
+  /* set transfer mode (;type=<a|i>) when doing FTP via an HTTP proxy */
+  CINIT(PROXY_TRANSFER_MODE, LONG, 166),
+
+  /* Callback function for seeking in the input stream */
+  CINIT(SEEKFUNCTION, FUNCTIONPOINT, 167),
+  CINIT(SEEKDATA, OBJECTPOINT, 168),
+
+  /* CRL file */
+  CINIT(CRLFILE, OBJECTPOINT, 169),
+
+  /* Issuer certificate */
+  CINIT(ISSUERCERT, OBJECTPOINT, 170),
+
+  /* (IPv6) Address scope */
+  CINIT(ADDRESS_SCOPE, LONG, 171),
+
+  /* Collect certificate chain info and allow it to get retrievable with
+     CURLINFO_CERTINFO after the transfer is complete. (Unfortunately) only
+     working with OpenSSL-powered builds. */
+  CINIT(CERTINFO, LONG, 172),
+
+  /* "name" and "pwd" to use when fetching. */
+  CINIT(USERNAME, OBJECTPOINT, 173),
+  CINIT(PASSWORD, OBJECTPOINT, 174),
+
+    /* "name" and "pwd" to use with Proxy when fetching. */
+  CINIT(PROXYUSERNAME, OBJECTPOINT, 175),
+  CINIT(PROXYPASSWORD, OBJECTPOINT, 176),
+
+  /* Comma separated list of hostnames defining no-proxy zones. These should
+     match both hostnames directly, and hostnames within a domain. For
+     example, local.com will match local.com and www.local.com, but NOT
+     notlocal.com or www.notlocal.com. For compatibility with other
+     implementations of this, .local.com will be considered to be the same as
+     local.com. A single * is the only valid wildcard, and effectively
+     disables the use of proxy. */
+  CINIT(NOPROXY, OBJECTPOINT, 177),
+
+  /* block size for TFTP transfers */
+  CINIT(TFTP_BLKSIZE, LONG, 178),
+
+  /* Socks Service */
+  CINIT(SOCKS5_GSSAPI_SERVICE, OBJECTPOINT, 179),
+
+  /* Socks Service */
+  CINIT(SOCKS5_GSSAPI_NEC, LONG, 180),
+
+  /* set the bitmask for the protocols that are allowed to be used for the
+     transfer, which thus helps the app which takes URLs from users or other
+     external inputs and want to restrict what protocol(s) to deal
+     with. Defaults to CURLPROTO_ALL. */
+  CINIT(PROTOCOLS, LONG, 181),
+
+  /* set the bitmask for the protocols that libcurl is allowed to follow to,
+     as a subset of the CURLOPT_PROTOCOLS ones. That means the protocol needs
+     to be set in both bitmasks to be allowed to get redirected to. Defaults
+     to all protocols except FILE and SCP. */
+  CINIT(REDIR_PROTOCOLS, LONG, 182),
+
+  /* set the SSH knownhost file name to use */
+  CINIT(SSH_KNOWNHOSTS, OBJECTPOINT, 183),
+
+  /* set the SSH host key callback, must point to a curl_sshkeycallback
+     function */
+  CINIT(SSH_KEYFUNCTION, FUNCTIONPOINT, 184),
+
+  /* set the SSH host key callback custom pointer */
+  CINIT(SSH_KEYDATA, OBJECTPOINT, 185),
+
+  CURLOPT_LASTENTRY /* the last unused */
+} CURLoption;
+
+#ifndef CURL_NO_OLDIES /* define this to test if your app builds with all
+                          the obsolete stuff removed! */
+
+/* Backwards compatibility with older names */
+/* These are scheduled to disappear by 2011 */
+
+/* This was added in version 7.19.1 */
+#define CURLOPT_POST301 CURLOPT_POSTREDIR
+
+/* These are scheduled to disappear by 2009 */
+
+/* The following were added in 7.17.0 */
+#define CURLOPT_SSLKEYPASSWD CURLOPT_KEYPASSWD
+#define CURLOPT_FTPAPPEND CURLOPT_APPEND
+#define CURLOPT_FTPLISTONLY CURLOPT_DIRLISTONLY
+#define CURLOPT_FTP_SSL CURLOPT_USE_SSL
+
+/* The following were added earlier */
+
+#define CURLOPT_SSLCERTPASSWD CURLOPT_KEYPASSWD
+#define CURLOPT_KRB4LEVEL CURLOPT_KRBLEVEL
+
+#else
+/* This is set if CURL_NO_OLDIES is defined at compile-time */
+#undef CURLOPT_DNS_USE_GLOBAL_CACHE /* soon obsolete */
+#endif
+
+
+  /* Below here follows defines for the CURLOPT_IPRESOLVE option. If a host
+     name resolves addresses using more than one IP protocol version, this
+     option might be handy to force libcurl to use a specific IP version. */
+#define CURL_IPRESOLVE_WHATEVER 0 /* default, resolves addresses to all IP
+                                     versions that your system allows */
+#define CURL_IPRESOLVE_V4       1 /* resolve to ipv4 addresses */
+#define CURL_IPRESOLVE_V6       2 /* resolve to ipv6 addresses */
+
+  /* three convenient "aliases" that follow the name scheme better */
+#define CURLOPT_WRITEDATA CURLOPT_FILE
+#define CURLOPT_READDATA  CURLOPT_INFILE
+#define CURLOPT_HEADERDATA CURLOPT_WRITEHEADER
+
+  /* These enums are for use with the CURLOPT_HTTP_VERSION option. */
+enum {
+  CURL_HTTP_VERSION_NONE, /* setting this means we don't care, and that we'd
+                             like the library to choose the best possible
+                             for us! */
+  CURL_HTTP_VERSION_1_0,  /* please use HTTP 1.0 in the request */
+  CURL_HTTP_VERSION_1_1,  /* please use HTTP 1.1 in the request */
+
+  CURL_HTTP_VERSION_LAST /* *ILLEGAL* http version */
+};
+
+  /* These enums are for use with the CURLOPT_NETRC option. */
+enum CURL_NETRC_OPTION {
+  CURL_NETRC_IGNORED,     /* The .netrc will never be read.
+                           * This is the default. */
+  CURL_NETRC_OPTIONAL,    /* A user:password in the URL will be preferred
+                           * to one in the .netrc. */
+  CURL_NETRC_REQUIRED,    /* A user:password in the URL will be ignored.
+                           * Unless one is set programmatically, the .netrc
+                           * will be queried. */
+  CURL_NETRC_LAST
+};
+
+enum {
+  CURL_SSLVERSION_DEFAULT,
+  CURL_SSLVERSION_TLSv1,
+  CURL_SSLVERSION_SSLv2,
+  CURL_SSLVERSION_SSLv3,
+
+  CURL_SSLVERSION_LAST /* never use, keep last */
+};
+
+/* symbols to use with CURLOPT_POSTREDIR.
+   CURL_REDIR_POST_301 and CURL_REDIR_POST_302 can be bitwise ORed so that
+   CURL_REDIR_POST_301 | CURL_REDIR_POST_302 == CURL_REDIR_POST_ALL */
+
+#define CURL_REDIR_GET_ALL  0
+#define CURL_REDIR_POST_301 1
+#define CURL_REDIR_POST_302 2
+#define CURL_REDIR_POST_ALL (CURL_REDIR_POST_301|CURL_REDIR_POST_302)
+
+typedef enum {
+  CURL_TIMECOND_NONE,
+
+  CURL_TIMECOND_IFMODSINCE,
+  CURL_TIMECOND_IFUNMODSINCE,
+  CURL_TIMECOND_LASTMOD,
+
+  CURL_TIMECOND_LAST
+} curl_TimeCond;
+
+
+/* curl_strequal() and curl_strnequal() are subject for removal in a future
+   libcurl, see lib/README.curlx for details */
+CURL_EXTERN int (curl_strequal)(const char *s1, const char *s2);
+CURL_EXTERN int (curl_strnequal)(const char *s1, const char *s2, size_t n);
+
+/* name is uppercase CURLFORM_<name> */
+#ifdef CFINIT
+#undef CFINIT
+#endif
+
+#ifdef CURL_ISOCPP
+#define CFINIT(name) CURLFORM_ ## name
+#else
+/* The macro "##" is ISO C, we assume pre-ISO C doesn't support it. */
+#define CFINIT(name) CURLFORM_/**/name
+#endif
+
+typedef enum {
+  CFINIT(NOTHING),        /********* the first one is unused ************/
+
+  /*  */
+  CFINIT(COPYNAME),
+  CFINIT(PTRNAME),
+  CFINIT(NAMELENGTH),
+  CFINIT(COPYCONTENTS),
+  CFINIT(PTRCONTENTS),
+  CFINIT(CONTENTSLENGTH),
+  CFINIT(FILECONTENT),
+  CFINIT(ARRAY),
+  CFINIT(OBSOLETE),
+  CFINIT(FILE),
+
+  CFINIT(BUFFER),
+  CFINIT(BUFFERPTR),
+  CFINIT(BUFFERLENGTH),
+
+  CFINIT(CONTENTTYPE),
+  CFINIT(CONTENTHEADER),
+  CFINIT(FILENAME),
+  CFINIT(END),
+  CFINIT(OBSOLETE2),
+
+  CFINIT(STREAM),
+
+  CURLFORM_LASTENTRY /* the last unused */
+} CURLformoption;
+
+#undef CFINIT /* done */
+
+/* structure to be used as parameter for CURLFORM_ARRAY */
+struct curl_forms {
+  CURLformoption option;
+  const char     *value;
+};
+
+/* use this for multipart formpost building */
+/* Returns code for curl_formadd()
+ *
+ * Returns:
+ * CURL_FORMADD_OK             on success
+ * CURL_FORMADD_MEMORY         if the FormInfo allocation fails
+ * CURL_FORMADD_OPTION_TWICE   if one option is given twice for one Form
+ * CURL_FORMADD_NULL           if a null pointer was given for a char
+ * CURL_FORMADD_MEMORY         if the allocation of a FormInfo struct failed
+ * CURL_FORMADD_UNKNOWN_OPTION if an unknown option was used
+ * CURL_FORMADD_INCOMPLETE     if the some FormInfo is not complete (or error)
+ * CURL_FORMADD_MEMORY         if a curl_httppost struct cannot be allocated
+ * CURL_FORMADD_MEMORY         if some allocation for string copying failed.
+ * CURL_FORMADD_ILLEGAL_ARRAY  if an illegal option is used in an array
+ *
+ ***************************************************************************/
+typedef enum {
+  CURL_FORMADD_OK, /* first, no error */
+
+  CURL_FORMADD_MEMORY,
+  CURL_FORMADD_OPTION_TWICE,
+  CURL_FORMADD_NULL,
+  CURL_FORMADD_UNKNOWN_OPTION,
+  CURL_FORMADD_INCOMPLETE,
+  CURL_FORMADD_ILLEGAL_ARRAY,
+  CURL_FORMADD_DISABLED, /* libcurl was built with this disabled */
+
+  CURL_FORMADD_LAST /* last */
+} CURLFORMcode;
+
+/*
+ * NAME curl_formadd()
+ *
+ * DESCRIPTION
+ *
+ * Pretty advanced function for building multi-part formposts. Each invoke
+ * adds one part that together construct a full post. Then use
+ * CURLOPT_HTTPPOST to send it off to libcurl.
+ */
+CURL_EXTERN CURLFORMcode curl_formadd(struct curl_httppost **httppost,
+                                      struct curl_httppost **last_post,
+                                      ...);
+
+/*
+ * callback function for curl_formget()
+ * The void *arg pointer will be the one passed as second argument to
+ *   curl_formget().
+ * The character buffer passed to it must not be freed.
+ * Should return the buffer length passed to it as the argument "len" on
+ *   success.
+ */
+typedef size_t (*curl_formget_callback)(void *arg, const char *buf, size_t len);
+
+/*
+ * NAME curl_formget()
+ *
+ * DESCRIPTION
+ *
+ * Serialize a curl_httppost struct built with curl_formadd().
+ * Accepts a void pointer as second argument which will be passed to
+ * the curl_formget_callback function.
+ * Returns 0 on success.
+ */
+CURL_EXTERN int curl_formget(struct curl_httppost *form, void *arg,
+                             curl_formget_callback append);
+/*
+ * NAME curl_formfree()
+ *
+ * DESCRIPTION
+ *
+ * Free a multipart formpost previously built with curl_formadd().
+ */
+CURL_EXTERN void curl_formfree(struct curl_httppost *form);
+
+/*
+ * NAME curl_getenv()
+ *
+ * DESCRIPTION
+ *
+ * Returns a malloc()'ed string that MUST be curl_free()ed after usage is
+ * complete. DEPRECATED - see lib/README.curlx
+ */
+CURL_EXTERN char *curl_getenv(const char *variable);
+
+/*
+ * NAME curl_version()
+ *
+ * DESCRIPTION
+ *
+ * Returns a static ascii string of the libcurl version.
+ */
+CURL_EXTERN char *curl_version(void);
+
+/*
+ * NAME curl_easy_escape()
+ *
+ * DESCRIPTION
+ *
+ * Escapes URL strings (converts all letters consider illegal in URLs to their
+ * %XX versions). This function returns a new allocated string or NULL if an
+ * error occurred.
+ */
+CURL_EXTERN char *curl_easy_escape(CURL *handle,
+                                   const char *string,
+                                   int length);
+
+/* the previous version: */
+CURL_EXTERN char *curl_escape(const char *string,
+                              int length);
+
+
+/*
+ * NAME curl_easy_unescape()
+ *
+ * DESCRIPTION
+ *
+ * Unescapes URL encoding in strings (converts all %XX codes to their 8bit
+ * versions). This function returns a new allocated string or NULL if an error
+ * occurred.
+ * Conversion Note: On non-ASCII platforms the ASCII %XX codes are
+ * converted into the host encoding.
+ */
+CURL_EXTERN char *curl_easy_unescape(CURL *handle,
+                                     const char *string,
+                                     int length,
+                                     int *outlength);
+
+/* the previous version */
+CURL_EXTERN char *curl_unescape(const char *string,
+                                int length);
+
+/*
+ * NAME curl_free()
+ *
+ * DESCRIPTION
+ *
+ * Provided for de-allocation in the same translation unit that did the
+ * allocation. Added in libcurl 7.10
+ */
+CURL_EXTERN void curl_free(void *p);
+
+/*
+ * NAME curl_global_init()
+ *
+ * DESCRIPTION
+ *
+ * curl_global_init() should be invoked exactly once for each application that
+ * uses libcurl and before any call of other libcurl functions.
+ *
+ * This function is not thread-safe!
+ */
+CURL_EXTERN CURLcode curl_global_init(long flags);
+
+/*
+ * NAME curl_global_init_mem()
+ *
+ * DESCRIPTION
+ *
+ * curl_global_init() or curl_global_init_mem() should be invoked exactly once
+ * for each application that uses libcurl.  This function can be used to
+ * initialize libcurl and set user defined memory management callback
+ * functions.  Users can implement memory management routines to check for
+ * memory leaks, check for mis-use of the curl library etc.  User registered
+ * callback routines with be invoked by this library instead of the system
+ * memory management routines like malloc, free etc.
+ */
+CURL_EXTERN CURLcode curl_global_init_mem(long flags,
+                                          curl_malloc_callback m,
+                                          curl_free_callback f,
+                                          curl_realloc_callback r,
+                                          curl_strdup_callback s,
+                                          curl_calloc_callback c);
+
+/*
+ * NAME curl_global_cleanup()
+ *
+ * DESCRIPTION
+ *
+ * curl_global_cleanup() should be invoked exactly once for each application
+ * that uses libcurl
+ */
+CURL_EXTERN void curl_global_cleanup(void);
+
+/* linked-list structure for the CURLOPT_QUOTE option (and other) */
+struct curl_slist {
+  char *data;
+  struct curl_slist *next;
+};
+
+/*
+ * NAME curl_slist_append()
+ *
+ * DESCRIPTION
+ *
+ * Appends a string to a linked list. If no list exists, it will be created
+ * first. Returns the new list, after appending.
+ */
+CURL_EXTERN struct curl_slist *curl_slist_append(struct curl_slist *,
+                                                 const char *);
+
+/*
+ * NAME curl_slist_free_all()
+ *
+ * DESCRIPTION
+ *
+ * free a previously built curl_slist.
+ */
+CURL_EXTERN void curl_slist_free_all(struct curl_slist *);
+
+/*
+ * NAME curl_getdate()
+ *
+ * DESCRIPTION
+ *
+ * Returns the time, in seconds since 1 Jan 1970 of the time string given in
+ * the first argument. The time argument in the second parameter is unused
+ * and should be set to NULL.
+ */
+CURL_EXTERN time_t curl_getdate(const char *p, const time_t *unused);
+
+/* info about the certificate chain, only for OpenSSL builds. Asked
+   for with CURLOPT_CERTINFO / CURLINFO_CERTINFO */
+struct curl_certinfo {
+  int num_of_certs;             /* number of certificates with information */
+  struct curl_slist **certinfo; /* for each index in this array, there's a
+                                   linked list with textual information in the
+                                   format "name: value" */
+};
+
+#define CURLINFO_STRING   0x100000
+#define CURLINFO_LONG     0x200000
+#define CURLINFO_DOUBLE   0x300000
+#define CURLINFO_SLIST    0x400000
+#define CURLINFO_MASK     0x0fffff
+#define CURLINFO_TYPEMASK 0xf00000
+
+typedef enum {
+  CURLINFO_NONE, /* first, never use this */
+  CURLINFO_EFFECTIVE_URL    = CURLINFO_STRING + 1,
+  CURLINFO_RESPONSE_CODE    = CURLINFO_LONG   + 2,
+  CURLINFO_TOTAL_TIME       = CURLINFO_DOUBLE + 3,
+  CURLINFO_NAMELOOKUP_TIME  = CURLINFO_DOUBLE + 4,
+  CURLINFO_CONNECT_TIME     = CURLINFO_DOUBLE + 5,
+  CURLINFO_PRETRANSFER_TIME = CURLINFO_DOUBLE + 6,
+  CURLINFO_SIZE_UPLOAD      = CURLINFO_DOUBLE + 7,
+  CURLINFO_SIZE_DOWNLOAD    = CURLINFO_DOUBLE + 8,
+  CURLINFO_SPEED_DOWNLOAD   = CURLINFO_DOUBLE + 9,
+  CURLINFO_SPEED_UPLOAD     = CURLINFO_DOUBLE + 10,
+  CURLINFO_HEADER_SIZE      = CURLINFO_LONG   + 11,
+  CURLINFO_REQUEST_SIZE     = CURLINFO_LONG   + 12,
+  CURLINFO_SSL_VERIFYRESULT = CURLINFO_LONG   + 13,
+  CURLINFO_FILETIME         = CURLINFO_LONG   + 14,
+  CURLINFO_CONTENT_LENGTH_DOWNLOAD   = CURLINFO_DOUBLE + 15,
+  CURLINFO_CONTENT_LENGTH_UPLOAD     = CURLINFO_DOUBLE + 16,
+  CURLINFO_STARTTRANSFER_TIME = CURLINFO_DOUBLE + 17,
+  CURLINFO_CONTENT_TYPE     = CURLINFO_STRING + 18,
+  CURLINFO_REDIRECT_TIME    = CURLINFO_DOUBLE + 19,
+  CURLINFO_REDIRECT_COUNT   = CURLINFO_LONG   + 20,
+  CURLINFO_PRIVATE          = CURLINFO_STRING + 21,
+  CURLINFO_HTTP_CONNECTCODE = CURLINFO_LONG   + 22,
+  CURLINFO_HTTPAUTH_AVAIL   = CURLINFO_LONG   + 23,
+  CURLINFO_PROXYAUTH_AVAIL  = CURLINFO_LONG   + 24,
+  CURLINFO_OS_ERRNO         = CURLINFO_LONG   + 25,
+  CURLINFO_NUM_CONNECTS     = CURLINFO_LONG   + 26,
+  CURLINFO_SSL_ENGINES      = CURLINFO_SLIST  + 27,
+  CURLINFO_COOKIELIST       = CURLINFO_SLIST  + 28,
+  CURLINFO_LASTSOCKET       = CURLINFO_LONG   + 29,
+  CURLINFO_FTP_ENTRY_PATH   = CURLINFO_STRING + 30,
+  CURLINFO_REDIRECT_URL     = CURLINFO_STRING + 31,
+  CURLINFO_PRIMARY_IP       = CURLINFO_STRING + 32,
+  CURLINFO_APPCONNECT_TIME  = CURLINFO_DOUBLE + 33,
+  CURLINFO_CERTINFO         = CURLINFO_SLIST  + 34,
+  CURLINFO_CONDITION_UNMET  = CURLINFO_LONG   + 35,
+  /* Fill in new entries below here! */
+
+  CURLINFO_LASTONE          = 35
+} CURLINFO;
+
+/* CURLINFO_RESPONSE_CODE is the new name for the option previously known as
+   CURLINFO_HTTP_CODE */
+#define CURLINFO_HTTP_CODE CURLINFO_RESPONSE_CODE
+
+typedef enum {
+  CURLCLOSEPOLICY_NONE, /* first, never use this */
+
+  CURLCLOSEPOLICY_OLDEST,
+  CURLCLOSEPOLICY_LEAST_RECENTLY_USED,
+  CURLCLOSEPOLICY_LEAST_TRAFFIC,
+  CURLCLOSEPOLICY_SLOWEST,
+  CURLCLOSEPOLICY_CALLBACK,
+
+  CURLCLOSEPOLICY_LAST /* last, never use this */
+} curl_closepolicy;
+
+#define CURL_GLOBAL_SSL (1<<0)
+#define CURL_GLOBAL_WIN32 (1<<1)
+#define CURL_GLOBAL_ALL (CURL_GLOBAL_SSL|CURL_GLOBAL_WIN32)
+#define CURL_GLOBAL_NOTHING 0
+#define CURL_GLOBAL_DEFAULT CURL_GLOBAL_ALL
+
+
+/*****************************************************************************
+ * Setup defines, protos etc for the sharing stuff.
+ */
+
+/* Different data locks for a single share */
+typedef enum {
+  CURL_LOCK_DATA_NONE = 0,
+  /*  CURL_LOCK_DATA_SHARE is used internally to say that
+   *  the locking is just made to change the internal state of the share
+   *  itself.
+   */
+  CURL_LOCK_DATA_SHARE,
+  CURL_LOCK_DATA_COOKIE,
+  CURL_LOCK_DATA_DNS,
+  CURL_LOCK_DATA_SSL_SESSION,
+  CURL_LOCK_DATA_CONNECT,
+  CURL_LOCK_DATA_LAST
+} curl_lock_data;
+
+/* Different lock access types */
+typedef enum {
+  CURL_LOCK_ACCESS_NONE = 0,   /* unspecified action */
+  CURL_LOCK_ACCESS_SHARED = 1, /* for read perhaps */
+  CURL_LOCK_ACCESS_SINGLE = 2, /* for write perhaps */
+  CURL_LOCK_ACCESS_LAST        /* never use */
+} curl_lock_access;
+
+typedef void (*curl_lock_function)(CURL *handle,
+                                   curl_lock_data data,
+                                   curl_lock_access locktype,
+                                   void *userptr);
+typedef void (*curl_unlock_function)(CURL *handle,
+                                     curl_lock_data data,
+                                     void *userptr);
+
+typedef void CURLSH;
+
+typedef enum {
+  CURLSHE_OK,  /* all is fine */
+  CURLSHE_BAD_OPTION, /* 1 */
+  CURLSHE_IN_USE,     /* 2 */
+  CURLSHE_INVALID,    /* 3 */
+  CURLSHE_NOMEM,      /* out of memory */
+  CURLSHE_LAST /* never use */
+} CURLSHcode;
+
+typedef enum {
+  CURLSHOPT_NONE,  /* don't use */
+  CURLSHOPT_SHARE,   /* specify a data type to share */
+  CURLSHOPT_UNSHARE, /* specify which data type to stop sharing */
+  CURLSHOPT_LOCKFUNC,   /* pass in a 'curl_lock_function' pointer */
+  CURLSHOPT_UNLOCKFUNC, /* pass in a 'curl_unlock_function' pointer */
+  CURLSHOPT_USERDATA,   /* pass in a user data pointer used in the lock/unlock
+                           callback functions */
+  CURLSHOPT_LAST  /* never use */
+} CURLSHoption;
+
+CURL_EXTERN CURLSH *curl_share_init(void);
+CURL_EXTERN CURLSHcode curl_share_setopt(CURLSH *, CURLSHoption option, ...);
+CURL_EXTERN CURLSHcode curl_share_cleanup(CURLSH *);
+
+/****************************************************************************
+ * Structures for querying information about the curl library at runtime.
+ */
+
+typedef enum {
+  CURLVERSION_FIRST,
+  CURLVERSION_SECOND,
+  CURLVERSION_THIRD,
+  CURLVERSION_FOURTH,
+  CURLVERSION_LAST /* never actually use this */
+} CURLversion;
+
+/* The 'CURLVERSION_NOW' is the symbolic name meant to be used by
+   basically all programs ever that want to get version information. It is
+   meant to be a built-in version number for what kind of struct the caller
+   expects. If the struct ever changes, we redefine the NOW to another enum
+   from above. */
+#define CURLVERSION_NOW CURLVERSION_FOURTH
+
+typedef struct {
+  CURLversion age;          /* age of the returned struct */
+  const char *version;      /* LIBCURL_VERSION */
+  unsigned int version_num; /* LIBCURL_VERSION_NUM */
+  const char *host;         /* OS/host/cpu/machine when configured */
+  int features;             /* bitmask, see defines below */
+  const char *ssl_version;  /* human readable string */
+  long ssl_version_num;     /* not used anymore, always 0 */
+  const char *libz_version; /* human readable string */
+  /* protocols is terminated by an entry with a NULL protoname */
+  const char * const *protocols;
+
+  /* The fields below this were added in CURLVERSION_SECOND */
+  const char *ares;
+  int ares_num;
+
+  /* This field was added in CURLVERSION_THIRD */
+  const char *libidn;
+
+  /* These field were added in CURLVERSION_FOURTH */
+
+  /* Same as '_libiconv_version' if built with HAVE_ICONV */
+  int iconv_ver_num;
+
+  const char *libssh_version; /* human readable string */
+
+} curl_version_info_data;
+
+#define CURL_VERSION_IPV6      (1<<0)  /* IPv6-enabled */
+#define CURL_VERSION_KERBEROS4 (1<<1)  /* kerberos auth is supported */
+#define CURL_VERSION_SSL       (1<<2)  /* SSL options are present */
+#define CURL_VERSION_LIBZ      (1<<3)  /* libz features are present */
+#define CURL_VERSION_NTLM      (1<<4)  /* NTLM auth is supported */
+#define CURL_VERSION_GSSNEGOTIATE (1<<5) /* Negotiate auth support */
+#define CURL_VERSION_DEBUG     (1<<6)  /* built with debug capabilities */
+#define CURL_VERSION_ASYNCHDNS (1<<7)  /* asynchronous dns resolves */
+#define CURL_VERSION_SPNEGO    (1<<8)  /* SPNEGO auth */
+#define CURL_VERSION_LARGEFILE (1<<9)  /* supports files bigger than 2GB */
+#define CURL_VERSION_IDN       (1<<10) /* International Domain Names support */
+#define CURL_VERSION_SSPI      (1<<11) /* SSPI is supported */
+#define CURL_VERSION_CONV      (1<<12) /* character conversions supported */
+#define CURL_VERSION_CURLDEBUG (1<<13) /* debug memory tracking supported */
+
+/*
+ * NAME curl_version_info()
+ *
+ * DESCRIPTION
+ *
+ * This function returns a pointer to a static copy of the version info
+ * struct. See above.
+ */
+CURL_EXTERN curl_version_info_data *curl_version_info(CURLversion);
+
+/*
+ * NAME curl_easy_strerror()
+ *
+ * DESCRIPTION
+ *
+ * The curl_easy_strerror function may be used to turn a CURLcode value
+ * into the equivalent human readable error string.  This is useful
+ * for printing meaningful error messages.
+ */
+CURL_EXTERN const char *curl_easy_strerror(CURLcode);
+
+/*
+ * NAME curl_share_strerror()
+ *
+ * DESCRIPTION
+ *
+ * The curl_share_strerror function may be used to turn a CURLSHcode value
+ * into the equivalent human readable error string.  This is useful
+ * for printing meaningful error messages.
+ */
+CURL_EXTERN const char *curl_share_strerror(CURLSHcode);
+
+/*
+ * NAME curl_easy_pause()
+ *
+ * DESCRIPTION
+ *
+ * The curl_easy_pause function pauses or unpauses transfers. Select the new
+ * state by setting the bitmask, use the convenience defines below.
+ *
+ */
+CURL_EXTERN CURLcode curl_easy_pause(CURL *handle, int bitmask);
+
+#define CURLPAUSE_RECV      (1<<0)
+#define CURLPAUSE_RECV_CONT (0)
+
+#define CURLPAUSE_SEND      (1<<2)
+#define CURLPAUSE_SEND_CONT (0)
+
+#define CURLPAUSE_ALL       (CURLPAUSE_RECV|CURLPAUSE_SEND)
+#define CURLPAUSE_CONT      (CURLPAUSE_RECV_CONT|CURLPAUSE_SEND_CONT)
+
+#ifdef  __cplusplus
+}
+#endif
+
+/* unfortunately, the easy.h and multi.h include files need options and info
+  stuff before they can be included! */
+#include "easy.h" /* nothing in curl is fun without the easy stuff */
+#include "multi.h"
+
+/* the typechecker doesn't work in C++ (yet) */
+#if defined(__GNUC__) && defined(__GNUC_MINOR__) && \
+    ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) && \
+    !defined(__cplusplus) && !defined(CURL_DISABLE_TYPECHECK)
+#include "typecheck-gcc.h"
+#else
+#if defined(__STDC__) && (__STDC__ >= 1)
+/* This preprocessor magic that replaces a call with the exact same call is
+   only done to make sure application authors pass exactly three arguments
+   to these functions. */
+#define curl_easy_setopt(handle,opt,param) curl_easy_setopt(handle,opt,param)
+#define curl_easy_getinfo(handle,info,arg) curl_easy_getinfo(handle,info,arg)
+#define curl_share_setopt(share,opt,param) curl_share_setopt(share,opt,param)
+#define curl_multi_setopt(handle,opt,param) curl_multi_setopt(handle,opt,param)
+#endif /* __STDC__ >= 1 */
+#endif /* gcc >= 4.3 && !__cplusplus */
+
+#endif /* __CURL_CURL_H */
diff --git a/google-breakpad/src/third_party/curl/curlbuild.h b/google-breakpad/src/third_party/curl/curlbuild.h
new file mode 100644
index 0000000..b0a53e6
--- /dev/null
+++ b/google-breakpad/src/third_party/curl/curlbuild.h
@@ -0,0 +1,202 @@
+/* include/curl/curlbuild.h.  Generated from curlbuild.h.in by configure.  */
+#ifndef __CURL_CURLBUILD_H
+#define __CURL_CURLBUILD_H
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2009, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * $Id: curlbuild.h.in,v 1.8 2009-04-29 15:15:38 yangtse Exp $
+ ***************************************************************************/
+
+/* ================================================================ */
+/*               NOTES FOR CONFIGURE CAPABLE SYSTEMS                */
+/* ================================================================ */
+
+/*
+ * NOTE 1:
+ * -------
+ *
+ * Nothing in this file is intended to be modified or adjusted by the
+ * curl library user nor by the curl library builder.
+ *
+ * If you think that something actually needs to be changed, adjusted
+ * or fixed in this file, then, report it on the libcurl development
+ * mailing list: http://cool.haxx.se/mailman/listinfo/curl-library/
+ *
+ * This header file shall only export symbols which are 'curl' or 'CURL'
+ * prefixed, otherwise public name space would be polluted.
+ *
+ * NOTE 2:
+ * -------
+ *
+ * Right now you might be staring at file include/curl/curlbuild.h.in or
+ * at file include/curl/curlbuild.h, this is due to the following reason:
+ *
+ * On systems capable of running the configure script, the configure process
+ * will overwrite the distributed include/curl/curlbuild.h file with one that
+ * is suitable and specific to the library being configured and built, which
+ * is generated from the include/curl/curlbuild.h.in template file.
+ *
+ */
+
+/* ================================================================ */
+/*  DEFINITION OF THESE SYMBOLS SHALL NOT TAKE PLACE ANYWHERE ELSE  */
+/* ================================================================ */
+
+#ifdef CURL_SIZEOF_LONG
+#  error "CURL_SIZEOF_LONG shall not be defined except in curlbuild.h"
+   Error Compilation_aborted_CURL_SIZEOF_LONG_already_defined
+#endif
+
+#ifdef CURL_TYPEOF_CURL_SOCKLEN_T
+#  error "CURL_TYPEOF_CURL_SOCKLEN_T shall not be defined except in curlbuild.h"
+   Error Compilation_aborted_CURL_TYPEOF_CURL_SOCKLEN_T_already_defined
+#endif
+
+#ifdef CURL_SIZEOF_CURL_SOCKLEN_T
+#  error "CURL_SIZEOF_CURL_SOCKLEN_T shall not be defined except in curlbuild.h"
+   Error Compilation_aborted_CURL_SIZEOF_CURL_SOCKLEN_T_already_defined
+#endif
+
+#ifdef CURL_TYPEOF_CURL_OFF_T
+#  error "CURL_TYPEOF_CURL_OFF_T shall not be defined except in curlbuild.h"
+   Error Compilation_aborted_CURL_TYPEOF_CURL_OFF_T_already_defined
+#endif
+
+#ifdef CURL_FORMAT_CURL_OFF_T
+#  error "CURL_FORMAT_CURL_OFF_T shall not be defined except in curlbuild.h"
+   Error Compilation_aborted_CURL_FORMAT_CURL_OFF_T_already_defined
+#endif
+
+#ifdef CURL_FORMAT_CURL_OFF_TU
+#  error "CURL_FORMAT_CURL_OFF_TU shall not be defined except in curlbuild.h"
+   Error Compilation_aborted_CURL_FORMAT_CURL_OFF_TU_already_defined
+#endif
+
+#ifdef CURL_FORMAT_OFF_T
+#  error "CURL_FORMAT_OFF_T shall not be defined except in curlbuild.h"
+   Error Compilation_aborted_CURL_FORMAT_OFF_T_already_defined
+#endif
+
+#ifdef CURL_SIZEOF_CURL_OFF_T
+#  error "CURL_SIZEOF_CURL_OFF_T shall not be defined except in curlbuild.h"
+   Error Compilation_aborted_CURL_SIZEOF_CURL_OFF_T_already_defined
+#endif
+
+#ifdef CURL_SUFFIX_CURL_OFF_T
+#  error "CURL_SUFFIX_CURL_OFF_T shall not be defined except in curlbuild.h"
+   Error Compilation_aborted_CURL_SUFFIX_CURL_OFF_T_already_defined
+#endif
+
+#ifdef CURL_SUFFIX_CURL_OFF_TU
+#  error "CURL_SUFFIX_CURL_OFF_TU shall not be defined except in curlbuild.h"
+   Error Compilation_aborted_CURL_SUFFIX_CURL_OFF_TU_already_defined
+#endif
+
+/* ================================================================ */
+/*  EXTERNAL INTERFACE SETTINGS FOR CONFIGURE CAPABLE SYSTEMS ONLY  */
+/* ================================================================ */
+
+/* Configure process defines this to 1 when it finds out that system  */
+/* header file ws2tcpip.h must be included by the external interface. */
+/* #undef CURL_PULL_WS2TCPIP_H */
+#ifdef CURL_PULL_WS2TCPIP_H
+#  ifndef WIN32_LEAN_AND_MEAN
+#    define WIN32_LEAN_AND_MEAN
+#  endif
+#  include <windows.h>
+#  include <winsock2.h>
+#  include <ws2tcpip.h>
+#endif
+
+/* Configure process defines this to 1 when it finds out that system   */
+/* header file sys/types.h must be included by the external interface. */
+#define CURL_PULL_SYS_TYPES_H 1
+#ifdef CURL_PULL_SYS_TYPES_H
+#  include <sys/types.h>
+#endif
+
+/* Configure process defines this to 1 when it finds out that system */
+/* header file stdint.h must be included by the external interface.  */
+/* #undef CURL_PULL_STDINT_H */
+#ifdef CURL_PULL_STDINT_H
+#  include <stdint.h>
+#endif
+
+/* Configure process defines this to 1 when it finds out that system  */
+/* header file inttypes.h must be included by the external interface. */
+/* #undef CURL_PULL_INTTYPES_H */
+#ifdef CURL_PULL_INTTYPES_H
+#  include <inttypes.h>
+#endif
+
+/* Configure process defines this to 1 when it finds out that system    */
+/* header file sys/socket.h must be included by the external interface. */
+#define CURL_PULL_SYS_SOCKET_H 1
+#ifdef CURL_PULL_SYS_SOCKET_H
+#  include <sys/socket.h>
+#endif
+
+/* The size of `long', as computed by sizeof. */
+#if defined(_M_X64) || (defined(__x86_64__) && !defined(__ILP32__)) ||      \
+    defined(__aarch64__) || (defined(__mips__) && _MIPS_SIM == _ABI64)
+#define CURL_SIZEOF_LONG 8
+#else
+#define CURL_SIZEOF_LONG 4
+#endif
+
+/* Integral data type used for curl_socklen_t. */
+#define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
+
+/* The size of `curl_socklen_t', as computed by sizeof. */
+#define CURL_SIZEOF_CURL_SOCKLEN_T 4
+
+/* Data type definition of curl_socklen_t. */
+typedef CURL_TYPEOF_CURL_SOCKLEN_T curl_socklen_t;
+
+/* Signed integral data type used for curl_off_t. */
+#if defined(_M_X64) || (defined(__x86_64__) && !defined(__ILP32__)) ||      \
+    defined(__aarch64__)
+#define CURL_TYPEOF_CURL_OFF_T long
+#else
+#define CURL_TYPEOF_CURL_OFF_T int64_t
+#endif
+
+/* Data type definition of curl_off_t. */
+typedef CURL_TYPEOF_CURL_OFF_T curl_off_t;
+
+/* curl_off_t formatting string directive without "%" conversion specifier. */
+#define CURL_FORMAT_CURL_OFF_T "ld"
+
+/* unsigned curl_off_t formatting string without "%" conversion specifier. */
+#define CURL_FORMAT_CURL_OFF_TU "lu"
+
+/* curl_off_t formatting string directive with "%" conversion specifier. */
+#define CURL_FORMAT_OFF_T "%ld"
+
+/* The size of `curl_off_t', as computed by sizeof. */
+#define CURL_SIZEOF_CURL_OFF_T 8
+
+/* curl_off_t constant suffix. */
+#define CURL_SUFFIX_CURL_OFF_T L
+
+/* unsigned curl_off_t constant suffix. */
+#define CURL_SUFFIX_CURL_OFF_TU UL
+
+#endif /* __CURL_CURLBUILD_H */
diff --git a/google-breakpad/src/third_party/curl/curlrules.h b/google-breakpad/src/third_party/curl/curlrules.h
new file mode 100644
index 0000000..abac439
--- /dev/null
+++ b/google-breakpad/src/third_party/curl/curlrules.h
@@ -0,0 +1,249 @@
+#ifndef __CURL_CURLRULES_H
+#define __CURL_CURLRULES_H
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2009, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * $Id: curlrules.h,v 1.7 2009-10-27 16:56:20 yangtse Exp $
+ ***************************************************************************/
+
+/* ================================================================ */
+/*                    COMPILE TIME SANITY CHECKS                    */
+/* ================================================================ */
+
+/*
+ * NOTE 1:
+ * -------
+ *
+ * All checks done in this file are intentionally placed in a public
+ * header file which is pulled by curl/curl.h when an application is
+ * being built using an already built libcurl library. Additionally
+ * this file is also included and used when building the library.
+ *
+ * If compilation fails on this file it is certainly sure that the
+ * problem is elsewhere. It could be a problem in the curlbuild.h
+ * header file, or simply that you are using different compilation
+ * settings than those used to build the library.
+ *
+ * Nothing in this file is intended to be modified or adjusted by the
+ * curl library user nor by the curl library builder.
+ *
+ * Do not deactivate any check, these are done to make sure that the
+ * library is properly built and used.
+ *
+ * You can find further help on the libcurl development mailing list:
+ * http://cool.haxx.se/mailman/listinfo/curl-library/
+ *
+ * NOTE 2
+ * ------
+ *
+ * Some of the following compile time checks are based on the fact
+ * that the dimension of a constant array can not be a negative one.
+ * In this way if the compile time verification fails, the compilation
+ * will fail issuing an error. The error description wording is compiler
+ * dependent but it will be quite similar to one of the following:
+ *
+ *   "negative subscript or subscript is too large"
+ *   "array must have at least one element"
+ *   "-1 is an illegal array size"
+ *   "size of array is negative"
+ *
+ * If you are building an application which tries to use an already
+ * built libcurl library and you are getting this kind of errors on
+ * this file, it is a clear indication that there is a mismatch between
+ * how the library was built and how you are trying to use it for your
+ * application. Your already compiled or binary library provider is the
+ * only one who can give you the details you need to properly use it.
+ */
+
+/*
+ * Verify that some macros are actually defined.
+ */
+
+#ifndef CURL_SIZEOF_LONG
+#  error "CURL_SIZEOF_LONG definition is missing!"
+   Error Compilation_aborted_CURL_SIZEOF_LONG_is_missing
+#endif
+
+#ifndef CURL_TYPEOF_CURL_SOCKLEN_T
+#  error "CURL_TYPEOF_CURL_SOCKLEN_T definition is missing!"
+   Error Compilation_aborted_CURL_TYPEOF_CURL_SOCKLEN_T_is_missing
+#endif
+
+#ifndef CURL_SIZEOF_CURL_SOCKLEN_T
+#  error "CURL_SIZEOF_CURL_SOCKLEN_T definition is missing!"
+   Error Compilation_aborted_CURL_SIZEOF_CURL_SOCKLEN_T_is_missing
+#endif
+
+#ifndef CURL_TYPEOF_CURL_OFF_T
+#  error "CURL_TYPEOF_CURL_OFF_T definition is missing!"
+   Error Compilation_aborted_CURL_TYPEOF_CURL_OFF_T_is_missing
+#endif
+
+#ifndef CURL_FORMAT_CURL_OFF_T
+#  error "CURL_FORMAT_CURL_OFF_T definition is missing!"
+   Error Compilation_aborted_CURL_FORMAT_CURL_OFF_T_is_missing
+#endif
+
+#ifndef CURL_FORMAT_CURL_OFF_TU
+#  error "CURL_FORMAT_CURL_OFF_TU definition is missing!"
+   Error Compilation_aborted_CURL_FORMAT_CURL_OFF_TU_is_missing
+#endif
+
+#ifndef CURL_FORMAT_OFF_T
+#  error "CURL_FORMAT_OFF_T definition is missing!"
+   Error Compilation_aborted_CURL_FORMAT_OFF_T_is_missing
+#endif
+
+#ifndef CURL_SIZEOF_CURL_OFF_T
+#  error "CURL_SIZEOF_CURL_OFF_T definition is missing!"
+   Error Compilation_aborted_CURL_SIZEOF_CURL_OFF_T_is_missing
+#endif
+
+#ifndef CURL_SUFFIX_CURL_OFF_T
+#  error "CURL_SUFFIX_CURL_OFF_T definition is missing!"
+   Error Compilation_aborted_CURL_SUFFIX_CURL_OFF_T_is_missing
+#endif
+
+#ifndef CURL_SUFFIX_CURL_OFF_TU
+#  error "CURL_SUFFIX_CURL_OFF_TU definition is missing!"
+   Error Compilation_aborted_CURL_SUFFIX_CURL_OFF_TU_is_missing
+#endif
+
+/*
+ * Macros private to this header file.
+ */
+
+#define CurlchkszEQ(t, s) sizeof(t) == s ? 1 : -1
+
+#define CurlchkszGE(t1, t2) sizeof(t1) >= sizeof(t2) ? 1 : -1
+
+/*
+ * Verify that the size previously defined and expected for long
+ * is the same as the one reported by sizeof() at compile time.
+ */
+
+typedef char
+  __curl_rule_01__
+    [CurlchkszEQ(long, CURL_SIZEOF_LONG)];
+
+/*
+ * Verify that the size previously defined and expected for
+ * curl_off_t is actually the the same as the one reported
+ * by sizeof() at compile time.
+ */
+
+typedef char
+  __curl_rule_02__
+    [CurlchkszEQ(curl_off_t, CURL_SIZEOF_CURL_OFF_T)];
+
+/*
+ * Verify at compile time that the size of curl_off_t as reported
+ * by sizeof() is greater or equal than the one reported for long
+ * for the current compilation.
+ */
+
+typedef char
+  __curl_rule_03__
+    [CurlchkszGE(curl_off_t, long)];
+
+/*
+ * Verify that the size previously defined and expected for
+ * curl_socklen_t is actually the the same as the one reported
+ * by sizeof() at compile time.
+ */
+
+typedef char
+  __curl_rule_04__
+    [CurlchkszEQ(curl_socklen_t, CURL_SIZEOF_CURL_SOCKLEN_T)];
+
+/*
+ * Verify at compile time that the size of curl_socklen_t as reported
+ * by sizeof() is greater or equal than the one reported for int for
+ * the current compilation.
+ */
+
+typedef char
+  __curl_rule_05__
+    [CurlchkszGE(curl_socklen_t, int)];
+
+/* ================================================================ */
+/*          EXTERNALLY AND INTERNALLY VISIBLE DEFINITIONS           */
+/* ================================================================ */
+
+/* 
+ * CURL_ISOCPP and CURL_OFF_T_C definitions are done here in order to allow
+ * these to be visible and exported by the external libcurl interface API,
+ * while also making them visible to the library internals, simply including
+ * setup.h, without actually needing to include curl.h internally.
+ * If some day this section would grow big enough, all this should be moved
+ * to its own header file.
+ */
+
+/*
+ * Figure out if we can use the ## preprocessor operator, which is supported
+ * by ISO/ANSI C and C++. Some compilers support it without setting __STDC__
+ * or  __cplusplus so we need to carefully check for them too.
+ */
+
+#if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus) || \
+  defined(__HP_aCC) || defined(__BORLANDC__) || defined(__LCC__) || \
+  defined(__POCC__) || defined(__SALFORDC__) || defined(__HIGHC__) || \
+  defined(__ILEC400__)
+  /* This compiler is believed to have an ISO compatible preprocessor */
+#define CURL_ISOCPP
+#else
+  /* This compiler is believed NOT to have an ISO compatible preprocessor */
+#undef CURL_ISOCPP
+#endif
+
+/*
+ * Macros for minimum-width signed and unsigned curl_off_t integer constants.
+ */
+
+#ifdef CURL_ISOCPP
+#  define __CURL_OFF_T_C_HELPER2(Val,Suffix) Val ## Suffix
+#else
+#  define __CURL_OFF_T_C_HELPER2(Val,Suffix) Val/**/Suffix
+#endif
+#define __CURL_OFF_T_C_HELPER1(Val,Suffix) __CURL_OFF_T_C_HELPER2(Val,Suffix)
+#define CURL_OFF_T_C(Val)  __CURL_OFF_T_C_HELPER1(Val,CURL_SUFFIX_CURL_OFF_T)
+#define CURL_OFF_TU_C(Val) __CURL_OFF_T_C_HELPER1(Val,CURL_SUFFIX_CURL_OFF_TU)
+
+/*
+ * Get rid of macros private to this header file.
+ */
+
+#undef CurlchkszEQ
+#undef CurlchkszGE
+
+/*
+ * Get rid of macros not intended to exist beyond this point.
+ */
+
+#undef CURL_PULL_WS2TCPIP_H
+#undef CURL_PULL_SYS_TYPES_H
+#undef CURL_PULL_SYS_SOCKET_H
+#undef CURL_PULL_STDINT_H
+#undef CURL_PULL_INTTYPES_H
+
+#undef CURL_TYPEOF_CURL_SOCKLEN_T
+#undef CURL_TYPEOF_CURL_OFF_T
+
+#endif /* __CURL_CURLRULES_H */
diff --git a/google-breakpad/src/third_party/curl/curlver.h b/google-breakpad/src/third_party/curl/curlver.h
new file mode 100644
index 0000000..afa85c1
--- /dev/null
+++ b/google-breakpad/src/third_party/curl/curlver.h
@@ -0,0 +1,70 @@
+#ifndef __CURL_CURLVER_H
+#define __CURL_CURLVER_H
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2009, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * $Id: curlver.h,v 1.48 2009-08-12 11:24:52 bagder Exp $
+ ***************************************************************************/
+
+/* This header file contains nothing but libcurl version info, generated by
+   a script at release-time. This was made its own header file in 7.11.2 */
+
+/* This is the global package copyright */
+#define LIBCURL_COPYRIGHT "1996 - 2009 Daniel Stenberg, <daniel@haxx.se>."
+
+/* This is the version number of the libcurl package from which this header
+   file origins: */
+#define LIBCURL_VERSION "7.19.7"
+
+/* The numeric version number is also available "in parts" by using these
+   defines: */
+#define LIBCURL_VERSION_MAJOR 7
+#define LIBCURL_VERSION_MINOR 19
+#define LIBCURL_VERSION_PATCH 7
+
+/* This is the numeric version of the libcurl version number, meant for easier
+   parsing and comparions by programs. The LIBCURL_VERSION_NUM define will
+   always follow this syntax:
+
+         0xXXYYZZ
+
+   Where XX, YY and ZZ are the main version, release and patch numbers in
+   hexadecimal (using 8 bits each). All three numbers are always represented
+   using two digits.  1.2 would appear as "0x010200" while version 9.11.7
+   appears as "0x090b07".
+
+   This 6-digit (24 bits) hexadecimal number does not show pre-release number,
+   and it is always a greater number in a more recent release. It makes
+   comparisons with greater than and less than work.
+*/
+#define LIBCURL_VERSION_NUM 0x071307
+
+/*
+ * This is the date and time when the full source package was created. The
+ * timestamp is not stored in CVS, as the timestamp is properly set in the
+ * tarballs by the maketgz script.
+ *
+ * The format of the date should follow this template:
+ *
+ * "Mon Feb 12 11:35:33 UTC 2007"
+ */
+#define LIBCURL_TIMESTAMP "Wed Nov  4 12:34:59 UTC 2009"
+
+#endif /* __CURL_CURLVER_H */
diff --git a/google-breakpad/src/third_party/curl/easy.h b/google-breakpad/src/third_party/curl/easy.h
new file mode 100644
index 0000000..40449c3
--- /dev/null
+++ b/google-breakpad/src/third_party/curl/easy.h
@@ -0,0 +1,103 @@
+#ifndef __CURL_EASY_H
+#define __CURL_EASY_H
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2008, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * $Id: easy.h,v 1.14 2008-05-12 21:43:28 bagder Exp $
+ ***************************************************************************/
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
+CURL_EXTERN CURL *curl_easy_init(void);
+CURL_EXTERN CURLcode curl_easy_setopt(CURL *curl, CURLoption option, ...);
+CURL_EXTERN CURLcode curl_easy_perform(CURL *curl);
+CURL_EXTERN void curl_easy_cleanup(CURL *curl);
+
+/*
+ * NAME curl_easy_getinfo()
+ *
+ * DESCRIPTION
+ *
+ * Request internal information from the curl session with this function.  The
+ * third argument MUST be a pointer to a long, a pointer to a char * or a
+ * pointer to a double (as the documentation describes elsewhere).  The data
+ * pointed to will be filled in accordingly and can be relied upon only if the
+ * function returns CURLE_OK.  This function is intended to get used *AFTER* a
+ * performed transfer, all results from this function are undefined until the
+ * transfer is completed.
+ */
+CURL_EXTERN CURLcode curl_easy_getinfo(CURL *curl, CURLINFO info, ...);
+
+
+/*
+ * NAME curl_easy_duphandle()
+ *
+ * DESCRIPTION
+ *
+ * Creates a new curl session handle with the same options set for the handle
+ * passed in. Duplicating a handle could only be a matter of cloning data and
+ * options, internal state info and things like persistant connections cannot
+ * be transfered. It is useful in multithreaded applications when you can run
+ * curl_easy_duphandle() for each new thread to avoid a series of identical
+ * curl_easy_setopt() invokes in every thread.
+ */
+CURL_EXTERN CURL* curl_easy_duphandle(CURL *curl);
+
+/*
+ * NAME curl_easy_reset()
+ *
+ * DESCRIPTION
+ *
+ * Re-initializes a CURL handle to the default values. This puts back the
+ * handle to the same state as it was in when it was just created.
+ *
+ * It does keep: live connections, the Session ID cache, the DNS cache and the
+ * cookies.
+ */
+CURL_EXTERN void curl_easy_reset(CURL *curl);
+
+/*
+ * NAME curl_easy_recv()
+ *
+ * DESCRIPTION
+ *
+ * Receives data from the connected socket. Use after successful
+ * curl_easy_perform() with CURLOPT_CONNECT_ONLY option.
+ */
+CURL_EXTERN CURLcode curl_easy_recv(CURL *curl, void *buffer, size_t buflen,
+                                    size_t *n);
+
+/*
+ * NAME curl_easy_send()
+ *
+ * DESCRIPTION
+ *
+ * Sends data over the connected socket. Use after successful
+ * curl_easy_perform() with CURLOPT_CONNECT_ONLY option.
+ */
+CURL_EXTERN CURLcode curl_easy_send(CURL *curl, const void *buffer,
+                                    size_t buflen, size_t *n);
+
+#ifdef  __cplusplus
+}
+#endif
+
+#endif
diff --git a/google-breakpad/src/third_party/curl/mprintf.h b/google-breakpad/src/third_party/curl/mprintf.h
new file mode 100644
index 0000000..d7202de
--- /dev/null
+++ b/google-breakpad/src/third_party/curl/mprintf.h
@@ -0,0 +1,82 @@
+#ifndef __CURL_MPRINTF_H
+#define __CURL_MPRINTF_H
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2006, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * $Id: mprintf.h,v 1.16 2008-05-20 10:21:50 patrickm Exp $
+ ***************************************************************************/
+
+#include <stdarg.h>
+#include <stdio.h> /* needed for FILE */
+
+#include "curl.h"
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
+CURL_EXTERN int curl_mprintf(const char *format, ...);
+CURL_EXTERN int curl_mfprintf(FILE *fd, const char *format, ...);
+CURL_EXTERN int curl_msprintf(char *buffer, const char *format, ...);
+CURL_EXTERN int curl_msnprintf(char *buffer, size_t maxlength,
+                               const char *format, ...);
+CURL_EXTERN int curl_mvprintf(const char *format, va_list args);
+CURL_EXTERN int curl_mvfprintf(FILE *fd, const char *format, va_list args);
+CURL_EXTERN int curl_mvsprintf(char *buffer, const char *format, va_list args);
+CURL_EXTERN int curl_mvsnprintf(char *buffer, size_t maxlength,
+                                const char *format, va_list args);
+CURL_EXTERN char *curl_maprintf(const char *format, ...);
+CURL_EXTERN char *curl_mvaprintf(const char *format, va_list args);
+
+#ifdef _MPRINTF_REPLACE
+# undef printf
+# undef fprintf
+# undef sprintf
+# undef vsprintf
+# undef snprintf
+# undef vprintf
+# undef vfprintf
+# undef vsnprintf
+# undef aprintf
+# undef vaprintf
+# define printf curl_mprintf
+# define fprintf curl_mfprintf
+#ifdef CURLDEBUG
+/* When built with CURLDEBUG we define away the sprintf() functions since we
+   don't want internal code to be using them */
+# define sprintf sprintf_was_used
+# define vsprintf vsprintf_was_used
+#else
+# define sprintf curl_msprintf
+# define vsprintf curl_mvsprintf
+#endif
+# define snprintf curl_msnprintf
+# define vprintf curl_mvprintf
+# define vfprintf curl_mvfprintf
+# define vsnprintf curl_mvsnprintf
+# define aprintf curl_maprintf
+# define vaprintf curl_mvaprintf
+#endif
+
+#ifdef  __cplusplus
+}
+#endif
+
+#endif /* __CURL_MPRINTF_H */
diff --git a/google-breakpad/src/third_party/curl/multi.h b/google-breakpad/src/third_party/curl/multi.h
new file mode 100644
index 0000000..153f772
--- /dev/null
+++ b/google-breakpad/src/third_party/curl/multi.h
@@ -0,0 +1,346 @@
+#ifndef __CURL_MULTI_H
+#define __CURL_MULTI_H
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2007, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * $Id: multi.h,v 1.45 2008-05-20 10:21:50 patrickm Exp $
+ ***************************************************************************/
+/*
+  This is an "external" header file. Don't give away any internals here!
+
+  GOALS
+
+  o Enable a "pull" interface. The application that uses libcurl decides where
+    and when to ask libcurl to get/send data.
+
+  o Enable multiple simultaneous transfers in the same thread without making it
+    complicated for the application.
+
+  o Enable the application to select() on its own file descriptors and curl's
+    file descriptors simultaneous easily.
+
+*/
+
+/*
+ * This header file should not really need to include "curl.h" since curl.h
+ * itself includes this file and we expect user applications to do #include
+ * <curl/curl.h> without the need for especially including multi.h.
+ *
+ * For some reason we added this include here at one point, and rather than to
+ * break existing (wrongly written) libcurl applications, we leave it as-is
+ * but with this warning attached.
+ */
+#include "curl.h"
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
+typedef void CURLM;
+
+typedef enum {
+  CURLM_CALL_MULTI_PERFORM = -1, /* please call curl_multi_perform() or
+                                    curl_multi_socket*() soon */
+  CURLM_OK,
+  CURLM_BAD_HANDLE,      /* the passed-in handle is not a valid CURLM handle */
+  CURLM_BAD_EASY_HANDLE, /* an easy handle was not good/valid */
+  CURLM_OUT_OF_MEMORY,   /* if you ever get this, you're in deep sh*t */
+  CURLM_INTERNAL_ERROR,  /* this is a libcurl bug */
+  CURLM_BAD_SOCKET,      /* the passed in socket argument did not match */
+  CURLM_UNKNOWN_OPTION,  /* curl_multi_setopt() with unsupported option */
+  CURLM_LAST
+} CURLMcode;
+
+/* just to make code nicer when using curl_multi_socket() you can now check
+   for CURLM_CALL_MULTI_SOCKET too in the same style it works for
+   curl_multi_perform() and CURLM_CALL_MULTI_PERFORM */
+#define CURLM_CALL_MULTI_SOCKET CURLM_CALL_MULTI_PERFORM
+
+typedef enum {
+  CURLMSG_NONE, /* first, not used */
+  CURLMSG_DONE, /* This easy handle has completed. 'result' contains
+                   the CURLcode of the transfer */
+  CURLMSG_LAST /* last, not used */
+} CURLMSG;
+
+struct CURLMsg {
+  CURLMSG msg;       /* what this message means */
+  CURL *easy_handle; /* the handle it concerns */
+  union {
+    void *whatever;    /* message-specific data */
+    CURLcode result;   /* return code for transfer */
+  } data;
+};
+typedef struct CURLMsg CURLMsg;
+
+/*
+ * Name:    curl_multi_init()
+ *
+ * Desc:    inititalize multi-style curl usage
+ *
+ * Returns: a new CURLM handle to use in all 'curl_multi' functions.
+ */
+CURL_EXTERN CURLM *curl_multi_init(void);
+
+/*
+ * Name:    curl_multi_add_handle()
+ *
+ * Desc:    add a standard curl handle to the multi stack
+ *
+ * Returns: CURLMcode type, general multi error code.
+ */
+CURL_EXTERN CURLMcode curl_multi_add_handle(CURLM *multi_handle,
+                                            CURL *curl_handle);
+
+ /*
+  * Name:    curl_multi_remove_handle()
+  *
+  * Desc:    removes a curl handle from the multi stack again
+  *
+  * Returns: CURLMcode type, general multi error code.
+  */
+CURL_EXTERN CURLMcode curl_multi_remove_handle(CURLM *multi_handle,
+                                               CURL *curl_handle);
+
+ /*
+  * Name:    curl_multi_fdset()
+  *
+  * Desc:    Ask curl for its fd_set sets. The app can use these to select() or
+  *          poll() on. We want curl_multi_perform() called as soon as one of
+  *          them are ready.
+  *
+  * Returns: CURLMcode type, general multi error code.
+  */
+CURL_EXTERN CURLMcode curl_multi_fdset(CURLM *multi_handle,
+                                       fd_set *read_fd_set,
+                                       fd_set *write_fd_set,
+                                       fd_set *exc_fd_set,
+                                       int *max_fd);
+
+ /*
+  * Name:    curl_multi_perform()
+  *
+  * Desc:    When the app thinks there's data available for curl it calls this
+  *          function to read/write whatever there is right now. This returns
+  *          as soon as the reads and writes are done. This function does not
+  *          require that there actually is data available for reading or that
+  *          data can be written, it can be called just in case. It returns
+  *          the number of handles that still transfer data in the second
+  *          argument's integer-pointer.
+  *
+  * Returns: CURLMcode type, general multi error code. *NOTE* that this only
+  *          returns errors etc regarding the whole multi stack. There might
+  *          still have occurred problems on invidual transfers even when this
+  *          returns OK.
+  */
+CURL_EXTERN CURLMcode curl_multi_perform(CURLM *multi_handle,
+                                         int *running_handles);
+
+ /*
+  * Name:    curl_multi_cleanup()
+  *
+  * Desc:    Cleans up and removes a whole multi stack. It does not free or
+  *          touch any individual easy handles in any way. We need to define
+  *          in what state those handles will be if this function is called
+  *          in the middle of a transfer.
+  *
+  * Returns: CURLMcode type, general multi error code.
+  */
+CURL_EXTERN CURLMcode curl_multi_cleanup(CURLM *multi_handle);
+
+/*
+ * Name:    curl_multi_info_read()
+ *
+ * Desc:    Ask the multi handle if there's any messages/informationals from
+ *          the individual transfers. Messages include informationals such as
+ *          error code from the transfer or just the fact that a transfer is
+ *          completed. More details on these should be written down as well.
+ *
+ *          Repeated calls to this function will return a new struct each
+ *          time, until a special "end of msgs" struct is returned as a signal
+ *          that there is no more to get at this point.
+ *
+ *          The data the returned pointer points to will not survive calling
+ *          curl_multi_cleanup().
+ *
+ *          The 'CURLMsg' struct is meant to be very simple and only contain
+ *          very basic informations. If more involved information is wanted,
+ *          we will provide the particular "transfer handle" in that struct
+ *          and that should/could/would be used in subsequent
+ *          curl_easy_getinfo() calls (or similar). The point being that we
+ *          must never expose complex structs to applications, as then we'll
+ *          undoubtably get backwards compatibility problems in the future.
+ *
+ * Returns: A pointer to a filled-in struct, or NULL if it failed or ran out
+ *          of structs. It also writes the number of messages left in the
+ *          queue (after this read) in the integer the second argument points
+ *          to.
+ */
+CURL_EXTERN CURLMsg *curl_multi_info_read(CURLM *multi_handle,
+                                          int *msgs_in_queue);
+
+/*
+ * Name:    curl_multi_strerror()
+ *
+ * Desc:    The curl_multi_strerror function may be used to turn a CURLMcode
+ *          value into the equivalent human readable error string.  This is
+ *          useful for printing meaningful error messages.
+ *
+ * Returns: A pointer to a zero-terminated error message.
+ */
+CURL_EXTERN const char *curl_multi_strerror(CURLMcode);
+
+/*
+ * Name:    curl_multi_socket() and
+ *          curl_multi_socket_all()
+ *
+ * Desc:    An alternative version of curl_multi_perform() that allows the
+ *          application to pass in one of the file descriptors that have been
+ *          detected to have "action" on them and let libcurl perform.
+ *          See man page for details.
+ */
+#define CURL_POLL_NONE   0
+#define CURL_POLL_IN     1
+#define CURL_POLL_OUT    2
+#define CURL_POLL_INOUT  3
+#define CURL_POLL_REMOVE 4
+
+#define CURL_SOCKET_TIMEOUT CURL_SOCKET_BAD
+
+#define CURL_CSELECT_IN   0x01
+#define CURL_CSELECT_OUT  0x02
+#define CURL_CSELECT_ERR  0x04
+
+typedef int (*curl_socket_callback)(CURL *easy,      /* easy handle */
+                                    curl_socket_t s, /* socket */
+                                    int what,        /* see above */
+                                    void *userp,     /* private callback
+                                                        pointer */
+                                    void *socketp);  /* private socket
+                                                        pointer */
+/*
+ * Name:    curl_multi_timer_callback
+ *
+ * Desc:    Called by libcurl whenever the library detects a change in the
+ *          maximum number of milliseconds the app is allowed to wait before
+ *          curl_multi_socket() or curl_multi_perform() must be called
+ *          (to allow libcurl's timed events to take place).
+ *
+ * Returns: The callback should return zero.
+ */
+typedef int (*curl_multi_timer_callback)(CURLM *multi,    /* multi handle */
+                                         long timeout_ms, /* see above */
+                                         void *userp);    /* private callback
+                                                             pointer */
+
+CURL_EXTERN CURLMcode curl_multi_socket(CURLM *multi_handle, curl_socket_t s,
+                                        int *running_handles);
+
+CURL_EXTERN CURLMcode curl_multi_socket_action(CURLM *multi_handle,
+                                               curl_socket_t s,
+                                               int ev_bitmask,
+                                               int *running_handles);
+
+CURL_EXTERN CURLMcode curl_multi_socket_all(CURLM *multi_handle,
+                                            int *running_handles);
+
+#ifndef CURL_ALLOW_OLD_MULTI_SOCKET
+/* This macro below was added in 7.16.3 to push users who recompile to use
+   the new curl_multi_socket_action() instead of the old curl_multi_socket()
+*/
+#define curl_multi_socket(x,y,z) curl_multi_socket_action(x,y,0,z)
+#endif
+
+/*
+ * Name:    curl_multi_timeout()
+ *
+ * Desc:    Returns the maximum number of milliseconds the app is allowed to
+ *          wait before curl_multi_socket() or curl_multi_perform() must be
+ *          called (to allow libcurl's timed events to take place).
+ *
+ * Returns: CURLM error code.
+ */
+CURL_EXTERN CURLMcode curl_multi_timeout(CURLM *multi_handle,
+                                         long *milliseconds);
+
+#undef CINIT /* re-using the same name as in curl.h */
+
+#ifdef CURL_ISOCPP
+#define CINIT(name,type,num) CURLMOPT_ ## name = CURLOPTTYPE_ ## type + num
+#else
+/* The macro "##" is ISO C, we assume pre-ISO C doesn't support it. */
+#define LONG          CURLOPTTYPE_LONG
+#define OBJECTPOINT   CURLOPTTYPE_OBJECTPOINT
+#define FUNCTIONPOINT CURLOPTTYPE_FUNCTIONPOINT
+#define OFF_T         CURLOPTTYPE_OFF_T
+#define CINIT(name,type,number) CURLMOPT_/**/name = type + number
+#endif
+
+typedef enum {
+  /* This is the socket callback function pointer */
+  CINIT(SOCKETFUNCTION, FUNCTIONPOINT, 1),
+
+  /* This is the argument passed to the socket callback */
+  CINIT(SOCKETDATA, OBJECTPOINT, 2),
+
+    /* set to 1 to enable pipelining for this multi handle */
+  CINIT(PIPELINING, LONG, 3),
+
+   /* This is the timer callback function pointer */
+  CINIT(TIMERFUNCTION, FUNCTIONPOINT, 4),
+
+  /* This is the argument passed to the timer callback */
+  CINIT(TIMERDATA, OBJECTPOINT, 5),
+
+  /* maximum number of entries in the connection cache */
+  CINIT(MAXCONNECTS, LONG, 6),
+
+  CURLMOPT_LASTENTRY /* the last unused */
+} CURLMoption;
+
+
+/*
+ * Name:    curl_multi_setopt()
+ *
+ * Desc:    Sets options for the multi handle.
+ *
+ * Returns: CURLM error code.
+ */
+CURL_EXTERN CURLMcode curl_multi_setopt(CURLM *multi_handle,
+                                        CURLMoption option, ...);
+
+
+/*
+ * Name:    curl_multi_assign()
+ *
+ * Desc:    This function sets an association in the multi handle between the
+ *          given socket and a private pointer of the application. This is
+ *          (only) useful for curl_multi_socket uses.
+ *
+ * Returns: CURLM error code.
+ */
+CURL_EXTERN CURLMcode curl_multi_assign(CURLM *multi_handle,
+                                        curl_socket_t sockfd, void *sockp);
+
+#ifdef __cplusplus
+} /* end of extern "C" */
+#endif
+
+#endif
diff --git a/google-breakpad/src/third_party/curl/stdcheaders.h b/google-breakpad/src/third_party/curl/stdcheaders.h
new file mode 100644
index 0000000..f739d7f
--- /dev/null
+++ b/google-breakpad/src/third_party/curl/stdcheaders.h
@@ -0,0 +1,34 @@
+#ifndef __STDC_HEADERS_H
+#define __STDC_HEADERS_H
+/***************************************************************************
+ *                                  _   _ ____  _     
+ *  Project                     ___| | | |  _ \| |    
+ *                             / __| | | | |_) | |    
+ *                            | (__| |_| |  _ <| |___ 
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2009, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ * 
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * $Id: stdcheaders.h,v 1.9 2009-05-18 12:25:45 yangtse Exp $
+ ***************************************************************************/
+
+#include <sys/types.h>
+
+size_t fread (void *, size_t, size_t, FILE *);
+size_t fwrite (const void *, size_t, size_t, FILE *);
+
+int strcasecmp(const char *, const char *);
+int strncasecmp(const char *, const char *, size_t);
+
+#endif
diff --git a/google-breakpad/src/third_party/curl/typecheck-gcc.h b/google-breakpad/src/third_party/curl/typecheck-gcc.h
new file mode 100644
index 0000000..9788305
--- /dev/null
+++ b/google-breakpad/src/third_party/curl/typecheck-gcc.h
@@ -0,0 +1,551 @@
+#ifndef __CURL_TYPECHECK_GCC_H
+#define __CURL_TYPECHECK_GCC_H
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2009, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ * $Id: typecheck-gcc.h,v 1.9 2009-01-25 23:26:31 bagder Exp $
+ ***************************************************************************/
+
+/* wraps curl_easy_setopt() with typechecking */
+
+/* To add a new kind of warning, add an
+ *   if(_curl_is_sometype_option(_curl_opt) && ! _curl_is_sometype(value))
+ *     _curl_easy_setopt_err_sometype();
+ * block and define _curl_is_sometype_option, _curl_is_sometype and
+ * _curl_easy_setopt_err_sometype below
+ *
+ * To add an option that uses the same type as an existing option, you'll just
+ * need to extend the appropriate _curl_*_option macro
+ */
+#define curl_easy_setopt(handle, option, value)                               \
+__extension__ ({                                                              \
+  __typeof__ (option) _curl_opt = option;                                     \
+  if (__builtin_constant_p(_curl_opt)) {                                      \
+    if (_curl_is_long_option(_curl_opt) && !_curl_is_long(value))             \
+      _curl_easy_setopt_err_long();                                           \
+    if (_curl_is_off_t_option(_curl_opt) && !_curl_is_off_t(value))           \
+      _curl_easy_setopt_err_curl_off_t();                                     \
+    if (_curl_is_string_option(_curl_opt) && !_curl_is_string(value))         \
+      _curl_easy_setopt_err_string();                                         \
+    if (_curl_is_write_cb_option(_curl_opt) && !_curl_is_write_cb(value))     \
+      _curl_easy_setopt_err_write_callback();                                 \
+    if ((_curl_opt) == CURLOPT_READFUNCTION && !_curl_is_read_cb(value))      \
+      _curl_easy_setopt_err_read_cb();                                        \
+    if ((_curl_opt) == CURLOPT_IOCTLFUNCTION && !_curl_is_ioctl_cb(value))    \
+      _curl_easy_setopt_err_ioctl_cb();                                       \
+    if ((_curl_opt) == CURLOPT_SOCKOPTFUNCTION && !_curl_is_sockopt_cb(value))\
+      _curl_easy_setopt_err_sockopt_cb();                                     \
+    if ((_curl_opt) == CURLOPT_OPENSOCKETFUNCTION &&                          \
+            !_curl_is_opensocket_cb(value))                                   \
+      _curl_easy_setopt_err_opensocket_cb();                                  \
+    if ((_curl_opt) == CURLOPT_PROGRESSFUNCTION &&                            \
+            !_curl_is_progress_cb(value))                                     \
+      _curl_easy_setopt_err_progress_cb();                                    \
+    if ((_curl_opt) == CURLOPT_DEBUGFUNCTION && !_curl_is_debug_cb(value))    \
+      _curl_easy_setopt_err_debug_cb();                                       \
+    if ((_curl_opt) == CURLOPT_SSL_CTX_FUNCTION &&                            \
+            !_curl_is_ssl_ctx_cb(value))                                      \
+      _curl_easy_setopt_err_ssl_ctx_cb();                                     \
+    if (_curl_is_conv_cb_option(_curl_opt) && !_curl_is_conv_cb(value))       \
+      _curl_easy_setopt_err_conv_cb();                                        \
+    if ((_curl_opt) == CURLOPT_SEEKFUNCTION && !_curl_is_seek_cb(value))      \
+      _curl_easy_setopt_err_seek_cb();                                        \
+    if (_curl_is_cb_data_option(_curl_opt) && !_curl_is_cb_data(value))       \
+      _curl_easy_setopt_err_cb_data();                                        \
+    if ((_curl_opt) == CURLOPT_ERRORBUFFER && !_curl_is_error_buffer(value))  \
+      _curl_easy_setopt_err_error_buffer();                                   \
+    if ((_curl_opt) == CURLOPT_STDERR && !_curl_is_FILE(value))               \
+      _curl_easy_setopt_err_FILE();                                           \
+    if (_curl_is_postfields_option(_curl_opt) && !_curl_is_postfields(value)) \
+      _curl_easy_setopt_err_postfields();                                     \
+    if ((_curl_opt) == CURLOPT_HTTPPOST &&                                    \
+            !_curl_is_arr((value), struct curl_httppost))                     \
+      _curl_easy_setopt_err_curl_httpost();                                   \
+    if (_curl_is_slist_option(_curl_opt) &&                                   \
+            !_curl_is_arr((value), struct curl_slist))                        \
+      _curl_easy_setopt_err_curl_slist();                                     \
+    if ((_curl_opt) == CURLOPT_SHARE && !_curl_is_ptr((value), CURLSH))       \
+      _curl_easy_setopt_err_CURLSH();                                         \
+  }                                                                           \
+  curl_easy_setopt(handle, _curl_opt, value);                                 \
+})
+
+/* wraps curl_easy_getinfo() with typechecking */
+/* FIXME: don't allow const pointers */
+#define curl_easy_getinfo(handle, info, arg)                                  \
+__extension__ ({                                                              \
+  __typeof__ (info) _curl_info = info;                                        \
+  if (__builtin_constant_p(_curl_info)) {                                     \
+    if (_curl_is_string_info(_curl_info) && !_curl_is_arr((arg), char *))     \
+      _curl_easy_getinfo_err_string();                                        \
+    if (_curl_is_long_info(_curl_info) && !_curl_is_arr((arg), long))         \
+      _curl_easy_getinfo_err_long();                                          \
+    if (_curl_is_double_info(_curl_info) && !_curl_is_arr((arg), double))     \
+      _curl_easy_getinfo_err_double();                                        \
+    if (_curl_is_slist_info(_curl_info) &&                                    \
+           !_curl_is_arr((arg), struct curl_slist *))                         \
+      _curl_easy_getinfo_err_curl_slist();                                    \
+  }                                                                           \
+  curl_easy_getinfo(handle, _curl_info, arg);                                 \
+})
+
+/* TODO: typechecking for curl_share_setopt() and curl_multi_setopt(),
+ * for now just make sure that the functions are called with three
+ * arguments
+ */
+#define curl_share_setopt(share,opt,param) curl_share_setopt(share,opt,param)
+#define curl_multi_setopt(handle,opt,param) curl_multi_setopt(handle,opt,param)
+
+
+/* the actual warnings, triggered by calling the _curl_easy_setopt_err*
+ * functions */
+
+/* To define a new warning, use _CURL_WARNING(identifier, "message") */
+#define _CURL_WARNING(id, message)                                            \
+  static void __attribute__((warning(message))) __attribute__((unused))       \
+  __attribute__((noinline)) id(void) { __asm__(""); }
+
+_CURL_WARNING(_curl_easy_setopt_err_long,
+  "curl_easy_setopt expects a long argument for this option")
+_CURL_WARNING(_curl_easy_setopt_err_curl_off_t,
+  "curl_easy_setopt expects a curl_off_t argument for this option")
+_CURL_WARNING(_curl_easy_setopt_err_string,
+  "curl_easy_setopt expects a string (char* or char[]) argument for this option"
+  )
+_CURL_WARNING(_curl_easy_setopt_err_write_callback,
+  "curl_easy_setopt expects a curl_write_callback argument for this option")
+_CURL_WARNING(_curl_easy_setopt_err_read_cb,
+  "curl_easy_setopt expects a curl_read_callback argument for this option")
+_CURL_WARNING(_curl_easy_setopt_err_ioctl_cb,
+  "curl_easy_setopt expects a curl_ioctl_callback argument for this option")
+_CURL_WARNING(_curl_easy_setopt_err_sockopt_cb,
+  "curl_easy_setopt expects a curl_sockopt_callback argument for this option")
+_CURL_WARNING(_curl_easy_setopt_err_opensocket_cb,
+  "curl_easy_setopt expects a curl_opensocket_callback argument for this option"
+  )
+_CURL_WARNING(_curl_easy_setopt_err_progress_cb,
+  "curl_easy_setopt expects a curl_progress_callback argument for this option")
+_CURL_WARNING(_curl_easy_setopt_err_debug_cb,
+  "curl_easy_setopt expects a curl_debug_callback argument for this option")
+_CURL_WARNING(_curl_easy_setopt_err_ssl_ctx_cb,
+  "curl_easy_setopt expects a curl_ssl_ctx_callback argument for this option")
+_CURL_WARNING(_curl_easy_setopt_err_conv_cb,
+  "curl_easy_setopt expects a curl_conv_callback argument for this option")
+_CURL_WARNING(_curl_easy_setopt_err_seek_cb,
+  "curl_easy_setopt expects a curl_seek_callback argument for this option")
+_CURL_WARNING(_curl_easy_setopt_err_cb_data,
+  "curl_easy_setopt expects a private data pointer as argument for this option")
+_CURL_WARNING(_curl_easy_setopt_err_error_buffer,
+  "curl_easy_setopt expects a char buffer of CURL_ERROR_SIZE as argument for this option")
+_CURL_WARNING(_curl_easy_setopt_err_FILE,
+  "curl_easy_setopt expects a FILE* argument for this option")
+_CURL_WARNING(_curl_easy_setopt_err_postfields,
+  "curl_easy_setopt expects a void* or char* argument for this option")
+_CURL_WARNING(_curl_easy_setopt_err_curl_httpost,
+  "curl_easy_setopt expects a struct curl_httppost* argument for this option")
+_CURL_WARNING(_curl_easy_setopt_err_curl_slist,
+  "curl_easy_setopt expects a struct curl_slist* argument for this option")
+_CURL_WARNING(_curl_easy_setopt_err_CURLSH,
+  "curl_easy_setopt expects a CURLSH* argument for this option")
+
+_CURL_WARNING(_curl_easy_getinfo_err_string,
+  "curl_easy_getinfo expects a pointer to char * for this info")
+_CURL_WARNING(_curl_easy_getinfo_err_long,
+  "curl_easy_getinfo expects a pointer to long for this info")
+_CURL_WARNING(_curl_easy_getinfo_err_double,
+  "curl_easy_getinfo expects a pointer to double for this info")
+_CURL_WARNING(_curl_easy_getinfo_err_curl_slist,
+  "curl_easy_getinfo expects a pointer to struct curl_slist * for this info")
+
+/* groups of curl_easy_setops options that take the same type of argument */
+
+/* To add a new option to one of the groups, just add
+ *   (option) == CURLOPT_SOMETHING
+ * to the or-expression. If the option takes a long or curl_off_t, you don't
+ * have to do anything
+ */
+
+/* evaluates to true if option takes a long argument */
+#define _curl_is_long_option(option)                                          \
+  (0 < (option) && (option) < CURLOPTTYPE_OBJECTPOINT)
+
+#define _curl_is_off_t_option(option)                                         \
+  ((option) > CURLOPTTYPE_OFF_T)
+
+/* evaluates to true if option takes a char* argument */
+#define _curl_is_string_option(option)                                        \
+  ((option) == CURLOPT_URL ||                                                 \
+   (option) == CURLOPT_PROXY ||                                               \
+   (option) == CURLOPT_INTERFACE ||                                           \
+   (option) == CURLOPT_NETRC_FILE ||                                          \
+   (option) == CURLOPT_USERPWD ||                                             \
+   (option) == CURLOPT_USERNAME ||                                            \
+   (option) == CURLOPT_PASSWORD ||                                            \
+   (option) == CURLOPT_PROXYUSERPWD ||                                        \
+   (option) == CURLOPT_PROXYUSERNAME ||                                       \
+   (option) == CURLOPT_PROXYPASSWORD ||                                       \
+   (option) == CURLOPT_NOPROXY ||                                             \
+   (option) == CURLOPT_ENCODING ||                                            \
+   (option) == CURLOPT_REFERER ||                                             \
+   (option) == CURLOPT_USERAGENT ||                                           \
+   (option) == CURLOPT_COOKIE ||                                              \
+   (option) == CURLOPT_COOKIEFILE ||                                          \
+   (option) == CURLOPT_COOKIEJAR ||                                           \
+   (option) == CURLOPT_COOKIELIST ||                                          \
+   (option) == CURLOPT_FTPPORT ||                                             \
+   (option) == CURLOPT_FTP_ALTERNATIVE_TO_USER ||                             \
+   (option) == CURLOPT_FTP_ACCOUNT ||                                         \
+   (option) == CURLOPT_RANGE ||                                               \
+   (option) == CURLOPT_CUSTOMREQUEST ||                                       \
+   (option) == CURLOPT_SSLCERT ||                                             \
+   (option) == CURLOPT_SSLCERTTYPE ||                                         \
+   (option) == CURLOPT_SSLKEY ||                                              \
+   (option) == CURLOPT_SSLKEYTYPE ||                                          \
+   (option) == CURLOPT_KEYPASSWD ||                                           \
+   (option) == CURLOPT_SSLENGINE ||                                           \
+   (option) == CURLOPT_CAINFO ||                                              \
+   (option) == CURLOPT_CAPATH ||                                              \
+   (option) == CURLOPT_RANDOM_FILE ||                                         \
+   (option) == CURLOPT_EGDSOCKET ||                                           \
+   (option) == CURLOPT_SSL_CIPHER_LIST ||                                     \
+   (option) == CURLOPT_KRBLEVEL ||                                            \
+   (option) == CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 ||                             \
+   (option) == CURLOPT_SSH_PUBLIC_KEYFILE ||                                  \
+   (option) == CURLOPT_SSH_PRIVATE_KEYFILE ||                                 \
+   (option) == CURLOPT_CRLFILE ||                                             \
+   (option) == CURLOPT_ISSUERCERT ||                                          \
+   0)
+
+/* evaluates to true if option takes a curl_write_callback argument */
+#define _curl_is_write_cb_option(option)                                      \
+  ((option) == CURLOPT_HEADERFUNCTION ||                                      \
+   (option) == CURLOPT_WRITEFUNCTION)
+
+/* evaluates to true if option takes a curl_conv_callback argument */
+#define _curl_is_conv_cb_option(option)                                       \
+  ((option) == CURLOPT_CONV_TO_NETWORK_FUNCTION ||                            \
+   (option) == CURLOPT_CONV_FROM_NETWORK_FUNCTION ||                          \
+   (option) == CURLOPT_CONV_FROM_UTF8_FUNCTION)
+
+/* evaluates to true if option takes a data argument to pass to a callback */
+#define _curl_is_cb_data_option(option)                                       \
+  ((option) == CURLOPT_WRITEDATA ||                                           \
+   (option) == CURLOPT_READDATA ||                                            \
+   (option) == CURLOPT_IOCTLDATA ||                                           \
+   (option) == CURLOPT_SOCKOPTDATA ||                                         \
+   (option) == CURLOPT_OPENSOCKETDATA ||                                      \
+   (option) == CURLOPT_PROGRESSDATA ||                                        \
+   (option) == CURLOPT_WRITEHEADER ||                                         \
+   (option) == CURLOPT_DEBUGDATA ||                                           \
+   (option) == CURLOPT_SSL_CTX_DATA ||                                        \
+   (option) == CURLOPT_SEEKDATA ||                                            \
+   (option) == CURLOPT_PRIVATE ||                                             \
+   0)
+
+/* evaluates to true if option takes a POST data argument (void* or char*) */
+#define _curl_is_postfields_option(option)                                    \
+  ((option) == CURLOPT_POSTFIELDS ||                                          \
+   (option) == CURLOPT_COPYPOSTFIELDS ||                                      \
+   0)
+
+/* evaluates to true if option takes a struct curl_slist * argument */
+#define _curl_is_slist_option(option)                                         \
+  ((option) == CURLOPT_HTTPHEADER ||                                          \
+   (option) == CURLOPT_HTTP200ALIASES ||                                      \
+   (option) == CURLOPT_QUOTE ||                                               \
+   (option) == CURLOPT_POSTQUOTE ||                                           \
+   (option) == CURLOPT_PREQUOTE ||                                            \
+   (option) == CURLOPT_TELNETOPTIONS ||                                       \
+   0)
+
+/* groups of curl_easy_getinfo infos that take the same type of argument */
+
+/* evaluates to true if info expects a pointer to char * argument */
+#define _curl_is_string_info(info)                                            \
+  (CURLINFO_STRING < (info) && (info) < CURLINFO_LONG)
+
+/* evaluates to true if info expects a pointer to long argument */
+#define _curl_is_long_info(info)                                              \
+  (CURLINFO_LONG < (info) && (info) < CURLINFO_DOUBLE)
+
+/* evaluates to true if info expects a pointer to double argument */
+#define _curl_is_double_info(info)                                            \
+  (CURLINFO_DOUBLE < (info) && (info) < CURLINFO_SLIST)
+
+/* true if info expects a pointer to struct curl_slist * argument */
+#define _curl_is_slist_info(info)                                             \
+  (CURLINFO_SLIST < (info))
+
+
+/* typecheck helpers -- check whether given expression has requested type*/
+
+/* For pointers, you can use the _curl_is_ptr/_curl_is_arr macros,
+ * otherwise define a new macro. Search for __builtin_types_compatible_p
+ * in the GCC manual.
+ * NOTE: these macros MUST NOT EVALUATE their arguments! The argument is
+ * the actual expression passed to the curl_easy_setopt macro. This
+ * means that you can only apply the sizeof and __typeof__ operators, no
+ * == or whatsoever.
+ */
+
+/* XXX: should evaluate to true iff expr is a pointer */
+#define _curl_is_any_ptr(expr)                                                \
+  (sizeof(expr) == sizeof(void*))
+
+/* evaluates to true if expr is NULL */
+/* XXX: must not evaluate expr, so this check is not accurate */
+#define _curl_is_NULL(expr)                                                   \
+  (__builtin_types_compatible_p(__typeof__(expr), __typeof__(NULL)))
+
+/* evaluates to true if expr is type*, const type* or NULL */
+#define _curl_is_ptr(expr, type)                                              \
+  (_curl_is_NULL(expr) ||                                                     \
+   __builtin_types_compatible_p(__typeof__(expr), type *) ||                  \
+   __builtin_types_compatible_p(__typeof__(expr), const type *))
+
+/* evaluates to true if expr is one of type[], type*, NULL or const type* */
+#define _curl_is_arr(expr, type)                                              \
+  (_curl_is_ptr((expr), type) ||                                              \
+   __builtin_types_compatible_p(__typeof__(expr), type []))
+
+/* evaluates to true if expr is a string */
+#define _curl_is_string(expr)                                                 \
+  (_curl_is_arr((expr), char) ||                                              \
+   _curl_is_arr((expr), signed char) ||                                       \
+   _curl_is_arr((expr), unsigned char))
+
+/* evaluates to true if expr is a long (no matter the signedness)
+ * XXX: for now, int is also accepted (and therefore short and char, which
+ * are promoted to int when passed to a variadic function) */
+#define _curl_is_long(expr)                                                   \
+  (__builtin_types_compatible_p(__typeof__(expr), long) ||                    \
+   __builtin_types_compatible_p(__typeof__(expr), signed long) ||             \
+   __builtin_types_compatible_p(__typeof__(expr), unsigned long) ||           \
+   __builtin_types_compatible_p(__typeof__(expr), int) ||                     \
+   __builtin_types_compatible_p(__typeof__(expr), signed int) ||              \
+   __builtin_types_compatible_p(__typeof__(expr), unsigned int) ||            \
+   __builtin_types_compatible_p(__typeof__(expr), short) ||                   \
+   __builtin_types_compatible_p(__typeof__(expr), signed short) ||            \
+   __builtin_types_compatible_p(__typeof__(expr), unsigned short) ||          \
+   __builtin_types_compatible_p(__typeof__(expr), char) ||                    \
+   __builtin_types_compatible_p(__typeof__(expr), signed char) ||             \
+   __builtin_types_compatible_p(__typeof__(expr), unsigned char))
+
+/* evaluates to true if expr is of type curl_off_t */
+#define _curl_is_off_t(expr)                                                  \
+  (__builtin_types_compatible_p(__typeof__(expr), curl_off_t))
+
+/* evaluates to true if expr is abuffer suitable for CURLOPT_ERRORBUFFER */
+/* XXX: also check size of an char[] array? */
+#define _curl_is_error_buffer(expr)                                           \
+  (__builtin_types_compatible_p(__typeof__(expr), char *) ||                  \
+   __builtin_types_compatible_p(__typeof__(expr), char[]))
+
+/* evaluates to true if expr is of type (const) void* or (const) FILE* */
+#if 0
+#define _curl_is_cb_data(expr)                                                \
+  (_curl_is_ptr((expr), void) ||                                              \
+   _curl_is_ptr((expr), FILE))
+#else /* be less strict */
+#define _curl_is_cb_data(expr)                                                \
+  _curl_is_any_ptr(expr)
+#endif
+
+/* evaluates to true if expr is of type FILE* */
+#define _curl_is_FILE(expr)                                                   \
+  (__builtin_types_compatible_p(__typeof__(expr), FILE *))
+
+/* evaluates to true if expr can be passed as POST data (void* or char*) */
+#define _curl_is_postfields(expr)                                             \
+  (_curl_is_ptr((expr), void) ||                                              \
+   _curl_is_arr((expr), char))
+
+/* FIXME: the whole callback checking is messy...
+ * The idea is to tolerate char vs. void and const vs. not const
+ * pointers in arguments at least
+ */
+/* helper: __builtin_types_compatible_p distinguishes between functions and
+ * function pointers, hide it */
+#define _curl_callback_compatible(func, type)                                 \
+  (__builtin_types_compatible_p(__typeof__(func), type) ||                    \
+   __builtin_types_compatible_p(__typeof__(func), type*))
+
+/* evaluates to true if expr is of type curl_read_callback or "similar" */
+#define _curl_is_read_cb(expr)                                          \
+  (_curl_is_NULL(expr) ||                                                     \
+   __builtin_types_compatible_p(__typeof__(expr), __typeof__(fread)) ||       \
+   __builtin_types_compatible_p(__typeof__(expr), curl_read_callback) ||      \
+   _curl_callback_compatible((expr), _curl_read_callback1) ||                 \
+   _curl_callback_compatible((expr), _curl_read_callback2) ||                 \
+   _curl_callback_compatible((expr), _curl_read_callback3) ||                 \
+   _curl_callback_compatible((expr), _curl_read_callback4) ||                 \
+   _curl_callback_compatible((expr), _curl_read_callback5) ||                 \
+   _curl_callback_compatible((expr), _curl_read_callback6))
+typedef size_t (_curl_read_callback1)(char *, size_t, size_t, void*);
+typedef size_t (_curl_read_callback2)(char *, size_t, size_t, const void*);
+typedef size_t (_curl_read_callback3)(char *, size_t, size_t, FILE*);
+typedef size_t (_curl_read_callback4)(void *, size_t, size_t, void*);
+typedef size_t (_curl_read_callback5)(void *, size_t, size_t, const void*);
+typedef size_t (_curl_read_callback6)(void *, size_t, size_t, FILE*);
+
+/* evaluates to true if expr is of type curl_write_callback or "similar" */
+#define _curl_is_write_cb(expr)                                               \
+  (_curl_is_read_cb(expr) ||                                            \
+   __builtin_types_compatible_p(__typeof__(expr), __typeof__(fwrite)) ||      \
+   __builtin_types_compatible_p(__typeof__(expr), curl_write_callback) ||     \
+   _curl_callback_compatible((expr), _curl_write_callback1) ||                \
+   _curl_callback_compatible((expr), _curl_write_callback2) ||                \
+   _curl_callback_compatible((expr), _curl_write_callback3) ||                \
+   _curl_callback_compatible((expr), _curl_write_callback4) ||                \
+   _curl_callback_compatible((expr), _curl_write_callback5) ||                \
+   _curl_callback_compatible((expr), _curl_write_callback6))
+typedef size_t (_curl_write_callback1)(const char *, size_t, size_t, void*);
+typedef size_t (_curl_write_callback2)(const char *, size_t, size_t,
+                                       const void*);
+typedef size_t (_curl_write_callback3)(const char *, size_t, size_t, FILE*);
+typedef size_t (_curl_write_callback4)(const void *, size_t, size_t, void*);
+typedef size_t (_curl_write_callback5)(const void *, size_t, size_t,
+                                       const void*);
+typedef size_t (_curl_write_callback6)(const void *, size_t, size_t, FILE*);
+
+/* evaluates to true if expr is of type curl_ioctl_callback or "similar" */
+#define _curl_is_ioctl_cb(expr)                                         \
+  (_curl_is_NULL(expr) ||                                                     \
+   __builtin_types_compatible_p(__typeof__(expr), curl_ioctl_callback) ||     \
+   _curl_callback_compatible((expr), _curl_ioctl_callback1) ||                \
+   _curl_callback_compatible((expr), _curl_ioctl_callback2) ||                \
+   _curl_callback_compatible((expr), _curl_ioctl_callback3) ||                \
+   _curl_callback_compatible((expr), _curl_ioctl_callback4))
+typedef curlioerr (_curl_ioctl_callback1)(CURL *, int, void*);
+typedef curlioerr (_curl_ioctl_callback2)(CURL *, int, const void*);
+typedef curlioerr (_curl_ioctl_callback3)(CURL *, curliocmd, void*);
+typedef curlioerr (_curl_ioctl_callback4)(CURL *, curliocmd, const void*);
+
+/* evaluates to true if expr is of type curl_sockopt_callback or "similar" */
+#define _curl_is_sockopt_cb(expr)                                       \
+  (_curl_is_NULL(expr) ||                                                     \
+   __builtin_types_compatible_p(__typeof__(expr), curl_sockopt_callback) ||   \
+   _curl_callback_compatible((expr), _curl_sockopt_callback1) ||              \
+   _curl_callback_compatible((expr), _curl_sockopt_callback2))
+typedef int (_curl_sockopt_callback1)(void *, curl_socket_t, curlsocktype);
+typedef int (_curl_sockopt_callback2)(const void *, curl_socket_t,
+                                      curlsocktype);
+
+/* evaluates to true if expr is of type curl_opensocket_callback or "similar" */
+#define _curl_is_opensocket_cb(expr)                                    \
+  (_curl_is_NULL(expr) ||                                                     \
+   __builtin_types_compatible_p(__typeof__(expr), curl_opensocket_callback) ||\
+   _curl_callback_compatible((expr), _curl_opensocket_callback1) ||           \
+   _curl_callback_compatible((expr), _curl_opensocket_callback2) ||           \
+   _curl_callback_compatible((expr), _curl_opensocket_callback3) ||           \
+   _curl_callback_compatible((expr), _curl_opensocket_callback4))
+typedef curl_socket_t (_curl_opensocket_callback1)
+  (void *, curlsocktype, struct curl_sockaddr *);
+typedef curl_socket_t (_curl_opensocket_callback2)
+  (void *, curlsocktype, const struct curl_sockaddr *);
+typedef curl_socket_t (_curl_opensocket_callback3)
+  (const void *, curlsocktype, struct curl_sockaddr *);
+typedef curl_socket_t (_curl_opensocket_callback4)
+  (const void *, curlsocktype, const struct curl_sockaddr *);
+
+/* evaluates to true if expr is of type curl_progress_callback or "similar" */
+#define _curl_is_progress_cb(expr)                                      \
+  (_curl_is_NULL(expr) ||                                                     \
+   __builtin_types_compatible_p(__typeof__(expr), curl_progress_callback) ||  \
+   _curl_callback_compatible((expr), _curl_progress_callback1) ||             \
+   _curl_callback_compatible((expr), _curl_progress_callback2))
+typedef int (_curl_progress_callback1)(void *,
+    double, double, double, double);
+typedef int (_curl_progress_callback2)(const void *,
+    double, double, double, double);
+
+/* evaluates to true if expr is of type curl_debug_callback or "similar" */
+#define _curl_is_debug_cb(expr)                                         \
+  (_curl_is_NULL(expr) ||                                                     \
+   __builtin_types_compatible_p(__typeof__(expr), curl_debug_callback) ||     \
+   _curl_callback_compatible((expr), _curl_debug_callback1) ||                \
+   _curl_callback_compatible((expr), _curl_debug_callback2) ||                \
+   _curl_callback_compatible((expr), _curl_debug_callback3) ||                \
+   _curl_callback_compatible((expr), _curl_debug_callback4))
+typedef int (_curl_debug_callback1) (CURL *,
+    curl_infotype, char *, size_t, void *);
+typedef int (_curl_debug_callback2) (CURL *,
+    curl_infotype, char *, size_t, const void *);
+typedef int (_curl_debug_callback3) (CURL *,
+    curl_infotype, const char *, size_t, void *);
+typedef int (_curl_debug_callback4) (CURL *,
+    curl_infotype, const char *, size_t, const void *);
+
+/* evaluates to true if expr is of type curl_ssl_ctx_callback or "similar" */
+/* this is getting even messier... */
+#define _curl_is_ssl_ctx_cb(expr)                                       \
+  (_curl_is_NULL(expr) ||                                                     \
+   __builtin_types_compatible_p(__typeof__(expr), curl_ssl_ctx_callback) ||   \
+   _curl_callback_compatible((expr), _curl_ssl_ctx_callback1) ||              \
+   _curl_callback_compatible((expr), _curl_ssl_ctx_callback2) ||              \
+   _curl_callback_compatible((expr), _curl_ssl_ctx_callback3) ||              \
+   _curl_callback_compatible((expr), _curl_ssl_ctx_callback4) ||              \
+   _curl_callback_compatible((expr), _curl_ssl_ctx_callback5) ||              \
+   _curl_callback_compatible((expr), _curl_ssl_ctx_callback6) ||              \
+   _curl_callback_compatible((expr), _curl_ssl_ctx_callback7) ||              \
+   _curl_callback_compatible((expr), _curl_ssl_ctx_callback8))
+typedef CURLcode (_curl_ssl_ctx_callback1)(CURL *, void *, void *);
+typedef CURLcode (_curl_ssl_ctx_callback2)(CURL *, void *, const void *);
+typedef CURLcode (_curl_ssl_ctx_callback3)(CURL *, const void *, void *);
+typedef CURLcode (_curl_ssl_ctx_callback4)(CURL *, const void *, const void *);
+#ifdef HEADER_SSL_H
+/* hack: if we included OpenSSL's ssl.h, we know about SSL_CTX
+ * this will of course break if we're included before OpenSSL headers...
+ */
+typedef CURLcode (_curl_ssl_ctx_callback5)(CURL *, SSL_CTX, void *);
+typedef CURLcode (_curl_ssl_ctx_callback6)(CURL *, SSL_CTX, const void *);
+typedef CURLcode (_curl_ssl_ctx_callback7)(CURL *, const SSL_CTX, void *);
+typedef CURLcode (_curl_ssl_ctx_callback8)(CURL *, const SSL_CTX, const void *);
+#else
+typedef _curl_ssl_ctx_callback1 _curl_ssl_ctx_callback5;
+typedef _curl_ssl_ctx_callback1 _curl_ssl_ctx_callback6;
+typedef _curl_ssl_ctx_callback1 _curl_ssl_ctx_callback7;
+typedef _curl_ssl_ctx_callback1 _curl_ssl_ctx_callback8;
+#endif
+
+/* evaluates to true if expr is of type curl_conv_callback or "similar" */
+#define _curl_is_conv_cb(expr)                                          \
+  (_curl_is_NULL(expr) ||                                                     \
+   __builtin_types_compatible_p(__typeof__(expr), curl_conv_callback) ||      \
+   _curl_callback_compatible((expr), _curl_conv_callback1) ||                 \
+   _curl_callback_compatible((expr), _curl_conv_callback2) ||                 \
+   _curl_callback_compatible((expr), _curl_conv_callback3) ||                 \
+   _curl_callback_compatible((expr), _curl_conv_callback4))
+typedef CURLcode (*_curl_conv_callback1)(char *, size_t length);
+typedef CURLcode (*_curl_conv_callback2)(const char *, size_t length);
+typedef CURLcode (*_curl_conv_callback3)(void *, size_t length);
+typedef CURLcode (*_curl_conv_callback4)(const void *, size_t length);
+
+/* evaluates to true if expr is of type curl_seek_callback or "similar" */
+#define _curl_is_seek_cb(expr)                                          \
+  (_curl_is_NULL(expr) ||                                                     \
+   __builtin_types_compatible_p(__typeof__(expr), curl_seek_callback) ||      \
+   _curl_callback_compatible((expr), _curl_seek_callback1) ||                 \
+   _curl_callback_compatible((expr), _curl_seek_callback2))
+typedef CURLcode (*_curl_seek_callback1)(void *, curl_off_t, int);
+typedef CURLcode (*_curl_seek_callback2)(const void *, curl_off_t, int);
+
+
+#endif /* __CURL_TYPECHECK_GCC_H */
diff --git a/google-breakpad/src/third_party/curl/types.h b/google-breakpad/src/third_party/curl/types.h
new file mode 100644
index 0000000..d37d6ae
--- /dev/null
+++ b/google-breakpad/src/third_party/curl/types.h
@@ -0,0 +1 @@
+/* not used */
diff --git a/google-breakpad/src/third_party/libdisasm/Makefile.am b/google-breakpad/src/third_party/libdisasm/Makefile.am
new file mode 100644
index 0000000..bd3129e
--- /dev/null
+++ b/google-breakpad/src/third_party/libdisasm/Makefile.am
@@ -0,0 +1,43 @@
+include_HEADERS = libdis.h
+lib_LTLIBRARIES = libdisasm.la
+libdisasm_la_SOURCES = \
+	ia32_implicit.c \
+	ia32_implicit.h \
+	ia32_insn.c \
+	ia32_insn.h \
+	ia32_invariant.c \
+	ia32_invariant.h \
+	ia32_modrm.c \
+	ia32_modrm.h \
+	ia32_opcode_tables.c \
+	ia32_opcode_tables.h \
+	ia32_operand.c \
+	ia32_operand.h \
+	ia32_reg.c \
+	ia32_reg.h \
+	ia32_settings.c \
+	ia32_settings.h \
+	libdis.h \
+	qword.h \
+	x86_disasm.c \
+	x86_format.c \
+	x86_imm.c \
+	x86_imm.h \
+	x86_insn.c \
+	x86_misc.c \
+	x86_operand_list.c \
+	x86_operand_list.h
+
+# Cheat to get non-autoconf swig into tarball,
+# even if it doesn't build by default.
+EXTRA_DIST = \
+swig/Makefile \
+swig/libdisasm.i \
+swig/libdisasm_oop.i \
+swig/python/Makefile-swig \
+swig/perl/Makefile-swig \
+swig/perl/Makefile.PL \
+swig/ruby/Makefile-swig \
+swig/ruby/extconf.rb \
+swig/tcl/Makefile-swig \
+swig/README
diff --git a/google-breakpad/src/third_party/libdisasm/TODO b/google-breakpad/src/third_party/libdisasm/TODO
new file mode 100644
index 0000000..148addf
--- /dev/null
+++ b/google-breakpad/src/third_party/libdisasm/TODO
@@ -0,0 +1,43 @@
+x86_format.c
+------------
+intel: jmpf -> jmp, callf -> call
+att: jmpf -> ljmp, callf -> lcall
+
+opcode table
+------------
+finish typing instructions
+fix flag clear/set/toggle types
+
+ix64 stuff
+----------
+document output file formats in web page
+features doc: register aliases, implicit operands, stack mods,
+ring0 flags, eflags, cpu model/isa
+
+ia32_handle_* implementation
+
+fix operand 0F C2
+CMPPS
+
+* sysenter, sysexit as CALL types -- preceded by MSR writes
+* SYSENTER/SYSEXIT stack : overwrites SS, ESP
+* stos, cmps, scas, movs, ins, outs, lods -> OP_PTR
+* OP_SIZE in implicit operands
+* use OP_SIZE to choose reg sizes!
+
+DONE?? :
+implicit operands: provide action ?
+e.g. add/inc for stach, write, etc 
+replace table numbers in opcodes.dat with
+#defines for table names
+
+replace 0  with INSN_INVALID   [or maybe FF for imnvalid and 00 for Not Applicable */
+no wait that is only for prefix tables -- n/p
+
+if ( prefx) only use if insn != invalid
+
+these should cover all the wacky disasm exceptions 
+
+for the rep one we can chet, match only a 0x90
+
+todo: privilege | ring
diff --git a/google-breakpad/src/third_party/libdisasm/ia32_implicit.c b/google-breakpad/src/third_party/libdisasm/ia32_implicit.c
new file mode 100644
index 0000000..8b075d2
--- /dev/null
+++ b/google-breakpad/src/third_party/libdisasm/ia32_implicit.c
@@ -0,0 +1,422 @@
+#include <stdlib.h>
+
+#include "ia32_implicit.h"
+#include "ia32_insn.h"
+#include "ia32_reg.h"
+#include "x86_operand_list.h"
+
+/* Conventions: Register operands which are aliases of another register 
+ *   operand (e.g. AX in one operand and AL in another) assume that the
+ *   operands are different registers and that alias tracking will resolve
+ *   data flow. This means that something like
+ *   	mov ax, al
+ *   would have 'write only' access for AX and 'read only' access for AL,
+ *   even though both AL and AX are read and written */
+typedef struct {
+	uint32_t type;
+	uint32_t operand;
+} op_implicit_list_t;
+
+static op_implicit_list_t list_aaa[] = 
+	/* 37 : AAA : rw AL */
+	/* 3F : AAS : rw AL */
+	{{ OP_R | OP_W, REG_BYTE_OFFSET }, {0}};	/* aaa */
+
+static op_implicit_list_t list_aad[] = 
+	/* D5 0A, D5 (ib) : AAD : rw AX */
+	/* D4 0A, D4 (ib) : AAM : rw AX */
+	{{ OP_R | OP_W, REG_WORD_OFFSET }, {0}};	/* aad */
+
+static op_implicit_list_t list_call[] = 
+	/* E8, FF, 9A, FF : CALL : rw ESP, rw EIP */
+	/* C2, C3, CA, CB : RET  : rw ESP, rw EIP */
+	{{ OP_R | OP_W, REG_EIP_INDEX }, 
+	 { OP_R | OP_W, REG_ESP_INDEX }, {0}};	/* call, ret */
+
+static op_implicit_list_t list_cbw[] = 
+	/* 98 : CBW : r AL, rw AX */
+	{{ OP_R | OP_W, REG_WORD_OFFSET },
+	 { OP_R, REG_BYTE_OFFSET}, {0}};		/* cbw */
+
+static op_implicit_list_t list_cwde[] = 
+	/* 98 : CWDE : r AX, rw EAX */
+	{{ OP_R | OP_W, REG_DWORD_OFFSET },
+	 { OP_R, REG_WORD_OFFSET }, {0}};		/* cwde */
+
+static op_implicit_list_t list_clts[] = 
+	/* 0F 06 : CLTS : rw CR0 */
+	{{ OP_R | OP_W, REG_CTRL_OFFSET}, {0}};	/* clts */
+
+static op_implicit_list_t list_cmpxchg[] = 
+	/* 0F B0 : CMPXCHG : rw AL */
+	{{ OP_R | OP_W, REG_BYTE_OFFSET }, {0}};	/* cmpxchg */
+
+static op_implicit_list_t list_cmpxchgb[] = 
+	/* 0F B1 : CMPXCHG : rw EAX */
+	{{ OP_R | OP_W, REG_DWORD_OFFSET }, {0}};	/* cmpxchg */
+
+static op_implicit_list_t list_cmpxchg8b[] = 
+	/* 0F C7 : CMPXCHG8B : rw EDX, rw EAX, r ECX, r EBX */
+	{{ OP_R | OP_W, REG_DWORD_OFFSET }, 
+	 { OP_R | OP_W, REG_DWORD_OFFSET + 2 }, 
+	 { OP_R, REG_DWORD_OFFSET + 1 }, 
+	 { OP_R, REG_DWORD_OFFSET + 3 }, {0}};	/* cmpxchg8b */
+
+static op_implicit_list_t list_cpuid[] = 
+	/* 0F A2 : CPUID : rw EAX, w EBX, w ECX, w EDX */
+	{{ OP_R | OP_W, REG_DWORD_OFFSET }, 
+	 { OP_W, REG_DWORD_OFFSET + 1 }, 
+	 { OP_W, REG_DWORD_OFFSET + 2 }, 
+	 { OP_W, REG_DWORD_OFFSET + 3 }, {0}};	/* cpuid */
+
+static op_implicit_list_t list_cwd[] = 
+	/* 99 : CWD/CWQ : rw EAX, w EDX */
+	{{ OP_R | OP_W, REG_DWORD_OFFSET }, 
+	 { OP_W, REG_DWORD_OFFSET + 2 }, {0}};	/* cwd */
+
+static op_implicit_list_t list_daa[] = 
+	/* 27 : DAA : rw AL */
+	/* 2F : DAS : rw AL */
+	{{ OP_R | OP_W, REG_BYTE_OFFSET }, {0}};	/* daa */
+
+static op_implicit_list_t list_idiv[] = 
+	/* F6 : DIV, IDIV : r AX, w AL, w AH */
+	/* FIXED: first op was EAX, not Aw. TODO: verify! */
+	{{ OP_R, REG_WORD_OFFSET }, 
+	  { OP_W, REG_BYTE_OFFSET },
+	  { OP_W, REG_BYTE_OFFSET + 4 }, {0}};	/* div */
+
+static op_implicit_list_t list_div[] = 
+	/* F7 : DIV, IDIV : rw EDX, rw EAX */
+	{{ OP_R | OP_W, REG_DWORD_OFFSET + 2 }, 
+	  { OP_R | OP_W, REG_DWORD_OFFSET }, {0}};	/* div */
+
+static op_implicit_list_t list_enter[] = 
+	/* C8 : ENTER : rw ESP w EBP */
+	{{ OP_R | OP_W, REG_DWORD_OFFSET + 4 }, 
+	 { OP_R, REG_DWORD_OFFSET + 5 }, {0}};	/* enter */
+
+static op_implicit_list_t list_f2xm1[] = 
+	/* D9 F0 : F2XM1 : rw ST(0) */
+	/* D9 E1 : FABS : rw ST(0) */
+	/* D9 E0 : FCHS : rw ST(0) */
+	/* D9 FF : FCOS : rw ST(0)*/
+	/* D8, DA : FDIV : rw ST(0) */
+	/* D8, DA : FDIVR : rw ST(0) */
+	/* D9 F2 : FPTAN : rw ST(0) */
+	/* D9 FC : FRNDINT : rw ST(0) */
+	/* D9 FB : FSINCOS : rw ST(0) */
+	/* D9 FE : FSIN : rw ST(0) */
+	/* D9 FA : FSQRT : rw ST(0) */
+	/* D9 F4 : FXTRACT : rw ST(0) */
+	{{ OP_R | OP_W, REG_FPU_OFFSET }, {0}};	/* f2xm1 */
+
+static op_implicit_list_t list_fcom[] = 
+	/* D8, DC, DE D9 : FCOM : r ST(0) */
+	/* DE, DA : FICOM : r ST(0) */
+	/* DF, D8 : FIST : r ST(0) */
+	/* D9 E4 : FTST : r ST(0) */
+	/* D9 E5 : FXAM : r ST(0) */
+	{{ OP_R, REG_FPU_OFFSET }, {0}};		/* fcom */
+
+static op_implicit_list_t list_fpatan[] = 
+	/* D9 F3 : FPATAN : r ST(0), rw ST(1) */
+	{{ OP_R, REG_FPU_OFFSET }, {0}};		/* fpatan */
+
+static op_implicit_list_t list_fprem[] = 
+	/* D9 F8, D9 F5 : FPREM : rw ST(0) r ST(1) */
+	/* D9 FD : FSCALE : rw ST(0), r ST(1) */
+	{{ OP_R | OP_W, REG_FPU_OFFSET }, 	
+	 { OP_R, REG_FPU_OFFSET + 1 }, {0}};	/* fprem */
+
+static op_implicit_list_t list_faddp[] = 
+	/* DE C1 : FADDP : r ST(0), rw ST(1) */
+	/* DE E9 : FSUBP : r ST(0), rw ST(1) */
+	/* D9 F1 : FYL2X : r ST(0), rw ST(1) */
+	/* D9 F9 : FYL2XP1 : r ST(0), rw ST(1) */
+	{{ OP_R, REG_FPU_OFFSET },
+	 { OP_R | OP_W, REG_FPU_OFFSET + 1 }, {0}};	/* faddp */
+
+static op_implicit_list_t list_fucompp[] = 
+	/* DA E9 : FUCOMPP : r ST(0), r ST(1) */
+	{{ OP_R, REG_FPU_OFFSET },
+	 { OP_R, REG_FPU_OFFSET + 1 }, {0}};	/* fucompp */
+
+static op_implicit_list_t list_imul[] = 
+	/* F6 : IMUL : r AL, w AX */
+	/* F6 : MUL : r AL, w AX */
+	{{ OP_R, REG_BYTE_OFFSET },
+	 { OP_W, REG_WORD_OFFSET }, {0}};		/* imul */
+
+static op_implicit_list_t list_mul[] = 
+	/* F7 : IMUL : rw EAX, w EDX */
+	/* F7 : MUL : rw EAX, w EDX */
+	{{ OP_R | OP_W, REG_DWORD_OFFSET },
+	 { OP_W, REG_DWORD_OFFSET + 2 }, {0}};	/* imul */
+
+static op_implicit_list_t list_lahf[] = 
+	/* 9F : LAHF : r EFLAGS, w AH */
+	{{ OP_R, REG_FLAGS_INDEX },
+	 { OP_W, REG_BYTE_OFFSET + 4 }, {0}};	/* lahf */
+
+static op_implicit_list_t list_ldmxcsr[] = 
+	/* 0F AE : LDMXCSR : w MXCSR SSE Control Status Reg */
+	{{ OP_W, REG_MXCSG_INDEX }, {0}};		/* ldmxcsr */
+
+static op_implicit_list_t list_leave[] = 
+	/* C9 : LEAVE :  rw ESP, w EBP */
+	{{ OP_R | OP_W, REG_ESP_INDEX },
+	 { OP_W, REG_DWORD_OFFSET + 5 }, {0}};	/* leave */
+
+static op_implicit_list_t list_lgdt[] = 
+	/* 0F 01 : LGDT : w GDTR */
+	{{ OP_W, REG_GDTR_INDEX }, {0}};		/* lgdt */
+
+static op_implicit_list_t list_lidt[] = 
+	/* 0F 01 : LIDT : w IDTR */
+	{{ OP_W, REG_IDTR_INDEX }, {0}};		/* lidt */
+
+static op_implicit_list_t list_lldt[] = 
+	/* 0F 00 : LLDT : w LDTR */
+	{{ OP_W, REG_LDTR_INDEX }, {0}};		/* lldt */
+
+static op_implicit_list_t list_lmsw[] = 
+	/* 0F 01 : LMSW : w CR0 */
+	{{ OP_W, REG_CTRL_OFFSET }, {0}};		/* lmsw */
+
+static op_implicit_list_t list_loop[] = 
+	/* E0, E1, E2 : LOOP : rw ECX */
+	{{ OP_R | OP_W, REG_DWORD_OFFSET + 1 }, {0}};/* loop */
+
+static op_implicit_list_t list_ltr[] = 
+	/* 0F 00 : LTR : w Task Register */
+	{{ OP_W, REG_TR_INDEX }, {0}};		/* ltr */
+
+static op_implicit_list_t list_pop[] = 
+	/* 8F, 58, 1F, 07, 17, 0F A1, 0F A9 : POP : rw ESP */
+	/* FF, 50, 6A, 68, 0E, 16, 1E, 06, 0F A0, 0F A8 : PUSH : rw ESP */
+	{{ OP_R | OP_W, REG_ESP_INDEX }, {0}};	/* pop, push */
+
+static op_implicit_list_t list_popad[] = 
+	/* 61 : POPAD : rw esp, w edi esi ebp ebx edx ecx eax */
+	{{ OP_R | OP_W, REG_ESP_INDEX },
+	 { OP_W, REG_DWORD_OFFSET + 7 },
+	 { OP_W, REG_DWORD_OFFSET + 6 },
+	 { OP_W, REG_DWORD_OFFSET + 5 },
+	 { OP_W, REG_DWORD_OFFSET + 3 },
+	 { OP_W, REG_DWORD_OFFSET + 2 },
+	 { OP_W, REG_DWORD_OFFSET + 1 },
+	 { OP_W, REG_DWORD_OFFSET }, {0}};		/* popad */
+
+static op_implicit_list_t list_popfd[] = 
+	/* 9D : POPFD : rw esp, w eflags */
+	{{ OP_R | OP_W, REG_ESP_INDEX },
+	 { OP_W, REG_FLAGS_INDEX }, {0}};		/* popfd */
+
+static op_implicit_list_t list_pushad[] = 
+	/* FF, 50, 6A, 68, 0E, 16, 1E, 06, 0F A0, 0F A8 : PUSH : rw ESP */
+	/* 60 : PUSHAD : rw esp, r eax ecx edx ebx esp ebp esi edi */
+	{{ OP_R | OP_W, REG_ESP_INDEX },
+	 { OP_R, REG_DWORD_OFFSET },
+	 { OP_R, REG_DWORD_OFFSET + 1 },
+	 { OP_R, REG_DWORD_OFFSET + 2 },
+	 { OP_R, REG_DWORD_OFFSET + 3 },
+	 { OP_R, REG_DWORD_OFFSET + 5 },
+	 { OP_R, REG_DWORD_OFFSET + 6 },
+	 { OP_R, REG_DWORD_OFFSET + 7 }, {0}};	/* pushad */
+
+static op_implicit_list_t list_pushfd[] = 
+	/* 9C : PUSHFD : rw esp, r eflags */
+	{{ OP_R | OP_W, REG_ESP_INDEX },
+	 { OP_R, REG_FLAGS_INDEX }, {0}};		/* pushfd */
+
+static op_implicit_list_t list_rdmsr[] = 
+	/* 0F 32 : RDMSR : r ECX, w EDX, w EAX */
+	{{ OP_R, REG_DWORD_OFFSET + 1 },
+	 { OP_W, REG_DWORD_OFFSET + 2 },
+	 { OP_W, REG_DWORD_OFFSET }, {0}};	/* rdmsr */
+
+static op_implicit_list_t list_rdpmc[] = 
+	/* 0F 33 : RDPMC : r ECX, w EDX, w EAX */
+	{{ OP_R, REG_DWORD_OFFSET + 1 },
+	 { OP_W, REG_DWORD_OFFSET + 2 },
+	 { OP_W, REG_DWORD_OFFSET }, {0}};		/* rdpmc */
+
+static op_implicit_list_t list_rdtsc[] = 
+	/* 0F 31 : RDTSC : rw EDX, rw EAX */
+	{{ OP_R | OP_W, REG_DWORD_OFFSET + 2 },
+	 { OP_R | OP_W, REG_DWORD_OFFSET }, {0}};	/* rdtsc */
+
+static op_implicit_list_t list_rep[] = 
+	/* F3, F2 ... : REP : rw ECX */
+	{{ OP_R | OP_W, REG_DWORD_OFFSET + 1 }, {0}};/* rep */
+
+static op_implicit_list_t list_rsm[] = 
+	/* 0F AA : RSM : r CR4, r CR0 */
+	{{ OP_R, REG_CTRL_OFFSET + 4 }, 
+	 { OP_R, REG_CTRL_OFFSET }, {0}};		/* rsm */
+
+static op_implicit_list_t list_sahf[] = 
+	/* 9E : SAHF : r ah, rw eflags (set SF ZF AF PF CF) */
+	{{ OP_R, REG_DWORD_OFFSET }, {0}};		/* sahf */
+
+static op_implicit_list_t list_sgdt[] = 
+	/* 0F : SGDT : r gdtr */
+	/* TODO: finish this! */
+	{{ OP_R, REG_DWORD_OFFSET }, {0}};		/* sgdt */
+
+static op_implicit_list_t list_sidt[] = 
+	/* 0F : SIDT : r idtr */
+	/* TODO: finish this! */
+	{{ OP_R, REG_DWORD_OFFSET }, {0}};		/* sidt */
+
+static op_implicit_list_t list_sldt[] = 
+	/* 0F : SLDT : r ldtr */
+	/* TODO: finish this! */
+	{{ OP_R, REG_DWORD_OFFSET }, {0}};		/* sldt */
+
+static op_implicit_list_t list_smsw[] = 
+	/* 0F : SMSW : r CR0 */
+	/* TODO: finish this! */
+	{{ OP_R, REG_DWORD_OFFSET }, {0}};		/* smsw */
+
+static op_implicit_list_t list_stmxcsr[] = 
+	/* 0F AE : STMXCSR : r MXCSR */
+	/* TODO: finish this! */
+	{{ OP_R, REG_DWORD_OFFSET }, {0}};		/* stmxcsr */
+
+static op_implicit_list_t list_str[] = 
+	/* 0F 00 : STR : r TR (task register) */
+	/* TODO: finish this! */
+	{{ OP_R, REG_DWORD_OFFSET }, {0}};		/* str */
+
+static op_implicit_list_t list_sysenter[] = 
+	/* 0F 34 : SYSENTER : w cs, w eip, w ss, w esp, r CR0, w eflags
+	 *         r sysenter_cs_msr, sysenter_esp_msr, sysenter_eip_msr */
+	/* TODO: finish this! */
+	{{ OP_R, REG_DWORD_OFFSET }, {0}};		/* sysenter */
+
+static op_implicit_list_t list_sysexit[] = 
+	/* 0F 35 : SYSEXIT : r edx, r ecx, w cs, w eip, w ss, w esp
+	 * 	   r sysenter_cs_msr */
+	/* TODO: finish this! */
+	{{ OP_R, REG_DWORD_OFFSET }, {0}};		/* sysexit */
+
+static op_implicit_list_t list_wrmsr[] = 
+	/* 0F 30 : WRMST : r edx, r eax, r ecx */
+	/* TODO: finish this! */
+	{{ OP_R, REG_DWORD_OFFSET }, {0}};		/* wrmsr */
+
+static op_implicit_list_t list_xlat[] = 
+	/* D7 : XLAT : rw al r ebx (ptr) */
+	/* TODO: finish this! */
+	{{ OP_R, REG_DWORD_OFFSET }, {0}};		/* xlat */
+/* TODO:
+ * monitor 0f 01 c8 eax OP_R ecx OP_R edx OP_R
+ * mwait 0f 01 c9 eax OP_R ecx OP_R
+ */
+static op_implicit_list_t list_monitor[] = 
+	{{ OP_R, REG_DWORD_OFFSET }, {0}};		/* monitor */
+static op_implicit_list_t list_mwait[] = 
+	{{ OP_R, REG_DWORD_OFFSET }, {0}};		/* mwait */
+
+op_implicit_list_t *op_implicit_list[] = {
+	/* This is a list of implicit operands which are read/written by
+	 * various x86 instructions. Note that modifications to the stack
+	 * register are mentioned here, but that additional information on
+	 * the effect an instruction has on the stack is contained in the
+	 * x86_insn_t 'stack_mod' and 'stack_mod_val' fields. Use of the
+	 * eflags register, i.e. setting, clearing, and testing flags, is
+	 * not recorded here but rather in the flags_set and flags_tested
+	 * fields of the x86_insn_t.*/
+	NULL,
+	list_aaa, list_aad, list_call, list_cbw,		/* 1 - 4 */
+	list_cwde, list_clts, list_cmpxchg, list_cmpxchgb,	/* 5 - 8 */
+	list_cmpxchg8b, list_cpuid, list_cwd, list_daa,		/* 9 - 12 */
+	list_idiv, list_div, list_enter, list_f2xm1,		/* 13 - 16 */
+	list_fcom, list_fpatan, list_fprem, list_faddp,		/* 17 - 20 */
+	list_fucompp, list_imul, list_mul, list_lahf,		/* 21 - 24 */
+	list_ldmxcsr, list_leave, list_lgdt, list_lidt,		/* 25 - 28 */
+	list_lldt, list_lmsw, list_loop, list_ltr,		/* 29 - 32 */
+	list_pop, list_popad, list_popfd, list_pushad,		/* 33 - 36 */
+	list_pushfd, list_rdmsr, list_rdpmc, list_rdtsc,	/* 37 - 40 */
+	/* NOTE: 'REP' is a hack since it is a prefix: if its position
+	 * in the table changes, then change IDX_IMPLICIT_REP in the .h */
+	list_rep, list_rsm, list_sahf, list_sgdt,		/* 41 - 44 */
+	list_sidt, list_sldt, list_smsw, list_stmxcsr,		/* 45 - 48 */
+	list_str, list_sysenter, list_sysexit, list_wrmsr,	/* 49 - 52 */
+	list_xlat, list_monitor, list_mwait,			/* 53 - 55*/
+	NULL						/* end of list */
+ };
+
+#define LAST_IMPL_IDX 55
+
+static void handle_impl_reg( x86_op_t *op, uint32_t val ) {
+	x86_reg_t *reg = &op->data.reg;
+	op->type = op_register;
+	ia32_handle_register( reg, (unsigned int) val );
+	switch (reg->size) {
+		case 1:
+			op->datatype = op_byte; break;
+		case 2:
+			op->datatype = op_word; break;
+		case 4:
+			op->datatype = op_dword; break;
+		case 8:
+			op->datatype = op_qword; break;
+		case 10:
+			op->datatype = op_extreal; break;
+		case 16:
+			op->datatype = op_dqword; break;
+	}
+	return;
+}
+
+/* 'impl_idx' is the value from the opcode table: between 1 and LAST_IMPL_IDX */
+/* returns number of operands added */
+unsigned int ia32_insn_implicit_ops( x86_insn_t *insn, unsigned int impl_idx ) {
+	op_implicit_list_t *list;
+	x86_op_t *op;
+	unsigned int num = 0;
+
+	if (! impl_idx || impl_idx > LAST_IMPL_IDX ) {
+		return 0;
+	}
+
+	for ( list = op_implicit_list[impl_idx]; list->type; list++, num++ ) {
+		enum x86_op_access access = (enum x86_op_access) OP_PERM(list->type);
+		enum x86_op_flags  flags  = (enum x86_op_flags) (OP_FLAGS(list->type) >> 12);
+
+		op = NULL;
+		/* In some cases (MUL), EAX is an implicit operand hardcoded in
+                 * the instruction without being explicitly listed in assembly.
+                 * For this situation, find the hardcoded operand and add the
+                 * implied flag rather than adding a new implicit operand. */
+		x86_oplist_t * existing;
+		if (ia32_true_register_id(list->operand) == REG_DWORD_OFFSET) {
+			for ( existing = insn->operands; existing; existing = existing->next ) {
+				if (existing->op.type == op_register &&
+	                            existing->op.data.reg.id == list->operand) {
+					op = &existing->op;
+					break;
+				}
+			}
+		}
+		if (!op) {
+			op = x86_operand_new( insn );
+			/* all implicit operands are registers */
+			handle_impl_reg( op, list->operand );
+			/* decrement the 'explicit count' incremented by default in
+			 * x86_operand_new */
+			insn->explicit_count = insn->explicit_count -1;
+		}
+		if (!op) {
+			return num;	/* gah! return early */
+		}
+		op->access |= access;
+		op->flags |= flags;
+		op->flags |= op_implied;
+	}
+	
+	return num;
+}
diff --git a/google-breakpad/src/third_party/libdisasm/ia32_implicit.h b/google-breakpad/src/third_party/libdisasm/ia32_implicit.h
new file mode 100644
index 0000000..0002b28
--- /dev/null
+++ b/google-breakpad/src/third_party/libdisasm/ia32_implicit.h
@@ -0,0 +1,13 @@
+#ifndef IA32_IMPLICIT_H
+#define IA32_IMPLICIT_H
+
+#include "libdis.h"
+
+/* OK, this is a hack to deal with prefixes having implicit operands...
+ * thought I had removed all the old hackishness ;( */
+
+#define IDX_IMPLICIT_REP 41	/* change this if the table changes! */
+
+unsigned int ia32_insn_implicit_ops( x86_insn_t *insn, unsigned int impl_idx );
+
+#endif
diff --git a/google-breakpad/src/third_party/libdisasm/ia32_insn.c b/google-breakpad/src/third_party/libdisasm/ia32_insn.c
new file mode 100644
index 0000000..cc27760
--- /dev/null
+++ b/google-breakpad/src/third_party/libdisasm/ia32_insn.c
@@ -0,0 +1,623 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "qword.h"
+
+#include "ia32_insn.h"
+#include "ia32_opcode_tables.h"
+
+#include "ia32_reg.h"
+#include "ia32_operand.h"
+#include "ia32_implicit.h"
+#include "ia32_settings.h"
+
+#include "libdis.h"
+
+extern ia32_table_desc_t ia32_tables[];
+extern ia32_settings_t ia32_settings;
+
+#define IS_SP( op )  (op->type == op_register && 	\
+		(op->data.reg.id == REG_ESP_INDEX || 	\
+		 op->data.reg.alias == REG_ESP_INDEX) )
+#define IS_IMM( op ) (op->type == op_immediate )
+
+#ifdef WIN32
+#  define INLINE 
+#else
+#  define INLINE inline
+#endif
+
+/* for calculating stack modification based on an operand */
+static INLINE int32_t long_from_operand( x86_op_t *op ) {
+
+	if (! IS_IMM(op) ) {
+		return 0L;
+	}
+
+	switch ( op->datatype ) {
+		case op_byte:
+			return (int32_t) op->data.sbyte;
+		case op_word:
+			return (int32_t) op->data.sword;
+		case op_qword:
+			return (int32_t) op->data.sqword;
+		case op_dword:
+			return op->data.sdword;
+		default:
+			/* these are not used in stack insn */
+			break;
+	}
+
+	return 0L;
+}
+		
+
+/* determine what this insn does to the stack */
+static void ia32_stack_mod(x86_insn_t *insn) {
+	x86_op_t *dest, *src = NULL;
+
+	if (! insn || ! insn->operands ) {
+		return;
+	}
+       
+	dest = &insn->operands->op;
+	if ( dest ) {
+		src = &insn->operands->next->op;
+	}
+
+	insn->stack_mod = 0; 
+	insn->stack_mod_val = 0;
+
+	switch ( insn->type ) {
+		case insn_call:
+		case insn_callcc:
+			insn->stack_mod = 1;
+			insn->stack_mod_val = insn->addr_size * -1;
+			break;
+		case insn_push:
+			insn->stack_mod = 1;
+			insn->stack_mod_val = insn->addr_size * -1;
+			break;
+		case insn_return:
+			insn->stack_mod = 1;
+			insn->stack_mod_val = insn->addr_size;
+		case insn_int: case insn_intcc:
+		case insn_iret:
+			break;
+		case insn_pop:
+			insn->stack_mod = 1;
+			if (! IS_SP( dest ) ) {
+				insn->stack_mod_val = insn->op_size;
+			} /* else we don't know the stack change in a pop esp */
+			break;
+		case insn_enter:
+			insn->stack_mod = 1;
+			insn->stack_mod_val = 0; /* TODO : FIX */
+			break;
+		case insn_leave:
+			insn->stack_mod = 1;
+			insn->stack_mod_val = 0; /* TODO : FIX */
+			break;
+		case insn_pushregs:
+			insn->stack_mod = 1;
+			insn->stack_mod_val = 0; /* TODO : FIX */
+			break;
+		case insn_popregs:
+			insn->stack_mod = 1;
+			insn->stack_mod_val = 0; /* TODO : FIX */
+			break;
+		case insn_pushflags:
+			insn->stack_mod = 1;
+			insn->stack_mod_val = 0; /* TODO : FIX */
+			break;
+		case insn_popflags:
+			insn->stack_mod = 1;
+			insn->stack_mod_val = 0; /* TODO : FIX */
+			break;
+		case insn_add:
+			if ( IS_SP( dest ) ) {
+				insn->stack_mod = 1;
+				insn->stack_mod_val = long_from_operand( src ); 
+			}
+			break;
+		case insn_sub:
+			if ( IS_SP( dest ) ) {
+				insn->stack_mod = 1;
+				insn->stack_mod_val = long_from_operand( src ); 
+				insn->stack_mod_val *= -1;
+			}
+			break;
+		case insn_inc:
+			if ( IS_SP( dest ) ) {
+				insn->stack_mod = 1;
+				insn->stack_mod_val = 1;
+			}
+			break;
+		case insn_dec:
+			if ( IS_SP( dest ) ) {
+				insn->stack_mod = 1;
+				insn->stack_mod_val = 1;
+			}
+			break;
+		case insn_mov: case insn_movcc:
+		case insn_xchg: case insn_xchgcc:
+		case insn_mul: case insn_div:
+		case insn_shl: case insn_shr:
+		case insn_rol: case insn_ror:
+		case insn_and: case insn_or:
+		case insn_not: case insn_neg:
+		case insn_xor:
+			if ( IS_SP( dest ) ) {
+				insn->stack_mod = 1;
+			}
+			break;
+		default:
+			break;
+	}
+	if (! strcmp("enter", insn->mnemonic) ) {
+		insn->stack_mod = 1;
+	} else if (! strcmp("leave", insn->mnemonic) ) {
+		insn->stack_mod = 1;
+	}
+
+	/* for mov, etc we return 0 -- unknown stack mod */
+
+	return;
+}
+
+/* get the cpu details for this insn from cpu flags int */
+static void ia32_handle_cpu( x86_insn_t *insn, unsigned int cpu ) {
+	insn->cpu = (enum x86_insn_cpu) CPU_MODEL(cpu);
+	insn->isa = (enum x86_insn_isa) (ISA_SUBSET(cpu)) >> 16;
+	return;
+}
+
+/* handle mnemonic type and group */
+static void ia32_handle_mnemtype(x86_insn_t *insn, unsigned int mnemtype) {
+	unsigned int type = mnemtype & ~INS_FLAG_MASK;
+        insn->group = (enum x86_insn_group) (INS_GROUP(type)) >> 12;
+        insn->type = (enum x86_insn_type) INS_TYPE(type);
+
+	return;
+}
+
+static void ia32_handle_notes(x86_insn_t *insn, unsigned int notes) {
+	insn->note = (enum x86_insn_note) notes;
+	return;
+}
+
+static void ia32_handle_eflags( x86_insn_t *insn, unsigned int eflags) {
+        unsigned int flags;
+
+        /* handle flags effected */
+        flags = INS_FLAGS_TEST(eflags);
+        /* handle weird OR cases */
+        /* these are either JLE (ZF | SF<>OF) or JBE (CF | ZF) */
+        if (flags & INS_TEST_OR) {
+                flags &= ~INS_TEST_OR;
+                if ( flags & INS_TEST_ZERO ) {
+                        flags &= ~INS_TEST_ZERO;
+                        if ( flags & INS_TEST_CARRY ) {
+                                flags &= ~INS_TEST_CARRY ;
+                                flags |= (int)insn_carry_or_zero_set;
+                        } else if ( flags & INS_TEST_SFNEOF ) {
+                                flags &= ~INS_TEST_SFNEOF;
+                                flags |= (int)insn_zero_set_or_sign_ne_oflow;
+                        }
+                }
+        }
+        insn->flags_tested = (enum x86_flag_status) flags;
+
+        insn->flags_set = (enum x86_flag_status) INS_FLAGS_SET(eflags) >> 16;
+
+	return;
+}
+
+static void ia32_handle_prefix( x86_insn_t *insn, unsigned int prefixes ) {
+
+        insn->prefix = (enum x86_insn_prefix) prefixes & PREFIX_MASK; // >> 20;
+        if (! (insn->prefix & PREFIX_PRINT_MASK) ) {
+		/* no printable prefixes */
+                insn->prefix = insn_no_prefix;
+        }
+
+        /* concat all prefix strings */
+        if ( (unsigned int)insn->prefix & PREFIX_LOCK ) {
+                strncat(insn->prefix_string, "lock ", 32 - 
+				strlen(insn->prefix_string));
+        }
+
+        if ( (unsigned int)insn->prefix & PREFIX_REPNZ ) {
+                strncat(insn->prefix_string, "repnz ", 32  - 
+				strlen(insn->prefix_string));
+        } else if ( (unsigned int)insn->prefix & PREFIX_REPZ ) {
+                strncat(insn->prefix_string, "repz ", 32 - 
+				strlen(insn->prefix_string));
+        }
+
+        return;
+}
+
+
+static void reg_32_to_16( x86_op_t *op, x86_insn_t *insn, void *arg ) {
+
+	/* if this is a 32-bit register and it is a general register ... */
+	if ( op->type == op_register && op->data.reg.size == 4 && 
+	     (op->data.reg.type & reg_gen) ) {
+		/* WORD registers are 8 indices off from DWORD registers */
+		ia32_handle_register( &(op->data.reg), 
+				op->data.reg.id + 8 );
+	}
+}
+
+static void handle_insn_metadata( x86_insn_t *insn, ia32_insn_t *raw_insn ) {
+	ia32_handle_mnemtype( insn, raw_insn->mnem_flag );
+	ia32_handle_notes( insn, raw_insn->notes );
+	ia32_handle_eflags( insn, raw_insn->flags_effected );
+	ia32_handle_cpu( insn, raw_insn->cpu );
+	ia32_stack_mod( insn );
+}
+
+static size_t ia32_decode_insn( unsigned char *buf, size_t buf_len, 
+			   ia32_insn_t *raw_insn, x86_insn_t *insn,
+			   unsigned int prefixes ) {
+	size_t size, op_size;
+	unsigned char modrm;
+
+	/* this should never happen, but just in case... */
+	if ( raw_insn->mnem_flag == INS_INVALID ) {
+		return 0;
+	}
+
+	if (ia32_settings.options & opt_16_bit) {
+		insn->op_size = ( prefixes & PREFIX_OP_SIZE ) ? 4 : 2;
+		insn->addr_size = ( prefixes & PREFIX_ADDR_SIZE ) ? 4 : 2;
+	} else {
+		insn->op_size = ( prefixes & PREFIX_OP_SIZE ) ? 2 : 4;
+		insn->addr_size = ( prefixes & PREFIX_ADDR_SIZE ) ? 2 : 4;
+	}
+
+
+	/*  ++++   1. Copy mnemonic and mnemonic-flags to CODE struct */
+	if ((ia32_settings.options & opt_att_mnemonics) && raw_insn->mnemonic_att[0]) {
+		strncpy( insn->mnemonic, raw_insn->mnemonic_att, 16 );
+	}
+	else {
+		strncpy( insn->mnemonic, raw_insn->mnemonic, 16 );
+	}
+	ia32_handle_prefix( insn, prefixes );
+
+	handle_insn_metadata( insn, raw_insn );
+
+	/* prefetch the next byte in case it is a modr/m byte -- saves
+	 * worrying about whether the 'mod/rm' operand or the 'reg' operand
+	 * occurs first */
+	modrm = GET_BYTE( buf, buf_len );
+
+	/*  ++++   2. Decode Explicit Operands */
+	/* Intel uses up to 3 explicit operands in its instructions;
+	 * the first is 'dest', the second is 'src', and the third
+	 * is an additional source value (usually an immediate value,
+	 * e.g. in the MUL instructions). These three explicit operands
+	 * are encoded in the opcode tables, even if they are not used 
+	 * by the instruction. Additional implicit operands are stored
+	 * in a supplemental table and are handled later. */
+
+	op_size = ia32_decode_operand( buf, buf_len, insn, raw_insn->dest, 
+					raw_insn->dest_flag, prefixes, modrm );
+	/* advance buffer, increase size if necessary */
+	buf += op_size;
+	buf_len -= op_size;
+	size = op_size;
+
+	op_size = ia32_decode_operand( buf, buf_len, insn, raw_insn->src, 
+					raw_insn->src_flag, prefixes, modrm );
+	buf += op_size;
+	buf_len -= op_size;
+	size += op_size;
+
+	op_size = ia32_decode_operand( buf, buf_len, insn, raw_insn->aux, 
+					raw_insn->aux_flag, prefixes, modrm );
+	size += op_size;
+
+
+	/*  ++++   3. Decode Implicit Operands */
+	/* apply implicit operands */
+	ia32_insn_implicit_ops( insn, raw_insn->implicit_ops );
+	/* we have one small inelegant hack here, to deal with 
+	 * the two prefixes that have implicit operands. If Intel
+	 * adds more, we'll change the algorithm to suit :) */
+	if ( (prefixes & PREFIX_REPZ) || (prefixes & PREFIX_REPNZ) ) {
+		ia32_insn_implicit_ops( insn, IDX_IMPLICIT_REP );
+	}
+
+
+	/* 16-bit hack: foreach operand, if 32-bit reg, make 16-bit reg */
+	if ( insn->op_size == 2 ) {
+		x86_operand_foreach( insn, reg_32_to_16, NULL, op_any );
+	}
+
+	return size;
+}
+
+
+/* convenience routine */
+#define USES_MOD_RM(flag) \
+	(flag == ADDRMETH_E || flag == ADDRMETH_M || flag == ADDRMETH_Q || \
+	 flag == ADDRMETH_W || flag == ADDRMETH_R)
+
+static int uses_modrm_flag( unsigned int flag ) {
+	unsigned int meth;
+	if ( flag == ARG_NONE ) {
+		return 0;
+	}
+	meth = (flag & ADDRMETH_MASK);
+	if ( USES_MOD_RM(meth) ) {
+		return 1;
+	}
+
+	return 0;
+}
+
+/* This routine performs the actual byte-by-byte opcode table lookup.
+ * Originally it was pretty simple: get a byte, adjust it to a proper
+ * index into the table, then check the table row at that index to
+ * determine what to do next. But is anything that simple with Intel?
+ * This is now a huge, convoluted mess, mostly of bitter comments. */
+/* buf: pointer to next byte to read from stream 
+ * buf_len: length of buf
+ * table: index of table to use for lookups
+ * raw_insn: output pointer that receives opcode definition
+ * prefixes: output integer that is encoded with prefixes in insn 
+ * returns : number of bytes consumed from stream during lookup */ 
+size_t ia32_table_lookup( unsigned char *buf, size_t buf_len,
+				 unsigned int table, ia32_insn_t **raw_insn,
+				 unsigned int *prefixes ) {
+	unsigned char *next, op = buf[0];	/* byte value -- 'opcode' */
+	size_t size = 1, sub_size = 0, next_len;
+	ia32_table_desc_t *table_desc;
+	unsigned int subtable, prefix = 0, recurse_table = 0;
+
+	table_desc = &ia32_tables[table];
+
+	op = GET_BYTE( buf, buf_len );
+
+	if ( table_desc->type == tbl_fpu && op > table_desc->maxlim) {
+		/* one of the fucking FPU tables out of the 00-BH range */
+		/* OK,. this is a bit of a hack -- the proper way would
+		 * have been to use subtables in the 00-BF FPU opcode tables,
+		 * but that is rather wasteful of space... */
+		table_desc = &ia32_tables[table +1];
+	}
+
+	/* PERFORM TABLE LOOKUP */
+
+	/* ModR/M trick: shift extension bits into lowest bits of byte */
+	/* Note: non-ModR/M tables have a shift value of 0 */
+	op >>= table_desc->shift;
+
+	/* ModR/M trick: mask out high bits to turn extension into an index */
+	/* Note: non-ModR/M tables have a mask value of 0xFF */
+	op &= table_desc->mask;
+
+
+	/* Sparse table trick: check that byte is <= max value */
+	/* Note: full (256-entry) tables have a maxlim of 155 */
+	if ( op > table_desc->maxlim ) {
+		/* this is a partial table, truncated at the tail,
+		   and op is out of range! */
+		return INVALID_INSN;
+	}
+
+	/* Sparse table trick: check that byte is >= min value */
+	/* Note: full (256-entry) tables have a minlim of 0 */
+	if ( table_desc->minlim > op ) {
+		/* this is a partial table, truncated at the head,
+		   and op is out of range! */
+		return INVALID_INSN;
+	}
+	/* adjust op to be an offset from table index 0 */
+	op -= table_desc->minlim;
+
+	/* Yay! 'op' is now fully adjusted to be an index into 'table' */
+	*raw_insn = &(table_desc->table[op]);
+	//printf("BYTE %X TABLE %d OP %X\n", buf[0], table, op ); 
+
+	if ( (*raw_insn)->mnem_flag & INS_FLAG_PREFIX ) {
+		prefix = (*raw_insn)->mnem_flag & PREFIX_MASK;
+	}
+
+
+	/* handle escape to a multibyte/coproc/extension/etc table */
+	/* NOTE: if insn is a prefix and has a subtable, then we
+	 *       only recurse if this is the first prefix byte --
+	 *       that is, if *prefixes is 0. 
+	 * NOTE also that suffix tables are handled later */
+	subtable = (*raw_insn)->table;
+
+	if ( subtable && ia32_tables[subtable].type != tbl_suffix &&
+	     (! prefix || ! *prefixes) ) {
+
+	     	if ( ia32_tables[subtable].type == tbl_ext_ext ||
+	     	     ia32_tables[subtable].type == tbl_fpu_ext ) {
+			/* opcode extension: reuse current byte in buffer */
+			next = buf;
+			next_len = buf_len;
+		} else {
+			/* "normal" opcode: advance to next byte in buffer */
+			if ( buf_len > 1 ) {
+				next = &buf[1];
+				next_len = buf_len - 1;
+			}
+			else {
+				// buffer is truncated 
+				return INVALID_INSN;
+			}
+		}
+		/* we encountered a multibyte opcode: recurse using the
+		 * table specified in the opcode definition */
+		sub_size = ia32_table_lookup( next, next_len, subtable, 
+				raw_insn, prefixes );
+
+		/* SSE/prefix hack: if the original opcode def was a 
+		 * prefix that specified a subtable, and the subtable
+		 * lookup returned a valid insn, then we have encountered
+		 * an SSE opcode definition; otherwise, we pretend we
+		 * never did the subtable lookup, and deal with the 
+		 * prefix normally later */
+		if ( prefix && ( sub_size == INVALID_INSN  ||
+		       INS_TYPE((*raw_insn)->mnem_flag) == INS_INVALID ) ) {
+			/* this is a prefix, not an SSE insn :
+			 * lookup next byte in main table,
+			 * subsize will be reset during the
+			 * main table lookup */
+			recurse_table = 1;
+		} else {
+			/* this is either a subtable (two-byte) insn
+			 * or an invalid insn: either way, set prefix
+			 * to NULL and end the opcode lookup */
+			prefix = 0;
+			// short-circuit lookup on invalid insn
+			if (sub_size == INVALID_INSN) return INVALID_INSN;
+		}
+	} else if ( prefix ) {
+		recurse_table = 1;
+	}
+
+	/* by default, we assume that we have the opcode definition,
+	 * and there is no need to recurse on the same table, but
+	 * if we do then a prefix was encountered... */
+	if ( recurse_table ) {
+		/* this must have been a prefix: use the same table for
+		 * lookup of the next byte */
+		sub_size = ia32_table_lookup( &buf[1], buf_len - 1, table, 
+				raw_insn, prefixes );
+
+		// short-circuit lookup on invalid insn
+		if (sub_size == INVALID_INSN) return INVALID_INSN;
+
+		/* a bit of a hack for branch hints */
+		if ( prefix & BRANCH_HINT_MASK ) {
+			if ( INS_GROUP((*raw_insn)->mnem_flag) == INS_EXEC ) {
+				/* segment override prefixes are invalid for
+			 	* all branch instructions, so delete them */
+				prefix &= ~PREFIX_REG_MASK;
+			} else {
+				prefix &= ~BRANCH_HINT_MASK;
+			}
+		}
+
+		/* apply prefix to instruction */
+
+		/* TODO: implement something enforcing prefix groups */
+		(*prefixes) |= prefix;
+	}
+
+	/* if this lookup was in a ModR/M table, then an opcode byte is 
+	 * NOT consumed: subtract accordingly. NOTE that if none of the
+	 * operands used the ModR/M, then we need to consume the byte
+	 * here, but ONLY in the 'top-level' opcode extension table */
+
+	if ( table_desc->type == tbl_ext_ext ) {
+		/* extensions-to-extensions never consume a byte */
+		--size;
+	} else if ( (table_desc->type == tbl_extension || 
+	       	     table_desc->type == tbl_fpu ||
+		     table_desc->type == tbl_fpu_ext ) && 
+		/* extensions that have an operand encoded in ModR/M
+		 * never consume a byte */
+	      	    (uses_modrm_flag((*raw_insn)->dest_flag) || 
+	             uses_modrm_flag((*raw_insn)->src_flag) )  	) {
+		--size;
+	}
+
+	size += sub_size;
+
+	return size;
+}
+
+static size_t handle_insn_suffix( unsigned char *buf, size_t buf_len,
+			   ia32_insn_t *raw_insn, x86_insn_t * insn ) {
+	ia32_insn_t *sfx_insn;
+	size_t size;
+	unsigned int prefixes = 0;
+
+	size = ia32_table_lookup( buf, buf_len, raw_insn->table, &sfx_insn,
+				 &prefixes );
+	if (size == INVALID_INSN || sfx_insn->mnem_flag == INS_INVALID ) {
+		return 0;
+	}
+
+	strncpy( insn->mnemonic, sfx_insn->mnemonic, 16 );
+	handle_insn_metadata( insn, sfx_insn );
+
+	return 1;
+}
+
+/* invalid instructions are handled by returning 0 [error] from the
+ * function, setting the size of the insn to 1 byte, and copying
+ * the byte at the start of the invalid insn into the x86_insn_t.
+ * if the caller is saving the x86_insn_t for invalid instructions,
+ * instead of discarding them, this will maintain a consistent
+ * address space in the x86_insn_ts */
+
+/* this function is called by the controlling disassembler, so its name and
+ * calling convention cannot be changed */
+/*    buf   points to the loc of the current opcode (start of the 
+ *          instruction) in the instruction stream. The instruction 
+ *          stream is assumed to be a buffer of bytes read directly 
+ *          from the file for the purpose of disassembly; a mem-mapped 
+ *          file is ideal for *        this.
+ *    insn points to a code structure to be filled by instr_decode
+ *    returns the size of the decoded instruction in bytes */
+size_t ia32_disasm_addr( unsigned char * buf, size_t buf_len, 
+		x86_insn_t *insn ) {
+	ia32_insn_t *raw_insn = NULL;
+	unsigned int prefixes = 0;
+	size_t size, sfx_size;
+	
+	if ( (ia32_settings.options & opt_ignore_nulls) && buf_len > 3 &&
+	    !buf[0] && !buf[1] && !buf[2] && !buf[3]) {
+		/* IF IGNORE_NULLS is set AND
+		 * first 4 bytes in the intruction stream are NULL
+		 * THEN return 0 (END_OF_DISASSEMBLY) */
+		/* TODO: set errno */
+		MAKE_INVALID( insn, buf );
+		return 0;	/* 4 00 bytes in a row? This isn't code! */
+	}
+
+	/* Perform recursive table lookup starting with main table (0) */
+	size = ia32_table_lookup(buf, buf_len, idx_Main, &raw_insn, &prefixes);
+	if ( size == INVALID_INSN || size > buf_len || raw_insn->mnem_flag == INS_INVALID ) {
+		MAKE_INVALID( insn, buf );
+		/* TODO: set errno */
+		return 0;
+	}
+
+	/* We now have the opcode itself figured out: we can decode
+	 * the rest of the instruction. */
+	size += ia32_decode_insn( &buf[size], buf_len - size, raw_insn, insn, 
+				  prefixes );
+	if ( raw_insn->mnem_flag & INS_FLAG_SUFFIX ) {
+		/* AMD 3DNow! suffix -- get proper operand type here */
+		sfx_size = handle_insn_suffix( &buf[size], buf_len - size,
+				raw_insn, insn );
+		if (! sfx_size ) {
+			/* TODO: set errno */
+			MAKE_INVALID( insn, buf );
+			return 0;
+		}
+
+		size += sfx_size;
+	}
+
+	if (! size ) {
+		/* invalid insn */
+		MAKE_INVALID( insn, buf );
+		return 0;
+	}
+
+
+	insn->size = size;
+	return size;		/* return size of instruction in bytes */
+}
diff --git a/google-breakpad/src/third_party/libdisasm/ia32_insn.h b/google-breakpad/src/third_party/libdisasm/ia32_insn.h
new file mode 100644
index 0000000..d3f36c3
--- /dev/null
+++ b/google-breakpad/src/third_party/libdisasm/ia32_insn.h
@@ -0,0 +1,506 @@
+#ifndef IA32_INSN_H
+#define IA32_INSN_H
+/* this file contains the structure of opcode definitions and the
+ * constants they use */
+
+#include <sys/types.h>
+#include "libdis.h"
+
+
+#define GET_BYTE( buf, buf_len ) buf_len ? *buf : 0
+
+#define OP_SIZE_16	1
+#define OP_SIZE_32	2
+#define ADDR_SIZE_16	4
+#define ADDR_SIZE_32	8
+
+#define MAX_INSTRUCTION_SIZE 20
+
+/* invalid instructions are handled by returning 0 [error] from the
+ * function, setting the size of the insn to 1 byte, and copying
+ * the byte at the start of the invalid insn into the x86_insn_t.
+ * if the caller is saving the x86_insn_t for invalid instructions,
+ * instead of discarding them, this will maintain a consistent
+ * address space in the x86_insn_ts */
+
+#define INVALID_INSN ((size_t) -1)	/* return value for invalid insn */
+#define MAKE_INVALID( i, buf )                          \
+                strcpy( i->mnemonic, "invalid" );       \
+                x86_oplist_free( i );                   \
+                i->size = 1;                            \
+                i->group = insn_none;                   \
+                i->type = insn_invalid;                 \
+                memcpy( i->bytes, buf, 1 );
+
+
+size_t ia32_disasm_addr( unsigned char * buf, size_t buf_len, 
+		x86_insn_t *insn);
+
+
+/* --------------------------------------------------------- Table Lookup */
+/* IA32 Instruction defintion for ia32_opcodes.c */
+typedef struct {
+   unsigned int table;          /* escape to this sub-table */
+   unsigned int mnem_flag;      /* Flags referring to mnemonic */
+   unsigned int notes;          /* Notes for this instruction */
+   unsigned int dest_flag, src_flag, aux_flag; /* and for specific operands */
+   unsigned int cpu;            /* minimumCPU [AND with clocks?? */
+   char mnemonic[16];           /* buffers for building instruction */
+   char mnemonic_att[16];       /* at&t style mnemonic name */
+   int32_t dest;
+   int32_t src;
+   int32_t aux;
+   unsigned int flags_effected;
+   unsigned int implicit_ops;	/* implicit operands */
+} ia32_insn_t;
+
+
+
+/* --------------------------------------------------------- Prefixes */
+/* Prefix Flags */
+/* Prefixes, same order as in the manual */
+/* had to reverse the values of the first three as they were entered into
+ * libdis.h incorrectly. */
+#define PREFIX_LOCK       0x0004
+#define PREFIX_REPNZ      0x0002
+#define PREFIX_REPZ       0x0001
+#define PREFIX_OP_SIZE    0x0010
+#define PREFIX_ADDR_SIZE  0x0020
+#define PREFIX_CS         0x0100
+#define PREFIX_SS         0x0200
+#define PREFIX_DS         0x0300
+#define PREFIX_ES         0x0400
+#define PREFIX_FS         0x0500
+#define PREFIX_GS         0x0600
+#define PREFIX_TAKEN      0x1000	/* branch taken */
+#define PREFIX_NOTTAKEN   0x2000	/* branch not taken */
+#define PREFIX_REG_MASK   0x0F00
+#define BRANCH_HINT_MASK  0x3000 
+#define PREFIX_PRINT_MASK 0x000F	/* printable prefixes */
+#define PREFIX_MASK       0xFFFF
+
+/* ---------------------------------------------------------- CPU Type */
+
+#define cpu_8086         0x0001
+#define cpu_80286        0x0002
+#define cpu_80386        0x0003
+#define cpu_80387        0x0004 /* originally these were a co-proc */
+#define cpu_80486        0x0005
+#define cpu_PENTIUM      0x0006
+#define cpu_PENTPRO      0x0007
+#define cpu_PENTIUM2     0x0008
+#define cpu_PENTIUM3     0x0009
+#define cpu_PENTIUM4     0x000A
+#define cpu_K6		 0x0010
+#define cpu_K7		 0x0020
+#define cpu_ATHLON	 0x0030
+#define CPU_MODEL_MASK	 0xFFFF
+#define CPU_MODEL(cpu)	 (cpu & CPU_MODEL_MASK)
+/* intel instruction subsets */
+#define isa_GP		 0x10000	/* General Purpose Instructions */
+#define isa_FPU		 0x20000	/* FPU instructions */
+#define isa_FPUMGT	 0x30000	/* FPU/SIMD Management */
+#define isa_MMX		 0x40000	/* MMX */
+#define isa_SSE1	 0x50000	/* SSE */
+#define isa_SSE2	 0x60000	/* SSE 2 */
+#define isa_SSE3	 0x70000	/* SSE 3 */
+#define isa_3DNOW	 0x80000	/* AMD 3d Now */
+#define isa_SYS		 0x90000	/* System Instructions */
+#define ISA_SUBSET_MASK	 0xFFFF0000
+#define ISA_SUBSET(isa)	(isa & ISA_SUBSET_MASK)
+
+
+/* ------------------------------------------------------ Operand Decoding */
+#define ARG_NONE         0
+
+/* Using a mask allows us to store info such as OP_SIGNED in the
+ * operand flags field */
+#define   OPFLAGS_MASK 	0x0000FFFF
+
+/* Operand Addressing Methods, per intel manual */
+#define   ADDRMETH_MASK	0x00FF0000
+
+/* note: for instructions with implied operands, use no ADDRMETH */
+#define   ADDRMETH_A  	0x00010000   
+#define   ADDRMETH_C   	0x00020000
+#define   ADDRMETH_D   	0x00030000
+#define   ADDRMETH_E   	0x00040000
+#define   ADDRMETH_F   	0x00050000
+#define   ADDRMETH_G   	0x00060000
+#define   ADDRMETH_I   	0x00070000
+#define   ADDRMETH_J   	0x00080000
+#define   ADDRMETH_M   	0x00090000
+#define   ADDRMETH_O   	0x000A0000
+#define   ADDRMETH_P   	0x000B0000
+#define   ADDRMETH_Q   	0x000C0000
+#define   ADDRMETH_R   	0x000D0000
+#define   ADDRMETH_S   	0x000E0000
+#define   ADDRMETH_T   	0x000F0000
+#define   ADDRMETH_V   	0x00100000
+#define   ADDRMETH_W   	0x00110000
+#define   ADDRMETH_X   	0x00120000
+#define   ADDRMETH_Y   	0x00130000
+#define	  ADDRMETH_RR  	0x00140000	/* gen reg hard-coded in opcode */
+#define	  ADDRMETH_RS  	0x00150000	/* seg reg hard-coded in opcode */
+#define	  ADDRMETH_RT  	0x00160000	/* test reg hard-coded in opcode */
+#define	  ADDRMETH_RF  	0x00170000	/* fpu reg hard-coded in opcode */
+#define	  ADDRMETH_II  	0x00180000	/* immediate hard-coded in opcode */
+#define   ADDRMETH_PP   0x00190000	/* mm reg ONLY in modr/m field */
+#define   ADDRMETH_VV   0x001A0000	/* xmm reg ONLY in mod/rm field */
+
+/* Operand Types, per intel manual */
+#define OPTYPE_MASK	0xFF000000
+
+#define OPTYPE_a	0x01000000 /* BOUND: h:h or w:w */
+#define OPTYPE_b   	0x02000000 /* byte */
+#define OPTYPE_c   	0x03000000 /* byte or word */
+#define OPTYPE_d   	0x04000000 /* word */
+#define OPTYPE_dq   	0x05000000 /* qword */
+#define OPTYPE_p   	0x06000000 /* 16:16 or 16:32 pointer */
+#define OPTYPE_pi   	0x07000000 /* dword MMX reg */
+#define OPTYPE_ps   	0x08000000 /* 128-bit single fp */
+#define OPTYPE_q   	0x09000000 /* dword */
+#define OPTYPE_s   	0x0A000000 /* 6-byte descriptor */
+#define OPTYPE_ss   	0x0B000000 /* scalar of 128-bit single fp */
+#define OPTYPE_si   	0x0C000000 /* word general register */
+#define OPTYPE_v   	0x0D000000 /* hword or word */
+#define OPTYPE_w   	0x0E000000 /* hword */
+#define OPTYPE_m   	0x0F000000	/* to handle LEA */
+#define OPTYPE_none 0xFF000000 /* no valid operand size, INVLPG */
+
+/* custom ones for FPU instructions */
+#define OPTYPE_fs	0x10000000	/* pointer to single-real*/
+#define OPTYPE_fd	0x20000000	/* pointer to double real */
+#define OPTYPE_fe	0x30000000	/* pointer to extended real */
+#define OPTYPE_fb	0x40000000	/* pointer to packed BCD */
+#define OPTYPE_fv	0x50000000	/* pointer to FPU env: 14|28-bytes */
+#define OPTYPE_ft	0x60000000	/* pointer to FPU state: 94|108-bytes */
+#define OPTYPE_fx       0x70000000      /* pointer to FPU regs: 512 bites */
+#define OPTYPE_fp       0x80000000      /* general fpu register: dbl ext */
+
+/* SSE2 operand types */
+#define OPTYPE_sd	0x90000000	/* scalar of 128-bit double fp */
+#define OPTYPE_pd	0xA0000000	/* 128-bit double fp */
+
+
+
+/* ---------------------------------------------- Opcode Table Descriptions */
+/* the table type describes how to handle byte/size increments before 
+ * and after lookup. Some tables re-use the current byte, others
+ * consume a byte only if the ModR/M encodes no operands, etc */
+enum ia32_tbl_type_id {
+	tbl_opcode = 0,	/* standard opcode table: no surprises */
+	tbl_prefix,	/* Prefix Override, e.g. 66/F2/F3 */
+	tbl_suffix,	/* 3D Now style */
+	tbl_extension,	/* ModR/M extension: 00-FF -> 00-07 */
+	tbl_ext_ext,	/* extension of modr/m using R/M field */
+	tbl_fpu,	/* fpu table: 00-BF -> 00-0F */
+	tbl_fpu_ext	/* fpu extension : C0-FF -> 00-1F */
+ };
+
+/* How it works:
+ * Bytes are 'consumed' if the next table lookup requires that the byte
+ * pointer be advanced in the instruction stream. 'Does not consume' means
+ * that, when the lookup function recurses, the same byte it re-used in the
+ * new table. It also means that size is not decremented, for example when
+ * a ModR/M byte is used. Note that tbl_extension (ModR/M) instructions that
+ * do not increase the size of an insn with their operands have a forced
+ 3 size increase in the lookup algo. Weird, yes, confusing, yes, welcome
+ * to the Intel ISA. Another note: tbl_prefix is used as an override, so an
+ * empty insn in a prefix table causes the instruction in the original table
+ * to be used, rather than an invalid insn being generated.
+ * 	tbl_opcode uses current byte and consumes it
+ * 	tbl_prefix uses current byte but does not consume it
+ * 	tbl_suffix uses and consumes last byte in insn
+ * 	tbl_extension uses current byte but does not consume it
+ * 	tbl_ext_ext uses current byte but does not consume it
+ * 	tbl_fpu uses current byte and consumes it
+ * 	tbl_fpu_ext uses current byte but does not consume it 
+ */
+
+/* Convenience struct for opcode tables : these will be stored in a 
+ * 'table of tables' so we can use a table index instead of a pointer */
+typedef struct {		/* Assembly instruction tables */
+   ia32_insn_t *table;		/* Pointer to table of instruction encodings */
+   enum ia32_tbl_type_id type;
+   unsigned char shift;		/* amount to shift modrm byte */
+   unsigned char mask;		/* bit mask for look up */
+   unsigned char minlim,maxlim;	/* limits on min/max entries. */
+} ia32_table_desc_t;
+
+
+/* ---------------------------------------------- 'Cooked' Operand Type Info */
+/*                   Permissions: */
+#define OP_R         0x001      /* operand is READ */
+#define OP_W         0x002      /* operand is WRITTEN */
+#define OP_RW        0x003	/* (OP_R|OP_W): convenience macro */
+#define OP_X         0x004      /* operand is EXECUTED */
+
+#define OP_PERM_MASK 0x0000007  /* perms are NOT mutually exclusive */
+#define OP_PERM( type )       (type & OP_PERM_MASK)
+
+/* Flags */
+#define OP_SIGNED    0x010   	/* operand is signed */
+
+#define OP_FLAG_MASK  0x0F0  /* mods are NOT mutually exclusive */
+#define OP_FLAGS( type )        (type & OP_FLAG_MASK)
+
+#define OP_REG_MASK    0x0000FFFF /* lower WORD is register ID */
+#define OP_REGTBL_MASK 0xFFFF0000 /* higher word is register type [gen/dbg] */
+#define OP_REGID( type )      (type & OP_REG_MASK)
+#define OP_REGTYPE( type )    (type & OP_REGTBL_MASK)
+
+/* ------------------------------------------'Cooked' Instruction Type Info */
+/* high-bit opcode types/insn meta-types */
+#define INS_FLAG_PREFIX		0x10000000	/* insn is a prefix */
+#define INS_FLAG_SUFFIX		0x20000000	/* followed by a suffix byte */
+#define INS_FLAG_MASK    	0xFF000000
+
+/* insn notes */
+#define INS_NOTE_RING0		0x00000001	/* insn is privileged */
+#define INS_NOTE_SMM		0x00000002	/* Sys Mgt Mode only */
+#define INS_NOTE_SERIAL		0x00000004	/* serializes */
+#define INS_NOTE_NONSWAP    0x00000008  /* insn is not swapped in att format */ // could be separate field?
+#define INS_NOTE_NOSUFFIX   0x00000010  /* insn has no size suffix in att format */ // could be separate field?
+//#define INS_NOTE_NMI		
+
+#define INS_INVALID 	0
+
+/* instruction groups */
+#define INS_EXEC	0x1000
+#define INS_ARITH	0x2000
+#define INS_LOGIC	0x3000
+#define INS_STACK	0x4000
+#define INS_COND	0x5000
+#define INS_LOAD	0x6000
+#define INS_ARRAY	0x7000
+#define INS_BIT		0x8000
+#define INS_FLAG	0x9000
+#define INS_FPU		0xA000
+#define INS_TRAPS	0xD000
+#define INS_SYSTEM	0xE000
+#define INS_OTHER	0xF000
+
+#define INS_GROUP_MASK	0xF000
+#define INS_GROUP( type )     ( type & INS_GROUP_MASK )
+
+/* INS_EXEC group */
+#define INS_BRANCH	(INS_EXEC | 0x01)	/* Unconditional branch */
+#define INS_BRANCHCC	(INS_EXEC | 0x02)	/* Conditional branch */
+#define INS_CALL	(INS_EXEC | 0x03)	/* Jump to subroutine */
+#define INS_CALLCC	(INS_EXEC | 0x04)	/* Jump to subroutine */
+#define INS_RET		(INS_EXEC | 0x05)	/* Return from subroutine */
+
+/* INS_ARITH group */
+#define INS_ADD 	(INS_ARITH | 0x01)
+#define INS_SUB		(INS_ARITH | 0x02)
+#define INS_MUL		(INS_ARITH | 0x03)
+#define INS_DIV		(INS_ARITH | 0x04)
+#define INS_INC		(INS_ARITH | 0x05)	/* increment */
+#define INS_DEC		(INS_ARITH | 0x06)	/* decrement */
+#define INS_SHL		(INS_ARITH | 0x07)	/* shift right */
+#define INS_SHR		(INS_ARITH | 0x08)	/* shift left */
+#define INS_ROL		(INS_ARITH | 0x09)	/* rotate left */
+#define INS_ROR		(INS_ARITH | 0x0A)	/* rotate right */
+#define INS_MIN		(INS_ARITH | 0x0B)	/* min func */
+#define INS_MAX		(INS_ARITH | 0x0C)	/* max func */
+#define INS_AVG		(INS_ARITH | 0x0D)	/* avg func */
+#define INS_FLR		(INS_ARITH | 0x0E)	/* floor func */
+#define INS_CEIL	(INS_ARITH | 0x0F)	/* ceiling func */
+
+/* INS_LOGIC group */
+#define INS_AND		(INS_LOGIC | 0x01)
+#define INS_OR		(INS_LOGIC | 0x02)
+#define INS_XOR		(INS_LOGIC | 0x03)
+#define INS_NOT		(INS_LOGIC | 0x04)
+#define INS_NEG		(INS_LOGIC | 0x05)
+#define INS_NAND	(INS_LOGIC | 0x06)
+
+/* INS_STACK group */
+#define INS_PUSH	(INS_STACK | 0x01)
+#define INS_POP		(INS_STACK | 0x02)
+#define INS_PUSHREGS	(INS_STACK | 0x03)	/* push register context */
+#define INS_POPREGS	(INS_STACK | 0x04)	/* pop register context */
+#define INS_PUSHFLAGS	(INS_STACK | 0x05)	/* push all flags */
+#define INS_POPFLAGS	(INS_STACK | 0x06)	/* pop all flags */
+#define INS_ENTER	(INS_STACK | 0x07)	/* enter stack frame */
+#define INS_LEAVE	(INS_STACK | 0x08)	/* leave stack frame */
+
+/* INS_COND group */
+#define INS_TEST	(INS_COND | 0x01)
+#define INS_CMP		(INS_COND | 0x02)
+
+/* INS_LOAD group */
+#define INS_MOV		(INS_LOAD | 0x01)
+#define INS_MOVCC	(INS_LOAD | 0x02)
+#define INS_XCHG	(INS_LOAD | 0x03)
+#define INS_XCHGCC	(INS_LOAD | 0x04)
+#define INS_CONV	(INS_LOAD | 0x05)	/* move and convert type */
+
+/* INS_ARRAY group */
+#define INS_STRCMP	(INS_ARRAY | 0x01)
+#define INS_STRLOAD	(INS_ARRAY | 0x02)
+#define INS_STRMOV	(INS_ARRAY | 0x03)
+#define INS_STRSTOR	(INS_ARRAY | 0x04)
+#define INS_XLAT	(INS_ARRAY | 0x05)
+
+/* INS_BIT group */
+#define INS_BITTEST	(INS_BIT | 0x01)
+#define INS_BITSET	(INS_BIT | 0x02)
+#define INS_BITCLR	(INS_BIT | 0x03)
+
+/* INS_FLAG group */
+#define INS_CLEARCF	(INS_FLAG | 0x01)	/* clear Carry flag */
+#define INS_CLEARZF	(INS_FLAG | 0x02)	/* clear Zero flag */
+#define INS_CLEAROF	(INS_FLAG | 0x03)	/* clear Overflow flag */
+#define INS_CLEARDF	(INS_FLAG | 0x04)	/* clear Direction flag */
+#define INS_CLEARSF	(INS_FLAG | 0x05)	/* clear Sign flag */
+#define INS_CLEARPF	(INS_FLAG | 0x06)	/* clear Parity flag */
+#define INS_SETCF	(INS_FLAG | 0x07)
+#define INS_SETZF	(INS_FLAG | 0x08)
+#define INS_SETOF	(INS_FLAG | 0x09)
+#define INS_SETDF	(INS_FLAG | 0x0A)
+#define INS_SETSF	(INS_FLAG | 0x0B)
+#define INS_SETPF	(INS_FLAG | 0x0C)
+#define INS_TOGCF	(INS_FLAG | 0x10)	/* toggle */
+#define INS_TOGZF	(INS_FLAG | 0x20)
+#define INS_TOGOF	(INS_FLAG | 0x30)
+#define INS_TOGDF	(INS_FLAG | 0x40)
+#define INS_TOGSF	(INS_FLAG | 0x50)
+#define INS_TOGPF	(INS_FLAG | 0x60)
+
+/* INS_FPU */
+#define INS_FMOV       (INS_FPU | 0x1)
+#define INS_FMOVCC     (INS_FPU | 0x2)
+#define INS_FNEG       (INS_FPU | 0x3)
+#define INS_FABS       (INS_FPU | 0x4)
+#define INS_FADD       (INS_FPU | 0x5)
+#define INS_FSUB       (INS_FPU | 0x6)
+#define INS_FMUL       (INS_FPU | 0x7)
+#define INS_FDIV       (INS_FPU | 0x8)
+#define INS_FSQRT      (INS_FPU | 0x9)
+#define INS_FCMP       (INS_FPU | 0xA)
+#define INS_FCOS       (INS_FPU | 0xC)               /* cosine */
+#define INS_FLDPI      (INS_FPU | 0xD)               /* load pi */
+#define INS_FLDZ       (INS_FPU | 0xE)               /* load 0 */
+#define INS_FTAN       (INS_FPU | 0xF)               /* tanget */
+#define INS_FSINE      (INS_FPU | 0x10)              /* sine */
+#define INS_FSYS       (INS_FPU | 0x20)              /* misc */
+
+/* INS_TRAP */
+#define INS_TRAP	(INS_TRAPS | 0x01)	/* generate trap */
+#define INS_TRAPCC	(INS_TRAPS | 0x02)	/* conditional trap gen */
+#define INS_TRET	(INS_TRAPS | 0x03)	/* return from trap */
+#define INS_BOUNDS	(INS_TRAPS | 0x04)	/* gen bounds trap */
+#define INS_DEBUG	(INS_TRAPS | 0x05)	/* gen breakpoint trap */
+#define INS_TRACE	(INS_TRAPS | 0x06)	/* gen single step trap */
+#define INS_INVALIDOP	(INS_TRAPS | 0x07)	/* gen invalid insn */
+#define INS_OFLOW	(INS_TRAPS | 0x08)	/* gen overflow trap */
+#define INS_ICEBP	(INS_TRAPS | 0x09)	/* ICE breakpoint */
+
+/* INS_SYSTEM */
+#define INS_HALT	(INS_SYSTEM | 0x01)	/* halt machine */
+#define INS_IN		(INS_SYSTEM | 0x02)	/* input form port */
+#define INS_OUT		(INS_SYSTEM | 0x03)	/* output to port */
+#define INS_CPUID	(INS_SYSTEM | 0x04)	/* identify cpu */
+
+/* INS_OTHER */
+#define INS_NOP		(INS_OTHER | 0x01)
+#define INS_BCDCONV	(INS_OTHER | 0x02)	/* convert to/from BCD */
+#define INS_SZCONV	(INS_OTHER | 0x03)	/* convert size of operand */
+#define INS_SALC	(INS_OTHER | 0x04)	/* set %al on carry */
+#define INS_UNKNOWN	(INS_OTHER | 0x05)
+ 
+
+#define INS_TYPE_MASK	0xFFFF
+#define INS_TYPE( type )      ( type & INS_TYPE_MASK )
+
+   /* flags effected by instruction */
+#define INS_TEST_CARRY        0x01    /* carry */
+#define INS_TEST_ZERO         0x02    /* zero/equal */
+#define INS_TEST_OFLOW        0x04    /* overflow */
+#define INS_TEST_DIR          0x08    /* direction */
+#define INS_TEST_SIGN         0x10    /* negative */
+#define INS_TEST_PARITY       0x20    /* parity */
+#define INS_TEST_OR           0x40    /* used in jle */
+#define INS_TEST_NCARRY       0x100	/* ! carry */
+#define INS_TEST_NZERO        0x200	/* ! zero */
+#define INS_TEST_NOFLOW       0x400	/* ! oflow */
+#define INS_TEST_NDIR         0x800	/* ! dir */
+#define INS_TEST_NSIGN        0x100	/* ! sign */
+#define INS_TEST_NPARITY      0x2000	/* ! parity */
+/* SF == OF */
+#define INS_TEST_SFEQOF       0x4000
+/* SF != OF */
+#define INS_TEST_SFNEOF       0x8000
+
+#define INS_TEST_ALL		INS_TEST_CARRY | INS_TEST_ZERO | \
+				INS_TEST_OFLOW | INS_TEST_SIGN | \
+				INS_TEST_PARITY
+
+#define INS_SET_CARRY        0x010000    /* carry */
+#define INS_SET_ZERO         0x020000    /* zero/equal */
+#define INS_SET_OFLOW        0x040000    /* overflow */
+#define INS_SET_DIR          0x080000    /* direction */
+#define INS_SET_SIGN         0x100000    /* negative */
+#define INS_SET_PARITY       0x200000    /* parity */
+#define INS_SET_NCARRY       0x1000000 
+#define INS_SET_NZERO        0x2000000
+#define INS_SET_NOFLOW       0x4000000
+#define INS_SET_NDIR         0x8000000
+#define INS_SET_NSIGN        0x10000000
+#define INS_SET_NPARITY      0x20000000
+#define INS_SET_SFEQOF       0x40000000
+#define INS_SET_SFNEOF       0x80000000
+
+#define INS_SET_ALL		INS_SET_CARRY | INS_SET_ZERO | \
+				INS_SET_OFLOW | INS_SET_SIGN | \
+				INS_SET_PARITY
+
+#define INS_TEST_MASK          0x0000FFFF
+#define INS_FLAGS_TEST(x)      (x & INS_TEST_MASK)
+#define INS_SET_MASK           0xFFFF0000
+#define INS_FLAGS_SET(x)       (x & INS_SET_MASK)
+
+#if 0
+/* TODO: actually start using these */
+#define X86_PAIR_NP	1		/* not pairable; execs in U */
+#define X86_PAIR_PU	2		/* pairable in U pipe */
+#define X86_PAIR_PV	3		/* pairable in V pipe */
+#define X86_PAIR_UV	4		/* pairable in UV pipe */
+#define X86_PAIR_FX	5		/* pairable with FXCH */
+
+#define X86_EXEC_PORT_0	1
+#define X86_EXEC_PORT_1	2
+#define X86_EXEC_PORT_2	4
+#define X86_EXEC_PORT_3	8
+#define X86_EXEC_PORT_4	16
+
+#define X86_EXEC_UNITS
+
+typedef struct {	/* representation of an insn during decoding */
+	uint32_t flags;		/* runtime settings */
+	/* instruction prefixes and other foolishness */
+	uint32_t prefix;		/* encoding of prefix */
+	char prefix_str[16];		/* mnemonics for prefix */
+	uint32_t branch_hint;	/* gah! */
+	unsigned int cpu_ver;		/* TODO: cpu version */
+	unsigned int clocks;		/* TODO: clock cycles: min/max */
+	unsigned char last_prefix;
+	/* runtime intruction decoding helpers */
+	unsigned char mode;		/* 16, 32, 64 */
+	unsigned char gen_regs;		/* offset of default general reg set */
+	unsigned char sz_operand;	/* operand size for insn */
+	unsigned char sz_address;	/* address size for insn */
+	unsigned char uops;		/* uops per insn */
+	unsigned char pairing;		/* np,pu,pv.lv */
+	unsigned char exec_unit;
+	unsigned char exec_port;
+	unsigned char latency;
+} ia32_info_t;
+#define MODE_32 0	/* default */
+#define MODE_16 1
+#define MODE_64 2
+#endif
+
+#endif
diff --git a/google-breakpad/src/third_party/libdisasm/ia32_invariant.c b/google-breakpad/src/third_party/libdisasm/ia32_invariant.c
new file mode 100644
index 0000000..68ec153
--- /dev/null
+++ b/google-breakpad/src/third_party/libdisasm/ia32_invariant.c
@@ -0,0 +1,313 @@
+#include <stdlib.h>
+#include <string.h>
+
+#include "ia32_invariant.h"
+#include "ia32_insn.h"
+#include "ia32_settings.h"
+
+extern ia32_table_desc_t *ia32_tables;
+extern ia32_settings_t ia32_settings;
+
+extern size_t ia32_table_lookup( unsigned char *buf, size_t buf_len,
+		unsigned int table, ia32_insn_t **raw_insn,
+		 unsigned int *prefixes );
+
+
+/* -------------------------------- ModR/M, SIB */
+/* Convenience flags */
+#define MODRM_EA  1                     /* ModR/M is an effective addr */
+#define MODRM_reg 2                     /* ModR/M is a register */
+
+/* ModR/M flags */
+#define MODRM_RM_SIB            0x04    /* R/M == 100 */
+#define MODRM_RM_NOREG          0x05    /* R/B == 101 */
+/* if (MODRM.MOD_NODISP && MODRM.RM_NOREG) then just disp32 */
+#define MODRM_MOD_NODISP        0x00    /* mod == 00 */
+#define MODRM_MOD_DISP8         0x01    /* mod == 01 */
+#define MODRM_MOD_DISP32        0x02    /* mod == 10 */
+#define MODRM_MOD_NOEA          0x03    /* mod == 11 */
+/* 16-bit modrm flags */
+#define MOD16_MOD_NODISP      0
+#define MOD16_MOD_DISP8       1
+#define MOD16_MOD_DISP16      2
+#define MOD16_MOD_REG         3
+
+#define MOD16_RM_BXSI         0
+#define MOD16_RM_BXDI         1
+#define MOD16_RM_BPSI         2
+#define MOD16_RM_BPDI         3
+#define MOD16_RM_SI           4
+#define MOD16_RM_DI           5
+#define MOD16_RM_BP           6
+#define MOD16_RM_BX           7
+
+/* SIB flags */
+#define SIB_INDEX_NONE       0x04
+#define SIB_BASE_EBP       0x05
+#define SIB_SCALE_NOBASE    0x00
+
+/* Convenience struct for modR/M bitfield */
+struct modRM_byte {  
+   unsigned int mod : 2;
+   unsigned int reg : 3;
+   unsigned int rm  : 3; 
+};
+
+/* Convenience struct for SIB bitfield */
+struct SIB_byte {
+   unsigned int scale : 2;
+   unsigned int index : 3;
+   unsigned int base  : 3;
+};
+
+#ifdef WIN32
+static void byte_decode(unsigned char b, struct modRM_byte *modrm) {
+#else
+static inline void byte_decode(unsigned char b, struct modRM_byte *modrm) {
+#endif
+	/* generic bitfield-packing routine */
+
+	modrm->mod = b >> 6;	/* top 2 bits */
+	modrm->reg = (b & 56) >> 3;	/* middle 3 bits */
+	modrm->rm = b & 7;	/* bottom 3 bits */
+}
+static int ia32_invariant_modrm( unsigned char *in, unsigned char *out,
+				 unsigned int mode_16, x86_invariant_op_t *op) {
+	struct modRM_byte modrm;
+	struct SIB_byte sib;
+	unsigned char *c, *cin;
+	unsigned short *s;
+	unsigned int *i;
+	int size = 0;	/* modrm byte is already counted */
+
+
+	byte_decode(*in, &modrm);	/* get bitfields */
+
+	out[0] = in[0];	/* save modrm byte */
+	cin = &in[1];
+	c = &out[1];
+	s = (unsigned short *)&out[1];
+	i = (unsigned int *)&out[1];
+
+	op->type = op_expression;
+	op->flags |= op_pointer;
+	if ( ! mode_16 && modrm.rm == MODRM_RM_SIB && 
+			      modrm.mod != MODRM_MOD_NOEA ) {
+		size ++;
+		byte_decode(*cin, (struct modRM_byte *)(void*)&sib);
+
+		out[1] = in[1];	/* save sib byte */
+		cin = &in[2];
+		c = &out[2];
+		s = (unsigned short *)&out[2];
+		i = (unsigned int *)&out[2];
+
+		if ( sib.base == SIB_BASE_EBP && ! modrm.mod ) {
+			/* disp 32 is variant! */
+			memset( i, X86_WILDCARD_BYTE, 4 );
+			size += 4;
+		}
+	}
+
+	if (! modrm.mod && modrm.rm == 101) {
+		if ( mode_16 ) {	/* straight RVA in disp */
+			memset( s, X86_WILDCARD_BYTE, 2 );
+			size += 2;
+		} else {
+			memset( i, X86_WILDCARD_BYTE, 2 );
+			size += 4;
+		}
+	} else if (modrm.mod && modrm.mod < 3) {
+		if (modrm.mod == MODRM_MOD_DISP8) {	 /* offset in disp */
+			*c = *cin;	
+			size += 1;
+		} else if ( mode_16 ) {
+			*s = (* ((unsigned short *) cin));
+			size += 2;
+		} else {
+			*i = (*((unsigned int *) cin));
+			size += 4;
+		}
+	} else if ( modrm.mod == 3 ) {
+		op->type = op_register;
+		op->flags &= ~op_pointer;
+	}
+
+	return (size);
+}
+
+
+static int ia32_decode_invariant( unsigned char *buf, size_t buf_len, 
+				ia32_insn_t *t, unsigned char *out, 
+				unsigned int prefixes, x86_invariant_t *inv) {
+
+	unsigned int addr_size, op_size, mode_16;
+	unsigned int op_flags[3] = { t->dest_flag, t->src_flag, t->aux_flag };
+	int x, type, bytes = 0, size = 0, modrm = 0;
+
+	/* set addressing mode */
+	if (ia32_settings.options & opt_16_bit) {
+		op_size = ( prefixes & PREFIX_OP_SIZE ) ? 4 : 2;
+		addr_size = ( prefixes & PREFIX_ADDR_SIZE ) ? 4 : 2;
+		mode_16 = ( prefixes & PREFIX_ADDR_SIZE ) ? 0 : 1;
+	} else {
+		op_size = ( prefixes & PREFIX_OP_SIZE ) ? 2 : 4;
+		addr_size = ( prefixes & PREFIX_ADDR_SIZE ) ? 2 : 4;
+		mode_16 = ( prefixes & PREFIX_ADDR_SIZE ) ? 1 : 0;
+	}
+
+	for (x = 0; x < 3; x++) {
+		inv->operands[x].access = (enum x86_op_access) 
+						OP_PERM(op_flags[x]);
+		inv->operands[x].flags = (enum x86_op_flags) 
+						(OP_FLAGS(op_flags[x]) >> 12);
+
+		switch (op_flags[x] & OPTYPE_MASK) {
+			case OPTYPE_c:
+				size = (op_size == 4) ? 2 : 1;
+				break;
+			case OPTYPE_a: case OPTYPE_v:
+				size = (op_size == 4) ? 4 : 2;
+				break;
+			case OPTYPE_p:
+				size = (op_size == 4) ? 6 : 4;
+				break;
+			case OPTYPE_b:
+				size = 1;
+				break;
+			case OPTYPE_w:
+				size = 2;
+				break;
+			case OPTYPE_d: case OPTYPE_fs: case OPTYPE_fd:
+			case OPTYPE_fe: case OPTYPE_fb: case OPTYPE_fv:
+			case OPTYPE_si: case OPTYPE_fx:
+				size = 4;
+				break;
+			case OPTYPE_s:
+				size = 6;
+				break;
+			case OPTYPE_q: case OPTYPE_pi:
+				size = 8;
+				break;
+			case OPTYPE_dq: case OPTYPE_ps: case OPTYPE_ss:
+			case OPTYPE_pd: case OPTYPE_sd:
+				size = 16;
+				break;
+			case OPTYPE_m:	
+				size = (addr_size == 4) ? 4 : 2;
+				break;
+			default:
+				break;
+		}
+
+		type = op_flags[x] & ADDRMETH_MASK;
+		switch (type) {
+			case ADDRMETH_E: case ADDRMETH_M: case ADDRMETH_Q:
+			case ADDRMETH_R: case ADDRMETH_W:
+				modrm = 1;	
+				bytes += ia32_invariant_modrm( buf, out, 
+						mode_16, &inv->operands[x]);
+				break;
+			case ADDRMETH_C: case ADDRMETH_D: case ADDRMETH_G:
+			case ADDRMETH_P: case ADDRMETH_S: case ADDRMETH_T:
+			case ADDRMETH_V:
+				inv->operands[x].type = op_register;
+				modrm = 1;
+				break;
+			case ADDRMETH_A: case ADDRMETH_O:
+				/* pad with xF4's */
+				memset( &out[bytes + modrm], X86_WILDCARD_BYTE, 
+					size );
+				bytes += size;
+				inv->operands[x].type = op_offset;
+				if ( type == ADDRMETH_O ) {
+					inv->operands[x].flags |= op_signed |
+								  op_pointer;
+				}
+				break;
+			case ADDRMETH_I: case ADDRMETH_J:
+				/* grab imm value */
+				if ((op_flags[x] & OPTYPE_MASK) == OPTYPE_v) {
+					/* assume this is an address */
+					memset( &out[bytes + modrm], 
+						X86_WILDCARD_BYTE, size );
+				} else {
+					memcpy( &out[bytes + modrm], 
+						&buf[bytes + modrm], size );
+				}
+					
+				bytes += size;
+				if ( type == ADDRMETH_J ) {
+					if ( size == 1 ) {
+						inv->operands[x].type = 
+							op_relative_near;
+					} else {
+						inv->operands[x].type = 
+							op_relative_far;
+					}
+					inv->operands[x].flags |= op_signed;
+				} else {
+					inv->operands[x].type = op_immediate;
+				}
+				break;
+			case ADDRMETH_F:
+				inv->operands[x].type = op_register;
+				break;
+			case ADDRMETH_X:
+				inv->operands[x].flags |= op_signed |
+					  op_pointer | op_ds_seg | op_string;
+				break;
+			case ADDRMETH_Y:
+				inv->operands[x].flags |= op_signed |
+					  op_pointer | op_es_seg | op_string;
+				break;
+			case ADDRMETH_RR:	
+				inv->operands[x].type = op_register;
+				break;
+			case ADDRMETH_II:	
+				inv->operands[x].type = op_immediate;
+				break;
+			default:
+				inv->operands[x].type = op_unused;
+				break;
+		}
+	}
+
+	return (bytes + modrm);
+}
+
+size_t ia32_disasm_invariant( unsigned char * buf, size_t buf_len, 
+		x86_invariant_t *inv ) {
+	ia32_insn_t *raw_insn = NULL;
+	unsigned int prefixes;
+	unsigned int type;
+	size_t size;
+	
+	/* Perform recursive table lookup starting with main table (0) */
+	size = ia32_table_lookup( buf, buf_len, 0, &raw_insn, &prefixes );
+	if ( size == INVALID_INSN || size > buf_len ) {
+		/* TODO: set errno */
+		return 0;
+	}
+
+	/* copy opcode bytes to buffer */
+	memcpy( inv->bytes, buf, size );
+
+	/* set mnemonic type and group */
+	type = raw_insn->mnem_flag & ~INS_FLAG_MASK;
+        inv->group = (enum x86_insn_group) (INS_GROUP(type)) >> 12;
+        inv->type = (enum x86_insn_type) INS_TYPE(type);
+
+	/* handle operands */
+	size += ia32_decode_invariant( buf + size, buf_len - size, raw_insn, 
+					&buf[size - 1], prefixes, inv );
+
+	inv->size = size;
+
+	return size;		/* return size of instruction in bytes */
+}
+
+size_t ia32_disasm_size( unsigned char *buf, size_t buf_len ) {
+	x86_invariant_t inv = { {0} };
+	return( ia32_disasm_invariant( buf, buf_len, &inv ) );
+}
diff --git a/google-breakpad/src/third_party/libdisasm/ia32_invariant.h b/google-breakpad/src/third_party/libdisasm/ia32_invariant.h
new file mode 100644
index 0000000..e1cea60
--- /dev/null
+++ b/google-breakpad/src/third_party/libdisasm/ia32_invariant.h
@@ -0,0 +1,11 @@
+#ifndef IA32_INVARIANT_H
+#define IA32_INVARIANT_H
+
+#include "libdis.h"
+
+size_t ia32_disasm_invariant( unsigned char *buf, size_t buf_len, 
+		x86_invariant_t *inv);
+
+size_t ia32_disasm_size( unsigned char *buf, size_t buf_len );
+
+#endif
diff --git a/google-breakpad/src/third_party/libdisasm/ia32_modrm.c b/google-breakpad/src/third_party/libdisasm/ia32_modrm.c
new file mode 100644
index 0000000..b0fe2ed
--- /dev/null
+++ b/google-breakpad/src/third_party/libdisasm/ia32_modrm.c
@@ -0,0 +1,310 @@
+#include "ia32_modrm.h"
+#include "ia32_reg.h"
+#include "x86_imm.h"
+
+/* NOTE: when decoding ModR/M and SIB, we have to add 1 to all register
+ * values obtained from decoding the ModR/M or SIB byte, since they
+ * are encoded with eAX = 0 and the tables in ia32_reg.c use eAX = 1.
+ * ADDENDUM: this is only the case when the register value is used
+ * directly as an index into the register table, not when it is added to
+ * a genregs offset. */
+
+/* -------------------------------- ModR/M, SIB */
+/* ModR/M flags */
+#define MODRM_RM_SIB            0x04    /* R/M == 100 */
+#define MODRM_RM_NOREG          0x05    /* R/B == 101 */
+
+/* if (MODRM.MOD_NODISP && MODRM.RM_NOREG) then just disp32 */
+#define MODRM_MOD_NODISP        0x00    /* mod == 00 */
+#define MODRM_MOD_DISP8         0x01    /* mod == 01 */
+#define MODRM_MOD_DISP32        0x02    /* mod == 10 */
+#define MODRM_MOD_NOEA          0x03    /* mod == 11 */
+
+/* 16-bit modrm flags */
+#define MOD16_MOD_NODISP      0
+#define MOD16_MOD_DISP8       1
+#define MOD16_MOD_DISP16      2
+#define MOD16_MOD_REG         3
+
+#define MOD16_RM_BXSI         0
+#define MOD16_RM_BXDI         1
+#define MOD16_RM_BPSI         2
+#define MOD16_RM_BPDI         3
+#define MOD16_RM_SI           4
+#define MOD16_RM_DI           5
+#define MOD16_RM_BP           6
+#define MOD16_RM_BX           7
+
+/* SIB flags */
+#define SIB_INDEX_NONE       0x04
+#define SIB_BASE_EBP       0x05
+#define SIB_SCALE_NOBASE    0x00
+
+/* Convenience struct for modR/M bitfield */
+struct modRM_byte {  
+   unsigned int mod : 2;
+   unsigned int reg : 3;
+   unsigned int rm  : 3; 
+};
+
+/* Convenience struct for SIB bitfield */
+struct SIB_byte {
+   unsigned int scale : 2;
+   unsigned int index : 3;
+   unsigned int base  : 3;
+};
+
+
+#if 0
+int modrm_rm[] = {0,1,2,3,MODRM_RM_SIB,MODRM_MOD_DISP32,6,7};
+int modrm_reg[] = {0, 1, 2, 3, 4, 5, 6, 7};
+int modrm_mod[]  = {0, MODRM_MOD_DISP8, MODRM_MOD_DISP32, MODRM_MOD_NOEA};
+int sib_scl[] = {0, 2, 4, 8};
+int sib_idx[] = {0, 1, 2, 3, SIB_INDEX_NONE, 5, 6, 7 };
+int sib_bas[] = {0, 1, 2, 3, 4, SIB_SCALE_NOBASE, 6, 7 };
+#endif
+
+/* this is needed to replace x86_imm_signsized() which does not sign-extend
+ * to dest */
+static unsigned int imm32_signsized( unsigned char *buf, size_t buf_len,
+				     int32_t *dest, unsigned int size ) {
+	if ( size > buf_len ) {
+		return 0;
+	}
+
+	switch (size) {
+		case 1:
+			*dest = *((signed char *) buf);
+			break;
+		case 2:
+			*dest = *((signed short *) buf);
+			break;
+		case 4:
+		default:
+			*dest = *((signed int *) buf);
+			break;
+	}
+
+	return size;
+}
+
+
+
+static void byte_decode(unsigned char b, struct modRM_byte *modrm) {
+	/* generic bitfield-packing routine */
+
+	modrm->mod = b >> 6;	/* top 2 bits */
+	modrm->reg = (b & 56) >> 3;	/* middle 3 bits */
+	modrm->rm = b & 7;	/* bottom 3 bits */
+}
+
+
+static size_t sib_decode( unsigned char *buf, size_t buf_len, x86_ea_t *ea, 
+			  unsigned int mod ) {
+	/* set Address Expression fields (scale, index, base, disp) 
+	 * according to the contents of the SIB byte.
+	 *  b points to the SIB byte in the instruction-stream buffer; the
+	 *    byte after b[0] is therefore the byte after the SIB
+	 *  returns number of bytes 'used', including the SIB byte */
+	size_t size = 1;		/* start at 1 for SIB byte */
+	struct SIB_byte sib;
+
+	if ( buf_len < 1 ) {
+		return 0;
+	}
+
+	byte_decode( *buf, (struct modRM_byte *)(void*)&sib );  /* get bit-fields */
+
+	if ( sib.base == SIB_BASE_EBP && ! mod ) {  /* if base == 101 (ebp) */
+	    /* IF BASE == EBP, deal with exception */
+		/* IF (ModR/M did not create a Disp */
+		/* ... create a 32-bit Displacement */
+		imm32_signsized( &buf[1], buf_len, &ea->disp, sizeof(int32_t));
+		ea->disp_size = sizeof(int32_t);
+		ea->disp_sign = (ea->disp < 0) ? 1 : 0;
+		size += 4;	/* add sizeof disp to count */
+
+	} else {
+		/* ELSE BASE refers to a General Register */
+		ia32_handle_register( &ea->base, sib.base + 1 );
+	}
+
+	/* set scale to 1, 2, 4, 8 */
+	ea->scale = 1 << sib.scale;
+
+	if (sib.index != SIB_INDEX_NONE) {
+		/* IF INDEX is not 'ESP' (100) */
+		ia32_handle_register( &ea->index, sib.index + 1 );
+	}
+
+	return (size);		/* return number of bytes processed */
+}
+
+static size_t modrm_decode16( unsigned char *buf, unsigned int buf_len,
+			    x86_op_t *op, struct modRM_byte *modrm ) {
+	/* 16-bit mode: hackish, but not as hackish as 32-bit mode ;) */
+	size_t size = 1; /* # of bytes decoded [1 for modR/M byte] */
+	x86_ea_t * ea = &op->data.expression;
+
+	switch( modrm->rm ) {
+		case MOD16_RM_BXSI:
+			ia32_handle_register(&ea->base, REG_WORD_OFFSET + 3);
+			ia32_handle_register(&ea->index, REG_WORD_OFFSET + 6);
+			break;
+		case MOD16_RM_BXDI:
+			ia32_handle_register(&ea->base, REG_WORD_OFFSET + 3);
+			ia32_handle_register(&ea->index, REG_WORD_OFFSET + 7);
+		case MOD16_RM_BPSI:
+			op->flags |= op_ss_seg;
+			ia32_handle_register(&ea->base, REG_WORD_OFFSET + 5);
+			ia32_handle_register(&ea->index, REG_WORD_OFFSET + 6);
+			break;
+		case MOD16_RM_BPDI:
+			op->flags |= op_ss_seg;
+			ia32_handle_register(&ea->base, REG_WORD_OFFSET + 5);
+			ia32_handle_register(&ea->index, REG_WORD_OFFSET + 7);
+			break;
+		case MOD16_RM_SI:
+			ia32_handle_register(&ea->base, REG_WORD_OFFSET + 6);
+			break;
+		case MOD16_RM_DI:
+			ia32_handle_register(&ea->base, REG_WORD_OFFSET + 7);
+			break;
+		case MOD16_RM_BP:
+			if ( modrm->mod != MOD16_MOD_NODISP ) {
+				op->flags |= op_ss_seg;
+				ia32_handle_register(&ea->base, 
+						     REG_WORD_OFFSET + 5);
+			}
+			break;
+		case MOD16_RM_BX:
+			ia32_handle_register(&ea->base, REG_WORD_OFFSET + 3);
+			break;
+	}
+
+	/* move to byte after ModR/M */
+	++buf;
+	--buf_len;
+
+	if ( modrm->mod == MOD16_MOD_DISP8 ) {
+		imm32_signsized( buf, buf_len, &ea->disp, sizeof(char) );
+		ea->disp_sign = (ea->disp < 0) ? 1 : 0;
+		ea->disp_size = sizeof(char);
+		size += sizeof(char);
+	} else if ( modrm->mod == MOD16_MOD_DISP16 ) {
+		imm32_signsized( buf, buf_len, &ea->disp, sizeof(short) );
+		ea->disp_sign = (ea->disp < 0) ? 1 : 0;
+		ea->disp_size = sizeof(short);
+		size += sizeof(short);
+	} 
+
+	return size;
+}
+
+/* TODO : Mark index modes
+    Use addressing mode flags to imply arrays (index), structure (disp),
+    two-dimensional arrays [disp + index], classes [ea reg], and so on.
+*/
+size_t ia32_modrm_decode( unsigned char *buf, unsigned int buf_len,
+			    x86_op_t *op, x86_insn_t *insn, size_t gen_regs ) {
+	/* create address expression and/or fill operand based on value of
+	 * ModR/M byte. Calls sib_decode as appropriate.
+	 *    flags specifies whether Reg or mod+R/M fields are being decoded
+	 *  returns the number of bytes in the instruction, including modR/M */
+	struct modRM_byte modrm;
+	size_t size = 1;	/* # of bytes decoded [1 for modR/M byte] */
+	x86_ea_t * ea;
+
+
+	byte_decode(*buf, &modrm);	/* get bitfields */
+
+	/* first, handle the case where the mod field is a register only */
+	if ( modrm.mod == MODRM_MOD_NOEA ) {
+		op->type = op_register;
+		ia32_handle_register(&op->data.reg, modrm.rm + gen_regs);
+                /* increase insn size by 1 for modrm byte */
+ 		return 1;
+ 	}
+ 
+	/* then deal with cases where there is an effective address */
+	ea = &op->data.expression;
+	op->type = op_expression;
+	op->flags |= op_pointer;
+
+	if ( insn->addr_size == 2 ) {
+		/* gah! 16 bit mode! */
+		return modrm_decode16( buf, buf_len, op, &modrm);
+	}
+
+	/* move to byte after ModR/M */
+	++buf;
+	--buf_len;
+
+	if (modrm.mod == MODRM_MOD_NODISP) {	/* if mod == 00 */
+
+		/* IF MOD == No displacement, just Indirect Register */
+		if (modrm.rm == MODRM_RM_NOREG) {	/* if r/m == 101 */
+			/* IF RM == No Register, just Displacement */
+			/* This is an Intel Moronic Exception TM */
+			imm32_signsized( buf, buf_len, &ea->disp, 
+					sizeof(int32_t) );
+			ea->disp_size = sizeof(int32_t);
+			ea->disp_sign = (ea->disp < 0) ? 1 : 0;
+			size += 4;	/* add sizeof disp to count */
+
+		} else if (modrm.rm == MODRM_RM_SIB) {	/* if r/m == 100 */
+			/* ELSE IF an SIB byte is present */
+			/* TODO: check for 0 retval */
+			size += sib_decode( buf, buf_len, ea, modrm.mod);
+			/* move to byte after SIB for displacement */
+			++buf;
+			--buf_len;
+		} else {	/* modR/M specifies base register */
+			/* ELSE RM encodes a general register */
+			ia32_handle_register( &ea->base, modrm.rm + 1 );
+		}
+	} else { 					/* mod is 01 or 10 */
+		if (modrm.rm == MODRM_RM_SIB) {	/* rm == 100 */
+			/* IF base is an AddrExpr specified by an SIB byte */
+			/* TODO: check for 0 retval */
+			size += sib_decode( buf, buf_len, ea, modrm.mod);
+			/* move to byte after SIB for displacement */
+			++buf;
+			--buf_len;
+		} else {
+			/* ELSE base is a general register */
+			ia32_handle_register( &ea->base, modrm.rm + 1 );
+		}
+
+		/* ELSE mod + r/m specify a disp##[base] or disp##(SIB) */
+		if (modrm.mod == MODRM_MOD_DISP8) {		/* mod == 01 */
+			/* If this is an 8-bit displacement */
+			imm32_signsized( buf, buf_len, &ea->disp, 
+					sizeof(char));
+			ea->disp_size = sizeof(char);
+			ea->disp_sign = (ea->disp < 0) ? 1 : 0;
+			size += 1;	/* add sizeof disp to count */
+
+		} else {
+			/* Displacement is dependent on address size */
+			imm32_signsized( buf, buf_len, &ea->disp, 
+					insn->addr_size);
+			ea->disp_size = insn->addr_size;
+			ea->disp_sign = (ea->disp < 0) ? 1 : 0;
+			size += 4;
+		}
+	}
+
+	return size;		/* number of bytes found in instruction */
+}
+
+void ia32_reg_decode( unsigned char byte, x86_op_t *op, size_t gen_regs ) {
+	struct modRM_byte modrm;
+	byte_decode( byte, &modrm );	/* get bitfields */
+
+ 	/* set operand to register ID */
+	op->type = op_register;
+	ia32_handle_register(&op->data.reg, modrm.reg + gen_regs);
+
+	return;
+}
diff --git a/google-breakpad/src/third_party/libdisasm/ia32_modrm.h b/google-breakpad/src/third_party/libdisasm/ia32_modrm.h
new file mode 100644
index 0000000..765cb08
--- /dev/null
+++ b/google-breakpad/src/third_party/libdisasm/ia32_modrm.h
@@ -0,0 +1,13 @@
+#ifndef IA32_MODRM_H
+#define IA32_MODRM_H
+
+#include "libdis.h"
+#include "ia32_insn.h"
+
+size_t ia32_modrm_decode( unsigned char *buf, unsigned int buf_len,
+			    x86_op_t *op, x86_insn_t *insn,
+			    size_t gen_regs );
+
+void ia32_reg_decode( unsigned char byte, x86_op_t *op, size_t gen_regs );
+
+#endif
diff --git a/google-breakpad/src/third_party/libdisasm/ia32_opcode_tables.c b/google-breakpad/src/third_party/libdisasm/ia32_opcode_tables.c
new file mode 100644
index 0000000..ef97c7a
--- /dev/null
+++ b/google-breakpad/src/third_party/libdisasm/ia32_opcode_tables.c
@@ -0,0 +1,2939 @@
+#include "ia32_insn.h"
+
+#include "ia32_reg.h"
+
+#include "ia32_opcode_tables.h"
+
+static ia32_insn_t tbl_Main[] = {	/* One-byte Opcodes */
+	 { 0,   INS_ADD,  0,   ADDRMETH_E | OPTYPE_b | OP_W | OP_R,   ADDRMETH_G | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "add", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_ADD,  0,   ADDRMETH_E | OPTYPE_v | OP_W | OP_R,   ADDRMETH_G | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "add", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_ADD,  0,   ADDRMETH_G | OPTYPE_b | OP_W | OP_R,   ADDRMETH_E | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "add", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_ADD,  0,   ADDRMETH_G | OPTYPE_v | OP_W | OP_R,   ADDRMETH_E | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "add", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_ADD,  0,   ADDRMETH_RR | OPTYPE_b | OP_W | OP_R,   ADDRMETH_I | OPTYPE_b | OP_SIGNED | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "add", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_ADD,  0,   ADDRMETH_RR | OPTYPE_v | OP_W | OP_R,   ADDRMETH_I | OPTYPE_v | OP_SIGNED | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "add", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_PUSH,  0,   ADDRMETH_RS | OPTYPE_w | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "push", "",   0,   0,   0,  0 , 33 },
+	 { 0,   INS_POP,  0,   ADDRMETH_RS | OPTYPE_w | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "pop", "",   0,   0,   0,  0 , 33 },
+	 { 0,   INS_OR,  0,   ADDRMETH_E | OPTYPE_b | OP_W | OP_R,   ADDRMETH_G | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "or", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_OR,  0,   ADDRMETH_E | OPTYPE_v | OP_W | OP_R,   ADDRMETH_G | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "or", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_OR,  0,   ADDRMETH_G | OPTYPE_b | OP_W | OP_R,   ADDRMETH_E | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "or", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_OR,  0,   ADDRMETH_G | OPTYPE_v | OP_W | OP_R,   ADDRMETH_E | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "or", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_OR,  0,   ADDRMETH_RR | OPTYPE_b | OP_W | OP_R,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "or", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_OR,  0,   ADDRMETH_RR | OPTYPE_v | OP_W | OP_R,   ADDRMETH_I | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "or", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_PUSH,  0,   ADDRMETH_RS | OPTYPE_w | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "push", "",   1,   0,   0,  0 , 33 },
+	 { idx_0F,   0,   0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "", "",   0,   0,   0,  0 , 0 },
+/* 0x10 */
+	 { 0,   INS_ADD,  0,   ADDRMETH_E | OPTYPE_b | OP_W | OP_R,   ADDRMETH_G | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "adc", "",   0,   0,   0,  INS_SET_ALL|INS_TEST_CARRY, 0 },
+	 { 0,   INS_ADD,  0,   ADDRMETH_E | OPTYPE_v | OP_W | OP_R,   ADDRMETH_G | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "adc", "",   0,   0,   0,  INS_SET_ALL|INS_TEST_CARRY, 0 },
+	 { 0,   INS_ADD,  0,   ADDRMETH_G | OPTYPE_b | OP_W | OP_R,   ADDRMETH_E | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "adc", "",   0,   0,   0,  INS_SET_ALL|INS_TEST_CARRY, 0 },
+	 { 0,   INS_ADD,  0,   ADDRMETH_G | OPTYPE_v | OP_W | OP_R,   ADDRMETH_E | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "adc", "",   0,   0,   0,  INS_SET_ALL|INS_TEST_CARRY, 0 },
+	 { 0,   INS_ADD,  0,   ADDRMETH_RR | OPTYPE_b | OP_W | OP_R,   ADDRMETH_I | OPTYPE_b | OP_SIGNED | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "adc", "",   0,   0,   0,  INS_SET_ALL|INS_TEST_CARRY, 0 },
+	 { 0,   INS_ADD,  0,   ADDRMETH_RR | OPTYPE_v | OP_W | OP_R,   ADDRMETH_I | OPTYPE_v | OP_SIGNED | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "adc", "",   0,   0,   0,  INS_SET_ALL|INS_TEST_CARRY, 0 },
+	 { 0,   INS_PUSH,  0,   ADDRMETH_RS | OPTYPE_w | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "push", "",   2,   0,   0,  0 , 33 },
+	 { 0,   INS_POP,  0,   ADDRMETH_RS | OPTYPE_w | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "pop", "",   2,   0,   0,  0 , 33 },
+	 { 0,   INS_SUB,  0,   ADDRMETH_E | OPTYPE_b | OP_SIGNED | OP_W | OP_R,   ADDRMETH_G | OPTYPE_b | OP_SIGNED | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "sbb", "",   0,   0,   0,  INS_SET_ALL|INS_TEST_CARRY, 0 },
+	 { 0,   INS_SUB,  0,   ADDRMETH_E | OPTYPE_v | OP_SIGNED | OP_W | OP_R,   ADDRMETH_G | OPTYPE_v | OP_SIGNED | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "sbb", "",   0,   0,   0,  INS_SET_ALL|INS_TEST_CARRY, 0 },
+	 { 0,   INS_SUB,  0,   ADDRMETH_G | OPTYPE_b | OP_W | OP_SIGNED | OP_R,   ADDRMETH_E | OPTYPE_b | OP_SIGNED | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "sbb", "",   0,   0,   0,  INS_SET_ALL|INS_TEST_CARRY, 0 },
+	 { 0,   INS_SUB,  0,   ADDRMETH_G | OPTYPE_v | OP_SIGNED | OP_W | OP_R,   ADDRMETH_E | OPTYPE_v | OP_SIGNED | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "sbb", "",   0,   0,   0,  INS_SET_ALL|INS_TEST_CARRY, 0 },
+	 { 0,   INS_SUB,  0,   ADDRMETH_RR | OPTYPE_b | OP_SIGNED | OP_W | OP_R,   ADDRMETH_I | OPTYPE_b | OP_SIGNED | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "sbb", "",   0,   0,   0,  INS_SET_ALL|INS_TEST_CARRY, 0 },
+	 { 0,   INS_SUB,  0,   ADDRMETH_RR | OPTYPE_v | OP_SIGNED | OP_W | OP_R,   ADDRMETH_I | OPTYPE_v | OP_SIGNED | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "sbb", "",   0,   0,   0,  INS_SET_ALL|INS_TEST_CARRY, 0 },
+	 { 0,   INS_PUSH,  0,   ADDRMETH_RS | OPTYPE_w | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "push", "",   3,   0,   0,  0 , 33 },
+	 { 0,   INS_POP,  0,   ADDRMETH_RS | OPTYPE_w | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "pop", "",   3,   0,   0,  0 , 33 },
+/* 0x20 */
+	 { 0,   INS_AND,  0,   ADDRMETH_E | OPTYPE_b | OP_W | OP_R,   ADDRMETH_G | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "and", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_AND,  0,   ADDRMETH_E | OPTYPE_v | OP_W | OP_R,   ADDRMETH_G | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "and", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_AND,  0,   ADDRMETH_G | OPTYPE_b | OP_W | OP_R,   ADDRMETH_E | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "and", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_AND,  0,   ADDRMETH_G | OPTYPE_v | OP_W | OP_R,   ADDRMETH_E | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "and", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_AND,  0,   ADDRMETH_RR | OPTYPE_b | OP_W | OP_R,   ADDRMETH_I | OPTYPE_b | OP_SIGNED | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "and", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_AND,  0,   ADDRMETH_RR | OPTYPE_v | OP_W | OP_R,   ADDRMETH_I | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "and", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_FLAG_PREFIX | PREFIX_ES,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_BCDCONV,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "daa", "",   0,   0,   0,  INS_SET_SIGN|INS_SET_ZERO|INS_SET_CARRY|INS_SET_PARITY|INS_TEST_CARRY, 12 },
+	 { 0,   INS_SUB,  0,   ADDRMETH_E | OPTYPE_b | OP_SIGNED | OP_W | OP_R,   ADDRMETH_G | OPTYPE_b | OP_SIGNED | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "sub", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_SUB,  0,   ADDRMETH_E | OPTYPE_v | OP_SIGNED | OP_W | OP_R,   ADDRMETH_G | OPTYPE_v | OP_SIGNED | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "sub", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_SUB,  0,   ADDRMETH_G | OPTYPE_b | OP_SIGNED | OP_W | OP_R,   ADDRMETH_E | OPTYPE_b | OP_SIGNED | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "sub", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_SUB,  0,   ADDRMETH_G | OPTYPE_v | OP_SIGNED | OP_W | OP_R,   ADDRMETH_E | OPTYPE_v | OP_SIGNED | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "sub", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_SUB,  0,   ADDRMETH_RR | OPTYPE_b | OP_SIGNED | OP_W | OP_R,   ADDRMETH_I | OPTYPE_b | OP_SIGNED | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "sub", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_SUB,  0,   ADDRMETH_RR | OPTYPE_v | OP_SIGNED | OP_W | OP_R,   ADDRMETH_I | OPTYPE_v | OP_SIGNED | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "sub", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_FLAG_PREFIX | PREFIX_CS | PREFIX_NOTTAKEN,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_BCDCONV,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "das", "",   0,   0,   0,  INS_SET_SIGN|INS_SET_ZERO|INS_SET_CARRY|INS_SET_PARITY|INS_TEST_CARRY, 0 },
+/* 0x30 */
+	 { 0,   INS_XOR,  0,   ADDRMETH_E | OPTYPE_b | OP_W | OP_R,   ADDRMETH_G | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "xor", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_XOR,  0,   ADDRMETH_E | OPTYPE_v | OP_W | OP_R,   ADDRMETH_G | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "xor", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_XOR,  0,   ADDRMETH_G | OPTYPE_b | OP_W | OP_R,   ADDRMETH_E | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "xor", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_XOR,  0,   ADDRMETH_G | OPTYPE_v | OP_W | OP_R,   ADDRMETH_E | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "xor", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_XOR,  0,   ADDRMETH_RR | OPTYPE_b | OP_W | OP_R,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "xor", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_XOR,  0,   ADDRMETH_RR | OPTYPE_v | OP_W | OP_R,   ADDRMETH_I | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "xor", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_FLAG_PREFIX | PREFIX_SS,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_BCDCONV,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "aaa", "",   0,   0,   0,  INS_SET_CARRY, 1 },
+	 { 0,   INS_CMP,  0,   ADDRMETH_E | OPTYPE_b | OP_R,   ADDRMETH_G | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "cmp", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_CMP,  0,   ADDRMETH_E | OPTYPE_v | OP_R,   ADDRMETH_G | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "cmp", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_CMP,  0,   ADDRMETH_G | OPTYPE_b | OP_R,   ADDRMETH_E | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "cmp", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_CMP,  0,   ADDRMETH_G | OPTYPE_v | OP_R,   ADDRMETH_E | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "cmp", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_CMP,  0,   ADDRMETH_RR | OPTYPE_b | OP_R,   ADDRMETH_I | OPTYPE_b | OP_SIGNED | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "cmp", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_CMP,  0,   ADDRMETH_RR | OPTYPE_v | OP_R,   ADDRMETH_I | OPTYPE_v | OP_SIGNED | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "cmp", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_FLAG_PREFIX | PREFIX_DS | PREFIX_TAKEN,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_BCDCONV,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "aas", "",   0,   0,   0,  INS_SET_CARRY, 0 },
+/* 0x40 */
+	 { 0,   INS_INC,  0,   ADDRMETH_RR | OPTYPE_v | OP_R | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "inc", "",   0,   0,   0,  INS_SET_OFLOW|INS_SET_SIGN|INS_SET_ZERO|INS_SET_PARITY, 0 },
+	 { 0,   INS_INC,  0,   ADDRMETH_RR | OPTYPE_v | OP_R | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "inc", "",   1,   0,   0,  INS_SET_OFLOW|INS_SET_SIGN|INS_SET_ZERO|INS_SET_PARITY, 0 },
+	 { 0,   INS_INC,  0,   ADDRMETH_RR | OPTYPE_v | OP_R | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "inc", "",   2,   0,   0,  INS_SET_OFLOW|INS_SET_SIGN|INS_SET_ZERO|INS_SET_PARITY, 0 },
+	 { 0,   INS_INC,  0,   ADDRMETH_RR | OPTYPE_v | OP_R | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "inc", "",   3,   0,   0,  INS_SET_OFLOW|INS_SET_SIGN|INS_SET_ZERO|INS_SET_PARITY, 0 },
+	 { 0,   INS_INC,  0,   ADDRMETH_RR | OPTYPE_v | OP_R | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "inc", "",   4,   0,   0,  INS_SET_OFLOW|INS_SET_SIGN|INS_SET_ZERO|INS_SET_PARITY, 0 },
+	 { 0,   INS_INC,  0,   ADDRMETH_RR | OPTYPE_v | OP_R | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "inc", "",   5,   0,   0,  INS_SET_OFLOW|INS_SET_SIGN|INS_SET_ZERO|INS_SET_PARITY, 0 },
+	 { 0,   INS_INC,  0,   ADDRMETH_RR | OPTYPE_v | OP_R | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "inc", "",   6,   0,   0,  INS_SET_OFLOW|INS_SET_SIGN|INS_SET_ZERO|INS_SET_PARITY, 0 },
+	 { 0,   INS_INC,  0,   ADDRMETH_RR | OPTYPE_v | OP_R | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "inc", "",   7,   0,   0,  INS_SET_OFLOW|INS_SET_SIGN|INS_SET_ZERO|INS_SET_PARITY, 0 },
+	 { 0,   INS_DEC,  0,   ADDRMETH_RR | OPTYPE_v | OP_W | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "dec", "",   0,   0,   0,  INS_SET_OFLOW|INS_SET_SIGN|INS_SET_ZERO|INS_SET_PARITY, 0 },
+	 { 0,   INS_DEC,  0,   ADDRMETH_RR | OPTYPE_v | OP_W | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "dec", "",   1,   0,   0,  INS_SET_OFLOW|INS_SET_SIGN|INS_SET_ZERO|INS_SET_PARITY, 0 },
+	 { 0,   INS_DEC,  0,   ADDRMETH_RR | OPTYPE_v | OP_W | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "dec", "",   2,   0,   0,  INS_SET_OFLOW|INS_SET_SIGN|INS_SET_ZERO|INS_SET_PARITY, 0 },
+	 { 0,   INS_DEC,  0,   ADDRMETH_RR | OPTYPE_v | OP_W | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "dec", "",   3,   0,   0,  INS_SET_OFLOW|INS_SET_SIGN|INS_SET_ZERO|INS_SET_PARITY, 0 },
+	 { 0,   INS_DEC,  0,   ADDRMETH_RR | OPTYPE_v | OP_W | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "dec", "",   4,   0,   0,  INS_SET_OFLOW|INS_SET_SIGN|INS_SET_ZERO|INS_SET_PARITY, 0 },
+	 { 0,   INS_DEC,  0,   ADDRMETH_RR | OPTYPE_v | OP_W | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "dec", "",   5,   0,   0,  INS_SET_OFLOW|INS_SET_SIGN|INS_SET_ZERO|INS_SET_PARITY, 0 },
+	 { 0,   INS_DEC,  0,   ADDRMETH_RR | OPTYPE_v | OP_W | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "dec", "",   6,   0,   0,  INS_SET_OFLOW|INS_SET_SIGN|INS_SET_ZERO|INS_SET_PARITY, 0 },
+	 { 0,   INS_DEC,  0,   ADDRMETH_RR | OPTYPE_v | OP_W | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "dec", "",   7,   0,   0,  INS_SET_OFLOW|INS_SET_SIGN|INS_SET_ZERO|INS_SET_PARITY, 0 },
+/* 0x50 */
+	 { 0,   INS_PUSH,  0,   ADDRMETH_RR | OPTYPE_v | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "push", "",   0,   0,   0,  0 , 33 },
+	 { 0,   INS_PUSH,  0,   ADDRMETH_RR | OPTYPE_v | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "push", "",   1,   0,   0,  0 , 33 },
+	 { 0,   INS_PUSH,  0,   ADDRMETH_RR | OPTYPE_v | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "push", "",   2,   0,   0,  0 , 33 },
+	 { 0,   INS_PUSH,  0,   ADDRMETH_RR | OPTYPE_v | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "push", "",   3,   0,   0,  0 , 33 },
+	 { 0,   INS_PUSH,  0,   ADDRMETH_RR | OPTYPE_v | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "push", "",   4,   0,   0,  0 , 33 },
+	 { 0,   INS_PUSH,  0,   ADDRMETH_RR | OPTYPE_v | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "push", "",   5,   0,   0,  0 , 33 },
+	 { 0,   INS_PUSH,  0,   ADDRMETH_RR | OPTYPE_v | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "push", "",   6,   0,   0,  0 , 33 },
+	 { 0,   INS_PUSH,  0,   ADDRMETH_RR | OPTYPE_v | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "push", "",   7,   0,   0,  0 , 33 },
+	 { 0,   INS_POP,  0,   ADDRMETH_RR | OPTYPE_v | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "pop", "",   0,   0,   0,  0 , 33 },
+	 { 0,   INS_POP,  0,   ADDRMETH_RR | OPTYPE_v | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "pop", "",   1,   0,   0,  0 , 33 },
+	 { 0,   INS_POP,  0,   ADDRMETH_RR | OPTYPE_v | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "pop", "",   2,   0,   0,  0 , 33 },
+	 { 0,   INS_POP,  0,   ADDRMETH_RR | OPTYPE_v | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "pop", "",   3,   0,   0,  0 , 33 },
+	 { 0,   INS_POP,  0,   ADDRMETH_RR | OPTYPE_v | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "pop", "",   4,   0,   0,  0 , 33 },
+	 { 0,   INS_POP,  0,   ADDRMETH_RR | OPTYPE_v | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "pop", "",   5,   0,   0,  0 , 33 },
+	 { 0,   INS_POP,  0,   ADDRMETH_RR | OPTYPE_v | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "pop", "",   6,   0,   0,  0 , 33 },
+	 { 0,   INS_POP,  0,   ADDRMETH_RR | OPTYPE_v | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "pop", "",   7,   0,   0,  0 , 33 },
+/* 0x60 */
+	 { 0,   INS_PUSHREGS,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "pusha", "",   0,   0,   0,  0 , 36 },
+	 { 0,   INS_POPREGS,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "popa", "",   0,   0,   0,  0 , 34 },
+	 { 0,   INS_BOUNDS, INS_NOTE_NONSWAP,   ADDRMETH_G | OPTYPE_v | OP_R,   ADDRMETH_M | OPTYPE_a | OP_SIGNED | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "bound", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_SYSTEM,  0,   ADDRMETH_E | OPTYPE_w | OP_R | OP_W,   ADDRMETH_G | OPTYPE_w | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "arpl", "",   0,   0,   0,  INS_SET_ZERO, 0 },
+	 { 0,   INS_FLAG_PREFIX | PREFIX_FS,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_FLAG_PREFIX | PREFIX_GS,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "", "",   0,   0,   0,  0 , 0 },
+	 { idx_66,   INS_FLAG_PREFIX | PREFIX_OP_SIZE,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_FLAG_PREFIX | PREFIX_ADDR_SIZE,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_PUSH,  0,   ADDRMETH_I | OPTYPE_v | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "push", "",   0,   0,   0,  0 , 33 },
+	 { 0,   INS_MUL,  0,   ADDRMETH_G | OPTYPE_v | OP_SIGNED | OP_R | OP_W,   ADDRMETH_E | OPTYPE_v | OP_SIGNED | OP_R,   ADDRMETH_I | OPTYPE_v | OP_SIGNED | OP_R,   cpu_80386 | isa_GP,   "imul", "",   0,   0,   0,  INS_SET_OFLOW|INS_SET_CARRY, 0 },
+	 { 0,   INS_PUSH,  0,   ADDRMETH_I | OPTYPE_b | OP_SIGNED | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "push", "",   0,   0,   0,  0 , 33 },
+	 { 0,   INS_MUL,  0,   ADDRMETH_G | OPTYPE_v | OP_SIGNED | OP_R | OP_W,   ADDRMETH_E | OPTYPE_v | OP_SIGNED | OP_R,   ADDRMETH_I |  OPTYPE_b | OP_SIGNED | OP_R,   cpu_80386 | isa_GP,   "imul", "",   0,   0,   0,  INS_SET_OFLOW|INS_SET_CARRY, 0 },
+	 { 0,   INS_IN,  0,    ADDRMETH_Y | OPTYPE_b | OP_W,   ADDRMETH_RR | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "ins", "",   0,   2,   0,  0 , 0 },
+	 { 0,   INS_IN,  0,    ADDRMETH_Y | OPTYPE_v | OP_W,   ADDRMETH_RR | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "ins", "",   0,   2,   0,  0 , 0 },
+	 { 0,   INS_OUT,  0,    ADDRMETH_RR | OPTYPE_b | OP_R,   ADDRMETH_X | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "outs", "",   2,   0,   0,  0 , 0 },
+	 { 0,   INS_OUT,  0,    ADDRMETH_RR | OPTYPE_v | OP_R,   ADDRMETH_X | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "outs", "",   2,   0,   0,  0 , 0 },
+/* 0x70 */
+	 { 0,   INS_BRANCHCC,  0,   ADDRMETH_J | OPTYPE_b | OP_X,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "jo", "",   0,   0,   0,  INS_TEST_OFLOW, 0 },
+	 { 0,   INS_BRANCHCC,  0,   ADDRMETH_J | OPTYPE_b | OP_X,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "jno", "",   0,   0,   0,  INS_TEST_NOFLOW, 0 },
+	 { 0,   INS_BRANCHCC,  0,   ADDRMETH_J | OPTYPE_b | OP_X,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "jc", "",   0,   0,   0,  INS_TEST_CARRY, 0 },
+	 { 0,   INS_BRANCHCC,  0,   ADDRMETH_J | OPTYPE_b | OP_X,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "jnc", "",   0,   0,   0,  INS_TEST_NCARRY, 0 },
+	 { 0,   INS_BRANCHCC,  0,   ADDRMETH_J | OPTYPE_b | OP_X,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "jz", "",   0,   0,   0,  INS_TEST_ZERO, 0 },
+	 { 0,   INS_BRANCHCC,  0,   ADDRMETH_J | OPTYPE_b | OP_X,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "jnz", "",   0,   0,   0,  INS_TEST_NZERO, 0 },
+	 { 0,   INS_BRANCHCC,  0,   ADDRMETH_J | OPTYPE_b | OP_X,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "jbe", "",   0,   0,   0,  INS_TEST_CARRY|INS_TEST_OR|INS_TEST_ZERO, 0 },
+	 { 0,   INS_BRANCHCC,  0,   ADDRMETH_J | OPTYPE_b | OP_X,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "ja", "",   0,   0,   0,  INS_TEST_NCARRY|INS_TEST_NZERO, 0 },
+	 { 0,   INS_BRANCHCC,  0,   ADDRMETH_J | OPTYPE_b | OP_X,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "js", "",   0,   0,   0,  INS_TEST_SIGN, 0 },
+	 { 0,   INS_BRANCHCC,  0,   ADDRMETH_J | OPTYPE_b | OP_X,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "jns", "",   0,   0,   0,  INS_TEST_NSIGN, 0 },
+	 { 0,   INS_BRANCHCC,  0,   ADDRMETH_J | OPTYPE_b | OP_X,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "jpe", "",   0,   0,   0,  INS_TEST_PARITY, 0 },
+	 { 0,   INS_BRANCHCC,  0,   ADDRMETH_J | OPTYPE_b | OP_X,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "jpo", "",   0,   0,   0,  INS_TEST_NPARITY, 0 },
+	 { 0,   INS_BRANCHCC,  0,   ADDRMETH_J | OPTYPE_b | OP_X,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "jl", "",   0,   0,   0,  INS_TEST_SFNEOF, 0 },
+	 { 0,   INS_BRANCHCC,  0,   ADDRMETH_J | OPTYPE_b | OP_X,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "jge", "",   0,   0,   0,  INS_TEST_SFEQOF, 0 },
+	 { 0,   INS_BRANCHCC,  0,   ADDRMETH_J | OPTYPE_b | OP_X,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "jle", "",   0,   0,   0,  INS_TEST_ZERO|INS_TEST_OR|INS_TEST_SFNEOF, 0 },
+	 { 0,   INS_BRANCHCC,  0,   ADDRMETH_J | OPTYPE_b | OP_X,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "jg", "",   0,   0,   0,  INS_TEST_NZERO|INS_TEST_SFEQOF, 0 },
+/* 0x80 */
+	 { idx_80,   0,   0,   ADDRMETH_E | OPTYPE_b,   ADDRMETH_I | OPTYPE_b,   ARG_NONE,  cpu_80386 | isa_GP,   "", "",   0,   0,   0,  0 , 0 },
+	 { idx_81,   0,   0,   ADDRMETH_E | OPTYPE_v,   ADDRMETH_I | OPTYPE_v,   ARG_NONE,   cpu_80386 | isa_GP,   "", "",   0,   0,   0,  0 , 0 },
+	 { idx_82,   0,   0,   ADDRMETH_E | OPTYPE_b,   ADDRMETH_I | OPTYPE_b,   ARG_NONE,   cpu_80386 | isa_GP,   "", "",   0,   0,   0,  0 , 0 },
+	 { idx_83,   0,   0,   ADDRMETH_E | OPTYPE_v,   ADDRMETH_I | OPTYPE_b,   ARG_NONE,   cpu_80386 | isa_GP,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_TEST,  0,   ADDRMETH_E | OPTYPE_b | OP_R,   ADDRMETH_G | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "test", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_TEST,  0,   ADDRMETH_E | OPTYPE_v | OP_R,   ADDRMETH_G | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "test", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_XCHG,  0,   ADDRMETH_E | OPTYPE_b | OP_W | OP_R,   ADDRMETH_G | OPTYPE_b | OP_W | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "xchg", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_XCHG,  0,   ADDRMETH_E | OPTYPE_v | OP_W | OP_R,   ADDRMETH_G | OPTYPE_v | OP_W | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "xchg", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_MOV,  0,   ADDRMETH_E | OPTYPE_b | OP_W,   ADDRMETH_G | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "mov", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_MOV,  0,   ADDRMETH_E | OPTYPE_v | OP_W,   ADDRMETH_G | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "mov", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_MOV,  0,   ADDRMETH_G | OPTYPE_b | OP_W,   ADDRMETH_E | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "mov", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_MOV,  0,   ADDRMETH_G | OPTYPE_v | OP_W,   ADDRMETH_E | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "mov", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_MOV,  0,   ADDRMETH_E | OPTYPE_w | OP_W,   ADDRMETH_S | OPTYPE_w | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "mov", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_MOV,  0,   ADDRMETH_G | OPTYPE_v | OP_W,   ADDRMETH_M | OPTYPE_m | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "lea", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_MOV,  0,   ADDRMETH_S | OPTYPE_w | OP_W,   ADDRMETH_E | OPTYPE_w | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "mov", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_POP,  0,   ADDRMETH_E | OPTYPE_v | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "pop", "",   0,   0,   0,  0 , 33 },
+/* 0x90 */
+	 { 0,   INS_NOP,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "nop", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_XCHG,  0,   ADDRMETH_RR | OPTYPE_v | OP_W | OP_R,   ADDRMETH_RR | OPTYPE_v | OP_W | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "xchg", "",   0,   1,   0,  0 , 0 },
+	 { 0,   INS_XCHG,  0,   ADDRMETH_RR | OPTYPE_v | OP_W | OP_R,   ADDRMETH_RR | OPTYPE_v | OP_W | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "xchg", "",   0,   2,   0,  0 , 0 },
+	 { 0,   INS_XCHG,  0,   ADDRMETH_RR | OPTYPE_v | OP_W | OP_R,   ADDRMETH_RR | OPTYPE_v | OP_W | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "xchg", "",   0,   3,   0,  0 , 0 },
+	 { 0,   INS_XCHG,  0,   ADDRMETH_RR | OPTYPE_v | OP_W | OP_R,   ADDRMETH_RR | OPTYPE_v | OP_W | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "xchg", "",   0,   4,   0,  0 , 0 },
+	 { 0,   INS_XCHG,  0,   ADDRMETH_RR | OPTYPE_v | OP_W | OP_R,   ADDRMETH_RR | OPTYPE_v | OP_W | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "xchg", "",   0,   5,   0,  0 , 0 },
+	 { 0,   INS_XCHG,  0,   ADDRMETH_RR | OPTYPE_v | OP_W | OP_R,   ADDRMETH_RR | OPTYPE_v | OP_W | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "xchg", "",   0,   6,   0,  0 , 0 },
+	 { 0,   INS_XCHG,  0,   ADDRMETH_RR | OPTYPE_v | OP_W | OP_R,   ADDRMETH_RR | OPTYPE_v | OP_W | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "xchg", "",   0,   7,   0,  0 , 0 },
+	 { 0,   INS_SZCONV,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "cwde", "",   0,   0,   0,  0 , 5 },
+	 { 0,   INS_SZCONV,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "cdq", "",   0,   0,   0,  0 , 11 },
+	 { 0,   INS_CALL,  0,   ADDRMETH_A | OPTYPE_p | OP_X,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "callf", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_SYSTEM,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "wait", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_PUSHFLAGS,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "pushf", "",   0,   0,   0,  0 , 37 },
+	 { 0,   INS_POPFLAGS,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "popf", "",   0,   0,   0,  0 , 35 },
+	 { 0,   INS_MOV,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "sahf", "",   0,   0,   0,  INS_SET_SIGN|INS_SET_ZERO|INS_SET_PARITY|INS_SET_CARRY, 43 },
+	 { 0,   INS_MOV,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "lahf", "",   0,   0,   0,  0 , 24 },
+/* 0xa0 */
+	 { 0,   INS_MOV,  0,   ADDRMETH_RR | OPTYPE_b | OP_W,   ADDRMETH_O | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "mov", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_MOV,  0,   ADDRMETH_RR | OPTYPE_v | OP_W,   ADDRMETH_O | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "mov", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_MOV,  0,   ADDRMETH_O | OPTYPE_b | OP_W,   ADDRMETH_RR | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "mov", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_MOV,  0,   ADDRMETH_O | OPTYPE_v | OP_W,   ADDRMETH_RR | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "mov", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_STRMOV,  0,   ADDRMETH_Y | OPTYPE_b | OP_W,   ADDRMETH_X | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "movs", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_STRMOV,  0,   ADDRMETH_Y | OPTYPE_v | OP_W,   ADDRMETH_X | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "movs", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_STRCMP,  0,   ADDRMETH_Y | OPTYPE_b | OP_R,   ADDRMETH_X | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "cmps", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_STRCMP,  0,   ADDRMETH_X | OPTYPE_v | OP_R,   ADDRMETH_Y | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "cmps", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_TEST,  0,   ADDRMETH_RR | OPTYPE_b | OP_R,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "test", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_TEST,  0,   ADDRMETH_RR | OPTYPE_v | OP_R,   ADDRMETH_I | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "test", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_STRSTOR,  0,   ADDRMETH_Y | OPTYPE_b | OP_W,   ADDRMETH_RR | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "stos", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_STRSTOR,  0,   ADDRMETH_Y | OPTYPE_v | OP_W,   ADDRMETH_RR | OPTYPE_v |OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "stos", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_STRLOAD,  0,   ADDRMETH_RR | OPTYPE_b | OP_W,   ADDRMETH_X| OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "lods", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_STRLOAD,  0,   ADDRMETH_RR | OPTYPE_v | OP_W,   ADDRMETH_X| OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "lods", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_STRCMP,  0,   ADDRMETH_RR | OPTYPE_b | OP_R,   ADDRMETH_Y | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "scas", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_STRCMP,  0,   ADDRMETH_RR | OPTYPE_v | OP_R,   ADDRMETH_Y | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "scas", "",   0,   0,   0,  0 , 0 },
+/* 0xb0 */
+	 { 0,   INS_MOV,  0,   ADDRMETH_RR | OPTYPE_b | OP_W,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "mov", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_MOV,  0,   ADDRMETH_RR | OPTYPE_b | OP_W,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "mov", "",   1,   0,   0,  0 , 0 },
+	 { 0,   INS_MOV,  0,   ADDRMETH_RR | OPTYPE_b | OP_W,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "mov", "",   2,   0,   0,  0 , 0 },
+	 { 0,   INS_MOV,  0,   ADDRMETH_RR | OPTYPE_b | OP_W,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "mov", "",   3,   0,   0,  0 , 0 },
+	 { 0,   INS_MOV,  0,   ADDRMETH_RR | OPTYPE_b | OP_W,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "mov", "",   4,   0,   0,  0 , 0 },
+	 { 0,   INS_MOV,  0,   ADDRMETH_RR | OPTYPE_b | OP_W,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "mov", "",   5,   0,   0,  0 , 0 },
+	 { 0,   INS_MOV,  0,   ADDRMETH_RR | OPTYPE_b | OP_W,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "mov", "",   6,   0,   0,  0 , 0 },
+	 { 0,   INS_MOV,  0,   ADDRMETH_RR | OPTYPE_b | OP_W,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "mov", "",   7,   0,   0,  0 , 0 },
+	 { 0,   INS_MOV,  0,   ADDRMETH_RR | OPTYPE_v | OP_W,   ADDRMETH_I | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "mov", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_MOV,  0,   ADDRMETH_RR | OPTYPE_v | OP_W,   ADDRMETH_I | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "mov", "",   1,   0,   0,  0 , 0 },
+	 { 0,   INS_MOV,  0,   ADDRMETH_RR | OPTYPE_v | OP_W,   ADDRMETH_I | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "mov", "",   2,   0,   0,  0 , 0 },
+	 { 0,   INS_MOV,  0,   ADDRMETH_RR | OPTYPE_v | OP_W,   ADDRMETH_I | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "mov", "",   3,   0,   0,  0 , 0 },
+	 { 0,   INS_MOV,  0,   ADDRMETH_RR | OPTYPE_v | OP_W,   ADDRMETH_I | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "mov", "",   4,   0,   0,  0 , 0 },
+	 { 0,   INS_MOV,  0,   ADDRMETH_RR | OPTYPE_v | OP_W,   ADDRMETH_I | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "mov", "",   5,   0,   0,  0 , 0 },
+	 { 0,   INS_MOV,  0,   ADDRMETH_RR | OPTYPE_v | OP_W,   ADDRMETH_I | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "mov", "",   6,   0,   0,  0 , 0 },
+	 { 0,   INS_MOV,  0,   ADDRMETH_RR | OPTYPE_v | OP_W,   ADDRMETH_I | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "mov", "",   7,   0,   0,  0 , 0 },
+/* 0xc0 */
+	 { idx_C0,  0,   0,    ADDRMETH_E | OPTYPE_b,   ADDRMETH_I | OPTYPE_b,   ARG_NONE,   cpu_80386 | isa_GP,   "", "",   0,   0,   0,  0 , 0 },
+	 { idx_C1,  0,   0,    ADDRMETH_E | OPTYPE_v,   ADDRMETH_I | OPTYPE_b,   ARG_NONE,   cpu_80386 | isa_GP,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_RET,  0,   ADDRMETH_I | OPTYPE_w | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "ret", "",   0,   0,   0,  0 , 3 },
+	 { 0,   INS_RET,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "ret", "",   0,   0,   0,  0 , 3 },
+	 { 0,   INS_MOV,  0,   ADDRMETH_G | OPTYPE_v | OP_W,   ADDRMETH_M | OPTYPE_p | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "les", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_MOV,  0,   ADDRMETH_G | OPTYPE_v | OP_W,   ADDRMETH_M | OPTYPE_p | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "lds", "",   0,   0,   0,  0 , 0 },
+	 { idx_C6,  0,   0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "", "",   0,   0,   0,  0 , 0 },
+	 { idx_C7,  0,   0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_ENTER, INS_NOTE_NONSWAP,   ADDRMETH_I | OPTYPE_w | OP_R,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "enter", "",   0,   0,   0,  0 , 15 },
+	 { 0,   INS_LEAVE,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "leave", "",   0,   0,   0,  0 , 26 },
+	 { 0,   INS_RET,  0,   ADDRMETH_I | OPTYPE_w | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "retf", "lret",   0,   0,   0,  0 , 3 },
+	 { 0,   INS_RET,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "retf", "lret",   0,   0,   0,  0 , 3 },
+	 { 0,   INS_DEBUG,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "int3", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_TRAP,  0,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "int", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OFLOW,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "into", "",   0,   0,   0,  INS_TEST_OFLOW, 0 },
+	 { 0,   INS_TRET,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "iret", "",   0,   0,   0,  INS_SET_ALL|INS_SET_DIR, 0 },
+/* 0xd0 */
+	 { idx_D0,  0,   0,    ADDRMETH_E | OPTYPE_b,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "", "",   0,   1,   0,  0 , 0 },
+	 { idx_D1,  0,   0,   ADDRMETH_E | OPTYPE_v,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "", "",   0,   1,   0,  0 , 0 },
+	 { idx_D2,  0,   0,   ADDRMETH_E | OPTYPE_b,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "", "",   0,   1,   0,  0 , 0 },
+	 { idx_D3,  0,   0,   ADDRMETH_E | OPTYPE_v,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "", "",   0,   1,   0,  0 , 0 },
+	 { 0,   INS_BCDCONV,  0,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "aam", "",   0,   0,   0,  INS_SET_SIGN|INS_SET_ZERO|INS_SET_PARITY, 0 },
+	 { 0,   INS_BCDCONV,  0,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "aad", "",   0,   0,   0,  INS_SET_SIGN|INS_SET_ZERO|INS_SET_PARITY, 2 },
+	 { 0,   INS_SALC,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "salc", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_XLAT,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "xlat", "",   0,   0,   0,  0 , 53 },
+	 { idx_D8,  0,   0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "", "",   0,   0,   0,  0 , 0 },
+	 { idx_D9,  0,   0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "", "",   0,   0,   0,  0 , 0 },
+	 { idx_DA,  0,   0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "", "",   0,   0,   0,  0 , 0 },
+	 { idx_DB,  0,   0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "", "",   0,   0,   0,  0 , 0 },
+	 { idx_DC,  0,   0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "", "",   0,   0,   0,  0 , 0 },
+	 { idx_DD,  0,   0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "", "",   0,   0,   0,  0 , 0 },
+	 { idx_DE,  0,   0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "", "",   0,   0,   0,  0 , 0 },
+	 { idx_DF,  0,   0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "", "",   0,   0,   0,  0 , 0 },
+/* 0xe0 */
+	 { 0,   INS_BRANCHCC,  0,   ADDRMETH_J | OPTYPE_b | OP_X,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "loopnz", "",   0,   0,   0,  INS_TEST_NZERO, 31 },
+	 { 0,   INS_BRANCHCC,  0,   ADDRMETH_J | OPTYPE_b | OP_X,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "loopz", "",   0,   0,   0,  INS_TEST_ZERO, 31 },
+	 { 0,   INS_BRANCHCC,  0,   ADDRMETH_J | OPTYPE_b | OP_X,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "loop", "",   0,   0,   0,  0 , 31 },
+	 { 0,   INS_BRANCHCC,  0,   ADDRMETH_J | OPTYPE_b | OP_X,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "jcxz", "",   0,   0,   0,  0 , 31 },
+	 { 0,   INS_IN,  0,   ADDRMETH_RR | OPTYPE_b | OP_W,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "in", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_IN,  0,   ADDRMETH_RR | OPTYPE_b | OP_W,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "in", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OUT,  0,   ADDRMETH_I | OPTYPE_b | OP_R,   ADDRMETH_RR | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "out", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OUT,  0,   ADDRMETH_I | OPTYPE_b | OP_R,   ADDRMETH_RR | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "out", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_CALL,  0,   ADDRMETH_J | OPTYPE_v | OP_X | OP_SIGNED,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "call", "",   0,   0,   0,  0 , 3 },
+	 { 0,   INS_BRANCH,  0,   ADDRMETH_J | OPTYPE_v | OP_X | OP_SIGNED,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "jmp", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_BRANCH,  0,   ADDRMETH_A | OPTYPE_p | OP_X,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "jmp", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_BRANCH,  0,   ADDRMETH_J | OPTYPE_b | OP_X | OP_SIGNED,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "jmp", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_IN,  0,   ADDRMETH_RR | OPTYPE_b| OP_W,   ADDRMETH_RR | OPTYPE_w| OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "in", "",   0,   2,   0,  0 , 0 },
+	 { 0,   INS_IN,  0,   ADDRMETH_RR | OPTYPE_v | OP_W,   ADDRMETH_RR | OPTYPE_w| OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "in", "",   0,   2,   0,  0 , 0 },
+	 { 0,   INS_OUT,  0,   ADDRMETH_RR | OPTYPE_w| OP_R,   ADDRMETH_RR | OPTYPE_b| OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "out", "",   2,   0,   0,  0 , 0 },
+	 { 0,   INS_OUT,  0,   ADDRMETH_RR | OPTYPE_w| OP_R,   ADDRMETH_RR | OPTYPE_v| OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "out", "",   2,   0,   0,  0 , 0 },
+/* 0xf0 */
+	 { 0,   INS_FLAG_PREFIX | PREFIX_LOCK,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_ICEBP,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "icebp", "",   0,   0,   0,  0 , 0 },
+	 { idx_F2,   INS_FLAG_PREFIX | PREFIX_REPNZ,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "", "",   0,   0,   0,  0 , 0 },
+	 { idx_F3,   INS_FLAG_PREFIX | PREFIX_REPZ,  0, ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_HALT,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "hlt", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_TOGCF,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "cmc", "",   0,   0,   0,  INS_SET_CARRY, 0 },
+	 { idx_F6,  0,   0,    ADDRMETH_E | OPTYPE_b,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "", "",   0,   0,   0,  0 , 0 },
+	 { idx_F7,  0,   0,   ADDRMETH_E | OPTYPE_v,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_CLEARCF,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "clc", "",   0,   0,   0,  INS_SET_NCARRY, 0 },
+	 { 0,   INS_SETCF,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "stc", "",   0,   0,   0,  INS_SET_CARRY, 0 },
+	 { 0,   INS_SYSTEM,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "cli", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_SYSTEM,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "sti", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_CLEARDF,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "cld", "",   0,   0,   0,  INS_SET_NDIR, 0 },
+	 { 0,   INS_SETDF,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "std", "",   0,   0,   0,  INS_SET_DIR, 0 },
+	 { idx_FE,  0,   0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "", "",   0,   0,   0,  0 , 0 },
+	 { idx_FF,  0,   0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "", "",   0,   0,   0,  0 , 0 }
+};
+
+
+static ia32_insn_t tbl_66[] = {	/* SIMD 66 one-byte Opcodes */
+	 { idx_660F,  0,   0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "", "",   0,   0,   0,  0 , 0 }
+};
+
+
+static ia32_insn_t tbl_F2[] = {	/* SIMD F2 one-byte Opcodes */
+	 { idx_F20F,  0,   0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "", "",   0,   0,   0,  0 , 0 }
+};
+
+
+static ia32_insn_t tbl_F3[] = {	/* SIMD F3 one-byte Opcodes */
+	 { idx_F30F,  0,   0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_SYSTEM,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "pause", "", 0, 0, 0, 0, 0 }
+};
+
+
+static ia32_insn_t tbl_0F[] = {	/* Two-byte Opcodes */
+	 { idx_0F00,  0,   0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "", "",   0,   0,   0,  0 , 0 },
+	 { idx_0F01,  0,   0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_SYSTEM,  0,   ADDRMETH_G | OPTYPE_v | OP_W,   ADDRMETH_E | OPTYPE_w | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "lar", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_SYSTEM,  0,   ADDRMETH_G | OPTYPE_v | OP_W,   ADDRMETH_E | OPTYPE_w | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "lsl", "",   0,   0,   0,  INS_SET_ZERO, 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_SYSTEM,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "clts", "",   0,   0,   0,  0 , 6 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_SYSTEM,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80486 | isa_GP,   "invd", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_SYSTEM,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80486 | isa_GP,   "wbinvd", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_UNKNOWN,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_PENTPRO | isa_GP,   "ud2", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_SYSTEM,  0, ADDRMETH_M | OPTYPE_b | OP_R, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "prefetch", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_SYSTEM,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "femms", "", 0, 0, 0, 0, 0 },
+	 { idx_0F0F, INS_FLAG_SUFFIX,  0, ADDRMETH_P | OPTYPE_pi | OP_R | OP_W, ADDRMETH_Q | OPTYPE_q |OP_R, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0,   INS_MOV,  0,   ADDRMETH_V | OPTYPE_ps | OP_W,   ADDRMETH_W | OPTYPE_ps | OP_R,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "movups", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_MOV,  0,   ADDRMETH_W | OPTYPE_ps | OP_W,   ADDRMETH_V | OPTYPE_ps | OP_R,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "movups", "",   0,   0,   0,  0 , 0 },
+	 { idx_0F12,  0,   0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_MOV,  INS_NOTE_NOSUFFIX,   ADDRMETH_V | OPTYPE_q | OP_W,   ADDRMETH_W | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "movlps", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_V | OPTYPE_ps | OP_W,   ADDRMETH_W | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "unpcklps", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_V | OPTYPE_ps | OP_W,   ADDRMETH_W | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "unpckhps", "",   0,   0,   0,  0 , 0 },
+	 { idx_0F16,  0,   0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_W | OPTYPE_q | OP_W,   ADDRMETH_V | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "movhps", "",   0,   0,   0,  0 , 0 },
+	 { idx_0F18,  0,   0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_MOV,  0,   ADDRMETH_R | OPTYPE_d | OP_W,   ADDRMETH_C | OPTYPE_d | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "mov", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_MOV,  0,   ADDRMETH_R | OPTYPE_d | OP_W,   ADDRMETH_D | OPTYPE_d | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "mov", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_MOV,  0,   ADDRMETH_C | OPTYPE_d | OP_W,   ADDRMETH_R | OPTYPE_d | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "mov", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_MOV,  0,   ADDRMETH_D | OPTYPE_d | OP_W,   ADDRMETH_R | OPTYPE_d | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "mov", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_MOV,  0,   ADDRMETH_R | OPTYPE_d | OP_W,   ADDRMETH_T | OPTYPE_d | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "mov", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_MOV,  0,   ADDRMETH_T | OPTYPE_d | OP_W,   ADDRMETH_R | OPTYPE_d | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "mov", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_MOV,  0,   ADDRMETH_V | OPTYPE_ps | OP_W,   ADDRMETH_W | OPTYPE_ps | OP_R,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "movaps", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_MOV,  0, ADDRMETH_W | OPTYPE_ps | OP_W,   ADDRMETH_V | OPTYPE_ps | OP_R,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "movaps", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_MOV,  0, ADDRMETH_V | OPTYPE_ps | OP_W, ADDRMETH_Q | OPTYPE_q | OP_R, ARG_NONE, cpu_PENTIUM2 | isa_GP, "cvtpi2ps", "", 0, 0, 0, 0, 0 },
+	 { 0,   INS_MOV,  0,   ADDRMETH_W | OPTYPE_ps | OP_W,   ADDRMETH_V | OPTYPE_ps | OP_R,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "movntps", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_MOV,  0, ADDRMETH_P | OPTYPE_q | OP_W, ADDRMETH_W | OPTYPE_q | OP_R, ARG_NONE, cpu_PENTIUM2 | isa_GP, "cvttps2pi", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_MOV,  0, ADDRMETH_P | OPTYPE_q | OP_W , ADDRMETH_W | OPTYPE_q | OP_R, ARG_NONE, cpu_PENTIUM2 | isa_GP, "cvtps2pi", "", 0, 0, 0, 0, 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_V | OPTYPE_ss | OP_W,   ADDRMETH_W | OPTYPE_ss | OP_R,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "ucomiss", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_V | OPTYPE_ps | OP_W,   ADDRMETH_W | OPTYPE_ss | OP_W,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "comiss", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_SYSTEM,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_PENTIUM | isa_GP,   "wrmsr", "",   0,   0,   0,  0 , 52 },
+	 { 0,   INS_SYSTEM,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_PENTIUM | isa_GP,   "rdtsc", "",   0,   0,   0,  0 , 40 },
+	 { 0,   INS_SYSTEM,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_PENTIUM | isa_GP,   "rdmsr", "",   0,   0,   0,  0 , 38 },
+	 { 0,   INS_SYSTEM,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_PENTPRO | isa_GP,   "rdpmc", "",   0,   0,   0,  0 , 39 },
+	 { 0,   INS_SYSTEM,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "sysenter", "",   0,   0,   0,  0 , 50 },
+	 { 0,   INS_SYSTEM,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "sysexit", "",   0,   0,   0,  0 , 51 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_MOVCC,  0,   ADDRMETH_G | OPTYPE_v | OP_W,   ADDRMETH_E | OPTYPE_v | OP_R,   ARG_NONE,   cpu_PENTPRO | isa_GP,   "cmovo", "",   0,   0,   0,  INS_TEST_OFLOW, 0 },
+	 { 0,   INS_MOVCC,  0,   ADDRMETH_G | OPTYPE_v | OP_W,   ADDRMETH_E | OPTYPE_v | OP_R,   ARG_NONE,   cpu_PENTPRO | isa_GP,   "cmovno", "",   0,   0,   0,  INS_TEST_NOFLOW, 0 },
+	 { 0,   INS_MOVCC,  0,   ADDRMETH_G | OPTYPE_v | OP_W,   ADDRMETH_E | OPTYPE_v | OP_R,   ARG_NONE,   cpu_PENTPRO | isa_GP,   "cmovc", "",   0,   0,   0,  INS_TEST_CARRY, 0 },
+	 { 0,   INS_MOVCC,  0,   ADDRMETH_G | OPTYPE_v | OP_W,   ADDRMETH_E | OPTYPE_v | OP_R,   ARG_NONE,   cpu_PENTPRO | isa_GP,   "cmovnc", "",   0,   0,   0,  INS_TEST_NCARRY, 0 },
+	 { 0,   INS_MOVCC,  0,   ADDRMETH_G | OPTYPE_v | OP_W,   ADDRMETH_E | OPTYPE_v | OP_R,   ARG_NONE,   cpu_PENTPRO | isa_GP,   "cmovz", "",   0,   0,   0,  INS_TEST_ZERO, 0 },
+	 { 0,   INS_MOVCC,  0,   ADDRMETH_G | OPTYPE_v | OP_W,   ADDRMETH_E | OPTYPE_v | OP_R,   ARG_NONE,   cpu_PENTPRO | isa_GP,   "cmovnz", "",   0,   0,   0,  INS_TEST_NZERO, 0 },
+	 { 0,   INS_MOVCC,  0,   ADDRMETH_G | OPTYPE_v | OP_W,   ADDRMETH_E | OPTYPE_v | OP_R,   ARG_NONE,   cpu_PENTPRO | isa_GP,   "cmovbe", "",   0,   0,   0,  INS_TEST_CARRY|INS_TEST_OR|INS_TEST_ZERO, 0 },
+	 { 0,   INS_MOVCC,  0,   ADDRMETH_G | OPTYPE_v | OP_W,   ADDRMETH_E | OPTYPE_v | OP_R,   ARG_NONE,   cpu_PENTPRO | isa_GP,   "cmova", "",   0,   0,   0,  INS_TEST_NZERO|INS_TEST_NCARRY, 0 },
+	 { 0,   INS_MOVCC,  0,   ADDRMETH_G | OPTYPE_v | OP_W,   ADDRMETH_E | OPTYPE_v | OP_R,   ARG_NONE,   cpu_PENTPRO | isa_GP,   "cmovs", "",   0,   0,   0,  INS_TEST_SIGN, 0 },
+	 { 0,   INS_MOVCC,  0,   ADDRMETH_G | OPTYPE_v | OP_W,   ADDRMETH_E | OPTYPE_v | OP_R,   ARG_NONE,   cpu_PENTPRO | isa_GP,   "cmovns", "",   0,   0,   0,  INS_TEST_NSIGN, 0 },
+	 { 0,   INS_MOVCC,  0,   ADDRMETH_G | OPTYPE_v | OP_W,   ADDRMETH_E | OPTYPE_v | OP_R,   ARG_NONE,   cpu_PENTPRO | isa_GP,   "cmovp", "",   0,   0,   0,  INS_TEST_PARITY, 0 },
+	 { 0,   INS_MOVCC,  0,   ADDRMETH_G | OPTYPE_v | OP_W,   ADDRMETH_E | OPTYPE_v | OP_R,   ARG_NONE,   cpu_PENTPRO | isa_GP,   "cmovnp", "",   0,   0,   0,  INS_TEST_NPARITY, 0 },
+	 { 0,   INS_MOVCC,  0,   ADDRMETH_G | OPTYPE_v | OP_W,   ADDRMETH_E | OPTYPE_v | OP_R,   ARG_NONE,   cpu_PENTPRO | isa_GP,   "cmovl", "",   0,   0,   0,  INS_TEST_SFNEOF, 0 },
+	 { 0,   INS_MOVCC,  0,   ADDRMETH_G | OPTYPE_v | OP_W,   ADDRMETH_E | OPTYPE_v | OP_R,   ARG_NONE,   cpu_PENTPRO | isa_GP,   "cmovge", "",   0,   0,   0,  INS_TEST_SFEQOF, 0 },
+	 { 0,   INS_MOVCC,  0,   ADDRMETH_G | OPTYPE_v | OP_W,   ADDRMETH_E | OPTYPE_v | OP_R,   ARG_NONE,   cpu_PENTPRO | isa_GP,   "cmovle", "",   0,   0,   0,  INS_TEST_ZERO|INS_TEST_OR|INS_TEST_SFNEOF, 0 },
+	 { 0,   INS_MOVCC,  0,   ADDRMETH_G | OPTYPE_v | OP_W,   ADDRMETH_E | OPTYPE_v | OP_R,   ARG_NONE,   cpu_PENTPRO | isa_GP,   "cmovg", "",   0,   0,   0,  INS_TEST_NZERO|INS_TEST_SFEQOF, 0 },
+	 { 0,   INS_MOV,  0,   ADDRMETH_G | OPTYPE_d | OP_W,   ADDRMETH_W | OPTYPE_ps | OP_R,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "movmskps", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_ARITH,  0,   ADDRMETH_V | OPTYPE_ps | OP_W,   ADDRMETH_W | OPTYPE_ps | OP_R,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "sqrtps", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_ARITH,  0,   ADDRMETH_V | OPTYPE_ps | OP_W,   ADDRMETH_W | OPTYPE_ps | OP_R,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "rsqrtps", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_V | OPTYPE_ps | OP_W,   ADDRMETH_W | OPTYPE_ps | OP_R,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "rcpps", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_AND,  0,   ADDRMETH_V | OPTYPE_ps | OP_W,   ADDRMETH_W | OPTYPE_ps | OP_R,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "andps", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_AND,  0,   ADDRMETH_V | OPTYPE_ps | OP_W,   ADDRMETH_W | OPTYPE_ps | OP_R,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "andnps", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OR,  0,   ADDRMETH_V | OPTYPE_ps | OP_W,   ADDRMETH_W | OPTYPE_ps | OP_R,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "orps", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_XOR,  0,   ADDRMETH_V | OPTYPE_ps | OP_W,   ADDRMETH_W | OPTYPE_ps | OP_R,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "xorps", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_ADD,  0,   ADDRMETH_V | OPTYPE_ps | OP_W,   ADDRMETH_W | OPTYPE_ps | OP_R,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "addps", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_MUL,  0,   ADDRMETH_V | OPTYPE_ps | OP_R,   ADDRMETH_W | OPTYPE_ps | OP_R,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "mulps", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_MOV,  0, ADDRMETH_V | OPTYPE_pd, ADDRMETH_W | OPTYPE_q, ARG_NONE, cpu_PENTIUM4 | isa_GP, "cvtps2pd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_MOV,  0, ADDRMETH_V | OPTYPE_ps | OP_W, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "cvtdq2ps", "", 0, 0, 0, 0, 0 },
+	 { 0,   INS_SUB,  0,   ADDRMETH_V | OPTYPE_ps | OP_W,   ADDRMETH_W | OPTYPE_ps | OP_R,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "subps", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_ARITH,  0,   ADDRMETH_V | OPTYPE_ps | OP_W,   ADDRMETH_W | OPTYPE_ps | OP_R,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "minps", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_DIV,  0,   ADDRMETH_V | OPTYPE_ps | OP_W,   ADDRMETH_W | OPTYPE_ps | OP_R,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "divps", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_ARITH,  0,   ADDRMETH_V | OPTYPE_ps | OP_W,   ADDRMETH_W | OPTYPE_ps | OP_R,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "maxps", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_d | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "punpcklbw", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_d | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "punpcklwd", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_d | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "punpckldq", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_d | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "packsswb", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_d | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "pcmpgtb", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_d | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "pcmpgtw", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_d | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "pcmpgtd", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_d | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "packuswb", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_d | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "punpckhbw", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_d | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "punpckhwd", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_d | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "punpckhdq", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_d | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "packssdw", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_MOV,  0,   ADDRMETH_P | OPTYPE_d | OP_W,   ADDRMETH_E | OPTYPE_d | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "movd", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_MOV,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "movq", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_MOV,  0, ADDRMETH_P | OPTYPE_q | OP_W, ADDRMETH_Q | OPTYPE_q | OP_R, ADDRMETH_I | OPTYPE_b | OP_R, cpu_PENTIUM2 | isa_GP, "pshufw", "", 0, 0, 0, 0, 0 },
+	 { idx_0F71,  0,   0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "", "",   0,   0,   0,  0 , 0 },
+	 { idx_0F72,  0,   0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "", "",   0,   0,   0,  0 , 0 },
+	 { idx_0F73,  0,   0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "pcmpeqb", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_CMP,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "pcmpeqw", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_CMP,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "pcmpeqd", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "emms", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_MOV,  0,   ADDRMETH_E | OPTYPE_d | OP_W,   ADDRMETH_P | OPTYPE_d | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "movd", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_MOV,  0,   ADDRMETH_Q | OPTYPE_q | OP_W,   ADDRMETH_P | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "movq", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_BRANCHCC,  0,   ADDRMETH_J | OPTYPE_v | OP_X | OP_SIGNED,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "jo", "",   0,   0,   0,  INS_TEST_OFLOW, 0 },
+	 { 0,   INS_BRANCHCC,  0,   ADDRMETH_J | OPTYPE_v | OP_X | OP_SIGNED,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "jno", "",   0,   0,   0,  INS_TEST_NOFLOW, 0 },
+	 { 0,   INS_BRANCHCC,  0,   ADDRMETH_J | OPTYPE_v | OP_X | OP_SIGNED,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "jc", "",   0,   0,   0,  INS_TEST_CARRY, 0 },
+	 { 0,   INS_BRANCHCC,  0,   ADDRMETH_J | OPTYPE_v | OP_X | OP_SIGNED,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "jnc", "",   0,   0,   0,  INS_TEST_NCARRY, 0 },
+	 { 0,   INS_BRANCHCC,  0,   ADDRMETH_J | OPTYPE_v | OP_X | OP_SIGNED,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "jz", "",   0,   0,   0,  INS_TEST_ZERO, 0 },
+	 { 0,   INS_BRANCHCC,  0,   ADDRMETH_J | OPTYPE_v | OP_X | OP_SIGNED,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "jnz", "",   0,   0,   0,  INS_TEST_NZERO, 0 },
+	 { 0,   INS_BRANCHCC,  0,   ADDRMETH_J | OPTYPE_v | OP_X | OP_SIGNED,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "jbe", "",   0,   0,   0,  INS_TEST_CARRY|INS_TEST_OR|INS_TEST_ZERO, 0 },
+	 { 0,   INS_BRANCHCC,  0,   ADDRMETH_J | OPTYPE_v | OP_X | OP_SIGNED,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "ja", "",   0,   0,   0,  INS_TEST_NCARRY|INS_TEST_NZERO, 0 },
+	 { 0,   INS_BRANCHCC,  0,   ADDRMETH_J | OPTYPE_v | OP_X | OP_SIGNED,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "js", "",   0,   0,   0,  INS_TEST_SIGN, 0 },
+	 { 0,   INS_BRANCHCC,  0,   ADDRMETH_J | OPTYPE_v | OP_X | OP_SIGNED,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "jns", "",   0,   0,   0,  INS_TEST_NSIGN, 0 },
+	 { 0,   INS_BRANCHCC,  0,   ADDRMETH_J | OPTYPE_v | OP_X | OP_SIGNED,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "jpe", "",   0,   0,   0,  INS_TEST_PARITY, 0 },
+	 { 0,   INS_BRANCHCC,  0,   ADDRMETH_J | OPTYPE_v | OP_X | OP_SIGNED,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "jpo", "",   0,   0,   0,  INS_TEST_NPARITY, 0 },
+	 { 0,   INS_BRANCHCC,  0,   ADDRMETH_J | OPTYPE_v | OP_X | OP_SIGNED,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "jl", "",   0,   0,   0,  INS_TEST_SFNEOF, 0 },
+	 { 0,   INS_BRANCHCC,  0,   ADDRMETH_J | OPTYPE_v | OP_X | OP_SIGNED,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "jge", "",   0,   0,   0,  INS_TEST_SFEQOF, 0 },
+	 { 0,   INS_BRANCHCC,  0,   ADDRMETH_J | OPTYPE_v | OP_X | OP_SIGNED,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "jle", "",   0,   0,   0,  INS_TEST_ZERO|INS_TEST_OR|INS_TEST_SFNEOF, 0 },
+	 { 0,   INS_BRANCHCC,  0,   ADDRMETH_J | OPTYPE_v | OP_X | OP_SIGNED,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "jg", "",   0,   0,   0,  INS_TEST_NZERO|INS_TEST_SFEQOF, 0 },
+	 { 0,   INS_MOVCC,  0,   ADDRMETH_E | OPTYPE_b | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "seto", "",   0,   0,   0,  INS_TEST_OFLOW, 0 },
+	 { 0,   INS_MOVCC,  0,   ADDRMETH_E | OPTYPE_b | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "setno", "",   0,   0,   0,  INS_TEST_OFLOW, 0 },
+	 { 0,   INS_MOVCC,  0,   ADDRMETH_E | OPTYPE_b | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "setc", "",   0,   0,   0,  INS_TEST_CARRY, 0 },
+	 { 0,   INS_MOVCC,  0,   ADDRMETH_E | OPTYPE_b | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "setnc", "",   0,   0,   0,  INS_TEST_NCARRY, 0 },
+	 { 0,   INS_MOVCC,  0,   ADDRMETH_E | OPTYPE_b | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "setz", "",   0,   0,   0,  INS_TEST_ZERO, 0 },
+	 { 0,   INS_MOVCC,  0,   ADDRMETH_E | OPTYPE_b | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "setnz", "",   0,   0,   0,  INS_TEST_NZERO, 0 },
+	 { 0,   INS_MOVCC,  0,   ADDRMETH_E | OPTYPE_b | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "setbe", "",   0,   0,   0,  INS_TEST_CARRY|INS_TEST_OR|INS_TEST_ZERO, 0 },
+	 { 0,   INS_MOVCC,  0,   ADDRMETH_E | OPTYPE_b | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "seta", "",   0,   0,   0,  INS_TEST_NCARRY|INS_TEST_NZERO, 0 },
+	 { 0,   INS_MOVCC,  0,   ADDRMETH_E | OPTYPE_b | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "sets", "",   0,   0,   0,  INS_TEST_SIGN, 0 },
+	 { 0,   INS_MOVCC,  0,   ADDRMETH_E | OPTYPE_b | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "setns", "",   0,   0,   0,  INS_TEST_NSIGN, 0 },
+	 { 0,   INS_MOVCC,  0,   ADDRMETH_E | OPTYPE_b | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "setpe", "",   0,   0,   0,  INS_TEST_PARITY, 0 },
+	 { 0,   INS_MOVCC,  0,   ADDRMETH_E | OPTYPE_b | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "setpo", "",   0,   0,   0,  INS_TEST_NPARITY, 0 },
+	 { 0,   INS_MOVCC,  0,   ADDRMETH_E | OPTYPE_b | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "setl", "",   0,   0,   0,  INS_TEST_SFNEOF, 0 },
+	 { 0,   INS_MOVCC,  0,   ADDRMETH_E | OPTYPE_b | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "setge", "",   0,   0,   0,  INS_TEST_SFEQOF, 0 },
+	 { 0,   INS_MOVCC,  0,   ADDRMETH_E | OPTYPE_b | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "setle", "",   0,   0,   0,  INS_TEST_ZERO|INS_TEST_OR|INS_TEST_SFNEOF, 0 },
+	 { 0,   INS_MOVCC,  0,   ADDRMETH_E | OPTYPE_b | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "setg", "",   0,   0,   0,  INS_TEST_NZERO|INS_TEST_SFEQOF, 0 },
+	 { 0,   INS_PUSH,  0,   ADDRMETH_RS | OPTYPE_w | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "push", "",   4,   0,   0,  0 , 33 },
+	 { 0,   INS_POP,  0,   ADDRMETH_RS | OPTYPE_w | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "pop", "",   4,   0,   0,  0 , 33 },
+	 { 0,   INS_CPUID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_PENTIUM | isa_GP,   "cpuid", "",   0,   0,   0,  0 , 10 },
+	 { 0,   INS_BITTEST,  0,   ADDRMETH_E | OPTYPE_v | OP_R,   ADDRMETH_G | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "bt", "",   0,   0,   0,  INS_SET_CARRY, 0 },
+	 { 0,   INS_SHL,  0,   ADDRMETH_E | OPTYPE_v | OP_W | OP_R,   ADDRMETH_G | OPTYPE_v | OP_R,   ADDRMETH_I | OPTYPE_b | OP_R,   cpu_80386 | isa_GP,   "shld", "",   0,   0,   0,  INS_SET_SIGN|INS_SET_ZERO|INS_SET_PARITY|INS_SET_CARRY, 0 },
+	 //{ 0,   INS_SHL,  0,   ADDRMETH_E | OPTYPE_v | OP_W | OP_R,   ADDRMETH_G | OPTYPE_v | OP_R,   ADDRMETH_I | OP_R | OPTYPE_b | ADDRMETH_RR,   cpu_80386 | isa_GP,   "shld", "",   0,   0,   1,  INS_SET_SIGN|INS_SET_ZERO|INS_SET_PARITY|INS_SET_CARRY, 0 },
+	 { 0,   INS_SHL,  0,   ADDRMETH_E | OPTYPE_v | OP_W | OP_R,   ADDRMETH_G | OPTYPE_v | OP_R,   ADDRMETH_RR | OP_R | OPTYPE_b,   cpu_80386 | isa_GP,   "shld", "",   0,   0,   1,  INS_SET_SIGN|INS_SET_ZERO|INS_SET_PARITY|INS_SET_CARRY, 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_PUSH,  0,   ADDRMETH_RS | OPTYPE_w | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "push", "",   5,   0,   0,  0 , 33 },
+	 { 0,   INS_POP,  0,   ADDRMETH_RS | OPTYPE_w | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "pop", "",   5,   0,   0,  0 , 33 },
+	 { 0,   INS_SYSTEM,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "rsm", "",   0,   0,   0,  INS_SET_ALL|INS_SET_DIR, 42 },
+	 { 0,   INS_BITTEST,  0,   ADDRMETH_E | OPTYPE_v | OP_R,   ADDRMETH_G | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "bts", "",   0,   0,   0,  INS_SET_CARRY, 0 },
+	 { 0,   INS_SHR,  0,   ADDRMETH_E | OPTYPE_v | OP_W | OP_R,   ADDRMETH_G | OPTYPE_v | OP_R,   ADDRMETH_I | OPTYPE_b | OP_R,   cpu_80386 | isa_GP,   "shrd", "",   0,   0,   0,  INS_SET_SIGN|INS_SET_ZERO|INS_SET_PARITY|INS_SET_CARRY, 0 },
+	 { 0,   INS_SHR,  0,   ADDRMETH_E | OPTYPE_v | OP_W | OP_R,   ADDRMETH_G | OPTYPE_v | OP_R,   ADDRMETH_RR | OP_R | OPTYPE_b ,   cpu_80386 | isa_GP,   "shrd", "",   0,   0,   1,  INS_SET_SIGN|INS_SET_ZERO|INS_SET_PARITY|INS_SET_CARRY, 0 },
+	 { idx_0FAE,  0,   0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_MUL,  0,   ADDRMETH_G | OPTYPE_v | OP_SIGNED | OP_R | OP_W,   ADDRMETH_E | OPTYPE_v | OP_SIGNED | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "imul", "",   0,   0,   0,  INS_SET_OFLOW|INS_SET_CARRY,  },
+	 { 0,   INS_XCHGCC,  0,   ADDRMETH_E | OPTYPE_b | OP_W | OP_R,   ADDRMETH_G | OPTYPE_b | OP_W,   ARG_NONE,   cpu_80486 | isa_GP,   "cmpxchg", "",   0,   0,   0,  INS_SET_ALL, 8 },
+	 { 0,   INS_XCHGCC,  0,   ADDRMETH_E | OPTYPE_v | OP_W | OP_R,   ADDRMETH_G | OPTYPE_v | OP_W,   ARG_NONE,   cpu_80486 | isa_GP,   "cmpxchg", "",   0,   0,   0,  INS_SET_ALL, 7 },
+	 { 0,   INS_MOV,  0,   ADDRMETH_G | OPTYPE_v | OP_W, ADDRMETH_M | OPTYPE_p | OP_W,   ARG_NONE,   cpu_80386 | isa_GP,   "lss", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_BITTEST,  0,   ADDRMETH_E | OPTYPE_v | OP_R,   ADDRMETH_G | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "btr", "",   0,   0,   0,  INS_SET_CARRY, 0 },
+	 { 0,   INS_MOV,  0,   ADDRMETH_G | OPTYPE_v | OP_W, ADDRMETH_M | OPTYPE_p | OP_W,   ARG_NONE,   cpu_80386 | isa_GP,   "lfs", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_MOV,  0,   ADDRMETH_G | OPTYPE_v | OP_W, ADDRMETH_M | OPTYPE_p | OP_W,   ARG_NONE,   cpu_80386 | isa_GP,   "lgs", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_MOV,  0,   ADDRMETH_G | OPTYPE_v | OP_W,   ADDRMETH_E | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "movzx", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_MOV,  0,   ADDRMETH_G | OPTYPE_v | OP_W,   ADDRMETH_E | OPTYPE_w | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "movzx", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_UNKNOWN,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "ud1", "",   0,   0,   0,  0 , 0 },
+	 { idx_0FBA,  0,   0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_BITTEST,  0,   ADDRMETH_E | OPTYPE_v | OP_R,   ADDRMETH_G | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "btc", "",   0,   0,   0,  INS_SET_CARRY, 0 },
+	 { 0,   INS_BITTEST,  0,   ADDRMETH_G | OPTYPE_v | OP_R | OP_W,   ADDRMETH_E | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "bsf", "",   0,   0,   0,  INS_SET_ZERO, 0 },
+	 { 0,   INS_BITTEST,  0,   ADDRMETH_G | OPTYPE_v | OP_R | OP_W,   ADDRMETH_E | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "bsr", "",   0,   0,   0,  INS_SET_ZERO, 0 },
+	 { 0,   INS_MOV,  0,   ADDRMETH_G | OPTYPE_v | OP_W,   ADDRMETH_E | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "movsx", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_MOV,  0,   ADDRMETH_G | OPTYPE_v | OP_W,   ADDRMETH_E | OPTYPE_w | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "movsx", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_ADD,  0,   ADDRMETH_E | OPTYPE_b | OP_W | OP_R,   ADDRMETH_G | OPTYPE_b | OP_W,   ARG_NONE,   cpu_80486 | isa_GP,   "xadd", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_ADD,  0,   ADDRMETH_E | OPTYPE_v | OP_W | OP_R,   ADDRMETH_G | OPTYPE_v | OP_W,   ARG_NONE,   cpu_80486 | isa_GP,   "xadd", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0, INS_CMP,  0, ADDRMETH_V | OPTYPE_ps | OP_R, ADDRMETH_W | OPTYPE_ps | OP_R, ADDRMETH_I | OPTYPE_b | OP_R, cpu_PENTIUM4 | isa_GP, "cmpps", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_MOV,  0, ADDRMETH_M | OPTYPE_d | OP_W, ADDRMETH_G | OPTYPE_d | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "movnti", "", 0, 0, 0, 0, 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_E | OPTYPE_d | OP_R,   ADDRMETH_I | OPTYPE_b | OP_R,   cpu_PENTIUM2 | isa_GP,   "pinsrw", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_G | OPTYPE_d | OP_W,   ADDRMETH_Q | OPTYPE_q | OP_R,   ADDRMETH_I | OPTYPE_b | OP_R,   cpu_PENTIUM2 | isa_GP,   "pextrw", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_V | OPTYPE_ps | OP_W,   ADDRMETH_W | OPTYPE_ps | OP_R,   ADDRMETH_I | OPTYPE_b | OP_R,   cpu_PENTIUM2 | isa_GP,   "shufps", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_XCHGCC,  0, ADDRMETH_M | OPTYPE_q | OP_R | OP_W, ARG_NONE, ARG_NONE, cpu_PENTIUM | isa_GP, "cmpxchg8b", "", 0, 0, 0, 0, 9 },
+	 { 0,   INS_XCHG,  0,   ADDRMETH_RR | OPTYPE_d | OP_W | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80486 | isa_GP,   "bswap", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_XCHG,  0,   ADDRMETH_RR | OPTYPE_d | OP_W | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80486 | isa_GP,   "bswap", "",   1,   0,   0,  0 , 0 },
+	 { 0,   INS_XCHG,  0,   ADDRMETH_RR | OPTYPE_d | OP_W | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80486 | isa_GP,   "bswap", "",   2,   0,   0,  0 , 0 },
+	 { 0,   INS_XCHG,  0,   ADDRMETH_RR | OPTYPE_d | OP_W | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80486 | isa_GP,   "bswap", "",   3,   0,   0,  0 , 0 },
+	 { 0,   INS_XCHG,  0,   ADDRMETH_RR | OPTYPE_d | OP_W | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80486 | isa_GP,   "bswap", "",   4,   0,   0,  0 , 0 },
+	 { 0,   INS_XCHG,  0,   ADDRMETH_RR | OPTYPE_d | OP_W | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80486 | isa_GP,   "bswap", "",   5,   0,   0,  0 , 0 },
+	 { 0,   INS_XCHG,  0,   ADDRMETH_RR | OPTYPE_d | OP_W | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80486 | isa_GP,   "bswap", "",   6,   0,   0,  0 , 0 },
+	 { 0,   INS_XCHG,  0,   ADDRMETH_RR | OPTYPE_d | OP_W | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80486 | isa_GP,   "bswap", "",   7,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "psrlw", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "psrld", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "psrlq", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_ADD,  0, ADDRMETH_P | OPTYPE_q | OP_R | OP_W, ADDRMETH_Q | OPTYPE_q | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "paddq", "", 0, 0, 0, 0, 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "pmullw", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_G | OPTYPE_d | OP_W,   ADDRMETH_Q | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "pmovmskb", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "psubusb", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "psubusw", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "pminub", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_AND,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "pand", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_ADD,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "paddusb", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_ADD,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "paddusw", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_ARITH,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "pmaxub", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_AND,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "pandn", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "pavgb", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "psraw", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "psrad", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "pavgw", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_MUL,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "pmulhuw", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_MUL,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "pmulhw", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_MOV,  INS_NOTE_NOSUFFIX,   ADDRMETH_W | OPTYPE_q | OP_W,   ADDRMETH_V | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "movntq", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_SUB,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "psubsb", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_SUB,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "psubsw", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_ARITH,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "pminsw", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OR,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "por", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_ADD,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "paddsb", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_ADD,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "paddsw", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_ARITH,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "pmaxsw", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_XOR,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "pxor", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "psllw", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "pslld", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "psllq", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_MUL,  0, ADDRMETH_P | OPTYPE_q | OP_R | OP_W, ADDRMETH_Q | OPTYPE_q | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "pmuludq", "", 0, 0, 0, 0, 0 },
+	 { 0,   INS_ADD,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "pmaddwd", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "psadbw", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_MOV,  0,   ADDRMETH_P | OPTYPE_pi | OP_W,   ADDRMETH_Q | OPTYPE_pi | OP_R,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "maskmovq", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_SUB,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "psubb", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_SUB,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "psubw", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_SUB,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "psubd", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_SUB,  0, ADDRMETH_P | OPTYPE_q | OP_R | OP_W, ADDRMETH_Q | OPTYPE_q | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "psubq", "", 0, 0, 0, 0, 0 },
+	 { 0,   INS_ADD,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "paddb", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_ADD,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "paddw", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_ADD,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_Q | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "paddd", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 }
+};
+
+
+static ia32_insn_t tbl_660F[] = {	/* SIMD 66 Two-byte Opcodes */
+	 { 0, INS_MOV,  0, ADDRMETH_V | OPTYPE_pd | OP_R, ADDRMETH_W | OPTYPE_pd | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "movupd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_MOV,  0, ADDRMETH_W | OPTYPE_pd | OP_R, ADDRMETH_V | OPTYPE_pd | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "movupd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_MOV,  INS_NOTE_NOSUFFIX, ADDRMETH_V | OPTYPE_q | OP_R, ADDRMETH_M | OPTYPE_q | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "movlpd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_MOV,  INS_NOTE_NOSUFFIX, ADDRMETH_M | OPTYPE_q | OP_R, ADDRMETH_V | OPTYPE_q | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "movlpd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_pd | OP_R, ADDRMETH_W | OPTYPE_pd | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "unpcklpd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_pd | OP_R, ADDRMETH_W | OPTYPE_pd | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "unpckhpd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_MOV,  INS_NOTE_NOSUFFIX, ADDRMETH_V | OPTYPE_q | OP_R, ADDRMETH_M | OPTYPE_q | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "movhpd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_MOV,  INS_NOTE_NOSUFFIX, ADDRMETH_M | OPTYPE_q | OP_R, ADDRMETH_V | OPTYPE_pd | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "movhpd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_MOV,  0, ADDRMETH_V | OPTYPE_pd | OP_R, ADDRMETH_W | OPTYPE_pd | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "movapd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_MOV,  0, ADDRMETH_W | OPTYPE_pd | OP_R, ADDRMETH_V | OPTYPE_pd | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "movapd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_pd | OP_R, ADDRMETH_Q | OPTYPE_q | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "cvtpi2pd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_M | OPTYPE_pd | OP_R, ADDRMETH_V | OPTYPE_pd | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "movntpd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_P | OPTYPE_q | OP_R, ADDRMETH_W | OPTYPE_pd | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "cvttpd2pi", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_P | OPTYPE_q | OP_R, ADDRMETH_W | OPTYPE_pd | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "cvtpd2pi", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_sd | OP_R, ADDRMETH_W | OPTYPE_sd | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "ucomisd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_sd | OP_R, ADDRMETH_W | OPTYPE_sd | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "comisd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_G | OPTYPE_d | OP_R, ADDRMETH_W | OPTYPE_pd | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "movmskpd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_FSQRT,  0, ADDRMETH_V | OPTYPE_pd | OP_R, ADDRMETH_W | OPTYPE_pd | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "sqrtpd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_AND,  0, ADDRMETH_V | OPTYPE_pd | OP_R, ADDRMETH_W | OPTYPE_pd | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "andpd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_AND,  0, ADDRMETH_V | OPTYPE_pd | OP_R, ADDRMETH_W | OPTYPE_pd | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "andnpd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_OR,  0, ADDRMETH_V | OPTYPE_pd | OP_R, ADDRMETH_W | OPTYPE_pd | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "orpd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_XOR,  0, ADDRMETH_V | OPTYPE_pd | OP_R, ADDRMETH_W | OPTYPE_pd | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "xorpd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_ADD,  0, ADDRMETH_V | OPTYPE_pd | OP_R, ADDRMETH_W | OPTYPE_pd | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "addpd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_MUL,  0, ADDRMETH_V | OPTYPE_pd | OP_R, ADDRMETH_W | OPTYPE_pd | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "mulpd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_ps | OP_R, ADDRMETH_W | OPTYPE_pd | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "cvtpd2ps", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_ps | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "cvtps2dq", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_pd | OP_R, ADDRMETH_W | OPTYPE_pd | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "subpd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_pd | OP_R, ADDRMETH_W | OPTYPE_pd | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "minpd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_pd | OP_R, ADDRMETH_W | OPTYPE_pd | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "divpd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_pd | OP_R, ADDRMETH_W | OPTYPE_pd | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "maxpd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "punpcklbw", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "punpcklwd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "punpckldq", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "packsswb", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "pcmpgtb", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "pcmpgtw", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "pcmpgtd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "packuswb", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "punpckhbw", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "punpckhwd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "punpckhdq", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "packssdw", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "punpcklqdq", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "punpckhqdq", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_d | OP_R, ADDRMETH_E | OPTYPE_d | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "movd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "movdqa", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ADDRMETH_I | OPTYPE_b | OP_R, cpu_PENTIUM4 | isa_GP, "pshufd", "", 0, 0, 0, 0, 0 },
+	 { idx_660F71, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { idx_660F72, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { idx_660F73, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "pcmpeqb", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "pcmpeqw", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "pcmpeqd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_pd | OP_R, ADDRMETH_W | OPTYPE_pd | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "haddpd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_pd | OP_R, ADDRMETH_W | OPTYPE_pd | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "hsubpd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_E | OPTYPE_d | OP_R, ADDRMETH_V | OPTYPE_d | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "movd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_W | OPTYPE_dq | OP_R, ADDRMETH_V | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "movdqa", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_pd | OP_R, ADDRMETH_W | OPTYPE_pd | OP_R, ADDRMETH_I | OPTYPE_b | OP_R, cpu_PENTIUM4 | isa_GP, "cmppd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_w | OP_R, ADDRMETH_E | OPTYPE_d | OP_R, ADDRMETH_I | OPTYPE_b | OP_R, cpu_PENTIUM4 | isa_GP, "pinsrw", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_G | OPTYPE_d | OP_R, ADDRMETH_W | OPTYPE_w | OP_R, ADDRMETH_I | OPTYPE_b | OP_R, cpu_PENTIUM4 | isa_GP, "pextrw", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_pd | OP_R, ADDRMETH_W | OPTYPE_pd | OP_R, ADDRMETH_I | OPTYPE_b | OP_R, cpu_PENTIUM4 | isa_GP, "shufpd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_pd | OP_R, ADDRMETH_W | OPTYPE_pd | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "addsubpd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "psrlw", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "psrld", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "psrlq", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "paddq", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "pmullw", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_W | OPTYPE_q | OP_R, ADDRMETH_V | OPTYPE_q | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "movq", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_G | OPTYPE_d | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "pmovmskb", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "psubusb", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "psubusw", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "pminub", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "pand", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "paddusb", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "paddusw", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "pmaxub", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "pandn", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "pavgb", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "psraw", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "psrad", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "pavgw", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "pmulhuw", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "pmulhw", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_pd | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "cvttpd2dq", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_M | OPTYPE_dq | OP_R, ADDRMETH_V | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "movntdq", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "psubsb", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "psubsw", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "pminsw", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "por", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "paddsb", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "paddsw", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "pmaxsw", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "pxor", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "psllw", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "pslld", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "psllq", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "pmuludq", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "pmaddwd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "psadbw", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "maskmovdqu", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "psubb", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "psubw", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "psubd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "psubq", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "paddb", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "paddw", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "paddd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 }
+};
+
+
+static ia32_insn_t tbl_F20F[] = {	/* SIMD F2 Two-byte Opcodes */
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_sd | OP_R, ADDRMETH_W | OPTYPE_sd | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "movsd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_W | OPTYPE_sd | OP_R, ADDRMETH_V | OPTYPE_sd | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "movsd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_q | OP_R, ADDRMETH_W | OPTYPE_q | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "movddup", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_sd | OP_R, ADDRMETH_E | OPTYPE_d | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "cvtsi2sd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_G | OPTYPE_d | OP_R, ADDRMETH_W | OPTYPE_sd | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "cvttsd2si", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_G | OPTYPE_d | OP_R, ADDRMETH_W | OPTYPE_sd | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "cvtsd2si", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_sd | OP_R, ADDRMETH_W | OPTYPE_sd | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "sqrtsd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_sd | OP_R, ADDRMETH_W | OPTYPE_sd | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "addsd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_sd | OP_R, ADDRMETH_W | OPTYPE_sd | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "mulsd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_ss | OP_R, ADDRMETH_W | OPTYPE_sd | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "cvtsd2ss", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_sd | OP_R, ADDRMETH_W | OPTYPE_sd | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "subsd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_sd | OP_R, ADDRMETH_W | OPTYPE_sd | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "minsd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_sd | OP_R, ADDRMETH_W | OPTYPE_sd | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "divsd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_sd | OP_R, ADDRMETH_W | OPTYPE_sd | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "maxsd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ADDRMETH_I | OPTYPE_b | OP_R, cpu_PENTIUM4 | isa_GP, "pshuflw", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_ps | OP_R, ADDRMETH_W | OPTYPE_ps | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "haddps", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_ps | OP_R, ADDRMETH_W | OPTYPE_ps | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "hsubps", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_sd | OP_R, ADDRMETH_W | OPTYPE_sd | OP_R, ADDRMETH_I | OPTYPE_b | OP_R, cpu_PENTIUM4 | isa_GP, "cmpsd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_ps | OP_R, ADDRMETH_W | OPTYPE_ps | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "addsubps", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_P | OPTYPE_q | OP_R, ADDRMETH_W | OPTYPE_q | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "movdq2q", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_pd | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "cvtpd2dq", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_M | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "lddqu", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 }
+};
+
+
+static ia32_insn_t tbl_F30F[] = {	/* SIMD F3 Two-byte Opcodes */
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_ss | OP_R, ADDRMETH_W | OPTYPE_ss | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "movss", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_W | OPTYPE_ss | OP_R, ADDRMETH_V | OPTYPE_ss | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "movss", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_ps | OP_R, ADDRMETH_W | OPTYPE_ps | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "movsldup", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_ps | OP_R, ADDRMETH_W | OPTYPE_ps | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "movshdup", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_ss | OP_R, ADDRMETH_E | OPTYPE_d | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "cvtsi2ss", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_G | OPTYPE_d | OP_R, ADDRMETH_W | OPTYPE_ss | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "cvttss2si", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_G | OPTYPE_d | OP_R, ADDRMETH_W | OPTYPE_ss | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "cvtss2si", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_ss | OP_R, ADDRMETH_W | OPTYPE_ss | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "sqrtss", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_ss | OP_R, ADDRMETH_W | OPTYPE_ss | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "rsqrtss", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_ss | OP_R, ADDRMETH_W | OPTYPE_ss | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "rcpss", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_ss | OP_R, ADDRMETH_W | OPTYPE_ss | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "addss", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_ss | OP_R, ADDRMETH_W | OPTYPE_ss | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "mulss", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_sd | OP_R, ADDRMETH_W | OPTYPE_ss | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "cvtss2sd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_ps | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "cvttps2dq", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_ss | OP_R, ADDRMETH_W | OPTYPE_ss | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "subss", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_ss | OP_R, ADDRMETH_W | OPTYPE_ss | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "minss", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_ss | OP_R, ADDRMETH_W | OPTYPE_ss | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "divss", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_ss | OP_R, ADDRMETH_W | OPTYPE_ss | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "maxss", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "movdqu", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_W | OPTYPE_dq | OP_R, ADDRMETH_I | OPTYPE_b | OP_R, cpu_PENTIUM4 | isa_GP, "pshufhw", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_q | OP_R, ADDRMETH_W | OPTYPE_q | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "movq", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_W | OPTYPE_dq | OP_R, ADDRMETH_V | OPTYPE_dq | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "movdqu", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_ss | OP_R, ADDRMETH_W | OPTYPE_ss | OP_R, ADDRMETH_I | OPTYPE_b | OP_R, cpu_PENTIUM4 | isa_GP, "cmpss", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_dq | OP_R, ADDRMETH_Q | OPTYPE_q | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "movq2dq", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_UNKNOWN,  0, ADDRMETH_V | OPTYPE_pd | OP_R, ADDRMETH_W | OPTYPE_q | OP_R, ARG_NONE, cpu_PENTIUM4 | isa_GP, "cvtdq2pd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "", "", 0, 0, 0, 0, 0 }
+};
+
+
+static ia32_insn_t tbl_0F00[] = {	/* Group 6 */
+	 { 0,   INS_SYSTEM,  0,   ADDRMETH_E | OPTYPE_w | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "sldt", "",   0,   0,   0,  0 , 46 },
+	 { 0,   INS_SYSTEM,  0,   ADDRMETH_E | OPTYPE_w | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "str", "",   0,   0,   0,  0 , 49 },
+	 { 0,   INS_SYSTEM,  0,   ADDRMETH_E | OPTYPE_w | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "lldt", "",   0,   0,   0,  0 , 29 },
+	 { 0,   INS_SYSTEM,  0,   ADDRMETH_E | OPTYPE_w | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "ltr", "",   0,   0,   0,  0 , 32 },
+	 { 0,   INS_SYSTEM,  0,   ADDRMETH_E | OPTYPE_w | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "verr", "",   0,   0,   0,  INS_SET_ZERO, 0 },
+	 { 0,   INS_SYSTEM,  0,   ADDRMETH_E | OPTYPE_w | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "verw", "",   0,   0,   0,  INS_SET_ZERO, 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 }
+};
+
+
+static ia32_insn_t tbl_0F01[] = {	/* Group 7 */
+	 { 0,   INS_SYSTEM,  0,   ADDRMETH_M | OPTYPE_s | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "sgdt", "",   0,   0,   0,  0 , 44 },
+	 { 0,   INS_SYSTEM,  0,   ADDRMETH_M | OPTYPE_s | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "sidt", "",   0,   0,   0,  0 , 45 },
+	 { 0,   INS_SYSTEM,  0,   ADDRMETH_M | OPTYPE_s | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "lgdt", "",   0,   0,   0,  0 , 27 },
+	 { 0,   INS_SYSTEM,  0,   ADDRMETH_M | OPTYPE_s | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "lidt", "",   0,   0,   0,  0 , 28 },
+	 { 0,   INS_SYSTEM,  0,   ADDRMETH_E | OPTYPE_w | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "smsw", "",   0,   0,   0,  0 , 47 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_SYSTEM,  0,   ADDRMETH_E | OPTYPE_w | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "lmsw", "",   0,   0,   0,  0 , 30 },
+	 { 0,   INS_SYSTEM,  0,   ADDRMETH_M | OPTYPE_none | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80486 | isa_GP,   "invlpg", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_SYSTEM,  0,   ADDRMETH_M | OPTYPE_s | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "sgdt", "",   0,   0,   0,  0 , 44 },
+	 { 0,   INS_SYSTEM,  0,   ADDRMETH_M | OPTYPE_s | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "sidt", "",   0,   0,   0,  0 , 45 },
+	 { 0,   INS_SYSTEM,  0,   ADDRMETH_M | OPTYPE_s | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "lgdt", "",   0,   0,   0,  0 , 27 },
+	 { 0,   INS_SYSTEM,  0,   ADDRMETH_M | OPTYPE_s | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "lidt", "",   0,   0,   0,  0 , 28 },
+	 { 0,   INS_SYSTEM,  0,   ADDRMETH_E | OPTYPE_w | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "smsw", "",   0,   0,   0,  0 , 47 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_SYSTEM,  0,   ADDRMETH_E | OPTYPE_w | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "lmsw", "",   0,   0,   0,  0 , 30 },
+	 { 0,   INS_SYSTEM,  0,   ADDRMETH_M | OPTYPE_none | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80486 | isa_GP,   "invlpg", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_SYSTEM,  0,   ADDRMETH_M | OPTYPE_s | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "sgdt", "",   0,   0,   0,  0 , 44 },
+	 { 0,   INS_SYSTEM,  0,   ADDRMETH_M | OPTYPE_s | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "sidt", "",   0,   0,   0,  0 , 45 },
+	 { 0,   INS_SYSTEM,  0,   ADDRMETH_M | OPTYPE_s | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "lgdt", "",   0,   0,   0,  0 , 27 },
+	 { 0,   INS_SYSTEM,  0,   ADDRMETH_M | OPTYPE_s | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "lidt", "",   0,   0,   0,  0 , 28 },
+	 { 0,   INS_SYSTEM,  0,   ADDRMETH_E | OPTYPE_w | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "smsw", "",   0,   0,   0,  0 , 47 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_SYSTEM,  0,   ADDRMETH_E | OPTYPE_w | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "lmsw", "",   0,   0,   0,  0 , 30 },
+	 { 0,   INS_SYSTEM,  0,   ADDRMETH_M | OPTYPE_none | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80486 | isa_GP,   "invlpg", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { idx_0F0111,  0,   0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_SYSTEM,  0,   ADDRMETH_E | OPTYPE_w | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "smsw", "",   0,   0,   0,  0 , 47 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_SYSTEM,  0,   ADDRMETH_E | OPTYPE_w | OP_W,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "lmsw", "",   0,   0,   0,  0 , 30 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 }
+};
+
+
+static ia32_insn_t tbl_0F0111[] = {	/* Monitor/MWait opcode */
+	 { 0, INS_SYSTEM,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "monitor", "", 0, 0, 0, 0, 54 },
+	 { 0, INS_SYSTEM,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "mwait", "", 0, 0, 0, 0, 55 }
+};
+
+
+static ia32_insn_t tbl_0F12[] = {	/* Movlps Opcode */
+	 { 0,   INS_MOV,  INS_NOTE_NOSUFFIX,   ADDRMETH_V | OPTYPE_q | OP_W,   ADDRMETH_M | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "movlps", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_MOV,  INS_NOTE_NOSUFFIX,   ADDRMETH_V | OPTYPE_q | OP_W,   ADDRMETH_M | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "movlps", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_MOV,  INS_NOTE_NOSUFFIX,   ADDRMETH_V | OPTYPE_q | OP_W,   ADDRMETH_M | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "movlps", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_MOV,  0, ADDRMETH_V | OPTYPE_ps | OP_R | OP_W, ADDRMETH_W | OPTYPE_ps | OP_R , ARG_NONE, cpu_PENTIUM4 | isa_GP, "movhlps", "", 0, 0, 0, 0, 0 }
+};
+
+
+static ia32_insn_t tbl_0F16[] = {	/* Movhps Opcode */
+	 { 0,   INS_OTHER,  0,   ADDRMETH_V | OPTYPE_q | OP_W,   ADDRMETH_M | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "movhps", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_V | OPTYPE_q | OP_W,   ADDRMETH_M | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "movhps", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_V | OPTYPE_q | OP_W,   ADDRMETH_M | OPTYPE_q | OP_R,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "movhps", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_MOV,  0, ADDRMETH_V | OPTYPE_ps | OP_R | OP_W, ADDRMETH_W | OPTYPE_ps | OP_R , ARG_NONE, cpu_PENTIUM4 | isa_GP, "movlhps", "", 0, 0, 0, 0, 0 }
+};
+
+
+static ia32_insn_t tbl_0F18[] = {	/* Group 16 */
+	 { 0,   INS_SYSTEM,  0,    OP_W | OPTYPE_b | ADDRMETH_M,   ARG_NONE,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "prefetchnta", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_SYSTEM,  0,   ADDRMETH_RT | OPTYPE_d | OP_W, ARG_NONE,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "prefetcht0", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_SYSTEM,  0,   ADDRMETH_RT | OPTYPE_d | OP_W, ARG_NONE,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "prefetcht1", "",   1,   0,   0,  0 , 0 },
+	 { 0,   INS_SYSTEM,  0,   ADDRMETH_RT | OPTYPE_d | OP_W, ARG_NONE,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "prefetcht2", "",   2,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_SYSTEM,  0,    OP_W | OPTYPE_b | ADDRMETH_M,   ARG_NONE,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "prefetchnta", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_SYSTEM,  0,   ADDRMETH_RT | OPTYPE_d | OP_W, ARG_NONE,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "prefetcht0", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_SYSTEM,  0,   ADDRMETH_RT | OPTYPE_d | OP_W, ARG_NONE,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "prefetcht1", "",   1,   0,   0,  0 , 0 },
+	 { 0,   INS_SYSTEM,  0,   ADDRMETH_RT | OPTYPE_d | OP_W, ARG_NONE,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "prefetcht2", "",   2,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_SYSTEM,  0,    OP_W | OPTYPE_b | ADDRMETH_M,   ARG_NONE,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "prefetchnta", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_SYSTEM,  0,   ADDRMETH_RT | OPTYPE_d | OP_W, ARG_NONE,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "prefetcht0", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_SYSTEM,  0,   ADDRMETH_RT | OPTYPE_d | OP_W, ARG_NONE,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "prefetcht1", "",   1,   0,   0,  0 , 0 },
+	 { 0,   INS_SYSTEM,  0,   ADDRMETH_RT | OPTYPE_d | OP_W, ARG_NONE,   ARG_NONE,   cpu_PENTIUM2 | isa_GP,   "prefetcht2", "",   2,   0,   0,  0 , 0 }
+};
+
+
+static ia32_insn_t tbl_0F71[] = {	/* Group 12 */
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "psrlw", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "psraw", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "psllw", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 }
+};
+
+
+static ia32_insn_t tbl_660F71[] = {	/* Group 12 SSE */
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_P | OPTYPE_dq | OP_W,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "psrlw", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_P | OPTYPE_dq | OP_W,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "psraw", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_P | OPTYPE_dq | OP_W,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "psllw", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 }
+};
+
+
+static ia32_insn_t tbl_0F72[] = {	/* Group 13 */
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "psrld", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "psrad", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "pslld", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 }
+};
+
+
+static ia32_insn_t tbl_660F72[] = {	/* Group 13 SSE */
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_W | OPTYPE_dq | OP_W,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "psrld", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_W | OPTYPE_dq | OP_W,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "psrad", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_W | OPTYPE_dq | OP_W,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "pslld", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 }
+};
+
+
+static ia32_insn_t tbl_0F73[] = {	/* Group 14 */
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "psrlq", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_P | OPTYPE_q | OP_W,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "psllq", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 }
+};
+
+
+static ia32_insn_t tbl_660F73[] = {	/* Group 14 SSE */
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_W | OPTYPE_dq | OP_W,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "psrlq", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_W | OPTYPE_dq | OP_W,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "psrldq", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_W | OPTYPE_dq | OP_W,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "psllq", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_OTHER,  0,   ADDRMETH_W | OPTYPE_dq | OP_W,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "pslldq", "",   0,   0,   0,  0 , 0 }
+};
+
+
+static ia32_insn_t tbl_0FAE[] = {	/* Group 15 */
+	 { 0, INS_FPU,  0,   ADDRMETH_E | OPTYPE_fx | OP_W,   ARG_NONE,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "fxsave", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_FPU,  0,   ADDRMETH_E | OPTYPE_fx | OP_R,   ARG_NONE,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "fxrstor", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_SYSTEM,  0,   ADDRMETH_E | OPTYPE_d | OP_R,   ARG_NONE,   ARG_NONE,   cpu_PENTIUM2,   "ldmxcsr", "",   0,   0,   0,  0 , 25 },
+	 { 0, INS_SYSTEM,  0,   ADDRMETH_E | OPTYPE_d | OP_W,   ARG_NONE,   ARG_NONE,   cpu_PENTIUM2,   "stmxcsr", "",   0,   0,   0 ,  0, 48 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_SYSTEM,  0, ADDRMETH_M | OPTYPE_b | OP_R, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "clflush", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_FPU,  0,   ADDRMETH_E | OPTYPE_fx | OP_W,   ARG_NONE,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "fxsave", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_FPU,  0,   ADDRMETH_E | OPTYPE_fx | OP_R,   ARG_NONE,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "fxrstor", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_SYSTEM,  0,   ADDRMETH_E | OPTYPE_d | OP_R,   ARG_NONE,   ARG_NONE,   cpu_PENTIUM2,   "ldmxcsr", "",   0,   0,   0,  0 , 25 },
+	 { 0, INS_SYSTEM,  0,   ADDRMETH_E | OPTYPE_d | OP_W,   ARG_NONE,   ARG_NONE,   cpu_PENTIUM2,   "stmxcsr", "",   0,   0,   0 ,  0, 48 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_SYSTEM,  0, ADDRMETH_M | OPTYPE_b | OP_R, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "clflush", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_FPU,  0,   ADDRMETH_E | OPTYPE_fx | OP_W,   ARG_NONE,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "fxsave", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_FPU,  0,   ADDRMETH_E | OPTYPE_fx | OP_R,   ARG_NONE,   ARG_NONE,   cpu_PENTIUM | isa_MMX,   "fxrstor", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_SYSTEM,  0,   ADDRMETH_E | OPTYPE_d | OP_R,   ARG_NONE,   ARG_NONE,   cpu_PENTIUM2,   "ldmxcsr", "",   0,   0,   0,  0 , 25 },
+	 { 0, INS_SYSTEM,  0,   ADDRMETH_E | OPTYPE_d | OP_W,   ARG_NONE,   ARG_NONE,   cpu_PENTIUM2,   "stmxcsr", "",   0,   0,   0 ,  0, 48 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_SYSTEM,  0, ADDRMETH_M | OPTYPE_b | OP_R, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "clflush", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_SYSTEM,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "lfence", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_SYSTEM,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "mfence", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_SYSTEM,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "sfence", "",   0,   0,   0,  0 , 0 }
+};
+
+
+static ia32_insn_t tbl_0FBA[] = {	/* Group 8 */
+	 { 0,   INS_BITTEST,  0,   ADDRMETH_E | OPTYPE_v | OP_R,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "bt", "",   0,   0,   0,  INS_SET_CARRY, 0 },
+	 { 0,   INS_BITTEST,  0,   ADDRMETH_E | OPTYPE_v | OP_R,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "bts", "",   0,   0,   0,  INS_SET_CARRY, 0 },
+	 { 0,   INS_BITTEST,  0,   ADDRMETH_E | OPTYPE_v | OP_R,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "btr", "",   0,   0,   0,  INS_SET_CARRY, 0 },
+	 { 0,   INS_BITTEST,  0,   ADDRMETH_E | OPTYPE_v | OP_R,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "btc", "",   0,   0,   0   ,  INS_SET_CARRY, 0 }
+};
+
+
+static ia32_insn_t tbl_0FC7[] = {	/* Group 9 */
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_XCHGCC,  0,   ADDRMETH_M | OPTYPE_q | OP_W,   ARG_NONE,   ARG_NONE,   cpu_PENTIUM | isa_GP,   "cmpxch8b", "",   0,   0,   0   ,  0 , 9 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_XCHGCC,  0,   ADDRMETH_M | OPTYPE_q | OP_W,   ARG_NONE,   ARG_NONE,   cpu_PENTIUM | isa_GP,   "cmpxch8b", "",   0,   0,   0   ,  0 , 9 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0, INS_INVALID,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_XCHGCC,  0,   ADDRMETH_M | OPTYPE_q | OP_W,   ARG_NONE,   ARG_NONE,   cpu_PENTIUM | isa_GP,   "cmpxch8b", "",   0,   0,   0   ,  0 , 9 }
+};
+
+
+static ia32_insn_t tbl_0FB9[] = {	/* Group 10 */
+	 { 0, INS_SYSTEM,  0,   ARG_NONE,   ARG_NONE,   ARG_NONE,   0,   "fxsave", "",   0,   0,   0,  0 , 0 }
+};
+
+
+static ia32_insn_t tbl_C6[] = {	/* Group 11a */
+	 { 0,   INS_MOV,  0,   ADDRMETH_E | OPTYPE_b | OP_W,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "mov", "",   0,   0,   0,  0 , 0 }
+};
+
+
+static ia32_insn_t tbl_C7[] = {	/* Group 11b */
+	 { 0,   INS_MOV,  0,   ADDRMETH_E | OPTYPE_v | OP_W,   ADDRMETH_I | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "mov", "",   0,   0,   0,  0 , 0 }
+};
+
+
+static ia32_insn_t tbl_80[] = {	/* Group 1a */
+	 { 0,   INS_ADD,  0,   ADDRMETH_E | OPTYPE_b | OP_W | OP_R,   ADDRMETH_I | OPTYPE_b | OP_SIGNED | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "add", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_OR,  0,   ADDRMETH_E | OPTYPE_b | OP_W | OP_R,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "or", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_ADD,  0,   ADDRMETH_E | OPTYPE_b | OP_W | OP_R,   ADDRMETH_I | OPTYPE_b | OP_SIGNED | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "adc", "",   0,   0,   0,  INS_SET_ALL|INS_TEST_CARRY, 0 },
+	 { 0,   INS_SUB,  0,   ADDRMETH_E | OPTYPE_b | OP_SIGNED | OP_W | OP_R,   ADDRMETH_I | OPTYPE_b | OP_SIGNED | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "sbb", "",   0,   0,   0,  INS_SET_ALL|INS_TEST_CARRY, 0 },
+	 { 0,   INS_AND,  0,   ADDRMETH_E | OPTYPE_b | OP_W | OP_R,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "and", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_SUB,  0,   ADDRMETH_E | OPTYPE_b | OP_SIGNED | OP_W | OP_R,   ADDRMETH_I | OPTYPE_b | OP_SIGNED | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "sub", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_XOR,  0,   ADDRMETH_E | OPTYPE_b | OP_W | OP_R,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "xor", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_CMP,  0,   ADDRMETH_E | OPTYPE_b | OP_R,   ADDRMETH_I | OPTYPE_b | OP_SIGNED | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "cmp", "",   0,   0,   0   ,  INS_SET_ALL, 0 }
+};
+
+
+static ia32_insn_t tbl_81[] = {	/* Group 1b */
+	 { 0,   INS_ADD,  0,   ADDRMETH_E | OPTYPE_v | OP_W | OP_R,   ADDRMETH_I | OPTYPE_v | OP_SIGNED | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "add", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_OR,  0,   ADDRMETH_E | OPTYPE_v | OP_W | OP_R,   ADDRMETH_I | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "or", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_ADD,  0,   ADDRMETH_E | OPTYPE_v | OP_W | OP_R,   ADDRMETH_I | OPTYPE_v | OP_SIGNED | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "adc", "",   0,   0,   0,  INS_SET_ALL|INS_TEST_CARRY, 0 },
+	 { 0,   INS_SUB,  0,   ADDRMETH_E | OPTYPE_v | OP_SIGNED | OP_W | OP_R,   ADDRMETH_I | OPTYPE_v | OP_SIGNED | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "sbb", "",   0,   0,   0,  INS_SET_ALL|INS_TEST_CARRY, 0 },
+	 { 0,   INS_AND,  0,   ADDRMETH_E | OPTYPE_v | OP_W | OP_R,   ADDRMETH_I | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "and", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_SUB,  0,   ADDRMETH_E | OPTYPE_v | OP_SIGNED | OP_W | OP_R,   ADDRMETH_I | OPTYPE_v | OP_SIGNED | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "sub", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_XOR,  0,   ADDRMETH_E | OPTYPE_v | OP_W | OP_R,   ADDRMETH_I | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "xor", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_CMP,  0,   ADDRMETH_E | OPTYPE_v | OP_R,   ADDRMETH_I | OPTYPE_v | OP_SIGNED | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "cmp", "",   0,   0,   0   ,  INS_SET_ALL, 0 }
+};
+
+
+static ia32_insn_t tbl_82[] = {	/* Group 1c */
+	 { 0,   INS_ADD,  0,   ADDRMETH_E | OPTYPE_b | OP_W | OP_R,   ADDRMETH_I | OPTYPE_b | OP_SIGNED | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "add", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_OR,  0,   ADDRMETH_E | OPTYPE_b | OP_W | OP_R,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "or", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_ADD,  0,   ADDRMETH_E | OPTYPE_b | OP_W | OP_R,   ADDRMETH_I | OPTYPE_b | OP_SIGNED | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "adc", "",   0,   0,   0,  INS_SET_ALL|INS_TEST_CARRY, 0 },
+	 { 0,   INS_SUB,  0,   ADDRMETH_E | OPTYPE_b | OP_SIGNED | OP_W | OP_R,   ADDRMETH_I | OPTYPE_b | OP_SIGNED | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "sbb", "",   0,   0,   0,  INS_SET_ALL|INS_TEST_CARRY, 0 },
+	 { 0,   INS_AND,  0,   ADDRMETH_E | OPTYPE_b | OP_W | OP_R,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "and", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_SUB,  0,   ADDRMETH_E | OPTYPE_b | OP_SIGNED | OP_W | OP_R,   ADDRMETH_I | OPTYPE_b | OP_SIGNED | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "sub", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_XOR,  0,   ADDRMETH_E | OPTYPE_b | OP_W | OP_R,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "xor", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_CMP,  0,   ADDRMETH_E | OPTYPE_b | OP_R,   ADDRMETH_I | OPTYPE_b | OP_SIGNED | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "cmp", "",   0,   0,   0   ,  INS_SET_ALL, 0 }
+};
+
+
+static ia32_insn_t tbl_83[] = {	/* Group 1d */
+	 { 0,   INS_ADD,  0,   ADDRMETH_E | OPTYPE_v | OP_W | OP_R,   ADDRMETH_I | OPTYPE_b | OP_SIGNED | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "add", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_OR,  0,   ADDRMETH_E | OPTYPE_v | OP_W | OP_R,   ADDRMETH_I | OPTYPE_b | OP_SIGNED | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "or", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_ADD,  0,   ADDRMETH_E | OPTYPE_v | OP_W | OP_R,   ADDRMETH_I | OPTYPE_b | OP_SIGNED | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "adc", "",   0,   0,   0,  INS_SET_ALL|INS_TEST_CARRY, 0 },
+	 { 0,   INS_SUB,  0,   ADDRMETH_E | OPTYPE_v | OP_SIGNED | OP_W | OP_R,   ADDRMETH_I | OPTYPE_b | OP_SIGNED | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "sbb", "",   0,   0,   0,  INS_SET_ALL|INS_TEST_CARRY, 0 },
+	 { 0,   INS_AND,  0,   ADDRMETH_E | OPTYPE_v | OP_W | OP_R,   ADDRMETH_I | OPTYPE_b | OP_SIGNED | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "and", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_SUB,  0,   ADDRMETH_E | OPTYPE_v | OP_SIGNED | OP_W | OP_R,   ADDRMETH_I | OPTYPE_b | OP_SIGNED | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "sub", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_XOR,  0,   ADDRMETH_E | OPTYPE_v | OP_W | OP_R,   ADDRMETH_I | OPTYPE_b | OP_SIGNED | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "xor", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_CMP,  0,   ADDRMETH_E | OPTYPE_v | OP_R,   ADDRMETH_I | OPTYPE_b | OP_SIGNED | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "cmp", "",   0,   0,   0   ,  INS_SET_ALL, 0 }
+};
+
+
+static ia32_insn_t tbl_C0[] = {	/* Group 2a */
+	 { 0,   INS_ROL,  0,   ADDRMETH_E | OPTYPE_b | OP_W | OP_R,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "rol", "",   0,   0,   0,  INS_SET_CARRY|INS_SET_OFLOW, 0 },
+	 { 0,   INS_ROR,  0,   ADDRMETH_E | OPTYPE_b | OP_W | OP_R,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "ror", "",   0,   0,   0,  INS_SET_CARRY|INS_SET_OFLOW, 0 },
+	 { 0,   INS_ROL,  0,   ADDRMETH_E | OPTYPE_b | OP_W | OP_R,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "rcl", "",   0,   0,   0,  INS_SET_CARRY|INS_SET_OFLOW|INS_TEST_CARRY, 0 },
+	 { 0,   INS_ROR,  0,   ADDRMETH_E | OPTYPE_b | OP_W | OP_R,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "rcr", "",   0,   0,   0,  INS_SET_CARRY|INS_SET_OFLOW|INS_TEST_CARRY, 0 },
+	 { 0,   INS_SHL,  0,   ADDRMETH_E | OPTYPE_b | OP_W | OP_R,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "shl", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_SHR,  0,   ADDRMETH_E | OPTYPE_b | OP_W | OP_R,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "shr", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_SHL,  0,   ADDRMETH_E | OPTYPE_b | OP_W | OP_R,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "sal", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_SHR,  0,   ADDRMETH_E | OPTYPE_b | OP_W | OP_R,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "sar", "",   0,   0,   0   ,  INS_SET_ALL, 0 }
+};
+
+
+static ia32_insn_t tbl_C1[] = {	/* Group 2b */
+	 { 0,   INS_ROL,  0,   ADDRMETH_E | OPTYPE_v | OP_W | OP_R,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "rol", "",   0,   0,   0,  INS_SET_CARRY|INS_SET_OFLOW, 0 },
+	 { 0,   INS_ROR,  0,   ADDRMETH_E | OPTYPE_v | OP_W | OP_R,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "ror", "",   0,   0,   0,  INS_SET_CARRY|INS_SET_OFLOW, 0 },
+	 { 0,   INS_ROL,  0,   ADDRMETH_E | OPTYPE_v | OP_W | OP_R,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "rcl", "",   0,   0,   0,  INS_SET_CARRY|INS_SET_OFLOW|INS_TEST_CARRY, 0 },
+	 { 0,   INS_ROR,  0,   ADDRMETH_E | OPTYPE_v | OP_W | OP_R,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "rcr", "",   0,   0,   0,  INS_SET_CARRY|INS_SET_OFLOW|INS_TEST_CARRY, 0 },
+	 { 0,   INS_SHL,  0,   ADDRMETH_E | OPTYPE_v | OP_W | OP_R,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "shl", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_SHR,  0,   ADDRMETH_E | OPTYPE_v | OP_W | OP_R,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "shr", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_SHL,  0,   ADDRMETH_E | OPTYPE_v | OP_W | OP_R,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "sal", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_SHR,  0,   ADDRMETH_E | OPTYPE_v | OP_W | OP_R,   ADDRMETH_I | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "sar", "",   0,   0,   0   ,  INS_SET_ALL, 0 }
+};
+
+
+static ia32_insn_t tbl_D0[] = {	/* Group 2c */
+	 { 0,   INS_ROL,  0,   ADDRMETH_E | OPTYPE_b | OP_W | OP_R,   ADDRMETH_II | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "rol", "",   0,   1,   0,  INS_SET_CARRY|INS_SET_OFLOW, 0 },
+	 { 0,   INS_ROR,  0,   ADDRMETH_E | OPTYPE_b | OP_W | OP_R,   ADDRMETH_II | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "ror", "",   0,   1,   0,  INS_SET_CARRY|INS_SET_OFLOW, 0 },
+	 { 0,   INS_ROL,  0,   ADDRMETH_E | OPTYPE_b | OP_W | OP_R,   ADDRMETH_II | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "rcl", "",   0,   1,   0,  INS_SET_CARRY|INS_SET_OFLOW|INS_TEST_CARRY, 0 },
+	 { 0,   INS_ROR,  0,   ADDRMETH_E | OPTYPE_b | OP_W | OP_R,   ADDRMETH_II | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "rcr", "",   0,   1,   0,  INS_SET_CARRY|INS_SET_OFLOW|INS_TEST_CARRY, 0 },
+	 { 0,   INS_SHL,  0,   ADDRMETH_E | OPTYPE_b | OP_W | OP_R,   ADDRMETH_II | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "shl", "",   0,   1,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_SHR,  0,   ADDRMETH_E | OPTYPE_b | OP_W | OP_R,   ADDRMETH_II | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "shr", "",   0,   1,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_SHL,  0,   ADDRMETH_E | OPTYPE_b | OP_W | OP_R,   ADDRMETH_II | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "sal", "",   0,   1,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_SHR,  0,   ADDRMETH_E | OPTYPE_b | OP_W | OP_R,   ADDRMETH_II | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "sar", "",   0,   1,   0   ,  INS_SET_ALL, 0 }
+};
+
+
+static ia32_insn_t tbl_D1[] = {	/* Group 2d */
+	 { 0,   INS_ROL,  0,   ADDRMETH_E | OPTYPE_v | OP_W | OP_R,   ADDRMETH_II | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "rol", "",   0,   1,   0,  INS_SET_CARRY|INS_SET_OFLOW, 0 },
+	 { 0,   INS_ROR,  0,   ADDRMETH_E | OPTYPE_v | OP_W | OP_R,   ADDRMETH_II | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "ror", "",   0,   1,   0,  INS_SET_CARRY|INS_SET_OFLOW, 0 },
+	 { 0,   INS_ROL,  0,   ADDRMETH_E | OPTYPE_v | OP_W | OP_R,   ADDRMETH_II | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "rcl", "",   0,   1,   0,  INS_SET_CARRY|INS_SET_OFLOW|INS_TEST_CARRY, 0 },
+	 { 0,   INS_ROR,  0,   ADDRMETH_E | OPTYPE_v | OP_W | OP_R,   ADDRMETH_II | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "rcr", "",   0,   1,   0,  INS_SET_CARRY|INS_SET_OFLOW|INS_TEST_CARRY, 0 },
+	 { 0,   INS_SHL,  0,   ADDRMETH_E | OPTYPE_v | OP_W | OP_R,   ADDRMETH_II | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "shl", "",   0,   1,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_SHR,  0,   ADDRMETH_E | OPTYPE_v | OP_W | OP_R,   ADDRMETH_II | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "shr", "",   0,   1,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_SHL,  0,   ADDRMETH_E | OPTYPE_v | OP_W | OP_R,   ADDRMETH_II | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "sal", "",   0,   1,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_SHR,  0,   ADDRMETH_E | OPTYPE_v | OP_W | OP_R,   ADDRMETH_II | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "sar", "",   0,   1,   0   ,  INS_SET_ALL, 0 }
+};
+
+
+static ia32_insn_t tbl_D2[] = {	/* Group 2e */
+	 { 0,   INS_ROL,  0,   ADDRMETH_E | OPTYPE_b | OP_W | OP_R,   ADDRMETH_RR | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "rol", "",   0,   1,   0,  INS_SET_CARRY|INS_SET_OFLOW, 0 },
+	 { 0,   INS_ROR,  0,   ADDRMETH_E | OPTYPE_b | OP_W | OP_R,   ADDRMETH_RR | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "ror", "",   0,   1,   0,  INS_SET_CARRY|INS_SET_OFLOW, 0 },
+	 { 0,   INS_ROL,  0,   ADDRMETH_E | OPTYPE_b | OP_W | OP_R,   ADDRMETH_RR | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "rcl", "",   0,   1,   0,  INS_SET_CARRY|INS_SET_OFLOW|INS_TEST_CARRY, 0 },
+	 { 0,   INS_ROR,  0,   ADDRMETH_E | OPTYPE_b | OP_W | OP_R,   ADDRMETH_RR | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "rcr", "",   0,   1,   0,  INS_SET_CARRY|INS_SET_OFLOW|INS_TEST_CARRY, 0 },
+	 { 0,   INS_SHL,  0,   ADDRMETH_E | OPTYPE_b | OP_W | OP_R,   ADDRMETH_RR | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "shl", "",   0,   1,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_SHR,  0,   ADDRMETH_E | OPTYPE_b | OP_W | OP_R,   ADDRMETH_RR | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "shr", "",   0,   1,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_SHL,  0,   ADDRMETH_E | OPTYPE_b | OP_W | OP_R,   ADDRMETH_RR | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "sal", "",   0,   1,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_SHR,  0,   ADDRMETH_E | OPTYPE_b | OP_W | OP_R,   ADDRMETH_RR | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "sar", "",   0,   1,   0   ,  INS_SET_ALL, 0 }
+};
+
+
+static ia32_insn_t tbl_D3[] = {	/* Group 2f */
+	 { 0,   INS_ROL,  0,   ADDRMETH_E | OPTYPE_v | OP_W | OP_R,   ADDRMETH_RR | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "rol", "",   0,   1,   0,  INS_SET_CARRY|INS_SET_OFLOW, 0 },
+	 { 0,   INS_ROR,  0,   ADDRMETH_E | OPTYPE_v | OP_W | OP_R,   ADDRMETH_RR | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "ror", "",   0,   1,   0,  INS_SET_CARRY|INS_SET_OFLOW, 0 },
+	 { 0,   INS_ROL,  0,   ADDRMETH_E | OPTYPE_v | OP_W | OP_R,   ADDRMETH_RR | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "rcl", "",   0,   1,   0,  INS_SET_CARRY|INS_SET_OFLOW|INS_TEST_CARRY, 0 },
+	 { 0,   INS_ROR,  0,   ADDRMETH_E | OPTYPE_v | OP_W | OP_R,   ADDRMETH_RR | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "rcr", "",   0,   1,   0,  INS_SET_CARRY|INS_SET_OFLOW|INS_TEST_CARRY, 0 },
+	 { 0,   INS_SHL,  0,   ADDRMETH_E | OPTYPE_v | OP_W | OP_R,   ADDRMETH_RR | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "shl", "",   0,   1,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_SHR,  0,   ADDRMETH_E | OPTYPE_v | OP_W | OP_R,   ADDRMETH_RR | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "shr", "",   0,   1,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_SHL,  0,   ADDRMETH_E | OPTYPE_v | OP_W | OP_R,   ADDRMETH_RR | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "sal", "",   0,   1,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_SHR,  0,   ADDRMETH_E | OPTYPE_v | OP_W | OP_R,   ADDRMETH_RR | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "sar", "",   0,   1,   0   ,  INS_SET_ALL, 0 }
+};
+
+
+static ia32_insn_t tbl_F6[] = {	/* Group 3a */
+	 { 0,   INS_TEST,  0,   ADDRMETH_E | OPTYPE_b | OP_R,   ADDRMETH_I | OPTYPE_b | OP_SIGNED | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "test", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_TEST,  0,   ADDRMETH_E | OPTYPE_b | OP_R,   ADDRMETH_I | OPTYPE_b | OP_SIGNED | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "test", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_NOT,  0,   ADDRMETH_E | OPTYPE_b | OP_W | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "not", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_NEG,  0,   ADDRMETH_E | OPTYPE_b | OP_W | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "neg", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_MUL,  0,   OPTYPE_b | ADDRMETH_RR | OP_W | OP_R,   ADDRMETH_E | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "mul", "",   0,   0,   0,  INS_SET_OFLOW|INS_SET_CARRY, 22 },
+	 { 0,   INS_MUL,  0,   OPTYPE_b | ADDRMETH_RR | OP_W | OP_SIGNED | OP_R,   ADDRMETH_E | OPTYPE_b | OP_SIGNED | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "imul", "",   0,   0,   0,  INS_SET_OFLOW|INS_SET_CARRY, 22 },
+	 { 0,   INS_DIV,  0,   ADDRMETH_RR | OPTYPE_b | OP_W | OP_R,   ADDRMETH_E | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "div", "",   0,   0,   0,  0 , 13 },
+	 { 0,   INS_DIV,  0,   ADDRMETH_RR | OPTYPE_b | OP_W | OP_R,   ADDRMETH_E | OPTYPE_b | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "idiv", "",   0,   0,   0   ,  0 , 13 }
+};
+
+
+static ia32_insn_t tbl_F7[] = {	/* Group 3b */
+	 { 0,   INS_TEST,  0,   ADDRMETH_E | OPTYPE_v | OP_R,   ADDRMETH_I | OPTYPE_v | OP_SIGNED | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "test", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_TEST,  0,   ADDRMETH_E | OPTYPE_v | OP_R,   ADDRMETH_I | OPTYPE_v | OP_SIGNED | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "test", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_NOT,  0,   ADDRMETH_E | OPTYPE_v | OP_W | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "not", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_NEG,  0,   ADDRMETH_E | OPTYPE_v | OP_W | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "neg", "",   0,   0,   0,  INS_SET_ALL, 0 },
+	 { 0,   INS_MUL,  0,   ADDRMETH_RR | OPTYPE_v | OP_W | OP_R,   ADDRMETH_E | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "mul", "",   0,   0,   0,  INS_SET_OFLOW|INS_SET_CARRY, 23 },
+	 { 0,   INS_MUL,  0,   ADDRMETH_RR | OPTYPE_v | OP_SIGNED | OP_W | OP_R,   ADDRMETH_E | OPTYPE_v | OP_SIGNED | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "imul", "",   0,   0,   0,  INS_SET_OFLOW|INS_SET_CARRY, 23 },
+	 { 0,   INS_DIV,  0,   ADDRMETH_RR | OPTYPE_v | OP_W | OP_R,   ADDRMETH_E | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "div", "",   0,   0,   0,  0 , 14 },
+	 { 0,   INS_DIV,  0,   ADDRMETH_RR | OPTYPE_v | OP_W | OP_R,   ADDRMETH_E | OPTYPE_v | OP_R,   ARG_NONE,   cpu_80386 | isa_GP,   "idiv", "",   0,   0,   0,  0 , 14 }
+};
+
+
+static ia32_insn_t tbl_FE[] = {	/* Group 4 */
+	 { 0,   INS_INC,  0,   ADDRMETH_E | OPTYPE_b | OP_W | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "inc", "",   0,   0,   0,  INS_SET_OFLOW|INS_SET_SIGN|INS_SET_ZERO|INS_SET_PARITY, 0 },
+	 { 0,   INS_DEC,  0,   ADDRMETH_E | OPTYPE_b | OP_W | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "dec", "",   0,   0,   0   ,  INS_SET_OFLOW|INS_SET_SIGN|INS_SET_ZERO|INS_SET_PARITY, 0 }
+};
+
+
+static ia32_insn_t tbl_FF[] = {	/* Group 5 */
+	 { 0,   INS_INC,  0,   ADDRMETH_E | OPTYPE_v | OP_W | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "inc", "",   0,   0,   0,  INS_SET_OFLOW|INS_SET_SIGN|INS_SET_ZERO|INS_SET_PARITY, 0 },
+	 { 0,   INS_DEC,  0,   ADDRMETH_E | OPTYPE_v | OP_W | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "dec", "",   0,   0,   0,  INS_SET_OFLOW|INS_SET_SIGN|INS_SET_ZERO|INS_SET_PARITY, 0 },
+	 { 0,   INS_CALL,  0,   ADDRMETH_E | OPTYPE_v | OP_X,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "call", "",   0,   0,   0,  0 , 3 },
+	 { 0,   INS_CALL,  0,   ADDRMETH_M | OPTYPE_p | OP_X,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "call", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_BRANCH,  0,   ADDRMETH_E | OPTYPE_v | OP_X,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "jmp", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_BRANCH,  0,   ADDRMETH_M | OPTYPE_p | OP_X,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "jmp", "",   0,   0,   0,  0 , 0 },
+	 { 0,   INS_PUSH,  0,   ADDRMETH_E | OPTYPE_v | OP_R,   ARG_NONE,   ARG_NONE,   cpu_80386 | isa_GP,   "push", "",   0,   0,   0,  0 , 33 }
+};
+
+
+static ia32_insn_t tbl_D8[] = {	/* FPU D8 */
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_fs|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fadd", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_fs|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fmul", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_fs|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcom", "",  0,  0,  0 ,  INS_SET_ZERO|INS_SET_PARITY|INS_SET_CARRY, 17 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_fs|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcomp", "",  0,  0,  0 ,  INS_SET_ZERO|INS_SET_PARITY|INS_SET_CARRY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_fs|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsub", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_fs|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsubr", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_fs|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdiv", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_fs|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdivr", "",  0,  0,  0 ,  0 , 0 }
+};
+
+
+static ia32_insn_t tbl_D8C0[] = {	/* FPU D8 C0 */
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fadd", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fadd", "",  0,  1,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fadd", "",  0,  2,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fadd", "",  0,  3,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fadd", "",  0,  4,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fadd", "",  0,  5,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fadd", "",  0,  6,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fadd", "",  0,  7,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fmul", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fmul", "",  0,  1,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fmul", "",  0,  2,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fmul", "",  0,  3,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fmul", "",  0,  4,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fmul", "",  0,  5,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fmul", "",  0,  6,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fmul", "",  0,  7,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcom", "",  0,  0,  0 ,  INS_SET_ZERO|INS_SET_PARITY|INS_SET_CARRY, 17 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcom", "",  0,  1,  0 ,  INS_SET_ZERO|INS_SET_PARITY|INS_SET_CARRY, 17 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcom", "",  0,  2,  0 ,  INS_SET_ZERO|INS_SET_PARITY|INS_SET_CARRY, 17 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcom", "",  0,  3,  0 ,  INS_SET_ZERO|INS_SET_PARITY|INS_SET_CARRY, 17 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcom", "",  0,  4,  0 ,  INS_SET_ZERO|INS_SET_PARITY|INS_SET_CARRY, 17 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcom", "",  0,  5,  0 ,  INS_SET_ZERO|INS_SET_PARITY|INS_SET_CARRY, 17 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcom", "",  0,  6,  0 ,  INS_SET_ZERO|INS_SET_PARITY|INS_SET_CARRY, 17 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcom", "",  0,  7,  0 ,  INS_SET_ZERO|INS_SET_PARITY|INS_SET_CARRY, 17 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcomp", "",  0,  0,  0 ,  INS_SET_ZERO|INS_SET_PARITY|INS_SET_CARRY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcomp", "",  0,  1,  0 ,  INS_SET_ZERO|INS_SET_PARITY|INS_SET_CARRY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcomp", "",  0,  2,  0 ,  INS_SET_ZERO|INS_SET_PARITY|INS_SET_CARRY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcomp", "",  0,  3,  0 ,  INS_SET_ZERO|INS_SET_PARITY|INS_SET_CARRY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcomp", "",  0,  4,  0 ,  INS_SET_ZERO|INS_SET_PARITY|INS_SET_CARRY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcomp", "",  0,  5,  0 ,  INS_SET_ZERO|INS_SET_PARITY|INS_SET_CARRY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcomp", "",  0,  6,  0 ,  INS_SET_ZERO|INS_SET_PARITY|INS_SET_CARRY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcomp", "",  0,  7,  0 ,  INS_SET_ZERO|INS_SET_PARITY|INS_SET_CARRY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsub", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsub", "",  0,  1,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsub", "",  0,  2,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsub", "",  0,  3,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsub", "",  0,  4,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsub", "",  0,  5,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsub", "",  0,  6,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsub", "",  0,  7,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsubr", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsubr", "",  0,  1,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsubr", "",  0,  2,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsubr", "",  0,  3,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsubr", "",  0,  4,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsubr", "",  0,  5,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsubr", "",  0,  6,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsubr", "",  0,  7,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdiv", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdiv", "",  0,  1,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdiv", "",  0,  2,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdiv", "",  0,  3,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdiv", "",  0,  4,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdiv", "",  0,  5,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdiv", "",  0,  6,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdiv", "",  0,  7,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdivr", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdivr", "",  0,  1,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdivr", "",  0,  2,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdivr", "",  0,  3,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdivr", "",  0,  4,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdivr", "",  0,  5,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdivr", "",  0,  6,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdivr", "",  0,  7,  0 ,  0 , 0 }
+};
+
+
+static ia32_insn_t tbl_D9[] = {	/* FPU D9 */
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_fs|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fld", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_fs|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fst", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_fs|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fstp", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_fv|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fldenv", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_w|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fldcw", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_fv|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fnstenv", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_w|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fnstcw", "",  0,  0,  0 ,  0 , 0 }
+};
+
+
+static ia32_insn_t tbl_D9C0[] = {	/* FPU D9 C0 */
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fld", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fld", "",  0,  1,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fld", "",  0,  2,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fld", "",  0,  3,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fld", "",  0,  4,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fld", "",  0,  5,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fld", "",  0,  6,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fld", "",  0,  7,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fxch", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fxch", "",  0,  1,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fxch", "",  0,  2,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fxch", "",  0,  3,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fxch", "",  0,  4,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fxch", "",  0,  5,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fxch", "",  0,  6,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fxch", "",  0,  7,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fnop", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fchs", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fabs", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "ftst", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fxam", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fld1", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fldl2t", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fldl2e", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fldpi", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fldlg2", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fldln2", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fldz", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "f2xm1", "",  0,  0,  0 ,  0 , 16 },
+	 { 0,  INS_FPU,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fyl2x", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fptan", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fpatan", "",  0,  0,  0 ,  0 , 18 },
+	 { 0,  INS_FPU,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fxtract", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fprem1", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdecstp", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fincstp", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fprem", "",  0,  0,  0 ,  0 , 19 },
+	 { 0,  INS_FPU,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fyl2xp1", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsqrt", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsincos", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "frndint", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fscale", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsin", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcos", "",  0,  0,  0 ,  0 , 0 }
+};
+
+
+static ia32_insn_t tbl_DA[] = {	/* FPU DA */
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_d|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fiadd", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_d|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fimul", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_d|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "ficom", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_d|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "ficomp", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_d|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fisub", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_d|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fisubr", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_d|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fidiv", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_d|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fidivr", "",  0,  0,  0 ,  0 , 0 }
+};
+
+
+static ia32_insn_t tbl_DAC0[] = {	/* FPU DA C0 */
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_PENTPRO | isa_GP,  "fcmovb", "",  0,  0,  0 ,  INS_TEST_CARRY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_PENTPRO | isa_GP,  "fcmovb", "",  0,  1,  0 ,  INS_TEST_CARRY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_PENTPRO | isa_GP,  "fcmovb", "",  0,  2,  0 ,  INS_TEST_CARRY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_PENTPRO | isa_GP,  "fcmovb", "",  0,  3,  0 ,  INS_TEST_CARRY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_PENTPRO | isa_GP,  "fcmovb", "",  0,  4,  0 ,  INS_TEST_CARRY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_PENTPRO | isa_GP,  "fcmovb", "",  0,  5,  0 ,  INS_TEST_CARRY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_PENTPRO | isa_GP,  "fcmovb", "",  0,  6,  0 ,  INS_TEST_CARRY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_PENTPRO | isa_GP,  "fcmovb", "",  0,  7,  0 ,  INS_TEST_CARRY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_PENTPRO | isa_GP,  "fcmove", "",  0,  0,  0 ,  INS_TEST_ZERO, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_PENTPRO | isa_GP,  "fcmove", "",  0,  1,  0 ,  INS_TEST_ZERO, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_PENTPRO | isa_GP,  "fcmove", "",  0,  2,  0 ,  INS_TEST_ZERO, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_PENTPRO | isa_GP,  "fcmove", "",  0,  3,  0 ,  INS_TEST_ZERO, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_PENTPRO | isa_GP,  "fcmove", "",  0,  4,  0 ,  INS_TEST_ZERO, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_PENTPRO | isa_GP,  "fcmove", "",  0,  5,  0 ,  INS_TEST_ZERO, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_PENTPRO | isa_GP,  "fcmove", "",  0,  6,  0 ,  INS_TEST_ZERO, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_PENTPRO | isa_GP,  "fcmove", "",  0,  7,  0 ,  INS_TEST_ZERO, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_PENTPRO | isa_GP,  "fcmovbe", "",  0,  0,  0 ,  INS_TEST_CARRY|INS_TEST_OR|INS_TEST_ZERO, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_PENTPRO | isa_GP,  "fcmovbe", "",  0,  1,  0 ,  INS_TEST_CARRY|INS_TEST_OR|INS_TEST_ZERO, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_PENTPRO | isa_GP,  "fcmovbe", "",  0,  2,  0 ,  INS_TEST_CARRY|INS_TEST_OR|INS_TEST_ZERO, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_PENTPRO | isa_GP,  "fcmovbe", "",  0,  3,  0 ,  INS_TEST_CARRY|INS_TEST_OR|INS_TEST_ZERO, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_PENTPRO | isa_GP,  "fcmovbe", "",  0,  4,  0 ,  INS_TEST_CARRY|INS_TEST_OR|INS_TEST_ZERO, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_PENTPRO | isa_GP,  "fcmovbe", "",  0,  5,  0 ,  INS_TEST_CARRY|INS_TEST_OR|INS_TEST_ZERO, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_PENTPRO | isa_GP,  "fcmovbe", "",  0,  6,  0 ,  INS_TEST_CARRY|INS_TEST_OR|INS_TEST_ZERO, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_PENTPRO | isa_GP,  "fcmovbe", "",  0,  7,  0 ,  INS_TEST_CARRY|INS_TEST_OR|INS_TEST_ZERO, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_PENTPRO | isa_GP,  "fcmovu", "",  0,  0,  0 ,  INS_TEST_PARITY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_PENTPRO | isa_GP,  "fcmovu", "",  0,  1,  0 ,  INS_TEST_PARITY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_PENTPRO | isa_GP,  "fcmovu", "",  0,  2,  0 ,  INS_TEST_PARITY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_PENTPRO | isa_GP,  "fcmovu", "",  0,  3,  0 ,  INS_TEST_PARITY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_PENTPRO | isa_GP,  "fcmovu", "",  0,  4,  0 ,  INS_TEST_PARITY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_PENTPRO | isa_GP,  "fcmovu", "",  0,  5,  0 ,  INS_TEST_PARITY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_PENTPRO | isa_GP,  "fcmovu", "",  0,  6,  0 ,  INS_TEST_PARITY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_PENTPRO | isa_GP,  "fcmovu", "",  0,  7,  0 ,  INS_TEST_PARITY, 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fucompp", "",  0,  0,  0 ,  0 , 21 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 }
+};
+
+
+static ia32_insn_t tbl_DB[] = {	/* FPU DB */
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_d|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fild", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_FPU,  0, ADDRMETH_M|OPTYPE_d|OP_W, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "fisttp", "", 0, 0, 0, 0, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_d|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fist", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_d|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fistp", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_fe|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fld", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_fe|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fstp", "",  0,  0,  0 ,  0 , 0 }
+};
+
+
+static ia32_insn_t tbl_DBC0[] = {	/* FPU DB C0 */
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcmovnb", "",  0,  0,  0 ,  INS_TEST_NCARRY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcmovnb", "",  0,  1,  0 ,  INS_TEST_NCARRY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcmovnb", "",  0,  2,  0 ,  INS_TEST_NCARRY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcmovnb", "",  0,  3,  0 ,  INS_TEST_NCARRY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcmovnb", "",  0,  4,  0 ,  INS_TEST_NCARRY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcmovnb", "",  0,  5,  0 ,  INS_TEST_NCARRY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcmovnb", "",  0,  6,  0 ,  INS_TEST_NCARRY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcmovnb", "",  0,  7,  0 ,  INS_TEST_NCARRY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcmovne", "",  0,  0,  0 ,  INS_TEST_NZERO, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcmovne", "",  0,  1,  0 ,  INS_TEST_NZERO, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcmovne", "",  0,  2,  0 ,  INS_TEST_NZERO, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcmovne", "",  0,  3,  0 ,  INS_TEST_NZERO, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcmovne", "",  0,  4,  0 ,  INS_TEST_NZERO, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcmovne", "",  0,  5,  0 ,  INS_TEST_NZERO, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcmovne", "",  0,  6,  0 ,  INS_TEST_NZERO, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcmovne", "",  0,  7,  0 ,  INS_TEST_NZERO, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcmovnbe", "",  0,  0,  0 ,  INS_TEST_NCARRY|INS_TEST_NZERO, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcmovnbe", "",  0,  1,  0 ,  INS_TEST_NCARRY|INS_TEST_NZERO, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcmovnbe", "",  0,  2,  0 ,  INS_TEST_NCARRY|INS_TEST_NZERO, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcmovnbe", "",  0,  3,  0 ,  INS_TEST_NCARRY|INS_TEST_NZERO, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcmovnbe", "",  0,  4,  0 ,  INS_TEST_NCARRY|INS_TEST_NZERO, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcmovnbe", "",  0,  5,  0 ,  INS_TEST_NCARRY|INS_TEST_NZERO, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcmovnbe", "",  0,  6,  0 ,  INS_TEST_NCARRY|INS_TEST_NZERO, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcmovnbe", "",  0,  7,  0 ,  INS_TEST_NCARRY|INS_TEST_NZERO, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcmovnu", "",  0,  0,  0 ,  INS_TEST_NPARITY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcmovnu", "",  0,  1,  0 ,  INS_TEST_NPARITY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcmovnu", "",  0,  2,  0 ,  INS_TEST_NPARITY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcmovnu", "",  0,  3,  0 ,  INS_TEST_NPARITY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcmovnu", "",  0,  4,  0 ,  INS_TEST_NPARITY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcmovnu", "",  0,  5,  0 ,  INS_TEST_NPARITY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcmovnu", "",  0,  6,  0 ,  INS_TEST_NPARITY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcmovnu", "",  0,  7,  0 ,  INS_TEST_NPARITY, 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fnclex", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fninit", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fucomi", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fucomi", "",  0,  1,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fucomi", "",  0,  2,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fucomi", "",  0,  3,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fucomi", "",  0,  4,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fucomi", "",  0,  5,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fucomi", "",  0,  6,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fucomi", "",  0,  7,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_PENTPRO | isa_GP,  "fcomi", "",  0,  0,  0 ,  INS_SET_ZERO|INS_SET_PARITY|INS_SET_CARRY,  0,  },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_PENTPRO | isa_GP,  "fcomi", "",  0,  1,  0 ,  INS_SET_ZERO|INS_SET_PARITY|INS_SET_CARRY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_PENTPRO | isa_GP,  "fcomi", "",  0,  2,  0 ,  INS_SET_ZERO|INS_SET_PARITY|INS_SET_CARRY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_PENTPRO | isa_GP,  "fcomi", "",  0,  3,  0 ,  INS_SET_ZERO|INS_SET_PARITY|INS_SET_CARRY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_PENTPRO | isa_GP,  "fcomi", "",  0,  4,  0 ,  INS_SET_ZERO|INS_SET_PARITY|INS_SET_CARRY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_PENTPRO | isa_GP,  "fcomi", "",  0,  5,  0 ,  INS_SET_ZERO|INS_SET_PARITY|INS_SET_CARRY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_PENTPRO | isa_GP,  "fcomi", "",  0,  6,  0 ,  INS_SET_ZERO|INS_SET_PARITY|INS_SET_CARRY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_PENTPRO | isa_GP,  "fcomi", "",  0,  7,  0 ,  INS_SET_ZERO|INS_SET_PARITY|INS_SET_CARRY, 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 }
+};
+
+
+static ia32_insn_t tbl_DC[] = {	/* FPU DC */
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_fd|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fadd", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_fd|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fmul", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_fd|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcom", "",  0,  0,  0 ,  INS_SET_ZERO|INS_SET_PARITY|INS_SET_CARRY, 17 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_fd|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcomp", "",  0,  0,  0 ,  INS_SET_ZERO|INS_SET_PARITY|INS_SET_CARRY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_fd|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsub", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_fd|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsubr", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_fd|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdiv", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_fd|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdivr", "",  0,  0,  0,  0 , 0 }
+};
+
+
+static ia32_insn_t tbl_DCC0[] = {	/* FPU DC C0 */
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fadd", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fadd", "",  1,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fadd", "",  2,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fadd", "",  3,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fadd", "",  4,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fadd", "",  5,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fadd", "",  6,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fadd", "",  7,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fmul", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fmul", "",  1,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fmul", "",  2,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fmul", "",  3,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fmul", "",  4,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fmul", "",  5,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fmul", "",  6,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fmul", "",  7,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsubr", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsubr", "",  1,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsubr", "",  2,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsubr", "",  3,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsubr", "",  4,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsubr", "",  5,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsubr", "",  6,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsubr", "",  7,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsub", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsub", "",  1,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsub", "",  2,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsub", "",  3,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsub", "",  4,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsub", "",  5,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsub", "",  6,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsub", "",  7,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdivr", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdivr", "",  1,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdivr", "",  2,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdivr", "",  3,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdivr", "",  4,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdivr", "",  5,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdivr", "",  6,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdivr", "",  7,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdiv", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdiv", "",  1,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdiv", "",  2,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdiv", "",  3,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdiv", "",  4,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdiv", "",  5,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdiv", "",  6,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdiv", "",  7,  0,  0 ,  0 , 0 }
+};
+
+
+static ia32_insn_t tbl_DD[] = {	/* FPU DD */
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_fd|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fld", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_FPU,  0, ADDRMETH_M|OPTYPE_q|OP_W, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "fisttp", "", 0, 0, 0, 0, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_fd|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fst", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_fd|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fstp", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_ft|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "frstor", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_ft|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fnsave", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_w|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fnstsw", "",  0,  0,  0 ,  0 , 0 }
+};
+
+
+static ia32_insn_t tbl_DDC0[] = {	/* FPU DD C0 */
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "ffree", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "ffree", "",  1,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "ffree", "",  2,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "ffree", "",  3,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "ffree", "",  4,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "ffree", "",  5,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "ffree", "",  6,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "ffree", "",  7,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fst", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fst", "",  1,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fst", "",  2,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fst", "",  3,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fst", "",  4,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fst", "",  5,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fst", "",  6,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fst", "",  7,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fstp", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fstp", "",  1,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fstp", "",  2,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fstp", "",  3,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fstp", "",  4,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fstp", "",  5,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fstp", "",  6,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fstp", "",  7,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fucom", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fucom", "",  1,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fucom", "",  2,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fucom", "",  3,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fucom", "",  4,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fucom", "",  5,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fucom", "",  6,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fucom", "",  7,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fucomp", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fucomp", "",  1,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fucomp", "",  2,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fucomp", "",  3,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fucomp", "",  4,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fucomp", "",  5,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fucomp", "",  6,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fucomp", "",  7,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 }
+};
+
+
+static ia32_insn_t tbl_DE[] = {	/* FPU DE */
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_w|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fiadd", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_w|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fimul", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_w|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "ficom", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_w|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "ficomp", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_w|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fisub", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_w|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fisubr", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_w|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fidiv", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_w|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fidivr", "",  0,  0,  0,  0 , 0 }
+};
+
+
+static ia32_insn_t tbl_DEC0[] = {	/* FPU DE C0 */
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "faddp", "",  0,  0,  0 ,  0 , 20 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "faddp", "",  1,  0,  0 ,  0 , 20 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "faddp", "",  2,  0,  0 ,  0 , 20 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "faddp", "",  3,  0,  0 ,  0 , 20 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "faddp", "",  4,  0,  0 ,  0 , 20 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "faddp", "",  5,  0,  0 ,  0 , 20 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "faddp", "",  6,  0,  0 ,  0 , 20 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "faddp", "",  7,  0,  0 ,  0 , 20 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fmulp", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fmulp", "",  1,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fmulp", "",  2,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fmulp", "",  3,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fmulp", "",  4,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fmulp", "",  5,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fmulp", "",  6,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fmulp", "",  7,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcompp", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsubrp", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsubrp", "",  1,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsubrp", "",  2,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsubrp", "",  3,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsubrp", "",  4,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsubrp", "",  5,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsubrp", "",  6,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsubrp", "",  7,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsubp", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsubp", "",  1,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsubp", "",  2,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsubp", "",  3,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsubp", "",  4,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsubp", "",  5,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsubp", "",  6,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fsubp", "",  7,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdivrp", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdivrp", "",  1,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdivrp", "",  2,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdivrp", "",  3,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdivrp", "",  4,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdivrp", "",  5,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdivrp", "",  6,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdivrp", "",  7,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdivp", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdivp", "",  1,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdivp", "",  2,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdivp", "",  3,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdivp", "",  4,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdivp", "",  5,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdivp", "",  6,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fdivp", "",  7,  0,  0 ,  0 , 0 }
+};
+
+
+static ia32_insn_t tbl_DF[] = {	/* FPU DF */
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_w|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fild", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_FPU,  0, ADDRMETH_M|OPTYPE_w|OP_W, ARG_NONE, ARG_NONE, cpu_PENTIUM4 | isa_GP, "fisttp", "", 0, 0, 0, 0, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_w|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fist", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_w|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fistp", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_fb|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fbld", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_q|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fild", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_fb|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fbstp", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_M|OPTYPE_q|OP_W,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fistp", "",  0,  0,  0 ,  0 , 0 }
+};
+
+
+static ia32_insn_t tbl_DFC0[] = {	/* FPU DF C0 */
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RR | OPTYPE_w | OP_R,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "fnstsw", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fucomip", "",  0,  0,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fucomip", "",  0,  1,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fucomip", "",  0,  2,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fucomip", "",  0,  3,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fucomip", "",  0,  4,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fucomip", "",  0,  5,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fucomip", "",  0,  6,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fucomip", "",  0,  7,  0 ,  0 , 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcomip", "",  0,  0,  0 ,  INS_SET_ZERO|INS_SET_PARITY|INS_SET_CARRY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcomip", "",  0,  1,  0 ,  INS_SET_ZERO|INS_SET_PARITY|INS_SET_CARRY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcomip", "",  0,  2,  0 ,  INS_SET_ZERO|INS_SET_PARITY|INS_SET_CARRY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcomip", "",  0,  3,  0 ,  INS_SET_ZERO|INS_SET_PARITY|INS_SET_CARRY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcomip", "",  0,  4,  0 ,  INS_SET_ZERO|INS_SET_PARITY|INS_SET_CARRY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcomip", "",  0,  5,  0 ,  INS_SET_ZERO|INS_SET_PARITY|INS_SET_CARRY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcomip", "",  0,  6,  0 ,  INS_SET_ZERO|INS_SET_PARITY|INS_SET_CARRY, 0 },
+	 { 0,  INS_FPU,  0,  ADDRMETH_RF | OPTYPE_fp | OP_W,  ADDRMETH_RF | OPTYPE_fp | OP_R,  ARG_NONE,  cpu_80387 | isa_FPU,  "fcomip", "",  0,  7,  0 ,  INS_SET_ZERO|INS_SET_PARITY|INS_SET_CARRY, 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 },
+	 { 0, INS_INVALID,  0,  ARG_NONE,  ARG_NONE,  ARG_NONE,  cpu_80387 | isa_FPU,  "", "",  0,  0,  0 ,  0 , 0 }
+};
+
+
+static ia32_insn_t tbl_0F0F[] = {	/* 3D Now! 0F Suffix */
+	/* 00 */ { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_CONV,  0, ADDRMETH_P | OPTYPE_pi | OP_R | OP_W, ADDRMETH_Q | OPTYPE_q |OP_R, ARG_NONE, cpu_K6 | isa_3DNOW, "pi2fd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	/* 10 */ { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_CONV,  0, ADDRMETH_P | OPTYPE_pi | OP_R | OP_W, ADDRMETH_Q | OPTYPE_q |OP_R, ARG_NONE, cpu_K6 | isa_3DNOW, "pf2id", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	/* 20 */ { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	/* 30 */ { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	/* 40 */ { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	/* 50 */ { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	/* 60 */ { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	/* 70 */ { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	/* 80 */ { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_CMP,  0, ADDRMETH_P | OPTYPE_pi | OP_R | OP_W, ADDRMETH_Q | OPTYPE_q |OP_R, ARG_NONE, cpu_K6 | isa_3DNOW, "pfcmpge", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_MIN,  0, ADDRMETH_P | OPTYPE_pi | OP_R | OP_W, ADDRMETH_Q | OPTYPE_q |OP_R, ARG_NONE, cpu_K6 | isa_3DNOW, "pfmin", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_ARITH,  0, ADDRMETH_P | OPTYPE_pi | OP_R | OP_W, ADDRMETH_Q | OPTYPE_q |OP_R, ARG_NONE, cpu_K6 | isa_3DNOW, "pfrcp", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_ARITH,  0, ADDRMETH_P | OPTYPE_pi | OP_R | OP_W, ADDRMETH_Q | OPTYPE_q |OP_R, ARG_NONE, cpu_K6 | isa_3DNOW, "pfrsqrt", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_SUB,  0, ADDRMETH_P | OPTYPE_pi | OP_R | OP_W, ADDRMETH_Q | OPTYPE_q |OP_R, ARG_NONE, cpu_K6 | isa_3DNOW, "pfsub", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_ADD,  0, ADDRMETH_P | OPTYPE_pi | OP_R | OP_W, ADDRMETH_Q | OPTYPE_q |OP_R, ARG_NONE, cpu_K6 | isa_3DNOW, "pfadd", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_CMP,  0, ADDRMETH_P | OPTYPE_pi | OP_R | OP_W, ADDRMETH_Q | OPTYPE_q |OP_R, ARG_NONE, cpu_K6 | isa_3DNOW, "pfcmpgt", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_MAX,  0, ADDRMETH_P | OPTYPE_pi | OP_R | OP_W, ADDRMETH_Q | OPTYPE_q |OP_R, ARG_NONE, cpu_K6 | isa_3DNOW, "pfmax", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_ARITH,  0, ADDRMETH_P | OPTYPE_pi | OP_R | OP_W, ADDRMETH_Q | OPTYPE_q |OP_R, ARG_NONE, cpu_K6 | isa_3DNOW, "pfrcpit1", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_ARITH,  0, ADDRMETH_P | OPTYPE_pi | OP_R | OP_W, ADDRMETH_Q | OPTYPE_q |OP_R, ARG_NONE, cpu_K6 | isa_3DNOW, "pfrsqit1", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_SUB,  0, ADDRMETH_P | OPTYPE_pi | OP_R | OP_W, ADDRMETH_Q | OPTYPE_q |OP_R, ARG_NONE, cpu_K6 | isa_3DNOW, "pfsubr", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_ADD,  0, ADDRMETH_P | OPTYPE_pi | OP_R | OP_W, ADDRMETH_Q | OPTYPE_q |OP_R, ARG_NONE, cpu_K6 | isa_3DNOW, "pfacc", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_CMP,  0, ADDRMETH_P | OPTYPE_pi | OP_R | OP_W, ADDRMETH_Q | OPTYPE_q |OP_R, ARG_NONE, cpu_K6 | isa_3DNOW, "pfcmpeq", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_MUL,  0, ADDRMETH_P | OPTYPE_pi | OP_R | OP_W, ADDRMETH_Q | OPTYPE_q |OP_R, ARG_NONE, cpu_K6 | isa_3DNOW, "pfmul", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_ARITH,  0, ADDRMETH_P | OPTYPE_pi | OP_R | OP_W, ADDRMETH_Q | OPTYPE_q |OP_R, ARG_NONE, cpu_K6 | isa_3DNOW, "pfrcpit2", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_MUL,  0, ADDRMETH_P | OPTYPE_pi | OP_R | OP_W, ADDRMETH_Q | OPTYPE_q |OP_R, ARG_NONE, cpu_K6 | isa_3DNOW, "pmulhrw", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_INVALID,  0, ARG_NONE, ARG_NONE, ARG_NONE, cpu_K6 | isa_3DNOW, "", "", 0, 0, 0, 0, 0 },
+	 { 0, INS_AVG,  0, ADDRMETH_P | OPTYPE_pi | OP_R | OP_W, ADDRMETH_Q | OPTYPE_q |OP_R, ARG_NONE, cpu_K6 | isa_3DNOW, "pavgusb", "", 0, 0, 0, 0, 0 }
+};
+
+
+
+/* ================== Table of Opcode Tables ================== */
+ia32_table_desc_t ia32_tables[] = {
+	/* table, prefix table, type, shift, mask, min, max */
+	{ tbl_Main, tbl_opcode, 0x00, 0xFF, 0x00, 0xFF },
+	{ tbl_66, tbl_prefix, 0x00, 0xFF, 0x0F, 0x0F },
+	{ tbl_F2, tbl_prefix, 0x00, 0xFF, 0x0F, 0x0F },
+	{ tbl_F3, tbl_prefix, 0x00, 0xFF, 0x0F, 0x90 },
+	{ tbl_0F, tbl_opcode, 0x00, 0xFF, 0x00, 0xFF },
+	/* 5 */
+	{ tbl_660F, tbl_prefix, 0x00, 0xFF, 0x10, 0xFF },
+	{ tbl_F20F, tbl_prefix, 0x00, 0xFF, 0x10, 0xFF },
+	{ tbl_F30F, tbl_prefix, 0x00, 0xFF, 0x10, 0xFF },
+	{ tbl_0F00, tbl_extension, 0x03, 0x07, 0x00, 0x07 },
+	{ tbl_0F01, tbl_extension, 0x03, 0x1F, 0x00, 0x1F },
+	/* 10 */
+	{ tbl_0F0111, tbl_ext_ext, 0x00, 0x01, 0x00, 0x01 },
+	{ tbl_0F12, tbl_extension, 0x06, 0x03, 0x00, 0x03 },
+	{ tbl_0F16, tbl_extension, 0x06, 0x03, 0x00, 0x03 },
+	{ tbl_0F18, tbl_extension, 0x03, 0x1F, 0x00, 0x13 },
+	{ tbl_0F71, tbl_extension, 0x03, 0x1F, 0x00, 0x1F },
+	/* 15 */
+	{ tbl_660F71, tbl_extension, 0x03, 0x1F, 0x00, 0x1F },
+	{ tbl_0F72, tbl_extension, 0x03, 0x1F, 0x00, 0x1F },
+	{ tbl_660F72, tbl_extension, 0x03, 0x1F, 0x00, 0x1F },
+	{ tbl_0F73, tbl_extension, 0x00, 0x00, 0x00, 0x00 },
+	{ tbl_660F73, tbl_extension, 0x03, 0x1F, 0x00, 0x1F },
+	/* 20 */
+	{ tbl_0FAE, tbl_extension, 0x03, 0x1F, 0x00, 0x1F },
+	{ tbl_0FBA, tbl_extension, 0x03, 0x07, 0x04, 0x07 },
+	{ tbl_0FC7, tbl_extension, 0x03, 0x1F, 0x00, 0x11 },
+	{ tbl_0FB9, tbl_extension, 0x03, 0x07, 0x00, 0x00 },
+	{ tbl_C6, tbl_extension, 0x03, 0x07, 0x00, 0x00 },
+	/* 25 */
+	{ tbl_C7, tbl_extension, 0x03, 0x07, 0x00, 0x00 },
+	{ tbl_80, tbl_extension, 0x03, 0x07, 0x00, 0x07 },
+	{ tbl_81, tbl_extension, 0x03, 0x07, 0x00, 0x07 },
+	{ tbl_82, tbl_extension, 0x03, 0x07, 0x00, 0x07 },
+	{ tbl_83, tbl_extension, 0x03, 0x07, 0x00, 0x07 },
+	/* 30 */
+	{ tbl_C0, tbl_extension, 0x03, 0x07, 0x00, 0x07 },
+	{ tbl_C1, tbl_extension, 0x03, 0x07, 0x00, 0x07 },
+	{ tbl_D0, tbl_extension, 0x03, 0x07, 0x00, 0x07 },
+	{ tbl_D1, tbl_extension, 0x03, 0x07, 0x00, 0x07 },
+	{ tbl_D2, tbl_extension, 0x03, 0x07, 0x00, 0x07 },
+	/* 35 */
+	{ tbl_D3, tbl_extension, 0x03, 0x07, 0x00, 0x07 },
+	{ tbl_F6, tbl_extension, 0x03, 0x07, 0x00, 0x07 },
+	{ tbl_F7, tbl_extension, 0x03, 0x07, 0x00, 0x07 },
+	{ tbl_FE, tbl_extension, 0x03, 0x07, 0x00, 0x01 },
+	{ tbl_FF, tbl_extension, 0x03, 0x07, 0x00, 0x06 },
+	/* 40 */
+	{ tbl_D8, tbl_fpu, 0x03, 0x07, 0x00, 0xBF },
+	{ tbl_D8C0, tbl_fpu_ext, 0x00, 0xFF, 0xC0, 0xFF },
+	{ tbl_D9, tbl_fpu, 0x03, 0x07, 0x00, 0xBF },
+	{ tbl_D9C0, tbl_fpu_ext, 0x00, 0xFF, 0xC0, 0xFF },
+	{ tbl_DA, tbl_fpu, 0x03, 0x07, 0x00, 0xBF },
+	/* 45 */
+	{ tbl_DAC0, tbl_fpu_ext, 0x00, 0xFF, 0xC0, 0xFF },
+	{ tbl_DB, tbl_fpu, 0x03, 0x07, 0x00, 0xBF },
+	{ tbl_DBC0, tbl_fpu_ext, 0x00, 0xFF, 0xC0, 0xFF },
+	{ tbl_DC, tbl_fpu, 0x03, 0x07, 0x00, 0xBF },
+	{ tbl_DCC0, tbl_fpu_ext, 0x00, 0xFF, 0xC0, 0xFF },
+	/* 50 */
+	{ tbl_DD, tbl_fpu, 0x03, 0x07, 0x00, 0xBF },
+	{ tbl_DDC0, tbl_fpu_ext, 0x00, 0xFF, 0xC0, 0xFF },
+	{ tbl_DE, tbl_fpu, 0x03, 0x07, 0x00, 0xBF },
+	{ tbl_DEC0, tbl_fpu_ext, 0x00, 0xFF, 0xC0, 0xFF },
+	{ tbl_DF, tbl_fpu, 0x03, 0x07, 0x00, 0xBF },
+	/* 55 */
+	{ tbl_DFC0, tbl_fpu_ext, 0x00, 0xFF, 0xC0, 0xFF },
+	{ tbl_0F0F, tbl_suffix, 0x00, 0xFF, 0x00, 0xBF }
+};
+/* ia32_opcode_tables.h */
+/* Table index constants: 
+#define idx_Main 0
+#define idx_66 1
+#define idx_F2 2
+#define idx_F3 3
+#define idx_0F 4
+#define idx_660F 5
+#define idx_F20F 6
+#define idx_F30F 7
+#define idx_0F00 8
+#define idx_0F01 9
+#define idx_0F0111 10
+#define idx_0F12 11
+#define idx_0F16 12
+#define idx_0F18 13
+#define idx_0F71 14
+#define idx_660F71 15
+#define idx_0F72 16
+#define idx_660F72 17
+#define idx_0F73 18
+#define idx_660F73 19
+#define idx_0FAE 20
+#define idx_0FBA 21
+#define idx_0FC7 22
+#define idx_0FB9 23
+#define idx_C6 24
+#define idx_C7 25
+#define idx_80 26
+#define idx_81 27
+#define idx_82 28
+#define idx_83 29
+#define idx_C0 30
+#define idx_C1 31
+#define idx_D0 32
+#define idx_D1 33
+#define idx_D2 34
+#define idx_D3 35
+#define idx_F6 36
+#define idx_F7 37
+#define idx_FE 38
+#define idx_FF 39
+#define idx_D8 40
+#define idx_D8C0 41
+#define idx_D9 42
+#define idx_D9C0 43
+#define idx_DA 44
+#define idx_DAC0 45
+#define idx_DB 46
+#define idx_DBC0 47
+#define idx_DC 48
+#define idx_DCC0 49
+#define idx_DD 50
+#define idx_DDC0 51
+#define idx_DE 52
+#define idx_DEC0 53
+#define idx_DF 54
+#define idx_DFC0 55
+#define idx_0F0F 56
+*/ 
diff --git a/google-breakpad/src/third_party/libdisasm/ia32_opcode_tables.h b/google-breakpad/src/third_party/libdisasm/ia32_opcode_tables.h
new file mode 100644
index 0000000..bbd4fae
--- /dev/null
+++ b/google-breakpad/src/third_party/libdisasm/ia32_opcode_tables.h
@@ -0,0 +1,57 @@
+#define idx_Main 0
+#define idx_66 1
+#define idx_F2 2
+#define idx_F3 3
+#define idx_0F 4
+#define idx_660F 5
+#define idx_F20F 6
+#define idx_F30F 7
+#define idx_0F00 8
+#define idx_0F01 9
+#define idx_0F0111 10
+#define idx_0F12 11
+#define idx_0F16 12
+#define idx_0F18 13
+#define idx_0F71 14
+#define idx_660F71 15
+#define idx_0F72 16
+#define idx_660F72 17
+#define idx_0F73 18
+#define idx_660F73 19
+#define idx_0FAE 20
+#define idx_0FBA 21
+#define idx_0FC7 22
+#define idx_0FB9 23
+#define idx_C6 24
+#define idx_C7 25
+#define idx_80 26
+#define idx_81 27
+#define idx_82 28
+#define idx_83 29
+#define idx_C0 30
+#define idx_C1 31
+#define idx_D0 32
+#define idx_D1 33
+#define idx_D2 34
+#define idx_D3 35
+#define idx_F6 36
+#define idx_F7 37
+#define idx_FE 38
+#define idx_FF 39
+#define idx_D8 40
+#define idx_D8C0 41
+#define idx_D9 42
+#define idx_D9C0 43
+#define idx_DA 44
+#define idx_DAC0 45
+#define idx_DB 46
+#define idx_DBC0 47
+#define idx_DC 48
+#define idx_DCC0 49
+#define idx_DD 50
+#define idx_DDC0 51
+#define idx_DE 52
+#define idx_DEC0 53
+#define idx_DF 54
+#define idx_DFC0 55
+#define idx_0F0F 56
diff --git a/google-breakpad/src/third_party/libdisasm/ia32_operand.c b/google-breakpad/src/third_party/libdisasm/ia32_operand.c
new file mode 100644
index 0000000..8e7f16a
--- /dev/null
+++ b/google-breakpad/src/third_party/libdisasm/ia32_operand.c
@@ -0,0 +1,425 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "libdis.h"
+#include "ia32_insn.h"
+#include "ia32_operand.h"
+#include "ia32_modrm.h"
+#include "ia32_reg.h"
+#include "x86_imm.h"
+#include "x86_operand_list.h"
+
+
+
+/* apply segment override to memory operand in insn */
+static void apply_seg( x86_op_t *op, unsigned int prefixes ) {
+	if (! prefixes ) return;
+
+	/* apply overrides from prefix */
+	switch ( prefixes & PREFIX_REG_MASK ) {
+		case PREFIX_CS:
+			op->flags |= op_cs_seg; break;
+		case PREFIX_SS:
+			op->flags |= op_ss_seg; break;
+		case PREFIX_DS:
+			op->flags |= op_ds_seg; break;
+		case PREFIX_ES:
+			op->flags |= op_es_seg; break;
+		case PREFIX_FS:
+			op->flags |= op_fs_seg; break;
+		case PREFIX_GS:
+			op->flags |= op_gs_seg; break;
+	}
+
+	return;
+}
+
+static size_t decode_operand_value( unsigned char *buf, size_t buf_len,
+			    x86_op_t *op, x86_insn_t *insn, 
+			    unsigned int addr_meth, size_t op_size, 
+			    unsigned int op_value, unsigned char modrm, 
+			    size_t gen_regs ) {
+	size_t size = 0;
+
+	/* ++ Do Operand Addressing Method / Decode operand ++ */
+	switch (addr_meth) {
+		/* This sets the operand Size based on the Intel Opcode Map
+		 * (Vol 2, Appendix A). Letter encodings are from section
+		 * A.1.1, 'Codes for Addressing Method' */
+
+		/* ---------------------- Addressing Method -------------- */
+		/* Note that decoding mod ModR/M operand adjusts the size of
+		 * the instruction, but decoding the reg operand does not. 
+		 * This should not cause any problems, as every 'reg' operand 
+		 * has an associated 'mod' operand. 
+		 * Goddamn-Intel-Note:
+		 *   Some Intel addressing methods [M, R] specify that modR/M
+		 *   byte may only refer to a memory address/may only refer to
+		 *   a register -- however Intel provides no clues on what to do
+		 *   if, say, the modR/M for an M opcode decodes to a register
+		 *   rather than a memory address ... returning 0 is out of the
+		 *   question, as this would be an Immediate or a RelOffset, so
+		 *   instead these modR/Ms are decoded with total disregard to 
+		 *   the M, R constraints. */
+
+		/* MODRM -- mod operand. sets size to at least 1! */
+		case ADDRMETH_E:	/* ModR/M present, Gen reg or memory  */
+			size = ia32_modrm_decode( buf, buf_len, op, insn, 
+						  gen_regs );
+			break;
+		case ADDRMETH_M:	/* ModR/M only refers to memory */
+			size = ia32_modrm_decode( buf, buf_len, op, insn, 
+						  gen_regs );
+			break;
+		case ADDRMETH_Q:	/* ModR/M present, MMX or Memory */
+			size = ia32_modrm_decode( buf, buf_len, op, insn, 
+						  REG_MMX_OFFSET );
+			break;
+		case ADDRMETH_R:	/* ModR/M mod == gen reg */
+			size = ia32_modrm_decode( buf, buf_len, op, insn, 
+						  gen_regs );
+			break;
+		case ADDRMETH_W:	/* ModR/M present, mem or SIMD reg */
+			size = ia32_modrm_decode( buf, buf_len, op, insn, 
+						  REG_SIMD_OFFSET );
+			break;
+
+		/* MODRM -- reg operand. does not effect size! */
+		case ADDRMETH_C:	/* ModR/M reg == control reg */
+			ia32_reg_decode( modrm, op, REG_CTRL_OFFSET );
+			break;
+		case ADDRMETH_D:	/* ModR/M reg == debug reg */
+			ia32_reg_decode( modrm, op, REG_DEBUG_OFFSET );
+			break;
+		case ADDRMETH_G:	/* ModR/M reg == gen-purpose reg */
+			ia32_reg_decode( modrm, op, gen_regs );
+			break;
+		case ADDRMETH_P:	/* ModR/M reg == qword MMX reg */
+			ia32_reg_decode( modrm, op, REG_MMX_OFFSET );
+			break;
+		case ADDRMETH_S:	/* ModR/M reg == segment reg */
+			ia32_reg_decode( modrm, op, REG_SEG_OFFSET );
+			break;
+		case ADDRMETH_T:	/* ModR/M reg == test reg */
+			ia32_reg_decode( modrm, op, REG_TEST_OFFSET );
+			break;
+		case ADDRMETH_V:	/* ModR/M reg == SIMD reg */
+			ia32_reg_decode( modrm, op, REG_SIMD_OFFSET );
+			break;
+
+		/* No MODRM : note these set operand type explicitly */
+		case ADDRMETH_A:	/* No modR/M -- direct addr */
+			op->type = op_absolute;
+
+			/* segment:offset address used in far calls */
+			x86_imm_sized( buf, buf_len, 
+				       &op->data.absolute.segment, 2 );
+			if ( insn->addr_size == 4 ) {
+				x86_imm_sized( buf, buf_len, 
+				    &op->data.absolute.offset.off32, 4 );
+				size = 6;
+			} else {
+				x86_imm_sized( buf, buf_len, 
+				    &op->data.absolute.offset.off16, 2 );
+				size = 4;
+			}
+
+			break;
+		case ADDRMETH_I:	/* Immediate val */
+			op->type = op_immediate;
+			/* if it ever becomes legal to have imm as dest and
+			 * there is a src ModR/M operand, we are screwed! */
+			if ( op->flags & op_signed ) {
+				x86_imm_signsized(buf, buf_len, &op->data.byte, 
+						op_size);
+			} else {
+				x86_imm_sized(buf, buf_len, &op->data.byte, 
+						op_size);
+			}
+			size = op_size;
+			break;
+		case ADDRMETH_J:	/* Rel offset to add to IP [jmp] */
+			/* this fills op->data.near_offset or
+			   op->data.far_offset depending on the size of
+			   the operand */
+			op->flags |= op_signed;
+			if ( op_size == 1 ) {
+				/* one-byte near offset */
+				op->type = op_relative_near;
+				x86_imm_signsized(buf, buf_len, 
+						&op->data.relative_near, 1);
+			} else {
+				/* far offset...is this truly signed? */
+				op->type = op_relative_far;
+				x86_imm_signsized(buf, buf_len, 
+					&op->data.relative_far, op_size );
+			}
+			size = op_size;
+			break;
+		case ADDRMETH_O:	/* No ModR/M; op is word/dword offset */
+			/* NOTE: these are actually RVAs not offsets to seg!! */
+			/* note bene: 'O' ADDR_METH uses addr_size  to
+			   determine operand size */
+			op->type = op_offset;
+			op->flags |= op_pointer;
+			x86_imm_sized( buf, buf_len, &op->data.offset, 
+					insn->addr_size );
+
+			size = insn->addr_size;
+			break;
+
+		/* Hard-coded: these are specified in the insn definition */
+		case ADDRMETH_F:	/* EFLAGS register */
+			op->type = op_register;
+			op->flags |= op_hardcode;
+			ia32_handle_register( &op->data.reg, REG_FLAGS_INDEX );
+			break;
+		case ADDRMETH_X:	/* Memory addressed by DS:SI [string] */
+			op->type = op_expression;
+			op->flags |= op_hardcode;
+			op->flags |= op_ds_seg | op_pointer | op_string;
+			ia32_handle_register( &op->data.expression.base, 
+					     REG_DWORD_OFFSET + 6 );
+			break;
+		case ADDRMETH_Y:	/* Memory addressed by ES:DI [string] */
+			op->type = op_expression;
+			op->flags |= op_hardcode;
+			op->flags |= op_es_seg | op_pointer | op_string;
+			ia32_handle_register( &op->data.expression.base, 
+					     REG_DWORD_OFFSET + 7 );
+			break;
+		case ADDRMETH_RR:	/* Gen Register hard-coded in opcode */
+			op->type = op_register;
+			op->flags |= op_hardcode;
+			ia32_handle_register( &op->data.reg, 
+						op_value + gen_regs );
+			break;
+		case ADDRMETH_RS:	/* Seg Register hard-coded in opcode */
+			op->type = op_register;
+			op->flags |= op_hardcode;
+			ia32_handle_register( &op->data.reg, 
+						op_value + REG_SEG_OFFSET );
+			break;
+		case ADDRMETH_RF:	/* FPU Register hard-coded in opcode */
+			op->type = op_register;
+			op->flags |= op_hardcode;
+			ia32_handle_register( &op->data.reg, 
+						op_value + REG_FPU_OFFSET );
+			break;
+		case ADDRMETH_RT:	/* TST Register hard-coded in opcode */
+			op->type = op_register;
+			op->flags |= op_hardcode;
+			ia32_handle_register( &op->data.reg, 
+						op_value + REG_TEST_OFFSET );
+			break;
+		case ADDRMETH_II:	/* Immediate hard-coded in opcode */
+			op->type = op_immediate;
+			op->data.dword = op_value;
+			op->flags |= op_hardcode;
+			break;
+
+		case 0:	/* Operand is not used */
+		default:
+			/* ignore -- operand not used in this insn */
+			op->type = op_unused;	/* this shouldn't happen! */
+			break;
+	}
+
+	return size;
+}
+
+static size_t decode_operand_size( unsigned int op_type, x86_insn_t *insn, 
+				   x86_op_t *op ){
+	size_t size;
+
+	/* ++ Do Operand Type ++ */
+	switch (op_type) {
+		/* This sets the operand Size based on the Intel Opcode Map
+		 * (Vol 2, Appendix A). Letter encodings are from section
+		 * A.1.2, 'Codes for Operand Type' */
+		/* NOTE: in this routines, 'size' refers to the size
+		 *       of the operand in the raw (encoded) instruction;
+		 *       'datatype' stores the actual size and datatype
+		 *       of the operand */
+
+		/* ------------------------ Operand Type ----------------- */
+		case OPTYPE_c:	/* byte or word [op size attr] */
+			size = (insn->op_size == 4) ? 2 : 1;
+			op->datatype = (size == 4) ? op_word : op_byte;
+			break;
+		case OPTYPE_a:	/* 2 word or 2 dword [op size attr] */
+			/* pointer to a 16:16 or 32:32 BOUNDS operand */
+			size = (insn->op_size == 4) ? 8 : 4;
+			op->datatype = (size == 4) ? op_bounds32 : op_bounds16;
+			break;
+		case OPTYPE_v:	/* word or dword [op size attr] */
+			size = (insn->op_size == 4) ? 4 : 2;
+			op->datatype = (size == 4) ? op_dword : op_word;
+			break;
+		case OPTYPE_p:	/* 32/48-bit ptr [op size attr] */
+			/* technically these flags are not accurate: the
+			 * value s a 16:16 pointer or a 16:32 pointer, where
+			 * the first '16' is a segment */
+			size = (insn->addr_size == 4) ? 6 : 4;
+			op->datatype = (size == 4) ? op_descr32 : op_descr16;
+			break;
+		case OPTYPE_b:	/* byte, ignore op-size */
+			size = 1;
+			op->datatype = op_byte;
+			break;
+		case OPTYPE_w:	/* word, ignore op-size */
+			size = 2;
+			op->datatype = op_word;
+			break;
+		case OPTYPE_d:	/* dword , ignore op-size */
+			size = 4;
+			op->datatype = op_dword;
+			break;
+		case OPTYPE_s:	/* 6-byte psuedo-descriptor */
+			/* ptr to 6-byte value which is 32:16 in 32-bit
+			 * mode, or 8:24:16 in 16-bit mode. The high byte
+			 * is ignored in 16-bit mode. */
+			size = 6;
+			op->datatype = (insn->addr_size == 4) ? 
+				op_pdescr32 : op_pdescr16;
+			break;
+		case OPTYPE_q:	/* qword, ignore op-size */
+			size = 8;
+			op->datatype = op_qword;
+			break;
+		case OPTYPE_dq:	/* d-qword, ignore op-size */
+			size = 16;
+			op->datatype = op_dqword;
+			break;
+		case OPTYPE_ps:	/* 128-bit FP data */
+			size = 16;
+			/* really this is 4 packed SP FP values */
+			op->datatype = op_ssimd;
+			break;
+		case OPTYPE_pd:	/* 128-bit FP data */
+			size = 16;
+			/* really this is 2 packed DP FP values */
+			op->datatype = op_dsimd;
+			break;
+		case OPTYPE_ss:	/* Scalar elem of 128-bit FP data */
+			size = 16;
+			/* this only looks at the low dword (4 bytes)
+			 * of the xmmm register passed as a param. 
+			 * This is a 16-byte register where only 4 bytes
+			 * are used in the insn. Painful, ain't it? */
+			op->datatype = op_sssimd;
+			break;
+		case OPTYPE_sd:	/* Scalar elem of 128-bit FP data */
+			size = 16;
+			/* this only looks at the low qword (8 bytes)
+			 * of the xmmm register passed as a param. 
+			 * This is a 16-byte register where only 8 bytes
+			 * are used in the insn. Painful, again... */
+			op->datatype = op_sdsimd;
+			break;
+		case OPTYPE_pi:	/* qword mmx register */
+			size = 8;
+			op->datatype = op_qword;
+			break;
+		case OPTYPE_si:	/* dword integer register */
+			size = 4;
+			op->datatype = op_dword;
+			break;
+		case OPTYPE_fs:	/* single-real */
+			size = 4;
+			op->datatype = op_sreal;
+			break;
+		case OPTYPE_fd:	/* double real */
+			size = 8;
+			op->datatype = op_dreal;
+			break;
+		case OPTYPE_fe:	/* extended real */
+			size = 10;
+			op->datatype = op_extreal;
+			break;
+		case OPTYPE_fb:	/* packed BCD */
+			size = 10;
+			op->datatype = op_bcd;
+			break;
+		case OPTYPE_fv:	/* pointer to FPU env: 14 or 28-bytes */
+			size = (insn->addr_size == 4)? 28 : 14;
+			op->datatype = (size == 28)?  op_fpuenv32: op_fpuenv16;
+			break;
+		case OPTYPE_ft:	/* pointer to FPU env: 94 or 108 bytes */
+			size = (insn->addr_size == 4)? 108 : 94;
+			op->datatype = (size == 108)? 
+				op_fpustate32: op_fpustate16;
+			break;
+		case OPTYPE_fx:	/* 512-byte register stack */
+			size = 512;
+			op->datatype = op_fpregset;
+			break;
+		case OPTYPE_fp:	/* floating point register */
+			size = 10;	/* double extended precision */
+			op->datatype = op_fpreg;
+			break;
+		case OPTYPE_m:	/* fake operand type used for "lea Gv, M" */
+			size = insn->addr_size;
+			op->datatype = (size == 4) ?  op_dword : op_word;
+			break;
+		case OPTYPE_none: /* handle weird instructions that have no encoding but use a dword datatype, like invlpg */
+			size = 0;
+			op->datatype = op_none;
+			break;
+		case 0:
+		default:
+			size = insn->op_size;
+			op->datatype = (size == 4) ? op_dword : op_word;
+			break;
+		}
+	return size;
+}
+
+size_t ia32_decode_operand( unsigned char *buf, size_t buf_len,
+			      x86_insn_t *insn, unsigned int raw_op, 
+			      unsigned int raw_flags, unsigned int prefixes, 
+			      unsigned char modrm ) {
+	unsigned int addr_meth, op_type, op_size, gen_regs;
+	x86_op_t *op;
+	size_t size;
+
+	/* ++ Yank optype and addr mode out of operand flags */
+	addr_meth = raw_flags & ADDRMETH_MASK;
+	op_type = raw_flags & OPTYPE_MASK;
+
+	if ( raw_flags == ARG_NONE ) {
+		/* operand is not used in this instruction */
+		return 0;
+	}
+
+	/* allocate a new operand */
+	op = x86_operand_new( insn );
+
+	/* ++ Copy flags from opcode table to x86_insn_t */
+	op->access = (enum x86_op_access) OP_PERM(raw_flags);
+	op->flags = (enum x86_op_flags) (OP_FLAGS(raw_flags) >> 12);
+
+	/* Get size (for decoding)  and datatype of operand */
+	op_size = decode_operand_size(op_type, insn, op);
+
+	/* override default register set based on Operand Type */
+	/* this allows mixing of 8, 16, and 32 bit regs in insn */
+	if (op_size == 1) {
+		gen_regs = REG_BYTE_OFFSET;
+	} else if (op_size == 2) {
+		gen_regs = REG_WORD_OFFSET;
+	} else {
+		gen_regs = REG_DWORD_OFFSET;
+	}
+
+	size = decode_operand_value( buf, buf_len, op, insn, addr_meth, 
+				      op_size, raw_op, modrm, gen_regs );
+
+	/* if operand is an address, apply any segment override prefixes */
+	if ( op->type == op_expression || op->type == op_offset ) {
+		apply_seg(op, prefixes);
+	}
+
+	return size;		/* return number of bytes in instruction */
+}
diff --git a/google-breakpad/src/third_party/libdisasm/ia32_operand.h b/google-breakpad/src/third_party/libdisasm/ia32_operand.h
new file mode 100644
index 0000000..08c3074
--- /dev/null
+++ b/google-breakpad/src/third_party/libdisasm/ia32_operand.h
@@ -0,0 +1,11 @@
+#ifndef IA32_OPERAND_H
+#define IA32_OPERAND_H
+
+#include "libdis.h"
+#include "ia32_insn.h"
+
+size_t ia32_decode_operand( unsigned char *buf, size_t buf_len,
+			      x86_insn_t *insn, unsigned int raw_op, 
+			      unsigned int raw_flags, unsigned int prefixes,
+			      unsigned char modrm );
+#endif
diff --git a/google-breakpad/src/third_party/libdisasm/ia32_reg.c b/google-breakpad/src/third_party/libdisasm/ia32_reg.c
new file mode 100644
index 0000000..f270c1f
--- /dev/null
+++ b/google-breakpad/src/third_party/libdisasm/ia32_reg.c
@@ -0,0 +1,234 @@
+#include <stdlib.h>
+#include <string.h>
+
+#include "ia32_reg.h"
+#include "ia32_insn.h"
+
+#define NUM_X86_REGS	92
+
+/* register sizes */
+#define REG_DWORD_SIZE 4
+#define REG_WORD_SIZE 2
+#define REG_BYTE_SIZE 1
+#define REG_MMX_SIZE 8
+#define REG_SIMD_SIZE 16
+#define REG_DEBUG_SIZE 4
+#define REG_CTRL_SIZE 4
+#define REG_TEST_SIZE 4
+#define REG_SEG_SIZE 2
+#define REG_FPU_SIZE 10
+#define REG_FLAGS_SIZE 4
+#define REG_FPCTRL_SIZE 2
+#define REG_FPSTATUS_SIZE 2
+#define REG_FPTAG_SIZE 2
+#define REG_EIP_SIZE 4
+#define REG_IP_SIZE 2
+
+/* REGISTER ALIAS TABLE:
+ *
+ * NOTE: the MMX register mapping is fixed to the physical registers
+ * used by the FPU. The floating FP stack does not effect the location
+ * of the MMX registers, so this aliasing is not 100% accurate.
+ * */
+static struct {
+	unsigned char alias;	/* id of register this is an alias for */
+	unsigned char shift;	/* # of bits register must be shifted */
+} ia32_reg_aliases[] = {
+	{ 0,0 },
+	{ REG_DWORD_OFFSET,	0 }, 	/* al :  1 */
+	{ REG_DWORD_OFFSET,	8 }, 	/* ah :  2 */
+	{ REG_DWORD_OFFSET,	0 }, 	/* ax :  3 */
+	{ REG_DWORD_OFFSET + 1,	0 }, 	/* cl :  4 */
+	{ REG_DWORD_OFFSET + 1,	8 }, 	/* ch :  5 */
+	{ REG_DWORD_OFFSET + 1,	0 }, 	/* cx :  6 */
+	{ REG_DWORD_OFFSET + 2,	0 }, 	/* dl :  7 */
+	{ REG_DWORD_OFFSET + 2,	8 }, 	/* dh :  8 */
+	{ REG_DWORD_OFFSET + 2,	0 }, 	/* dx :  9 */
+	{ REG_DWORD_OFFSET + 3,	0 }, 	/* bl : 10 */
+	{ REG_DWORD_OFFSET + 3,	8 }, 	/* bh : 11 */
+	{ REG_DWORD_OFFSET + 3,	0 }, 	/* bx : 12 */
+	{ REG_DWORD_OFFSET + 4,	0 }, 	/* sp : 13 */
+	{ REG_DWORD_OFFSET + 5,	0 }, 	/* bp : 14 */
+	{ REG_DWORD_OFFSET + 6,	0 }, 	/* si : 15 */
+	{ REG_DWORD_OFFSET + 7,	0 }, 	/* di : 16 */
+	{ REG_EIP_INDEX,	0 }, 	/* ip : 17 */
+	{ REG_FPU_OFFSET,	0 }, 	/* mm0 : 18 */
+	{ REG_FPU_OFFSET + 1,	0 }, 	/* mm1 : 19 */
+	{ REG_FPU_OFFSET + 2,	0 }, 	/* mm2 : 20 */
+	{ REG_FPU_OFFSET + 3,	0 }, 	/* mm3 : 21 */
+	{ REG_FPU_OFFSET + 4,	0 }, 	/* mm4 : 22 */
+	{ REG_FPU_OFFSET + 5,	0 }, 	/* mm5 : 23 */
+	{ REG_FPU_OFFSET + 6,	0 }, 	/* mm6 : 24 */
+	{ REG_FPU_OFFSET + 7,	0 } 	/* mm7 : 25 */
+ };
+
+/* REGISTER TABLE: size, type, and name of every register in the 
+ *                 CPU. Does not include MSRs since the are, after all,
+ *                 model specific. */
+static struct {
+	unsigned int size;
+	enum x86_reg_type type;
+	unsigned int alias;
+	char mnemonic[8];
+} ia32_reg_table[NUM_X86_REGS + 2] = {
+	{ 0, 0, 0, "" },
+	/* REG_DWORD_OFFSET */
+	{ REG_DWORD_SIZE, reg_gen | reg_ret, 0, "eax" },
+	{ REG_DWORD_SIZE, reg_gen | reg_count, 0, "ecx" },
+	{ REG_DWORD_SIZE, reg_gen, 0, "edx" },
+	{ REG_DWORD_SIZE, reg_gen, 0, "ebx" },
+	/* REG_ESP_INDEX */
+	{ REG_DWORD_SIZE, reg_gen | reg_sp, 0, "esp" },
+	{ REG_DWORD_SIZE, reg_gen | reg_fp, 0, "ebp" },
+	{ REG_DWORD_SIZE, reg_gen | reg_src, 0, "esi" },
+	{ REG_DWORD_SIZE, reg_gen | reg_dest, 0, "edi" },
+	/* REG_WORD_OFFSET */
+	{ REG_WORD_SIZE, reg_gen | reg_ret, 3, "ax" },
+	{ REG_WORD_SIZE, reg_gen | reg_count, 6, "cx" },
+	{ REG_WORD_SIZE, reg_gen, 9, "dx" },
+	{ REG_WORD_SIZE, reg_gen, 12, "bx" },
+	{ REG_WORD_SIZE, reg_gen | reg_sp, 13, "sp" },
+	{ REG_WORD_SIZE, reg_gen | reg_fp, 14, "bp" },
+	{ REG_WORD_SIZE, reg_gen | reg_src, 15, "si" },
+	{ REG_WORD_SIZE, reg_gen | reg_dest, 16, "di" },
+	/* REG_BYTE_OFFSET */
+	{ REG_BYTE_SIZE, reg_gen, 1, "al" },
+	{ REG_BYTE_SIZE, reg_gen, 4, "cl" },
+	{ REG_BYTE_SIZE, reg_gen, 7, "dl" },
+	{ REG_BYTE_SIZE, reg_gen, 10, "bl" },
+	{ REG_BYTE_SIZE, reg_gen, 2, "ah" },
+	{ REG_BYTE_SIZE, reg_gen, 5, "ch" },
+	{ REG_BYTE_SIZE, reg_gen, 8, "dh" },
+	{ REG_BYTE_SIZE, reg_gen, 11, "bh" },
+	/* REG_MMX_OFFSET */
+	{ REG_MMX_SIZE, reg_simd, 18, "mm0" },
+	{ REG_MMX_SIZE, reg_simd, 19, "mm1" },
+	{ REG_MMX_SIZE, reg_simd, 20, "mm2" },
+	{ REG_MMX_SIZE, reg_simd, 21, "mm3" },
+	{ REG_MMX_SIZE, reg_simd, 22, "mm4" },
+	{ REG_MMX_SIZE, reg_simd, 23, "mm5" },
+	{ REG_MMX_SIZE, reg_simd, 24, "mm6" },
+	{ REG_MMX_SIZE, reg_simd, 25, "mm7" },
+	/* REG_SIMD_OFFSET */
+	{ REG_SIMD_SIZE, reg_simd, 0, "xmm0" },
+	{ REG_SIMD_SIZE, reg_simd, 0, "xmm1" },
+	{ REG_SIMD_SIZE, reg_simd, 0, "xmm2" },
+	{ REG_SIMD_SIZE, reg_simd, 0, "xmm3" },
+	{ REG_SIMD_SIZE, reg_simd, 0, "xmm4" },
+	{ REG_SIMD_SIZE, reg_simd, 0, "xmm5" },
+	{ REG_SIMD_SIZE, reg_simd, 0, "xmm6" },
+	{ REG_SIMD_SIZE, reg_simd, 0, "xmm7" },
+	/* REG_DEBUG_OFFSET */
+	{ REG_DEBUG_SIZE, reg_sys, 0, "dr0" },
+	{ REG_DEBUG_SIZE, reg_sys, 0, "dr1" },
+	{ REG_DEBUG_SIZE, reg_sys, 0, "dr2" },
+	{ REG_DEBUG_SIZE, reg_sys, 0, "dr3" },
+	{ REG_DEBUG_SIZE, reg_sys, 0, "dr4" },
+	{ REG_DEBUG_SIZE, reg_sys, 0, "dr5" },
+	{ REG_DEBUG_SIZE, reg_sys, 0, "dr6" },
+	{ REG_DEBUG_SIZE, reg_sys, 0, "dr7" },
+	/* REG_CTRL_OFFSET */
+	{ REG_CTRL_SIZE, reg_sys, 0, "cr0" },
+	{ REG_CTRL_SIZE, reg_sys, 0, "cr1" },
+	{ REG_CTRL_SIZE, reg_sys, 0, "cr2" },
+	{ REG_CTRL_SIZE, reg_sys, 0, "cr3" },
+	{ REG_CTRL_SIZE, reg_sys, 0, "cr4" },
+	{ REG_CTRL_SIZE, reg_sys, 0, "cr5" },
+	{ REG_CTRL_SIZE, reg_sys, 0, "cr6" },
+	{ REG_CTRL_SIZE, reg_sys, 0, "cr7" },
+	/* REG_TEST_OFFSET */
+	{ REG_TEST_SIZE, reg_sys, 0, "tr0" },
+	{ REG_TEST_SIZE, reg_sys, 0, "tr1" },
+	{ REG_TEST_SIZE, reg_sys, 0, "tr2" },
+	{ REG_TEST_SIZE, reg_sys, 0, "tr3" },
+	{ REG_TEST_SIZE, reg_sys, 0, "tr4" },
+	{ REG_TEST_SIZE, reg_sys, 0, "tr5" },
+	{ REG_TEST_SIZE, reg_sys, 0, "tr6" },
+	{ REG_TEST_SIZE, reg_sys, 0, "tr7" },
+	/* REG_SEG_OFFSET */
+	{ REG_SEG_SIZE, reg_seg, 0, "es" },
+	{ REG_SEG_SIZE, reg_seg, 0, "cs" },
+	{ REG_SEG_SIZE, reg_seg, 0, "ss" },
+	{ REG_SEG_SIZE, reg_seg, 0, "ds" },
+	{ REG_SEG_SIZE, reg_seg, 0, "fs" },
+	{ REG_SEG_SIZE, reg_seg, 0, "gs" },
+	/* REG_LDTR_INDEX */
+	{ REG_DWORD_SIZE, reg_sys, 0, "ldtr" },
+	/* REG_GDTR_INDEX */
+	{ REG_DWORD_SIZE, reg_sys, 0, "gdtr" },
+	/* REG_FPU_OFFSET */
+	{ REG_FPU_SIZE, reg_fpu, 0, "st(0)" },
+	{ REG_FPU_SIZE, reg_fpu, 0, "st(1)" },
+	{ REG_FPU_SIZE, reg_fpu, 0, "st(2)" },
+	{ REG_FPU_SIZE, reg_fpu, 0, "st(3)" },
+	{ REG_FPU_SIZE, reg_fpu, 0, "st(4)" },
+	{ REG_FPU_SIZE, reg_fpu, 0, "st(5)" },
+	{ REG_FPU_SIZE, reg_fpu, 0, "st(6)" },
+	{ REG_FPU_SIZE, reg_fpu, 0, "st(7)" },
+	/* REG_FLAGS_INDEX : 81 */
+	{ REG_FLAGS_SIZE, reg_cond, 0, "eflags" }, 
+	/* REG_FPCTRL_INDEX  : 82*/
+	{ REG_FPCTRL_SIZE, reg_fpu | reg_sys, 0, "fpctrl" }, 
+	/* REG_FPSTATUS_INDEX : 83*/
+	{ REG_FPSTATUS_SIZE, reg_fpu | reg_sys, 0, "fpstat" },
+	/* REG_FPTAG_INDEX : 84 */
+	{ REG_FPTAG_SIZE, reg_fpu | reg_sys, 0, "fptag" }, 
+	/* REG_EIP_INDEX : 85 */
+	{ REG_EIP_SIZE, reg_pc, 0, "eip" },
+	/* REG_IP_INDEX : 86 */
+	{ REG_IP_SIZE, reg_pc, 17, "ip" },
+	/* REG_IDTR_INDEX : 87 */
+	{ REG_DWORD_SIZE, reg_sys, 0, "idtr" },
+	/* REG_MXCSG_INDEX : SSE Control Reg : 88 */
+	{ REG_DWORD_SIZE, reg_sys | reg_simd, 0, "mxcsr" },
+	/* REG_TR_INDEX : Task Register : 89 */
+	{ 16 + 64, reg_sys, 0, "tr" },
+	/* REG_CSMSR_INDEX : SYSENTER_CS_MSR : 90 */
+	{ REG_DWORD_SIZE, reg_sys, 0, "cs_msr" },
+	/* REG_ESPMSR_INDEX : SYSENTER_ESP_MSR : 91 */
+	{ REG_DWORD_SIZE, reg_sys, 0, "esp_msr" },
+	/* REG_EIPMSR_INDEX : SYSENTER_EIP_MSR : 92 */
+	{ REG_DWORD_SIZE, reg_sys, 0, "eip_msr" },
+	{ 0 }
+ };
+
+
+static size_t sz_regtable = NUM_X86_REGS + 1;
+
+
+void ia32_handle_register( x86_reg_t *reg, size_t id ) {
+	unsigned int alias;
+	if (! id || id > sz_regtable ) {
+		return;
+	}
+
+	memset( reg, 0, sizeof(x86_reg_t) );
+
+        strncpy( reg->name, ia32_reg_table[id].mnemonic, MAX_REGNAME );
+
+        reg->type = ia32_reg_table[id].type;
+        reg->size = ia32_reg_table[id].size;
+
+	alias = ia32_reg_table[id].alias;
+	if ( alias ) {
+		reg->alias = ia32_reg_aliases[alias].alias;
+		reg->shift = ia32_reg_aliases[alias].shift;
+	}
+        reg->id = id;
+
+	return;
+}
+
+size_t ia32_true_register_id( size_t id ) {
+	size_t reg;
+
+	if (! id || id > sz_regtable ) {
+		return 0;
+	}
+
+	reg = id;
+	if (ia32_reg_table[reg].alias) {
+		reg = ia32_reg_aliases[ia32_reg_table[reg].alias].alias;
+	}
+	return reg;
+}
diff --git a/google-breakpad/src/third_party/libdisasm/ia32_reg.h b/google-breakpad/src/third_party/libdisasm/ia32_reg.h
new file mode 100644
index 0000000..fbbc77a
--- /dev/null
+++ b/google-breakpad/src/third_party/libdisasm/ia32_reg.h
@@ -0,0 +1,41 @@
+#ifndef IA32_REG_H
+#define IA32_REG_H
+
+#include <sys/types.h>	/* for size_t */
+#include "libdis.h"	/* for x86_reg_t */
+
+/* NOTE these are used in opcode tables for hard-coded registers */
+#define REG_DWORD_OFFSET 	 1	/* 0 + 1 */
+#define REG_ECX_INDEX		 2	/* 0 + 1 + 1 */
+#define REG_ESP_INDEX		 5	/* 0 + 4 + 1 */
+#define REG_EBP_INDEX		 6	/* 0 + 5 + 1 */
+#define REG_ESI_INDEX		 7	/* 0 + 6 + 1 */
+#define REG_EDI_INDEX		 8	/* 0 + 7 + 1 */
+#define REG_WORD_OFFSET 	 9	/* 1 * 8 + 1 */
+#define REG_BYTE_OFFSET 	17	/* 2 * 8 + 1 */
+#define REG_MMX_OFFSET 		25	/* 3 * 8 + 1 */
+#define REG_SIMD_OFFSET 	33	/* 4 * 8 + 1 */
+#define REG_DEBUG_OFFSET 	41	/* 5 * 8 + 1 */
+#define REG_CTRL_OFFSET 	49	/* 6 * 8 + 1 */
+#define REG_TEST_OFFSET 	57	/* 7 * 8 + 1 */
+#define REG_SEG_OFFSET 		65	/* 8 * 8 + 1 */
+#define REG_LDTR_INDEX		71	/* 8 * 8 + 1 + 1 */
+#define REG_GDTR_INDEX		72	/* 8 * 8 + 2 + 1 */
+#define REG_FPU_OFFSET 		73	/* 9 * 8 + 1 */
+#define REG_FLAGS_INDEX 	81	/* 10 * 8 + 1 */
+#define REG_FPCTRL_INDEX 	82	/* 10 * 8 + 1 + 1 */
+#define REG_FPSTATUS_INDEX 	83	/* 10 * 8 + 2 + 1 */
+#define REG_FPTAG_INDEX 	84	/* 10 * 8 + 3 + 1 */
+#define REG_EIP_INDEX 		85	/* 10 * 8 + 4 + 1 */
+#define REG_IP_INDEX 		86	/* 10 * 8 + 5 + 1 */
+#define REG_IDTR_INDEX		87	/* 10 * 8 + 6 + 1 */
+#define REG_MXCSG_INDEX		88	/* 10 * 8 + 7 + 1 */
+#define REG_TR_INDEX		89	/* 10 * 8 + 8 + 1 */
+#define REG_CSMSR_INDEX		90	/* 10 * 8 + 9 + 1 */
+#define REG_ESPMSR_INDEX	91	/* 10 * 8 + 10 + 1 */
+#define REG_EIPMSR_INDEX	92	/* 10 * 8 + 11 + 1 */
+
+void ia32_handle_register( x86_reg_t *reg, size_t id );
+size_t ia32_true_register_id( size_t id );
+
+#endif
diff --git a/google-breakpad/src/third_party/libdisasm/ia32_settings.c b/google-breakpad/src/third_party/libdisasm/ia32_settings.c
new file mode 100644
index 0000000..b578e34
--- /dev/null
+++ b/google-breakpad/src/third_party/libdisasm/ia32_settings.c
@@ -0,0 +1,13 @@
+#include "libdis.h"
+#include "ia32_settings.h"
+#include "ia32_reg.h"
+#include "ia32_insn.h"
+
+ia32_settings_t ia32_settings = {
+	1, 0xF4, 
+	MAX_INSTRUCTION_SIZE,
+	4, 4, 8, 4, 8,
+	REG_ESP_INDEX, REG_EBP_INDEX, REG_EIP_INDEX, REG_FLAGS_INDEX,
+	REG_DWORD_OFFSET, REG_SEG_OFFSET, REG_FPU_OFFSET,
+	opt_none
+};
diff --git a/google-breakpad/src/third_party/libdisasm/ia32_settings.h b/google-breakpad/src/third_party/libdisasm/ia32_settings.h
new file mode 100644
index 0000000..769c0e9
--- /dev/null
+++ b/google-breakpad/src/third_party/libdisasm/ia32_settings.h
@@ -0,0 +1,27 @@
+#ifndef IA32_SETTINGS_H
+#define IA32_SETTINGS_H
+
+#include "libdis.h"
+
+typedef struct {
+	/* options */
+	unsigned char endian,		/* 0 = big, 1 = little */
+		      wc_byte,		/* wildcard byte */
+		      max_insn,		/* max insn size */
+		      sz_addr,		/* default address size */
+		      sz_oper,		/* default operand size */
+		      sz_byte,		/* # bits in byte */
+		      sz_word,		/* # bytes in machine word */
+		      sz_dword;		/* # bytes in machine dword */
+	unsigned int id_sp_reg,		/* id of stack pointer */
+		     id_fp_reg,		/* id of frame pointer */
+		     id_ip_reg,		/* id of instruction pointer */
+		     id_flag_reg,	/* id of flags register */
+		     offset_gen_regs,	/* start of general regs */
+		     offset_seg_regs,	/* start of segment regs */
+		     offset_fpu_regs;	/* start of floating point regs */
+	/* user-controlled settings */
+	enum x86_options options;
+} ia32_settings_t;
+
+#endif
diff --git a/google-breakpad/src/third_party/libdisasm/libdis.h b/google-breakpad/src/third_party/libdisasm/libdis.h
new file mode 100644
index 0000000..9410339
--- /dev/null
+++ b/google-breakpad/src/third_party/libdisasm/libdis.h
@@ -0,0 +1,836 @@
+#ifndef LIBDISASM_H
+#define LIBDISASM_H
+
+#ifdef WIN32
+#include <windows.h>
+#endif
+
+#include <stdint.h>
+
+/* 'NEW" types
+ * __________________________________________________________________________*/
+#ifndef LIBDISASM_QWORD_H       /* do not interfere with qword.h */
+        #define LIBDISASM_QWORD_H
+        #ifdef _MSC_VER
+                typedef __int64         qword_t;
+        #else
+                typedef int64_t         qword_t;
+        #endif
+#endif
+
+#include <sys/types.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* 'NEW" x86 API
+ * __________________________________________________________________________*/
+
+
+/* ========================================= Error Reporting */
+/* REPORT CODES
+ *      These are passed to a reporter function passed at initialization.
+ *      Each code determines the type of the argument passed to the reporter;
+ *      this allows the report to recover from errors, or just log them.
+ */
+enum x86_report_codes {
+        report_disasm_bounds,   /* RVA OUT OF BOUNDS : The disassembler could
+                                   not disassemble the supplied RVA as it is
+                                   out of the range of the buffer. The
+                                   application should store the address and
+                                   attempt to determine what section of the
+                                   binary it is in, then disassemble the
+                                   address from the bytes in that section.
+                                        data: uint32_t rva */
+        report_insn_bounds,     /* INSTRUCTION OUT OF BOUNDS: The disassembler
+                                   could not disassemble the instruction as
+                                   the instruction would require bytes beyond
+                                   the end of the current buffer. This usually
+                                   indicated garbage bytes at the end of a
+                                   buffer, or an incorrectly-sized buffer.
+                                        data: uint32_t rva */
+        report_invalid_insn,    /* INVALID INSTRUCTION: The disassembler could
+                                   not disassemble the instruction as it has an
+                                   invalid combination of opcodes and operands.
+                                   This will stop automated disassembly; the
+                                   application can restart the disassembly
+                                   after the invalid instruction.
+                                        data: uint32_t rva */
+        report_unknown
+};
+
+/* 'arg' is optional arbitrary data provided by the code passing the 
+ *       callback -- for example, it could be 'this' or 'self' in OOP code.
+ * 'code' is provided by libdisasm, it is one of the above
+ * 'data' is provided by libdisasm and is context-specific, per the enums */
+typedef void (*DISASM_REPORTER)( enum x86_report_codes code, 
+				 void *data, void *arg );
+
+
+/* x86_report_error : Call the register reporter to report an error */
+void x86_report_error( enum x86_report_codes code, void *data );
+
+/* ========================================= Libdisasm Management Routines */
+enum x86_options {		/* these can be ORed together */
+        opt_none= 0,
+        opt_ignore_nulls=1,     /* ignore sequences of > 4 NULL bytes */
+        opt_16_bit=2,           /* 16-bit/DOS disassembly */
+        opt_att_mnemonics=4,    /* use AT&T syntax names for alternate opcode mnemonics */
+};
+
+/* management routines */
+/* 'arg' is caller-specific data which is passed as the first argument
+ * to the reporter callback routine */
+int x86_init( enum x86_options options, DISASM_REPORTER reporter, void *arg);
+void x86_set_reporter( DISASM_REPORTER reporter, void *arg);
+void x86_set_options( enum x86_options options );
+enum x86_options x86_get_options( void );
+int x86_cleanup(void);
+
+
+/* ========================================= Instruction Representation */
+/* these defines are only intended for use in the array decl's */
+#define MAX_REGNAME 8
+
+#define MAX_PREFIX_STR 32
+#define MAX_MNEM_STR 16
+#define MAX_INSN_SIZE 20        /* same as in i386.h */
+#define MAX_OP_STRING 32        /* max possible operand size in string form */
+#define MAX_OP_RAW_STRING 64    /* max possible operand size in raw form */
+#define MAX_OP_XML_STRING 256   /* max possible operand size in xml form */
+#define MAX_NUM_OPERANDS 8	/* max # implicit and explicit operands */
+/* in these, the '2 *' is arbitrary: the max # of operands should require
+ * more space than the rest of the insn */
+#define MAX_INSN_STRING 512        /* 2 * 8 * MAX_OP_STRING */
+#define MAX_INSN_RAW_STRING 1024   /* 2 * 8 * MAX_OP_RAW_STRING */
+#define MAX_INSN_XML_STRING 4096   /* 2 * 8 * MAX_OP_XML_STRING */
+
+enum x86_reg_type {     /* NOTE: these may be ORed together */
+        reg_gen         = 0x00001,      /* general purpose */
+        reg_in          = 0x00002,      /* incoming args, ala RISC */
+        reg_out         = 0x00004,      /* args to calls, ala RISC */
+        reg_local       = 0x00008,      /* local vars, ala RISC */
+        reg_fpu         = 0x00010,      /* FPU data register */
+        reg_seg         = 0x00020,      /* segment register */
+        reg_simd        = 0x00040,      /* SIMD/MMX reg */
+        reg_sys         = 0x00080,      /* restricted/system register */
+        reg_sp          = 0x00100,      /* stack pointer */
+        reg_fp          = 0x00200,      /* frame pointer */
+        reg_pc          = 0x00400,      /* program counter */
+        reg_retaddr     = 0x00800,      /* return addr for func */
+        reg_cond        = 0x01000,      /* condition code / flags */
+        reg_zero        = 0x02000,      /* zero register, ala RISC */
+        reg_ret         = 0x04000,      /* return value */
+        reg_src         = 0x10000,      /* array/rep source */
+        reg_dest        = 0x20000,      /* array/rep destination */
+        reg_count       = 0x40000       /* array/rep/loop counter */
+};
+
+/* x86_reg_t : an X86 CPU register */
+typedef struct {
+        char name[MAX_REGNAME];
+        enum x86_reg_type type;         /* what register is used for */
+        unsigned int size;              /* size of register in bytes */
+        unsigned int id;                /* register ID #, for quick compares */
+	unsigned int alias;		/* ID of reg this is an alias for */
+	unsigned int shift;		/* amount to shift aliased reg by */
+} x86_reg_t;
+
+/* x86_ea_t : an X86 effective address (address expression) */
+typedef struct {
+        unsigned int     scale;         /* scale factor */
+        x86_reg_t        index, base;   /* index, base registers */
+        int32_t          disp;          /* displacement */
+        char             disp_sign;     /* is negative? 1/0 */
+        char             disp_size;     /* 0, 1, 2, 4 */
+} x86_ea_t;
+
+/* x86_absolute_t : an X86 segment:offset address (descriptor) */
+typedef struct {
+	unsigned short	segment;	/* loaded directly into CS */
+	union {
+		unsigned short	off16;	/* loaded directly into IP */
+		uint32_t		off32;	/* loaded directly into EIP */
+	} offset;	
+} x86_absolute_t;
+
+enum x86_op_type {      /* mutually exclusive */
+        op_unused = 0,          /* empty/unused operand: should never occur */
+        op_register = 1,        /* CPU register */
+        op_immediate = 2,       /* Immediate Value */
+        op_relative_near = 3,   /* Relative offset from IP */
+        op_relative_far = 4,    /* Relative offset from IP */
+        op_absolute = 5,        /* Absolute address (ptr16:32) */
+        op_expression = 6,      /* Address expression (scale/index/base/disp) */
+        op_offset = 7,          /* Offset from start of segment (m32) */
+        op_unknown
+};
+
+#define x86_optype_is_address( optype ) \
+	( optype == op_absolute || optype == op_offset )
+#define x86_optype_is_relative( optype ) \
+	( optype == op_relative_near || optype == op_relative_far )
+#define x86_optype_is_memory( optype ) \
+	( optype > op_immediate && optype < op_unknown )
+
+enum x86_op_datatype {          /* these use Intel's lame terminology */
+        op_byte = 1,            /* 1 byte integer */
+        op_word = 2,            /* 2 byte integer */
+        op_dword = 3,           /* 4 byte integer */
+        op_qword = 4,           /* 8 byte integer */
+        op_dqword = 5,          /* 16 byte integer */
+        op_sreal = 6,           /* 4 byte real (single real) */
+        op_dreal = 7,           /* 8 byte real (double real) */
+        op_extreal = 8,         /* 10 byte real (extended real) */
+        op_bcd = 9,             /* 10 byte binary-coded decimal */
+        op_ssimd = 10,          /* 16 byte : 4 packed single FP (SIMD, MMX) */
+        op_dsimd = 11,          /* 16 byte : 2 packed double FP (SIMD, MMX) */
+        op_sssimd = 12,         /* 4 byte : scalar single FP (SIMD, MMX) */
+        op_sdsimd = 13,         /* 8 byte : scalar double FP (SIMD, MMX) */
+	op_descr32 = 14,	/* 6 byte Intel descriptor 2:4 */
+	op_descr16 = 15,	/* 4 byte Intel descriptor 2:2 */
+	op_pdescr32 = 16,	/* 6 byte Intel pseudo-descriptor 32:16 */
+	op_pdescr16 = 17,	/* 6 byte Intel pseudo-descriptor 8:24:16 */
+	op_bounds16 = 18,	/* signed 16:16 lower:upper bounds */
+	op_bounds32 = 19,	/* signed 32:32 lower:upper bounds */
+        op_fpuenv16 = 20,	/* 14 byte FPU control/environment data */
+        op_fpuenv32 = 21,	/* 28 byte FPU control/environment data */
+	op_fpustate16 = 22,	/* 94 byte FPU state (env & reg stack) */
+	op_fpustate32 = 23,	/* 108 byte FPU state (env & reg stack) */
+	op_fpregset = 24,	/* 512 bytes: register set */
+	op_fpreg = 25,		/* FPU register */
+    op_none = 0xFF,     /* operand without a datatype (INVLPG) */
+};
+
+enum x86_op_access {    /* ORed together */
+        op_read = 1,
+        op_write = 2,
+        op_execute = 4
+};
+
+enum x86_op_flags {     /* ORed together, but segs are mutually exclusive */
+        op_signed = 1,          /* signed integer */
+        op_string = 2,          /* possible string or array */
+        op_constant = 4,        /* symbolic constant */
+        op_pointer = 8,         /* operand points to a memory address */
+	op_sysref = 0x010,	/* operand is a syscall number */
+	op_implied = 0x020,	/* operand is implicit in the insn */
+	op_hardcode = 0x40,	/* operand is hardcoded in insn definition */
+	/* NOTE: an 'implied' operand is one which can be considered a side
+	 * effect of the insn, e.g. %esp being modified by PUSH or POP. A
+	 * 'hard-coded' operand is one which is specified in the instruction
+	 * definition, e.g. %es:%edi in MOVSB or 1 in ROL Eb, 1. The difference
+	 * is that hard-coded operands are printed by disassemblers and are
+	 * required to re-assemble, while implicit operands are invisible. */
+        op_es_seg = 0x100,      /* ES segment override */
+        op_cs_seg = 0x200,      /* CS segment override */
+        op_ss_seg = 0x300,      /* SS segment override */
+        op_ds_seg = 0x400,      /* DS segment override */
+        op_fs_seg = 0x500,      /* FS segment override */
+        op_gs_seg = 0x600       /* GS segment override */
+};
+
+/* x86_op_t : an X86 instruction operand */
+typedef struct {
+        enum x86_op_type        type;           /* operand type */
+        enum x86_op_datatype    datatype;       /* operand size */
+        enum x86_op_access      access;         /* operand access [RWX] */
+        enum x86_op_flags       flags;          /* misc flags */
+        union {
+		/* sizeof will have to work on these union members! */
+                /* immediate values */
+                char            sbyte;
+                short           sword;
+                int32_t         sdword;
+                qword_t         sqword;
+                unsigned char   byte;
+                unsigned short  word;
+                uint32_t        dword;
+                qword_t         qword;
+                float           sreal;
+                double          dreal;
+                /* misc large/non-native types */
+                unsigned char   extreal[10];
+                unsigned char   bcd[10];
+                qword_t         dqword[2];
+                unsigned char   simd[16];
+                unsigned char   fpuenv[28];
+                /* offset from segment */
+                uint32_t        offset;
+                /* ID of CPU register */
+                x86_reg_t       reg;
+                /* offsets from current insn */
+                char            relative_near;
+                int32_t         relative_far;
+		/* segment:offset */
+		x86_absolute_t	absolute;
+                /* effective address [expression] */
+                x86_ea_t        expression;
+        } data;
+	/* this is needed to make formatting operands more sane */
+	void * insn;		/* pointer to x86_insn_t owning operand */
+} x86_op_t;
+
+/* Linked list of x86_op_t; provided for manual traversal of the operand
+ * list in an insn. Users wishing to add operands to this list, e.g. to add
+ * implicit operands, should use x86_operand_new in x86_operand_list.h */
+typedef struct x86_operand_list {
+	x86_op_t op;
+	struct x86_operand_list *next;
+} x86_oplist_t;
+
+enum x86_insn_group {
+	insn_none = 0,		/* invalid instruction */
+        insn_controlflow = 1,
+        insn_arithmetic = 2,
+        insn_logic = 3,
+        insn_stack = 4,
+        insn_comparison = 5,
+        insn_move = 6,
+        insn_string = 7,
+        insn_bit_manip = 8,
+        insn_flag_manip = 9,
+        insn_fpu = 10,
+        insn_interrupt = 13,
+        insn_system = 14,
+        insn_other = 15
+};
+
+enum x86_insn_type {
+	insn_invalid = 0,	/* invalid instruction */
+        /* insn_controlflow */
+        insn_jmp = 0x1001,
+        insn_jcc = 0x1002,
+        insn_call = 0x1003,
+        insn_callcc = 0x1004,
+        insn_return = 0x1005,
+        /* insn_arithmetic */
+        insn_add = 0x2001,
+        insn_sub = 0x2002,
+        insn_mul = 0x2003,
+        insn_div = 0x2004,
+        insn_inc = 0x2005,
+        insn_dec = 0x2006,
+        insn_shl = 0x2007,
+        insn_shr = 0x2008,
+        insn_rol = 0x2009,
+        insn_ror = 0x200A,
+        /* insn_logic */
+        insn_and = 0x3001,
+        insn_or = 0x3002,
+        insn_xor = 0x3003,
+        insn_not = 0x3004,
+        insn_neg = 0x3005,
+        /* insn_stack */
+        insn_push = 0x4001,
+        insn_pop = 0x4002,
+        insn_pushregs = 0x4003,
+        insn_popregs = 0x4004,
+        insn_pushflags = 0x4005,
+        insn_popflags = 0x4006,
+        insn_enter = 0x4007,
+        insn_leave = 0x4008,
+        /* insn_comparison */
+        insn_test = 0x5001,
+        insn_cmp = 0x5002,
+        /* insn_move */
+        insn_mov = 0x6001,      /* move */
+        insn_movcc = 0x6002,    /* conditional move */
+        insn_xchg = 0x6003,     /* exchange */
+        insn_xchgcc = 0x6004,   /* conditional exchange */
+        /* insn_string */
+        insn_strcmp = 0x7001,
+        insn_strload = 0x7002,
+        insn_strmov = 0x7003,
+        insn_strstore = 0x7004,
+        insn_translate = 0x7005,        /* xlat */
+        /* insn_bit_manip */
+        insn_bittest = 0x8001,
+        insn_bitset = 0x8002,
+        insn_bitclear = 0x8003,
+        /* insn_flag_manip */
+        insn_clear_carry = 0x9001,
+        insn_clear_zero = 0x9002,
+        insn_clear_oflow = 0x9003,
+        insn_clear_dir = 0x9004,
+        insn_clear_sign = 0x9005,
+        insn_clear_parity = 0x9006,
+        insn_set_carry = 0x9007,
+        insn_set_zero = 0x9008,
+        insn_set_oflow = 0x9009,
+        insn_set_dir = 0x900A,
+        insn_set_sign = 0x900B,
+        insn_set_parity = 0x900C,
+        insn_tog_carry = 0x9010,
+        insn_tog_zero = 0x9020,
+        insn_tog_oflow = 0x9030,
+        insn_tog_dir = 0x9040,
+        insn_tog_sign = 0x9050,
+        insn_tog_parity = 0x9060,
+        /* insn_fpu */
+        insn_fmov = 0xA001,
+        insn_fmovcc = 0xA002,
+        insn_fneg = 0xA003,
+        insn_fabs = 0xA004,
+        insn_fadd = 0xA005,
+        insn_fsub = 0xA006,
+        insn_fmul = 0xA007,
+        insn_fdiv = 0xA008,
+        insn_fsqrt = 0xA009,
+        insn_fcmp = 0xA00A,
+        insn_fcos = 0xA00C,
+        insn_fldpi = 0xA00D,
+        insn_fldz = 0xA00E,
+        insn_ftan = 0xA00F,
+        insn_fsine = 0xA010,
+        insn_fsys = 0xA020,
+        /* insn_interrupt */
+        insn_int = 0xD001,
+        insn_intcc = 0xD002,    /* not present in x86 ISA */
+        insn_iret = 0xD003,
+        insn_bound = 0xD004,
+        insn_debug = 0xD005,
+        insn_trace = 0xD006,
+        insn_invalid_op = 0xD007,
+        insn_oflow = 0xD008,
+        /* insn_system */
+        insn_halt = 0xE001,
+        insn_in = 0xE002,       /* input from port/bus */
+        insn_out = 0xE003,      /* output to port/bus */
+        insn_cpuid = 0xE004,
+        /* insn_other */
+        insn_nop = 0xF001,
+        insn_bcdconv = 0xF002,  /* convert to or from BCD */
+        insn_szconv = 0xF003    /* change size of operand */
+};
+
+/* These flags specify special characteristics of the instruction, such as
+ * whether the inatruction is privileged or whether it serializes the
+ * pipeline.
+ * NOTE : These may not be accurate for all instructions; updates to the
+ * opcode tables have not been completed. */
+enum x86_insn_note {
+	insn_note_ring0		= 1,	/* Only available in ring 0 */
+	insn_note_smm		= 2,	/* "" in System Management Mode */
+	insn_note_serial	= 4,	/* Serializing instruction */
+	insn_note_nonswap	= 8,	/* Does not swap arguments in att-style formatting */
+	insn_note_nosuffix  = 16,	/* Does not have size suffix in att-style formatting */
+};
+
+/* This specifies what effects the instruction has on the %eflags register */
+enum x86_flag_status {
+        insn_carry_set = 0x1,			/* CF */
+        insn_zero_set = 0x2,			/* ZF */
+        insn_oflow_set = 0x4,			/* OF */
+        insn_dir_set = 0x8,			/* DF */
+        insn_sign_set = 0x10,			/* SF */
+        insn_parity_set = 0x20,			/* PF */
+        insn_carry_or_zero_set = 0x40,
+        insn_zero_set_or_sign_ne_oflow = 0x80,
+        insn_carry_clear = 0x100,
+        insn_zero_clear = 0x200,
+        insn_oflow_clear = 0x400,
+        insn_dir_clear = 0x800,
+        insn_sign_clear = 0x1000,
+        insn_parity_clear = 0x2000,
+        insn_sign_eq_oflow = 0x4000,
+        insn_sign_ne_oflow = 0x8000
+};
+
+/* The CPU model in which the insturction first appeared; this can be used
+ * to mask out instructions appearing in earlier or later models or to
+ * check the portability of a binary.
+ * NOTE : These may not be accurate for all instructions; updates to the
+ * opcode tables have not been completed. */
+enum x86_insn_cpu {
+	cpu_8086 	= 1,	/* Intel */
+	cpu_80286	= 2,
+	cpu_80386	= 3,
+	cpu_80387	= 4,
+	cpu_80486	= 5,
+	cpu_pentium	= 6,
+	cpu_pentiumpro	= 7,
+	cpu_pentium2	= 8,
+	cpu_pentium3	= 9,
+	cpu_pentium4	= 10,
+	cpu_k6		= 16,	/* AMD */
+	cpu_k7		= 32,
+	cpu_athlon	= 48
+};
+
+/* CPU ISA subsets: These are derived from the Instruction Groups in
+ * Intel Vol 1 Chapter 5; they represent subsets of the IA32 ISA but
+ * do not reflect the 'type' of the instruction in the same way that
+ * x86_insn_group does. In short, these are AMD/Intel's somewhat useless 
+ * designations.
+ * NOTE : These may not be accurate for all instructions; updates to the
+ * opcode tables have not been completed. */
+enum x86_insn_isa {
+	isa_gp		= 1,	/* general purpose */
+	isa_fp		= 2,	/* floating point */
+	isa_fpumgt	= 3,	/* FPU/SIMD management */
+	isa_mmx		= 4,	/* Intel MMX */
+	isa_sse1	= 5,	/* Intel SSE SIMD */
+	isa_sse2	= 6,	/* Intel SSE2 SIMD */
+	isa_sse3	= 7,	/* Intel SSE3 SIMD */
+	isa_3dnow	= 8,	/* AMD 3DNow! SIMD */
+	isa_sys		= 9	/* system instructions */
+};
+
+enum x86_insn_prefix {
+        insn_no_prefix = 0,
+        insn_rep_zero = 1,	/* REPZ and REPE */
+        insn_rep_notzero = 2,	/* REPNZ and REPNZ */
+        insn_lock = 4		/* LOCK: */
+};
+
+/* TODO: maybe provide insn_new/free(), and have disasm return new insn_t */
+/* x86_insn_t : an X86 instruction */
+typedef struct {
+        /* information about the instruction */
+        uint32_t addr;             /* load address */
+        uint32_t offset;           /* offset into file/buffer */
+        enum x86_insn_group group;      /* meta-type, e.g. INS_EXEC */
+        enum x86_insn_type type;        /* type, e.g. INS_BRANCH */
+	enum x86_insn_note note;	/* note, e.g. RING0 */
+        unsigned char bytes[MAX_INSN_SIZE];
+        unsigned char size;             /* size of insn in bytes */
+	/* 16/32-bit mode settings */
+	unsigned char addr_size;	/* default address size : 2 or 4 */
+	unsigned char op_size;		/* default operand size : 2 or 4 */
+	/* CPU/instruction set */
+	enum x86_insn_cpu cpu;
+	enum x86_insn_isa isa;
+	/* flags */
+        enum x86_flag_status flags_set; /* flags set or tested by insn */
+        enum x86_flag_status flags_tested;
+	/* stack */
+	unsigned char stack_mod;	/* 0 or 1 : is the stack modified? */
+	int32_t stack_mod_val;		/* val stack is modified by if known */
+
+        /* the instruction proper */
+        enum x86_insn_prefix prefix;	/* prefixes ORed together */
+        char prefix_string[MAX_PREFIX_STR]; /* prefixes [might be truncated] */
+        char mnemonic[MAX_MNEM_STR];
+        x86_oplist_t *operands;		/* list of explicit/implicit operands */
+	size_t operand_count;		/* total number of operands */
+	size_t explicit_count;		/* number of explicit operands */
+        /* convenience fields for user */
+        void *block;                    /* code block containing this insn */
+        void *function;                 /* function containing this insn */
+        int tag;			/* tag the insn as seen/processed */
+} x86_insn_t;
+
+
+/* returns 0 if an instruction is invalid, 1 if valid */
+int x86_insn_is_valid( x86_insn_t *insn );
+
+/* DISASSEMBLY ROUTINES
+ *      Canonical order of arguments is
+ *        (buf, buf_len, buf_rva, offset, len, insn, func, arg, resolve_func)
+ *      ...but of course all of these are not used at the same time.
+ */
+
+
+/* Function prototype for caller-supplied callback routine
+ *      These callbacks are intended to process 'insn' further, e.g. by
+ *      adding it to a linked list, database, etc */
+typedef void (*DISASM_CALLBACK)( x86_insn_t *insn, void * arg );
+
+/* Function prototype for caller-supplied address resolver.
+ *      This routine is used to determine the rva to disassemble next, given
+ *      the 'dest' operand of a jump/call. This allows the caller to resolve
+ *      jump/call targets stored in a register or on the stack, and also allows
+ *      the caller to prevent endless loops by checking if an address has
+ *      already been disassembled. If an address cannot be resolved from the
+ *      operand, or if the address has already been disassembled, this routine
+ *      should return -1; in all other cases the RVA to be disassembled next
+ *      should be returned. */
+typedef int32_t (*DISASM_RESOLVER)( x86_op_t *op, x86_insn_t * current_insn,
+				 void *arg );
+
+
+/* x86_disasm: Disassemble a single instruction from a buffer of bytes.
+ *             Returns size of instruction in bytes.
+ *             Caller is responsible for calling x86_oplist_free() on
+ *             a reused "insn" to avoid leaking memory when calling this
+ *             function repeatedly.
+ *      buf     : Buffer of bytes to disassemble
+ *      buf_len : Length of the buffer
+ *      buf_rva : Load address of the start of the buffer
+ *      offset  : Offset in buffer to disassemble
+ *      insn    : Structure to fill with disassembled instruction
+ */
+unsigned int x86_disasm( unsigned char *buf, unsigned int buf_len,
+                	 uint32_t buf_rva, unsigned int offset,
+                	 x86_insn_t * insn );
+
+/* x86_disasm_range: Sequential disassembly of a range of bytes in a buffer,
+ *                   invoking a callback function each time an instruction
+ *                   is successfully disassembled. The 'range' refers to the
+ *                   bytes between 'offset' and 'offset + len' in the buffer;
+ *                   'len' is assumed to be less than the length of the buffer.
+ *                   Returns number of instructions processed.
+ *      buf     : Buffer of bytes to disassemble (e.g. .text section)
+ *      buf_rva : Load address of buffer (e.g. ELF Virtual Address)
+ *      offset  : Offset in buffer to start disassembly at
+ *      len     : Number of bytes to disassemble
+ *      func    : Callback function to invoke (may be NULL)
+ *      arg     : Arbitrary data to pass to callback (may be NULL)
+ */
+unsigned int x86_disasm_range( unsigned char *buf, uint32_t buf_rva,
+	                       unsigned int offset, unsigned int len,
+	                       DISASM_CALLBACK func, void *arg );
+
+/* x86_disasm_forward: Flow-of-execution disassembly of the bytes in a buffer,
+ *                     invoking a callback function each time an instruction
+ *                     is successfully disassembled.
+ *      buf     : Buffer to disassemble (e.g. .text section)
+ *      buf_len : Number of bytes in buffer
+ *      buf_rva : Load address of buffer (e.g. ELF Virtual Address)
+ *      offset  : Offset in buffer to start disassembly at (e.g. entry point)
+ *      func    : Callback function to invoke (may be NULL)
+ *      arg     : Arbitrary data to pass to callback (may be NULL)
+ *      resolver: Caller-supplied address resolver. If no resolver is
+ *                supplied, a default internal one is used -- however the
+ *                internal resolver does NOT catch loops and could end up
+ *                disassembling forever..
+ *      r_arg	: Arbitrary data to pass to resolver (may be NULL)
+ */
+unsigned int x86_disasm_forward( unsigned char *buf, unsigned int buf_len,
+	                         uint32_t buf_rva, unsigned int offset,
+	                         DISASM_CALLBACK func, void *arg,
+	                         DISASM_RESOLVER resolver, void *r_arg );
+
+/* Instruction operands: these are stored as a list of explicit and
+ * implicit operands. It is recommended that the 'foreach' routines
+ * be used to when examining operands for purposes of data flow analysis */
+
+/* Operand FOREACH callback: 'arg' is an abritrary parameter passed to the
+ * foreach routine, 'insn' is the x86_insn_t whose operands are being
+ * iterated over, and 'op' is the current x86_op_t */
+typedef void (*x86_operand_fn)(x86_op_t *op, x86_insn_t *insn, void *arg);
+
+/* FOREACH types: these are used to limit the foreach results to 
+ * operands which match a certain "type" (implicit or explicit)
+ * or which are accessed in certain ways (e.g. read or write). Note
+ * that this operates on the operand list of single instruction, so
+ * specifying the 'real' operand type (register, memory, etc) is not
+ * useful. Note also that by definition Execute Access implies Read
+ * Access and implies Not Write Access.
+ * The "type" (implicit or explicit) and the access method can
+ * be ORed together, e.g. op_wo | op_explicit */
+enum x86_op_foreach_type {
+	op_any 	= 0,		/* ALL operands (explicit, implicit, rwx) */
+	op_dest = 1,		/* operands with Write access */
+	op_src 	= 2,		/* operands with Read access */
+	op_ro 	= 3,		/* operands with Read but not Write access */
+	op_wo 	= 4,		/* operands with Write but not Read access */
+	op_xo 	= 5,		/* operands with Execute access */
+	op_rw 	= 6,		/* operands with Read AND Write access */
+	op_implicit = 0x10,	/* operands that are implied by the opcode */
+	op_explicit = 0x20	/* operands that are not side-effects */
+};
+
+
+/* free the operand list associated with an instruction -- useful for
+ * preventing memory leaks when free()ing an x86_insn_t */
+void x86_oplist_free( x86_insn_t *insn );
+
+/* Operand foreach: invokes 'func' with 'insn' and 'arg' as arguments. The
+ * 'type' parameter is used to select only operands matching specific
+ * criteria. */
+int x86_operand_foreach( x86_insn_t *insn, x86_operand_fn func, void *arg,
+	       	  	 enum x86_op_foreach_type type);
+
+/* convenience routine: returns count of operands matching 'type' */
+size_t x86_operand_count( x86_insn_t *insn, enum x86_op_foreach_type type );
+
+/* accessor functions for the operands */
+x86_op_t * x86_operand_1st( x86_insn_t *insn );
+x86_op_t * x86_operand_2nd( x86_insn_t *insn );
+x86_op_t * x86_operand_3rd( x86_insn_t *insn );
+
+/* these allow libdisasm 2.0 accessor functions to still be used */
+#define x86_get_dest_operand( insn ) x86_operand_1st( insn )
+#define x86_get_src_operand( insn ) x86_operand_2nd( insn )
+#define x86_get_imm_operand( insn ) x86_operand_3rd( insn )
+
+/* get size of operand data in bytes */
+unsigned int x86_operand_size( x86_op_t *op );
+
+/* Operand Convenience Routines: the following three routines are common
+ * operations on operands, intended to ease the burden of the programmer. */
+
+/* Get Address: return the value of an offset operand, or the offset of
+ * a segment:offset absolute address */
+uint32_t x86_get_address( x86_insn_t *insn );
+
+/* Get Relative Offset: return as a sign-extended int32_t the near or far
+ * relative offset operand, or 0 if there is none. There can be only one
+ * relaive offset operand in an instruction. */
+int32_t x86_get_rel_offset( x86_insn_t *insn );
+
+/* Get Branch Target: return the x86_op_t containing the target of
+ * a jump or call operand, or NULL if there is no branch target. 
+ * Internally, a 'branch target' is defined as any operand with
+ * Execute Access set. There can be only one branch target per instruction. */
+x86_op_t * x86_get_branch_target( x86_insn_t *insn );
+
+/* Get Immediate: return the x86_op_t containing the immediate operand
+ * for this instruction, or NULL if there is no immediate operand. There
+ * can be only one immediate operand per instruction */
+x86_op_t * x86_get_imm( x86_insn_t *insn );
+
+/* Get Raw Immediate Data: returns a pointer to the immediate data encoded
+ * in the instruction. This is useful for large data types [>32 bits] currently
+ * not supported by libdisasm, or for determining if the disassembler
+ * screwed up the conversion of the immediate data. Note that 'imm' in this
+ * context refers to immediate data encoded at the end of an instruction as
+ * detailed in the Intel Manual Vol II Chapter 2; it does not refer to the
+ * 'op_imm' operand (the third operand in instructions like 'mul' */
+unsigned char * x86_get_raw_imm( x86_insn_t *insn );
+
+
+/* More accessor fuctions, this time for user-defined info... */
+/* set the address (usually RVA) of the insn */
+void x86_set_insn_addr( x86_insn_t *insn, uint32_t addr );
+
+/* set the offset (usually offset into file) of the insn */
+void x86_set_insn_offset( x86_insn_t *insn, unsigned int offset );
+
+/* set a pointer to the function owning the instruction. The 
+ * type of 'func' is user-defined; libdisasm does not use the func field. */
+void x86_set_insn_function( x86_insn_t *insn, void * func );
+
+/* set a pointer to the block of code owning the instruction. The 
+ * type of 'block' is user-defined; libdisasm does not use the block field. */
+void x86_set_insn_block( x86_insn_t *insn, void * block );
+
+/* instruction tagging: these routines allow the programmer to mark
+ * instructions as "seen" in a DFS, for example. libdisasm does not use
+ * the tag field.*/ 
+/* set insn->tag to 1 */
+void x86_tag_insn( x86_insn_t *insn );
+/* set insn->tag to 0 */
+void x86_untag_insn( x86_insn_t *insn );
+/* return insn->tag */
+int x86_insn_is_tagged( x86_insn_t *insn );
+
+
+/* Disassembly formats:
+ *      AT&T is standard AS/GAS-style: "mnemonic\tsrc, dest, imm"
+ *      Intel is standard MASM/NASM/TASM: "mnemonic\tdest,src, imm"
+ *      Native is tab-delimited: "RVA\tbytes\tmnemonic\tdest\tsrc\timm"
+ *      XML is your typical <insn> ... </insn>
+ *      Raw is addr|offset|size|bytes|prefix... see libdisasm_formats.7
+ */
+enum x86_asm_format { 
+	unknown_syntax = 0,		/* never use! */
+	native_syntax, 			/* header: 35 bytes */
+	intel_syntax, 			/* header: 23 bytes */
+	att_syntax,  			/* header: 23 bytes */
+	xml_syntax,			/* header: 679 bytes */
+	raw_syntax			/* header: 172 bytes */
+};
+
+/* format (sprintf) an operand into 'buf' using specified syntax */
+int x86_format_operand(x86_op_t *op, char *buf, int len,
+                  enum x86_asm_format format);
+
+/* format (sprintf) an instruction mnemonic into 'buf' using specified syntax */
+int x86_format_mnemonic(x86_insn_t *insn, char *buf, int len,
+                        enum x86_asm_format format);
+
+/* format (sprintf) an instruction into 'buf' using specified syntax;
+ * this includes formatting all operands */
+int x86_format_insn(x86_insn_t *insn, char *buf, int len, enum x86_asm_format);
+
+/* fill 'buf' with a description of the format's syntax */
+int x86_format_header( char *buf, int len, enum x86_asm_format format);
+
+/* Endianness of an x86 CPU : 0 is big, 1 is little; always returns 1 */
+unsigned int x86_endian(void);
+
+/* Default address and operand size in bytes */
+unsigned int x86_addr_size(void);
+unsigned int x86_op_size(void);
+
+/* Size of a machine word in bytes */
+unsigned int x86_word_size(void);
+
+/* maximum size of a code instruction */
+#define x86_max_inst_size(x) x86_max_insn_size(x)
+unsigned int x86_max_insn_size(void);
+
+/* register IDs of Stack, Frame, Instruction pointer and Flags register */
+unsigned int x86_sp_reg(void);
+unsigned int x86_fp_reg(void);
+unsigned int x86_ip_reg(void);
+unsigned int x86_flag_reg(void);
+
+/* fill 'reg' struct with details of register 'id' */
+void x86_reg_from_id( unsigned int id, x86_reg_t * reg );
+
+/* convenience macro demonstrating how to get an aliased register; proto is
+ *   void x86_get_aliased_reg( x86_reg_t *alias_reg, x86_reg_t *output_reg )
+ * where 'alias_reg' is a reg operand and 'output_reg' is filled with the
+ * register that the operand is an alias for */
+#define x86_get_aliased_reg( alias_reg, output_reg )			\
+	x86_reg_from_id( alias_reg->alias, output_reg )
+
+
+/* ================================== Invariant Instruction Representation */
+/* Invariant instructions are used for generating binary signatures; 
+ * the instruction is modified so that all variant bytes in an instruction
+ * are replaced with a wildcard byte. 
+ *
+ * A 'variant byte' is one that is expected to be modified by either the 
+ * static or the dynamic linker: for example, an address encoded in an 
+ * instruction. 
+ *
+ * By comparing the invariant representation of one instruction [or of a
+ * sequence of instructions] with the invariant representation of another,
+ * one determine whether the two invariant representations are from the same
+ * relocatable object [.o] file. Thus one can use binary signatures [which
+ * are just sequences of invariant instruction representations] to look for
+ * library routines which have been statically-linked into a binary.
+ *
+ * The invariant routines are faster and smaller than the disassembly
+ * routines; they can be used to determine the size of an instruction 
+ * without all of the overhead of a full instruction disassembly.
+ */
+
+/* This byte is used to replace variant bytes */
+#define X86_WILDCARD_BYTE 0xF4
+
+typedef struct {
+        enum x86_op_type        type;           /* operand type */
+        enum x86_op_datatype    datatype;       /* operand size */
+        enum x86_op_access      access;         /* operand access [RWX] */
+        enum x86_op_flags       flags;          /* misc flags */
+} x86_invariant_op_t;
+
+typedef struct {
+	unsigned char bytes[64];	/* invariant representation */
+	unsigned int  size;		/* number of bytes in insn */
+        enum x86_insn_group group;      /* meta-type, e.g. INS_EXEC */
+        enum x86_insn_type type;        /* type, e.g. INS_BRANCH */
+	x86_invariant_op_t operands[3];	/* operands: dest, src, imm */
+} x86_invariant_t;
+ 
+
+/* return a version of the instruction with the variant bytes masked out */
+size_t x86_invariant_disasm( unsigned char *buf, int buf_len, 
+			  x86_invariant_t *inv );
+/* return the size in bytes of the intruction pointed to by 'buf';
+ * this used x86_invariant_disasm since it faster than x86_disasm */
+size_t x86_size_disasm( unsigned char *buf, unsigned int buf_len );
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif
diff --git a/google-breakpad/src/third_party/libdisasm/libdisasm.gyp b/google-breakpad/src/third_party/libdisasm/libdisasm.gyp
new file mode 100644
index 0000000..c48ac82
--- /dev/null
+++ b/google-breakpad/src/third_party/libdisasm/libdisasm.gyp
@@ -0,0 +1,64 @@
+# Copyright 2014 Google Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+{
+  'targets': [
+    {
+      'target_name': 'libdisasm',
+      'type': 'static_library',
+      'sources': [
+	'ia32_implicit.c',
+	'ia32_implicit.h',
+	'ia32_insn.c',
+	'ia32_insn.h',
+	'ia32_invariant.c',
+	'ia32_invariant.h',
+	'ia32_modrm.c',
+	'ia32_modrm.h',
+	'ia32_opcode_tables.c',
+	'ia32_opcode_tables.h',
+	'ia32_operand.c',
+	'ia32_operand.h',
+	'ia32_reg.c',
+	'ia32_reg.h',
+	'ia32_settings.c',
+	'ia32_settings.h',
+	'libdis.h',
+	'qword.h',
+	'x86_disasm.c',
+	'x86_format.c',
+	'x86_imm.c',
+	'x86_imm.h',
+	'x86_insn.c',
+	'x86_misc.c',
+	'x86_operand_list.c',
+	'x86_operand_list.h',
+      ],
+    },
+  ],
+}
diff --git a/google-breakpad/src/third_party/libdisasm/qword.h b/google-breakpad/src/third_party/libdisasm/qword.h
new file mode 100644
index 0000000..5f0e803
--- /dev/null
+++ b/google-breakpad/src/third_party/libdisasm/qword.h
@@ -0,0 +1,14 @@
+#ifndef LIBDISASM_QWORD_H
+#define LIBDISASM_QWORD_H
+
+#include <stdint.h>
+
+/* platform independent data types */
+
+#ifdef _MSC_VER
+	typedef __int64         qword_t;
+#else
+	typedef int64_t         qword_t;
+#endif
+
+#endif
diff --git a/google-breakpad/src/third_party/libdisasm/swig/Makefile b/google-breakpad/src/third_party/libdisasm/swig/Makefile
new file mode 100644
index 0000000..44ef486
--- /dev/null
+++ b/google-breakpad/src/third_party/libdisasm/swig/Makefile
@@ -0,0 +1,70 @@
+# change these values if you need to
+SWIG		=	swig	# apt-get install swig !
+GCC		=	gcc
+
+CC_FLAGS	=	-c -fPIC
+LD_FLAGS	=	-shared -L../.. -ldisasm
+
+BASE_NAME	=	x86disasm
+
+export INTERFACE_FILE BASE_NAME SWIG GCC CC_FLAGS LD_FLAGS
+
+#====================================================
+# TARGETS
+
+all: swig
+dummy: swig swig-python swig-ruby swig-perl swig-tcl install uninstall clean
+
+swig: swig-python swig-perl
+# swig-rub swig-tcl
+
+swig-python: 
+	cd python && make -f Makefile-swig
+
+swig-ruby:
+	cd ruby && make -f Makefile-swig
+
+swig-perl:
+	cd perl && make -f Makefile-swig
+
+swig-tcl:
+	cd tcl && make -f Makefile-swig
+
+# ==================================================================
+install: install-python install-perl
+# install-ruby install-tcl
+
+install-python:
+	cd python && sudo make -f Makefile-swig install
+
+install-ruby:
+	cd ruby && sudo make -f Makefile-swig install
+
+install-perl:
+	cd perl && sudo make -f Makefile-swig install
+
+install-tcl:
+	cd tcl && sudo make -f Makefile-swig install
+
+# ==================================================================
+uninstall: uninstall-python
+#uninstall-ruby uninstall-perl uninstall-tcl
+
+uninstall-python:
+	cd python && sudo make -f Makefile-swig uninstall
+
+uninstall-ruby:
+	cd ruby && sudo make -f Makefile-swig uninstall
+
+uninstall-perl:
+	cd perl && sudo make -f Makefile-swig uninstall
+
+uninstall-tcl:
+	cd tcl && sudo make -f Makefile-swig uninstall
+
+# ==================================================================
+clean:
+	cd python && make -f Makefile-swig clean
+	cd ruby && make -f Makefile-swig clean
+	cd perl && make -f Makefile-swig clean
+	cd tcl && make -f Makefile-swig clean
diff --git a/google-breakpad/src/third_party/libdisasm/swig/README b/google-breakpad/src/third_party/libdisasm/swig/README
new file mode 100644
index 0000000..a9fa79e
--- /dev/null
+++ b/google-breakpad/src/third_party/libdisasm/swig/README
@@ -0,0 +1,128 @@
+			Libdisasm SWIG README
+
+The SWIG utility (www.swig.org) can be used to generate 
+
+
+Building SWIG Modules
+---------------------
+
+	make
+	make install
+
+Make and Install both build Python, Perl, Ruby, and Tcl modules. If you
+do not have one of these languages installed, comment out the relevant
+target in the main Makefile.
+
+Install uses 'sudo' to put files in the correct locations; if you
+do not have sudo installed, change the install targets.
+
+The Module API
+--------------
+
+The OOP API
+-----------
+
+
+The Python Module
+-----------------
+
+To test that the module loads:
+
+	bash# python
+	>>> import x86disasm
+	>>> x86disasm.version_string()
+	'0.21-pre'
+	>>>^D
+	bash#
+
+	>>> import x86disasm
+	>>> import array
+	>>> disasm = x86disasm.X86_Disasm( )
+	>>> tgt = open( "/tmp/a.out", "rb" )
+	>>> tgt.seek( 0, 2 )
+	>>> size = tgt.tell()
+	>>> tgt.seek( 0, 0 )
+	>>> buf = array.array( 'B' )
+	>>> buf.fromfile( tgt, size )
+	>>> tgt.close()
+	>>> data = x86disasm.byteArray( size )
+	>>> for i in range( size ):
+	...     data[i] = buf.pop(0)
+	...
+	>>> del buf
+	>>> del tgt
+	>>> insn = disasm.disasm( data, size - 1, 0, 0 )
+	>>> insn.format( x86disasm.att_syntax )
+	 'jg\t0x00000047'
+	>>> insn.format( x86disasm.raw_syntax )
+	'0x00000000|0x00000000|2|7F 45 |||controlflow|jcc|jg|80386|General Purpose|||zero_clear sign_eq_oflow |0|0|relative|sbyte|00000047|'
+	>>> ops = insn.operand_list()
+	>>> node = ops.first()
+	>>> while node is not None:
+	...     s = node.op.format(x86disasm.raw_syntax)
+	...     print s
+	...     node = ops.next()
+	... 
+	relative|sbyte|00000047|
+
+
+
+
+
+
+The Perl Module
+---------------
+
+To test that the module loads:
+
+	bash# perl
+	use x86disasm;
+	print x86disasm::version_string() . "\n";
+	^D
+	0.21-pre
+	bash#
+
+The Ruby Module
+---------------
+
+To test that the module loads:
+
+	bash# irb
+	irb(main):001:0> require 'x86disasm'
+	=> true
+	irb(main):002:0> X86disasm.version_string()
+	=> "0.21-pre"
+	irb(main):003:0> x = X86disasm::X86_Disasm.new
+	=> #<X86disasm::X86_Disasm:0xb7d624a4>
+	irb(main):004:0> x.max_register_string()
+	=> 8
+	irb(main):003:0> ^D
+	bash#
+
+The Tcl Module
+---------------
+
+To test that the module loads:
+
+	bash# tclsh
+	% load /usr/lib/tcl8.3/x86disasm.so X86disasm
+	% version_string
+	0.21-pre
+	% ^D
+	bash#
+
+	% x86_init 0 NULL NULL
+		OR
+	% x86disasm dis
+	_486b0708_p_x86disasm
+	%  puts "[dis cget -last_error]"
+	0
+
+
+
+
+The Interface Files
+-------------------
+
+	libdisasm.i	-- interface file without shadow classes
+	libdisasm_oop.i	-- interface file with shadow classes
diff --git a/google-breakpad/src/third_party/libdisasm/swig/libdisasm.i b/google-breakpad/src/third_party/libdisasm/swig/libdisasm.i
new file mode 100644
index 0000000..ec12041
--- /dev/null
+++ b/google-breakpad/src/third_party/libdisasm/swig/libdisasm.i
@@ -0,0 +1,508 @@
+%module x86disasm
+%{
+#include "../../libdis.h"
+#include "../../../config.h"
+%}
+
+%rename(version_string) x86_version_string;
+%include "../../libdis.h"
+#include "../../../config.h"
+
+%inline %{
+	const char * x86_version_string( void ) {
+		return PACKAGE_VERSION;
+	}
+%}
+
+%rename(report_codes) x86_report_codes;
+%rename(report_error) x86_report_error;
+%rename(options) x86_options;
+%rename(init) x86_init;
+%rename(set_reporter) x86_set_reporter;
+%rename(set_options) x86_set_options;
+%rename(options) x86_get_options;
+%rename(cleanup) x86_cleanup;
+%rename(reg_type) x86_reg_type;
+%rename(reg) x86_reg_t;
+%rename(eaddr) x86_ea_t;
+%rename(op_type) x86_op_type;
+%rename(optype_is_address) x86_optype_is_address;
+%rename(optype_is_relative) x86_optype_is_relative;
+%rename(op_datatype) x86_op_datatype;
+%rename(op_access) x86_op_access;
+%rename(op_flags) x86_op_flags;
+%rename(operand) x86_op_t;
+%rename(insn_group) x86_insn_group; 
+%rename(insn_type) x86_insn_type;
+%rename(insn_note) x86_insn_note ;
+%rename(flag_status) x86_flag_status; 
+%rename(insn_cpu) x86_insn_cpu ;
+%rename(insn_isa) x86_insn_isa ;
+%rename(insn_prefix) x86_insn_prefix ;
+%rename(insn) x86_insn_t;
+%rename(insn_is_valid) x86_insn_is_valid;
+%rename(i_disasm) x86_disasm;
+%rename(i_disasm_range) x86_disasm_range;
+%rename(i_disasm_forward) x86_disasm_forward;
+%rename(insn_operand_count) x86_operand_count;
+%rename(insn_operand_1st) x86_operand_1st;
+%rename(insn_operand_2nd) x86_operand_2nd;
+%rename(insn_operand_3rd) x86_operand_3rd;
+%rename(insn_dest_operand) x86_get_dest_operand;
+%rename(insn_src_operand) x86_get_src_operand;
+%rename(insn_imm_operand) x86_get_imm_operand;
+%rename(operand_size) x86_operand_size;
+%rename(insn_rel_offset) x86_get_rel_offset;
+%rename(insn_branch_target) x86_get_branch_target;
+%rename(insn_imm) x86_get_imm;
+%rename(insn_raw_imm) x86_get_raw_imm;
+%rename(insn_set_addr) x86_set_insn_addr;
+%rename(insn_set_offset) x86_set_insn_offset;
+%rename(insn_set_function) x86_set_insn_function;
+%rename(insn_set_block) x86_set_insn_block;
+%rename(insn_tag) x86_tag_insn;
+%rename(insn_untag) x86_untag_insn;
+%rename(insn_is_tagged) x86_insn_is_tagged;
+%rename(asm_format) x86_asm_format;
+%rename(operand_format) x86_format_operand;
+%rename(insn_format_mnemonic) x86_format_mnemonic;
+%rename(insn_format) x86_format_insn;
+%rename(header_format) x86_format_header;
+%rename(endian) x86_endian;
+%rename(size_default_address) x86_addr_size;
+%rename(size_default_operand) x86_op_size;
+%rename(size_machine_word) x86_word_size;
+%rename(size_max_insn) x86_max_insn_size;
+%rename(reg_sp) x86_sp_reg;
+%rename(reg_fp) x86_fp_reg;
+%rename(reg_ip) x86_ip_reg;
+%rename(reg_from_id) x86_reg_from_id;
+%rename(reg_from_alias) x86_get_aliased_reg;
+%rename(invariant_op) x86_invariant_op_t;
+%rename(invariant) x86_invariant_t;
+%rename(disasm_invariant) x86_invariant_disasm;
+%rename(disasm_size) x86_size_disasm;
+
+%include "carrays.i"
+
+%array_class( unsigned char, byteArray );
+
+
+%apply (unsigned char *STRING, int LENGTH) { 
+	(unsigned char *buf, size_t buf_len) 
+};
+
+
+%newobject x86_op_copy;
+%inline %{
+	x86_op_t * x86_op_copy( x86_op_t * src ) {
+		x86_op_t *op;
+		
+		if (! src ) {
+			return NULL;
+		}
+
+		op = (x86_op_t *) calloc( sizeof(x86_op_t), 1 );
+		if ( op ) {
+			memcpy( op, src, sizeof(x86_op_t) );
+		}
+
+		return op;
+	}
+
+	typedef struct x86_op_list_node {
+		x86_op_t *op;
+		struct x86_op_list_node *next, *prev;
+	} x86_op_list_node;
+
+	typedef struct x86_op_list {
+		size_t count;
+		x86_op_list_node *head, *tail, *curr;
+	} x86_op_list;
+
+	x86_op_list * x86_op_list_new () {
+		x86_op_list *list = (x86_op_list *) 
+				calloc( sizeof(x86_op_list), 1 );
+		list->count = 0;
+		return list;
+	}
+
+	void x86_op_list_free(x86_op_list *list) {
+		x86_op_list_node *node, *next;
+
+		node = list->head;
+		while ( node ) {
+			next = node->next;
+			/* free( node->insn ); */
+			free( node );
+			node = next;
+		}
+
+		free( list );
+	}
+
+	x86_op_list_node * x86_op_list_first(x86_op_list *list) { 
+		return list->head; 
+	}
+
+	x86_op_list_node * x86_op_list_last(x86_op_list *list) { 
+		return list->tail; 
+	}
+
+	x86_op_list_node * x86_op_list_next(x86_op_list *list) { 
+		if (! list->curr ) {
+			list->curr = list->head;
+			return list->head;
+		}
+
+		list->curr = list->curr->next;
+		return list->curr;
+	}
+
+	x86_op_list_node * x86_op_list_prev(x86_op_list *list) { 
+		if (! list->curr ) {
+			list->curr = list->tail;
+			return list->tail;
+		}
+
+		list->curr = list->curr->prev;
+		return list->curr;
+	}
+
+%}
+
+%newobject x86_op_list_append;
+
+%inline %{
+	void x86_op_list_append( x86_op_list * list, x86_op_t *op ) {
+		x86_op_list_node *node = (x86_op_list_node *)
+					calloc( sizeof(x86_op_list_node) , 1 );
+		if (! node ) {
+			return;
+		}
+
+		list->count++;
+		if ( ! list->tail ) {
+			list->head = list->tail = node;
+		} else {
+			list->tail->next = node;
+			node->prev = list->tail;
+			list->tail = node;
+		}
+
+		node->op = x86_op_copy( op );
+	}
+
+	x86_oplist_t * x86_op_list_node_copy( x86_oplist_t * list ) {
+		x86_oplist_t *ptr;
+		ptr = (x86_oplist_t *) calloc( sizeof(x86_oplist_t), 1 );
+		if ( ptr ) {
+			memcpy( &ptr->op, &list->op, sizeof(x86_op_t) );
+		}
+
+		return ptr;
+	}
+
+	x86_insn_t * x86_insn_new() {
+		x86_insn_t *insn = (x86_insn_t *)
+				   calloc( sizeof(x86_insn_t), 1 );
+		return insn;
+	}
+
+	void x86_insn_free( x86_insn_t *insn ) {
+		x86_oplist_free( insn );
+		free( insn );
+	}
+%}
+
+%newobject x86_insn_copy;
+
+%inline %{
+	x86_insn_t * x86_insn_copy( x86_insn_t *src) {
+		x86_oplist_t *ptr, *list, *last = NULL;
+		x86_insn_t *insn = (x86_insn_t *)
+				   calloc( sizeof(x86_insn_t), 1 );
+
+		if ( insn ) {
+			memcpy( insn, src, sizeof(x86_insn_t) );
+			insn->operands = NULL;
+			insn->block = NULL;
+			insn->function = NULL;
+
+			/* copy operand list */
+			for ( list = src->operands; list; list = list->next ) {
+				ptr = x86_op_list_node_copy( list );
+
+				if (! ptr ) {
+					continue;
+				}
+
+				if ( insn->operands ) {
+					last->next = ptr;
+				} else {
+					insn->operands = ptr;
+				}
+				last = ptr;
+			}
+		}
+
+		return insn;
+	}
+
+	x86_op_list * x86_insn_op_list( x86_insn_t *insn ) {
+		x86_oplist_t *list = insn->operands;
+		x86_op_list *op_list = x86_op_list_new();
+
+		for ( list = insn->operands; list; list = list->next ) {
+			x86_op_list_append( op_list, &list->op );
+		}
+
+		return op_list;
+	}
+
+	typedef struct x86_insn_list_node {
+		x86_insn_t *insn;
+		struct x86_insn_list_node *next, *prev;
+	} x86_insn_list_node;
+
+	typedef struct x86_insn_list {
+		size_t count;
+		x86_insn_list_node *head, *tail, *curr;
+	} x86_insn_list;
+
+%}
+
+%newobject x86_insn_list_new;
+
+%inline %{
+	x86_insn_list * x86_insn_list_new () {
+		x86_insn_list *list = (x86_insn_list *) 
+				calloc( sizeof(x86_insn_list), 1 );
+		list->count = 0;
+		return list;
+	}
+
+	void x86_insn_list_free( x86_insn_list * list ) {
+		x86_insn_list_node *node, *next;
+
+		if (! list ) {
+			return;
+		}
+
+		node = list->head;
+		while ( node ) {
+			next = node->next;
+			/* free( node->insn ); */
+			free( node );
+			node = next;
+		}
+
+		free( list );
+	}
+
+	x86_insn_list_node * x86_insn_list_first( x86_insn_list *list ) { 
+		if (! list ) {
+			return NULL;
+		}
+		return list->head; 
+	}
+
+	x86_insn_list_node * x86_insn_list_last( x86_insn_list *list ) { 
+		if (! list ) {
+			return NULL;
+		}
+		return list->tail; 
+	}
+
+	x86_insn_list_node * x86_insn_list_next( x86_insn_list *list ) { 
+		if (! list ) {
+			return NULL;
+		}
+		if (! list->curr ) {
+			list->curr = list->head;
+			return list->head;
+		}
+
+		list->curr = list->curr->next;
+		return list->curr;
+	}
+
+	x86_insn_list_node * x86_insn_list_prev( x86_insn_list *list ) { 
+		if (! list ) {
+			return NULL;
+		}
+		if (! list->curr ) {
+			list->curr = list->tail;
+			return list->tail;
+		}
+
+		list->curr = list->curr->prev;
+		return list->curr;
+	}
+
+%}
+
+%newobject x86_insn_list_append;
+
+%inline %{
+	void x86_insn_list_append( x86_insn_list *list, x86_insn_t *insn ) {
+		x86_insn_list_node *node;
+		if (! list ) {
+			return;
+		}
+
+		node = (x86_insn_list_node *)
+					calloc( sizeof(x86_insn_list_node) , 1 );
+
+		if (! node ) {
+			return;
+		}
+
+		list->count++;
+		if ( ! list->tail ) {
+			list->head = list->tail = node;
+		} else {
+			list->tail->next = node;
+			node->prev = list->tail;
+			list->tail = node;
+		}
+
+		node->insn = x86_insn_copy( insn );
+	}
+
+	typedef struct {
+		enum x86_report_codes last_error;
+		void * last_error_data;
+		void * disasm_callback;
+		void * disasm_resolver;
+	} x86disasm;
+
+	void x86_default_reporter( enum x86_report_codes code, 
+				   void *data, void *arg ) {
+		x86disasm *dis = (x86disasm *) arg;
+		if ( dis ) {
+			dis->last_error = code;
+			dis->last_error_data = data;
+		}
+	}
+
+	void x86_default_callback( x86_insn_t *insn, void *arg ) {
+		x86_insn_list *list = (x86_insn_list *) arg;
+		if ( list ) {
+			x86_insn_list_append( list, insn );
+		}
+	}
+
+	/* TODO: resolver stack, maybe a callback */
+	long x86_default_resolver( x86_op_t *op, x86_insn_t *insn, void *arg ) {
+		x86disasm *dis = (x86disasm *) arg;
+		if ( dis ) {
+			//return dis->resolver( op, insn );
+			return 0;
+		}
+
+		return 0;
+	}
+
+	
+%}
+
+%newobject x86disasm_new;
+
+%inline %{
+	x86disasm * x86disasm_new ( enum x86_options options ) {
+		x86disasm * dis = (x86disasm *)
+				calloc( sizeof( x86disasm ), 1 );
+		x86_init( options, x86_default_reporter, dis );
+		return dis;
+	}
+
+	void x86disasm_free( x86disasm * dis ) {
+		x86_cleanup();
+		free( dis );
+	}
+%}
+
+%newobject x86_disasm;
+
+%inline %{
+	x86_insn_t * disasm( unsigned char *buf, size_t buf_len, 
+		           unsigned long buf_rva, unsigned int offset ) {
+		x86_insn_t *insn = calloc( sizeof( x86_insn_t ), 1 );
+		x86_disasm( buf, buf_len, buf_rva, offset, insn );
+		return insn;
+	}
+
+	int disasm_range( unsigned char *buf, size_t buf_len, 
+	              unsigned long buf_rva, unsigned int offset,
+		      unsigned int len ) {
+
+		x86_insn_list *list = x86_insn_list_new();
+
+		if ( len > buf_len ) {
+			len = buf_len;
+		}
+
+		return x86_disasm_range( buf, buf_rva, offset, len, 
+				x86_default_callback, list );
+	}
+
+	int disasm_forward( unsigned char *buf, size_t buf_len,
+			    unsigned long buf_rva, unsigned int offset ) {
+		x86_insn_list *list = x86_insn_list_new();
+
+		/* use default resolver: damn SWIG callbacks! */
+		return x86_disasm_forward( buf, buf_len, buf_rva, offset,
+			                   x86_default_callback, list, 
+					   x86_default_resolver, NULL );
+	}
+
+	size_t disasm_invariant( unsigned char *buf, size_t buf_len, 
+			  x86_invariant_t *inv ) {
+		return x86_invariant_disasm( buf, buf_len, inv );
+	}
+
+	size_t disasm_size( unsigned char *buf, size_t buf_len ) {
+		return x86_size_disasm( buf, buf_len );
+	}
+
+	int x86_max_operand_string( enum x86_asm_format format ) {
+		switch ( format ) {
+			case xml_syntax:
+				return  MAX_OP_XML_STRING;
+				break;
+			case raw_syntax:
+				return MAX_OP_RAW_STRING;
+				break;
+			case native_syntax:
+			case intel_syntax:
+			case att_syntax:
+			case unknown_syntax:
+			default:
+				return MAX_OP_STRING;
+				break;
+		}
+	}
+
+
+	int x86_max_insn_string( enum x86_asm_format format ) {
+		switch ( format ) {
+			case xml_syntax:
+				return  MAX_INSN_XML_STRING;
+				break;
+			case raw_syntax:
+				return MAX_INSN_RAW_STRING;
+				break;
+			case native_syntax:
+			case intel_syntax:
+			case att_syntax:
+			case unknown_syntax:
+			default:
+				return MAX_INSN_STRING;
+				break;
+		}
+	}
+
+	int x86_max_num_operands( ) { return MAX_NUM_OPERANDS; }
+%}
+
diff --git a/google-breakpad/src/third_party/libdisasm/swig/libdisasm_oop.i b/google-breakpad/src/third_party/libdisasm/swig/libdisasm_oop.i
new file mode 100644
index 0000000..973a47e
--- /dev/null
+++ b/google-breakpad/src/third_party/libdisasm/swig/libdisasm_oop.i
@@ -0,0 +1,1114 @@
+%module x86disasm
+%{
+#ifdef _MSC_VER
+	typedef __int64         qword;
+#else
+	typedef long long       qword;
+#endif
+
+#include <sys/types.h>
+
+#define MAX_REGNAME 8
+#define MAX_PREFIX_STR 32
+#define MAX_MNEM_STR 16
+#define MAX_INSN_SIZE 20
+#define MAX_OP_STRING 32
+#define MAX_OP_RAW_STRING 64
+#define MAX_OP_XML_STRING 256
+#define MAX_NUM_OPERANDS 8
+#define MAX_INSN_STRING 512
+#define MAX_INSN_RAW_STRING 1024
+#define MAX_INSN_XML_STRING 4096
+
+#include "../../../config.h"
+
+
+const char * version_string( void ) {
+	return PACKAGE_VERSION;
+}
+
+%}
+
+const char * version_string( void );
+
+%rename(X86_Register) x86_reg_t;
+%rename(X86_EAddr) x86_ea_t;
+%rename(X86_Operand) x86_op_t;
+//%rename(X86_OpList) x86_oplist_t;
+%rename(X86_Insn) x86_insn_t;
+%rename(X86_InvOperand) x86_invariant_op_t;
+%rename(X86_Invariant) x86_invariant_t;
+
+%include "carrays.i"
+
+%array_class( unsigned char, byteArray );
+
+
+%apply (unsigned char *STRING, int LENGTH) { 
+	(unsigned char *buf, size_t buf_len) 
+};
+
+
+%inline %{
+
+
+enum x86_asm_format { 
+	unknown_syntax = 0,		/* never use! */
+	native_syntax, 			/* header: 35 bytes */
+	intel_syntax, 			/* header: 23 bytes */
+	att_syntax,  			/* header: 23 bytes */
+	xml_syntax,			/* header: 679 bytes */
+	raw_syntax			/* header: 172 bytes */
+};
+%}
+
+/* ================================================================== */
+/* operand class */
+%inline %{
+	enum x86_reg_type {
+	        reg_gen         = 0x00001, reg_in          = 0x00002,
+	        reg_out         = 0x00004, reg_local       = 0x00008,
+	        reg_fpu         = 0x00010, reg_seg         = 0x00020,
+	        reg_simd        = 0x00040, reg_sys         = 0x00080,
+	        reg_sp          = 0x00100, reg_fp          = 0x00200,
+	        reg_pc          = 0x00400, reg_retaddr     = 0x00800,
+	        reg_cond        = 0x01000, reg_zero        = 0x02000,
+	        reg_ret         = 0x04000, reg_src         = 0x10000,
+	        reg_dest        = 0x20000, reg_count       = 0x40000
+	};
+
+	typedef struct {
+       	 	char name[MAX_REGNAME];
+	        enum x86_reg_type type;
+	        unsigned int size;
+	        unsigned int id;
+		unsigned int alias;
+		unsigned int shift;
+	} x86_reg_t;
+
+	void x86_reg_from_id( unsigned int id, x86_reg_t * reg );
+
+	typedef struct {
+	        unsigned int     scale;
+	        x86_reg_t        index, base;
+	        long             disp;
+	        char             disp_sign;
+	        char             disp_size;
+	} x86_ea_t;
+
+	enum x86_op_type {
+	        op_unused = 0,
+	        op_register = 1,
+	        op_immediate = 2,
+	        op_relative_near = 3,
+	        op_relative_far = 4,
+	        op_absolute = 5, 
+	        op_expression = 6,
+	        op_offset = 7,
+	        op_unknown
+	};
+
+	enum x86_op_datatype {
+	       	op_byte = 1, op_word = 2,
+	        op_dword = 3, op_qword = 4,
+	        op_dqword = 5, op_sreal = 6,
+	        op_dreal = 7, op_extreal = 8,
+	        op_bcd = 9,  op_ssimd = 10,
+	        op_dsimd = 11, op_sssimd = 12,
+	        op_sdsimd = 13, op_descr32 = 14,
+		op_descr16 = 15, op_pdescr32 = 16,
+		op_pdescr16 = 17, op_fpuenv = 18,
+		op_fpregset = 19,
+	};
+
+	enum x86_op_access {
+	        op_read = 1,
+	        op_write = 2,
+	        op_execute = 4
+	};
+
+	enum x86_op_flags {
+	        op_signed = 1, op_string = 2, 
+	        op_constant = 4, op_pointer = 8,  
+		op_sysref = 0x010, op_implied = 0x020,
+		op_hardcode = 0x40, op_es_seg = 0x100,
+	        op_cs_seg = 0x200, op_ss_seg = 0x300,
+	        op_ds_seg = 0x400, op_fs_seg = 0x500,
+	        op_gs_seg = 0x600
+	};
+
+	typedef struct {
+	        enum x86_op_type        type;
+	        enum x86_op_datatype    datatype;
+	        enum x86_op_access      access;
+	        enum x86_op_flags       flags;
+	        union {
+	                char            sbyte;
+	                short           sword;
+	                long            sdword;
+	                qword           sqword;
+	                unsigned char   byte;
+	       	         unsigned short  word;
+	                unsigned long   dword;
+	                qword           qword;
+	                float           sreal;
+	                double          dreal;
+	                unsigned char   extreal[10];
+	                unsigned char   bcd[10];
+	                qword           dqword[2];
+	                unsigned char   simd[16];
+	                unsigned char   fpuenv[28];
+	                void            * address;
+	                unsigned long   offset;
+	                x86_reg_t       reg;
+	                char            relative_near;
+	       	         long            relative_far;
+       	         	x86_ea_t        expression;
+        	} data;
+		void * insn;
+	} x86_op_t;
+
+	unsigned int x86_operand_size( x86_op_t *op );
+
+	int x86_format_operand(x86_op_t *op, char *buf, int len,
+        	          enum x86_asm_format format);
+%}
+
+%extend x86_reg_t{
+	x86_reg_t * aliased_reg( ) {
+		x86_reg_t * reg = (x86_reg_t * )
+				  calloc( sizeof(x86_reg_t), 1 );
+		x86_reg_from_id( self->id, reg );
+		return reg;
+	}
+}
+
+%extend x86_op_t{
+	size_t size() {
+		return x86_operand_size( self );
+	}
+	char * format( enum x86_asm_format format ) {
+		char *buf, *str;
+		size_t len;
+
+		switch ( format ) {
+			case xml_syntax:
+				len = MAX_OP_XML_STRING;
+				break;
+			case raw_syntax:
+				len = MAX_OP_RAW_STRING;
+				break;
+			case native_syntax:
+			case intel_syntax:
+			case att_syntax:
+			case unknown_syntax:
+			default:
+				len = MAX_OP_STRING;
+				break;
+		}
+
+		buf = (char * ) calloc( len + 1, 1 );
+		x86_format_operand( self, buf, len, format );
+
+		/* drop buffer down to a reasonable size */
+		str = strdup( buf );
+		free(buf);
+		return str;
+	}
+	
+	int is_address( ) {
+		if ( self->type == op_absolute ||
+		     self->type == op_offset ) {
+		     return 1;
+		}
+
+		return 0;
+	}
+
+	int is_relative( ) {
+		if ( self->type == op_relative_near ||
+		     self->type == op_relative_far ) {
+		     return 1;
+		}
+
+		return 0;
+	}
+
+	%newobject copy;
+	x86_op_t * copy() {
+		x86_op_t *op = (x86_op_t *) calloc( sizeof(x86_op_t), 1 );
+
+		if ( op ) {
+			memcpy( op, self, sizeof(x86_op_t) );
+		}
+
+		return op;
+	}
+}
+
+/* ================================================================== */
+/* operand list class */
+%inline %{
+	typedef struct X86_OpListNode {
+		x86_op_t *op;
+		struct X86_OpListNode *next, *prev;
+	} X86_OpListNode;
+
+	typedef struct X86_OpList {
+		size_t count;
+		X86_OpListNode *head, *tail, *curr;
+	} X86_OpList;
+%}
+
+%extend X86_OpList {
+	X86_OpList () {
+		X86_OpList *list = (X86_OpList *) 
+				calloc( sizeof(X86_OpList), 1 );
+		list->count = 0;
+		return list;
+	}
+
+	~X86_OpList() {
+		X86_OpListNode *node, *next;
+
+		node = self->head;
+		while ( node ) {
+			next = node->next;
+			/* free( node->insn ); */
+			free( node );
+			node = next;
+		}
+
+		free( self );
+	}
+
+	X86_OpListNode * first() { 
+		self->curr = self->head;
+		return self->head; 
+	}
+
+	X86_OpListNode * last() { 
+		self->curr = self->tail;
+		return self->tail; 
+	}
+
+	X86_OpListNode * next() { 
+		if (! self->curr ) {
+			self->curr = self->head;
+			return self->head;
+		}
+
+		self->curr = self->curr->next;
+		return self->curr;
+	}
+
+	X86_OpListNode * prev() { 
+		if (! self->curr ) {
+			self->curr = self->tail;
+			return self->tail;
+		}
+
+		self->curr = self->curr->prev;
+		return self->curr;
+	}
+
+	%newobject append;
+	void append( x86_op_t *op ) {
+		X86_OpListNode *node = (X86_OpListNode *)
+					calloc( sizeof(X86_OpListNode) , 1 );
+		if (! node ) {
+			return;
+		}
+
+		self->count++;
+		if ( ! self->tail ) {
+			self->head = self->tail = node;
+		} else {
+			self->tail->next = node;
+			node->prev = self->tail;
+			self->tail = node;
+		}
+
+		node->op = x86_op_t_copy( op );
+	}
+}
+
+%inline %{
+	typedef struct x86_operand_list {
+		x86_op_t op;
+		struct x86_operand_list *next;
+	} x86_oplist_t;
+%}
+
+%extend x86_oplist_t {
+	%newobject x86_oplist_node_copy;
+}
+
+/* ================================================================== */
+/* instruction class */
+%inline %{
+	x86_oplist_t * x86_oplist_node_copy( x86_oplist_t * list ) {
+		x86_oplist_t *ptr;
+		ptr = (x86_oplist_t *) calloc( sizeof(x86_oplist_t), 1 );
+		if ( ptr ) {
+			memcpy( &ptr->op, &list->op, sizeof(x86_op_t) );
+		}
+
+		return ptr;
+	}
+
+	enum x86_insn_group {
+		insn_none = 0, insn_controlflow = 1,
+	        insn_arithmetic = 2, insn_logic = 3,
+	        insn_stack = 4, insn_comparison = 5,
+	        insn_move = 6, insn_string = 7,
+	        insn_bit_manip = 8, insn_flag_manip = 9,
+	        insn_fpu = 10, insn_interrupt = 13,
+	        insn_system = 14, insn_other = 15
+	};
+
+	enum x86_insn_type {
+		insn_invalid = 0, insn_jmp = 0x1001,
+	        insn_jcc = 0x1002, insn_call = 0x1003,
+	        insn_callcc = 0x1004, insn_return = 0x1005,
+	        insn_add = 0x2001, insn_sub = 0x2002,
+	        insn_mul = 0x2003, insn_div = 0x2004,
+	        insn_inc = 0x2005, insn_dec = 0x2006,
+	        insn_shl = 0x2007, insn_shr = 0x2008,
+	        insn_rol = 0x2009, insn_ror = 0x200A,
+	        insn_and = 0x3001, insn_or = 0x3002,
+	        insn_xor = 0x3003, insn_not = 0x3004,
+	        insn_neg = 0x3005, insn_push = 0x4001,
+	        insn_pop = 0x4002, insn_pushregs = 0x4003,
+	        insn_popregs = 0x4004, insn_pushflags = 0x4005,
+	        insn_popflags = 0x4006, insn_enter = 0x4007,
+	        insn_leave = 0x4008, insn_test = 0x5001,
+	        insn_cmp = 0x5002, insn_mov = 0x6001,
+	        insn_movcc = 0x6002, insn_xchg = 0x6003,
+	        insn_xchgcc = 0x6004, insn_strcmp = 0x7001,
+	        insn_strload = 0x7002, insn_strmov = 0x7003,
+	        insn_strstore = 0x7004, insn_translate = 0x7005,
+	        insn_bittest = 0x8001, insn_bitset = 0x8002,
+	        insn_bitclear = 0x8003, insn_clear_carry = 0x9001,
+	        insn_clear_zero = 0x9002, insn_clear_oflow = 0x9003,
+	        insn_clear_dir = 0x9004, insn_clear_sign = 0x9005,
+	        insn_clear_parity = 0x9006, insn_set_carry = 0x9007,
+	        insn_set_zero = 0x9008, insn_set_oflow = 0x9009,
+	        insn_set_dir = 0x900A, insn_set_sign = 0x900B,
+	        insn_set_parity = 0x900C, insn_tog_carry = 0x9010,
+	        insn_tog_zero = 0x9020, insn_tog_oflow = 0x9030,
+	        insn_tog_dir = 0x9040, insn_tog_sign = 0x9050,
+	        insn_tog_parity = 0x9060, insn_fmov = 0xA001,
+	        insn_fmovcc = 0xA002, insn_fneg = 0xA003,
+	       	insn_fabs = 0xA004, insn_fadd = 0xA005,
+	        insn_fsub = 0xA006, insn_fmul = 0xA007,
+	        insn_fdiv = 0xA008, insn_fsqrt = 0xA009,
+	        insn_fcmp = 0xA00A, insn_fcos = 0xA00C,
+	        insn_fldpi = 0xA00D, insn_fldz = 0xA00E,
+	        insn_ftan = 0xA00F, insn_fsine = 0xA010,
+	        insn_fsys = 0xA020, insn_int = 0xD001,
+	        insn_intcc = 0xD002,   insn_iret = 0xD003,
+	        insn_bound = 0xD004, insn_debug = 0xD005,
+	        insn_trace = 0xD006, insn_invalid_op = 0xD007,
+	        insn_oflow = 0xD008, insn_halt = 0xE001,
+	        insn_in = 0xE002, insn_out = 0xE003, 
+	        insn_cpuid = 0xE004, insn_nop = 0xF001,
+	        insn_bcdconv = 0xF002, insn_szconv = 0xF003 
+	};
+
+	enum x86_insn_note {
+		insn_note_ring0		= 1,
+		insn_note_smm		= 2,
+		insn_note_serial	= 4
+	};
+
+	enum x86_flag_status {
+	        insn_carry_set = 0x1,
+	        insn_zero_set = 0x2,
+	        insn_oflow_set = 0x4,
+	        insn_dir_set = 0x8,
+	        insn_sign_set = 0x10,
+	        insn_parity_set = 0x20,	
+	        insn_carry_or_zero_set = 0x40,
+	        insn_zero_set_or_sign_ne_oflow = 0x80,
+	        insn_carry_clear = 0x100,
+	        insn_zero_clear = 0x200,
+	        insn_oflow_clear = 0x400,
+	        insn_dir_clear = 0x800,
+	        insn_sign_clear = 0x1000,
+	        insn_parity_clear = 0x2000,
+	        insn_sign_eq_oflow = 0x4000,
+	        insn_sign_ne_oflow = 0x8000
+	};
+
+	enum x86_insn_cpu {
+		cpu_8086 	= 1, cpu_80286	= 2,
+		cpu_80386	= 3, cpu_80387	= 4,
+		cpu_80486	= 5, cpu_pentium	= 6,
+		cpu_pentiumpro	= 7, cpu_pentium2	= 8,
+		cpu_pentium3	= 9, cpu_pentium4	= 10,
+		cpu_k6		= 16, cpu_k7		= 32,
+		cpu_athlon	= 48
+	};
+
+	enum x86_insn_isa {
+		isa_gp		= 1, isa_fp		= 2,
+		isa_fpumgt	= 3, isa_mmx		= 4,
+		isa_sse1	= 5, isa_sse2	= 6,
+		isa_sse3	= 7, isa_3dnow	= 8,
+		isa_sys		= 9	
+	};
+	
+	enum x86_insn_prefix {
+	        insn_no_prefix = 0,
+	        insn_rep_zero = 1,
+	        insn_rep_notzero = 2,
+	        insn_lock = 4
+	};
+
+
+	typedef struct {
+        	unsigned long addr;
+	        unsigned long offset;
+	        enum x86_insn_group group;
+	        enum x86_insn_type type;
+		enum x86_insn_note note;
+	        unsigned char bytes[MAX_INSN_SIZE];
+	        unsigned char size;
+		unsigned char addr_size;
+		unsigned char op_size;
+		enum x86_insn_cpu cpu;
+		enum x86_insn_isa isa;
+	        enum x86_flag_status flags_set;
+	        enum x86_flag_status flags_tested;
+		unsigned char stack_mod;
+		long stack_mod_val;
+	        enum x86_insn_prefix prefix;
+	        char prefix_string[MAX_PREFIX_STR];
+	        char mnemonic[MAX_MNEM_STR];
+	        x86_oplist_t *operands;
+		size_t operand_count;
+		size_t explicit_count;
+	        void *block;
+	        void *function;
+	        int tag;
+	} x86_insn_t;
+
+	typedef void (*x86_operand_fn)(x86_op_t *op, x86_insn_t *insn, 
+		      void *arg);
+
+	enum x86_op_foreach_type {
+		op_any 	= 0,
+		op_dest = 1,
+		op_src 	= 2,
+		op_ro 	= 3,
+		op_wo 	= 4,
+		op_xo 	= 5,
+		op_rw 	= 6,
+		op_implicit = 0x10,
+		op_explicit = 0x20
+	};
+
+	size_t x86_operand_count( x86_insn_t *insn, 
+				enum x86_op_foreach_type type );
+	x86_op_t * x86_operand_1st( x86_insn_t *insn );
+	x86_op_t * x86_operand_2nd( x86_insn_t *insn );
+	x86_op_t * x86_operand_3rd( x86_insn_t *insn );
+	long x86_get_rel_offset( x86_insn_t *insn );
+	x86_op_t * x86_get_branch_target( x86_insn_t *insn );
+	x86_op_t * x86_get_imm( x86_insn_t *insn );
+	unsigned char * x86_get_raw_imm( x86_insn_t *insn );
+	void x86_set_insn_addr( x86_insn_t *insn, unsigned long addr );
+	int x86_format_mnemonic(x86_insn_t *insn, char *buf, int len,
+                        enum x86_asm_format format);
+	int x86_format_insn(x86_insn_t *insn, char *buf, int len, 
+				enum x86_asm_format);
+	void x86_oplist_free( x86_insn_t *insn );
+	int x86_insn_is_valid( x86_insn_t *insn );
+%}
+
+%extend x86_insn_t {
+	x86_insn_t() {
+		x86_insn_t *insn = (x86_insn_t *)
+				   calloc( sizeof(x86_insn_t), 1 );
+		return insn;
+	}
+	~x86_insn_t() {
+		x86_oplist_free( self );
+		free( self );
+	}
+
+	int is_valid( ) {
+		return x86_insn_is_valid( self );
+	}
+
+	x86_op_t * operand_1st() {
+		return x86_operand_1st( self );
+	}
+
+	x86_op_t * operand_2nd() {
+		return x86_operand_2nd( self );
+	}
+
+	x86_op_t * operand_3rd() {
+		return x86_operand_3rd( self );
+	}
+
+	x86_op_t * operand_dest() {
+		return x86_operand_1st( self );
+	}
+
+	x86_op_t * operand_src() {
+		return x86_operand_2nd( self );
+	}
+
+	size_t num_operands( enum x86_op_foreach_type type ) {
+		return x86_operand_count( self, type );
+	}
+
+	long rel_offset() {
+		return x86_get_rel_offset( self );
+	}
+
+	x86_op_t * branch_target() {
+		return x86_get_branch_target( self );
+	}
+
+	x86_op_t * imm() {
+		return x86_get_imm( self );
+	}
+
+	unsigned char * raw_imm() {
+		return x86_get_raw_imm( self );
+	}
+
+	%newobject format;
+	char * format( enum x86_asm_format format ) {
+		char *buf, *str;
+		size_t len;
+
+		switch ( format ) {
+			case xml_syntax:
+				len = MAX_INSN_XML_STRING;
+				break;
+			case raw_syntax:
+				len = MAX_INSN_RAW_STRING;
+				break;
+			case native_syntax:
+			case intel_syntax:
+			case att_syntax:
+			case unknown_syntax:
+			default:
+				len = MAX_INSN_STRING;
+				break;
+		}
+
+		buf = (char * ) calloc( len + 1, 1 );
+		x86_format_insn( self, buf, len, format );
+
+		/* drop buffer down to a reasonable size */
+		str = strdup( buf );
+		free(buf);
+		return str;
+	}
+
+	%newobject format_mnemonic;
+	char * format_mnemonic( enum x86_asm_format format ) {
+		char *buf, *str;
+		size_t len = MAX_MNEM_STR + MAX_PREFIX_STR + 4;
+
+		buf = (char * ) calloc( len, 1 );
+		x86_format_mnemonic( self, buf, len, format );
+
+		/* drop buffer down to a reasonable size */
+		str = strdup( buf );
+		free(buf);
+
+		return str;
+	}
+
+	%newobject copy;
+	x86_insn_t * copy() {
+		x86_oplist_t *ptr, *list, *last = NULL;
+		x86_insn_t *insn = (x86_insn_t *)
+				   calloc( sizeof(x86_insn_t), 1 );
+
+		if ( insn ) {
+			memcpy( insn, self, sizeof(x86_insn_t) );
+			insn->operands = NULL;
+			insn->block = NULL;
+			insn->function = NULL;
+
+			/* copy operand list */
+			for ( list = self->operands; list; list = list->next ) {
+				ptr = x86_oplist_node_copy( list );
+
+				if (! ptr ) {
+					continue;
+				}
+
+				if ( insn->operands ) {
+					last->next = ptr;
+				} else {
+					insn->operands = ptr;
+				}
+				last = ptr;
+			}
+		}
+
+		return insn;
+	}
+
+	X86_OpList * operand_list( ) {
+		x86_oplist_t *list = self->operands;
+		X86_OpList *op_list = new_X86_OpList();
+
+		for ( list = self->operands; list; list = list->next ) {
+			X86_OpList_append( op_list, &list->op );
+		}
+
+		return op_list;
+	}
+}
+
+/* ================================================================== */
+/* invariant instruction class */
+%inline %{
+	#define X86_WILDCARD_BYTE 0xF4
+
+	typedef struct {
+        	enum x86_op_type        type;
+        	enum x86_op_datatype    datatype;
+        	enum x86_op_access      access;
+        	enum x86_op_flags       flags;
+	} x86_invariant_op_t;
+
+	typedef struct {
+		unsigned char bytes[64];
+		unsigned int  size;
+        	enum x86_insn_group group;
+        	enum x86_insn_type type;
+		x86_invariant_op_t operands[3];
+	} x86_invariant_t;
+%}
+
+%extend x86_invariant_t {
+
+	x86_invariant_t() {
+		x86_invariant_t *inv = (x86_invariant_t *)
+				calloc( sizeof(x86_invariant_t), 1 );
+		return inv;
+	}
+
+	~x86_invariant_t() {
+		free( self );
+	}
+}
+
+/* ================================================================== */
+/* instruction list class */
+%inline %{
+	typedef struct X86_InsnListNode {
+		x86_insn_t *insn;
+		struct X86_InsnListNode *next, *prev;
+	} X86_InsnListNode;
+
+	typedef struct X86_InsnList {
+		size_t count;
+		X86_InsnListNode *head, *tail, *curr;
+	} X86_InsnList;
+%}
+
+%extend X86_InsnList {
+	X86_InsnList () {
+		X86_InsnList *list = (X86_InsnList *) 
+				calloc( sizeof(X86_InsnList), 1 );
+		list->count = 0;
+		return list;
+	}
+
+	~X86_InsnList() {
+		X86_InsnListNode *node, *next;
+
+		node = self->head;
+		while ( node ) {
+			next = node->next;
+			/* free( node->insn ); */
+			free( node );
+			node = next;
+		}
+
+		free( self );
+	}
+
+	X86_InsnListNode * first() { return self->head; }
+
+	X86_InsnListNode * last() { return self->tail; }
+
+	X86_InsnListNode * next() { 
+		if (! self->curr ) {
+			self->curr = self->head;
+			return self->head;
+		}
+
+		self->curr = self->curr->next;
+		return self->curr;
+	}
+
+	X86_InsnListNode * prev() { 
+		if (! self->curr ) {
+			self->curr = self->tail;
+			return self->tail;
+		}
+
+		self->curr = self->curr->prev;
+		return self->curr;
+	}
+
+	%newobject append;
+	void append( x86_insn_t *insn ) {
+		X86_InsnListNode *node = (X86_InsnListNode *)
+					calloc( sizeof(X86_InsnListNode) , 1 );
+		if (! node ) {
+			return;
+		}
+
+		self->count++;
+		if ( ! self->tail ) {
+			self->head = self->tail = node;
+		} else {
+			self->tail->next = node;
+			node->prev = self->tail;
+			self->tail = node;
+		}
+
+		node->insn = x86_insn_t_copy( insn );
+	}
+}
+
+/* ================================================================== */
+/* address table class */
+/* slight TODO */
+
+/* ================================================================== */
+/* Main disassembler class */
+%inline %{
+
+	enum x86_options {
+		opt_none= 0,
+		opt_ignore_nulls=1,
+		opt_16_bit=2
+		};
+	enum x86_report_codes {
+        	report_disasm_bounds,
+        	report_insn_bounds,
+        	report_invalid_insn,
+        	report_unknown
+	};
+
+
+	typedef struct {
+		enum x86_report_codes last_error;
+		void * last_error_data;
+		void * disasm_callback;
+		void * disasm_resolver;
+	} X86_Disasm;
+
+	typedef void (*DISASM_REPORTER)( enum x86_report_codes code, 
+				 	 void *data, void *arg );
+	typedef void (*DISASM_CALLBACK)( x86_insn_t *insn, void * arg );
+	typedef long (*DISASM_RESOLVER)( x86_op_t *op, 
+					 x86_insn_t * current_insn,
+				 	 void *arg );
+
+	void x86_report_error( enum x86_report_codes code, void *data );
+	int x86_init( enum x86_options options, DISASM_REPORTER reporter, 
+		      void *arg);
+	void x86_set_reporter( DISASM_REPORTER reporter, void *arg);
+	void x86_set_options( enum x86_options options );
+	enum x86_options x86_get_options( void );
+	int x86_cleanup(void);
+	int x86_format_header( char *buf, int len, enum x86_asm_format format);
+	unsigned int x86_endian(void);
+	unsigned int x86_addr_size(void);
+	unsigned int x86_op_size(void);
+	unsigned int x86_word_size(void);
+	unsigned int x86_max_insn_size(void);
+	unsigned int x86_sp_reg(void);
+	unsigned int x86_fp_reg(void);
+	unsigned int x86_ip_reg(void);
+	size_t x86_invariant_disasm( unsigned char *buf, int buf_len, 
+			  x86_invariant_t *inv );
+	size_t x86_size_disasm( unsigned char *buf, unsigned int buf_len );
+	int x86_disasm( unsigned char *buf, unsigned int buf_len,
+	                unsigned long buf_rva, unsigned int offset,
+	                x86_insn_t * insn );
+	int x86_disasm_range( unsigned char *buf, unsigned long buf_rva,
+	                      unsigned int offset, unsigned int len,
+	                      DISASM_CALLBACK func, void *arg );
+	int x86_disasm_forward( unsigned char *buf, unsigned int buf_len,
+	                        unsigned long buf_rva, unsigned int offset,
+	                        DISASM_CALLBACK func, void *arg,
+	                        DISASM_RESOLVER resolver, void *r_arg );
+	
+	void x86_default_reporter( enum x86_report_codes code, 
+				   void *data, void *arg ) {
+		X86_Disasm *dis = (X86_Disasm *) arg;
+		if ( dis ) {
+			dis->last_error = code;
+			dis->last_error_data = data;
+		}
+	}
+
+	void x86_default_callback( x86_insn_t *insn, void *arg ) {
+		X86_InsnList *list = (X86_InsnList *) arg;
+		if ( list ) {
+			X86_InsnList_append( list, insn );
+		}
+	}
+
+	/* TODO: resolver stack, maybe a callback */
+	long x86_default_resolver( x86_op_t *op, x86_insn_t *insn, void *arg ) {
+		X86_Disasm *dis = (X86_Disasm *) arg;
+		if ( dis ) {
+			//return dis->resolver( op, insn );
+			return 0;
+		}
+
+		return 0;
+	}
+
+%}
+
+%extend X86_Disasm { 
+	
+	X86_Disasm( ) {
+		X86_Disasm * dis = (X86_Disasm *)
+				calloc( sizeof( X86_Disasm ), 1 );
+		x86_init( opt_none, x86_default_reporter, dis );
+		return dis;
+	}
+
+	X86_Disasm( enum x86_options options ) {
+		X86_Disasm * dis = (X86_Disasm *)
+				calloc( sizeof( X86_Disasm ), 1 );
+		x86_init( options, x86_default_reporter, dis );
+		return dis;
+	}
+
+	X86_Disasm( enum x86_options options, DISASM_REPORTER reporter ) {
+		X86_Disasm * dis = (X86_Disasm *)
+				calloc( sizeof( X86_Disasm ), 1 );
+		x86_init( options, reporter, NULL );
+		return dis;
+	}
+
+	X86_Disasm( enum x86_options options, DISASM_REPORTER reporter,
+		    void * arg ) {
+		X86_Disasm * dis = (X86_Disasm *)
+				calloc( sizeof( X86_Disasm ), 1 );
+		x86_init( options, reporter, arg );
+		return dis;
+	}
+
+	~X86_Disasm() {
+		x86_cleanup();
+		free( self );
+	}
+
+	void set_options( enum x86_options options ) {
+		return x86_set_options( options );
+	}
+
+	enum x86_options options() {
+		return x86_get_options();
+	}
+
+	void set_callback( void * callback ) {
+		self->disasm_callback = callback;
+	}
+
+	void set_resolver( void * callback ) {
+		self->disasm_resolver = callback;
+	}
+
+	void report_error( enum x86_report_codes code ) {
+		x86_report_error( code, NULL );
+	}
+
+	%newobject disasm;
+	x86_insn_t * disasm( unsigned char *buf, size_t buf_len, 
+		           unsigned long buf_rva, unsigned int offset ) {
+		x86_insn_t *insn = calloc( sizeof( x86_insn_t ), 1 );
+		x86_disasm( buf, buf_len, buf_rva, offset, insn );
+		return insn;
+	}
+
+	int disasm_range( unsigned char *buf, size_t buf_len, 
+	              unsigned long buf_rva, unsigned int offset,
+		      unsigned int len ) {
+
+		X86_InsnList *list = new_X86_InsnList();
+
+		if ( len > buf_len ) {
+			len = buf_len;
+		}
+
+		return x86_disasm_range( buf, buf_rva, offset, len, 
+				x86_default_callback, list );
+	}
+
+	int disasm_forward( unsigned char *buf, size_t buf_len,
+			    unsigned long buf_rva, unsigned int offset ) {
+		X86_InsnList *list = new_X86_InsnList();
+
+		/* use default resolver: damn SWIG callbacks! */
+		return x86_disasm_forward( buf, buf_len, buf_rva, offset,
+			                   x86_default_callback, list, 
+					   x86_default_resolver, NULL );
+	}
+
+	size_t disasm_invariant( unsigned char *buf, size_t buf_len, 
+			  x86_invariant_t *inv ) {
+		return x86_invariant_disasm( buf, buf_len, inv );
+	}
+
+	size_t disasm_size( unsigned char *buf, size_t buf_len ) {
+		return x86_size_disasm( buf, buf_len );
+	}
+
+	%newobject format_header;
+	char * format_header( enum x86_asm_format format) {
+		char *buf, *str;
+		size_t len;
+
+		switch ( format ) {
+			/* these were obtained from x86_format.c */
+			case xml_syntax:
+				len = 679; break;
+			case raw_syntax:
+				len = 172; break;
+			case native_syntax:
+				len = 35; break;
+			case intel_syntax:
+				len = 23; break;
+			case att_syntax:
+				len = 23; break;
+			case unknown_syntax:
+			default:
+				len = 23; break;
+		}
+
+		buf = (char * ) calloc( len + 1, 1 );
+		x86_format_header( buf, len, format );
+
+		return buf;
+	}
+
+	unsigned int endian() {
+		return x86_endian();
+	}
+
+	unsigned int addr_size() {
+		return x86_addr_size();
+	}
+
+	unsigned int op_size() {
+		return x86_op_size();
+	}
+
+	unsigned int word_size() {
+		return x86_word_size();
+	}
+
+	unsigned int max_insn_size() {
+		return x86_max_insn_size();
+	}
+
+	unsigned int sp_reg() {
+		return x86_sp_reg();
+	}
+
+	unsigned int fp_reg() {
+		return x86_fp_reg();
+	}
+
+	unsigned int ip_reg() {
+		return x86_ip_reg();
+	}
+
+	%newobject reg_from_id;
+	x86_reg_t * reg_from_id( unsigned int id ) {
+		x86_reg_t * reg = calloc( sizeof(x86_reg_t), 1 );
+		x86_reg_from_id( id, reg );
+		return reg;
+	}
+
+	unsigned char wildcard_byte() { return X86_WILDCARD_BYTE; }
+
+	int max_register_string() { return MAX_REGNAME; }
+
+	int max_prefix_string() { return MAX_PREFIX_STR; }
+
+	int max_mnemonic_string() { return MAX_MNEM_STR; }
+
+	int max_operand_string( enum x86_asm_format format ) {
+		switch ( format ) {
+			case xml_syntax:
+				return  MAX_OP_XML_STRING;
+				break;
+			case raw_syntax:
+				return MAX_OP_RAW_STRING;
+				break;
+			case native_syntax:
+			case intel_syntax:
+			case att_syntax:
+			case unknown_syntax:
+			default:
+				return MAX_OP_STRING;
+				break;
+		}
+	}
+
+
+	int max_insn_string( enum x86_asm_format format ) {
+		switch ( format ) {
+			case xml_syntax:
+				return  MAX_INSN_XML_STRING;
+				break;
+			case raw_syntax:
+				return MAX_INSN_RAW_STRING;
+				break;
+			case native_syntax:
+			case intel_syntax:
+			case att_syntax:
+			case unknown_syntax:
+			default:
+				return MAX_INSN_STRING;
+				break;
+		}
+	}
+
+	int max_num_operands( ) { return MAX_NUM_OPERANDS; }
+}
+
+/* python callback, per the manual */
+/*%typemap(python,in) PyObject *pyfunc {
+	if (!PyCallable_Check($source)) {
+		PyErr_SetString(PyExc_TypeError, "Need a callable object!");
+ 		return NULL;
+	}
+	$target = $source;
+}*/
+
+/* python FILE * callback, per the manual */
+/*
+%typemap(python,in) FILE * {
+  if (!PyFile_Check($source)) {
+      PyErr_SetString(PyExc_TypeError, "Need a file!");
+      return NULL;
+  }
+  $target = PyFile_AsFile($source);
+}*/
+
+
diff --git a/google-breakpad/src/third_party/libdisasm/swig/perl/Makefile-swig b/google-breakpad/src/third_party/libdisasm/swig/perl/Makefile-swig
new file mode 100644
index 0000000..9f3a645
--- /dev/null
+++ b/google-breakpad/src/third_party/libdisasm/swig/perl/Makefile-swig
@@ -0,0 +1,65 @@
+ifndef BASE_NAME
+BASE_NAME	=	x86disasm
+endif
+
+ifndef SWIG
+SWIG		=	swig	# apt-get install swig !
+endif
+
+ifndef GCC
+GCC		=	gcc
+endif
+
+ifndef CC_FLAGS
+CC_FLAGS	=	-c -fPIC
+endif
+
+ifndef LD_FLAGS
+LD_FLAGS	=	-shared -L.. -ldisasm
+endif
+
+INTERFACE_FILE	=	libdisasm_oop.i
+
+SWIG_INTERFACE	=	../$(INTERFACE_FILE)
+
+# PERL rules
+PERL_MOD	=	blib/arch/auto/$(BASE_NAME)/$(BASE_NAME).so
+PERL_SHADOW	=	$(BASE_NAME)_wrap.c
+PERL_SWIG	=	$(BASE_NAME).pl
+PERL_OBJ	=	$(BASE_NAME)_wrap.o
+PERL_INC	=	`perl -e 'use Config; print $$Config{archlib};'`/CORE
+PERL_CC_FLAGS	=	`perl -e 'use Config; print $$Config{ccflags};'`
+
+#====================================================
+# TARGETS
+
+all: swig-perl
+
+dummy: swig-perl install uninstall clean
+
+swig-perl: $(PERL_MOD)
+
+$(PERL_MOD): $(PERL_OBJ)
+	perl Makefile.PL
+	make
+	#$(GCC) $(LD_FLAGS) $(PERL_OBJ) -o $@
+
+$(PERL_OBJ): $(PERL_SHADOW)
+	$(GCC) $(CC_FLAGS) $(PERL_CC_FLAGS) -I$(PERL_INC) -o $@ $<
+
+$(PERL_SHADOW): $(SWIG_INTERFACE)
+	swig -perl -shadow -o $(PERL_SHADOW) -outdir . $<
+
+# ==================================================================
+install: $(PERL_MOD)
+	make install
+
+# ==================================================================
+uninstall:
+
+# ==================================================================
+clean: 
+	rm $(PERL_MOD) $(PERL_OBJ)
+	rm $(PERL_SHADOW)
+	rm -rf Makefile blib pm_to_blib
+
diff --git a/google-breakpad/src/third_party/libdisasm/swig/perl/Makefile.PL b/google-breakpad/src/third_party/libdisasm/swig/perl/Makefile.PL
new file mode 100644
index 0000000..6e625df
--- /dev/null
+++ b/google-breakpad/src/third_party/libdisasm/swig/perl/Makefile.PL
@@ -0,0 +1,7 @@
+use ExtUtils::MakeMaker;
+
+WriteMakefile(
+	'NAME'	=> 'x86disasm',
+	'LIBS'	=> ['-ldisasm'],
+	'OBJECT'	=> 'x86disasm_wrap.o'
+);
diff --git a/google-breakpad/src/third_party/libdisasm/swig/python/Makefile-swig b/google-breakpad/src/third_party/libdisasm/swig/python/Makefile-swig
new file mode 100644
index 0000000..544681a
--- /dev/null
+++ b/google-breakpad/src/third_party/libdisasm/swig/python/Makefile-swig
@@ -0,0 +1,64 @@
+ifndef BASE_NAME
+BASE_NAME	=	x86disasm
+endif
+
+ifndef SWIG
+SWIG		=	swig	# apt-get install swig !
+endif
+
+ifndef GCC
+GCC		=	gcc
+endif
+
+ifndef CC_FLAGS
+CC_FLAGS	=	-c -fPIC
+endif
+
+ifndef LD_FLAGS
+LD_FLAGS	=	-shared -L.. -ldisasm
+endif
+
+INTERFACE_FILE	=	libdisasm_oop.i
+
+SWIG_INTERFACE	=	../$(INTERFACE_FILE)
+
+# PYTHON rules
+PYTHON_MOD	=	$(BASE_NAME)-python.so
+PYTHON_SHADOW	=	$(BASE_NAME)_wrap.c
+PYTHON_SWIG	=	$(BASE_NAME).py
+PYTHON_OBJ	=	$(BASE_NAME)_wrap.o
+PYTHON_INC	=	`/bin/echo -e 'import sys\nprint sys.prefix + "/include/python" + sys.version[:3]' | python`
+PYTHON_LIB	=	`/bin/echo -e 'import sys\nprint sys.prefix + "/lib/python" + sys.version[:3]' | python`
+PYTHON_DEST	=	$(PYTHON_LIB)/lib-dynload/_$(BASE_NAME).so
+
+#====================================================
+# TARGETS
+
+all: swig-python
+
+dummy: swig-python install uninstall clean
+
+swig-python: $(PYTHON_MOD)
+
+$(PYTHON_MOD): $(PYTHON_OBJ)
+	$(GCC) $(LD_FLAGS) $(PYTHON_OBJ) -o $@
+
+$(PYTHON_OBJ): $(PYTHON_SHADOW)
+	$(GCC) $(CC_FLAGS) -I$(PYTHON_INC) -I.. -o $@ $<
+
+$(PYTHON_SHADOW): $(SWIG_INTERFACE)
+	swig -python -shadow -o $(PYTHON_SHADOW) -outdir . $<
+
+# ==================================================================
+install: $(PYTHON_MOD)
+	sudo cp $(PYTHON_MOD) $(PYTHON_DEST)
+	sudo cp $(PYTHON_SWIG) $(PYTHON_LIB)
+
+# ==================================================================
+uninstall:
+
+# ==================================================================
+clean: 
+	rm $(PYTHON_MOD) $(PYTHON_SWIG) $(PYTHON_OBJ)
+	rm $(PYTHON_SHADOW)
+
diff --git a/google-breakpad/src/third_party/libdisasm/swig/ruby/Makefile-swig b/google-breakpad/src/third_party/libdisasm/swig/ruby/Makefile-swig
new file mode 100644
index 0000000..ee48002
--- /dev/null
+++ b/google-breakpad/src/third_party/libdisasm/swig/ruby/Makefile-swig
@@ -0,0 +1,68 @@
+ifndef BASE_NAME
+BASE_NAME	=	x86disasm
+endif
+
+ifndef SWIG
+SWIG		=	swig	# apt-get install swig !
+endif
+
+ifndef GCC
+GCC		=	gcc
+endif
+
+ifndef CC_FLAGS
+CC_FLAGS	=	-c -fPIC
+endif
+
+ifndef LD_FLAGS
+LD_FLAGS	=	-shared -L../.. -ldisasm
+endif
+
+LIBDISASM_DIR	=	../..
+
+INTERFACE_FILE	=	libdisasm_oop.i
+
+SWIG_INTERFACE	=	../$(INTERFACE_FILE)
+
+# RUBY rules
+RUBY_MAKEFILE	=	Makefile
+RUBY_MOD	=	$(BASE_NAME).so
+RUBY_SHADOW	=	$(BASE_NAME)_wrap.c
+#RUBY_SWIG	=	$(BASE_NAME).rb
+RUBY_OBJ	=	$(BASE_NAME)_wrap.o
+RUBY_INC	=	`ruby -e 'puts $$:.join("\n")' | tail -2 | head -1`
+#RUBY_LIB	=	
+#RUBY_DEST	=	
+
+#====================================================
+# TARGETS
+
+all: swig-ruby
+
+dummy: swig-ruby install uninstall clean
+
+swig-ruby: $(RUBY_MOD)
+
+$(RUBY_MOD): $(RUBY_MAKEFILE)
+	make
+
+$(RUBY_MAKEFILE): $(RUBY_OBJ)
+	ruby extconf.rb
+
+$(RUBY_OBJ):$(RUBY_SHADOW)
+	$(GCC) $(CC_FLAGS) -I$(RUBY_INC) -I.. -o $@ $<
+
+$(RUBY_SHADOW): $(SWIG_INTERFACE)
+	swig -ruby -o $(RUBY_SHADOW) -outdir . $<
+
+# ==================================================================
+install: $(RUBY_MOD)
+	make install
+
+# ==================================================================
+uninstall:
+
+# ==================================================================
+clean: 
+	make clean || true
+	rm $(RUBY_SHADOW) $(RUBY_MAKEFILE) $(RUBY_MOD) $(RUBY_OBJ)
diff --git a/google-breakpad/src/third_party/libdisasm/swig/ruby/extconf.rb b/google-breakpad/src/third_party/libdisasm/swig/ruby/extconf.rb
new file mode 100644
index 0000000..4e74326
--- /dev/null
+++ b/google-breakpad/src/third_party/libdisasm/swig/ruby/extconf.rb
@@ -0,0 +1,4 @@
+require 'mkmf'
+find_library('disasm', 'x86_init', "/usr/local/lib", "../..")
+create_makefile('x86disasm')
+
diff --git a/google-breakpad/src/third_party/libdisasm/swig/tcl/Makefile-swig b/google-breakpad/src/third_party/libdisasm/swig/tcl/Makefile-swig
new file mode 100644
index 0000000..5145a82
--- /dev/null
+++ b/google-breakpad/src/third_party/libdisasm/swig/tcl/Makefile-swig
@@ -0,0 +1,63 @@
+ifndef BASE_NAME
+BASE_NAME	=	x86disasm
+endif
+
+ifndef SWIG
+SWIG		=	swig	# apt-get install swig !
+endif
+
+ifndef GCC
+GCC		=	gcc
+endif
+
+ifndef CC_FLAGS
+CC_FLAGS	=	-c -fPIC
+endif
+
+ifndef LD_FLAGS
+LD_FLAGS	=	-shared -L../.. -ldisasm
+endif
+
+INTERFACE_FILE	=	libdisasm.i
+
+SWIG_INTERFACE	=	../$(INTERFACE_FILE)
+
+# TCL rules
+TCL_VERSION	=	8.3
+TCL_MOD		=	$(BASE_NAME)-tcl.so
+TCL_SHADOW	=	$(BASE_NAME)_wrap.c
+TCL_OBJ		=	$(BASE_NAME)_wrap.o
+TCL_INC		=	/usr/include/tcl$(TCL_VERSION)
+TCL_LIB		=	/usr/lib/tcl$(TCL_VERSION)
+TCL_DEST	=	$(TCL_LIB)/$(BASE_NAME).so
+
+#====================================================
+# TARGETS
+
+all: swig-tcl
+
+dummy: swig-tcl install uninstall clean
+
+swig-tcl: $(TCL_MOD)
+
+$(TCL_MOD): $(TCL_OBJ)
+	$(GCC) $(LD_FLAGS) $(TCL_OBJ) -o $@
+
+$(TCL_OBJ): $(TCL_SHADOW)
+	$(GCC) $(CC_FLAGS) -I$(TCL_INC) -I.. -o $@ $<
+
+$(TCL_SHADOW): $(SWIG_INTERFACE)
+	swig -tcl -o $(TCL_SHADOW) -outdir . $<
+
+# ==================================================================
+install: $(TCL_MOD)
+	sudo cp $(TCL_MOD) $(TCL_DEST)
+
+# ==================================================================
+uninstall:
+
+# ==================================================================
+clean: 
+	rm $(TCL_MOD) $(TCL_SWIG) $(TCL_OBJ)
+	rm $(TCL_SHADOW)
+
diff --git a/google-breakpad/src/third_party/libdisasm/x86_disasm.c b/google-breakpad/src/third_party/libdisasm/x86_disasm.c
new file mode 100644
index 0000000..51a213a
--- /dev/null
+++ b/google-breakpad/src/third_party/libdisasm/x86_disasm.c
@@ -0,0 +1,210 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "libdis.h"
+#include "ia32_insn.h"
+#include "ia32_invariant.h"
+#include "x86_operand_list.h"
+
+
+#ifdef _MSC_VER
+        #define snprintf        _snprintf
+        #define inline          __inline
+#endif
+
+unsigned int x86_disasm( unsigned char *buf, unsigned int buf_len,
+                uint32_t buf_rva, unsigned int offset,
+                x86_insn_t *insn ){
+        int len, size;
+	unsigned char bytes[MAX_INSTRUCTION_SIZE];
+
+        if ( ! buf || ! insn || ! buf_len ) {
+                /* caller screwed up somehow */
+                return 0;
+        }
+
+
+	/* ensure we are all NULLed up */
+	memset( insn, 0, sizeof(x86_insn_t) );
+        insn->addr = buf_rva + offset;
+        insn->offset = offset;
+	/* default to invalid insn */
+	insn->type = insn_invalid;
+	insn->group = insn_none;
+
+        if ( offset >= buf_len ) {
+                /* another caller screwup ;) */
+                x86_report_error(report_disasm_bounds, (void*)(long)buf_rva+offset);
+                return 0;
+        }
+
+        len = buf_len - offset;
+
+	/* copy enough bytes for disassembly into buffer : this
+	 * helps prevent buffer overruns at the end of a file */
+	memset( bytes, 0, MAX_INSTRUCTION_SIZE );
+	memcpy( bytes, &buf[offset], (len < MAX_INSTRUCTION_SIZE) ? len : 
+		MAX_INSTRUCTION_SIZE );
+
+        /* actually do the disassembly */
+	/* TODO: allow switching when more disassemblers are added */
+        size = ia32_disasm_addr( bytes, len, insn);
+
+        /* check and see if we had an invalid instruction */
+        if (! size ) {
+                x86_report_error(report_invalid_insn, (void*)(long)buf_rva+offset );
+                return 0;
+        }
+
+        /* check if we overran the end of the buffer */
+        if ( size > len ) {
+                x86_report_error( report_insn_bounds, (void*)(long)buf_rva + offset );
+		MAKE_INVALID( insn, bytes );
+		return 0;
+	}
+
+        /* fill bytes field of insn */
+        memcpy( insn->bytes, bytes, size );
+
+        return size;
+}
+
+unsigned int x86_disasm_range( unsigned char *buf, uint32_t buf_rva,
+                      unsigned int offset, unsigned int len,
+                      DISASM_CALLBACK func, void *arg ) {
+        x86_insn_t insn;
+        unsigned int buf_len, size, count = 0, bytes = 0;
+
+        /* buf_len is implied by the arguments */
+        buf_len = len + offset;
+
+        while ( bytes < len ) {
+                size = x86_disasm( buf, buf_len, buf_rva, offset + bytes,
+                                   &insn );
+                if ( size ) {
+                        /* invoke callback if it exists */
+                        if ( func ) {
+                                (*func)( &insn, arg );
+                        }
+                        bytes += size;
+                        count ++;
+                } else {
+                        /* error */
+                        bytes++;        /* try next byte */
+                }
+
+		x86_oplist_free( &insn );
+        }
+
+        return( count );
+}
+
+static inline int follow_insn_dest( x86_insn_t *insn ) {
+        if ( insn->type == insn_jmp || insn->type == insn_jcc ||
+             insn->type == insn_call || insn->type == insn_callcc ) {
+                return(1);
+        }
+        return(0);
+}
+
+static inline int insn_doesnt_return( x86_insn_t *insn ) {
+        return( (insn->type == insn_jmp || insn->type == insn_return) ? 1: 0 );
+}
+
+static int32_t internal_resolver( x86_op_t *op, x86_insn_t *insn ){
+        int32_t next_addr = -1;
+        if ( x86_optype_is_address(op->type) ) {
+                next_addr = op->data.sdword;
+        } else if ( op->type == op_relative_near ) {
+		next_addr = insn->addr + insn->size + op->data.relative_near;
+        } else if ( op->type == op_relative_far ) {
+		next_addr = insn->addr + insn->size + op->data.relative_far;
+        }
+        return( next_addr );
+}
+
+unsigned int x86_disasm_forward( unsigned char *buf, unsigned int buf_len,
+                        uint32_t buf_rva, unsigned int offset,
+                        DISASM_CALLBACK func, void *arg,
+                        DISASM_RESOLVER resolver, void *r_arg ){
+        x86_insn_t insn;
+        x86_op_t *op;
+        int32_t next_addr;
+        uint32_t next_offset;
+        unsigned int size, count = 0, bytes = 0, cont = 1;
+
+        while ( cont && bytes < buf_len ) {
+                size = x86_disasm( buf, buf_len, buf_rva, offset + bytes,
+                           &insn );
+
+                if ( size ) {
+                        /* invoke callback if it exists */
+                        if ( func ) {
+                                (*func)( &insn, arg );
+                        }
+                        bytes += size;
+                        count ++;
+                } else {
+                        /* error */
+                        bytes++;        /* try next byte */
+                }
+
+                if ( follow_insn_dest(&insn) ) {
+                        op = x86_get_dest_operand( &insn );
+                        next_addr = -1;
+
+                        /* if caller supplied a resolver, use it to determine
+                         * the address to disassemble */
+                        if ( resolver ) {
+                                next_addr = resolver(op, &insn, r_arg);
+                        } else {
+                                next_addr = internal_resolver(op, &insn);
+                        }
+
+                        if (next_addr != -1 ) {
+                                next_offset = next_addr - buf_rva;
+                                /* if offset is in this buffer... */
+                                if ( (uint32_t)next_addr >= buf_rva &&
+                                     next_offset < buf_len ) {
+                                        /* go ahead and disassemble */
+                                        count += x86_disasm_forward( buf,
+                                                            buf_len,
+                                                            buf_rva,
+                                                            next_offset,
+                                                            func, arg,
+                                                            resolver, r_arg );
+                                } else  {
+                                        /* report unresolved address */
+                                        x86_report_error( report_disasm_bounds,
+                                                     (void*)(long)next_addr );
+                                }
+                        }
+                } /* end follow_insn */
+
+                if ( insn_doesnt_return(&insn) ) {
+                        /* stop disassembling */
+                        cont = 0;
+                }
+
+		x86_oplist_free( &insn );
+        }
+        return( count );
+}
+
+/* invariant instruction representation */
+size_t x86_invariant_disasm( unsigned char *buf, int buf_len, 
+		x86_invariant_t *inv ){
+	if (! buf || ! buf_len || ! inv  ) {
+		return(0);
+	}
+
+	return ia32_disasm_invariant(buf, buf_len, inv);
+}
+size_t x86_size_disasm( unsigned char *buf, unsigned int buf_len ) {
+	if (! buf || ! buf_len  ) {
+		return(0);
+	}
+
+	return ia32_disasm_size(buf, buf_len);
+}
diff --git a/google-breakpad/src/third_party/libdisasm/x86_format.c b/google-breakpad/src/third_party/libdisasm/x86_format.c
new file mode 100644
index 0000000..0ec960d
--- /dev/null
+++ b/google-breakpad/src/third_party/libdisasm/x86_format.c
@@ -0,0 +1,1430 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "libdis.h"
+#include <inttypes.h>
+
+#ifdef _MSC_VER
+        #define snprintf        _snprintf
+        #define inline          __inline
+#endif
+
+
+/*
+ * concatenation macros.  STRNCATF concatenates a format string, buf
+ * only with one argument.
+ */
+#define STRNCAT( buf, str, len ) do {   				\
+	int _i = strlen(str), _blen = strlen(buf), _len = len - 1;  	\
+	if ( len ) {							\
+        	strncat( buf, str, _len );  				\
+		if ( _len <= _i ) {					\
+			buf[_blen+_len] = '\0';				\
+			len = 0;					\
+		} else {						\
+			len -= _i;					\
+		}							\
+	}								\
+} while( 0 )
+
+#define STRNCATF( buf, fmt, data, len ) do {        \
+        char _tmp[MAX_OP_STRING];                   \
+                                                    \
+        snprintf( _tmp, sizeof _tmp, fmt, data );   \
+        STRNCAT( buf, _tmp, len );                  \
+} while( 0 )
+
+
+#define PRINT_DISPLACEMENT( ea ) do {                            \
+        if ( ea->disp_size && ea->disp ) {                       \
+                if ( ea->disp_sign ) {    \
+                        STRNCATF( buf, "-0x%" PRIX32, -ea->disp, len );    \
+                } else {                                         \
+                        STRNCATF( buf, "0x%" PRIX32, ea->disp, len );  \
+                }                                                \
+        }                                                        \
+} while( 0 )
+
+static const char *prefix_strings[] = {
+	"",     /* no prefix */
+	"repz ", /* the trailing spaces make it easy to prepend to mnemonic */
+	"repnz ",
+	"lock ",
+	"branch delay " /* unused in x86 */
+};
+
+static int format_insn_prefix_str( enum x86_insn_prefix prefix, char *buf,
+                                   int len ) {
+
+        int len_orig = len;
+
+        /* concat all prefix strings */
+        if ( prefix & 1 ) { STRNCAT( buf, prefix_strings[1], len ); }
+        if ( prefix & 2 ) { STRNCAT( buf, prefix_strings[2], len ); }
+        if ( prefix & 4 ) { STRNCAT( buf, prefix_strings[3], len ); }
+        if ( prefix & 8 ) { STRNCAT( buf, prefix_strings[4], len ); }
+
+        /* return the number of characters added */
+        return (len_orig - len);
+}
+
+/*
+ * sprint's an operand's data to string str.
+ */
+static void get_operand_data_str( x86_op_t *op, char *str, int len ){
+
+        if ( op->flags & op_signed ) {
+                switch ( op->datatype ) {
+                        case op_byte:
+                                snprintf( str, len, "%" PRId8, op->data.sbyte );
+                                return;
+                        case op_word:
+                                snprintf( str, len, "%" PRId16, op->data.sword );
+                                return;
+                        case op_qword:
+                                snprintf( str, len, "%" PRId64, op->data.sqword );
+                                return;
+                        default:
+                                snprintf( str, len, "%" PRId32, op->data.sdword );
+                                return;
+                }
+        }
+
+        //else
+        switch ( op->datatype ) {
+                case op_byte:
+                        snprintf( str, len, "0x%02" PRIX8, op->data.byte );
+                        return;
+                case op_word:
+                        snprintf( str, len, "0x%04" PRIX16, op->data.word );
+                        return;
+                case op_qword:
+                        snprintf( str, len, "0x%08" PRIX64,op->data.sqword );
+                        return;
+                default:
+                        snprintf( str, len, "0x%08" PRIX32, op->data.dword );
+                        return;
+        }
+}
+
+/*
+ * sprints register types to a string.  the register types can be ORed
+ * together.
+ */
+static void get_operand_regtype_str( int regtype, char *str, int len )
+{
+        static struct {
+                const char *name;
+                int value;
+        } operand_regtypes[] = {
+                {"reg_gen"    , 0x00001},
+                {"reg_in"     , 0x00002},
+                {"reg_out"    , 0x00004},
+                {"reg_local"  , 0x00008},
+                {"reg_fpu"    , 0x00010},
+                {"reg_seg"    , 0x00020},
+                {"reg_simd"   , 0x00040},
+                {"reg_sys"    , 0x00080},
+                {"reg_sp"     , 0x00100},
+                {"reg_fp"     , 0x00200},
+                {"reg_pc"     , 0x00400},
+                {"reg_retaddr", 0x00800},
+                {"reg_cond"   , 0x01000},
+                {"reg_zero"   , 0x02000},
+                {"reg_ret"    , 0x04000},
+                {"reg_src"    , 0x10000},
+                {"reg_dest"   , 0x20000},
+                {"reg_count"  , 0x40000},
+                {NULL, 0}, //end
+        };
+
+        unsigned int i;
+
+        memset( str, 0, len );
+
+        //go thru every type in the enum
+        for ( i = 0; operand_regtypes[i].name; i++ ) {
+                //skip if type is not set
+                if(! (regtype & operand_regtypes[i].value) )
+                        continue;
+
+                //not the first time around
+                if( str[0] ) {
+                        STRNCAT( str, " ", len );
+                }
+
+                STRNCAT(str, operand_regtypes[i].name, len );
+        }
+}
+
+static int format_expr( x86_ea_t *ea, char *buf, int len,
+                        enum x86_asm_format format ) {
+        char str[MAX_OP_STRING];
+
+        if ( format == att_syntax ) {
+		if (ea->base.name[0] || ea->index.name[0] || ea->scale) {
+               		PRINT_DISPLACEMENT(ea);
+	                STRNCAT( buf, "(", len );
+
+	                if ( ea->base.name[0]) {
+	                        STRNCATF( buf, "%%%s", ea->base.name, len );
+	                }
+	                if ( ea->index.name[0]) {
+	                        STRNCATF( buf, ",%%%s", ea->index.name, len );
+	                        if ( ea->scale > 1 ) {
+	                                STRNCATF( buf, ",%d", ea->scale, len );
+	                        }
+	                }
+	                /* handle the syntactic exception */
+	                if ( ! ea->base.name[0] &&
+	                     ! ea->index.name[0]   ) {
+	                        STRNCATF( buf, ",%d", ea->scale, len );
+	                }
+
+	                STRNCAT( buf, ")", len );
+		} else
+			STRNCATF( buf, "0x%" PRIX32, ea->disp, len );
+
+        } else if ( format == xml_syntax ){
+
+                if ( ea->base.name[0]) {
+                        STRNCAT (buf, "\t\t\t<base>\n", len);
+
+                        get_operand_regtype_str (ea->base.type, str,
+                                                 sizeof str);
+                        STRNCAT (buf, "\t\t\t\t<register ", len);
+                        STRNCATF (buf, "name=\"%s\" ", ea->base.name, len);
+                        STRNCATF (buf, "type=\"%s\" ", str, len);
+                        STRNCATF (buf, "size=%d/>\n", ea->base.size, len);
+
+                        STRNCAT (buf, "\t\t\t</base>\n", len);
+                }
+
+                if ( ea->index.name[0]) {
+                        STRNCAT (buf, "\t\t\t<index>\n", len);
+
+                        get_operand_regtype_str (ea->index.type, str,
+                                                 sizeof str);
+
+                        STRNCAT (buf, "\t\t\t\t<register ", len);
+                        STRNCATF (buf, "name=\"%s\" ", ea->index.name, len);
+                        STRNCATF (buf, "type=\"%s\" ", str, len);
+                        STRNCATF (buf, "size=%d/>\n", ea->index.size, len);
+
+                        STRNCAT (buf, "\t\t\t</index>\n", len);
+                }
+
+                //scale
+                STRNCAT (buf, "\t\t\t<scale>\n", len);
+                STRNCAT (buf, "\t\t\t\t<immediate ", len);
+                STRNCATF (buf, "value=\"%d\"/>\n", ea->scale, len);
+                STRNCAT (buf, "\t\t\t</scale>\n", len);
+
+                if ( ea->disp_size ) {
+
+                        STRNCAT (buf, "\t\t\t<displacement>\n", len);
+
+                        if ( ea->disp_size > 1 && ! ea->disp_sign ) {
+                                STRNCAT (buf, "\t\t\t\t<address ", len);
+                                STRNCATF (buf, "value=\"0x%" PRIX32 "\"/>\n", ea->disp,
+                                          len);
+                        } else {
+                                STRNCAT (buf, "\t\t\t\t<immediate ", len);
+                                STRNCATF (buf, "value=%" PRId32 "/>\n", ea->disp, len);
+                        }
+
+                        STRNCAT (buf, "\t\t\t</displacement>\n", len);
+                }
+
+        } else if ( format == raw_syntax ) {
+
+                PRINT_DISPLACEMENT(ea);
+                STRNCAT( buf, "(", len );
+
+                STRNCATF( buf, "%s,", ea->base.name, len );
+                STRNCATF( buf, "%s,", ea->index.name, len );
+                STRNCATF( buf, "%d", ea->scale, len );
+                STRNCAT( buf, ")", len );
+
+        } else {
+
+                STRNCAT( buf, "[", len );
+
+                if ( ea->base.name[0] ) {
+                        STRNCAT( buf, ea->base.name, len );
+                        if ( ea->index.name[0] ||
+                             (ea->disp_size && ! ea->disp_sign) ) {
+                                STRNCAT( buf, "+", len );
+                        }
+                }
+                if ( ea->index.name[0] ) {
+                        STRNCAT( buf, ea->index.name, len );
+                        if ( ea->scale > 1 )
+                        {
+                                STRNCATF( buf, "*%" PRId32, ea->scale, len );
+                        }
+                        if ( ea->disp_size && ! ea->disp_sign )
+                        {
+                                STRNCAT( buf, "+", len );
+                        }
+                }
+
+                if ( ea->disp_size || (! ea->index.name[0] && 
+					! ea->base.name[0] ) )
+                {
+                        PRINT_DISPLACEMENT(ea);
+                }
+
+                STRNCAT( buf, "]", len );
+        }
+
+        return( strlen(buf) );
+}
+
+static int format_seg( x86_op_t *op, char *buf, int len,
+                       enum x86_asm_format format ) {
+        int len_orig = len;
+        const char *reg = "";
+
+        if (! op || ! buf || ! len || ! op->flags) {
+                return(0);
+        }
+        if ( op->type != op_offset && op->type != op_expression ){
+                return(0);
+        }
+        if (! ((int) op->flags & 0xF00) ) {
+                return(0);
+        }
+
+        switch (op->flags & 0xF00) {
+                case op_es_seg: reg = "es"; break;
+                case op_cs_seg: reg = "cs"; break;
+                case op_ss_seg: reg = "ss"; break;
+                case op_ds_seg: reg = "ds"; break;
+                case op_fs_seg: reg = "fs"; break;
+                case op_gs_seg: reg = "gs"; break;
+                default:
+                        break;
+        }
+
+        if (! reg[0] ) {
+                return( 0 );
+        }
+
+        switch( format ) {
+                case xml_syntax:
+                        STRNCAT( buf, "\t\t\t<segment ", len );
+                        STRNCATF( buf, "value=\"%s\"/>\n", reg, len );
+                        break;
+                case att_syntax:
+                        STRNCATF( buf, "%%%s:", reg, len );
+                        break;
+
+                default:
+                        STRNCATF( buf, "%s:", reg, len );
+                        break;
+        }
+
+        return( len_orig - len ); /* return length of appended string */
+}
+
+static const char *get_operand_datatype_str( x86_op_t *op ){
+
+        static const char *types[] = {
+                "sbyte",		/* 0 */
+                "sword",
+                "sqword",
+                "sdword",
+                "sdqword",		/* 4 */
+                "byte",
+                "word",
+                "qword",
+                "dword",		/* 8 */
+                "dqword",
+		"sreal",
+		"dreal",
+		"extreal",		/* 12 */
+		"bcd",
+		"ssimd",
+		"dsimd",
+		"sssimd",		/* 16 */
+		"sdsimd",
+		"descr32",
+		"descr16",
+		"pdescr32",		/* 20 */
+		"pdescr16",
+		"bounds16",
+		"bounds32",
+		"fpu_env16",
+		"fpu_env32",		/* 25 */
+		"fpu_state16",
+		"fpu_state32",
+		"fp_reg_set"
+        };
+
+	/* handle signed values first */
+        if ( op->flags & op_signed ) {
+                switch (op->datatype) {
+                        case op_byte:  return types[0];
+                        case op_word:  return types[1];
+                        case op_qword: return types[2];
+                	case op_dqword: return types[4];
+                        default:       return types[3];
+                }
+        }
+
+        switch (op->datatype) {
+                case op_byte:   	return types[5];
+                case op_word:   	return types[6];
+                case op_qword:  	return types[7];
+                case op_dqword: 	return types[9];
+		case op_sreal:		return types[10];
+		case op_dreal:		return types[11];
+		case op_extreal:	return types[12];
+		case op_bcd:		return types[13];
+		case op_ssimd:		return types[14];
+		case op_dsimd:		return types[15];
+		case op_sssimd:		return types[16];
+		case op_sdsimd:		return types[17];
+		case op_descr32:	return types[18];
+		case op_descr16:	return types[19];
+		case op_pdescr32:	return types[20];
+		case op_pdescr16:	return types[21];
+		case op_bounds16:	return types[22];
+		case op_bounds32:	return types[23];
+		case op_fpustate16: 	return types[24];
+		case op_fpustate32: 	return types[25];
+		case op_fpuenv16: 	return types[26];
+		case op_fpuenv32: 	return types[27];
+		case op_fpregset: 	return types[28];
+                default:        	return types[8];
+        }
+}
+
+static int format_insn_eflags_str( enum x86_flag_status flags, char *buf,
+                                   int len) {
+
+        static struct {
+                const char *name;
+                int  value;
+        } insn_flags[] = {
+                { "carry_set ",                 0x0001 },
+                { "zero_set ",                  0x0002 },
+                { "oflow_set ",                 0x0004 },
+                { "dir_set ",                   0x0008 },
+                { "sign_set ",                  0x0010 },
+                { "parity_set ",                0x0020 },
+                { "carry_or_zero_set ",         0x0040 },
+                { "zero_set_or_sign_ne_oflow ", 0x0080 },
+                { "carry_clear ",               0x0100 },
+                { "zero_clear ",                0x0200 },
+                { "oflow_clear ",               0x0400 },
+                { "dir_clear ",                 0x0800 },
+                { "sign_clear ",                0x1000 },
+                { "parity_clear ",              0x2000 },
+                { "sign_eq_oflow ",             0x4000 },
+                { "sign_ne_oflow ",             0x8000 },
+                { NULL,                         0x0000 }, //end
+        };
+
+        unsigned int i;
+        int len_orig = len;
+
+        for (i = 0; insn_flags[i].name; i++) {
+                if (! (flags & insn_flags[i].value) )
+                        continue;
+
+                STRNCAT( buf, insn_flags[i].name, len );
+        }
+
+        return( len_orig - len );
+}
+
+static const char *get_insn_group_str( enum x86_insn_group gp ) {
+
+        static const char *types[] = {
+                "",           // 0
+                "controlflow",// 1
+                "arithmetic", // 2
+                "logic",      // 3
+                "stack",      // 4
+                "comparison", // 5
+                "move",       // 6
+                "string",     // 7
+                "bit_manip",  // 8
+                "flag_manip", // 9
+                "fpu",        // 10
+                "",           // 11
+                "",           // 12
+                "interrupt",  // 13
+                "system",     // 14
+                "other",      // 15
+        };
+
+        if ( gp > sizeof (types)/sizeof(types[0]) )
+                return "";
+
+        return types[gp];
+}
+
+static const char *get_insn_type_str( enum x86_insn_type type ) {
+
+        static struct {
+                const char *name;
+                int  value;
+        } types[] = {
+                /* insn_controlflow */
+                { "jmp", 0x1001 },
+                { "jcc", 0x1002 },
+                { "call", 0x1003 },
+                { "callcc", 0x1004 },
+                { "return", 0x1005 },
+                { "loop", 0x1006 },
+                /* insn_arithmetic */
+                { "add", 0x2001 },
+                { "sub", 0x2002 },
+                { "mul", 0x2003 },
+                { "div", 0x2004 },
+                { "inc", 0x2005 },
+                { "dec", 0x2006 },
+                { "shl", 0x2007 },
+                { "shr", 0x2008 },
+                { "rol", 0x2009 },
+                { "ror", 0x200A },
+                /* insn_logic */
+                { "and", 0x3001 },
+                { "or", 0x3002 },
+                { "xor", 0x3003 },
+                { "not", 0x3004 },
+                { "neg", 0x3005 },
+                /* insn_stack */
+                { "push", 0x4001 },
+                { "pop", 0x4002 },
+                { "pushregs", 0x4003 },
+                { "popregs", 0x4004 },
+                { "pushflags", 0x4005 },
+                { "popflags", 0x4006 },
+                { "enter", 0x4007 },
+                { "leave", 0x4008 },
+                /* insn_comparison */
+                { "test", 0x5001 },
+                { "cmp", 0x5002 },
+                /* insn_move */
+                { "mov", 0x6001 },      /* move */
+                { "movcc", 0x6002 },    /* conditional move */
+                { "xchg", 0x6003 },     /* exchange */
+                { "xchgcc", 0x6004 },   /* conditional exchange */
+                /* insn_string */
+                { "strcmp", 0x7001 },
+                { "strload", 0x7002 },
+                { "strmov", 0x7003 },
+                { "strstore", 0x7004 },
+                { "translate", 0x7005 },        /* xlat */
+                /* insn_bit_manip */
+                { "bittest", 0x8001 },
+                { "bitset", 0x8002 },
+                { "bitclear", 0x8003 },
+                /* insn_flag_manip */
+                { "clear_carry", 0x9001 },
+                { "clear_zero", 0x9002 },
+                { "clear_oflow", 0x9003 },
+                { "clear_dir", 0x9004 },
+                { "clear_sign", 0x9005 },
+                { "clear_parity", 0x9006 },
+                { "set_carry", 0x9007 },
+                { "set_zero", 0x9008 },
+                { "set_oflow", 0x9009 },
+                { "set_dir", 0x900A },
+                { "set_sign", 0x900B },
+                { "set_parity", 0x900C },
+                { "tog_carry", 0x9010 },
+                { "tog_zero", 0x9020 },
+                { "tog_oflow", 0x9030 },
+                { "tog_dir", 0x9040 },
+                { "tog_sign", 0x9050 },
+                { "tog_parity", 0x9060 },
+                /* insn_fpu */
+                { "fmov", 0xA001 },
+                { "fmovcc", 0xA002 },
+                { "fneg", 0xA003 },
+                { "fabs", 0xA004 },
+                { "fadd", 0xA005 },
+                { "fsub", 0xA006 },
+                { "fmul", 0xA007 },
+                { "fdiv", 0xA008 },
+                { "fsqrt", 0xA009 },
+                { "fcmp", 0xA00A },
+                { "fcos", 0xA00C },
+                { "fldpi", 0xA00D },
+                { "fldz", 0xA00E },
+                { "ftan", 0xA00F },
+                { "fsine", 0xA010 },
+                { "fsys", 0xA020 },
+                /* insn_interrupt */
+                { "int", 0xD001 },
+                { "intcc", 0xD002 },    /* not present in x86 ISA */
+                { "iret", 0xD003 },
+                { "bound", 0xD004 },
+                { "debug", 0xD005 },
+                { "trace", 0xD006 },
+                { "invalid_op", 0xD007 },
+                { "oflow", 0xD008 },
+                /* insn_system */
+                { "halt", 0xE001 },
+                { "in", 0xE002 },       /* input from port/bus */
+                { "out", 0xE003 },      /* output to port/bus */
+                { "cpuid", 0xE004 },
+                /* insn_other */
+                { "nop", 0xF001 },
+                { "bcdconv", 0xF002 },  /* convert to or from BCD */
+                { "szconv", 0xF003 },   /* change size of operand */
+                { NULL, 0 }, //end
+        };
+
+        unsigned int i;
+
+        //go thru every type in the enum
+        for ( i = 0; types[i].name; i++ ) {
+                if ( types[i].value == type )
+                        return types[i].name;
+        }
+
+        return "";
+}
+
+static const char *get_insn_cpu_str( enum x86_insn_cpu cpu ) {
+        static const char *intel[] = {
+                "",           		// 0
+                "8086",           	// 1
+                "80286",           	// 2
+                "80386",           	// 3
+                "80387",           	// 4
+                "80486",           	// 5
+                "Pentium",           	// 6
+                "Pentium Pro",          // 7
+                "Pentium 2",           	// 8
+                "Pentium 3",           	// 9
+                "Pentium 4"           	// 10
+        };
+
+        if ( cpu < sizeof(intel)/sizeof(intel[0]) ) {
+		return intel[cpu];
+	} else if ( cpu == 16 ) {
+		return "K6";
+	} else if ( cpu == 32 ) {
+		return "K7";
+	} else if ( cpu == 48 ) {
+		return "Athlon";
+	}
+
+        return "";
+}
+
+static const char *get_insn_isa_str( enum x86_insn_isa isa ) {
+        static const char *subset[] = {
+		NULL,				// 0
+                "General Purpose",           	// 1
+                "Floating Point",           	// 2
+                "FPU Management",           	// 3
+                "MMX",           		// 4
+                "SSE",           		// 5
+                "SSE2",           		// 6
+                "SSE3",           		// 7
+                "3DNow!",           		// 8
+                "System"           		// 9
+        };
+
+        if ( isa > sizeof (subset)/sizeof(subset[0]) ) {
+                return "";
+	}
+
+        return subset[isa];
+}
+
+static int format_operand_att( x86_op_t *op, x86_insn_t *insn, char *buf,
+                               int len){
+
+        char str[MAX_OP_STRING];
+
+        memset (str, 0, sizeof str);
+
+        switch ( op->type ) {
+                case op_register:
+                        STRNCATF( buf, "%%%s", op->data.reg.name, len );
+                        break;
+
+                case op_immediate:
+                        get_operand_data_str( op, str, sizeof str );
+                        STRNCATF( buf, "$%s", str, len );
+                        break;
+
+                case op_relative_near: 
+                        STRNCATF( buf, "0x%08X",
+                                 (unsigned int)(op->data.sbyte +
+                                 insn->addr + insn->size), len );
+                        break;
+
+		case op_relative_far:
+                        if (op->datatype == op_word) {
+                                STRNCATF( buf, "0x%08X",
+                                          (unsigned int)(op->data.sword +
+                                          insn->addr + insn->size), len );
+                        } else {
+                        	STRNCATF( buf, "0x%08X",
+                                  	(unsigned int)(op->data.sdword +
+                                  	insn->addr + insn->size), len );
+			}
+                        break;
+
+                case op_absolute:
+			/* ATT uses the syntax $section, $offset */
+                        STRNCATF( buf, "$0x%04" PRIX16 ", ", op->data.absolute.segment,
+				len );
+			if (op->datatype == op_descr16) {
+                        	STRNCATF( buf, "$0x%04" PRIX16, 
+					op->data.absolute.offset.off16, len );
+			} else {
+                        	STRNCATF( buf, "$0x%08" PRIX32, 
+					op->data.absolute.offset.off32, len );
+			}
+                        break;
+                case op_offset:
+                        /* ATT requires a '*' before JMP/CALL ops */
+                        if (insn->type == insn_jmp || insn->type == insn_call)
+                                STRNCAT( buf, "*", len );
+
+                        len -= format_seg( op, buf, len, att_syntax );
+                        STRNCATF( buf, "0x%08" PRIX32, op->data.sdword, len );
+                        break;
+
+                case op_expression:
+                        /* ATT requires a '*' before JMP/CALL ops */
+                        if (insn->type == insn_jmp || insn->type == insn_call)
+                                STRNCAT( buf, "*", len );
+
+                        len -= format_seg( op, buf, len, att_syntax );
+                        len -= format_expr( &op->data.expression, buf, len,
+                                     att_syntax );
+                        break;
+                case op_unused:
+                case op_unknown:
+                        /* return 0-truncated buffer */
+                        break;
+        }
+
+        return ( strlen( buf ) );
+}
+
+static int format_operand_native( x86_op_t *op, x86_insn_t *insn, char *buf,
+                                  int len){
+
+        char str[MAX_OP_STRING];
+
+        switch (op->type) {
+                case op_register:
+                        STRNCAT( buf, op->data.reg.name, len );
+                        break;
+
+                case op_immediate:
+                        get_operand_data_str( op, str, sizeof str );
+                        STRNCAT( buf, str, len );
+                        break;
+
+                case op_relative_near:
+                        STRNCATF( buf, "0x%08" PRIX32,
+                                  (unsigned int)(op->data.sbyte +
+                                  insn->addr + insn->size), len );
+                        break;
+
+                case op_relative_far:
+                        if ( op->datatype == op_word ) {
+                                STRNCATF( buf, "0x%08" PRIX32,
+                                          (unsigned int)(op->data.sword +
+                                          insn->addr + insn->size), len );
+                                break;
+                        } else {
+                        	STRNCATF( buf, "0x%08" PRIX32, op->data.sdword +
+                                	  insn->addr + insn->size, len );
+			}
+                        break;
+
+                case op_absolute:
+                        STRNCATF( buf, "$0x%04" PRIX16 ":", op->data.absolute.segment,
+				len );
+			if (op->datatype == op_descr16) {
+                        	STRNCATF( buf, "0x%04" PRIX16, 
+					op->data.absolute.offset.off16, len );
+			} else {
+                        	STRNCATF( buf, "0x%08" PRIX32, 
+					op->data.absolute.offset.off32, len );
+			}
+                        break;
+
+                case op_offset:
+                        len -= format_seg( op, buf, len, native_syntax );
+                        STRNCATF( buf, "[0x%08" PRIX32 "]", op->data.sdword, len );
+                        break;
+
+                case op_expression:
+                        len -= format_seg( op, buf, len, native_syntax );
+                        len -= format_expr( &op->data.expression, buf, len,
+                                     native_syntax );
+                        break;
+                case op_unused:
+                case op_unknown:
+                        /* return 0-truncated buffer */
+                        break;
+        }
+
+        return( strlen( buf ) );
+}
+
+static int format_operand_xml( x86_op_t *op, x86_insn_t *insn, char *buf,
+                               int len){
+
+        char str[MAX_OP_STRING] = "\0";
+
+        switch (op->type) {
+                case op_register:
+
+                        get_operand_regtype_str( op->data.reg.type, str,
+                                                 sizeof str );
+
+                        STRNCAT( buf, "\t\t<register ", len );
+                        STRNCATF( buf, "name=\"%s\" ", op->data.reg.name, len );
+                        STRNCATF( buf, "type=\"%s\" ", str, len );
+                        STRNCATF( buf, "size=%d/>\n", op->data.reg.size, len );
+                        break;
+
+                case op_immediate:
+
+                        get_operand_data_str( op, str, sizeof str );
+
+                        STRNCAT( buf, "\t\t<immediate ", len );
+                        STRNCATF( buf, "type=\"%s\" ",
+                                  get_operand_datatype_str (op), len );
+                        STRNCATF( buf, "value=\"%s\"/>\n", str, len );
+                        break;
+
+                case op_relative_near:
+                        STRNCAT( buf, "\t\t<relative_offset ", len );
+
+                        STRNCATF( buf, "value=\"0x%08" PRIX32 "\"/>\n",
+                                  (unsigned int)(op->data.sbyte +
+                                  insn->addr + insn->size), len );
+                        break;
+
+                case op_relative_far:
+                        STRNCAT( buf, "\t\t<relative_offset ", len );
+
+                        if (op->datatype == op_word) {
+                                STRNCATF( buf, "value=\"0x%08" PRIX32 "\"/>\n",
+                                          (unsigned int)(op->data.sword +
+                                          insn->addr + insn->size), len);
+                                break;
+                        } else {
+
+                        	STRNCATF( buf, "value=\"0x%08" PRIX32 "\"/>\n",
+                                      op->data.sdword + insn->addr + insn->size,
+                                      len );
+			}
+                        break;
+
+                case op_absolute:
+
+                        STRNCATF( buf, 
+				"\t\t<absolute_address segment=\"0x%04" PRIX16 "\"",
+                        	op->data.absolute.segment, len );
+
+			if (op->datatype == op_descr16) {
+                        	STRNCATF( buf, "offset=\"0x%04" PRIX16 "\">", 
+					op->data.absolute.offset.off16, len );
+			} else {
+                        	STRNCATF( buf, "offset=\"0x%08" PRIX32 "\">", 
+					op->data.absolute.offset.off32, len );
+			}
+
+                        STRNCAT( buf, "\t\t</absolute_address>\n", len );
+                        break;
+
+                case op_expression:
+			
+
+                        STRNCAT( buf, "\t\t<address_expression>\n", len );
+
+                        len -= format_seg( op, buf, len, xml_syntax );
+                        len -= format_expr( &op->data.expression, buf, len,
+                                     xml_syntax );
+
+                        STRNCAT( buf, "\t\t</address_expression>\n", len );
+                        break;
+
+                case op_offset:
+
+                        STRNCAT( buf, "\t\t<segment_offset>\n", len );
+
+                        len -= format_seg( op, buf, len, xml_syntax );
+
+                        STRNCAT( buf, "\t\t\t<address ", len);
+                        STRNCATF( buf, "value=\"0x%08" PRIX32 "\"/>\n",
+                                          op->data.sdword, len );
+                        STRNCAT( buf, "\t\t</segment_offset>\n", len );
+                        break;
+
+                case op_unused:
+                case op_unknown:
+                        /* return 0-truncated buffer */
+                        break;
+        }
+
+        return( strlen( buf ) );
+}
+
+static int format_operand_raw( x86_op_t *op, x86_insn_t *insn, char *buf,
+                               int len){
+
+        char str[MAX_OP_RAW_STRING];
+	const char *datatype = get_operand_datatype_str(op);
+
+        switch (op->type) {
+                case op_register:
+
+                        get_operand_regtype_str( op->data.reg.type, str,
+                                                 sizeof str );
+
+                        STRNCAT( buf, "reg|", len );
+                        STRNCATF( buf, "%s|", datatype, len );
+                        STRNCATF( buf, "%s:", op->data.reg.name, len );
+                        STRNCATF( buf, "%s:", str, len );
+                        STRNCATF( buf, "%d|", op->data.reg.size, len );
+                        break;
+
+                case op_immediate:
+
+                        get_operand_data_str( op, str, sizeof str );
+
+                        STRNCAT( buf, "immediate|", len );
+                        STRNCATF( buf, "%s|", datatype, len );
+                        STRNCATF( buf, "%s|", str, len );
+                        break;
+
+                case op_relative_near:
+			/* NOTE: in raw format, we print the
+			 * relative offset, not the actual
+			 * address of the jump target */
+
+                        STRNCAT( buf, "relative|", len );
+                        STRNCATF( buf, "%s|", datatype, len );
+                        STRNCATF( buf, "%" PRId8 "|", op->data.sbyte, len );
+                        break;
+
+                case op_relative_far:
+
+                        STRNCAT( buf, "relative|", len );
+                        STRNCATF( buf, "%s|", datatype, len );
+
+                        if (op->datatype == op_word) {
+                                STRNCATF( buf, "%" PRId16 "|", op->data.sword, len);
+                                break;
+                        } else {
+                        	STRNCATF( buf, "%" PRId32 "|", op->data.sdword, len );
+			}
+                        break;
+
+                case op_absolute:
+
+                        STRNCAT( buf, "absolute_address|", len );
+                        STRNCATF( buf, "%s|", datatype, len );
+
+                        STRNCATF( buf, "$0x%04" PRIX16 ":", op->data.absolute.segment,
+				len );
+			if (op->datatype == op_descr16) {
+                        	STRNCATF( buf, "0x%04" PRIX16 "|", 
+					op->data.absolute.offset.off16, len );
+			} else {
+                        	STRNCATF( buf, "0x%08" PRIX32 "|", 
+					op->data.absolute.offset.off32, len );
+			}
+
+                        break;
+
+                case op_expression:
+
+                        STRNCAT( buf, "address_expression|", len );
+                        STRNCATF( buf, "%s|", datatype, len );
+
+                        len -= format_seg( op, buf, len, native_syntax );
+                        len -= format_expr( &op->data.expression, buf, len,
+                                     raw_syntax );
+
+                        STRNCAT( buf, "|", len );
+                        break;
+
+                case op_offset:
+
+                        STRNCAT( buf, "segment_offset|", len );
+                        STRNCATF( buf, "%s|", datatype, len );
+
+                        len -= format_seg( op, buf, len, xml_syntax );
+
+                        STRNCATF( buf, "%08" PRIX32 "|", op->data.sdword, len );
+                        break;
+
+                case op_unused:
+                case op_unknown:
+                        /* return 0-truncated buffer */
+                        break;
+        }
+
+        return( strlen( buf ) );
+}
+
+int x86_format_operand( x86_op_t *op, char *buf, int len,
+                        enum x86_asm_format format ){
+	x86_insn_t *insn;
+
+        if ( ! op || ! buf || len < 1 ) {
+                return(0);
+        }
+
+	/* insn is stored in x86_op_t since .21-pre3 */
+	insn = (x86_insn_t *) op->insn;
+
+        memset( buf, 0, len );
+
+        switch ( format ) {
+                case att_syntax:
+                        return format_operand_att( op, insn, buf, len );
+                case xml_syntax:
+                        return format_operand_xml( op, insn, buf, len );
+                case raw_syntax:
+                        return format_operand_raw( op, insn, buf, len );
+                case native_syntax:
+                case intel_syntax:
+                default:
+                        return format_operand_native( op, insn, buf, len );
+        }
+}
+
+#define is_imm_jmp(op)   (op->type == op_absolute   || \
+                          op->type == op_immediate  || \
+                          op->type == op_offset)
+#define is_memory_op(op) (op->type == op_absolute   || \
+                          op->type == op_expression || \
+                          op->type == op_offset)
+
+static int format_att_mnemonic( x86_insn_t *insn, char *buf, int len) {
+        int size = 0;
+        const char *suffix;
+
+        if (! insn || ! buf || ! len )
+                return(0);
+
+        memset( buf, 0, len );
+
+        /* do long jump/call prefix */
+        if ( insn->type == insn_jmp || insn->type == insn_call ) {
+                if (! is_imm_jmp( x86_operand_1st(insn) ) ||
+                     (x86_operand_1st(insn))->datatype != op_byte ) {
+                    /* far jump/call, use "l" prefix */
+                    STRNCAT( buf, "l", len );
+                }
+                STRNCAT( buf, insn->mnemonic, len );
+
+                return ( strlen( buf ) );
+        }
+
+        /* do mnemonic */
+        STRNCAT( buf, insn->mnemonic, len );
+
+        /* do suffixes for memory operands */
+        if (!(insn->note & insn_note_nosuffix) &&
+            (insn->group == insn_arithmetic ||
+             insn->group == insn_logic ||
+             insn->group == insn_move ||
+             insn->group == insn_stack ||
+             insn->group == insn_string ||
+             insn->group == insn_comparison ||
+             insn->type == insn_in ||
+             insn->type == insn_out
+            )) {
+            if ( x86_operand_count( insn, op_explicit ) > 0 &&
+                 is_memory_op( x86_operand_1st(insn) ) ){
+                size = x86_operand_size( x86_operand_1st( insn ) );
+            } else if ( x86_operand_count( insn, op_explicit ) > 1 &&
+                        is_memory_op( x86_operand_2nd(insn) ) ){
+                size = x86_operand_size( x86_operand_2nd( insn ) );
+            }
+        }
+
+        if ( size == 1 ) suffix = "b";
+        else if ( size == 2 ) suffix = "w";
+        else if ( size == 4 ) suffix = "l";
+        else if ( size == 8 ) suffix = "q";
+        else suffix = "";
+
+        STRNCAT( buf, suffix, len );
+        return ( strlen( buf ) );
+}
+
+int x86_format_mnemonic(x86_insn_t *insn, char *buf, int len,
+                        enum x86_asm_format format){
+        char str[MAX_OP_STRING];
+
+        memset( buf, 0, len );
+        STRNCAT( buf, insn->prefix_string, len );
+        if ( format == att_syntax ) {
+                format_att_mnemonic( insn, str, sizeof str );
+                STRNCAT( buf, str, len );
+        } else {
+                STRNCAT( buf, insn->mnemonic, len );
+        }
+
+        return( strlen( buf ) );
+}
+
+struct op_string { char *buf; size_t len; };
+
+static void format_op_raw( x86_op_t *op, x86_insn_t *insn, void *arg ) {
+	struct op_string * opstr = (struct op_string *) arg;
+
+        format_operand_raw(op, insn, opstr->buf, opstr->len);
+}
+
+static int format_insn_note(x86_insn_t *insn, char *buf, int len){
+	char note[32] = {0};
+	int len_orig = len, note_len = 32;
+
+	if ( insn->note & insn_note_ring0 ) {
+        	STRNCATF( note, "%s", "Ring0 ", note_len );
+	}
+	if ( insn->note & insn_note_smm ) {
+        	STRNCATF( note, "%s", "SMM ", note_len );
+	}
+	if ( insn->note & insn_note_serial ) {
+        	STRNCATF(note, "%s", "Serialize ", note_len );
+	}
+        STRNCATF( buf, "%s|", note, len );
+
+        return( len_orig - len );
+}
+
+static int format_raw_insn( x86_insn_t *insn, char *buf, int len ){
+	struct op_string opstr = { buf, len };
+        int i;
+
+        /* RAW style:
+         * ADDRESS|OFFSET|SIZE|BYTES|
+         * PREFIX|PREFIX_STRING|GROUP|TYPE|NOTES|
+	 * MNEMONIC|CPU|ISA|FLAGS_SET|FLAGS_TESTED|
+	 * STACK_MOD|STACK_MOD_VAL
+	 * [|OP_TYPE|OP_DATATYPE|OP_ACCESS|OP_FLAGS|OP]*
+         *
+         * Register values are encoded as:
+         * NAME:TYPE:SIZE
+         *
+         * Effective addresses are encoded as:
+         * disp(base_reg,index_reg,scale)
+         */
+        STRNCATF( buf, "0x%08" PRIX32 "|", insn->addr  , len );
+        STRNCATF( buf, "0x%08" PRIX32 "|", insn->offset, len );
+        STRNCATF( buf, "%d|"    , insn->size  , len );
+
+        /* print bytes */
+        for ( i = 0; i < insn->size; i++ ) {
+                STRNCATF( buf, "%02X ", insn->bytes[i], len );
+        }
+        STRNCAT( buf, "|", len );
+
+        len -= format_insn_prefix_str( insn->prefix, buf, len );
+        STRNCATF( buf, "|%s|", insn->prefix_string             , len );
+        STRNCATF( buf, "%s|", get_insn_group_str( insn->group ), len );
+        STRNCATF( buf, "%s|", get_insn_type_str( insn->type )  , len );
+        STRNCATF( buf, "%s|", insn->mnemonic                   , len );
+        STRNCATF( buf, "%s|", get_insn_cpu_str( insn->cpu )  , len );
+        STRNCATF( buf, "%s|", get_insn_isa_str( insn->isa )  , len );
+
+	/* insn note */
+	len -= format_insn_note( insn, buf, len );
+
+        len -= format_insn_eflags_str( insn->flags_set, buf, len );
+        STRNCAT( buf, "|", len );
+        len -= format_insn_eflags_str( insn->flags_tested, buf, len );
+        STRNCAT( buf, "|", len );
+        STRNCATF( buf, "%d|", insn->stack_mod, len );
+        STRNCATF( buf, "%" PRId32 "|", insn->stack_mod_val, len );
+
+	opstr.len = len;
+	x86_operand_foreach( insn, format_op_raw, &opstr, op_any );
+
+        return( strlen (buf) );
+}
+
+static int format_xml_insn( x86_insn_t *insn, char *buf, int len ) {
+        char str[MAX_OP_XML_STRING];
+        int i;
+
+        STRNCAT( buf, "<x86_insn>\n", len );
+
+        STRNCATF( buf, "\t<address rva=\"0x%08" PRIX32 "\" ", insn->addr, len );
+        STRNCATF( buf, "offset=\"0x%08" PRIX32 "\" ", insn->offset, len );
+        STRNCATF( buf, "size=%d bytes=\"", insn->size, len );
+
+        for ( i = 0; i < insn->size; i++ ) {
+                STRNCATF( buf, "%02X ", insn->bytes[i], len );
+        }
+        STRNCAT( buf, "\"/>\n", len );
+
+        STRNCAT( buf, "\t<prefix type=\"", len );
+        len -= format_insn_prefix_str( insn->prefix, buf, len );
+        STRNCATF( buf, "\" string=\"%s\"/>\n", insn->prefix_string, len );
+
+        STRNCATF( buf, "\t<mnemonic group=\"%s\" ",
+                  get_insn_group_str (insn->group), len );
+        STRNCATF( buf, "type=\"%s\" ", get_insn_type_str (insn->type), len );
+        STRNCATF( buf, "string=\"%s\"/>\n", insn->mnemonic, len );
+
+        STRNCAT( buf, "\t<flags type=set>\n", len );
+        STRNCAT( buf, "\t\t<flag name=\"", len );
+        len -= format_insn_eflags_str( insn->flags_set, buf, len );
+        STRNCAT( buf, "\"/>\n\t</flags>\n", len );
+
+
+        STRNCAT( buf, "\t<flags type=tested>\n", len );
+        STRNCAT( buf, "\t\t<flag name=\"", len );
+        len -= format_insn_eflags_str( insn->flags_tested, buf, len );
+        STRNCAT( buf, "\"/>\n\t</flags>\n", len );
+
+	if ( x86_operand_1st( insn ) ) {
+        	x86_format_operand( x86_operand_1st(insn), str,
+                           sizeof str, xml_syntax);
+        	STRNCAT( buf, "\t<operand name=dest>\n", len );
+        	STRNCAT( buf, str, len );
+        	STRNCAT( buf, "\t</operand>\n", len );
+	}
+
+	if ( x86_operand_2nd( insn ) ) {
+        	x86_format_operand( x86_operand_2nd( insn ), str,
+                           sizeof str, xml_syntax);
+        	STRNCAT( buf, "\t<operand name=src>\n", len );
+        	STRNCAT( buf, str, len );
+        	STRNCAT( buf, "\t</operand>\n", len );
+	}
+
+	if ( x86_operand_3rd( insn ) ) {
+        	x86_format_operand( x86_operand_3rd(insn), str,
+                           sizeof str, xml_syntax);
+        	STRNCAT( buf, "\t<operand name=imm>\n", len );
+        	STRNCAT( buf, str, len );
+        	STRNCAT( buf, "\t</operand>\n", len );
+	}
+
+        STRNCAT( buf, "</x86_insn>\n", len );
+
+        return strlen (buf);
+}
+
+int x86_format_header( char *buf, int len, enum x86_asm_format format ) {
+        switch (format) {
+                case att_syntax:
+                        snprintf( buf, len, "MNEMONIC\tSRC, DEST, IMM" );
+                        break;
+                case intel_syntax:
+                        snprintf( buf, len, "MNEMONIC\tDEST, SRC, IMM" );
+                        break;
+                case native_syntax:
+                        snprintf( buf, len, "ADDRESS\tBYTES\tMNEMONIC\t"
+                                            "DEST\tSRC\tIMM" );
+                        break;
+                case raw_syntax:
+                        snprintf( buf, len, "ADDRESS|OFFSET|SIZE|BYTES|"
+                               "PREFIX|PREFIX_STRING|GROUP|TYPE|NOTES|"
+			       "MNEMONIC|CPU|ISA|FLAGS_SET|FLAGS_TESTED|"
+			       "STACK_MOD|STACK_MOD_VAL"
+			       "[|OP_TYPE|OP_DATATYPE|OP_ACCESS|OP_FLAGS|OP]*"
+                                );
+                        break;
+                case xml_syntax:
+                        snprintf( buf, len,
+                                  "<x86_insn>"
+                                      "<address rva= offset= size= bytes=/>"
+                                      "<prefix type= string=/>"
+                                      "<mnemonic group= type= string= "
+				      "cpu= isa= note= />"
+                                      "<flags type=set>"
+                                          "<flag name=>"
+                                      "</flags>"
+				      "<stack_mod val= >"
+                                      "<flags type=tested>"
+                                          "<flag name=>"
+                                      "</flags>"
+                                      "<operand name=>"
+                                          "<register name= type= size=/>"
+                                          "<immediate type= value=/>"
+                                          "<relative_offset value=/>"
+                                          "<absolute_address value=>"
+                                              "<segment value=/>"
+                                          "</absolute_address>"
+                                          "<address_expression>"
+                                              "<segment value=/>"
+                                              "<base>"
+                                                  "<register name= type= size=/>"
+                                              "</base>"
+                                              "<index>"
+                                                  "<register name= type= size=/>"
+                                              "</index>"
+                                              "<scale>"
+                                                  "<immediate value=/>"
+                                              "</scale>"
+                                              "<displacement>"
+                                                  "<immediate value=/>"
+                                                  "<address value=/>"
+                                              "</displacement>"
+                                          "</address_expression>"
+                                          "<segment_offset>"
+                                              "<address value=/>"
+                                          "</segment_offset>"
+                                      "</operand>"
+                                  "</x86_insn>"
+                                );
+                        break;
+		case unknown_syntax:
+			if ( len ) {
+				buf[0] = '\0';
+			}
+			break;
+        }
+
+        return( strlen(buf) );
+}
+
+int x86_format_insn( x86_insn_t *insn, char *buf, int len,
+                     enum x86_asm_format format ){
+        char str[MAX_OP_STRING];
+        x86_op_t *src, *dst;
+        int i;
+
+        memset(buf, 0, len);
+        if ( format == intel_syntax ) {
+                /* INTEL STYLE: mnemonic dest, src, imm */
+                STRNCAT( buf, insn->prefix_string, len );
+                STRNCAT( buf, insn->mnemonic, len );
+                STRNCAT( buf, "\t", len );
+
+                /* dest */
+		if ( (dst = x86_operand_1st( insn )) && !(dst->flags & op_implied) ) {
+        		x86_format_operand( dst, str, MAX_OP_STRING, format);
+                	STRNCAT( buf, str, len );
+                }
+
+                /* src */
+		if ( (src = x86_operand_2nd( insn )) ) {
+                        if ( !(dst->flags & op_implied) ) {
+                	        STRNCAT( buf, ", ", len );
+                        }
+        		x86_format_operand( src, str, MAX_OP_STRING, format);
+                	STRNCAT( buf, str, len );
+                }
+
+                /* imm */
+		if ( x86_operand_3rd( insn )) {
+                	STRNCAT( buf, ", ", len );
+        		x86_format_operand( x86_operand_3rd( insn ), 
+				str, MAX_OP_STRING, format);
+                	STRNCAT( buf, str, len );
+		}
+
+        } else if ( format == att_syntax ) {
+                /* ATT STYLE: mnemonic src, dest, imm */
+                STRNCAT( buf, insn->prefix_string, len );
+                format_att_mnemonic(insn, str, MAX_OP_STRING);
+                STRNCATF( buf, "%s\t", str, len);
+
+
+		/* not sure which is correct? sometimes GNU as requires
+		 * an imm as the first operand, sometimes as the third... */
+                /* imm */
+		if ( x86_operand_3rd( insn ) ) {
+        		x86_format_operand(x86_operand_3rd( insn ), 
+				str, MAX_OP_STRING, format);
+                	STRNCAT( buf, str, len );
+			/* there is always 'dest' operand if there is 'src' */
+			STRNCAT( buf, ", ", len );
+		}
+
+                if ( (insn->note & insn_note_nonswap ) == 0 ) {
+                        /* regular AT&T style swap */
+                        src = x86_operand_2nd( insn );
+                        dst = x86_operand_1st( insn );
+                }
+                else {
+                        /* special-case instructions */
+                        src = x86_operand_1st( insn );
+                        dst = x86_operand_2nd( insn );
+                }
+
+                /* src */
+                if ( src ) {
+                        x86_format_operand(src, str, MAX_OP_STRING, format);
+                        STRNCAT( buf, str, len );
+                        /* there is always 'dest' operand if there is 'src' */
+                        if ( dst && !(dst->flags & op_implied) ) {
+                                STRNCAT( buf, ", ", len );
+                        }
+                }
+
+                /* dest */
+                if ( dst && !(dst->flags & op_implied) ) {
+                        x86_format_operand( dst, str, MAX_OP_STRING, format);
+                        STRNCAT( buf, str, len );
+                }
+
+
+        } else if ( format == raw_syntax ) {
+                format_raw_insn( insn, buf, len );
+        } else if ( format == xml_syntax ) {
+                format_xml_insn( insn, buf, len );
+        } else { /* default to native */
+                /* NATIVE style: RVA\tBYTES\tMNEMONIC\tOPERANDS */
+                /* print address */
+                STRNCATF( buf, "%08" PRIX32 "\t", insn->addr, len );
+
+                /* print bytes */
+                for ( i = 0; i < insn->size; i++ ) {
+                        STRNCATF( buf, "%02X ", insn->bytes[i], len );
+                }
+
+                STRNCAT( buf, "\t", len );
+
+                /* print mnemonic */
+                STRNCAT( buf, insn->prefix_string, len );
+                STRNCAT( buf, insn->mnemonic, len );
+                STRNCAT( buf, "\t", len );
+
+                /* print operands */
+                /* dest */
+		if ( x86_operand_1st( insn )  ) {
+        		x86_format_operand( x86_operand_1st( insn ), 
+				str, MAX_OP_STRING, format);
+                	STRNCATF( buf, "%s\t", str, len );
+		}
+
+                /* src */
+		if ( x86_operand_2nd( insn ) ) {
+        		x86_format_operand(x86_operand_2nd( insn ), 
+				str, MAX_OP_STRING, format);
+                	STRNCATF( buf, "%s\t", str, len );
+		}
+
+                /* imm */
+		if ( x86_operand_3rd( insn )) {
+        		x86_format_operand( x86_operand_3rd( insn ), 
+				str, MAX_OP_STRING, format);
+                	STRNCAT( buf, str, len );
+		}
+        }
+
+        return( strlen( buf ) );
+}
+
diff --git a/google-breakpad/src/third_party/libdisasm/x86_imm.c b/google-breakpad/src/third_party/libdisasm/x86_imm.c
new file mode 100644
index 0000000..cd59bfc
--- /dev/null
+++ b/google-breakpad/src/third_party/libdisasm/x86_imm.c
@@ -0,0 +1,70 @@
+#include "qword.h"
+#include "x86_imm.h"
+
+#include <stdio.h>
+
+unsigned int x86_imm_signsized( unsigned char * buf, size_t buf_len,
+				void *dest, unsigned int size ) {
+	signed char *cp = (signed char *) dest;
+	signed short *sp = (signed short *) dest;
+	int32_t *lp = (int32_t *) dest;
+	qword_t *qp = (qword_t *) dest;
+
+	if ( size > buf_len ) {
+		return 0;
+	}
+
+	/* Copy 'size' bytes from *buf to *op
+	 * return number of bytes copied */
+	switch (size) {
+		case 1:		/* BYTE */
+			*cp =  *((signed char *) buf);
+			break;
+		case 2:		/* WORD */
+			*sp =  *((signed short *) buf);
+			break;
+		case 6:
+		case 8:		/* QWORD */
+			*qp = *((qword_t *) buf);
+			break;
+		case 4:		/* DWORD */
+		default:
+			*lp = *((int32_t *) buf);
+			break;
+	}
+	return (size);
+}
+
+unsigned int x86_imm_sized( unsigned char * buf, size_t buf_len, void *dest,
+			    unsigned int size ) {
+	unsigned char *cp = (unsigned char *) dest;
+	unsigned short *sp = (unsigned short *) dest;
+	uint32_t *lp = (uint32_t *) dest;
+	qword_t *qp = (qword_t *) dest;
+
+	if ( size > buf_len ) {
+		return 0;
+	}
+
+	/* Copy 'size' bytes from *buf to *op
+	 * return number of bytes copied */
+	switch (size) {
+		case 1:		/* BYTE */
+			*cp =  *((unsigned char *) buf);
+			break;
+		case 2:		/* WORD */
+			*sp =  *((unsigned short *) buf);
+			break;
+		case 6:
+		case 8:		/* QWORD */
+			*qp = *((qword_t *) buf);
+			break;
+		case 4:		/* DWORD */
+		default:
+			*lp = *((uint32_t *) buf);
+			break;
+	}
+
+	return (size);
+}
+
diff --git a/google-breakpad/src/third_party/libdisasm/x86_imm.h b/google-breakpad/src/third_party/libdisasm/x86_imm.h
new file mode 100644
index 0000000..fa35ff2
--- /dev/null
+++ b/google-breakpad/src/third_party/libdisasm/x86_imm.h
@@ -0,0 +1,18 @@
+#ifndef x86_IMM_H
+#define x86_IMM_H
+
+#include "./qword.h"
+#include <sys/types.h>
+
+#ifdef WIN32
+#include <windows.h>
+#endif
+
+/* these are in the global x86 namespace but are not a part of the
+ * official API */
+unsigned int x86_imm_sized( unsigned char *buf, size_t buf_len, void *dest,
+			    unsigned int size );
+
+unsigned int x86_imm_signsized( unsigned char *buf, size_t buf_len, void *dest,
+				unsigned int size );
+#endif
diff --git a/google-breakpad/src/third_party/libdisasm/x86_insn.c b/google-breakpad/src/third_party/libdisasm/x86_insn.c
new file mode 100644
index 0000000..5649b89
--- /dev/null
+++ b/google-breakpad/src/third_party/libdisasm/x86_insn.c
@@ -0,0 +1,182 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "libdis.h"
+
+#ifdef _MSC_VER
+        #define snprintf        _snprintf
+        #define inline          __inline
+#endif
+
+int x86_insn_is_valid( x86_insn_t *insn ) {
+	if ( insn && insn->type != insn_invalid && insn->size > 0 ) {
+		return 1;
+	}
+
+	return 0;
+}
+
+uint32_t x86_get_address( x86_insn_t *insn ) {
+	x86_oplist_t *op_lst;
+        if (! insn || ! insn->operands ) {
+        	return 0;
+        }
+
+	for (op_lst = insn->operands; op_lst; op_lst = op_lst->next ) {
+		if ( op_lst->op.type == op_offset ) {
+			return op_lst->op.data.offset;
+		} else if ( op_lst->op.type == op_absolute ) {
+			if ( op_lst->op.datatype == op_descr16 ) {
+				return (uint32_t)
+					op_lst->op.data.absolute.offset.off16;
+			}
+			return op_lst->op.data.absolute.offset.off32;
+		}
+	}
+	
+	return 0;
+}
+
+int32_t x86_get_rel_offset( x86_insn_t *insn ) {
+	x86_oplist_t *op_lst;
+        if (! insn || ! insn->operands ) {
+        	return 0;
+        }
+
+	for (op_lst = insn->operands; op_lst; op_lst = op_lst->next ) {
+		if ( op_lst->op.type == op_relative_near ) {
+			return (int32_t) op_lst->op.data.relative_near;
+		} else if ( op_lst->op.type == op_relative_far ) {
+			return op_lst->op.data.relative_far;
+		}
+	}
+	
+	return 0;
+}
+
+x86_op_t * x86_get_branch_target( x86_insn_t *insn ) {
+	x86_oplist_t *op_lst;
+        if (! insn || ! insn->operands ) {
+        	return NULL;
+        }
+
+	for (op_lst = insn->operands; op_lst; op_lst = op_lst->next ) {
+		if ( op_lst->op.access & op_execute ) {
+			return &(op_lst->op);
+		}
+	}
+	
+	return NULL;
+}
+x86_op_t * x86_get_imm( x86_insn_t *insn ) {
+	x86_oplist_t *op_lst;
+        if (! insn || ! insn->operands ) {
+        	return NULL;
+        }
+
+	for (op_lst = insn->operands; op_lst; op_lst = op_lst->next ) {
+		if ( op_lst->op.type == op_immediate ) {
+			return &(op_lst->op);
+		}
+	}
+	
+	return NULL;
+}
+
+#define IS_PROPER_IMM( x ) \
+	x->op.type == op_immediate && ! (x->op.flags & op_hardcode)
+							   
+
+/* if there is an immediate value in the instruction, return a pointer to
+ * it */
+unsigned char * x86_get_raw_imm( x86_insn_t *insn ) {
+        int size, offset;
+        x86_op_t *op  = NULL;
+
+        if (! insn || ! insn->operands ) {
+        	return(NULL);
+        }
+
+	/* a bit inelegant, but oh well... */
+	if ( IS_PROPER_IMM( insn->operands ) ) {
+		op = &insn->operands->op;
+	} else if ( insn->operands->next ) {
+		if ( IS_PROPER_IMM( insn->operands->next ) ) {
+			op = &insn->operands->next->op;
+		} else if ( insn->operands->next->next && 
+			    IS_PROPER_IMM( insn->operands->next->next ) ) {
+			op = &insn->operands->next->next->op;
+		}
+	}
+	
+	if (! op ) {
+		return( NULL );
+	}
+
+	/* immediate data is at the end of the insn */
+	size = x86_operand_size( op );
+	offset = insn->size - size;
+	return( &insn->bytes[offset] );
+}
+
+
+unsigned int x86_operand_size( x86_op_t *op ) {
+        switch (op->datatype ) {
+                case op_byte:    return 1;
+                case op_word:    return 2;
+                case op_dword:   return 4;
+                case op_qword:   return 8;
+                case op_dqword:  return 16;
+                case op_sreal:   return 4;
+                case op_dreal:   return 8;
+                case op_extreal: return 10;
+                case op_bcd:     return 10;
+                case op_ssimd:   return 16;
+                case op_dsimd:   return 16;
+                case op_sssimd:  return 4;
+                case op_sdsimd:  return 8;
+                case op_descr32: return 6;
+                case op_descr16: return 4;
+                case op_pdescr32: return 6;
+                case op_pdescr16: return 6;
+		case op_bounds16: return 4;
+		case op_bounds32: return 8;
+                case op_fpuenv16:  return 14;
+                case op_fpuenv32:  return 28;
+                case op_fpustate16:  return 94;
+                case op_fpustate32:  return 108;
+                case op_fpregset: return 512;
+		case op_fpreg: return 10;
+		case op_none: return 0;
+        }
+        return(4);      /* default size */
+}
+
+void x86_set_insn_addr( x86_insn_t *insn, uint32_t addr ) {
+        if ( insn ) insn->addr = addr;
+}
+
+void x86_set_insn_offset( x86_insn_t *insn, unsigned int offset ){
+        if ( insn ) insn->offset = offset;
+}
+
+void x86_set_insn_function( x86_insn_t *insn, void * func ){
+        if ( insn ) insn->function = func;
+}
+
+void x86_set_insn_block( x86_insn_t *insn, void * block ){
+        if ( insn ) insn->block = block;
+}
+
+void x86_tag_insn( x86_insn_t *insn ){
+        if ( insn ) insn->tag = 1;
+}
+
+void x86_untag_insn( x86_insn_t *insn ){
+        if ( insn ) insn->tag = 0;
+}
+
+int x86_insn_is_tagged( x86_insn_t *insn ){
+        return insn->tag;
+}
+
diff --git a/google-breakpad/src/third_party/libdisasm/x86_misc.c b/google-breakpad/src/third_party/libdisasm/x86_misc.c
new file mode 100644
index 0000000..3d2dd0a
--- /dev/null
+++ b/google-breakpad/src/third_party/libdisasm/x86_misc.c
@@ -0,0 +1,71 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "libdis.h"
+#include "ia32_insn.h"
+#include "ia32_reg.h"		/* for ia32_reg wrapper */
+#include "ia32_settings.h"
+extern ia32_settings_t ia32_settings;
+
+#ifdef _MSC_VER
+        #define snprintf        _snprintf
+        #define inline          __inline
+#endif
+
+
+/* =========================================================== INIT/TERM */
+static DISASM_REPORTER __x86_reporter_func = NULL;
+static void * __x86_reporter_arg = NULL;
+
+int x86_init( enum x86_options options, DISASM_REPORTER reporter, void * arg )
+{
+        ia32_settings.options = options;
+        __x86_reporter_func = reporter;
+	__x86_reporter_arg = arg;
+
+        return 1;
+}
+
+void x86_set_reporter( DISASM_REPORTER reporter, void * arg ) {
+        __x86_reporter_func = reporter;
+	__x86_reporter_arg = arg;
+}
+
+void x86_set_options( enum x86_options options ){
+        ia32_settings.options = options;
+}
+
+enum x86_options x86_get_options( void ) {
+        return ia32_settings.options;
+}
+
+int x86_cleanup( void )
+{
+        return 1;
+}
+
+/* =========================================================== ERRORS */
+void x86_report_error( enum x86_report_codes code, void *data ) {
+        if ( __x86_reporter_func ) {
+                (*__x86_reporter_func)(code, data, __x86_reporter_arg);
+        }
+}
+
+
+/* =========================================================== MISC */
+unsigned int x86_endian(void)        { return ia32_settings.endian;  }
+unsigned int x86_addr_size(void)     { return ia32_settings.sz_addr; }
+unsigned int x86_op_size(void)       { return ia32_settings.sz_oper; }
+unsigned int x86_word_size(void)     { return ia32_settings.sz_word; }
+unsigned int x86_max_insn_size(void) { return ia32_settings.max_insn; }
+unsigned int x86_sp_reg(void)        { return ia32_settings.id_sp_reg;      }
+unsigned int x86_fp_reg(void)        { return ia32_settings.id_fp_reg;      }
+unsigned int x86_ip_reg(void)        { return ia32_settings.id_ip_reg;      }
+unsigned int x86_flag_reg(void)        { return ia32_settings.id_flag_reg;  }
+
+/* wrapper function to hide the IA32 register fn */
+void x86_reg_from_id( unsigned int id, x86_reg_t * reg ) {
+	ia32_handle_register( reg, id );
+	return;
+}
diff --git a/google-breakpad/src/third_party/libdisasm/x86_operand_list.c b/google-breakpad/src/third_party/libdisasm/x86_operand_list.c
new file mode 100644
index 0000000..95409e0
--- /dev/null
+++ b/google-breakpad/src/third_party/libdisasm/x86_operand_list.c
@@ -0,0 +1,191 @@
+#include <stdlib.h>
+#include "libdis.h"
+
+
+static void x86_oplist_append( x86_insn_t *insn, x86_oplist_t *op ) {
+	x86_oplist_t *list;
+
+	if (! insn ) {	
+		return;
+	}
+
+	list = insn->operands;
+	if (! list ) {
+		insn->operand_count = 1;
+		/* Note that we have no way of knowing if this is an
+		 * exlicit operand or not, since the caller fills 
+		 * the x86_op_t after we return. We increase the
+		 * explicit count automatically, and ia32_insn_implicit_ops
+		 * decrements it */
+		insn->explicit_count = 1;
+		insn->operands = op;
+		return;
+	}
+
+	/* get to end of list */
+	for ( ; list->next; list = list->next ) 
+		;
+
+	insn->operand_count = insn->operand_count + 1;
+	insn->explicit_count = insn->explicit_count + 1;
+	list->next = op;
+
+	return;
+}
+	
+x86_op_t * x86_operand_new( x86_insn_t *insn ) {
+	x86_oplist_t *op;
+
+	if (! insn ) {	
+		return(NULL);
+	}
+	op = calloc( sizeof(x86_oplist_t), 1 );
+	op->op.insn = insn;
+	x86_oplist_append( insn, op );
+	return( &(op->op) );
+}
+
+void x86_oplist_free( x86_insn_t *insn ) {
+	x86_oplist_t *op, *list;
+
+	if (! insn ) {
+		return;
+	}
+
+	for ( list = insn->operands; list; ) {
+		op = list;
+		list = list->next;
+		free(op);
+	}
+
+	insn->operands = NULL;
+	insn->operand_count = 0;
+	insn->explicit_count = 0;
+
+	return;
+}
+
+/* ================================================== LIBDISASM API */
+/* these could probably just be #defines, but that means exposing the
+   enum... yet one more confusing thing in the API */
+int x86_operand_foreach( x86_insn_t *insn, x86_operand_fn func, void *arg, 
+	       		enum x86_op_foreach_type type ){
+	x86_oplist_t *list;
+	char explicit = 1, implicit = 1;
+
+	if (! insn || ! func ) {
+		return 0;
+	}
+	
+	/* note: explicit and implicit can be ORed together to
+	 * allow an "all" limited by access type, even though the
+	 * user is stupid to do this since it is default behavior :) */
+	if ( (type & op_explicit) && ! (type & op_implicit) ) {
+		implicit = 0;
+	}
+	if ( (type & op_implicit) && ! (type & op_explicit) ) {
+		explicit = 0;
+	}
+
+	type = type & 0x0F; /* mask out explicit/implicit operands */
+
+	for ( list = insn->operands; list; list = list->next ) {
+		if (! implicit && (list->op.flags & op_implied) ) {
+			/* operand is implicit */
+			continue;
+		}
+
+		if (! explicit && ! (list->op.flags & op_implied) ) {
+			/* operand is not implicit */
+			continue;
+		}
+
+		switch ( type ) {
+			case op_any:
+				break;
+			case op_dest:
+				if (! (list->op.access & op_write) ) {
+					continue;
+				}
+				break;
+			case op_src:
+				if (! (list->op.access & op_read) ) {
+					continue;
+				}
+				break;
+			case op_ro:
+				if (! (list->op.access & op_read) ||
+				      (list->op.access & op_write ) ) {
+					continue;
+				}
+				break;
+			case op_wo:
+				if (! (list->op.access & op_write) ||
+				      (list->op.access & op_read ) ) {
+					continue;
+				}
+				break;
+			case op_xo:
+				if (! (list->op.access & op_execute) ) {
+					continue;
+				}
+				break;
+			case op_rw:
+				if (! (list->op.access & op_write) ||
+				    ! (list->op.access & op_read ) ) {
+					continue;
+				}
+				break;
+			case op_implicit: case op_explicit: /* make gcc happy */
+					  break;
+		}
+		/* any non-continue ends up here: invoke the callback */
+		(*func)( &list->op, insn, arg );
+	}
+
+	return 1;
+}
+
+static void count_operand( x86_op_t *op, x86_insn_t *insn, void *arg ) {
+	size_t * count = (size_t *) arg;
+	*count = *count + 1;
+}
+
+size_t x86_operand_count( x86_insn_t *insn, enum x86_op_foreach_type type ) {
+	size_t count = 0;
+	
+	/* save us a list traversal for common counts... */
+	if ( type == op_any ) {
+		return insn->operand_count;
+	} else if ( type == op_explicit ) {
+		return insn->explicit_count;
+	}
+
+	x86_operand_foreach( insn, count_operand, &count, type );
+	return count;
+}
+
+/* accessor functions */
+x86_op_t * x86_operand_1st( x86_insn_t *insn ) {
+	if (! insn->explicit_count ) {
+		return NULL;
+	}
+
+	return &(insn->operands->op);
+}
+
+x86_op_t * x86_operand_2nd( x86_insn_t *insn ) {
+	if ( insn->explicit_count < 2 ) {
+		return NULL;
+	}
+
+	return &(insn->operands->next->op);
+}
+
+x86_op_t * x86_operand_3rd( x86_insn_t *insn ) {
+	if ( insn->explicit_count < 3 ) {
+		return NULL;
+	}
+
+	return &(insn->operands->next->next->op);
+}
diff --git a/google-breakpad/src/third_party/libdisasm/x86_operand_list.h b/google-breakpad/src/third_party/libdisasm/x86_operand_list.h
new file mode 100644
index 0000000..5366865
--- /dev/null
+++ b/google-breakpad/src/third_party/libdisasm/x86_operand_list.h
@@ -0,0 +1,8 @@
+#ifndef X86_OPERAND_LIST_H
+#define X86_OPERAND_LIST_H
+#include "libdis.h"
+
+
+x86_op_t * x86_operand_new( x86_insn_t *insn );
+
+#endif
diff --git a/google-breakpad/src/third_party/linux/include/gflags/gflags.h b/google-breakpad/src/third_party/linux/include/gflags/gflags.h
new file mode 100644
index 0000000..08a3b63
--- /dev/null
+++ b/google-breakpad/src/third_party/linux/include/gflags/gflags.h
@@ -0,0 +1,533 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// ---
+// Author: Ray Sidney
+// Revamped and reorganized by Craig Silverstein
+//
+// This is the file that should be included by any file which declares
+// or defines a command line flag or wants to parse command line flags
+// or print a program usage message (which will include information about
+// flags).  Executive summary, in the form of an example foo.cc file:
+//
+//    #include "foo.h"         // foo.h has a line "DECLARE_int32(start);"
+//
+//    DEFINE_int32(end, 1000, "The last record to read");
+//    DECLARE_bool(verbose);   // some other file has a DEFINE_bool(verbose, ...)
+//
+//    void MyFunc() {
+//      if (FLAGS_verbose) printf("Records %d-%d\n", FLAGS_start, FLAGS_end);
+//    }
+//
+// Then, at the command-line:
+//    ./foo --noverbose --start=5 --end=100
+//
+// For more details, see
+//    doc/gflags.html
+//
+// --- A note about thread-safety:
+//
+// We describe many functions in this routine as being thread-hostile,
+// thread-compatible, or thread-safe.  Here are the meanings we use:
+//
+// thread-safe: it is safe for multiple threads to call this routine
+//   (or, when referring to a class, methods of this class)
+//   concurrently.
+// thread-hostile: it is not safe for multiple threads to call this
+//   routine (or methods of this class) concurrently.  In gflags,
+//   most thread-hostile routines are intended to be called early in,
+//   or even before, main() -- that is, before threads are spawned.
+// thread-compatible: it is safe for multiple threads to read from
+//   this variable (when applied to variables), or to call const
+//   methods of this class (when applied to classes), as long as no
+//   other thread is writing to the variable or calling non-const
+//   methods of this class.
+
+#ifndef GOOGLE_GFLAGS_H_
+#define GOOGLE_GFLAGS_H_
+
+#include <string>
+#include <vector>
+
+// We care a lot about number of bits things take up.  Unfortunately,
+// systems define their bit-specific ints in a lot of different ways.
+// We use our own way, and have a typedef to get there.
+// Note: these commands below may look like "#if 1" or "#if 0", but
+// that's because they were constructed that way at ./configure time.
+// Look at gflags.h.in to see how they're calculated (based on your config).
+#if 1
+#include <stdint.h>             // the normal place uint16_t is defined
+#endif
+#if 1
+#include <sys/types.h>          // the normal place u_int16_t is defined
+#endif
+#if 1
+#include <inttypes.h>           // a third place for uint16_t or u_int16_t
+#endif
+
+namespace google {
+
+#if 1      // the C99 format
+typedef int32_t int32;
+typedef uint32_t uint32;
+typedef int64_t int64;
+typedef uint64_t uint64;
+#elif 1   // the BSD format
+typedef int32_t int32;
+typedef u_int32_t uint32;
+typedef int64_t int64;
+typedef u_int64_t uint64;
+#elif 0     // the windows (vc7) format
+typedef __int32 int32;
+typedef unsigned __int32 uint32;
+typedef __int64 int64;
+typedef unsigned __int64 uint64;
+#else
+#error Do not know how to define a 32-bit integer quantity on your system
+#endif
+
+// --------------------------------------------------------------------
+// To actually define a flag in a file, use DEFINE_bool,
+// DEFINE_string, etc. at the bottom of this file.  You may also find
+// it useful to register a validator with the flag.  This ensures that
+// when the flag is parsed from the commandline, or is later set via
+// SetCommandLineOption, we call the validation function.
+//
+// The validation function should return true if the flag value is valid, and
+// false otherwise. If the function returns false for the new setting of the
+// flag, the flag will retain its current value. If it returns false for the
+// default value, InitGoogle will die.
+//
+// This function is safe to call at global construct time (as in the
+// example below).
+//
+// Example use:
+//    static bool ValidatePort(const char* flagname, int32 value) {
+//       if (value > 0 && value < 32768)   // value is ok
+//         return true;
+//       printf("Invalid value for --%s: %d\n", flagname, (int)value);
+//       return false;
+//    }
+//    DEFINE_int32(port, 0, "What port to listen on");
+//    static bool dummy = RegisterFlagValidator(&FLAGS_port, &ValidatePort);
+
+// Returns true if successfully registered, false if not (because the
+// first argument doesn't point to a command-line flag, or because a
+// validator is already registered for this flag).
+bool RegisterFlagValidator(const bool* flag,
+                           bool (*validate_fn)(const char*, bool));
+bool RegisterFlagValidator(const int32* flag,
+                           bool (*validate_fn)(const char*, int32));
+bool RegisterFlagValidator(const int64* flag,
+                           bool (*validate_fn)(const char*, int64));
+bool RegisterFlagValidator(const uint64* flag,
+                           bool (*validate_fn)(const char*, uint64));
+bool RegisterFlagValidator(const double* flag,
+                           bool (*validate_fn)(const char*, double));
+bool RegisterFlagValidator(const std::string* flag,
+                           bool (*validate_fn)(const char*, const std::string&));
+
+
+// --------------------------------------------------------------------
+// These methods are the best way to get access to info about the
+// list of commandline flags.  Note that these routines are pretty slow.
+//   GetAllFlags: mostly-complete info about the list, sorted by file.
+//   ShowUsageWithFlags: pretty-prints the list to stdout (what --help does)
+//   ShowUsageWithFlagsRestrict: limit to filenames with restrict as a substr
+//
+// In addition to accessing flags, you can also access argv[0] (the program
+// name) and argv (the entire commandline), which we sock away a copy of.
+// These variables are static, so you should only set them once.
+
+struct CommandLineFlagInfo {
+  std::string name;           // the name of the flag
+  std::string type;           // the type of the flag: int32, etc
+  std::string description;    // the "help text" associated with the flag
+  std::string current_value;  // the current value, as a string
+  std::string default_value;  // the default value, as a string
+  std::string filename;       // 'cleaned' version of filename holding the flag
+  bool has_validator_fn;      // true if RegisterFlagValidator called on flag
+  bool is_default;            // true if the flag has default value
+};
+
+extern void GetAllFlags(std::vector<CommandLineFlagInfo>* OUTPUT);
+// These two are actually defined in commandlineflags_reporting.cc.
+extern void ShowUsageWithFlags(const char *argv0);  // what --help does
+extern void ShowUsageWithFlagsRestrict(const char *argv0, const char *restrict);
+
+// Create a descriptive string for a flag.
+// Goes to some trouble to make pretty line breaks.
+extern std::string DescribeOneFlag(const CommandLineFlagInfo& flag);
+
+// Thread-hostile; meant to be called before any threads are spawned.
+extern void SetArgv(int argc, const char** argv);
+// The following functions are thread-safe as long as SetArgv() is
+// only called before any threads start.
+extern const std::vector<std::string>& GetArgvs();  // all of argv as a vector
+extern const char* GetArgv();               // all of argv as a string
+extern const char* GetArgv0();              // only argv0
+extern uint32 GetArgvSum();                 // simple checksum of argv
+extern const char* ProgramInvocationName(); // argv0, or "UNKNOWN" if not set
+extern const char* ProgramInvocationShortName();   // basename(argv0)
+// ProgramUsage() is thread-safe as long as SetUsageMessage() is only
+// called before any threads start.
+extern const char* ProgramUsage();          // string set by SetUsageMessage()
+
+
+// --------------------------------------------------------------------
+// Normally you access commandline flags by just saying "if (FLAGS_foo)"
+// or whatever, and set them by calling "FLAGS_foo = bar" (or, more
+// commonly, via the DEFINE_foo macro).  But if you need a bit more
+// control, we have programmatic ways to get/set the flags as well.
+// These programmatic ways to access flags are thread-safe, but direct
+// access is only thread-compatible.
+
+// Return true iff the flagname was found.
+// OUTPUT is set to the flag's value, or unchanged if we return false.
+extern bool GetCommandLineOption(const char* name, std::string* OUTPUT);
+
+// Return true iff the flagname was found. OUTPUT is set to the flag's
+// CommandLineFlagInfo or unchanged if we return false.
+extern bool GetCommandLineFlagInfo(const char* name,
+                                   CommandLineFlagInfo* OUTPUT);
+
+// Return the CommandLineFlagInfo of the flagname.  exit() if name not found.
+// Example usage, to check if a flag's value is currently the default value:
+//   if (GetCommandLineFlagInfoOrDie("foo").is_default) ...
+extern CommandLineFlagInfo GetCommandLineFlagInfoOrDie(const char* name);
+
+enum FlagSettingMode {
+  // update the flag's value (can call this multiple times).
+  SET_FLAGS_VALUE,
+  // update the flag's value, but *only if* it has not yet been updated
+  // with SET_FLAGS_VALUE, SET_FLAG_IF_DEFAULT, or "FLAGS_xxx = nondef".
+  SET_FLAG_IF_DEFAULT,
+  // set the flag's default value to this.  If the flag has not yet updated
+  // yet (via SET_FLAGS_VALUE, SET_FLAG_IF_DEFAULT, or "FLAGS_xxx = nondef")
+  // change the flag's current value to the new default value as well.
+  SET_FLAGS_DEFAULT
+};
+
+// Set a particular flag ("command line option").  Returns a string
+// describing the new value that the option has been set to.  The
+// return value API is not well-specified, so basically just depend on
+// it to be empty if the setting failed for some reason -- the name is
+// not a valid flag name, or the value is not a valid value -- and
+// non-empty else.
+
+// SetCommandLineOption uses set_mode == SET_FLAGS_VALUE (the common case)
+extern std::string SetCommandLineOption(const char* name, const char* value);
+extern std::string SetCommandLineOptionWithMode(const char* name, const char* value,
+                                                FlagSettingMode set_mode);
+
+
+// --------------------------------------------------------------------
+// Saves the states (value, default value, whether the user has set
+// the flag, registered validators, etc) of all flags, and restores
+// them when the FlagSaver is destroyed.  This is very useful in
+// tests, say, when you want to let your tests change the flags, but
+// make sure that they get reverted to the original states when your
+// test is complete.
+//
+// Example usage:
+//   void TestFoo() {
+//     FlagSaver s1;
+//     FLAG_foo = false;
+//     FLAG_bar = "some value";
+//
+//     // test happens here.  You can return at any time
+//     // without worrying about restoring the FLAG values.
+//   }
+//
+// Note: This class is marked with __attribute__((unused)) because all the
+// work is done in the constructor and destructor, so in the standard
+// usage example above, the compiler would complain that it's an
+// unused variable.
+//
+// This class is thread-safe.
+
+class FlagSaver {
+ public:
+  FlagSaver();
+  ~FlagSaver();
+
+ private:
+  class FlagSaverImpl* impl_;   // we use pimpl here to keep API steady
+
+  FlagSaver(const FlagSaver&);  // no copying!
+  void operator=(const FlagSaver&);
+} __attribute__ ((unused));
+
+// --------------------------------------------------------------------
+// Some deprecated or hopefully-soon-to-be-deprecated functions.
+
+// This is often used for logging.  TODO(csilvers): figure out a better way
+extern std::string CommandlineFlagsIntoString();
+// Usually where this is used, a FlagSaver should be used instead.
+extern bool ReadFlagsFromString(const std::string& flagfilecontents,
+                                const char* prog_name,
+                                bool errors_are_fatal); // uses SET_FLAGS_VALUE
+
+// These let you manually implement --flagfile functionality.
+// DEPRECATED.
+extern bool AppendFlagsIntoFile(const std::string& filename, const char* prog_name);
+extern bool SaveCommandFlags();  // actually defined in google.cc !
+extern bool ReadFromFlagsFile(const std::string& filename, const char* prog_name,
+                              bool errors_are_fatal);   // uses SET_FLAGS_VALUE
+
+
+// --------------------------------------------------------------------
+// Useful routines for initializing flags from the environment.
+// In each case, if 'varname' does not exist in the environment
+// return defval.  If 'varname' does exist but is not valid
+// (e.g., not a number for an int32 flag), abort with an error.
+// Otherwise, return the value.  NOTE: for booleans, for true use
+// 't' or 'T' or 'true' or '1', for false 'f' or 'F' or 'false' or '0'.
+
+extern bool BoolFromEnv(const char *varname, bool defval);
+extern int32 Int32FromEnv(const char *varname, int32 defval);
+extern int64 Int64FromEnv(const char *varname, int64 defval);
+extern uint64 Uint64FromEnv(const char *varname, uint64 defval);
+extern double DoubleFromEnv(const char *varname, double defval);
+extern const char *StringFromEnv(const char *varname, const char *defval);
+
+
+// --------------------------------------------------------------------
+// The next two functions parse commandlineflags from main():
+
+// Set the "usage" message for this program.  For example:
+//   string usage("This program does nothing.  Sample usage:\n");
+//   usage += argv[0] + " <uselessarg1> <uselessarg2>";
+//   SetUsageMessage(usage);
+// Do not include commandline flags in the usage: we do that for you!
+// Thread-hostile; meant to be called before any threads are spawned.
+extern void SetUsageMessage(const std::string& usage);
+
+// Looks for flags in argv and parses them.  Rearranges argv to put
+// flags first, or removes them entirely if remove_flags is true.
+// If a flag is defined more than once in the command line or flag
+// file, the last definition is used.
+// See top-of-file for more details on this function.
+#ifndef SWIG   // In swig, use ParseCommandLineFlagsScript() instead.
+extern uint32 ParseCommandLineFlags(int *argc, char*** argv,
+                                    bool remove_flags);
+#endif
+
+
+// Calls to ParseCommandLineNonHelpFlags and then to
+// HandleCommandLineHelpFlags can be used instead of a call to
+// ParseCommandLineFlags during initialization, in order to allow for
+// changing default values for some FLAGS (via
+// e.g. SetCommandLineOptionWithMode calls) between the time of
+// command line parsing and the time of dumping help information for
+// the flags as a result of command line parsing.
+// If a flag is defined more than once in the command line or flag
+// file, the last definition is used.
+extern uint32 ParseCommandLineNonHelpFlags(int *argc, char*** argv,
+                                           bool remove_flags);
+// This is actually defined in commandlineflags_reporting.cc.
+// This function is misnamed (it also handles --version, etc.), but
+// it's too late to change that now. :-(
+extern void HandleCommandLineHelpFlags();   // in commandlineflags_reporting.cc
+
+// Allow command line reparsing.  Disables the error normally
+// generated when an unknown flag is found, since it may be found in a
+// later parse.  Thread-hostile; meant to be called before any threads
+// are spawned.
+extern void AllowCommandLineReparsing();
+
+// Reparse the flags that have not yet been recognized.
+// Only flags registered since the last parse will be recognized.
+// Any flag value must be provided as part of the argument using "=",
+// not as a separate command line argument that follows the flag argument.
+// Intended for handling flags from dynamically loaded libraries,
+// since their flags are not registered until they are loaded.
+extern uint32 ReparseCommandLineNonHelpFlags();
+
+
+// --------------------------------------------------------------------
+// Now come the command line flag declaration/definition macros that
+// will actually be used.  They're kind of hairy.  A major reason
+// for this is initialization: we want people to be able to access
+// variables in global constructors and have that not crash, even if
+// their global constructor runs before the global constructor here.
+// (Obviously, we can't guarantee the flags will have the correct
+// default value in that case, but at least accessing them is safe.)
+// The only way to do that is have flags point to a static buffer.
+// So we make one, using a union to ensure proper alignment, and
+// then use placement-new to actually set up the flag with the
+// correct default value.  In the same vein, we have to worry about
+// flag access in global destructors, so FlagRegisterer has to be
+// careful never to destroy the flag-values it constructs.
+//
+// Note that when we define a flag variable FLAGS_<name>, we also
+// preemptively define a junk variable, FLAGS_no<name>.  This is to
+// cause a link-time error if someone tries to define 2 flags with
+// names like "logging" and "nologging".  We do this because a bool
+// flag FLAG can be set from the command line to true with a "-FLAG"
+// argument, and to false with a "-noFLAG" argument, and so this can
+// potentially avert confusion.
+//
+// We also put flags into their own namespace.  It is purposefully
+// named in an opaque way that people should have trouble typing
+// directly.  The idea is that DEFINE puts the flag in the weird
+// namespace, and DECLARE imports the flag from there into the current
+// namespace.  The net result is to force people to use DECLARE to get
+// access to a flag, rather than saying "extern bool FLAGS_whatever;"
+// or some such instead.  We want this so we can put extra
+// functionality (like sanity-checking) in DECLARE if we want, and
+// make sure it is picked up everywhere.
+//
+// We also put the type of the variable in the namespace, so that
+// people can't DECLARE_int32 something that they DEFINE_bool'd
+// elsewhere.
+
+class FlagRegisterer {
+ public:
+  FlagRegisterer(const char* name, const char* type,
+                 const char* help, const char* filename,
+                 void* current_storage, void* defvalue_storage);
+};
+
+extern bool FlagsTypeWarn(const char *name);
+
+// If your application #defines STRIP_FLAG_HELP to a non-zero value
+// before #including this file, we remove the help message from the
+// binary file. This can reduce the size of the resulting binary
+// somewhat, and may also be useful for security reasons.
+
+extern const char kStrippedFlagHelp[];
+
+}
+
+#ifndef SWIG  // In swig, ignore the main flag declarations
+
+#if defined(STRIP_FLAG_HELP) && STRIP_FLAG_HELP > 0
+// Need this construct to avoid the 'defined but not used' warning.
+#define MAYBE_STRIPPED_HELP(txt) (false ? (txt) : kStrippedFlagHelp)
+#else
+#define MAYBE_STRIPPED_HELP(txt) txt
+#endif
+
+// Each command-line flag has two variables associated with it: one
+// with the current value, and one with the default value.  However,
+// we have a third variable, which is where value is assigned; it's a
+// constant.  This guarantees that FLAG_##value is initialized at
+// static initialization time (e.g. before program-start) rather than
+// than global construction time (which is after program-start but
+// before main), at least when 'value' is a compile-time constant.  We
+// use a small trick for the "default value" variable, and call it
+// FLAGS_no<name>.  This serves the second purpose of assuring a
+// compile error if someone tries to define a flag named no<name>
+// which is illegal (--foo and --nofoo both affect the "foo" flag).
+#define DEFINE_VARIABLE(type, shorttype, name, value, help) \
+  namespace fL##shorttype {                                     \
+    static const type FLAGS_nono##name = value;                 \
+    type FLAGS_##name = FLAGS_nono##name;                       \
+    type FLAGS_no##name = FLAGS_nono##name;                     \
+    static ::google::FlagRegisterer o_##name(      \
+      #name, #type, MAYBE_STRIPPED_HELP(help), __FILE__,        \
+      &FLAGS_##name, &FLAGS_no##name);                          \
+  }                                                             \
+  using fL##shorttype::FLAGS_##name
+
+#define DECLARE_VARIABLE(type, shorttype, name) \
+  namespace fL##shorttype {                     \
+    extern type FLAGS_##name;                   \
+  }                                             \
+  using fL##shorttype::FLAGS_##name
+
+// For DEFINE_bool, we want to do the extra check that the passed-in
+// value is actually a bool, and not a string or something that can be
+// coerced to a bool.  These declarations (no definition needed!) will
+// help us do that, and never evaluate From, which is important.
+// We'll use 'sizeof(IsBool(val))' to distinguish. This code requires
+// that the compiler have different sizes for bool & double. Since
+// this is not guaranteed by the standard, we check it with a
+// compile-time assert (msg[-1] will give a compile-time error).
+namespace fLB {
+struct CompileAssert {};
+typedef CompileAssert expected_sizeof_double_neq_sizeof_bool[
+                      (sizeof(double) != sizeof(bool)) ? 1 : -1];
+template<typename From> double IsBoolFlag(const From& from);
+bool IsBoolFlag(bool from);
+}  // namespace fLB
+
+#define DECLARE_bool(name)          DECLARE_VARIABLE(bool,B, name)
+#define DEFINE_bool(name,val,txt)                                         \
+  namespace fLB {                                                         \
+    typedef CompileAssert FLAG_##name##_value_is_not_a_bool[              \
+            (sizeof(::fLB::IsBoolFlag(val)) != sizeof(double)) ? 1 : -1]; \
+  }                                                                       \
+  DEFINE_VARIABLE(bool,B, name, val, txt)
+
+#define DECLARE_int32(name)         DECLARE_VARIABLE(::google::int32,I, name)
+#define DEFINE_int32(name,val,txt)  DEFINE_VARIABLE(::google::int32,I, name, val, txt)
+
+#define DECLARE_int64(name)         DECLARE_VARIABLE(::google::int64,I64, name)
+#define DEFINE_int64(name,val,txt)  DEFINE_VARIABLE(::google::int64,I64, name, val, txt)
+
+#define DECLARE_uint64(name)        DECLARE_VARIABLE(::google::uint64,U64, name)
+#define DEFINE_uint64(name,val,txt) DEFINE_VARIABLE(::google::uint64,U64, name, val, txt)
+
+#define DECLARE_double(name)        DECLARE_VARIABLE(double,D, name)
+#define DEFINE_double(name,val,txt) DEFINE_VARIABLE(double,D, name, val, txt)
+
+// Strings are trickier, because they're not a POD, so we can't
+// construct them at static-initialization time (instead they get
+// constructed at global-constructor time, which is much later).  To
+// try to avoid crashes in that case, we use a char buffer to store
+// the string, which we can static-initialize, and then placement-new
+// into it later.  It's not perfect, but the best we can do.
+#define DECLARE_string(name)  namespace fLS { extern std::string& FLAGS_##name; } \
+                              using fLS::FLAGS_##name
+
+// We need to define a var named FLAGS_no##name so people don't define
+// --string and --nostring.  And we need a temporary place to put val
+// so we don't have to evaluate it twice.  Two great needs that go
+// great together!
+// The weird 'using' + 'extern' inside the fLS namespace is to work around
+// an unknown compiler bug/issue with the gcc 4.2.1 on SUSE 10.  See
+//    http://code.google.com/p/google-gflags/issues/detail?id=20
+#define DEFINE_string(name, val, txt)                                     \
+  namespace fLS {                                                         \
+    static union { void* align; char s[sizeof(std::string)]; } s_##name[2]; \
+    const std::string* const FLAGS_no##name = new (s_##name[0].s) std::string(val); \
+    static ::google::FlagRegisterer o_##name(                \
+      #name, "string", MAYBE_STRIPPED_HELP(txt), __FILE__,                \
+      s_##name[0].s, new (s_##name[1].s) std::string(*FLAGS_no##name));   \
+    extern std::string& FLAGS_##name;                                     \
+    using fLS::FLAGS_##name;                                              \
+    std::string& FLAGS_##name = *(reinterpret_cast<std::string*>(s_##name[0].s));   \
+  }                                                                       \
+  using fLS::FLAGS_##name
+
+#endif  // SWIG
+
+#endif  // GOOGLE_GFLAGS_H_
diff --git a/google-breakpad/src/third_party/linux/include/gflags/gflags_completions.h b/google-breakpad/src/third_party/linux/include/gflags/gflags_completions.h
new file mode 100644
index 0000000..9d9ce7a
--- /dev/null
+++ b/google-breakpad/src/third_party/linux/include/gflags/gflags_completions.h
@@ -0,0 +1,121 @@
+// Copyright (c) 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// ---
+// Author: Dave Nicponski
+//
+// Implement helpful bash-style command line flag completions
+//
+// ** Functional API:
+// HandleCommandLineCompletions() should be called early during
+// program startup, but after command line flag code has been
+// initialized, such as the beginning of HandleCommandLineHelpFlags().
+// It checks the value of the flag --tab_completion_word.  If this
+// flag is empty, nothing happens here.  If it contains a string,
+// however, then HandleCommandLineCompletions() will hijack the
+// process, attempting to identify the intention behind this
+// completion.  Regardless of the outcome of this deduction, the
+// process will be terminated, similar to --helpshort flag
+// handling.
+//
+// ** Overview of Bash completions:
+// Bash can be told to programatically determine completions for the
+// current 'cursor word'.  It does this by (in this case) invoking a
+// command with some additional arguments identifying the command
+// being executed, the word being completed, and the previous word
+// (if any).  Bash then expects a sequence of output lines to be
+// printed to stdout.  If these lines all contain a common prefix
+// longer than the cursor word, bash will replace the cursor word
+// with that common prefix, and display nothing.  If there isn't such
+// a common prefix, bash will display the lines in pages using 'more'.
+//
+// ** Strategy taken for command line completions:
+// If we can deduce either the exact flag intended, or a common flag
+// prefix, we'll output exactly that.  Otherwise, if information
+// must be displayed to the user, we'll take the opportunity to add
+// some helpful information beyond just the flag name (specifically,
+// we'll include the default flag value and as much of the flag's
+// description as can fit on a single terminal line width, as specified
+// by the flag --tab_completion_columns).  Furthermore, we'll try to
+// make bash order the output such that the most useful or relevent
+// flags are the most likely to be shown at the top.
+//
+// ** Additional features:
+// To assist in finding that one really useful flag, substring matching
+// was implemented.  Before pressing a <TAB> to get completion for the
+// current word, you can append one or more '?' to the flag to do
+// substring matching.  Here's the semantics:
+//   --foo<TAB>     Show me all flags with names prefixed by 'foo'
+//   --foo?<TAB>    Show me all flags with 'foo' somewhere in the name
+//   --foo??<TAB>   Same as prior case, but also search in module
+//                  definition path for 'foo'
+//   --foo???<TAB>  Same as prior case, but also search in flag
+//                  descriptions for 'foo'
+// Finally, we'll trim the output to a relatively small number of
+// flags to keep bash quiet about the verbosity of output.  If one
+// really wanted to see all possible matches, appending a '+' to the
+// search word will force the exhaustive list of matches to be printed.
+//
+// ** How to have bash accept completions from a binary:
+// Bash requires that it be informed about each command that programmatic
+// completion should be enabled for.  Example addition to a .bashrc
+// file would be (your path to gflags_completions.sh file may differ):
+
+/*
+$ complete -o bashdefault -o default -o nospace -C                        \
+ '/usr/local/bin/gflags_completions.sh --tab_completion_columns $COLUMNS' \
+  time  env  binary_name  another_binary  [...]
+*/
+
+// This would allow the following to work:
+//   $ /path/to/binary_name --vmodule<TAB>
+// Or:
+//   $ ./bin/path/another_binary --gfs_u<TAB>
+// (etc)
+//
+// Sadly, it appears that bash gives no easy way to force this behavior for
+// all commands.  That's where the "time" in the above example comes in.
+// If you haven't specifically added a command to the list of completion
+// supported commands, you can still get completions by prefixing the
+// entire command with "env".
+//   $ env /some/brand/new/binary --vmod<TAB>
+// Assuming that "binary" is a newly compiled binary, this should still
+// produce the expected completion output.
+
+
+#ifndef GOOGLE_GFLAGS_COMPLETIONS_H_
+#define GOOGLE_GFLAGS_COMPLETIONS_H_
+
+namespace google {
+
+void HandleCommandLineCompletions(void);
+
+}
+
+#endif  // GOOGLE_GFLAGS_COMPLETIONS_H_
diff --git a/google-breakpad/src/third_party/linux/lib/gflags/libgflags.a b/google-breakpad/src/third_party/linux/lib/gflags/libgflags.a
new file mode 100644
index 0000000..c0de874
--- /dev/null
+++ b/google-breakpad/src/third_party/linux/lib/gflags/libgflags.a
Binary files differ
diff --git a/google-breakpad/src/third_party/linux/lib/glog/libglog.a b/google-breakpad/src/third_party/linux/lib/glog/libglog.a
new file mode 100644
index 0000000..8d2afae
--- /dev/null
+++ b/google-breakpad/src/third_party/linux/lib/glog/libglog.a
Binary files differ
diff --git a/google-breakpad/src/third_party/lss/linux_syscall_support.h b/google-breakpad/src/third_party/lss/linux_syscall_support.h
new file mode 100644
index 0000000..f7c013d
--- /dev/null
+++ b/google-breakpad/src/third_party/lss/linux_syscall_support.h
@@ -0,0 +1,4031 @@
+/* Copyright (c) 2005-2011, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ---
+ * Author: Markus Gutschke
+ */
+
+/* This file includes Linux-specific support functions common to the
+ * coredumper and the thread lister; primarily, this is a collection
+ * of direct system calls, and a couple of symbols missing from
+ * standard header files.
+ * There are a few options that the including file can set to control
+ * the behavior of this file:
+ *
+ * SYS_CPLUSPLUS:
+ *   The entire header file will normally be wrapped in 'extern "C" { }",
+ *   making it suitable for compilation as both C and C++ source. If you
+ *   do not want to do this, you can set the SYS_CPLUSPLUS macro to inhibit
+ *   the wrapping. N.B. doing so will suppress inclusion of all prerequisite
+ *   system header files, too. It is the caller's responsibility to provide
+ *   the necessary definitions.
+ *
+ * SYS_ERRNO:
+ *   All system calls will update "errno" unless overriden by setting the
+ *   SYS_ERRNO macro prior to including this file. SYS_ERRNO should be
+ *   an l-value.
+ *
+ * SYS_INLINE:
+ *   New symbols will be defined "static inline", unless overridden by
+ *   the SYS_INLINE macro.
+ *
+ * SYS_LINUX_SYSCALL_SUPPORT_H
+ *   This macro is used to avoid multiple inclusions of this header file.
+ *   If you need to include this file more than once, make sure to
+ *   unset SYS_LINUX_SYSCALL_SUPPORT_H before each inclusion.
+ *
+ * SYS_PREFIX:
+ *   New system calls will have a prefix of "sys_" unless overridden by
+ *   the SYS_PREFIX macro. Valid values for this macro are [0..9] which
+ *   results in prefixes "sys[0..9]_". It is also possible to set this
+ *   macro to -1, which avoids all prefixes.
+ *
+ * SYS_SYSCALL_ENTRYPOINT:
+ *   Some applications (such as sandboxes that filter system calls), need
+ *   to be able to run custom-code each time a system call is made. If this
+ *   macro is defined, it expands to the name of a "common" symbol. If
+ *   this symbol is assigned a non-NULL pointer value, it is used as the
+ *   address of the system call entrypoint.
+ *   A pointer to this symbol can be obtained by calling
+ *   get_syscall_entrypoint()
+ *
+ * This file defines a few internal symbols that all start with "LSS_".
+ * Do not access these symbols from outside this file. They are not part
+ * of the supported API.
+ */
+#ifndef SYS_LINUX_SYSCALL_SUPPORT_H
+#define SYS_LINUX_SYSCALL_SUPPORT_H
+
+/* We currently only support x86-32, x86-64, ARM, MIPS, and PPC on Linux.
+ * Porting to other related platforms should not be difficult.
+ */
+#if (defined(__i386__) || defined(__x86_64__) || defined(__ARM_ARCH_3__) ||   \
+     defined(__mips__) || defined(__PPC__) || defined(__ARM_EABI__) || \
+     defined(__aarch64__)) \
+  && (defined(__linux) || defined(__ANDROID__))
+
+#ifndef SYS_CPLUSPLUS
+#ifdef __cplusplus
+/* Some system header files in older versions of gcc neglect to properly
+ * handle being included from C++. As it appears to be harmless to have
+ * multiple nested 'extern "C"' blocks, just add another one here.
+ */
+extern "C" {
+#endif
+
+#include <errno.h>
+#include <fcntl.h>
+#include <sched.h>
+#include <signal.h>
+#include <stdarg.h>
+#include <stddef.h>
+#include <stdint.h>
+#include <string.h>
+#include <sys/ptrace.h>
+#include <sys/resource.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <sys/syscall.h>
+#include <unistd.h>
+#include <linux/unistd.h>
+#include <endian.h>
+
+#ifdef __mips__
+/* Include definitions of the ABI currently in use.                          */
+#include <sgidefs.h>
+#endif
+#endif
+
+/* The Android NDK's <sys/stat.h> #defines these macros as aliases
+ * to their non-64 counterparts. To avoid naming conflict, remove them. */
+#ifdef __ANDROID__
+  /* These are restored by the corresponding #pragma pop_macro near
+   * the end of this file. */
+# pragma push_macro("stat64")
+# pragma push_macro("fstat64")
+# pragma push_macro("lstat64")
+# undef stat64
+# undef fstat64
+# undef lstat64
+#endif
+
+/* As glibc often provides subtly incompatible data structures (and implicit
+ * wrapper functions that convert them), we provide our own kernel data
+ * structures for use by the system calls.
+ * These structures have been developed by using Linux 2.6.23 headers for
+ * reference. Note though, we do not care about exact API compatibility
+ * with the kernel, and in fact the kernel often does not have a single
+ * API that works across architectures. Instead, we try to mimic the glibc
+ * API where reasonable, and only guarantee ABI compatibility with the
+ * kernel headers.
+ * Most notably, here are a few changes that were made to the structures
+ * defined by kernel headers:
+ *
+ * - we only define structures, but not symbolic names for kernel data
+ *   types. For the latter, we directly use the native C datatype
+ *   (i.e. "unsigned" instead of "mode_t").
+ * - in a few cases, it is possible to define identical structures for
+ *   both 32bit (e.g. i386) and 64bit (e.g. x86-64) platforms by
+ *   standardizing on the 64bit version of the data types. In particular,
+ *   this means that we use "unsigned" where the 32bit headers say
+ *   "unsigned long".
+ * - overall, we try to minimize the number of cases where we need to
+ *   conditionally define different structures.
+ * - the "struct kernel_sigaction" class of structures have been
+ *   modified to more closely mimic glibc's API by introducing an
+ *   anonymous union for the function pointer.
+ * - a small number of field names had to have an underscore appended to
+ *   them, because glibc defines a global macro by the same name.
+ */
+
+/* include/linux/dirent.h                                                    */
+struct kernel_dirent64 {
+  unsigned long long d_ino;
+  long long          d_off;
+  unsigned short     d_reclen;
+  unsigned char      d_type;
+  char               d_name[256];
+};
+
+/* include/linux/dirent.h                                                    */
+#if defined(__aarch64__)
+// aarch64 only defines dirent64, just uses that for dirent too.
+#define kernel_dirent kernel_dirent64
+#else
+struct kernel_dirent {
+  long               d_ino;
+  long               d_off;
+  unsigned short     d_reclen;
+  char               d_name[256];
+};
+#endif
+
+/* include/linux/uio.h                                                       */
+struct kernel_iovec {
+  void               *iov_base;
+  unsigned long      iov_len;
+};
+
+/* include/linux/socket.h                                                    */
+struct kernel_msghdr {
+  void               *msg_name;
+  int                msg_namelen;
+  struct kernel_iovec*msg_iov;
+  unsigned long      msg_iovlen;
+  void               *msg_control;
+  unsigned long      msg_controllen;
+  unsigned           msg_flags;
+};
+
+/* include/asm-generic/poll.h                                                */
+struct kernel_pollfd {
+  int                fd;
+  short              events;
+  short              revents;
+};
+
+/* include/linux/resource.h                                                  */
+struct kernel_rlimit {
+  unsigned long      rlim_cur;
+  unsigned long      rlim_max;
+};
+
+/* include/linux/time.h                                                      */
+struct kernel_timespec {
+  long               tv_sec;
+  long               tv_nsec;
+};
+
+/* include/linux/time.h                                                      */
+struct kernel_timeval {
+  long               tv_sec;
+  long               tv_usec;
+};
+
+/* include/linux/resource.h                                                  */
+struct kernel_rusage {
+  struct kernel_timeval ru_utime;
+  struct kernel_timeval ru_stime;
+  long               ru_maxrss;
+  long               ru_ixrss;
+  long               ru_idrss;
+  long               ru_isrss;
+  long               ru_minflt;
+  long               ru_majflt;
+  long               ru_nswap;
+  long               ru_inblock;
+  long               ru_oublock;
+  long               ru_msgsnd;
+  long               ru_msgrcv;
+  long               ru_nsignals;
+  long               ru_nvcsw;
+  long               ru_nivcsw;
+};
+
+#if defined(__i386__) || defined(__ARM_EABI__) || defined(__ARM_ARCH_3__) \
+  || defined(__PPC__)
+
+/* include/asm-{arm,i386,mips,ppc}/signal.h                                  */
+struct kernel_old_sigaction {
+  union {
+    void             (*sa_handler_)(int);
+    void             (*sa_sigaction_)(int, siginfo_t *, void *);
+  };
+  unsigned long      sa_mask;
+  unsigned long      sa_flags;
+  void               (*sa_restorer)(void);
+} __attribute__((packed,aligned(4)));
+#elif (defined(__mips__) && _MIPS_SIM == _MIPS_SIM_ABI32)
+  #define kernel_old_sigaction kernel_sigaction
+#elif defined(__aarch64__)
+  // No kernel_old_sigaction defined for arm64.
+#endif
+
+/* Some kernel functions (e.g. sigaction() in 2.6.23) require that the
+ * exactly match the size of the signal set, even though the API was
+ * intended to be extensible. We define our own KERNEL_NSIG to deal with
+ * this.
+ * Please note that glibc provides signals [1.._NSIG-1], whereas the
+ * kernel (and this header) provides the range [1..KERNEL_NSIG]. The
+ * actual number of signals is obviously the same, but the constants
+ * differ by one.
+ */
+#ifdef __mips__
+#define KERNEL_NSIG 128
+#else
+#define KERNEL_NSIG  64
+#endif
+
+/* include/asm-{arm,aarch64,i386,mips,x86_64}/signal.h                       */
+struct kernel_sigset_t {
+  unsigned long sig[(KERNEL_NSIG + 8*sizeof(unsigned long) - 1)/
+                    (8*sizeof(unsigned long))];
+};
+
+/* include/asm-{arm,i386,mips,x86_64,ppc}/signal.h                           */
+struct kernel_sigaction {
+#ifdef __mips__
+  unsigned long      sa_flags;
+  union {
+    void             (*sa_handler_)(int);
+    void             (*sa_sigaction_)(int, siginfo_t *, void *);
+  };
+  struct kernel_sigset_t sa_mask;
+#else
+  union {
+    void             (*sa_handler_)(int);
+    void             (*sa_sigaction_)(int, siginfo_t *, void *);
+  };
+  unsigned long      sa_flags;
+  void               (*sa_restorer)(void);
+  struct kernel_sigset_t sa_mask;
+#endif
+};
+
+/* include/linux/socket.h                                                    */
+struct kernel_sockaddr {
+  unsigned short     sa_family;
+  char               sa_data[14];
+};
+
+/* include/asm-{arm,aarch64,i386,mips,ppc}/stat.h                            */
+#ifdef __mips__
+#if _MIPS_SIM == _MIPS_SIM_ABI64
+struct kernel_stat {
+#else
+struct kernel_stat64 {
+#endif
+  unsigned           st_dev;
+  unsigned           __pad0[3];
+  unsigned long long st_ino;
+  unsigned           st_mode;
+  unsigned           st_nlink;
+  unsigned           st_uid;
+  unsigned           st_gid;
+  unsigned           st_rdev;
+  unsigned           __pad1[3];
+  long long          st_size;
+  unsigned           st_atime_;
+  unsigned           st_atime_nsec_;
+  unsigned           st_mtime_;
+  unsigned           st_mtime_nsec_;
+  unsigned           st_ctime_;
+  unsigned           st_ctime_nsec_;
+  unsigned           st_blksize;
+  unsigned           __pad2;
+  unsigned long long st_blocks;
+};
+#elif defined __PPC__
+struct kernel_stat64 {
+  unsigned long long st_dev;
+  unsigned long long st_ino;
+  unsigned           st_mode;
+  unsigned           st_nlink;
+  unsigned           st_uid;
+  unsigned           st_gid;
+  unsigned long long st_rdev;
+  unsigned short int __pad2;
+  long long          st_size;
+  long               st_blksize;
+  long long          st_blocks;
+  long               st_atime_;
+  unsigned long      st_atime_nsec_;
+  long               st_mtime_;
+  unsigned long      st_mtime_nsec_;
+  long               st_ctime_;
+  unsigned long      st_ctime_nsec_;
+  unsigned long      __unused4;
+  unsigned long      __unused5;
+};
+#else
+struct kernel_stat64 {
+  unsigned long long st_dev;
+  unsigned char      __pad0[4];
+  unsigned           __st_ino;
+  unsigned           st_mode;
+  unsigned           st_nlink;
+  unsigned           st_uid;
+  unsigned           st_gid;
+  unsigned long long st_rdev;
+  unsigned char      __pad3[4];
+  long long          st_size;
+  unsigned           st_blksize;
+  unsigned long long st_blocks;
+  unsigned           st_atime_;
+  unsigned           st_atime_nsec_;
+  unsigned           st_mtime_;
+  unsigned           st_mtime_nsec_;
+  unsigned           st_ctime_;
+  unsigned           st_ctime_nsec_;
+  unsigned long long st_ino;
+};
+#endif
+
+/* include/asm-{arm,aarch64,i386,mips,x86_64,ppc}/stat.h                     */
+#if defined(__i386__) || defined(__ARM_ARCH_3__) || defined(__ARM_EABI__)
+struct kernel_stat {
+  /* The kernel headers suggest that st_dev and st_rdev should be 32bit
+   * quantities encoding 12bit major and 20bit minor numbers in an interleaved
+   * format. In reality, we do not see useful data in the top bits. So,
+   * we'll leave the padding in here, until we find a better solution.
+   */
+  unsigned short     st_dev;
+  short              pad1;
+  unsigned           st_ino;
+  unsigned short     st_mode;
+  unsigned short     st_nlink;
+  unsigned short     st_uid;
+  unsigned short     st_gid;
+  unsigned short     st_rdev;
+  short              pad2;
+  unsigned           st_size;
+  unsigned           st_blksize;
+  unsigned           st_blocks;
+  unsigned           st_atime_;
+  unsigned           st_atime_nsec_;
+  unsigned           st_mtime_;
+  unsigned           st_mtime_nsec_;
+  unsigned           st_ctime_;
+  unsigned           st_ctime_nsec_;
+  unsigned           __unused4;
+  unsigned           __unused5;
+};
+#elif defined(__x86_64__)
+struct kernel_stat {
+  uint64_t           st_dev;
+  uint64_t           st_ino;
+  uint64_t           st_nlink;
+  unsigned           st_mode;
+  unsigned           st_uid;
+  unsigned           st_gid;
+  unsigned           __pad0;
+  uint64_t           st_rdev;
+  int64_t            st_size;
+  int64_t            st_blksize;
+  int64_t            st_blocks;
+  uint64_t           st_atime_;
+  uint64_t           st_atime_nsec_;
+  uint64_t           st_mtime_;
+  uint64_t           st_mtime_nsec_;
+  uint64_t           st_ctime_;
+  uint64_t           st_ctime_nsec_;
+  int64_t            __unused4[3];
+};
+#elif defined(__PPC__)
+struct kernel_stat {
+  unsigned           st_dev;
+  unsigned long      st_ino;      // ino_t
+  unsigned long      st_mode;     // mode_t
+  unsigned short     st_nlink;    // nlink_t
+  unsigned           st_uid;      // uid_t
+  unsigned           st_gid;      // gid_t
+  unsigned           st_rdev;
+  long               st_size;     // off_t
+  unsigned long      st_blksize;
+  unsigned long      st_blocks;
+  unsigned long      st_atime_;
+  unsigned long      st_atime_nsec_;
+  unsigned long      st_mtime_;
+  unsigned long      st_mtime_nsec_;
+  unsigned long      st_ctime_;
+  unsigned long      st_ctime_nsec_;
+  unsigned long      __unused4;
+  unsigned long      __unused5;
+};
+#elif (defined(__mips__) && _MIPS_SIM != _MIPS_SIM_ABI64)
+struct kernel_stat {
+  unsigned           st_dev;
+  int                st_pad1[3];
+  unsigned           st_ino;
+  unsigned           st_mode;
+  unsigned           st_nlink;
+  unsigned           st_uid;
+  unsigned           st_gid;
+  unsigned           st_rdev;
+  int                st_pad2[2];
+  long               st_size;
+  int                st_pad3;
+  long               st_atime_;
+  long               st_atime_nsec_;
+  long               st_mtime_;
+  long               st_mtime_nsec_;
+  long               st_ctime_;
+  long               st_ctime_nsec_;
+  int                st_blksize;
+  int                st_blocks;
+  int                st_pad4[14];
+};
+#elif defined(__aarch64__)
+struct kernel_stat {
+  unsigned long      st_dev;
+  unsigned long      st_ino;
+  unsigned int       st_mode;
+  unsigned int       st_nlink;
+  unsigned int       st_uid;
+  unsigned int       st_gid;
+  unsigned long      st_rdev;
+  unsigned long      __pad1;
+  long               st_size;
+  int                st_blksize;
+  int                __pad2;
+  long               st_blocks;
+  long               st_atime_;
+  unsigned long      st_atime_nsec_;
+  long               st_mtime_;
+  unsigned long      st_mtime_nsec_;
+  long               st_ctime_;
+  unsigned long      st_ctime_nsec_;
+  unsigned int       __unused4;
+  unsigned int       __unused5;
+};
+#endif
+
+/* include/asm-{arm,aarch64,i386,mips,x86_64,ppc}/statfs.h                   */
+#ifdef __mips__
+#if _MIPS_SIM != _MIPS_SIM_ABI64
+struct kernel_statfs64 {
+  unsigned long      f_type;
+  unsigned long      f_bsize;
+  unsigned long      f_frsize;
+  unsigned long      __pad;
+  unsigned long long f_blocks;
+  unsigned long long f_bfree;
+  unsigned long long f_files;
+  unsigned long long f_ffree;
+  unsigned long long f_bavail;
+  struct { int val[2]; } f_fsid;
+  unsigned long      f_namelen;
+  unsigned long      f_spare[6];
+};
+#endif
+#elif !defined(__x86_64__)
+struct kernel_statfs64 {
+  unsigned long      f_type;
+  unsigned long      f_bsize;
+  unsigned long long f_blocks;
+  unsigned long long f_bfree;
+  unsigned long long f_bavail;
+  unsigned long long f_files;
+  unsigned long long f_ffree;
+  struct { int val[2]; } f_fsid;
+  unsigned long      f_namelen;
+  unsigned long      f_frsize;
+  unsigned long      f_spare[5];
+};
+#endif
+
+/* include/asm-{arm,i386,mips,x86_64,ppc,generic}/statfs.h                   */
+#ifdef __mips__
+struct kernel_statfs {
+  long               f_type;
+  long               f_bsize;
+  long               f_frsize;
+  long               f_blocks;
+  long               f_bfree;
+  long               f_files;
+  long               f_ffree;
+  long               f_bavail;
+  struct { int val[2]; } f_fsid;
+  long               f_namelen;
+  long               f_spare[6];
+};
+#elif defined(__x86_64__)
+struct kernel_statfs {
+  /* x86_64 actually defines all these fields as signed, whereas all other  */
+  /* platforms define them as unsigned. Leaving them at unsigned should not */
+  /* cause any problems. Make sure these are 64-bit even on x32.            */
+  uint64_t           f_type;
+  uint64_t           f_bsize;
+  uint64_t           f_blocks;
+  uint64_t           f_bfree;
+  uint64_t           f_bavail;
+  uint64_t           f_files;
+  uint64_t           f_ffree;
+  struct { int val[2]; } f_fsid;
+  uint64_t           f_namelen;
+  uint64_t           f_frsize;
+  uint64_t           f_spare[5];
+};
+#else
+struct kernel_statfs {
+  unsigned long      f_type;
+  unsigned long      f_bsize;
+  unsigned long      f_blocks;
+  unsigned long      f_bfree;
+  unsigned long      f_bavail;
+  unsigned long      f_files;
+  unsigned long      f_ffree;
+  struct { int val[2]; } f_fsid;
+  unsigned long      f_namelen;
+  unsigned long      f_frsize;
+  unsigned long      f_spare[5];
+};
+#endif
+
+
+/* Definitions missing from the standard header files                        */
+#ifndef O_DIRECTORY
+#if defined(__ARM_ARCH_3__) || defined(__ARM_EABI__) || defined(__aarch64__)
+#define O_DIRECTORY             0040000
+#else
+#define O_DIRECTORY             0200000
+#endif
+#endif
+#ifndef NT_PRXFPREG
+#define NT_PRXFPREG             0x46e62b7f
+#endif
+#ifndef PTRACE_GETFPXREGS
+#define PTRACE_GETFPXREGS       ((enum __ptrace_request)18)
+#endif
+#ifndef PR_GET_DUMPABLE
+#define PR_GET_DUMPABLE         3
+#endif
+#ifndef PR_SET_DUMPABLE
+#define PR_SET_DUMPABLE         4
+#endif
+#ifndef PR_GET_SECCOMP
+#define PR_GET_SECCOMP          21
+#endif
+#ifndef PR_SET_SECCOMP
+#define PR_SET_SECCOMP          22
+#endif
+#ifndef AT_FDCWD
+#define AT_FDCWD                (-100)
+#endif
+#ifndef AT_SYMLINK_NOFOLLOW
+#define AT_SYMLINK_NOFOLLOW     0x100
+#endif
+#ifndef AT_REMOVEDIR
+#define AT_REMOVEDIR            0x200
+#endif
+#ifndef MREMAP_FIXED
+#define MREMAP_FIXED            2
+#endif
+#ifndef SA_RESTORER
+#define SA_RESTORER             0x04000000
+#endif
+#ifndef CPUCLOCK_PROF
+#define CPUCLOCK_PROF           0
+#endif
+#ifndef CPUCLOCK_VIRT
+#define CPUCLOCK_VIRT           1
+#endif
+#ifndef CPUCLOCK_SCHED
+#define CPUCLOCK_SCHED          2
+#endif
+#ifndef CPUCLOCK_PERTHREAD_MASK
+#define CPUCLOCK_PERTHREAD_MASK 4
+#endif
+#ifndef MAKE_PROCESS_CPUCLOCK
+#define MAKE_PROCESS_CPUCLOCK(pid, clock)                                     \
+        ((~(int)(pid) << 3) | (int)(clock))
+#endif
+#ifndef MAKE_THREAD_CPUCLOCK
+#define MAKE_THREAD_CPUCLOCK(tid, clock)                                      \
+        ((~(int)(tid) << 3) | (int)((clock) | CPUCLOCK_PERTHREAD_MASK))
+#endif
+
+#ifndef FUTEX_WAIT
+#define FUTEX_WAIT                0
+#endif
+#ifndef FUTEX_WAKE
+#define FUTEX_WAKE                1
+#endif
+#ifndef FUTEX_FD
+#define FUTEX_FD                  2
+#endif
+#ifndef FUTEX_REQUEUE
+#define FUTEX_REQUEUE             3
+#endif
+#ifndef FUTEX_CMP_REQUEUE
+#define FUTEX_CMP_REQUEUE         4
+#endif
+#ifndef FUTEX_WAKE_OP
+#define FUTEX_WAKE_OP             5
+#endif
+#ifndef FUTEX_LOCK_PI
+#define FUTEX_LOCK_PI             6
+#endif
+#ifndef FUTEX_UNLOCK_PI
+#define FUTEX_UNLOCK_PI           7
+#endif
+#ifndef FUTEX_TRYLOCK_PI
+#define FUTEX_TRYLOCK_PI          8
+#endif
+#ifndef FUTEX_PRIVATE_FLAG
+#define FUTEX_PRIVATE_FLAG        128
+#endif
+#ifndef FUTEX_CMD_MASK
+#define FUTEX_CMD_MASK            ~FUTEX_PRIVATE_FLAG
+#endif
+#ifndef FUTEX_WAIT_PRIVATE
+#define FUTEX_WAIT_PRIVATE        (FUTEX_WAIT | FUTEX_PRIVATE_FLAG)
+#endif
+#ifndef FUTEX_WAKE_PRIVATE
+#define FUTEX_WAKE_PRIVATE        (FUTEX_WAKE | FUTEX_PRIVATE_FLAG)
+#endif
+#ifndef FUTEX_REQUEUE_PRIVATE
+#define FUTEX_REQUEUE_PRIVATE     (FUTEX_REQUEUE | FUTEX_PRIVATE_FLAG)
+#endif
+#ifndef FUTEX_CMP_REQUEUE_PRIVATE
+#define FUTEX_CMP_REQUEUE_PRIVATE (FUTEX_CMP_REQUEUE | FUTEX_PRIVATE_FLAG)
+#endif
+#ifndef FUTEX_WAKE_OP_PRIVATE
+#define FUTEX_WAKE_OP_PRIVATE     (FUTEX_WAKE_OP | FUTEX_PRIVATE_FLAG)
+#endif
+#ifndef FUTEX_LOCK_PI_PRIVATE
+#define FUTEX_LOCK_PI_PRIVATE     (FUTEX_LOCK_PI | FUTEX_PRIVATE_FLAG)
+#endif
+#ifndef FUTEX_UNLOCK_PI_PRIVATE
+#define FUTEX_UNLOCK_PI_PRIVATE   (FUTEX_UNLOCK_PI | FUTEX_PRIVATE_FLAG)
+#endif
+#ifndef FUTEX_TRYLOCK_PI_PRIVATE
+#define FUTEX_TRYLOCK_PI_PRIVATE  (FUTEX_TRYLOCK_PI | FUTEX_PRIVATE_FLAG)
+#endif
+
+
+#if defined(__x86_64__)
+#ifndef ARCH_SET_GS
+#define ARCH_SET_GS             0x1001
+#endif
+#ifndef ARCH_GET_GS
+#define ARCH_GET_GS             0x1004
+#endif
+#endif
+
+#if defined(__i386__)
+#ifndef __NR_quotactl
+#define __NR_quotactl           131
+#endif
+#ifndef __NR_setresuid
+#define __NR_setresuid          164
+#define __NR_getresuid          165
+#define __NR_setresgid          170
+#define __NR_getresgid          171
+#endif
+#ifndef __NR_rt_sigaction
+#define __NR_rt_sigreturn       173
+#define __NR_rt_sigaction       174
+#define __NR_rt_sigprocmask     175
+#define __NR_rt_sigpending      176
+#define __NR_rt_sigsuspend      179
+#endif
+#ifndef __NR_pread64
+#define __NR_pread64            180
+#endif
+#ifndef __NR_pwrite64
+#define __NR_pwrite64           181
+#endif
+#ifndef __NR_ugetrlimit
+#define __NR_ugetrlimit         191
+#endif
+#ifndef __NR_stat64
+#define __NR_stat64             195
+#endif
+#ifndef __NR_fstat64
+#define __NR_fstat64            197
+#endif
+#ifndef __NR_setresuid32
+#define __NR_setresuid32        208
+#define __NR_getresuid32        209
+#define __NR_setresgid32        210
+#define __NR_getresgid32        211
+#endif
+#ifndef __NR_setfsuid32
+#define __NR_setfsuid32         215
+#define __NR_setfsgid32         216
+#endif
+#ifndef __NR_getdents64
+#define __NR_getdents64         220
+#endif
+#ifndef __NR_gettid
+#define __NR_gettid             224
+#endif
+#ifndef __NR_readahead
+#define __NR_readahead          225
+#endif
+#ifndef __NR_setxattr
+#define __NR_setxattr           226
+#endif
+#ifndef __NR_lsetxattr
+#define __NR_lsetxattr          227
+#endif
+#ifndef __NR_getxattr
+#define __NR_getxattr           229
+#endif
+#ifndef __NR_lgetxattr
+#define __NR_lgetxattr          230
+#endif
+#ifndef __NR_listxattr
+#define __NR_listxattr          232
+#endif
+#ifndef __NR_llistxattr
+#define __NR_llistxattr         233
+#endif
+#ifndef __NR_tkill
+#define __NR_tkill              238
+#endif
+#ifndef __NR_futex
+#define __NR_futex              240
+#endif
+#ifndef __NR_sched_setaffinity
+#define __NR_sched_setaffinity  241
+#define __NR_sched_getaffinity  242
+#endif
+#ifndef __NR_set_tid_address
+#define __NR_set_tid_address    258
+#endif
+#ifndef __NR_clock_gettime
+#define __NR_clock_gettime      265
+#endif
+#ifndef __NR_clock_getres
+#define __NR_clock_getres       266
+#endif
+#ifndef __NR_statfs64
+#define __NR_statfs64           268
+#endif
+#ifndef __NR_fstatfs64
+#define __NR_fstatfs64          269
+#endif
+#ifndef __NR_fadvise64_64
+#define __NR_fadvise64_64       272
+#endif
+#ifndef __NR_ioprio_set
+#define __NR_ioprio_set         289
+#endif
+#ifndef __NR_ioprio_get
+#define __NR_ioprio_get         290
+#endif
+#ifndef __NR_openat
+#define __NR_openat             295
+#endif
+#ifndef __NR_fstatat64
+#define __NR_fstatat64          300
+#endif
+#ifndef __NR_unlinkat
+#define __NR_unlinkat           301
+#endif
+#ifndef __NR_move_pages
+#define __NR_move_pages         317
+#endif
+#ifndef __NR_getcpu
+#define __NR_getcpu             318
+#endif
+#ifndef __NR_fallocate
+#define __NR_fallocate          324
+#endif
+/* End of i386 definitions                                                   */
+#elif defined(__ARM_ARCH_3__) || defined(__ARM_EABI__)
+#ifndef __NR_setresuid
+#define __NR_setresuid          (__NR_SYSCALL_BASE + 164)
+#define __NR_getresuid          (__NR_SYSCALL_BASE + 165)
+#define __NR_setresgid          (__NR_SYSCALL_BASE + 170)
+#define __NR_getresgid          (__NR_SYSCALL_BASE + 171)
+#endif
+#ifndef __NR_rt_sigaction
+#define __NR_rt_sigreturn       (__NR_SYSCALL_BASE + 173)
+#define __NR_rt_sigaction       (__NR_SYSCALL_BASE + 174)
+#define __NR_rt_sigprocmask     (__NR_SYSCALL_BASE + 175)
+#define __NR_rt_sigpending      (__NR_SYSCALL_BASE + 176)
+#define __NR_rt_sigsuspend      (__NR_SYSCALL_BASE + 179)
+#endif
+#ifndef __NR_pread64
+#define __NR_pread64            (__NR_SYSCALL_BASE + 180)
+#endif
+#ifndef __NR_pwrite64
+#define __NR_pwrite64           (__NR_SYSCALL_BASE + 181)
+#endif
+#ifndef __NR_ugetrlimit
+#define __NR_ugetrlimit         (__NR_SYSCALL_BASE + 191)
+#endif
+#ifndef __NR_stat64
+#define __NR_stat64             (__NR_SYSCALL_BASE + 195)
+#endif
+#ifndef __NR_fstat64
+#define __NR_fstat64            (__NR_SYSCALL_BASE + 197)
+#endif
+#ifndef __NR_setresuid32
+#define __NR_setresuid32        (__NR_SYSCALL_BASE + 208)
+#define __NR_getresuid32        (__NR_SYSCALL_BASE + 209)
+#define __NR_setresgid32        (__NR_SYSCALL_BASE + 210)
+#define __NR_getresgid32        (__NR_SYSCALL_BASE + 211)
+#endif
+#ifndef __NR_setfsuid32
+#define __NR_setfsuid32         (__NR_SYSCALL_BASE + 215)
+#define __NR_setfsgid32         (__NR_SYSCALL_BASE + 216)
+#endif
+#ifndef __NR_getdents64
+#define __NR_getdents64         (__NR_SYSCALL_BASE + 217)
+#endif
+#ifndef __NR_gettid
+#define __NR_gettid             (__NR_SYSCALL_BASE + 224)
+#endif
+#ifndef __NR_readahead
+#define __NR_readahead          (__NR_SYSCALL_BASE + 225)
+#endif
+#ifndef __NR_setxattr
+#define __NR_setxattr           (__NR_SYSCALL_BASE + 226)
+#endif
+#ifndef __NR_lsetxattr
+#define __NR_lsetxattr          (__NR_SYSCALL_BASE + 227)
+#endif
+#ifndef __NR_getxattr
+#define __NR_getxattr           (__NR_SYSCALL_BASE + 229)
+#endif
+#ifndef __NR_lgetxattr
+#define __NR_lgetxattr          (__NR_SYSCALL_BASE + 230)
+#endif
+#ifndef __NR_listxattr
+#define __NR_listxattr          (__NR_SYSCALL_BASE + 232)
+#endif
+#ifndef __NR_llistxattr
+#define __NR_llistxattr         (__NR_SYSCALL_BASE + 233)
+#endif
+#ifndef __NR_tkill
+#define __NR_tkill              (__NR_SYSCALL_BASE + 238)
+#endif
+#ifndef __NR_futex
+#define __NR_futex              (__NR_SYSCALL_BASE + 240)
+#endif
+#ifndef __NR_sched_setaffinity
+#define __NR_sched_setaffinity  (__NR_SYSCALL_BASE + 241)
+#define __NR_sched_getaffinity  (__NR_SYSCALL_BASE + 242)
+#endif
+#ifndef __NR_set_tid_address
+#define __NR_set_tid_address    (__NR_SYSCALL_BASE + 256)
+#endif
+#ifndef __NR_clock_gettime
+#define __NR_clock_gettime      (__NR_SYSCALL_BASE + 263)
+#endif
+#ifndef __NR_clock_getres
+#define __NR_clock_getres       (__NR_SYSCALL_BASE + 264)
+#endif
+#ifndef __NR_statfs64
+#define __NR_statfs64           (__NR_SYSCALL_BASE + 266)
+#endif
+#ifndef __NR_fstatfs64
+#define __NR_fstatfs64          (__NR_SYSCALL_BASE + 267)
+#endif
+#ifndef __NR_ioprio_set
+#define __NR_ioprio_set         (__NR_SYSCALL_BASE + 314)
+#endif
+#ifndef __NR_ioprio_get
+#define __NR_ioprio_get         (__NR_SYSCALL_BASE + 315)
+#endif
+#ifndef __NR_move_pages
+#define __NR_move_pages         (__NR_SYSCALL_BASE + 344)
+#endif
+#ifndef __NR_getcpu
+#define __NR_getcpu             (__NR_SYSCALL_BASE + 345)
+#endif
+/* End of ARM 3/EABI definitions                                                */
+#elif defined(__aarch64__)
+#ifndef __NR_setxattr
+#define __NR_setxattr             5
+#endif
+#ifndef __NR_lsetxattr
+#define __NR_lsetxattr            6
+#endif
+#ifndef __NR_getxattr
+#define __NR_getxattr             8
+#endif
+#ifndef __NR_lgetxattr
+#define __NR_lgetxattr            9
+#endif
+#ifndef __NR_listxattr
+#define __NR_listxattr           11
+#endif
+#ifndef __NR_llistxattr
+#define __NR_llistxattr          12
+#endif
+#ifndef __NR_ioprio_set
+#define __NR_ioprio_set          30
+#endif
+#ifndef __NR_ioprio_get
+#define __NR_ioprio_get          31
+#endif
+#ifndef __NR_unlinkat
+#define __NR_unlinkat            35
+#endif
+#ifndef __NR_fallocate
+#define __NR_fallocate           47
+#endif
+#ifndef __NR_openat
+#define __NR_openat              56
+#endif
+#ifndef __NR_quotactl
+#define __NR_quotactl            60
+#endif
+#ifndef __NR_getdents64
+#define __NR_getdents64          61
+#endif
+#ifndef __NR_getdents
+#define __NR_getdents            __NR_getdents64
+#endif
+#ifndef __NR_pread64
+#define __NR_pread64             67
+#endif
+#ifndef __NR_pwrite64
+#define __NR_pwrite64            68
+#endif
+#ifndef __NR_ppoll
+#define __NR_ppoll               73
+#endif
+#ifndef __NR_readlinkat
+#define __NR_readlinkat          78
+#endif
+#ifndef __NR_newfstatat
+#define __NR_newfstatat          79
+#endif
+#ifndef __NR_set_tid_address
+#define __NR_set_tid_address     96
+#endif
+#ifndef __NR_futex
+#define __NR_futex               98
+#endif
+#ifndef __NR_clock_gettime
+#define __NR_clock_gettime      113
+#endif
+#ifndef __NR_clock_getres
+#define __NR_clock_getres       114
+#endif
+#ifndef __NR_sched_setaffinity
+#define __NR_sched_setaffinity  122
+#define __NR_sched_getaffinity  123
+#endif
+#ifndef __NR_tkill
+#define __NR_tkill              130
+#endif
+#ifndef __NR_setresuid
+#define __NR_setresuid          147
+#define __NR_getresuid          148
+#define __NR_setresgid          149
+#define __NR_getresgid          150
+#endif
+#ifndef __NR_gettid
+#define __NR_gettid             178
+#endif
+#ifndef __NR_readahead
+#define __NR_readahead          213
+#endif
+#ifndef __NR_fadvise64
+#define __NR_fadvise64          223
+#endif
+#ifndef __NR_move_pages
+#define __NR_move_pages         239
+#endif
+/* End of aarch64 definitions                                                */
+#elif defined(__x86_64__)
+#ifndef __NR_pread64
+#define __NR_pread64             17
+#endif
+#ifndef __NR_pwrite64
+#define __NR_pwrite64            18
+#endif
+#ifndef __NR_setresuid
+#define __NR_setresuid          117
+#define __NR_getresuid          118
+#define __NR_setresgid          119
+#define __NR_getresgid          120
+#endif
+#ifndef __NR_quotactl
+#define __NR_quotactl           179
+#endif
+#ifndef __NR_gettid
+#define __NR_gettid             186
+#endif
+#ifndef __NR_readahead
+#define __NR_readahead          187
+#endif
+#ifndef __NR_setxattr
+#define __NR_setxattr           188
+#endif
+#ifndef __NR_lsetxattr
+#define __NR_lsetxattr          189
+#endif
+#ifndef __NR_getxattr
+#define __NR_getxattr           191
+#endif
+#ifndef __NR_lgetxattr
+#define __NR_lgetxattr          192
+#endif
+#ifndef __NR_listxattr
+#define __NR_listxattr          194
+#endif
+#ifndef __NR_llistxattr
+#define __NR_llistxattr         195
+#endif
+#ifndef __NR_tkill
+#define __NR_tkill              200
+#endif
+#ifndef __NR_futex
+#define __NR_futex              202
+#endif
+#ifndef __NR_sched_setaffinity
+#define __NR_sched_setaffinity  203
+#define __NR_sched_getaffinity  204
+#endif
+#ifndef __NR_getdents64
+#define __NR_getdents64         217
+#endif
+#ifndef __NR_set_tid_address
+#define __NR_set_tid_address    218
+#endif
+#ifndef __NR_fadvise64
+#define __NR_fadvise64          221
+#endif
+#ifndef __NR_clock_gettime
+#define __NR_clock_gettime      228
+#endif
+#ifndef __NR_clock_getres
+#define __NR_clock_getres       229
+#endif
+#ifndef __NR_ioprio_set
+#define __NR_ioprio_set         251
+#endif
+#ifndef __NR_ioprio_get
+#define __NR_ioprio_get         252
+#endif
+#ifndef __NR_openat
+#define __NR_openat             257
+#endif
+#ifndef __NR_newfstatat
+#define __NR_newfstatat         262
+#endif
+#ifndef __NR_unlinkat
+#define __NR_unlinkat           263
+#endif
+#ifndef __NR_move_pages
+#define __NR_move_pages         279
+#endif
+#ifndef __NR_fallocate
+#define __NR_fallocate          285
+#endif
+/* End of x86-64 definitions                                                 */
+#elif defined(__mips__)
+#if _MIPS_SIM == _MIPS_SIM_ABI32
+#ifndef __NR_setresuid
+#define __NR_setresuid          (__NR_Linux + 185)
+#define __NR_getresuid          (__NR_Linux + 186)
+#define __NR_setresgid          (__NR_Linux + 190)
+#define __NR_getresgid          (__NR_Linux + 191)
+#endif
+#ifndef __NR_rt_sigaction
+#define __NR_rt_sigreturn       (__NR_Linux + 193)
+#define __NR_rt_sigaction       (__NR_Linux + 194)
+#define __NR_rt_sigprocmask     (__NR_Linux + 195)
+#define __NR_rt_sigpending      (__NR_Linux + 196)
+#define __NR_rt_sigsuspend      (__NR_Linux + 199)
+#endif
+#ifndef __NR_pread64
+#define __NR_pread64            (__NR_Linux + 200)
+#endif
+#ifndef __NR_pwrite64
+#define __NR_pwrite64           (__NR_Linux + 201)
+#endif
+#ifndef __NR_stat64
+#define __NR_stat64             (__NR_Linux + 213)
+#endif
+#ifndef __NR_fstat64
+#define __NR_fstat64            (__NR_Linux + 215)
+#endif
+#ifndef __NR_getdents64
+#define __NR_getdents64         (__NR_Linux + 219)
+#endif
+#ifndef __NR_gettid
+#define __NR_gettid             (__NR_Linux + 222)
+#endif
+#ifndef __NR_readahead
+#define __NR_readahead          (__NR_Linux + 223)
+#endif
+#ifndef __NR_setxattr
+#define __NR_setxattr           (__NR_Linux + 224)
+#endif
+#ifndef __NR_lsetxattr
+#define __NR_lsetxattr          (__NR_Linux + 225)
+#endif
+#ifndef __NR_getxattr
+#define __NR_getxattr           (__NR_Linux + 227)
+#endif
+#ifndef __NR_lgetxattr
+#define __NR_lgetxattr          (__NR_Linux + 228)
+#endif
+#ifndef __NR_listxattr
+#define __NR_listxattr          (__NR_Linux + 230)
+#endif
+#ifndef __NR_llistxattr
+#define __NR_llistxattr         (__NR_Linux + 231)
+#endif
+#ifndef __NR_tkill
+#define __NR_tkill              (__NR_Linux + 236)
+#endif
+#ifndef __NR_futex
+#define __NR_futex              (__NR_Linux + 238)
+#endif
+#ifndef __NR_sched_setaffinity
+#define __NR_sched_setaffinity  (__NR_Linux + 239)
+#define __NR_sched_getaffinity  (__NR_Linux + 240)
+#endif
+#ifndef __NR_set_tid_address
+#define __NR_set_tid_address    (__NR_Linux + 252)
+#endif
+#ifndef __NR_statfs64
+#define __NR_statfs64           (__NR_Linux + 255)
+#endif
+#ifndef __NR_fstatfs64
+#define __NR_fstatfs64          (__NR_Linux + 256)
+#endif
+#ifndef __NR_clock_gettime
+#define __NR_clock_gettime      (__NR_Linux + 263)
+#endif
+#ifndef __NR_clock_getres
+#define __NR_clock_getres       (__NR_Linux + 264)
+#endif
+#ifndef __NR_openat
+#define __NR_openat             (__NR_Linux + 288)
+#endif
+#ifndef __NR_fstatat
+#define __NR_fstatat            (__NR_Linux + 293)
+#endif
+#ifndef __NR_unlinkat
+#define __NR_unlinkat           (__NR_Linux + 294)
+#endif
+#ifndef __NR_move_pages
+#define __NR_move_pages         (__NR_Linux + 308)
+#endif
+#ifndef __NR_getcpu
+#define __NR_getcpu             (__NR_Linux + 312)
+#endif
+#ifndef __NR_ioprio_set
+#define __NR_ioprio_set         (__NR_Linux + 314)
+#endif
+#ifndef __NR_ioprio_get
+#define __NR_ioprio_get         (__NR_Linux + 315)
+#endif
+/* End of MIPS (old 32bit API) definitions */
+#elif  _MIPS_SIM == _MIPS_SIM_ABI64
+#ifndef __NR_pread64
+#define __NR_pread64            (__NR_Linux +  16)
+#endif
+#ifndef __NR_pwrite64
+#define __NR_pwrite64           (__NR_Linux +  17)
+#endif
+#ifndef __NR_setresuid
+#define __NR_setresuid          (__NR_Linux + 115)
+#define __NR_getresuid          (__NR_Linux + 116)
+#define __NR_setresgid          (__NR_Linux + 117)
+#define __NR_getresgid          (__NR_Linux + 118)
+#endif
+#ifndef __NR_gettid
+#define __NR_gettid             (__NR_Linux + 178)
+#endif
+#ifndef __NR_readahead
+#define __NR_readahead          (__NR_Linux + 179)
+#endif
+#ifndef __NR_setxattr
+#define __NR_setxattr           (__NR_Linux + 180)
+#endif
+#ifndef __NR_lsetxattr
+#define __NR_lsetxattr          (__NR_Linux + 181)
+#endif
+#ifndef __NR_getxattr
+#define __NR_getxattr           (__NR_Linux + 183)
+#endif
+#ifndef __NR_lgetxattr
+#define __NR_lgetxattr          (__NR_Linux + 184)
+#endif
+#ifndef __NR_listxattr
+#define __NR_listxattr          (__NR_Linux + 186)
+#endif
+#ifndef __NR_llistxattr
+#define __NR_llistxattr         (__NR_Linux + 187)
+#endif
+#ifndef __NR_tkill
+#define __NR_tkill              (__NR_Linux + 192)
+#endif
+#ifndef __NR_futex
+#define __NR_futex              (__NR_Linux + 194)
+#endif
+#ifndef __NR_sched_setaffinity
+#define __NR_sched_setaffinity  (__NR_Linux + 195)
+#define __NR_sched_getaffinity  (__NR_Linux + 196)
+#endif
+#ifndef __NR_set_tid_address
+#define __NR_set_tid_address    (__NR_Linux + 212)
+#endif
+#ifndef __NR_clock_gettime
+#define __NR_clock_gettime      (__NR_Linux + 222)
+#endif
+#ifndef __NR_clock_getres
+#define __NR_clock_getres       (__NR_Linux + 223)
+#endif
+#ifndef __NR_openat
+#define __NR_openat             (__NR_Linux + 247)
+#endif
+#ifndef __NR_fstatat
+#define __NR_fstatat            (__NR_Linux + 252)
+#endif
+#ifndef __NR_unlinkat
+#define __NR_unlinkat           (__NR_Linux + 253)
+#endif
+#ifndef __NR_move_pages
+#define __NR_move_pages         (__NR_Linux + 267)
+#endif
+#ifndef __NR_getcpu
+#define __NR_getcpu             (__NR_Linux + 271)
+#endif
+#ifndef __NR_ioprio_set
+#define __NR_ioprio_set         (__NR_Linux + 273)
+#endif
+#ifndef __NR_ioprio_get
+#define __NR_ioprio_get         (__NR_Linux + 274)
+#endif
+/* End of MIPS (64bit API) definitions */
+#else
+#ifndef __NR_setresuid
+#define __NR_setresuid          (__NR_Linux + 115)
+#define __NR_getresuid          (__NR_Linux + 116)
+#define __NR_setresgid          (__NR_Linux + 117)
+#define __NR_getresgid          (__NR_Linux + 118)
+#endif
+#ifndef __NR_gettid
+#define __NR_gettid             (__NR_Linux + 178)
+#endif
+#ifndef __NR_readahead
+#define __NR_readahead          (__NR_Linux + 179)
+#endif
+#ifndef __NR_setxattr
+#define __NR_setxattr           (__NR_Linux + 180)
+#endif
+#ifndef __NR_lsetxattr
+#define __NR_lsetxattr          (__NR_Linux + 181)
+#endif
+#ifndef __NR_getxattr
+#define __NR_getxattr           (__NR_Linux + 183)
+#endif
+#ifndef __NR_lgetxattr
+#define __NR_lgetxattr          (__NR_Linux + 184)
+#endif
+#ifndef __NR_listxattr
+#define __NR_listxattr          (__NR_Linux + 186)
+#endif
+#ifndef __NR_llistxattr
+#define __NR_llistxattr         (__NR_Linux + 187)
+#endif
+#ifndef __NR_tkill
+#define __NR_tkill              (__NR_Linux + 192)
+#endif
+#ifndef __NR_futex
+#define __NR_futex              (__NR_Linux + 194)
+#endif
+#ifndef __NR_sched_setaffinity
+#define __NR_sched_setaffinity  (__NR_Linux + 195)
+#define __NR_sched_getaffinity  (__NR_Linux + 196)
+#endif
+#ifndef __NR_set_tid_address
+#define __NR_set_tid_address    (__NR_Linux + 213)
+#endif
+#ifndef __NR_statfs64
+#define __NR_statfs64           (__NR_Linux + 217)
+#endif
+#ifndef __NR_fstatfs64
+#define __NR_fstatfs64          (__NR_Linux + 218)
+#endif
+#ifndef __NR_clock_gettime
+#define __NR_clock_gettime      (__NR_Linux + 226)
+#endif
+#ifndef __NR_clock_getres
+#define __NR_clock_getres       (__NR_Linux + 227)
+#endif
+#ifndef __NR_openat
+#define __NR_openat             (__NR_Linux + 251)
+#endif
+#ifndef __NR_fstatat
+#define __NR_fstatat            (__NR_Linux + 256)
+#endif
+#ifndef __NR_unlinkat
+#define __NR_unlinkat           (__NR_Linux + 257)
+#endif
+#ifndef __NR_move_pages
+#define __NR_move_pages         (__NR_Linux + 271)
+#endif
+#ifndef __NR_getcpu
+#define __NR_getcpu             (__NR_Linux + 275)
+#endif
+#ifndef __NR_ioprio_set
+#define __NR_ioprio_set         (__NR_Linux + 277)
+#endif
+#ifndef __NR_ioprio_get
+#define __NR_ioprio_get         (__NR_Linux + 278)
+#endif
+/* End of MIPS (new 32bit API) definitions                                   */
+#endif
+/* End of MIPS definitions                                                   */
+#elif defined(__PPC__)
+#ifndef __NR_setfsuid
+#define __NR_setfsuid           138
+#define __NR_setfsgid           139
+#endif
+#ifndef __NR_setresuid
+#define __NR_setresuid          164
+#define __NR_getresuid          165
+#define __NR_setresgid          169
+#define __NR_getresgid          170
+#endif
+#ifndef __NR_rt_sigaction
+#define __NR_rt_sigreturn       172
+#define __NR_rt_sigaction       173
+#define __NR_rt_sigprocmask     174
+#define __NR_rt_sigpending      175
+#define __NR_rt_sigsuspend      178
+#endif
+#ifndef __NR_pread64
+#define __NR_pread64            179
+#endif
+#ifndef __NR_pwrite64
+#define __NR_pwrite64           180
+#endif
+#ifndef __NR_ugetrlimit
+#define __NR_ugetrlimit         190
+#endif
+#ifndef __NR_readahead
+#define __NR_readahead          191
+#endif
+#ifndef __NR_stat64
+#define __NR_stat64             195
+#endif
+#ifndef __NR_fstat64
+#define __NR_fstat64            197
+#endif
+#ifndef __NR_getdents64
+#define __NR_getdents64         202
+#endif
+#ifndef __NR_gettid
+#define __NR_gettid             207
+#endif
+#ifndef __NR_tkill
+#define __NR_tkill              208
+#endif
+#ifndef __NR_setxattr
+#define __NR_setxattr           209
+#endif
+#ifndef __NR_lsetxattr
+#define __NR_lsetxattr          210
+#endif
+#ifndef __NR_getxattr
+#define __NR_getxattr           212
+#endif
+#ifndef __NR_lgetxattr
+#define __NR_lgetxattr          213
+#endif
+#ifndef __NR_listxattr
+#define __NR_listxattr          215
+#endif
+#ifndef __NR_llistxattr
+#define __NR_llistxattr         216
+#endif
+#ifndef __NR_futex
+#define __NR_futex              221
+#endif
+#ifndef __NR_sched_setaffinity
+#define __NR_sched_setaffinity  222
+#define __NR_sched_getaffinity  223
+#endif
+#ifndef __NR_set_tid_address
+#define __NR_set_tid_address    232
+#endif
+#ifndef __NR_clock_gettime
+#define __NR_clock_gettime      246
+#endif
+#ifndef __NR_clock_getres
+#define __NR_clock_getres       247
+#endif
+#ifndef __NR_statfs64
+#define __NR_statfs64           252
+#endif
+#ifndef __NR_fstatfs64
+#define __NR_fstatfs64          253
+#endif
+#ifndef __NR_fadvise64_64
+#define __NR_fadvise64_64       254
+#endif
+#ifndef __NR_ioprio_set
+#define __NR_ioprio_set         273
+#endif
+#ifndef __NR_ioprio_get
+#define __NR_ioprio_get         274
+#endif
+#ifndef __NR_openat
+#define __NR_openat             286
+#endif
+#ifndef __NR_fstatat64
+#define __NR_fstatat64          291
+#endif
+#ifndef __NR_unlinkat
+#define __NR_unlinkat           292
+#endif
+#ifndef __NR_move_pages
+#define __NR_move_pages         301
+#endif
+#ifndef __NR_getcpu
+#define __NR_getcpu             302
+#endif
+/* End of powerpc defininitions                                              */
+#endif
+
+
+/* After forking, we must make sure to only call system calls.               */
+#if defined(__BOUNDED_POINTERS__)
+  #error "Need to port invocations of syscalls for bounded ptrs"
+#else
+  /* The core dumper and the thread lister get executed after threads
+   * have been suspended. As a consequence, we cannot call any functions
+   * that acquire locks. Unfortunately, libc wraps most system calls
+   * (e.g. in order to implement pthread_atfork, and to make calls
+   * cancellable), which means we cannot call these functions. Instead,
+   * we have to call syscall() directly.
+   */
+  #undef LSS_ERRNO
+  #ifdef SYS_ERRNO
+    /* Allow the including file to override the location of errno. This can
+     * be useful when using clone() with the CLONE_VM option.
+     */
+    #define LSS_ERRNO SYS_ERRNO
+  #else
+    #define LSS_ERRNO errno
+  #endif
+
+  #undef LSS_INLINE
+  #ifdef SYS_INLINE
+    #define LSS_INLINE SYS_INLINE
+  #else
+    #define LSS_INLINE static inline
+  #endif
+
+  /* Allow the including file to override the prefix used for all new
+   * system calls. By default, it will be set to "sys_".
+   */
+  #undef LSS_NAME
+  #ifndef SYS_PREFIX
+    #define LSS_NAME(name) sys_##name
+  #elif defined(SYS_PREFIX) && SYS_PREFIX < 0
+    #define LSS_NAME(name) name
+  #elif defined(SYS_PREFIX) && SYS_PREFIX == 0
+    #define LSS_NAME(name) sys0_##name
+  #elif defined(SYS_PREFIX) && SYS_PREFIX == 1
+    #define LSS_NAME(name) sys1_##name
+  #elif defined(SYS_PREFIX) && SYS_PREFIX == 2
+    #define LSS_NAME(name) sys2_##name
+  #elif defined(SYS_PREFIX) && SYS_PREFIX == 3
+    #define LSS_NAME(name) sys3_##name
+  #elif defined(SYS_PREFIX) && SYS_PREFIX == 4
+    #define LSS_NAME(name) sys4_##name
+  #elif defined(SYS_PREFIX) && SYS_PREFIX == 5
+    #define LSS_NAME(name) sys5_##name
+  #elif defined(SYS_PREFIX) && SYS_PREFIX == 6
+    #define LSS_NAME(name) sys6_##name
+  #elif defined(SYS_PREFIX) && SYS_PREFIX == 7
+    #define LSS_NAME(name) sys7_##name
+  #elif defined(SYS_PREFIX) && SYS_PREFIX == 8
+    #define LSS_NAME(name) sys8_##name
+  #elif defined(SYS_PREFIX) && SYS_PREFIX == 9
+    #define LSS_NAME(name) sys9_##name
+  #endif
+
+  #undef  LSS_RETURN
+  #if (defined(__i386__) || defined(__x86_64__) || defined(__ARM_ARCH_3__) \
+       || defined(__ARM_EABI__) || defined(__aarch64__))
+  /* Failing system calls return a negative result in the range of
+   * -1..-4095. These are "errno" values with the sign inverted.
+   */
+  #define LSS_RETURN(type, res)                                               \
+    do {                                                                      \
+      if ((unsigned long)(res) >= (unsigned long)(-4095)) {                   \
+        LSS_ERRNO = -(res);                                                   \
+        res = -1;                                                             \
+      }                                                                       \
+      return (type) (res);                                                    \
+    } while (0)
+  #elif defined(__mips__)
+  /* On MIPS, failing system calls return -1, and set errno in a
+   * separate CPU register.
+   */
+  #define LSS_RETURN(type, res, err)                                          \
+    do {                                                                      \
+      if (err) {                                                              \
+        unsigned long __errnovalue = (res);                                   \
+        LSS_ERRNO = __errnovalue;                                             \
+        res = -1;                                                             \
+      }                                                                       \
+      return (type) (res);                                                    \
+    } while (0)
+  #elif defined(__PPC__)
+  /* On PPC, failing system calls return -1, and set errno in a
+   * separate CPU register. See linux/unistd.h.
+   */
+  #define LSS_RETURN(type, res, err)                                          \
+   do {                                                                       \
+     if (err & 0x10000000 ) {                                                 \
+       LSS_ERRNO = (res);                                                     \
+       res = -1;                                                              \
+     }                                                                        \
+     return (type) (res);                                                     \
+   } while (0)
+  #endif
+  #if defined(__i386__)
+    /* In PIC mode (e.g. when building shared libraries), gcc for i386
+     * reserves ebx. Unfortunately, most distribution ship with implementations
+     * of _syscallX() which clobber ebx.
+     * Also, most definitions of _syscallX() neglect to mark "memory" as being
+     * clobbered. This causes problems with compilers, that do a better job
+     * at optimizing across __asm__ calls.
+     * So, we just have to redefine all of the _syscallX() macros.
+     */
+    #undef LSS_ENTRYPOINT
+    #ifdef SYS_SYSCALL_ENTRYPOINT
+    static inline void (**LSS_NAME(get_syscall_entrypoint)(void))(void) {
+      void (**entrypoint)(void);
+      asm volatile(".bss\n"
+                   ".align 8\n"
+                   ".globl " SYS_SYSCALL_ENTRYPOINT "\n"
+                   ".common " SYS_SYSCALL_ENTRYPOINT ",8,8\n"
+                   ".previous\n"
+                   /* This logically does 'lea "SYS_SYSCALL_ENTRYPOINT", %0' */
+                   "call 0f\n"
+                 "0:pop  %0\n"
+                   "add  $_GLOBAL_OFFSET_TABLE_+[.-0b], %0\n"
+                   "mov  " SYS_SYSCALL_ENTRYPOINT "@GOT(%0), %0\n"
+                   : "=r"(entrypoint));
+      return entrypoint;
+    }
+
+    #define LSS_ENTRYPOINT ".bss\n"                                           \
+                           ".align 8\n"                                       \
+                           ".globl " SYS_SYSCALL_ENTRYPOINT "\n"              \
+                           ".common " SYS_SYSCALL_ENTRYPOINT ",8,8\n"         \
+                           ".previous\n"                                      \
+                           /* Check the SYS_SYSCALL_ENTRYPOINT vector      */ \
+                           "push %%eax\n"                                     \
+                           "call 10000f\n"                                    \
+                     "10000:pop  %%eax\n"                                     \
+                           "add  $_GLOBAL_OFFSET_TABLE_+[.-10000b], %%eax\n"  \
+                           "mov  " SYS_SYSCALL_ENTRYPOINT                     \
+                                 "@GOT(%%eax), %%eax\n"                       \
+                           "mov  0(%%eax), %%eax\n"                           \
+                           "test %%eax, %%eax\n"                              \
+                           "jz   10002f\n"                                    \
+                           "push %%eax\n"                                     \
+                           "call 10001f\n"                                    \
+                     "10001:pop  %%eax\n"                                     \
+                           "add  $(10003f-10001b), %%eax\n"                   \
+                           "xchg 4(%%esp), %%eax\n"                           \
+                           "ret\n"                                            \
+                     "10002:pop  %%eax\n"                                     \
+                           "int $0x80\n"                                      \
+                     "10003:\n"
+    #else
+    #define LSS_ENTRYPOINT "int $0x80\n"
+    #endif
+    #undef  LSS_BODY
+    #define LSS_BODY(type,args...)                                            \
+      long __res;                                                             \
+      __asm__ __volatile__("push %%ebx\n"                                     \
+                           "movl %2,%%ebx\n"                                  \
+                           LSS_ENTRYPOINT                                     \
+                           "pop %%ebx"                                        \
+                           args                                               \
+                           : "esp", "memory");                                \
+      LSS_RETURN(type,__res)
+    #undef  _syscall0
+    #define _syscall0(type,name)                                              \
+      type LSS_NAME(name)(void) {                                             \
+        long __res;                                                           \
+        __asm__ volatile(LSS_ENTRYPOINT                                       \
+                         : "=a" (__res)                                       \
+                         : "0" (__NR_##name)                                  \
+                         : "esp", "memory");                                  \
+        LSS_RETURN(type,__res);                                               \
+      }
+    #undef  _syscall1
+    #define _syscall1(type,name,type1,arg1)                                   \
+      type LSS_NAME(name)(type1 arg1) {                                       \
+        LSS_BODY(type,                                                        \
+             : "=a" (__res)                                                   \
+             : "0" (__NR_##name), "ri" ((long)(arg1)));                       \
+      }
+    #undef  _syscall2
+    #define _syscall2(type,name,type1,arg1,type2,arg2)                        \
+      type LSS_NAME(name)(type1 arg1,type2 arg2) {                            \
+        LSS_BODY(type,                                                        \
+             : "=a" (__res)                                                   \
+             : "0" (__NR_##name),"ri" ((long)(arg1)), "c" ((long)(arg2)));    \
+      }
+    #undef  _syscall3
+    #define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3)             \
+      type LSS_NAME(name)(type1 arg1,type2 arg2,type3 arg3) {                 \
+        LSS_BODY(type,                                                        \
+             : "=a" (__res)                                                   \
+             : "0" (__NR_##name), "ri" ((long)(arg1)), "c" ((long)(arg2)),    \
+               "d" ((long)(arg3)));                                           \
+      }
+    #undef  _syscall4
+    #define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4)  \
+      type LSS_NAME(name)(type1 arg1, type2 arg2, type3 arg3, type4 arg4) {   \
+        LSS_BODY(type,                                                        \
+             : "=a" (__res)                                                   \
+             : "0" (__NR_##name), "ri" ((long)(arg1)), "c" ((long)(arg2)),    \
+               "d" ((long)(arg3)),"S" ((long)(arg4)));                        \
+      }
+    #undef  _syscall5
+    #define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,  \
+                      type5,arg5)                                             \
+      type LSS_NAME(name)(type1 arg1, type2 arg2, type3 arg3, type4 arg4,     \
+                          type5 arg5) {                                       \
+        long __res;                                                           \
+        __asm__ __volatile__("push %%ebx\n"                                   \
+                             "movl %2,%%ebx\n"                                \
+                             "movl %1,%%eax\n"                                \
+                             LSS_ENTRYPOINT                                   \
+                             "pop  %%ebx"                                     \
+                             : "=a" (__res)                                   \
+                             : "i" (__NR_##name), "ri" ((long)(arg1)),        \
+                               "c" ((long)(arg2)), "d" ((long)(arg3)),        \
+                               "S" ((long)(arg4)), "D" ((long)(arg5))         \
+                             : "esp", "memory");                              \
+        LSS_RETURN(type,__res);                                               \
+      }
+    #undef  _syscall6
+    #define _syscall6(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,  \
+                      type5,arg5,type6,arg6)                                  \
+      type LSS_NAME(name)(type1 arg1, type2 arg2, type3 arg3, type4 arg4,     \
+                          type5 arg5, type6 arg6) {                           \
+        long __res;                                                           \
+        struct { long __a1; long __a6; } __s = { (long)arg1, (long) arg6 };   \
+        __asm__ __volatile__("push %%ebp\n"                                   \
+                             "push %%ebx\n"                                   \
+                             "movl 4(%2),%%ebp\n"                             \
+                             "movl 0(%2), %%ebx\n"                            \
+                             "movl %1,%%eax\n"                                \
+                             LSS_ENTRYPOINT                                   \
+                             "pop  %%ebx\n"                                   \
+                             "pop  %%ebp"                                     \
+                             : "=a" (__res)                                   \
+                             : "i" (__NR_##name),  "0" ((long)(&__s)),        \
+                               "c" ((long)(arg2)), "d" ((long)(arg3)),        \
+                               "S" ((long)(arg4)), "D" ((long)(arg5))         \
+                             : "esp", "memory");                              \
+        LSS_RETURN(type,__res);                                               \
+      }
+    LSS_INLINE int LSS_NAME(clone)(int (*fn)(void *), void *child_stack,
+                                   int flags, void *arg, int *parent_tidptr,
+                                   void *newtls, int *child_tidptr) {
+      long __res;
+      __asm__ __volatile__(/* if (fn == NULL)
+                            *   return -EINVAL;
+                            */
+                           "movl   %3,%%ecx\n"
+                           "jecxz  1f\n"
+
+                           /* if (child_stack == NULL)
+                            *   return -EINVAL;
+                            */
+                           "movl   %4,%%ecx\n"
+                           "jecxz  1f\n"
+
+                           /* Set up alignment of the child stack:
+                            * child_stack = (child_stack & ~0xF) - 20;
+                            */
+                           "andl   $-16,%%ecx\n"
+                           "subl   $20,%%ecx\n"
+
+                           /* Push "arg" and "fn" onto the stack that will be
+                            * used by the child.
+                            */
+                           "movl   %6,%%eax\n"
+                           "movl   %%eax,4(%%ecx)\n"
+                           "movl   %3,%%eax\n"
+                           "movl   %%eax,(%%ecx)\n"
+
+                           /* %eax = syscall(%eax = __NR_clone,
+                            *                %ebx = flags,
+                            *                %ecx = child_stack,
+                            *                %edx = parent_tidptr,
+                            *                %esi = newtls,
+                            *                %edi = child_tidptr)
+                            * Also, make sure that %ebx gets preserved as it is
+                            * used in PIC mode.
+                            */
+                           "movl   %8,%%esi\n"
+                           "movl   %7,%%edx\n"
+                           "movl   %5,%%eax\n"
+                           "movl   %9,%%edi\n"
+                           "pushl  %%ebx\n"
+                           "movl   %%eax,%%ebx\n"
+                           "movl   %2,%%eax\n"
+                           LSS_ENTRYPOINT
+
+                           /* In the parent: restore %ebx
+                            * In the child:  move "fn" into %ebx
+                            */
+                           "popl   %%ebx\n"
+
+                           /* if (%eax != 0)
+                            *   return %eax;
+                            */
+                           "test   %%eax,%%eax\n"
+                           "jnz    1f\n"
+
+                           /* In the child, now. Terminate frame pointer chain.
+                            */
+                           "movl   $0,%%ebp\n"
+
+                           /* Call "fn". "arg" is already on the stack.
+                            */
+                           "call   *%%ebx\n"
+
+                           /* Call _exit(%ebx). Unfortunately older versions
+                            * of gcc restrict the number of arguments that can
+                            * be passed to asm(). So, we need to hard-code the
+                            * system call number.
+                            */
+                           "movl   %%eax,%%ebx\n"
+                           "movl   $1,%%eax\n"
+                           LSS_ENTRYPOINT
+
+                           /* Return to parent.
+                            */
+                         "1:\n"
+                           : "=a" (__res)
+                           : "0"(-EINVAL), "i"(__NR_clone),
+                             "m"(fn), "m"(child_stack), "m"(flags), "m"(arg),
+                             "m"(parent_tidptr), "m"(newtls), "m"(child_tidptr)
+                           : "esp", "memory", "ecx", "edx", "esi", "edi");
+      LSS_RETURN(int, __res);
+    }
+
+    #define __NR__fadvise64_64 __NR_fadvise64_64
+    LSS_INLINE _syscall6(int, _fadvise64_64, int, fd,
+                         unsigned, offset_lo, unsigned, offset_hi,
+                         unsigned, len_lo, unsigned, len_hi,
+                         int, advice)
+
+    LSS_INLINE int LSS_NAME(fadvise64)(int fd, loff_t offset,
+                                       loff_t len, int advice) {
+      return LSS_NAME(_fadvise64_64)(fd,
+                                     (unsigned)offset, (unsigned)(offset >>32),
+                                     (unsigned)len, (unsigned)(len >> 32),
+                                     advice);
+    }
+
+    #define __NR__fallocate __NR_fallocate
+    LSS_INLINE _syscall6(int, _fallocate, int, fd,
+                         int, mode,
+                         unsigned, offset_lo, unsigned, offset_hi,
+                         unsigned, len_lo, unsigned, len_hi)
+
+    LSS_INLINE int LSS_NAME(fallocate)(int fd, int mode,
+                                       loff_t offset, loff_t len) {
+      union { loff_t off; unsigned w[2]; } o = { offset }, l = { len };
+      return LSS_NAME(_fallocate)(fd, mode, o.w[0], o.w[1], l.w[0], l.w[1]);
+    }
+
+    LSS_INLINE _syscall1(int, set_thread_area, void *, u)
+    LSS_INLINE _syscall1(int, get_thread_area, void *, u)
+
+    LSS_INLINE void (*LSS_NAME(restore_rt)(void))(void) {
+      /* On i386, the kernel does not know how to return from a signal
+       * handler. Instead, it relies on user space to provide a
+       * restorer function that calls the {rt_,}sigreturn() system call.
+       * Unfortunately, we cannot just reference the glibc version of this
+       * function, as glibc goes out of its way to make it inaccessible.
+       */
+      void (*res)(void);
+      __asm__ __volatile__("call   2f\n"
+                         "0:.align 16\n"
+                         "1:movl   %1,%%eax\n"
+                           LSS_ENTRYPOINT
+                         "2:popl   %0\n"
+                           "addl   $(1b-0b),%0\n"
+                           : "=a" (res)
+                           : "i"  (__NR_rt_sigreturn));
+      return res;
+    }
+    LSS_INLINE void (*LSS_NAME(restore)(void))(void) {
+      /* On i386, the kernel does not know how to return from a signal
+       * handler. Instead, it relies on user space to provide a
+       * restorer function that calls the {rt_,}sigreturn() system call.
+       * Unfortunately, we cannot just reference the glibc version of this
+       * function, as glibc goes out of its way to make it inaccessible.
+       */
+      void (*res)(void);
+      __asm__ __volatile__("call   2f\n"
+                         "0:.align 16\n"
+                         "1:pop    %%eax\n"
+                           "movl   %1,%%eax\n"
+                           LSS_ENTRYPOINT
+                         "2:popl   %0\n"
+                           "addl   $(1b-0b),%0\n"
+                           : "=a" (res)
+                           : "i"  (__NR_sigreturn));
+      return res;
+    }
+  #elif defined(__x86_64__)
+    /* There are no known problems with any of the _syscallX() macros
+     * currently shipping for x86_64, but we still need to be able to define
+     * our own version so that we can override the location of the errno
+     * location (e.g. when using the clone() system call with the CLONE_VM
+     * option).
+     */
+    #undef LSS_ENTRYPOINT
+    #ifdef SYS_SYSCALL_ENTRYPOINT
+    static inline void (**LSS_NAME(get_syscall_entrypoint)(void))(void) {
+      void (**entrypoint)(void);
+      asm volatile(".bss\n"
+                   ".align 8\n"
+                   ".globl " SYS_SYSCALL_ENTRYPOINT "\n"
+                   ".common " SYS_SYSCALL_ENTRYPOINT ",8,8\n"
+                   ".previous\n"
+                   "mov " SYS_SYSCALL_ENTRYPOINT "@GOTPCREL(%%rip), %0\n"
+                   : "=r"(entrypoint));
+      return entrypoint;
+    }
+
+    #define LSS_ENTRYPOINT                                                    \
+              ".bss\n"                                                        \
+              ".align 8\n"                                                    \
+              ".globl " SYS_SYSCALL_ENTRYPOINT "\n"                           \
+              ".common " SYS_SYSCALL_ENTRYPOINT ",8,8\n"                      \
+              ".previous\n"                                                   \
+              "mov " SYS_SYSCALL_ENTRYPOINT "@GOTPCREL(%%rip), %%rcx\n"       \
+              "mov  0(%%rcx), %%rcx\n"                                        \
+              "test %%rcx, %%rcx\n"                                           \
+              "jz   10001f\n"                                                 \
+              "call *%%rcx\n"                                                 \
+              "jmp  10002f\n"                                                 \
+        "10001:syscall\n"                                                     \
+        "10002:\n"
+
+    #else
+    #define LSS_ENTRYPOINT "syscall\n"
+    #endif
+
+    /* The x32 ABI has 32 bit longs, but the syscall interface is 64 bit.
+     * We need to explicitly cast to an unsigned 64 bit type to avoid implicit
+     * sign extension.  We can't cast pointers directly because those are
+     * 32 bits, and gcc will dump ugly warnings about casting from a pointer
+     * to an integer of a different size.
+     */
+    #undef  LSS_SYSCALL_ARG
+    #define LSS_SYSCALL_ARG(a) ((uint64_t)(uintptr_t)(a))
+    #undef  _LSS_RETURN
+    #define _LSS_RETURN(type, res, cast)                                      \
+      do {                                                                    \
+        if ((uint64_t)(res) >= (uint64_t)(-4095)) {                           \
+          LSS_ERRNO = -(res);                                                 \
+          res = -1;                                                           \
+        }                                                                     \
+        return (type)(cast)(res);                                             \
+      } while (0)
+    #undef  LSS_RETURN
+    #define LSS_RETURN(type, res) _LSS_RETURN(type, res, uintptr_t)
+
+    #undef  _LSS_BODY
+    #define _LSS_BODY(nr, type, name, cast, ...)                              \
+          long long __res;                                                    \
+          __asm__ __volatile__(LSS_BODY_ASM##nr LSS_ENTRYPOINT                \
+            : "=a" (__res)                                                    \
+            : "0" (__NR_##name) LSS_BODY_ARG##nr(__VA_ARGS__)                 \
+            : LSS_BODY_CLOBBER##nr "r11", "rcx", "memory");                   \
+          _LSS_RETURN(type, __res, cast)
+    #undef  LSS_BODY
+    #define LSS_BODY(nr, type, name, args...) \
+      _LSS_BODY(nr, type, name, uintptr_t, ## args)
+
+    #undef  LSS_BODY_ASM0
+    #undef  LSS_BODY_ASM1
+    #undef  LSS_BODY_ASM2
+    #undef  LSS_BODY_ASM3
+    #undef  LSS_BODY_ASM4
+    #undef  LSS_BODY_ASM5
+    #undef  LSS_BODY_ASM6
+    #define LSS_BODY_ASM0
+    #define LSS_BODY_ASM1 LSS_BODY_ASM0
+    #define LSS_BODY_ASM2 LSS_BODY_ASM1
+    #define LSS_BODY_ASM3 LSS_BODY_ASM2
+    #define LSS_BODY_ASM4 LSS_BODY_ASM3 "movq %5,%%r10;"
+    #define LSS_BODY_ASM5 LSS_BODY_ASM4 "movq %6,%%r8;"
+    #define LSS_BODY_ASM6 LSS_BODY_ASM5 "movq %7,%%r9;"
+
+    #undef  LSS_BODY_CLOBBER0
+    #undef  LSS_BODY_CLOBBER1
+    #undef  LSS_BODY_CLOBBER2
+    #undef  LSS_BODY_CLOBBER3
+    #undef  LSS_BODY_CLOBBER4
+    #undef  LSS_BODY_CLOBBER5
+    #undef  LSS_BODY_CLOBBER6
+    #define LSS_BODY_CLOBBER0
+    #define LSS_BODY_CLOBBER1 LSS_BODY_CLOBBER0
+    #define LSS_BODY_CLOBBER2 LSS_BODY_CLOBBER1
+    #define LSS_BODY_CLOBBER3 LSS_BODY_CLOBBER2
+    #define LSS_BODY_CLOBBER4 LSS_BODY_CLOBBER3 "r10",
+    #define LSS_BODY_CLOBBER5 LSS_BODY_CLOBBER4 "r8",
+    #define LSS_BODY_CLOBBER6 LSS_BODY_CLOBBER5 "r9",
+
+    #undef  LSS_BODY_ARG0
+    #undef  LSS_BODY_ARG1
+    #undef  LSS_BODY_ARG2
+    #undef  LSS_BODY_ARG3
+    #undef  LSS_BODY_ARG4
+    #undef  LSS_BODY_ARG5
+    #undef  LSS_BODY_ARG6
+    #define LSS_BODY_ARG0()
+    #define LSS_BODY_ARG1(arg1) \
+      LSS_BODY_ARG0(), "D" (arg1)
+    #define LSS_BODY_ARG2(arg1, arg2) \
+      LSS_BODY_ARG1(arg1), "S" (arg2)
+    #define LSS_BODY_ARG3(arg1, arg2, arg3) \
+      LSS_BODY_ARG2(arg1, arg2), "d" (arg3)
+    #define LSS_BODY_ARG4(arg1, arg2, arg3, arg4) \
+      LSS_BODY_ARG3(arg1, arg2, arg3), "r" (arg4)
+    #define LSS_BODY_ARG5(arg1, arg2, arg3, arg4, arg5) \
+      LSS_BODY_ARG4(arg1, arg2, arg3, arg4), "r" (arg5)
+    #define LSS_BODY_ARG6(arg1, arg2, arg3, arg4, arg5, arg6) \
+      LSS_BODY_ARG5(arg1, arg2, arg3, arg4, arg5), "r" (arg6)
+
+    #undef _syscall0
+    #define _syscall0(type,name)                                              \
+      type LSS_NAME(name)(void) {                                             \
+        LSS_BODY(0, type, name);                                              \
+      }
+    #undef _syscall1
+    #define _syscall1(type,name,type1,arg1)                                   \
+      type LSS_NAME(name)(type1 arg1) {                                       \
+        LSS_BODY(1, type, name, LSS_SYSCALL_ARG(arg1));                       \
+      }
+    #undef _syscall2
+    #define _syscall2(type,name,type1,arg1,type2,arg2)                        \
+      type LSS_NAME(name)(type1 arg1, type2 arg2) {                           \
+        LSS_BODY(2, type, name, LSS_SYSCALL_ARG(arg1), LSS_SYSCALL_ARG(arg2));\
+      }
+    #undef _syscall3
+    #define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3)             \
+      type LSS_NAME(name)(type1 arg1, type2 arg2, type3 arg3) {               \
+        LSS_BODY(3, type, name, LSS_SYSCALL_ARG(arg1), LSS_SYSCALL_ARG(arg2), \
+                                LSS_SYSCALL_ARG(arg3));                       \
+      }
+    #undef _syscall4
+    #define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4)  \
+      type LSS_NAME(name)(type1 arg1, type2 arg2, type3 arg3, type4 arg4) {   \
+        LSS_BODY(4, type, name, LSS_SYSCALL_ARG(arg1), LSS_SYSCALL_ARG(arg2), \
+                                LSS_SYSCALL_ARG(arg3), LSS_SYSCALL_ARG(arg4));\
+      }
+    #undef _syscall5
+    #define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,  \
+                      type5,arg5)                                             \
+      type LSS_NAME(name)(type1 arg1, type2 arg2, type3 arg3, type4 arg4,     \
+                          type5 arg5) {                                       \
+        LSS_BODY(5, type, name, LSS_SYSCALL_ARG(arg1), LSS_SYSCALL_ARG(arg2), \
+                                LSS_SYSCALL_ARG(arg3), LSS_SYSCALL_ARG(arg4), \
+                                LSS_SYSCALL_ARG(arg5));                       \
+      }
+    #undef _syscall6
+    #define _syscall6(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,  \
+                      type5,arg5,type6,arg6)                                  \
+      type LSS_NAME(name)(type1 arg1, type2 arg2, type3 arg3, type4 arg4,     \
+                          type5 arg5, type6 arg6) {                           \
+        LSS_BODY(6, type, name, LSS_SYSCALL_ARG(arg1), LSS_SYSCALL_ARG(arg2), \
+                                LSS_SYSCALL_ARG(arg3), LSS_SYSCALL_ARG(arg4), \
+                                LSS_SYSCALL_ARG(arg5), LSS_SYSCALL_ARG(arg6));\
+      }
+    LSS_INLINE int LSS_NAME(clone)(int (*fn)(void *), void *child_stack,
+                                   int flags, void *arg, int *parent_tidptr,
+                                   void *newtls, int *child_tidptr) {
+      long long __res;
+      {
+        __asm__ __volatile__(/* if (fn == NULL)
+                              *   return -EINVAL;
+                              */
+                             "testq  %4,%4\n"
+                             "jz     1f\n"
+
+                             /* if (child_stack == NULL)
+                              *   return -EINVAL;
+                              */
+                             "testq  %5,%5\n"
+                             "jz     1f\n"
+
+                             /* childstack -= 2*sizeof(void *);
+                              */
+                             "subq   $16,%5\n"
+
+                             /* Push "arg" and "fn" onto the stack that will be
+                              * used by the child.
+                              */
+                             "movq   %7,8(%5)\n"
+                             "movq   %4,0(%5)\n"
+
+                             /* %rax = syscall(%rax = __NR_clone,
+                              *                %rdi = flags,
+                              *                %rsi = child_stack,
+                              *                %rdx = parent_tidptr,
+                              *                %r8  = new_tls,
+                              *                %r10 = child_tidptr)
+                              */
+                             "movq   %2,%%rax\n"
+                             "movq   %9,%%r8\n"
+                             "movq   %10,%%r10\n"
+                             LSS_ENTRYPOINT
+
+                             /* if (%rax != 0)
+                              *   return;
+                              */
+                             "testq  %%rax,%%rax\n"
+                             "jnz    1f\n"
+
+                             /* In the child. Terminate frame pointer chain.
+                              */
+                             "xorq   %%rbp,%%rbp\n"
+
+                             /* Call "fn(arg)".
+                              */
+                             "popq   %%rax\n"
+                             "popq   %%rdi\n"
+                             "call   *%%rax\n"
+
+                             /* Call _exit(%ebx).
+                              */
+                             "movq   %%rax,%%rdi\n"
+                             "movq   %3,%%rax\n"
+                             LSS_ENTRYPOINT
+
+                             /* Return to parent.
+                              */
+                           "1:\n"
+                             : "=a" (__res)
+                             : "0"(-EINVAL), "i"(__NR_clone), "i"(__NR_exit),
+                               "r"(LSS_SYSCALL_ARG(fn)),
+                               "S"(LSS_SYSCALL_ARG(child_stack)),
+                               "D"(LSS_SYSCALL_ARG(flags)),
+                               "r"(LSS_SYSCALL_ARG(arg)),
+                               "d"(LSS_SYSCALL_ARG(parent_tidptr)),
+                               "r"(LSS_SYSCALL_ARG(newtls)),
+                               "r"(LSS_SYSCALL_ARG(child_tidptr))
+                             : "rsp", "memory", "r8", "r10", "r11", "rcx");
+      }
+      LSS_RETURN(int, __res);
+    }
+    LSS_INLINE _syscall2(int, arch_prctl, int, c, void *, a)
+
+    /* Need to make sure loff_t isn't truncated to 32-bits under x32.  */
+    LSS_INLINE int LSS_NAME(fadvise64)(int fd, loff_t offset, loff_t len,
+                                       int advice) {
+      LSS_BODY(4, int, fadvise64, LSS_SYSCALL_ARG(fd), (uint64_t)(offset),
+                                  (uint64_t)(len), LSS_SYSCALL_ARG(advice));
+    }
+
+    LSS_INLINE void (*LSS_NAME(restore_rt)(void))(void) {
+      /* On x86-64, the kernel does not know how to return from
+       * a signal handler. Instead, it relies on user space to provide a
+       * restorer function that calls the rt_sigreturn() system call.
+       * Unfortunately, we cannot just reference the glibc version of this
+       * function, as glibc goes out of its way to make it inaccessible.
+       */
+      long long res;
+      __asm__ __volatile__("jmp    2f\n"
+                           ".align 16\n"
+                         "1:movq   %1,%%rax\n"
+                           LSS_ENTRYPOINT
+                         "2:leaq   1b(%%rip),%0\n"
+                           : "=r" (res)
+                           : "i"  (__NR_rt_sigreturn));
+      return (void (*)(void))(uintptr_t)res;
+    }
+  #elif defined(__ARM_ARCH_3__)
+    /* Most definitions of _syscallX() neglect to mark "memory" as being
+     * clobbered. This causes problems with compilers, that do a better job
+     * at optimizing across __asm__ calls.
+     * So, we just have to redefine all of the _syscallX() macros.
+     */
+    #undef LSS_REG
+    #define LSS_REG(r,a) register long __r##r __asm__("r"#r) = (long)a
+    #undef  LSS_BODY
+    #define LSS_BODY(type,name,args...)                                       \
+          register long __res_r0 __asm__("r0");                               \
+          long __res;                                                         \
+          __asm__ __volatile__ (__syscall(name)                               \
+                                : "=r"(__res_r0) : args : "lr", "memory");    \
+          __res = __res_r0;                                                   \
+          LSS_RETURN(type, __res)
+    #undef _syscall0
+    #define _syscall0(type, name)                                             \
+      type LSS_NAME(name)(void) {                                             \
+        LSS_BODY(type, name);                                                 \
+      }
+    #undef _syscall1
+    #define _syscall1(type, name, type1, arg1)                                \
+      type LSS_NAME(name)(type1 arg1) {                                       \
+        LSS_REG(0, arg1); LSS_BODY(type, name, "r"(__r0));                    \
+      }
+    #undef _syscall2
+    #define _syscall2(type, name, type1, arg1, type2, arg2)                   \
+      type LSS_NAME(name)(type1 arg1, type2 arg2) {                           \
+        LSS_REG(0, arg1); LSS_REG(1, arg2);                                   \
+        LSS_BODY(type, name, "r"(__r0), "r"(__r1));                           \
+      }
+    #undef _syscall3
+    #define _syscall3(type, name, type1, arg1, type2, arg2, type3, arg3)      \
+      type LSS_NAME(name)(type1 arg1, type2 arg2, type3 arg3) {               \
+        LSS_REG(0, arg1); LSS_REG(1, arg2); LSS_REG(2, arg3);                 \
+        LSS_BODY(type, name, "r"(__r0), "r"(__r1), "r"(__r2));                \
+      }
+    #undef _syscall4
+    #define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4)  \
+      type LSS_NAME(name)(type1 arg1, type2 arg2, type3 arg3, type4 arg4) {   \
+        LSS_REG(0, arg1); LSS_REG(1, arg2); LSS_REG(2, arg3);                 \
+        LSS_REG(3, arg4);                                                     \
+        LSS_BODY(type, name, "r"(__r0), "r"(__r1), "r"(__r2), "r"(__r3));     \
+      }
+    #undef _syscall5
+    #define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,  \
+                      type5,arg5)                                             \
+      type LSS_NAME(name)(type1 arg1, type2 arg2, type3 arg3, type4 arg4,     \
+                          type5 arg5) {                                       \
+        LSS_REG(0, arg1); LSS_REG(1, arg2); LSS_REG(2, arg3);                 \
+        LSS_REG(3, arg4); LSS_REG(4, arg5);                                   \
+        LSS_BODY(type, name, "r"(__r0), "r"(__r1), "r"(__r2), "r"(__r3),      \
+                             "r"(__r4));                                      \
+      }
+    #undef _syscall6
+    #define _syscall6(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,  \
+                      type5,arg5,type6,arg6)                                  \
+      type LSS_NAME(name)(type1 arg1, type2 arg2, type3 arg3, type4 arg4,     \
+                          type5 arg5, type6 arg6) {                           \
+        LSS_REG(0, arg1); LSS_REG(1, arg2); LSS_REG(2, arg3);                 \
+        LSS_REG(3, arg4); LSS_REG(4, arg5); LSS_REG(5, arg6);                 \
+        LSS_BODY(type, name, "r"(__r0), "r"(__r1), "r"(__r2), "r"(__r3),      \
+                             "r"(__r4), "r"(__r5));                           \
+      }
+    LSS_INLINE int LSS_NAME(clone)(int (*fn)(void *), void *child_stack,
+                                   int flags, void *arg, int *parent_tidptr,
+                                   void *newtls, int *child_tidptr) {
+      long __res;
+      {
+        register int   __flags __asm__("r0") = flags;
+        register void *__stack __asm__("r1") = child_stack;
+        register void *__ptid  __asm__("r2") = parent_tidptr;
+        register void *__tls   __asm__("r3") = newtls;
+        register int  *__ctid  __asm__("r4") = child_tidptr;
+        __asm__ __volatile__(/* if (fn == NULL || child_stack == NULL)
+                              *   return -EINVAL;
+                              */
+                             "cmp   %2,#0\n"
+                             "cmpne %3,#0\n"
+                             "moveq %0,%1\n"
+                             "beq   1f\n"
+
+                             /* Push "arg" and "fn" onto the stack that will be
+                              * used by the child.
+                              */
+                             "str   %5,[%3,#-4]!\n"
+                             "str   %2,[%3,#-4]!\n"
+
+                             /* %r0 = syscall(%r0 = flags,
+                              *               %r1 = child_stack,
+                              *               %r2 = parent_tidptr,
+                              *               %r3 = newtls,
+                              *               %r4 = child_tidptr)
+                              */
+                             __syscall(clone)"\n"
+
+                             /* if (%r0 != 0)
+                              *   return %r0;
+                              */
+                             "movs  %0,r0\n"
+                             "bne   1f\n"
+
+                             /* In the child, now. Call "fn(arg)".
+                              */
+                             "ldr   r0,[sp, #4]\n"
+                             "mov   lr,pc\n"
+                             "ldr   pc,[sp]\n"
+
+                             /* Call _exit(%r0).
+                              */
+                             __syscall(exit)"\n"
+                           "1:\n"
+                             : "=r" (__res)
+                             : "i"(-EINVAL),
+                               "r"(fn), "r"(__stack), "r"(__flags), "r"(arg),
+                               "r"(__ptid), "r"(__tls), "r"(__ctid)
+                             : "cc", "lr", "memory");
+      }
+      LSS_RETURN(int, __res);
+    }
+  #elif defined(__ARM_EABI__)
+    /* Most definitions of _syscallX() neglect to mark "memory" as being
+     * clobbered. This causes problems with compilers, that do a better job
+     * at optimizing across __asm__ calls.
+     * So, we just have to redefine all fo the _syscallX() macros.
+     */
+    #undef LSS_REG
+    #define LSS_REG(r,a) register long __r##r __asm__("r"#r) = (long)a
+    #undef  LSS_BODY
+    #define LSS_BODY(type,name,args...)                                       \
+          register long __res_r0 __asm__("r0");                               \
+          long __res;                                                         \
+          __asm__ __volatile__ ("push {r7}\n"                                 \
+                                "mov r7, %1\n"                                \
+                                "swi 0x0\n"                                   \
+                                "pop {r7}\n"                                  \
+                                : "=r"(__res_r0)                              \
+                                : "i"(__NR_##name) , ## args                  \
+                                : "lr", "memory");                            \
+          __res = __res_r0;                                                   \
+          LSS_RETURN(type, __res)
+    #undef _syscall0
+    #define _syscall0(type, name)                                             \
+      type LSS_NAME(name)(void) {                                             \
+        LSS_BODY(type, name);                                                 \
+      }
+    #undef _syscall1
+    #define _syscall1(type, name, type1, arg1)                                \
+      type LSS_NAME(name)(type1 arg1) {                                       \
+        LSS_REG(0, arg1); LSS_BODY(type, name, "r"(__r0));                    \
+      }
+    #undef _syscall2
+    #define _syscall2(type, name, type1, arg1, type2, arg2)                   \
+      type LSS_NAME(name)(type1 arg1, type2 arg2) {                           \
+        LSS_REG(0, arg1); LSS_REG(1, arg2);                                   \
+        LSS_BODY(type, name, "r"(__r0), "r"(__r1));                           \
+      }
+    #undef _syscall3
+    #define _syscall3(type, name, type1, arg1, type2, arg2, type3, arg3)      \
+      type LSS_NAME(name)(type1 arg1, type2 arg2, type3 arg3) {               \
+        LSS_REG(0, arg1); LSS_REG(1, arg2); LSS_REG(2, arg3);                 \
+        LSS_BODY(type, name, "r"(__r0), "r"(__r1), "r"(__r2));                \
+      }
+    #undef _syscall4
+    #define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4)  \
+      type LSS_NAME(name)(type1 arg1, type2 arg2, type3 arg3, type4 arg4) {   \
+        LSS_REG(0, arg1); LSS_REG(1, arg2); LSS_REG(2, arg3);                 \
+        LSS_REG(3, arg4);                                                     \
+        LSS_BODY(type, name, "r"(__r0), "r"(__r1), "r"(__r2), "r"(__r3));     \
+      }
+    #undef _syscall5
+    #define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,  \
+                      type5,arg5)                                             \
+      type LSS_NAME(name)(type1 arg1, type2 arg2, type3 arg3, type4 arg4,     \
+                          type5 arg5) {                                       \
+        LSS_REG(0, arg1); LSS_REG(1, arg2); LSS_REG(2, arg3);                 \
+        LSS_REG(3, arg4); LSS_REG(4, arg5);                                   \
+        LSS_BODY(type, name, "r"(__r0), "r"(__r1), "r"(__r2), "r"(__r3),      \
+                             "r"(__r4));                                      \
+      }
+    #undef _syscall6
+    #define _syscall6(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,  \
+                      type5,arg5,type6,arg6)                                  \
+      type LSS_NAME(name)(type1 arg1, type2 arg2, type3 arg3, type4 arg4,     \
+                          type5 arg5, type6 arg6) {                           \
+        LSS_REG(0, arg1); LSS_REG(1, arg2); LSS_REG(2, arg3);                 \
+        LSS_REG(3, arg4); LSS_REG(4, arg5); LSS_REG(5, arg6);                 \
+        LSS_BODY(type, name, "r"(__r0), "r"(__r1), "r"(__r2), "r"(__r3),      \
+                             "r"(__r4), "r"(__r5));                           \
+      }
+    LSS_INLINE int LSS_NAME(clone)(int (*fn)(void *), void *child_stack,
+                                   int flags, void *arg, int *parent_tidptr,
+                                   void *newtls, int *child_tidptr) {
+      long __res;
+      {
+        register int   __flags __asm__("r0") = flags;
+        register void *__stack __asm__("r1") = child_stack;
+        register void *__ptid  __asm__("r2") = parent_tidptr;
+        register void *__tls   __asm__("r3") = newtls;
+        register int  *__ctid  __asm__("r4") = child_tidptr;
+        __asm__ __volatile__(/* if (fn == NULL || child_stack == NULL)
+                              *   return -EINVAL;
+                              */
+#ifdef __thumb2__
+                             "push  {r7}\n"
+#endif
+                             "cmp   %2,#0\n"
+                             "it    ne\n"
+                             "cmpne %3,#0\n"
+                             "it    eq\n"
+                             "moveq %0,%1\n"
+                             "beq   1f\n"
+
+                             /* Push "arg" and "fn" onto the stack that will be
+                              * used by the child.
+                              */
+                             "str   %5,[%3,#-4]!\n"
+                             "str   %2,[%3,#-4]!\n"
+
+                             /* %r0 = syscall(%r0 = flags,
+                              *               %r1 = child_stack,
+                              *               %r2 = parent_tidptr,
+                              *               %r3 = newtls,
+                              *               %r4 = child_tidptr)
+                              */
+                             "mov r7, %9\n"
+                             "swi 0x0\n"
+
+                             /* if (%r0 != 0)
+                              *   return %r0;
+                              */
+                             "movs  %0,r0\n"
+                             "bne   1f\n"
+
+                             /* In the child, now. Call "fn(arg)".
+                              */
+                             "ldr   r0,[sp, #4]\n"
+
+                             /* When compiling for Thumb-2 the "MOV LR,PC" here
+                              * won't work because it loads PC+4 into LR,
+                              * whereas the LDR is a 4-byte instruction.
+                              * This results in the child thread always
+                              * crashing with an "Illegal Instruction" when it
+                              * returned into the middle of the LDR instruction
+                              * The instruction sequence used instead was
+                              * recommended by
+                              * "https://wiki.edubuntu.org/ARM/Thumb2PortingHowto#Quick_Reference".
+                              */
+                           #ifdef __thumb2__
+                             "ldr   r7,[sp]\n"
+                             "blx   r7\n"
+                           #else
+                             "mov   lr,pc\n"
+                             "ldr   pc,[sp]\n"
+                           #endif
+
+                             /* Call _exit(%r0).
+                              */
+                             "mov r7, %10\n"
+                             "swi 0x0\n"
+                           "1:\n"
+#ifdef __thumb2__
+                             "pop {r7}"
+#endif
+                             : "=r" (__res)
+                             : "i"(-EINVAL),
+                               "r"(fn), "r"(__stack), "r"(__flags), "r"(arg),
+                               "r"(__ptid), "r"(__tls), "r"(__ctid),
+                               "i"(__NR_clone), "i"(__NR_exit)
+#ifdef __thumb2__
+                             : "cc", "lr", "memory");
+#else
+                             : "cc", "r7", "lr", "memory");
+#endif
+      }
+      LSS_RETURN(int, __res);
+    }
+  #elif defined(__aarch64__)
+    /* Most definitions of _syscallX() neglect to mark "memory" as being
+     * clobbered. This causes problems with compilers, that do a better job
+     * at optimizing across __asm__ calls.
+     * So, we just have to redefine all of the _syscallX() macros.
+     */
+    #undef LSS_REG
+    #define LSS_REG(r,a) register int64_t __r##r __asm__("x"#r) = (int64_t)a
+    #undef  LSS_BODY
+    #define LSS_BODY(type,name,args...)                                       \
+          register int64_t __res_x0 __asm__("x0");                            \
+          int64_t __res;                                                      \
+          __asm__ __volatile__ ("mov x8, %1\n"                                \
+                                "svc 0x0\n"                                   \
+                                : "=r"(__res_x0)                              \
+                                : "i"(__NR_##name) , ## args                  \
+                                : "x8", "memory");                            \
+          __res = __res_x0;                                                   \
+          LSS_RETURN(type, __res)
+    #undef _syscall0
+    #define _syscall0(type, name)                                             \
+      type LSS_NAME(name)(void) {                                             \
+        LSS_BODY(type, name);                                                 \
+      }
+    #undef _syscall1
+    #define _syscall1(type, name, type1, arg1)                                \
+      type LSS_NAME(name)(type1 arg1) {                                       \
+        LSS_REG(0, arg1); LSS_BODY(type, name, "r"(__r0));                    \
+      }
+    #undef _syscall2
+    #define _syscall2(type, name, type1, arg1, type2, arg2)                   \
+      type LSS_NAME(name)(type1 arg1, type2 arg2) {                           \
+        LSS_REG(0, arg1); LSS_REG(1, arg2);                                   \
+        LSS_BODY(type, name, "r"(__r0), "r"(__r1));                           \
+      }
+    #undef _syscall3
+    #define _syscall3(type, name, type1, arg1, type2, arg2, type3, arg3)      \
+      type LSS_NAME(name)(type1 arg1, type2 arg2, type3 arg3) {               \
+        LSS_REG(0, arg1); LSS_REG(1, arg2); LSS_REG(2, arg3);                 \
+        LSS_BODY(type, name, "r"(__r0), "r"(__r1), "r"(__r2));                \
+      }
+    #undef _syscall4
+    #define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4)  \
+      type LSS_NAME(name)(type1 arg1, type2 arg2, type3 arg3, type4 arg4) {   \
+        LSS_REG(0, arg1); LSS_REG(1, arg2); LSS_REG(2, arg3);                 \
+        LSS_REG(3, arg4);                                                     \
+        LSS_BODY(type, name, "r"(__r0), "r"(__r1), "r"(__r2), "r"(__r3));     \
+      }
+    #undef _syscall5
+    #define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,  \
+                      type5,arg5)                                             \
+      type LSS_NAME(name)(type1 arg1, type2 arg2, type3 arg3, type4 arg4,     \
+                          type5 arg5) {                                       \
+        LSS_REG(0, arg1); LSS_REG(1, arg2); LSS_REG(2, arg3);                 \
+        LSS_REG(3, arg4); LSS_REG(4, arg5);                                   \
+        LSS_BODY(type, name, "r"(__r0), "r"(__r1), "r"(__r2), "r"(__r3),      \
+                             "r"(__r4));                                      \
+      }
+    #undef _syscall6
+    #define _syscall6(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,  \
+                      type5,arg5,type6,arg6)                                  \
+      type LSS_NAME(name)(type1 arg1, type2 arg2, type3 arg3, type4 arg4,     \
+                          type5 arg5, type6 arg6) {                           \
+        LSS_REG(0, arg1); LSS_REG(1, arg2); LSS_REG(2, arg3);                 \
+        LSS_REG(3, arg4); LSS_REG(4, arg5); LSS_REG(5, arg6);                 \
+        LSS_BODY(type, name, "r"(__r0), "r"(__r1), "r"(__r2), "r"(__r3),      \
+                             "r"(__r4), "r"(__r5));                           \
+      }
+
+    LSS_INLINE int LSS_NAME(clone)(int (*fn)(void *), void *child_stack,
+                                   int flags, void *arg, int *parent_tidptr,
+                                   void *newtls, int *child_tidptr) {
+      int64_t __res;
+      {
+        register uint64_t __flags __asm__("x0") = flags;
+        register void *__stack __asm__("x1") = child_stack;
+        register void *__ptid  __asm__("x2") = parent_tidptr;
+        register void *__tls   __asm__("x3") = newtls;
+        register int  *__ctid  __asm__("x4") = child_tidptr;
+        __asm__ __volatile__(/* Push "arg" and "fn" onto the stack that will be
+                              * used by the child.
+                              */
+                             "stp     %1, %4, [%2, #-16]!\n"
+
+                             /* %x0 = syscall(%x0 = flags,
+                              *               %x1 = child_stack,
+                              *               %x2 = parent_tidptr,
+                              *               %x3 = newtls,
+                              *               %x4 = child_tidptr)
+                              */
+                             "mov     x8, %8\n"
+                             "svc     0x0\n"
+
+                             /* if (%r0 != 0)
+                              *   return %r0;
+                              */
+                             "mov     %0, x0\n"
+                             "cbnz    x0, 1f\n"
+
+                             /* In the child, now. Call "fn(arg)".
+                              */
+                             "ldp     x1, x0, [sp], #16\n"
+                             "blr     x1\n"
+
+                             /* Call _exit(%r0).
+                              */
+                             "mov     x8, %9\n"
+                             "svc     0x0\n"
+                           "1:\n"
+                             : "=r" (__res)
+                             : "r"(fn), "r"(__stack), "r"(__flags), "r"(arg),
+                               "r"(__ptid), "r"(__tls), "r"(__ctid),
+                               "i"(__NR_clone), "i"(__NR_exit)
+                             : "cc", "x8", "memory");
+      }
+      LSS_RETURN(int, __res);
+    }
+  #elif defined(__mips__)
+    #undef LSS_REG
+    #define LSS_REG(r,a) register unsigned long __r##r __asm__("$"#r) =       \
+                                 (unsigned long)(a)
+    #undef  LSS_BODY
+    #undef LSS_SYSCALL_CLOBBERS
+    #if _MIPS_SIM == _MIPS_SIM_ABI32
+    #define LSS_SYSCALL_CLOBBERS "$1", "$3", "$8", "$9", "$10",               \
+                                 "$11", "$12", "$13", "$14", "$15",           \
+                                 "$24", "$25", "hi", "lo", "memory"
+    #else
+    #define LSS_SYSCALL_CLOBBERS "$1", "$3", "$10", "$11", "$12",             \
+                                 "$13", "$14", "$15", "$24", "$25",           \
+                                 "hi", "lo", "memory"
+    #endif
+    #define LSS_BODY(type,name,r7,...)                                        \
+          register unsigned long __v0 __asm__("$2") = __NR_##name;            \
+          __asm__ __volatile__ ("syscall\n"                                   \
+                                : "=r"(__v0), r7 (__r7)                       \
+                                : "0"(__v0), ##__VA_ARGS__                    \
+                                : LSS_SYSCALL_CLOBBERS);                      \
+          LSS_RETURN(type, __v0, __r7)
+    #undef _syscall0
+    #define _syscall0(type, name)                                             \
+      type LSS_NAME(name)(void) {                                             \
+        register unsigned long __r7 __asm__("$7");                            \
+        LSS_BODY(type, name, "=r");                                           \
+      }
+    #undef _syscall1
+    #define _syscall1(type, name, type1, arg1)                                \
+      type LSS_NAME(name)(type1 arg1) {                                       \
+        register unsigned long __r7 __asm__("$7");                            \
+        LSS_REG(4, arg1); LSS_BODY(type, name, "=r", "r"(__r4));              \
+      }
+    #undef _syscall2
+    #define _syscall2(type, name, type1, arg1, type2, arg2)                   \
+      type LSS_NAME(name)(type1 arg1, type2 arg2) {                           \
+        register unsigned long __r7 __asm__("$7");                            \
+        LSS_REG(4, arg1); LSS_REG(5, arg2);                                   \
+        LSS_BODY(type, name, "=r", "r"(__r4), "r"(__r5));                     \
+      }
+    #undef _syscall3
+    #define _syscall3(type, name, type1, arg1, type2, arg2, type3, arg3)      \
+      type LSS_NAME(name)(type1 arg1, type2 arg2, type3 arg3) {               \
+        register unsigned long __r7 __asm__("$7");                            \
+        LSS_REG(4, arg1); LSS_REG(5, arg2); LSS_REG(6, arg3);                 \
+        LSS_BODY(type, name, "=r", "r"(__r4), "r"(__r5), "r"(__r6));          \
+      }
+    #undef _syscall4
+    #define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4)  \
+      type LSS_NAME(name)(type1 arg1, type2 arg2, type3 arg3, type4 arg4) {   \
+        LSS_REG(4, arg1); LSS_REG(5, arg2); LSS_REG(6, arg3);                 \
+        LSS_REG(7, arg4);                                                     \
+        LSS_BODY(type, name, "+r", "r"(__r4), "r"(__r5), "r"(__r6));          \
+      }
+    #undef _syscall5
+    #if _MIPS_SIM == _MIPS_SIM_ABI32
+    /* The old 32bit MIPS system call API passes the fifth and sixth argument
+     * on the stack, whereas the new APIs use registers "r8" and "r9".
+     */
+    #define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,  \
+                      type5,arg5)                                             \
+      type LSS_NAME(name)(type1 arg1, type2 arg2, type3 arg3, type4 arg4,     \
+                          type5 arg5) {                                       \
+        LSS_REG(4, arg1); LSS_REG(5, arg2); LSS_REG(6, arg3);                 \
+        LSS_REG(7, arg4);                                                     \
+        register unsigned long __v0 __asm__("$2") = __NR_##name;              \
+        __asm__ __volatile__ (".set noreorder\n"                              \
+                              "subu  $29, 32\n"                               \
+                              "sw    %5, 16($29)\n"                           \
+                              "syscall\n"                                     \
+                              "addiu $29, 32\n"                               \
+                              ".set reorder\n"                                \
+                              : "+r"(__v0), "+r" (__r7)                       \
+                              : "r"(__r4), "r"(__r5),                         \
+                                "r"(__r6), "r" ((unsigned long)arg5)          \
+                              : "$8", "$9", "$10", "$11", "$12",              \
+                                "$13", "$14", "$15", "$24", "$25",            \
+                                "memory");                                    \
+        LSS_RETURN(type, __v0, __r7);                                         \
+      }
+    #else
+    #define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,  \
+                      type5,arg5)                                             \
+      type LSS_NAME(name)(type1 arg1, type2 arg2, type3 arg3, type4 arg4,     \
+                          type5 arg5) {                                       \
+        LSS_REG(4, arg1); LSS_REG(5, arg2); LSS_REG(6, arg3);                 \
+        LSS_REG(7, arg4); LSS_REG(8, arg5);                                   \
+        LSS_BODY(type, name, "+r", "r"(__r4), "r"(__r5), "r"(__r6),           \
+                 "r"(__r8));                                                  \
+      }
+    #endif
+    #undef _syscall6
+    #if _MIPS_SIM == _MIPS_SIM_ABI32
+    /* The old 32bit MIPS system call API passes the fifth and sixth argument
+     * on the stack, whereas the new APIs use registers "r8" and "r9".
+     */
+    #define _syscall6(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,  \
+                      type5,arg5,type6,arg6)                                  \
+      type LSS_NAME(name)(type1 arg1, type2 arg2, type3 arg3, type4 arg4,     \
+                          type5 arg5, type6 arg6) {                           \
+        LSS_REG(4, arg1); LSS_REG(5, arg2); LSS_REG(6, arg3);                 \
+        LSS_REG(7, arg4);                                                     \
+        register unsigned long __v0 __asm__("$2") = __NR_##name;              \
+        __asm__ __volatile__ (".set noreorder\n"                              \
+                              "subu  $29, 32\n"                               \
+                              "sw    %5, 16($29)\n"                           \
+                              "sw    %6, 20($29)\n"                           \
+                              "syscall\n"                                     \
+                              "addiu $29, 32\n"                               \
+                              ".set reorder\n"                                \
+                              : "+r"(__v0), "+r" (__r7)                       \
+                              : "r"(__r4), "r"(__r5),                         \
+                                "r"(__r6), "r" ((unsigned long)arg5),         \
+                                "r" ((unsigned long)arg6)                     \
+                              : "$8", "$9", "$10", "$11", "$12",              \
+                                "$13", "$14", "$15", "$24", "$25",            \
+                                "memory");                                    \
+        LSS_RETURN(type, __v0, __r7);                                         \
+      }
+    #else
+    #define _syscall6(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,  \
+                      type5,arg5,type6,arg6)                                  \
+      type LSS_NAME(name)(type1 arg1, type2 arg2, type3 arg3, type4 arg4,     \
+                          type5 arg5,type6 arg6) {                            \
+        LSS_REG(4, arg1); LSS_REG(5, arg2); LSS_REG(6, arg3);                 \
+        LSS_REG(7, arg4); LSS_REG(8, arg5); LSS_REG(9, arg6);                 \
+        LSS_BODY(type, name, "+r", "r"(__r4), "r"(__r5), "r"(__r6),           \
+                 "r"(__r8), "r"(__r9));                                       \
+      }
+    #endif
+    LSS_INLINE int LSS_NAME(clone)(int (*fn)(void *), void *child_stack,
+                                   int flags, void *arg, int *parent_tidptr,
+                                   void *newtls, int *child_tidptr) {
+      register unsigned long __v0 __asm__("$2");
+      register unsigned long __r7 __asm__("$7") = (unsigned long)newtls;
+      {
+        register int   __flags __asm__("$4") = flags;
+        register void *__stack __asm__("$5") = child_stack;
+        register void *__ptid  __asm__("$6") = parent_tidptr;
+        register int  *__ctid  __asm__("$8") = child_tidptr;
+        __asm__ __volatile__(
+          #if _MIPS_SIM == _MIPS_SIM_ABI32 && _MIPS_SZPTR == 32
+                             "subu  $29,24\n"
+          #elif _MIPS_SIM == _MIPS_SIM_NABI32
+                             "sub   $29,16\n"
+          #else
+                             "dsubu $29,16\n"
+          #endif
+
+                             /* if (fn == NULL || child_stack == NULL)
+                              *   return -EINVAL;
+                              */
+                             "li    %0,%2\n"
+                             "beqz  %5,1f\n"
+                             "beqz  %6,1f\n"
+
+                             /* Push "arg" and "fn" onto the stack that will be
+                              * used by the child.
+                              */
+          #if _MIPS_SIM == _MIPS_SIM_ABI32 && _MIPS_SZPTR == 32
+                             "subu  %6,32\n"
+                             "sw    %5,0(%6)\n"
+                             "sw    %8,4(%6)\n"
+          #elif _MIPS_SIM == _MIPS_SIM_NABI32
+                             "sub   %6,32\n"
+                             "sw    %5,0(%6)\n"
+                             "sw    %8,8(%6)\n"
+          #else
+                             "dsubu %6,32\n"
+                             "sd    %5,0(%6)\n"
+                             "sd    %8,8(%6)\n"
+          #endif
+
+                             /* $7 = syscall($4 = flags,
+                              *              $5 = child_stack,
+                              *              $6 = parent_tidptr,
+                              *              $7 = newtls,
+                              *              $8 = child_tidptr)
+                              */
+                             "li    $2,%3\n"
+                             "syscall\n"
+
+                             /* if ($7 != 0)
+                              *   return $2;
+                              */
+                             "bnez  $7,1f\n"
+                             "bnez  $2,1f\n"
+
+                             /* In the child, now. Call "fn(arg)".
+                              */
+          #if _MIPS_SIM == _MIPS_SIM_ABI32 && _MIPS_SZPTR == 32
+                            "lw    $25,0($29)\n"
+                            "lw    $4,4($29)\n"
+          #elif _MIPS_SIM == _MIPS_SIM_NABI32
+                            "lw    $25,0($29)\n"
+                            "lw    $4,8($29)\n"
+          #else
+                            "ld    $25,0($29)\n"
+                            "ld    $4,8($29)\n"
+          #endif
+                            "jalr  $25\n"
+
+                             /* Call _exit($2)
+                              */
+                            "move  $4,$2\n"
+                            "li    $2,%4\n"
+                            "syscall\n"
+
+                           "1:\n"
+          #if _MIPS_SIM == _MIPS_SIM_ABI32 && _MIPS_SZPTR == 32
+                             "addu  $29, 24\n"
+          #elif _MIPS_SIM == _MIPS_SIM_NABI32
+                             "add   $29, 16\n"
+          #else
+                             "daddu $29,16\n"
+          #endif
+                             : "+r" (__v0), "+r" (__r7)
+                             : "i"(-EINVAL), "i"(__NR_clone), "i"(__NR_exit),
+                               "r"(fn), "r"(__stack), "r"(__flags), "r"(arg),
+                               "r"(__ptid), "r"(__r7), "r"(__ctid)
+                             : "$9", "$10", "$11", "$12", "$13", "$14", "$15",
+                               "$24", "$25", "memory");
+      }
+      LSS_RETURN(int, __v0, __r7);
+    }
+  #elif defined (__PPC__)
+    #undef  LSS_LOADARGS_0
+    #define LSS_LOADARGS_0(name, dummy...)                                    \
+        __sc_0 = __NR_##name
+    #undef  LSS_LOADARGS_1
+    #define LSS_LOADARGS_1(name, arg1)                                        \
+            LSS_LOADARGS_0(name);                                             \
+            __sc_3 = (unsigned long) (arg1)
+    #undef  LSS_LOADARGS_2
+    #define LSS_LOADARGS_2(name, arg1, arg2)                                  \
+            LSS_LOADARGS_1(name, arg1);                                       \
+            __sc_4 = (unsigned long) (arg2)
+    #undef  LSS_LOADARGS_3
+    #define LSS_LOADARGS_3(name, arg1, arg2, arg3)                            \
+            LSS_LOADARGS_2(name, arg1, arg2);                                 \
+            __sc_5 = (unsigned long) (arg3)
+    #undef  LSS_LOADARGS_4
+    #define LSS_LOADARGS_4(name, arg1, arg2, arg3, arg4)                      \
+            LSS_LOADARGS_3(name, arg1, arg2, arg3);                           \
+            __sc_6 = (unsigned long) (arg4)
+    #undef  LSS_LOADARGS_5
+    #define LSS_LOADARGS_5(name, arg1, arg2, arg3, arg4, arg5)                \
+            LSS_LOADARGS_4(name, arg1, arg2, arg3, arg4);                     \
+            __sc_7 = (unsigned long) (arg5)
+    #undef  LSS_LOADARGS_6
+    #define LSS_LOADARGS_6(name, arg1, arg2, arg3, arg4, arg5, arg6)          \
+            LSS_LOADARGS_5(name, arg1, arg2, arg3, arg4, arg5);               \
+            __sc_8 = (unsigned long) (arg6)
+    #undef  LSS_ASMINPUT_0
+    #define LSS_ASMINPUT_0 "0" (__sc_0)
+    #undef  LSS_ASMINPUT_1
+    #define LSS_ASMINPUT_1 LSS_ASMINPUT_0, "1" (__sc_3)
+    #undef  LSS_ASMINPUT_2
+    #define LSS_ASMINPUT_2 LSS_ASMINPUT_1, "2" (__sc_4)
+    #undef  LSS_ASMINPUT_3
+    #define LSS_ASMINPUT_3 LSS_ASMINPUT_2, "3" (__sc_5)
+    #undef  LSS_ASMINPUT_4
+    #define LSS_ASMINPUT_4 LSS_ASMINPUT_3, "4" (__sc_6)
+    #undef  LSS_ASMINPUT_5
+    #define LSS_ASMINPUT_5 LSS_ASMINPUT_4, "5" (__sc_7)
+    #undef  LSS_ASMINPUT_6
+    #define LSS_ASMINPUT_6 LSS_ASMINPUT_5, "6" (__sc_8)
+    #undef  LSS_BODY
+    #define LSS_BODY(nr, type, name, args...)                                 \
+        long __sc_ret, __sc_err;                                              \
+        {                                                                     \
+                        register unsigned long __sc_0 __asm__ ("r0");         \
+                        register unsigned long __sc_3 __asm__ ("r3");         \
+                        register unsigned long __sc_4 __asm__ ("r4");         \
+                        register unsigned long __sc_5 __asm__ ("r5");         \
+                        register unsigned long __sc_6 __asm__ ("r6");         \
+                        register unsigned long __sc_7 __asm__ ("r7");         \
+                        register unsigned long __sc_8 __asm__ ("r8");         \
+                                                                              \
+            LSS_LOADARGS_##nr(name, args);                                    \
+            __asm__ __volatile__                                              \
+                ("sc\n\t"                                                     \
+                 "mfcr %0"                                                    \
+                 : "=&r" (__sc_0),                                            \
+                   "=&r" (__sc_3), "=&r" (__sc_4),                            \
+                   "=&r" (__sc_5), "=&r" (__sc_6),                            \
+                   "=&r" (__sc_7), "=&r" (__sc_8)                             \
+                 : LSS_ASMINPUT_##nr                                          \
+                 : "cr0", "ctr", "memory",                                    \
+                   "r9", "r10", "r11", "r12");                                \
+            __sc_ret = __sc_3;                                                \
+            __sc_err = __sc_0;                                                \
+        }                                                                     \
+        LSS_RETURN(type, __sc_ret, __sc_err)
+    #undef _syscall0
+    #define _syscall0(type, name)                                             \
+       type LSS_NAME(name)(void) {                                            \
+          LSS_BODY(0, type, name);                                            \
+       }
+    #undef _syscall1
+    #define _syscall1(type, name, type1, arg1)                                \
+       type LSS_NAME(name)(type1 arg1) {                                      \
+          LSS_BODY(1, type, name, arg1);                                      \
+       }
+    #undef _syscall2
+    #define _syscall2(type, name, type1, arg1, type2, arg2)                   \
+       type LSS_NAME(name)(type1 arg1, type2 arg2) {                          \
+          LSS_BODY(2, type, name, arg1, arg2);                                \
+       }
+    #undef _syscall3
+    #define _syscall3(type, name, type1, arg1, type2, arg2, type3, arg3)      \
+       type LSS_NAME(name)(type1 arg1, type2 arg2, type3 arg3) {              \
+          LSS_BODY(3, type, name, arg1, arg2, arg3);                          \
+       }
+    #undef _syscall4
+    #define _syscall4(type, name, type1, arg1, type2, arg2, type3, arg3,      \
+                                  type4, arg4)                                \
+       type LSS_NAME(name)(type1 arg1, type2 arg2, type3 arg3, type4 arg4) {  \
+          LSS_BODY(4, type, name, arg1, arg2, arg3, arg4);                    \
+       }
+    #undef _syscall5
+    #define _syscall5(type, name, type1, arg1, type2, arg2, type3, arg3,      \
+                                  type4, arg4, type5, arg5)                   \
+       type LSS_NAME(name)(type1 arg1, type2 arg2, type3 arg3, type4 arg4,    \
+                                               type5 arg5) {                  \
+          LSS_BODY(5, type, name, arg1, arg2, arg3, arg4, arg5);              \
+       }
+    #undef _syscall6
+    #define _syscall6(type, name, type1, arg1, type2, arg2, type3, arg3,      \
+                                  type4, arg4, type5, arg5, type6, arg6)      \
+       type LSS_NAME(name)(type1 arg1, type2 arg2, type3 arg3, type4 arg4,    \
+                                               type5 arg5, type6 arg6) {      \
+          LSS_BODY(6, type, name, arg1, arg2, arg3, arg4, arg5, arg6);        \
+       }
+    /* clone function adapted from glibc 2.3.6 clone.S                       */
+    /* TODO(csilvers): consider wrapping some args up in a struct, like we
+     * do for i386's _syscall6, so we can compile successfully on gcc 2.95
+     */
+    LSS_INLINE int LSS_NAME(clone)(int (*fn)(void *), void *child_stack,
+                                   int flags, void *arg, int *parent_tidptr,
+                                   void *newtls, int *child_tidptr) {
+      long __ret, __err;
+      {
+        register int (*__fn)(void *)    __asm__ ("r8")  = fn;
+        register void *__cstack                 __asm__ ("r4")  = child_stack;
+        register int __flags                    __asm__ ("r3")  = flags;
+        register void * __arg                   __asm__ ("r9")  = arg;
+        register int * __ptidptr                __asm__ ("r5")  = parent_tidptr;
+        register void * __newtls                __asm__ ("r6")  = newtls;
+        register int * __ctidptr                __asm__ ("r7")  = child_tidptr;
+        __asm__ __volatile__(
+            /* check for fn == NULL
+             * and child_stack == NULL
+             */
+            "cmpwi cr0, %6, 0\n\t"
+            "cmpwi cr1, %7, 0\n\t"
+            "cror cr0*4+eq, cr1*4+eq, cr0*4+eq\n\t"
+            "beq- cr0, 1f\n\t"
+
+            /* set up stack frame for child                                  */
+            "clrrwi %7, %7, 4\n\t"
+            "li 0, 0\n\t"
+            "stwu 0, -16(%7)\n\t"
+
+            /* fn, arg, child_stack are saved across the syscall: r28-30     */
+            "mr 28, %6\n\t"
+            "mr 29, %7\n\t"
+            "mr 27, %9\n\t"
+
+            /* syscall                                                       */
+            "li 0, %4\n\t"
+            /* flags already in r3
+             * child_stack already in r4
+             * ptidptr already in r5
+             * newtls already in r6
+             * ctidptr already in r7
+             */
+            "sc\n\t"
+
+            /* Test if syscall was successful                                */
+            "cmpwi cr1, 3, 0\n\t"
+            "crandc cr1*4+eq, cr1*4+eq, cr0*4+so\n\t"
+            "bne- cr1, 1f\n\t"
+
+            /* Do the function call                                          */
+            "mtctr 28\n\t"
+            "mr 3, 27\n\t"
+            "bctrl\n\t"
+
+            /* Call _exit(r3)                                                */
+            "li 0, %5\n\t"
+            "sc\n\t"
+
+            /* Return to parent                                              */
+            "1:\n"
+            "mfcr %1\n\t"
+            "mr %0, 3\n\t"
+              : "=r" (__ret), "=r" (__err)
+              : "0" (-1), "1" (EINVAL),
+                "i" (__NR_clone), "i" (__NR_exit),
+                "r" (__fn), "r" (__cstack), "r" (__flags),
+                "r" (__arg), "r" (__ptidptr), "r" (__newtls),
+                "r" (__ctidptr)
+              : "cr0", "cr1", "memory", "ctr",
+                "r0", "r29", "r27", "r28");
+      }
+      LSS_RETURN(int, __ret, __err);
+    }
+  #endif
+  #define __NR__exit   __NR_exit
+  #define __NR__gettid __NR_gettid
+  #define __NR__mremap __NR_mremap
+  LSS_INLINE _syscall1(void *,  brk,             void *,      e)
+  LSS_INLINE _syscall1(int,     chdir,           const char *,p)
+  LSS_INLINE _syscall1(int,     close,           int,         f)
+  LSS_INLINE _syscall2(int,     clock_getres,    int,         c,
+                       struct kernel_timespec*, t)
+  LSS_INLINE _syscall2(int,     clock_gettime,   int,         c,
+                       struct kernel_timespec*, t)
+  LSS_INLINE _syscall1(int,     dup,             int,         f)
+  #if !defined(__aarch64__)
+    // The dup2 syscall has been deprecated on aarch64. We polyfill it below.
+    LSS_INLINE _syscall2(int,     dup2,            int,         s,
+                         int,            d)
+  #endif
+  LSS_INLINE _syscall3(int,     execve,          const char*, f,
+                       const char*const*,a,const char*const*, e)
+  LSS_INLINE _syscall1(int,     _exit,           int,         e)
+  LSS_INLINE _syscall1(int,     exit_group,      int,         e)
+  LSS_INLINE _syscall3(int,     fcntl,           int,         f,
+                       int,            c, long,   a)
+  #if !defined(__aarch64__)
+    // The fork syscall has been deprecated on aarch64. We polyfill it below.
+    LSS_INLINE _syscall0(pid_t,   fork)
+  #endif
+  LSS_INLINE _syscall2(int,     fstat,           int,         f,
+                      struct kernel_stat*,   b)
+  LSS_INLINE _syscall2(int,     fstatfs,         int,         f,
+                      struct kernel_statfs*, b)
+  #if defined(__x86_64__)
+    /* Need to make sure off_t isn't truncated to 32-bits under x32.  */
+    LSS_INLINE int LSS_NAME(ftruncate)(int f, off_t l) {
+      LSS_BODY(2, int, ftruncate, LSS_SYSCALL_ARG(f), (uint64_t)(l));
+    }
+  #else
+    LSS_INLINE _syscall2(int, ftruncate,           int,         f,
+                         off_t,          l)
+  #endif
+  LSS_INLINE _syscall4(int,     futex,           int*,        a,
+                       int,            o, int,    v,
+                      struct kernel_timespec*, t)
+  LSS_INLINE _syscall3(int,     getdents,        int,         f,
+                       struct kernel_dirent*, d, int,    c)
+  LSS_INLINE _syscall3(int,     getdents64,      int,         f,
+                      struct kernel_dirent64*, d, int,    c)
+  LSS_INLINE _syscall0(gid_t,   getegid)
+  LSS_INLINE _syscall0(uid_t,   geteuid)
+  #if !defined(__aarch64__)
+    // The getgprp syscall has been deprecated on aarch64.
+    LSS_INLINE _syscall0(pid_t,   getpgrp)
+  #endif
+  LSS_INLINE _syscall0(pid_t,   getpid)
+  LSS_INLINE _syscall0(pid_t,   getppid)
+  LSS_INLINE _syscall2(int,     getpriority,     int,         a,
+                       int,            b)
+  LSS_INLINE _syscall3(int,     getresgid,       gid_t *,     r,
+                       gid_t *,         e,       gid_t *,     s)
+  LSS_INLINE _syscall3(int,     getresuid,       uid_t *,     r,
+                       uid_t *,         e,       uid_t *,     s)
+#if !defined(__ARM_EABI__)
+  LSS_INLINE _syscall2(int,     getrlimit,       int,         r,
+                      struct kernel_rlimit*, l)
+#endif
+  LSS_INLINE _syscall1(pid_t,   getsid,          pid_t,       p)
+  LSS_INLINE _syscall0(pid_t,   _gettid)
+  LSS_INLINE _syscall2(pid_t,   gettimeofday,    struct kernel_timeval*, t,
+                       void*, tz)
+  LSS_INLINE _syscall5(int,     setxattr,        const char *,p,
+                       const char *,   n,        const void *,v,
+                       size_t,         s,        int,         f)
+  LSS_INLINE _syscall5(int,     lsetxattr,       const char *,p,
+                       const char *,   n,        const void *,v,
+                       size_t,         s,        int,         f)
+  LSS_INLINE _syscall4(ssize_t, getxattr,        const char *,p,
+                       const char *,   n,        void *,      v, size_t, s)
+  LSS_INLINE _syscall4(ssize_t, lgetxattr,       const char *,p,
+                       const char *,   n,        void *,      v, size_t, s)
+  LSS_INLINE _syscall3(ssize_t, listxattr,       const char *,p,
+                       char *,   l,              size_t,      s)
+  LSS_INLINE _syscall3(ssize_t, llistxattr,      const char *,p,
+                       char *,   l,              size_t,      s)
+  LSS_INLINE _syscall3(int,     ioctl,           int,         d,
+                       int,     r,               void *,      a)
+  LSS_INLINE _syscall2(int,     ioprio_get,      int,         which,
+                       int,     who)
+  LSS_INLINE _syscall3(int,     ioprio_set,      int,         which,
+                       int,     who,             int,         ioprio)
+  LSS_INLINE _syscall2(int,     kill,            pid_t,       p,
+                       int,            s)
+  #if defined(__x86_64__)
+    /* Need to make sure off_t isn't truncated to 32-bits under x32.  */
+    LSS_INLINE off_t LSS_NAME(lseek)(int f, off_t o, int w) {
+      _LSS_BODY(3, off_t, lseek, off_t, LSS_SYSCALL_ARG(f), (uint64_t)(o),
+                                        LSS_SYSCALL_ARG(w));
+    }
+  #else
+    LSS_INLINE _syscall3(off_t,   lseek,           int,         f,
+                         off_t,          o, int,    w)
+  #endif
+  LSS_INLINE _syscall2(int,     munmap,          void*,       s,
+                       size_t,         l)
+  LSS_INLINE _syscall6(long,    move_pages,      pid_t,       p,
+                       unsigned long,  n, void **,g, int *,   d,
+                       int *,          s, int,    f)
+  LSS_INLINE _syscall3(int,     mprotect,        const void *,a,
+                       size_t,         l,        int,         p)
+  LSS_INLINE _syscall5(void*,   _mremap,         void*,       o,
+                       size_t,         os,       size_t,      ns,
+                       unsigned long,  f, void *, a)
+  #if !defined(__aarch64__)
+    // The open and poll syscalls have been deprecated on aarch64. We polyfill
+    // them below.
+    LSS_INLINE _syscall3(int,     open,            const char*, p,
+                         int,            f, int,    m)
+    LSS_INLINE _syscall3(int,     poll,           struct kernel_pollfd*, u,
+                         unsigned int,   n, int,    t)
+  #endif
+  LSS_INLINE _syscall5(int,     prctl,           int,         option,
+                       unsigned long,  arg2,
+                       unsigned long,  arg3,
+                       unsigned long,  arg4,
+                       unsigned long,  arg5)
+  LSS_INLINE _syscall4(long,    ptrace,          int,         r,
+                       pid_t,          p, void *, a, void *, d)
+  #if defined(__NR_quotactl)
+    // Defined on x86_64 / i386 only
+    LSS_INLINE _syscall4(int,  quotactl,  int,  cmd,  const char *, special,
+                         int, id, caddr_t, addr)
+  #endif
+  LSS_INLINE _syscall3(ssize_t, read,            int,         f,
+                       void *,         b, size_t, c)
+  #if !defined(__aarch64__)
+    // The readlink syscall has been deprecated on aarch64. We polyfill below.
+    LSS_INLINE _syscall3(int,     readlink,        const char*, p,
+                         char*,          b, size_t, s)
+  #endif
+  LSS_INLINE _syscall4(int,     rt_sigaction,    int,         s,
+                       const struct kernel_sigaction*, a,
+                       struct kernel_sigaction*, o, size_t,   c)
+  LSS_INLINE _syscall2(int, rt_sigpending, struct kernel_sigset_t *, s,
+                       size_t,         c)
+  LSS_INLINE _syscall4(int, rt_sigprocmask,      int,         h,
+                       const struct kernel_sigset_t*,  s,
+                       struct kernel_sigset_t*,        o, size_t, c)
+  LSS_INLINE _syscall2(int, rt_sigsuspend,
+                       const struct kernel_sigset_t*, s,  size_t, c)
+  LSS_INLINE _syscall3(int,     sched_getaffinity,pid_t,      p,
+                       unsigned int,   l, unsigned long *, m)
+  LSS_INLINE _syscall3(int,     sched_setaffinity,pid_t,      p,
+                       unsigned int,   l, unsigned long *, m)
+  LSS_INLINE _syscall0(int,     sched_yield)
+  LSS_INLINE _syscall1(long,    set_tid_address, int *,       t)
+  LSS_INLINE _syscall1(int,     setfsgid,        gid_t,       g)
+  LSS_INLINE _syscall1(int,     setfsuid,        uid_t,       u)
+  LSS_INLINE _syscall1(int,     setuid,          uid_t,       u)
+  LSS_INLINE _syscall1(int,     setgid,          gid_t,       g)
+  LSS_INLINE _syscall2(int,     setpgid,         pid_t,       p,
+                       pid_t,          g)
+  LSS_INLINE _syscall3(int,     setpriority,     int,         a,
+                       int,            b, int,    p)
+  LSS_INLINE _syscall3(int,     setresgid,       gid_t,       r,
+                       gid_t,          e, gid_t,  s)
+  LSS_INLINE _syscall3(int,     setresuid,       uid_t,       r,
+                       uid_t,          e, uid_t,  s)
+  LSS_INLINE _syscall2(int,     setrlimit,       int,         r,
+                       const struct kernel_rlimit*, l)
+  LSS_INLINE _syscall0(pid_t,    setsid)
+  LSS_INLINE _syscall2(int,     sigaltstack,     const stack_t*, s,
+                       const stack_t*, o)
+  #if defined(__NR_sigreturn)
+    LSS_INLINE _syscall1(int,     sigreturn,       unsigned long, u)
+  #endif
+  #if !defined(__aarch64__)
+    // The stat syscall has been deprecated on aarch64. We polyfill it below.
+    LSS_INLINE _syscall2(int,     stat,            const char*, f,
+                        struct kernel_stat*,   b)
+  #endif
+  LSS_INLINE _syscall2(int,     statfs,          const char*, f,
+                      struct kernel_statfs*, b)
+  LSS_INLINE _syscall3(int,     tgkill,          pid_t,       p,
+                       pid_t,          t, int,            s)
+  LSS_INLINE _syscall2(int,     tkill,           pid_t,       p,
+                       int,            s)
+  #if !defined(__aarch64__)
+    // The unlink syscall has been deprecated on aarch64. We polyfill it below.
+    LSS_INLINE _syscall1(int,     unlink,           const char*, f)
+  #endif
+  LSS_INLINE _syscall3(ssize_t, write,            int,        f,
+                       const void *,   b, size_t, c)
+  LSS_INLINE _syscall3(ssize_t, writev,           int,        f,
+                       const struct kernel_iovec*, v, size_t, c)
+  #if defined(__NR_getcpu)
+    LSS_INLINE _syscall3(long, getcpu, unsigned *, cpu,
+                         unsigned *, node, void *, unused)
+  #endif
+  #if defined(__x86_64__) ||                                                  \
+     (defined(__mips__) && _MIPS_SIM != _MIPS_SIM_ABI32)
+    LSS_INLINE _syscall3(int, recvmsg,            int,   s,
+                        struct kernel_msghdr*,     m, int, f)
+    LSS_INLINE _syscall3(int, sendmsg,            int,   s,
+                         const struct kernel_msghdr*, m, int, f)
+    LSS_INLINE _syscall6(int, sendto,             int,   s,
+                         const void*,             m, size_t, l,
+                         int,                     f,
+                         const struct kernel_sockaddr*, a, int, t)
+    LSS_INLINE _syscall2(int, shutdown,           int,   s,
+                         int,                     h)
+    LSS_INLINE _syscall3(int, socket,             int,   d,
+                         int,                     t, int,       p)
+    LSS_INLINE _syscall4(int, socketpair,         int,   d,
+                         int,                     t, int,       p, int*, s)
+  #endif
+  #if defined(__x86_64__)
+    /* Need to make sure loff_t isn't truncated to 32-bits under x32.  */
+    LSS_INLINE int LSS_NAME(fallocate)(int f, int mode, loff_t offset,
+                                       loff_t len) {
+      LSS_BODY(4, int, fallocate, LSS_SYSCALL_ARG(f), LSS_SYSCALL_ARG(mode),
+                                  (uint64_t)(offset), (uint64_t)(len));
+    }
+
+    LSS_INLINE int LSS_NAME(getresgid32)(gid_t *rgid,
+                                         gid_t *egid,
+                                         gid_t *sgid) {
+      return LSS_NAME(getresgid)(rgid, egid, sgid);
+    }
+
+    LSS_INLINE int LSS_NAME(getresuid32)(uid_t *ruid,
+                                         uid_t *euid,
+                                         uid_t *suid) {
+      return LSS_NAME(getresuid)(ruid, euid, suid);
+    }
+
+    /* Need to make sure __off64_t isn't truncated to 32-bits under x32.  */
+    LSS_INLINE void* LSS_NAME(mmap)(void *s, size_t l, int p, int f, int d,
+                                    int64_t o) {
+      LSS_BODY(6, void*, mmap, LSS_SYSCALL_ARG(s), LSS_SYSCALL_ARG(l),
+                               LSS_SYSCALL_ARG(p), LSS_SYSCALL_ARG(f),
+                               LSS_SYSCALL_ARG(d), (uint64_t)(o));
+    }
+
+    LSS_INLINE _syscall4(int, newfstatat,         int,   d,
+                         const char *,            p,
+                        struct kernel_stat*,       b, int, f)
+
+    LSS_INLINE int LSS_NAME(setfsgid32)(gid_t gid) {
+      return LSS_NAME(setfsgid)(gid);
+    }
+
+    LSS_INLINE int LSS_NAME(setfsuid32)(uid_t uid) {
+      return LSS_NAME(setfsuid)(uid);
+    }
+
+    LSS_INLINE int LSS_NAME(setresgid32)(gid_t rgid, gid_t egid, gid_t sgid) {
+      return LSS_NAME(setresgid)(rgid, egid, sgid);
+    }
+
+    LSS_INLINE int LSS_NAME(setresuid32)(uid_t ruid, uid_t euid, uid_t suid) {
+      return LSS_NAME(setresuid)(ruid, euid, suid);
+    }
+
+    LSS_INLINE int LSS_NAME(sigaction)(int signum,
+                                       const struct kernel_sigaction *act,
+                                       struct kernel_sigaction *oldact) {
+      /* On x86_64, the kernel requires us to always set our own
+       * SA_RESTORER in order to be able to return from a signal handler.
+       * This function must have a "magic" signature that the "gdb"
+       * (and maybe the kernel?) can recognize.
+       */
+      if (act != NULL && !(act->sa_flags & SA_RESTORER)) {
+        struct kernel_sigaction a = *act;
+        a.sa_flags   |= SA_RESTORER;
+        a.sa_restorer = LSS_NAME(restore_rt)();
+        return LSS_NAME(rt_sigaction)(signum, &a, oldact,
+                                      (KERNEL_NSIG+7)/8);
+      } else {
+        return LSS_NAME(rt_sigaction)(signum, act, oldact,
+                                      (KERNEL_NSIG+7)/8);
+      }
+    }
+
+    LSS_INLINE int LSS_NAME(sigpending)(struct kernel_sigset_t *set) {
+      return LSS_NAME(rt_sigpending)(set, (KERNEL_NSIG+7)/8);
+    }
+
+    LSS_INLINE int LSS_NAME(sigprocmask)(int how,
+                                         const struct kernel_sigset_t *set,
+                                         struct kernel_sigset_t *oldset) {
+      return LSS_NAME(rt_sigprocmask)(how, set, oldset, (KERNEL_NSIG+7)/8);
+    }
+
+    LSS_INLINE int LSS_NAME(sigsuspend)(const struct kernel_sigset_t *set) {
+      return LSS_NAME(rt_sigsuspend)(set, (KERNEL_NSIG+7)/8);
+    }
+  #endif
+  #if defined(__x86_64__) || defined(__ARM_ARCH_3__) ||                       \
+      defined(__ARM_EABI__) || defined(__aarch64__) ||                        \
+     (defined(__mips__) && _MIPS_SIM != _MIPS_SIM_ABI32)
+    LSS_INLINE _syscall4(pid_t, wait4,            pid_t, p,
+                         int*,                    s, int,       o,
+                        struct kernel_rusage*,     r)
+
+    LSS_INLINE pid_t LSS_NAME(waitpid)(pid_t pid, int *status, int options){
+      return LSS_NAME(wait4)(pid, status, options, 0);
+    }
+  #endif
+  #if defined(__i386__) || defined(__x86_64__) || defined(__aarch64__)
+    LSS_INLINE _syscall4(int, openat, int, d, const char *, p, int, f, int, m)
+    LSS_INLINE _syscall3(int, unlinkat, int, d, const char *, p, int, f)
+  #endif
+  #if defined(__i386__) || defined(__ARM_ARCH_3__) || defined(__ARM_EABI__)
+    #define __NR__getresgid32 __NR_getresgid32
+    #define __NR__getresuid32 __NR_getresuid32
+    #define __NR__setfsgid32  __NR_setfsgid32
+    #define __NR__setfsuid32  __NR_setfsuid32
+    #define __NR__setresgid32 __NR_setresgid32
+    #define __NR__setresuid32 __NR_setresuid32
+#if defined(__ARM_EABI__)
+    LSS_INLINE _syscall2(int,   ugetrlimit,        int,          r,
+                        struct kernel_rlimit*, l)
+#endif
+    LSS_INLINE _syscall3(int,     _getresgid32,    gid_t *,      r,
+                         gid_t *,            e,    gid_t *,      s)
+    LSS_INLINE _syscall3(int,     _getresuid32,    uid_t *,      r,
+                         uid_t *,            e,    uid_t *,      s)
+    LSS_INLINE _syscall1(int,     _setfsgid32,     gid_t,        f)
+    LSS_INLINE _syscall1(int,     _setfsuid32,     uid_t,        f)
+    LSS_INLINE _syscall3(int,     _setresgid32,    gid_t,        r,
+                         gid_t,              e,    gid_t,        s)
+    LSS_INLINE _syscall3(int,     _setresuid32,    uid_t,        r,
+                         uid_t,              e,    uid_t,        s)
+
+    LSS_INLINE int LSS_NAME(getresgid32)(gid_t *rgid,
+                                         gid_t *egid,
+                                         gid_t *sgid) {
+      int rc;
+      if ((rc = LSS_NAME(_getresgid32)(rgid, egid, sgid)) < 0 &&
+          LSS_ERRNO == ENOSYS) {
+        if ((rgid == NULL) || (egid == NULL) || (sgid == NULL)) {
+          return EFAULT;
+        }
+        // Clear the high bits first, since getresgid only sets 16 bits
+        *rgid = *egid = *sgid = 0;
+        rc = LSS_NAME(getresgid)(rgid, egid, sgid);
+      }
+      return rc;
+    }
+
+    LSS_INLINE int LSS_NAME(getresuid32)(uid_t *ruid,
+                                         uid_t *euid,
+                                         uid_t *suid) {
+      int rc;
+      if ((rc = LSS_NAME(_getresuid32)(ruid, euid, suid)) < 0 &&
+          LSS_ERRNO == ENOSYS) {
+        if ((ruid == NULL) || (euid == NULL) || (suid == NULL)) {
+          return EFAULT;
+        }
+        // Clear the high bits first, since getresuid only sets 16 bits
+        *ruid = *euid = *suid = 0;
+        rc = LSS_NAME(getresuid)(ruid, euid, suid);
+      }
+      return rc;
+    }
+
+    LSS_INLINE int LSS_NAME(setfsgid32)(gid_t gid) {
+      int rc;
+      if ((rc = LSS_NAME(_setfsgid32)(gid)) < 0 &&
+          LSS_ERRNO == ENOSYS) {
+        if ((unsigned int)gid & ~0xFFFFu) {
+          rc = EINVAL;
+        } else {
+          rc = LSS_NAME(setfsgid)(gid);
+        }
+      }
+      return rc;
+    }
+
+    LSS_INLINE int LSS_NAME(setfsuid32)(uid_t uid) {
+      int rc;
+      if ((rc = LSS_NAME(_setfsuid32)(uid)) < 0 &&
+          LSS_ERRNO == ENOSYS) {
+        if ((unsigned int)uid & ~0xFFFFu) {
+          rc = EINVAL;
+        } else {
+          rc = LSS_NAME(setfsuid)(uid);
+        }
+      }
+      return rc;
+    }
+
+    LSS_INLINE int LSS_NAME(setresgid32)(gid_t rgid, gid_t egid, gid_t sgid) {
+      int rc;
+      if ((rc = LSS_NAME(_setresgid32)(rgid, egid, sgid)) < 0 &&
+          LSS_ERRNO == ENOSYS) {
+        if ((unsigned int)rgid & ~0xFFFFu ||
+            (unsigned int)egid & ~0xFFFFu ||
+            (unsigned int)sgid & ~0xFFFFu) {
+          rc = EINVAL;
+        } else {
+          rc = LSS_NAME(setresgid)(rgid, egid, sgid);
+        }
+      }
+      return rc;
+    }
+
+    LSS_INLINE int LSS_NAME(setresuid32)(uid_t ruid, uid_t euid, uid_t suid) {
+      int rc;
+      if ((rc = LSS_NAME(_setresuid32)(ruid, euid, suid)) < 0 &&
+          LSS_ERRNO == ENOSYS) {
+        if ((unsigned int)ruid & ~0xFFFFu ||
+            (unsigned int)euid & ~0xFFFFu ||
+            (unsigned int)suid & ~0xFFFFu) {
+          rc = EINVAL;
+        } else {
+          rc = LSS_NAME(setresuid)(ruid, euid, suid);
+        }
+      }
+      return rc;
+    }
+  #endif
+  LSS_INLINE int LSS_NAME(sigemptyset)(struct kernel_sigset_t *set) {
+    memset(&set->sig, 0, sizeof(set->sig));
+    return 0;
+  }
+
+  LSS_INLINE int LSS_NAME(sigfillset)(struct kernel_sigset_t *set) {
+    memset(&set->sig, -1, sizeof(set->sig));
+    return 0;
+  }
+
+  LSS_INLINE int LSS_NAME(sigaddset)(struct kernel_sigset_t *set,
+                                     int signum) {
+    if (signum < 1 || signum > (int)(8*sizeof(set->sig))) {
+      LSS_ERRNO = EINVAL;
+      return -1;
+    } else {
+      set->sig[(signum - 1)/(8*sizeof(set->sig[0]))]
+          |= 1UL << ((signum - 1) % (8*sizeof(set->sig[0])));
+      return 0;
+    }
+  }
+
+  LSS_INLINE int LSS_NAME(sigdelset)(struct kernel_sigset_t *set,
+                                        int signum) {
+    if (signum < 1 || signum > (int)(8*sizeof(set->sig))) {
+      LSS_ERRNO = EINVAL;
+      return -1;
+    } else {
+      set->sig[(signum - 1)/(8*sizeof(set->sig[0]))]
+          &= ~(1UL << ((signum - 1) % (8*sizeof(set->sig[0]))));
+      return 0;
+    }
+  }
+
+  LSS_INLINE int LSS_NAME(sigismember)(struct kernel_sigset_t *set,
+                                          int signum) {
+    if (signum < 1 || signum > (int)(8*sizeof(set->sig))) {
+      LSS_ERRNO = EINVAL;
+      return -1;
+    } else {
+      return !!(set->sig[(signum - 1)/(8*sizeof(set->sig[0]))] &
+                (1UL << ((signum - 1) % (8*sizeof(set->sig[0])))));
+    }
+  }
+  #if defined(__i386__) || defined(__ARM_ARCH_3__) ||                         \
+      defined(__ARM_EABI__) ||                                             \
+     (defined(__mips__) && _MIPS_SIM == _MIPS_SIM_ABI32) || defined(__PPC__)
+    #define __NR__sigaction   __NR_sigaction
+    #define __NR__sigpending  __NR_sigpending
+    #define __NR__sigprocmask __NR_sigprocmask
+    #define __NR__sigsuspend  __NR_sigsuspend
+    #define __NR__socketcall  __NR_socketcall
+    LSS_INLINE _syscall2(int, fstat64,             int, f,
+                         struct kernel_stat64 *, b)
+    LSS_INLINE _syscall5(int, _llseek,     uint, fd,
+                         unsigned long, hi, unsigned long, lo,
+                         loff_t *, res, uint, wh)
+#if !defined(__ARM_EABI__)
+    LSS_INLINE _syscall1(void*, mmap,              void*, a)
+#endif
+    LSS_INLINE _syscall6(void*, mmap2,             void*, s,
+                         size_t,                   l, int,               p,
+                         int,                      f, int,               d,
+                         off_t,                o)
+    LSS_INLINE _syscall3(int,   _sigaction,        int,   s,
+                         const struct kernel_old_sigaction*,  a,
+                         struct kernel_old_sigaction*,        o)
+    LSS_INLINE _syscall1(int,   _sigpending, unsigned long*, s)
+    LSS_INLINE _syscall3(int,   _sigprocmask,      int,   h,
+                         const unsigned long*,     s,
+                         unsigned long*,           o)
+    #ifdef __PPC__
+    LSS_INLINE _syscall1(int, _sigsuspend,         unsigned long, s)
+    #else
+    LSS_INLINE _syscall3(int, _sigsuspend,         const void*, a,
+                         int,                      b,
+                         unsigned long,            s)
+    #endif
+    LSS_INLINE _syscall2(int, stat64,              const char *, p,
+                         struct kernel_stat64 *, b)
+
+    LSS_INLINE int LSS_NAME(sigaction)(int signum,
+                                       const struct kernel_sigaction *act,
+                                       struct kernel_sigaction *oldact) {
+      int old_errno = LSS_ERRNO;
+      int rc;
+      struct kernel_sigaction a;
+      if (act != NULL) {
+        a             = *act;
+        #ifdef __i386__
+        /* On i386, the kernel requires us to always set our own
+         * SA_RESTORER when using realtime signals. Otherwise, it does not
+         * know how to return from a signal handler. This function must have
+         * a "magic" signature that the "gdb" (and maybe the kernel?) can
+         * recognize.
+         * Apparently, a SA_RESTORER is implicitly set by the kernel, when
+         * using non-realtime signals.
+         *
+         * TODO: Test whether ARM needs a restorer
+         */
+        if (!(a.sa_flags & SA_RESTORER)) {
+          a.sa_flags   |= SA_RESTORER;
+          a.sa_restorer = (a.sa_flags & SA_SIGINFO)
+                          ? LSS_NAME(restore_rt)() : LSS_NAME(restore)();
+        }
+        #endif
+      }
+      rc = LSS_NAME(rt_sigaction)(signum, act ? &a : act, oldact,
+                                  (KERNEL_NSIG+7)/8);
+      if (rc < 0 && LSS_ERRNO == ENOSYS) {
+        struct kernel_old_sigaction oa, ooa, *ptr_a = &oa, *ptr_oa = &ooa;
+        if (!act) {
+          ptr_a            = NULL;
+        } else {
+          oa.sa_handler_   = act->sa_handler_;
+          memcpy(&oa.sa_mask, &act->sa_mask, sizeof(oa.sa_mask));
+          #ifndef __mips__
+          oa.sa_restorer   = act->sa_restorer;
+          #endif
+          oa.sa_flags      = act->sa_flags;
+        }
+        if (!oldact) {
+          ptr_oa           = NULL;
+        }
+        LSS_ERRNO = old_errno;
+        rc = LSS_NAME(_sigaction)(signum, ptr_a, ptr_oa);
+        if (rc == 0 && oldact) {
+          if (act) {
+            memcpy(oldact, act, sizeof(*act));
+          } else {
+            memset(oldact, 0, sizeof(*oldact));
+          }
+          oldact->sa_handler_    = ptr_oa->sa_handler_;
+          oldact->sa_flags       = ptr_oa->sa_flags;
+          memcpy(&oldact->sa_mask, &ptr_oa->sa_mask, sizeof(ptr_oa->sa_mask));
+          #ifndef __mips__
+          oldact->sa_restorer    = ptr_oa->sa_restorer;
+          #endif
+        }
+      }
+      return rc;
+    }
+
+    LSS_INLINE int LSS_NAME(sigpending)(struct kernel_sigset_t *set) {
+      int old_errno = LSS_ERRNO;
+      int rc = LSS_NAME(rt_sigpending)(set, (KERNEL_NSIG+7)/8);
+      if (rc < 0 && LSS_ERRNO == ENOSYS) {
+        LSS_ERRNO = old_errno;
+        LSS_NAME(sigemptyset)(set);
+        rc = LSS_NAME(_sigpending)(&set->sig[0]);
+      }
+      return rc;
+    }
+
+    LSS_INLINE int LSS_NAME(sigprocmask)(int how,
+                                         const struct kernel_sigset_t *set,
+                                         struct kernel_sigset_t *oldset) {
+      int olderrno = LSS_ERRNO;
+      int rc = LSS_NAME(rt_sigprocmask)(how, set, oldset, (KERNEL_NSIG+7)/8);
+      if (rc < 0 && LSS_ERRNO == ENOSYS) {
+        LSS_ERRNO = olderrno;
+        if (oldset) {
+          LSS_NAME(sigemptyset)(oldset);
+        }
+        rc = LSS_NAME(_sigprocmask)(how,
+                                    set ? &set->sig[0] : NULL,
+                                    oldset ? &oldset->sig[0] : NULL);
+      }
+      return rc;
+    }
+
+    LSS_INLINE int LSS_NAME(sigsuspend)(const struct kernel_sigset_t *set) {
+      int olderrno = LSS_ERRNO;
+      int rc = LSS_NAME(rt_sigsuspend)(set, (KERNEL_NSIG+7)/8);
+      if (rc < 0 && LSS_ERRNO == ENOSYS) {
+        LSS_ERRNO = olderrno;
+        rc = LSS_NAME(_sigsuspend)(
+        #ifndef __PPC__
+                                   set, 0,
+        #endif
+                                   set->sig[0]);
+      }
+      return rc;
+    }
+  #endif
+  #if defined(__PPC__)
+    #undef LSS_SC_LOADARGS_0
+    #define LSS_SC_LOADARGS_0(dummy...)
+    #undef LSS_SC_LOADARGS_1
+    #define LSS_SC_LOADARGS_1(arg1)                                           \
+        __sc_4  = (unsigned long) (arg1)
+    #undef LSS_SC_LOADARGS_2
+    #define LSS_SC_LOADARGS_2(arg1, arg2)                                     \
+        LSS_SC_LOADARGS_1(arg1);                                              \
+        __sc_5  = (unsigned long) (arg2)
+    #undef LSS_SC_LOADARGS_3
+    #define LSS_SC_LOADARGS_3(arg1, arg2, arg3)                               \
+        LSS_SC_LOADARGS_2(arg1, arg2);                                        \
+        __sc_6  = (unsigned long) (arg3)
+    #undef LSS_SC_LOADARGS_4
+    #define LSS_SC_LOADARGS_4(arg1, arg2, arg3, arg4)                         \
+        LSS_SC_LOADARGS_3(arg1, arg2, arg3);                                  \
+        __sc_7  = (unsigned long) (arg4)
+    #undef LSS_SC_LOADARGS_5
+    #define LSS_SC_LOADARGS_5(arg1, arg2, arg3, arg4, arg5)                   \
+        LSS_SC_LOADARGS_4(arg1, arg2, arg3, arg4);                            \
+        __sc_8  = (unsigned long) (arg5)
+    #undef LSS_SC_BODY
+    #define LSS_SC_BODY(nr, type, opt, args...)                               \
+        long __sc_ret, __sc_err;                                              \
+        {                                                                     \
+          register unsigned long __sc_0 __asm__ ("r0") = __NR_socketcall;     \
+          register unsigned long __sc_3 __asm__ ("r3") = opt;                 \
+          register unsigned long __sc_4 __asm__ ("r4");                       \
+          register unsigned long __sc_5 __asm__ ("r5");                       \
+          register unsigned long __sc_6 __asm__ ("r6");                       \
+          register unsigned long __sc_7 __asm__ ("r7");                       \
+          register unsigned long __sc_8 __asm__ ("r8");                       \
+          LSS_SC_LOADARGS_##nr(args);                                         \
+          __asm__ __volatile__                                                \
+              ("stwu 1, -48(1)\n\t"                                           \
+               "stw 4, 20(1)\n\t"                                             \
+               "stw 5, 24(1)\n\t"                                             \
+               "stw 6, 28(1)\n\t"                                             \
+               "stw 7, 32(1)\n\t"                                             \
+               "stw 8, 36(1)\n\t"                                             \
+               "addi 4, 1, 20\n\t"                                            \
+               "sc\n\t"                                                       \
+               "mfcr %0"                                                      \
+                 : "=&r" (__sc_0),                                            \
+                   "=&r" (__sc_3), "=&r" (__sc_4),                            \
+                   "=&r" (__sc_5), "=&r" (__sc_6),                            \
+                   "=&r" (__sc_7), "=&r" (__sc_8)                             \
+                 : LSS_ASMINPUT_##nr                                          \
+                 : "cr0", "ctr", "memory");                                   \
+          __sc_ret = __sc_3;                                                  \
+          __sc_err = __sc_0;                                                  \
+        }                                                                     \
+        LSS_RETURN(type, __sc_ret, __sc_err)
+
+    LSS_INLINE ssize_t LSS_NAME(recvmsg)(int s,struct kernel_msghdr *msg,
+                                         int flags){
+      LSS_SC_BODY(3, ssize_t, 17, s, msg, flags);
+    }
+
+    LSS_INLINE ssize_t LSS_NAME(sendmsg)(int s,
+                                         const struct kernel_msghdr *msg,
+                                         int flags) {
+      LSS_SC_BODY(3, ssize_t, 16, s, msg, flags);
+    }
+
+    // TODO(csilvers): why is this ifdef'ed out?
+#if 0
+    LSS_INLINE ssize_t LSS_NAME(sendto)(int s, const void *buf, size_t len,
+                                        int flags,
+                                        const struct kernel_sockaddr *to,
+                                        unsigned int tolen) {
+      LSS_BODY(6, ssize_t, 11, s, buf, len, flags, to, tolen);
+    }
+#endif
+
+    LSS_INLINE int LSS_NAME(shutdown)(int s, int how) {
+      LSS_SC_BODY(2, int, 13, s, how);
+    }
+
+    LSS_INLINE int LSS_NAME(socket)(int domain, int type, int protocol) {
+      LSS_SC_BODY(3, int, 1, domain, type, protocol);
+    }
+
+    LSS_INLINE int LSS_NAME(socketpair)(int d, int type, int protocol,
+                                        int sv[2]) {
+      LSS_SC_BODY(4, int, 8, d, type, protocol, sv);
+    }
+  #endif
+  #if defined(__ARM_EABI__) || defined (__aarch64__)
+    LSS_INLINE _syscall3(ssize_t, recvmsg, int, s, struct kernel_msghdr*, msg,
+                         int, flags)
+    LSS_INLINE _syscall3(ssize_t, sendmsg, int, s, const struct kernel_msghdr*,
+                         msg, int, flags)
+    LSS_INLINE _syscall6(ssize_t, sendto, int, s, const void*, buf, size_t,len,
+                         int, flags, const struct kernel_sockaddr*, to,
+                         unsigned int, tolen)
+    LSS_INLINE _syscall2(int, shutdown, int, s, int, how)
+    LSS_INLINE _syscall3(int, socket, int, domain, int, type, int, protocol)
+    LSS_INLINE _syscall4(int, socketpair, int, d, int, type, int, protocol,
+                         int*, sv)
+  #endif
+  #if defined(__i386__) || defined(__ARM_ARCH_3__) ||                         \
+      (defined(__mips__) && _MIPS_SIM == _MIPS_SIM_ABI32)
+    #define __NR__socketcall  __NR_socketcall
+    LSS_INLINE _syscall2(int,      _socketcall,    int,   c,
+                         va_list,                  a)
+    LSS_INLINE int LSS_NAME(socketcall)(int op, ...) {
+      int rc;
+      va_list ap;
+      va_start(ap, op);
+      rc = LSS_NAME(_socketcall)(op, ap);
+      va_end(ap);
+      return rc;
+    }
+
+    LSS_INLINE ssize_t LSS_NAME(recvmsg)(int s,struct kernel_msghdr *msg,
+                                         int flags){
+      return (ssize_t)LSS_NAME(socketcall)(17, s, msg, flags);
+    }
+
+    LSS_INLINE ssize_t LSS_NAME(sendmsg)(int s,
+                                         const struct kernel_msghdr *msg,
+                                         int flags) {
+      return (ssize_t)LSS_NAME(socketcall)(16, s, msg, flags);
+    }
+
+    LSS_INLINE ssize_t LSS_NAME(sendto)(int s, const void *buf, size_t len,
+                                        int flags,
+                                        const struct kernel_sockaddr *to,
+                                        unsigned int tolen) {
+      return (ssize_t)LSS_NAME(socketcall)(11, s, buf, len, flags, to, tolen);
+    }
+
+    LSS_INLINE int LSS_NAME(shutdown)(int s, int how) {
+      return LSS_NAME(socketcall)(13, s, how);
+    }
+
+    LSS_INLINE int LSS_NAME(socket)(int domain, int type, int protocol) {
+      return LSS_NAME(socketcall)(1, domain, type, protocol);
+    }
+
+    LSS_INLINE int LSS_NAME(socketpair)(int d, int type, int protocol,
+                                        int sv[2]) {
+      return LSS_NAME(socketcall)(8, d, type, protocol, sv);
+    }
+  #endif
+  #if defined(__i386__) || defined(__PPC__)
+    LSS_INLINE _syscall4(int,   fstatat64,        int,   d,
+                         const char *,      p,
+                         struct kernel_stat64 *,   b,    int,   f)
+  #endif
+  #if defined(__i386__) || defined(__PPC__) ||                                \
+     (defined(__mips__) && _MIPS_SIM == _MIPS_SIM_ABI32)
+    LSS_INLINE _syscall3(pid_t, waitpid,          pid_t, p,
+                         int*,              s,    int,   o)
+  #endif
+  #if defined(__mips__)
+    /* sys_pipe() on MIPS has non-standard calling conventions, as it returns
+     * both file handles through CPU registers.
+     */
+    LSS_INLINE int LSS_NAME(pipe)(int *p) {
+      register unsigned long __v0 __asm__("$2") = __NR_pipe;
+      register unsigned long __v1 __asm__("$3");
+      register unsigned long __r7 __asm__("$7");
+      __asm__ __volatile__ ("syscall\n"
+                            : "=r"(__v0), "=r"(__v1), "=r" (__r7)
+                            : "0"(__v0)
+                            : "$8", "$9", "$10", "$11", "$12",
+                              "$13", "$14", "$15", "$24", "$25", "memory");
+      if (__r7) {
+        unsigned long __errnovalue = __v0;
+        LSS_ERRNO = __errnovalue;
+        return -1;
+      } else {
+        p[0] = __v0;
+        p[1] = __v1;
+        return 0;
+      }
+    }
+  #elif !defined(__aarch64__)
+    // The unlink syscall has been deprecated on aarch64. We polyfill it below.
+    LSS_INLINE _syscall1(int,     pipe,           int *, p)
+  #endif
+  /* TODO(csilvers): see if ppc can/should support this as well              */
+  #if defined(__i386__) || defined(__ARM_ARCH_3__) ||                         \
+      defined(__ARM_EABI__) ||                                             \
+     (defined(__mips__) && _MIPS_SIM != _MIPS_SIM_ABI64)
+    #define __NR__statfs64  __NR_statfs64
+    #define __NR__fstatfs64 __NR_fstatfs64
+    LSS_INLINE _syscall3(int, _statfs64,     const char*, p,
+                         size_t, s,struct kernel_statfs64*, b)
+    LSS_INLINE _syscall3(int, _fstatfs64,          int,   f,
+                         size_t, s,struct kernel_statfs64*, b)
+    LSS_INLINE int LSS_NAME(statfs64)(const char *p,
+                                     struct kernel_statfs64 *b) {
+      return LSS_NAME(_statfs64)(p, sizeof(*b), b);
+    }
+    LSS_INLINE int LSS_NAME(fstatfs64)(int f,struct kernel_statfs64 *b) {
+      return LSS_NAME(_fstatfs64)(f, sizeof(*b), b);
+    }
+  #endif
+
+  LSS_INLINE int LSS_NAME(execv)(const char *path, const char *const argv[]) {
+    extern char **environ;
+    return LSS_NAME(execve)(path, argv, (const char *const *)environ);
+  }
+
+  LSS_INLINE pid_t LSS_NAME(gettid)(void) {
+    pid_t tid = LSS_NAME(_gettid)();
+    if (tid != -1) {
+      return tid;
+    }
+    return LSS_NAME(getpid)();
+  }
+
+  LSS_INLINE void *LSS_NAME(mremap)(void *old_address, size_t old_size,
+                                    size_t new_size, int flags, ...) {
+    va_list ap;
+    void *new_address, *rc;
+    va_start(ap, flags);
+    new_address = va_arg(ap, void *);
+    rc = LSS_NAME(_mremap)(old_address, old_size, new_size,
+                           flags, new_address);
+    va_end(ap);
+    return rc;
+  }
+
+  LSS_INLINE int LSS_NAME(ptrace_detach)(pid_t pid) {
+    /* PTRACE_DETACH can sometimes forget to wake up the tracee and it
+     * then sends job control signals to the real parent, rather than to
+     * the tracer. We reduce the risk of this happening by starting a
+     * whole new time slice, and then quickly sending a SIGCONT signal
+     * right after detaching from the tracee.
+     *
+     * We use tkill to ensure that we only issue a wakeup for the thread being
+     * detached.  Large multi threaded apps can take a long time in the kernel
+     * processing SIGCONT.
+     */
+    int rc, err;
+    LSS_NAME(sched_yield)();
+    rc = LSS_NAME(ptrace)(PTRACE_DETACH, pid, (void *)0, (void *)0);
+    err = LSS_ERRNO;
+    LSS_NAME(tkill)(pid, SIGCONT);
+    /* Old systems don't have tkill */
+    if (LSS_ERRNO == ENOSYS)
+      LSS_NAME(kill)(pid, SIGCONT);
+    LSS_ERRNO = err;
+    return rc;
+  }
+
+  LSS_INLINE int LSS_NAME(raise)(int sig) {
+    return LSS_NAME(kill)(LSS_NAME(getpid)(), sig);
+  }
+
+  LSS_INLINE int LSS_NAME(setpgrp)(void) {
+    return LSS_NAME(setpgid)(0, 0);
+  }
+
+  LSS_INLINE int LSS_NAME(sysconf)(int name) {
+    extern int __getpagesize(void);
+    switch (name) {
+      case _SC_OPEN_MAX: {
+        struct kernel_rlimit limit;
+#if defined(__ARM_EABI__)
+        return LSS_NAME(ugetrlimit)(RLIMIT_NOFILE, &limit) < 0
+            ? 8192 : limit.rlim_cur;
+#else
+        return LSS_NAME(getrlimit)(RLIMIT_NOFILE, &limit) < 0
+            ? 8192 : limit.rlim_cur;
+#endif
+      }
+      case _SC_PAGESIZE:
+        return __getpagesize();
+      default:
+        LSS_ERRNO = ENOSYS;
+        return -1;
+    }
+  }
+  #if defined(__x86_64__)
+    /* Need to make sure loff_t isn't truncated to 32-bits under x32.  */
+    LSS_INLINE ssize_t LSS_NAME(pread64)(int f, void *b, size_t c, loff_t o) {
+      LSS_BODY(4, ssize_t, pread64, LSS_SYSCALL_ARG(f), LSS_SYSCALL_ARG(b),
+                                    LSS_SYSCALL_ARG(c), (uint64_t)(o));
+    }
+
+    LSS_INLINE ssize_t LSS_NAME(pwrite64)(int f, const void *b, size_t c,
+                                          loff_t o) {
+      LSS_BODY(4, ssize_t, pwrite64, LSS_SYSCALL_ARG(f), LSS_SYSCALL_ARG(b),
+                                     LSS_SYSCALL_ARG(c), (uint64_t)(o));
+    }
+
+    LSS_INLINE int LSS_NAME(readahead)(int f, loff_t o, unsigned c) {
+      LSS_BODY(3, int, readahead, LSS_SYSCALL_ARG(f), (uint64_t)(o),
+                                  LSS_SYSCALL_ARG(c));
+    }
+  #elif defined(__mips__) && _MIPS_SIM == _MIPS_SIM_ABI64
+    LSS_INLINE _syscall4(ssize_t, pread64,        int,         f,
+                         void *,         b, size_t,   c,
+                         loff_t,         o)
+    LSS_INLINE _syscall4(ssize_t, pwrite64,       int,         f,
+                         const void *,   b, size_t,   c,
+                         loff_t,         o)
+    LSS_INLINE _syscall3(int,     readahead,      int,         f,
+                         loff_t,         o, unsigned, c)
+    LSS_INLINE _syscall6(void *, mmap, void *, addr, size_t, length, int, prot,
+                         int, flags, int, fd, int64_t, offset)
+  #else
+    #define __NR__pread64   __NR_pread64
+    #define __NR__pwrite64  __NR_pwrite64
+    #define __NR__readahead __NR_readahead
+    #if defined(__ARM_EABI__) || defined(__mips__)
+      /* On ARM and MIPS, a 64-bit parameter has to be in an even-odd register
+       * pair. Hence these calls ignore their fourth argument (r3) so that their
+       * fifth and sixth make such a pair (r4,r5).
+       */
+      #define LSS_LLARG_PAD 0,
+      LSS_INLINE _syscall6(ssize_t, _pread64,        int,         f,
+                           void *,         b, size_t, c,
+                           unsigned, skip, unsigned, o1, unsigned, o2)
+      LSS_INLINE _syscall6(ssize_t, _pwrite64,       int,         f,
+                           const void *,   b, size_t, c,
+                           unsigned, skip, unsigned, o1, unsigned, o2)
+      LSS_INLINE _syscall5(int, _readahead,          int,         f,
+                           unsigned,     skip,
+                           unsigned,       o1, unsigned, o2, size_t, c)
+    #else
+      #define LSS_LLARG_PAD
+      LSS_INLINE _syscall5(ssize_t, _pread64,        int,         f,
+                           void *,         b, size_t, c, unsigned, o1,
+                           unsigned, o2)
+      LSS_INLINE _syscall5(ssize_t, _pwrite64,       int,         f,
+                           const void *,   b, size_t, c, unsigned, o1,
+                           long, o2)
+      LSS_INLINE _syscall4(int, _readahead,          int,         f,
+                           unsigned,       o1, unsigned, o2, size_t, c)
+    #endif
+    /* We force 64bit-wide parameters onto the stack, then access each
+     * 32-bit component individually. This guarantees that we build the
+     * correct parameters independent of the native byte-order of the
+     * underlying architecture.
+     */
+    LSS_INLINE ssize_t LSS_NAME(pread64)(int fd, void *buf, size_t count,
+                                         loff_t off) {
+      union { loff_t off; unsigned arg[2]; } o = { off };
+      return LSS_NAME(_pread64)(fd, buf, count,
+                                LSS_LLARG_PAD o.arg[0], o.arg[1]);
+    }
+    LSS_INLINE ssize_t LSS_NAME(pwrite64)(int fd, const void *buf,
+                                          size_t count, loff_t off) {
+      union { loff_t off; unsigned arg[2]; } o = { off };
+      return LSS_NAME(_pwrite64)(fd, buf, count,
+                                 LSS_LLARG_PAD o.arg[0], o.arg[1]);
+    }
+    LSS_INLINE int LSS_NAME(readahead)(int fd, loff_t off, int len) {
+      union { loff_t off; unsigned arg[2]; } o = { off };
+      return LSS_NAME(_readahead)(fd, LSS_LLARG_PAD o.arg[0], o.arg[1], len);
+    }
+  #endif
+#endif
+
+#if defined(__aarch64__)
+  LSS_INLINE _syscall3(int, dup3,  int, s, int, d, int, f)
+  LSS_INLINE _syscall6(void *, mmap, void *, addr, size_t, length, int, prot,
+                       int, flags, int, fd, int64_t, offset)
+  LSS_INLINE _syscall4(int, newfstatat, int, dirfd, const char *, pathname,
+                       struct kernel_stat *, buf, int, flags)
+  LSS_INLINE _syscall2(int, pipe2, int *, pipefd, int, flags)
+  LSS_INLINE _syscall5(int, ppoll, struct kernel_pollfd *, u,
+                       unsigned int, n, const struct kernel_timespec *, t,
+                       const kernel_sigset_t *, sigmask, size_t, s)
+  LSS_INLINE _syscall4(int, readlinkat, int, d, const char *, p, char *, b,
+                       size_t, s)
+#endif
+
+/*
+ * Polyfills for deprecated syscalls.
+ */
+
+#if defined(__aarch64__)
+  LSS_INLINE int LSS_NAME(dup2)(int s, int d) {
+    return LSS_NAME(dup3)(s, d, 0);
+  }
+
+  LSS_INLINE int LSS_NAME(open)(const char *pathname, int flags, int mode) {
+    return LSS_NAME(openat)(AT_FDCWD, pathname, flags, mode);
+  }
+
+  LSS_INLINE int LSS_NAME(unlink)(const char *pathname) {
+    return LSS_NAME(unlinkat)(AT_FDCWD, pathname, 0);
+  }
+
+  LSS_INLINE int LSS_NAME(readlink)(const char *pathname, char *buffer,
+                                    size_t size) {
+    return LSS_NAME(readlinkat)(AT_FDCWD, pathname, buffer, size);
+  }
+
+  LSS_INLINE pid_t LSS_NAME(pipe)(int *pipefd) {
+    return LSS_NAME(pipe2)(pipefd, 0);
+  }
+
+  LSS_INLINE int LSS_NAME(poll)(struct kernel_pollfd *fds, unsigned int nfds,
+                                int timeout) {
+   struct kernel_timespec timeout_ts;
+   struct kernel_timespec *timeout_ts_p = NULL;
+
+    if (timeout >= 0) {
+      timeout_ts.tv_sec = timeout / 1000;
+      timeout_ts.tv_nsec = (timeout % 1000) * 1000000;
+      timeout_ts_p = &timeout_ts;
+    }
+    return LSS_NAME(ppoll)(fds, nfds, timeout_ts_p, NULL, 0);
+  }
+
+  LSS_INLINE int LSS_NAME(stat)(const char *pathname,
+                                struct kernel_stat *buf) {
+    return LSS_NAME(newfstatat)(AT_FDCWD, pathname, buf, 0);
+  }
+
+  LSS_INLINE pid_t LSS_NAME(fork)(void) {
+    // No fork syscall on aarch64 - implement by means of the clone syscall.
+    // Note that this does not reset glibc's cached view of the PID/TID, so
+    // some glibc interfaces might go wrong in the forked subprocess.
+    int flags = SIGCHLD;
+    void *child_stack = NULL;
+    void *parent_tidptr = NULL;
+    void *newtls = NULL;
+    void *child_tidptr = NULL;
+
+    LSS_REG(0, flags);
+    LSS_REG(1, child_stack);
+    LSS_REG(2, parent_tidptr);
+    LSS_REG(3, newtls);
+    LSS_REG(4, child_tidptr);
+    LSS_BODY(pid_t, clone, "r"(__r0), "r"(__r1), "r"(__r2), "r"(__r3),
+             "r"(__r4));
+  }
+#endif
+
+#ifdef __ANDROID__
+  /* These restore the original values of these macros saved by the
+   * corresponding #pragma push_macro near the top of this file. */
+# pragma pop_macro("stat64")
+# pragma pop_macro("fstat64")
+# pragma pop_macro("lstat64")
+#endif
+
+#if defined(__cplusplus) && !defined(SYS_CPLUSPLUS)
+}
+#endif
+
+#endif
+#endif
diff --git a/google-breakpad/src/tools/linux/core2md/core2md.cc b/google-breakpad/src/tools/linux/core2md/core2md.cc
new file mode 100644
index 0000000..a0e8f8b
--- /dev/null
+++ b/google-breakpad/src/tools/linux/core2md/core2md.cc
@@ -0,0 +1,72 @@
+// Copyright (c) 2012, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// core2md.cc: A utility to convert an ELF core file to a minidump file.
+
+#include <stdio.h>
+
+#include "client/linux/minidump_writer/minidump_writer.h"
+#include "client/linux/minidump_writer/linux_core_dumper.h"
+
+using google_breakpad::AppMemoryList;
+using google_breakpad::MappingList;
+using google_breakpad::LinuxCoreDumper;
+
+static int ShowUsage(const char* argv0) {
+  fprintf(stderr, "Usage: %s <core file> <procfs dir> <output>\n", argv0);
+  return 1;
+}
+
+bool WriteMinidumpFromCore(const char* filename,
+                           const char* core_path,
+                           const char* procfs_override) {
+  MappingList mappings;
+  AppMemoryList memory_list;
+  LinuxCoreDumper dumper(0, core_path, procfs_override);
+  return google_breakpad::WriteMinidump(filename, mappings, memory_list,
+                                        &dumper);
+}
+
+int main(int argc, char *argv[]) {
+  if (argc != 4) {
+    return ShowUsage(argv[0]);
+  }
+
+  const char* core_file = argv[1];
+  const char* procfs_dir = argv[2];
+  const char* minidump_file = argv[3];
+  if (!WriteMinidumpFromCore(minidump_file,
+                             core_file,
+                             procfs_dir)) {
+    fprintf(stderr, "Unable to generate minidump.\n");
+    return 1;
+  }
+
+  return 0;
+}
diff --git a/google-breakpad/src/tools/linux/dump_syms/dump_syms.cc b/google-breakpad/src/tools/linux/dump_syms/dump_syms.cc
new file mode 100644
index 0000000..1161788
--- /dev/null
+++ b/google-breakpad/src/tools/linux/dump_syms/dump_syms.cc
@@ -0,0 +1,99 @@
+// Copyright (c) 2011, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include <stdio.h>
+#include <unistd.h>
+
+#include <cstring>
+#include <iostream>
+#include <string>
+#include <vector>
+
+#include "common/linux/dump_symbols.h"
+
+using google_breakpad::WriteSymbolFile;
+
+int usage(const char* self) {
+  fprintf(stderr, "Usage: %s [OPTION] <binary-with-debugging-info> "
+          "[directories-for-debug-file]\n\n", self);
+  fprintf(stderr, "Options:\n");
+  fprintf(stderr, "  -c    Do not generate CFI section\n");
+  fprintf(stderr, "  -r    Do not handle inter-compilation unit references\n");
+  fprintf(stderr, "  -v    Verbose logging. Print all warnings to stderr\n");
+  return 1;
+}
+
+int main(int argc, char **argv) {
+  if (argc < 2)
+    return usage(argv[0]);
+
+  bool cfi = true;
+  bool handle_inter_cu_refs = true;
+  bool log_to_stderr = false;
+  int arg_index = 1;
+  while (arg_index < argc && strlen(argv[arg_index]) > 0 &&
+         argv[arg_index][0] == '-') {
+    if (strcmp("-c", argv[arg_index]) == 0) {
+      cfi = false;
+    } else if (strcmp("-r", argv[arg_index]) == 0) {
+      handle_inter_cu_refs = false;
+    } else if (strcmp("-v", argv[arg_index]) == 0) {
+      log_to_stderr = true;
+    } else {
+      return usage(argv[0]);
+    }
+    ++arg_index;
+  }
+  if (arg_index == argc)
+    return usage(argv[0]);
+
+  // Save stderr so it can be used below.
+  FILE* saved_stderr = fdopen(dup(STDERR_FILENO), "w");
+  if (!log_to_stderr) {
+    freopen("/dev/null", "w", stderr);
+  }
+
+  const char* binary;
+  std::vector<string> debug_dirs;
+  binary = argv[arg_index];
+  for (int debug_dir_index = arg_index + 1;
+       debug_dir_index < argc;
+       ++debug_dir_index) {
+    debug_dirs.push_back(argv[debug_dir_index]);
+  }
+
+  SymbolData symbol_data = cfi ? ALL_SYMBOL_DATA : NO_CFI;
+  google_breakpad::DumpOptions options(symbol_data, handle_inter_cu_refs);
+  if (!WriteSymbolFile(binary, debug_dirs, options, std::cout)) {
+    fprintf(saved_stderr, "Failed to write symbol file.\n");
+    return 1;
+  }
+
+  return 0;
+}
diff --git a/google-breakpad/src/tools/linux/md2core/minidump-2-core.cc b/google-breakpad/src/tools/linux/md2core/minidump-2-core.cc
new file mode 100644
index 0000000..bcb0076
--- /dev/null
+++ b/google-breakpad/src/tools/linux/md2core/minidump-2-core.cc
@@ -0,0 +1,1218 @@
+// Copyright (c) 2009, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Converts a minidump file to a core file which gdb can read.
+// Large parts lifted from the userspace core dumper:
+//   http://code.google.com/p/google-coredumper/
+//
+// Usage: minidump-2-core [-v] 1234.dmp > core
+
+#include <elf.h>
+#include <errno.h>
+#include <inttypes.h>
+#include <link.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/user.h>
+#include <unistd.h>
+
+#include <map>
+#include <string>
+#include <vector>
+
+#include "common/linux/memory_mapped_file.h"
+#include "common/minidump_type_helper.h"
+#include "common/scoped_ptr.h"
+#include "google_breakpad/common/minidump_format.h"
+#include "third_party/lss/linux_syscall_support.h"
+#include "tools/linux/md2core/minidump_memory_range.h"
+
+#if __WORDSIZE == 64
+  #define ELF_CLASS ELFCLASS64
+#else
+  #define ELF_CLASS ELFCLASS32
+#endif
+#define Ehdr   ElfW(Ehdr)
+#define Phdr   ElfW(Phdr)
+#define Shdr   ElfW(Shdr)
+#define Nhdr   ElfW(Nhdr)
+#define auxv_t ElfW(auxv_t)
+
+
+#if defined(__x86_64__)
+  #define ELF_ARCH  EM_X86_64
+#elif defined(__i386__)
+  #define ELF_ARCH  EM_386
+#elif defined(__arm__)
+  #define ELF_ARCH  EM_ARM
+#elif defined(__mips__)
+  #define ELF_ARCH  EM_MIPS
+#endif
+
+#if defined(__arm__)
+// GLibc/ARM and Android/ARM both use 'user_regs' for the structure type
+// containing core registers, while they use 'user_regs_struct' on other
+// architectures. This file-local typedef simplifies the source code.
+typedef user_regs user_regs_struct;
+#endif
+
+using google_breakpad::MDTypeHelper;
+using google_breakpad::MemoryMappedFile;
+using google_breakpad::MinidumpMemoryRange;
+
+typedef MDTypeHelper<sizeof(ElfW(Addr))>::MDRawDebug MDRawDebug;
+typedef MDTypeHelper<sizeof(ElfW(Addr))>::MDRawLinkMap MDRawLinkMap;
+
+static const MDRVA kInvalidMDRVA = static_cast<MDRVA>(-1);
+static bool verbose;
+static std::string g_custom_so_basedir;
+
+static int usage(const char* argv0) {
+  fprintf(stderr, "Usage: %s [-v] <minidump file>\n", argv0);
+  return 1;
+}
+
+// Write all of the given buffer, handling short writes and EINTR. Return true
+// iff successful.
+static bool
+writea(int fd, const void* idata, size_t length) {
+  const uint8_t* data = (const uint8_t*) idata;
+
+  size_t done = 0;
+  while (done < length) {
+    ssize_t r;
+    do {
+      r = write(fd, data + done, length - done);
+    } while (r == -1 && errno == EINTR);
+
+    if (r < 1)
+      return false;
+    done += r;
+  }
+
+  return true;
+}
+
+/* Dynamically determines the byte sex of the system. Returns non-zero
+ * for big-endian machines.
+ */
+static inline int sex() {
+  int probe = 1;
+  return !*(char *)&probe;
+}
+
+typedef struct elf_timeval {    /* Time value with microsecond resolution    */
+  long tv_sec;                  /* Seconds                                   */
+  long tv_usec;                 /* Microseconds                              */
+} elf_timeval;
+
+typedef struct elf_siginfo {    /* Information about signal (unused)         */
+  int32_t si_signo;             /* Signal number                             */
+  int32_t si_code;              /* Extra code                                */
+  int32_t si_errno;             /* Errno                                     */
+} elf_siginfo;
+
+typedef struct prstatus {       /* Information about thread; includes CPU reg*/
+  elf_siginfo    pr_info;       /* Info associated with signal               */
+  uint16_t       pr_cursig;     /* Current signal                            */
+  unsigned long  pr_sigpend;    /* Set of pending signals                    */
+  unsigned long  pr_sighold;    /* Set of held signals                       */
+  pid_t          pr_pid;        /* Process ID                                */
+  pid_t          pr_ppid;       /* Parent's process ID                       */
+  pid_t          pr_pgrp;       /* Group ID                                  */
+  pid_t          pr_sid;        /* Session ID                                */
+  elf_timeval    pr_utime;      /* User time                                 */
+  elf_timeval    pr_stime;      /* System time                               */
+  elf_timeval    pr_cutime;     /* Cumulative user time                      */
+  elf_timeval    pr_cstime;     /* Cumulative system time                    */
+  user_regs_struct pr_reg;      /* CPU registers                             */
+  uint32_t       pr_fpvalid;    /* True if math co-processor being used      */
+} prstatus;
+
+typedef struct prpsinfo {       /* Information about process                 */
+  unsigned char  pr_state;      /* Numeric process state                     */
+  char           pr_sname;      /* Char for pr_state                         */
+  unsigned char  pr_zomb;       /* Zombie                                    */
+  signed char    pr_nice;       /* Nice val                                  */
+  unsigned long  pr_flag;       /* Flags                                     */
+#if defined(__x86_64__) || defined(__mips__)
+  uint32_t       pr_uid;        /* User ID                                   */
+  uint32_t       pr_gid;        /* Group ID                                  */
+#else
+  uint16_t       pr_uid;        /* User ID                                   */
+  uint16_t       pr_gid;        /* Group ID                                  */
+#endif
+  pid_t          pr_pid;        /* Process ID                                */
+  pid_t          pr_ppid;       /* Parent's process ID                       */
+  pid_t          pr_pgrp;       /* Group ID                                  */
+  pid_t          pr_sid;        /* Session ID                                */
+  char           pr_fname[16];  /* Filename of executable                    */
+  char           pr_psargs[80]; /* Initial part of arg list                  */
+} prpsinfo;
+
+// We parse the minidump file and keep the parsed information in this structure
+struct CrashedProcess {
+  CrashedProcess()
+      : crashing_tid(-1),
+        auxv(NULL),
+        auxv_length(0) {
+    memset(&prps, 0, sizeof(prps));
+    prps.pr_sname = 'R';
+    memset(&debug, 0, sizeof(debug));
+  }
+
+  struct Mapping {
+    Mapping()
+      : permissions(0xFFFFFFFF),
+        start_address(0),
+        end_address(0),
+        offset(0) {
+    }
+
+    uint32_t permissions;
+    uint64_t start_address, end_address, offset;
+    std::string filename;
+    std::string data;
+  };
+  std::map<uint64_t, Mapping> mappings;
+
+  pid_t crashing_tid;
+  int fatal_signal;
+
+  struct Thread {
+    pid_t tid;
+    user_regs_struct regs;
+#if defined(__i386__) || defined(__x86_64__) || defined(__mips__)
+    user_fpregs_struct fpregs;
+#endif
+#if defined(__i386__)
+    user_fpxregs_struct fpxregs;
+#endif
+    uintptr_t stack_addr;
+    const uint8_t* stack;
+    size_t stack_length;
+  };
+  std::vector<Thread> threads;
+
+  const uint8_t* auxv;
+  size_t auxv_length;
+
+  prpsinfo prps;
+
+  std::map<uintptr_t, std::string> signatures;
+
+  std::string dynamic_data;
+  MDRawDebug debug;
+  std::vector<MDRawLinkMap> link_map;
+};
+
+#if defined(__i386__)
+static uint32_t
+U32(const uint8_t* data) {
+  uint32_t v;
+  memcpy(&v, data, sizeof(v));
+  return v;
+}
+
+static uint16_t
+U16(const uint8_t* data) {
+  uint16_t v;
+  memcpy(&v, data, sizeof(v));
+  return v;
+}
+
+static void
+ParseThreadRegisters(CrashedProcess::Thread* thread,
+                     const MinidumpMemoryRange& range) {
+  const MDRawContextX86* rawregs = range.GetData<MDRawContextX86>(0);
+
+  thread->regs.ebx = rawregs->ebx;
+  thread->regs.ecx = rawregs->ecx;
+  thread->regs.edx = rawregs->edx;
+  thread->regs.esi = rawregs->esi;
+  thread->regs.edi = rawregs->edi;
+  thread->regs.ebp = rawregs->ebp;
+  thread->regs.eax = rawregs->eax;
+  thread->regs.xds = rawregs->ds;
+  thread->regs.xes = rawregs->es;
+  thread->regs.xfs = rawregs->fs;
+  thread->regs.xgs = rawregs->gs;
+  thread->regs.orig_eax = rawregs->eax;
+  thread->regs.eip = rawregs->eip;
+  thread->regs.xcs = rawregs->cs;
+  thread->regs.eflags = rawregs->eflags;
+  thread->regs.esp = rawregs->esp;
+  thread->regs.xss = rawregs->ss;
+
+  thread->fpregs.cwd = rawregs->float_save.control_word;
+  thread->fpregs.swd = rawregs->float_save.status_word;
+  thread->fpregs.twd = rawregs->float_save.tag_word;
+  thread->fpregs.fip = rawregs->float_save.error_offset;
+  thread->fpregs.fcs = rawregs->float_save.error_selector;
+  thread->fpregs.foo = rawregs->float_save.data_offset;
+  thread->fpregs.fos = rawregs->float_save.data_selector;
+  memcpy(thread->fpregs.st_space, rawregs->float_save.register_area,
+         10 * 8);
+
+  thread->fpxregs.cwd = rawregs->float_save.control_word;
+  thread->fpxregs.swd = rawregs->float_save.status_word;
+  thread->fpxregs.twd = rawregs->float_save.tag_word;
+  thread->fpxregs.fop = U16(rawregs->extended_registers + 6);
+  thread->fpxregs.fip = U16(rawregs->extended_registers + 8);
+  thread->fpxregs.fcs = U16(rawregs->extended_registers + 12);
+  thread->fpxregs.foo = U16(rawregs->extended_registers + 16);
+  thread->fpxregs.fos = U16(rawregs->extended_registers + 20);
+  thread->fpxregs.mxcsr = U32(rawregs->extended_registers + 24);
+  memcpy(thread->fpxregs.st_space, rawregs->extended_registers + 32, 128);
+  memcpy(thread->fpxregs.xmm_space, rawregs->extended_registers + 160, 128);
+}
+#elif defined(__x86_64__)
+static void
+ParseThreadRegisters(CrashedProcess::Thread* thread,
+                     const MinidumpMemoryRange& range) {
+  const MDRawContextAMD64* rawregs = range.GetData<MDRawContextAMD64>(0);
+
+  thread->regs.r15 = rawregs->r15;
+  thread->regs.r14 = rawregs->r14;
+  thread->regs.r13 = rawregs->r13;
+  thread->regs.r12 = rawregs->r12;
+  thread->regs.rbp = rawregs->rbp;
+  thread->regs.rbx = rawregs->rbx;
+  thread->regs.r11 = rawregs->r11;
+  thread->regs.r10 = rawregs->r10;
+  thread->regs.r9 = rawregs->r9;
+  thread->regs.r8 = rawregs->r8;
+  thread->regs.rax = rawregs->rax;
+  thread->regs.rcx = rawregs->rcx;
+  thread->regs.rdx = rawregs->rdx;
+  thread->regs.rsi = rawregs->rsi;
+  thread->regs.rdi = rawregs->rdi;
+  thread->regs.orig_rax = rawregs->rax;
+  thread->regs.rip = rawregs->rip;
+  thread->regs.cs  = rawregs->cs;
+  thread->regs.eflags = rawregs->eflags;
+  thread->regs.rsp = rawregs->rsp;
+  thread->regs.ss = rawregs->ss;
+  thread->regs.fs_base = 0;
+  thread->regs.gs_base = 0;
+  thread->regs.ds = rawregs->ds;
+  thread->regs.es = rawregs->es;
+  thread->regs.fs = rawregs->fs;
+  thread->regs.gs = rawregs->gs;
+
+  thread->fpregs.cwd = rawregs->flt_save.control_word;
+  thread->fpregs.swd = rawregs->flt_save.status_word;
+  thread->fpregs.ftw = rawregs->flt_save.tag_word;
+  thread->fpregs.fop = rawregs->flt_save.error_opcode;
+  thread->fpregs.rip = rawregs->flt_save.error_offset;
+  thread->fpregs.rdp = rawregs->flt_save.data_offset;
+  thread->fpregs.mxcsr = rawregs->flt_save.mx_csr;
+  thread->fpregs.mxcr_mask = rawregs->flt_save.mx_csr_mask;
+  memcpy(thread->fpregs.st_space, rawregs->flt_save.float_registers, 8 * 16);
+  memcpy(thread->fpregs.xmm_space, rawregs->flt_save.xmm_registers, 16 * 16);
+}
+#elif defined(__arm__)
+static void
+ParseThreadRegisters(CrashedProcess::Thread* thread,
+                     const MinidumpMemoryRange& range) {
+  const MDRawContextARM* rawregs = range.GetData<MDRawContextARM>(0);
+
+  thread->regs.uregs[0] = rawregs->iregs[0];
+  thread->regs.uregs[1] = rawregs->iregs[1];
+  thread->regs.uregs[2] = rawregs->iregs[2];
+  thread->regs.uregs[3] = rawregs->iregs[3];
+  thread->regs.uregs[4] = rawregs->iregs[4];
+  thread->regs.uregs[5] = rawregs->iregs[5];
+  thread->regs.uregs[6] = rawregs->iregs[6];
+  thread->regs.uregs[7] = rawregs->iregs[7];
+  thread->regs.uregs[8] = rawregs->iregs[8];
+  thread->regs.uregs[9] = rawregs->iregs[9];
+  thread->regs.uregs[10] = rawregs->iregs[10];
+  thread->regs.uregs[11] = rawregs->iregs[11];
+  thread->regs.uregs[12] = rawregs->iregs[12];
+  thread->regs.uregs[13] = rawregs->iregs[13];
+  thread->regs.uregs[14] = rawregs->iregs[14];
+  thread->regs.uregs[15] = rawregs->iregs[15];
+
+  thread->regs.uregs[16] = rawregs->cpsr;
+  thread->regs.uregs[17] = 0;  // what is ORIG_r0 exactly?
+}
+#elif defined(__mips__)
+static void
+ParseThreadRegisters(CrashedProcess::Thread* thread,
+                     const MinidumpMemoryRange& range) {
+  const MDRawContextMIPS* rawregs = range.GetData<MDRawContextMIPS>(0);
+
+  for (int i = 0; i < MD_CONTEXT_MIPS_GPR_COUNT; ++i)
+    thread->regs.regs[i] = rawregs->iregs[i];
+
+  thread->regs.lo = rawregs->mdlo;
+  thread->regs.hi = rawregs->mdhi;
+  thread->regs.epc = rawregs->epc;
+  thread->regs.badvaddr = rawregs->badvaddr;
+  thread->regs.status = rawregs->status;
+  thread->regs.cause = rawregs->cause;
+
+  for (int i = 0; i < MD_FLOATINGSAVEAREA_MIPS_FPR_COUNT; ++i)
+    thread->fpregs.regs[i] = rawregs->float_save.regs[i];
+
+  thread->fpregs.fpcsr = rawregs->float_save.fpcsr;
+#if _MIPS_SIM == _ABIO32
+  thread->fpregs.fir = rawregs->float_save.fir;
+#endif
+}
+#else
+#error "This code has not been ported to your platform yet"
+#endif
+
+static void
+ParseThreadList(CrashedProcess* crashinfo, const MinidumpMemoryRange& range,
+                const MinidumpMemoryRange& full_file) {
+  const uint32_t num_threads = *range.GetData<uint32_t>(0);
+  if (verbose) {
+    fprintf(stderr,
+            "MD_THREAD_LIST_STREAM:\n"
+            "Found %d threads\n"
+            "\n\n",
+            num_threads);
+  }
+  for (unsigned i = 0; i < num_threads; ++i) {
+    CrashedProcess::Thread thread;
+    memset(&thread, 0, sizeof(thread));
+    const MDRawThread* rawthread =
+        range.GetArrayElement<MDRawThread>(sizeof(uint32_t), i);
+    thread.tid = rawthread->thread_id;
+    thread.stack_addr = rawthread->stack.start_of_memory_range;
+    MinidumpMemoryRange stack_range =
+        full_file.Subrange(rawthread->stack.memory);
+    thread.stack = stack_range.data();
+    thread.stack_length = rawthread->stack.memory.data_size;
+
+    ParseThreadRegisters(&thread,
+                         full_file.Subrange(rawthread->thread_context));
+
+    crashinfo->threads.push_back(thread);
+  }
+}
+
+static void
+ParseSystemInfo(CrashedProcess* crashinfo, const MinidumpMemoryRange& range,
+                const MinidumpMemoryRange& full_file) {
+  const MDRawSystemInfo* sysinfo = range.GetData<MDRawSystemInfo>(0);
+  if (!sysinfo) {
+    fprintf(stderr, "Failed to access MD_SYSTEM_INFO_STREAM\n");
+    _exit(1);
+  }
+#if defined(__i386__)
+  if (sysinfo->processor_architecture != MD_CPU_ARCHITECTURE_X86) {
+    fprintf(stderr,
+            "This version of minidump-2-core only supports x86 (32bit)%s.\n",
+            sysinfo->processor_architecture == MD_CPU_ARCHITECTURE_AMD64 ?
+            ",\nbut the minidump file is from a 64bit machine" : "");
+    _exit(1);
+  }
+#elif defined(__x86_64__)
+  if (sysinfo->processor_architecture != MD_CPU_ARCHITECTURE_AMD64) {
+    fprintf(stderr,
+            "This version of minidump-2-core only supports x86 (64bit)%s.\n",
+            sysinfo->processor_architecture == MD_CPU_ARCHITECTURE_X86 ?
+            ",\nbut the minidump file is from a 32bit machine" : "");
+    _exit(1);
+  }
+#elif defined(__arm__)
+  if (sysinfo->processor_architecture != MD_CPU_ARCHITECTURE_ARM) {
+    fprintf(stderr,
+            "This version of minidump-2-core only supports ARM (32bit).\n");
+    _exit(1);
+  }
+#elif defined(__mips__)
+  if (sysinfo->processor_architecture != MD_CPU_ARCHITECTURE_MIPS) {
+    fprintf(stderr,
+            "This version of minidump-2-core only supports mips (32bit).\n");
+    _exit(1);
+  }
+#else
+#error "This code has not been ported to your platform yet"
+#endif
+  if (!strstr(full_file.GetAsciiMDString(sysinfo->csd_version_rva).c_str(),
+              "Linux") &&
+      sysinfo->platform_id != MD_OS_NACL) {
+    fprintf(stderr, "This minidump was not generated by Linux or NaCl.\n");
+    _exit(1);
+  }
+
+  if (verbose) {
+    fprintf(stderr,
+            "MD_SYSTEM_INFO_STREAM:\n"
+            "Architecture: %s\n"
+            "Number of processors: %d\n"
+            "Processor level: %d\n"
+            "Processor model: %d\n"
+            "Processor stepping: %d\n",
+            sysinfo->processor_architecture == MD_CPU_ARCHITECTURE_X86
+            ? "i386"
+            : sysinfo->processor_architecture == MD_CPU_ARCHITECTURE_AMD64
+            ? "x86-64"
+            : sysinfo->processor_architecture == MD_CPU_ARCHITECTURE_ARM
+            ? "ARM"
+            : sysinfo->processor_architecture == MD_CPU_ARCHITECTURE_MIPS
+            ? "MIPS"
+            : "???",
+            sysinfo->number_of_processors,
+            sysinfo->processor_level,
+            sysinfo->processor_revision >> 8,
+            sysinfo->processor_revision & 0xFF);
+    if (sysinfo->processor_architecture == MD_CPU_ARCHITECTURE_X86 ||
+        sysinfo->processor_architecture == MD_CPU_ARCHITECTURE_AMD64) {
+      fputs("Vendor id: ", stderr);
+      const char *nul =
+        (const char *)memchr(sysinfo->cpu.x86_cpu_info.vendor_id, 0,
+                             sizeof(sysinfo->cpu.x86_cpu_info.vendor_id));
+      fwrite(sysinfo->cpu.x86_cpu_info.vendor_id,
+             nul ? nul - (const char *)&sysinfo->cpu.x86_cpu_info.vendor_id[0]
+             : sizeof(sysinfo->cpu.x86_cpu_info.vendor_id), 1, stderr);
+      fputs("\n", stderr);
+    }
+    fprintf(stderr, "OS: %s\n",
+            full_file.GetAsciiMDString(sysinfo->csd_version_rva).c_str());
+    fputs("\n\n", stderr);
+  }
+}
+
+static void
+ParseCPUInfo(CrashedProcess* crashinfo, const MinidumpMemoryRange& range) {
+  if (verbose) {
+    fputs("MD_LINUX_CPU_INFO:\n", stderr);
+    fwrite(range.data(), range.length(), 1, stderr);
+    fputs("\n\n\n", stderr);
+  }
+}
+
+static void
+ParseProcessStatus(CrashedProcess* crashinfo,
+                   const MinidumpMemoryRange& range) {
+  if (verbose) {
+    fputs("MD_LINUX_PROC_STATUS:\n", stderr);
+    fwrite(range.data(), range.length(), 1, stderr);
+    fputs("\n\n", stderr);
+  }
+}
+
+static void
+ParseLSBRelease(CrashedProcess* crashinfo, const MinidumpMemoryRange& range) {
+  if (verbose) {
+    fputs("MD_LINUX_LSB_RELEASE:\n", stderr);
+    fwrite(range.data(), range.length(), 1, stderr);
+    fputs("\n\n", stderr);
+  }
+}
+
+static void
+ParseMaps(CrashedProcess* crashinfo, const MinidumpMemoryRange& range) {
+  if (verbose) {
+    fputs("MD_LINUX_MAPS:\n", stderr);
+    fwrite(range.data(), range.length(), 1, stderr);
+  }
+  for (const uint8_t* ptr = range.data();
+       ptr < range.data() + range.length();) {
+    const uint8_t* eol = (uint8_t*)memchr(ptr, '\n',
+                                       range.data() + range.length() - ptr);
+    std::string line((const char*)ptr,
+                     eol ? eol - ptr : range.data() + range.length() - ptr);
+    ptr = eol ? eol + 1 : range.data() + range.length();
+    unsigned long long start, stop, offset;
+    char* permissions = NULL;
+    char* filename = NULL;
+    sscanf(line.c_str(), "%llx-%llx %m[-rwxp] %llx %*[:0-9a-f] %*d %ms",
+           &start, &stop, &permissions, &offset, &filename);
+    if (filename && *filename == '/') {
+      CrashedProcess::Mapping mapping;
+      mapping.permissions = 0;
+      if (strchr(permissions, 'r')) {
+        mapping.permissions |= PF_R;
+      }
+      if (strchr(permissions, 'w')) {
+        mapping.permissions |= PF_W;
+      }
+      if (strchr(permissions, 'x')) {
+        mapping.permissions |= PF_X;
+      }
+      mapping.start_address = start;
+      mapping.end_address = stop;
+      mapping.offset = offset;
+      if (filename) {
+        mapping.filename = filename;
+      }
+      crashinfo->mappings[mapping.start_address] = mapping;
+    }
+    free(permissions);
+    free(filename);
+  }
+  if (verbose) {
+    fputs("\n\n\n", stderr);
+  }
+}
+
+static void
+ParseEnvironment(CrashedProcess* crashinfo, const MinidumpMemoryRange& range) {
+  if (verbose) {
+    fputs("MD_LINUX_ENVIRON:\n", stderr);
+    char* env = new char[range.length()];
+    memcpy(env, range.data(), range.length());
+    int nul_count = 0;
+    for (char *ptr = env;;) {
+      ptr = (char *)memchr(ptr, '\000', range.length() - (ptr - env));
+      if (!ptr) {
+        break;
+      }
+      if (ptr > env && ptr[-1] == '\n') {
+        if (++nul_count > 5) {
+          // Some versions of Chrome try to rewrite the process' command line
+          // in a way that causes the environment to be corrupted. Afterwards,
+          // part of the environment will contain the trailing bit of the
+          // command line. The rest of the environment will be filled with
+          // NUL bytes.
+          // We detect this corruption by counting the number of consecutive
+          // NUL bytes. Normally, we would not expect any consecutive NUL
+          // bytes. But we are conservative and only suppress printing of
+          // the environment if we see at least five consecutive NULs.
+          fputs("Environment has been corrupted; no data available", stderr);
+          goto env_corrupted;
+        }
+      } else {
+        nul_count = 0;
+      }
+      *ptr = '\n';
+    }
+    fwrite(env, range.length(), 1, stderr);
+  env_corrupted:
+    delete[] env;
+    fputs("\n\n\n", stderr);
+  }
+}
+
+static void
+ParseAuxVector(CrashedProcess* crashinfo, const MinidumpMemoryRange& range) {
+  // Some versions of Chrome erroneously used the MD_LINUX_AUXV stream value
+  // when dumping /proc/$x/maps
+  if (range.length() > 17) {
+    // The AUXV vector contains binary data, whereas the maps always begin
+    // with an 8+ digit hex address followed by a hyphen and another 8+ digit
+    // address.
+    char addresses[18];
+    memcpy(addresses, range.data(), 17);
+    addresses[17] = '\000';
+    if (strspn(addresses, "0123456789abcdef-") == 17) {
+      ParseMaps(crashinfo, range);
+      return;
+    }
+  }
+
+  crashinfo->auxv = range.data();
+  crashinfo->auxv_length = range.length();
+}
+
+static void
+ParseCmdLine(CrashedProcess* crashinfo, const MinidumpMemoryRange& range) {
+  // The command line is supposed to use NUL bytes to separate arguments.
+  // As Chrome rewrites its own command line and (incorrectly) substitutes
+  // spaces, this is often not the case in our minidump files.
+  const char* cmdline = (const char*) range.data();
+  if (verbose) {
+    fputs("MD_LINUX_CMD_LINE:\n", stderr);
+    unsigned i = 0;
+    for (; i < range.length() && cmdline[i] && cmdline[i] != ' '; ++i) { }
+    fputs("argv[0] = \"", stderr);
+    fwrite(cmdline, i, 1, stderr);
+    fputs("\"\n", stderr);
+    for (unsigned j = ++i, argc = 1; j < range.length(); ++j) {
+      if (!cmdline[j] || cmdline[j] == ' ') {
+        fprintf(stderr, "argv[%d] = \"", argc++);
+        fwrite(cmdline + i, j - i, 1, stderr);
+        fputs("\"\n", stderr);
+        i = j + 1;
+      }
+    }
+    fputs("\n\n", stderr);
+  }
+
+  const char *binary_name = cmdline;
+  for (size_t i = 0; i < range.length(); ++i) {
+    if (cmdline[i] == '/') {
+      binary_name = cmdline + i + 1;
+    } else if (cmdline[i] == 0 || cmdline[i] == ' ') {
+      static const size_t fname_len = sizeof(crashinfo->prps.pr_fname) - 1;
+      static const size_t args_len = sizeof(crashinfo->prps.pr_psargs) - 1;
+      memset(crashinfo->prps.pr_fname, 0, fname_len + 1);
+      memset(crashinfo->prps.pr_psargs, 0, args_len + 1);
+      unsigned len = cmdline + i - binary_name;
+      memcpy(crashinfo->prps.pr_fname, binary_name,
+               len > fname_len ? fname_len : len);
+
+      len = range.length() > args_len ? args_len : range.length();
+      memcpy(crashinfo->prps.pr_psargs, cmdline, len);
+      for (unsigned j = 0; j < len; ++j) {
+        if (crashinfo->prps.pr_psargs[j] == 0)
+          crashinfo->prps.pr_psargs[j] = ' ';
+      }
+      break;
+    }
+  }
+}
+
+static void
+ParseDSODebugInfo(CrashedProcess* crashinfo, const MinidumpMemoryRange& range,
+                  const MinidumpMemoryRange& full_file) {
+  const MDRawDebug* debug = range.GetData<MDRawDebug>(0);
+  if (!debug) {
+    return;
+  }
+  if (verbose) {
+    fprintf(stderr,
+            "MD_LINUX_DSO_DEBUG:\n"
+            "Version: %d\n"
+            "Number of DSOs: %d\n"
+            "Brk handler: 0x%" PRIx64 "\n"
+            "Dynamic loader at: 0x%" PRIx64 "\n"
+            "_DYNAMIC: 0x%" PRIx64 "\n",
+            debug->version,
+            debug->dso_count,
+            static_cast<uint64_t>(debug->brk),
+            static_cast<uint64_t>(debug->ldbase),
+            static_cast<uint64_t>(debug->dynamic));
+  }
+  crashinfo->debug = *debug;
+  if (range.length() > sizeof(MDRawDebug)) {
+    char* dynamic_data = (char*)range.data() + sizeof(MDRawDebug);
+    crashinfo->dynamic_data.assign(dynamic_data,
+                                   range.length() - sizeof(MDRawDebug));
+  }
+  if (debug->map != kInvalidMDRVA) {
+    for (unsigned int i = 0; i < debug->dso_count; ++i) {
+      const MDRawLinkMap* link_map =
+          full_file.GetArrayElement<MDRawLinkMap>(debug->map, i);
+      if (link_map) {
+        if (verbose) {
+          fprintf(stderr,
+                  "#%03d: %" PRIx64 ", %" PRIx64 ", \"%s\"\n",
+                  i, static_cast<uint64_t>(link_map->addr),
+                  static_cast<uint64_t>(link_map->ld),
+                  full_file.GetAsciiMDString(link_map->name).c_str());
+        }
+        crashinfo->link_map.push_back(*link_map);
+      }
+    }
+  }
+  if (verbose) {
+    fputs("\n\n", stderr);
+  }
+}
+
+static void
+ParseExceptionStream(CrashedProcess* crashinfo,
+                     const MinidumpMemoryRange& range) {
+  const MDRawExceptionStream* exp = range.GetData<MDRawExceptionStream>(0);
+  crashinfo->crashing_tid = exp->thread_id;
+  crashinfo->fatal_signal = (int) exp->exception_record.exception_code;
+}
+
+static bool
+WriteThread(const CrashedProcess::Thread& thread, int fatal_signal) {
+  struct prstatus pr;
+  memset(&pr, 0, sizeof(pr));
+
+  pr.pr_info.si_signo = fatal_signal;
+  pr.pr_cursig = fatal_signal;
+  pr.pr_pid = thread.tid;
+  memcpy(&pr.pr_reg, &thread.regs, sizeof(user_regs_struct));
+
+  Nhdr nhdr;
+  memset(&nhdr, 0, sizeof(nhdr));
+  nhdr.n_namesz = 5;
+  nhdr.n_descsz = sizeof(struct prstatus);
+  nhdr.n_type = NT_PRSTATUS;
+  if (!writea(1, &nhdr, sizeof(nhdr)) ||
+      !writea(1, "CORE\0\0\0\0", 8) ||
+      !writea(1, &pr, sizeof(struct prstatus))) {
+    return false;
+  }
+
+#if defined(__i386__) || defined(__x86_64__)
+  nhdr.n_descsz = sizeof(user_fpregs_struct);
+  nhdr.n_type = NT_FPREGSET;
+  if (!writea(1, &nhdr, sizeof(nhdr)) ||
+      !writea(1, "CORE\0\0\0\0", 8) ||
+      !writea(1, &thread.fpregs, sizeof(user_fpregs_struct))) {
+    return false;
+  }
+#endif
+
+#if defined(__i386__)
+  nhdr.n_descsz = sizeof(user_fpxregs_struct);
+  nhdr.n_type = NT_PRXFPREG;
+  if (!writea(1, &nhdr, sizeof(nhdr)) ||
+      !writea(1, "LINUX\0\0\0", 8) ||
+      !writea(1, &thread.fpxregs, sizeof(user_fpxregs_struct))) {
+    return false;
+  }
+#endif
+
+  return true;
+}
+
+static void
+ParseModuleStream(CrashedProcess* crashinfo, const MinidumpMemoryRange& range,
+                  const MinidumpMemoryRange& full_file) {
+  if (verbose) {
+    fputs("MD_MODULE_LIST_STREAM:\n", stderr);
+  }
+  const uint32_t num_mappings = *range.GetData<uint32_t>(0);
+  for (unsigned i = 0; i < num_mappings; ++i) {
+    CrashedProcess::Mapping mapping;
+    const MDRawModule* rawmodule = reinterpret_cast<const MDRawModule*>(
+        range.GetArrayElement(sizeof(uint32_t), MD_MODULE_SIZE, i));
+    mapping.start_address = rawmodule->base_of_image;
+    mapping.end_address = rawmodule->size_of_image + rawmodule->base_of_image;
+
+    if (crashinfo->mappings.find(mapping.start_address) ==
+        crashinfo->mappings.end()) {
+      // We prefer data from MD_LINUX_MAPS over MD_MODULE_LIST_STREAM, as
+      // the former is a strict superset of the latter.
+      crashinfo->mappings[mapping.start_address] = mapping;
+    }
+
+    const MDCVInfoPDB70* record = reinterpret_cast<const MDCVInfoPDB70*>(
+        full_file.GetData(rawmodule->cv_record.rva, MDCVInfoPDB70_minsize));
+    char guid[40];
+    sprintf(guid, "%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X",
+            record->signature.data1, record->signature.data2,
+            record->signature.data3,
+            record->signature.data4[0], record->signature.data4[1],
+            record->signature.data4[2], record->signature.data4[3],
+            record->signature.data4[4], record->signature.data4[5],
+            record->signature.data4[6], record->signature.data4[7]);
+    std::string filename =
+        full_file.GetAsciiMDString(rawmodule->module_name_rva);
+    size_t slash = filename.find_last_of('/');
+    std::string basename = slash == std::string::npos ?
+      filename : filename.substr(slash + 1);
+    if (strcmp(guid, "00000000-0000-0000-0000-000000000000")) {
+      std::string prefix;
+      if (!g_custom_so_basedir.empty())
+        prefix = g_custom_so_basedir;
+      else
+        prefix = std::string("/var/lib/breakpad/") + guid + "-" + basename;
+
+      crashinfo->signatures[rawmodule->base_of_image] = prefix + basename;
+    }
+
+    if (verbose) {
+      fprintf(stderr, "0x%08llX-0x%08llX, ChkSum: 0x%08X, GUID: %s, \"%s\"\n",
+              (unsigned long long)rawmodule->base_of_image,
+              (unsigned long long)rawmodule->base_of_image +
+              rawmodule->size_of_image,
+              rawmodule->checksum, guid, filename.c_str());
+    }
+  }
+  if (verbose) {
+    fputs("\n\n", stderr);
+  }
+}
+
+static void
+AddDataToMapping(CrashedProcess* crashinfo, const std::string& data,
+                 uintptr_t addr) {
+  for (std::map<uint64_t, CrashedProcess::Mapping>::iterator
+         iter = crashinfo->mappings.begin();
+       iter != crashinfo->mappings.end();
+       ++iter) {
+    if (addr >= iter->second.start_address &&
+        addr < iter->second.end_address) {
+      CrashedProcess::Mapping mapping = iter->second;
+      if ((addr & ~4095) != iter->second.start_address) {
+        // If there are memory pages in the mapping prior to where the
+        // data starts, truncate the existing mapping so that it ends with
+        // the page immediately preceding the data region.
+        iter->second.end_address = addr & ~4095;
+        if (!mapping.filename.empty()) {
+          // "mapping" is a copy of "iter->second". We are splitting the
+          // existing mapping into two separate ones when we write the data
+          // to the core file. The first one does not have any associated
+          // data in the core file, the second one is backed by data that is
+          // included with the core file.
+          // If this mapping wasn't supposed to be anonymous, then we also
+          // have to update the file offset upon splitting the mapping.
+          mapping.offset += iter->second.end_address -
+            iter->second.start_address;
+        }
+      }
+      // Create a new mapping that contains the data contents. We often
+      // limit the amount of data that is actually written to the core
+      // file. But it is OK if the mapping itself extends past the end of
+      // the data.
+      mapping.start_address = addr & ~4095;
+      mapping.data.assign(addr & 4095, 0).append(data);
+      mapping.data.append(-mapping.data.size() & 4095, 0);
+      crashinfo->mappings[mapping.start_address] = mapping;
+      return;
+    }
+  }
+  // Didn't find a suitable existing mapping for the data. Create a new one.
+  CrashedProcess::Mapping mapping;
+  mapping.permissions = PF_R | PF_W;
+  mapping.start_address = addr & ~4095;
+  mapping.end_address =
+    (addr + data.size() + 4095) & ~4095;
+  mapping.data.assign(addr & 4095, 0).append(data);
+  mapping.data.append(-mapping.data.size() & 4095, 0);
+  crashinfo->mappings[mapping.start_address] = mapping;
+}
+
+static void
+AugmentMappings(CrashedProcess* crashinfo,
+                const MinidumpMemoryRange& full_file) {
+  // For each thread, find the memory mapping that matches the thread's stack.
+  // Then adjust the mapping to include the stack dump.
+  for (unsigned i = 0; i < crashinfo->threads.size(); ++i) {
+    const CrashedProcess::Thread& thread = crashinfo->threads[i];
+    AddDataToMapping(crashinfo,
+                     std::string((char *)thread.stack, thread.stack_length),
+                     thread.stack_addr);
+  }
+
+  // Create a new link map with information about DSOs. We move this map to
+  // the beginning of the address space, as this area should always be
+  // available.
+  static const uintptr_t start_addr = 4096;
+  std::string data;
+  struct r_debug debug = { 0 };
+  debug.r_version = crashinfo->debug.version;
+  debug.r_brk = (ElfW(Addr))crashinfo->debug.brk;
+  debug.r_state = r_debug::RT_CONSISTENT;
+  debug.r_ldbase = (ElfW(Addr))crashinfo->debug.ldbase;
+  debug.r_map = crashinfo->debug.dso_count > 0 ?
+    (struct link_map*)(start_addr + sizeof(debug)) : 0;
+  data.append((char*)&debug, sizeof(debug));
+
+  struct link_map* prev = 0;
+  for (std::vector<MDRawLinkMap>::iterator iter = crashinfo->link_map.begin();
+       iter != crashinfo->link_map.end();
+       ++iter) {
+    struct link_map link_map = { 0 };
+    link_map.l_addr = (ElfW(Addr))iter->addr;
+    link_map.l_name = (char*)(start_addr + data.size() + sizeof(link_map));
+    link_map.l_ld = (ElfW(Dyn)*)iter->ld;
+    link_map.l_prev = prev;
+    prev = (struct link_map*)(start_addr + data.size());
+    std::string filename = full_file.GetAsciiMDString(iter->name);
+
+    // Look up signature for this filename. If available, change filename
+    // to point to GUID, instead.
+    std::map<uintptr_t, std::string>::const_iterator guid =
+      crashinfo->signatures.find((uintptr_t)iter->addr);
+    if (guid != crashinfo->signatures.end()) {
+      filename = guid->second;
+    }
+
+    if (std::distance(iter, crashinfo->link_map.end()) == 1) {
+      link_map.l_next = 0;
+    } else {
+      link_map.l_next = (struct link_map*)(start_addr + data.size() +
+                                           sizeof(link_map) +
+                                           ((filename.size() + 8) & ~7));
+    }
+    data.append((char*)&link_map, sizeof(link_map));
+    data.append(filename);
+    data.append(8 - (filename.size() & 7), 0);
+  }
+  AddDataToMapping(crashinfo, data, start_addr);
+
+  // Map the page containing the _DYNAMIC array
+  if (!crashinfo->dynamic_data.empty()) {
+    // Make _DYNAMIC DT_DEBUG entry point to our link map
+    for (int i = 0;; ++i) {
+      ElfW(Dyn) dyn;
+      if ((i+1)*sizeof(dyn) > crashinfo->dynamic_data.length()) {
+      no_dt_debug:
+        if (verbose) {
+          fprintf(stderr, "No DT_DEBUG entry found\n");
+        }
+        return;
+      }
+      memcpy(&dyn, crashinfo->dynamic_data.c_str() + i*sizeof(dyn),
+             sizeof(dyn));
+      if (dyn.d_tag == DT_DEBUG) {
+        crashinfo->dynamic_data.replace(i*sizeof(dyn) +
+                                       offsetof(ElfW(Dyn), d_un.d_ptr),
+                                       sizeof(start_addr),
+                                       (char*)&start_addr, sizeof(start_addr));
+        break;
+      } else if (dyn.d_tag == DT_NULL) {
+        goto no_dt_debug;
+      }
+    }
+    AddDataToMapping(crashinfo, crashinfo->dynamic_data,
+                     (uintptr_t)crashinfo->debug.dynamic);
+  }
+}
+
+int
+main(int argc, char** argv) {
+  int argi = 1;
+  while (argi < argc && argv[argi][0] == '-') {
+    if (!strcmp(argv[argi], "-v")) {
+      verbose = true;
+    } else if (!strcmp(argv[argi], "--sobasedir")) {
+      argi++;
+      if (argi >= argc) {
+        fprintf(stderr, "--sobasedir expects an argument.");
+        return usage(argv[0]);
+      }
+
+      g_custom_so_basedir = argv[argi];
+    } else {
+      return usage(argv[0]);
+    }
+    argi++;
+  }
+
+  if (argc != argi + 1)
+    return usage(argv[0]);
+
+  MemoryMappedFile mapped_file(argv[argi], 0);
+  if (!mapped_file.data()) {
+    fprintf(stderr, "Failed to mmap dump file\n");
+    return 1;
+  }
+
+  MinidumpMemoryRange dump(mapped_file.data(), mapped_file.size());
+
+  const MDRawHeader* header = dump.GetData<MDRawHeader>(0);
+
+  CrashedProcess crashinfo;
+
+  // Always check the system info first, as that allows us to tell whether
+  // this is a minidump file that is compatible with our converter.
+  bool ok = false;
+  for (unsigned i = 0; i < header->stream_count; ++i) {
+    const MDRawDirectory* dirent =
+        dump.GetArrayElement<MDRawDirectory>(header->stream_directory_rva, i);
+    switch (dirent->stream_type) {
+      case MD_SYSTEM_INFO_STREAM:
+        ParseSystemInfo(&crashinfo, dump.Subrange(dirent->location), dump);
+        ok = true;
+        break;
+      default:
+        break;
+    }
+  }
+  if (!ok) {
+    fprintf(stderr, "Cannot determine input file format.\n");
+    _exit(1);
+  }
+
+  for (unsigned i = 0; i < header->stream_count; ++i) {
+    const MDRawDirectory* dirent =
+        dump.GetArrayElement<MDRawDirectory>(header->stream_directory_rva, i);
+    switch (dirent->stream_type) {
+      case MD_THREAD_LIST_STREAM:
+        ParseThreadList(&crashinfo, dump.Subrange(dirent->location), dump);
+        break;
+      case MD_LINUX_CPU_INFO:
+        ParseCPUInfo(&crashinfo, dump.Subrange(dirent->location));
+        break;
+      case MD_LINUX_PROC_STATUS:
+        ParseProcessStatus(&crashinfo, dump.Subrange(dirent->location));
+        break;
+      case MD_LINUX_LSB_RELEASE:
+        ParseLSBRelease(&crashinfo, dump.Subrange(dirent->location));
+        break;
+      case MD_LINUX_ENVIRON:
+        ParseEnvironment(&crashinfo, dump.Subrange(dirent->location));
+        break;
+      case MD_LINUX_MAPS:
+        ParseMaps(&crashinfo, dump.Subrange(dirent->location));
+        break;
+      case MD_LINUX_AUXV:
+        ParseAuxVector(&crashinfo, dump.Subrange(dirent->location));
+        break;
+      case MD_LINUX_CMD_LINE:
+        ParseCmdLine(&crashinfo, dump.Subrange(dirent->location));
+        break;
+      case MD_LINUX_DSO_DEBUG:
+        ParseDSODebugInfo(&crashinfo, dump.Subrange(dirent->location), dump);
+        break;
+      case MD_EXCEPTION_STREAM:
+        ParseExceptionStream(&crashinfo, dump.Subrange(dirent->location));
+        break;
+      case MD_MODULE_LIST_STREAM:
+        ParseModuleStream(&crashinfo, dump.Subrange(dirent->location), dump);
+        break;
+      default:
+        if (verbose)
+          fprintf(stderr, "Skipping %x\n", dirent->stream_type);
+    }
+  }
+
+  AugmentMappings(&crashinfo, dump);
+
+  // Write the ELF header. The file will look like:
+  //   ELF header
+  //   Phdr for the PT_NOTE
+  //   Phdr for each of the thread stacks
+  //   PT_NOTE
+  //   each of the thread stacks
+  Ehdr ehdr;
+  memset(&ehdr, 0, sizeof(Ehdr));
+  ehdr.e_ident[0] = ELFMAG0;
+  ehdr.e_ident[1] = ELFMAG1;
+  ehdr.e_ident[2] = ELFMAG2;
+  ehdr.e_ident[3] = ELFMAG3;
+  ehdr.e_ident[4] = ELF_CLASS;
+  ehdr.e_ident[5] = sex() ? ELFDATA2MSB : ELFDATA2LSB;
+  ehdr.e_ident[6] = EV_CURRENT;
+  ehdr.e_type     = ET_CORE;
+  ehdr.e_machine  = ELF_ARCH;
+  ehdr.e_version  = EV_CURRENT;
+  ehdr.e_phoff    = sizeof(Ehdr);
+  ehdr.e_ehsize   = sizeof(Ehdr);
+  ehdr.e_phentsize= sizeof(Phdr);
+  ehdr.e_phnum    = 1 +                         // PT_NOTE
+                    crashinfo.mappings.size();  // memory mappings
+  ehdr.e_shentsize= sizeof(Shdr);
+  if (!writea(1, &ehdr, sizeof(Ehdr)))
+    return 1;
+
+  size_t offset = sizeof(Ehdr) + ehdr.e_phnum * sizeof(Phdr);
+  size_t filesz = sizeof(Nhdr) + 8 + sizeof(prpsinfo) +
+                  // sizeof(Nhdr) + 8 + sizeof(user) +
+                  sizeof(Nhdr) + 8 + crashinfo.auxv_length +
+                  crashinfo.threads.size() * (
+                    (sizeof(Nhdr) + 8 + sizeof(prstatus))
+#if defined(__i386__) || defined(__x86_64__)
+                   + sizeof(Nhdr) + 8 + sizeof(user_fpregs_struct)
+#endif
+#if defined(__i386__)
+                   + sizeof(Nhdr) + 8 + sizeof(user_fpxregs_struct)
+#endif
+                    );
+
+  Phdr phdr;
+  memset(&phdr, 0, sizeof(Phdr));
+  phdr.p_type = PT_NOTE;
+  phdr.p_offset = offset;
+  phdr.p_filesz = filesz;
+  if (!writea(1, &phdr, sizeof(phdr)))
+    return 1;
+
+  phdr.p_type = PT_LOAD;
+  phdr.p_align = 4096;
+  size_t note_align = phdr.p_align - ((offset+filesz) % phdr.p_align);
+  if (note_align == phdr.p_align)
+    note_align = 0;
+  offset += note_align;
+
+  for (std::map<uint64_t, CrashedProcess::Mapping>::const_iterator iter =
+         crashinfo.mappings.begin();
+       iter != crashinfo.mappings.end(); ++iter) {
+    const CrashedProcess::Mapping& mapping = iter->second;
+    if (mapping.permissions == 0xFFFFFFFF) {
+      // This is a map that we found in MD_MODULE_LIST_STREAM (as opposed to
+      // MD_LINUX_MAPS). It lacks some of the information that we would like
+      // to include.
+      phdr.p_flags = PF_R;
+    } else {
+      phdr.p_flags = mapping.permissions;
+    }
+    phdr.p_vaddr = mapping.start_address;
+    phdr.p_memsz = mapping.end_address - mapping.start_address;
+    if (mapping.data.size()) {
+      offset += filesz;
+      filesz = mapping.data.size();
+      phdr.p_filesz = mapping.data.size();
+      phdr.p_offset = offset;
+    } else {
+      phdr.p_filesz = 0;
+      phdr.p_offset = 0;
+    }
+    if (!writea(1, &phdr, sizeof(phdr)))
+      return 1;
+  }
+
+  Nhdr nhdr;
+  memset(&nhdr, 0, sizeof(nhdr));
+  nhdr.n_namesz = 5;
+  nhdr.n_descsz = sizeof(prpsinfo);
+  nhdr.n_type = NT_PRPSINFO;
+  if (!writea(1, &nhdr, sizeof(nhdr)) ||
+      !writea(1, "CORE\0\0\0\0", 8) ||
+      !writea(1, &crashinfo.prps, sizeof(prpsinfo))) {
+    return 1;
+  }
+
+  nhdr.n_descsz = crashinfo.auxv_length;
+  nhdr.n_type = NT_AUXV;
+  if (!writea(1, &nhdr, sizeof(nhdr)) ||
+      !writea(1, "CORE\0\0\0\0", 8) ||
+      !writea(1, crashinfo.auxv, crashinfo.auxv_length)) {
+    return 1;
+  }
+
+  for (unsigned i = 0; i < crashinfo.threads.size(); ++i) {
+    if (crashinfo.threads[i].tid == crashinfo.crashing_tid) {
+      WriteThread(crashinfo.threads[i], crashinfo.fatal_signal);
+      break;
+    }
+  }
+
+  for (unsigned i = 0; i < crashinfo.threads.size(); ++i) {
+    if (crashinfo.threads[i].tid != crashinfo.crashing_tid)
+      WriteThread(crashinfo.threads[i], 0);
+  }
+
+  if (note_align) {
+    google_breakpad::scoped_array<char> scratch(new char[note_align]);
+    memset(scratch.get(), 0, note_align);
+    if (!writea(1, scratch.get(), note_align))
+      return 1;
+  }
+
+  for (std::map<uint64_t, CrashedProcess::Mapping>::const_iterator iter =
+         crashinfo.mappings.begin();
+       iter != crashinfo.mappings.end(); ++iter) {
+    const CrashedProcess::Mapping& mapping = iter->second;
+    if (mapping.data.size()) {
+      if (!writea(1, mapping.data.c_str(), mapping.data.size()))
+        return 1;
+    }
+  }
+
+  return 0;
+}
diff --git a/google-breakpad/src/tools/linux/md2core/minidump_memory_range.h b/google-breakpad/src/tools/linux/md2core/minidump_memory_range.h
new file mode 100644
index 0000000..a793e2c
--- /dev/null
+++ b/google-breakpad/src/tools/linux/md2core/minidump_memory_range.h
@@ -0,0 +1,89 @@
+// Copyright (c) 2011, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// minidump_memory_range.h: Define the google_breakpad::MinidumpMemoryRange
+// class, which adds methods for handling minidump specific data structures
+// on top of google_breakpad::MemoryRange. See common/memory_range.h for
+// more details on MemoryRange.
+
+#ifndef TOOLS_LINUX_MD2CORE_MINIDUMP_MEMORY_RANGE_H_
+#define TOOLS_LINUX_MD2CORE_MINIDUMP_MEMORY_RANGE_H_
+
+#include <string>
+
+#include "common/memory_range.h"
+#include "google_breakpad/common/minidump_format.h"
+
+namespace google_breakpad {
+
+// A derived class of MemoryRange with added methods for handling minidump
+// specific data structures. To avoid virtual functions, it is not designed
+// to be used polymorphically.
+class MinidumpMemoryRange : public MemoryRange {
+ public:
+  MinidumpMemoryRange() {}
+
+  MinidumpMemoryRange(const void* data, size_t length)
+      : MemoryRange(data, length) {}
+
+  // Returns a subrange of |length| bytes at |offset| bytes of this memory
+  // range, or an empty range if the subrange is out of bounds.
+  // This methods overrides the base implemementation in order to return
+  // an instance of MinidumpMemoryRange instead of MemoryRange.
+  MinidumpMemoryRange Subrange(size_t sub_offset, size_t sub_length) const {
+    if (Covers(sub_offset, sub_length))
+      return MinidumpMemoryRange(data() + sub_offset, sub_length);
+    return MinidumpMemoryRange();
+  }
+
+  // Returns a subrange that covers the offset and length specified by
+  // |location|, or an empty range if the subrange is out of bounds.
+  MinidumpMemoryRange Subrange(const MDLocationDescriptor& location) const {
+    return MinidumpMemoryRange::Subrange(location.rva, location.data_size);
+  }
+
+  // Gets a STL string from a MDString at |sub_offset| bytes of this memory
+  // range. This method only works correctly for ASCII characters and does
+  // not convert between UTF-16 and UTF-8.
+  const std::string GetAsciiMDString(size_t sub_offset) const {
+    std::string str;
+    const MDString* md_str = GetData<MDString>(sub_offset);
+    if (md_str) {
+      const uint16_t* buffer = &md_str->buffer[0];
+      for (uint32_t i = 0; i < md_str->length && buffer[i]; ++i) {
+        str.push_back(buffer[i]);
+      }
+    }
+    return str;
+  }
+};
+
+}  // namespace google_breakpad
+
+#endif  // TOOLS_LINUX_MD2CORE_MINIDUMP_MEMORY_RANGE_H_
diff --git a/google-breakpad/src/tools/linux/md2core/minidump_memory_range_unittest.cc b/google-breakpad/src/tools/linux/md2core/minidump_memory_range_unittest.cc
new file mode 100644
index 0000000..fe4ded8
--- /dev/null
+++ b/google-breakpad/src/tools/linux/md2core/minidump_memory_range_unittest.cc
@@ -0,0 +1,258 @@
+// Copyright (c) 2011, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// minidump_memory_range_unittest.cc:
+// Unit tests for google_breakpad::MinidumpMemoryRange.
+
+#include "breakpad_googletest_includes.h"
+#include "tools/linux/md2core/minidump_memory_range.h"
+
+using google_breakpad::MinidumpMemoryRange;
+using testing::Message;
+
+namespace {
+
+const uint32_t kBuffer[10] = { 0 };
+const size_t kBufferSize = sizeof(kBuffer);
+const uint8_t* kBufferPointer = reinterpret_cast<const uint8_t*>(kBuffer);
+
+// Test vectors for verifying Covers, GetData, and Subrange.
+const struct {
+  bool valid;
+  size_t offset;
+  size_t length;
+} kSubranges[] = {
+  { true, 0, 0 },
+  { true, 0, 2 },
+  { true, 0, kBufferSize },
+  { true, 2, 0 },
+  { true, 2, 4 },
+  { true, 2, kBufferSize - 2 },
+  { true, kBufferSize - 1, 1 },
+  { false, kBufferSize, 0 },
+  { false, kBufferSize, static_cast<size_t>(-1) },
+  { false, kBufferSize + 1, 0 },
+  { false, static_cast<size_t>(-1), 2 },
+  { false, 1, kBufferSize },
+  { false, kBufferSize - 1, 2 },
+  { false, 0, static_cast<size_t>(-1) },
+  { false, 1, static_cast<size_t>(-1) },
+};
+const size_t kNumSubranges = sizeof(kSubranges) / sizeof(kSubranges[0]);
+
+// Test vectors for verifying GetArrayElement.
+const struct {
+  size_t offset;
+  size_t size;
+  size_t index;
+  const void* const pointer;
+} kElements[] = {
+  // Valid array elemenets
+  { 0, 1, 0, kBufferPointer },
+  { 0, 1, 1, kBufferPointer + 1 },
+  { 0, 1, kBufferSize - 1, kBufferPointer + kBufferSize - 1 },
+  { 0, 2, 1, kBufferPointer + 2 },
+  { 0, 4, 2, kBufferPointer + 8 },
+  { 0, 4, 9, kBufferPointer + 36 },
+  { kBufferSize - 1, 1, 0, kBufferPointer + kBufferSize - 1 },
+  // Invalid array elemenets
+  { 0, 1, kBufferSize, NULL },
+  { 0, 4, 10, NULL },
+  { kBufferSize - 1, 1, 1, NULL },
+  { kBufferSize - 1, 2, 0, NULL },
+  { kBufferSize, 1, 0, NULL },
+};
+const size_t kNumElements = sizeof(kElements) / sizeof(kElements[0]);
+
+}  // namespace
+
+TEST(MinidumpMemoryRangeTest, DefaultConstructor) {
+  MinidumpMemoryRange range;
+  EXPECT_EQ(NULL, range.data());
+  EXPECT_EQ(0U, range.length());
+}
+
+TEST(MinidumpMemoryRangeTest, ConstructorWithDataAndLength) {
+  MinidumpMemoryRange range(kBuffer, kBufferSize);
+  EXPECT_EQ(kBufferPointer, range.data());
+  EXPECT_EQ(kBufferSize, range.length());
+}
+
+TEST(MinidumpMemoryRangeTest, Reset) {
+  MinidumpMemoryRange range;
+  range.Reset();
+  EXPECT_EQ(NULL, range.data());
+  EXPECT_EQ(0U, range.length());
+
+  range.Set(kBuffer, kBufferSize);
+  EXPECT_EQ(kBufferPointer, range.data());
+  EXPECT_EQ(kBufferSize, range.length());
+
+  range.Reset();
+  EXPECT_EQ(NULL, range.data());
+  EXPECT_EQ(0U, range.length());
+}
+
+TEST(MinidumpMemoryRangeTest, Set) {
+  MinidumpMemoryRange range;
+  range.Set(kBuffer, kBufferSize);
+  EXPECT_EQ(kBufferPointer, range.data());
+  EXPECT_EQ(kBufferSize, range.length());
+
+  range.Set(NULL, 0);
+  EXPECT_EQ(NULL, range.data());
+  EXPECT_EQ(0U, range.length());
+}
+
+TEST(MinidumpMemoryRangeTest, SubrangeOfEmptyMemoryRange) {
+  MinidumpMemoryRange range;
+  MinidumpMemoryRange subrange = range.Subrange(0, 10);
+  EXPECT_EQ(NULL, subrange.data());
+  EXPECT_EQ(0U, subrange.length());
+}
+
+TEST(MinidumpMemoryRangeTest, SubrangeAndGetData) {
+  MinidumpMemoryRange range(kBuffer, kBufferSize);
+  for (size_t i = 0; i < kNumSubranges; ++i) {
+    bool valid = kSubranges[i].valid;
+    size_t sub_offset = kSubranges[i].offset;
+    size_t sub_length = kSubranges[i].length;
+    SCOPED_TRACE(Message() << "offset=" << sub_offset
+                 << ", length=" << sub_length);
+
+    MinidumpMemoryRange subrange = range.Subrange(sub_offset, sub_length);
+    if (valid) {
+      EXPECT_TRUE(range.Covers(sub_offset, sub_length));
+      EXPECT_EQ(kBufferPointer + sub_offset,
+                range.GetData(sub_offset, sub_length));
+      EXPECT_EQ(kBufferPointer + sub_offset, subrange.data());
+      EXPECT_EQ(sub_length, subrange.length());
+    } else {
+      EXPECT_FALSE(range.Covers(sub_offset, sub_length));
+      EXPECT_EQ(NULL, range.GetData(sub_offset, sub_length));
+      EXPECT_EQ(NULL, subrange.data());
+      EXPECT_EQ(0U, subrange.length());
+    }
+  }
+}
+
+TEST(MinidumpMemoryRangeTest, SubrangeWithMDLocationDescriptor) {
+  MinidumpMemoryRange range(kBuffer, kBufferSize);
+  for (size_t i = 0; i < kNumSubranges; ++i) {
+    bool valid = kSubranges[i].valid;
+    size_t sub_offset = kSubranges[i].offset;
+    size_t sub_length = kSubranges[i].length;
+    SCOPED_TRACE(Message() << "offset=" << sub_offset
+                 << ", length=" << sub_length);
+
+    MDLocationDescriptor location;
+    location.rva = sub_offset;
+    location.data_size = sub_length;
+    MinidumpMemoryRange subrange = range.Subrange(location);
+    if (valid) {
+      EXPECT_TRUE(range.Covers(sub_offset, sub_length));
+      EXPECT_EQ(kBufferPointer + sub_offset,
+                range.GetData(sub_offset, sub_length));
+      EXPECT_EQ(kBufferPointer + sub_offset, subrange.data());
+      EXPECT_EQ(sub_length, subrange.length());
+    } else {
+      EXPECT_FALSE(range.Covers(sub_offset, sub_length));
+      EXPECT_EQ(NULL, range.GetData(sub_offset, sub_length));
+      EXPECT_EQ(NULL, subrange.data());
+      EXPECT_EQ(0U, subrange.length());
+    }
+  }
+}
+
+TEST(MinidumpMemoryRangeTest, GetDataWithTemplateType) {
+  MinidumpMemoryRange range(kBuffer, kBufferSize);
+  const char* char_pointer = range.GetData<char>(0);
+  EXPECT_EQ(reinterpret_cast<const char*>(kBufferPointer), char_pointer);
+  const int* int_pointer = range.GetData<int>(0);
+  EXPECT_EQ(reinterpret_cast<const int*>(kBufferPointer), int_pointer);
+}
+
+TEST(MinidumpMemoryRangeTest, GetArrayElement) {
+  MinidumpMemoryRange range(kBuffer, kBufferSize);
+  for (size_t i = 0; i < kNumElements; ++i) {
+    size_t element_offset = kElements[i].offset;
+    size_t element_size = kElements[i].size;
+    unsigned element_index = kElements[i].index;
+    const void* const element_pointer = kElements[i].pointer;
+    SCOPED_TRACE(Message() << "offset=" << element_offset
+                 << ", size=" << element_size
+                 << ", index=" << element_index);
+    EXPECT_EQ(element_pointer, range.GetArrayElement(
+        element_offset, element_size, element_index));
+  }
+}
+
+TEST(MinidumpMemoryRangeTest, GetArrayElmentWithTemplateType) {
+  MinidumpMemoryRange range(kBuffer, kBufferSize);
+  const char* char_pointer = range.GetArrayElement<char>(0, 0);
+  EXPECT_EQ(reinterpret_cast<const char*>(kBufferPointer), char_pointer);
+  const int* int_pointer = range.GetArrayElement<int>(0, 0);
+  EXPECT_EQ(reinterpret_cast<const int*>(kBufferPointer), int_pointer);
+}
+
+TEST(MinidumpMemoryRangeTest, GetAsciiMDString) {
+  uint8_t buffer[100] = { 0 };
+
+  MDString* md_str = reinterpret_cast<MDString*>(buffer);
+  md_str->length = 4;
+  md_str->buffer[0] = 'T';
+  md_str->buffer[1] = 'e';
+  md_str->buffer[2] = 's';
+  md_str->buffer[3] = 't';
+  md_str->buffer[4] = '\0';
+
+  size_t str2_offset =
+      sizeof(MDString) + (md_str->length + 1) * sizeof(uint16_t);
+
+  md_str = reinterpret_cast<MDString*>(buffer + str2_offset);
+  md_str->length = 9;  // Test length larger than actual string
+  md_str->buffer[0] = 'S';
+  md_str->buffer[1] = 't';
+  md_str->buffer[2] = 'r';
+  md_str->buffer[3] = 'i';
+  md_str->buffer[4] = 'n';
+  md_str->buffer[5] = 'g';
+  md_str->buffer[6] = '\0';
+  md_str->buffer[7] = '1';
+  md_str->buffer[8] = '2';
+
+  MinidumpMemoryRange range(buffer, sizeof(buffer));
+  EXPECT_EQ("Test", range.GetAsciiMDString(0));
+  EXPECT_EQ("String", range.GetAsciiMDString(str2_offset));
+
+  // Test out-of-bounds cases.
+  EXPECT_EQ("", range.GetAsciiMDString(
+      sizeof(buffer) - sizeof(MDString) + 1));
+  EXPECT_EQ("", range.GetAsciiMDString(sizeof(buffer)));
+}
diff --git a/google-breakpad/src/tools/linux/symupload/minidump_upload.cc b/google-breakpad/src/tools/linux/symupload/minidump_upload.cc
new file mode 100644
index 0000000..94c3492
--- /dev/null
+++ b/google-breakpad/src/tools/linux/symupload/minidump_upload.cc
@@ -0,0 +1,151 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// minidump_upload.cc: Upload a minidump to a HTTP server.
+// The upload is sent as a multipart/form-data POST request with
+// the following parameters:
+//  prod: the product name
+//  ver: the product version
+//  symbol_file: the breakpad format symbol file
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#include <string>
+
+#include "common/linux/http_upload.h"
+#include "common/using_std_string.h"
+
+using google_breakpad::HTTPUpload;
+
+struct Options {
+  string minidumpPath;
+  string uploadURLStr;
+  string product;
+  string version;
+  string proxy;
+  string proxy_user_pwd;
+  bool success;
+};
+
+//=============================================================================
+static void Start(Options *options) {
+  std::map<string, string> parameters;
+  // Add parameters
+  parameters["prod"] = options->product;
+  parameters["ver"] = options->version;
+
+  // Send it
+  string response, error;
+  bool success = HTTPUpload::SendRequest(options->uploadURLStr,
+                                         parameters,
+                                         options->minidumpPath,
+                                         "upload_file_minidump",
+                                         options->proxy,
+                                         options->proxy_user_pwd,
+                                         "",
+                                         &response,
+                                         NULL,
+                                         &error);
+
+  if (success) {
+    printf("Successfully sent the minidump file.\n");
+  } else {
+    printf("Failed to send minidump: %s\n", error.c_str());
+  }
+  printf("Response:\n");
+  printf("%s\n", response.c_str());
+  options->success = success;
+}
+
+//=============================================================================
+static void
+Usage(int argc, const char *argv[]) {
+  fprintf(stderr, "Submit minidump information.\n");
+  fprintf(stderr, "Usage: %s [options...] -p <product> -v <version> <minidump> "
+          "<upload-URL>\n", argv[0]);
+  fprintf(stderr, "Options:\n");
+  fprintf(stderr, "<minidump> should be a minidump.\n");
+  fprintf(stderr, "<upload-URL> is the destination for the upload\n");
+
+  fprintf(stderr, "-p:\t <product> Product name\n");
+  fprintf(stderr, "-v:\t <version> Product version\n");
+  fprintf(stderr, "-x:\t <host[:port]> Use HTTP proxy on given port\n");
+  fprintf(stderr, "-u:\t <user[:password]> Set proxy user and password\n");
+  fprintf(stderr, "-h:\t Usage\n");
+  fprintf(stderr, "-?:\t Usage\n");
+}
+
+//=============================================================================
+static void
+SetupOptions(int argc, const char *argv[], Options *options) {
+  extern int optind;
+  int ch;
+
+  while ((ch = getopt(argc, (char * const *)argv, "p:u:v:x:h?")) != -1) {
+    switch (ch) {
+      case 'p':
+        options->product = optarg;
+        break;
+      case 'u':
+        options->proxy_user_pwd = optarg;
+        break;
+      case 'v':
+        options->version = optarg;
+        break;
+      case 'x':
+        options->proxy = optarg;
+        break;
+
+      default:
+        fprintf(stderr, "Invalid option '%c'\n", ch);
+        Usage(argc, argv);
+        exit(1);
+        break;
+    }
+  }
+
+  if ((argc - optind) != 2) {
+    fprintf(stderr, "%s: Missing symbols file and/or upload-URL\n", argv[0]);
+    Usage(argc, argv);
+    exit(1);
+  }
+
+  options->minidumpPath = argv[optind];
+  options->uploadURLStr = argv[optind + 1];
+}
+
+//=============================================================================
+int main(int argc, const char* argv[]) {
+  Options options;
+  SetupOptions(argc, argv, &options);
+  Start(&options);
+  return options.success ? 0 : 1;
+}
diff --git a/google-breakpad/src/tools/linux/symupload/sym_upload.cc b/google-breakpad/src/tools/linux/symupload/sym_upload.cc
new file mode 100644
index 0000000..09e82ca
--- /dev/null
+++ b/google-breakpad/src/tools/linux/symupload/sym_upload.cc
@@ -0,0 +1,229 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// symupload.cc: Upload a symbol file to a HTTP server.  The upload is sent as
+// a multipart/form-data POST request with the following parameters:
+//  code_file: the basename of the module, e.g. "app"
+//  debug_file: the basename of the debugging file, e.g. "app"
+//  debug_identifier: the debug file's identifier, usually consisting of
+//                    the guid and age embedded in the pdb, e.g.
+//                    "11111111BBBB3333DDDD555555555555F"
+//  version: the file version of the module, e.g. "1.2.3.4"
+//  os: the operating system that the module was built for
+//  cpu: the CPU that the module was built for
+//  symbol_file: the contents of the breakpad-format symbol file
+
+#include <assert.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#include <functional>
+#include <iostream>
+#include <string>
+#include <vector>
+
+#include "common/linux/http_upload.h"
+#include "common/using_std_string.h"
+
+using google_breakpad::HTTPUpload;
+
+typedef struct {
+  string symbolsPath;
+  string uploadURLStr;
+  string proxy;
+  string proxy_user_pwd;
+  string version;
+  bool success;
+} Options;
+
+static void TokenizeByChar(const string &source_string,
+              int c, std::vector<string> *results) {
+  assert(results);
+  string::size_type cur_pos = 0, next_pos = 0;
+  while ((next_pos = source_string.find(c, cur_pos)) != string::npos) {
+    if (next_pos != cur_pos)
+      results->push_back(source_string.substr(cur_pos, next_pos - cur_pos));
+    cur_pos = next_pos + 1;
+  }
+  if (cur_pos < source_string.size() && next_pos != cur_pos)
+    results->push_back(source_string.substr(cur_pos));
+}
+
+//=============================================================================
+// Parse out the module line which have 5 parts.
+// MODULE <os> <cpu> <uuid> <module-name>
+static bool ModuleDataForSymbolFile(const string &file,
+                                    std::vector<string> *module_parts) {
+  assert(module_parts);
+  const size_t kModulePartNumber = 5;
+  FILE* fp = fopen(file.c_str(), "r");
+  if (fp) {
+    char buffer[1024];
+    if (fgets(buffer, sizeof(buffer), fp)) {
+      string line(buffer);
+      string::size_type line_break_pos = line.find_first_of('\n');
+      if (line_break_pos == string::npos) {
+        assert(0 && "The file is invalid!");
+        fclose(fp);
+        return false;
+      }
+      line.resize(line_break_pos);
+      const char kDelimiter = ' ';
+      TokenizeByChar(line, kDelimiter, module_parts);
+      if (module_parts->size() != kModulePartNumber)
+        module_parts->clear();
+    }
+    fclose(fp);
+  }
+
+  return module_parts->size() == kModulePartNumber;
+}
+
+//=============================================================================
+static string CompactIdentifier(const string &uuid) {
+  std::vector<string> components;
+  TokenizeByChar(uuid, '-', &components);
+  string result;
+  for (size_t i = 0; i < components.size(); ++i)
+    result += components[i];
+  return result;
+}
+
+//=============================================================================
+static void Start(Options *options) {
+  std::map<string, string> parameters;
+  options->success = false;
+  std::vector<string> module_parts;
+  if (!ModuleDataForSymbolFile(options->symbolsPath, &module_parts)) {
+    fprintf(stderr, "Failed to parse symbol file!\n");
+    return;
+  }
+
+  string compacted_id = CompactIdentifier(module_parts[3]);
+
+  // Add parameters
+  if (!options->version.empty())
+    parameters["version"] = options->version;
+
+  // MODULE <os> <cpu> <uuid> <module-name>
+  // 0      1    2     3      4
+  parameters["os"] = module_parts[1];
+  parameters["cpu"] = module_parts[2];
+  parameters["debug_file"] = module_parts[4];
+  parameters["code_file"] = module_parts[4];
+  parameters["debug_identifier"] = compacted_id;
+  string response, error;
+  long response_code;
+  bool success = HTTPUpload::SendRequest(options->uploadURLStr,
+                                         parameters,
+                                         options->symbolsPath,
+                                         "symbol_file",
+                                         options->proxy,
+                                         options->proxy_user_pwd,
+                                         "",
+                                         &response,
+                                         &response_code,
+                                         &error);
+
+  if (!success) {
+    printf("Failed to send symbol file: %s\n", error.c_str());
+    printf("Response code: %ld\n", response_code);
+    printf("Response:\n");
+    printf("%s\n", response.c_str());
+  } else if (response_code == 0) {
+    printf("Failed to send symbol file: No response code\n");
+  } else if (response_code != 200) {
+    printf("Failed to send symbol file: Response code %ld\n", response_code);
+    printf("Response:\n");
+    printf("%s\n", response.c_str());
+  } else {
+    printf("Successfully sent the symbol file.\n");
+  }
+  options->success = success;
+}
+
+//=============================================================================
+static void
+Usage(int argc, const char *argv[]) {
+  fprintf(stderr, "Submit symbol information.\n");
+  fprintf(stderr, "Usage: %s [options...] <symbols> <upload-URL>\n", argv[0]);
+  fprintf(stderr, "Options:\n");
+  fprintf(stderr, "<symbols> should be created by using the dump_syms tool.\n");
+  fprintf(stderr, "<upload-URL> is the destination for the upload\n");
+  fprintf(stderr, "-v:\t Version information (e.g., 1.2.3.4)\n");
+  fprintf(stderr, "-x:\t <host[:port]> Use HTTP proxy on given port\n");
+  fprintf(stderr, "-u:\t <user[:password]> Set proxy user and password\n");
+  fprintf(stderr, "-h:\t Usage\n");
+  fprintf(stderr, "-?:\t Usage\n");
+}
+
+//=============================================================================
+static void
+SetupOptions(int argc, const char *argv[], Options *options) {
+  extern int optind;
+  int ch;
+
+  while ((ch = getopt(argc, (char * const *)argv, "u:v:x:h?")) != -1) {
+    switch (ch) {
+      case 'u':
+        options->proxy_user_pwd = optarg;
+        break;
+      case 'v':
+        options->version = optarg;
+        break;
+      case 'x':
+        options->proxy = optarg;
+        break;
+
+      default:
+        fprintf(stderr, "Invalid option '%c'\n", ch);
+        Usage(argc, argv);
+        exit(1);
+        break;
+    }
+  }
+
+  if ((argc - optind) != 2) {
+    fprintf(stderr, "%s: Missing symbols file and/or upload-URL\n", argv[0]);
+    Usage(argc, argv);
+    exit(1);
+  }
+
+  options->symbolsPath = argv[optind];
+  options->uploadURLStr = argv[optind + 1];
+}
+
+//=============================================================================
+int main(int argc, const char* argv[]) {
+  Options options;
+  SetupOptions(argc, argv, &options);
+  Start(&options);
+  return options.success ? 0 : 1;
+}
diff --git a/google-breakpad/src/tools/linux/tools_linux.gypi b/google-breakpad/src/tools/linux/tools_linux.gypi
new file mode 100644
index 0000000..1c15992
--- /dev/null
+++ b/google-breakpad/src/tools/linux/tools_linux.gypi
@@ -0,0 +1,83 @@
+# Copyright 2014 Google Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+{
+  'target_defaults': {
+    'include_dirs': [
+      '../..',
+    ],
+  },
+  'targets': [
+    {
+      'target_name': 'dump_syms',
+      'type': 'executable',
+      'sources': [
+        'dump_syms/dump_syms.cc',
+      ],
+      'dependencies': [
+        '../common/common.gyp:common',
+      ],
+    },
+    {
+      'target_name': 'md2core',
+      'type': 'executable',
+      'sources': [
+        'md2core/minidump-2-core.cc',
+        'md2core/minidump_memory_range.h',
+      ],
+      'dependencies': [
+        '../common/common.gyp:common',
+      ],
+    },
+    {
+      'target_name': 'minidump_upload',
+      'type': 'executable',
+      'sources': [
+        'symupload/minidump_upload.m',
+      ],
+      'dependencies': [
+        '../common/common.gyp:common',
+      ],
+    },
+    {
+      'target_name': 'symupload',
+      'type': 'executable',
+      'sources': [
+        'symupload/sym_upload.cc',
+      ],
+      'link_settings': {
+        'libraries': [
+          '-ldl',
+        ],
+      },
+      'dependencies': [
+        '../common/common.gyp:common',
+      ],
+    },
+  ],
+}
diff --git a/google-breakpad/src/tools/mac/crash_report/crash_report.mm b/google-breakpad/src/tools/mac/crash_report/crash_report.mm
new file mode 100644
index 0000000..f68200c
--- /dev/null
+++ b/google-breakpad/src/tools/mac/crash_report/crash_report.mm
@@ -0,0 +1,408 @@
+// Copyright (c) 2010 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// crash_report.mm: Convert the contents of a minidump into a format that
+// looks more like Apple's CrashReporter format
+
+#include <unistd.h>
+
+#include <mach/machine.h>
+#include <mach-o/arch.h>
+
+#include <string>
+
+#include <Foundation/Foundation.h>
+
+#include "common/scoped_ptr.h"
+#include "google_breakpad/processor/basic_source_line_resolver.h"
+#include "google_breakpad/processor/call_stack.h"
+#include "google_breakpad/processor/code_module.h"
+#include "google_breakpad/processor/minidump.h"
+#include "google_breakpad/processor/minidump_processor.h"
+#include "google_breakpad/processor/process_state.h"
+#include "google_breakpad/processor/stack_frame_cpu.h"
+#include "google_breakpad/processor/system_info.h"
+#include "processor/pathname_stripper.h"
+#include "processor/simple_symbol_supplier.h"
+
+#include "on_demand_symbol_supplier.h"
+
+using std::string;
+
+using google_breakpad::BasicSourceLineResolver;
+using google_breakpad::CallStack;
+using google_breakpad::CodeModule;
+using google_breakpad::CodeModules;
+using google_breakpad::Minidump;
+using google_breakpad::MinidumpProcessor;
+using google_breakpad::OnDemandSymbolSupplier;
+using google_breakpad::PathnameStripper;
+using google_breakpad::ProcessState;
+using google_breakpad::scoped_ptr;
+using google_breakpad::StackFrame;
+using google_breakpad::StackFramePPC;
+using google_breakpad::StackFrameX86;
+using google_breakpad::SystemInfo;
+
+typedef struct {
+  NSString *minidumpPath;
+  NSString *searchDir;
+  NSString *symbolSearchDir;
+  BOOL printThreadMemory;
+} Options;
+
+//=============================================================================
+static int PrintRegister(const char *name, u_int32_t value, int sequence) {
+  if (sequence % 4 == 0) {
+    printf("\n");
+  }
+  printf("%6s = 0x%08x ", name, value);
+  return ++sequence;
+}
+
+//=============================================================================
+static void PrintStack(const CallStack *stack, const string &cpu) {
+  size_t frame_count = stack->frames()->size();
+  char buffer[1024];
+  for (size_t frame_index = 0; frame_index < frame_count; ++frame_index) {
+    const StackFrame *frame = stack->frames()->at(frame_index);
+    const CodeModule *module = frame->module;
+    printf("%2zu ", frame_index);
+
+    if (module) {
+      // Module name (20 chars max)
+      strcpy(buffer, PathnameStripper::File(module->code_file()).c_str());
+      int maxStr = 20;
+      buffer[maxStr] = 0;
+      printf("%-*s", maxStr, buffer);
+
+      strcpy(buffer, module->version().c_str());
+      buffer[maxStr] = 0;
+
+      printf("%-*s",maxStr, buffer);
+
+      u_int64_t instruction = frame->instruction;
+
+      // PPC only: Adjust the instruction to match that of Crash reporter.  The
+      // instruction listed is actually the return address.  See the detailed
+      // comments in stackwalker_ppc.cc for more information.
+      if (cpu == "ppc" && frame_index)
+        instruction += 4;
+
+      printf(" 0x%08llx ", instruction);
+
+      // Function name
+      if (!frame->function_name.empty()) {
+        printf("%s", frame->function_name.c_str());
+        if (!frame->source_file_name.empty()) {
+          string source_file = PathnameStripper::File(frame->source_file_name);
+          printf(" + 0x%llx (%s:%d)",
+                 instruction - frame->source_line_base,
+                 source_file.c_str(), frame->source_line);
+        } else {
+          printf(" + 0x%llx", instruction - frame->function_base);
+        }
+      }
+    }
+    printf("\n");
+  }
+}
+
+//=============================================================================
+static void PrintRegisters(const CallStack *stack, const string &cpu) {
+  int sequence = 0;
+  const StackFrame *frame = stack->frames()->at(0);
+  if (cpu == "x86") {
+    const StackFrameX86 *frame_x86 =
+      reinterpret_cast<const StackFrameX86*>(frame);
+
+    if (frame_x86->context_validity & StackFrameX86::CONTEXT_VALID_EIP)
+      sequence = PrintRegister("eip", frame_x86->context.eip, sequence);
+    if (frame_x86->context_validity & StackFrameX86::CONTEXT_VALID_ESP)
+      sequence = PrintRegister("esp", frame_x86->context.esp, sequence);
+    if (frame_x86->context_validity & StackFrameX86::CONTEXT_VALID_EBP)
+      sequence = PrintRegister("ebp", frame_x86->context.ebp, sequence);
+    if (frame_x86->context_validity & StackFrameX86::CONTEXT_VALID_EBX)
+      sequence = PrintRegister("ebx", frame_x86->context.ebx, sequence);
+    if (frame_x86->context_validity & StackFrameX86::CONTEXT_VALID_ESI)
+      sequence = PrintRegister("esi", frame_x86->context.esi, sequence);
+    if (frame_x86->context_validity & StackFrameX86::CONTEXT_VALID_EDI)
+      sequence = PrintRegister("edi", frame_x86->context.edi, sequence);
+    if (frame_x86->context_validity == StackFrameX86::CONTEXT_VALID_ALL) {
+      sequence = PrintRegister("eax", frame_x86->context.eax, sequence);
+      sequence = PrintRegister("ecx", frame_x86->context.ecx, sequence);
+      sequence = PrintRegister("edx", frame_x86->context.edx, sequence);
+      sequence = PrintRegister("efl", frame_x86->context.eflags, sequence);
+    }
+  } else if (cpu == "ppc") {
+    const StackFramePPC *frame_ppc =
+      reinterpret_cast<const StackFramePPC*>(frame);
+
+    if ((frame_ppc->context_validity & StackFramePPC::CONTEXT_VALID_ALL) ==
+        StackFramePPC::CONTEXT_VALID_ALL) {
+      sequence = PrintRegister("srr0", frame_ppc->context.srr0, sequence);
+      sequence = PrintRegister("srr1", frame_ppc->context.srr1, sequence);
+      sequence = PrintRegister("cr", frame_ppc->context.cr, sequence);
+      sequence = PrintRegister("xer", frame_ppc->context.xer, sequence);
+      sequence = PrintRegister("lr", frame_ppc->context.lr, sequence);
+      sequence = PrintRegister("ctr", frame_ppc->context.ctr, sequence);
+      sequence = PrintRegister("mq", frame_ppc->context.mq, sequence);
+      sequence = PrintRegister("vrsave", frame_ppc->context.vrsave, sequence);
+
+      sequence = 0;
+      char buffer[5];
+      for (int i = 0; i < MD_CONTEXT_PPC_GPR_COUNT; ++i) {
+        sprintf(buffer, "r%d", i);
+        sequence = PrintRegister(buffer, frame_ppc->context.gpr[i], sequence);
+      }
+    } else {
+      if (frame_ppc->context_validity & StackFramePPC::CONTEXT_VALID_SRR0)
+        sequence = PrintRegister("srr0", frame_ppc->context.srr0, sequence);
+      if (frame_ppc->context_validity & StackFramePPC::CONTEXT_VALID_GPR1)
+        sequence = PrintRegister("r1", frame_ppc->context.gpr[1], sequence);
+    }
+  }
+
+  printf("\n");
+}
+
+static void PrintModules(const CodeModules *modules) {
+  if (!modules)
+    return;
+
+  printf("\n");
+  printf("Loaded modules:\n");
+
+  u_int64_t main_address = 0;
+  const CodeModule *main_module = modules->GetMainModule();
+  if (main_module) {
+    main_address = main_module->base_address();
+  }
+
+  unsigned int module_count = modules->module_count();
+  for (unsigned int module_sequence = 0;
+       module_sequence < module_count;
+       ++module_sequence) {
+    const CodeModule *module = modules->GetModuleAtSequence(module_sequence);
+    assert(module);
+    u_int64_t base_address = module->base_address();
+    printf("0x%08llx - 0x%08llx  %s  %s%s  %s\n",
+           base_address, base_address + module->size() - 1,
+           PathnameStripper::File(module->code_file()).c_str(),
+           module->version().empty() ? "???" : module->version().c_str(),
+           main_module != NULL && base_address == main_address ?
+           "  (main)" : "",
+           module->code_file().c_str());
+  }
+}
+
+static void ProcessSingleReport(Options *options, NSString *file_path) {
+  string minidump_file([file_path fileSystemRepresentation]);
+  BasicSourceLineResolver resolver;
+  string search_dir = options->searchDir ?
+    [options->searchDir fileSystemRepresentation] : "";
+  string symbol_search_dir = options->symbolSearchDir ?
+    [options->symbolSearchDir fileSystemRepresentation] : "";
+  scoped_ptr<OnDemandSymbolSupplier> symbol_supplier(
+    new OnDemandSymbolSupplier(search_dir, symbol_search_dir));
+  scoped_ptr<MinidumpProcessor>
+    minidump_processor(new MinidumpProcessor(symbol_supplier.get(), &resolver));
+  ProcessState process_state;
+  scoped_ptr<Minidump> dump(new google_breakpad::Minidump(minidump_file));
+
+  if (!dump->Read()) {
+    fprintf(stderr, "Minidump %s could not be read\n", dump->path().c_str());
+    return;
+  }
+  if (minidump_processor->Process(dump.get(), &process_state) !=
+      google_breakpad::PROCESS_OK) {
+    fprintf(stderr, "MinidumpProcessor::Process failed\n");
+    return;
+  }
+
+  const SystemInfo *system_info = process_state.system_info();
+  string cpu = system_info->cpu;
+
+  // Convert the time to a string
+  u_int32_t time_date_stamp = process_state.time_date_stamp();
+  struct tm timestruct;
+  gmtime_r(reinterpret_cast<time_t*>(&time_date_stamp), &timestruct);
+  char timestr[20];
+  strftime(timestr, 20, "%Y-%m-%d %H:%M:%S", &timestruct);
+  printf("Date: %s GMT\n", timestr);
+
+  printf("Operating system: %s (%s)\n", system_info->os.c_str(),
+         system_info->os_version.c_str());
+  printf("Architecture: %s\n", cpu.c_str());
+
+  if (process_state.crashed()) {
+    printf("Crash reason:  %s\n", process_state.crash_reason().c_str());
+    printf("Crash address: 0x%llx\n", process_state.crash_address());
+  } else {
+    printf("No crash\n");
+  }
+
+  int requesting_thread = process_state.requesting_thread();
+  if (requesting_thread != -1) {
+    printf("\n");
+    printf("Thread %d (%s)\n",
+           requesting_thread,
+           process_state.crashed() ? "crashed" :
+           "requested dump, did not crash");
+    PrintStack(process_state.threads()->at(requesting_thread), cpu);
+  }
+
+  // Print all of the threads in the dump.
+  int thread_count = static_cast<int>(process_state.threads()->size());
+  const std::vector<google_breakpad::MemoryRegion*>
+    *thread_memory_regions = process_state.thread_memory_regions();
+
+  for (int thread_index = 0; thread_index < thread_count; ++thread_index) {
+    if (thread_index != requesting_thread) {
+      // Don't print the crash thread again, it was already printed.
+      printf("\n");
+      printf("Thread %d\n", thread_index);
+      PrintStack(process_state.threads()->at(thread_index), cpu);
+      google_breakpad::MemoryRegion *thread_stack_bytes =
+        thread_memory_regions->at(thread_index);
+      if (options->printThreadMemory) {
+        thread_stack_bytes->Print();
+      }
+    }
+  }
+
+  // Print the crashed registers
+  if (requesting_thread != -1) {
+    printf("\nThread %d:", requesting_thread);
+    PrintRegisters(process_state.threads()->at(requesting_thread), cpu);
+  }
+
+  // Print information about modules
+  PrintModules(process_state.modules());
+}
+
+//=============================================================================
+static void Start(Options *options) {
+  NSFileManager *manager = [NSFileManager defaultManager];
+  NSString *minidump_path = options->minidumpPath;
+  BOOL is_dir = NO;
+  BOOL file_exists = [manager fileExistsAtPath:minidump_path
+                                   isDirectory:&is_dir];
+  if (file_exists && is_dir) {
+    NSDirectoryEnumerator *enumerator =
+      [manager enumeratorAtPath:minidump_path];
+    NSString *current_file = nil;
+    while ((current_file = [enumerator nextObject])) {
+      NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
+      if ([[current_file pathExtension] isEqualTo:@"dmp"]) {
+        printf("Attempting to process report: %s\n",
+               [current_file cStringUsingEncoding:NSASCIIStringEncoding]);
+        NSString *full_path =
+          [minidump_path stringByAppendingPathComponent:current_file];
+        ProcessSingleReport(options, full_path);
+      }
+      [pool release];
+    }
+  } else if (file_exists) {
+    ProcessSingleReport(options, minidump_path);
+  }
+}
+
+//=============================================================================
+static void Usage(int argc, const char *argv[]) {
+  fprintf(stderr, "Convert a minidump to a crash report.  Breakpad symbol "
+                  "files will be used (or created if missing) in /tmp.\n"
+                  "If a symbol-file-search-dir is specified, any symbol "
+                  "files in it will be used instead of being loaded from "
+                  "modules on disk.\n"
+                  "If modules cannot be found at the paths stored in the "
+                  "minidump file, they will be searched for at "
+                  "<module-search-dir>/<path-in-minidump-file>.\n");
+  fprintf(stderr, "Usage: %s [-s module-search-dir] [-S symbol-file-search-dir] "
+	          "minidump-file\n", argv[0]);
+  fprintf(stderr, "\t-s: Specify a search directory to use for missing modules\n"
+                  "\t-S: Specify a search directory to use for symbol files\n"
+                  "\t-t: Print thread stack memory in hex\n"
+                  "\t-h: Usage\n"
+                  "\t-?: Usage\n");
+}
+
+//=============================================================================
+static void SetupOptions(int argc, const char *argv[], Options *options) {
+  extern int optind;
+  char ch;
+
+  while ((ch = getopt(argc, (char * const *)argv, "S:s:ht?")) != -1) {
+    switch (ch) {
+      case 's':
+        options->searchDir = [[NSFileManager defaultManager]
+          stringWithFileSystemRepresentation:optarg
+                                      length:strlen(optarg)];
+        break;
+
+      case 'S':
+        options->symbolSearchDir = [[NSFileManager defaultManager]
+          stringWithFileSystemRepresentation:optarg
+                                      length:strlen(optarg)];
+        break;
+
+      case 't':
+        options->printThreadMemory = YES;
+        break;
+      case 'h':
+      case '?':
+        Usage(argc, argv);
+        exit(1);
+        break;
+    }
+  }
+
+  if ((argc - optind) != 1) {
+    fprintf(stderr, "%s: Missing minidump file\n", argv[0]);
+    Usage(argc, argv);
+    exit(1);
+  }
+
+  options->minidumpPath = [[NSFileManager defaultManager]
+    stringWithFileSystemRepresentation:argv[optind]
+                                length:strlen(argv[optind])];
+}
+
+//=============================================================================
+int main (int argc, const char * argv[]) {
+  NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
+  Options options;
+
+  bzero(&options, sizeof(Options));
+  SetupOptions(argc, argv, &options);
+  Start(&options);
+  [pool release];
+
+  return 0;
+}
diff --git a/google-breakpad/src/tools/mac/crash_report/crash_report.xcodeproj/project.pbxproj b/google-breakpad/src/tools/mac/crash_report/crash_report.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..d32837c
--- /dev/null
+++ b/google-breakpad/src/tools/mac/crash_report/crash_report.xcodeproj/project.pbxproj
@@ -0,0 +1,587 @@
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 45;
+	objects = {
+
+/* Begin PBXBuildFile section */
+		162F64FE161C5ECB00CD68D5 /* arch_utilities.cc in Sources */ = {isa = PBXBuildFile; fileRef = 162F64FC161C5ECB00CD68D5 /* arch_utilities.cc */; };
+		4D2C721B126F9ACC00B43EAF /* source_line_resolver_base.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4D2C721A126F9ACC00B43EAF /* source_line_resolver_base.cc */; };
+		4D2C721F126F9ADE00B43EAF /* exploitability.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4D2C721E126F9ADE00B43EAF /* exploitability.cc */; };
+		4D2C7223126F9AF900B43EAF /* exploitability_win.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4D2C7222126F9AF900B43EAF /* exploitability_win.cc */; };
+		4D2C7227126F9B0F00B43EAF /* disassembler_x86.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4D2C7226126F9B0F00B43EAF /* disassembler_x86.cc */; };
+		4D2C722B126F9B5A00B43EAF /* x86_disasm.c in Sources */ = {isa = PBXBuildFile; fileRef = 4D2C722A126F9B5A00B43EAF /* x86_disasm.c */; };
+		4D2C722D126F9B6E00B43EAF /* x86_misc.c in Sources */ = {isa = PBXBuildFile; fileRef = 4D2C722C126F9B6E00B43EAF /* x86_misc.c */; };
+		4D2C722F126F9B8300B43EAF /* x86_operand_list.c in Sources */ = {isa = PBXBuildFile; fileRef = 4D2C722E126F9B8300B43EAF /* x86_operand_list.c */; };
+		4D2C7233126F9BB000B43EAF /* ia32_invariant.c in Sources */ = {isa = PBXBuildFile; fileRef = 4D2C7232126F9BB000B43EAF /* ia32_invariant.c */; settings = {COMPILER_FLAGS = "-Wno-error"; }; };
+		4D2C7235126F9BC200B43EAF /* ia32_settings.c in Sources */ = {isa = PBXBuildFile; fileRef = 4D2C7234126F9BC200B43EAF /* ia32_settings.c */; };
+		4D2C7246126F9C0B00B43EAF /* ia32_insn.c in Sources */ = {isa = PBXBuildFile; fileRef = 4D2C7245126F9C0B00B43EAF /* ia32_insn.c */; };
+		4D2C724A126F9C2300B43EAF /* ia32_opcode_tables.c in Sources */ = {isa = PBXBuildFile; fileRef = 4D2C7249126F9C2300B43EAF /* ia32_opcode_tables.c */; settings = {COMPILER_FLAGS = "-Wno-error"; }; };
+		4D2C724C126F9C3800B43EAF /* ia32_implicit.c in Sources */ = {isa = PBXBuildFile; fileRef = 4D2C724B126F9C3800B43EAF /* ia32_implicit.c */; settings = {COMPILER_FLAGS = "-Wno-error"; }; };
+		4D2C724E126F9C4D00B43EAF /* ia32_reg.c in Sources */ = {isa = PBXBuildFile; fileRef = 4D2C724D126F9C4D00B43EAF /* ia32_reg.c */; settings = {COMPILER_FLAGS = "-Wno-error"; }; };
+		4D2C725B126F9C8000B43EAF /* ia32_operand.c in Sources */ = {isa = PBXBuildFile; fileRef = 4D2C725A126F9C8000B43EAF /* ia32_operand.c */; };
+		4D2C725D126F9C9200B43EAF /* x86_insn.c in Sources */ = {isa = PBXBuildFile; fileRef = 4D2C725C126F9C9200B43EAF /* x86_insn.c */; };
+		4D2C7264126F9CBB00B43EAF /* ia32_modrm.c in Sources */ = {isa = PBXBuildFile; fileRef = 4D2C7261126F9CBB00B43EAF /* ia32_modrm.c */; };
+		4D2C726D126F9CDC00B43EAF /* x86_imm.c in Sources */ = {isa = PBXBuildFile; fileRef = 4D2C7263126F9CBB00B43EAF /* x86_imm.c */; };
+		4D72CA5713DFBA84006CABE3 /* md5.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4D72CA5613DFBA84006CABE3 /* md5.cc */; };
+		557800400BE1F28500EC23E0 /* macho_utilities.cc in Sources */ = {isa = PBXBuildFile; fileRef = 5578003E0BE1F28500EC23E0 /* macho_utilities.cc */; };
+		8B31FF2A11F0C62700FCF3E4 /* dwarf_cfi_to_module.cc in Sources */ = {isa = PBXBuildFile; fileRef = 8B31FF2411F0C62700FCF3E4 /* dwarf_cfi_to_module.cc */; };
+		8B31FF2B11F0C62700FCF3E4 /* dwarf_cu_to_module.cc in Sources */ = {isa = PBXBuildFile; fileRef = 8B31FF2611F0C62700FCF3E4 /* dwarf_cu_to_module.cc */; };
+		8B31FF2C11F0C62700FCF3E4 /* dwarf_line_to_module.cc in Sources */ = {isa = PBXBuildFile; fileRef = 8B31FF2811F0C62700FCF3E4 /* dwarf_line_to_module.cc */; };
+		8B31FF4111F0C64400FCF3E4 /* stabs_reader.cc in Sources */ = {isa = PBXBuildFile; fileRef = 8B31FF3D11F0C64400FCF3E4 /* stabs_reader.cc */; };
+		8B31FF4211F0C64400FCF3E4 /* stabs_to_module.cc in Sources */ = {isa = PBXBuildFile; fileRef = 8B31FF3F11F0C64400FCF3E4 /* stabs_to_module.cc */; };
+		8B31FF7411F0C6E000FCF3E4 /* macho_reader.cc in Sources */ = {isa = PBXBuildFile; fileRef = 8B31FF7211F0C6E000FCF3E4 /* macho_reader.cc */; };
+		8B31FF8811F0C6FB00FCF3E4 /* language.cc in Sources */ = {isa = PBXBuildFile; fileRef = 8B31FF8411F0C6FB00FCF3E4 /* language.cc */; };
+		8B31FF8911F0C6FB00FCF3E4 /* module.cc in Sources */ = {isa = PBXBuildFile; fileRef = 8B31FF8611F0C6FB00FCF3E4 /* module.cc */; };
+		8B31FFC511F0C8AB00FCF3E4 /* dwarf2diehandler.cc in Sources */ = {isa = PBXBuildFile; fileRef = 8B31FFC311F0C8AB00FCF3E4 /* dwarf2diehandler.cc */; };
+		8B40BDC00C0638E4009535AF /* logging.cc in Sources */ = {isa = PBXBuildFile; fileRef = 8B40BDBF0C0638E4009535AF /* logging.cc */; };
+		8DD76F9A0486AA7600D96B5E /* crash_report.mm in Sources */ = {isa = PBXBuildFile; fileRef = 08FB7796FE84155DC02AAC07 /* crash_report.mm */; settings = {ATTRIBUTES = (); }; };
+		8DD76F9C0486AA7600D96B5E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08FB779EFE84155DC02AAC07 /* Foundation.framework */; };
+		9B35FEEA0B26761C008DE8C7 /* basic_code_modules.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9B35FEE70B26761C008DE8C7 /* basic_code_modules.cc */; };
+		9B3904990B2E52FD0059FABE /* basic_source_line_resolver.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9B3904980B2E52FD0059FABE /* basic_source_line_resolver.cc */; };
+		9BDF172C0B1B8B2400F8391B /* call_stack.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BDF172A0B1B8B2400F8391B /* call_stack.cc */; };
+		9BDF172D0B1B8B2400F8391B /* minidump_processor.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BDF172B0B1B8B2400F8391B /* minidump_processor.cc */; };
+		9BDF17410B1B8B9A00F8391B /* minidump.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BDF173F0B1B8B9A00F8391B /* minidump.cc */; };
+		9BDF17540B1B8BF900F8391B /* stackwalker_ppc.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BDF17510B1B8BF900F8391B /* stackwalker_ppc.cc */; };
+		9BDF17550B1B8BF900F8391B /* stackwalker_x86.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BDF17520B1B8BF900F8391B /* stackwalker_x86.cc */; };
+		9BDF17560B1B8BF900F8391B /* stackwalker.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BDF17530B1B8BF900F8391B /* stackwalker.cc */; };
+		9BDF175D0B1B8C1B00F8391B /* process_state.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BDF175B0B1B8C1B00F8391B /* process_state.cc */; };
+		9BDF176E0B1B8CB100F8391B /* on_demand_symbol_supplier.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9BDF176C0B1B8CB100F8391B /* on_demand_symbol_supplier.mm */; };
+		9BDF1A280B1BD58200F8391B /* pathname_stripper.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BDF1A270B1BD58200F8391B /* pathname_stripper.cc */; };
+		9BDF21A70B1E825400F8391B /* dump_syms.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9BDF192E0B1BC15D00F8391B /* dump_syms.mm */; };
+		9BE650B20B52FE3000611104 /* file_id.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BE650AC0B52FE3000611104 /* file_id.cc */; };
+		9BE650B40B52FE3000611104 /* macho_id.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BE650AE0B52FE3000611104 /* macho_id.cc */; };
+		9BE650B60B52FE3000611104 /* macho_walker.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BE650B00B52FE3000611104 /* macho_walker.cc */; };
+		D2A5DD4D1188651100081F03 /* cfi_frame_info.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2A5DD4C1188651100081F03 /* cfi_frame_info.cc */; };
+		D2A5DD631188658B00081F03 /* tokenize.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2A5DD621188658B00081F03 /* tokenize.cc */; };
+		F407DC48185773C10064622B /* exploitability_linux.cc in Sources */ = {isa = PBXBuildFile; fileRef = F407DC40185773C10064622B /* exploitability_linux.cc */; };
+		F407DC49185773C10064622B /* stack_frame_symbolizer.cc in Sources */ = {isa = PBXBuildFile; fileRef = F407DC41185773C10064622B /* stack_frame_symbolizer.cc */; };
+		F407DC4A185773C10064622B /* stackwalker_arm64.cc in Sources */ = {isa = PBXBuildFile; fileRef = F407DC42185773C10064622B /* stackwalker_arm64.cc */; };
+		F407DC4B185773C10064622B /* stackwalker_mips.cc in Sources */ = {isa = PBXBuildFile; fileRef = F407DC44185773C10064622B /* stackwalker_mips.cc */; };
+		F407DC4C185773C10064622B /* stackwalker_ppc64.cc in Sources */ = {isa = PBXBuildFile; fileRef = F407DC46185773C10064622B /* stackwalker_ppc64.cc */; };
+		F44DDD8719C85CD50047280E /* dump_context.cc in Sources */ = {isa = PBXBuildFile; fileRef = F44DDD8419C85CD50047280E /* dump_context.cc */; };
+		F44DDD8819C85CD50047280E /* dump_object.cc in Sources */ = {isa = PBXBuildFile; fileRef = F44DDD8519C85CD50047280E /* dump_object.cc */; };
+		F44DDD8919C85CD50047280E /* microdump_processor.cc in Sources */ = {isa = PBXBuildFile; fileRef = F44DDD8619C85CD50047280E /* microdump_processor.cc */; };
+		F4D43B2F1A38490700C290B2 /* microdump.cc in Sources */ = {isa = PBXBuildFile; fileRef = F4D43B2E1A38490700C290B2 /* microdump.cc */; };
+		F9C7ECE50E8ABCA600E953AD /* bytereader.cc in Sources */ = {isa = PBXBuildFile; fileRef = F9C7ECE20E8ABCA600E953AD /* bytereader.cc */; };
+		F9C7ECE60E8ABCA600E953AD /* dwarf2reader.cc in Sources */ = {isa = PBXBuildFile; fileRef = F9C7ECE30E8ABCA600E953AD /* dwarf2reader.cc */; };
+		F9C7ECE70E8ABCA600E953AD /* functioninfo.cc in Sources */ = {isa = PBXBuildFile; fileRef = F9C7ECE40E8ABCA600E953AD /* functioninfo.cc */; };
+		F9F0706710FBC02D0037B88B /* stackwalker_arm.cc in Sources */ = {isa = PBXBuildFile; fileRef = F9F0706510FBC02D0037B88B /* stackwalker_arm.cc */; };
+		FD6625CD0CF4D45C004AC844 /* stackwalker_amd64.cc in Sources */ = {isa = PBXBuildFile; fileRef = FD6625C40CF4D438004AC844 /* stackwalker_amd64.cc */; };
+		FD8EDEAE0CADDAD400A5EDF1 /* stackwalker_sparc.cc in Sources */ = {isa = PBXBuildFile; fileRef = FD8EDEAC0CADDAD400A5EDF1 /* stackwalker_sparc.cc */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+		08FB7796FE84155DC02AAC07 /* crash_report.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = crash_report.mm; sourceTree = "<group>"; };
+		08FB779EFE84155DC02AAC07 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+		162F64FC161C5ECB00CD68D5 /* arch_utilities.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = arch_utilities.cc; path = ../../../common/mac/arch_utilities.cc; sourceTree = "<group>"; };
+		162F64FD161C5ECB00CD68D5 /* arch_utilities.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = arch_utilities.h; path = ../../../common/mac/arch_utilities.h; sourceTree = "<group>"; };
+		4D2C721A126F9ACC00B43EAF /* source_line_resolver_base.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = source_line_resolver_base.cc; path = ../../../processor/source_line_resolver_base.cc; sourceTree = SOURCE_ROOT; };
+		4D2C721E126F9ADE00B43EAF /* exploitability.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = exploitability.cc; path = ../../../processor/exploitability.cc; sourceTree = SOURCE_ROOT; };
+		4D2C7222126F9AF900B43EAF /* exploitability_win.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = exploitability_win.cc; path = ../../../processor/exploitability_win.cc; sourceTree = SOURCE_ROOT; };
+		4D2C7226126F9B0F00B43EAF /* disassembler_x86.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = disassembler_x86.cc; path = ../../../processor/disassembler_x86.cc; sourceTree = SOURCE_ROOT; };
+		4D2C722A126F9B5A00B43EAF /* x86_disasm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = x86_disasm.c; path = ../../../third_party/libdisasm/x86_disasm.c; sourceTree = SOURCE_ROOT; };
+		4D2C722C126F9B6E00B43EAF /* x86_misc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = x86_misc.c; path = ../../../third_party/libdisasm/x86_misc.c; sourceTree = SOURCE_ROOT; };
+		4D2C722E126F9B8300B43EAF /* x86_operand_list.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = x86_operand_list.c; path = ../../../third_party/libdisasm/x86_operand_list.c; sourceTree = SOURCE_ROOT; };
+		4D2C7232126F9BB000B43EAF /* ia32_invariant.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ia32_invariant.c; path = ../../../third_party/libdisasm/ia32_invariant.c; sourceTree = SOURCE_ROOT; };
+		4D2C7234126F9BC200B43EAF /* ia32_settings.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ia32_settings.c; path = ../../../third_party/libdisasm/ia32_settings.c; sourceTree = SOURCE_ROOT; };
+		4D2C7245126F9C0B00B43EAF /* ia32_insn.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ia32_insn.c; path = ../../../third_party/libdisasm/ia32_insn.c; sourceTree = SOURCE_ROOT; };
+		4D2C7249126F9C2300B43EAF /* ia32_opcode_tables.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ia32_opcode_tables.c; path = ../../../third_party/libdisasm/ia32_opcode_tables.c; sourceTree = SOURCE_ROOT; };
+		4D2C724B126F9C3800B43EAF /* ia32_implicit.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ia32_implicit.c; path = ../../../third_party/libdisasm/ia32_implicit.c; sourceTree = SOURCE_ROOT; };
+		4D2C724D126F9C4D00B43EAF /* ia32_reg.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ia32_reg.c; path = ../../../third_party/libdisasm/ia32_reg.c; sourceTree = SOURCE_ROOT; };
+		4D2C725A126F9C8000B43EAF /* ia32_operand.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ia32_operand.c; path = ../../../third_party/libdisasm/ia32_operand.c; sourceTree = SOURCE_ROOT; };
+		4D2C725C126F9C9200B43EAF /* x86_insn.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = x86_insn.c; path = ../../../third_party/libdisasm/x86_insn.c; sourceTree = SOURCE_ROOT; };
+		4D2C7261126F9CBB00B43EAF /* ia32_modrm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ia32_modrm.c; path = ../../../third_party/libdisasm/ia32_modrm.c; sourceTree = SOURCE_ROOT; };
+		4D2C7263126F9CBB00B43EAF /* x86_imm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = x86_imm.c; path = ../../../third_party/libdisasm/x86_imm.c; sourceTree = SOURCE_ROOT; };
+		4D72CA5613DFBA84006CABE3 /* md5.cc */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = md5.cc; path = ../../../common/md5.cc; sourceTree = SOURCE_ROOT; };
+		5578003E0BE1F28500EC23E0 /* macho_utilities.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = macho_utilities.cc; path = ../../../common/mac/macho_utilities.cc; sourceTree = SOURCE_ROOT; };
+		5578003F0BE1F28500EC23E0 /* macho_utilities.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = macho_utilities.h; path = ../../../common/mac/macho_utilities.h; sourceTree = SOURCE_ROOT; };
+		8B31025311F0D2D400FCF3E4 /* Breakpad.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Breakpad.xcconfig; path = ../../../common/mac/Breakpad.xcconfig; sourceTree = SOURCE_ROOT; };
+		8B3102DA11F0D65600FCF3E4 /* BreakpadDebug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = BreakpadDebug.xcconfig; path = ../../../common/mac/BreakpadDebug.xcconfig; sourceTree = SOURCE_ROOT; };
+		8B3102DB11F0D65600FCF3E4 /* BreakpadRelease.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = BreakpadRelease.xcconfig; path = ../../../common/mac/BreakpadRelease.xcconfig; sourceTree = SOURCE_ROOT; };
+		8B31FF2411F0C62700FCF3E4 /* dwarf_cfi_to_module.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = dwarf_cfi_to_module.cc; path = ../../../common/dwarf_cfi_to_module.cc; sourceTree = SOURCE_ROOT; };
+		8B31FF2511F0C62700FCF3E4 /* dwarf_cfi_to_module.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = dwarf_cfi_to_module.h; path = ../../../common/dwarf_cfi_to_module.h; sourceTree = SOURCE_ROOT; };
+		8B31FF2611F0C62700FCF3E4 /* dwarf_cu_to_module.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = dwarf_cu_to_module.cc; path = ../../../common/dwarf_cu_to_module.cc; sourceTree = SOURCE_ROOT; };
+		8B31FF2711F0C62700FCF3E4 /* dwarf_cu_to_module.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = dwarf_cu_to_module.h; path = ../../../common/dwarf_cu_to_module.h; sourceTree = SOURCE_ROOT; };
+		8B31FF2811F0C62700FCF3E4 /* dwarf_line_to_module.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = dwarf_line_to_module.cc; path = ../../../common/dwarf_line_to_module.cc; sourceTree = SOURCE_ROOT; };
+		8B31FF2911F0C62700FCF3E4 /* dwarf_line_to_module.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = dwarf_line_to_module.h; path = ../../../common/dwarf_line_to_module.h; sourceTree = SOURCE_ROOT; };
+		8B31FF3D11F0C64400FCF3E4 /* stabs_reader.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = stabs_reader.cc; path = ../../../common/stabs_reader.cc; sourceTree = SOURCE_ROOT; };
+		8B31FF3E11F0C64400FCF3E4 /* stabs_reader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stabs_reader.h; path = ../../../common/stabs_reader.h; sourceTree = SOURCE_ROOT; };
+		8B31FF3F11F0C64400FCF3E4 /* stabs_to_module.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = stabs_to_module.cc; path = ../../../common/stabs_to_module.cc; sourceTree = SOURCE_ROOT; };
+		8B31FF4011F0C64400FCF3E4 /* stabs_to_module.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stabs_to_module.h; path = ../../../common/stabs_to_module.h; sourceTree = SOURCE_ROOT; };
+		8B31FF7211F0C6E000FCF3E4 /* macho_reader.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = macho_reader.cc; path = ../../../common/mac/macho_reader.cc; sourceTree = SOURCE_ROOT; };
+		8B31FF7311F0C6E000FCF3E4 /* macho_reader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = macho_reader.h; path = ../../../common/mac/macho_reader.h; sourceTree = SOURCE_ROOT; };
+		8B31FF8411F0C6FB00FCF3E4 /* language.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = language.cc; path = ../../../common/language.cc; sourceTree = SOURCE_ROOT; };
+		8B31FF8511F0C6FB00FCF3E4 /* language.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = language.h; path = ../../../common/language.h; sourceTree = SOURCE_ROOT; };
+		8B31FF8611F0C6FB00FCF3E4 /* module.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = module.cc; path = ../../../common/module.cc; sourceTree = SOURCE_ROOT; };
+		8B31FF8711F0C6FB00FCF3E4 /* module.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = module.h; path = ../../../common/module.h; sourceTree = SOURCE_ROOT; };
+		8B31FFC311F0C8AB00FCF3E4 /* dwarf2diehandler.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = dwarf2diehandler.cc; path = ../../../common/dwarf/dwarf2diehandler.cc; sourceTree = SOURCE_ROOT; };
+		8B31FFC411F0C8AB00FCF3E4 /* dwarf2diehandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = dwarf2diehandler.h; path = ../../../common/dwarf/dwarf2diehandler.h; sourceTree = SOURCE_ROOT; };
+		8B40BDBF0C0638E4009535AF /* logging.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = logging.cc; path = ../../../processor/logging.cc; sourceTree = SOURCE_ROOT; };
+		8DD76FA10486AA7600D96B5E /* crash_report */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = crash_report; sourceTree = BUILT_PRODUCTS_DIR; };
+		9B35FEE20B2675F9008DE8C7 /* code_module.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = code_module.h; path = ../../../google_breakpad/processor/code_module.h; sourceTree = SOURCE_ROOT; };
+		9B35FEE30B2675F9008DE8C7 /* code_modules.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = code_modules.h; path = ../../../google_breakpad/processor/code_modules.h; sourceTree = SOURCE_ROOT; };
+		9B35FEE60B26761C008DE8C7 /* basic_code_module.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = basic_code_module.h; path = ../../../processor/basic_code_module.h; sourceTree = SOURCE_ROOT; };
+		9B35FEE70B26761C008DE8C7 /* basic_code_modules.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = basic_code_modules.cc; path = ../../../processor/basic_code_modules.cc; sourceTree = SOURCE_ROOT; };
+		9B35FEE80B26761C008DE8C7 /* basic_code_modules.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = basic_code_modules.h; path = ../../../processor/basic_code_modules.h; sourceTree = SOURCE_ROOT; };
+		9B3904940B2E52D90059FABE /* basic_source_line_resolver.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = basic_source_line_resolver.h; sourceTree = "<group>"; };
+		9B3904950B2E52D90059FABE /* source_line_resolver_interface.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = source_line_resolver_interface.h; sourceTree = "<group>"; };
+		9B3904980B2E52FD0059FABE /* basic_source_line_resolver.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = basic_source_line_resolver.cc; path = ../../../processor/basic_source_line_resolver.cc; sourceTree = SOURCE_ROOT; };
+		9B44619D0B66C66B00BBB817 /* system_info.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = system_info.h; sourceTree = "<group>"; };
+		9BDF16F90B1B8ACD00F8391B /* breakpad_types.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = breakpad_types.h; sourceTree = "<group>"; };
+		9BDF16FA0B1B8ACD00F8391B /* minidump_format.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = minidump_format.h; sourceTree = "<group>"; };
+		9BDF16FC0B1B8ACD00F8391B /* call_stack.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = call_stack.h; sourceTree = "<group>"; };
+		9BDF16FD0B1B8ACD00F8391B /* memory_region.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = memory_region.h; sourceTree = "<group>"; };
+		9BDF16FE0B1B8ACD00F8391B /* minidump.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = minidump.h; sourceTree = "<group>"; };
+		9BDF16FF0B1B8ACD00F8391B /* minidump_processor.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = minidump_processor.h; sourceTree = "<group>"; };
+		9BDF17000B1B8ACD00F8391B /* process_state.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = process_state.h; sourceTree = "<group>"; };
+		9BDF17010B1B8ACD00F8391B /* stack_frame.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = stack_frame.h; sourceTree = "<group>"; };
+		9BDF17020B1B8ACD00F8391B /* stack_frame_cpu.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = stack_frame_cpu.h; sourceTree = "<group>"; };
+		9BDF17030B1B8ACD00F8391B /* stackwalker.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = stackwalker.h; sourceTree = "<group>"; };
+		9BDF17040B1B8ACD00F8391B /* symbol_supplier.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = symbol_supplier.h; sourceTree = "<group>"; };
+		9BDF172A0B1B8B2400F8391B /* call_stack.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = call_stack.cc; path = ../../../processor/call_stack.cc; sourceTree = SOURCE_ROOT; };
+		9BDF172B0B1B8B2400F8391B /* minidump_processor.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = minidump_processor.cc; path = ../../../processor/minidump_processor.cc; sourceTree = SOURCE_ROOT; };
+		9BDF173F0B1B8B9A00F8391B /* minidump.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = minidump.cc; path = ../../../processor/minidump.cc; sourceTree = SOURCE_ROOT; };
+		9BDF17510B1B8BF900F8391B /* stackwalker_ppc.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = stackwalker_ppc.cc; path = ../../../processor/stackwalker_ppc.cc; sourceTree = SOURCE_ROOT; };
+		9BDF17520B1B8BF900F8391B /* stackwalker_x86.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = stackwalker_x86.cc; path = ../../../processor/stackwalker_x86.cc; sourceTree = SOURCE_ROOT; };
+		9BDF17530B1B8BF900F8391B /* stackwalker.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = stackwalker.cc; path = ../../../processor/stackwalker.cc; sourceTree = SOURCE_ROOT; };
+		9BDF175B0B1B8C1B00F8391B /* process_state.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = process_state.cc; path = ../../../processor/process_state.cc; sourceTree = SOURCE_ROOT; };
+		9BDF176B0B1B8CB100F8391B /* on_demand_symbol_supplier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = on_demand_symbol_supplier.h; sourceTree = "<group>"; };
+		9BDF176C0B1B8CB100F8391B /* on_demand_symbol_supplier.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = on_demand_symbol_supplier.mm; sourceTree = "<group>"; };
+		9BDF192D0B1BC15D00F8391B /* dump_syms.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = dump_syms.h; path = ../../../common/mac/dump_syms.h; sourceTree = SOURCE_ROOT; };
+		9BDF192E0B1BC15D00F8391B /* dump_syms.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = dump_syms.mm; path = ../../../common/mac/dump_syms.mm; sourceTree = SOURCE_ROOT; };
+		9BDF1A270B1BD58200F8391B /* pathname_stripper.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = pathname_stripper.cc; path = ../../../processor/pathname_stripper.cc; sourceTree = SOURCE_ROOT; };
+		9BDF1A7A0B1BE30100F8391B /* range_map-inl.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = "range_map-inl.h"; path = "../../../processor/range_map-inl.h"; sourceTree = SOURCE_ROOT; };
+		9BDF1A7B0B1BE30100F8391B /* range_map.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = range_map.h; path = ../../../processor/range_map.h; sourceTree = SOURCE_ROOT; };
+		9BDF1AFA0B1BEB6300F8391B /* address_map-inl.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = "address_map-inl.h"; path = "../../../processor/address_map-inl.h"; sourceTree = SOURCE_ROOT; };
+		9BDF1AFB0B1BEB6300F8391B /* address_map.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = address_map.h; path = ../../../processor/address_map.h; sourceTree = SOURCE_ROOT; };
+		9BE650AC0B52FE3000611104 /* file_id.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = file_id.cc; path = ../../../common/mac/file_id.cc; sourceTree = SOURCE_ROOT; };
+		9BE650AD0B52FE3000611104 /* file_id.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = file_id.h; path = ../../../common/mac/file_id.h; sourceTree = SOURCE_ROOT; };
+		9BE650AE0B52FE3000611104 /* macho_id.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = macho_id.cc; path = ../../../common/mac/macho_id.cc; sourceTree = SOURCE_ROOT; };
+		9BE650AF0B52FE3000611104 /* macho_id.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = macho_id.h; path = ../../../common/mac/macho_id.h; sourceTree = SOURCE_ROOT; };
+		9BE650B00B52FE3000611104 /* macho_walker.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = macho_walker.cc; path = ../../../common/mac/macho_walker.cc; sourceTree = SOURCE_ROOT; };
+		9BE650B10B52FE3000611104 /* macho_walker.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = macho_walker.h; path = ../../../common/mac/macho_walker.h; sourceTree = SOURCE_ROOT; };
+		D2A5DD4C1188651100081F03 /* cfi_frame_info.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = cfi_frame_info.cc; path = ../../../processor/cfi_frame_info.cc; sourceTree = SOURCE_ROOT; };
+		D2A5DD621188658B00081F03 /* tokenize.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = tokenize.cc; path = ../../../processor/tokenize.cc; sourceTree = SOURCE_ROOT; };
+		F407DC40185773C10064622B /* exploitability_linux.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = exploitability_linux.cc; path = ../../../processor/exploitability_linux.cc; sourceTree = "<group>"; };
+		F407DC41185773C10064622B /* stack_frame_symbolizer.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = stack_frame_symbolizer.cc; path = ../../../processor/stack_frame_symbolizer.cc; sourceTree = "<group>"; };
+		F407DC42185773C10064622B /* stackwalker_arm64.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = stackwalker_arm64.cc; path = ../../../processor/stackwalker_arm64.cc; sourceTree = "<group>"; };
+		F407DC43185773C10064622B /* stackwalker_arm64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stackwalker_arm64.h; path = ../../../processor/stackwalker_arm64.h; sourceTree = "<group>"; };
+		F407DC44185773C10064622B /* stackwalker_mips.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = stackwalker_mips.cc; path = ../../../processor/stackwalker_mips.cc; sourceTree = "<group>"; };
+		F407DC45185773C10064622B /* stackwalker_mips.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stackwalker_mips.h; path = ../../../processor/stackwalker_mips.h; sourceTree = "<group>"; };
+		F407DC46185773C10064622B /* stackwalker_ppc64.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = stackwalker_ppc64.cc; path = ../../../processor/stackwalker_ppc64.cc; sourceTree = "<group>"; };
+		F407DC47185773C10064622B /* stackwalker_ppc64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stackwalker_ppc64.h; path = ../../../processor/stackwalker_ppc64.h; sourceTree = "<group>"; };
+		F44DDD8419C85CD50047280E /* dump_context.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = dump_context.cc; path = ../../../processor/dump_context.cc; sourceTree = "<group>"; };
+		F44DDD8519C85CD50047280E /* dump_object.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = dump_object.cc; path = ../../../processor/dump_object.cc; sourceTree = "<group>"; };
+		F44DDD8619C85CD50047280E /* microdump_processor.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = microdump_processor.cc; path = ../../../processor/microdump_processor.cc; sourceTree = "<group>"; };
+		F44DDD8A19C85CFB0047280E /* dump_context.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = dump_context.h; path = ../../../google_breakpad/processor/dump_context.h; sourceTree = "<group>"; };
+		F44DDD8B19C85CFB0047280E /* dump_object.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = dump_object.h; path = ../../../google_breakpad/processor/dump_object.h; sourceTree = "<group>"; };
+		F44DDD8C19C85CFC0047280E /* microdump_processor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = microdump_processor.h; path = ../../../google_breakpad/processor/microdump_processor.h; sourceTree = "<group>"; };
+		F44DDD8D19C85CFC0047280E /* process_result.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = process_result.h; path = ../../../google_breakpad/processor/process_result.h; sourceTree = "<group>"; };
+		F4D43B2E1A38490700C290B2 /* microdump.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = microdump.cc; path = ../../../processor/microdump.cc; sourceTree = "<group>"; };
+		F4D43B301A38492000C290B2 /* microdump.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = microdump.h; path = ../../../google_breakpad/processor/microdump.h; sourceTree = "<group>"; };
+		F9C7ECE20E8ABCA600E953AD /* bytereader.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = bytereader.cc; path = ../../../common/dwarf/bytereader.cc; sourceTree = SOURCE_ROOT; };
+		F9C7ECE30E8ABCA600E953AD /* dwarf2reader.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = dwarf2reader.cc; path = ../../../common/dwarf/dwarf2reader.cc; sourceTree = SOURCE_ROOT; };
+		F9C7ECE40E8ABCA600E953AD /* functioninfo.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = functioninfo.cc; path = ../../../common/dwarf/functioninfo.cc; sourceTree = SOURCE_ROOT; };
+		F9F0706510FBC02D0037B88B /* stackwalker_arm.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = stackwalker_arm.cc; path = ../../../processor/stackwalker_arm.cc; sourceTree = SOURCE_ROOT; };
+		F9F0706610FBC02D0037B88B /* stackwalker_arm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stackwalker_arm.h; path = ../../../processor/stackwalker_arm.h; sourceTree = SOURCE_ROOT; };
+		FD6625C40CF4D438004AC844 /* stackwalker_amd64.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = stackwalker_amd64.cc; path = ../../../processor/stackwalker_amd64.cc; sourceTree = SOURCE_ROOT; };
+		FD6625C50CF4D438004AC844 /* stackwalker_amd64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stackwalker_amd64.h; path = ../../../processor/stackwalker_amd64.h; sourceTree = SOURCE_ROOT; };
+		FD8EDEAC0CADDAD400A5EDF1 /* stackwalker_sparc.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = stackwalker_sparc.cc; path = ../../../processor/stackwalker_sparc.cc; sourceTree = SOURCE_ROOT; };
+		FD8EDEAD0CADDAD400A5EDF1 /* stackwalker_sparc.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = stackwalker_sparc.h; path = ../../../processor/stackwalker_sparc.h; sourceTree = SOURCE_ROOT; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+		8DD76F9B0486AA7600D96B5E /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				8DD76F9C0486AA7600D96B5E /* Foundation.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+		08FB7794FE84155DC02AAC07 /* crash_report */ = {
+			isa = PBXGroup;
+			children = (
+				8B31025311F0D2D400FCF3E4 /* Breakpad.xcconfig */,
+				8B3102DA11F0D65600FCF3E4 /* BreakpadDebug.xcconfig */,
+				8B3102DB11F0D65600FCF3E4 /* BreakpadRelease.xcconfig */,
+				F9C7ECE10E8ABC7F00E953AD /* DWARF */,
+				162F64FC161C5ECB00CD68D5 /* arch_utilities.cc */,
+				162F64FD161C5ECB00CD68D5 /* arch_utilities.h */,
+				5578003E0BE1F28500EC23E0 /* macho_utilities.cc */,
+				5578003F0BE1F28500EC23E0 /* macho_utilities.h */,
+				8B31FF7211F0C6E000FCF3E4 /* macho_reader.cc */,
+				8B31FF7311F0C6E000FCF3E4 /* macho_reader.h */,
+				9BDF192D0B1BC15D00F8391B /* dump_syms.h */,
+				9BDF192E0B1BC15D00F8391B /* dump_syms.mm */,
+				08FB7796FE84155DC02AAC07 /* crash_report.mm */,
+				F44DDD8D19C85CFC0047280E /* process_result.h */,
+				9BDF176B0B1B8CB100F8391B /* on_demand_symbol_supplier.h */,
+				F44DDD8419C85CD50047280E /* dump_context.cc */,
+				F44DDD8A19C85CFB0047280E /* dump_context.h */,
+				F44DDD8519C85CD50047280E /* dump_object.cc */,
+				F44DDD8B19C85CFB0047280E /* dump_object.h */,
+				F4D43B2E1A38490700C290B2 /* microdump.cc */,
+				F4D43B301A38492000C290B2 /* microdump.h */,
+				F44DDD8619C85CD50047280E /* microdump_processor.cc */,
+				F44DDD8C19C85CFC0047280E /* microdump_processor.h */,
+				9BDF176C0B1B8CB100F8391B /* on_demand_symbol_supplier.mm */,
+				8B31FF2411F0C62700FCF3E4 /* dwarf_cfi_to_module.cc */,
+				8B31FF2511F0C62700FCF3E4 /* dwarf_cfi_to_module.h */,
+				8B31FF2611F0C62700FCF3E4 /* dwarf_cu_to_module.cc */,
+				8B31FF2711F0C62700FCF3E4 /* dwarf_cu_to_module.h */,
+				8B31FF2811F0C62700FCF3E4 /* dwarf_line_to_module.cc */,
+				8B31FF2911F0C62700FCF3E4 /* dwarf_line_to_module.h */,
+				8B31FF3D11F0C64400FCF3E4 /* stabs_reader.cc */,
+				8B31FF3E11F0C64400FCF3E4 /* stabs_reader.h */,
+				8B31FF3F11F0C64400FCF3E4 /* stabs_to_module.cc */,
+				8B31FF4011F0C64400FCF3E4 /* stabs_to_module.h */,
+				8B31FF8411F0C6FB00FCF3E4 /* language.cc */,
+				8B31FF8511F0C6FB00FCF3E4 /* language.h */,
+				4D72CA5613DFBA84006CABE3 /* md5.cc */,
+				8B31FF8611F0C6FB00FCF3E4 /* module.cc */,
+				8B31FF8711F0C6FB00FCF3E4 /* module.h */,
+				08FB7795FE84155DC02AAC07 /* breakpad */,
+				4D2C726E126F9CE200B43EAF /* libdisasm */,
+				08FB779DFE84155DC02AAC07 /* External Frameworks and Libraries */,
+				1AB674ADFE9D54B511CA2CBB /* Products */,
+			);
+			name = crash_report;
+			sourceTree = "<group>";
+		};
+		08FB7795FE84155DC02AAC07 /* breakpad */ = {
+			isa = PBXGroup;
+			children = (
+				9BE650AB0B52FE1A00611104 /* common */,
+				9BDF17280B1B8B0200F8391B /* processor */,
+				9BDF16F70B1B8ACD00F8391B /* google_breakpad */,
+			);
+			name = breakpad;
+			sourceTree = "<group>";
+		};
+		08FB779DFE84155DC02AAC07 /* External Frameworks and Libraries */ = {
+			isa = PBXGroup;
+			children = (
+				08FB779EFE84155DC02AAC07 /* Foundation.framework */,
+			);
+			name = "External Frameworks and Libraries";
+			sourceTree = "<group>";
+		};
+		1AB674ADFE9D54B511CA2CBB /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				8DD76FA10486AA7600D96B5E /* crash_report */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		4D2C726E126F9CE200B43EAF /* libdisasm */ = {
+			isa = PBXGroup;
+			children = (
+				4D2C7226126F9B0F00B43EAF /* disassembler_x86.cc */,
+				4D2C724B126F9C3800B43EAF /* ia32_implicit.c */,
+				4D2C7245126F9C0B00B43EAF /* ia32_insn.c */,
+				4D2C7232126F9BB000B43EAF /* ia32_invariant.c */,
+				4D2C7261126F9CBB00B43EAF /* ia32_modrm.c */,
+				4D2C7249126F9C2300B43EAF /* ia32_opcode_tables.c */,
+				4D2C725A126F9C8000B43EAF /* ia32_operand.c */,
+				4D2C724D126F9C4D00B43EAF /* ia32_reg.c */,
+				4D2C7234126F9BC200B43EAF /* ia32_settings.c */,
+				4D2C722A126F9B5A00B43EAF /* x86_disasm.c */,
+				4D2C7263126F9CBB00B43EAF /* x86_imm.c */,
+				4D2C725C126F9C9200B43EAF /* x86_insn.c */,
+				4D2C722C126F9B6E00B43EAF /* x86_misc.c */,
+				4D2C722E126F9B8300B43EAF /* x86_operand_list.c */,
+			);
+			name = libdisasm;
+			sourceTree = "<group>";
+		};
+		9BDF16F70B1B8ACD00F8391B /* google_breakpad */ = {
+			isa = PBXGroup;
+			children = (
+				9BDF16F80B1B8ACD00F8391B /* common */,
+				9BDF16FB0B1B8ACD00F8391B /* processor */,
+			);
+			name = google_breakpad;
+			path = ../../../google_breakpad;
+			sourceTree = SOURCE_ROOT;
+		};
+		9BDF16F80B1B8ACD00F8391B /* common */ = {
+			isa = PBXGroup;
+			children = (
+				9BDF16F90B1B8ACD00F8391B /* breakpad_types.h */,
+				9BDF16FA0B1B8ACD00F8391B /* minidump_format.h */,
+			);
+			path = common;
+			sourceTree = "<group>";
+		};
+		9BDF16FB0B1B8ACD00F8391B /* processor */ = {
+			isa = PBXGroup;
+			children = (
+				9B3904940B2E52D90059FABE /* basic_source_line_resolver.h */,
+				9BDF16FC0B1B8ACD00F8391B /* call_stack.h */,
+				9B35FEE20B2675F9008DE8C7 /* code_module.h */,
+				9B35FEE30B2675F9008DE8C7 /* code_modules.h */,
+				9BDF16FD0B1B8ACD00F8391B /* memory_region.h */,
+				9BDF16FE0B1B8ACD00F8391B /* minidump.h */,
+				9BDF16FF0B1B8ACD00F8391B /* minidump_processor.h */,
+				9BDF17000B1B8ACD00F8391B /* process_state.h */,
+				9B3904950B2E52D90059FABE /* source_line_resolver_interface.h */,
+				9BDF17010B1B8ACD00F8391B /* stack_frame.h */,
+				9BDF17020B1B8ACD00F8391B /* stack_frame_cpu.h */,
+				9BDF17030B1B8ACD00F8391B /* stackwalker.h */,
+				9BDF17040B1B8ACD00F8391B /* symbol_supplier.h */,
+				9B44619D0B66C66B00BBB817 /* system_info.h */,
+			);
+			path = processor;
+			sourceTree = "<group>";
+		};
+		9BDF17280B1B8B0200F8391B /* processor */ = {
+			isa = PBXGroup;
+			children = (
+				4D2C7222126F9AF900B43EAF /* exploitability_win.cc */,
+				F407DC40185773C10064622B /* exploitability_linux.cc */,
+				F407DC41185773C10064622B /* stack_frame_symbolizer.cc */,
+				F407DC42185773C10064622B /* stackwalker_arm64.cc */,
+				F407DC43185773C10064622B /* stackwalker_arm64.h */,
+				F407DC44185773C10064622B /* stackwalker_mips.cc */,
+				F407DC45185773C10064622B /* stackwalker_mips.h */,
+				F407DC46185773C10064622B /* stackwalker_ppc64.cc */,
+				F407DC47185773C10064622B /* stackwalker_ppc64.h */,
+				4D2C721E126F9ADE00B43EAF /* exploitability.cc */,
+				4D2C721A126F9ACC00B43EAF /* source_line_resolver_base.cc */,
+				D2A5DD621188658B00081F03 /* tokenize.cc */,
+				D2A5DD4C1188651100081F03 /* cfi_frame_info.cc */,
+				F9F0706510FBC02D0037B88B /* stackwalker_arm.cc */,
+				F9F0706610FBC02D0037B88B /* stackwalker_arm.h */,
+				9B3904980B2E52FD0059FABE /* basic_source_line_resolver.cc */,
+				9BDF1AFA0B1BEB6300F8391B /* address_map-inl.h */,
+				9BDF1AFB0B1BEB6300F8391B /* address_map.h */,
+				9B35FEE60B26761C008DE8C7 /* basic_code_module.h */,
+				9B35FEE70B26761C008DE8C7 /* basic_code_modules.cc */,
+				9B35FEE80B26761C008DE8C7 /* basic_code_modules.h */,
+				9BDF172A0B1B8B2400F8391B /* call_stack.cc */,
+				8B40BDBF0C0638E4009535AF /* logging.cc */,
+				9BDF173F0B1B8B9A00F8391B /* minidump.cc */,
+				9BDF172B0B1B8B2400F8391B /* minidump_processor.cc */,
+				9BDF1A270B1BD58200F8391B /* pathname_stripper.cc */,
+				9BDF175B0B1B8C1B00F8391B /* process_state.cc */,
+				9BDF1A7A0B1BE30100F8391B /* range_map-inl.h */,
+				9BDF1A7B0B1BE30100F8391B /* range_map.h */,
+				9BDF17530B1B8BF900F8391B /* stackwalker.cc */,
+				9BDF17510B1B8BF900F8391B /* stackwalker_ppc.cc */,
+				9BDF17520B1B8BF900F8391B /* stackwalker_x86.cc */,
+				FD8EDEAC0CADDAD400A5EDF1 /* stackwalker_sparc.cc */,
+				FD8EDEAD0CADDAD400A5EDF1 /* stackwalker_sparc.h */,
+				FD6625C40CF4D438004AC844 /* stackwalker_amd64.cc */,
+				FD6625C50CF4D438004AC844 /* stackwalker_amd64.h */,
+			);
+			name = processor;
+			sourceTree = "<group>";
+		};
+		9BE650AB0B52FE1A00611104 /* common */ = {
+			isa = PBXGroup;
+			children = (
+				9BE650AC0B52FE3000611104 /* file_id.cc */,
+				9BE650AD0B52FE3000611104 /* file_id.h */,
+				9BE650AE0B52FE3000611104 /* macho_id.cc */,
+				9BE650AF0B52FE3000611104 /* macho_id.h */,
+				9BE650B00B52FE3000611104 /* macho_walker.cc */,
+				9BE650B10B52FE3000611104 /* macho_walker.h */,
+			);
+			name = common;
+			sourceTree = "<group>";
+		};
+		F9C7ECE10E8ABC7F00E953AD /* DWARF */ = {
+			isa = PBXGroup;
+			children = (
+				F9C7ECE20E8ABCA600E953AD /* bytereader.cc */,
+				F9C7ECE30E8ABCA600E953AD /* dwarf2reader.cc */,
+				8B31FFC311F0C8AB00FCF3E4 /* dwarf2diehandler.cc */,
+				8B31FFC411F0C8AB00FCF3E4 /* dwarf2diehandler.h */,
+				F9C7ECE40E8ABCA600E953AD /* functioninfo.cc */,
+			);
+			name = DWARF;
+			sourceTree = "<group>";
+		};
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+		8DD76F960486AA7600D96B5E /* crash_report */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 1DEB927408733DD40010E9CD /* Build configuration list for PBXNativeTarget "crash_report" */;
+			buildPhases = (
+				8DD76F990486AA7600D96B5E /* Sources */,
+				8DD76F9B0486AA7600D96B5E /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = crash_report;
+			productInstallPath = "$(HOME)/bin";
+			productName = crash_report;
+			productReference = 8DD76FA10486AA7600D96B5E /* crash_report */;
+			productType = "com.apple.product-type.tool";
+		};
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+		08FB7793FE84155DC02AAC07 /* Project object */ = {
+			isa = PBXProject;
+			buildConfigurationList = 1DEB927808733DD40010E9CD /* Build configuration list for PBXProject "crash_report" */;
+			compatibilityVersion = "Xcode 3.1";
+			hasScannedForEncodings = 1;
+			knownRegions = (
+				English,
+				Japanese,
+				French,
+				German,
+			);
+			mainGroup = 08FB7794FE84155DC02AAC07 /* crash_report */;
+			projectDirPath = "";
+			projectRoot = "";
+			targets = (
+				8DD76F960486AA7600D96B5E /* crash_report */,
+			);
+		};
+/* End PBXProject section */
+
+/* Begin PBXSourcesBuildPhase section */
+		8DD76F990486AA7600D96B5E /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				162F64FE161C5ECB00CD68D5 /* arch_utilities.cc in Sources */,
+				8DD76F9A0486AA7600D96B5E /* crash_report.mm in Sources */,
+				9BDF172C0B1B8B2400F8391B /* call_stack.cc in Sources */,
+				9BDF172D0B1B8B2400F8391B /* minidump_processor.cc in Sources */,
+				9BDF17410B1B8B9A00F8391B /* minidump.cc in Sources */,
+				F44DDD8719C85CD50047280E /* dump_context.cc in Sources */,
+				9BDF17540B1B8BF900F8391B /* stackwalker_ppc.cc in Sources */,
+				9BDF17550B1B8BF900F8391B /* stackwalker_x86.cc in Sources */,
+				9BDF17560B1B8BF900F8391B /* stackwalker.cc in Sources */,
+				9BDF175D0B1B8C1B00F8391B /* process_state.cc in Sources */,
+				9BDF176E0B1B8CB100F8391B /* on_demand_symbol_supplier.mm in Sources */,
+				9BDF1A280B1BD58200F8391B /* pathname_stripper.cc in Sources */,
+				9BDF21A70B1E825400F8391B /* dump_syms.mm in Sources */,
+				9B35FEEA0B26761C008DE8C7 /* basic_code_modules.cc in Sources */,
+				9B3904990B2E52FD0059FABE /* basic_source_line_resolver.cc in Sources */,
+				9BE650B20B52FE3000611104 /* file_id.cc in Sources */,
+				9BE650B40B52FE3000611104 /* macho_id.cc in Sources */,
+				9BE650B60B52FE3000611104 /* macho_walker.cc in Sources */,
+				557800400BE1F28500EC23E0 /* macho_utilities.cc in Sources */,
+				8B40BDC00C0638E4009535AF /* logging.cc in Sources */,
+				FD8EDEAE0CADDAD400A5EDF1 /* stackwalker_sparc.cc in Sources */,
+				FD6625CD0CF4D45C004AC844 /* stackwalker_amd64.cc in Sources */,
+				F9C7ECE50E8ABCA600E953AD /* bytereader.cc in Sources */,
+				F9C7ECE60E8ABCA600E953AD /* dwarf2reader.cc in Sources */,
+				F9C7ECE70E8ABCA600E953AD /* functioninfo.cc in Sources */,
+				F9F0706710FBC02D0037B88B /* stackwalker_arm.cc in Sources */,
+				D2A5DD4D1188651100081F03 /* cfi_frame_info.cc in Sources */,
+				D2A5DD631188658B00081F03 /* tokenize.cc in Sources */,
+				8B31FF2A11F0C62700FCF3E4 /* dwarf_cfi_to_module.cc in Sources */,
+				F4D43B2F1A38490700C290B2 /* microdump.cc in Sources */,
+				8B31FF2B11F0C62700FCF3E4 /* dwarf_cu_to_module.cc in Sources */,
+				F44DDD8819C85CD50047280E /* dump_object.cc in Sources */,
+				8B31FF2C11F0C62700FCF3E4 /* dwarf_line_to_module.cc in Sources */,
+				8B31FF4111F0C64400FCF3E4 /* stabs_reader.cc in Sources */,
+				8B31FF4211F0C64400FCF3E4 /* stabs_to_module.cc in Sources */,
+				8B31FF7411F0C6E000FCF3E4 /* macho_reader.cc in Sources */,
+				8B31FF8811F0C6FB00FCF3E4 /* language.cc in Sources */,
+				8B31FF8911F0C6FB00FCF3E4 /* module.cc in Sources */,
+				8B31FFC511F0C8AB00FCF3E4 /* dwarf2diehandler.cc in Sources */,
+				F407DC49185773C10064622B /* stack_frame_symbolizer.cc in Sources */,
+				4D2C721B126F9ACC00B43EAF /* source_line_resolver_base.cc in Sources */,
+				4D2C721F126F9ADE00B43EAF /* exploitability.cc in Sources */,
+				4D2C7223126F9AF900B43EAF /* exploitability_win.cc in Sources */,
+				4D2C7227126F9B0F00B43EAF /* disassembler_x86.cc in Sources */,
+				F407DC48185773C10064622B /* exploitability_linux.cc in Sources */,
+				4D2C722B126F9B5A00B43EAF /* x86_disasm.c in Sources */,
+				4D2C722D126F9B6E00B43EAF /* x86_misc.c in Sources */,
+				4D2C722F126F9B8300B43EAF /* x86_operand_list.c in Sources */,
+				F407DC4A185773C10064622B /* stackwalker_arm64.cc in Sources */,
+				4D2C7233126F9BB000B43EAF /* ia32_invariant.c in Sources */,
+				4D2C7235126F9BC200B43EAF /* ia32_settings.c in Sources */,
+				4D2C7246126F9C0B00B43EAF /* ia32_insn.c in Sources */,
+				4D2C724A126F9C2300B43EAF /* ia32_opcode_tables.c in Sources */,
+				4D2C724C126F9C3800B43EAF /* ia32_implicit.c in Sources */,
+				F44DDD8919C85CD50047280E /* microdump_processor.cc in Sources */,
+				4D2C724E126F9C4D00B43EAF /* ia32_reg.c in Sources */,
+				4D2C725B126F9C8000B43EAF /* ia32_operand.c in Sources */,
+				F407DC4C185773C10064622B /* stackwalker_ppc64.cc in Sources */,
+				4D2C725D126F9C9200B43EAF /* x86_insn.c in Sources */,
+				4D2C7264126F9CBB00B43EAF /* ia32_modrm.c in Sources */,
+				F407DC4B185773C10064622B /* stackwalker_mips.cc in Sources */,
+				4D2C726D126F9CDC00B43EAF /* x86_imm.c in Sources */,
+				4D72CA5713DFBA84006CABE3 /* md5.cc in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+		1DEB927508733DD40010E9CD /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = ../../../../src;
+				PRODUCT_NAME = crash_report;
+			};
+			name = Debug;
+		};
+		1DEB927608733DD40010E9CD /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = ../../../../src;
+				PRODUCT_NAME = crash_report;
+			};
+			name = Release;
+		};
+		1DEB927908733DD40010E9CD /* Debug */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 8B3102DA11F0D65600FCF3E4 /* BreakpadDebug.xcconfig */;
+			buildSettings = {
+				GCC_PREPROCESSOR_DEFINITIONS = HAVE_MACH_O_NLIST_H;
+				GCC_TREAT_WARNINGS_AS_ERRORS = NO;
+			};
+			name = Debug;
+		};
+		1DEB927A08733DD40010E9CD /* Release */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 8B3102DB11F0D65600FCF3E4 /* BreakpadRelease.xcconfig */;
+			buildSettings = {
+				GCC_PREPROCESSOR_DEFINITIONS = HAVE_MACH_O_NLIST_H;
+			};
+			name = Release;
+		};
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+		1DEB927408733DD40010E9CD /* Build configuration list for PBXNativeTarget "crash_report" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				1DEB927508733DD40010E9CD /* Debug */,
+				1DEB927608733DD40010E9CD /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		1DEB927808733DD40010E9CD /* Build configuration list for PBXProject "crash_report" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				1DEB927908733DD40010E9CD /* Debug */,
+				1DEB927A08733DD40010E9CD /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+/* End XCConfigurationList section */
+	};
+	rootObject = 08FB7793FE84155DC02AAC07 /* Project object */;
+}
diff --git a/google-breakpad/src/tools/mac/crash_report/on_demand_symbol_supplier.h b/google-breakpad/src/tools/mac/crash_report/on_demand_symbol_supplier.h
new file mode 100644
index 0000000..3fbe108
--- /dev/null
+++ b/google-breakpad/src/tools/mac/crash_report/on_demand_symbol_supplier.h
@@ -0,0 +1,111 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// on_demand_symbol_supplier.h: Provides a Symbol Supplier that will create
+// a breakpad symbol file on demand.
+
+#ifndef TOOLS_MAC_CRASH_REPORT_ON_DEMAND_SYMBOL_SUPPLIER_H__
+#define TOOLS_MAC_CRASH_REPORT_ON_DEMAND_SYMBOL_SUPPLIER_H__
+
+#include <map>
+#include <string>
+#include "google_breakpad/processor/symbol_supplier.h"
+
+namespace google_breakpad {
+
+using std::map;
+using std::string;
+class MinidumpModule;
+
+class OnDemandSymbolSupplier : public SymbolSupplier {
+ public:
+  // |search_dir| is the directory to search for alternative symbols with
+  // the same name as the module in the minidump
+  OnDemandSymbolSupplier(const string &search_dir,
+                         const string &symbol_search_dir);
+  virtual ~OnDemandSymbolSupplier() {}
+
+  // Returns the path to the symbol file for the given module.
+  virtual SymbolResult GetSymbolFile(const CodeModule *module,
+                                     const SystemInfo *system_info,
+                                     string *symbol_file);
+
+  // Returns the path to the symbol file for the given module.
+  virtual SymbolResult GetSymbolFile(const CodeModule *module,
+                                     const SystemInfo *system_info,
+                                     string *symbol_file,
+                                     string *symbol_data);
+  // Allocates data buffer on heap, and takes the ownership of
+  // the data buffer.
+  virtual SymbolResult GetCStringSymbolData(const CodeModule *module,
+                                            const SystemInfo *system_info,
+                                            string *symbol_file,
+                                            char **symbol_data,
+                                            size_t *symbol_data_size);
+
+  // Delete the data buffer allocated for module in GetCStringSymbolData().
+  virtual void FreeSymbolData(const CodeModule *module);
+
+ protected:
+  // Search directory
+  string search_dir_;
+  string symbol_search_dir_;
+
+  // When we create a symbol file for a module, save the name of the module
+  // and the path to that module's symbol file.
+  map<string, string> module_file_map_;
+
+  // Map of allocated data buffers, keyed by module->code_file().
+  map<string, char *> memory_buffers_;
+
+  // Return the name for |module|  This will be the value used as the key
+  // to the |module_file_map_|.
+  string GetNameForModule(const CodeModule *module);
+
+  // Find the module on local system.  If the module resides in a different
+  // location than the full path in the minidump, this will be the location
+  // used.
+  string GetLocalModulePath(const CodeModule *module);
+
+  // Return the full path for |module|.
+  string GetModulePath(const CodeModule *module);
+
+  // Return the path to the symbol file for |module|.  If an empty string is
+  // returned, then |module| doesn't have a symbol file.
+  string GetModuleSymbolFile(const CodeModule *module);
+
+  // Generate the breakpad symbol file for |module|.  Return true if successful.
+  // File is generated in /tmp.
+  bool GenerateSymbolFile(const CodeModule *module,
+                          const SystemInfo *system_info);
+};
+
+}  // namespace google_breakpad
+
+#endif  // TOOLS_MAC_CRASH_REPORT_ON_DEMAND_SYMBOL_SUPPLIER_H__
diff --git a/google-breakpad/src/tools/mac/crash_report/on_demand_symbol_supplier.mm b/google-breakpad/src/tools/mac/crash_report/on_demand_symbol_supplier.mm
new file mode 100644
index 0000000..ebbca87
--- /dev/null
+++ b/google-breakpad/src/tools/mac/crash_report/on_demand_symbol_supplier.mm
@@ -0,0 +1,316 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include <sys/stat.h>
+#include <map>
+#include <string>
+#include <iostream>
+#include <fstream>
+#include <utility>
+
+#include "google_breakpad/processor/basic_source_line_resolver.h"
+#include "google_breakpad/processor/minidump.h"
+#include "google_breakpad/processor/system_info.h"
+#include "processor/pathname_stripper.h"
+
+#include "on_demand_symbol_supplier.h"
+#include "common/mac/dump_syms.h"
+
+using std::map;
+using std::string;
+
+using google_breakpad::OnDemandSymbolSupplier;
+using google_breakpad::PathnameStripper;
+using google_breakpad::SymbolSupplier;
+using google_breakpad::SystemInfo;
+
+OnDemandSymbolSupplier::OnDemandSymbolSupplier(const string &search_dir,
+                                               const string &symbol_search_dir)
+  : search_dir_(search_dir) {
+  NSFileManager *mgr = [NSFileManager defaultManager];
+  size_t length = symbol_search_dir.length();
+  if (length) {
+    // Load all sym files in symbol_search_dir into our module_file_map
+    // A symbol file always starts with a line like this:
+    // MODULE mac x86 BBF0A8F9BEADDD2048E6464001CA193F0 GoogleDesktopDaemon
+    // or
+    // MODULE mac ppc BBF0A8F9BEADDD2048E6464001CA193F0 GoogleDesktopDaemon
+    const char *symbolSearchStr = symbol_search_dir.c_str();
+    NSString *symbolSearchPath = 
+      [mgr stringWithFileSystemRepresentation:symbolSearchStr 
+                                       length:strlen(symbolSearchStr)];
+    NSDirectoryEnumerator *dirEnum = [mgr enumeratorAtPath:symbolSearchPath];
+    NSString *fileName;
+    NSCharacterSet *hexSet = 
+      [NSCharacterSet characterSetWithCharactersInString:@"0123456789ABCDEF"];
+    NSCharacterSet *newlineSet = 
+      [NSCharacterSet characterSetWithCharactersInString:@"\r\n"];
+    while ((fileName = [dirEnum nextObject])) {
+      // Check to see what type of file we have
+      NSDictionary *attrib = [dirEnum fileAttributes];
+      NSString *fileType = [attrib objectForKey:NSFileType];
+      if ([fileType isEqualToString:NSFileTypeDirectory]) {
+        // Skip subdirectories
+        [dirEnum skipDescendents];
+      } else {
+        NSString *filePath = [symbolSearchPath stringByAppendingPathComponent:fileName];
+        NSString *dataStr = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:NULL];
+        if (dataStr) {
+          // Check file to see if it is of appropriate type, and grab module
+          // name.
+          NSScanner *scanner = [NSScanner scannerWithString:dataStr];
+          BOOL goodScan = [scanner scanString:@"MODULE mac " intoString:nil];
+          if (goodScan) {
+            goodScan = ([scanner scanString:@"x86 " intoString:nil] ||
+                        [scanner scanString:@"x86_64 " intoString:nil] ||
+                        [scanner scanString:@"ppc " intoString:nil]);
+            if (goodScan) {
+              NSString *moduleID;
+              goodScan = [scanner scanCharactersFromSet:hexSet 
+                                             intoString:&moduleID];
+              if (goodScan) {
+                // Module IDs are always 33 chars long
+                goodScan = [moduleID length] == 33;
+                if (goodScan) {
+                  NSString *moduleName;
+                  goodScan = [scanner scanUpToCharactersFromSet:newlineSet 
+                                                     intoString:&moduleName];
+                  if (goodScan) {
+                    goodScan = [moduleName length] > 0;
+                    if (goodScan) {
+                      const char *moduleNameStr = [moduleName UTF8String];
+                      const char *filePathStr = [filePath fileSystemRepresentation];
+                      // Map our file
+                      module_file_map_[moduleNameStr] = filePathStr;
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+}
+
+SymbolSupplier::SymbolResult
+OnDemandSymbolSupplier::GetSymbolFile(const CodeModule *module,
+                                      const SystemInfo *system_info,
+                                      string *symbol_file) {
+  string path(GetModuleSymbolFile(module));
+
+  if (path.empty()) {
+    if (!GenerateSymbolFile(module, system_info))
+      return NOT_FOUND;
+
+    path = GetModuleSymbolFile(module);
+  }
+
+  if (path.empty())
+    return NOT_FOUND;
+
+  *symbol_file = path;
+  return FOUND;
+}
+
+SymbolSupplier::SymbolResult
+OnDemandSymbolSupplier::GetSymbolFile(const CodeModule *module,
+                                      const SystemInfo *system_info,
+                                      string *symbol_file,
+                                      string *symbol_data) {
+  SymbolSupplier::SymbolResult s = GetSymbolFile(module,
+                                                 system_info,
+                                                 symbol_file);
+
+
+  if (s == FOUND) {
+    std::ifstream in(symbol_file->c_str());
+    getline(in, *symbol_data, std::string::traits_type::to_char_type(
+                std::string::traits_type::eof()));
+    in.close();
+  }
+
+  return s;
+}
+
+SymbolSupplier::SymbolResult
+OnDemandSymbolSupplier::GetCStringSymbolData(const CodeModule *module,
+                                             const SystemInfo *system_info,
+                                             string *symbol_file,
+                                             char **symbol_data,
+                                             size_t *symbol_data_size) {
+  std::string symbol_data_string;
+  SymbolSupplier::SymbolResult result = GetSymbolFile(module,
+                                                      system_info,
+                                                      symbol_file,
+                                                      &symbol_data_string);
+  if (result == FOUND) {
+    *symbol_data_size = symbol_data_string.size() + 1;
+    *symbol_data = new char[*symbol_data_size];
+    if (*symbol_data == NULL) {
+      // Should return INTERRUPT on memory allocation failure.
+      return INTERRUPT;
+    }
+    memcpy(*symbol_data, symbol_data_string.c_str(), symbol_data_string.size());
+    (*symbol_data)[symbol_data_string.size()] = '\0';
+    memory_buffers_.insert(make_pair(module->code_file(), *symbol_data));
+  }
+  return result;
+}
+
+void OnDemandSymbolSupplier::FreeSymbolData(const CodeModule *module) {
+  map<string, char *>::iterator it = memory_buffers_.find(module->code_file());
+  if (it != memory_buffers_.end()) {
+    delete [] it->second;
+    memory_buffers_.erase(it);
+  }
+}
+
+string OnDemandSymbolSupplier::GetLocalModulePath(const CodeModule *module) {
+  NSFileManager *mgr = [NSFileManager defaultManager];
+  const char *moduleStr = module->code_file().c_str();
+  NSString *modulePath =
+    [mgr stringWithFileSystemRepresentation:moduleStr length:strlen(moduleStr)];
+  const char *searchStr = search_dir_.c_str();
+  NSString *searchDir =
+    [mgr stringWithFileSystemRepresentation:searchStr length:strlen(searchStr)];
+
+  if ([mgr fileExistsAtPath:modulePath])
+    return module->code_file();
+
+  // If the module is not found, try to start appending the components to the
+  // search string and stop if a file (not dir) is found or all components
+  // have been appended
+  NSArray *pathComponents = [modulePath componentsSeparatedByString:@"/"];
+  size_t count = [pathComponents count];
+  NSMutableString *path = [NSMutableString string];
+
+  for (size_t i = 0; i < count; ++i) {
+    [path setString:searchDir];
+
+    for (size_t j = 0; j < i + 1; ++j) {
+      size_t idx = count - 1 - i + j;
+      [path appendFormat:@"/%@", [pathComponents objectAtIndex:idx]];
+    }
+
+    BOOL isDir;
+    if ([mgr fileExistsAtPath:path isDirectory:&isDir] && (!isDir)) {
+      return [path fileSystemRepresentation];
+    }
+  }
+
+  return "";
+}
+
+string OnDemandSymbolSupplier::GetModulePath(const CodeModule *module) {
+  return module->code_file();
+}
+
+string OnDemandSymbolSupplier::GetNameForModule(const CodeModule *module) {
+  return PathnameStripper::File(module->code_file());
+}
+
+string OnDemandSymbolSupplier::GetModuleSymbolFile(const CodeModule *module) {
+  string name(GetNameForModule(module));
+  map<string, string>::iterator result = module_file_map_.find(name);
+
+  return (result == module_file_map_.end()) ? "" : (*result).second;
+}
+
+static float GetFileModificationTime(const char *path) {
+  float result = 0;
+  struct stat file_stat;
+  if (stat(path, &file_stat) == 0)
+    result = (float)file_stat.st_mtimespec.tv_sec +
+      (float)file_stat.st_mtimespec.tv_nsec / 1.0e9f;
+
+  return result;
+}
+
+bool OnDemandSymbolSupplier::GenerateSymbolFile(const CodeModule *module,
+                                                const SystemInfo *system_info) {
+  bool result = true;
+  string name = GetNameForModule(module);
+  string module_path = GetLocalModulePath(module);
+  NSString *symbol_path = [NSString stringWithFormat:@"/tmp/%s.%s.sym",
+    name.c_str(), system_info->cpu.c_str()];
+
+  if (module_path.empty())
+    return false;
+
+  // Check if there's already a symbol file cached.  Ensure that the file is
+  // newer than the module.  Otherwise, generate a new one.
+  BOOL generate_file = YES;
+  if ([[NSFileManager defaultManager] fileExistsAtPath:symbol_path]) {
+    // Check if the module file is newer than the saved symbols
+    float cache_time =
+      GetFileModificationTime([symbol_path fileSystemRepresentation]);
+    float module_time =
+      GetFileModificationTime(module_path.c_str());
+
+    if (cache_time > module_time)
+      generate_file = NO;
+  }
+
+  if (generate_file) {
+    NSString *module_str = [[NSFileManager defaultManager]
+      stringWithFileSystemRepresentation:module_path.c_str()
+                                  length:module_path.length()];
+    DumpSymbols dump(ALL_SYMBOL_DATA, false);
+    if (dump.Read(module_str)) {
+      // What Breakpad calls "x86" should be given to the system as "i386".
+      std::string architecture;
+      if (system_info->cpu.compare("x86") == 0) {
+        architecture = "i386";
+      } else {
+        architecture = system_info->cpu;
+      }
+
+      if (dump.SetArchitecture(architecture)) {
+        std::fstream file([symbol_path fileSystemRepresentation],
+                          std::ios_base::out | std::ios_base::trunc);
+        dump.WriteSymbolFile(file);
+      } else {
+        printf("Architecture %s not available for %s\n",
+               system_info->cpu.c_str(), name.c_str());
+        result = false;
+      }
+    } else {
+      printf("Unable to open %s\n", [module_str UTF8String]);
+      result = false;
+    }
+  }
+
+  // Add the mapping
+  if (result)
+    module_file_map_[name] = [symbol_path fileSystemRepresentation];
+
+  return result;
+}
diff --git a/google-breakpad/src/tools/mac/dump_syms/dump_syms.xcodeproj/project.pbxproj b/google-breakpad/src/tools/mac/dump_syms/dump_syms.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..16759f4
--- /dev/null
+++ b/google-breakpad/src/tools/mac/dump_syms/dump_syms.xcodeproj/project.pbxproj
@@ -0,0 +1,1819 @@
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 45;
+	objects = {
+
+/* Begin PBXAggregateTarget section */
+		B88FAFC9116BDCAD00407530 /* all_unittests */ = {
+			isa = PBXAggregateTarget;
+			buildConfigurationList = B88FAFCC116BDCCC00407530 /* Build configuration list for PBXAggregateTarget "all_unittests" */;
+			buildPhases = (
+				B88FB094116CE73E00407530 /* ShellScript */,
+			);
+			dependencies = (
+				B88FB15B116CF53E00407530 /* PBXTargetDependency */,
+				B88FAFCF116BDD7000407530 /* PBXTargetDependency */,
+				B88FB01D116BDF9800407530 /* PBXTargetDependency */,
+				B88FB167116CF54B00407530 /* PBXTargetDependency */,
+				B88FAFD1116BDD7000407530 /* PBXTargetDependency */,
+				B88FB165116CF54B00407530 /* PBXTargetDependency */,
+				B88FB161116CF54B00407530 /* PBXTargetDependency */,
+				B88FB15F116CF54B00407530 /* PBXTargetDependency */,
+				B88FB15D116CF54B00407530 /* PBXTargetDependency */,
+				B84A9201116CF7D2006C210E /* PBXTargetDependency */,
+				B88FB0C8116CEB4A00407530 /* PBXTargetDependency */,
+				8B31051511F100CF00FCF3E4 /* PBXTargetDependency */,
+			);
+			name = all_unittests;
+			productName = all_unittests;
+		};
+/* End PBXAggregateTarget section */
+
+/* Begin PBXBuildFile section */
+		162F64FA161C591500CD68D5 /* arch_utilities.cc in Sources */ = {isa = PBXBuildFile; fileRef = 162F64F8161C591500CD68D5 /* arch_utilities.cc */; };
+		162F6500161C5F2200CD68D5 /* arch_utilities.cc in Sources */ = {isa = PBXBuildFile; fileRef = 162F64F8161C591500CD68D5 /* arch_utilities.cc */; };
+		4D72CAF513DFBAC2006CABE3 /* md5.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4D72CAF413DFBAC2006CABE3 /* md5.cc */; };
+		B84A91F8116CF78F006C210E /* libgtestmockall.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B88FB024116BDFFF00407530 /* libgtestmockall.a */; };
+		B84A91FB116CF7AF006C210E /* module.cc in Sources */ = {isa = PBXBuildFile; fileRef = B88FAE241166603300407530 /* module.cc */; };
+		B84A91FC116CF7AF006C210E /* stabs_to_module.cc in Sources */ = {isa = PBXBuildFile; fileRef = B88FAE3C11666C8900407530 /* stabs_to_module.cc */; };
+		B84A91FD116CF7AF006C210E /* stabs_to_module_unittest.cc in Sources */ = {isa = PBXBuildFile; fileRef = B88FB0D8116CEC0600407530 /* stabs_to_module_unittest.cc */; };
+		B88FAE1911665FE400407530 /* dwarf2diehandler.cc in Sources */ = {isa = PBXBuildFile; fileRef = B88FAE1711665FE400407530 /* dwarf2diehandler.cc */; };
+		B88FAE261166603300407530 /* dwarf_cu_to_module.cc in Sources */ = {isa = PBXBuildFile; fileRef = B88FAE1E1166603300407530 /* dwarf_cu_to_module.cc */; };
+		B88FAE271166603300407530 /* dwarf_line_to_module.cc in Sources */ = {isa = PBXBuildFile; fileRef = B88FAE201166603300407530 /* dwarf_line_to_module.cc */; };
+		B88FAE281166603300407530 /* language.cc in Sources */ = {isa = PBXBuildFile; fileRef = B88FAE221166603300407530 /* language.cc */; };
+		B88FAE291166603300407530 /* module.cc in Sources */ = {isa = PBXBuildFile; fileRef = B88FAE241166603300407530 /* module.cc */; };
+		B88FAE2C1166606200407530 /* macho_reader.cc in Sources */ = {isa = PBXBuildFile; fileRef = B89E0E6E1166571D00DD08C9 /* macho_reader.cc */; };
+		B88FAE351166673E00407530 /* dwarf_cfi_to_module.cc in Sources */ = {isa = PBXBuildFile; fileRef = B88FAE331166673E00407530 /* dwarf_cfi_to_module.cc */; };
+		B88FAE3B11666C6F00407530 /* stabs_reader.cc in Sources */ = {isa = PBXBuildFile; fileRef = B88FAE3911666C6F00407530 /* stabs_reader.cc */; };
+		B88FAE3E11666C8900407530 /* stabs_to_module.cc in Sources */ = {isa = PBXBuildFile; fileRef = B88FAE3C11666C8900407530 /* stabs_to_module.cc */; };
+		B88FAF37116A595400407530 /* cfi_assembler.cc in Sources */ = {isa = PBXBuildFile; fileRef = B88FAF34116A595400407530 /* cfi_assembler.cc */; };
+		B88FAF38116A595400407530 /* dwarf2reader_cfi_unittest.cc in Sources */ = {isa = PBXBuildFile; fileRef = B88FAF36116A595400407530 /* dwarf2reader_cfi_unittest.cc */; };
+		B88FAF3F116A5A2E00407530 /* dwarf2reader.cc in Sources */ = {isa = PBXBuildFile; fileRef = F95B422F0E0E22D100DBDE83 /* dwarf2reader.cc */; };
+		B88FAF40116A5A2E00407530 /* bytereader.cc in Sources */ = {isa = PBXBuildFile; fileRef = F95B422C0E0E22D100DBDE83 /* bytereader.cc */; };
+		B88FB00F116BDEA700407530 /* stabs_reader_unittest.cc in Sources */ = {isa = PBXBuildFile; fileRef = B88FB003116BDE7200407530 /* stabs_reader_unittest.cc */; };
+		B88FB010116BDEA700407530 /* stabs_reader.cc in Sources */ = {isa = PBXBuildFile; fileRef = B88FAE3911666C6F00407530 /* stabs_reader.cc */; };
+		B88FB028116BE03100407530 /* test_assembler.cc in Sources */ = {isa = PBXBuildFile; fileRef = B88FAE0911665B5700407530 /* test_assembler.cc */; };
+		B88FB029116BE03100407530 /* gmock-all.cc in Sources */ = {isa = PBXBuildFile; fileRef = B89E0EA311665AEA00DD08C9 /* gmock-all.cc */; };
+		B88FB02A116BE03100407530 /* gtest_main.cc in Sources */ = {isa = PBXBuildFile; fileRef = B89E0E9F11665AC300DD08C9 /* gtest_main.cc */; };
+		B88FB02B116BE03100407530 /* gtest-all.cc in Sources */ = {isa = PBXBuildFile; fileRef = B89E0EA011665AC300DD08C9 /* gtest-all.cc */; };
+		B88FB03F116BE24200407530 /* libgtestmockall.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B88FB024116BDFFF00407530 /* libgtestmockall.a */; };
+		B88FB042116BE3C400407530 /* libgtestmockall.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B88FB024116BDFFF00407530 /* libgtestmockall.a */; };
+		B88FB057116C0CDE00407530 /* libgtestmockall.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B88FB024116BDFFF00407530 /* libgtestmockall.a */; };
+		B88FB0BD116CEAE000407530 /* module_unittest.cc in Sources */ = {isa = PBXBuildFile; fileRef = B88FB0B5116CEA8A00407530 /* module_unittest.cc */; };
+		B88FB0C1116CEB0600407530 /* libgtestmockall.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B88FB024116BDFFF00407530 /* libgtestmockall.a */; };
+		B88FB0C4116CEB4100407530 /* module.cc in Sources */ = {isa = PBXBuildFile; fileRef = B88FAE241166603300407530 /* module.cc */; };
+		B88FB0E3116CEEB000407530 /* libgtestmockall.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B88FB024116BDFFF00407530 /* libgtestmockall.a */; };
+		B88FB0E5116CEED300407530 /* dwarf2diehandler.cc in Sources */ = {isa = PBXBuildFile; fileRef = B88FAE1711665FE400407530 /* dwarf2diehandler.cc */; };
+		B88FB0E6116CEED300407530 /* dwarf2diehandler_unittest.cc in Sources */ = {isa = PBXBuildFile; fileRef = B88FB0DB116CEC5800407530 /* dwarf2diehandler_unittest.cc */; };
+		B88FB0F6116CEF2000407530 /* libgtestmockall.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B88FB024116BDFFF00407530 /* libgtestmockall.a */; };
+		B88FB0FA116CF00E00407530 /* dwarf_line_to_module.cc in Sources */ = {isa = PBXBuildFile; fileRef = B88FAE201166603300407530 /* dwarf_line_to_module.cc */; };
+		B88FB0FB116CF00E00407530 /* dwarf_line_to_module_unittest.cc in Sources */ = {isa = PBXBuildFile; fileRef = B88FB0D7116CEC0600407530 /* dwarf_line_to_module_unittest.cc */; };
+		B88FB0FE116CF02400407530 /* module.cc in Sources */ = {isa = PBXBuildFile; fileRef = B88FAE241166603300407530 /* module.cc */; };
+		B88FB10E116CF08100407530 /* libgtestmockall.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B88FB024116BDFFF00407530 /* libgtestmockall.a */; };
+		B88FB112116CF1F000407530 /* dwarf_cu_to_module.cc in Sources */ = {isa = PBXBuildFile; fileRef = B88FAE1E1166603300407530 /* dwarf_cu_to_module.cc */; };
+		B88FB113116CF1F000407530 /* dwarf_cu_to_module_unittest.cc in Sources */ = {isa = PBXBuildFile; fileRef = B88FB0D6116CEC0600407530 /* dwarf_cu_to_module_unittest.cc */; };
+		B88FB114116CF1F000407530 /* language.cc in Sources */ = {isa = PBXBuildFile; fileRef = B88FAE221166603300407530 /* language.cc */; };
+		B88FB115116CF1F000407530 /* module.cc in Sources */ = {isa = PBXBuildFile; fileRef = B88FAE241166603300407530 /* module.cc */; };
+		B88FB123116CF28500407530 /* libgtestmockall.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B88FB024116BDFFF00407530 /* libgtestmockall.a */; };
+		B88FB129116CF2DD00407530 /* module.cc in Sources */ = {isa = PBXBuildFile; fileRef = B88FAE241166603300407530 /* module.cc */; };
+		B88FB12A116CF2DD00407530 /* dwarf_cfi_to_module.cc in Sources */ = {isa = PBXBuildFile; fileRef = B88FAE331166673E00407530 /* dwarf_cfi_to_module.cc */; };
+		B88FB12B116CF2DD00407530 /* dwarf_cfi_to_module_unittest.cc in Sources */ = {isa = PBXBuildFile; fileRef = B88FB0D5116CEC0600407530 /* dwarf_cfi_to_module_unittest.cc */; };
+		B88FB139116CF31600407530 /* libgtestmockall.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B88FB024116BDFFF00407530 /* libgtestmockall.a */; };
+		B88FB13D116CF38300407530 /* cfi_assembler.cc in Sources */ = {isa = PBXBuildFile; fileRef = B88FAF34116A595400407530 /* cfi_assembler.cc */; };
+		B88FB13E116CF38300407530 /* bytereader.cc in Sources */ = {isa = PBXBuildFile; fileRef = F95B422C0E0E22D100DBDE83 /* bytereader.cc */; };
+		B88FB13F116CF38300407530 /* bytereader_unittest.cc in Sources */ = {isa = PBXBuildFile; fileRef = B88FB0DA116CEC5800407530 /* bytereader_unittest.cc */; };
+		B88FB14F116CF4AE00407530 /* libgtestmockall.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B88FB024116BDFFF00407530 /* libgtestmockall.a */; };
+		B88FB152116CF4D300407530 /* byte_cursor_unittest.cc in Sources */ = {isa = PBXBuildFile; fileRef = B88FB0D4116CEC0600407530 /* byte_cursor_unittest.cc */; };
+		B89E0E781166576C00DD08C9 /* macho_reader.cc in Sources */ = {isa = PBXBuildFile; fileRef = B89E0E6E1166571D00DD08C9 /* macho_reader.cc */; };
+		B89E0E7A1166576C00DD08C9 /* macho_dump.cc in Sources */ = {isa = PBXBuildFile; fileRef = B89E0E701166573700DD08C9 /* macho_dump.cc */; };
+		B89E0E9911665A7200DD08C9 /* macho_reader_unittest.cc in Sources */ = {isa = PBXBuildFile; fileRef = B89E0E6D1166571D00DD08C9 /* macho_reader_unittest.cc */; };
+		B89E0E9A11665A7200DD08C9 /* macho_reader.cc in Sources */ = {isa = PBXBuildFile; fileRef = B89E0E6E1166571D00DD08C9 /* macho_reader.cc */; };
+		B8C5B5171166534700D34F4E /* dwarf2reader.cc in Sources */ = {isa = PBXBuildFile; fileRef = F95B422F0E0E22D100DBDE83 /* dwarf2reader.cc */; };
+		B8C5B5181166534700D34F4E /* bytereader.cc in Sources */ = {isa = PBXBuildFile; fileRef = F95B422C0E0E22D100DBDE83 /* bytereader.cc */; };
+		B8C5B5191166534700D34F4E /* macho_utilities.cc in Sources */ = {isa = PBXBuildFile; fileRef = 557800890BE1F3AB00EC23E0 /* macho_utilities.cc */; };
+		B8C5B51A1166534700D34F4E /* file_id.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BE650410B52F6D800611104 /* file_id.cc */; };
+		B8C5B51B1166534700D34F4E /* macho_id.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BE650430B52F6D800611104 /* macho_id.cc */; };
+		B8C5B51C1166534700D34F4E /* macho_walker.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BE650450B52F6D800611104 /* macho_walker.cc */; };
+		B8C5B51D1166534700D34F4E /* dump_syms.mm in Sources */ = {isa = PBXBuildFile; fileRef = 08FB7796FE84155DC02AAC07 /* dump_syms.mm */; };
+		B8C5B51E1166534700D34F4E /* dump_syms_tool.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9BDF186E0B1BB43700F8391B /* dump_syms_tool.mm */; };
+		B8C5B523116653BA00D34F4E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08FB779EFE84155DC02AAC07 /* Foundation.framework */; };
+		D21F97D711CBA12300239E38 /* test_assembler_unittest.cc in Sources */ = {isa = PBXBuildFile; fileRef = B88FB0D9116CEC0600407530 /* test_assembler_unittest.cc */; };
+		D21F97D811CBA13D00239E38 /* libgtestmockall.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B88FB024116BDFFF00407530 /* libgtestmockall.a */; };
+		D21F97E911CBA1FF00239E38 /* test_assembler.cc in Sources */ = {isa = PBXBuildFile; fileRef = B88FAE0911665B5700407530 /* test_assembler.cc */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+		8B31051411F100CF00FCF3E4 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = D21F97D111CBA0F200239E38;
+			remoteInfo = test_assembler_unittest;
+		};
+		B84A91F9116CF796006C210E /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = B88FB023116BDFFF00407530;
+			remoteInfo = gtestmockall;
+		};
+		B84A9200116CF7D2006C210E /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = B84A91F3116CF784006C210E;
+			remoteInfo = stabs_to_module_unittest;
+		};
+		B88FAFCE116BDD7000407530 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = B89E0E9411665A6400DD08C9;
+			remoteInfo = macho_reader_unittest;
+		};
+		B88FAFD0116BDD7000407530 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = B88FAF2E116A591D00407530;
+			remoteInfo = dwarf2reader_cfi_unittest;
+		};
+		B88FB01C116BDF9800407530 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = B88FB006116BDE8300407530;
+			remoteInfo = stabs_reader_unittest;
+		};
+		B88FB039116BE17E00407530 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = B88FB023116BDFFF00407530;
+			remoteInfo = gtestmockall;
+		};
+		B88FB087116CE6D800407530 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = B88FB023116BDFFF00407530;
+			remoteInfo = gtestmockall;
+		};
+		B88FB08F116CE71000407530 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = B88FB023116BDFFF00407530;
+			remoteInfo = gtestmockall;
+		};
+		B88FB0BF116CEAFE00407530 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = B88FB023116BDFFF00407530;
+			remoteInfo = gtestmockall;
+		};
+		B88FB0C7116CEB4A00407530 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = B88FB0B8116CEABF00407530;
+			remoteInfo = module_unittest;
+		};
+		B88FB0E7116CEEDA00407530 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = B88FB023116BDFFF00407530;
+			remoteInfo = gtestmockall;
+		};
+		B88FB0F7116CEF2E00407530 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = B88FB023116BDFFF00407530;
+			remoteInfo = gtestmockall;
+		};
+		B88FB10F116CF08A00407530 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = B88FB023116BDFFF00407530;
+			remoteInfo = gtestmockall;
+		};
+		B88FB124116CF29E00407530 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = B88FB023116BDFFF00407530;
+			remoteInfo = gtestmockall;
+		};
+		B88FB13B116CF35C00407530 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = B88FB023116BDFFF00407530;
+			remoteInfo = gtestmockall;
+		};
+		B88FB150116CF4C100407530 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = B88FB023116BDFFF00407530;
+			remoteInfo = gtestmockall;
+		};
+		B88FB15A116CF53E00407530 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = B88FB14A116CF4A700407530;
+			remoteInfo = byte_cursor_unittest;
+		};
+		B88FB15C116CF54B00407530 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = B88FB11E116CF27F00407530;
+			remoteInfo = dwarf_cfi_to_module_unittest;
+		};
+		B88FB15E116CF54B00407530 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = B88FB0F1116CEF1900407530;
+			remoteInfo = dwarf_line_to_module_unittest;
+		};
+		B88FB160116CF54B00407530 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = B88FB109116CF07900407530;
+			remoteInfo = dwarf_cu_to_module_unittest;
+		};
+		B88FB164116CF54B00407530 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = B88FB0DE116CEEA800407530;
+			remoteInfo = dwarf2diehandler_unittest;
+		};
+		B88FB166116CF54B00407530 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = B88FB134116CF30F00407530;
+			remoteInfo = bytereader_unittest;
+		};
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXFileReference section */
+		08FB7796FE84155DC02AAC07 /* dump_syms.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = dump_syms.mm; path = ../../../common/mac/dump_syms.mm; sourceTree = "<group>"; };
+		08FB779EFE84155DC02AAC07 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+		162F64F8161C591500CD68D5 /* arch_utilities.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = arch_utilities.cc; path = ../../../common/mac/arch_utilities.cc; sourceTree = "<group>"; };
+		162F64F9161C591500CD68D5 /* arch_utilities.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = arch_utilities.h; path = ../../../common/mac/arch_utilities.h; sourceTree = "<group>"; };
+		4D72CAF413DFBAC2006CABE3 /* md5.cc */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = md5.cc; path = ../../../common/md5.cc; sourceTree = SOURCE_ROOT; };
+		557800890BE1F3AB00EC23E0 /* macho_utilities.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = macho_utilities.cc; path = ../../../common/mac/macho_utilities.cc; sourceTree = SOURCE_ROOT; };
+		5578008A0BE1F3AB00EC23E0 /* macho_utilities.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = macho_utilities.h; path = ../../../common/mac/macho_utilities.h; sourceTree = SOURCE_ROOT; };
+		8B31023E11F0CF1C00FCF3E4 /* Breakpad.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Breakpad.xcconfig; path = ../../../common/mac/Breakpad.xcconfig; sourceTree = SOURCE_ROOT; };
+		8B3102D411F0D60300FCF3E4 /* BreakpadDebug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = BreakpadDebug.xcconfig; path = ../../../common/mac/BreakpadDebug.xcconfig; sourceTree = SOURCE_ROOT; };
+		8B3102D511F0D60300FCF3E4 /* BreakpadRelease.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = BreakpadRelease.xcconfig; path = ../../../common/mac/BreakpadRelease.xcconfig; sourceTree = SOURCE_ROOT; };
+		9BDF186D0B1BB43700F8391B /* dump_syms.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = dump_syms.h; path = ../../../common/mac/dump_syms.h; sourceTree = "<group>"; };
+		9BDF186E0B1BB43700F8391B /* dump_syms_tool.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = dump_syms_tool.mm; sourceTree = "<group>"; };
+		9BE650410B52F6D800611104 /* file_id.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = file_id.cc; path = ../../../common/mac/file_id.cc; sourceTree = SOURCE_ROOT; };
+		9BE650420B52F6D800611104 /* file_id.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = file_id.h; path = ../../../common/mac/file_id.h; sourceTree = SOURCE_ROOT; };
+		9BE650430B52F6D800611104 /* macho_id.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = macho_id.cc; path = ../../../common/mac/macho_id.cc; sourceTree = SOURCE_ROOT; };
+		9BE650440B52F6D800611104 /* macho_id.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = macho_id.h; path = ../../../common/mac/macho_id.h; sourceTree = SOURCE_ROOT; };
+		9BE650450B52F6D800611104 /* macho_walker.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = macho_walker.cc; path = ../../../common/mac/macho_walker.cc; sourceTree = SOURCE_ROOT; };
+		9BE650460B52F6D800611104 /* macho_walker.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = macho_walker.h; path = ../../../common/mac/macho_walker.h; sourceTree = SOURCE_ROOT; };
+		B84A91F4116CF784006C210E /* stabs_to_module_unittest */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = stabs_to_module_unittest; sourceTree = BUILT_PRODUCTS_DIR; };
+		B88FAE0911665B5700407530 /* test_assembler.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = test_assembler.cc; path = ../../../common/test_assembler.cc; sourceTree = SOURCE_ROOT; };
+		B88FAE0A11665B5700407530 /* test_assembler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = test_assembler.h; path = ../../../common/test_assembler.h; sourceTree = SOURCE_ROOT; };
+		B88FAE1711665FE400407530 /* dwarf2diehandler.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = dwarf2diehandler.cc; path = ../../../common/dwarf/dwarf2diehandler.cc; sourceTree = SOURCE_ROOT; };
+		B88FAE1811665FE400407530 /* dwarf2diehandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = dwarf2diehandler.h; path = ../../../common/dwarf/dwarf2diehandler.h; sourceTree = SOURCE_ROOT; };
+		B88FAE1D1166603300407530 /* byte_cursor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = byte_cursor.h; path = ../../../common/byte_cursor.h; sourceTree = SOURCE_ROOT; };
+		B88FAE1E1166603300407530 /* dwarf_cu_to_module.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = dwarf_cu_to_module.cc; path = ../../../common/dwarf_cu_to_module.cc; sourceTree = SOURCE_ROOT; };
+		B88FAE1F1166603300407530 /* dwarf_cu_to_module.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = dwarf_cu_to_module.h; path = ../../../common/dwarf_cu_to_module.h; sourceTree = SOURCE_ROOT; };
+		B88FAE201166603300407530 /* dwarf_line_to_module.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = dwarf_line_to_module.cc; path = ../../../common/dwarf_line_to_module.cc; sourceTree = SOURCE_ROOT; };
+		B88FAE211166603300407530 /* dwarf_line_to_module.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = dwarf_line_to_module.h; path = ../../../common/dwarf_line_to_module.h; sourceTree = SOURCE_ROOT; };
+		B88FAE221166603300407530 /* language.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = language.cc; path = ../../../common/language.cc; sourceTree = SOURCE_ROOT; };
+		B88FAE231166603300407530 /* language.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = language.h; path = ../../../common/language.h; sourceTree = SOURCE_ROOT; };
+		B88FAE241166603300407530 /* module.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = module.cc; path = ../../../common/module.cc; sourceTree = SOURCE_ROOT; };
+		B88FAE251166603300407530 /* module.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = module.h; path = ../../../common/module.h; sourceTree = SOURCE_ROOT; };
+		B88FAE331166673E00407530 /* dwarf_cfi_to_module.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = dwarf_cfi_to_module.cc; path = ../../../common/dwarf_cfi_to_module.cc; sourceTree = SOURCE_ROOT; };
+		B88FAE341166673E00407530 /* dwarf_cfi_to_module.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = dwarf_cfi_to_module.h; path = ../../../common/dwarf_cfi_to_module.h; sourceTree = SOURCE_ROOT; };
+		B88FAE3911666C6F00407530 /* stabs_reader.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = stabs_reader.cc; path = ../../../common/stabs_reader.cc; sourceTree = SOURCE_ROOT; };
+		B88FAE3A11666C6F00407530 /* stabs_reader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stabs_reader.h; path = ../../../common/stabs_reader.h; sourceTree = SOURCE_ROOT; };
+		B88FAE3C11666C8900407530 /* stabs_to_module.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = stabs_to_module.cc; path = ../../../common/stabs_to_module.cc; sourceTree = SOURCE_ROOT; };
+		B88FAE3D11666C8900407530 /* stabs_to_module.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stabs_to_module.h; path = ../../../common/stabs_to_module.h; sourceTree = SOURCE_ROOT; };
+		B88FAF2F116A591E00407530 /* dwarf2reader_cfi_unittest */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = dwarf2reader_cfi_unittest; sourceTree = BUILT_PRODUCTS_DIR; };
+		B88FAF34116A595400407530 /* cfi_assembler.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = cfi_assembler.cc; path = ../../../common/dwarf/cfi_assembler.cc; sourceTree = SOURCE_ROOT; };
+		B88FAF35116A595400407530 /* cfi_assembler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = cfi_assembler.h; path = ../../../common/dwarf/cfi_assembler.h; sourceTree = SOURCE_ROOT; };
+		B88FAF36116A595400407530 /* dwarf2reader_cfi_unittest.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = dwarf2reader_cfi_unittest.cc; path = ../../../common/dwarf/dwarf2reader_cfi_unittest.cc; sourceTree = SOURCE_ROOT; };
+		B88FB003116BDE7200407530 /* stabs_reader_unittest.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = stabs_reader_unittest.cc; path = ../../../common/stabs_reader_unittest.cc; sourceTree = SOURCE_ROOT; };
+		B88FB007116BDE8300407530 /* stabs_reader_unittest */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = stabs_reader_unittest; sourceTree = BUILT_PRODUCTS_DIR; };
+		B88FB024116BDFFF00407530 /* libgtestmockall.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libgtestmockall.a; sourceTree = BUILT_PRODUCTS_DIR; };
+		B88FB0B5116CEA8A00407530 /* module_unittest.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = module_unittest.cc; path = ../../../common/module_unittest.cc; sourceTree = SOURCE_ROOT; };
+		B88FB0B9116CEABF00407530 /* module_unittest */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = module_unittest; sourceTree = BUILT_PRODUCTS_DIR; };
+		B88FB0D4116CEC0600407530 /* byte_cursor_unittest.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = byte_cursor_unittest.cc; path = ../../../common/byte_cursor_unittest.cc; sourceTree = SOURCE_ROOT; };
+		B88FB0D5116CEC0600407530 /* dwarf_cfi_to_module_unittest.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = dwarf_cfi_to_module_unittest.cc; path = ../../../common/dwarf_cfi_to_module_unittest.cc; sourceTree = SOURCE_ROOT; };
+		B88FB0D6116CEC0600407530 /* dwarf_cu_to_module_unittest.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = dwarf_cu_to_module_unittest.cc; path = ../../../common/dwarf_cu_to_module_unittest.cc; sourceTree = SOURCE_ROOT; };
+		B88FB0D7116CEC0600407530 /* dwarf_line_to_module_unittest.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = dwarf_line_to_module_unittest.cc; path = ../../../common/dwarf_line_to_module_unittest.cc; sourceTree = SOURCE_ROOT; };
+		B88FB0D8116CEC0600407530 /* stabs_to_module_unittest.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = stabs_to_module_unittest.cc; path = ../../../common/stabs_to_module_unittest.cc; sourceTree = SOURCE_ROOT; };
+		B88FB0D9116CEC0600407530 /* test_assembler_unittest.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = test_assembler_unittest.cc; path = ../../../common/test_assembler_unittest.cc; sourceTree = SOURCE_ROOT; };
+		B88FB0DA116CEC5800407530 /* bytereader_unittest.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = bytereader_unittest.cc; path = ../../../common/dwarf/bytereader_unittest.cc; sourceTree = SOURCE_ROOT; };
+		B88FB0DB116CEC5800407530 /* dwarf2diehandler_unittest.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = dwarf2diehandler_unittest.cc; path = ../../../common/dwarf/dwarf2diehandler_unittest.cc; sourceTree = SOURCE_ROOT; };
+		B88FB0DF116CEEA800407530 /* dwarf2diehandler_unittest */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = dwarf2diehandler_unittest; sourceTree = BUILT_PRODUCTS_DIR; };
+		B88FB0F2116CEF1900407530 /* dwarf_line_to_module_unittest */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = dwarf_line_to_module_unittest; sourceTree = BUILT_PRODUCTS_DIR; };
+		B88FB10A116CF07900407530 /* dwarf_cu_to_module_unittest */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = dwarf_cu_to_module_unittest; sourceTree = BUILT_PRODUCTS_DIR; };
+		B88FB11F116CF27F00407530 /* dwarf_cfi_to_module_unittest */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = dwarf_cfi_to_module_unittest; sourceTree = BUILT_PRODUCTS_DIR; };
+		B88FB135116CF30F00407530 /* bytereader_unittest */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = bytereader_unittest; sourceTree = BUILT_PRODUCTS_DIR; };
+		B88FB14B116CF4A700407530 /* byte_cursor_unittest */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = byte_cursor_unittest; sourceTree = BUILT_PRODUCTS_DIR; };
+		B89E0E6D1166571D00DD08C9 /* macho_reader_unittest.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = macho_reader_unittest.cc; path = ../../../common/mac/macho_reader_unittest.cc; sourceTree = SOURCE_ROOT; };
+		B89E0E6E1166571D00DD08C9 /* macho_reader.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = macho_reader.cc; path = ../../../common/mac/macho_reader.cc; sourceTree = SOURCE_ROOT; };
+		B89E0E6F1166571D00DD08C9 /* macho_reader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = macho_reader.h; path = ../../../common/mac/macho_reader.h; sourceTree = SOURCE_ROOT; };
+		B89E0E701166573700DD08C9 /* macho_dump.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = macho_dump.cc; sourceTree = "<group>"; };
+		B89E0E741166575200DD08C9 /* macho_dump */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = macho_dump; sourceTree = BUILT_PRODUCTS_DIR; };
+		B89E0E9511665A6400DD08C9 /* macho_reader_unittest */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = macho_reader_unittest; sourceTree = BUILT_PRODUCTS_DIR; };
+		B89E0E9F11665AC300DD08C9 /* gtest_main.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = gtest_main.cc; path = ../../../testing/gtest/src/gtest_main.cc; sourceTree = SOURCE_ROOT; };
+		B89E0EA011665AC300DD08C9 /* gtest-all.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "gtest-all.cc"; path = "../../../testing/gtest/src/gtest-all.cc"; sourceTree = SOURCE_ROOT; };
+		B89E0EA311665AEA00DD08C9 /* gmock-all.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "gmock-all.cc"; path = "../../../testing/src/gmock-all.cc"; sourceTree = SOURCE_ROOT; };
+		B8C5B5111166531A00D34F4E /* dump_syms */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = dump_syms; sourceTree = BUILT_PRODUCTS_DIR; };
+		B8E8CA0C1156C854009E61B2 /* byteswap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = byteswap.h; path = ../../../common/mac/byteswap.h; sourceTree = SOURCE_ROOT; };
+		D21F97D211CBA0F200239E38 /* test_assembler_unittest */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = test_assembler_unittest; sourceTree = BUILT_PRODUCTS_DIR; };
+		F95B422B0E0E22D100DBDE83 /* bytereader-inl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "bytereader-inl.h"; path = "../../../common/dwarf/bytereader-inl.h"; sourceTree = SOURCE_ROOT; };
+		F95B422C0E0E22D100DBDE83 /* bytereader.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = bytereader.cc; path = ../../../common/dwarf/bytereader.cc; sourceTree = SOURCE_ROOT; };
+		F95B422D0E0E22D100DBDE83 /* bytereader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = bytereader.h; path = ../../../common/dwarf/bytereader.h; sourceTree = SOURCE_ROOT; };
+		F95B422E0E0E22D100DBDE83 /* dwarf2enums.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = dwarf2enums.h; path = ../../../common/dwarf/dwarf2enums.h; sourceTree = SOURCE_ROOT; };
+		F95B422F0E0E22D100DBDE83 /* dwarf2reader.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = dwarf2reader.cc; path = ../../../common/dwarf/dwarf2reader.cc; sourceTree = SOURCE_ROOT; };
+		F95B42300E0E22D100DBDE83 /* dwarf2reader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = dwarf2reader.h; path = ../../../common/dwarf/dwarf2reader.h; sourceTree = SOURCE_ROOT; };
+		F95B42310E0E22D100DBDE83 /* line_state_machine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = line_state_machine.h; path = ../../../common/dwarf/line_state_machine.h; sourceTree = SOURCE_ROOT; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+		B84A91F2116CF784006C210E /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				B84A91F8116CF78F006C210E /* libgtestmockall.a in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		B88FAF2D116A591D00407530 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				B88FB042116BE3C400407530 /* libgtestmockall.a in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		B88FB005116BDE8300407530 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				B88FB03F116BE24200407530 /* libgtestmockall.a in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		B88FB022116BDFFF00407530 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		B88FB0B7116CEABF00407530 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				B88FB0C1116CEB0600407530 /* libgtestmockall.a in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		B88FB0DD116CEEA800407530 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				B88FB0E3116CEEB000407530 /* libgtestmockall.a in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		B88FB0F0116CEF1900407530 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				B88FB0F6116CEF2000407530 /* libgtestmockall.a in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		B88FB108116CF07900407530 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				B88FB10E116CF08100407530 /* libgtestmockall.a in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		B88FB11D116CF27F00407530 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				B88FB123116CF28500407530 /* libgtestmockall.a in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		B88FB133116CF30F00407530 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				B88FB139116CF31600407530 /* libgtestmockall.a in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		B88FB149116CF4A700407530 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				B88FB14F116CF4AE00407530 /* libgtestmockall.a in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		B89E0E721166575200DD08C9 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		B89E0E9311665A6400DD08C9 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				B88FB057116C0CDE00407530 /* libgtestmockall.a in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		B8C5B50F1166531A00D34F4E /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				B8C5B523116653BA00D34F4E /* Foundation.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		D21F97D011CBA0F200239E38 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				D21F97D811CBA13D00239E38 /* libgtestmockall.a in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+		08FB7794FE84155DC02AAC07 /* dump_syms */ = {
+			isa = PBXGroup;
+			children = (
+				8B31023E11F0CF1C00FCF3E4 /* Breakpad.xcconfig */,
+				8B3102D411F0D60300FCF3E4 /* BreakpadDebug.xcconfig */,
+				8B3102D511F0D60300FCF3E4 /* BreakpadRelease.xcconfig */,
+				B89E0E9D11665A9500DD08C9 /* TESTING */,
+				F9F5344B0E7C8FFC0012363F /* DWARF */,
+				B89E0E6C1166569700DD08C9 /* MACHO */,
+				B88FAE3811666A1700407530 /* STABS */,
+				B88FAE1C11665FFD00407530 /* MODULE */,
+				162F64F8161C591500CD68D5 /* arch_utilities.cc */,
+				162F64F9161C591500CD68D5 /* arch_utilities.h */,
+				B88FAE1D1166603300407530 /* byte_cursor.h */,
+				B88FB0D4116CEC0600407530 /* byte_cursor_unittest.cc */,
+				B8E8CA0C1156C854009E61B2 /* byteswap.h */,
+				9BE650410B52F6D800611104 /* file_id.cc */,
+				9BE650420B52F6D800611104 /* file_id.h */,
+				9BDF186D0B1BB43700F8391B /* dump_syms.h */,
+				08FB7796FE84155DC02AAC07 /* dump_syms.mm */,
+				9BDF186E0B1BB43700F8391B /* dump_syms_tool.mm */,
+				B89E0E701166573700DD08C9 /* macho_dump.cc */,
+				4D72CAF413DFBAC2006CABE3 /* md5.cc */,
+				08FB779DFE84155DC02AAC07 /* External Frameworks and Libraries */,
+				1AB674ADFE9D54B511CA2CBB /* Products */,
+			);
+			name = dump_syms;
+			sourceTree = "<group>";
+		};
+		08FB779DFE84155DC02AAC07 /* External Frameworks and Libraries */ = {
+			isa = PBXGroup;
+			children = (
+				08FB779EFE84155DC02AAC07 /* Foundation.framework */,
+			);
+			name = "External Frameworks and Libraries";
+			sourceTree = "<group>";
+		};
+		1AB674ADFE9D54B511CA2CBB /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				B8C5B5111166531A00D34F4E /* dump_syms */,
+				B89E0E741166575200DD08C9 /* macho_dump */,
+				B89E0E9511665A6400DD08C9 /* macho_reader_unittest */,
+				B88FAF2F116A591E00407530 /* dwarf2reader_cfi_unittest */,
+				B88FB007116BDE8300407530 /* stabs_reader_unittest */,
+				B88FB024116BDFFF00407530 /* libgtestmockall.a */,
+				B88FB0B9116CEABF00407530 /* module_unittest */,
+				B88FB0DF116CEEA800407530 /* dwarf2diehandler_unittest */,
+				B88FB0F2116CEF1900407530 /* dwarf_line_to_module_unittest */,
+				B88FB10A116CF07900407530 /* dwarf_cu_to_module_unittest */,
+				B88FB11F116CF27F00407530 /* dwarf_cfi_to_module_unittest */,
+				B88FB135116CF30F00407530 /* bytereader_unittest */,
+				B88FB14B116CF4A700407530 /* byte_cursor_unittest */,
+				B84A91F4116CF784006C210E /* stabs_to_module_unittest */,
+				D21F97D211CBA0F200239E38 /* test_assembler_unittest */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		B88FAE1C11665FFD00407530 /* MODULE */ = {
+			isa = PBXGroup;
+			children = (
+				B88FAE1E1166603300407530 /* dwarf_cu_to_module.cc */,
+				B88FAE1F1166603300407530 /* dwarf_cu_to_module.h */,
+				B88FB0D6116CEC0600407530 /* dwarf_cu_to_module_unittest.cc */,
+				B88FAE201166603300407530 /* dwarf_line_to_module.cc */,
+				B88FAE211166603300407530 /* dwarf_line_to_module.h */,
+				B88FB0D7116CEC0600407530 /* dwarf_line_to_module_unittest.cc */,
+				B88FAE221166603300407530 /* language.cc */,
+				B88FAE231166603300407530 /* language.h */,
+				B88FAE241166603300407530 /* module.cc */,
+				B88FAE251166603300407530 /* module.h */,
+				B88FB0B5116CEA8A00407530 /* module_unittest.cc */,
+				B88FAE331166673E00407530 /* dwarf_cfi_to_module.cc */,
+				B88FAE341166673E00407530 /* dwarf_cfi_to_module.h */,
+				B88FB0D5116CEC0600407530 /* dwarf_cfi_to_module_unittest.cc */,
+				B88FAE3C11666C8900407530 /* stabs_to_module.cc */,
+				B88FAE3D11666C8900407530 /* stabs_to_module.h */,
+				B88FB0D8116CEC0600407530 /* stabs_to_module_unittest.cc */,
+			);
+			name = MODULE;
+			sourceTree = "<group>";
+		};
+		B88FAE3811666A1700407530 /* STABS */ = {
+			isa = PBXGroup;
+			children = (
+				B88FB003116BDE7200407530 /* stabs_reader_unittest.cc */,
+				B88FAE3911666C6F00407530 /* stabs_reader.cc */,
+				B88FAE3A11666C6F00407530 /* stabs_reader.h */,
+			);
+			name = STABS;
+			sourceTree = "<group>";
+		};
+		B89E0E6C1166569700DD08C9 /* MACHO */ = {
+			isa = PBXGroup;
+			children = (
+				B89E0E6D1166571D00DD08C9 /* macho_reader_unittest.cc */,
+				B89E0E6E1166571D00DD08C9 /* macho_reader.cc */,
+				B89E0E6F1166571D00DD08C9 /* macho_reader.h */,
+				557800890BE1F3AB00EC23E0 /* macho_utilities.cc */,
+				5578008A0BE1F3AB00EC23E0 /* macho_utilities.h */,
+				9BE650430B52F6D800611104 /* macho_id.cc */,
+				9BE650440B52F6D800611104 /* macho_id.h */,
+				9BE650450B52F6D800611104 /* macho_walker.cc */,
+				9BE650460B52F6D800611104 /* macho_walker.h */,
+			);
+			name = MACHO;
+			sourceTree = "<group>";
+		};
+		B89E0E9D11665A9500DD08C9 /* TESTING */ = {
+			isa = PBXGroup;
+			children = (
+				B88FAE0911665B5700407530 /* test_assembler.cc */,
+				B88FAE0A11665B5700407530 /* test_assembler.h */,
+				B88FB0D9116CEC0600407530 /* test_assembler_unittest.cc */,
+				B89E0EA311665AEA00DD08C9 /* gmock-all.cc */,
+				B89E0E9F11665AC300DD08C9 /* gtest_main.cc */,
+				B89E0EA011665AC300DD08C9 /* gtest-all.cc */,
+			);
+			name = TESTING;
+			sourceTree = "<group>";
+		};
+		F9F5344B0E7C8FFC0012363F /* DWARF */ = {
+			isa = PBXGroup;
+			children = (
+				B88FAF34116A595400407530 /* cfi_assembler.cc */,
+				B88FAF35116A595400407530 /* cfi_assembler.h */,
+				F95B422E0E0E22D100DBDE83 /* dwarf2enums.h */,
+				F95B422F0E0E22D100DBDE83 /* dwarf2reader.cc */,
+				F95B42300E0E22D100DBDE83 /* dwarf2reader.h */,
+				B88FAF36116A595400407530 /* dwarf2reader_cfi_unittest.cc */,
+				F95B422D0E0E22D100DBDE83 /* bytereader.h */,
+				F95B422B0E0E22D100DBDE83 /* bytereader-inl.h */,
+				F95B422C0E0E22D100DBDE83 /* bytereader.cc */,
+				B88FB0DA116CEC5800407530 /* bytereader_unittest.cc */,
+				F95B42310E0E22D100DBDE83 /* line_state_machine.h */,
+				B88FAE1711665FE400407530 /* dwarf2diehandler.cc */,
+				B88FAE1811665FE400407530 /* dwarf2diehandler.h */,
+				B88FB0DB116CEC5800407530 /* dwarf2diehandler_unittest.cc */,
+			);
+			name = DWARF;
+			sourceTree = "<group>";
+		};
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+		B88FB020116BDFFF00407530 /* Headers */ = {
+			isa = PBXHeadersBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+		B84A91F3116CF784006C210E /* stabs_to_module_unittest */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = B84A9202116CF7F0006C210E /* Build configuration list for PBXNativeTarget "stabs_to_module_unittest" */;
+			buildPhases = (
+				B84A91F1116CF784006C210E /* Sources */,
+				B84A91F2116CF784006C210E /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				B84A91FA116CF796006C210E /* PBXTargetDependency */,
+			);
+			name = stabs_to_module_unittest;
+			productName = stabs_to_module_unittest;
+			productReference = B84A91F4116CF784006C210E /* stabs_to_module_unittest */;
+			productType = "com.apple.product-type.tool";
+		};
+		B88FAF2E116A591D00407530 /* dwarf2reader_cfi_unittest */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = B88FAF33116A594800407530 /* Build configuration list for PBXNativeTarget "dwarf2reader_cfi_unittest" */;
+			buildPhases = (
+				B88FAF2C116A591D00407530 /* Sources */,
+				B88FAF2D116A591D00407530 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				B88FB03A116BE17E00407530 /* PBXTargetDependency */,
+			);
+			name = dwarf2reader_cfi_unittest;
+			productName = dwarf2reader_cfi_unittest;
+			productReference = B88FAF2F116A591E00407530 /* dwarf2reader_cfi_unittest */;
+			productType = "com.apple.product-type.tool";
+		};
+		B88FB006116BDE8300407530 /* stabs_reader_unittest */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = B88FB013116BDEC800407530 /* Build configuration list for PBXNativeTarget "stabs_reader_unittest" */;
+			buildPhases = (
+				B88FB004116BDE8300407530 /* Sources */,
+				B88FB005116BDE8300407530 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				B88FB088116CE6D800407530 /* PBXTargetDependency */,
+			);
+			name = stabs_reader_unittest;
+			productName = stabs_reader_unittest;
+			productReference = B88FB007116BDE8300407530 /* stabs_reader_unittest */;
+			productType = "com.apple.product-type.tool";
+		};
+		B88FB023116BDFFF00407530 /* gtestmockall */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = B88FB027116BE02900407530 /* Build configuration list for PBXNativeTarget "gtestmockall" */;
+			buildPhases = (
+				B88FB020116BDFFF00407530 /* Headers */,
+				B88FB021116BDFFF00407530 /* Sources */,
+				B88FB022116BDFFF00407530 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = gtestmockall;
+			productName = gtestmockall;
+			productReference = B88FB024116BDFFF00407530 /* libgtestmockall.a */;
+			productType = "com.apple.product-type.library.static";
+		};
+		B88FB0B8116CEABF00407530 /* module_unittest */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = B88FB0BE116CEAFE00407530 /* Build configuration list for PBXNativeTarget "module_unittest" */;
+			buildPhases = (
+				B88FB0B6116CEABF00407530 /* Sources */,
+				B88FB0B7116CEABF00407530 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				B88FB0C0116CEAFE00407530 /* PBXTargetDependency */,
+			);
+			name = module_unittest;
+			productName = module_unittest;
+			productReference = B88FB0B9116CEABF00407530 /* module_unittest */;
+			productType = "com.apple.product-type.tool";
+		};
+		B88FB0DE116CEEA800407530 /* dwarf2diehandler_unittest */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = B88FB0E4116CEECE00407530 /* Build configuration list for PBXNativeTarget "dwarf2diehandler_unittest" */;
+			buildPhases = (
+				B88FB0DC116CEEA800407530 /* Sources */,
+				B88FB0DD116CEEA800407530 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				B88FB0E8116CEEDA00407530 /* PBXTargetDependency */,
+			);
+			name = dwarf2diehandler_unittest;
+			productName = dwarf2diehandler_unittest;
+			productReference = B88FB0DF116CEEA800407530 /* dwarf2diehandler_unittest */;
+			productType = "com.apple.product-type.tool";
+		};
+		B88FB0F1116CEF1900407530 /* dwarf_line_to_module_unittest */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = B88FB0F9116CEF9800407530 /* Build configuration list for PBXNativeTarget "dwarf_line_to_module_unittest" */;
+			buildPhases = (
+				B88FB0EF116CEF1900407530 /* Sources */,
+				B88FB0F0116CEF1900407530 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				B88FB0F8116CEF2E00407530 /* PBXTargetDependency */,
+			);
+			name = dwarf_line_to_module_unittest;
+			productName = dwarf_line_to_module_unittest;
+			productReference = B88FB0F2116CEF1900407530 /* dwarf_line_to_module_unittest */;
+			productType = "com.apple.product-type.tool";
+		};
+		B88FB109116CF07900407530 /* dwarf_cu_to_module_unittest */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = B88FB111116CF0A800407530 /* Build configuration list for PBXNativeTarget "dwarf_cu_to_module_unittest" */;
+			buildPhases = (
+				B88FB107116CF07900407530 /* Sources */,
+				B88FB108116CF07900407530 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				B88FB110116CF08A00407530 /* PBXTargetDependency */,
+			);
+			name = dwarf_cu_to_module_unittest;
+			productName = dwarf_cu_to_module_unittest;
+			productReference = B88FB10A116CF07900407530 /* dwarf_cu_to_module_unittest */;
+			productType = "com.apple.product-type.tool";
+		};
+		B88FB11E116CF27F00407530 /* dwarf_cfi_to_module_unittest */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = B88FB128116CF2C800407530 /* Build configuration list for PBXNativeTarget "dwarf_cfi_to_module_unittest" */;
+			buildPhases = (
+				B88FB11C116CF27F00407530 /* Sources */,
+				B88FB11D116CF27F00407530 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				B88FB125116CF29E00407530 /* PBXTargetDependency */,
+			);
+			name = dwarf_cfi_to_module_unittest;
+			productName = dwarf_cfi_to_module_unittest;
+			productReference = B88FB11F116CF27F00407530 /* dwarf_cfi_to_module_unittest */;
+			productType = "com.apple.product-type.tool";
+		};
+		B88FB134116CF30F00407530 /* bytereader_unittest */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = B88FB13A116CF33400407530 /* Build configuration list for PBXNativeTarget "bytereader_unittest" */;
+			buildPhases = (
+				B88FB132116CF30F00407530 /* Sources */,
+				B88FB133116CF30F00407530 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				B88FB13C116CF35C00407530 /* PBXTargetDependency */,
+			);
+			name = bytereader_unittest;
+			productName = bytereader_unittest;
+			productReference = B88FB135116CF30F00407530 /* bytereader_unittest */;
+			productType = "com.apple.product-type.tool";
+		};
+		B88FB14A116CF4A700407530 /* byte_cursor_unittest */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = B88FB159116CF4F900407530 /* Build configuration list for PBXNativeTarget "byte_cursor_unittest" */;
+			buildPhases = (
+				B88FB148116CF4A700407530 /* Sources */,
+				B88FB149116CF4A700407530 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				B88FB151116CF4C100407530 /* PBXTargetDependency */,
+			);
+			name = byte_cursor_unittest;
+			productName = byte_cursor_unittest;
+			productReference = B88FB14B116CF4A700407530 /* byte_cursor_unittest */;
+			productType = "com.apple.product-type.tool";
+		};
+		B89E0E731166575200DD08C9 /* macho_dump */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = B89E0E7F116657A100DD08C9 /* Build configuration list for PBXNativeTarget "macho_dump" */;
+			buildPhases = (
+				B89E0E711166575200DD08C9 /* Sources */,
+				B89E0E721166575200DD08C9 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = macho_dump;
+			productName = macho_dump;
+			productReference = B89E0E741166575200DD08C9 /* macho_dump */;
+			productType = "com.apple.product-type.tool";
+		};
+		B89E0E9411665A6400DD08C9 /* macho_reader_unittest */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = B89E0E9E11665A9600DD08C9 /* Build configuration list for PBXNativeTarget "macho_reader_unittest" */;
+			buildPhases = (
+				B89E0E9211665A6400DD08C9 /* Sources */,
+				B89E0E9311665A6400DD08C9 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				B88FB090116CE71000407530 /* PBXTargetDependency */,
+			);
+			name = macho_reader_unittest;
+			productName = macho_reader_unittest;
+			productReference = B89E0E9511665A6400DD08C9 /* macho_reader_unittest */;
+			productType = "com.apple.product-type.tool";
+		};
+		B8C5B5101166531A00D34F4E /* dump_syms */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = B8C5B5151166533900D34F4E /* Build configuration list for PBXNativeTarget "dump_syms" */;
+			buildPhases = (
+				B8C5B50E1166531A00D34F4E /* Sources */,
+				B8C5B50F1166531A00D34F4E /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = dump_syms;
+			productName = dump_syms;
+			productReference = B8C5B5111166531A00D34F4E /* dump_syms */;
+			productType = "com.apple.product-type.tool";
+		};
+		D21F97D111CBA0F200239E38 /* test_assembler_unittest */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = D21F97D611CBA11000239E38 /* Build configuration list for PBXNativeTarget "test_assembler_unittest" */;
+			buildPhases = (
+				D21F97CF11CBA0F200239E38 /* Sources */,
+				D21F97D011CBA0F200239E38 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = test_assembler_unittest;
+			productName = test_assembler_unittest;
+			productReference = D21F97D211CBA0F200239E38 /* test_assembler_unittest */;
+			productType = "com.apple.product-type.tool";
+		};
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+		08FB7793FE84155DC02AAC07 /* Project object */ = {
+			isa = PBXProject;
+			buildConfigurationList = 1DEB927808733DD40010E9CD /* Build configuration list for PBXProject "dump_syms" */;
+			compatibilityVersion = "Xcode 3.1";
+			developmentRegion = English;
+			hasScannedForEncodings = 1;
+			knownRegions = (
+				English,
+				Japanese,
+				French,
+				German,
+			);
+			mainGroup = 08FB7794FE84155DC02AAC07 /* dump_syms */;
+			projectDirPath = "";
+			projectRoot = "";
+			targets = (
+				B8C5B5101166531A00D34F4E /* dump_syms */,
+				B89E0E731166575200DD08C9 /* macho_dump */,
+				B88FB023116BDFFF00407530 /* gtestmockall */,
+				B88FB14A116CF4A700407530 /* byte_cursor_unittest */,
+				B89E0E9411665A6400DD08C9 /* macho_reader_unittest */,
+				B88FB006116BDE8300407530 /* stabs_reader_unittest */,
+				B88FB134116CF30F00407530 /* bytereader_unittest */,
+				B88FAF2E116A591D00407530 /* dwarf2reader_cfi_unittest */,
+				B88FB0DE116CEEA800407530 /* dwarf2diehandler_unittest */,
+				B88FB109116CF07900407530 /* dwarf_cu_to_module_unittest */,
+				B88FB0F1116CEF1900407530 /* dwarf_line_to_module_unittest */,
+				B88FB11E116CF27F00407530 /* dwarf_cfi_to_module_unittest */,
+				B84A91F3116CF784006C210E /* stabs_to_module_unittest */,
+				B88FB0B8116CEABF00407530 /* module_unittest */,
+				B88FAFC9116BDCAD00407530 /* all_unittests */,
+				D21F97D111CBA0F200239E38 /* test_assembler_unittest */,
+			);
+		};
+/* End PBXProject section */
+
+/* Begin PBXShellScriptBuildPhase section */
+		B88FB094116CE73E00407530 /* ShellScript */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputPaths = (
+			);
+			outputPaths = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "set -eu\n\ncd $BUILT_PRODUCTS_DIR\npwd\n\n./byte_cursor_unittest\n./macho_reader_unittest\n./stabs_reader_unittest\n./bytereader_unittest\n./dwarf2reader_cfi_unittest\n./dwarf2diehandler_unittest\n./dwarf_cu_to_module_unittest\n./dwarf_line_to_module_unittest\n./dwarf_cfi_to_module_unittest\n./stabs_to_module_unittest\n./module_unittest\n./test_assembler_unittest\n\necho \"Expect two warnings from the following tests:\"\necho \"   Errors.BadFileNumber\"\necho \"   Errors.BadDirectoryNumber\"\necho \"The proper behavior of these tests is to print text that XCode confuses with compiler warnings.\"\n";
+		};
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+		B84A91F1116CF784006C210E /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				B84A91FB116CF7AF006C210E /* module.cc in Sources */,
+				B84A91FC116CF7AF006C210E /* stabs_to_module.cc in Sources */,
+				B84A91FD116CF7AF006C210E /* stabs_to_module_unittest.cc in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		B88FAF2C116A591D00407530 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				B88FAF38116A595400407530 /* dwarf2reader_cfi_unittest.cc in Sources */,
+				B88FAF3F116A5A2E00407530 /* dwarf2reader.cc in Sources */,
+				B88FAF40116A5A2E00407530 /* bytereader.cc in Sources */,
+				B88FAF37116A595400407530 /* cfi_assembler.cc in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		B88FB004116BDE8300407530 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				B88FB00F116BDEA700407530 /* stabs_reader_unittest.cc in Sources */,
+				B88FB010116BDEA700407530 /* stabs_reader.cc in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		B88FB021116BDFFF00407530 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				B88FB028116BE03100407530 /* test_assembler.cc in Sources */,
+				B88FB029116BE03100407530 /* gmock-all.cc in Sources */,
+				B88FB02A116BE03100407530 /* gtest_main.cc in Sources */,
+				B88FB02B116BE03100407530 /* gtest-all.cc in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		B88FB0B6116CEABF00407530 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				B88FB0BD116CEAE000407530 /* module_unittest.cc in Sources */,
+				B88FB0C4116CEB4100407530 /* module.cc in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		B88FB0DC116CEEA800407530 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				B88FB0E5116CEED300407530 /* dwarf2diehandler.cc in Sources */,
+				B88FB0E6116CEED300407530 /* dwarf2diehandler_unittest.cc in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		B88FB0EF116CEF1900407530 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				B88FB0FA116CF00E00407530 /* dwarf_line_to_module.cc in Sources */,
+				B88FB0FE116CF02400407530 /* module.cc in Sources */,
+				B88FB0FB116CF00E00407530 /* dwarf_line_to_module_unittest.cc in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		B88FB107116CF07900407530 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				B88FB112116CF1F000407530 /* dwarf_cu_to_module.cc in Sources */,
+				B88FB113116CF1F000407530 /* dwarf_cu_to_module_unittest.cc in Sources */,
+				B88FB114116CF1F000407530 /* language.cc in Sources */,
+				B88FB115116CF1F000407530 /* module.cc in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		B88FB11C116CF27F00407530 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				B88FB129116CF2DD00407530 /* module.cc in Sources */,
+				B88FB12A116CF2DD00407530 /* dwarf_cfi_to_module.cc in Sources */,
+				B88FB12B116CF2DD00407530 /* dwarf_cfi_to_module_unittest.cc in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		B88FB132116CF30F00407530 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				B88FB13D116CF38300407530 /* cfi_assembler.cc in Sources */,
+				B88FB13E116CF38300407530 /* bytereader.cc in Sources */,
+				B88FB13F116CF38300407530 /* bytereader_unittest.cc in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		B88FB148116CF4A700407530 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				B88FB152116CF4D300407530 /* byte_cursor_unittest.cc in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		B89E0E711166575200DD08C9 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				162F6500161C5F2200CD68D5 /* arch_utilities.cc in Sources */,
+				B89E0E781166576C00DD08C9 /* macho_reader.cc in Sources */,
+				B89E0E7A1166576C00DD08C9 /* macho_dump.cc in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		B89E0E9211665A6400DD08C9 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				B89E0E9911665A7200DD08C9 /* macho_reader_unittest.cc in Sources */,
+				B89E0E9A11665A7200DD08C9 /* macho_reader.cc in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		B8C5B50E1166531A00D34F4E /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				162F64FA161C591500CD68D5 /* arch_utilities.cc in Sources */,
+				B88FAE2C1166606200407530 /* macho_reader.cc in Sources */,
+				B8C5B5171166534700D34F4E /* dwarf2reader.cc in Sources */,
+				B8C5B5181166534700D34F4E /* bytereader.cc in Sources */,
+				B8C5B5191166534700D34F4E /* macho_utilities.cc in Sources */,
+				B8C5B51A1166534700D34F4E /* file_id.cc in Sources */,
+				B8C5B51B1166534700D34F4E /* macho_id.cc in Sources */,
+				B8C5B51C1166534700D34F4E /* macho_walker.cc in Sources */,
+				B8C5B51D1166534700D34F4E /* dump_syms.mm in Sources */,
+				B8C5B51E1166534700D34F4E /* dump_syms_tool.mm in Sources */,
+				B88FAE1911665FE400407530 /* dwarf2diehandler.cc in Sources */,
+				B88FAE261166603300407530 /* dwarf_cu_to_module.cc in Sources */,
+				B88FAE271166603300407530 /* dwarf_line_to_module.cc in Sources */,
+				B88FAE281166603300407530 /* language.cc in Sources */,
+				B88FAE291166603300407530 /* module.cc in Sources */,
+				B88FAE351166673E00407530 /* dwarf_cfi_to_module.cc in Sources */,
+				B88FAE3B11666C6F00407530 /* stabs_reader.cc in Sources */,
+				B88FAE3E11666C8900407530 /* stabs_to_module.cc in Sources */,
+				4D72CAF513DFBAC2006CABE3 /* md5.cc in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		D21F97CF11CBA0F200239E38 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				D21F97E911CBA1FF00239E38 /* test_assembler.cc in Sources */,
+				D21F97D711CBA12300239E38 /* test_assembler_unittest.cc in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXTargetDependency section */
+		8B31051511F100CF00FCF3E4 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = D21F97D111CBA0F200239E38 /* test_assembler_unittest */;
+			targetProxy = 8B31051411F100CF00FCF3E4 /* PBXContainerItemProxy */;
+		};
+		B84A91FA116CF796006C210E /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = B88FB023116BDFFF00407530 /* gtestmockall */;
+			targetProxy = B84A91F9116CF796006C210E /* PBXContainerItemProxy */;
+		};
+		B84A9201116CF7D2006C210E /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = B84A91F3116CF784006C210E /* stabs_to_module_unittest */;
+			targetProxy = B84A9200116CF7D2006C210E /* PBXContainerItemProxy */;
+		};
+		B88FAFCF116BDD7000407530 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = B89E0E9411665A6400DD08C9 /* macho_reader_unittest */;
+			targetProxy = B88FAFCE116BDD7000407530 /* PBXContainerItemProxy */;
+		};
+		B88FAFD1116BDD7000407530 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = B88FAF2E116A591D00407530 /* dwarf2reader_cfi_unittest */;
+			targetProxy = B88FAFD0116BDD7000407530 /* PBXContainerItemProxy */;
+		};
+		B88FB01D116BDF9800407530 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = B88FB006116BDE8300407530 /* stabs_reader_unittest */;
+			targetProxy = B88FB01C116BDF9800407530 /* PBXContainerItemProxy */;
+		};
+		B88FB03A116BE17E00407530 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = B88FB023116BDFFF00407530 /* gtestmockall */;
+			targetProxy = B88FB039116BE17E00407530 /* PBXContainerItemProxy */;
+		};
+		B88FB088116CE6D800407530 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = B88FB023116BDFFF00407530 /* gtestmockall */;
+			targetProxy = B88FB087116CE6D800407530 /* PBXContainerItemProxy */;
+		};
+		B88FB090116CE71000407530 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = B88FB023116BDFFF00407530 /* gtestmockall */;
+			targetProxy = B88FB08F116CE71000407530 /* PBXContainerItemProxy */;
+		};
+		B88FB0C0116CEAFE00407530 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = B88FB023116BDFFF00407530 /* gtestmockall */;
+			targetProxy = B88FB0BF116CEAFE00407530 /* PBXContainerItemProxy */;
+		};
+		B88FB0C8116CEB4A00407530 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = B88FB0B8116CEABF00407530 /* module_unittest */;
+			targetProxy = B88FB0C7116CEB4A00407530 /* PBXContainerItemProxy */;
+		};
+		B88FB0E8116CEEDA00407530 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = B88FB023116BDFFF00407530 /* gtestmockall */;
+			targetProxy = B88FB0E7116CEEDA00407530 /* PBXContainerItemProxy */;
+		};
+		B88FB0F8116CEF2E00407530 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = B88FB023116BDFFF00407530 /* gtestmockall */;
+			targetProxy = B88FB0F7116CEF2E00407530 /* PBXContainerItemProxy */;
+		};
+		B88FB110116CF08A00407530 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = B88FB023116BDFFF00407530 /* gtestmockall */;
+			targetProxy = B88FB10F116CF08A00407530 /* PBXContainerItemProxy */;
+		};
+		B88FB125116CF29E00407530 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = B88FB023116BDFFF00407530 /* gtestmockall */;
+			targetProxy = B88FB124116CF29E00407530 /* PBXContainerItemProxy */;
+		};
+		B88FB13C116CF35C00407530 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = B88FB023116BDFFF00407530 /* gtestmockall */;
+			targetProxy = B88FB13B116CF35C00407530 /* PBXContainerItemProxy */;
+		};
+		B88FB151116CF4C100407530 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = B88FB023116BDFFF00407530 /* gtestmockall */;
+			targetProxy = B88FB150116CF4C100407530 /* PBXContainerItemProxy */;
+		};
+		B88FB15B116CF53E00407530 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = B88FB14A116CF4A700407530 /* byte_cursor_unittest */;
+			targetProxy = B88FB15A116CF53E00407530 /* PBXContainerItemProxy */;
+		};
+		B88FB15D116CF54B00407530 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = B88FB11E116CF27F00407530 /* dwarf_cfi_to_module_unittest */;
+			targetProxy = B88FB15C116CF54B00407530 /* PBXContainerItemProxy */;
+		};
+		B88FB15F116CF54B00407530 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = B88FB0F1116CEF1900407530 /* dwarf_line_to_module_unittest */;
+			targetProxy = B88FB15E116CF54B00407530 /* PBXContainerItemProxy */;
+		};
+		B88FB161116CF54B00407530 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = B88FB109116CF07900407530 /* dwarf_cu_to_module_unittest */;
+			targetProxy = B88FB160116CF54B00407530 /* PBXContainerItemProxy */;
+		};
+		B88FB165116CF54B00407530 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = B88FB0DE116CEEA800407530 /* dwarf2diehandler_unittest */;
+			targetProxy = B88FB164116CF54B00407530 /* PBXContainerItemProxy */;
+		};
+		B88FB167116CF54B00407530 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = B88FB134116CF30F00407530 /* bytereader_unittest */;
+			targetProxy = B88FB166116CF54B00407530 /* PBXContainerItemProxy */;
+		};
+/* End PBXTargetDependency section */
+
+/* Begin XCBuildConfiguration section */
+		1DEB927908733DD40010E9CD /* Debug */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 8B3102D411F0D60300FCF3E4 /* BreakpadDebug.xcconfig */;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = ../../..;
+			};
+			name = Debug;
+		};
+		1DEB927A08733DD40010E9CD /* Release */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 8B3102D511F0D60300FCF3E4 /* BreakpadRelease.xcconfig */;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = ../../..;
+			};
+			name = Release;
+		};
+		B84A91F6116CF784006C210E /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = (
+					$inherited,
+					../../../testing,
+					../../../testing/include,
+					../../../testing/gtest,
+					../../../testing/gtest/include,
+				);
+				PRODUCT_NAME = stabs_to_module_unittest;
+			};
+			name = Debug;
+		};
+		B84A91F7116CF784006C210E /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = (
+					$inherited,
+					../../../testing,
+					../../../testing/include,
+					../../../testing/gtest,
+					../../../testing/gtest/include,
+				);
+				PRODUCT_NAME = stabs_to_module_unittest;
+			};
+			name = Release;
+		};
+		B88FAF31116A591F00407530 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = (
+					$inherited,
+					../../../testing,
+					../../../testing/include,
+					../../../testing/gtest,
+					../../../testing/gtest/include,
+				);
+				LIBRARY_SEARCH_PATHS = (
+					"$(inherited)",
+					"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)",
+				);
+				LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/build/Debug\"";
+				PRODUCT_NAME = dwarf2reader_cfi_unittest;
+			};
+			name = Debug;
+		};
+		B88FAF32116A591F00407530 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = (
+					$inherited,
+					../../../testing,
+					../../../testing/include,
+					../../../testing/gtest,
+					../../../testing/gtest/include,
+				);
+				LIBRARY_SEARCH_PATHS = (
+					"$(inherited)",
+					"$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)",
+				);
+				LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/build/Debug\"";
+				PRODUCT_NAME = dwarf2reader_cfi_unittest;
+			};
+			name = Release;
+		};
+		B88FAFCA116BDCAD00407530 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				PRODUCT_NAME = all_unittests;
+			};
+			name = Debug;
+		};
+		B88FAFCB116BDCAD00407530 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				PRODUCT_NAME = all_unittests;
+			};
+			name = Release;
+		};
+		B88FB009116BDE8400407530 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				GCC_PREPROCESSOR_DEFINITIONS = HAVE_MACH_O_NLIST_H;
+				HEADER_SEARCH_PATHS = (
+					$inherited,
+					../../../testing,
+					../../../testing/include,
+					../../../testing/gtest,
+					../../../testing/gtest/include,
+				);
+				PRODUCT_NAME = stabs_reader_unittest;
+			};
+			name = Debug;
+		};
+		B88FB00A116BDE8400407530 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				GCC_PREPROCESSOR_DEFINITIONS = HAVE_MACH_O_NLIST_H;
+				HEADER_SEARCH_PATHS = (
+					$inherited,
+					../../../testing,
+					../../../testing/include,
+					../../../testing/gtest,
+					../../../testing/gtest/include,
+				);
+				PRODUCT_NAME = stabs_reader_unittest;
+			};
+			name = Release;
+		};
+		B88FB025116BE00100407530 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = (
+					$inherited,
+					../../../testing,
+					../../../testing/include,
+					../../../testing/gtest,
+					../../../testing/gtest/include,
+				);
+				PRODUCT_NAME = gtestmockall;
+			};
+			name = Debug;
+		};
+		B88FB026116BE00100407530 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = (
+					$inherited,
+					../../../testing,
+					../../../testing/include,
+					../../../testing/gtest,
+					../../../testing/gtest/include,
+				);
+				PRODUCT_NAME = gtestmockall;
+			};
+			name = Release;
+		};
+		B88FB0BB116CEAC000407530 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = (
+					$inherited,
+					../../../testing,
+					../../../testing/include,
+					../../../testing/gtest,
+					../../../testing/gtest/include,
+				);
+				PRODUCT_NAME = module_unittest;
+			};
+			name = Debug;
+		};
+		B88FB0BC116CEAC000407530 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = (
+					$inherited,
+					../../../testing,
+					../../../testing/include,
+					../../../testing/gtest,
+					../../../testing/gtest/include,
+				);
+				PRODUCT_NAME = module_unittest;
+			};
+			name = Release;
+		};
+		B88FB0E1116CEEA800407530 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = (
+					$inherited,
+					../../../testing,
+					../../../testing/include,
+					../../../testing/gtest,
+					../../../testing/gtest/include,
+				);
+				PRODUCT_NAME = dwarf2diehandler_unittest;
+			};
+			name = Debug;
+		};
+		B88FB0E2116CEEA800407530 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = (
+					$inherited,
+					../../../testing,
+					../../../testing/include,
+					../../../testing/gtest,
+					../../../testing/gtest/include,
+				);
+				PRODUCT_NAME = dwarf2diehandler_unittest;
+			};
+			name = Release;
+		};
+		B88FB0F4116CEF1900407530 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = (
+					$inherited,
+					../../../testing,
+					../../../testing/include,
+					../../../testing/gtest,
+					../../../testing/gtest/include,
+				);
+				PRODUCT_NAME = dwarf_line_to_module_unittest;
+			};
+			name = Debug;
+		};
+		B88FB0F5116CEF1900407530 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = (
+					$inherited,
+					../../../testing,
+					../../../testing/include,
+					../../../testing/gtest,
+					../../../testing/gtest/include,
+				);
+				PRODUCT_NAME = dwarf_line_to_module_unittest;
+			};
+			name = Release;
+		};
+		B88FB10C116CF07A00407530 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = (
+					$inherited,
+					../../../testing,
+					../../../testing/include,
+					../../../testing/gtest,
+					../../../testing/gtest/include,
+				);
+				PRODUCT_NAME = dwarf_cu_to_module_unittest;
+			};
+			name = Debug;
+		};
+		B88FB10D116CF07A00407530 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = (
+					$inherited,
+					../../../testing,
+					../../../testing/include,
+					../../../testing/gtest,
+					../../../testing/gtest/include,
+				);
+				PRODUCT_NAME = dwarf_cu_to_module_unittest;
+			};
+			name = Release;
+		};
+		B88FB121116CF28000407530 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = (
+					$inherited,
+					../../../testing,
+					../../../testing/include,
+					../../../testing/gtest,
+					../../../testing/gtest/include,
+				);
+				PRODUCT_NAME = dwarf_cfi_to_module_unittest;
+			};
+			name = Debug;
+		};
+		B88FB122116CF28000407530 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = (
+					$inherited,
+					../../../testing,
+					../../../testing/include,
+					../../../testing/gtest,
+					../../../testing/gtest/include,
+				);
+				PRODUCT_NAME = dwarf_cfi_to_module_unittest;
+			};
+			name = Release;
+		};
+		B88FB137116CF30F00407530 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = (
+					$inherited,
+					../../../testing,
+					../../../testing/include,
+					../../../testing/gtest,
+					../../../testing/gtest/include,
+				);
+				PRODUCT_NAME = bytereader_unittest;
+			};
+			name = Debug;
+		};
+		B88FB138116CF30F00407530 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = (
+					$inherited,
+					../../../testing,
+					../../../testing/include,
+					../../../testing/gtest,
+					../../../testing/gtest/include,
+				);
+				PRODUCT_NAME = bytereader_unittest;
+			};
+			name = Release;
+		};
+		B88FB14D116CF4A800407530 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = (
+					$inherited,
+					../../../testing,
+					../../../testing/include,
+					../../../testing/gtest,
+					../../../testing/gtest/include,
+				);
+				PRODUCT_NAME = byte_cursor_unittest;
+			};
+			name = Debug;
+		};
+		B88FB14E116CF4A800407530 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = (
+					$inherited,
+					../../../testing,
+					../../../testing/include,
+					../../../testing/gtest,
+					../../../testing/gtest/include,
+				);
+				PRODUCT_NAME = byte_cursor_unittest;
+			};
+			name = Release;
+		};
+		B89E0E761166575300DD08C9 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				PRODUCT_NAME = macho_dump;
+			};
+			name = Debug;
+		};
+		B89E0E771166575300DD08C9 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				PRODUCT_NAME = macho_dump;
+			};
+			name = Release;
+		};
+		B89E0E9711665A6400DD08C9 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = (
+					$inherited,
+					../../../testing,
+					../../../testing/include,
+					../../../testing/gtest,
+					../../../testing/gtest/include,
+				);
+				PRODUCT_NAME = macho_reader_unittest;
+			};
+			name = Debug;
+		};
+		B89E0E9811665A6400DD08C9 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = (
+					$inherited,
+					../../../testing,
+					../../../testing/include,
+					../../../testing/gtest,
+					../../../testing/gtest/include,
+				);
+				PRODUCT_NAME = macho_reader_unittest;
+			};
+			name = Release;
+		};
+		B8C5B5131166531B00D34F4E /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				GCC_PREPROCESSOR_DEFINITIONS = HAVE_MACH_O_NLIST_H;
+				PRODUCT_NAME = dump_syms;
+			};
+			name = Debug;
+		};
+		B8C5B5141166531B00D34F4E /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				GCC_PREPROCESSOR_DEFINITIONS = HAVE_MACH_O_NLIST_H;
+				PRODUCT_NAME = dump_syms;
+			};
+			name = Release;
+		};
+		D21F97D411CBA0F200239E38 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = (
+					$inherited,
+					../../../testing,
+					../../../testing/include,
+					../../../testing/gtest,
+					../../../testing/gtest/include,
+				);
+				PRODUCT_NAME = test_assembler_unittest;
+			};
+			name = Debug;
+		};
+		D21F97D511CBA0F200239E38 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = (
+					$inherited,
+					../../../testing,
+					../../../testing/include,
+					../../../testing/gtest,
+					../../../testing/gtest/include,
+				);
+				PRODUCT_NAME = test_assembler_unittest;
+			};
+			name = Release;
+		};
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+		1DEB927808733DD40010E9CD /* Build configuration list for PBXProject "dump_syms" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				1DEB927908733DD40010E9CD /* Debug */,
+				1DEB927A08733DD40010E9CD /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		B84A9202116CF7F0006C210E /* Build configuration list for PBXNativeTarget "stabs_to_module_unittest" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				B84A91F6116CF784006C210E /* Debug */,
+				B84A91F7116CF784006C210E /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		B88FAF33116A594800407530 /* Build configuration list for PBXNativeTarget "dwarf2reader_cfi_unittest" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				B88FAF31116A591F00407530 /* Debug */,
+				B88FAF32116A591F00407530 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		B88FAFCC116BDCCC00407530 /* Build configuration list for PBXAggregateTarget "all_unittests" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				B88FAFCA116BDCAD00407530 /* Debug */,
+				B88FAFCB116BDCAD00407530 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		B88FB013116BDEC800407530 /* Build configuration list for PBXNativeTarget "stabs_reader_unittest" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				B88FB009116BDE8400407530 /* Debug */,
+				B88FB00A116BDE8400407530 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		B88FB027116BE02900407530 /* Build configuration list for PBXNativeTarget "gtestmockall" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				B88FB025116BE00100407530 /* Debug */,
+				B88FB026116BE00100407530 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		B88FB0BE116CEAFE00407530 /* Build configuration list for PBXNativeTarget "module_unittest" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				B88FB0BB116CEAC000407530 /* Debug */,
+				B88FB0BC116CEAC000407530 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		B88FB0E4116CEECE00407530 /* Build configuration list for PBXNativeTarget "dwarf2diehandler_unittest" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				B88FB0E1116CEEA800407530 /* Debug */,
+				B88FB0E2116CEEA800407530 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		B88FB0F9116CEF9800407530 /* Build configuration list for PBXNativeTarget "dwarf_line_to_module_unittest" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				B88FB0F4116CEF1900407530 /* Debug */,
+				B88FB0F5116CEF1900407530 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		B88FB111116CF0A800407530 /* Build configuration list for PBXNativeTarget "dwarf_cu_to_module_unittest" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				B88FB10C116CF07A00407530 /* Debug */,
+				B88FB10D116CF07A00407530 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		B88FB128116CF2C800407530 /* Build configuration list for PBXNativeTarget "dwarf_cfi_to_module_unittest" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				B88FB121116CF28000407530 /* Debug */,
+				B88FB122116CF28000407530 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		B88FB13A116CF33400407530 /* Build configuration list for PBXNativeTarget "bytereader_unittest" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				B88FB137116CF30F00407530 /* Debug */,
+				B88FB138116CF30F00407530 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		B88FB159116CF4F900407530 /* Build configuration list for PBXNativeTarget "byte_cursor_unittest" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				B88FB14D116CF4A800407530 /* Debug */,
+				B88FB14E116CF4A800407530 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		B89E0E7F116657A100DD08C9 /* Build configuration list for PBXNativeTarget "macho_dump" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				B89E0E761166575300DD08C9 /* Debug */,
+				B89E0E771166575300DD08C9 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		B89E0E9E11665A9600DD08C9 /* Build configuration list for PBXNativeTarget "macho_reader_unittest" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				B89E0E9711665A6400DD08C9 /* Debug */,
+				B89E0E9811665A6400DD08C9 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		B8C5B5151166533900D34F4E /* Build configuration list for PBXNativeTarget "dump_syms" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				B8C5B5131166531B00D34F4E /* Debug */,
+				B8C5B5141166531B00D34F4E /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		D21F97D611CBA11000239E38 /* Build configuration list for PBXNativeTarget "test_assembler_unittest" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				D21F97D411CBA0F200239E38 /* Debug */,
+				D21F97D511CBA0F200239E38 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+/* End XCConfigurationList section */
+	};
+	rootObject = 08FB7793FE84155DC02AAC07 /* Project object */;
+}
diff --git a/google-breakpad/src/tools/mac/dump_syms/dump_syms_tool.mm b/google-breakpad/src/tools/mac/dump_syms/dump_syms_tool.mm
new file mode 100644
index 0000000..1880cd3
--- /dev/null
+++ b/google-breakpad/src/tools/mac/dump_syms/dump_syms_tool.mm
@@ -0,0 +1,257 @@
+// -*- mode: c++ -*-
+
+// Copyright (c) 2011, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// dump_syms_tool.mm: Command line tool that uses the DumpSymbols class.
+// TODO(waylonis): accept stdin
+
+#include <mach-o/arch.h>
+#include <unistd.h>
+
+#include <iostream>
+#include <vector>
+
+#include "common/mac/dump_syms.h"
+#include "common/mac/arch_utilities.h"
+#include "common/mac/macho_utilities.h"
+#include "common/scoped_ptr.h"
+
+using google_breakpad::DumpSymbols;
+using google_breakpad::Module;
+using google_breakpad::scoped_ptr;
+using std::vector;
+
+struct Options {
+  Options()
+      : srcPath(), dsymPath(), arch(), cfi(true), handle_inter_cu_refs(true) {}
+  NSString *srcPath;
+  NSString *dsymPath;
+  const NXArchInfo *arch;
+  bool cfi;
+  bool handle_inter_cu_refs;
+};
+
+static bool StackFrameEntryComparator(const Module::StackFrameEntry* a,
+                                      const Module::StackFrameEntry* b) {
+  return a->address < b->address;
+}
+
+// Copy the CFI data from |from_module| into |to_module|, for any non-
+// overlapping ranges.
+static void CopyCFIDataBetweenModules(Module* to_module,
+                                      const Module* from_module) {
+  typedef vector<Module::StackFrameEntry*>::const_iterator Iterator;
+
+  // Get the CFI data from both the source and destination modules and ensure
+  // it is sorted by start address.
+  vector<Module::StackFrameEntry*> from_data;
+  from_module->GetStackFrameEntries(&from_data);
+  std::sort(from_data.begin(), from_data.end(), &StackFrameEntryComparator);
+
+  vector<Module::StackFrameEntry*> to_data;
+  to_module->GetStackFrameEntries(&to_data);
+  std::sort(to_data.begin(), to_data.end(), &StackFrameEntryComparator);
+
+  Iterator to_it = to_data.begin();
+
+  for (Iterator it = from_data.begin(); it != from_data.end(); ++it) {
+    Module::StackFrameEntry* from_entry = *it;
+    Module::Address from_entry_end = from_entry->address + from_entry->size;
+
+    // Find the first CFI record in the |to_module| that does not have an
+    // address less than the entry to be copied.
+    while (to_it != to_data.end()) {
+      if (from_entry->address > (*to_it)->address)
+        ++to_it;
+      else
+        break;
+    }
+
+    // If the entry does not overlap, then it is safe to copy to |to_module|.
+    if (to_it == to_data.end() || (from_entry->address < (*to_it)->address &&
+            from_entry_end < (*to_it)->address)) {
+      to_module->AddStackFrameEntry(new Module::StackFrameEntry(*from_entry));
+    }
+  }
+}
+
+static bool Start(const Options &options) {
+  SymbolData symbol_data = options.cfi ? ALL_SYMBOL_DATA : NO_CFI;
+  DumpSymbols dump_symbols(symbol_data, options.handle_inter_cu_refs);
+
+  // For x86_64 binaries, the CFI data is in the __TEXT,__eh_frame of the
+  // Mach-O file, which is not copied into the dSYM. Whereas in i386, the CFI
+  // data is in the __DWARF,__debug_frame section, which is moved into the
+  // dSYM. Therefore, to get x86_64 CFI data, dump_syms needs to look at both
+  // the dSYM and the Mach-O file. If both paths are present and CFI was
+  // requested, then consider the Module as "split" and dump all the debug data
+  // from the primary debug info file, the dSYM, and then dump additional CFI
+  // data from the source Mach-O file.
+  bool split_module = options.dsymPath && options.srcPath && options.cfi;
+  NSString* primary_file = split_module ? options.dsymPath : options.srcPath;
+
+  if (!dump_symbols.Read(primary_file))
+    return false;
+
+  if (options.arch) {
+    if (!dump_symbols.SetArchitecture(options.arch->cputype,
+                                      options.arch->cpusubtype)) {
+      fprintf(stderr, "%s: no architecture '%s' is present in file.\n",
+              [primary_file fileSystemRepresentation], options.arch->name);
+      size_t available_size;
+      const struct fat_arch *available =
+        dump_symbols.AvailableArchitectures(&available_size);
+      if (available_size == 1)
+        fprintf(stderr, "the file's architecture is: ");
+      else
+        fprintf(stderr, "architectures present in the file are:\n");
+      for (size_t i = 0; i < available_size; i++) {
+        const struct fat_arch *arch = &available[i];
+        const NXArchInfo *arch_info =
+          google_breakpad::BreakpadGetArchInfoFromCpuType(
+              arch->cputype, arch->cpusubtype);
+        if (arch_info)
+          fprintf(stderr, "%s (%s)\n", arch_info->name, arch_info->description);
+        else
+          fprintf(stderr, "unrecognized cpu type 0x%x, subtype 0x%x\n",
+                  arch->cputype, arch->cpusubtype);
+      }
+      return false;
+    }
+  }
+
+  // Read the primary file into a Breakpad Module.
+  Module* module = NULL;
+  if (!dump_symbols.ReadSymbolData(&module))
+    return false;
+  scoped_ptr<Module> scoped_module(module);
+
+  // If this is a split module, read the secondary Mach-O file, from which the
+  // CFI data will be extracted.
+  if (split_module && primary_file == options.dsymPath) {
+    if (!dump_symbols.Read(options.srcPath))
+      return false;
+
+    Module* cfi_module = NULL;
+    if (!dump_symbols.ReadSymbolData(&cfi_module))
+      return false;
+    scoped_ptr<Module> scoped_cfi_module(cfi_module);
+
+    // Ensure that the modules are for the same debug code file.
+    if (cfi_module->name() != module->name() ||
+        cfi_module->os() != module->os() ||
+        cfi_module->architecture() != module->architecture() ||
+        cfi_module->identifier() != module->identifier()) {
+      fprintf(stderr, "Cannot generate a symbol file from split sources that do"
+                      " not match.\n");
+      return false;
+    }
+
+    CopyCFIDataBetweenModules(module, cfi_module);
+  }
+
+  return module->Write(std::cout, symbol_data);
+}
+
+//=============================================================================
+static void Usage(int argc, const char *argv[]) {
+  fprintf(stderr, "Output a Breakpad symbol file from a Mach-o file.\n");
+  fprintf(stderr, "Usage: %s [-a ARCHITECTURE] [-c] [-g dSYM path] "
+                  "<Mach-o file>\n", argv[0]);
+  fprintf(stderr, "\t-a: Architecture type [default: native, or whatever is\n");
+  fprintf(stderr, "\t    in the file, if it contains only one architecture]\n");
+  fprintf(stderr, "\t-g: Debug symbol file (dSYM) to dump in addition to the "
+                  "Mach-o file\n");
+  fprintf(stderr, "\t-c: Do not generate CFI section\n");
+  fprintf(stderr, "\t-r: Do not handle inter-compilation unit references\n");
+  fprintf(stderr, "\t-h: Usage\n");
+  fprintf(stderr, "\t-?: Usage\n");
+}
+
+//=============================================================================
+static void SetupOptions(int argc, const char *argv[], Options *options) {
+  extern int optind;
+  signed char ch;
+
+  while ((ch = getopt(argc, (char * const *)argv, "a:g:chr?")) != -1) {
+    switch (ch) {
+      case 'a': {
+        const NXArchInfo *arch_info =
+            google_breakpad::BreakpadGetArchInfoFromName(optarg);
+        if (!arch_info) {
+          fprintf(stderr, "%s: Invalid architecture: %s\n", argv[0], optarg);
+          Usage(argc, argv);
+          exit(1);
+        }
+        options->arch = arch_info;
+        break;
+      }
+      case 'g':
+        options->dsymPath = [[NSFileManager defaultManager]
+            stringWithFileSystemRepresentation:optarg length:strlen(optarg)];
+        break;
+      case 'c':
+        options->cfi = false;
+        break;
+      case 'r':
+        options->handle_inter_cu_refs = false;
+        break;
+      case '?':
+      case 'h':
+        Usage(argc, argv);
+        exit(0);
+        break;
+    }
+  }
+
+  if ((argc - optind) != 1) {
+    fprintf(stderr, "Must specify Mach-o file\n");
+    Usage(argc, argv);
+    exit(1);
+  }
+
+  options->srcPath = [[NSFileManager defaultManager]
+                       stringWithFileSystemRepresentation:argv[optind]
+                       length:strlen(argv[optind])];
+}
+
+//=============================================================================
+int main (int argc, const char * argv[]) {
+  NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
+  Options options;
+  bool result;
+
+  SetupOptions(argc, argv, &options);
+  result = Start(options);
+
+  [pool release];
+
+  return !result;
+}
diff --git a/google-breakpad/src/tools/mac/dump_syms/macho_dump.cc b/google-breakpad/src/tools/mac/dump_syms/macho_dump.cc
new file mode 100644
index 0000000..4402bf4
--- /dev/null
+++ b/google-breakpad/src/tools/mac/dump_syms/macho_dump.cc
@@ -0,0 +1,199 @@
+// Copyright (c) 2010, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com>
+
+// macho_dump.cc: Dump the contents of a Mach-O file. This is mostly
+// a test program for the Mach_O::FatReader and Mach_O::Reader classes.
+
+#include <errno.h>
+#include <fcntl.h>
+#include <libgen.h>
+#include <mach-o/arch.h>
+#include <sys/mman.h>
+#include <stdint.h>
+#include <string.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+#include <sstream>
+#include <string>
+#include <vector>
+
+#include "common/byte_cursor.h"
+#include "common/mac/arch_utilities.h"
+#include "common/mac/macho_reader.h"
+
+using google_breakpad::ByteBuffer;
+using std::ostringstream;
+using std::string;
+using std::vector;
+
+namespace {
+namespace mach_o = google_breakpad::mach_o;
+
+string program_name;
+
+int check_syscall(int result, const char *operation, const char *filename) {
+  if (result < 0) {
+    fprintf(stderr, "%s: %s '%s': %s\n",
+            program_name.c_str(), operation,
+            filename, strerror(errno));
+    exit(1);
+  }
+  return result;
+}
+
+class DumpSection: public mach_o::Reader::SectionHandler {
+ public:
+  DumpSection() : index_(0) { }
+  bool HandleSection(const mach_o::Section &section) {
+    printf("        section %d '%s' in segment '%s'\n"
+           "          address: 0x%llx\n"
+           "          alignment: 1 << %d B\n"
+           "          flags: %d\n"
+           "          size: %ld\n",
+           index_++, section.section_name.c_str(), section.segment_name.c_str(),
+           section.address, section.align,
+           mach_o::SectionFlags(section.flags),
+           section.contents.Size());
+    return true;
+  }
+         
+ private:
+  int index_;
+};
+
+class DumpCommand: public mach_o::Reader::LoadCommandHandler {
+ public:
+  DumpCommand(mach_o::Reader *reader) : reader_(reader), index_(0) { }
+  bool UnknownCommand(mach_o::LoadCommandType type,
+                      const ByteBuffer &contents) {
+    printf("      load command %d: %d", index_++, type);
+    return true;
+  }
+  bool SegmentCommand(const mach_o::Segment &segment) {
+    printf("      load command %d: %s-bit segment '%s'\n"
+           "        address: 0x%llx\n"
+           "        memory size: 0x%llx\n"
+           "        maximum protection: 0x%x\n"
+           "        initial protection: 0x%x\n"
+           "        flags: %d\n"
+           "        section_list size: %ld B\n",
+           index_++, (segment.bits_64 ? "64" : "32"), segment.name.c_str(),
+           segment.vmaddr, segment.vmsize, segment.maxprot,
+           segment.initprot, mach_o::SegmentFlags(segment.flags),
+           segment.section_list.Size());
+           
+    DumpSection dump_section;
+    return reader_->WalkSegmentSections(segment, &dump_section);
+  }
+ private:
+  mach_o::Reader *reader_;
+  int index_;
+};
+
+void DumpFile(const char *filename) {
+  int fd = check_syscall(open(filename, O_RDONLY), "opening", filename);
+  struct stat attributes;
+  check_syscall(fstat(fd, &attributes),
+                "getting file attributes for", filename);
+  void *mapping = mmap(NULL, attributes.st_size, PROT_READ,
+                       MAP_PRIVATE, fd, 0);
+  close(fd);
+  check_syscall(mapping == (void *)-1 ? -1 : 0,
+                "mapping contents of", filename);
+
+  mach_o::FatReader::Reporter fat_reporter(filename);
+  mach_o::FatReader fat_reader(&fat_reporter);
+  if (!fat_reader.Read(reinterpret_cast<uint8_t *>(mapping),
+                       attributes.st_size)) {
+    exit(1);
+  }
+  printf("filename: %s\n", filename);
+  size_t object_files_size;
+  const struct fat_arch *object_files 
+    = fat_reader.object_files(&object_files_size);
+  printf("  object file count: %ld\n", object_files_size);
+  for (size_t i = 0; i < object_files_size; i++) {
+    const struct fat_arch &file = object_files[i];
+    const NXArchInfo *fat_arch_info =
+        google_breakpad::BreakpadGetArchInfoFromCpuType(
+            file.cputype, file.cpusubtype);
+    printf("\n  object file %ld:\n"
+           "    fat header:\n:"
+           "      CPU type: %s (%s)\n"
+           "      size: %d B\n"
+           "      alignment: 1<<%d B\n",
+           i, fat_arch_info->name, fat_arch_info->description,
+           file.size, file.align);
+
+    ostringstream name;
+    name << filename;
+    if (object_files_size > 1)
+      name << ", object file #" << i;
+    ByteBuffer file_contents(reinterpret_cast<uint8_t *>(mapping)
+                             + file.offset, file.size);
+    mach_o::Reader::Reporter reporter(name.str());
+    mach_o::Reader reader(&reporter);
+    if (!reader.Read(file_contents, file.cputype, file.cpusubtype)) {
+      exit(1);
+    }
+
+    const NXArchInfo *macho_arch_info =
+      NXGetArchInfoFromCpuType(reader.cpu_type(),
+                               reader.cpu_subtype());
+    printf("    Mach-O header:\n"
+           "      word size: %s\n" 
+           "      CPU type: %s (%s)\n"
+           "      File type: %d\n"
+           "      flags: %x\n",
+           (reader.bits_64() ? "64 bits" : "32 bits"),
+           macho_arch_info->name, macho_arch_info->description,
+           reader.file_type(), reader.flags());
+
+    DumpCommand dump_command(&reader);
+    reader.WalkLoadCommands(&dump_command);
+  }
+  munmap(mapping, attributes.st_size);
+}
+
+}  // namespace
+
+int main(int argc, char **argv) {
+  program_name = basename(argv[0]);
+  if (argc == 1) {
+    fprintf(stderr, "Usage: %s FILE ...\n"
+            "Dump the contents of the Mach-O or fat binary files "
+            "'FILE ...'.\n", program_name.c_str());
+  }
+  for (int i = 1; i < argc; i++) {
+    DumpFile(argv[i]);
+  }
+}
diff --git a/google-breakpad/src/tools/mac/symupload/minidump_upload.m b/google-breakpad/src/tools/mac/symupload/minidump_upload.m
new file mode 100644
index 0000000..991a5de
--- /dev/null
+++ b/google-breakpad/src/tools/mac/symupload/minidump_upload.m
@@ -0,0 +1,135 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// minidump_upload.m: Upload a minidump to a HTTP server.  The upload is sent as
+// a multipart/form-data POST request with the following parameters:
+//  prod: the product name
+//  ver: the product version
+//  symbol_file: the breakpad format symbol file
+
+#import <unistd.h>
+
+#import <Foundation/Foundation.h>
+
+#import "common/mac/HTTPMultipartUpload.h"
+
+typedef struct {
+  NSString *minidumpPath;
+  NSString *uploadURLStr;
+  NSString *product;
+  NSString *version;
+  BOOL success;
+} Options;
+
+//=============================================================================
+static void Start(Options *options) {
+  NSURL *url = [NSURL URLWithString:options->uploadURLStr];
+  HTTPMultipartUpload *ul = [[HTTPMultipartUpload alloc] initWithURL:url];
+  NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
+
+  // Add parameters
+  [parameters setObject:options->product forKey:@"prod"];
+  [parameters setObject:options->version forKey:@"ver"];
+  [ul setParameters:parameters];
+
+  // Add file
+  [ul addFileAtPath:options->minidumpPath name:@"upload_file_minidump"];
+
+  // Send it
+  NSError *error = nil;
+  NSData *data = [ul send:&error];
+  NSString *result = [[NSString alloc] initWithData:data
+                                           encoding:NSUTF8StringEncoding];
+
+  NSLog(@"Send: %@", error ? [error description] : @"No Error");
+  NSLog(@"Response: %d", [[ul response] statusCode]);
+  NSLog(@"Result: %d bytes\n%@", [data length], result);
+
+  [result release];
+  [ul release];
+  options->success = !error;
+}
+
+//=============================================================================
+static void
+Usage(int argc, const char *argv[]) {
+  fprintf(stderr, "Submit minidump information.\n");
+  fprintf(stderr, "Usage: %s -p <product> -v <version> <minidump> "
+          "<upload-URL>\n", argv[0]);
+  fprintf(stderr, "<minidump> should be a minidump.\n");
+  fprintf(stderr, "<upload-URL> is the destination for the upload\n");
+
+  fprintf(stderr, "\t-h: Usage\n");
+  fprintf(stderr, "\t-?: Usage\n");
+}
+
+//=============================================================================
+static void
+SetupOptions(int argc, const char *argv[], Options *options) {
+  extern int optind;
+  char ch;
+
+  while ((ch = getopt(argc, (char * const *)argv, "p:v:h?")) != -1) {
+    switch (ch) {
+      case 'p':
+        options->product = [NSString stringWithUTF8String:optarg];
+        break;
+      case 'v':
+        options->version = [NSString stringWithUTF8String:optarg];
+        break;
+
+      default:
+        Usage(argc, argv);
+        exit(0);
+        break;
+    }
+  }
+
+  if ((argc - optind) != 2) {
+    fprintf(stderr, "%s: Missing symbols file and/or upload-URL\n", argv[0]);
+    Usage(argc, argv);
+    exit(1);
+  }
+
+  options->minidumpPath = [NSString stringWithUTF8String:argv[optind]];
+  options->uploadURLStr = [NSString stringWithUTF8String:argv[optind + 1]];
+}
+
+//=============================================================================
+int main (int argc, const char * argv[]) {
+  NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
+  Options options;
+
+  bzero(&options, sizeof(Options));
+  SetupOptions(argc, argv, &options);
+  Start(&options);
+
+  [pool release];
+  return options.success ? 0 : 1;
+}
diff --git a/google-breakpad/src/tools/mac/symupload/symupload.m b/google-breakpad/src/tools/mac/symupload/symupload.m
new file mode 100644
index 0000000..fe41345
--- /dev/null
+++ b/google-breakpad/src/tools/mac/symupload/symupload.m
@@ -0,0 +1,192 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// symupload.m: Upload a symbol file to a HTTP server.  The upload is sent as
+// a multipart/form-data POST request with the following parameters:
+//  code_file: the basename of the module, e.g. "app"
+//  debug_file: the basename of the debugging file, e.g. "app"
+//  debug_identifier: the debug file's identifier, usually consisting of
+//                    the guid and age embedded in the pdb, e.g.
+//                    "11111111BBBB3333DDDD555555555555F"
+//  os: the operating system that the module was built for
+//  cpu: the CPU that the module was built for (x86 or ppc)
+//  symbol_file: the contents of the breakpad-format symbol file
+
+#include <unistd.h>
+
+#include <Foundation/Foundation.h>
+#include "HTTPMultipartUpload.h"
+
+typedef struct {
+  NSString *symbolsPath;
+  NSString *uploadURLStr;
+  BOOL success;
+} Options;
+
+//=============================================================================
+static NSArray *ModuleDataForSymbolFile(NSString *file) {
+  NSFileHandle *fh = [NSFileHandle fileHandleForReadingAtPath:file];
+  NSData *data = [fh readDataOfLength:1024];
+  NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
+  NSScanner *scanner = [NSScanner scannerWithString:str];
+  NSString *line;
+  NSMutableArray *parts = nil;
+  const int MODULE_ID_INDEX = 3;
+  
+  if ([scanner scanUpToString:@"\n" intoString:&line]) {
+    parts = [[NSMutableArray alloc] init];
+    NSScanner *moduleInfoScanner = [NSScanner scannerWithString:line];
+    NSString *moduleInfo;
+    // Get everything BEFORE the module name.  None of these properties
+    // can have spaces.
+    for (int i = 0; i <= MODULE_ID_INDEX; i++) {
+      [moduleInfoScanner scanUpToString:@" " intoString:&moduleInfo];
+      [parts addObject:moduleInfo];
+    }
+
+    // Now get the module name. This can have a space so we scan to
+    // the end of the line.
+    [moduleInfoScanner scanUpToString:@"\n" intoString:&moduleInfo];
+    [parts addObject:moduleInfo];
+  }
+
+  [str release];
+
+  return parts;
+}
+
+//=============================================================================
+static NSString *CompactIdentifier(NSString *uuid) {
+  NSMutableString *str = [NSMutableString stringWithString:uuid];
+  [str replaceOccurrencesOfString:@"-" withString:@"" options:0
+                            range:NSMakeRange(0, [str length])];
+  
+  return str;
+}
+
+//=============================================================================
+static void Start(Options *options) {
+  NSURL *url = [NSURL URLWithString:options->uploadURLStr];
+  HTTPMultipartUpload *ul = [[HTTPMultipartUpload alloc] initWithURL:url];
+  NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
+  NSArray *moduleParts = ModuleDataForSymbolFile(options->symbolsPath);
+  NSMutableString *compactedID =
+    [NSMutableString stringWithString:[moduleParts objectAtIndex:3]];
+  [compactedID replaceOccurrencesOfString:@"-" withString:@"" options:0
+                                    range:NSMakeRange(0, [compactedID length])];
+
+  // Add parameters
+  [parameters setObject:compactedID forKey:@"debug_identifier"];
+
+  // MODULE <os> <cpu> <uuid> <module-name>
+  // 0      1    2     3      4
+  [parameters setObject:[moduleParts objectAtIndex:1] forKey:@"os"];
+  [parameters setObject:[moduleParts objectAtIndex:2] forKey:@"cpu"];
+  [parameters setObject:[moduleParts objectAtIndex:4] forKey:@"debug_file"];
+  [parameters setObject:[moduleParts objectAtIndex:4] forKey:@"code_file"];
+  [ul setParameters:parameters];
+  
+  NSArray *keys = [parameters allKeys];
+  int count = [keys count];
+  for (int i = 0; i < count; ++i) {
+    NSString *key = [keys objectAtIndex:i];
+    NSString *value = [parameters objectForKey:key];
+    fprintf(stdout, "'%s' = '%s'\n", [key UTF8String], 
+            [value UTF8String]);
+  }
+
+  // Add file
+  [ul addFileAtPath:options->symbolsPath name:@"symbol_file"];
+
+  // Send it
+  NSError *error = nil;
+  NSData *data = [ul send:&error];
+  NSString *result = [[NSString alloc] initWithData:data
+                                           encoding:NSUTF8StringEncoding];
+  int status = [[ul response] statusCode];
+
+  fprintf(stdout, "Send: %s\n", error ? [[error description] UTF8String] :
+          "No Error");
+  fprintf(stdout, "Response: %d\n", status);
+  fprintf(stdout, "Result: %lu bytes\n%s\n",
+          (unsigned long)[data length], [result UTF8String]);
+
+  [result release];
+  [ul release];
+  options->success = !error && status==200;
+}
+
+//=============================================================================
+static void
+Usage(int argc, const char *argv[]) {
+  fprintf(stderr, "Submit symbol information.\n");
+  fprintf(stderr, "Usage: %s <symbols> <upload-URL>\n", argv[0]);
+  fprintf(stderr, "<symbols> should be created by using the dump_syms tool.\n");
+  fprintf(stderr, "<upload-URL> is the destination for the upload\n");
+  fprintf(stderr, "\t-h: Usage\n");
+  fprintf(stderr, "\t-?: Usage\n");
+}
+
+//=============================================================================
+static void
+SetupOptions(int argc, const char *argv[], Options *options) {
+  extern int optind;
+  char ch;
+
+  while ((ch = getopt(argc, (char * const *)argv, "h?")) != -1) {
+    switch (ch) {
+      default:
+        Usage(argc, argv);
+        exit(0);
+        break;
+    }
+  }
+
+  if ((argc - optind) != 2) {
+    fprintf(stderr, "%s: Missing symbols file and/or upload-URL\n", argv[0]);
+    Usage(argc, argv);
+    exit(1);
+  }
+
+  options->symbolsPath = [NSString stringWithUTF8String:argv[optind]];
+  options->uploadURLStr = [NSString stringWithUTF8String:argv[optind + 1]];
+}
+
+//=============================================================================
+int main (int argc, const char * argv[]) {
+  NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
+  Options options;
+
+  bzero(&options, sizeof(Options));
+  SetupOptions(argc, argv, &options);
+  Start(&options);
+
+  [pool release];
+  return options.success ? 0 : 1;
+}
diff --git a/google-breakpad/src/tools/mac/symupload/symupload.xcodeproj/project.pbxproj b/google-breakpad/src/tools/mac/symupload/symupload.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..a6a78dc
--- /dev/null
+++ b/google-breakpad/src/tools/mac/symupload/symupload.xcodeproj/project.pbxproj
@@ -0,0 +1,254 @@
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 45;
+	objects = {
+
+/* Begin PBXBuildFile section */
+		8B31022C11F0CEBD00FCF3E4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08FB779EFE84155DC02AAC07 /* Foundation.framework */; };
+		8DD76F9A0486AA7600D96B5E /* symupload.m in Sources */ = {isa = PBXBuildFile; fileRef = 08FB7796FE84155DC02AAC07 /* symupload.m */; settings = {ATTRIBUTES = (); }; };
+		8DD76F9C0486AA7600D96B5E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08FB779EFE84155DC02AAC07 /* Foundation.framework */; };
+		9BC1D49E0B37427A00F2A2B4 /* minidump_upload.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD836000B0544BA0055103E /* minidump_upload.m */; };
+		9BD8336A0B03E4080055103E /* HTTPMultipartUpload.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9BD833680B03E4080055103E /* HTTPMultipartUpload.h */; };
+		9BD8336B0B03E4080055103E /* HTTPMultipartUpload.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD833690B03E4080055103E /* HTTPMultipartUpload.m */; };
+		9BD836180B0549F70055103E /* HTTPMultipartUpload.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD833690B03E4080055103E /* HTTPMultipartUpload.m */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXCopyFilesBuildPhase section */
+		8DD76F9E0486AA7600D96B5E /* CopyFiles */ = {
+			isa = PBXCopyFilesBuildPhase;
+			buildActionMask = 8;
+			dstPath = /usr/share/man/man1/;
+			dstSubfolderSpec = 0;
+			files = (
+				9BD8336A0B03E4080055103E /* HTTPMultipartUpload.h in CopyFiles */,
+			);
+			runOnlyForDeploymentPostprocessing = 1;
+		};
+/* End PBXCopyFilesBuildPhase section */
+
+/* Begin PBXFileReference section */
+		08FB7796FE84155DC02AAC07 /* symupload.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = symupload.m; sourceTree = "<group>"; };
+		08FB779EFE84155DC02AAC07 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+		8B31022B11F0CE6900FCF3E4 /* Breakpad.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Breakpad.xcconfig; path = ../../../common/mac/Breakpad.xcconfig; sourceTree = SOURCE_ROOT; };
+		8B3102B611F0D5CE00FCF3E4 /* BreakpadDebug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = BreakpadDebug.xcconfig; path = ../../../common/mac/BreakpadDebug.xcconfig; sourceTree = SOURCE_ROOT; };
+		8B3102B711F0D5CE00FCF3E4 /* BreakpadRelease.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = BreakpadRelease.xcconfig; path = ../../../common/mac/BreakpadRelease.xcconfig; sourceTree = SOURCE_ROOT; };
+		8DD76FA10486AA7600D96B5E /* symupload */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = symupload; sourceTree = BUILT_PRODUCTS_DIR; };
+		9BD833680B03E4080055103E /* HTTPMultipartUpload.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HTTPMultipartUpload.h; path = ../../../common/mac/HTTPMultipartUpload.h; sourceTree = "<group>"; };
+		9BD833690B03E4080055103E /* HTTPMultipartUpload.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = HTTPMultipartUpload.m; path = ../../../common/mac/HTTPMultipartUpload.m; sourceTree = "<group>"; };
+		9BD835FB0B0544950055103E /* minidump_upload */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = minidump_upload; sourceTree = BUILT_PRODUCTS_DIR; };
+		9BD836000B0544BA0055103E /* minidump_upload.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = minidump_upload.m; sourceTree = "<group>"; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+		8DD76F9B0486AA7600D96B5E /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				8DD76F9C0486AA7600D96B5E /* Foundation.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		9BD835F90B0544950055103E /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				8B31022C11F0CEBD00FCF3E4 /* Foundation.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+		08FB7794FE84155DC02AAC07 /* symupload */ = {
+			isa = PBXGroup;
+			children = (
+				8B31022B11F0CE6900FCF3E4 /* Breakpad.xcconfig */,
+				8B3102B611F0D5CE00FCF3E4 /* BreakpadDebug.xcconfig */,
+				8B3102B711F0D5CE00FCF3E4 /* BreakpadRelease.xcconfig */,
+				08FB7796FE84155DC02AAC07 /* symupload.m */,
+				9BD836000B0544BA0055103E /* minidump_upload.m */,
+				9BD833680B03E4080055103E /* HTTPMultipartUpload.h */,
+				9BD833690B03E4080055103E /* HTTPMultipartUpload.m */,
+				08FB779DFE84155DC02AAC07 /* External Frameworks and Libraries */,
+				1AB674ADFE9D54B511CA2CBB /* Products */,
+			);
+			name = symupload;
+			sourceTree = "<group>";
+		};
+		08FB779DFE84155DC02AAC07 /* External Frameworks and Libraries */ = {
+			isa = PBXGroup;
+			children = (
+				08FB779EFE84155DC02AAC07 /* Foundation.framework */,
+			);
+			name = "External Frameworks and Libraries";
+			sourceTree = "<group>";
+		};
+		1AB674ADFE9D54B511CA2CBB /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				8DD76FA10486AA7600D96B5E /* symupload */,
+				9BD835FB0B0544950055103E /* minidump_upload */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+		8DD76F960486AA7600D96B5E /* symupload */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 1DEB927408733DD40010E9CD /* Build configuration list for PBXNativeTarget "symupload" */;
+			buildPhases = (
+				8DD76F990486AA7600D96B5E /* Sources */,
+				8DD76F9B0486AA7600D96B5E /* Frameworks */,
+				8DD76F9E0486AA7600D96B5E /* CopyFiles */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = symupload;
+			productInstallPath = "$(HOME)/bin";
+			productName = symupload;
+			productReference = 8DD76FA10486AA7600D96B5E /* symupload */;
+			productType = "com.apple.product-type.tool";
+		};
+		9BD835FA0B0544950055103E /* minidump_upload */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 9BD836020B0544BB0055103E /* Build configuration list for PBXNativeTarget "minidump_upload" */;
+			buildPhases = (
+				9BD835F80B0544950055103E /* Sources */,
+				9BD835F90B0544950055103E /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = minidump_upload;
+			productName = minidump_upload;
+			productReference = 9BD835FB0B0544950055103E /* minidump_upload */;
+			productType = "com.apple.product-type.tool";
+		};
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+		08FB7793FE84155DC02AAC07 /* Project object */ = {
+			isa = PBXProject;
+			buildConfigurationList = 1DEB927808733DD40010E9CD /* Build configuration list for PBXProject "symupload" */;
+			compatibilityVersion = "Xcode 3.1";
+			hasScannedForEncodings = 1;
+			mainGroup = 08FB7794FE84155DC02AAC07 /* symupload */;
+			projectDirPath = "";
+			projectRoot = "";
+			targets = (
+				8DD76F960486AA7600D96B5E /* symupload */,
+				9BD835FA0B0544950055103E /* minidump_upload */,
+			);
+		};
+/* End PBXProject section */
+
+/* Begin PBXSourcesBuildPhase section */
+		8DD76F990486AA7600D96B5E /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				8DD76F9A0486AA7600D96B5E /* symupload.m in Sources */,
+				9BD8336B0B03E4080055103E /* HTTPMultipartUpload.m in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		9BD835F80B0544950055103E /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				9BD836180B0549F70055103E /* HTTPMultipartUpload.m in Sources */,
+				9BC1D49E0B37427A00F2A2B4 /* minidump_upload.m in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+		1DEB927508733DD40010E9CD /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = ../../..;
+				PRODUCT_NAME = symupload;
+			};
+			name = Debug;
+		};
+		1DEB927608733DD40010E9CD /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = ../../..;
+				PRODUCT_NAME = symupload;
+			};
+			name = Release;
+		};
+		1DEB927908733DD40010E9CD /* Debug */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 8B3102B611F0D5CE00FCF3E4 /* BreakpadDebug.xcconfig */;
+			buildSettings = {
+			};
+			name = Debug;
+		};
+		1DEB927A08733DD40010E9CD /* Release */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 8B3102B711F0D5CE00FCF3E4 /* BreakpadRelease.xcconfig */;
+			buildSettings = {
+			};
+			name = Release;
+		};
+		9BD836030B0544BB0055103E /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = ../../..;
+				PRODUCT_NAME = minidump_upload;
+			};
+			name = Debug;
+		};
+		9BD836040B0544BB0055103E /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				HEADER_SEARCH_PATHS = ../../..;
+				PRODUCT_NAME = minidump_upload;
+			};
+			name = Release;
+		};
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+		1DEB927408733DD40010E9CD /* Build configuration list for PBXNativeTarget "symupload" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				1DEB927508733DD40010E9CD /* Debug */,
+				1DEB927608733DD40010E9CD /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		1DEB927808733DD40010E9CD /* Build configuration list for PBXProject "symupload" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				1DEB927908733DD40010E9CD /* Debug */,
+				1DEB927A08733DD40010E9CD /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		9BD836020B0544BB0055103E /* Build configuration list for PBXNativeTarget "minidump_upload" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				9BD836030B0544BB0055103E /* Debug */,
+				9BD836040B0544BB0055103E /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+/* End XCConfigurationList section */
+	};
+	rootObject = 08FB7793FE84155DC02AAC07 /* Project object */;
+}
diff --git a/google-breakpad/src/tools/mac/tools_mac.gypi b/google-breakpad/src/tools/mac/tools_mac.gypi
new file mode 100644
index 0000000..ae06f03
--- /dev/null
+++ b/google-breakpad/src/tools/mac/tools_mac.gypi
@@ -0,0 +1,116 @@
+# Copyright 2014 Google Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+{
+  'target_defaults': {
+    'include_dirs': [
+      '../..',
+    ],
+  },
+  'targets': [
+    {
+      'target_name': 'crash_report',
+      'type': 'executable',
+      'sources': [
+        'crash_report/crash_report.mm',
+        'crash_report/on_demand_symbol_supplier.h',
+        'crash_report/on_demand_symbol_supplier.mm',
+      ],
+      'link_settings': {
+        'libraries': [
+          '$(SDKROOT)/System/Library/Frameworks/Foundation.framework',
+        ],
+      },
+      'dependencies': [
+        '../common/common.gyp:common',
+        '../processor/processor.gyp:processor',
+      ],
+    },
+    {
+      'target_name': 'dump_syms',
+      'type': 'executable',
+      'sources': [
+        'dump_syms/dump_syms_tool.mm',
+      ],
+      'link_settings': {
+        'libraries': [
+          '$(SDKROOT)/System/Library/Frameworks/Foundation.framework',
+        ],
+      },
+      'dependencies': [
+        '../common/common.gyp:common',
+      ],
+    },
+    {
+      'target_name': 'macho_dump',
+      'type': 'executable',
+      'sources': [
+        'dump_syms/macho_dump.cc',
+      ],
+      'dependencies': [
+        '../common/common.gyp:common',
+      ],
+    },
+    {
+      'target_name': 'minidump_upload',
+      'type': 'executable',
+      'sources': [
+        'symupload/minidump_upload.m',
+      ],
+      'include_dirs': [
+        '../../common/mac',
+      ],
+      'link_settings': {
+        'libraries': [
+          '$(SDKROOT)/System/Library/Frameworks/Foundation.framework',
+        ],
+      },
+      'dependencies': [
+        '../common/common.gyp:common',
+      ],
+    },
+    {
+      'target_name': 'symupload',
+      'type': 'executable',
+      'sources': [
+        'symupload/symupload.m',
+      ],
+      'include_dirs': [
+        '../../common/mac',
+      ],
+      'link_settings': {
+        'libraries': [
+          '$(SDKROOT)/System/Library/Frameworks/Foundation.framework',
+        ],
+      },
+      'dependencies': [
+        '../common/common.gyp:common',
+      ],
+    },
+  ],
+}
diff --git a/google-breakpad/src/tools/mac/upload_system_symbols/arch_constants.h b/google-breakpad/src/tools/mac/upload_system_symbols/arch_constants.h
new file mode 100644
index 0000000..2115e54
--- /dev/null
+++ b/google-breakpad/src/tools/mac/upload_system_symbols/arch_constants.h
@@ -0,0 +1,61 @@
+/* Copyright 2014, Google Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+ * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#include <mach-o/arch.h>
+#include <mach-o/loader.h>
+#include <mach/machine.h>
+
+// Go/Cgo does not support #define constants, so turn them into symbols
+// that are reachable from Go.
+
+#ifndef CPU_TYPE_ARM64
+#define CPU_TYPE_ARM64 (CPU_TYPE_ARM | CPU_ARCH_ABI64)
+#endif
+
+#ifndef CPU_SUBTYPE_ARM64_ALL
+#define CPU_SUBTYPE_ARM64_ALL 0
+#endif
+
+const cpu_type_t kCPU_TYPE_ARM = CPU_TYPE_ARM;
+const cpu_type_t kCPU_TYPE_ARM64 = CPU_TYPE_ARM64;
+
+const cpu_subtype_t kCPU_SUBTYPE_ARM64_ALL = CPU_SUBTYPE_ARM64_ALL;
+const cpu_subtype_t kCPU_SUBTYPE_ARM_V7S = CPU_SUBTYPE_ARM_V7S;
+
+const char* GetNXArchInfoName(cpu_type_t cpu_type, cpu_subtype_t cpu_subtype) {
+  const NXArchInfo* arch_info = NXGetArchInfoFromCpuType(cpu_type, cpu_subtype);
+  if (!arch_info)
+    return 0;
+  return arch_info->name;
+}
+
+const uint32_t kMachHeaderFtypeDylib = MH_DYLIB;
+const uint32_t kMachHeaderFtypeBundle = MH_BUNDLE;
+const uint32_t kMachHeaderFtypeExe = MH_EXECUTE;
diff --git a/google-breakpad/src/tools/mac/upload_system_symbols/arch_reader.go b/google-breakpad/src/tools/mac/upload_system_symbols/arch_reader.go
new file mode 100644
index 0000000..f606482
--- /dev/null
+++ b/google-breakpad/src/tools/mac/upload_system_symbols/arch_reader.go
@@ -0,0 +1,65 @@
+/* Copyright 2014, Google Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+ * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+package main
+
+import (
+	"debug/macho"
+)
+
+/*
+#include "arch_constants.h"
+*/
+import "C"
+
+// getArchStringFromHeader takes a MachO FileHeader and returns a string that
+// represents the CPU type and subtype.
+// This function is a Go version of src/common/mac/arch_utilities.cc:BreakpadGetArchInfoFromCpuType().
+func getArchStringFromHeader(header macho.FileHeader) string {
+	// TODO(rsesek): As of 10.9.4, OS X doesn't list these in /usr/include/mach/machine.h.
+	if header.Cpu == C.kCPU_TYPE_ARM64 && header.SubCpu == C.kCPU_SUBTYPE_ARM64_ALL {
+		return "arm64"
+	}
+	if header.Cpu == C.kCPU_TYPE_ARM && header.SubCpu == C.kCPU_SUBTYPE_ARM_V7S {
+		return "armv7s"
+	}
+
+	cstr := C.GetNXArchInfoName(C.cpu_type_t(header.Cpu), C.cpu_subtype_t(header.SubCpu))
+	if cstr == nil {
+		return ""
+	}
+	return C.GoString(cstr)
+}
+
+const (
+	MachODylib  macho.Type = C.kMachHeaderFtypeDylib
+	MachOBundle            = C.kMachHeaderFtypeBundle
+	MachOExe               = C.kMachHeaderFtypeExe
+)
diff --git a/google-breakpad/src/tools/mac/upload_system_symbols/upload_system_symbols.go b/google-breakpad/src/tools/mac/upload_system_symbols/upload_system_symbols.go
new file mode 100644
index 0000000..3556120
--- /dev/null
+++ b/google-breakpad/src/tools/mac/upload_system_symbols/upload_system_symbols.go
@@ -0,0 +1,420 @@
+/* Copyright 2014, Google Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+ * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+Tool upload_system_symbols generates and uploads Breakpad symbol files for OS X system libraries.
+
+This tool shells out to the dump_syms and symupload Breakpad tools. In its default mode, this
+will find all dynamic libraries on the system, run dump_syms to create the Breakpad symbol files,
+and then upload them to Google's crash infrastructure.
+
+The tool can also be used to only dump libraries or upload from a directory. See -help for more
+information.
+
+Both i386 and x86_64 architectures will be dumped and uploaded.
+*/
+package main
+
+import (
+	"debug/macho"
+	"flag"
+	"fmt"
+	"io"
+	"io/ioutil"
+	"log"
+	"os"
+	"os/exec"
+	"path"
+	"regexp"
+	"strings"
+	"sync"
+	"time"
+)
+
+var (
+	breakpadTools    = flag.String("breakpad-tools", "out/Release/", "Path to the Breakpad tools directory, containing dump_syms and symupload.")
+	uploadOnlyPath   = flag.String("upload-from", "", "Upload a directory of symbol files that has been dumped independently.")
+	dumpOnlyPath     = flag.String("dump-to", "", "Dump the symbols to the specified directory, but do not upload them.")
+	systemRoot       = flag.String("system-root", "", "Path to the root of the Mac OS X system whose symbols will be dumped.")
+	dumpArchitecture = flag.String("arch", "", "The CPU architecture for which symbols should be dumped. If not specified, dumps all architectures.")
+)
+
+var (
+	// pathsToScan are the subpaths in the systemRoot that should be scanned for shared libraries.
+	pathsToScan = []string{
+		"/Library/QuickTime",
+		"/System/Library/Components",
+		"/System/Library/Frameworks",
+		"/System/Library/PrivateFrameworks",
+		"/usr/lib",
+	}
+
+	// uploadServers are the list of servers to which symbols should be uploaded.
+	uploadServers = []string{
+		"https://clients2.google.com/cr/symbol",
+		"https://clients2.google.com/cr/staging_symbol",
+	}
+
+	// blacklistRegexps match paths that should be excluded from dumping.
+	blacklistRegexps = []*regexp.Regexp{
+		regexp.MustCompile(`/System/Library/Frameworks/Python\.framework/`),
+		regexp.MustCompile(`/System/Library/Frameworks/Ruby\.framework/`),
+		regexp.MustCompile(`_profile\.dylib$`),
+		regexp.MustCompile(`_debug\.dylib$`),
+		regexp.MustCompile(`\.a$`),
+		regexp.MustCompile(`\.dat$`),
+	}
+)
+
+func main() {
+	flag.Parse()
+	log.SetFlags(0)
+
+	var uq *UploadQueue
+
+	if *uploadOnlyPath != "" {
+		// -upload-from specified, so handle that case early.
+		uq = StartUploadQueue()
+		uploadFromDirectory(*uploadOnlyPath, uq)
+		uq.Wait()
+		return
+	}
+
+	if *systemRoot == "" {
+		log.Fatal("Need a -system-root to dump symbols for")
+	}
+
+	if *dumpOnlyPath != "" {
+		// -dump-to specified, so make sure that the path is a directory.
+		if fi, err := os.Stat(*dumpOnlyPath); err != nil {
+			log.Fatal("-dump-to location: %v", err)
+		} else if !fi.IsDir() {
+			log.Fatal("-dump-to location is not a directory")
+		}
+	}
+
+	dumpPath := *dumpOnlyPath
+	if *dumpOnlyPath == "" {
+		// If -dump-to was not specified, then run the upload pipeline and create
+		// a temporary dump output directory.
+		uq = StartUploadQueue()
+
+		if p, err := ioutil.TempDir("", "upload_system_symbols"); err != nil {
+			log.Fatal("Failed to create temporary directory: %v", err)
+		} else {
+			dumpPath = p
+			defer os.RemoveAll(p)
+		}
+	}
+
+	dq := StartDumpQueue(*systemRoot, dumpPath, uq)
+	dq.Wait()
+	if uq != nil {
+		uq.Wait()
+	}
+}
+
+type WorkerPool struct {
+	wg sync.WaitGroup
+}
+
+// StartWorkerPool will launch numWorkers goroutines all running workerFunc.
+// When workerFunc exits, the goroutine will terminate.
+func StartWorkerPool(numWorkers int, workerFunc func()) *WorkerPool {
+	p := new(WorkerPool)
+	for i := 0; i < numWorkers; i++ {
+		p.wg.Add(1)
+		go func() {
+			workerFunc()
+			p.wg.Done()
+		}()
+	}
+	return p
+}
+
+// Wait for all the workers in the pool to complete the workerFunc.
+func (p *WorkerPool) Wait() {
+	p.wg.Wait()
+}
+
+type UploadQueue struct {
+	*WorkerPool
+	queue chan string
+}
+
+// StartUploadQueue creates a new worker pool and queue, to which paths to
+// Breakpad symbol files may be sent for uploading.
+func StartUploadQueue() *UploadQueue {
+	uq := &UploadQueue{
+		queue: make(chan string, 10),
+	}
+	uq.WorkerPool = StartWorkerPool(5, uq.worker)
+	return uq
+}
+
+// Upload enqueues the contents of filepath to be uploaded.
+func (uq *UploadQueue) Upload(filepath string) {
+	uq.queue <- filepath
+}
+
+// Done tells the queue that no more files need to be uploaded. This must be
+// called before WorkerPool.Wait.
+func (uq *UploadQueue) Done() {
+	close(uq.queue)
+}
+
+func (uq *UploadQueue) worker() {
+	symUpload := path.Join(*breakpadTools, "symupload")
+
+	for symfile := range uq.queue {
+		for _, server := range uploadServers {
+			for i := 0; i < 3; i++ { // Give each upload 3 attempts to succeed.
+				cmd := exec.Command(symUpload, symfile, server)
+				if output, err := cmd.Output(); err == nil {
+					// Success. No retry needed.
+					fmt.Printf("Uploaded %s to %s\n", symfile, server)
+					break
+				} else {
+					log.Printf("Error running symupload(%s, %s), attempt %d: %v: %s\n", symfile, server, i, err, output)
+					time.Sleep(1 * time.Second)
+				}
+			}
+		}
+	}
+}
+
+type DumpQueue struct {
+	*WorkerPool
+	dumpPath string
+	queue    chan dumpRequest
+	uq       *UploadQueue
+}
+
+type dumpRequest struct {
+	path string
+	arch string
+}
+
+// StartDumpQueue creates a new worker pool to find all the Mach-O libraries in
+// root and dump their symbols to dumpPath. If an UploadQueue is passed, the
+// path to the symbol file will be enqueued there, too.
+func StartDumpQueue(root, dumpPath string, uq *UploadQueue) *DumpQueue {
+	dq := &DumpQueue{
+		dumpPath: dumpPath,
+		queue:    make(chan dumpRequest),
+		uq:       uq,
+	}
+	dq.WorkerPool = StartWorkerPool(12, dq.worker)
+
+	findLibsInRoot(root, dq)
+
+	return dq
+}
+
+// DumpSymbols enqueues the filepath to have its symbols dumped in the specified
+// architecture.
+func (dq *DumpQueue) DumpSymbols(filepath string, arch string) {
+	dq.queue <- dumpRequest{
+		path: filepath,
+		arch: arch,
+	}
+}
+
+func (dq *DumpQueue) Wait() {
+	dq.WorkerPool.Wait()
+	if dq.uq != nil {
+		dq.uq.Done()
+	}
+}
+
+func (dq *DumpQueue) done() {
+	close(dq.queue)
+}
+
+func (dq *DumpQueue) worker() {
+	dumpSyms := path.Join(*breakpadTools, "dump_syms")
+
+	for req := range dq.queue {
+		filebase := path.Join(dq.dumpPath, strings.Replace(req.path, "/", "_", -1))
+		symfile := fmt.Sprintf("%s_%s.sym", filebase, req.arch)
+		f, err := os.Create(symfile)
+		if err != nil {
+			log.Fatal("Error creating symbol file:", err)
+		}
+
+		cmd := exec.Command(dumpSyms, "-a", req.arch, req.path)
+		cmd.Stdout = f
+		err = cmd.Run()
+		f.Close()
+
+		if err != nil {
+			os.Remove(symfile)
+			log.Printf("Error running dump_syms(%s, %s): %v\n", req.arch, req.path, err)
+		} else if dq.uq != nil {
+			dq.uq.Upload(symfile)
+		}
+	}
+}
+
+// uploadFromDirectory handles the upload-only case and merely uploads all files in
+// a directory.
+func uploadFromDirectory(directory string, uq *UploadQueue) {
+	d, err := os.Open(directory)
+	if err != nil {
+		log.Fatal("Could not open directory to upload: %v", err)
+	}
+	defer d.Close()
+
+	entries, err := d.Readdirnames(0)
+	if err != nil {
+		log.Fatal("Could not read directory: %v", err)
+	}
+
+	for _, entry := range entries {
+		uq.Upload(path.Join(directory, entry))
+	}
+
+	uq.Done()
+}
+
+// findQueue is an implementation detail of the DumpQueue that finds all the
+// Mach-O files and their architectures.
+type findQueue struct {
+	*WorkerPool
+	queue chan string
+	dq    *DumpQueue
+}
+
+// findLibsInRoot looks in all the pathsToScan in the root and manages the
+// interaction between findQueue and DumpQueue.
+func findLibsInRoot(root string, dq *DumpQueue) {
+	fq := &findQueue{
+		queue: make(chan string, 10),
+		dq:    dq,
+	}
+	fq.WorkerPool = StartWorkerPool(12, fq.worker)
+
+	for _, p := range pathsToScan {
+		fq.findLibsInPath(path.Join(root, p))
+	}
+
+	close(fq.queue)
+	fq.Wait()
+	dq.done()
+}
+
+// findLibsInPath recursively walks the directory tree, sending file paths to
+// test for being Mach-O to the findQueue.
+func (fq *findQueue) findLibsInPath(loc string) {
+	d, err := os.Open(loc)
+	if err != nil {
+		log.Fatal("Could not open %s: %v", loc, err)
+	}
+	defer d.Close()
+
+	for {
+		fis, err := d.Readdir(100)
+		if err != nil && err != io.EOF {
+			log.Fatal("Error reading directory %s: %v", loc, err)
+		}
+
+		for _, fi := range fis {
+			fp := path.Join(loc, fi.Name())
+			if fi.IsDir() {
+				fq.findLibsInPath(fp)
+				continue
+			} else if fi.Mode()&os.ModeSymlink != 0 {
+				continue
+			}
+
+			// Test the blacklist in the worker to not slow down this main loop.
+
+			fq.queue <- fp
+		}
+
+		if err == io.EOF {
+			break
+		}
+	}
+}
+
+func (fq *findQueue) worker() {
+	for fp := range fq.queue {
+		blacklisted := false
+		for _, re := range blacklistRegexps {
+			blacklisted = blacklisted || re.MatchString(fp)
+		}
+		if blacklisted {
+			continue
+		}
+
+		f, err := os.Open(fp)
+		if err != nil {
+			log.Printf("%s: %v", fp, err)
+			continue
+		}
+
+		fatFile, err := macho.NewFatFile(f)
+		if err == nil {
+			// The file is fat, so dump its architectures.
+			for _, fatArch := range fatFile.Arches {
+				fq.dumpMachOFile(fp, fatArch.File)
+			}
+			fatFile.Close()
+		} else if err == macho.ErrNotFat {
+			// The file isn't fat but may still be MachO.
+			thinFile, err := macho.NewFile(f)
+			if err != nil {
+				log.Printf("%s: %v", fp, err)
+				continue
+			}
+			fq.dumpMachOFile(fp, thinFile)
+			thinFile.Close()
+		} else {
+			f.Close()
+		}
+	}
+}
+
+func (fq *findQueue) dumpMachOFile(fp string, image *macho.File) {
+	if image.Type != MachODylib && image.Type != MachOBundle {
+		return
+	}
+
+	arch := getArchStringFromHeader(image.FileHeader)
+	if arch == "" {
+		// Don't know about this architecture type.
+		return
+	}
+
+	if (*dumpArchitecture != "" && *dumpArchitecture == arch) || *dumpArchitecture == "" {
+		fq.dq.DumpSymbols(fp, arch)
+	}
+}
diff --git a/google-breakpad/src/tools/python/filter_syms.py b/google-breakpad/src/tools/python/filter_syms.py
new file mode 100644
index 0000000..738cb3e
--- /dev/null
+++ b/google-breakpad/src/tools/python/filter_syms.py
@@ -0,0 +1,204 @@
+#!/usr/bin/env python
+# Copyright (c) 2012 Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+"""Normalizes and de-duplicates paths within Breakpad symbol files.
+
+When using DWARF for storing debug symbols, some file information will be
+stored relative to the current working directory of the current compilation
+unit, and may be further relativized based upon how the file was #included.
+
+This helper can be used to parse the Breakpad symbol file generated from such
+DWARF files and normalize and de-duplicate the FILE records found within,
+updating any references to the FILE records in the other record types.
+"""
+
+import macpath
+import ntpath
+import optparse
+import os
+import posixpath
+import sys
+
+class BreakpadParseError(Exception):
+  """Unsupported Breakpad symbol record exception class."""
+  pass
+
+class SymbolFileParser(object):
+  """Parser for Breakpad symbol files.
+
+  The format of these files is documented at
+  https://code.google.com/p/google-breakpad/wiki/SymbolFiles
+  """
+
+  def __init__(self, input_stream, output_stream, ignored_prefixes=None,
+               path_handler=os.path):
+    """Inits a SymbolFileParser to read symbol records from |input_stream| and
+    write the processed output to |output_stream|.
+    
+    |ignored_prefixes| contains a list of optional path prefixes that
+    should be stripped from the final, normalized path outputs.
+    
+    For example, if the Breakpad symbol file had all paths starting with a
+    common prefix, such as:
+      FILE 1 /b/build/src/foo.cc
+      FILE 2 /b/build/src/bar.cc
+    Then adding "/b/build/src" as an ignored prefix would result in an output
+    file that contained:
+      FILE 1 foo.cc
+      FILE 2 bar.cc
+    
+    Note that |ignored_prefixes| does not necessarily contain file system
+    paths, as the contents of the DWARF DW_AT_comp_dir attribute is dependent
+    upon the host system and compiler, and may contain additional information
+    such as hostname or compiler version.
+    """
+
+    self.unique_files = {}
+    self.duplicate_files = {}
+    self.input_stream = input_stream
+    self.output_stream = output_stream
+    self.ignored_prefixes = ignored_prefixes or []
+    self.path_handler = path_handler
+
+  def Process(self):
+    """Processes the Breakpad symbol file."""
+    for line in self.input_stream:
+      parsed = self._ParseRecord(line.rstrip())
+      if parsed:
+        self.output_stream.write(parsed + '\n')
+
+  def _ParseRecord(self, record):
+    """Parses a single Breakpad symbol record - a single line from the symbol
+    file.
+
+    Returns:
+        The modified string to write to the output file, or None if no line
+        should be written.
+    """
+    record_type = record.partition(' ')[0]
+    if record_type == 'FILE':
+      return self._ParseFileRecord(record)
+    elif self._IsLineRecord(record_type):
+      return self._ParseLineRecord(record)
+    else:
+      # Simply pass the record through unaltered.
+      return record
+
+  def _NormalizePath(self, path):
+    """Normalizes a file path to its canonical form.
+
+    As this may not execute on the machine or file system originally
+    responsible for compilation, it may be necessary to further correct paths
+    for symlinks, junctions, or other such file system indirections.
+
+    Returns:
+        A unique, canonical representation for the the file path.
+    """
+    return self.path_handler.normpath(path)
+
+  def _AdjustPath(self, path):
+    """Adjusts the supplied path after performing path de-duplication.
+
+    This may be used to perform secondary adjustments, such as removing a
+    common prefix, such as "/D/build", or replacing the file system path with
+    information from the version control system.
+
+    Returns:
+        The actual path to use when writing the FILE record.
+    """
+    return path[len(filter(path.startswith,
+                           self.ignored_prefixes + [''])[0]):]
+
+  def _ParseFileRecord(self, file_record):
+    """Parses and corrects a FILE record."""
+    file_info = file_record[5:].split(' ', 3)
+    if len(file_info) > 2:
+      raise BreakpadParseError('Unsupported FILE record: ' + file_record)
+    file_index = int(file_info[0])
+    file_name = self._NormalizePath(file_info[1])
+    existing_file_index = self.unique_files.get(file_name)
+    if existing_file_index is None:
+      self.unique_files[file_name] = file_index
+      file_info[1] = self._AdjustPath(file_name)
+      return 'FILE ' + ' '.join(file_info)
+    else:
+      self.duplicate_files[file_index] = existing_file_index
+      return None
+
+  def _IsLineRecord(self, record_type):
+    """Determines if the current record type is a Line record"""
+    try:
+      line = int(record_type, 16)
+    except (ValueError, TypeError):
+      return False
+    return True
+
+  def _ParseLineRecord(self, line_record):
+    """Parses and corrects a Line record."""
+    line_info = line_record.split(' ', 5)
+    if len(line_info) > 4:
+      raise BreakpadParseError('Unsupported Line record: ' + line_record)
+    file_index = int(line_info[3])
+    line_info[3] = str(self.duplicate_files.get(file_index, file_index))
+    return ' '.join(line_info)
+
+def main():
+  option_parser = optparse.OptionParser()
+  option_parser.add_option("-p", "--prefix",
+                           action="append", dest="prefixes", type="string",
+                           default=[],
+                           help="A path prefix that should be removed from "
+                                "all FILE lines. May be repeated to specify "
+                                "multiple prefixes.")
+  option_parser.add_option("-t", "--path_type",
+                           action="store", type="choice", dest="path_handler",
+                           choices=['win32', 'posix'],
+                           help="Indicates how file paths should be "
+                                "interpreted. The default is to treat paths "
+                                "the same as the OS running Python (eg: "
+                                "os.path)")
+  options, args = option_parser.parse_args()
+  if args:
+    option_parser.error('Unknown argument: %s' % args)
+
+  path_handler = { 'win32': ntpath,
+                   'posix': posixpath }.get(options.path_handler, os.path)
+  try:
+    symbol_parser = SymbolFileParser(sys.stdin, sys.stdout, options.prefixes,
+                                     path_handler)
+    symbol_parser.Process()
+  except BreakpadParseError, e:
+    print >> sys.stderr, 'Got an error while processing symbol file'
+    print >> sys.stderr, str(e)
+    return 1
+  return 0
+
+if __name__ == '__main__':
+  sys.exit(main())
diff --git a/google-breakpad/src/tools/python/tests/filter_syms_unittest.py b/google-breakpad/src/tools/python/tests/filter_syms_unittest.py
new file mode 100644
index 0000000..b111f34
--- /dev/null
+++ b/google-breakpad/src/tools/python/tests/filter_syms_unittest.py
@@ -0,0 +1,138 @@
+#!/usr/bin/env python
+# Copyright (c) 2012 Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+"""Unit tests for filter_syms.py"""
+
+import cStringIO
+import ntpath
+import os
+import StringIO
+import sys
+import unittest
+
+ROOT_DIR = os.path.dirname(os.path.abspath(__file__))
+sys.path.insert(0, os.path.join(ROOT_DIR, '..'))
+
+# In root
+import filter_syms
+
+class FilterSysmsTest(unittest.TestCase):
+  def assertParsed(self, input_data, ignored_prefixes, expected):
+    input_io = cStringIO.StringIO(input_data)
+    output_io = cStringIO.StringIO()
+    parser = filter_syms.SymbolFileParser(input_io, output_io,
+                                          ignored_prefixes, ntpath)
+    parser.Process()
+    self.assertEqual(output_io.getvalue(), expected)
+    
+  def testDuplicateFiles(self):
+    """Tests that duplicate files in FILE records are correctly removed and
+    that Line records are updated."""
+
+    INPUT = \
+"""MODULE windows x86 111111111111111111111111111111111 module1.pdb
+INFO CODE_ID FFFFFFFF module1.exe
+FILE 1 foo/../file1_1.cc
+FILE 2 bar/../file1_1.cc
+FILE 3 baz/../file1_1.cc
+FUNC 1000 c 0 Function1_1
+1000 8 45 2
+1008 4 46 3
+100c 4 44 1
+"""
+    EXPECTED_OUTPUT = \
+"""MODULE windows x86 111111111111111111111111111111111 module1.pdb
+INFO CODE_ID FFFFFFFF module1.exe
+FILE 1 file1_1.cc
+FUNC 1000 c 0 Function1_1
+1000 8 45 1
+1008 4 46 1
+100c 4 44 1
+"""
+    self.assertParsed(INPUT, [], EXPECTED_OUTPUT)
+
+  def testIgnoredPrefix(self):
+    """Tests that prefixes in FILE records are correctly removed."""
+
+    INPUT = \
+"""MODULE windows x86 111111111111111111111111111111111 module1.pdb
+INFO CODE_ID FFFFFFFF module1.exe
+FILE 1 /src/build/foo/../file1_1.cc
+FILE 2 /src/build/bar/../file1_2.cc
+FILE 3 /src/build/baz/../file1_2.cc
+FUNC 1000 c 0 Function1_1
+1000 8 45 2
+1008 4 46 3
+100c 4 44 1
+"""
+    EXPECTED_OUTPUT = \
+"""MODULE windows x86 111111111111111111111111111111111 module1.pdb
+INFO CODE_ID FFFFFFFF module1.exe
+FILE 1 file1_1.cc
+FILE 2 file1_2.cc
+FUNC 1000 c 0 Function1_1
+1000 8 45 2
+1008 4 46 2
+100c 4 44 1
+"""
+    IGNORED_PREFIXES = ['\\src\\build\\']
+    self.assertParsed(INPUT, IGNORED_PREFIXES, EXPECTED_OUTPUT)
+
+  def testIgnoredPrefixesDuplicateFiles(self):
+    """Tests that de-duplication of FILE records happens BEFORE prefixes
+    are removed."""
+
+    INPUT = \
+"""MODULE windows x86 111111111111111111111111111111111 module1.pdb
+INFO CODE_ID FFFFFFFF module1.exe
+FILE 1 /src/build/foo/../file1_1.cc
+FILE 2 /src/build/bar/../file1_2.cc
+FILE 3 D:/src/build2/baz/../file1_2.cc
+FUNC 1000 c 0 Function1_1
+1000 8 45 2
+1008 4 46 3
+100c 4 44 1
+"""
+    EXPECTED_OUTPUT = \
+"""MODULE windows x86 111111111111111111111111111111111 module1.pdb
+INFO CODE_ID FFFFFFFF module1.exe
+FILE 1 file1_1.cc
+FILE 2 file1_2.cc
+FILE 3 file1_2.cc
+FUNC 1000 c 0 Function1_1
+1000 8 45 2
+1008 4 46 3
+100c 4 44 1
+"""
+    IGNORED_PREFIXES = ['\\src\\build\\', 'D:\\src\\build2\\']
+    self.assertParsed(INPUT, IGNORED_PREFIXES, EXPECTED_OUTPUT)
+
+if __name__ == '__main__':
+  unittest.main()
\ No newline at end of file
diff --git a/google-breakpad/src/tools/solaris/dump_syms/Makefile b/google-breakpad/src/tools/solaris/dump_syms/Makefile
new file mode 100644
index 0000000..ff77105
--- /dev/null
+++ b/google-breakpad/src/tools/solaris/dump_syms/Makefile
@@ -0,0 +1,64 @@
+# Copyright (c) 2007, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# Author: Alfred Peng
+
+CXX=CC
+CC=cc
+
+CXXFLAGS=-g -xs -xdebugformat=stabs -I../../.. -I../../../common/solaris -lelf -ldemangle -D_REENTRANT
+
+.PHONY:all clean
+
+BIN=dump_syms
+
+all:$(BIN)
+
+DUMP_OBJ=dump_symbols.o guid_creator.o dump_syms.o file_id.o md5.o
+
+dump_syms:$(DUMP_OBJ)
+	$(CXX) $(CXXFLAGS) -o $@ $^
+
+dump_symbols.o:../../../common/solaris/dump_symbols.cc
+	$(CXX) $(CXXFLAGS) -c $^
+
+guid_creator.o:../../../common/solaris/guid_creator.cc
+	$(CXX) $(CXXFLAGS) -c $^
+
+file_id.o:../../../common/solaris/file_id.cc
+	$(CXX) $(CXXFLAGS) -c $^
+
+md5.o:../../../common/md5.cc
+	$(CXX) $(CXXFLAGS) -c $^
+
+test:all
+	./run_regtest.sh
+
+clean:
+	rm -f $(BIN) $(DUMP_OBJ)
diff --git a/google-breakpad/src/tools/solaris/dump_syms/dump_syms.cc b/google-breakpad/src/tools/solaris/dump_syms/dump_syms.cc
new file mode 100644
index 0000000..54cea57
--- /dev/null
+++ b/google-breakpad/src/tools/solaris/dump_syms/dump_syms.cc
@@ -0,0 +1,54 @@
+// Copyright (c) 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Author: Alfred Peng
+
+#include <string>
+#include <cstdio>
+
+#include "common/solaris/dump_symbols.h"
+
+using namespace google_breakpad;
+
+int main(int argc, char **argv) {
+  if (argc != 2) {
+    fprintf(stderr, "Usage: %s <binary-with-stab-symbol>\n", argv[0]);
+    return 1;
+  }
+
+  const char *binary = argv[1];
+
+  DumpSymbols dumper;
+  if (!dumper.WriteSymbolFile(binary, fileno(stdout))) {
+    fprintf(stderr, "Failed to write symbol file.\n");
+    return 1;
+  }
+
+  return 0;
+}
diff --git a/google-breakpad/src/tools/solaris/dump_syms/run_regtest.sh b/google-breakpad/src/tools/solaris/dump_syms/run_regtest.sh
new file mode 100644
index 0000000..ffb3433
--- /dev/null
+++ b/google-breakpad/src/tools/solaris/dump_syms/run_regtest.sh
@@ -0,0 +1,51 @@
+#!/bin/sh
+
+# Copyright (c) 2007, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+./dump_syms testdata/dump_syms_regtest.o > testdata/dump_syms_regtest.new
+status=$?
+
+if [ $status -ne 0 ] ; then
+  echo "FAIL, dump_syms failed"
+  exit $status
+fi
+
+diff -u testdata/dump_syms_regtest.new testdata/dump_syms_regtest.sym > \
+ testdata/dump_syms_regtest.diff
+status=$?
+
+if [ $status -eq 0 ] ; then
+  rm testdata/dump_syms_regtest.diff testdata/dump_syms_regtest.new
+  echo "PASS"
+else
+  echo "FAIL, see testdata/dump_syms_regtest.[new|diff]"
+fi
+
+exit $status
diff --git a/google-breakpad/src/tools/solaris/dump_syms/testdata/dump_syms_regtest.cc b/google-breakpad/src/tools/solaris/dump_syms/testdata/dump_syms_regtest.cc
new file mode 100644
index 0000000..e617a23
--- /dev/null
+++ b/google-breakpad/src/tools/solaris/dump_syms/testdata/dump_syms_regtest.cc
@@ -0,0 +1,64 @@
+// Copyright (c) 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// ./dump_syms dump_syms_regtest.pdb > dump_syms_regtest.sym
+
+namespace google_breakpad {
+
+class C {
+ public:
+  C() : member_(1) {}
+  virtual ~C() {}
+
+  void set_member(int value) { member_ = value; }
+  int member() const { return member_; }
+
+  void f() { member_ = g(); }
+  virtual int g() { return 2; }
+  static char* h(const C &that) { return 0; }
+
+ private:
+  int member_;
+};
+
+static int i() {
+  return 3;
+}
+
+}  // namespace google_breakpad
+
+int main(int argc, char **argv) {
+  google_breakpad::C object;
+  object.set_member(google_breakpad::i());
+  object.f();
+  int value = object.g();
+  char *nothing = object.h(object);
+
+  return 0;
+}
diff --git a/google-breakpad/src/tools/solaris/dump_syms/testdata/dump_syms_regtest.o b/google-breakpad/src/tools/solaris/dump_syms/testdata/dump_syms_regtest.o
new file mode 100644
index 0000000..a1c61b2
--- /dev/null
+++ b/google-breakpad/src/tools/solaris/dump_syms/testdata/dump_syms_regtest.o
Binary files differ
diff --git a/google-breakpad/src/tools/solaris/dump_syms/testdata/dump_syms_regtest.stabs b/google-breakpad/src/tools/solaris/dump_syms/testdata/dump_syms_regtest.stabs
new file mode 100644
index 0000000..c5f93ef
--- /dev/null
+++ b/google-breakpad/src/tools/solaris/dump_syms/testdata/dump_syms_regtest.stabs
@@ -0,0 +1,129 @@
+
+
+Debugging Stab table -- 104 entries
+
+   0:  .stabs "dump_syms_regtest.cc",N_UNDF,0x0,0x67,0x71c
+   1:  .stabs "/export/home/alfred/cvs/breakpad/google-breakpad20070927/src/tools/solaris/dump_syms/testdata/",N_SO,0x0,0x0,0x0
+   2:  .stabs "dump_syms_regtest.cc",N_SO,0x0,0x4,0x0
+   3:  .stabs "",N_OBJ,0x0,0x0,0x0
+   4:  .stabs "",N_OBJ,0x0,0x0,0x0
+   5:  .stabs "V=9.0;DBG_GEN=5.0.8;dm;cd;backend;ptf;ptx;ptk;s;g;R=5.8<<Sun C++ 5.8 Patch 121018-07 2006/11/01 (ccfe)>>;G=.XAB6Z2hOiL$Gl1b.;A=2",N_OPT,0x0,0x0,0x46fcb88e
+   6:  .stabs "dump_syms_regtest.cc",N_SOL,0x0,0x0,0x0
+   7:  .stabs "char:t(0,1)=bsc1;0;8",N_ISYM,0x0,0x0,0x0
+   8:  .stabs "short:t(0,2)=bs2;0;16",N_ISYM,0x0,0x0,0x0
+   9:  .stabs "int:t(0,3)=bs4;0;32",N_ISYM,0x0,0x0,0x0
+  10:  .stabs "long:t(0,4)=bs4;0;32",N_ISYM,0x0,0x0,0x0
+  11:  .stabs "long long:t(0,5)=bs8;0;64",N_ISYM,0x0,0x0,0x0
+  12:  .stabs "unsigned char:t(0,6)=buc1;0;8",N_ISYM,0x0,0x0,0x0
+  13:  .stabs "unsigned short:t(0,7)=bu2;0;16",N_ISYM,0x0,0x0,0x0
+  14:  .stabs "unsigned:t(0,8)=bu4;0;32",N_ISYM,0x0,0x0,0x0
+  15:  .stabs "unsigned long:t(0,9)=bu4;0;32",N_ISYM,0x0,0x0,0x0
+  16:  .stabs "unsigned long long:t(0,10)=bu8;0;64",N_ISYM,0x0,0x0,0x0
+  17:  .stabs "signed char:t(0,11)=bsc1;0;8",N_ISYM,0x0,0x0,0x0
+  18:  .stabs "wchar_t:t(0,12)=buc4;0;32",N_ISYM,0x0,0x0,0x0
+  19:  .stabs "void:t(0,13)=bs0;0;0",N_ISYM,0x0,0x0,0x0
+  20:  .stabs "float:t(0,14)=R1;4",N_ISYM,0x0,0x0,0x0
+  21:  .stabs "double:t(0,15)=R2;8",N_ISYM,0x0,0x0,0x0
+  22:  .stabs "long double:t(0,16)=R6;12",N_ISYM,0x0,0x0,0x0
+  23:  .stabs "...:t(0,17)=buv4;0;32",N_ISYM,0x0,0x0,0x0
+  24:  .stabs "bool:t(0,18)=bub1;0;8",N_ISYM,0x0,0x0,0x0
+  25:  .stabs "__1nPgoogle_breakpad_:T(0,19)=Yn0google_breakpad;",N_ISYM,0x0,0x0,0x0
+  26:  .stabs "nBC(0,19):U(0,20)",N_ESYM,0x0,0x0,0x0
+  27:  .stabs "nBC(0,19):T(0,20)=Yc8C;;AcHmember_:(0,3),32,32;;Cc2t6M_v K2c2T6M_v CcKset_member6Mi_v CcGmember6kM_i CcBf6M_v K3cBg6M_i GcBh6Frk1_pc;;;2 0;;;;110;",N_ESYM,0x0,0x8,0x0
+  28:  .stabs "main:F(0,3);(0,3);(0,21)=*(0,22)=*(0,1)",N_FUN,0x0,0x38,0x0
+  29:  .stabs "main",N_MAIN,0x0,0x0,0x0
+  30:  .stabs "argc:p(0,3)",N_PSYM,0x0,0x4,0x8
+  31:  .stabs "argv:p(0,21)",N_PSYM,0x0,0x4,0xc
+  32:  .stabn N_LBRAC,0x0,0x1,0x12
+  33:  .stabs "object:(0,20)",N_LSYM,0x0,0x8,0xfffffff4
+  34:  .stabs "value:(0,3)",N_LSYM,0x0,0x4,0xfffffff0
+  35:  .stabs "nothing:(0,22)",N_LSYM,0x0,0x4,0xffffffec
+  36:  .stabn N_SLINE,0x0,0x39,0x12
+  37:  .stabs "object:2",N_CONSTRUCT,0x0,0xc,0x12
+  38:  .stabn N_SLINE,0x2,0x3a,0x1e
+  39:  .stabn N_SLINE,0x0,0x3b,0x36
+  40:  .stabn N_SLINE,0x0,0x3c,0x42
+  41:  .stabn N_SLINE,0x0,0x3d,0x57
+  42:  .stabn N_SLINE,0x0,0x3f,0x6c
+  43:  .stabs "2:0",N_DESTRUCT,0x0,0xc,0x73
+  44:  .stabn N_SLINE,0xfffffffe,0x40,0x9c
+  45:  .stabn N_RBRAC,0x0,0x1,0x9c
+  46:  .stabs "__1cPgoogle_breakpadBi6F_i_:f(0,3)",N_FUN,0x0,0x32,0x0
+  47:  .stabn N_LBRAC,0x0,0x1,0x6
+  48:  .stabn N_SLINE,0x0,0x33,0x6
+  49:  .stabn N_SLINE,0x0,0x34,0x10
+  50:  .stabn N_RBRAC,0x0,0x1,0x10
+  51:  .stabs "__1cPgoogle_breakpadBC2t6M_v_:F(0,13);(0,23)=*(0,20)",N_FUN,0x0,0x24,0x0
+  52:  .stabs "this:p(0,23)",N_PSYM,0x0,0x4,0x8
+  53:  .stabn N_LBRAC,0x0,0x1,0x3
+  54:  .stabn N_SLINE,0x0,0x24,0x25
+  55:  .stabn N_RBRAC,0x0,0x1,0x25
+  56:  .stabs "__1cPgoogle_breakpadBC2T6M_v_:F(0,13);(0,23)",N_FUN,0x0,0x25,0x0
+  57:  .stabs "this:p(0,23)",N_PSYM,0x0,0x4,0x8
+  58:  .stabn N_LBRAC,0x0,0x1,0x3
+  59:  .stabn N_SLINE,0x0,0x25,0x3
+  60:  .stabn N_RBRAC,0x0,0x1,0x3
+  61:  .stabs "__1cPgoogle_breakpadBCKset_member6Mi_v_:F(0,13);(0,23);(0,3)",N_FUN,0x0,0x27,0x0
+  62:  .stabs "this:p(0,23)",N_PSYM,0x0,0x4,0x8
+  63:  .stabs "value:p(0,3)",N_PSYM,0x0,0x4,0xc
+  64:  .stabn N_LBRAC,0x0,0x1,0x3
+  65:  .stabn N_SLINE,0x0,0x27,0x3
+  66:  .stabn N_SLINE,0x0,0x27,0xc
+  67:  .stabn N_RBRAC,0x0,0x1,0xc
+  68:  .stabs "__1cPgoogle_breakpadBCBf6M_v_:F(0,13);(0,23)",N_FUN,0x0,0x2a,0x0
+  69:  .stabs "this:p(0,23)",N_PSYM,0x0,0x4,0x8
+  70:  .stabn N_LBRAC,0x0,0x1,0x3
+  71:  .stabn N_SLINE,0x0,0x2a,0x3
+  72:  .stabn N_SLINE,0x0,0x2a,0x1d
+  73:  .stabn N_RBRAC,0x0,0x1,0x1d
+  74:  .stabs "__1cPgoogle_breakpadBCBg6M_i_:F(0,3);(0,23)",N_FUN,0x0,0x2b,0x0
+  75:  .stabs "this:p(0,23)",N_PSYM,0x0,0x4,0x8
+  76:  .stabn N_LBRAC,0x0,0x1,0x6
+  77:  .stabn N_SLINE,0x0,0x2b,0x6
+  78:  .stabn N_SLINE,0x0,0x2b,0x10
+  79:  .stabn N_RBRAC,0x0,0x1,0x10
+  80:  .stabs "__1cPgoogle_breakpadBCBh6Frk1_pc_:F(0,22);(0,24)=&(0,25)=k(0,20)",N_FUN,0x0,0x2c,0x0
+  81:  .stabs "that:p(0,24)",N_PSYM,0x0,0x4,0x8
+  82:  .stabn N_LBRAC,0x0,0x1,0x6
+  83:  .stabn N_SLINE,0x0,0x2c,0x6
+  84:  .stabn N_SLINE,0x0,0x2c,0x10
+  85:  .stabn N_RBRAC,0x0,0x1,0x10
+  86:  .stabs "__1cPgoogle_breakpadBC2T5B6M_v_:F(0,13);(0,23)",N_FUN,0x0,0x25,0x0
+  87:  .stabs "this:p(0,23)",N_PSYM,0x0,0x4,0x8
+  88:  .stabn N_LBRAC,0x0,0x1,0x3
+  89:  .stabn N_SLINE,0x0,0x25,0xf
+  90:  .stabn N_RBRAC,0x0,0x1,0xf
+  91:  .stabs "__SLIP.DELETER__A:f(0,13);(0,23);(0,3)",N_FUN,0x0,0x25,0x0
+  92:  .stabs "this:p(0,23)",N_PSYM,0x0,0x4,0x8
+  93:  .stabs "delete:p(0,3)",N_PSYM,0x0,0x4,0xc
+  94:  .stabn N_LBRAC,0x0,0x1,0x3
+  95:  .stabn N_LBRAC,0x0,0x2,0x3
+  96:  .stabn N_RBRAC,0x0,0x2,0x28
+  97:  .stabn N_RBRAC,0x0,0x1,0x28
+  98:  .stabs "true:l(0,18);1",N_LSYM,0x0,0x4,0x0
+  99:  .stabs "false:l(0,18);0",N_LSYM,0x0,0x4,0x0
+ 100:  .stabs "__1c2k6Fpv_v_:P(0,13);(0,26)=*(0,13)",N_FUN,0x0,0x0,0x0
+ 101:  .stabs "__1cPgoogle_breakpadBC2t5B6M_v_:F__1cPgoogle_breakpadBC2t6M_v_",N_ALIAS,0x0,0x0,0x0
+ 102:  .stabs "cbD__RTTI__1nPgoogle_breakpadBC_(0,19):YR(0,20)",N_LSYM,0x0,0x0,0x0
+ 103:  .stabn N_ENDM,0x0,0x0,0x0
+
+
+Index Stab table -- 17 entries
+
+   0:  .stabs "dump_syms_regtest.cc",N_UNDF,0x0,0x10,0x3b1
+   1:  .stabs "/export/home/alfred/cvs/breakpad/google-breakpad20070927/src/tools/solaris/dump_syms/testdata/",N_SO,0x0,0x0,0x0
+   2:  .stabs "dump_syms_regtest.cc",N_SO,0x0,0x4,0x0
+   3:  .stabs "/export/home/alfred/cvs/breakpad/google-breakpad20070927/src/tools/solaris/dump_syms/testdata",N_OBJ,0x0,0x0,0x0
+   4:  .stabs "dump_syms_regtest.o",N_OBJ,0x0,0x0,0x0
+   5:  .stabs "V=9.0;DBG_GEN=5.0.8;dm;cd;backend;ptf;ptx;ptk;s;g;R=5.8<<Sun C++ 5.8 Patch 121018-07 2006/11/01 (ccfe)>>;G=.XAB6Z2hOiL$Gl1b.;A=2",N_OPT,0x0,0x0,0x46fcb88e
+   6:  .stabs "/export/home/alfred/cvs/breakpad/google-breakpad20070927/src/tools/solaris/dump_syms/testdata/; /ws/on10-tools-prc/SUNWspro/SS11/prod/bin/CC -g -xs -xdebugformat=stabs -I../../.. -I../../../common/solaris -D_REENTRANT  -xs  dump_syms_regtest.cc -Qoption ccfe -prefix -Qoption ccfe .XAB6Z2hOiL\$Gl1b.",N_CMDLINE,0x0,0x0,0x0
+   7:  .stabs "__1nPgoogle_breakpadBC_:U",N_ESYM,0x0,0x0,0x0
+   8:  .stabs "main",N_MAIN,0x0,0x0,0x0
+   9:  .stabs "main",N_FUN,0x0,0x0,0x0
+  10:  .stabs "__1cPgoogle_breakpadBC2t6M_v_",N_FUN,0x0,0x0,0x0
+  11:  .stabs "__1cPgoogle_breakpadBC2T6M_v_",N_FUN,0x0,0x0,0x0
+  12:  .stabs "__1cPgoogle_breakpadBCKset_member6Mi_v_",N_FUN,0x0,0x0,0x0
+  13:  .stabs "__1cPgoogle_breakpadBCBf6M_v_",N_FUN,0x0,0x0,0x0
+  14:  .stabs "__1cPgoogle_breakpadBCBg6M_i_",N_FUN,0x0,0x0,0x0
+  15:  .stabs "__1cPgoogle_breakpadBCBh6Frk1_pc_",N_FUN,0x0,0x0,0x0
+  16:  .stabs "__1cPgoogle_breakpadBC2T5B6M_v_",N_FUN,0x0,0x0,0x0
diff --git a/google-breakpad/src/tools/solaris/dump_syms/testdata/dump_syms_regtest.sym b/google-breakpad/src/tools/solaris/dump_syms/testdata/dump_syms_regtest.sym
new file mode 100644
index 0000000..44d3c53
--- /dev/null
+++ b/google-breakpad/src/tools/solaris/dump_syms/testdata/dump_syms_regtest.sym
@@ -0,0 +1,33 @@
+MODULE solaris x86 3DC8191474338D8587339B5FB3E2C62A0 dump_syms_regtest.o
+FILE 0 dump_syms_regtest.cc
+FUNC 0 156 0 main
+12 18 57 0
+1e 12 58 0
+36 24 59 0
+42 12 60 0
+57 21 61 0
+6c 21 63 0
+9c 48 64 0
+FUNC 0 16 0 int google_breakpad::i()
+6 6 51 0
+10 10 52 0
+FUNC 0 37 0 google_breakpad::C::C()
+25 37 36 0
+FUNC 0 3 0 google_breakpad::C::~C()
+3 3 37 0
+FUNC 0 12 0 void google_breakpad::C::set_member(int)
+3 3 39 0
+c 9 39 0
+FUNC 0 29 0 void google_breakpad::C::f()
+3 3 42 0
+1d 26 42 0
+FUNC 0 16 0 int google_breakpad::C::g()
+6 6 43 0
+10 10 43 0
+FUNC 0 16 0 char*google_breakpad::C::h(const google_breakpad::C&)
+6 6 44 0
+10 10 44 0
+FUNC 0 15 0 google_breakpad::C::~C #Nvariant 1()
+f 15 37 0
+FUNC 0 0 0 __SLIP.DELETER__A
+FUNC 0 0 0 void operator delete(void*)
diff --git a/google-breakpad/src/tools/tools.gyp b/google-breakpad/src/tools/tools.gyp
new file mode 100644
index 0000000..e6a4210
--- /dev/null
+++ b/google-breakpad/src/tools/tools.gyp
@@ -0,0 +1,38 @@
+# Copyright 2014 Google Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+{
+  'conditions': [
+    ['OS=="mac"', {
+      'includes': ['mac/tools_mac.gypi'],
+    }],
+    ['OS=="linux"', {
+      'includes': ['linux/tools_linux.gypi'],
+    }],
+  ],
+}
diff --git a/google-breakpad/src/tools/windows/binaries/dump_syms.exe b/google-breakpad/src/tools/windows/binaries/dump_syms.exe
new file mode 100644
index 0000000..ca4676f
--- /dev/null
+++ b/google-breakpad/src/tools/windows/binaries/dump_syms.exe
Binary files differ
diff --git a/google-breakpad/src/tools/windows/binaries/symupload.exe b/google-breakpad/src/tools/windows/binaries/symupload.exe
new file mode 100644
index 0000000..ba319b2
--- /dev/null
+++ b/google-breakpad/src/tools/windows/binaries/symupload.exe
Binary files differ
diff --git a/google-breakpad/src/tools/windows/converter/ms_symbol_server_converter.cc b/google-breakpad/src/tools/windows/converter/ms_symbol_server_converter.cc
new file mode 100644
index 0000000..dd3f770
--- /dev/null
+++ b/google-breakpad/src/tools/windows/converter/ms_symbol_server_converter.cc
@@ -0,0 +1,576 @@
+// Copyright (c) 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// ms_symbol_server_converter.cc: Obtain symbol files from a Microsoft
+// symbol server, and convert them to Breakpad's dumped format.
+//
+// See ms_symbol_server_converter.h for documentation.
+//
+// Author: Mark Mentovai
+
+#include <windows.h>
+#include <dbghelp.h>
+
+#include <cassert>
+#include <cstdio>
+
+#include "tools/windows/converter/ms_symbol_server_converter.h"
+#include "common/windows/pdb_source_line_writer.h"
+#include "common/windows/string_utils-inl.h"
+
+// SYMOPT_NO_PROMPTS is not defined in earlier platform SDKs.  Define it
+// in that case, in the event that this code is used with a newer version
+// of DbgHelp at runtime that recognizes the option.  The presence of this
+// bit in the symbol options should not harm earlier versions of DbgHelp.
+#ifndef SYMOPT_NO_PROMPTS
+#define SYMOPT_NO_PROMPTS 0x00080000
+#endif  // SYMOPT_NO_PROMPTS
+
+namespace google_breakpad {
+
+// Use sscanf_s if it is available, to quench the warning about scanf being
+// deprecated.  Use scanf where sscanf_is not available.  Note that the
+// parameters passed to sscanf and sscanf_s are only compatible as long as
+// fields of type c, C, s, S, and [ are not used.
+#if _MSC_VER >= 1400  // MSVC 2005/8
+#define SSCANF sscanf_s
+#else  // _MSC_VER >= 1400
+#define SSCANF sscanf
+#endif  // _MSC_VER >= 1400
+
+bool GUIDOrSignatureIdentifier::InitializeFromString(
+    const string &identifier) {
+  type_ = TYPE_NONE;
+
+  size_t length = identifier.length();
+
+  if (length > 32 && length <= 40) {
+    // GUID
+    if (SSCANF(identifier.c_str(),
+               "%08X%04X%04X%02X%02X%02X%02X%02X%02X%02X%02X%X",
+               &guid_.Data1, &guid_.Data2, &guid_.Data3,
+               &guid_.Data4[0], &guid_.Data4[1],
+               &guid_.Data4[2], &guid_.Data4[3],
+               &guid_.Data4[4], &guid_.Data4[5],
+               &guid_.Data4[6], &guid_.Data4[7],
+               &age_) != 12) {
+      return false;
+    }
+
+    type_ = TYPE_GUID;
+  } else if (length > 8 && length <= 15) {
+    // Signature
+    if (SSCANF(identifier.c_str(), "%08X%x", &signature_, &age_) != 2) {
+      return false;
+    }
+
+    type_ = TYPE_SIGNATURE;
+  } else {
+    return false;
+  }
+
+  return true;
+}
+
+#undef SSCANF
+
+MSSymbolServerConverter::MSSymbolServerConverter(
+    const string &local_cache, const vector<string> &symbol_servers)
+    : symbol_path_(),
+      fail_dns_(false),
+      fail_timeout_(false),
+      fail_not_found_(false) {
+  // Setting local_cache can be done without verifying that it exists because
+  // SymSrv will create it if it is missing - any creation failures will occur
+  // at that time, so there's nothing to check here, making it safe to
+  // assign this in the constructor.
+
+  assert(symbol_servers.size() > 0);
+
+#if !defined(NDEBUG)
+  // These are characters that are interpreted as having special meanings in
+  // symbol_path_.
+  const char kInvalidCharacters[] = "*;";
+  assert(local_cache.find_first_of(kInvalidCharacters) == string::npos);
+#endif  // !defined(NDEBUG)
+
+  for (vector<string>::const_iterator symbol_server = symbol_servers.begin();
+       symbol_server != symbol_servers.end();
+       ++symbol_server) {
+    // The symbol path format is explained by
+    // http://msdn.microsoft.com/library/en-us/debug/base/using_symsrv.asp .
+    // "srv*" is the same as "symsrv*symsrv.dll*", which means that
+    // symsrv.dll is to be responsible for locating symbols.  symsrv.dll
+    // interprets the rest of the string as a series of symbol stores separated
+    // by '*'.  "srv*local_cache*symbol_server" means to check local_cache
+    // first for the symbol file, and if it is not found there, to check
+    // symbol_server.  Symbol files found on the symbol server will be placed
+    // in the local cache, decompressed.
+    //
+    // Multiple specifications in this format may be presented, separated by
+    // semicolons.
+
+    assert((*symbol_server).find_first_of(kInvalidCharacters) == string::npos);
+    symbol_path_ += "srv*" + local_cache + "*" + *symbol_server + ";";
+  }
+
+  // Strip the trailing semicolon.
+  symbol_path_.erase(symbol_path_.length() - 1);
+}
+
+// A stack-based class that manages SymInitialize and SymCleanup calls.
+class AutoSymSrv {
+ public:
+  AutoSymSrv() : initialized_(false) {}
+
+  ~AutoSymSrv() {
+    if (!Cleanup()) {
+      // Print the error message here, because destructors have no return
+      // value.
+      fprintf(stderr, "~AutoSymSrv: SymCleanup: error %d\n", GetLastError());
+    }
+  }
+
+  bool Initialize(HANDLE process, char *path, bool invade_process) {
+    process_ = process;
+    initialized_ = SymInitialize(process, path, invade_process) == TRUE;
+    return initialized_;
+  }
+
+  bool Cleanup() {
+    if (initialized_) {
+      if (SymCleanup(process_)) {
+        initialized_ = false;
+        return true;
+      }
+      return false;
+    }
+
+    return true;
+  }
+
+ private:
+  HANDLE process_;
+  bool initialized_;
+};
+
+// A stack-based class that "owns" a pathname and deletes it when destroyed,
+// unless told not to by having its Release() method called.  Early deletions
+// are supported by calling Delete().
+class AutoDeleter {
+ public:
+  explicit AutoDeleter(const string &path) : path_(path) {}
+
+  ~AutoDeleter() {
+    int error;
+    if ((error = Delete()) != 0) {
+      // Print the error message here, because destructors have no return
+      // value.
+      fprintf(stderr, "~AutoDeleter: Delete: error %d for %s\n",
+              error, path_.c_str());
+    }
+  }
+
+  int Delete() {
+    if (path_.empty())
+      return 0;
+
+    int error = remove(path_.c_str());
+    Release();
+    return error;
+  }
+
+  void Release() {
+    path_.clear();
+  }
+
+ private:
+  string path_;
+};
+
+MSSymbolServerConverter::LocateResult
+MSSymbolServerConverter::LocateFile(const string &debug_or_code_file,
+                                    const string &debug_or_code_id,
+                                    const string &version,
+                                    string *file_name) {
+  assert(file_name);
+  file_name->clear();
+
+  GUIDOrSignatureIdentifier identifier;
+  if (!identifier.InitializeFromString(debug_or_code_id)) {
+    fprintf(stderr,
+            "LocateFile: Unparseable identifier for %s %s %s\n",
+            debug_or_code_file.c_str(),
+            debug_or_code_id.c_str(),
+            version.c_str());
+    return LOCATE_FAILURE;
+  }
+
+  HANDLE process = GetCurrentProcess();  // CloseHandle is not needed.
+  AutoSymSrv symsrv;
+  if (!symsrv.Initialize(process,
+                         const_cast<char *>(symbol_path_.c_str()),
+                         false)) {
+    fprintf(stderr, "LocateFile: SymInitialize: error %d for %s %s %s\n",
+            GetLastError(),
+            debug_or_code_file.c_str(),
+            debug_or_code_id.c_str(),
+            version.c_str());
+    return LOCATE_FAILURE;
+  }
+
+  if (!SymRegisterCallback64(process, SymCallback,
+                             reinterpret_cast<ULONG64>(this))) {
+    fprintf(stderr,
+            "LocateFile: SymRegisterCallback64: error %d for %s %s %s\n",
+            GetLastError(),
+            debug_or_code_file.c_str(),
+            debug_or_code_id.c_str(),
+            version.c_str());
+    return LOCATE_FAILURE;
+  }
+
+  // SYMOPT_DEBUG arranges for SymCallback to be called with additional
+  // debugging information.  This is used to determine the nature of failures.
+  DWORD options = SymGetOptions() | SYMOPT_DEBUG | SYMOPT_NO_PROMPTS |
+                  SYMOPT_FAIL_CRITICAL_ERRORS | SYMOPT_SECURE;
+  SymSetOptions(options);
+
+  // SymCallback will set these as needed inisde the SymFindFileInPath call.
+  fail_dns_ = false;
+  fail_timeout_ = false;
+  fail_not_found_ = false;
+
+  // Do the lookup.
+  char path[MAX_PATH];
+  if (!SymFindFileInPath(
+          process, NULL,
+          const_cast<char *>(debug_or_code_file.c_str()),
+          const_cast<void *>(identifier.guid_or_signature_pointer()),
+          identifier.age(), 0,
+          identifier.type() == GUIDOrSignatureIdentifier::TYPE_GUID ?
+              SSRVOPT_GUIDPTR : SSRVOPT_DWORDPTR,
+          path, SymFindFileInPathCallback, this)) {
+    DWORD error = GetLastError();
+    if (error == ERROR_FILE_NOT_FOUND) {
+      // This can be returned for a number of reasons.  Use the crumbs
+      // collected by SymCallback to determine which one is relevant.
+
+      // These errors are possibly transient.
+      if (fail_dns_ || fail_timeout_) {
+        return LOCATE_RETRY;
+      }
+
+      // This is an authoritiative file-not-found message.
+      if (fail_not_found_) {
+        fprintf(stderr,
+                "LocateFile: SymFindFileInPath: LOCATE_NOT_FOUND error "
+                "for %s %s %s\n",
+                debug_or_code_file.c_str(),
+                debug_or_code_id.c_str(),
+                version.c_str());
+        return LOCATE_NOT_FOUND;
+      }
+
+      // If the error is FILE_NOT_FOUND but none of the known error
+      // conditions are matched, fall through to LOCATE_FAILURE.
+    }
+
+    fprintf(stderr,
+            "LocateFile: SymFindFileInPath: error %d for %s %s %s\n",
+            error,
+            debug_or_code_file.c_str(),
+            debug_or_code_id.c_str(),
+            version.c_str());
+    return LOCATE_FAILURE;
+  }
+
+  // Making sure path is null-terminated.
+  path[MAX_PATH - 1] = '\0';
+
+  // The AutoDeleter ensures that the file is only kept when returning
+  // LOCATE_SUCCESS.
+  AutoDeleter deleter(path);
+
+  // Do the cleanup here even though it will happen when symsrv goes out of
+  // scope, to allow it to influence the return value.
+  if (!symsrv.Cleanup()) {
+    fprintf(stderr, "LocateFile: SymCleanup: error %d for %s %s %s\n",
+            GetLastError(),
+            debug_or_code_file.c_str(),
+            debug_or_code_id.c_str(),
+            version.c_str());
+    return LOCATE_FAILURE;
+  }
+
+  deleter.Release();
+
+  printf("Downloaded: %s\n", path);
+  *file_name = path;
+  return LOCATE_SUCCESS;
+}
+
+
+MSSymbolServerConverter::LocateResult
+MSSymbolServerConverter::LocatePEFile(const MissingSymbolInfo &missing,
+                                      string *pe_file) {
+  return LocateFile(missing.code_file, missing.code_identifier,
+                    missing.version, pe_file);
+}
+
+MSSymbolServerConverter::LocateResult
+MSSymbolServerConverter::LocateSymbolFile(const MissingSymbolInfo &missing,
+                                          string *symbol_file) {
+  return LocateFile(missing.debug_file, missing.debug_identifier,
+                    missing.version, symbol_file);
+}
+
+
+// static
+BOOL CALLBACK MSSymbolServerConverter::SymCallback(HANDLE process,
+                                                   ULONG action,
+                                                   ULONG64 data,
+                                                   ULONG64 context) {
+  MSSymbolServerConverter *self =
+      reinterpret_cast<MSSymbolServerConverter *>(context);
+
+  switch (action) {
+    case CBA_EVENT: {
+      IMAGEHLP_CBA_EVENT *cba_event =
+          reinterpret_cast<IMAGEHLP_CBA_EVENT *>(data);
+
+      // Put the string into a string object to be able to use string::find
+      // for substring matching.  This is important because the not-found
+      // message does not use the entire string but is appended to the URL
+      // that SymSrv attempted to retrieve.
+      string desc(cba_event->desc);
+
+      // desc_action maps strings (in desc) to boolean pointers that are to
+      // be set to true if the string matches.
+      struct desc_action {
+        const char *desc;  // The substring to match.
+        bool *action;      // On match, this pointer will be set to true.
+      };
+
+      static const desc_action desc_actions[] = {
+        // When a DNS error occurs, it could be indiciative of network
+        // problems.
+        { "SYMSRV:  The server name or address could not be resolved\n",
+          &self->fail_dns_ },
+
+        // This message is produced if no connection is opened.
+        { "SYMSRV:  A connection with the server could not be established\n",
+          &self->fail_timeout_ },
+
+        // This message is produced if a connection is established but the
+        // server fails to respond to the HTTP request.
+        { "SYMSRV:  The operation timed out\n",
+          &self->fail_timeout_ },
+
+        // This message is produced when the requested file is not found,
+        // even if one or more of the above messages are also produced.
+        // It's trapped to distinguish between not-found and unknown-failure
+        // conditions.  Note that this message will not be produced if a
+        // connection is established and the server begins to respond to the
+        // HTTP request but does not finish transmitting the file.
+        { " not found\n",
+          &self->fail_not_found_ }
+      };
+
+      for (int desc_action_index = 0;
+           desc_action_index < sizeof(desc_actions) / sizeof(desc_action);
+           ++desc_action_index) {
+        if (desc.find(desc_actions[desc_action_index].desc) != string::npos) {
+          *(desc_actions[desc_action_index].action) = true;
+          break;
+        }
+      }
+
+      break;
+    }
+  }
+
+  // This function is a mere fly on the wall.  Treat everything as unhandled.
+  return FALSE;
+}
+
+// static
+BOOL CALLBACK MSSymbolServerConverter::SymFindFileInPathCallback(
+    const char *filename, void *context) {
+  // FALSE ends the search, indicating that the located symbol file is
+  // satisfactory.
+  return FALSE;
+}
+
+MSSymbolServerConverter::LocateResult
+MSSymbolServerConverter::LocateAndConvertSymbolFile(
+    const MissingSymbolInfo &missing,
+    bool keep_symbol_file,
+    bool keep_pe_file,
+    string *converted_symbol_file,
+    string *symbol_file,
+    string *out_pe_file) {
+  assert(converted_symbol_file);
+  converted_symbol_file->clear();
+  if (symbol_file) {
+    symbol_file->clear();
+  }
+
+  string pdb_file;
+  LocateResult result = LocateSymbolFile(missing, &pdb_file);
+  if (result != LOCATE_SUCCESS) {
+    return result;
+  }
+
+  if (symbol_file && keep_symbol_file) {
+    *symbol_file = pdb_file;
+  }
+
+  // The conversion of a symbol file for a Windows 64-bit module requires
+  // loading of the executable file.  If there is no executable file, convert
+  // using only the PDB file.  Without an executable file, the conversion will
+  // fail for 64-bit modules but it should succeed for 32-bit modules.
+  string pe_file;
+  result = LocatePEFile(missing, &pe_file);
+  if (result != LOCATE_SUCCESS) {
+    fprintf(stderr, "WARNING: Could not download: %s\n", pe_file.c_str());
+  }
+
+  if (out_pe_file && keep_pe_file) {
+    *out_pe_file = pe_file;
+  }
+
+  // Conversion may fail because the file is corrupt.  If a broken file is
+  // kept in the local cache, LocateSymbolFile will not hit the network again
+  // to attempt to locate it.  To guard against problems like this, the
+  // symbol file in the local cache will be removed if conversion fails.
+  AutoDeleter pdb_deleter(pdb_file);
+  AutoDeleter pe_deleter(pe_file);
+
+  // Be sure that it's a .pdb file, since we'll be replacing .pdb with .sym
+  // for the converted file's name.
+  string pdb_extension = pdb_file.substr(pdb_file.length() - 4);
+  // strcasecmp is called _stricmp here.
+  if (_stricmp(pdb_extension.c_str(), ".pdb") != 0) {
+    fprintf(stderr, "LocateAndConvertSymbolFile: "
+            "no .pdb extension for %s %s %s %s\n",
+            missing.debug_file.c_str(),
+            missing.debug_identifier.c_str(),
+            missing.version.c_str(),
+            pdb_file.c_str());
+    return LOCATE_FAILURE;
+  }
+
+  PDBSourceLineWriter writer;
+  wstring pe_file_w;
+  if (!WindowsStringUtils::safe_mbstowcs(pe_file, &pe_file_w)) {
+    fprintf(stderr,
+            "LocateAndConvertSymbolFile: "
+                "WindowsStringUtils::safe_mbstowcs failed for %s\n",
+            pe_file.c_str());
+    return LOCATE_FAILURE;
+  }
+  wstring pdb_file_w;
+  if (!WindowsStringUtils::safe_mbstowcs(pdb_file, &pdb_file_w)) {
+    fprintf(stderr,
+            "LocateAndConvertSymbolFile: "
+                "WindowsStringUtils::safe_mbstowcs failed for %s\n",
+            pdb_file_w.c_str());
+    return LOCATE_FAILURE;
+  }
+  if (!writer.Open(pdb_file_w, PDBSourceLineWriter::PDB_FILE)) {
+    fprintf(stderr,
+            "ERROR: PDBSourceLineWriter::Open failed for %s %s %s %ws\n",
+            missing.debug_file.c_str(), missing.debug_identifier.c_str(),
+            missing.version.c_str(), pdb_file_w.c_str());
+    return LOCATE_FAILURE;
+  }
+  if (!writer.SetCodeFile(pe_file_w)) {
+    fprintf(stderr,
+            "ERROR: PDBSourceLineWriter::SetCodeFile failed for %s %s %s %ws\n",
+            missing.debug_file.c_str(), missing.debug_identifier.c_str(),
+            missing.version.c_str(), pe_file_w.c_str());
+    return LOCATE_FAILURE;
+  }
+
+  *converted_symbol_file = pdb_file.substr(0, pdb_file.length() - 4) + ".sym";
+
+  FILE *converted_output = NULL;
+#if _MSC_VER >= 1400  // MSVC 2005/8
+  errno_t err;
+  if ((err = fopen_s(&converted_output, converted_symbol_file->c_str(), "w"))
+      != 0) {
+#else  // _MSC_VER >= 1400
+  // fopen_s and errno_t were introduced in MSVC8.  Use fopen for earlier
+  // environments.  Don't use fopen with MSVC8 and later, because it's
+  // deprecated.  fopen does not provide reliable error codes, so just use
+  // -1 in the event of a failure.
+  int err;
+  if (!(converted_output = fopen(converted_symbol_file->c_str(), "w"))) {
+    err = -1;
+#endif  // _MSC_VER >= 1400
+    fprintf(stderr, "LocateAndConvertSymbolFile: "
+            "fopen_s: error %d for %s %s %s %s\n",
+            err,
+            missing.debug_file.c_str(),
+            missing.debug_identifier.c_str(),
+            missing.version.c_str(),
+            converted_symbol_file->c_str());
+    return LOCATE_FAILURE;
+  }
+
+  AutoDeleter sym_deleter(*converted_symbol_file);
+
+  bool success = writer.WriteMap(converted_output);
+  fclose(converted_output);
+
+  if (!success) {
+    fprintf(stderr, "LocateAndConvertSymbolFile: "
+            "PDBSourceLineWriter::WriteMap failed for %s %s %s %s\n",
+            missing.debug_file.c_str(),
+            missing.debug_identifier.c_str(),
+            missing.version.c_str(),
+            pdb_file.c_str());
+    return LOCATE_FAILURE;
+  }
+
+  if (keep_symbol_file) {
+    pdb_deleter.Release();
+  }
+
+  if (keep_pe_file) {
+    pe_deleter.Release();
+  }
+
+  sym_deleter.Release();
+
+  return LOCATE_SUCCESS;
+}
+
+}  // namespace google_breakpad
diff --git a/google-breakpad/src/tools/windows/converter/ms_symbol_server_converter.gyp b/google-breakpad/src/tools/windows/converter/ms_symbol_server_converter.gyp
new file mode 100644
index 0000000..57ec790
--- /dev/null
+++ b/google-breakpad/src/tools/windows/converter/ms_symbol_server_converter.gyp
@@ -0,0 +1,46 @@
+# Copyright 2013 Google Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+{
+  'includes': [
+    '../../../build/common.gypi',
+  ],
+  'targets': [
+    {
+      'target_name': 'ms_symbol_server_converter',
+      'type': 'static_library',
+      'msvs_guid': '1463C4CD-23FC-4DE9-BFDE-283338200157',
+      'sources': [
+        'ms_symbol_server_converter.cc',
+      ],
+      'dependencies': [
+        '../../../common/windows/common_windows.gyp:common_windows_lib',
+      ],
+    },
+  ],
+}
diff --git a/google-breakpad/src/tools/windows/converter/ms_symbol_server_converter.h b/google-breakpad/src/tools/windows/converter/ms_symbol_server_converter.h
new file mode 100644
index 0000000..d601b43
--- /dev/null
+++ b/google-breakpad/src/tools/windows/converter/ms_symbol_server_converter.h
@@ -0,0 +1,219 @@
+// Copyright (c) 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// ms_symbol_server_converter.h: Obtain symbol files from a Microsoft
+// symbol server, and convert them to Breakpad's dumped format.
+//
+// At runtime, MSSymbolServerConverter and code that it calls depend on being
+// able to locate suitable versions of dbghelp.dll and symsrv.dll.  For best
+// results, place these files in the same directory as the executable.
+// dbghelp.dll and symsrv.dll as supplied with Debugging Tools for Windows are
+// both redistributable, as indicated by the package's redist.txt file.
+//
+// When connecting to Microsoft's symbol server at
+// http://msdl.microsoft.com/download/symbols/, which provides access to
+// symbols for the operating system itself, symsrv.dll requires agreement to
+// Microsoft's "Terms of Use for Microsoft Symbols and Binaries."  Because this
+// library places the symbol engine into a promptless mode, the dialog with the
+// terms will not appear, and use of Microsoft's symbol server will not be
+// possible.  To indicate agreement to the terms, create a file called
+// symsrv.yes in the same directory as symsrv.dll.  (Note that symsrv.dll will
+// also recognize a symsrv.no file as indicating that you do not accept the
+// terms; the .yes file takes priority over the .no file.)  The terms of use
+// are contained within symsrv.dll; they were formerly available online at
+// http://www.microsoft.com/whdc/devtools/debugging/symsrvTOU2.mspx , but
+// do not appear to be available online any longer as of January, 2007.  It is
+// possible to view the terms from within WinDbg (Debugging Tools for Windows)
+// by removing any symsrv.yes and symsrv.no files from WinDbg's directory,
+// setting the symbol path to include Microsoft's symbol server (.sympath), and
+// attempting to load symbols from their server (.reload).
+//
+// This code has been tested with dbghelp.dll 6.5.3.7 and symsrv.dll 6.5.3.8,
+// included with Microsoft Visual Studio 8 in Common7/IDE.  This has also been
+// tested with dbghelp.dll and symsrv.dll versions 6.6.7.5 and 6.12.2.633,
+// included with the same versions of Debugging Tools for Windows, available at
+// http://www.microsoft.com/whdc/devtools/debugging/ .
+//
+// Author: Mark Mentovai
+
+#ifndef TOOLS_WINDOWS_MS_SYMBOL_SERVER_CONVERTER_H_
+#define TOOLS_WINDOWS_MS_SYMBOL_SERVER_CONVERTER_H_
+
+#include <windows.h>
+
+#include <string>
+#include <vector>
+
+namespace google_breakpad {
+
+using std::string;
+using std::vector;
+
+// MissingSymbolInfo contains the subset of the information in the processor's
+// CodeModule structure relevant to obtaining a missing symbol file.  Only
+// debug_file and debug_identifier are relevant in actually obtaining the
+// missing file; the other fields are for convenience.
+struct MissingSymbolInfo {
+  string code_file;
+  string code_identifier;
+  string debug_file;
+  string debug_identifier;
+  string version;
+};
+
+class GUIDOrSignatureIdentifier {
+ public:
+  enum GUIDOrSignatureType {
+    TYPE_NONE = 0,
+    TYPE_GUID,
+    TYPE_SIGNATURE
+  };
+
+  GUIDOrSignatureIdentifier() : type_(TYPE_NONE) {}
+
+  // Converts |identifier|, a debug_identifier-formatted string, into its
+  // component fields: either a GUID and age, or signature and age.  If
+  // successful, sets the relevant fields in the object, including the type
+  // field, and returns true.  On error, returns false.
+  bool InitializeFromString(const string &identifier);
+
+  GUIDOrSignatureType type() const { return type_; }
+  GUID guid() const { return guid_; }
+  DWORD signature() const { return signature_; }
+  int age() const { return age_; }
+  const void *guid_or_signature_pointer() const { return &guid_; }
+
+ private:
+  GUIDOrSignatureType type_;
+
+  // An identifier contains either a 128-bit uuid or a 32-bit signature.
+  union {
+    GUID guid_;
+    DWORD signature_;
+  };
+
+  // All identifiers used here have age fields, which indicate a specific
+  // revision given a uuid or signature.
+  int age_;
+};
+
+class MSSymbolServerConverter {
+ public:
+  enum LocateResult {
+    LOCATE_FAILURE = 0,
+    LOCATE_NOT_FOUND,    // Authoritative: the file is not present.
+    LOCATE_RETRY,        // Transient (network?) error, try again later.
+    LOCATE_SUCCESS
+  };
+
+  // Create a new object.  local_cache is the location (pathname) of a local
+  // symbol store used to hold downloaded and converted symbol files.  This
+  // directory will be created by LocateSymbolFile when it successfully
+  // retrieves a symbol file. symbol_servers contains a list of locations (URLs
+  // or pathnames) of the upstream symbol server stores, given in order of
+  // preference, with the first string in the vector identifying the first
+  // store to try.  The vector must contain at least one string.  None of the
+  // strings passed to this constructor may contain asterisk ('*') or semicolon
+  // (';') characters, as the symbol engine uses these characters as separators.
+  MSSymbolServerConverter(const string &local_cache,
+                          const vector<string> &symbol_servers);
+
+  // Locates the PE file (DLL or EXE) specified by the identifying information
+  // in |missing|, by checking the symbol stores identified when the object
+  // was created.  When returning LOCATE_SUCCESS, pe_file is set to
+  // the pathname of the decompressed PE file as it is stored in the
+  // local cache.
+  LocateResult LocatePEFile(const MissingSymbolInfo &missing, string *pe_file);
+
+  // Locates the symbol file specified by the identifying information in
+  // |missing|, by checking the symbol stores identified when the object
+  // was created.  When returning LOCATE_SUCCESS, symbol_file is set to
+  // the pathname of the decompressed symbol file as it is stored in the
+  // local cache.
+  LocateResult LocateSymbolFile(const MissingSymbolInfo &missing,
+                                string *symbol_file);
+
+  // Calls LocateSymbolFile and converts the returned symbol file to the
+  // dumped-symbol format, storing it adjacent to the symbol file.  The
+  // only conversion supported is from pdb files.  Returns the return
+  // value of LocateSymbolFile, or if LocateSymbolFile succeeds but
+  // conversion fails, returns LOCATE_FAILURE.  The pathname to the
+  // pdb file and to the converted symbol file are returned in
+  // |converted_symbol_file|, |symbol_file|, and |pe_file|.  |symbol_file| and
+  // |pe_file| are optional and may be NULL.  If only the converted symbol file
+  // is desired, set |keep_symbol_file| and |keep_pe_file| to false to indicate
+  // that the original symbol file (pdb) and executable file (exe, dll) should
+  // be deleted after conversion.
+  LocateResult LocateAndConvertSymbolFile(const MissingSymbolInfo &missing,
+                                          bool keep_symbol_file,
+                                          bool keep_pe_file,
+                                          string *converted_symbol_file,
+                                          string *symbol_file,
+                                          string *pe_file);
+
+ private:
+  // Locates the PDB or PE file (DLL or EXE) specified by the identifying
+  // information in |debug_or_code_file| and |debug_or_code_id|, by checking
+  // the symbol stores identified when the object was created.  When
+  // returning LOCATE_SUCCESS, file_name is set to the pathname of the
+  // decompressed PDB or PE file file as it is stored in the local cache.
+  LocateResult LocateFile(const string &debug_or_code_file,
+                          const string &debug_or_code_id,
+                          const string &version, string *file_name);
+
+  // Called by various SymSrv functions to report status as progress is made
+  // and to allow the callback to influence processing.  Messages sent to this
+  // callback can be used to distinguish between the various failure modes
+  // that SymFindFileInPath might encounter.
+  static BOOL CALLBACK SymCallback(HANDLE process, ULONG action, ULONG64 data,
+                                   ULONG64 context);
+
+  // Called by SymFindFileInPath (in LocateSymbolFile) after a candidate
+  // symbol file is located, when it's present in the local cache.
+  // SymFindFileInPath actually seems to accept NULL for a callback function
+  // and behave properly for our needs in that case, but the documentation
+  // doesn't mention it, so this little callback is provided.
+  static BOOL CALLBACK SymFindFileInPathCallback(const char *filename,
+                                                 void *context);
+
+  // The search path used by SymSrv, built based on the arguments to the
+  // constructor.
+  string symbol_path_;
+
+  // SymCallback will set at least one of these failure variables if
+  // SymFindFileInPath fails for an expected reason.
+  bool fail_dns_;        // DNS failures (fail_not_found_ will also be set).
+  bool fail_timeout_;    // Timeouts (fail_not_found_ will also be set).
+  bool fail_not_found_;  // The file could not be found.  If this is the only
+                         // fail_* member set, then it is authoritative.
+};
+
+}  // namespace google_breakpad
+
+#endif  // TOOLS_WINDOWS_MS_SYMBOL_SERVER_CONVERTER_H_
diff --git a/google-breakpad/src/tools/windows/converter/ms_symbol_server_converter.vcproj b/google-breakpad/src/tools/windows/converter/ms_symbol_server_converter.vcproj
new file mode 100644
index 0000000..ee1263a
--- /dev/null
+++ b/google-breakpad/src/tools/windows/converter/ms_symbol_server_converter.vcproj
@@ -0,0 +1,368 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Purify|Win32">
+      <Configuration>Purify</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Purify|x64">
+      <Configuration>Purify</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{1463C4CD-23FC-4DE9-BFDE-283338200157}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>ms_symbol_server_converter</RootNamespace>
+    <IgnoreWarnCompileDuplicatedFilename>true</IgnoreWarnCompileDuplicatedFilename>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props"/>
+  <PropertyGroup Label="Configuration">
+    <CharacterSet>Unicode</CharacterSet>
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props"/>
+  <ImportGroup Label="ExtensionSettings"/>
+  <ImportGroup Label="PropertySheets">
+    <Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros"/>
+  <PropertyGroup>
+    <ExecutablePath>$(ExecutablePath);$(MSBuildProjectDirectory)\..\..\..\third_party\cygwin\bin\;$(MSBuildProjectDirectory)\..\..\..\third_party\python_26\</ExecutablePath>
+    <OutDir>$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir>$(OutDir)obj\$(ProjectName)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Purify|Win32'">false</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Purify|x64'">false</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+    <TargetName>$(ProjectName)</TargetName>
+    <TargetPath>$(OutDir)lib\$(ProjectName)$(TargetExt)</TargetPath>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\..;$(VSInstallDir)\DIA SDK\include;..\..\..\third_party\platformsdk_win7\files\Include;$(VSInstallDir)\VC\atlmfc\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalOptions>/MP %(AdditionalOptions)</AdditionalOptions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <DisableSpecificWarnings>4100;4127;4396;4503;4512;4819;4995;4702;4800;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+      <ExceptionHandling>false</ExceptionHandling>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <MinimalRebuild>false</MinimalRebuild>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>_DEBUG;_WIN32_WINNT=0x0600;WINVER=0x0600;WIN32;_WINDOWS;_HAS_EXCEPTIONS=0;NOMINMAX;_CRT_RAND_S;CERT_CHAIN_PARA_HAS_EXTRA_FIELDS;WIN32_LEAN_AND_MEAN;_SECURE_ATL;CHROMIUM_BUILD;TOOLKIT_VIEWS=1;ENABLE_GPU=1;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <RuntimeTypeInfo>false</RuntimeTypeInfo>
+      <TreatWarningAsError>true</TreatWarningAsError>
+      <WarningLevel>Level4</WarningLevel>
+    </ClCompile>
+    <Lib>
+      <AdditionalLibraryDirectories>../../../third_party/platformsdk_win7/files/Lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalOptions>/ignore:4221 %(AdditionalOptions)</AdditionalOptions>
+      <OutputFile>$(OutDir)lib\$(ProjectName)$(TargetExt)</OutputFile>
+    </Lib>
+    <Link>
+      <AdditionalDependencies>wininet.lib;version.lib;msimg32.lib;ws2_32.lib;usp10.lib;psapi.lib;dbghelp.lib;$(VSInstallDir)\DIA SDK\lib\diaguids.lib;imagehlp.lib</AdditionalDependencies>
+      <AdditionalLibraryDirectories>../../../third_party/platformsdk_win7/files/Lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalOptions>/safeseh /dynamicbase /ignore:4199 /ignore:4221 /nxcompat %(AdditionalOptions)</AdditionalOptions>
+      <DelayLoadDLLs>dbghelp.dll;dwmapi.dll;uxtheme.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
+      <FixedBaseAddress>false</FixedBaseAddress>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ImportLibrary>$(OutDir)lib\$(TargetName).lib</ImportLibrary>
+      <MapFileName>$(OutDir)$(TargetName).map</MapFileName>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+    <Midl>
+      <DllDataFileName>dlldata.c</DllDataFileName>
+      <GenerateStublessProxies>true</GenerateStublessProxies>
+      <HeaderFileName>%(Filename).h</HeaderFileName>
+      <InterfaceIdentifierFileName>%(Filename)_i.c</InterfaceIdentifierFileName>
+      <OutputDirectory>$(IntDir)</OutputDirectory>
+      <ProxyFileName>%(Filename)_p.c</ProxyFileName>
+      <TypeLibraryName>%(Filename).tlb</TypeLibraryName>
+    </Midl>
+    <ResourceCompile>
+      <AdditionalIncludeDirectories>../../..;..\..\..;$(VSInstallDir)\DIA SDK\include;..\..\..\third_party\platformsdk_win7\files\Include;$(VSInstallDir)\VC\atlmfc\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <Culture>0x0409</Culture>
+      <PreprocessorDefinitions>_DEBUG;_WIN32_WINNT=0x0600;WINVER=0x0600;WIN32;_WINDOWS;_HAS_EXCEPTIONS=0;NOMINMAX;_CRT_RAND_S;CERT_CHAIN_PARA_HAS_EXTRA_FIELDS;WIN32_LEAN_AND_MEAN;_SECURE_ATL;CHROMIUM_BUILD;TOOLKIT_VIEWS=1;ENABLE_GPU=1;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ResourceCompile>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\..;$(VSInstallDir)\DIA SDK\include;..\..\..\third_party\platformsdk_win7\files\Include;$(VSInstallDir)\VC\atlmfc\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalOptions>/MP %(AdditionalOptions)</AdditionalOptions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <DisableSpecificWarnings>4100;4127;4396;4503;4512;4819;4995;4702;4800;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+      <ExceptionHandling>false</ExceptionHandling>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <MinimalRebuild>false</MinimalRebuild>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>_DEBUG;_WIN32_WINNT=0x0600;WINVER=0x0600;WIN32;_WINDOWS;_HAS_EXCEPTIONS=0;NOMINMAX;_CRT_RAND_S;CERT_CHAIN_PARA_HAS_EXTRA_FIELDS;WIN32_LEAN_AND_MEAN;_SECURE_ATL;CHROMIUM_BUILD;TOOLKIT_VIEWS=1;ENABLE_GPU=1;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NO_TCMALLOC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <RuntimeTypeInfo>false</RuntimeTypeInfo>
+      <TreatWarningAsError>true</TreatWarningAsError>
+      <WarningLevel>Level4</WarningLevel>
+    </ClCompile>
+    <Lib>
+      <AdditionalLibraryDirectories>../../../third_party/platformsdk_win7/files/Lib/x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalOptions>/ignore:4221 %(AdditionalOptions)</AdditionalOptions>
+      <OutputFile>$(OutDir)lib\$(ProjectName)$(TargetExt)</OutputFile>
+    </Lib>
+    <Link>
+      <AdditionalDependencies>wininet.lib;version.lib;msimg32.lib;ws2_32.lib;usp10.lib;psapi.lib;dbghelp.lib;$(VSInstallDir)\DIA SDK\lib\diaguids.lib;imagehlp.lib</AdditionalDependencies>
+      <AdditionalLibraryDirectories>../../../third_party/platformsdk_win7/files/Lib/x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalOptions>/dynamicbase /ignore:4199 /ignore:4221 /nxcompat %(AdditionalOptions)</AdditionalOptions>
+      <DelayLoadDLLs>dbghelp.dll;dwmapi.dll;uxtheme.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
+      <FixedBaseAddress>false</FixedBaseAddress>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ImportLibrary>$(OutDir)lib\$(TargetName).lib</ImportLibrary>
+      <MapFileName>$(OutDir)$(TargetName).map</MapFileName>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+    <Midl>
+      <DllDataFileName>dlldata.c</DllDataFileName>
+      <GenerateStublessProxies>true</GenerateStublessProxies>
+      <HeaderFileName>%(Filename).h</HeaderFileName>
+      <InterfaceIdentifierFileName>%(Filename)_i.c</InterfaceIdentifierFileName>
+      <OutputDirectory>$(IntDir)</OutputDirectory>
+      <ProxyFileName>%(Filename)_p.c</ProxyFileName>
+      <TypeLibraryName>%(Filename).tlb</TypeLibraryName>
+    </Midl>
+    <ResourceCompile>
+      <AdditionalIncludeDirectories>../../..;..\..\..;$(VSInstallDir)\DIA SDK\include;..\..\..\third_party\platformsdk_win7\files\Include;$(VSInstallDir)\VC\atlmfc\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <Culture>0x0409</Culture>
+      <PreprocessorDefinitions>_DEBUG;_WIN32_WINNT=0x0600;WINVER=0x0600;WIN32;_WINDOWS;_HAS_EXCEPTIONS=0;NOMINMAX;_CRT_RAND_S;CERT_CHAIN_PARA_HAS_EXTRA_FIELDS;WIN32_LEAN_AND_MEAN;_SECURE_ATL;CHROMIUM_BUILD;TOOLKIT_VIEWS=1;ENABLE_GPU=1;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NO_TCMALLOC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ResourceCompile>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Purify|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\..;$(VSInstallDir)\DIA SDK\include;..\..\..\third_party\platformsdk_win7\files\Include;$(VSInstallDir)\VC\atlmfc\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalOptions>/MP %(AdditionalOptions)</AdditionalOptions>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <DisableSpecificWarnings>4100;4127;4396;4503;4512;4819;4995;4702;4800;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+      <ExceptionHandling>false</ExceptionHandling>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <MinimalRebuild>false</MinimalRebuild>
+      <Optimization>MaxSpeed</Optimization>
+      <PreprocessorDefinitions>_WIN32_WINNT=0x0600;WINVER=0x0600;WIN32;_WINDOWS;_HAS_EXCEPTIONS=0;NOMINMAX;_CRT_RAND_S;CERT_CHAIN_PARA_HAS_EXTRA_FIELDS;WIN32_LEAN_AND_MEAN;_SECURE_ATL;CHROMIUM_BUILD;TOOLKIT_VIEWS=1;ENABLE_GPU=1;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NDEBUG;NVALGRIND;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <RuntimeTypeInfo>false</RuntimeTypeInfo>
+      <TreatWarningAsError>true</TreatWarningAsError>
+      <WarningLevel>Level4</WarningLevel>
+    </ClCompile>
+    <Lib>
+      <AdditionalLibraryDirectories>../../../third_party/platformsdk_win7/files/Lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalOptions>/ignore:4221 %(AdditionalOptions)</AdditionalOptions>
+      <OutputFile>$(OutDir)lib\$(ProjectName)$(TargetExt)</OutputFile>
+    </Lib>
+    <Link>
+      <AdditionalDependencies>wininet.lib;version.lib;msimg32.lib;ws2_32.lib;usp10.lib;psapi.lib;dbghelp.lib;$(VSInstallDir)\DIA SDK\lib\diaguids.lib;imagehlp.lib</AdditionalDependencies>
+      <AdditionalLibraryDirectories>../../../third_party/platformsdk_win7/files/Lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalOptions>/safeseh /dynamicbase /ignore:4199 /ignore:4221 /nxcompat %(AdditionalOptions)</AdditionalOptions>
+      <DelayLoadDLLs>dbghelp.dll;dwmapi.dll;uxtheme.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
+      <FixedBaseAddress>false</FixedBaseAddress>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ImportLibrary>$(OutDir)lib\$(TargetName).lib</ImportLibrary>
+      <MapFileName>$(OutDir)$(TargetName).map</MapFileName>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+    <Midl>
+      <DllDataFileName>dlldata.c</DllDataFileName>
+      <GenerateStublessProxies>true</GenerateStublessProxies>
+      <HeaderFileName>%(Filename).h</HeaderFileName>
+      <InterfaceIdentifierFileName>%(Filename)_i.c</InterfaceIdentifierFileName>
+      <OutputDirectory>$(IntDir)</OutputDirectory>
+      <ProxyFileName>%(Filename)_p.c</ProxyFileName>
+      <TypeLibraryName>%(Filename).tlb</TypeLibraryName>
+    </Midl>
+    <ResourceCompile>
+      <AdditionalIncludeDirectories>../../..;..\..\..;$(VSInstallDir)\DIA SDK\include;..\..\..\third_party\platformsdk_win7\files\Include;$(VSInstallDir)\VC\atlmfc\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <Culture>0x0409</Culture>
+      <PreprocessorDefinitions>_WIN32_WINNT=0x0600;WINVER=0x0600;WIN32;_WINDOWS;_HAS_EXCEPTIONS=0;NOMINMAX;_CRT_RAND_S;CERT_CHAIN_PARA_HAS_EXTRA_FIELDS;WIN32_LEAN_AND_MEAN;_SECURE_ATL;CHROMIUM_BUILD;TOOLKIT_VIEWS=1;ENABLE_GPU=1;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NDEBUG;NVALGRIND;%(PreprocessorDefinitions);%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ResourceCompile>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Purify|x64'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\..;$(VSInstallDir)\DIA SDK\include;..\..\..\third_party\platformsdk_win7\files\Include;$(VSInstallDir)\VC\atlmfc\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalOptions>/MP %(AdditionalOptions)</AdditionalOptions>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <DisableSpecificWarnings>4100;4127;4396;4503;4512;4819;4995;4702;4800;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+      <ExceptionHandling>false</ExceptionHandling>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <MinimalRebuild>false</MinimalRebuild>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>_WIN32_WINNT=0x0600;WINVER=0x0600;WIN32;_WINDOWS;_HAS_EXCEPTIONS=0;NOMINMAX;_CRT_RAND_S;CERT_CHAIN_PARA_HAS_EXTRA_FIELDS;WIN32_LEAN_AND_MEAN;_SECURE_ATL;CHROMIUM_BUILD;TOOLKIT_VIEWS=1;ENABLE_GPU=1;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NO_TCMALLOC;NDEBUG;NVALGRIND;PURIFY;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <RuntimeTypeInfo>false</RuntimeTypeInfo>
+      <TreatWarningAsError>true</TreatWarningAsError>
+      <WarningLevel>Level4</WarningLevel>
+    </ClCompile>
+    <Lib>
+      <AdditionalLibraryDirectories>../../../third_party/platformsdk_win7/files/Lib/x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalOptions>/ignore:4221 %(AdditionalOptions)</AdditionalOptions>
+      <OutputFile>$(OutDir)lib\$(ProjectName)$(TargetExt)</OutputFile>
+    </Lib>
+    <Link>
+      <AdditionalDependencies>wininet.lib;version.lib;msimg32.lib;ws2_32.lib;usp10.lib;psapi.lib;dbghelp.lib;$(VSInstallDir)\DIA SDK\lib\diaguids.lib;imagehlp.lib</AdditionalDependencies>
+      <AdditionalLibraryDirectories>../../../third_party/platformsdk_win7/files/Lib/x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalOptions>/dynamicbase /ignore:4199 /ignore:4221 /nxcompat %(AdditionalOptions)</AdditionalOptions>
+      <DelayLoadDLLs>dbghelp.dll;dwmapi.dll;uxtheme.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
+      <EnableCOMDATFolding>false</EnableCOMDATFolding>
+      <FixedBaseAddress>false</FixedBaseAddress>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ImportLibrary>$(OutDir)lib\$(TargetName).lib</ImportLibrary>
+      <MapFileName>$(OutDir)$(TargetName).map</MapFileName>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+    <Midl>
+      <DllDataFileName>dlldata.c</DllDataFileName>
+      <GenerateStublessProxies>true</GenerateStublessProxies>
+      <HeaderFileName>%(Filename).h</HeaderFileName>
+      <InterfaceIdentifierFileName>%(Filename)_i.c</InterfaceIdentifierFileName>
+      <OutputDirectory>$(IntDir)</OutputDirectory>
+      <ProxyFileName>%(Filename)_p.c</ProxyFileName>
+      <TypeLibraryName>%(Filename).tlb</TypeLibraryName>
+    </Midl>
+    <ResourceCompile>
+      <AdditionalIncludeDirectories>../../..;..\..\..;$(VSInstallDir)\DIA SDK\include;..\..\..\third_party\platformsdk_win7\files\Include;$(VSInstallDir)\VC\atlmfc\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <Culture>0x0409</Culture>
+      <PreprocessorDefinitions>_WIN32_WINNT=0x0600;WINVER=0x0600;WIN32;_WINDOWS;_HAS_EXCEPTIONS=0;NOMINMAX;_CRT_RAND_S;CERT_CHAIN_PARA_HAS_EXTRA_FIELDS;WIN32_LEAN_AND_MEAN;_SECURE_ATL;CHROMIUM_BUILD;TOOLKIT_VIEWS=1;ENABLE_GPU=1;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NO_TCMALLOC;NDEBUG;NVALGRIND;PURIFY;%(PreprocessorDefinitions);%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ResourceCompile>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\..;$(VSInstallDir)\DIA SDK\include;..\..\..\third_party\platformsdk_win7\files\Include;$(VSInstallDir)\VC\atlmfc\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalOptions>/MP %(AdditionalOptions)</AdditionalOptions>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <DisableSpecificWarnings>4100;4127;4396;4503;4512;4819;4995;4702;4800;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+      <ExceptionHandling>false</ExceptionHandling>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <MinimalRebuild>false</MinimalRebuild>
+      <OmitFramePointers>true</OmitFramePointers>
+      <Optimization>MaxSpeed</Optimization>
+      <PreprocessorDefinitions>_WIN32_WINNT=0x0600;WINVER=0x0600;WIN32;_WINDOWS;_HAS_EXCEPTIONS=0;NOMINMAX;_CRT_RAND_S;CERT_CHAIN_PARA_HAS_EXTRA_FIELDS;WIN32_LEAN_AND_MEAN;_SECURE_ATL;CHROMIUM_BUILD;TOOLKIT_VIEWS=1;ENABLE_GPU=1;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NDEBUG;NVALGRIND;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <RuntimeTypeInfo>false</RuntimeTypeInfo>
+      <StringPooling>true</StringPooling>
+      <TreatWarningAsError>true</TreatWarningAsError>
+      <WarningLevel>Level4</WarningLevel>
+    </ClCompile>
+    <Lib>
+      <AdditionalLibraryDirectories>../../../third_party/platformsdk_win7/files/Lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalOptions>/ignore:4221 %(AdditionalOptions)</AdditionalOptions>
+      <OutputFile>$(OutDir)lib\$(ProjectName)$(TargetExt)</OutputFile>
+    </Lib>
+    <Link>
+      <AdditionalDependencies>wininet.lib;version.lib;msimg32.lib;ws2_32.lib;usp10.lib;psapi.lib;dbghelp.lib;$(VSInstallDir)\DIA SDK\lib\diaguids.lib;imagehlp.lib</AdditionalDependencies>
+      <AdditionalLibraryDirectories>../../../third_party/platformsdk_win7/files/Lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalOptions>/safeseh /dynamicbase /ignore:4199 /ignore:4221 /nxcompat %(AdditionalOptions)</AdditionalOptions>
+      <DelayLoadDLLs>dbghelp.dll;dwmapi.dll;uxtheme.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <FixedBaseAddress>false</FixedBaseAddress>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ImportLibrary>$(OutDir)lib\$(TargetName).lib</ImportLibrary>
+      <MapFileName>$(OutDir)$(TargetName).map</MapFileName>
+      <OptimizeReferences>true</OptimizeReferences>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+    <Midl>
+      <DllDataFileName>dlldata.c</DllDataFileName>
+      <GenerateStublessProxies>true</GenerateStublessProxies>
+      <HeaderFileName>%(Filename).h</HeaderFileName>
+      <InterfaceIdentifierFileName>%(Filename)_i.c</InterfaceIdentifierFileName>
+      <OutputDirectory>$(IntDir)</OutputDirectory>
+      <ProxyFileName>%(Filename)_p.c</ProxyFileName>
+      <TypeLibraryName>%(Filename).tlb</TypeLibraryName>
+    </Midl>
+    <ResourceCompile>
+      <AdditionalIncludeDirectories>../../..;..\..\..;$(VSInstallDir)\DIA SDK\include;..\..\..\third_party\platformsdk_win7\files\Include;$(VSInstallDir)\VC\atlmfc\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <Culture>0x0409</Culture>
+      <PreprocessorDefinitions>_WIN32_WINNT=0x0600;WINVER=0x0600;WIN32;_WINDOWS;_HAS_EXCEPTIONS=0;NOMINMAX;_CRT_RAND_S;CERT_CHAIN_PARA_HAS_EXTRA_FIELDS;WIN32_LEAN_AND_MEAN;_SECURE_ATL;CHROMIUM_BUILD;TOOLKIT_VIEWS=1;ENABLE_GPU=1;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NDEBUG;NVALGRIND;%(PreprocessorDefinitions);%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ResourceCompile>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\..;$(VSInstallDir)\DIA SDK\include;..\..\..\third_party\platformsdk_win7\files\Include;$(VSInstallDir)\VC\atlmfc\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalOptions>/MP %(AdditionalOptions)</AdditionalOptions>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <DisableSpecificWarnings>4100;4127;4396;4503;4512;4819;4995;4702;4800;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+      <ExceptionHandling>false</ExceptionHandling>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <MinimalRebuild>false</MinimalRebuild>
+      <Optimization>MaxSpeed</Optimization>
+      <PreprocessorDefinitions>_WIN32_WINNT=0x0600;WINVER=0x0600;WIN32;_WINDOWS;_HAS_EXCEPTIONS=0;NOMINMAX;_CRT_RAND_S;CERT_CHAIN_PARA_HAS_EXTRA_FIELDS;WIN32_LEAN_AND_MEAN;_SECURE_ATL;CHROMIUM_BUILD;TOOLKIT_VIEWS=1;ENABLE_GPU=1;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NO_TCMALLOC;NDEBUG;NVALGRIND;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <RuntimeTypeInfo>false</RuntimeTypeInfo>
+      <TreatWarningAsError>true</TreatWarningAsError>
+      <WarningLevel>Level4</WarningLevel>
+    </ClCompile>
+    <Lib>
+      <AdditionalLibraryDirectories>../../../third_party/platformsdk_win7/files/Lib/x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalOptions>/ignore:4221 %(AdditionalOptions)</AdditionalOptions>
+      <OutputFile>$(OutDir)lib\$(ProjectName)$(TargetExt)</OutputFile>
+    </Lib>
+    <Link>
+      <AdditionalDependencies>wininet.lib;version.lib;msimg32.lib;ws2_32.lib;usp10.lib;psapi.lib;dbghelp.lib;$(VSInstallDir)\DIA SDK\lib\diaguids.lib;imagehlp.lib</AdditionalDependencies>
+      <AdditionalLibraryDirectories>../../../third_party/platformsdk_win7/files/Lib/x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalOptions>/dynamicbase /ignore:4199 /ignore:4221 /nxcompat %(AdditionalOptions)</AdditionalOptions>
+      <DelayLoadDLLs>dbghelp.dll;dwmapi.dll;uxtheme.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
+      <FixedBaseAddress>false</FixedBaseAddress>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ImportLibrary>$(OutDir)lib\$(TargetName).lib</ImportLibrary>
+      <MapFileName>$(OutDir)$(TargetName).map</MapFileName>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+    <Midl>
+      <DllDataFileName>dlldata.c</DllDataFileName>
+      <GenerateStublessProxies>true</GenerateStublessProxies>
+      <HeaderFileName>%(Filename).h</HeaderFileName>
+      <InterfaceIdentifierFileName>%(Filename)_i.c</InterfaceIdentifierFileName>
+      <OutputDirectory>$(IntDir)</OutputDirectory>
+      <ProxyFileName>%(Filename)_p.c</ProxyFileName>
+      <TypeLibraryName>%(Filename).tlb</TypeLibraryName>
+    </Midl>
+    <ResourceCompile>
+      <AdditionalIncludeDirectories>../../..;..\..\..;$(VSInstallDir)\DIA SDK\include;..\..\..\third_party\platformsdk_win7\files\Include;$(VSInstallDir)\VC\atlmfc\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <Culture>0x0409</Culture>
+      <PreprocessorDefinitions>_WIN32_WINNT=0x0600;WINVER=0x0600;WIN32;_WINDOWS;_HAS_EXCEPTIONS=0;NOMINMAX;_CRT_RAND_S;CERT_CHAIN_PARA_HAS_EXTRA_FIELDS;WIN32_LEAN_AND_MEAN;_SECURE_ATL;CHROMIUM_BUILD;TOOLKIT_VIEWS=1;ENABLE_GPU=1;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NO_TCMALLOC;NDEBUG;NVALGRIND;%(PreprocessorDefinitions);%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ResourceCompile>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <None Include="ms_symbol_server_converter.gyp"/>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="ms_symbol_server_converter.cc"/>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets"/>
+  <ImportGroup Label="ExtensionTargets"/>
+</Project>
diff --git a/google-breakpad/src/tools/windows/dump_syms/dump_syms.cc b/google-breakpad/src/tools/windows/dump_syms/dump_syms.cc
new file mode 100644
index 0000000..3e8827b
--- /dev/null
+++ b/google-breakpad/src/tools/windows/dump_syms/dump_syms.cc
@@ -0,0 +1,61 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Windows utility to dump the line number data from a pdb file to
+// a text-based format that we can use from the minidump processor.
+
+#include <stdio.h>
+
+#include <string>
+
+#include "common/windows/pdb_source_line_writer.h"
+
+using std::wstring;
+using google_breakpad::PDBSourceLineWriter;
+
+int wmain(int argc, wchar_t **argv) {
+  if (argc < 2) {
+    fprintf(stderr, "Usage: %ws <file.[pdb|exe|dll]>\n", argv[0]);
+    return 1;
+  }
+
+  PDBSourceLineWriter writer;
+  if (!writer.Open(wstring(argv[1]), PDBSourceLineWriter::ANY_FILE)) {
+    fprintf(stderr, "Open failed\n");
+    return 1;
+  }
+
+  if (!writer.WriteMap(stdout)) {
+    fprintf(stderr, "WriteMap failed\n");
+    return 1;
+  }
+
+  writer.Close();
+  return 0;
+}
diff --git a/google-breakpad/src/tools/windows/dump_syms/dump_syms.gyp b/google-breakpad/src/tools/windows/dump_syms/dump_syms.gyp
new file mode 100644
index 0000000..b815574
--- /dev/null
+++ b/google-breakpad/src/tools/windows/dump_syms/dump_syms.gyp
@@ -0,0 +1,64 @@
+# Copyright 2013 Google Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+{
+  'includes': [
+    '../../../build/common.gypi',
+  ],
+  'targets': [
+    {
+      'target_name': 'dump_syms',
+      'type': 'executable',
+      'sources': [
+        'dump_syms.cc',
+      ],
+      'dependencies': [
+        '../../../common/windows/common_windows.gyp:common_windows_lib',
+      ],
+    },
+    {
+      'target_name': 'dump_syms_unittest',
+      'type': 'executable',
+      'sources': [
+        'dump_syms_unittest.cc',
+      ],
+      'dependencies': [
+        '<(DEPTH)/client/windows/unittests/testing.gyp:gmock',
+        '<(DEPTH)/client/windows/unittests/testing.gyp:gtest',
+        'dump_syms',
+      ],
+      'msvs_settings': {
+        'VCLinkerTool': {
+          'AdditionalDependencies': [
+            'shell32.lib',
+          ],
+        },
+      },
+    },
+  ],
+}
diff --git a/google-breakpad/src/tools/windows/dump_syms/dump_syms.vcproj b/google-breakpad/src/tools/windows/dump_syms/dump_syms.vcproj
new file mode 100644
index 0000000..2fbe301
--- /dev/null
+++ b/google-breakpad/src/tools/windows/dump_syms/dump_syms.vcproj
@@ -0,0 +1,242 @@
+﻿<?xml version="1.0" encoding="UTF-8"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="8.00"
+	Name="dump_syms"
+	ProjectGUID="{792E1530-E2C5-4289-992E-317BA30E9D9F}"
+	RootNamespace="dumpsyms"
+	Keyword="Win32Proj"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="Debug"
+			IntermediateDirectory="Debug"
+			ConfigurationType="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="&quot;$(VSInstallDir)\DIA SDK\include&quot;;..\..\.."
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WIN32_LEAN_AND_MEAN"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="&quot;$(VSInstallDir)\DIA SDK\lib\diaguids.lib&quot; imagehlp.lib"
+				LinkIncremental="2"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="Release"
+			IntermediateDirectory="Release"
+			ConfigurationType="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="&quot;$(VSInstallDir)\DIA SDK\include&quot;;..\..\.."
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_LEAN_AND_MEAN"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="&quot;$(VSInstallDir)\DIA SDK\lib\diaguids.lib&quot; imagehlp.lib"
+				LinkIncremental="2"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+			<File
+				RelativePath="..\..\..\common\windows\dia_util.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\common\windows\guid_string.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\common\windows\omap_internal.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\common\windows\omap.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\common\windows\pdb_source_line_writer.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\common\windows\string_utils-inl.h"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+			>
+		</Filter>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\..\common\windows\dia_util.cc"
+				>
+			</File>
+			<File
+				RelativePath=".\dump_syms.cc"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\common\windows\guid_string.cc"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\common\windows\omap.cc"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\common\windows\pdb_source_line_writer.cc"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\common\windows\string_utils.cc"
+				>
+			</File>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
\ No newline at end of file
diff --git a/google-breakpad/src/tools/windows/dump_syms/dump_syms_unittest.cc b/google-breakpad/src/tools/windows/dump_syms/dump_syms_unittest.cc
new file mode 100644
index 0000000..61f8443
--- /dev/null
+++ b/google-breakpad/src/tools/windows/dump_syms/dump_syms_unittest.cc
@@ -0,0 +1,204 @@
+// Copyright 2003 Google Inc. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include <Windows.h>
+#include <shellapi.h>
+
+#include <string>
+#include <utility>
+
+#include "gmock/gmock.h"
+#include "gtest/gtest.h"
+
+namespace tools {
+namespace windows {
+namespace dump_syms {
+
+namespace {
+
+// Root names of PDB and dumped symbol files to be regression tested. These are
+// specified in complexity of the resulting dumped symbol files.
+const wchar_t* kRootNames[] = {
+  // A PDB file with no OMAP data.
+  L"dump_syms_regtest",
+  // A PDB file with OMAP data for an image that has been function-level
+  // reordered.
+  L"omap_reorder_funcs",
+  // A PDB file with OMAP data for an image that had new content injected, all
+  // of it with source data.
+  L"omap_stretched_filled",
+  // A PDB file with OMAP data for an image that had new content injected, but
+  // without source data.
+  L"omap_stretched",
+  // A PDB file with OMAP data for an image that has been basic block reordered.
+  L"omap_reorder_bbs",  
+  // A 64bit PDB file with no OMAP data.
+  L"dump_syms_regtest64",
+};
+
+void TrimLastComponent(const std::wstring& path,
+                       std::wstring* trimmed,
+                       std::wstring* component) {
+  size_t len = path.size();
+  while (len > 0 && path[len - 1] != '\\')
+    --len;
+
+  if (component != NULL)
+    component->assign(path.c_str() + len, path.c_str() + path.size());
+
+  while (len > 0 && path[len - 1] == '\\')
+    --len;
+
+  if (trimmed != NULL)
+    trimmed->assign(path.c_str(), len);
+}
+
+// Get the directory of the current executable.
+bool GetSelfDirectory(std::wstring* self_dir) {
+  std::wstring command_line = GetCommandLineW();
+
+  int num_args = 0;
+  wchar_t** args = NULL;
+  args = ::CommandLineToArgvW(command_line.c_str(), &num_args);
+  if (args == NULL)
+    return false;
+
+  *self_dir = args[0];
+  TrimLastComponent(*self_dir, self_dir, NULL);
+
+  return true;
+}
+
+void RunCommand(const std::wstring& command_line,
+                std::string* stdout_string) {
+  // Create a PIPE for the child process stdout.
+  HANDLE child_stdout_read = 0;
+  HANDLE child_stdout_write = 0;
+  SECURITY_ATTRIBUTES sec_attr_stdout = {};
+  sec_attr_stdout.nLength = sizeof(sec_attr_stdout);
+  sec_attr_stdout.bInheritHandle = TRUE;
+  ASSERT_TRUE(::CreatePipe(&child_stdout_read, &child_stdout_write,
+                           &sec_attr_stdout, 0));
+  ASSERT_TRUE(::SetHandleInformation(child_stdout_read, HANDLE_FLAG_INHERIT,
+                                     0));
+
+  // Create a PIPE for the child process stdin.
+  HANDLE child_stdin_read = 0;
+  HANDLE child_stdin_write = 0;
+  SECURITY_ATTRIBUTES sec_attr_stdin = {};
+  sec_attr_stdin.nLength = sizeof(sec_attr_stdin);
+  sec_attr_stdin.bInheritHandle = TRUE;
+  ASSERT_TRUE(::CreatePipe(&child_stdin_read, &child_stdin_write,
+                           &sec_attr_stdin, 0));
+  ASSERT_TRUE(::SetHandleInformation(child_stdin_write, HANDLE_FLAG_INHERIT,
+                                     0));
+
+  // Startup the child.
+  STARTUPINFO startup_info = {};
+  PROCESS_INFORMATION process_info = {};
+  startup_info.cb = sizeof(STARTUPINFO);
+  startup_info.hStdError = child_stdout_write;
+  startup_info.hStdInput = child_stdin_read;
+  startup_info.hStdOutput = child_stdout_write;
+  startup_info.dwFlags = STARTF_USESTDHANDLES;
+  ASSERT_TRUE(::CreateProcessW(NULL, (LPWSTR)command_line.c_str(), NULL, NULL,
+                               TRUE, 0, NULL, NULL,
+                               &startup_info, &process_info));
+
+  // Collect the output.
+  ASSERT_TRUE(::CloseHandle(child_stdout_write));
+  char buffer[4096] = {};
+  DWORD bytes_read = 0;
+  while (::ReadFile(child_stdout_read, buffer, sizeof(buffer), &bytes_read,
+                    NULL) && bytes_read > 0) {
+    stdout_string->append(buffer, bytes_read);
+  }
+
+  // Wait for the process to finish.
+  ::WaitForSingleObject(process_info.hProcess, INFINITE);
+
+  // Shut down all of our handles.
+  ASSERT_TRUE(::CloseHandle(process_info.hThread));
+  ASSERT_TRUE(::CloseHandle(process_info.hProcess));
+  ASSERT_TRUE(::CloseHandle(child_stdin_write));
+  ASSERT_TRUE(::CloseHandle(child_stdin_read));
+  ASSERT_TRUE(::CloseHandle(child_stdout_read));
+}
+
+void GetFileContents(const std::wstring& path, std::string* content) {
+  FILE* f = ::_wfopen(path.c_str(), L"rb");
+  ASSERT_TRUE(f != NULL);
+
+  char buffer[4096] = {};
+  while (true) {
+    size_t bytes_read = ::fread(buffer, 1, sizeof(buffer), f);
+    if (bytes_read == 0)
+      break;
+    content->append(buffer, bytes_read);
+  }
+}
+
+class DumpSymsRegressionTest : public testing::Test {
+ public:
+  virtual void SetUp() {
+    std::wstring self_dir;
+    ASSERT_TRUE(GetSelfDirectory(&self_dir));
+    dump_syms_exe = self_dir + L"\\dump_syms.exe";
+
+    TrimLastComponent(self_dir, &testdata_dir, NULL);
+    testdata_dir += L"\\testdata";
+  }
+
+  std::wstring dump_syms_exe;
+  std::wstring testdata_dir;
+};
+
+}  //namespace
+
+TEST_F(DumpSymsRegressionTest, EnsureDumpedSymbolsMatch) {
+  for (size_t i = 0; i < sizeof(kRootNames) / sizeof(kRootNames[0]); ++i) {
+    const wchar_t* root_name = kRootNames[i];
+    std::wstring root_path = testdata_dir + L"\\" + root_name;
+
+    std::wstring sym_path = root_path + L".sym";
+    std::string expected_symbols;
+    ASSERT_NO_FATAL_FAILURE(GetFileContents(sym_path, &expected_symbols));
+
+    std::wstring pdb_path = root_path + L".pdb";
+    std::wstring command_line = L"\"" + dump_syms_exe + L"\" \"" +
+        pdb_path + L"\"";
+    std::string symbols;
+    ASSERT_NO_FATAL_FAILURE(RunCommand(command_line, &symbols));
+
+    EXPECT_EQ(expected_symbols, symbols);
+  }
+}
+
+}  // namespace dump_syms
+}  // namespace windows
+}  // namespace tools
\ No newline at end of file
diff --git a/google-breakpad/src/tools/windows/dump_syms/run_regtest.sh b/google-breakpad/src/tools/windows/dump_syms/run_regtest.sh
new file mode 100755
index 0000000..1f20f64
--- /dev/null
+++ b/google-breakpad/src/tools/windows/dump_syms/run_regtest.sh
@@ -0,0 +1,53 @@
+#!/bin/sh
+
+# Copyright (c) 2006, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Release/dump_syms.exe testdata/dump_syms_regtest.pdb | \
+ tr -d '\015' > \
+ testdata/dump_syms_regtest.new
+status=$?
+
+if [ $status -ne 0 ] ; then
+  echo "FAIL, dump_syms.exe failed"
+  exit $status
+fi
+
+diff -u testdata/dump_syms_regtest.new testdata/dump_syms_regtest.sym > \
+ testdata/dump_syms_regtest.diff
+status=$?
+
+if [ $status -eq 0 ] ; then
+  rm testdata/dump_syms_regtest.diff testdata/dump_syms_regtest.new
+  echo "PASS"
+else
+  echo "FAIL, see testdata/dump_syms_regtest.[new|diff]"
+fi
+
+exit $status
diff --git a/google-breakpad/src/tools/windows/dump_syms/testdata/dump_syms_regtest.cc b/google-breakpad/src/tools/windows/dump_syms/testdata/dump_syms_regtest.cc
new file mode 100644
index 0000000..e5cc5cf
--- /dev/null
+++ b/google-breakpad/src/tools/windows/dump_syms/testdata/dump_syms_regtest.cc
@@ -0,0 +1,65 @@
+// Copyright (c) 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// cl /Zi dump_syms_regtest.cc /link /PROFILE
+// dump_syms dump_syms_regtest.pdb > dump_syms_regtest.sym
+
+namespace google_breakpad {
+
+class C {
+ public:
+  C() : member_(1) {}
+  virtual ~C() {}
+
+  void set_member(int value) { member_ = value; }
+  int member() const { return member_; }
+
+  void f() { member_ = g(); }
+  virtual int g() { return 2; }
+  static char* h(const C &that) { return 0; }
+
+ private:
+  int member_;
+};
+
+static int i() {
+  return 3;
+}
+
+}  // namespace google_breakpad
+
+int main(int argc, char **argv) {
+  google_breakpad::C object;
+  object.set_member(google_breakpad::i());
+  object.f();
+  int value = object.g();
+  char *nothing = object.h(object);
+
+  return 0;
+}
diff --git a/google-breakpad/src/tools/windows/dump_syms/testdata/dump_syms_regtest.pdb b/google-breakpad/src/tools/windows/dump_syms/testdata/dump_syms_regtest.pdb
new file mode 100644
index 0000000..04c42a7
--- /dev/null
+++ b/google-breakpad/src/tools/windows/dump_syms/testdata/dump_syms_regtest.pdb
Binary files differ
diff --git a/google-breakpad/src/tools/windows/dump_syms/testdata/dump_syms_regtest.sym b/google-breakpad/src/tools/windows/dump_syms/testdata/dump_syms_regtest.sym
new file mode 100644
index 0000000..72d147e
--- /dev/null
+++ b/google-breakpad/src/tools/windows/dump_syms/testdata/dump_syms_regtest.sym
@@ -0,0 +1,2945 @@
+MODULE windows x86 9214611565FA4C538FE724A797B860F71 dump_syms_regtest.pdb
+FILE 1 c:\src\breakpad\src\src\tools\windows\dump_syms\testdata\dump_syms_regtest.cc
+FILE 2 f:\dd\public\sdk\inc\internal\pebteb.h
+FILE 3 f:\dd\public\sdk\inc\internal\ntldr.h
+FILE 4 f:\dd\public\sdk\inc\internal\ntconfig.h
+FILE 5 f:\dd\public\sdk\inc\internal\ntregapi.h
+FILE 6 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h
+FILE 7 f:\dd\public\ddk\inc\ntdef.h
+FILE 8 f:\dd\public\sdk\inc\internal\ntmmapi.h
+FILE 9 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h
+FILE 10 f:\dd\public\sdk\inc\pshpack1.h
+FILE 11 f:\dd\public\sdk\inc\internal\nxi386.h
+FILE 12 f:\dd\public\ddk\inc\poppack.h
+FILE 13 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\process.h
+FILE 14 f:\dd\public\sdk\inc\pshpack8.h
+FILE 15 f:\dd\public\ddk\inc\ntpoapi.h
+FILE 16 f:\dd\public\sdk\inc\internal\ntexapi.h
+FILE 17 f:\dd\public\sdk\inc\poppack.h
+FILE 18 f:\dd\public\ddk\inc\ntimage.h
+FILE 19 f:\dd\public\ddk\inc\pshpack4.h
+FILE 20 f:\dd\public\sdk\inc\pshpack2.h
+FILE 21 f:\dd\public\ddk\inc\ntnls.h
+FILE 22 f:\dd\public\sdk\inc\internal\ntelfapi.h
+FILE 23 f:\dd\public\sdk\inc\internal\ntpsapi.h
+FILE 24 f:\dd\public\sdk\inc\internal\nti386.h
+FILE 25 f:\dd\public\sdk\inc\specstrings.h
+FILE 26 f:\dd\public\sdk\inc\sal_supp.h
+FILE 27 f:\dd\public\sdk\inc\specstrings_supp.h
+FILE 28 f:\dd\public\sdk\inc\specstrings_strict.h
+FILE 29 f:\dd\public\sdk\inc\specstrings_undef.h
+FILE 30 f:\dd\public\sdk\inc\driverspecs.h
+FILE 31 f:\dd\public\sdk\inc\sdv_driverspecs.h
+FILE 32 f:\dd\public\sdk\inc\basetsd.h
+FILE 33 f:\dd\public\sdk\inc\internal\ntpnpapi.h
+FILE 34 f:\dd\public\sdk\inc\cfg.h
+FILE 35 f:\dd\public\sdk\inc\internal\ntxcapi.h
+FILE 36 f:\dd\public\sdk\inc\guiddef.h
+FILE 37 f:\dd\public\sdk\inc\internal\nt.h
+FILE 38 f:\dd\public\sdk\inc\ntstatus.h
+FILE 39 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h
+FILE 40 f:\dd\public\sdk\inc\internal\ntkeapi.h
+FILE 41 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h
+FILE 42 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h
+FILE 43 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\codeanalysis\sourceannotations.h
+FILE 44 f:\dd\public\sdk\inc\internal\ntobapi.h
+FILE 45 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\string.h
+FILE 46 f:\dd\public\sdk\inc\internal\ntioapi.h
+FILE 47 f:\dd\public\ddk\inc\devioctl.h
+FILE 48 f:\dd\public\sdk\inc\internal\ntseapi.h
+FILE 49 f:\dd\public\ddk\inc\mce.h
+FILE 50 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\misc\i386\chandler4.c
+FILE 51 f:\dd\public\sdk\inc\pshpack4.h
+FILE 52 f:\dd\public\devdiv\inc\ddbanned.h
+FILE 53 f:\dd\public\sdk\inc\internal\ntlpcapi.h
+FILE 54 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h
+FILE 55 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h
+FILE 56 f:\dd\public\sdk\inc\internal\ntiolog.h
+FILE 57 f:\dd\vctools\crt_bld\SELF_X86\crt\prebuild\misc\i386\exsup.asm
+FILE 58 f:\dd\vctools\crt_bld\SELF_X86\crt\prebuild\h\pversion.inc
+FILE 59 f:\dd\vctools\crt_bld\SELF_X86\crt\prebuild\h\cmacros.inc
+FILE 60 f:\dd\vctools\crt_bld\SELF_X86\crt\prebuild\h\exsup.inc
+FILE 61 f:\dd\vctools\crt_bld\SELF_X86\crt\prebuild\misc\i386\nlgsupp.asm
+FILE 62 f:\dd\vctools\crt_bld\SELF_X86\crt\prebuild\misc\i386\exsup4.asm
+FILE 64 f:\dd\vctools\crt_bld\SELF_X86\crt\prebuild\misc\i386\sehprolg4.asm
+FILE 65 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\string\i386\p4_memcpy.c
+FILE 69 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\string\i386\memcmp.c
+FILE 73 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\string\i386\p4_memset.c
+FILE 77 f:\dd\public\sdk\inc\winreg.h
+FILE 78 f:\dd\public\sdk\inc\imm.h
+FILE 79 f:\dd\public\sdk\inc\wingdi.h
+FILE 80 f:\dd\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 81 f:\dd\public\sdk\inc\winerror.h
+FILE 82 f:\dd\public\sdk\inc\ktmtypes.h
+FILE 84 f:\dd\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 85 f:\dd\public\sdk\inc\windef.h
+FILE 86 f:\dd\public\sdk\inc\winbase.h
+FILE 88 f:\dd\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 89 f:\dd\public\sdk\inc\winuser.h
+FILE 91 f:\dd\public\sdk\inc\winnetwk.h
+FILE 92 f:\dd\public\sdk\inc\winnt.h
+FILE 93 f:\dd\public\sdk\inc\wnnc.h
+FILE 94 f:\dd\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 96 f:\dd\public\sdk\inc\winnls.h
+FILE 98 f:\dd\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 99 f:\dd\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 100 f:\dd\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 101 f:\dd\vctools\crt_bld\self_x86\crt\src\codeanalysis\sourceannotations.h
+FILE 102 f:\dd\public\sdk\inc\winver.h
+FILE 103 f:\dd\public\sdk\inc\verrsrc.h
+FILE 104 f:\dd\public\sdk\inc\wincon.h
+FILE 105 f:\dd\public\sdk\inc\stralign.h
+FILE 107 f:\dd\public\sdk\inc\mcx.h
+FILE 108 f:\dd\vctools\crt_bld\self_x86\crt\src\atox.c
+FILE 109 f:\dd\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 110 f:\dd\public\sdk\inc\windows.h
+FILE 111 f:\dd\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 112 f:\dd\public\sdk\inc\sdkddkver.h
+FILE 113 f:\dd\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 114 f:\dd\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 120 f:\dd\public\sdk\inc\reason.h
+FILE 123 f:\dd\public\sdk\inc\kernelspecs.h
+FILE 125 f:\dd\vctools\crt_bld\self_x86\crt\src\tchar.h
+FILE 126 f:\dd\vctools\crt_bld\self_x86\crt\src\mbstring.h
+FILE 127 f:\dd\vctools\crt_bld\self_x86\crt\src\mbctype.h
+FILE 128 f:\dd\public\sdk\inc\ime_cmodes.h
+FILE 130 f:\dd\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 131 f:\dd\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 132 f:\dd\public\sdk\inc\tvout.h
+FILE 145 f:\dd\vctools\crt_bld\self_x86\crt\src\internal_securecrt.h
+FILE 152 f:\dd\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 164 f:\dd\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 165 f:\dd\vctools\crt_bld\self_x86\crt\src\xtoa.c
+FILE 178 f:\dd\vctools\crt_bld\self_x86\crt\src\xtoas.c
+FILE 182 f:\dd\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 224 f:\dd\vctools\crt_bld\self_x86\crt\src\dosmap.c
+FILE 250 f:\dd\vctools\crt_bld\self_x86\crt\src\rtcsup.h
+FILE 251 f:\dd\vctools\crt_bld\self_x86\crt\src\rtcapi.h
+FILE 265 f:\dd\vctools\crt_bld\self_x86\crt\src\winheap.h
+FILE 281 f:\dd\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 291 f:\dd\vctools\crt_bld\self_x86\crt\src\calloc_impl.c
+FILE 299 f:\dd\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 333 f:\dd\vctools\crt_bld\self_x86\crt\src\crtheap.c
+FILE 389 f:\dd\vctools\crt_bld\self_x86\crt\src\free.c
+FILE 453 f:\dd\vctools\crt_bld\self_x86\crt\src\heapinit.c
+FILE 498 f:\dd\vctools\crt_bld\self_x86\crt\src\rterr.h
+FILE 504 f:\dd\vctools\crt_bld\self_x86\crt\src\malloc.c
+FILE 561 f:\dd\vctools\crt_bld\self_x86\crt\src\msize.c
+FILE 618 f:\dd\vctools\crt_bld\self_x86\crt\src\realloc.c
+FILE 677 f:\dd\vctools\crt_bld\self_x86\crt\src\recalloc.c
+FILE 731 f:\dd\vctools\crt_bld\self_x86\crt\src\_newmode.c
+FILE 774 f:\dd\vctools\crt_bld\self_x86\crt\src\msdos.h
+FILE 777 f:\dd\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 792 f:\dd\vctools\crt_bld\self_x86\crt\src\ioinit.c
+FILE 844 f:\dd\vctools\crt_bld\self_x86\crt\src\intel\loadcfg.c
+FILE 892 f:\dd\vctools\crt_bld\self_x86\crt\src\intel\secchk.c
+FILE 904 f:\dd\vctools\crt_bld\self_x86\crt\src\process.h
+FILE 943 f:\dd\vctools\crt_bld\self_x86\crt\src\a_env.c
+FILE 960 f:\dd\vctools\crt_bld\self_x86\crt\src\awint.h
+FILE 975 f:\dd\vctools\crt_bld\self_x86\crt\src\signal.h
+FILE 1011 f:\dd\vctools\crt_bld\self_x86\crt\src\abort.c
+FILE 1039 f:\dd\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 1053 f:\dd\vctools\crt_bld\self_x86\crt\src\crtmbox.c
+FILE 1063 f:\dd\vctools\crt_bld\self_x86\crt\src\crtmboxw.c
+FILE 1065 f:\dd\vctools\crt_bld\self_x86\crt\src\wchar.h
+FILE 1069 f:\dd\vctools\crt_bld\self_x86\crt\src\wtime.inl
+FILE 1120 f:\dd\vctools\crt_bld\self_x86\crt\src\ctype.c
+FILE 1145 f:\dd\vctools\crt_bld\self_x86\crt\src\dbghook.c
+FILE 1181 f:\dd\vctools\crt_bld\self_x86\crt\src\errmode.c
+FILE 1244 f:\dd\vctools\crt_bld\self_x86\crt\src\getqloc.c
+FILE 1288 f:\dd\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 1301 f:\dd\vctools\crt_bld\self_x86\crt\src\glstatus.c
+FILE 1344 f:\dd\vctools\crt_bld\self_x86\crt\src\gs_cookie.c
+FILE 1392 f:\dd\vctools\crt_bld\self_x86\crt\src\gs_report.c
+FILE 1413 f:\binaries.x86ret\inc\mm3dnow.h
+FILE 1415 f:\binaries.x86ret\inc\ammintrin.h
+FILE 1424 f:\binaries.x86ret\inc\immintrin.h
+FILE 1426 f:\binaries.x86ret\inc\wmmintrin.h
+FILE 1427 f:\binaries.x86ret\inc\nmmintrin.h
+FILE 1428 f:\binaries.x86ret\inc\smmintrin.h
+FILE 1429 f:\binaries.x86ret\inc\tmmintrin.h
+FILE 1430 f:\binaries.x86ret\inc\pmmintrin.h
+FILE 1431 f:\binaries.x86ret\inc\emmintrin.h
+FILE 1432 f:\binaries.x86ret\inc\xmmintrin.h
+FILE 1433 f:\binaries.x86ret\inc\mmintrin.h
+FILE 1455 f:\dd\vctools\crt_bld\self_x86\crt\src\gs_support.c
+FILE 1467 f:\dd\vctools\crt_bld\self_x86\crt\src\intrin.h
+FILE 1468 f:\dd\vctools\crt_bld\self_x86\crt\src\setjmp.h
+FILE 1508 f:\dd\vctools\crt_bld\self_x86\crt\src\initcoll.c
+FILE 1568 f:\dd\vctools\crt_bld\self_x86\crt\src\initctyp.c
+FILE 1627 f:\dd\vctools\crt_bld\self_x86\crt\src\inithelp.c
+FILE 1685 f:\dd\vctools\crt_bld\self_x86\crt\src\initmon.c
+FILE 1737 f:\dd\vctools\crt_bld\self_x86\crt\src\nlsint.h
+FILE 1742 f:\dd\vctools\crt_bld\self_x86\crt\src\initnum.c
+FILE 1800 f:\dd\vctools\crt_bld\self_x86\crt\src\inittime.c
+FILE 1855 f:\dd\vctools\crt_bld\self_x86\crt\src\lconv.c
+FILE 1913 f:\dd\vctools\crt_bld\self_x86\crt\src\localref.c
+FILE 1962 f:\dd\vctools\crt_bld\self_x86\crt\src\sect_attribs.h
+FILE 1969 f:\dd\vctools\crt_bld\self_x86\crt\src\onexit.c
+FILE 1989 f:\dd\vctools\crt_bld\self_x86\crt\src\nlsdata1.c
+FILE 2036 f:\dd\vctools\crt_bld\self_x86\crt\src\nlsdata2.c
+FILE 2079 f:\dd\vctools\crt_bld\self_x86\crt\src\pesect.c
+FILE 2128 f:\dd\vctools\crt_bld\self_x86\crt\src\purevirt.c
+FILE 2186 f:\dd\vctools\crt_bld\self_x86\crt\src\rand_s.c
+FILE 2250 f:\dd\vctools\crt_bld\self_x86\crt\src\setlocal.c
+FILE 2311 f:\dd\vctools\crt_bld\self_x86\crt\src\winsig.c
+FILE 2314 f:\dd\vctools\crt_bld\self_x86\crt\src\float.h
+FILE 2315 f:\dd\vctools\crt_bld\self_x86\crt\src\crtwrn.h
+FILE 2369 f:\dd\vctools\crt_bld\self_x86\crt\src\winxfltr.c
+FILE 2394 f:\dd\vctools\crt_bld\self_x86\crt\src\fltintrn.h
+FILE 2419 f:\dd\vctools\crt_bld\self_x86\crt\src\cmiscdat.c
+FILE 2445 f:\dd\vctools\crt_bld\self_x86\crt\src\intel\strncmp.c
+FILE 2468 f:\dd\vctools\crt_bld\self_x86\crt\src\tcscat_s.inl
+FILE 2493 f:\dd\vctools\crt_bld\self_x86\crt\src\strcat_s.c
+FILE 2523 f:\dd\vctools\crt_bld\self_x86\crt\src\tcscpy_s.inl
+FILE 2548 f:\dd\vctools\crt_bld\self_x86\crt\src\strcpy_s.c
+FILE 2578 f:\dd\vctools\crt_bld\self_x86\crt\src\tcsncpy_s.inl
+FILE 2603 f:\dd\vctools\crt_bld\self_x86\crt\src\strncpy_s.c
+FILE 2658 f:\dd\vctools\crt_bld\self_x86\crt\src\wcscat_s.c
+FILE 2713 f:\dd\vctools\crt_bld\self_x86\crt\src\wcscpy_s.c
+FILE 2728 f:\dd\vctools\crt_bld\self_x86\crt\src\wcslen.c
+FILE 2776 f:\dd\vctools\crt_bld\self_x86\crt\src\wcsncpy_s.c
+FILE 2787 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\memcpy.asm
+FILE 2788 f:\dd\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc
+FILE 2789 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\memset.asm
+FILE 2791 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\strcmp.asm
+FILE 2793 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\strcspn.asm
+FILE 2794 f:\dd\vctools\crt_bld\SELF_X86\crt\src\Intel\STRSPN.ASM
+FILE 2796 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\strlen.asm
+FILE 2798 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\_strnicm.asm
+FILE 2800 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\strpbrk.asm
+FILE 2803 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\llmul.asm
+FILE 2805 f:\dd\vctools\crt_bld\SELF_X86\crt\src\mm.inc
+FILE 2806 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\ulldvrm.asm
+FILE 2820 f:\dd\vctools\crt_bld\self_x86\crt\src\handler.cpp
+FILE 2841 f:\dd\vctools\crt_bld\self_x86\crt\src\new.h
+FILE 2875 f:\dd\vctools\crt_bld\self_x86\crt\src\delete.cpp
+FILE 2931 f:\dd\vctools\crt_bld\self_x86\crt\src\_wctype.c
+FILE 2987 f:\dd\vctools\crt_bld\self_x86\crt\src\iswctype.c
+FILE 2998 f:\dd\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 3045 f:\dd\vctools\crt_bld\self_x86\crt\src\isctype.c
+FILE 3106 f:\dd\vctools\crt_bld\self_x86\crt\src\strtol.c
+FILE 3163 f:\dd\vctools\crt_bld\self_x86\crt\src\strtoq.c
+FILE 3218 f:\dd\vctools\crt_bld\self_x86\crt\src\tolower.c
+FILE 3271 f:\dd\vctools\crt_bld\self_x86\crt\src\ismbbyte.c
+FILE 3305 f:\dd\vctools\crt_bld\self_x86\crt\src\mbdata.h
+FILE 3326 f:\dd\vctools\crt_bld\self_x86\crt\src\mbctype.c
+FILE 3386 f:\dd\vctools\crt_bld\self_x86\crt\src\a_loc.c
+FILE 3447 f:\dd\vctools\crt_bld\self_x86\crt\src\a_map.c
+FILE 3507 f:\dd\vctools\crt_bld\self_x86\crt\src\a_str.c
+FILE 3583 f:\dd\vctools\crt_bld\self_x86\crt\src\invarg.c
+FILE 3626 f:\dd\vctools\crt_bld\self_x86\crt\src\stricmp.c
+FILE 3682 f:\dd\vctools\crt_bld\self_x86\crt\src\strnicmp.c
+FILE 3774 f:\dd\vctools\crt_bld\self_x86\crt\src\tidtable.c
+FILE 3778 f:\dd\vctools\crt_bld\self_x86\crt\src\memory.h
+FILE 3838 f:\dd\vctools\crt_bld\self_x86\crt\src\stdenvp.c
+FILE 3860 f:\dd\vctools\crt_bld\self_x86\crt\src\dos.h
+FILE 3891 f:\dd\vctools\crt_bld\self_x86\crt\src\stdargv.c
+FILE 3954 f:\dd\vctools\crt_bld\self_x86\crt\src\mlock.c
+FILE 3998 f:\dd\vctools\crt_bld\self_x86\crt\src\cmsgs.h
+FILE 4012 f:\dd\vctools\crt_bld\self_x86\crt\src\crt0msg.c
+FILE 4072 f:\dd\vctools\crt_bld\self_x86\crt\src\crt0init.c
+FILE 4123 f:\dd\vctools\crt_bld\self_x86\crt\src\crt0fp.c
+FILE 4186 f:\dd\vctools\crt_bld\self_x86\crt\src\crt0dat.c
+FILE 4250 f:\dd\vctools\crt_bld\self_x86\crt\src\crt0.c
+FILE 4274 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\alloca16.asm
+FILE 4276 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\chkstk.asm
+FILE 4289 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\errno.h
+FILE 4293 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\internal.h
+FILE 4294 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\limits.h
+FILE 4295 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\mtdll.h
+FILE 4309 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\sect_attribs.h
+FILE 4315 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\tran\i386\cpu_disp.c
+FILE 4327 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\crtdbg.h
+FILE 4340 f:\dd\vctools\langapi\undname\undname.cxx
+FILE 4345 f:\dd\vctools\langapi\undname\undname.inl
+FILE 4347 f:\dd\vctools\langapi\undname\utf8.h
+FILE 4355 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\swprintf.inl
+FILE 4365 f:\dd\vctools\langapi\undname\undname.hxx
+FILE 4366 f:\dd\vctools\langapi\undname\undname.h
+FILE 4367 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\stdlib.h
+FILE 4368 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\stdio.h
+FILE 4396 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\eh.h
+FILE 4397 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\eh\unhandld.cpp
+FILE 4401 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\ehhooks.h
+FILE 4405 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\ehassert.h
+FILE 4427 f:\dd\vctools\langapi\include\ehdata.h
+FILE 4429 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\stddef.h
+FILE 4449 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\exception
+FILE 4472 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\malloc.h
+FILE 4473 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\eh\typname.cpp
+FILE 4475 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\cstddef
+FILE 4487 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\typeinfo.h
+FILE 4488 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\typeinfo
+FILE 4490 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\xstddef
+FILE 4491 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\yvals.h
+FILE 4492 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\use_ansi.h
+FILE 4493 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\dbgint.h
+FILE 4496 f:\dd\public\internal\vctools\include\undname.h
+FILE 4531 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\eh\typinfo.cpp
+FILE 4591 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\eh\hooks.cpp
+FILE 4643 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\rtc\initsect.cpp
+FILE 4664 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\rtcapi.h
+FILE 4680 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\rtcpriv.h
+FUNC 1000 54 0 main
+1000 6 57 1
+1006 8 58 1
+100e e 59 1
+101c 8 60 1
+1024 b 61 1
+102f f 62 1
+103e 12 64 1
+1050 4 65 1
+FUNC 1060 a 0 google_breakpad::i
+1060 3 51 1
+1063 5 52 1
+1068 2 53 1
+FUNC 1070 21 0 google_breakpad::C::C()
+1070 21 37 1
+FUNC 10a0 14 0 google_breakpad::C::~C()
+10a0 14 38 1
+FUNC 10c0 16 0 google_breakpad::C::set_member(int)
+10c0 16 40 1
+FUNC 10e0 1e 0 google_breakpad::C::f()
+10e0 1e 43 1
+FUNC 1100 10 0 google_breakpad::C::g()
+1100 10 44 1
+FUNC 1110 7 0 google_breakpad::C::h(google_breakpad::C const &)
+1110 7 45 1
+FUNC 1120 2c 0 google_breakpad::C::`scalar deleting destructor'(unsigned int)
+FUNC 114c 10 0 type_info::~type_info()
+114c 2 49 4531
+114e d 50 4531
+115b 1 51 4531
+FUNC 115c 21 0 type_info::`scalar deleting destructor'(unsigned int)
+FUNC 117d b 0 operator delete(void *)
+117d 5 20 2875
+1182 1 24 2875
+1183 5 23 2875
+FUNC 1188 29 0 fast_error_exit
+1188 5 326 4250
+118d 9 335 4250
+1196 5 337 4250
+119b 8 339 4250
+11a3 c 340 4250
+11af 2 341 4250
+FUNC 11b1 161 0 __tmainCRTStartup
+11b1 c 196 4250
+11bd a 214 4250
+11c7 b 216 4250
+11d2 49 223 4250
+121b 9 225 4250
+1224 8 226 4250
+122c 9 228 4250
+1235 8 229 4250
+123d 5 238 4250
+1242 3 246 4250
+1245 9 248 4250
+124e 8 249 4250
+1256 b 252 4250
+1261 a 255 4250
+126b 9 257 4250
+1274 8 258 4250
+127c 9 259 4250
+1285 8 260 4250
+128d 8 262 4250
+1295 4 263 4250
+1299 7 264 4250
+12a0 a 277 4250
+12aa 18 278 4250
+12c2 5 281 4250
+12c7 6 282 4250
+12cd 5 284 4250
+12d2 2 286 4250
+12d4 17 287 4250
+12eb 6 293 4250
+12f1 6 295 4250
+12f7 6 296 4250
+12fd 5 298 4250
+1302 7 300 4250
+1309 3 302 4250
+130c 6 303 4250
+FUNC 1312 a 0 mainCRTStartup
+1312 0 179 4250
+1312 5 186 4250
+1317 5 188 4250
+FUNC 131c 70 0 type_info::_Type_info_dtor(type_info *)
+131c c 62 4473
+1328 8 63 4473
+1330 4 64 4473
+1334 a 65 4473
+133e d 70 4473
+134b 4 72 4473
+134f 4 74 4473
+1353 6 79 4473
+1359 7 80 4473
+1360 9 94 4473
+1369 4 101 4473
+136d c 103 4473
+1379 6 107 4473
+137f 2 83 4473
+1381 2 72 4473
+1383 9 104 4473
+FUNC 1390 88 0 strcmp
+1390 0 65 2791
+1390 4 73 2791
+1394 4 74 2791
+1398 6 76 2791
+139e 2 77 2791
+13a0 2 81 2791
+13a2 2 83 2791
+13a4 2 84 2791
+13a6 2 85 2791
+13a8 2 86 2791
+13aa 3 87 2791
+13ad 2 88 2791
+13af 2 89 2791
+13b1 2 90 2791
+13b3 3 92 2791
+13b6 3 94 2791
+13b9 2 95 2791
+13bb 2 96 2791
+13bd 2 97 2791
+13bf 3 98 2791
+13c2 2 99 2791
+13c4 3 100 2791
+13c7 3 101 2791
+13ca 2 102 2791
+13cc 4 103 2791
+13d0 2 107 2791
+13d2 2 108 2791
+13d4 2 115 2791
+13d6 2 116 2791
+13d8 3 117 2791
+13db 1 118 2791
+13dc 6 122 2791
+13e2 2 123 2791
+13e4 2 125 2791
+13e6 3 126 2791
+13e9 2 127 2791
+13eb 2 128 2791
+13ed 3 129 2791
+13f0 2 130 2791
+13f2 2 131 2791
+13f4 6 133 2791
+13fa 2 134 2791
+13fc 3 139 2791
+13ff 3 140 2791
+1402 2 141 2791
+1404 2 142 2791
+1406 2 143 2791
+1408 2 144 2791
+140a 3 145 2791
+140d 2 146 2791
+140f 2 147 2791
+1411 2 148 2791
+1413 3 149 2791
+1416 2 150 2791
+FUNC 1418 3a 0 free
+1418 5 40 389
+141d 6 45 389
+1423 11 50 389
+1434 4 51 389
+1438 18 53 389
+1450 2 55 389
+FUNC 1452 42 0 __CxxUnhandledExceptionFilter(_EXCEPTION_POINTERS *)
+1452 5 67 4397
+1457 32 68 4397
+1489 5 69 4397
+148e 2 72 4397
+1490 4 73 4397
+FUNC 1494 e 0 __CxxSetUnhandledExceptionFilter
+1494 0 86 4397
+1494 b 89 4397
+149f 2 90 4397
+14a1 1 91 4397
+FUNC 14a2 2b 0 __crtCorExitProcess
+14a2 5 675 4186
+14a7 b 679 4186
+14b2 4 680 4186
+14b6 c 681 4186
+14c2 4 682 4186
+14c6 5 683 4186
+14cb 2 693 4186
+FUNC 14cd 18 0 __crtExitProcess
+14cd 5 698 4186
+14d2 9 699 4186
+14db a 708 4186
+FUNC 14e5 9 0 _lockexit
+14e5 0 758 4186
+14e5 8 759 4186
+14ed 1 760 4186
+FUNC 14ee 9 0 _unlockexit
+14ee 0 784 4186
+14ee 8 785 4186
+14f6 1 786 4186
+FUNC 14f7 33 0 _init_pointers
+14f7 3 809 4186
+14fa 7 810 4186
+1501 6 812 4186
+1507 6 813 4186
+150d 6 814 4186
+1513 6 815 4186
+1519 6 816 4186
+151f a 817 4186
+1529 1 818 4186
+FUNC 152a 24 0 _initterm_e
+152a 6 908 4186
+1530 b 917 4186
+153b 6 922 4186
+1541 2 923 4186
+1543 3 924 4186
+1546 6 917 4186
+154c 2 928 4186
+FUNC 154e 97 0 _cinit
+154e 5 258 4186
+1553 18 268 4186
+156b a 270 4186
+1575 5 272 4186
+157a 11 278 4186
+158b 2 279 4186
+158d 2 280 4186
+158f c 283 4186
+159b 20 288 4186
+15bb 1a 301 4186
+15d5 c 303 4186
+15e1 2 307 4186
+15e3 2 308 4186
+FUNC 15e5 140 0 doexit
+15e5 c 489 4186
+15f1 8 507 4186
+15f9 4 508 4186
+15fd f 510 4186
+160c 5 511 4186
+1611 8 514 4186
+1619 a 516 4186
+1623 13 532 4186
+1636 4 533 4186
+163a d 534 4186
+1647 3 538 4186
+164a 3 539 4186
+164d 11 547 4186
+165e 2 550 4186
+1660 4 552 4186
+1664 6 559 4186
+166a 7 562 4186
+1671 2 565 4186
+1673 a 567 4186
+167d 8 568 4186
+1685 a 570 4186
+168f 6 573 4186
+1695 8 574 4186
+169d 5 576 4186
+16a2 21 582 4186
+16c3 21 590 4186
+16e4 c 608 4186
+16f0 6 613 4186
+16f6 a 617 4186
+1700 8 619 4186
+1708 8 621 4186
+1710 6 609 4186
+1716 9 610 4186
+171f 6 622 4186
+FUNC 1725 16 0 exit
+1725 5 392 4186
+172a f 393 4186
+1739 2 394 4186
+FUNC 173b 16 0 _exit
+173b 5 400 4186
+1740 f 401 4186
+174f 2 402 4186
+FUNC 1751 f 0 _cexit
+1751 0 407 4186
+1751 e 408 4186
+175f 1 409 4186
+FUNC 1760 f 0 _c_exit
+1760 0 414 4186
+1760 e 415 4186
+176e 1 416 4186
+FUNC 176f 1e 0 _amsg_exit
+176f 5 439 4186
+1774 5 440 4186
+1779 9 441 4186
+1782 b 442 4186
+FUNC 178d 26 0 _GET_RTERRMSG
+178d 5 165 4012
+1792 2 168 4012
+1794 c 169 4012
+17a0 6 168 4012
+17a6 2 172 4012
+17a8 2 173 4012
+17aa 7 170 4012
+17b1 2 173 4012
+FUNC 17b3 1af 0 _NMSG_WRITE
+17b3 1b 196 4012
+17ce 8 197 4012
+17d6 11 199 4012
+17e7 2a 226 4012
+1811 c 263 4012
+181d 20 272 4012
+183d 21 275 4012
+185e 1f 276 4012
+187d d 279 4012
+188a d 281 4012
+1897 1d 282 4012
+18b4 18 285 4012
+18cc 14 286 4012
+18e0 15 290 4012
+18f5 a 272 4012
+18ff a 228 4012
+1909 9 229 4012
+1912 2 244 4012
+1914 a 246 4012
+191e 6 248 4012
+1924 8 244 4012
+192c 27 260 4012
+1953 f 294 4012
+FUNC 1962 39 0 _FF_MSGBANNER
+1962 0 134 4012
+1962 22 138 4012
+1984 a 140 4012
+198e c 141 4012
+199a 1 143 4012
+FUNC 199b 14a 0 _XcptFilter
+199b 6 195 2369
+19a1 7 202 2369
+19a8 8 203 2369
+19b0 2a 208 2369
+19da 4 210 2369
+19de 3 216 2369
+19e1 4 223 2369
+19e5 7 224 2369
+19ec 5 232 2369
+19f1 4 237 2369
+19f5 8 238 2369
+19fd 3 244 2369
+1a00 6 248 2369
+1a06 a 263 2369
+1a10 c 272 2369
+1a1c 3 280 2369
+1a1f 13 283 2369
+1a32 c 310 2369
+1a3e 9 312 2369
+1a47 7 314 2369
+1a4e 9 316 2369
+1a57 7 318 2369
+1a5e 9 320 2369
+1a67 7 322 2369
+1a6e 9 324 2369
+1a77 7 326 2369
+1a7e 9 328 2369
+1a87 7 330 2369
+1a8e 9 332 2369
+1a97 7 334 2369
+1a9e 9 336 2369
+1aa7 7 338 2369
+1aae 9 340 2369
+1ab7 7 342 2369
+1abe 7 344 2369
+1ac5 8 353 2369
+1acd 3 358 2369
+1ad0 2 360 2369
+1ad2 4 365 2369
+1ad6 4 366 2369
+1ada 4 372 2369
+1ade 5 374 2369
+1ae3 2 376 2369
+FUNC 1ae5 dc 0 _setenvp
+1ae5 0 77 3838
+1ae5 9 85 3838
+1aee 6 86 3838
+1af4 9 91 3838
+1afd 4 98 3838
+1b01 8 99 3838
+1b09 4 110 3838
+1b0d 1 111 3838
+1b0e b 112 3838
+1b19 6 108 3838
+1b1f 15 117 3838
+1b34 2 118 3838
+1b36 9 121 3838
+1b3f 6 123 3838
+1b45 9 125 3838
+1b4e 10 127 3838
+1b5e f 133 3838
+1b6d 3 134 3838
+1b70 7 121 3838
+1b77 b 138 3838
+1b82 7 139 3838
+1b89 3 142 3838
+1b8c a 149 3838
+1b96 2 152 3838
+1b98 2 138 3838
+1b9a 3 153 3838
+1b9d b 129 3838
+1ba8 7 130 3838
+1baf 5 131 3838
+1bb4 d 133 3838
+FUNC 1bc1 19a 0 parse_cmdline
+1bc1 6 221 3891
+1bc7 9 229 3891
+1bd0 2 232 3891
+1bd2 17 234 3891
+1be9 3 253 3891
+1bec 5 255 3891
+1bf1 5 257 3891
+1bf6 9 258 3891
+1bff 2 259 3891
+1c01 2 261 3891
+1c03 4 262 3891
+1c07 8 263 3891
+1c0f 2 265 3891
+1c11 f 267 3891
+1c20 2 268 3891
+1c22 6 269 3891
+1c28 a 270 3891
+1c32 1 271 3891
+1c33 1a 275 3891
+1c4d 4 280 3891
+1c51 4 281 3891
+1c55 4 284 3891
+1c59 9 289 3891
+1c62 a 290 3891
+1c6c 3 291 3891
+1c6f 1 278 3891
+1c70 2 279 3891
+1c72 9 294 3891
+1c7b 6 298 3891
+1c81 9 299 3891
+1c8a 2 300 3891
+1c8c 3 314 3891
+1c8f 4 318 3891
+1c93 1 321 3891
+1c94 1 322 3891
+1c95 5 319 3891
+1c9a 5 324 3891
+1c9f 5 327 3891
+1ca4 e 328 3891
+1cb2 2 329 3891
+1cb4 2 330 3891
+1cb6 d 332 3891
+1cc3 2 335 3891
+1cc5 5 339 3891
+1cca 4 340 3891
+1cce 4 341 3891
+1cd2 6 342 3891
+1cd8 3 341 3891
+1cdb 14 346 3891
+1cef 4 351 3891
+1cf3 12 353 3891
+1d05 b 354 3891
+1d10 2 355 3891
+1d12 a 357 3891
+1d1c 2 358 3891
+1d1e a 359 3891
+1d28 1 360 3891
+1d29 2 361 3891
+1d2b 5 364 3891
+1d30 1 366 3891
+1d31 5 375 3891
+1d36 4 379 3891
+1d3a 7 380 3891
+1d41 2 381 3891
+1d43 8 382 3891
+1d4b 9 385 3891
+1d54 3 386 3891
+1d57 2 387 3891
+1d59 2 388 3891
+FUNC 1d5b bb 0 _setargv
+1d5b 9 88 3891
+1d64 c 97 3891
+1d70 5 98 3891
+1d75 18 104 3891
+1d8d 19 120 3891
+1da6 11 127 3891
+1db7 15 134 3891
+1dcc a 138 3891
+1dd6 2 140 3891
+1dd8 9 142 3891
+1de1 2 143 3891
+1de3 2 144 3891
+1de5 13 151 3891
+1df8 c 156 3891
+1e04 6 160 3891
+1e0a 4 175 3891
+1e0e 6 136 3891
+1e14 2 176 3891
+FUNC 1e16 97 0 __crtGetEnvironmentStringsA
+1e16 a 40 943
+1e20 e 49 943
+1e2e 4 50 943
+1e32 5 54 943
+1e37 8 55 943
+1e3f 9 56 943
+1e48 1b 70 943
+1e63 12 74 943
+1e75 12 88 943
+1e87 9 90 943
+1e90 3 91 943
+1e93 7 94 943
+1e9a 5 95 943
+1e9f 7 76 943
+1ea6 5 77 943
+1eab 2 96 943
+FUNC 1ead 245 0 _ioinit
+1ead 9 111 792
+1eb6 a 122 792
+1ec0 13 129 792
+1ed3 8 131 792
+1edb 15 137 792
+1ef0 3 134 792
+1ef3 a 139 792
+1efd 3 141 792
+1f00 6 143 792
+1f06 4 145 792
+1f0a 3 146 792
+1f0d 1b 147 792
+1f28 15 155 792
+1f3d 2 160 792
+1f3f 6 166 792
+1f45 2 167 792
+1f47 e 173 792
+1f55 d 179 792
+1f62 f 185 792
+1f71 7 199 792
+1f78 c 201 792
+1f84 3 198 792
+1f87 4 203 792
+1f8b 4 205 792
+1f8f 4 206 792
+1f93 10 209 792
+1fa3 12 210 792
+1fb5 b 179 792
+1fc0 2 280 792
+1fc2 6 191 792
+1fc8 6 217 792
+1fce 29 230 792
+1ff7 14 232 792
+200b 7 233 792
+2012 8 234 792
+201a 17 237 792
+2031 3 239 792
+2034 c 217 792
+2040 2 249 792
+2042 b 251 792
+204d c 254 792
+2059 6 302 792
+205f 4 258 792
+2063 30 262 792
+2093 c 273 792
+209f 6 274 792
+20a5 5 275 792
+20aa 4 276 792
+20ae 13 280 792
+20c1 3 282 792
+20c4 2 284 792
+20c6 4 293 792
+20ca 6 294 792
+20d0 a 249 792
+20da c 309 792
+20e6 5 311 792
+20eb 2 312 792
+20ed 5 281 792
+FUNC 20f2 26 0 _RTC_Initialize
+FUNC 2118 26 0 _RTC_Terminate
+FUNC 213e 9 0 _encoded_null
+213e 0 79 3774
+213e 8 80 3774
+2146 1 81 3774
+FUNC 2147 9 4 __crtTlsAlloc
+2147 0 95 3774
+2147 6 96 3774
+214d 3 97 3774
+FUNC 2150 34 0 __set_flsgetvalue
+2150 3 143 3774
+2153 e 145 3774
+2161 4 146 3774
+2165 e 148 3774
+2173 d 149 3774
+2180 3 151 3774
+2183 1 155 3774
+FUNC 2184 3d 0 _mtterm
+2184 0 329 3774
+2184 a 336 3774
+218e f 337 3774
+219d 7 338 3774
+21a4 a 342 3774
+21ae 7 343 3774
+21b5 7 344 3774
+21bc 5 352 3774
+FUNC 21c1 b4 0 _initptd
+21c1 c 379 3774
+21cd b 381 3774
+21d8 a 384 3774
+21e2 4 385 3774
+21e6 6 386 3774
+21ec 3 391 3774
+21ef 7 395 3774
+21f6 7 396 3774
+21fd 7 397 3774
+2204 8 399 3774
+220c 4 400 3774
+2210 9 402 3774
+2219 c 404 3774
+2225 8 411 3774
+222d 3 412 3774
+2230 6 413 3774
+2236 4 421 3774
+223a 8 422 3774
+2242 9 423 3774
+224b c 425 3774
+2257 6 428 3774
+225d 6 404 3774
+2263 9 406 3774
+226c 9 426 3774
+FUNC 2275 79 0 _getptd_noexit
+2275 4 448 3774
+2279 6 452 3774
+227f 15 460 3774
+2294 14 472 3774
+22a8 19 475 3774
+22c1 a 481 3774
+22cb 6 483 3774
+22d1 6 484 3774
+22d7 2 486 3774
+22d9 7 492 3774
+22e0 2 493 3774
+22e2 8 498 3774
+22ea 3 500 3774
+22ed 1 501 3774
+FUNC 22ee 1a 0 _getptd
+22ee 3 522 3774
+22f1 7 523 3774
+22f8 4 524 3774
+22fc 8 525 3774
+2304 3 527 3774
+2307 1 528 3774
+FUNC 2308 12f 4 _freefls
+2308 c 556 3774
+2314 b 567 3774
+231f 7 568 3774
+2326 7 569 3774
+232d 7 571 3774
+2334 7 572 3774
+233b 7 574 3774
+2342 7 575 3774
+2349 7 577 3774
+2350 7 578 3774
+2357 7 580 3774
+235e 7 581 3774
+2365 7 583 3774
+236c 7 584 3774
+2373 7 586 3774
+237a 7 587 3774
+2381 a 589 3774
+238b 7 590 3774
+2392 8 592 3774
+239a 4 593 3774
+239e 1a 596 3774
+23b8 7 597 3774
+23bf c 599 3774
+23cb 8 603 3774
+23d3 7 605 3774
+23da 7 606 3774
+23e1 7 608 3774
+23e8 15 611 3774
+23fd 7 612 3774
+2404 c 615 3774
+2410 7 619 3774
+2417 8 622 3774
+241f 3 599 3774
+2422 9 600 3774
+242b 3 615 3774
+242e 9 616 3774
+FUNC 2437 17b 0 _mtinit
+2437 3 203 3774
+243a d 211 3774
+2447 4 212 3774
+244b 5 213 3774
+2450 3 214 3774
+2453 2 300 3774
+2455 e 218 3774
+2463 d 221 3774
+2470 d 224 3774
+247d d 227 3774
+248a 2a 228 3774
+24b4 a 231 3774
+24be 1a 235 3774
+24d8 25 244 3774
+24fd 5 249 3774
+2502 e 256 3774
+2510 d 257 3774
+251d d 258 3774
+252a 12 259 3774
+253c 7 266 3774
+2543 2 268 3774
+2545 1d 274 3774
+2562 2 276 3774
+2564 29 284 3774
+258d a 294 3774
+2597 6 296 3774
+259d 6 297 3774
+25a3 5 299 3774
+25a8 5 286 3774
+25ad 4 245 3774
+25b1 1 300 3774
+FUNC 25b2 1e 0 _heap_init
+25b2 0 40 453
+25b2 1d 44 453
+25cf 1 60 453
+FUNC 25d0 45 0 _SEH_prolog4
+FUNC 2615 14 0 _SEH_epilog4
+FUNC 2630 18f 0 _except_handler4
+FUNC 27bf 9b 0 __security_init_cookie
+27bf 8 97 1455
+27c7 21 114 1455
+27e8 7 116 1455
+27ef 3 117 1455
+27f2 a 127 1455
+27fc 6 132 1455
+2802 8 135 1455
+280a 8 136 1455
+2812 8 137 1455
+281a a 139 1455
+2824 8 144 1455
+282c 4 161 1455
+2830 7 163 1455
+2837 4 166 1455
+283b c 168 1455
+2847 6 172 1455
+284d b 173 1455
+2858 2 175 1455
+FUNC 285a f 0 _initp_misc_invarg
+285a 5 64 3583
+285f 8 65 3583
+2867 2 66 3583
+FUNC 2869 129 0 _call_reportfault
+2869 16 164 3583
+287f 9 166 3583
+2888 7 167 3583
+288f 17 170 3583
+28a6 1b 172 3583
+28c1 6 179 3583
+28c7 6 180 3583
+28cd 6 181 3583
+28d3 6 182 3583
+28d9 6 183 3583
+28df 6 184 3583
+28e5 7 185 3583
+28ec 7 186 3583
+28f3 7 187 3583
+28fa 7 188 3583
+2901 7 189 3583
+2908 7 190 3583
+290f 1 191 3583
+2910 6 192 3583
+2916 3 198 3583
+2919 19 199 3583
+2932 9 201 3583
+293b 9 240 3583
+2944 9 241 3583
+294d 6 242 3583
+2953 6 245 3583
+2959 a 248 3583
+2963 d 250 3583
+2970 d 254 3583
+297d 7 255 3583
+2984 e 257 3583
+FUNC 2992 25 0 _invoke_watson
+2992 3 146 3583
+2995 12 155 3583
+29a7 f 156 3583
+29b6 1 157 3583
+FUNC 29b7 2d 0 _invalid_parameter
+29b7 5 96 3583
+29bc c 103 3583
+29c8 4 104 3583
+29cc 1 111 3583
+29cd 2 106 3583
+29cf 15 110 3583
+FUNC 29e4 10 0 _invalid_parameter_noinfo
+29e4 0 120 3583
+29e4 f 121 3583
+29f3 1 122 3583
+FUNC 29f4 4a 0 _mtinitlocks
+29f4 4 136 3954
+29f8 7 143 3954
+29ff a 144 3954
+2a09 9 145 3954
+2a12 14 147 3954
+2a26 6 143 3954
+2a2c 3 156 3954
+2a2f 3 157 3954
+2a32 c 150 3954
+FUNC 2a3e 57 0 _mtdeletelocks
+2a3e 3 187 3954
+2a41 d 193 3954
+2a4e c 195 3954
+2a5a 3 199 3954
+2a5d 6 205 3954
+2a63 4 206 3954
+2a67 b 193 3954
+2a72 6 214 3954
+2a78 c 216 3954
+2a84 3 220 3954
+2a87 b 214 3954
+2a92 3 223 3954
+FUNC 2a95 17 0 _unlock
+2a95 5 370 3954
+2a9a 10 374 3954
+2aaa 2 375 3954
+FUNC 2aac c2 0 _mtinitlocknum
+2aac c 258 3954
+2ab8 6 260 3954
+2abe a 268 3954
+2ac8 5 269 3954
+2acd 7 270 3954
+2ad4 c 271 3954
+2ae0 e 275 3954
+2aee 4 276 3954
+2af2 e 278 3954
+2b00 b 279 3954
+2b0b 4 280 3954
+2b0f 8 283 3954
+2b17 3 284 3954
+2b1a 4 286 3954
+2b1e 10 287 3954
+2b2e 7 288 3954
+2b35 b 289 3954
+2b40 3 290 3954
+2b43 2 291 3954
+2b45 2 292 3954
+2b47 2 295 3954
+2b49 7 296 3954
+2b50 c 299 3954
+2b5c 3 303 3954
+2b5f 6 304 3954
+2b65 9 300 3954
+FUNC 2b6e 33 0 _lock
+2b6e 5 332 3954
+2b73 10 337 3954
+2b83 b 339 3954
+2b8e 8 340 3954
+2b96 9 347 3954
+2b9f 2 348 3954
+FUNC 2ba1 5f 0 strcpy_s
+2ba1 5 13 2523
+2ba6 23 18 2523
+2bc9 b 19 2523
+2bd4 11 23 2523
+2be5 4 27 2523
+2be9 3 29 2523
+2bec e 30 2523
+2bfa 4 33 2523
+2bfe 2 34 2523
+FUNC 2c00 8b 0 strlen
+2c00 0 54 2796
+2c00 4 63 2796
+2c04 6 64 2796
+2c0a 2 65 2796
+2c0c 2 69 2796
+2c0e 3 70 2796
+2c11 2 71 2796
+2c13 2 72 2796
+2c15 6 73 2796
+2c1b 2 74 2796
+2c1d 13 76 2796
+2c30 2 81 2796
+2c32 5 82 2796
+2c37 2 83 2796
+2c39 3 84 2796
+2c3c 2 85 2796
+2c3e 3 86 2796
+2c41 5 87 2796
+2c46 2 88 2796
+2c48 3 90 2796
+2c4b 2 91 2796
+2c4d 2 92 2796
+2c4f 2 93 2796
+2c51 2 94 2796
+2c53 5 95 2796
+2c58 2 96 2796
+2c5a 5 97 2796
+2c5f 2 98 2796
+2c61 2 99 2796
+2c63 3 103 2796
+2c66 4 104 2796
+2c6a 2 105 2796
+2c6c 1 106 2796
+2c6d 3 108 2796
+2c70 4 109 2796
+2c74 2 110 2796
+2c76 1 111 2796
+2c77 3 113 2796
+2c7a 4 114 2796
+2c7e 2 115 2796
+2c80 1 116 2796
+2c81 3 118 2796
+2c84 4 119 2796
+2c88 2 120 2796
+2c8a 1 121 2796
+FUNC 2c8b 94 0 malloc
+2c8b 6 81 504
+2c91 a 85 504
+2c9b 3d 89 504
+2cd8 4 94 504
+2cdc b 98 504
+2ce7 b 105 504
+2cf2 2 109 504
+2cf4 7 100 504
+2cfb 7 119 504
+2d02 6 121 504
+2d08 7 111 504
+2d0f b 112 504
+2d1a 3 113 504
+2d1d 2 122 504
+FUNC 2d20 90 0 _local_unwind4
+FUNC 2db0 46 0 _unwind_handler4
+FUNC 2df6 1c 4 _seh_longjmp_unwind4
+FUNC 2e12 17 0 _EH4_CallFilterFunc
+FUNC 2e29 19 0 _EH4_TransferToHandler
+FUNC 2e42 19 0 _EH4_GlobalUnwind2
+FUNC 2e5b 17 8 _EH4_LocalUnwind
+FUNC 2e72 42 0 _get_errno_from_oserr
+2e72 5 119 224
+2e77 5 123 224
+2e7c 9 124 224
+2e85 6 123 224
+2e8b 8 133 224
+2e93 3 134 224
+2e96 2 139 224
+2e98 7 125 224
+2e9f 2 139 224
+2ea1 11 135 224
+2eb2 2 139 224
+FUNC 2eb4 13 0 _errno
+2eb4 0 279 224
+2eb4 5 280 224
+2eb9 4 281 224
+2ebd 5 282 224
+2ec2 1 287 224
+2ec3 3 284 224
+2ec6 1 287 224
+FUNC 2ec7 39 0 terminate()
+2ec7 c 84 4591
+2ed3 8 89 4591
+2edb 4 90 4591
+2edf 4 95 4591
+2ee3 2 99 4591
+2ee5 2 100 4591
+2ee7 7 101 4591
+2eee 7 106 4591
+2ef5 5 114 4591
+2efa 6 115 4591
+FUNC 2f00 11 0 _initp_eh_hooks
+2f00 0 69 4591
+2f00 10 70 4591
+2f10 1 71 4591
+FUNC 2f11 1e 0 _initp_misc_winsig
+2f11 5 57 2311
+2f16 8 58 2311
+2f1e 5 59 2311
+2f23 5 60 2311
+2f28 5 61 2311
+2f2d 2 62 2311
+FUNC 2f2f 37 0 siglookup
+2f2f 5 629 2311
+2f34 a 630 2311
+2f3e 14 639 2311
+2f52 e 642 2311
+2f60 2 646 2311
+2f62 2 651 2311
+2f64 2 652 2311
+FUNC 2f66 d 0 __get_sigabrt
+2f66 0 669 2311
+2f66 c 670 2311
+2f72 1 671 2311
+FUNC 2f73 1a3 0 raise
+2f73 c 450 2311
+2f7f 5 457 2311
+2f84 3 458 2311
+2f87 1f 460 2311
+2fa6 a 486 2311
+2fb0 4 487 2311
+2fb4 8 488 2311
+2fbc a 463 2311
+2fc6 2 465 2311
+2fc8 10 490 2311
+2fd8 2 491 2311
+2fda f 460 2311
+2fe9 12 498 2311
+2ffb a 474 2311
+3005 2 476 2311
+3007 a 468 2311
+3011 2 470 2311
+3013 a 479 2311
+301d 7 480 2311
+3024 a 500 2311
+302e 2 508 2311
+3030 4 507 2311
+3034 6 508 2311
+303a 5 513 2311
+303f 7 518 2311
+3046 5 525 2311
+304b 7 526 2311
+3052 5 528 2311
+3057 f 539 2311
+3066 6 540 2311
+306c 3 541 2311
+306f 5 547 2311
+3074 6 548 2311
+307a 7 549 2311
+3081 5 557 2311
+3086 1a 564 2311
+30a0 d 567 2311
+30ad 5 564 2311
+30b2 7 570 2311
+30b9 c 573 2311
+30c5 5 578 2311
+30ca 8 584 2311
+30d2 2 585 2311
+30d4 6 573 2311
+30da 6 574 2311
+30e0 9 575 2311
+30e9 5 586 2311
+30ee f 593 2311
+30fd 6 594 2311
+3103 5 599 2311
+3108 6 600 2311
+310e 2 603 2311
+3110 6 604 2311
+FUNC 3116 f 0 _initp_misc_rand_s
+3116 5 58 2186
+311b 8 59 2186
+3123 2 60 2186
+FUNC 3125 f 0 _initp_misc_purevirt
+3125 5 179 1627
+312a 8 180 1627
+3132 2 181 1627
+FUNC 3134 f 0 _initp_heap_handler
+3134 5 31 2820
+3139 8 32 2820
+3141 2 33 2820
+FUNC 3143 28 0 _callnewh
+3143 5 131 2820
+3148 c 133 2820
+3154 e 135 2820
+3162 3 138 2820
+3165 2 139 2820
+3167 2 136 2820
+3169 2 139 2820
+FUNC 316b b6 0 _onexit_nolock
+316b 8 100 1969
+3173 f 103 1969
+3182 f 104 1969
+3191 14 108 1969
+31a5 10 118 1969
+31b5 d 123 1969
+31c2 13 125 1969
+31d5 3 130 1969
+31d8 13 132 1969
+31eb 3 143 1969
+31ee f 145 1969
+31fd 10 152 1969
+320d 8 153 1969
+3215 5 155 1969
+321a 5 110 1969
+321f 2 156 1969
+FUNC 3221 31 0 __onexitinit
+3221 3 201 1969
+3224 d 204 1969
+3231 11 205 1969
+3242 4 207 1969
+3246 4 212 1969
+324a 1 217 1969
+324b 3 214 1969
+324e 3 216 1969
+3251 1 217 1969
+FUNC 3252 3c 0 _onexit
+3252 c 81 1969
+325e 5 84 1969
+3263 4 86 1969
+3267 c 87 1969
+3273 c 89 1969
+327f 3 93 1969
+3282 6 94 1969
+3288 6 90 1969
+FUNC 328e 17 0 atexit
+328e 5 161 1969
+3293 10 162 1969
+32a3 2 163 1969
+FUNC 32a5 23 0 _initp_misc_cfltcvt_tab
+32a5 4 54 2419
+32a9 2 56 2419
+32ab 1a 58 2419
+32c5 3 60 2419
+FUNC 32d0 35 0 _ValidateImageBase
+32d0 5 44 2079
+32d5 d 50 2079
+32e2 2 52 2079
+32e4 2 68 2079
+32e6 5 55 2079
+32eb 6 56 2079
+32f1 2 58 2079
+32f3 10 62 2079
+3303 2 68 2079
+FUNC 3310 44 0 _FindPESection
+3310 5 92 2079
+3315 8 99 2079
+331d 18 108 2079
+3335 10 111 2079
+3345 8 108 2079
+334d 5 123 2079
+3352 2 124 2079
+FUNC 3360 bc 0 _IsNonwritableInCurrentImage
+3360 35 149 2079
+3395 7 156 2079
+339c f 164 2079
+33ab 2 166 2079
+33ad 8 174 2079
+33b5 e 175 2079
+33c3 2 176 2079
+33c5 2 178 2079
+33c7 12 185 2079
+33d9 12 195 2079
+33eb 16 187 2079
+3401 9 193 2079
+340a 12 195 2079
+FUNC 341c 16c 0 __crtMessageBoxW
+341c 12 41 1053
+342e 14 49 1053
+3442 4 56 1053
+3446 c 62 1053
+3452 d 64 1053
+345f 2 65 1053
+3461 6 67 1053
+3467 10 72 1053
+3477 6 76 1053
+347d 9 78 1053
+3486 10 81 1053
+3496 10 84 1053
+34a6 d 88 1053
+34b3 8 93 1053
+34bb 4 95 1053
+34bf 10 97 1053
+34cf 1a 110 1053
+34e9 3 113 1053
+34ec c 114 1053
+34f8 8 116 1053
+3500 1f 121 1053
+351f 7 130 1053
+3526 2 132 1053
+3528 a 134 1053
+3532 3 136 1053
+3535 4 137 1053
+3539 5 139 1053
+353e e 143 1053
+354c 3 145 1053
+354f 4 146 1053
+3553 8 148 1053
+355b 8 155 1053
+3563 4 156 1053
+3567 10 158 1053
+3577 2 163 1053
+3579 f 166 1053
+FUNC 3588 75 0 wcscat_s
+3588 6 13 2468
+358e 22 18 2468
+35b0 2 46 2468
+35b2 e 19 2468
+35c0 2 21 2468
+35c2 6 23 2468
+35c8 3 25 2468
+35cb 3 26 2468
+35ce 2 29 2468
+35d0 2 32 2468
+35d2 14 35 2468
+35e6 9 41 2468
+35ef e 42 2468
+FUNC 35fd cd 0 wcsncpy_s
+35fd 5 13 2578
+3602 16 17 2578
+3618 5 65 2578
+361d 2 66 2578
+361f 1e 24 2578
+363d 4 25 2578
+3641 5 28 2578
+3646 2 29 2578
+3648 e 31 2578
+3656 2 33 2578
+3658 5 35 2578
+365d 16 37 2578
+3673 2 41 2578
+3675 19 45 2578
+368e 4 48 2578
+3692 5 50 2578
+3697 8 54 2578
+369f a 58 2578
+36a9 d 59 2578
+36b6 3 61 2578
+36b9 11 62 2578
+FUNC 36ca 1b 0 wcslen
+36ca 5 41 2728
+36cf 3 42 2728
+36d2 b 44 2728
+36dd 6 46 2728
+36e3 2 47 2728
+FUNC 36e5 63 0 wcscpy_s
+36e5 6 13 2523
+36eb 22 18 2523
+370d 2 34 2523
+370f c 19 2523
+371b 16 23 2523
+3731 9 29 2523
+373a e 30 2523
+FUNC 3748 3f 0 _set_error_mode
+3748 5 43 1181
+374d 11 46 1181
+375e 5 54 1181
+3763 2 61 1181
+3765 5 50 1181
+376a 6 51 1181
+3770 2 61 1181
+3772 13 57 1181
+3785 2 61 1181
+FUNC 3787 f 0 __security_check_cookie
+3787 0 52 892
+3787 6 55 892
+378d 2 56 892
+378f 2 57 892
+3791 5 59 892
+FUNC 3796 45 0 _malloc_crt
+3796 7 39 333
+379d 2 40 333
+379f b 44 333
+37aa c 45 333
+37b6 1a 46 333
+37d0 5 47 333
+37d5 4 50 333
+37d9 2 51 333
+FUNC 37db 4c 0 _calloc_crt
+37db 7 54 333
+37e2 2 55 333
+37e4 12 61 333
+37f6 c 62 333
+3802 1a 63 333
+381c 5 64 333
+3821 4 67 333
+3825 2 68 333
+FUNC 3827 4e 0 _realloc_crt
+3827 7 71 333
+382e 2 72 333
+3830 f 76 333
+383f 11 77 333
+3850 1a 78 333
+386a 5 79 333
+386f 4 82 333
+3873 2 83 333
+FUNC 3875 2f 0 CPtoLCID
+3875 0 329 3326
+3875 14 330 3326
+3889 2 345 3326
+388b 1 346 3326
+388c 5 342 3326
+3891 1 346 3326
+3892 5 339 3326
+3897 1 346 3326
+3898 5 336 3326
+389d 1 346 3326
+389e 5 333 3326
+38a3 1 346 3326
+FUNC 38a4 64 0 setSBCS
+38a4 6 363 3326
+38aa 11 368 3326
+38bb 1b 379 3326
+38d6 12 381 3326
+38e8 9 382 3326
+38f1 b 384 3326
+38fc 9 385 3326
+3905 3 386 3326
+FUNC 3908 190 0 setSBUpLow
+3908 17 402 3326
+391f 10 412 3326
+392f f 415 3326
+393e c 416 3326
+394a 11 420 3326
+395b 6 419 3326
+3961 20 421 3326
+3981 a 420 3326
+398b 20 427 3326
+39ab 23 432 3326
+39ce 25 437 3326
+39f3 2 442 3326
+39f5 d 443 3326
+3a02 5 445 3326
+3a07 9 446 3326
+3a10 5 448 3326
+3a15 5 450 3326
+3a1a e 451 3326
+3a28 2 453 3326
+3a2a 7 454 3326
+3a31 5 442 3326
+3a36 8 456 3326
+3a3e 12 472 3326
+3a50 17 461 3326
+3a67 5 463 3326
+3a6c 5 464 3326
+3a71 5 466 3326
+3a76 5 468 3326
+3a7b 5 469 3326
+3a80 2 471 3326
+3a82 3 472 3326
+3a85 5 460 3326
+3a8a e 474 3326
+FUNC 3a98 a4 0 __updatetmbcinfo
+3a98 c 495 3326
+3aa4 7 498 3326
+3aab 10 499 3326
+3abb 3 532 3326
+3abe 4 535 3326
+3ac2 8 537 3326
+3aca 2 540 3326
+3acc 6 541 3326
+3ad2 8 500 3326
+3ada 4 502 3326
+3ade e 505 3326
+3aec 17 511 3326
+3b03 7 516 3326
+3b0a 11 523 3326
+3b1b 7 524 3326
+3b22 11 527 3326
+3b33 9 529 3326
+FUNC 3b3c 87 0 _LocaleUpdate::_LocaleUpdate(localeinfo_struct *)
+3b3c 5 240 111
+3b41 e 241 111
+3b4f 8 243 111
+3b57 5 244 111
+3b5c 6 245 111
+3b62 1c 247 111
+3b7e 21 248 111
+3b9f 9 249 111
+3ba8 4 251 111
+3bac 4 252 111
+3bb0 2 255 111
+3bb2 a 257 111
+3bbc 7 259 111
+FUNC 3bc3 7c 0 getSystemCP
+3bc3 9 282 3326
+3bcc b 284 3326
+3bd7 6 285 3326
+3bdd 5 289 3326
+3be2 a 291 3326
+3bec 14 292 3326
+3c00 5 295 3326
+3c05 a 297 3326
+3c0f 8 298 3326
+3c17 5 302 3326
+3c1c 12 305 3326
+3c2e f 308 3326
+3c3d 2 309 3326
+FUNC 3c3f 1e9 0 _setmbcp_nolock
+3c3f 17 684 3326
+3c56 b 691 3326
+3c61 9 694 3326
+3c6a 7 696 3326
+3c71 7 697 3326
+3c78 3 701 3326
+3c7b 2 703 3326
+3c7d c 706 3326
+3c89 d 703 3326
+3c96 2a 741 3326
+3cc0 13 749 3326
+3cd3 f 754 3326
+3ce2 15 759 3326
+3cf7 17 762 3326
+3d0e c 764 3326
+3d1a f 710 3326
+3d29 15 713 3326
+3d3e 9 718 3326
+3d47 8 721 3326
+3d4f 12 722 3326
+3d61 4 721 3326
+3d65 b 718 3326
+3d70 12 713 3326
+3d82 20 729 3326
+3da2 f 731 3326
+3db1 7 734 3326
+3db8 5 735 3326
+3dbd 6 765 3326
+3dc3 4 764 3326
+3dc7 d 762 3326
+3dd4 8 769 3326
+3ddc 7 770 3326
+3de3 b 773 3326
+3dee 3 776 3326
+3df1 2 778 3326
+3df3 3 780 3326
+3df6 12 783 3326
+3e08 2 787 3326
+3e0a 6 792 3326
+3e10 6 795 3326
+3e16 3 744 3326
+3e19 f 800 3326
+FUNC 3e28 19a 0 _setmbcp
+3e28 c 572 3326
+3e34 4 573 3326
+3e38 a 577 3326
+3e42 5 579 3326
+3e47 3 580 3326
+3e4a b 582 3326
+3e55 9 584 3326
+3e5e d 590 3326
+3e6b 8 592 3326
+3e73 c 594 3326
+3e7f 3 605 3326
+3e82 16 610 3326
+3e98 1a 612 3326
+3eb2 7 613 3326
+3eb9 3 617 3326
+3ebc 9 618 3326
+3ec5 17 620 3326
+3edc 8 622 3326
+3ee4 4 623 3326
+3ee8 8 628 3326
+3ef0 8 629 3326
+3ef8 8 630 3326
+3f00 a 631 3326
+3f0a d 632 3326
+3f17 3 631 3326
+3f1a c 633 3326
+3f26 a 634 3326
+3f30 3 633 3326
+3f33 c 635 3326
+3f3f d 636 3326
+3f4c 3 635 3326
+3f4f 1c 638 3326
+3f6b 7 639 3326
+3f72 6 643 3326
+3f78 3 644 3326
+3f7b e 646 3326
+3f89 9 648 3326
+3f92 2 651 3326
+3f94 5 652 3326
+3f99 8 658 3326
+3fa1 7 659 3326
+3fa8 b 660 3326
+3fb3 2 666 3326
+3fb5 4 671 3326
+3fb9 3 680 3326
+3fbc 6 681 3326
+FUNC 3fc2 1e 0 __initmbctable
+3fc2 0 841 3326
+3fc2 9 851 3326
+3fcb 8 852 3326
+3fd3 a 853 3326
+3fdd 2 858 3326
+3fdf 1 859 3326
+FUNC 3fe0 53 0 x_ismbbtype_l
+3fe0 8 213 3271
+3fe8 b 214 3271
+3ff3 4 219 3271
+3ff7 3a 222 3271
+4031 2 223 3271
+FUNC 4033 18 0 _ismbblead
+4033 5 171 3271
+4038 11 172 3271
+4049 2 173 3271
+FUNC 404b 8f 0 __addlocaleref
+404b 7 36 1913
+4052 d 39 1913
+405f a 41 1913
+4069 3 42 1913
+406c a 44 1913
+4076 3 45 1913
+4079 a 47 1913
+4083 3 48 1913
+4086 a 50 1913
+4090 3 51 1913
+4093 a 53 1913
+409d f 55 1913
+40ac 3 56 1913
+40af d 59 1913
+40bc 3 60 1913
+40bf 8 53 1913
+40c7 11 63 1913
+40d8 2 64 1913
+FUNC 40da 99 0 __removelocaleref
+40da 6 74 1913
+40e0 b 77 1913
+40eb b 79 1913
+40f6 a 81 1913
+4100 3 82 1913
+4103 a 84 1913
+410d 3 85 1913
+4110 a 87 1913
+411a 3 88 1913
+411d a 90 1913
+4127 3 91 1913
+412a a 93 1913
+4134 f 95 1913
+4143 3 96 1913
+4146 d 99 1913
+4153 3 100 1913
+4156 8 93 1913
+415e 10 103 1913
+416e 3 106 1913
+4171 2 107 1913
+FUNC 4173 14b 0 __freetlocinfo
+4173 7 129 1913
+417a 25 137 1913
+419f e 140 1913
+41ad 6 142 1913
+41b3 d 143 1913
+41c0 e 147 1913
+41ce 6 149 1913
+41d4 d 150 1913
+41e1 b 153 1913
+41ec d 154 1913
+41f9 e 161 1913
+4207 11 163 1913
+4218 13 164 1913
+422b e 165 1913
+4239 e 166 1913
+4247 15 173 1913
+425c 6 175 1913
+4262 d 176 1913
+426f a 179 1913
+4279 13 182 1913
+428c 7 184 1913
+4293 10 192 1913
+42a3 7 194 1913
+42aa 8 179 1913
+42b2 a 201 1913
+42bc 2 202 1913
+FUNC 42be 4d 0 _updatetlocinfoEx_nolock
+42be 6 216 1913
+42c4 e 219 1913
+42d2 3 222 1913
+42d5 4 223 1913
+42d9 9 230 1913
+42e2 4 236 1913
+42e6 6 238 1913
+42ec e 248 1913
+42fa 7 249 1913
+4301 5 253 1913
+4306 3 220 1913
+4309 2 254 1913
+FUNC 430b 79 0 __updatetlocinfo
+430b c 281 1913
+4317 7 283 1913
+431e 10 285 1913
+432e 8 297 1913
+4336 4 300 1913
+433a 8 302 1913
+4342 2 305 1913
+4344 6 306 1913
+434a 8 286 1913
+4352 4 288 1913
+4356 14 290 1913
+436a e 292 1913
+4378 8 294 1913
+4380 4 295 1913
+FUNC 4384 8 0 _crt_debugger_hook
+4384 0 62 1145
+4384 7 65 1145
+438b 1 66 1145
+FUNC 4390 7a 0 memset
+4390 0 59 2789
+4390 4 68 2789
+4394 4 69 2789
+4398 2 71 2789
+439a 2 72 2789
+439c 2 74 2789
+439e 4 75 2789
+43a2 2 78 2789
+43a4 2 79 2789
+43a6 6 80 2789
+43ac 2 81 2789
+43ae 7 82 2789
+43b5 2 83 2789
+43b7 5 85 2789
+43bc 1 91 2789
+43bd 2 92 2789
+43bf 3 94 2789
+43c2 2 95 2789
+43c4 2 97 2789
+43c6 3 98 2789
+43c9 2 99 2789
+43cb 2 101 2789
+43cd 2 103 2789
+43cf 3 104 2789
+43d2 3 105 2789
+43d5 2 106 2789
+43d7 2 110 2789
+43d9 3 111 2789
+43dc 2 113 2789
+43de 2 115 2789
+43e0 3 117 2789
+43e3 2 119 2789
+43e5 2 122 2789
+43e7 3 123 2789
+43ea 3 124 2789
+43ed 2 125 2789
+43ef 2 127 2789
+43f1 2 129 2789
+43f3 2 130 2789
+43f5 2 134 2789
+43f7 3 135 2789
+43fa 3 137 2789
+43fd 2 138 2789
+43ff 4 142 2789
+4403 1 143 2789
+4404 1 145 2789
+4405 4 148 2789
+4409 1 150 2789
+FUNC 4410 95 0 _aulldvrm
+4410 0 45 2806
+4410 1 48 2806
+4411 4 80 2806
+4415 2 81 2806
+4417 2 82 2806
+4419 4 83 2806
+441d 4 84 2806
+4421 2 85 2806
+4423 2 86 2806
+4425 2 87 2806
+4427 4 88 2806
+442b 2 89 2806
+442d 2 90 2806
+442f 2 95 2806
+4431 4 96 2806
+4435 2 97 2806
+4437 2 98 2806
+4439 4 99 2806
+443d 2 100 2806
+443f 2 101 2806
+4441 2 108 2806
+4443 4 109 2806
+4447 4 110 2806
+444b 4 111 2806
+444f 2 113 2806
+4451 2 114 2806
+4453 2 115 2806
+4455 2 116 2806
+4457 2 117 2806
+4459 2 118 2806
+445b 2 119 2806
+445d 2 120 2806
+445f 4 129 2806
+4463 2 130 2806
+4465 4 131 2806
+4469 2 132 2806
+446b 2 133 2806
+446d 2 134 2806
+446f 4 142 2806
+4473 2 143 2806
+4475 2 144 2806
+4477 4 145 2806
+447b 2 146 2806
+447d 1 148 2806
+447e 4 149 2806
+4482 4 150 2806
+4486 2 152 2806
+4488 4 161 2806
+448c 4 162 2806
+4490 2 163 2806
+4492 2 164 2806
+4494 3 165 2806
+4497 2 170 2806
+4499 2 171 2806
+449b 2 172 2806
+449d 2 173 2806
+449f 2 174 2806
+44a1 1 180 2806
+44a2 3 182 2806
+FUNC 44b0 20 0 _global_unwind2
+FUNC 44d0 45 0 __unwind_handler
+FUNC 4515 84 0 _local_unwind2
+FUNC 4599 23 0 _abnormal_termination
+FUNC 45bc 9 0 _NLG_Notify1
+FUNC 45c5 1f 0 _NLG_Notify
+PUBLIC 45dc 0 _NLG_Dispatch2
+FUNC 45e4 3 0 _NLG_Call
+PUBLIC 45e6 0 _NLG_Return2
+FUNC 45e7 33 0 abort
+45e7 0 54 1011
+45e7 5 71 1011
+45ec 4 72 1011
+45f0 8 74 1011
+45f8 9 81 1011
+4601 11 83 1011
+4612 8 92 1011
+FUNC 4620 361 0 memcpy
+4620 3 101 2787
+4623 1 113 2787
+4624 1 114 2787
+4625 3 116 2787
+4628 3 117 2787
+462b 3 119 2787
+462e 2 129 2787
+4630 2 131 2787
+4632 2 132 2787
+4634 2 134 2787
+4636 2 135 2787
+4638 2 137 2787
+463a 6 138 2787
+4640 6 147 2787
+4646 2 148 2787
+4648 7 150 2787
+464f 2 151 2787
+4651 1 153 2787
+4652 1 154 2787
+4653 3 155 2787
+4656 3 156 2787
+4659 2 157 2787
+465b 1 158 2787
+465c 1 159 2787
+465d 2 160 2787
+465f 5 163 2787
+4664 6 176 2787
+466a 2 177 2787
+466c 3 179 2787
+466f 3 180 2787
+4672 3 182 2787
+4675 2 183 2787
+4677 2 185 2787
+4679 7 187 2787
+4680 2 205 2787
+4682 5 206 2787
+4687 3 208 2787
+468a 2 209 2787
+468c 3 211 2787
+468f 2 212 2787
+4691 7 214 2787
+4698 8 218 2787
+46a0 14 222 2787
+46b4 2 229 2787
+46b6 2 230 2787
+46b8 2 232 2787
+46ba 3 233 2787
+46bd 3 235 2787
+46c0 3 236 2787
+46c3 3 238 2787
+46c6 3 239 2787
+46c9 3 241 2787
+46cc 3 242 2787
+46cf 3 244 2787
+46d2 2 245 2787
+46d4 2 247 2787
+46d6 a 249 2787
+46e0 2 253 2787
+46e2 2 254 2787
+46e4 2 256 2787
+46e6 3 257 2787
+46e9 3 259 2787
+46ec 3 260 2787
+46ef 3 262 2787
+46f2 3 263 2787
+46f5 3 265 2787
+46f8 2 266 2787
+46fa 2 268 2787
+46fc 8 270 2787
+4704 2 274 2787
+4706 2 275 2787
+4708 2 277 2787
+470a 3 278 2787
+470d 3 280 2787
+4710 3 281 2787
+4713 3 283 2787
+4716 2 284 2787
+4718 2 286 2787
+471a 2a 288 2787
+4744 4 295 2787
+4748 4 297 2787
+474c 4 299 2787
+4750 4 301 2787
+4754 4 303 2787
+4758 4 305 2787
+475c 4 307 2787
+4760 4 309 2787
+4764 4 311 2787
+4768 4 313 2787
+476c 4 315 2787
+4770 4 317 2787
+4774 4 319 2787
+4778 4 321 2787
+477c 7 323 2787
+4783 2 325 2787
+4785 2 326 2787
+4787 19 328 2787
+47a0 3 337 2787
+47a3 1 338 2787
+47a4 1 339 2787
+47a5 3 341 2787
+47a8 2 345 2787
+47aa 2 347 2787
+47ac 3 348 2787
+47af 1 349 2787
+47b0 1 350 2787
+47b1 3 351 2787
+47b4 2 355 2787
+47b6 2 357 2787
+47b8 3 358 2787
+47bb 3 359 2787
+47be 3 360 2787
+47c1 1 361 2787
+47c2 1 362 2787
+47c3 5 363 2787
+47c8 2 367 2787
+47ca 2 369 2787
+47cc 3 370 2787
+47cf 3 371 2787
+47d2 3 372 2787
+47d5 3 373 2787
+47d8 3 374 2787
+47db 1 375 2787
+47dc 1 376 2787
+47dd 3 377 2787
+47e0 4 388 2787
+47e4 4 389 2787
+47e8 6 394 2787
+47ee 2 395 2787
+47f0 3 397 2787
+47f3 3 398 2787
+47f6 3 400 2787
+47f9 2 401 2787
+47fb 1 403 2787
+47fc 2 404 2787
+47fe 1 405 2787
+47ff 9 407 2787
+4808 2 411 2787
+480a a 414 2787
+4814 2 419 2787
+4816 5 420 2787
+481b 3 422 2787
+481e 2 423 2787
+4820 3 425 2787
+4823 2 426 2787
+4825 7 428 2787
+482c 14 432 2787
+4840 3 439 2787
+4843 2 440 2787
+4845 3 442 2787
+4848 3 443 2787
+484b 3 445 2787
+484e 3 446 2787
+4851 3 448 2787
+4854 2 449 2787
+4856 1 451 2787
+4857 2 452 2787
+4859 1 453 2787
+485a a 455 2787
+4864 3 459 2787
+4867 2 460 2787
+4869 3 462 2787
+486c 3 463 2787
+486f 3 465 2787
+4872 3 466 2787
+4875 3 468 2787
+4878 3 469 2787
+487b 3 471 2787
+487e 2 472 2787
+4880 1 474 2787
+4881 2 475 2787
+4883 1 476 2787
+4884 8 478 2787
+488c 3 482 2787
+488f 2 483 2787
+4891 3 485 2787
+4894 3 486 2787
+4897 3 488 2787
+489a 3 489 2787
+489d 3 491 2787
+48a0 3 492 2787
+48a3 3 494 2787
+48a6 3 495 2787
+48a9 3 497 2787
+48ac 6 498 2787
+48b2 1 500 2787
+48b3 2 501 2787
+48b5 1 502 2787
+48b6 2a 504 2787
+48e0 4 513 2787
+48e4 4 515 2787
+48e8 4 517 2787
+48ec 4 519 2787
+48f0 4 521 2787
+48f4 4 523 2787
+48f8 4 525 2787
+48fc 4 527 2787
+4900 4 529 2787
+4904 4 531 2787
+4908 4 533 2787
+490c 4 535 2787
+4910 4 537 2787
+4914 4 539 2787
+4918 7 541 2787
+491f 2 543 2787
+4921 2 544 2787
+4923 19 546 2787
+493c 3 555 2787
+493f 1 557 2787
+4940 1 558 2787
+4941 3 559 2787
+4944 3 563 2787
+4947 3 565 2787
+494a 3 566 2787
+494d 1 567 2787
+494e 1 568 2787
+494f 5 569 2787
+4954 3 573 2787
+4957 3 575 2787
+495a 3 576 2787
+495d 3 577 2787
+4960 3 578 2787
+4963 1 579 2787
+4964 1 580 2787
+4965 3 581 2787
+4968 3 585 2787
+496b 3 587 2787
+496e 3 588 2787
+4971 3 589 2787
+4974 3 590 2787
+4977 3 591 2787
+497a 3 592 2787
+497d 1 593 2787
+497e 1 594 2787
+497f 2 595 2787
+FUNC 4981 20 0 _freea
+4981 5 235 281
+4986 7 237 281
+498d 3 239 281
+4990 8 241 281
+4998 7 243 281
+499f 2 252 281
+FUNC 49a1 33 0 _msize
+49a1 5 39 561
+49a6 19 43 561
+49bf 2 50 561
+49c1 11 46 561
+49d2 2 50 561
+FUNC 49d4 9 0 _fptrap
+49d4 0 46 4123
+49d4 8 47 4123
+49dc 1 48 4123
+FUNC 49dd 106 0 __report_gsfailure
+49dd b 140 1392
+49e8 5 170 1392
+49ed 6 171 1392
+49f3 6 172 1392
+49f9 6 173 1392
+49ff 6 174 1392
+4a05 6 175 1392
+4a0b 7 176 1392
+4a12 7 177 1392
+4a19 7 178 1392
+4a20 7 179 1392
+4a27 7 180 1392
+4a2e 7 181 1392
+4a35 1 182 1392
+4a36 6 183 1392
+4a3c 3 190 1392
+4a3f 5 191 1392
+4a44 3 192 1392
+4a47 5 193 1392
+4a4c 3 194 1392
+4a4f 5 195 1392
+4a54 6 201 1392
+4a5a a 204 1392
+4a64 a 206 1392
+4a6e a 285 1392
+4a78 a 286 1392
+4a82 b 293 1392
+4a8d b 294 1392
+4a98 b 297 1392
+4aa3 8 298 1392
+4aab 8 302 1392
+4ab3 b 304 1392
+4abe 9 313 1392
+4ac7 8 315 1392
+4acf 12 319 1392
+4ae1 2 320 1392
+FUNC 4ae3 82 0 _calloc_impl
+4ae3 5 21 291
+4ae8 7 26 291
+4aef 19 28 291
+4b08 2 69 291
+4b0a 7 30 291
+4b11 4 34 291
+4b15 1 35 291
+4b16 2 39 291
+4b18 5 41 291
+4b1d f 44 291
+4b2c d 47 291
+4b39 b 59 291
+4b44 7 61 291
+4b4b 6 62 291
+4b51 4 63 291
+4b55 7 52 291
+4b5c 7 53 291
+4b63 2 69 291
+FUNC 4b65 ad 0 realloc
+4b65 5 62 618
+4b6a 6 67 618
+4b70 9 68 618
+4b79 3 117 618
+4b7c 7 71 618
+4b83 9 73 618
+4b8c 5 74 618
+4b91 2 109 618
+4b93 4 83 618
+4b97 1 84 618
+4b98 14 85 618
+4bac c 94 618
+4bb8 b 109 618
+4bc3 5 81 618
+4bc8 7 89 618
+4bcf b 90 618
+4bda 4 91 618
+4bde 2 117 618
+4be0 16 111 618
+4bf6 2 112 618
+4bf8 16 103 618
+4c0e 4 105 618
+FUNC 4c12 1e7 0 __crtLCMapStringA_stat
+4c12 12 96 3447
+4c24 c 101 3447
+4c30 17 102 3447
+4c47 4 106 3447
+4c4b 1 107 3447
+4c4c 3 109 3447
+4c4f 3 113 3447
+4c52 5 133 3447
+4c57 b 134 3447
+4c62 2c 145 3447
+4c8e 7 146 3447
+4c95 48 149 3447
+4cdd 3 150 3447
+4ce0 2 151 3447
+4ce2 19 160 3447
+4cfb 1f 169 3447
+4d1a a 172 3447
+4d24 b 175 3447
+4d2f 9 177 3447
+4d38 10 186 3447
+4d48 5 190 3447
+4d4d 4b 196 3447
+4d98 4 197 3447
+4d9c 16 207 3447
+4db2 9 220 3447
+4dbb 2 223 3447
+4dbd 17 233 3447
+4dd4 7 240 3447
+4ddb 8 242 3447
+4de3 4 244 3447
+4de7 12 245 3447
+FUNC 4df9 46 0 __crtLCMapStringA
+4df9 8 258 3447
+4e01 b 259 3447
+4e0c 31 271 3447
+4e3d 2 272 3447
+FUNC 4e3f e7 0 __crtGetStringTypeA_stat
+4e3f 12 63 3507
+4e51 7 67 3507
+4e58 5 83 3507
+4e5d b 84 3507
+4e68 29 95 3507
+4e91 4 96 3507
+4e95 3e 99 3507
+4ed3 2 100 3507
+4ed5 2 101 3507
+4ed7 f 103 3507
+4ee6 13 111 3507
+4ef9 11 116 3507
+4f0a 6 118 3507
+4f10 4 120 3507
+4f14 12 121 3507
+FUNC 4f26 40 0 __crtGetStringTypeA
+4f26 8 133 3507
+4f2e b 134 3507
+4f39 2b 145 3507
+4f64 2 146 3507
+FUNC 4f66 377 0 __free_lc_time
+4f66 6 228 1800
+4f6c b 229 1800
+4f77 8 232 1800
+4f7f 8 233 1800
+4f87 8 234 1800
+4f8f 8 235 1800
+4f97 8 236 1800
+4f9f 8 237 1800
+4fa7 7 238 1800
+4fae 8 240 1800
+4fb6 8 241 1800
+4fbe 8 242 1800
+4fc6 8 243 1800
+4fce 8 244 1800
+4fd6 8 245 1800
+4fde 8 246 1800
+4fe6 8 248 1800
+4fee b 249 1800
+4ff9 8 250 1800
+5001 8 251 1800
+5009 8 252 1800
+5011 8 253 1800
+5019 8 254 1800
+5021 8 255 1800
+5029 8 256 1800
+5031 8 257 1800
+5039 8 258 1800
+5041 8 259 1800
+5049 8 261 1800
+5051 8 262 1800
+5059 8 263 1800
+5061 8 264 1800
+5069 8 265 1800
+5071 b 266 1800
+507c b 267 1800
+5087 b 268 1800
+5092 b 269 1800
+509d b 270 1800
+50a8 b 271 1800
+50b3 b 272 1800
+50be b 274 1800
+50c9 b 275 1800
+50d4 b 277 1800
+50df b 278 1800
+50ea b 279 1800
+50f5 b 282 1800
+5100 b 283 1800
+510b b 284 1800
+5116 b 285 1800
+5121 e 286 1800
+512f b 287 1800
+513a b 288 1800
+5145 b 290 1800
+5150 b 291 1800
+515b b 292 1800
+5166 b 293 1800
+5171 b 294 1800
+517c b 295 1800
+5187 b 296 1800
+5192 b 298 1800
+519d b 299 1800
+51a8 b 300 1800
+51b3 b 301 1800
+51be b 302 1800
+51c9 b 303 1800
+51d4 e 304 1800
+51e2 b 305 1800
+51ed b 306 1800
+51f8 b 307 1800
+5203 b 308 1800
+520e b 309 1800
+5219 b 311 1800
+5224 b 312 1800
+522f b 313 1800
+523a b 314 1800
+5245 b 315 1800
+5250 b 316 1800
+525b b 317 1800
+5266 b 318 1800
+5271 b 319 1800
+527c b 320 1800
+5287 e 321 1800
+5295 b 322 1800
+52a0 b 324 1800
+52ab b 325 1800
+52b6 b 327 1800
+52c1 b 328 1800
+52cc f 329 1800
+52db 2 332 1800
+FUNC 52dd 69 0 __free_lconv_num
+52dd 6 218 1742
+52e3 7 219 1742
+52ea a 222 1742
+52f4 7 223 1742
+52fb b 225 1742
+5306 7 226 1742
+530d b 228 1742
+5318 7 229 1742
+531f b 231 1742
+532a 7 232 1742
+5331 b 234 1742
+533c 8 235 1742
+5344 2 236 1742
+FUNC 5346 fe 0 __free_lconv_mon
+5346 6 270 1685
+534c b 271 1685
+5357 b 274 1685
+5362 7 275 1685
+5369 b 277 1685
+5374 7 278 1685
+537b b 280 1685
+5386 7 281 1685
+538d b 283 1685
+5398 7 284 1685
+539f b 286 1685
+53aa 7 287 1685
+53b1 b 289 1685
+53bc 7 290 1685
+53c3 b 292 1685
+53ce 7 293 1685
+53d5 b 295 1685
+53e0 7 296 1685
+53e7 b 298 1685
+53f2 7 299 1685
+53f9 b 301 1685
+5404 7 302 1685
+540b b 304 1685
+5416 7 305 1685
+541d b 307 1685
+5428 7 308 1685
+542f b 310 1685
+543a 8 311 1685
+5442 2 312 1685
+FUNC 5444 ba 0 _VEC_memzero
+FUNC 54fe 10 0 __sse2_available_init
+54fe 0 30 4315
+54fe d 31 4315
+550b 2 32 4315
+550d 1 33 4315
+FUNC 550e 103 0 _VEC_memcpy
+FUNC 5620 2c 0 _alloca_probe_16
+5620 0 44 4274
+5620 1 46 4274
+5621 4 47 4274
+5625 2 48 4274
+5627 3 49 4274
+562a 2 50 4274
+562c 2 51 4274
+562e 2 52 4274
+5630 1 53 4274
+5631 5 54 4274
+5636 1 59 4274
+5637 4 60 4274
+563b 2 61 4274
+563d 3 62 4274
+5640 2 63 4274
+5642 2 64 4274
+5644 2 65 4274
+5646 1 66 4274
+5647 5 67 4274
+PUBLIC 5636 0 _alloca_probe_8
+FUNC 5650 34 0 _allmul
+5650 0 47 2803
+5650 4 63 2803
+5654 4 64 2803
+5658 2 65 2803
+565a 4 66 2803
+565e 2 67 2803
+5660 4 69 2803
+5664 2 70 2803
+5666 3 72 2803
+5669 1 75 2803
+566a 2 83 2803
+566c 2 84 2803
+566e 4 86 2803
+5672 4 87 2803
+5676 2 88 2803
+5678 4 90 2803
+567c 2 91 2803
+567e 2 92 2803
+5680 1 94 2803
+5681 3 96 2803
+FUNC 5690 2b 0 _chkstk
+5690 0 65 4276
+5690 1 69 4276
+5691 4 73 4276
+5695 2 74 4276
+5697 2 79 4276
+5699 2 80 4276
+569b 2 81 4276
+569d 2 83 4276
+569f 5 84 4276
+56a4 2 87 4276
+56a6 2 88 4276
+56a8 2 89 4276
+56aa 1 90 4276
+56ab 1 91 4276
+56ac 2 92 4276
+56ae 3 93 4276
+56b1 1 94 4276
+56b2 5 98 4276
+56b7 2 99 4276
+56b9 2 100 4276
+FUNC 56c0 46 0 strcspn
+56c0 4 191 2794
+56c4 2 198 2794
+56c6 1 199 2794
+56c7 1 200 2794
+56c8 1 201 2794
+56c9 1 202 2794
+56ca 1 203 2794
+56cb 1 204 2794
+56cc 1 205 2794
+56cd 1 206 2794
+56ce 6 212 2794
+56d4 2 216 2794
+56d6 2 217 2794
+56d8 2 218 2794
+56da 3 219 2794
+56dd 4 220 2794
+56e1 2 221 2794
+56e3 3 227 2794
+56e6 6 229 2794
+56ec 3 234 2794
+56ef 2 236 2794
+56f1 2 237 2794
+56f3 2 238 2794
+56f5 3 239 2794
+56f8 4 240 2794
+56fc 2 245 2794
+56fe 2 255 2794
+5700 3 257 2794
+5703 3 259 2794
+FUNC 5710 40 0 strpbrk
+5710 4 191 2794
+5714 2 198 2794
+5716 1 199 2794
+5717 1 200 2794
+5718 1 201 2794
+5719 1 202 2794
+571a 1 203 2794
+571b 1 204 2794
+571c 1 205 2794
+571d 1 206 2794
+571e 6 212 2794
+5724 2 216 2794
+5726 2 217 2794
+5728 2 218 2794
+572a 3 219 2794
+572d 4 220 2794
+5731 2 221 2794
+5733 5 227 2794
+5738 2 236 2794
+573a 2 237 2794
+573c 2 238 2794
+573e 3 239 2794
+5741 4 240 2794
+5745 2 247 2794
+5747 3 248 2794
+574a 3 257 2794
+574d 3 259 2794
+FUNC 5750 61 0 __ascii_strnicmp
+5750 6 69 2798
+5756 3 75 2798
+5759 2 76 2798
+575b 2 77 2798
+575d 3 79 2798
+5760 3 80 2798
+5763 2 82 2798
+5765 2 83 2798
+5767 5 84 2798
+576c 2 89 2798
+576e 2 91 2798
+5770 2 93 2798
+5772 2 95 2798
+5774 2 97 2798
+5776 2 98 2798
+5778 3 100 2798
+577b 3 101 2798
+577e 2 103 2798
+5780 2 104 2798
+5782 2 106 2798
+5784 2 107 2798
+5786 2 109 2798
+5788 2 112 2798
+578a 2 113 2798
+578c 2 115 2798
+578e 2 116 2798
+5790 2 118 2798
+5792 2 121 2798
+5794 2 122 2798
+5796 3 124 2798
+5799 2 125 2798
+579b 2 128 2798
+579d 2 129 2798
+579f 2 130 2798
+57a1 5 133 2798
+57a6 2 134 2798
+57a8 2 135 2798
+57aa 2 138 2798
+57ac 5 140 2798
+PUBLIC 57b2 10 RtlUnwind
+STACK WIN 4 1000 54 6 0 8 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1060 a 3 0 0 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1070 21 7 0 0 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 10a0 14 7 0 0 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 10c0 16 7 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 10e0 1e 7 0 0 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1100 10 7 0 0 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1110 7 3 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1120 2c 7 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 114c 10 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 115c 21 8 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1162 17 2 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 117d b 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1188 29 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 11b1 161 c 0 0 10 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ =  $24 $T0 48 - ^ = 
+STACK WIN 4 12d4 14 0 0 0 10 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 1312 a 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 131c 70 c 0 4 10 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 32 - ^ =  $23 $T0 36 - ^ =  $24 $T0 40 - ^ = 
+STACK WIN 4 1383 8 0 0 4 10 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 1418 3a 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1439 17 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 1452 42 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1494 e 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 14a2 2b 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 14cd 18 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 14e5 9 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 14ee 9 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 14f7 33 3 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 14fa 2f 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 152a 24 6 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1530 1c 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 154e 97 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1590 34 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 1591 32 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 15e5 140 c 0 c 10 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 52 - ^ =  $23 $T0 56 - ^ =  $24 $T0 60 - ^ = 
+STACK WIN 4 1710 e 0 0 c 10 30 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 1725 16 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 173b 16 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1751 f 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 1760 f 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 176f 1e 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 178d 26 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 17b3 1af 1b 0 4 0 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 17c9 192 5 0 4 4 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ = 
+STACK WIN 4 17ca 18e 4 0 4 8 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ = 
+STACK WIN 4 17ce 189 0 0 4 c 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ =  $24 $T0 520 - ^ = 
+STACK WIN 4 1962 39 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 199b 14a 6 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 19a1 142 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 19b9 129 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 1a0a d4 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ =  $20 $T0 12 - ^ = 
+STACK WIN 4 1ae5 dc 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 1af4 a8 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 1afb a0 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 1b3d 5d 0 0 0 c 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ =  $20 $T0 12 - ^ = 
+STACK WIN 4 1bc1 19a d 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1bcb 185 3 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 1bce 181 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 1d5b bb d 0 0 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1d64 b0 4 0 0 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ = 
+STACK WIN 4 1d67 ac 1 0 0 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ = 
+STACK WIN 4 1d68 aa 0 0 0 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ =  $24 $T0 24 - ^ = 
+STACK WIN 4 1e16 97 a 0 0 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1e1f 8c 1 0 0 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ = 
+STACK WIN 4 1e20 8a 0 0 0 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ = 
+STACK WIN 4 1e48 61 0 0 0 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ =  $24 $T0 24 - ^ = 
+STACK WIN 4 1ead 245 9 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1eb6 235 0 0 0 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ = 
+STACK WIN 4 1f27 1c3 0 0 0 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ = 
+STACK WIN 4 1f28 1c1 0 0 0 c 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ =  $24 $T0 88 - ^ = 
+STACK WIN 4 20f2 26 e 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 20f5 22 b 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2100 16 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 2118 26 e 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 211b 22 b 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2126 16 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 213e 9 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 2147 9 0 0 4 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 2150 34 3 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 2153 30 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2184 3d 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 21c1 b4 c 0 8 10 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ =  $24 $T0 36 - ^ = 
+STACK WIN 4 225d e 0 0 8 10 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 226c 8 0 0 8 10 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 2275 79 4 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 2278 75 1 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2279 71 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 22ee 1a 3 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 22f1 16 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2308 12f c 0 4 10 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ =  $24 $T0 36 - ^ = 
+STACK WIN 4 241f b 0 0 4 10 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 242b b 0 0 4 10 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 2437 17b 3 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 243a 177 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 2455 15b 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $24 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 25b2 1e 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 2630 18f 17 0 10 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2639 c9 e 0 10 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ = 
+STACK WIN 4 263d c4 a 0 10 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ = 
+STACK WIN 4 2647 b9 0 0 10 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ =  $24 $T0 36 - ^ = 
+STACK WIN 4 27bf 9b 17 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 27d5 83 1 0 0 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ = 
+STACK WIN 4 27d6 81 0 0 0 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $24 $T0 24 - ^ = 
+STACK WIN 4 27f2 64 0 0 0 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $24 $T0 24 - ^ =  $23 $T0 28 - ^ = 
+STACK WIN 4 285a f 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2869 129 1a 0 c 8 328 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 812 - ^ =  $24 $T0 816 - ^ = 
+STACK WIN 4 2992 25 3 0 14 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 2995 21 0 0 14 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 29b7 2d 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 29e4 10 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 29f4 4a 4 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 29f7 3a 1 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 29f8 38 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 2a3e 57 a 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 2a41 53 7 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 2a48 4b 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 2a4e 2a 0 0 0 c 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 2a95 17 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2aac c2 c 0 4 10 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 32 - ^ =  $23 $T0 36 - ^ =  $24 $T0 40 - ^ = 
+STACK WIN 4 2b65 8 0 0 4 10 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 2b6e 33 9 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2b77 28 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2ba1 5f a 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2baa 54 1 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2bab 52 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 2c8b 94 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2c91 8c 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 2c9a 6c 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 2c9b 6a 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 2e72 42 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2eb4 13 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 2ec7 39 c 0 0 10 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ =  $24 $T0 36 - ^ = 
+STACK WIN 4 2ee7 4 0 0 0 10 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 2f00 11 0 0 4 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 2f11 1e 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2f2f 37 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2f3e 1b 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2f66 d 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 2f73 1a3 c 0 4 10 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 52 - ^ =  $23 $T0 56 - ^ =  $24 $T0 60 - ^ = 
+STACK WIN 4 30d4 14 0 0 4 10 30 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 3116 f 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3125 f 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3134 f 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3143 28 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 316b b6 f 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3172 ad 8 0 4 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 3173 ab 7 0 4 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 317a a3 0 0 4 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ =  $24 $T0 16 - ^ = 
+STACK WIN 4 3221 31 3 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 3224 2d 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 3252 3c c 0 4 10 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 32 - ^ =  $23 $T0 36 - ^ =  $24 $T0 40 - ^ = 
+STACK WIN 4 3288 5 0 0 4 10 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 328e 17 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 32a5 23 4 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 32a8 1f 1 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 32a9 1d 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 32d0 35 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3310 44 1a 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3322 30 8 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 3323 2e 7 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 332a 26 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 3360 bc 35 0 4 10 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ =  $24 $T0 36 - ^ = 
+STACK WIN 4 33eb 13 0 0 4 10 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 341c 16c 1e 0 c 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3432 14f 8 0 c 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ = 
+STACK WIN 4 3439 145 1 0 c 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ = 
+STACK WIN 4 343a 143 0 0 c c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ =  $24 $T0 48 - ^ = 
+STACK WIN 4 3588 75 a 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 358e 22 4 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 3592 1d 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 35fd cd e 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3606 17 5 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 360a 28 1 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 360b 10 0 0 10 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 36ca 1b 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 36e5 63 a 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 36eb 22 4 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 36ef 1d 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 3748 3f 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3787 f 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 3796 45 7 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 379c 3d 1 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 379d 3b 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 37db 4c 7 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 37e1 44 1 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 37e2 42 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 3827 4e 7 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 382d 46 1 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 382e 44 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 3875 2f 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 38a4 64 6 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 38a7 60 3 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 38a8 5e 2 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 3908 190 17 0 0 0 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 391e 173 1 0 0 4 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ = 
+STACK WIN 4 391f 16f 0 0 0 8 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ =  $24 $T0 1316 - ^ = 
+STACK WIN 4 3a98 a4 c 0 0 10 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 32 - ^ =  $23 $T0 36 - ^ =  $24 $T0 40 - ^ = 
+STACK WIN 4 3b30 b 0 0 0 10 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 3b3c 87 b 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3b45 7a 2 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 3bc3 7c 9 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3bcc 71 0 0 0 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ = 
+STACK WIN 4 3c3f 1e9 1b 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3c52 1cf 8 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ = 
+STACK WIN 4 3c56 1c8 4 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ = 
+STACK WIN 4 3c5a 1c3 0 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ =  $24 $T0 44 - ^ = 
+STACK WIN 4 3e28 19a c 0 4 10 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ =  $24 $T0 48 - ^ = 
+STACK WIN 4 3f89 8 0 0 4 10 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 3fc2 1e 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 3fe0 53 8 0 10 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4033 18 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 404b 8f e 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4051 87 8 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 4052 85 7 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 4059 7d 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 40da 99 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 40e0 91 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 40ec 82 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ =  $20 $T0 8 - ^ = 
+STACK WIN 4 40ed 80 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 4173 14b 13 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4179 143 d 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 417a 141 c 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 4186 134 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 42be 4d 6 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 42c4 45 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 42d3 31 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 430b 79 c 0 0 10 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 32 - ^ =  $23 $T0 36 - ^ =  $24 $T0 40 - ^ = 
+STACK WIN 4 4378 8 0 0 0 10 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 4384 8 0 0 4 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 45e7 33 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 4981 20 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 49a1 33 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 49d4 9 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 49dd 106 b 0 0 0 328 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4ae3 82 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4b0f 54 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 4b65 ad 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4b7c 62 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 4b91 4c 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 4c12 1e7 1a 0 24 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $23 $T0 24 - ^ =  $24 $T0 28 - ^ = 
+STACK WIN 4 4df9 46 8 0 24 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4e3f e7 16 0 1c c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 12 - ^ =  $23 $T0 16 - ^ =  $24 $T0 20 - ^ = 
+STACK WIN 4 4f26 40 8 0 20 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4f66 377 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4f6c 36f 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 52dd 69 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 52e3 61 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 5346 fe 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 534c f6 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 5444 ba 0 0 c 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 54fe 10 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 550e 103 0 0 c 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 0 12d4 14 0 0 0 0 0 0 0 0
+STACK WIN 0 1383 9 0 0 0 0 0 0 0 0
+STACK WIN 0 1390 88 0 0 8 0 0 0 0 0
+STACK WIN 0 1710 f 0 0 0 0 0 0 0 0
+STACK WIN 0 225d f 0 0 0 0 0 0 0 0
+STACK WIN 0 226c 9 0 0 0 0 0 0 0 0
+STACK WIN 0 241f c 0 0 0 0 0 0 0 0
+STACK WIN 0 242b c 0 0 0 0 0 0 0 0
+STACK WIN 0 2b65 9 0 0 0 0 0 0 0 0
+STACK WIN 0 2c00 8b 0 0 4 0 0 0 0 0
+STACK WIN 0 2d20 90 3 0 c c 0 0 0 0
+STACK WIN 0 2db0 46 0 0 10 4 0 0 0 1
+STACK WIN 0 2e12 17 4 0 0 10 0 0 0 1
+STACK WIN 0 2e29 19 0 0 0 0 0 0 0 0
+STACK WIN 0 2e5b 17 1 0 8 4 0 0 0 1
+STACK WIN 0 2ee7 4 0 0 0 0 0 0 0 0
+STACK WIN 0 30d4 15 0 0 0 0 0 0 0 0
+STACK WIN 0 3288 6 0 0 0 0 0 0 0 0
+STACK WIN 0 33eb 13 0 0 0 0 0 0 0 0
+STACK WIN 0 3b30 c 0 0 0 0 0 0 0 0
+STACK WIN 0 3f89 9 0 0 0 0 0 0 0 0
+STACK WIN 0 4378 9 0 0 0 0 0 0 0 0
+STACK WIN 0 4390 7a 0 0 c 0 0 0 0 0
+STACK WIN 0 4410 95 0 0 10 0 4 0 0 0
+STACK WIN 0 4515 84 3 0 8 c 0 0 0 0
+STACK WIN 0 4599 23 0 0 0 0 0 0 0 0
+STACK WIN 0 45e4 3 0 0 0 0 0 0 0 0
+STACK WIN 0 5650 1a 0 0 10 0 0 0 0 0
+STACK WIN 0 566a 1a 0 0 10 0 4 0 0 0
diff --git a/google-breakpad/src/tools/windows/dump_syms/testdata/dump_syms_regtest64.pdb b/google-breakpad/src/tools/windows/dump_syms/testdata/dump_syms_regtest64.pdb
new file mode 100644
index 0000000..86d362e
--- /dev/null
+++ b/google-breakpad/src/tools/windows/dump_syms/testdata/dump_syms_regtest64.pdb
Binary files differ
diff --git a/google-breakpad/src/tools/windows/dump_syms/testdata/dump_syms_regtest64.sym b/google-breakpad/src/tools/windows/dump_syms/testdata/dump_syms_regtest64.sym
new file mode 100644
index 0000000..6f5cd1b
--- /dev/null
+++ b/google-breakpad/src/tools/windows/dump_syms/testdata/dump_syms_regtest64.sym
@@ -0,0 +1,4561 @@
+MODULE windows x86_64 72E103A85CB249078B76B2E7C06257B13 dump_syms_regtest64.pdb
+INFO CODE_ID 5357F5C01A000 dump_syms_regtest64.exe
+FILE 1 d:\src\breakpad\src\tools\windows\dump_syms\testdata\dump_syms_regtest64.cc
+FILE 2 f:\dd\vctools\crt\crtw32\misc\amd64\amdsecgs.asm
+FILE 3 f:\dd\ExternalAPIs\Windows\WinBlue\sdk\inc\ksamd64.inc
+FILE 4 f:\dd\ExternalAPIs\Windows\WinBlue\sdk\inc\kxamd64.inc
+FILE 5 f:\dd\ExternalAPIs\Windows\WinBlue\sdk\inc\macamd64.inc
+FILE 6 f:\dd\vctools\crt\crtw32\misc\amd64\chandler.c
+FILE 7 f:\dd\externalapis\windows\winblue\sdk\inc\pshpack8.h
+FILE 8 f:\dd\vctools\crt\crtw32\h\excpt.h
+FILE 9 f:\dd\externalapis\windows\winblue\sdk\inc\ktmtypes.h
+FILE 10 f:\dd\externalapis\windows\winblue\sdk\inc\winternl.h
+FILE 11 f:\dd\externalapis\windows\winblue\sdk\inc\winapifamily.h
+FILE 12 f:\dd\externalapis\windows\winblue\sdk\inc\windef.h
+FILE 13 f:\dd\externalapis\windows\winblue\sdk\inc\minwindef.h
+FILE 14 f:\dd\externalapis\windows\winblue\sdk\inc\specstrings.h
+FILE 15 f:\dd\externalapis\windows\winblue\sdk\inc\specstrings_strict.h
+FILE 16 f:\dd\externalapis\windows\winblue\sdk\inc\specstrings_undef.h
+FILE 17 f:\dd\externalapis\windows\winblue\sdk\inc\driverspecs.h
+FILE 18 f:\dd\externalapis\windows\winblue\sdk\inc\sdv_driverspecs.h
+FILE 19 f:\dd\externalapis\windows\winblue\sdk\inc\apiset.h
+FILE 20 f:\dd\vctools\inc\vcwininternls.h
+FILE 21 f:\dd\tools\devdiv\inc\ddbanned.h
+FILE 22 f:\dd\vctools\crt\crtw32\h\vadefs.h
+FILE 23 f:\dd\vctools\crt\crtw32\h\cruntime.h
+FILE 24 f:\dd\vctools\crt\crtw32\h\sal.h
+FILE 25 f:\dd\vctools\crt\crtw32\h\concurrencysal.h
+FILE 26 f:\dd\externalapis\windows\winblue\sdk\inc\guiddef.h
+FILE 27 f:\dd\externalapis\windows\winblue\sdk\inc\winnt.h
+FILE 28 f:\dd\externalapis\windows\winblue\sdk\inc\kernelspecs.h
+FILE 29 f:\dd\externalapis\windows\winblue\sdk\inc\basetsd.h
+FILE 30 f:\dd\vctools\crt\crtw32\h\ctype.h
+FILE 31 f:\dd\vctools\crt\crtw32\h\crtdefs.h
+FILE 32 f:\dd\vctools\crt\crtw32\h\string.h
+FILE 33 f:\dd\externalapis\windows\winblue\sdk\inc\pshpack2.h
+FILE 34 f:\dd\externalapis\windows\winblue\sdk\inc\pshpack4.h
+FILE 35 f:\dd\externalapis\windows\winblue\sdk\inc\sdkddkver.h
+FILE 36 f:\dd\externalapis\windows\winblue\sdk\inc\poppack.h
+FILE 37 f:\dd\vctools\crt\crtw32\misc\amd64\gshandler.c
+FILE 58 f:\dd\vctools\crt\crtw32\h\process.h
+FILE 69 f:\dd\vctools\crt\crtw32\misc\amd64\jmpuwind.asm
+FILE 73 f:\dd\externalapis\windows\winblue\sdk\inc\processtopologyapi.h
+FILE 74 f:\dd\externalapis\windows\winblue\sdk\inc\securityappcontainer.h
+FILE 75 f:\dd\externalapis\windows\winblue\sdk\inc\pshpack1.h
+FILE 76 f:\dd\externalapis\windows\winblue\sdk\inc\realtimeapiset.h
+FILE 77 f:\dd\externalapis\windows\winblue\sdk\inc\profileapi.h
+FILE 78 f:\dd\externalapis\windows\winblue\sdk\inc\timezoneapi.h
+FILE 79 f:\dd\externalapis\windows\winblue\sdk\inc\jobapi.h
+FILE 80 f:\dd\externalapis\windows\winblue\sdk\inc\heapapi.h
+FILE 82 f:\dd\externalapis\windows\winblue\sdk\inc\wincon.h
+FILE 83 f:\dd\externalapis\windows\winblue\sdk\inc\wow64apiset.h
+FILE 85 f:\dd\externalapis\windows\winblue\sdk\inc\threadpoolapiset.h
+FILE 87 f:\dd\externalapis\windows\winblue\sdk\inc\winver.h
+FILE 88 f:\dd\externalapis\windows\winblue\sdk\inc\debugapi.h
+FILE 89 f:\dd\externalapis\windows\winblue\sdk\inc\winnetwk.h
+FILE 90 f:\dd\externalapis\windows\winblue\sdk\inc\verrsrc.h
+FILE 91 f:\dd\externalapis\windows\winblue\sdk\inc\wnnc.h
+FILE 92 f:\dd\externalapis\windows\winblue\sdk\inc\libloaderapi.h
+FILE 93 f:\dd\externalapis\windows\winblue\sdk\inc\fibersapi.h
+FILE 94 f:\dd\vctools\langapi\include\isa_availability.h
+FILE 95 f:\dd\vctools\crt\crtw32\convert\_fptostr.c
+FILE 96 f:\dd\externalapis\windows\winblue\sdk\inc\winnls.h
+FILE 97 f:\dd\externalapis\windows\winblue\sdk\inc\datetimeapi.h
+FILE 98 f:\dd\externalapis\windows\winblue\sdk\inc\securitybaseapi.h
+FILE 99 f:\dd\externalapis\windows\winblue\sdk\inc\namedpipeapi.h
+FILE 103 f:\dd\vctools\crt\crtw32\h\stddef.h
+FILE 104 f:\dd\externalapis\windows\winblue\sdk\inc\fileapi.h
+FILE 105 f:\dd\vctools\crt\crtw32\h\internal.h
+FILE 106 f:\dd\externalapis\windows\winblue\sdk\inc\interlockedapi.h
+FILE 107 f:\dd\externalapis\windows\winblue\sdk\inc\utilapiset.h
+FILE 108 f:\dd\vctools\crt\crtw32\h\limits.h
+FILE 110 f:\dd\externalapis\windows\winblue\sdk\inc\windows.h
+FILE 111 f:\dd\externalapis\windows\winblue\sdk\inc\processenv.h
+FILE 115 f:\dd\vctools\crt\crtw32\h\fltintrn.h
+FILE 116 f:\dd\externalapis\windows\winblue\sdk\inc\stringapiset.h
+FILE 118 f:\dd\externalapis\windows\winblue\sdk\inc\stralign.h
+FILE 121 f:\dd\externalapis\windows\winblue\sdk\inc\memoryapi.h
+FILE 124 f:\dd\externalapis\windows\winblue\sdk\inc\mcx.h
+FILE 125 f:\dd\externalapis\windows\winblue\sdk\inc\processthreadsapi.h
+FILE 126 f:\dd\externalapis\windows\winblue\sdk\inc\handleapi.h
+FILE 128 f:\dd\externalapis\windows\winblue\sdk\inc\tvout.h
+FILE 129 f:\dd\externalapis\windows\winblue\sdk\inc\winreg.h
+FILE 130 f:\dd\externalapis\windows\winblue\sdk\inc\reason.h
+FILE 131 f:\dd\externalapis\windows\winblue\sdk\inc\consoleapi.h
+FILE 132 f:\dd\externalapis\windows\winblue\sdk\inc\wingdi.h
+FILE 133 f:\dd\externalapis\windows\winblue\sdk\inc\synchapi.h
+FILE 134 f:\dd\externalapis\windows\winblue\sdk\inc\winbase.h
+FILE 135 f:\dd\externalapis\windows\winblue\sdk\inc\apisetcconv.h
+FILE 137 f:\dd\externalapis\windows\winblue\sdk\inc\minwinbase.h
+FILE 140 f:\dd\externalapis\windows\winblue\sdk\inc\namespaceapi.h
+FILE 141 f:\dd\vctools\crt\crtw32\h\crtdbg.h
+FILE 142 f:\dd\externalapis\windows\winblue\sdk\inc\bemapiset.h
+FILE 143 f:\dd\externalapis\windows\winblue\sdk\inc\threadpoollegacyapiset.h
+FILE 144 f:\dd\externalapis\windows\winblue\sdk\inc\ime_cmodes.h
+FILE 145 f:\dd\vctools\crt\crtw32\h\mtdll.h
+FILE 146 f:\dd\externalapis\windows\winblue\sdk\inc\winuser.h
+FILE 147 f:\dd\externalapis\windows\winblue\sdk\inc\errhandlingapi.h
+FILE 148 f:\dd\vctools\crt\crtw32\h\stdarg.h
+FILE 156 f:\dd\externalapis\windows\winblue\sdk\inc\imm.h
+FILE 158 f:\dd\externalapis\windows\winblue\sdk\inc\ioapiset.h
+FILE 160 f:\dd\vctools\crt\crtw32\h\errno.h
+FILE 161 f:\dd\externalapis\windows\winblue\sdk\inc\winerror.h
+FILE 162 f:\dd\externalapis\windows\winblue\sdk\inc\systemtopologyapi.h
+FILE 163 f:\dd\externalapis\windows\winblue\sdk\inc\sysinfoapi.h
+FILE 181 f:\dd\vctools\crt\crtw32\convert\atox.c
+FILE 208 f:\dd\vctools\crt\crtw32\h\setlocal.h
+FILE 211 f:\dd\vctools\crt\crtw32\h\oscalls.h
+FILE 212 f:\dd\vctools\crt\crtw32\h\mbctype.h
+FILE 218 f:\dd\vctools\crt\crtw32\h\tchar.h
+FILE 220 f:\dd\vctools\crt\crtw32\h\mbstring.h
+FILE 231 f:\dd\vctools\crt\crtw32\h\stdlib.h
+FILE 255 f:\dd\vctools\crt\crtw32\convert\wchtodig.c
+FILE 256 f:\dd\vctools\crt\crtw32\h\wchar.h
+FILE 263 f:\dd\vctools\crt\crtw32\h\swprintf.inl
+FILE 264 f:\dd\vctools\crt\crtw32\h\wtime.inl
+FILE 283 f:\dd\vctools\crt\crtw32\convert\wtox.c
+FILE 377 f:\dd\vctools\crt\crtw32\convert\xtows.c
+FILE 384 f:\dd\vctools\crt\crtw32\h\internal_securecrt.h
+FILE 385 f:\dd\vctools\crt\crtw32\convert\xtoa.c
+FILE 480 f:\dd\vctools\crt\crtw32\dos\dosmap.c
+FILE 556 f:\dd\vctools\crt\crtw32\h\dbgint.h
+FILE 566 f:\dd\vctools\crt\crtw32\heap\calloc_impl.c
+FILE 576 f:\dd\vctools\crt\crtw32\h\rtcsup.h
+FILE 581 f:\dd\vctools\crt\crtw32\h\rtcapi.h
+FILE 583 f:\dd\vctools\crt\crtw32\h\malloc.h
+FILE 597 f:\dd\vctools\crt\crtw32\h\winheap.h
+FILE 658 f:\dd\vctools\crt\crtw32\heap\crtheap.c
+FILE 716 f:\dd\vctools\crt\crtw32\h\awint.h
+FILE 744 f:\dd\vctools\crt\crtw32\heap\free.c
+FILE 828 f:\dd\vctools\crt\crtw32\heap\heapinit.c
+FILE 930 f:\dd\vctools\crt\crtw32\heap\malloc.c
+FILE 997 f:\dd\vctools\crt\crtw32\h\rterr.h
+FILE 1027 f:\dd\vctools\crt\crtw32\heap\msize.c
+FILE 1111 f:\dd\vctools\crt\crtw32\heap\realloc.c
+FILE 1206 f:\dd\vctools\crt\crtw32\heap\recalloc.c
+FILE 1307 f:\dd\vctools\crt\crtw32\heap\_newmode.c
+FILE 1396 f:\dd\vctools\crt\crtw32\lowio\close.c
+FILE 1444 f:\dd\vctools\crt\crtw32\h\msdos.h
+FILE 1451 f:\dd\vctools\crt\crtw32\h\io.h
+FILE 1490 f:\dd\vctools\crt\crtw32\lowio\commit.c
+FILE 1584 f:\dd\vctools\crt\crtw32\lowio\ioinit.c
+FILE 1677 f:\dd\vctools\crt\crtw32\lowio\isatty.c
+FILE 1769 f:\dd\vctools\crt\crtw32\lowio\lseeki64.c
+FILE 1804 f:\dd\vctools\crt\crtw32\h\stdio.h
+FILE 1865 f:\dd\vctools\crt\crtw32\lowio\osfinfo.c
+FILE 1909 f:\dd\vctools\crt\crtw32\h\fcntl.h
+FILE 1964 f:\dd\vctools\crt\crtw32\lowio\write.c
+FILE 1974 f:\dd\vctools\crt\crtw32\h\locale.h
+FILE 2057 f:\dd\vctools\crt\crtw32\lowio\initcon.c
+FILE 2072 f:\dd\vctools\crt\crtw32\h\sect_attribs.h
+FILE 2139 f:\dd\vctools\crt\crtw32\h\file2.h
+FILE 2149 f:\dd\vctools\crt\crtw32\lowio\putwch.c
+FILE 2199 f:\dd\vctools\crt\crtw32\h\conio.h
+FILE 2246 f:\dd\vctools\crt\crtw32\misc\amd64\loadcfg.c
+FILE 2325 f:\dd\vctools\crt\crtw32\misc\abort.c
+FILE 2334 f:\dd\vctools\crt\crtw32\h\signal.h
+FILE 2424 f:\dd\vctools\crt\crtw32\misc\ctype.c
+FILE 2495 f:\dd\vctools\crt\crtw32\misc\dbghook.c
+FILE 2522 f:\dd\vctools\crt\crtw32\misc\errmode.c
+FILE 2602 f:\dd\vctools\crt\crtw32\misc\getqloc.c
+FILE 2706 f:\dd\vctools\crt\crtw32\misc\glstatus.c
+FILE 2794 f:\dd\vctools\crt\crtw32\misc\gs_cookie.c
+FILE 2878 f:\dd\vctools\crt\crtw32\misc\gs_report.c
+FILE 2962 f:\binaries.amd64ret\interapiscandidates\vctools\inc\vc\immintrin.h
+FILE 2963 f:\binaries.amd64ret\interapiscandidates\vctools\inc\vc\wmmintrin.h
+FILE 2964 f:\binaries.amd64ret\interapiscandidates\vctools\inc\vc\nmmintrin.h
+FILE 2965 f:\binaries.amd64ret\interapiscandidates\vctools\inc\vc\smmintrin.h
+FILE 2966 f:\binaries.amd64ret\interapiscandidates\vctools\inc\vc\tmmintrin.h
+FILE 2967 f:\binaries.amd64ret\interapiscandidates\vctools\inc\vc\pmmintrin.h
+FILE 2969 f:\binaries.amd64ret\interapiscandidates\vctools\inc\vc\emmintrin.h
+FILE 2970 f:\binaries.amd64ret\interapiscandidates\vctools\inc\vc\xmmintrin.h
+FILE 2971 f:\binaries.amd64ret\interapiscandidates\vctools\inc\vc\mmintrin.h
+FILE 2974 f:\dd\vctools\crt\crtw32\misc\gs_support.c
+FILE 3018 f:\binaries.amd64ret\interapiscandidates\vctools\inc\vc\ammintrin.h
+FILE 3023 f:\dd\vctools\crt\crtw32\h\intrin.h
+FILE 3024 f:\dd\vctools\crt\crtw32\h\setjmp.h
+FILE 3061 f:\dd\vctools\crt\crtw32\misc\initcoll.c
+FILE 3147 f:\dd\vctools\crt\crtw32\misc\initctyp.c
+FILE 3233 f:\dd\vctools\crt\crtw32\misc\inithelp.c
+FILE 3335 f:\dd\vctools\crt\crtw32\misc\initmon.c
+FILE 3420 f:\dd\vctools\crt\crtw32\misc\initnum.c
+FILE 3462 f:\dd\vctools\crt\crtw32\h\nlsint.h
+FILE 3520 f:\dd\vctools\crt\crtw32\misc\inittime.c
+FILE 3613 f:\dd\vctools\crt\crtw32\misc\lconv.c
+FILE 3702 f:\dd\vctools\crt\crtw32\misc\localref.c
+FILE 3795 f:\dd\vctools\crt\crtw32\misc\onexit.c
+FILE 3889 f:\dd\vctools\crt\crtw32\misc\nlsdata.c
+FILE 3978 f:\dd\vctools\crt\crtw32\misc\pesect.c
+FILE 4060 f:\dd\vctools\crt\crtw32\misc\purevirt.c
+FILE 4150 f:\dd\vctools\crt\crtw32\misc\winsig.c
+FILE 4218 f:\dd\vctools\crt\crtw32\h\float.h
+FILE 4220 f:\dd\vctools\crt\crtw32\h\crtwrn.h
+FILE 4248 f:\dd\vctools\crt\crtw32\misc\winapinls.c
+FILE 4282 f:\dd\vctools\crt\crtw32\h\nlsdownlevel.h
+FILE 4340 f:\dd\vctools\crt\crtw32\misc\winapisupp.c
+FILE 4354 f:\dd\externalapis\windows\winblue\sdk\inc\appmodel.h
+FILE 4355 f:\dd\externalapis\windows\winblue\sdk\inc\minappmodel.h
+FILE 4434 f:\dd\vctools\crt\crtw32\misc\winxfltr.c
+FILE 4530 f:\dd\vctools\crt\crtw32\misc\wsetloca.c
+FILE 4628 f:\dd\vctools\crt\crtw32\misc\rand_s.c
+FILE 4640 f:\dd\externalapis\windows\winblue\sdk\inc\ntsecapi.h
+FILE 4690 f:\dd\externalapis\windows\winblue\sdk\inc\lsalookup.h
+FILE 4721 f:\dd\vctools\crt\crtw32\misc\a_env.c
+FILE 4803 f:\dd\vctools\crt\crtw32\misc\getqloc_downlevel.c
+FILE 4901 f:\dd\vctools\crt\crtw32\misc\crtmboxw.c
+FILE 4913 f:\dd\vctools\crt\crtw32\misc\crtmbox.c
+FILE 5002 f:\dd\vctools\crt\crtw32\misc\cmiscdat.c
+FILE 5093 f:\dd\vctools\crt\crtw32\stdio\fileno.c
+FILE 5182 f:\dd\vctools\crt\crtw32\stdio\_file.c
+FILE 5276 f:\dd\vctools\crt\crtw32\stdio\_freebuf.c
+FILE 5374 f:\dd\vctools\crt\crtw32\stdio\_sftbuf.c
+FILE 5472 f:\dd\vctools\crt\crtw32\stdio\closeall.c
+FILE 5556 f:\dd\vctools\crt\crtw32\stdio\fclose.c
+FILE 5660 f:\dd\vctools\crt\crtw32\stdio\fflush.c
+FILE 5753 f:\dd\vctools\crt\crtw32\stdio\outputformat.c
+FILE 5837 f:\dd\vctools\crt\crtw32\string\amd64\cpu_disp.c
+FILE 5933 f:\dd\vctools\crt\crtw32\string\amd64\strrchr.c
+FILE 6036 f:\dd\vctools\crt\crtw32\string\amd64\wcschr.c
+FILE 6136 f:\dd\vctools\crt\crtw32\string\strcpy_s.c
+FILE 6169 f:\dd\vctools\crt\crtw32\h\tcscpy_s.inl
+FILE 6227 f:\dd\vctools\crt\crtw32\string\strncpy_s.c
+FILE 6260 f:\dd\vctools\crt\crtw32\h\tcsncpy_s.inl
+FILE 6318 f:\dd\vctools\crt\crtw32\string\wcscat_s.c
+FILE 6351 f:\dd\vctools\crt\crtw32\h\tcscat_s.inl
+FILE 6394 f:\dd\vctools\crt\crtw32\string\wcscmp.c
+FILE 6417 f:\dd\vctools\crt\crtw32\string\wcscpy_s.c
+FILE 6493 f:\dd\vctools\crt\crtw32\string\wcscspn.c
+FILE 6501 f:\dd\vctools\crt\crtw32\string\wcslen.c
+FILE 6509 f:\dd\vctools\crt\crtw32\string\wcslen_s.c
+FILE 6517 f:\dd\vctools\crt\crtw32\string\wcsncmp.c
+FILE 6540 f:\dd\vctools\crt\crtw32\string\wcsncpy_s.c
+FILE 6616 f:\dd\vctools\crt\crtw32\string\wcspbrk.c
+FILE 6647 f:\dd\vctools\crt\crtw32\heap\handler.cpp
+FILE 6670 f:\dd\vctools\crt\crtw32\h\new.h
+FILE 6742 f:\dd\vctools\crt\crtw32\heap\delete.cpp
+FILE 6804 f:\dd\vctools\crt\crtw32\string\amd64\memcmp.asm
+FILE 6808 f:\dd\vctools\crt\crtw32\string\amd64\memcpy.asm
+FILE 6812 f:\dd\vctools\crt\crtw32\string\amd64\memset.asm
+FILE 6816 f:\dd\vctools\crt\crtw32\string\amd64\strcmp.asm
+FILE 6820 f:\dd\vctools\crt\crtw32\string\amd64\strlen.asm
+FILE 6847 f:\dd\vctools\crt\crtw32\convert\_ctype.c
+FILE 6940 f:\dd\vctools\crt\crtw32\convert\_wctype.c
+FILE 7006 f:\dd\vctools\crt\crtw32\h\math.h
+FILE 7027 f:\dd\vctools\crt\crtw32\convert\atodbl.c
+FILE 7081 f:\dd\vctools\crt\crtw32\h\atodbl.inl
+FILE 7128 f:\dd\vctools\crt\crtw32\convert\iswctype.c
+FILE 7216 f:\dd\vctools\crt\crtw32\convert\isctype.c
+FILE 7310 f:\dd\vctools\crt\crtw32\convert\mbtowc.c
+FILE 7401 f:\dd\vctools\crt\crtw32\convert\strtod.c
+FILE 7499 f:\dd\vctools\crt\crtw32\convert\strtol.c
+FILE 7592 f:\dd\vctools\crt\crtw32\convert\strtoq.c
+FILE 7593 f:\dd\vctools\crt\crtw32\stdhpp\stdint.h
+FILE 7683 f:\dd\vctools\crt\crtw32\convert\tolower.c
+FILE 7784 f:\dd\vctools\crt\crtw32\convert\towlower.c
+FILE 7874 f:\dd\vctools\crt\crtw32\convert\wcstod.c
+FILE 7970 f:\dd\vctools\crt\crtw32\convert\wcstol.c
+FILE 8064 f:\dd\vctools\crt\crtw32\convert\wcstoq.c
+FILE 8156 f:\dd\vctools\crt\crtw32\h\mbdata.h
+FILE 8159 f:\dd\vctools\crt\crtw32\mbstring\ismbbyte.c
+FILE 8253 f:\dd\vctools\crt\crtw32\mbstring\mbctype.c
+FILE 8352 f:\dd\vctools\crt\crtw32\misc\a_loc.c
+FILE 8449 f:\dd\vctools\crt\crtw32\misc\a_map.c
+FILE 8545 f:\dd\vctools\crt\crtw32\misc\a_str.c
+FILE 8649 f:\dd\vctools\crt\crtw32\misc\invarg.c
+FILE 8749 f:\dd\vctools\crt\crtw32\misc\w_map.c
+FILE 8849 f:\dd\vctools\crt\crtw32\string\wcsicmp.c
+FILE 8936 f:\dd\vctools\crt\crtw32\string\wcsnicmp.c
+FILE 9010 f:\dd\vctools\crt\crtw32\startup\stdenvp.c
+FILE 9116 f:\dd\vctools\crt\crtw32\startup\crt0.c
+FILE 9140 f:\dd\vctools\crt\crtw32\h\dos.h
+FILE 9214 f:\dd\vctools\crt\crtw32\startup\crt0msg.c
+FILE 9217 f:\dd\vctools\crt\crtw32\h\cmsgs.h
+FILE 9313 f:\dd\vctools\crt\crtw32\startup\tidtable.c
+FILE 9391 f:\dd\vctools\crt\crtw32\h\memory.h
+FILE 9411 f:\dd\vctools\crt\crtw32\startup\stdargv.c
+FILE 9509 f:\dd\vctools\crt\crtw32\startup\mlock.c
+FILE 9605 f:\dd\vctools\crt\crtw32\startup\crt0init.c
+FILE 9698 f:\dd\vctools\crt\crtw32\startup\crt0fp.c
+FILE 9790 f:\dd\vctools\crt\crtw32\startup\crt0dat.c
+FILE 9872 f:\dd\vctools\crt\crtw32\startup\amd64\chkstk.asm
+FILE 9904 f:\dd\vctools\crt\fpw32\conv\cvt.c
+FILE 9916 f:\dd\vctools\crt\fpw32\include\cv.inl
+FILE 9930 f:\dd\vctools\crt\fpw32\include\cv.h
+FILE 9988 f:\dd\vctools\crt\fpw32\conv\x10fout.c
+FILE 10087 f:\dd\vctools\crt\fpw32\conv\wstrgtold.c
+FILE 10104 f:\dd\vctools\crt\fpw32\conv\strgtold.c
+FILE 10127 f:\dd\vctools\crt\fpw32\include\strgtold12.inl
+FILE 10173 f:\dd\vctools\crt\fpw32\conv\wcfin.c
+FILE 10176 f:\dd\vctools\crt\fpw32\conv\cfin.c
+FILE 10284 f:\dd\vctools\crt\fpw32\conv\mantold.c
+FILE 10294 f:\dd\vctools\crt\fpw32\include\mantold.inl
+FILE 10297 f:\dd\vctools\crt\fpw32\conv\intrncvt.c
+FILE 10306 f:\dd\vctools\crt\fpw32\include\intrncvt.inl
+FILE 10323 f:\dd\vctools\crt\fpw32\conv\fpinit.c
+FILE 10399 f:\dd\vctools\crt\fpw32\conv\constpow.c
+FILE 10409 f:\dd\vctools\crt\fpw32\include\constpow.inl
+FILE 10420 f:\dd\vctools\crt\fpw32\conv\cfout.c
+FILE 10514 f:\dd\vctools\crt\fpw32\tran\amd64\huge.asm
+FILE 10545 f:\dd\vctools\langapi\undname\undname.inl
+FILE 10546 f:\dd\vctools\langapi\undname\undname.cxx
+FILE 10566 f:\dd\vctools\langapi\undname\utf8.h
+FILE 10584 f:\dd\vctools\langapi\undname\undname.hxx
+FILE 10586 f:\dd\vctools\langapi\undname\undname.h
+FILE 10610 f:\dd\vctools\crt\crtw32\h\eh.h
+FILE 10621 f:\dd\vctools\langapi\include\ehdata.h
+FILE 10632 f:\dd\vctools\crt\crtw32\h\ehhooks.h
+FILE 10634 f:\dd\vctools\crt\crtw32\eh\unhandld.cpp
+FILE 10641 f:\dd\vctools\crt\crtw32\h\ehassert.h
+FILE 10708 f:\dd\vctools\crt\crtw32\stdhpp\exception
+FILE 10741 f:\dd\vctools\crt\crtw32\eh\typname.cpp
+FILE 10756 f:\dd\vctools\crt\crtw32\stdhpp\initializer_list
+FILE 10773 f:\dd\vctools\crt\crtw32\stdhpp\xtr1common
+FILE 10797 f:\dd\vctools\crt\crtw32\h\typeinfo.h
+FILE 10798 f:\dd\vctools\crt\crtw32\stdhpp\typeinfo
+FILE 10799 f:\dd\vctools\crt\crtw32\stdhpp\xstddef
+FILE 10802 f:\dd\vctools\crt\crtw32\stdhpp\cstddef
+FILE 10803 f:\dd\vctools\crt\crtw32\stdhpp\yvals.h
+FILE 10804 f:\dd\vctools\crt\crtw32\stdhpp\xkeycheck.h
+FILE 10807 f:\dd\vctools\crt\crtw32\stdhpp\use_ansi.h
+FILE 10809 f:\binaries.amd64ret\interapiscandidates\vctools\inc\undname.h
+FILE 10842 f:\dd\vctools\crt\crtw32\eh\typinfo.cpp
+FILE 10933 f:\dd\vctools\crt\crtw32\eh\hooks.cpp
+FILE 11032 f:\dd\vctools\crt\crtw32\rtc\initsect.cpp
+FILE 11055 f:\dd\vctools\crt\crtw32\h\rtcpriv.h
+FUNC 1000 6 0 google_breakpad::i
+1000 0 51 1
+1000 5 52 1
+1005 1 53 1
+FUNC 1010 6a 0 main
+1010 d 57 1
+101d a 58 1
+1027 11 59 1
+1038 a 60 1
+1042 e 61 1
+1050 f 62 1
+105f 16 64 1
+1075 5 65 1
+FUNC 1080 26 0 google_breakpad::C::C()
+1080 26 37 1
+FUNC 10b0 15 0 google_breakpad::C::~C()
+10b0 15 38 1
+FUNC 10d0 36 0 google_breakpad::C::`scalar deleting destructor'(unsigned int)
+FUNC 1110 26 0 google_breakpad::C::f()
+1110 26 43 1
+FUNC 1140 b 0 google_breakpad::C::g()
+1140 b 44 1
+FUNC 1150 8 0 google_breakpad::C::h(google_breakpad::C const &)
+1150 8 45 1
+FUNC 1160 16 0 google_breakpad::C::set_member(int)
+1160 16 40 1
+FUNC 1178 5 0 operator delete(void *)
+1178 0 20 6742
+1178 5 23 6742
+FUNC 1180 39 0 type_info::`scalar deleting destructor'(unsigned int)
+FUNC 11bc 180 0 __tmainCRTStartup
+11bc a 172 9116
+11c6 c 188 9116
+11d2 4e 196 9116
+1220 9 198 9116
+1229 22 199 9116
+124b 9 201 9116
+1254 22 202 9116
+1276 6 211 9116
+127c 9 221 9116
+1285 a 222 9116
+128f d 226 9116
+129c c 229 9116
+12a8 9 231 9116
+12b1 a 232 9116
+12bb 9 233 9116
+12c4 a 234 9116
+12ce 7 237 9116
+12d5 4 238 9116
+12d9 7 239 9116
+12e0 e 254 9116
+12ee 18 255 9116
+1306 4 261 9116
+130a 7 262 9116
+1311 5 264 9116
+1316 2 266 9116
+1318 2 267 9116
+131a 7 275 9116
+1321 8 276 9116
+1329 6 278 9116
+132f 2 282 9116
+1331 b 283 9116
+FUNC 133c 2c 0 fast_error_exit
+133c 6 305 9116
+1342 b 315 9116
+134d 5 317 9116
+1352 7 319 9116
+1359 5 322 9116
+135e 5 323 9116
+1363 5 322 9116
+FUNC 1368 12 0 mainCRTStartup
+1368 4 155 9116
+136c 5 162 9116
+1371 4 165 9116
+1375 5 164 9116
+FUNC 137c 3d 0 free
+137c 0 40 744
+137c a 45 744
+1386 12 50 744
+1398 4 51 744
+139c 17 53 744
+13b3 6 55 744
+FUNC 13d0 67 0 strcmp
+13d0 0 70 6816
+13d0 3 77 6816
+13d3 3 78 6816
+13d6 2 79 6816
+13d8 3 82 6816
+13db 3 83 6816
+13de 2 84 6816
+13e0 3 86 6816
+13e3 2 88 6816
+13e5 2 89 6816
+13e7 3 91 6816
+13ea 2 92 6816
+13ec a 96 6816
+13f6 a 97 6816
+1400 4 100 6816
+1404 5 101 6816
+1409 5 102 6816
+140e 2 103 6816
+1410 3 105 6816
+1413 4 106 6816
+1417 2 109 6816
+1419 4 112 6816
+141d 3 113 6816
+1420 4 114 6816
+1424 3 115 6816
+1427 3 117 6816
+142a 2 118 6816
+142c 2 121 6816
+142e 1 122 6816
+142f 3 125 6816
+1432 4 126 6816
+1436 1 127 6816
+FUNC 1438 6c 0 type_info::_Type_info_dtor(type_info *)
+1438 9 31 10741
+1441 b 32 10741
+144c 9 34 10741
+1455 13 39 10741
+1468 5 41 10741
+146d 5 43 10741
+1472 8 48 10741
+147a 5 49 10741
+147f 2 50 10741
+1481 3 52 10741
+1484 2 41 10741
+1486 9 63 10741
+148f 5 70 10741
+1494 a 73 10741
+149e 6 76 10741
+FUNC 14a4 38 0 __CxxUnhandledExceptionFilter(_EXCEPTION_POINTERS *)
+14a4 4 37 10634
+14a8 27 38 10634
+14cf 2 42 10634
+14d1 5 43 10634
+14d6 6 39 10634
+FUNC 14dc 17 0 _CxxSetUnhandledExceptionFilter
+14dc 4 56 10634
+14e0 c 60 10634
+14ec 2 62 10634
+14ee 5 63 10634
+FUNC 14f4 1cc 0 XcptFilter
+14f4 19 195 4434
+150d 5 202 4434
+1512 f 203 4434
+1521 31 208 4434
+1552 9 210 4434
+155b 4 216 4434
+155f 9 223 4434
+1568 6 232 4434
+156e 4 237 4434
+1572 9 238 4434
+157b 6 244 4434
+1581 8 248 4434
+1589 7 262 4434
+1590 7 263 4434
+1597 a 272 4434
+15a1 5 280 4434
+15a6 19 283 4434
+15bf e 310 4434
+15cd f 312 4434
+15dc 8 314 4434
+15e4 f 316 4434
+15f3 8 318 4434
+15fb c 320 4434
+1607 8 322 4434
+160f c 324 4434
+161b 8 326 4434
+1623 c 328 4434
+162f 8 330 4434
+1637 c 332 4434
+1643 8 334 4434
+164b c 336 4434
+1657 8 338 4434
+165f c 340 4434
+166b 8 342 4434
+1673 a 344 4434
+167d e 353 4434
+168b 6 358 4434
+1691 2 360 4434
+1693 4 365 4434
+1697 6 366 4434
+169d 7 372 4434
+16a4 5 374 4434
+16a9 2 224 4434
+16ab 15 376 4434
+FUNC 16c0 133 0 freefls
+16c0 0 370 9313
+16c0 13 381 9313
+16d3 3 370 9313
+16d6 9 382 9313
+16df 5 383 9313
+16e4 9 385 9313
+16ed 5 386 9313
+16f2 9 388 9313
+16fb 5 389 9313
+1700 9 391 9313
+1709 5 392 9313
+170e 9 394 9313
+1717 5 395 9313
+171c 9 397 9313
+1725 5 398 9313
+172a c 400 9313
+1736 5 401 9313
+173b 13 403 9313
+174e 5 404 9313
+1753 d 406 9313
+1760 27 410 9313
+1787 6 411 9313
+178d 7 414 9313
+1794 b 417 9313
+179f c 420 9313
+17ab 8 422 9313
+17b3 1a 425 9313
+17cd 9 426 9313
+17d6 a 430 9313
+17e0 8 433 9313
+17e8 b 436 9313
+FUNC 17f4 24 0 getptd
+17f4 6 336 9313
+17fa 8 337 9313
+1802 5 338 9313
+1807 8 339 9313
+180f 3 341 9313
+1812 6 342 9313
+FUNC 1818 82 0 getptd_noexit
+1818 a 270 9313
+1822 6 274 9313
+1828 15 277 9313
+183d 15 286 9313
+1852 e 289 9313
+1860 e 295 9313
+186e 6 297 9313
+1874 7 298 9313
+187b 2 300 9313
+187d 5 306 9313
+1882 2 307 9313
+1884 8 312 9313
+188c 3 314 9313
+188f b 315 9313
+FUNC 189c c2 0 initptd
+189c 10 203 9313
+18ac e 204 9313
+18ba 4 205 9313
+18be 7 206 9313
+18c5 a 211 9313
+18cf c 215 9313
+18db 7 216 9313
+18e2 e 217 9313
+18f0 8 219 9313
+18f8 b 221 9313
+1903 a 224 9313
+190d a 228 9313
+1917 b 233 9313
+1922 7 235 9313
+1929 5 243 9313
+192e e 244 9313
+193c d 245 9313
+1949 a 248 9313
+1953 b 250 9313
+FUNC 1960 7f 0 mtinit
+1960 6 88 9313
+1966 5 91 9313
+196b 9 97 9313
+1974 17 105 9313
+198b 29 115 9313
+19b4 a 125 9313
+19be 6 127 9313
+19c4 7 128 9313
+19cb 7 130 9313
+19d2 5 117 9313
+19d7 2 118 9313
+19d9 6 131 9313
+FUNC 19e0 24 0 mtterm
+19e0 4 160 9313
+19e4 b 167 9313
+19ef 5 168 9313
+19f4 7 169 9313
+19fb 4 177 9313
+19ff 5 176 9313
+FUNC 1a04 41 0 _crtCorExitProcess
+1a04 8 734 9790
+1a0c 18 738 9790
+1a24 12 739 9790
+1a36 5 740 9790
+1a3b 4 741 9790
+1a3f 6 751 9790
+FUNC 1a48 16 0 _crtExitProcess
+1a48 8 757 9790
+1a50 5 764 9790
+1a55 9 774 9790
+FUNC 1a60 26 0 amsg_exit
+1a60 8 485 9790
+1a68 5 487 9790
+1a6d 7 488 9790
+1a74 12 490 9790
+FUNC 1a88 f 0 c_exit
+1a88 0 454 9790
+1a88 f 455 9790
+FUNC 1a98 d 0 cexit
+1a98 0 447 9790
+1a98 d 448 9790
+FUNC 1aa8 96 0 cinit
+1aa8 6 278 9790
+1aae 1c 288 9790
+1aca 8 290 9790
+1ad2 5 292 9790
+1ad7 13 298 9790
+1aea 4 299 9790
+1aee c 303 9790
+1afa 13 308 9790
+1b0d 1a 321 9790
+1b27 f 323 9790
+1b36 2 327 9790
+1b38 6 328 9790
+FUNC 1b40 c 0 exit
+1b40 0 432 9790
+1b40 c 433 9790
+FUNC 1b4c 4b 0 init_pointers
+1b4c 6 879 9790
+1b52 8 880 9790
+1b5a b 882 9790
+1b65 8 883 9790
+1b6d 8 884 9790
+1b75 8 885 9790
+1b7d 8 886 9790
+1b85 8 889 9790
+1b8d 5 900 9790
+1b92 5 893 9790
+FUNC 1b98 60 0 _initterm
+1b98 30 941 9790
+1bc8 5 948 9790
+1bcd 8 953 9790
+1bd5 2 954 9790
+1bd7 c 955 9790
+1be3 15 957 9790
+FUNC 1bf8 39 0 initterm_e
+1bf8 a 990 9790
+1c02 8 991 9790
+1c0a 9 999 9790
+1c13 8 1004 9790
+1c1b 2 1005 9790
+1c1d 9 1006 9790
+1c26 b 1010 9790
+FUNC 1c34 a 0 lockexit
+1c34 0 825 9790
+1c34 a 826 9790
+FUNC 1c40 a 0 unlockexit
+1c40 0 851 9790
+1c40 a 852 9790
+FUNC 1c4c 195 0 doexit
+1c4c 24 552 9790
+1c70 b 568 9790
+1c7b d 571 9790
+1c88 a 572 9790
+1c92 7 575 9790
+1c99 8 577 9790
+1ca1 15 593 9790
+1cb6 9 594 9790
+1cbf 15 595 9790
+1cd4 8 599 9790
+1cdc 8 600 9790
+1ce4 1b 608 9790
+1cff 2 611 9790
+1d01 5 613 9790
+1d06 c 620 9790
+1d12 b 623 9790
+1d1d 2 626 9790
+1d1f 10 628 9790
+1d2f d 629 9790
+1d3c a 631 9790
+1d46 10 634 9790
+1d56 10 635 9790
+1d66 2 637 9790
+1d68 13 643 9790
+1d7b 14 651 9790
+1d8f 5 666 9790
+1d94 a 667 9790
+1d9e 5 670 9790
+1da3 a 674 9790
+1dad a 676 9790
+1db7 12 678 9790
+1dc9 18 679 9790
+FUNC 1de4 a 0 exit
+1de4 0 416 9790
+1de4 a 417 9790
+FUNC 1df0 20 0 heap_init
+1df0 4 40 828
+1df4 17 42 828
+1e0b 5 46 828
+FUNC 1e10 32d 0 ioinit
+1e10 25 110 1584
+1e35 b 125 1584
+1e40 23 134 1584
+1e63 19 136 1584
+1e7c 7 139 1584
+1e83 7 140 1584
+1e8a b 142 1584
+1e95 6 143 1584
+1e9b 4 144 1584
+1e9f 4 146 1584
+1ea3 7 147 1584
+1eaa 5 148 1584
+1eaf 6 149 1584
+1eb5 4 151 1584
+1eb9 4 152 1584
+1ebd 11 142 1584
+1ece b 160 1584
+1ed9 20 162 1584
+1ef9 9 173 1584
+1f02 b 174 1584
+1f0d d 180 1584
+1f1a 12 186 1584
+1f2c 18 192 1584
+1f44 7 198 1584
+1f4b 2 199 1584
+1f4d e 205 1584
+1f5b 7 206 1584
+1f62 f 208 1584
+1f71 6 209 1584
+1f77 4 210 1584
+1f7b 4 212 1584
+1f7f 4 213 1584
+1f83 6 214 1584
+1f89 4 216 1584
+1f8d 4 217 1584
+1f91 a 208 1584
+1f9b 4 186 1584
+1f9f 14 224 1584
+1fb3 23 237 1584
+1fd6 1b 239 1584
+1ff1 6 240 1584
+1ff7 6 241 1584
+1ffd 11 243 1584
+200e 3 244 1584
+2011 19 224 1584
+202a 18 255 1584
+2042 20 257 1584
+2062 10 320 1584
+2072 4 271 1584
+2076 34 275 1584
+20aa 3 280 1584
+20ad 8 286 1584
+20b5 9 287 1584
+20be 5 288 1584
+20c3 a 289 1584
+20cd 11 292 1584
+20de 3 293 1584
+20e1 2 295 1584
+20e3 a 304 1584
+20ed 3 305 1584
+20f0 c 311 1584
+20fc 8 312 1584
+2104 b 255 1584
+210f a 326 1584
+2119 2 329 1584
+211b 22 330 1584
+FUNC 2140 f3 0 setargv
+2140 f 88 9411
+214f 9 97 9411
+2158 5 98 9411
+215d 1f 105 9411
+217c 7 122 9411
+2183 7 110 9411
+218a d 122 9411
+2197 1c 129 9411
+21b3 1f 136 9411
+21d2 9 140 9411
+21db b 144 9411
+21e6 5 145 9411
+21eb 1e 153 9411
+2209 4 158 9411
+220d f 162 9411
+221c 4 177 9411
+2220 3 138 9411
+2223 10 178 9411
+FUNC 2234 1c7 0 parse_cmdline
+2234 1d 223 9411
+2251 15 230 9411
+2266 7 231 9411
+226d 5 235 9411
+2272 7 236 9411
+2279 2 255 9411
+227b 5 257 9411
+2280 4 259 9411
+2284 b 260 9411
+228f 2 261 9411
+2291 3 263 9411
+2294 5 264 9411
+2299 7 265 9411
+22a0 6 267 9411
+22a6 b 269 9411
+22b1 3 270 9411
+22b4 5 271 9411
+22b9 7 272 9411
+22c0 3 273 9411
+22c3 15 277 9411
+22d8 5 282 9411
+22dd 6 283 9411
+22e3 3 280 9411
+22e6 2 286 9411
+22e8 9 291 9411
+22f1 a 292 9411
+22fb 5 293 9411
+2300 9 296 9411
+2309 5 300 9411
+230e 7 301 9411
+2315 4 302 9411
+2319 5 316 9411
+231e 4 320 9411
+2322 3 323 9411
+2325 2 324 9411
+2327 5 321 9411
+232c 5 326 9411
+2331 4 329 9411
+2335 d 330 9411
+2342 3 331 9411
+2345 2 332 9411
+2347 b 334 9411
+2352 4 337 9411
+2356 2 341 9411
+2358 5 342 9411
+235d 6 343 9411
+2363 3 344 9411
+2366 4 341 9411
+236a 12 348 9411
+237c 4 353 9411
+2380 11 355 9411
+2391 a 356 9411
+239b 3 357 9411
+239e 7 359 9411
+23a5 2 360 9411
+23a7 4 361 9411
+23ab 3 362 9411
+23ae 3 363 9411
+23b1 3 366 9411
+23b4 3 368 9411
+23b7 5 377 9411
+23bc 5 381 9411
+23c1 6 382 9411
+23c7 3 383 9411
+23ca 5 292 9411
+23cf 5 387 9411
+23d4 4 388 9411
+23d8 4 389 9411
+23dc 1f 390 9411
+FUNC 23fc 131 0 setenvp
+23fc 14 77 9010
+2410 9 85 9010
+2419 5 86 9010
+241e 9 91 9010
+2427 5 98 9010
+242c 8 99 9010
+2434 4 110 9010
+2438 2 111 9010
+243a e 112 9010
+2448 6 108 9010
+244e 1f 117 9010
+246d c 121 9010
+2479 8 123 9010
+2481 8 125 9010
+2489 18 127 9010
+24a1 12 133 9010
+24b3 4 134 9010
+24b7 b 121 9010
+24c2 7 131 9010
+24c9 8 138 9010
+24d1 8 139 9010
+24d9 4 142 9010
+24dd a 149 9010
+24e7 2 152 9010
+24e9 15 153 9010
+24fe c 129 9010
+250a 8 130 9010
+2512 5 131 9010
+2517 16 133 9010
+FUNC 2530 43 0 FF_MSGBANNER
+2530 4 143 9214
+2534 26 147 9214
+255a a 149 9214
+2564 a 150 9214
+256e 5 152 9214
+FUNC 2574 2f 0 GET_RTERRMSG
+2574 0 174 9214
+2574 c 177 9214
+2580 5 178 9214
+2585 f 177 9214
+2594 2 181 9214
+2596 1 182 9214
+2597 b 179 9214
+25a2 1 182 9214
+FUNC 25a4 26f 0 NMSG_WRITE
+25a4 2f 205 9214
+25d3 5 206 9214
+25d8 e 208 9214
+25e6 2a 235 9214
+2610 c 272 9214
+261c 1f 281 9214
+263b 2 284 9214
+263d 8 281 9214
+2645 25 284 9214
+266a 19 285 9214
+2683 11 288 9214
+2694 c 290 9214
+26a0 2d 291 9214
+26cd 1a 294 9214
+26e7 16 295 9214
+26fd 17 299 9214
+2714 18 237 9214
+272c 8 253 9214
+2734 4 255 9214
+2738 5 257 9214
+273d 15 253 9214
+2752 2d 269 9214
+277f 2d 303 9214
+27ac 15 285 9214
+27c1 15 291 9214
+27d6 15 295 9214
+27eb 15 294 9214
+2800 13 281 9214
+FUNC 2814 7 0 _set_app_type
+2814 0 94 2522
+2814 6 95 2522
+281a 1 96 2522
+FUNC 281c 40 0 set_error_mode
+281c 4 49 2522
+2820 e 52 2522
+282e 6 60 2522
+2834 2 61 2522
+2836 6 56 2522
+283c 6 57 2522
+2842 2 66 2522
+2844 13 63 2522
+2857 5 67 2522
+FUNC 285c ac 0 _security_init_cookie
+285c d 82 2974
+2869 1b 99 2974
+2884 a 112 2974
+288e 8 114 2974
+2896 c 120 2974
+28a2 6 121 2974
+28a8 10 130 2974
+28b8 7 132 2974
+28bf 1c 149 2974
+28db 11 157 2974
+28ec 7 168 2974
+28f3 15 171 2974
+FUNC 2908 38 0 RTC_Initialize
+2908 a 43 11032
+2912 10 46 11032
+2922 8 48 11032
+292a 2 50 11032
+292c 9 46 11032
+2935 b 53 11032
+FUNC 2940 38 0 RTC_Terminate
+2940 a 57 11032
+294a 10 60 11032
+295a 8 62 11032
+2962 2 64 11032
+2964 9 60 11032
+296d b 67 11032
+FUNC 2978 f4 0 _crtGetEnvironmentStringsA
+2978 19 40 4721
+2991 15 49 4721
+29a6 3 53 4721
+29a9 6 54 4721
+29af a 55 4721
+29b9 a 56 4721
+29c3 2e 70 4721
+29f1 14 74 4721
+2a05 28 88 4721
+2a2d 8 90 4721
+2a35 3 91 4721
+2a38 9 94 4721
+2a41 5 95 4721
+2a46 9 76 4721
+2a4f 2 77 4721
+2a51 1b 96 4721
+FUNC 2a6c 1e1 0 _C_specific_handler
+2a6c 1c 91 6
+2a88 4 112 6
+2a8c 3 113 6
+2a8f 7 114 6
+2a96 13 124 6
+2aa9 14 133 6
+2abd 2a 136 6
+2ae7 7 145 6
+2aee 4 150 6
+2af2 d 152 6
+2aff 4 162 6
+2b03 2 165 6
+2b05 23 176 6
+2b28 e 178 6
+2b36 15 191 6
+2b4b 29 198 6
+2b74 5 204 6
+2b79 7 133 6
+2b80 7 163 6
+2b87 4 216 6
+2b8b c 218 6
+2b97 17 220 6
+2bae 6 222 6
+2bb4 7 238 6
+2bbb 30 242 6
+2beb 8 238 6
+2bf3 5 248 6
+2bf8 8 263 6
+2c00 5 264 6
+2c05 2 267 6
+2c07 3 218 6
+2c0a 14 272 6
+2c1e c 218 6
+2c2a 5 284 6
+2c2f 1e 285 6
+FUNC 2c50 20 0 _doserrno
+2c50 4 292 480
+2c54 5 293 480
+2c59 5 294 480
+2c5e 9 295 480
+2c67 4 297 480
+2c6b 5 299 480
+FUNC 2c70 4e 0 dosmaperr
+2c70 c 110 480
+2c7c 19 111 480
+2c95 1e 113 480
+2cb3 b 114 480
+FUNC 2cc0 20 0 errno
+2cc0 4 279 480
+2cc4 5 280 480
+2cc9 5 281 480
+2cce 9 282 480
+2cd7 4 284 480
+2cdb 5 287 480
+FUNC 2ce0 4d 0 get_errno_from_oserr
+2ce0 0 119 480
+2ce0 10 123 480
+2cf0 5 124 480
+2cf5 e 123 480
+2d03 8 133 480
+2d0b 5 134 480
+2d10 1 139 480
+2d11 12 135 480
+2d23 1 139 480
+2d24 8 125 480
+2d2c 1 139 480
+FUNC 2d30 f2 0 call_reportfault
+2d30 36 148 8649
+2d66 5 150 8649
+2d6b 5 151 8649
+2d70 17 154 8649
+2d87 5 156 8649
+2d8c 17 188 8649
+2da3 e 189 8649
+2db1 7 190 8649
+2db8 8 194 8649
+2dc0 8 195 8649
+2dc8 c 196 8649
+2dd4 6 198 8649
+2dda c 201 8649
+2de6 d 205 8649
+2df3 7 206 8649
+2dfa 28 208 8649
+FUNC 2e24 8 0 initp_misc_invarg
+2e24 0 39 8649
+2e24 7 40 8649
+2e2b 1 41 8649
+FUNC 2e2c 65 0 invalid_parameter
+2e2c 17 71 8649
+2e43 16 78 8649
+2e59 11 81 8649
+2e6a 14 86 8649
+2e7e 3 81 8649
+2e81 10 85 8649
+FUNC 2e94 1e 0 invalid_parameter_noinfo
+2e94 4 95 8649
+2e98 15 96 8649
+2ead 5 97 8649
+FUNC 2eb4 3b 0 invoke_watson
+2eb4 4 121 8649
+2eb8 e 131 8649
+2ec6 7 132 8649
+2ecd 14 136 8649
+2ee1 5 138 8649
+2ee6 4 140 8649
+2eea 5 138 8649
+FUNC 2ef0 61 0 strcpy_s
+2ef0 6 13 6169
+2ef6 a 18 6169
+2f00 8 19 6169
+2f08 13 18 6169
+2f1b 6 34 6169
+2f21 19 23 6169
+2f3a 5 27 6169
+2f3f 2 29 6169
+2f41 c 30 6169
+2f4d 4 33 6169
+FUNC 2f70 a8 0 strlen
+2f70 0 46 6820
+2f70 3 50 6820
+2f73 3 51 6820
+2f76 6 52 6820
+2f7c 4 53 6820
+2f80 2 58 6820
+2f82 3 59 6820
+2f85 2 60 6820
+2f87 2 61 6820
+2f89 2 62 6820
+2f8b 2 63 6820
+2f8d a 66 6820
+2f97 a 67 6820
+2fa1 3 70 6820
+2fa4 3 72 6820
+2fa7 4 73 6820
+2fab 3 74 6820
+2fae 3 75 6820
+2fb1 3 76 6820
+2fb4 3 77 6820
+2fb7 2 78 6820
+2fb9 4 82 6820
+2fbd 2 84 6820
+2fbf 2 85 6820
+2fc1 2 86 6820
+2fc3 2 87 6820
+2fc5 4 88 6820
+2fc9 2 89 6820
+2fcb 2 90 6820
+2fcd 2 91 6820
+2fcf 2 92 6820
+2fd1 4 93 6820
+2fd5 2 94 6820
+2fd7 2 95 6820
+2fd9 2 96 6820
+2fdb 2 97 6820
+2fdd 3 98 6820
+2fe0 2 99 6820
+2fe2 2 100 6820
+2fe4 2 101 6820
+2fe6 2 102 6820
+2fe8 5 105 6820
+2fed 1 106 6820
+2fee 5 108 6820
+2ff3 1 109 6820
+2ff4 5 111 6820
+2ff9 1 112 6820
+2ffa 5 114 6820
+2fff 1 115 6820
+3000 5 117 6820
+3005 1 118 6820
+3006 5 120 6820
+300b 1 121 6820
+300c 5 123 6820
+3011 1 124 6820
+3012 5 126 6820
+3017 1 127 6820
+FUNC 3018 44 0 lock
+3018 a 325 9509
+3022 14 330 9509
+3036 9 332 9509
+303f 8 333 9509
+3047 4 340 9509
+304b a 341 9509
+3055 7 340 9509
+FUNC 305c 87 0 mtdeletelocks
+305c 14 183 9509
+3070 e 189 9509
+307e e 191 9509
+308c 9 195 9509
+3095 8 201 9509
+309d 4 202 9509
+30a1 9 189 9509
+30aa b 210 9509
+30b5 a 212 9509
+30bf 6 216 9509
+30c5 9 210 9509
+30ce 15 219 9509
+FUNC 30e4 bd 0 mtinitlocknum
+30e4 13 254 9509
+30f7 a 264 9509
+3101 5 266 9509
+3106 a 267 9509
+3110 a 269 9509
+311a 11 273 9509
+312b 7 274 9509
+3132 12 276 9509
+3144 b 277 9509
+314f 4 278 9509
+3153 b 281 9509
+315e 3 285 9509
+3161 7 284 9509
+3168 d 285 9509
+3175 4 286 9509
+3179 2 288 9509
+317b 6 289 9509
+3181 d 293 9509
+318e 2 296 9509
+3190 11 297 9509
+FUNC 31a4 61 0 mtinitlocks
+31a4 f 137 9509
+31b3 c 139 9509
+31bf 6 145 9509
+31c5 a 146 9509
+31cf 1a 147 9509
+31e9 9 144 9509
+31f2 13 153 9509
+FUNC 3208 18 0 unlock
+3208 0 363 9509
+3208 18 367 9509
+FUNC 3220 b6 0 malloc
+3220 12 84 930
+3232 b 88 930
+323d 41 92 930
+327e 5 97 930
+3283 8 101 930
+328b c 108 930
+3297 2 112 930
+3299 b 103 930
+32a4 b 122 930
+32af 5 124 930
+32b4 5 114 930
+32b9 b 115 930
+32c4 2 116 930
+32c6 10 125 930
+FUNC 32f0 24 0 local_unwind
+32f0 0 47 69
+32f0 7 49 69
+32f7 3 58 69
+32fa 3 59 69
+32fd 5 65 69
+3302 5 66 69
+3307 5 67 69
+330c 7 68 69
+3313 d 69 69
+FUNC 3320 18 0 NLG_Notify
+3320 0 103 69
+3320 5 105 69
+3325 5 106 69
+332a 5 107 69
+332f 7 108 69
+3336 a 109 69
+FUNC 3340 1 0 _NLG_Dispatch2
+3340 0 113 69
+3340 10 114 69
+FUNC 3350 1 0 _NLG_Return2
+3350 0 137 69
+3350 1 138 69
+FUNC 3354 1f 0 terminate()
+3354 4 66 10933
+3358 c 71 10933
+3364 5 72 10933
+3369 2 81 10933
+336b 2 82 10933
+336d 6 96 10933
+FUNC 3374 1d 0 initp_eh_hooks
+3374 4 51 10933
+3378 14 52 10933
+338c 5 53 10933
+FUNC 3394 6d 0 _crtCaptureCurrentContext
+3394 d 327 4340
+33a1 6 335 4340
+33a7 7 337 4340
+33ae 11 338 4340
+33bf 5 340 4340
+33c4 32 348 4340
+33f6 b 350 4340
+FUNC 3404 71 0 _crtCapturePreviousContext
+3404 b 279 4340
+340f 6 287 4340
+3415 7 289 4340
+341c 2 292 4340
+341e 11 294 4340
+342f 5 296 4340
+3434 39 304 4340
+346d 8 309 4340
+FUNC 3478 1a 0 _crtFlsAlloc
+3478 0 381 4340
+3478 10 386 4340
+3488 3 388 4340
+348b 7 392 4340
+FUNC 3494 1a 0 _crtFlsFree
+3494 0 398 4340
+3494 10 403 4340
+34a4 3 405 4340
+34a7 7 409 4340
+FUNC 34b0 1a 0 _crtFlsGetValue
+34b0 0 415 4340
+34b0 10 420 4340
+34c0 3 422 4340
+34c3 7 426 4340
+FUNC 34cc 1a 0 _crtFlsSetValue
+34cc 0 433 4340
+34cc 10 438 4340
+34dc 3 440 4340
+34df 7 444 4340
+FUNC 34e8 2b 0 _crtInitializeCriticalSectionEx
+34e8 4 457 4340
+34ec 10 459 4340
+34fc 4 467 4340
+3500 3 461 4340
+3503 6 465 4340
+3509 5 466 4340
+350e 5 467 4340
+FUNC 3514 4c 0 _crtIsPackagedApp
+3514 6 126 4340
+351a c 133 4340
+3526 2d 135 4340
+3553 7 138 4340
+355a 6 140 4340
+FUNC 3560 3fa 0 _crtLoadWinApiPointers
+3560 6 749 4340
+3566 d 750 4340
+3573 13 752 4340
+3586 1e 753 4340
+35a4 1e 754 4340
+35c2 1e 755 4340
+35e0 1e 756 4340
+35fe 1e 757 4340
+361c 1e 758 4340
+363a 1e 759 4340
+3658 1e 760 4340
+3676 1e 761 4340
+3694 1e 762 4340
+36b2 1e 763 4340
+36d0 1e 764 4340
+36ee 1e 765 4340
+370c 1e 766 4340
+372a 25 767 4340
+374f 17 768 4340
+3766 1e 769 4340
+3784 1e 770 4340
+37a2 1e 771 4340
+37c0 1e 772 4340
+37de 1e 773 4340
+37fc 1e 774 4340
+381a 1e 775 4340
+3838 1e 776 4340
+3856 1e 777 4340
+3874 1e 778 4340
+3892 1e 779 4340
+38b0 1e 780 4340
+38ce 1e 781 4340
+38ec 1e 782 4340
+390a 25 783 4340
+392f 25 784 4340
+3954 6 785 4340
+FUNC 395c 7 0 _crtSetUnhandledExceptionFilter
+395c 0 194 4340
+395c 7 198 4340
+FUNC 3964 7 0 _crtSleep
+3964 0 727 4340
+3964 7 739 4340
+FUNC 396c 1f 0 _crtTerminateProcess
+396c 8 221 4340
+3974 b 224 4340
+397f 5 225 4340
+3984 7 224 4340
+FUNC 398c 20 0 _crtUnhandledException
+398c 9 253 4340
+3995 8 255 4340
+399d 3 258 4340
+39a0 5 259 4340
+39a5 7 258 4340
+FUNC 39ac 7f 0 calloc_crt
+39ac 19 55 658
+39c5 c 56 658
+39d1 11 62 658
+39e2 d 63 658
+39ef 19 64 658
+3a08 5 65 658
+3a0d 1e 69 658
+FUNC 3a2c 7a 0 malloc_crt
+3a2c 19 40 658
+3a45 f 41 658
+3a54 b 45 658
+3a5f 9 46 658
+3a68 1b 47 658
+3a83 5 48 658
+3a88 1e 52 658
+FUNC 3aa8 81 0 realloc_crt
+3aa8 19 72 658
+3ac1 c 73 658
+3acd e 77 658
+3adb 12 78 658
+3aed 19 79 658
+3b06 5 80 658
+3b0b 1e 84 658
+FUNC 3b2c 8c 0 _addlocaleref
+3b2c 0 36 3702
+3b2c 3 39 3702
+3b2f c 41 3702
+3b3b 3 42 3702
+3b3e c 44 3702
+3b4a 3 45 3702
+3b4d c 47 3702
+3b59 3 48 3702
+3b5c c 50 3702
+3b68 3 51 3702
+3b6b a 53 3702
+3b75 15 55 3702
+3b8a 3 56 3702
+3b8d 10 59 3702
+3b9d 3 60 3702
+3ba0 9 53 3702
+3ba9 e 63 3702
+3bb7 1 64 3702
+FUNC 3bb8 196 0 _freetlocinfo
+3bb8 14 129 3702
+3bcc 2c 137 3702
+3bf8 11 140 3702
+3c09 5 142 3702
+3c0e c 143 3702
+3c1a 11 147 3702
+3c2b 5 149 3702
+3c30 c 150 3702
+3c3c c 153 3702
+3c48 c 154 3702
+3c54 11 161 3702
+3c65 13 163 3702
+3c78 14 164 3702
+3c8c f 165 3702
+3c9b c 166 3702
+3ca7 1c 173 3702
+3cc3 5 175 3702
+3cc8 c 176 3702
+3cd4 10 179 3702
+3ce4 1a 182 3702
+3cfe 5 184 3702
+3d03 8 185 3702
+3d0b 15 193 3702
+3d20 5 195 3702
+3d25 d 179 3702
+3d32 3 202 3702
+3d35 14 203 3702
+3d49 5 202 3702
+FUNC 3d50 a4 0 _removelocaleref
+3d50 0 74 3702
+3d50 9 77 3702
+3d59 8 79 3702
+3d61 c 81 3702
+3d6d 4 82 3702
+3d71 c 84 3702
+3d7d 4 85 3702
+3d81 c 87 3702
+3d8d 4 88 3702
+3d91 c 90 3702
+3d9d 4 91 3702
+3da1 a 93 3702
+3dab 15 95 3702
+3dc0 4 96 3702
+3dc4 10 99 3702
+3dd4 4 100 3702
+3dd8 9 93 3702
+3de1 f 103 3702
+3df0 3 106 3702
+3df3 1 107 3702
+FUNC 3df4 75 0 _updatetlocinfo
+3df4 6 282 3702
+3dfa 8 284 3702
+3e02 18 286 3702
+3e1a e 298 3702
+3e28 b 287 3702
+3e33 16 291 3702
+3e49 a 295 3702
+3e53 5 301 3702
+3e58 8 303 3702
+3e60 3 306 3702
+3e63 6 307 3702
+FUNC 3e6c 62 0 updatetlocinfoEx_nolock
+3e6c d 217 3702
+3e79 a 220 3702
+3e83 3 223 3702
+3e86 5 224 3702
+3e8b 3 230 3702
+3e8e 8 231 3702
+3e96 5 237 3702
+3e9b 8 239 3702
+3ea3 11 249 3702
+3eb4 8 250 3702
+3ebc 5 254 3702
+3ec1 2 221 3702
+3ec3 b 255 3702
+FUNC 3ed0 28 0 _initmbctable
+3ed0 4 854 8253
+3ed4 9 864 8253
+3edd a 865 8253
+3ee7 a 866 8253
+3ef1 2 871 8253
+3ef3 5 872 8253
+FUNC 3ef8 a8 0 _LocaleUpdate::_LocaleUpdate(localeinfo_struct *)
+3ef8 d 245 208
+3f05 9 246 208
+3f0e 9 248 208
+3f17 a 249 208
+3f21 b 250 208
+3f2c 1f 252 208
+3f4b 28 253 208
+3f73 e 254 208
+3f81 9 256 208
+3f8a 4 257 208
+3f8e 2 260 208
+3f90 7 262 208
+3f97 9 264 208
+FUNC 3fa0 7d 0 getSystemCP
+3fa0 8 295 8253
+3fa8 c 297 8253
+3fb4 7 298 8253
+3fbb 5 303 8253
+3fc0 a 305 8253
+3fca 8 306 8253
+3fd2 5 309 8253
+3fd7 a 311 8253
+3fe1 a 312 8253
+3feb 5 317 8253
+3ff0 12 320 8253
+4002 15 323 8253
+4017 6 324 8253
+FUNC 4020 8e 0 setSBCS
+4020 14 374 8253
+4034 7 378 8253
+403b 12 379 8253
+404d a 382 8253
+4057 7 387 8253
+405e b 390 8253
+4069 a 392 8253
+4073 d 393 8253
+4080 c 395 8253
+408c d 396 8253
+4099 15 397 8253
+FUNC 40b0 1e1 0 setSBUpLow
+40b0 2e 413 8253
+40de e 423 8253
+40ec 14 426 8253
+4100 b 427 8253
+410b 10 431 8253
+411b e 433 8253
+4129 9 434 8253
+4132 5 433 8253
+4137 a 431 8253
+4141 2c 439 8253
+416d 33 444 8253
+41a0 39 449 8253
+41d9 1c 458 8253
+41f5 5 455 8253
+41fa 3 457 8253
+41fd 7 458 8253
+4204 5 460 8253
+4209 3 462 8253
+420c b 463 8253
+4217 2 465 8253
+4219 7 466 8253
+4220 c 454 8253
+422c 2 468 8253
+422e 6 472 8253
+4234 d 473 8253
+4241 3 475 8253
+4244 5 476 8253
+4249 6 478 8253
+424f 3 480 8253
+4252 9 481 8253
+425b 2 483 8253
+425d 7 484 8253
+4264 9 472 8253
+426d 24 486 8253
+FUNC 4294 ba 0 _updatetmbcinfo
+4294 a 507 8253
+429e 8 510 8253
+42a6 18 511 8253
+42be 9 545 8253
+42c7 b 513 8253
+42d2 15 516 8253
+42e7 1b 522 8253
+4302 5 527 8253
+4307 1a 534 8253
+4321 8 535 8253
+4329 a 540 8253
+4333 5 548 8253
+4338 8 550 8253
+4340 3 553 8253
+4343 b 554 8253
+FUNC 4350 244 0 setmbcp
+4350 1b 585 8253
+436b 4 586 8253
+436f 8 590 8253
+4377 5 592 8253
+437c 7 593 8253
+4383 a 595 8253
+438d 9 597 8253
+4396 d 603 8253
+43a3 b 605 8253
+43ae 70 607 8253
+441e 2 618 8253
+4420 16 623 8253
+4436 1f 625 8253
+4455 c 626 8253
+4461 3 631 8253
+4464 1a 633 8253
+447e d 635 8253
+448b 9 641 8253
+4494 9 642 8253
+449d e 643 8253
+44ab 12 644 8253
+44bd 11 645 8253
+44ce 4 644 8253
+44d2 e 646 8253
+44e0 f 647 8253
+44ef 4 646 8253
+44f3 c 648 8253
+44ff 12 649 8253
+4511 4 648 8253
+4515 1e 651 8253
+4533 5 652 8253
+4538 7 656 8253
+453f 3 657 8253
+4542 9 661 8253
+454b 5 665 8253
+4550 c 671 8253
+455c 8 672 8253
+4564 b 673 8253
+456f 2 679 8253
+4571 5 684 8253
+4576 3 693 8253
+4579 1b 694 8253
+FUNC 4594 2ae 0 setmbcp_nolock
+4594 28 697 8253
+45bc 5 704 8253
+45c1 8 707 8253
+45c9 8 709 8253
+45d1 5 710 8253
+45d6 12 714 8253
+45e8 8 719 8253
+45f0 1b 716 8253
+460b 11 754 8253
+461c 15 762 8253
+4631 4 766 8253
+4635 d 767 8253
+4642 3 769 8253
+4645 7 770 8253
+464c b 772 8253
+4657 12 775 8253
+4669 1f 777 8253
+4688 b 778 8253
+4693 9 775 8253
+469c 9 782 8253
+46a5 b 783 8253
+46b0 47 786 8253
+46f7 4 789 8253
+46fb 2 791 8253
+46fd 3 793 8253
+4700 4 795 8253
+4704 b 796 8253
+470f 5 800 8253
+4714 c 805 8253
+4720 8 812 8253
+4728 4 722 8253
+472c d 723 8253
+4739 1e 726 8253
+4757 3 729 8253
+475a b 731 8253
+4765 1a 734 8253
+477f 17 735 8253
+4796 9 731 8253
+479f c 726 8253
+47ab 3 739 8253
+47ae 4 741 8253
+47b2 38 742 8253
+47ea 17 743 8253
+4801 11 744 8253
+4812 8 747 8253
+481a 2 748 8253
+481c 26 813 8253
+FUNC 4850 44 0 FindPESection
+4850 0 86 3978
+4850 4 93 3978
+4854 1f 102 3978
+4873 12 105 3978
+4885 c 102 3978
+4891 2 117 3978
+4893 1 118 3978
+FUNC 48a0 4d 0 IsNonwritableInCurrentImage
+48a0 d 143 3978
+48ad 13 158 3978
+48c0 3 168 3978
+48c3 b 169 3978
+48ce 5 170 3978
+48d3 d 179 3978
+48e0 2 187 3978
+48e2 b 189 3978
+FUNC 48f0 2e 0 ValidateImageBase
+48f0 3 38 3978
+48f3 a 44 3978
+48fd 2 46 3978
+48ff 1 62 3978
+4900 7 49 3978
+4907 a 52 3978
+4911 c 56 3978
+491d 1 62 3978
+FUNC 4920 43 0 _onexitinit
+4920 6 201 3795
+4926 d 204 3795
+4933 1a 205 3795
+494d 5 207 3795
+4952 5 212 3795
+4957 4 214 3795
+495b 2 216 3795
+495d 6 217 3795
+FUNC 4964 10a 0 onexit
+4964 1c 81 3795
+4980 6 84 3795
+4986 c6 87 3795
+4a4c 5 90 3795
+4a51 3 93 3795
+4a54 1a 94 3795
+FUNC 4a70 17 0 atexit
+4a70 4 161 3795
+4a74 e 162 3795
+4a82 5 163 3795
+FUNC 4a88 39 0 initp_misc_cfltcvt_tab
+4a88 a 54 5002
+4a92 9 56 5002
+4a9b 1b 58 5002
+4ab6 b 60 5002
+FUNC 4ac4 33 0 callnewh
+4ac4 9 131 6647
+4acd d 133 6647
+4ada e 135 6647
+4ae8 7 138 6647
+4aef 2 136 6647
+4af1 6 139 6647
+FUNC 4af8 8 0 initp_heap_handler
+4af8 0 31 6647
+4af8 7 32 6647
+4aff 1 33 6647
+FUNC 4b00 8 0 initp_misc_purevirt
+4b00 0 179 3233
+4b00 7 180 3233
+4b07 1 181 3233
+FUNC 4b08 e 0 _get_sigabrt
+4b08 0 670 4150
+4b08 e 671 4150
+FUNC 4b18 1d 0 initp_misc_winsig
+4b18 0 57 4150
+4b18 7 58 4150
+4b1f 7 59 4150
+4b26 7 60 4150
+4b2d 7 61 4150
+4b34 1 62 4150
+FUNC 4b38 233 0 raise
+4b38 19 451 4150
+4b51 3 454 4150
+4b54 5 455 4150
+4b59 6 458 4150
+4b5f 2 459 4150
+4b61 2d 461 4150
+4b8e 12 499 4150
+4ba0 e 469 4150
+4bae 5 471 4150
+4bb3 e 480 4150
+4bc1 2 482 4150
+4bc3 e 475 4150
+4bd1 2 477 4150
+4bd3 8 487 4150
+4bdb 5 488 4150
+4be0 8 489 4150
+4be8 46 491 4150
+4c2e 2 492 4150
+4c30 e 464 4150
+4c3e 9 465 4150
+4c47 9 501 4150
+4c50 6 508 4150
+4c56 7 509 4150
+4c5d 5 514 4150
+4c62 a 519 4150
+4c6c 4 526 4150
+4c70 19 527 4150
+4c89 c 541 4150
+4c95 8 542 4150
+4c9d 5 548 4150
+4ca2 a 549 4150
+4cac a 550 4150
+4cb6 5 558 4150
+4cbb 18 565 4150
+4cd3 13 568 4150
+4ce6 e 565 4150
+4cf4 b 571 4150
+4cff 4 575 4150
+4d03 7 576 4150
+4d0a 5 579 4150
+4d0f b 585 4150
+4d1a 2 586 4150
+4d1c 18 587 4150
+4d34 7 595 4150
+4d3b 9 600 4150
+4d44 a 601 4150
+4d4e 5 604 4150
+4d53 18 605 4150
+FUNC 4d6c 8 0 initp_misc_rand_s
+4d6c 0 52 4628
+4d6c 7 53 4628
+4d73 1 54 4628
+FUNC 4d74 98 0 _initstdio
+4d74 a 109 5182
+4d7e 11 118 5182
+4d8f 7 119 5182
+4d96 5 120 5182
+4d9b 1f 130 5182
+4dba 1d 133 5182
+4dd7 7 134 5182
+4dde 7 141 5182
+4de5 11 142 5182
+4df6 9 141 5182
+4dff 2 144 5182
+4e01 b 145 5182
+FUNC 4e0c 30 0 _endstdio
+4e0c 4 173 5182
+4e10 5 175 5182
+4e15 9 178 5182
+4e1e 5 179 5182
+4e23 c 180 5182
+4e2f 8 181 5182
+4e37 5 182 5182
+FUNC 4e3c 65 0 lock_file
+4e3c 9 203 5182
+4e45 18 208 5182
+4e5d 29 213 5182
+4e86 5 215 5182
+4e8b 6 224 5182
+4e91 4 223 5182
+4e95 5 224 5182
+4e9a 7 223 5182
+FUNC 4ea4 31 0 lock_file2
+4ea4 9 246 5182
+4ead 5 251 5182
+4eb2 8 256 5182
+4eba 5 258 5182
+4ebf 6 267 5182
+4ec5 4 266 5182
+4ec9 5 267 5182
+4ece 7 266 5182
+FUNC 4ed8 4e 0 unlock_file
+4ed8 0 288 5182
+4ed8 18 293 5182
+4ef0 5 299 5182
+4ef5 26 300 5182
+4f1b b 308 5182
+FUNC 4f28 1d 0 unlock_file2
+4f28 0 331 5182
+4f28 5 336 5182
+4f2d 5 342 5182
+4f32 8 343 5182
+4f3a b 351 5182
+FUNC 4f48 79 0 x_ismbbtype_l
+4f48 11 223 8159
+4f59 13 224 8159
+4f6c 45 232 8159
+4fb1 10 233 8159
+FUNC 4fc4 12 0 ismbblead
+4fc4 0 181 8159
+4fc4 12 182 8159
+FUNC 4fd8 85 0 wcscat_s
+4fd8 6 13 6351
+4fde 10 18 6351
+4fee 9 19 6351
+4ff7 13 18 6351
+500a 6 46 6351
+5010 6 23 6351
+5016 4 25 6351
+501a 5 26 6351
+501f 5 29 6351
+5024 6 31 6351
+502a 1a 35 6351
+5044 5 39 6351
+5049 4 41 6351
+504d c 42 6351
+5059 4 45 6351
+FUNC 5060 6b 0 wcscpy_s
+5060 6 13 6169
+5066 d 18 6169
+5073 9 19 6169
+507c 13 18 6169
+508f 6 34 6169
+5095 1d 23 6169
+50b2 5 27 6169
+50b7 4 29 6169
+50bb c 30 6169
+50c7 4 33 6169
+FUNC 50cc 19 0 wcslen
+50cc 0 41 6501
+50cc 3 42 6501
+50cf c 44 6501
+50db 9 46 6501
+50e4 1 47 6501
+FUNC 50e8 cc 0 wcsncpy_s
+50e8 6 13 6260
+50ee 11 17 6260
+50ff 4 20 6260
+5103 a 24 6260
+510d 5 25 6260
+5112 3 28 6260
+5115 2 29 6260
+5117 8 31 6260
+511f 13 24 6260
+5132 6 66 6260
+5138 3 33 6260
+513b 3 34 6260
+513e 6 35 6260
+5144 1a 37 6260
+515e 2 41 6260
+5160 1f 45 6260
+517f 5 48 6260
+5184 4 50 6260
+5188 9 54 6260
+5191 6 56 6260
+5197 5 58 6260
+519c 6 59 6260
+51a2 3 61 6260
+51a5 f 62 6260
+FUNC 51b4 273 0 _crtMessageBoxW
+51b4 21 91 4913
+51d5 e 99 4913
+51e3 5 106 4913
+51e8 5 108 4913
+51ed 10 115 4913
+51fd 18 117 4913
+5215 14 118 4913
+5229 15 122 4913
+523e 9 124 4913
+5247 19 127 4913
+5260 9 130 4913
+5269 20 133 4913
+5289 20 136 4913
+52a9 17 138 4913
+52c0 10 139 4913
+52d0 5 141 4913
+52d5 20 143 4913
+52f5 a 147 4913
+52ff 5 152 4913
+5304 9 153 4913
+530d 5 159 4913
+5312 a 161 4913
+531c 5 166 4913
+5321 d 168 4913
+532e a 181 4913
+5338 15 202 4913
+534d 6 205 4913
+5353 13 206 4913
+5366 a 208 4913
+5370 31 213 4913
+53a1 4 222 4913
+53a5 2 224 4913
+53a7 c 226 4913
+53b3 6 228 4913
+53b9 5 229 4913
+53be 5 231 4913
+53c3 11 235 4913
+53d4 6 237 4913
+53da 5 238 4913
+53df 8 240 4913
+53e7 d 247 4913
+53f4 5 248 4913
+53f9 10 250 4913
+5409 2 255 4913
+540b 1c 258 4913
+FUNC 5428 1d 0 _GSHandlerCheck
+5428 4 75 37
+542c f 84 37
+543b 5 91 37
+5440 5 92 37
+FUNC 5448 63 0 _GSHandlerCheckCommon
+5448 6 126 37
+544e d 140 37
+545b 9 149 37
+5464 13 154 37
+5477 7 162 37
+547e b 171 37
+5489 6 173 37
+548f c 175 37
+549b 3 184 37
+549e 3 185 37
+54a1 5 186 37
+54a6 5 185 37
+FUNC 54c0 1f 0 _security_check_cookie
+54c0 0 45 2
+54c0 7 47 2
+54c7 2 48 2
+54c9 4 49 2
+54cd 5 50 2
+54d2 3 51 2
+54d5 1 53 2
+54d6 4 61 2
+54da 5 65 2
+FUNC 54e0 8 0 _crt_debugger_hook
+54e0 0 57 2495
+54e0 7 60 2495
+54e7 1 61 2495
+FUNC 5500 22a 0 memset
+5500 0 55 6812
+5500 3 59 6812
+5503 3 60 6812
+5506 4 61 6812
+550a 6 62 6812
+5510 8 67 6812
+5518 2 68 6812
+551a 1 71 6812
+551b 3 72 6812
+551e 2 73 6812
+5520 3 74 6812
+5523 2 75 6812
+5525 1 76 6812
+5526 2 77 6812
+5528 a 79 6812
+5532 4 80 6812
+5536 8 82 6812
+553e 6 83 6812
+5544 4 87 6812
+5548 2 88 6812
+554a 3 93 6812
+554d 3 94 6812
+5550 2 95 6812
+5552 3 96 6812
+5555 3 97 6812
+5558 3 98 6812
+555b 3 104 6812
+555e 4 105 6812
+5562 4 106 6812
+5566 2 107 6812
+5568 3 113 6812
+556b 4 114 6812
+556f 4 115 6812
+5573 7 116 6812
+557a 3 120 6812
+557d 4 121 6812
+5581 3 122 6812
+5584 2 123 6812
+5586 3 129 6812
+5589 2 130 6812
+558b 2 131 6812
+558d 3 132 6812
+5590 3 133 6812
+5593 2 134 6812
+5595 3 135 6812
+5598 f 136 6812
+55a7 3 147 6812
+55aa 4 148 6812
+55ae 4 149 6812
+55b2 4 150 6812
+55b6 4 151 6812
+55ba 4 152 6812
+55be 3 153 6812
+55c1 4 154 6812
+55c5 4 155 6812
+55c9 4 156 6812
+55cd 2 157 6812
+55cf 11 158 6812
+55e0 5 170 6812
+55e5 4 171 6812
+55e9 3 172 6812
+55ec 2 173 6812
+55ee 3 183 6812
+55f1 3 184 6812
+55f4 4 185 6812
+55f8 4 186 6812
+55fc 3 187 6812
+55ff 5 188 6812
+5604 3 194 6812
+5607 4 195 6812
+560b 2 196 6812
+560d 3 197 6812
+5610 3 204 6812
+5613 4 205 6812
+5617 7 206 6812
+561e 4 207 6812
+5622 4 208 6812
+5626 3 209 6812
+5629 4 210 6812
+562d 4 211 6812
+5631 4 212 6812
+5635 4 213 6812
+5639 2 214 6812
+563b 4 216 6812
+563f 3 221 6812
+5642 4 222 6812
+5646 a 223 6812
+5650 3 236 6812
+5653 4 237 6812
+5657 3 238 6812
+565a 2 239 6812
+565c 4 242 6812
+5660 2 243 6812
+5662 6 248 6812
+5668 3 251 6812
+566b 1 252 6812
+566c a 263 6812
+5676 4 264 6812
+567a 7 265 6812
+5681 8 266 6812
+5689 3 267 6812
+568c 3 268 6812
+568f 3 269 6812
+5692 4e 270 6812
+56e0 4 296 6812
+56e4 3 299 6812
+56e7 4 302 6812
+56eb 3 305 6812
+56ee 1 307 6812
+56ef 4 309 6812
+56f3 2 310 6812
+56f5 4 312 6812
+56f9 3 315 6812
+56fc 4 318 6812
+5700 1 319 6812
+5701 4 321 6812
+5705 3 324 6812
+5708 3 325 6812
+570b 1 326 6812
+570c 4 328 6812
+5710 3 331 6812
+5713 1 332 6812
+5714 4 334 6812
+5718 4 335 6812
+571c 1 336 6812
+571d 4 338 6812
+5721 3 339 6812
+5724 1 340 6812
+5725 4 342 6812
+5729 1 343 6812
+FUNC 572c 55 0 abort
+572c 4 55 2325
+5730 5 72 2325
+5735 5 73 2325
+573a a 75 2325
+5744 9 82 2325
+574d e 87 2325
+575b 7 88 2325
+5762 14 90 2325
+5776 b 100 2325
+FUNC 5784 d3 0 realloc
+5784 15 62 1111
+5799 5 67 1111
+579e a 68 1111
+57a8 5 71 1111
+57ad 5 73 1111
+57b2 2 74 1111
+57b4 6 81 1111
+57ba 24 85 1111
+57de d 94 1111
+57eb c 109 1111
+57f7 6 81 1111
+57fd 8 89 1111
+5805 b 90 1111
+5810 2 91 1111
+5812 10 117 1111
+5822 17 111 1111
+5839 2 112 1111
+583b 17 103 1111
+5852 5 105 1111
+FUNC 5858 9a 0 calloc_impl
+5858 10 21 566
+5868 5 26 566
+586d 1d 28 566
+588a 4 30 566
+588e c 34 566
+589a 2 39 566
+589c 6 41 566
+58a2 13 44 566
+58b5 e 47 566
+58c3 c 59 566
+58cf 5 61 566
+58d4 6 62 566
+58da 2 63 566
+58dc 5 52 566
+58e1 6 53 566
+58e7 b 69 566
+FUNC 58f4 10a 0 _free_lconv_mon
+58f4 0 270 3335
+58f4 e 271 3335
+5902 3 270 3335
+5905 d 274 3335
+5912 5 275 3335
+5917 d 277 3335
+5924 5 278 3335
+5929 d 280 3335
+5936 5 281 3335
+593b d 283 3335
+5948 5 284 3335
+594d d 286 3335
+595a 5 287 3335
+595f d 289 3335
+596c 5 290 3335
+5971 d 292 3335
+597e 5 293 3335
+5983 d 295 3335
+5990 5 296 3335
+5995 d 298 3335
+59a2 5 299 3335
+59a7 d 301 3335
+59b4 5 302 3335
+59b9 10 304 3335
+59c9 5 305 3335
+59ce 10 307 3335
+59de 5 308 3335
+59e3 10 310 3335
+59f3 5 311 3335
+59f8 6 312 3335
+FUNC 5a00 6c 0 _free_lconv_num
+5a00 0 217 3420
+5a00 a 218 3420
+5a0a 3 217 3420
+5a0d c 221 3420
+5a19 5 222 3420
+5a1e d 224 3420
+5a2b 5 225 3420
+5a30 d 227 3420
+5a3d 5 228 3420
+5a42 d 230 3420
+5a4f 5 231 3420
+5a54 d 233 3420
+5a61 5 234 3420
+5a66 6 235 3420
+FUNC 5a6c 3fa 0 _free_lc_time
+5a6c 0 230 3520
+5a6c e 231 3520
+5a7a 3 230 3520
+5a7d 9 234 3520
+5a86 9 235 3520
+5a8f 9 236 3520
+5a98 9 237 3520
+5aa1 9 238 3520
+5aaa 9 239 3520
+5ab3 8 240 3520
+5abb 9 242 3520
+5ac4 9 243 3520
+5acd 9 244 3520
+5ad6 9 245 3520
+5adf 9 246 3520
+5ae8 9 247 3520
+5af1 9 248 3520
+5afa 9 250 3520
+5b03 9 251 3520
+5b0c c 252 3520
+5b18 c 253 3520
+5b24 c 254 3520
+5b30 c 255 3520
+5b3c c 256 3520
+5b48 c 257 3520
+5b54 c 258 3520
+5b60 c 259 3520
+5b6c c 260 3520
+5b78 c 261 3520
+5b84 c 263 3520
+5b90 c 264 3520
+5b9c c 265 3520
+5ba8 c 266 3520
+5bb4 c 267 3520
+5bc0 c 268 3520
+5bcc c 269 3520
+5bd8 c 270 3520
+5be4 c 271 3520
+5bf0 c 272 3520
+5bfc c 273 3520
+5c08 c 274 3520
+5c14 c 276 3520
+5c20 c 277 3520
+5c2c c 279 3520
+5c38 c 280 3520
+5c44 c 281 3520
+5c50 c 284 3520
+5c5c c 285 3520
+5c68 c 286 3520
+5c74 c 287 3520
+5c80 c 288 3520
+5c8c c 289 3520
+5c98 c 290 3520
+5ca4 c 292 3520
+5cb0 c 293 3520
+5cbc c 294 3520
+5cc8 c 295 3520
+5cd4 c 296 3520
+5ce0 c 297 3520
+5cec c 298 3520
+5cf8 c 300 3520
+5d04 c 301 3520
+5d10 c 302 3520
+5d1c c 303 3520
+5d28 c 304 3520
+5d34 c 305 3520
+5d40 c 306 3520
+5d4c c 307 3520
+5d58 c 308 3520
+5d64 c 309 3520
+5d70 c 310 3520
+5d7c c 311 3520
+5d88 c 313 3520
+5d94 c 314 3520
+5da0 c 315 3520
+5dac c 316 3520
+5db8 c 317 3520
+5dc4 c 318 3520
+5dd0 c 319 3520
+5ddc c 320 3520
+5de8 c 321 3520
+5df4 c 322 3520
+5e00 c 323 3520
+5e0c c 324 3520
+5e18 c 326 3520
+5e24 c 327 3520
+5e30 c 329 3520
+5e3c c 330 3520
+5e48 c 331 3520
+5e54 c 333 3520
+5e60 6 336 3520
+FUNC 5e68 2ec 0 __crtLCMapStringA_stat
+5e68 2d 96 8449
+5e95 13 101 8449
+5ea8 21 102 8449
+5ec9 2 106 8449
+5ecb 5 107 8449
+5ed0 2 109 8449
+5ed2 b 133 8449
+5edd 7 134 8449
+5ee4 2c 145 8449
+5f10 7 146 8449
+5f17 7c 149 8449
+5f93 9 150 8449
+5f9c 26 160 8449
+5fc2 29 169 8449
+5feb b 172 8449
+5ff6 b 175 8449
+6001 8 177 8449
+6009 1e 186 8449
+6027 5 190 8449
+602c 7d 196 8449
+60a9 5 197 8449
+60ae 20 207 8449
+60ce 3 210 8449
+60d1 1f 220 8449
+60f0 2 223 8449
+60f2 18 233 8449
+610a 11 240 8449
+611b 11 242 8449
+612c 2 244 8449
+612e 26 245 8449
+FUNC 6154 96 0 _crtLCMapStringA
+6154 12 258 8449
+6166 13 259 8449
+6179 5f 271 8449
+61d8 12 272 8449
+FUNC 61ec 176 0 __crtGetStringTypeA_stat
+61ec 2d 60 8545
+6219 14 80 8545
+622d 7 81 8545
+6234 23 92 8545
+6257 7 93 8545
+625e 7c 96 8545
+62da 9 97 8545
+62e3 10 100 8545
+62f3 21 108 8545
+6314 15 113 8545
+6329 11 115 8545
+633a 2 117 8545
+633c 26 118 8545
+FUNC 6364 7c 0 _crtGetStringTypeA
+6364 11 129 8545
+6375 13 130 8545
+6388 48 140 8545
+63d0 10 141 8545
+FUNC 63e0 39 0 msize
+63e0 4 39 1027
+63e4 19 43 1027
+63fd 5 50 1027
+6402 c 46 1027
+640e 4 50 1027
+6412 7 46 1027
+FUNC 641c a 0 fptrap
+641c 0 46 9698
+641c a 47 9698
+FUNC 6428 8a 0 GetTableIndexFromLocaleName
+6428 1c 52 4248
+6444 2 54 4248
+6446 c 55 4248
+6452 3 59 4248
+6455 20 60 4248
+6475 4 62 4248
+6479 2 65 4248
+647b 3 66 4248
+647e 2 67 4248
+6480 3 68 4248
+6483 4 57 4248
+6487 5 71 4248
+648c b 63 4248
+6497 1b 72 4248
+FUNC 64b4 32 0 _crtDownlevelLocaleNameToLCID
+64b4 4 107 4248
+64b8 5 110 4248
+64bd 5 113 4248
+64c2 e 115 4248
+64d0 f 118 4248
+64df 2 116 4248
+64e1 5 119 4248
+FUNC 64e8 8f 0 _crtLCMapStringEx
+64e8 10 325 4248
+64f8 18 327 4248
+6510 2a 329 4248
+653a 2d 333 4248
+6567 10 334 4248
+FUNC 6578 55 0 _wcsnicmp_ascii
+6578 0 28 4248
+6578 9 30 4248
+6581 5 32 4248
+6586 3 40 4248
+6589 12 36 4248
+659b 11 37 4248
+65ac 4 39 4248
+65b0 f 40 4248
+65bf a 42 4248
+65c9 3 45 4248
+65cc 1 46 4248
+FUNC 65e0 565 0 memcpy
+65e0 0 101 6808
+65e0 3 107 6808
+65e3 3 108 6808
+65e6 4 109 6808
+65ea 6 110 6808
+65f0 3 111 6808
+65f3 2 112 6808
+65f5 3 113 6808
+65f8 3 114 6808
+65fb 3 115 6808
+65fe 6 116 6808
+6604 8 119 6808
+660c 2 120 6808
+660e 1 123 6808
+660f 1 124 6808
+6610 3 125 6808
+6613 3 126 6808
+6616 3 127 6808
+6619 2 128 6808
+661b 1 129 6808
+661c 1 130 6808
+661d 3 131 6808
+6620 1 132 6808
+6621 8 135 6808
+6629 6 136 6808
+662f 3 142 6808
+6632 2 143 6808
+6634 3 144 6808
+6637 2 145 6808
+6639 3 146 6808
+663c 3 147 6808
+663f 2 148 6808
+6641 3 149 6808
+6644 3 150 6808
+6647 2 151 6808
+6649 4 152 6808
+664d 4 153 6808
+6651 3 154 6808
+6654 4 155 6808
+6658 3 156 6808
+665b 2 157 6808
+665d 3 158 6808
+6660 4 159 6808
+6664 2 160 6808
+6666 4 161 6808
+666a 3 167 6808
+666d 4 168 6808
+6671 6 169 6808
+6677 3 175 6808
+667a 4 176 6808
+667e 2 177 6808
+6680 4 178 6808
+6684 3 179 6808
+6687 4 180 6808
+668b 3 181 6808
+668e 2 182 6808
+6690 4 183 6808
+6694 3 189 6808
+6697 2 190 6808
+6699 3 191 6808
+669c 4 192 6808
+66a0 4 200 6808
+66a4 3 201 6808
+66a7 2 202 6808
+66a9 3 205 6808
+66ac 7 207 6808
+66b3 8 208 6808
+66bb 3 209 6808
+66be 46 210 6808
+6704 3 232 6808
+6707 1 233 6808
+6708 4 236 6808
+670c 3 237 6808
+670f 3 238 6808
+6712 1 239 6808
+6713 4 241 6808
+6717 4 242 6808
+671b 3 243 6808
+671e 1 244 6808
+671f 4 246 6808
+6723 5 247 6808
+6728 3 248 6808
+672b 5 249 6808
+6730 3 250 6808
+6733 1 251 6808
+6734 2 253 6808
+6736 3 254 6808
+6739 3 255 6808
+673c 1 256 6808
+673d 4 258 6808
+6741 3 259 6808
+6744 3 260 6808
+6747 4 261 6808
+674b 3 262 6808
+674e 1 263 6808
+674f 4 265 6808
+6753 3 266 6808
+6756 4 267 6808
+675a 4 268 6808
+675e 3 269 6808
+6761 1 270 6808
+6762 4 272 6808
+6766 5 273 6808
+676b 3 274 6808
+676e 3 275 6808
+6771 5 276 6808
+6776 4 277 6808
+677a 3 278 6808
+677d 1 279 6808
+677e 3 281 6808
+6781 3 282 6808
+6784 3 283 6808
+6787 1 284 6808
+6788 4 286 6808
+678c 4 287 6808
+6790 3 288 6808
+6793 4 289 6808
+6797 3 290 6808
+679a 1 291 6808
+679b 4 293 6808
+679f 4 294 6808
+67a3 4 295 6808
+67a7 4 296 6808
+67ab 3 297 6808
+67ae 1 298 6808
+67af 4 300 6808
+67b3 5 301 6808
+67b8 4 302 6808
+67bc 3 303 6808
+67bf 5 304 6808
+67c4 4 305 6808
+67c8 3 306 6808
+67cb 1 307 6808
+67cc 2 309 6808
+67ce 4 310 6808
+67d2 3 311 6808
+67d5 4 312 6808
+67d9 3 313 6808
+67dc 1 314 6808
+67dd 4 316 6808
+67e1 3 317 6808
+67e4 4 318 6808
+67e8 3 319 6808
+67eb 4 320 6808
+67ef 4 321 6808
+67f3 3 322 6808
+67f6 1 323 6808
+67f7 4 325 6808
+67fb 3 326 6808
+67fe 4 327 6808
+6802 4 328 6808
+6806 4 329 6808
+680a 4 330 6808
+680e 3 331 6808
+6811 1 332 6808
+6812 4 334 6808
+6816 5 335 6808
+681b 3 336 6808
+681e 4 337 6808
+6822 3 338 6808
+6825 5 339 6808
+682a 4 340 6808
+682e 4 341 6808
+6832 3 342 6808
+6835 1 343 6808
+6836 4 345 6808
+683a 5 346 6808
+683f 3 347 6808
+6842 e 348 6808
+6850 4 356 6808
+6854 5 357 6808
+6859 4 358 6808
+685d 4 359 6808
+6861 4 360 6808
+6865 5 361 6808
+686a 5 362 6808
+686f 3 363 6808
+6872 4 364 6808
+6876 4 365 6808
+687a 2 366 6808
+687c 4 367 6808
+6880 5 368 6808
+6885 4 381 6808
+6889 6 382 6808
+688f 3 406 6808
+6892 2 407 6808
+6894 4 411 6808
+6898 4 412 6808
+689c 4 413 6808
+68a0 2 414 6808
+68a2 4 419 6808
+68a6 4 420 6808
+68aa 3 421 6808
+68ad 5 422 6808
+68b2 4 423 6808
+68b6 3 424 6808
+68b9 3 425 6808
+68bc 3 426 6808
+68bf 3 431 6808
+68c2 4 432 6808
+68c6 2 433 6808
+68c8 4 434 6808
+68cc 4 435 6808
+68d0 4 452 6808
+68d4 4 453 6808
+68d8 4 455 6808
+68dc 5 456 6808
+68e1 7 457 6808
+68e8 4 458 6808
+68ec 4 459 6808
+68f0 5 460 6808
+68f5 5 461 6808
+68fa 3 462 6808
+68fd 4 463 6808
+6901 4 464 6808
+6905 5 465 6808
+690a 5 466 6808
+690f 4 467 6808
+6913 4 468 6808
+6917 5 469 6808
+691c 5 470 6808
+6921 2 471 6808
+6923 4 473 6808
+6927 4 474 6808
+692b 3 475 6808
+692e 3 480 6808
+6931 4 481 6808
+6935 b 482 6808
+6940 4 487 6808
+6944 4 489 6808
+6948 4 490 6808
+694c 3 491 6808
+694f 2 492 6808
+6951 4 495 6808
+6955 2 496 6808
+6957 4 505 6808
+695b 5 506 6808
+6960 4 507 6808
+6964 4 511 6808
+6968 3 512 6808
+696b 5 513 6808
+6970 4 538 6808
+6974 5 539 6808
+6979 4 540 6808
+697d 4 541 6808
+6981 3 542 6808
+6984 3 543 6808
+6987 13 544 6808
+699a 8 557 6808
+69a2 6 558 6808
+69a8 3 559 6808
+69ab 3 565 6808
+69ae 2 566 6808
+69b0 3 567 6808
+69b3 2 568 6808
+69b5 3 569 6808
+69b8 3 570 6808
+69bb 3 571 6808
+69be 2 572 6808
+69c0 3 573 6808
+69c3 2 574 6808
+69c5 4 575 6808
+69c9 4 576 6808
+69cd 4 577 6808
+69d1 3 578 6808
+69d4 3 579 6808
+69d7 2 580 6808
+69d9 4 581 6808
+69dd 3 582 6808
+69e0 4 583 6808
+69e4 2 584 6808
+69e6 3 590 6808
+69e9 4 591 6808
+69ed 2 592 6808
+69ef 3 598 6808
+69f2 4 599 6808
+69f6 2 600 6808
+69f8 4 601 6808
+69fc 4 602 6808
+6a00 3 603 6808
+6a03 3 604 6808
+6a06 2 605 6808
+6a08 4 606 6808
+6a0c 3 612 6808
+6a0f 2 613 6808
+6a11 3 614 6808
+6a14 c 615 6808
+6a20 3 623 6808
+6a23 3 624 6808
+6a26 4 625 6808
+6a2a 6 626 6808
+6a30 5 634 6808
+6a35 5 635 6808
+6a3a 4 636 6808
+6a3e 4 637 6808
+6a42 4 638 6808
+6a46 5 639 6808
+6a4b 4 640 6808
+6a4f 3 641 6808
+6a52 4 642 6808
+6a56 3 643 6808
+6a59 2 644 6808
+6a5b 4 645 6808
+6a5f 2 646 6808
+6a61 4 661 6808
+6a65 6 662 6808
+6a6b 3 663 6808
+6a6e 3 684 6808
+6a71 2 685 6808
+6a73 4 689 6808
+6a77 4 690 6808
+6a7b 4 691 6808
+6a7f 2 692 6808
+6a81 4 697 6808
+6a85 4 698 6808
+6a89 3 699 6808
+6a8c 3 700 6808
+6a8f 4 701 6808
+6a93 3 702 6808
+6a96 3 703 6808
+6a99 3 704 6808
+6a9c 3 710 6808
+6a9f 4 711 6808
+6aa3 2 712 6808
+6aa5 3 713 6808
+6aa8 8 714 6808
+6ab0 4 721 6808
+6ab4 3 722 6808
+6ab7 5 724 6808
+6abc 5 725 6808
+6ac1 7 726 6808
+6ac8 4 727 6808
+6acc 4 728 6808
+6ad0 5 729 6808
+6ad5 5 730 6808
+6ada 3 731 6808
+6add 4 732 6808
+6ae1 4 733 6808
+6ae5 5 734 6808
+6aea 5 735 6808
+6aef 4 736 6808
+6af3 4 737 6808
+6af7 5 738 6808
+6afc 4 739 6808
+6b00 2 740 6808
+6b02 4 742 6808
+6b06 4 743 6808
+6b0a 3 744 6808
+6b0d 3 749 6808
+6b10 4 750 6808
+6b14 c 751 6808
+6b20 3 756 6808
+6b23 4 758 6808
+6b27 4 759 6808
+6b2b 3 760 6808
+6b2e 2 761 6808
+6b30 4 764 6808
+6b34 2 765 6808
+6b36 4 775 6808
+6b3a 4 776 6808
+6b3e 3 779 6808
+6b41 3 780 6808
+6b44 1 781 6808
+FUNC 6b48 26 0 fileno
+6b48 4 40 5093
+6b4c 1a 41 5093
+6b66 3 42 5093
+6b69 5 43 5093
+FUNC 6b70 5f 0 isatty
+6b70 4 37 1677
+6b74 12 39 1677
+6b86 c 40 1677
+6b92 26 43 1677
+6bb8 12 40 1677
+6bca 5 44 1677
+FUNC 6bd0 4c 0 fflush_nolock
+6bd0 9 97 5660
+6bd9 5 101 5660
+6bde 5 116 5660
+6be3 5 102 5660
+6be8 9 104 5660
+6bf1 5 106 5660
+6bf6 9 111 5660
+6bff 15 112 5660
+6c14 2 115 5660
+6c16 6 116 5660
+FUNC 6c1c 79 0 flush
+6c1c f 142 5660
+6c2b 20 152 5660
+6c4b 17 154 5660
+6c62 7 158 5660
+6c69 6 159 5660
+6c6f 2 161 5660
+6c71 4 162 5660
+6c75 3 163 5660
+6c78 4 167 5660
+6c7c 4 168 5660
+6c80 2 170 5660
+6c82 13 171 5660
+FUNC 6c98 a 0 flushall
+6c98 0 193 5660
+6c98 a 194 5660
+FUNC 6ca4 e6 0 flsall
+6ca4 1c 228 5660
+6cc0 2 230 5660
+6cc2 2 231 5660
+6cc4 9 233 5660
+6ccd 12 235 5660
+6cdf 19 236 5660
+6cf8 8 243 5660
+6d00 11 251 5660
+6d11 6 252 5660
+6d17 a 258 5660
+6d21 6 262 5660
+6d27 2 264 5660
+6d29 b 265 5660
+6d34 10 271 5660
+6d44 12 277 5660
+6d56 7 235 5660
+6d5d a 283 5660
+6d67 9 286 5660
+6d70 1a 290 5660
+FUNC 6d8c a8 0 fcloseall
+6d8c f 43 5472
+6d9b 2 44 5472
+6d9d 9 47 5472
+6da6 f 49 5472
+6db5 13 50 5472
+6dc8 10 55 5472
+6dd8 6 56 5472
+6dde 5 61 5472
+6de3 15 62 5472
+6df8 10 63 5472
+6e08 c 64 5472
+6e14 4 49 5472
+6e18 a 70 5472
+6e22 2 73 5472
+6e24 10 74 5472
+FUNC 6e34 49 0 _raise_securityfailure
+6e34 9 64 2878
+6e3d 6 66 2878
+6e43 10 67 2878
+6e53 8 70 2878
+6e5b 9 79 2878
+6e64 a 81 2878
+6e6e 5 85 2878
+6e73 5 86 2878
+6e78 5 85 2878
+FUNC 6e80 d1 0 _report_gsfailure
+6e80 9 129 2878
+6e89 e 149 2878
+6e97 7 151 2878
+6e9e c 210 2878
+6eaa c 212 2878
+6eb6 10 213 2878
+6ec6 e 214 2878
+6ed4 c 215 2878
+6ee0 a 218 2878
+6eea a 219 2878
+6ef4 a 220 2878
+6efe 18 221 2878
+6f16 15 228 2878
+6f2b 15 229 2878
+6f40 c 236 2878
+6f4c 5 241 2878
+FUNC 6f54 1a4 0 _isa_available_init
+6f54 14 63 5837
+6f68 1f 75 5837
+6f87 23 81 5837
+6faa 3a 88 5837
+6fe4 40 100 5837
+7024 1b 102 5837
+703f 15 106 5837
+7054 b 109 5837
+705f 9 113 5837
+7068 11 114 5837
+7079 6 118 5837
+707f b 120 5837
+708a 7 127 5837
+7091 a 129 5837
+709b a 130 5837
+70a5 e 134 5837
+70b3 a 135 5837
+70bd a 136 5837
+70c7 6 139 5837
+70cd a 140 5837
+70d7 a 141 5837
+70e1 17 147 5837
+FUNC 70f8 47 0 locterm
+70f8 6 186 4530
+70fe 10 187 4530
+710e b 188 4530
+7119 16 191 4530
+712f a 195 4530
+7139 6 198 4530
+FUNC 7150 4e 0 _chkstk
+7150 0 67 9872
+7150 4 71 9872
+7154 4 83 9872
+7158 5 84 9872
+715d 3 86 9872
+7160 5 87 9872
+7165 3 88 9872
+7168 4 89 9872
+716c 9 97 9872
+7175 3 98 9872
+7178 2 99 9872
+717a 6 107 9872
+7180 7 108 9872
+7187 4 109 9872
+718b 3 110 9872
+718e 2 111 9872
+7190 4 112 9872
+7194 5 113 9872
+7199 4 114 9872
+719d 1 115 9872
+FUNC 71a0 d7 0 commit
+71a0 14 39 1490
+71b4 15 43 1490
+71c9 10 44 1490
+71d9 26 45 1490
+71ff 8 47 1490
+7207 b 49 1490
+7212 14 51 1490
+7226 8 52 1490
+722e 2 54 1490
+7230 2 55 1490
+7232 4 59 1490
+7236 7 62 1490
+723d b 66 1490
+7248 3 67 1490
+724b 7 73 1490
+7252 4 75 1490
+7256 13 44 1490
+7269 e 76 1490
+FUNC 7278 e1 0 write
+7278 1e 61 1964
+7296 1d 65 1964
+72b3 c 66 1964
+72bf 27 67 1964
+72e6 8 69 1964
+72ee c 72 1964
+72fa f 73 1964
+7309 2 74 1964
+730b b 75 1964
+7316 8 76 1964
+731e 3 77 1964
+7321 7 82 1964
+7328 4 85 1964
+732c 1b 66 1964
+7347 12 86 1964
+FUNC 735c 7f1 0 write_nolock
+735c 36 94 1964
+7392 11 95 1964
+73a3 3 96 1964
+73a6 3 98 1964
+73a9 5 105 1964
+73ae 7 106 1964
+73b5 25 108 1964
+73da 3a 110 1964
+7414 14 116 1964
+7428 8 119 1964
+7430 d 122 1964
+743d 2b 137 1964
+7468 5 140 1964
+746d 36 142 1964
+74a3 19 146 1964
+74bc 6 147 1964
+74c2 1e 154 1964
+74e0 3 155 1964
+74e3 9 157 1964
+74ec 2 158 1964
+74ee 29 170 1964
+7517 5 176 1964
+751c 8 177 1964
+7524 5 179 1964
+7529 b 181 1964
+7534 2 184 1964
+7536 c 185 1964
+7542 13 186 1964
+7555 1c 188 1964
+7571 3 194 1964
+7574 2 206 1964
+7576 1c 208 1964
+7592 43 233 1964
+75d5 3b 240 1964
+7610 b 248 1964
+761b b 249 1964
+7626 a 257 1964
+7630 40 264 1964
+7670 b 265 1964
+767b 4 267 1964
+767f 9 273 1964
+7688 10 293 1964
+7698 3 219 1964
+769b 12 220 1964
+76ad d 221 1964
+76ba f 277 1964
+76c9 3 279 1964
+76cc 5 286 1964
+76d1 5 289 1964
+76d6 16 290 1964
+76ec 2 292 1964
+76ee 9 293 1964
+76f7 11 154 1964
+7708 12 197 1964
+771a 2 203 1964
+771c 17 204 1964
+7733 8 270 1964
+773b 2 271 1964
+773d 16 252 1964
+7753 8 480 1964
+775b a 484 1964
+7765 9 486 1964
+776e b 489 1964
+7779 7 490 1964
+7780 13 492 1964
+7793 17 305 1964
+77aa 2 308 1964
+77ac 9 310 1964
+77b5 3 314 1964
+77b8 17 315 1964
+77cf a 316 1964
+77d9 b 320 1964
+77e4 7 321 1964
+77eb 4 322 1964
+77ef b 324 1964
+77fa 11 326 1964
+780b 46 334 1964
+7851 4 336 1964
+7855 18 337 1964
+786d 1b 315 1964
+7888 5 456 1964
+788d 4 345 1964
+7891 9 348 1964
+789a 17 351 1964
+78b1 a 352 1964
+78bb b 356 1964
+78c6 9 357 1964
+78cf 6 358 1964
+78d5 f 360 1964
+78e4 14 362 1964
+78f8 46 370 1964
+793e 4 372 1964
+7942 18 373 1964
+795a 1b 351 1964
+7975 5 456 1964
+797a 13 396 1964
+798d 7 398 1964
+7994 b 402 1964
+799f 9 403 1964
+79a8 6 404 1964
+79ae c 406 1964
+79ba 14 408 1964
+79ce 44 419 1964
+7a12 8 421 1964
+7a1a 42 443 1964
+7a5c 4 444 1964
+7a60 7 449 1964
+7a67 8 446 1964
+7a6f 9 456 1964
+7a78 15 460 1964
+7a8d 5 456 1964
+7a92 1f 471 1964
+7ab1 4 474 1964
+7ab5 7 476 1964
+7abc 1e 477 1964
+7ada 7 493 1964
+7ae1 a 494 1964
+7aeb 1d 496 1964
+7b08 b 499 1964
+7b13 7 500 1964
+7b1a 5 501 1964
+7b1f 4 506 1964
+7b23 2a 507 1964
+FUNC 7b50 7a 0 fclose_nolock
+7b50 a 85 5556
+7b5a 6 87 5556
+7b60 19 89 5556
+7b79 6 94 5556
+7b7f 5 103 5556
+7b84 a 104 5556
+7b8e 13 106 5556
+7ba1 5 107 5556
+7ba6 9 109 5556
+7baf 5 118 5556
+7bb4 5 119 5556
+7bb9 4 124 5556
+7bbd 2 125 5556
+7bbf b 126 5556
+FUNC 7bcc 66 0 fclose
+7bcc 12 43 5556
+7bde 3 44 5556
+7be1 20 46 5556
+7c01 6 49 5556
+7c07 4 50 5556
+7c0b 2 53 5556
+7c0d 6 54 5556
+7c13 a 56 5556
+7c1d 8 59 5556
+7c25 2 63 5556
+7c27 b 64 5556
+FUNC 7c34 db 0 isctype_l
+7c34 16 114 7216
+7c4a c 118 7216
+7c56 a 121 7216
+7c60 11 122 7216
+7c71 1b 124 7216
+7c8c 4 126 7216
+7c90 4 127 7216
+7c94 4 128 7216
+7c98 4 129 7216
+7c9c 2 130 7216
+7c9e 4 131 7216
+7ca2 4 132 7216
+7ca6 3 133 7216
+7ca9 29 143 7216
+7cd2 14 145 7216
+7ce6 18 148 7216
+7cfe 11 149 7216
+FUNC 7d10 cf 0 _crt_atoflt_l
+7d10 20 125 7081
+7d30 10 132 7081
+7d40 30 139 7081
+7d70 5 140 7081
+7d75 8 141 7081
+7d7d f 143 7081
+7d8c 9 144 7081
+7d95 5 145 7081
+7d9a 7 147 7081
+7da1 5 150 7081
+7da6 7 151 7081
+7dad 5 152 7081
+7db2 15 155 7081
+7dc7 18 156 7081
+FUNC 7de0 c7 0 atodbl_l
+7de0 22 40 7081
+7e02 d 47 7081
+7e0f 2e 55 7081
+7e3d 11 56 7081
+7e4e 9 57 7081
+7e57 5 58 7081
+7e5c 7 60 7081
+7e63 5 63 7081
+7e68 7 64 7081
+7e6f 5 65 7081
+7e74 15 68 7081
+7e89 1e 69 7081
+FUNC 7ea8 8 0 atoflt_l
+7ea8 0 163 7081
+7ea8 8 167 7081
+FUNC 7eb0 5 0 fpmath
+7eb0 0 56 10323
+7eb0 5 64 10323
+FUNC 7eb8 86 0 cfltcvt_init
+7eb8 0 82 10323
+7eb8 15 84 10323
+7ecd 15 85 10323
+7ee2 7 86 10323
+7ee9 1c 89 10323
+7f05 e 91 10323
+7f13 e 92 10323
+7f21 e 93 10323
+7f2f e 94 10323
+7f3d 1 95 10323
+FUNC 7f50 c7 0 memcmp
+7f50 0 56 6804
+7f50 3 60 6804
+7f53 4 61 6804
+7f57 2 62 6804
+7f59 3 63 6804
+7f5c 4 64 6804
+7f60 2 72 6804
+7f62 3 73 6804
+7f65 2 74 6804
+7f67 3 75 6804
+7f6a 3 76 6804
+7f6d 3 77 6804
+7f70 2 78 6804
+7f72 3 84 6804
+7f75 4 85 6804
+7f79 2 86 6804
+7f7b 3 92 6804
+7f7e 2 93 6804
+7f80 2 94 6804
+7f82 3 95 6804
+7f85 2 96 6804
+7f87 3 97 6804
+7f8a 3 98 6804
+7f8d 2 99 6804
+7f8f 3 106 6804
+7f92 1 107 6804
+7f93 2 114 6804
+7f95 3 115 6804
+7f98 2 116 6804
+7f9a 4 124 6804
+7f9e 2 125 6804
+7fa0 3 126 6804
+7fa3 4 127 6804
+7fa7 2 128 6804
+7fa9 4 129 6804
+7fad 5 130 6804
+7fb2 2 131 6804
+7fb4 4 132 6804
+7fb8 5 133 6804
+7fbd 2 134 6804
+7fbf 4 135 6804
+7fc3 5 136 6804
+7fc8 2 137 6804
+7fca 4 138 6804
+7fce 3 139 6804
+7fd1 2 140 6804
+7fd3 4 141 6804
+7fd7 3 147 6804
+7fda 4 148 6804
+7fde 2 149 6804
+7fe0 3 150 6804
+7fe3 4 151 6804
+7fe7 2 152 6804
+7fe9 4 153 6804
+7fed 3 154 6804
+7ff0 2 155 6804
+7ff2 4 156 6804
+7ff6 2 157 6804
+7ff8 4 164 6804
+7ffc 4 167 6804
+8000 4 170 6804
+8004 4 173 6804
+8008 3 174 6804
+800b 3 175 6804
+800e 3 176 6804
+8011 2 177 6804
+8013 3 178 6804
+8016 1 179 6804
+FUNC 8018 98 0 _lock_fhandle
+8018 15 436 1865
+802d 1c 437 1865
+8049 7 443 1865
+8050 b 445 1865
+805b 7 447 1865
+8062 14 448 1865
+8076 4 449 1865
+807a a 452 1865
+8084 11 458 1865
+8095 5 461 1865
+809a 16 462 1865
+FUNC 80b0 aa 0 free_osfhnd
+80b0 10 257 1865
+80c0 36 260 1865
+80f6 9 263 1865
+80ff c 264 1865
+810b 5 272 1865
+8110 2 273 1865
+8112 5 269 1865
+8117 2 270 1865
+8119 d 266 1865
+8126 9 277 1865
+812f 4 278 1865
+8133 b 280 1865
+813e 8 281 1865
+8146 3 282 1865
+8149 11 284 1865
+FUNC 815c 74 0 get_osfhandle
+815c 4 307 1865
+8160 1a 308 1865
+817a c 309 1865
+8186 23 310 1865
+81a9 6 312 1865
+81af 1c 309 1865
+81cb 5 313 1865
+FUNC 81d0 2a 0 unlock_fhandle
+81d0 0 483 1865
+81d0 2a 484 1865
+FUNC 81fc 43 0 isleadbyte_l
+81fc 8 55 6940
+8204 a 56 6940
+820e 2b 57 6940
+8239 6 58 6940
+FUNC 8240 45 0 isleadbyte
+8240 8 63 6940
+8248 37 64 6940
+827f 6 65 6940
+FUNC 8288 93 0 lseeki64_nolock
+8288 18 106 1769
+82a0 d 116 1769
+82ad b 118 1769
+82b8 6 120 1769
+82be 18 126 1769
+82d6 d 128 1769
+82e3 2 129 1769
+82e5 21 132 1769
+8306 5 133 1769
+830b 10 134 1769
+FUNC 831c 151 0 mbtowc_l
+831c 19 55 7310
+8335 16 56 7310
+834b 5 61 7310
+8350 5 64 7310
+8355 4 65 7310
+8359 2 59 7310
+835b 1b 116 7310
+8376 d 70 7310
+8383 e 73 7310
+8391 5 75 7310
+8396 10 76 7310
+83a6 d 80 7310
+83b3 49 90 7310
+83fc 12 93 7310
+840e 8 99 7310
+8416 2f 108 7310
+8445 5 110 7310
+844a 9 111 7310
+8453 1a 113 7310
+FUNC 8470 8 0 mbtowc
+8470 0 123 7310
+8470 8 124 7310
+FUNC 8478 59 0 putwch_nolock
+8478 9 84 2149
+8481 d 87 2149
+848e c 88 2149
+849a 6 90 2149
+84a0 7 91 2149
+84a7 20 99 2149
+84c7 5 104 2149
+84cc 5 105 2149
+FUNC 84d4 c3 0 close
+84d4 14 41 1396
+84e8 1d 45 1396
+8505 c 46 1396
+8511 26 47 1396
+8537 8 49 1396
+853f b 52 1396
+854a 9 53 1396
+8553 2 54 1396
+8555 b 55 1396
+8560 3 56 1396
+8563 7 61 1396
+856a 4 64 1396
+856e 1b 46 1396
+8589 e 65 1396
+FUNC 8598 ba 0 close_nolock
+8598 d 71 1396
+85a5 5c 92 1396
+8601 a 98 1396
+860b 2 95 1396
+860d 7 100 1396
+8614 21 102 1396
+8635 4 104 1396
+8639 7 106 1396
+8640 5 107 1396
+8645 2 110 1396
+8647 b 111 1396
+FUNC 8654 37 0 freebuf
+8654 6 45 5276
+865a f 48 5276
+8669 9 50 5276
+8672 7 52 5276
+8679 9 53 5276
+8682 3 54 5276
+8685 6 56 5276
+FUNC 8690 5b6 0 ld12tod
+8690 2d 598 10306
+86bd 33 599 10306
+86f0 4 598 10306
+86f4 528 599 10306
+8c1c 2a 600 10306
+FUNC 8c48 5b6 0 ld12tof
+8c48 2d 618 10306
+8c75 33 619 10306
+8ca8 4 618 10306
+8cac 528 619 10306
+91d4 2a 620 10306
+FUNC 9200 861 0 _strgtold12_l
+9200 2a 80 10127
+922a 51 126 10127
+927b 22 129 10127
+929d 6 132 10127
+92a3 3e 133 10127
+92e1 6 238 10127
+92e7 e 241 10127
+92f5 2 240 10127
+92f7 3 241 10127
+92fa 6 242 10127
+9300 6 241 10127
+9306 5 244 10127
+930b 6 245 10127
+9311 b 247 10127
+931c 3 248 10127
+931f 11 244 10127
+9330 1a 251 10127
+934a 5 256 10127
+934f 5 257 10127
+9354 3 260 10127
+9357 5 261 10127
+935c 5 267 10127
+9361 6 207 10127
+9367 c 208 10127
+9373 6 209 10127
+9379 b 211 10127
+9384 2 212 10127
+9386 3 213 10127
+9389 a 208 10127
+9393 11 216 10127
+93a4 5 217 10127
+93a9 5 218 10127
+93ae 7 190 10127
+93b5 5 191 10127
+93ba e 192 10127
+93c8 11 193 10127
+93d9 5 194 10127
+93de b 195 10127
+93e9 9 196 10127
+93f2 9 198 10127
+93fb 5 205 10127
+9400 10 162 10127
+9410 4 163 10127
+9414 2 164 10127
+9416 20 165 10127
+9436 5 168 10127
+943b 5 177 10127
+9440 b 135 10127
+944b 15 138 10127
+9460 f 141 10127
+946f 6 155 10127
+9475 8 265 10127
+947d 5 150 10127
+9482 7 151 10127
+9489 5 152 10127
+948e 5 146 10127
+9493 4 147 10127
+9497 5 159 10127
+949c 10 270 10127
+94ac 5 271 10127
+94b1 5 273 10127
+94b6 2a 133 10127
+94e0 5 345 10127
+94e5 4 346 10127
+94e9 e 347 10127
+94f7 9 350 10127
+9500 5 351 10127
+9505 5 353 10127
+950a 5 359 10127
+950f b 302 10127
+951a b 303 10127
+9525 c 304 10127
+9531 5 305 10127
+9536 5 307 10127
+953b 7 313 10127
+9542 5 314 10127
+9547 5 316 10127
+954c 9 317 10127
+9555 5 319 10127
+955a 5 326 10127
+955f b 280 10127
+956a a 284 10127
+9574 2 287 10127
+9576 5 293 10127
+957b a 131 10127
+9585 3 275 10127
+9588 2 277 10127
+958a 6 328 10127
+9590 d 331 10127
+959d 10 332 10127
+95ad 9 333 10127
+95b6 b 331 10127
+95c1 2 333 10127
+95c3 8 334 10127
+95cb 14 340 10127
+95df 5 343 10127
+95e4 9 297 10127
+95ed 7 367 10127
+95f4 9 373 10127
+95fd 6 374 10127
+9603 7 375 10127
+960a 6 380 10127
+9610 9 383 10127
+9619 3 384 10127
+961c 5 386 10127
+9621 3 424 10127
+9624 7 425 10127
+962b 5 429 10127
+9630 3 392 10127
+9633 3 393 10127
+9636 8 390 10127
+963e 10 395 10127
+964e 5 397 10127
+9653 3 398 10127
+9656 3 399 10127
+9659 5 402 10127
+965e 4 403 10127
+9662 5 405 10127
+9667 4 406 10127
+966b d 410 10127
+9678 d 412 10127
+9685 353 415 10127
+99d8 10 420 10127
+99e8 2 422 10127
+99ea 2 443 10127
+99ec 7 444 10127
+99f3 7 445 10127
+99fa 2 438 10127
+99fc 8 439 10127
+9a04 c 440 10127
+9a10 3 431 10127
+9a13 7 432 10127
+9a1a 5 433 10127
+9a1f 4 452 10127
+9a23 9 455 10127
+9a2c e 457 10127
+9a3a 27 458 10127
+FUNC 9a64 24 0 cfltcvt
+9a64 4 913 9904
+9a68 1b 914 9904
+9a83 5 915 9904
+FUNC 9a88 7e 0 cfltcvt_l
+9a88 13 897 9904
+9a9b 6 902 9904
+9aa1 1a 903 9904
+9abb 23 907 9904
+9ade 5 905 9904
+9ae3 2 906 9904
+9ae5 1c 901 9904
+9b01 5 910 9904
+FUNC 9b08 3b0 0 cftoa_l
+9b08 1f 415 9904
+9b27 2a 426 9904
+9b51 9 428 9904
+9b5a 11 432 9904
+9b6b 5 433 9904
+9b70 27 441 9904
+9b97 18 444 9904
+9baf 25 447 9904
+9bd4 3 448 9904
+9bd7 2 447 9904
+9bd9 4 448 9904
+9bdd 8 451 9904
+9be5 b 456 9904
+9bf0 6 458 9904
+9bf6 a 461 9904
+9c00 5 463 9904
+9c05 16 461 9904
+9c1b 5 463 9904
+9c20 c 464 9904
+9c2c c 466 9904
+9c38 9 472 9904
+9c41 14 478 9904
+9c55 6 480 9904
+9c5b b 485 9904
+9c66 3e 489 9904
+9ca4 3 491 9904
+9ca7 16 492 9904
+9cbd 2 503 9904
+9cbf 6 505 9904
+9cc5 6 509 9904
+9ccb 4 510 9904
+9ccf 3 515 9904
+9cd2 2 517 9904
+9cd4 14 519 9904
+9ce8 9 523 9904
+9cf1 a 528 9904
+9cfb 4 530 9904
+9cff f 532 9904
+9d0e 4 533 9904
+9d12 6 534 9904
+9d18 3 536 9904
+9d1b 2 538 9904
+9d1d 4 539 9904
+9d21 b 541 9904
+9d2c 5 545 9904
+9d31 f 547 9904
+9d40 6 548 9904
+9d46 c 551 9904
+9d52 6 557 9904
+9d58 2 558 9904
+9d5a 5 562 9904
+9d5f 6 564 9904
+9d65 5 566 9904
+9d6a 2 568 9904
+9d6c 5 570 9904
+9d71 2 573 9904
+9d73 3 576 9904
+9d76 3 578 9904
+9d79 1c 585 9904
+9d95 7 591 9904
+9d9c b 597 9904
+9da7 13 598 9904
+9dba 2 599 9904
+9dbc 6 601 9904
+9dc2 2 603 9904
+9dc4 6 605 9904
+9dca 3 606 9904
+9dcd 3 609 9904
+9dd0 3 610 9904
+9dd3 9 611 9904
+9ddc 24 612 9904
+9e00 a 613 9904
+9e0a b 615 9904
+9e15 27 616 9904
+9e3c 7 617 9904
+9e43 b 619 9904
+9e4e 24 620 9904
+9e72 7 621 9904
+9e79 5 623 9904
+9e7e 4 626 9904
+9e82 16 628 9904
+9e98 20 629 9904
+FUNC 9eb8 1f9 0 _cftoe2_l
+9eb8 20 242 9904
+9ed8 1a 246 9904
+9ef2 5 249 9904
+9ef7 11 250 9904
+9f08 27 258 9904
+9f2f 12 266 9904
+9f41 9 268 9904
+9f4a 2b 269 9904
+9f75 9 278 9904
+9f7e 7 279 9904
+9f85 4 285 9904
+9f89 5 286 9904
+9f8e 16 287 9904
+9fa4 6 292 9904
+9faa 33 293 9904
+9fdd 9 300 9904
+9fe6 3 301 9904
+9fe9 9 309 9904
+9ff2 9 315 9904
+9ffb 3 316 9904
+9ffe 4 317 9904
+a002 6 321 9904
+a008 15 322 9904
+a01d 6 323 9904
+a023 6 327 9904
+a029 15 328 9904
+a03e 6 329 9904
+a044 4 332 9904
+a048 9 335 9904
+a051 5 338 9904
+a056 f 340 9904
+a065 15 344 9904
+a07a 21 345 9904
+a09b 16 293 9904
+FUNC a0b4 f7 0 cftoe_l
+a0b4 1b 354 9904
+a0cf 23 362 9904
+a0f2 18 366 9904
+a10a 5 367 9904
+a10f 48 373 9904
+a157 4 374 9904
+a15b 3 376 9904
+a15e 2 377 9904
+a160 32 380 9904
+a192 19 383 9904
+FUNC a1ac 161 0 _cftof2_l
+a1ac 19 638 9904
+a1c5 7 640 9904
+a1cc 19 641 9904
+a1e5 5 644 9904
+a1ea 1b 645 9904
+a205 7 654 9904
+a20c 5 656 9904
+a211 6 655 9904
+a217 9 657 9904
+a220 6 658 9904
+a226 6 672 9904
+a22c 6 673 9904
+a232 6 679 9904
+a238 18 680 9904
+a250 6 681 9904
+a256 2 683 9904
+a258 7 684 9904
+a25f 5 688 9904
+a264 1b 689 9904
+a27f 13 690 9904
+a292 7 696 9904
+a299 9 698 9904
+a2a2 b 700 9904
+a2ad 1e 701 9904
+a2cb 10 702 9904
+a2db 15 706 9904
+a2f0 1d 707 9904
+FUNC a310 d1 0 cftof_l
+a310 18 736 9904
+a328 23 744 9904
+a34b 15 748 9904
+a360 5 749 9904
+a365 38 755 9904
+a39d 4 756 9904
+a3a1 3 758 9904
+a3a4 2 759 9904
+a3a6 25 762 9904
+a3cb 16 765 9904
+FUNC a3e4 134 0 cftog_l
+a3e4 1d 795 9904
+a401 23 810 9904
+a424 18 813 9904
+a43c 5 814 9904
+a441 5 817 9904
+a446 d 818 9904
+a453 23 820 9904
+a476 4 821 9904
+a47a 3 823 9904
+a47d 2 824 9904
+a47f c 826 9904
+a48b 9 835 9904
+a494 4 843 9904
+a498 9 845 9904
+a4a1 3 846 9904
+a4a4 27 849 9904
+a4cb 32 840 9904
+a4fd 1b 851 9904
+FUNC a518 7 0 cropzeros
+a518 0 139 9904
+a518 7 140 9904
+FUNC a520 96 0 cropzeros_l
+a520 9 144 9904
+a529 a 145 9904
+a533 1b 148 9904
+a54e 9 149 9904
+a557 9 151 9904
+a560 8 152 9904
+a568 3 153 9904
+a56b 6 152 9904
+a571 3 155 9904
+a574 8 158 9904
+a57c 10 160 9904
+a58c 3 161 9904
+a58f e 163 9904
+a59d 19 165 9904
+FUNC a5b8 8 0 fassign
+a5b8 0 214 9904
+a5b8 8 215 9904
+FUNC a5c0 40 0 fassign_l
+a5c0 c 175 9904
+a5cc 14 203 9904
+a5e0 8 204 9904
+a5e8 2 205 9904
+a5ea a 206 9904
+a5f4 6 207 9904
+a5fa 6 211 9904
+FUNC a600 7 0 forcdecpt
+a600 0 73 9904
+a600 7 74 9904
+FUNC a608 7f 0 forcdecpt_l
+a608 9 78 9904
+a611 a 79 9904
+a61b d 83 9904
+a628 3 87 9904
+a62b c 88 9904
+a637 d 92 9904
+a644 4 97 9904
+a648 18 102 9904
+a660 2 105 9904
+a662 2 106 9904
+a664 2 107 9904
+a666 9 108 9904
+a66f 18 109 9904
+FUNC a688 12 0 positive
+a688 0 169 9904
+a688 11 170 9904
+a699 1 171 9904
+FUNC a69c 20 0 _termconout
+a69c 15 83 2057
+a6b1 6 85 2057
+a6b7 5 87 2057
+FUNC a6bc 3b 0 _initconout
+a6bc 4 53 2057
+a6c0 32 60 2057
+a6f2 5 61 2057
+FUNC a6f8 222 0 _mtold12
+a6f8 18 34 10294
+a710 4 38 10294
+a714 5 39 10294
+a719 12 40 10294
+a72b 15 41 10294
+a740 9 42 10294
+a749 c 43 10294
+a755 5 42 10294
+a75a d 43 10294
+a767 3 44 10294
+a76a 3 43 10294
+a76d 13 44 10294
+a780 2 45 10294
+a782 3 44 10294
+a785 3 45 10294
+a788 3 41 10294
+a78b 3 45 10294
+a78e 8 41 10294
+a796 b 45 10294
+a7a1 3 41 10294
+a7a4 19 45 10294
+a7bd 4 41 10294
+a7c1 7 45 10294
+a7c8 4 41 10294
+a7cc 1b 45 10294
+a7e7 4 41 10294
+a7eb 7 45 10294
+a7f2 4 41 10294
+a7f6 3 45 10294
+a7f9 15 46 10294
+a80e 3 41 10294
+a811 3 46 10294
+a814 4 41 10294
+a818 3 46 10294
+a81b 2 50 10294
+a81d 4 41 10294
+a821 4 47 10294
+a825 11 50 10294
+a836 3 41 10294
+a839 19 50 10294
+a852 4 41 10294
+a856 7 50 10294
+a85d 17 41 10294
+a874 b 54 10294
+a87f e 56 10294
+a88d 13 57 10294
+a8a0 15 58 10294
+a8b5 16 60 10294
+a8cb 14 61 10294
+a8df 5 62 10294
+a8e4 2 61 10294
+a8e6 3 62 10294
+a8e9 3 61 10294
+a8ec 10 60 10294
+a8fc 1e 65 10294
+FUNC a91c 7a 0 isdigit
+a91c 6 139 6847
+a922 c 140 6847
+a92e 10 142 6847
+a93e 52 146 6847
+a990 6 148 6847
+FUNC a998 152 0 tolower_l
+a998 15 70 7683
+a9ad 9 74 7683
+a9b6 8 77 7683
+a9be 35 79 7683
+a9f3 10 80 7683
+aa03 18 82 7683
+aa1b 25 86 7683
+aa40 4 88 7683
+aa44 4 89 7683
+aa48 4 90 7683
+aa4c 5 91 7683
+aa51 2 92 7683
+aa53 5 94 7683
+aa58 13 97 7683
+aa6b 4a 110 7683
+aab5 3 116 7683
+aab8 6 117 7683
+aabe 1a 119 7683
+aad8 12 120 7683
+FUNC aaec 1e 0 tolower
+aaec 0 143 7683
+aaec 9 145 7683
+aaf5 d 147 7683
+ab02 1 153 7683
+ab03 7 151 7683
+FUNC ab0c 144 0 strrchr
+ab0c 4 80 5933
+ab10 6 84 5933
+ab16 4 89 5933
+ab1a e 96 5933
+ab28 19 105 5933
+ab41 2 106 5933
+ab43 8 108 5933
+ab4b 4 109 5933
+ab4f 8 110 5933
+ab57 3 115 5933
+ab5a 8 116 5933
+ab62 d 121 5933
+ab6f 3 125 5933
+ab72 15 138 5933
+ab87 4 139 5933
+ab8b 2a 147 5933
+abb5 a 148 5933
+abbf 2 149 5933
+abc1 3 153 5933
+abc4 1f 164 5933
+abe3 c 166 5933
+abef a 175 5933
+abf9 3 179 5933
+abfc 3 180 5933
+abff 6 181 5933
+ac05 3 211 5933
+ac08 5 216 5933
+ac0d 5 194 5933
+ac12 a 196 5933
+ac1c 6 197 5933
+ac22 9 194 5933
+ac2b 7 201 5933
+ac32 9 205 5933
+ac3b 6 207 5933
+ac41 9 209 5933
+ac4a 4 213 5933
+ac4e 2 214 5933
+FUNC ac50 cb 0 fptostr
+ac50 d 50 95
+ac5d 4 52 95
+ac61 20 55 95
+ac81 5 56 95
+ac86 22 61 95
+aca8 c 70 95
+acb4 17 77 95
+accb 3 78 95
+acce 5 76 95
+acd3 3 80 95
+acd6 7 87 95
+acdd 2 88 95
+acdf b 90 95
+acea 2 91 95
+acec 5 94 95
+acf1 4 99 95
+acf5 2 101 95
+acf7 17 105 95
+ad0e 2 108 95
+ad10 b 109 95
+FUNC ad1c cd 0 _dtold
+ad1c 5 51 10420
+ad21 8 58 10420
+ad29 1b 60 10420
+ad44 11 61 10420
+ad55 d 63 10420
+ad62 9 81 10420
+ad6b 2 82 10420
+ad6d 6 65 10420
+ad73 2 66 10420
+ad75 8 69 10420
+ad7d 4 70 10420
+ad81 3 71 10420
+ad84 2 73 10420
+ad86 9 76 10420
+ad8f 2 77 10420
+ad91 6 85 10420
+ad97 14 86 10420
+adab 5 89 10420
+adb0 12 92 10420
+adc2 6 93 10420
+adc8 12 94 10420
+adda 4 97 10420
+adde b 99 10420
+FUNC adec b7 0 fltout2
+adec 26 21 10420
+ae12 13 25 10420
+ae25 26 26 10420
+ae4b 6 27 10420
+ae51 4 28 10420
+ae55 19 29 10420
+ae6e 4 30 10420
+ae72 3 32 10420
+ae75 18 33 10420
+ae8d 16 29 10420
+FUNC aea4 ad8 0 $I10_OUTPUT
+aea4 2a 60 9988
+aece 8 96 9988
+aed6 6 98 9988
+aedc 1a 99 9988
+aef6 4 100 9988
+aefa 30 102 9988
+af2a 4 103 9988
+af2e 2 104 9988
+af30 3 105 9988
+af33 18 107 9988
+af4b 17 108 9988
+af62 5 109 9988
+af67 a 112 9988
+af71 1a 116 9988
+af8b 22 118 9988
+afad 13 122 9988
+afc0 1d 124 9988
+afdd a 128 9988
+afe7 1c 130 9988
+b003 8 131 9988
+b00b 2 134 9988
+b00d 1d 136 9988
+b02a 4 137 9988
+b02e 3 138 9988
+b031 5 141 9988
+b036 4 228 9988
+b03a e 256 9988
+b048 7 260 9988
+b04f 6 226 9988
+b055 6 260 9988
+b05b 3 228 9988
+b05e a 260 9988
+b068 4 255 9988
+b06c 5 257 9988
+b071 5 260 9988
+b076 e 228 9988
+b084 8 260 9988
+b08c 5 228 9988
+b091 386 260 9988
+b417 16 263 9988
+b42d 4 264 9988
+b431 e 265 9988
+b43f 3 264 9988
+b442 2a6 265 9988
+b6e8 3 268 9988
+b6eb 11 271 9988
+b6fc 5 272 9988
+b701 f 274 9988
+b710 5 275 9988
+b715 9 281 9988
+b71e 1e 282 9988
+b73c 17 293 9988
+b753 5 292 9988
+b758 7 293 9988
+b75f 5 295 9988
+b764 7 296 9988
+b76b 5 297 9988
+b770 10 298 9988
+b780 3 297 9988
+b783 7 298 9988
+b78a 5 297 9988
+b78f 7 298 9988
+b796 14 302 9988
+b7aa 5 303 9988
+b7af 14 304 9988
+b7c3 5 303 9988
+b7c8 6 304 9988
+b7ce e 305 9988
+b7dc 3 306 9988
+b7df 8 305 9988
+b7e7 4 306 9988
+b7eb 3 305 9988
+b7ee 44 306 9988
+b832 3 307 9988
+b835 3 306 9988
+b838 7 307 9988
+b83f 3 311 9988
+b842 11 307 9988
+b853 3 302 9988
+b856 c 307 9988
+b862 3 310 9988
+b865 11 311 9988
+b876 8 302 9988
+b87e 6 314 9988
+b884 3 315 9988
+b887 6 317 9988
+b88d 6 319 9988
+b893 7 320 9988
+b89a 5 319 9988
+b89f 5 322 9988
+b8a4 3 323 9988
+b8a7 4 324 9988
+b8ab 3 326 9988
+b8ae 7 337 9988
+b8b5 d 338 9988
+b8c2 3 340 9988
+b8c5 27 341 9988
+b8ec e 330 9988
+b8fa 5 331 9988
+b8ff 24 333 9988
+b923 5 334 9988
+b928 15 118 9988
+b93d 15 124 9988
+b952 15 130 9988
+b967 15 136 9988
+PUBLIC b97c 0 RtlUnwindEx
+PUBLIC b982 0 IsProcessorFeaturePresent
+FUNC b990 1e 0 __tmainCRTStartup$filt$0
+b990 1e 267 9116
+FUNC b9ae 19 0 `type_info::_Type_info_dtor'::`1'::fin$0
+b9ae 9 72 10741
+b9b7 10 73 10741
+FUNC b9c7 19 0 _freefls$fin$1
+b9c7 9 413 9313
+b9d0 10 414 9313
+FUNC b9e0 19 0 _freefls$fin$0
+b9e0 9 429 9313
+b9e9 10 430 9313
+FUNC b9f9 19 0 _initptd$fin$1
+b9f9 9 226 9313
+ba02 10 228 9313
+FUNC ba12 19 0 _initptd$fin$0
+ba12 9 247 9313
+ba1b 10 248 9313
+FUNC ba2b 24 0 doexit$fin$0
+ba2b 9 665 9790
+ba34 9 666 9790
+ba3d 12 667 9790
+FUNC ba4f 1b 0 _ioinit$fin$0
+ba4f 9 325 1584
+ba58 12 326 1584
+FUNC ba6a 1d 0 _mtinitlocknum$fin$0
+ba6a 9 292 9509
+ba73 14 293 9509
+FUNC ba87 19 0 __updatetlocinfo$fin$0
+ba87 9 293 3702
+ba90 10 295 3702
+FUNC baa0 19 0 __updatetmbcinfo$fin$0
+baa0 9 538 8253
+baa9 10 540 8253
+FUNC bab9 19 0 _setmbcp$fin$0
+bab9 9 659 8253
+bac2 10 661 8253
+FUNC bae0 20 0 _IsNonwritableInCurrentImage$filt$0
+bae0 20 181 3978
+FUNC bb00 14 0 _onexit$fin$0
+bb00 e 89 3795
+bb0e 6 90 3795
+FUNC bb14 1e 0 raise$fin$0
+bb14 9 574 4150
+bb1d 6 575 4150
+bb23 f 576 4150
+FUNC bb32 28 0 flsall$fin$0
+bb32 9 276 5660
+bb3b 1f 277 5660
+FUNC bb5a 19 0 flsall$fin$1
+bb5a 9 282 5660
+bb63 10 283 5660
+FUNC bb73 19 0 _fcloseall$fin$0
+bb73 9 69 5472
+bb7c 10 70 5472
+FUNC bb8c 19 0 _locterm$fin$0
+bb8c 9 193 4530
+bb95 10 195 4530
+FUNC bba5 17 0 _commit$fin$0
+bba5 9 72 1490
+bbae e 73 1490
+FUNC bbbc 17 0 _write$fin$0
+bbbc 9 81 1964
+bbc5 e 82 1964
+FUNC bbd3 18 0 fclose$fin$0
+bbd3 9 58 5556
+bbdc f 59 5556
+FUNC bbeb 19 0 __lock_fhandle$fin$0
+bbeb 9 451 1865
+bbf4 10 452 1865
+FUNC bc04 17 0 _close$fin$0
+bc04 9 60 1396
+bc0d e 61 1396
+STACK CFI INIT 1010 6a .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 1010 .cfa: $rsp 80 +
+STACK CFI INIT 10d0 36 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 10d0 .cfa: $rsp 48 +
+STACK CFI INIT 1110 26 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 1110 .cfa: $rsp 48 +
+STACK CFI INIT 1180 39 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 1180 .cfa: $rsp 48 +
+STACK CFI INIT 11bc 180 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 11bc .cfa: $rsp 64 +
+STACK CFI INIT 133c 2c .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 133c .cfa: $rsp 48 +
+STACK CFI INIT 1368 12 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 1368 .cfa: $rsp 48 +
+STACK CFI INIT 137c 3d .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 137c .cfa: $rsp 48 +
+STACK CFI INIT 13d0 67 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 13d0 .cfa: $rsp 8 +
+STACK CFI INIT 1438 6c .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 1438 .cfa: $rsp 64 +
+STACK CFI INIT 14a4 38 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 14a4 .cfa: $rsp 48 +
+STACK CFI INIT 14dc 17 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 14dc .cfa: $rsp 48 +
+STACK CFI INIT 14f4 1cc .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 14f4 .cfa: $rsp 48 +
+STACK CFI INIT 16c0 133 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 16c0 .cfa: $rsp 48 +
+STACK CFI INIT 17f4 24 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 17f4 .cfa: $rsp 48 +
+STACK CFI INIT 1818 82 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 1818 .cfa: $rsp 48 +
+STACK CFI INIT 189c c2 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 189c .cfa: $rsp 48 +
+STACK CFI INIT 1960 7f .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 1960 .cfa: $rsp 48 +
+STACK CFI INIT 19e0 24 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 19e0 .cfa: $rsp 48 +
+STACK CFI INIT 1a04 41 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 1a04 .cfa: $rsp 48 +
+STACK CFI INIT 1a48 16 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 1a48 .cfa: $rsp 48 +
+STACK CFI INIT 1a60 26 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 1a60 .cfa: $rsp 48 +
+STACK CFI INIT 1aa8 96 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 1aa8 .cfa: $rsp 48 +
+STACK CFI INIT 1b4c 4b .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 1b4c .cfa: $rsp 48 +
+STACK CFI INIT 1b98 60 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 1b98 .cfa: $rsp 48 +
+STACK CFI INIT 1bf8 39 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 1bf8 .cfa: $rsp 48 +
+STACK CFI INIT 1c4c 195 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 1c4c .cfa: $rsp 112 +
+STACK CFI INIT 1df0 20 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 1df0 .cfa: $rsp 48 +
+STACK CFI INIT 1e10 32d .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 1e10 .cfa: $rsp 224 +
+STACK CFI INIT 2140 f3 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 2140 .cfa: $rsp 64 +
+STACK CFI INIT 2234 1c7 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 2234 .cfa: $rsp 64 +
+STACK CFI INIT 23fc 131 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 23fc .cfa: $rsp 64 +
+STACK CFI INIT 2530 43 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 2530 .cfa: $rsp 48 +
+STACK CFI INIT 25a4 26f .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 25a4 .cfa: $rsp 624 +
+STACK CFI INIT 281c 40 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 281c .cfa: $rsp 48 +
+STACK CFI INIT 285c ac .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 285c .cfa: $rsp 48 +
+STACK CFI INIT 2908 38 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 2908 .cfa: $rsp 48 +
+STACK CFI INIT 2940 38 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 2940 .cfa: $rsp 48 +
+STACK CFI INIT 2978 f4 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 2978 .cfa: $rsp 80 +
+STACK CFI INIT 2a6c 1e1 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 2a6c .cfa: $rsp 112 +
+STACK CFI INIT 2c50 20 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 2c50 .cfa: $rsp 48 +
+STACK CFI INIT 2c70 4e .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 2c70 .cfa: $rsp 48 +
+STACK CFI INIT 2cc0 20 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 2cc0 .cfa: $rsp 48 +
+STACK CFI INIT 2d30 f2 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 2d30 .cfa: $rsp 1472 +
+STACK CFI INIT 2e2c 65 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 2e2c .cfa: $rsp 64 +
+STACK CFI INIT 2e94 1e .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 2e94 .cfa: $rsp 64 +
+STACK CFI INIT 2eb4 3b .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 2eb4 .cfa: $rsp 48 +
+STACK CFI INIT 2ef0 61 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 2ef0 .cfa: $rsp 48 +
+STACK CFI INIT 2f70 a8 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 2f70 .cfa: $rsp 8 +
+STACK CFI INIT 3018 44 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 3018 .cfa: $rsp 48 +
+STACK CFI INIT 305c 87 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 305c .cfa: $rsp 48 +
+STACK CFI INIT 30e4 bd .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 30e4 .cfa: $rsp 48 +
+STACK CFI INIT 31a4 61 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 31a4 .cfa: $rsp 48 +
+STACK CFI INIT 3220 b6 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 3220 .cfa: $rsp 48 +
+STACK CFI INIT 32f0 24 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 32f0 .cfa: $rsp 1248 +
+STACK CFI INIT 3320 18 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 3320 .cfa: $rsp 8 +
+STACK CFI INIT 3340 1 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 3340 .cfa: $rsp 8 +
+STACK CFI INIT 3350 1 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 3350 .cfa: $rsp 8 +
+STACK CFI INIT 3354 1f .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 3354 .cfa: $rsp 48 +
+STACK CFI INIT 3374 1d .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 3374 .cfa: $rsp 48 +
+STACK CFI INIT 3394 6d .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 3394 .cfa: $rsp 80 +
+STACK CFI INIT 3404 71 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 3404 .cfa: $rsp 96 +
+STACK CFI INIT 34e8 2b .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 34e8 .cfa: $rsp 48 +
+STACK CFI INIT 3514 4c .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 3514 .cfa: $rsp 48 +
+STACK CFI INIT 3560 3fa .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 3560 .cfa: $rsp 48 +
+STACK CFI INIT 396c 1f .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 396c .cfa: $rsp 48 +
+STACK CFI INIT 398c 20 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 398c .cfa: $rsp 48 +
+STACK CFI INIT 39ac 7f .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 39ac .cfa: $rsp 48 +
+STACK CFI INIT 3a2c 7a .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 3a2c .cfa: $rsp 48 +
+STACK CFI INIT 3aa8 81 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 3aa8 .cfa: $rsp 48 +
+STACK CFI INIT 3bb8 196 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 3bb8 .cfa: $rsp 48 +
+STACK CFI INIT 3df4 75 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 3df4 .cfa: $rsp 48 +
+STACK CFI INIT 3e6c 62 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 3e6c .cfa: $rsp 48 +
+STACK CFI INIT 3ed0 28 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 3ed0 .cfa: $rsp 48 +
+STACK CFI INIT 3ef8 a8 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 3ef8 .cfa: $rsp 48 +
+STACK CFI INIT 3fa0 7d .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 3fa0 .cfa: $rsp 80 +
+STACK CFI INIT 4020 8e .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 4020 .cfa: $rsp 48 +
+STACK CFI INIT 40b0 1e1 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 40b0 .cfa: $rsp 1424 +
+STACK CFI INIT 4294 ba .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 4294 .cfa: $rsp 48 +
+STACK CFI INIT 4350 244 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 4350 .cfa: $rsp 64 +
+STACK CFI INIT 4594 2ae .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 4594 .cfa: $rsp 112 +
+STACK CFI INIT 48a0 4d .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 48a0 .cfa: $rsp 48 +
+STACK CFI INIT 4920 43 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 4920 .cfa: $rsp 48 +
+STACK CFI INIT 4964 10a .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 4964 .cfa: $rsp 64 +
+STACK CFI INIT 4a70 17 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 4a70 .cfa: $rsp 48 +
+STACK CFI INIT 4a88 39 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 4a88 .cfa: $rsp 48 +
+STACK CFI INIT 4ac4 33 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 4ac4 .cfa: $rsp 48 +
+STACK CFI INIT 4b38 233 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 4b38 .cfa: $rsp 96 +
+STACK CFI INIT 4d74 98 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 4d74 .cfa: $rsp 48 +
+STACK CFI INIT 4e0c 30 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 4e0c .cfa: $rsp 48 +
+STACK CFI INIT 4e3c 65 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 4e3c .cfa: $rsp 48 +
+STACK CFI INIT 4ea4 31 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 4ea4 .cfa: $rsp 48 +
+STACK CFI INIT 4f48 79 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 4f48 .cfa: $rsp 80 +
+STACK CFI INIT 4fd8 85 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 4fd8 .cfa: $rsp 48 +
+STACK CFI INIT 5060 6b .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 5060 .cfa: $rsp 48 +
+STACK CFI INIT 50e8 cc .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 50e8 .cfa: $rsp 48 +
+STACK CFI INIT 51b4 273 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 51b4 .cfa: $rsp 144 +
+STACK CFI INIT 5428 1d .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 5428 .cfa: $rsp 48 +
+STACK CFI INIT 5448 63 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 5448 .cfa: $rsp 48 +
+STACK CFI INIT 54c0 1f .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 54c0 .cfa: $rsp 8 +
+STACK CFI INIT 5500 22a .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 5500 .cfa: $rsp 8 +
+STACK CFI INIT 572c 55 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 572c .cfa: $rsp 48 +
+STACK CFI INIT 5784 d3 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 5784 .cfa: $rsp 48 +
+STACK CFI INIT 5858 9a .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 5858 .cfa: $rsp 48 +
+STACK CFI INIT 58f4 10a .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 58f4 .cfa: $rsp 48 +
+STACK CFI INIT 5a00 6c .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 5a00 .cfa: $rsp 48 +
+STACK CFI INIT 5a6c 3fa .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 5a6c .cfa: $rsp 48 +
+STACK CFI INIT 5e68 2ec .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 5e68 .cfa: $rsp 128 +
+STACK CFI INIT 6154 96 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 6154 .cfa: $rsp 128 +
+STACK CFI INIT 61ec 176 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 61ec .cfa: $rsp 112 +
+STACK CFI INIT 6364 7c .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 6364 .cfa: $rsp 112 +
+STACK CFI INIT 63e0 39 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 63e0 .cfa: $rsp 48 +
+STACK CFI INIT 6428 8a .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 6428 .cfa: $rsp 48 +
+STACK CFI INIT 64b4 32 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 64b4 .cfa: $rsp 48 +
+STACK CFI INIT 64e8 8f .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 64e8 .cfa: $rsp 96 +
+STACK CFI INIT 65e0 565 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 65e0 .cfa: $rsp 8 +
+STACK CFI INIT 6b48 26 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 6b48 .cfa: $rsp 48 +
+STACK CFI INIT 6b70 5f .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 6b70 .cfa: $rsp 48 +
+STACK CFI INIT 6bd0 4c .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 6bd0 .cfa: $rsp 48 +
+STACK CFI INIT 6c1c 79 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 6c1c .cfa: $rsp 48 +
+STACK CFI INIT 6ca4 e6 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 6ca4 .cfa: $rsp 80 +
+STACK CFI INIT 6d8c a8 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 6d8c .cfa: $rsp 64 +
+STACK CFI INIT 6e34 49 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 6e34 .cfa: $rsp 48 +
+STACK CFI INIT 6e80 d1 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 6e80 .cfa: $rsp 64 +
+STACK CFI INIT 6f54 1a4 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 6f54 .cfa: $rsp 32 +
+STACK CFI INIT 70f8 47 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 70f8 .cfa: $rsp 48 +
+STACK CFI INIT 7150 4e .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 7150 .cfa: $rsp 24 +
+STACK CFI INIT 71a0 d7 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 71a0 .cfa: $rsp 64 +
+STACK CFI INIT 7278 e1 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 7278 .cfa: $rsp 80 +
+STACK CFI INIT 735c 7f1 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 735c .cfa: $rsp 7040 +
+STACK CFI INIT 7b50 7a .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 7b50 .cfa: $rsp 48 +
+STACK CFI INIT 7bcc 66 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 7bcc .cfa: $rsp 48 +
+STACK CFI INIT 7c34 db .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 7c34 .cfa: $rsp 128 +
+STACK CFI INIT 7d10 cf .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 7d10 .cfa: $rsp 160 +
+STACK CFI INIT 7de0 c7 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 7de0 .cfa: $rsp 144 +
+STACK CFI INIT 7f50 c7 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 7f50 .cfa: $rsp 8 +
+STACK CFI INIT 8018 98 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 8018 .cfa: $rsp 48 +
+STACK CFI INIT 80b0 aa .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 80b0 .cfa: $rsp 48 +
+STACK CFI INIT 815c 74 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 815c .cfa: $rsp 48 +
+STACK CFI INIT 81fc 43 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 81fc .cfa: $rsp 80 +
+STACK CFI INIT 8240 45 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 8240 .cfa: $rsp 80 +
+STACK CFI INIT 8288 93 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 8288 .cfa: $rsp 48 +
+STACK CFI INIT 831c 151 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 831c .cfa: $rsp 96 +
+STACK CFI INIT 8478 59 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 8478 .cfa: $rsp 64 +
+STACK CFI INIT 84d4 c3 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 84d4 .cfa: $rsp 64 +
+STACK CFI INIT 8598 ba .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 8598 .cfa: $rsp 48 +
+STACK CFI INIT 8654 37 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 8654 .cfa: $rsp 48 +
+STACK CFI INIT 8690 5b6 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 8690 .cfa: $rsp 144 +
+STACK CFI INIT 8c48 5b6 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 8c48 .cfa: $rsp 144 +
+STACK CFI INIT 9200 861 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 9200 .cfa: $rsp 224 +
+STACK CFI INIT 9a64 24 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 9a64 .cfa: $rsp 80 +
+STACK CFI INIT 9a88 7e .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 9a88 .cfa: $rsp 64 +
+STACK CFI INIT 9b08 3b0 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 9b08 .cfa: $rsp 128 +
+STACK CFI INIT 9eb8 1f9 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI 9eb8 .cfa: $rsp 112 +
+STACK CFI INIT a0b4 f7 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI a0b4 .cfa: $rsp 176 +
+STACK CFI INIT a1ac 161 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI a1ac .cfa: $rsp 80 +
+STACK CFI INIT a310 d1 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI a310 .cfa: $rsp 160 +
+STACK CFI INIT a3e4 134 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI a3e4 .cfa: $rsp 176 +
+STACK CFI INIT a520 96 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI a520 .cfa: $rsp 80 +
+STACK CFI INIT a5c0 40 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI a5c0 .cfa: $rsp 64 +
+STACK CFI INIT a608 7f .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI a608 .cfa: $rsp 80 +
+STACK CFI INIT a69c 20 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI a69c .cfa: $rsp 48 +
+STACK CFI INIT a6bc 3b .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI a6bc .cfa: $rsp 80 +
+STACK CFI INIT a6f8 222 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI a6f8 .cfa: $rsp 48 +
+STACK CFI INIT a91c 7a .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI a91c .cfa: $rsp 80 +
+STACK CFI INIT a998 152 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI a998 .cfa: $rsp 128 +
+STACK CFI INIT ab0c 144 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI ab0c .cfa: $rsp 32 +
+STACK CFI INIT ac50 cb .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI ac50 .cfa: $rsp 48 +
+STACK CFI INIT ad1c cd .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI ad1c .cfa: $rsp 8 +
+STACK CFI INIT adec b7 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI adec .cfa: $rsp 176 +
+STACK CFI INIT aea4 ad8 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI aea4 .cfa: $rsp 256 +
+STACK CFI INIT b990 1e .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI b990 .cfa: $rsp 48 +
+STACK CFI INIT b9ae 19 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI b9ae .cfa: $rsp 48 +
+STACK CFI INIT b9c7 19 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI b9c7 .cfa: $rsp 48 +
+STACK CFI INIT b9e0 19 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI b9e0 .cfa: $rsp 48 +
+STACK CFI INIT b9f9 19 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI b9f9 .cfa: $rsp 48 +
+STACK CFI INIT ba12 19 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI ba12 .cfa: $rsp 48 +
+STACK CFI INIT ba2b 24 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI ba2b .cfa: $rsp 48 +
+STACK CFI INIT ba4f 1b .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI ba4f .cfa: $rsp 48 +
+STACK CFI INIT ba6a 1d .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI ba6a .cfa: $rsp 48 +
+STACK CFI INIT ba87 19 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI ba87 .cfa: $rsp 48 +
+STACK CFI INIT baa0 19 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI baa0 .cfa: $rsp 48 +
+STACK CFI INIT bab9 19 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI bab9 .cfa: $rsp 48 +
+STACK CFI INIT bae0 20 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI bae0 .cfa: $rsp 48 +
+STACK CFI INIT bb00 14 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI bb00 .cfa: $rsp 48 +
+STACK CFI INIT bb14 1e .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI bb14 .cfa: $rsp 48 +
+STACK CFI INIT bb32 28 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI bb32 .cfa: $rsp 48 +
+STACK CFI INIT bb5a 19 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI bb5a .cfa: $rsp 48 +
+STACK CFI INIT bb73 19 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI bb73 .cfa: $rsp 48 +
+STACK CFI INIT bb8c 19 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI bb8c .cfa: $rsp 48 +
+STACK CFI INIT bba5 17 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI bba5 .cfa: $rsp 48 +
+STACK CFI INIT bbbc 17 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI bbbc .cfa: $rsp 48 +
+STACK CFI INIT bbd3 18 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI bbd3 .cfa: $rsp 48 +
+STACK CFI INIT bbeb 19 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI bbeb .cfa: $rsp 48 +
+STACK CFI INIT bc04 17 .cfa: $rsp .ra: .cfa 8 - ^
+STACK CFI bc04 .cfa: $rsp 48 +
diff --git a/google-breakpad/src/tools/windows/dump_syms/testdata/omap_reorder_bbs.pdb b/google-breakpad/src/tools/windows/dump_syms/testdata/omap_reorder_bbs.pdb
new file mode 100644
index 0000000..7b6d2ba
--- /dev/null
+++ b/google-breakpad/src/tools/windows/dump_syms/testdata/omap_reorder_bbs.pdb
Binary files differ
diff --git a/google-breakpad/src/tools/windows/dump_syms/testdata/omap_reorder_bbs.sym b/google-breakpad/src/tools/windows/dump_syms/testdata/omap_reorder_bbs.sym
new file mode 100644
index 0000000..716bf33
--- /dev/null
+++ b/google-breakpad/src/tools/windows/dump_syms/testdata/omap_reorder_bbs.sym
@@ -0,0 +1,6210 @@
+MODULE windows x86 99302CF6F3C244F2B8E048BA0268A12F1 omap_reorder_bbs.pdb
+INFO CODE_ID 517C17D711000 omap_reorder_bbs.exe
+FILE 1 c:\src\breakpad\src\src\tools\windows\dump_syms\testdata\dump_syms_regtest.cc
+FILE 2 f:\dd\public\sdk\inc\internal\pebteb.h
+FILE 3 f:\dd\public\sdk\inc\internal\ntldr.h
+FILE 4 f:\dd\public\sdk\inc\internal\ntconfig.h
+FILE 5 f:\dd\public\sdk\inc\internal\ntregapi.h
+FILE 6 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h
+FILE 7 f:\dd\public\ddk\inc\ntdef.h
+FILE 8 f:\dd\public\sdk\inc\internal\ntmmapi.h
+FILE 9 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h
+FILE 10 f:\dd\public\sdk\inc\pshpack1.h
+FILE 11 f:\dd\public\sdk\inc\internal\nxi386.h
+FILE 12 f:\dd\public\ddk\inc\poppack.h
+FILE 13 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\process.h
+FILE 14 f:\dd\public\sdk\inc\pshpack8.h
+FILE 15 f:\dd\public\ddk\inc\ntpoapi.h
+FILE 16 f:\dd\public\sdk\inc\internal\ntexapi.h
+FILE 17 f:\dd\public\sdk\inc\poppack.h
+FILE 18 f:\dd\public\ddk\inc\ntimage.h
+FILE 19 f:\dd\public\ddk\inc\pshpack4.h
+FILE 20 f:\dd\public\sdk\inc\pshpack2.h
+FILE 21 f:\dd\public\ddk\inc\ntnls.h
+FILE 22 f:\dd\public\sdk\inc\internal\ntelfapi.h
+FILE 23 f:\dd\public\sdk\inc\internal\ntpsapi.h
+FILE 24 f:\dd\public\sdk\inc\internal\nti386.h
+FILE 25 f:\dd\public\sdk\inc\specstrings.h
+FILE 26 f:\dd\public\sdk\inc\sal_supp.h
+FILE 27 f:\dd\public\sdk\inc\specstrings_supp.h
+FILE 28 f:\dd\public\sdk\inc\specstrings_strict.h
+FILE 29 f:\dd\public\sdk\inc\specstrings_undef.h
+FILE 30 f:\dd\public\sdk\inc\driverspecs.h
+FILE 31 f:\dd\public\sdk\inc\sdv_driverspecs.h
+FILE 32 f:\dd\public\sdk\inc\basetsd.h
+FILE 33 f:\dd\public\sdk\inc\internal\ntpnpapi.h
+FILE 34 f:\dd\public\sdk\inc\cfg.h
+FILE 35 f:\dd\public\sdk\inc\internal\ntxcapi.h
+FILE 36 f:\dd\public\sdk\inc\guiddef.h
+FILE 37 f:\dd\public\sdk\inc\internal\nt.h
+FILE 38 f:\dd\public\sdk\inc\ntstatus.h
+FILE 39 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h
+FILE 40 f:\dd\public\sdk\inc\internal\ntkeapi.h
+FILE 41 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h
+FILE 42 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h
+FILE 43 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\codeanalysis\sourceannotations.h
+FILE 44 f:\dd\public\sdk\inc\internal\ntobapi.h
+FILE 45 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\string.h
+FILE 46 f:\dd\public\sdk\inc\internal\ntioapi.h
+FILE 47 f:\dd\public\ddk\inc\devioctl.h
+FILE 48 f:\dd\public\sdk\inc\internal\ntseapi.h
+FILE 49 f:\dd\public\ddk\inc\mce.h
+FILE 50 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\misc\i386\chandler4.c
+FILE 51 f:\dd\public\sdk\inc\pshpack4.h
+FILE 52 f:\dd\public\devdiv\inc\ddbanned.h
+FILE 53 f:\dd\public\sdk\inc\internal\ntlpcapi.h
+FILE 54 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h
+FILE 55 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h
+FILE 56 f:\dd\public\sdk\inc\internal\ntiolog.h
+FILE 57 f:\dd\vctools\crt_bld\SELF_X86\crt\prebuild\misc\i386\exsup.asm
+FILE 58 f:\dd\vctools\crt_bld\SELF_X86\crt\prebuild\h\pversion.inc
+FILE 59 f:\dd\vctools\crt_bld\SELF_X86\crt\prebuild\h\cmacros.inc
+FILE 60 f:\dd\vctools\crt_bld\SELF_X86\crt\prebuild\h\exsup.inc
+FILE 61 f:\dd\vctools\crt_bld\SELF_X86\crt\prebuild\misc\i386\nlgsupp.asm
+FILE 62 f:\dd\vctools\crt_bld\SELF_X86\crt\prebuild\misc\i386\exsup4.asm
+FILE 64 f:\dd\vctools\crt_bld\SELF_X86\crt\prebuild\misc\i386\sehprolg4.asm
+FILE 65 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\string\i386\p4_memcpy.c
+FILE 69 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\string\i386\memcmp.c
+FILE 73 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\string\i386\p4_memset.c
+FILE 77 f:\dd\public\sdk\inc\winreg.h
+FILE 78 f:\dd\public\sdk\inc\imm.h
+FILE 79 f:\dd\public\sdk\inc\wingdi.h
+FILE 80 f:\dd\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 81 f:\dd\public\sdk\inc\winerror.h
+FILE 82 f:\dd\public\sdk\inc\ktmtypes.h
+FILE 84 f:\dd\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 85 f:\dd\public\sdk\inc\windef.h
+FILE 86 f:\dd\public\sdk\inc\winbase.h
+FILE 88 f:\dd\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 89 f:\dd\public\sdk\inc\winuser.h
+FILE 91 f:\dd\public\sdk\inc\winnetwk.h
+FILE 92 f:\dd\public\sdk\inc\winnt.h
+FILE 93 f:\dd\public\sdk\inc\wnnc.h
+FILE 94 f:\dd\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 96 f:\dd\public\sdk\inc\winnls.h
+FILE 98 f:\dd\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 99 f:\dd\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 100 f:\dd\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 101 f:\dd\vctools\crt_bld\self_x86\crt\src\codeanalysis\sourceannotations.h
+FILE 102 f:\dd\public\sdk\inc\winver.h
+FILE 103 f:\dd\public\sdk\inc\verrsrc.h
+FILE 104 f:\dd\public\sdk\inc\wincon.h
+FILE 105 f:\dd\public\sdk\inc\stralign.h
+FILE 107 f:\dd\public\sdk\inc\mcx.h
+FILE 108 f:\dd\vctools\crt_bld\self_x86\crt\src\atox.c
+FILE 109 f:\dd\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 110 f:\dd\public\sdk\inc\windows.h
+FILE 111 f:\dd\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 112 f:\dd\public\sdk\inc\sdkddkver.h
+FILE 113 f:\dd\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 114 f:\dd\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 120 f:\dd\public\sdk\inc\reason.h
+FILE 123 f:\dd\public\sdk\inc\kernelspecs.h
+FILE 125 f:\dd\vctools\crt_bld\self_x86\crt\src\tchar.h
+FILE 126 f:\dd\vctools\crt_bld\self_x86\crt\src\mbstring.h
+FILE 127 f:\dd\vctools\crt_bld\self_x86\crt\src\mbctype.h
+FILE 128 f:\dd\public\sdk\inc\ime_cmodes.h
+FILE 130 f:\dd\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 131 f:\dd\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 132 f:\dd\public\sdk\inc\tvout.h
+FILE 145 f:\dd\vctools\crt_bld\self_x86\crt\src\internal_securecrt.h
+FILE 152 f:\dd\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 164 f:\dd\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 165 f:\dd\vctools\crt_bld\self_x86\crt\src\xtoa.c
+FILE 178 f:\dd\vctools\crt_bld\self_x86\crt\src\xtoas.c
+FILE 182 f:\dd\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 224 f:\dd\vctools\crt_bld\self_x86\crt\src\dosmap.c
+FILE 250 f:\dd\vctools\crt_bld\self_x86\crt\src\rtcsup.h
+FILE 251 f:\dd\vctools\crt_bld\self_x86\crt\src\rtcapi.h
+FILE 265 f:\dd\vctools\crt_bld\self_x86\crt\src\winheap.h
+FILE 281 f:\dd\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 291 f:\dd\vctools\crt_bld\self_x86\crt\src\calloc_impl.c
+FILE 299 f:\dd\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 333 f:\dd\vctools\crt_bld\self_x86\crt\src\crtheap.c
+FILE 389 f:\dd\vctools\crt_bld\self_x86\crt\src\free.c
+FILE 453 f:\dd\vctools\crt_bld\self_x86\crt\src\heapinit.c
+FILE 498 f:\dd\vctools\crt_bld\self_x86\crt\src\rterr.h
+FILE 504 f:\dd\vctools\crt_bld\self_x86\crt\src\malloc.c
+FILE 561 f:\dd\vctools\crt_bld\self_x86\crt\src\msize.c
+FILE 618 f:\dd\vctools\crt_bld\self_x86\crt\src\realloc.c
+FILE 677 f:\dd\vctools\crt_bld\self_x86\crt\src\recalloc.c
+FILE 731 f:\dd\vctools\crt_bld\self_x86\crt\src\_newmode.c
+FILE 774 f:\dd\vctools\crt_bld\self_x86\crt\src\msdos.h
+FILE 777 f:\dd\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 792 f:\dd\vctools\crt_bld\self_x86\crt\src\ioinit.c
+FILE 844 f:\dd\vctools\crt_bld\self_x86\crt\src\intel\loadcfg.c
+FILE 892 f:\dd\vctools\crt_bld\self_x86\crt\src\intel\secchk.c
+FILE 904 f:\dd\vctools\crt_bld\self_x86\crt\src\process.h
+FILE 943 f:\dd\vctools\crt_bld\self_x86\crt\src\a_env.c
+FILE 960 f:\dd\vctools\crt_bld\self_x86\crt\src\awint.h
+FILE 975 f:\dd\vctools\crt_bld\self_x86\crt\src\signal.h
+FILE 1011 f:\dd\vctools\crt_bld\self_x86\crt\src\abort.c
+FILE 1039 f:\dd\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 1053 f:\dd\vctools\crt_bld\self_x86\crt\src\crtmbox.c
+FILE 1063 f:\dd\vctools\crt_bld\self_x86\crt\src\crtmboxw.c
+FILE 1065 f:\dd\vctools\crt_bld\self_x86\crt\src\wchar.h
+FILE 1069 f:\dd\vctools\crt_bld\self_x86\crt\src\wtime.inl
+FILE 1120 f:\dd\vctools\crt_bld\self_x86\crt\src\ctype.c
+FILE 1145 f:\dd\vctools\crt_bld\self_x86\crt\src\dbghook.c
+FILE 1181 f:\dd\vctools\crt_bld\self_x86\crt\src\errmode.c
+FILE 1244 f:\dd\vctools\crt_bld\self_x86\crt\src\getqloc.c
+FILE 1288 f:\dd\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 1301 f:\dd\vctools\crt_bld\self_x86\crt\src\glstatus.c
+FILE 1344 f:\dd\vctools\crt_bld\self_x86\crt\src\gs_cookie.c
+FILE 1392 f:\dd\vctools\crt_bld\self_x86\crt\src\gs_report.c
+FILE 1413 f:\binaries.x86ret\inc\mm3dnow.h
+FILE 1415 f:\binaries.x86ret\inc\ammintrin.h
+FILE 1424 f:\binaries.x86ret\inc\immintrin.h
+FILE 1426 f:\binaries.x86ret\inc\wmmintrin.h
+FILE 1427 f:\binaries.x86ret\inc\nmmintrin.h
+FILE 1428 f:\binaries.x86ret\inc\smmintrin.h
+FILE 1429 f:\binaries.x86ret\inc\tmmintrin.h
+FILE 1430 f:\binaries.x86ret\inc\pmmintrin.h
+FILE 1431 f:\binaries.x86ret\inc\emmintrin.h
+FILE 1432 f:\binaries.x86ret\inc\xmmintrin.h
+FILE 1433 f:\binaries.x86ret\inc\mmintrin.h
+FILE 1455 f:\dd\vctools\crt_bld\self_x86\crt\src\gs_support.c
+FILE 1467 f:\dd\vctools\crt_bld\self_x86\crt\src\intrin.h
+FILE 1468 f:\dd\vctools\crt_bld\self_x86\crt\src\setjmp.h
+FILE 1508 f:\dd\vctools\crt_bld\self_x86\crt\src\initcoll.c
+FILE 1568 f:\dd\vctools\crt_bld\self_x86\crt\src\initctyp.c
+FILE 1627 f:\dd\vctools\crt_bld\self_x86\crt\src\inithelp.c
+FILE 1685 f:\dd\vctools\crt_bld\self_x86\crt\src\initmon.c
+FILE 1737 f:\dd\vctools\crt_bld\self_x86\crt\src\nlsint.h
+FILE 1742 f:\dd\vctools\crt_bld\self_x86\crt\src\initnum.c
+FILE 1800 f:\dd\vctools\crt_bld\self_x86\crt\src\inittime.c
+FILE 1855 f:\dd\vctools\crt_bld\self_x86\crt\src\lconv.c
+FILE 1913 f:\dd\vctools\crt_bld\self_x86\crt\src\localref.c
+FILE 1962 f:\dd\vctools\crt_bld\self_x86\crt\src\sect_attribs.h
+FILE 1969 f:\dd\vctools\crt_bld\self_x86\crt\src\onexit.c
+FILE 1989 f:\dd\vctools\crt_bld\self_x86\crt\src\nlsdata1.c
+FILE 2036 f:\dd\vctools\crt_bld\self_x86\crt\src\nlsdata2.c
+FILE 2079 f:\dd\vctools\crt_bld\self_x86\crt\src\pesect.c
+FILE 2128 f:\dd\vctools\crt_bld\self_x86\crt\src\purevirt.c
+FILE 2186 f:\dd\vctools\crt_bld\self_x86\crt\src\rand_s.c
+FILE 2250 f:\dd\vctools\crt_bld\self_x86\crt\src\setlocal.c
+FILE 2311 f:\dd\vctools\crt_bld\self_x86\crt\src\winsig.c
+FILE 2314 f:\dd\vctools\crt_bld\self_x86\crt\src\float.h
+FILE 2315 f:\dd\vctools\crt_bld\self_x86\crt\src\crtwrn.h
+FILE 2369 f:\dd\vctools\crt_bld\self_x86\crt\src\winxfltr.c
+FILE 2394 f:\dd\vctools\crt_bld\self_x86\crt\src\fltintrn.h
+FILE 2419 f:\dd\vctools\crt_bld\self_x86\crt\src\cmiscdat.c
+FILE 2445 f:\dd\vctools\crt_bld\self_x86\crt\src\intel\strncmp.c
+FILE 2468 f:\dd\vctools\crt_bld\self_x86\crt\src\tcscat_s.inl
+FILE 2493 f:\dd\vctools\crt_bld\self_x86\crt\src\strcat_s.c
+FILE 2523 f:\dd\vctools\crt_bld\self_x86\crt\src\tcscpy_s.inl
+FILE 2548 f:\dd\vctools\crt_bld\self_x86\crt\src\strcpy_s.c
+FILE 2578 f:\dd\vctools\crt_bld\self_x86\crt\src\tcsncpy_s.inl
+FILE 2603 f:\dd\vctools\crt_bld\self_x86\crt\src\strncpy_s.c
+FILE 2658 f:\dd\vctools\crt_bld\self_x86\crt\src\wcscat_s.c
+FILE 2713 f:\dd\vctools\crt_bld\self_x86\crt\src\wcscpy_s.c
+FILE 2728 f:\dd\vctools\crt_bld\self_x86\crt\src\wcslen.c
+FILE 2776 f:\dd\vctools\crt_bld\self_x86\crt\src\wcsncpy_s.c
+FILE 2787 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\memcpy.asm
+FILE 2788 f:\dd\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc
+FILE 2789 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\memset.asm
+FILE 2791 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\strcmp.asm
+FILE 2793 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\strcspn.asm
+FILE 2794 f:\dd\vctools\crt_bld\SELF_X86\crt\src\Intel\STRSPN.ASM
+FILE 2796 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\strlen.asm
+FILE 2798 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\_strnicm.asm
+FILE 2800 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\strpbrk.asm
+FILE 2803 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\llmul.asm
+FILE 2805 f:\dd\vctools\crt_bld\SELF_X86\crt\src\mm.inc
+FILE 2806 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\ulldvrm.asm
+FILE 2820 f:\dd\vctools\crt_bld\self_x86\crt\src\handler.cpp
+FILE 2841 f:\dd\vctools\crt_bld\self_x86\crt\src\new.h
+FILE 2875 f:\dd\vctools\crt_bld\self_x86\crt\src\delete.cpp
+FILE 2931 f:\dd\vctools\crt_bld\self_x86\crt\src\_wctype.c
+FILE 2987 f:\dd\vctools\crt_bld\self_x86\crt\src\iswctype.c
+FILE 2998 f:\dd\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 3045 f:\dd\vctools\crt_bld\self_x86\crt\src\isctype.c
+FILE 3106 f:\dd\vctools\crt_bld\self_x86\crt\src\strtol.c
+FILE 3163 f:\dd\vctools\crt_bld\self_x86\crt\src\strtoq.c
+FILE 3218 f:\dd\vctools\crt_bld\self_x86\crt\src\tolower.c
+FILE 3271 f:\dd\vctools\crt_bld\self_x86\crt\src\ismbbyte.c
+FILE 3305 f:\dd\vctools\crt_bld\self_x86\crt\src\mbdata.h
+FILE 3326 f:\dd\vctools\crt_bld\self_x86\crt\src\mbctype.c
+FILE 3386 f:\dd\vctools\crt_bld\self_x86\crt\src\a_loc.c
+FILE 3447 f:\dd\vctools\crt_bld\self_x86\crt\src\a_map.c
+FILE 3507 f:\dd\vctools\crt_bld\self_x86\crt\src\a_str.c
+FILE 3583 f:\dd\vctools\crt_bld\self_x86\crt\src\invarg.c
+FILE 3626 f:\dd\vctools\crt_bld\self_x86\crt\src\stricmp.c
+FILE 3682 f:\dd\vctools\crt_bld\self_x86\crt\src\strnicmp.c
+FILE 3774 f:\dd\vctools\crt_bld\self_x86\crt\src\tidtable.c
+FILE 3778 f:\dd\vctools\crt_bld\self_x86\crt\src\memory.h
+FILE 3838 f:\dd\vctools\crt_bld\self_x86\crt\src\stdenvp.c
+FILE 3860 f:\dd\vctools\crt_bld\self_x86\crt\src\dos.h
+FILE 3891 f:\dd\vctools\crt_bld\self_x86\crt\src\stdargv.c
+FILE 3954 f:\dd\vctools\crt_bld\self_x86\crt\src\mlock.c
+FILE 3998 f:\dd\vctools\crt_bld\self_x86\crt\src\cmsgs.h
+FILE 4012 f:\dd\vctools\crt_bld\self_x86\crt\src\crt0msg.c
+FILE 4072 f:\dd\vctools\crt_bld\self_x86\crt\src\crt0init.c
+FILE 4123 f:\dd\vctools\crt_bld\self_x86\crt\src\crt0fp.c
+FILE 4186 f:\dd\vctools\crt_bld\self_x86\crt\src\crt0dat.c
+FILE 4250 f:\dd\vctools\crt_bld\self_x86\crt\src\crt0.c
+FILE 4274 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\alloca16.asm
+FILE 4276 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\chkstk.asm
+FILE 4289 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\errno.h
+FILE 4293 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\internal.h
+FILE 4294 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\limits.h
+FILE 4295 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\mtdll.h
+FILE 4309 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\sect_attribs.h
+FILE 4315 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\tran\i386\cpu_disp.c
+FILE 4327 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\crtdbg.h
+FILE 4340 f:\dd\vctools\langapi\undname\undname.cxx
+FILE 4345 f:\dd\vctools\langapi\undname\undname.inl
+FILE 4347 f:\dd\vctools\langapi\undname\utf8.h
+FILE 4355 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\swprintf.inl
+FILE 4365 f:\dd\vctools\langapi\undname\undname.hxx
+FILE 4366 f:\dd\vctools\langapi\undname\undname.h
+FILE 4367 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\stdlib.h
+FILE 4368 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\stdio.h
+FILE 4396 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\eh.h
+FILE 4397 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\eh\unhandld.cpp
+FILE 4401 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\ehhooks.h
+FILE 4405 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\ehassert.h
+FILE 4427 f:\dd\vctools\langapi\include\ehdata.h
+FILE 4429 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\stddef.h
+FILE 4449 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\exception
+FILE 4472 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\malloc.h
+FILE 4473 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\eh\typname.cpp
+FILE 4475 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\cstddef
+FILE 4487 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\typeinfo.h
+FILE 4488 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\typeinfo
+FILE 4490 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\xstddef
+FILE 4491 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\yvals.h
+FILE 4492 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\use_ansi.h
+FILE 4493 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\dbgint.h
+FILE 4496 f:\dd\public\internal\vctools\include\undname.h
+FILE 4531 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\eh\typinfo.cpp
+FILE 4591 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\eh\hooks.cpp
+FILE 4643 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\rtc\initsect.cpp
+FILE 4664 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\rtcapi.h
+FILE 4680 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\rtcpriv.h
+FUNC 2cec 54 0 main
+2cec 6 57 1
+2cf2 8 58 1
+2cfa e 59 1
+2d08 8 60 1
+2d10 b 61 1
+2d1b f 62 1
+2d2a 12 64 1
+2d3c 4 65 1
+FUNC 4b70 a 0 google_breakpad::i
+4b70 3 51 1
+4b73 5 52 1
+4b78 2 53 1
+FUNC 25a8 21 0 google_breakpad::C::C()
+25a8 21 37 1
+FUNC 131c 14 0 google_breakpad::C::~C()
+131c 14 38 1
+FUNC 1b94 16 0 google_breakpad::C::set_member(int)
+1b94 16 40 1
+FUNC 11e8 1e 0 google_breakpad::C::f()
+11e8 1e 43 1
+FUNC 1b3c 10 0 google_breakpad::C::g()
+1b3c 10 44 1
+FUNC 669c 7 0 google_breakpad::C::h(google_breakpad::C const &)
+669c 7 45 1
+FUNC 16d4 20 0 google_breakpad::C::`scalar deleting destructor'(unsigned int)
+FUNC 211c c 0 google_breakpad::C::`scalar deleting destructor'(unsigned int)
+FUNC 5458 9 0 google_breakpad::C::`scalar deleting destructor'(unsigned int)
+FUNC 40f4 10 0 type_info::~type_info()
+40f4 2 49 4531
+40f6 d 50 4531
+4103 1 51 4531
+FUNC 1fd4 1c 0 type_info::`scalar deleting destructor'(unsigned int)
+FUNC 46d8 7 0 type_info::`scalar deleting destructor'(unsigned int)
+FUNC 65a8 7 0 type_info::`scalar deleting destructor'(unsigned int)
+FUNC 12a0 b 0 operator delete(void *)
+12a0 5 20 2875
+12a5 1 24 2875
+12a6 5 23 2875
+FUNC 198c 4 0 fast_error_exit
+FUNC 1ff0 18 0 fast_error_exit
+FUNC 455c 12 0 fast_error_exit
+FUNC 4d0c 5 0 fast_error_exit
+1ff0 5 326 4250
+1ff5 13 335 4250
+4d0c 5 337 4250
+455c 8 339 4250
+198c 2 340 4250
+4564 a 340 4250
+198e 2 341 4250
+FUNC 38be 161 0 __tmainCRTStartup
+38be c 196 4250
+38ca a 214 4250
+38d4 b 216 4250
+38df 49 223 4250
+3928 9 225 4250
+3931 8 226 4250
+3939 9 228 4250
+3942 8 229 4250
+394a 5 238 4250
+394f 3 246 4250
+3952 9 248 4250
+395b 8 249 4250
+3963 b 252 4250
+396e a 255 4250
+3978 9 257 4250
+3981 8 258 4250
+3989 9 259 4250
+3992 8 260 4250
+399a 8 262 4250
+39a2 4 263 4250
+39a6 7 264 4250
+39ad a 277 4250
+39b7 18 278 4250
+39cf 5 281 4250
+39d4 6 282 4250
+39da 5 284 4250
+39df 2 286 4250
+39e1 17 287 4250
+39f8 6 293 4250
+39fe 6 295 4250
+3a04 6 296 4250
+3a0a 5 298 4250
+3a0f 7 300 4250
+3a16 3 302 4250
+3a19 6 303 4250
+FUNC 620c a 0 mainCRTStartup
+620c 0 179 4250
+620c 5 186 4250
+6211 5 188 4250
+FUNC 66c3 70 0 type_info::_Type_info_dtor(type_info *)
+66c3 c 62 4473
+66cf 8 63 4473
+66d7 4 64 4473
+66db a 65 4473
+66e5 d 70 4473
+66f2 4 72 4473
+66f6 4 74 4473
+66fa 6 79 4473
+6700 7 80 4473
+6707 9 94 4473
+6710 4 101 4473
+6714 c 103 4473
+6720 6 107 4473
+6726 2 83 4473
+6728 2 72 4473
+672a 9 104 4473
+FUNC 27ab 88 0 strcmp
+27ab 0 65 2791
+27ab 4 73 2791
+27af 4 74 2791
+27b3 6 76 2791
+27b9 2 77 2791
+27bb 2 81 2791
+27bd 2 83 2791
+27bf 2 84 2791
+27c1 2 85 2791
+27c3 2 86 2791
+27c5 3 87 2791
+27c8 2 88 2791
+27ca 2 89 2791
+27cc 2 90 2791
+27ce 3 92 2791
+27d1 3 94 2791
+27d4 2 95 2791
+27d6 2 96 2791
+27d8 2 97 2791
+27da 3 98 2791
+27dd 2 99 2791
+27df 3 100 2791
+27e2 3 101 2791
+27e5 2 102 2791
+27e7 4 103 2791
+27eb 2 107 2791
+27ed 2 108 2791
+27ef 2 115 2791
+27f1 2 116 2791
+27f3 3 117 2791
+27f6 1 118 2791
+27f7 6 122 2791
+27fd 2 123 2791
+27ff 2 125 2791
+2801 3 126 2791
+2804 2 127 2791
+2806 2 128 2791
+2808 3 129 2791
+280b 2 130 2791
+280d 2 131 2791
+280f 6 133 2791
+2815 2 134 2791
+2817 3 139 2791
+281a 3 140 2791
+281d 2 141 2791
+281f 2 142 2791
+2821 2 143 2791
+2823 2 144 2791
+2825 3 145 2791
+2828 2 146 2791
+282a 2 147 2791
+282c 2 148 2791
+282e 3 149 2791
+2831 2 150 2791
+FUNC 26fc 14 0 free
+FUNC 2bcc 2 0 free
+FUNC 3888 18 0 free
+FUNC 3ea0 1f 0 free
+26fc 5 40 389
+2701 f 45 389
+3ea0 11 50 389
+3eb1 e 51 389
+3888 18 53 389
+2bcc 2 55 389
+FUNC 199c 10 0 __CxxUnhandledExceptionFilter(_EXCEPTION_POINTERS *)
+FUNC 2380 6 0 __CxxUnhandledExceptionFilter(_EXCEPTION_POINTERS *)
+FUNC 3ce8 10 0 __CxxUnhandledExceptionFilter(_EXCEPTION_POINTERS *)
+FUNC 4448 14 0 __CxxUnhandledExceptionFilter(_EXCEPTION_POINTERS *)
+FUNC 4778 1c 0 __CxxUnhandledExceptionFilter(_EXCEPTION_POINTERS *)
+FUNC 57d0 10 0 __CxxUnhandledExceptionFilter(_EXCEPTION_POINTERS *)
+FUNC 5a40 5 0 __CxxUnhandledExceptionFilter(_EXCEPTION_POINTERS *)
+FUNC 642c 10 0 __CxxUnhandledExceptionFilter(_EXCEPTION_POINTERS *)
+4778 5 67 4397
+199c 10 68 4397
+3ce8 10 68 4397
+4448 14 68 4397
+477d 17 68 4397
+57d0 10 68 4397
+642c 10 68 4397
+5a40 5 69 4397
+2380 2 72 4397
+2382 4 73 4397
+FUNC 5a28 e 0 __CxxSetUnhandledExceptionFilter
+5a28 0 86 4397
+5a28 b 89 4397
+5a33 2 90 4397
+5a35 1 91 4397
+FUNC 1db0 5 0 __crtCorExitProcess
+FUNC 21a0 1e 0 __crtCorExitProcess
+FUNC 24cc 1a 0 __crtCorExitProcess
+FUNC 4c14 2 0 __crtCorExitProcess
+21a0 5 675 4186
+21a5 b 679 4186
+21b0 e 680 4186
+24cc c 681 4186
+24d8 e 682 4186
+1db0 5 683 4186
+4c14 2 693 4186
+FUNC 6a9b 18 0 __crtExitProcess
+6a9b 5 698 4186
+6aa0 9 699 4186
+6aa9 a 708 4186
+FUNC 2100 9 0 _lockexit
+2100 0 758 4186
+2100 8 759 4186
+2108 1 760 4186
+FUNC 2b50 9 0 _unlockexit
+2b50 0 784 4186
+2b50 8 785 4186
+2b58 1 786 4186
+FUNC 4594 33 0 _init_pointers
+4594 3 809 4186
+4597 7 810 4186
+459e 6 812 4186
+45a4 6 813 4186
+45aa 6 814 4186
+45b0 6 815 4186
+45b6 6 816 4186
+45bc a 817 4186
+45c6 1 818 4186
+FUNC 1bc8 3 0 _initterm_e
+FUNC 1de4 e 0 _initterm_e
+FUNC 22bc 2 0 _initterm_e
+FUNC 2944 10 0 _initterm_e
+FUNC 3dd4 3 0 _initterm_e
+FUNC 3e80 f 0 _initterm_e
+FUNC 6568 10 0 _initterm_e
+2944 6 908 4186
+1de4 e 917 4186
+294a a 917 4186
+6568 10 922 4186
+22bc 2 923 4186
+3dd4 3 924 4186
+1bc8 1 917 4186
+3e80 f 917 4186
+1bc9 2 928 4186
+FUNC 1d44 c 0 _cinit
+FUNC 2470 10 0 _cinit
+FUNC 2558 27 0 _cinit
+FUNC 2660 14 0 _cinit
+FUNC 269c 18 0 _cinit
+FUNC 27a4 2 0 _cinit
+FUNC 34ec 24 0 _cinit
+FUNC 48dc 10 0 _cinit
+FUNC 4bf8 2 0 _cinit
+FUNC 4dd4 18 0 _cinit
+FUNC 5b74 a 0 _cinit
+FUNC 69e4 18 0 _cinit
+FUNC 6f60 2 0 _cinit
+69e4 5 258 4186
+4dd4 18 268 4186
+69e9 13 268 4186
+5b74 a 270 4186
+34ec 5 272 4186
+34f1 11 278 4186
+3502 2 279 4186
+3504 c 280 4186
+2558 c 283 4186
+2470 10 288 4186
+2564 1b 288 4186
+27a4 2 288 4186
+48dc 10 288 4186
+2660 14 301 4186
+269c 18 301 4186
+1d44 c 303 4186
+4bf8 2 307 4186
+6f60 2 308 4186
+FUNC 35a7 140 0 doexit
+35a7 c 489 4186
+35b3 8 507 4186
+35bb 4 508 4186
+35bf f 510 4186
+35ce 5 511 4186
+35d3 8 514 4186
+35db a 516 4186
+35e5 13 532 4186
+35f8 4 533 4186
+35fc d 534 4186
+3609 3 538 4186
+360c 3 539 4186
+360f 11 547 4186
+3620 2 550 4186
+3622 4 552 4186
+3626 6 559 4186
+362c 7 562 4186
+3633 2 565 4186
+3635 a 567 4186
+363f 8 568 4186
+3647 a 570 4186
+3651 6 573 4186
+3657 8 574 4186
+365f 5 576 4186
+3664 21 582 4186
+3685 21 590 4186
+36a6 c 608 4186
+36b2 6 613 4186
+36b8 a 617 4186
+36c2 8 619 4186
+36ca 8 621 4186
+36d2 6 609 4186
+36d8 9 610 4186
+36e1 6 622 4186
+FUNC 6d68 16 0 exit
+6d68 5 392 4186
+6d6d f 393 4186
+6d7c 2 394 4186
+FUNC 5464 16 0 _exit
+5464 5 400 4186
+5469 f 401 4186
+5478 2 402 4186
+FUNC 1df4 f 0 _cexit
+1df4 0 407 4186
+1df4 e 408 4186
+1e02 1 409 4186
+FUNC 5544 f 0 _c_exit
+5544 0 414 4186
+5544 e 415 4186
+5552 1 416 4186
+FUNC 3218 1e 0 _amsg_exit
+3218 5 439 4186
+321d 5 440 4186
+3222 9 441 4186
+322b b 442 4186
+FUNC 1b78 4 0 _GET_RTERRMSG
+FUNC 2888 9 0 _GET_RTERRMSG
+FUNC 44d0 16 0 _GET_RTERRMSG
+FUNC 4858 10 0 _GET_RTERRMSG
+FUNC 6410 7 0 _GET_RTERRMSG
+6410 5 165 4012
+6415 2 168 4012
+44d0 16 169 4012
+4858 10 168 4012
+1b78 2 172 4012
+1b7a 2 173 4012
+2888 7 170 4012
+288f 2 173 4012
+FUNC 11c4 12 0 _NMSG_WRITE
+FUNC 2028 16 0 _NMSG_WRITE
+FUNC 20c0 12 0 _NMSG_WRITE
+FUNC 2460 f 0 _NMSG_WRITE
+FUNC 2648 f 0 _NMSG_WRITE
+FUNC 26c4 1a 0 _NMSG_WRITE
+FUNC 349c 27 0 _NMSG_WRITE
+FUNC 43a4 1e 0 _NMSG_WRITE
+FUNC 4428 a 0 _NMSG_WRITE
+FUNC 47c0 2b 0 _NMSG_WRITE
+FUNC 49a4 18 0 _NMSG_WRITE
+FUNC 4a64 1c 0 _NMSG_WRITE
+FUNC 4d50 17 0 _NMSG_WRITE
+FUNC 4e7c 39 0 _NMSG_WRITE
+FUNC 4f5c 2 0 _NMSG_WRITE
+FUNC 5810 25 0 _NMSG_WRITE
+FUNC 59cc 16 0 _NMSG_WRITE
+FUNC 5d18 34 0 _NMSG_WRITE
+FUNC 64e8 5 0 _NMSG_WRITE
+FUNC 6648 7 0 _NMSG_WRITE
+FUNC 6678 22 0 _NMSG_WRITE
+FUNC 6894 11 0 _NMSG_WRITE
+FUNC 70ac 18 0 _NMSG_WRITE
+4e7c 1b 196 4012
+4e97 8 197 4012
+4e9f 16 199 4012
+11c4 12 226 4012
+2028 16 226 4012
+59cc 16 226 4012
+6894 11 263 4012
+5810 25 272 4012
+47c0 2b 275 4012
+4a64 1c 276 4012
+64e8 5 276 4012
+6648 7 276 4012
+4d50 17 279 4012
+5d18 d 281 4012
+5d25 27 282 4012
+6678 22 285 4012
+43a4 1e 286 4012
+49a4 18 290 4012
+4428 a 272 4012
+70ac a 228 4012
+2460 f 229 4012
+70b6 e 229 4012
+4f5c 2 244 4012
+26c4 a 246 4012
+26ce 10 248 4012
+20c0 12 244 4012
+349c 27 260 4012
+2648 f 294 4012
+FUNC 1984 1 0 _FF_MSGBANNER
+FUNC 2388 16 0 _FF_MSGBANNER
+FUNC 4ab4 16 0 _FF_MSGBANNER
+FUNC 4be0 17 0 _FF_MSGBANNER
+FUNC 5ac8 13 0 _FF_MSGBANNER
+4be0 0 134 4012
+2388 16 138 4012
+4be0 17 138 4012
+5ac8 13 138 4012
+4ab4 a 140 4012
+4abe c 141 4012
+1984 1 143 4012
+FUNC 1490 10 0 _XcptFilter
+FUNC 1540 3 0 _XcptFilter
+FUNC 1720 14 0 _XcptFilter
+FUNC 174c 1b 0 _XcptFilter
+FUNC 19d8 2 0 _XcptFilter
+FUNC 2054 3 0 _XcptFilter
+FUNC 2218 9 0 _XcptFilter
+FUNC 2440 c 0 _XcptFilter
+FUNC 2870 e 0 _XcptFilter
+FUNC 2928 c 0 _XcptFilter
+FUNC 2ae8 11 0 _XcptFilter
+FUNC 2d78 10 0 _XcptFilter
+FUNC 356c f 0 _XcptFilter
+FUNC 38a8 10 0 _XcptFilter
+FUNC 3ed0 10 0 _XcptFilter
+FUNC 3fa4 10 0 _XcptFilter
+FUNC 44e8 7 0 _XcptFilter
+FUNC 4810 17 0 _XcptFilter
+FUNC 4cc8 c 0 _XcptFilter
+FUNC 4f50 7 0 _XcptFilter
+FUNC 5564 e 0 _XcptFilter
+FUNC 56d4 10 0 _XcptFilter
+FUNC 57a4 e 0 _XcptFilter
+FUNC 59f8 16 0 _XcptFilter
+FUNC 5bbc e 0 _XcptFilter
+FUNC 5ca4 10 0 _XcptFilter
+FUNC 5d60 c 0 _XcptFilter
+FUNC 5e38 18 0 _XcptFilter
+FUNC 5e60 10 0 _XcptFilter
+FUNC 6090 c 0 _XcptFilter
+FUNC 61f0 7 0 _XcptFilter
+FUNC 6228 c 0 _XcptFilter
+FUNC 648c c 0 _XcptFilter
+FUNC 64dc 5 0 _XcptFilter
+FUNC 650c 1a 0 _XcptFilter
+FUNC 66a4 c 0 _XcptFilter
+FUNC 68e4 10 0 _XcptFilter
+FUNC 6ee8 3 0 _XcptFilter
+FUNC 6f98 c 0 _XcptFilter
+650c 6 195 2369
+6512 7 202 2369
+6519 d 203 2369
+1720 14 208 2369
+19d8 2 208 2369
+2218 9 208 2369
+2870 e 208 2369
+4810 17 208 2369
+57a4 e 208 2369
+5bbc e 210 2369
+5e60 3 216 2369
+5e63 d 223 2369
+4f50 7 224 2369
+356c f 232 2369
+6f98 4 237 2369
+6f9c 8 238 2369
+5564 3 244 2369
+5567 b 248 2369
+174c a 263 2369
+1756 11 272 2369
+6ee8 3 280 2369
+5e38 18 283 2369
+59f8 16 310 2369
+6090 c 312 2369
+56d4 10 314 2369
+2440 c 316 2369
+5ca4 10 318 2369
+5d60 c 320 2369
+3fa4 10 322 2369
+648c c 324 2369
+68e4 10 326 2369
+4cc8 c 328 2369
+2ae8 10 330 2369
+2928 c 332 2369
+2d78 10 334 2369
+6228 c 336 2369
+1490 10 338 2369
+66a4 c 340 2369
+3ed0 10 342 2369
+61f0 7 344 2369
+38a8 8 353 2369
+38b0 3 358 2369
+38b3 5 360 2369
+44e8 4 365 2369
+44ec 3 366 2369
+64dc 1 366 2369
+64dd 4 372 2369
+1540 3 374 2369
+2054 1 374 2369
+2af8 1 374 2369
+2055 2 376 2369
+FUNC 4139 dc 0 _setenvp
+4139 0 77 3838
+4139 9 85 3838
+4142 6 86 3838
+4148 9 91 3838
+4151 4 98 3838
+4155 8 99 3838
+415d 4 110 3838
+4161 1 111 3838
+4162 b 112 3838
+416d 6 108 3838
+4173 15 117 3838
+4188 2 118 3838
+418a 9 121 3838
+4193 6 123 3838
+4199 9 125 3838
+41a2 10 127 3838
+41b2 f 133 3838
+41c1 3 134 3838
+41c4 7 121 3838
+41cb b 138 3838
+41d6 7 139 3838
+41dd 3 142 3838
+41e0 a 149 3838
+41ea 2 152 3838
+41ec 2 138 3838
+41ee 3 153 3838
+41f1 b 129 3838
+41fc 7 130 3838
+4203 5 131 3838
+4208 d 133 3838
+FUNC 1018 8 0 parse_cmdline
+FUNC 19b4 e 0 parse_cmdline
+FUNC 19f4 2 0 parse_cmdline
+FUNC 1dd0 14 0 parse_cmdline
+FUNC 1fac 28 0 parse_cmdline
+FUNC 2058 f 0 parse_cmdline
+FUNC 209c 9 0 parse_cmdline
+FUNC 2364 1a 0 parse_cmdline
+FUNC 253c 4 0 parse_cmdline
+FUNC 2598 9 0 parse_cmdline
+FUNC 25cc 10 0 parse_cmdline
+FUNC 2718 b 0 parse_cmdline
+FUNC 2730 e 0 parse_cmdline
+FUNC 28a8 a 0 parse_cmdline
+FUNC 28fc 2 0 parse_cmdline
+FUNC 290c 14 0 parse_cmdline
+FUNC 2b34 f 0 parse_cmdline
+FUNC 2bfc 10 0 parse_cmdline
+FUNC 2d88 7 0 parse_cmdline
+FUNC 3730 d 0 parse_cmdline
+FUNC 377c 2 0 parse_cmdline
+FUNC 37b0 10 0 parse_cmdline
+FUNC 3c38 24 0 parse_cmdline
+FUNC 3c84 10 0 parse_cmdline
+FUNC 3db8 1b 0 parse_cmdline
+FUNC 3e90 e 0 parse_cmdline
+FUNC 3efc 13 0 parse_cmdline
+FUNC 4110 12 0 parse_cmdline
+FUNC 42dc f 0 parse_cmdline
+FUNC 42f0 10 0 parse_cmdline
+FUNC 4518 6 0 parse_cmdline
+FUNC 4610 7 0 parse_cmdline
+FUNC 4684 11 0 parse_cmdline
+FUNC 46f8 13 0 parse_cmdline
+FUNC 4848 a 0 parse_cmdline
+FUNC 4994 f 0 parse_cmdline
+FUNC 49bc e 0 parse_cmdline
+FUNC 4aac 1 0 parse_cmdline
+FUNC 4cb8 f 0 parse_cmdline
+FUNC 4ed8 24 0 parse_cmdline
+FUNC 4f10 3 0 parse_cmdline
+FUNC 4f30 e 0 parse_cmdline
+FUNC 501c 10 0 parse_cmdline
+FUNC 5518 3 0 parse_cmdline
+FUNC 569c 3 0 parse_cmdline
+FUNC 57bc 12 0 parse_cmdline
+FUNC 5a50 10 0 parse_cmdline
+FUNC 5cc0 14 0 parse_cmdline
+FUNC 5e84 f 0 parse_cmdline
+FUNC 6448 f 0 parse_cmdline
+FUNC 6530 e 0 parse_cmdline
+FUNC 66b0 13 0 parse_cmdline
+FUNC 6970 4 0 parse_cmdline
+FUNC 6aec 7 0 parse_cmdline
+FUNC 6f30 e 0 parse_cmdline
+1fac 6 221 3891
+1fb2 9 229 3891
+1fbb 2 232 3891
+1fbd 17 234 3891
+2598 9 234 3891
+4f10 3 253 3891
+5e84 f 255 3891
+66b0 5 257 3891
+66b5 9 258 3891
+66be 5 259 3891
+25cc 2 261 3891
+25ce e 262 3891
+1018 8 263 3891
+3db8 2 265 3891
+3dba 19 267 3891
+57bc 2 268 3891
+57be 10 269 3891
+4848 a 270 3891
+4aac 1 271 3891
+2b34 f 275 3891
+42f0 10 275 3891
+4cb8 f 275 3891
+4ed8 14 275 3891
+2730 e 280 3891
+291c 4 281 3891
+253c 4 284 3891
+5cc0 e 289 3891
+37b0 10 290 3891
+49bc e 290 3891
+4610 7 291 3891
+6aec 1 278 3891
+6aed 6 279 3891
+2370 e 294 3891
+3c84 10 298 3891
+209c 9 299 3891
+19f4 2 300 3891
+2718 3 314 3891
+271b 8 318 3891
+28fc 1 321 3891
+28fd 1 322 3891
+4994 f 319 3891
+6448 f 324 3891
+42dc f 327 3891
+4684 11 328 3891
+4eec 10 328 3891
+2914 2 329 3891
+2916 6 330 3891
+3730 d 332 3891
+377c 2 335 3891
+2058 1 339 3891
+4f30 e 339 3891
+2059 e 340 3891
+5cd0 4 341 3891
+501c 10 342 3891
+290c 3 341 3891
+2bfc 10 346 3891
+3c4c 10 346 3891
+3e90 e 346 3891
+6f30 e 346 3891
+19b4 e 351 3891
+3efc 13 353 3891
+4110 12 353 3891
+3c38 b 354 3891
+3c43 2 355 3891
+5a50 a 357 3891
+5a5a 6 358 3891
+1dd0 14 359 3891
+569c 1 360 3891
+569d 2 361 3891
+2364 5 364 3891
+4518 1 366 3891
+4519 5 375 3891
+6530 e 379 3891
+2d88 7 380 3891
+28a8 2 381 3891
+28aa 8 382 3891
+46f8 13 385 3891
+5518 3 386 3891
+6970 2 387 3891
+6972 2 388 3891
+FUNC 1ad8 3 0 _setargv
+FUNC 2008 1f 0 _setargv
+FUNC 22dc 16 0 _setargv
+FUNC 2320 5 0 _setargv
+FUNC 2934 3 0 _setargv
+FUNC 33cc 17 0 _setargv
+FUNC 4254 30 0 _setargv
+FUNC 432c 5 0 _setargv
+FUNC 4ad0 28 0 _setargv
+FUNC 4b8c 2c 0 _setargv
+FUNC 4c4c 12 0 _setargv
+FUNC 6960 10 0 _setargv
+2008 9 88 3891
+2011 16 97 3891
+432c 5 98 3891
+4254 18 104 3891
+2934 3 120 3891
+426c 18 120 3891
+6960 10 120 3891
+4ad0 11 127 3891
+4ae1 17 134 3891
+4c4c 12 134 3891
+22dc a 138 3891
+22e6 c 140 3891
+33cc 9 142 3891
+33d5 2 143 3891
+33d7 c 144 3891
+4b8c 13 151 3891
+4b9f c 156 3891
+4bab 6 160 3891
+4bb1 7 175 3891
+1ad8 3 136 3891
+2320 3 136 3891
+2323 2 176 3891
+FUNC 14f8 30 0 __crtGetEnvironmentStringsA
+FUNC 23d0 10 0 __crtGetEnvironmentStringsA
+FUNC 293c 1 0 __crtGetEnvironmentStringsA
+FUNC 2bbc e 0 __crtGetEnvironmentStringsA
+FUNC 3524 c 0 __crtGetEnvironmentStringsA
+FUNC 3548 f 0 __crtGetEnvironmentStringsA
+FUNC 3d10 18 0 __crtGetEnvironmentStringsA
+FUNC 3df0 8 0 __crtGetEnvironmentStringsA
+FUNC 3dfc 1c 0 __crtGetEnvironmentStringsA
+FUNC 3fb4 22 0 __crtGetEnvironmentStringsA
+FUNC 436c 12 0 __crtGetEnvironmentStringsA
+FUNC 68d4 9 0 __crtGetEnvironmentStringsA
+3fb4 a 40 943
+3fbe 18 49 943
+3df0 8 50 943
+3548 f 54 943
+2bbc e 55 943
+14f8 1 56 943
+436c 12 56 943
+14f9 1b 70 943
+1514 e 74 943
+3d10 18 74 943
+3dfc 1c 88 943
+3524 9 90 943
+352d 3 91 943
+23d0 7 94 943
+23d7 9 95 943
+68d4 7 76 943
+1524 2 77 943
+293c 1 77 943
+68db 2 77 943
+1526 2 96 943
+FUNC 1008 b 0 _ioinit
+FUNC 1258 f 0 _ioinit
+FUNC 12c8 e 0 _ioinit
+FUNC 1548 33 0 _ioinit
+FUNC 1708 18 0 _ioinit
+FUNC 17a4 10 0 _ioinit
+FUNC 197c 2 0 _ioinit
+FUNC 1988 3 0 _ioinit
+FUNC 22f8 1c 0 _ioinit
+FUNC 23e0 4c 0 _ioinit
+FUNC 244c 14 0 _ioinit
+FUNC 24b8 8 0 _ioinit
+FUNC 24e8 1c 0 _ioinit
+FUNC 26e0 1c 0 _ioinit
+FUNC 2ad0 10 0 _ioinit
+FUNC 2b6c f 0 _ioinit
+FUNC 2bf0 5 0 _ioinit
+FUNC 2d54 a 0 _ioinit
+FUNC 2db0 16 0 _ioinit
+FUNC 2dcc 8 0 _ioinit
+FUNC 31a8 4 0 _ioinit
+FUNC 31e0 16 0 _ioinit
+FUNC 3260 f 0 _ioinit
+FUNC 334c 14 0 _ioinit
+FUNC 33ac 12 0 _ioinit
+FUNC 3cb0 3 0 _ioinit
+FUNC 3d28 6 0 _ioinit
+FUNC 3e24 2 0 _ioinit
+FUNC 3e34 20 0 _ioinit
+FUNC 3e5c 1f 0 _ioinit
+FUNC 42a4 f 0 _ioinit
+FUNC 4380 f 0 _ioinit
+FUNC 4434 12 0 _ioinit
+FUNC 4618 6 0 _ioinit
+FUNC 47ec 14 0 _ioinit
+FUNC 4920 a 0 _ioinit
+FUNC 5c70 30 0 _ioinit
+FUNC 5d6c 8 0 _ioinit
+FUNC 617c 18 0 _ioinit
+FUNC 6248 a 0 _ioinit
+FUNC 636c e 0 _ioinit
+FUNC 63f0 14 0 _ioinit
+FUNC 6a74 a 0 _ioinit
+FUNC 6ba0 3f 0 _ioinit
+FUNC 6c4c 14 0 _ioinit
+FUNC 6c84 8 0 _ioinit
+FUNC 6f90 3 0 _ioinit
+5c70 9 111 792
+5c79 a 122 792
+5c83 1d 129 792
+6c84 8 131 792
+3e5c 1f 137 792
+6f90 3 134 792
+23f4 a 139 792
+23fe 3 141 792
+2401 6 143 792
+2407 4 145 792
+240b 3 146 792
+23e0 2 147 792
+240e 1e 147 792
+23e2 f 155 792
+2ad0 10 155 792
+3e34 2 160 792
+3e36 6 166 792
+3e3c 2 167 792
+3e24 2 173 792
+3e3e 16 173 792
+2bf0 5 179 792
+33ac 12 179 792
+1708 18 185 792
+26e0 7 199 792
+26e7 15 201 792
+1010 3 198 792
+1548 4 203 792
+154c 4 205 792
+1550 4 206 792
+1554 10 209 792
+1564 17 210 792
+47ec 14 179 792
+3d28 6 280 792
+4618 6 191 792
+17a4 10 217 792
+1258 f 230 792
+244c 14 230 792
+3260 f 230 792
+334c 14 230 792
+63f0 14 230 792
+6ba0 14 232 792
+6bb4 7 233 792
+6bbb 8 234 792
+6bc3 1c 237 792
+3cb0 3 239 792
+2db0 16 217 792
+1008 2 249 792
+22f8 b 251 792
+2303 11 254 792
+42a4 f 254 792
+6a74 a 302 792
+4434 4 258 792
+24b8 8 262 792
+4438 e 262 792
+4920 a 262 792
+617c 18 262 792
+636c e 262 792
+6c4c 14 262 792
+31e0 16 273 792
+6248 a 274 792
+2b6c f 275 792
+31a8 4 276 792
+24e8 1c 280 792
+5d6c 3 282 792
+5d6f 5 284 792
+2d54 4 293 792
+2d58 6 294 792
+4380 f 249 792
+12c8 c 309 792
+12d4 2 311 792
+197c 2 311 792
+1988 1 311 792
+1989 2 312 792
+2dcc 8 281 792
+FUNC 12ac 3 0 _RTC_Initialize
+FUNC 2d94 10 0 _RTC_Initialize
+FUNC 447c 10 0 _RTC_Initialize
+FUNC 5754 1e 0 _RTC_Initialize
+FUNC 6958 2 0 _RTC_Initialize
+FUNC 2480 3 0 _RTC_Terminate
+FUNC 3cf8 10 0 _RTC_Terminate
+FUNC 3e2c 2 0 _RTC_Terminate
+FUNC 57e0 1e 0 _RTC_Terminate
+FUNC 5c60 10 0 _RTC_Terminate
+FUNC 1474 9 0 _encoded_null
+1474 0 79 3774
+1474 8 80 3774
+147c 1 81 3774
+FUNC 2bb0 9 4 __crtTlsAlloc
+2bb0 0 95 3774
+2bb0 6 96 3774
+2bb6 3 97 3774
+FUNC 3240 1f 0 __set_flsgetvalue
+FUNC 338c 1b 0 __set_flsgetvalue
+FUNC 6444 4 0 __set_flsgetvalue
+3240 3 143 3774
+3243 e 145 3774
+3251 e 146 3774
+338c e 148 3774
+339a d 149 3774
+6444 3 151 3774
+6447 1 155 3774
+FUNC 2068 16 0 _mtterm
+FUNC 2b9c 14 0 _mtterm
+FUNC 48c8 14 0 _mtterm
+FUNC 5b84 5 0 _mtterm
+FUNC 5e0c e 0 _mtterm
+48c8 0 329 3774
+48c8 14 336 3774
+2068 f 337 3774
+2077 7 338 3774
+2b9c 14 342 3774
+5e0c 7 343 3774
+5e13 7 344 3774
+5b84 5 352 3774
+FUNC 10ca b4 0 _initptd
+10ca c 379 3774
+10d6 b 381 3774
+10e1 a 384 3774
+10eb 4 385 3774
+10ef 6 386 3774
+10f5 3 391 3774
+10f8 7 395 3774
+10ff 7 396 3774
+1106 7 397 3774
+110d 8 399 3774
+1115 4 400 3774
+1119 9 402 3774
+1122 c 404 3774
+112e 8 411 3774
+1136 3 412 3774
+1139 6 413 3774
+113f 4 421 3774
+1143 8 422 3774
+114b 9 423 3774
+1154 c 425 3774
+1160 6 428 3774
+1166 6 404 3774
+116c 9 406 3774
+1175 9 426 3774
+FUNC 2954 28 0 _getptd_noexit
+FUNC 4520 1c 0 _getptd_noexit
+FUNC 45cc 1e 0 _getptd_noexit
+FUNC 48ec 23 0 _getptd_noexit
+FUNC 4b28 c 0 _getptd_noexit
+FUNC 616c 9 0 _getptd_noexit
+2954 4 448 3774
+2958 6 452 3774
+295e 1e 460 3774
+45cc 1e 472 3774
+48ec 23 475 3774
+4520 a 481 3774
+452a 6 483 3774
+4530 6 484 3774
+4536 6 486 3774
+616c 7 492 3774
+6173 2 493 3774
+4b28 8 498 3774
+4b30 3 500 3774
+4b33 1 501 3774
+FUNC 12c0 7 0 _getptd
+FUNC 4314 18 0 _getptd
+FUNC 44f4 4 0 _getptd
+FUNC 4f9c 1 0 _getptd
+4314 3 522 3774
+4317 7 523 3774
+431e e 524 3774
+12c0 7 525 3774
+4f9c 1 525 3774
+44f4 3 527 3774
+44f7 1 528 3774
+FUNC 1330 12f 4 _freefls
+1330 c 556 3774
+133c b 567 3774
+1347 7 568 3774
+134e 7 569 3774
+1355 7 571 3774
+135c 7 572 3774
+1363 7 574 3774
+136a 7 575 3774
+1371 7 577 3774
+1378 7 578 3774
+137f 7 580 3774
+1386 7 581 3774
+138d 7 583 3774
+1394 7 584 3774
+139b 7 586 3774
+13a2 7 587 3774
+13a9 a 589 3774
+13b3 7 590 3774
+13ba 8 592 3774
+13c2 4 593 3774
+13c6 1a 596 3774
+13e0 7 597 3774
+13e7 c 599 3774
+13f3 8 603 3774
+13fb 7 605 3774
+1402 7 606 3774
+1409 7 608 3774
+1410 15 611 3774
+1425 7 612 3774
+142c c 615 3774
+1438 7 619 3774
+143f 8 622 3774
+1447 3 599 3774
+144a 9 600 3774
+1453 3 615 3774
+1456 9 616 3774
+FUNC 1608 54 0 _mtinit
+FUNC 2228 5 0 _mtinit
+FUNC 3768 13 0 _mtinit
+FUNC 3880 2 0 _mtinit
+FUNC 3ba8 3 0 _mtinit
+FUNC 3cb8 1e 0 _mtinit
+FUNC 3d90 28 0 _mtinit
+FUNC 45ec 9 0 _mtinit
+FUNC 47a4 19 0 _mtinit
+FUNC 4c18 1f 0 _mtinit
+FUNC 547c 52 0 _mtinit
+FUNC 54f8 16 0 _mtinit
+FUNC 58b0 24 0 _mtinit
+FUNC 597c 33 0 _mtinit
+FUNC 5c28 e 0 _mtinit
+FUNC 6458 1e 0 _mtinit
+6458 3 203 3774
+645b d 211 3774
+6468 e 212 3774
+45ec 5 213 3774
+45f1 3 214 3774
+1608 1 300 3774
+45f4 1 300 3774
+1609 e 218 3774
+1617 d 221 3774
+1624 d 224 3774
+1631 d 227 3774
+163e 1e 228 3774
+3768 13 228 3774
+599c 13 228 3774
+5c28 e 228 3774
+58b0 a 231 3774
+58ba 1a 235 3774
+47a4 19 244 3774
+54f8 16 244 3774
+547c 5 249 3774
+5481 e 256 3774
+548f d 257 3774
+549c d 258 3774
+54a9 12 259 3774
+54bb 7 266 3774
+54c2 c 268 3774
+3d90 1d 274 3774
+3dad b 276 3774
+3cb8 1e 284 3774
+4c18 1f 284 3774
+597c a 294 3774
+5986 6 296 3774
+598c 6 297 3774
+5992 9 299 3774
+2228 5 286 3774
+3880 2 245 3774
+3ba8 2 245 3774
+3baa 1 300 3774
+FUNC 472c 1e 0 _heap_init
+472c 0 40 453
+472c 1d 44 453
+4749 1 60 453
+FUNC 503b 45 0 _SEH_prolog4
+FUNC 5080 14 0 _SEH_epilog4
+FUNC 10b0 1a 0 _except_handler4
+FUNC 1180 c 0 _except_handler4
+FUNC 1528 17 0 _except_handler4
+FUNC 1734 10 0 _except_handler4
+FUNC 1768 2c 0 _except_handler4
+FUNC 210c 10 0 _except_handler4
+FUNC 267c 13 0 _except_handler4
+FUNC 2bd0 20 0 _except_handler4
+FUNC 3270 a 0 _except_handler4
+FUNC 3754 13 0 _except_handler4
+FUNC 3b48 36 0 _except_handler4
+FUNC 3d54 3 0 _except_handler4
+FUNC 3f88 c 0 _except_handler4
+FUNC 42b4 d 0 _except_handler4
+FUNC 4f40 10 0 _except_handler4
+FUNC 5a60 1c 0 _except_handler4
+FUNC 5a84 22 0 _except_handler4
+FUNC 5d88 d 0 _except_handler4
+FUNC 5e70 f 0 _except_handler4
+FUNC 5f50 12 0 _except_handler4
+FUNC 5fcc 12 0 _except_handler4
+FUNC 61bc 1d 0 _except_handler4
+FUNC 6670 3 0 _except_handler4
+FUNC 6a80 14 0 _except_handler4
+FUNC 6b0c 20 0 _except_handler4
+FUNC 6cd8 10 0 _except_handler4
+FUNC 2244 2f 0 __security_init_cookie
+FUNC 2740 48 0 __security_init_cookie
+FUNC 33e4 d 0 __security_init_cookie
+FUNC 3fd8 b 0 __security_init_cookie
+FUNC 4390 f 0 __security_init_cookie
+FUNC 4d68 c 0 __security_init_cookie
+FUNC 5588 e 0 __security_init_cookie
+FUNC 61a4 4 0 __security_init_cookie
+FUNC 6610 c 0 __security_init_cookie
+2244 8 97 1455
+224c 27 114 1455
+5588 e 114 1455
+4d68 7 116 1455
+2740 1 117 1455
+4d6f 5 117 1455
+2741 a 127 1455
+274b 6 132 1455
+2751 8 135 1455
+2759 8 136 1455
+2761 8 137 1455
+2769 a 139 1455
+2773 8 144 1455
+277b d 161 1455
+3fd8 b 163 1455
+33e4 d 166 1455
+6610 c 168 1455
+4390 6 172 1455
+4396 9 173 1455
+61a4 2 173 1455
+61a6 2 175 1455
+FUNC 4570 f 0 _initp_misc_invarg
+4570 5 64 3583
+4575 8 65 3583
+457d 2 66 3583
+FUNC 3a1f 129 0 _call_reportfault
+3a1f 16 164 3583
+3a35 9 166 3583
+3a3e 7 167 3583
+3a45 17 170 3583
+3a5c 1b 172 3583
+3a77 6 179 3583
+3a7d 6 180 3583
+3a83 6 181 3583
+3a89 6 182 3583
+3a8f 6 183 3583
+3a95 6 184 3583
+3a9b 7 185 3583
+3aa2 7 186 3583
+3aa9 7 187 3583
+3ab0 7 188 3583
+3ab7 7 189 3583
+3abe 7 190 3583
+3ac5 1 191 3583
+3ac6 6 192 3583
+3acc 3 198 3583
+3acf 19 199 3583
+3ae8 9 201 3583
+3af1 9 240 3583
+3afa 9 241 3583
+3b03 6 242 3583
+3b09 6 245 3583
+3b0f a 248 3583
+3b19 d 250 3583
+3b26 d 254 3583
+3b33 7 255 3583
+3b3a e 257 3583
+FUNC 5c38 25 0 _invoke_watson
+5c38 3 146 3583
+5c3b 12 155 3583
+5c4d f 156 3583
+5c5c 1 157 3583
+FUNC 6922 2d 0 _invalid_parameter
+6922 5 96 3583
+6927 c 103 3583
+6933 4 104 3583
+6937 1 111 3583
+6938 2 106 3583
+693a 15 110 3583
+FUNC 6f50 10 0 _invalid_parameter_noinfo
+6f50 0 120 3583
+6f50 f 121 3583
+6f5f 1 122 3583
+FUNC 2130 b 0 _mtinitlocks
+FUNC 2dec 14 0 _mtinitlocks
+FUNC 4358 3 0 _mtinitlocks
+FUNC 453c 10 0 _mtinitlocks
+FUNC 479c 3 0 _mtinitlocks
+FUNC 4b48 10 0 _mtinitlocks
+FUNC 55a8 27 0 _mtinitlocks
+2130 4 136 3954
+2134 7 143 3954
+2dec 14 144 3954
+55a8 9 145 3954
+55b1 1e 147 3954
+4b48 10 143 3954
+479c 3 156 3954
+4358 3 157 3954
+453c 10 150 3954
+FUNC 20ec 14 0 _mtdeletelocks
+FUNC 2298 10 0 _mtdeletelocks
+FUNC 31d4 6 0 _mtdeletelocks
+FUNC 3744 10 0 _mtdeletelocks
+FUNC 4350 3 0 _mtdeletelocks
+FUNC 46e4 14 0 _mtdeletelocks
+FUNC 4a54 10 0 _mtdeletelocks
+FUNC 5554 10 0 _mtdeletelocks
+FUNC 5ec4 3 0 _mtdeletelocks
+FUNC 63c0 d 0 _mtdeletelocks
+FUNC 6b90 10 0 _mtdeletelocks
+2298 3 187 3954
+229b d 193 3954
+5554 10 195 3954
+6b90 10 195 3954
+63c0 3 199 3954
+63c3 6 205 3954
+63c9 4 206 3954
+20ec 14 193 3954
+31d4 6 214 3954
+3744 10 216 3954
+4a54 10 216 3954
+4350 3 220 3954
+46e4 14 214 3954
+5ec4 3 223 3954
+FUNC 4218 17 0 _unlock
+4218 5 370 3954
+421d 10 374 3954
+422d 2 375 3954
+FUNC 3ff7 c2 0 _mtinitlocknum
+3ff7 c 258 3954
+4003 6 260 3954
+4009 a 268 3954
+4013 5 269 3954
+4018 7 270 3954
+401f c 271 3954
+402b e 275 3954
+4039 4 276 3954
+403d e 278 3954
+404b b 279 3954
+4056 4 280 3954
+405a 8 283 3954
+4062 3 284 3954
+4065 4 286 3954
+4069 10 287 3954
+4079 7 288 3954
+4080 b 289 3954
+408b 3 290 3954
+408e 2 291 3954
+4090 2 292 3954
+4092 2 295 3954
+4094 7 296 3954
+409b c 299 3954
+40a7 3 303 3954
+40aa 6 304 3954
+40b0 9 300 3954
+FUNC 118c b 0 _lock
+FUNC 1af0 14 0 _lock
+FUNC 3718 7 0 _lock
+FUNC 44a0 1f 0 _lock
+FUNC 5bb4 1 0 _lock
+44a0 5 332 3954
+44a5 1a 337 3954
+1af0 14 339 3954
+3718 7 340 3954
+5bb4 1 340 3954
+118c 9 347 3954
+1195 2 348 3954
+FUNC 14ac 10 0 strcpy_s
+FUNC 1990 c 0 strcpy_s
+FUNC 1da4 c 0 strcpy_s
+FUNC 2580 18 0 strcpy_s
+FUNC 2e00 4 0 strcpy_s
+FUNC 4674 10 0 strcpy_s
+FUNC 470c 4 0 strcpy_s
+FUNC 4794 2 0 strcpy_s
+FUNC 4d40 e 0 strcpy_s
+FUNC 59b8 14 0 strcpy_s
+FUNC 6158 14 0 strcpy_s
+FUNC 6a94 7 0 strcpy_s
+FUNC 6c8c a 0 strcpy_s
+2580 5 13 2523
+1da4 c 18 2523
+2585 13 18 2523
+4674 10 18 2523
+6c8c a 18 2523
+14ac 10 19 2523
+6a94 7 19 2523
+1990 c 23 2523
+2e00 4 23 2523
+6158 14 23 2523
+4d40 e 27 2523
+59b8 3 29 2523
+59bb 11 30 2523
+470c 2 33 2523
+4794 2 33 2523
+470e 2 34 2523
+FUNC 37f0 8b 0 strlen
+37f0 0 54 2796
+37f0 4 63 2796
+37f4 6 64 2796
+37fa 2 65 2796
+37fc 2 69 2796
+37fe 3 70 2796
+3801 2 71 2796
+3803 2 72 2796
+3805 6 73 2796
+380b 2 74 2796
+380d 13 76 2796
+3820 2 81 2796
+3822 5 82 2796
+3827 2 83 2796
+3829 3 84 2796
+382c 2 85 2796
+382e 3 86 2796
+3831 5 87 2796
+3836 2 88 2796
+3838 3 90 2796
+383b 2 91 2796
+383d 2 92 2796
+383f 2 93 2796
+3841 2 94 2796
+3843 5 95 2796
+3848 2 96 2796
+384a 5 97 2796
+384f 2 98 2796
+3851 2 99 2796
+3853 3 103 2796
+3856 4 104 2796
+385a 2 105 2796
+385c 1 106 2796
+385d 3 108 2796
+3860 4 109 2796
+3864 2 110 2796
+3866 1 111 2796
+3867 3 113 2796
+386a 4 114 2796
+386e 2 115 2796
+3870 1 116 2796
+3871 3 118 2796
+3874 4 119 2796
+3878 2 120 2796
+387a 1 121 2796
+FUNC 14a0 7 0 malloc
+FUNC 22f4 3 0 malloc
+FUNC 2838 e 0 malloc
+FUNC 28e4 7 0 malloc
+FUNC 2da4 a 0 malloc
+FUNC 34d0 8 0 malloc
+FUNC 3d5c 16 0 malloc
+FUNC 4580 13 0 malloc
+FUNC 4a4c 3 0 malloc
+FUNC 4cf8 14 0 malloc
+FUNC 4eb8 1f 0 malloc
+FUNC 5a48 6 0 malloc
+FUNC 5b20 18 0 malloc
+FUNC 5b8c 14 0 malloc
+FUNC 5df8 14 0 malloc
+FUNC 60ec 2 0 malloc
+FUNC 65a0 2 0 malloc
+5b20 6 81 504
+5b26 12 85 504
+60ec 2 85 504
+2838 e 89 504
+34d0 8 89 504
+3d5c 16 89 504
+4580 13 89 504
+4a4c 3 89 504
+4eb8 11 89 504
+65a0 2 89 504
+4ec9 e 94 504
+5df8 14 98 504
+4cf8 14 105 504
+5a48 6 109 504
+14a0 7 100 504
+28e4 7 119 504
+2da4 a 121 504
+5b8c 7 111 504
+5b93 b 112 504
+22f4 1 113 504
+5b9e 2 113 504
+22f5 2 122 504
+FUNC 297c 90 0 _local_unwind4
+FUNC 2a0c 46 0 _unwind_handler4
+FUNC 2a52 1c 4 _seh_longjmp_unwind4
+FUNC 2a6e 17 0 _EH4_CallFilterFunc
+FUNC 2a85 19 0 _EH4_TransferToHandler
+FUNC 2a9e 19 0 _EH4_GlobalUnwind2
+FUNC 2ab7 17 8 _EH4_LocalUnwind
+FUNC 1480 5 0 _get_errno_from_oserr
+FUNC 23bc 13 0 _get_errno_from_oserr
+FUNC 3510 12 0 _get_errno_from_oserr
+FUNC 5ec8 10 0 _get_errno_from_oserr
+FUNC 5f78 a 0 _get_errno_from_oserr
+FUNC 6ab4 1f 0 _get_errno_from_oserr
+5f78 5 119 224
+5f7d 5 123 224
+23bc 13 124 224
+5ec8 10 123 224
+3510 12 133 224
+1480 3 134 224
+1483 2 139 224
+6ab4 7 125 224
+6abb 2 139 224
+6ac0 11 135 224
+6ad1 2 139 224
+FUNC 5774 6 0 _errno
+FUNC 5d4c 13 0 _errno
+FUNC 6c60 4 0 _errno
+5d4c 0 279 224
+5d4c 5 280 224
+5d51 e 281 224
+5774 5 282 224
+5779 1 287 224
+6c60 3 284 224
+6c63 1 287 224
+FUNC 4638 39 0 terminate()
+4638 c 84 4591
+4644 8 89 4591
+464c 4 90 4591
+4650 4 95 4591
+4654 2 99 4591
+4656 2 100 4591
+4658 7 101 4591
+465f 7 106 4591
+4666 5 114 4591
+466b 6 115 4591
+FUNC 4834 11 0 _initp_eh_hooks
+4834 0 69 4591
+4834 10 70 4591
+4844 1 71 4591
+FUNC 15b8 1e 0 _initp_misc_winsig
+15b8 5 57 2311
+15bd 8 58 2311
+15c5 5 59 2311
+15ca 5 60 2311
+15cf 5 61 2311
+15d4 2 62 2311
+FUNC 15d8 18 0 siglookup
+FUNC 3538 f 0 siglookup
+FUNC 42c8 14 0 siglookup
+FUNC 45c8 2 0 siglookup
+FUNC 4e1c f 0 siglookup
+FUNC 55f0 2 0 siglookup
+FUNC 63ac f 0 siglookup
+63ac 5 629 2311
+63b1 a 630 2311
+15d8 18 639 2311
+4e1c f 639 2311
+3538 3 642 2311
+42c8 14 642 2311
+353b c 646 2311
+55f0 2 651 2311
+45c8 2 652 2311
+FUNC 3708 d 0 __get_sigabrt
+3708 0 669 2311
+3708 c 670 2311
+3714 1 671 2311
+FUNC 17d8 1a3 0 raise
+17d8 c 450 2311
+17e4 5 457 2311
+17e9 3 458 2311
+17ec 1f 460 2311
+180b a 486 2311
+1815 4 487 2311
+1819 8 488 2311
+1821 a 463 2311
+182b 2 465 2311
+182d 10 490 2311
+183d 2 491 2311
+183f f 460 2311
+184e 12 498 2311
+1860 a 474 2311
+186a 2 476 2311
+186c a 468 2311
+1876 2 470 2311
+1878 a 479 2311
+1882 7 480 2311
+1889 a 500 2311
+1893 2 508 2311
+1895 4 507 2311
+1899 6 508 2311
+189f 5 513 2311
+18a4 7 518 2311
+18ab 5 525 2311
+18b0 7 526 2311
+18b7 5 528 2311
+18bc f 539 2311
+18cb 6 540 2311
+18d1 3 541 2311
+18d4 5 547 2311
+18d9 6 548 2311
+18df 7 549 2311
+18e6 5 557 2311
+18eb 1a 564 2311
+1905 d 567 2311
+1912 5 564 2311
+1917 7 570 2311
+191e c 573 2311
+192a 5 578 2311
+192f 8 584 2311
+1937 2 585 2311
+1939 6 573 2311
+193f 6 574 2311
+1945 9 575 2311
+194e 5 586 2311
+1953 f 593 2311
+1962 6 594 2311
+1968 5 599 2311
+196d 6 600 2311
+1973 2 603 2311
+1975 6 604 2311
+FUNC 502c f 0 _initp_misc_rand_s
+502c 5 58 2186
+5031 8 59 2186
+5039 2 60 2186
+FUNC 2848 f 0 _initp_misc_purevirt
+2848 5 179 1627
+284d 8 180 1627
+2855 2 181 1627
+FUNC 6fd0 f 0 _initp_heap_handler
+6fd0 5 31 2820
+6fd5 8 32 2820
+6fdd 2 33 2820
+FUNC 1660 14 0 _callnewh
+FUNC 5708 1f 0 _callnewh
+FUNC 60b0 4 0 _callnewh
+FUNC 6c18 5 0 _callnewh
+5708 5 131 2820
+570d c 133 2820
+1660 14 135 2820
+5719 e 135 2820
+6c18 3 138 2820
+6c1b 2 139 2820
+60b0 2 136 2820
+60b2 2 139 2820
+FUNC 2274 12 0 _onexit_nolock
+FUNC 2484 10 0 _onexit_nolock
+FUNC 2640 2 0 _onexit_nolock
+FUNC 2b88 10 0 _onexit_nolock
+FUNC 32ac 13 0 _onexit_nolock
+FUNC 4124 15 0 _onexit_nolock
+FUNC 43e8 33 0 _onexit_nolock
+FUNC 45f8 18 0 _onexit_nolock
+FUNC 4a2c 20 0 _onexit_nolock
+FUNC 4b68 2 0 _onexit_nolock
+FUNC 4bb8 18 0 _onexit_nolock
+FUNC 4d84 5 0 _onexit_nolock
+FUNC 6a0c 1a 0 _onexit_nolock
+43e8 8 100 1969
+43f0 f 103 1969
+43ff f 104 1969
+4124 15 108 1969
+440e d 108 1969
+6a0c 1a 118 1969
+2640 2 123 1969
+2b88 2 123 1969
+32ac 13 123 1969
+2b8a e 125 1969
+45f8 18 125 1969
+2484 3 130 1969
+2487 d 132 1969
+4bb8 18 132 1969
+2274 3 143 1969
+2277 f 145 1969
+4a2c 10 152 1969
+4a3c 8 153 1969
+4a44 8 155 1969
+4b68 2 110 1969
+4d84 3 110 1969
+4d87 2 156 1969
+FUNC 14bc 2f 0 __onexitinit
+FUNC 2658 7 0 __onexitinit
+FUNC 318c 5 0 __onexitinit
+14bc 3 201 1969
+14bf d 204 1969
+14cc 11 205 1969
+14dd e 207 1969
+318c 4 212 1969
+3190 1 217 1969
+2658 3 214 1969
+265b 3 216 1969
+265e 1 217 1969
+FUNC 157b 3c 0 _onexit
+157b c 81 1969
+1587 5 84 1969
+158c 4 86 1969
+1590 c 87 1969
+159c c 89 1969
+15a8 3 93 1969
+15ab 6 94 1969
+15b1 6 90 1969
+FUNC 56a4 17 0 atexit
+56a4 5 161 1969
+56a9 10 162 1969
+56b9 2 163 1969
+FUNC 6154 3 0 _initp_misc_cfltcvt_tab
+FUNC 6b70 20 0 _initp_misc_cfltcvt_tab
+FUNC 6ebc 6 0 _initp_misc_cfltcvt_tab
+6ebc 4 54 2419
+6ec0 2 56 2419
+6b70 20 58 2419
+6154 3 60 2419
+FUNC 4af8 17 0 _ValidateImageBase
+FUNC 4e40 1c 0 _ValidateImageBase
+FUNC 5608 4 0 _ValidateImageBase
+FUNC 585c 12 0 _ValidateImageBase
+4e40 5 44 2079
+4e45 17 50 2079
+5608 2 52 2079
+560a 2 68 2079
+4af8 5 55 2079
+4afd 6 56 2079
+4b03 c 58 2079
+585c 10 62 2079
+586c 2 68 2079
+FUNC 1234 5 0 _FindPESection
+FUNC 1b2c 2 0 _FindPESection
+FUNC 4948 13 0 _FindPESection
+FUNC 4e08 12 0 _FindPESection
+FUNC 5d9c 10 0 _FindPESection
+FUNC 6d60 3 0 _FindPESection
+FUNC 6fa4 2c 0 _FindPESection
+6fa4 5 92 2079
+6fa9 8 99 2079
+6d60 3 108 2079
+6fb1 1f 108 2079
+4948 13 111 2079
+5d9c 10 111 2079
+4e08 12 108 2079
+1234 3 123 2079
+1b2c 2 123 2079
+1237 2 124 2079
+FUNC 6fee bc 0 _IsNonwritableInCurrentImage
+6fee 35 149 2079
+7023 7 156 2079
+702a f 164 2079
+7039 2 166 2079
+703b 8 174 2079
+7043 e 175 2079
+7051 2 176 2079
+7053 2 178 2079
+7055 12 185 2079
+7067 12 195 2079
+7079 16 187 2079
+708f 9 193 2079
+7098 12 195 2079
+FUNC 1064 4c 0 __crtMessageBoxW
+FUNC 123c 1b 0 __crtMessageBoxW
+FUNC 1460 14 0 __crtMessageBoxW
+FUNC 19c4 12 0 __crtMessageBoxW
+FUNC 2148 40 0 __crtMessageBoxW
+FUNC 2b00 14 0 __crtMessageBoxW
+FUNC 31b4 e 0 __crtMessageBoxW
+FUNC 3290 1a 0 __crtMessageBoxW
+FUNC 36e8 8 0 __crtMessageBoxW
+FUNC 3794 1c 0 __crtMessageBoxW
+FUNC 474c 1c 0 __crtMessageBoxW
+FUNC 496c 10 0 __crtMessageBoxW
+FUNC 4ca0 10 0 __crtMessageBoxW
+FUNC 4d18 1c 0 __crtMessageBoxW
+FUNC 5640 2 0 __crtMessageBoxW
+FUNC 56e4 16 0 __crtMessageBoxW
+FUNC 5cf4 10 0 __crtMessageBoxW
+FUNC 5e50 10 0 __crtMessageBoxW
+FUNC 5ee8 13 0 __crtMessageBoxW
+FUNC 5f18 c 0 __crtMessageBoxW
+FUNC 6f6c f 0 __crtMessageBoxW
+FUNC 6f7c 14 0 __crtMessageBoxW
+FUNC 70d4 10 0 __crtMessageBoxW
+2148 12 41 1053
+215a 14 49 1053
+216e 4 56 1053
+2172 16 62 1053
+3290 d 64 1053
+329d 2 65 1053
+329f b 67 1053
+123c 10 72 1053
+124c b 76 1053
+1064 9 78 1053
+106d 10 81 1053
+107d 10 84 1053
+108d d 88 1053
+109a 8 93 1053
+10a2 e 95 1053
+70d4 10 97 1053
+19c4 12 110 1053
+474c 1c 110 1053
+4d18 3 113 1053
+4d1b c 114 1053
+31b4 e 116 1053
+4d27 d 116 1053
+3794 1c 121 1053
+496c 10 121 1053
+5cf4 10 121 1053
+5f18 7 130 1053
+5f1f 5 132 1053
+6f7c 14 134 1053
+5e50 3 136 1053
+5e53 d 137 1053
+5ee8 5 139 1053
+1460 14 143 1053
+5eed e 143 1053
+4ca0 3 145 1053
+4ca3 d 146 1053
+36e8 8 148 1053
+56e4 8 155 1053
+56ec e 156 1053
+2b00 14 158 1053
+5640 2 163 1053
+6f6c f 166 1053
+FUNC 21d0 14 0 wcscat_s
+FUNC 28c0 10 0 wcscat_s
+FUNC 3784 a 0 wcscat_s
+FUNC 3d78 18 0 wcscat_s
+FUNC 4880 18 0 wcscat_s
+FUNC 48bc b 0 wcscat_s
+FUNC 4b7c 10 0 wcscat_s
+FUNC 4f58 4 0 wcscat_s
+FUNC 5448 e 0 wcscat_s
+FUNC 55d8 12 0 wcscat_s
+FUNC 5f9c 2 0 wcscat_s
+FUNC 5fb4 7 0 wcscat_s
+FUNC 6054 c 0 wcscat_s
+FUNC 6194 10 0 wcscat_s
+FUNC 6d50 10 0 wcscat_s
+3d78 6 13 2468
+3784 a 18 2468
+3d7e 12 18 2468
+4f58 2 18 2468
+5fb4 7 18 2468
+6194 10 18 2468
+4f5a 2 46 2468
+28c0 10 19 2468
+48bc b 19 2468
+55e8 2 21 2468
+6d50 10 23 2468
+55d8 3 25 2468
+55db d 26 2468
+5448 2 29 2468
+544a c 32 2468
+4880 18 35 2468
+5f9c 2 35 2468
+6054 c 35 2468
+21d0 3 41 2468
+4b7c 10 41 2468
+21d3 11 42 2468
+FUNC 103c c 0 wcsncpy_s
+FUNC 11d8 10 0 wcsncpy_s
+FUNC 12fc b 0 wcsncpy_s
+FUNC 1ae0 e 0 wcsncpy_s
+FUNC 1b4c f 0 wcsncpy_s
+FUNC 1e0c 5 0 wcsncpy_s
+FUNC 21e4 10 0 wcsncpy_s
+FUNC 228c 4 0 wcsncpy_s
+FUNC 22b0 c 0 wcsncpy_s
+FUNC 3720 e 0 wcsncpy_s
+FUNC 37c0 b 0 wcsncpy_s
+FUNC 43d4 14 0 wcsncpy_s
+FUNC 46c8 10 0 wcsncpy_s
+FUNC 4828 c 0 wcsncpy_s
+FUNC 495c a 0 wcsncpy_s
+FUNC 49dc 34 0 wcsncpy_s
+FUNC 4c38 2 0 wcsncpy_s
+FUNC 4c84 5 0 wcsncpy_s
+FUNC 5a38 5 0 wcsncpy_s
+FUNC 5dc8 c 0 wcsncpy_s
+FUNC 61e0 e 0 wcsncpy_s
+FUNC 6288 4 0 wcsncpy_s
+FUNC 63e0 d 0 wcsncpy_s
+FUNC 6a28 10 0 wcsncpy_s
+FUNC 6af4 18 0 wcsncpy_s
+FUNC 6c3c e 0 wcsncpy_s
+FUNC 70c4 10 0 wcsncpy_s
+49dc 5 13 2578
+1b4c f 17 2578
+49e1 17 17 2578
+6c3c e 17 2578
+4c38 2 65 2578
+5a38 3 65 2578
+5a3b 2 66 2578
+103c c 24 2578
+11d8 10 24 2578
+495c a 24 2578
+61e0 e 24 2578
+3720 e 25 2578
+12fc 5 28 2578
+1301 6 29 2578
+37c0 b 31 2578
+46c8 10 31 2578
+21e4 2 33 2578
+21e6 e 35 2578
+22b0 c 37 2578
+6288 4 37 2578
+6af4 18 37 2578
+1e0c 5 41 2578
+228c 4 45 2578
+4828 c 45 2578
+49f8 18 45 2578
+5dc8 c 45 2578
+1ae0 e 48 2578
+4c84 5 50 2578
+63e0 d 54 2578
+6a28 3 58 2578
+70c4 10 58 2578
+6a2b d 59 2578
+43d4 3 61 2578
+43d7 11 62 2578
+FUNC 20d4 10 0 wcslen
+FUNC 5520 10 0 wcslen
+20dc 5 41 2728
+20e1 3 42 2728
+5520 10 44 2728
+20d4 6 46 2728
+20da 2 47 2728
+FUNC 15f0 18 0 wcscpy_s
+FUNC 17cc c 0 wcscpy_s
+FUNC 23a0 10 0 wcscpy_s
+FUNC 2494 a 0 wcscpy_s
+FUNC 2858 18 0 wcscpy_s
+FUNC 3208 10 0 wcscpy_s
+FUNC 3ca8 8 0 wcscpy_s
+FUNC 4bd0 10 0 wcscpy_s
+FUNC 5530 7 0 wcscpy_s
+FUNC 5880 4 0 wcscpy_s
+FUNC 5f08 4 0 wcscpy_s
+FUNC 5f24 14 0 wcscpy_s
+15f0 6 13 2523
+15f6 12 18 2523
+23a0 10 18 2523
+2494 a 18 2523
+5530 7 18 2523
+5880 2 18 2523
+5882 2 34 2523
+3208 10 19 2523
+3ca8 8 19 2523
+17cc c 23 2523
+2858 18 23 2523
+5f08 4 23 2523
+4bd0 10 29 2523
+5f24 3 29 2523
+5f27 11 30 2523
+FUNC 1268 d 0 _set_error_mode
+FUNC 1b7c 16 0 _set_error_mode
+FUNC 1e04 7 0 _set_error_mode
+FUNC 31c4 f 0 _set_error_mode
+FUNC 49cc f 0 _set_error_mode
+FUNC 5eac 15 0 _set_error_mode
+1b7c 5 43 1181
+1b81 11 46 1181
+31c4 f 46 1181
+49cc f 46 1181
+1e04 5 54 1181
+1e09 2 61 1181
+1268 5 50 1181
+126d 6 51 1181
+1273 2 61 1181
+5eac 13 57 1181
+5ebf 2 61 1181
+FUNC 1275 f 0 __security_check_cookie
+1275 0 52 892
+1275 6 55 892
+127b 2 56 892
+127d 2 57 892
+127f 5 59 892
+FUNC 1488 6 0 _malloc_crt
+FUNC 1b04 12 0 _malloc_crt
+FUNC 1d3c 3 0 _malloc_crt
+FUNC 5fe0 1f 0 _malloc_crt
+FUNC 69d4 9 0 _malloc_crt
+FUNC 6c64 18 0 _malloc_crt
+FUNC 6f40 10 0 _malloc_crt
+69d4 7 39 333
+69db 2 40 333
+6c64 b 44 333
+1b04 12 45 333
+6c6f d 45 333
+1d3c 3 46 333
+5fe0 1f 46 333
+6f40 2 46 333
+6f42 e 47 333
+1488 4 50 333
+148c 2 51 333
+FUNC 3cd8 10 0 _calloc_crt
+FUNC 541c 12 0 _calloc_crt
+FUNC 553c 6 0 _calloc_crt
+FUNC 5598 9 0 _calloc_crt
+FUNC 6950 3 0 _calloc_crt
+FUNC 6ec8 1f 0 _calloc_crt
+FUNC 6ef0 20 0 _calloc_crt
+5598 7 54 333
+559f 2 55 333
+6ef0 12 61 333
+541c 12 62 333
+6f02 e 62 333
+3cd8 2 63 333
+6950 3 63 333
+6ec8 1f 63 333
+3cda e 64 333
+553c 4 67 333
+5540 2 68 333
+FUNC 2674 3 0 _realloc_crt
+FUNC 2b5c 10 0 _realloc_crt
+FUNC 38b8 6 0 _realloc_crt
+FUNC 435c f 0 _realloc_crt
+FUNC 633c 1c 0 _realloc_crt
+FUNC 6580 1f 0 _realloc_crt
+FUNC 65b0 12 0 _realloc_crt
+FUNC 6f20 9 0 _realloc_crt
+6f20 7 71 333
+6f27 2 72 333
+633c f 76 333
+435c f 77 333
+634b d 77 333
+65b0 12 77 333
+2674 3 78 333
+2b5c 2 78 333
+6580 1f 78 333
+2b5e e 79 333
+38b8 4 82 333
+38bc 2 83 333
+FUNC 28b4 c 0 CPtoLCID
+FUNC 3d08 6 0 CPtoLCID
+FUNC 5510 6 0 CPtoLCID
+FUNC 5600 6 0 CPtoLCID
+FUNC 5f14 3 0 CPtoLCID
+FUNC 6294 f 0 CPtoLCID
+FUNC 68f4 10 0 CPtoLCID
+FUNC 69cc 6 0 CPtoLCID
+FUNC 6fe0 e 0 CPtoLCID
+68f4 0 329 3326
+28b4 c 330 3326
+6294 f 330 3326
+68f4 10 330 3326
+6fe0 e 330 3326
+5f14 2 345 3326
+5f16 1 346 3326
+5510 5 342 3326
+5515 1 346 3326
+3d08 5 339 3326
+3d0d 1 346 3326
+69cc 5 336 3326
+69d1 1 346 3326
+5600 5 333 3326
+5605 1 346 3326
+FUNC 2208 f 0 setSBCS
+FUNC 387c 3 0 setSBCS
+FUNC 48ac f 0 setSBCS
+FUNC 5900 44 0 setSBCS
+FUNC 6be0 b 0 setSBCS
+5900 6 363 3326
+5906 11 368 3326
+5917 1b 379 3326
+5932 12 381 3326
+2208 f 382 3326
+6be0 b 384 3326
+48ac f 385 3326
+387c 3 386 3326
+FUNC 12dc 18 0 setSBUpLow
+FUNC 1794 f 0 setSBUpLow
+FUNC 1b6c 7 0 setSBUpLow
+FUNC 2548 e 0 setSBUpLow
+FUNC 2c0c 39 0 setSBUpLow
+FUNC 3238 8 0 setSBUpLow
+FUNC 3e54 2 0 setSBUpLow
+FUNC 3ee0 16 0 setSBUpLow
+FUNC 445c 20 0 setSBUpLow
+FUNC 4800 f 0 setSBUpLow
+FUNC 4910 8 0 setSBUpLow
+FUNC 4a8c 12 0 setSBUpLow
+FUNC 4d8c e 0 setSBUpLow
+FUNC 566c f 0 setSBUpLow
+FUNC 56fc c 0 setSBUpLow
+FUNC 59e4 14 0 setSBUpLow
+FUNC 5aa8 6 0 setSBUpLow
+FUNC 5b08 17 0 setSBUpLow
+FUNC 5b60 14 0 setSBUpLow
+FUNC 5db4 12 0 setSBUpLow
+FUNC 6060 c 0 setSBUpLow
+FUNC 60b4 6 0 setSBUpLow
+FUNC 6218 f 0 setSBUpLow
+FUNC 62b8 6a 0 setSBUpLow
+FUNC 697c 3 0 setSBUpLow
+FUNC 6b44 1b 0 setSBUpLow
+2c0c 17 402 3326
+2c23 10 412 3326
+2c33 12 415 3326
+3e54 2 415 3326
+5db4 12 416 3326
+6b44 1b 420 3326
+60b4 6 419 3326
+3ee0 16 421 3326
+5b60 14 421 3326
+59e4 14 420 3326
+62b8 20 427 3326
+62d8 23 432 3326
+62fb 25 437 3326
+6320 2 442 3326
+5b08 17 443 3326
+4a8c 5 445 3326
+4a91 d 446 3326
+4800 f 448 3326
+6060 5 450 3326
+56fc 7 451 3326
+6065 7 451 3326
+5703 5 453 3326
+1b6c 7 454 3326
+6218 f 442 3326
+12dc 6 456 3326
+5aa8 6 456 3326
+12e2 12 472 3326
+445c 20 461 3326
+2548 5 463 3326
+254d 9 464 3326
+566c f 466 3326
+4910 5 468 3326
+3238 2 469 3326
+4915 3 469 3326
+323a 6 471 3326
+697c 3 472 3326
+1794 f 460 3326
+4d8c e 474 3326
+FUNC 2c45 a4 0 __updatetmbcinfo
+2c45 c 495 3326
+2c51 7 498 3326
+2c58 10 499 3326
+2c68 3 532 3326
+2c6b 4 535 3326
+2c6f 8 537 3326
+2c77 2 540 3326
+2c79 6 541 3326
+2c7f 8 500 3326
+2c87 4 502 3326
+2c8b e 505 3326
+2c99 17 511 3326
+2cb0 7 516 3326
+2cb7 11 523 3326
+2cc8 7 524 3326
+2ccf 11 527 3326
+2ce0 9 529 3326
+FUNC 12b0 8 0 _LocaleUpdate::_LocaleUpdate(localeinfo_struct *)
+FUNC 2084 18 0 _LocaleUpdate::_LocaleUpdate(localeinfo_struct *)
+FUNC 2314 7 0 _LocaleUpdate::_LocaleUpdate(localeinfo_struct *)
+FUNC 2504 27 0 _LocaleUpdate::_LocaleUpdate(localeinfo_struct *)
+FUNC 2904 7 0 _LocaleUpdate::_LocaleUpdate(localeinfo_struct *)
+FUNC 3558 14 0 _LocaleUpdate::_LocaleUpdate(localeinfo_struct *)
+FUNC 4d74 e 0 _LocaleUpdate::_LocaleUpdate(localeinfo_struct *)
+FUNC 560c 13 0 _LocaleUpdate::_LocaleUpdate(localeinfo_struct *)
+FUNC 5d04 14 0 _LocaleUpdate::_LocaleUpdate(localeinfo_struct *)
+FUNC 5f68 a 0 _LocaleUpdate::_LocaleUpdate(localeinfo_struct *)
+FUNC 6cbc 1c 0 _LocaleUpdate::_LocaleUpdate(localeinfo_struct *)
+6cbc 5 240 111
+6cc1 17 241 111
+2504 8 243 111
+250c 5 244 111
+2511 6 245 111
+2314 7 247 111
+2517 14 247 111
+3558 14 247 111
+12b0 8 248 111
+2084 18 248 111
+5d04 14 248 111
+560c 13 249 111
+4d74 4 251 111
+4d78 4 252 111
+4d7c 6 255 111
+5f68 a 257 111
+2904 7 259 111
+FUNC 19fc e 0 getSystemCP
+FUNC 2690 7 0 getSystemCP
+FUNC 2b98 3 0 getSystemCP
+FUNC 3b80 28 0 getSystemCP
+FUNC 3e18 c 0 getSystemCP
+FUNC 4710 f 0 getSystemCP
+FUNC 4868 10 0 getSystemCP
+FUNC 56bc 16 0 getSystemCP
+FUNC 5e20 16 0 getSystemCP
+FUNC 6020 1f 0 getSystemCP
+FUNC 6f64 2 0 getSystemCP
+3b80 9 282 3326
+3b89 b 284 3326
+3b94 6 285 3326
+3b9a e 289 3326
+4868 a 291 3326
+19fc e 292 3326
+3e18 c 292 3326
+4872 6 292 3326
+6030 f 295 3326
+5e20 a 297 3326
+5e2a c 298 3326
+6020 f 302 3326
+56bc 16 305 3326
+2690 7 308 3326
+2b98 1 308 3326
+4710 f 308 3326
+6f64 2 308 3326
+2b99 2 309 3326
+FUNC 1208 29 0 _setmbcp_nolock
+FUNC 16ac 20 0 _setmbcp_nolock
+FUNC 1bc0 3 0 _setmbcp_nolock
+FUNC 2188 11 0 _setmbcp_nolock
+FUNC 23b0 6 0 _setmbcp_nolock
+FUNC 2894 11 0 _setmbcp_nolock
+FUNC 2b28 7 0 _setmbcp_nolock
+FUNC 330c c 0 _setmbcp_nolock
+FUNC 40bc e 0 _setmbcp_nolock
+FUNC 454c f 0 _setmbcp_nolock
+FUNC 4720 6 0 _setmbcp_nolock
+FUNC 4768 f 0 _setmbcp_nolock
+FUNC 4b58 10 0 _setmbcp_nolock
+FUNC 4c40 c 0 _setmbcp_nolock
+FUNC 5404 12 0 _setmbcp_nolock
+FUNC 5728 2a 0 _setmbcp_nolock
+FUNC 5800 e 0 _setmbcp_nolock
+FUNC 5ab0 17 0 _setmbcp_nolock
+FUNC 5adc 11 0 _setmbcp_nolock
+FUNC 5ba8 c 0 _setmbcp_nolock
+FUNC 5bcc 14 0 _setmbcp_nolock
+FUNC 5fa4 8 0 _setmbcp_nolock
+FUNC 6010 f 0 _setmbcp_nolock
+FUNC 6074 1c 0 _setmbcp_nolock
+FUNC 609c 14 0 _setmbcp_nolock
+FUNC 60c0 2a 0 _setmbcp_nolock
+FUNC 60f4 17 0 _setmbcp_nolock
+FUNC 6358 14 0 _setmbcp_nolock
+FUNC 638c 11 0 _setmbcp_nolock
+FUNC 63d4 5 0 _setmbcp_nolock
+FUNC 64a8 34 0 _setmbcp_nolock
+FUNC 64f0 3 0 _setmbcp_nolock
+FUNC 65c4 18 0 _setmbcp_nolock
+FUNC 6974 7 0 _setmbcp_nolock
+FUNC 6a64 f 0 _setmbcp_nolock
+64a8 17 684 3326
+64bf b 691 3326
+64ca 12 694 3326
+2b28 7 696 3326
+6974 7 697 3326
+63d4 3 701 3326
+63d7 2 703 3326
+5adc 11 706 3326
+60f4 17 703 3326
+2188 11 741 3326
+2894 11 741 3326
+5ab0 17 741 3326
+65c4 18 749 3326
+1208 f 754 3326
+1217 1a 759 3326
+1bc0 3 762 3326
+454c f 762 3326
+6010 f 762 3326
+60a4 c 764 3326
+5728 f 710 3326
+5737 15 713 3326
+4b58 10 718 3326
+574c 6 718 3326
+4c40 c 721 3326
+5404 12 722 3326
+5800 e 721 3326
+4720 6 718 3326
+6a64 f 718 3326
+6074 1c 713 3326
+16ac 20 729 3326
+5bcc 14 731 3326
+5ba8 7 734 3326
+5baf 5 735 3326
+23b0 6 765 3326
+40bc e 764 3326
+60d8 12 762 3326
+5fa4 8 769 3326
+330c c 770 3326
+6358 b 773 3326
+6363 3 776 3326
+6366 6 778 3326
+609c 3 780 3326
+60c0 12 783 3326
+60d2 6 787 3326
+638c 6 792 3326
+6392 b 795 3326
+64f0 3 744 3326
+4768 f 800 3326
+FUNC 1e11 19a 0 _setmbcp
+1e11 c 572 3326
+1e1d 4 573 3326
+1e21 a 577 3326
+1e2b 5 579 3326
+1e30 3 580 3326
+1e33 b 582 3326
+1e3e 9 584 3326
+1e47 d 590 3326
+1e54 8 592 3326
+1e5c c 594 3326
+1e68 3 605 3326
+1e6b 16 610 3326
+1e81 1a 612 3326
+1e9b 7 613 3326
+1ea2 3 617 3326
+1ea5 9 618 3326
+1eae 17 620 3326
+1ec5 8 622 3326
+1ecd 4 623 3326
+1ed1 8 628 3326
+1ed9 8 629 3326
+1ee1 8 630 3326
+1ee9 a 631 3326
+1ef3 d 632 3326
+1f00 3 631 3326
+1f03 c 633 3326
+1f0f a 634 3326
+1f19 3 633 3326
+1f1c c 635 3326
+1f28 d 636 3326
+1f35 3 635 3326
+1f38 1c 638 3326
+1f54 7 639 3326
+1f5b 6 643 3326
+1f61 3 644 3326
+1f64 e 646 3326
+1f72 9 648 3326
+1f7b 2 651 3326
+1f7d 5 652 3326
+1f82 8 658 3326
+1f8a 7 659 3326
+1f91 b 660 3326
+1f9c 2 666 3326
+1f9e 4 671 3326
+1fa2 3 680 3326
+1fa5 6 681 3326
+FUNC 165c 3 0 __initmbctable
+FUNC 5dd4 12 0 __initmbctable
+FUNC 6234 13 0 __initmbctable
+6234 0 841 3326
+6234 13 851 3326
+5dd4 8 852 3326
+5ddc a 853 3326
+165c 2 858 3326
+165e 1 859 3326
+FUNC 1674 7 0 x_ismbbtype_l
+FUNC 1c0c 2c 0 x_ismbbtype_l
+FUNC 3d74 2 0 x_ismbbtype_l
+FUNC 4c90 e 0 x_ismbbtype_l
+FUNC 5430 16 0 x_ismbbtype_l
+FUNC 59b0 2 0 x_ismbbtype_l
+FUNC 6254 10 0 x_ismbbtype_l
+FUNC 643c 3 0 x_ismbbtype_l
+FUNC 6498 10 0 x_ismbbtype_l
+1c0c 8 213 3271
+1c14 b 214 3271
+1c1f 4 219 3271
+1674 7 222 3271
+1c23 15 222 3271
+4c90 e 222 3271
+5430 16 222 3271
+59b0 2 222 3271
+6254 10 222 3271
+643c 3 222 3271
+6498 10 222 3271
+3d74 2 223 3271
+FUNC 4930 18 0 _ismbblead
+4930 5 171 3271
+4935 11 172 3271
+4946 2 173 3271
+FUNC 1bac 12 0 __addlocaleref
+FUNC 26b4 a 0 __addlocaleref
+FUNC 2880 3 0 __addlocaleref
+FUNC 37d8 3 0 __addlocaleref
+FUNC 3c70 14 0 __addlocaleref
+FUNC 3fe4 13 0 __addlocaleref
+FUNC 4a10 1c 0 __addlocaleref
+FUNC 54d8 10 0 __addlocaleref
+FUNC 54f0 3 0 __addlocaleref
+FUNC 5620 3 0 __addlocaleref
+FUNC 5dac 3 0 __addlocaleref
+FUNC 6040 13 0 __addlocaleref
+FUNC 6278 10 0 __addlocaleref
+FUNC 6478 13 0 __addlocaleref
+FUNC 6540 10 0 __addlocaleref
+FUNC 6d08 28 0 __addlocaleref
+6d08 7 36 1913
+6d0f d 39 1913
+6d1c 14 41 1913
+2880 3 42 1913
+4a18 14 44 1913
+4a10 3 45 1913
+3fe4 13 47 1913
+5620 3 48 1913
+3c70 14 50 1913
+37d8 3 51 1913
+26b4 a 53 1913
+6478 13 55 1913
+6540 10 55 1913
+5dac 3 56 1913
+54d8 10 59 1913
+6278 10 59 1913
+54f0 3 60 1913
+1bac 12 53 1913
+6040 11 63 1913
+6051 2 64 1913
+FUNC 2328 a 0 __removelocaleref
+FUNC 252c 10 0 __removelocaleref
+FUNC 2b14 14 0 __removelocaleref
+FUNC 34c8 3 0 __removelocaleref
+FUNC 3d44 10 0 __removelocaleref
+FUNC 4c00 13 0 __removelocaleref
+FUNC 4f70 14 0 __removelocaleref
+FUNC 54d0 3 0 __removelocaleref
+FUNC 5648 3 0 __removelocaleref
+FUNC 5658 12 0 __removelocaleref
+FUNC 5870 10 0 __removelocaleref
+FUNC 5a7c 5 0 __removelocaleref
+FUNC 5e94 16 0 __removelocaleref
+FUNC 6578 3 0 __removelocaleref
+FUNC 6668 3 0 __removelocaleref
+FUNC 6cf0 10 0 __removelocaleref
+FUNC 6d30 1f 0 __removelocaleref
+FUNC 6d90 1b 0 __removelocaleref
+5e94 6 74 1913
+5e9a 10 77 1913
+6d30 b 79 1913
+6d3b 14 81 1913
+6668 3 82 1913
+2b14 14 84 1913
+5648 3 85 1913
+6d98 13 87 1913
+34c8 3 88 1913
+4f70 14 90 1913
+6578 3 91 1913
+2328 a 93 1913
+252c 10 95 1913
+4c00 13 95 1913
+54d0 3 96 1913
+3d44 10 99 1913
+5870 10 99 1913
+6d90 3 100 1913
+5658 12 93 1913
+6cf0 10 103 1913
+5a7c 3 106 1913
+5a7f 2 107 1913
+FUNC 1dbc 14 0 __freetlocinfo
+FUNC 20ac 14 0 __freetlocinfo
+FUNC 21c0 10 0 __freetlocinfo
+FUNC 22c4 13 0 __freetlocinfo
+FUNC 2b44 c 0 __freetlocinfo
+FUNC 3c5c f 0 __freetlocinfo
+FUNC 3ec0 10 0 __freetlocinfo
+FUNC 40cc 17 0 __freetlocinfo
+FUNC 4294 e 0 __freetlocinfo
+FUNC 44c0 e 0 __freetlocinfo
+FUNC 44f8 20 0 __freetlocinfo
+FUNC 4cd4 13 0 __freetlocinfo
+FUNC 4d34 7 0 __freetlocinfo
+FUNC 4df8 10 0 __freetlocinfo
+FUNC 4f84 13 0 __freetlocinfo
+FUNC 5630 e 0 __freetlocinfo
+FUNC 577c a 0 __freetlocinfo
+FUNC 5af0 13 0 __freetlocinfo
+FUNC 5d74 12 0 __freetlocinfo
+FUNC 5dec 7 0 __freetlocinfo
+FUNC 5ed8 e 0 __freetlocinfo
+FUNC 6000 e 0 __freetlocinfo
+FUNC 61a8 14 0 __freetlocinfo
+FUNC 6634 12 0 __freetlocinfo
+FUNC 6748 13 0 __freetlocinfo
+FUNC 6984 40 0 __freetlocinfo
+FUNC 69fc e 0 __freetlocinfo
+FUNC 6c9c 18 0 __freetlocinfo
+44f8 7 129 1913
+44ff 19 137 1913
+4df8 10 137 1913
+5ed8 e 137 1913
+61a8 14 137 1913
+1dbc 14 140 1913
+6000 e 140 1913
+4f84 6 142 1913
+4f8a d 143 1913
+20ac 14 147 1913
+4294 e 147 1913
+5af0 6 149 1913
+5af6 d 150 1913
+6c9c b 153 1913
+6ca7 d 154 1913
+5630 e 161 1913
+6748 13 161 1913
+6984 11 163 1913
+6995 13 164 1913
+69a8 e 165 1913
+69b6 e 166 1913
+40cc 17 173 1913
+6634 12 173 1913
+22c4 6 175 1913
+22ca d 176 1913
+577c a 179 1913
+3ec0 10 182 1913
+44c0 e 182 1913
+4cd4 13 182 1913
+5dec 7 184 1913
+21c0 10 192 1913
+3c5c f 192 1913
+69fc e 192 1913
+4d34 7 194 1913
+5d74 12 179 1913
+2b44 a 201 1913
+2b4e 2 202 1913
+FUNC 1d58 16 0 _updatetlocinfoEx_nolock
+FUNC 2338 17 0 _updatetlocinfoEx_nolock
+FUNC 2d40 2 0 _updatetlocinfoEx_nolock
+FUNC 2dc8 3 0 _updatetlocinfoEx_nolock
+FUNC 2dd4 16 0 _updatetlocinfoEx_nolock
+FUNC 4f18 17 0 _updatetlocinfoEx_nolock
+FUNC 5794 10 0 _updatetlocinfoEx_nolock
+FUNC 57b4 8 0 _updatetlocinfoEx_nolock
+FUNC 6c28 12 0 _updatetlocinfoEx_nolock
+4f18 6 216 1913
+2338 10 219 1913
+4f1e 11 219 1913
+5794 3 222 1913
+5797 d 223 1913
+1d58 9 230 1913
+1d61 d 236 1913
+2dd4 6 238 1913
+2dda 10 248 1913
+6c28 12 248 1913
+2348 7 249 1913
+57b4 8 253 1913
+2d40 2 220 1913
+2dc8 1 220 1913
+2dc9 2 254 1913
+FUNC 3f0f 79 0 __updatetlocinfo
+3f0f c 281 1913
+3f1b 7 283 1913
+3f22 10 285 1913
+3f32 8 297 1913
+3f3a 4 300 1913
+3f3e 8 302 1913
+3f46 2 305 1913
+3f48 6 306 1913
+3f4e 8 286 1913
+3f56 4 288 1913
+3f5a 14 290 1913
+3f6e e 292 1913
+3f7c 8 294 1913
+3f84 4 295 1913
+FUNC 1ad0 8 0 _crt_debugger_hook
+1ad0 0 62 1145
+1ad0 7 65 1145
+1ad7 1 66 1145
+FUNC 4fa2 7a 0 memset
+4fa2 0 59 2789
+4fa2 4 68 2789
+4fa6 4 69 2789
+4faa 2 71 2789
+4fac 2 72 2789
+4fae 2 74 2789
+4fb0 4 75 2789
+4fb4 2 78 2789
+4fb6 2 79 2789
+4fb8 6 80 2789
+4fbe 2 81 2789
+4fc0 7 82 2789
+4fc7 2 83 2789
+4fc9 5 85 2789
+4fce 1 91 2789
+4fcf 2 92 2789
+4fd1 3 94 2789
+4fd4 2 95 2789
+4fd6 2 97 2789
+4fd8 3 98 2789
+4fdb 2 99 2789
+4fdd 2 101 2789
+4fdf 2 103 2789
+4fe1 3 104 2789
+4fe4 3 105 2789
+4fe7 2 106 2789
+4fe9 2 110 2789
+4feb 3 111 2789
+4fee 2 113 2789
+4ff0 2 115 2789
+4ff2 3 117 2789
+4ff5 2 119 2789
+4ff7 2 122 2789
+4ff9 3 123 2789
+4ffc 3 124 2789
+4fff 2 125 2789
+5001 2 127 2789
+5003 2 129 2789
+5005 2 130 2789
+5007 2 134 2789
+5009 3 135 2789
+500c 3 137 2789
+500f 2 138 2789
+5011 4 142 2789
+5015 1 143 2789
+5016 1 145 2789
+5017 4 148 2789
+501b 1 150 2789
+FUNC 33f1 95 0 _aulldvrm
+33f1 0 45 2806
+33f1 1 48 2806
+33f2 4 80 2806
+33f6 2 81 2806
+33f8 2 82 2806
+33fa 4 83 2806
+33fe 4 84 2806
+3402 2 85 2806
+3404 2 86 2806
+3406 2 87 2806
+3408 4 88 2806
+340c 2 89 2806
+340e 2 90 2806
+3410 2 95 2806
+3412 4 96 2806
+3416 2 97 2806
+3418 2 98 2806
+341a 4 99 2806
+341e 2 100 2806
+3420 2 101 2806
+3422 2 108 2806
+3424 4 109 2806
+3428 4 110 2806
+342c 4 111 2806
+3430 2 113 2806
+3432 2 114 2806
+3434 2 115 2806
+3436 2 116 2806
+3438 2 117 2806
+343a 2 118 2806
+343c 2 119 2806
+343e 2 120 2806
+3440 4 129 2806
+3444 2 130 2806
+3446 4 131 2806
+344a 2 132 2806
+344c 2 133 2806
+344e 2 134 2806
+3450 4 142 2806
+3454 2 143 2806
+3456 2 144 2806
+3458 4 145 2806
+345c 2 146 2806
+345e 1 148 2806
+345f 4 149 2806
+3463 4 150 2806
+3467 2 152 2806
+3469 4 161 2806
+346d 4 162 2806
+3471 2 163 2806
+3473 2 164 2806
+3475 3 165 2806
+3478 2 170 2806
+347a 2 171 2806
+347c 2 172 2806
+347e 2 173 2806
+3480 2 174 2806
+3482 1 180 2806
+3483 3 182 2806
+FUNC 675b 20 0 _global_unwind2
+FUNC 677b 45 0 __unwind_handler
+FUNC 67c0 84 0 _local_unwind2
+FUNC 6844 23 0 _abnormal_termination
+FUNC 6867 9 0 _NLG_Notify1
+FUNC 6870 1f 0 _NLG_Notify
+PUBLIC 6887 0 _NLG_Dispatch2
+FUNC 688f 3 0 _NLG_Call
+PUBLIC 6891 0 _NLG_Return2
+FUNC 4695 33 0 abort
+4695 0 54 1011
+4695 5 71 1011
+469a 4 72 1011
+469e 8 74 1011
+46a6 9 81 1011
+46af 11 83 1011
+46c0 8 92 1011
+FUNC 50a3 361 0 memcpy
+50a3 3 101 2787
+50a6 1 113 2787
+50a7 1 114 2787
+50a8 3 116 2787
+50ab 3 117 2787
+50ae 3 119 2787
+50b1 2 129 2787
+50b3 2 131 2787
+50b5 2 132 2787
+50b7 2 134 2787
+50b9 2 135 2787
+50bb 2 137 2787
+50bd 6 138 2787
+50c3 6 147 2787
+50c9 2 148 2787
+50cb 7 150 2787
+50d2 2 151 2787
+50d4 1 153 2787
+50d5 1 154 2787
+50d6 3 155 2787
+50d9 3 156 2787
+50dc 2 157 2787
+50de 1 158 2787
+50df 1 159 2787
+50e0 2 160 2787
+50e2 5 163 2787
+50e7 6 176 2787
+50ed 2 177 2787
+50ef 3 179 2787
+50f2 3 180 2787
+50f5 3 182 2787
+50f8 2 183 2787
+50fa 2 185 2787
+50fc 7 187 2787
+5103 2 205 2787
+5105 5 206 2787
+510a 3 208 2787
+510d 2 209 2787
+510f 3 211 2787
+5112 2 212 2787
+5114 7 214 2787
+511b 8 218 2787
+5123 14 222 2787
+5137 2 229 2787
+5139 2 230 2787
+513b 2 232 2787
+513d 3 233 2787
+5140 3 235 2787
+5143 3 236 2787
+5146 3 238 2787
+5149 3 239 2787
+514c 3 241 2787
+514f 3 242 2787
+5152 3 244 2787
+5155 2 245 2787
+5157 2 247 2787
+5159 a 249 2787
+5163 2 253 2787
+5165 2 254 2787
+5167 2 256 2787
+5169 3 257 2787
+516c 3 259 2787
+516f 3 260 2787
+5172 3 262 2787
+5175 3 263 2787
+5178 3 265 2787
+517b 2 266 2787
+517d 2 268 2787
+517f 8 270 2787
+5187 2 274 2787
+5189 2 275 2787
+518b 2 277 2787
+518d 3 278 2787
+5190 3 280 2787
+5193 3 281 2787
+5196 3 283 2787
+5199 2 284 2787
+519b 2 286 2787
+519d 2a 288 2787
+51c7 4 295 2787
+51cb 4 297 2787
+51cf 4 299 2787
+51d3 4 301 2787
+51d7 4 303 2787
+51db 4 305 2787
+51df 4 307 2787
+51e3 4 309 2787
+51e7 4 311 2787
+51eb 4 313 2787
+51ef 4 315 2787
+51f3 4 317 2787
+51f7 4 319 2787
+51fb 4 321 2787
+51ff 7 323 2787
+5206 2 325 2787
+5208 2 326 2787
+520a 19 328 2787
+5223 3 337 2787
+5226 1 338 2787
+5227 1 339 2787
+5228 3 341 2787
+522b 2 345 2787
+522d 2 347 2787
+522f 3 348 2787
+5232 1 349 2787
+5233 1 350 2787
+5234 3 351 2787
+5237 2 355 2787
+5239 2 357 2787
+523b 3 358 2787
+523e 3 359 2787
+5241 3 360 2787
+5244 1 361 2787
+5245 1 362 2787
+5246 5 363 2787
+524b 2 367 2787
+524d 2 369 2787
+524f 3 370 2787
+5252 3 371 2787
+5255 3 372 2787
+5258 3 373 2787
+525b 3 374 2787
+525e 1 375 2787
+525f 1 376 2787
+5260 3 377 2787
+5263 4 388 2787
+5267 4 389 2787
+526b 6 394 2787
+5271 2 395 2787
+5273 3 397 2787
+5276 3 398 2787
+5279 3 400 2787
+527c 2 401 2787
+527e 1 403 2787
+527f 2 404 2787
+5281 1 405 2787
+5282 9 407 2787
+528b 2 411 2787
+528d a 414 2787
+5297 2 419 2787
+5299 5 420 2787
+529e 3 422 2787
+52a1 2 423 2787
+52a3 3 425 2787
+52a6 2 426 2787
+52a8 7 428 2787
+52af 14 432 2787
+52c3 3 439 2787
+52c6 2 440 2787
+52c8 3 442 2787
+52cb 3 443 2787
+52ce 3 445 2787
+52d1 3 446 2787
+52d4 3 448 2787
+52d7 2 449 2787
+52d9 1 451 2787
+52da 2 452 2787
+52dc 1 453 2787
+52dd a 455 2787
+52e7 3 459 2787
+52ea 2 460 2787
+52ec 3 462 2787
+52ef 3 463 2787
+52f2 3 465 2787
+52f5 3 466 2787
+52f8 3 468 2787
+52fb 3 469 2787
+52fe 3 471 2787
+5301 2 472 2787
+5303 1 474 2787
+5304 2 475 2787
+5306 1 476 2787
+5307 8 478 2787
+530f 3 482 2787
+5312 2 483 2787
+5314 3 485 2787
+5317 3 486 2787
+531a 3 488 2787
+531d 3 489 2787
+5320 3 491 2787
+5323 3 492 2787
+5326 3 494 2787
+5329 3 495 2787
+532c 3 497 2787
+532f 6 498 2787
+5335 1 500 2787
+5336 2 501 2787
+5338 1 502 2787
+5339 2a 504 2787
+5363 4 513 2787
+5367 4 515 2787
+536b 4 517 2787
+536f 4 519 2787
+5373 4 521 2787
+5377 4 523 2787
+537b 4 525 2787
+537f 4 527 2787
+5383 4 529 2787
+5387 4 531 2787
+538b 4 533 2787
+538f 4 535 2787
+5393 4 537 2787
+5397 4 539 2787
+539b 7 541 2787
+53a2 2 543 2787
+53a4 2 544 2787
+53a6 19 546 2787
+53bf 3 555 2787
+53c2 1 557 2787
+53c3 1 558 2787
+53c4 3 559 2787
+53c7 3 563 2787
+53ca 3 565 2787
+53cd 3 566 2787
+53d0 1 567 2787
+53d1 1 568 2787
+53d2 5 569 2787
+53d7 3 573 2787
+53da 3 575 2787
+53dd 3 576 2787
+53e0 3 577 2787
+53e3 3 578 2787
+53e6 1 579 2787
+53e7 1 580 2787
+53e8 3 581 2787
+53eb 3 585 2787
+53ee 3 587 2787
+53f1 3 588 2787
+53f4 3 589 2787
+53f7 3 590 2787
+53fa 3 591 2787
+53fd 3 592 2787
+5400 1 593 2787
+5401 1 594 2787
+5402 2 595 2787
+FUNC 219c 2 0 _freea
+FUNC 4240 14 0 _freea
+FUNC 5a10 16 0 _freea
+FUNC 6904 7 0 _freea
+5a10 5 235 281
+5a15 11 237 281
+4240 3 239 281
+4243 11 241 281
+6904 7 243 281
+219c 2 252 281
+FUNC 19e0 13 0 _msize
+FUNC 4898 14 0 _msize
+FUNC 6b2c 15 0 _msize
+4898 5 39 561
+489d f 43 561
+6b2c 13 43 561
+6b3f 2 50 561
+19e0 11 46 561
+19f1 2 50 561
+FUNC 3c6c 2 0 _fptrap
+FUNC 3c94 7 0 _fptrap
+3c94 0 46 4123
+3c6c 1 47 4123
+3c94 7 47 4123
+3c6d 1 48 4123
+FUNC 6dab 106 0 __report_gsfailure
+6dab b 140 1392
+6db6 5 170 1392
+6dbb 6 171 1392
+6dc1 6 172 1392
+6dc7 6 173 1392
+6dcd 6 174 1392
+6dd3 6 175 1392
+6dd9 7 176 1392
+6de0 7 177 1392
+6de7 7 178 1392
+6dee 7 179 1392
+6df5 7 180 1392
+6dfc 7 181 1392
+6e03 1 182 1392
+6e04 6 183 1392
+6e0a 3 190 1392
+6e0d 5 191 1392
+6e12 3 192 1392
+6e15 5 193 1392
+6e1a 3 194 1392
+6e1d 5 195 1392
+6e22 6 201 1392
+6e28 a 204 1392
+6e32 a 206 1392
+6e3c a 285 1392
+6e46 a 286 1392
+6e50 b 293 1392
+6e5b b 294 1392
+6e66 b 297 1392
+6e71 8 298 1392
+6e79 8 302 1392
+6e81 b 304 1392
+6e8c 9 313 1392
+6e95 8 315 1392
+6e9d 12 319 1392
+6eaf 2 320 1392
+FUNC 1284 1c 0 _calloc_impl
+FUNC 1b18 14 0 _calloc_impl
+FUNC 1b5c 10 0 _calloc_impl
+FUNC 2d48 6 0 _calloc_impl
+FUNC 3488 14 0 _calloc_impl
+FUNC 3e7c 3 0 _calloc_impl
+FUNC 40e4 f 0 _calloc_impl
+FUNC 4c60 10 0 _calloc_impl
+FUNC 5650 1 0 _calloc_impl
+FUNC 5898 16 0 _calloc_impl
+FUNC 5f88 13 0 _calloc_impl
+FUNC 5fc0 6 0 _calloc_impl
+FUNC 68a8 16 0 _calloc_impl
+FUNC 6b60 10 0 _calloc_impl
+FUNC 6c7c 8 0 _calloc_impl
+5898 5 21 291
+589d 11 26 291
+40e4 d 28 291
+68a8 16 28 291
+40f1 2 69 291
+3488 7 30 291
+348f d 34 291
+5650 1 35 291
+1b5c 2 39 291
+1b5e e 41 291
+1284 f 44 291
+1293 d 47 291
+5f88 13 47 291
+1b18 14 59 291
+4c60 10 61 291
+5fc0 6 62 291
+6c7c 8 63 291
+6b60 10 52 291
+2d48 6 53 291
+3e7c 1 53 291
+3e7d 2 69 291
+FUNC 1048 16 0 realloc
+FUNC 11a0 e 0 realloc
+FUNC 1744 2 0 realloc
+FUNC 1b34 7 0 realloc
+FUNC 261c 22 0 realloc
+FUNC 2ae0 8 0 realloc
+FUNC 3d30 12 0 realloc
+FUNC 3df8 3 0 realloc
+FUNC 4230 f 0 realloc
+FUNC 4284 10 0 realloc
+FUNC 4cb0 1 0 realloc
+FUNC 5960 1c 0 realloc
+FUNC 62a4 14 0 realloc
+FUNC 6528 1 0 realloc
+FUNC 6550 12 0 realloc
+FUNC 65dc b 0 realloc
+FUNC 6654 12 0 realloc
+FUNC 6734 14 0 realloc
+62a4 5 62 618
+62a9 f 67 618
+65dc 9 68 618
+65e5 2 117 618
+6654 1 117 618
+6655 11 71 618
+4284 9 73 618
+1b34 1 74 618
+428d 7 74 618
+1b35 6 109 618
+11a0 e 83 618
+4cb0 1 84 618
+261c 14 85 618
+2630 e 94 618
+3d30 12 94 618
+6734 14 109 618
+4230 f 81 618
+6550 7 89 618
+6557 b 90 618
+1744 2 91 618
+3df8 1 91 618
+6528 1 91 618
+3df9 2 117 618
+5960 16 111 618
+5976 6 112 618
+1048 16 103 618
+2ae0 8 105 618
+FUNC 1000 7 0 __crtLCMapStringA_stat
+FUNC 11b0 14 0 __crtLCMapStringA_stat
+FUNC 17c4 8 0 __crtLCMapStringA_stat
+FUNC 1ac4 6 0 __crtLCMapStringA_stat
+FUNC 21f4 c 0 __crtLCMapStringA_stat
+FUNC 2234 9 0 __crtLCMapStringA_stat
+FUNC 2354 f 0 __crtLCMapStringA_stat
+FUNC 242c 12 0 __crtLCMapStringA_stat
+FUNC 2710 3 0 __crtLCMapStringA_stat
+FUNC 2794 b 0 __crtLCMapStringA_stat
+FUNC 28d0 13 0 __crtLCMapStringA_stat
+FUNC 31f8 5 0 __crtLCMapStringA_stat
+FUNC 327c 14 0 __crtLCMapStringA_stat
+FUNC 32c0 4a 0 __crtLCMapStringA_stat
+FUNC 336c 20 0 __crtLCMapStringA_stat
+FUNC 36f8 f 0 __crtLCMapStringA_stat
+FUNC 37e0 10 0 __crtLCMapStringA_stat
+FUNC 3c30 1 0 __crtLCMapStringA_stat
+FUNC 3f94 e 0 __crtLCMapStringA_stat
+FUNC 4300 14 0 __crtLCMapStringA_stat
+FUNC 4338 11 0 __crtLCMapStringA_stat
+FUNC 497c 16 0 __crtLCMapStringA_stat
+FUNC 4b10 15 0 __crtLCMapStringA_stat
+FUNC 4c70 14 0 __crtLCMapStringA_stat
+FUNC 4ce8 10 0 __crtLCMapStringA_stat
+FUNC 4db4 1e 0 __crtLCMapStringA_stat
+FUNC 4e68 12 0 __crtLCMapStringA_stat
+FUNC 54e8 3 0 __crtLCMapStringA_stat
+FUNC 5574 14 0 __crtLCMapStringA_stat
+FUNC 55d0 2 0 __crtLCMapStringA_stat
+FUNC 55f8 8 0 __crtLCMapStringA_stat
+FUNC 5628 8 0 __crtLCMapStringA_stat
+FUNC 578c 3 0 __crtLCMapStringA_stat
+FUNC 5838 24 0 __crtLCMapStringA_stat
+FUNC 58f4 c 0 __crtLCMapStringA_stat
+FUNC 5f44 7 0 __crtLCMapStringA_stat
+FUNC 61fc f 0 __crtLCMapStringA_stat
+FUNC 6328 14 0 __crtLCMapStringA_stat
+FUNC 63a0 c 0 __crtLCMapStringA_stat
+FUNC 6404 6 0 __crtLCMapStringA_stat
+FUNC 65e8 28 0 __crtLCMapStringA_stat
+FUNC 6624 10 0 __crtLCMapStringA_stat
+FUNC 6ad4 16 0 __crtLCMapStringA_stat
+FUNC 6d80 e 0 __crtLCMapStringA_stat
+FUNC 6eb4 3 0 __crtLCMapStringA_stat
+FUNC 6f10 f 0 __crtLCMapStringA_stat
+65e8 12 96 3447
+65fa 16 101 3447
+2354 f 102 3447
+2710 3 102 3447
+28d0 5 102 3447
+31f8 5 102 3447
+36f8 f 102 3447
+28d5 e 106 3447
+3c30 1 107 3447
+54e8 3 109 3447
+32f8 3 113 3447
+32fb f 133 3447
+2794 b 134 3447
+32c0 36 145 3447
+1000 7 146 3447
+1ac4 6 149 3447
+4300 14 149 3447
+4c70 14 149 3447
+5574 14 149 3447
+55f8 8 149 3447
+578c 3 149 3447
+58f4 c 149 3447
+63a0 c 149 3447
+6ad4 16 149 3447
+6eb4 3 149 3447
+6f10 3 150 3447
+6f13 c 151 3447
+4db4 1e 160 3447
+5838 24 169 3447
+6328 14 172 3447
+4ce8 10 175 3447
+6d80 e 177 3447
+4b10 10 186 3447
+4b20 5 190 3447
+11b0 14 196 3447
+2234 9 196 3447
+327c 14 196 3447
+497c 16 196 3447
+4e68 12 196 3447
+55d0 2 196 3447
+5628 8 196 3447
+61fc f 196 3447
+6624 10 196 3447
+3f94 e 197 3447
+336c 20 207 3447
+17c4 2 220 3447
+37e0 10 220 3447
+17c6 6 223 3447
+4338 11 233 3447
+6404 6 233 3447
+5f44 7 240 3447
+21f4 8 242 3447
+21fc 4 244 3447
+242c 12 245 3447
+FUNC 3204 2 0 __crtLCMapStringA
+FUNC 3c24 7 0 __crtLCMapStringA
+FUNC 610c 47 0 __crtLCMapStringA
+610c 8 258 3447
+6114 b 259 3447
+3c24 7 271 3447
+611f 34 271 3447
+3204 2 272 3447
+FUNC 1198 3 0 __crtGetStringTypeA_stat
+FUNC 17b4 e 0 __crtGetStringTypeA_stat
+FUNC 19ac 2 0 __crtGetStringTypeA_stat
+FUNC 24a4 14 0 __crtGetStringTypeA_stat
+FUNC 3318 33 0 __crtGetStringTypeA_stat
+FUNC 357c 2b 0 __crtGetStringTypeA_stat
+FUNC 43c4 b 0 __crtGetStringTypeA_stat
+FUNC 4624 14 0 __crtGetStringTypeA_stat
+FUNC 4d9c 11 0 __crtGetStringTypeA_stat
+FUNC 5094 a 0 __crtGetStringTypeA_stat
+FUNC 5b4c 12 0 __crtGetStringTypeA_stat
+FUNC 5efc c 0 __crtGetStringTypeA_stat
+FUNC 5f38 6 0 __crtGetStringTypeA_stat
+FUNC 6420 c 0 __crtGetStringTypeA_stat
+FUNC 68c0 14 0 __crtGetStringTypeA_stat
+FUNC 6910 12 0 __crtGetStringTypeA_stat
+FUNC 6bf0 28 0 __crtGetStringTypeA_stat
+FUNC 6c20 8 0 __crtGetStringTypeA_stat
+6bf0 12 63 3507
+6c02 7 67 3507
+6c09 f 83 3507
+43c4 b 84 3507
+3318 33 95 3507
+6c20 8 96 3507
+1198 3 99 3507
+19ac 2 99 3507
+24a4 14 99 3507
+4624 14 99 3507
+5b4c 12 99 3507
+5efc c 99 3507
+5f38 6 99 3507
+6420 c 99 3507
+68c0 14 99 3507
+17b4 2 100 3507
+17b6 c 101 3507
+357c f 103 3507
+358b 1c 111 3507
+4d9c 11 116 3507
+5094 6 118 3507
+509a 4 120 3507
+6910 12 121 3507
+FUNC 25dc 40 0 __crtGetStringTypeA
+FUNC 4104 7 0 __crtGetStringTypeA
+FUNC 5ca0 2 0 __crtGetStringTypeA
+25dc 8 133 3507
+25e4 b 134 3507
+25ef 2d 145 3507
+4104 7 145 3507
+5ca0 2 146 3507
+FUNC 2e0c 37b 0 __free_lc_time
+FUNC 641c 3 0 __free_lc_time
+2e0c 6 228 1800
+2e12 10 229 1800
+2e24 8 232 1800
+2e2c 8 233 1800
+2e34 8 234 1800
+2e3c 8 235 1800
+2e44 8 236 1800
+2e4c 8 237 1800
+2e54 7 238 1800
+2e5b 8 240 1800
+2e63 8 241 1800
+2e6b 8 242 1800
+2e73 8 243 1800
+2e7b 8 244 1800
+2e83 8 245 1800
+2e8b 8 246 1800
+2e93 8 248 1800
+2e9b b 249 1800
+2ea6 8 250 1800
+2eae 8 251 1800
+2eb6 8 252 1800
+2ebe 8 253 1800
+2ec6 8 254 1800
+2ece 8 255 1800
+2ed6 8 256 1800
+2ede 8 257 1800
+2ee6 8 258 1800
+2eee 8 259 1800
+2ef6 8 261 1800
+2efe 8 262 1800
+2f06 8 263 1800
+2f0e 8 264 1800
+2f16 8 265 1800
+2f1e b 266 1800
+2f29 b 267 1800
+2f34 b 268 1800
+2f3f b 269 1800
+2f4a b 270 1800
+2f55 b 271 1800
+2f60 b 272 1800
+2f6b b 274 1800
+2f76 b 275 1800
+2f81 b 277 1800
+2f8c b 278 1800
+2f97 b 279 1800
+2fa2 b 282 1800
+2fad b 283 1800
+2fb8 b 284 1800
+2fc3 b 285 1800
+2fce e 286 1800
+2fdc b 287 1800
+2fe7 b 288 1800
+2ff2 b 290 1800
+2ffd b 291 1800
+3008 b 292 1800
+3013 b 293 1800
+301e b 294 1800
+3029 b 295 1800
+3034 b 296 1800
+303f b 298 1800
+304a b 299 1800
+3055 b 300 1800
+3060 b 301 1800
+306b b 302 1800
+3076 b 303 1800
+3081 e 304 1800
+308f b 305 1800
+309a b 306 1800
+30a5 b 307 1800
+30b0 b 308 1800
+30bb b 309 1800
+30c6 b 311 1800
+30d1 b 312 1800
+30dc b 313 1800
+30e7 b 314 1800
+30f2 b 315 1800
+30fd b 316 1800
+3108 b 317 1800
+3113 b 318 1800
+311e b 319 1800
+3129 b 320 1800
+3134 e 321 1800
+3142 b 322 1800
+314d b 324 1800
+3158 b 325 1800
+3163 b 327 1800
+316e b 328 1800
+3179 e 329 1800
+641c 1 329 1800
+641d 2 332 1800
+FUNC 1308 14 0 __free_lconv_num
+FUNC 14ec 7 0 __free_lconv_num
+FUNC 24c0 7 0 __free_lconv_num
+FUNC 2d64 14 0 __free_lconv_num
+FUNC 3194 14 0 __free_lconv_num
+FUNC 33c0 7 0 __free_lconv_num
+FUNC 3c9c 7 0 __free_lconv_num
+FUNC 42ec 3 0 __free_lconv_num
+FUNC 441c 7 0 __free_lconv_num
+FUNC 448c 14 0 __free_lconv_num
+FUNC 5688 14 0 __free_lconv_num
+FUNC 5cdc 17 0 __free_lconv_num
+5cdc 6 218 1742
+5ce2 11 219 1742
+2d64 14 222 1742
+441c 7 223 1742
+448c 14 225 1742
+33c0 7 226 1742
+5688 14 228 1742
+3c9c 7 229 1742
+1308 14 231 1742
+24c0 7 232 1742
+3194 14 234 1742
+14ec 7 235 1742
+42ec 1 235 1742
+42ed 2 236 1742
+FUNC 1028 14 0 __free_lconv_mon
+FUNC 16f4 14 0 __free_lconv_mon
+FUNC 2040 14 0 __free_lconv_mon
+FUNC 2724 7 0 __free_lconv_mon
+FUNC 2788 7 0 __free_lconv_mon
+FUNC 2834 3 0 __free_lconv_mon
+FUNC 28f0 7 0 __free_lconv_mon
+FUNC 2b7c 7 0 __free_lconv_mon
+FUNC 3360 7 0 __free_lconv_mon
+FUNC 34d8 14 0 __free_lconv_mon
+FUNC 37cc 7 0 __free_lconv_mon
+FUNC 3bac 14 0 __free_lconv_mon
+FUNC 3ddc 14 0 __free_lconv_mon
+FUNC 4a80 7 0 __free_lconv_mon
+FUNC 4aa0 7 0 __free_lconv_mon
+FUNC 4b34 14 0 __free_lconv_mon
+FUNC 4dec 7 0 __free_lconv_mon
+FUNC 4e2c 14 0 __free_lconv_mon
+FUNC 4e5c 7 0 __free_lconv_mon
+FUNC 4efc 14 0 __free_lconv_mon
+FUNC 4f64 7 0 __free_lconv_mon
+FUNC 567c 7 0 __free_lconv_mon
+FUNC 58dc 16 0 __free_lconv_mon
+FUNC 594c 14 0 __free_lconv_mon
+FUNC 5b38 14 0 __free_lconv_mon
+FUNC 5cb4 7 0 __free_lconv_mon
+FUNC 6264 14 0 __free_lconv_mon
+FUNC 64f8 14 0 __free_lconv_mon
+58dc 6 270 1685
+58e2 10 271 1685
+3bac 14 274 1685
+2788 7 275 1685
+16f4 14 277 1685
+2b7c 7 278 1685
+4b34 14 280 1685
+2724 7 281 1685
+4efc 14 283 1685
+4f64 7 284 1685
+3ddc 14 286 1685
+28f0 7 287 1685
+34d8 14 289 1685
+37cc 7 290 1685
+594c 14 292 1685
+4e5c 7 293 1685
+5b38 14 295 1685
+5cb4 7 296 1685
+2040 14 298 1685
+3360 7 299 1685
+1028 14 301 1685
+567c 7 302 1685
+6264 14 304 1685
+4a80 7 305 1685
+4e2c 14 307 1685
+4dec 7 308 1685
+64f8 14 310 1685
+2834 1 311 1685
+4aa0 7 311 1685
+2835 2 312 1685
+FUNC 1a0a ba 0 _VEC_memzero
+FUNC 637c 10 0 __sse2_available_init
+637c 0 30 4315
+637c d 31 4315
+6389 2 32 4315
+638b 1 33 4315
+FUNC 1c38 103 0 _VEC_memcpy
+FUNC 6a38 2c 0 _alloca_probe_16
+6a38 0 44 4274
+6a38 1 46 4274
+6a39 4 47 4274
+6a3d 2 48 4274
+6a3f 3 49 4274
+6a42 2 50 4274
+6a44 2 51 4274
+6a46 2 52 4274
+6a48 1 53 4274
+6a49 5 54 4274
+6a4e 1 59 4274
+6a4f 4 60 4274
+6a53 2 61 4274
+6a55 3 62 4274
+6a58 2 63 4274
+6a5a 2 64 4274
+6a5c 2 65 4274
+6a5e 1 66 4274
+6a5f 5 67 4274
+PUBLIC 6a4e 0 _alloca_probe_8
+FUNC 1d6e 34 0 _allmul
+1d6e 0 47 2803
+1d6e 4 63 2803
+1d72 4 64 2803
+1d76 2 65 2803
+1d78 4 66 2803
+1d7c 2 67 2803
+1d7e 4 69 2803
+1d82 2 70 2803
+1d84 3 72 2803
+1d87 1 75 2803
+1d88 2 83 2803
+1d8a 2 84 2803
+1d8c 4 86 2803
+1d90 4 87 2803
+1d94 2 88 2803
+1d96 4 90 2803
+1d9a 2 91 2803
+1d9c 2 92 2803
+1d9e 1 94 2803
+1d9f 3 96 2803
+FUNC 1680 2b 0 _chkstk
+1680 0 65 4276
+1680 1 69 4276
+1681 4 73 4276
+1685 2 74 4276
+1687 2 79 4276
+1689 2 80 4276
+168b 2 81 4276
+168d 2 83 4276
+168f 5 84 4276
+1694 2 87 4276
+1696 2 88 4276
+1698 2 89 4276
+169a 1 90 4276
+169b 1 91 4276
+169c 2 92 4276
+169e 3 93 4276
+16a1 1 94 4276
+16a2 5 98 4276
+16a7 2 99 4276
+16a9 2 100 4276
+FUNC 5be0 46 0 strcspn
+5be0 4 191 2794
+5be4 2 198 2794
+5be6 1 199 2794
+5be7 1 200 2794
+5be8 1 201 2794
+5be9 1 202 2794
+5bea 1 203 2794
+5beb 1 204 2794
+5bec 1 205 2794
+5bed 1 206 2794
+5bee 6 212 2794
+5bf4 2 216 2794
+5bf6 2 217 2794
+5bf8 2 218 2794
+5bfa 3 219 2794
+5bfd 4 220 2794
+5c01 2 221 2794
+5c03 3 227 2794
+5c06 6 229 2794
+5c0c 3 234 2794
+5c0f 2 236 2794
+5c11 2 237 2794
+5c13 2 238 2794
+5c15 3 239 2794
+5c18 4 240 2794
+5c1c 2 245 2794
+5c1e 2 255 2794
+5c20 3 257 2794
+5c23 3 259 2794
+FUNC 1bcb 40 0 strpbrk
+1bcb 4 191 2794
+1bcf 2 198 2794
+1bd1 1 199 2794
+1bd2 1 200 2794
+1bd3 1 201 2794
+1bd4 1 202 2794
+1bd5 1 203 2794
+1bd6 1 204 2794
+1bd7 1 205 2794
+1bd8 1 206 2794
+1bd9 6 212 2794
+1bdf 2 216 2794
+1be1 2 217 2794
+1be3 2 218 2794
+1be5 3 219 2794
+1be8 4 220 2794
+1bec 2 221 2794
+1bee 5 227 2794
+1bf3 2 236 2794
+1bf5 2 237 2794
+1bf7 2 238 2794
+1bf9 3 239 2794
+1bfc 4 240 2794
+1c00 2 247 2794
+1c02 3 248 2794
+1c05 3 257 2794
+1c08 3 259 2794
+FUNC 3bc0 61 0 __ascii_strnicmp
+3bc0 6 69 2798
+3bc6 3 75 2798
+3bc9 2 76 2798
+3bcb 2 77 2798
+3bcd 3 79 2798
+3bd0 3 80 2798
+3bd3 2 82 2798
+3bd5 2 83 2798
+3bd7 5 84 2798
+3bdc 2 89 2798
+3bde 2 91 2798
+3be0 2 93 2798
+3be2 2 95 2798
+3be4 2 97 2798
+3be6 2 98 2798
+3be8 3 100 2798
+3beb 3 101 2798
+3bee 2 103 2798
+3bf0 2 104 2798
+3bf2 2 106 2798
+3bf4 2 107 2798
+3bf6 2 109 2798
+3bf8 2 112 2798
+3bfa 2 113 2798
+3bfc 2 115 2798
+3bfe 2 116 2798
+3c00 2 118 2798
+3c02 2 121 2798
+3c04 2 122 2798
+3c06 3 124 2798
+3c09 2 125 2798
+3c0b 2 128 2798
+3c0d 2 129 2798
+3c0f 2 130 2798
+3c11 5 133 2798
+3c16 2 134 2798
+3c18 2 135 2798
+3c1a 2 138 2798
+3c1c 5 140 2798
+PUBLIC 2140 10 RtlUnwind
+STACK WIN 4 2cec 54 6 0 8 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4b70 a 3 0 0 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 25a8 21 7 0 0 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 131c 14 7 0 0 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1b94 16 7 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 11e8 1e 7 0 0 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1b3c 10 7 0 0 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 669c 7 3 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 16d4 7 7 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 16db 19 0 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 211c c 0 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5458 9 0 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 40f4 10 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 1fd4 8 8 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1fdc 14 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 46d8 7 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 65a8 7 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1fda 2 2 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 1fdc 14 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 46d8 7 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 65a8 3 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 12a0 b 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1ff0 5 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 198c 4 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1ff5 13 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 455c 12 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4d0c 5 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 38be 161 c 0 0 10 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ =  $24 $T0 48 - ^ = 
+STACK WIN 4 39e1 14 0 0 0 10 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 620c a 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 66c3 70 c 0 4 10 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 32 - ^ =  $23 $T0 36 - ^ =  $24 $T0 40 - ^ = 
+STACK WIN 4 672a 8 0 0 4 10 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 26fc 5 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2701 f 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2bcc 2 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3888 18 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3ea0 1f 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3889 17 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 4778 5 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 199c 10 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2380 6 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3ce8 10 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4448 14 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 477d 17 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 57d0 10 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5a40 5 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 642c 10 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5a28 e 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 21a0 5 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1db0 5 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 21a5 19 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 24cc 1a 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4c14 2 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6a9b 18 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2100 9 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 2b50 9 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 4594 33 3 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 4597 2f 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2944 6 6 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1bc8 3 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1de4 e 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 22bc 2 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 294a a 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3dd4 3 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3e80 f 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6568 10 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1bc8 1 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 1de4 e 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 22bc 2 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 294a a 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 3dd4 3 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 3e80 f 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 6568 10 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 69e4 5 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1d44 c 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2470 10 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2558 27 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2660 14 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 269c 18 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 27a4 2 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 34ec 24 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 48dc 10 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4bf8 2 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4dd4 18 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5b74 a 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 69e9 13 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6f60 2 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2470 10 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2559 26 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2660 9 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 27a4 2 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 48dc 10 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2470 10 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 255a 25 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 2660 8 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 27a4 2 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 48dc 10 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 35a7 140 c 0 c 10 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 52 - ^ =  $23 $T0 56 - ^ =  $24 $T0 60 - ^ = 
+STACK WIN 4 36d2 e 0 0 c 10 30 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 6d68 16 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5464 16 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1df4 f 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 5544 f 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 3218 1e 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6410 5 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1b78 4 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2888 9 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 44d0 16 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4858 10 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6415 2 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4e7c 1b 1b 0 4 0 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 11c4 12 0 0 4 0 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2028 16 0 0 4 0 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 20c0 12 0 0 4 0 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2460 f 0 0 4 0 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2648 f 0 0 4 0 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 26c4 1a 0 0 4 0 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 349c 27 0 0 4 0 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 43a4 1e 0 0 4 0 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4428 a 0 0 4 0 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 47c0 2b 0 0 4 0 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 49a4 18 0 0 4 0 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4a64 1c 0 0 4 0 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4d50 17 0 0 4 0 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4e97 1e 0 0 4 0 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4f5c 2 0 0 4 0 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5810 25 0 0 4 0 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 59cc 16 0 0 4 0 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5d18 34 0 0 4 0 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 64e8 5 0 0 4 0 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6648 7 0 0 4 0 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6678 22 0 0 4 0 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6894 11 0 0 4 0 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 70ac 18 0 0 4 0 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4e92 5 5 0 4 4 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ = 
+STACK WIN 4 11c4 12 0 0 4 4 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ = 
+STACK WIN 4 2028 16 0 0 4 4 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ = 
+STACK WIN 4 20c0 12 0 0 4 4 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ = 
+STACK WIN 4 2460 f 0 0 4 4 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ = 
+STACK WIN 4 2648 8 0 0 4 4 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ = 
+STACK WIN 4 26c4 1a 0 0 4 4 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ = 
+STACK WIN 4 349c 27 0 0 4 4 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ = 
+STACK WIN 4 43a4 1e 0 0 4 4 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ = 
+STACK WIN 4 4428 a 0 0 4 4 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ = 
+STACK WIN 4 47c0 2b 0 0 4 4 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ = 
+STACK WIN 4 49a4 18 0 0 4 4 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ = 
+STACK WIN 4 4a64 1c 0 0 4 4 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ = 
+STACK WIN 4 4d50 17 0 0 4 4 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ = 
+STACK WIN 4 4e97 1e 0 0 4 4 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ = 
+STACK WIN 4 4f5c 2 0 0 4 4 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ = 
+STACK WIN 4 5810 25 0 0 4 4 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ = 
+STACK WIN 4 59cc 16 0 0 4 4 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ = 
+STACK WIN 4 5d18 34 0 0 4 4 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ = 
+STACK WIN 4 64e8 5 0 0 4 4 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ = 
+STACK WIN 4 6648 7 0 0 4 4 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ = 
+STACK WIN 4 6678 22 0 0 4 4 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ = 
+STACK WIN 4 6894 11 0 0 4 4 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ = 
+STACK WIN 4 70ac 18 0 0 4 4 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ = 
+STACK WIN 4 4e93 4 4 0 4 8 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ = 
+STACK WIN 4 11c4 12 0 0 4 8 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ = 
+STACK WIN 4 2028 16 0 0 4 8 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ = 
+STACK WIN 4 20c0 12 0 0 4 8 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ = 
+STACK WIN 4 2460 f 0 0 4 8 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ = 
+STACK WIN 4 2648 5 0 0 4 8 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ = 
+STACK WIN 4 26c4 1a 0 0 4 8 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ = 
+STACK WIN 4 349c 27 0 0 4 8 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ = 
+STACK WIN 4 43a4 1e 0 0 4 8 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ = 
+STACK WIN 4 4428 a 0 0 4 8 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ = 
+STACK WIN 4 47c0 2b 0 0 4 8 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ = 
+STACK WIN 4 49a4 18 0 0 4 8 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ = 
+STACK WIN 4 4a64 1c 0 0 4 8 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ = 
+STACK WIN 4 4d50 17 0 0 4 8 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ = 
+STACK WIN 4 4e97 1e 0 0 4 8 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ = 
+STACK WIN 4 4f5c 2 0 0 4 8 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ = 
+STACK WIN 4 5810 25 0 0 4 8 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ = 
+STACK WIN 4 59cc 16 0 0 4 8 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ = 
+STACK WIN 4 5d18 34 0 0 4 8 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ = 
+STACK WIN 4 64e8 5 0 0 4 8 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ = 
+STACK WIN 4 6648 7 0 0 4 8 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ = 
+STACK WIN 4 6678 22 0 0 4 8 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ = 
+STACK WIN 4 6894 11 0 0 4 8 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ = 
+STACK WIN 4 70ac 18 0 0 4 8 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ = 
+STACK WIN 4 11c4 12 0 0 4 c 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ =  $24 $T0 520 - ^ = 
+STACK WIN 4 2028 16 0 0 4 c 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ =  $24 $T0 520 - ^ = 
+STACK WIN 4 20c0 12 0 0 4 c 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ =  $24 $T0 520 - ^ = 
+STACK WIN 4 2460 f 0 0 4 c 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ =  $24 $T0 520 - ^ = 
+STACK WIN 4 2648 4 0 0 4 c 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ =  $24 $T0 520 - ^ = 
+STACK WIN 4 26c4 1a 0 0 4 c 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ =  $24 $T0 520 - ^ = 
+STACK WIN 4 349c 27 0 0 4 c 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ =  $24 $T0 520 - ^ = 
+STACK WIN 4 43a4 1e 0 0 4 c 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ =  $24 $T0 520 - ^ = 
+STACK WIN 4 4428 a 0 0 4 c 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ =  $24 $T0 520 - ^ = 
+STACK WIN 4 47c0 2b 0 0 4 c 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ =  $24 $T0 520 - ^ = 
+STACK WIN 4 49a4 18 0 0 4 c 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ =  $24 $T0 520 - ^ = 
+STACK WIN 4 4a64 1c 0 0 4 c 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ =  $24 $T0 520 - ^ = 
+STACK WIN 4 4d50 17 0 0 4 c 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ =  $24 $T0 520 - ^ = 
+STACK WIN 4 4e97 1e 0 0 4 c 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ =  $24 $T0 520 - ^ = 
+STACK WIN 4 4f5c 2 0 0 4 c 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ =  $24 $T0 520 - ^ = 
+STACK WIN 4 5810 25 0 0 4 c 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ =  $24 $T0 520 - ^ = 
+STACK WIN 4 59cc 16 0 0 4 c 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ =  $24 $T0 520 - ^ = 
+STACK WIN 4 5d18 34 0 0 4 c 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ =  $24 $T0 520 - ^ = 
+STACK WIN 4 64e8 5 0 0 4 c 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ =  $24 $T0 520 - ^ = 
+STACK WIN 4 6648 7 0 0 4 c 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ =  $24 $T0 520 - ^ = 
+STACK WIN 4 6678 22 0 0 4 c 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ =  $24 $T0 520 - ^ = 
+STACK WIN 4 6894 11 0 0 4 c 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ =  $24 $T0 520 - ^ = 
+STACK WIN 4 70ac 18 0 0 4 c 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ =  $24 $T0 520 - ^ = 
+STACK WIN 4 1984 1 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 2388 16 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 4ab4 16 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 4be0 17 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 5ac8 13 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 650c 6 6 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1490 10 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1540 3 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1720 14 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 174c 1b 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 19d8 2 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2054 3 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2218 9 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2440 c 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2870 e 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2928 c 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2ae8 11 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2d78 10 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 356c f 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 38a8 10 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3ed0 10 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3fa4 10 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 44e8 7 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4810 17 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4cc8 c 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4f50 7 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5564 e 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 56d4 10 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 57a4 e 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 59f8 16 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5bbc e 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5ca4 10 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5d60 c 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5e38 18 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5e60 10 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6090 c 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 61f0 7 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6228 c 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 648c c 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 64dc 5 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6512 14 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 66a4 c 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 68e4 10 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6ee8 3 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6f98 c 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1490 10 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 1540 3 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 1720 14 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 174c 1b 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 19d8 2 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2054 1 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2218 9 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2440 c 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2870 e 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2928 c 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2ae8 11 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2d78 10 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 356c f 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 38a8 10 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 3ed0 10 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 3fa4 10 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 44e8 7 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 4810 17 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 4cc8 c 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 4f50 7 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 5564 e 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 56d4 10 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 57a4 e 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 59f8 16 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 5bbc e 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 5ca4 10 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 5d60 c 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 5e38 18 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 5e60 10 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 6090 c 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 61f0 7 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 6228 c 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 648c c 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 64dc 5 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 6512 14 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 66a4 c 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 68e4 10 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 6ee8 3 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 6f98 c 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 1490 10 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 1540 3 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 1720 14 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 174c 1b 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 19d8 2 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 2440 c 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 2870 e 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 2928 c 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 2ae8 11 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 2d78 10 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 356c f 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 38a8 10 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 3ed0 10 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 3fa4 10 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 44e8 7 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 4810 17 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 4cc8 c 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 4f50 7 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 5564 e 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 56d4 10 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 57a4 e 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 59f8 16 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 5bbc e 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 5ca4 10 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 5d60 c 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 5e38 18 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 5e60 10 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 6090 c 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 61f0 7 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 6228 c 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 648c c 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 64dc 5 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 66a4 c 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 68e4 10 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 6ee8 3 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 6f98 c 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 1490 10 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ =  $20 $T0 12 - ^ = 
+STACK WIN 4 1750 17 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ =  $20 $T0 12 - ^ = 
+STACK WIN 4 2440 c 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ =  $20 $T0 12 - ^ = 
+STACK WIN 4 2928 c 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ =  $20 $T0 12 - ^ = 
+STACK WIN 4 2ae8 10 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ =  $20 $T0 12 - ^ = 
+STACK WIN 4 2d78 10 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ =  $20 $T0 12 - ^ = 
+STACK WIN 4 38a8 10 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ =  $20 $T0 12 - ^ = 
+STACK WIN 4 3ed0 10 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ =  $20 $T0 12 - ^ = 
+STACK WIN 4 3fa4 10 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ =  $20 $T0 12 - ^ = 
+STACK WIN 4 44e8 7 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ =  $20 $T0 12 - ^ = 
+STACK WIN 4 4cc8 c 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ =  $20 $T0 12 - ^ = 
+STACK WIN 4 56d4 10 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ =  $20 $T0 12 - ^ = 
+STACK WIN 4 59f8 16 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ =  $20 $T0 12 - ^ = 
+STACK WIN 4 5ca4 10 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ =  $20 $T0 12 - ^ = 
+STACK WIN 4 5d60 c 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ =  $20 $T0 12 - ^ = 
+STACK WIN 4 5e38 18 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ =  $20 $T0 12 - ^ = 
+STACK WIN 4 6090 c 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ =  $20 $T0 12 - ^ = 
+STACK WIN 4 61f0 7 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ =  $20 $T0 12 - ^ = 
+STACK WIN 4 6228 c 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ =  $20 $T0 12 - ^ = 
+STACK WIN 4 648c c 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ =  $20 $T0 12 - ^ = 
+STACK WIN 4 64dc 5 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ =  $20 $T0 12 - ^ = 
+STACK WIN 4 66a4 c 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ =  $20 $T0 12 - ^ = 
+STACK WIN 4 68e4 10 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ =  $20 $T0 12 - ^ = 
+STACK WIN 4 6ee8 3 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ =  $20 $T0 12 - ^ = 
+STACK WIN 4 4139 dc 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 4148 a8 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 414f a0 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 4191 5d 0 0 0 c 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ =  $20 $T0 12 - ^ = 
+STACK WIN 4 1fac d d 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1018 8 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 19b4 e 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 19f4 2 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1dd0 14 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1fb9 1b 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2058 f 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 209c 9 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2364 1a 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 253c 4 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2598 9 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 25cc 10 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2718 b 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2730 e 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 28a8 a 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 28fc 2 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 290c 14 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2b34 f 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2bfc 10 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2d88 7 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3730 d 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 377c 2 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 37b0 10 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3c38 24 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3c84 10 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3db8 1b 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3e90 e 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3efc 13 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4110 12 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 42dc f 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 42f0 10 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4518 6 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4610 7 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4684 11 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 46f8 13 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4848 a 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4994 f 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 49bc e 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4aac 1 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4cb8 f 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4ed8 24 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4f10 3 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4f30 e 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 501c 10 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5518 3 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 569c 3 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 57bc 12 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5a50 10 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5cc0 14 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5e84 f 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6448 f 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6530 e 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 66b0 13 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6970 4 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6aec 7 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6f30 e 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1fb6 3 3 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 1018 8 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 19b4 e 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 19f4 2 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 1dd0 14 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 1fb9 1b 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 2058 f 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 209c 9 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 2364 1a 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 253c 4 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 2598 9 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 25cc 10 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 2718 b 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 2730 e 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 28a8 a 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 28fc 2 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 290c 14 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 2b34 f 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 2bfc 10 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 2d88 7 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 3730 d 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 377c 2 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 37b0 10 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 3c38 24 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 3c84 10 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 3db8 1b 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 3e90 e 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 3efc 13 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 4110 12 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 42dc f 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 42f0 10 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 4518 6 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 4610 7 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 4684 11 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 46f8 5 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 4848 a 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 4994 f 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 49bc e 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 4aac 1 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 4cb8 f 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 4ed8 24 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 4f10 3 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 4f30 e 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 501c 10 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 569c 3 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 57bc 12 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 5a50 10 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 5cc0 14 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 5e84 f 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 6448 f 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 6530 e 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 66b0 13 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 6aec 7 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 6f30 e 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 1018 8 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 19b4 e 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 19f4 2 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 1dd0 14 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 1fb9 1b 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 2058 f 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 209c 9 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 2364 1a 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 253c 4 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 2598 9 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 25cc 10 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 2718 b 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 2730 e 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 28a8 a 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 28fc 2 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 290c 14 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 2b34 f 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 2bfc 10 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 2d88 7 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 3730 d 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 377c 2 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 37b0 10 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 3c38 24 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 3c84 10 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 3db8 1b 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 3e90 e 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 3efc 13 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 4110 12 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 42dc f 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 42f0 10 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 4518 6 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 4610 7 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 4684 11 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 46f8 4 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 4848 a 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 4994 f 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 49bc e 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 4aac 1 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 4cb8 f 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 4ed8 24 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 4f10 3 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 4f30 e 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 501c 10 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 569c 3 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 57bc 12 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 5a50 10 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 5cc0 14 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 5e84 f 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 6448 f 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 6530 e 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 66b0 13 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 6aec 7 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 6f30 e 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 2008 d d 0 0 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1ad8 3 0 0 0 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2015 12 0 0 0 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 22dc 16 0 0 0 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2320 5 0 0 0 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2934 3 0 0 0 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 33cc 17 0 0 0 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4254 30 0 0 0 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 432c 5 0 0 0 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4ad0 28 0 0 0 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4b8c 2c 0 0 0 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4c4c 12 0 0 0 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6960 10 0 0 0 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2011 4 4 0 0 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ = 
+STACK WIN 4 1ad8 3 0 0 0 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ = 
+STACK WIN 4 2015 12 0 0 0 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ = 
+STACK WIN 4 22dc 16 0 0 0 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ = 
+STACK WIN 4 2320 3 0 0 0 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ = 
+STACK WIN 4 2934 3 0 0 0 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ = 
+STACK WIN 4 33cc 17 0 0 0 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ = 
+STACK WIN 4 4254 30 0 0 0 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ = 
+STACK WIN 4 432c 5 0 0 0 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ = 
+STACK WIN 4 4ad0 28 0 0 0 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ = 
+STACK WIN 4 4b8c 2c 0 0 0 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ = 
+STACK WIN 4 4c4c 12 0 0 0 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ = 
+STACK WIN 4 6960 10 0 0 0 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ = 
+STACK WIN 4 2014 1 1 0 0 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ = 
+STACK WIN 4 1ad8 3 0 0 0 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ = 
+STACK WIN 4 2015 12 0 0 0 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ = 
+STACK WIN 4 22dc 16 0 0 0 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ = 
+STACK WIN 4 2320 2 0 0 0 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ = 
+STACK WIN 4 2934 3 0 0 0 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ = 
+STACK WIN 4 33cc 17 0 0 0 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ = 
+STACK WIN 4 4254 30 0 0 0 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ = 
+STACK WIN 4 432c 5 0 0 0 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ = 
+STACK WIN 4 4ad0 28 0 0 0 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ = 
+STACK WIN 4 4b8c 2c 0 0 0 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ = 
+STACK WIN 4 4c4c 12 0 0 0 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ = 
+STACK WIN 4 6960 10 0 0 0 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ = 
+STACK WIN 4 1ad8 3 0 0 0 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ =  $24 $T0 24 - ^ = 
+STACK WIN 4 2015 12 0 0 0 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ =  $24 $T0 24 - ^ = 
+STACK WIN 4 22dc 16 0 0 0 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ =  $24 $T0 24 - ^ = 
+STACK WIN 4 2320 1 0 0 0 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ =  $24 $T0 24 - ^ = 
+STACK WIN 4 2934 3 0 0 0 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ =  $24 $T0 24 - ^ = 
+STACK WIN 4 33cc 17 0 0 0 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ =  $24 $T0 24 - ^ = 
+STACK WIN 4 4254 30 0 0 0 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ =  $24 $T0 24 - ^ = 
+STACK WIN 4 432c 5 0 0 0 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ =  $24 $T0 24 - ^ = 
+STACK WIN 4 4ad0 28 0 0 0 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ =  $24 $T0 24 - ^ = 
+STACK WIN 4 4b8c 2c 0 0 0 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ =  $24 $T0 24 - ^ = 
+STACK WIN 4 4c4c 12 0 0 0 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ =  $24 $T0 24 - ^ = 
+STACK WIN 4 6960 10 0 0 0 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ =  $24 $T0 24 - ^ = 
+STACK WIN 4 3fb4 a a 0 0 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 14f8 30 0 0 0 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 23d0 10 0 0 0 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 293c 1 0 0 0 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2bbc e 0 0 0 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3524 c 0 0 0 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3548 f 0 0 0 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3d10 18 0 0 0 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3df0 8 0 0 0 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3dfc 1c 0 0 0 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3fbe 18 0 0 0 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 436c 12 0 0 0 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 68d4 9 0 0 0 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3fbd 1 1 0 0 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ = 
+STACK WIN 4 14f8 2e 0 0 0 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ = 
+STACK WIN 4 23d0 10 0 0 0 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ = 
+STACK WIN 4 293c 1 0 0 0 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ = 
+STACK WIN 4 2bbc e 0 0 0 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ = 
+STACK WIN 4 3524 c 0 0 0 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ = 
+STACK WIN 4 3548 f 0 0 0 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ = 
+STACK WIN 4 3d10 18 0 0 0 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ = 
+STACK WIN 4 3df0 8 0 0 0 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ = 
+STACK WIN 4 3dfc 1c 0 0 0 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ = 
+STACK WIN 4 3fbe 18 0 0 0 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ = 
+STACK WIN 4 436c 12 0 0 0 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ = 
+STACK WIN 4 68d4 9 0 0 0 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ = 
+STACK WIN 4 14f8 2d 0 0 0 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ = 
+STACK WIN 4 23d0 10 0 0 0 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ = 
+STACK WIN 4 293c 1 0 0 0 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ = 
+STACK WIN 4 2bbc e 0 0 0 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ = 
+STACK WIN 4 3524 c 0 0 0 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ = 
+STACK WIN 4 3548 f 0 0 0 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ = 
+STACK WIN 4 3d10 18 0 0 0 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ = 
+STACK WIN 4 3df0 8 0 0 0 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ = 
+STACK WIN 4 3dfc 1c 0 0 0 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ = 
+STACK WIN 4 3fbe 18 0 0 0 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ = 
+STACK WIN 4 436c 12 0 0 0 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ = 
+STACK WIN 4 68d4 9 0 0 0 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ = 
+STACK WIN 4 14f9 29 0 0 0 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ =  $24 $T0 24 - ^ = 
+STACK WIN 4 23d0 10 0 0 0 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ =  $24 $T0 24 - ^ = 
+STACK WIN 4 293c 1 0 0 0 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ =  $24 $T0 24 - ^ = 
+STACK WIN 4 3524 c 0 0 0 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ =  $24 $T0 24 - ^ = 
+STACK WIN 4 3d10 18 0 0 0 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ =  $24 $T0 24 - ^ = 
+STACK WIN 4 3dfc 1c 0 0 0 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ =  $24 $T0 24 - ^ = 
+STACK WIN 4 68d4 9 0 0 0 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ =  $24 $T0 24 - ^ = 
+STACK WIN 4 5c70 9 9 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1008 b 0 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1258 f 0 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 12c8 e 0 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1548 33 0 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1708 18 0 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 17a4 10 0 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 197c 2 0 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1988 3 0 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 22f8 1c 0 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 23e0 4c 0 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 244c 14 0 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 24b8 8 0 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 24e8 1c 0 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 26e0 1c 0 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2ad0 10 0 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2b6c f 0 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2bf0 5 0 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2d54 a 0 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2db0 16 0 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2dcc 8 0 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 31a8 4 0 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 31e0 16 0 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3260 f 0 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 334c 14 0 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 33ac 12 0 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3cb0 3 0 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3d28 6 0 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3e24 2 0 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3e34 20 0 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3e5c 1f 0 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 42a4 f 0 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4380 f 0 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4434 12 0 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4618 6 0 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 47ec 14 0 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4920 a 0 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5c79 27 0 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5d6c 8 0 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 617c 18 0 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6248 a 0 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 636c e 0 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 63f0 14 0 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6a74 a 0 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6ba0 3f 0 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6c4c 14 0 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6c84 8 0 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6f90 3 0 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1008 b 0 0 0 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ = 
+STACK WIN 4 1258 f 0 0 0 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ = 
+STACK WIN 4 12c8 e 0 0 0 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ = 
+STACK WIN 4 1548 33 0 0 0 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ = 
+STACK WIN 4 1708 18 0 0 0 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ = 
+STACK WIN 4 17a4 10 0 0 0 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ = 
+STACK WIN 4 197c 2 0 0 0 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ = 
+STACK WIN 4 1988 1 0 0 0 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ = 
+STACK WIN 4 22f8 1c 0 0 0 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ = 
+STACK WIN 4 23e0 4c 0 0 0 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ = 
+STACK WIN 4 244c 14 0 0 0 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ = 
+STACK WIN 4 24b8 8 0 0 0 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ = 
+STACK WIN 4 24e8 1c 0 0 0 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ = 
+STACK WIN 4 26e0 1c 0 0 0 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ = 
+STACK WIN 4 2ad0 10 0 0 0 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ = 
+STACK WIN 4 2b6c f 0 0 0 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ = 
+STACK WIN 4 2bf0 5 0 0 0 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ = 
+STACK WIN 4 2d54 a 0 0 0 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ = 
+STACK WIN 4 2db0 16 0 0 0 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ = 
+STACK WIN 4 31a8 4 0 0 0 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ = 
+STACK WIN 4 31e0 16 0 0 0 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ = 
+STACK WIN 4 3260 f 0 0 0 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ = 
+STACK WIN 4 334c 14 0 0 0 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ = 
+STACK WIN 4 33ac 12 0 0 0 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ = 
+STACK WIN 4 3cb0 3 0 0 0 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ = 
+STACK WIN 4 3d28 6 0 0 0 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ = 
+STACK WIN 4 3e24 2 0 0 0 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ = 
+STACK WIN 4 3e34 20 0 0 0 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ = 
+STACK WIN 4 3e5c 1f 0 0 0 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ = 
+STACK WIN 4 42a4 f 0 0 0 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ = 
+STACK WIN 4 4380 f 0 0 0 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ = 
+STACK WIN 4 4434 12 0 0 0 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ = 
+STACK WIN 4 4618 6 0 0 0 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ = 
+STACK WIN 4 47ec 14 0 0 0 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ = 
+STACK WIN 4 4920 a 0 0 0 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ = 
+STACK WIN 4 5c79 27 0 0 0 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ = 
+STACK WIN 4 5d6c 8 0 0 0 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ = 
+STACK WIN 4 617c 18 0 0 0 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ = 
+STACK WIN 4 6248 a 0 0 0 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ = 
+STACK WIN 4 636c e 0 0 0 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ = 
+STACK WIN 4 63f0 14 0 0 0 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ = 
+STACK WIN 4 6a74 a 0 0 0 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ = 
+STACK WIN 4 6ba0 3f 0 0 0 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ = 
+STACK WIN 4 6c4c 14 0 0 0 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ = 
+STACK WIN 4 6c84 8 0 0 0 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ = 
+STACK WIN 4 6f90 3 0 0 0 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ = 
+STACK WIN 4 1008 b 0 0 0 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ = 
+STACK WIN 4 1258 f 0 0 0 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ = 
+STACK WIN 4 12c8 e 0 0 0 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ = 
+STACK WIN 4 1548 33 0 0 0 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ = 
+STACK WIN 4 1708 18 0 0 0 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ = 
+STACK WIN 4 17a4 10 0 0 0 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ = 
+STACK WIN 4 197c 2 0 0 0 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ = 
+STACK WIN 4 22f8 1c 0 0 0 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ = 
+STACK WIN 4 23e1 10 0 0 0 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ = 
+STACK WIN 4 244c 14 0 0 0 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ = 
+STACK WIN 4 24b8 8 0 0 0 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ = 
+STACK WIN 4 24e8 1c 0 0 0 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ = 
+STACK WIN 4 26e0 1c 0 0 0 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ = 
+STACK WIN 4 2ad0 10 0 0 0 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ = 
+STACK WIN 4 2b6c f 0 0 0 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ = 
+STACK WIN 4 2bf0 5 0 0 0 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ = 
+STACK WIN 4 2d54 a 0 0 0 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ = 
+STACK WIN 4 2db0 16 0 0 0 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ = 
+STACK WIN 4 31a8 4 0 0 0 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ = 
+STACK WIN 4 31e0 16 0 0 0 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ = 
+STACK WIN 4 3260 f 0 0 0 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ = 
+STACK WIN 4 334c 14 0 0 0 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ = 
+STACK WIN 4 33ac 12 0 0 0 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ = 
+STACK WIN 4 3cb0 3 0 0 0 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ = 
+STACK WIN 4 3d28 6 0 0 0 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ = 
+STACK WIN 4 3e24 2 0 0 0 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ = 
+STACK WIN 4 3e34 20 0 0 0 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ = 
+STACK WIN 4 42a4 f 0 0 0 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ = 
+STACK WIN 4 4380 f 0 0 0 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ = 
+STACK WIN 4 4434 12 0 0 0 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ = 
+STACK WIN 4 4618 6 0 0 0 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ = 
+STACK WIN 4 47ec 14 0 0 0 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ = 
+STACK WIN 4 4920 a 0 0 0 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ = 
+STACK WIN 4 5d6c 8 0 0 0 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ = 
+STACK WIN 4 617c 18 0 0 0 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ = 
+STACK WIN 4 6248 a 0 0 0 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ = 
+STACK WIN 4 636c e 0 0 0 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ = 
+STACK WIN 4 63f0 14 0 0 0 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ = 
+STACK WIN 4 6a74 a 0 0 0 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ = 
+STACK WIN 4 6ba0 3f 0 0 0 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ = 
+STACK WIN 4 6c4c 14 0 0 0 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ = 
+STACK WIN 4 1008 b 0 0 0 c 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ =  $24 $T0 88 - ^ = 
+STACK WIN 4 1258 f 0 0 0 c 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ =  $24 $T0 88 - ^ = 
+STACK WIN 4 12c8 e 0 0 0 c 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ =  $24 $T0 88 - ^ = 
+STACK WIN 4 1548 33 0 0 0 c 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ =  $24 $T0 88 - ^ = 
+STACK WIN 4 1708 18 0 0 0 c 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ =  $24 $T0 88 - ^ = 
+STACK WIN 4 17a4 10 0 0 0 c 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ =  $24 $T0 88 - ^ = 
+STACK WIN 4 197c 1 0 0 0 c 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ =  $24 $T0 88 - ^ = 
+STACK WIN 4 22f8 1c 0 0 0 c 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ =  $24 $T0 88 - ^ = 
+STACK WIN 4 23e2 f 0 0 0 c 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ =  $24 $T0 88 - ^ = 
+STACK WIN 4 244c 14 0 0 0 c 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ =  $24 $T0 88 - ^ = 
+STACK WIN 4 24b8 8 0 0 0 c 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ =  $24 $T0 88 - ^ = 
+STACK WIN 4 24e8 1c 0 0 0 c 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ =  $24 $T0 88 - ^ = 
+STACK WIN 4 26e0 1c 0 0 0 c 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ =  $24 $T0 88 - ^ = 
+STACK WIN 4 2ad0 10 0 0 0 c 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ =  $24 $T0 88 - ^ = 
+STACK WIN 4 2b6c f 0 0 0 c 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ =  $24 $T0 88 - ^ = 
+STACK WIN 4 2bf0 5 0 0 0 c 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ =  $24 $T0 88 - ^ = 
+STACK WIN 4 2d54 a 0 0 0 c 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ =  $24 $T0 88 - ^ = 
+STACK WIN 4 2db0 16 0 0 0 c 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ =  $24 $T0 88 - ^ = 
+STACK WIN 4 31a8 4 0 0 0 c 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ =  $24 $T0 88 - ^ = 
+STACK WIN 4 31e0 16 0 0 0 c 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ =  $24 $T0 88 - ^ = 
+STACK WIN 4 3260 f 0 0 0 c 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ =  $24 $T0 88 - ^ = 
+STACK WIN 4 334c 14 0 0 0 c 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ =  $24 $T0 88 - ^ = 
+STACK WIN 4 33ac 12 0 0 0 c 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ =  $24 $T0 88 - ^ = 
+STACK WIN 4 3cb0 3 0 0 0 c 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ =  $24 $T0 88 - ^ = 
+STACK WIN 4 3d28 6 0 0 0 c 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ =  $24 $T0 88 - ^ = 
+STACK WIN 4 3e24 2 0 0 0 c 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ =  $24 $T0 88 - ^ = 
+STACK WIN 4 3e34 20 0 0 0 c 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ =  $24 $T0 88 - ^ = 
+STACK WIN 4 42a4 f 0 0 0 c 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ =  $24 $T0 88 - ^ = 
+STACK WIN 4 4380 f 0 0 0 c 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ =  $24 $T0 88 - ^ = 
+STACK WIN 4 4434 12 0 0 0 c 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ =  $24 $T0 88 - ^ = 
+STACK WIN 4 4618 6 0 0 0 c 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ =  $24 $T0 88 - ^ = 
+STACK WIN 4 47ec 14 0 0 0 c 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ =  $24 $T0 88 - ^ = 
+STACK WIN 4 4920 a 0 0 0 c 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ =  $24 $T0 88 - ^ = 
+STACK WIN 4 5d6c 8 0 0 0 c 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ =  $24 $T0 88 - ^ = 
+STACK WIN 4 617c 18 0 0 0 c 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ =  $24 $T0 88 - ^ = 
+STACK WIN 4 6248 a 0 0 0 c 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ =  $24 $T0 88 - ^ = 
+STACK WIN 4 636c e 0 0 0 c 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ =  $24 $T0 88 - ^ = 
+STACK WIN 4 63f0 14 0 0 0 c 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ =  $24 $T0 88 - ^ = 
+STACK WIN 4 6a74 a 0 0 0 c 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ =  $24 $T0 88 - ^ = 
+STACK WIN 4 6ba0 3f 0 0 0 c 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ =  $24 $T0 88 - ^ = 
+STACK WIN 4 6c4c 14 0 0 0 c 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ =  $24 $T0 88 - ^ = 
+STACK WIN 4 5754 e e 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 12ac 3 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 2d94 10 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 447c 10 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 5762 10 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 6958 2 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 5757 b b 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 12ac 2 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2d94 10 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 447c 10 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 5762 10 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 6958 2 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 12ac 1 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 2d94 10 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 447c 10 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 5762 10 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 6958 2 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 57e0 e e 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 2480 3 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 3cf8 10 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 3e2c 2 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 57ee 10 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 5c60 10 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 57e3 b b 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2480 2 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 3cf8 10 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 3e2c 2 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 57ee 10 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 5c60 10 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2480 1 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 3cf8 10 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 3e2c 2 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 57ee 10 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 5c60 10 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 1474 9 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 2bb0 9 0 0 4 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 3240 3 3 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 3243 1c 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 338c 1b 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 6444 4 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 3243 1c 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 338c 1b 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 6444 3 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2068 16 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 2b9c 14 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 48c8 14 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 5b84 5 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 5e0c e 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 10ca b4 c 0 8 10 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ =  $24 $T0 36 - ^ = 
+STACK WIN 4 1166 e 0 0 8 10 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 1175 8 0 0 8 10 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 2954 4 4 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 2958 24 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 4520 1c 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 45cc 1e 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 48ec 23 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 4b28 c 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 616c 9 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 2957 1 1 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2958 24 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 4520 1c 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 45cc 1e 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 48ec 23 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 4b28 b 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 616c 9 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2958 24 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 4520 1c 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 45cc 1e 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 48ec 23 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 4b28 8 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 616c 9 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 4314 3 3 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 12c0 7 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 4317 15 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 44f4 4 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 4f9c 1 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 12c0 7 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 4317 15 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 44f4 3 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 4f9c 1 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 1330 12f c 0 4 10 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ =  $24 $T0 36 - ^ = 
+STACK WIN 4 1447 b 0 0 4 10 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 1453 b 0 0 4 10 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 6458 3 3 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 1608 54 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 2228 5 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 3768 13 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 3880 2 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 3ba8 3 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 3cb8 1e 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 3d90 28 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 45ec 9 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 47a4 19 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 4c18 1f 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 547c 52 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 54f8 16 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 58b0 24 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 597c 33 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 5c28 e 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 645b 1b 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 1608 54 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 2228 5 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 3768 13 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 3880 2 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 3ba8 2 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 3cb8 1e 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 3d90 28 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 45ec 9 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 47a4 19 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 4c18 1f 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 547c 52 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 54f8 16 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 58b0 24 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 597c 33 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 5c28 e 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 645b 1b 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 1609 53 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $24 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 2228 5 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $24 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 3768 13 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $24 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 3880 2 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $24 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 3ba8 1 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $24 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 3cb8 1e 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $24 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 3d90 28 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $24 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 47a4 19 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $24 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 4c18 1f 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $24 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 547c 52 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $24 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 54f8 16 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $24 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 58b0 24 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $24 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 597c 33 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $24 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 5c28 e 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $24 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 472c 1e 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 3b48 17 17 0 10 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 10b0 1a 0 0 10 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1180 c 0 0 10 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1528 17 0 0 10 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1734 10 0 0 10 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1768 2c 0 0 10 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 210c 10 0 0 10 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 267c 13 0 0 10 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2bd0 20 0 0 10 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3270 a 0 0 10 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3754 13 0 0 10 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3b5f 1f 0 0 10 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3d54 3 0 0 10 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3f88 c 0 0 10 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 42b4 d 0 0 10 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4f40 10 0 0 10 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5a60 1c 0 0 10 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5a84 22 0 0 10 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5d88 d 0 0 10 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5e70 f 0 0 10 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5f50 12 0 0 10 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5fcc 12 0 0 10 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 61bc 1d 0 0 10 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6670 3 0 0 10 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6a80 14 0 0 10 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6b0c 20 0 0 10 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6cd8 10 0 0 10 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3b51 e e 0 10 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ = 
+STACK WIN 4 1180 c 0 0 10 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ = 
+STACK WIN 4 1734 10 0 0 10 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ = 
+STACK WIN 4 1768 2c 0 0 10 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ = 
+STACK WIN 4 210c 10 0 0 10 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ = 
+STACK WIN 4 2bd0 20 0 0 10 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ = 
+STACK WIN 4 3270 6 0 0 10 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ = 
+STACK WIN 4 3b5f 1f 0 0 10 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ = 
+STACK WIN 4 3d54 3 0 0 10 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ = 
+STACK WIN 4 42b4 d 0 0 10 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ = 
+STACK WIN 4 4f40 10 0 0 10 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ = 
+STACK WIN 4 5a84 22 0 0 10 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ = 
+STACK WIN 4 6670 3 0 0 10 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ = 
+STACK WIN 4 6b0c 20 0 0 10 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ = 
+STACK WIN 4 6cd8 10 0 0 10 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ = 
+STACK WIN 4 3b55 a a 0 10 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ = 
+STACK WIN 4 1180 c 0 0 10 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ = 
+STACK WIN 4 1734 10 0 0 10 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ = 
+STACK WIN 4 1768 2c 0 0 10 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ = 
+STACK WIN 4 210c 10 0 0 10 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ = 
+STACK WIN 4 2bd0 20 0 0 10 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ = 
+STACK WIN 4 3270 5 0 0 10 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ = 
+STACK WIN 4 3b5f 1f 0 0 10 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ = 
+STACK WIN 4 3d54 3 0 0 10 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ = 
+STACK WIN 4 42b4 d 0 0 10 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ = 
+STACK WIN 4 4f40 10 0 0 10 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ = 
+STACK WIN 4 5a84 22 0 0 10 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ = 
+STACK WIN 4 6670 3 0 0 10 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ = 
+STACK WIN 4 6b0c 20 0 0 10 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ = 
+STACK WIN 4 6cd8 10 0 0 10 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ = 
+STACK WIN 4 1180 c 0 0 10 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ =  $24 $T0 36 - ^ = 
+STACK WIN 4 1734 10 0 0 10 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ =  $24 $T0 36 - ^ = 
+STACK WIN 4 1768 2c 0 0 10 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ =  $24 $T0 36 - ^ = 
+STACK WIN 4 210c 10 0 0 10 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ =  $24 $T0 36 - ^ = 
+STACK WIN 4 2bd0 20 0 0 10 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ =  $24 $T0 36 - ^ = 
+STACK WIN 4 3270 4 0 0 10 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ =  $24 $T0 36 - ^ = 
+STACK WIN 4 3b5f 1f 0 0 10 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ =  $24 $T0 36 - ^ = 
+STACK WIN 4 3d54 3 0 0 10 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ =  $24 $T0 36 - ^ = 
+STACK WIN 4 42b4 d 0 0 10 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ =  $24 $T0 36 - ^ = 
+STACK WIN 4 4f40 10 0 0 10 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ =  $24 $T0 36 - ^ = 
+STACK WIN 4 5a84 22 0 0 10 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ =  $24 $T0 36 - ^ = 
+STACK WIN 4 6670 3 0 0 10 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ =  $24 $T0 36 - ^ = 
+STACK WIN 4 6b0c 20 0 0 10 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ =  $24 $T0 36 - ^ = 
+STACK WIN 4 6cd8 10 0 0 10 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ =  $24 $T0 36 - ^ = 
+STACK WIN 4 2244 17 17 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 225b 18 0 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2740 48 0 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 33e4 d 0 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3fd8 b 0 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4390 f 0 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4d68 c 0 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5588 e 0 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 61a4 4 0 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6610 c 0 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 225a 1 1 0 0 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ = 
+STACK WIN 4 225b 18 0 0 0 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ = 
+STACK WIN 4 2740 48 0 0 0 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ = 
+STACK WIN 4 33e4 d 0 0 0 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ = 
+STACK WIN 4 3fd8 b 0 0 0 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ = 
+STACK WIN 4 4390 f 0 0 0 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ = 
+STACK WIN 4 4d68 c 0 0 0 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ = 
+STACK WIN 4 5588 e 0 0 0 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ = 
+STACK WIN 4 61a4 2 0 0 0 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ = 
+STACK WIN 4 6610 c 0 0 0 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ = 
+STACK WIN 4 225b 18 0 0 0 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $24 $T0 24 - ^ = 
+STACK WIN 4 2740 48 0 0 0 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $24 $T0 24 - ^ = 
+STACK WIN 4 33e4 d 0 0 0 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $24 $T0 24 - ^ = 
+STACK WIN 4 3fd8 b 0 0 0 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $24 $T0 24 - ^ = 
+STACK WIN 4 4390 f 0 0 0 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $24 $T0 24 - ^ = 
+STACK WIN 4 4d68 c 0 0 0 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $24 $T0 24 - ^ = 
+STACK WIN 4 5588 e 0 0 0 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $24 $T0 24 - ^ = 
+STACK WIN 4 61a4 1 0 0 0 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $24 $T0 24 - ^ = 
+STACK WIN 4 6610 c 0 0 0 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $24 $T0 24 - ^ = 
+STACK WIN 4 2741 47 0 0 0 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $24 $T0 24 - ^ =  $23 $T0 28 - ^ = 
+STACK WIN 4 33e4 d 0 0 0 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $24 $T0 24 - ^ =  $23 $T0 28 - ^ = 
+STACK WIN 4 3fd8 b 0 0 0 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $24 $T0 24 - ^ =  $23 $T0 28 - ^ = 
+STACK WIN 4 4390 f 0 0 0 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $24 $T0 24 - ^ =  $23 $T0 28 - ^ = 
+STACK WIN 4 6610 c 0 0 0 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $24 $T0 24 - ^ =  $23 $T0 28 - ^ = 
+STACK WIN 4 4570 f 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3a1f 129 1a 0 c 8 328 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 812 - ^ =  $24 $T0 816 - ^ = 
+STACK WIN 4 5c38 25 3 0 14 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 5c3b 21 0 0 14 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 6922 2d 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6f50 10 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 2130 4 4 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 2134 7 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 2dec 14 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 4358 3 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 453c 10 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 479c 3 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 4b48 10 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 55a8 27 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 2133 1 1 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2134 7 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2dec 14 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 4358 2 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 479c 3 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 4b48 10 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 55a8 27 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2134 7 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 2dec 14 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 4358 1 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 479c 3 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 4b48 10 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 55a8 27 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 2298 a a 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 20ec 14 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 22a2 6 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 31d4 6 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 3744 10 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 4350 3 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 46e4 14 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 4a54 10 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 5554 10 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 5ec4 3 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 63c0 d 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 6b90 10 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 229b 7 7 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 20ec 14 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 22a2 6 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 31d4 6 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 3744 10 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 4350 3 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 46e4 14 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 4a54 10 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 5554 10 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 5ec4 2 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 63c0 d 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 6b90 10 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 20ec 14 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 22a2 6 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 31d4 6 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 3744 10 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 4350 3 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 46e4 14 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 4a54 10 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 5554 10 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 5ec4 1 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 63c0 d 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 6b90 10 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 20ec 14 0 0 0 c 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 31d4 6 0 0 0 c 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 5554 10 0 0 0 c 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 63c0 d 0 0 0 c 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 6b90 10 0 0 0 c 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 4218 17 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3ff7 c2 c 0 4 10 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 32 - ^ =  $23 $T0 36 - ^ =  $24 $T0 40 - ^ = 
+STACK WIN 4 40b0 8 0 0 4 10 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 44a0 9 9 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 118c b 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1af0 14 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3718 7 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 44a9 16 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5bb4 1 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 118c 9 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 1af0 14 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 3718 7 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 44a9 16 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 5bb4 1 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2580 a a 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 14ac 10 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1990 c 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1da4 c 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 258a e 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2e00 4 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4674 10 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 470c 4 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4794 2 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4d40 e 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 59b8 14 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6158 14 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6a94 7 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6c8c a 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2589 1 1 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 14ac 10 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 1990 c 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 1da4 c 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 258a e 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2e00 4 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 4674 10 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 470c 2 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 4794 2 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 4d40 e 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 59b8 14 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 6158 14 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 6a94 7 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 6c8c a 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 14ac 10 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 1990 c 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 1da4 c 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 258a e 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 2e00 4 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 4674 10 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 470c 1 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 4794 2 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 4d40 e 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 59b8 14 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 6158 14 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 6a94 7 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 6c8c a 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 5b20 6 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 14a0 7 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 22f4 3 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2838 e 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 28e4 7 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2da4 a 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 34d0 8 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3d5c 16 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4580 13 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4a4c 3 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4cf8 14 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4eb8 1f 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5a48 6 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5b26 12 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5b8c 14 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5df8 14 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 60ec 2 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 65a0 2 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 14a0 7 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 22f4 1 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 2838 e 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 28e4 7 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 2da4 a 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 34d0 8 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 3d5c 16 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 4580 13 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 4a4c 3 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 4cf8 14 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 4eb8 1f 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 5a48 6 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 5b26 12 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 5b8c 14 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 5df8 14 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 60ec 2 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 65a0 2 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 14a0 7 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 2838 e 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 28e4 7 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 2da4 4 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 34d0 8 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 3d5c 16 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 4580 13 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 4a4c 3 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 4cf8 14 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 4eb8 1f 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 5a48 6 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 5df8 14 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 60ed 1 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 65a0 2 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 14a0 7 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 2838 e 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 28e4 7 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 2da4 3 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 34d0 8 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 3d5c 16 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 4580 13 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 4a4c 3 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 4cf8 14 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 4eb8 1f 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 5a48 6 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 5df8 14 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 65a0 2 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 5f78 5 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1480 5 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 23bc 13 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3510 12 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5ec8 10 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5f7d 5 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6ab4 1f 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5774 6 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 5d4c 13 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 6c60 4 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 4638 39 c 0 0 10 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ =  $24 $T0 36 - ^ = 
+STACK WIN 4 4658 4 0 0 0 10 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 4834 11 0 0 4 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 15b8 1e 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 63ac 5 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 15d8 18 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3538 f 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 42c8 14 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 45c8 2 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4e1c f 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 55f0 2 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 63b1 a 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 15d8 18 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 42c8 7 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 4e1c f 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 3708 d 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 17d8 1a3 c 0 4 10 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 52 - ^ =  $23 $T0 56 - ^ =  $24 $T0 60 - ^ = 
+STACK WIN 4 1939 14 0 0 4 10 30 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 502c f 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2848 f 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6fd0 f 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5708 5 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1660 14 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 570d 1a 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 60b0 4 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6c18 5 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 43e8 f f 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2274 12 0 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2484 10 0 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2640 2 0 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2b88 10 0 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 32ac 13 0 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4124 15 0 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 43f7 24 0 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 45f8 18 0 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4a2c 20 0 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4b68 2 0 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4bb8 18 0 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4d84 5 0 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6a0c 1a 0 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 43ef 8 8 0 4 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 2274 12 0 0 4 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 2484 10 0 0 4 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 2640 2 0 0 4 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 2b88 10 0 0 4 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 32ac 13 0 0 4 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 4124 15 0 0 4 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 43f7 24 0 0 4 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 45f8 18 0 0 4 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 4a2c 20 0 0 4 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 4b68 2 0 0 4 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 4bb8 18 0 0 4 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 4d84 3 0 0 4 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 6a0c 1a 0 0 4 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 43f0 7 7 0 4 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 2274 12 0 0 4 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 2484 10 0 0 4 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 2640 2 0 0 4 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 2b88 10 0 0 4 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 32ac 13 0 0 4 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 4124 15 0 0 4 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 43f7 24 0 0 4 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 45f8 18 0 0 4 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 4a2c 20 0 0 4 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 4b68 2 0 0 4 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 4bb8 18 0 0 4 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 4d84 2 0 0 4 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 6a0c 1a 0 0 4 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 2274 12 0 0 4 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ =  $24 $T0 16 - ^ = 
+STACK WIN 4 2484 10 0 0 4 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ =  $24 $T0 16 - ^ = 
+STACK WIN 4 2640 2 0 0 4 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ =  $24 $T0 16 - ^ = 
+STACK WIN 4 2b88 10 0 0 4 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ =  $24 $T0 16 - ^ = 
+STACK WIN 4 32ac 13 0 0 4 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ =  $24 $T0 16 - ^ = 
+STACK WIN 4 4124 15 0 0 4 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ =  $24 $T0 16 - ^ = 
+STACK WIN 4 43f7 24 0 0 4 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ =  $24 $T0 16 - ^ = 
+STACK WIN 4 45f8 18 0 0 4 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ =  $24 $T0 16 - ^ = 
+STACK WIN 4 4a2c 20 0 0 4 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ =  $24 $T0 16 - ^ = 
+STACK WIN 4 4b68 2 0 0 4 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ =  $24 $T0 16 - ^ = 
+STACK WIN 4 4bb8 18 0 0 4 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ =  $24 $T0 16 - ^ = 
+STACK WIN 4 4d84 1 0 0 4 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ =  $24 $T0 16 - ^ = 
+STACK WIN 4 6a0c 1a 0 0 4 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ =  $24 $T0 16 - ^ = 
+STACK WIN 4 14bc 3 3 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 14bf 2c 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 2658 7 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 318c 5 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 14bf 2c 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2658 6 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 318c 5 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 157b 3c c 0 4 10 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 32 - ^ =  $23 $T0 36 - ^ =  $24 $T0 40 - ^ = 
+STACK WIN 4 15b1 5 0 0 4 10 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 56a4 17 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6ebc 4 4 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 6154 3 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 6b70 20 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 6ec0 2 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 6ebf 1 1 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 6154 2 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 6b70 20 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 6ec0 2 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 6154 1 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 6b70 20 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 6ec0 2 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 4e40 5 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4af8 17 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4e45 17 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5608 4 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 585c 12 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6fa4 1a 1a 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1234 5 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1b2c 2 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4948 13 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4e08 12 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5d9c 10 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6d60 3 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6fbe 12 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6fb6 8 8 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 1234 3 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 1b2c 2 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 4948 13 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 4e08 12 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 5d9c 10 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 6d60 3 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 6fbe 12 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 6fb7 7 7 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 1234 2 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 1b2c 2 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 4948 13 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 4e08 12 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 5d9c 10 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 6d60 3 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 6fbe 12 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 1234 1 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 1b2c 2 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 4948 13 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 4e08 12 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 5d9c 10 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 6d60 3 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 6fbe 12 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 6fee bc 35 0 4 10 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ =  $24 $T0 36 - ^ = 
+STACK WIN 4 7079 13 0 0 4 10 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 2148 1e 1e 0 c 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1064 4c 0 0 c 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 123c 1b 0 0 c 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1460 14 0 0 c 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 19c4 12 0 0 c 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2166 22 0 0 c 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2b00 14 0 0 c 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 31b4 e 0 0 c 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3290 1a 0 0 c 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 36e8 8 0 0 c 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3794 1c 0 0 c 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 474c 1c 0 0 c 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 496c 10 0 0 c 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4ca0 10 0 0 c 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4d18 1c 0 0 c 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5640 2 0 0 c 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 56e4 16 0 0 c 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5cf4 10 0 0 c 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5e50 10 0 0 c 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5ee8 13 0 0 c 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5f18 c 0 0 c 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6f6c f 0 0 c 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6f7c 14 0 0 c 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 70d4 10 0 0 c 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 215e 8 8 0 c 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ = 
+STACK WIN 4 1064 4c 0 0 c 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ = 
+STACK WIN 4 123c 1b 0 0 c 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ = 
+STACK WIN 4 1460 14 0 0 c 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ = 
+STACK WIN 4 19c4 12 0 0 c 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ = 
+STACK WIN 4 2166 22 0 0 c 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ = 
+STACK WIN 4 2b00 14 0 0 c 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ = 
+STACK WIN 4 31b4 e 0 0 c 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ = 
+STACK WIN 4 3290 1a 0 0 c 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ = 
+STACK WIN 4 36e8 8 0 0 c 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ = 
+STACK WIN 4 3794 1c 0 0 c 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ = 
+STACK WIN 4 474c 1c 0 0 c 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ = 
+STACK WIN 4 496c 10 0 0 c 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ = 
+STACK WIN 4 4ca0 10 0 0 c 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ = 
+STACK WIN 4 4d18 1c 0 0 c 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ = 
+STACK WIN 4 5640 2 0 0 c 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ = 
+STACK WIN 4 56e4 16 0 0 c 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ = 
+STACK WIN 4 5cf4 10 0 0 c 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ = 
+STACK WIN 4 5e50 10 0 0 c 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ = 
+STACK WIN 4 5ee8 13 0 0 c 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ = 
+STACK WIN 4 5f18 c 0 0 c 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ = 
+STACK WIN 4 6f6c 8 0 0 c 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ = 
+STACK WIN 4 6f7c 14 0 0 c 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ = 
+STACK WIN 4 70d4 10 0 0 c 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ = 
+STACK WIN 4 2165 1 1 0 c 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ = 
+STACK WIN 4 1064 4c 0 0 c 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ = 
+STACK WIN 4 123c 1b 0 0 c 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ = 
+STACK WIN 4 1460 14 0 0 c 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ = 
+STACK WIN 4 19c4 12 0 0 c 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ = 
+STACK WIN 4 2166 22 0 0 c 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ = 
+STACK WIN 4 2b00 14 0 0 c 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ = 
+STACK WIN 4 31b4 e 0 0 c 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ = 
+STACK WIN 4 3290 1a 0 0 c 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ = 
+STACK WIN 4 36e8 8 0 0 c 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ = 
+STACK WIN 4 3794 1c 0 0 c 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ = 
+STACK WIN 4 474c 1c 0 0 c 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ = 
+STACK WIN 4 496c 10 0 0 c 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ = 
+STACK WIN 4 4ca0 10 0 0 c 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ = 
+STACK WIN 4 4d18 1c 0 0 c 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ = 
+STACK WIN 4 5640 2 0 0 c 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ = 
+STACK WIN 4 56e4 16 0 0 c 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ = 
+STACK WIN 4 5cf4 10 0 0 c 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ = 
+STACK WIN 4 5e50 10 0 0 c 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ = 
+STACK WIN 4 5ee8 13 0 0 c 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ = 
+STACK WIN 4 5f18 c 0 0 c 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ = 
+STACK WIN 4 6f6c 5 0 0 c 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ = 
+STACK WIN 4 6f7c 14 0 0 c 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ = 
+STACK WIN 4 70d4 10 0 0 c 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ = 
+STACK WIN 4 1064 4c 0 0 c c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ =  $24 $T0 48 - ^ = 
+STACK WIN 4 123c 1b 0 0 c c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ =  $24 $T0 48 - ^ = 
+STACK WIN 4 1460 14 0 0 c c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ =  $24 $T0 48 - ^ = 
+STACK WIN 4 19c4 12 0 0 c c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ =  $24 $T0 48 - ^ = 
+STACK WIN 4 2166 22 0 0 c c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ =  $24 $T0 48 - ^ = 
+STACK WIN 4 2b00 14 0 0 c c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ =  $24 $T0 48 - ^ = 
+STACK WIN 4 31b4 e 0 0 c c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ =  $24 $T0 48 - ^ = 
+STACK WIN 4 3290 1a 0 0 c c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ =  $24 $T0 48 - ^ = 
+STACK WIN 4 36e8 8 0 0 c c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ =  $24 $T0 48 - ^ = 
+STACK WIN 4 3794 1c 0 0 c c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ =  $24 $T0 48 - ^ = 
+STACK WIN 4 474c 1c 0 0 c c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ =  $24 $T0 48 - ^ = 
+STACK WIN 4 496c 10 0 0 c c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ =  $24 $T0 48 - ^ = 
+STACK WIN 4 4ca0 10 0 0 c c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ =  $24 $T0 48 - ^ = 
+STACK WIN 4 4d18 1c 0 0 c c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ =  $24 $T0 48 - ^ = 
+STACK WIN 4 5640 2 0 0 c c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ =  $24 $T0 48 - ^ = 
+STACK WIN 4 56e4 16 0 0 c c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ =  $24 $T0 48 - ^ = 
+STACK WIN 4 5cf4 10 0 0 c c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ =  $24 $T0 48 - ^ = 
+STACK WIN 4 5e50 10 0 0 c c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ =  $24 $T0 48 - ^ = 
+STACK WIN 4 5ee8 13 0 0 c c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ =  $24 $T0 48 - ^ = 
+STACK WIN 4 5f18 c 0 0 c c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ =  $24 $T0 48 - ^ = 
+STACK WIN 4 6f6c 4 0 0 c c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ =  $24 $T0 48 - ^ = 
+STACK WIN 4 6f7c 14 0 0 c c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ =  $24 $T0 48 - ^ = 
+STACK WIN 4 70d4 10 0 0 c c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ =  $24 $T0 48 - ^ = 
+STACK WIN 4 3d78 a a 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 21d0 14 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 28c0 10 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3784 a 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3d82 e 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4880 18 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 48bc b 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4b7c 10 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4f58 4 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5448 e 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 55d8 12 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5f9c 2 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5fb4 7 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6054 c 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6194 10 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6d50 10 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3d7e 4 4 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 3784 a 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 3d82 e 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 4f58 2 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 5fb4 7 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 6194 10 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 3784 a 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 3d82 e 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 4f58 1 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 5fb4 7 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 6194 10 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 49dc e e 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 103c c 0 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 11d8 10 0 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 12fc b 0 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1ae0 e 0 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1b4c f 0 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1e0c 5 0 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 21e4 10 0 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 228c 4 0 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 22b0 c 0 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3720 e 0 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 37c0 b 0 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 43d4 14 0 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 46c8 10 0 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4828 c 0 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 495c a 0 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 49ea 26 0 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4c38 2 0 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4c84 5 0 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5a38 5 0 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5dc8 c 0 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 61e0 e 0 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6288 4 0 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 63e0 d 0 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6a28 10 0 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6af4 18 0 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6c3c e 0 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 70c4 10 0 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 49e5 5 5 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 1b4c f 0 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 49ea e 0 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 4c38 2 0 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 5a38 3 0 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 6c3c e 0 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 49e9 1 1 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 11d8 10 0 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 1b4c f 0 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 495c 8 0 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 49ea e 0 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 4c38 2 0 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 5a38 5 0 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 61e0 e 0 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 6c3c e 0 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 1b4c f 0 0 10 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 49ea e 0 0 10 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 4c38 2 0 0 10 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 5a38 1 0 0 10 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 6c3c e 0 0 10 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 20dc 5 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 20d4 8 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 20e1 3 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5520 10 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 15f0 a a 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 15fa e 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 17cc c 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 23a0 10 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2494 a 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2858 18 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3208 10 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3ca8 8 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4bd0 10 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5530 7 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5880 4 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5f08 4 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5f24 14 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 15f6 4 4 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 15fa e 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 23a0 10 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2494 a 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 5530 7 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 5880 2 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 15fa e 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 23a0 10 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 2494 a 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 5530 7 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 5880 1 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 1b7c 5 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1268 d 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1b81 11 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1e04 7 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 31c4 f 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 49cc f 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5eac 15 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1275 f 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 69d4 7 7 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1488 6 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1b04 12 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1d3c 3 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5fe0 1f 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 69db 2 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6c64 18 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6f40 10 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 69da 1 1 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 1488 4 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 1b04 12 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 1d3c 3 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 5fe0 1f 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 69db 2 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 6c64 18 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 6f40 10 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 1488 3 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 1b04 12 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 1d3c 3 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 5fe0 1f 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 69db 2 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 6c64 18 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 6f40 10 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 5598 7 7 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3cd8 10 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 541c 12 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 553c 6 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 559f 2 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6950 3 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6ec8 1f 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6ef0 20 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 559e 1 1 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 3cd8 10 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 541c 12 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 553c 4 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 559f 2 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 6950 3 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 6ec8 1f 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 6ef0 20 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 3cd8 10 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 541c 12 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 553c 3 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 559f 2 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 6950 3 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 6ec8 1f 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 6ef0 20 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 6f20 7 7 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2674 3 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2b5c 10 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 38b8 6 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 435c f 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 633c 1c 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6580 1f 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 65b0 12 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6f27 2 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6f26 1 1 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2674 3 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2b5c 10 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 38b8 4 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 435c f 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 633c 1c 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 6580 1f 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 65b0 12 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 6f27 2 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2674 3 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 2b5c 10 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 38b8 3 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 435c f 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 633c 1c 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 6580 1f 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 65b0 12 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 6f27 2 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 28b4 c 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 3d08 6 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 5510 6 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 5600 6 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 5f14 3 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 6294 f 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 68f4 10 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 69cc 6 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 6fe0 e 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 5900 6 6 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 2208 f 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 387c 3 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 48ac f 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 5906 3e 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 6be0 b 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 5903 3 3 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2208 f 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 387c 2 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 48ac f 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 5906 3e 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 6be0 b 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 5904 2 2 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 2208 f 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 387c 1 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 48ac f 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 5906 3e 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 6be0 b 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 2c0c 17 17 0 0 0 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 12dc 18 0 0 0 0 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1794 f 0 0 0 0 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1b6c 7 0 0 0 0 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2548 e 0 0 0 0 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2c23 22 0 0 0 0 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3238 8 0 0 0 0 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3e54 2 0 0 0 0 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3ee0 16 0 0 0 0 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 445c 20 0 0 0 0 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4800 f 0 0 0 0 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4910 8 0 0 0 0 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4a8c 12 0 0 0 0 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4d8c e 0 0 0 0 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 566c f 0 0 0 0 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 56fc c 0 0 0 0 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 59e4 14 0 0 0 0 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5aa8 6 0 0 0 0 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5b08 17 0 0 0 0 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5b60 14 0 0 0 0 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5db4 12 0 0 0 0 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6060 c 0 0 0 0 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 60b4 6 0 0 0 0 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6218 f 0 0 0 0 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 62b8 6a 0 0 0 0 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 697c 3 0 0 0 0 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6b44 1b 0 0 0 0 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2c22 1 1 0 0 4 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ = 
+STACK WIN 4 12dc 18 0 0 0 4 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ = 
+STACK WIN 4 1794 f 0 0 0 4 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ = 
+STACK WIN 4 1b6c 7 0 0 0 4 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ = 
+STACK WIN 4 2548 e 0 0 0 4 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ = 
+STACK WIN 4 2c23 22 0 0 0 4 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ = 
+STACK WIN 4 3238 8 0 0 0 4 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ = 
+STACK WIN 4 3e54 2 0 0 0 4 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ = 
+STACK WIN 4 3ee0 16 0 0 0 4 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ = 
+STACK WIN 4 445c 20 0 0 0 4 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ = 
+STACK WIN 4 4800 f 0 0 0 4 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ = 
+STACK WIN 4 4910 8 0 0 0 4 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ = 
+STACK WIN 4 4a8c 12 0 0 0 4 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ = 
+STACK WIN 4 4d8c 7 0 0 0 4 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ = 
+STACK WIN 4 566c f 0 0 0 4 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ = 
+STACK WIN 4 56fc c 0 0 0 4 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ = 
+STACK WIN 4 59e4 14 0 0 0 4 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ = 
+STACK WIN 4 5aa8 6 0 0 0 4 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ = 
+STACK WIN 4 5b08 17 0 0 0 4 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ = 
+STACK WIN 4 5b60 14 0 0 0 4 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ = 
+STACK WIN 4 5db4 12 0 0 0 4 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ = 
+STACK WIN 4 6060 c 0 0 0 4 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ = 
+STACK WIN 4 60b4 6 0 0 0 4 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ = 
+STACK WIN 4 6218 f 0 0 0 4 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ = 
+STACK WIN 4 62b8 6a 0 0 0 4 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ = 
+STACK WIN 4 697c 3 0 0 0 4 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ = 
+STACK WIN 4 6b44 1b 0 0 0 4 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ = 
+STACK WIN 4 12dc 18 0 0 0 8 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ =  $24 $T0 1316 - ^ = 
+STACK WIN 4 1794 f 0 0 0 8 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ =  $24 $T0 1316 - ^ = 
+STACK WIN 4 1b6c 7 0 0 0 8 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ =  $24 $T0 1316 - ^ = 
+STACK WIN 4 2548 e 0 0 0 8 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ =  $24 $T0 1316 - ^ = 
+STACK WIN 4 2c23 22 0 0 0 8 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ =  $24 $T0 1316 - ^ = 
+STACK WIN 4 3238 8 0 0 0 8 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ =  $24 $T0 1316 - ^ = 
+STACK WIN 4 3e54 2 0 0 0 8 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ =  $24 $T0 1316 - ^ = 
+STACK WIN 4 3ee0 16 0 0 0 8 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ =  $24 $T0 1316 - ^ = 
+STACK WIN 4 445c 20 0 0 0 8 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ =  $24 $T0 1316 - ^ = 
+STACK WIN 4 4800 f 0 0 0 8 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ =  $24 $T0 1316 - ^ = 
+STACK WIN 4 4910 8 0 0 0 8 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ =  $24 $T0 1316 - ^ = 
+STACK WIN 4 4a8c 12 0 0 0 8 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ =  $24 $T0 1316 - ^ = 
+STACK WIN 4 4d8c 4 0 0 0 8 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ =  $24 $T0 1316 - ^ = 
+STACK WIN 4 566c f 0 0 0 8 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ =  $24 $T0 1316 - ^ = 
+STACK WIN 4 56fc c 0 0 0 8 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ =  $24 $T0 1316 - ^ = 
+STACK WIN 4 59e4 14 0 0 0 8 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ =  $24 $T0 1316 - ^ = 
+STACK WIN 4 5aa8 6 0 0 0 8 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ =  $24 $T0 1316 - ^ = 
+STACK WIN 4 5b08 17 0 0 0 8 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ =  $24 $T0 1316 - ^ = 
+STACK WIN 4 5b60 14 0 0 0 8 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ =  $24 $T0 1316 - ^ = 
+STACK WIN 4 5db4 12 0 0 0 8 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ =  $24 $T0 1316 - ^ = 
+STACK WIN 4 6060 c 0 0 0 8 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ =  $24 $T0 1316 - ^ = 
+STACK WIN 4 60b4 6 0 0 0 8 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ =  $24 $T0 1316 - ^ = 
+STACK WIN 4 6218 f 0 0 0 8 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ =  $24 $T0 1316 - ^ = 
+STACK WIN 4 62b8 6a 0 0 0 8 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ =  $24 $T0 1316 - ^ = 
+STACK WIN 4 697c 3 0 0 0 8 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ =  $24 $T0 1316 - ^ = 
+STACK WIN 4 6b44 1b 0 0 0 8 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ =  $24 $T0 1316 - ^ = 
+STACK WIN 4 2c45 a4 c 0 0 10 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 32 - ^ =  $23 $T0 36 - ^ =  $24 $T0 40 - ^ = 
+STACK WIN 4 2cdd b 0 0 0 10 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 6cbc b b 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 12b0 8 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2084 18 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2314 7 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2504 27 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2904 7 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3558 14 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4d74 e 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 560c 13 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5d04 14 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5f68 a 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6cc7 11 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6cc5 2 2 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 12b0 8 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2084 18 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2314 7 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2504 27 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2904 3 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 3558 14 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 4d74 e 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 560c 13 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 5d04 14 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 5f68 a 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 6cc7 11 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 3b80 9 9 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 19fc e 0 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2690 7 0 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2b98 3 0 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3b89 1f 0 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3e18 c 0 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4710 f 0 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4868 10 0 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 56bc 16 0 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5e20 16 0 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6020 1f 0 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6f64 2 0 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 19fc e 0 0 0 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ = 
+STACK WIN 4 2690 7 0 0 0 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ = 
+STACK WIN 4 2b98 1 0 0 0 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ = 
+STACK WIN 4 3b89 1f 0 0 0 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ = 
+STACK WIN 4 3e18 c 0 0 0 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ = 
+STACK WIN 4 4710 f 0 0 0 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ = 
+STACK WIN 4 4868 10 0 0 0 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ = 
+STACK WIN 4 56bc 16 0 0 0 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ = 
+STACK WIN 4 5e20 16 0 0 0 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ = 
+STACK WIN 4 6020 1f 0 0 0 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ = 
+STACK WIN 4 6f64 2 0 0 0 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ = 
+STACK WIN 4 64a8 1b 1b 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1208 29 0 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 16ac 20 0 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1bc0 3 0 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2188 11 0 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 23b0 6 0 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2894 11 0 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2b28 7 0 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 330c c 0 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 40bc e 0 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 454c f 0 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4720 6 0 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4768 f 0 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4b58 10 0 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4c40 c 0 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5404 12 0 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5728 2a 0 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5800 e 0 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5ab0 17 0 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5adc 11 0 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5ba8 c 0 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5bcc 14 0 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5fa4 8 0 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6010 f 0 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6074 1c 0 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 609c 14 0 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 60c0 2a 0 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 60f4 17 0 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6358 14 0 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 638c 11 0 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 63d4 5 0 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 64c3 19 0 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 64f0 3 0 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 65c4 18 0 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6974 7 0 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6a64 f 0 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 64bb 8 8 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ = 
+STACK WIN 4 1208 29 0 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ = 
+STACK WIN 4 16ac 20 0 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ = 
+STACK WIN 4 1bc0 3 0 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ = 
+STACK WIN 4 2188 11 0 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ = 
+STACK WIN 4 23b0 6 0 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ = 
+STACK WIN 4 2894 11 0 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ = 
+STACK WIN 4 2b28 7 0 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ = 
+STACK WIN 4 330c c 0 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ = 
+STACK WIN 4 40bc e 0 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ = 
+STACK WIN 4 454c f 0 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ = 
+STACK WIN 4 4720 6 0 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ = 
+STACK WIN 4 4768 8 0 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ = 
+STACK WIN 4 4b58 10 0 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ = 
+STACK WIN 4 4c40 c 0 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ = 
+STACK WIN 4 5404 12 0 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ = 
+STACK WIN 4 5728 2a 0 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ = 
+STACK WIN 4 5800 e 0 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ = 
+STACK WIN 4 5ab0 17 0 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ = 
+STACK WIN 4 5adc 11 0 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ = 
+STACK WIN 4 5ba8 c 0 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ = 
+STACK WIN 4 5bcc 14 0 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ = 
+STACK WIN 4 5fa4 8 0 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ = 
+STACK WIN 4 6010 f 0 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ = 
+STACK WIN 4 6074 1c 0 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ = 
+STACK WIN 4 609c 14 0 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ = 
+STACK WIN 4 60c0 2a 0 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ = 
+STACK WIN 4 60f4 17 0 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ = 
+STACK WIN 4 6358 14 0 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ = 
+STACK WIN 4 638c 11 0 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ = 
+STACK WIN 4 63d4 5 0 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ = 
+STACK WIN 4 64c3 19 0 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ = 
+STACK WIN 4 64f0 3 0 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ = 
+STACK WIN 4 65c4 18 0 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ = 
+STACK WIN 4 6974 7 0 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ = 
+STACK WIN 4 6a64 f 0 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ = 
+STACK WIN 4 64bf 4 4 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ = 
+STACK WIN 4 1208 29 0 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ = 
+STACK WIN 4 16ac 20 0 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ = 
+STACK WIN 4 1bc0 3 0 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ = 
+STACK WIN 4 2188 11 0 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ = 
+STACK WIN 4 23b0 6 0 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ = 
+STACK WIN 4 2894 11 0 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ = 
+STACK WIN 4 2b28 7 0 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ = 
+STACK WIN 4 330c c 0 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ = 
+STACK WIN 4 40bc e 0 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ = 
+STACK WIN 4 454c f 0 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ = 
+STACK WIN 4 4720 6 0 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ = 
+STACK WIN 4 4768 5 0 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ = 
+STACK WIN 4 4b58 10 0 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ = 
+STACK WIN 4 4c40 c 0 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ = 
+STACK WIN 4 5404 12 0 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ = 
+STACK WIN 4 5728 2a 0 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ = 
+STACK WIN 4 5800 e 0 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ = 
+STACK WIN 4 5ab0 17 0 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ = 
+STACK WIN 4 5adc 11 0 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ = 
+STACK WIN 4 5ba8 c 0 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ = 
+STACK WIN 4 5bcc 14 0 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ = 
+STACK WIN 4 5fa4 8 0 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ = 
+STACK WIN 4 6010 f 0 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ = 
+STACK WIN 4 6074 1c 0 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ = 
+STACK WIN 4 609c 14 0 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ = 
+STACK WIN 4 60c0 2a 0 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ = 
+STACK WIN 4 60f4 17 0 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ = 
+STACK WIN 4 6358 14 0 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ = 
+STACK WIN 4 638c 11 0 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ = 
+STACK WIN 4 63d4 5 0 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ = 
+STACK WIN 4 64c3 19 0 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ = 
+STACK WIN 4 64f0 3 0 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ = 
+STACK WIN 4 65c4 18 0 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ = 
+STACK WIN 4 6974 7 0 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ = 
+STACK WIN 4 6a64 f 0 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ = 
+STACK WIN 4 1208 29 0 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ =  $24 $T0 44 - ^ = 
+STACK WIN 4 16ac 20 0 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ =  $24 $T0 44 - ^ = 
+STACK WIN 4 1bc0 3 0 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ =  $24 $T0 44 - ^ = 
+STACK WIN 4 2188 11 0 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ =  $24 $T0 44 - ^ = 
+STACK WIN 4 23b0 6 0 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ =  $24 $T0 44 - ^ = 
+STACK WIN 4 2894 11 0 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ =  $24 $T0 44 - ^ = 
+STACK WIN 4 2b28 7 0 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ =  $24 $T0 44 - ^ = 
+STACK WIN 4 330c c 0 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ =  $24 $T0 44 - ^ = 
+STACK WIN 4 40bc e 0 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ =  $24 $T0 44 - ^ = 
+STACK WIN 4 454c f 0 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ =  $24 $T0 44 - ^ = 
+STACK WIN 4 4720 6 0 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ =  $24 $T0 44 - ^ = 
+STACK WIN 4 4768 4 0 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ =  $24 $T0 44 - ^ = 
+STACK WIN 4 4b58 10 0 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ =  $24 $T0 44 - ^ = 
+STACK WIN 4 4c40 c 0 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ =  $24 $T0 44 - ^ = 
+STACK WIN 4 5404 12 0 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ =  $24 $T0 44 - ^ = 
+STACK WIN 4 5728 2a 0 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ =  $24 $T0 44 - ^ = 
+STACK WIN 4 5800 e 0 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ =  $24 $T0 44 - ^ = 
+STACK WIN 4 5ab0 17 0 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ =  $24 $T0 44 - ^ = 
+STACK WIN 4 5adc 11 0 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ =  $24 $T0 44 - ^ = 
+STACK WIN 4 5ba8 c 0 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ =  $24 $T0 44 - ^ = 
+STACK WIN 4 5bcc 14 0 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ =  $24 $T0 44 - ^ = 
+STACK WIN 4 5fa4 8 0 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ =  $24 $T0 44 - ^ = 
+STACK WIN 4 6010 f 0 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ =  $24 $T0 44 - ^ = 
+STACK WIN 4 6074 1c 0 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ =  $24 $T0 44 - ^ = 
+STACK WIN 4 609c 14 0 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ =  $24 $T0 44 - ^ = 
+STACK WIN 4 60c0 2a 0 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ =  $24 $T0 44 - ^ = 
+STACK WIN 4 60f4 17 0 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ =  $24 $T0 44 - ^ = 
+STACK WIN 4 6358 14 0 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ =  $24 $T0 44 - ^ = 
+STACK WIN 4 638c 11 0 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ =  $24 $T0 44 - ^ = 
+STACK WIN 4 63d4 5 0 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ =  $24 $T0 44 - ^ = 
+STACK WIN 4 64c3 19 0 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ =  $24 $T0 44 - ^ = 
+STACK WIN 4 64f0 3 0 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ =  $24 $T0 44 - ^ = 
+STACK WIN 4 65c4 18 0 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ =  $24 $T0 44 - ^ = 
+STACK WIN 4 6974 7 0 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ =  $24 $T0 44 - ^ = 
+STACK WIN 4 6a64 f 0 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ =  $24 $T0 44 - ^ = 
+STACK WIN 4 1e11 19a c 0 4 10 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ =  $24 $T0 48 - ^ = 
+STACK WIN 4 1f72 8 0 0 4 10 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 165c 3 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 5dd4 12 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 6234 13 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 1c0c 8 8 0 10 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1674 7 0 0 10 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1c14 24 0 0 10 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3d74 2 0 0 10 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4c90 e 0 0 10 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5430 16 0 0 10 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 59b0 2 0 0 10 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6254 10 0 0 10 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 643c 3 0 0 10 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6498 10 0 0 10 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4930 18 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6d08 e e 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1bac 12 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 26b4 a 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2880 3 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 37d8 3 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3c70 14 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3fe4 13 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4a10 1c 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 54d8 10 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 54f0 3 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5620 3 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5dac 3 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6040 13 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6278 10 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6478 13 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6540 10 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6d16 1a 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6d0e 8 8 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 1bac 12 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 26b4 a 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 2880 3 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 37d8 3 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 3c70 14 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 3fe4 13 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 4a10 1c 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 54d8 10 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 54f0 3 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 5620 3 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 5dac 3 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 6040 11 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 6278 10 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 6478 13 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 6540 10 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 6d16 1a 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 6d0f 7 7 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 1bac 12 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 26b4 a 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 2880 3 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 37d8 3 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 3c70 14 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 3fe4 13 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 4a10 1c 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 54d8 10 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 54f0 3 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 5620 3 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 5dac 3 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 6040 10 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 6278 10 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 6478 13 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 6540 10 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 6d16 1a 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 1bac 12 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 26b4 a 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 2880 3 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 37d8 3 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 3c70 14 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 3fe4 13 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 4a10 1c 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 54d8 10 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 54f0 3 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 5620 3 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 5dac 3 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 6040 f 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 6278 10 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 6478 13 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 6540 10 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 6d16 1a 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 5e94 6 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2328 a 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 252c 10 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2b14 14 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 34c8 3 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3d44 10 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4c00 13 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4f70 14 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 54d0 3 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5648 3 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5658 12 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5870 10 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5a7c 5 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5e9a 10 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6578 3 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6668 3 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6cf0 10 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6d30 1f 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6d90 1b 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2328 a 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 252c 10 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 2b14 14 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 34c8 3 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 3d44 10 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 4c00 13 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 4f70 14 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 54d0 3 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 5648 3 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 5658 12 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 5870 10 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 5a7c 3 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 5e9a 10 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 6578 3 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 6668 3 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 6cf0 10 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 6d30 1f 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 6d90 1b 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 2328 a 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ =  $20 $T0 8 - ^ = 
+STACK WIN 4 252c 10 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ =  $20 $T0 8 - ^ = 
+STACK WIN 4 2b14 14 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ =  $20 $T0 8 - ^ = 
+STACK WIN 4 34c8 3 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ =  $20 $T0 8 - ^ = 
+STACK WIN 4 3d44 10 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ =  $20 $T0 8 - ^ = 
+STACK WIN 4 4c00 13 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ =  $20 $T0 8 - ^ = 
+STACK WIN 4 4f70 14 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ =  $20 $T0 8 - ^ = 
+STACK WIN 4 54d0 3 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ =  $20 $T0 8 - ^ = 
+STACK WIN 4 5648 3 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ =  $20 $T0 8 - ^ = 
+STACK WIN 4 5658 12 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ =  $20 $T0 8 - ^ = 
+STACK WIN 4 5870 10 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ =  $20 $T0 8 - ^ = 
+STACK WIN 4 6578 3 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ =  $20 $T0 8 - ^ = 
+STACK WIN 4 6668 3 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ =  $20 $T0 8 - ^ = 
+STACK WIN 4 6cf0 10 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ =  $20 $T0 8 - ^ = 
+STACK WIN 4 6d31 1e 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ =  $20 $T0 8 - ^ = 
+STACK WIN 4 6d90 1b 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ =  $20 $T0 8 - ^ = 
+STACK WIN 4 2328 a 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 252c 10 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 2b14 14 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 34c8 3 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 3d44 10 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 4c00 13 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 4f70 14 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 54d0 3 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 5648 3 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 5658 12 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 5870 10 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 6578 3 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 6668 3 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 6cf0 f 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 6d32 1d 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 6d90 1b 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 44f8 13 13 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1dbc 14 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 20ac 14 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 21c0 10 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 22c4 13 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2b44 c 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3c5c f 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3ec0 10 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 40cc 17 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4294 e 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 44c0 e 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 450b d 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4cd4 13 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4d34 7 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4df8 10 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4f84 13 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5630 e 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 577c a 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5af0 13 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5d74 12 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5dec 7 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5ed8 e 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6000 e 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 61a8 14 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6634 12 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6748 13 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6984 40 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 69fc e 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6c9c 18 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 44fe d d 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 1dbc 14 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 20ac 14 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 21c0 10 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 22c4 13 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 2b44 a 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 3c5c f 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 3ec0 10 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 40cc 17 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 4294 e 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 44c0 e 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 450b d 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 4cd4 13 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 4d34 7 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 4df8 10 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 4f84 13 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 5630 e 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 577c a 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 5af0 13 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 5d74 12 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 5dec 7 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 5ed8 e 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 6000 e 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 61a8 14 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 6634 12 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 6748 13 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 6984 40 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 69fc e 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 6c9c 18 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 44ff c c 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 1dbc 14 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 20ac 14 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 21c0 10 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 22c4 13 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 2b44 9 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 3c5c f 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 3ec0 10 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 40cc 17 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 4294 e 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 44c0 e 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 450b d 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 4cd4 13 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 4d34 7 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 4df8 10 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 4f84 13 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 5630 e 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 577c a 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 5af0 13 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 5d74 12 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 5dec 7 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 5ed8 e 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 6000 e 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 61a8 14 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 6634 12 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 6748 13 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 6984 40 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 69fc e 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 6c9c 18 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 1dbc 14 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 20ac 14 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 21c0 10 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 22c4 13 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 2b44 8 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 3c5c f 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 3ec0 10 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 40cc 17 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 4294 e 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 44c0 e 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 450b d 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 4cd4 13 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 4d34 7 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 4df8 10 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 4f84 13 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 5630 e 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 577c a 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 5af0 13 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 5d74 12 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 5dec 7 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 5ed8 e 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 6000 e 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 61a8 14 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 6634 12 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 6748 13 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 6984 40 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 69fc e 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 6c9c 18 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 4f18 6 6 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1d58 16 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2338 17 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2d40 2 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2dc8 3 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2dd4 16 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4f1e 11 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5794 10 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 57b4 8 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6c28 12 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1d58 16 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 2338 17 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 2d40 2 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 2dc8 1 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 2dd4 16 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 4f1e 11 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 5794 10 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 57b4 8 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 6c28 12 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 1d58 16 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 2348 7 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 2dd4 16 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 5795 f 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 57b4 3 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 6c28 12 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 3f0f 79 c 0 0 10 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 32 - ^ =  $23 $T0 36 - ^ =  $24 $T0 40 - ^ = 
+STACK WIN 4 3f7c 8 0 0 0 10 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 1ad0 8 0 0 4 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 4695 33 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 5a10 5 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 219c 2 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4240 14 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5a15 11 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6904 7 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4898 5 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 19e0 13 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 489d f 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6b2c 15 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3c6c 2 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 3c94 7 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 6dab 106 b 0 0 0 328 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5898 5 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1284 1c 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1b18 14 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1b5c 10 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2d48 6 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3488 14 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3e7c 3 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 40e4 f 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4c60 10 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5650 1 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 589d 11 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5f88 13 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5fc0 6 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 68a8 16 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6b60 10 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6c7c 8 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1284 1c 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 1b18 14 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 1b5c 10 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2d48 6 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 348d f 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 3e7c 1 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 4c60 10 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 5650 1 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 5f88 13 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 5fc0 6 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 6b60 10 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 6c7c 8 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 62a4 5 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1048 16 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 11a0 e 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1744 2 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1b34 7 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 261c 22 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2ae0 8 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3d30 12 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3df8 3 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4230 f 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4284 10 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4cb0 1 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5960 1c 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 62a9 f 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6528 1 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6550 12 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 65dc b 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6654 12 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6734 14 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 11a0 e 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 1744 2 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 1b34 7 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 261c 22 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 3d30 12 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 3df8 1 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 4230 f 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 4284 10 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 4cb0 1 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 6528 1 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 6550 12 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 6655 11 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 6734 14 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 11a0 e 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 1744 2 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 1b35 6 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 261c 22 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 3d30 12 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 4230 f 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 4cb0 1 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 6528 1 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 6550 12 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 6734 14 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 65e8 1a 1a 0 24 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $23 $T0 24 - ^ =  $24 $T0 28 - ^ = 
+STACK WIN 4 1000 7 0 0 24 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $23 $T0 24 - ^ =  $24 $T0 28 - ^ = 
+STACK WIN 4 11b0 14 0 0 24 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $23 $T0 24 - ^ =  $24 $T0 28 - ^ = 
+STACK WIN 4 17c4 8 0 0 24 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $23 $T0 24 - ^ =  $24 $T0 28 - ^ = 
+STACK WIN 4 1ac4 6 0 0 24 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $23 $T0 24 - ^ =  $24 $T0 28 - ^ = 
+STACK WIN 4 21f4 c 0 0 24 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $23 $T0 24 - ^ =  $24 $T0 28 - ^ = 
+STACK WIN 4 2234 9 0 0 24 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $23 $T0 24 - ^ =  $24 $T0 28 - ^ = 
+STACK WIN 4 2354 f 0 0 24 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $23 $T0 24 - ^ =  $24 $T0 28 - ^ = 
+STACK WIN 4 242c 12 0 0 24 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $23 $T0 24 - ^ =  $24 $T0 28 - ^ = 
+STACK WIN 4 2710 3 0 0 24 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $23 $T0 24 - ^ =  $24 $T0 28 - ^ = 
+STACK WIN 4 2794 b 0 0 24 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $23 $T0 24 - ^ =  $24 $T0 28 - ^ = 
+STACK WIN 4 28d0 13 0 0 24 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $23 $T0 24 - ^ =  $24 $T0 28 - ^ = 
+STACK WIN 4 31f8 5 0 0 24 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $23 $T0 24 - ^ =  $24 $T0 28 - ^ = 
+STACK WIN 4 327c 14 0 0 24 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $23 $T0 24 - ^ =  $24 $T0 28 - ^ = 
+STACK WIN 4 32c0 4a 0 0 24 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $23 $T0 24 - ^ =  $24 $T0 28 - ^ = 
+STACK WIN 4 336c 20 0 0 24 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $23 $T0 24 - ^ =  $24 $T0 28 - ^ = 
+STACK WIN 4 36f8 f 0 0 24 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $23 $T0 24 - ^ =  $24 $T0 28 - ^ = 
+STACK WIN 4 37e0 10 0 0 24 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $23 $T0 24 - ^ =  $24 $T0 28 - ^ = 
+STACK WIN 4 3c30 1 0 0 24 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $23 $T0 24 - ^ =  $24 $T0 28 - ^ = 
+STACK WIN 4 3f94 e 0 0 24 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $23 $T0 24 - ^ =  $24 $T0 28 - ^ = 
+STACK WIN 4 4300 14 0 0 24 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $23 $T0 24 - ^ =  $24 $T0 28 - ^ = 
+STACK WIN 4 4338 11 0 0 24 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $23 $T0 24 - ^ =  $24 $T0 28 - ^ = 
+STACK WIN 4 497c 16 0 0 24 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $23 $T0 24 - ^ =  $24 $T0 28 - ^ = 
+STACK WIN 4 4b10 15 0 0 24 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $23 $T0 24 - ^ =  $24 $T0 28 - ^ = 
+STACK WIN 4 4c70 14 0 0 24 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $23 $T0 24 - ^ =  $24 $T0 28 - ^ = 
+STACK WIN 4 4ce8 10 0 0 24 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $23 $T0 24 - ^ =  $24 $T0 28 - ^ = 
+STACK WIN 4 4db4 1e 0 0 24 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $23 $T0 24 - ^ =  $24 $T0 28 - ^ = 
+STACK WIN 4 4e68 12 0 0 24 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $23 $T0 24 - ^ =  $24 $T0 28 - ^ = 
+STACK WIN 4 54e8 3 0 0 24 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $23 $T0 24 - ^ =  $24 $T0 28 - ^ = 
+STACK WIN 4 5574 14 0 0 24 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $23 $T0 24 - ^ =  $24 $T0 28 - ^ = 
+STACK WIN 4 55d0 2 0 0 24 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $23 $T0 24 - ^ =  $24 $T0 28 - ^ = 
+STACK WIN 4 55f8 8 0 0 24 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $23 $T0 24 - ^ =  $24 $T0 28 - ^ = 
+STACK WIN 4 5628 8 0 0 24 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $23 $T0 24 - ^ =  $24 $T0 28 - ^ = 
+STACK WIN 4 578c 3 0 0 24 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $23 $T0 24 - ^ =  $24 $T0 28 - ^ = 
+STACK WIN 4 5838 24 0 0 24 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $23 $T0 24 - ^ =  $24 $T0 28 - ^ = 
+STACK WIN 4 58f4 c 0 0 24 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $23 $T0 24 - ^ =  $24 $T0 28 - ^ = 
+STACK WIN 4 5f44 7 0 0 24 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $23 $T0 24 - ^ =  $24 $T0 28 - ^ = 
+STACK WIN 4 61fc f 0 0 24 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $23 $T0 24 - ^ =  $24 $T0 28 - ^ = 
+STACK WIN 4 6328 14 0 0 24 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $23 $T0 24 - ^ =  $24 $T0 28 - ^ = 
+STACK WIN 4 63a0 c 0 0 24 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $23 $T0 24 - ^ =  $24 $T0 28 - ^ = 
+STACK WIN 4 6404 6 0 0 24 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $23 $T0 24 - ^ =  $24 $T0 28 - ^ = 
+STACK WIN 4 6602 e 0 0 24 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $23 $T0 24 - ^ =  $24 $T0 28 - ^ = 
+STACK WIN 4 6624 10 0 0 24 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $23 $T0 24 - ^ =  $24 $T0 28 - ^ = 
+STACK WIN 4 6ad4 16 0 0 24 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $23 $T0 24 - ^ =  $24 $T0 28 - ^ = 
+STACK WIN 4 6d80 e 0 0 24 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $23 $T0 24 - ^ =  $24 $T0 28 - ^ = 
+STACK WIN 4 6eb4 3 0 0 24 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $23 $T0 24 - ^ =  $24 $T0 28 - ^ = 
+STACK WIN 4 6f10 f 0 0 24 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $23 $T0 24 - ^ =  $24 $T0 28 - ^ = 
+STACK WIN 4 610c 8 8 0 24 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3204 2 0 0 24 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3c24 7 0 0 24 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6114 3f 0 0 24 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6bf0 16 16 0 1c c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 12 - ^ =  $23 $T0 16 - ^ =  $24 $T0 20 - ^ = 
+STACK WIN 4 1198 3 0 0 1c c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 12 - ^ =  $23 $T0 16 - ^ =  $24 $T0 20 - ^ = 
+STACK WIN 4 17b4 e 0 0 1c c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 12 - ^ =  $23 $T0 16 - ^ =  $24 $T0 20 - ^ = 
+STACK WIN 4 19ac 2 0 0 1c c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 12 - ^ =  $23 $T0 16 - ^ =  $24 $T0 20 - ^ = 
+STACK WIN 4 24a4 14 0 0 1c c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 12 - ^ =  $23 $T0 16 - ^ =  $24 $T0 20 - ^ = 
+STACK WIN 4 3318 33 0 0 1c c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 12 - ^ =  $23 $T0 16 - ^ =  $24 $T0 20 - ^ = 
+STACK WIN 4 357c 2b 0 0 1c c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 12 - ^ =  $23 $T0 16 - ^ =  $24 $T0 20 - ^ = 
+STACK WIN 4 43c4 b 0 0 1c c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 12 - ^ =  $23 $T0 16 - ^ =  $24 $T0 20 - ^ = 
+STACK WIN 4 4624 14 0 0 1c c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 12 - ^ =  $23 $T0 16 - ^ =  $24 $T0 20 - ^ = 
+STACK WIN 4 4d9c 11 0 0 1c c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 12 - ^ =  $23 $T0 16 - ^ =  $24 $T0 20 - ^ = 
+STACK WIN 4 5094 a 0 0 1c c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 12 - ^ =  $23 $T0 16 - ^ =  $24 $T0 20 - ^ = 
+STACK WIN 4 5b4c 12 0 0 1c c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 12 - ^ =  $23 $T0 16 - ^ =  $24 $T0 20 - ^ = 
+STACK WIN 4 5efc c 0 0 1c c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 12 - ^ =  $23 $T0 16 - ^ =  $24 $T0 20 - ^ = 
+STACK WIN 4 5f38 6 0 0 1c c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 12 - ^ =  $23 $T0 16 - ^ =  $24 $T0 20 - ^ = 
+STACK WIN 4 6420 c 0 0 1c c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 12 - ^ =  $23 $T0 16 - ^ =  $24 $T0 20 - ^ = 
+STACK WIN 4 68c0 14 0 0 1c c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 12 - ^ =  $23 $T0 16 - ^ =  $24 $T0 20 - ^ = 
+STACK WIN 4 6910 12 0 0 1c c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 12 - ^ =  $23 $T0 16 - ^ =  $24 $T0 20 - ^ = 
+STACK WIN 4 6c06 12 0 0 1c c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 12 - ^ =  $23 $T0 16 - ^ =  $24 $T0 20 - ^ = 
+STACK WIN 4 6c20 8 0 0 1c c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 12 - ^ =  $23 $T0 16 - ^ =  $24 $T0 20 - ^ = 
+STACK WIN 4 25dc 8 8 0 20 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 25e4 38 0 0 20 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4104 7 0 0 20 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5ca0 2 0 0 20 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2e0c 6 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2e12 375 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 641c 3 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2e12 375 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 641c 1 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 5cdc 6 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1308 14 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 14ec 7 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 24c0 7 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2d64 14 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3194 14 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 33c0 7 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3c9c 7 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 42ec 3 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 441c 7 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 448c 14 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5688 14 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5ce2 11 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1308 14 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 14ec 7 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 24c0 7 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2d64 14 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 3194 14 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 33c0 7 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 3c9c 7 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 42ec 1 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 441c 7 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 448c 14 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 5688 14 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 5ce2 11 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 58dc 6 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1028 14 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 16f4 14 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2040 14 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2724 7 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2788 7 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2834 3 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 28f0 7 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2b7c 7 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3360 7 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 34d8 14 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 37cc 7 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3bac 14 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3ddc 14 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4a80 7 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4aa0 7 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4b34 14 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4dec 7 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4e2c 14 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4e5c 7 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4efc 14 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4f64 7 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 567c 7 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 58e2 10 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 594c 14 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5b38 14 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5cb4 7 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 6264 14 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 64f8 14 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1028 14 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 16f4 14 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2040 14 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2724 7 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2788 7 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2834 1 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 28f0 7 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2b7c 7 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 3360 7 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 34d8 14 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 37cc 7 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 3bac 14 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 3ddc 14 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 4a80 7 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 4aa0 7 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 4b34 14 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 4dec 7 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 4e2c 14 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 4e5c 7 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 4efc 14 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 4f64 7 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 567c 7 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 58e2 10 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 594c 14 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 5b38 14 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 5cb4 7 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 6264 14 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 64f8 14 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 1a0a ba 0 0 c 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 637c 10 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 1c38 103 0 0 c 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 0 39e1 14 0 0 0 0 0 0 0 0
+STACK WIN 0 672a 9 0 0 0 0 0 0 0 0
+STACK WIN 0 27ab 88 0 0 8 0 0 0 0 0
+STACK WIN 0 36d2 f 0 0 0 0 0 0 0 0
+STACK WIN 0 1166 f 0 0 0 0 0 0 0 0
+STACK WIN 0 1175 9 0 0 0 0 0 0 0 0
+STACK WIN 0 1447 c 0 0 0 0 0 0 0 0
+STACK WIN 0 1453 c 0 0 0 0 0 0 0 0
+STACK WIN 0 40b0 9 0 0 0 0 0 0 0 0
+STACK WIN 0 37f0 8b 0 0 4 0 0 0 0 0
+STACK WIN 0 297c 90 3 0 c c 0 0 0 0
+STACK WIN 0 2a0c 46 0 0 10 4 0 0 0 1
+STACK WIN 0 2a6e 17 4 0 0 10 0 0 0 1
+STACK WIN 0 2a85 19 0 0 0 0 0 0 0 0
+STACK WIN 0 2ab7 17 1 0 8 4 0 0 0 1
+STACK WIN 0 4658 4 0 0 0 0 0 0 0 0
+STACK WIN 0 1939 15 0 0 0 0 0 0 0 0
+STACK WIN 0 15b1 6 0 0 0 0 0 0 0 0
+STACK WIN 0 7079 13 0 0 0 0 0 0 0 0
+STACK WIN 0 2cdd c 0 0 0 0 0 0 0 0
+STACK WIN 0 1f72 9 0 0 0 0 0 0 0 0
+STACK WIN 0 3f7c 9 0 0 0 0 0 0 0 0
+STACK WIN 0 4fa2 7a 0 0 c 0 0 0 0 0
+STACK WIN 0 33f1 95 0 0 10 0 4 0 0 0
+STACK WIN 0 67c0 84 3 0 8 c 0 0 0 0
+STACK WIN 0 6844 23 0 0 0 0 0 0 0 0
+STACK WIN 0 688f 3 0 0 0 0 0 0 0 0
+STACK WIN 0 1d6e 1a 0 0 10 0 0 0 0 0
+STACK WIN 0 1d88 1a 0 0 10 0 4 0 0 0
diff --git a/google-breakpad/src/tools/windows/dump_syms/testdata/omap_reorder_funcs.pdb b/google-breakpad/src/tools/windows/dump_syms/testdata/omap_reorder_funcs.pdb
new file mode 100644
index 0000000..c86a864
--- /dev/null
+++ b/google-breakpad/src/tools/windows/dump_syms/testdata/omap_reorder_funcs.pdb
Binary files differ
diff --git a/google-breakpad/src/tools/windows/dump_syms/testdata/omap_reorder_funcs.sym b/google-breakpad/src/tools/windows/dump_syms/testdata/omap_reorder_funcs.sym
new file mode 100644
index 0000000..78da393
--- /dev/null
+++ b/google-breakpad/src/tools/windows/dump_syms/testdata/omap_reorder_funcs.sym
@@ -0,0 +1,2945 @@
+MODULE windows x86 11F7284EDE764667AA5234B0E7B07EEF1 omap_reorder_funcs.pdb
+FILE 1 c:\src\breakpad\src\src\tools\windows\dump_syms\testdata\dump_syms_regtest.cc
+FILE 2 f:\dd\public\sdk\inc\internal\pebteb.h
+FILE 3 f:\dd\public\sdk\inc\internal\ntldr.h
+FILE 4 f:\dd\public\sdk\inc\internal\ntconfig.h
+FILE 5 f:\dd\public\sdk\inc\internal\ntregapi.h
+FILE 6 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h
+FILE 7 f:\dd\public\ddk\inc\ntdef.h
+FILE 8 f:\dd\public\sdk\inc\internal\ntmmapi.h
+FILE 9 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h
+FILE 10 f:\dd\public\sdk\inc\pshpack1.h
+FILE 11 f:\dd\public\sdk\inc\internal\nxi386.h
+FILE 12 f:\dd\public\ddk\inc\poppack.h
+FILE 13 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\process.h
+FILE 14 f:\dd\public\sdk\inc\pshpack8.h
+FILE 15 f:\dd\public\ddk\inc\ntpoapi.h
+FILE 16 f:\dd\public\sdk\inc\internal\ntexapi.h
+FILE 17 f:\dd\public\sdk\inc\poppack.h
+FILE 18 f:\dd\public\ddk\inc\ntimage.h
+FILE 19 f:\dd\public\ddk\inc\pshpack4.h
+FILE 20 f:\dd\public\sdk\inc\pshpack2.h
+FILE 21 f:\dd\public\ddk\inc\ntnls.h
+FILE 22 f:\dd\public\sdk\inc\internal\ntelfapi.h
+FILE 23 f:\dd\public\sdk\inc\internal\ntpsapi.h
+FILE 24 f:\dd\public\sdk\inc\internal\nti386.h
+FILE 25 f:\dd\public\sdk\inc\specstrings.h
+FILE 26 f:\dd\public\sdk\inc\sal_supp.h
+FILE 27 f:\dd\public\sdk\inc\specstrings_supp.h
+FILE 28 f:\dd\public\sdk\inc\specstrings_strict.h
+FILE 29 f:\dd\public\sdk\inc\specstrings_undef.h
+FILE 30 f:\dd\public\sdk\inc\driverspecs.h
+FILE 31 f:\dd\public\sdk\inc\sdv_driverspecs.h
+FILE 32 f:\dd\public\sdk\inc\basetsd.h
+FILE 33 f:\dd\public\sdk\inc\internal\ntpnpapi.h
+FILE 34 f:\dd\public\sdk\inc\cfg.h
+FILE 35 f:\dd\public\sdk\inc\internal\ntxcapi.h
+FILE 36 f:\dd\public\sdk\inc\guiddef.h
+FILE 37 f:\dd\public\sdk\inc\internal\nt.h
+FILE 38 f:\dd\public\sdk\inc\ntstatus.h
+FILE 39 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h
+FILE 40 f:\dd\public\sdk\inc\internal\ntkeapi.h
+FILE 41 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h
+FILE 42 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h
+FILE 43 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\codeanalysis\sourceannotations.h
+FILE 44 f:\dd\public\sdk\inc\internal\ntobapi.h
+FILE 45 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\string.h
+FILE 46 f:\dd\public\sdk\inc\internal\ntioapi.h
+FILE 47 f:\dd\public\ddk\inc\devioctl.h
+FILE 48 f:\dd\public\sdk\inc\internal\ntseapi.h
+FILE 49 f:\dd\public\ddk\inc\mce.h
+FILE 50 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\misc\i386\chandler4.c
+FILE 51 f:\dd\public\sdk\inc\pshpack4.h
+FILE 52 f:\dd\public\devdiv\inc\ddbanned.h
+FILE 53 f:\dd\public\sdk\inc\internal\ntlpcapi.h
+FILE 54 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h
+FILE 55 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h
+FILE 56 f:\dd\public\sdk\inc\internal\ntiolog.h
+FILE 57 f:\dd\vctools\crt_bld\SELF_X86\crt\prebuild\misc\i386\exsup.asm
+FILE 58 f:\dd\vctools\crt_bld\SELF_X86\crt\prebuild\h\pversion.inc
+FILE 59 f:\dd\vctools\crt_bld\SELF_X86\crt\prebuild\h\cmacros.inc
+FILE 60 f:\dd\vctools\crt_bld\SELF_X86\crt\prebuild\h\exsup.inc
+FILE 61 f:\dd\vctools\crt_bld\SELF_X86\crt\prebuild\misc\i386\nlgsupp.asm
+FILE 62 f:\dd\vctools\crt_bld\SELF_X86\crt\prebuild\misc\i386\exsup4.asm
+FILE 64 f:\dd\vctools\crt_bld\SELF_X86\crt\prebuild\misc\i386\sehprolg4.asm
+FILE 65 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\string\i386\p4_memcpy.c
+FILE 69 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\string\i386\memcmp.c
+FILE 73 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\string\i386\p4_memset.c
+FILE 77 f:\dd\public\sdk\inc\winreg.h
+FILE 78 f:\dd\public\sdk\inc\imm.h
+FILE 79 f:\dd\public\sdk\inc\wingdi.h
+FILE 80 f:\dd\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 81 f:\dd\public\sdk\inc\winerror.h
+FILE 82 f:\dd\public\sdk\inc\ktmtypes.h
+FILE 84 f:\dd\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 85 f:\dd\public\sdk\inc\windef.h
+FILE 86 f:\dd\public\sdk\inc\winbase.h
+FILE 88 f:\dd\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 89 f:\dd\public\sdk\inc\winuser.h
+FILE 91 f:\dd\public\sdk\inc\winnetwk.h
+FILE 92 f:\dd\public\sdk\inc\winnt.h
+FILE 93 f:\dd\public\sdk\inc\wnnc.h
+FILE 94 f:\dd\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 96 f:\dd\public\sdk\inc\winnls.h
+FILE 98 f:\dd\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 99 f:\dd\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 100 f:\dd\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 101 f:\dd\vctools\crt_bld\self_x86\crt\src\codeanalysis\sourceannotations.h
+FILE 102 f:\dd\public\sdk\inc\winver.h
+FILE 103 f:\dd\public\sdk\inc\verrsrc.h
+FILE 104 f:\dd\public\sdk\inc\wincon.h
+FILE 105 f:\dd\public\sdk\inc\stralign.h
+FILE 107 f:\dd\public\sdk\inc\mcx.h
+FILE 108 f:\dd\vctools\crt_bld\self_x86\crt\src\atox.c
+FILE 109 f:\dd\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 110 f:\dd\public\sdk\inc\windows.h
+FILE 111 f:\dd\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 112 f:\dd\public\sdk\inc\sdkddkver.h
+FILE 113 f:\dd\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 114 f:\dd\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 120 f:\dd\public\sdk\inc\reason.h
+FILE 123 f:\dd\public\sdk\inc\kernelspecs.h
+FILE 125 f:\dd\vctools\crt_bld\self_x86\crt\src\tchar.h
+FILE 126 f:\dd\vctools\crt_bld\self_x86\crt\src\mbstring.h
+FILE 127 f:\dd\vctools\crt_bld\self_x86\crt\src\mbctype.h
+FILE 128 f:\dd\public\sdk\inc\ime_cmodes.h
+FILE 130 f:\dd\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 131 f:\dd\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 132 f:\dd\public\sdk\inc\tvout.h
+FILE 145 f:\dd\vctools\crt_bld\self_x86\crt\src\internal_securecrt.h
+FILE 152 f:\dd\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 164 f:\dd\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 165 f:\dd\vctools\crt_bld\self_x86\crt\src\xtoa.c
+FILE 178 f:\dd\vctools\crt_bld\self_x86\crt\src\xtoas.c
+FILE 182 f:\dd\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 224 f:\dd\vctools\crt_bld\self_x86\crt\src\dosmap.c
+FILE 250 f:\dd\vctools\crt_bld\self_x86\crt\src\rtcsup.h
+FILE 251 f:\dd\vctools\crt_bld\self_x86\crt\src\rtcapi.h
+FILE 265 f:\dd\vctools\crt_bld\self_x86\crt\src\winheap.h
+FILE 281 f:\dd\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 291 f:\dd\vctools\crt_bld\self_x86\crt\src\calloc_impl.c
+FILE 299 f:\dd\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 333 f:\dd\vctools\crt_bld\self_x86\crt\src\crtheap.c
+FILE 389 f:\dd\vctools\crt_bld\self_x86\crt\src\free.c
+FILE 453 f:\dd\vctools\crt_bld\self_x86\crt\src\heapinit.c
+FILE 498 f:\dd\vctools\crt_bld\self_x86\crt\src\rterr.h
+FILE 504 f:\dd\vctools\crt_bld\self_x86\crt\src\malloc.c
+FILE 561 f:\dd\vctools\crt_bld\self_x86\crt\src\msize.c
+FILE 618 f:\dd\vctools\crt_bld\self_x86\crt\src\realloc.c
+FILE 677 f:\dd\vctools\crt_bld\self_x86\crt\src\recalloc.c
+FILE 731 f:\dd\vctools\crt_bld\self_x86\crt\src\_newmode.c
+FILE 774 f:\dd\vctools\crt_bld\self_x86\crt\src\msdos.h
+FILE 777 f:\dd\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 792 f:\dd\vctools\crt_bld\self_x86\crt\src\ioinit.c
+FILE 844 f:\dd\vctools\crt_bld\self_x86\crt\src\intel\loadcfg.c
+FILE 892 f:\dd\vctools\crt_bld\self_x86\crt\src\intel\secchk.c
+FILE 904 f:\dd\vctools\crt_bld\self_x86\crt\src\process.h
+FILE 943 f:\dd\vctools\crt_bld\self_x86\crt\src\a_env.c
+FILE 960 f:\dd\vctools\crt_bld\self_x86\crt\src\awint.h
+FILE 975 f:\dd\vctools\crt_bld\self_x86\crt\src\signal.h
+FILE 1011 f:\dd\vctools\crt_bld\self_x86\crt\src\abort.c
+FILE 1039 f:\dd\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 1053 f:\dd\vctools\crt_bld\self_x86\crt\src\crtmbox.c
+FILE 1063 f:\dd\vctools\crt_bld\self_x86\crt\src\crtmboxw.c
+FILE 1065 f:\dd\vctools\crt_bld\self_x86\crt\src\wchar.h
+FILE 1069 f:\dd\vctools\crt_bld\self_x86\crt\src\wtime.inl
+FILE 1120 f:\dd\vctools\crt_bld\self_x86\crt\src\ctype.c
+FILE 1145 f:\dd\vctools\crt_bld\self_x86\crt\src\dbghook.c
+FILE 1181 f:\dd\vctools\crt_bld\self_x86\crt\src\errmode.c
+FILE 1244 f:\dd\vctools\crt_bld\self_x86\crt\src\getqloc.c
+FILE 1288 f:\dd\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 1301 f:\dd\vctools\crt_bld\self_x86\crt\src\glstatus.c
+FILE 1344 f:\dd\vctools\crt_bld\self_x86\crt\src\gs_cookie.c
+FILE 1392 f:\dd\vctools\crt_bld\self_x86\crt\src\gs_report.c
+FILE 1413 f:\binaries.x86ret\inc\mm3dnow.h
+FILE 1415 f:\binaries.x86ret\inc\ammintrin.h
+FILE 1424 f:\binaries.x86ret\inc\immintrin.h
+FILE 1426 f:\binaries.x86ret\inc\wmmintrin.h
+FILE 1427 f:\binaries.x86ret\inc\nmmintrin.h
+FILE 1428 f:\binaries.x86ret\inc\smmintrin.h
+FILE 1429 f:\binaries.x86ret\inc\tmmintrin.h
+FILE 1430 f:\binaries.x86ret\inc\pmmintrin.h
+FILE 1431 f:\binaries.x86ret\inc\emmintrin.h
+FILE 1432 f:\binaries.x86ret\inc\xmmintrin.h
+FILE 1433 f:\binaries.x86ret\inc\mmintrin.h
+FILE 1455 f:\dd\vctools\crt_bld\self_x86\crt\src\gs_support.c
+FILE 1467 f:\dd\vctools\crt_bld\self_x86\crt\src\intrin.h
+FILE 1468 f:\dd\vctools\crt_bld\self_x86\crt\src\setjmp.h
+FILE 1508 f:\dd\vctools\crt_bld\self_x86\crt\src\initcoll.c
+FILE 1568 f:\dd\vctools\crt_bld\self_x86\crt\src\initctyp.c
+FILE 1627 f:\dd\vctools\crt_bld\self_x86\crt\src\inithelp.c
+FILE 1685 f:\dd\vctools\crt_bld\self_x86\crt\src\initmon.c
+FILE 1737 f:\dd\vctools\crt_bld\self_x86\crt\src\nlsint.h
+FILE 1742 f:\dd\vctools\crt_bld\self_x86\crt\src\initnum.c
+FILE 1800 f:\dd\vctools\crt_bld\self_x86\crt\src\inittime.c
+FILE 1855 f:\dd\vctools\crt_bld\self_x86\crt\src\lconv.c
+FILE 1913 f:\dd\vctools\crt_bld\self_x86\crt\src\localref.c
+FILE 1962 f:\dd\vctools\crt_bld\self_x86\crt\src\sect_attribs.h
+FILE 1969 f:\dd\vctools\crt_bld\self_x86\crt\src\onexit.c
+FILE 1989 f:\dd\vctools\crt_bld\self_x86\crt\src\nlsdata1.c
+FILE 2036 f:\dd\vctools\crt_bld\self_x86\crt\src\nlsdata2.c
+FILE 2079 f:\dd\vctools\crt_bld\self_x86\crt\src\pesect.c
+FILE 2128 f:\dd\vctools\crt_bld\self_x86\crt\src\purevirt.c
+FILE 2186 f:\dd\vctools\crt_bld\self_x86\crt\src\rand_s.c
+FILE 2250 f:\dd\vctools\crt_bld\self_x86\crt\src\setlocal.c
+FILE 2311 f:\dd\vctools\crt_bld\self_x86\crt\src\winsig.c
+FILE 2314 f:\dd\vctools\crt_bld\self_x86\crt\src\float.h
+FILE 2315 f:\dd\vctools\crt_bld\self_x86\crt\src\crtwrn.h
+FILE 2369 f:\dd\vctools\crt_bld\self_x86\crt\src\winxfltr.c
+FILE 2394 f:\dd\vctools\crt_bld\self_x86\crt\src\fltintrn.h
+FILE 2419 f:\dd\vctools\crt_bld\self_x86\crt\src\cmiscdat.c
+FILE 2445 f:\dd\vctools\crt_bld\self_x86\crt\src\intel\strncmp.c
+FILE 2468 f:\dd\vctools\crt_bld\self_x86\crt\src\tcscat_s.inl
+FILE 2493 f:\dd\vctools\crt_bld\self_x86\crt\src\strcat_s.c
+FILE 2523 f:\dd\vctools\crt_bld\self_x86\crt\src\tcscpy_s.inl
+FILE 2548 f:\dd\vctools\crt_bld\self_x86\crt\src\strcpy_s.c
+FILE 2578 f:\dd\vctools\crt_bld\self_x86\crt\src\tcsncpy_s.inl
+FILE 2603 f:\dd\vctools\crt_bld\self_x86\crt\src\strncpy_s.c
+FILE 2658 f:\dd\vctools\crt_bld\self_x86\crt\src\wcscat_s.c
+FILE 2713 f:\dd\vctools\crt_bld\self_x86\crt\src\wcscpy_s.c
+FILE 2728 f:\dd\vctools\crt_bld\self_x86\crt\src\wcslen.c
+FILE 2776 f:\dd\vctools\crt_bld\self_x86\crt\src\wcsncpy_s.c
+FILE 2787 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\memcpy.asm
+FILE 2788 f:\dd\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc
+FILE 2789 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\memset.asm
+FILE 2791 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\strcmp.asm
+FILE 2793 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\strcspn.asm
+FILE 2794 f:\dd\vctools\crt_bld\SELF_X86\crt\src\Intel\STRSPN.ASM
+FILE 2796 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\strlen.asm
+FILE 2798 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\_strnicm.asm
+FILE 2800 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\strpbrk.asm
+FILE 2803 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\llmul.asm
+FILE 2805 f:\dd\vctools\crt_bld\SELF_X86\crt\src\mm.inc
+FILE 2806 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\ulldvrm.asm
+FILE 2820 f:\dd\vctools\crt_bld\self_x86\crt\src\handler.cpp
+FILE 2841 f:\dd\vctools\crt_bld\self_x86\crt\src\new.h
+FILE 2875 f:\dd\vctools\crt_bld\self_x86\crt\src\delete.cpp
+FILE 2931 f:\dd\vctools\crt_bld\self_x86\crt\src\_wctype.c
+FILE 2987 f:\dd\vctools\crt_bld\self_x86\crt\src\iswctype.c
+FILE 2998 f:\dd\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 3045 f:\dd\vctools\crt_bld\self_x86\crt\src\isctype.c
+FILE 3106 f:\dd\vctools\crt_bld\self_x86\crt\src\strtol.c
+FILE 3163 f:\dd\vctools\crt_bld\self_x86\crt\src\strtoq.c
+FILE 3218 f:\dd\vctools\crt_bld\self_x86\crt\src\tolower.c
+FILE 3271 f:\dd\vctools\crt_bld\self_x86\crt\src\ismbbyte.c
+FILE 3305 f:\dd\vctools\crt_bld\self_x86\crt\src\mbdata.h
+FILE 3326 f:\dd\vctools\crt_bld\self_x86\crt\src\mbctype.c
+FILE 3386 f:\dd\vctools\crt_bld\self_x86\crt\src\a_loc.c
+FILE 3447 f:\dd\vctools\crt_bld\self_x86\crt\src\a_map.c
+FILE 3507 f:\dd\vctools\crt_bld\self_x86\crt\src\a_str.c
+FILE 3583 f:\dd\vctools\crt_bld\self_x86\crt\src\invarg.c
+FILE 3626 f:\dd\vctools\crt_bld\self_x86\crt\src\stricmp.c
+FILE 3682 f:\dd\vctools\crt_bld\self_x86\crt\src\strnicmp.c
+FILE 3774 f:\dd\vctools\crt_bld\self_x86\crt\src\tidtable.c
+FILE 3778 f:\dd\vctools\crt_bld\self_x86\crt\src\memory.h
+FILE 3838 f:\dd\vctools\crt_bld\self_x86\crt\src\stdenvp.c
+FILE 3860 f:\dd\vctools\crt_bld\self_x86\crt\src\dos.h
+FILE 3891 f:\dd\vctools\crt_bld\self_x86\crt\src\stdargv.c
+FILE 3954 f:\dd\vctools\crt_bld\self_x86\crt\src\mlock.c
+FILE 3998 f:\dd\vctools\crt_bld\self_x86\crt\src\cmsgs.h
+FILE 4012 f:\dd\vctools\crt_bld\self_x86\crt\src\crt0msg.c
+FILE 4072 f:\dd\vctools\crt_bld\self_x86\crt\src\crt0init.c
+FILE 4123 f:\dd\vctools\crt_bld\self_x86\crt\src\crt0fp.c
+FILE 4186 f:\dd\vctools\crt_bld\self_x86\crt\src\crt0dat.c
+FILE 4250 f:\dd\vctools\crt_bld\self_x86\crt\src\crt0.c
+FILE 4274 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\alloca16.asm
+FILE 4276 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\chkstk.asm
+FILE 4289 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\errno.h
+FILE 4293 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\internal.h
+FILE 4294 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\limits.h
+FILE 4295 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\mtdll.h
+FILE 4309 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\sect_attribs.h
+FILE 4315 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\tran\i386\cpu_disp.c
+FILE 4327 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\crtdbg.h
+FILE 4340 f:\dd\vctools\langapi\undname\undname.cxx
+FILE 4345 f:\dd\vctools\langapi\undname\undname.inl
+FILE 4347 f:\dd\vctools\langapi\undname\utf8.h
+FILE 4355 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\swprintf.inl
+FILE 4365 f:\dd\vctools\langapi\undname\undname.hxx
+FILE 4366 f:\dd\vctools\langapi\undname\undname.h
+FILE 4367 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\stdlib.h
+FILE 4368 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\stdio.h
+FILE 4396 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\eh.h
+FILE 4397 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\eh\unhandld.cpp
+FILE 4401 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\ehhooks.h
+FILE 4405 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\ehassert.h
+FILE 4427 f:\dd\vctools\langapi\include\ehdata.h
+FILE 4429 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\stddef.h
+FILE 4449 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\exception
+FILE 4472 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\malloc.h
+FILE 4473 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\eh\typname.cpp
+FILE 4475 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\cstddef
+FILE 4487 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\typeinfo.h
+FILE 4488 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\typeinfo
+FILE 4490 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\xstddef
+FILE 4491 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\yvals.h
+FILE 4492 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\use_ansi.h
+FILE 4493 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\dbgint.h
+FILE 4496 f:\dd\public\internal\vctools\include\undname.h
+FILE 4531 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\eh\typinfo.cpp
+FILE 4591 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\eh\hooks.cpp
+FILE 4643 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\rtc\initsect.cpp
+FILE 4664 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\rtcapi.h
+FILE 4680 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\rtcpriv.h
+FUNC 41e2 54 0 main
+41e2 6 57 1
+41e8 8 58 1
+41f0 e 59 1
+41fe 8 60 1
+4206 b 61 1
+4211 f 62 1
+4220 12 64 1
+4232 4 65 1
+FUNC 4242 a 0 google_breakpad::i
+4242 3 51 1
+4245 5 52 1
+424a 2 53 1
+FUNC 2b6a 21 0 google_breakpad::C::C()
+2b6a 21 37 1
+FUNC 30dd 14 0 google_breakpad::C::~C()
+30dd 14 38 1
+FUNC 21f6 16 0 google_breakpad::C::set_member(int)
+21f6 16 40 1
+FUNC 22e9 1e 0 google_breakpad::C::f()
+22e9 1e 43 1
+FUNC 2895 10 0 google_breakpad::C::g()
+2895 10 44 1
+FUNC 308e 7 0 google_breakpad::C::h(google_breakpad::C const &)
+308e 7 45 1
+FUNC 13a0 2c 0 google_breakpad::C::`scalar deleting destructor'(unsigned int)
+FUNC 205a 10 0 type_info::~type_info()
+205a 2 49 4531
+205c d 50 4531
+2069 1 51 4531
+FUNC 1445 21 0 type_info::`scalar deleting destructor'(unsigned int)
+FUNC 2307 b 0 operator delete(void *)
+2307 5 20 2875
+230c 1 24 2875
+230d 5 23 2875
+FUNC 3238 29 0 fast_error_exit
+3238 5 326 4250
+323d 9 335 4250
+3246 5 337 4250
+324b 8 339 4250
+3253 c 340 4250
+325f 2 341 4250
+FUNC 32ed 161 0 __tmainCRTStartup
+32ed c 196 4250
+32f9 a 214 4250
+3303 b 216 4250
+330e 49 223 4250
+3357 9 225 4250
+3360 8 226 4250
+3368 9 228 4250
+3371 8 229 4250
+3379 5 238 4250
+337e 3 246 4250
+3381 9 248 4250
+338a 8 249 4250
+3392 b 252 4250
+339d a 255 4250
+33a7 9 257 4250
+33b0 8 258 4250
+33b8 9 259 4250
+33c1 8 260 4250
+33c9 8 262 4250
+33d1 4 263 4250
+33d5 7 264 4250
+33dc a 277 4250
+33e6 18 278 4250
+33fe 5 281 4250
+3403 6 282 4250
+3409 5 284 4250
+340e 2 286 4250
+3410 17 287 4250
+3427 6 293 4250
+342d 6 295 4250
+3433 6 296 4250
+3439 5 298 4250
+343e 7 300 4250
+3445 3 302 4250
+3448 6 303 4250
+FUNC 2104 a 0 mainCRTStartup
+2104 0 179 4250
+2104 5 186 4250
+2109 5 188 4250
+FUNC 5330 70 0 type_info::_Type_info_dtor(type_info *)
+5330 c 62 4473
+533c 8 63 4473
+5344 4 64 4473
+5348 a 65 4473
+5352 d 70 4473
+535f 4 72 4473
+5363 4 74 4473
+5367 6 79 4473
+536d 7 80 4473
+5374 9 94 4473
+537d 4 101 4473
+5381 c 103 4473
+538d 6 107 4473
+5393 2 83 4473
+5395 2 72 4473
+5397 9 104 4473
+FUNC 2f6b 88 0 strcmp
+2f6b 0 65 2791
+2f6b 4 73 2791
+2f6f 4 74 2791
+2f73 6 76 2791
+2f79 2 77 2791
+2f7b 2 81 2791
+2f7d 2 83 2791
+2f7f 2 84 2791
+2f81 2 85 2791
+2f83 2 86 2791
+2f85 3 87 2791
+2f88 2 88 2791
+2f8a 2 89 2791
+2f8c 2 90 2791
+2f8e 3 92 2791
+2f91 3 94 2791
+2f94 2 95 2791
+2f96 2 96 2791
+2f98 2 97 2791
+2f9a 3 98 2791
+2f9d 2 99 2791
+2f9f 3 100 2791
+2fa2 3 101 2791
+2fa5 2 102 2791
+2fa7 4 103 2791
+2fab 2 107 2791
+2fad 2 108 2791
+2faf 2 115 2791
+2fb1 2 116 2791
+2fb3 3 117 2791
+2fb6 1 118 2791
+2fb7 6 122 2791
+2fbd 2 123 2791
+2fbf 2 125 2791
+2fc1 3 126 2791
+2fc4 2 127 2791
+2fc6 2 128 2791
+2fc8 3 129 2791
+2fcb 2 130 2791
+2fcd 2 131 2791
+2fcf 6 133 2791
+2fd5 2 134 2791
+2fd7 3 139 2791
+2fda 3 140 2791
+2fdd 2 141 2791
+2fdf 2 142 2791
+2fe1 2 143 2791
+2fe3 2 144 2791
+2fe5 3 145 2791
+2fe8 2 146 2791
+2fea 2 147 2791
+2fec 2 148 2791
+2fee 3 149 2791
+2ff1 2 150 2791
+FUNC 2b8b 3a 0 free
+2b8b 5 40 389
+2b90 6 45 389
+2b96 11 50 389
+2ba7 4 51 389
+2bab 18 53 389
+2bc3 2 55 389
+FUNC 23da 42 0 __CxxUnhandledExceptionFilter(_EXCEPTION_POINTERS *)
+23da 5 67 4397
+23df 32 68 4397
+2411 5 69 4397
+2416 2 72 4397
+2418 4 73 4397
+FUNC 283a e 0 __CxxSetUnhandledExceptionFilter
+283a 0 86 4397
+283a b 89 4397
+2845 2 90 4397
+2847 1 91 4397
+FUNC 18d9 2b 0 __crtCorExitProcess
+18d9 5 675 4186
+18de b 679 4186
+18e9 4 680 4186
+18ed c 681 4186
+18f9 4 682 4186
+18fd 5 683 4186
+1902 2 693 4186
+FUNC 5175 18 0 __crtExitProcess
+5175 5 698 4186
+517a 9 699 4186
+5183 a 708 4186
+FUNC 48f0 9 0 _lockexit
+48f0 0 758 4186
+48f0 8 759 4186
+48f8 1 760 4186
+FUNC 406d 9 0 _unlockexit
+406d 0 784 4186
+406d 8 785 4186
+4075 1 786 4186
+FUNC 1fa0 33 0 _init_pointers
+1fa0 3 809 4186
+1fa3 7 810 4186
+1faa 6 812 4186
+1fb0 6 813 4186
+1fb6 6 814 4186
+1fbc 6 815 4186
+1fc2 6 816 4186
+1fc8 a 817 4186
+1fd2 1 818 4186
+FUNC 5043 24 0 _initterm_e
+5043 6 908 4186
+5049 b 917 4186
+5054 6 922 4186
+505a 2 923 4186
+505c 3 924 4186
+505f 6 917 4186
+5065 2 928 4186
+FUNC 147f 97 0 _cinit
+147f 5 258 4186
+1484 18 268 4186
+149c a 270 4186
+14a6 5 272 4186
+14ab 11 278 4186
+14bc 2 279 4186
+14be 2 280 4186
+14c0 c 283 4186
+14cc 20 288 4186
+14ec 1a 301 4186
+1506 c 303 4186
+1512 2 307 4186
+1514 2 308 4186
+FUNC 4504 140 0 doexit
+4504 c 489 4186
+4510 8 507 4186
+4518 4 508 4186
+451c f 510 4186
+452b 5 511 4186
+4530 8 514 4186
+4538 a 516 4186
+4542 13 532 4186
+4555 4 533 4186
+4559 d 534 4186
+4566 3 538 4186
+4569 3 539 4186
+456c 11 547 4186
+457d 2 550 4186
+457f 4 552 4186
+4583 6 559 4186
+4589 7 562 4186
+4590 2 565 4186
+4592 a 567 4186
+459c 8 568 4186
+45a4 a 570 4186
+45ae 6 573 4186
+45b4 8 574 4186
+45bc 5 576 4186
+45c1 21 582 4186
+45e2 21 590 4186
+4603 c 608 4186
+460f 6 613 4186
+4615 a 617 4186
+461f 8 619 4186
+4627 8 621 4186
+462f 6 609 4186
+4635 9 610 4186
+463e 6 622 4186
+FUNC 315a 16 0 exit
+315a 5 392 4186
+315f f 393 4186
+316e 2 394 4186
+FUNC 1778 16 0 _exit
+1778 5 400 4186
+177d f 401 4186
+178c 2 402 4186
+FUNC 3229 f 0 _cexit
+3229 0 407 4186
+3229 e 408 4186
+3237 1 409 4186
+FUNC 405e f 0 _c_exit
+405e 0 414 4186
+405e e 415 4186
+406c 1 416 4186
+FUNC 2abf 1e 0 _amsg_exit
+2abf 5 439 4186
+2ac4 5 440 4186
+2ac9 9 441 4186
+2ad2 b 442 4186
+FUNC 424c 26 0 _GET_RTERRMSG
+424c 5 165 4012
+4251 2 168 4012
+4253 c 169 4012
+425f 6 168 4012
+4265 2 172 4012
+4267 2 173 4012
+4269 7 170 4012
+4270 2 173 4012
+FUNC 268b 1af 0 _NMSG_WRITE
+268b 1b 196 4012
+26a6 8 197 4012
+26ae 11 199 4012
+26bf 2a 226 4012
+26e9 c 263 4012
+26f5 20 272 4012
+2715 21 275 4012
+2736 1f 276 4012
+2755 d 279 4012
+2762 d 281 4012
+276f 1d 282 4012
+278c 18 285 4012
+27a4 14 286 4012
+27b8 15 290 4012
+27cd a 272 4012
+27d7 a 228 4012
+27e1 9 229 4012
+27ea 2 244 4012
+27ec a 246 4012
+27f6 6 248 4012
+27fc 8 244 4012
+2804 27 260 4012
+282b f 294 4012
+FUNC 21bd 39 0 _FF_MSGBANNER
+21bd 0 134 4012
+21bd 22 138 4012
+21df a 140 4012
+21e9 c 141 4012
+21f5 1 143 4012
+FUNC 3ed7 14a 0 _XcptFilter
+3ed7 6 195 2369
+3edd 7 202 2369
+3ee4 8 203 2369
+3eec 2a 208 2369
+3f16 4 210 2369
+3f1a 3 216 2369
+3f1d 4 223 2369
+3f21 7 224 2369
+3f28 5 232 2369
+3f2d 4 237 2369
+3f31 8 238 2369
+3f39 3 244 2369
+3f3c 6 248 2369
+3f42 a 263 2369
+3f4c c 272 2369
+3f58 3 280 2369
+3f5b 13 283 2369
+3f6e c 310 2369
+3f7a 9 312 2369
+3f83 7 314 2369
+3f8a 9 316 2369
+3f93 7 318 2369
+3f9a 9 320 2369
+3fa3 7 322 2369
+3faa 9 324 2369
+3fb3 7 326 2369
+3fba 9 328 2369
+3fc3 7 330 2369
+3fca 9 332 2369
+3fd3 7 334 2369
+3fda 9 336 2369
+3fe3 7 338 2369
+3fea 9 340 2369
+3ff3 7 342 2369
+3ffa 7 344 2369
+4001 8 353 2369
+4009 3 358 2369
+400c 2 360 2369
+400e 4 365 2369
+4012 4 366 2369
+4016 4 372 2369
+401a 5 374 2369
+401f 2 376 2369
+FUNC 255c dc 0 _setenvp
+255c 0 77 3838
+255c 9 85 3838
+2565 6 86 3838
+256b 9 91 3838
+2574 4 98 3838
+2578 8 99 3838
+2580 4 110 3838
+2584 1 111 3838
+2585 b 112 3838
+2590 6 108 3838
+2596 15 117 3838
+25ab 2 118 3838
+25ad 9 121 3838
+25b6 6 123 3838
+25bc 9 125 3838
+25c5 10 127 3838
+25d5 f 133 3838
+25e4 3 134 3838
+25e7 7 121 3838
+25ee b 138 3838
+25f9 7 139 3838
+2600 3 142 3838
+2603 a 149 3838
+260d 2 152 3838
+260f 2 138 3838
+2611 3 153 3838
+2614 b 129 3838
+261f 7 130 3838
+2626 5 131 3838
+262b d 133 3838
+FUNC 54b7 19a 0 parse_cmdline
+54b7 6 221 3891
+54bd 9 229 3891
+54c6 2 232 3891
+54c8 17 234 3891
+54df 3 253 3891
+54e2 5 255 3891
+54e7 5 257 3891
+54ec 9 258 3891
+54f5 2 259 3891
+54f7 2 261 3891
+54f9 4 262 3891
+54fd 8 263 3891
+5505 2 265 3891
+5507 f 267 3891
+5516 2 268 3891
+5518 6 269 3891
+551e a 270 3891
+5528 1 271 3891
+5529 1a 275 3891
+5543 4 280 3891
+5547 4 281 3891
+554b 4 284 3891
+554f 9 289 3891
+5558 a 290 3891
+5562 3 291 3891
+5565 1 278 3891
+5566 2 279 3891
+5568 9 294 3891
+5571 6 298 3891
+5577 9 299 3891
+5580 2 300 3891
+5582 3 314 3891
+5585 4 318 3891
+5589 1 321 3891
+558a 1 322 3891
+558b 5 319 3891
+5590 5 324 3891
+5595 5 327 3891
+559a e 328 3891
+55a8 2 329 3891
+55aa 2 330 3891
+55ac d 332 3891
+55b9 2 335 3891
+55bb 5 339 3891
+55c0 4 340 3891
+55c4 4 341 3891
+55c8 6 342 3891
+55ce 3 341 3891
+55d1 14 346 3891
+55e5 4 351 3891
+55e9 12 353 3891
+55fb b 354 3891
+5606 2 355 3891
+5608 a 357 3891
+5612 2 358 3891
+5614 a 359 3891
+561e 1 360 3891
+561f 2 361 3891
+5621 5 364 3891
+5626 1 366 3891
+5627 5 375 3891
+562c 4 379 3891
+5630 7 380 3891
+5637 2 381 3891
+5639 8 382 3891
+5641 9 385 3891
+564a 3 386 3891
+564d 2 387 3891
+564f 2 388 3891
+FUNC 15b7 bb 0 _setargv
+15b7 9 88 3891
+15c0 c 97 3891
+15cc 5 98 3891
+15d1 18 104 3891
+15e9 19 120 3891
+1602 11 127 3891
+1613 15 134 3891
+1628 a 138 3891
+1632 2 140 3891
+1634 9 142 3891
+163d 2 143 3891
+163f 2 144 3891
+1641 13 151 3891
+1654 c 156 3891
+1660 6 160 3891
+1666 4 175 3891
+166a 6 136 3891
+1670 2 176 3891
+FUNC 220c 97 0 __crtGetEnvironmentStringsA
+220c a 40 943
+2216 e 49 943
+2224 4 50 943
+2228 5 54 943
+222d 8 55 943
+2235 9 56 943
+223e 1b 70 943
+2259 12 74 943
+226b 12 88 943
+227d 9 90 943
+2286 3 91 943
+2289 7 94 943
+2290 5 95 943
+2295 7 76 943
+229c 5 77 943
+22a1 2 96 943
+FUNC 1cf7 245 0 _ioinit
+1cf7 9 111 792
+1d00 a 122 792
+1d0a 13 129 792
+1d1d 8 131 792
+1d25 15 137 792
+1d3a 3 134 792
+1d3d a 139 792
+1d47 3 141 792
+1d4a 6 143 792
+1d50 4 145 792
+1d54 3 146 792
+1d57 1b 147 792
+1d72 15 155 792
+1d87 2 160 792
+1d89 6 166 792
+1d8f 2 167 792
+1d91 e 173 792
+1d9f d 179 792
+1dac f 185 792
+1dbb 7 199 792
+1dc2 c 201 792
+1dce 3 198 792
+1dd1 4 203 792
+1dd5 4 205 792
+1dd9 4 206 792
+1ddd 10 209 792
+1ded 12 210 792
+1dff b 179 792
+1e0a 2 280 792
+1e0c 6 191 792
+1e12 6 217 792
+1e18 29 230 792
+1e41 14 232 792
+1e55 7 233 792
+1e5c 8 234 792
+1e64 17 237 792
+1e7b 3 239 792
+1e7e c 217 792
+1e8a 2 249 792
+1e8c b 251 792
+1e97 c 254 792
+1ea3 6 302 792
+1ea9 4 258 792
+1ead 30 262 792
+1edd c 273 792
+1ee9 6 274 792
+1eef 5 275 792
+1ef4 4 276 792
+1ef8 13 280 792
+1f0b 3 282 792
+1f0e 2 284 792
+1f10 4 293 792
+1f14 6 294 792
+1f1a a 249 792
+1f24 c 309 792
+1f30 5 311 792
+1f35 2 312 792
+1f37 5 281 792
+FUNC 137a 26 0 _RTC_Initialize
+FUNC 2034 26 0 _RTC_Terminate
+FUNC 3d7a 9 0 _encoded_null
+3d7a 0 79 3774
+3d7a 8 80 3774
+3d82 1 81 3774
+FUNC 156e 9 4 __crtTlsAlloc
+156e 0 95 3774
+156e 6 96 3774
+1574 3 97 3774
+FUNC 380c 34 0 __set_flsgetvalue
+380c 3 143 3774
+380f e 145 3774
+381d 4 146 3774
+3821 e 148 3774
+382f d 149 3774
+383c 3 151 3774
+383f 1 155 3774
+FUNC 4021 3d 0 _mtterm
+4021 0 329 3774
+4021 a 336 3774
+402b f 337 3774
+403a 7 338 3774
+4041 a 342 3774
+404b 7 343 3774
+4052 7 344 3774
+4059 5 352 3774
+FUNC 53a0 b4 0 _initptd
+53a0 c 379 3774
+53ac b 381 3774
+53b7 a 384 3774
+53c1 4 385 3774
+53c5 6 386 3774
+53cb 3 391 3774
+53ce 7 395 3774
+53d5 7 396 3774
+53dc 7 397 3774
+53e3 8 399 3774
+53eb 4 400 3774
+53ef 9 402 3774
+53f8 c 404 3774
+5404 8 411 3774
+540c 3 412 3774
+540f 6 413 3774
+5415 4 421 3774
+5419 8 422 3774
+5421 9 423 3774
+542a c 425 3774
+5436 6 428 3774
+543c 6 404 3774
+5442 9 406 3774
+544b 9 426 3774
+FUNC 13cc 79 0 _getptd_noexit
+13cc 4 448 3774
+13d0 6 452 3774
+13d6 15 460 3774
+13eb 14 472 3774
+13ff 19 475 3774
+1418 a 481 3774
+1422 6 483 3774
+1428 6 484 3774
+142e 2 486 3774
+1430 7 492 3774
+1437 2 493 3774
+1439 8 498 3774
+1441 3 500 3774
+1444 1 501 3774
+FUNC 2848 1a 0 _getptd
+2848 3 522 3774
+284b 7 523 3774
+2852 4 524 3774
+2856 8 525 3774
+285e 3 527 3774
+2861 1 528 3774
+FUNC 4272 12f 4 _freefls
+4272 c 556 3774
+427e b 567 3774
+4289 7 568 3774
+4290 7 569 3774
+4297 7 571 3774
+429e 7 572 3774
+42a5 7 574 3774
+42ac 7 575 3774
+42b3 7 577 3774
+42ba 7 578 3774
+42c1 7 580 3774
+42c8 7 581 3774
+42cf 7 583 3774
+42d6 7 584 3774
+42dd 7 586 3774
+42e4 7 587 3774
+42eb a 589 3774
+42f5 7 590 3774
+42fc 8 592 3774
+4304 4 593 3774
+4308 1a 596 3774
+4322 7 597 3774
+4329 c 599 3774
+4335 8 603 3774
+433d 7 605 3774
+4344 7 606 3774
+434b 7 608 3774
+4352 15 611 3774
+4367 7 612 3774
+436e c 615 3774
+437a 7 619 3774
+4381 8 622 3774
+4389 3 599 3774
+438c 9 600 3774
+4395 3 615 3774
+4398 9 616 3774
+FUNC 4980 17b 0 _mtinit
+4980 3 203 3774
+4983 d 211 3774
+4990 4 212 3774
+4994 5 213 3774
+4999 3 214 3774
+499c 2 300 3774
+499e e 218 3774
+49ac d 221 3774
+49b9 d 224 3774
+49c6 d 227 3774
+49d3 2a 228 3774
+49fd a 231 3774
+4a07 1a 235 3774
+4a21 25 244 3774
+4a46 5 249 3774
+4a4b e 256 3774
+4a59 d 257 3774
+4a66 d 258 3774
+4a73 12 259 3774
+4a85 7 266 3774
+4a8c 2 268 3774
+4a8e 1d 274 3774
+4aab 2 276 3774
+4aad 29 284 3774
+4ad6 a 294 3774
+4ae0 6 296 3774
+4ae6 6 297 3774
+4aec 5 299 3774
+4af1 5 286 3774
+4af6 4 245 3774
+4afa 1 300 3774
+FUNC 252f 1e 0 _heap_init
+252f 0 40 453
+252f 1d 44 453
+254c 1 60 453
+FUNC 1c7a 45 0 _SEH_prolog4
+FUNC 1cbf 14 0 _SEH_epilog4
+FUNC 1aeb 18f 0 _except_handler4
+FUNC 2ff3 9b 0 __security_init_cookie
+2ff3 8 97 1455
+2ffb 21 114 1455
+301c 7 116 1455
+3023 3 117 1455
+3026 a 127 1455
+3030 6 132 1455
+3036 8 135 1455
+303e 8 136 1455
+3046 8 137 1455
+304e a 139 1455
+3058 8 144 1455
+3060 4 161 1455
+3064 7 163 1455
+306b 4 166 1455
+306f c 168 1455
+307b 6 172 1455
+3081 b 173 1455
+308c 2 175 1455
+FUNC 1214 f 0 _initp_misc_invarg
+1214 5 64 3583
+1219 8 65 3583
+1221 2 66 3583
+FUNC 4afb 129 0 _call_reportfault
+4afb 16 164 3583
+4b11 9 166 3583
+4b1a 7 167 3583
+4b21 17 170 3583
+4b38 1b 172 3583
+4b53 6 179 3583
+4b59 6 180 3583
+4b5f 6 181 3583
+4b65 6 182 3583
+4b6b 6 183 3583
+4b71 6 184 3583
+4b77 7 185 3583
+4b7e 7 186 3583
+4b85 7 187 3583
+4b8c 7 188 3583
+4b93 7 189 3583
+4b9a 7 190 3583
+4ba1 1 191 3583
+4ba2 6 192 3583
+4ba8 3 198 3583
+4bab 19 199 3583
+4bc4 9 201 3583
+4bcd 9 240 3583
+4bd6 9 241 3583
+4bdf 6 242 3583
+4be5 6 245 3583
+4beb a 248 3583
+4bf5 d 250 3583
+4c02 d 254 3583
+4c0f 7 255 3583
+4c16 e 257 3583
+FUNC 5150 25 0 _invoke_watson
+5150 3 146 3583
+5153 12 155 3583
+5165 f 156 3583
+5174 1 157 3583
+FUNC 3261 2d 0 _invalid_parameter
+3261 5 96 3583
+3266 c 103 3583
+3272 4 104 3583
+3276 1 111 3583
+3277 2 106 3583
+3279 15 110 3583
+FUNC 146f 10 0 _invalid_parameter_noinfo
+146f 0 120 3583
+146f f 121 3583
+147e 1 122 3583
+FUNC 2af4 4a 0 _mtinitlocks
+2af4 4 136 3954
+2af8 7 143 3954
+2aff a 144 3954
+2b09 9 145 3954
+2b12 14 147 3954
+2b26 6 143 3954
+2b2c 3 156 3954
+2b2f 3 157 3954
+2b32 c 150 3954
+FUNC 4d69 57 0 _mtdeletelocks
+4d69 3 187 3954
+4d6c d 193 3954
+4d79 c 195 3954
+4d85 3 199 3954
+4d88 6 205 3954
+4d8e 4 206 3954
+4d92 b 193 3954
+4d9d 6 214 3954
+4da3 c 216 3954
+4daf 3 220 3954
+4db2 b 214 3954
+4dbd 3 223 3954
+FUNC 2add 17 0 _unlock
+2add 5 370 3954
+2ae2 10 374 3954
+2af2 2 375 3954
+FUNC 12b8 c2 0 _mtinitlocknum
+12b8 c 258 3954
+12c4 6 260 3954
+12ca a 268 3954
+12d4 5 269 3954
+12d9 7 270 3954
+12e0 c 271 3954
+12ec e 275 3954
+12fa 4 276 3954
+12fe e 278 3954
+130c b 279 3954
+1317 4 280 3954
+131b 8 283 3954
+1323 3 284 3954
+1326 4 286 3954
+132a 10 287 3954
+133a 7 288 3954
+1341 b 289 3954
+134c 3 290 3954
+134f 2 291 3954
+1351 2 292 3954
+1353 2 295 3954
+1355 7 296 3954
+135c c 299 3954
+1368 3 303 3954
+136b 6 304 3954
+1371 9 300 3954
+FUNC 31f6 33 0 _lock
+31f6 5 332 3954
+31fb 10 337 3954
+320b b 339 3954
+3216 8 340 3954
+321e 9 347 3954
+3227 2 348 3954
+FUNC 2a1e 5f 0 strcpy_s
+2a1e 5 13 2523
+2a23 23 18 2523
+2a46 b 19 2523
+2a51 11 23 2523
+2a62 4 27 2523
+2a66 3 29 2523
+2a69 e 30 2523
+2a77 4 33 2523
+2a7b 2 34 2523
+FUNC 4eba 8b 0 strlen
+4eba 0 54 2796
+4eba 4 63 2796
+4ebe 6 64 2796
+4ec4 2 65 2796
+4ec6 2 69 2796
+4ec8 3 70 2796
+4ecb 2 71 2796
+4ecd 2 72 2796
+4ecf 6 73 2796
+4ed5 2 74 2796
+4ed7 13 76 2796
+4eea 2 81 2796
+4eec 5 82 2796
+4ef1 2 83 2796
+4ef3 3 84 2796
+4ef6 2 85 2796
+4ef8 3 86 2796
+4efb 5 87 2796
+4f00 2 88 2796
+4f02 3 90 2796
+4f05 2 91 2796
+4f07 2 92 2796
+4f09 2 93 2796
+4f0b 2 94 2796
+4f0d 5 95 2796
+4f12 2 96 2796
+4f14 5 97 2796
+4f19 2 98 2796
+4f1b 2 99 2796
+4f1d 3 103 2796
+4f20 4 104 2796
+4f24 2 105 2796
+4f26 1 106 2796
+4f27 3 108 2796
+4f2a 4 109 2796
+4f2e 2 110 2796
+4f30 1 111 2796
+4f31 3 113 2796
+4f34 4 114 2796
+4f38 2 115 2796
+4f3a 1 116 2796
+4f3b 3 118 2796
+4f3e 4 119 2796
+4f42 2 120 2796
+4f44 1 121 2796
+FUNC 2312 94 0 malloc
+2312 6 81 504
+2318 a 85 504
+2322 3d 89 504
+235f 4 94 504
+2363 b 98 504
+236e b 105 504
+2379 2 109 504
+237b 7 100 504
+2382 7 119 504
+2389 6 121 504
+238f 7 111 504
+2396 b 112 504
+23a1 3 113 504
+23a4 2 122 504
+FUNC 43b2 90 0 _local_unwind4
+FUNC 4442 46 0 _unwind_handler4
+FUNC 4488 1c 4 _seh_longjmp_unwind4
+FUNC 44a4 17 0 _EH4_CallFilterFunc
+FUNC 44bb 19 0 _EH4_TransferToHandler
+FUNC 44d4 19 0 _EH4_GlobalUnwind2
+FUNC 44ed 17 8 _EH4_LocalUnwind
+FUNC 2a7d 42 0 _get_errno_from_oserr
+2a7d 5 119 224
+2a82 5 123 224
+2a87 9 124 224
+2a90 6 123 224
+2a96 8 133 224
+2a9e 3 134 224
+2aa1 2 139 224
+2aa3 7 125 224
+2aaa 2 139 224
+2aac 11 135 224
+2abd 2 139 224
+FUNC 3095 13 0 _errno
+3095 0 279 224
+3095 5 280 224
+309a 4 281 224
+309e 5 282 224
+30a3 1 287 224
+30a4 3 284 224
+30a7 1 287 224
+FUNC 31bd 39 0 terminate()
+31bd c 84 4591
+31c9 8 89 4591
+31d1 4 90 4591
+31d5 4 95 4591
+31d9 2 99 4591
+31db 2 100 4591
+31dd 7 101 4591
+31e4 7 106 4591
+31eb 5 114 4591
+31f0 6 115 4591
+FUNC 43a1 11 0 _initp_eh_hooks
+43a1 0 69 4591
+43a1 10 70 4591
+43b1 1 71 4591
+FUNC 215a 1e 0 _initp_misc_winsig
+215a 5 57 2311
+215f 8 58 2311
+2167 5 59 2311
+216c 5 60 2311
+2171 5 61 2311
+2176 2 62 2311
+FUNC 24f8 37 0 siglookup
+24f8 5 629 2311
+24fd a 630 2311
+2507 14 639 2311
+251b e 642 2311
+2529 2 646 2311
+252b 2 651 2311
+252d 2 652 2311
+FUNC 48e3 d 0 __get_sigabrt
+48e3 0 669 2311
+48e3 c 670 2311
+48ef 1 671 2311
+FUNC 518d 1a3 0 raise
+518d c 450 2311
+5199 5 457 2311
+519e 3 458 2311
+51a1 1f 460 2311
+51c0 a 486 2311
+51ca 4 487 2311
+51ce 8 488 2311
+51d6 a 463 2311
+51e0 2 465 2311
+51e2 10 490 2311
+51f2 2 491 2311
+51f4 f 460 2311
+5203 12 498 2311
+5215 a 474 2311
+521f 2 476 2311
+5221 a 468 2311
+522b 2 470 2311
+522d a 479 2311
+5237 7 480 2311
+523e a 500 2311
+5248 2 508 2311
+524a 4 507 2311
+524e 6 508 2311
+5254 5 513 2311
+5259 7 518 2311
+5260 5 525 2311
+5265 7 526 2311
+526c 5 528 2311
+5271 f 539 2311
+5280 6 540 2311
+5286 3 541 2311
+5289 5 547 2311
+528e 6 548 2311
+5294 7 549 2311
+529b 5 557 2311
+52a0 1a 564 2311
+52ba d 567 2311
+52c7 5 564 2311
+52cc 7 570 2311
+52d3 c 573 2311
+52df 5 578 2311
+52e4 8 584 2311
+52ec 2 585 2311
+52ee 6 573 2311
+52f4 6 574 2311
+52fa 9 575 2311
+5303 5 586 2311
+5308 f 593 2311
+5317 6 594 2311
+531d 5 599 2311
+5322 6 600 2311
+5328 2 603 2311
+532a 6 604 2311
+FUNC 254d f 0 _initp_misc_rand_s
+254d 5 58 2186
+2552 8 59 2186
+255a 2 60 2186
+FUNC 37b7 f 0 _initp_misc_purevirt
+37b7 5 179 1627
+37bc 8 180 1627
+37c4 2 181 1627
+FUNC 24e9 f 0 _initp_heap_handler
+24e9 5 31 2820
+24ee 8 32 2820
+24f6 2 33 2820
+FUNC 4644 28 0 _callnewh
+4644 5 131 2820
+4649 c 133 2820
+4655 e 135 2820
+4663 3 138 2820
+4666 2 139 2820
+4668 2 136 2820
+466a 2 139 2820
+FUNC 4c24 b6 0 _onexit_nolock
+4c24 8 100 1969
+4c2c f 103 1969
+4c3b f 104 1969
+4c4a 14 108 1969
+4c5e 10 118 1969
+4c6e d 123 1969
+4c7b 13 125 1969
+4c8e 3 130 1969
+4c91 13 132 1969
+4ca4 3 143 1969
+4ca7 f 145 1969
+4cb6 10 152 1969
+4cc6 8 153 1969
+4cce 5 155 1969
+4cd3 5 110 1969
+4cd8 2 156 1969
+FUNC 11e3 31 0 __onexitinit
+11e3 3 201 1969
+11e6 d 204 1969
+11f3 11 205 1969
+1204 4 207 1969
+1208 4 212 1969
+120c 1 217 1969
+120d 3 214 1969
+1210 3 216 1969
+1213 1 217 1969
+FUNC 5114 3c 0 _onexit
+5114 c 81 1969
+5120 5 84 1969
+5125 4 86 1969
+5129 c 87 1969
+5135 c 89 1969
+5141 3 93 1969
+5144 6 94 1969
+514a 6 90 1969
+FUNC 3ec0 17 0 atexit
+3ec0 5 161 1969
+3ec5 10 162 1969
+3ed5 2 163 1969
+FUNC 28a5 23 0 _initp_misc_cfltcvt_tab
+28a5 4 54 2419
+28a9 2 56 2419
+28ab 1a 58 2419
+28c5 3 60 2419
+FUNC 30a8 35 0 _ValidateImageBase
+30a8 5 44 2079
+30ad d 50 2079
+30ba 2 52 2079
+30bc 2 68 2079
+30be 5 55 2079
+30c3 6 56 2079
+30c9 2 58 2079
+30cb 10 62 2079
+30db 2 68 2079
+FUNC 32a9 44 0 _FindPESection
+32a9 5 92 2079
+32ae 8 99 2079
+32b6 18 108 2079
+32ce 10 111 2079
+32de 8 108 2079
+32e6 5 123 2079
+32eb 2 124 2079
+FUNC 5651 bc 0 _IsNonwritableInCurrentImage
+5651 35 149 2079
+5686 7 156 2079
+568d f 164 2079
+569c 2 166 2079
+569e 8 174 2079
+56a6 e 175 2079
+56b4 2 176 2079
+56b6 2 178 2079
+56b8 12 185 2079
+56ca 12 195 2079
+56dc 16 187 2079
+56f2 9 193 2079
+56fb 12 195 2079
+FUNC 4076 16c 0 __crtMessageBoxW
+4076 12 41 1053
+4088 14 49 1053
+409c 4 56 1053
+40a0 c 62 1053
+40ac d 64 1053
+40b9 2 65 1053
+40bb 6 67 1053
+40c1 10 72 1053
+40d1 6 76 1053
+40d7 9 78 1053
+40e0 10 81 1053
+40f0 10 84 1053
+4100 d 88 1053
+410d 8 93 1053
+4115 4 95 1053
+4119 10 97 1053
+4129 1a 110 1053
+4143 3 113 1053
+4146 c 114 1053
+4152 8 116 1053
+415a 1f 121 1053
+4179 7 130 1053
+4180 2 132 1053
+4182 a 134 1053
+418c 3 136 1053
+418f 4 137 1053
+4193 5 139 1053
+4198 e 143 1053
+41a6 3 145 1053
+41a9 4 146 1053
+41ad 8 148 1053
+41b5 8 155 1053
+41bd 4 156 1053
+41c1 10 158 1053
+41d1 2 163 1053
+41d3 f 166 1053
+FUNC 3943 75 0 wcscat_s
+3943 6 13 2468
+3949 22 18 2468
+396b 2 46 2468
+396d e 19 2468
+397b 2 21 2468
+397d 6 23 2468
+3983 3 25 2468
+3986 3 26 2468
+3989 2 29 2468
+398b 2 32 2468
+398d 14 35 2468
+39a1 9 41 2468
+39aa e 42 2468
+FUNC 241c cd 0 wcsncpy_s
+241c 5 13 2578
+2421 16 17 2578
+2437 5 65 2578
+243c 2 66 2578
+243e 1e 24 2578
+245c 4 25 2578
+2460 5 28 2578
+2465 2 29 2578
+2467 e 31 2578
+2475 2 33 2578
+2477 5 35 2578
+247c 16 37 2578
+2492 2 41 2578
+2494 19 45 2578
+24ad 4 48 2578
+24b1 5 50 2578
+24b6 8 54 2578
+24be a 58 2578
+24c8 d 59 2578
+24d5 3 61 2578
+24d8 11 62 2578
+FUNC 328e 1b 0 wcslen
+328e 5 41 2728
+3293 3 42 2728
+3296 b 44 2728
+32a1 6 46 2728
+32a7 2 47 2728
+FUNC 5454 63 0 wcscpy_s
+5454 6 13 2523
+545a 22 18 2523
+547c 2 34 2523
+547e c 19 2523
+548a 16 23 2523
+54a0 9 29 2523
+54a9 e 30 2523
+FUNC 3d3b 3f 0 _set_error_mode
+3d3b 5 43 1181
+3d40 11 46 1181
+3d51 5 54 1181
+3d56 2 61 1181
+3d58 5 50 1181
+3d5d 6 51 1181
+3d63 2 61 1181
+3d65 13 57 1181
+3d78 2 61 1181
+FUNC 28c8 f 0 __security_check_cookie
+28c8 0 52 892
+28c8 6 55 892
+28ce 2 56 892
+28d0 2 57 892
+28d2 5 59 892
+FUNC 2178 45 0 _malloc_crt
+2178 7 39 333
+217f 2 40 333
+2181 b 44 333
+218c c 45 333
+2198 1a 46 333
+21b2 5 47 333
+21b7 4 50 333
+21bb 2 51 333
+FUNC 210e 4c 0 _calloc_crt
+210e 7 54 333
+2115 2 55 333
+2117 12 61 333
+2129 c 62 333
+2135 1a 63 333
+214f 5 64 333
+2154 4 67 333
+2158 2 68 333
+FUNC 4e39 4e 0 _realloc_crt
+4e39 7 71 333
+4e40 2 72 333
+4e42 f 76 333
+4e51 11 77 333
+4e62 1a 78 333
+4e7c 5 79 333
+4e81 4 82 333
+4e85 2 83 333
+FUNC 2bc5 2f 0 CPtoLCID
+2bc5 0 329 3326
+2bc5 14 330 3326
+2bd9 2 345 3326
+2bdb 1 346 3326
+2bdc 5 342 3326
+2be1 1 346 3326
+2be2 5 339 3326
+2be7 1 346 3326
+2be8 5 336 3326
+2bed 1 346 3326
+2bee 5 333 3326
+2bf3 1 346 3326
+FUNC 1f3c 64 0 setSBCS
+1f3c 6 363 3326
+1f42 11 368 3326
+1f53 1b 379 3326
+1f6e 12 381 3326
+1f80 9 382 3326
+1f89 b 384 3326
+1f94 9 385 3326
+1f9d 3 386 3326
+FUNC 466c 190 0 setSBUpLow
+466c 17 402 3326
+4683 10 412 3326
+4693 f 415 3326
+46a2 c 416 3326
+46ae 11 420 3326
+46bf 6 419 3326
+46c5 20 421 3326
+46e5 a 420 3326
+46ef 20 427 3326
+470f 23 432 3326
+4732 25 437 3326
+4757 2 442 3326
+4759 d 443 3326
+4766 5 445 3326
+476b 9 446 3326
+4774 5 448 3326
+4779 5 450 3326
+477e e 451 3326
+478c 2 453 3326
+478e 7 454 3326
+4795 5 442 3326
+479a 8 456 3326
+47a2 12 472 3326
+47b4 17 461 3326
+47cb 5 463 3326
+47d0 5 464 3326
+47d5 5 466 3326
+47da 5 468 3326
+47df 5 469 3326
+47e4 2 471 3326
+47e6 3 472 3326
+47e9 5 460 3326
+47ee e 474 3326
+FUNC 3d83 a4 0 __updatetmbcinfo
+3d83 c 495 3326
+3d8f 7 498 3326
+3d96 10 499 3326
+3da6 3 532 3326
+3da9 4 535 3326
+3dad 8 537 3326
+3db5 2 540 3326
+3db7 6 541 3326
+3dbd 8 500 3326
+3dc5 4 502 3326
+3dc9 e 505 3326
+3dd7 17 511 3326
+3dee 7 516 3326
+3df5 11 523 3326
+3e06 7 524 3326
+3e0d 11 527 3326
+3e1e 9 529 3326
+FUNC 48f9 87 0 _LocaleUpdate::_LocaleUpdate(localeinfo_struct *)
+48f9 5 240 111
+48fe e 241 111
+490c 8 243 111
+4914 5 244 111
+4919 6 245 111
+491f 1c 247 111
+493b 21 248 111
+495c 9 249 111
+4965 4 251 111
+4969 4 252 111
+496d 2 255 111
+496f a 257 111
+4979 7 259 111
+FUNC 10e5 7c 0 getSystemCP
+10e5 9 282 3326
+10ee b 284 3326
+10f9 6 285 3326
+10ff 5 289 3326
+1104 a 291 3326
+110e 14 292 3326
+1122 5 295 3326
+1127 a 297 3326
+1131 8 298 3326
+1139 5 302 3326
+113e 12 305 3326
+1150 f 308 3326
+115f 2 309 3326
+FUNC 3b52 1e9 0 _setmbcp_nolock
+3b52 17 684 3326
+3b69 b 691 3326
+3b74 9 694 3326
+3b7d 7 696 3326
+3b84 7 697 3326
+3b8b 3 701 3326
+3b8e 2 703 3326
+3b90 c 706 3326
+3b9c d 703 3326
+3ba9 2a 741 3326
+3bd3 13 749 3326
+3be6 f 754 3326
+3bf5 15 759 3326
+3c0a 17 762 3326
+3c21 c 764 3326
+3c2d f 710 3326
+3c3c 15 713 3326
+3c51 9 718 3326
+3c5a 8 721 3326
+3c62 12 722 3326
+3c74 4 721 3326
+3c78 b 718 3326
+3c83 12 713 3326
+3c95 20 729 3326
+3cb5 f 731 3326
+3cc4 7 734 3326
+3ccb 5 735 3326
+3cd0 6 765 3326
+3cd6 4 764 3326
+3cda d 762 3326
+3ce7 8 769 3326
+3cef 7 770 3326
+3cf6 b 773 3326
+3d01 3 776 3326
+3d04 2 778 3326
+3d06 3 780 3326
+3d09 12 783 3326
+3d1b 2 787 3326
+3d1d 6 792 3326
+3d23 6 795 3326
+3d29 3 744 3326
+3d2c f 800 3326
+FUNC 39b8 19a 0 _setmbcp
+39b8 c 572 3326
+39c4 4 573 3326
+39c8 a 577 3326
+39d2 5 579 3326
+39d7 3 580 3326
+39da b 582 3326
+39e5 9 584 3326
+39ee d 590 3326
+39fb 8 592 3326
+3a03 c 594 3326
+3a0f 3 605 3326
+3a12 16 610 3326
+3a28 1a 612 3326
+3a42 7 613 3326
+3a49 3 617 3326
+3a4c 9 618 3326
+3a55 17 620 3326
+3a6c 8 622 3326
+3a74 4 623 3326
+3a78 8 628 3326
+3a80 8 629 3326
+3a88 8 630 3326
+3a90 a 631 3326
+3a9a d 632 3326
+3aa7 3 631 3326
+3aaa c 633 3326
+3ab6 a 634 3326
+3ac0 3 633 3326
+3ac3 c 635 3326
+3acf d 636 3326
+3adc 3 635 3326
+3adf 1c 638 3326
+3afb 7 639 3326
+3b02 6 643 3326
+3b08 3 644 3326
+3b0b e 646 3326
+3b19 9 648 3326
+3b22 2 651 3326
+3b24 5 652 3326
+3b29 8 658 3326
+3b31 7 659 3326
+3b38 b 660 3326
+3b43 2 666 3326
+3b45 4 671 3326
+3b49 3 680 3326
+3b4c 6 681 3326
+FUNC 1cd3 1e 0 __initmbctable
+1cd3 0 841 3326
+1cd3 9 851 3326
+1cdc 8 852 3326
+1ce4 a 853 3326
+1cee 2 858 3326
+1cf0 1 859 3326
+FUNC 2638 53 0 x_ismbbtype_l
+2638 8 213 3271
+2640 b 214 3271
+264b 4 219 3271
+264f 3a 222 3271
+2689 2 223 3271
+FUNC 1516 18 0 _ismbblead
+1516 5 171 3271
+151b 11 172 3271
+152c 2 173 3271
+FUNC 4cda 8f 0 __addlocaleref
+4cda 7 36 1913
+4ce1 d 39 1913
+4cee a 41 1913
+4cf8 3 42 1913
+4cfb a 44 1913
+4d05 3 45 1913
+4d08 a 47 1913
+4d12 3 48 1913
+4d15 a 50 1913
+4d1f 3 51 1913
+4d22 a 53 1913
+4d2c f 55 1913
+4d3b 3 56 1913
+4d3e d 59 1913
+4d4b 3 60 1913
+4d4e 8 53 1913
+4d56 11 63 1913
+4d67 2 64 1913
+FUNC 3e27 99 0 __removelocaleref
+3e27 6 74 1913
+3e2d b 77 1913
+3e38 b 79 1913
+3e43 a 81 1913
+3e4d 3 82 1913
+3e50 a 84 1913
+3e5a 3 85 1913
+3e5d a 87 1913
+3e67 3 88 1913
+3e6a a 90 1913
+3e74 3 91 1913
+3e77 a 93 1913
+3e81 f 95 1913
+3e90 3 96 1913
+3e93 d 99 1913
+3ea0 3 100 1913
+3ea3 8 93 1913
+3eab 10 103 1913
+3ebb 3 106 1913
+3ebe 2 107 1913
+FUNC 178e 14b 0 __freetlocinfo
+178e 7 129 1913
+1795 25 137 1913
+17ba e 140 1913
+17c8 6 142 1913
+17ce d 143 1913
+17db e 147 1913
+17e9 6 149 1913
+17ef d 150 1913
+17fc b 153 1913
+1807 d 154 1913
+1814 e 161 1913
+1822 11 163 1913
+1833 13 164 1913
+1846 e 165 1913
+1854 e 166 1913
+1862 15 173 1913
+1877 6 175 1913
+187d d 176 1913
+188a a 179 1913
+1894 13 182 1913
+18a7 7 184 1913
+18ae 10 192 1913
+18be 7 194 1913
+18c5 8 179 1913
+18cd a 201 1913
+18d7 2 202 1913
+FUNC 3170 4d 0 _updatetlocinfoEx_nolock
+3170 6 216 1913
+3176 e 219 1913
+3184 3 222 1913
+3187 4 223 1913
+318b 9 230 1913
+3194 4 236 1913
+3198 6 238 1913
+319e e 248 1913
+31ac 7 249 1913
+31b3 5 253 1913
+31b8 3 220 1913
+31bb 2 254 1913
+FUNC 4dc0 79 0 __updatetlocinfo
+4dc0 c 281 1913
+4dcc 7 283 1913
+4dd3 10 285 1913
+4de3 8 297 1913
+4deb 4 300 1913
+4def 8 302 1913
+4df7 2 305 1913
+4df9 6 306 1913
+4dff 8 286 1913
+4e07 4 288 1913
+4e0b 14 290 1913
+4e1f e 292 1913
+4e2d 8 294 1913
+4e35 4 295 1913
+FUNC 344e 8 0 _crt_debugger_hook
+344e 0 62 1145
+344e 7 65 1145
+3455 1 66 1145
+FUNC 208a 7a 0 memset
+208a 0 59 2789
+208a 4 68 2789
+208e 4 69 2789
+2092 2 71 2789
+2094 2 72 2789
+2096 2 74 2789
+2098 4 75 2789
+209c 2 78 2789
+209e 2 79 2789
+20a0 6 80 2789
+20a6 2 81 2789
+20a8 7 82 2789
+20af 2 83 2789
+20b1 5 85 2789
+20b6 1 91 2789
+20b7 2 92 2789
+20b9 3 94 2789
+20bc 2 95 2789
+20be 2 97 2789
+20c0 3 98 2789
+20c3 2 99 2789
+20c5 2 101 2789
+20c7 2 103 2789
+20c9 3 104 2789
+20cc 3 105 2789
+20cf 2 106 2789
+20d1 2 110 2789
+20d3 3 111 2789
+20d6 2 113 2789
+20d8 2 115 2789
+20da 3 117 2789
+20dd 2 119 2789
+20df 2 122 2789
+20e1 3 123 2789
+20e4 3 124 2789
+20e7 2 125 2789
+20e9 2 127 2789
+20eb 2 129 2789
+20ed 2 130 2789
+20ef 2 134 2789
+20f1 3 135 2789
+20f4 3 137 2789
+20f7 2 138 2789
+20f9 4 142 2789
+20fd 1 143 2789
+20fe 1 145 2789
+20ff 4 148 2789
+2103 1 150 2789
+FUNC 1223 95 0 _aulldvrm
+1223 0 45 2806
+1223 1 48 2806
+1224 4 80 2806
+1228 2 81 2806
+122a 2 82 2806
+122c 4 83 2806
+1230 4 84 2806
+1234 2 85 2806
+1236 2 86 2806
+1238 2 87 2806
+123a 4 88 2806
+123e 2 89 2806
+1240 2 90 2806
+1242 2 95 2806
+1244 4 96 2806
+1248 2 97 2806
+124a 2 98 2806
+124c 4 99 2806
+1250 2 100 2806
+1252 2 101 2806
+1254 2 108 2806
+1256 4 109 2806
+125a 4 110 2806
+125e 4 111 2806
+1262 2 113 2806
+1264 2 114 2806
+1266 2 115 2806
+1268 2 116 2806
+126a 2 117 2806
+126c 2 118 2806
+126e 2 119 2806
+1270 2 120 2806
+1272 4 129 2806
+1276 2 130 2806
+1278 4 131 2806
+127c 2 132 2806
+127e 2 133 2806
+1280 2 134 2806
+1282 4 142 2806
+1286 2 143 2806
+1288 2 144 2806
+128a 4 145 2806
+128e 2 146 2806
+1290 1 148 2806
+1291 4 149 2806
+1295 4 150 2806
+1299 2 152 2806
+129b 4 161 2806
+129f 4 162 2806
+12a3 2 163 2806
+12a5 2 164 2806
+12a7 3 165 2806
+12aa 2 170 2806
+12ac 2 171 2806
+12ae 2 172 2806
+12b0 2 173 2806
+12b2 2 174 2806
+12b4 1 180 2806
+12b5 3 182 2806
+FUNC 28d7 20 0 _global_unwind2
+FUNC 28f7 45 0 __unwind_handler
+FUNC 293c 84 0 _local_unwind2
+FUNC 29c0 23 0 _abnormal_termination
+FUNC 29e3 9 0 _NLG_Notify1
+FUNC 29ec 1f 0 _NLG_Notify
+PUBLIC 2a03 0 _NLG_Dispatch2
+FUNC 2a0b 3 0 _NLG_Call
+PUBLIC 2a0d 0 _NLG_Return2
+FUNC 2862 33 0 abort
+2862 0 54 1011
+2862 5 71 1011
+2867 4 72 1011
+286b 8 74 1011
+2873 9 81 1011
+287c 11 83 1011
+288d 8 92 1011
+FUNC 3456 361 0 memcpy
+3456 3 101 2787
+3459 1 113 2787
+345a 1 114 2787
+345b 3 116 2787
+345e 3 117 2787
+3461 3 119 2787
+3464 2 129 2787
+3466 2 131 2787
+3468 2 132 2787
+346a 2 134 2787
+346c 2 135 2787
+346e 2 137 2787
+3470 6 138 2787
+3476 6 147 2787
+347c 2 148 2787
+347e 7 150 2787
+3485 2 151 2787
+3487 1 153 2787
+3488 1 154 2787
+3489 3 155 2787
+348c 3 156 2787
+348f 2 157 2787
+3491 1 158 2787
+3492 1 159 2787
+3493 2 160 2787
+3495 5 163 2787
+349a 6 176 2787
+34a0 2 177 2787
+34a2 3 179 2787
+34a5 3 180 2787
+34a8 3 182 2787
+34ab 2 183 2787
+34ad 2 185 2787
+34af 7 187 2787
+34b6 2 205 2787
+34b8 5 206 2787
+34bd 3 208 2787
+34c0 2 209 2787
+34c2 3 211 2787
+34c5 2 212 2787
+34c7 7 214 2787
+34ce 8 218 2787
+34d6 14 222 2787
+34ea 2 229 2787
+34ec 2 230 2787
+34ee 2 232 2787
+34f0 3 233 2787
+34f3 3 235 2787
+34f6 3 236 2787
+34f9 3 238 2787
+34fc 3 239 2787
+34ff 3 241 2787
+3502 3 242 2787
+3505 3 244 2787
+3508 2 245 2787
+350a 2 247 2787
+350c a 249 2787
+3516 2 253 2787
+3518 2 254 2787
+351a 2 256 2787
+351c 3 257 2787
+351f 3 259 2787
+3522 3 260 2787
+3525 3 262 2787
+3528 3 263 2787
+352b 3 265 2787
+352e 2 266 2787
+3530 2 268 2787
+3532 8 270 2787
+353a 2 274 2787
+353c 2 275 2787
+353e 2 277 2787
+3540 3 278 2787
+3543 3 280 2787
+3546 3 281 2787
+3549 3 283 2787
+354c 2 284 2787
+354e 2 286 2787
+3550 2a 288 2787
+357a 4 295 2787
+357e 4 297 2787
+3582 4 299 2787
+3586 4 301 2787
+358a 4 303 2787
+358e 4 305 2787
+3592 4 307 2787
+3596 4 309 2787
+359a 4 311 2787
+359e 4 313 2787
+35a2 4 315 2787
+35a6 4 317 2787
+35aa 4 319 2787
+35ae 4 321 2787
+35b2 7 323 2787
+35b9 2 325 2787
+35bb 2 326 2787
+35bd 19 328 2787
+35d6 3 337 2787
+35d9 1 338 2787
+35da 1 339 2787
+35db 3 341 2787
+35de 2 345 2787
+35e0 2 347 2787
+35e2 3 348 2787
+35e5 1 349 2787
+35e6 1 350 2787
+35e7 3 351 2787
+35ea 2 355 2787
+35ec 2 357 2787
+35ee 3 358 2787
+35f1 3 359 2787
+35f4 3 360 2787
+35f7 1 361 2787
+35f8 1 362 2787
+35f9 5 363 2787
+35fe 2 367 2787
+3600 2 369 2787
+3602 3 370 2787
+3605 3 371 2787
+3608 3 372 2787
+360b 3 373 2787
+360e 3 374 2787
+3611 1 375 2787
+3612 1 376 2787
+3613 3 377 2787
+3616 4 388 2787
+361a 4 389 2787
+361e 6 394 2787
+3624 2 395 2787
+3626 3 397 2787
+3629 3 398 2787
+362c 3 400 2787
+362f 2 401 2787
+3631 1 403 2787
+3632 2 404 2787
+3634 1 405 2787
+3635 9 407 2787
+363e 2 411 2787
+3640 a 414 2787
+364a 2 419 2787
+364c 5 420 2787
+3651 3 422 2787
+3654 2 423 2787
+3656 3 425 2787
+3659 2 426 2787
+365b 7 428 2787
+3662 14 432 2787
+3676 3 439 2787
+3679 2 440 2787
+367b 3 442 2787
+367e 3 443 2787
+3681 3 445 2787
+3684 3 446 2787
+3687 3 448 2787
+368a 2 449 2787
+368c 1 451 2787
+368d 2 452 2787
+368f 1 453 2787
+3690 a 455 2787
+369a 3 459 2787
+369d 2 460 2787
+369f 3 462 2787
+36a2 3 463 2787
+36a5 3 465 2787
+36a8 3 466 2787
+36ab 3 468 2787
+36ae 3 469 2787
+36b1 3 471 2787
+36b4 2 472 2787
+36b6 1 474 2787
+36b7 2 475 2787
+36b9 1 476 2787
+36ba 8 478 2787
+36c2 3 482 2787
+36c5 2 483 2787
+36c7 3 485 2787
+36ca 3 486 2787
+36cd 3 488 2787
+36d0 3 489 2787
+36d3 3 491 2787
+36d6 3 492 2787
+36d9 3 494 2787
+36dc 3 495 2787
+36df 3 497 2787
+36e2 6 498 2787
+36e8 1 500 2787
+36e9 2 501 2787
+36eb 1 502 2787
+36ec 2a 504 2787
+3716 4 513 2787
+371a 4 515 2787
+371e 4 517 2787
+3722 4 519 2787
+3726 4 521 2787
+372a 4 523 2787
+372e 4 525 2787
+3732 4 527 2787
+3736 4 529 2787
+373a 4 531 2787
+373e 4 533 2787
+3742 4 535 2787
+3746 4 537 2787
+374a 4 539 2787
+374e 7 541 2787
+3755 2 543 2787
+3757 2 544 2787
+3759 19 546 2787
+3772 3 555 2787
+3775 1 557 2787
+3776 1 558 2787
+3777 3 559 2787
+377a 3 563 2787
+377d 3 565 2787
+3780 3 566 2787
+3783 1 567 2787
+3784 1 568 2787
+3785 5 569 2787
+378a 3 573 2787
+378d 3 575 2787
+3790 3 576 2787
+3793 3 577 2787
+3796 3 578 2787
+3799 1 579 2787
+379a 1 580 2787
+379b 3 581 2787
+379e 3 585 2787
+37a1 3 587 2787
+37a4 3 588 2787
+37a7 3 589 2787
+37aa 3 590 2787
+37ad 3 591 2787
+37b0 3 592 2787
+37b3 1 593 2787
+37b4 1 594 2787
+37b5 2 595 2787
+FUNC 206a 20 0 _freea
+206a 5 235 281
+206f 7 237 281
+2076 3 239 281
+2079 8 241 281
+2081 7 243 281
+2088 2 252 281
+FUNC 4e87 33 0 _msize
+4e87 5 39 561
+4e8c 19 43 561
+4ea5 2 50 561
+4ea7 11 46 561
+4eb8 2 50 561
+FUNC 1466 9 0 _fptrap
+1466 0 46 4123
+1466 8 47 4123
+146e 1 48 4123
+FUNC 1672 106 0 __report_gsfailure
+1672 b 140 1392
+167d 5 170 1392
+1682 6 171 1392
+1688 6 172 1392
+168e 6 173 1392
+1694 6 174 1392
+169a 6 175 1392
+16a0 7 176 1392
+16a7 7 177 1392
+16ae 7 178 1392
+16b5 7 179 1392
+16bc 7 180 1392
+16c3 7 181 1392
+16ca 1 182 1392
+16cb 6 183 1392
+16d1 3 190 1392
+16d4 5 191 1392
+16d9 3 192 1392
+16dc 5 193 1392
+16e1 3 194 1392
+16e4 5 195 1392
+16e9 6 201 1392
+16ef a 204 1392
+16f9 a 206 1392
+1703 a 285 1392
+170d a 286 1392
+1717 b 293 1392
+1722 b 294 1392
+172d b 297 1392
+1738 8 298 1392
+1740 8 302 1392
+1748 b 304 1392
+1753 9 313 1392
+175c 8 315 1392
+1764 12 319 1392
+1776 2 320 1392
+FUNC 1161 82 0 _calloc_impl
+1161 5 21 291
+1166 7 26 291
+116d 19 28 291
+1186 2 69 291
+1188 7 30 291
+118f 4 34 291
+1193 1 35 291
+1194 2 39 291
+1196 5 41 291
+119b f 44 291
+11aa d 47 291
+11b7 b 59 291
+11c2 7 61 291
+11c9 6 62 291
+11cf 4 63 291
+11d3 7 52 291
+11da 7 53 291
+11e1 2 69 291
+FUNC 5067 ad 0 realloc
+5067 5 62 618
+506c 6 67 618
+5072 9 68 618
+507b 3 117 618
+507e 7 71 618
+5085 9 73 618
+508e 5 74 618
+5093 2 109 618
+5095 4 83 618
+5099 1 84 618
+509a 14 85 618
+50ae c 94 618
+50ba b 109 618
+50c5 5 81 618
+50ca 7 89 618
+50d1 b 90 618
+50dc 4 91 618
+50e0 2 117 618
+50e2 16 111 618
+50f8 2 112 618
+50fa 16 103 618
+5110 4 105 618
+FUNC 1904 1e7 0 __crtLCMapStringA_stat
+1904 12 96 3447
+1916 c 101 3447
+1922 17 102 3447
+1939 4 106 3447
+193d 1 107 3447
+193e 3 109 3447
+1941 3 113 3447
+1944 5 133 3447
+1949 b 134 3447
+1954 2c 145 3447
+1980 7 146 3447
+1987 48 149 3447
+19cf 3 150 3447
+19d2 2 151 3447
+19d4 19 160 3447
+19ed 1f 169 3447
+1a0c a 172 3447
+1a16 b 175 3447
+1a21 9 177 3447
+1a2a 10 186 3447
+1a3a 5 190 3447
+1a3f 4b 196 3447
+1a8a 4 197 3447
+1a8e 16 207 3447
+1aa4 9 220 3447
+1aad 2 223 3447
+1aaf 17 233 3447
+1ac6 7 240 3447
+1acd 8 242 3447
+1ad5 4 244 3447
+1ad9 12 245 3447
+FUNC 22a3 46 0 __crtLCMapStringA
+22a3 8 258 3447
+22ab b 259 3447
+22b6 31 271 3447
+22e7 2 272 3447
+FUNC 47fc e7 0 __crtGetStringTypeA_stat
+47fc 12 63 3507
+480e 7 67 3507
+4815 5 83 3507
+481a b 84 3507
+4825 29 95 3507
+484e 4 96 3507
+4852 3e 99 3507
+4890 2 100 3507
+4892 2 101 3507
+4894 f 103 3507
+48a3 13 111 3507
+48b6 11 116 3507
+48c7 6 118 3507
+48cd 4 120 3507
+48d1 12 121 3507
+FUNC 152e 40 0 __crtGetStringTypeA
+152e 8 133 3507
+1536 b 134 3507
+1541 2b 145 3507
+156c 2 146 3507
+FUNC 2bf4 377 0 __free_lc_time
+2bf4 6 228 1800
+2bfa b 229 1800
+2c05 8 232 1800
+2c0d 8 233 1800
+2c15 8 234 1800
+2c1d 8 235 1800
+2c25 8 236 1800
+2c2d 8 237 1800
+2c35 7 238 1800
+2c3c 8 240 1800
+2c44 8 241 1800
+2c4c 8 242 1800
+2c54 8 243 1800
+2c5c 8 244 1800
+2c64 8 245 1800
+2c6c 8 246 1800
+2c74 8 248 1800
+2c7c b 249 1800
+2c87 8 250 1800
+2c8f 8 251 1800
+2c97 8 252 1800
+2c9f 8 253 1800
+2ca7 8 254 1800
+2caf 8 255 1800
+2cb7 8 256 1800
+2cbf 8 257 1800
+2cc7 8 258 1800
+2ccf 8 259 1800
+2cd7 8 261 1800
+2cdf 8 262 1800
+2ce7 8 263 1800
+2cef 8 264 1800
+2cf7 8 265 1800
+2cff b 266 1800
+2d0a b 267 1800
+2d15 b 268 1800
+2d20 b 269 1800
+2d2b b 270 1800
+2d36 b 271 1800
+2d41 b 272 1800
+2d4c b 274 1800
+2d57 b 275 1800
+2d62 b 277 1800
+2d6d b 278 1800
+2d78 b 279 1800
+2d83 b 282 1800
+2d8e b 283 1800
+2d99 b 284 1800
+2da4 b 285 1800
+2daf e 286 1800
+2dbd b 287 1800
+2dc8 b 288 1800
+2dd3 b 290 1800
+2dde b 291 1800
+2de9 b 292 1800
+2df4 b 293 1800
+2dff b 294 1800
+2e0a b 295 1800
+2e15 b 296 1800
+2e20 b 298 1800
+2e2b b 299 1800
+2e36 b 300 1800
+2e41 b 301 1800
+2e4c b 302 1800
+2e57 b 303 1800
+2e62 e 304 1800
+2e70 b 305 1800
+2e7b b 306 1800
+2e86 b 307 1800
+2e91 b 308 1800
+2e9c b 309 1800
+2ea7 b 311 1800
+2eb2 b 312 1800
+2ebd b 313 1800
+2ec8 b 314 1800
+2ed3 b 315 1800
+2ede b 316 1800
+2ee9 b 317 1800
+2ef4 b 318 1800
+2eff b 319 1800
+2f0a b 320 1800
+2f15 e 321 1800
+2f23 b 322 1800
+2f2e b 324 1800
+2f39 b 325 1800
+2f44 b 327 1800
+2f4f b 328 1800
+2f5a f 329 1800
+2f69 2 332 1800
+FUNC 30f1 69 0 __free_lconv_num
+30f1 6 218 1742
+30f7 7 219 1742
+30fe a 222 1742
+3108 7 223 1742
+310f b 225 1742
+311a 7 226 1742
+3121 b 228 1742
+312c 7 229 1742
+3133 b 231 1742
+313e 7 232 1742
+3145 b 234 1742
+3150 8 235 1742
+3158 2 236 1742
+FUNC 4f45 fe 0 __free_lconv_mon
+4f45 6 270 1685
+4f4b b 271 1685
+4f56 b 274 1685
+4f61 7 275 1685
+4f68 b 277 1685
+4f73 7 278 1685
+4f7a b 280 1685
+4f85 7 281 1685
+4f8c b 283 1685
+4f97 7 284 1685
+4f9e b 286 1685
+4fa9 7 287 1685
+4fb0 b 289 1685
+4fbb 7 290 1685
+4fc2 b 292 1685
+4fcd 7 293 1685
+4fd4 b 295 1685
+4fdf 7 296 1685
+4fe6 b 298 1685
+4ff1 7 299 1685
+4ff8 b 301 1685
+5003 7 302 1685
+500a b 304 1685
+5015 7 305 1685
+501c b 307 1685
+5027 7 308 1685
+502e b 310 1685
+5039 8 311 1685
+5041 2 312 1685
+FUNC 1000 ba 0 _VEC_memzero
+FUNC 2a0e 10 0 __sse2_available_init
+2a0e 0 30 4315
+2a0e d 31 4315
+2a1b 2 32 4315
+2a1d 1 33 4315
+FUNC 3840 103 0 _VEC_memcpy
+FUNC 2b3e 2c 0 _alloca_probe_16
+2b3e 0 44 4274
+2b3e 1 46 4274
+2b3f 4 47 4274
+2b43 2 48 4274
+2b45 3 49 4274
+2b48 2 50 4274
+2b4a 2 51 4274
+2b4c 2 52 4274
+2b4e 1 53 4274
+2b4f 5 54 4274
+2b54 1 59 4274
+2b55 4 60 4274
+2b59 2 61 4274
+2b5b 3 62 4274
+2b5e 2 63 4274
+2b60 2 64 4274
+2b62 2 65 4274
+2b64 1 66 4274
+2b65 5 67 4274
+PUBLIC 2b54 0 _alloca_probe_8
+FUNC 23a6 34 0 _allmul
+23a6 0 47 2803
+23a6 4 63 2803
+23aa 4 64 2803
+23ae 2 65 2803
+23b0 4 66 2803
+23b4 2 67 2803
+23b6 4 69 2803
+23ba 2 70 2803
+23bc 3 72 2803
+23bf 1 75 2803
+23c0 2 83 2803
+23c2 2 84 2803
+23c4 4 86 2803
+23c8 4 87 2803
+23cc 2 88 2803
+23ce 4 90 2803
+23d2 2 91 2803
+23d4 2 92 2803
+23d6 1 94 2803
+23d7 3 96 2803
+FUNC 10ba 2b 0 _chkstk
+10ba 0 65 4276
+10ba 1 69 4276
+10bb 4 73 4276
+10bf 2 74 4276
+10c1 2 79 4276
+10c3 2 80 4276
+10c5 2 81 4276
+10c7 2 83 4276
+10c9 5 84 4276
+10ce 2 87 4276
+10d0 2 88 4276
+10d2 2 89 4276
+10d4 1 90 4276
+10d5 1 91 4276
+10d6 2 92 4276
+10d8 3 93 4276
+10db 1 94 4276
+10dc 5 98 4276
+10e1 2 99 4276
+10e3 2 100 4276
+FUNC 37c6 46 0 strcspn
+37c6 4 191 2794
+37ca 2 198 2794
+37cc 1 199 2794
+37cd 1 200 2794
+37ce 1 201 2794
+37cf 1 202 2794
+37d0 1 203 2794
+37d1 1 204 2794
+37d2 1 205 2794
+37d3 1 206 2794
+37d4 6 212 2794
+37da 2 216 2794
+37dc 2 217 2794
+37de 2 218 2794
+37e0 3 219 2794
+37e3 4 220 2794
+37e7 2 221 2794
+37e9 3 227 2794
+37ec 6 229 2794
+37f2 3 234 2794
+37f5 2 236 2794
+37f7 2 237 2794
+37f9 2 238 2794
+37fb 3 239 2794
+37fe 4 240 2794
+3802 2 245 2794
+3804 2 255 2794
+3806 3 257 2794
+3809 3 259 2794
+FUNC 1577 40 0 strpbrk
+1577 4 191 2794
+157b 2 198 2794
+157d 1 199 2794
+157e 1 200 2794
+157f 1 201 2794
+1580 1 202 2794
+1581 1 203 2794
+1582 1 204 2794
+1583 1 205 2794
+1584 1 206 2794
+1585 6 212 2794
+158b 2 216 2794
+158d 2 217 2794
+158f 2 218 2794
+1591 3 219 2794
+1594 4 220 2794
+1598 2 221 2794
+159a 5 227 2794
+159f 2 236 2794
+15a1 2 237 2794
+15a3 2 238 2794
+15a5 3 239 2794
+15a8 4 240 2794
+15ac 2 247 2794
+15ae 3 248 2794
+15b1 3 257 2794
+15b4 3 259 2794
+FUNC 1fd3 61 0 __ascii_strnicmp
+1fd3 6 69 2798
+1fd9 3 75 2798
+1fdc 2 76 2798
+1fde 2 77 2798
+1fe0 3 79 2798
+1fe3 3 80 2798
+1fe6 2 82 2798
+1fe8 2 83 2798
+1fea 5 84 2798
+1fef 2 89 2798
+1ff1 2 91 2798
+1ff3 2 93 2798
+1ff5 2 95 2798
+1ff7 2 97 2798
+1ff9 2 98 2798
+1ffb 3 100 2798
+1ffe 3 101 2798
+2001 2 103 2798
+2003 2 104 2798
+2005 2 106 2798
+2007 2 107 2798
+2009 2 109 2798
+200b 2 112 2798
+200d 2 113 2798
+200f 2 115 2798
+2011 2 116 2798
+2013 2 118 2798
+2015 2 121 2798
+2017 2 122 2798
+2019 3 124 2798
+201c 2 125 2798
+201e 2 128 2798
+2020 2 129 2798
+2022 2 130 2798
+2024 5 133 2798
+2029 2 134 2798
+202b 2 135 2798
+202d 2 138 2798
+202f 5 140 2798
+PUBLIC 1cf1 10 RtlUnwind
+STACK WIN 4 41e2 54 6 0 8 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4242 a 3 0 0 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2b6a 21 7 0 0 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 30dd 14 7 0 0 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 21f6 16 7 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 22e9 1e 7 0 0 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2895 10 7 0 0 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 308e 7 3 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 13a0 2c 7 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 205a 10 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 1445 21 8 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 144b 17 2 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2307 b 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3238 29 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 32ed 161 c 0 0 10 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ =  $24 $T0 48 - ^ = 
+STACK WIN 4 3410 14 0 0 0 10 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 2104 a 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 5330 70 c 0 4 10 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 32 - ^ =  $23 $T0 36 - ^ =  $24 $T0 40 - ^ = 
+STACK WIN 4 5397 8 0 0 4 10 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 2b8b 3a 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2bac 17 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 23da 42 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 283a e 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 18d9 2b 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5175 18 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 48f0 9 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 406d 9 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 1fa0 33 3 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 1fa3 2f 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 5043 24 6 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5049 1c 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 147f 97 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 14c1 34 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 14c2 32 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 4504 140 c 0 c 10 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 52 - ^ =  $23 $T0 56 - ^ =  $24 $T0 60 - ^ = 
+STACK WIN 4 462f e 0 0 c 10 30 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 315a 16 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1778 16 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3229 f 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 405e f 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 2abf 1e 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 424c 26 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 268b 1af 1b 0 4 0 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 26a1 192 5 0 4 4 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ = 
+STACK WIN 4 26a2 18e 4 0 4 8 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ = 
+STACK WIN 4 26a6 189 0 0 4 c 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ =  $24 $T0 520 - ^ = 
+STACK WIN 4 21bd 39 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 3ed7 14a 6 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3edd 142 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 3ef5 129 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 3f46 d4 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ =  $20 $T0 12 - ^ = 
+STACK WIN 4 255c dc 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 256b a8 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2572 a0 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 25b4 5d 0 0 0 c 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ =  $20 $T0 12 - ^ = 
+STACK WIN 4 54b7 19a d 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 54c1 185 3 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 54c4 181 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 15b7 bb d 0 0 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 15c0 b0 4 0 0 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ = 
+STACK WIN 4 15c3 ac 1 0 0 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ = 
+STACK WIN 4 15c4 aa 0 0 0 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ =  $24 $T0 24 - ^ = 
+STACK WIN 4 220c 97 a 0 0 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2215 8c 1 0 0 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ = 
+STACK WIN 4 2216 8a 0 0 0 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ = 
+STACK WIN 4 223e 61 0 0 0 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ =  $24 $T0 24 - ^ = 
+STACK WIN 4 1cf7 245 9 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1d00 235 0 0 0 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ = 
+STACK WIN 4 1d71 1c3 0 0 0 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ = 
+STACK WIN 4 1d72 1c1 0 0 0 c 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ =  $24 $T0 88 - ^ = 
+STACK WIN 4 137a 26 e 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 137d 22 b 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 1388 16 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 2034 26 e 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 2037 22 b 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2042 16 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 3d7a 9 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 156e 9 0 0 4 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 380c 34 3 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 380f 30 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 4021 3d 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 53a0 b4 c 0 8 10 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ =  $24 $T0 36 - ^ = 
+STACK WIN 4 543c e 0 0 8 10 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 544b 8 0 0 8 10 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 13cc 79 4 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 13cf 75 1 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 13d0 71 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 2848 1a 3 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 284b 16 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 4272 12f c 0 4 10 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ =  $24 $T0 36 - ^ = 
+STACK WIN 4 4389 b 0 0 4 10 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 4395 b 0 0 4 10 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 4980 17b 3 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 4983 177 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 499e 15b 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $24 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 252f 1e 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 1aeb 18f 17 0 10 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1af4 c9 e 0 10 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ = 
+STACK WIN 4 1af8 c4 a 0 10 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ = 
+STACK WIN 4 1b02 b9 0 0 10 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ =  $24 $T0 36 - ^ = 
+STACK WIN 4 2ff3 9b 17 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3009 83 1 0 0 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ = 
+STACK WIN 4 300a 81 0 0 0 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $24 $T0 24 - ^ = 
+STACK WIN 4 3026 64 0 0 0 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $24 $T0 24 - ^ =  $23 $T0 28 - ^ = 
+STACK WIN 4 1214 f 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4afb 129 1a 0 c 8 328 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 812 - ^ =  $24 $T0 816 - ^ = 
+STACK WIN 4 5150 25 3 0 14 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 5153 21 0 0 14 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 3261 2d 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 146f 10 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 2af4 4a 4 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 2af7 3a 1 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2af8 38 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 4d69 57 a 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 4d6c 53 7 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 4d73 4b 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 4d79 2a 0 0 0 c 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 2add 17 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 12b8 c2 c 0 4 10 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 32 - ^ =  $23 $T0 36 - ^ =  $24 $T0 40 - ^ = 
+STACK WIN 4 1371 8 0 0 4 10 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 31f6 33 9 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 31ff 28 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2a1e 5f a 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2a27 54 1 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2a28 52 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 2312 94 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2318 8c 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 2321 6c 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 2322 6a 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 2a7d 42 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3095 13 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 31bd 39 c 0 0 10 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ =  $24 $T0 36 - ^ = 
+STACK WIN 4 31dd 4 0 0 0 10 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 43a1 11 0 0 4 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 215a 1e 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 24f8 37 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2507 1b 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 48e3 d 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 518d 1a3 c 0 4 10 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 52 - ^ =  $23 $T0 56 - ^ =  $24 $T0 60 - ^ = 
+STACK WIN 4 52ee 14 0 0 4 10 30 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 254d f 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 37b7 f 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 24e9 f 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4644 28 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4c24 b6 f 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4c2b ad 8 0 4 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 4c2c ab 7 0 4 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 4c33 a3 0 0 4 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ =  $24 $T0 16 - ^ = 
+STACK WIN 4 11e3 31 3 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 11e6 2d 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 5114 3c c 0 4 10 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 32 - ^ =  $23 $T0 36 - ^ =  $24 $T0 40 - ^ = 
+STACK WIN 4 514a 5 0 0 4 10 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 3ec0 17 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 28a5 23 4 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 28a8 1f 1 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 28a9 1d 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 30a8 35 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 32a9 44 1a 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 32bb 30 8 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 32bc 2e 7 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 32c3 26 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 5651 bc 35 0 4 10 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ =  $24 $T0 36 - ^ = 
+STACK WIN 4 56dc 13 0 0 4 10 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 4076 16c 1e 0 c 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 408c 14f 8 0 c 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ = 
+STACK WIN 4 4093 145 1 0 c 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ = 
+STACK WIN 4 4094 143 0 0 c c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ =  $24 $T0 48 - ^ = 
+STACK WIN 4 3943 75 a 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3949 22 4 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 394d 1d 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 241c cd e 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2425 17 5 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 2429 28 1 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 242a 10 0 0 10 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 328e 1b 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5454 63 a 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 545a 22 4 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 545e 1d 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 3d3b 3f 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 28c8 f 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 2178 45 7 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 217e 3d 1 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 217f 3b 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 210e 4c 7 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2114 44 1 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2115 42 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 4e39 4e 7 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4e3f 46 1 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 4e40 44 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 2bc5 2f 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 1f3c 64 6 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 1f3f 60 3 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 1f40 5e 2 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 466c 190 17 0 0 0 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4682 173 1 0 0 4 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ = 
+STACK WIN 4 4683 16f 0 0 0 8 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ =  $24 $T0 1316 - ^ = 
+STACK WIN 4 3d83 a4 c 0 0 10 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 32 - ^ =  $23 $T0 36 - ^ =  $24 $T0 40 - ^ = 
+STACK WIN 4 3e1b b 0 0 0 10 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 48f9 87 b 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4902 7a 2 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 10e5 7c 9 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 10ee 71 0 0 0 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ = 
+STACK WIN 4 3b52 1e9 1b 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3b65 1cf 8 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ = 
+STACK WIN 4 3b69 1c8 4 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ = 
+STACK WIN 4 3b6d 1c3 0 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ =  $24 $T0 44 - ^ = 
+STACK WIN 4 39b8 19a c 0 4 10 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ =  $24 $T0 48 - ^ = 
+STACK WIN 4 3b19 8 0 0 4 10 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 1cd3 1e 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 2638 53 8 0 10 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1516 18 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4cda 8f e 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4ce0 87 8 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 4ce1 85 7 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 4ce8 7d 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 3e27 99 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3e2d 91 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 3e39 82 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ =  $20 $T0 8 - ^ = 
+STACK WIN 4 3e3a 80 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 178e 14b 13 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1794 143 d 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 1795 141 c 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 17a1 134 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 3170 4d 6 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3176 45 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 3185 31 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 4dc0 79 c 0 0 10 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 32 - ^ =  $23 $T0 36 - ^ =  $24 $T0 40 - ^ = 
+STACK WIN 4 4e2d 8 0 0 0 10 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 344e 8 0 0 4 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 2862 33 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 206a 20 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4e87 33 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1466 9 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 1672 106 b 0 0 0 328 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1161 82 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 118d 54 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 5067 ad 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 507e 62 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 5093 4c 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 1904 1e7 1a 0 24 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $23 $T0 24 - ^ =  $24 $T0 28 - ^ = 
+STACK WIN 4 22a3 46 8 0 24 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 47fc e7 16 0 1c c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 12 - ^ =  $23 $T0 16 - ^ =  $24 $T0 20 - ^ = 
+STACK WIN 4 152e 40 8 0 20 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2bf4 377 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2bfa 36f 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 30f1 69 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 30f7 61 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 4f45 fe 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4f4b f6 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 1000 ba 0 0 c 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 2a0e 10 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 3840 103 0 0 c 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 0 3410 14 0 0 0 0 0 0 0 0
+STACK WIN 0 5397 9 0 0 0 0 0 0 0 0
+STACK WIN 0 2f6b 88 0 0 8 0 0 0 0 0
+STACK WIN 0 462f f 0 0 0 0 0 0 0 0
+STACK WIN 0 543c f 0 0 0 0 0 0 0 0
+STACK WIN 0 544b 9 0 0 0 0 0 0 0 0
+STACK WIN 0 4389 c 0 0 0 0 0 0 0 0
+STACK WIN 0 4395 c 0 0 0 0 0 0 0 0
+STACK WIN 0 1371 9 0 0 0 0 0 0 0 0
+STACK WIN 0 4eba 8b 0 0 4 0 0 0 0 0
+STACK WIN 0 43b2 90 3 0 c c 0 0 0 0
+STACK WIN 0 4442 46 0 0 10 4 0 0 0 1
+STACK WIN 0 44a4 17 4 0 0 10 0 0 0 1
+STACK WIN 0 44bb 19 0 0 0 0 0 0 0 0
+STACK WIN 0 44ed 17 1 0 8 4 0 0 0 1
+STACK WIN 0 31dd 4 0 0 0 0 0 0 0 0
+STACK WIN 0 52ee 15 0 0 0 0 0 0 0 0
+STACK WIN 0 514a 6 0 0 0 0 0 0 0 0
+STACK WIN 0 56dc 13 0 0 0 0 0 0 0 0
+STACK WIN 0 3e1b c 0 0 0 0 0 0 0 0
+STACK WIN 0 3b19 9 0 0 0 0 0 0 0 0
+STACK WIN 0 4e2d 9 0 0 0 0 0 0 0 0
+STACK WIN 0 208a 7a 0 0 c 0 0 0 0 0
+STACK WIN 0 1223 95 0 0 10 0 4 0 0 0
+STACK WIN 0 293c 84 3 0 8 c 0 0 0 0
+STACK WIN 0 29c0 23 0 0 0 0 0 0 0 0
+STACK WIN 0 2a0b 3 0 0 0 0 0 0 0 0
+STACK WIN 0 23a6 1a 0 0 10 0 0 0 0 0
+STACK WIN 0 23c0 1a 0 0 10 0 4 0 0 0
diff --git a/google-breakpad/src/tools/windows/dump_syms/testdata/omap_stretched.pdb b/google-breakpad/src/tools/windows/dump_syms/testdata/omap_stretched.pdb
new file mode 100644
index 0000000..a35b022
--- /dev/null
+++ b/google-breakpad/src/tools/windows/dump_syms/testdata/omap_stretched.pdb
Binary files differ
diff --git a/google-breakpad/src/tools/windows/dump_syms/testdata/omap_stretched.sym b/google-breakpad/src/tools/windows/dump_syms/testdata/omap_stretched.sym
new file mode 100644
index 0000000..ea85854
--- /dev/null
+++ b/google-breakpad/src/tools/windows/dump_syms/testdata/omap_stretched.sym
@@ -0,0 +1,3137 @@
+MODULE windows x86 ABDA3C53D8074326AA40F41DD53824571 omap_stretched.pdb
+FILE 1 c:\src\breakpad\src\src\tools\windows\dump_syms\testdata\dump_syms_regtest.cc
+FILE 2 f:\dd\public\sdk\inc\internal\pebteb.h
+FILE 3 f:\dd\public\sdk\inc\internal\ntldr.h
+FILE 4 f:\dd\public\sdk\inc\internal\ntconfig.h
+FILE 5 f:\dd\public\sdk\inc\internal\ntregapi.h
+FILE 6 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h
+FILE 7 f:\dd\public\ddk\inc\ntdef.h
+FILE 8 f:\dd\public\sdk\inc\internal\ntmmapi.h
+FILE 9 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h
+FILE 10 f:\dd\public\sdk\inc\pshpack1.h
+FILE 11 f:\dd\public\sdk\inc\internal\nxi386.h
+FILE 12 f:\dd\public\ddk\inc\poppack.h
+FILE 13 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\process.h
+FILE 14 f:\dd\public\sdk\inc\pshpack8.h
+FILE 15 f:\dd\public\ddk\inc\ntpoapi.h
+FILE 16 f:\dd\public\sdk\inc\internal\ntexapi.h
+FILE 17 f:\dd\public\sdk\inc\poppack.h
+FILE 18 f:\dd\public\ddk\inc\ntimage.h
+FILE 19 f:\dd\public\ddk\inc\pshpack4.h
+FILE 20 f:\dd\public\sdk\inc\pshpack2.h
+FILE 21 f:\dd\public\ddk\inc\ntnls.h
+FILE 22 f:\dd\public\sdk\inc\internal\ntelfapi.h
+FILE 23 f:\dd\public\sdk\inc\internal\ntpsapi.h
+FILE 24 f:\dd\public\sdk\inc\internal\nti386.h
+FILE 25 f:\dd\public\sdk\inc\specstrings.h
+FILE 26 f:\dd\public\sdk\inc\sal_supp.h
+FILE 27 f:\dd\public\sdk\inc\specstrings_supp.h
+FILE 28 f:\dd\public\sdk\inc\specstrings_strict.h
+FILE 29 f:\dd\public\sdk\inc\specstrings_undef.h
+FILE 30 f:\dd\public\sdk\inc\driverspecs.h
+FILE 31 f:\dd\public\sdk\inc\sdv_driverspecs.h
+FILE 32 f:\dd\public\sdk\inc\basetsd.h
+FILE 33 f:\dd\public\sdk\inc\internal\ntpnpapi.h
+FILE 34 f:\dd\public\sdk\inc\cfg.h
+FILE 35 f:\dd\public\sdk\inc\internal\ntxcapi.h
+FILE 36 f:\dd\public\sdk\inc\guiddef.h
+FILE 37 f:\dd\public\sdk\inc\internal\nt.h
+FILE 38 f:\dd\public\sdk\inc\ntstatus.h
+FILE 39 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h
+FILE 40 f:\dd\public\sdk\inc\internal\ntkeapi.h
+FILE 41 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h
+FILE 42 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h
+FILE 43 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\codeanalysis\sourceannotations.h
+FILE 44 f:\dd\public\sdk\inc\internal\ntobapi.h
+FILE 45 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\string.h
+FILE 46 f:\dd\public\sdk\inc\internal\ntioapi.h
+FILE 47 f:\dd\public\ddk\inc\devioctl.h
+FILE 48 f:\dd\public\sdk\inc\internal\ntseapi.h
+FILE 49 f:\dd\public\ddk\inc\mce.h
+FILE 50 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\misc\i386\chandler4.c
+FILE 51 f:\dd\public\sdk\inc\pshpack4.h
+FILE 52 f:\dd\public\devdiv\inc\ddbanned.h
+FILE 53 f:\dd\public\sdk\inc\internal\ntlpcapi.h
+FILE 54 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h
+FILE 55 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h
+FILE 56 f:\dd\public\sdk\inc\internal\ntiolog.h
+FILE 57 f:\dd\vctools\crt_bld\SELF_X86\crt\prebuild\misc\i386\exsup.asm
+FILE 58 f:\dd\vctools\crt_bld\SELF_X86\crt\prebuild\h\pversion.inc
+FILE 59 f:\dd\vctools\crt_bld\SELF_X86\crt\prebuild\h\cmacros.inc
+FILE 60 f:\dd\vctools\crt_bld\SELF_X86\crt\prebuild\h\exsup.inc
+FILE 61 f:\dd\vctools\crt_bld\SELF_X86\crt\prebuild\misc\i386\nlgsupp.asm
+FILE 62 f:\dd\vctools\crt_bld\SELF_X86\crt\prebuild\misc\i386\exsup4.asm
+FILE 64 f:\dd\vctools\crt_bld\SELF_X86\crt\prebuild\misc\i386\sehprolg4.asm
+FILE 65 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\string\i386\p4_memcpy.c
+FILE 69 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\string\i386\memcmp.c
+FILE 73 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\string\i386\p4_memset.c
+FILE 77 f:\dd\public\sdk\inc\winreg.h
+FILE 78 f:\dd\public\sdk\inc\imm.h
+FILE 79 f:\dd\public\sdk\inc\wingdi.h
+FILE 80 f:\dd\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 81 f:\dd\public\sdk\inc\winerror.h
+FILE 82 f:\dd\public\sdk\inc\ktmtypes.h
+FILE 84 f:\dd\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 85 f:\dd\public\sdk\inc\windef.h
+FILE 86 f:\dd\public\sdk\inc\winbase.h
+FILE 88 f:\dd\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 89 f:\dd\public\sdk\inc\winuser.h
+FILE 91 f:\dd\public\sdk\inc\winnetwk.h
+FILE 92 f:\dd\public\sdk\inc\winnt.h
+FILE 93 f:\dd\public\sdk\inc\wnnc.h
+FILE 94 f:\dd\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 96 f:\dd\public\sdk\inc\winnls.h
+FILE 98 f:\dd\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 99 f:\dd\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 100 f:\dd\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 101 f:\dd\vctools\crt_bld\self_x86\crt\src\codeanalysis\sourceannotations.h
+FILE 102 f:\dd\public\sdk\inc\winver.h
+FILE 103 f:\dd\public\sdk\inc\verrsrc.h
+FILE 104 f:\dd\public\sdk\inc\wincon.h
+FILE 105 f:\dd\public\sdk\inc\stralign.h
+FILE 107 f:\dd\public\sdk\inc\mcx.h
+FILE 108 f:\dd\vctools\crt_bld\self_x86\crt\src\atox.c
+FILE 109 f:\dd\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 110 f:\dd\public\sdk\inc\windows.h
+FILE 111 f:\dd\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 112 f:\dd\public\sdk\inc\sdkddkver.h
+FILE 113 f:\dd\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 114 f:\dd\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 120 f:\dd\public\sdk\inc\reason.h
+FILE 123 f:\dd\public\sdk\inc\kernelspecs.h
+FILE 125 f:\dd\vctools\crt_bld\self_x86\crt\src\tchar.h
+FILE 126 f:\dd\vctools\crt_bld\self_x86\crt\src\mbstring.h
+FILE 127 f:\dd\vctools\crt_bld\self_x86\crt\src\mbctype.h
+FILE 128 f:\dd\public\sdk\inc\ime_cmodes.h
+FILE 130 f:\dd\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 131 f:\dd\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 132 f:\dd\public\sdk\inc\tvout.h
+FILE 145 f:\dd\vctools\crt_bld\self_x86\crt\src\internal_securecrt.h
+FILE 152 f:\dd\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 164 f:\dd\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 165 f:\dd\vctools\crt_bld\self_x86\crt\src\xtoa.c
+FILE 178 f:\dd\vctools\crt_bld\self_x86\crt\src\xtoas.c
+FILE 182 f:\dd\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 224 f:\dd\vctools\crt_bld\self_x86\crt\src\dosmap.c
+FILE 250 f:\dd\vctools\crt_bld\self_x86\crt\src\rtcsup.h
+FILE 251 f:\dd\vctools\crt_bld\self_x86\crt\src\rtcapi.h
+FILE 265 f:\dd\vctools\crt_bld\self_x86\crt\src\winheap.h
+FILE 281 f:\dd\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 291 f:\dd\vctools\crt_bld\self_x86\crt\src\calloc_impl.c
+FILE 299 f:\dd\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 333 f:\dd\vctools\crt_bld\self_x86\crt\src\crtheap.c
+FILE 389 f:\dd\vctools\crt_bld\self_x86\crt\src\free.c
+FILE 453 f:\dd\vctools\crt_bld\self_x86\crt\src\heapinit.c
+FILE 498 f:\dd\vctools\crt_bld\self_x86\crt\src\rterr.h
+FILE 504 f:\dd\vctools\crt_bld\self_x86\crt\src\malloc.c
+FILE 561 f:\dd\vctools\crt_bld\self_x86\crt\src\msize.c
+FILE 618 f:\dd\vctools\crt_bld\self_x86\crt\src\realloc.c
+FILE 677 f:\dd\vctools\crt_bld\self_x86\crt\src\recalloc.c
+FILE 731 f:\dd\vctools\crt_bld\self_x86\crt\src\_newmode.c
+FILE 774 f:\dd\vctools\crt_bld\self_x86\crt\src\msdos.h
+FILE 777 f:\dd\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 792 f:\dd\vctools\crt_bld\self_x86\crt\src\ioinit.c
+FILE 844 f:\dd\vctools\crt_bld\self_x86\crt\src\intel\loadcfg.c
+FILE 892 f:\dd\vctools\crt_bld\self_x86\crt\src\intel\secchk.c
+FILE 904 f:\dd\vctools\crt_bld\self_x86\crt\src\process.h
+FILE 943 f:\dd\vctools\crt_bld\self_x86\crt\src\a_env.c
+FILE 960 f:\dd\vctools\crt_bld\self_x86\crt\src\awint.h
+FILE 975 f:\dd\vctools\crt_bld\self_x86\crt\src\signal.h
+FILE 1011 f:\dd\vctools\crt_bld\self_x86\crt\src\abort.c
+FILE 1039 f:\dd\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 1053 f:\dd\vctools\crt_bld\self_x86\crt\src\crtmbox.c
+FILE 1063 f:\dd\vctools\crt_bld\self_x86\crt\src\crtmboxw.c
+FILE 1065 f:\dd\vctools\crt_bld\self_x86\crt\src\wchar.h
+FILE 1069 f:\dd\vctools\crt_bld\self_x86\crt\src\wtime.inl
+FILE 1120 f:\dd\vctools\crt_bld\self_x86\crt\src\ctype.c
+FILE 1145 f:\dd\vctools\crt_bld\self_x86\crt\src\dbghook.c
+FILE 1181 f:\dd\vctools\crt_bld\self_x86\crt\src\errmode.c
+FILE 1244 f:\dd\vctools\crt_bld\self_x86\crt\src\getqloc.c
+FILE 1288 f:\dd\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 1301 f:\dd\vctools\crt_bld\self_x86\crt\src\glstatus.c
+FILE 1344 f:\dd\vctools\crt_bld\self_x86\crt\src\gs_cookie.c
+FILE 1392 f:\dd\vctools\crt_bld\self_x86\crt\src\gs_report.c
+FILE 1413 f:\binaries.x86ret\inc\mm3dnow.h
+FILE 1415 f:\binaries.x86ret\inc\ammintrin.h
+FILE 1424 f:\binaries.x86ret\inc\immintrin.h
+FILE 1426 f:\binaries.x86ret\inc\wmmintrin.h
+FILE 1427 f:\binaries.x86ret\inc\nmmintrin.h
+FILE 1428 f:\binaries.x86ret\inc\smmintrin.h
+FILE 1429 f:\binaries.x86ret\inc\tmmintrin.h
+FILE 1430 f:\binaries.x86ret\inc\pmmintrin.h
+FILE 1431 f:\binaries.x86ret\inc\emmintrin.h
+FILE 1432 f:\binaries.x86ret\inc\xmmintrin.h
+FILE 1433 f:\binaries.x86ret\inc\mmintrin.h
+FILE 1455 f:\dd\vctools\crt_bld\self_x86\crt\src\gs_support.c
+FILE 1467 f:\dd\vctools\crt_bld\self_x86\crt\src\intrin.h
+FILE 1468 f:\dd\vctools\crt_bld\self_x86\crt\src\setjmp.h
+FILE 1508 f:\dd\vctools\crt_bld\self_x86\crt\src\initcoll.c
+FILE 1568 f:\dd\vctools\crt_bld\self_x86\crt\src\initctyp.c
+FILE 1627 f:\dd\vctools\crt_bld\self_x86\crt\src\inithelp.c
+FILE 1685 f:\dd\vctools\crt_bld\self_x86\crt\src\initmon.c
+FILE 1737 f:\dd\vctools\crt_bld\self_x86\crt\src\nlsint.h
+FILE 1742 f:\dd\vctools\crt_bld\self_x86\crt\src\initnum.c
+FILE 1800 f:\dd\vctools\crt_bld\self_x86\crt\src\inittime.c
+FILE 1855 f:\dd\vctools\crt_bld\self_x86\crt\src\lconv.c
+FILE 1913 f:\dd\vctools\crt_bld\self_x86\crt\src\localref.c
+FILE 1962 f:\dd\vctools\crt_bld\self_x86\crt\src\sect_attribs.h
+FILE 1969 f:\dd\vctools\crt_bld\self_x86\crt\src\onexit.c
+FILE 1989 f:\dd\vctools\crt_bld\self_x86\crt\src\nlsdata1.c
+FILE 2036 f:\dd\vctools\crt_bld\self_x86\crt\src\nlsdata2.c
+FILE 2079 f:\dd\vctools\crt_bld\self_x86\crt\src\pesect.c
+FILE 2128 f:\dd\vctools\crt_bld\self_x86\crt\src\purevirt.c
+FILE 2186 f:\dd\vctools\crt_bld\self_x86\crt\src\rand_s.c
+FILE 2250 f:\dd\vctools\crt_bld\self_x86\crt\src\setlocal.c
+FILE 2311 f:\dd\vctools\crt_bld\self_x86\crt\src\winsig.c
+FILE 2314 f:\dd\vctools\crt_bld\self_x86\crt\src\float.h
+FILE 2315 f:\dd\vctools\crt_bld\self_x86\crt\src\crtwrn.h
+FILE 2369 f:\dd\vctools\crt_bld\self_x86\crt\src\winxfltr.c
+FILE 2394 f:\dd\vctools\crt_bld\self_x86\crt\src\fltintrn.h
+FILE 2419 f:\dd\vctools\crt_bld\self_x86\crt\src\cmiscdat.c
+FILE 2445 f:\dd\vctools\crt_bld\self_x86\crt\src\intel\strncmp.c
+FILE 2468 f:\dd\vctools\crt_bld\self_x86\crt\src\tcscat_s.inl
+FILE 2493 f:\dd\vctools\crt_bld\self_x86\crt\src\strcat_s.c
+FILE 2523 f:\dd\vctools\crt_bld\self_x86\crt\src\tcscpy_s.inl
+FILE 2548 f:\dd\vctools\crt_bld\self_x86\crt\src\strcpy_s.c
+FILE 2578 f:\dd\vctools\crt_bld\self_x86\crt\src\tcsncpy_s.inl
+FILE 2603 f:\dd\vctools\crt_bld\self_x86\crt\src\strncpy_s.c
+FILE 2658 f:\dd\vctools\crt_bld\self_x86\crt\src\wcscat_s.c
+FILE 2713 f:\dd\vctools\crt_bld\self_x86\crt\src\wcscpy_s.c
+FILE 2728 f:\dd\vctools\crt_bld\self_x86\crt\src\wcslen.c
+FILE 2776 f:\dd\vctools\crt_bld\self_x86\crt\src\wcsncpy_s.c
+FILE 2787 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\memcpy.asm
+FILE 2788 f:\dd\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc
+FILE 2789 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\memset.asm
+FILE 2791 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\strcmp.asm
+FILE 2793 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\strcspn.asm
+FILE 2794 f:\dd\vctools\crt_bld\SELF_X86\crt\src\Intel\STRSPN.ASM
+FILE 2796 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\strlen.asm
+FILE 2798 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\_strnicm.asm
+FILE 2800 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\strpbrk.asm
+FILE 2803 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\llmul.asm
+FILE 2805 f:\dd\vctools\crt_bld\SELF_X86\crt\src\mm.inc
+FILE 2806 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\ulldvrm.asm
+FILE 2820 f:\dd\vctools\crt_bld\self_x86\crt\src\handler.cpp
+FILE 2841 f:\dd\vctools\crt_bld\self_x86\crt\src\new.h
+FILE 2875 f:\dd\vctools\crt_bld\self_x86\crt\src\delete.cpp
+FILE 2931 f:\dd\vctools\crt_bld\self_x86\crt\src\_wctype.c
+FILE 2987 f:\dd\vctools\crt_bld\self_x86\crt\src\iswctype.c
+FILE 2998 f:\dd\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 3045 f:\dd\vctools\crt_bld\self_x86\crt\src\isctype.c
+FILE 3106 f:\dd\vctools\crt_bld\self_x86\crt\src\strtol.c
+FILE 3163 f:\dd\vctools\crt_bld\self_x86\crt\src\strtoq.c
+FILE 3218 f:\dd\vctools\crt_bld\self_x86\crt\src\tolower.c
+FILE 3271 f:\dd\vctools\crt_bld\self_x86\crt\src\ismbbyte.c
+FILE 3305 f:\dd\vctools\crt_bld\self_x86\crt\src\mbdata.h
+FILE 3326 f:\dd\vctools\crt_bld\self_x86\crt\src\mbctype.c
+FILE 3386 f:\dd\vctools\crt_bld\self_x86\crt\src\a_loc.c
+FILE 3447 f:\dd\vctools\crt_bld\self_x86\crt\src\a_map.c
+FILE 3507 f:\dd\vctools\crt_bld\self_x86\crt\src\a_str.c
+FILE 3583 f:\dd\vctools\crt_bld\self_x86\crt\src\invarg.c
+FILE 3626 f:\dd\vctools\crt_bld\self_x86\crt\src\stricmp.c
+FILE 3682 f:\dd\vctools\crt_bld\self_x86\crt\src\strnicmp.c
+FILE 3774 f:\dd\vctools\crt_bld\self_x86\crt\src\tidtable.c
+FILE 3778 f:\dd\vctools\crt_bld\self_x86\crt\src\memory.h
+FILE 3838 f:\dd\vctools\crt_bld\self_x86\crt\src\stdenvp.c
+FILE 3860 f:\dd\vctools\crt_bld\self_x86\crt\src\dos.h
+FILE 3891 f:\dd\vctools\crt_bld\self_x86\crt\src\stdargv.c
+FILE 3954 f:\dd\vctools\crt_bld\self_x86\crt\src\mlock.c
+FILE 3998 f:\dd\vctools\crt_bld\self_x86\crt\src\cmsgs.h
+FILE 4012 f:\dd\vctools\crt_bld\self_x86\crt\src\crt0msg.c
+FILE 4072 f:\dd\vctools\crt_bld\self_x86\crt\src\crt0init.c
+FILE 4123 f:\dd\vctools\crt_bld\self_x86\crt\src\crt0fp.c
+FILE 4186 f:\dd\vctools\crt_bld\self_x86\crt\src\crt0dat.c
+FILE 4250 f:\dd\vctools\crt_bld\self_x86\crt\src\crt0.c
+FILE 4274 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\alloca16.asm
+FILE 4276 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\chkstk.asm
+FILE 4289 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\errno.h
+FILE 4293 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\internal.h
+FILE 4294 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\limits.h
+FILE 4295 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\mtdll.h
+FILE 4309 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\sect_attribs.h
+FILE 4315 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\tran\i386\cpu_disp.c
+FILE 4327 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\crtdbg.h
+FILE 4340 f:\dd\vctools\langapi\undname\undname.cxx
+FILE 4345 f:\dd\vctools\langapi\undname\undname.inl
+FILE 4347 f:\dd\vctools\langapi\undname\utf8.h
+FILE 4355 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\swprintf.inl
+FILE 4365 f:\dd\vctools\langapi\undname\undname.hxx
+FILE 4366 f:\dd\vctools\langapi\undname\undname.h
+FILE 4367 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\stdlib.h
+FILE 4368 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\stdio.h
+FILE 4396 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\eh.h
+FILE 4397 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\eh\unhandld.cpp
+FILE 4401 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\ehhooks.h
+FILE 4405 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\ehassert.h
+FILE 4427 f:\dd\vctools\langapi\include\ehdata.h
+FILE 4429 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\stddef.h
+FILE 4449 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\exception
+FILE 4472 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\malloc.h
+FILE 4473 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\eh\typname.cpp
+FILE 4475 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\cstddef
+FILE 4487 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\typeinfo.h
+FILE 4488 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\typeinfo
+FILE 4490 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\xstddef
+FILE 4491 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\yvals.h
+FILE 4492 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\use_ansi.h
+FILE 4493 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\dbgint.h
+FILE 4496 f:\dd\public\internal\vctools\include\undname.h
+FILE 4531 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\eh\typinfo.cpp
+FILE 4591 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\eh\hooks.cpp
+FILE 4643 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\rtc\initsect.cpp
+FILE 4664 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\rtcapi.h
+FILE 4680 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\rtcpriv.h
+FUNC 1000 54 0 main
+1000 6 57 1
+1006 8 58 1
+100e e 59 1
+101c 8 60 1
+1024 b 61 1
+102f f 62 1
+103e 12 64 1
+1050 4 65 1
+FUNC 1060 a 0 google_breakpad::i
+1060 3 51 1
+1063 5 52 1
+1068 2 53 1
+FUNC 106a 35 0 google_breakpad::C::C()
+106a 35 37 1
+FUNC 109f 1e 0 google_breakpad::C::~C()
+109f 1e 38 1
+FUNC 10bd d 0 google_breakpad::C::set_member(int)
+FUNC 10d4 9 0 google_breakpad::C::set_member(int)
+10bd d 40 1
+10d4 9 40 1
+FUNC 10dd 2b 0 google_breakpad::C::f()
+FUNC 1112 7 0 google_breakpad::C::f()
+10dd 2b 43 1
+1112 7 43 1
+FUNC 1119 10 0 google_breakpad::C::g()
+1119 10 44 1
+FUNC 1129 7 0 google_breakpad::C::h(google_breakpad::C const &)
+1129 7 45 1
+FUNC 1130 2c 0 google_breakpad::C::`scalar deleting destructor'(unsigned int)
+FUNC 115c 1a 0 type_info::~type_info()
+115c 2 49 4531
+115e 17 50 4531
+1175 1 51 4531
+FUNC 1176 21 0 type_info::`scalar deleting destructor'(unsigned int)
+FUNC 1197 b 0 operator delete(void *)
+1197 5 20 2875
+119c 1 24 2875
+119d 5 23 2875
+FUNC 11a2 29 0 fast_error_exit
+11a2 5 326 4250
+11a7 9 335 4250
+11b0 5 337 4250
+11b5 8 339 4250
+11bd c 340 4250
+11c9 2 341 4250
+FUNC 11cb 161 0 __tmainCRTStartup
+11cb c 196 4250
+11d7 a 214 4250
+11e1 b 216 4250
+11ec 49 223 4250
+1235 9 225 4250
+123e 8 226 4250
+1246 9 228 4250
+124f 8 229 4250
+1257 5 238 4250
+125c 3 246 4250
+125f 9 248 4250
+1268 8 249 4250
+1270 b 252 4250
+127b a 255 4250
+1285 9 257 4250
+128e 8 258 4250
+1296 9 259 4250
+129f 8 260 4250
+12a7 8 262 4250
+12af 4 263 4250
+12b3 7 264 4250
+12ba a 277 4250
+12c4 18 278 4250
+12dc 5 281 4250
+12e1 6 282 4250
+12e7 5 284 4250
+12ec 2 286 4250
+12ee 17 287 4250
+1305 6 293 4250
+130b 6 295 4250
+1311 6 296 4250
+1317 5 298 4250
+131c 7 300 4250
+1323 3 302 4250
+1326 6 303 4250
+FUNC 132c a 0 mainCRTStartup
+132c 0 179 4250
+132c 5 186 4250
+1331 5 188 4250
+FUNC 1336 70 0 type_info::_Type_info_dtor(type_info *)
+1336 c 62 4473
+1342 8 63 4473
+134a 4 64 4473
+134e a 65 4473
+1358 d 70 4473
+1365 4 72 4473
+1369 4 74 4473
+136d 6 79 4473
+1373 7 80 4473
+137a 9 94 4473
+1383 4 101 4473
+1387 c 103 4473
+1393 6 107 4473
+1399 2 83 4473
+139b 2 72 4473
+139d 9 104 4473
+FUNC 13a6 88 0 strcmp
+13a6 0 65 2791
+13a6 4 73 2791
+13aa 4 74 2791
+13ae 6 76 2791
+13b4 2 77 2791
+13b6 2 81 2791
+13b8 2 83 2791
+13ba 2 84 2791
+13bc 2 85 2791
+13be 2 86 2791
+13c0 3 87 2791
+13c3 2 88 2791
+13c5 2 89 2791
+13c7 2 90 2791
+13c9 3 92 2791
+13cc 3 94 2791
+13cf 2 95 2791
+13d1 2 96 2791
+13d3 2 97 2791
+13d5 3 98 2791
+13d8 2 99 2791
+13da 3 100 2791
+13dd 3 101 2791
+13e0 2 102 2791
+13e2 4 103 2791
+13e6 2 107 2791
+13e8 2 108 2791
+13ea 2 115 2791
+13ec 2 116 2791
+13ee 3 117 2791
+13f1 1 118 2791
+13f2 6 122 2791
+13f8 2 123 2791
+13fa 2 125 2791
+13fc 3 126 2791
+13ff 2 127 2791
+1401 2 128 2791
+1403 3 129 2791
+1406 2 130 2791
+1408 2 131 2791
+140a 6 133 2791
+1410 2 134 2791
+1412 3 139 2791
+1415 3 140 2791
+1418 2 141 2791
+141a 2 142 2791
+141c 2 143 2791
+141e 2 144 2791
+1420 3 145 2791
+1423 2 146 2791
+1425 2 147 2791
+1427 2 148 2791
+1429 3 149 2791
+142c 2 150 2791
+FUNC 142e 35 0 free
+FUNC 146d 5 0 free
+142e 5 40 389
+1433 6 45 389
+1439 11 50 389
+144a 4 51 389
+144e 15 53 389
+146d 3 53 389
+1470 2 55 389
+FUNC 1472 6a 0 __CxxUnhandledExceptionFilter(_EXCEPTION_POINTERS *)
+1472 5 67 4397
+1477 5a 68 4397
+14d1 5 69 4397
+14d6 2 72 4397
+14d8 4 73 4397
+FUNC 14dc e 0 __CxxSetUnhandledExceptionFilter
+14dc 0 86 4397
+14dc b 89 4397
+14e7 2 90 4397
+14e9 1 91 4397
+FUNC 14ea 2b 0 __crtCorExitProcess
+14ea 5 675 4186
+14ef b 679 4186
+14fa 4 680 4186
+14fe c 681 4186
+150a 4 682 4186
+150e 5 683 4186
+1513 2 693 4186
+FUNC 1515 18 0 __crtExitProcess
+1515 5 698 4186
+151a 9 699 4186
+1523 a 708 4186
+FUNC 152d 9 0 _lockexit
+152d 0 758 4186
+152d 8 759 4186
+1535 1 760 4186
+FUNC 1536 9 0 _unlockexit
+1536 0 784 4186
+1536 8 785 4186
+153e 1 786 4186
+FUNC 153f 33 0 _init_pointers
+153f 3 809 4186
+1542 7 810 4186
+1549 6 812 4186
+154f 6 813 4186
+1555 6 814 4186
+155b 6 815 4186
+1561 6 816 4186
+1567 a 817 4186
+1571 1 818 4186
+FUNC 1572 2e 0 _initterm_e
+1572 6 908 4186
+1578 b 917 4186
+158d 6 922 4186
+1593 2 923 4186
+1595 3 924 4186
+1598 6 917 4186
+159e 2 928 4186
+FUNC 15a0 a1 0 _cinit
+15a0 5 258 4186
+15a5 18 268 4186
+15bd a 270 4186
+15c7 5 272 4186
+15cc 11 278 4186
+15dd 2 279 4186
+15df 2 280 4186
+15e1 c 283 4186
+15ed 2a 288 4186
+1617 1a 301 4186
+1631 c 303 4186
+163d 2 307 4186
+163f 2 308 4186
+FUNC 1641 140 0 doexit
+1641 c 489 4186
+164d 8 507 4186
+1655 4 508 4186
+1659 f 510 4186
+1668 5 511 4186
+166d 8 514 4186
+1675 a 516 4186
+167f 13 532 4186
+1692 4 533 4186
+1696 d 534 4186
+16a3 3 538 4186
+16a6 3 539 4186
+16a9 11 547 4186
+16ba 2 550 4186
+16bc 4 552 4186
+16c0 6 559 4186
+16c6 7 562 4186
+16cd 2 565 4186
+16cf a 567 4186
+16d9 8 568 4186
+16e1 a 570 4186
+16eb 6 573 4186
+16f1 8 574 4186
+16f9 5 576 4186
+16fe 21 582 4186
+171f 21 590 4186
+1740 c 608 4186
+174c 6 613 4186
+1752 a 617 4186
+175c 8 619 4186
+1764 8 621 4186
+176c 6 609 4186
+1772 9 610 4186
+177b 6 622 4186
+FUNC 1781 16 0 exit
+1781 5 392 4186
+1786 f 393 4186
+1795 2 394 4186
+FUNC 1797 16 0 _exit
+1797 5 400 4186
+179c f 401 4186
+17ab 2 402 4186
+FUNC 17ad f 0 _cexit
+17ad 0 407 4186
+17ad e 408 4186
+17bb 1 409 4186
+FUNC 17bc f 0 _c_exit
+17bc 0 414 4186
+17bc e 415 4186
+17ca 1 416 4186
+FUNC 17cb 1e 0 _amsg_exit
+17cb 5 439 4186
+17d0 5 440 4186
+17d5 9 441 4186
+17de b 442 4186
+FUNC 17e9 26 0 _GET_RTERRMSG
+17e9 5 165 4012
+17ee 2 168 4012
+17f0 c 169 4012
+17fc 6 168 4012
+1802 2 172 4012
+1804 2 173 4012
+1806 7 170 4012
+180d 2 173 4012
+FUNC 180f 1c5 0 _NMSG_WRITE
+180f 1b 196 4012
+182a 8 197 4012
+1832 11 199 4012
+1843 2a 226 4012
+186d c 263 4012
+1879 20 272 4012
+1899 21 275 4012
+18ba 1f 276 4012
+18d9 d 279 4012
+18e6 d 281 4012
+18f3 1d 282 4012
+1910 18 285 4012
+1928 14 286 4012
+193c 15 290 4012
+1951 a 272 4012
+195b a 228 4012
+1965 9 229 4012
+196e 2 244 4012
+197b a 246 4012
+1990 6 248 4012
+1996 8 244 4012
+199e 27 260 4012
+19c5 f 294 4012
+FUNC 19d4 39 0 _FF_MSGBANNER
+19d4 0 134 4012
+19d4 22 138 4012
+19f6 a 140 4012
+1a00 c 141 4012
+1a0c 1 143 4012
+FUNC 1a0d 251 0 _XcptFilter
+1a0d 6 195 2369
+1a13 7 202 2369
+1a1a 8 203 2369
+1a2c 2e 208 2369
+1a64 6 208 2369
+1a6a 4 210 2369
+1a78 3 216 2369
+1a7b 4 223 2369
+1a7f 7 224 2369
+1a86 5 232 2369
+1a95 4 237 2369
+1a99 8 238 2369
+1aa1 3 244 2369
+1aa4 6 248 2369
+1aaa 4 263 2369
+1ab8 3 263 2369
+1ac5 3 263 2369
+1ad2 c 272 2369
+1ade 3 280 2369
+1aeb 1e 283 2369
+1b13 16 310 2369
+1b33 c 312 2369
+1b3f 7 314 2369
+1b50 c 316 2369
+1b5c 7 318 2369
+1b6d c 320 2369
+1b79 7 322 2369
+1b8a c 324 2369
+1b96 7 326 2369
+1ba7 9 328 2369
+1bb0 7 330 2369
+1bc1 9 332 2369
+1bca 7 334 2369
+1bdb 9 336 2369
+1be4 7 338 2369
+1bf5 9 340 2369
+1bfe 7 342 2369
+1c0f 7 344 2369
+1c20 8 353 2369
+1c32 3 358 2369
+1c35 2 360 2369
+1c41 4 365 2369
+1c45 4 366 2369
+1c53 4 372 2369
+1c57 5 374 2369
+1c5c 2 376 2369
+FUNC 1c5e dc 0 _setenvp
+1c5e 0 77 3838
+1c5e 9 85 3838
+1c67 6 86 3838
+1c6d 9 91 3838
+1c76 4 98 3838
+1c7a 8 99 3838
+1c82 4 110 3838
+1c86 1 111 3838
+1c87 b 112 3838
+1c92 6 108 3838
+1c98 15 117 3838
+1cad 2 118 3838
+1caf 9 121 3838
+1cb8 6 123 3838
+1cbe 9 125 3838
+1cc7 10 127 3838
+1cd7 f 133 3838
+1ce6 3 134 3838
+1ce9 7 121 3838
+1cf0 b 138 3838
+1cfb 7 139 3838
+1d02 3 142 3838
+1d05 a 149 3838
+1d0f 2 152 3838
+1d11 2 138 3838
+1d13 3 153 3838
+1d16 b 129 3838
+1d21 7 130 3838
+1d28 5 131 3838
+1d2d d 133 3838
+FUNC 1d3a 2ee 0 parse_cmdline
+FUNC 2032 3 0 parse_cmdline
+FUNC 203f 4 0 parse_cmdline
+1d3a 6 221 3891
+1d40 7 229 3891
+1d51 2 229 3891
+1d53 2 232 3891
+1d55 1f 234 3891
+1d7e 2 234 3891
+1d80 3 253 3891
+1d8d 5 255 3891
+1d92 5 257 3891
+1d97 9 258 3891
+1da0 6 259 3891
+1daf 2 261 3891
+1db1 4 262 3891
+1dbf 2 263 3891
+1dcb 6 263 3891
+1ddb 2 265 3891
+1ddd f 267 3891
+1df6 2 268 3891
+1df8 6 269 3891
+1dfe 3 270 3891
+1e0b 5 270 3891
+1e1a 2 270 3891
+1e1c 1 271 3891
+1e1d 22 275 3891
+1e3f 4 280 3891
+1e4d 4 281 3891
+1e51 4 284 3891
+1e5f 9 289 3891
+1e72 a 290 3891
+1e7c 3 291 3891
+1e7f 1 278 3891
+1e80 2 279 3891
+1e8c 9 294 3891
+1e95 6 298 3891
+1e9b 7 299 3891
+1eac 2 299 3891
+1eb8 2 300 3891
+1eba 3 314 3891
+1ebd 4 318 3891
+1ec1 1 321 3891
+1ec2 1 322 3891
+1ecd 5 319 3891
+1edc 5 324 3891
+1ee1 5 327 3891
+1ee6 9 328 3891
+1ef9 5 328 3891
+1efe 2 329 3891
+1f00 2 330 3891
+1f02 d 332 3891
+1f0f 2 335 3891
+1f11 5 339 3891
+1f16 4 340 3891
+1f24 4 341 3891
+1f32 6 342 3891
+1f38 3 341 3891
+1f45 20 346 3891
+1f65 8 351 3891
+1f6d 12 353 3891
+1f89 8 354 3891
+1f9b 3 354 3891
+1fa8 2 355 3891
+1faa 3 357 3891
+1fb7 5 357 3891
+1fc6 2 357 3891
+1fc8 2 358 3891
+1fca a 359 3891
+1fd4 1 360 3891
+1fdf 2 361 3891
+1feb 5 364 3891
+1ff0 1 366 3891
+1ff1 5 375 3891
+1ff6 4 379 3891
+2004 7 380 3891
+2015 2 381 3891
+2017 8 382 3891
+201f 9 385 3891
+2032 3 386 3891
+203f 2 387 3891
+2041 2 388 3891
+FUNC 2043 c5 0 _setargv
+2043 9 88 3891
+204c c 97 3891
+2058 5 98 3891
+205d 18 104 3891
+2075 12 120 3891
+2091 7 120 3891
+2098 11 127 3891
+20a9 15 134 3891
+20be a 138 3891
+20c8 2 140 3891
+20ca 9 142 3891
+20d3 2 143 3891
+20d5 2 144 3891
+20d7 13 151 3891
+20ea c 156 3891
+20f6 6 160 3891
+20fc 4 175 3891
+2100 6 136 3891
+2106 2 176 3891
+FUNC 2108 b8 0 __crtGetEnvironmentStringsA
+2108 a 40 943
+2112 e 49 943
+2120 8 50 943
+2131 5 54 943
+2136 3 55 943
+2143 5 55 943
+2148 3 56 943
+2155 6 56 943
+215b 1b 70 943
+2176 12 74 943
+2188 12 88 943
+219a 9 90 943
+21a3 3 91 943
+21a6 7 94 943
+21ad 5 95 943
+21b2 7 76 943
+21b9 5 77 943
+21be 2 96 943
+FUNC 21c0 3b2 0 _ioinit
+21c0 9 111 792
+21c9 a 122 792
+21d3 13 129 792
+21e6 8 131 792
+21ee 15 137 792
+2203 3 134 792
+2210 4 139 792
+221e 6 139 792
+222e 3 141 792
+223b 6 143 792
+224b 4 145 792
+2259 3 146 792
+2266 1b 147 792
+2281 15 155 792
+22a0 2 160 792
+22a2 6 166 792
+22a8 2 167 792
+22aa e 173 792
+22b8 11 179 792
+22c9 13 185 792
+22dc 7 199 792
+22e3 6 201 792
+22f3 a 201 792
+22fd 3 198 792
+230a 4 203 792
+2318 4 205 792
+2326 4 206 792
+2334 14 209 792
+2352 6 209 792
+2362 1c 210 792
+237e f 179 792
+238d 2 280 792
+238f 6 191 792
+2395 a 217 792
+239f 45 230 792
+23e4 14 232 792
+23f8 3 233 792
+2405 2 233 792
+2411 2 233 792
+2413 3 234 792
+2420 2 234 792
+242c 3 234 792
+242f 17 237 792
+2450 3 239 792
+2453 10 217 792
+2463 2 249 792
+2465 b 251 792
+247a c 254 792
+2490 a 302 792
+24a3 4 258 792
+24a7 30 262 792
+24d7 5 273 792
+24e6 7 273 792
+24f7 6 274 792
+24fd 5 275 792
+250c 4 276 792
+2510 13 280 792
+252d 3 282 792
+2530 2 284 792
+253c 4 293 792
+254a 6 294 792
+2550 a 249 792
+255a c 309 792
+2566 5 311 792
+256b 2 312 792
+256d 5 281 792
+FUNC 2572 30 0 _RTC_Initialize
+FUNC 25a2 30 0 _RTC_Terminate
+FUNC 25d2 9 0 _encoded_null
+25d2 0 79 3774
+25d2 8 80 3774
+25da 1 81 3774
+FUNC 25db 9 4 __crtTlsAlloc
+25db 0 95 3774
+25db 6 96 3774
+25e1 3 97 3774
+FUNC 25e4 34 0 __set_flsgetvalue
+25e4 3 143 3774
+25e7 e 145 3774
+25f5 4 146 3774
+25f9 e 148 3774
+2607 d 149 3774
+2614 3 151 3774
+2617 1 155 3774
+FUNC 2618 3d 0 _mtterm
+2618 0 329 3774
+2618 a 336 3774
+2622 f 337 3774
+2631 7 338 3774
+2638 a 342 3774
+2642 7 343 3774
+2649 7 344 3774
+2650 5 352 3774
+FUNC 2655 b4 0 _initptd
+2655 c 379 3774
+2661 b 381 3774
+266c a 384 3774
+2676 4 385 3774
+267a 6 386 3774
+2680 3 391 3774
+2683 7 395 3774
+268a 7 396 3774
+2691 7 397 3774
+2698 8 399 3774
+26a0 4 400 3774
+26a4 9 402 3774
+26ad c 404 3774
+26b9 8 411 3774
+26c1 3 412 3774
+26c4 6 413 3774
+26ca 4 421 3774
+26ce 8 422 3774
+26d6 9 423 3774
+26df c 425 3774
+26eb 6 428 3774
+26f1 6 404 3774
+26f7 9 406 3774
+2700 9 426 3774
+FUNC 2709 8d 0 _getptd_noexit
+2709 4 448 3774
+270d 6 452 3774
+2713 15 460 3774
+2728 14 472 3774
+273c 19 475 3774
+2755 a 481 3774
+275f 6 483 3774
+276f 4 484 3774
+277d 2 484 3774
+277f 2 486 3774
+2781 7 492 3774
+2788 2 493 3774
+278a 8 498 3774
+2792 3 500 3774
+2795 1 501 3774
+FUNC 2796 1a 0 _getptd
+2796 3 522 3774
+2799 7 523 3774
+27a0 4 524 3774
+27a4 8 525 3774
+27ac 3 527 3774
+27af 1 528 3774
+FUNC 27b0 12f 4 _freefls
+27b0 c 556 3774
+27bc b 567 3774
+27c7 7 568 3774
+27ce 7 569 3774
+27d5 7 571 3774
+27dc 7 572 3774
+27e3 7 574 3774
+27ea 7 575 3774
+27f1 7 577 3774
+27f8 7 578 3774
+27ff 7 580 3774
+2806 7 581 3774
+280d 7 583 3774
+2814 7 584 3774
+281b 7 586 3774
+2822 7 587 3774
+2829 a 589 3774
+2833 7 590 3774
+283a 8 592 3774
+2842 4 593 3774
+2846 1a 596 3774
+2860 7 597 3774
+2867 c 599 3774
+2873 8 603 3774
+287b 7 605 3774
+2882 7 606 3774
+2889 7 608 3774
+2890 15 611 3774
+28a5 7 612 3774
+28ac c 615 3774
+28b8 7 619 3774
+28bf 8 622 3774
+28c7 3 599 3774
+28ca 9 600 3774
+28d3 3 615 3774
+28d6 9 616 3774
+FUNC 28df 18f 0 _mtinit
+28df 3 203 3774
+28e2 d 211 3774
+28ef 4 212 3774
+28f3 5 213 3774
+28f8 3 214 3774
+28fb 2 300 3774
+28fd e 218 3774
+290b d 221 3774
+2918 d 224 3774
+2925 d 227 3774
+2932 2a 228 3774
+295c a 231 3774
+2966 1a 235 3774
+2980 25 244 3774
+29a5 5 249 3774
+29aa e 256 3774
+29b8 d 257 3774
+29c5 d 258 3774
+29d2 12 259 3774
+29e4 7 266 3774
+29eb 2 268 3774
+29ed 1d 274 3774
+2a0a 2 276 3774
+2a0c 29 284 3774
+2a35 a 294 3774
+2a3f 6 296 3774
+2a4f 4 297 3774
+2a5d 2 297 3774
+2a5f 5 299 3774
+2a64 5 286 3774
+2a69 4 245 3774
+2a6d 1 300 3774
+FUNC 2a6e 1e 0 _heap_init
+2a6e 0 40 453
+2a6e 1d 44 453
+2a8b 1 60 453
+FUNC 2a8c 45 0 _SEH_prolog4
+FUNC 2ad1 14 0 _SEH_epilog4
+FUNC 2ae5 2c4 0 _except_handler4
+FUNC 2da9 9b 0 __security_init_cookie
+2da9 8 97 1455
+2db1 21 114 1455
+2dd2 7 116 1455
+2dd9 3 117 1455
+2ddc a 127 1455
+2de6 6 132 1455
+2dec 8 135 1455
+2df4 8 136 1455
+2dfc 8 137 1455
+2e04 a 139 1455
+2e0e 8 144 1455
+2e16 4 161 1455
+2e1a 7 163 1455
+2e21 4 166 1455
+2e25 c 168 1455
+2e31 6 172 1455
+2e37 b 173 1455
+2e42 2 175 1455
+FUNC 2e44 f 0 _initp_misc_invarg
+2e44 5 64 3583
+2e49 8 65 3583
+2e51 2 66 3583
+FUNC 2e53 129 0 _call_reportfault
+2e53 16 164 3583
+2e69 9 166 3583
+2e72 7 167 3583
+2e79 17 170 3583
+2e90 1b 172 3583
+2eab 6 179 3583
+2eb1 6 180 3583
+2eb7 6 181 3583
+2ebd 6 182 3583
+2ec3 6 183 3583
+2ec9 6 184 3583
+2ecf 7 185 3583
+2ed6 7 186 3583
+2edd 7 187 3583
+2ee4 7 188 3583
+2eeb 7 189 3583
+2ef2 7 190 3583
+2ef9 1 191 3583
+2efa 6 192 3583
+2f00 3 198 3583
+2f03 19 199 3583
+2f1c 9 201 3583
+2f25 9 240 3583
+2f2e 9 241 3583
+2f37 6 242 3583
+2f3d 6 245 3583
+2f43 a 248 3583
+2f4d d 250 3583
+2f5a d 254 3583
+2f67 7 255 3583
+2f6e e 257 3583
+FUNC 2f7c 25 0 _invoke_watson
+2f7c 3 146 3583
+2f7f 12 155 3583
+2f91 f 156 3583
+2fa0 1 157 3583
+FUNC 2fa1 2d 0 _invalid_parameter
+2fa1 5 96 3583
+2fa6 c 103 3583
+2fb2 4 104 3583
+2fb6 1 111 3583
+2fb7 2 106 3583
+2fb9 15 110 3583
+FUNC 2fce 10 0 _invalid_parameter_noinfo
+2fce 0 120 3583
+2fce f 121 3583
+2fdd 1 122 3583
+FUNC 2fde 5e 0 _mtinitlocks
+2fde 4 136 3954
+2fe2 7 143 3954
+2fe9 a 144 3954
+2ff3 7 145 3954
+3004 2 145 3954
+3006 1e 147 3954
+3024 6 143 3954
+302a 3 156 3954
+302d 3 157 3954
+3030 c 150 3954
+FUNC 303c 89 0 _mtdeletelocks
+303c 3 187 3954
+303f d 193 3954
+3056 6 195 3954
+3066 6 195 3954
+306c 3 199 3954
+306f 6 205 3954
+307f 4 206 3954
+3083 b 193 3954
+308e 6 214 3954
+309e 6 216 3954
+30ae 6 216 3954
+30b4 3 220 3954
+30b7 b 214 3954
+30c2 3 223 3954
+FUNC 30c5 17 0 _unlock
+30c5 5 370 3954
+30ca 10 374 3954
+30da 2 375 3954
+FUNC 30dc c2 0 _mtinitlocknum
+30dc c 258 3954
+30e8 6 260 3954
+30ee a 268 3954
+30f8 5 269 3954
+30fd 7 270 3954
+3104 c 271 3954
+3110 e 275 3954
+311e 4 276 3954
+3122 e 278 3954
+3130 b 279 3954
+313b 4 280 3954
+313f 8 283 3954
+3147 3 284 3954
+314a 4 286 3954
+314e 10 287 3954
+315e 7 288 3954
+3165 b 289 3954
+3170 3 290 3954
+3173 2 291 3954
+3175 2 292 3954
+3177 2 295 3954
+3179 7 296 3954
+3180 c 299 3954
+318c 3 303 3954
+318f 6 304 3954
+3195 9 300 3954
+FUNC 319e 47 0 _lock
+319e 5 332 3954
+31a3 b 337 3954
+31b8 5 337 3954
+31bd b 339 3954
+31c8 8 340 3954
+31da 9 347 3954
+31e3 2 348 3954
+FUNC 31e5 9c 0 strcpy_s
+31e5 5 13 2523
+31ea 2d 18 2523
+3217 7 19 2523
+3228 4 19 2523
+322c 26 23 2523
+3252 4 27 2523
+3260 3 29 2523
+3263 8 30 2523
+3275 6 30 2523
+327b 4 33 2523
+327f 2 34 2523
+FUNC 3281 8b 0 strlen
+3281 0 54 2796
+3281 4 63 2796
+3285 6 64 2796
+328b 2 65 2796
+328d 2 69 2796
+328f 3 70 2796
+3292 2 71 2796
+3294 2 72 2796
+3296 6 73 2796
+329c 2 74 2796
+329e 13 76 2796
+32b1 2 81 2796
+32b3 5 82 2796
+32b8 2 83 2796
+32ba 3 84 2796
+32bd 2 85 2796
+32bf 3 86 2796
+32c2 5 87 2796
+32c7 2 88 2796
+32c9 3 90 2796
+32cc 2 91 2796
+32ce 2 92 2796
+32d0 2 93 2796
+32d2 2 94 2796
+32d4 5 95 2796
+32d9 2 96 2796
+32db 5 97 2796
+32e0 2 98 2796
+32e2 2 99 2796
+32e4 3 103 2796
+32e7 4 104 2796
+32eb 2 105 2796
+32ed 1 106 2796
+32ee 3 108 2796
+32f1 4 109 2796
+32f5 2 110 2796
+32f7 1 111 2796
+32f8 3 113 2796
+32fb 4 114 2796
+32ff 2 115 2796
+3301 1 116 2796
+3302 3 118 2796
+3305 4 119 2796
+3309 2 120 2796
+330b 1 121 2796
+FUNC 330c b6 0 malloc
+330c 6 81 504
+3312 e 85 504
+3320 3d 89 504
+335d 4 94 504
+3361 b 98 504
+336c b 105 504
+3377 2 109 504
+3379 5 100 504
+3388 2 100 504
+338a 5 119 504
+3399 2 119 504
+339b 6 121 504
+33a1 7 111 504
+33a8 5 112 504
+33b7 6 112 504
+33bd 3 113 504
+33c0 2 122 504
+FUNC 33c2 90 0 _local_unwind4
+FUNC 3452 46 0 _unwind_handler4
+FUNC 3498 1c 4 _seh_longjmp_unwind4
+FUNC 34b4 17 0 _EH4_CallFilterFunc
+FUNC 34cb 19 0 _EH4_TransferToHandler
+FUNC 34e4 19 0 _EH4_GlobalUnwind2
+FUNC 34fd 17 8 _EH4_LocalUnwind
+FUNC 3514 42 0 _get_errno_from_oserr
+3514 5 119 224
+3519 5 123 224
+351e 9 124 224
+3527 6 123 224
+352d 8 133 224
+3535 3 134 224
+3538 2 139 224
+353a 7 125 224
+3541 2 139 224
+3543 11 135 224
+3554 2 139 224
+FUNC 3556 13 0 _errno
+3556 0 279 224
+3556 5 280 224
+355b 4 281 224
+355f 5 282 224
+3564 1 287 224
+3565 3 284 224
+3568 1 287 224
+FUNC 3569 39 0 terminate()
+3569 c 84 4591
+3575 8 89 4591
+357d 4 90 4591
+3581 4 95 4591
+3585 2 99 4591
+3587 2 100 4591
+3589 7 101 4591
+3590 7 106 4591
+3597 5 114 4591
+359c 6 115 4591
+FUNC 35a2 11 0 _initp_eh_hooks
+35a2 0 69 4591
+35a2 10 70 4591
+35b2 1 71 4591
+FUNC 35b3 1e 0 _initp_misc_winsig
+35b3 5 57 2311
+35b8 8 58 2311
+35c0 5 59 2311
+35c5 5 60 2311
+35ca 5 61 2311
+35cf 2 62 2311
+FUNC 35d1 38 0 siglookup
+FUNC 3613 9 0 siglookup
+35d1 5 629 2311
+35d6 a 630 2311
+35ea 14 639 2311
+35fe b 642 2311
+3613 3 642 2311
+3616 2 646 2311
+3618 2 651 2311
+361a 2 652 2311
+FUNC 361c d 0 __get_sigabrt
+361c 0 669 2311
+361c c 670 2311
+3628 1 671 2311
+FUNC 3629 1a3 0 raise
+3629 c 450 2311
+3635 5 457 2311
+363a 3 458 2311
+363d 1f 460 2311
+365c a 486 2311
+3666 4 487 2311
+366a 8 488 2311
+3672 a 463 2311
+367c 2 465 2311
+367e 10 490 2311
+368e 2 491 2311
+3690 f 460 2311
+369f 12 498 2311
+36b1 a 474 2311
+36bb 2 476 2311
+36bd a 468 2311
+36c7 2 470 2311
+36c9 a 479 2311
+36d3 7 480 2311
+36da a 500 2311
+36e4 2 508 2311
+36e6 4 507 2311
+36ea 6 508 2311
+36f0 5 513 2311
+36f5 7 518 2311
+36fc 5 525 2311
+3701 7 526 2311
+3708 5 528 2311
+370d f 539 2311
+371c 6 540 2311
+3722 3 541 2311
+3725 5 547 2311
+372a 6 548 2311
+3730 7 549 2311
+3737 5 557 2311
+373c 1a 564 2311
+3756 d 567 2311
+3763 5 564 2311
+3768 7 570 2311
+376f c 573 2311
+377b 5 578 2311
+3780 8 584 2311
+3788 2 585 2311
+378a 6 573 2311
+3790 6 574 2311
+3796 9 575 2311
+379f 5 586 2311
+37a4 f 593 2311
+37b3 6 594 2311
+37b9 5 599 2311
+37be 6 600 2311
+37c4 2 603 2311
+37c6 6 604 2311
+FUNC 37cc f 0 _initp_misc_rand_s
+37cc 5 58 2186
+37d1 8 59 2186
+37d9 2 60 2186
+FUNC 37db f 0 _initp_misc_purevirt
+37db 5 179 1627
+37e0 8 180 1627
+37e8 2 181 1627
+FUNC 37ea f 0 _initp_heap_handler
+37ea 5 31 2820
+37ef 8 32 2820
+37f7 2 33 2820
+FUNC 37f9 28 0 _callnewh
+37f9 5 131 2820
+37fe c 133 2820
+380a e 135 2820
+3818 3 138 2820
+381b 2 139 2820
+381d 2 136 2820
+381f 2 139 2820
+FUNC 3821 c0 0 _onexit_nolock
+3821 8 100 1969
+3829 f 103 1969
+3838 f 104 1969
+3847 14 108 1969
+385b 10 118 1969
+386b d 123 1969
+3878 13 125 1969
+388b 3 130 1969
+388e 13 132 1969
+38a1 3 143 1969
+38a4 f 145 1969
+38b3 b 152 1969
+38c8 5 152 1969
+38cd 8 153 1969
+38d5 5 155 1969
+38da 5 110 1969
+38df 2 156 1969
+FUNC 38e1 2a 0 __onexitinit
+FUNC 3915 7 0 __onexitinit
+38e1 3 201 1969
+38e4 d 204 1969
+38f1 11 205 1969
+3902 4 207 1969
+3906 4 212 1969
+390a 1 217 1969
+3915 3 214 1969
+3918 3 216 1969
+391b 1 217 1969
+FUNC 391c 3c 0 _onexit
+391c c 81 1969
+3928 5 84 1969
+392d 4 86 1969
+3931 c 87 1969
+393d c 89 1969
+3949 3 93 1969
+394c 6 94 1969
+3952 6 90 1969
+FUNC 3958 17 0 atexit
+3958 5 161 1969
+395d 10 162 1969
+396d 2 163 1969
+FUNC 396f 23 0 _initp_misc_cfltcvt_tab
+396f 4 54 2419
+3973 2 56 2419
+3975 1a 58 2419
+398f 3 60 2419
+FUNC 3992 5d 0 _ValidateImageBase
+3992 5 44 2079
+3997 8 50 2079
+39a9 5 50 2079
+39ae 2 52 2079
+39b0 2 68 2079
+39bc 5 55 2079
+39cb 6 56 2079
+39d1 2 58 2079
+39d3 7 62 2079
+39e4 9 62 2079
+39ed 2 68 2079
+FUNC 39ef 76 0 _FindPESection
+39ef 5 92 2079
+39f4 3 99 2079
+3a01 5 99 2079
+3a10 22 108 2079
+3a3c 7 111 2079
+3a4d 9 111 2079
+3a56 8 108 2079
+3a5e 5 123 2079
+3a63 2 124 2079
+FUNC 3a65 bc 0 _IsNonwritableInCurrentImage
+3a65 35 149 2079
+3a9a 7 156 2079
+3aa1 f 164 2079
+3ab0 2 166 2079
+3ab2 8 174 2079
+3aba e 175 2079
+3ac8 2 176 2079
+3aca 2 178 2079
+3acc 12 185 2079
+3ade 12 195 2079
+3af0 16 187 2079
+3b06 9 193 2079
+3b0f 12 195 2079
+FUNC 3b21 16c 0 __crtMessageBoxW
+3b21 12 41 1053
+3b33 14 49 1053
+3b47 4 56 1053
+3b4b c 62 1053
+3b57 d 64 1053
+3b64 2 65 1053
+3b66 6 67 1053
+3b6c 10 72 1053
+3b7c 6 76 1053
+3b82 9 78 1053
+3b8b 10 81 1053
+3b9b 10 84 1053
+3bab d 88 1053
+3bb8 8 93 1053
+3bc0 4 95 1053
+3bc4 10 97 1053
+3bd4 1a 110 1053
+3bee 3 113 1053
+3bf1 c 114 1053
+3bfd 8 116 1053
+3c05 1f 121 1053
+3c24 7 130 1053
+3c2b 2 132 1053
+3c2d a 134 1053
+3c37 3 136 1053
+3c3a 4 137 1053
+3c3e 5 139 1053
+3c43 e 143 1053
+3c51 3 145 1053
+3c54 4 146 1053
+3c58 8 148 1053
+3c60 8 155 1053
+3c68 4 156 1053
+3c6c 10 158 1053
+3c7c 2 163 1053
+3c7e f 166 1053
+FUNC 3c8d ac 0 wcscat_s
+FUNC 3d43 9 0 wcscat_s
+3c8d 6 13 2468
+3c93 2c 18 2468
+3cbf 2 46 2468
+3cc1 9 19 2468
+3cd4 5 19 2468
+3cd9 2 21 2468
+3ce5 6 23 2468
+3ceb 3 25 2468
+3cee 3 26 2468
+3cf1 2 29 2468
+3cf3 2 32 2468
+3cf5 29 35 2468
+3d1e 6 41 2468
+3d2e 3 41 2468
+3d31 8 42 2468
+3d43 9 42 2468
+FUNC 3d4c 12b 0 wcsncpy_s
+FUNC 3e81 9 0 wcsncpy_s
+3d4c 5 13 2578
+3d51 16 17 2578
+3d67 5 65 2578
+3d6c 2 66 2578
+3d6e 28 24 2578
+3d96 4 25 2578
+3d9a 2 28 2578
+3da6 3 28 2578
+3da9 2 29 2578
+3dab 9 31 2578
+3dbe 5 31 2578
+3dc3 2 33 2578
+3dc5 5 35 2578
+3dca 2b 37 2578
+3df5 2 41 2578
+3df7 2e 45 2578
+3e25 4 48 2578
+3e29 2 50 2578
+3e35 3 50 2578
+3e38 8 54 2578
+3e40 a 58 2578
+3e4a 18 59 2578
+3e6c 3 61 2578
+3e6f 8 62 2578
+3e81 9 62 2578
+FUNC 3e8a 25 0 wcslen
+3e8a 5 41 2728
+3e8f 3 42 2728
+3e9c b 44 2728
+3ea7 6 46 2728
+3ead 2 47 2728
+FUNC 3eaf 90 0 wcscpy_s
+FUNC 3f49 6 0 wcscpy_s
+3eaf 6 13 2523
+3eb5 2c 18 2523
+3ee1 2 34 2523
+3ee3 7 19 2523
+3ef4 5 19 2523
+3ef9 2b 23 2523
+3f24 6 29 2523
+3f34 3 29 2523
+3f37 8 30 2523
+3f49 6 30 2523
+FUNC 3f4f 49 0 _set_error_mode
+3f4f 5 43 1181
+3f54 11 46 1181
+3f65 5 54 1181
+3f6a 2 61 1181
+3f6c 5 50 1181
+3f71 6 51 1181
+3f77 2 61 1181
+3f79 1d 57 1181
+3f96 2 61 1181
+FUNC 3f98 f 0 __security_check_cookie
+3f98 0 52 892
+3f98 6 55 892
+3f9e 2 56 892
+3fa0 2 57 892
+3fa2 5 59 892
+FUNC 3fa7 45 0 _malloc_crt
+3fa7 7 39 333
+3fae 2 40 333
+3fb0 b 44 333
+3fbb c 45 333
+3fc7 1a 46 333
+3fe1 5 47 333
+3fe6 4 50 333
+3fea 2 51 333
+FUNC 3fec 4c 0 _calloc_crt
+3fec 7 54 333
+3ff3 2 55 333
+3ff5 12 61 333
+4007 c 62 333
+4013 1a 63 333
+402d 5 64 333
+4032 4 67 333
+4036 2 68 333
+FUNC 4038 4e 0 _realloc_crt
+4038 7 71 333
+403f 2 72 333
+4041 f 76 333
+4050 11 77 333
+4061 1a 78 333
+407b 5 79 333
+4080 4 82 333
+4084 2 83 333
+FUNC 4086 2f 0 CPtoLCID
+4086 0 329 3326
+4086 14 330 3326
+409a 2 345 3326
+409c 1 346 3326
+409d 5 342 3326
+40a2 1 346 3326
+40a3 5 339 3326
+40a8 1 346 3326
+40a9 5 336 3326
+40ae 1 346 3326
+40af 5 333 3326
+40b4 1 346 3326
+FUNC 40b5 ab 0 setSBCS
+FUNC 416a 9 0 setSBCS
+40b5 6 363 3326
+40bb 11 368 3326
+40cc 36 379 3326
+4108 1 379 3326
+410f 1 379 3326
+4116 1 379 3326
+4117 12 381 3326
+4134 3 382 3326
+4141 6 382 3326
+4147 b 384 3326
+415d 3 385 3326
+416a 6 385 3326
+4170 3 386 3326
+FUNC 4173 246 0 setSBUpLow
+4173 17 402 3326
+418a 7 412 3326
+419b 9 412 3326
+41a4 f 415 3326
+41b3 c 416 3326
+41bf 11 420 3326
+41d0 6 419 3326
+41d6 2a 421 3326
+420a a 420 3326
+4214 34 427 3326
+4248 37 432 3326
+427f 39 437 3326
+42b8 2 442 3326
+42ba d 443 3326
+42d2 5 445 3326
+42d7 9 446 3326
+42e0 5 448 3326
+42f0 5 450 3326
+42f5 7 451 3326
+430a 7 451 3326
+4311 2 453 3326
+4321 7 454 3326
+4328 5 442 3326
+432d 8 456 3326
+4335 12 472 3326
+4347 17 461 3326
+4369 5 463 3326
+436e 5 464 3326
+4373 5 466 3326
+4383 5 468 3326
+4388 3 469 3326
+4395 2 469 3326
+4397 2 471 3326
+43a3 3 472 3326
+43a6 5 460 3326
+43ab e 474 3326
+FUNC 43b9 a4 0 __updatetmbcinfo
+43b9 c 495 3326
+43c5 7 498 3326
+43cc 10 499 3326
+43dc 3 532 3326
+43df 4 535 3326
+43e3 8 537 3326
+43eb 2 540 3326
+43ed 6 541 3326
+43f3 8 500 3326
+43fb 4 502 3326
+43ff e 505 3326
+440d 17 511 3326
+4424 7 516 3326
+442b 11 523 3326
+443c 7 524 3326
+4443 11 527 3326
+4454 9 529 3326
+FUNC 445d 15d 0 _LocaleUpdate::_LocaleUpdate(localeinfo_struct *)
+445d 5 240 111
+4462 6 241 111
+4472 c 241 111
+447e 5 243 111
+448d 3 243 111
+449a 3 244 111
+44a7 2 244 111
+44b3 3 245 111
+44c0 3 245 111
+44cd 24 247 111
+44fb 2 247 111
+4507 32 248 111
+4543 3 248 111
+4550 3 249 111
+455d 6 249 111
+456d 4 251 111
+457b 4 252 111
+457f 2 255 111
+458b 2 257 111
+4597 2 257 111
+45a3 3 257 111
+45b0 3 257 111
+45b3 7 259 111
+FUNC 45ba 87 0 getSystemCP
+FUNC 464b 9 0 getSystemCP
+45ba 9 282 3326
+45c3 b 284 3326
+45ce 6 285 3326
+45d4 5 289 3326
+45d9 a 291 3326
+45e3 e 292 3326
+45fb 6 292 3326
+4601 5 295 3326
+4606 a 297 3326
+4610 8 298 3326
+4618 5 302 3326
+461d 1c 305 3326
+4639 8 308 3326
+464b 7 308 3326
+4652 2 309 3326
+FUNC 4654 2d2 0 _setmbcp_nolock
+4654 17 684 3326
+466b b 691 3326
+4676 9 694 3326
+467f 7 696 3326
+4686 7 697 3326
+468d 3 701 3326
+4690 2 703 3326
+4692 c 706 3326
+469e d 703 3326
+46ab 2a 741 3326
+46d5 13 749 3326
+46e8 f 754 3326
+46f7 29 759 3326
+4720 21 762 3326
+474b c 764 3326
+4757 f 710 3326
+4766 15 713 3326
+477b 2 718 3326
+4787 7 718 3326
+4798 8 721 3326
+47a0 9 722 3326
+47b4 4 722 3326
+47c2 5 722 3326
+47c7 4 721 3326
+47cb 6 718 3326
+47db 5 718 3326
+47e0 12 713 3326
+47f2 3e 729 3326
+483a 19 731 3326
+4853 7 734 3326
+485a 5 735 3326
+486a 6 765 3326
+4870 4 764 3326
+4874 17 762 3326
+488b 8 769 3326
+489d 7 770 3326
+48ae 8 773 3326
+48c0 3 773 3326
+48cd 3 776 3326
+48d0 2 778 3326
+48dc 3 780 3326
+48df f 783 3326
+48f4 1 783 3326
+48fb 1 783 3326
+4902 1 783 3326
+4903 5 787 3326
+4908 6 792 3326
+490e 6 795 3326
+4914 3 744 3326
+4917 f 800 3326
+FUNC 4926 19a 0 _setmbcp
+4926 c 572 3326
+4932 4 573 3326
+4936 a 577 3326
+4940 5 579 3326
+4945 3 580 3326
+4948 b 582 3326
+4953 9 584 3326
+495c d 590 3326
+4969 8 592 3326
+4971 c 594 3326
+497d 3 605 3326
+4980 16 610 3326
+4996 1a 612 3326
+49b0 7 613 3326
+49b7 3 617 3326
+49ba 9 618 3326
+49c3 17 620 3326
+49da 8 622 3326
+49e2 4 623 3326
+49e6 8 628 3326
+49ee 8 629 3326
+49f6 8 630 3326
+49fe a 631 3326
+4a08 d 632 3326
+4a15 3 631 3326
+4a18 c 633 3326
+4a24 a 634 3326
+4a2e 3 633 3326
+4a31 c 635 3326
+4a3d d 636 3326
+4a4a 3 635 3326
+4a4d 1c 638 3326
+4a69 7 639 3326
+4a70 6 643 3326
+4a76 3 644 3326
+4a79 e 646 3326
+4a87 9 648 3326
+4a90 2 651 3326
+4a92 5 652 3326
+4a97 8 658 3326
+4a9f 7 659 3326
+4aa6 b 660 3326
+4ab1 2 666 3326
+4ab3 4 671 3326
+4ab7 3 680 3326
+4aba 6 681 3326
+FUNC 4ac0 1e 0 __initmbctable
+4ac0 0 841 3326
+4ac0 9 851 3326
+4ac9 8 852 3326
+4ad1 a 853 3326
+4adb 2 858 3326
+4add 1 859 3326
+FUNC 4ade 70 0 x_ismbbtype_l
+FUNC 4b58 6 0 x_ismbbtype_l
+4ade 8 213 3271
+4ae6 b 214 3271
+4af1 4 219 3271
+4af5 59 222 3271
+4b58 4 222 3271
+4b5c 2 223 3271
+FUNC 4b5e 18 0 _ismbblead
+4b5e 5 171 3271
+4b63 11 172 3271
+4b74 2 173 3271
+FUNC 4b76 f8 0 __addlocaleref
+4b76 7 36 1913
+4b7d d 39 1913
+4b97 a 41 1913
+4ba1 3 42 1913
+4bb1 a 44 1913
+4bbb 3 45 1913
+4bcb a 47 1913
+4bd5 3 48 1913
+4be5 a 50 1913
+4bef 3 51 1913
+4bf2 a 53 1913
+4c06 9 55 1913
+4c19 6 55 1913
+4c1f 3 56 1913
+4c2c 6 59 1913
+4c3c 7 59 1913
+4c43 3 60 1913
+4c46 8 53 1913
+4c5b 11 63 1913
+4c6c 2 64 1913
+FUNC 4c6e 102 0 __removelocaleref
+4c6e 6 74 1913
+4c74 b 77 1913
+4c7f b 79 1913
+4c97 a 81 1913
+4ca1 3 82 1913
+4cb1 a 84 1913
+4cbb 3 85 1913
+4ccb a 87 1913
+4cd5 3 88 1913
+4ce5 a 90 1913
+4cef 3 91 1913
+4cf2 a 93 1913
+4d06 9 95 1913
+4d19 6 95 1913
+4d1f 3 96 1913
+4d2c 6 99 1913
+4d3c 7 99 1913
+4d43 3 100 1913
+4d46 8 93 1913
+4d5b 10 103 1913
+4d6b 3 106 1913
+4d6e 2 107 1913
+FUNC 4d70 293 0 __freetlocinfo
+4d70 7 129 1913
+4d77 47 137 1913
+4dc8 8 137 1913
+4ddd a 140 1913
+4df1 4 140 1913
+4df5 6 142 1913
+4e08 d 143 1913
+4e22 a 147 1913
+4e36 4 147 1913
+4e3a 6 149 1913
+4e4d d 150 1913
+4e67 b 153 1913
+4e7f d 154 1913
+4e99 e 161 1913
+4eb1 4 161 1913
+4ec2 11 163 1913
+4ee0 13 164 1913
+4f00 e 165 1913
+4f1b e 166 1913
+4f36 d 173 1913
+4f50 8 173 1913
+4f58 6 175 1913
+4f6b d 176 1913
+4f78 a 179 1913
+4f8c 19 182 1913
+4faf 4 182 1913
+4fb3 7 184 1913
+4fc4 16 192 1913
+4fe4 4 192 1913
+4fe8 7 194 1913
+4fef 8 179 1913
+4ff7 a 201 1913
+5001 2 202 1913
+FUNC 5003 6b 0 _updatetlocinfoEx_nolock
+5003 6 216 1913
+5009 e 219 1913
+5017 1 222 1913
+5022 2 222 1913
+5024 4 223 1913
+5028 1 230 1913
+5033 8 230 1913
+503b 4 236 1913
+503f 6 238 1913
+504f e 248 1913
+505d 7 249 1913
+5064 5 253 1913
+5069 3 220 1913
+506c 2 254 1913
+FUNC 506e 79 0 __updatetlocinfo
+506e c 281 1913
+507a 7 283 1913
+5081 10 285 1913
+5091 8 297 1913
+5099 4 300 1913
+509d 8 302 1913
+50a5 2 305 1913
+50a7 6 306 1913
+50ad 8 286 1913
+50b5 4 288 1913
+50b9 14 290 1913
+50cd e 292 1913
+50db 8 294 1913
+50e3 4 295 1913
+FUNC 50e7 8 0 _crt_debugger_hook
+50e7 0 62 1145
+50e7 7 65 1145
+50ee 1 66 1145
+FUNC 50ef 7a 0 memset
+50ef 0 59 2789
+50ef 4 68 2789
+50f3 4 69 2789
+50f7 2 71 2789
+50f9 2 72 2789
+50fb 2 74 2789
+50fd 4 75 2789
+5101 2 78 2789
+5103 2 79 2789
+5105 6 80 2789
+510b 2 81 2789
+510d 7 82 2789
+5114 2 83 2789
+5116 5 85 2789
+511b 1 91 2789
+511c 2 92 2789
+511e 3 94 2789
+5121 2 95 2789
+5123 2 97 2789
+5125 3 98 2789
+5128 2 99 2789
+512a 2 101 2789
+512c 2 103 2789
+512e 3 104 2789
+5131 3 105 2789
+5134 2 106 2789
+5136 2 110 2789
+5138 3 111 2789
+513b 2 113 2789
+513d 2 115 2789
+513f 3 117 2789
+5142 2 119 2789
+5144 2 122 2789
+5146 3 123 2789
+5149 3 124 2789
+514c 2 125 2789
+514e 2 127 2789
+5150 2 129 2789
+5152 2 130 2789
+5154 2 134 2789
+5156 3 135 2789
+5159 3 137 2789
+515c 2 138 2789
+515e 4 142 2789
+5162 1 143 2789
+5163 1 145 2789
+5164 4 148 2789
+5168 1 150 2789
+FUNC 5169 95 0 _aulldvrm
+5169 0 45 2806
+5169 1 48 2806
+516a 4 80 2806
+516e 2 81 2806
+5170 2 82 2806
+5172 4 83 2806
+5176 4 84 2806
+517a 2 85 2806
+517c 2 86 2806
+517e 2 87 2806
+5180 4 88 2806
+5184 2 89 2806
+5186 2 90 2806
+5188 2 95 2806
+518a 4 96 2806
+518e 2 97 2806
+5190 2 98 2806
+5192 4 99 2806
+5196 2 100 2806
+5198 2 101 2806
+519a 2 108 2806
+519c 4 109 2806
+51a0 4 110 2806
+51a4 4 111 2806
+51a8 2 113 2806
+51aa 2 114 2806
+51ac 2 115 2806
+51ae 2 116 2806
+51b0 2 117 2806
+51b2 2 118 2806
+51b4 2 119 2806
+51b6 2 120 2806
+51b8 4 129 2806
+51bc 2 130 2806
+51be 4 131 2806
+51c2 2 132 2806
+51c4 2 133 2806
+51c6 2 134 2806
+51c8 4 142 2806
+51cc 2 143 2806
+51ce 2 144 2806
+51d0 4 145 2806
+51d4 2 146 2806
+51d6 1 148 2806
+51d7 4 149 2806
+51db 4 150 2806
+51df 2 152 2806
+51e1 4 161 2806
+51e5 4 162 2806
+51e9 2 163 2806
+51eb 2 164 2806
+51ed 3 165 2806
+51f0 2 170 2806
+51f2 2 171 2806
+51f4 2 172 2806
+51f6 2 173 2806
+51f8 2 174 2806
+51fa 1 180 2806
+51fb 3 182 2806
+FUNC 51fe 20 0 _global_unwind2
+FUNC 521e 45 0 __unwind_handler
+FUNC 5263 84 0 _local_unwind2
+FUNC 52e7 23 0 _abnormal_termination
+FUNC 530a 9 0 _NLG_Notify1
+FUNC 5313 1f 0 _NLG_Notify
+PUBLIC 532a 0 _NLG_Dispatch2
+FUNC 5332 3 0 _NLG_Call
+PUBLIC 5334 0 _NLG_Return2
+FUNC 5335 33 0 abort
+5335 0 54 1011
+5335 5 71 1011
+533a 4 72 1011
+533e 8 74 1011
+5346 9 81 1011
+534f 11 83 1011
+5360 8 92 1011
+FUNC 5368 361 0 memcpy
+5368 3 101 2787
+536b 1 113 2787
+536c 1 114 2787
+536d 3 116 2787
+5370 3 117 2787
+5373 3 119 2787
+5376 2 129 2787
+5378 2 131 2787
+537a 2 132 2787
+537c 2 134 2787
+537e 2 135 2787
+5380 2 137 2787
+5382 6 138 2787
+5388 6 147 2787
+538e 2 148 2787
+5390 7 150 2787
+5397 2 151 2787
+5399 1 153 2787
+539a 1 154 2787
+539b 3 155 2787
+539e 3 156 2787
+53a1 2 157 2787
+53a3 1 158 2787
+53a4 1 159 2787
+53a5 2 160 2787
+53a7 5 163 2787
+53ac 6 176 2787
+53b2 2 177 2787
+53b4 3 179 2787
+53b7 3 180 2787
+53ba 3 182 2787
+53bd 2 183 2787
+53bf 2 185 2787
+53c1 7 187 2787
+53c8 2 205 2787
+53ca 5 206 2787
+53cf 3 208 2787
+53d2 2 209 2787
+53d4 3 211 2787
+53d7 2 212 2787
+53d9 7 214 2787
+53e0 8 218 2787
+53e8 14 222 2787
+53fc 2 229 2787
+53fe 2 230 2787
+5400 2 232 2787
+5402 3 233 2787
+5405 3 235 2787
+5408 3 236 2787
+540b 3 238 2787
+540e 3 239 2787
+5411 3 241 2787
+5414 3 242 2787
+5417 3 244 2787
+541a 2 245 2787
+541c 2 247 2787
+541e a 249 2787
+5428 2 253 2787
+542a 2 254 2787
+542c 2 256 2787
+542e 3 257 2787
+5431 3 259 2787
+5434 3 260 2787
+5437 3 262 2787
+543a 3 263 2787
+543d 3 265 2787
+5440 2 266 2787
+5442 2 268 2787
+5444 8 270 2787
+544c 2 274 2787
+544e 2 275 2787
+5450 2 277 2787
+5452 3 278 2787
+5455 3 280 2787
+5458 3 281 2787
+545b 3 283 2787
+545e 2 284 2787
+5460 2 286 2787
+5462 2a 288 2787
+548c 4 295 2787
+5490 4 297 2787
+5494 4 299 2787
+5498 4 301 2787
+549c 4 303 2787
+54a0 4 305 2787
+54a4 4 307 2787
+54a8 4 309 2787
+54ac 4 311 2787
+54b0 4 313 2787
+54b4 4 315 2787
+54b8 4 317 2787
+54bc 4 319 2787
+54c0 4 321 2787
+54c4 7 323 2787
+54cb 2 325 2787
+54cd 2 326 2787
+54cf 19 328 2787
+54e8 3 337 2787
+54eb 1 338 2787
+54ec 1 339 2787
+54ed 3 341 2787
+54f0 2 345 2787
+54f2 2 347 2787
+54f4 3 348 2787
+54f7 1 349 2787
+54f8 1 350 2787
+54f9 3 351 2787
+54fc 2 355 2787
+54fe 2 357 2787
+5500 3 358 2787
+5503 3 359 2787
+5506 3 360 2787
+5509 1 361 2787
+550a 1 362 2787
+550b 5 363 2787
+5510 2 367 2787
+5512 2 369 2787
+5514 3 370 2787
+5517 3 371 2787
+551a 3 372 2787
+551d 3 373 2787
+5520 3 374 2787
+5523 1 375 2787
+5524 1 376 2787
+5525 3 377 2787
+5528 4 388 2787
+552c 4 389 2787
+5530 6 394 2787
+5536 2 395 2787
+5538 3 397 2787
+553b 3 398 2787
+553e 3 400 2787
+5541 2 401 2787
+5543 1 403 2787
+5544 2 404 2787
+5546 1 405 2787
+5547 9 407 2787
+5550 2 411 2787
+5552 a 414 2787
+555c 2 419 2787
+555e 5 420 2787
+5563 3 422 2787
+5566 2 423 2787
+5568 3 425 2787
+556b 2 426 2787
+556d 7 428 2787
+5574 14 432 2787
+5588 3 439 2787
+558b 2 440 2787
+558d 3 442 2787
+5590 3 443 2787
+5593 3 445 2787
+5596 3 446 2787
+5599 3 448 2787
+559c 2 449 2787
+559e 1 451 2787
+559f 2 452 2787
+55a1 1 453 2787
+55a2 a 455 2787
+55ac 3 459 2787
+55af 2 460 2787
+55b1 3 462 2787
+55b4 3 463 2787
+55b7 3 465 2787
+55ba 3 466 2787
+55bd 3 468 2787
+55c0 3 469 2787
+55c3 3 471 2787
+55c6 2 472 2787
+55c8 1 474 2787
+55c9 2 475 2787
+55cb 1 476 2787
+55cc 8 478 2787
+55d4 3 482 2787
+55d7 2 483 2787
+55d9 3 485 2787
+55dc 3 486 2787
+55df 3 488 2787
+55e2 3 489 2787
+55e5 3 491 2787
+55e8 3 492 2787
+55eb 3 494 2787
+55ee 3 495 2787
+55f1 3 497 2787
+55f4 6 498 2787
+55fa 1 500 2787
+55fb 2 501 2787
+55fd 1 502 2787
+55fe 2a 504 2787
+5628 4 513 2787
+562c 4 515 2787
+5630 4 517 2787
+5634 4 519 2787
+5638 4 521 2787
+563c 4 523 2787
+5640 4 525 2787
+5644 4 527 2787
+5648 4 529 2787
+564c 4 531 2787
+5650 4 533 2787
+5654 4 535 2787
+5658 4 537 2787
+565c 4 539 2787
+5660 7 541 2787
+5667 2 543 2787
+5669 2 544 2787
+566b 19 546 2787
+5684 3 555 2787
+5687 1 557 2787
+5688 1 558 2787
+5689 3 559 2787
+568c 3 563 2787
+568f 3 565 2787
+5692 3 566 2787
+5695 1 567 2787
+5696 1 568 2787
+5697 5 569 2787
+569c 3 573 2787
+569f 3 575 2787
+56a2 3 576 2787
+56a5 3 577 2787
+56a8 3 578 2787
+56ab 1 579 2787
+56ac 1 580 2787
+56ad 3 581 2787
+56b0 3 585 2787
+56b3 3 587 2787
+56b6 3 588 2787
+56b9 3 589 2787
+56bc 3 590 2787
+56bf 3 591 2787
+56c2 3 592 2787
+56c5 1 593 2787
+56c6 1 594 2787
+56c7 2 595 2787
+FUNC 56c9 2a 0 _freea
+56c9 5 235 281
+56ce 7 237 281
+56d5 3 239 281
+56e2 8 241 281
+56ea 7 243 281
+56f1 2 252 281
+FUNC 56f3 3d 0 _msize
+56f3 5 39 561
+56f8 23 43 561
+571b 2 50 561
+571d 11 46 561
+572e 2 50 561
+FUNC 5730 9 0 _fptrap
+5730 0 46 4123
+5730 8 47 4123
+5738 1 48 4123
+FUNC 5739 106 0 __report_gsfailure
+5739 b 140 1392
+5744 5 170 1392
+5749 6 171 1392
+574f 6 172 1392
+5755 6 173 1392
+575b 6 174 1392
+5761 6 175 1392
+5767 7 176 1392
+576e 7 177 1392
+5775 7 178 1392
+577c 7 179 1392
+5783 7 180 1392
+578a 7 181 1392
+5791 1 182 1392
+5792 6 183 1392
+5798 3 190 1392
+579b 5 191 1392
+57a0 3 192 1392
+57a3 5 193 1392
+57a8 3 194 1392
+57ab 5 195 1392
+57b0 6 201 1392
+57b6 a 204 1392
+57c0 a 206 1392
+57ca a 285 1392
+57d4 a 286 1392
+57de b 293 1392
+57e9 b 294 1392
+57f4 b 297 1392
+57ff 8 298 1392
+5807 8 302 1392
+580f b 304 1392
+581a 9 313 1392
+5823 8 315 1392
+582b 12 319 1392
+583d 2 320 1392
+FUNC 583f 8d 0 _calloc_impl
+FUNC 58d6 9 0 _calloc_impl
+583f 5 21 291
+5844 7 26 291
+584b 11 28 291
+5866 8 28 291
+586e 2 69 291
+5870 7 30 291
+5877 4 34 291
+587b 1 35 291
+587c 2 39 291
+587e 5 41 291
+5883 f 44 291
+5892 d 47 291
+589f b 59 291
+58aa 7 61 291
+58bb 6 62 291
+58c1 4 63 291
+58c5 7 52 291
+58d6 7 53 291
+58dd 2 69 291
+FUNC 58df bb 0 realloc
+FUNC 59a4 6 0 realloc
+58df 5 62 618
+58e4 6 67 618
+58ea 9 68 618
+58f3 3 117 618
+58f6 7 71 618
+58fd 9 73 618
+5906 5 74 618
+590b 2 109 618
+590d 4 83 618
+5911 1 84 618
+5912 14 85 618
+5926 c 94 618
+5932 b 109 618
+593d 5 81 618
+5942 7 89 618
+5949 5 90 618
+5958 6 90 618
+595e 4 91 618
+5962 2 117 618
+5964 14 111 618
+5982 2 111 618
+5984 2 112 618
+5986 14 103 618
+59a4 2 103 618
+59a6 4 105 618
+FUNC 59aa 22d 0 __crtLCMapStringA_stat
+59aa 12 96 3447
+59bc c 101 3447
+59c8 21 102 3447
+59e9 4 106 3447
+59ed 1 107 3447
+59ee 3 109 3447
+59f1 3 113 3447
+59f4 5 133 3447
+59f9 3 134 3447
+5a06 2 134 3447
+5a12 6 134 3447
+5a18 2c 145 3447
+5a44 7 146 3447
+5a4b 5c 149 3447
+5aa7 3 150 3447
+5aaa 2 151 3447
+5aac 19 160 3447
+5ac5 1f 169 3447
+5ae4 a 172 3447
+5aee b 175 3447
+5af9 9 177 3447
+5b02 10 186 3447
+5b12 5 190 3447
+5b17 5f 196 3447
+5b76 4 197 3447
+5b7a 16 207 3447
+5b90 9 220 3447
+5b99 2 223 3447
+5b9b 17 233 3447
+5bb2 7 240 3447
+5bb9 8 242 3447
+5bc1 4 244 3447
+5bc5 12 245 3447
+FUNC 5bd7 40 0 __crtLCMapStringA
+FUNC 5c21 6 0 __crtLCMapStringA
+5bd7 8 258 3447
+5bdf b 259 3447
+5bea 2d 271 3447
+5c21 4 271 3447
+5c25 2 272 3447
+FUNC 5c27 112 0 __crtGetStringTypeA_stat
+5c27 12 63 3507
+5c39 7 67 3507
+5c40 5 83 3507
+5c45 3 84 3507
+5c52 2 84 3507
+5c5e 6 84 3507
+5c64 29 95 3507
+5c8d 7 96 3507
+5c94 52 99 3507
+5ce6 2 100 3507
+5ce8 2 101 3507
+5cea f 103 3507
+5cf9 13 111 3507
+5d0c 11 116 3507
+5d1d 6 118 3507
+5d23 4 120 3507
+5d27 12 121 3507
+FUNC 5d39 3a 0 __crtGetStringTypeA
+FUNC 5d7d 6 0 __crtGetStringTypeA
+5d39 8 133 3507
+5d41 b 134 3507
+5d4c 27 145 3507
+5d7d 4 145 3507
+5d81 2 146 3507
+FUNC 5d83 775 0 __free_lc_time
+5d83 6 228 1800
+5d89 b 229 1800
+5d9e 8 232 1800
+5db0 8 233 1800
+5dc2 8 234 1800
+5dd4 8 235 1800
+5de6 8 236 1800
+5df8 8 237 1800
+5e0a 7 238 1800
+5e1b 8 240 1800
+5e2d 8 241 1800
+5e3f 8 242 1800
+5e51 8 243 1800
+5e63 8 244 1800
+5e75 8 245 1800
+5e87 8 246 1800
+5e99 8 248 1800
+5eab b 249 1800
+5ec0 8 250 1800
+5ed2 8 251 1800
+5ee4 8 252 1800
+5ef6 8 253 1800
+5f08 8 254 1800
+5f1a 8 255 1800
+5f2c 8 256 1800
+5f3e 8 257 1800
+5f50 8 258 1800
+5f62 8 259 1800
+5f74 8 261 1800
+5f86 8 262 1800
+5f98 8 263 1800
+5faa 8 264 1800
+5fbc 8 265 1800
+5fce b 266 1800
+5fe6 b 267 1800
+5ffe b 268 1800
+6016 b 269 1800
+602e b 270 1800
+6046 b 271 1800
+605e b 272 1800
+6076 b 274 1800
+608e b 275 1800
+60a6 b 277 1800
+60be b 278 1800
+60d6 b 279 1800
+60ee b 282 1800
+6106 b 283 1800
+611e b 284 1800
+6136 b 285 1800
+614e e 286 1800
+6169 b 287 1800
+6181 b 288 1800
+6199 b 290 1800
+61b1 b 291 1800
+61c9 b 292 1800
+61e1 b 293 1800
+61f9 b 294 1800
+6211 b 295 1800
+6229 b 296 1800
+6241 b 298 1800
+6259 b 299 1800
+6271 b 300 1800
+6289 b 301 1800
+62a1 b 302 1800
+62b9 b 303 1800
+62d1 e 304 1800
+62ec b 305 1800
+6304 b 306 1800
+631c b 307 1800
+6334 b 308 1800
+634c b 309 1800
+6364 b 311 1800
+637c b 312 1800
+6394 b 313 1800
+63ac b 314 1800
+63c4 b 315 1800
+63dc b 316 1800
+63f4 b 317 1800
+640c b 318 1800
+6424 b 319 1800
+643c b 320 1800
+6454 e 321 1800
+646f b 322 1800
+6487 b 324 1800
+649f b 325 1800
+64b7 b 327 1800
+64cf b 328 1800
+64e7 f 329 1800
+64f6 2 332 1800
+FUNC 64f8 9f 0 __free_lconv_num
+64f8 6 218 1742
+64fe b 219 1742
+6513 a 222 1742
+651d 7 223 1742
+652e b 225 1742
+6539 7 226 1742
+654a b 228 1742
+6555 7 229 1742
+6566 b 231 1742
+6571 7 232 1742
+6582 b 234 1742
+658d 8 235 1742
+6595 2 236 1742
+FUNC 6597 180 0 __free_lconv_mon
+6597 6 270 1685
+659d b 271 1685
+65b2 b 274 1685
+65bd 7 275 1685
+65ce b 277 1685
+65d9 7 278 1685
+65ea b 280 1685
+65f5 7 281 1685
+6606 b 283 1685
+6611 7 284 1685
+6622 b 286 1685
+662d 7 287 1685
+663e b 289 1685
+6649 7 290 1685
+665a b 292 1685
+6665 7 293 1685
+6676 b 295 1685
+6681 7 296 1685
+6692 b 298 1685
+669d 7 299 1685
+66ae b 301 1685
+66b9 7 302 1685
+66ca b 304 1685
+66d5 7 305 1685
+66e6 b 307 1685
+66f1 7 308 1685
+6702 b 310 1685
+670d 8 311 1685
+6715 2 312 1685
+FUNC 6717 ba 0 _VEC_memzero
+FUNC 67d1 10 0 __sse2_available_init
+67d1 0 30 4315
+67d1 d 31 4315
+67de 2 32 4315
+67e0 1 33 4315
+FUNC 67e1 103 0 _VEC_memcpy
+FUNC 68e4 2c 0 _alloca_probe_16
+68e4 0 44 4274
+68e4 1 46 4274
+68e5 4 47 4274
+68e9 2 48 4274
+68eb 3 49 4274
+68ee 2 50 4274
+68f0 2 51 4274
+68f2 2 52 4274
+68f4 1 53 4274
+68f5 5 54 4274
+68fa 1 59 4274
+68fb 4 60 4274
+68ff 2 61 4274
+6901 3 62 4274
+6904 2 63 4274
+6906 2 64 4274
+6908 2 65 4274
+690a 1 66 4274
+690b 5 67 4274
+PUBLIC 68fa 0 _alloca_probe_8
+FUNC 6910 34 0 _allmul
+6910 0 47 2803
+6910 4 63 2803
+6914 4 64 2803
+6918 2 65 2803
+691a 4 66 2803
+691e 2 67 2803
+6920 4 69 2803
+6924 2 70 2803
+6926 3 72 2803
+6929 1 75 2803
+692a 2 83 2803
+692c 2 84 2803
+692e 4 86 2803
+6932 4 87 2803
+6936 2 88 2803
+6938 4 90 2803
+693c 2 91 2803
+693e 2 92 2803
+6940 1 94 2803
+6941 3 96 2803
+FUNC 6944 2b 0 _chkstk
+6944 0 65 4276
+6944 1 69 4276
+6945 4 73 4276
+6949 2 74 4276
+694b 2 79 4276
+694d 2 80 4276
+694f 2 81 4276
+6951 2 83 4276
+6953 5 84 4276
+6958 2 87 4276
+695a 2 88 4276
+695c 2 89 4276
+695e 1 90 4276
+695f 1 91 4276
+6960 2 92 4276
+6962 3 93 4276
+6965 1 94 4276
+6966 5 98 4276
+696b 2 99 4276
+696d 2 100 4276
+FUNC 696f 46 0 strcspn
+696f 4 191 2794
+6973 2 198 2794
+6975 1 199 2794
+6976 1 200 2794
+6977 1 201 2794
+6978 1 202 2794
+6979 1 203 2794
+697a 1 204 2794
+697b 1 205 2794
+697c 1 206 2794
+697d 6 212 2794
+6983 2 216 2794
+6985 2 217 2794
+6987 2 218 2794
+6989 3 219 2794
+698c 4 220 2794
+6990 2 221 2794
+6992 3 227 2794
+6995 6 229 2794
+699b 3 234 2794
+699e 2 236 2794
+69a0 2 237 2794
+69a2 2 238 2794
+69a4 3 239 2794
+69a7 4 240 2794
+69ab 2 245 2794
+69ad 2 255 2794
+69af 3 257 2794
+69b2 3 259 2794
+FUNC 69b5 40 0 strpbrk
+69b5 4 191 2794
+69b9 2 198 2794
+69bb 1 199 2794
+69bc 1 200 2794
+69bd 1 201 2794
+69be 1 202 2794
+69bf 1 203 2794
+69c0 1 204 2794
+69c1 1 205 2794
+69c2 1 206 2794
+69c3 6 212 2794
+69c9 2 216 2794
+69cb 2 217 2794
+69cd 2 218 2794
+69cf 3 219 2794
+69d2 4 220 2794
+69d6 2 221 2794
+69d8 5 227 2794
+69dd 2 236 2794
+69df 2 237 2794
+69e1 2 238 2794
+69e3 3 239 2794
+69e6 4 240 2794
+69ea 2 247 2794
+69ec 3 248 2794
+69ef 3 257 2794
+69f2 3 259 2794
+FUNC 69f5 61 0 __ascii_strnicmp
+69f5 6 69 2798
+69fb 3 75 2798
+69fe 2 76 2798
+6a00 2 77 2798
+6a02 3 79 2798
+6a05 3 80 2798
+6a08 2 82 2798
+6a0a 2 83 2798
+6a0c 5 84 2798
+6a11 2 89 2798
+6a13 2 91 2798
+6a15 2 93 2798
+6a17 2 95 2798
+6a19 2 97 2798
+6a1b 2 98 2798
+6a1d 3 100 2798
+6a20 3 101 2798
+6a23 2 103 2798
+6a25 2 104 2798
+6a27 2 106 2798
+6a29 2 107 2798
+6a2b 2 109 2798
+6a2d 2 112 2798
+6a2f 2 113 2798
+6a31 2 115 2798
+6a33 2 116 2798
+6a35 2 118 2798
+6a37 2 121 2798
+6a39 2 122 2798
+6a3b 3 124 2798
+6a3e 2 125 2798
+6a40 2 128 2798
+6a42 2 129 2798
+6a44 2 130 2798
+6a46 5 133 2798
+6a4b 2 134 2798
+6a4d 2 135 2798
+6a4f 2 138 2798
+6a51 5 140 2798
+PUBLIC 6a56 10 RtlUnwind
+STACK WIN 4 1000 54 6 0 8 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1060 a 3 0 0 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 106a 35 7 0 0 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 109f 1e 7 0 0 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 10bd 7 7 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 10c4 6 0 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 10d4 9 0 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 10dd 7 7 0 0 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 10e4 24 0 0 0 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1112 7 0 0 0 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1119 10 7 0 0 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1129 7 3 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1130 2c 7 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 115c 1a 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 1176 21 8 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 117c 17 2 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 1197 b 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 11a2 29 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 11cb 161 c 0 0 10 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ =  $24 $T0 48 - ^ = 
+STACK WIN 4 12ee 14 0 0 0 10 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 132c a 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 1336 70 c 0 4 10 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 32 - ^ =  $23 $T0 36 - ^ =  $24 $T0 40 - ^ = 
+STACK WIN 4 139d 8 0 0 4 10 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 142e 5 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1433 30 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 146d 5 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 144f 14 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 146d 3 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 1472 6a 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 14dc e 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 14ea 2b 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1515 18 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 152d 9 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 1536 9 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 153f 33 3 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 1542 2f 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 1572 2e 6 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1578 26 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 15a0 a1 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 15e2 3e 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 15e3 3c 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 1641 140 c 0 c 10 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 52 - ^ =  $23 $T0 56 - ^ =  $24 $T0 60 - ^ = 
+STACK WIN 4 176c e 0 0 c 10 30 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 1781 16 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1797 16 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 17ad f 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 17bc f 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 17cb 1e 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 17e9 26 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 180f 1c5 1b 0 4 0 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1825 1a8 5 0 4 4 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ = 
+STACK WIN 4 1826 1a4 4 0 4 8 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ = 
+STACK WIN 4 182a 19f 0 0 4 c 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ =  $24 $T0 520 - ^ = 
+STACK WIN 4 19d4 39 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 1a0d 251 6 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1a13 236 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 1c53 9 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 1a3f 20a 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 1c53 8 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 1ab8 191 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ =  $20 $T0 12 - ^ = 
+STACK WIN 4 1c53 4 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ =  $20 $T0 12 - ^ = 
+STACK WIN 4 1c5e dc 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 1c6d a8 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 1c74 a0 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 1cb6 5d 0 0 0 c 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ =  $20 $T0 12 - ^ = 
+STACK WIN 4 1d3a d d 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1d51 2d7 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2032 3 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 203f 4 0 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1d44 3 3 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 1d51 2d3 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 1d51 2d2 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 2043 c5 d 0 0 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 204c ba 4 0 0 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ = 
+STACK WIN 4 204f b6 1 0 0 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ = 
+STACK WIN 4 2050 b4 0 0 0 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ =  $24 $T0 24 - ^ = 
+STACK WIN 4 2108 b8 a 0 0 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2111 ad 1 0 0 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ = 
+STACK WIN 4 2112 ab 0 0 0 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ = 
+STACK WIN 4 215b 61 0 0 0 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ =  $24 $T0 24 - ^ = 
+STACK WIN 4 21c0 3b2 9 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 21c9 3a2 0 0 0 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ = 
+STACK WIN 4 2280 2ea 0 0 0 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ = 
+STACK WIN 4 2281 2e8 0 0 0 c 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ =  $24 $T0 88 - ^ = 
+STACK WIN 4 2572 30 e 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 2575 2c b 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2580 20 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 25a2 30 e 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 25a5 2c b 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 25b0 20 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 25d2 9 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 25db 9 0 0 4 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 25e4 34 3 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 25e7 30 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2618 3d 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 2655 b4 c 0 8 10 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ =  $24 $T0 36 - ^ = 
+STACK WIN 4 26f1 e 0 0 8 10 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 2700 8 0 0 8 10 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 2709 8d 4 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 270c 89 1 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 270d 85 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 2796 1a 3 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 2799 16 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 27b0 12f c 0 4 10 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ =  $24 $T0 36 - ^ = 
+STACK WIN 4 28c7 b 0 0 4 10 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 28d3 b 0 0 4 10 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 28df 18f 3 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 28e2 18b 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 28fd 16f 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $24 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 2a6e 1e 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 2ae5 21 21 0 10 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2b10 299 0 0 10 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2aee 18 18 0 10 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ = 
+STACK WIN 4 2b10 16c 0 0 10 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ = 
+STACK WIN 4 2afc a a 0 10 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ = 
+STACK WIN 4 2b10 16b 0 0 10 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ = 
+STACK WIN 4 2b10 16a 0 0 10 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ =  $24 $T0 36 - ^ = 
+STACK WIN 4 2da9 9b 17 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2dbf 83 1 0 0 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ = 
+STACK WIN 4 2dc0 81 0 0 0 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $24 $T0 24 - ^ = 
+STACK WIN 4 2ddc 64 0 0 0 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $24 $T0 24 - ^ =  $23 $T0 28 - ^ = 
+STACK WIN 4 2e44 f 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2e53 129 1a 0 c 8 328 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 812 - ^ =  $24 $T0 816 - ^ = 
+STACK WIN 4 2f7c 25 3 0 14 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 2f7f 21 0 0 14 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2fa1 2d 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2fce 10 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 2fde 5e 4 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 2fe1 4e 1 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2fe2 4c 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 303c 89 a 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 303f 85 7 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 3046 7d 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 3056 3e 0 0 0 c 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 30c5 17 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 30dc c2 c 0 4 10 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 32 - ^ =  $23 $T0 36 - ^ =  $24 $T0 40 - ^ = 
+STACK WIN 4 3195 8 0 0 4 10 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 319e 47 9 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 31a7 29 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 31da 9 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 31e5 9c a 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 31ee 91 1 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 31ef 7c 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 3275 9 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 330c b6 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3312 9b 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 33b7 9 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 331f 70 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 3399 6 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 3320 6f 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 3399 5 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 3514 42 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3556 13 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 3569 39 c 0 0 10 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ =  $24 $T0 36 - ^ = 
+STACK WIN 4 3589 4 0 0 0 10 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 35a2 11 0 0 4 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 35b3 1e 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 35d1 5 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 35d6 33 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3613 9 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 35ea 1b 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 361c d 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 3629 1a3 c 0 4 10 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 52 - ^ =  $23 $T0 56 - ^ =  $24 $T0 60 - ^ = 
+STACK WIN 4 378a 14 0 0 4 10 30 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 37cc f 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 37db f 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 37ea f 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 37f9 28 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3821 c0 f 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3828 b7 8 0 4 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 3829 b5 7 0 4 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 3830 ad 0 0 4 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ =  $24 $T0 16 - ^ = 
+STACK WIN 4 38e1 3 3 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 38e4 27 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 3915 7 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 38e4 27 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 3915 6 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 391c 3c c 0 4 10 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 32 - ^ =  $23 $T0 36 - ^ =  $24 $T0 40 - ^ = 
+STACK WIN 4 3952 5 0 0 4 10 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 3958 17 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 396f 23 4 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 3972 1f 1 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 3973 1d 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 3992 5d 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 39ef 27 27 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3a20 7 7 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3a27 3e 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3a15 1 1 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 3a20 7 7 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 3a27 3c 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 3a20 42 7 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 3a27 3a 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 3a65 bc 35 0 4 10 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ =  $24 $T0 36 - ^ = 
+STACK WIN 4 3af0 13 0 0 4 10 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 3b21 16c 1e 0 c 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3b37 14f 8 0 c 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ = 
+STACK WIN 4 3b3e 145 1 0 c 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ = 
+STACK WIN 4 3b3f 143 0 0 c c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ =  $24 $T0 48 - ^ = 
+STACK WIN 4 3c8d a a 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3c97 a2 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3d43 9 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3c93 2c 4 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 3c97 27 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 3d4c e e 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3d5a 11d 0 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3e81 9 0 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3d55 17 5 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 3d59 28 1 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 3d5a 10 0 0 10 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 3e8a 25 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3eaf a a 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3eb9 86 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3f49 6 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3eb5 2c 4 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 3eb9 27 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 3f4f 49 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3f98 f 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 3fa7 45 7 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3fad 3d 1 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 3fae 3b 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 3fec 4c 7 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3ff2 44 1 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 3ff3 42 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 4038 4e 7 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 403e 46 1 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 403f 44 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 4086 2f 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 40b5 6 6 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 40bb a5 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 416a 9 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 40b8 3 3 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 40bb a5 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 416a 8 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 40b9 2 2 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 40bb 97 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 415d 3 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 416a 7 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 4173 246 17 0 0 0 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4189 229 1 0 0 4 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ = 
+STACK WIN 4 418a 225 0 0 0 8 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ =  $24 $T0 1316 - ^ = 
+STACK WIN 4 43b9 a4 c 0 0 10 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 32 - ^ =  $23 $T0 36 - ^ =  $24 $T0 40 - ^ = 
+STACK WIN 4 4451 b 0 0 0 10 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 445d b b 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4472 148 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4466 2 2 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 4472 127 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 45a3 3 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 45b0 6 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 45ba 9 9 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 45c3 7e 0 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 464b 9 0 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 45c3 7e 0 0 0 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ = 
+STACK WIN 4 464b 7 0 0 0 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ = 
+STACK WIN 4 4654 2d2 1b 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4667 2b8 8 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ = 
+STACK WIN 4 466b 2b1 4 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ = 
+STACK WIN 4 466f 2ac 0 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ =  $24 $T0 44 - ^ = 
+STACK WIN 4 4926 19a c 0 4 10 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ =  $24 $T0 48 - ^ = 
+STACK WIN 4 4a87 8 0 0 4 10 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 4ac0 1e 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 4ade 8 8 0 10 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4ae6 68 0 0 10 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4b58 6 0 0 10 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4b5e 18 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4b76 f8 e 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4b7c f0 8 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 4b7d ee 7 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 4b84 e6 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 4c6e 102 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4c74 fa 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 4c80 eb 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ =  $20 $T0 8 - ^ = 
+STACK WIN 4 4c81 e9 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 4d70 a a 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4d87 9 9 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4d90 273 0 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4d76 4 4 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 4d87 9 9 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 4d90 271 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 4d77 3 3 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 4d87 9 9 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 4d90 270 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 4d90 26f 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 5003 6b 6 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5009 63 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 5022 45 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 506e 79 c 0 0 10 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 32 - ^ =  $23 $T0 36 - ^ =  $24 $T0 40 - ^ = 
+STACK WIN 4 50db 8 0 0 0 10 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 50e7 8 0 0 4 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 5335 33 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 56c9 2a 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 56f3 3d 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5730 9 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 5739 106 b 0 0 0 328 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 583f 5 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5844 88 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 58d6 9 0 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5875 57 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 58d6 7 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 58df 5 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 58e4 b6 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 59a4 6 0 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 58f6 6c 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 590b 43 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 5958 9 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 59aa 22d 1a 0 24 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $23 $T0 24 - ^ =  $24 $T0 28 - ^ = 
+STACK WIN 4 5bd7 8 8 0 24 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5bdf 38 0 0 24 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5c21 6 0 0 24 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5c27 112 16 0 1c c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 12 - ^ =  $23 $T0 16 - ^ =  $24 $T0 20 - ^ = 
+STACK WIN 4 5d39 8 8 0 20 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5d41 32 0 0 20 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5d7d 6 0 0 20 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5d83 775 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5d89 76d 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 64f8 9f 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 64fe 97 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 6597 180 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 659d 178 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 6717 ba 0 0 c 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 67d1 10 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 67e1 103 0 0 c 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 0 12ee 14 0 0 0 0 0 0 0 0
+STACK WIN 0 139d 9 0 0 0 0 0 0 0 0
+STACK WIN 0 13a6 88 0 0 8 0 0 0 0 0
+STACK WIN 0 176c f 0 0 0 0 0 0 0 0
+STACK WIN 0 26f1 f 0 0 0 0 0 0 0 0
+STACK WIN 0 2700 9 0 0 0 0 0 0 0 0
+STACK WIN 0 28c7 c 0 0 0 0 0 0 0 0
+STACK WIN 0 28d3 c 0 0 0 0 0 0 0 0
+STACK WIN 0 3195 9 0 0 0 0 0 0 0 0
+STACK WIN 0 3281 8b 0 0 4 0 0 0 0 0
+STACK WIN 0 33c2 90 3 0 c c 0 0 0 0
+STACK WIN 0 3452 46 0 0 10 4 0 0 0 1
+STACK WIN 0 34b4 17 4 0 0 10 0 0 0 1
+STACK WIN 0 34cb 19 0 0 0 0 0 0 0 0
+STACK WIN 0 34fd 17 1 0 8 4 0 0 0 1
+STACK WIN 0 3589 4 0 0 0 0 0 0 0 0
+STACK WIN 0 378a 15 0 0 0 0 0 0 0 0
+STACK WIN 0 3952 6 0 0 0 0 0 0 0 0
+STACK WIN 0 3af0 13 0 0 0 0 0 0 0 0
+STACK WIN 0 4451 c 0 0 0 0 0 0 0 0
+STACK WIN 0 4a87 9 0 0 0 0 0 0 0 0
+STACK WIN 0 50db 9 0 0 0 0 0 0 0 0
+STACK WIN 0 50ef 7a 0 0 c 0 0 0 0 0
+STACK WIN 0 5169 95 0 0 10 0 4 0 0 0
+STACK WIN 0 5263 84 3 0 8 c 0 0 0 0
+STACK WIN 0 52e7 23 0 0 0 0 0 0 0 0
+STACK WIN 0 5332 3 0 0 0 0 0 0 0 0
+STACK WIN 0 6910 1a 0 0 10 0 0 0 0 0
+STACK WIN 0 692a 1a 0 0 10 0 4 0 0 0
diff --git a/google-breakpad/src/tools/windows/dump_syms/testdata/omap_stretched_filled.pdb b/google-breakpad/src/tools/windows/dump_syms/testdata/omap_stretched_filled.pdb
new file mode 100644
index 0000000..b91b69b
--- /dev/null
+++ b/google-breakpad/src/tools/windows/dump_syms/testdata/omap_stretched_filled.pdb
Binary files differ
diff --git a/google-breakpad/src/tools/windows/dump_syms/testdata/omap_stretched_filled.sym b/google-breakpad/src/tools/windows/dump_syms/testdata/omap_stretched_filled.sym
new file mode 100644
index 0000000..23a65eb
--- /dev/null
+++ b/google-breakpad/src/tools/windows/dump_syms/testdata/omap_stretched_filled.sym
@@ -0,0 +1,2945 @@
+MODULE windows x86 79B9AD4B6BDE4A5283EB6870045001E91 omap_stretched_filled.pdb
+FILE 1 c:\src\breakpad\src\src\tools\windows\dump_syms\testdata\dump_syms_regtest.cc
+FILE 2 f:\dd\public\sdk\inc\internal\pebteb.h
+FILE 3 f:\dd\public\sdk\inc\internal\ntldr.h
+FILE 4 f:\dd\public\sdk\inc\internal\ntconfig.h
+FILE 5 f:\dd\public\sdk\inc\internal\ntregapi.h
+FILE 6 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h
+FILE 7 f:\dd\public\ddk\inc\ntdef.h
+FILE 8 f:\dd\public\sdk\inc\internal\ntmmapi.h
+FILE 9 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h
+FILE 10 f:\dd\public\sdk\inc\pshpack1.h
+FILE 11 f:\dd\public\sdk\inc\internal\nxi386.h
+FILE 12 f:\dd\public\ddk\inc\poppack.h
+FILE 13 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\process.h
+FILE 14 f:\dd\public\sdk\inc\pshpack8.h
+FILE 15 f:\dd\public\ddk\inc\ntpoapi.h
+FILE 16 f:\dd\public\sdk\inc\internal\ntexapi.h
+FILE 17 f:\dd\public\sdk\inc\poppack.h
+FILE 18 f:\dd\public\ddk\inc\ntimage.h
+FILE 19 f:\dd\public\ddk\inc\pshpack4.h
+FILE 20 f:\dd\public\sdk\inc\pshpack2.h
+FILE 21 f:\dd\public\ddk\inc\ntnls.h
+FILE 22 f:\dd\public\sdk\inc\internal\ntelfapi.h
+FILE 23 f:\dd\public\sdk\inc\internal\ntpsapi.h
+FILE 24 f:\dd\public\sdk\inc\internal\nti386.h
+FILE 25 f:\dd\public\sdk\inc\specstrings.h
+FILE 26 f:\dd\public\sdk\inc\sal_supp.h
+FILE 27 f:\dd\public\sdk\inc\specstrings_supp.h
+FILE 28 f:\dd\public\sdk\inc\specstrings_strict.h
+FILE 29 f:\dd\public\sdk\inc\specstrings_undef.h
+FILE 30 f:\dd\public\sdk\inc\driverspecs.h
+FILE 31 f:\dd\public\sdk\inc\sdv_driverspecs.h
+FILE 32 f:\dd\public\sdk\inc\basetsd.h
+FILE 33 f:\dd\public\sdk\inc\internal\ntpnpapi.h
+FILE 34 f:\dd\public\sdk\inc\cfg.h
+FILE 35 f:\dd\public\sdk\inc\internal\ntxcapi.h
+FILE 36 f:\dd\public\sdk\inc\guiddef.h
+FILE 37 f:\dd\public\sdk\inc\internal\nt.h
+FILE 38 f:\dd\public\sdk\inc\ntstatus.h
+FILE 39 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h
+FILE 40 f:\dd\public\sdk\inc\internal\ntkeapi.h
+FILE 41 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h
+FILE 42 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h
+FILE 43 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\codeanalysis\sourceannotations.h
+FILE 44 f:\dd\public\sdk\inc\internal\ntobapi.h
+FILE 45 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\string.h
+FILE 46 f:\dd\public\sdk\inc\internal\ntioapi.h
+FILE 47 f:\dd\public\ddk\inc\devioctl.h
+FILE 48 f:\dd\public\sdk\inc\internal\ntseapi.h
+FILE 49 f:\dd\public\ddk\inc\mce.h
+FILE 50 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\misc\i386\chandler4.c
+FILE 51 f:\dd\public\sdk\inc\pshpack4.h
+FILE 52 f:\dd\public\devdiv\inc\ddbanned.h
+FILE 53 f:\dd\public\sdk\inc\internal\ntlpcapi.h
+FILE 54 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h
+FILE 55 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h
+FILE 56 f:\dd\public\sdk\inc\internal\ntiolog.h
+FILE 57 f:\dd\vctools\crt_bld\SELF_X86\crt\prebuild\misc\i386\exsup.asm
+FILE 58 f:\dd\vctools\crt_bld\SELF_X86\crt\prebuild\h\pversion.inc
+FILE 59 f:\dd\vctools\crt_bld\SELF_X86\crt\prebuild\h\cmacros.inc
+FILE 60 f:\dd\vctools\crt_bld\SELF_X86\crt\prebuild\h\exsup.inc
+FILE 61 f:\dd\vctools\crt_bld\SELF_X86\crt\prebuild\misc\i386\nlgsupp.asm
+FILE 62 f:\dd\vctools\crt_bld\SELF_X86\crt\prebuild\misc\i386\exsup4.asm
+FILE 64 f:\dd\vctools\crt_bld\SELF_X86\crt\prebuild\misc\i386\sehprolg4.asm
+FILE 65 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\string\i386\p4_memcpy.c
+FILE 69 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\string\i386\memcmp.c
+FILE 73 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\string\i386\p4_memset.c
+FILE 77 f:\dd\public\sdk\inc\winreg.h
+FILE 78 f:\dd\public\sdk\inc\imm.h
+FILE 79 f:\dd\public\sdk\inc\wingdi.h
+FILE 80 f:\dd\vctools\crt_bld\self_x86\crt\src\stdlib.h
+FILE 81 f:\dd\public\sdk\inc\winerror.h
+FILE 82 f:\dd\public\sdk\inc\ktmtypes.h
+FILE 84 f:\dd\vctools\crt_bld\self_x86\crt\src\stdarg.h
+FILE 85 f:\dd\public\sdk\inc\windef.h
+FILE 86 f:\dd\public\sdk\inc\winbase.h
+FILE 88 f:\dd\vctools\crt_bld\self_x86\crt\src\string.h
+FILE 89 f:\dd\public\sdk\inc\winuser.h
+FILE 91 f:\dd\public\sdk\inc\winnetwk.h
+FILE 92 f:\dd\public\sdk\inc\winnt.h
+FILE 93 f:\dd\public\sdk\inc\wnnc.h
+FILE 94 f:\dd\vctools\crt_bld\self_x86\crt\src\ctype.h
+FILE 96 f:\dd\public\sdk\inc\winnls.h
+FILE 98 f:\dd\vctools\crt_bld\self_x86\crt\src\mtdll.h
+FILE 99 f:\dd\vctools\crt_bld\self_x86\crt\src\crtdefs.h
+FILE 100 f:\dd\vctools\crt_bld\self_x86\crt\src\sal.h
+FILE 101 f:\dd\vctools\crt_bld\self_x86\crt\src\codeanalysis\sourceannotations.h
+FILE 102 f:\dd\public\sdk\inc\winver.h
+FILE 103 f:\dd\public\sdk\inc\verrsrc.h
+FILE 104 f:\dd\public\sdk\inc\wincon.h
+FILE 105 f:\dd\public\sdk\inc\stralign.h
+FILE 107 f:\dd\public\sdk\inc\mcx.h
+FILE 108 f:\dd\vctools\crt_bld\self_x86\crt\src\atox.c
+FILE 109 f:\dd\vctools\crt_bld\self_x86\crt\src\limits.h
+FILE 110 f:\dd\public\sdk\inc\windows.h
+FILE 111 f:\dd\vctools\crt_bld\self_x86\crt\src\setlocal.h
+FILE 112 f:\dd\public\sdk\inc\sdkddkver.h
+FILE 113 f:\dd\vctools\crt_bld\self_x86\crt\src\oscalls.h
+FILE 114 f:\dd\vctools\crt_bld\self_x86\crt\src\excpt.h
+FILE 120 f:\dd\public\sdk\inc\reason.h
+FILE 123 f:\dd\public\sdk\inc\kernelspecs.h
+FILE 125 f:\dd\vctools\crt_bld\self_x86\crt\src\tchar.h
+FILE 126 f:\dd\vctools\crt_bld\self_x86\crt\src\mbstring.h
+FILE 127 f:\dd\vctools\crt_bld\self_x86\crt\src\mbctype.h
+FILE 128 f:\dd\public\sdk\inc\ime_cmodes.h
+FILE 130 f:\dd\vctools\crt_bld\self_x86\crt\src\vadefs.h
+FILE 131 f:\dd\vctools\crt_bld\self_x86\crt\src\cruntime.h
+FILE 132 f:\dd\public\sdk\inc\tvout.h
+FILE 145 f:\dd\vctools\crt_bld\self_x86\crt\src\internal_securecrt.h
+FILE 152 f:\dd\vctools\crt_bld\self_x86\crt\src\internal.h
+FILE 164 f:\dd\vctools\crt_bld\self_x86\crt\src\crtdbg.h
+FILE 165 f:\dd\vctools\crt_bld\self_x86\crt\src\xtoa.c
+FILE 178 f:\dd\vctools\crt_bld\self_x86\crt\src\xtoas.c
+FILE 182 f:\dd\vctools\crt_bld\self_x86\crt\src\errno.h
+FILE 224 f:\dd\vctools\crt_bld\self_x86\crt\src\dosmap.c
+FILE 250 f:\dd\vctools\crt_bld\self_x86\crt\src\rtcsup.h
+FILE 251 f:\dd\vctools\crt_bld\self_x86\crt\src\rtcapi.h
+FILE 265 f:\dd\vctools\crt_bld\self_x86\crt\src\winheap.h
+FILE 281 f:\dd\vctools\crt_bld\self_x86\crt\src\malloc.h
+FILE 291 f:\dd\vctools\crt_bld\self_x86\crt\src\calloc_impl.c
+FILE 299 f:\dd\vctools\crt_bld\self_x86\crt\src\dbgint.h
+FILE 333 f:\dd\vctools\crt_bld\self_x86\crt\src\crtheap.c
+FILE 389 f:\dd\vctools\crt_bld\self_x86\crt\src\free.c
+FILE 453 f:\dd\vctools\crt_bld\self_x86\crt\src\heapinit.c
+FILE 498 f:\dd\vctools\crt_bld\self_x86\crt\src\rterr.h
+FILE 504 f:\dd\vctools\crt_bld\self_x86\crt\src\malloc.c
+FILE 561 f:\dd\vctools\crt_bld\self_x86\crt\src\msize.c
+FILE 618 f:\dd\vctools\crt_bld\self_x86\crt\src\realloc.c
+FILE 677 f:\dd\vctools\crt_bld\self_x86\crt\src\recalloc.c
+FILE 731 f:\dd\vctools\crt_bld\self_x86\crt\src\_newmode.c
+FILE 774 f:\dd\vctools\crt_bld\self_x86\crt\src\msdos.h
+FILE 777 f:\dd\vctools\crt_bld\self_x86\crt\src\stddef.h
+FILE 792 f:\dd\vctools\crt_bld\self_x86\crt\src\ioinit.c
+FILE 844 f:\dd\vctools\crt_bld\self_x86\crt\src\intel\loadcfg.c
+FILE 892 f:\dd\vctools\crt_bld\self_x86\crt\src\intel\secchk.c
+FILE 904 f:\dd\vctools\crt_bld\self_x86\crt\src\process.h
+FILE 943 f:\dd\vctools\crt_bld\self_x86\crt\src\a_env.c
+FILE 960 f:\dd\vctools\crt_bld\self_x86\crt\src\awint.h
+FILE 975 f:\dd\vctools\crt_bld\self_x86\crt\src\signal.h
+FILE 1011 f:\dd\vctools\crt_bld\self_x86\crt\src\abort.c
+FILE 1039 f:\dd\vctools\crt_bld\self_x86\crt\src\swprintf.inl
+FILE 1053 f:\dd\vctools\crt_bld\self_x86\crt\src\crtmbox.c
+FILE 1063 f:\dd\vctools\crt_bld\self_x86\crt\src\crtmboxw.c
+FILE 1065 f:\dd\vctools\crt_bld\self_x86\crt\src\wchar.h
+FILE 1069 f:\dd\vctools\crt_bld\self_x86\crt\src\wtime.inl
+FILE 1120 f:\dd\vctools\crt_bld\self_x86\crt\src\ctype.c
+FILE 1145 f:\dd\vctools\crt_bld\self_x86\crt\src\dbghook.c
+FILE 1181 f:\dd\vctools\crt_bld\self_x86\crt\src\errmode.c
+FILE 1244 f:\dd\vctools\crt_bld\self_x86\crt\src\getqloc.c
+FILE 1288 f:\dd\vctools\crt_bld\self_x86\crt\src\locale.h
+FILE 1301 f:\dd\vctools\crt_bld\self_x86\crt\src\glstatus.c
+FILE 1344 f:\dd\vctools\crt_bld\self_x86\crt\src\gs_cookie.c
+FILE 1392 f:\dd\vctools\crt_bld\self_x86\crt\src\gs_report.c
+FILE 1413 f:\binaries.x86ret\inc\mm3dnow.h
+FILE 1415 f:\binaries.x86ret\inc\ammintrin.h
+FILE 1424 f:\binaries.x86ret\inc\immintrin.h
+FILE 1426 f:\binaries.x86ret\inc\wmmintrin.h
+FILE 1427 f:\binaries.x86ret\inc\nmmintrin.h
+FILE 1428 f:\binaries.x86ret\inc\smmintrin.h
+FILE 1429 f:\binaries.x86ret\inc\tmmintrin.h
+FILE 1430 f:\binaries.x86ret\inc\pmmintrin.h
+FILE 1431 f:\binaries.x86ret\inc\emmintrin.h
+FILE 1432 f:\binaries.x86ret\inc\xmmintrin.h
+FILE 1433 f:\binaries.x86ret\inc\mmintrin.h
+FILE 1455 f:\dd\vctools\crt_bld\self_x86\crt\src\gs_support.c
+FILE 1467 f:\dd\vctools\crt_bld\self_x86\crt\src\intrin.h
+FILE 1468 f:\dd\vctools\crt_bld\self_x86\crt\src\setjmp.h
+FILE 1508 f:\dd\vctools\crt_bld\self_x86\crt\src\initcoll.c
+FILE 1568 f:\dd\vctools\crt_bld\self_x86\crt\src\initctyp.c
+FILE 1627 f:\dd\vctools\crt_bld\self_x86\crt\src\inithelp.c
+FILE 1685 f:\dd\vctools\crt_bld\self_x86\crt\src\initmon.c
+FILE 1737 f:\dd\vctools\crt_bld\self_x86\crt\src\nlsint.h
+FILE 1742 f:\dd\vctools\crt_bld\self_x86\crt\src\initnum.c
+FILE 1800 f:\dd\vctools\crt_bld\self_x86\crt\src\inittime.c
+FILE 1855 f:\dd\vctools\crt_bld\self_x86\crt\src\lconv.c
+FILE 1913 f:\dd\vctools\crt_bld\self_x86\crt\src\localref.c
+FILE 1962 f:\dd\vctools\crt_bld\self_x86\crt\src\sect_attribs.h
+FILE 1969 f:\dd\vctools\crt_bld\self_x86\crt\src\onexit.c
+FILE 1989 f:\dd\vctools\crt_bld\self_x86\crt\src\nlsdata1.c
+FILE 2036 f:\dd\vctools\crt_bld\self_x86\crt\src\nlsdata2.c
+FILE 2079 f:\dd\vctools\crt_bld\self_x86\crt\src\pesect.c
+FILE 2128 f:\dd\vctools\crt_bld\self_x86\crt\src\purevirt.c
+FILE 2186 f:\dd\vctools\crt_bld\self_x86\crt\src\rand_s.c
+FILE 2250 f:\dd\vctools\crt_bld\self_x86\crt\src\setlocal.c
+FILE 2311 f:\dd\vctools\crt_bld\self_x86\crt\src\winsig.c
+FILE 2314 f:\dd\vctools\crt_bld\self_x86\crt\src\float.h
+FILE 2315 f:\dd\vctools\crt_bld\self_x86\crt\src\crtwrn.h
+FILE 2369 f:\dd\vctools\crt_bld\self_x86\crt\src\winxfltr.c
+FILE 2394 f:\dd\vctools\crt_bld\self_x86\crt\src\fltintrn.h
+FILE 2419 f:\dd\vctools\crt_bld\self_x86\crt\src\cmiscdat.c
+FILE 2445 f:\dd\vctools\crt_bld\self_x86\crt\src\intel\strncmp.c
+FILE 2468 f:\dd\vctools\crt_bld\self_x86\crt\src\tcscat_s.inl
+FILE 2493 f:\dd\vctools\crt_bld\self_x86\crt\src\strcat_s.c
+FILE 2523 f:\dd\vctools\crt_bld\self_x86\crt\src\tcscpy_s.inl
+FILE 2548 f:\dd\vctools\crt_bld\self_x86\crt\src\strcpy_s.c
+FILE 2578 f:\dd\vctools\crt_bld\self_x86\crt\src\tcsncpy_s.inl
+FILE 2603 f:\dd\vctools\crt_bld\self_x86\crt\src\strncpy_s.c
+FILE 2658 f:\dd\vctools\crt_bld\self_x86\crt\src\wcscat_s.c
+FILE 2713 f:\dd\vctools\crt_bld\self_x86\crt\src\wcscpy_s.c
+FILE 2728 f:\dd\vctools\crt_bld\self_x86\crt\src\wcslen.c
+FILE 2776 f:\dd\vctools\crt_bld\self_x86\crt\src\wcsncpy_s.c
+FILE 2787 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\memcpy.asm
+FILE 2788 f:\dd\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc
+FILE 2789 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\memset.asm
+FILE 2791 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\strcmp.asm
+FILE 2793 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\strcspn.asm
+FILE 2794 f:\dd\vctools\crt_bld\SELF_X86\crt\src\Intel\STRSPN.ASM
+FILE 2796 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\strlen.asm
+FILE 2798 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\_strnicm.asm
+FILE 2800 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\strpbrk.asm
+FILE 2803 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\llmul.asm
+FILE 2805 f:\dd\vctools\crt_bld\SELF_X86\crt\src\mm.inc
+FILE 2806 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\ulldvrm.asm
+FILE 2820 f:\dd\vctools\crt_bld\self_x86\crt\src\handler.cpp
+FILE 2841 f:\dd\vctools\crt_bld\self_x86\crt\src\new.h
+FILE 2875 f:\dd\vctools\crt_bld\self_x86\crt\src\delete.cpp
+FILE 2931 f:\dd\vctools\crt_bld\self_x86\crt\src\_wctype.c
+FILE 2987 f:\dd\vctools\crt_bld\self_x86\crt\src\iswctype.c
+FILE 2998 f:\dd\vctools\crt_bld\self_x86\crt\src\stdio.h
+FILE 3045 f:\dd\vctools\crt_bld\self_x86\crt\src\isctype.c
+FILE 3106 f:\dd\vctools\crt_bld\self_x86\crt\src\strtol.c
+FILE 3163 f:\dd\vctools\crt_bld\self_x86\crt\src\strtoq.c
+FILE 3218 f:\dd\vctools\crt_bld\self_x86\crt\src\tolower.c
+FILE 3271 f:\dd\vctools\crt_bld\self_x86\crt\src\ismbbyte.c
+FILE 3305 f:\dd\vctools\crt_bld\self_x86\crt\src\mbdata.h
+FILE 3326 f:\dd\vctools\crt_bld\self_x86\crt\src\mbctype.c
+FILE 3386 f:\dd\vctools\crt_bld\self_x86\crt\src\a_loc.c
+FILE 3447 f:\dd\vctools\crt_bld\self_x86\crt\src\a_map.c
+FILE 3507 f:\dd\vctools\crt_bld\self_x86\crt\src\a_str.c
+FILE 3583 f:\dd\vctools\crt_bld\self_x86\crt\src\invarg.c
+FILE 3626 f:\dd\vctools\crt_bld\self_x86\crt\src\stricmp.c
+FILE 3682 f:\dd\vctools\crt_bld\self_x86\crt\src\strnicmp.c
+FILE 3774 f:\dd\vctools\crt_bld\self_x86\crt\src\tidtable.c
+FILE 3778 f:\dd\vctools\crt_bld\self_x86\crt\src\memory.h
+FILE 3838 f:\dd\vctools\crt_bld\self_x86\crt\src\stdenvp.c
+FILE 3860 f:\dd\vctools\crt_bld\self_x86\crt\src\dos.h
+FILE 3891 f:\dd\vctools\crt_bld\self_x86\crt\src\stdargv.c
+FILE 3954 f:\dd\vctools\crt_bld\self_x86\crt\src\mlock.c
+FILE 3998 f:\dd\vctools\crt_bld\self_x86\crt\src\cmsgs.h
+FILE 4012 f:\dd\vctools\crt_bld\self_x86\crt\src\crt0msg.c
+FILE 4072 f:\dd\vctools\crt_bld\self_x86\crt\src\crt0init.c
+FILE 4123 f:\dd\vctools\crt_bld\self_x86\crt\src\crt0fp.c
+FILE 4186 f:\dd\vctools\crt_bld\self_x86\crt\src\crt0dat.c
+FILE 4250 f:\dd\vctools\crt_bld\self_x86\crt\src\crt0.c
+FILE 4274 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\alloca16.asm
+FILE 4276 f:\dd\vctools\crt_bld\SELF_X86\crt\src\INTEL\chkstk.asm
+FILE 4289 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\errno.h
+FILE 4293 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\internal.h
+FILE 4294 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\limits.h
+FILE 4295 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\mtdll.h
+FILE 4309 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\sect_attribs.h
+FILE 4315 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\tran\i386\cpu_disp.c
+FILE 4327 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\crtdbg.h
+FILE 4340 f:\dd\vctools\langapi\undname\undname.cxx
+FILE 4345 f:\dd\vctools\langapi\undname\undname.inl
+FILE 4347 f:\dd\vctools\langapi\undname\utf8.h
+FILE 4355 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\swprintf.inl
+FILE 4365 f:\dd\vctools\langapi\undname\undname.hxx
+FILE 4366 f:\dd\vctools\langapi\undname\undname.h
+FILE 4367 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\stdlib.h
+FILE 4368 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\stdio.h
+FILE 4396 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\eh.h
+FILE 4397 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\eh\unhandld.cpp
+FILE 4401 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\ehhooks.h
+FILE 4405 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\ehassert.h
+FILE 4427 f:\dd\vctools\langapi\include\ehdata.h
+FILE 4429 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\stddef.h
+FILE 4449 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\exception
+FILE 4472 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\malloc.h
+FILE 4473 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\eh\typname.cpp
+FILE 4475 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\cstddef
+FILE 4487 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\typeinfo.h
+FILE 4488 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\typeinfo
+FILE 4490 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\xstddef
+FILE 4491 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\yvals.h
+FILE 4492 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\use_ansi.h
+FILE 4493 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\dbgint.h
+FILE 4496 f:\dd\public\internal\vctools\include\undname.h
+FILE 4531 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\eh\typinfo.cpp
+FILE 4591 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\eh\hooks.cpp
+FILE 4643 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\rtc\initsect.cpp
+FILE 4664 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\rtcapi.h
+FILE 4680 f:\dd\vctools\crt_bld\self_x86\crt\prebuild\h\rtcpriv.h
+FUNC 1000 54 0 main
+1000 6 57 1
+1006 8 58 1
+100e e 59 1
+101c 8 60 1
+1024 b 61 1
+102f f 62 1
+103e 12 64 1
+1050 4 65 1
+FUNC 1060 a 0 google_breakpad::i
+1060 3 51 1
+1063 5 52 1
+1068 2 53 1
+FUNC 106a 35 0 google_breakpad::C::C()
+106a 35 37 1
+FUNC 109f 1e 0 google_breakpad::C::~C()
+109f 1e 38 1
+FUNC 10bd 20 0 google_breakpad::C::set_member(int)
+10bd 20 40 1
+FUNC 10dd 3c 0 google_breakpad::C::f()
+10dd 3c 43 1
+FUNC 1119 10 0 google_breakpad::C::g()
+1119 10 44 1
+FUNC 1129 7 0 google_breakpad::C::h(google_breakpad::C const &)
+1129 7 45 1
+FUNC 1130 2c 0 google_breakpad::C::`scalar deleting destructor'(unsigned int)
+FUNC 115c 1a 0 type_info::~type_info()
+115c 2 49 4531
+115e 17 50 4531
+1175 1 51 4531
+FUNC 1176 21 0 type_info::`scalar deleting destructor'(unsigned int)
+FUNC 1197 b 0 operator delete(void *)
+1197 5 20 2875
+119c 1 24 2875
+119d 5 23 2875
+FUNC 11a2 29 0 fast_error_exit
+11a2 5 326 4250
+11a7 9 335 4250
+11b0 5 337 4250
+11b5 8 339 4250
+11bd c 340 4250
+11c9 2 341 4250
+FUNC 11cb 161 0 __tmainCRTStartup
+11cb c 196 4250
+11d7 a 214 4250
+11e1 b 216 4250
+11ec 49 223 4250
+1235 9 225 4250
+123e 8 226 4250
+1246 9 228 4250
+124f 8 229 4250
+1257 5 238 4250
+125c 3 246 4250
+125f 9 248 4250
+1268 8 249 4250
+1270 b 252 4250
+127b a 255 4250
+1285 9 257 4250
+128e 8 258 4250
+1296 9 259 4250
+129f 8 260 4250
+12a7 8 262 4250
+12af 4 263 4250
+12b3 7 264 4250
+12ba a 277 4250
+12c4 18 278 4250
+12dc 5 281 4250
+12e1 6 282 4250
+12e7 5 284 4250
+12ec 2 286 4250
+12ee 17 287 4250
+1305 6 293 4250
+130b 6 295 4250
+1311 6 296 4250
+1317 5 298 4250
+131c 7 300 4250
+1323 3 302 4250
+1326 6 303 4250
+FUNC 132c a 0 mainCRTStartup
+132c 0 179 4250
+132c 5 186 4250
+1331 5 188 4250
+FUNC 1336 70 0 type_info::_Type_info_dtor(type_info *)
+1336 c 62 4473
+1342 8 63 4473
+134a 4 64 4473
+134e a 65 4473
+1358 d 70 4473
+1365 4 72 4473
+1369 4 74 4473
+136d 6 79 4473
+1373 7 80 4473
+137a 9 94 4473
+1383 4 101 4473
+1387 c 103 4473
+1393 6 107 4473
+1399 2 83 4473
+139b 2 72 4473
+139d 9 104 4473
+FUNC 13a6 88 0 strcmp
+13a6 0 65 2791
+13a6 4 73 2791
+13aa 4 74 2791
+13ae 6 76 2791
+13b4 2 77 2791
+13b6 2 81 2791
+13b8 2 83 2791
+13ba 2 84 2791
+13bc 2 85 2791
+13be 2 86 2791
+13c0 3 87 2791
+13c3 2 88 2791
+13c5 2 89 2791
+13c7 2 90 2791
+13c9 3 92 2791
+13cc 3 94 2791
+13cf 2 95 2791
+13d1 2 96 2791
+13d3 2 97 2791
+13d5 3 98 2791
+13d8 2 99 2791
+13da 3 100 2791
+13dd 3 101 2791
+13e0 2 102 2791
+13e2 4 103 2791
+13e6 2 107 2791
+13e8 2 108 2791
+13ea 2 115 2791
+13ec 2 116 2791
+13ee 3 117 2791
+13f1 1 118 2791
+13f2 6 122 2791
+13f8 2 123 2791
+13fa 2 125 2791
+13fc 3 126 2791
+13ff 2 127 2791
+1401 2 128 2791
+1403 3 129 2791
+1406 2 130 2791
+1408 2 131 2791
+140a 6 133 2791
+1410 2 134 2791
+1412 3 139 2791
+1415 3 140 2791
+1418 2 141 2791
+141a 2 142 2791
+141c 2 143 2791
+141e 2 144 2791
+1420 3 145 2791
+1423 2 146 2791
+1425 2 147 2791
+1427 2 148 2791
+1429 3 149 2791
+142c 2 150 2791
+FUNC 142e 44 0 free
+142e 5 40 389
+1433 6 45 389
+1439 11 50 389
+144a 4 51 389
+144e 22 53 389
+1470 2 55 389
+FUNC 1472 6a 0 __CxxUnhandledExceptionFilter(_EXCEPTION_POINTERS *)
+1472 5 67 4397
+1477 5a 68 4397
+14d1 5 69 4397
+14d6 2 72 4397
+14d8 4 73 4397
+FUNC 14dc e 0 __CxxSetUnhandledExceptionFilter
+14dc 0 86 4397
+14dc b 89 4397
+14e7 2 90 4397
+14e9 1 91 4397
+FUNC 14ea 2b 0 __crtCorExitProcess
+14ea 5 675 4186
+14ef b 679 4186
+14fa 4 680 4186
+14fe c 681 4186
+150a 4 682 4186
+150e 5 683 4186
+1513 2 693 4186
+FUNC 1515 18 0 __crtExitProcess
+1515 5 698 4186
+151a 9 699 4186
+1523 a 708 4186
+FUNC 152d 9 0 _lockexit
+152d 0 758 4186
+152d 8 759 4186
+1535 1 760 4186
+FUNC 1536 9 0 _unlockexit
+1536 0 784 4186
+1536 8 785 4186
+153e 1 786 4186
+FUNC 153f 33 0 _init_pointers
+153f 3 809 4186
+1542 7 810 4186
+1549 6 812 4186
+154f 6 813 4186
+1555 6 814 4186
+155b 6 815 4186
+1561 6 816 4186
+1567 a 817 4186
+1571 1 818 4186
+FUNC 1572 2e 0 _initterm_e
+1572 6 908 4186
+1578 b 917 4186
+1583 10 922 4186
+1593 2 923 4186
+1595 3 924 4186
+1598 6 917 4186
+159e 2 928 4186
+FUNC 15a0 a1 0 _cinit
+15a0 5 258 4186
+15a5 18 268 4186
+15bd a 270 4186
+15c7 5 272 4186
+15cc 11 278 4186
+15dd 2 279 4186
+15df 2 280 4186
+15e1 c 283 4186
+15ed 2a 288 4186
+1617 1a 301 4186
+1631 c 303 4186
+163d 2 307 4186
+163f 2 308 4186
+FUNC 1641 140 0 doexit
+1641 c 489 4186
+164d 8 507 4186
+1655 4 508 4186
+1659 f 510 4186
+1668 5 511 4186
+166d 8 514 4186
+1675 a 516 4186
+167f 13 532 4186
+1692 4 533 4186
+1696 d 534 4186
+16a3 3 538 4186
+16a6 3 539 4186
+16a9 11 547 4186
+16ba 2 550 4186
+16bc 4 552 4186
+16c0 6 559 4186
+16c6 7 562 4186
+16cd 2 565 4186
+16cf a 567 4186
+16d9 8 568 4186
+16e1 a 570 4186
+16eb 6 573 4186
+16f1 8 574 4186
+16f9 5 576 4186
+16fe 21 582 4186
+171f 21 590 4186
+1740 c 608 4186
+174c 6 613 4186
+1752 a 617 4186
+175c 8 619 4186
+1764 8 621 4186
+176c 6 609 4186
+1772 9 610 4186
+177b 6 622 4186
+FUNC 1781 16 0 exit
+1781 5 392 4186
+1786 f 393 4186
+1795 2 394 4186
+FUNC 1797 16 0 _exit
+1797 5 400 4186
+179c f 401 4186
+17ab 2 402 4186
+FUNC 17ad f 0 _cexit
+17ad 0 407 4186
+17ad e 408 4186
+17bb 1 409 4186
+FUNC 17bc f 0 _c_exit
+17bc 0 414 4186
+17bc e 415 4186
+17ca 1 416 4186
+FUNC 17cb 1e 0 _amsg_exit
+17cb 5 439 4186
+17d0 5 440 4186
+17d5 9 441 4186
+17de b 442 4186
+FUNC 17e9 26 0 _GET_RTERRMSG
+17e9 5 165 4012
+17ee 2 168 4012
+17f0 c 169 4012
+17fc 6 168 4012
+1802 2 172 4012
+1804 2 173 4012
+1806 7 170 4012
+180d 2 173 4012
+FUNC 180f 1c5 0 _NMSG_WRITE
+180f 1b 196 4012
+182a 8 197 4012
+1832 11 199 4012
+1843 2a 226 4012
+186d c 263 4012
+1879 20 272 4012
+1899 21 275 4012
+18ba 1f 276 4012
+18d9 d 279 4012
+18e6 d 281 4012
+18f3 1d 282 4012
+1910 18 285 4012
+1928 14 286 4012
+193c 15 290 4012
+1951 a 272 4012
+195b a 228 4012
+1965 9 229 4012
+196e 2 244 4012
+1970 15 246 4012
+1985 11 248 4012
+1996 8 244 4012
+199e 27 260 4012
+19c5 f 294 4012
+FUNC 19d4 39 0 _FF_MSGBANNER
+19d4 0 134 4012
+19d4 22 138 4012
+19f6 a 140 4012
+1a00 c 141 4012
+1a0c 1 143 4012
+FUNC 1a0d 251 0 _XcptFilter
+1a0d 6 195 2369
+1a13 7 202 2369
+1a1a 8 203 2369
+1a22 48 208 2369
+1a6a 4 210 2369
+1a6e d 216 2369
+1a7b 4 223 2369
+1a7f 7 224 2369
+1a86 5 232 2369
+1a8b e 237 2369
+1a99 8 238 2369
+1aa1 3 244 2369
+1aa4 6 248 2369
+1aaa 1e 263 2369
+1ac8 16 272 2369
+1ade 3 280 2369
+1ae1 28 283 2369
+1b09 20 310 2369
+1b29 16 312 2369
+1b3f 7 314 2369
+1b46 16 316 2369
+1b5c 7 318 2369
+1b63 16 320 2369
+1b79 7 322 2369
+1b80 16 324 2369
+1b96 7 326 2369
+1b9d 13 328 2369
+1bb0 7 330 2369
+1bb7 13 332 2369
+1bca 7 334 2369
+1bd1 13 336 2369
+1be4 7 338 2369
+1beb 13 340 2369
+1bfe 7 342 2369
+1c05 11 344 2369
+1c16 12 353 2369
+1c28 d 358 2369
+1c35 2 360 2369
+1c37 e 365 2369
+1c45 4 366 2369
+1c49 e 372 2369
+1c57 5 374 2369
+1c5c 2 376 2369
+FUNC 1c5e dc 0 _setenvp
+1c5e 0 77 3838
+1c5e 9 85 3838
+1c67 6 86 3838
+1c6d 9 91 3838
+1c76 4 98 3838
+1c7a 8 99 3838
+1c82 4 110 3838
+1c86 1 111 3838
+1c87 b 112 3838
+1c92 6 108 3838
+1c98 15 117 3838
+1cad 2 118 3838
+1caf 9 121 3838
+1cb8 6 123 3838
+1cbe 9 125 3838
+1cc7 10 127 3838
+1cd7 f 133 3838
+1ce6 3 134 3838
+1ce9 7 121 3838
+1cf0 b 138 3838
+1cfb 7 139 3838
+1d02 3 142 3838
+1d05 a 149 3838
+1d0f 2 152 3838
+1d11 2 138 3838
+1d13 3 153 3838
+1d16 b 129 3838
+1d21 7 130 3838
+1d28 5 131 3838
+1d2d d 133 3838
+FUNC 1d3a 309 0 parse_cmdline
+1d3a 6 221 3891
+1d40 13 229 3891
+1d53 2 232 3891
+1d55 2b 234 3891
+1d80 3 253 3891
+1d83 f 255 3891
+1d92 5 257 3891
+1d97 9 258 3891
+1da0 5 259 3891
+1da5 c 261 3891
+1db1 4 262 3891
+1db5 1c 263 3891
+1dd1 c 265 3891
+1ddd f 267 3891
+1dec c 268 3891
+1df8 6 269 3891
+1dfe 1e 270 3891
+1e1c 1 271 3891
+1e1d 22 275 3891
+1e3f 4 280 3891
+1e43 e 281 3891
+1e51 4 284 3891
+1e55 13 289 3891
+1e68 14 290 3891
+1e7c 3 291 3891
+1e7f 1 278 3891
+1e80 2 279 3891
+1e82 13 294 3891
+1e95 6 298 3891
+1e9b 13 299 3891
+1eae c 300 3891
+1eba 3 314 3891
+1ebd 4 318 3891
+1ec1 1 321 3891
+1ec2 1 322 3891
+1ec3 f 319 3891
+1ed2 f 324 3891
+1ee1 5 327 3891
+1ee6 18 328 3891
+1efe 2 329 3891
+1f00 2 330 3891
+1f02 d 332 3891
+1f0f 2 335 3891
+1f11 5 339 3891
+1f16 4 340 3891
+1f1a e 341 3891
+1f28 10 342 3891
+1f38 3 341 3891
+1f3b 2a 346 3891
+1f65 8 351 3891
+1f6d 12 353 3891
+1f7f 1f 354 3891
+1f9e c 355 3891
+1faa 1e 357 3891
+1fc8 2 358 3891
+1fca a 359 3891
+1fd4 1 360 3891
+1fd5 c 361 3891
+1fe1 f 364 3891
+1ff0 1 366 3891
+1ff1 5 375 3891
+1ff6 4 379 3891
+1ffa 11 380 3891
+200b c 381 3891
+2017 8 382 3891
+201f 9 385 3891
+2028 d 386 3891
+2035 c 387 3891
+2041 2 388 3891
+FUNC 2043 c5 0 _setargv
+2043 9 88 3891
+204c c 97 3891
+2058 5 98 3891
+205d 18 104 3891
+2075 23 120 3891
+2098 11 127 3891
+20a9 15 134 3891
+20be a 138 3891
+20c8 2 140 3891
+20ca 9 142 3891
+20d3 2 143 3891
+20d5 2 144 3891
+20d7 13 151 3891
+20ea c 156 3891
+20f6 6 160 3891
+20fc 4 175 3891
+2100 6 136 3891
+2106 2 176 3891
+FUNC 2108 b8 0 __crtGetEnvironmentStringsA
+2108 a 40 943
+2112 e 49 943
+2120 7 50 943
+2127 f 54 943
+2136 12 55 943
+2148 13 56 943
+215b 1b 70 943
+2176 12 74 943
+2188 12 88 943
+219a 9 90 943
+21a3 3 91 943
+21a6 7 94 943
+21ad 5 95 943
+21b2 7 76 943
+21b9 5 77 943
+21be 2 96 943
+FUNC 21c0 3b2 0 _ioinit
+21c0 9 111 792
+21c9 a 122 792
+21d3 13 129 792
+21e6 8 131 792
+21ee 15 137 792
+2203 3 134 792
+2206 1e 139 792
+2224 d 141 792
+2231 10 143 792
+2241 e 145 792
+224f d 146 792
+225c 25 147 792
+2281 15 155 792
+2296 c 160 792
+22a2 6 166 792
+22a8 2 167 792
+22aa e 173 792
+22b8 11 179 792
+22c9 13 185 792
+22dc 7 199 792
+22e3 1a 201 792
+22fd 3 198 792
+2300 e 203 792
+230e e 205 792
+231c e 206 792
+232a 2e 209 792
+2358 26 210 792
+237e f 179 792
+238d 2 280 792
+238f 6 191 792
+2395 a 217 792
+239f 45 230 792
+23e4 14 232 792
+23f8 1b 233 792
+2413 1c 234 792
+242f 17 237 792
+2446 d 239 792
+2453 10 217 792
+2463 2 249 792
+2465 b 251 792
+2470 16 254 792
+2486 13 302 792
+2499 e 258 792
+24a7 30 262 792
+24d7 16 273 792
+24ed 10 274 792
+24fd 5 275 792
+2502 e 276 792
+2510 13 280 792
+2523 d 282 792
+2530 2 284 792
+2532 e 293 792
+2540 10 294 792
+2550 a 249 792
+255a c 309 792
+2566 5 311 792
+256b 2 312 792
+256d 5 281 792
+FUNC 2572 30 0 _RTC_Initialize
+FUNC 25a2 30 0 _RTC_Terminate
+FUNC 25d2 9 0 _encoded_null
+25d2 0 79 3774
+25d2 8 80 3774
+25da 1 81 3774
+FUNC 25db 9 4 __crtTlsAlloc
+25db 0 95 3774
+25db 6 96 3774
+25e1 3 97 3774
+FUNC 25e4 34 0 __set_flsgetvalue
+25e4 3 143 3774
+25e7 e 145 3774
+25f5 4 146 3774
+25f9 e 148 3774
+2607 d 149 3774
+2614 3 151 3774
+2617 1 155 3774
+FUNC 2618 3d 0 _mtterm
+2618 0 329 3774
+2618 a 336 3774
+2622 f 337 3774
+2631 7 338 3774
+2638 a 342 3774
+2642 7 343 3774
+2649 7 344 3774
+2650 5 352 3774
+FUNC 2655 b4 0 _initptd
+2655 c 379 3774
+2661 b 381 3774
+266c a 384 3774
+2676 4 385 3774
+267a 6 386 3774
+2680 3 391 3774
+2683 7 395 3774
+268a 7 396 3774
+2691 7 397 3774
+2698 8 399 3774
+26a0 4 400 3774
+26a4 9 402 3774
+26ad c 404 3774
+26b9 8 411 3774
+26c1 3 412 3774
+26c4 6 413 3774
+26ca 4 421 3774
+26ce 8 422 3774
+26d6 9 423 3774
+26df c 425 3774
+26eb 6 428 3774
+26f1 6 404 3774
+26f7 9 406 3774
+2700 9 426 3774
+FUNC 2709 8d 0 _getptd_noexit
+2709 4 448 3774
+270d 6 452 3774
+2713 15 460 3774
+2728 14 472 3774
+273c 19 475 3774
+2755 a 481 3774
+275f 6 483 3774
+2765 1a 484 3774
+277f 2 486 3774
+2781 7 492 3774
+2788 2 493 3774
+278a 8 498 3774
+2792 3 500 3774
+2795 1 501 3774
+FUNC 2796 1a 0 _getptd
+2796 3 522 3774
+2799 7 523 3774
+27a0 4 524 3774
+27a4 8 525 3774
+27ac 3 527 3774
+27af 1 528 3774
+FUNC 27b0 12f 4 _freefls
+27b0 c 556 3774
+27bc b 567 3774
+27c7 7 568 3774
+27ce 7 569 3774
+27d5 7 571 3774
+27dc 7 572 3774
+27e3 7 574 3774
+27ea 7 575 3774
+27f1 7 577 3774
+27f8 7 578 3774
+27ff 7 580 3774
+2806 7 581 3774
+280d 7 583 3774
+2814 7 584 3774
+281b 7 586 3774
+2822 7 587 3774
+2829 a 589 3774
+2833 7 590 3774
+283a 8 592 3774
+2842 4 593 3774
+2846 1a 596 3774
+2860 7 597 3774
+2867 c 599 3774
+2873 8 603 3774
+287b 7 605 3774
+2882 7 606 3774
+2889 7 608 3774
+2890 15 611 3774
+28a5 7 612 3774
+28ac c 615 3774
+28b8 7 619 3774
+28bf 8 622 3774
+28c7 3 599 3774
+28ca 9 600 3774
+28d3 3 615 3774
+28d6 9 616 3774
+FUNC 28df 18f 0 _mtinit
+28df 3 203 3774
+28e2 d 211 3774
+28ef 4 212 3774
+28f3 5 213 3774
+28f8 3 214 3774
+28fb 2 300 3774
+28fd e 218 3774
+290b d 221 3774
+2918 d 224 3774
+2925 d 227 3774
+2932 2a 228 3774
+295c a 231 3774
+2966 1a 235 3774
+2980 25 244 3774
+29a5 5 249 3774
+29aa e 256 3774
+29b8 d 257 3774
+29c5 d 258 3774
+29d2 12 259 3774
+29e4 7 266 3774
+29eb 2 268 3774
+29ed 1d 274 3774
+2a0a 2 276 3774
+2a0c 29 284 3774
+2a35 a 294 3774
+2a3f 6 296 3774
+2a45 1a 297 3774
+2a5f 5 299 3774
+2a64 5 286 3774
+2a69 4 245 3774
+2a6d 1 300 3774
+FUNC 2a6e 1e 0 _heap_init
+2a6e 0 40 453
+2a6e 1d 44 453
+2a8b 1 60 453
+FUNC 2a8c 45 0 _SEH_prolog4
+FUNC 2ad1 14 0 _SEH_epilog4
+FUNC 2ae5 2c4 0 _except_handler4
+FUNC 2da9 9b 0 __security_init_cookie
+2da9 8 97 1455
+2db1 21 114 1455
+2dd2 7 116 1455
+2dd9 3 117 1455
+2ddc a 127 1455
+2de6 6 132 1455
+2dec 8 135 1455
+2df4 8 136 1455
+2dfc 8 137 1455
+2e04 a 139 1455
+2e0e 8 144 1455
+2e16 4 161 1455
+2e1a 7 163 1455
+2e21 4 166 1455
+2e25 c 168 1455
+2e31 6 172 1455
+2e37 b 173 1455
+2e42 2 175 1455
+FUNC 2e44 f 0 _initp_misc_invarg
+2e44 5 64 3583
+2e49 8 65 3583
+2e51 2 66 3583
+FUNC 2e53 129 0 _call_reportfault
+2e53 16 164 3583
+2e69 9 166 3583
+2e72 7 167 3583
+2e79 17 170 3583
+2e90 1b 172 3583
+2eab 6 179 3583
+2eb1 6 180 3583
+2eb7 6 181 3583
+2ebd 6 182 3583
+2ec3 6 183 3583
+2ec9 6 184 3583
+2ecf 7 185 3583
+2ed6 7 186 3583
+2edd 7 187 3583
+2ee4 7 188 3583
+2eeb 7 189 3583
+2ef2 7 190 3583
+2ef9 1 191 3583
+2efa 6 192 3583
+2f00 3 198 3583
+2f03 19 199 3583
+2f1c 9 201 3583
+2f25 9 240 3583
+2f2e 9 241 3583
+2f37 6 242 3583
+2f3d 6 245 3583
+2f43 a 248 3583
+2f4d d 250 3583
+2f5a d 254 3583
+2f67 7 255 3583
+2f6e e 257 3583
+FUNC 2f7c 25 0 _invoke_watson
+2f7c 3 146 3583
+2f7f 12 155 3583
+2f91 f 156 3583
+2fa0 1 157 3583
+FUNC 2fa1 2d 0 _invalid_parameter
+2fa1 5 96 3583
+2fa6 c 103 3583
+2fb2 4 104 3583
+2fb6 1 111 3583
+2fb7 2 106 3583
+2fb9 15 110 3583
+FUNC 2fce 10 0 _invalid_parameter_noinfo
+2fce 0 120 3583
+2fce f 121 3583
+2fdd 1 122 3583
+FUNC 2fde 5e 0 _mtinitlocks
+2fde 4 136 3954
+2fe2 7 143 3954
+2fe9 a 144 3954
+2ff3 13 145 3954
+3006 1e 147 3954
+3024 6 143 3954
+302a 3 156 3954
+302d 3 157 3954
+3030 c 150 3954
+FUNC 303c 89 0 _mtdeletelocks
+303c 3 187 3954
+303f d 193 3954
+304c 20 195 3954
+306c 3 199 3954
+306f 6 205 3954
+3075 e 206 3954
+3083 b 193 3954
+308e 6 214 3954
+3094 20 216 3954
+30b4 3 220 3954
+30b7 b 214 3954
+30c2 3 223 3954
+FUNC 30c5 17 0 _unlock
+30c5 5 370 3954
+30ca 10 374 3954
+30da 2 375 3954
+FUNC 30dc c2 0 _mtinitlocknum
+30dc c 258 3954
+30e8 6 260 3954
+30ee a 268 3954
+30f8 5 269 3954
+30fd 7 270 3954
+3104 c 271 3954
+3110 e 275 3954
+311e 4 276 3954
+3122 e 278 3954
+3130 b 279 3954
+313b 4 280 3954
+313f 8 283 3954
+3147 3 284 3954
+314a 4 286 3954
+314e 10 287 3954
+315e 7 288 3954
+3165 b 289 3954
+3170 3 290 3954
+3173 2 291 3954
+3175 2 292 3954
+3177 2 295 3954
+3179 7 296 3954
+3180 c 299 3954
+318c 3 303 3954
+318f 6 304 3954
+3195 9 300 3954
+FUNC 319e 47 0 _lock
+319e 5 332 3954
+31a3 1a 337 3954
+31bd b 339 3954
+31c8 8 340 3954
+31d0 13 347 3954
+31e3 2 348 3954
+FUNC 31e5 9c 0 strcpy_s
+31e5 5 13 2523
+31ea 2d 18 2523
+3217 15 19 2523
+322c 26 23 2523
+3252 4 27 2523
+3256 d 29 2523
+3263 18 30 2523
+327b 4 33 2523
+327f 2 34 2523
+FUNC 3281 8b 0 strlen
+3281 0 54 2796
+3281 4 63 2796
+3285 6 64 2796
+328b 2 65 2796
+328d 2 69 2796
+328f 3 70 2796
+3292 2 71 2796
+3294 2 72 2796
+3296 6 73 2796
+329c 2 74 2796
+329e 13 76 2796
+32b1 2 81 2796
+32b3 5 82 2796
+32b8 2 83 2796
+32ba 3 84 2796
+32bd 2 85 2796
+32bf 3 86 2796
+32c2 5 87 2796
+32c7 2 88 2796
+32c9 3 90 2796
+32cc 2 91 2796
+32ce 2 92 2796
+32d0 2 93 2796
+32d2 2 94 2796
+32d4 5 95 2796
+32d9 2 96 2796
+32db 5 97 2796
+32e0 2 98 2796
+32e2 2 99 2796
+32e4 3 103 2796
+32e7 4 104 2796
+32eb 2 105 2796
+32ed 1 106 2796
+32ee 3 108 2796
+32f1 4 109 2796
+32f5 2 110 2796
+32f7 1 111 2796
+32f8 3 113 2796
+32fb 4 114 2796
+32ff 2 115 2796
+3301 1 116 2796
+3302 3 118 2796
+3305 4 119 2796
+3309 2 120 2796
+330b 1 121 2796
+FUNC 330c b6 0 malloc
+330c 6 81 504
+3312 e 85 504
+3320 3d 89 504
+335d 4 94 504
+3361 b 98 504
+336c b 105 504
+3377 2 109 504
+3379 11 100 504
+338a 11 119 504
+339b 6 121 504
+33a1 7 111 504
+33a8 15 112 504
+33bd 3 113 504
+33c0 2 122 504
+FUNC 33c2 90 0 _local_unwind4
+FUNC 3452 46 0 _unwind_handler4
+FUNC 3498 1c 4 _seh_longjmp_unwind4
+FUNC 34b4 17 0 _EH4_CallFilterFunc
+FUNC 34cb 19 0 _EH4_TransferToHandler
+FUNC 34e4 19 0 _EH4_GlobalUnwind2
+FUNC 34fd 17 8 _EH4_LocalUnwind
+FUNC 3514 42 0 _get_errno_from_oserr
+3514 5 119 224
+3519 5 123 224
+351e 9 124 224
+3527 6 123 224
+352d 8 133 224
+3535 3 134 224
+3538 2 139 224
+353a 7 125 224
+3541 2 139 224
+3543 11 135 224
+3554 2 139 224
+FUNC 3556 13 0 _errno
+3556 0 279 224
+3556 5 280 224
+355b 4 281 224
+355f 5 282 224
+3564 1 287 224
+3565 3 284 224
+3568 1 287 224
+FUNC 3569 39 0 terminate()
+3569 c 84 4591
+3575 8 89 4591
+357d 4 90 4591
+3581 4 95 4591
+3585 2 99 4591
+3587 2 100 4591
+3589 7 101 4591
+3590 7 106 4591
+3597 5 114 4591
+359c 6 115 4591
+FUNC 35a2 11 0 _initp_eh_hooks
+35a2 0 69 4591
+35a2 10 70 4591
+35b2 1 71 4591
+FUNC 35b3 1e 0 _initp_misc_winsig
+35b3 5 57 2311
+35b8 8 58 2311
+35c0 5 59 2311
+35c5 5 60 2311
+35ca 5 61 2311
+35cf 2 62 2311
+FUNC 35d1 4b 0 siglookup
+35d1 5 629 2311
+35d6 a 630 2311
+35e0 1e 639 2311
+35fe 18 642 2311
+3616 2 646 2311
+3618 2 651 2311
+361a 2 652 2311
+FUNC 361c d 0 __get_sigabrt
+361c 0 669 2311
+361c c 670 2311
+3628 1 671 2311
+FUNC 3629 1a3 0 raise
+3629 c 450 2311
+3635 5 457 2311
+363a 3 458 2311
+363d 1f 460 2311
+365c a 486 2311
+3666 4 487 2311
+366a 8 488 2311
+3672 a 463 2311
+367c 2 465 2311
+367e 10 490 2311
+368e 2 491 2311
+3690 f 460 2311
+369f 12 498 2311
+36b1 a 474 2311
+36bb 2 476 2311
+36bd a 468 2311
+36c7 2 470 2311
+36c9 a 479 2311
+36d3 7 480 2311
+36da a 500 2311
+36e4 2 508 2311
+36e6 4 507 2311
+36ea 6 508 2311
+36f0 5 513 2311
+36f5 7 518 2311
+36fc 5 525 2311
+3701 7 526 2311
+3708 5 528 2311
+370d f 539 2311
+371c 6 540 2311
+3722 3 541 2311
+3725 5 547 2311
+372a 6 548 2311
+3730 7 549 2311
+3737 5 557 2311
+373c 1a 564 2311
+3756 d 567 2311
+3763 5 564 2311
+3768 7 570 2311
+376f c 573 2311
+377b 5 578 2311
+3780 8 584 2311
+3788 2 585 2311
+378a 6 573 2311
+3790 6 574 2311
+3796 9 575 2311
+379f 5 586 2311
+37a4 f 593 2311
+37b3 6 594 2311
+37b9 5 599 2311
+37be 6 600 2311
+37c4 2 603 2311
+37c6 6 604 2311
+FUNC 37cc f 0 _initp_misc_rand_s
+37cc 5 58 2186
+37d1 8 59 2186
+37d9 2 60 2186
+FUNC 37db f 0 _initp_misc_purevirt
+37db 5 179 1627
+37e0 8 180 1627
+37e8 2 181 1627
+FUNC 37ea f 0 _initp_heap_handler
+37ea 5 31 2820
+37ef 8 32 2820
+37f7 2 33 2820
+FUNC 37f9 28 0 _callnewh
+37f9 5 131 2820
+37fe c 133 2820
+380a e 135 2820
+3818 3 138 2820
+381b 2 139 2820
+381d 2 136 2820
+381f 2 139 2820
+FUNC 3821 c0 0 _onexit_nolock
+3821 8 100 1969
+3829 f 103 1969
+3838 f 104 1969
+3847 14 108 1969
+385b 10 118 1969
+386b d 123 1969
+3878 13 125 1969
+388b 3 130 1969
+388e 13 132 1969
+38a1 3 143 1969
+38a4 f 145 1969
+38b3 1a 152 1969
+38cd 8 153 1969
+38d5 5 155 1969
+38da 5 110 1969
+38df 2 156 1969
+FUNC 38e1 3b 0 __onexitinit
+38e1 3 201 1969
+38e4 d 204 1969
+38f1 11 205 1969
+3902 4 207 1969
+3906 4 212 1969
+390a 1 217 1969
+390b d 214 1969
+3918 3 216 1969
+391b 1 217 1969
+FUNC 391c 3c 0 _onexit
+391c c 81 1969
+3928 5 84 1969
+392d 4 86 1969
+3931 c 87 1969
+393d c 89 1969
+3949 3 93 1969
+394c 6 94 1969
+3952 6 90 1969
+FUNC 3958 17 0 atexit
+3958 5 161 1969
+395d 10 162 1969
+396d 2 163 1969
+FUNC 396f 23 0 _initp_misc_cfltcvt_tab
+396f 4 54 2419
+3973 2 56 2419
+3975 1a 58 2419
+398f 3 60 2419
+FUNC 3992 5d 0 _ValidateImageBase
+3992 5 44 2079
+3997 17 50 2079
+39ae 2 52 2079
+39b0 2 68 2079
+39b2 f 55 2079
+39c1 10 56 2079
+39d1 2 58 2079
+39d3 1a 62 2079
+39ed 2 68 2079
+FUNC 39ef 76 0 _FindPESection
+39ef 5 92 2079
+39f4 12 99 2079
+3a06 2c 108 2079
+3a32 24 111 2079
+3a56 8 108 2079
+3a5e 5 123 2079
+3a63 2 124 2079
+FUNC 3a65 bc 0 _IsNonwritableInCurrentImage
+3a65 35 149 2079
+3a9a 7 156 2079
+3aa1 f 164 2079
+3ab0 2 166 2079
+3ab2 8 174 2079
+3aba e 175 2079
+3ac8 2 176 2079
+3aca 2 178 2079
+3acc 12 185 2079
+3ade 12 195 2079
+3af0 16 187 2079
+3b06 9 193 2079
+3b0f 12 195 2079
+FUNC 3b21 16c 0 __crtMessageBoxW
+3b21 12 41 1053
+3b33 14 49 1053
+3b47 4 56 1053
+3b4b c 62 1053
+3b57 d 64 1053
+3b64 2 65 1053
+3b66 6 67 1053
+3b6c 10 72 1053
+3b7c 6 76 1053
+3b82 9 78 1053
+3b8b 10 81 1053
+3b9b 10 84 1053
+3bab d 88 1053
+3bb8 8 93 1053
+3bc0 4 95 1053
+3bc4 10 97 1053
+3bd4 1a 110 1053
+3bee 3 113 1053
+3bf1 c 114 1053
+3bfd 8 116 1053
+3c05 1f 121 1053
+3c24 7 130 1053
+3c2b 2 132 1053
+3c2d a 134 1053
+3c37 3 136 1053
+3c3a 4 137 1053
+3c3e 5 139 1053
+3c43 e 143 1053
+3c51 3 145 1053
+3c54 4 146 1053
+3c58 8 148 1053
+3c60 8 155 1053
+3c68 4 156 1053
+3c6c 10 158 1053
+3c7c 2 163 1053
+3c7e f 166 1053
+FUNC 3c8d bf 0 wcscat_s
+3c8d 6 13 2468
+3c93 2c 18 2468
+3cbf 2 46 2468
+3cc1 18 19 2468
+3cd9 2 21 2468
+3cdb 10 23 2468
+3ceb 3 25 2468
+3cee 3 26 2468
+3cf1 2 29 2468
+3cf3 2 32 2468
+3cf5 29 35 2468
+3d1e 13 41 2468
+3d31 1b 42 2468
+FUNC 3d4c 13e 0 wcsncpy_s
+3d4c 5 13 2578
+3d51 16 17 2578
+3d67 5 65 2578
+3d6c 2 66 2578
+3d6e 28 24 2578
+3d96 4 25 2578
+3d9a f 28 2578
+3da9 2 29 2578
+3dab 18 31 2578
+3dc3 2 33 2578
+3dc5 5 35 2578
+3dca 2b 37 2578
+3df5 2 41 2578
+3df7 2e 45 2578
+3e25 4 48 2578
+3e29 f 50 2578
+3e38 8 54 2578
+3e40 a 58 2578
+3e4a 18 59 2578
+3e62 d 61 2578
+3e6f 1b 62 2578
+FUNC 3e8a 25 0 wcslen
+3e8a 5 41 2728
+3e8f 3 42 2728
+3e92 15 44 2728
+3ea7 6 46 2728
+3ead 2 47 2728
+FUNC 3eaf a0 0 wcscpy_s
+3eaf 6 13 2523
+3eb5 2c 18 2523
+3ee1 2 34 2523
+3ee3 16 19 2523
+3ef9 2b 23 2523
+3f24 13 29 2523
+3f37 18 30 2523
+FUNC 3f4f 49 0 _set_error_mode
+3f4f 5 43 1181
+3f54 11 46 1181
+3f65 5 54 1181
+3f6a 2 61 1181
+3f6c 5 50 1181
+3f71 6 51 1181
+3f77 2 61 1181
+3f79 1d 57 1181
+3f96 2 61 1181
+FUNC 3f98 f 0 __security_check_cookie
+3f98 0 52 892
+3f98 6 55 892
+3f9e 2 56 892
+3fa0 2 57 892
+3fa2 5 59 892
+FUNC 3fa7 45 0 _malloc_crt
+3fa7 7 39 333
+3fae 2 40 333
+3fb0 b 44 333
+3fbb c 45 333
+3fc7 1a 46 333
+3fe1 5 47 333
+3fe6 4 50 333
+3fea 2 51 333
+FUNC 3fec 4c 0 _calloc_crt
+3fec 7 54 333
+3ff3 2 55 333
+3ff5 12 61 333
+4007 c 62 333
+4013 1a 63 333
+402d 5 64 333
+4032 4 67 333
+4036 2 68 333
+FUNC 4038 4e 0 _realloc_crt
+4038 7 71 333
+403f 2 72 333
+4041 f 76 333
+4050 11 77 333
+4061 1a 78 333
+407b 5 79 333
+4080 4 82 333
+4084 2 83 333
+FUNC 4086 2f 0 CPtoLCID
+4086 0 329 3326
+4086 14 330 3326
+409a 2 345 3326
+409c 1 346 3326
+409d 5 342 3326
+40a2 1 346 3326
+40a3 5 339 3326
+40a8 1 346 3326
+40a9 5 336 3326
+40ae 1 346 3326
+40af 5 333 3326
+40b4 1 346 3326
+FUNC 40b5 be 0 setSBCS
+40b5 6 363 3326
+40bb 11 368 3326
+40cc 4b 379 3326
+4117 12 381 3326
+4129 1e 382 3326
+4147 b 384 3326
+4152 1e 385 3326
+4170 3 386 3326
+FUNC 4173 246 0 setSBUpLow
+4173 17 402 3326
+418a 1a 412 3326
+41a4 f 415 3326
+41b3 c 416 3326
+41bf 11 420 3326
+41d0 6 419 3326
+41d6 2a 421 3326
+4200 14 420 3326
+4214 34 427 3326
+4248 37 432 3326
+427f 39 437 3326
+42b8 2 442 3326
+42ba d 443 3326
+42c7 10 445 3326
+42d7 9 446 3326
+42e0 5 448 3326
+42e5 10 450 3326
+42f5 1c 451 3326
+4311 2 453 3326
+4313 15 454 3326
+4328 5 442 3326
+432d 8 456 3326
+4335 12 472 3326
+4347 17 461 3326
+435e 10 463 3326
+436e 5 464 3326
+4373 5 466 3326
+4378 10 468 3326
+4388 f 469 3326
+4397 2 471 3326
+4399 d 472 3326
+43a6 5 460 3326
+43ab e 474 3326
+FUNC 43b9 a4 0 __updatetmbcinfo
+43b9 c 495 3326
+43c5 7 498 3326
+43cc 10 499 3326
+43dc 3 532 3326
+43df 4 535 3326
+43e3 8 537 3326
+43eb 2 540 3326
+43ed 6 541 3326
+43f3 8 500 3326
+43fb 4 502 3326
+43ff e 505 3326
+440d 17 511 3326
+4424 7 516 3326
+442b 11 523 3326
+443c 7 524 3326
+4443 11 527 3326
+4454 9 529 3326
+FUNC 445d 15d 0 _LocaleUpdate::_LocaleUpdate(localeinfo_struct *)
+445d 5 240 111
+4462 1c 241 111
+447e 12 243 111
+4490 19 244 111
+44a9 1a 245 111
+44c3 3a 247 111
+44fd 49 248 111
+4546 1d 249 111
+4563 e 251 111
+4571 e 252 111
+457f 2 255 111
+4581 32 257 111
+45b3 7 259 111
+FUNC 45ba 9a 0 getSystemCP
+45ba 9 282 3326
+45c3 b 284 3326
+45ce 6 285 3326
+45d4 5 289 3326
+45d9 a 291 3326
+45e3 1e 292 3326
+4601 5 295 3326
+4606 a 297 3326
+4610 8 298 3326
+4618 5 302 3326
+461d 1c 305 3326
+4639 19 308 3326
+4652 2 309 3326
+FUNC 4654 2d2 0 _setmbcp_nolock
+4654 17 684 3326
+466b b 691 3326
+4676 9 694 3326
+467f 7 696 3326
+4686 7 697 3326
+468d 3 701 3326
+4690 2 703 3326
+4692 c 706 3326
+469e d 703 3326
+46ab 2a 741 3326
+46d5 13 749 3326
+46e8 f 754 3326
+46f7 29 759 3326
+4720 21 762 3326
+4741 16 764 3326
+4757 f 710 3326
+4766 15 713 3326
+477b 13 718 3326
+478e 12 721 3326
+47a0 27 722 3326
+47c7 4 721 3326
+47cb 15 718 3326
+47e0 12 713 3326
+47f2 3e 729 3326
+4830 23 731 3326
+4853 7 734 3326
+485a 5 735 3326
+485f 11 765 3326
+4870 4 764 3326
+4874 17 762 3326
+488b 8 769 3326
+4893 11 770 3326
+48a4 1f 773 3326
+48c3 d 776 3326
+48d0 2 778 3326
+48d2 d 780 3326
+48df 24 783 3326
+4903 5 787 3326
+4908 6 792 3326
+490e 6 795 3326
+4914 3 744 3326
+4917 f 800 3326
+FUNC 4926 19a 0 _setmbcp
+4926 c 572 3326
+4932 4 573 3326
+4936 a 577 3326
+4940 5 579 3326
+4945 3 580 3326
+4948 b 582 3326
+4953 9 584 3326
+495c d 590 3326
+4969 8 592 3326
+4971 c 594 3326
+497d 3 605 3326
+4980 16 610 3326
+4996 1a 612 3326
+49b0 7 613 3326
+49b7 3 617 3326
+49ba 9 618 3326
+49c3 17 620 3326
+49da 8 622 3326
+49e2 4 623 3326
+49e6 8 628 3326
+49ee 8 629 3326
+49f6 8 630 3326
+49fe a 631 3326
+4a08 d 632 3326
+4a15 3 631 3326
+4a18 c 633 3326
+4a24 a 634 3326
+4a2e 3 633 3326
+4a31 c 635 3326
+4a3d d 636 3326
+4a4a 3 635 3326
+4a4d 1c 638 3326
+4a69 7 639 3326
+4a70 6 643 3326
+4a76 3 644 3326
+4a79 e 646 3326
+4a87 9 648 3326
+4a90 2 651 3326
+4a92 5 652 3326
+4a97 8 658 3326
+4a9f 7 659 3326
+4aa6 b 660 3326
+4ab1 2 666 3326
+4ab3 4 671 3326
+4ab7 3 680 3326
+4aba 6 681 3326
+FUNC 4ac0 1e 0 __initmbctable
+4ac0 0 841 3326
+4ac0 9 851 3326
+4ac9 8 852 3326
+4ad1 a 853 3326
+4adb 2 858 3326
+4add 1 859 3326
+FUNC 4ade 80 0 x_ismbbtype_l
+4ade 8 213 3271
+4ae6 b 214 3271
+4af1 4 219 3271
+4af5 67 222 3271
+4b5c 2 223 3271
+FUNC 4b5e 18 0 _ismbblead
+4b5e 5 171 3271
+4b63 11 172 3271
+4b74 2 173 3271
+FUNC 4b76 f8 0 __addlocaleref
+4b76 7 36 1913
+4b7d d 39 1913
+4b8a 17 41 1913
+4ba1 3 42 1913
+4ba4 17 44 1913
+4bbb 3 45 1913
+4bbe 17 47 1913
+4bd5 3 48 1913
+4bd8 17 50 1913
+4bef 3 51 1913
+4bf2 a 53 1913
+4bfc 23 55 1913
+4c1f 3 56 1913
+4c22 21 59 1913
+4c43 3 60 1913
+4c46 8 53 1913
+4c4e 1e 63 1913
+4c6c 2 64 1913
+FUNC 4c6e 102 0 __removelocaleref
+4c6e 6 74 1913
+4c74 b 77 1913
+4c7f b 79 1913
+4c8a 17 81 1913
+4ca1 3 82 1913
+4ca4 17 84 1913
+4cbb 3 85 1913
+4cbe 17 87 1913
+4cd5 3 88 1913
+4cd8 17 90 1913
+4cef 3 91 1913
+4cf2 a 93 1913
+4cfc 23 95 1913
+4d1f 3 96 1913
+4d22 21 99 1913
+4d43 3 100 1913
+4d46 8 93 1913
+4d4e 1d 103 1913
+4d6b 3 106 1913
+4d6e 2 107 1913
+FUNC 4d70 293 0 __freetlocinfo
+4d70 7 129 1913
+4d77 59 137 1913
+4dd0 25 140 1913
+4df5 6 142 1913
+4dfb 1a 143 1913
+4e15 25 147 1913
+4e3a 6 149 1913
+4e40 1a 150 1913
+4e5a 18 153 1913
+4e72 1a 154 1913
+4e8c 29 161 1913
+4eb5 1e 163 1913
+4ed3 20 164 1913
+4ef3 1b 165 1913
+4f0e 1b 166 1913
+4f29 2f 173 1913
+4f58 6 175 1913
+4f5e 1a 176 1913
+4f78 a 179 1913
+4f82 31 182 1913
+4fb3 7 184 1913
+4fba 2e 192 1913
+4fe8 7 194 1913
+4fef 8 179 1913
+4ff7 a 201 1913
+5001 2 202 1913
+FUNC 5003 6b 0 _updatetlocinfoEx_nolock
+5003 6 216 1913
+5009 e 219 1913
+5017 d 222 1913
+5024 4 223 1913
+5028 13 230 1913
+503b 4 236 1913
+503f 6 238 1913
+5045 18 248 1913
+505d 7 249 1913
+5064 5 253 1913
+5069 3 220 1913
+506c 2 254 1913
+FUNC 506e 79 0 __updatetlocinfo
+506e c 281 1913
+507a 7 283 1913
+5081 10 285 1913
+5091 8 297 1913
+5099 4 300 1913
+509d 8 302 1913
+50a5 2 305 1913
+50a7 6 306 1913
+50ad 8 286 1913
+50b5 4 288 1913
+50b9 14 290 1913
+50cd e 292 1913
+50db 8 294 1913
+50e3 4 295 1913
+FUNC 50e7 8 0 _crt_debugger_hook
+50e7 0 62 1145
+50e7 7 65 1145
+50ee 1 66 1145
+FUNC 50ef 7a 0 memset
+50ef 0 59 2789
+50ef 4 68 2789
+50f3 4 69 2789
+50f7 2 71 2789
+50f9 2 72 2789
+50fb 2 74 2789
+50fd 4 75 2789
+5101 2 78 2789
+5103 2 79 2789
+5105 6 80 2789
+510b 2 81 2789
+510d 7 82 2789
+5114 2 83 2789
+5116 5 85 2789
+511b 1 91 2789
+511c 2 92 2789
+511e 3 94 2789
+5121 2 95 2789
+5123 2 97 2789
+5125 3 98 2789
+5128 2 99 2789
+512a 2 101 2789
+512c 2 103 2789
+512e 3 104 2789
+5131 3 105 2789
+5134 2 106 2789
+5136 2 110 2789
+5138 3 111 2789
+513b 2 113 2789
+513d 2 115 2789
+513f 3 117 2789
+5142 2 119 2789
+5144 2 122 2789
+5146 3 123 2789
+5149 3 124 2789
+514c 2 125 2789
+514e 2 127 2789
+5150 2 129 2789
+5152 2 130 2789
+5154 2 134 2789
+5156 3 135 2789
+5159 3 137 2789
+515c 2 138 2789
+515e 4 142 2789
+5162 1 143 2789
+5163 1 145 2789
+5164 4 148 2789
+5168 1 150 2789
+FUNC 5169 95 0 _aulldvrm
+5169 0 45 2806
+5169 1 48 2806
+516a 4 80 2806
+516e 2 81 2806
+5170 2 82 2806
+5172 4 83 2806
+5176 4 84 2806
+517a 2 85 2806
+517c 2 86 2806
+517e 2 87 2806
+5180 4 88 2806
+5184 2 89 2806
+5186 2 90 2806
+5188 2 95 2806
+518a 4 96 2806
+518e 2 97 2806
+5190 2 98 2806
+5192 4 99 2806
+5196 2 100 2806
+5198 2 101 2806
+519a 2 108 2806
+519c 4 109 2806
+51a0 4 110 2806
+51a4 4 111 2806
+51a8 2 113 2806
+51aa 2 114 2806
+51ac 2 115 2806
+51ae 2 116 2806
+51b0 2 117 2806
+51b2 2 118 2806
+51b4 2 119 2806
+51b6 2 120 2806
+51b8 4 129 2806
+51bc 2 130 2806
+51be 4 131 2806
+51c2 2 132 2806
+51c4 2 133 2806
+51c6 2 134 2806
+51c8 4 142 2806
+51cc 2 143 2806
+51ce 2 144 2806
+51d0 4 145 2806
+51d4 2 146 2806
+51d6 1 148 2806
+51d7 4 149 2806
+51db 4 150 2806
+51df 2 152 2806
+51e1 4 161 2806
+51e5 4 162 2806
+51e9 2 163 2806
+51eb 2 164 2806
+51ed 3 165 2806
+51f0 2 170 2806
+51f2 2 171 2806
+51f4 2 172 2806
+51f6 2 173 2806
+51f8 2 174 2806
+51fa 1 180 2806
+51fb 3 182 2806
+FUNC 51fe 20 0 _global_unwind2
+FUNC 521e 45 0 __unwind_handler
+FUNC 5263 84 0 _local_unwind2
+FUNC 52e7 23 0 _abnormal_termination
+FUNC 530a 9 0 _NLG_Notify1
+FUNC 5313 1f 0 _NLG_Notify
+PUBLIC 532a 0 _NLG_Dispatch2
+FUNC 5332 3 0 _NLG_Call
+PUBLIC 5334 0 _NLG_Return2
+FUNC 5335 33 0 abort
+5335 0 54 1011
+5335 5 71 1011
+533a 4 72 1011
+533e 8 74 1011
+5346 9 81 1011
+534f 11 83 1011
+5360 8 92 1011
+FUNC 5368 361 0 memcpy
+5368 3 101 2787
+536b 1 113 2787
+536c 1 114 2787
+536d 3 116 2787
+5370 3 117 2787
+5373 3 119 2787
+5376 2 129 2787
+5378 2 131 2787
+537a 2 132 2787
+537c 2 134 2787
+537e 2 135 2787
+5380 2 137 2787
+5382 6 138 2787
+5388 6 147 2787
+538e 2 148 2787
+5390 7 150 2787
+5397 2 151 2787
+5399 1 153 2787
+539a 1 154 2787
+539b 3 155 2787
+539e 3 156 2787
+53a1 2 157 2787
+53a3 1 158 2787
+53a4 1 159 2787
+53a5 2 160 2787
+53a7 5 163 2787
+53ac 6 176 2787
+53b2 2 177 2787
+53b4 3 179 2787
+53b7 3 180 2787
+53ba 3 182 2787
+53bd 2 183 2787
+53bf 2 185 2787
+53c1 7 187 2787
+53c8 2 205 2787
+53ca 5 206 2787
+53cf 3 208 2787
+53d2 2 209 2787
+53d4 3 211 2787
+53d7 2 212 2787
+53d9 7 214 2787
+53e0 8 218 2787
+53e8 14 222 2787
+53fc 2 229 2787
+53fe 2 230 2787
+5400 2 232 2787
+5402 3 233 2787
+5405 3 235 2787
+5408 3 236 2787
+540b 3 238 2787
+540e 3 239 2787
+5411 3 241 2787
+5414 3 242 2787
+5417 3 244 2787
+541a 2 245 2787
+541c 2 247 2787
+541e a 249 2787
+5428 2 253 2787
+542a 2 254 2787
+542c 2 256 2787
+542e 3 257 2787
+5431 3 259 2787
+5434 3 260 2787
+5437 3 262 2787
+543a 3 263 2787
+543d 3 265 2787
+5440 2 266 2787
+5442 2 268 2787
+5444 8 270 2787
+544c 2 274 2787
+544e 2 275 2787
+5450 2 277 2787
+5452 3 278 2787
+5455 3 280 2787
+5458 3 281 2787
+545b 3 283 2787
+545e 2 284 2787
+5460 2 286 2787
+5462 2a 288 2787
+548c 4 295 2787
+5490 4 297 2787
+5494 4 299 2787
+5498 4 301 2787
+549c 4 303 2787
+54a0 4 305 2787
+54a4 4 307 2787
+54a8 4 309 2787
+54ac 4 311 2787
+54b0 4 313 2787
+54b4 4 315 2787
+54b8 4 317 2787
+54bc 4 319 2787
+54c0 4 321 2787
+54c4 7 323 2787
+54cb 2 325 2787
+54cd 2 326 2787
+54cf 19 328 2787
+54e8 3 337 2787
+54eb 1 338 2787
+54ec 1 339 2787
+54ed 3 341 2787
+54f0 2 345 2787
+54f2 2 347 2787
+54f4 3 348 2787
+54f7 1 349 2787
+54f8 1 350 2787
+54f9 3 351 2787
+54fc 2 355 2787
+54fe 2 357 2787
+5500 3 358 2787
+5503 3 359 2787
+5506 3 360 2787
+5509 1 361 2787
+550a 1 362 2787
+550b 5 363 2787
+5510 2 367 2787
+5512 2 369 2787
+5514 3 370 2787
+5517 3 371 2787
+551a 3 372 2787
+551d 3 373 2787
+5520 3 374 2787
+5523 1 375 2787
+5524 1 376 2787
+5525 3 377 2787
+5528 4 388 2787
+552c 4 389 2787
+5530 6 394 2787
+5536 2 395 2787
+5538 3 397 2787
+553b 3 398 2787
+553e 3 400 2787
+5541 2 401 2787
+5543 1 403 2787
+5544 2 404 2787
+5546 1 405 2787
+5547 9 407 2787
+5550 2 411 2787
+5552 a 414 2787
+555c 2 419 2787
+555e 5 420 2787
+5563 3 422 2787
+5566 2 423 2787
+5568 3 425 2787
+556b 2 426 2787
+556d 7 428 2787
+5574 14 432 2787
+5588 3 439 2787
+558b 2 440 2787
+558d 3 442 2787
+5590 3 443 2787
+5593 3 445 2787
+5596 3 446 2787
+5599 3 448 2787
+559c 2 449 2787
+559e 1 451 2787
+559f 2 452 2787
+55a1 1 453 2787
+55a2 a 455 2787
+55ac 3 459 2787
+55af 2 460 2787
+55b1 3 462 2787
+55b4 3 463 2787
+55b7 3 465 2787
+55ba 3 466 2787
+55bd 3 468 2787
+55c0 3 469 2787
+55c3 3 471 2787
+55c6 2 472 2787
+55c8 1 474 2787
+55c9 2 475 2787
+55cb 1 476 2787
+55cc 8 478 2787
+55d4 3 482 2787
+55d7 2 483 2787
+55d9 3 485 2787
+55dc 3 486 2787
+55df 3 488 2787
+55e2 3 489 2787
+55e5 3 491 2787
+55e8 3 492 2787
+55eb 3 494 2787
+55ee 3 495 2787
+55f1 3 497 2787
+55f4 6 498 2787
+55fa 1 500 2787
+55fb 2 501 2787
+55fd 1 502 2787
+55fe 2a 504 2787
+5628 4 513 2787
+562c 4 515 2787
+5630 4 517 2787
+5634 4 519 2787
+5638 4 521 2787
+563c 4 523 2787
+5640 4 525 2787
+5644 4 527 2787
+5648 4 529 2787
+564c 4 531 2787
+5650 4 533 2787
+5654 4 535 2787
+5658 4 537 2787
+565c 4 539 2787
+5660 7 541 2787
+5667 2 543 2787
+5669 2 544 2787
+566b 19 546 2787
+5684 3 555 2787
+5687 1 557 2787
+5688 1 558 2787
+5689 3 559 2787
+568c 3 563 2787
+568f 3 565 2787
+5692 3 566 2787
+5695 1 567 2787
+5696 1 568 2787
+5697 5 569 2787
+569c 3 573 2787
+569f 3 575 2787
+56a2 3 576 2787
+56a5 3 577 2787
+56a8 3 578 2787
+56ab 1 579 2787
+56ac 1 580 2787
+56ad 3 581 2787
+56b0 3 585 2787
+56b3 3 587 2787
+56b6 3 588 2787
+56b9 3 589 2787
+56bc 3 590 2787
+56bf 3 591 2787
+56c2 3 592 2787
+56c5 1 593 2787
+56c6 1 594 2787
+56c7 2 595 2787
+FUNC 56c9 2a 0 _freea
+56c9 5 235 281
+56ce 7 237 281
+56d5 3 239 281
+56d8 12 241 281
+56ea 7 243 281
+56f1 2 252 281
+FUNC 56f3 3d 0 _msize
+56f3 5 39 561
+56f8 23 43 561
+571b 2 50 561
+571d 11 46 561
+572e 2 50 561
+FUNC 5730 9 0 _fptrap
+5730 0 46 4123
+5730 8 47 4123
+5738 1 48 4123
+FUNC 5739 106 0 __report_gsfailure
+5739 b 140 1392
+5744 5 170 1392
+5749 6 171 1392
+574f 6 172 1392
+5755 6 173 1392
+575b 6 174 1392
+5761 6 175 1392
+5767 7 176 1392
+576e 7 177 1392
+5775 7 178 1392
+577c 7 179 1392
+5783 7 180 1392
+578a 7 181 1392
+5791 1 182 1392
+5792 6 183 1392
+5798 3 190 1392
+579b 5 191 1392
+57a0 3 192 1392
+57a3 5 193 1392
+57a8 3 194 1392
+57ab 5 195 1392
+57b0 6 201 1392
+57b6 a 204 1392
+57c0 a 206 1392
+57ca a 285 1392
+57d4 a 286 1392
+57de b 293 1392
+57e9 b 294 1392
+57f4 b 297 1392
+57ff 8 298 1392
+5807 8 302 1392
+580f b 304 1392
+581a 9 313 1392
+5823 8 315 1392
+582b 12 319 1392
+583d 2 320 1392
+FUNC 583f a0 0 _calloc_impl
+583f 5 21 291
+5844 7 26 291
+584b 23 28 291
+586e 2 69 291
+5870 7 30 291
+5877 4 34 291
+587b 1 35 291
+587c 2 39 291
+587e 5 41 291
+5883 f 44 291
+5892 d 47 291
+589f b 59 291
+58aa 7 61 291
+58b1 10 62 291
+58c1 4 63 291
+58c5 7 52 291
+58cc 11 53 291
+58dd 2 69 291
+FUNC 58df cb 0 realloc
+58df 5 62 618
+58e4 6 67 618
+58ea 9 68 618
+58f3 3 117 618
+58f6 7 71 618
+58fd 9 73 618
+5906 5 74 618
+590b 2 109 618
+590d 4 83 618
+5911 1 84 618
+5912 14 85 618
+5926 c 94 618
+5932 b 109 618
+593d 5 81 618
+5942 7 89 618
+5949 15 90 618
+595e 4 91 618
+5962 2 117 618
+5964 20 111 618
+5984 2 112 618
+5986 20 103 618
+59a6 4 105 618
+FUNC 59aa 22d 0 __crtLCMapStringA_stat
+59aa 12 96 3447
+59bc c 101 3447
+59c8 21 102 3447
+59e9 4 106 3447
+59ed 1 107 3447
+59ee 3 109 3447
+59f1 3 113 3447
+59f4 5 133 3447
+59f9 1f 134 3447
+5a18 2c 145 3447
+5a44 7 146 3447
+5a4b 5c 149 3447
+5aa7 3 150 3447
+5aaa 2 151 3447
+5aac 19 160 3447
+5ac5 1f 169 3447
+5ae4 a 172 3447
+5aee b 175 3447
+5af9 9 177 3447
+5b02 10 186 3447
+5b12 5 190 3447
+5b17 5f 196 3447
+5b76 4 197 3447
+5b7a 16 207 3447
+5b90 9 220 3447
+5b99 2 223 3447
+5b9b 17 233 3447
+5bb2 7 240 3447
+5bb9 8 242 3447
+5bc1 4 244 3447
+5bc5 12 245 3447
+FUNC 5bd7 50 0 __crtLCMapStringA
+5bd7 8 258 3447
+5bdf b 259 3447
+5bea 3b 271 3447
+5c25 2 272 3447
+FUNC 5c27 112 0 __crtGetStringTypeA_stat
+5c27 12 63 3507
+5c39 7 67 3507
+5c40 5 83 3507
+5c45 1f 84 3507
+5c64 29 95 3507
+5c8d 7 96 3507
+5c94 52 99 3507
+5ce6 2 100 3507
+5ce8 2 101 3507
+5cea f 103 3507
+5cf9 13 111 3507
+5d0c 11 116 3507
+5d1d 6 118 3507
+5d23 4 120 3507
+5d27 12 121 3507
+FUNC 5d39 4a 0 __crtGetStringTypeA
+5d39 8 133 3507
+5d41 b 134 3507
+5d4c 35 145 3507
+5d81 2 146 3507
+FUNC 5d83 775 0 __free_lc_time
+5d83 6 228 1800
+5d89 b 229 1800
+5d94 12 232 1800
+5da6 12 233 1800
+5db8 12 234 1800
+5dca 12 235 1800
+5ddc 12 236 1800
+5dee 12 237 1800
+5e00 11 238 1800
+5e11 12 240 1800
+5e23 12 241 1800
+5e35 12 242 1800
+5e47 12 243 1800
+5e59 12 244 1800
+5e6b 12 245 1800
+5e7d 12 246 1800
+5e8f 12 248 1800
+5ea1 15 249 1800
+5eb6 12 250 1800
+5ec8 12 251 1800
+5eda 12 252 1800
+5eec 12 253 1800
+5efe 12 254 1800
+5f10 12 255 1800
+5f22 12 256 1800
+5f34 12 257 1800
+5f46 12 258 1800
+5f58 12 259 1800
+5f6a 12 261 1800
+5f7c 12 262 1800
+5f8e 12 263 1800
+5fa0 12 264 1800
+5fb2 12 265 1800
+5fc4 15 266 1800
+5fd9 18 267 1800
+5ff1 18 268 1800
+6009 18 269 1800
+6021 18 270 1800
+6039 18 271 1800
+6051 18 272 1800
+6069 18 274 1800
+6081 18 275 1800
+6099 18 277 1800
+60b1 18 278 1800
+60c9 18 279 1800
+60e1 18 282 1800
+60f9 18 283 1800
+6111 18 284 1800
+6129 18 285 1800
+6141 1b 286 1800
+615c 18 287 1800
+6174 18 288 1800
+618c 18 290 1800
+61a4 18 291 1800
+61bc 18 292 1800
+61d4 18 293 1800
+61ec 18 294 1800
+6204 18 295 1800
+621c 18 296 1800
+6234 18 298 1800
+624c 18 299 1800
+6264 18 300 1800
+627c 18 301 1800
+6294 18 302 1800
+62ac 18 303 1800
+62c4 1b 304 1800
+62df 18 305 1800
+62f7 18 306 1800
+630f 18 307 1800
+6327 18 308 1800
+633f 18 309 1800
+6357 18 311 1800
+636f 18 312 1800
+6387 18 313 1800
+639f 18 314 1800
+63b7 18 315 1800
+63cf 18 316 1800
+63e7 18 317 1800
+63ff 18 318 1800
+6417 18 319 1800
+642f 18 320 1800
+6447 1b 321 1800
+6462 18 322 1800
+647a 18 324 1800
+6492 18 325 1800
+64aa 18 327 1800
+64c2 18 328 1800
+64da 1c 329 1800
+64f6 2 332 1800
+FUNC 64f8 9f 0 __free_lconv_num
+64f8 6 218 1742
+64fe b 219 1742
+6509 14 222 1742
+651d 7 223 1742
+6524 15 225 1742
+6539 7 226 1742
+6540 15 228 1742
+6555 7 229 1742
+655c 15 231 1742
+6571 7 232 1742
+6578 15 234 1742
+658d 8 235 1742
+6595 2 236 1742
+FUNC 6597 180 0 __free_lconv_mon
+6597 6 270 1685
+659d b 271 1685
+65a8 15 274 1685
+65bd 7 275 1685
+65c4 15 277 1685
+65d9 7 278 1685
+65e0 15 280 1685
+65f5 7 281 1685
+65fc 15 283 1685
+6611 7 284 1685
+6618 15 286 1685
+662d 7 287 1685
+6634 15 289 1685
+6649 7 290 1685
+6650 15 292 1685
+6665 7 293 1685
+666c 15 295 1685
+6681 7 296 1685
+6688 15 298 1685
+669d 7 299 1685
+66a4 15 301 1685
+66b9 7 302 1685
+66c0 15 304 1685
+66d5 7 305 1685
+66dc 15 307 1685
+66f1 7 308 1685
+66f8 15 310 1685
+670d 8 311 1685
+6715 2 312 1685
+FUNC 6717 ba 0 _VEC_memzero
+FUNC 67d1 10 0 __sse2_available_init
+67d1 0 30 4315
+67d1 d 31 4315
+67de 2 32 4315
+67e0 1 33 4315
+FUNC 67e1 103 0 _VEC_memcpy
+FUNC 68e4 2c 0 _alloca_probe_16
+68e4 0 44 4274
+68e4 1 46 4274
+68e5 4 47 4274
+68e9 2 48 4274
+68eb 3 49 4274
+68ee 2 50 4274
+68f0 2 51 4274
+68f2 2 52 4274
+68f4 1 53 4274
+68f5 5 54 4274
+68fa 1 59 4274
+68fb 4 60 4274
+68ff 2 61 4274
+6901 3 62 4274
+6904 2 63 4274
+6906 2 64 4274
+6908 2 65 4274
+690a 1 66 4274
+690b 5 67 4274
+PUBLIC 68fa 0 _alloca_probe_8
+FUNC 6910 34 0 _allmul
+6910 0 47 2803
+6910 4 63 2803
+6914 4 64 2803
+6918 2 65 2803
+691a 4 66 2803
+691e 2 67 2803
+6920 4 69 2803
+6924 2 70 2803
+6926 3 72 2803
+6929 1 75 2803
+692a 2 83 2803
+692c 2 84 2803
+692e 4 86 2803
+6932 4 87 2803
+6936 2 88 2803
+6938 4 90 2803
+693c 2 91 2803
+693e 2 92 2803
+6940 1 94 2803
+6941 3 96 2803
+FUNC 6944 2b 0 _chkstk
+6944 0 65 4276
+6944 1 69 4276
+6945 4 73 4276
+6949 2 74 4276
+694b 2 79 4276
+694d 2 80 4276
+694f 2 81 4276
+6951 2 83 4276
+6953 5 84 4276
+6958 2 87 4276
+695a 2 88 4276
+695c 2 89 4276
+695e 1 90 4276
+695f 1 91 4276
+6960 2 92 4276
+6962 3 93 4276
+6965 1 94 4276
+6966 5 98 4276
+696b 2 99 4276
+696d 2 100 4276
+FUNC 696f 46 0 strcspn
+696f 4 191 2794
+6973 2 198 2794
+6975 1 199 2794
+6976 1 200 2794
+6977 1 201 2794
+6978 1 202 2794
+6979 1 203 2794
+697a 1 204 2794
+697b 1 205 2794
+697c 1 206 2794
+697d 6 212 2794
+6983 2 216 2794
+6985 2 217 2794
+6987 2 218 2794
+6989 3 219 2794
+698c 4 220 2794
+6990 2 221 2794
+6992 3 227 2794
+6995 6 229 2794
+699b 3 234 2794
+699e 2 236 2794
+69a0 2 237 2794
+69a2 2 238 2794
+69a4 3 239 2794
+69a7 4 240 2794
+69ab 2 245 2794
+69ad 2 255 2794
+69af 3 257 2794
+69b2 3 259 2794
+FUNC 69b5 40 0 strpbrk
+69b5 4 191 2794
+69b9 2 198 2794
+69bb 1 199 2794
+69bc 1 200 2794
+69bd 1 201 2794
+69be 1 202 2794
+69bf 1 203 2794
+69c0 1 204 2794
+69c1 1 205 2794
+69c2 1 206 2794
+69c3 6 212 2794
+69c9 2 216 2794
+69cb 2 217 2794
+69cd 2 218 2794
+69cf 3 219 2794
+69d2 4 220 2794
+69d6 2 221 2794
+69d8 5 227 2794
+69dd 2 236 2794
+69df 2 237 2794
+69e1 2 238 2794
+69e3 3 239 2794
+69e6 4 240 2794
+69ea 2 247 2794
+69ec 3 248 2794
+69ef 3 257 2794
+69f2 3 259 2794
+FUNC 69f5 61 0 __ascii_strnicmp
+69f5 6 69 2798
+69fb 3 75 2798
+69fe 2 76 2798
+6a00 2 77 2798
+6a02 3 79 2798
+6a05 3 80 2798
+6a08 2 82 2798
+6a0a 2 83 2798
+6a0c 5 84 2798
+6a11 2 89 2798
+6a13 2 91 2798
+6a15 2 93 2798
+6a17 2 95 2798
+6a19 2 97 2798
+6a1b 2 98 2798
+6a1d 3 100 2798
+6a20 3 101 2798
+6a23 2 103 2798
+6a25 2 104 2798
+6a27 2 106 2798
+6a29 2 107 2798
+6a2b 2 109 2798
+6a2d 2 112 2798
+6a2f 2 113 2798
+6a31 2 115 2798
+6a33 2 116 2798
+6a35 2 118 2798
+6a37 2 121 2798
+6a39 2 122 2798
+6a3b 3 124 2798
+6a3e 2 125 2798
+6a40 2 128 2798
+6a42 2 129 2798
+6a44 2 130 2798
+6a46 5 133 2798
+6a4b 2 134 2798
+6a4d 2 135 2798
+6a4f 2 138 2798
+6a51 5 140 2798
+PUBLIC 6a56 10 RtlUnwind
+STACK WIN 4 1000 54 6 0 8 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1060 a 3 0 0 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 106a 35 7 0 0 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 109f 1e 7 0 0 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 10bd 20 7 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 10dd 3c 7 0 0 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1119 10 7 0 0 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1129 7 3 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1130 2c 7 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 115c 1a 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 1176 21 8 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 117c 17 2 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 1197 b 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 11a2 29 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 11cb 161 c 0 0 10 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ =  $24 $T0 48 - ^ = 
+STACK WIN 4 12ee 14 0 0 0 10 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 132c a 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 1336 70 c 0 4 10 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 32 - ^ =  $23 $T0 36 - ^ =  $24 $T0 40 - ^ = 
+STACK WIN 4 139d 8 0 0 4 10 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 142e 44 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 144f 21 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 1472 6a 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 14dc e 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 14ea 2b 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1515 18 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 152d 9 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 1536 9 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 153f 33 3 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 1542 2f 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 1572 2e 6 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1578 26 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 15a0 a1 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 15e2 3e 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 15e3 3c 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 1641 140 c 0 c 10 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 52 - ^ =  $23 $T0 56 - ^ =  $24 $T0 60 - ^ = 
+STACK WIN 4 176c e 0 0 c 10 30 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 1781 16 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1797 16 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 17ad f 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 17bc f 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 17cb 1e 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 17e9 26 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 180f 1c5 1b 0 4 0 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1825 1a8 5 0 4 4 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ = 
+STACK WIN 4 1826 1a4 4 0 4 8 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ = 
+STACK WIN 4 182a 19f 0 0 4 c 1fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 512 - ^ =  $23 $T0 516 - ^ =  $24 $T0 520 - ^ = 
+STACK WIN 4 19d4 39 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 1a0d 251 6 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1a13 249 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 1a35 226 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 1aae 1a9 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ =  $20 $T0 12 - ^ = 
+STACK WIN 4 1c5e dc 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 1c6d a8 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 1c74 a0 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 1cb6 5d 0 0 0 c 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ =  $20 $T0 12 - ^ = 
+STACK WIN 4 1d3a 309 d 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 1d44 2e0 3 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 1d47 2dc 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 2043 c5 d 0 0 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 204c ba 4 0 0 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ = 
+STACK WIN 4 204f b6 1 0 0 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ = 
+STACK WIN 4 2050 b4 0 0 0 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ =  $24 $T0 24 - ^ = 
+STACK WIN 4 2108 b8 a 0 0 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2111 ad 1 0 0 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ = 
+STACK WIN 4 2112 ab 0 0 0 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ = 
+STACK WIN 4 215b 61 0 0 0 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 16 - ^ =  $23 $T0 20 - ^ =  $24 $T0 24 - ^ = 
+STACK WIN 4 21c0 3b2 9 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 21c9 3a2 0 0 0 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ = 
+STACK WIN 4 2280 2ea 0 0 0 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ = 
+STACK WIN 4 2281 2e8 0 0 0 c 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 80 - ^ =  $20 $T0 84 - ^ =  $24 $T0 88 - ^ = 
+STACK WIN 4 2572 30 e 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 2575 2c b 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2580 20 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 25a2 30 e 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 25a5 2c b 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 25b0 20 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 25d2 9 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 25db 9 0 0 4 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 25e4 34 3 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 25e7 30 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2618 3d 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 2655 b4 c 0 8 10 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ =  $24 $T0 36 - ^ = 
+STACK WIN 4 26f1 e 0 0 8 10 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 2700 8 0 0 8 10 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 2709 8d 4 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 270c 89 1 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 270d 85 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 2796 1a 3 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 2799 16 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 27b0 12f c 0 4 10 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ =  $24 $T0 36 - ^ = 
+STACK WIN 4 28c7 b 0 0 4 10 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 28d3 b 0 0 4 10 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 28df 18f 3 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 28e2 18b 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 28fd 16f 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $24 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 2a6e 1e 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 2ae5 2c4 21 0 10 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2aee 18e 18 0 10 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ = 
+STACK WIN 4 2af2 189 14 0 10 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ = 
+STACK WIN 4 2b06 174 0 0 10 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ =  $24 $T0 36 - ^ = 
+STACK WIN 4 2da9 9b 17 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2dbf 83 1 0 0 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ = 
+STACK WIN 4 2dc0 81 0 0 0 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $24 $T0 24 - ^ = 
+STACK WIN 4 2ddc 64 0 0 0 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $24 $T0 24 - ^ =  $23 $T0 28 - ^ = 
+STACK WIN 4 2e44 f 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2e53 129 1a 0 c 8 328 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 812 - ^ =  $24 $T0 816 - ^ = 
+STACK WIN 4 2f7c 25 3 0 14 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 2f7f 21 0 0 14 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2fa1 2d 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 2fce 10 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 2fde 5e 4 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 2fe1 4e 1 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 2fe2 4c 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 303c 89 a 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 303f 85 7 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 3046 7d 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 304c 48 0 0 0 c 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 30c5 17 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 30dc c2 c 0 4 10 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 32 - ^ =  $23 $T0 36 - ^ =  $24 $T0 40 - ^ = 
+STACK WIN 4 3195 8 0 0 4 10 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 319e 47 9 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 31a7 3c 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 31e5 9c a 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 31ee 91 1 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 31ef 8f 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 330c b6 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3312 ae 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 331f 80 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 3320 7e 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 3514 42 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3556 13 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 3569 39 c 0 0 10 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ =  $24 $T0 36 - ^ = 
+STACK WIN 4 3589 4 0 0 0 10 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 35a2 11 0 0 4 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 35b3 1e 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 35d1 4b 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 35e0 25 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 361c d 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 3629 1a3 c 0 4 10 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 52 - ^ =  $23 $T0 56 - ^ =  $24 $T0 60 - ^ = 
+STACK WIN 4 378a 14 0 0 4 10 30 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 37cc f 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 37db f 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 37ea f 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 37f9 28 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3821 c0 f 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3828 b7 8 0 4 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ = 
+STACK WIN 4 3829 b5 7 0 4 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 3830 ad 0 0 4 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ =  $24 $T0 16 - ^ = 
+STACK WIN 4 38e1 3b 3 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 38e4 37 0 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 391c 3c c 0 4 10 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 32 - ^ =  $23 $T0 36 - ^ =  $24 $T0 40 - ^ = 
+STACK WIN 4 3952 5 0 0 4 10 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 3958 17 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 396f 23 4 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 3972 1f 1 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 3973 1d 0 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 3992 5d 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 39ef 76 38 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3a15 4e 12 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 3a16 4c 11 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 3a27 3a 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 3a65 bc 35 0 4 10 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 28 - ^ =  $23 $T0 32 - ^ =  $24 $T0 36 - ^ = 
+STACK WIN 4 3af0 13 0 0 4 10 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 3b21 16c 1e 0 c 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3b37 14f 8 0 c 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ = 
+STACK WIN 4 3b3e 145 1 0 c 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ = 
+STACK WIN 4 3b3f 143 0 0 c c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ =  $24 $T0 48 - ^ = 
+STACK WIN 4 3c8d bf a 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3c93 2c 4 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 3c97 27 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 3d4c 13e e 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3d55 17 5 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 3d59 28 1 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 3d5a 10 0 0 10 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 3e8a 25 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3eaf a0 a 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3eb5 2c 4 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 3eb9 27 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 3f4f 49 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3f98 f 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 3fa7 45 7 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3fad 3d 1 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 3fae 3b 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 3fec 4c 7 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 3ff2 44 1 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 3ff3 42 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 4038 4e 7 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 403e 46 1 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 403f 44 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 4086 2f 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 40b5 be 6 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 40b8 ba 3 0 0 4 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 40b9 b8 2 0 0 8 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 4173 246 17 0 0 0 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4189 229 1 0 0 4 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ = 
+STACK WIN 4 418a 225 0 0 0 8 51c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 1312 - ^ =  $24 $T0 1316 - ^ = 
+STACK WIN 4 43b9 a4 c 0 0 10 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 32 - ^ =  $23 $T0 36 - ^ =  $24 $T0 40 - ^ = 
+STACK WIN 4 4451 b 0 0 0 10 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 445d 15d b 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4466 150 2 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 45ba 9a 9 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 45c3 8f 0 0 0 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ = 
+STACK WIN 4 4654 2d2 1b 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4667 2b8 8 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ = 
+STACK WIN 4 466b 2b1 4 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ = 
+STACK WIN 4 466f 2ac 0 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 36 - ^ =  $23 $T0 40 - ^ =  $24 $T0 44 - ^ = 
+STACK WIN 4 4926 19a c 0 4 10 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 40 - ^ =  $23 $T0 44 - ^ =  $24 $T0 48 - ^ = 
+STACK WIN 4 4a87 8 0 0 4 10 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 4ac0 1e 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 4ade 80 8 0 10 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4b5e 18 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4b76 f8 e 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4b7c f0 8 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 4b7d ee 7 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 4b84 e6 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 4c6e 102 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4c74 fa 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 4c80 eb 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ =  $20 $T0 8 - ^ = 
+STACK WIN 4 4c81 e9 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ =  $20 $T0 8 - ^ =  $23 $T0 12 - ^ = 
+STACK WIN 4 4d70 293 20 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 4d76 28b 1a 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ = 
+STACK WIN 4 4d77 289 19 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 4d90 26f 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 4 - ^ =  $23 $T0 8 - ^ =  $24 $T0 12 - ^ = 
+STACK WIN 4 5003 6b 6 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5009 63 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ = 
+STACK WIN 4 5018 4f 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $24 $T0 4 - ^ =  $23 $T0 8 - ^ = 
+STACK WIN 4 506e 79 c 0 0 10 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 32 - ^ =  $23 $T0 36 - ^ =  $24 $T0 40 - ^ = 
+STACK WIN 4 50db 8 0 0 0 10 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = 
+STACK WIN 4 50e7 8 0 0 4 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 5335 33 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 56c9 2a 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 56f3 3d 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5730 9 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 5739 106 b 0 0 0 328 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 583f a0 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5875 68 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 58df cb 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 58f6 6c 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 590b 56 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ =  $24 $T0 8 - ^ = 
+STACK WIN 4 59aa 22d 1a 0 24 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 20 - ^ =  $23 $T0 24 - ^ =  $24 $T0 28 - ^ = 
+STACK WIN 4 5bd7 50 8 0 24 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5c27 112 16 0 1c c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $20 $T0 12 - ^ =  $23 $T0 16 - ^ =  $24 $T0 20 - ^ = 
+STACK WIN 4 5d39 4a 8 0 20 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5d83 775 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 5d89 76d 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 64f8 9f 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 64fe 97 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 6597 180 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = 
+STACK WIN 4 659d 178 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + =  $23 $T0 4 - ^ = 
+STACK WIN 4 6717 ba 0 0 c 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 67d1 10 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 4 67e1 103 0 0 c 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + = 
+STACK WIN 0 12ee 14 0 0 0 0 0 0 0 0
+STACK WIN 0 139d 9 0 0 0 0 0 0 0 0
+STACK WIN 0 13a6 88 0 0 8 0 0 0 0 0
+STACK WIN 0 176c f 0 0 0 0 0 0 0 0
+STACK WIN 0 26f1 f 0 0 0 0 0 0 0 0
+STACK WIN 0 2700 9 0 0 0 0 0 0 0 0
+STACK WIN 0 28c7 c 0 0 0 0 0 0 0 0
+STACK WIN 0 28d3 c 0 0 0 0 0 0 0 0
+STACK WIN 0 3195 9 0 0 0 0 0 0 0 0
+STACK WIN 0 3281 8b 0 0 4 0 0 0 0 0
+STACK WIN 0 33c2 90 3 0 c c 0 0 0 0
+STACK WIN 0 3452 46 0 0 10 4 0 0 0 1
+STACK WIN 0 34b4 17 4 0 0 10 0 0 0 1
+STACK WIN 0 34cb 19 0 0 0 0 0 0 0 0
+STACK WIN 0 34fd 17 1 0 8 4 0 0 0 1
+STACK WIN 0 3589 4 0 0 0 0 0 0 0 0
+STACK WIN 0 378a 15 0 0 0 0 0 0 0 0
+STACK WIN 0 3952 6 0 0 0 0 0 0 0 0
+STACK WIN 0 3af0 13 0 0 0 0 0 0 0 0
+STACK WIN 0 4451 c 0 0 0 0 0 0 0 0
+STACK WIN 0 4a87 9 0 0 0 0 0 0 0 0
+STACK WIN 0 50db 9 0 0 0 0 0 0 0 0
+STACK WIN 0 50ef 7a 0 0 c 0 0 0 0 0
+STACK WIN 0 5169 95 0 0 10 0 4 0 0 0
+STACK WIN 0 5263 84 3 0 8 c 0 0 0 0
+STACK WIN 0 52e7 23 0 0 0 0 0 0 0 0
+STACK WIN 0 5332 3 0 0 0 0 0 0 0 0
+STACK WIN 0 6910 1a 0 0 10 0 0 0 0 0
+STACK WIN 0 692a 1a 0 0 10 0 4 0 0 0
diff --git a/google-breakpad/src/tools/windows/refresh_binaries.bat b/google-breakpad/src/tools/windows/refresh_binaries.bat
new file mode 100644
index 0000000..d881ae6
--- /dev/null
+++ b/google-breakpad/src/tools/windows/refresh_binaries.bat
@@ -0,0 +1,27 @@
+REM This batch file is meant to facilitate regenerating prebuilt binaries for 
+REM the Windows tools.
+REM You MUST run it from a Visual Studio xxxx Command Prompt.  To do this,
+REM navigate to:
+REM 
+REM    Start->Programs->Microsoft Visual Studio XXXX->Tools->
+REM                        Visual Studio Command Prompt
+REM
+REM Then run this batch file.  It performs an SVN update, edits the
+REM README.binaries file to contain
+REM the revision number, and builds the tools.  You must run 'svn commit' to
+REM commit the pending edits to the repository.
+
+pushd %~dp0\..\..\
+call svn update --accept postpone
+cd tools\windows
+devenv symupload\symupload.vcproj /rebuild Release
+copy symupload\Release\symupload.exe binaries\
+REM switch back to top level so that 'svn info' displays useful information.
+cd ..\..\
+echo This checkin of the binaries was created by refresh_binaries.bat. > %TEMP%\checkin.txt
+echo Date: %DATE% %TIME% >> %TEMP%\checkin.txt
+echo Repository information (output of 'svn info') follows: >> %TEMP%\checkin.txt
+call svn info >> %TEMP%\checkin.txt
+echo Done!
+echo type 'svn commit -F %%TEMP%%\checkin.txt' to commit.
+popd
diff --git a/google-breakpad/src/tools/windows/symupload/symupload.cc b/google-breakpad/src/tools/windows/symupload/symupload.cc
new file mode 100644
index 0000000..df4bb69
--- /dev/null
+++ b/google-breakpad/src/tools/windows/symupload/symupload.cc
@@ -0,0 +1,257 @@
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Tool to upload an exe/dll and its associated symbols to an HTTP server.
+// The PDB file is located automatically, using the path embedded in the
+// executable.  The upload is sent as a multipart/form-data POST request,
+// with the following parameters:
+//  code_file: the basename of the module, e.g. "app.exe"
+//  debug_file: the basename of the debugging file, e.g. "app.pdb"
+//  debug_identifier: the debug file's identifier, usually consisting of
+//                    the guid and age embedded in the pdb, e.g.
+//                    "11111111BBBB3333DDDD555555555555F"
+//  product: the HTTP-friendly product name, e.g. "MyApp"
+//  version: the file version of the module, e.g. "1.2.3.4"
+//  os: the operating system that the module was built for, always
+//      "windows" in this implementation.
+//  cpu: the CPU that the module was built for, typically "x86".
+//  symbol_file: the contents of the breakpad-format symbol file
+
+#include <windows.h>
+#include <dbghelp.h>
+#include <wininet.h>
+
+#include <cstdio>
+#include <map>
+#include <string>
+#include <vector>
+
+#include "common/windows/string_utils-inl.h"
+
+#include "common/windows/http_upload.h"
+#include "common/windows/pdb_source_line_writer.h"
+
+using std::string;
+using std::wstring;
+using std::vector;
+using std::map;
+using google_breakpad::HTTPUpload;
+using google_breakpad::PDBModuleInfo;
+using google_breakpad::PDBSourceLineWriter;
+using google_breakpad::WindowsStringUtils;
+
+// Extracts the file version information for the given filename,
+// as a string, for example, "1.2.3.4".  Returns true on success.
+static bool GetFileVersionString(const wchar_t *filename, wstring *version) {
+  DWORD handle;
+  DWORD version_size = GetFileVersionInfoSize(filename, &handle);
+  if (version_size < sizeof(VS_FIXEDFILEINFO)) {
+    return false;
+  }
+
+  vector<char> version_info(version_size);
+  if (!GetFileVersionInfo(filename, handle, version_size, &version_info[0])) {
+    return false;
+  }
+
+  void *file_info_buffer = NULL;
+  unsigned int file_info_length;
+  if (!VerQueryValue(&version_info[0], L"\\",
+                     &file_info_buffer, &file_info_length)) {
+    return false;
+  }
+
+  // The maximum value of each version component is 65535 (0xffff),
+  // so the max length is 24, including the terminating null.
+  wchar_t ver_string[24];
+  VS_FIXEDFILEINFO *file_info =
+    reinterpret_cast<VS_FIXEDFILEINFO*>(file_info_buffer);
+  swprintf(ver_string, sizeof(ver_string) / sizeof(ver_string[0]),
+           L"%d.%d.%d.%d",
+           file_info->dwFileVersionMS >> 16,
+           file_info->dwFileVersionMS & 0xffff,
+           file_info->dwFileVersionLS >> 16,
+           file_info->dwFileVersionLS & 0xffff);
+
+  // remove when VC++7.1 is no longer supported
+  ver_string[sizeof(ver_string) / sizeof(ver_string[0]) - 1] = L'\0';
+
+  *version = ver_string;
+  return true;
+}
+
+// Creates a new temporary file and writes the symbol data from the given
+// exe/dll file to it.  Returns the path to the temp file in temp_file_path
+// and information about the pdb in pdb_info.
+static bool DumpSymbolsToTempFile(const wchar_t *file,
+                                  wstring *temp_file_path,
+                                  PDBModuleInfo *pdb_info) {
+  google_breakpad::PDBSourceLineWriter writer;
+  // Use EXE_FILE to get information out of the exe/dll in addition to the
+  // pdb.  The name and version number of the exe/dll are of value, and
+  // there's no way to locate an exe/dll given a pdb.
+  if (!writer.Open(file, PDBSourceLineWriter::EXE_FILE)) {
+    return false;
+  }
+
+  wchar_t temp_path[_MAX_PATH];
+  if (GetTempPath(_MAX_PATH, temp_path) == 0) {
+    return false;
+  }
+
+  wchar_t temp_filename[_MAX_PATH];
+  if (GetTempFileName(temp_path, L"sym", 0, temp_filename) == 0) {
+    return false;
+  }
+
+  FILE *temp_file = NULL;
+#if _MSC_VER >= 1400  // MSVC 2005/8
+  if (_wfopen_s(&temp_file, temp_filename, L"w") != 0)
+#else  // _MSC_VER >= 1400
+  // _wfopen_s was introduced in MSVC8.  Use _wfopen for earlier environments.
+  // Don't use it with MSVC8 and later, because it's deprecated.
+  if (!(temp_file = _wfopen(temp_filename, L"w")))
+#endif  // _MSC_VER >= 1400
+  {
+    return false;
+  }
+
+  bool success = writer.WriteMap(temp_file);
+  fclose(temp_file);
+  if (!success) {
+    _wunlink(temp_filename);
+    return false;
+  }
+
+  *temp_file_path = temp_filename;
+
+  return writer.GetModuleInfo(pdb_info);
+}
+
+__declspec(noreturn) void printUsageAndExit() {
+  wprintf(L"Usage:\n\n"
+          L"    symupload [--timeout NN] [--product product_name] ^\n"
+          L"              <file.exe|file.dll> <symbol upload URL> ^\n"
+          L"              [...<symbol upload URLs>]\n\n");
+  wprintf(L"  - Timeout is in milliseconds, or can be 0 to be unlimited.\n");
+  wprintf(L"  - product_name is an HTTP-friendly product name. It must only\n"
+          L"    contain an ascii subset: alphanumeric and punctuation.\n"
+          L"    This string is case-sensitive.\n\n");
+  wprintf(L"Example:\n\n"
+          L"    symupload.exe --timeout 0 --product Chrome ^\n"
+          L"        chrome.dll http://no.free.symbol.server.for.you\n");
+  exit(0);
+}
+int wmain(int argc, wchar_t *argv[]) {
+  const wchar_t *module;
+  const wchar_t *product = nullptr;
+  int timeout = -1;
+  int currentarg = 1;
+  while (argc > currentarg + 1) {
+    if (!wcscmp(L"--timeout", argv[currentarg])) {
+      timeout = _wtoi(argv[currentarg + 1]);
+      currentarg += 2;
+      continue;
+    }
+    if (!wcscmp(L"--product", argv[currentarg])) {
+      product = argv[currentarg + 1];
+      currentarg += 2;
+      continue;
+    }
+    break;
+  }
+
+  if (argc >= currentarg + 2)
+    module = argv[currentarg++];
+  else
+    printUsageAndExit();
+
+  wstring symbol_file;
+  PDBModuleInfo pdb_info;
+  if (!DumpSymbolsToTempFile(module, &symbol_file, &pdb_info)) {
+    fwprintf(stderr, L"Could not get symbol data from %s\n", module);
+    return 1;
+  }
+
+  wstring code_file = WindowsStringUtils::GetBaseName(wstring(module));
+
+  map<wstring, wstring> parameters;
+  parameters[L"code_file"] = code_file;
+  parameters[L"debug_file"] = pdb_info.debug_file;
+  parameters[L"debug_identifier"] = pdb_info.debug_identifier;
+  parameters[L"os"] = L"windows";  // This version of symupload is Windows-only
+  parameters[L"cpu"] = pdb_info.cpu;
+  
+  // Don't make a missing product name a hard error.  Issue a warning and let
+  // the server decide whether to reject files without product name.
+  if (product) {
+    parameters[L"product"] = product;
+  } else {
+    fwprintf(
+        stderr,
+        L"Warning: No product name (flag --product) was specified for %s\n",
+        module);
+  }
+
+  // Don't make a missing version a hard error.  Issue a warning, and let the
+  // server decide whether to reject files without versions.
+  wstring file_version;
+  if (GetFileVersionString(module, &file_version)) {
+    parameters[L"version"] = file_version;
+  } else {
+    fwprintf(stderr, L"Warning: Could not get file version for %s\n", module);
+  }
+
+  bool success = true;
+
+  while (currentarg < argc) {
+    int response_code;
+    if (!HTTPUpload::SendRequest(argv[currentarg], parameters,
+                                 symbol_file, L"symbol_file",
+                                 timeout == -1 ? NULL : &timeout,
+                                 nullptr, &response_code)) {
+      success = false;
+      fwprintf(stderr,
+               L"Symbol file upload to %s failed. Response code = %ld\n",
+               argv[currentarg], response_code);
+    }
+    currentarg++;
+  }
+
+  _wunlink(symbol_file.c_str());
+
+  if (success) {
+    wprintf(L"Uploaded symbols for windows-%s/%s/%s (%s %s)\n",
+            pdb_info.cpu.c_str(), pdb_info.debug_file.c_str(),
+            pdb_info.debug_identifier.c_str(), code_file.c_str(),
+            file_version.c_str());
+  }
+
+  return success ? 0 : 1;
+}
diff --git a/google-breakpad/src/tools/windows/symupload/symupload.gyp b/google-breakpad/src/tools/windows/symupload/symupload.gyp
new file mode 100644
index 0000000..d7e5fb7
--- /dev/null
+++ b/google-breakpad/src/tools/windows/symupload/symupload.gyp
@@ -0,0 +1,45 @@
+# Copyright 2013 Google Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+{
+  'includes': [
+    '../../../build/common.gypi',
+  ],
+  'targets': [
+    {
+      'target_name': 'symupload',
+      'type': 'executable',
+      'sources': [
+        'symupload.cc',
+      ],
+      'dependencies': [
+        '../../../common/windows/common_windows.gyp:common_windows_lib',
+      ],
+    },
+  ],
+}
